Built motion from commit f6ac89f5.|2.5.42
authorAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 4 Jan 2022 11:43:21 +0000 (12:43 +0100)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 4 Jan 2022 11:43:21 +0000 (12:43 +0100)
1180 files changed:
apidoc/api_project.js
apidoc/api_project.json
package.json
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.css
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.css.map
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.js
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.js.map
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.css
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.css.map
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js
public/assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js.map
public/assets/plugins/angular-material-form-builder/package.json
public/index.html
public/scripts/app.5a7da15f.js [moved from public/scripts/app.7beab4e5.js with 60% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/files/chat/iframe.ejs
server/migrations/2.5.43.js [deleted file]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/safe-template.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
snippet/3.0.0/index.html
snippet/3.0.0/scripts/chat.js
snippet/3.0.0/scripts/chat.js.map
snippet/3.0.0/styles/app.css
snippet/3.0.0/styles/app.css.map
snippet/3.0.0/templates/30dfa91ae2de8cc8368b.html [moved from snippet/3.0.0/templates/f2a9fbb003feacb050d3.html with 99% similarity]
snippet/3.0.0/templates/be5191f7b4d693a86fa3.html [moved from snippet/3.0.0/templates/c5bbe3317dbb682a6c31.html with 99% similarity]

index 30e94b4..f6d215b 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.43",
+  "version": "2.5.42",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-01-04T10:29:57.225Z",
+    "time": "2022-01-04T11:20:41.503Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 48266ab..5e0c23a 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.43",
+  "version": "2.5.42",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-01-04T10:29:57.225Z",
+    "time": "2022-01-04T11:20:41.503Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 18cf681..2dafa3c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.43",
+  "version": "2.5.42",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index fd232a2..635ebcf 100644 (file)
@@ -43,6 +43,9 @@ form-item .form-item-container .form-item-actions {
 form-view .formItem-title {
   font-size: 18px;
 }
+form-view .formItem-content {
+  font-size: 18px;
+}
 form-view .formItem-help-text {
   font-size: 14px;
   color: #6c6c6c;
index d2bd502..f9f7e23 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"angular-material-form-builder.css","mappings":";;;;;;;AAMI;;;EAGE;EACA;EACA;AAJN;;AASA;EACE,gBAfW;EAgBX,eAhBW;EAiBX,YAjBW;EAkBX,WAlBW;EAmBX;AANF;;AAUE;EACE;AAPJ;AASI;EAEE;EACA;AARN;AAUM;EAEE;AATR;AAcE;EACE;EACA;AAZJ;AAcI;EACE;EACA;EACA;AAZN;AAsBE;EACE;AApBJ;AA2BE;EACE;EACA;AAzBJ;AA4BE;EACE;AA1BJ;AA6BM;EACE;AA3BR;AA8BM;EACE;EACA;AA5BR;AAgCQ;EACE;EACA;AA9BV;AAkCM;;EAEE;AAhCR;;AAsCA;EACE;EACA;EACA;EACA;AAnCF;AAqCE;EACE;AAnCJ;;AAuCA;EACE;EACA;AApCF;AAqCE;EACE;AAnCJ,C","sources":["webpack://angular-material-form-builder/./src/lib/index.scss"],"sourcesContent":["@import url(https://fonts.googleapis.com/icon?family=Material+Icons);\n\n$button-dim: 36px;\n\n.main-view {\n  .content {\n    .builder,\n    .view,\n    .json {\n      border-right: 1px solid #cccccc;\n      height: 800px;\n      overflow: auto;\n    }\n  }\n}\n\n.builder-icon {\n  min-height: $button-dim;\n  min-width: $button-dim;\n  height: $button-dim;\n  width: $button-dim;\n  line-height: 0;\n}\n\nform-item {\n  .option-item {\n    min-height: 75px;\n\n    .md-button {\n      @extend .builder-icon;\n      line-height: 0;\n      margin-top: 20px;\n\n      &.handle:active,\n      &.handle:hover {\n        cursor: move;\n      }\n    }\n  }\n\n  .form-item-container {\n    position: relative;\n    padding-top: 30px;\n\n    .form-item-actions {\n      position: absolute;\n      right: 20px;\n      top: 0;\n    }\n\n    .md-button {\n      @extend .builder-icon;\n    }\n  }\n}\n\nform-view {\n  .formItem-title {\n    font-size: 18px;\n  }\n\n  // .formItem-content {\n  //   font-size: 18px;\n  // }\n\n  .formItem-help-text {\n    font-size: 14px;\n    color: #6c6c6c;\n  }\n\n  .matrix-container {\n    overflow: auto;\n\n    .matrix {\n      .matrix-row {\n        border-bottom: 1px solid #4caf50;\n      }\n\n      .matrix-cell {\n        text-align: center;\n        overflow: hidden;\n      }\n\n      md-radio-button {\n        .md-label {\n          margin-left: 0;\n          margin-right: 0;\n        }\n      }\n\n      md-radio-button,\n      .md-switch-thumb {\n        margin: 15px 0;\n      }\n    }\n  }\n}\n\ni.material-icons {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n\n  &.medium {\n    font-size: 36px;\n  }\n}\n\n.md-button.upload-button {\n  padding: 0 16px;\n  height: 36px;\n  md-icon {\n    font-size: 16px;\n  }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"angular-material-form-builder.css","mappings":";;;;;;;AAMI;;;EAGE;EACA;EACA;AAJN;;AASA;EACE,gBAfW;EAgBX,eAhBW;EAiBX,YAjBW;EAkBX,WAlBW;EAmBX;AANF;;AAUE;EACE;AAPJ;AASI;EAEE;EACA;AARN;AAUM;EAEE;AATR;AAcE;EACE;EACA;AAZJ;AAcI;EACE;EACA;EACA;AAZN;AAsBE;EACE;AApBJ;AAuBE;EACE;AArBJ;AAwBE;EACE;EACA;AAtBJ;AAyBE;EACE;AAvBJ;AA0BM;EACE;AAxBR;AA2BM;EACE;EACA;AAzBR;AA6BQ;EACE;EACA;AA3BV;AA+BM;;EAEE;AA7BR;;AAmCA;EACE;EACA;EACA;EACA;AAhCF;AAkCE;EACE;AAhCJ;;AAoCA;EACE;EACA;AAjCF;AAkCE;EACE;AAhCJ,C","sources":["webpack://angular-material-form-builder/./src/lib/index.scss"],"sourcesContent":["@import url(https://fonts.googleapis.com/icon?family=Material+Icons);\n\n$button-dim: 36px;\n\n.main-view {\n  .content {\n    .builder,\n    .view,\n    .json {\n      border-right: 1px solid #cccccc;\n      height: 800px;\n      overflow: auto;\n    }\n  }\n}\n\n.builder-icon {\n  min-height: $button-dim;\n  min-width: $button-dim;\n  height: $button-dim;\n  width: $button-dim;\n  line-height: 0;\n}\n\nform-item {\n  .option-item {\n    min-height: 75px;\n\n    .md-button {\n      @extend .builder-icon;\n      line-height: 0;\n      margin-top: 20px;\n\n      &.handle:active,\n      &.handle:hover {\n        cursor: move;\n      }\n    }\n  }\n\n  .form-item-container {\n    position: relative;\n    padding-top: 30px;\n\n    .form-item-actions {\n      position: absolute;\n      right: 20px;\n      top: 0;\n    }\n\n    .md-button {\n      @extend .builder-icon;\n    }\n  }\n}\n\nform-view {\n  .formItem-title {\n    font-size: 18px;\n  }\n\n  .formItem-content {\n    font-size: 18px;\n  }\n\n  .formItem-help-text {\n    font-size: 14px;\n    color: #6c6c6c;\n  }\n\n  .matrix-container {\n    overflow: auto;\n\n    .matrix {\n      .matrix-row {\n        border-bottom: 1px solid #4caf50;\n      }\n\n      .matrix-cell {\n        text-align: center;\n        overflow: hidden;\n      }\n\n      md-radio-button {\n        .md-label {\n          margin-left: 0;\n          margin-right: 0;\n        }\n      }\n\n      md-radio-button,\n      .md-switch-thumb {\n        margin: 15px 0;\n      }\n    }\n  }\n}\n\ni.material-icons {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n\n  &.medium {\n    font-size: 36px;\n  }\n}\n\n.md-button.upload-button {\n  padding: 0 16px;\n  height: 36px;\n  md-icon {\n    font-size: 16px;\n  }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
index 763b0bf..0242e53 100644 (file)
@@ -2438,7 +2438,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
 /* harmony export */ });
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<md-input-container class=\"md-block\">\n  <label>Text</label>\n  <textarea ng-model=\"Label.item.value\"></textarea>\n</md-input-container>\n");
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<md-input-container class=\"md-block\">\n  <label>Text</label>\n  <textarea ng-model=\"Label.item.value\" md-maxlength=\"150\" rows=\"5\"></textarea>\n</md-input-container>\n");
 
 /***/ }),
 
@@ -2452,7 +2452,7 @@ __webpack_require__.r(__webpack_exports__);
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
 /* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
 /* harmony export */ });
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<md-input-container class=\"md-block\">\n  <md-content\n    flex\n    layout-padding\n    layout=\"row\"\n    layout-align=\"center center\"\n    ng-bind-html=\"LabelView.sanitizedTitle\"\n  >\n  </md-content>\n</md-input-container>\n");
+/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ("<md-input-container class=\"md-block\">\n  <md-content flex layout-padding layout=\"row\" layout-align=\"center center\">\n    <pre>\n      \n      <span class=\"formItem-content\" ng-bind-html=\"LabelView.sanitizedTitle\"></span>\n    </pre>\n  </md-content>\n</md-input-container>\n");
 
 /***/ }),
 
index 1736aed..1c294e9 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"angular-material-form-builder.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,iBAAT,CAA2BC,KAA3B,EAAkCC,QAAlC,EAA4C;AAC1C,OAAKC,OAAL,GAAeD,QAAf;AACA,OAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,IAAAA,MAAM,EAAE;AACNC,MAAAA,aAAa,EAAE;AADT,KADgC;AAIxCC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,EADT;AAEEC,MAAAA,QAAQ,EAAE;AAFZ,KADO;AAJ+B,GAA9B,CAAZ;AAWD;;;;;;;;;;;;;;;;;CClBD;;AAEA;AACA;AACA;;AACA,MAAMC,aAAN,CAAoB;AAClB;AACF;AACA;AACEC,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBf,yEAAlB;AACA,SAAKgB,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAZiB;;;;;;;;;;;;;;;;;ACNpB,MAAMC,iBAAN,CAAwB;AACtB;AACF;AACA;AACA;AACA;AACEN,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgB;AACzB,SAAKmB,KAAL,GAAaD,MAAb;AACA,SAAKlB,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAL,IAAiB,EAAnC,EAAuC;AACrDf,MAAAA,MAAM,EAAE,EAD6C;AAErDE,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE,EADT;AAEEC,QAAAA,QAAQ,EAAE;AAFZ,OADO;AAF4C,KAAvC,CAAhB;AAUA,SAAKa,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;AACA,SAAKC,cAAL,GAAsB,KAAtB;AAEA,SAAKC,OAAL,GAAe,IAAf;;AACA,SAAKC,WAAL;;AACA,SAAKC,eAAL;;AACA,QAAI,KAAKC,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAKR,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;;AACA,SAAKG,WAAL;;AACA,SAAKC,eAAL;AACD;;AAEDJ,EAAAA,mBAAmB,GAAG;AACpB,WAAO,KAAKH,QAAL,CAAcb,OAAd,CAAsBwB,MAAtB,CAA8BC,MAAD,IAAY;AAC9C,aAAOA,MAAM,CAACvB,QAAd;AACD,KAFM,CAAP;AAGD;;AAEDiB,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAKN,QAAL,CAAcf,MAAd,CAAqBC,aAA1B,EAAyC;AACvC,WAAKkB,cAAL,GAAsB,KAAtB;AACD,KAFD,MAEO,IACL,KAAKF,eAAL,CAAqBW,MAArB,KAAgC,KAAKb,QAAL,CAAcf,MAAd,CAAqBC,aADhD,EAEL;AACA,WAAKkB,cAAL,GAAsB,IAAtB;AACD,KAJM,MAIA;AACL,WAAKA,cAAL,GAAsB,KAAtB;AACD;AACF;;AAEDG,EAAAA,eAAe,GAAG;AAChB,QAAI,KAAKP,QAAL,CAAcf,MAAd,CAAqB6B,QAAzB,EAAmC;AACjC,WAAKT,OAAL,GAAe,KAAKH,eAAL,CAAqBW,MAArB,GAA8B,CAA7C;AACD,KAFD,MAEO;AACL,WAAKR,OAAL,GAAe,IAAf;AACD;;AAED,SAAKU,IAAL,CAAUC,YAAV,CAAuB,eAAvB,EAAwC,KAAKX,OAA7C;AACD;;AAEDI,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWkB,MAAX,CAAkB,wCAAlB,EAA6DC,MAAD,IAAY;AACtE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKb,WAAL;;AACA,aAAKC,eAAL;AACD;AACF,KALD;AAMD;;AA3EqB;;;;;;;;;;;;;;;;;;;ACAxB;AACA;;AAEA,MAAMc,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACE9B,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBH,gEAAhB;AACA,SAAK5B,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkBG,yEAAlB;AACA,SAAKF,YAAL,GAAoB,eAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCiB;;;;;;;;;;;;;;;;;ACHpB,MAAM2B,kBAAN,CAAyB;AACvB;AACF;AACA;AACA;AACA;AACA;AACErC,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AACNC,QAAAA,aAAa,EAAE;AADT,OADgC;AAIxCC,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE,EADT;AAEEC,QAAAA,QAAQ,EAAE;AAFZ,OADO;AAJ+B,KAA9B,CAAZ;AAWD;;AAEDwC,EAAAA,YAAY,CAACC,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUI,OAAV,CAAkB4C,MAAlB,CAAyBD,KAAzB,EAAgC,CAAhC;AACD;;AAEDE,EAAAA,SAAS,GAAG;AACV,SAAKjD,IAAL,CAAUI,OAAV,CAAkB8C,IAAlB,CAAuB;AACrB7C,MAAAA,KAAK,EAAE,EADc;AAErBC,MAAAA,QAAQ,EAAE;AAFW,KAAvB,EADU,CAKV;;AACA6C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKL,OAAL,CAAaqD,IAAb,CAAkB,OAAlB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AArCsB;;;;;;;;;;;;;;;;;;;ACAzB;AACA;AAEA;AACA;AACA;;AACA,SAASE,cAAT,GAA0B;AACxB,QAAMC,SAAS,GAAG;AAChBhD,IAAAA,QAAQ,EAAE,GADM;AAEhB+B,IAAAA,QAAQ,EAAEe,iEAFM;AAGhB7C,IAAAA,KAAK,EAAE;AACLV,MAAAA,IAAI,EAAE;AADD,KAHS;AAMhBW,IAAAA,UAAU,EAAEkC,2EANI;AAOhBjC,IAAAA,YAAY,EAAE,YAPE;AAQhBC,IAAAA,gBAAgB,EAAE;AARF,GAAlB;AAWA,SAAO4C,SAAP;AACD;;;;;;;;;;;;;;;;ACnBD,MAAMC,kBAAN,CAAyB;AACvB;AACF;AACA;AACA;AACA;AACElD,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgB;AACzB,SAAKmB,KAAL,GAAaD,MAAb;AACA,SAAKlB,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAL,IAAiB,EAAnC,EAAuC;AACrDf,MAAAA,MAAM,EAAE,EAD6C;AAErDE,MAAAA,OAAO,EAAE;AAF4C,KAAvC,CAAhB;AAKA,SAAKe,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;AACA,SAAKC,cAAL,GAAsB,KAAtB;AAEA,SAAKC,OAAL,GAAe,IAAf;;AACA,SAAKC,WAAL;;AACA,SAAKC,eAAL;;AACA,QAAI,KAAKC,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAKR,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;;AACA,SAAKG,WAAL;;AACA,SAAKC,eAAL;AACD;;AAEDJ,EAAAA,mBAAmB,GAAG;AACpB,WAAO,KAAKH,QAAL,CAAcb,OAAd,CAAsBwB,MAAtB,CAA8BC,MAAD,IAAY;AAC9C,aAAOA,MAAM,CAACvB,QAAd;AACD,KAFM,CAAP;AAGD;;AAEDiB,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAKN,QAAL,CAAcf,MAAd,CAAqBC,aAA1B,EAAyC;AACvC,WAAKkB,cAAL,GAAsB,KAAtB;AACD,KAFD,MAEO,IACL,KAAKF,eAAL,CAAqBW,MAArB,KAAgC,KAAKb,QAAL,CAAcf,MAAd,CAAqBC,aADhD,EAEL;AACA,WAAKkB,cAAL,GAAsB,IAAtB;AACD,KAJM,MAIA;AACL,WAAKA,cAAL,GAAsB,KAAtB;AACD;AACF;;AAEDG,EAAAA,eAAe,GAAG;AAChB,QAAI,KAAKP,QAAL,CAAcf,MAAd,CAAqB6B,QAAzB,EAAmC;AACjC,WAAKT,OAAL,GAAe,KAAKH,eAAL,CAAqBW,MAArB,GAA8B,CAA7C;AACD,KAFD,MAEO;AACL,WAAKR,OAAL,GAAe,IAAf;AACD;;AAED,SAAKU,IAAL,CAAUC,YAAV,CAAuB,eAAvB,EAAwC,KAAKX,OAA7C;AACD;;AAEDI,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWkB,MAAX,CAAkB,yCAAlB,EAA8DC,MAAD,IAAY;AACvE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKb,WAAL;;AACA,aAAKC,eAAL;AACD;AACF,KALD;AAMD;;AAtEsB;;;;;;;;;;;;;;;;;;;ACAzB;AACA;AAEA;AACA;AACA;;AACA,MAAMoC,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACEpD,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBmB,iEAAhB;AACA,SAAKjD,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkB+C,2EAAlB;AACA,SAAK9C,YAAL,GAAoB,gBAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCkB;;;;;;;;;;;;;;;;;ACNrB,MAAM2C,aAAa,GAAG;AACpBC,EAAAA,MAAM,EAAE,YADY;AAEpBC,EAAAA,SAAS,EAAE,WAFS;AAGpBC,EAAAA,KAAK,EAAE,OAHa;AAIpBC,EAAAA,cAAc,EAAE,QAJI;AAKpBC,EAAAA,KAAK,EAAE,OALa;AAMpBC,EAAAA,eAAe,EAAE,QANG;AAOpBC,EAAAA,MAAM,EAAE,QAPY;AAQpBC,EAAAA,UAAU,EAAE,SARQ;AASpBC,EAAAA,QAAQ,EAAE;AATU,CAAtB;;AAYA,MAAMC,YAAN,CAAmB;AACjB;AACF;AACA;AACA;AACA;AACA;AACE/D,EAAAA,WAAW,CAACO,MAAD,EAASyD,MAAT,EAAiB3E,KAAjB,EAAwB;AACjC,SAAK4E,KAAL,GAAaD,MAAb;AACA,SAAK3E,KAAL,GAAaA,KAAb;AACA,SAAK6E,SAAL,GAAiB;AACfZ,MAAAA,MAAM,EAAE,kDADO;AAEfC,MAAAA,SAAS,EAAE,wDAFI;AAGfC,MAAAA,KAAK,EAAE,gDAHQ;AAIfC,MAAAA,cAAc,EACZ,8EALa;AAMfC,MAAAA,KAAK,EAAE,gDANQ;AAOfC,MAAAA,eAAe,EACb,8DARa;AASfC,MAAAA,MAAM,EAAE,kDATO;AAUfC,MAAAA,UAAU,EAAE,0DAVG;AAWfC,MAAAA,QAAQ,EAAE;AAXK,KAAjB;AAaA,SAAKtE,IAAL,GAAY,EAAZ;AACA,SAAKU,KAAL,GAAaK,MAAb;AACD;;AAEDG,EAAAA,IAAI,GAAG;AACL,SAAKlB,IAAL,GAAY,KAAKH,KAAL,CAAWI,MAAX,CAAkB,KAAKD,IAAL,IAAa,EAA/B,EAAmC;AAC7C2E,MAAAA,IAAI,EAAE,KAAKF,KAAL,CAAWE,IAD4B;AAE7CC,MAAAA,KAAK,EAAE;AACLC,QAAAA,KAAK,EAAEhB,aAAa,CAAC,KAAKY,KAAL,CAAWE,IAAZ,CADf;AAELG,QAAAA,QAAQ,EAAE;AAFL,OAFsC;AAM7C5E,MAAAA,MAAM,EAAE;AACN6B,QAAAA,QAAQ,EAAE;AADJ;AANqC,KAAnC,CAAZ;AAUD;;AAEDgD,EAAAA,aAAa,GAAG;AACd,SAAKC,QAAL,CAAc;AAAEhF,MAAAA,IAAI,EAAE,KAAKA,IAAb;AAAmB+C,MAAAA,KAAK,EAAE,KAAKA,KAAL;AAA1B,KAAd;AACD;AAED;AACF;AACA;AACA;;;AACEkC,EAAAA,gBAAgB,CAACN,IAAD,EAAO;AACrB,UAAMO,MAAM,GACV,KACA,mCADA,GAEA,iCAFA,GAGA,oGAHA,GAIA,wDAJA,GAKA,cALA,GAMA,qIANA,GAOA,+DAPA,GAQA,cARA,GASA,yIATA,GAUA,iEAVA,GAWA,cAXA,GAYA,QAZA,GAaA,sBAbA,GAcA,4BAdA,GAeA,+CAfA,GAgBA,uBAhBA,GAiBA,sBAjBA,GAkBA,0BAlBA,GAmBA,mDAnBA,GAoBA,uBArBF;AAuBA,UAAMC,MAAM,GACV,KACA,sBADA,GAEA,oFAFA,GAGA,uBAHA,GAIA,QALF;AAOA,WAAOD,MAAM,GAAG,KAAKR,SAAL,CAAeC,IAAf,CAAT,GAAgCQ,MAAvC;AACD;;AAhFgB;;;;;;;;;;;;;;;;;;;ACZnB;AACA;AAEA;AACA;AACA;;AACA,MAAME,QAAN,CAAe;AACb;AACF;AACA;AACA;AACE7E,EAAAA,WAAW,CAAC8E,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK7E,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE,GADK;AAEXgF,MAAAA,QAAQ,EAAE,GAFC;AAGXO,MAAAA,IAAI,EAAE,GAHK;AAIXC,MAAAA,MAAM,EAAE,GAJG;AAKXzC,MAAAA,KAAK,EAAE;AALI,KAAb;AAOA,SAAKpC,UAAL,GAAkB4D,+DAAlB;AACA,SAAK3D,YAAL,GAAoB,UAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAK2B,QAAL,GAAgB4C,2DAAhB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE3C,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC,UAAMJ,QAAQ,GAAGI,IAAI,CAACqC,gBAAL,CAAsBtC,KAAK,CAACgC,IAA5B,CAAjB;;AACA,UAAMc,EAAE,GAAG,KAAKH,QAAL,CAAc9C,QAAd,EAAwB9B,KAAxB,CAAX,CAFgC,CAGhC;AACA;AACA;;AACAkC,IAAAA,IAAI,CAAC1B,IAAL;AACA,WAAOuE,EAAP;AACD;;AArCY;;;;;;;;;;;;;;;;;ACNf,MAAMC,sBAAN,CAA6B;AAC3B;AACF;AACA;AACElF,EAAAA,WAAW,GAAG;AACZ;AACJ;AACA;AACI,SAAKwB,IAAL,GAAY;AACV2D,MAAAA,KAAK,EAAE;AADG,KAAZ;AAGD;AAED;AACF;AACA;AACA;AACA;;;AACEC,EAAAA,MAAM,CAAC5F,IAAD,EAAO+C,KAAP,EAAc;AAClB,SAAKf,IAAL,CAAU2D,KAAV,CAAgB3C,MAAhB,CAAuBD,KAAvB,EAA8B,CAA9B;AACD;AAED;AACF;AACA;AACA;AACA;;;AACE8C,EAAAA,EAAE,CAAC7F,IAAD,EAAO+C,KAAP,EAAc;AACd,QAAIA,KAAK,KAAK,CAAd,EAAiB;AACf,YAAM+C,QAAQ,GAAG,KAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyB+C,QAAzB;AACA,WAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;AACE+F,EAAAA,IAAI,CAAC/F,IAAD,EAAO+C,KAAP,EAAc;AAChB,QAAIA,KAAK,KAAK,KAAKf,IAAL,CAAU2D,KAAV,CAAgB7D,MAAhB,GAAyB,CAAvC,EAA0C;AACxC,YAAMkE,QAAQ,GAAG,KAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyBiD,QAAzB;AACA,WAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;;AA9C0B;;;;;;;;;;;;;;;;;;;ACA7B;AACA;AAEA;AACA;AACA;;AACA,MAAMkG,kBAAN,CAAyB;AACvB;AACF;AACA;AACE1F,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXsB,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKQ,QAAL,GAAgByD,sEAAhB;AACA,SAAKtF,UAAL,GAAkB+E,oFAAlB;AACA,SAAK9E,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbsB;;;;;;;;;;;;;;;;;ACNzB,MAAMsF,YAAN,CAAmB;AACjB;AACF;AACA;AACA;AACE3F,EAAAA,WAAW,CAACO,MAAD,EAAS;AAClB,SAAKC,KAAL,GAAaD,MAAb;AACD;;AAEDG,EAAAA,IAAI,GAAG,CAAE;;AATQ;;;;;;;;;;;;;;;;;;;ACAnB;AACA;AAEA;AACA;AACA;;AACA,MAAMmF,QAAN,CAAe;AACb;AACF;AACA;AACE7F,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB4D,2DAAhB;AACA,SAAK1F,KAAL,GAAa;AACXsB,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKrB,UAAL,GAAkBwF,+DAAlB;AACA,SAAKvF,YAAL,GAAoB,UAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChCA,IAAAA,IAAI,CAAC1B,IAAL;AACD;;AAzBY;;;;;;;;;;;;;;;;;ACNf,MAAMoF,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACA;AACE9F,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AAEA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AACNyE,QAAAA,IAAI,EAAE;AADA;AADgC,KAA9B,CAAZ;AAKD;;AAdiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAM6B,SAAN,CAAgB;AACd;AACF;AACA;AACEhG,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB+D,4DAAhB;AACA,SAAK7F,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkB2F,iEAAlB;AACA,SAAK1F,YAAL,GAAoB,OAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAba;;;;;;;;;;;;;;;;;ACNhB,MAAM4F,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACEjG,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKrB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Bf,MAAAA,MAAM,EAAE;AADuB,KAAjC;AAGD;;AAdiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAMyG,SAAN,CAAgB;AACd;AACF;AACA;AACA;AACEnG,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBkE,4DAAhB;AACA,SAAKhG,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXe,MAAAA,IAAI,EAAE;AAFK,KAAb;AAIA,SAAKrB,UAAL,GAAkB8F,iEAAlB;AACA,SAAK7F,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AA/Ba;;;;;;;;;;;;;;;;;ACNhB,MAAM2F,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACErG,EAAAA,WAAW,CAACV,QAAD,EAAW;AACpB,SAAKC,OAAL,GAAeD,QAAf;AACD;;AAPiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAMiH,SAAN,CAAgB;AACdvG,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBsE,4DAAhB;AACA,SAAKpG,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBkG,iEAAlB;AACA,SAAKjG,YAAL,GAAoB,OAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAVa;;;;;;;;;;;;;;;;ACNhB,MAAMmG,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACA;AACExG,EAAAA,WAAW,CAACX,KAAD,EAAQoH,IAAR,EAAc;AACvB,SAAKpH,KAAL,GAAaA,KAAb;AACA,SAAKoH,IAAL,GAAYA,IAAZ;AACD;;AAED/F,EAAAA,IAAI,GAAG;AACL,SAAKrB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC,EAAjC;AACD;;AAEiB,MAAdiG,cAAc,GAAG;AACnB,WAAO,KAAKD,IAAL,CAAUE,WAAV,CAAsB,KAAKlG,QAAL,CAAcZ,KAApC,CAAP;AACD;;AAjBiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAMgH,SAAN,CAAgB;AACd;AACF;AACA;AACA;AACE7G,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB4E,4DAAhB;AACA,SAAK1G,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXe,MAAAA,IAAI,EAAE;AAFK,KAAb;AAIA,SAAKrB,UAAL,GAAkBqG,iEAAlB;AACA,SAAKpG,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AA/Ba;;;;;;;;;;;;;;;;;ACNhB,MAAMoG,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACE9G,EAAAA,WAAW,CAACX,KAAD,EAAQ0H,SAAR,EAAmB;AAC5B,SAAKC,YAAL,GAAoBC,OAAO,CAAC/E,OAAR,CAClB6E,SAAS,CAAC,CAAD,CAAT,CAAaG,aAAb,CAA2B,eAA3B,CADkB,CAApB;AAGA,SAAKC,eAAL,GAAuBF,OAAO,CAAC/E,OAAR,CACrB6E,SAAS,CAAC,CAAD,CAAT,CAAaG,aAAb,CAA2B,kBAA3B,CADqB,CAAvB;AAIA,SAAK1H,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AACN0H,QAAAA,IAAI,EAAE,CACJ;AACEvH,UAAAA,KAAK,EAAE;AADT,SADI,CADA;AAMNwH,QAAAA,OAAO,EAAE,CACP;AACExH,UAAAA,KAAK,EAAE;AADT,SADO;AANH;AADgC,KAA9B,CAAZ;AAcD;AAED;AACF;AACA;AACA;;;AACEyH,EAAAA,SAAS,CAAC/E,KAAD,EAAQ;AACf,SAAK/C,IAAL,CAAUE,MAAV,CAAiB0H,IAAjB,CAAsB5E,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AAEDgF,EAAAA,MAAM,GAAG;AACP,SAAK/H,IAAL,CAAUE,MAAV,CAAiB0H,IAAjB,CAAsB1E,IAAtB,CAA2B;AACzB7C,MAAAA,KAAK,EAAE;AADkB,KAA3B;AAIA8C,IAAAA,UAAU,CACR,YAAY;AACV,YAAM/C,OAAO,GAAG,KAAKoH,YAAL,CAAkBpE,IAAlB,CAAuB,OAAvB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJD,CAIE0E,IAJF,CAIO,IAJP,CADQ,EAMR,CANQ,CAAV;AAQD;AAED;AACF;AACA;AACA;;;AACEC,EAAAA,YAAY,CAAClF,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUE,MAAV,CAAiB2H,OAAjB,CAAyB7E,MAAzB,CAAgCD,KAAhC,EAAuC,CAAvC;AACD;;AAEDmF,EAAAA,SAAS,GAAG;AACV,SAAKlI,IAAL,CAAUE,MAAV,CAAiB2H,OAAjB,CAAyB3E,IAAzB,CAA8B;AAC5B7C,MAAAA,KAAK,EAAE;AADqB,KAA9B;AAIA8C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKuH,eAAL,CAAqBvE,IAArB,CAA0B,OAA1B,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AAvEkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAM8E,UAAN,CAAiB;AACf;AACF;AACA;AACE5H,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB2F,6DAAhB;AACA,SAAKzH,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkB2G,mEAAlB;AACA,SAAK1G,YAAL,GAAoB,QAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbc;;;;;;;;;;;;;;;;;ACNjB,MAAMwH,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACE7H,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgB;AACzB,SAAKmB,KAAL,GAAaD,MAAb;AACA,SAAKlB,KAAL,GAAaA,KAAb;AACA,SAAKyB,OAAL,GAAe,IAAf;AACA,SAAKL,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE;AACN0H,QAAAA,IAAI,EAAE,EADA;AAENC,QAAAA,OAAO,EAAE;AAFH;AADuC,KAAjC,CAAhB;;AAOA,SAAKrG,eAAL;;AACA,QAAI,KAAKC,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AAEDF,EAAAA,eAAe,GAAG;AAChB,QAAI8G,KAAK,GAAG,IAAZ;;AACA,QAAI,KAAKrH,QAAL,CAAcf,MAAd,CAAqB6B,QAAzB,EAAmC;AACjCuG,MAAAA,KAAK,GAAG,CAAC,KAAKrH,QAAL,CAAcf,MAAd,CAAqB0H,IAArB,CAA0BW,IAA1B,CACNC,GAAD,IAAS,OAAOA,GAAG,CAAC,UAAD,CAAV,KAA2B,WAD7B,CAAT,CADiC,CAIjC;AACA;AACA;AACA;AACA;AACA;AACD;;AAED,SAAKlH,OAAL,GAAegH,KAAf;AACA,SAAKtG,IAAL,CAAUC,YAAV,CAAuB,UAAvB,EAAmC,KAAKX,OAAxC;AACD;;AAEDI,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWyH,WAAX,CACE,CACE,qCADF,EAEE,wCAFF,CADF,EAKGtG,MAAD,IAAY;AACV,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKZ,eAAL;AACD;AACF,KATH;AAWD;;AAzDkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AAEA,MAAMmH,UAAN,CAAiB;AACf;AACF;AACA;AACA;AACEnI,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBkG,6DAAhB;AACA,SAAKhI,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkB0H,mEAAlB;AACA,SAAKzH,YAAL,GAAoB,YAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCc;;;;;;;;;;;;;;;;;ACPjB,MAAM0H,mBAAN,CAA0B;AACxB;AACF;AACA;AACA;AACA;AACEpI,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE,EADgC;AAExCE,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE;AADT,OADO;AAF+B,KAA9B,CAAZ;AAQD;;AAEDyC,EAAAA,YAAY,CAACC,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUI,OAAV,CAAkB4C,MAAlB,CAAyBD,KAAzB,EAAgC,CAAhC;AACD;;AAEDE,EAAAA,SAAS,GAAG;AACV,SAAKjD,IAAL,CAAUI,OAAV,CAAkB8C,IAAlB,CAAuB;AACrB7C,MAAAA,KAAK,EAAE;AADc,KAAvB;AAIA8C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKL,OAAL,CAAaqD,IAAb,CAAkB,OAAlB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AAhCuB;;;;;;;;;;;;;;;;;;;ACA1B;AACA;AAEA;AACA;AACA;;AAEA,MAAMwF,eAAN,CAAsB;AACpB;AACF;AACA;AACEtI,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBqG,mEAAhB;AACA,SAAKnI,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBiI,8EAAlB;AACA,SAAKhI,YAAL,GAAoB,aAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbmB;;;;;;;;;;;;;;;;;ACPtB,MAAMkI,mBAAN,CAA0B;AACxB;AACF;AACA;AACA;AACEvI,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE,EADuC;AAE/CE,MAAAA,OAAO,EAAE;AAFsC,KAAjC,CAAhB;AAID;;AAfuB;;;;;;;;;;;;;;;;;;;ACA1B;AACA;;AAEA,MAAM6I,eAAN,CAAsB;AACpB;AACF;AACA;AACA;AACEzI,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBwG,mEAAhB;AACA,SAAKtI,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkBoI,8EAAlB;AACA,SAAKnI,YAAL,GAAoB,iBAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCmB;;;;;;;;;;;;;;;;;ACHtB,MAAMgI,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACE1I,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE,EADgC;AAExCE,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE;AADT,OADO;AAF+B,KAA9B,CAAZ;AAQD;AAED;AACF;AACA;AACA;;;AACEyC,EAAAA,YAAY,CAACC,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUI,OAAV,CAAkB4C,MAAlB,CAAyBD,KAAzB,EAAgC,CAAhC;AACD;;AAEDE,EAAAA,SAAS,GAAG;AACV,SAAKjD,IAAL,CAAUI,OAAV,CAAkB8C,IAAlB,CAAuB;AACrB7C,MAAAA,KAAK,EAAE;AADc,KAAvB;AAIA8C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKL,OAAL,CAAaqD,IAAb,CAAkB,OAAlB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AApCkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAM8F,UAAN,CAAiB;AACf;AACF;AACA;AACE5I,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB2G,6DAAhB;AACA,SAAKzI,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBuI,mEAAlB;AACA,SAAKtI,YAAL,GAAoB,QAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbc;;;;;;;;;;;;;;;;;ACNjB,MAAMwI,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACE7I,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE,EADuC;AAE/CE,MAAAA,OAAO,EAAE;AAFsC,KAAjC,CAAhB;AAID;;AAfkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAMmJ,UAAN,CAAiB;AACf;AACF;AACA;AACA;AACE/I,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AAEA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB8G,6DAAhB;AACA,SAAK5I,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkB0I,mEAAlB;AACA,SAAKzI,YAAL,GAAoB,YAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAjCc;;;;;;;;;;;;;;;;;ACNjB,MAAMsI,gBAAN,CAAuB;AACrB;AACF;AACA;AACA;AACA;AACEhJ,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AAEA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AADgC,KAA9B,CAAZ;AAGD;;AAZoB;;;;;;;;;;;;;;;;;;;ACAvB;AACA;AAEA;AACA;AACA;;AACA,MAAMwJ,YAAN,CAAmB;AACjB;AACF;AACA;AACElJ,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBiH,+DAAhB;AACA,SAAK/I,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkB6I,uEAAlB;AACA,SAAK5I,YAAL,GAAoB,UAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbgB;;;;;;;;;;;;;;;;;ACNnB,MAAM8I,gBAAN,CAAuB;AACrB;AACF;AACA;AACA;AACEnJ,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE;AADuC,KAAjC,CAAhB;AAGD;;AAdoB;;;;;;;;;;;;;;;;;;;ACAvB;AACA;AAEA;AACA;AACA;;AAEA,MAAM2J,YAAN,CAAmB;AACjB;AACF;AACA;AACA;AACErJ,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK7B,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXe,MAAAA,IAAI,EAAE;AAFK,KAAb;AAIA,SAAKvB,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBoH,+DAAhB;AACA,SAAKjJ,UAAL,GAAkBgJ,uEAAlB;AACA,SAAK/I,YAAL,GAAoB,cAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AA/BgB;;;;;;;;;;;;;;;;;ACPnB,MAAM4I,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACEtJ,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE,EADgC;AAExCE,MAAAA,OAAO,EAAE;AAF+B,KAA9B,CAAZ;AAID;;AAbkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAM4J,UAAN,CAAiB;AACf;AACF;AACA;AACExJ,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBuH,6DAAhB;AACA,SAAKrJ,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBmJ,mEAAlB;AACA,SAAKlJ,YAAL,GAAoB,QAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbc;;;;;;;;;;;;;;;;;ACNjB,MAAMoJ,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACEzJ,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgBC,QAAhB,EAA0B;AACnC,SAAKkB,KAAL,GAAaD,MAAb;AACA,SAAKhB,OAAL,GAAeD,QAAf;AACA,SAAKD,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AACDC,EAAAA,IAAI,GAAG;AACL,SAAKgJ,UAAL,GAAkB,KAAlB;AACA,SAAKC,WAAL,GAAmB,KAAnB;AACA,SAAKlJ,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAL,IAAiB,EAAnC,EAAuC;AACrDf,MAAAA,MAAM,EAAE;AACNkK,QAAAA,IAAI,EAAE,EADA;AAENC,QAAAA,qBAAqB,EAAE;AAFjB,OAD6C;AAKrDjK,MAAAA,OAAO,EAAE;AAL4C,KAAvC,CAAhB;;AAOA,QAAI,KAAKqB,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AACD4I,EAAAA,eAAe,GAAG;AAChB,SAAKJ,UAAL,GAAkB,CAAC,CAAC,KAAKjJ,QAAL,CAAcf,MAAd,CAAqBqK,cAAzC;AACA,UAAMvG,KAAK,GAAGyD,OAAO,CAAC/E,OAAR,CACZ,KAAK3C,OAAL,CAAa,CAAb,EAAgB2H,aAAhB,CAA8B,kBAA9B,CADY,CAAd;;AAGA,QAAI1D,KAAJ,EAAW;AACT,WAAK/C,QAAL,CAAcb,OAAd,GAAwB,EAAxB;;AACA,UAAI,KAAK8J,UAAT,EAAqB;AACnBlG,QAAAA,KAAK,CAACwG,IAAN,CAAW,UAAX,EAAuB,UAAvB;AACD,OAFD,MAEO;AACLxG,QAAAA,KAAK,CAACyG,UAAN,CAAiB,UAAjB;AACD;AACF;AACF;;AAEDC,EAAAA,aAAa,GAAG;AACd,SAAKP,WAAL,GAAmB,CAAC,CAAC,KAAKlJ,QAAL,CAAcf,MAAd,CAAqByK,UAA1C;AACA,UAAM3G,KAAK,GAAGyD,OAAO,CAAC/E,OAAR,CACZ,KAAK3C,OAAL,CAAa,CAAb,EAAgB2H,aAAhB,CAA8B,kBAA9B,CADY,CAAd;;AAGA,QAAI1D,KAAJ,EAAW;AACT,UAAI,KAAKmG,WAAT,EAAsB;AACpBnG,QAAAA,KAAK,CAAC,CAAD,CAAL,CAAS4G,YAAT,CAAsB,QAAtB,EAAgC,KAAK3J,QAAL,CAAcf,MAAd,CAAqB2K,MAArD;AACD,OAFD,MAEO;AACL7G,QAAAA,KAAK,CAAC,CAAD,CAAL,CAAS8G,eAAT,CAAyB,QAAzB;AACA,eAAO,KAAK7J,QAAL,CAAcf,MAAd,CAAqB2K,MAA5B;AACD;AACF;AACF;;AAEDnJ,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWkB,MAAX,CAAkB,2CAAlB,EAAgEC,MAAD,IAAY;AACzE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKkI,eAAL;AACD;AACF,KAJD;AAMA,SAAKtJ,KAAL,CAAWkB,MAAX,CAAkB,uCAAlB,EAA4DC,MAAD,IAAY;AACrE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKsI,aAAL;AACD;AACF,KAJD;AAMA,SAAK1J,KAAL,CAAWkB,MAAX,CAAkB,mCAAlB,EAAwDC,MAAD,IAAY;AACjE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKsI,aAAL;AACD;AACF,KAJD;AAKD;;AAEDK,EAAAA,UAAU,CAAChI,KAAD,EAAQ;AAChB,SAAK9B,QAAL,CAAcb,OAAd,CAAsB4C,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AA/EkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA,MAAMkI,EAAE,GAAG,OAAO,IAAlB;;AAEA,MAAMC,UAAN,CAAiB;AACf;AACF;AACA;AACA;AACE1K,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBwI,6DAAhB;AACA,SAAKvK,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkBsJ,mEAAlB;AACA,SAAKrJ,YAAL,GAAoB,YAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAIA,UAAMiK,MAAM,GAAG1D,OAAO,CAAC/E,OAAR,CAAgBA,OAAO,CAAC,CAAD,CAAP,CAAWgF,aAAX,CAAyB,gBAAzB,CAAhB,CAAf;AACA,UAAM1D,KAAK,GAAGyD,OAAO,CAAC/E,OAAR,CAAgBA,OAAO,CAAC,CAAD,CAAP,CAAWgF,aAAX,CAAyB,kBAAzB,CAAhB,CAAd;AACA,UAAMxD,KAAK,GAAGuD,OAAO,CAAC/E,OAAR,CAAgBA,OAAO,CAAC,CAAD,CAAP,CAAWgF,aAAX,CAAyB,OAAzB,CAAhB,CAAd;;AAEA,QAAIxD,KAAK,CAACpC,MAAV,EAAkB;AAChBoC,MAAAA,KAAK,CAACkH,GAAN,CAAU,SAAV,EAAqB,MAArB;AACD;;AAEDD,IAAAA,MAAM,CAACE,EAAP,CAAU,OAAV,EAAmB,MAAM;AACvBnH,MAAAA,KAAK,CAACkH,GAAN,CAAU,SAAV,EAAqB,MAArB;AACA,aAAOpH,KAAK,CAACsH,OAAb,KAAyB,UAAzB,GACItH,KAAK,CAACsH,OAAN,CAAc,OAAd,CADJ,GAEItH,KAAK,CAAC,CAAD,CAAL,CAASuH,KAAT,EAFJ;AAGD,KALD;AAOAvH,IAAAA,KAAK,CAACqH,EAAN,CAAS,QAAT,EAAoBG,CAAD,IAAO;AACxB9K,MAAAA,KAAK,CAAC+K,MAAN,CAAa,YAAY;AACvB;AACR;AACA;AACQ,cAAMC,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAWJ,CAAC,CAACK,MAAF,CAASH,KAApB,CAAd,CAJuB,CAKvB;;AACA,cAAMI,SAAS,GAAGlJ,IAAI,CAAC3B,QAAL,CAAcf,MAAd,CAAqBkK,IAArB,GAA4Ba,EAA9C;AACA,cAAMc,WAAW,GAAGL,KAAK,CAACnD,IAAN,CAAYyD,IAAD,IAAUA,IAAI,CAAC5B,IAAL,IAAa0B,SAAlC,CAApB;;AACA,YAAIC,WAAJ,EAAiB;AACf7H,UAAAA,KAAK,CAACkH,GAAN,CAAU,SAAV,EAAqB,OAArB;AACAlH,UAAAA,KAAK,CAAC+H,IAAN,CAAWrJ,IAAI,CAAC3B,QAAL,CAAcf,MAAd,CAAqBgM,cAAhC;AACAtJ,UAAAA,IAAI,CAAC3B,QAAL,CAAcb,OAAd,GAAwB,EAAxB;AACD,SAJD,MAIO;AACLwC,UAAAA,IAAI,CAAC3B,QAAL,CAAcb,OAAd,GAAwBsL,KAAK,CAACS,GAAN,CAAWH,IAAD,IAAU;AAC1C,kBAAM;AAAEI,cAAAA,IAAF;AAAQhC,cAAAA,IAAR;AAAczF,cAAAA;AAAd,gBAAuBqH,IAA7B;AACA,mBAAO;AAAEI,cAAAA,IAAF;AAAQhC,cAAAA,IAAR;AAAczF,cAAAA,IAAd;AAAoBqH,cAAAA;AAApB,aAAP;AACD,WAHuB,CAAxB;AAID;AACF,OAlBD;AAmBD,KApBD;AAqBD;;AArEc;;;;;;;;;;;;;;;;;ACLjB;AACA;AACA;AACA;AAEA,MAAMK,cAAN,CAAqB;AACnB;AACF;AACA;AACE7L,EAAAA,WAAW,GAAG;AACZ;AACJ;AACA;AACI,SAAKwB,IAAL,GAAY;AACV2D,MAAAA,KAAK,EAAE;AADG,KAAZ;AAGD;AAED;AACF;AACA;AACA;;;AACE2G,EAAAA,OAAO,CAAC3H,IAAD,EAAO;AACZ,SAAK3C,IAAL,CAAU2D,KAAV,CAAgBzC,IAAhB,CAAqB;AACnByB,MAAAA;AADmB,KAArB;AAGD;AAED;AACF;AACA;AACA;AACA;;;AACEiB,EAAAA,MAAM,CAAC5F,IAAD,EAAO+C,KAAP,EAAc;AAClB,SAAKf,IAAL,CAAU2D,KAAV,CAAgB3C,MAAhB,CAAuBD,KAAvB,EAA8B,CAA9B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE8C,EAAAA,EAAE,CAAC7F,IAAD,EAAO+C,KAAP,EAAc;AACd,QAAIA,KAAK,KAAK,CAAd,EAAiB;AACf,YAAM+C,QAAQ,GAAG,KAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyB+C,QAAzB;AACA,WAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE+F,EAAAA,IAAI,CAAC/F,IAAD,EAAO+C,KAAP,EAAc;AAChB,QAAIA,KAAK,KAAK,KAAKf,IAAL,CAAU2D,KAAV,CAAgB7D,MAAhB,GAAyB,CAAvC,EAA0C;AACxC,YAAMkE,QAAQ,GAAG,KAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyBiD,QAAzB;AACA,WAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;;AA1DkB;;;;;;;;;;;;;;;;;ACLrB,MAAMH,KAAN,CAAY;AACV;AACF;AACA;AACA;AACA;AACA;AACEI,EAAAA,MAAM,CAACsM,IAAD,EAAOC,GAAP,EAAY;AAChB,WAAOC,MAAM,CAACC,IAAP,CAAYF,GAAZ,EAAiBG,MAAjB,CACL,CAACC,MAAD,EAASC,GAAT,KAAiB;AACf,UAAI,OAAOD,MAAM,CAACC,GAAD,CAAb,KAAuB,WAA3B,EAAwC;AACtCD,QAAAA,MAAM,CAACC,GAAD,CAAN,GAAcL,GAAG,CAACK,GAAD,CAAjB;AACD,OAFD,MAEO,IAAI,OAAOL,GAAG,CAACK,GAAD,CAAV,KAAoB,QAAxB,EAAkC;AACvCD,QAAAA,MAAM,CAACC,GAAD,CAAN,GAAc,KAAK5M,MAAL,CAAY2M,MAAM,CAACC,GAAD,CAAlB,EAAyBL,GAAG,CAACK,GAAD,CAA5B,CAAd;AACD;;AACD,aAAOD,MAAP;AACD,KARI,EASL,OAAOL,IAAP,KAAgB,WAAhB,GAA8B,EAA9B,GAAmCA,IAT9B,CAAP;AAWD;;AAnBS;;;;;;;;;;;;;ACAZ;;;;;;;;;;;;;;;ACAA,iEAAe,8CAA8C,4EAA4E,qQAAqQ,yCAAyC,iJAAiJ,4CAA4C,qDAAqD;;;;;;;;;;;;;;ACAzqB,iEAAe,gdAAgd,mFAAmF,6bAA6b,YAAY,qfAAqf;;;;;;;;;;;;;;ACAh/C,iEAAe,8CAA8C,6EAA6E,2TAA2T,cAAc,kJAAkJ,6CAA6C,qDAAqD;;;;;;;;;;;;;;ACAvsB,iEAAe,oaAAoa,6CAA6C,yNAAyN,6CAA6C,87DAA87D;;;;;;;;;;;;;;ACApqF,iEAAe,mGAAmG,WAAW,kNAAkN;;;;;;;;;;;;;;ACA/U,iEAAe,iUAAiU,sBAAsB,oDAAoD,yBAAyB,qpDAAqpD;;;;;;;;;;;;;;ACAxkE,iEAAe,sdAAsd;;;;;;;;;;;;;;ACAre,iEAAe,4GAA4G,gCAAgC,wBAAwB,uCAAuC,kNAAkN;;;;;;;;;;;;;;ACA5a,iEAAe,gJAAgJ;;;;;;;;;;;;;;ACA/J,iEAAe,4OAA4O;;;;;;;;;;;;;;ACA3P,iEAAe,sjBAAsjB,YAAY,uqCAAuqC,YAAY,inBAAinB;;;;;;;;;;;;;;ACAr3E,iEAAe,8XAA8X,cAAc,gRAAgR,WAAW,mZAAmZ,cAAc,gRAAgR;;;;;;;;;;;;;;ACAv2C,iEAAe,wRAAwR,oFAAoF,8bAA8b,YAAY,oZAAoZ;;;;;;;;;;;;;;ACAztC,iEAAe,uNAAuN,8EAA8E,6IAA6I,cAAc,6CAA6C,cAAc,uMAAuM;;;;;;;;;;;;;;ACAjtB,iEAAe,ihBAAihB,YAAY,sXAAsX;;;;;;;;;;;;;;ACAl6B,iEAAe,oUAAoU,eAAe,qLAAqL;;;;;;;;;;;;;;ACAvhB,iEAAe,yKAAyK;;;;;;;;;;;;;;ACAxL,iEAAe,yHAAyH,0CAA0C,kOAAkO;;;;;;;;;;;;;;ACApZ,iEAAe,ugBAAugB,0BAA0B,07BAA07B;;;;;;;;;;;;;;ACA1+C,iEAAe,2kBAA2kB,kDAAkD,sGAAsG,iCAAiC,qSAAqS,aAAa,4BAA4B;;;;;;UCAjmC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,iEAAe9E,OAAO,CACnBqF,MADY,CACL,4BADK,EACyB,CACpC,YADoC,EAEpC,uBAFoC,EAGpC,YAHoC,CADzB,EAMZC,OANY,CAMJ,OANI,EAMKlN,uDANL,EAOZc,UAPY,CAOD,gBAPC,EAOiB0L,iEAPjB,EAQZ5I,SARY,CAQF,YARE,EAQYuG,qFARZ,EASZvG,SATY,CASF,YATE,EASYyH,qFATZ,EAUZzH,SAVY,CAUF,eAVE,EAUelD,8FAVf,EAWZkD,SAXY,CAWF,eAXE,EAWenB,8FAXf,EAYZmB,SAZY,CAYF,gBAZE,EAYgBD,iGAZhB,EAaZC,SAbY,CAaF,gBAbE,EAagBG,iGAbhB,EAcZH,SAdY,CAcF,UAdE,EAcU4B,+EAdV,EAeZ5B,SAfY,CAeF,oBAfE,EAeoByC,gHAfpB,EAgBZzC,SAhBY,CAgBF,UAhBE,EAgBU4C,gFAhBV,EAiBZ5C,SAjBY,CAiBF,WAjBE,EAiBW+C,mFAjBX,EAkBZ/C,SAlBY,CAkBF,WAlBE,EAkBWkD,mFAlBX,EAmBZlD,SAnBY,CAmBF,WAnBE,EAmBWsD,mFAnBX,EAoBZtD,SApBY,CAoBF,WApBE,EAoBW4D,mFApBX,EAqBZ5D,SArBY,CAqBF,YArBE,EAqBY2E,sFArBZ,EAsBZ3E,SAtBY,CAsBF,YAtBE,EAsBYkF,sFAtBZ,EAuBZlF,SAvBY,CAuBF,iBAvBE,EAuBiBqF,uGAvBjB,EAwBZrF,SAxBY,CAwBF,iBAxBE,EAwBiBwF,uGAxBjB,EAyBZxF,SAzBY,CAyBF,YAzBE,EAyBY2F,sFAzBZ,EA0BZ3F,SA1BY,CA0BF,YA1BE,EA0BY8F,sFA1BZ,EA2BZ9F,SA3BY,CA2BF,cA3BE,EA2BciG,4FA3Bd,EA4BZjG,SA5BY,CA4BF,cA5BE,EA4BcoG,4FA5Bd,CAAf,E","sources":["webpack://angular-material-form-builder/webpack/universalModuleDefinition","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.directive.js","webpack://angular-material-form-builder/./src/lib/main/main.controller.js","webpack://angular-material-form-builder/./src/lib/utils/utils.service.js","webpack://angular-material-form-builder/./src/lib/index.scss?f8d6","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.tpl.html","webpack://angular-material-form-builder/webpack/bootstrap","webpack://angular-material-form-builder/webpack/runtime/define property getters","webpack://angular-material-form-builder/webpack/runtime/hasOwnProperty shorthand","webpack://angular-material-form-builder/webpack/runtime/make namespace object","webpack://angular-material-form-builder/./src/lib/index.module.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-material-form-builder\"] = factory();\n\telse\n\t\troot[\"angular-material-form-builder\"] = factory();\n})(self, function() {\nreturn ","/**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\nfunction AgreementItemCtrl(Utils, $element) {\n  this.Element = $element\n  this.item = Utils.extend(this.item || {}, {\n    config: {\n      maxSelections: null,\n    },\n    options: [\n      {\n        value: '',\n        selected: false,\n      },\n    ],\n  })\n}\n\nexport { AgreementItemCtrl }\n","import { AgreementItemCtrl } from './agreement-item.controller'\n// import AgreementItemTemplate from './agreement-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass AgreementItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n    }\n    this.controller = AgreementItemCtrl\n    this.controllerAs = 'Agreement'\n    this.bindToController = true\n  }\n}\n\nexport { AgreementItem }\n","class AgreementViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('AgreementView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { AgreementViewCtrl }\n","import { AgreementViewCtrl } from './agreement-view.controller'\nimport AgreementViewTemplate from './agreement-view.tpl.html'\n\nclass AgreementView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = AgreementViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = AgreementViewCtrl\n    this.controllerAs = 'AgreementView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {AgreementViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { AgreementView }\n","class CheckboxesItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        maxSelections: null,\n      },\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n      selected: false,\n    })\n    // Focus new element\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { CheckboxesItemCtrl }\n","import CheckboxesItemTemplate from './checkboxes-item.tpl.html'\nimport { CheckboxesItemCtrl } from './checkboxes-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nfunction CheckboxesItem() {\n  const directive = {\n    restrict: 'E',\n    template: CheckboxesItemTemplate,\n    scope: {\n      item: '=',\n    },\n    controller: CheckboxesItemCtrl,\n    controllerAs: 'Checkboxes',\n    bindToController: true,\n  }\n\n  return directive\n}\n\nexport { CheckboxesItem }\n","class CheckboxesViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('CheckboxesView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { CheckboxesViewCtrl }\n","import CheckboxesViewTemplate from './checkboxes-view.tpl.html'\nimport { CheckboxesViewCtrl } from './checkboxes-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass CheckboxesView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = CheckboxesViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = CheckboxesViewCtrl\n    this.controllerAs = 'CheckboxesView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {CheckboxesViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { CheckboxesView }\n","const DEFAULT_TITLE = {\n  upload: 'Attachment',\n  agreement: 'Agreement',\n  input: 'Field',\n  chooseFromList: 'Select',\n  label: 'Label',\n  multipleChoices: 'Choice',\n  matrix: 'Matrix',\n  checkboxes: 'Options',\n  textarea: 'Text',\n}\n\nclass FormItemCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {ng.IAttributes} $attrs\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, $attrs, Utils) {\n    this.Attrs = $attrs\n    this.Utils = Utils\n    this.templates = {\n      upload: '<upload-item item=\"FormItem.item\"></upload-item>',\n      agreement: '<agreement-item item=\"FormItem.item\"></agreement-item>',\n      input: '<input-item item=\"FormItem.item\"></input-item>',\n      chooseFromList:\n        '<bet-form-choose-from-list item=\"FormItem.item\"></bet-form-choose-from-list>',\n      label: '<label-item item=\"FormItem.item\"></label-item>',\n      multipleChoices:\n        '<radio-button-item item=\"FormItem.item\"></radio-button-item>',\n      matrix: '<matrix-item item=\"FormItem.item\"></matrix-item>',\n      checkboxes: '<checkboxes-item item=\"FormItem.item\"></checkboxes-item>',\n      textarea: '<textarea-item item=\"FormItem.item\"></textarea-item>',\n    }\n    this.item = {}\n    this.scope = $scope\n  }\n\n  init() {\n    this.item = this.Utils.extend(this.item || {}, {\n      type: this.Attrs.type,\n      props: {\n        title: DEFAULT_TITLE[this.Attrs.type],\n        helpText: '',\n      },\n      config: {\n        required: false,\n      },\n    })\n  }\n\n  deleteClicked() {\n    this.onDelete({ item: this.item, index: this.index() })\n  }\n\n  /**\n   *\n   * @param {string} type\n   */\n  _getItemTemplate(type) {\n    const prefix =\n      '' +\n      '<div class=\"form-item-container\">' +\n      '<div class=\"form-item-actions\">' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDelete\" ng-click=\"FormItem.deleteClicked()\"> ' +\n      '<md-icon class=\"material-icons small\">delete</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onUp\" ng-click=\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_up</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDown\" ng-click=\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_down</md-icon>' +\n      '</md-button>' +\n      '</div>' +\n      '<md-input-container>' +\n      '<label>Field Title</label>' +\n      '<input ng-model=\"FormItem.item.props.title\"/>' +\n      '</md-input-container>' +\n      '<md-input-container>' +\n      '<label>Help Text</label>' +\n      '<input ng-model=\"FormItem.item.props.helpText\" />' +\n      '</md-input-container>'\n\n    const suffix =\n      '' +\n      '<md-input-container>' +\n      '<md-checkbox ng-model=\"FormItem.item.config.required\">Required field</md-checkbox>' +\n      '</md-input-container>' +\n      '</div>'\n\n    return prefix + this.templates[type] + suffix\n  }\n}\n\nexport { FormItemCtrl }\n","import FormItemTemplate from './form-item.tpl.html'\nimport { FormItemCtrl } from './form-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItem {\n  /**\n   * @ngInject\n   * @param {ng.ICompileService} $compile\n   */\n  constructor($compile) {\n    this.$compile = $compile\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n      onDelete: '&',\n      onUp: '&',\n      onDown: '&',\n      index: '&',\n    }\n    this.controller = FormItemCtrl\n    this.controllerAs = 'FormItem'\n    this.bindToController = true\n    this.template = FormItemTemplate\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    const template = ctrl._getItemTemplate(attrs.type)\n    const el = this.$compile(template)(scope)\n    // element.append(el)\n    // if done like above adds twice\n    // element.append(this.$compile(template)(scope))\n    ctrl.init()\n    return el\n  }\n}\nexport { FormItem }\n","class FormItemsContainerCtrl {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {import('../../main/main.controller').FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { FormItemsContainerCtrl }\n","import { FormItemsContainerCtrl } from './form-items-container.controller'\nimport FormItemsContainerTemplate from './form-items-container.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItemsContainer {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      form: '=',\n    }\n    this.template = FormItemsContainerTemplate\n    this.controller = FormItemsContainerCtrl\n    this.controllerAs = 'container'\n    this.bindToController = true\n  }\n}\n\nexport { FormItemsContainer }\n","class FormViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScù} $scope\n   */\n  constructor($scope) {\n    this.Scope = $scope\n  }\n\n  init() {}\n}\n\nexport { FormViewCtrl }\n","import { FormViewCtrl } from './form-view.controller'\nimport FormViewTemplate from './form-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormView {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = FormViewTemplate\n    this.scope = {\n      form: '=',\n    }\n    this.controller = FormViewCtrl\n    this.controllerAs = 'FormView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    ctrl.init()\n  }\n}\n\nexport { FormView }\n","class InputItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        type: 'text',\n      },\n    })\n  }\n}\n\nexport { InputItemCtrl }\n","import { InputItemCtrl } from './input-item.controller'\nimport InputItemTemplate from './input-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = InputItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = InputItemCtrl\n    this.controllerAs = 'Input'\n    this.bindToController = true\n  }\n}\n\nexport { InputItem }\n","class InputViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { InputViewCtrl }\n","import { InputViewCtrl } from './input-view.controller'\nimport InputViewTemplate from './input-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = InputViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = InputViewCtrl\n    this.controllerAs = 'InputView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { InputView }\n","class LabelItemCtrl {\n  /**\n   * @ngInject\n   * @param {JQLite} $element\n   */\n  constructor($element) {\n    this.Element = $element\n  }\n}\n\nexport { LabelItemCtrl }\n","import { LabelItemCtrl } from './label-item.controller'\nimport LabelItemTemplate from './label-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelItem {\n  constructor() {\n    this.restrict = 'E'\n    this.template = LabelItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = LabelItemCtrl\n    this.controllerAs = 'Label'\n    this.bindToController = true\n  }\n}\n\nexport { LabelItem }\n","class LabelViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.ISCEService} $sce\n   */\n  constructor(Utils, $sce) {\n    this.Utils = Utils\n    this.$sce = $sce\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {})\n  }\n\n  get sanitizedTitle() {\n    return this.$sce.trustAsHtml(this.formItem.value)\n  }\n}\n\nexport { LabelViewCtrl }\n","import { LabelViewCtrl } from './label-view.controller'\nimport LabelViewTemplate from './label-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = LabelViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = LabelViewCtrl\n    this.controllerAs = 'LabelView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {LabelViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { LabelView }\n","class MatrixItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.IDocumentService} $document\n   */\n  constructor(Utils, $document) {\n    this.RowContainer = angular.element(\n      $document[0].querySelector('.rowContainer')\n    )\n    this.ColumnContainer = angular.element(\n      $document[0].querySelector('.columnContainer')\n    )\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        rows: [\n          {\n            value: '',\n          },\n        ],\n        columns: [\n          {\n            value: '',\n          },\n        ],\n      },\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteRow(index) {\n    this.item.config.rows.splice(index, 1)\n  }\n\n  addRow() {\n    this.item.config.rows.push({\n      value: '',\n    })\n\n    setTimeout(\n      function () {\n        const options = this.RowContainer.find('input')\n        const addedOption = options[options.length - 1]\n        addedOption.focus()\n      }.bind(this),\n      0\n    )\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteColumn(index) {\n    this.item.config.columns.splice(index, 1)\n  }\n\n  addColumn() {\n    this.item.config.columns.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.ColumnContainer.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { MatrixItemCtrl }\n","import { MatrixItemCtrl } from './matrix-item.controller'\nimport MatrixItemTemplate from './matrix-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass MatrixItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = MatrixItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = MatrixItemCtrl\n    this.controllerAs = 'Matrix'\n    this.bindToController = true\n  }\n}\nexport { MatrixItem }\n","class MatrixViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.isValid = true\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {\n        rows: [],\n        columns: [],\n      },\n    })\n\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  _updateValidity() {\n    let valid = true\n    if (this.formItem.config.required) {\n      valid = !this.formItem.config.rows.some(\n        (row) => typeof row['selected'] === 'undefined'\n      )\n      //   for (let i = 0; i < this.formItem.config.rows.length; i++) {\n      //     if (typeof this.formItem.config.rows[i]['selected'] === 'undefined') {\n      //       valid = false\n      //       break\n      //     }\n      //   }\n    }\n\n    this.isValid = valid\n    this.form.$setValidity('required', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watchGroup(\n      [\n        'MatrixView.formItem.config.required',\n        'MatrixView.formItem.config.rows.length',\n      ],\n      (newVal) => {\n        if (newVal !== undefined) {\n          this._updateValidity()\n        }\n      }\n    )\n  }\n}\nexport { MatrixViewCtrl }\n","import MatrixViewTemplate from './matrix-view.tpl.html'\nimport { MatrixViewCtrl } from './matrix-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass MatrixView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = MatrixViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = MatrixViewCtrl\n    this.controllerAs = 'MatrixView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {MatrixViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { MatrixView }\n","class RadioButtonItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { RadioButtonItemCtrl }\n","import { RadioButtonItemCtrl } from './radio-button-item.controller'\nimport RadioButtonTemplate from './radio-button-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass RadioButtonItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = RadioButtonTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = RadioButtonItemCtrl\n    this.controllerAs = 'RadioButton'\n    this.bindToController = true\n  }\n}\n\nexport { RadioButtonItem }\n","class RadioButtonViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { RadioButtonViewCtrl }\n","import { RadioButtonViewCtrl } from './radio-button-view.controller'\nimport RadioButtonViewTemplate from './radio-button-view.tpl.html'\n\nclass RadioButtonView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = RadioButtonViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = RadioButtonViewCtrl\n    this.controllerAs = 'RadioButtonView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {RadioButtonViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { RadioButtonView }\n","class SelectItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { SelectItemCtrl }\n","import SelectTemplate from './select-item.tpl.html'\nimport { SelectItemCtrl } from './select-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = SelectTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = SelectItemCtrl\n    this.controllerAs = 'Select'\n    this.bindToController = true\n  }\n}\n\nexport { SelectItem }\n","class SelectViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { SelectViewCtrl }\n","import SelectViewTemplate from './select-view.tpl.html'\nimport { SelectViewCtrl } from './select-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n\n    this.restrict = 'E'\n    this.template = SelectViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = SelectViewCtrl\n    this.controllerAs = 'SelectView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {SelectViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { SelectView }\n","class TextareaItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaItemCtrl }\n","import { TextareaItemCtrl } from './textarea-item.controller'\nimport TextareaItemTemplate from './textarea-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass TextareaItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = TextareaItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = TextareaItemCtrl\n    this.controllerAs = 'Textarea'\n    this.bindToController = true\n  }\n}\n\nexport { TextareaItem }\n","class TextareaViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaViewCtrl }\n","import { TextareaViewCtrl } from './textarea-view.controller'\nimport TextareaViewTemplate from './textarea-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass TextareaView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.restrict = 'E'\n    this.template = TextareaViewTemplate\n    this.controller = TextareaViewCtrl\n    this.controllerAs = 'TextareaView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {TextareaViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { TextareaView }\n","class UploadItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { UploadItemCtrl }\n","import UploadItemTemplate from './upload-item.tpl.html'\nimport { UploadItemCtrl } from './upload-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass UploadItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = UploadItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = UploadItemCtrl\n    this.controllerAs = 'Upload'\n    this.bindToController = true\n  }\n}\n\nexport { UploadItem }\n","class UploadViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor($scope, Utils, $element) {\n    this.Scope = $scope\n    this.Element = $element\n    this.Utils = Utils\n    this.formItem = {}\n  }\n  init() {\n    this.isMultiple = false\n    this.showAllowed = false\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {\n        size: 10,\n        uploadFileButtonLabel: 'Add files',\n      },\n      options: [],\n    })\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n  _updateMultiple() {\n    this.isMultiple = !!this.formItem.config.multipleUpload\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      this.formItem.options = []\n      if (this.isMultiple) {\n        input.attr('multiple', 'multiple')\n      } else {\n        input.removeAttr('multiple')\n      }\n    }\n  }\n\n  _updateAccept() {\n    this.showAllowed = !!this.formItem.config.showAccept\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      if (this.showAllowed) {\n        input[0].setAttribute('accept', this.formItem.config.accept)\n      } else {\n        input[0].removeAttribute('accept')\n        delete this.formItem.config.accept\n      }\n    }\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('UploadView.formItem.config.multipleUpload', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateMultiple()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.showAccept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.accept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n  }\n\n  removeItem(index) {\n    this.formItem.options.splice(index, 1)\n  }\n}\nexport { UploadViewCtrl }\n","import { UploadViewCtrl } from './upload-view.controller'\nimport UploadViewTemplate from './upload-view.tpl.html'\n\nconst MB = 1024 * 1024\n\nclass UploadView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = UploadViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = UploadViewCtrl\n    this.controllerAs = 'UploadView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {UploadViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n\n    const button = angular.element(element[0].querySelector('.upload-button'))\n    const input = angular.element(element[0].querySelector('input[type=file]'))\n    const label = angular.element(element[0].querySelector('label'))\n\n    if (label.length) {\n      label.css('display', 'none')\n    }\n\n    button.on('click', () => {\n      label.css('display', 'none')\n      typeof input.trigger === 'function'\n        ? input.trigger('click')\n        : input[0].click()\n    })\n\n    input.on('change', (e) => {\n      scope.$apply(function () {\n        /**\n         * @type {File[]}\n         */\n        const files = Array.from(e.target.files)\n        // Max allowed size in MB\n        const maxSizeMB = ctrl.formItem.config.size * MB\n        const exceedsSize = files.some((file) => file.size >= maxSizeMB)\n        if (exceedsSize) {\n          label.css('display', 'block')\n          label.text(ctrl.formItem.config.sizeErrMessage)\n          ctrl.formItem.options = []\n        } else {\n          ctrl.formItem.options = files.map((file) => {\n            const { name, size, type } = file\n            return { name, size, type, file }\n          })\n        }\n      })\n    })\n  }\n}\n\nexport { UploadView }\n","/**\n * @typedef {{type:string}} Item\n * @typedef {{items: Item[]}} FormConfig\n */\n\nclass MainController {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   * Add new Item\n   * @param {string} type\n   */\n  addItem(type) {\n    this.form.items.push({\n      type,\n    })\n  }\n\n  /**\n   * Remove item at index\n   * @param {Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   * insert before (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   * insert after (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { MainController }\n","class Utils {\n  /**\n   * Recursively extend object properties\n   * @param {Object} dest\n   * @param {Object} src\n   * @returns {Object}\n   */\n  extend(dest, src) {\n    return Object.keys(src).reduce(\n      (result, key) => {\n        if (typeof result[key] === 'undefined') {\n          result[key] = src[key]\n        } else if (typeof src[key] === 'object') {\n          result[key] = this.extend(result[key], src[key])\n        }\n        return result\n      },\n      typeof dest === 'undefined' ? {} : dest\n    )\n  }\n}\n\nexport { Utils }\n","// extracted by mini-css-extract-plugin\nexport {};","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{AgreementView.formItem.config.direction == 'horizontal' ? 'row' : 'columb'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-model=\\\"AgreementView.formItem.options[0].selected\\\"\\n      ng-change=\\\"AgreementView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"AgreementView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{AgreementView.formItem.options[0].value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"AgreementView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{AgreementView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Checkboxes.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max Selections</label>\\n    <input type=\\\"number\\\" ng-model=\\\"Checkboxes.item.config.maxSelections\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Checkboxes.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{Checkboxes.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Checkboxes.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button\\\" ng-click=\\\"Checkboxes.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      ng-click=\\\"Checkboxes.addOption()\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">add</md-icon>\\n    </md-button>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{CheckboxesView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-repeat=\\\"option in CheckboxesView.formItem.options track by $index\\\"\\n      ng-model=\\\"option.selected\\\"\\n      ng-change=\\\"CheckboxesView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"CheckboxesView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{option.value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"CheckboxesView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{CheckboxesView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div class=\\\"form-item-container md-inline-form\\\">\\n  <div class=\\\"form-item-actions\\\">\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDelete\\\"\\n      ng-click=\\\"FormItem.deleteClicked()\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">delete</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onUp\\\"\\n      ng-click=\\\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_up</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDown\\\"\\n      ng-click=\\\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_down</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Field Title</label>\\n    <input ng-model=\\\"FormItem.item.props.title\\\" />\\n  </md-input-container>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Help Text</label>\\n    <input ng-model=\\\"FormItem.item.props.helpText\\\" />\\n  </md-input-container>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type === 'agreement'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <label>Option Text</label>\\n    <input ng-model=\\\"FormItem.item.options[0].value\\\" />\\n  </md-input-container>\\n\\n  <div ng-switch=\\\"FormItem.item.type\\\">\\n    <upload-item ng-switch-when=\\\"upload\\\" item=\\\"FormItem.item\\\"></upload-item>\\n    <agreement-item\\n      ng-switch-when=\\\"agreement\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></agreement-item>\\n    <label-item ng-switch-when=\\\"label\\\" item=\\\"FormItem.item\\\"></label-item>\\n    <input-item ng-switch-when=\\\"input\\\" item=\\\"FormItem.item\\\"></input-item>\\n    <radio-button-item\\n      ng-switch-when=\\\"multipleChoices\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></radio-button-item>\\n    <matrix-item ng-switch-when=\\\"matrix\\\" item=\\\"FormItem.item\\\"></matrix-item>\\n    <checkboxes-item\\n      ng-switch-when=\\\"checkboxes\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></checkboxes-item>\\n    <textarea-item\\n      ng-switch-when=\\\"textarea\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></textarea-item>\\n    <select-item\\n      ng-switch-when=\\\"chooseFromList\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></select-item>\\n    <p ng-switch-default>UNKNOWN TYPE</p>\\n  </div>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type != 'label' && FormItem.item.type != 'upload'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <md-checkbox ng-model=\\\"FormItem.item.config.required\\\"\\n      >Required field</md-checkbox\\n    >\\n  </md-input-container>\\n</div>\\n\";","export default \"<div>\\n  <form-item\\n    ng-repeat=\\\"item in container.form.items track by $index\\\"\\n    type=\\\"{{item.type}}\\\"\\n    item=\\\"item\\\"\\n    index=\\\"$index\\\"\\n    on-delete=\\\"container.delete(item, index)\\\"\\n    on-up=\\\"container.up(item, index)\\\"\\n    on-down=\\\"container.down(item, index)\\\"\\n  >\\n  </form-item>\\n</div>\\n\";","export default \"<div class=\\\"md-inline-form\\\">\\n  <div\\n    class=\\\"formItem\\\"\\n    ng-repeat=\\\"formItem in FormView.form.items track by $index\\\"\\n    ng-switch=\\\"formItem.type\\\"\\n    layout=\\\"column\\\"\\n  >\\n    <ng-form name=\\\"formItemForm\\\">\\n      <div>\\n        <div class=\\\"formItem-title\\\" ng-show=\\\"formItem.type !== 'label'\\\">{{formItem.props.title}}</div>\\n        <div class=\\\"formItem-help-text\\\">{{formItem.props.helpText}}</div>\\n\\n        <upload-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"upload\\\"\\n        ></upload-view>\\n        <agreement-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"agreement\\\"\\n        ></agreement-view>\\n        <checkboxes-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"checkboxes\\\"\\n        ></checkboxes-view>\\n        <radio-button-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"multipleChoices\\\"\\n        ></radio-button-view>\\n        <input-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"input\\\"\\n        ></input-view>\\n        <textarea-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"textarea\\\"\\n        ></textarea-view>\\n        <matrix-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"matrix\\\"\\n        ></matrix-view>\\n        <select-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"chooseFromList\\\"\\n        ></select-view>\\n        <label-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"label\\\"\\n        ></label-view>\\n      </div>\\n    </ng-form>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Input.item.config.placeholder\\\" />\\n</md-input-container>\\n<md-input-container class=\\\"md-block\\\">\\n  <label>Type</label>\\n  <md-select ng-model=\\\"Input.item.config.type\\\">\\n    <md-option value=\\\"text\\\">Text</md-option>\\n    <md-option value=\\\"number\\\">Number</md-option>\\n    <md-option value=\\\"email\\\">Email</md-option>\\n  </md-select>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <input\\n    ng-model=\\\"InputView.formItem.value\\\"\\n    type=\\\"{{InputView.formItem.config.type}}\\\"\\n    placeholder=\\\"{{InputView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"InputView.formItem.config.required\\\"\\n  />\\n  <div ng-messages=\\\"InputView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Text</label>\\n  <textarea ng-model=\\\"Label.item.value\\\"></textarea>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-content\\n    flex\\n    layout-padding\\n    layout=\\\"row\\\"\\n    layout-align=\\\"center center\\\"\\n    ng-bind-html=\\\"LabelView.sanitizedTitle\\\"\\n  >\\n  </md-content>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container columnContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.columns\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"column in Matrix.item.config.columns track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Column {{$index + 1}}</label>\\n      <input ng-model=\\\"column.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete column item\\\"\\n      ng-click=\\\"Matrix.deleteColumn($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add option item\\\"\\n      ng-click=\\\"Matrix.addColumn()\\\"\\n      >Add Column</md-button\\n    >\\n  </div>\\n</div>\\n\\n<div\\n  class=\\\"sortable-container rowContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.rows\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"row in Matrix.item.config.rows track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder row item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Row {{$index + 1}}</label>\\n      <input ng-model=\\\"row.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete row item\\\"\\n      ng-click=\\\"Matrix.deleteRow($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add row item\\\"\\n      ng-click=\\\"Matrix.addRow()\\\"\\n      >Add row</md-button\\n    >\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"matrix-container md-block\\\" layout=\\\"column\\\">\\n  <div class=\\\"matrix\\\">\\n    <div class=\\\"matrix-row\\\" flex layout=\\\"row\\\">\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\"></span>\\n      <span\\n        class=\\\"matrix-cell matrix-cell-header\\\"\\n        flex\\n        ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >{{column.value}}</span\\n      >\\n    </div>\\n    <div\\n      class=\\\"matrix-row\\\"\\n      ng-repeat=\\\"row in MatrixView.formItem.config.rows track by $index\\\"\\n      layout=\\\"row\\\"\\n    >\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\" layout=\\\"column\\\" layout-align=\\\"center\\\"\\n        >{{row.value}}</span\\n      >\\n      <md-radio-group\\n        ng-model=\\\"row.selected\\\"\\n        ng-change=\\\"MatrixView._updateValidity()\\\"\\n        flex\\n        layout=\\\"row\\\"\\n      >\\n        <span\\n          class=\\\"matrix-cell radio-button-cell\\\"\\n          flex\\n          ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >\\n          <md-radio-button\\n            value=\\\"{{column.value}}\\\"\\n            aria-label=\\\"...\\\"\\n          ></md-radio-button>\\n        </span>\\n      </md-radio-group>\\n    </div>\\n  </div>\\n\\n  <div ng-messages=\\\"MatrixView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"RadioButton.item.options\\\"\\n>\\n  <md-switch\\n    ng-model=\\\"RadioButton.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{RadioButton.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in RadioButton.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button md-warn\\\"\\n      ng-click=\\\"RadioButton.deleteOption($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"RadioButton.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-radio-group\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"RadioButtonView.formItem.config.required\\\"\\n    ng-model=\\\"RadioButtonView.formItem.value\\\"\\n    layout=\\\"{{RadioButtonView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n    required\\n  >\\n    <md-radio-button\\n      ng-repeat=\\\"option in RadioButtonView.formItem.options track by $index\\\"\\n      value=\\\"{{option.value}}\\\"\\n      aria-label=\\\"...\\\"\\n    >\\n      {{option.value}}\\n    </md-radio-button>\\n  </md-radio-group>\\n\\n  <div ng-messages=\\\"RadioButtonView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Select.item.options\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Select.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button md-warn\\\" ng-click=\\\"Select.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"Select.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-select\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"SelectView.formItem.config.required\\\"\\n    ng-model=\\\"SelectView.formItem.value\\\"\\n  >\\n    <md-option\\n      ng-repeat=\\\"option in SelectView.formItem.options track by $index\\\"\\n      ng-value=\\\"option.value\\\"\\n      >{{ option.value }}</md-option\\n    >\\n  </md-select>\\n  <div ng-messages=\\\"SelectView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Textarea.item.config.placeholder\\\" />\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <textarea\\n    ng-model=\\\"TextareaView.formItem.value\\\"\\n    placeholder=\\\"{{TextareaView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"TextareaView.formItem.config.required\\\"\\n  ></textarea>\\n  <div ng-messages=\\\"TextareaView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Upload.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Upload Button label</label>\\n    <input ng-model=\\\"Upload.item.config.uploadFileButtonLabel\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.multipleUpload\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Multiple\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <span>Max File size: {{Upload.item.config.size}} Mb</span>\\n    <input\\n      type=\\\"number\\\"\\n      id=\\\"size\\\"\\n      name=\\\"size\\\"\\n      min=\\\"0.1\\\"\\n      max=\\\"999\\\"\\n      step=\\\"0.1\\\"\\n      aria-label=\\\"size\\\"\\n      ng-model=\\\"Upload.item.config.size\\\"\\n    />\\n  </md-input-container>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max file size error message</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.sizeErrMessage\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.showAccept\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Configure allowed file types\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\" ng-if=\\\"Upload.item.config.showAccept\\\">\\n    <label>Allowed Types</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.accept\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n</div>\\n\";","export default \"<div layout=\\\"row\\\" class=\\\"option-item upload-item\\\">\\n  <md-input-container class=\\\"md-block\\\" style=\\\"margin: 0\\\">\\n    <input type=\\\"file\\\" class=\\\"ng-hide\\\" aria-label=\\\"file\\\" />\\n    <md-input-container flex class=\\\"md-block\\\">\\n      <input\\n        type=\\\"text\\\"\\n        ng-model=\\\"fileName\\\"\\n        class=\\\"ng-hide\\\"\\n        disabled\\n        aria-label=\\\"fileName\\\"\\n      />\\n    </md-input-container>\\n  </md-input-container>\\n\\n  <md-button class=\\\"md-raised md-accent upload-button\\\"\\n    ><md-icon class=\\\"material-icons\\\">attach_file</md-icon\\n    ><span\\n      >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\\n    ></md-button\\n  >\\n</div>\\n\\n<div>\\n  <label></label>\\n  <div\\n    style=\\\"display: grid; grid-template-columns: 8em auto; align-items: center\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in UploadView.formItem.options track by $index\\\"\\n  >\\n    <md-button ng-click=\\\"UploadView.removeItem($index)\\\" class=\\\"md-icon-button\\\">\\n      <md-icon class=\\\"material-icons\\\">close</md-icon>\\n    </md-button>\\n    <span>{{option.name}}</span>\\n  </div>\\n</div>\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import './index.scss'\nimport { UploadItem } from './directives/upload-item/upload-item.directive'\nimport { UploadView } from './directives/upload-item/upload-view.directive'\nimport { AgreementItem } from './directives/agreement-item/agreement-item.directive'\nimport { AgreementView } from './directives/agreement-item/agreement-view.directive'\nimport { MainController } from './main/main.controller'\nimport { Utils } from './utils/utils.service'\nimport { CheckboxesItem } from './directives/checkboxes-item/checkboxes-item.directive'\nimport { CheckboxesView } from './directives/checkboxes-item/checkboxes-view.directive'\nimport { FormItem } from './directives/form-item/form-item.directive'\nimport { FormItemsContainer } from './directives/form-items-container/form-items-container.directive'\nimport { FormView } from './directives/form-view/form-view.directive'\nimport { InputItem } from './directives/input-item/input-item.directive'\nimport { InputView } from './directives/input-item/input-view.directive'\nimport { LabelItem } from './directives/label-item/label-item.directive'\nimport { LabelView } from './directives/label-item/label-view.directive'\nimport { MatrixItem } from './directives/matrix-item/matrix-item.directive'\nimport { MatrixView } from './directives/matrix-item/matrix-view.directive'\nimport { RadioButtonItem } from './directives/radio-button-item/radio-button-item.directive'\nimport { RadioButtonView } from './directives/radio-button-item/radio-button-view.directive'\nimport { SelectView } from './directives/select-item/select-view.directive'\nimport { SelectItem } from './directives/select-item/select-item.directive'\nimport { TextareaItem } from './directives/textarea-item/textarea-item.directive'\nimport { TextareaView } from './directives/textarea-item/textarea-view.directive'\n\nexport default angular\n  .module('angularMaterialFormBuilder', [\n    'ngMaterial',\n    'angular-sortable-view',\n    'ngMessages',\n  ])\n  .service('Utils', Utils)\n  .controller('MainController', MainController)\n  .directive('uploadItem', UploadItem)\n  .directive('uploadView', UploadView)\n  .directive('agreementItem', AgreementItem)\n  .directive('agreementView', AgreementView)\n  .directive('checkboxesItem', CheckboxesItem)\n  .directive('checkboxesView', CheckboxesView)\n  .directive('formItem', FormItem)\n  .directive('formItemsContainer', FormItemsContainer)\n  .directive('formView', FormView)\n  .directive('inputItem', InputItem)\n  .directive('inputView', InputView)\n  .directive('labelItem', LabelItem)\n  .directive('labelView', LabelView)\n  .directive('matrixItem', MatrixItem)\n  .directive('matrixView', MatrixView)\n  .directive('radioButtonItem', RadioButtonItem)\n  .directive('radioButtonView', RadioButtonView)\n  .directive('selectItem', SelectItem)\n  .directive('selectView', SelectView)\n  .directive('textareaItem', TextareaItem)\n  .directive('textareaView', TextareaView)\n"],"names":["AgreementItemCtrl","Utils","$element","Element","item","extend","config","maxSelections","options","value","selected","AgreementItem","constructor","restrict","scope","controller","controllerAs","bindToController","AgreementViewCtrl","$scope","Scope","formItem","init","selectedOptions","_getSelectedOptions","disableOptions","isValid","_updateView","_updateValidity","isPreview","_enableWatchers","toggleSelectedOption","filter","option","length","required","form","$setValidity","$watch","newVal","undefined","AgreementViewTemplate","AgreementView","$timeout","template","link","element","attrs","ctrl","CheckboxesItemCtrl","deleteOption","index","splice","addOption","push","setTimeout","find","addedOption","focus","CheckboxesItemTemplate","CheckboxesItem","directive","CheckboxesViewCtrl","CheckboxesViewTemplate","CheckboxesView","DEFAULT_TITLE","upload","agreement","input","chooseFromList","label","multipleChoices","matrix","checkboxes","textarea","FormItemCtrl","$attrs","Attrs","templates","type","props","title","helpText","deleteClicked","onDelete","_getItemTemplate","prefix","suffix","FormItemTemplate","FormItem","$compile","onUp","onDown","el","FormItemsContainerCtrl","items","delete","up","prevItem","down","nextItem","FormItemsContainerTemplate","FormItemsContainer","FormViewCtrl","FormViewTemplate","FormView","InputItemCtrl","InputItemTemplate","InputItem","InputViewCtrl","InputViewTemplate","InputView","elem","LabelItemCtrl","LabelItemTemplate","LabelItem","LabelViewCtrl","$sce","sanitizedTitle","trustAsHtml","LabelViewTemplate","LabelView","MatrixItemCtrl","$document","RowContainer","angular","querySelector","ColumnContainer","rows","columns","deleteRow","addRow","bind","deleteColumn","addColumn","MatrixItemTemplate","MatrixItem","MatrixViewCtrl","valid","some","row","$watchGroup","MatrixViewTemplate","MatrixView","RadioButtonItemCtrl","RadioButtonTemplate","RadioButtonItem","RadioButtonViewCtrl","RadioButtonViewTemplate","RadioButtonView","SelectItemCtrl","SelectTemplate","SelectItem","SelectViewCtrl","SelectViewTemplate","SelectView","TextareaItemCtrl","TextareaItemTemplate","TextareaItem","TextareaViewCtrl","TextareaViewTemplate","TextareaView","UploadItemCtrl","UploadItemTemplate","UploadItem","UploadViewCtrl","isMultiple","showAllowed","size","uploadFileButtonLabel","_updateMultiple","multipleUpload","attr","removeAttr","_updateAccept","showAccept","setAttribute","accept","removeAttribute","removeItem","UploadViewTemplate","MB","UploadView","button","css","on","trigger","click","e","$apply","files","Array","from","target","maxSizeMB","exceedsSize","file","text","sizeErrMessage","map","name","MainController","addItem","dest","src","Object","keys","reduce","result","key","module","service"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"angular-material-form-builder.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,iBAAT,CAA2BC,KAA3B,EAAkCC,QAAlC,EAA4C;AAC1C,OAAKC,OAAL,GAAeD,QAAf;AACA,OAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,IAAAA,MAAM,EAAE;AACNC,MAAAA,aAAa,EAAE;AADT,KADgC;AAIxCC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,EADT;AAEEC,MAAAA,QAAQ,EAAE;AAFZ,KADO;AAJ+B,GAA9B,CAAZ;AAWD;;;;;;;;;;;;;;;;;CClBD;;AAEA;AACA;AACA;;AACA,MAAMC,aAAN,CAAoB;AAClB;AACF;AACA;AACEC,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBf,yEAAlB;AACA,SAAKgB,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAZiB;;;;;;;;;;;;;;;;;ACNpB,MAAMC,iBAAN,CAAwB;AACtB;AACF;AACA;AACA;AACA;AACEN,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgB;AACzB,SAAKmB,KAAL,GAAaD,MAAb;AACA,SAAKlB,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAL,IAAiB,EAAnC,EAAuC;AACrDf,MAAAA,MAAM,EAAE,EAD6C;AAErDE,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE,EADT;AAEEC,QAAAA,QAAQ,EAAE;AAFZ,OADO;AAF4C,KAAvC,CAAhB;AAUA,SAAKa,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;AACA,SAAKC,cAAL,GAAsB,KAAtB;AAEA,SAAKC,OAAL,GAAe,IAAf;;AACA,SAAKC,WAAL;;AACA,SAAKC,eAAL;;AACA,QAAI,KAAKC,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAKR,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;;AACA,SAAKG,WAAL;;AACA,SAAKC,eAAL;AACD;;AAEDJ,EAAAA,mBAAmB,GAAG;AACpB,WAAO,KAAKH,QAAL,CAAcb,OAAd,CAAsBwB,MAAtB,CAA8BC,MAAD,IAAY;AAC9C,aAAOA,MAAM,CAACvB,QAAd;AACD,KAFM,CAAP;AAGD;;AAEDiB,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAKN,QAAL,CAAcf,MAAd,CAAqBC,aAA1B,EAAyC;AACvC,WAAKkB,cAAL,GAAsB,KAAtB;AACD,KAFD,MAEO,IACL,KAAKF,eAAL,CAAqBW,MAArB,KAAgC,KAAKb,QAAL,CAAcf,MAAd,CAAqBC,aADhD,EAEL;AACA,WAAKkB,cAAL,GAAsB,IAAtB;AACD,KAJM,MAIA;AACL,WAAKA,cAAL,GAAsB,KAAtB;AACD;AACF;;AAEDG,EAAAA,eAAe,GAAG;AAChB,QAAI,KAAKP,QAAL,CAAcf,MAAd,CAAqB6B,QAAzB,EAAmC;AACjC,WAAKT,OAAL,GAAe,KAAKH,eAAL,CAAqBW,MAArB,GAA8B,CAA7C;AACD,KAFD,MAEO;AACL,WAAKR,OAAL,GAAe,IAAf;AACD;;AAED,SAAKU,IAAL,CAAUC,YAAV,CAAuB,eAAvB,EAAwC,KAAKX,OAA7C;AACD;;AAEDI,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWkB,MAAX,CAAkB,wCAAlB,EAA6DC,MAAD,IAAY;AACtE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKb,WAAL;;AACA,aAAKC,eAAL;AACD;AACF,KALD;AAMD;;AA3EqB;;;;;;;;;;;;;;;;;;;ACAxB;AACA;;AAEA,MAAMc,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACE9B,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBH,gEAAhB;AACA,SAAK5B,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkBG,yEAAlB;AACA,SAAKF,YAAL,GAAoB,eAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCiB;;;;;;;;;;;;;;;;;ACHpB,MAAM2B,kBAAN,CAAyB;AACvB;AACF;AACA;AACA;AACA;AACA;AACErC,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AACNC,QAAAA,aAAa,EAAE;AADT,OADgC;AAIxCC,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE,EADT;AAEEC,QAAAA,QAAQ,EAAE;AAFZ,OADO;AAJ+B,KAA9B,CAAZ;AAWD;;AAEDwC,EAAAA,YAAY,CAACC,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUI,OAAV,CAAkB4C,MAAlB,CAAyBD,KAAzB,EAAgC,CAAhC;AACD;;AAEDE,EAAAA,SAAS,GAAG;AACV,SAAKjD,IAAL,CAAUI,OAAV,CAAkB8C,IAAlB,CAAuB;AACrB7C,MAAAA,KAAK,EAAE,EADc;AAErBC,MAAAA,QAAQ,EAAE;AAFW,KAAvB,EADU,CAKV;;AACA6C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKL,OAAL,CAAaqD,IAAb,CAAkB,OAAlB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AArCsB;;;;;;;;;;;;;;;;;;;ACAzB;AACA;AAEA;AACA;AACA;;AACA,SAASE,cAAT,GAA0B;AACxB,QAAMC,SAAS,GAAG;AAChBhD,IAAAA,QAAQ,EAAE,GADM;AAEhB+B,IAAAA,QAAQ,EAAEe,iEAFM;AAGhB7C,IAAAA,KAAK,EAAE;AACLV,MAAAA,IAAI,EAAE;AADD,KAHS;AAMhBW,IAAAA,UAAU,EAAEkC,2EANI;AAOhBjC,IAAAA,YAAY,EAAE,YAPE;AAQhBC,IAAAA,gBAAgB,EAAE;AARF,GAAlB;AAWA,SAAO4C,SAAP;AACD;;;;;;;;;;;;;;;;ACnBD,MAAMC,kBAAN,CAAyB;AACvB;AACF;AACA;AACA;AACA;AACElD,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgB;AACzB,SAAKmB,KAAL,GAAaD,MAAb;AACA,SAAKlB,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAL,IAAiB,EAAnC,EAAuC;AACrDf,MAAAA,MAAM,EAAE,EAD6C;AAErDE,MAAAA,OAAO,EAAE;AAF4C,KAAvC,CAAhB;AAKA,SAAKe,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;AACA,SAAKC,cAAL,GAAsB,KAAtB;AAEA,SAAKC,OAAL,GAAe,IAAf;;AACA,SAAKC,WAAL;;AACA,SAAKC,eAAL;;AACA,QAAI,KAAKC,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,SAAKR,eAAL,GAAuB,KAAKC,mBAAL,EAAvB;;AACA,SAAKG,WAAL;;AACA,SAAKC,eAAL;AACD;;AAEDJ,EAAAA,mBAAmB,GAAG;AACpB,WAAO,KAAKH,QAAL,CAAcb,OAAd,CAAsBwB,MAAtB,CAA8BC,MAAD,IAAY;AAC9C,aAAOA,MAAM,CAACvB,QAAd;AACD,KAFM,CAAP;AAGD;;AAEDiB,EAAAA,WAAW,GAAG;AACZ,QAAI,CAAC,KAAKN,QAAL,CAAcf,MAAd,CAAqBC,aAA1B,EAAyC;AACvC,WAAKkB,cAAL,GAAsB,KAAtB;AACD,KAFD,MAEO,IACL,KAAKF,eAAL,CAAqBW,MAArB,KAAgC,KAAKb,QAAL,CAAcf,MAAd,CAAqBC,aADhD,EAEL;AACA,WAAKkB,cAAL,GAAsB,IAAtB;AACD,KAJM,MAIA;AACL,WAAKA,cAAL,GAAsB,KAAtB;AACD;AACF;;AAEDG,EAAAA,eAAe,GAAG;AAChB,QAAI,KAAKP,QAAL,CAAcf,MAAd,CAAqB6B,QAAzB,EAAmC;AACjC,WAAKT,OAAL,GAAe,KAAKH,eAAL,CAAqBW,MAArB,GAA8B,CAA7C;AACD,KAFD,MAEO;AACL,WAAKR,OAAL,GAAe,IAAf;AACD;;AAED,SAAKU,IAAL,CAAUC,YAAV,CAAuB,eAAvB,EAAwC,KAAKX,OAA7C;AACD;;AAEDI,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWkB,MAAX,CAAkB,yCAAlB,EAA8DC,MAAD,IAAY;AACvE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKb,WAAL;;AACA,aAAKC,eAAL;AACD;AACF,KALD;AAMD;;AAtEsB;;;;;;;;;;;;;;;;;;;ACAzB;AACA;AAEA;AACA;AACA;;AACA,MAAMoC,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACEpD,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBmB,iEAAhB;AACA,SAAKjD,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkB+C,2EAAlB;AACA,SAAK9C,YAAL,GAAoB,gBAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCkB;;;;;;;;;;;;;;;;;ACNrB,MAAM2C,aAAa,GAAG;AACpBC,EAAAA,MAAM,EAAE,YADY;AAEpBC,EAAAA,SAAS,EAAE,WAFS;AAGpBC,EAAAA,KAAK,EAAE,OAHa;AAIpBC,EAAAA,cAAc,EAAE,QAJI;AAKpBC,EAAAA,KAAK,EAAE,OALa;AAMpBC,EAAAA,eAAe,EAAE,QANG;AAOpBC,EAAAA,MAAM,EAAE,QAPY;AAQpBC,EAAAA,UAAU,EAAE,SARQ;AASpBC,EAAAA,QAAQ,EAAE;AATU,CAAtB;;AAYA,MAAMC,YAAN,CAAmB;AACjB;AACF;AACA;AACA;AACA;AACA;AACE/D,EAAAA,WAAW,CAACO,MAAD,EAASyD,MAAT,EAAiB3E,KAAjB,EAAwB;AACjC,SAAK4E,KAAL,GAAaD,MAAb;AACA,SAAK3E,KAAL,GAAaA,KAAb;AACA,SAAK6E,SAAL,GAAiB;AACfZ,MAAAA,MAAM,EAAE,kDADO;AAEfC,MAAAA,SAAS,EAAE,wDAFI;AAGfC,MAAAA,KAAK,EAAE,gDAHQ;AAIfC,MAAAA,cAAc,EACZ,8EALa;AAMfC,MAAAA,KAAK,EAAE,gDANQ;AAOfC,MAAAA,eAAe,EACb,8DARa;AASfC,MAAAA,MAAM,EAAE,kDATO;AAUfC,MAAAA,UAAU,EAAE,0DAVG;AAWfC,MAAAA,QAAQ,EAAE;AAXK,KAAjB;AAaA,SAAKtE,IAAL,GAAY,EAAZ;AACA,SAAKU,KAAL,GAAaK,MAAb;AACD;;AAEDG,EAAAA,IAAI,GAAG;AACL,SAAKlB,IAAL,GAAY,KAAKH,KAAL,CAAWI,MAAX,CAAkB,KAAKD,IAAL,IAAa,EAA/B,EAAmC;AAC7C2E,MAAAA,IAAI,EAAE,KAAKF,KAAL,CAAWE,IAD4B;AAE7CC,MAAAA,KAAK,EAAE;AACLC,QAAAA,KAAK,EAAEhB,aAAa,CAAC,KAAKY,KAAL,CAAWE,IAAZ,CADf;AAELG,QAAAA,QAAQ,EAAE;AAFL,OAFsC;AAM7C5E,MAAAA,MAAM,EAAE;AACN6B,QAAAA,QAAQ,EAAE;AADJ;AANqC,KAAnC,CAAZ;AAUD;;AAEDgD,EAAAA,aAAa,GAAG;AACd,SAAKC,QAAL,CAAc;AAAEhF,MAAAA,IAAI,EAAE,KAAKA,IAAb;AAAmB+C,MAAAA,KAAK,EAAE,KAAKA,KAAL;AAA1B,KAAd;AACD;AAED;AACF;AACA;AACA;;;AACEkC,EAAAA,gBAAgB,CAACN,IAAD,EAAO;AACrB,UAAMO,MAAM,GACV,KACA,mCADA,GAEA,iCAFA,GAGA,oGAHA,GAIA,wDAJA,GAKA,cALA,GAMA,qIANA,GAOA,+DAPA,GAQA,cARA,GASA,yIATA,GAUA,iEAVA,GAWA,cAXA,GAYA,QAZA,GAaA,sBAbA,GAcA,4BAdA,GAeA,+CAfA,GAgBA,uBAhBA,GAiBA,sBAjBA,GAkBA,0BAlBA,GAmBA,mDAnBA,GAoBA,uBArBF;AAuBA,UAAMC,MAAM,GACV,KACA,sBADA,GAEA,oFAFA,GAGA,uBAHA,GAIA,QALF;AAOA,WAAOD,MAAM,GAAG,KAAKR,SAAL,CAAeC,IAAf,CAAT,GAAgCQ,MAAvC;AACD;;AAhFgB;;;;;;;;;;;;;;;;;;;ACZnB;AACA;AAEA;AACA;AACA;;AACA,MAAME,QAAN,CAAe;AACb;AACF;AACA;AACA;AACE7E,EAAAA,WAAW,CAAC8E,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK7E,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE,GADK;AAEXgF,MAAAA,QAAQ,EAAE,GAFC;AAGXO,MAAAA,IAAI,EAAE,GAHK;AAIXC,MAAAA,MAAM,EAAE,GAJG;AAKXzC,MAAAA,KAAK,EAAE;AALI,KAAb;AAOA,SAAKpC,UAAL,GAAkB4D,+DAAlB;AACA,SAAK3D,YAAL,GAAoB,UAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACA,SAAK2B,QAAL,GAAgB4C,2DAAhB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE3C,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC,UAAMJ,QAAQ,GAAGI,IAAI,CAACqC,gBAAL,CAAsBtC,KAAK,CAACgC,IAA5B,CAAjB;;AACA,UAAMc,EAAE,GAAG,KAAKH,QAAL,CAAc9C,QAAd,EAAwB9B,KAAxB,CAAX,CAFgC,CAGhC;AACA;AACA;;AACAkC,IAAAA,IAAI,CAAC1B,IAAL;AACA,WAAOuE,EAAP;AACD;;AArCY;;;;;;;;;;;;;;;;;ACNf,MAAMC,sBAAN,CAA6B;AAC3B;AACF;AACA;AACElF,EAAAA,WAAW,GAAG;AACZ;AACJ;AACA;AACI,SAAKwB,IAAL,GAAY;AACV2D,MAAAA,KAAK,EAAE;AADG,KAAZ;AAGD;AAED;AACF;AACA;AACA;AACA;;;AACEC,EAAAA,MAAM,CAAC5F,IAAD,EAAO+C,KAAP,EAAc;AAClB,SAAKf,IAAL,CAAU2D,KAAV,CAAgB3C,MAAhB,CAAuBD,KAAvB,EAA8B,CAA9B;AACD;AAED;AACF;AACA;AACA;AACA;;;AACE8C,EAAAA,EAAE,CAAC7F,IAAD,EAAO+C,KAAP,EAAc;AACd,QAAIA,KAAK,KAAK,CAAd,EAAiB;AACf,YAAM+C,QAAQ,GAAG,KAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyB+C,QAAzB;AACA,WAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;AACE+F,EAAAA,IAAI,CAAC/F,IAAD,EAAO+C,KAAP,EAAc;AAChB,QAAIA,KAAK,KAAK,KAAKf,IAAL,CAAU2D,KAAV,CAAgB7D,MAAhB,GAAyB,CAAvC,EAA0C;AACxC,YAAMkE,QAAQ,GAAG,KAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyBiD,QAAzB;AACA,WAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;;AA9C0B;;;;;;;;;;;;;;;;;;;ACA7B;AACA;AAEA;AACA;AACA;;AACA,MAAMkG,kBAAN,CAAyB;AACvB;AACF;AACA;AACE1F,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXsB,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKQ,QAAL,GAAgByD,sEAAhB;AACA,SAAKtF,UAAL,GAAkB+E,oFAAlB;AACA,SAAK9E,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbsB;;;;;;;;;;;;;;;;;ACNzB,MAAMsF,YAAN,CAAmB;AACjB;AACF;AACA;AACA;AACE3F,EAAAA,WAAW,CAACO,MAAD,EAAS;AAClB,SAAKC,KAAL,GAAaD,MAAb;AACD;;AAEDG,EAAAA,IAAI,GAAG,CAAE;;AATQ;;;;;;;;;;;;;;;;;;;ACAnB;AACA;AAEA;AACA;AACA;;AACA,MAAMmF,QAAN,CAAe;AACb;AACF;AACA;AACE7F,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB4D,2DAAhB;AACA,SAAK1F,KAAL,GAAa;AACXsB,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKrB,UAAL,GAAkBwF,+DAAlB;AACA,SAAKvF,YAAL,GAAoB,UAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChCA,IAAAA,IAAI,CAAC1B,IAAL;AACD;;AAzBY;;;;;;;;;;;;;;;;;ACNf,MAAMoF,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACA;AACE9F,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AAEA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AACNyE,QAAAA,IAAI,EAAE;AADA;AADgC,KAA9B,CAAZ;AAKD;;AAdiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAM6B,SAAN,CAAgB;AACd;AACF;AACA;AACEhG,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB+D,4DAAhB;AACA,SAAK7F,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkB2F,iEAAlB;AACA,SAAK1F,YAAL,GAAoB,OAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAba;;;;;;;;;;;;;;;;;ACNhB,MAAM4F,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACEjG,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKrB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Bf,MAAAA,MAAM,EAAE;AADuB,KAAjC;AAGD;;AAdiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAMyG,SAAN,CAAgB;AACd;AACF;AACA;AACA;AACEnG,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBkE,4DAAhB;AACA,SAAKhG,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXe,MAAAA,IAAI,EAAE;AAFK,KAAb;AAIA,SAAKrB,UAAL,GAAkB8F,iEAAlB;AACA,SAAK7F,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AA/Ba;;;;;;;;;;;;;;;;;ACNhB,MAAM2F,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACErG,EAAAA,WAAW,CAACV,QAAD,EAAW;AACpB,SAAKC,OAAL,GAAeD,QAAf;AACD;;AAPiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAMiH,SAAN,CAAgB;AACdvG,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBsE,4DAAhB;AACA,SAAKpG,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBkG,iEAAlB;AACA,SAAKjG,YAAL,GAAoB,OAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAVa;;;;;;;;;;;;;;;;ACNhB,MAAMmG,aAAN,CAAoB;AAClB;AACF;AACA;AACA;AACA;AACExG,EAAAA,WAAW,CAACX,KAAD,EAAQoH,IAAR,EAAc;AACvB,SAAKpH,KAAL,GAAaA,KAAb;AACA,SAAKoH,IAAL,GAAYA,IAAZ;AACD;;AAED/F,EAAAA,IAAI,GAAG;AACL,SAAKrB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC,EAAjC;AACD;;AAEiB,MAAdiG,cAAc,GAAG;AACnB,WAAO,KAAKD,IAAL,CAAUE,WAAV,CAAsB,KAAKlG,QAAL,CAAcZ,KAApC,CAAP;AACD;;AAjBiB;;;;;;;;;;;;;;;;;;;ACApB;AACA;AAEA;AACA;AACA;;AACA,MAAMgH,SAAN,CAAgB;AACd;AACF;AACA;AACA;AACE7G,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB4E,4DAAhB;AACA,SAAK1G,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXe,MAAAA,IAAI,EAAE;AAFK,KAAb;AAIA,SAAKrB,UAAL,GAAkBqG,iEAAlB;AACA,SAAKpG,YAAL,GAAoB,WAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AA/Ba;;;;;;;;;;;;;;;;;ACNhB,MAAMoG,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACE9G,EAAAA,WAAW,CAACX,KAAD,EAAQ0H,SAAR,EAAmB;AAC5B,SAAKC,YAAL,GAAoBC,OAAO,CAAC/E,OAAR,CAClB6E,SAAS,CAAC,CAAD,CAAT,CAAaG,aAAb,CAA2B,eAA3B,CADkB,CAApB;AAGA,SAAKC,eAAL,GAAuBF,OAAO,CAAC/E,OAAR,CACrB6E,SAAS,CAAC,CAAD,CAAT,CAAaG,aAAb,CAA2B,kBAA3B,CADqB,CAAvB;AAIA,SAAK1H,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AACN0H,QAAAA,IAAI,EAAE,CACJ;AACEvH,UAAAA,KAAK,EAAE;AADT,SADI,CADA;AAMNwH,QAAAA,OAAO,EAAE,CACP;AACExH,UAAAA,KAAK,EAAE;AADT,SADO;AANH;AADgC,KAA9B,CAAZ;AAcD;AAED;AACF;AACA;AACA;;;AACEyH,EAAAA,SAAS,CAAC/E,KAAD,EAAQ;AACf,SAAK/C,IAAL,CAAUE,MAAV,CAAiB0H,IAAjB,CAAsB5E,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AAEDgF,EAAAA,MAAM,GAAG;AACP,SAAK/H,IAAL,CAAUE,MAAV,CAAiB0H,IAAjB,CAAsB1E,IAAtB,CAA2B;AACzB7C,MAAAA,KAAK,EAAE;AADkB,KAA3B;AAIA8C,IAAAA,UAAU,CACR,YAAY;AACV,YAAM/C,OAAO,GAAG,KAAKoH,YAAL,CAAkBpE,IAAlB,CAAuB,OAAvB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJD,CAIE0E,IAJF,CAIO,IAJP,CADQ,EAMR,CANQ,CAAV;AAQD;AAED;AACF;AACA;AACA;;;AACEC,EAAAA,YAAY,CAAClF,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUE,MAAV,CAAiB2H,OAAjB,CAAyB7E,MAAzB,CAAgCD,KAAhC,EAAuC,CAAvC;AACD;;AAEDmF,EAAAA,SAAS,GAAG;AACV,SAAKlI,IAAL,CAAUE,MAAV,CAAiB2H,OAAjB,CAAyB3E,IAAzB,CAA8B;AAC5B7C,MAAAA,KAAK,EAAE;AADqB,KAA9B;AAIA8C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKuH,eAAL,CAAqBvE,IAArB,CAA0B,OAA1B,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AAvEkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAM8E,UAAN,CAAiB;AACf;AACF;AACA;AACE5H,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB2F,6DAAhB;AACA,SAAKzH,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkB2G,mEAAlB;AACA,SAAK1G,YAAL,GAAoB,QAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbc;;;;;;;;;;;;;;;;;ACNjB,MAAMwH,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACE7H,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgB;AACzB,SAAKmB,KAAL,GAAaD,MAAb;AACA,SAAKlB,KAAL,GAAaA,KAAb;AACA,SAAKyB,OAAL,GAAe,IAAf;AACA,SAAKL,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE;AACN0H,QAAAA,IAAI,EAAE,EADA;AAENC,QAAAA,OAAO,EAAE;AAFH;AADuC,KAAjC,CAAhB;;AAOA,SAAKrG,eAAL;;AACA,QAAI,KAAKC,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AAEDF,EAAAA,eAAe,GAAG;AAChB,QAAI8G,KAAK,GAAG,IAAZ;;AACA,QAAI,KAAKrH,QAAL,CAAcf,MAAd,CAAqB6B,QAAzB,EAAmC;AACjCuG,MAAAA,KAAK,GAAG,CAAC,KAAKrH,QAAL,CAAcf,MAAd,CAAqB0H,IAArB,CAA0BW,IAA1B,CACNC,GAAD,IAAS,OAAOA,GAAG,CAAC,UAAD,CAAV,KAA2B,WAD7B,CAAT,CADiC,CAIjC;AACA;AACA;AACA;AACA;AACA;AACD;;AAED,SAAKlH,OAAL,GAAegH,KAAf;AACA,SAAKtG,IAAL,CAAUC,YAAV,CAAuB,UAAvB,EAAmC,KAAKX,OAAxC;AACD;;AAEDI,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWyH,WAAX,CACE,CACE,qCADF,EAEE,wCAFF,CADF,EAKGtG,MAAD,IAAY;AACV,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKZ,eAAL;AACD;AACF,KATH;AAWD;;AAzDkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AAEA,MAAMmH,UAAN,CAAiB;AACf;AACF;AACA;AACA;AACEnI,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBkG,6DAAhB;AACA,SAAKhI,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkB0H,mEAAlB;AACA,SAAKzH,YAAL,GAAoB,YAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCc;;;;;;;;;;;;;;;;;ACPjB,MAAM0H,mBAAN,CAA0B;AACxB;AACF;AACA;AACA;AACA;AACEpI,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE,EADgC;AAExCE,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE;AADT,OADO;AAF+B,KAA9B,CAAZ;AAQD;;AAEDyC,EAAAA,YAAY,CAACC,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUI,OAAV,CAAkB4C,MAAlB,CAAyBD,KAAzB,EAAgC,CAAhC;AACD;;AAEDE,EAAAA,SAAS,GAAG;AACV,SAAKjD,IAAL,CAAUI,OAAV,CAAkB8C,IAAlB,CAAuB;AACrB7C,MAAAA,KAAK,EAAE;AADc,KAAvB;AAIA8C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKL,OAAL,CAAaqD,IAAb,CAAkB,OAAlB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AAhCuB;;;;;;;;;;;;;;;;;;;ACA1B;AACA;AAEA;AACA;AACA;;AAEA,MAAMwF,eAAN,CAAsB;AACpB;AACF;AACA;AACEtI,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBqG,mEAAhB;AACA,SAAKnI,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBiI,8EAAlB;AACA,SAAKhI,YAAL,GAAoB,aAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbmB;;;;;;;;;;;;;;;;;ACPtB,MAAMkI,mBAAN,CAA0B;AACxB;AACF;AACA;AACA;AACEvI,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE,EADuC;AAE/CE,MAAAA,OAAO,EAAE;AAFsC,KAAjC,CAAhB;AAID;;AAfuB;;;;;;;;;;;;;;;;;;;ACA1B;AACA;;AAEA,MAAM6I,eAAN,CAAsB;AACpB;AACF;AACA;AACA;AACEzI,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBwG,mEAAhB;AACA,SAAKtI,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkBoI,8EAAlB;AACA,SAAKnI,YAAL,GAAoB,iBAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAhCmB;;;;;;;;;;;;;;;;;ACHtB,MAAMgI,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACE1I,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE,EADgC;AAExCE,MAAAA,OAAO,EAAE,CACP;AACEC,QAAAA,KAAK,EAAE;AADT,OADO;AAF+B,KAA9B,CAAZ;AAQD;AAED;AACF;AACA;AACA;;;AACEyC,EAAAA,YAAY,CAACC,KAAD,EAAQ;AAClB,SAAK/C,IAAL,CAAUI,OAAV,CAAkB4C,MAAlB,CAAyBD,KAAzB,EAAgC,CAAhC;AACD;;AAEDE,EAAAA,SAAS,GAAG;AACV,SAAKjD,IAAL,CAAUI,OAAV,CAAkB8C,IAAlB,CAAuB;AACrB7C,MAAAA,KAAK,EAAE;AADc,KAAvB;AAIA8C,IAAAA,UAAU,CAAC,MAAM;AACf,YAAM/C,OAAO,GAAG,KAAKL,OAAL,CAAaqD,IAAb,CAAkB,OAAlB,CAAhB;AACA,YAAMC,WAAW,GAAGjD,OAAO,CAACA,OAAO,CAAC0B,MAAR,GAAiB,CAAlB,CAA3B;AACAuB,MAAAA,WAAW,CAACC,KAAZ;AACD,KAJS,EAIP,CAJO,CAAV;AAKD;;AApCkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAM8F,UAAN,CAAiB;AACf;AACF;AACA;AACE5I,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB2G,6DAAhB;AACA,SAAKzI,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBuI,mEAAlB;AACA,SAAKtI,YAAL,GAAoB,QAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbc;;;;;;;;;;;;;;;;;ACNjB,MAAMwI,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACE7I,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE,EADuC;AAE/CE,MAAAA,OAAO,EAAE;AAFsC,KAAjC,CAAhB;AAID;;AAfkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAMmJ,UAAN,CAAiB;AACf;AACF;AACA;AACA;AACE/I,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AAEA,SAAK9B,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgB8G,6DAAhB;AACA,SAAK5I,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkB0I,mEAAlB;AACA,SAAKzI,YAAL,GAAoB,YAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AAjCc;;;;;;;;;;;;;;;;;ACNjB,MAAMsI,gBAAN,CAAuB;AACrB;AACF;AACA;AACA;AACA;AACEhJ,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AAEA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE;AADgC,KAA9B,CAAZ;AAGD;;AAZoB;;;;;;;;;;;;;;;;;;;ACAvB;AACA;AAEA;AACA;AACA;;AACA,MAAMwJ,YAAN,CAAmB;AACjB;AACF;AACA;AACElJ,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBiH,+DAAhB;AACA,SAAK/I,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkB6I,uEAAlB;AACA,SAAK5I,YAAL,GAAoB,UAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbgB;;;;;;;;;;;;;;;;;ACNnB,MAAM8I,gBAAN,CAAuB;AACrB;AACF;AACA;AACA;AACEnJ,EAAAA,WAAW,CAACX,KAAD,EAAQ;AACjB,SAAKA,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AAEDC,EAAAA,IAAI,GAAG;AACL,SAAKD,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAvB,EAAiC;AAC/Cf,MAAAA,MAAM,EAAE;AADuC,KAAjC,CAAhB;AAGD;;AAdoB;;;;;;;;;;;;;;;;;;;ACAvB;AACA;AAEA;AACA;AACA;;AAEA,MAAM2J,YAAN,CAAmB;AACjB;AACF;AACA;AACA;AACErJ,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAK7B,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXe,MAAAA,IAAI,EAAE;AAFK,KAAb;AAIA,SAAKvB,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBoH,+DAAhB;AACA,SAAKjJ,UAAL,GAAkBgJ,uEAAlB;AACA,SAAK/I,YAAL,GAAoB,cAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQkG,IAAR,EAAcjE,KAAd,EAAqBC,IAArB,EAA2B;AAC7B;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAGD;;AA/BgB;;;;;;;;;;;;;;;;;ACPnB,MAAM4I,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACEtJ,EAAAA,WAAW,CAACX,KAAD,EAAQC,QAAR,EAAkB;AAC3B,SAAKC,OAAL,GAAeD,QAAf;AACA,SAAKE,IAAL,GAAYH,KAAK,CAACI,MAAN,CAAa,KAAKD,IAAL,IAAa,EAA1B,EAA8B;AACxCE,MAAAA,MAAM,EAAE,EADgC;AAExCE,MAAAA,OAAO,EAAE;AAF+B,KAA9B,CAAZ;AAID;;AAbkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA;AACA;AACA;;AACA,MAAM4J,UAAN,CAAiB;AACf;AACF;AACA;AACExJ,EAAAA,WAAW,GAAG;AACZ,SAAKC,QAAL,GAAgB,GAAhB;AACA,SAAK+B,QAAL,GAAgBuH,6DAAhB;AACA,SAAKrJ,KAAL,GAAa;AACXV,MAAAA,IAAI,EAAE;AADK,KAAb;AAGA,SAAKW,UAAL,GAAkBmJ,mEAAlB;AACA,SAAKlJ,YAAL,GAAoB,QAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;;AAbc;;;;;;;;;;;;;;;;;ACNjB,MAAMoJ,cAAN,CAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACEzJ,EAAAA,WAAW,CAACO,MAAD,EAASlB,KAAT,EAAgBC,QAAhB,EAA0B;AACnC,SAAKkB,KAAL,GAAaD,MAAb;AACA,SAAKhB,OAAL,GAAeD,QAAf;AACA,SAAKD,KAAL,GAAaA,KAAb;AACA,SAAKoB,QAAL,GAAgB,EAAhB;AACD;;AACDC,EAAAA,IAAI,GAAG;AACL,SAAKgJ,UAAL,GAAkB,KAAlB;AACA,SAAKC,WAAL,GAAmB,KAAnB;AACA,SAAKlJ,QAAL,GAAgB,KAAKpB,KAAL,CAAWI,MAAX,CAAkB,KAAKgB,QAAL,IAAiB,EAAnC,EAAuC;AACrDf,MAAAA,MAAM,EAAE;AACNkK,QAAAA,IAAI,EAAE,EADA;AAENC,QAAAA,qBAAqB,EAAE;AAFjB,OAD6C;AAKrDjK,MAAAA,OAAO,EAAE;AAL4C,KAAvC,CAAhB;;AAOA,QAAI,KAAKqB,SAAL,EAAJ,EAAsB;AACpB,WAAKC,eAAL;AACD;AACF;;AACD4I,EAAAA,eAAe,GAAG;AAChB,SAAKJ,UAAL,GAAkB,CAAC,CAAC,KAAKjJ,QAAL,CAAcf,MAAd,CAAqBqK,cAAzC;AACA,UAAMvG,KAAK,GAAGyD,OAAO,CAAC/E,OAAR,CACZ,KAAK3C,OAAL,CAAa,CAAb,EAAgB2H,aAAhB,CAA8B,kBAA9B,CADY,CAAd;;AAGA,QAAI1D,KAAJ,EAAW;AACT,WAAK/C,QAAL,CAAcb,OAAd,GAAwB,EAAxB;;AACA,UAAI,KAAK8J,UAAT,EAAqB;AACnBlG,QAAAA,KAAK,CAACwG,IAAN,CAAW,UAAX,EAAuB,UAAvB;AACD,OAFD,MAEO;AACLxG,QAAAA,KAAK,CAACyG,UAAN,CAAiB,UAAjB;AACD;AACF;AACF;;AAEDC,EAAAA,aAAa,GAAG;AACd,SAAKP,WAAL,GAAmB,CAAC,CAAC,KAAKlJ,QAAL,CAAcf,MAAd,CAAqByK,UAA1C;AACA,UAAM3G,KAAK,GAAGyD,OAAO,CAAC/E,OAAR,CACZ,KAAK3C,OAAL,CAAa,CAAb,EAAgB2H,aAAhB,CAA8B,kBAA9B,CADY,CAAd;;AAGA,QAAI1D,KAAJ,EAAW;AACT,UAAI,KAAKmG,WAAT,EAAsB;AACpBnG,QAAAA,KAAK,CAAC,CAAD,CAAL,CAAS4G,YAAT,CAAsB,QAAtB,EAAgC,KAAK3J,QAAL,CAAcf,MAAd,CAAqB2K,MAArD;AACD,OAFD,MAEO;AACL7G,QAAAA,KAAK,CAAC,CAAD,CAAL,CAAS8G,eAAT,CAAyB,QAAzB;AACA,eAAO,KAAK7J,QAAL,CAAcf,MAAd,CAAqB2K,MAA5B;AACD;AACF;AACF;;AAEDnJ,EAAAA,eAAe,GAAG;AAChB,SAAKV,KAAL,CAAWkB,MAAX,CAAkB,2CAAlB,EAAgEC,MAAD,IAAY;AACzE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKkI,eAAL;AACD;AACF,KAJD;AAMA,SAAKtJ,KAAL,CAAWkB,MAAX,CAAkB,uCAAlB,EAA4DC,MAAD,IAAY;AACrE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKsI,aAAL;AACD;AACF,KAJD;AAMA,SAAK1J,KAAL,CAAWkB,MAAX,CAAkB,mCAAlB,EAAwDC,MAAD,IAAY;AACjE,UAAIA,MAAM,KAAKC,SAAf,EAA0B;AACxB,aAAKsI,aAAL;AACD;AACF,KAJD;AAKD;;AAEDK,EAAAA,UAAU,CAAChI,KAAD,EAAQ;AAChB,SAAK9B,QAAL,CAAcb,OAAd,CAAsB4C,MAAtB,CAA6BD,KAA7B,EAAoC,CAApC;AACD;;AA/EkB;;;;;;;;;;;;;;;;;;;ACArB;AACA;AAEA,MAAMkI,EAAE,GAAG,OAAO,IAAlB;;AAEA,MAAMC,UAAN,CAAiB;AACf;AACF;AACA;AACA;AACE1K,EAAAA,WAAW,CAAC+B,QAAD,EAAW;AACpB,SAAKA,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgBwI,6DAAhB;AACA,SAAKvK,QAAL,GAAgB,GAAhB;AACA,SAAKC,KAAL,GAAa;AACXO,MAAAA,QAAQ,EAAE,GADC;AAEXQ,MAAAA,SAAS,EAAE,GAFA;AAGXO,MAAAA,IAAI,EAAE;AAHK,KAAb;AAKA,SAAKrB,UAAL,GAAkBsJ,mEAAlB;AACA,SAAKrJ,YAAL,GAAoB,YAApB;AACA,SAAKC,gBAAL,GAAwB,IAAxB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACE4B,EAAAA,IAAI,CAAC/B,KAAD,EAAQgC,OAAR,EAAiBC,KAAjB,EAAwBC,IAAxB,EAA8B;AAChC;AACA,SAAKL,QAAL,CAAc,YAAY;AACxBK,MAAAA,IAAI,CAAC1B,IAAL;AACD,KAFD,EAEG,EAFH;AAIA,UAAMiK,MAAM,GAAG1D,OAAO,CAAC/E,OAAR,CAAgBA,OAAO,CAAC,CAAD,CAAP,CAAWgF,aAAX,CAAyB,gBAAzB,CAAhB,CAAf;AACA,UAAM1D,KAAK,GAAGyD,OAAO,CAAC/E,OAAR,CAAgBA,OAAO,CAAC,CAAD,CAAP,CAAWgF,aAAX,CAAyB,kBAAzB,CAAhB,CAAd;AACA,UAAMxD,KAAK,GAAGuD,OAAO,CAAC/E,OAAR,CAAgBA,OAAO,CAAC,CAAD,CAAP,CAAWgF,aAAX,CAAyB,OAAzB,CAAhB,CAAd;;AAEA,QAAIxD,KAAK,CAACpC,MAAV,EAAkB;AAChBoC,MAAAA,KAAK,CAACkH,GAAN,CAAU,SAAV,EAAqB,MAArB;AACD;;AAEDD,IAAAA,MAAM,CAACE,EAAP,CAAU,OAAV,EAAmB,MAAM;AACvBnH,MAAAA,KAAK,CAACkH,GAAN,CAAU,SAAV,EAAqB,MAArB;AACA,aAAOpH,KAAK,CAACsH,OAAb,KAAyB,UAAzB,GACItH,KAAK,CAACsH,OAAN,CAAc,OAAd,CADJ,GAEItH,KAAK,CAAC,CAAD,CAAL,CAASuH,KAAT,EAFJ;AAGD,KALD;AAOAvH,IAAAA,KAAK,CAACqH,EAAN,CAAS,QAAT,EAAoBG,CAAD,IAAO;AACxB9K,MAAAA,KAAK,CAAC+K,MAAN,CAAa,YAAY;AACvB;AACR;AACA;AACQ,cAAMC,KAAK,GAAGC,KAAK,CAACC,IAAN,CAAWJ,CAAC,CAACK,MAAF,CAASH,KAApB,CAAd,CAJuB,CAKvB;;AACA,cAAMI,SAAS,GAAGlJ,IAAI,CAAC3B,QAAL,CAAcf,MAAd,CAAqBkK,IAArB,GAA4Ba,EAA9C;AACA,cAAMc,WAAW,GAAGL,KAAK,CAACnD,IAAN,CAAYyD,IAAD,IAAUA,IAAI,CAAC5B,IAAL,IAAa0B,SAAlC,CAApB;;AACA,YAAIC,WAAJ,EAAiB;AACf7H,UAAAA,KAAK,CAACkH,GAAN,CAAU,SAAV,EAAqB,OAArB;AACAlH,UAAAA,KAAK,CAAC+H,IAAN,CAAWrJ,IAAI,CAAC3B,QAAL,CAAcf,MAAd,CAAqBgM,cAAhC;AACAtJ,UAAAA,IAAI,CAAC3B,QAAL,CAAcb,OAAd,GAAwB,EAAxB;AACD,SAJD,MAIO;AACLwC,UAAAA,IAAI,CAAC3B,QAAL,CAAcb,OAAd,GAAwBsL,KAAK,CAACS,GAAN,CAAWH,IAAD,IAAU;AAC1C,kBAAM;AAAEI,cAAAA,IAAF;AAAQhC,cAAAA,IAAR;AAAczF,cAAAA;AAAd,gBAAuBqH,IAA7B;AACA,mBAAO;AAAEI,cAAAA,IAAF;AAAQhC,cAAAA,IAAR;AAAczF,cAAAA,IAAd;AAAoBqH,cAAAA;AAApB,aAAP;AACD,WAHuB,CAAxB;AAID;AACF,OAlBD;AAmBD,KApBD;AAqBD;;AArEc;;;;;;;;;;;;;;;;;ACLjB;AACA;AACA;AACA;AAEA,MAAMK,cAAN,CAAqB;AACnB;AACF;AACA;AACE7L,EAAAA,WAAW,GAAG;AACZ;AACJ;AACA;AACI,SAAKwB,IAAL,GAAY;AACV2D,MAAAA,KAAK,EAAE;AADG,KAAZ;AAGD;AAED;AACF;AACA;AACA;;;AACE2G,EAAAA,OAAO,CAAC3H,IAAD,EAAO;AACZ,SAAK3C,IAAL,CAAU2D,KAAV,CAAgBzC,IAAhB,CAAqB;AACnByB,MAAAA;AADmB,KAArB;AAGD;AAED;AACF;AACA;AACA;AACA;;;AACEiB,EAAAA,MAAM,CAAC5F,IAAD,EAAO+C,KAAP,EAAc;AAClB,SAAKf,IAAL,CAAU2D,KAAV,CAAgB3C,MAAhB,CAAuBD,KAAvB,EAA8B,CAA9B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE8C,EAAAA,EAAE,CAAC7F,IAAD,EAAO+C,KAAP,EAAc;AACd,QAAIA,KAAK,KAAK,CAAd,EAAiB;AACf,YAAM+C,QAAQ,GAAG,KAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyB+C,QAAzB;AACA,WAAK9D,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;AACE+F,EAAAA,IAAI,CAAC/F,IAAD,EAAO+C,KAAP,EAAc;AAChB,QAAIA,KAAK,KAAK,KAAKf,IAAL,CAAU2D,KAAV,CAAgB7D,MAAhB,GAAyB,CAAvC,EAA0C;AACxC,YAAMkE,QAAQ,GAAG,KAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,CAAjB;AACA,WAAKf,IAAL,CAAU2D,KAAV,CAAgB5C,KAAhB,IAAyBiD,QAAzB;AACA,WAAKhE,IAAL,CAAU2D,KAAV,CAAgB5C,KAAK,GAAG,CAAxB,IAA6B/C,IAA7B;AACD;AACF;;AA1DkB;;;;;;;;;;;;;;;;;ACLrB,MAAMH,KAAN,CAAY;AACV;AACF;AACA;AACA;AACA;AACA;AACEI,EAAAA,MAAM,CAACsM,IAAD,EAAOC,GAAP,EAAY;AAChB,WAAOC,MAAM,CAACC,IAAP,CAAYF,GAAZ,EAAiBG,MAAjB,CACL,CAACC,MAAD,EAASC,GAAT,KAAiB;AACf,UAAI,OAAOD,MAAM,CAACC,GAAD,CAAb,KAAuB,WAA3B,EAAwC;AACtCD,QAAAA,MAAM,CAACC,GAAD,CAAN,GAAcL,GAAG,CAACK,GAAD,CAAjB;AACD,OAFD,MAEO,IAAI,OAAOL,GAAG,CAACK,GAAD,CAAV,KAAoB,QAAxB,EAAkC;AACvCD,QAAAA,MAAM,CAACC,GAAD,CAAN,GAAc,KAAK5M,MAAL,CAAY2M,MAAM,CAACC,GAAD,CAAlB,EAAyBL,GAAG,CAACK,GAAD,CAA5B,CAAd;AACD;;AACD,aAAOD,MAAP;AACD,KARI,EASL,OAAOL,IAAP,KAAgB,WAAhB,GAA8B,EAA9B,GAAmCA,IAT9B,CAAP;AAWD;;AAnBS;;;;;;;;;;;;;ACAZ;;;;;;;;;;;;;;;ACAA,iEAAe,8CAA8C,4EAA4E,qQAAqQ,yCAAyC,iJAAiJ,4CAA4C,qDAAqD;;;;;;;;;;;;;;ACAzqB,iEAAe,gdAAgd,mFAAmF,6bAA6b,YAAY,qfAAqf;;;;;;;;;;;;;;ACAh/C,iEAAe,8CAA8C,6EAA6E,2TAA2T,cAAc,kJAAkJ,6CAA6C,qDAAqD;;;;;;;;;;;;;;ACAvsB,iEAAe,oaAAoa,6CAA6C,yNAAyN,6CAA6C,87DAA87D;;;;;;;;;;;;;;ACApqF,iEAAe,mGAAmG,WAAW,kNAAkN;;;;;;;;;;;;;;ACA/U,iEAAe,iUAAiU,sBAAsB,oDAAoD,yBAAyB,qpDAAqpD;;;;;;;;;;;;;;ACAxkE,iEAAe,sdAAsd;;;;;;;;;;;;;;ACAre,iEAAe,4GAA4G,gCAAgC,wBAAwB,uCAAuC,kNAAkN;;;;;;;;;;;;;;ACA5a,iEAAe,gLAAgL;;;;;;;;;;;;;;ACA/L,iEAAe,8RAA8R;;;;;;;;;;;;;;ACA7S,iEAAe,sjBAAsjB,YAAY,uqCAAuqC,YAAY,inBAAinB;;;;;;;;;;;;;;ACAr3E,iEAAe,8XAA8X,cAAc,gRAAgR,WAAW,mZAAmZ,cAAc,gRAAgR;;;;;;;;;;;;;;ACAv2C,iEAAe,wRAAwR,oFAAoF,8bAA8b,YAAY,oZAAoZ;;;;;;;;;;;;;;ACAztC,iEAAe,uNAAuN,8EAA8E,6IAA6I,cAAc,6CAA6C,cAAc,uMAAuM;;;;;;;;;;;;;;ACAjtB,iEAAe,ihBAAihB,YAAY,sXAAsX;;;;;;;;;;;;;;ACAl6B,iEAAe,oUAAoU,eAAe,qLAAqL;;;;;;;;;;;;;;ACAvhB,iEAAe,yKAAyK;;;;;;;;;;;;;;ACAxL,iEAAe,yHAAyH,0CAA0C,kOAAkO;;;;;;;;;;;;;;ACApZ,iEAAe,ugBAAugB,0BAA0B,07BAA07B;;;;;;;;;;;;;;ACA1+C,iEAAe,2kBAA2kB,kDAAkD,sGAAsG,iCAAiC,qSAAqS,aAAa,4BAA4B;;;;;;UCAjmC;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,iEAAe9E,OAAO,CACnBqF,MADY,CACL,4BADK,EACyB,CACpC,YADoC,EAEpC,uBAFoC,EAGpC,YAHoC,CADzB,EAMZC,OANY,CAMJ,OANI,EAMKlN,uDANL,EAOZc,UAPY,CAOD,gBAPC,EAOiB0L,iEAPjB,EAQZ5I,SARY,CAQF,YARE,EAQYuG,qFARZ,EASZvG,SATY,CASF,YATE,EASYyH,qFATZ,EAUZzH,SAVY,CAUF,eAVE,EAUelD,8FAVf,EAWZkD,SAXY,CAWF,eAXE,EAWenB,8FAXf,EAYZmB,SAZY,CAYF,gBAZE,EAYgBD,iGAZhB,EAaZC,SAbY,CAaF,gBAbE,EAagBG,iGAbhB,EAcZH,SAdY,CAcF,UAdE,EAcU4B,+EAdV,EAeZ5B,SAfY,CAeF,oBAfE,EAeoByC,gHAfpB,EAgBZzC,SAhBY,CAgBF,UAhBE,EAgBU4C,gFAhBV,EAiBZ5C,SAjBY,CAiBF,WAjBE,EAiBW+C,mFAjBX,EAkBZ/C,SAlBY,CAkBF,WAlBE,EAkBWkD,mFAlBX,EAmBZlD,SAnBY,CAmBF,WAnBE,EAmBWsD,mFAnBX,EAoBZtD,SApBY,CAoBF,WApBE,EAoBW4D,mFApBX,EAqBZ5D,SArBY,CAqBF,YArBE,EAqBY2E,sFArBZ,EAsBZ3E,SAtBY,CAsBF,YAtBE,EAsBYkF,sFAtBZ,EAuBZlF,SAvBY,CAuBF,iBAvBE,EAuBiBqF,uGAvBjB,EAwBZrF,SAxBY,CAwBF,iBAxBE,EAwBiBwF,uGAxBjB,EAyBZxF,SAzBY,CAyBF,YAzBE,EAyBY2F,sFAzBZ,EA0BZ3F,SA1BY,CA0BF,YA1BE,EA0BY8F,sFA1BZ,EA2BZ9F,SA3BY,CA2BF,cA3BE,EA2BciG,4FA3Bd,EA4BZjG,SA5BY,CA4BF,cA5BE,EA4BcoG,4FA5Bd,CAAf,E","sources":["webpack://angular-material-form-builder/webpack/universalModuleDefinition","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.directive.js","webpack://angular-material-form-builder/./src/lib/main/main.controller.js","webpack://angular-material-form-builder/./src/lib/utils/utils.service.js","webpack://angular-material-form-builder/./src/lib/index.scss?f8d6","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.tpl.html","webpack://angular-material-form-builder/webpack/bootstrap","webpack://angular-material-form-builder/webpack/runtime/define property getters","webpack://angular-material-form-builder/webpack/runtime/hasOwnProperty shorthand","webpack://angular-material-form-builder/webpack/runtime/make namespace object","webpack://angular-material-form-builder/./src/lib/index.module.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-material-form-builder\"] = factory();\n\telse\n\t\troot[\"angular-material-form-builder\"] = factory();\n})(self, function() {\nreturn ","/**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\nfunction AgreementItemCtrl(Utils, $element) {\n  this.Element = $element\n  this.item = Utils.extend(this.item || {}, {\n    config: {\n      maxSelections: null,\n    },\n    options: [\n      {\n        value: '',\n        selected: false,\n      },\n    ],\n  })\n}\n\nexport { AgreementItemCtrl }\n","import { AgreementItemCtrl } from './agreement-item.controller'\n// import AgreementItemTemplate from './agreement-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass AgreementItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n    }\n    this.controller = AgreementItemCtrl\n    this.controllerAs = 'Agreement'\n    this.bindToController = true\n  }\n}\n\nexport { AgreementItem }\n","class AgreementViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('AgreementView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { AgreementViewCtrl }\n","import { AgreementViewCtrl } from './agreement-view.controller'\nimport AgreementViewTemplate from './agreement-view.tpl.html'\n\nclass AgreementView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = AgreementViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = AgreementViewCtrl\n    this.controllerAs = 'AgreementView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {AgreementViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { AgreementView }\n","class CheckboxesItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        maxSelections: null,\n      },\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n      selected: false,\n    })\n    // Focus new element\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { CheckboxesItemCtrl }\n","import CheckboxesItemTemplate from './checkboxes-item.tpl.html'\nimport { CheckboxesItemCtrl } from './checkboxes-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nfunction CheckboxesItem() {\n  const directive = {\n    restrict: 'E',\n    template: CheckboxesItemTemplate,\n    scope: {\n      item: '=',\n    },\n    controller: CheckboxesItemCtrl,\n    controllerAs: 'Checkboxes',\n    bindToController: true,\n  }\n\n  return directive\n}\n\nexport { CheckboxesItem }\n","class CheckboxesViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('CheckboxesView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { CheckboxesViewCtrl }\n","import CheckboxesViewTemplate from './checkboxes-view.tpl.html'\nimport { CheckboxesViewCtrl } from './checkboxes-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass CheckboxesView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = CheckboxesViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = CheckboxesViewCtrl\n    this.controllerAs = 'CheckboxesView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {CheckboxesViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { CheckboxesView }\n","const DEFAULT_TITLE = {\n  upload: 'Attachment',\n  agreement: 'Agreement',\n  input: 'Field',\n  chooseFromList: 'Select',\n  label: 'Label',\n  multipleChoices: 'Choice',\n  matrix: 'Matrix',\n  checkboxes: 'Options',\n  textarea: 'Text',\n}\n\nclass FormItemCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {ng.IAttributes} $attrs\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, $attrs, Utils) {\n    this.Attrs = $attrs\n    this.Utils = Utils\n    this.templates = {\n      upload: '<upload-item item=\"FormItem.item\"></upload-item>',\n      agreement: '<agreement-item item=\"FormItem.item\"></agreement-item>',\n      input: '<input-item item=\"FormItem.item\"></input-item>',\n      chooseFromList:\n        '<bet-form-choose-from-list item=\"FormItem.item\"></bet-form-choose-from-list>',\n      label: '<label-item item=\"FormItem.item\"></label-item>',\n      multipleChoices:\n        '<radio-button-item item=\"FormItem.item\"></radio-button-item>',\n      matrix: '<matrix-item item=\"FormItem.item\"></matrix-item>',\n      checkboxes: '<checkboxes-item item=\"FormItem.item\"></checkboxes-item>',\n      textarea: '<textarea-item item=\"FormItem.item\"></textarea-item>',\n    }\n    this.item = {}\n    this.scope = $scope\n  }\n\n  init() {\n    this.item = this.Utils.extend(this.item || {}, {\n      type: this.Attrs.type,\n      props: {\n        title: DEFAULT_TITLE[this.Attrs.type],\n        helpText: '',\n      },\n      config: {\n        required: false,\n      },\n    })\n  }\n\n  deleteClicked() {\n    this.onDelete({ item: this.item, index: this.index() })\n  }\n\n  /**\n   *\n   * @param {string} type\n   */\n  _getItemTemplate(type) {\n    const prefix =\n      '' +\n      '<div class=\"form-item-container\">' +\n      '<div class=\"form-item-actions\">' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDelete\" ng-click=\"FormItem.deleteClicked()\"> ' +\n      '<md-icon class=\"material-icons small\">delete</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onUp\" ng-click=\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_up</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDown\" ng-click=\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_down</md-icon>' +\n      '</md-button>' +\n      '</div>' +\n      '<md-input-container>' +\n      '<label>Field Title</label>' +\n      '<input ng-model=\"FormItem.item.props.title\"/>' +\n      '</md-input-container>' +\n      '<md-input-container>' +\n      '<label>Help Text</label>' +\n      '<input ng-model=\"FormItem.item.props.helpText\" />' +\n      '</md-input-container>'\n\n    const suffix =\n      '' +\n      '<md-input-container>' +\n      '<md-checkbox ng-model=\"FormItem.item.config.required\">Required field</md-checkbox>' +\n      '</md-input-container>' +\n      '</div>'\n\n    return prefix + this.templates[type] + suffix\n  }\n}\n\nexport { FormItemCtrl }\n","import FormItemTemplate from './form-item.tpl.html'\nimport { FormItemCtrl } from './form-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItem {\n  /**\n   * @ngInject\n   * @param {ng.ICompileService} $compile\n   */\n  constructor($compile) {\n    this.$compile = $compile\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n      onDelete: '&',\n      onUp: '&',\n      onDown: '&',\n      index: '&',\n    }\n    this.controller = FormItemCtrl\n    this.controllerAs = 'FormItem'\n    this.bindToController = true\n    this.template = FormItemTemplate\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    const template = ctrl._getItemTemplate(attrs.type)\n    const el = this.$compile(template)(scope)\n    // element.append(el)\n    // if done like above adds twice\n    // element.append(this.$compile(template)(scope))\n    ctrl.init()\n    return el\n  }\n}\nexport { FormItem }\n","class FormItemsContainerCtrl {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {import('../../main/main.controller').FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { FormItemsContainerCtrl }\n","import { FormItemsContainerCtrl } from './form-items-container.controller'\nimport FormItemsContainerTemplate from './form-items-container.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItemsContainer {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      form: '=',\n    }\n    this.template = FormItemsContainerTemplate\n    this.controller = FormItemsContainerCtrl\n    this.controllerAs = 'container'\n    this.bindToController = true\n  }\n}\n\nexport { FormItemsContainer }\n","class FormViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScù} $scope\n   */\n  constructor($scope) {\n    this.Scope = $scope\n  }\n\n  init() {}\n}\n\nexport { FormViewCtrl }\n","import { FormViewCtrl } from './form-view.controller'\nimport FormViewTemplate from './form-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormView {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = FormViewTemplate\n    this.scope = {\n      form: '=',\n    }\n    this.controller = FormViewCtrl\n    this.controllerAs = 'FormView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    ctrl.init()\n  }\n}\n\nexport { FormView }\n","class InputItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        type: 'text',\n      },\n    })\n  }\n}\n\nexport { InputItemCtrl }\n","import { InputItemCtrl } from './input-item.controller'\nimport InputItemTemplate from './input-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = InputItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = InputItemCtrl\n    this.controllerAs = 'Input'\n    this.bindToController = true\n  }\n}\n\nexport { InputItem }\n","class InputViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { InputViewCtrl }\n","import { InputViewCtrl } from './input-view.controller'\nimport InputViewTemplate from './input-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = InputViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = InputViewCtrl\n    this.controllerAs = 'InputView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { InputView }\n","class LabelItemCtrl {\n  /**\n   * @ngInject\n   * @param {JQLite} $element\n   */\n  constructor($element) {\n    this.Element = $element\n  }\n}\n\nexport { LabelItemCtrl }\n","import { LabelItemCtrl } from './label-item.controller'\nimport LabelItemTemplate from './label-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelItem {\n  constructor() {\n    this.restrict = 'E'\n    this.template = LabelItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = LabelItemCtrl\n    this.controllerAs = 'Label'\n    this.bindToController = true\n  }\n}\n\nexport { LabelItem }\n","class LabelViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.ISCEService} $sce\n   */\n  constructor(Utils, $sce) {\n    this.Utils = Utils\n    this.$sce = $sce\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {})\n  }\n\n  get sanitizedTitle() {\n    return this.$sce.trustAsHtml(this.formItem.value)\n  }\n}\n\nexport { LabelViewCtrl }\n","import { LabelViewCtrl } from './label-view.controller'\nimport LabelViewTemplate from './label-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = LabelViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = LabelViewCtrl\n    this.controllerAs = 'LabelView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {LabelViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { LabelView }\n","class MatrixItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.IDocumentService} $document\n   */\n  constructor(Utils, $document) {\n    this.RowContainer = angular.element(\n      $document[0].querySelector('.rowContainer')\n    )\n    this.ColumnContainer = angular.element(\n      $document[0].querySelector('.columnContainer')\n    )\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        rows: [\n          {\n            value: '',\n          },\n        ],\n        columns: [\n          {\n            value: '',\n          },\n        ],\n      },\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteRow(index) {\n    this.item.config.rows.splice(index, 1)\n  }\n\n  addRow() {\n    this.item.config.rows.push({\n      value: '',\n    })\n\n    setTimeout(\n      function () {\n        const options = this.RowContainer.find('input')\n        const addedOption = options[options.length - 1]\n        addedOption.focus()\n      }.bind(this),\n      0\n    )\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteColumn(index) {\n    this.item.config.columns.splice(index, 1)\n  }\n\n  addColumn() {\n    this.item.config.columns.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.ColumnContainer.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { MatrixItemCtrl }\n","import { MatrixItemCtrl } from './matrix-item.controller'\nimport MatrixItemTemplate from './matrix-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass MatrixItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = MatrixItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = MatrixItemCtrl\n    this.controllerAs = 'Matrix'\n    this.bindToController = true\n  }\n}\nexport { MatrixItem }\n","class MatrixViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.isValid = true\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {\n        rows: [],\n        columns: [],\n      },\n    })\n\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  _updateValidity() {\n    let valid = true\n    if (this.formItem.config.required) {\n      valid = !this.formItem.config.rows.some(\n        (row) => typeof row['selected'] === 'undefined'\n      )\n      //   for (let i = 0; i < this.formItem.config.rows.length; i++) {\n      //     if (typeof this.formItem.config.rows[i]['selected'] === 'undefined') {\n      //       valid = false\n      //       break\n      //     }\n      //   }\n    }\n\n    this.isValid = valid\n    this.form.$setValidity('required', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watchGroup(\n      [\n        'MatrixView.formItem.config.required',\n        'MatrixView.formItem.config.rows.length',\n      ],\n      (newVal) => {\n        if (newVal !== undefined) {\n          this._updateValidity()\n        }\n      }\n    )\n  }\n}\nexport { MatrixViewCtrl }\n","import MatrixViewTemplate from './matrix-view.tpl.html'\nimport { MatrixViewCtrl } from './matrix-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass MatrixView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = MatrixViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = MatrixViewCtrl\n    this.controllerAs = 'MatrixView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {MatrixViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { MatrixView }\n","class RadioButtonItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { RadioButtonItemCtrl }\n","import { RadioButtonItemCtrl } from './radio-button-item.controller'\nimport RadioButtonTemplate from './radio-button-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass RadioButtonItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = RadioButtonTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = RadioButtonItemCtrl\n    this.controllerAs = 'RadioButton'\n    this.bindToController = true\n  }\n}\n\nexport { RadioButtonItem }\n","class RadioButtonViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { RadioButtonViewCtrl }\n","import { RadioButtonViewCtrl } from './radio-button-view.controller'\nimport RadioButtonViewTemplate from './radio-button-view.tpl.html'\n\nclass RadioButtonView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = RadioButtonViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = RadioButtonViewCtrl\n    this.controllerAs = 'RadioButtonView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {RadioButtonViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { RadioButtonView }\n","class SelectItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { SelectItemCtrl }\n","import SelectTemplate from './select-item.tpl.html'\nimport { SelectItemCtrl } from './select-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = SelectTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = SelectItemCtrl\n    this.controllerAs = 'Select'\n    this.bindToController = true\n  }\n}\n\nexport { SelectItem }\n","class SelectViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { SelectViewCtrl }\n","import SelectViewTemplate from './select-view.tpl.html'\nimport { SelectViewCtrl } from './select-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n\n    this.restrict = 'E'\n    this.template = SelectViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = SelectViewCtrl\n    this.controllerAs = 'SelectView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {SelectViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { SelectView }\n","class TextareaItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaItemCtrl }\n","import { TextareaItemCtrl } from './textarea-item.controller'\nimport TextareaItemTemplate from './textarea-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass TextareaItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = TextareaItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = TextareaItemCtrl\n    this.controllerAs = 'Textarea'\n    this.bindToController = true\n  }\n}\n\nexport { TextareaItem }\n","class TextareaViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaViewCtrl }\n","import { TextareaViewCtrl } from './textarea-view.controller'\nimport TextareaViewTemplate from './textarea-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass TextareaView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.restrict = 'E'\n    this.template = TextareaViewTemplate\n    this.controller = TextareaViewCtrl\n    this.controllerAs = 'TextareaView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {TextareaViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { TextareaView }\n","class UploadItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { UploadItemCtrl }\n","import UploadItemTemplate from './upload-item.tpl.html'\nimport { UploadItemCtrl } from './upload-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass UploadItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = UploadItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = UploadItemCtrl\n    this.controllerAs = 'Upload'\n    this.bindToController = true\n  }\n}\n\nexport { UploadItem }\n","class UploadViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor($scope, Utils, $element) {\n    this.Scope = $scope\n    this.Element = $element\n    this.Utils = Utils\n    this.formItem = {}\n  }\n  init() {\n    this.isMultiple = false\n    this.showAllowed = false\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {\n        size: 10,\n        uploadFileButtonLabel: 'Add files',\n      },\n      options: [],\n    })\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n  _updateMultiple() {\n    this.isMultiple = !!this.formItem.config.multipleUpload\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      this.formItem.options = []\n      if (this.isMultiple) {\n        input.attr('multiple', 'multiple')\n      } else {\n        input.removeAttr('multiple')\n      }\n    }\n  }\n\n  _updateAccept() {\n    this.showAllowed = !!this.formItem.config.showAccept\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      if (this.showAllowed) {\n        input[0].setAttribute('accept', this.formItem.config.accept)\n      } else {\n        input[0].removeAttribute('accept')\n        delete this.formItem.config.accept\n      }\n    }\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('UploadView.formItem.config.multipleUpload', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateMultiple()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.showAccept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.accept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n  }\n\n  removeItem(index) {\n    this.formItem.options.splice(index, 1)\n  }\n}\nexport { UploadViewCtrl }\n","import { UploadViewCtrl } from './upload-view.controller'\nimport UploadViewTemplate from './upload-view.tpl.html'\n\nconst MB = 1024 * 1024\n\nclass UploadView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = UploadViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = UploadViewCtrl\n    this.controllerAs = 'UploadView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {UploadViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n\n    const button = angular.element(element[0].querySelector('.upload-button'))\n    const input = angular.element(element[0].querySelector('input[type=file]'))\n    const label = angular.element(element[0].querySelector('label'))\n\n    if (label.length) {\n      label.css('display', 'none')\n    }\n\n    button.on('click', () => {\n      label.css('display', 'none')\n      typeof input.trigger === 'function'\n        ? input.trigger('click')\n        : input[0].click()\n    })\n\n    input.on('change', (e) => {\n      scope.$apply(function () {\n        /**\n         * @type {File[]}\n         */\n        const files = Array.from(e.target.files)\n        // Max allowed size in MB\n        const maxSizeMB = ctrl.formItem.config.size * MB\n        const exceedsSize = files.some((file) => file.size >= maxSizeMB)\n        if (exceedsSize) {\n          label.css('display', 'block')\n          label.text(ctrl.formItem.config.sizeErrMessage)\n          ctrl.formItem.options = []\n        } else {\n          ctrl.formItem.options = files.map((file) => {\n            const { name, size, type } = file\n            return { name, size, type, file }\n          })\n        }\n      })\n    })\n  }\n}\n\nexport { UploadView }\n","/**\n * @typedef {{type:string}} Item\n * @typedef {{items: Item[]}} FormConfig\n */\n\nclass MainController {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   * Add new Item\n   * @param {string} type\n   */\n  addItem(type) {\n    this.form.items.push({\n      type,\n    })\n  }\n\n  /**\n   * Remove item at index\n   * @param {Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   * insert before (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   * insert after (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { MainController }\n","class Utils {\n  /**\n   * Recursively extend object properties\n   * @param {Object} dest\n   * @param {Object} src\n   * @returns {Object}\n   */\n  extend(dest, src) {\n    return Object.keys(src).reduce(\n      (result, key) => {\n        if (typeof result[key] === 'undefined') {\n          result[key] = src[key]\n        } else if (typeof src[key] === 'object') {\n          result[key] = this.extend(result[key], src[key])\n        }\n        return result\n      },\n      typeof dest === 'undefined' ? {} : dest\n    )\n  }\n}\n\nexport { Utils }\n","// extracted by mini-css-extract-plugin\nexport {};","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{AgreementView.formItem.config.direction == 'horizontal' ? 'row' : 'columb'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-model=\\\"AgreementView.formItem.options[0].selected\\\"\\n      ng-change=\\\"AgreementView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"AgreementView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{AgreementView.formItem.options[0].value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"AgreementView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{AgreementView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Checkboxes.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max Selections</label>\\n    <input type=\\\"number\\\" ng-model=\\\"Checkboxes.item.config.maxSelections\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Checkboxes.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{Checkboxes.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Checkboxes.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button\\\" ng-click=\\\"Checkboxes.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      ng-click=\\\"Checkboxes.addOption()\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">add</md-icon>\\n    </md-button>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{CheckboxesView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-repeat=\\\"option in CheckboxesView.formItem.options track by $index\\\"\\n      ng-model=\\\"option.selected\\\"\\n      ng-change=\\\"CheckboxesView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"CheckboxesView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{option.value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"CheckboxesView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{CheckboxesView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div class=\\\"form-item-container md-inline-form\\\">\\n  <div class=\\\"form-item-actions\\\">\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDelete\\\"\\n      ng-click=\\\"FormItem.deleteClicked()\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">delete</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onUp\\\"\\n      ng-click=\\\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_up</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDown\\\"\\n      ng-click=\\\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_down</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Field Title</label>\\n    <input ng-model=\\\"FormItem.item.props.title\\\" />\\n  </md-input-container>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Help Text</label>\\n    <input ng-model=\\\"FormItem.item.props.helpText\\\" />\\n  </md-input-container>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type === 'agreement'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <label>Option Text</label>\\n    <input ng-model=\\\"FormItem.item.options[0].value\\\" />\\n  </md-input-container>\\n\\n  <div ng-switch=\\\"FormItem.item.type\\\">\\n    <upload-item ng-switch-when=\\\"upload\\\" item=\\\"FormItem.item\\\"></upload-item>\\n    <agreement-item\\n      ng-switch-when=\\\"agreement\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></agreement-item>\\n    <label-item ng-switch-when=\\\"label\\\" item=\\\"FormItem.item\\\"></label-item>\\n    <input-item ng-switch-when=\\\"input\\\" item=\\\"FormItem.item\\\"></input-item>\\n    <radio-button-item\\n      ng-switch-when=\\\"multipleChoices\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></radio-button-item>\\n    <matrix-item ng-switch-when=\\\"matrix\\\" item=\\\"FormItem.item\\\"></matrix-item>\\n    <checkboxes-item\\n      ng-switch-when=\\\"checkboxes\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></checkboxes-item>\\n    <textarea-item\\n      ng-switch-when=\\\"textarea\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></textarea-item>\\n    <select-item\\n      ng-switch-when=\\\"chooseFromList\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></select-item>\\n    <p ng-switch-default>UNKNOWN TYPE</p>\\n  </div>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type != 'label' && FormItem.item.type != 'upload'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <md-checkbox ng-model=\\\"FormItem.item.config.required\\\"\\n      >Required field</md-checkbox\\n    >\\n  </md-input-container>\\n</div>\\n\";","export default \"<div>\\n  <form-item\\n    ng-repeat=\\\"item in container.form.items track by $index\\\"\\n    type=\\\"{{item.type}}\\\"\\n    item=\\\"item\\\"\\n    index=\\\"$index\\\"\\n    on-delete=\\\"container.delete(item, index)\\\"\\n    on-up=\\\"container.up(item, index)\\\"\\n    on-down=\\\"container.down(item, index)\\\"\\n  >\\n  </form-item>\\n</div>\\n\";","export default \"<div class=\\\"md-inline-form\\\">\\n  <div\\n    class=\\\"formItem\\\"\\n    ng-repeat=\\\"formItem in FormView.form.items track by $index\\\"\\n    ng-switch=\\\"formItem.type\\\"\\n    layout=\\\"column\\\"\\n  >\\n    <ng-form name=\\\"formItemForm\\\">\\n      <div>\\n        <div class=\\\"formItem-title\\\" ng-show=\\\"formItem.type !== 'label'\\\">{{formItem.props.title}}</div>\\n        <div class=\\\"formItem-help-text\\\">{{formItem.props.helpText}}</div>\\n\\n        <upload-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"upload\\\"\\n        ></upload-view>\\n        <agreement-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"agreement\\\"\\n        ></agreement-view>\\n        <checkboxes-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"checkboxes\\\"\\n        ></checkboxes-view>\\n        <radio-button-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"multipleChoices\\\"\\n        ></radio-button-view>\\n        <input-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"input\\\"\\n        ></input-view>\\n        <textarea-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"textarea\\\"\\n        ></textarea-view>\\n        <matrix-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"matrix\\\"\\n        ></matrix-view>\\n        <select-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"chooseFromList\\\"\\n        ></select-view>\\n        <label-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"label\\\"\\n        ></label-view>\\n      </div>\\n    </ng-form>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Input.item.config.placeholder\\\" />\\n</md-input-container>\\n<md-input-container class=\\\"md-block\\\">\\n  <label>Type</label>\\n  <md-select ng-model=\\\"Input.item.config.type\\\">\\n    <md-option value=\\\"text\\\">Text</md-option>\\n    <md-option value=\\\"number\\\">Number</md-option>\\n    <md-option value=\\\"email\\\">Email</md-option>\\n  </md-select>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <input\\n    ng-model=\\\"InputView.formItem.value\\\"\\n    type=\\\"{{InputView.formItem.config.type}}\\\"\\n    placeholder=\\\"{{InputView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"InputView.formItem.config.required\\\"\\n  />\\n  <div ng-messages=\\\"InputView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Text</label>\\n  <textarea ng-model=\\\"Label.item.value\\\" md-maxlength=\\\"150\\\" rows=\\\"5\\\"></textarea>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-content flex layout-padding layout=\\\"row\\\" layout-align=\\\"center center\\\">\\n    <pre>\\n      \\n      <span class=\\\"formItem-content\\\" ng-bind-html=\\\"LabelView.sanitizedTitle\\\"></span>\\n    </pre>\\n  </md-content>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container columnContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.columns\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"column in Matrix.item.config.columns track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Column {{$index + 1}}</label>\\n      <input ng-model=\\\"column.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete column item\\\"\\n      ng-click=\\\"Matrix.deleteColumn($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add option item\\\"\\n      ng-click=\\\"Matrix.addColumn()\\\"\\n      >Add Column</md-button\\n    >\\n  </div>\\n</div>\\n\\n<div\\n  class=\\\"sortable-container rowContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.rows\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"row in Matrix.item.config.rows track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder row item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Row {{$index + 1}}</label>\\n      <input ng-model=\\\"row.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete row item\\\"\\n      ng-click=\\\"Matrix.deleteRow($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add row item\\\"\\n      ng-click=\\\"Matrix.addRow()\\\"\\n      >Add row</md-button\\n    >\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"matrix-container md-block\\\" layout=\\\"column\\\">\\n  <div class=\\\"matrix\\\">\\n    <div class=\\\"matrix-row\\\" flex layout=\\\"row\\\">\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\"></span>\\n      <span\\n        class=\\\"matrix-cell matrix-cell-header\\\"\\n        flex\\n        ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >{{column.value}}</span\\n      >\\n    </div>\\n    <div\\n      class=\\\"matrix-row\\\"\\n      ng-repeat=\\\"row in MatrixView.formItem.config.rows track by $index\\\"\\n      layout=\\\"row\\\"\\n    >\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\" layout=\\\"column\\\" layout-align=\\\"center\\\"\\n        >{{row.value}}</span\\n      >\\n      <md-radio-group\\n        ng-model=\\\"row.selected\\\"\\n        ng-change=\\\"MatrixView._updateValidity()\\\"\\n        flex\\n        layout=\\\"row\\\"\\n      >\\n        <span\\n          class=\\\"matrix-cell radio-button-cell\\\"\\n          flex\\n          ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >\\n          <md-radio-button\\n            value=\\\"{{column.value}}\\\"\\n            aria-label=\\\"...\\\"\\n          ></md-radio-button>\\n        </span>\\n      </md-radio-group>\\n    </div>\\n  </div>\\n\\n  <div ng-messages=\\\"MatrixView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"RadioButton.item.options\\\"\\n>\\n  <md-switch\\n    ng-model=\\\"RadioButton.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{RadioButton.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in RadioButton.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button md-warn\\\"\\n      ng-click=\\\"RadioButton.deleteOption($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"RadioButton.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-radio-group\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"RadioButtonView.formItem.config.required\\\"\\n    ng-model=\\\"RadioButtonView.formItem.value\\\"\\n    layout=\\\"{{RadioButtonView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n    required\\n  >\\n    <md-radio-button\\n      ng-repeat=\\\"option in RadioButtonView.formItem.options track by $index\\\"\\n      value=\\\"{{option.value}}\\\"\\n      aria-label=\\\"...\\\"\\n    >\\n      {{option.value}}\\n    </md-radio-button>\\n  </md-radio-group>\\n\\n  <div ng-messages=\\\"RadioButtonView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Select.item.options\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Select.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button md-warn\\\" ng-click=\\\"Select.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"Select.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-select\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"SelectView.formItem.config.required\\\"\\n    ng-model=\\\"SelectView.formItem.value\\\"\\n  >\\n    <md-option\\n      ng-repeat=\\\"option in SelectView.formItem.options track by $index\\\"\\n      ng-value=\\\"option.value\\\"\\n      >{{ option.value }}</md-option\\n    >\\n  </md-select>\\n  <div ng-messages=\\\"SelectView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Textarea.item.config.placeholder\\\" />\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <textarea\\n    ng-model=\\\"TextareaView.formItem.value\\\"\\n    placeholder=\\\"{{TextareaView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"TextareaView.formItem.config.required\\\"\\n  ></textarea>\\n  <div ng-messages=\\\"TextareaView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Upload.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Upload Button label</label>\\n    <input ng-model=\\\"Upload.item.config.uploadFileButtonLabel\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.multipleUpload\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Multiple\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <span>Max File size: {{Upload.item.config.size}} Mb</span>\\n    <input\\n      type=\\\"number\\\"\\n      id=\\\"size\\\"\\n      name=\\\"size\\\"\\n      min=\\\"0.1\\\"\\n      max=\\\"999\\\"\\n      step=\\\"0.1\\\"\\n      aria-label=\\\"size\\\"\\n      ng-model=\\\"Upload.item.config.size\\\"\\n    />\\n  </md-input-container>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max file size error message</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.sizeErrMessage\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.showAccept\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Configure allowed file types\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\" ng-if=\\\"Upload.item.config.showAccept\\\">\\n    <label>Allowed Types</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.accept\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n</div>\\n\";","export default \"<div layout=\\\"row\\\" class=\\\"option-item upload-item\\\">\\n  <md-input-container class=\\\"md-block\\\" style=\\\"margin: 0\\\">\\n    <input type=\\\"file\\\" class=\\\"ng-hide\\\" aria-label=\\\"file\\\" />\\n    <md-input-container flex class=\\\"md-block\\\">\\n      <input\\n        type=\\\"text\\\"\\n        ng-model=\\\"fileName\\\"\\n        class=\\\"ng-hide\\\"\\n        disabled\\n        aria-label=\\\"fileName\\\"\\n      />\\n    </md-input-container>\\n  </md-input-container>\\n\\n  <md-button class=\\\"md-raised md-accent upload-button\\\"\\n    ><md-icon class=\\\"material-icons\\\">attach_file</md-icon\\n    ><span\\n      >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\\n    ></md-button\\n  >\\n</div>\\n\\n<div>\\n  <label></label>\\n  <div\\n    style=\\\"display: grid; grid-template-columns: 8em auto; align-items: center\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in UploadView.formItem.options track by $index\\\"\\n  >\\n    <md-button ng-click=\\\"UploadView.removeItem($index)\\\" class=\\\"md-icon-button\\\">\\n      <md-icon class=\\\"material-icons\\\">close</md-icon>\\n    </md-button>\\n    <span>{{option.name}}</span>\\n  </div>\\n</div>\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import './index.scss'\nimport { UploadItem } from './directives/upload-item/upload-item.directive'\nimport { UploadView } from './directives/upload-item/upload-view.directive'\nimport { AgreementItem } from './directives/agreement-item/agreement-item.directive'\nimport { AgreementView } from './directives/agreement-item/agreement-view.directive'\nimport { MainController } from './main/main.controller'\nimport { Utils } from './utils/utils.service'\nimport { CheckboxesItem } from './directives/checkboxes-item/checkboxes-item.directive'\nimport { CheckboxesView } from './directives/checkboxes-item/checkboxes-view.directive'\nimport { FormItem } from './directives/form-item/form-item.directive'\nimport { FormItemsContainer } from './directives/form-items-container/form-items-container.directive'\nimport { FormView } from './directives/form-view/form-view.directive'\nimport { InputItem } from './directives/input-item/input-item.directive'\nimport { InputView } from './directives/input-item/input-view.directive'\nimport { LabelItem } from './directives/label-item/label-item.directive'\nimport { LabelView } from './directives/label-item/label-view.directive'\nimport { MatrixItem } from './directives/matrix-item/matrix-item.directive'\nimport { MatrixView } from './directives/matrix-item/matrix-view.directive'\nimport { RadioButtonItem } from './directives/radio-button-item/radio-button-item.directive'\nimport { RadioButtonView } from './directives/radio-button-item/radio-button-view.directive'\nimport { SelectView } from './directives/select-item/select-view.directive'\nimport { SelectItem } from './directives/select-item/select-item.directive'\nimport { TextareaItem } from './directives/textarea-item/textarea-item.directive'\nimport { TextareaView } from './directives/textarea-item/textarea-view.directive'\n\nexport default angular\n  .module('angularMaterialFormBuilder', [\n    'ngMaterial',\n    'angular-sortable-view',\n    'ngMessages',\n  ])\n  .service('Utils', Utils)\n  .controller('MainController', MainController)\n  .directive('uploadItem', UploadItem)\n  .directive('uploadView', UploadView)\n  .directive('agreementItem', AgreementItem)\n  .directive('agreementView', AgreementView)\n  .directive('checkboxesItem', CheckboxesItem)\n  .directive('checkboxesView', CheckboxesView)\n  .directive('formItem', FormItem)\n  .directive('formItemsContainer', FormItemsContainer)\n  .directive('formView', FormView)\n  .directive('inputItem', InputItem)\n  .directive('inputView', InputView)\n  .directive('labelItem', LabelItem)\n  .directive('labelView', LabelView)\n  .directive('matrixItem', MatrixItem)\n  .directive('matrixView', MatrixView)\n  .directive('radioButtonItem', RadioButtonItem)\n  .directive('radioButtonView', RadioButtonView)\n  .directive('selectItem', SelectItem)\n  .directive('selectView', SelectView)\n  .directive('textareaItem', TextareaItem)\n  .directive('textareaView', TextareaView)\n"],"names":["AgreementItemCtrl","Utils","$element","Element","item","extend","config","maxSelections","options","value","selected","AgreementItem","constructor","restrict","scope","controller","controllerAs","bindToController","AgreementViewCtrl","$scope","Scope","formItem","init","selectedOptions","_getSelectedOptions","disableOptions","isValid","_updateView","_updateValidity","isPreview","_enableWatchers","toggleSelectedOption","filter","option","length","required","form","$setValidity","$watch","newVal","undefined","AgreementViewTemplate","AgreementView","$timeout","template","link","element","attrs","ctrl","CheckboxesItemCtrl","deleteOption","index","splice","addOption","push","setTimeout","find","addedOption","focus","CheckboxesItemTemplate","CheckboxesItem","directive","CheckboxesViewCtrl","CheckboxesViewTemplate","CheckboxesView","DEFAULT_TITLE","upload","agreement","input","chooseFromList","label","multipleChoices","matrix","checkboxes","textarea","FormItemCtrl","$attrs","Attrs","templates","type","props","title","helpText","deleteClicked","onDelete","_getItemTemplate","prefix","suffix","FormItemTemplate","FormItem","$compile","onUp","onDown","el","FormItemsContainerCtrl","items","delete","up","prevItem","down","nextItem","FormItemsContainerTemplate","FormItemsContainer","FormViewCtrl","FormViewTemplate","FormView","InputItemCtrl","InputItemTemplate","InputItem","InputViewCtrl","InputViewTemplate","InputView","elem","LabelItemCtrl","LabelItemTemplate","LabelItem","LabelViewCtrl","$sce","sanitizedTitle","trustAsHtml","LabelViewTemplate","LabelView","MatrixItemCtrl","$document","RowContainer","angular","querySelector","ColumnContainer","rows","columns","deleteRow","addRow","bind","deleteColumn","addColumn","MatrixItemTemplate","MatrixItem","MatrixViewCtrl","valid","some","row","$watchGroup","MatrixViewTemplate","MatrixView","RadioButtonItemCtrl","RadioButtonTemplate","RadioButtonItem","RadioButtonViewCtrl","RadioButtonViewTemplate","RadioButtonView","SelectItemCtrl","SelectTemplate","SelectItem","SelectViewCtrl","SelectViewTemplate","SelectView","TextareaItemCtrl","TextareaItemTemplate","TextareaItem","TextareaViewCtrl","TextareaViewTemplate","TextareaView","UploadItemCtrl","UploadItemTemplate","UploadItem","UploadViewCtrl","isMultiple","showAllowed","size","uploadFileButtonLabel","_updateMultiple","multipleUpload","attr","removeAttr","_updateAccept","showAccept","setAttribute","accept","removeAttribute","removeItem","UploadViewTemplate","MB","UploadView","button","css","on","trigger","click","e","$apply","files","Array","from","target","maxSizeMB","exceedsSize","file","text","sizeErrMessage","map","name","MainController","addItem","dest","src","Object","keys","reduce","result","key","module","service"],"sourceRoot":""}
\ No newline at end of file
index 5428c81..97dd746 100644 (file)
@@ -3,5 +3,5 @@
   \*********************************************************************************************************************************************************************/@import url(https://fonts.googleapis.com/icon?family=Material+Icons);
 /*!*************************************************************************************************************************************************************************!*\
   !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./src/lib/index.scss (1) ***!
-  \*************************************************************************************************************************************************************************/.main-view .content .builder,.main-view .content .json,.main-view .content .view{border-right:1px solid #ccc;height:800px;overflow:auto}.builder-icon,form-item .form-item-container .md-button,form-item .option-item .md-button{height:36px;line-height:0;min-height:36px;min-width:36px;width:36px}form-item .option-item{min-height:75px}form-item .option-item .md-button{line-height:0;margin-top:20px}form-item .option-item .md-button.handle:active,form-item .option-item .md-button.handle:hover{cursor:move}form-item .form-item-container{padding-top:30px;position:relative}form-item .form-item-container .form-item-actions{position:absolute;right:20px;top:0}form-view .formItem-title{font-size:18px}form-view .formItem-help-text{color:#6c6c6c;font-size:14px}form-view .matrix-container{overflow:auto}form-view .matrix-container .matrix .matrix-row{border-bottom:1px solid #4caf50}form-view .matrix-container .matrix .matrix-cell{overflow:hidden;text-align:center}form-view .matrix-container .matrix md-radio-button .md-label{margin-left:0;margin-right:0}form-view .matrix-container .matrix .md-switch-thumb,form-view .matrix-container .matrix md-radio-button{margin:15px 0}i.material-icons{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}i.material-icons.medium{font-size:36px}.md-button.upload-button{height:36px;padding:0 16px}.md-button.upload-button md-icon{font-size:16px}
+  \*************************************************************************************************************************************************************************/.main-view .content .builder,.main-view .content .json,.main-view .content .view{border-right:1px solid #ccc;height:800px;overflow:auto}.builder-icon,form-item .form-item-container .md-button,form-item .option-item .md-button{height:36px;line-height:0;min-height:36px;min-width:36px;width:36px}form-item .option-item{min-height:75px}form-item .option-item .md-button{line-height:0;margin-top:20px}form-item .option-item .md-button.handle:active,form-item .option-item .md-button.handle:hover{cursor:move}form-item .form-item-container{padding-top:30px;position:relative}form-item .form-item-container .form-item-actions{position:absolute;right:20px;top:0}form-view .formItem-content,form-view .formItem-title{font-size:18px}form-view .formItem-help-text{color:#6c6c6c;font-size:14px}form-view .matrix-container{overflow:auto}form-view .matrix-container .matrix .matrix-row{border-bottom:1px solid #4caf50}form-view .matrix-container .matrix .matrix-cell{overflow:hidden;text-align:center}form-view .matrix-container .matrix md-radio-button .md-label{margin-left:0;margin-right:0}form-view .matrix-container .matrix .md-switch-thumb,form-view .matrix-container .matrix md-radio-button{margin:15px 0}i.material-icons{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}i.material-icons.medium{font-size:36px}.md-button.upload-button{height:36px;padding:0 16px}.md-button.upload-button md-icon{font-size:16px}
 /*# sourceMappingURL=angular-material-form-builder.min.css.map*/
\ No newline at end of file
index 1c055e6..f9d4bae 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"angular-material-form-builder.min.css","mappings":";;;;;6KAMI,iFAGE,2BAA+B,CAC/B,YAAa,CACb,aAJN,CASA,0FAGE,WAjBW,CAmBX,aAAc,CAJd,eAfW,CAgBX,cAhBW,CAkBX,UALF,CAUE,uBACE,eAPJ,CASI,kCAEE,aAAc,CACd,eARN,CAUM,+FAEE,WATR,CAcE,+BAEE,gBAAiB,CADjB,iBAXJ,CAcI,kDACE,iBAAkB,CAClB,UAAW,CACX,KAZN,CAsBE,0BACE,cApBJ,CA2BE,8BAEE,aAAc,CADd,cAxBJ,CA4BE,4BACE,aA1BJ,CA6BM,gDACE,+BA3BR,CA8BM,iDAEE,eAAgB,CADhB,iBA3BR,CAgCQ,8DACE,aAAc,CACd,cA9BV,CAkCM,yGAEE,aAhCR,CAsCA,iBAGE,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,8BAnCF,CAqCE,wBACE,cAnCJ,CAuCA,yBAEE,WAAY,CADZ,cAnCF,CAqCE,iCACE,cAnCJ","sources":["webpack://angular-material-form-builder/./src/lib/index.scss"],"sourcesContent":["@import url(https://fonts.googleapis.com/icon?family=Material+Icons);\n\n$button-dim: 36px;\n\n.main-view {\n  .content {\n    .builder,\n    .view,\n    .json {\n      border-right: 1px solid #cccccc;\n      height: 800px;\n      overflow: auto;\n    }\n  }\n}\n\n.builder-icon {\n  min-height: $button-dim;\n  min-width: $button-dim;\n  height: $button-dim;\n  width: $button-dim;\n  line-height: 0;\n}\n\nform-item {\n  .option-item {\n    min-height: 75px;\n\n    .md-button {\n      @extend .builder-icon;\n      line-height: 0;\n      margin-top: 20px;\n\n      &.handle:active,\n      &.handle:hover {\n        cursor: move;\n      }\n    }\n  }\n\n  .form-item-container {\n    position: relative;\n    padding-top: 30px;\n\n    .form-item-actions {\n      position: absolute;\n      right: 20px;\n      top: 0;\n    }\n\n    .md-button {\n      @extend .builder-icon;\n    }\n  }\n}\n\nform-view {\n  .formItem-title {\n    font-size: 18px;\n  }\n\n  // .formItem-content {\n  //   font-size: 18px;\n  // }\n\n  .formItem-help-text {\n    font-size: 14px;\n    color: #6c6c6c;\n  }\n\n  .matrix-container {\n    overflow: auto;\n\n    .matrix {\n      .matrix-row {\n        border-bottom: 1px solid #4caf50;\n      }\n\n      .matrix-cell {\n        text-align: center;\n        overflow: hidden;\n      }\n\n      md-radio-button {\n        .md-label {\n          margin-left: 0;\n          margin-right: 0;\n        }\n      }\n\n      md-radio-button,\n      .md-switch-thumb {\n        margin: 15px 0;\n      }\n    }\n  }\n}\n\ni.material-icons {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n\n  &.medium {\n    font-size: 36px;\n  }\n}\n\n.md-button.upload-button {\n  padding: 0 16px;\n  height: 36px;\n  md-icon {\n    font-size: 16px;\n  }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"angular-material-form-builder.min.css","mappings":";;;;;6KAMI,iFAGE,2BAA+B,CAC/B,YAAa,CACb,aAJN,CASA,0FAGE,WAjBW,CAmBX,aAAc,CAJd,eAfW,CAgBX,cAhBW,CAkBX,UALF,CAUE,uBACE,eAPJ,CASI,kCAEE,aAAc,CACd,eARN,CAUM,+FAEE,WATR,CAcE,+BAEE,gBAAiB,CADjB,iBAXJ,CAcI,kDACE,iBAAkB,CAClB,UAAW,CACX,KAZN,CA0BE,sDACE,cArBJ,CAwBE,8BAEE,aAAc,CADd,cArBJ,CAyBE,4BACE,aAvBJ,CA0BM,gDACE,+BAxBR,CA2BM,iDAEE,eAAgB,CADhB,iBAxBR,CA6BQ,8DACE,aAAc,CACd,cA3BV,CA+BM,yGAEE,aA7BR,CAmCA,iBAGE,QAAS,CAFT,iBAAkB,CAClB,OAAQ,CAER,8BAhCF,CAkCE,wBACE,cAhCJ,CAoCA,yBAEE,WAAY,CADZ,cAhCF,CAkCE,iCACE,cAhCJ","sources":["webpack://angular-material-form-builder/./src/lib/index.scss"],"sourcesContent":["@import url(https://fonts.googleapis.com/icon?family=Material+Icons);\n\n$button-dim: 36px;\n\n.main-view {\n  .content {\n    .builder,\n    .view,\n    .json {\n      border-right: 1px solid #cccccc;\n      height: 800px;\n      overflow: auto;\n    }\n  }\n}\n\n.builder-icon {\n  min-height: $button-dim;\n  min-width: $button-dim;\n  height: $button-dim;\n  width: $button-dim;\n  line-height: 0;\n}\n\nform-item {\n  .option-item {\n    min-height: 75px;\n\n    .md-button {\n      @extend .builder-icon;\n      line-height: 0;\n      margin-top: 20px;\n\n      &.handle:active,\n      &.handle:hover {\n        cursor: move;\n      }\n    }\n  }\n\n  .form-item-container {\n    position: relative;\n    padding-top: 30px;\n\n    .form-item-actions {\n      position: absolute;\n      right: 20px;\n      top: 0;\n    }\n\n    .md-button {\n      @extend .builder-icon;\n    }\n  }\n}\n\nform-view {\n  .formItem-title {\n    font-size: 18px;\n  }\n\n  .formItem-content {\n    font-size: 18px;\n  }\n\n  .formItem-help-text {\n    font-size: 14px;\n    color: #6c6c6c;\n  }\n\n  .matrix-container {\n    overflow: auto;\n\n    .matrix {\n      .matrix-row {\n        border-bottom: 1px solid #4caf50;\n      }\n\n      .matrix-cell {\n        text-align: center;\n        overflow: hidden;\n      }\n\n      md-radio-button {\n        .md-label {\n          margin-left: 0;\n          margin-right: 0;\n        }\n      }\n\n      md-radio-button,\n      .md-switch-thumb {\n        margin: 15px 0;\n      }\n    }\n  }\n}\n\ni.material-icons {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  transform: translate(-50%, -50%);\n\n  &.medium {\n    font-size: 36px;\n  }\n}\n\n.md-button.upload-button {\n  padding: 0 16px;\n  height: 36px;\n  md-icon {\n    font-size: 16px;\n  }\n}\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
index 3c10a1f..647c48c 100644 (file)
@@ -1,2 +1,2 @@
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["angular-material-form-builder"]=t():e["angular-material-form-builder"]=t()}(self,(function(){return(()=>{"use strict";var e={"./src/lib/directives/agreement-item/agreement-item.controller.js":(e,t,i)=>{function n(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{maxSelections:null},options:[{value:"",selected:!1}]})}i.r(t),i.d(t,{AgreementItemCtrl:()=>n}),n.$inject=["Utils","$element"]},"./src/lib/directives/agreement-item/agreement-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{AgreementItem:()=>o});var n=i("./src/lib/directives/agreement-item/agreement-item.controller.js");class o{constructor(){this.restrict="E",this.scope={item:"="},this.controller=n.AgreementItemCtrl,this.controllerAs="Agreement",this.bindToController=!0}}o.$inject=[]},"./src/lib/directives/agreement-item/agreement-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{AgreementViewCtrl:()=>n});class n{constructor(e,t){this.Scope=e,this.Utils=t,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem||{},{config:{},options:[{value:"",selected:!1}]}),this.selectedOptions=this._getSelectedOptions(),this.disableOptions=!1,this.isValid=!0,this._updateView(),this._updateValidity(),this.isPreview()&&this._enableWatchers()}toggleSelectedOption(){this.selectedOptions=this._getSelectedOptions(),this._updateView(),this._updateValidity()}_getSelectedOptions(){return this.formItem.options.filter((e=>e.selected))}_updateView(){this.formItem.config.maxSelections&&this.selectedOptions.length===this.formItem.config.maxSelections?this.disableOptions=!0:this.disableOptions=!1}_updateValidity(){this.formItem.config.required?this.isValid=this.selectedOptions.length>0:this.isValid=!0,this.form.$setValidity("minSelections",this.isValid)}_enableWatchers(){this.Scope.$watch("AgreementView.formItem.config.required",(e=>{void 0!==e&&(this._updateView(),this._updateValidity())}))}}n.$inject=["$scope","Utils"]},"./src/lib/directives/agreement-item/agreement-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{AgreementView:()=>r});var n=i("./src/lib/directives/agreement-item/agreement-view.controller.js"),o=i("./src/lib/directives/agreement-item/agreement-view.tpl.html");class r{constructor(e){this.$timeout=e,this.template=o.default,this.restrict="E",this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=n.AgreementViewCtrl,this.controllerAs="AgreementView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/checkboxes-item/checkboxes-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{maxSelections:null},options:[{value:"",selected:!1}]})}deleteOption(e){this.item.options.splice(e,1)}addOption(){this.item.options.push({value:"",selected:!1}),setTimeout((()=>{const e=this.Element.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$element"]},"./src/lib/directives/checkboxes-item/checkboxes-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesItem:()=>r});var n=i("./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html"),o=i("./src/lib/directives/checkboxes-item/checkboxes-item.controller.js");function r(){return{restrict:"E",template:n.default,scope:{item:"="},controller:o.CheckboxesItemCtrl,controllerAs:"Checkboxes",bindToController:!0}}},"./src/lib/directives/checkboxes-item/checkboxes-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesViewCtrl:()=>n});class n{constructor(e,t){this.Scope=e,this.Utils=t,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem||{},{config:{},options:[]}),this.selectedOptions=this._getSelectedOptions(),this.disableOptions=!1,this.isValid=!0,this._updateView(),this._updateValidity(),this.isPreview()&&this._enableWatchers()}toggleSelectedOption(){this.selectedOptions=this._getSelectedOptions(),this._updateView(),this._updateValidity()}_getSelectedOptions(){return this.formItem.options.filter((e=>e.selected))}_updateView(){this.formItem.config.maxSelections&&this.selectedOptions.length===this.formItem.config.maxSelections?this.disableOptions=!0:this.disableOptions=!1}_updateValidity(){this.formItem.config.required?this.isValid=this.selectedOptions.length>0:this.isValid=!0,this.form.$setValidity("minSelections",this.isValid)}_enableWatchers(){this.Scope.$watch("CheckboxesView.formItem.config.required",(e=>{void 0!==e&&(this._updateView(),this._updateValidity())}))}}n.$inject=["$scope","Utils"]},"./src/lib/directives/checkboxes-item/checkboxes-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesView:()=>r});var n=i("./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html"),o=i("./src/lib/directives/checkboxes-item/checkboxes-view.controller.js");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=n.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=o.CheckboxesViewCtrl,this.controllerAs="CheckboxesView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/form-item/form-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{FormItemCtrl:()=>o});const n={upload:"Attachment",agreement:"Agreement",input:"Field",chooseFromList:"Select",label:"Label",multipleChoices:"Choice",matrix:"Matrix",checkboxes:"Options",textarea:"Text"};class o{constructor(e,t,i){this.Attrs=t,this.Utils=i,this.templates={upload:'<upload-item item="FormItem.item"></upload-item>',agreement:'<agreement-item item="FormItem.item"></agreement-item>',input:'<input-item item="FormItem.item"></input-item>',chooseFromList:'<bet-form-choose-from-list item="FormItem.item"></bet-form-choose-from-list>',label:'<label-item item="FormItem.item"></label-item>',multipleChoices:'<radio-button-item item="FormItem.item"></radio-button-item>',matrix:'<matrix-item item="FormItem.item"></matrix-item>',checkboxes:'<checkboxes-item item="FormItem.item"></checkboxes-item>',textarea:'<textarea-item item="FormItem.item"></textarea-item>'},this.item={},this.scope=e}init(){this.item=this.Utils.extend(this.item||{},{type:this.Attrs.type,props:{title:n[this.Attrs.type],helpText:""},config:{required:!1}})}deleteClicked(){this.onDelete({item:this.item,index:this.index()})}_getItemTemplate(e){return'<div class="form-item-container"><div class="form-item-actions"><md-button class="md-button" ng-if="FormItem.Attrs.onDelete" ng-click="FormItem.deleteClicked()"> <md-icon class="material-icons small">delete</md-icon></md-button><md-button class="md-button" ng-if="FormItem.Attrs.onUp" ng-click="FormItem.onUp({item: FormItem.item, index: FormItem.index()})"> <md-icon class="material-icons small">arrow_drop_up</md-icon></md-button><md-button class="md-button" ng-if="FormItem.Attrs.onDown" ng-click="FormItem.onDown({item: FormItem.item, index: FormItem.index()})"> <md-icon class="material-icons small">arrow_drop_down</md-icon></md-button></div><md-input-container><label>Field Title</label><input ng-model="FormItem.item.props.title"/></md-input-container><md-input-container><label>Help Text</label><input ng-model="FormItem.item.props.helpText" /></md-input-container>'+this.templates[e]+'<md-input-container><md-checkbox ng-model="FormItem.item.config.required">Required field</md-checkbox></md-input-container></div>'}}o.$inject=["$scope","$attrs","Utils"]},"./src/lib/directives/form-item/form-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{FormItem:()=>r});var n=i("./src/lib/directives/form-item/form-item.tpl.html"),o=i("./src/lib/directives/form-item/form-item.controller.js");class r{constructor(e){this.$compile=e,this.restrict="E",this.scope={item:"=",onDelete:"&",onUp:"&",onDown:"&",index:"&"},this.controller=o.FormItemCtrl,this.controllerAs="FormItem",this.bindToController=!0,this.template=n.default}link(e,t,i,n){const o=n._getItemTemplate(i.type),r=this.$compile(o)(e);return n.init(),r}}r.$inject=["$compile"]},"./src/lib/directives/form-items-container/form-items-container.controller.js":(e,t,i)=>{i.r(t),i.d(t,{FormItemsContainerCtrl:()=>n});class n{constructor(){this.form={items:[]}}delete(e,t){this.form.items.splice(t,1)}up(e,t){if(0!==t){const i=this.form.items[t-1];this.form.items[t]=i,this.form.items[t-1]=e}}down(e,t){if(t!==this.form.items.length-1){const i=this.form.items[t+1];this.form.items[t]=i,this.form.items[t+1]=e}}}n.$inject=[]},"./src/lib/directives/form-items-container/form-items-container.directive.js":(e,t,i)=>{i.r(t),i.d(t,{FormItemsContainer:()=>r});var n=i("./src/lib/directives/form-items-container/form-items-container.controller.js"),o=i("./src/lib/directives/form-items-container/form-items-container.tpl.html");class r{constructor(){this.restrict="E",this.scope={form:"="},this.template=o.default,this.controller=n.FormItemsContainerCtrl,this.controllerAs="container",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/form-view/form-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{FormViewCtrl:()=>n});class n{constructor(e){this.Scope=e}init(){}}n.$inject=["$scope"]},"./src/lib/directives/form-view/form-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{FormView:()=>r});var n=i("./src/lib/directives/form-view/form-view.controller.js"),o=i("./src/lib/directives/form-view/form-view.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={form:"="},this.controller=n.FormViewCtrl,this.controllerAs="FormView",this.bindToController=!0}link(e,t,i,n){n.init()}}r.$inject=[]},"./src/lib/directives/input-item/input-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{InputItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{type:"text"}})}}n.$inject=["Utils","$element"]},"./src/lib/directives/input-item/input-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{InputItem:()=>r});var n=i("./src/lib/directives/input-item/input-item.controller.js"),o=i("./src/lib/directives/input-item/input-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.InputItemCtrl,this.controllerAs="Input",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/input-item/input-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{InputViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.Utils.extend(this.formItem,{config:{}})}}n.$inject=["Utils"]},"./src/lib/directives/input-item/input-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{InputView:()=>r});var n=i("./src/lib/directives/input-item/input-view.controller.js"),o=i("./src/lib/directives/input-item/input-view.tpl.html");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=o.default,this.scope={formItem:"=",form:"="},this.controller=n.InputViewCtrl,this.controllerAs="InputView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/label-item/label-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{LabelItemCtrl:()=>n});class n{constructor(e){this.Element=e}}n.$inject=["$element"]},"./src/lib/directives/label-item/label-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{LabelItem:()=>r});var n=i("./src/lib/directives/label-item/label-item.controller.js"),o=i("./src/lib/directives/label-item/label-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.LabelItemCtrl,this.controllerAs="Label",this.bindToController=!0}}},"./src/lib/directives/label-item/label-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{LabelViewCtrl:()=>n});class n{constructor(e,t){this.Utils=e,this.$sce=t}init(){this.Utils.extend(this.formItem,{})}get sanitizedTitle(){return this.$sce.trustAsHtml(this.formItem.value)}}n.$inject=["Utils","$sce"]},"./src/lib/directives/label-item/label-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{LabelView:()=>r});var n=i("./src/lib/directives/label-item/label-view.controller.js"),o=i("./src/lib/directives/label-item/label-view.tpl.html");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=o.default,this.scope={formItem:"=",form:"="},this.controller=n.LabelViewCtrl,this.controllerAs="LabelView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/matrix-item/matrix-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixItemCtrl:()=>n});class n{constructor(e,t){this.RowContainer=angular.element(t[0].querySelector(".rowContainer")),this.ColumnContainer=angular.element(t[0].querySelector(".columnContainer")),this.item=e.extend(this.item||{},{config:{rows:[{value:""}],columns:[{value:""}]}})}deleteRow(e){this.item.config.rows.splice(e,1)}addRow(){this.item.config.rows.push({value:""}),setTimeout(function(){const e=this.RowContainer.find("input");e[e.length-1].focus()}.bind(this),0)}deleteColumn(e){this.item.config.columns.splice(e,1)}addColumn(){this.item.config.columns.push({value:""}),setTimeout((()=>{const e=this.ColumnContainer.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$document"]},"./src/lib/directives/matrix-item/matrix-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixItem:()=>r});var n=i("./src/lib/directives/matrix-item/matrix-item.controller.js"),o=i("./src/lib/directives/matrix-item/matrix-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.MatrixItemCtrl,this.controllerAs="Matrix",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/matrix-item/matrix-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixViewCtrl:()=>n});class n{constructor(e,t){this.Scope=e,this.Utils=t,this.isValid=!0,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{rows:[],columns:[]}}),this._updateValidity(),this.isPreview()&&this._enableWatchers()}_updateValidity(){let e=!0;this.formItem.config.required&&(e=!this.formItem.config.rows.some((e=>void 0===e.selected))),this.isValid=e,this.form.$setValidity("required",this.isValid)}_enableWatchers(){this.Scope.$watchGroup(["MatrixView.formItem.config.required","MatrixView.formItem.config.rows.length"],(e=>{void 0!==e&&this._updateValidity()}))}}n.$inject=["$scope","Utils"]},"./src/lib/directives/matrix-item/matrix-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixView:()=>r});var n=i("./src/lib/directives/matrix-item/matrix-view.tpl.html"),o=i("./src/lib/directives/matrix-item/matrix-view.controller.js");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=n.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=o.MatrixViewCtrl,this.controllerAs="MatrixView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/radio-button-item/radio-button-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{},options:[{value:""}]})}deleteOption(e){this.item.options.splice(e,1)}addOption(){this.item.options.push({value:""}),setTimeout((()=>{const e=this.Element.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$element"]},"./src/lib/directives/radio-button-item/radio-button-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonItem:()=>r});var n=i("./src/lib/directives/radio-button-item/radio-button-item.controller.js"),o=i("./src/lib/directives/radio-button-item/radio-button-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.RadioButtonItemCtrl,this.controllerAs="RadioButton",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/radio-button-item/radio-button-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{},options:[]})}}n.$inject=["Utils"]},"./src/lib/directives/radio-button-item/radio-button-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonView:()=>r});var n=i("./src/lib/directives/radio-button-item/radio-button-view.controller.js"),o=i("./src/lib/directives/radio-button-item/radio-button-view.tpl.html");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=o.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=n.RadioButtonViewCtrl,this.controllerAs="RadioButtonView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/select-item/select-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{SelectItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{},options:[{value:""}]})}deleteOption(e){this.item.options.splice(e,1)}addOption(){this.item.options.push({value:""}),setTimeout((()=>{const e=this.Element.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$element"]},"./src/lib/directives/select-item/select-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{SelectItem:()=>r});var n=i("./src/lib/directives/select-item/select-item.tpl.html"),o=i("./src/lib/directives/select-item/select-item.controller.js");class r{constructor(){this.restrict="E",this.template=n.default,this.scope={item:"="},this.controller=o.SelectItemCtrl,this.controllerAs="Select",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/select-item/select-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{SelectViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{},options:[]})}}n.$inject=["Utils"]},"./src/lib/directives/select-item/select-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{SelectView:()=>r});var n=i("./src/lib/directives/select-item/select-view.tpl.html"),o=i("./src/lib/directives/select-item/select-view.controller.js");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=n.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=o.SelectViewCtrl,this.controllerAs="SelectView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/textarea-item/textarea-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{}})}}n.$inject=["Utils","$element"]},"./src/lib/directives/textarea-item/textarea-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaItem:()=>r});var n=i("./src/lib/directives/textarea-item/textarea-item.controller.js"),o=i("./src/lib/directives/textarea-item/textarea-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.TextareaItemCtrl,this.controllerAs="Textarea",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/textarea-item/textarea-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{}})}}n.$inject=["Utils"]},"./src/lib/directives/textarea-item/textarea-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaView:()=>r});var n=i("./src/lib/directives/textarea-item/textarea-view.controller.js"),o=i("./src/lib/directives/textarea-item/textarea-view.tpl.html");class r{constructor(e){this.$timeout=e,this.scope={formItem:"=",form:"="},this.restrict="E",this.template=o.default,this.controller=n.TextareaViewCtrl,this.controllerAs="TextareaView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/upload-item/upload-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{UploadItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{},options:[]})}}n.$inject=["Utils","$element"]},"./src/lib/directives/upload-item/upload-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{UploadItem:()=>r});var n=i("./src/lib/directives/upload-item/upload-item.tpl.html"),o=i("./src/lib/directives/upload-item/upload-item.controller.js");class r{constructor(){this.restrict="E",this.template=n.default,this.scope={item:"="},this.controller=o.UploadItemCtrl,this.controllerAs="Upload",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/upload-item/upload-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{UploadViewCtrl:()=>n});class n{constructor(e,t,i){this.Scope=e,this.Element=i,this.Utils=t,this.formItem={}}init(){this.isMultiple=!1,this.showAllowed=!1,this.formItem=this.Utils.extend(this.formItem||{},{config:{size:10,uploadFileButtonLabel:"Add files"},options:[]}),this.isPreview()&&this._enableWatchers()}_updateMultiple(){this.isMultiple=!!this.formItem.config.multipleUpload;const e=angular.element(this.Element[0].querySelector("input[type=file]"));e&&(this.formItem.options=[],this.isMultiple?e.attr("multiple","multiple"):e.removeAttr("multiple"))}_updateAccept(){this.showAllowed=!!this.formItem.config.showAccept;const e=angular.element(this.Element[0].querySelector("input[type=file]"));e&&(this.showAllowed?e[0].setAttribute("accept",this.formItem.config.accept):(e[0].removeAttribute("accept"),delete this.formItem.config.accept))}_enableWatchers(){this.Scope.$watch("UploadView.formItem.config.multipleUpload",(e=>{void 0!==e&&this._updateMultiple()})),this.Scope.$watch("UploadView.formItem.config.showAccept",(e=>{void 0!==e&&this._updateAccept()})),this.Scope.$watch("UploadView.formItem.config.accept",(e=>{void 0!==e&&this._updateAccept()}))}removeItem(e){this.formItem.options.splice(e,1)}}n.$inject=["$scope","Utils","$element"]},"./src/lib/directives/upload-item/upload-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{UploadView:()=>r});var n=i("./src/lib/directives/upload-item/upload-view.controller.js"),o=i("./src/lib/directives/upload-item/upload-view.tpl.html");class r{constructor(e){this.$timeout=e,this.template=o.default,this.restrict="E",this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=n.UploadViewCtrl,this.controllerAs="UploadView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50);const o=angular.element(t[0].querySelector(".upload-button")),r=angular.element(t[0].querySelector("input[type=file]")),s=angular.element(t[0].querySelector("label"));s.length&&s.css("display","none"),o.on("click",(()=>{s.css("display","none"),"function"==typeof r.trigger?r.trigger("click"):r[0].click()})),r.on("change",(t=>{e.$apply((function(){const e=Array.from(t.target.files),i=1048576*n.formItem.config.size;e.some((e=>e.size>=i))?(s.css("display","block"),s.text(n.formItem.config.sizeErrMessage),n.formItem.options=[]):n.formItem.options=e.map((e=>{const{name:t,size:i,type:n}=e;return{name:t,size:i,type:n,file:e}}))}))}))}}r.$inject=["$timeout"]},"./src/lib/main/main.controller.js":(e,t,i)=>{i.r(t),i.d(t,{MainController:()=>n});class n{constructor(){this.form={items:[]}}addItem(e){this.form.items.push({type:e})}delete(e,t){this.form.items.splice(t,1)}up(e,t){if(0!==t){const i=this.form.items[t-1];this.form.items[t]=i,this.form.items[t-1]=e}}down(e,t){if(t!==this.form.items.length-1){const i=this.form.items[t+1];this.form.items[t]=i,this.form.items[t+1]=e}}}n.$inject=[]},"./src/lib/utils/utils.service.js":(e,t,i)=>{i.r(t),i.d(t,{Utils:()=>n});class n{extend(e,t){return Object.keys(t).reduce(((e,i)=>(void 0===e[i]?e[i]=t[i]:"object"==typeof t[i]&&(e[i]=this.extend(e[i],t[i])),e)),void 0===e?{}:e)}}},"./src/lib/index.scss":(e,t,i)=>{i.r(t)},"./src/lib/directives/agreement-item/agreement-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container>\n  <div\n    layout="{{AgreementView.formItem.config.direction == \'horizontal\' ? \'row\' : \'columb\'}}"\n  >\n    <md-checkbox\n      ng-model="AgreementView.formItem.options[0].selected"\n      ng-change="AgreementView.toggleSelectedOption(option)"\n      ng-disabled="AgreementView.disableOptions && !option.selected"\n      aria-label="..."\n      >{{AgreementView.formItem.options[0].value}}</md-checkbox\n    >\n  </div>\n\n  <div ng-messages="AgreementView.form.$error">\n    <div ng-message="minSelections">\n      Must select {{AgreementView.formItem.maxSelections || 1}} items\n    </div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="Checkboxes.item.options"\n>\n  <md-input-container class="md-block">\n    <label>Max Selections</label>\n    <input type="number" ng-model="Checkboxes.item.config.maxSelections" />\n  </md-input-container>\n\n  <md-switch\n    ng-model="Checkboxes.item.config.direction"\n    ng-true-value="\'horizontal\'"\n    ng-false-value="\'vertical\'"\n  >\n    Layout direction ({{Checkboxes.item.config.direction == \'horizontal\' ?\n    \'Horizontal\' : \'Vertical\'}})\n  </md-switch>\n\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="option in Checkboxes.item.options track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="md-block">\n      <label>Option {{$index + 1}}</label>\n      <input ng-model="option.value" />\n    </md-input-container>\n\n    <md-button class="md-button" ng-click="Checkboxes.deleteOption($index)">\n      <md-icon class="material-icons">delete</md-icon>\n    </md-button>\n  </div>\n  <div layout="row" layout-align="start">\n    <md-button\n      class="md-primary add-option-button"\n      ng-click="Checkboxes.addOption()"\n    >\n      <md-icon class="material-icons">add</md-icon>\n    </md-button>\n  </div>\n</div>\n'},"./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container>\n  <div\n    layout="{{CheckboxesView.formItem.config.direction == \'horizontal\' ? \'row\' : \'column\'}}"\n  >\n    <md-checkbox\n      ng-repeat="option in CheckboxesView.formItem.options track by $index"\n      ng-model="option.selected"\n      ng-change="CheckboxesView.toggleSelectedOption(option)"\n      ng-disabled="CheckboxesView.disableOptions && !option.selected"\n      aria-label="..."\n      >{{option.value}}</md-checkbox\n    >\n  </div>\n\n  <div ng-messages="CheckboxesView.form.$error">\n    <div ng-message="minSelections">\n      Must select {{CheckboxesView.formItem.maxSelections || 1}} items\n    </div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/form-item/form-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div class="form-item-container md-inline-form">\n  <div class="form-item-actions">\n    <md-button\n      class="md-button"\n      ng-if="FormItem.Attrs.onDelete"\n      ng-click="FormItem.deleteClicked()"\n    >\n      <md-icon class="material-icons small">delete</md-icon>\n    </md-button>\n    <md-button\n      class="md-button"\n      ng-if="FormItem.Attrs.onUp"\n      ng-click="FormItem.onUp({item: FormItem.item, index: FormItem.index()})"\n    >\n      <md-icon class="material-icons small">arrow_drop_up</md-icon>\n    </md-button>\n    <md-button\n      class="md-button"\n      ng-if="FormItem.Attrs.onDown"\n      ng-click="FormItem.onDown({item: FormItem.item, index: FormItem.index()})"\n    >\n      <md-icon class="material-icons small">arrow_drop_down</md-icon>\n    </md-button>\n  </div>\n\n  <md-input-container ng-if="FormItem.item.type != \'label\'" class="md-block">\n    <label>Field Title</label>\n    <input ng-model="FormItem.item.props.title" />\n  </md-input-container>\n\n  <md-input-container ng-if="FormItem.item.type != \'label\'" class="md-block">\n    <label>Help Text</label>\n    <input ng-model="FormItem.item.props.helpText" />\n  </md-input-container>\n\n  <md-input-container\n    ng-if="FormItem.item.type === \'agreement\'"\n    class="md-block"\n  >\n    <label>Option Text</label>\n    <input ng-model="FormItem.item.options[0].value" />\n  </md-input-container>\n\n  <div ng-switch="FormItem.item.type">\n    <upload-item ng-switch-when="upload" item="FormItem.item"></upload-item>\n    <agreement-item\n      ng-switch-when="agreement"\n      item="FormItem.item"\n    ></agreement-item>\n    <label-item ng-switch-when="label" item="FormItem.item"></label-item>\n    <input-item ng-switch-when="input" item="FormItem.item"></input-item>\n    <radio-button-item\n      ng-switch-when="multipleChoices"\n      item="FormItem.item"\n    ></radio-button-item>\n    <matrix-item ng-switch-when="matrix" item="FormItem.item"></matrix-item>\n    <checkboxes-item\n      ng-switch-when="checkboxes"\n      item="FormItem.item"\n    ></checkboxes-item>\n    <textarea-item\n      ng-switch-when="textarea"\n      item="FormItem.item"\n    ></textarea-item>\n    <select-item\n      ng-switch-when="chooseFromList"\n      item="FormItem.item"\n    ></select-item>\n    <p ng-switch-default>UNKNOWN TYPE</p>\n  </div>\n\n  <md-input-container\n    ng-if="FormItem.item.type != \'label\' && FormItem.item.type != \'upload\'"\n    class="md-block"\n  >\n    <md-checkbox ng-model="FormItem.item.config.required"\n      >Required field</md-checkbox\n    >\n  </md-input-container>\n</div>\n'},"./src/lib/directives/form-items-container/form-items-container.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div>\n  <form-item\n    ng-repeat="item in container.form.items track by $index"\n    type="{{item.type}}"\n    item="item"\n    index="$index"\n    on-delete="container.delete(item, index)"\n    on-up="container.up(item, index)"\n    on-down="container.down(item, index)"\n  >\n  </form-item>\n</div>\n'},"./src/lib/directives/form-view/form-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div class="md-inline-form">\n  <div\n    class="formItem"\n    ng-repeat="formItem in FormView.form.items track by $index"\n    ng-switch="formItem.type"\n    layout="column"\n  >\n    <ng-form name="formItemForm">\n      <div>\n        <div class="formItem-title" ng-show="formItem.type !== \'label\'">{{formItem.props.title}}</div>\n        <div class="formItem-help-text">{{formItem.props.helpText}}</div>\n\n        <upload-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="upload"\n        ></upload-view>\n        <agreement-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="agreement"\n        ></agreement-view>\n        <checkboxes-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="checkboxes"\n        ></checkboxes-view>\n        <radio-button-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="multipleChoices"\n        ></radio-button-view>\n        <input-view\n          form-item="formItem"\n          form="formItemForm"\n          ng-switch-when="input"\n        ></input-view>\n        <textarea-view\n          form-item="formItem"\n          form="formItemForm"\n          ng-switch-when="textarea"\n        ></textarea-view>\n        <matrix-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="matrix"\n        ></matrix-view>\n        <select-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="chooseFromList"\n        ></select-view>\n        <label-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="label"\n        ></label-view>\n      </div>\n    </ng-form>\n  </div>\n</div>\n'},"./src/lib/directives/input-item/input-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <label>Placeholder</label>\n  <input type="text" ng-model="Input.item.config.placeholder" />\n</md-input-container>\n<md-input-container class="md-block">\n  <label>Type</label>\n  <md-select ng-model="Input.item.config.type">\n    <md-option value="text">Text</md-option>\n    <md-option value="number">Number</md-option>\n    <md-option value="email">Email</md-option>\n  </md-select>\n</md-input-container>\n'},"./src/lib/directives/input-item/input-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <input\n    ng-model="InputView.formItem.value"\n    type="{{InputView.formItem.config.type}}"\n    placeholder="{{InputView.formItem.config.placeholder}}"\n    ng-required="InputView.formItem.config.required"\n  />\n  <div ng-messages="InputView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/label-item/label-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <label>Text</label>\n  <textarea ng-model="Label.item.value"></textarea>\n</md-input-container>\n'},"./src/lib/directives/label-item/label-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <md-content\n    flex\n    layout-padding\n    layout="row"\n    layout-align="center center"\n    ng-bind-html="LabelView.sanitizedTitle"\n  >\n  </md-content>\n</md-input-container>\n'},"./src/lib/directives/matrix-item/matrix-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container columnContainer"\n  layout="column"\n  sv-root\n  sv-part="Matrix.item.config.columns"\n>\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="column in Matrix.item.config.columns track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="input-container">\n      <label>Column {{$index + 1}}</label>\n      <input ng-model="column.value" />\n    </md-input-container>\n\n    <md-button\n      class="md-button"\n      md-no-ink\n      aria-label="delete column item"\n      ng-click="Matrix.deleteColumn($index)"\n    >\n      <md-icon class="material-icons">delete</md-icon>\n      <md-tooltip md-autohide="true">Delete</md-tooltip>\n    </md-button>\n  </div>\n  <div layout="row" layout-align="start">\n    <md-button\n      class="md-primary add-option-button"\n      md-no-ink\n      aria-label="add option item"\n      ng-click="Matrix.addColumn()"\n      >Add Column</md-button\n    >\n  </div>\n</div>\n\n<div\n  class="sortable-container rowContainer"\n  layout="column"\n  sv-root\n  sv-part="Matrix.item.config.rows"\n>\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="row in Matrix.item.config.rows track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder row item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="input-container">\n      <label>Row {{$index + 1}}</label>\n      <input ng-model="row.value" />\n    </md-input-container>\n\n    <md-button\n      class="md-button"\n      md-no-ink\n      aria-label="delete row item"\n      ng-click="Matrix.deleteRow($index)"\n    >\n      <md-icon class="material-icons">delete</md-icon>\n      <md-tooltip md-autohide="true">Delete</md-tooltip>\n    </md-button>\n  </div>\n  <div layout="row" layout-align="start">\n    <md-button\n      class="md-primary add-option-button"\n      md-no-ink\n      aria-label="add row item"\n      ng-click="Matrix.addRow()"\n      >Add row</md-button\n    >\n  </div>\n</div>\n'},"./src/lib/directives/matrix-item/matrix-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="matrix-container md-block" layout="column">\n  <div class="matrix">\n    <div class="matrix-row" flex layout="row">\n      <span class="matrix-cell" flex="20"></span>\n      <span\n        class="matrix-cell matrix-cell-header"\n        flex\n        ng-repeat="column in MatrixView.formItem.config.columns track by $index"\n        >{{column.value}}</span\n      >\n    </div>\n    <div\n      class="matrix-row"\n      ng-repeat="row in MatrixView.formItem.config.rows track by $index"\n      layout="row"\n    >\n      <span class="matrix-cell" flex="20" layout="column" layout-align="center"\n        >{{row.value}}</span\n      >\n      <md-radio-group\n        ng-model="row.selected"\n        ng-change="MatrixView._updateValidity()"\n        flex\n        layout="row"\n      >\n        <span\n          class="matrix-cell radio-button-cell"\n          flex\n          ng-repeat="column in MatrixView.formItem.config.columns track by $index"\n        >\n          <md-radio-button\n            value="{{column.value}}"\n            aria-label="..."\n          ></md-radio-button>\n        </span>\n      </md-radio-group>\n    </div>\n  </div>\n\n  <div ng-messages="MatrixView.form.$error">\n    <div ng-message="required">This is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/radio-button-item/radio-button-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="RadioButton.item.options"\n>\n  <md-switch\n    ng-model="RadioButton.item.config.direction"\n    ng-true-value="\'horizontal\'"\n    ng-false-value="\'vertical\'"\n  >\n    Layout direction ({{RadioButton.item.config.direction == \'horizontal\' ?\n    \'Horizontal\' : \'Vertical\'}})\n  </md-switch>\n\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="option in RadioButton.item.options track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="md-block">\n      <label>Option {{$index + 1}}</label>\n      <input ng-model="option.value" />\n    </md-input-container>\n\n    <md-button\n      class="md-button md-warn"\n      ng-click="RadioButton.deleteOption($index)"\n    >\n      <md-icon class="material-icons">delete</md-icon>\n    </md-button>\n  </div>\n\n  <md-button class="md-raised md-accent" ng-click="RadioButton.addOption()"\n    >Add Option</md-button\n  >\n</div>\n'},"./src/lib/directives/radio-button-item/radio-button-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <md-radio-group\n    name="formItemInput"\n    ng-required="RadioButtonView.formItem.config.required"\n    ng-model="RadioButtonView.formItem.value"\n    layout="{{RadioButtonView.formItem.config.direction == \'horizontal\' ? \'row\' : \'column\'}}"\n    required\n  >\n    <md-radio-button\n      ng-repeat="option in RadioButtonView.formItem.options track by $index"\n      value="{{option.value}}"\n      aria-label="..."\n    >\n      {{option.value}}\n    </md-radio-button>\n  </md-radio-group>\n\n  <div ng-messages="RadioButtonView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/select-item/select-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="Select.item.options"\n>\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="option in Select.item.options track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="md-block">\n      <label>Option {{$index + 1}}</label>\n      <input ng-model="option.value" />\n    </md-input-container>\n\n    <md-button class="md-button md-warn" ng-click="Select.deleteOption($index)">\n      <md-icon class="material-icons">delete</md-icon>\n    </md-button>\n  </div>\n\n  <md-button class="md-raised md-accent" ng-click="Select.addOption()"\n    >Add Option</md-button\n  >\n</div>\n'},"./src/lib/directives/select-item/select-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <md-select\n    name="formItemInput"\n    ng-required="SelectView.formItem.config.required"\n    ng-model="SelectView.formItem.value"\n  >\n    <md-option\n      ng-repeat="option in SelectView.formItem.options track by $index"\n      ng-value="option.value"\n      >{{ option.value }}</md-option\n    >\n  </md-select>\n  <div ng-messages="SelectView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/textarea-item/textarea-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <label>Placeholder</label>\n  <input type="text" ng-model="Textarea.item.config.placeholder" />\n</md-input-container>\n'},"./src/lib/directives/textarea-item/textarea-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <textarea\n    ng-model="TextareaView.formItem.value"\n    placeholder="{{TextareaView.formItem.config.placeholder}}"\n    ng-required="TextareaView.formItem.config.required"\n  ></textarea>\n  <div ng-messages="TextareaView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/upload-item/upload-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="Upload.item.options"\n>\n  <md-input-container class="md-block">\n    <label>Upload Button label</label>\n    <input ng-model="Upload.item.config.uploadFileButtonLabel" />\n  </md-input-container>\n\n  <md-switch\n    ng-model="Upload.item.config.multipleUpload"\n    ng-true-value="true"\n    ng-false-value="false"\n  >\n    Multiple\n  </md-switch>\n\n  <md-input-container class="md-block">\n    <span>Max File size: {{Upload.item.config.size}} Mb</span>\n    <input\n      type="number"\n      id="size"\n      name="size"\n      min="0.1"\n      max="999"\n      step="0.1"\n      aria-label="size"\n      ng-model="Upload.item.config.size"\n    />\n  </md-input-container>\n\n  <md-input-container class="md-block">\n    <label>Max file size error message</label>\n    <textarea\n      ng-model="Upload.item.config.sizeErrMessage"\n      md-maxlength="150"\n      rows="2"\n    ></textarea>\n  </md-input-container>\n\n  <md-switch\n    ng-model="Upload.item.config.showAccept"\n    ng-true-value="true"\n    ng-false-value="false"\n  >\n    Configure allowed file types\n  </md-switch>\n\n  <md-input-container class="md-block" ng-if="Upload.item.config.showAccept">\n    <label>Allowed Types</label>\n    <textarea\n      ng-model="Upload.item.config.accept"\n      md-maxlength="150"\n      rows="2"\n    ></textarea>\n  </md-input-container>\n</div>\n'},"./src/lib/directives/upload-item/upload-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div layout="row" class="option-item upload-item">\n  <md-input-container class="md-block" style="margin: 0">\n    <input type="file" class="ng-hide" aria-label="file" />\n    <md-input-container flex class="md-block">\n      <input\n        type="text"\n        ng-model="fileName"\n        class="ng-hide"\n        disabled\n        aria-label="fileName"\n      />\n    </md-input-container>\n  </md-input-container>\n\n  <md-button class="md-raised md-accent upload-button"\n    ><md-icon class="material-icons">attach_file</md-icon\n    ><span\n      >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\n    ></md-button\n  >\n</div>\n\n<div>\n  <label></label>\n  <div\n    style="display: grid; grid-template-columns: 8em auto; align-items: center"\n    layout="row"\n    ng-repeat="option in UploadView.formItem.options track by $index"\n  >\n    <md-button ng-click="UploadView.removeItem($index)" class="md-icon-button">\n      <md-icon class="material-icons">close</md-icon>\n    </md-button>\n    <span>{{option.name}}</span>\n  </div>\n</div>\n'}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{i.r(n),i.d(n,{default:()=>$});i("./src/lib/index.scss");var e=i("./src/lib/directives/upload-item/upload-item.directive.js"),t=i("./src/lib/directives/upload-item/upload-view.directive.js"),o=i("./src/lib/directives/agreement-item/agreement-item.directive.js"),r=i("./src/lib/directives/agreement-item/agreement-view.directive.js"),s=i("./src/lib/main/main.controller.js"),l=i("./src/lib/utils/utils.service.js"),m=i("./src/lib/directives/checkboxes-item/checkboxes-item.directive.js"),c=i("./src/lib/directives/checkboxes-item/checkboxes-view.directive.js"),a=i("./src/lib/directives/form-item/form-item.directive.js"),d=i("./src/lib/directives/form-items-container/form-items-container.directive.js"),u=i("./src/lib/directives/form-view/form-view.directive.js"),p=i("./src/lib/directives/input-item/input-item.directive.js"),h=i("./src/lib/directives/input-item/input-view.directive.js"),b=i("./src/lib/directives/label-item/label-item.directive.js"),v=i("./src/lib/directives/label-item/label-view.directive.js"),f=i("./src/lib/directives/matrix-item/matrix-item.directive.js"),g=i("./src/lib/directives/matrix-item/matrix-view.directive.js"),w=i("./src/lib/directives/radio-button-item/radio-button-item.directive.js"),x=i("./src/lib/directives/radio-button-item/radio-button-view.directive.js"),I=i("./src/lib/directives/select-item/select-view.directive.js"),k=i("./src/lib/directives/select-item/select-item.directive.js"),V=i("./src/lib/directives/textarea-item/textarea-item.directive.js"),j=i("./src/lib/directives/textarea-item/textarea-view.directive.js");const $=angular.module("angularMaterialFormBuilder",["ngMaterial","angular-sortable-view","ngMessages"]).service("Utils",l.Utils).controller("MainController",s.MainController).directive("uploadItem",e.UploadItem).directive("uploadView",t.UploadView).directive("agreementItem",o.AgreementItem).directive("agreementView",r.AgreementView).directive("checkboxesItem",m.CheckboxesItem).directive("checkboxesView",c.CheckboxesView).directive("formItem",a.FormItem).directive("formItemsContainer",d.FormItemsContainer).directive("formView",u.FormView).directive("inputItem",p.InputItem).directive("inputView",h.InputView).directive("labelItem",b.LabelItem).directive("labelView",v.LabelView).directive("matrixItem",f.MatrixItem).directive("matrixView",g.MatrixView).directive("radioButtonItem",w.RadioButtonItem).directive("radioButtonView",x.RadioButtonView).directive("selectItem",k.SelectItem).directive("selectView",I.SelectView).directive("textareaItem",V.TextareaItem).directive("textareaView",j.TextareaView)})(),n})()}));
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["angular-material-form-builder"]=t():e["angular-material-form-builder"]=t()}(self,(function(){return(()=>{"use strict";var e={"./src/lib/directives/agreement-item/agreement-item.controller.js":(e,t,i)=>{function n(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{maxSelections:null},options:[{value:"",selected:!1}]})}i.r(t),i.d(t,{AgreementItemCtrl:()=>n}),n.$inject=["Utils","$element"]},"./src/lib/directives/agreement-item/agreement-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{AgreementItem:()=>o});var n=i("./src/lib/directives/agreement-item/agreement-item.controller.js");class o{constructor(){this.restrict="E",this.scope={item:"="},this.controller=n.AgreementItemCtrl,this.controllerAs="Agreement",this.bindToController=!0}}o.$inject=[]},"./src/lib/directives/agreement-item/agreement-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{AgreementViewCtrl:()=>n});class n{constructor(e,t){this.Scope=e,this.Utils=t,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem||{},{config:{},options:[{value:"",selected:!1}]}),this.selectedOptions=this._getSelectedOptions(),this.disableOptions=!1,this.isValid=!0,this._updateView(),this._updateValidity(),this.isPreview()&&this._enableWatchers()}toggleSelectedOption(){this.selectedOptions=this._getSelectedOptions(),this._updateView(),this._updateValidity()}_getSelectedOptions(){return this.formItem.options.filter((e=>e.selected))}_updateView(){this.formItem.config.maxSelections&&this.selectedOptions.length===this.formItem.config.maxSelections?this.disableOptions=!0:this.disableOptions=!1}_updateValidity(){this.formItem.config.required?this.isValid=this.selectedOptions.length>0:this.isValid=!0,this.form.$setValidity("minSelections",this.isValid)}_enableWatchers(){this.Scope.$watch("AgreementView.formItem.config.required",(e=>{void 0!==e&&(this._updateView(),this._updateValidity())}))}}n.$inject=["$scope","Utils"]},"./src/lib/directives/agreement-item/agreement-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{AgreementView:()=>r});var n=i("./src/lib/directives/agreement-item/agreement-view.controller.js"),o=i("./src/lib/directives/agreement-item/agreement-view.tpl.html");class r{constructor(e){this.$timeout=e,this.template=o.default,this.restrict="E",this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=n.AgreementViewCtrl,this.controllerAs="AgreementView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/checkboxes-item/checkboxes-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{maxSelections:null},options:[{value:"",selected:!1}]})}deleteOption(e){this.item.options.splice(e,1)}addOption(){this.item.options.push({value:"",selected:!1}),setTimeout((()=>{const e=this.Element.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$element"]},"./src/lib/directives/checkboxes-item/checkboxes-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesItem:()=>r});var n=i("./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html"),o=i("./src/lib/directives/checkboxes-item/checkboxes-item.controller.js");function r(){return{restrict:"E",template:n.default,scope:{item:"="},controller:o.CheckboxesItemCtrl,controllerAs:"Checkboxes",bindToController:!0}}},"./src/lib/directives/checkboxes-item/checkboxes-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesViewCtrl:()=>n});class n{constructor(e,t){this.Scope=e,this.Utils=t,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem||{},{config:{},options:[]}),this.selectedOptions=this._getSelectedOptions(),this.disableOptions=!1,this.isValid=!0,this._updateView(),this._updateValidity(),this.isPreview()&&this._enableWatchers()}toggleSelectedOption(){this.selectedOptions=this._getSelectedOptions(),this._updateView(),this._updateValidity()}_getSelectedOptions(){return this.formItem.options.filter((e=>e.selected))}_updateView(){this.formItem.config.maxSelections&&this.selectedOptions.length===this.formItem.config.maxSelections?this.disableOptions=!0:this.disableOptions=!1}_updateValidity(){this.formItem.config.required?this.isValid=this.selectedOptions.length>0:this.isValid=!0,this.form.$setValidity("minSelections",this.isValid)}_enableWatchers(){this.Scope.$watch("CheckboxesView.formItem.config.required",(e=>{void 0!==e&&(this._updateView(),this._updateValidity())}))}}n.$inject=["$scope","Utils"]},"./src/lib/directives/checkboxes-item/checkboxes-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{CheckboxesView:()=>r});var n=i("./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html"),o=i("./src/lib/directives/checkboxes-item/checkboxes-view.controller.js");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=n.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=o.CheckboxesViewCtrl,this.controllerAs="CheckboxesView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/form-item/form-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{FormItemCtrl:()=>o});const n={upload:"Attachment",agreement:"Agreement",input:"Field",chooseFromList:"Select",label:"Label",multipleChoices:"Choice",matrix:"Matrix",checkboxes:"Options",textarea:"Text"};class o{constructor(e,t,i){this.Attrs=t,this.Utils=i,this.templates={upload:'<upload-item item="FormItem.item"></upload-item>',agreement:'<agreement-item item="FormItem.item"></agreement-item>',input:'<input-item item="FormItem.item"></input-item>',chooseFromList:'<bet-form-choose-from-list item="FormItem.item"></bet-form-choose-from-list>',label:'<label-item item="FormItem.item"></label-item>',multipleChoices:'<radio-button-item item="FormItem.item"></radio-button-item>',matrix:'<matrix-item item="FormItem.item"></matrix-item>',checkboxes:'<checkboxes-item item="FormItem.item"></checkboxes-item>',textarea:'<textarea-item item="FormItem.item"></textarea-item>'},this.item={},this.scope=e}init(){this.item=this.Utils.extend(this.item||{},{type:this.Attrs.type,props:{title:n[this.Attrs.type],helpText:""},config:{required:!1}})}deleteClicked(){this.onDelete({item:this.item,index:this.index()})}_getItemTemplate(e){return'<div class="form-item-container"><div class="form-item-actions"><md-button class="md-button" ng-if="FormItem.Attrs.onDelete" ng-click="FormItem.deleteClicked()"> <md-icon class="material-icons small">delete</md-icon></md-button><md-button class="md-button" ng-if="FormItem.Attrs.onUp" ng-click="FormItem.onUp({item: FormItem.item, index: FormItem.index()})"> <md-icon class="material-icons small">arrow_drop_up</md-icon></md-button><md-button class="md-button" ng-if="FormItem.Attrs.onDown" ng-click="FormItem.onDown({item: FormItem.item, index: FormItem.index()})"> <md-icon class="material-icons small">arrow_drop_down</md-icon></md-button></div><md-input-container><label>Field Title</label><input ng-model="FormItem.item.props.title"/></md-input-container><md-input-container><label>Help Text</label><input ng-model="FormItem.item.props.helpText" /></md-input-container>'+this.templates[e]+'<md-input-container><md-checkbox ng-model="FormItem.item.config.required">Required field</md-checkbox></md-input-container></div>'}}o.$inject=["$scope","$attrs","Utils"]},"./src/lib/directives/form-item/form-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{FormItem:()=>r});var n=i("./src/lib/directives/form-item/form-item.tpl.html"),o=i("./src/lib/directives/form-item/form-item.controller.js");class r{constructor(e){this.$compile=e,this.restrict="E",this.scope={item:"=",onDelete:"&",onUp:"&",onDown:"&",index:"&"},this.controller=o.FormItemCtrl,this.controllerAs="FormItem",this.bindToController=!0,this.template=n.default}link(e,t,i,n){const o=n._getItemTemplate(i.type),r=this.$compile(o)(e);return n.init(),r}}r.$inject=["$compile"]},"./src/lib/directives/form-items-container/form-items-container.controller.js":(e,t,i)=>{i.r(t),i.d(t,{FormItemsContainerCtrl:()=>n});class n{constructor(){this.form={items:[]}}delete(e,t){this.form.items.splice(t,1)}up(e,t){if(0!==t){const i=this.form.items[t-1];this.form.items[t]=i,this.form.items[t-1]=e}}down(e,t){if(t!==this.form.items.length-1){const i=this.form.items[t+1];this.form.items[t]=i,this.form.items[t+1]=e}}}n.$inject=[]},"./src/lib/directives/form-items-container/form-items-container.directive.js":(e,t,i)=>{i.r(t),i.d(t,{FormItemsContainer:()=>r});var n=i("./src/lib/directives/form-items-container/form-items-container.controller.js"),o=i("./src/lib/directives/form-items-container/form-items-container.tpl.html");class r{constructor(){this.restrict="E",this.scope={form:"="},this.template=o.default,this.controller=n.FormItemsContainerCtrl,this.controllerAs="container",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/form-view/form-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{FormViewCtrl:()=>n});class n{constructor(e){this.Scope=e}init(){}}n.$inject=["$scope"]},"./src/lib/directives/form-view/form-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{FormView:()=>r});var n=i("./src/lib/directives/form-view/form-view.controller.js"),o=i("./src/lib/directives/form-view/form-view.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={form:"="},this.controller=n.FormViewCtrl,this.controllerAs="FormView",this.bindToController=!0}link(e,t,i,n){n.init()}}r.$inject=[]},"./src/lib/directives/input-item/input-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{InputItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{type:"text"}})}}n.$inject=["Utils","$element"]},"./src/lib/directives/input-item/input-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{InputItem:()=>r});var n=i("./src/lib/directives/input-item/input-item.controller.js"),o=i("./src/lib/directives/input-item/input-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.InputItemCtrl,this.controllerAs="Input",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/input-item/input-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{InputViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.Utils.extend(this.formItem,{config:{}})}}n.$inject=["Utils"]},"./src/lib/directives/input-item/input-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{InputView:()=>r});var n=i("./src/lib/directives/input-item/input-view.controller.js"),o=i("./src/lib/directives/input-item/input-view.tpl.html");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=o.default,this.scope={formItem:"=",form:"="},this.controller=n.InputViewCtrl,this.controllerAs="InputView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/label-item/label-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{LabelItemCtrl:()=>n});class n{constructor(e){this.Element=e}}n.$inject=["$element"]},"./src/lib/directives/label-item/label-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{LabelItem:()=>r});var n=i("./src/lib/directives/label-item/label-item.controller.js"),o=i("./src/lib/directives/label-item/label-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.LabelItemCtrl,this.controllerAs="Label",this.bindToController=!0}}},"./src/lib/directives/label-item/label-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{LabelViewCtrl:()=>n});class n{constructor(e,t){this.Utils=e,this.$sce=t}init(){this.Utils.extend(this.formItem,{})}get sanitizedTitle(){return this.$sce.trustAsHtml(this.formItem.value)}}n.$inject=["Utils","$sce"]},"./src/lib/directives/label-item/label-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{LabelView:()=>r});var n=i("./src/lib/directives/label-item/label-view.controller.js"),o=i("./src/lib/directives/label-item/label-view.tpl.html");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=o.default,this.scope={formItem:"=",form:"="},this.controller=n.LabelViewCtrl,this.controllerAs="LabelView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/matrix-item/matrix-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixItemCtrl:()=>n});class n{constructor(e,t){this.RowContainer=angular.element(t[0].querySelector(".rowContainer")),this.ColumnContainer=angular.element(t[0].querySelector(".columnContainer")),this.item=e.extend(this.item||{},{config:{rows:[{value:""}],columns:[{value:""}]}})}deleteRow(e){this.item.config.rows.splice(e,1)}addRow(){this.item.config.rows.push({value:""}),setTimeout(function(){const e=this.RowContainer.find("input");e[e.length-1].focus()}.bind(this),0)}deleteColumn(e){this.item.config.columns.splice(e,1)}addColumn(){this.item.config.columns.push({value:""}),setTimeout((()=>{const e=this.ColumnContainer.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$document"]},"./src/lib/directives/matrix-item/matrix-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixItem:()=>r});var n=i("./src/lib/directives/matrix-item/matrix-item.controller.js"),o=i("./src/lib/directives/matrix-item/matrix-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.MatrixItemCtrl,this.controllerAs="Matrix",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/matrix-item/matrix-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixViewCtrl:()=>n});class n{constructor(e,t){this.Scope=e,this.Utils=t,this.isValid=!0,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{rows:[],columns:[]}}),this._updateValidity(),this.isPreview()&&this._enableWatchers()}_updateValidity(){let e=!0;this.formItem.config.required&&(e=!this.formItem.config.rows.some((e=>void 0===e.selected))),this.isValid=e,this.form.$setValidity("required",this.isValid)}_enableWatchers(){this.Scope.$watchGroup(["MatrixView.formItem.config.required","MatrixView.formItem.config.rows.length"],(e=>{void 0!==e&&this._updateValidity()}))}}n.$inject=["$scope","Utils"]},"./src/lib/directives/matrix-item/matrix-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{MatrixView:()=>r});var n=i("./src/lib/directives/matrix-item/matrix-view.tpl.html"),o=i("./src/lib/directives/matrix-item/matrix-view.controller.js");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=n.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=o.MatrixViewCtrl,this.controllerAs="MatrixView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/radio-button-item/radio-button-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{},options:[{value:""}]})}deleteOption(e){this.item.options.splice(e,1)}addOption(){this.item.options.push({value:""}),setTimeout((()=>{const e=this.Element.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$element"]},"./src/lib/directives/radio-button-item/radio-button-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonItem:()=>r});var n=i("./src/lib/directives/radio-button-item/radio-button-item.controller.js"),o=i("./src/lib/directives/radio-button-item/radio-button-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.RadioButtonItemCtrl,this.controllerAs="RadioButton",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/radio-button-item/radio-button-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{},options:[]})}}n.$inject=["Utils"]},"./src/lib/directives/radio-button-item/radio-button-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{RadioButtonView:()=>r});var n=i("./src/lib/directives/radio-button-item/radio-button-view.controller.js"),o=i("./src/lib/directives/radio-button-item/radio-button-view.tpl.html");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=o.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=n.RadioButtonViewCtrl,this.controllerAs="RadioButtonView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/select-item/select-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{SelectItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{},options:[{value:""}]})}deleteOption(e){this.item.options.splice(e,1)}addOption(){this.item.options.push({value:""}),setTimeout((()=>{const e=this.Element.find("input");e[e.length-1].focus()}),0)}}n.$inject=["Utils","$element"]},"./src/lib/directives/select-item/select-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{SelectItem:()=>r});var n=i("./src/lib/directives/select-item/select-item.tpl.html"),o=i("./src/lib/directives/select-item/select-item.controller.js");class r{constructor(){this.restrict="E",this.template=n.default,this.scope={item:"="},this.controller=o.SelectItemCtrl,this.controllerAs="Select",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/select-item/select-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{SelectViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{},options:[]})}}n.$inject=["Utils"]},"./src/lib/directives/select-item/select-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{SelectView:()=>r});var n=i("./src/lib/directives/select-item/select-view.tpl.html"),o=i("./src/lib/directives/select-item/select-view.controller.js");class r{constructor(e){this.$timeout=e,this.restrict="E",this.template=n.default,this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=o.SelectViewCtrl,this.controllerAs="SelectView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/textarea-item/textarea-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{}})}}n.$inject=["Utils","$element"]},"./src/lib/directives/textarea-item/textarea-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaItem:()=>r});var n=i("./src/lib/directives/textarea-item/textarea-item.controller.js"),o=i("./src/lib/directives/textarea-item/textarea-item.tpl.html");class r{constructor(){this.restrict="E",this.template=o.default,this.scope={item:"="},this.controller=n.TextareaItemCtrl,this.controllerAs="Textarea",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/textarea-item/textarea-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaViewCtrl:()=>n});class n{constructor(e){this.Utils=e,this.formItem={}}init(){this.formItem=this.Utils.extend(this.formItem,{config:{}})}}n.$inject=["Utils"]},"./src/lib/directives/textarea-item/textarea-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{TextareaView:()=>r});var n=i("./src/lib/directives/textarea-item/textarea-view.controller.js"),o=i("./src/lib/directives/textarea-item/textarea-view.tpl.html");class r{constructor(e){this.$timeout=e,this.scope={formItem:"=",form:"="},this.restrict="E",this.template=o.default,this.controller=n.TextareaViewCtrl,this.controllerAs="TextareaView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50)}}r.$inject=["$timeout"]},"./src/lib/directives/upload-item/upload-item.controller.js":(e,t,i)=>{i.r(t),i.d(t,{UploadItemCtrl:()=>n});class n{constructor(e,t){this.Element=t,this.item=e.extend(this.item||{},{config:{},options:[]})}}n.$inject=["Utils","$element"]},"./src/lib/directives/upload-item/upload-item.directive.js":(e,t,i)=>{i.r(t),i.d(t,{UploadItem:()=>r});var n=i("./src/lib/directives/upload-item/upload-item.tpl.html"),o=i("./src/lib/directives/upload-item/upload-item.controller.js");class r{constructor(){this.restrict="E",this.template=n.default,this.scope={item:"="},this.controller=o.UploadItemCtrl,this.controllerAs="Upload",this.bindToController=!0}}r.$inject=[]},"./src/lib/directives/upload-item/upload-view.controller.js":(e,t,i)=>{i.r(t),i.d(t,{UploadViewCtrl:()=>n});class n{constructor(e,t,i){this.Scope=e,this.Element=i,this.Utils=t,this.formItem={}}init(){this.isMultiple=!1,this.showAllowed=!1,this.formItem=this.Utils.extend(this.formItem||{},{config:{size:10,uploadFileButtonLabel:"Add files"},options:[]}),this.isPreview()&&this._enableWatchers()}_updateMultiple(){this.isMultiple=!!this.formItem.config.multipleUpload;const e=angular.element(this.Element[0].querySelector("input[type=file]"));e&&(this.formItem.options=[],this.isMultiple?e.attr("multiple","multiple"):e.removeAttr("multiple"))}_updateAccept(){this.showAllowed=!!this.formItem.config.showAccept;const e=angular.element(this.Element[0].querySelector("input[type=file]"));e&&(this.showAllowed?e[0].setAttribute("accept",this.formItem.config.accept):(e[0].removeAttribute("accept"),delete this.formItem.config.accept))}_enableWatchers(){this.Scope.$watch("UploadView.formItem.config.multipleUpload",(e=>{void 0!==e&&this._updateMultiple()})),this.Scope.$watch("UploadView.formItem.config.showAccept",(e=>{void 0!==e&&this._updateAccept()})),this.Scope.$watch("UploadView.formItem.config.accept",(e=>{void 0!==e&&this._updateAccept()}))}removeItem(e){this.formItem.options.splice(e,1)}}n.$inject=["$scope","Utils","$element"]},"./src/lib/directives/upload-item/upload-view.directive.js":(e,t,i)=>{i.r(t),i.d(t,{UploadView:()=>r});var n=i("./src/lib/directives/upload-item/upload-view.controller.js"),o=i("./src/lib/directives/upload-item/upload-view.tpl.html");class r{constructor(e){this.$timeout=e,this.template=o.default,this.restrict="E",this.scope={formItem:"=",isPreview:"&",form:"="},this.controller=n.UploadViewCtrl,this.controllerAs="UploadView",this.bindToController=!0}link(e,t,i,n){this.$timeout((function(){n.init()}),50);const o=angular.element(t[0].querySelector(".upload-button")),r=angular.element(t[0].querySelector("input[type=file]")),s=angular.element(t[0].querySelector("label"));s.length&&s.css("display","none"),o.on("click",(()=>{s.css("display","none"),"function"==typeof r.trigger?r.trigger("click"):r[0].click()})),r.on("change",(t=>{e.$apply((function(){const e=Array.from(t.target.files),i=1048576*n.formItem.config.size;e.some((e=>e.size>=i))?(s.css("display","block"),s.text(n.formItem.config.sizeErrMessage),n.formItem.options=[]):n.formItem.options=e.map((e=>{const{name:t,size:i,type:n}=e;return{name:t,size:i,type:n,file:e}}))}))}))}}r.$inject=["$timeout"]},"./src/lib/main/main.controller.js":(e,t,i)=>{i.r(t),i.d(t,{MainController:()=>n});class n{constructor(){this.form={items:[]}}addItem(e){this.form.items.push({type:e})}delete(e,t){this.form.items.splice(t,1)}up(e,t){if(0!==t){const i=this.form.items[t-1];this.form.items[t]=i,this.form.items[t-1]=e}}down(e,t){if(t!==this.form.items.length-1){const i=this.form.items[t+1];this.form.items[t]=i,this.form.items[t+1]=e}}}n.$inject=[]},"./src/lib/utils/utils.service.js":(e,t,i)=>{i.r(t),i.d(t,{Utils:()=>n});class n{extend(e,t){return Object.keys(t).reduce(((e,i)=>(void 0===e[i]?e[i]=t[i]:"object"==typeof t[i]&&(e[i]=this.extend(e[i],t[i])),e)),void 0===e?{}:e)}}},"./src/lib/index.scss":(e,t,i)=>{i.r(t)},"./src/lib/directives/agreement-item/agreement-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container>\n  <div\n    layout="{{AgreementView.formItem.config.direction == \'horizontal\' ? \'row\' : \'columb\'}}"\n  >\n    <md-checkbox\n      ng-model="AgreementView.formItem.options[0].selected"\n      ng-change="AgreementView.toggleSelectedOption(option)"\n      ng-disabled="AgreementView.disableOptions && !option.selected"\n      aria-label="..."\n      >{{AgreementView.formItem.options[0].value}}</md-checkbox\n    >\n  </div>\n\n  <div ng-messages="AgreementView.form.$error">\n    <div ng-message="minSelections">\n      Must select {{AgreementView.formItem.maxSelections || 1}} items\n    </div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="Checkboxes.item.options"\n>\n  <md-input-container class="md-block">\n    <label>Max Selections</label>\n    <input type="number" ng-model="Checkboxes.item.config.maxSelections" />\n  </md-input-container>\n\n  <md-switch\n    ng-model="Checkboxes.item.config.direction"\n    ng-true-value="\'horizontal\'"\n    ng-false-value="\'vertical\'"\n  >\n    Layout direction ({{Checkboxes.item.config.direction == \'horizontal\' ?\n    \'Horizontal\' : \'Vertical\'}})\n  </md-switch>\n\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="option in Checkboxes.item.options track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="md-block">\n      <label>Option {{$index + 1}}</label>\n      <input ng-model="option.value" />\n    </md-input-container>\n\n    <md-button class="md-button" ng-click="Checkboxes.deleteOption($index)">\n      <md-icon class="material-icons">delete</md-icon>\n    </md-button>\n  </div>\n  <div layout="row" layout-align="start">\n    <md-button\n      class="md-primary add-option-button"\n      ng-click="Checkboxes.addOption()"\n    >\n      <md-icon class="material-icons">add</md-icon>\n    </md-button>\n  </div>\n</div>\n'},"./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container>\n  <div\n    layout="{{CheckboxesView.formItem.config.direction == \'horizontal\' ? \'row\' : \'column\'}}"\n  >\n    <md-checkbox\n      ng-repeat="option in CheckboxesView.formItem.options track by $index"\n      ng-model="option.selected"\n      ng-change="CheckboxesView.toggleSelectedOption(option)"\n      ng-disabled="CheckboxesView.disableOptions && !option.selected"\n      aria-label="..."\n      >{{option.value}}</md-checkbox\n    >\n  </div>\n\n  <div ng-messages="CheckboxesView.form.$error">\n    <div ng-message="minSelections">\n      Must select {{CheckboxesView.formItem.maxSelections || 1}} items\n    </div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/form-item/form-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div class="form-item-container md-inline-form">\n  <div class="form-item-actions">\n    <md-button\n      class="md-button"\n      ng-if="FormItem.Attrs.onDelete"\n      ng-click="FormItem.deleteClicked()"\n    >\n      <md-icon class="material-icons small">delete</md-icon>\n    </md-button>\n    <md-button\n      class="md-button"\n      ng-if="FormItem.Attrs.onUp"\n      ng-click="FormItem.onUp({item: FormItem.item, index: FormItem.index()})"\n    >\n      <md-icon class="material-icons small">arrow_drop_up</md-icon>\n    </md-button>\n    <md-button\n      class="md-button"\n      ng-if="FormItem.Attrs.onDown"\n      ng-click="FormItem.onDown({item: FormItem.item, index: FormItem.index()})"\n    >\n      <md-icon class="material-icons small">arrow_drop_down</md-icon>\n    </md-button>\n  </div>\n\n  <md-input-container ng-if="FormItem.item.type != \'label\'" class="md-block">\n    <label>Field Title</label>\n    <input ng-model="FormItem.item.props.title" />\n  </md-input-container>\n\n  <md-input-container ng-if="FormItem.item.type != \'label\'" class="md-block">\n    <label>Help Text</label>\n    <input ng-model="FormItem.item.props.helpText" />\n  </md-input-container>\n\n  <md-input-container\n    ng-if="FormItem.item.type === \'agreement\'"\n    class="md-block"\n  >\n    <label>Option Text</label>\n    <input ng-model="FormItem.item.options[0].value" />\n  </md-input-container>\n\n  <div ng-switch="FormItem.item.type">\n    <upload-item ng-switch-when="upload" item="FormItem.item"></upload-item>\n    <agreement-item\n      ng-switch-when="agreement"\n      item="FormItem.item"\n    ></agreement-item>\n    <label-item ng-switch-when="label" item="FormItem.item"></label-item>\n    <input-item ng-switch-when="input" item="FormItem.item"></input-item>\n    <radio-button-item\n      ng-switch-when="multipleChoices"\n      item="FormItem.item"\n    ></radio-button-item>\n    <matrix-item ng-switch-when="matrix" item="FormItem.item"></matrix-item>\n    <checkboxes-item\n      ng-switch-when="checkboxes"\n      item="FormItem.item"\n    ></checkboxes-item>\n    <textarea-item\n      ng-switch-when="textarea"\n      item="FormItem.item"\n    ></textarea-item>\n    <select-item\n      ng-switch-when="chooseFromList"\n      item="FormItem.item"\n    ></select-item>\n    <p ng-switch-default>UNKNOWN TYPE</p>\n  </div>\n\n  <md-input-container\n    ng-if="FormItem.item.type != \'label\' && FormItem.item.type != \'upload\'"\n    class="md-block"\n  >\n    <md-checkbox ng-model="FormItem.item.config.required"\n      >Required field</md-checkbox\n    >\n  </md-input-container>\n</div>\n'},"./src/lib/directives/form-items-container/form-items-container.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div>\n  <form-item\n    ng-repeat="item in container.form.items track by $index"\n    type="{{item.type}}"\n    item="item"\n    index="$index"\n    on-delete="container.delete(item, index)"\n    on-up="container.up(item, index)"\n    on-down="container.down(item, index)"\n  >\n  </form-item>\n</div>\n'},"./src/lib/directives/form-view/form-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div class="md-inline-form">\n  <div\n    class="formItem"\n    ng-repeat="formItem in FormView.form.items track by $index"\n    ng-switch="formItem.type"\n    layout="column"\n  >\n    <ng-form name="formItemForm">\n      <div>\n        <div class="formItem-title" ng-show="formItem.type !== \'label\'">{{formItem.props.title}}</div>\n        <div class="formItem-help-text">{{formItem.props.helpText}}</div>\n\n        <upload-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="upload"\n        ></upload-view>\n        <agreement-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="agreement"\n        ></agreement-view>\n        <checkboxes-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="checkboxes"\n        ></checkboxes-view>\n        <radio-button-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="multipleChoices"\n        ></radio-button-view>\n        <input-view\n          form-item="formItem"\n          form="formItemForm"\n          ng-switch-when="input"\n        ></input-view>\n        <textarea-view\n          form-item="formItem"\n          form="formItemForm"\n          ng-switch-when="textarea"\n        ></textarea-view>\n        <matrix-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="matrix"\n        ></matrix-view>\n        <select-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="chooseFromList"\n        ></select-view>\n        <label-view\n          form-item="formItem"\n          is-preview="true"\n          form="formItemForm"\n          ng-switch-when="label"\n        ></label-view>\n      </div>\n    </ng-form>\n  </div>\n</div>\n'},"./src/lib/directives/input-item/input-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <label>Placeholder</label>\n  <input type="text" ng-model="Input.item.config.placeholder" />\n</md-input-container>\n<md-input-container class="md-block">\n  <label>Type</label>\n  <md-select ng-model="Input.item.config.type">\n    <md-option value="text">Text</md-option>\n    <md-option value="number">Number</md-option>\n    <md-option value="email">Email</md-option>\n  </md-select>\n</md-input-container>\n'},"./src/lib/directives/input-item/input-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <input\n    ng-model="InputView.formItem.value"\n    type="{{InputView.formItem.config.type}}"\n    placeholder="{{InputView.formItem.config.placeholder}}"\n    ng-required="InputView.formItem.config.required"\n  />\n  <div ng-messages="InputView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/label-item/label-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <label>Text</label>\n  <textarea ng-model="Label.item.value" md-maxlength="150" rows="5"></textarea>\n</md-input-container>\n'},"./src/lib/directives/label-item/label-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <md-content flex layout-padding layout="row" layout-align="center center">\n    <pre>\n      \n      <span class="formItem-content" ng-bind-html="LabelView.sanitizedTitle"></span>\n    </pre>\n  </md-content>\n</md-input-container>\n'},"./src/lib/directives/matrix-item/matrix-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container columnContainer"\n  layout="column"\n  sv-root\n  sv-part="Matrix.item.config.columns"\n>\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="column in Matrix.item.config.columns track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="input-container">\n      <label>Column {{$index + 1}}</label>\n      <input ng-model="column.value" />\n    </md-input-container>\n\n    <md-button\n      class="md-button"\n      md-no-ink\n      aria-label="delete column item"\n      ng-click="Matrix.deleteColumn($index)"\n    >\n      <md-icon class="material-icons">delete</md-icon>\n      <md-tooltip md-autohide="true">Delete</md-tooltip>\n    </md-button>\n  </div>\n  <div layout="row" layout-align="start">\n    <md-button\n      class="md-primary add-option-button"\n      md-no-ink\n      aria-label="add option item"\n      ng-click="Matrix.addColumn()"\n      >Add Column</md-button\n    >\n  </div>\n</div>\n\n<div\n  class="sortable-container rowContainer"\n  layout="column"\n  sv-root\n  sv-part="Matrix.item.config.rows"\n>\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="row in Matrix.item.config.rows track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder row item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="input-container">\n      <label>Row {{$index + 1}}</label>\n      <input ng-model="row.value" />\n    </md-input-container>\n\n    <md-button\n      class="md-button"\n      md-no-ink\n      aria-label="delete row item"\n      ng-click="Matrix.deleteRow($index)"\n    >\n      <md-icon class="material-icons">delete</md-icon>\n      <md-tooltip md-autohide="true">Delete</md-tooltip>\n    </md-button>\n  </div>\n  <div layout="row" layout-align="start">\n    <md-button\n      class="md-primary add-option-button"\n      md-no-ink\n      aria-label="add row item"\n      ng-click="Matrix.addRow()"\n      >Add row</md-button\n    >\n  </div>\n</div>\n'},"./src/lib/directives/matrix-item/matrix-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="matrix-container md-block" layout="column">\n  <div class="matrix">\n    <div class="matrix-row" flex layout="row">\n      <span class="matrix-cell" flex="20"></span>\n      <span\n        class="matrix-cell matrix-cell-header"\n        flex\n        ng-repeat="column in MatrixView.formItem.config.columns track by $index"\n        >{{column.value}}</span\n      >\n    </div>\n    <div\n      class="matrix-row"\n      ng-repeat="row in MatrixView.formItem.config.rows track by $index"\n      layout="row"\n    >\n      <span class="matrix-cell" flex="20" layout="column" layout-align="center"\n        >{{row.value}}</span\n      >\n      <md-radio-group\n        ng-model="row.selected"\n        ng-change="MatrixView._updateValidity()"\n        flex\n        layout="row"\n      >\n        <span\n          class="matrix-cell radio-button-cell"\n          flex\n          ng-repeat="column in MatrixView.formItem.config.columns track by $index"\n        >\n          <md-radio-button\n            value="{{column.value}}"\n            aria-label="..."\n          ></md-radio-button>\n        </span>\n      </md-radio-group>\n    </div>\n  </div>\n\n  <div ng-messages="MatrixView.form.$error">\n    <div ng-message="required">This is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/radio-button-item/radio-button-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="RadioButton.item.options"\n>\n  <md-switch\n    ng-model="RadioButton.item.config.direction"\n    ng-true-value="\'horizontal\'"\n    ng-false-value="\'vertical\'"\n  >\n    Layout direction ({{RadioButton.item.config.direction == \'horizontal\' ?\n    \'Horizontal\' : \'Vertical\'}})\n  </md-switch>\n\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="option in RadioButton.item.options track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="md-block">\n      <label>Option {{$index + 1}}</label>\n      <input ng-model="option.value" />\n    </md-input-container>\n\n    <md-button\n      class="md-button md-warn"\n      ng-click="RadioButton.deleteOption($index)"\n    >\n      <md-icon class="material-icons">delete</md-icon>\n    </md-button>\n  </div>\n\n  <md-button class="md-raised md-accent" ng-click="RadioButton.addOption()"\n    >Add Option</md-button\n  >\n</div>\n'},"./src/lib/directives/radio-button-item/radio-button-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <md-radio-group\n    name="formItemInput"\n    ng-required="RadioButtonView.formItem.config.required"\n    ng-model="RadioButtonView.formItem.value"\n    layout="{{RadioButtonView.formItem.config.direction == \'horizontal\' ? \'row\' : \'column\'}}"\n    required\n  >\n    <md-radio-button\n      ng-repeat="option in RadioButtonView.formItem.options track by $index"\n      value="{{option.value}}"\n      aria-label="..."\n    >\n      {{option.value}}\n    </md-radio-button>\n  </md-radio-group>\n\n  <div ng-messages="RadioButtonView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/select-item/select-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="Select.item.options"\n>\n  <div\n    class="option-item"\n    layout="row"\n    ng-repeat="option in Select.item.options track by $index"\n    sv-element\n  >\n    <md-button\n      class="md-button handle"\n      md-no-ink\n      aria-label="reorder option item"\n      sv-handle\n    >\n      <md-icon class="material-icons">reorder</md-icon>\n    </md-button>\n\n    <md-input-container class="md-block">\n      <label>Option {{$index + 1}}</label>\n      <input ng-model="option.value" />\n    </md-input-container>\n\n    <md-button class="md-button md-warn" ng-click="Select.deleteOption($index)">\n      <md-icon class="material-icons">delete</md-icon>\n    </md-button>\n  </div>\n\n  <md-button class="md-raised md-accent" ng-click="Select.addOption()"\n    >Add Option</md-button\n  >\n</div>\n'},"./src/lib/directives/select-item/select-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <md-select\n    name="formItemInput"\n    ng-required="SelectView.formItem.config.required"\n    ng-model="SelectView.formItem.value"\n  >\n    <md-option\n      ng-repeat="option in SelectView.formItem.options track by $index"\n      ng-value="option.value"\n      >{{ option.value }}</md-option\n    >\n  </md-select>\n  <div ng-messages="SelectView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/textarea-item/textarea-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <label>Placeholder</label>\n  <input type="text" ng-model="Textarea.item.config.placeholder" />\n</md-input-container>\n'},"./src/lib/directives/textarea-item/textarea-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<md-input-container class="md-block">\n  <textarea\n    ng-model="TextareaView.formItem.value"\n    placeholder="{{TextareaView.formItem.config.placeholder}}"\n    ng-required="TextareaView.formItem.config.required"\n  ></textarea>\n  <div ng-messages="TextareaView.form.$error">\n    <div ng-message="required">This field is required</div>\n  </div>\n</md-input-container>\n'},"./src/lib/directives/upload-item/upload-item.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div\n  class="sortable-container"\n  layout="column"\n  sv-root\n  sv-part="Upload.item.options"\n>\n  <md-input-container class="md-block">\n    <label>Upload Button label</label>\n    <input ng-model="Upload.item.config.uploadFileButtonLabel" />\n  </md-input-container>\n\n  <md-switch\n    ng-model="Upload.item.config.multipleUpload"\n    ng-true-value="true"\n    ng-false-value="false"\n  >\n    Multiple\n  </md-switch>\n\n  <md-input-container class="md-block">\n    <span>Max File size: {{Upload.item.config.size}} Mb</span>\n    <input\n      type="number"\n      id="size"\n      name="size"\n      min="0.1"\n      max="999"\n      step="0.1"\n      aria-label="size"\n      ng-model="Upload.item.config.size"\n    />\n  </md-input-container>\n\n  <md-input-container class="md-block">\n    <label>Max file size error message</label>\n    <textarea\n      ng-model="Upload.item.config.sizeErrMessage"\n      md-maxlength="150"\n      rows="2"\n    ></textarea>\n  </md-input-container>\n\n  <md-switch\n    ng-model="Upload.item.config.showAccept"\n    ng-true-value="true"\n    ng-false-value="false"\n  >\n    Configure allowed file types\n  </md-switch>\n\n  <md-input-container class="md-block" ng-if="Upload.item.config.showAccept">\n    <label>Allowed Types</label>\n    <textarea\n      ng-model="Upload.item.config.accept"\n      md-maxlength="150"\n      rows="2"\n    ></textarea>\n  </md-input-container>\n</div>\n'},"./src/lib/directives/upload-item/upload-view.tpl.html":(e,t,i)=>{i.r(t),i.d(t,{default:()=>n});const n='<div layout="row" class="option-item upload-item">\n  <md-input-container class="md-block" style="margin: 0">\n    <input type="file" class="ng-hide" aria-label="file" />\n    <md-input-container flex class="md-block">\n      <input\n        type="text"\n        ng-model="fileName"\n        class="ng-hide"\n        disabled\n        aria-label="fileName"\n      />\n    </md-input-container>\n  </md-input-container>\n\n  <md-button class="md-raised md-accent upload-button"\n    ><md-icon class="material-icons">attach_file</md-icon\n    ><span\n      >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\n    ></md-button\n  >\n</div>\n\n<div>\n  <label></label>\n  <div\n    style="display: grid; grid-template-columns: 8em auto; align-items: center"\n    layout="row"\n    ng-repeat="option in UploadView.formItem.options track by $index"\n  >\n    <md-button ng-click="UploadView.removeItem($index)" class="md-icon-button">\n      <md-icon class="material-icons">close</md-icon>\n    </md-button>\n    <span>{{option.name}}</span>\n  </div>\n</div>\n'}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};return(()=>{i.r(n),i.d(n,{default:()=>$});i("./src/lib/index.scss");var e=i("./src/lib/directives/upload-item/upload-item.directive.js"),t=i("./src/lib/directives/upload-item/upload-view.directive.js"),o=i("./src/lib/directives/agreement-item/agreement-item.directive.js"),r=i("./src/lib/directives/agreement-item/agreement-view.directive.js"),s=i("./src/lib/main/main.controller.js"),l=i("./src/lib/utils/utils.service.js"),m=i("./src/lib/directives/checkboxes-item/checkboxes-item.directive.js"),c=i("./src/lib/directives/checkboxes-item/checkboxes-view.directive.js"),a=i("./src/lib/directives/form-item/form-item.directive.js"),d=i("./src/lib/directives/form-items-container/form-items-container.directive.js"),u=i("./src/lib/directives/form-view/form-view.directive.js"),p=i("./src/lib/directives/input-item/input-item.directive.js"),h=i("./src/lib/directives/input-item/input-view.directive.js"),b=i("./src/lib/directives/label-item/label-item.directive.js"),v=i("./src/lib/directives/label-item/label-view.directive.js"),f=i("./src/lib/directives/matrix-item/matrix-item.directive.js"),g=i("./src/lib/directives/matrix-item/matrix-view.directive.js"),w=i("./src/lib/directives/radio-button-item/radio-button-item.directive.js"),x=i("./src/lib/directives/radio-button-item/radio-button-view.directive.js"),I=i("./src/lib/directives/select-item/select-view.directive.js"),k=i("./src/lib/directives/select-item/select-item.directive.js"),V=i("./src/lib/directives/textarea-item/textarea-item.directive.js"),j=i("./src/lib/directives/textarea-item/textarea-view.directive.js");const $=angular.module("angularMaterialFormBuilder",["ngMaterial","angular-sortable-view","ngMessages"]).service("Utils",l.Utils).controller("MainController",s.MainController).directive("uploadItem",e.UploadItem).directive("uploadView",t.UploadView).directive("agreementItem",o.AgreementItem).directive("agreementView",r.AgreementView).directive("checkboxesItem",m.CheckboxesItem).directive("checkboxesView",c.CheckboxesView).directive("formItem",a.FormItem).directive("formItemsContainer",d.FormItemsContainer).directive("formView",u.FormView).directive("inputItem",p.InputItem).directive("inputView",h.InputView).directive("labelItem",b.LabelItem).directive("labelView",v.LabelView).directive("matrixItem",f.MatrixItem).directive("matrixView",g.MatrixView).directive("radioButtonItem",w.RadioButtonItem).directive("radioButtonView",x.RadioButtonView).directive("selectItem",k.SelectItem).directive("selectView",I.SelectView).directive("textareaItem",V.TextareaItem).directive("textareaView",j.TextareaView)})(),n})()}));
 //# sourceMappingURL=angular-material-form-builder.min.js.map
\ No newline at end of file
index 1a1ac69..970b619 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"angular-material-form-builder.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAQ,iCAAmCD,IAE3CD,EAAK,iCAAmCC,IAR1C,CASGK,MAAM,WACT,M,uGCJA,SAASC,EAAkBC,EAAOC,GAChCC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNC,cAAe,MAEjBC,QAAS,CACP,CACEC,MAAO,GACPC,UAAU,M,oQCTlB,MAAMC,EAIJC,cACEV,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAahB,EAAAA,kBAClBG,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,G,mICjB5B,MAAMC,EAMJN,YAAYO,EAAQnB,GAClBE,KAAKkB,MAAQD,EACbjB,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,UAAY,GAAI,CACrDf,OAAQ,GACRE,QAAS,CACP,CACEC,MAAO,GACPC,UAAU,MAKhBR,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKuB,gBAAiB,EAEtBvB,KAAKwB,SAAU,EACfxB,KAAKyB,cACLzB,KAAK0B,kBACD1B,KAAK2B,aACP3B,KAAK4B,kBAITC,uBACE7B,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKyB,cACLzB,KAAK0B,kBAGPJ,sBACE,OAAOtB,KAAKmB,SAASb,QAAQwB,QAAQC,GAC5BA,EAAOvB,WAIlBiB,cACOzB,KAAKmB,SAASf,OAAOC,eAGxBL,KAAKqB,gBAAgBW,SAAWhC,KAAKmB,SAASf,OAAOC,cAErDL,KAAKuB,gBAAiB,EAJtBvB,KAAKuB,gBAAiB,EAU1BG,kBACM1B,KAAKmB,SAASf,OAAO6B,SACvBjC,KAAKwB,QAAUxB,KAAKqB,gBAAgBW,OAAS,EAE7ChC,KAAKwB,SAAU,EAGjBxB,KAAKkC,KAAKC,aAAa,gBAAiBnC,KAAKwB,SAG/CI,kBACE5B,KAAKkB,MAAMkB,OAAO,0CAA2CC,SAC5CC,IAAXD,IACFrC,KAAKyB,cACLzB,KAAK0B,uB,6RCrEb,MAAMa,EAKJ7B,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKyC,SAAWC,EAAAA,QAChB1C,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAaG,EAAAA,kBAClBhB,KAAKc,aAAe,gBACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAE1B9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,gJClCP,MAAM2B,EAOJrC,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNC,cAAe,MAEjBC,QAAS,CACP,CACEC,MAAO,GACPC,UAAU,MAMlBwC,aAAaC,GACXjD,KAAKE,KAAKI,QAAQ4C,OAAOD,EAAO,GAGlCE,YACEnD,KAAKE,KAAKI,QAAQ8C,KAAK,CACrB7C,MAAO,GACPC,UAAU,IAGZ6C,YAAW,KACT,MAAM/C,EAAUN,KAAKC,QAAQqD,KAAK,SACdhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,sSC9BP,SAASC,IAYP,MAXkB,CAChB7C,SAAU,IACV8B,SAAUgB,EAAAA,QACV7C,MAAO,CACLV,KAAM,KAERW,WAAYkC,EAAAA,mBACZjC,aAAc,aACdC,kBAAkB,K,wHCftB,MAAM2C,EAMJhD,YAAYO,EAAQnB,GAClBE,KAAKkB,MAAQD,EACbjB,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,UAAY,GAAI,CACrDf,OAAQ,GACRE,QAAS,KAGXN,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKuB,gBAAiB,EAEtBvB,KAAKwB,SAAU,EACfxB,KAAKyB,cACLzB,KAAK0B,kBACD1B,KAAK2B,aACP3B,KAAK4B,kBAITC,uBACE7B,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKyB,cACLzB,KAAK0B,kBAGPJ,sBACE,OAAOtB,KAAKmB,SAASb,QAAQwB,QAAQC,GAC5BA,EAAOvB,WAIlBiB,cACOzB,KAAKmB,SAASf,OAAOC,eAGxBL,KAAKqB,gBAAgBW,SAAWhC,KAAKmB,SAASf,OAAOC,cAErDL,KAAKuB,gBAAiB,EAJtBvB,KAAKuB,gBAAiB,EAU1BG,kBACM1B,KAAKmB,SAASf,OAAO6B,SACvBjC,KAAKwB,QAAUxB,KAAKqB,gBAAgBW,OAAS,EAE7ChC,KAAKwB,SAAU,EAGjBxB,KAAKkC,KAAKC,aAAa,gBAAiBnC,KAAKwB,SAG/CI,kBACE5B,KAAKkB,MAAMkB,OAAO,2CAA4CC,SAC7CC,IAAXD,IACFrC,KAAKyB,cACLzB,KAAK0B,uB,oSC7Db,MAAMiC,EAKJjD,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWmB,EAAAA,QAChB5D,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAa6C,EAAAA,mBAClB1D,KAAKc,aAAe,iBACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAE1B9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,8HCrCP,MAAMyC,EAAgB,CACpBC,OAAQ,aACRC,UAAW,YACXC,MAAO,QACPC,eAAgB,SAChBC,MAAO,QACPC,gBAAiB,SACjBC,OAAQ,SACRC,WAAY,UACZC,SAAU,QAGZ,MAAMC,EAOJ7D,YAAYO,EAAQuD,EAAQ1E,GAC1BE,KAAKyE,MAAQD,EACbxE,KAAKF,MAAQA,EACbE,KAAK0E,UAAY,CACfZ,OAAQ,mDACRC,UAAW,yDACXC,MAAO,iDACPC,eACE,+EACFC,MAAO,iDACPC,gBACE,+DACFC,OAAQ,mDACRC,WAAY,2DACZC,SAAU,wDAEZtE,KAAKE,KAAO,GACZF,KAAKY,MAAQK,EAGfG,OACEpB,KAAKE,KAAOF,KAAKF,MAAMK,OAAOH,KAAKE,MAAQ,GAAI,CAC7CyE,KAAM3E,KAAKyE,MAAME,KACjBC,MAAO,CACLC,MAAOhB,EAAc7D,KAAKyE,MAAME,MAChCG,SAAU,IAEZ1E,OAAQ,CACN6B,UAAU,KAKhB8C,gBACE/E,KAAKgF,SAAS,CAAE9E,KAAMF,KAAKE,KAAM+C,MAAOjD,KAAKiD,UAO/CgC,iBAAiBN,GA+Bf,MA7BE,62BA6Bc3E,KAAK0E,UAAUC,GAN7B,qI,mQC/EN,MAAMO,EAKJxE,YAAYyE,GACVnF,KAAKmF,SAAWA,EAChBnF,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXV,KAAM,IACN8E,SAAU,IACVI,KAAM,IACNC,OAAQ,IACRpC,MAAO,KAETjD,KAAKa,WAAa0D,EAAAA,aAClBvE,KAAKc,aAAe,WACpBd,KAAKe,kBAAmB,EACxBf,KAAKyC,SAAW6C,EAAAA,QAWlB3C,KAAK/B,EAAOgC,EAASC,EAAOC,GAC1B,MAAML,EAAWK,EAAKmC,iBAAiBpC,EAAM8B,MACvCY,EAAKvF,KAAKmF,SAAS1C,EAAdzC,CAAwBY,GAKnC,OADAkC,EAAK1B,OACEmE,G,8JC1CX,MAAMC,EAIJ9E,cAIEV,KAAKkC,KAAO,CACVuD,MAAO,IASXC,OAAOxF,EAAM+C,GACXjD,KAAKkC,KAAKuD,MAAMvC,OAAOD,EAAO,GAQhC0C,GAAGzF,EAAM+C,GACP,GAAc,IAAVA,EAAa,CACf,MAAM2C,EAAW5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS2C,EACzB5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,GASjC2F,KAAK3F,EAAM+C,GACT,GAAIA,IAAUjD,KAAKkC,KAAKuD,MAAMzD,OAAS,EAAG,CACxC,MAAM8D,EAAW9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS6C,EACzB9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,I,sTCtCnC,MAAM6F,EAIJrF,cACEV,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXsB,KAAM,KAERlC,KAAKyC,SAAWuD,EAAAA,QAChBhG,KAAKa,WAAa2E,EAAAA,uBAClBxF,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,G,oHClB5B,MAAMkF,EAKJvF,YAAYO,GACVjB,KAAKkB,MAAQD,EAGfG,S,kPCHF,MAAM8E,EAIJxF,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAW0D,EAAAA,QAChBnG,KAAKY,MAAQ,CACXsB,KAAM,KAERlC,KAAKa,WAAaoF,EAAAA,aAClBjG,KAAKc,aAAe,WACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAC1BA,EAAK1B,Q,uHC9BT,MAAMgF,EAMJ1F,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EAEfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNuE,KAAM,W,mQCLd,MAAM0B,EAIJ3F,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAW6D,EAAAA,QAChBtG,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAauF,EAAAA,cAClBpG,KAAKc,aAAe,QACpBd,KAAKe,kBAAmB,G,uHClB5B,MAAMwF,EAKJ7F,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Bf,OAAQ,M,wPCNd,MAAMoG,EAKJ9F,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWgE,EAAAA,QAChBzG,KAAKY,MAAQ,CACXO,SAAU,IACVe,KAAM,KAERlC,KAAKa,WAAa0F,EAAAA,cAClBvG,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,iICpCP,MAAMuF,EAKJjG,YAAYX,GACVC,KAAKC,QAAUF,G,2PCAnB,MAAM6G,EACJlG,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWoE,EAAAA,QAChB7G,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAa8F,EAAAA,cAClB3G,KAAKc,aAAe,QACpBd,KAAKe,kBAAmB,K,yGCf5B,MAAM+F,EAMJpG,YAAYZ,EAAOiH,GACjB/G,KAAKF,MAAQA,EACbE,KAAK+G,KAAOA,EAGd3F,OACEpB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,IAG/B6F,qBACF,OAAOhH,KAAK+G,KAAKE,YAAYjH,KAAKmB,SAASZ,Q,+PCV/C,MAAM2G,EAKJxG,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAW0E,EAAAA,QAChBnH,KAAKY,MAAQ,CACXO,SAAU,IACVe,KAAM,KAERlC,KAAKa,WAAaiG,EAAAA,cAClB9G,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,oICpCP,MAAMgG,EAMJ1G,YAAYZ,EAAOuH,GACjBrH,KAAKsH,aAAeC,QAAQ3E,QAC1ByE,EAAU,GAAGG,cAAc,kBAE7BxH,KAAKyH,gBAAkBF,QAAQ3E,QAC7ByE,EAAU,GAAGG,cAAc,qBAG7BxH,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNsH,KAAM,CACJ,CACEnH,MAAO,KAGXoH,QAAS,CACP,CACEpH,MAAO,QAWjBqH,UAAU3E,GACRjD,KAAKE,KAAKE,OAAOsH,KAAKxE,OAAOD,EAAO,GAGtC4E,SACE7H,KAAKE,KAAKE,OAAOsH,KAAKtE,KAAK,CACzB7C,MAAO,KAGT8C,WACE,WACE,MAAM/C,EAAUN,KAAKsH,aAAahE,KAAK,SACnBhD,EAAQA,EAAQ0B,OAAS,GACjCuB,SACZuE,KAAK9H,MACP,GAQJ+H,aAAa9E,GACXjD,KAAKE,KAAKE,OAAOuH,QAAQzE,OAAOD,EAAO,GAGzC+E,YACEhI,KAAKE,KAAKE,OAAOuH,QAAQvE,KAAK,CAC5B7C,MAAO,KAGT8C,YAAW,KACT,MAAM/C,EAAUN,KAAKyH,gBAAgBnE,KAAK,SACtBhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,2QChEP,MAAM0E,EAIJvH,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWyF,EAAAA,QAChBlI,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAauG,EAAAA,eAClBpH,KAAKc,aAAe,SACpBd,KAAKe,kBAAmB,G,0HClB5B,MAAMoH,EAMJzH,YAAYO,EAAQnB,GAClBE,KAAKkB,MAAQD,EACbjB,KAAKF,MAAQA,EACbE,KAAKwB,SAAU,EACfxB,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,CACNsH,KAAM,GACNC,QAAS,MAIb3H,KAAK0B,kBACD1B,KAAK2B,aACP3B,KAAK4B,kBAITF,kBACE,IAAI0G,GAAQ,EACRpI,KAAKmB,SAASf,OAAO6B,WACvBmG,GAASpI,KAAKmB,SAASf,OAAOsH,KAAKW,MAChCC,QAAmC,IAApBA,EAAG,YAUvBtI,KAAKwB,QAAU4G,EACfpI,KAAKkC,KAAKC,aAAa,WAAYnC,KAAKwB,SAG1CI,kBACE5B,KAAKkB,MAAMqH,YACT,CACE,sCACA,2CAEDlG,SACgBC,IAAXD,GACFrC,KAAK0B,sB,wQC9Cf,MAAM8G,EAKJ9H,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWgG,EAAAA,QAChBzI,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAasH,EAAAA,eAClBnI,KAAKc,aAAe,aACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,qJCtCP,MAAMsH,EAMJhI,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,GACRE,QAAS,CACP,CACEC,MAAO,OAMfyC,aAAaC,GACXjD,KAAKE,KAAKI,QAAQ4C,OAAOD,EAAO,GAGlCE,YACEnD,KAAKE,KAAKI,QAAQ8C,KAAK,CACrB7C,MAAO,KAGT8C,YAAW,KACT,MAAM/C,EAAUN,KAAKC,QAAQqD,KAAK,SACdhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,mTCxBP,MAAMoF,EAIJjI,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWmG,EAAAA,QAChB5I,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAa6H,EAAAA,oBAClB1I,KAAKc,aAAe,cACpBd,KAAKe,kBAAmB,G,2ICnB5B,MAAM8H,EAKJnI,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,GACRE,QAAS,M,wSCVf,MAAMwI,EAKJpI,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWsG,EAAAA,QAChB/I,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAagI,EAAAA,oBAClB7I,KAAKc,aAAe,kBACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,oIClCP,MAAM4H,EAMJtI,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,GACRE,QAAS,CACP,CACEC,MAAO,OAUfyC,aAAaC,GACXjD,KAAKE,KAAKI,QAAQ4C,OAAOD,EAAO,GAGlCE,YACEnD,KAAKE,KAAKI,QAAQ8C,KAAK,CACrB7C,MAAO,KAGT8C,YAAW,KACT,MAAM/C,EAAUN,KAAKC,QAAQqD,KAAK,SACdhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,0QC7BP,MAAM0F,EAIJvI,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWyG,EAAAA,QAChBlJ,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAamI,EAAAA,eAClBhJ,KAAKc,aAAe,SACpBd,KAAKe,kBAAmB,G,0HClB5B,MAAMoI,EAKJzI,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,GACRE,QAAS,M,+PCPf,MAAM8I,EAKJ1I,YAAY8B,GACVxC,KAAKwC,SAAWA,EAEhBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAW4G,EAAAA,QAChBrJ,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAasI,EAAAA,eAClBnJ,KAAKc,aAAe,aACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,0ICtCP,MAAMkI,EAMJ5I,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EAEfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,M,wRCJd,MAAMmJ,EAIJ7I,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAW+G,EAAAA,QAChBxJ,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAayI,EAAAA,iBAClBtJ,KAAKc,aAAe,WACpBd,KAAKe,kBAAmB,G,gIClB5B,MAAM0I,EAKJ/I,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,M,6QCLd,MAAMsJ,EAKJhJ,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKY,MAAQ,CACXO,SAAU,IACVe,KAAM,KAERlC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWkH,EAAAA,QAChB3J,KAAKa,WAAa4I,EAAAA,iBAClBzJ,KAAKc,aAAe,eACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,oICrCP,MAAMwI,EAOJlJ,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,GACRE,QAAS,M,0QCLf,MAAMuJ,EAIJnJ,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWqH,EAAAA,QAChB9J,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAa+I,EAAAA,eAClB5J,KAAKc,aAAe,SACpBd,KAAKe,kBAAmB,G,0HClB5B,MAAMgJ,EAOJrJ,YAAYO,EAAQnB,EAAOC,GACzBC,KAAKkB,MAAQD,EACbjB,KAAKC,QAAUF,EACfC,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAElBC,OACEpB,KAAKgK,YAAa,EAClBhK,KAAKiK,aAAc,EACnBjK,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,UAAY,GAAI,CACrDf,OAAQ,CACN8J,KAAM,GACNC,sBAAuB,aAEzB7J,QAAS,KAEPN,KAAK2B,aACP3B,KAAK4B,kBAGTwI,kBACEpK,KAAKgK,aAAehK,KAAKmB,SAASf,OAAOiK,eACzC,MAAMrG,EAAQuD,QAAQ3E,QACpB5C,KAAKC,QAAQ,GAAGuH,cAAc,qBAE5BxD,IACFhE,KAAKmB,SAASb,QAAU,GACpBN,KAAKgK,WACPhG,EAAMsG,KAAK,WAAY,YAEvBtG,EAAMuG,WAAW,aAKvBC,gBACExK,KAAKiK,cAAgBjK,KAAKmB,SAASf,OAAOqK,WAC1C,MAAMzG,EAAQuD,QAAQ3E,QACpB5C,KAAKC,QAAQ,GAAGuH,cAAc,qBAE5BxD,IACEhE,KAAKiK,YACPjG,EAAM,GAAG0G,aAAa,SAAU1K,KAAKmB,SAASf,OAAOuK,SAErD3G,EAAM,GAAG4G,gBAAgB,iBAClB5K,KAAKmB,SAASf,OAAOuK,SAKlC/I,kBACE5B,KAAKkB,MAAMkB,OAAO,6CAA8CC,SAC/CC,IAAXD,GACFrC,KAAKoK,qBAITpK,KAAKkB,MAAMkB,OAAO,yCAA0CC,SAC3CC,IAAXD,GACFrC,KAAKwK,mBAITxK,KAAKkB,MAAMkB,OAAO,qCAAsCC,SACvCC,IAAXD,GACFrC,KAAKwK,mBAKXK,WAAW5H,GACTjD,KAAKmB,SAASb,QAAQ4C,OAAOD,EAAO,I,mRCzExC,MAAM6H,EAKJpK,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKyC,SAAWsI,EAAAA,QAChB/K,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAakJ,EAAAA,eAClB/J,KAAKc,aAAe,aACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAE1B9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,IAEH,MAAM4J,EAASzD,QAAQ3E,QAAQA,EAAQ,GAAG4E,cAAc,mBAClDxD,EAAQuD,QAAQ3E,QAAQA,EAAQ,GAAG4E,cAAc,qBACjDtD,EAAQqD,QAAQ3E,QAAQA,EAAQ,GAAG4E,cAAc,UAEnDtD,EAAMlC,QACRkC,EAAM+G,IAAI,UAAW,QAGvBD,EAAOE,GAAG,SAAS,KACjBhH,EAAM+G,IAAI,UAAW,QACI,mBAAlBjH,EAAMmH,QACTnH,EAAMmH,QAAQ,SACdnH,EAAM,GAAGoH,WAGfpH,EAAMkH,GAAG,UAAWG,IAClBzK,EAAM0K,QAAO,WAIX,MAAMC,EAAQC,MAAMC,KAAKJ,EAAEK,OAAOH,OAE5BI,EAzDH,QAyDe7I,EAAK3B,SAASf,OAAO8J,KACnBqB,EAAMlD,MAAMuD,GAASA,EAAK1B,MAAQyB,KAEpDzH,EAAM+G,IAAI,UAAW,SACrB/G,EAAM2H,KAAK/I,EAAK3B,SAASf,OAAO0L,gBAChChJ,EAAK3B,SAASb,QAAU,IAExBwC,EAAK3B,SAASb,QAAUiL,EAAMQ,KAAKH,IACjC,MAAM,KAAEI,EAAF,KAAQ9B,EAAR,KAAcvF,GAASiH,EAC7B,MAAO,CAAEI,KAAAA,EAAM9B,KAAAA,EAAMvF,KAAAA,EAAMiH,KAAAA,a,2GChEvC,MAAMK,EAIJvL,cAIEV,KAAKkC,KAAO,CACVuD,MAAO,IAQXyG,QAAQvH,GACN3E,KAAKkC,KAAKuD,MAAMrC,KAAK,CACnBuB,KAAAA,IASJe,OAAOxF,EAAM+C,GACXjD,KAAKkC,KAAKuD,MAAMvC,OAAOD,EAAO,GAShC0C,GAAGzF,EAAM+C,GACP,GAAc,IAAVA,EAAa,CACf,MAAM2C,EAAW5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS2C,EACzB5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,GAUjC2F,KAAK3F,EAAM+C,GACT,GAAIA,IAAUjD,KAAKkC,KAAKuD,MAAMzD,OAAS,EAAG,CACxC,MAAM8D,EAAW9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS6C,EACzB9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,I,uFC7DnC,MAAMJ,EAOJK,OAAOgM,EAAMC,GACX,OAAOC,OAAOC,KAAKF,GAAKG,QACtB,CAACC,EAAQC,UACoB,IAAhBD,EAAOC,GAChBD,EAAOC,GAAOL,EAAIK,GACW,iBAAbL,EAAIK,KACpBD,EAAOC,GAAOzM,KAAKG,OAAOqM,EAAOC,GAAML,EAAIK,KAEtCD,SAEO,IAATL,EAAuB,GAAKA,M,+ICjBzC,4pB,wGCAA,m8C,wGCAA,wrB,4FCAA,+kF,kHCAA,4T,4FCAA,++D,8FCAA,gd,8FCAA,yZ,8FCAA,sJ,8FCAA,8O,gGCAA,4xE,gGCAA,gzC,4GCAA,wrC,4GCAA,8rB,gGCAA,63B,gGCAA,kgB,oGCAA,6K,oGCAA,mY,gGCAA,26C,gGCAA,qjCCCIO,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBtK,IAAjBuK,EACH,OAAOA,EAAarN,QAGrB,IAAIC,EAASiN,EAAyBE,GAAY,CAGjDpN,QAAS,IAOV,OAHAsN,EAAoBF,GAAUnN,EAAQA,EAAOD,QAASmN,GAG/ClN,EAAOD,QCpBfmN,EAAoBI,EAAI,CAACvN,EAASwN,KACjC,IAAI,IAAIP,KAAOO,EACXL,EAAoBM,EAAED,EAAYP,KAASE,EAAoBM,EAAEzN,EAASiN,IAC5EJ,OAAOa,eAAe1N,EAASiN,EAAK,CAAEU,YAAY,EAAMC,IAAKJ,EAAWP,MCJ3EE,EAAoBM,EAAI,CAACI,EAAKC,IAAUjB,OAAOkB,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFX,EAAoBe,EAAKlO,IACH,oBAAXmO,QAA0BA,OAAOC,aAC1CvB,OAAOa,eAAe1N,EAASmO,OAAOC,YAAa,CAAErN,MAAO,WAE7D8L,OAAOa,eAAe1N,EAAS,aAAc,CAAEe,OAAO,K,qjDCoBvD,QAAegH,QACZ9H,OAAO,6BAA8B,CACpC,aACA,wBACA,eAEDoO,QAAQ,QAAS/N,EAAAA,OACjBe,WAAW,iBAAkBoL,EAAAA,gBAC7B6B,UAAU,aAAcjE,EAAAA,YACxBiE,UAAU,aAAchD,EAAAA,YACxBgD,UAAU,gBAAiBrN,EAAAA,eAC3BqN,UAAU,gBAAiBvL,EAAAA,eAC3BuL,UAAU,iBAAkBtK,EAAAA,gBAC5BsK,UAAU,iBAAkBnK,EAAAA,gBAC5BmK,UAAU,WAAY5I,EAAAA,UACtB4I,UAAU,qBAAsB/H,EAAAA,oBAChC+H,UAAU,WAAY5H,EAAAA,UACtB4H,UAAU,YAAazH,EAAAA,WACvByH,UAAU,YAAatH,EAAAA,WACvBsH,UAAU,YAAalH,EAAAA,WACvBkH,UAAU,YAAa5G,EAAAA,WACvB4G,UAAU,aAAc7F,EAAAA,YACxB6F,UAAU,aAActF,EAAAA,YACxBsF,UAAU,kBAAmBnF,EAAAA,iBAC7BmF,UAAU,kBAAmBhF,EAAAA,iBAC7BgF,UAAU,aAAc7E,EAAAA,YACxB6E,UAAU,aAAc1E,EAAAA,YACxB0E,UAAU,eAAgBvE,EAAAA,cAC1BuE,UAAU,eAAgBpE,EAAAA,e","sources":["webpack://angular-material-form-builder/webpack/universalModuleDefinition","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.directive.js","webpack://angular-material-form-builder/./src/lib/main/main.controller.js","webpack://angular-material-form-builder/./src/lib/utils/utils.service.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.tpl.html","webpack://angular-material-form-builder/webpack/bootstrap","webpack://angular-material-form-builder/webpack/runtime/define property getters","webpack://angular-material-form-builder/webpack/runtime/hasOwnProperty shorthand","webpack://angular-material-form-builder/webpack/runtime/make namespace object","webpack://angular-material-form-builder/./src/lib/index.module.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-material-form-builder\"] = factory();\n\telse\n\t\troot[\"angular-material-form-builder\"] = factory();\n})(self, function() {\nreturn ","/**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\nfunction AgreementItemCtrl(Utils, $element) {\n  this.Element = $element\n  this.item = Utils.extend(this.item || {}, {\n    config: {\n      maxSelections: null,\n    },\n    options: [\n      {\n        value: '',\n        selected: false,\n      },\n    ],\n  })\n}\n\nexport { AgreementItemCtrl }\n","import { AgreementItemCtrl } from './agreement-item.controller'\n// import AgreementItemTemplate from './agreement-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass AgreementItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n    }\n    this.controller = AgreementItemCtrl\n    this.controllerAs = 'Agreement'\n    this.bindToController = true\n  }\n}\n\nexport { AgreementItem }\n","class AgreementViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('AgreementView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { AgreementViewCtrl }\n","import { AgreementViewCtrl } from './agreement-view.controller'\nimport AgreementViewTemplate from './agreement-view.tpl.html'\n\nclass AgreementView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = AgreementViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = AgreementViewCtrl\n    this.controllerAs = 'AgreementView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {AgreementViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { AgreementView }\n","class CheckboxesItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        maxSelections: null,\n      },\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n      selected: false,\n    })\n    // Focus new element\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { CheckboxesItemCtrl }\n","import CheckboxesItemTemplate from './checkboxes-item.tpl.html'\nimport { CheckboxesItemCtrl } from './checkboxes-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nfunction CheckboxesItem() {\n  const directive = {\n    restrict: 'E',\n    template: CheckboxesItemTemplate,\n    scope: {\n      item: '=',\n    },\n    controller: CheckboxesItemCtrl,\n    controllerAs: 'Checkboxes',\n    bindToController: true,\n  }\n\n  return directive\n}\n\nexport { CheckboxesItem }\n","class CheckboxesViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('CheckboxesView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { CheckboxesViewCtrl }\n","import CheckboxesViewTemplate from './checkboxes-view.tpl.html'\nimport { CheckboxesViewCtrl } from './checkboxes-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass CheckboxesView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = CheckboxesViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = CheckboxesViewCtrl\n    this.controllerAs = 'CheckboxesView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {CheckboxesViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { CheckboxesView }\n","const DEFAULT_TITLE = {\n  upload: 'Attachment',\n  agreement: 'Agreement',\n  input: 'Field',\n  chooseFromList: 'Select',\n  label: 'Label',\n  multipleChoices: 'Choice',\n  matrix: 'Matrix',\n  checkboxes: 'Options',\n  textarea: 'Text',\n}\n\nclass FormItemCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {ng.IAttributes} $attrs\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, $attrs, Utils) {\n    this.Attrs = $attrs\n    this.Utils = Utils\n    this.templates = {\n      upload: '<upload-item item=\"FormItem.item\"></upload-item>',\n      agreement: '<agreement-item item=\"FormItem.item\"></agreement-item>',\n      input: '<input-item item=\"FormItem.item\"></input-item>',\n      chooseFromList:\n        '<bet-form-choose-from-list item=\"FormItem.item\"></bet-form-choose-from-list>',\n      label: '<label-item item=\"FormItem.item\"></label-item>',\n      multipleChoices:\n        '<radio-button-item item=\"FormItem.item\"></radio-button-item>',\n      matrix: '<matrix-item item=\"FormItem.item\"></matrix-item>',\n      checkboxes: '<checkboxes-item item=\"FormItem.item\"></checkboxes-item>',\n      textarea: '<textarea-item item=\"FormItem.item\"></textarea-item>',\n    }\n    this.item = {}\n    this.scope = $scope\n  }\n\n  init() {\n    this.item = this.Utils.extend(this.item || {}, {\n      type: this.Attrs.type,\n      props: {\n        title: DEFAULT_TITLE[this.Attrs.type],\n        helpText: '',\n      },\n      config: {\n        required: false,\n      },\n    })\n  }\n\n  deleteClicked() {\n    this.onDelete({ item: this.item, index: this.index() })\n  }\n\n  /**\n   *\n   * @param {string} type\n   */\n  _getItemTemplate(type) {\n    const prefix =\n      '' +\n      '<div class=\"form-item-container\">' +\n      '<div class=\"form-item-actions\">' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDelete\" ng-click=\"FormItem.deleteClicked()\"> ' +\n      '<md-icon class=\"material-icons small\">delete</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onUp\" ng-click=\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_up</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDown\" ng-click=\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_down</md-icon>' +\n      '</md-button>' +\n      '</div>' +\n      '<md-input-container>' +\n      '<label>Field Title</label>' +\n      '<input ng-model=\"FormItem.item.props.title\"/>' +\n      '</md-input-container>' +\n      '<md-input-container>' +\n      '<label>Help Text</label>' +\n      '<input ng-model=\"FormItem.item.props.helpText\" />' +\n      '</md-input-container>'\n\n    const suffix =\n      '' +\n      '<md-input-container>' +\n      '<md-checkbox ng-model=\"FormItem.item.config.required\">Required field</md-checkbox>' +\n      '</md-input-container>' +\n      '</div>'\n\n    return prefix + this.templates[type] + suffix\n  }\n}\n\nexport { FormItemCtrl }\n","import FormItemTemplate from './form-item.tpl.html'\nimport { FormItemCtrl } from './form-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItem {\n  /**\n   * @ngInject\n   * @param {ng.ICompileService} $compile\n   */\n  constructor($compile) {\n    this.$compile = $compile\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n      onDelete: '&',\n      onUp: '&',\n      onDown: '&',\n      index: '&',\n    }\n    this.controller = FormItemCtrl\n    this.controllerAs = 'FormItem'\n    this.bindToController = true\n    this.template = FormItemTemplate\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    const template = ctrl._getItemTemplate(attrs.type)\n    const el = this.$compile(template)(scope)\n    // element.append(el)\n    // if done like above adds twice\n    // element.append(this.$compile(template)(scope))\n    ctrl.init()\n    return el\n  }\n}\nexport { FormItem }\n","class FormItemsContainerCtrl {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {import('../../main/main.controller').FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { FormItemsContainerCtrl }\n","import { FormItemsContainerCtrl } from './form-items-container.controller'\nimport FormItemsContainerTemplate from './form-items-container.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItemsContainer {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      form: '=',\n    }\n    this.template = FormItemsContainerTemplate\n    this.controller = FormItemsContainerCtrl\n    this.controllerAs = 'container'\n    this.bindToController = true\n  }\n}\n\nexport { FormItemsContainer }\n","class FormViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScù} $scope\n   */\n  constructor($scope) {\n    this.Scope = $scope\n  }\n\n  init() {}\n}\n\nexport { FormViewCtrl }\n","import { FormViewCtrl } from './form-view.controller'\nimport FormViewTemplate from './form-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormView {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = FormViewTemplate\n    this.scope = {\n      form: '=',\n    }\n    this.controller = FormViewCtrl\n    this.controllerAs = 'FormView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    ctrl.init()\n  }\n}\n\nexport { FormView }\n","class InputItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        type: 'text',\n      },\n    })\n  }\n}\n\nexport { InputItemCtrl }\n","import { InputItemCtrl } from './input-item.controller'\nimport InputItemTemplate from './input-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = InputItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = InputItemCtrl\n    this.controllerAs = 'Input'\n    this.bindToController = true\n  }\n}\n\nexport { InputItem }\n","class InputViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { InputViewCtrl }\n","import { InputViewCtrl } from './input-view.controller'\nimport InputViewTemplate from './input-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = InputViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = InputViewCtrl\n    this.controllerAs = 'InputView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { InputView }\n","class LabelItemCtrl {\n  /**\n   * @ngInject\n   * @param {JQLite} $element\n   */\n  constructor($element) {\n    this.Element = $element\n  }\n}\n\nexport { LabelItemCtrl }\n","import { LabelItemCtrl } from './label-item.controller'\nimport LabelItemTemplate from './label-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelItem {\n  constructor() {\n    this.restrict = 'E'\n    this.template = LabelItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = LabelItemCtrl\n    this.controllerAs = 'Label'\n    this.bindToController = true\n  }\n}\n\nexport { LabelItem }\n","class LabelViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.ISCEService} $sce\n   */\n  constructor(Utils, $sce) {\n    this.Utils = Utils\n    this.$sce = $sce\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {})\n  }\n\n  get sanitizedTitle() {\n    return this.$sce.trustAsHtml(this.formItem.value)\n  }\n}\n\nexport { LabelViewCtrl }\n","import { LabelViewCtrl } from './label-view.controller'\nimport LabelViewTemplate from './label-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = LabelViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = LabelViewCtrl\n    this.controllerAs = 'LabelView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {LabelViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { LabelView }\n","class MatrixItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.IDocumentService} $document\n   */\n  constructor(Utils, $document) {\n    this.RowContainer = angular.element(\n      $document[0].querySelector('.rowContainer')\n    )\n    this.ColumnContainer = angular.element(\n      $document[0].querySelector('.columnContainer')\n    )\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        rows: [\n          {\n            value: '',\n          },\n        ],\n        columns: [\n          {\n            value: '',\n          },\n        ],\n      },\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteRow(index) {\n    this.item.config.rows.splice(index, 1)\n  }\n\n  addRow() {\n    this.item.config.rows.push({\n      value: '',\n    })\n\n    setTimeout(\n      function () {\n        const options = this.RowContainer.find('input')\n        const addedOption = options[options.length - 1]\n        addedOption.focus()\n      }.bind(this),\n      0\n    )\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteColumn(index) {\n    this.item.config.columns.splice(index, 1)\n  }\n\n  addColumn() {\n    this.item.config.columns.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.ColumnContainer.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { MatrixItemCtrl }\n","import { MatrixItemCtrl } from './matrix-item.controller'\nimport MatrixItemTemplate from './matrix-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass MatrixItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = MatrixItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = MatrixItemCtrl\n    this.controllerAs = 'Matrix'\n    this.bindToController = true\n  }\n}\nexport { MatrixItem }\n","class MatrixViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.isValid = true\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {\n        rows: [],\n        columns: [],\n      },\n    })\n\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  _updateValidity() {\n    let valid = true\n    if (this.formItem.config.required) {\n      valid = !this.formItem.config.rows.some(\n        (row) => typeof row['selected'] === 'undefined'\n      )\n      //   for (let i = 0; i < this.formItem.config.rows.length; i++) {\n      //     if (typeof this.formItem.config.rows[i]['selected'] === 'undefined') {\n      //       valid = false\n      //       break\n      //     }\n      //   }\n    }\n\n    this.isValid = valid\n    this.form.$setValidity('required', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watchGroup(\n      [\n        'MatrixView.formItem.config.required',\n        'MatrixView.formItem.config.rows.length',\n      ],\n      (newVal) => {\n        if (newVal !== undefined) {\n          this._updateValidity()\n        }\n      }\n    )\n  }\n}\nexport { MatrixViewCtrl }\n","import MatrixViewTemplate from './matrix-view.tpl.html'\nimport { MatrixViewCtrl } from './matrix-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass MatrixView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = MatrixViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = MatrixViewCtrl\n    this.controllerAs = 'MatrixView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {MatrixViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { MatrixView }\n","class RadioButtonItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { RadioButtonItemCtrl }\n","import { RadioButtonItemCtrl } from './radio-button-item.controller'\nimport RadioButtonTemplate from './radio-button-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass RadioButtonItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = RadioButtonTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = RadioButtonItemCtrl\n    this.controllerAs = 'RadioButton'\n    this.bindToController = true\n  }\n}\n\nexport { RadioButtonItem }\n","class RadioButtonViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { RadioButtonViewCtrl }\n","import { RadioButtonViewCtrl } from './radio-button-view.controller'\nimport RadioButtonViewTemplate from './radio-button-view.tpl.html'\n\nclass RadioButtonView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = RadioButtonViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = RadioButtonViewCtrl\n    this.controllerAs = 'RadioButtonView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {RadioButtonViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { RadioButtonView }\n","class SelectItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { SelectItemCtrl }\n","import SelectTemplate from './select-item.tpl.html'\nimport { SelectItemCtrl } from './select-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = SelectTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = SelectItemCtrl\n    this.controllerAs = 'Select'\n    this.bindToController = true\n  }\n}\n\nexport { SelectItem }\n","class SelectViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { SelectViewCtrl }\n","import SelectViewTemplate from './select-view.tpl.html'\nimport { SelectViewCtrl } from './select-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n\n    this.restrict = 'E'\n    this.template = SelectViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = SelectViewCtrl\n    this.controllerAs = 'SelectView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {SelectViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { SelectView }\n","class TextareaItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaItemCtrl }\n","import { TextareaItemCtrl } from './textarea-item.controller'\nimport TextareaItemTemplate from './textarea-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass TextareaItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = TextareaItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = TextareaItemCtrl\n    this.controllerAs = 'Textarea'\n    this.bindToController = true\n  }\n}\n\nexport { TextareaItem }\n","class TextareaViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaViewCtrl }\n","import { TextareaViewCtrl } from './textarea-view.controller'\nimport TextareaViewTemplate from './textarea-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass TextareaView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.restrict = 'E'\n    this.template = TextareaViewTemplate\n    this.controller = TextareaViewCtrl\n    this.controllerAs = 'TextareaView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {TextareaViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { TextareaView }\n","class UploadItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { UploadItemCtrl }\n","import UploadItemTemplate from './upload-item.tpl.html'\nimport { UploadItemCtrl } from './upload-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass UploadItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = UploadItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = UploadItemCtrl\n    this.controllerAs = 'Upload'\n    this.bindToController = true\n  }\n}\n\nexport { UploadItem }\n","class UploadViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor($scope, Utils, $element) {\n    this.Scope = $scope\n    this.Element = $element\n    this.Utils = Utils\n    this.formItem = {}\n  }\n  init() {\n    this.isMultiple = false\n    this.showAllowed = false\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {\n        size: 10,\n        uploadFileButtonLabel: 'Add files',\n      },\n      options: [],\n    })\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n  _updateMultiple() {\n    this.isMultiple = !!this.formItem.config.multipleUpload\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      this.formItem.options = []\n      if (this.isMultiple) {\n        input.attr('multiple', 'multiple')\n      } else {\n        input.removeAttr('multiple')\n      }\n    }\n  }\n\n  _updateAccept() {\n    this.showAllowed = !!this.formItem.config.showAccept\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      if (this.showAllowed) {\n        input[0].setAttribute('accept', this.formItem.config.accept)\n      } else {\n        input[0].removeAttribute('accept')\n        delete this.formItem.config.accept\n      }\n    }\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('UploadView.formItem.config.multipleUpload', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateMultiple()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.showAccept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.accept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n  }\n\n  removeItem(index) {\n    this.formItem.options.splice(index, 1)\n  }\n}\nexport { UploadViewCtrl }\n","import { UploadViewCtrl } from './upload-view.controller'\nimport UploadViewTemplate from './upload-view.tpl.html'\n\nconst MB = 1024 * 1024\n\nclass UploadView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = UploadViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = UploadViewCtrl\n    this.controllerAs = 'UploadView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {UploadViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n\n    const button = angular.element(element[0].querySelector('.upload-button'))\n    const input = angular.element(element[0].querySelector('input[type=file]'))\n    const label = angular.element(element[0].querySelector('label'))\n\n    if (label.length) {\n      label.css('display', 'none')\n    }\n\n    button.on('click', () => {\n      label.css('display', 'none')\n      typeof input.trigger === 'function'\n        ? input.trigger('click')\n        : input[0].click()\n    })\n\n    input.on('change', (e) => {\n      scope.$apply(function () {\n        /**\n         * @type {File[]}\n         */\n        const files = Array.from(e.target.files)\n        // Max allowed size in MB\n        const maxSizeMB = ctrl.formItem.config.size * MB\n        const exceedsSize = files.some((file) => file.size >= maxSizeMB)\n        if (exceedsSize) {\n          label.css('display', 'block')\n          label.text(ctrl.formItem.config.sizeErrMessage)\n          ctrl.formItem.options = []\n        } else {\n          ctrl.formItem.options = files.map((file) => {\n            const { name, size, type } = file\n            return { name, size, type, file }\n          })\n        }\n      })\n    })\n  }\n}\n\nexport { UploadView }\n","/**\n * @typedef {{type:string}} Item\n * @typedef {{items: Item[]}} FormConfig\n */\n\nclass MainController {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   * Add new Item\n   * @param {string} type\n   */\n  addItem(type) {\n    this.form.items.push({\n      type,\n    })\n  }\n\n  /**\n   * Remove item at index\n   * @param {Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   * insert before (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   * insert after (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { MainController }\n","class Utils {\n  /**\n   * Recursively extend object properties\n   * @param {Object} dest\n   * @param {Object} src\n   * @returns {Object}\n   */\n  extend(dest, src) {\n    return Object.keys(src).reduce(\n      (result, key) => {\n        if (typeof result[key] === 'undefined') {\n          result[key] = src[key]\n        } else if (typeof src[key] === 'object') {\n          result[key] = this.extend(result[key], src[key])\n        }\n        return result\n      },\n      typeof dest === 'undefined' ? {} : dest\n    )\n  }\n}\n\nexport { Utils }\n","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{AgreementView.formItem.config.direction == 'horizontal' ? 'row' : 'columb'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-model=\\\"AgreementView.formItem.options[0].selected\\\"\\n      ng-change=\\\"AgreementView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"AgreementView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{AgreementView.formItem.options[0].value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"AgreementView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{AgreementView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Checkboxes.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max Selections</label>\\n    <input type=\\\"number\\\" ng-model=\\\"Checkboxes.item.config.maxSelections\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Checkboxes.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{Checkboxes.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Checkboxes.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button\\\" ng-click=\\\"Checkboxes.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      ng-click=\\\"Checkboxes.addOption()\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">add</md-icon>\\n    </md-button>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{CheckboxesView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-repeat=\\\"option in CheckboxesView.formItem.options track by $index\\\"\\n      ng-model=\\\"option.selected\\\"\\n      ng-change=\\\"CheckboxesView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"CheckboxesView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{option.value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"CheckboxesView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{CheckboxesView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div class=\\\"form-item-container md-inline-form\\\">\\n  <div class=\\\"form-item-actions\\\">\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDelete\\\"\\n      ng-click=\\\"FormItem.deleteClicked()\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">delete</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onUp\\\"\\n      ng-click=\\\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_up</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDown\\\"\\n      ng-click=\\\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_down</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Field Title</label>\\n    <input ng-model=\\\"FormItem.item.props.title\\\" />\\n  </md-input-container>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Help Text</label>\\n    <input ng-model=\\\"FormItem.item.props.helpText\\\" />\\n  </md-input-container>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type === 'agreement'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <label>Option Text</label>\\n    <input ng-model=\\\"FormItem.item.options[0].value\\\" />\\n  </md-input-container>\\n\\n  <div ng-switch=\\\"FormItem.item.type\\\">\\n    <upload-item ng-switch-when=\\\"upload\\\" item=\\\"FormItem.item\\\"></upload-item>\\n    <agreement-item\\n      ng-switch-when=\\\"agreement\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></agreement-item>\\n    <label-item ng-switch-when=\\\"label\\\" item=\\\"FormItem.item\\\"></label-item>\\n    <input-item ng-switch-when=\\\"input\\\" item=\\\"FormItem.item\\\"></input-item>\\n    <radio-button-item\\n      ng-switch-when=\\\"multipleChoices\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></radio-button-item>\\n    <matrix-item ng-switch-when=\\\"matrix\\\" item=\\\"FormItem.item\\\"></matrix-item>\\n    <checkboxes-item\\n      ng-switch-when=\\\"checkboxes\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></checkboxes-item>\\n    <textarea-item\\n      ng-switch-when=\\\"textarea\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></textarea-item>\\n    <select-item\\n      ng-switch-when=\\\"chooseFromList\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></select-item>\\n    <p ng-switch-default>UNKNOWN TYPE</p>\\n  </div>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type != 'label' && FormItem.item.type != 'upload'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <md-checkbox ng-model=\\\"FormItem.item.config.required\\\"\\n      >Required field</md-checkbox\\n    >\\n  </md-input-container>\\n</div>\\n\";","export default \"<div>\\n  <form-item\\n    ng-repeat=\\\"item in container.form.items track by $index\\\"\\n    type=\\\"{{item.type}}\\\"\\n    item=\\\"item\\\"\\n    index=\\\"$index\\\"\\n    on-delete=\\\"container.delete(item, index)\\\"\\n    on-up=\\\"container.up(item, index)\\\"\\n    on-down=\\\"container.down(item, index)\\\"\\n  >\\n  </form-item>\\n</div>\\n\";","export default \"<div class=\\\"md-inline-form\\\">\\n  <div\\n    class=\\\"formItem\\\"\\n    ng-repeat=\\\"formItem in FormView.form.items track by $index\\\"\\n    ng-switch=\\\"formItem.type\\\"\\n    layout=\\\"column\\\"\\n  >\\n    <ng-form name=\\\"formItemForm\\\">\\n      <div>\\n        <div class=\\\"formItem-title\\\" ng-show=\\\"formItem.type !== 'label'\\\">{{formItem.props.title}}</div>\\n        <div class=\\\"formItem-help-text\\\">{{formItem.props.helpText}}</div>\\n\\n        <upload-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"upload\\\"\\n        ></upload-view>\\n        <agreement-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"agreement\\\"\\n        ></agreement-view>\\n        <checkboxes-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"checkboxes\\\"\\n        ></checkboxes-view>\\n        <radio-button-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"multipleChoices\\\"\\n        ></radio-button-view>\\n        <input-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"input\\\"\\n        ></input-view>\\n        <textarea-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"textarea\\\"\\n        ></textarea-view>\\n        <matrix-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"matrix\\\"\\n        ></matrix-view>\\n        <select-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"chooseFromList\\\"\\n        ></select-view>\\n        <label-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"label\\\"\\n        ></label-view>\\n      </div>\\n    </ng-form>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Input.item.config.placeholder\\\" />\\n</md-input-container>\\n<md-input-container class=\\\"md-block\\\">\\n  <label>Type</label>\\n  <md-select ng-model=\\\"Input.item.config.type\\\">\\n    <md-option value=\\\"text\\\">Text</md-option>\\n    <md-option value=\\\"number\\\">Number</md-option>\\n    <md-option value=\\\"email\\\">Email</md-option>\\n  </md-select>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <input\\n    ng-model=\\\"InputView.formItem.value\\\"\\n    type=\\\"{{InputView.formItem.config.type}}\\\"\\n    placeholder=\\\"{{InputView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"InputView.formItem.config.required\\\"\\n  />\\n  <div ng-messages=\\\"InputView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Text</label>\\n  <textarea ng-model=\\\"Label.item.value\\\"></textarea>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-content\\n    flex\\n    layout-padding\\n    layout=\\\"row\\\"\\n    layout-align=\\\"center center\\\"\\n    ng-bind-html=\\\"LabelView.sanitizedTitle\\\"\\n  >\\n  </md-content>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container columnContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.columns\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"column in Matrix.item.config.columns track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Column {{$index + 1}}</label>\\n      <input ng-model=\\\"column.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete column item\\\"\\n      ng-click=\\\"Matrix.deleteColumn($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add option item\\\"\\n      ng-click=\\\"Matrix.addColumn()\\\"\\n      >Add Column</md-button\\n    >\\n  </div>\\n</div>\\n\\n<div\\n  class=\\\"sortable-container rowContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.rows\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"row in Matrix.item.config.rows track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder row item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Row {{$index + 1}}</label>\\n      <input ng-model=\\\"row.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete row item\\\"\\n      ng-click=\\\"Matrix.deleteRow($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add row item\\\"\\n      ng-click=\\\"Matrix.addRow()\\\"\\n      >Add row</md-button\\n    >\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"matrix-container md-block\\\" layout=\\\"column\\\">\\n  <div class=\\\"matrix\\\">\\n    <div class=\\\"matrix-row\\\" flex layout=\\\"row\\\">\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\"></span>\\n      <span\\n        class=\\\"matrix-cell matrix-cell-header\\\"\\n        flex\\n        ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >{{column.value}}</span\\n      >\\n    </div>\\n    <div\\n      class=\\\"matrix-row\\\"\\n      ng-repeat=\\\"row in MatrixView.formItem.config.rows track by $index\\\"\\n      layout=\\\"row\\\"\\n    >\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\" layout=\\\"column\\\" layout-align=\\\"center\\\"\\n        >{{row.value}}</span\\n      >\\n      <md-radio-group\\n        ng-model=\\\"row.selected\\\"\\n        ng-change=\\\"MatrixView._updateValidity()\\\"\\n        flex\\n        layout=\\\"row\\\"\\n      >\\n        <span\\n          class=\\\"matrix-cell radio-button-cell\\\"\\n          flex\\n          ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >\\n          <md-radio-button\\n            value=\\\"{{column.value}}\\\"\\n            aria-label=\\\"...\\\"\\n          ></md-radio-button>\\n        </span>\\n      </md-radio-group>\\n    </div>\\n  </div>\\n\\n  <div ng-messages=\\\"MatrixView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"RadioButton.item.options\\\"\\n>\\n  <md-switch\\n    ng-model=\\\"RadioButton.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{RadioButton.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in RadioButton.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button md-warn\\\"\\n      ng-click=\\\"RadioButton.deleteOption($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"RadioButton.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-radio-group\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"RadioButtonView.formItem.config.required\\\"\\n    ng-model=\\\"RadioButtonView.formItem.value\\\"\\n    layout=\\\"{{RadioButtonView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n    required\\n  >\\n    <md-radio-button\\n      ng-repeat=\\\"option in RadioButtonView.formItem.options track by $index\\\"\\n      value=\\\"{{option.value}}\\\"\\n      aria-label=\\\"...\\\"\\n    >\\n      {{option.value}}\\n    </md-radio-button>\\n  </md-radio-group>\\n\\n  <div ng-messages=\\\"RadioButtonView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Select.item.options\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Select.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button md-warn\\\" ng-click=\\\"Select.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"Select.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-select\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"SelectView.formItem.config.required\\\"\\n    ng-model=\\\"SelectView.formItem.value\\\"\\n  >\\n    <md-option\\n      ng-repeat=\\\"option in SelectView.formItem.options track by $index\\\"\\n      ng-value=\\\"option.value\\\"\\n      >{{ option.value }}</md-option\\n    >\\n  </md-select>\\n  <div ng-messages=\\\"SelectView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Textarea.item.config.placeholder\\\" />\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <textarea\\n    ng-model=\\\"TextareaView.formItem.value\\\"\\n    placeholder=\\\"{{TextareaView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"TextareaView.formItem.config.required\\\"\\n  ></textarea>\\n  <div ng-messages=\\\"TextareaView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Upload.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Upload Button label</label>\\n    <input ng-model=\\\"Upload.item.config.uploadFileButtonLabel\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.multipleUpload\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Multiple\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <span>Max File size: {{Upload.item.config.size}} Mb</span>\\n    <input\\n      type=\\\"number\\\"\\n      id=\\\"size\\\"\\n      name=\\\"size\\\"\\n      min=\\\"0.1\\\"\\n      max=\\\"999\\\"\\n      step=\\\"0.1\\\"\\n      aria-label=\\\"size\\\"\\n      ng-model=\\\"Upload.item.config.size\\\"\\n    />\\n  </md-input-container>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max file size error message</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.sizeErrMessage\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.showAccept\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Configure allowed file types\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\" ng-if=\\\"Upload.item.config.showAccept\\\">\\n    <label>Allowed Types</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.accept\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n</div>\\n\";","export default \"<div layout=\\\"row\\\" class=\\\"option-item upload-item\\\">\\n  <md-input-container class=\\\"md-block\\\" style=\\\"margin: 0\\\">\\n    <input type=\\\"file\\\" class=\\\"ng-hide\\\" aria-label=\\\"file\\\" />\\n    <md-input-container flex class=\\\"md-block\\\">\\n      <input\\n        type=\\\"text\\\"\\n        ng-model=\\\"fileName\\\"\\n        class=\\\"ng-hide\\\"\\n        disabled\\n        aria-label=\\\"fileName\\\"\\n      />\\n    </md-input-container>\\n  </md-input-container>\\n\\n  <md-button class=\\\"md-raised md-accent upload-button\\\"\\n    ><md-icon class=\\\"material-icons\\\">attach_file</md-icon\\n    ><span\\n      >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\\n    ></md-button\\n  >\\n</div>\\n\\n<div>\\n  <label></label>\\n  <div\\n    style=\\\"display: grid; grid-template-columns: 8em auto; align-items: center\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in UploadView.formItem.options track by $index\\\"\\n  >\\n    <md-button ng-click=\\\"UploadView.removeItem($index)\\\" class=\\\"md-icon-button\\\">\\n      <md-icon class=\\\"material-icons\\\">close</md-icon>\\n    </md-button>\\n    <span>{{option.name}}</span>\\n  </div>\\n</div>\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import './index.scss'\nimport { UploadItem } from './directives/upload-item/upload-item.directive'\nimport { UploadView } from './directives/upload-item/upload-view.directive'\nimport { AgreementItem } from './directives/agreement-item/agreement-item.directive'\nimport { AgreementView } from './directives/agreement-item/agreement-view.directive'\nimport { MainController } from './main/main.controller'\nimport { Utils } from './utils/utils.service'\nimport { CheckboxesItem } from './directives/checkboxes-item/checkboxes-item.directive'\nimport { CheckboxesView } from './directives/checkboxes-item/checkboxes-view.directive'\nimport { FormItem } from './directives/form-item/form-item.directive'\nimport { FormItemsContainer } from './directives/form-items-container/form-items-container.directive'\nimport { FormView } from './directives/form-view/form-view.directive'\nimport { InputItem } from './directives/input-item/input-item.directive'\nimport { InputView } from './directives/input-item/input-view.directive'\nimport { LabelItem } from './directives/label-item/label-item.directive'\nimport { LabelView } from './directives/label-item/label-view.directive'\nimport { MatrixItem } from './directives/matrix-item/matrix-item.directive'\nimport { MatrixView } from './directives/matrix-item/matrix-view.directive'\nimport { RadioButtonItem } from './directives/radio-button-item/radio-button-item.directive'\nimport { RadioButtonView } from './directives/radio-button-item/radio-button-view.directive'\nimport { SelectView } from './directives/select-item/select-view.directive'\nimport { SelectItem } from './directives/select-item/select-item.directive'\nimport { TextareaItem } from './directives/textarea-item/textarea-item.directive'\nimport { TextareaView } from './directives/textarea-item/textarea-view.directive'\n\nexport default angular\n  .module('angularMaterialFormBuilder', [\n    'ngMaterial',\n    'angular-sortable-view',\n    'ngMessages',\n  ])\n  .service('Utils', Utils)\n  .controller('MainController', MainController)\n  .directive('uploadItem', UploadItem)\n  .directive('uploadView', UploadView)\n  .directive('agreementItem', AgreementItem)\n  .directive('agreementView', AgreementView)\n  .directive('checkboxesItem', CheckboxesItem)\n  .directive('checkboxesView', CheckboxesView)\n  .directive('formItem', FormItem)\n  .directive('formItemsContainer', FormItemsContainer)\n  .directive('formView', FormView)\n  .directive('inputItem', InputItem)\n  .directive('inputView', InputView)\n  .directive('labelItem', LabelItem)\n  .directive('labelView', LabelView)\n  .directive('matrixItem', MatrixItem)\n  .directive('matrixView', MatrixView)\n  .directive('radioButtonItem', RadioButtonItem)\n  .directive('radioButtonView', RadioButtonView)\n  .directive('selectItem', SelectItem)\n  .directive('selectView', SelectView)\n  .directive('textareaItem', TextareaItem)\n  .directive('textareaView', TextareaView)\n"],"names":["root","factory","exports","module","define","amd","self","AgreementItemCtrl","Utils","$element","this","Element","item","extend","config","maxSelections","options","value","selected","AgreementItem","constructor","restrict","scope","controller","controllerAs","bindToController","AgreementViewCtrl","$scope","Scope","formItem","init","selectedOptions","_getSelectedOptions","disableOptions","isValid","_updateView","_updateValidity","isPreview","_enableWatchers","toggleSelectedOption","filter","option","length","required","form","$setValidity","$watch","newVal","undefined","AgreementView","$timeout","template","AgreementViewTemplate","link","element","attrs","ctrl","CheckboxesItemCtrl","deleteOption","index","splice","addOption","push","setTimeout","find","focus","CheckboxesItem","CheckboxesItemTemplate","CheckboxesViewCtrl","CheckboxesView","CheckboxesViewTemplate","DEFAULT_TITLE","upload","agreement","input","chooseFromList","label","multipleChoices","matrix","checkboxes","textarea","FormItemCtrl","$attrs","Attrs","templates","type","props","title","helpText","deleteClicked","onDelete","_getItemTemplate","FormItem","$compile","onUp","onDown","FormItemTemplate","el","FormItemsContainerCtrl","items","delete","up","prevItem","down","nextItem","FormItemsContainer","FormItemsContainerTemplate","FormViewCtrl","FormView","FormViewTemplate","InputItemCtrl","InputItem","InputItemTemplate","InputViewCtrl","InputView","InputViewTemplate","elem","LabelItemCtrl","LabelItem","LabelItemTemplate","LabelViewCtrl","$sce","sanitizedTitle","trustAsHtml","LabelView","LabelViewTemplate","MatrixItemCtrl","$document","RowContainer","angular","querySelector","ColumnContainer","rows","columns","deleteRow","addRow","bind","deleteColumn","addColumn","MatrixItem","MatrixItemTemplate","MatrixViewCtrl","valid","some","row","$watchGroup","MatrixView","MatrixViewTemplate","RadioButtonItemCtrl","RadioButtonItem","RadioButtonTemplate","RadioButtonViewCtrl","RadioButtonView","RadioButtonViewTemplate","SelectItemCtrl","SelectItem","SelectTemplate","SelectViewCtrl","SelectView","SelectViewTemplate","TextareaItemCtrl","TextareaItem","TextareaItemTemplate","TextareaViewCtrl","TextareaView","TextareaViewTemplate","UploadItemCtrl","UploadItem","UploadItemTemplate","UploadViewCtrl","isMultiple","showAllowed","size","uploadFileButtonLabel","_updateMultiple","multipleUpload","attr","removeAttr","_updateAccept","showAccept","setAttribute","accept","removeAttribute","removeItem","UploadView","UploadViewTemplate","button","css","on","trigger","click","e","$apply","files","Array","from","target","maxSizeMB","file","text","sizeErrMessage","map","name","MainController","addItem","dest","src","Object","keys","reduce","result","key","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","service","directive"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"angular-material-form-builder.min.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAQ,iCAAmCD,IAE3CD,EAAK,iCAAmCC,IAR1C,CASGK,MAAM,WACT,M,uGCJA,SAASC,EAAkBC,EAAOC,GAChCC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNC,cAAe,MAEjBC,QAAS,CACP,CACEC,MAAO,GACPC,UAAU,M,oQCTlB,MAAMC,EAIJC,cACEV,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAahB,EAAAA,kBAClBG,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,G,mICjB5B,MAAMC,EAMJN,YAAYO,EAAQnB,GAClBE,KAAKkB,MAAQD,EACbjB,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,UAAY,GAAI,CACrDf,OAAQ,GACRE,QAAS,CACP,CACEC,MAAO,GACPC,UAAU,MAKhBR,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKuB,gBAAiB,EAEtBvB,KAAKwB,SAAU,EACfxB,KAAKyB,cACLzB,KAAK0B,kBACD1B,KAAK2B,aACP3B,KAAK4B,kBAITC,uBACE7B,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKyB,cACLzB,KAAK0B,kBAGPJ,sBACE,OAAOtB,KAAKmB,SAASb,QAAQwB,QAAQC,GAC5BA,EAAOvB,WAIlBiB,cACOzB,KAAKmB,SAASf,OAAOC,eAGxBL,KAAKqB,gBAAgBW,SAAWhC,KAAKmB,SAASf,OAAOC,cAErDL,KAAKuB,gBAAiB,EAJtBvB,KAAKuB,gBAAiB,EAU1BG,kBACM1B,KAAKmB,SAASf,OAAO6B,SACvBjC,KAAKwB,QAAUxB,KAAKqB,gBAAgBW,OAAS,EAE7ChC,KAAKwB,SAAU,EAGjBxB,KAAKkC,KAAKC,aAAa,gBAAiBnC,KAAKwB,SAG/CI,kBACE5B,KAAKkB,MAAMkB,OAAO,0CAA2CC,SAC5CC,IAAXD,IACFrC,KAAKyB,cACLzB,KAAK0B,uB,6RCrEb,MAAMa,EAKJ7B,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKyC,SAAWC,EAAAA,QAChB1C,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAaG,EAAAA,kBAClBhB,KAAKc,aAAe,gBACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAE1B9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,gJClCP,MAAM2B,EAOJrC,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNC,cAAe,MAEjBC,QAAS,CACP,CACEC,MAAO,GACPC,UAAU,MAMlBwC,aAAaC,GACXjD,KAAKE,KAAKI,QAAQ4C,OAAOD,EAAO,GAGlCE,YACEnD,KAAKE,KAAKI,QAAQ8C,KAAK,CACrB7C,MAAO,GACPC,UAAU,IAGZ6C,YAAW,KACT,MAAM/C,EAAUN,KAAKC,QAAQqD,KAAK,SACdhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,sSC9BP,SAASC,IAYP,MAXkB,CAChB7C,SAAU,IACV8B,SAAUgB,EAAAA,QACV7C,MAAO,CACLV,KAAM,KAERW,WAAYkC,EAAAA,mBACZjC,aAAc,aACdC,kBAAkB,K,wHCftB,MAAM2C,EAMJhD,YAAYO,EAAQnB,GAClBE,KAAKkB,MAAQD,EACbjB,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,UAAY,GAAI,CACrDf,OAAQ,GACRE,QAAS,KAGXN,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKuB,gBAAiB,EAEtBvB,KAAKwB,SAAU,EACfxB,KAAKyB,cACLzB,KAAK0B,kBACD1B,KAAK2B,aACP3B,KAAK4B,kBAITC,uBACE7B,KAAKqB,gBAAkBrB,KAAKsB,sBAC5BtB,KAAKyB,cACLzB,KAAK0B,kBAGPJ,sBACE,OAAOtB,KAAKmB,SAASb,QAAQwB,QAAQC,GAC5BA,EAAOvB,WAIlBiB,cACOzB,KAAKmB,SAASf,OAAOC,eAGxBL,KAAKqB,gBAAgBW,SAAWhC,KAAKmB,SAASf,OAAOC,cAErDL,KAAKuB,gBAAiB,EAJtBvB,KAAKuB,gBAAiB,EAU1BG,kBACM1B,KAAKmB,SAASf,OAAO6B,SACvBjC,KAAKwB,QAAUxB,KAAKqB,gBAAgBW,OAAS,EAE7ChC,KAAKwB,SAAU,EAGjBxB,KAAKkC,KAAKC,aAAa,gBAAiBnC,KAAKwB,SAG/CI,kBACE5B,KAAKkB,MAAMkB,OAAO,2CAA4CC,SAC7CC,IAAXD,IACFrC,KAAKyB,cACLzB,KAAK0B,uB,oSC7Db,MAAMiC,EAKJjD,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWmB,EAAAA,QAChB5D,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAa6C,EAAAA,mBAClB1D,KAAKc,aAAe,iBACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAE1B9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,8HCrCP,MAAMyC,EAAgB,CACpBC,OAAQ,aACRC,UAAW,YACXC,MAAO,QACPC,eAAgB,SAChBC,MAAO,QACPC,gBAAiB,SACjBC,OAAQ,SACRC,WAAY,UACZC,SAAU,QAGZ,MAAMC,EAOJ7D,YAAYO,EAAQuD,EAAQ1E,GAC1BE,KAAKyE,MAAQD,EACbxE,KAAKF,MAAQA,EACbE,KAAK0E,UAAY,CACfZ,OAAQ,mDACRC,UAAW,yDACXC,MAAO,iDACPC,eACE,+EACFC,MAAO,iDACPC,gBACE,+DACFC,OAAQ,mDACRC,WAAY,2DACZC,SAAU,wDAEZtE,KAAKE,KAAO,GACZF,KAAKY,MAAQK,EAGfG,OACEpB,KAAKE,KAAOF,KAAKF,MAAMK,OAAOH,KAAKE,MAAQ,GAAI,CAC7CyE,KAAM3E,KAAKyE,MAAME,KACjBC,MAAO,CACLC,MAAOhB,EAAc7D,KAAKyE,MAAME,MAChCG,SAAU,IAEZ1E,OAAQ,CACN6B,UAAU,KAKhB8C,gBACE/E,KAAKgF,SAAS,CAAE9E,KAAMF,KAAKE,KAAM+C,MAAOjD,KAAKiD,UAO/CgC,iBAAiBN,GA+Bf,MA7BE,62BA6Bc3E,KAAK0E,UAAUC,GAN7B,qI,mQC/EN,MAAMO,EAKJxE,YAAYyE,GACVnF,KAAKmF,SAAWA,EAChBnF,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXV,KAAM,IACN8E,SAAU,IACVI,KAAM,IACNC,OAAQ,IACRpC,MAAO,KAETjD,KAAKa,WAAa0D,EAAAA,aAClBvE,KAAKc,aAAe,WACpBd,KAAKe,kBAAmB,EACxBf,KAAKyC,SAAW6C,EAAAA,QAWlB3C,KAAK/B,EAAOgC,EAASC,EAAOC,GAC1B,MAAML,EAAWK,EAAKmC,iBAAiBpC,EAAM8B,MACvCY,EAAKvF,KAAKmF,SAAS1C,EAAdzC,CAAwBY,GAKnC,OADAkC,EAAK1B,OACEmE,G,8JC1CX,MAAMC,EAIJ9E,cAIEV,KAAKkC,KAAO,CACVuD,MAAO,IASXC,OAAOxF,EAAM+C,GACXjD,KAAKkC,KAAKuD,MAAMvC,OAAOD,EAAO,GAQhC0C,GAAGzF,EAAM+C,GACP,GAAc,IAAVA,EAAa,CACf,MAAM2C,EAAW5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS2C,EACzB5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,GASjC2F,KAAK3F,EAAM+C,GACT,GAAIA,IAAUjD,KAAKkC,KAAKuD,MAAMzD,OAAS,EAAG,CACxC,MAAM8D,EAAW9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS6C,EACzB9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,I,sTCtCnC,MAAM6F,EAIJrF,cACEV,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXsB,KAAM,KAERlC,KAAKyC,SAAWuD,EAAAA,QAChBhG,KAAKa,WAAa2E,EAAAA,uBAClBxF,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,G,oHClB5B,MAAMkF,EAKJvF,YAAYO,GACVjB,KAAKkB,MAAQD,EAGfG,S,kPCHF,MAAM8E,EAIJxF,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAW0D,EAAAA,QAChBnG,KAAKY,MAAQ,CACXsB,KAAM,KAERlC,KAAKa,WAAaoF,EAAAA,aAClBjG,KAAKc,aAAe,WACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAC1BA,EAAK1B,Q,uHC9BT,MAAMgF,EAMJ1F,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EAEfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNuE,KAAM,W,mQCLd,MAAM0B,EAIJ3F,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAW6D,EAAAA,QAChBtG,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAauF,EAAAA,cAClBpG,KAAKc,aAAe,QACpBd,KAAKe,kBAAmB,G,uHClB5B,MAAMwF,EAKJ7F,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Bf,OAAQ,M,wPCNd,MAAMoG,EAKJ9F,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWgE,EAAAA,QAChBzG,KAAKY,MAAQ,CACXO,SAAU,IACVe,KAAM,KAERlC,KAAKa,WAAa0F,EAAAA,cAClBvG,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,iICpCP,MAAMuF,EAKJjG,YAAYX,GACVC,KAAKC,QAAUF,G,2PCAnB,MAAM6G,EACJlG,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWoE,EAAAA,QAChB7G,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAa8F,EAAAA,cAClB3G,KAAKc,aAAe,QACpBd,KAAKe,kBAAmB,K,yGCf5B,MAAM+F,EAMJpG,YAAYZ,EAAOiH,GACjB/G,KAAKF,MAAQA,EACbE,KAAK+G,KAAOA,EAGd3F,OACEpB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,IAG/B6F,qBACF,OAAOhH,KAAK+G,KAAKE,YAAYjH,KAAKmB,SAASZ,Q,+PCV/C,MAAM2G,EAKJxG,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAW0E,EAAAA,QAChBnH,KAAKY,MAAQ,CACXO,SAAU,IACVe,KAAM,KAERlC,KAAKa,WAAaiG,EAAAA,cAClB9G,KAAKc,aAAe,YACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,oICpCP,MAAMgG,EAMJ1G,YAAYZ,EAAOuH,GACjBrH,KAAKsH,aAAeC,QAAQ3E,QAC1ByE,EAAU,GAAGG,cAAc,kBAE7BxH,KAAKyH,gBAAkBF,QAAQ3E,QAC7ByE,EAAU,GAAGG,cAAc,qBAG7BxH,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,CACNsH,KAAM,CACJ,CACEnH,MAAO,KAGXoH,QAAS,CACP,CACEpH,MAAO,QAWjBqH,UAAU3E,GACRjD,KAAKE,KAAKE,OAAOsH,KAAKxE,OAAOD,EAAO,GAGtC4E,SACE7H,KAAKE,KAAKE,OAAOsH,KAAKtE,KAAK,CACzB7C,MAAO,KAGT8C,WACE,WACE,MAAM/C,EAAUN,KAAKsH,aAAahE,KAAK,SACnBhD,EAAQA,EAAQ0B,OAAS,GACjCuB,SACZuE,KAAK9H,MACP,GAQJ+H,aAAa9E,GACXjD,KAAKE,KAAKE,OAAOuH,QAAQzE,OAAOD,EAAO,GAGzC+E,YACEhI,KAAKE,KAAKE,OAAOuH,QAAQvE,KAAK,CAC5B7C,MAAO,KAGT8C,YAAW,KACT,MAAM/C,EAAUN,KAAKyH,gBAAgBnE,KAAK,SACtBhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,2QChEP,MAAM0E,EAIJvH,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWyF,EAAAA,QAChBlI,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAauG,EAAAA,eAClBpH,KAAKc,aAAe,SACpBd,KAAKe,kBAAmB,G,0HClB5B,MAAMoH,EAMJzH,YAAYO,EAAQnB,GAClBE,KAAKkB,MAAQD,EACbjB,KAAKF,MAAQA,EACbE,KAAKwB,SAAU,EACfxB,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,CACNsH,KAAM,GACNC,QAAS,MAIb3H,KAAK0B,kBACD1B,KAAK2B,aACP3B,KAAK4B,kBAITF,kBACE,IAAI0G,GAAQ,EACRpI,KAAKmB,SAASf,OAAO6B,WACvBmG,GAASpI,KAAKmB,SAASf,OAAOsH,KAAKW,MAChCC,QAAmC,IAApBA,EAAG,YAUvBtI,KAAKwB,QAAU4G,EACfpI,KAAKkC,KAAKC,aAAa,WAAYnC,KAAKwB,SAG1CI,kBACE5B,KAAKkB,MAAMqH,YACT,CACE,sCACA,2CAEDlG,SACgBC,IAAXD,GACFrC,KAAK0B,sB,wQC9Cf,MAAM8G,EAKJ9H,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWgG,EAAAA,QAChBzI,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAasH,EAAAA,eAClBnI,KAAKc,aAAe,aACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,qJCtCP,MAAMsH,EAMJhI,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,GACRE,QAAS,CACP,CACEC,MAAO,OAMfyC,aAAaC,GACXjD,KAAKE,KAAKI,QAAQ4C,OAAOD,EAAO,GAGlCE,YACEnD,KAAKE,KAAKI,QAAQ8C,KAAK,CACrB7C,MAAO,KAGT8C,YAAW,KACT,MAAM/C,EAAUN,KAAKC,QAAQqD,KAAK,SACdhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,mTCxBP,MAAMoF,EAIJjI,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWmG,EAAAA,QAChB5I,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAa6H,EAAAA,oBAClB1I,KAAKc,aAAe,cACpBd,KAAKe,kBAAmB,G,2ICnB5B,MAAM8H,EAKJnI,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,GACRE,QAAS,M,wSCVf,MAAMwI,EAKJpI,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWsG,EAAAA,QAChB/I,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAagI,EAAAA,oBAClB7I,KAAKc,aAAe,kBACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,oIClCP,MAAM4H,EAMJtI,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,GACRE,QAAS,CACP,CACEC,MAAO,OAUfyC,aAAaC,GACXjD,KAAKE,KAAKI,QAAQ4C,OAAOD,EAAO,GAGlCE,YACEnD,KAAKE,KAAKI,QAAQ8C,KAAK,CACrB7C,MAAO,KAGT8C,YAAW,KACT,MAAM/C,EAAUN,KAAKC,QAAQqD,KAAK,SACdhD,EAAQA,EAAQ0B,OAAS,GACjCuB,UACX,I,0QC7BP,MAAM0F,EAIJvI,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWyG,EAAAA,QAChBlJ,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAamI,EAAAA,eAClBhJ,KAAKc,aAAe,SACpBd,KAAKe,kBAAmB,G,0HClB5B,MAAMoI,EAKJzI,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,GACRE,QAAS,M,+PCPf,MAAM8I,EAKJ1I,YAAY8B,GACVxC,KAAKwC,SAAWA,EAEhBxC,KAAKW,SAAW,IAChBX,KAAKyC,SAAW4G,EAAAA,QAChBrJ,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAasI,EAAAA,eAClBnJ,KAAKc,aAAe,aACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,0ICtCP,MAAMkI,EAMJ5I,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EAEfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,M,wRCJd,MAAMmJ,EAIJ7I,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAW+G,EAAAA,QAChBxJ,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAayI,EAAAA,iBAClBtJ,KAAKc,aAAe,WACpBd,KAAKe,kBAAmB,G,gIClB5B,MAAM0I,EAKJ/I,YAAYZ,GACVE,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAGlBC,OACEpB,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,SAAU,CAC/Cf,OAAQ,M,6QCLd,MAAMsJ,EAKJhJ,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKY,MAAQ,CACXO,SAAU,IACVe,KAAM,KAERlC,KAAKW,SAAW,IAChBX,KAAKyC,SAAWkH,EAAAA,QAChB3J,KAAKa,WAAa4I,EAAAA,iBAClBzJ,KAAKc,aAAe,eACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAO8F,EAAM7D,EAAOC,GAEvB9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,K,oICrCP,MAAMwI,EAOJlJ,YAAYZ,EAAOC,GACjBC,KAAKC,QAAUF,EACfC,KAAKE,KAAOJ,EAAMK,OAAOH,KAAKE,MAAQ,GAAI,CACxCE,OAAQ,GACRE,QAAS,M,0QCLf,MAAMuJ,EAIJnJ,cACEV,KAAKW,SAAW,IAChBX,KAAKyC,SAAWqH,EAAAA,QAChB9J,KAAKY,MAAQ,CACXV,KAAM,KAERF,KAAKa,WAAa+I,EAAAA,eAClB5J,KAAKc,aAAe,SACpBd,KAAKe,kBAAmB,G,0HClB5B,MAAMgJ,EAOJrJ,YAAYO,EAAQnB,EAAOC,GACzBC,KAAKkB,MAAQD,EACbjB,KAAKC,QAAUF,EACfC,KAAKF,MAAQA,EACbE,KAAKmB,SAAW,GAElBC,OACEpB,KAAKgK,YAAa,EAClBhK,KAAKiK,aAAc,EACnBjK,KAAKmB,SAAWnB,KAAKF,MAAMK,OAAOH,KAAKmB,UAAY,GAAI,CACrDf,OAAQ,CACN8J,KAAM,GACNC,sBAAuB,aAEzB7J,QAAS,KAEPN,KAAK2B,aACP3B,KAAK4B,kBAGTwI,kBACEpK,KAAKgK,aAAehK,KAAKmB,SAASf,OAAOiK,eACzC,MAAMrG,EAAQuD,QAAQ3E,QACpB5C,KAAKC,QAAQ,GAAGuH,cAAc,qBAE5BxD,IACFhE,KAAKmB,SAASb,QAAU,GACpBN,KAAKgK,WACPhG,EAAMsG,KAAK,WAAY,YAEvBtG,EAAMuG,WAAW,aAKvBC,gBACExK,KAAKiK,cAAgBjK,KAAKmB,SAASf,OAAOqK,WAC1C,MAAMzG,EAAQuD,QAAQ3E,QACpB5C,KAAKC,QAAQ,GAAGuH,cAAc,qBAE5BxD,IACEhE,KAAKiK,YACPjG,EAAM,GAAG0G,aAAa,SAAU1K,KAAKmB,SAASf,OAAOuK,SAErD3G,EAAM,GAAG4G,gBAAgB,iBAClB5K,KAAKmB,SAASf,OAAOuK,SAKlC/I,kBACE5B,KAAKkB,MAAMkB,OAAO,6CAA8CC,SAC/CC,IAAXD,GACFrC,KAAKoK,qBAITpK,KAAKkB,MAAMkB,OAAO,yCAA0CC,SAC3CC,IAAXD,GACFrC,KAAKwK,mBAITxK,KAAKkB,MAAMkB,OAAO,qCAAsCC,SACvCC,IAAXD,GACFrC,KAAKwK,mBAKXK,WAAW5H,GACTjD,KAAKmB,SAASb,QAAQ4C,OAAOD,EAAO,I,mRCzExC,MAAM6H,EAKJpK,YAAY8B,GACVxC,KAAKwC,SAAWA,EAChBxC,KAAKyC,SAAWsI,EAAAA,QAChB/K,KAAKW,SAAW,IAChBX,KAAKY,MAAQ,CACXO,SAAU,IACVQ,UAAW,IACXO,KAAM,KAERlC,KAAKa,WAAakJ,EAAAA,eAClB/J,KAAKc,aAAe,aACpBd,KAAKe,kBAAmB,EAW1B4B,KAAK/B,EAAOgC,EAASC,EAAOC,GAE1B9C,KAAKwC,UAAS,WACZM,EAAK1B,SACJ,IAEH,MAAM4J,EAASzD,QAAQ3E,QAAQA,EAAQ,GAAG4E,cAAc,mBAClDxD,EAAQuD,QAAQ3E,QAAQA,EAAQ,GAAG4E,cAAc,qBACjDtD,EAAQqD,QAAQ3E,QAAQA,EAAQ,GAAG4E,cAAc,UAEnDtD,EAAMlC,QACRkC,EAAM+G,IAAI,UAAW,QAGvBD,EAAOE,GAAG,SAAS,KACjBhH,EAAM+G,IAAI,UAAW,QACI,mBAAlBjH,EAAMmH,QACTnH,EAAMmH,QAAQ,SACdnH,EAAM,GAAGoH,WAGfpH,EAAMkH,GAAG,UAAWG,IAClBzK,EAAM0K,QAAO,WAIX,MAAMC,EAAQC,MAAMC,KAAKJ,EAAEK,OAAOH,OAE5BI,EAzDH,QAyDe7I,EAAK3B,SAASf,OAAO8J,KACnBqB,EAAMlD,MAAMuD,GAASA,EAAK1B,MAAQyB,KAEpDzH,EAAM+G,IAAI,UAAW,SACrB/G,EAAM2H,KAAK/I,EAAK3B,SAASf,OAAO0L,gBAChChJ,EAAK3B,SAASb,QAAU,IAExBwC,EAAK3B,SAASb,QAAUiL,EAAMQ,KAAKH,IACjC,MAAM,KAAEI,EAAF,KAAQ9B,EAAR,KAAcvF,GAASiH,EAC7B,MAAO,CAAEI,KAAAA,EAAM9B,KAAAA,EAAMvF,KAAAA,EAAMiH,KAAAA,a,2GChEvC,MAAMK,EAIJvL,cAIEV,KAAKkC,KAAO,CACVuD,MAAO,IAQXyG,QAAQvH,GACN3E,KAAKkC,KAAKuD,MAAMrC,KAAK,CACnBuB,KAAAA,IASJe,OAAOxF,EAAM+C,GACXjD,KAAKkC,KAAKuD,MAAMvC,OAAOD,EAAO,GAShC0C,GAAGzF,EAAM+C,GACP,GAAc,IAAVA,EAAa,CACf,MAAM2C,EAAW5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS2C,EACzB5F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,GAUjC2F,KAAK3F,EAAM+C,GACT,GAAIA,IAAUjD,KAAKkC,KAAKuD,MAAMzD,OAAS,EAAG,CACxC,MAAM8D,EAAW9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GACzCjD,KAAKkC,KAAKuD,MAAMxC,GAAS6C,EACzB9F,KAAKkC,KAAKuD,MAAMxC,EAAQ,GAAK/C,I,uFC7DnC,MAAMJ,EAOJK,OAAOgM,EAAMC,GACX,OAAOC,OAAOC,KAAKF,GAAKG,QACtB,CAACC,EAAQC,UACoB,IAAhBD,EAAOC,GAChBD,EAAOC,GAAOL,EAAIK,GACW,iBAAbL,EAAIK,KACpBD,EAAOC,GAAOzM,KAAKG,OAAOqM,EAAOC,GAAML,EAAIK,KAEtCD,SAEO,IAATL,EAAuB,GAAKA,M,+ICjBzC,4pB,wGCAA,m8C,wGCAA,wrB,4FCAA,+kF,kHCAA,4T,4FCAA,++D,8FCAA,gd,8FCAA,yZ,8FCAA,kL,8FCAA,8R,gGCAA,4xE,gGCAA,gzC,4GCAA,wrC,4GCAA,8rB,gGCAA,63B,gGCAA,kgB,oGCAA,6K,oGCAA,mY,gGCAA,26C,gGCAA,qjCCCIO,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBtK,IAAjBuK,EACH,OAAOA,EAAarN,QAGrB,IAAIC,EAASiN,EAAyBE,GAAY,CAGjDpN,QAAS,IAOV,OAHAsN,EAAoBF,GAAUnN,EAAQA,EAAOD,QAASmN,GAG/ClN,EAAOD,QCpBfmN,EAAoBI,EAAI,CAACvN,EAASwN,KACjC,IAAI,IAAIP,KAAOO,EACXL,EAAoBM,EAAED,EAAYP,KAASE,EAAoBM,EAAEzN,EAASiN,IAC5EJ,OAAOa,eAAe1N,EAASiN,EAAK,CAAEU,YAAY,EAAMC,IAAKJ,EAAWP,MCJ3EE,EAAoBM,EAAI,CAACI,EAAKC,IAAUjB,OAAOkB,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFX,EAAoBe,EAAKlO,IACH,oBAAXmO,QAA0BA,OAAOC,aAC1CvB,OAAOa,eAAe1N,EAASmO,OAAOC,YAAa,CAAErN,MAAO,WAE7D8L,OAAOa,eAAe1N,EAAS,aAAc,CAAEe,OAAO,K,qjDCoBvD,QAAegH,QACZ9H,OAAO,6BAA8B,CACpC,aACA,wBACA,eAEDoO,QAAQ,QAAS/N,EAAAA,OACjBe,WAAW,iBAAkBoL,EAAAA,gBAC7B6B,UAAU,aAAcjE,EAAAA,YACxBiE,UAAU,aAAchD,EAAAA,YACxBgD,UAAU,gBAAiBrN,EAAAA,eAC3BqN,UAAU,gBAAiBvL,EAAAA,eAC3BuL,UAAU,iBAAkBtK,EAAAA,gBAC5BsK,UAAU,iBAAkBnK,EAAAA,gBAC5BmK,UAAU,WAAY5I,EAAAA,UACtB4I,UAAU,qBAAsB/H,EAAAA,oBAChC+H,UAAU,WAAY5H,EAAAA,UACtB4H,UAAU,YAAazH,EAAAA,WACvByH,UAAU,YAAatH,EAAAA,WACvBsH,UAAU,YAAalH,EAAAA,WACvBkH,UAAU,YAAa5G,EAAAA,WACvB4G,UAAU,aAAc7F,EAAAA,YACxB6F,UAAU,aAActF,EAAAA,YACxBsF,UAAU,kBAAmBnF,EAAAA,iBAC7BmF,UAAU,kBAAmBhF,EAAAA,iBAC7BgF,UAAU,aAAc7E,EAAAA,YACxB6E,UAAU,aAAc1E,EAAAA,YACxB0E,UAAU,eAAgBvE,EAAAA,cAC1BuE,UAAU,eAAgBpE,EAAAA,e","sources":["webpack://angular-material-form-builder/webpack/universalModuleDefinition","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.directive.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.directive.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.controller.js","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.directive.js","webpack://angular-material-form-builder/./src/lib/main/main.controller.js","webpack://angular-material-form-builder/./src/lib/utils/utils.service.js","webpack://angular-material-form-builder/./src/lib/directives/agreement-item/agreement-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/checkboxes-item/checkboxes-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-item/form-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-items-container/form-items-container.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/form-view/form-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/input-item/input-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/label-item/label-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/matrix-item/matrix-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/radio-button-item/radio-button-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/select-item/select-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/textarea-item/textarea-view.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-item.tpl.html","webpack://angular-material-form-builder/./src/lib/directives/upload-item/upload-view.tpl.html","webpack://angular-material-form-builder/webpack/bootstrap","webpack://angular-material-form-builder/webpack/runtime/define property getters","webpack://angular-material-form-builder/webpack/runtime/hasOwnProperty shorthand","webpack://angular-material-form-builder/webpack/runtime/make namespace object","webpack://angular-material-form-builder/./src/lib/index.module.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"angular-material-form-builder\"] = factory();\n\telse\n\t\troot[\"angular-material-form-builder\"] = factory();\n})(self, function() {\nreturn ","/**\n * @ngInject\n *\n * @param {import('../../utils/utils.service').Utils} Utils\n * @param {JQLite} $element\n */\nfunction AgreementItemCtrl(Utils, $element) {\n  this.Element = $element\n  this.item = Utils.extend(this.item || {}, {\n    config: {\n      maxSelections: null,\n    },\n    options: [\n      {\n        value: '',\n        selected: false,\n      },\n    ],\n  })\n}\n\nexport { AgreementItemCtrl }\n","import { AgreementItemCtrl } from './agreement-item.controller'\n// import AgreementItemTemplate from './agreement-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass AgreementItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n    }\n    this.controller = AgreementItemCtrl\n    this.controllerAs = 'Agreement'\n    this.bindToController = true\n  }\n}\n\nexport { AgreementItem }\n","class AgreementViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('AgreementView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { AgreementViewCtrl }\n","import { AgreementViewCtrl } from './agreement-view.controller'\nimport AgreementViewTemplate from './agreement-view.tpl.html'\n\nclass AgreementView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = AgreementViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = AgreementViewCtrl\n    this.controllerAs = 'AgreementView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {AgreementViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { AgreementView }\n","class CheckboxesItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        maxSelections: null,\n      },\n      options: [\n        {\n          value: '',\n          selected: false,\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n      selected: false,\n    })\n    // Focus new element\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { CheckboxesItemCtrl }\n","import CheckboxesItemTemplate from './checkboxes-item.tpl.html'\nimport { CheckboxesItemCtrl } from './checkboxes-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nfunction CheckboxesItem() {\n  const directive = {\n    restrict: 'E',\n    template: CheckboxesItemTemplate,\n    scope: {\n      item: '=',\n    },\n    controller: CheckboxesItemCtrl,\n    controllerAs: 'Checkboxes',\n    bindToController: true,\n  }\n\n  return directive\n}\n\nexport { CheckboxesItem }\n","class CheckboxesViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {},\n      options: [],\n    })\n\n    this.selectedOptions = this._getSelectedOptions()\n    this.disableOptions = false\n\n    this.isValid = true\n    this._updateView()\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  toggleSelectedOption() {\n    this.selectedOptions = this._getSelectedOptions()\n    this._updateView()\n    this._updateValidity()\n  }\n\n  _getSelectedOptions() {\n    return this.formItem.options.filter((option) => {\n      return option.selected\n    })\n  }\n\n  _updateView() {\n    if (!this.formItem.config.maxSelections) {\n      this.disableOptions = false\n    } else if (\n      this.selectedOptions.length === this.formItem.config.maxSelections\n    ) {\n      this.disableOptions = true\n    } else {\n      this.disableOptions = false\n    }\n  }\n\n  _updateValidity() {\n    if (this.formItem.config.required) {\n      this.isValid = this.selectedOptions.length > 0\n    } else {\n      this.isValid = true\n    }\n\n    this.form.$setValidity('minSelections', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('CheckboxesView.formItem.config.required', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateView()\n        this._updateValidity()\n      }\n    })\n  }\n}\n\nexport { CheckboxesViewCtrl }\n","import CheckboxesViewTemplate from './checkboxes-view.tpl.html'\nimport { CheckboxesViewCtrl } from './checkboxes-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass CheckboxesView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = CheckboxesViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = CheckboxesViewCtrl\n    this.controllerAs = 'CheckboxesView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {CheckboxesViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { CheckboxesView }\n","const DEFAULT_TITLE = {\n  upload: 'Attachment',\n  agreement: 'Agreement',\n  input: 'Field',\n  chooseFromList: 'Select',\n  label: 'Label',\n  multipleChoices: 'Choice',\n  matrix: 'Matrix',\n  checkboxes: 'Options',\n  textarea: 'Text',\n}\n\nclass FormItemCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {ng.IAttributes} $attrs\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, $attrs, Utils) {\n    this.Attrs = $attrs\n    this.Utils = Utils\n    this.templates = {\n      upload: '<upload-item item=\"FormItem.item\"></upload-item>',\n      agreement: '<agreement-item item=\"FormItem.item\"></agreement-item>',\n      input: '<input-item item=\"FormItem.item\"></input-item>',\n      chooseFromList:\n        '<bet-form-choose-from-list item=\"FormItem.item\"></bet-form-choose-from-list>',\n      label: '<label-item item=\"FormItem.item\"></label-item>',\n      multipleChoices:\n        '<radio-button-item item=\"FormItem.item\"></radio-button-item>',\n      matrix: '<matrix-item item=\"FormItem.item\"></matrix-item>',\n      checkboxes: '<checkboxes-item item=\"FormItem.item\"></checkboxes-item>',\n      textarea: '<textarea-item item=\"FormItem.item\"></textarea-item>',\n    }\n    this.item = {}\n    this.scope = $scope\n  }\n\n  init() {\n    this.item = this.Utils.extend(this.item || {}, {\n      type: this.Attrs.type,\n      props: {\n        title: DEFAULT_TITLE[this.Attrs.type],\n        helpText: '',\n      },\n      config: {\n        required: false,\n      },\n    })\n  }\n\n  deleteClicked() {\n    this.onDelete({ item: this.item, index: this.index() })\n  }\n\n  /**\n   *\n   * @param {string} type\n   */\n  _getItemTemplate(type) {\n    const prefix =\n      '' +\n      '<div class=\"form-item-container\">' +\n      '<div class=\"form-item-actions\">' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDelete\" ng-click=\"FormItem.deleteClicked()\"> ' +\n      '<md-icon class=\"material-icons small\">delete</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onUp\" ng-click=\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_up</md-icon>' +\n      '</md-button>' +\n      '<md-button class=\"md-button\" ng-if=\"FormItem.Attrs.onDown\" ng-click=\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\"> ' +\n      '<md-icon class=\"material-icons small\">arrow_drop_down</md-icon>' +\n      '</md-button>' +\n      '</div>' +\n      '<md-input-container>' +\n      '<label>Field Title</label>' +\n      '<input ng-model=\"FormItem.item.props.title\"/>' +\n      '</md-input-container>' +\n      '<md-input-container>' +\n      '<label>Help Text</label>' +\n      '<input ng-model=\"FormItem.item.props.helpText\" />' +\n      '</md-input-container>'\n\n    const suffix =\n      '' +\n      '<md-input-container>' +\n      '<md-checkbox ng-model=\"FormItem.item.config.required\">Required field</md-checkbox>' +\n      '</md-input-container>' +\n      '</div>'\n\n    return prefix + this.templates[type] + suffix\n  }\n}\n\nexport { FormItemCtrl }\n","import FormItemTemplate from './form-item.tpl.html'\nimport { FormItemCtrl } from './form-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItem {\n  /**\n   * @ngInject\n   * @param {ng.ICompileService} $compile\n   */\n  constructor($compile) {\n    this.$compile = $compile\n    this.restrict = 'E'\n    this.scope = {\n      item: '=',\n      onDelete: '&',\n      onUp: '&',\n      onDown: '&',\n      index: '&',\n    }\n    this.controller = FormItemCtrl\n    this.controllerAs = 'FormItem'\n    this.bindToController = true\n    this.template = FormItemTemplate\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    const template = ctrl._getItemTemplate(attrs.type)\n    const el = this.$compile(template)(scope)\n    // element.append(el)\n    // if done like above adds twice\n    // element.append(this.$compile(template)(scope))\n    ctrl.init()\n    return el\n  }\n}\nexport { FormItem }\n","class FormItemsContainerCtrl {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {import('../../main/main.controller').FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   *\n   * @param {import('../../main/main.controller').Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { FormItemsContainerCtrl }\n","import { FormItemsContainerCtrl } from './form-items-container.controller'\nimport FormItemsContainerTemplate from './form-items-container.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormItemsContainer {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.scope = {\n      form: '=',\n    }\n    this.template = FormItemsContainerTemplate\n    this.controller = FormItemsContainerCtrl\n    this.controllerAs = 'container'\n    this.bindToController = true\n  }\n}\n\nexport { FormItemsContainer }\n","class FormViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScù} $scope\n   */\n  constructor($scope) {\n    this.Scope = $scope\n  }\n\n  init() {}\n}\n\nexport { FormViewCtrl }\n","import { FormViewCtrl } from './form-view.controller'\nimport FormViewTemplate from './form-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass FormView {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = FormViewTemplate\n    this.scope = {\n      form: '=',\n    }\n    this.controller = FormViewCtrl\n    this.controllerAs = 'FormView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    ctrl.init()\n  }\n}\n\nexport { FormView }\n","class InputItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        type: 'text',\n      },\n    })\n  }\n}\n\nexport { InputItemCtrl }\n","import { InputItemCtrl } from './input-item.controller'\nimport InputItemTemplate from './input-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = InputItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = InputItemCtrl\n    this.controllerAs = 'Input'\n    this.bindToController = true\n  }\n}\n\nexport { InputItem }\n","class InputViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { InputViewCtrl }\n","import { InputViewCtrl } from './input-view.controller'\nimport InputViewTemplate from './input-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass InputView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = InputViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = InputViewCtrl\n    this.controllerAs = 'InputView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {FormItemCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { InputView }\n","class LabelItemCtrl {\n  /**\n   * @ngInject\n   * @param {JQLite} $element\n   */\n  constructor($element) {\n    this.Element = $element\n  }\n}\n\nexport { LabelItemCtrl }\n","import { LabelItemCtrl } from './label-item.controller'\nimport LabelItemTemplate from './label-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelItem {\n  constructor() {\n    this.restrict = 'E'\n    this.template = LabelItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = LabelItemCtrl\n    this.controllerAs = 'Label'\n    this.bindToController = true\n  }\n}\n\nexport { LabelItem }\n","class LabelViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.ISCEService} $sce\n   */\n  constructor(Utils, $sce) {\n    this.Utils = Utils\n    this.$sce = $sce\n  }\n\n  init() {\n    this.Utils.extend(this.formItem, {})\n  }\n\n  get sanitizedTitle() {\n    return this.$sce.trustAsHtml(this.formItem.value)\n  }\n}\n\nexport { LabelViewCtrl }\n","import { LabelViewCtrl } from './label-view.controller'\nimport LabelViewTemplate from './label-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass LabelView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = LabelViewTemplate\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.controller = LabelViewCtrl\n    this.controllerAs = 'LabelView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {LabelViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { LabelView }\n","class MatrixItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {ng.IDocumentService} $document\n   */\n  constructor(Utils, $document) {\n    this.RowContainer = angular.element(\n      $document[0].querySelector('.rowContainer')\n    )\n    this.ColumnContainer = angular.element(\n      $document[0].querySelector('.columnContainer')\n    )\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {\n        rows: [\n          {\n            value: '',\n          },\n        ],\n        columns: [\n          {\n            value: '',\n          },\n        ],\n      },\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteRow(index) {\n    this.item.config.rows.splice(index, 1)\n  }\n\n  addRow() {\n    this.item.config.rows.push({\n      value: '',\n    })\n\n    setTimeout(\n      function () {\n        const options = this.RowContainer.find('input')\n        const addedOption = options[options.length - 1]\n        addedOption.focus()\n      }.bind(this),\n      0\n    )\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteColumn(index) {\n    this.item.config.columns.splice(index, 1)\n  }\n\n  addColumn() {\n    this.item.config.columns.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.ColumnContainer.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { MatrixItemCtrl }\n","import { MatrixItemCtrl } from './matrix-item.controller'\nimport MatrixItemTemplate from './matrix-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass MatrixItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = MatrixItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = MatrixItemCtrl\n    this.controllerAs = 'Matrix'\n    this.bindToController = true\n  }\n}\nexport { MatrixItem }\n","class MatrixViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor($scope, Utils) {\n    this.Scope = $scope\n    this.Utils = Utils\n    this.isValid = true\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {\n        rows: [],\n        columns: [],\n      },\n    })\n\n    this._updateValidity()\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n\n  _updateValidity() {\n    let valid = true\n    if (this.formItem.config.required) {\n      valid = !this.formItem.config.rows.some(\n        (row) => typeof row['selected'] === 'undefined'\n      )\n      //   for (let i = 0; i < this.formItem.config.rows.length; i++) {\n      //     if (typeof this.formItem.config.rows[i]['selected'] === 'undefined') {\n      //       valid = false\n      //       break\n      //     }\n      //   }\n    }\n\n    this.isValid = valid\n    this.form.$setValidity('required', this.isValid)\n  }\n\n  _enableWatchers() {\n    this.Scope.$watchGroup(\n      [\n        'MatrixView.formItem.config.required',\n        'MatrixView.formItem.config.rows.length',\n      ],\n      (newVal) => {\n        if (newVal !== undefined) {\n          this._updateValidity()\n        }\n      }\n    )\n  }\n}\nexport { MatrixViewCtrl }\n","import MatrixViewTemplate from './matrix-view.tpl.html'\nimport { MatrixViewCtrl } from './matrix-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass MatrixView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = MatrixViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = MatrixViewCtrl\n    this.controllerAs = 'MatrixView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {MatrixViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { MatrixView }\n","class RadioButtonItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { RadioButtonItemCtrl }\n","import { RadioButtonItemCtrl } from './radio-button-item.controller'\nimport RadioButtonTemplate from './radio-button-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass RadioButtonItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = RadioButtonTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = RadioButtonItemCtrl\n    this.controllerAs = 'RadioButton'\n    this.bindToController = true\n  }\n}\n\nexport { RadioButtonItem }\n","class RadioButtonViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { RadioButtonViewCtrl }\n","import { RadioButtonViewCtrl } from './radio-button-view.controller'\nimport RadioButtonViewTemplate from './radio-button-view.tpl.html'\n\nclass RadioButtonView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.restrict = 'E'\n    this.template = RadioButtonViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = RadioButtonViewCtrl\n    this.controllerAs = 'RadioButtonView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {RadioButtonViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { RadioButtonView }\n","class SelectItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [\n        {\n          value: '',\n        },\n      ],\n    })\n  }\n\n  /**\n   *\n   * @param {number} index\n   */\n  deleteOption(index) {\n    this.item.options.splice(index, 1)\n  }\n\n  addOption() {\n    this.item.options.push({\n      value: '',\n    })\n\n    setTimeout(() => {\n      const options = this.Element.find('input')\n      const addedOption = options[options.length - 1]\n      addedOption.focus()\n    }, 0)\n  }\n}\n\nexport { SelectItemCtrl }\n","import SelectTemplate from './select-item.tpl.html'\nimport { SelectItemCtrl } from './select-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = SelectTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = SelectItemCtrl\n    this.controllerAs = 'Select'\n    this.bindToController = true\n  }\n}\n\nexport { SelectItem }\n","class SelectViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { SelectViewCtrl }\n","import SelectViewTemplate from './select-view.tpl.html'\nimport { SelectViewCtrl } from './select-view.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass SelectView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n\n    this.restrict = 'E'\n    this.template = SelectViewTemplate\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = SelectViewCtrl\n    this.controllerAs = 'SelectView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {SelectViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { SelectView }\n","class TextareaItemCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaItemCtrl }\n","import { TextareaItemCtrl } from './textarea-item.controller'\nimport TextareaItemTemplate from './textarea-item.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\nclass TextareaItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = TextareaItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = TextareaItemCtrl\n    this.controllerAs = 'Textarea'\n    this.bindToController = true\n  }\n}\n\nexport { TextareaItem }\n","class TextareaViewCtrl {\n  /**\n   * @ngInject\n   * @param {import('../../utils/utils.service').Utils} Utils\n   */\n  constructor(Utils) {\n    this.Utils = Utils\n    this.formItem = {}\n  }\n\n  init() {\n    this.formItem = this.Utils.extend(this.formItem, {\n      config: {},\n    })\n  }\n}\n\nexport { TextareaViewCtrl }\n","import { TextareaViewCtrl } from './textarea-view.controller'\nimport TextareaViewTemplate from './textarea-view.tpl.html'\n\n/**\n * @implements {ng.IDirective}\n */\n\nclass TextareaView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.scope = {\n      formItem: '=',\n      form: '=',\n    }\n    this.restrict = 'E'\n    this.template = TextareaViewTemplate\n    this.controller = TextareaViewCtrl\n    this.controllerAs = 'TextareaView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {TextareaViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, elem, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n  }\n}\n\nexport { TextareaView }\n","class UploadItemCtrl {\n  /**\n   * @ngInject\n   *\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor(Utils, $element) {\n    this.Element = $element\n    this.item = Utils.extend(this.item || {}, {\n      config: {},\n      options: [],\n    })\n  }\n}\n\nexport { UploadItemCtrl }\n","import UploadItemTemplate from './upload-item.tpl.html'\nimport { UploadItemCtrl } from './upload-item.controller'\n\n/**\n * @implements {ng.IDirective}\n */\nclass UploadItem {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    this.restrict = 'E'\n    this.template = UploadItemTemplate\n    this.scope = {\n      item: '=',\n    }\n    this.controller = UploadItemCtrl\n    this.controllerAs = 'Upload'\n    this.bindToController = true\n  }\n}\n\nexport { UploadItem }\n","class UploadViewCtrl {\n  /**\n   * @ngInject\n   * @param {ng.IScope} $scope\n   * @param {import('../../utils/utils.service').Utils} Utils\n   * @param {JQLite} $element\n   */\n  constructor($scope, Utils, $element) {\n    this.Scope = $scope\n    this.Element = $element\n    this.Utils = Utils\n    this.formItem = {}\n  }\n  init() {\n    this.isMultiple = false\n    this.showAllowed = false\n    this.formItem = this.Utils.extend(this.formItem || {}, {\n      config: {\n        size: 10,\n        uploadFileButtonLabel: 'Add files',\n      },\n      options: [],\n    })\n    if (this.isPreview()) {\n      this._enableWatchers()\n    }\n  }\n  _updateMultiple() {\n    this.isMultiple = !!this.formItem.config.multipleUpload\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      this.formItem.options = []\n      if (this.isMultiple) {\n        input.attr('multiple', 'multiple')\n      } else {\n        input.removeAttr('multiple')\n      }\n    }\n  }\n\n  _updateAccept() {\n    this.showAllowed = !!this.formItem.config.showAccept\n    const input = angular.element(\n      this.Element[0].querySelector('input[type=file]')\n    )\n    if (input) {\n      if (this.showAllowed) {\n        input[0].setAttribute('accept', this.formItem.config.accept)\n      } else {\n        input[0].removeAttribute('accept')\n        delete this.formItem.config.accept\n      }\n    }\n  }\n\n  _enableWatchers() {\n    this.Scope.$watch('UploadView.formItem.config.multipleUpload', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateMultiple()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.showAccept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n\n    this.Scope.$watch('UploadView.formItem.config.accept', (newVal) => {\n      if (newVal !== undefined) {\n        this._updateAccept()\n      }\n    })\n  }\n\n  removeItem(index) {\n    this.formItem.options.splice(index, 1)\n  }\n}\nexport { UploadViewCtrl }\n","import { UploadViewCtrl } from './upload-view.controller'\nimport UploadViewTemplate from './upload-view.tpl.html'\n\nconst MB = 1024 * 1024\n\nclass UploadView {\n  /**\n   * @ngInject\n   * @param {ng.ITimeoutService} $timeout\n   */\n  constructor($timeout) {\n    this.$timeout = $timeout\n    this.template = UploadViewTemplate\n    this.restrict = 'E'\n    this.scope = {\n      formItem: '=',\n      isPreview: '&',\n      form: '=',\n    }\n    this.controller = UploadViewCtrl\n    this.controllerAs = 'UploadView'\n    this.bindToController = true\n  }\n\n  /**\n   * @see https://docs.angularjs.org/api/ng/service/$compile#-link-\n   * @param {ng.IScope} scope - scope\n   * @param {JQLite} element - element\n   * @param {ng.IAttributes} attrs - attributes\n   * @param {UploadViewCtrl} ctrl - this instance controller\n   * @param {ng.ITranscludeFunction} transcludeFn - transclude function ($transclude)\n   */\n  link(scope, element, attrs, ctrl) {\n    //this timeout is placed here in order to make sure that the creator directive of this view is finished its work\n    this.$timeout(function () {\n      ctrl.init()\n    }, 50)\n\n    const button = angular.element(element[0].querySelector('.upload-button'))\n    const input = angular.element(element[0].querySelector('input[type=file]'))\n    const label = angular.element(element[0].querySelector('label'))\n\n    if (label.length) {\n      label.css('display', 'none')\n    }\n\n    button.on('click', () => {\n      label.css('display', 'none')\n      typeof input.trigger === 'function'\n        ? input.trigger('click')\n        : input[0].click()\n    })\n\n    input.on('change', (e) => {\n      scope.$apply(function () {\n        /**\n         * @type {File[]}\n         */\n        const files = Array.from(e.target.files)\n        // Max allowed size in MB\n        const maxSizeMB = ctrl.formItem.config.size * MB\n        const exceedsSize = files.some((file) => file.size >= maxSizeMB)\n        if (exceedsSize) {\n          label.css('display', 'block')\n          label.text(ctrl.formItem.config.sizeErrMessage)\n          ctrl.formItem.options = []\n        } else {\n          ctrl.formItem.options = files.map((file) => {\n            const { name, size, type } = file\n            return { name, size, type, file }\n          })\n        }\n      })\n    })\n  }\n}\n\nexport { UploadView }\n","/**\n * @typedef {{type:string}} Item\n * @typedef {{items: Item[]}} FormConfig\n */\n\nclass MainController {\n  /**\n   * @ngInject\n   */\n  constructor() {\n    /**\n     * @type {FormConfig}\n     */\n    this.form = {\n      items: [],\n    }\n  }\n\n  /**\n   * Add new Item\n   * @param {string} type\n   */\n  addItem(type) {\n    this.form.items.push({\n      type,\n    })\n  }\n\n  /**\n   * Remove item at index\n   * @param {Item} item\n   * @param {number} index\n   */\n  delete(item, index) {\n    this.form.items.splice(index, 1)\n  }\n\n  /**\n   * insert before (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  up(item, index) {\n    if (index !== 0) {\n      const prevItem = this.form.items[index - 1]\n      this.form.items[index] = prevItem\n      this.form.items[index - 1] = item\n    }\n  }\n\n  /**\n   * insert after (bounded)\n   * Pops out latest element (wanted?)\n   * @param {Item} item\n   * @param {number} index\n   */\n  down(item, index) {\n    if (index !== this.form.items.length - 1) {\n      const nextItem = this.form.items[index + 1]\n      this.form.items[index] = nextItem\n      this.form.items[index + 1] = item\n    }\n  }\n}\n\nexport { MainController }\n","class Utils {\n  /**\n   * Recursively extend object properties\n   * @param {Object} dest\n   * @param {Object} src\n   * @returns {Object}\n   */\n  extend(dest, src) {\n    return Object.keys(src).reduce(\n      (result, key) => {\n        if (typeof result[key] === 'undefined') {\n          result[key] = src[key]\n        } else if (typeof src[key] === 'object') {\n          result[key] = this.extend(result[key], src[key])\n        }\n        return result\n      },\n      typeof dest === 'undefined' ? {} : dest\n    )\n  }\n}\n\nexport { Utils }\n","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{AgreementView.formItem.config.direction == 'horizontal' ? 'row' : 'columb'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-model=\\\"AgreementView.formItem.options[0].selected\\\"\\n      ng-change=\\\"AgreementView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"AgreementView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{AgreementView.formItem.options[0].value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"AgreementView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{AgreementView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Checkboxes.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max Selections</label>\\n    <input type=\\\"number\\\" ng-model=\\\"Checkboxes.item.config.maxSelections\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Checkboxes.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{Checkboxes.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Checkboxes.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button\\\" ng-click=\\\"Checkboxes.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      ng-click=\\\"Checkboxes.addOption()\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">add</md-icon>\\n    </md-button>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container>\\n  <div\\n    layout=\\\"{{CheckboxesView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n  >\\n    <md-checkbox\\n      ng-repeat=\\\"option in CheckboxesView.formItem.options track by $index\\\"\\n      ng-model=\\\"option.selected\\\"\\n      ng-change=\\\"CheckboxesView.toggleSelectedOption(option)\\\"\\n      ng-disabled=\\\"CheckboxesView.disableOptions && !option.selected\\\"\\n      aria-label=\\\"...\\\"\\n      >{{option.value}}</md-checkbox\\n    >\\n  </div>\\n\\n  <div ng-messages=\\\"CheckboxesView.form.$error\\\">\\n    <div ng-message=\\\"minSelections\\\">\\n      Must select {{CheckboxesView.formItem.maxSelections || 1}} items\\n    </div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div class=\\\"form-item-container md-inline-form\\\">\\n  <div class=\\\"form-item-actions\\\">\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDelete\\\"\\n      ng-click=\\\"FormItem.deleteClicked()\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">delete</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onUp\\\"\\n      ng-click=\\\"FormItem.onUp({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_up</md-icon>\\n    </md-button>\\n    <md-button\\n      class=\\\"md-button\\\"\\n      ng-if=\\\"FormItem.Attrs.onDown\\\"\\n      ng-click=\\\"FormItem.onDown({item: FormItem.item, index: FormItem.index()})\\\"\\n    >\\n      <md-icon class=\\\"material-icons small\\\">arrow_drop_down</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Field Title</label>\\n    <input ng-model=\\\"FormItem.item.props.title\\\" />\\n  </md-input-container>\\n\\n  <md-input-container ng-if=\\\"FormItem.item.type != 'label'\\\" class=\\\"md-block\\\">\\n    <label>Help Text</label>\\n    <input ng-model=\\\"FormItem.item.props.helpText\\\" />\\n  </md-input-container>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type === 'agreement'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <label>Option Text</label>\\n    <input ng-model=\\\"FormItem.item.options[0].value\\\" />\\n  </md-input-container>\\n\\n  <div ng-switch=\\\"FormItem.item.type\\\">\\n    <upload-item ng-switch-when=\\\"upload\\\" item=\\\"FormItem.item\\\"></upload-item>\\n    <agreement-item\\n      ng-switch-when=\\\"agreement\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></agreement-item>\\n    <label-item ng-switch-when=\\\"label\\\" item=\\\"FormItem.item\\\"></label-item>\\n    <input-item ng-switch-when=\\\"input\\\" item=\\\"FormItem.item\\\"></input-item>\\n    <radio-button-item\\n      ng-switch-when=\\\"multipleChoices\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></radio-button-item>\\n    <matrix-item ng-switch-when=\\\"matrix\\\" item=\\\"FormItem.item\\\"></matrix-item>\\n    <checkboxes-item\\n      ng-switch-when=\\\"checkboxes\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></checkboxes-item>\\n    <textarea-item\\n      ng-switch-when=\\\"textarea\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></textarea-item>\\n    <select-item\\n      ng-switch-when=\\\"chooseFromList\\\"\\n      item=\\\"FormItem.item\\\"\\n    ></select-item>\\n    <p ng-switch-default>UNKNOWN TYPE</p>\\n  </div>\\n\\n  <md-input-container\\n    ng-if=\\\"FormItem.item.type != 'label' && FormItem.item.type != 'upload'\\\"\\n    class=\\\"md-block\\\"\\n  >\\n    <md-checkbox ng-model=\\\"FormItem.item.config.required\\\"\\n      >Required field</md-checkbox\\n    >\\n  </md-input-container>\\n</div>\\n\";","export default \"<div>\\n  <form-item\\n    ng-repeat=\\\"item in container.form.items track by $index\\\"\\n    type=\\\"{{item.type}}\\\"\\n    item=\\\"item\\\"\\n    index=\\\"$index\\\"\\n    on-delete=\\\"container.delete(item, index)\\\"\\n    on-up=\\\"container.up(item, index)\\\"\\n    on-down=\\\"container.down(item, index)\\\"\\n  >\\n  </form-item>\\n</div>\\n\";","export default \"<div class=\\\"md-inline-form\\\">\\n  <div\\n    class=\\\"formItem\\\"\\n    ng-repeat=\\\"formItem in FormView.form.items track by $index\\\"\\n    ng-switch=\\\"formItem.type\\\"\\n    layout=\\\"column\\\"\\n  >\\n    <ng-form name=\\\"formItemForm\\\">\\n      <div>\\n        <div class=\\\"formItem-title\\\" ng-show=\\\"formItem.type !== 'label'\\\">{{formItem.props.title}}</div>\\n        <div class=\\\"formItem-help-text\\\">{{formItem.props.helpText}}</div>\\n\\n        <upload-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"upload\\\"\\n        ></upload-view>\\n        <agreement-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"agreement\\\"\\n        ></agreement-view>\\n        <checkboxes-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"checkboxes\\\"\\n        ></checkboxes-view>\\n        <radio-button-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"multipleChoices\\\"\\n        ></radio-button-view>\\n        <input-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"input\\\"\\n        ></input-view>\\n        <textarea-view\\n          form-item=\\\"formItem\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"textarea\\\"\\n        ></textarea-view>\\n        <matrix-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"matrix\\\"\\n        ></matrix-view>\\n        <select-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"chooseFromList\\\"\\n        ></select-view>\\n        <label-view\\n          form-item=\\\"formItem\\\"\\n          is-preview=\\\"true\\\"\\n          form=\\\"formItemForm\\\"\\n          ng-switch-when=\\\"label\\\"\\n        ></label-view>\\n      </div>\\n    </ng-form>\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Input.item.config.placeholder\\\" />\\n</md-input-container>\\n<md-input-container class=\\\"md-block\\\">\\n  <label>Type</label>\\n  <md-select ng-model=\\\"Input.item.config.type\\\">\\n    <md-option value=\\\"text\\\">Text</md-option>\\n    <md-option value=\\\"number\\\">Number</md-option>\\n    <md-option value=\\\"email\\\">Email</md-option>\\n  </md-select>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <input\\n    ng-model=\\\"InputView.formItem.value\\\"\\n    type=\\\"{{InputView.formItem.config.type}}\\\"\\n    placeholder=\\\"{{InputView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"InputView.formItem.config.required\\\"\\n  />\\n  <div ng-messages=\\\"InputView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Text</label>\\n  <textarea ng-model=\\\"Label.item.value\\\" md-maxlength=\\\"150\\\" rows=\\\"5\\\"></textarea>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-content flex layout-padding layout=\\\"row\\\" layout-align=\\\"center center\\\">\\n    <pre>\\n      \\n      <span class=\\\"formItem-content\\\" ng-bind-html=\\\"LabelView.sanitizedTitle\\\"></span>\\n    </pre>\\n  </md-content>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container columnContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.columns\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"column in Matrix.item.config.columns track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Column {{$index + 1}}</label>\\n      <input ng-model=\\\"column.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete column item\\\"\\n      ng-click=\\\"Matrix.deleteColumn($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add option item\\\"\\n      ng-click=\\\"Matrix.addColumn()\\\"\\n      >Add Column</md-button\\n    >\\n  </div>\\n</div>\\n\\n<div\\n  class=\\\"sortable-container rowContainer\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Matrix.item.config.rows\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"row in Matrix.item.config.rows track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder row item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"input-container\\\">\\n      <label>Row {{$index + 1}}</label>\\n      <input ng-model=\\\"row.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button\\\"\\n      md-no-ink\\n      aria-label=\\\"delete row item\\\"\\n      ng-click=\\\"Matrix.deleteRow($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n      <md-tooltip md-autohide=\\\"true\\\">Delete</md-tooltip>\\n    </md-button>\\n  </div>\\n  <div layout=\\\"row\\\" layout-align=\\\"start\\\">\\n    <md-button\\n      class=\\\"md-primary add-option-button\\\"\\n      md-no-ink\\n      aria-label=\\\"add row item\\\"\\n      ng-click=\\\"Matrix.addRow()\\\"\\n      >Add row</md-button\\n    >\\n  </div>\\n</div>\\n\";","export default \"<md-input-container class=\\\"matrix-container md-block\\\" layout=\\\"column\\\">\\n  <div class=\\\"matrix\\\">\\n    <div class=\\\"matrix-row\\\" flex layout=\\\"row\\\">\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\"></span>\\n      <span\\n        class=\\\"matrix-cell matrix-cell-header\\\"\\n        flex\\n        ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >{{column.value}}</span\\n      >\\n    </div>\\n    <div\\n      class=\\\"matrix-row\\\"\\n      ng-repeat=\\\"row in MatrixView.formItem.config.rows track by $index\\\"\\n      layout=\\\"row\\\"\\n    >\\n      <span class=\\\"matrix-cell\\\" flex=\\\"20\\\" layout=\\\"column\\\" layout-align=\\\"center\\\"\\n        >{{row.value}}</span\\n      >\\n      <md-radio-group\\n        ng-model=\\\"row.selected\\\"\\n        ng-change=\\\"MatrixView._updateValidity()\\\"\\n        flex\\n        layout=\\\"row\\\"\\n      >\\n        <span\\n          class=\\\"matrix-cell radio-button-cell\\\"\\n          flex\\n          ng-repeat=\\\"column in MatrixView.formItem.config.columns track by $index\\\"\\n        >\\n          <md-radio-button\\n            value=\\\"{{column.value}}\\\"\\n            aria-label=\\\"...\\\"\\n          ></md-radio-button>\\n        </span>\\n      </md-radio-group>\\n    </div>\\n  </div>\\n\\n  <div ng-messages=\\\"MatrixView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"RadioButton.item.options\\\"\\n>\\n  <md-switch\\n    ng-model=\\\"RadioButton.item.config.direction\\\"\\n    ng-true-value=\\\"'horizontal'\\\"\\n    ng-false-value=\\\"'vertical'\\\"\\n  >\\n    Layout direction ({{RadioButton.item.config.direction == 'horizontal' ?\\n    'Horizontal' : 'Vertical'}})\\n  </md-switch>\\n\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in RadioButton.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button\\n      class=\\\"md-button md-warn\\\"\\n      ng-click=\\\"RadioButton.deleteOption($index)\\\"\\n    >\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"RadioButton.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-radio-group\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"RadioButtonView.formItem.config.required\\\"\\n    ng-model=\\\"RadioButtonView.formItem.value\\\"\\n    layout=\\\"{{RadioButtonView.formItem.config.direction == 'horizontal' ? 'row' : 'column'}}\\\"\\n    required\\n  >\\n    <md-radio-button\\n      ng-repeat=\\\"option in RadioButtonView.formItem.options track by $index\\\"\\n      value=\\\"{{option.value}}\\\"\\n      aria-label=\\\"...\\\"\\n    >\\n      {{option.value}}\\n    </md-radio-button>\\n  </md-radio-group>\\n\\n  <div ng-messages=\\\"RadioButtonView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Select.item.options\\\"\\n>\\n  <div\\n    class=\\\"option-item\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in Select.item.options track by $index\\\"\\n    sv-element\\n  >\\n    <md-button\\n      class=\\\"md-button handle\\\"\\n      md-no-ink\\n      aria-label=\\\"reorder option item\\\"\\n      sv-handle\\n    >\\n      <md-icon class=\\\"material-icons\\\">reorder</md-icon>\\n    </md-button>\\n\\n    <md-input-container class=\\\"md-block\\\">\\n      <label>Option {{$index + 1}}</label>\\n      <input ng-model=\\\"option.value\\\" />\\n    </md-input-container>\\n\\n    <md-button class=\\\"md-button md-warn\\\" ng-click=\\\"Select.deleteOption($index)\\\">\\n      <md-icon class=\\\"material-icons\\\">delete</md-icon>\\n    </md-button>\\n  </div>\\n\\n  <md-button class=\\\"md-raised md-accent\\\" ng-click=\\\"Select.addOption()\\\"\\n    >Add Option</md-button\\n  >\\n</div>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <md-select\\n    name=\\\"formItemInput\\\"\\n    ng-required=\\\"SelectView.formItem.config.required\\\"\\n    ng-model=\\\"SelectView.formItem.value\\\"\\n  >\\n    <md-option\\n      ng-repeat=\\\"option in SelectView.formItem.options track by $index\\\"\\n      ng-value=\\\"option.value\\\"\\n      >{{ option.value }}</md-option\\n    >\\n  </md-select>\\n  <div ng-messages=\\\"SelectView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <label>Placeholder</label>\\n  <input type=\\\"text\\\" ng-model=\\\"Textarea.item.config.placeholder\\\" />\\n</md-input-container>\\n\";","export default \"<md-input-container class=\\\"md-block\\\">\\n  <textarea\\n    ng-model=\\\"TextareaView.formItem.value\\\"\\n    placeholder=\\\"{{TextareaView.formItem.config.placeholder}}\\\"\\n    ng-required=\\\"TextareaView.formItem.config.required\\\"\\n  ></textarea>\\n  <div ng-messages=\\\"TextareaView.form.$error\\\">\\n    <div ng-message=\\\"required\\\">This field is required</div>\\n  </div>\\n</md-input-container>\\n\";","export default \"<div\\n  class=\\\"sortable-container\\\"\\n  layout=\\\"column\\\"\\n  sv-root\\n  sv-part=\\\"Upload.item.options\\\"\\n>\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Upload Button label</label>\\n    <input ng-model=\\\"Upload.item.config.uploadFileButtonLabel\\\" />\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.multipleUpload\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Multiple\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <span>Max File size: {{Upload.item.config.size}} Mb</span>\\n    <input\\n      type=\\\"number\\\"\\n      id=\\\"size\\\"\\n      name=\\\"size\\\"\\n      min=\\\"0.1\\\"\\n      max=\\\"999\\\"\\n      step=\\\"0.1\\\"\\n      aria-label=\\\"size\\\"\\n      ng-model=\\\"Upload.item.config.size\\\"\\n    />\\n  </md-input-container>\\n\\n  <md-input-container class=\\\"md-block\\\">\\n    <label>Max file size error message</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.sizeErrMessage\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n\\n  <md-switch\\n    ng-model=\\\"Upload.item.config.showAccept\\\"\\n    ng-true-value=\\\"true\\\"\\n    ng-false-value=\\\"false\\\"\\n  >\\n    Configure allowed file types\\n  </md-switch>\\n\\n  <md-input-container class=\\\"md-block\\\" ng-if=\\\"Upload.item.config.showAccept\\\">\\n    <label>Allowed Types</label>\\n    <textarea\\n      ng-model=\\\"Upload.item.config.accept\\\"\\n      md-maxlength=\\\"150\\\"\\n      rows=\\\"2\\\"\\n    ></textarea>\\n  </md-input-container>\\n</div>\\n\";","export default \"<div layout=\\\"row\\\" class=\\\"option-item upload-item\\\">\\n  <md-input-container class=\\\"md-block\\\" style=\\\"margin: 0\\\">\\n    <input type=\\\"file\\\" class=\\\"ng-hide\\\" aria-label=\\\"file\\\" />\\n    <md-input-container flex class=\\\"md-block\\\">\\n      <input\\n        type=\\\"text\\\"\\n        ng-model=\\\"fileName\\\"\\n        class=\\\"ng-hide\\\"\\n        disabled\\n        aria-label=\\\"fileName\\\"\\n      />\\n    </md-input-container>\\n  </md-input-container>\\n\\n  <md-button class=\\\"md-raised md-accent upload-button\\\"\\n    ><md-icon class=\\\"material-icons\\\">attach_file</md-icon\\n    ><span\\n      >{{UploadView.formItem.config.uploadFileButtonLabel}}</span\\n    ></md-button\\n  >\\n</div>\\n\\n<div>\\n  <label></label>\\n  <div\\n    style=\\\"display: grid; grid-template-columns: 8em auto; align-items: center\\\"\\n    layout=\\\"row\\\"\\n    ng-repeat=\\\"option in UploadView.formItem.options track by $index\\\"\\n  >\\n    <md-button ng-click=\\\"UploadView.removeItem($index)\\\" class=\\\"md-icon-button\\\">\\n      <md-icon class=\\\"material-icons\\\">close</md-icon>\\n    </md-button>\\n    <span>{{option.name}}</span>\\n  </div>\\n</div>\\n\";","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import './index.scss'\nimport { UploadItem } from './directives/upload-item/upload-item.directive'\nimport { UploadView } from './directives/upload-item/upload-view.directive'\nimport { AgreementItem } from './directives/agreement-item/agreement-item.directive'\nimport { AgreementView } from './directives/agreement-item/agreement-view.directive'\nimport { MainController } from './main/main.controller'\nimport { Utils } from './utils/utils.service'\nimport { CheckboxesItem } from './directives/checkboxes-item/checkboxes-item.directive'\nimport { CheckboxesView } from './directives/checkboxes-item/checkboxes-view.directive'\nimport { FormItem } from './directives/form-item/form-item.directive'\nimport { FormItemsContainer } from './directives/form-items-container/form-items-container.directive'\nimport { FormView } from './directives/form-view/form-view.directive'\nimport { InputItem } from './directives/input-item/input-item.directive'\nimport { InputView } from './directives/input-item/input-view.directive'\nimport { LabelItem } from './directives/label-item/label-item.directive'\nimport { LabelView } from './directives/label-item/label-view.directive'\nimport { MatrixItem } from './directives/matrix-item/matrix-item.directive'\nimport { MatrixView } from './directives/matrix-item/matrix-view.directive'\nimport { RadioButtonItem } from './directives/radio-button-item/radio-button-item.directive'\nimport { RadioButtonView } from './directives/radio-button-item/radio-button-view.directive'\nimport { SelectView } from './directives/select-item/select-view.directive'\nimport { SelectItem } from './directives/select-item/select-item.directive'\nimport { TextareaItem } from './directives/textarea-item/textarea-item.directive'\nimport { TextareaView } from './directives/textarea-item/textarea-view.directive'\n\nexport default angular\n  .module('angularMaterialFormBuilder', [\n    'ngMaterial',\n    'angular-sortable-view',\n    'ngMessages',\n  ])\n  .service('Utils', Utils)\n  .controller('MainController', MainController)\n  .directive('uploadItem', UploadItem)\n  .directive('uploadView', UploadView)\n  .directive('agreementItem', AgreementItem)\n  .directive('agreementView', AgreementView)\n  .directive('checkboxesItem', CheckboxesItem)\n  .directive('checkboxesView', CheckboxesView)\n  .directive('formItem', FormItem)\n  .directive('formItemsContainer', FormItemsContainer)\n  .directive('formView', FormView)\n  .directive('inputItem', InputItem)\n  .directive('inputView', InputView)\n  .directive('labelItem', LabelItem)\n  .directive('labelView', LabelView)\n  .directive('matrixItem', MatrixItem)\n  .directive('matrixView', MatrixView)\n  .directive('radioButtonItem', RadioButtonItem)\n  .directive('radioButtonView', RadioButtonView)\n  .directive('selectItem', SelectItem)\n  .directive('selectView', SelectView)\n  .directive('textareaItem', TextareaItem)\n  .directive('textareaView', TextareaView)\n"],"names":["root","factory","exports","module","define","amd","self","AgreementItemCtrl","Utils","$element","this","Element","item","extend","config","maxSelections","options","value","selected","AgreementItem","constructor","restrict","scope","controller","controllerAs","bindToController","AgreementViewCtrl","$scope","Scope","formItem","init","selectedOptions","_getSelectedOptions","disableOptions","isValid","_updateView","_updateValidity","isPreview","_enableWatchers","toggleSelectedOption","filter","option","length","required","form","$setValidity","$watch","newVal","undefined","AgreementView","$timeout","template","AgreementViewTemplate","link","element","attrs","ctrl","CheckboxesItemCtrl","deleteOption","index","splice","addOption","push","setTimeout","find","focus","CheckboxesItem","CheckboxesItemTemplate","CheckboxesViewCtrl","CheckboxesView","CheckboxesViewTemplate","DEFAULT_TITLE","upload","agreement","input","chooseFromList","label","multipleChoices","matrix","checkboxes","textarea","FormItemCtrl","$attrs","Attrs","templates","type","props","title","helpText","deleteClicked","onDelete","_getItemTemplate","FormItem","$compile","onUp","onDown","FormItemTemplate","el","FormItemsContainerCtrl","items","delete","up","prevItem","down","nextItem","FormItemsContainer","FormItemsContainerTemplate","FormViewCtrl","FormView","FormViewTemplate","InputItemCtrl","InputItem","InputItemTemplate","InputViewCtrl","InputView","InputViewTemplate","elem","LabelItemCtrl","LabelItem","LabelItemTemplate","LabelViewCtrl","$sce","sanitizedTitle","trustAsHtml","LabelView","LabelViewTemplate","MatrixItemCtrl","$document","RowContainer","angular","querySelector","ColumnContainer","rows","columns","deleteRow","addRow","bind","deleteColumn","addColumn","MatrixItem","MatrixItemTemplate","MatrixViewCtrl","valid","some","row","$watchGroup","MatrixView","MatrixViewTemplate","RadioButtonItemCtrl","RadioButtonItem","RadioButtonTemplate","RadioButtonViewCtrl","RadioButtonView","RadioButtonViewTemplate","SelectItemCtrl","SelectItem","SelectTemplate","SelectViewCtrl","SelectView","SelectViewTemplate","TextareaItemCtrl","TextareaItem","TextareaItemTemplate","TextareaViewCtrl","TextareaView","TextareaViewTemplate","UploadItemCtrl","UploadItem","UploadItemTemplate","UploadViewCtrl","isMultiple","showAllowed","size","uploadFileButtonLabel","_updateMultiple","multipleUpload","attr","removeAttr","_updateAccept","showAccept","setAttribute","accept","removeAttribute","removeItem","UploadView","UploadViewTemplate","button","css","on","trigger","click","e","$apply","files","Array","from","target","maxSizeMB","file","text","sizeErrMessage","map","name","MainController","addItem","dest","src","Object","keys","reduce","result","key","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","d","definition","o","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","service","directive"],"sourceRoot":""}
\ No newline at end of file
index 1e65bbe..17465a3 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "@xenialab/angular-material-form-builder",
-  "version": "1.2.2",
+  "version": "1.2.0",
   "description": "Form builder for Angular Material (AngularJS version)",
   "main": "dist/angular-material-form-builder.min.js",
   "scripts": {
@@ -53,9 +53,9 @@
     "mdi": "^2.2.43"
   },
   "devDependencies": {
-    "@babel/core": "^7.16.5",
-    "@babel/preset-env": "^7.16.5",
-    "@types/jest": "^27.0.3",
+    "@babel/core": "^7.15.8",
+    "@babel/preset-env": "^7.15.8",
+    "@types/jest": "^27.0.2",
     "angular": "^1.8.2",
     "angular-animate": "^1.8.2",
     "angular-aria": "^1.8.2",
     "babel-loader": "^8.2.3",
     "babel-plugin-angularjs-annotate": "^0.10.0",
     "clean-webpack-plugin": "^4.0.0",
-    "css-loader": "^6.5.1",
-    "css-minimizer-webpack-plugin": "^3.2.0",
-    "eslint": "^8.4.1",
+    "css-loader": "^6.5.0",
+    "css-minimizer-webpack-plugin": "^3.1.1",
+    "eslint": "^8.1.0",
     "eslint-config-node": "^4.1.0",
-    "eslint-plugin-import": "^2.25.3",
-    "eslint-plugin-jest": "^25.3.0",
+    "eslint-plugin-import": "^2.25.2",
+    "eslint-plugin-jest": "^25.2.2",
     "eslint-plugin-node": "^11.1.0",
-    "eslint-webpack-plugin": "^3.1.1",
-    "husky": "^7.0.4",
-    "jest": "^27.4.5",
+    "eslint-webpack-plugin": "^3.1.0",
+    "husky": "^7.0.0",
+    "jest": "^27.3.1",
     "jest-raw-loader": "^1.0.1",
-    "lint-staged": "^12.1.2",
+    "lint-staged": "^11.2.6",
     "mdi": "^2.2.43",
-    "mini-css-extract-plugin": "^2.4.5",
-    "prettier": "^2.5.1",
+    "mini-css-extract-plugin": "^2.4.3",
+    "prettier": "^2.4.1",
     "raw-loader": "^4.0.2",
-    "sass": "^1.45.0",
-    "sass-loader": "^12.4.0",
+    "sass": "^1.43.4",
+    "sass-loader": "^12.3.0",
     "style-loader": "^3.3.1",
-    "terser-webpack-plugin": "^5.2.5",
+    "terser-webpack-plugin": "^5.2.4",
     "url-loader": "^4.1.1",
-    "webpack": "^5.65.0",
+    "webpack": "^5.61.0",
     "webpack-cli": "^4.9.1",
-    "webpack-dev-server": "^4.6.0"
+    "webpack-dev-server": "^4.4.0"
   },
   "lint-staged": {
     "./*.js": [
index e3684ad..32ac9a6 100644 (file)
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.7beab4e5.js"></script>
+  <script src="scripts/app.5a7da15f.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 60%
rename from public/scripts/app.7beab4e5.js
rename to public/scripts/app.5a7da15f.js
index 9c351e7..a8e6137 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(s,o,e,t){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator?r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0:r.isValidCondition=!1}function i(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=d,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=c,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value||(r.value=null),"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function O(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function C(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=C.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),O(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=C.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,O(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b,A){var E=this;function y(e){var n={};for(var t in E.tabs)E.tabs.hasOwnProperty(t)&&(n[t]=_.pick(E.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(E.tabs[t].contact)||(n[t].contact=_.pick(E.tabs[t].contact,["id","ListId"])),_.isNil(E.tabs[t].calls)||(n[t].calls=E.tabs[t].calls),E.tabs[t].interaction&&(n[t].interaction=_.pick(E.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+E.user.id));a?(a.tabs=n,a.currentTab=E.currentTab,a.autoClose=E.autoClose):a={tabs:n,currentTab:E.currentTab,autoClose:E.autoClose},s.localStorage.setItem("motion2.user:"+E.user.id,JSON.stringify(a)),e&&S(e)}function S(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:E.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in E.tabs)E.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(E.tabs[t].channel)&&E.tabs[t].interaction&&!E.tabs[t].interaction.closed&&(n.capacity[E.tabs[t].channel]+=1,n.interaction[E.tabs[t].channel].push(E.tabs[t].interaction.id));if(!_.isEqual(E.agentCapacity,n.capacity))return E.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function T(e){E.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:E.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(E.tabs[e.id]),delete E.tabs[e.id],E.currentTab=0,y(e))}function I(e){Object.keys(E.tabs).length!==E.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,E.tabs[e.id]=e,E.currentTab=e.id,y(e)):a.warning({title:"",msg:o.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function O(n){return _.find(E.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=E.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&D(t)),n){var s=_.find(E.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];E.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(P()).finally(function(){I(i)});I(i)}}else I(i)}function w(n,t){var e=_.find(E.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,E.currentTab=e.id):I(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function R(e){e&&e.uniqueid&&E.notifications[e.uniqueid]&&(a.clear(E.notifications[e.uniqueid]),delete E.notifications[e.uniqueid])}function x(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),E.tabs)if(E.tabs.hasOwnProperty(e)){var a=E.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),D(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(N(t,a.contact.id,a),1e3)}}y()}function N(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function D(e){e.disposedAt=new Date}function P(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){E.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}E.license=g,E.setting=v,E.detectBrowser=f.detectBrowser(),E.user=n.getCurrentUser(),E.currentTab=0,E.notifications={},E.tabs={},E.agentCapacity={},E.autoClose=!1,E.globalUserLists=c||{count:0,rows:[]},E.globalLists=m||{count:0,rows:[]},E.globalCompanies=u||{count:0,rows:[]},E.globalTags=p||{count:0,rows:[]},E.onClickTab=function(e){E.currentTab=e,y(E.tabs[e])},E.isActiveTab=function(e){return e===E.currentTab},E.alreadyExistsTab=O,E.addContactTab=C,E.addInteractionTab=w,E.addTab=I,E.removeTab=T,E.updateLocalStorage=y,E.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=E.user.voicePause||E.user.chatPause||E.user.mailPause||E.user.openchannelPause||E.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){E.user&&a&&!t&&d.user.unpause({id:E.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:E.user,channel:e.channel,interaction:e.interaction}}),T(e)}).catch(function(){"interaction"===e.type&&T(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){T(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else T(e)}},E.dialPreviewRecallReminder=function(e){var n=A("formatdate")(e.hopper.scheduledat),t="<div>"+o.instant("DASHBOARDS.PREVIEW_CALL_FOR")+"<b>"+e.hopper.Contact.firstName+" "+e.hopper.Contact.lastName+"</b> "+o.instant("DASHBOARDS.SCHEDULED_AT")+"<b>"+n+"</b></div>";t+="<div>"+o.instant("DASHBOARDS.LIST_NAME")+": "+e.hopper.List.name+"</div>",t+="<div style='margin-top:20px;margin-bottom:40px'>",t+="<div class='preview_cancel'><a href='#' onclick='dismissToasty("+e.hopper.id+")'>"+o.instant("DASHBOARDS.CANCEL")+"</a></div>",t+="<div class='preview_open'><a href='#' onclick='openContactTab("+e.hopper.id+")'>"+o.instant("DASHBOARDS.OPEN")+"</a></div>",t+="</div>",a.info({title:o.instant("DASHBOARDS.PREVIEW_CALL"),msg:t,showClose:!0,timeout:2e4,html:!0,onAdd:function(){E.notifications[e.hopper.id]=this.id}})},E.openContactTab=function(e){E.openPreviewDialog(e),n=e,E.toasty.clear(E.notifications[n]),delete E.notifications[n];var n},E.openPreviewDialog=function(e){d.cmHopper.getPreviewRecall({hopperId:e}).$promise.then(function(e){i.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!0,locals:{preview:e,currentUser:E.user},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})})},E.toasty=a,t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:E.user,contact:e}))}catch(e){console.error(e)}I({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(P());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:E.user}))}catch(e){console.error(e)}I({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(P())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&I({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};I(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&I({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=O(e);if(n){if(d[e.channel+"Message"])return E.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:E.user.id}).$promise.catch(P())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){E.notifications[e.uniqueid]=this.id},onAccept:function(){if(R(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:E.user.id,manual:!0}).$promise.then(function(e){w(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(P())},onReject:function(){if(R(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:E.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(P())}})}var t}),t.on("notification:remove",R),t.on("voice_queue_channel:remove",x),t.on("voice_outbound_channel:remove",x),t.on("user:dialPreviewRecallReminder",E.dialPreviewRecallReminder),function(){var e=s.localStorage.getItem("motion2.user:"+E.user.id);if(e)try{e=JSON.parse(e),E.tabs=e.tabs?e.tabs:{},E.currentTab=e.currentTab?e.currentTab:0,E.autoClose=!!e.autoClose&&e.autoClose,S(E.tabs[E.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in E.notifications)E.notifications.hasOwnProperty(e)&&R({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","$filter"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function u(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&E(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)g(c.chatInteractions.rows[n])}function p(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&p(c.query.page)}}function b(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||p()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}],c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:m("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:m("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:m("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",f),l.on("chatInteraction:update",f),l.on("chatInteractionTags:save",b),l.on("chatMessage:save",A),l.on("chatMessage:update",A),l.on("user_has_chat_interactions:save",v),l.on("user_has_chat_interactions:remove",h),p(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&E()})},c.success=u,c.getChatInteractions=p,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=g,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)v(m.faxInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else g(m.query.page)}}function A(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",b),l.on("faxInteraction:update",b),l.on("faxInteractionTags:save",A),l.on("faxMessage:save",E),l.on("faxMessage:update",E),l.on("user_has_fax_interactions:save",h),l.on("user_has_fax_interactions:remove",f),g(m.query.page)})},m.success=p,m.getFaxInteractions=g,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(u.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&S(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)h(u.mailInteractions.rows[n])}function g(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,p).$promise}function v(e,n){o.$parent.vm.addInteractionTab("mail",n)}function h(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&g(u.query.page)}}function E(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function S(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||g()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}],u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:s("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:s("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:s("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",A),i.on("mailInteraction:update",A),i.on("mailInteractionTags:save",E),i.on("mailMessage:save",y),i.on("mailMessage:update",y),i.on("user_has_mail_interactions:save",f),i.on("user_has_mail_interactions:remove",b),g(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&S()})},u.success=p,u.getMailInteractions=g,u.showMailInteraction=v,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=h,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,g())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,v(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)v(m.openchannelInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",b),l.on("openchannelInteraction:update",b),l.on("openchannelInteractionTags:save",A),l.on("openchannelMessage:save",E),l.on("openchannelMessage:update",E),l.on("user_has_openchannel_interactions:save",h),l.on("user_has_openchannel_interactions:remove",f),g(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&y()})},m.success=p,m.getOpenchannelInteractions=g,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)v(m.smsInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",b),l.on("smsInteraction:update",b),l.on("smsInteractionTags:save",A),l.on("smsMessage:save",E),l.on("smsMessage:update",E),l.on("user_has_sms_interactions:save",h),l.on("user_has_sms_interactions:remove",f),g(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&y()})},m.success=p,m.getSmsInteractions=g,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)v(m.whatsappInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",b),l.on("whatsappInteraction:update",b),l.on("whatsappInteractionTags:save",A),l.on("whatsappMessage:save",E),l.on("whatsappMessage:update",E),l.on("user_has_whatsapp_interactions:save",h),l.on("user_has_whatsapp_interactions:remove",f),g(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&y()})},m.success=p,m.getWhatsappInteractions=g,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:"outlook365"===e.provider&&(e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password);r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=t(function(){},999);function f(){v.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function b(){v.query.offset=(v.query.page-1)*v.query.limit,v.promise=l.realtime.getAgents(v.query).$promise.then(function(e){v.agents=e,f()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function A(e){_.remove(v.agents.rows,["id",e.id])}v.currentUser=u.getCurrentUser(),v.channel=n.params.channel,v.queueType=n.params.direction,v.agents=o,v.pauses=r||{count:0,rows:[]},v.license=p,v.userProfileSection=m&&1==m.count?m.rows[0]:null,v.crudPermissions=u.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},v.getAgents=b,v.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){A(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:v.channel,direction:v.queueType,crudPermissions:v.crudPermissions}})},v.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(v.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return A(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&b()}),d.on("user:agentconnect",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(v.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),h&&t.cancel(h)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:e.Smtp.modernAuthentication;l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),s.smsAccount.get({fields:"id,name"}).$promise.then(function(e){o.smsAccounts=e||{count:0,rows:[]}}),s.faxAccount.get({fields:"id,name"}).$promise.then(function(e){o.faxAccounts=e||{count:0,rows:[]}}),s.mailAccount.get({fields:"id,name"}).$promise.then(function(e){o.mailAccounts=e||{count:0,rows:[]}}),s.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){o.openchannelAccounts=e||{count:0,rows:[]}}),s.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){o.whatsappAccounts=e||{count:0,rows:[]}}),s.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){o.chatWebsites=e||{count:0,rows:[]}}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].smsAccounts=o.smsAccounts,e.rows[n].smsAccountsSelected=_.map(o.smsAccounts.rows,"id"),e.rows[n].faxAccounts=o.faxAccounts,e.rows[n].faxAccountsSelected=_.map(o.faxAccounts.rows,"id"),e.rows[n].mailAccounts=o.mailAccounts,e.rows[n].mailAccountsSelected=_.map(o.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=o.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(o.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=o.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(o.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=o.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(o.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].smsAccounts=o.smsAccounts,o.customDashboard.widgets[n].smsAccountsSelected=_.map(o.smsAccounts.rows,"id"),o.customDashboard.widgets[n].faxAccounts=o.faxAccounts,o.customDashboard.widgets[n].faxAccountsSelected=_.map(o.faxAccounts.rows,"id"),o.customDashboard.widgets[n].mailAccounts=o.mailAccounts,o.customDashboard.widgets[n].mailAccountsSelected=_.map(o.mailAccounts.rows,"id"),o.customDashboard.widgets[n].openchannelAccounts=o.openchannelAccounts,o.customDashboard.widgets[n].openchannelAccountsSelected=_.map(o.openchannelAccounts.rows,"id"),o.customDashboard.widgets[n].chatWebsites=o.chatWebsites,o.customDashboard.widgets[n].chatWebsitesSelected=_.map(o.chatWebsites.rows,"id"),o.customDashboard.widgets[n].whatsappAccounts=o.whatsappAccounts,o.customDashboard.widgets[n].whatsappAccountsSelected=_.map(o.whatsappAccounts.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:MailAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d){var c=this;function m(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function g(e){return _.map(e.children,function(e){return e.id})}i.clear(),c.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){c.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){c.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+c.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,m(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,u(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)p(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function O(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function C(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return C(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return C(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;C();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){O(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),O(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable" ms-scroll>\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(s,o,e,t){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator?r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0:r.isValidCondition=!1}function i(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=d,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=c,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value||(r.value=null),"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A){var E=this,l=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],d=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function c(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){d.webrtc=_.pick(E.conf,l),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(d))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function O(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function C(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function m(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function x(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function N(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function D(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function P(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function L(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(d.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){c(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;console.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},u)}}r?(o.call_id=e.request.call_id,n&&L(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=C.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),O(e).then(function(){var n=E.callbackQueue[e.call_id];n&&L(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=C.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,O(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),r.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?P(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(P(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=P(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),r.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=P(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return x(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){m()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return x(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:D(n,"requestSucceeded","top right",3e3),requestFailed:D(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):m():m()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),m())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){N()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=N,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,c(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):c(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return x(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:D(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:D(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){console.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return e}e.$inject=["$translate"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(e,n,t){if(void 0===e)return"";if(!n)return"";t||(t="option");var a=_.find(n,["value",e]);return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(e){if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});return l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).then(function(){c.customFields.rows.forEach(function(e){"datetime"===e.type&&c.contact["cf_"+e.id]&&(c.contact["cf_"+e.id]=u(c.contact["cf_"+e.id]))}),Object.keys(c.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(c.customFields.rows,["id",Number(n)])||delete c.contact["cf_"+n]}})}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}function u(e){return null===e?void 0:new Date(e)}function p(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,m(c.contact.ListId)):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),p()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),p()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=p,c.getCustomFields=m,c.getDateFromString=u}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b,A){var E=this;function y(e){var n={};for(var t in E.tabs)E.tabs.hasOwnProperty(t)&&(n[t]=_.pick(E.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(E.tabs[t].contact)||(n[t].contact=_.pick(E.tabs[t].contact,["id","ListId"])),_.isNil(E.tabs[t].calls)||(n[t].calls=E.tabs[t].calls),E.tabs[t].interaction&&(n[t].interaction=_.pick(E.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+E.user.id));a?(a.tabs=n,a.currentTab=E.currentTab,a.autoClose=E.autoClose):a={tabs:n,currentTab:E.currentTab,autoClose:E.autoClose},s.localStorage.setItem("motion2.user:"+E.user.id,JSON.stringify(a)),e&&S(e)}function S(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:E.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in E.tabs)E.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(E.tabs[t].channel)&&E.tabs[t].interaction&&!E.tabs[t].interaction.closed&&(n.capacity[E.tabs[t].channel]+=1,n.interaction[E.tabs[t].channel].push(E.tabs[t].interaction.id));if(!_.isEqual(E.agentCapacity,n.capacity))return E.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function T(e){E.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:E.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(E.tabs[e.id]),delete E.tabs[e.id],E.currentTab=0,y(e))}function I(e){Object.keys(E.tabs).length!==E.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,E.tabs[e.id]=e,E.currentTab=e.id,y(e)):a.warning({title:"",msg:o.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function O(n){return _.find(E.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=E.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&D(t)),n){var s=_.find(E.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];E.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(P()).finally(function(){I(i)});I(i)}}else I(i)}function w(n,t){var e=_.find(E.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,E.currentTab=e.id):I(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function R(e){e&&e.uniqueid&&E.notifications[e.uniqueid]&&(a.clear(E.notifications[e.uniqueid]),delete E.notifications[e.uniqueid])}function x(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),E.tabs)if(E.tabs.hasOwnProperty(e)){var a=E.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),D(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(N(t,a.contact.id,a),1e3)}}y()}function N(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function D(e){e.disposedAt=new Date}function P(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){E.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}E.license=g,E.setting=v,E.detectBrowser=f.detectBrowser(),E.user=n.getCurrentUser(),E.currentTab=0,E.notifications={},E.tabs={},E.agentCapacity={},E.autoClose=!1,E.globalUserLists=c||{count:0,rows:[]},E.globalLists=m||{count:0,rows:[]},E.globalCompanies=u||{count:0,rows:[]},E.globalTags=p||{count:0,rows:[]},E.onClickTab=function(e){E.currentTab=e,y(E.tabs[e])},E.isActiveTab=function(e){return e===E.currentTab},E.alreadyExistsTab=O,E.addContactTab=C,E.addInteractionTab=w,E.addTab=I,E.removeTab=T,E.updateLocalStorage=y,E.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=E.user.voicePause||E.user.chatPause||E.user.mailPause||E.user.openchannelPause||E.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){E.user&&a&&!t&&d.user.unpause({id:E.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:E.user,channel:e.channel,interaction:e.interaction}}),T(e)}).catch(function(){"interaction"===e.type&&T(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){T(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else T(e)}},E.dialPreviewRecallReminder=function(e){var n=A("formatdate")(e.hopper.scheduledat),t="<div>"+o.instant("DASHBOARDS.PREVIEW_CALL_FOR")+"<b>"+e.hopper.Contact.firstName+" "+e.hopper.Contact.lastName+"</b> "+o.instant("DASHBOARDS.SCHEDULED_AT")+"<b>"+n+"</b></div>";t+="<div>"+o.instant("DASHBOARDS.LIST_NAME")+": "+e.hopper.List.name+"</div>",t+="<div style='margin-top:20px;margin-bottom:40px'>",t+="<div class='preview_cancel'><a href='#' onclick='dismissToasty("+e.hopper.id+")'>"+o.instant("DASHBOARDS.CANCEL")+"</a></div>",t+="<div class='preview_open'><a href='#' onclick='openContactTab("+e.hopper.id+")'>"+o.instant("DASHBOARDS.OPEN")+"</a></div>",t+="</div>",a.info({title:o.instant("DASHBOARDS.PREVIEW_CALL"),msg:t,showClose:!0,timeout:2e4,html:!0,onAdd:function(){E.notifications[e.hopper.id]=this.id}})},E.openContactTab=function(e){E.openPreviewDialog(e),n=e,E.toasty.clear(E.notifications[n]),delete E.notifications[n];var n},E.openPreviewDialog=function(e){d.cmHopper.getPreviewRecall({hopperId:e}).$promise.then(function(e){i.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!0,locals:{preview:e,currentUser:E.user},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})})},E.toasty=a,t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:E.user,contact:e}))}catch(e){console.error(e)}I({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(P());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:E.user}))}catch(e){console.error(e)}I({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(P())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&I({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};I(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&I({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=O(e);if(n){if(d[e.channel+"Message"])return E.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:E.user.id}).$promise.catch(P())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){E.notifications[e.uniqueid]=this.id},onAccept:function(){if(R(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:E.user.id,manual:!0}).$promise.then(function(e){w(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(P())},onReject:function(){if(R(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:E.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(P())}})}var t}),t.on("notification:remove",R),t.on("voice_queue_channel:remove",x),t.on("voice_outbound_channel:remove",x),t.on("user:dialPreviewRecallReminder",E.dialPreviewRecallReminder),function(){var e=s.localStorage.getItem("motion2.user:"+E.user.id);if(e)try{e=JSON.parse(e),E.tabs=e.tabs?e.tabs:{},E.currentTab=e.currentTab?e.currentTab:0,E.autoClose=!!e.autoClose&&e.autoClose,S(E.tabs[E.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in E.notifications)E.notifications.hasOwnProperty(e)&&R({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","$filter"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u){var p=this;function g(){return i(function(n,e){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){p.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function v(){var e=p.selectedDisposition?p.selectedDisposition.name.toLowerCase():void 0;return{id:p.call.uniqueid,disposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,secondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,thirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function h(e){t.hide([e,p.autoClose])}p.user=d.getCurrentUser(),p.isReschedule=!1,p.recallme=!1,p.queueCampaign=void 0,p.queueCampaigns={count:0,rows:[]},p.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),p.contact=l,p.call=r,p.note=p.call.note||void 0,p.dialerCall=!1,p.hasBlackLists=!1,p.availableCalls=m,p.autoClose=u,p.hopper={minDate:new Date,dateTime:new Date},p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]?(p.dialerCall=!0,o.voiceQueue.getBlackLists({id:p.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(p.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):g(),p.onDispositionChange=function(e){switch(e){case"first":p.selectedDisposition=p.firstLevelDisposition,p.anySecondLevelDisposition=_.some(p.dispositions,["ParentId",p.firstLevelDisposition.id]),p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.anyThirdLevelDisposition=!1;break;case"second":p.selectedDisposition=p.secondLevelDisposition,p.anyThirdLevelDisposition=_.some(p.dispositions,["ParentId",p.secondLevelDisposition.id]);break;case"third":p.selectedDisposition=p.thirdLevelDisposition}},p.clearDispositionSelection=function(e){"second"===e?(p.secondLevelDisposition=void 0,p.thirdLevelDisposition=void 0,p.selectedDisposition=p.firstLevelDisposition):"third"===e&&(p.thirdLevelDisposition=void 0,p.selectedDisposition=p.secondLevelDisposition)},p.saveDisposition=function(e){p.selectedDisposition=_.isNil(e)?p.selectedDisposition:{name:e},e&&(p.firstLevelDisposition=p.selectedDisposition);p.call.note=p.note,o.voiceCallReport.update({id:p.call.uniqueid,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null,note:p.note,UserId:d.getCurrentUser().id,ContactId:p.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:p.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:p.firstLevelDisposition?p.firstLevelDisposition.name:null,userSecondDisposition:p.secondLevelDisposition?p.secondLevelDisposition.name:null,userThirdDisposition:p.thirdLevelDisposition?p.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.dialerCall&&(o.cmHopperFinal.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(v()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(p.selectedDisposition))h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"");else switch(p.selectedDisposition.name.toLowerCase()){case"blacklist":p.call&&p.call.variables&&p.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(p.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+p.selectedDisposition}),p.selectedDisposition=void 0}).then(function(e){e&&h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}(p.call.variables["xmd-voicequeueid"]);break;case"reschedule":p.isReschedule=!0,p.recallme=!1;break;case"recallme":p.isReschedule=!0,p.recallme=!0,p.user.selectRecallMeCampaign&&g().then(function(){p.originalCampaign=_.find(p.queueCampaigns.rows,["id",p.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));p.queueCampaign=e.previewCampaignId?_.find(p.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):p.originalCampaign});break;default:h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}},p.closeDialog=function(){t.cancel()},p.saveReschedule=function(){p.disable=!0;var e=p.queueCampaign?p.queueCampaign.id:null;p.dialerCall&&(e=p.queueCampaign&&"preview"===p.originalCampaign.dialMethod?p.queueCampaign.id:Number(p.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:p.contact.phone,UserId:p.recallme?d.getCurrentUser().id:null,ContactId:p.contact.id,ListId:p.contact.ListId,VoiceQueueId:e,scheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:p.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(){if(p.dialerCall&&(o.cmHopperFinal.update({id:p.call.uniqueid,rescheduled:!0,rescheduledat:moment(p.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:p.recallme}).$promise.catch(function(e){console.log(e)}),p.user.selectRecallMeCampaign&&"preview"===p.originalCampaign.dialMethod)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+p.user.id));e.previewCampaignId=p.queueCampaign.id,n.localStorage.setItem("motion2.user:"+p.user.id,JSON.stringify(e))}}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(p.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")}).finally(function(){p.disable=!1,h(p.selectedDisposition?p.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function u(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&E(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)g(c.chatInteractions.rows[n])}function p(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&p(c.query.page)}}function b(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||p()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}],c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:m("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:m("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:m("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",f),l.on("chatInteraction:update",f),l.on("chatInteractionTags:save",b),l.on("chatMessage:save",A),l.on("chatMessage:update",A),l.on("user_has_chat_interactions:save",v),l.on("user_has_chat_interactions:remove",h),p(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&E()})},c.success=u,c.getChatInteractions=p,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=g,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)v(m.faxInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else g(m.query.page)}}function A(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",b),l.on("faxInteraction:update",b),l.on("faxInteractionTags:save",A),l.on("faxMessage:save",E),l.on("faxMessage:update",E),l.on("user_has_fax_interactions:save",h),l.on("user_has_fax_interactions:remove",f),g(m.query.page)})},m.success=p,m.getFaxInteractions=g,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(u.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&S(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)h(u.mailInteractions.rows[n])}function g(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,p).$promise}function v(e,n){o.$parent.vm.addInteractionTab("mail",n)}function h(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&g(u.query.page)}}function E(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function S(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||g()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}],u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:s("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:s("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:s("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",A),i.on("mailInteraction:update",A),i.on("mailInteractionTags:save",E),i.on("mailMessage:save",y),i.on("mailMessage:update",y),i.on("user_has_mail_interactions:save",f),i.on("user_has_mail_interactions:remove",b),g(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&S()})},u.success=p,u.getMailInteractions=g,u.showMailInteraction=v,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=h,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,g())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,v(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)v(m.openchannelInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",b),l.on("openchannelInteraction:update",b),l.on("openchannelInteractionTags:save",A),l.on("openchannelMessage:save",E),l.on("openchannelMessage:update",E),l.on("user_has_openchannel_interactions:save",h),l.on("user_has_openchannel_interactions:remove",f),g(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&y()})},m.success=p,m.getOpenchannelInteractions=g,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)v(m.smsInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",b),l.on("smsInteraction:update",b),l.on("smsInteractionTags:save",A),l.on("smsMessage:save",E),l.on("smsMessage:update",E),l.on("user_has_sms_interactions:save",h),l.on("user_has_sms_interactions:remove",f),g(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&y()})},m.success=p,m.getSmsInteractions=g,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)v(m.whatsappInteractions.rows[n])}function g(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}],m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",b),l.on("whatsappInteraction:update",b),l.on("whatsappInteractionTags:save",A),l.on("whatsappMessage:save",E),l.on("whatsappMessage:update",E),l.on("user_has_whatsapp_interactions:save",h),l.on("user_has_whatsapp_interactions:remove",f),g(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&y()})},m.success=p,m.getWhatsappInteractions=g,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=v,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:"outlook365"===e.provider&&(e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password);r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v,h=this,f=t(function(){},999);function b(){h.agents.rows.forEach(function(e){g.setAgentStatusDisplayValue(e)})}function A(){h.query.offset=(h.query.page-1)*h.query.limit,h.promise=l.realtime.getAgents(h.query).$promise.then(function(e){h.agents=e,b()}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){_.remove(h.agents.rows,["id",e.id])}h.currentUser=u.getCurrentUser(),h.channel=n.params.channel,h.queueType=n.params.direction,h.agents=o,h.pauses=r||{count:0,rows:[]},h.license=p,h.userProfileSection=m&&1==m.count?m.rows[0]:null,h.crudPermissions=u.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:"",globalQueueFilter:""},h.getAgents=A,h.logout=function(e){return l.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){E(e),c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:h.queueType,crudPermissions:h.crudPermissions}})},h.pause=function(e,n){return l.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return l.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.manageScreenRecording=function(e,n){return l.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.on("user:save",function(e){var n=_.find(h.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n))}),d.on("user:update",function(e){var n=_.find(h.agents.rows,["id",e.id]);if(n){if(!1===e.online)return E(n);_.merge(n,e),n.globalStatus=g.getAgentStatus(n),g.setAgentStatusDisplayValue(n)}else e.online&&A()}),d.on("user:agentconnect",function(e){var n=_.find(h.agents.rows,["id",e.id]);if(n){if(!e.agentconnected)return;_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"]))}}),d.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(h.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias)}),v=h.channel+"Queue",l.getResourcesByRole(h.currentUser,v,{type:"inbound",fields:"id,name",sort:"name",nolimit:"true"},null).then(function(e){h.queues=e}),b(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),f&&t.cancel(f)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:e.Smtp.modernAuthentication;l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.agents=e||{count:0,rows:[]}}function v(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(p.agents.rows,{id:e.id}),p.agents.count-=1,p.agents.rows.length||p.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.agents=s||{count:0,rows:[]},p.userProfile=o,p.userProfileSection=r&&1==r.count?r.rows[0]:null,p.crudPermissions=c.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedAgents=[],p.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled",role:"agent",sort:"-updatedAt",limit:10,page:1},p.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],p.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:p.crudPermissions})},p.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:p.agents?p.agents.rows:[],crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){v(e)})},p.success=g,p.getAgents=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=l.user.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="Agents",p.promise=l.userProfile.getResources(p.query,g).$promise)},p.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:p.agents.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteAgent=v,p.exportSelectedAgents=function(){var e=angular.copy(p.selectedAgents);return p.selectedAgents=[],e},p.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+p.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){p.selectedAgents.forEach(function(e){v(e)}),p.selectedAgents=[]})},p.deselectAgents=function(){p.selectedAgents=[]},p.selectAllAgents=function(){p.selectedAgents=p.agents.rows};var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAgents())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),s.smsAccount.get({fields:"id,name"}).$promise.then(function(e){o.smsAccounts=e||{count:0,rows:[]}}),s.faxAccount.get({fields:"id,name"}).$promise.then(function(e){o.faxAccounts=e||{count:0,rows:[]}}),s.mailAccount.get({fields:"id,name"}).$promise.then(function(e){o.mailAccounts=e||{count:0,rows:[]}}),s.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){o.openchannelAccounts=e||{count:0,rows:[]}}),s.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){o.whatsappAccounts=e||{count:0,rows:[]}}),s.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){o.chatWebsites=e||{count:0,rows:[]}}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].smsAccounts=o.smsAccounts,e.rows[n].smsAccountsSelected=_.map(o.smsAccounts.rows,"id"),e.rows[n].faxAccounts=o.faxAccounts,e.rows[n].faxAccountsSelected=_.map(o.faxAccounts.rows,"id"),e.rows[n].mailAccounts=o.mailAccounts,e.rows[n].mailAccountsSelected=_.map(o.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=o.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(o.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=o.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(o.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=o.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(o.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].smsAccounts=o.smsAccounts,o.customDashboard.widgets[n].smsAccountsSelected=_.map(o.smsAccounts.rows,"id"),o.customDashboard.widgets[n].faxAccounts=o.faxAccounts,o.customDashboard.widgets[n].faxAccountsSelected=_.map(o.faxAccounts.rows,"id"),o.customDashboard.widgets[n].mailAccounts=o.mailAccounts,o.customDashboard.widgets[n].mailAccountsSelected=_.map(o.mailAccounts.rows,"id"),o.customDashboard.widgets[n].openchannelAccounts=o.openchannelAccounts,o.customDashboard.widgets[n].openchannelAccountsSelected=_.map(o.openchannelAccounts.rows,"id"),o.customDashboard.widgets[n].chatWebsites=o.chatWebsites,o.customDashboard.widgets[n].chatWebsitesSelected=_.map(o.chatWebsites.rows,"id"),o.customDashboard.widgets[n].whatsappAccounts=o.whatsappAccounts,o.customDashboard.widgets[n].whatsappAccountsSelected=_.map(o.whatsappAccounts.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:MailAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d){var c=this;function m(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function g(e){return _.map(e.children,function(e){return e.id})}i.clear(),c.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){c.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){c.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+c.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,m(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,u(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)p(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!d.viewHelpSection||o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(g(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function O(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function C(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return C(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return C(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;C();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){O(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),O(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.getAgents()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" class="md-caption margin-left-10" placeholder="{{vm.channel}}Queue" ng-change="vm.getAgents()">\n      <md-option ng-value=\'null\'></md-option>\n      <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            {{ agent.globalStatus === 'pause' || agent.globalStatus === '*pause' ? \n              ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n              ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase)\n            }}\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\" start-time=\"agent.lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"agent.globalStatus === 'pause' || agent.globalStatus === '*pause'\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.rows.length}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable" ms-scroll>\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
index 89a2014..10810e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5809=['contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','getDataValue','action','STRING','contactManager','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'];(function(_0x30bd66,_0x36a93d){var _0x74c9dd=function(_0x2cd660){while(--_0x2cd660){_0x30bd66['push'](_0x30bd66['shift']());}};_0x74c9dd(++_0x36a93d);}(_0x5809,0x78));var _0x9580=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x5809[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x9580('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x3a8d90){return this[_0x9580('0x1')](_0x9580('0x2'));}},'action':{'type':Sequelize[_0x9580('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x9580('0x4'),'integration',_0x9580('0x5'),_0x9580('0x6'),_0x9580('0x7'),_0x9580('0x8'),_0x9580('0x9'),_0x9580('0xa')]],'msg':_0x9580('0xb')}},'comment':_0x9580('0xb')},'data1':{'type':Sequelize[_0x9580('0x3')](0x1000),'comment':_0x9580('0xc')},'data2':{'type':Sequelize[_0x9580('0x3')](0x1000),'comment':_0x9580('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x9580('0xe')},'data4':{'type':Sequelize[_0x9580('0x3')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x9580('0x3')](0x1000),'comments':_0x9580('0xf')},'data6':{'type':Sequelize['STRING'],'comments':_0x9580('0x10')},'data7':{'type':Sequelize[_0x9580('0x11')],'comments':_0x9580('0x12')}};
\ No newline at end of file
+var _0xf767=['browser','bot','STRING','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','sequelize','exports','getDataValue','action','integration','motionbar','jscripty','urlForward'];(function(_0x4a5590,_0x1fc65b){var _0x138297=function(_0x5e74a6){while(--_0x5e74a6){_0x4a5590['push'](_0x4a5590['shift']());}};_0x138297(++_0x1fc65b);}(_0xf767,0xd5));var _0x7f76=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xf767[_0x13ea00];return _0x1f7347;};'use strict';var Sequelize=require(_0x7f76('0x0'));module[_0x7f76('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x2a1c6c){return this[_0x7f76('0x2')](_0x7f76('0x3'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x7f76('0x4'),_0x7f76('0x5'),_0x7f76('0x6'),_0x7f76('0x7'),_0x7f76('0x8'),_0x7f76('0x9'),'script']],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x7f76('0xa')](0x1000),'comment':_0x7f76('0xb')},'data2':{'type':Sequelize[_0x7f76('0xa')](0x1000),'comment':_0x7f76('0xc')},'data3':{'type':Sequelize[_0x7f76('0xa')](0x1000),'comment':_0x7f76('0xd')},'data4':{'type':Sequelize[_0x7f76('0xa')](0x1000),'comments':_0x7f76('0xe')},'data5':{'type':Sequelize[_0x7f76('0xa')](0x1000),'comments':_0x7f76('0xf')},'data6':{'type':Sequelize[_0x7f76('0xa')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x7f76('0x10')],'comments':'urlForward[body]'}};
\ No newline at end of file
index 12eb412..010e90c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4774=['../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','json','reject','save','then','destroy','error','name','send','update','body','Action','find','params','catch','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x5c942a,_0x4c8872){var _0x21c584=function(_0x5af6b2){while(--_0x5af6b2){_0x5c942a['push'](_0x5c942a['shift']());}};_0x21c584(++_0x4c8872);}(_0x4774,0x18a));var _0x4477=function(_0x125092,_0x5c4501){_0x125092=_0x125092-0x0;var _0x5f09d0=_0x4774[_0x125092];return _0x5f09d0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4477('0x0'));var zipdir=require(_0x4477('0x1'));var jsonpatch=require(_0x4477('0x2'));var rp=require(_0x4477('0x3'));var moment=require(_0x4477('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x4477('0x5'));var sox=require('sox');var csv=require(_0x4477('0x6'));var ejs=require(_0x4477('0x7'));var fs=require('fs');var fs_extra=require(_0x4477('0x8'));var _=require(_0x4477('0x9'));var squel=require(_0x4477('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4477('0xb'));var Papa=require(_0x4477('0xc'));var Redis=require(_0x4477('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x4477('0xe'));var as=require(_0x4477('0xf'));var hardwareService=require(_0x4477('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x4477('0x11'));var config=require(_0x4477('0x12'));var licenseUtil=require(_0x4477('0x13'));var db=require(_0x4477('0x14'))['db'];function respondWithStatusCode(_0x54c182,_0x2617ca){_0x2617ca=_0x2617ca||0xcc;return function(_0x233479){if(_0x233479){return _0x54c182[_0x4477('0x15')](_0x2617ca);}return _0x54c182[_0x4477('0x16')](_0x2617ca)[_0x4477('0x17')]();};}function respondWithResult(_0xce8c78,_0x54ae84){_0x54ae84=_0x54ae84||0xc8;return function(_0x327294){if(_0x327294){return _0xce8c78['status'](_0x54ae84)['json'](_0x327294);}};}function respondWithFilteredResult(_0x153281,_0x3ed90a){return function(_0x56ba62){if(_0x56ba62){var _0xa4130d=typeof _0x3ed90a[_0x4477('0x18')]===_0x4477('0x19')&&typeof _0x3ed90a[_0x4477('0x1a')]===_0x4477('0x19');var _0x3a173a=_0x56ba62['count'];var _0x4ca257=_0xa4130d?0x0:_0x3ed90a[_0x4477('0x18')];var _0x1bdc4b=_0xa4130d?_0x56ba62['count']:_0x3ed90a[_0x4477('0x18')]+_0x3ed90a[_0x4477('0x1a')];var _0x79dcd3;if(_0x1bdc4b>=_0x3a173a){_0x1bdc4b=_0x3a173a;_0x79dcd3=0xc8;}else{_0x79dcd3=0xce;}_0x153281[_0x4477('0x16')](_0x79dcd3);return _0x153281['set']('Content-Range',_0x4ca257+'-'+_0x1bdc4b+'/'+_0x3a173a)[_0x4477('0x1b')](_0x56ba62);}return null;};}function patchUpdates(_0x2ac1e0){return function(_0x20a548){try{jsonpatch['apply'](_0x20a548,_0x2ac1e0,!![]);}catch(_0x5286e1){return BPromise[_0x4477('0x1c')](_0x5286e1);}return _0x20a548[_0x4477('0x1d')]();};}function saveUpdates(_0x56eba9,_0x358088){return function(_0x5dbd22){if(_0x5dbd22){return _0x5dbd22['update'](_0x56eba9)[_0x4477('0x1e')](function(_0x48c208){return _0x48c208;});}return null;};}function removeEntity(_0xa5f1ef,_0x194e5a){return function(_0x58565b){if(_0x58565b){return _0x58565b[_0x4477('0x1f')]()[_0x4477('0x1e')](function(){_0xa5f1ef[_0x4477('0x16')](0xcc)[_0x4477('0x17')]();});}};}function handleEntityNotFound(_0xc67639,_0x5a8afe){return function(_0x463243){if(!_0x463243){_0xc67639[_0x4477('0x15')](0x194);}return _0x463243;};}function handleError(_0x1f3751,_0xa43fa9){_0xa43fa9=_0xa43fa9||0x1f4;return function(_0x1dfd0e){logger[_0x4477('0x20')](_0x1dfd0e['stack']);if(_0x1dfd0e[_0x4477('0x21')]){delete _0x1dfd0e[_0x4477('0x21')];}_0x1f3751[_0x4477('0x16')](_0xa43fa9)[_0x4477('0x22')](_0x1dfd0e);};}exports[_0x4477('0x23')]=function(_0x1df032,_0xbc4703){if(_0x1df032[_0x4477('0x24')]['id']){delete _0x1df032[_0x4477('0x24')]['id'];}return db[_0x4477('0x25')][_0x4477('0x26')]({'where':{'id':_0x1df032[_0x4477('0x27')]['id']}})[_0x4477('0x1e')](handleEntityNotFound(_0xbc4703,null))[_0x4477('0x1e')](saveUpdates(_0x1df032[_0x4477('0x24')],null))[_0x4477('0x1e')](respondWithResult(_0xbc4703,null))[_0x4477('0x28')](handleError(_0xbc4703,null));};exports[_0x4477('0x1f')]=function(_0x3ad140,_0xbe3bd0){return db[_0x4477('0x25')][_0x4477('0x26')]({'where':{'id':_0x3ad140[_0x4477('0x27')]['id']}})[_0x4477('0x1e')](handleEntityNotFound(_0xbe3bd0,null))[_0x4477('0x1e')](removeEntity(_0xbe3bd0,null))[_0x4477('0x28')](handleError(_0xbe3bd0,null));};
\ No newline at end of file
+var _0x02a9=['then','destroy','error','stack','name','send','body','Action','catch','eml-format','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','update'];(function(_0x3239f5,_0x50e77c){var _0x3559c8=function(_0x4f9f83){while(--_0x4f9f83){_0x3239f5['push'](_0x3239f5['shift']());}};_0x3559c8(++_0x50e77c);}(_0x02a9,0x1b7));var _0x902a=function(_0x1dbe10,_0x560be0){_0x1dbe10=_0x1dbe10-0x0;var _0x5c2a95=_0x02a9[_0x1dbe10];return _0x5c2a95;};'use strict';var emlformat=require(_0x902a('0x0'));var rimraf=require(_0x902a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x902a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x902a('0x3'));var util=require(_0x902a('0x4'));var path=require(_0x902a('0x5'));var sox=require(_0x902a('0x6'));var csv=require(_0x902a('0x7'));var ejs=require(_0x902a('0x8'));var fs=require('fs');var fs_extra=require(_0x902a('0x9'));var _=require('lodash');var squel=require(_0x902a('0xa'));var crypto=require('crypto');var jsforce=require(_0x902a('0xb'));var deskjs=require(_0x902a('0xc'));var toCsv=require(_0x902a('0x7'));var querystring=require(_0x902a('0xd'));var Papa=require(_0x902a('0xe'));var Redis=require('ioredis');var authService=require(_0x902a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x902a('0x10'));var hardwareService=require(_0x902a('0x11'));var logger=require(_0x902a('0x12'))(_0x902a('0x13'));var utils=require(_0x902a('0x14'));var config=require(_0x902a('0x15'));var licenseUtil=require(_0x902a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e9716,_0xa54bb7){_0xa54bb7=_0xa54bb7||0xcc;return function(_0x3c81ba){if(_0x3c81ba){return _0x5e9716[_0x902a('0x17')](_0xa54bb7);}return _0x5e9716[_0x902a('0x18')](_0xa54bb7)[_0x902a('0x19')]();};}function respondWithResult(_0x5c4852,_0x39ada1){_0x39ada1=_0x39ada1||0xc8;return function(_0x54a056){if(_0x54a056){return _0x5c4852[_0x902a('0x18')](_0x39ada1)[_0x902a('0x1a')](_0x54a056);}};}function respondWithFilteredResult(_0x5c9b04,_0x4bc5a2){return function(_0xe85823){if(_0xe85823){var _0x3f0a2b=typeof _0x4bc5a2['offset']==='undefined'&&typeof _0x4bc5a2['limit']==='undefined';var _0x32631d=_0xe85823[_0x902a('0x1b')];var _0x292006=_0x3f0a2b?0x0:_0x4bc5a2[_0x902a('0x1c')];var _0x393d4e=_0x3f0a2b?_0xe85823[_0x902a('0x1b')]:_0x4bc5a2['offset']+_0x4bc5a2[_0x902a('0x1d')];var _0x51a867;if(_0x393d4e>=_0x32631d){_0x393d4e=_0x32631d;_0x51a867=0xc8;}else{_0x51a867=0xce;}_0x5c9b04[_0x902a('0x18')](_0x51a867);return _0x5c9b04[_0x902a('0x1e')](_0x902a('0x1f'),_0x292006+'-'+_0x393d4e+'/'+_0x32631d)[_0x902a('0x1a')](_0xe85823);}return null;};}function patchUpdates(_0x4ba86b){return function(_0x4e48a2){try{jsonpatch[_0x902a('0x20')](_0x4e48a2,_0x4ba86b,!![]);}catch(_0x32a102){return BPromise['reject'](_0x32a102);}return _0x4e48a2['save']();};}function saveUpdates(_0x496b2c,_0x8f87db){return function(_0x12691c){if(_0x12691c){return _0x12691c[_0x902a('0x21')](_0x496b2c)[_0x902a('0x22')](function(_0x337408){return _0x337408;});}return null;};}function removeEntity(_0x5c58e8,_0x17b319){return function(_0x4f6b8d){if(_0x4f6b8d){return _0x4f6b8d[_0x902a('0x23')]()[_0x902a('0x22')](function(){_0x5c58e8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ea728,_0x41fea6){return function(_0x5c65d4){if(!_0x5c65d4){_0x4ea728['sendStatus'](0x194);}return _0x5c65d4;};}function handleError(_0x39e5a6,_0x5c3162){_0x5c3162=_0x5c3162||0x1f4;return function(_0x5c1f67){logger[_0x902a('0x24')](_0x5c1f67[_0x902a('0x25')]);if(_0x5c1f67[_0x902a('0x26')]){delete _0x5c1f67[_0x902a('0x26')];}_0x39e5a6[_0x902a('0x18')](_0x5c3162)[_0x902a('0x27')](_0x5c1f67);};}exports['update']=function(_0x45e6b4,_0x34cfc4){if(_0x45e6b4[_0x902a('0x28')]['id']){delete _0x45e6b4['body']['id'];}return db[_0x902a('0x29')]['find']({'where':{'id':_0x45e6b4['params']['id']}})['then'](handleEntityNotFound(_0x34cfc4,null))[_0x902a('0x22')](saveUpdates(_0x45e6b4['body'],null))[_0x902a('0x22')](respondWithResult(_0x34cfc4,null))[_0x902a('0x2a')](handleError(_0x34cfc4,null));};exports[_0x902a('0x23')]=function(_0x3b1e21,_0x52181b){return db['Action']['find']({'where':{'id':_0x3b1e21['params']['id']}})['then'](handleEntityNotFound(_0x52181b,null))[_0x902a('0x22')](removeEntity(_0x52181b,null))[_0x902a('0x2a')](handleError(_0x52181b,null));};
\ No newline at end of file
index f7e4093..c4b2b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba6=['exports','define','tools_actions','lodash','../../config/logger','api','moment','request-promise','path','rimraf','./action.attributes'];(function(_0x558fe9,_0x1ca3f7){var _0x554d2a=function(_0x16895a){while(--_0x16895a){_0x558fe9['push'](_0x558fe9['shift']());}};_0x554d2a(++_0x1ca3f7);}(_0xdba6,0x14d));var _0x6dba=function(_0x41457f,_0x22f31a){_0x41457f=_0x41457f-0x0;var _0x1a3551=_0xdba6[_0x41457f];return _0x1a3551;};'use strict';var _=require(_0x6dba('0x0'));var util=require('util');var logger=require(_0x6dba('0x1'))(_0x6dba('0x2'));var moment=require(_0x6dba('0x3'));var BPromise=require('bluebird');var rp=require(_0x6dba('0x4'));var fs=require('fs');var path=require(_0x6dba('0x5'));var rimraf=require(_0x6dba('0x6'));var config=require('../../config/environment');var attributes=require(_0x6dba('0x7'));module[_0x6dba('0x8')]=function(_0x29c449,_0x4d10ae){return _0x29c449[_0x6dba('0x9')]('Action',attributes,{'tableName':_0x6dba('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbea2=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','define','tools_actions'];(function(_0x44da1f,_0x4e5633){var _0x56a92b=function(_0x51dc2e){while(--_0x51dc2e){_0x44da1f['push'](_0x44da1f['shift']());}};_0x56a92b(++_0x4e5633);}(_0xbea2,0x1b2));var _0x2bea=function(_0x51654f,_0x1fb1c8){_0x51654f=_0x51654f-0x0;var _0x38252e=_0xbea2[_0x51654f];return _0x38252e;};'use strict';var _=require(_0x2bea('0x0'));var util=require(_0x2bea('0x1'));var logger=require(_0x2bea('0x2'))(_0x2bea('0x3'));var moment=require(_0x2bea('0x4'));var BPromise=require(_0x2bea('0x5'));var rp=require(_0x2bea('0x6'));var fs=require('fs');var path=require(_0x2bea('0x7'));var rimraf=require(_0x2bea('0x8'));var config=require(_0x2bea('0x9'));var attributes=require(_0x2bea('0xa'));module[_0x2bea('0xb')]=function(_0x438c0a,_0x5b058e){return _0x438c0a[_0x2bea('0xc')]('Action',attributes,{'tableName':_0x2bea('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 82ccb31..fdef4ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x1c5c24,_0xa93847){var _0x1bc2fa=function(_0x1e072b){while(--_0x1e072b){_0x1c5c24['push'](_0x1c5c24['shift']());}};_0x1bc2fa(++_0xa93847);}(_0xabce,0x103));var _0xeabc=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xabce[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
+var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x2f73ca,_0x5e4366){var _0x5647db=function(_0x4ec9b7){while(--_0x4ec9b7){_0x2f73ca['push'](_0x2f73ca['shift']());}};_0x5647db(++_0x5e4366);}(_0x5fc3,0xa8));var _0x35fc=function(_0x58c851,_0x1f3d96){_0x58c851=_0x58c851-0x0;var _0x534d8a=_0x5fc3[_0x58c851];return _0x534d8a;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Action,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Action,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Action,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
index 990e0fd..d898478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf53c=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','put','update','/:id','isAuthenticated','destroy','exports','multer'];(function(_0x492ec1,_0x1b62bd){var _0x4cfb7e=function(_0x49408a){while(--_0x49408a){_0x492ec1['push'](_0x492ec1['shift']());}};_0x4cfb7e(++_0x1b62bd);}(_0xf53c,0x11c));var _0xcf53=function(_0xd9f33,_0x5ec879){_0xd9f33=_0xd9f33-0x0;var _0x3a6c6b=_0xf53c[_0xd9f33];return _0x3a6c6b;};'use strict';var multer=require(_0xcf53('0x0'));var util=require(_0xcf53('0x1'));var path=require(_0xcf53('0x2'));var timeout=require(_0xcf53('0x3'));var express=require(_0xcf53('0x4'));var router=express[_0xcf53('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xcf53('0x6'));var interaction=require(_0xcf53('0x7'));var config=require(_0xcf53('0x8'));var controller=require('./action.controller');router[_0xcf53('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xcf53('0xa')]);router['delete'](_0xcf53('0xb'),auth[_0xcf53('0xc')](),controller[_0xcf53('0xd')]);module[_0xcf53('0xe')]=router;
\ No newline at end of file
+var _0xc510=['path','connect-timeout','express','../../components/interaction/service','../../config/environment','./action.controller','/:id','isAuthenticated','destroy','exports','multer','util'];(function(_0x1ed648,_0x58ec91){var _0x5e5b5c=function(_0x1c47cf){while(--_0x1c47cf){_0x1ed648['push'](_0x1ed648['shift']());}};_0x5e5b5c(++_0x58ec91);}(_0xc510,0xa6));var _0x0c51=function(_0x4f522f,_0x4ac9e0){_0x4f522f=_0x4f522f-0x0;var _0x5701b3=_0xc510[_0x4f522f];return _0x5701b3;};'use strict';var multer=require(_0x0c51('0x0'));var util=require(_0x0c51('0x1'));var path=require(_0x0c51('0x2'));var timeout=require(_0x0c51('0x3'));var express=require(_0x0c51('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0c51('0x5'));var config=require(_0x0c51('0x6'));var controller=require(_0x0c51('0x7'));router['put'](_0x0c51('0x8'),auth[_0x0c51('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x0c51('0xa')]);module[_0x0c51('0xb')]=router;
\ No newline at end of file
index 154bd6b..339dece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbd=['sequelize','exports','STRING','TEXT'];(function(_0x41382c,_0xc3ffd1){var _0x4da35b=function(_0x5d56b8){while(--_0x5d56b8){_0x41382c['push'](_0x41382c['shift']());}};_0x4da35b(++_0xc3ffd1);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x1a5687,_0xc2188f){_0x1a5687=_0x1a5687-0x0;var _0x257d5c=_0xfdbd[_0x1a5687];return _0x257d5c;};'use strict';var Sequelize=require(_0xdfdb('0x0'));module[_0xdfdb('0x1')]={'name':{'type':Sequelize[_0xdfdb('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xdfdb('0x2')]},'parent':{'type':Sequelize[_0xdfdb('0x2')]},'table':{'type':Sequelize[_0xdfdb('0x2')]},'conditions':{'type':Sequelize[_0xdfdb('0x3')]},'joins':{'type':Sequelize[_0xdfdb('0x3')]}};
\ No newline at end of file
+var _0x9c5a=['exports','STRING','TEXT','sequelize'];(function(_0xcc16a0,_0x1ab3c3){var _0x5d05fb=function(_0x444527){while(--_0x444527){_0xcc16a0['push'](_0xcc16a0['shift']());}};_0x5d05fb(++_0x1ab3c3);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x51996e,_0x4883ac){_0x51996e=_0x51996e-0x0;var _0x5b8e03=_0x9c5a[_0x51996e];return _0x5b8e03;};'use strict';var Sequelize=require(_0xa9c5('0x0'));module[_0xa9c5('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xa9c5('0x2')]},'parent':{'type':Sequelize[_0xa9c5('0x2')]},'table':{'type':Sequelize[_0xa9c5('0x2')]},'conditions':{'type':Sequelize[_0xa9c5('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 7fe2864..304623c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5330=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','apply','reject','update','then','get','CustomReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','includeAll','include','show','params','AnalyticCustomReport','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','body','destroy','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','AnalyticMetric','findAll','keyBy','select','from','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','parse','joins','includes','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','left_join','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','DATE(%s)','ROUND(%s)','Sequelize','table','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','../../components/export/','../../files/reports','countTable','COUNT(*)','SELECT','runReport','Please\x20insert\x20at\x20least\x20one\x20field','eml-format','rimraf','zip-dir','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse'];(function(_0x4c444b,_0x3a3825){var _0x41344f=function(_0x5f2a75){while(--_0x5f2a75){_0x4c444b['push'](_0x4c444b['shift']());}};_0x41344f(++_0x3a3825);}(_0x5330,0x13c));var _0x0533=function(_0x1f4517,_0xf882e7){_0x1f4517=_0x1f4517-0x0;var _0x4ae596=_0x5330[_0x1f4517];return _0x4ae596;};'use strict';var emlformat=require(_0x0533('0x0'));var rimraf=require(_0x0533('0x1'));var zipdir=require(_0x0533('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0533('0x3'));var util=require(_0x0533('0x4'));var path=require(_0x0533('0x5'));var sox=require(_0x0533('0x6'));var csv=require(_0x0533('0x7'));var ejs=require(_0x0533('0x8'));var fs=require('fs');var fs_extra=require(_0x0533('0x9'));var _=require(_0x0533('0xa'));var squel=require(_0x0533('0xb'));var crypto=require(_0x0533('0xc'));var jsforce=require(_0x0533('0xd'));var deskjs=require(_0x0533('0xe'));var toCsv=require(_0x0533('0x7'));var querystring=require('querystring');var Papa=require(_0x0533('0xf'));var Redis=require(_0x0533('0x10'));var authService=require(_0x0533('0x11'));var qs=require(_0x0533('0x12'));var as=require(_0x0533('0x13'));var hardwareService=require(_0x0533('0x14'));var logger=require(_0x0533('0x15'))(_0x0533('0x16'));var utils=require(_0x0533('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0533('0x18'));var db=require(_0x0533('0x19'))['db'];var dbH=require('../../mysqldb')[_0x0533('0x1a')];function respondWithStatusCode(_0x5c7b64,_0x4bb9c1){_0x4bb9c1=_0x4bb9c1||0xcc;return function(_0x111f08){if(_0x111f08){return _0x5c7b64[_0x0533('0x1b')](_0x4bb9c1);}return _0x5c7b64[_0x0533('0x1c')](_0x4bb9c1)['end']();};}function respondWithResult(_0x33e7a6,_0x4fa13e){_0x4fa13e=_0x4fa13e||0xc8;return function(_0x3bd611){if(_0x3bd611){return _0x33e7a6[_0x0533('0x1c')](_0x4fa13e)[_0x0533('0x1d')](_0x3bd611);}};}function respondWithFilteredResult(_0x590a1a,_0x50bcd6){return function(_0x108fd7){if(_0x108fd7){var _0x5f21f9=typeof _0x50bcd6[_0x0533('0x1e')]===_0x0533('0x1f')&&typeof _0x50bcd6[_0x0533('0x20')]==='undefined';var _0x2e8c53=_0x108fd7[_0x0533('0x21')];var _0xa85b97=_0x5f21f9?0x0:_0x50bcd6[_0x0533('0x1e')];var _0x1da698=_0x5f21f9?_0x108fd7[_0x0533('0x21')]:_0x50bcd6[_0x0533('0x1e')]+_0x50bcd6[_0x0533('0x20')];var _0xc44fcd;if(_0x1da698>=_0x2e8c53){_0x1da698=_0x2e8c53;_0xc44fcd=0xc8;}else{_0xc44fcd=0xce;}_0x590a1a[_0x0533('0x1c')](_0xc44fcd);return _0x590a1a['set']('Content-Range',_0xa85b97+'-'+_0x1da698+'/'+_0x2e8c53)[_0x0533('0x1d')](_0x108fd7);}return null;};}function patchUpdates(_0x2a4609){return function(_0x447a0c){try{jsonpatch[_0x0533('0x22')](_0x447a0c,_0x2a4609,!![]);}catch(_0x242b95){return BPromise[_0x0533('0x23')](_0x242b95);}return _0x447a0c['save']();};}function saveUpdates(_0x6e44b1,_0x1edbf1){return function(_0x11f7ab){if(_0x11f7ab){return _0x11f7ab[_0x0533('0x24')](_0x6e44b1)[_0x0533('0x25')](function(_0x6fbf){return _0x6fbf;});}return null;};}function removeEntity(_0x27107f,_0x291e7d){return function(_0x25ee7a){if(_0x25ee7a){return _0x25ee7a['destroy']()[_0x0533('0x25')](function(){var _0xcc3af6=_0x25ee7a[_0x0533('0x26')]({'plain':!![]});var _0x1dc27c=_0x0533('0x27');return db[_0x0533('0x28')]['destroy']({'where':{'type':_0x1dc27c,'resourceId':_0xcc3af6['id']}})[_0x0533('0x25')](function(){return _0x25ee7a;});})[_0x0533('0x25')](function(){_0x27107f[_0x0533('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x328ace,_0x953dcf){return function(_0xa386bb){if(!_0xa386bb){_0x328ace[_0x0533('0x1b')](0x194);}return _0xa386bb;};}function handleError(_0x3df018,_0x3dcc0f){_0x3dcc0f=_0x3dcc0f||0x1f4;return function(_0x5e2638){logger[_0x0533('0x29')](_0x5e2638[_0x0533('0x2a')]);if(_0x5e2638['name']){delete _0x5e2638[_0x0533('0x2b')];}_0x3df018['status'](_0x3dcc0f)[_0x0533('0x2c')](_0x5e2638);};}exports[_0x0533('0x2d')]=function(_0x4af0a6,_0x18a602){var _0x270b01={},_0x3cfb8d={},_0x2a1ad6={'count':0x0,'rows':[]};var _0x18b13e=_[_0x0533('0x2e')](db['AnalyticCustomReport'][_0x0533('0x2f')],function(_0x1bd33c){return{'name':_0x1bd33c[_0x0533('0x30')],'type':_0x1bd33c[_0x0533('0x31')][_0x0533('0x32')]};});_0x3cfb8d[_0x0533('0x33')]=_[_0x0533('0x2e')](_0x18b13e,'name');_0x3cfb8d[_0x0533('0x34')]=_[_0x0533('0x35')](_0x4af0a6[_0x0533('0x34')]);_0x3cfb8d['filters']=_[_0x0533('0x36')](_0x3cfb8d[_0x0533('0x33')],_0x3cfb8d['query']);_0x270b01['attributes']=_[_0x0533('0x36')](_0x3cfb8d[_0x0533('0x33')],qs[_0x0533('0x37')](_0x4af0a6[_0x0533('0x34')]['fields']));_0x270b01['attributes']=_0x270b01[_0x0533('0x38')][_0x0533('0x39')]?_0x270b01[_0x0533('0x38')]:_0x3cfb8d[_0x0533('0x33')];if(!_0x4af0a6['query'][_0x0533('0x3a')]('nolimit')){_0x270b01['limit']=qs[_0x0533('0x20')](_0x4af0a6['query'][_0x0533('0x20')]);_0x270b01[_0x0533('0x1e')]=qs[_0x0533('0x1e')](_0x4af0a6[_0x0533('0x34')][_0x0533('0x1e')]);}_0x270b01[_0x0533('0x3b')]=qs[_0x0533('0x3c')](_0x4af0a6[_0x0533('0x34')][_0x0533('0x3c')]);_0x270b01[_0x0533('0x3d')]=qs[_0x0533('0x3e')](_[_0x0533('0x3f')](_0x4af0a6[_0x0533('0x34')],_0x3cfb8d[_0x0533('0x3e')]),_0x18b13e);if(_0x4af0a6[_0x0533('0x34')][_0x0533('0x40')]){_0x270b01[_0x0533('0x3d')]=_[_0x0533('0x41')](_0x270b01[_0x0533('0x3d')],{'$or':_[_0x0533('0x2e')](_0x18b13e,function(_0x561f66){if(_0x561f66[_0x0533('0x31')]!=='VIRTUAL'){var _0x3db430={};_0x3db430[_0x561f66[_0x0533('0x2b')]]={'$like':'%'+_0x4af0a6[_0x0533('0x34')][_0x0533('0x40')]+'%'};return _0x3db430;}})});}_0x270b01=_[_0x0533('0x41')]({},_0x270b01,_0x4af0a6[_0x0533('0x42')]);var _0x2ed9f4={'where':_0x270b01['where']};return db['AnalyticCustomReport'][_0x0533('0x21')](_0x2ed9f4)[_0x0533('0x25')](function(_0x3e0b31){_0x2a1ad6['count']=_0x3e0b31;if(_0x4af0a6[_0x0533('0x34')][_0x0533('0x43')]){_0x270b01[_0x0533('0x44')]=[{'all':!![]}];}return db['AnalyticCustomReport']['findAll'](_0x270b01);})[_0x0533('0x25')](function(_0x49980d){_0x2a1ad6['rows']=_0x49980d;return _0x2a1ad6;})[_0x0533('0x25')](respondWithFilteredResult(_0x18a602,_0x270b01))['catch'](handleError(_0x18a602,null));};exports[_0x0533('0x45')]=function(_0x42f47a,_0x48bc69){var _0x35cdc2={'raw':![],'where':{'id':_0x42f47a[_0x0533('0x46')]['id']}},_0xc3a483={};_0xc3a483['model']=_[_0x0533('0x35')](db[_0x0533('0x47')][_0x0533('0x2f')]);_0xc3a483['query']=_[_0x0533('0x35')](_0x42f47a[_0x0533('0x34')]);_0xc3a483['filters']=_[_0x0533('0x36')](_0xc3a483[_0x0533('0x33')],_0xc3a483[_0x0533('0x34')]);_0x35cdc2[_0x0533('0x38')]=_[_0x0533('0x36')](_0xc3a483[_0x0533('0x33')],qs[_0x0533('0x37')](_0x42f47a[_0x0533('0x34')][_0x0533('0x37')]));_0x35cdc2[_0x0533('0x38')]=_0x35cdc2[_0x0533('0x38')][_0x0533('0x39')]?_0x35cdc2[_0x0533('0x38')]:_0xc3a483['model'];if(_0x42f47a[_0x0533('0x34')][_0x0533('0x43')]){_0x35cdc2[_0x0533('0x44')]=[{'all':!![]}];}_0x35cdc2=_[_0x0533('0x41')]({},_0x35cdc2,_0x42f47a['options']);return db[_0x0533('0x47')][_0x0533('0x48')](_0x35cdc2)['then'](handleEntityNotFound(_0x48bc69,null))[_0x0533('0x25')](respondWithResult(_0x48bc69,null))[_0x0533('0x49')](handleError(_0x48bc69,null));};exports[_0x0533('0x4a')]=function(_0x22f516,_0x16a8ee){return db[_0x0533('0x47')][_0x0533('0x4a')](_0x22f516['body'],{})[_0x0533('0x25')](function(_0x332fe0){var _0x172e0c=_0x22f516[_0x0533('0x4b')][_0x0533('0x26')]({'plain':!![]});if(!_0x172e0c)throw new Error(_0x0533('0x4c'));if(_0x172e0c[_0x0533('0x4d')]===_0x0533('0x4b')){var _0x41ca3c=_0x332fe0[_0x0533('0x26')]({'plain':!![]});var _0x40ad3f=_0x0533('0x4e');return db[_0x0533('0x4f')]['find']({'where':{'name':_0x40ad3f,'userProfileId':_0x172e0c[_0x0533('0x50')]},'raw':!![]})[_0x0533('0x25')](function(_0x770360){if(_0x770360&&_0x770360[_0x0533('0x51')]===0x0){return db['UserProfileResource'][_0x0533('0x4a')]({'name':_0x41ca3c['name'],'resourceId':_0x41ca3c['id'],'type':_0x0533('0x27'),'sectionId':_0x770360['id']},{})['then'](function(){return _0x332fe0;});}else{return _0x332fe0;}})[_0x0533('0x49')](function(_0x39f9b6){logger[_0x0533('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x39f9b6);throw _0x39f9b6;});}return _0x332fe0;})[_0x0533('0x25')](respondWithResult(_0x16a8ee,0xc9))['catch'](handleError(_0x16a8ee,null));};exports[_0x0533('0x24')]=function(_0xf4722,_0x166af9){if(_0xf4722[_0x0533('0x52')]['id']){delete _0xf4722[_0x0533('0x52')]['id'];}return db[_0x0533('0x47')][_0x0533('0x48')]({'where':{'id':_0xf4722[_0x0533('0x46')]['id']}})[_0x0533('0x25')](handleEntityNotFound(_0x166af9,null))[_0x0533('0x25')](saveUpdates(_0xf4722[_0x0533('0x52')],null))[_0x0533('0x25')](respondWithResult(_0x166af9,null))[_0x0533('0x49')](handleError(_0x166af9,null));};exports[_0x0533('0x53')]=function(_0x3dfd57,_0x55f0c0){return db['AnalyticCustomReport'][_0x0533('0x48')]({'where':{'id':_0x3dfd57[_0x0533('0x46')]['id']}})['then'](handleEntityNotFound(_0x55f0c0,null))[_0x0533('0x25')](removeEntity(_0x55f0c0,null))[_0x0533('0x49')](handleError(_0x55f0c0,null));};exports[_0x0533('0x54')]=function(_0x4bf282,_0x355dad){var _0x3a4964=0xa;var _0x324a64=[_0x0533('0x55'),'left_join',_0x0533('0x56'),_0x0533('0x57')];var _0x4187cc={'SUM':_0x0533('0x58'),'COUNT':_0x0533('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x0533('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x0533('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x0533('0x5c')};var _0x21f545={'SEC_TO_TIME':_0x0533('0x5d'),'DATE':'DATE(%s)','HOUR':_0x0533('0x5e'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x0533('0x5f')};var _0x27566e=function(_0x2511a2){return!_['includes']([_0x0533('0x60'),_0x0533('0x61'),_0x0533('0x62'),_0x0533('0x63')],_0x2511a2);};var _0x461a4d=function(_0x448f5c){if(!_0x448f5c||!_0x448f5c[_0x0533('0x64')][_0x0533('0x39')]){return'';}for(var _0x104d4f='(',_0x1107ab=0x0;_0x1107ab<_0x448f5c['rules'][_0x0533('0x39')];_0x1107ab+=0x1){_0x1107ab>0x0&&(_0x104d4f+='\x20'+_0x448f5c[_0x0533('0x65')]+'\x20');_0x104d4f+=_0x448f5c[_0x0533('0x64')][_0x1107ab][_0x0533('0x66')]?_0x461a4d(_0x448f5c['rules'][_0x1107ab][_0x0533('0x66')]):_0x448f5c[_0x0533('0x64')][_0x1107ab][_0x0533('0x67')]+'\x20'+_0x448f5c[_0x0533('0x64')][_0x1107ab][_0x0533('0x68')]+(_0x27566e(_0x448f5c[_0x0533('0x64')][_0x1107ab][_0x0533('0x68')])?'\x20'+_0x448f5c[_0x0533('0x64')][_0x1107ab][_0x0533('0x69')]:'');}return _0x104d4f+')';};var _0xc6d0bc={'where':{'id':_0x4bf282['params']['id']}},_0x4df446,_0x530254,_0x5bcf36,_0x4d58a1,_0x45ec80;_0xc6d0bc=_[_0x0533('0x41')]({},_0xc6d0bc,_0x4bf282['options']);return db[_0x0533('0x47')]['find'](_0xc6d0bc)['then'](function(_0x10b416){if(_0x10b416){_0x4df446=_0x10b416;return _0x10b416[_0x0533('0x6a')]();}return null;})[_0x0533('0x25')](function(_0x20c3e3){if(_0x20c3e3){if(!_0x20c3e3[_0x0533('0x39')]){throw new db['Sequelize'][(_0x0533('0x6b'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x530254=_0x20c3e3;return db[_0x0533('0x6c')][_0x0533('0x6d')]({'raw':!![]});}return null;})['then'](function(_0x46b71a){if(_0x46b71a){_0x5bcf36=_[_0x0533('0x6e')](_0x46b71a,'id');var _0x28d1ef;var _0x3378a0=squel[_0x0533('0x6f')]();_0x3378a0[_0x0533('0x70')](_0x4df446['table']);for(var _0x2df1a4=0x0;_0x2df1a4<_0x530254[_0x0533('0x39')];_0x2df1a4+=0x1){_0x28d1ef=_0x530254[_0x2df1a4][_0x0533('0x71')]?_0x5bcf36[_0x530254[_0x2df1a4][_0x0533('0x71')]][_0x0533('0x72')]:_0x530254[_0x2df1a4][_0x0533('0x67')];_0x28d1ef=_0x530254[_0x2df1a4][_0x0533('0x73')]?_[_0x0533('0x74')](_0x4187cc[_0x530254[_0x2df1a4][_0x0533('0x73')]],'%s',_0x28d1ef):_0x28d1ef;_0x28d1ef=_0x530254[_0x2df1a4]['format']?_[_0x0533('0x74')](_0x21f545[_0x530254[_0x2df1a4][_0x0533('0x75')]],'%s',_0x28d1ef):_0x28d1ef;if(_0x530254[_0x2df1a4][_0x0533('0x76')]){_0x3378a0[_0x0533('0x66')](_0x28d1ef);}_0x530254[_0x2df1a4][_0x0533('0x77')]&&_0x3378a0[_0x0533('0x3b')](_0x28d1ef,_0x530254[_0x2df1a4][_0x0533('0x77')]===_0x0533('0x78')?![]:!![]);_0x3378a0['field'](_0x28d1ef,_0x530254[_0x2df1a4][_0x0533('0x79')]||_0x28d1ef);}if(_0x4df446['joins']){_0x4df446['joins']=JSON[_0x0533('0x7a')](_0x4df446[_0x0533('0x7b')]);for(var _0x2bd1d0=0x0;_0x2bd1d0<_0x4df446[_0x0533('0x7b')][_0x0533('0x39')];_0x2bd1d0+=0x1){if(_0x4df446[_0x0533('0x7b')][_0x2bd1d0]['type']&&_[_0x0533('0x7c')](_0x324a64,_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x31')])&&_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x7d')]&&_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x7e')]&&_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x7f')]){_0x3378a0[_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x31')]](_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x7e')],null,util[_0x0533('0x75')](_0x0533('0x80'),_0x4df446['table'],_0x4df446['joins'][_0x2bd1d0][_0x0533('0x7d')],_0x4df446[_0x0533('0x7b')][_0x2bd1d0]['foreignTable'],_0x4df446[_0x0533('0x7b')][_0x2bd1d0][_0x0533('0x7f')]));}}}if(_0x4df446[_0x0533('0x81')]){_0x4df446['conditions']=JSON['parse'](_0x4df446[_0x0533('0x81')]);_0x3378a0['where'](_0x461a4d(_0x4df446[_0x0533('0x81')]['group']));}_0x45ec80=_0x3378a0[_0x0533('0x82')]();_0x3378a0[_0x0533('0x20')](_0x3a4964);_0x3378a0['offset'](0x0);logger[_0x0533('0x83')](_0x0533('0x84'),_0x3378a0[_0x0533('0x85')]());return dbH[_0x0533('0x86')][_0x0533('0x34')](_0x3378a0[_0x0533('0x85')](),{'type':dbH['sequelize'][_0x0533('0x87')]['SELECT']});}})[_0x0533('0x25')](respondWithResult(_0x355dad,null))[_0x0533('0x49')](handleError(_0x355dad,null));};function runReport(_0x3534fd,_0x58f7d9,_0x31cb26){var _0x5357e5=_0x58f7d9[_0x0533('0x2b')];var _0xb91e53=0xa;var _0xb0f25f=[_0x0533('0x55'),_0x0533('0x88'),_0x0533('0x56'),_0x0533('0x57')];var _0x2d031a={'SUM':_0x0533('0x58'),'COUNT':_0x0533('0x59'),'COUNT DISTINCT':_0x0533('0x89'),'MAX':_0x0533('0x5a'),'MIN':_0x0533('0x8a'),'AVG':_0x0533('0x8b'),'GROUP_CONCAT':_0x0533('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x58cb33={'SEC_TO_TIME':_0x0533('0x5d'),'DATE':_0x0533('0x8c'),'HOUR':'HOUR(%s)','ROUND':_0x0533('0x8d'),'UNIX_TIMESTAMP':_0x0533('0x5f')};var _0x4ba7ab=function(_0x451228){return!_[_0x0533('0x7c')]([_0x0533('0x60'),_0x0533('0x61'),'IS\x20EMPTY',_0x0533('0x63')],_0x451228);};var _0x1ed4a8=function(_0xdeec0d){if(!_0xdeec0d||!_0xdeec0d['rules']['length']){return'';}for(var _0x35ef1b='(',_0xaad7e6=0x0;_0xaad7e6<_0xdeec0d['rules'][_0x0533('0x39')];_0xaad7e6+=0x1){_0xaad7e6>0x0&&(_0x35ef1b+='\x20'+_0xdeec0d[_0x0533('0x65')]+'\x20');_0x35ef1b+=_0xdeec0d['rules'][_0xaad7e6]['group']?_0x1ed4a8(_0xdeec0d[_0x0533('0x64')][_0xaad7e6][_0x0533('0x66')]):_0xdeec0d['rules'][_0xaad7e6][_0x0533('0x67')]+'\x20'+_0xdeec0d[_0x0533('0x64')][_0xaad7e6][_0x0533('0x68')]+(_0x4ba7ab(_0xdeec0d[_0x0533('0x64')][_0xaad7e6]['condition'])?'\x20'+_0xdeec0d[_0x0533('0x64')][_0xaad7e6][_0x0533('0x69')]:'');}return _0x35ef1b+')';};var _0x5e1d0b={'where':{'id':_0x3534fd['id']}},_0x55609f,_0x7e734,_0x3a55c6,_0x539384,_0x5137bf;_0x5e1d0b=_[_0x0533('0x41')]({},_0x5e1d0b,_0x31cb26);return db['AnalyticCustomReport'][_0x0533('0x48')](_0x5e1d0b)[_0x0533('0x25')](function(_0x37dc12){if(_0x37dc12){_0x55609f=_0x37dc12;return _0x37dc12[_0x0533('0x6a')]();}return null;})[_0x0533('0x25')](function(_0x2c19cf){if(_0x2c19cf){if(!_0x2c19cf[_0x0533('0x39')]){throw new db[(_0x0533('0x8e'))][(_0x0533('0x6b'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x7e734=_0x2c19cf;return db[_0x0533('0x6c')][_0x0533('0x6d')]({'raw':!![]});}return null;})[_0x0533('0x25')](function(_0x5c65d2){if(_0x5c65d2){_0x3a55c6=_[_0x0533('0x6e')](_0x5c65d2,'id');var _0x576593;var _0x24a953=squel[_0x0533('0x6f')]();_0x24a953[_0x0533('0x70')](_0x55609f['table']);for(var _0x2c5385=0x0;_0x2c5385<_0x7e734[_0x0533('0x39')];_0x2c5385+=0x1){_0x576593=_0x7e734[_0x2c5385][_0x0533('0x71')]?_0x3a55c6[_0x7e734[_0x2c5385][_0x0533('0x71')]][_0x0533('0x72')]:_0x7e734[_0x2c5385][_0x0533('0x67')];_0x576593=_0x7e734[_0x2c5385]['function']?_[_0x0533('0x74')](_0x2d031a[_0x7e734[_0x2c5385][_0x0533('0x73')]],'%s',_0x576593):_0x576593;_0x576593=_0x7e734[_0x2c5385][_0x0533('0x75')]?_[_0x0533('0x74')](_0x58cb33[_0x7e734[_0x2c5385][_0x0533('0x75')]],'%s',_0x576593):_0x576593;if(_0x7e734[_0x2c5385]['groupBy']){_0x24a953[_0x0533('0x66')](_0x576593);}_0x7e734[_0x2c5385][_0x0533('0x77')]&&_0x24a953[_0x0533('0x3b')](_0x576593,_0x7e734[_0x2c5385]['orderBy']==='DESC'?![]:!![]);_0x24a953[_0x0533('0x67')](_0x576593,_0x7e734[_0x2c5385][_0x0533('0x79')]||_0x576593);}if(_0x55609f[_0x0533('0x7b')]){_0x55609f[_0x0533('0x7b')]=JSON[_0x0533('0x7a')](_0x55609f[_0x0533('0x7b')]);for(var _0x2350e2=0x0;_0x2350e2<_0x55609f[_0x0533('0x7b')]['length'];_0x2350e2+=0x1){if(_0x55609f[_0x0533('0x7b')][_0x2350e2][_0x0533('0x31')]&&_['includes'](_0xb0f25f,_0x55609f[_0x0533('0x7b')][_0x2350e2]['type'])&&_0x55609f['joins'][_0x2350e2][_0x0533('0x7d')]&&_0x55609f[_0x0533('0x7b')][_0x2350e2]['foreignTable']&&_0x55609f[_0x0533('0x7b')][_0x2350e2][_0x0533('0x7f')]){_0x24a953[_0x55609f[_0x0533('0x7b')][_0x2350e2][_0x0533('0x31')]](_0x55609f['joins'][_0x2350e2]['foreignTable'],null,util[_0x0533('0x75')](_0x0533('0x80'),_0x55609f[_0x0533('0x8f')],_0x55609f['joins'][_0x2350e2][_0x0533('0x7d')],_0x55609f[_0x0533('0x7b')][_0x2350e2][_0x0533('0x7e')],_0x55609f[_0x0533('0x7b')][_0x2350e2][_0x0533('0x7f')]));}}}if(_0x55609f['conditions']){_0x55609f[_0x0533('0x81')]=JSON['parse'](_0x55609f['conditions']);_0x24a953['where'](_0x1ed4a8(_0x55609f[_0x0533('0x81')]['group']));}_0x5137bf=_0x24a953[_0x0533('0x82')]();_0x24a953[_0x0533('0x20')](_0xb91e53);_0x24a953[_0x0533('0x1e')](0x0);return;}})[_0x0533('0x25')](function(){if(_0x58f7d9[_0x0533('0x90')]===_0x0533('0x91')){return null;}var _0x14abde=_[_0x0533('0x41')](_0x58f7d9,{'name':_0x58f7d9[_0x0533('0x92')]||_0x58f7d9[_0x0533('0x2b')]||_0x55609f['name'],'basename':_0x5357e5,'savename':util['format'](_0x0533('0x93'),_0x58f7d9[_0x0533('0x2b')]||_0x55609f[_0x0533('0x2b')],require(_0x0533('0x94'))[_0x0533('0x95')](0x4),_0x58f7d9[_0x0533('0x90')]||_0x0533('0x96')),'reportId':_0x55609f['id'],'reportType':'custom'});return db[_0x0533('0x97')][_0x0533('0x4a')](_0x14abde,{'raw':!![]});})[_0x0533('0x25')](function(_0x4dcc4c){if(_0x55609f['table']===_0x0533('0x98')){_0x5137bf[_0x0533('0x3d')](_0x55609f[_0x0533('0x8f')]+_0x0533('0x99'),_0x58f7d9[_0x0533('0x9a')],_0x58f7d9[_0x0533('0x9b')]);}else{_0x5137bf[_0x0533('0x3d')](_0x55609f[_0x0533('0x8f')]+_0x0533('0x9c'),_0x58f7d9['startDate'],_0x58f7d9['endDate']);}if(_0x4dcc4c){logger[_0x0533('0x9d')]('Run\x20Query:',_0x5137bf[_0x0533('0x85')]());require(_0x0533('0x9e'))['fork'](path[_0x0533('0x55')](__dirname,_0x0533('0x9f'),_0x4dcc4c['output']),[_0x4dcc4c['id'],_0x5137bf['toString'](),path[_0x0533('0x55')](__dirname,_0x0533('0xa0'),_0x4dcc4c['savename']),_0x5357e5]);return _0x4dcc4c;}else{var _0x403d86=squel[_0x0533('0x6f')]();_0x403d86['from']('('+_0x5137bf[_0x0533('0x85')]()+')',_0x0533('0xa1'));_0x403d86['field'](_0x0533('0xa2'),_0x0533('0x21'));_0x5137bf['limit'](_0x58f7d9['limit']||_0xb91e53);_0x5137bf[_0x0533('0x1e')](_0x58f7d9[_0x0533('0x1e')]||0x0);return dbH[_0x0533('0x86')]['query'](_0x403d86[_0x0533('0x85')](),{'type':dbH['sequelize']['QueryTypes'][_0x0533('0xa3')]})[_0x0533('0x25')](function(_0x5ca948){if(!_0x5ca948[_0x0533('0x39')]){_0x539384=0x0;}else{_0x539384=_0x5ca948[0x0][_0x0533('0x21')]||0x0;}return dbH['sequelize'][_0x0533('0x34')](_0x5137bf['toString'](),{'type':dbH[_0x0533('0x86')]['QueryTypes'][_0x0533('0xa3')]});})[_0x0533('0x25')](function(_0x5563cc){return{'rows':_0x5563cc||[],'count':_0x539384};});}});}exports['run']=function(_0x35861e,_0x441782){return runReport(_0x35861e[_0x0533('0x46')],_0x35861e[_0x0533('0x34')],_0x35861e[_0x0533('0x42')])[_0x0533('0x25')](respondWithResult(_0x441782,null))[_0x0533('0x49')](handleError(_0x441782,null));};exports[_0x0533('0xa4')]=runReport;exports[_0x0533('0x34')]=function(_0x2c4ab4,_0x49bf86){var _0x45a949=0xa;var _0x3bad3b=['join','left_join',_0x0533('0x56'),'cross_join'];var _0x51e42f={'SUM':_0x0533('0x58'),'COUNT':_0x0533('0x59'),'COUNT DISTINCT':_0x0533('0x89'),'MAX':_0x0533('0x5a'),'MIN':_0x0533('0x8a'),'AVG':_0x0533('0x8b'),'GROUP_CONCAT':_0x0533('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x0533('0x5c')};var _0x5af8f2={'SEC_TO_TIME':_0x0533('0x5d'),'DATE':_0x0533('0x8c'),'HOUR':'HOUR(%s)','ROUND':_0x0533('0x8d'),'UNIX_TIMESTAMP':_0x0533('0x5f')};var _0x5e4d83=function(_0x4529a8){return!_['includes']([_0x0533('0x60'),_0x0533('0x61'),_0x0533('0x62'),'IS\x20NOT\x20EMPTY'],_0x4529a8);};var _0x267787=function(_0x5a0287){if(!_0x5a0287||!_0x5a0287[_0x0533('0x64')][_0x0533('0x39')]){return'';}for(var _0x26d197='(',_0x59a1da=0x0;_0x59a1da<_0x5a0287[_0x0533('0x64')]['length'];_0x59a1da+=0x1){_0x59a1da>0x0&&(_0x26d197+='\x20'+_0x5a0287[_0x0533('0x65')]+'\x20');_0x26d197+=_0x5a0287['rules'][_0x59a1da][_0x0533('0x66')]?_0x267787(_0x5a0287[_0x0533('0x64')][_0x59a1da][_0x0533('0x66')]):_0x5a0287[_0x0533('0x64')][_0x59a1da][_0x0533('0x67')]+'\x20'+_0x5a0287[_0x0533('0x64')][_0x59a1da][_0x0533('0x68')]+(_0x5e4d83(_0x5a0287[_0x0533('0x64')][_0x59a1da][_0x0533('0x68')])?'\x20'+_0x5a0287[_0x0533('0x64')][_0x59a1da][_0x0533('0x69')]:'');}return _0x26d197+')';};var _0x5c252b={'where':{'id':_0x2c4ab4[_0x0533('0x46')]['id']}},_0x2eda6a,_0x4e76fb,_0x2bcee2,_0x218dc0,_0x45c677;_0x5c252b=_[_0x0533('0x41')]({},_0x5c252b,_0x2c4ab4[_0x0533('0x42')]);return db[_0x0533('0x47')][_0x0533('0x48')](_0x5c252b)[_0x0533('0x25')](function(_0x3fdd12){if(_0x3fdd12){_0x2eda6a=_0x3fdd12;return _0x3fdd12[_0x0533('0x6a')]();}return null;})[_0x0533('0x25')](function(_0x203ecf){if(_0x203ecf){if(!_0x203ecf['length']){throw new db[(_0x0533('0x8e'))][(_0x0533('0x6b'))](_0x0533('0xa5'),0x193);}_0x4e76fb=_0x203ecf;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x0533('0x25')](function(_0x1784cb){if(_0x1784cb){_0x2bcee2=_[_0x0533('0x6e')](_0x1784cb,'id');var _0x516103;var _0x47446d=squel[_0x0533('0x6f')]();_0x47446d[_0x0533('0x70')](_0x2eda6a[_0x0533('0x8f')]);for(var _0x1f9d07=0x0;_0x1f9d07<_0x4e76fb[_0x0533('0x39')];_0x1f9d07+=0x1){_0x516103=_0x4e76fb[_0x1f9d07][_0x0533('0x71')]?_0x2bcee2[_0x4e76fb[_0x1f9d07][_0x0533('0x71')]]['metric']:_0x4e76fb[_0x1f9d07]['field'];_0x516103=_0x4e76fb[_0x1f9d07]['function']?_['replace'](_0x51e42f[_0x4e76fb[_0x1f9d07][_0x0533('0x73')]],'%s',_0x516103):_0x516103;_0x516103=_0x4e76fb[_0x1f9d07][_0x0533('0x75')]?_[_0x0533('0x74')](_0x5af8f2[_0x4e76fb[_0x1f9d07][_0x0533('0x75')]],'%s',_0x516103):_0x516103;if(_0x4e76fb[_0x1f9d07][_0x0533('0x76')]){_0x47446d[_0x0533('0x66')](_0x516103);}_0x4e76fb[_0x1f9d07][_0x0533('0x77')]&&_0x47446d[_0x0533('0x3b')](_0x516103,_0x4e76fb[_0x1f9d07][_0x0533('0x77')]===_0x0533('0x78')?![]:!![]);_0x47446d[_0x0533('0x67')](_0x516103,_0x4e76fb[_0x1f9d07][_0x0533('0x79')]||_0x516103);}if(_0x2eda6a['joins']){_0x2eda6a[_0x0533('0x7b')]=JSON['parse'](_0x2eda6a['joins']);for(var _0x420025=0x0;_0x420025<_0x2eda6a['joins'][_0x0533('0x39')];_0x420025+=0x1){if(_0x2eda6a[_0x0533('0x7b')][_0x420025][_0x0533('0x31')]&&_[_0x0533('0x7c')](_0x3bad3b,_0x2eda6a['joins'][_0x420025][_0x0533('0x31')])&&_0x2eda6a['joins'][_0x420025]['parentKey']&&_0x2eda6a['joins'][_0x420025][_0x0533('0x7e')]&&_0x2eda6a['joins'][_0x420025][_0x0533('0x7f')]){_0x47446d[_0x2eda6a['joins'][_0x420025][_0x0533('0x31')]](_0x2eda6a[_0x0533('0x7b')][_0x420025][_0x0533('0x7e')],null,util[_0x0533('0x75')](_0x0533('0x80'),_0x2eda6a[_0x0533('0x8f')],_0x2eda6a['joins'][_0x420025][_0x0533('0x7d')],_0x2eda6a['joins'][_0x420025]['foreignTable'],_0x2eda6a['joins'][_0x420025][_0x0533('0x7f')]));}}}if(_0x2eda6a[_0x0533('0x81')]){_0x2eda6a['conditions']=JSON[_0x0533('0x7a')](_0x2eda6a[_0x0533('0x81')]);_0x47446d[_0x0533('0x3d')](_0x267787(_0x2eda6a[_0x0533('0x81')]['group']));}_0x45c677=_0x47446d[_0x0533('0x82')]();_0x47446d[_0x0533('0x20')](_0x45a949);_0x47446d[_0x0533('0x1e')](0x0);logger[_0x0533('0x83')](_0x0533('0x84'),_0x47446d[_0x0533('0x85')]());return dbH[_0x0533('0x86')][_0x0533('0x34')](_0x47446d[_0x0533('0x85')](),{'type':dbH[_0x0533('0x86')][_0x0533('0x87')][_0x0533('0xa3')]});}})[_0x0533('0x25')](function(){return{'sql':_0x45c677[_0x0533('0x85')]()};})['then'](respondWithResult(_0x49bf86,null))['catch'](handleError(_0x49bf86,null));};
\ No newline at end of file
+var _0x480d=['map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','where','pick','filter','merge','includeAll','include','findAll','rows','show','params','length','options','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','condition','value','Sequelize','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','field','replace','format','groupBy','orderBy','order','DESC','joins','parse','includes','parentKey','foreignTable','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','getFields','Please\x20insert\x20at\x20least\x20one\x20field','select','function','alias','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','fork','../../components/export/','savename','countTable','COUNT(*)','SELECT','run','IS\x20NOT\x20NULL','%s.%s\x20=\x20%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','then','destroy','get','CustomReports','UserProfileResource','end','error','stack','name','send','AnalyticCustomReport','rawAttributes','fieldName','type','key'];(function(_0x113b13,_0x326160){var _0x2fccf7=function(_0x5044fb){while(--_0x5044fb){_0x113b13['push'](_0x113b13['shift']());}};_0x2fccf7(++_0x326160);}(_0x480d,0x1c5));var _0xd480=function(_0x5f28a6,_0x327960){_0x5f28a6=_0x5f28a6-0x0;var _0x4dcee0=_0x480d[_0x5f28a6];return _0x4dcee0;};'use strict';var emlformat=require(_0xd480('0x0'));var rimraf=require(_0xd480('0x1'));var zipdir=require(_0xd480('0x2'));var jsonpatch=require(_0xd480('0x3'));var rp=require(_0xd480('0x4'));var moment=require(_0xd480('0x5'));var BPromise=require(_0xd480('0x6'));var Mustache=require(_0xd480('0x7'));var util=require('util');var path=require(_0xd480('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd480('0x9'));var fs=require('fs');var fs_extra=require(_0xd480('0xa'));var _=require(_0xd480('0xb'));var squel=require('squel');var crypto=require(_0xd480('0xc'));var jsforce=require(_0xd480('0xd'));var deskjs=require(_0xd480('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd480('0xf'));var Redis=require(_0xd480('0x10'));var authService=require(_0xd480('0x11'));var qs=require(_0xd480('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd480('0x13'));var logger=require(_0xd480('0x14'))(_0xd480('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd480('0x16'));var db=require(_0xd480('0x17'))['db'];var dbH=require(_0xd480('0x17'))[_0xd480('0x18')];function respondWithStatusCode(_0x359ebb,_0x3b16cb){_0x3b16cb=_0x3b16cb||0xcc;return function(_0x4b0499){if(_0x4b0499){return _0x359ebb[_0xd480('0x19')](_0x3b16cb);}return _0x359ebb[_0xd480('0x1a')](_0x3b16cb)['end']();};}function respondWithResult(_0x1254a8,_0xf6243c){_0xf6243c=_0xf6243c||0xc8;return function(_0x5d34f3){if(_0x5d34f3){return _0x1254a8[_0xd480('0x1a')](_0xf6243c)[_0xd480('0x1b')](_0x5d34f3);}};}function respondWithFilteredResult(_0x3d34b2,_0x5d59af){return function(_0x3257fe){if(_0x3257fe){var _0x40aa04=typeof _0x5d59af['offset']===_0xd480('0x1c')&&typeof _0x5d59af[_0xd480('0x1d')]===_0xd480('0x1c');var _0x450933=_0x3257fe[_0xd480('0x1e')];var _0x51b2a9=_0x40aa04?0x0:_0x5d59af[_0xd480('0x1f')];var _0x5001a4=_0x40aa04?_0x3257fe[_0xd480('0x1e')]:_0x5d59af[_0xd480('0x1f')]+_0x5d59af['limit'];var _0xa621d7;if(_0x5001a4>=_0x450933){_0x5001a4=_0x450933;_0xa621d7=0xc8;}else{_0xa621d7=0xce;}_0x3d34b2[_0xd480('0x1a')](_0xa621d7);return _0x3d34b2[_0xd480('0x20')]('Content-Range',_0x51b2a9+'-'+_0x5001a4+'/'+_0x450933)[_0xd480('0x1b')](_0x3257fe);}return null;};}function patchUpdates(_0xbf9dd5){return function(_0x4d3c3a){try{jsonpatch[_0xd480('0x21')](_0x4d3c3a,_0xbf9dd5,!![]);}catch(_0xc19a97){return BPromise[_0xd480('0x22')](_0xc19a97);}return _0x4d3c3a[_0xd480('0x23')]();};}function saveUpdates(_0x40c5cc,_0x2a4f6c){return function(_0x360b3b){if(_0x360b3b){return _0x360b3b['update'](_0x40c5cc)[_0xd480('0x24')](function(_0x49021b){return _0x49021b;});}return null;};}function removeEntity(_0x5969ed,_0x48bf52){return function(_0x2e661c){if(_0x2e661c){return _0x2e661c[_0xd480('0x25')]()[_0xd480('0x24')](function(){var _0x23015b=_0x2e661c[_0xd480('0x26')]({'plain':!![]});var _0x524e05=_0xd480('0x27');return db[_0xd480('0x28')]['destroy']({'where':{'type':_0x524e05,'resourceId':_0x23015b['id']}})[_0xd480('0x24')](function(){return _0x2e661c;});})['then'](function(){_0x5969ed[_0xd480('0x1a')](0xcc)[_0xd480('0x29')]();});}};}function handleEntityNotFound(_0x2f8296,_0x27a1db){return function(_0x3cc1b6){if(!_0x3cc1b6){_0x2f8296[_0xd480('0x19')](0x194);}return _0x3cc1b6;};}function handleError(_0x1236d6,_0x40ed46){_0x40ed46=_0x40ed46||0x1f4;return function(_0x5a6683){logger[_0xd480('0x2a')](_0x5a6683[_0xd480('0x2b')]);if(_0x5a6683[_0xd480('0x2c')]){delete _0x5a6683['name'];}_0x1236d6[_0xd480('0x1a')](_0x40ed46)[_0xd480('0x2d')](_0x5a6683);};}exports['index']=function(_0x1bea99,_0x20fc2a){var _0x3ad192={},_0x27dbf5={},_0x144aa1={'count':0x0,'rows':[]};var _0x1e712d=_['map'](db[_0xd480('0x2e')][_0xd480('0x2f')],function(_0x5b0bff){return{'name':_0x5b0bff[_0xd480('0x30')],'type':_0x5b0bff[_0xd480('0x31')][_0xd480('0x32')]};});_0x27dbf5['model']=_[_0xd480('0x33')](_0x1e712d,_0xd480('0x2c'));_0x27dbf5[_0xd480('0x34')]=_[_0xd480('0x35')](_0x1bea99[_0xd480('0x34')]);_0x27dbf5[_0xd480('0x36')]=_[_0xd480('0x37')](_0x27dbf5[_0xd480('0x38')],_0x27dbf5[_0xd480('0x34')]);_0x3ad192[_0xd480('0x39')]=_[_0xd480('0x37')](_0x27dbf5['model'],qs[_0xd480('0x3a')](_0x1bea99['query']['fields']));_0x3ad192[_0xd480('0x39')]=_0x3ad192[_0xd480('0x39')]['length']?_0x3ad192[_0xd480('0x39')]:_0x27dbf5[_0xd480('0x38')];if(!_0x1bea99['query'][_0xd480('0x3b')](_0xd480('0x3c'))){_0x3ad192['limit']=qs['limit'](_0x1bea99['query'][_0xd480('0x1d')]);_0x3ad192[_0xd480('0x1f')]=qs[_0xd480('0x1f')](_0x1bea99[_0xd480('0x34')][_0xd480('0x1f')]);}_0x3ad192['order']=qs['sort'](_0x1bea99[_0xd480('0x34')]['sort']);_0x3ad192[_0xd480('0x3d')]=qs[_0xd480('0x36')](_[_0xd480('0x3e')](_0x1bea99['query'],_0x27dbf5[_0xd480('0x36')]),_0x1e712d);if(_0x1bea99[_0xd480('0x34')][_0xd480('0x3f')]){_0x3ad192[_0xd480('0x3d')]=_[_0xd480('0x40')](_0x3ad192[_0xd480('0x3d')],{'$or':_['map'](_0x1e712d,function(_0x30df47){if(_0x30df47[_0xd480('0x31')]!=='VIRTUAL'){var _0x4fe634={};_0x4fe634[_0x30df47['name']]={'$like':'%'+_0x1bea99[_0xd480('0x34')][_0xd480('0x3f')]+'%'};return _0x4fe634;}})});}_0x3ad192=_[_0xd480('0x40')]({},_0x3ad192,_0x1bea99['options']);var _0x418835={'where':_0x3ad192[_0xd480('0x3d')]};return db[_0xd480('0x2e')][_0xd480('0x1e')](_0x418835)['then'](function(_0x3c7f41){_0x144aa1['count']=_0x3c7f41;if(_0x1bea99[_0xd480('0x34')][_0xd480('0x41')]){_0x3ad192[_0xd480('0x42')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0xd480('0x43')](_0x3ad192);})[_0xd480('0x24')](function(_0x34fd86){_0x144aa1[_0xd480('0x44')]=_0x34fd86;return _0x144aa1;})['then'](respondWithFilteredResult(_0x20fc2a,_0x3ad192))['catch'](handleError(_0x20fc2a,null));};exports[_0xd480('0x45')]=function(_0x4ed21f,_0x1d4970){var _0x364f65={'raw':![],'where':{'id':_0x4ed21f[_0xd480('0x46')]['id']}},_0x4d11bb={};_0x4d11bb[_0xd480('0x38')]=_[_0xd480('0x35')](db[_0xd480('0x2e')]['rawAttributes']);_0x4d11bb['query']=_[_0xd480('0x35')](_0x4ed21f['query']);_0x4d11bb[_0xd480('0x36')]=_['intersection'](_0x4d11bb[_0xd480('0x38')],_0x4d11bb[_0xd480('0x34')]);_0x364f65[_0xd480('0x39')]=_['intersection'](_0x4d11bb['model'],qs[_0xd480('0x3a')](_0x4ed21f['query']['fields']));_0x364f65[_0xd480('0x39')]=_0x364f65[_0xd480('0x39')][_0xd480('0x47')]?_0x364f65[_0xd480('0x39')]:_0x4d11bb[_0xd480('0x38')];if(_0x4ed21f['query']['includeAll']){_0x364f65[_0xd480('0x42')]=[{'all':!![]}];}_0x364f65=_['merge']({},_0x364f65,_0x4ed21f[_0xd480('0x48')]);return db[_0xd480('0x2e')]['find'](_0x364f65)[_0xd480('0x24')](handleEntityNotFound(_0x1d4970,null))[_0xd480('0x24')](respondWithResult(_0x1d4970,null))[_0xd480('0x49')](handleError(_0x1d4970,null));};exports['create']=function(_0x65e104,_0x30e899){return db[_0xd480('0x2e')][_0xd480('0x4a')](_0x65e104[_0xd480('0x4b')],{})['then'](function(_0x591f91){var _0x18b676=_0x65e104['user']['get']({'plain':!![]});if(!_0x18b676)throw new Error(_0xd480('0x4c'));if(_0x18b676[_0xd480('0x4d')]===_0xd480('0x4e')){var _0x511efd=_0x591f91[_0xd480('0x26')]({'plain':!![]});var _0x3a7eb1='Reports';return db[_0xd480('0x4f')][_0xd480('0x50')]({'where':{'name':_0x3a7eb1,'userProfileId':_0x18b676['userProfileId']},'raw':!![]})[_0xd480('0x24')](function(_0x5661dd){if(_0x5661dd&&_0x5661dd[_0xd480('0x51')]===0x0){return db[_0xd480('0x28')][_0xd480('0x4a')]({'name':_0x511efd[_0xd480('0x2c')],'resourceId':_0x511efd['id'],'type':'CustomReports','sectionId':_0x5661dd['id']},{})[_0xd480('0x24')](function(){return _0x591f91;});}else{return _0x591f91;}})[_0xd480('0x49')](function(_0x33eba9){logger['error'](_0xd480('0x52'),_0x33eba9);throw _0x33eba9;});}return _0x591f91;})[_0xd480('0x24')](respondWithResult(_0x30e899,0xc9))[_0xd480('0x49')](handleError(_0x30e899,null));};exports[_0xd480('0x53')]=function(_0x1d4680,_0x2d120b){if(_0x1d4680[_0xd480('0x4b')]['id']){delete _0x1d4680[_0xd480('0x4b')]['id'];}return db[_0xd480('0x2e')]['find']({'where':{'id':_0x1d4680[_0xd480('0x46')]['id']}})[_0xd480('0x24')](handleEntityNotFound(_0x2d120b,null))[_0xd480('0x24')](saveUpdates(_0x1d4680[_0xd480('0x4b')],null))['then'](respondWithResult(_0x2d120b,null))['catch'](handleError(_0x2d120b,null));};exports[_0xd480('0x25')]=function(_0x7e8147,_0x3160a8){return db[_0xd480('0x2e')][_0xd480('0x50')]({'where':{'id':_0x7e8147['params']['id']}})[_0xd480('0x24')](handleEntityNotFound(_0x3160a8,null))[_0xd480('0x24')](removeEntity(_0x3160a8,null))[_0xd480('0x49')](handleError(_0x3160a8,null));};exports[_0xd480('0x54')]=function(_0x20ad4a,_0x25fc37){var _0x57a517=0xa;var _0xe46b80=[_0xd480('0x55'),_0xd480('0x56'),_0xd480('0x57'),_0xd480('0x58')];var _0x3ac05b={'SUM':_0xd480('0x59'),'COUNT':_0xd480('0x5a'),'COUNT DISTINCT':_0xd480('0x5b'),'MAX':_0xd480('0x5c'),'MIN':_0xd480('0x5d'),'AVG':_0xd480('0x5e'),'GROUP_CONCAT':_0xd480('0x5f'),'GROUP_CONCAT ASC':_0xd480('0x60'),'GROUP_CONCAT DESC':_0xd480('0x61')};var _0x5c1335={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd480('0x62'),'HOUR':_0xd480('0x63'),'ROUND':_0xd480('0x64'),'UNIX_TIMESTAMP':_0xd480('0x65')};var _0xc59747=function(_0x3f6309){return!_['includes']([_0xd480('0x66'),'IS\x20NOT\x20NULL',_0xd480('0x67'),'IS\x20NOT\x20EMPTY'],_0x3f6309);};var _0x539108=function(_0x1cfe0a){if(!_0x1cfe0a||!_0x1cfe0a['rules']['length']){return'';}for(var _0x5d6b48='(',_0x407f53=0x0;_0x407f53<_0x1cfe0a[_0xd480('0x68')][_0xd480('0x47')];_0x407f53+=0x1){_0x407f53>0x0&&(_0x5d6b48+='\x20'+_0x1cfe0a[_0xd480('0x69')]+'\x20');_0x5d6b48+=_0x1cfe0a[_0xd480('0x68')][_0x407f53][_0xd480('0x6a')]?_0x539108(_0x1cfe0a[_0xd480('0x68')][_0x407f53][_0xd480('0x6a')]):_0x1cfe0a[_0xd480('0x68')][_0x407f53]['field']+'\x20'+_0x1cfe0a[_0xd480('0x68')][_0x407f53]['condition']+(_0xc59747(_0x1cfe0a[_0xd480('0x68')][_0x407f53][_0xd480('0x6b')])?'\x20'+_0x1cfe0a['rules'][_0x407f53][_0xd480('0x6c')]:'');}return _0x5d6b48+')';};var _0x251653={'where':{'id':_0x20ad4a[_0xd480('0x46')]['id']}},_0x2739cb,_0x34debc,_0x55b146,_0x2b17be,_0x45f239;_0x251653=_[_0xd480('0x40')]({},_0x251653,_0x20ad4a[_0xd480('0x48')]);return db[_0xd480('0x2e')][_0xd480('0x50')](_0x251653)[_0xd480('0x24')](function(_0x57b4ab){if(_0x57b4ab){_0x2739cb=_0x57b4ab;return _0x57b4ab['getFields']();}return null;})[_0xd480('0x24')](function(_0x5236dc){if(_0x5236dc){if(!_0x5236dc[_0xd480('0x47')]){throw new db[(_0xd480('0x6d'))][(_0xd480('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x34debc=_0x5236dc;return db[_0xd480('0x6f')]['findAll']({'raw':!![]});}return null;})[_0xd480('0x24')](function(_0x870575){if(_0x870575){_0x55b146=_[_0xd480('0x70')](_0x870575,'id');var _0xee21f6;var _0xf007ac=squel['select']();_0xf007ac[_0xd480('0x71')](_0x2739cb[_0xd480('0x72')]);for(var _0x41781f=0x0;_0x41781f<_0x34debc['length'];_0x41781f+=0x1){_0xee21f6=_0x34debc[_0x41781f]['MetricId']?_0x55b146[_0x34debc[_0x41781f][_0xd480('0x73')]][_0xd480('0x74')]:_0x34debc[_0x41781f][_0xd480('0x75')];_0xee21f6=_0x34debc[_0x41781f]['function']?_[_0xd480('0x76')](_0x3ac05b[_0x34debc[_0x41781f]['function']],'%s',_0xee21f6):_0xee21f6;_0xee21f6=_0x34debc[_0x41781f][_0xd480('0x77')]?_['replace'](_0x5c1335[_0x34debc[_0x41781f]['format']],'%s',_0xee21f6):_0xee21f6;if(_0x34debc[_0x41781f][_0xd480('0x78')]){_0xf007ac[_0xd480('0x6a')](_0xee21f6);}_0x34debc[_0x41781f][_0xd480('0x79')]&&_0xf007ac[_0xd480('0x7a')](_0xee21f6,_0x34debc[_0x41781f]['orderBy']===_0xd480('0x7b')?![]:!![]);_0xf007ac['field'](_0xee21f6,_0x34debc[_0x41781f]['alias']||_0xee21f6);}if(_0x2739cb[_0xd480('0x7c')]){_0x2739cb[_0xd480('0x7c')]=JSON[_0xd480('0x7d')](_0x2739cb[_0xd480('0x7c')]);for(var _0x3c8981=0x0;_0x3c8981<_0x2739cb['joins']['length'];_0x3c8981+=0x1){if(_0x2739cb[_0xd480('0x7c')][_0x3c8981][_0xd480('0x31')]&&_[_0xd480('0x7e')](_0xe46b80,_0x2739cb['joins'][_0x3c8981][_0xd480('0x31')])&&_0x2739cb[_0xd480('0x7c')][_0x3c8981][_0xd480('0x7f')]&&_0x2739cb[_0xd480('0x7c')][_0x3c8981][_0xd480('0x80')]&&_0x2739cb[_0xd480('0x7c')][_0x3c8981]['foreignKey']){_0xf007ac[_0x2739cb[_0xd480('0x7c')][_0x3c8981]['type']](_0x2739cb['joins'][_0x3c8981]['foreignTable'],null,util[_0xd480('0x77')]('%s.%s\x20=\x20%s.%s',_0x2739cb['table'],_0x2739cb[_0xd480('0x7c')][_0x3c8981][_0xd480('0x7f')],_0x2739cb[_0xd480('0x7c')][_0x3c8981][_0xd480('0x80')],_0x2739cb[_0xd480('0x7c')][_0x3c8981][_0xd480('0x81')]));}}}if(_0x2739cb['conditions']){_0x2739cb[_0xd480('0x82')]=JSON['parse'](_0x2739cb[_0xd480('0x82')]);_0xf007ac[_0xd480('0x3d')](_0x539108(_0x2739cb[_0xd480('0x82')][_0xd480('0x6a')]));}_0x45f239=_0xf007ac[_0xd480('0x83')]();_0xf007ac[_0xd480('0x1d')](_0x57a517);_0xf007ac[_0xd480('0x1f')](0x0);logger[_0xd480('0x84')](_0xd480('0x85'),_0xf007ac[_0xd480('0x86')]());return dbH[_0xd480('0x87')][_0xd480('0x34')](_0xf007ac['toString'](),{'type':dbH[_0xd480('0x87')][_0xd480('0x88')]['SELECT']});}})[_0xd480('0x24')](respondWithResult(_0x25fc37,null))[_0xd480('0x49')](handleError(_0x25fc37,null));};function runReport(_0x400178,_0x744aaf,_0x2f196f){var _0x529d29=_0x744aaf['name'];var _0x5583fd=0xa;var _0x5b5477=[_0xd480('0x55'),_0xd480('0x56'),_0xd480('0x57'),_0xd480('0x58')];var _0xc3c680={'SUM':_0xd480('0x59'),'COUNT':_0xd480('0x5a'),'COUNT DISTINCT':_0xd480('0x5b'),'MAX':_0xd480('0x5c'),'MIN':_0xd480('0x5d'),'AVG':_0xd480('0x5e'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xd480('0x60'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x702eb9={'SEC_TO_TIME':_0xd480('0x89'),'DATE':_0xd480('0x62'),'HOUR':'HOUR(%s)','ROUND':_0xd480('0x64'),'UNIX_TIMESTAMP':_0xd480('0x65')};var _0x280cad=function(_0x29fa20){return!_[_0xd480('0x7e')]([_0xd480('0x66'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0xd480('0x8a')],_0x29fa20);};var _0x1faf6c=function(_0x3efafc){if(!_0x3efafc||!_0x3efafc[_0xd480('0x68')][_0xd480('0x47')]){return'';}for(var _0x12c9dd='(',_0x273d89=0x0;_0x273d89<_0x3efafc[_0xd480('0x68')]['length'];_0x273d89+=0x1){_0x273d89>0x0&&(_0x12c9dd+='\x20'+_0x3efafc['operator']+'\x20');_0x12c9dd+=_0x3efafc[_0xd480('0x68')][_0x273d89][_0xd480('0x6a')]?_0x1faf6c(_0x3efafc[_0xd480('0x68')][_0x273d89][_0xd480('0x6a')]):_0x3efafc['rules'][_0x273d89]['field']+'\x20'+_0x3efafc[_0xd480('0x68')][_0x273d89][_0xd480('0x6b')]+(_0x280cad(_0x3efafc['rules'][_0x273d89][_0xd480('0x6b')])?'\x20'+_0x3efafc['rules'][_0x273d89][_0xd480('0x6c')]:'');}return _0x12c9dd+')';};var _0x14008a={'where':{'id':_0x400178['id']}},_0x28c19a,_0x75c885,_0x33414a,_0xa98657,_0x3d2bf0;_0x14008a=_[_0xd480('0x40')]({},_0x14008a,_0x2f196f);return db[_0xd480('0x2e')][_0xd480('0x50')](_0x14008a)['then'](function(_0x161da4){if(_0x161da4){_0x28c19a=_0x161da4;return _0x161da4[_0xd480('0x8b')]();}return null;})[_0xd480('0x24')](function(_0x51e05f){if(_0x51e05f){if(!_0x51e05f[_0xd480('0x47')]){throw new db[(_0xd480('0x6d'))][(_0xd480('0x6e'))](_0xd480('0x8c'),0x193);}_0x75c885=_0x51e05f;return db[_0xd480('0x6f')][_0xd480('0x43')]({'raw':!![]});}return null;})[_0xd480('0x24')](function(_0x3d54a2){if(_0x3d54a2){_0x33414a=_[_0xd480('0x70')](_0x3d54a2,'id');var _0x501881;var _0xa631fa=squel[_0xd480('0x8d')]();_0xa631fa[_0xd480('0x71')](_0x28c19a[_0xd480('0x72')]);for(var _0x25528f=0x0;_0x25528f<_0x75c885[_0xd480('0x47')];_0x25528f+=0x1){_0x501881=_0x75c885[_0x25528f][_0xd480('0x73')]?_0x33414a[_0x75c885[_0x25528f][_0xd480('0x73')]]['metric']:_0x75c885[_0x25528f][_0xd480('0x75')];_0x501881=_0x75c885[_0x25528f]['function']?_[_0xd480('0x76')](_0xc3c680[_0x75c885[_0x25528f][_0xd480('0x8e')]],'%s',_0x501881):_0x501881;_0x501881=_0x75c885[_0x25528f][_0xd480('0x77')]?_[_0xd480('0x76')](_0x702eb9[_0x75c885[_0x25528f]['format']],'%s',_0x501881):_0x501881;if(_0x75c885[_0x25528f][_0xd480('0x78')]){_0xa631fa[_0xd480('0x6a')](_0x501881);}_0x75c885[_0x25528f][_0xd480('0x79')]&&_0xa631fa['order'](_0x501881,_0x75c885[_0x25528f]['orderBy']===_0xd480('0x7b')?![]:!![]);_0xa631fa['field'](_0x501881,_0x75c885[_0x25528f][_0xd480('0x8f')]||_0x501881);}if(_0x28c19a[_0xd480('0x7c')]){_0x28c19a['joins']=JSON[_0xd480('0x7d')](_0x28c19a['joins']);for(var _0x1c0309=0x0;_0x1c0309<_0x28c19a['joins'][_0xd480('0x47')];_0x1c0309+=0x1){if(_0x28c19a[_0xd480('0x7c')][_0x1c0309][_0xd480('0x31')]&&_[_0xd480('0x7e')](_0x5b5477,_0x28c19a['joins'][_0x1c0309]['type'])&&_0x28c19a[_0xd480('0x7c')][_0x1c0309][_0xd480('0x7f')]&&_0x28c19a[_0xd480('0x7c')][_0x1c0309]['foreignTable']&&_0x28c19a['joins'][_0x1c0309][_0xd480('0x81')]){_0xa631fa[_0x28c19a['joins'][_0x1c0309][_0xd480('0x31')]](_0x28c19a[_0xd480('0x7c')][_0x1c0309][_0xd480('0x80')],null,util[_0xd480('0x77')]('%s.%s\x20=\x20%s.%s',_0x28c19a[_0xd480('0x72')],_0x28c19a[_0xd480('0x7c')][_0x1c0309][_0xd480('0x7f')],_0x28c19a[_0xd480('0x7c')][_0x1c0309][_0xd480('0x80')],_0x28c19a[_0xd480('0x7c')][_0x1c0309][_0xd480('0x81')]));}}}if(_0x28c19a[_0xd480('0x82')]){_0x28c19a[_0xd480('0x82')]=JSON[_0xd480('0x7d')](_0x28c19a[_0xd480('0x82')]);_0xa631fa[_0xd480('0x3d')](_0x1faf6c(_0x28c19a[_0xd480('0x82')][_0xd480('0x6a')]));}_0x3d2bf0=_0xa631fa['clone']();_0xa631fa['limit'](_0x5583fd);_0xa631fa[_0xd480('0x1f')](0x0);return;}})[_0xd480('0x24')](function(){if(_0x744aaf[_0xd480('0x90')]===_0xd480('0x91')){return null;}var _0x278666=_[_0xd480('0x40')](_0x744aaf,{'name':_0x744aaf[_0xd480('0x92')]||_0x744aaf[_0xd480('0x2c')]||_0x28c19a[_0xd480('0x2c')],'basename':_0x529d29,'savename':util[_0xd480('0x77')](_0xd480('0x93'),_0x744aaf[_0xd480('0x2c')]||_0x28c19a[_0xd480('0x2c')],require(_0xd480('0x94'))[_0xd480('0x95')](0x4),_0x744aaf[_0xd480('0x90')]||_0xd480('0x96')),'reportId':_0x28c19a['id'],'reportType':_0xd480('0x97')});return db[_0xd480('0x98')][_0xd480('0x4a')](_0x278666,{'raw':!![]});})['then'](function(_0x2eeb50){if(_0x28c19a[_0xd480('0x72')]===_0xd480('0x99')){_0x3d2bf0[_0xd480('0x3d')](_0x28c19a[_0xd480('0x72')]+_0xd480('0x9a'),_0x744aaf[_0xd480('0x9b')],_0x744aaf['endDate']);}else{_0x3d2bf0[_0xd480('0x3d')](_0x28c19a[_0xd480('0x72')]+_0xd480('0x9c'),_0x744aaf[_0xd480('0x9b')],_0x744aaf['endDate']);}if(_0x2eeb50){logger[_0xd480('0x9d')](_0xd480('0x9e'),_0x3d2bf0['toString']());require('child_process')[_0xd480('0x9f')](path[_0xd480('0x55')](__dirname,_0xd480('0xa0'),_0x2eeb50[_0xd480('0x90')]),[_0x2eeb50['id'],_0x3d2bf0[_0xd480('0x86')](),path[_0xd480('0x55')](__dirname,'../../files/reports',_0x2eeb50[_0xd480('0xa1')]),_0x529d29]);return _0x2eeb50;}else{var _0x50f24c=squel[_0xd480('0x8d')]();_0x50f24c[_0xd480('0x71')]('('+_0x3d2bf0[_0xd480('0x86')]()+')',_0xd480('0xa2'));_0x50f24c['field'](_0xd480('0xa3'),_0xd480('0x1e'));_0x3d2bf0[_0xd480('0x1d')](_0x744aaf[_0xd480('0x1d')]||_0x5583fd);_0x3d2bf0[_0xd480('0x1f')](_0x744aaf['offset']||0x0);return dbH['sequelize'][_0xd480('0x34')](_0x50f24c[_0xd480('0x86')](),{'type':dbH['sequelize'][_0xd480('0x88')][_0xd480('0xa4')]})[_0xd480('0x24')](function(_0x54e3c8){if(!_0x54e3c8[_0xd480('0x47')]){_0xa98657=0x0;}else{_0xa98657=_0x54e3c8[0x0][_0xd480('0x1e')]||0x0;}return dbH['sequelize']['query'](_0x3d2bf0[_0xd480('0x86')](),{'type':dbH['sequelize'][_0xd480('0x88')][_0xd480('0xa4')]});})[_0xd480('0x24')](function(_0x2b23f6){return{'rows':_0x2b23f6||[],'count':_0xa98657};});}});}exports[_0xd480('0xa5')]=function(_0x5ca1b2,_0x3c17c5){return runReport(_0x5ca1b2[_0xd480('0x46')],_0x5ca1b2[_0xd480('0x34')],_0x5ca1b2['options'])[_0xd480('0x24')](respondWithResult(_0x3c17c5,null))[_0xd480('0x49')](handleError(_0x3c17c5,null));};exports['runReport']=runReport;exports['query']=function(_0x2b82fa,_0x54638c){var _0x2423cc=0xa;var _0x182888=[_0xd480('0x55'),_0xd480('0x56'),'right_join',_0xd480('0x58')];var _0x286501={'SUM':_0xd480('0x59'),'COUNT':_0xd480('0x5a'),'COUNT DISTINCT':_0xd480('0x5b'),'MAX':_0xd480('0x5c'),'MIN':'MIN(%s)','AVG':_0xd480('0x5e'),'GROUP_CONCAT':_0xd480('0x5f'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd480('0x61')};var _0x7aa431={'SEC_TO_TIME':_0xd480('0x89'),'DATE':_0xd480('0x62'),'HOUR':_0xd480('0x63'),'ROUND':_0xd480('0x64'),'UNIX_TIMESTAMP':_0xd480('0x65')};var _0x300b62=function(_0x5518f0){return!_[_0xd480('0x7e')]([_0xd480('0x66'),_0xd480('0xa6'),_0xd480('0x67'),_0xd480('0x8a')],_0x5518f0);};var _0x149852=function(_0x11e087){if(!_0x11e087||!_0x11e087[_0xd480('0x68')][_0xd480('0x47')]){return'';}for(var _0x2373d2='(',_0x234af4=0x0;_0x234af4<_0x11e087[_0xd480('0x68')][_0xd480('0x47')];_0x234af4+=0x1){_0x234af4>0x0&&(_0x2373d2+='\x20'+_0x11e087[_0xd480('0x69')]+'\x20');_0x2373d2+=_0x11e087[_0xd480('0x68')][_0x234af4][_0xd480('0x6a')]?_0x149852(_0x11e087[_0xd480('0x68')][_0x234af4][_0xd480('0x6a')]):_0x11e087[_0xd480('0x68')][_0x234af4][_0xd480('0x75')]+'\x20'+_0x11e087[_0xd480('0x68')][_0x234af4][_0xd480('0x6b')]+(_0x300b62(_0x11e087[_0xd480('0x68')][_0x234af4][_0xd480('0x6b')])?'\x20'+_0x11e087[_0xd480('0x68')][_0x234af4]['value']:'');}return _0x2373d2+')';};var _0x263f4d={'where':{'id':_0x2b82fa[_0xd480('0x46')]['id']}},_0x1a5556,_0x3f136d,_0x31699c,_0x5b1fdf,_0x44fda8;_0x263f4d=_[_0xd480('0x40')]({},_0x263f4d,_0x2b82fa[_0xd480('0x48')]);return db['AnalyticCustomReport'][_0xd480('0x50')](_0x263f4d)[_0xd480('0x24')](function(_0x14a19c){if(_0x14a19c){_0x1a5556=_0x14a19c;return _0x14a19c[_0xd480('0x8b')]();}return null;})[_0xd480('0x24')](function(_0x5f5237){if(_0x5f5237){if(!_0x5f5237['length']){throw new db[(_0xd480('0x6d'))][(_0xd480('0x6e'))](_0xd480('0x8c'),0x193);}_0x3f136d=_0x5f5237;return db['AnalyticMetric'][_0xd480('0x43')]({'raw':!![]});}return null;})[_0xd480('0x24')](function(_0x320106){if(_0x320106){_0x31699c=_[_0xd480('0x70')](_0x320106,'id');var _0x258e85;var _0x1c5f77=squel[_0xd480('0x8d')]();_0x1c5f77[_0xd480('0x71')](_0x1a5556[_0xd480('0x72')]);for(var _0x5a14e7=0x0;_0x5a14e7<_0x3f136d[_0xd480('0x47')];_0x5a14e7+=0x1){_0x258e85=_0x3f136d[_0x5a14e7]['MetricId']?_0x31699c[_0x3f136d[_0x5a14e7][_0xd480('0x73')]][_0xd480('0x74')]:_0x3f136d[_0x5a14e7][_0xd480('0x75')];_0x258e85=_0x3f136d[_0x5a14e7][_0xd480('0x8e')]?_[_0xd480('0x76')](_0x286501[_0x3f136d[_0x5a14e7]['function']],'%s',_0x258e85):_0x258e85;_0x258e85=_0x3f136d[_0x5a14e7]['format']?_['replace'](_0x7aa431[_0x3f136d[_0x5a14e7]['format']],'%s',_0x258e85):_0x258e85;if(_0x3f136d[_0x5a14e7][_0xd480('0x78')]){_0x1c5f77[_0xd480('0x6a')](_0x258e85);}_0x3f136d[_0x5a14e7][_0xd480('0x79')]&&_0x1c5f77[_0xd480('0x7a')](_0x258e85,_0x3f136d[_0x5a14e7]['orderBy']===_0xd480('0x7b')?![]:!![]);_0x1c5f77[_0xd480('0x75')](_0x258e85,_0x3f136d[_0x5a14e7][_0xd480('0x8f')]||_0x258e85);}if(_0x1a5556['joins']){_0x1a5556['joins']=JSON['parse'](_0x1a5556[_0xd480('0x7c')]);for(var _0x410783=0x0;_0x410783<_0x1a5556[_0xd480('0x7c')][_0xd480('0x47')];_0x410783+=0x1){if(_0x1a5556[_0xd480('0x7c')][_0x410783][_0xd480('0x31')]&&_['includes'](_0x182888,_0x1a5556[_0xd480('0x7c')][_0x410783][_0xd480('0x31')])&&_0x1a5556['joins'][_0x410783][_0xd480('0x7f')]&&_0x1a5556[_0xd480('0x7c')][_0x410783][_0xd480('0x80')]&&_0x1a5556[_0xd480('0x7c')][_0x410783][_0xd480('0x81')]){_0x1c5f77[_0x1a5556[_0xd480('0x7c')][_0x410783]['type']](_0x1a5556['joins'][_0x410783]['foreignTable'],null,util[_0xd480('0x77')](_0xd480('0xa7'),_0x1a5556[_0xd480('0x72')],_0x1a5556[_0xd480('0x7c')][_0x410783][_0xd480('0x7f')],_0x1a5556[_0xd480('0x7c')][_0x410783][_0xd480('0x80')],_0x1a5556['joins'][_0x410783][_0xd480('0x81')]));}}}if(_0x1a5556['conditions']){_0x1a5556[_0xd480('0x82')]=JSON[_0xd480('0x7d')](_0x1a5556['conditions']);_0x1c5f77[_0xd480('0x3d')](_0x149852(_0x1a5556['conditions'][_0xd480('0x6a')]));}_0x44fda8=_0x1c5f77[_0xd480('0x83')]();_0x1c5f77['limit'](_0x2423cc);_0x1c5f77[_0xd480('0x1f')](0x0);logger[_0xd480('0x84')](_0xd480('0x85'),_0x1c5f77['toString']());return dbH[_0xd480('0x87')][_0xd480('0x34')](_0x1c5f77[_0xd480('0x86')](),{'type':dbH['sequelize'][_0xd480('0x88')]['SELECT']});}})[_0xd480('0x24')](function(){return{'sql':_0x44fda8[_0xd480('0x86')]()};})[_0xd480('0x24')](respondWithResult(_0x54638c,null))[_0xd480('0x49')](handleError(_0x54638c,null));};
\ No newline at end of file
index 49e5da7..f586215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec70=['util','../../config/logger','api','moment','request-promise','./analyticCustomReport.attributes','exports','define','lodash'];(function(_0x1c8cc6,_0x411e5c){var _0x522936=function(_0x38d044){while(--_0x38d044){_0x1c8cc6['push'](_0x1c8cc6['shift']());}};_0x522936(++_0x411e5c);}(_0xec70,0x167));var _0x0ec7=function(_0x537430,_0x463d20){_0x537430=_0x537430-0x0;var _0x5c5f0c=_0xec70[_0x537430];return _0x5c5f0c;};'use strict';var _=require(_0x0ec7('0x0'));var util=require(_0x0ec7('0x1'));var logger=require(_0x0ec7('0x2'))(_0x0ec7('0x3'));var moment=require(_0x0ec7('0x4'));var BPromise=require('bluebird');var rp=require(_0x0ec7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0ec7('0x6'));module[_0x0ec7('0x7')]=function(_0x5d8483,_0x5019d1){return _0x5d8483[_0x0ec7('0x8')]('AnalyticCustomReport',attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6bd=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','AnalyticCustomReport','analytics_custom_reports','lodash','util'];(function(_0x1bf62f,_0xf06567){var _0x16e833=function(_0x127c90){while(--_0x127c90){_0x1bf62f['push'](_0x1bf62f['shift']());}};_0x16e833(++_0xf06567);}(_0xc6bd,0xe8));var _0xdc6b=function(_0x4e2d9a,_0x196096){_0x4e2d9a=_0x4e2d9a-0x0;var _0x4d7937=_0xc6bd[_0x4e2d9a];return _0x4d7937;};'use strict';var _=require(_0xdc6b('0x0'));var util=require(_0xdc6b('0x1'));var logger=require(_0xdc6b('0x2'))(_0xdc6b('0x3'));var moment=require(_0xdc6b('0x4'));var BPromise=require(_0xdc6b('0x5'));var rp=require(_0xdc6b('0x6'));var fs=require('fs');var path=require(_0xdc6b('0x7'));var rimraf=require(_0xdc6b('0x8'));var config=require(_0xdc6b('0x9'));var attributes=require('./analyticCustomReport.attributes');module['exports']=function(_0x1517d7,_0x16dcf7){return _0x1517d7[_0xdc6b('0xa')](_0xdc6b('0xb'),attributes,{'tableName':_0xdc6b('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8becfcf..a486963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75d0=['../../config/environment','jayson/promise','client','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x327a49,_0x1aeced){var _0x5c781b=function(_0x305098){while(--_0x305098){_0x327a49['push'](_0x327a49['shift']());}};_0x5c781b(++_0x1aeced);}(_0x75d0,0x138));var _0x075d=function(_0x187399,_0x40c56d){_0x187399=_0x187399-0x0;var _0x40fa92=_0x75d0[_0x187399];return _0x40fa92;};'use strict';var _=require(_0x075d('0x0'));var util=require(_0x075d('0x1'));var moment=require(_0x075d('0x2'));var BPromise=require(_0x075d('0x3'));var rs=require(_0x075d('0x4'));var fs=require('fs');var Redis=require(_0x075d('0x5'));var db=require(_0x075d('0x6'))['db'];var utils=require(_0x075d('0x7'));var logger=require(_0x075d('0x8'))(_0x075d('0x9'));var config=require(_0x075d('0xa'));var jayson=require(_0x075d('0xb'));var client=jayson[_0x075d('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2dc941,_0x50250b,_0x56d88d){return new BPromise(function(_0x426171,_0x26c15b){return client[_0x075d('0xd')](_0x2dc941,_0x56d88d)[_0x075d('0xe')](function(_0x37fef2){logger[_0x075d('0xf')](_0x075d('0x10'),_0x50250b,_0x075d('0x11'));logger['debug']('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x50250b,_0x075d('0x11'),JSON[_0x075d('0x12')](_0x37fef2));if(_0x37fef2[_0x075d('0x13')]){if(_0x37fef2[_0x075d('0x13')]['code']===0x1f4){logger[_0x075d('0x13')](_0x075d('0x10'),_0x50250b,_0x37fef2['error'][_0x075d('0x14')]);return _0x26c15b(_0x37fef2[_0x075d('0x13')][_0x075d('0x14')]);}logger['error']('AnalyticCustomReport,\x20%s,\x20%s',_0x50250b,_0x37fef2['error']['message']);return _0x426171(_0x37fef2['error'][_0x075d('0x14')]);}else{logger[_0x075d('0xf')](_0x075d('0x10'),_0x50250b,_0x075d('0x11'));_0x426171(_0x37fef2[_0x075d('0x15')][_0x075d('0x14')]);}})[_0x075d('0x16')](function(_0x59dbf8){logger['error'](_0x075d('0x10'),_0x50250b,_0x59dbf8);_0x26c15b(_0x59dbf8);});});}
\ No newline at end of file
+var _0xab99=['../../config/logger','jayson/promise','client','request','info','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message','AnalyticCustomReport,\x20%s,\x20%s','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1d5400,_0x567e3c){var _0x21d9fe=function(_0x23fb75){while(--_0x23fb75){_0x1d5400['push'](_0x1d5400['shift']());}};_0x21d9fe(++_0x567e3c);}(_0xab99,0x1f1));var _0x9ab9=function(_0xb38145,_0xc1241c){_0xb38145=_0xb38145-0x0;var _0x5414cc=_0xab99[_0xb38145];return _0x5414cc;};'use strict';var _=require('lodash');var util=require(_0x9ab9('0x0'));var moment=require(_0x9ab9('0x1'));var BPromise=require(_0x9ab9('0x2'));var rs=require(_0x9ab9('0x3'));var fs=require('fs');var Redis=require(_0x9ab9('0x4'));var db=require(_0x9ab9('0x5'))['db'];var utils=require(_0x9ab9('0x6'));var logger=require(_0x9ab9('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9ab9('0x8'));var client=jayson[_0x9ab9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x139a68,_0x15be0a,_0x5e4a7a){return new BPromise(function(_0x5f0130,_0x23d318){return client[_0x9ab9('0xa')](_0x139a68,_0x5e4a7a)['then'](function(_0x26184b){logger[_0x9ab9('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x15be0a,_0x9ab9('0xc'));logger[_0x9ab9('0xd')](_0x9ab9('0xe'),_0x15be0a,_0x9ab9('0xc'),JSON['stringify'](_0x26184b));if(_0x26184b[_0x9ab9('0xf')]){if(_0x26184b[_0x9ab9('0xf')][_0x9ab9('0x10')]===0x1f4){logger[_0x9ab9('0xf')]('AnalyticCustomReport,\x20%s,\x20%s',_0x15be0a,_0x26184b[_0x9ab9('0xf')][_0x9ab9('0x11')]);return _0x23d318(_0x26184b[_0x9ab9('0xf')]['message']);}logger[_0x9ab9('0xf')](_0x9ab9('0x12'),_0x15be0a,_0x26184b[_0x9ab9('0xf')][_0x9ab9('0x11')]);return _0x5f0130(_0x26184b[_0x9ab9('0xf')]['message']);}else{logger[_0x9ab9('0xb')](_0x9ab9('0x12'),_0x15be0a,_0x9ab9('0xc'));_0x5f0130(_0x26184b[_0x9ab9('0x13')]['message']);}})[_0x9ab9('0x14')](function(_0x1f2400){logger[_0x9ab9('0xf')](_0x9ab9('0x12'),_0x15be0a,_0x1f2400);_0x23d318(_0x1f2400);});});}
\ No newline at end of file
index 09ed960..17fc524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af0=['/:id','show','preview','/:id/run','run','/:id/query','query','post','create','put','destroy','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index'];(function(_0x10ab44,_0xa7f70e){var _0x1cde3b=function(_0x630ae1){while(--_0x630ae1){_0x10ab44['push'](_0x10ab44['shift']());}};_0x1cde3b(++_0xa7f70e);}(_0x1af0,0x16b));var _0x01af=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x1af0[_0x465a0c];return _0x1e202e;};'use strict';var multer=require('multer');var util=require(_0x01af('0x0'));var path=require(_0x01af('0x1'));var timeout=require(_0x01af('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x01af('0x3'));var auth=require(_0x01af('0x4'));var interaction=require(_0x01af('0x5'));var config=require(_0x01af('0x6'));var controller=require(_0x01af('0x7'));router[_0x01af('0x8')]('/',auth[_0x01af('0x9')](),controller[_0x01af('0xa')]);router[_0x01af('0x8')](_0x01af('0xb'),auth['isAuthenticated'](),controller[_0x01af('0xc')]);router['get']('/:id/preview',auth[_0x01af('0x9')](),controller[_0x01af('0xd')]);router[_0x01af('0x8')](_0x01af('0xe'),auth[_0x01af('0x9')](),controller[_0x01af('0xf')]);router[_0x01af('0x8')](_0x01af('0x10'),auth[_0x01af('0x9')](),controller[_0x01af('0x11')]);router[_0x01af('0x12')]('/',auth[_0x01af('0x9')](),controller[_0x01af('0x13')]);router[_0x01af('0x14')]('/:id',auth[_0x01af('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x01af('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x2d64=['create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/preview','preview','run','query','post'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0x2d64,0x166));var _0x42d6=function(_0x266d19,_0x6c9e75){_0x266d19=_0x266d19-0x0;var _0x201113=_0x2d64[_0x266d19];return _0x201113;};'use strict';var multer=require(_0x42d6('0x0'));var util=require(_0x42d6('0x1'));var path=require('path');var timeout=require(_0x42d6('0x2'));var express=require(_0x42d6('0x3'));var router=express['Router']();var fs_extra=require(_0x42d6('0x4'));var auth=require(_0x42d6('0x5'));var interaction=require(_0x42d6('0x6'));var config=require(_0x42d6('0x7'));var controller=require('./analyticCustomReport.controller');router[_0x42d6('0x8')]('/',auth[_0x42d6('0x9')](),controller['index']);router['get'](_0x42d6('0xa'),auth[_0x42d6('0x9')](),controller['show']);router[_0x42d6('0x8')](_0x42d6('0xb'),auth[_0x42d6('0x9')](),controller[_0x42d6('0xc')]);router[_0x42d6('0x8')]('/:id/run',auth[_0x42d6('0x9')](),controller[_0x42d6('0xd')]);router[_0x42d6('0x8')]('/:id/query',auth['isAuthenticated'](),controller[_0x42d6('0xe')]);router[_0x42d6('0xf')]('/',auth[_0x42d6('0x9')](),controller[_0x42d6('0x10')]);router[_0x42d6('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x42d6('0x12')]);router[_0x42d6('0x13')](_0x42d6('0xa'),auth[_0x42d6('0x9')](),controller[_0x42d6('0x14')]);module[_0x42d6('0x15')]=router;
\ No newline at end of file
index a11ce2a..928beb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['TEXT','STRING'];(function(_0x5dbc58,_0x570ded){var _0x9147c8=function(_0x2f256f){while(--_0x2f256f){_0x5dbc58['push'](_0x5dbc58['shift']());}};_0x9147c8(++_0x570ded);}(_0x5d58,0x187));var _0x85d5=function(_0x46cb40,_0x567394){_0x46cb40=_0x46cb40-0x0;var _0x1cf08f=_0x5d58[_0x46cb40];return _0x1cf08f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x85d5('0x0')]},'conditions':{'type':Sequelize[_0x85d5('0x1')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xa630=['STRING','TEXT','sequelize','exports'];(function(_0x43883b,_0x431fa9){var _0x567edf=function(_0x5ae73f){while(--_0x5ae73f){_0x43883b['push'](_0x43883b['shift']());}};_0x567edf(++_0x431fa9);}(_0xa630,0xbe));var _0x0a63=function(_0x3b0b24,_0x1cb91a){_0x3b0b24=_0x3b0b24-0x0;var _0x1f26f4=_0xa630[_0x3b0b24];return _0x1f26f4;};'use strict';var Sequelize=require(_0x0a63('0x0'));module[_0x0a63('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x0a63('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x0a63('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index f2a551a..11c4c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','field','function','replace','groupBy','orderBy','order','alias','joins','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20EMPTY','operator','Sequelize','metric','format','DESC','parse','parentKey','web','output','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','countTable','run','runReport','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','dbH','status','json','offset','undefined','limit','count','set','apply','update','then','DefaultReports','destroy','end','error','stack','name','send','map','AnalyticDefaultReport','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','merge','includeAll','include','findAll','show','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','group','condition','value','options','find','getFields'];(function(_0x1bfbe9,_0x139704){var _0xcb9dc1=function(_0x358854){while(--_0x358854){_0x1bfbe9['push'](_0x1bfbe9['shift']());}};_0xcb9dc1(++_0x139704);}(_0xda19,0xd5));var _0x9da1=function(_0x4c85d2,_0x4da606){_0x4c85d2=_0x4c85d2-0x0;var _0x19a145=_0xda19[_0x4c85d2];return _0x19a145;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9da1('0x0'));var zipdir=require(_0x9da1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9da1('0x2'));var moment=require('moment');var BPromise=require(_0x9da1('0x3'));var Mustache=require('mustache');var util=require(_0x9da1('0x4'));var path=require(_0x9da1('0x5'));var sox=require(_0x9da1('0x6'));var csv=require(_0x9da1('0x7'));var ejs=require(_0x9da1('0x8'));var fs=require('fs');var fs_extra=require(_0x9da1('0x9'));var _=require(_0x9da1('0xa'));var squel=require(_0x9da1('0xb'));var crypto=require(_0x9da1('0xc'));var jsforce=require(_0x9da1('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9da1('0xe'));var Redis=require('ioredis');var authService=require(_0x9da1('0xf'));var qs=require(_0x9da1('0x10'));var as=require(_0x9da1('0x11'));var hardwareService=require(_0x9da1('0x12'));var logger=require(_0x9da1('0x13'))(_0x9da1('0x14'));var utils=require(_0x9da1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9da1('0x16'))['db'];var dbH=require('../../mysqldb')[_0x9da1('0x17')];function respondWithStatusCode(_0x1d93f8,_0xd2d225){_0xd2d225=_0xd2d225||0xcc;return function(_0x1ffa2a){if(_0x1ffa2a){return _0x1d93f8['sendStatus'](_0xd2d225);}return _0x1d93f8[_0x9da1('0x18')](_0xd2d225)['end']();};}function respondWithResult(_0x4d17e1,_0x40ba9d){_0x40ba9d=_0x40ba9d||0xc8;return function(_0x479ccd){if(_0x479ccd){return _0x4d17e1[_0x9da1('0x18')](_0x40ba9d)[_0x9da1('0x19')](_0x479ccd);}};}function respondWithFilteredResult(_0x37653d,_0x1a1a6b){return function(_0x7f1a64){if(_0x7f1a64){var _0x514d8e=typeof _0x1a1a6b[_0x9da1('0x1a')]===_0x9da1('0x1b')&&typeof _0x1a1a6b[_0x9da1('0x1c')]===_0x9da1('0x1b');var _0xfb278d=_0x7f1a64[_0x9da1('0x1d')];var _0x497676=_0x514d8e?0x0:_0x1a1a6b['offset'];var _0x17205d=_0x514d8e?_0x7f1a64[_0x9da1('0x1d')]:_0x1a1a6b[_0x9da1('0x1a')]+_0x1a1a6b[_0x9da1('0x1c')];var _0x40a967;if(_0x17205d>=_0xfb278d){_0x17205d=_0xfb278d;_0x40a967=0xc8;}else{_0x40a967=0xce;}_0x37653d[_0x9da1('0x18')](_0x40a967);return _0x37653d[_0x9da1('0x1e')]('Content-Range',_0x497676+'-'+_0x17205d+'/'+_0xfb278d)[_0x9da1('0x19')](_0x7f1a64);}return null;};}function patchUpdates(_0x554845){return function(_0x9c3b37){try{jsonpatch[_0x9da1('0x1f')](_0x9c3b37,_0x554845,!![]);}catch(_0x1fc065){return BPromise['reject'](_0x1fc065);}return _0x9c3b37['save']();};}function saveUpdates(_0x14793b,_0x3e6f85){return function(_0x16ee0c){if(_0x16ee0c){return _0x16ee0c[_0x9da1('0x20')](_0x14793b)[_0x9da1('0x21')](function(_0x165b73){return _0x165b73;});}return null;};}function removeEntity(_0x4c60aa,_0x2413fe){return function(_0x3bfa40){if(_0x3bfa40){return _0x3bfa40['destroy']()[_0x9da1('0x21')](function(){var _0x3f5680=_0x3bfa40['get']({'plain':!![]});var _0x2fd49c=_0x9da1('0x22');return db['UserProfileResource'][_0x9da1('0x23')]({'where':{'type':_0x2fd49c,'resourceId':_0x3f5680['id']}})[_0x9da1('0x21')](function(){return _0x3bfa40;});})['then'](function(){_0x4c60aa['status'](0xcc)[_0x9da1('0x24')]();});}};}function handleEntityNotFound(_0x47055e,_0x5eca5b){return function(_0x27c6e2){if(!_0x27c6e2){_0x47055e['sendStatus'](0x194);}return _0x27c6e2;};}function handleError(_0x5a6f2d,_0x5a59c2){_0x5a59c2=_0x5a59c2||0x1f4;return function(_0x31b826){logger[_0x9da1('0x25')](_0x31b826[_0x9da1('0x26')]);if(_0x31b826[_0x9da1('0x27')]){delete _0x31b826[_0x9da1('0x27')];}_0x5a6f2d['status'](_0x5a59c2)[_0x9da1('0x28')](_0x31b826);};}exports['index']=function(_0x1feae0,_0x235ced){var _0x5b38b3={},_0xc29ba8={},_0x2eb48f={'count':0x0,'rows':[]};var _0x4f318b=_[_0x9da1('0x29')](db[_0x9da1('0x2a')][_0x9da1('0x2b')],function(_0x2b2b48){return{'name':_0x2b2b48['fieldName'],'type':_0x2b2b48['type'][_0x9da1('0x2c')]};});_0xc29ba8[_0x9da1('0x2d')]=_[_0x9da1('0x29')](_0x4f318b,_0x9da1('0x27'));_0xc29ba8[_0x9da1('0x2e')]=_['keys'](_0x1feae0[_0x9da1('0x2e')]);_0xc29ba8[_0x9da1('0x2f')]=_[_0x9da1('0x30')](_0xc29ba8[_0x9da1('0x2d')],_0xc29ba8[_0x9da1('0x2e')]);_0x5b38b3[_0x9da1('0x31')]=_['intersection'](_0xc29ba8[_0x9da1('0x2d')],qs['fields'](_0x1feae0['query'][_0x9da1('0x32')]));_0x5b38b3['attributes']=_0x5b38b3[_0x9da1('0x31')][_0x9da1('0x33')]?_0x5b38b3[_0x9da1('0x31')]:_0xc29ba8[_0x9da1('0x2d')];if(!_0x1feae0[_0x9da1('0x2e')][_0x9da1('0x34')](_0x9da1('0x35'))){_0x5b38b3[_0x9da1('0x1c')]=qs['limit'](_0x1feae0[_0x9da1('0x2e')]['limit']);_0x5b38b3[_0x9da1('0x1a')]=qs['offset'](_0x1feae0['query'][_0x9da1('0x1a')]);}_0x5b38b3['order']=qs[_0x9da1('0x36')](_0x1feae0[_0x9da1('0x2e')]['sort']);_0x5b38b3[_0x9da1('0x37')]=qs[_0x9da1('0x2f')](_[_0x9da1('0x38')](_0x1feae0[_0x9da1('0x2e')],_0xc29ba8['filters']),_0x4f318b);if(_0x1feae0[_0x9da1('0x2e')]['filter']){_0x5b38b3[_0x9da1('0x37')]=_['merge'](_0x5b38b3[_0x9da1('0x37')],{'$or':_[_0x9da1('0x29')](_0x4f318b,function(_0x58e165){if(_0x58e165[_0x9da1('0x39')]!==_0x9da1('0x3a')){var _0x394acf={};_0x394acf[_0x58e165['name']]={'$like':'%'+_0x1feae0['query']['filter']+'%'};return _0x394acf;}})});}_0x5b38b3=_[_0x9da1('0x3b')]({},_0x5b38b3,_0x1feae0['options']);var _0x5b215c={'where':_0x5b38b3[_0x9da1('0x37')]};return db[_0x9da1('0x2a')][_0x9da1('0x1d')](_0x5b215c)['then'](function(_0x42dbd8){_0x2eb48f[_0x9da1('0x1d')]=_0x42dbd8;if(_0x1feae0[_0x9da1('0x2e')][_0x9da1('0x3c')]){_0x5b38b3[_0x9da1('0x3d')]=[{'all':!![]}];}return db[_0x9da1('0x2a')][_0x9da1('0x3e')](_0x5b38b3);})['then'](function(_0x467350){_0x2eb48f['rows']=_0x467350;return _0x2eb48f;})[_0x9da1('0x21')](respondWithFilteredResult(_0x235ced,_0x5b38b3))['catch'](handleError(_0x235ced,null));};exports[_0x9da1('0x3f')]=function(_0x40d848,_0x599211){var _0x265366={'raw':!![],'where':{'id':_0x40d848['params']['id']}},_0xfeec5f={};_0xfeec5f[_0x9da1('0x2d')]=_['keys'](db[_0x9da1('0x2a')][_0x9da1('0x2b')]);_0xfeec5f['query']=_['keys'](_0x40d848[_0x9da1('0x2e')]);_0xfeec5f[_0x9da1('0x2f')]=_[_0x9da1('0x30')](_0xfeec5f[_0x9da1('0x2d')],_0xfeec5f[_0x9da1('0x2e')]);_0x265366[_0x9da1('0x31')]=_[_0x9da1('0x30')](_0xfeec5f[_0x9da1('0x2d')],qs['fields'](_0x40d848[_0x9da1('0x2e')][_0x9da1('0x32')]));_0x265366[_0x9da1('0x31')]=_0x265366['attributes'][_0x9da1('0x33')]?_0x265366[_0x9da1('0x31')]:_0xfeec5f[_0x9da1('0x2d')];if(_0x40d848['query'][_0x9da1('0x3c')]){_0x265366[_0x9da1('0x3d')]=[{'all':!![]}];}_0x265366=_[_0x9da1('0x3b')]({},_0x265366,_0x40d848['options']);return db[_0x9da1('0x2a')]['find'](_0x265366)['then'](handleEntityNotFound(_0x599211,null))[_0x9da1('0x21')](respondWithResult(_0x599211,null))[_0x9da1('0x40')](handleError(_0x599211,null));};exports['create']=function(_0x712d10,_0x2066d2){return db['AnalyticDefaultReport'][_0x9da1('0x41')](_0x712d10[_0x9da1('0x42')],{})[_0x9da1('0x21')](function(_0x3a529d){var _0x4780ca=_0x712d10[_0x9da1('0x43')][_0x9da1('0x44')]({'plain':!![]});if(!_0x4780ca)throw new Error(_0x9da1('0x45'));if(_0x4780ca[_0x9da1('0x46')]==='user'){var _0x147c65=_0x3a529d[_0x9da1('0x44')]({'plain':!![]});var _0x34a203=_0x9da1('0x47');return db['UserProfileSection']['find']({'where':{'name':_0x34a203,'userProfileId':_0x4780ca[_0x9da1('0x48')]},'raw':!![]})[_0x9da1('0x21')](function(_0x3870dd){if(_0x3870dd&&_0x3870dd[_0x9da1('0x49')]===0x0){return db[_0x9da1('0x4a')][_0x9da1('0x41')]({'name':_0x147c65[_0x9da1('0x27')],'resourceId':_0x147c65['id'],'type':_0x9da1('0x22'),'sectionId':_0x3870dd['id']},{})[_0x9da1('0x21')](function(){return _0x3a529d;});}else{return _0x3a529d;}})[_0x9da1('0x40')](function(_0x868167){logger[_0x9da1('0x25')](_0x9da1('0x4b'),_0x868167);throw _0x868167;});}return _0x3a529d;})[_0x9da1('0x21')](respondWithResult(_0x2066d2,0xc9))['catch'](handleError(_0x2066d2,null));};exports[_0x9da1('0x20')]=function(_0x1fbb5d,_0x4d241a){if(_0x1fbb5d[_0x9da1('0x42')]['id']){delete _0x1fbb5d['body']['id'];}return db[_0x9da1('0x2a')]['find']({'where':{'id':_0x1fbb5d[_0x9da1('0x4c')]['id']}})[_0x9da1('0x21')](handleEntityNotFound(_0x4d241a,null))[_0x9da1('0x21')](saveUpdates(_0x1fbb5d[_0x9da1('0x42')],null))[_0x9da1('0x21')](respondWithResult(_0x4d241a,null))[_0x9da1('0x40')](handleError(_0x4d241a,null));};exports[_0x9da1('0x23')]=function(_0x343b05,_0x170351){return db[_0x9da1('0x2a')]['find']({'where':{'id':_0x343b05[_0x9da1('0x4c')]['id']}})[_0x9da1('0x21')](handleEntityNotFound(_0x170351,null))[_0x9da1('0x21')](removeEntity(_0x170351,null))[_0x9da1('0x40')](handleError(_0x170351,null));};exports[_0x9da1('0x4d')]=function(_0x4607a9,_0x2020d0){var _0x3c01c3=0xa;var _0xfa8d3f=[_0x9da1('0x4e'),'left_join',_0x9da1('0x4f'),_0x9da1('0x50')];var _0x5bda2a={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0xc27b00={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':_0x9da1('0x5a'),'HOUR':'HOUR(%s)','ROUND':_0x9da1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x27ac84=function(_0x10ebc9){return!_[_0x9da1('0x5c')]([_0x9da1('0x5d'),_0x9da1('0x5e'),_0x9da1('0x5f'),'IS\x20NOT\x20EMPTY'],_0x10ebc9);};var _0x5f5dc2=function(_0x454a68){if(!_0x454a68||!_0x454a68['rules']['length']){return'';}for(var _0x5b4a05='(',_0x6f86c3=0x0;_0x6f86c3<_0x454a68['rules'][_0x9da1('0x33')];_0x6f86c3+=0x1){_0x6f86c3>0x0&&(_0x5b4a05+='\x20'+_0x454a68['operator']+'\x20');_0x5b4a05+=_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x61')]?_0x5f5dc2(_0x454a68['rules'][_0x6f86c3][_0x9da1('0x61')]):_0x454a68[_0x9da1('0x60')][_0x6f86c3]['field']+'\x20'+_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x62')]+(_0x27ac84(_0x454a68['rules'][_0x6f86c3]['condition'])?'\x20'+_0x454a68[_0x9da1('0x60')][_0x6f86c3][_0x9da1('0x63')]:'');}return _0x5b4a05+')';};var _0x21d00c={'where':{'id':_0x4607a9['params']['id']}},_0x3ca531,_0x236b01,_0x44d7fe,_0x5cb102,_0x3d2c25;_0x21d00c=_['merge']({},_0x21d00c,_0x4607a9[_0x9da1('0x64')]);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0x21d00c)[_0x9da1('0x21')](function(_0x3382b1){if(_0x3382b1){_0x3ca531=_0x3382b1;return _0x3382b1[_0x9da1('0x66')]();}return null;})[_0x9da1('0x21')](function(_0x1f2a4b){if(_0x1f2a4b){if(!_0x1f2a4b[_0x9da1('0x33')]){throw new db['Sequelize'][(_0x9da1('0x67'))](_0x9da1('0x68'),0x193);}_0x236b01=_0x1f2a4b;return db[_0x9da1('0x69')][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x491fcb){if(_0x491fcb){_0x44d7fe=_[_0x9da1('0x6a')](_0x491fcb,'id');var _0x13fadd;var _0x419f78=squel[_0x9da1('0x6b')]();_0x419f78[_0x9da1('0x6c')](_0x3ca531[_0x9da1('0x6d')]);for(var _0x55a6d2=0x0;_0x55a6d2<_0x236b01[_0x9da1('0x33')];_0x55a6d2+=0x1){_0x13fadd=_0x236b01[_0x55a6d2]['MetricId']?_0x44d7fe[_0x236b01[_0x55a6d2][_0x9da1('0x6e')]]['metric']:_0x236b01[_0x55a6d2][_0x9da1('0x6f')];_0x13fadd=_0x236b01[_0x55a6d2][_0x9da1('0x70')]?_[_0x9da1('0x71')](_0x5bda2a[_0x236b01[_0x55a6d2][_0x9da1('0x70')]],'%s',_0x13fadd):_0x13fadd;_0x13fadd=_0x236b01[_0x55a6d2]['format']?_['replace'](_0xc27b00[_0x236b01[_0x55a6d2]['format']],'%s',_0x13fadd):_0x13fadd;if(_0x236b01[_0x55a6d2][_0x9da1('0x72')]){_0x419f78[_0x9da1('0x61')](_0x13fadd);}_0x236b01[_0x55a6d2][_0x9da1('0x73')]&&_0x419f78[_0x9da1('0x74')](_0x13fadd,_0x236b01[_0x55a6d2]['orderBy']==='DESC'?![]:!![]);_0x419f78[_0x9da1('0x6f')](_0x13fadd,_0x236b01[_0x55a6d2][_0x9da1('0x75')]||_0x13fadd);}if(_0x3ca531[_0x9da1('0x76')]){_0x3ca531['joins']=JSON['parse'](_0x3ca531[_0x9da1('0x76')]);for(var _0x1deb93=0x0;_0x1deb93<_0x3ca531[_0x9da1('0x76')]['length'];_0x1deb93+=0x1){if(_0x3ca531['joins'][_0x1deb93][_0x9da1('0x39')]&&_[_0x9da1('0x5c')](_0xfa8d3f,_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x39')])&&_0x3ca531[_0x9da1('0x76')][_0x1deb93]['parentKey']&&_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')]&&_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x78')]){_0x419f78[_0x3ca531['joins'][_0x1deb93][_0x9da1('0x39')]](_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')],null,util['format'](_0x9da1('0x79'),_0x3ca531[_0x9da1('0x6d')],_0x3ca531[_0x9da1('0x76')][_0x1deb93]['parentKey'],_0x3ca531[_0x9da1('0x76')][_0x1deb93][_0x9da1('0x77')],_0x3ca531['joins'][_0x1deb93][_0x9da1('0x78')]));}}}if(_0x3ca531['conditions']){_0x3ca531[_0x9da1('0x7a')]=JSON['parse'](_0x3ca531[_0x9da1('0x7a')]);_0x419f78[_0x9da1('0x37')](_0x5f5dc2(_0x3ca531[_0x9da1('0x7a')][_0x9da1('0x61')]));}_0x3d2c25=_0x419f78[_0x9da1('0x7b')]();_0x419f78[_0x9da1('0x1c')](_0x3c01c3);_0x419f78[_0x9da1('0x1a')](0x0);logger[_0x9da1('0x7c')](_0x9da1('0x7d'),_0x419f78[_0x9da1('0x7e')]());return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x419f78[_0x9da1('0x7e')](),{'type':dbH['sequelize'][_0x9da1('0x80')][_0x9da1('0x81')]});}})[_0x9da1('0x21')](respondWithResult(_0x2020d0,null))[_0x9da1('0x40')](handleError(_0x2020d0,null));};function runReport(_0x162597,_0x4f39bc,_0x1ca102){var _0x2eb5e6=_0x4f39bc['name'];var _0x4a4cda=0xa;var _0x84f8d8=[_0x9da1('0x4e'),_0x9da1('0x82'),_0x9da1('0x4f'),_0x9da1('0x50')];var _0x4701b3={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0x3a0a84={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':_0x9da1('0x5a'),'HOUR':_0x9da1('0x83'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9da1('0x84')};var _0x354c5a=function(_0x53ab6a){return!_[_0x9da1('0x5c')](['IS\x20NULL',_0x9da1('0x5e'),'IS\x20EMPTY',_0x9da1('0x85')],_0x53ab6a);};var _0x106bd9=function(_0x347cb8){if(!_0x347cb8||!_0x347cb8[_0x9da1('0x60')][_0x9da1('0x33')]){return'';}for(var _0x3e331a='(',_0x1f785c=0x0;_0x1f785c<_0x347cb8[_0x9da1('0x60')][_0x9da1('0x33')];_0x1f785c+=0x1){_0x1f785c>0x0&&(_0x3e331a+='\x20'+_0x347cb8[_0x9da1('0x86')]+'\x20');_0x3e331a+=_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x61')]?_0x106bd9(_0x347cb8['rules'][_0x1f785c][_0x9da1('0x61')]):_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x6f')]+'\x20'+_0x347cb8[_0x9da1('0x60')][_0x1f785c][_0x9da1('0x62')]+(_0x354c5a(_0x347cb8[_0x9da1('0x60')][_0x1f785c]['condition'])?'\x20'+_0x347cb8['rules'][_0x1f785c][_0x9da1('0x63')]:'');}return _0x3e331a+')';};var _0xdecc82={'where':{'id':_0x162597['id']}},_0xe12dd7,_0x4cd85f,_0x4bf74c,_0x28335d,_0x175b4b;_0xdecc82=_[_0x9da1('0x3b')]({},_0xdecc82,_0x1ca102);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0xdecc82)[_0x9da1('0x21')](function(_0x5561f0){if(_0x5561f0){_0xe12dd7=_0x5561f0;return _0x5561f0[_0x9da1('0x66')]();}return null;})[_0x9da1('0x21')](function(_0x5a64fd){if(_0x5a64fd){if(!_0x5a64fd['length']){throw new db[(_0x9da1('0x87'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x4cd85f=_0x5a64fd;return db[_0x9da1('0x69')][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x18ae08){if(_0x18ae08){_0x4bf74c=_[_0x9da1('0x6a')](_0x18ae08,'id');var _0x30065d;var _0x40a2ef=squel[_0x9da1('0x6b')]();_0x40a2ef['from'](_0xe12dd7['table']);for(var _0xd10ba4=0x0;_0xd10ba4<_0x4cd85f[_0x9da1('0x33')];_0xd10ba4+=0x1){_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x6e')]?_0x4bf74c[_0x4cd85f[_0xd10ba4][_0x9da1('0x6e')]][_0x9da1('0x88')]:_0x4cd85f[_0xd10ba4][_0x9da1('0x6f')];_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x70')]?_[_0x9da1('0x71')](_0x4701b3[_0x4cd85f[_0xd10ba4]['function']],'%s',_0x30065d):_0x30065d;_0x30065d=_0x4cd85f[_0xd10ba4][_0x9da1('0x89')]?_['replace'](_0x3a0a84[_0x4cd85f[_0xd10ba4][_0x9da1('0x89')]],'%s',_0x30065d):_0x30065d;if(_0x4cd85f[_0xd10ba4][_0x9da1('0x72')]){_0x40a2ef[_0x9da1('0x61')](_0x30065d);}_0x4cd85f[_0xd10ba4][_0x9da1('0x73')]&&_0x40a2ef[_0x9da1('0x74')](_0x30065d,_0x4cd85f[_0xd10ba4][_0x9da1('0x73')]===_0x9da1('0x8a')?![]:!![]);_0x40a2ef['field'](_0x30065d,_0x4cd85f[_0xd10ba4][_0x9da1('0x75')]||_0x30065d);}if(_0xe12dd7['joins']){_0xe12dd7[_0x9da1('0x76')]=JSON[_0x9da1('0x8b')](_0xe12dd7[_0x9da1('0x76')]);for(var _0x22b679=0x0;_0x22b679<_0xe12dd7['joins'][_0x9da1('0x33')];_0x22b679+=0x1){if(_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')]&&_[_0x9da1('0x5c')](_0x84f8d8,_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')])&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x8c')]&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x77')]&&_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x78')]){_0x40a2ef[_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x39')]](_0xe12dd7['joins'][_0x22b679][_0x9da1('0x77')],null,util['format'](_0x9da1('0x79'),_0xe12dd7['table'],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x8c')],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x77')],_0xe12dd7[_0x9da1('0x76')][_0x22b679][_0x9da1('0x78')]));}}}if(_0xe12dd7[_0x9da1('0x7a')]){_0xe12dd7[_0x9da1('0x7a')]=JSON['parse'](_0xe12dd7[_0x9da1('0x7a')]);_0x40a2ef[_0x9da1('0x37')](_0x106bd9(_0xe12dd7['conditions'][_0x9da1('0x61')]));}_0x175b4b=_0x40a2ef[_0x9da1('0x7b')]();_0x40a2ef[_0x9da1('0x1c')](_0x4a4cda);_0x40a2ef['offset'](0x0);return;}})['then'](function(){if(_0x4f39bc['output']===_0x9da1('0x8d')){return null;}var _0x3b17aa=_[_0x9da1('0x3b')](_0x4f39bc,{'name':_0x4f39bc['fullPath']||_0x4f39bc['name']||_0xe12dd7[_0x9da1('0x27')],'basename':_0x2eb5e6,'savename':util[_0x9da1('0x89')]('%s-%s.%s',_0x4f39bc[_0x9da1('0x27')]||_0xe12dd7['name'],require('randomstring')['generate'](0x4),_0x4f39bc[_0x9da1('0x8e')]||_0x9da1('0x8f')),'reportId':_0xe12dd7['id'],'reportType':_0x9da1('0x90')});return db[_0x9da1('0x91')][_0x9da1('0x41')](_0x3b17aa,{'raw':!![]});})[_0x9da1('0x21')](function(_0x2aac99){if(_0xe12dd7[_0x9da1('0x6d')]===_0x9da1('0x92')){_0x175b4b[_0x9da1('0x37')](_0xe12dd7[_0x9da1('0x6d')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x4f39bc['startDate'],_0x4f39bc['endDate']);}else{_0x175b4b[_0x9da1('0x37')](_0xe12dd7[_0x9da1('0x6d')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4f39bc[_0x9da1('0x93')],_0x4f39bc[_0x9da1('0x94')]);}if(_0x2aac99){logger[_0x9da1('0x95')](_0x9da1('0x96'),_0x175b4b[_0x9da1('0x7e')]());require(_0x9da1('0x97'))[_0x9da1('0x98')](path[_0x9da1('0x4e')](__dirname,'../../components/export/',_0x2aac99[_0x9da1('0x8e')]),[_0x2aac99['id'],_0x175b4b[_0x9da1('0x7e')](),path[_0x9da1('0x4e')](__dirname,_0x9da1('0x99'),_0x2aac99[_0x9da1('0x9a')]),_0x2eb5e6]);return _0x2aac99;}else{var _0x5ad3f8=squel[_0x9da1('0x6b')]();_0x5ad3f8['from']('('+_0x175b4b[_0x9da1('0x7e')]()+')',_0x9da1('0x9b'));_0x5ad3f8[_0x9da1('0x6f')]('COUNT(*)','count');_0x175b4b[_0x9da1('0x1c')](_0x4f39bc[_0x9da1('0x1c')]||_0x4a4cda);_0x175b4b[_0x9da1('0x1a')](_0x4f39bc['offset']||0x0);return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x5ad3f8['toString'](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')]['SELECT']})['then'](function(_0x489b3f){if(!_0x489b3f[_0x9da1('0x33')]){_0x28335d=0x0;}else{_0x28335d=_0x489b3f[0x0]['count']||0x0;}return dbH[_0x9da1('0x7f')][_0x9da1('0x2e')](_0x175b4b[_0x9da1('0x7e')](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')][_0x9da1('0x81')]});})['then'](function(_0x355a71){return{'rows':_0x355a71||[],'count':_0x28335d};});}});}exports[_0x9da1('0x9c')]=function(_0x492e1a,_0x449a17){return runReport(_0x492e1a[_0x9da1('0x4c')],_0x492e1a[_0x9da1('0x2e')],_0x492e1a[_0x9da1('0x64')])['then'](respondWithResult(_0x449a17,null))[_0x9da1('0x40')](handleError(_0x449a17,null));};exports[_0x9da1('0x9d')]=runReport;exports[_0x9da1('0x2e')]=function(_0x8280a9,_0x374754){var _0x1e466a=0xa;var _0x3f9133=[_0x9da1('0x4e'),'left_join',_0x9da1('0x4f'),'cross_join'];var _0x3dd3e0={'SUM':_0x9da1('0x51'),'COUNT':_0x9da1('0x52'),'COUNT DISTINCT':_0x9da1('0x53'),'MAX':_0x9da1('0x54'),'MIN':_0x9da1('0x55'),'AVG':_0x9da1('0x56'),'GROUP_CONCAT':_0x9da1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9da1('0x58')};var _0x52e4a6={'SEC_TO_TIME':_0x9da1('0x59'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0x9da1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x4aa903=function(_0x55d7f2){return!_['includes'](['IS\x20NULL',_0x9da1('0x5e'),_0x9da1('0x5f'),_0x9da1('0x85')],_0x55d7f2);};var _0x3212ad=function(_0x5ac65b){if(!_0x5ac65b||!_0x5ac65b[_0x9da1('0x60')][_0x9da1('0x33')]){return'';}for(var _0x21a99d='(',_0xd19a7c=0x0;_0xd19a7c<_0x5ac65b[_0x9da1('0x60')][_0x9da1('0x33')];_0xd19a7c+=0x1){_0xd19a7c>0x0&&(_0x21a99d+='\x20'+_0x5ac65b[_0x9da1('0x86')]+'\x20');_0x21a99d+=_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x61')]?_0x3212ad(_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x61')]):_0x5ac65b['rules'][_0xd19a7c][_0x9da1('0x6f')]+'\x20'+_0x5ac65b[_0x9da1('0x60')][_0xd19a7c]['condition']+(_0x4aa903(_0x5ac65b['rules'][_0xd19a7c][_0x9da1('0x62')])?'\x20'+_0x5ac65b[_0x9da1('0x60')][_0xd19a7c][_0x9da1('0x63')]:'');}return _0x21a99d+')';};var _0xb14af1={'where':{'id':_0x8280a9[_0x9da1('0x4c')]['id']}},_0x245566,_0x5b2591,_0x3c51e3,_0x54b83d,_0x23bf86;_0xb14af1=_['merge']({},_0xb14af1,_0x8280a9[_0x9da1('0x64')]);return db[_0x9da1('0x2a')][_0x9da1('0x65')](_0xb14af1)[_0x9da1('0x21')](function(_0x4bb140){if(_0x4bb140){_0x245566=_0x4bb140;return _0x4bb140[_0x9da1('0x66')]();}return null;})['then'](function(_0x47cbdd){if(_0x47cbdd){if(!_0x47cbdd['length']){throw new db[(_0x9da1('0x87'))][(_0x9da1('0x67'))](_0x9da1('0x68'),0x193);}_0x5b2591=_0x47cbdd;return db['AnalyticMetric'][_0x9da1('0x3e')]({'raw':!![]});}return null;})[_0x9da1('0x21')](function(_0x5e1e24){if(_0x5e1e24){_0x3c51e3=_[_0x9da1('0x6a')](_0x5e1e24,'id');var _0x49ddec;var _0x407218=squel['select']();_0x407218['from'](_0x245566['table']);for(var _0x316fee=0x0;_0x316fee<_0x5b2591['length'];_0x316fee+=0x1){_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x6e')]?_0x3c51e3[_0x5b2591[_0x316fee][_0x9da1('0x6e')]]['metric']:_0x5b2591[_0x316fee]['field'];_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x70')]?_['replace'](_0x3dd3e0[_0x5b2591[_0x316fee][_0x9da1('0x70')]],'%s',_0x49ddec):_0x49ddec;_0x49ddec=_0x5b2591[_0x316fee][_0x9da1('0x89')]?_['replace'](_0x52e4a6[_0x5b2591[_0x316fee]['format']],'%s',_0x49ddec):_0x49ddec;if(_0x5b2591[_0x316fee][_0x9da1('0x72')]){_0x407218[_0x9da1('0x61')](_0x49ddec);}_0x5b2591[_0x316fee][_0x9da1('0x73')]&&_0x407218[_0x9da1('0x74')](_0x49ddec,_0x5b2591[_0x316fee]['orderBy']==='DESC'?![]:!![]);_0x407218[_0x9da1('0x6f')](_0x49ddec,_0x5b2591[_0x316fee][_0x9da1('0x75')]||_0x49ddec);}if(_0x245566[_0x9da1('0x76')]){_0x245566[_0x9da1('0x76')]=JSON[_0x9da1('0x8b')](_0x245566['joins']);for(var _0x56ec7d=0x0;_0x56ec7d<_0x245566[_0x9da1('0x76')][_0x9da1('0x33')];_0x56ec7d+=0x1){if(_0x245566['joins'][_0x56ec7d][_0x9da1('0x39')]&&_['includes'](_0x3f9133,_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x39')])&&_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x8c')]&&_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x77')]&&_0x245566['joins'][_0x56ec7d][_0x9da1('0x78')]){_0x407218[_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x39')]](_0x245566[_0x9da1('0x76')][_0x56ec7d]['foreignTable'],null,util[_0x9da1('0x89')](_0x9da1('0x79'),_0x245566[_0x9da1('0x6d')],_0x245566['joins'][_0x56ec7d]['parentKey'],_0x245566[_0x9da1('0x76')][_0x56ec7d][_0x9da1('0x77')],_0x245566['joins'][_0x56ec7d]['foreignKey']));}}}if(_0x245566[_0x9da1('0x7a')]){_0x245566[_0x9da1('0x7a')]=JSON[_0x9da1('0x8b')](_0x245566[_0x9da1('0x7a')]);_0x407218[_0x9da1('0x37')](_0x3212ad(_0x245566['conditions'][_0x9da1('0x61')]));}_0x23bf86=_0x407218['clone']();_0x407218[_0x9da1('0x1c')](_0x1e466a);_0x407218[_0x9da1('0x1a')](0x0);logger[_0x9da1('0x7c')](_0x9da1('0x7d'),_0x407218['toString']());return dbH['sequelize'][_0x9da1('0x2e')](_0x407218[_0x9da1('0x7e')](),{'type':dbH[_0x9da1('0x7f')][_0x9da1('0x80')][_0x9da1('0x81')]});}})[_0x9da1('0x21')](function(){return{'sql':_0x23bf86['toString']()};})[_0x9da1('0x21')](respondWithResult(_0x374754,null))[_0x9da1('0x40')](handleError(_0x374754,null));};
\ No newline at end of file
+var _0x524e=['AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','QueryTypes','SELECT','run','runReport','SUM(%s)','GROUP_CONCAT(%s)','debug','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','end','error','stack','name','send','index','AnalyticDefaultReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','create','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','update','body','params','preview','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','Limited\x20Query:','sequelize','toString','join','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','getFields','from','clone','output','web','fullPath','generate','csv','default'];(function(_0x86cd0f,_0x3851ee){var _0x16d618=function(_0x367be4){while(--_0x367be4){_0x86cd0f['push'](_0x86cd0f['shift']());}};_0x16d618(++_0x3851ee);}(_0x524e,0x15e));var _0xe524=function(_0x2f2819,_0x2181a7){_0x2f2819=_0x2f2819-0x0;var _0x5ca690=_0x524e[_0x2f2819];return _0x5ca690;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe524('0x0'));var jsonpatch=require(_0xe524('0x1'));var rp=require(_0xe524('0x2'));var moment=require(_0xe524('0x3'));var BPromise=require(_0xe524('0x4'));var Mustache=require(_0xe524('0x5'));var util=require(_0xe524('0x6'));var path=require(_0xe524('0x7'));var sox=require(_0xe524('0x8'));var csv=require(_0xe524('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0xa'));var _=require(_0xe524('0xb'));var squel=require(_0xe524('0xc'));var crypto=require('crypto');var jsforce=require(_0xe524('0xd'));var deskjs=require(_0xe524('0xe'));var toCsv=require(_0xe524('0x9'));var querystring=require(_0xe524('0xf'));var Papa=require(_0xe524('0x10'));var Redis=require(_0xe524('0x11'));var authService=require(_0xe524('0x12'));var qs=require(_0xe524('0x13'));var as=require(_0xe524('0x14'));var hardwareService=require(_0xe524('0x15'));var logger=require(_0xe524('0x16'))(_0xe524('0x17'));var utils=require(_0xe524('0x18'));var config=require(_0xe524('0x19'));var licenseUtil=require(_0xe524('0x1a'));var db=require(_0xe524('0x1b'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0xfdc2a5,_0x1541d8){_0x1541d8=_0x1541d8||0xcc;return function(_0x11adbc){if(_0x11adbc){return _0xfdc2a5[_0xe524('0x1c')](_0x1541d8);}return _0xfdc2a5[_0xe524('0x1d')](_0x1541d8)['end']();};}function respondWithResult(_0x12ff75,_0x51e9fe){_0x51e9fe=_0x51e9fe||0xc8;return function(_0x19f013){if(_0x19f013){return _0x12ff75[_0xe524('0x1d')](_0x51e9fe)['json'](_0x19f013);}};}function respondWithFilteredResult(_0x569660,_0x488fce){return function(_0x109795){if(_0x109795){var _0x538754=typeof _0x488fce[_0xe524('0x1e')]==='undefined'&&typeof _0x488fce['limit']==='undefined';var _0x3a4027=_0x109795['count'];var _0x11b2a1=_0x538754?0x0:_0x488fce[_0xe524('0x1e')];var _0x278de9=_0x538754?_0x109795[_0xe524('0x1f')]:_0x488fce['offset']+_0x488fce[_0xe524('0x20')];var _0x3ccb3f;if(_0x278de9>=_0x3a4027){_0x278de9=_0x3a4027;_0x3ccb3f=0xc8;}else{_0x3ccb3f=0xce;}_0x569660['status'](_0x3ccb3f);return _0x569660[_0xe524('0x21')](_0xe524('0x22'),_0x11b2a1+'-'+_0x278de9+'/'+_0x3a4027)[_0xe524('0x23')](_0x109795);}return null;};}function patchUpdates(_0x1dcc0f){return function(_0x1c4194){try{jsonpatch[_0xe524('0x24')](_0x1c4194,_0x1dcc0f,!![]);}catch(_0xbf059b){return BPromise[_0xe524('0x25')](_0xbf059b);}return _0x1c4194[_0xe524('0x26')]();};}function saveUpdates(_0x5c4d21,_0x7d1f92){return function(_0x5bb00b){if(_0x5bb00b){return _0x5bb00b['update'](_0x5c4d21)[_0xe524('0x27')](function(_0x23df5e){return _0x23df5e;});}return null;};}function removeEntity(_0x1ad106,_0x85fc51){return function(_0x599d5d){if(_0x599d5d){return _0x599d5d[_0xe524('0x28')]()['then'](function(){var _0x17e245=_0x599d5d[_0xe524('0x29')]({'plain':!![]});var _0xd62772=_0xe524('0x2a');return db[_0xe524('0x2b')][_0xe524('0x28')]({'where':{'type':_0xd62772,'resourceId':_0x17e245['id']}})[_0xe524('0x27')](function(){return _0x599d5d;});})['then'](function(){_0x1ad106['status'](0xcc)[_0xe524('0x2c')]();});}};}function handleEntityNotFound(_0x45abad,_0x476572){return function(_0x109a96){if(!_0x109a96){_0x45abad[_0xe524('0x1c')](0x194);}return _0x109a96;};}function handleError(_0x5405e4,_0x52f140){_0x52f140=_0x52f140||0x1f4;return function(_0x4b1ff){logger[_0xe524('0x2d')](_0x4b1ff[_0xe524('0x2e')]);if(_0x4b1ff[_0xe524('0x2f')]){delete _0x4b1ff[_0xe524('0x2f')];}_0x5405e4['status'](_0x52f140)[_0xe524('0x30')](_0x4b1ff);};}exports[_0xe524('0x31')]=function(_0x4a4e15,_0x5b7ded){var _0x20688e={},_0x376324={},_0x5b2fc3={'count':0x0,'rows':[]};var _0x31d4a7=_['map'](db[_0xe524('0x32')]['rawAttributes'],function(_0x315e56){return{'name':_0x315e56[_0xe524('0x33')],'type':_0x315e56[_0xe524('0x34')]['key']};});_0x376324[_0xe524('0x35')]=_['map'](_0x31d4a7,_0xe524('0x2f'));_0x376324[_0xe524('0x36')]=_[_0xe524('0x37')](_0x4a4e15['query']);_0x376324[_0xe524('0x38')]=_[_0xe524('0x39')](_0x376324['model'],_0x376324[_0xe524('0x36')]);_0x20688e[_0xe524('0x3a')]=_[_0xe524('0x39')](_0x376324[_0xe524('0x35')],qs['fields'](_0x4a4e15[_0xe524('0x36')][_0xe524('0x3b')]));_0x20688e[_0xe524('0x3a')]=_0x20688e[_0xe524('0x3a')][_0xe524('0x3c')]?_0x20688e[_0xe524('0x3a')]:_0x376324[_0xe524('0x35')];if(!_0x4a4e15[_0xe524('0x36')]['hasOwnProperty'](_0xe524('0x3d'))){_0x20688e['limit']=qs[_0xe524('0x20')](_0x4a4e15[_0xe524('0x36')]['limit']);_0x20688e[_0xe524('0x1e')]=qs['offset'](_0x4a4e15[_0xe524('0x36')][_0xe524('0x1e')]);}_0x20688e[_0xe524('0x3e')]=qs[_0xe524('0x3f')](_0x4a4e15[_0xe524('0x36')][_0xe524('0x3f')]);_0x20688e[_0xe524('0x40')]=qs[_0xe524('0x38')](_['pick'](_0x4a4e15[_0xe524('0x36')],_0x376324[_0xe524('0x38')]),_0x31d4a7);if(_0x4a4e15[_0xe524('0x36')][_0xe524('0x41')]){_0x20688e[_0xe524('0x40')]=_[_0xe524('0x42')](_0x20688e[_0xe524('0x40')],{'$or':_[_0xe524('0x43')](_0x31d4a7,function(_0x5d3ea1){if(_0x5d3ea1[_0xe524('0x34')]!==_0xe524('0x44')){var _0x2e4a13={};_0x2e4a13[_0x5d3ea1['name']]={'$like':'%'+_0x4a4e15[_0xe524('0x36')]['filter']+'%'};return _0x2e4a13;}})});}_0x20688e=_[_0xe524('0x42')]({},_0x20688e,_0x4a4e15[_0xe524('0x45')]);var _0x43c314={'where':_0x20688e[_0xe524('0x40')]};return db[_0xe524('0x32')][_0xe524('0x1f')](_0x43c314)[_0xe524('0x27')](function(_0x52cd0e){_0x5b2fc3[_0xe524('0x1f')]=_0x52cd0e;if(_0x4a4e15[_0xe524('0x36')][_0xe524('0x46')]){_0x20688e[_0xe524('0x47')]=[{'all':!![]}];}return db[_0xe524('0x32')][_0xe524('0x48')](_0x20688e);})['then'](function(_0xb694b9){_0x5b2fc3[_0xe524('0x49')]=_0xb694b9;return _0x5b2fc3;})[_0xe524('0x27')](respondWithFilteredResult(_0x5b7ded,_0x20688e))['catch'](handleError(_0x5b7ded,null));};exports[_0xe524('0x4a')]=function(_0x5209dc,_0x4e5d99){var _0x2b9b3b={'raw':!![],'where':{'id':_0x5209dc['params']['id']}},_0x33906d={};_0x33906d[_0xe524('0x35')]=_[_0xe524('0x37')](db[_0xe524('0x32')][_0xe524('0x4b')]);_0x33906d['query']=_['keys'](_0x5209dc[_0xe524('0x36')]);_0x33906d[_0xe524('0x38')]=_['intersection'](_0x33906d[_0xe524('0x35')],_0x33906d['query']);_0x2b9b3b[_0xe524('0x3a')]=_[_0xe524('0x39')](_0x33906d[_0xe524('0x35')],qs[_0xe524('0x3b')](_0x5209dc[_0xe524('0x36')][_0xe524('0x3b')]));_0x2b9b3b[_0xe524('0x3a')]=_0x2b9b3b[_0xe524('0x3a')][_0xe524('0x3c')]?_0x2b9b3b[_0xe524('0x3a')]:_0x33906d[_0xe524('0x35')];if(_0x5209dc[_0xe524('0x36')][_0xe524('0x46')]){_0x2b9b3b[_0xe524('0x47')]=[{'all':!![]}];}_0x2b9b3b=_[_0xe524('0x42')]({},_0x2b9b3b,_0x5209dc['options']);return db[_0xe524('0x32')]['find'](_0x2b9b3b)['then'](handleEntityNotFound(_0x4e5d99,null))[_0xe524('0x27')](respondWithResult(_0x4e5d99,null))['catch'](handleError(_0x4e5d99,null));};exports[_0xe524('0x4c')]=function(_0x15d7ee,_0x561107){return db[_0xe524('0x32')]['create'](_0x15d7ee['body'],{})[_0xe524('0x27')](function(_0x1e5687){var _0x203e71=_0x15d7ee['user']['get']({'plain':!![]});if(!_0x203e71)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x203e71['role']==='user'){var _0x5477ca=_0x1e5687[_0xe524('0x29')]({'plain':!![]});var _0x2ce5c0='Reports';return db[_0xe524('0x4d')][_0xe524('0x4e')]({'where':{'name':_0x2ce5c0,'userProfileId':_0x203e71[_0xe524('0x4f')]},'raw':!![]})[_0xe524('0x27')](function(_0x2fa143){if(_0x2fa143&&_0x2fa143['autoAssociation']===0x0){return db[_0xe524('0x2b')][_0xe524('0x4c')]({'name':_0x5477ca[_0xe524('0x2f')],'resourceId':_0x5477ca['id'],'type':'DefaultReports','sectionId':_0x2fa143['id']},{})[_0xe524('0x27')](function(){return _0x1e5687;});}else{return _0x1e5687;}})['catch'](function(_0x12e5d0){logger[_0xe524('0x2d')](_0xe524('0x50'),_0x12e5d0);throw _0x12e5d0;});}return _0x1e5687;})[_0xe524('0x27')](respondWithResult(_0x561107,0xc9))[_0xe524('0x51')](handleError(_0x561107,null));};exports[_0xe524('0x52')]=function(_0x1cec31,_0x374450){if(_0x1cec31[_0xe524('0x53')]['id']){delete _0x1cec31[_0xe524('0x53')]['id'];}return db[_0xe524('0x32')][_0xe524('0x4e')]({'where':{'id':_0x1cec31['params']['id']}})['then'](handleEntityNotFound(_0x374450,null))['then'](saveUpdates(_0x1cec31[_0xe524('0x53')],null))[_0xe524('0x27')](respondWithResult(_0x374450,null))[_0xe524('0x51')](handleError(_0x374450,null));};exports[_0xe524('0x28')]=function(_0x45fb0d,_0xef3d2f){return db[_0xe524('0x32')][_0xe524('0x4e')]({'where':{'id':_0x45fb0d[_0xe524('0x54')]['id']}})[_0xe524('0x27')](handleEntityNotFound(_0xef3d2f,null))[_0xe524('0x27')](removeEntity(_0xef3d2f,null))['catch'](handleError(_0xef3d2f,null));};exports[_0xe524('0x55')]=function(_0x1f0567,_0x4a5f4a){var _0x53da86=0xa;var _0x54adbd=['join',_0xe524('0x56'),_0xe524('0x57'),_0xe524('0x58')];var _0x8a2c00={'SUM':'SUM(%s)','COUNT':_0xe524('0x59'),'COUNT DISTINCT':_0xe524('0x5a'),'MAX':_0xe524('0x5b'),'MIN':_0xe524('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xe524('0x5d')};var _0x582fbb={'SEC_TO_TIME':_0xe524('0x5e'),'DATE':_0xe524('0x5f'),'HOUR':_0xe524('0x60'),'ROUND':_0xe524('0x61'),'UNIX_TIMESTAMP':_0xe524('0x62')};var _0x4f58ff=function(_0x5d0507){return!_[_0xe524('0x63')]([_0xe524('0x64'),_0xe524('0x65'),_0xe524('0x66'),_0xe524('0x67')],_0x5d0507);};var _0x474ed4=function(_0x5135f0){if(!_0x5135f0||!_0x5135f0[_0xe524('0x68')][_0xe524('0x3c')]){return'';}for(var _0xc3ccfd='(',_0x5d3b9c=0x0;_0x5d3b9c<_0x5135f0[_0xe524('0x68')][_0xe524('0x3c')];_0x5d3b9c+=0x1){_0x5d3b9c>0x0&&(_0xc3ccfd+='\x20'+_0x5135f0[_0xe524('0x69')]+'\x20');_0xc3ccfd+=_0x5135f0['rules'][_0x5d3b9c]['group']?_0x474ed4(_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6a')]):_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6b')]+'\x20'+_0x5135f0[_0xe524('0x68')][_0x5d3b9c]['condition']+(_0x4f58ff(_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6c')])?'\x20'+_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6d')]:'');}return _0xc3ccfd+')';};var _0x3ce098={'where':{'id':_0x1f0567[_0xe524('0x54')]['id']}},_0x22d06a,_0x35e6b2,_0x1e4b32,_0x27c55c,_0x7e5992;_0x3ce098=_['merge']({},_0x3ce098,_0x1f0567[_0xe524('0x45')]);return db[_0xe524('0x32')][_0xe524('0x4e')](_0x3ce098)[_0xe524('0x27')](function(_0xeec885){if(_0xeec885){_0x22d06a=_0xeec885;return _0xeec885['getFields']();}return null;})[_0xe524('0x27')](function(_0x2341cf){if(_0x2341cf){if(!_0x2341cf[_0xe524('0x3c')]){throw new db[(_0xe524('0x6e'))][(_0xe524('0x6f'))](_0xe524('0x70'),0x193);}_0x35e6b2=_0x2341cf;return db[_0xe524('0x71')]['findAll']({'raw':!![]});}return null;})[_0xe524('0x27')](function(_0x245501){if(_0x245501){_0x1e4b32=_[_0xe524('0x72')](_0x245501,'id');var _0xce15f5;var _0x5ec07c=squel[_0xe524('0x73')]();_0x5ec07c['from'](_0x22d06a[_0xe524('0x74')]);for(var _0x2a88e2=0x0;_0x2a88e2<_0x35e6b2[_0xe524('0x3c')];_0x2a88e2+=0x1){_0xce15f5=_0x35e6b2[_0x2a88e2]['MetricId']?_0x1e4b32[_0x35e6b2[_0x2a88e2][_0xe524('0x75')]][_0xe524('0x76')]:_0x35e6b2[_0x2a88e2][_0xe524('0x6b')];_0xce15f5=_0x35e6b2[_0x2a88e2][_0xe524('0x77')]?_[_0xe524('0x78')](_0x8a2c00[_0x35e6b2[_0x2a88e2]['function']],'%s',_0xce15f5):_0xce15f5;_0xce15f5=_0x35e6b2[_0x2a88e2][_0xe524('0x79')]?_[_0xe524('0x78')](_0x582fbb[_0x35e6b2[_0x2a88e2][_0xe524('0x79')]],'%s',_0xce15f5):_0xce15f5;if(_0x35e6b2[_0x2a88e2][_0xe524('0x7a')]){_0x5ec07c[_0xe524('0x6a')](_0xce15f5);}_0x35e6b2[_0x2a88e2]['orderBy']&&_0x5ec07c[_0xe524('0x3e')](_0xce15f5,_0x35e6b2[_0x2a88e2][_0xe524('0x7b')]===_0xe524('0x7c')?![]:!![]);_0x5ec07c[_0xe524('0x6b')](_0xce15f5,_0x35e6b2[_0x2a88e2][_0xe524('0x7d')]||_0xce15f5);}if(_0x22d06a[_0xe524('0x7e')]){_0x22d06a['joins']=JSON[_0xe524('0x7f')](_0x22d06a[_0xe524('0x7e')]);for(var _0x1beaa2=0x0;_0x1beaa2<_0x22d06a['joins'][_0xe524('0x3c')];_0x1beaa2+=0x1){if(_0x22d06a[_0xe524('0x7e')][_0x1beaa2]['type']&&_[_0xe524('0x63')](_0x54adbd,_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x34')])&&_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x80')]&&_0x22d06a[_0xe524('0x7e')][_0x1beaa2]['foreignTable']&&_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x81')]){_0x5ec07c[_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x34')]](_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x82')],null,util[_0xe524('0x79')](_0xe524('0x83'),_0x22d06a[_0xe524('0x74')],_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x80')],_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x82')],_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x81')]));}}}if(_0x22d06a['conditions']){_0x22d06a[_0xe524('0x84')]=JSON[_0xe524('0x7f')](_0x22d06a[_0xe524('0x84')]);_0x5ec07c['where'](_0x474ed4(_0x22d06a[_0xe524('0x84')][_0xe524('0x6a')]));}_0x7e5992=_0x5ec07c['clone']();_0x5ec07c['limit'](_0x53da86);_0x5ec07c[_0xe524('0x1e')](0x0);logger['debug'](_0xe524('0x85'),_0x5ec07c['toString']());return dbH[_0xe524('0x86')][_0xe524('0x36')](_0x5ec07c[_0xe524('0x87')](),{'type':dbH[_0xe524('0x86')]['QueryTypes']['SELECT']});}})[_0xe524('0x27')](respondWithResult(_0x4a5f4a,null))[_0xe524('0x51')](handleError(_0x4a5f4a,null));};function runReport(_0x50eb96,_0x45c287,_0x449842){var _0x1f3ed1=_0x45c287['name'];var _0x19b063=0xa;var _0x140a4e=[_0xe524('0x88'),_0xe524('0x56'),_0xe524('0x57'),_0xe524('0x58')];var _0x54385f={'SUM':'SUM(%s)','COUNT':_0xe524('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xe524('0x5b'),'MIN':_0xe524('0x5c'),'AVG':_0xe524('0x89'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xe524('0x8a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1681c5={'SEC_TO_TIME':_0xe524('0x5e'),'DATE':_0xe524('0x5f'),'HOUR':_0xe524('0x60'),'ROUND':_0xe524('0x61'),'UNIX_TIMESTAMP':_0xe524('0x62')};var _0x50f5e3=function(_0x11298c){return!_[_0xe524('0x63')]([_0xe524('0x64'),'IS\x20NOT\x20NULL',_0xe524('0x66'),_0xe524('0x67')],_0x11298c);};var _0x5603d0=function(_0x2712ac){if(!_0x2712ac||!_0x2712ac[_0xe524('0x68')][_0xe524('0x3c')]){return'';}for(var _0x32c9f6='(',_0x58d29e=0x0;_0x58d29e<_0x2712ac[_0xe524('0x68')][_0xe524('0x3c')];_0x58d29e+=0x1){_0x58d29e>0x0&&(_0x32c9f6+='\x20'+_0x2712ac[_0xe524('0x69')]+'\x20');_0x32c9f6+=_0x2712ac['rules'][_0x58d29e][_0xe524('0x6a')]?_0x5603d0(_0x2712ac['rules'][_0x58d29e][_0xe524('0x6a')]):_0x2712ac[_0xe524('0x68')][_0x58d29e][_0xe524('0x6b')]+'\x20'+_0x2712ac['rules'][_0x58d29e][_0xe524('0x6c')]+(_0x50f5e3(_0x2712ac[_0xe524('0x68')][_0x58d29e][_0xe524('0x6c')])?'\x20'+_0x2712ac['rules'][_0x58d29e]['value']:'');}return _0x32c9f6+')';};var _0x334164={'where':{'id':_0x50eb96['id']}},_0x512572,_0x903e24,_0x4964c3,_0x2dc3f5,_0x246c62;_0x334164=_['merge']({},_0x334164,_0x449842);return db[_0xe524('0x32')][_0xe524('0x4e')](_0x334164)['then'](function(_0x482b72){if(_0x482b72){_0x512572=_0x482b72;return _0x482b72[_0xe524('0x8b')]();}return null;})[_0xe524('0x27')](function(_0x1b3e03){if(_0x1b3e03){if(!_0x1b3e03['length']){throw new db[(_0xe524('0x6e'))][(_0xe524('0x6f'))](_0xe524('0x70'),0x193);}_0x903e24=_0x1b3e03;return db[_0xe524('0x71')][_0xe524('0x48')]({'raw':!![]});}return null;})[_0xe524('0x27')](function(_0x57501c){if(_0x57501c){_0x4964c3=_[_0xe524('0x72')](_0x57501c,'id');var _0x3a2834;var _0x4c7f45=squel['select']();_0x4c7f45[_0xe524('0x8c')](_0x512572[_0xe524('0x74')]);for(var _0x41f842=0x0;_0x41f842<_0x903e24[_0xe524('0x3c')];_0x41f842+=0x1){_0x3a2834=_0x903e24[_0x41f842]['MetricId']?_0x4964c3[_0x903e24[_0x41f842][_0xe524('0x75')]][_0xe524('0x76')]:_0x903e24[_0x41f842]['field'];_0x3a2834=_0x903e24[_0x41f842]['function']?_[_0xe524('0x78')](_0x54385f[_0x903e24[_0x41f842][_0xe524('0x77')]],'%s',_0x3a2834):_0x3a2834;_0x3a2834=_0x903e24[_0x41f842][_0xe524('0x79')]?_[_0xe524('0x78')](_0x1681c5[_0x903e24[_0x41f842][_0xe524('0x79')]],'%s',_0x3a2834):_0x3a2834;if(_0x903e24[_0x41f842][_0xe524('0x7a')]){_0x4c7f45['group'](_0x3a2834);}_0x903e24[_0x41f842]['orderBy']&&_0x4c7f45[_0xe524('0x3e')](_0x3a2834,_0x903e24[_0x41f842][_0xe524('0x7b')]==='DESC'?![]:!![]);_0x4c7f45['field'](_0x3a2834,_0x903e24[_0x41f842][_0xe524('0x7d')]||_0x3a2834);}if(_0x512572[_0xe524('0x7e')]){_0x512572[_0xe524('0x7e')]=JSON[_0xe524('0x7f')](_0x512572[_0xe524('0x7e')]);for(var _0xa820a1=0x0;_0xa820a1<_0x512572['joins']['length'];_0xa820a1+=0x1){if(_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x34')]&&_[_0xe524('0x63')](_0x140a4e,_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x34')])&&_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x80')]&&_0x512572[_0xe524('0x7e')][_0xa820a1]['foreignTable']&&_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x81')]){_0x4c7f45[_0x512572[_0xe524('0x7e')][_0xa820a1]['type']](_0x512572['joins'][_0xa820a1][_0xe524('0x82')],null,util[_0xe524('0x79')](_0xe524('0x83'),_0x512572[_0xe524('0x74')],_0x512572['joins'][_0xa820a1][_0xe524('0x80')],_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x82')],_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x81')]));}}}if(_0x512572['conditions']){_0x512572[_0xe524('0x84')]=JSON['parse'](_0x512572[_0xe524('0x84')]);_0x4c7f45[_0xe524('0x40')](_0x5603d0(_0x512572['conditions'][_0xe524('0x6a')]));}_0x246c62=_0x4c7f45[_0xe524('0x8d')]();_0x4c7f45['limit'](_0x19b063);_0x4c7f45[_0xe524('0x1e')](0x0);return;}})['then'](function(){if(_0x45c287[_0xe524('0x8e')]===_0xe524('0x8f')){return null;}var _0x1be681=_[_0xe524('0x42')](_0x45c287,{'name':_0x45c287[_0xe524('0x90')]||_0x45c287[_0xe524('0x2f')]||_0x512572[_0xe524('0x2f')],'basename':_0x1f3ed1,'savename':util[_0xe524('0x79')]('%s-%s.%s',_0x45c287[_0xe524('0x2f')]||_0x512572['name'],require('randomstring')[_0xe524('0x91')](0x4),_0x45c287['output']||_0xe524('0x92')),'reportId':_0x512572['id'],'reportType':_0xe524('0x93')});return db[_0xe524('0x94')][_0xe524('0x4c')](_0x1be681,{'raw':!![]});})[_0xe524('0x27')](function(_0x26c802){if(_0x512572['table']==='cdr'){_0x246c62[_0xe524('0x40')](_0x512572[_0xe524('0x74')]+_0xe524('0x95'),_0x45c287[_0xe524('0x96')],_0x45c287[_0xe524('0x97')]);}else{_0x246c62[_0xe524('0x40')](_0x512572[_0xe524('0x74')]+_0xe524('0x98'),_0x45c287[_0xe524('0x96')],_0x45c287[_0xe524('0x97')]);}if(_0x26c802){logger['info'](_0xe524('0x99'),_0x246c62[_0xe524('0x87')]());require(_0xe524('0x9a'))[_0xe524('0x9b')](path[_0xe524('0x88')](__dirname,_0xe524('0x9c'),_0x26c802['output']),[_0x26c802['id'],_0x246c62[_0xe524('0x87')](),path[_0xe524('0x88')](__dirname,_0xe524('0x9d'),_0x26c802[_0xe524('0x9e')]),_0x1f3ed1]);return _0x26c802;}else{var _0x84bbd7=squel[_0xe524('0x73')]();_0x84bbd7[_0xe524('0x8c')]('('+_0x246c62[_0xe524('0x87')]()+')','countTable');_0x84bbd7['field']('COUNT(*)',_0xe524('0x1f'));_0x246c62[_0xe524('0x20')](_0x45c287['limit']||_0x19b063);_0x246c62[_0xe524('0x1e')](_0x45c287[_0xe524('0x1e')]||0x0);return dbH['sequelize'][_0xe524('0x36')](_0x84bbd7[_0xe524('0x87')](),{'type':dbH['sequelize'][_0xe524('0x9f')][_0xe524('0xa0')]})[_0xe524('0x27')](function(_0x542182){if(!_0x542182[_0xe524('0x3c')]){_0x2dc3f5=0x0;}else{_0x2dc3f5=_0x542182[0x0][_0xe524('0x1f')]||0x0;}return dbH[_0xe524('0x86')]['query'](_0x246c62[_0xe524('0x87')](),{'type':dbH[_0xe524('0x86')][_0xe524('0x9f')][_0xe524('0xa0')]});})['then'](function(_0x5e6a3d){return{'rows':_0x5e6a3d||[],'count':_0x2dc3f5};});}});}exports[_0xe524('0xa1')]=function(_0x33d066,_0x3ea495){return runReport(_0x33d066[_0xe524('0x54')],_0x33d066[_0xe524('0x36')],_0x33d066[_0xe524('0x45')])[_0xe524('0x27')](respondWithResult(_0x3ea495,null))[_0xe524('0x51')](handleError(_0x3ea495,null));};exports[_0xe524('0xa2')]=runReport;exports[_0xe524('0x36')]=function(_0x4505de,_0x292f14){var _0x2d24c1=0xa;var _0x483307=[_0xe524('0x88'),_0xe524('0x56'),_0xe524('0x57'),_0xe524('0x58')];var _0x280022={'SUM':_0xe524('0xa3'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xe524('0x5b'),'MIN':'MIN(%s)','AVG':_0xe524('0x89'),'GROUP_CONCAT':_0xe524('0xa4'),'GROUP_CONCAT ASC':_0xe524('0x8a'),'GROUP_CONCAT DESC':_0xe524('0x5d')};var _0x46d6da={'SEC_TO_TIME':_0xe524('0x5e'),'DATE':_0xe524('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0xe524('0x61'),'UNIX_TIMESTAMP':_0xe524('0x62')};var _0x39998a=function(_0x107de8){return!_['includes']([_0xe524('0x64'),_0xe524('0x65'),'IS\x20EMPTY',_0xe524('0x67')],_0x107de8);};var _0x458e14=function(_0x4e0886){if(!_0x4e0886||!_0x4e0886['rules'][_0xe524('0x3c')]){return'';}for(var _0x3639cf='(',_0x575c14=0x0;_0x575c14<_0x4e0886['rules'][_0xe524('0x3c')];_0x575c14+=0x1){_0x575c14>0x0&&(_0x3639cf+='\x20'+_0x4e0886['operator']+'\x20');_0x3639cf+=_0x4e0886['rules'][_0x575c14]['group']?_0x458e14(_0x4e0886[_0xe524('0x68')][_0x575c14][_0xe524('0x6a')]):_0x4e0886[_0xe524('0x68')][_0x575c14][_0xe524('0x6b')]+'\x20'+_0x4e0886['rules'][_0x575c14]['condition']+(_0x39998a(_0x4e0886['rules'][_0x575c14][_0xe524('0x6c')])?'\x20'+_0x4e0886[_0xe524('0x68')][_0x575c14][_0xe524('0x6d')]:'');}return _0x3639cf+')';};var _0x289720={'where':{'id':_0x4505de[_0xe524('0x54')]['id']}},_0x3fb45c,_0x3362fe,_0x119684,_0x19e4fd,_0x4b4349;_0x289720=_[_0xe524('0x42')]({},_0x289720,_0x4505de[_0xe524('0x45')]);return db[_0xe524('0x32')][_0xe524('0x4e')](_0x289720)[_0xe524('0x27')](function(_0x404a49){if(_0x404a49){_0x3fb45c=_0x404a49;return _0x404a49[_0xe524('0x8b')]();}return null;})[_0xe524('0x27')](function(_0x8e8087){if(_0x8e8087){if(!_0x8e8087['length']){throw new db[(_0xe524('0x6e'))][(_0xe524('0x6f'))](_0xe524('0x70'),0x193);}_0x3362fe=_0x8e8087;return db[_0xe524('0x71')][_0xe524('0x48')]({'raw':!![]});}return null;})[_0xe524('0x27')](function(_0x113a54){if(_0x113a54){_0x119684=_[_0xe524('0x72')](_0x113a54,'id');var _0x4ebca4;var _0x40043c=squel[_0xe524('0x73')]();_0x40043c[_0xe524('0x8c')](_0x3fb45c[_0xe524('0x74')]);for(var _0x19a773=0x0;_0x19a773<_0x3362fe[_0xe524('0x3c')];_0x19a773+=0x1){_0x4ebca4=_0x3362fe[_0x19a773][_0xe524('0x75')]?_0x119684[_0x3362fe[_0x19a773][_0xe524('0x75')]][_0xe524('0x76')]:_0x3362fe[_0x19a773][_0xe524('0x6b')];_0x4ebca4=_0x3362fe[_0x19a773][_0xe524('0x77')]?_[_0xe524('0x78')](_0x280022[_0x3362fe[_0x19a773]['function']],'%s',_0x4ebca4):_0x4ebca4;_0x4ebca4=_0x3362fe[_0x19a773][_0xe524('0x79')]?_[_0xe524('0x78')](_0x46d6da[_0x3362fe[_0x19a773][_0xe524('0x79')]],'%s',_0x4ebca4):_0x4ebca4;if(_0x3362fe[_0x19a773]['groupBy']){_0x40043c['group'](_0x4ebca4);}_0x3362fe[_0x19a773][_0xe524('0x7b')]&&_0x40043c[_0xe524('0x3e')](_0x4ebca4,_0x3362fe[_0x19a773][_0xe524('0x7b')]==='DESC'?![]:!![]);_0x40043c[_0xe524('0x6b')](_0x4ebca4,_0x3362fe[_0x19a773][_0xe524('0x7d')]||_0x4ebca4);}if(_0x3fb45c[_0xe524('0x7e')]){_0x3fb45c['joins']=JSON['parse'](_0x3fb45c[_0xe524('0x7e')]);for(var _0x2a85e5=0x0;_0x2a85e5<_0x3fb45c[_0xe524('0x7e')]['length'];_0x2a85e5+=0x1){if(_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x34')]&&_[_0xe524('0x63')](_0x483307,_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x34')])&&_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x80')]&&_0x3fb45c['joins'][_0x2a85e5][_0xe524('0x82')]&&_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x81')]){_0x40043c[_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x34')]](_0x3fb45c['joins'][_0x2a85e5][_0xe524('0x82')],null,util[_0xe524('0x79')]('%s.%s\x20=\x20%s.%s',_0x3fb45c[_0xe524('0x74')],_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x80')],_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x82')],_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x81')]));}}}if(_0x3fb45c[_0xe524('0x84')]){_0x3fb45c[_0xe524('0x84')]=JSON['parse'](_0x3fb45c['conditions']);_0x40043c[_0xe524('0x40')](_0x458e14(_0x3fb45c[_0xe524('0x84')][_0xe524('0x6a')]));}_0x4b4349=_0x40043c[_0xe524('0x8d')]();_0x40043c[_0xe524('0x20')](_0x2d24c1);_0x40043c[_0xe524('0x1e')](0x0);logger[_0xe524('0xa5')]('Limited\x20Query:',_0x40043c['toString']());return dbH[_0xe524('0x86')]['query'](_0x40043c['toString'](),{'type':dbH[_0xe524('0x86')][_0xe524('0x9f')][_0xe524('0xa0')]});}})[_0xe524('0x27')](function(){return{'sql':_0x4b4349[_0xe524('0x87')]()};})[_0xe524('0x27')](respondWithResult(_0x292f14,null))['catch'](handleError(_0x292f14,null));};
\ No newline at end of file
index 56261bc..55eb3ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03af=['bluebird','request-promise','rimraf','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api'];(function(_0x2f4d89,_0x22db3a){var _0x1032dd=function(_0x1f9d00){while(--_0x1f9d00){_0x2f4d89['push'](_0x2f4d89['shift']());}};_0x1032dd(++_0x22db3a);}(_0x03af,0xa1));var _0xf03a=function(_0x43ad1f,_0x46d3b7){_0x43ad1f=_0x43ad1f-0x0;var _0x40b4db=_0x03af[_0x43ad1f];return _0x40b4db;};'use strict';var _=require(_0xf03a('0x0'));var util=require(_0xf03a('0x1'));var logger=require(_0xf03a('0x2'))(_0xf03a('0x3'));var moment=require('moment');var BPromise=require(_0xf03a('0x4'));var rp=require(_0xf03a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf03a('0x6'));var config=require('../../config/environment');var attributes=require(_0xf03a('0x7'));module[_0xf03a('0x8')]=function(_0xc859b3,_0x4fbe06){return _0xc859b3['define'](_0xf03a('0x9'),attributes,{'tableName':_0xf03a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9f8=['util','api','moment','bluebird','path','rimraf','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash'];(function(_0x3a522d,_0x54e1d7){var _0x275450=function(_0x58b515){while(--_0x58b515){_0x3a522d['push'](_0x3a522d['shift']());}};_0x275450(++_0x54e1d7);}(_0xf9f8,0x13e));var _0x8f9f=function(_0x1968ff,_0xab1332){_0x1968ff=_0x1968ff-0x0;var _0x124071=_0xf9f8[_0x1968ff];return _0x124071;};'use strict';var _=require(_0x8f9f('0x0'));var util=require(_0x8f9f('0x1'));var logger=require('../../config/logger')(_0x8f9f('0x2'));var moment=require(_0x8f9f('0x3'));var BPromise=require(_0x8f9f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8f9f('0x5'));var rimraf=require(_0x8f9f('0x6'));var config=require('../../config/environment');var attributes=require(_0x8f9f('0x7'));module['exports']=function(_0x3d8abc,_0x49e3ac){return _0x3d8abc[_0x8f9f('0x8')](_0x8f9f('0x9'),attributes,{'tableName':_0x8f9f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3ac8dc9..778d6bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eac=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','util'];(function(_0x28518c,_0x5dabb0){var _0x8e3945=function(_0x5eb25f){while(--_0x5eb25f){_0x28518c['push'](_0x28518c['shift']());}};_0x8e3945(++_0x5dabb0);}(_0x3eac,0x77));var _0xc3ea=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x3eac[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require('lodash');var util=require(_0xc3ea('0x0'));var moment=require(_0xc3ea('0x1'));var BPromise=require('bluebird');var rs=require(_0xc3ea('0x2'));var fs=require('fs');var Redis=require(_0xc3ea('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xc3ea('0x4'));var logger=require(_0xc3ea('0x5'))(_0xc3ea('0x6'));var config=require(_0xc3ea('0x7'));var jayson=require(_0xc3ea('0x8'));var client=jayson['client'][_0xc3ea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ba183,_0x1f6a55,_0x552024){return new BPromise(function(_0xf60118,_0x2d89da){return client[_0xc3ea('0xa')](_0x4ba183,_0x552024)[_0xc3ea('0xb')](function(_0x4e995f){logger['info'](_0xc3ea('0xc'),_0x1f6a55,_0xc3ea('0xd'));logger['debug'](_0xc3ea('0xe'),_0x1f6a55,_0xc3ea('0xd'),JSON[_0xc3ea('0xf')](_0x4e995f));if(_0x4e995f[_0xc3ea('0x10')]){if(_0x4e995f[_0xc3ea('0x10')][_0xc3ea('0x11')]===0x1f4){logger['error'](_0xc3ea('0xc'),_0x1f6a55,_0x4e995f[_0xc3ea('0x10')][_0xc3ea('0x12')]);return _0x2d89da(_0x4e995f[_0xc3ea('0x10')][_0xc3ea('0x12')]);}logger[_0xc3ea('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x1f6a55,_0x4e995f[_0xc3ea('0x10')]['message']);return _0xf60118(_0x4e995f['error'][_0xc3ea('0x12')]);}else{logger[_0xc3ea('0x13')](_0xc3ea('0xc'),_0x1f6a55,_0xc3ea('0xd'));_0xf60118(_0x4e995f['result']['message']);}})['catch'](function(_0x864853){logger[_0xc3ea('0x10')](_0xc3ea('0xc'),_0x1f6a55,_0x864853);_0x2d89da(_0x864853);});});}
\ No newline at end of file
+var _0xd486=['request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4ec2d4,_0x28a1b9){var _0x2c6af8=function(_0x25633c){while(--_0x25633c){_0x4ec2d4['push'](_0x4ec2d4['shift']());}};_0x2c6af8(++_0x28a1b9);}(_0xd486,0x1c4));var _0x6d48=function(_0x1ed6e7,_0x2cbf0a){_0x1ed6e7=_0x1ed6e7-0x0;var _0x26b71a=_0xd486[_0x1ed6e7];return _0x26b71a;};'use strict';var _=require('lodash');var util=require(_0x6d48('0x0'));var moment=require('moment');var BPromise=require(_0x6d48('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d48('0x2'));var db=require(_0x6d48('0x3'))['db'];var utils=require(_0x6d48('0x4'));var logger=require('../../config/logger')(_0x6d48('0x5'));var config=require(_0x6d48('0x6'));var jayson=require(_0x6d48('0x7'));var client=jayson[_0x6d48('0x8')][_0x6d48('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x346d02,_0x4f2c9b,_0x480096){return new BPromise(function(_0xb7b95b,_0x3eef37){return client[_0x6d48('0xa')](_0x346d02,_0x480096)[_0x6d48('0xb')](function(_0x595aae){logger[_0x6d48('0xc')](_0x6d48('0xd'),_0x4f2c9b,_0x6d48('0xe'));logger[_0x6d48('0xf')](_0x6d48('0x10'),_0x4f2c9b,_0x6d48('0xe'),JSON[_0x6d48('0x11')](_0x595aae));if(_0x595aae['error']){if(_0x595aae[_0x6d48('0x12')][_0x6d48('0x13')]===0x1f4){logger[_0x6d48('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x4f2c9b,_0x595aae[_0x6d48('0x12')][_0x6d48('0x14')]);return _0x3eef37(_0x595aae[_0x6d48('0x12')][_0x6d48('0x14')]);}logger['error'](_0x6d48('0xd'),_0x4f2c9b,_0x595aae[_0x6d48('0x12')][_0x6d48('0x14')]);return _0xb7b95b(_0x595aae[_0x6d48('0x12')][_0x6d48('0x14')]);}else{logger[_0x6d48('0xc')](_0x6d48('0xd'),_0x4f2c9b,_0x6d48('0xe'));_0xb7b95b(_0x595aae[_0x6d48('0x15')]['message']);}})['catch'](function(_0x17f3fa){logger[_0x6d48('0x12')](_0x6d48('0xd'),_0x4f2c9b,_0x17f3fa);_0x3eef37(_0x17f3fa);});});}
\ No newline at end of file
index 08ccc77..c2ea49e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5351=['post','put','update','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','index','get','/:id','isAuthenticated','/:id/preview','/:id/run','run','/:id/query','query'];(function(_0x486ef4,_0x1e3abd){var _0x2f4ba3=function(_0x48f7f7){while(--_0x48f7f7){_0x486ef4['push'](_0x486ef4['shift']());}};_0x2f4ba3(++_0x1e3abd);}(_0x5351,0x1d1));var _0x1535=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5351[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0x1535('0x0'));var path=require(_0x1535('0x1'));var timeout=require(_0x1535('0x2'));var express=require(_0x1535('0x3'));var router=express[_0x1535('0x4')]();var fs_extra=require(_0x1535('0x5'));var auth=require(_0x1535('0x6'));var interaction=require(_0x1535('0x7'));var config=require(_0x1535('0x8'));var controller=require(_0x1535('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x1535('0xa')]);router[_0x1535('0xb')](_0x1535('0xc'),auth[_0x1535('0xd')](),controller['show']);router[_0x1535('0xb')](_0x1535('0xe'),auth[_0x1535('0xd')](),controller['preview']);router[_0x1535('0xb')](_0x1535('0xf'),auth[_0x1535('0xd')](),controller[_0x1535('0x10')]);router['get'](_0x1535('0x11'),auth['isAuthenticated'](),controller[_0x1535('0x12')]);router[_0x1535('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1535('0x14')](_0x1535('0xc'),auth['isAuthenticated'](),controller[_0x1535('0x15')]);router['delete'](_0x1535('0xc'),auth[_0x1535('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xac77=['../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','index','/:id','isAuthenticated','show','/:id/preview','preview','/:id/run','run','/:id/query','query','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xac77,0xb8));var _0x7ac7=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xac77[_0x465a0c];return _0x1e202e;};'use strict';var multer=require(_0x7ac7('0x0'));var util=require(_0x7ac7('0x1'));var path=require(_0x7ac7('0x2'));var timeout=require(_0x7ac7('0x3'));var express=require(_0x7ac7('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x7ac7('0x5'));var interaction=require(_0x7ac7('0x6'));var config=require(_0x7ac7('0x7'));var controller=require(_0x7ac7('0x8'));router[_0x7ac7('0x9')]('/',auth['isAuthenticated'](),controller[_0x7ac7('0xa')]);router['get'](_0x7ac7('0xb'),auth[_0x7ac7('0xc')](),controller[_0x7ac7('0xd')]);router[_0x7ac7('0x9')](_0x7ac7('0xe'),auth['isAuthenticated'](),controller[_0x7ac7('0xf')]);router['get'](_0x7ac7('0x10'),auth[_0x7ac7('0xc')](),controller[_0x7ac7('0x11')]);router[_0x7ac7('0x9')](_0x7ac7('0x12'),auth['isAuthenticated'](),controller[_0x7ac7('0x13')]);router[_0x7ac7('0x14')]('/',auth[_0x7ac7('0xc')](),controller[_0x7ac7('0x15')]);router[_0x7ac7('0x16')](_0x7ac7('0xb'),auth[_0x7ac7('0xc')](),controller[_0x7ac7('0x17')]);router[_0x7ac7('0x18')]('/:id',auth[_0x7ac7('0xc')](),controller[_0x7ac7('0x19')]);module[_0x7ac7('0x1a')]=router;
\ No newline at end of file
index 741e021..b21e7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5a7=['UNSIGNED','sequelize','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual'];(function(_0x1ae371,_0x372bd1){var _0x38835f=function(_0x2ab8b3){while(--_0x2ab8b3){_0x1ae371['push'](_0x1ae371['shift']());}};_0x38835f(++_0x372bd1);}(_0xd5a7,0xfd));var _0x7d5a=function(_0x5be56f,_0x3cafe3){_0x5be56f=_0x5be56f-0x0;var _0x40cba2=_0xd5a7[_0x5be56f];return _0x40cba2;};'use strict';var Sequelize=require(_0x7d5a('0x0'));var moment=require(_0x7d5a('0x1'));module[_0x7d5a('0x2')]={'name':{'type':Sequelize[_0x7d5a('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x7d5a('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x7d5a('0x4')](_0x7d5a('0x5'),_0x7d5a('0x6'),_0x7d5a('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x7d5a('0x8')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x7d5a('0x9')},'type':{'type':Sequelize['ENUM'](_0x7d5a('0xa'),'scheduled'),'allowNull':![],'defaultValue':_0x7d5a('0xa')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x7d5a('0xb')]},'reportType':{'type':Sequelize[_0x7d5a('0x3')]}};
\ No newline at end of file
+var _0x3fe1=['manual','scheduled','INTEGER','UNSIGNED','sequelize','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading'];(function(_0x95dea4,_0x50e38e){var _0x366f2e=function(_0x2098f7){while(--_0x2098f7){_0x95dea4['push'](_0x95dea4['shift']());}};_0x366f2e(++_0x50e38e);}(_0x3fe1,0xfb));var _0x13fe=function(_0xcc6216,_0x10e52e){_0xcc6216=_0xcc6216-0x0;var _0x1bc680=_0x3fe1[_0xcc6216];return _0x1bc680;};'use strict';var Sequelize=require(_0x13fe('0x0'));var moment=require('moment');module[_0x13fe('0x1')]={'name':{'type':Sequelize[_0x13fe('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x13fe('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x13fe('0x3')](_0x13fe('0x4'),_0x13fe('0x5'),_0x13fe('0x6')),'allowNull':![],'defaultValue':_0x13fe('0x4')},'savename':{'type':Sequelize[_0x13fe('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x13fe('0x7')]},'endDate':{'type':Sequelize[_0x13fe('0x7')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x13fe('0x8')},'type':{'type':Sequelize[_0x13fe('0x3')](_0x13fe('0x9'),_0x13fe('0xa')),'allowNull':![],'defaultValue':_0x13fe('0x9')},'reportId':{'type':Sequelize[_0x13fe('0xb')](0xb)[_0x13fe('0xc')]},'reportType':{'type':Sequelize[_0x13fe('0x2')]}};
\ No newline at end of file
index 3c86cb8..2c669ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba1=['index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','ExtractedReports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','join','root','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','server/files/reports','format','%s.%s','toLowerCase','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','then','UserProfileResource','destroy','end','error','stack','name'];(function(_0x2b2697,_0x5b88f5){var _0x2efa47=function(_0x26ab5c){while(--_0x26ab5c){_0x2b2697['push'](_0x2b2697['shift']());}};_0x2efa47(++_0x5b88f5);}(_0x2ba1,0x1af));var _0x12ba=function(_0x24ccef,_0x73b427){_0x24ccef=_0x24ccef-0x0;var _0x1196e9=_0x2ba1[_0x24ccef];return _0x1196e9;};'use strict';var emlformat=require(_0x12ba('0x0'));var rimraf=require(_0x12ba('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x12ba('0x2'));var rp=require('request-promise');var moment=require(_0x12ba('0x3'));var BPromise=require(_0x12ba('0x4'));var Mustache=require(_0x12ba('0x5'));var util=require(_0x12ba('0x6'));var path=require(_0x12ba('0x7'));var sox=require('sox');var csv=require(_0x12ba('0x8'));var ejs=require(_0x12ba('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x12ba('0xa'));var crypto=require('crypto');var jsforce=require(_0x12ba('0xb'));var deskjs=require(_0x12ba('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x12ba('0xd'));var authService=require(_0x12ba('0xe'));var qs=require(_0x12ba('0xf'));var as=require(_0x12ba('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x12ba('0x11'));var config=require(_0x12ba('0x12'));var licenseUtil=require(_0x12ba('0x13'));var db=require(_0x12ba('0x14'))['db'];function respondWithStatusCode(_0x3f7628,_0x313446){_0x313446=_0x313446||0xcc;return function(_0x5e584f){if(_0x5e584f){return _0x3f7628[_0x12ba('0x15')](_0x313446);}return _0x3f7628['status'](_0x313446)['end']();};}function respondWithResult(_0x3b059c,_0x5071a4){_0x5071a4=_0x5071a4||0xc8;return function(_0x5dd9b0){if(_0x5dd9b0){return _0x3b059c[_0x12ba('0x16')](_0x5071a4)[_0x12ba('0x17')](_0x5dd9b0);}};}function respondWithFilteredResult(_0xdd88b5,_0x52ed75){return function(_0x196ddb){if(_0x196ddb){var _0x5d8f85=typeof _0x52ed75[_0x12ba('0x18')]===_0x12ba('0x19')&&typeof _0x52ed75[_0x12ba('0x1a')]==='undefined';var _0x4e1c9c=_0x196ddb[_0x12ba('0x1b')];var _0xfb86ee=_0x5d8f85?0x0:_0x52ed75[_0x12ba('0x18')];var _0x4d6212=_0x5d8f85?_0x196ddb[_0x12ba('0x1b')]:_0x52ed75[_0x12ba('0x18')]+_0x52ed75[_0x12ba('0x1a')];var _0x128a47;if(_0x4d6212>=_0x4e1c9c){_0x4d6212=_0x4e1c9c;_0x128a47=0xc8;}else{_0x128a47=0xce;}_0xdd88b5['status'](_0x128a47);return _0xdd88b5[_0x12ba('0x1c')]('Content-Range',_0xfb86ee+'-'+_0x4d6212+'/'+_0x4e1c9c)[_0x12ba('0x17')](_0x196ddb);}return null;};}function patchUpdates(_0x29946c){return function(_0x3afe80){try{jsonpatch[_0x12ba('0x1d')](_0x3afe80,_0x29946c,!![]);}catch(_0x19872a){return BPromise[_0x12ba('0x1e')](_0x19872a);}return _0x3afe80[_0x12ba('0x1f')]();};}function saveUpdates(_0x4399f7,_0x5fcd8c){return function(_0x530ad0){if(_0x530ad0){return _0x530ad0['update'](_0x4399f7)[_0x12ba('0x20')](function(_0x4dd400){return _0x4dd400;});}return null;};}function removeEntity(_0x4e0680,_0x54b310){return function(_0x17d78d){if(_0x17d78d){return _0x17d78d['destroy']()[_0x12ba('0x20')](function(){var _0x537852=_0x17d78d['get']({'plain':!![]});var _0x9f29a9='ExtractedReports';return db[_0x12ba('0x21')][_0x12ba('0x22')]({'where':{'type':_0x9f29a9,'resourceId':_0x537852['id']}})[_0x12ba('0x20')](function(){return _0x17d78d;});})[_0x12ba('0x20')](function(){_0x4e0680[_0x12ba('0x16')](0xcc)[_0x12ba('0x23')]();});}};}function handleEntityNotFound(_0x1db756,_0x2dc611){return function(_0x1ad226){if(!_0x1ad226){_0x1db756['sendStatus'](0x194);}return _0x1ad226;};}function handleError(_0x380274,_0x5dc6f9){_0x5dc6f9=_0x5dc6f9||0x1f4;return function(_0xea9399){logger[_0x12ba('0x24')](_0xea9399[_0x12ba('0x25')]);if(_0xea9399['name']){delete _0xea9399[_0x12ba('0x26')];}_0x380274['status'](_0x5dc6f9)['send'](_0xea9399);};}exports[_0x12ba('0x27')]=function(_0x1c5f99,_0x14f5ab){var _0x349fc7={},_0x36846e={},_0x565f53={'count':0x0,'rows':[]};var _0xf5d3=_[_0x12ba('0x28')](db[_0x12ba('0x29')][_0x12ba('0x2a')],function(_0x516c2f){return{'name':_0x516c2f[_0x12ba('0x2b')],'type':_0x516c2f[_0x12ba('0x2c')]['key']};});_0x36846e[_0x12ba('0x2d')]=_['map'](_0xf5d3,_0x12ba('0x26'));_0x36846e[_0x12ba('0x2e')]=_[_0x12ba('0x2f')](_0x1c5f99[_0x12ba('0x2e')]);_0x36846e[_0x12ba('0x30')]=_[_0x12ba('0x31')](_0x36846e['model'],_0x36846e[_0x12ba('0x2e')]);_0x349fc7[_0x12ba('0x32')]=_[_0x12ba('0x31')](_0x36846e['model'],qs[_0x12ba('0x33')](_0x1c5f99[_0x12ba('0x2e')][_0x12ba('0x33')]));_0x349fc7[_0x12ba('0x32')]=_0x349fc7[_0x12ba('0x32')]['length']?_0x349fc7[_0x12ba('0x32')]:_0x36846e[_0x12ba('0x2d')];if(!_0x1c5f99[_0x12ba('0x2e')][_0x12ba('0x34')](_0x12ba('0x35'))){_0x349fc7[_0x12ba('0x1a')]=qs[_0x12ba('0x1a')](_0x1c5f99[_0x12ba('0x2e')][_0x12ba('0x1a')]);_0x349fc7[_0x12ba('0x18')]=qs[_0x12ba('0x18')](_0x1c5f99[_0x12ba('0x2e')][_0x12ba('0x18')]);}_0x349fc7[_0x12ba('0x36')]=qs[_0x12ba('0x37')](_0x1c5f99[_0x12ba('0x2e')]['sort']);_0x349fc7['where']=qs[_0x12ba('0x30')](_[_0x12ba('0x38')](_0x1c5f99[_0x12ba('0x2e')],_0x36846e['filters']),_0xf5d3);if(_0x1c5f99['query'][_0x12ba('0x39')]){_0x349fc7[_0x12ba('0x3a')]=_[_0x12ba('0x3b')](_0x349fc7[_0x12ba('0x3a')],{'$or':_[_0x12ba('0x28')](_0xf5d3,function(_0x3ca882){if(_0x3ca882[_0x12ba('0x2c')]!==_0x12ba('0x3c')){var _0x235a01={};_0x235a01[_0x3ca882[_0x12ba('0x26')]]={'$like':'%'+_0x1c5f99[_0x12ba('0x2e')]['filter']+'%'};return _0x235a01;}})});}_0x349fc7=_['merge']({},_0x349fc7,_0x1c5f99[_0x12ba('0x3d')]);var _0x1c5f25={'where':_0x349fc7[_0x12ba('0x3a')]};return db[_0x12ba('0x29')][_0x12ba('0x1b')](_0x1c5f25)[_0x12ba('0x20')](function(_0x3eded7){_0x565f53['count']=_0x3eded7;if(_0x1c5f99['query'][_0x12ba('0x3e')]){_0x349fc7[_0x12ba('0x3f')]=[{'all':!![]}];}return db[_0x12ba('0x29')][_0x12ba('0x40')](_0x349fc7);})['then'](function(_0x4c6680){_0x565f53['rows']=_0x4c6680;return _0x565f53;})[_0x12ba('0x20')](respondWithFilteredResult(_0x14f5ab,_0x349fc7))[_0x12ba('0x41')](handleError(_0x14f5ab,null));};exports['show']=function(_0x3dd92d,_0x50ebd8){var _0x50c6da={'raw':!![],'where':{'id':_0x3dd92d[_0x12ba('0x42')]['id']}},_0x5e26ed={};_0x5e26ed[_0x12ba('0x2d')]=_['keys'](db[_0x12ba('0x29')][_0x12ba('0x2a')]);_0x5e26ed[_0x12ba('0x2e')]=_[_0x12ba('0x2f')](_0x3dd92d['query']);_0x5e26ed[_0x12ba('0x30')]=_[_0x12ba('0x31')](_0x5e26ed[_0x12ba('0x2d')],_0x5e26ed[_0x12ba('0x2e')]);_0x50c6da[_0x12ba('0x32')]=_[_0x12ba('0x31')](_0x5e26ed[_0x12ba('0x2d')],qs[_0x12ba('0x33')](_0x3dd92d[_0x12ba('0x2e')]['fields']));_0x50c6da[_0x12ba('0x32')]=_0x50c6da[_0x12ba('0x32')]['length']?_0x50c6da['attributes']:_0x5e26ed[_0x12ba('0x2d')];if(_0x3dd92d['query']['includeAll']){_0x50c6da[_0x12ba('0x3f')]=[{'all':!![]}];}_0x50c6da=_[_0x12ba('0x3b')]({},_0x50c6da,_0x3dd92d['options']);return db[_0x12ba('0x29')][_0x12ba('0x43')](_0x50c6da)['then'](handleEntityNotFound(_0x50ebd8,null))[_0x12ba('0x20')](respondWithResult(_0x50ebd8,null))[_0x12ba('0x41')](handleError(_0x50ebd8,null));};exports[_0x12ba('0x44')]=function(_0xb40971,_0x2033a5){return db[_0x12ba('0x29')][_0x12ba('0x44')](_0xb40971[_0x12ba('0x45')],{})[_0x12ba('0x20')](function(_0x37d7d4){var _0x4ef0c4=_0xb40971[_0x12ba('0x46')]['get']({'plain':!![]});if(!_0x4ef0c4)throw new Error(_0x12ba('0x47'));if(_0x4ef0c4[_0x12ba('0x48')]===_0x12ba('0x46')){var _0xf8e26e=_0x37d7d4[_0x12ba('0x49')]({'plain':!![]});var _0x106513=_0x12ba('0x4a');return db[_0x12ba('0x4b')][_0x12ba('0x43')]({'where':{'name':_0x106513,'userProfileId':_0x4ef0c4[_0x12ba('0x4c')]},'raw':!![]})[_0x12ba('0x20')](function(_0x36d12f){if(_0x36d12f&&_0x36d12f[_0x12ba('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0xf8e26e[_0x12ba('0x26')],'resourceId':_0xf8e26e['id'],'type':_0x36d12f[_0x12ba('0x26')],'sectionId':_0x36d12f['id']},{})[_0x12ba('0x20')](function(){return _0x37d7d4;});}else{return _0x37d7d4;}})[_0x12ba('0x41')](function(_0x505267){logger[_0x12ba('0x24')](_0x12ba('0x4e'),_0x505267);throw _0x505267;});}return _0x37d7d4;})['then'](respondWithResult(_0x2033a5,0xc9))[_0x12ba('0x41')](handleError(_0x2033a5,null));};exports['update']=function(_0x347d22,_0x33ee37){if(_0x347d22[_0x12ba('0x45')]['id']){delete _0x347d22[_0x12ba('0x45')]['id'];}return db[_0x12ba('0x29')][_0x12ba('0x43')]({'where':{'id':_0x347d22[_0x12ba('0x42')]['id']}})[_0x12ba('0x20')](handleEntityNotFound(_0x33ee37,null))[_0x12ba('0x20')](saveUpdates(_0x347d22[_0x12ba('0x45')],null))[_0x12ba('0x20')](respondWithResult(_0x33ee37,null))[_0x12ba('0x41')](handleError(_0x33ee37,null));};exports[_0x12ba('0x22')]=function(_0x3ed594,_0x443d87){return db[_0x12ba('0x29')][_0x12ba('0x43')]({'where':{'id':_0x3ed594[_0x12ba('0x42')]['id']}})[_0x12ba('0x20')](handleEntityNotFound(_0x443d87,null))[_0x12ba('0x20')](removeEntity(_0x443d87,null))['catch'](handleError(_0x443d87,null));};exports[_0x12ba('0x4f')]=function(_0x4af980,_0x50d3ed,_0x1625e5){return db[_0x12ba('0x29')]['find']({'where':{'id':_0x4af980[_0x12ba('0x42')]['id']},'attributes':[_0x12ba('0x26'),_0x12ba('0x50'),_0x12ba('0x51'),_0x12ba('0x52')],'raw':!![]})[_0x12ba('0x20')](handleEntityNotFound(_0x50d3ed,null))['then'](function(_0x2b5bd3){if(_0x2b5bd3){if(!fs[_0x12ba('0x53')](path[_0x12ba('0x54')](config[_0x12ba('0x55')],'server/files/reports',_0x2b5bd3['savename']))){throw new db[(_0x12ba('0x56'))][(_0x12ba('0x57'))](_0x12ba('0x58'));}if(_0x4af980[_0x12ba('0x2e')][_0x12ba('0x59')]){return _0x50d3ed[_0x12ba('0x15')](0xc8);}return _0x50d3ed[_0x12ba('0x4f')](path[_0x12ba('0x54')](config['root'],_0x12ba('0x5a'),_0x2b5bd3[_0x12ba('0x51')]),util[_0x12ba('0x5b')](_0x12ba('0x5c'),_0x2b5bd3[_0x12ba('0x50')]||_0x2b5bd3[_0x12ba('0x26')],_0x2b5bd3['output'][_0x12ba('0x5d')]()));}})[_0x12ba('0x41')](handleError(_0x50d3ed,null));};
\ No newline at end of file
+var _0x1420=['sox','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticExtractedReport','findAll','rows','catch','params','fields','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','ExtractedReports','UserProfileSection','find','download','existsSync','join','savename','Sequelize','ValidationError','exists','root','server/files/reports','format','%s.%s','basename','output','toLowerCase','eml-format','fast-json-patch','bluebird','mustache','util','path'];(function(_0x335202,_0x16d8a7){var _0x93ca72=function(_0x3074a1){while(--_0x3074a1){_0x335202['push'](_0x335202['shift']());}};_0x93ca72(++_0x16d8a7);}(_0x1420,0x176));var _0x0142=function(_0x5f21a9,_0x228a72){_0x5f21a9=_0x5f21a9-0x0;var _0x41d2a2=_0x1420[_0x5f21a9];return _0x41d2a2;};'use strict';var emlformat=require(_0x0142('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0142('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0142('0x2'));var Mustache=require(_0x0142('0x3'));var util=require(_0x0142('0x4'));var path=require(_0x0142('0x5'));var sox=require(_0x0142('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0142('0x7'));var _=require('lodash');var squel=require(_0x0142('0x8'));var crypto=require(_0x0142('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x0142('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0142('0xb'));var Redis=require(_0x0142('0xc'));var authService=require(_0x0142('0xd'));var qs=require(_0x0142('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0142('0xf'));var logger=require(_0x0142('0x10'))(_0x0142('0x11'));var utils=require(_0x0142('0x12'));var config=require(_0x0142('0x13'));var licenseUtil=require(_0x0142('0x14'));var db=require(_0x0142('0x15'))['db'];function respondWithStatusCode(_0x3e17da,_0xc11802){_0xc11802=_0xc11802||0xcc;return function(_0x102a7a){if(_0x102a7a){return _0x3e17da['sendStatus'](_0xc11802);}return _0x3e17da[_0x0142('0x16')](_0xc11802)['end']();};}function respondWithResult(_0x48b207,_0x9ba3aa){_0x9ba3aa=_0x9ba3aa||0xc8;return function(_0x433a3b){if(_0x433a3b){return _0x48b207['status'](_0x9ba3aa)[_0x0142('0x17')](_0x433a3b);}};}function respondWithFilteredResult(_0x5b67cc,_0x55916a){return function(_0x226f86){if(_0x226f86){var _0x35be8b=typeof _0x55916a[_0x0142('0x18')]===_0x0142('0x19')&&typeof _0x55916a['limit']===_0x0142('0x19');var _0x53950b=_0x226f86[_0x0142('0x1a')];var _0x50211c=_0x35be8b?0x0:_0x55916a[_0x0142('0x18')];var _0x3a5167=_0x35be8b?_0x226f86['count']:_0x55916a[_0x0142('0x18')]+_0x55916a['limit'];var _0x42ee48;if(_0x3a5167>=_0x53950b){_0x3a5167=_0x53950b;_0x42ee48=0xc8;}else{_0x42ee48=0xce;}_0x5b67cc['status'](_0x42ee48);return _0x5b67cc[_0x0142('0x1b')](_0x0142('0x1c'),_0x50211c+'-'+_0x3a5167+'/'+_0x53950b)['json'](_0x226f86);}return null;};}function patchUpdates(_0x23b658){return function(_0x142cd2){try{jsonpatch['apply'](_0x142cd2,_0x23b658,!![]);}catch(_0x3ff2fa){return BPromise[_0x0142('0x1d')](_0x3ff2fa);}return _0x142cd2['save']();};}function saveUpdates(_0x2cff9e,_0x5517c8){return function(_0x2a48bb){if(_0x2a48bb){return _0x2a48bb[_0x0142('0x1e')](_0x2cff9e)[_0x0142('0x1f')](function(_0x41406a){return _0x41406a;});}return null;};}function removeEntity(_0x336bd3,_0x9600d4){return function(_0x298da2){if(_0x298da2){return _0x298da2[_0x0142('0x20')]()[_0x0142('0x1f')](function(){var _0x570d86=_0x298da2['get']({'plain':!![]});var _0x1ced64='ExtractedReports';return db[_0x0142('0x21')][_0x0142('0x20')]({'where':{'type':_0x1ced64,'resourceId':_0x570d86['id']}})['then'](function(){return _0x298da2;});})[_0x0142('0x1f')](function(){_0x336bd3[_0x0142('0x16')](0xcc)[_0x0142('0x22')]();});}};}function handleEntityNotFound(_0x479313,_0xd1a052){return function(_0x33069b){if(!_0x33069b){_0x479313[_0x0142('0x23')](0x194);}return _0x33069b;};}function handleError(_0x2838a6,_0x5632a2){_0x5632a2=_0x5632a2||0x1f4;return function(_0x113ca1){logger[_0x0142('0x24')](_0x113ca1[_0x0142('0x25')]);if(_0x113ca1[_0x0142('0x26')]){delete _0x113ca1[_0x0142('0x26')];}_0x2838a6[_0x0142('0x16')](_0x5632a2)[_0x0142('0x27')](_0x113ca1);};}exports[_0x0142('0x28')]=function(_0x50848c,_0x73e34){var _0x43787a={},_0x120fde={},_0x4ca7f1={'count':0x0,'rows':[]};var _0x43d58a=_[_0x0142('0x29')](db['AnalyticExtractedReport'][_0x0142('0x2a')],function(_0x5a7a4b){return{'name':_0x5a7a4b[_0x0142('0x2b')],'type':_0x5a7a4b[_0x0142('0x2c')][_0x0142('0x2d')]};});_0x120fde['model']=_[_0x0142('0x29')](_0x43d58a,_0x0142('0x26'));_0x120fde[_0x0142('0x2e')]=_[_0x0142('0x2f')](_0x50848c[_0x0142('0x2e')]);_0x120fde[_0x0142('0x30')]=_[_0x0142('0x31')](_0x120fde[_0x0142('0x32')],_0x120fde['query']);_0x43787a[_0x0142('0x33')]=_[_0x0142('0x31')](_0x120fde[_0x0142('0x32')],qs['fields'](_0x50848c[_0x0142('0x2e')]['fields']));_0x43787a[_0x0142('0x33')]=_0x43787a[_0x0142('0x33')][_0x0142('0x34')]?_0x43787a[_0x0142('0x33')]:_0x120fde['model'];if(!_0x50848c['query'][_0x0142('0x35')](_0x0142('0x36'))){_0x43787a[_0x0142('0x37')]=qs[_0x0142('0x37')](_0x50848c[_0x0142('0x2e')]['limit']);_0x43787a[_0x0142('0x18')]=qs[_0x0142('0x18')](_0x50848c[_0x0142('0x2e')][_0x0142('0x18')]);}_0x43787a[_0x0142('0x38')]=qs[_0x0142('0x39')](_0x50848c['query'][_0x0142('0x39')]);_0x43787a[_0x0142('0x3a')]=qs[_0x0142('0x30')](_[_0x0142('0x3b')](_0x50848c[_0x0142('0x2e')],_0x120fde[_0x0142('0x30')]),_0x43d58a);if(_0x50848c['query'][_0x0142('0x3c')]){_0x43787a[_0x0142('0x3a')]=_[_0x0142('0x3d')](_0x43787a[_0x0142('0x3a')],{'$or':_[_0x0142('0x29')](_0x43d58a,function(_0x20c6a8){if(_0x20c6a8[_0x0142('0x2c')]!==_0x0142('0x3e')){var _0x5601b6={};_0x5601b6[_0x20c6a8[_0x0142('0x26')]]={'$like':'%'+_0x50848c[_0x0142('0x2e')][_0x0142('0x3c')]+'%'};return _0x5601b6;}})});}_0x43787a=_[_0x0142('0x3d')]({},_0x43787a,_0x50848c[_0x0142('0x3f')]);var _0x484d40={'where':_0x43787a[_0x0142('0x3a')]};return db['AnalyticExtractedReport'][_0x0142('0x1a')](_0x484d40)[_0x0142('0x1f')](function(_0x34b915){_0x4ca7f1['count']=_0x34b915;if(_0x50848c[_0x0142('0x2e')][_0x0142('0x40')]){_0x43787a[_0x0142('0x41')]=[{'all':!![]}];}return db[_0x0142('0x42')][_0x0142('0x43')](_0x43787a);})['then'](function(_0x5cb504){_0x4ca7f1[_0x0142('0x44')]=_0x5cb504;return _0x4ca7f1;})['then'](respondWithFilteredResult(_0x73e34,_0x43787a))[_0x0142('0x45')](handleError(_0x73e34,null));};exports['show']=function(_0x2c75de,_0x58b629){var _0x1476c8={'raw':!![],'where':{'id':_0x2c75de[_0x0142('0x46')]['id']}},_0x51aa30={};_0x51aa30['model']=_[_0x0142('0x2f')](db[_0x0142('0x42')][_0x0142('0x2a')]);_0x51aa30['query']=_['keys'](_0x2c75de[_0x0142('0x2e')]);_0x51aa30['filters']=_[_0x0142('0x31')](_0x51aa30[_0x0142('0x32')],_0x51aa30[_0x0142('0x2e')]);_0x1476c8[_0x0142('0x33')]=_[_0x0142('0x31')](_0x51aa30[_0x0142('0x32')],qs[_0x0142('0x47')](_0x2c75de['query'][_0x0142('0x47')]));_0x1476c8[_0x0142('0x33')]=_0x1476c8[_0x0142('0x33')][_0x0142('0x34')]?_0x1476c8[_0x0142('0x33')]:_0x51aa30['model'];if(_0x2c75de[_0x0142('0x2e')][_0x0142('0x40')]){_0x1476c8[_0x0142('0x41')]=[{'all':!![]}];}_0x1476c8=_[_0x0142('0x3d')]({},_0x1476c8,_0x2c75de[_0x0142('0x3f')]);return db['AnalyticExtractedReport']['find'](_0x1476c8)['then'](handleEntityNotFound(_0x58b629,null))[_0x0142('0x1f')](respondWithResult(_0x58b629,null))[_0x0142('0x45')](handleError(_0x58b629,null));};exports[_0x0142('0x48')]=function(_0x35ddc0,_0x3cdb56){return db[_0x0142('0x42')][_0x0142('0x48')](_0x35ddc0[_0x0142('0x49')],{})[_0x0142('0x1f')](function(_0x3282a9){var _0x37378d=_0x35ddc0['user'][_0x0142('0x4a')]({'plain':!![]});if(!_0x37378d)throw new Error(_0x0142('0x4b'));if(_0x37378d[_0x0142('0x4c')]===_0x0142('0x4d')){var _0x53482c=_0x3282a9[_0x0142('0x4a')]({'plain':!![]});var _0x5e2b07=_0x0142('0x4e');return db[_0x0142('0x4f')][_0x0142('0x50')]({'where':{'name':_0x5e2b07,'userProfileId':_0x37378d['userProfileId']},'raw':!![]})[_0x0142('0x1f')](function(_0x5efa8c){if(_0x5efa8c&&_0x5efa8c['autoAssociation']===0x0){return db['UserProfileResource'][_0x0142('0x48')]({'name':_0x53482c[_0x0142('0x26')],'resourceId':_0x53482c['id'],'type':_0x5efa8c[_0x0142('0x26')],'sectionId':_0x5efa8c['id']},{})[_0x0142('0x1f')](function(){return _0x3282a9;});}else{return _0x3282a9;}})[_0x0142('0x45')](function(_0xaf6d93){logger[_0x0142('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xaf6d93);throw _0xaf6d93;});}return _0x3282a9;})[_0x0142('0x1f')](respondWithResult(_0x3cdb56,0xc9))[_0x0142('0x45')](handleError(_0x3cdb56,null));};exports['update']=function(_0x17dcdb,_0x2dfbb8){if(_0x17dcdb[_0x0142('0x49')]['id']){delete _0x17dcdb[_0x0142('0x49')]['id'];}return db['AnalyticExtractedReport'][_0x0142('0x50')]({'where':{'id':_0x17dcdb[_0x0142('0x46')]['id']}})[_0x0142('0x1f')](handleEntityNotFound(_0x2dfbb8,null))['then'](saveUpdates(_0x17dcdb[_0x0142('0x49')],null))[_0x0142('0x1f')](respondWithResult(_0x2dfbb8,null))['catch'](handleError(_0x2dfbb8,null));};exports[_0x0142('0x20')]=function(_0x113e7c,_0x60e778){return db[_0x0142('0x42')]['find']({'where':{'id':_0x113e7c['params']['id']}})[_0x0142('0x1f')](handleEntityNotFound(_0x60e778,null))['then'](removeEntity(_0x60e778,null))['catch'](handleError(_0x60e778,null));};exports[_0x0142('0x51')]=function(_0x2a28cb,_0x710c3b,_0x56c8b7){return db[_0x0142('0x42')]['find']({'where':{'id':_0x2a28cb[_0x0142('0x46')]['id']},'attributes':[_0x0142('0x26'),'basename','savename','output'],'raw':!![]})[_0x0142('0x1f')](handleEntityNotFound(_0x710c3b,null))[_0x0142('0x1f')](function(_0x258222){if(_0x258222){if(!fs[_0x0142('0x52')](path[_0x0142('0x53')](config['root'],'server/files/reports',_0x258222[_0x0142('0x54')]))){throw new db[(_0x0142('0x55'))][(_0x0142('0x56'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x2a28cb[_0x0142('0x2e')][_0x0142('0x57')]){return _0x710c3b['sendStatus'](0xc8);}return _0x710c3b['download'](path[_0x0142('0x53')](config[_0x0142('0x58')],_0x0142('0x59'),_0x258222['savename']),util[_0x0142('0x5a')](_0x0142('0x5b'),_0x258222[_0x0142('0x5c')]||_0x258222[_0x0142('0x26')],_0x258222[_0x0142('0x5d')][_0x0142('0x5e')]()));}})[_0x0142('0x45')](handleError(_0x710c3b,null));};
\ No newline at end of file
index fb211a8..53f7cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d44=['define','AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports'];(function(_0x34c122,_0x4ac121){var _0x4746aa=function(_0x5aeb4c){while(--_0x5aeb4c){_0x34c122['push'](_0x34c122['shift']());}};_0x4746aa(++_0x4ac121);}(_0x4d44,0xac));var _0x44d4=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x4d44[_0x199572];return _0x13cfa3;};'use strict';var _=require('lodash');var util=require(_0x44d4('0x0'));var logger=require(_0x44d4('0x1'))(_0x44d4('0x2'));var moment=require('moment');var BPromise=require(_0x44d4('0x3'));var rp=require(_0x44d4('0x4'));var fs=require('fs');var path=require(_0x44d4('0x5'));var rimraf=require(_0x44d4('0x6'));var config=require(_0x44d4('0x7'));var attributes=require(_0x44d4('0x8'));module[_0x44d4('0x9')]=function(_0x860bf8,_0x1997b9){return _0x860bf8[_0x44d4('0xa')](_0x44d4('0xb'),attributes,{'tableName':_0x44d4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xffd8=['define','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./analyticExtractedReport.attributes','exports'];(function(_0xc7ed9b,_0x33366b){var _0x11adbb=function(_0x1c4fcf){while(--_0x1c4fcf){_0xc7ed9b['push'](_0xc7ed9b['shift']());}};_0x11adbb(++_0x33366b);}(_0xffd8,0x109));var _0x8ffd=function(_0x36f726,_0x26822d){_0x36f726=_0x36f726-0x0;var _0x2b7a7c=_0xffd8[_0x36f726];return _0x2b7a7c;};'use strict';var _=require(_0x8ffd('0x0'));var util=require(_0x8ffd('0x1'));var logger=require(_0x8ffd('0x2'))(_0x8ffd('0x3'));var moment=require('moment');var BPromise=require(_0x8ffd('0x4'));var rp=require(_0x8ffd('0x5'));var fs=require('fs');var path=require(_0x8ffd('0x6'));var rimraf=require(_0x8ffd('0x7'));var config=require('../../config/environment');var attributes=require(_0x8ffd('0x8'));module[_0x8ffd('0x9')]=function(_0x4bb9ba,_0x169eaf){return _0x4bb9ba[_0x8ffd('0xa')]('AnalyticExtractedReport',attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c2a6e84..d729b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb7a=['../../config/environment','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x11c06e,_0x1cb9c7){var _0x20a7dc=function(_0xd192db){while(--_0xd192db){_0x11c06e['push'](_0x11c06e['shift']());}};_0x20a7dc(++_0x1cb9c7);}(_0xbb7a,0xf5));var _0xabb7=function(_0x16b088,_0x33fe44){_0x16b088=_0x16b088-0x0;var _0x54be98=_0xbb7a[_0x16b088];return _0x54be98;};'use strict';var _=require(_0xabb7('0x0'));var util=require(_0xabb7('0x1'));var moment=require('moment');var BPromise=require(_0xabb7('0x2'));var rs=require(_0xabb7('0x3'));var fs=require('fs');var Redis=require(_0xabb7('0x4'));var db=require(_0xabb7('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xabb7('0x6'))(_0xabb7('0x7'));var config=require(_0xabb7('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xabb7('0x9')][_0xabb7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x510e12,_0x5bd2e2,_0x184dce){return new BPromise(function(_0x50bb5e,_0x52c88f){return client[_0xabb7('0xb')](_0x510e12,_0x184dce)[_0xabb7('0xc')](function(_0x3c137b){logger[_0xabb7('0xd')](_0xabb7('0xe'),_0x5bd2e2,'request\x20sent');logger[_0xabb7('0xf')](_0xabb7('0x10'),_0x5bd2e2,_0xabb7('0x11'),JSON['stringify'](_0x3c137b));if(_0x3c137b[_0xabb7('0x12')]){if(_0x3c137b[_0xabb7('0x12')][_0xabb7('0x13')]===0x1f4){logger[_0xabb7('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x5bd2e2,_0x3c137b['error'][_0xabb7('0x14')]);return _0x52c88f(_0x3c137b['error']['message']);}logger['error'](_0xabb7('0xe'),_0x5bd2e2,_0x3c137b[_0xabb7('0x12')][_0xabb7('0x14')]);return _0x50bb5e(_0x3c137b[_0xabb7('0x12')][_0xabb7('0x14')]);}else{logger[_0xabb7('0xd')](_0xabb7('0xe'),_0x5bd2e2,'request\x20sent');_0x50bb5e(_0x3c137b[_0xabb7('0x15')][_0xabb7('0x14')]);}})[_0xabb7('0x16')](function(_0x4cba94){logger[_0xabb7('0x12')](_0xabb7('0xe'),_0x5bd2e2,_0x4cba94);_0x52c88f(_0x4cba94);});});}
\ No newline at end of file
+var _0xe903=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb'];(function(_0x40ad77,_0x127131){var _0x4b5f84=function(_0x2d122d){while(--_0x2d122d){_0x40ad77['push'](_0x40ad77['shift']());}};_0x4b5f84(++_0x127131);}(_0xe903,0x103));var _0x3e90=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0xe903[_0x3de8a4];return _0x4635cf;};'use strict';var _=require(_0x3e90('0x0'));var util=require(_0x3e90('0x1'));var moment=require(_0x3e90('0x2'));var BPromise=require(_0x3e90('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e90('0x4'))['db'];var utils=require(_0x3e90('0x5'));var logger=require(_0x3e90('0x6'))(_0x3e90('0x7'));var config=require(_0x3e90('0x8'));var jayson=require(_0x3e90('0x9'));var client=jayson[_0x3e90('0xa')][_0x3e90('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b1096,_0xa6e03a,_0x290402){return new BPromise(function(_0x16d3a1,_0x42f5ed){return client[_0x3e90('0xc')](_0x4b1096,_0x290402)['then'](function(_0x581bba){logger[_0x3e90('0xd')](_0x3e90('0xe'),_0xa6e03a,_0x3e90('0xf'));logger[_0x3e90('0x10')](_0x3e90('0x11'),_0xa6e03a,'request\x20sent',JSON[_0x3e90('0x12')](_0x581bba));if(_0x581bba[_0x3e90('0x13')]){if(_0x581bba['error'][_0x3e90('0x14')]===0x1f4){logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0xa6e03a,_0x581bba['error']['message']);return _0x42f5ed(_0x581bba[_0x3e90('0x13')][_0x3e90('0x15')]);}logger['error']('AnalyticExtractedReport,\x20%s,\x20%s',_0xa6e03a,_0x581bba[_0x3e90('0x13')]['message']);return _0x16d3a1(_0x581bba[_0x3e90('0x13')][_0x3e90('0x15')]);}else{logger[_0x3e90('0xd')](_0x3e90('0xe'),_0xa6e03a,'request\x20sent');_0x16d3a1(_0x581bba[_0x3e90('0x16')]['message']);}})[_0x3e90('0x17')](function(_0x6f7699){logger[_0x3e90('0x13')](_0x3e90('0xe'),_0xa6e03a,_0x6f7699);_0x42f5ed(_0x6f7699);});});}
\ No newline at end of file
index 2ce5674..54590f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3a9=['destroy','multer','path','connect-timeout','express','Router','../../config/environment','./analyticExtractedReport.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','post','put','update'];(function(_0x2a43c2,_0x532b81){var _0x47b574=function(_0x278b83){while(--_0x278b83){_0x2a43c2['push'](_0x2a43c2['shift']());}};_0x47b574(++_0x532b81);}(_0xe3a9,0x17b));var _0x9e3a=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0xe3a9[_0x200aa5];return _0x458200;};'use strict';var multer=require(_0x9e3a('0x0'));var util=require('util');var path=require(_0x9e3a('0x1'));var timeout=require(_0x9e3a('0x2'));var express=require(_0x9e3a('0x3'));var router=express[_0x9e3a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9e3a('0x5'));var controller=require(_0x9e3a('0x6'));router[_0x9e3a('0x7')]('/',auth['isAuthenticated'](),controller[_0x9e3a('0x8')]);router[_0x9e3a('0x7')](_0x9e3a('0x9'),auth[_0x9e3a('0xa')](),controller[_0x9e3a('0xb')]);router[_0x9e3a('0x7')](_0x9e3a('0xc'),auth[_0x9e3a('0xa')](),controller[_0x9e3a('0xd')]);router[_0x9e3a('0xe')]('/',auth[_0x9e3a('0xa')](),controller['create']);router[_0x9e3a('0xf')](_0x9e3a('0x9'),auth[_0x9e3a('0xa')](),controller[_0x9e3a('0x10')]);router['delete'](_0x9e3a('0x9'),auth[_0x9e3a('0xa')](),controller[_0x9e3a('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x5f2e=['post','create','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download'];(function(_0x2924f0,_0x136999){var _0x4ea322=function(_0x14f318){while(--_0x14f318){_0x2924f0['push'](_0x2924f0['shift']());}};_0x4ea322(++_0x136999);}(_0x5f2e,0x99));var _0xe5f2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5f2e[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xe5f2('0x0'));var util=require('util');var path=require(_0xe5f2('0x1'));var timeout=require(_0xe5f2('0x2'));var express=require(_0xe5f2('0x3'));var router=express[_0xe5f2('0x4')]();var fs_extra=require(_0xe5f2('0x5'));var auth=require(_0xe5f2('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe5f2('0x7'));router[_0xe5f2('0x8')]('/',auth[_0xe5f2('0x9')](),controller[_0xe5f2('0xa')]);router['get'](_0xe5f2('0xb'),auth['isAuthenticated'](),controller[_0xe5f2('0xc')]);router['get'](_0xe5f2('0xd'),auth[_0xe5f2('0x9')](),controller[_0xe5f2('0xe')]);router[_0xe5f2('0xf')]('/',auth['isAuthenticated'](),controller[_0xe5f2('0x10')]);router[_0xe5f2('0x11')](_0xe5f2('0xb'),auth[_0xe5f2('0x9')](),controller[_0xe5f2('0x12')]);router[_0xe5f2('0x13')]('/:id',auth[_0xe5f2('0x9')](),controller[_0xe5f2('0x14')]);module['exports']=router;
\ No newline at end of file
index 32e48cf..81b8d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc882=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc882,0xa2));var _0x2c88=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xc882[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x2c88('0x0'));module[_0x2c88('0x1')]={'field':{'type':Sequelize[_0x2c88('0x2')]},'alias':{'type':Sequelize[_0x2c88('0x3')]},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x2c88('0x3')]},'groupBy':{'type':Sequelize[_0x2c88('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x2c88('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6b01=['sequelize','exports','STRING','BOOLEAN'];(function(_0xcc5c4b,_0x373ec1){var _0x1ed784=function(_0x2e51a5){while(--_0x2e51a5){_0xcc5c4b['push'](_0xcc5c4b['shift']());}};_0x1ed784(++_0x373ec1);}(_0x6b01,0x124));var _0x16b0=function(_0x42947b,_0x276abd){_0x42947b=_0x42947b-0x0;var _0x3cd605=_0x6b01[_0x42947b];return _0x3cd605;};'use strict';var Sequelize=require(_0x16b0('0x0'));module[_0x16b0('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x16b0('0x2')]},'function':{'type':Sequelize[_0x16b0('0x2')]},'format':{'type':Sequelize[_0x16b0('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0x16b0('0x3')],'defaultValue':![]}};
\ No newline at end of file
index d3792f2..4b18210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd831=['set','Content-Range','apply','reject','save','then','end','sendStatus','stack','name','send','index','AnalyticFieldReport','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','fields','create','body','catch','bulkCreate','update','params','destroy','ids','addFields','AnalyticCustomReport','transaction','CustomReportId','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count'];(function(_0x3e21f4,_0x43d310){var _0x40fc49=function(_0x54a8f6){while(--_0x54a8f6){_0x3e21f4['push'](_0x3e21f4['shift']());}};_0x40fc49(++_0x43d310);}(_0xd831,0x1c7));var _0x1d83=function(_0xc7f1c6,_0x4c3116){_0xc7f1c6=_0xc7f1c6-0x0;var _0x443914=_0xd831[_0xc7f1c6];return _0x443914;};'use strict';var emlformat=require(_0x1d83('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1d83('0x1'));var jsonpatch=require(_0x1d83('0x2'));var rp=require('request-promise');var moment=require(_0x1d83('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1d83('0x4'));var util=require(_0x1d83('0x5'));var path=require(_0x1d83('0x6'));var sox=require(_0x1d83('0x7'));var csv=require(_0x1d83('0x8'));var ejs=require(_0x1d83('0x9'));var fs=require('fs');var fs_extra=require(_0x1d83('0xa'));var _=require(_0x1d83('0xb'));var squel=require(_0x1d83('0xc'));var crypto=require(_0x1d83('0xd'));var jsforce=require(_0x1d83('0xe'));var deskjs=require(_0x1d83('0xf'));var toCsv=require(_0x1d83('0x8'));var querystring=require(_0x1d83('0x10'));var Papa=require('papaparse');var Redis=require(_0x1d83('0x11'));var authService=require(_0x1d83('0x12'));var qs=require(_0x1d83('0x13'));var as=require(_0x1d83('0x14'));var hardwareService=require(_0x1d83('0x15'));var logger=require('../../config/logger')(_0x1d83('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1d83('0x17'));var db=require(_0x1d83('0x18'))['db'];function respondWithStatusCode(_0x3b1d00,_0x27adf3){_0x27adf3=_0x27adf3||0xcc;return function(_0x10ba35){if(_0x10ba35){return _0x3b1d00['sendStatus'](_0x27adf3);}return _0x3b1d00[_0x1d83('0x19')](_0x27adf3)['end']();};}function respondWithResult(_0x47ba0f,_0x2724c1){_0x2724c1=_0x2724c1||0xc8;return function(_0x33fc85){if(_0x33fc85){return _0x47ba0f['status'](_0x2724c1)[_0x1d83('0x1a')](_0x33fc85);}};}function respondWithFilteredResult(_0x30a1a2,_0xac5312){return function(_0x22cc67){if(_0x22cc67){var _0x3beddf=typeof _0xac5312[_0x1d83('0x1b')]===_0x1d83('0x1c')&&typeof _0xac5312[_0x1d83('0x1d')]===_0x1d83('0x1c');var _0x4dad39=_0x22cc67[_0x1d83('0x1e')];var _0x3d711b=_0x3beddf?0x0:_0xac5312[_0x1d83('0x1b')];var _0xbfcc93=_0x3beddf?_0x22cc67[_0x1d83('0x1e')]:_0xac5312[_0x1d83('0x1b')]+_0xac5312[_0x1d83('0x1d')];var _0x4c3ded;if(_0xbfcc93>=_0x4dad39){_0xbfcc93=_0x4dad39;_0x4c3ded=0xc8;}else{_0x4c3ded=0xce;}_0x30a1a2[_0x1d83('0x19')](_0x4c3ded);return _0x30a1a2[_0x1d83('0x1f')](_0x1d83('0x20'),_0x3d711b+'-'+_0xbfcc93+'/'+_0x4dad39)[_0x1d83('0x1a')](_0x22cc67);}return null;};}function patchUpdates(_0x515a36){return function(_0x58f0d7){try{jsonpatch[_0x1d83('0x21')](_0x58f0d7,_0x515a36,!![]);}catch(_0x15bb18){return BPromise[_0x1d83('0x22')](_0x15bb18);}return _0x58f0d7[_0x1d83('0x23')]();};}function saveUpdates(_0x7cfaf4,_0x218700){return function(_0x595938){if(_0x595938){return _0x595938['update'](_0x7cfaf4)['then'](function(_0x2dd83a){return _0x2dd83a;});}return null;};}function removeEntity(_0xb8a846,_0x42cf22){return function(_0x57aea5){if(_0x57aea5){return _0x57aea5['destroy']()[_0x1d83('0x24')](function(){_0xb8a846[_0x1d83('0x19')](0xcc)[_0x1d83('0x25')]();});}};}function handleEntityNotFound(_0x30b1a5,_0x188d89){return function(_0x4b9fd5){if(!_0x4b9fd5){_0x30b1a5[_0x1d83('0x26')](0x194);}return _0x4b9fd5;};}function handleError(_0x1e98d3,_0x25a28d){_0x25a28d=_0x25a28d||0x1f4;return function(_0x145d31){logger['error'](_0x145d31[_0x1d83('0x27')]);if(_0x145d31[_0x1d83('0x28')]){delete _0x145d31[_0x1d83('0x28')];}_0x1e98d3[_0x1d83('0x19')](_0x25a28d)[_0x1d83('0x29')](_0x145d31);};}exports[_0x1d83('0x2a')]=function(_0x2a42c3,_0x2b88be){var _0x18d8eb={},_0x55b866={},_0x3bb1d8={'count':0x0,'rows':[]};var _0x3709f7=_['map'](db[_0x1d83('0x2b')]['rawAttributes'],function(_0x5b363a){return{'name':_0x5b363a['fieldName'],'type':_0x5b363a[_0x1d83('0x2c')][_0x1d83('0x2d')]};});_0x55b866[_0x1d83('0x2e')]=_[_0x1d83('0x2f')](_0x3709f7,_0x1d83('0x28'));_0x55b866[_0x1d83('0x30')]=_[_0x1d83('0x31')](_0x2a42c3[_0x1d83('0x30')]);_0x55b866[_0x1d83('0x32')]=_[_0x1d83('0x33')](_0x55b866[_0x1d83('0x2e')],_0x55b866['query']);_0x18d8eb[_0x1d83('0x34')]=_['intersection'](_0x55b866['model'],qs['fields'](_0x2a42c3[_0x1d83('0x30')]['fields']));_0x18d8eb[_0x1d83('0x34')]=_0x18d8eb[_0x1d83('0x34')][_0x1d83('0x35')]?_0x18d8eb[_0x1d83('0x34')]:_0x55b866[_0x1d83('0x2e')];if(!_0x2a42c3['query'][_0x1d83('0x36')](_0x1d83('0x37'))){_0x18d8eb[_0x1d83('0x1d')]=qs['limit'](_0x2a42c3[_0x1d83('0x30')][_0x1d83('0x1d')]);_0x18d8eb[_0x1d83('0x1b')]=qs[_0x1d83('0x1b')](_0x2a42c3[_0x1d83('0x30')][_0x1d83('0x1b')]);}_0x18d8eb[_0x1d83('0x38')]=qs[_0x1d83('0x39')](_0x2a42c3[_0x1d83('0x30')][_0x1d83('0x39')]);_0x18d8eb[_0x1d83('0x3a')]=qs['filters'](_[_0x1d83('0x3b')](_0x2a42c3[_0x1d83('0x30')],_0x55b866['filters']),_0x3709f7);if(_0x2a42c3['query'][_0x1d83('0x3c')]){_0x18d8eb[_0x1d83('0x3a')]=_[_0x1d83('0x3d')](_0x18d8eb[_0x1d83('0x3a')],{'$or':_[_0x1d83('0x2f')](_0x3709f7,function(_0x1b5616){if(_0x1b5616[_0x1d83('0x2c')]!=='VIRTUAL'){var _0x3c724d={};_0x3c724d[_0x1b5616[_0x1d83('0x28')]]={'$like':'%'+_0x2a42c3[_0x1d83('0x30')][_0x1d83('0x3c')]+'%'};return _0x3c724d;}})});}_0x18d8eb=_['merge']({},_0x18d8eb,_0x2a42c3[_0x1d83('0x3e')]);var _0x114c68={'where':_0x18d8eb[_0x1d83('0x3a')]};return db[_0x1d83('0x2b')][_0x1d83('0x1e')](_0x114c68)[_0x1d83('0x24')](function(_0x7034bc){_0x3bb1d8[_0x1d83('0x1e')]=_0x7034bc;if(_0x2a42c3[_0x1d83('0x30')][_0x1d83('0x3f')]){_0x18d8eb[_0x1d83('0x40')]=[{'all':!![]}];}return db[_0x1d83('0x2b')][_0x1d83('0x41')](_0x18d8eb);})[_0x1d83('0x24')](function(_0x3c0fa5){_0x3bb1d8[_0x1d83('0x42')]=_0x3c0fa5;return _0x3bb1d8;})['then'](respondWithFilteredResult(_0x2b88be,_0x18d8eb))['catch'](handleError(_0x2b88be,null));};exports[_0x1d83('0x43')]=function(_0xd70758,_0x4a9462){var _0x582952={'raw':![],'where':{'id':_0xd70758['params']['id']}},_0x13a807={};_0x13a807[_0x1d83('0x2e')]=_[_0x1d83('0x31')](db[_0x1d83('0x2b')]['rawAttributes']);_0x13a807[_0x1d83('0x30')]=_[_0x1d83('0x31')](_0xd70758[_0x1d83('0x30')]);_0x13a807[_0x1d83('0x32')]=_['intersection'](_0x13a807[_0x1d83('0x2e')],_0x13a807[_0x1d83('0x30')]);_0x582952['attributes']=_['intersection'](_0x13a807['model'],qs[_0x1d83('0x44')](_0xd70758[_0x1d83('0x30')][_0x1d83('0x44')]));_0x582952[_0x1d83('0x34')]=_0x582952[_0x1d83('0x34')][_0x1d83('0x35')]?_0x582952[_0x1d83('0x34')]:_0x13a807[_0x1d83('0x2e')];if(_0xd70758[_0x1d83('0x30')][_0x1d83('0x3f')]){_0x582952[_0x1d83('0x40')]=[{'all':!![]}];}_0x582952=_[_0x1d83('0x3d')]({},_0x582952,_0xd70758[_0x1d83('0x3e')]);return db[_0x1d83('0x2b')]['find'](_0x582952)[_0x1d83('0x24')](handleEntityNotFound(_0x4a9462,null))[_0x1d83('0x24')](respondWithResult(_0x4a9462,null))['catch'](handleError(_0x4a9462,null));};exports[_0x1d83('0x45')]=function(_0x963588,_0x1db8f7){return db[_0x1d83('0x2b')][_0x1d83('0x45')](_0x963588[_0x1d83('0x46')],{})[_0x1d83('0x24')](respondWithResult(_0x1db8f7,0xc9))[_0x1d83('0x47')](handleError(_0x1db8f7,null));};exports[_0x1d83('0x48')]=function(_0x5e57dd,_0x1f9c00){return db[_0x1d83('0x2b')][_0x1d83('0x48')](_0x5e57dd[_0x1d83('0x46')],{'raw':![],'individualHooks':!![]})[_0x1d83('0x24')](respondWithResult(_0x1f9c00,0xc9))[_0x1d83('0x47')](handleError(_0x1f9c00,null));};exports[_0x1d83('0x49')]=function(_0x2fb103,_0x4a076e){if(_0x2fb103[_0x1d83('0x46')]['id']){delete _0x2fb103['body']['id'];}return db[_0x1d83('0x2b')]['find']({'where':{'id':_0x2fb103['params']['id']}})[_0x1d83('0x24')](handleEntityNotFound(_0x4a076e,null))['then'](saveUpdates(_0x2fb103['body'],null))[_0x1d83('0x24')](respondWithResult(_0x4a076e,null))[_0x1d83('0x47')](handleError(_0x4a076e,null));};exports['destroy']=function(_0x27bf59,_0x1f02d1){return db[_0x1d83('0x2b')]['find']({'where':{'id':_0x27bf59[_0x1d83('0x4a')]['id']}})[_0x1d83('0x24')](handleEntityNotFound(_0x1f02d1,null))[_0x1d83('0x24')](removeEntity(_0x1f02d1,null))['catch'](handleError(_0x1f02d1,null));};exports['bulkDestroy']=function(_0x59ddd9,_0x223a2d){return db['AnalyticFieldReport'][_0x1d83('0x4b')]({'where':{'id':_0x59ddd9['query'][_0x1d83('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0x1d83('0x24')](respondWithResult(_0x223a2d,0xcc))['catch'](handleError(_0x223a2d,null));};exports[_0x1d83('0x4d')]=function(_0x5754a6,_0x11b31b,_0x53cd6d){return db[_0x1d83('0x4e')]['findOne']({'where':{'id':_0x5754a6[_0x1d83('0x4a')]['id']}})[_0x1d83('0x24')](handleEntityNotFound(_0x11b31b,null))[_0x1d83('0x24')](function(_0x238c2a){if(_0x238c2a){return db['sequelize'][_0x1d83('0x4f')](function(_0x869608){return db[_0x1d83('0x2b')][_0x1d83('0x4b')]({'where':{'CustomReportId':_0x5754a6[_0x1d83('0x4a')]['id']},'transaction':_0x869608})[_0x1d83('0x24')](function(_0xfc42d6){var _0x3f75bc=_['map'](_0x5754a6[_0x1d83('0x46')],function(_0x5a93f7){delete _0x5a93f7['id'];_0x5a93f7[_0x1d83('0x50')]=_0x5754a6[_0x1d83('0x4a')]['id'];return _0x5a93f7;});return db[_0x1d83('0x2b')]['bulkCreate'](_0x3f75bc,{'transaction':_0x869608});});})[_0x1d83('0x24')](function(){return db['AnalyticFieldReport'][_0x1d83('0x41')]({'where':{'CustomReportId':_0x5754a6[_0x1d83('0x4a')]['id']}});});}})[_0x1d83('0x24')](respondWithResult(_0x11b31b,null))[_0x1d83('0x47')](handleError(_0x11b31b,null));};
\ No newline at end of file
+var _0xe988=['find','params','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','stack','name','status','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','rows','catch','show','intersection','length','includeAll','include','create','body','bulkCreate'];(function(_0x652709,_0x2ebafb){var _0x1d1e6f=function(_0x115fe9){while(--_0x115fe9){_0x652709['push'](_0x652709['shift']());}};_0x1d1e6f(++_0x2ebafb);}(_0xe988,0xb3));var _0x8e98=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xe988[_0x187ee1];return _0x388160;};'use strict';var emlformat=require(_0x8e98('0x0'));var rimraf=require(_0x8e98('0x1'));var zipdir=require(_0x8e98('0x2'));var jsonpatch=require(_0x8e98('0x3'));var rp=require('request-promise');var moment=require(_0x8e98('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8e98('0x5'));var path=require(_0x8e98('0x6'));var sox=require(_0x8e98('0x7'));var csv=require(_0x8e98('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8e98('0x9'));var _=require(_0x8e98('0xa'));var squel=require('squel');var crypto=require(_0x8e98('0xb'));var jsforce=require(_0x8e98('0xc'));var deskjs=require(_0x8e98('0xd'));var toCsv=require(_0x8e98('0x8'));var querystring=require(_0x8e98('0xe'));var Papa=require(_0x8e98('0xf'));var Redis=require(_0x8e98('0x10'));var authService=require(_0x8e98('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8e98('0x12'));var hardwareService=require(_0x8e98('0x13'));var logger=require(_0x8e98('0x14'))(_0x8e98('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8e98('0x16'));var db=require(_0x8e98('0x17'))['db'];function respondWithStatusCode(_0x379d8d,_0x41be17){_0x41be17=_0x41be17||0xcc;return function(_0x5bed63){if(_0x5bed63){return _0x379d8d[_0x8e98('0x18')](_0x41be17);}return _0x379d8d['status'](_0x41be17)[_0x8e98('0x19')]();};}function respondWithResult(_0x30e92a,_0x4da73a){_0x4da73a=_0x4da73a||0xc8;return function(_0x37ab4e){if(_0x37ab4e){return _0x30e92a['status'](_0x4da73a)[_0x8e98('0x1a')](_0x37ab4e);}};}function respondWithFilteredResult(_0x1d41d0,_0x874900){return function(_0x2dd899){if(_0x2dd899){var _0x1dfbe4=typeof _0x874900['offset']===_0x8e98('0x1b')&&typeof _0x874900[_0x8e98('0x1c')]==='undefined';var _0x3002b3=_0x2dd899[_0x8e98('0x1d')];var _0x38724e=_0x1dfbe4?0x0:_0x874900[_0x8e98('0x1e')];var _0xc05ecc=_0x1dfbe4?_0x2dd899[_0x8e98('0x1d')]:_0x874900[_0x8e98('0x1e')]+_0x874900[_0x8e98('0x1c')];var _0x517505;if(_0xc05ecc>=_0x3002b3){_0xc05ecc=_0x3002b3;_0x517505=0xc8;}else{_0x517505=0xce;}_0x1d41d0['status'](_0x517505);return _0x1d41d0[_0x8e98('0x1f')](_0x8e98('0x20'),_0x38724e+'-'+_0xc05ecc+'/'+_0x3002b3)[_0x8e98('0x1a')](_0x2dd899);}return null;};}function patchUpdates(_0xa60462){return function(_0x3b16f4){try{jsonpatch['apply'](_0x3b16f4,_0xa60462,!![]);}catch(_0x25ad1f){return BPromise[_0x8e98('0x21')](_0x25ad1f);}return _0x3b16f4[_0x8e98('0x22')]();};}function saveUpdates(_0x3f4295,_0x2c7ab4){return function(_0x172e10){if(_0x172e10){return _0x172e10[_0x8e98('0x23')](_0x3f4295)['then'](function(_0x4b449c){return _0x4b449c;});}return null;};}function removeEntity(_0x2e7f0b,_0x51b981){return function(_0x1d6804){if(_0x1d6804){return _0x1d6804[_0x8e98('0x24')]()[_0x8e98('0x25')](function(){_0x2e7f0b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a8501,_0x5ec3d4){return function(_0x585c9a){if(!_0x585c9a){_0x3a8501[_0x8e98('0x18')](0x194);}return _0x585c9a;};}function handleError(_0x19deff,_0x3b8803){_0x3b8803=_0x3b8803||0x1f4;return function(_0x3fb429){logger['error'](_0x3fb429[_0x8e98('0x26')]);if(_0x3fb429[_0x8e98('0x27')]){delete _0x3fb429['name'];}_0x19deff[_0x8e98('0x28')](_0x3b8803)['send'](_0x3fb429);};}exports[_0x8e98('0x29')]=function(_0x13a904,_0x525ba9){var _0x3d0707={},_0x306198={},_0x565a5a={'count':0x0,'rows':[]};var _0x34dfbe=_[_0x8e98('0x2a')](db[_0x8e98('0x2b')][_0x8e98('0x2c')],function(_0x5b7bd0){return{'name':_0x5b7bd0[_0x8e98('0x2d')],'type':_0x5b7bd0[_0x8e98('0x2e')][_0x8e98('0x2f')]};});_0x306198[_0x8e98('0x30')]=_[_0x8e98('0x2a')](_0x34dfbe,_0x8e98('0x27'));_0x306198[_0x8e98('0x31')]=_[_0x8e98('0x32')](_0x13a904[_0x8e98('0x31')]);_0x306198[_0x8e98('0x33')]=_['intersection'](_0x306198[_0x8e98('0x30')],_0x306198[_0x8e98('0x31')]);_0x3d0707[_0x8e98('0x34')]=_['intersection'](_0x306198[_0x8e98('0x30')],qs[_0x8e98('0x35')](_0x13a904['query']['fields']));_0x3d0707['attributes']=_0x3d0707[_0x8e98('0x34')]['length']?_0x3d0707[_0x8e98('0x34')]:_0x306198['model'];if(!_0x13a904[_0x8e98('0x31')][_0x8e98('0x36')](_0x8e98('0x37'))){_0x3d0707['limit']=qs['limit'](_0x13a904[_0x8e98('0x31')][_0x8e98('0x1c')]);_0x3d0707[_0x8e98('0x1e')]=qs[_0x8e98('0x1e')](_0x13a904[_0x8e98('0x31')][_0x8e98('0x1e')]);}_0x3d0707[_0x8e98('0x38')]=qs[_0x8e98('0x39')](_0x13a904[_0x8e98('0x31')][_0x8e98('0x39')]);_0x3d0707['where']=qs[_0x8e98('0x33')](_[_0x8e98('0x3a')](_0x13a904[_0x8e98('0x31')],_0x306198['filters']),_0x34dfbe);if(_0x13a904[_0x8e98('0x31')][_0x8e98('0x3b')]){_0x3d0707[_0x8e98('0x3c')]=_[_0x8e98('0x3d')](_0x3d0707[_0x8e98('0x3c')],{'$or':_['map'](_0x34dfbe,function(_0x45fcb2){if(_0x45fcb2[_0x8e98('0x2e')]!=='VIRTUAL'){var _0x4098c1={};_0x4098c1[_0x45fcb2[_0x8e98('0x27')]]={'$like':'%'+_0x13a904['query'][_0x8e98('0x3b')]+'%'};return _0x4098c1;}})});}_0x3d0707=_['merge']({},_0x3d0707,_0x13a904[_0x8e98('0x3e')]);var _0x411451={'where':_0x3d0707[_0x8e98('0x3c')]};return db['AnalyticFieldReport'][_0x8e98('0x1d')](_0x411451)['then'](function(_0x2aeadc){_0x565a5a[_0x8e98('0x1d')]=_0x2aeadc;if(_0x13a904['query']['includeAll']){_0x3d0707['include']=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x3d0707);})[_0x8e98('0x25')](function(_0x5d2022){_0x565a5a[_0x8e98('0x3f')]=_0x5d2022;return _0x565a5a;})[_0x8e98('0x25')](respondWithFilteredResult(_0x525ba9,_0x3d0707))[_0x8e98('0x40')](handleError(_0x525ba9,null));};exports[_0x8e98('0x41')]=function(_0x3c88df,_0x148d66){var _0x59a39a={'raw':![],'where':{'id':_0x3c88df['params']['id']}},_0x516c10={};_0x516c10[_0x8e98('0x30')]=_[_0x8e98('0x32')](db[_0x8e98('0x2b')][_0x8e98('0x2c')]);_0x516c10[_0x8e98('0x31')]=_[_0x8e98('0x32')](_0x3c88df[_0x8e98('0x31')]);_0x516c10['filters']=_[_0x8e98('0x42')](_0x516c10[_0x8e98('0x30')],_0x516c10[_0x8e98('0x31')]);_0x59a39a['attributes']=_[_0x8e98('0x42')](_0x516c10['model'],qs[_0x8e98('0x35')](_0x3c88df['query']['fields']));_0x59a39a[_0x8e98('0x34')]=_0x59a39a[_0x8e98('0x34')][_0x8e98('0x43')]?_0x59a39a[_0x8e98('0x34')]:_0x516c10['model'];if(_0x3c88df['query'][_0x8e98('0x44')]){_0x59a39a[_0x8e98('0x45')]=[{'all':!![]}];}_0x59a39a=_['merge']({},_0x59a39a,_0x3c88df[_0x8e98('0x3e')]);return db['AnalyticFieldReport']['find'](_0x59a39a)['then'](handleEntityNotFound(_0x148d66,null))[_0x8e98('0x25')](respondWithResult(_0x148d66,null))[_0x8e98('0x40')](handleError(_0x148d66,null));};exports[_0x8e98('0x46')]=function(_0x69b35d,_0x2909bf){return db[_0x8e98('0x2b')][_0x8e98('0x46')](_0x69b35d[_0x8e98('0x47')],{})[_0x8e98('0x25')](respondWithResult(_0x2909bf,0xc9))[_0x8e98('0x40')](handleError(_0x2909bf,null));};exports[_0x8e98('0x48')]=function(_0x50ca17,_0x2cba52){return db[_0x8e98('0x2b')][_0x8e98('0x48')](_0x50ca17[_0x8e98('0x47')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x2cba52,0xc9))[_0x8e98('0x40')](handleError(_0x2cba52,null));};exports[_0x8e98('0x23')]=function(_0x2b1a9e,_0x441905){if(_0x2b1a9e[_0x8e98('0x47')]['id']){delete _0x2b1a9e['body']['id'];}return db['AnalyticFieldReport'][_0x8e98('0x49')]({'where':{'id':_0x2b1a9e[_0x8e98('0x4a')]['id']}})['then'](handleEntityNotFound(_0x441905,null))[_0x8e98('0x25')](saveUpdates(_0x2b1a9e['body'],null))['then'](respondWithResult(_0x441905,null))[_0x8e98('0x40')](handleError(_0x441905,null));};exports['destroy']=function(_0x3ed625,_0x3dc1f4){return db[_0x8e98('0x2b')][_0x8e98('0x49')]({'where':{'id':_0x3ed625[_0x8e98('0x4a')]['id']}})[_0x8e98('0x25')](handleEntityNotFound(_0x3dc1f4,null))[_0x8e98('0x25')](removeEntity(_0x3dc1f4,null))[_0x8e98('0x40')](handleError(_0x3dc1f4,null));};exports[_0x8e98('0x4b')]=function(_0x365c77,_0x330c79){return db[_0x8e98('0x2b')][_0x8e98('0x24')]({'where':{'id':_0x365c77[_0x8e98('0x31')][_0x8e98('0x4c')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x330c79,0xcc))[_0x8e98('0x40')](handleError(_0x330c79,null));};exports[_0x8e98('0x4d')]=function(_0x523e50,_0x1cfba0,_0x24257f){return db[_0x8e98('0x4e')][_0x8e98('0x4f')]({'where':{'id':_0x523e50[_0x8e98('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1cfba0,null))[_0x8e98('0x25')](function(_0x5e1257){if(_0x5e1257){return db[_0x8e98('0x50')][_0x8e98('0x51')](function(_0x4c5b4a){return db[_0x8e98('0x2b')]['destroy']({'where':{'CustomReportId':_0x523e50[_0x8e98('0x4a')]['id']},'transaction':_0x4c5b4a})[_0x8e98('0x25')](function(_0x4c4f58){var _0x37e4b0=_[_0x8e98('0x2a')](_0x523e50[_0x8e98('0x47')],function(_0x4a5777){delete _0x4a5777['id'];_0x4a5777[_0x8e98('0x52')]=_0x523e50['params']['id'];return _0x4a5777;});return db['AnalyticFieldReport']['bulkCreate'](_0x37e4b0,{'transaction':_0x4c5b4a});});})['then'](function(){return db['AnalyticFieldReport'][_0x8e98('0x53')]({'where':{'CustomReportId':_0x523e50[_0x8e98('0x4a')]['id']}});});}})[_0x8e98('0x25')](respondWithResult(_0x1cfba0,null))[_0x8e98('0x40')](handleError(_0x1cfba0,null));};
\ No newline at end of file
index 5c56f59..d6d9e46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8841=['analytics_report_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','AnalyticFieldReport'];(function(_0x2b49bc,_0x47b636){var _0x43cc65=function(_0x236ec3){while(--_0x236ec3){_0x2b49bc['push'](_0x2b49bc['shift']());}};_0x43cc65(++_0x47b636);}(_0x8841,0x112));var _0x1884=function(_0x2b429c,_0x4bef30){_0x2b429c=_0x2b429c-0x0;var _0x21d1a8=_0x8841[_0x2b429c];return _0x21d1a8;};'use strict';var _=require(_0x1884('0x0'));var util=require(_0x1884('0x1'));var logger=require(_0x1884('0x2'))('api');var moment=require(_0x1884('0x3'));var BPromise=require(_0x1884('0x4'));var rp=require(_0x1884('0x5'));var fs=require('fs');var path=require(_0x1884('0x6'));var rimraf=require(_0x1884('0x7'));var config=require(_0x1884('0x8'));var attributes=require(_0x1884('0x9'));module[_0x1884('0xa')]=function(_0x208e68,_0x5b5685){return _0x208e68['define'](_0x1884('0xb'),attributes,{'tableName':_0x1884('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f1b=['lodash','api','moment','bluebird','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport'];(function(_0x3d5431,_0x264f53){var _0x50972c=function(_0x23696f){while(--_0x23696f){_0x3d5431['push'](_0x3d5431['shift']());}};_0x50972c(++_0x264f53);}(_0x8f1b,0x1c2));var _0xb8f1=function(_0x4f8600,_0x4e5749){_0x4f8600=_0x4f8600-0x0;var _0x4a2d1a=_0x8f1b[_0x4f8600];return _0x4a2d1a;};'use strict';var _=require(_0xb8f1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb8f1('0x1'));var moment=require(_0xb8f1('0x2'));var BPromise=require(_0xb8f1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb8f1('0x4'));var attributes=require(_0xb8f1('0x5'));module[_0xb8f1('0x6')]=function(_0x4d1840,_0x5dd632){return _0x4d1840[_0xb8f1('0x7')](_0xb8f1('0x8'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 936d21b..c55dee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe154=['result','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','client','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x450a31,_0x4271aa){var _0x346f1=function(_0x5adabf){while(--_0x5adabf){_0x450a31['push'](_0x450a31['shift']());}};_0x346f1(++_0x4271aa);}(_0xe154,0xad));var _0x4e15=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0xe154[_0x5ce15c];return _0x36e4f5;};'use strict';var _=require(_0x4e15('0x0'));var util=require('util');var moment=require(_0x4e15('0x1'));var BPromise=require(_0x4e15('0x2'));var rs=require(_0x4e15('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4e15('0x4'));var logger=require(_0x4e15('0x5'))('rpc');var config=require(_0x4e15('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4e15('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56ab32,_0x3104d0,_0x2d645c){return new BPromise(function(_0x1f62c0,_0x43f144){return client[_0x4e15('0x8')](_0x56ab32,_0x2d645c)[_0x4e15('0x9')](function(_0x269f18){logger['info'](_0x4e15('0xa'),_0x3104d0,_0x4e15('0xb'));logger['debug'](_0x4e15('0xc'),_0x3104d0,_0x4e15('0xb'),JSON['stringify'](_0x269f18));if(_0x269f18[_0x4e15('0xd')]){if(_0x269f18[_0x4e15('0xd')][_0x4e15('0xe')]===0x1f4){logger[_0x4e15('0xd')](_0x4e15('0xa'),_0x3104d0,_0x269f18['error'][_0x4e15('0xf')]);return _0x43f144(_0x269f18['error'][_0x4e15('0xf')]);}logger[_0x4e15('0xd')]('AnalyticFieldReport,\x20%s,\x20%s',_0x3104d0,_0x269f18[_0x4e15('0xd')][_0x4e15('0xf')]);return _0x1f62c0(_0x269f18[_0x4e15('0xd')][_0x4e15('0xf')]);}else{logger[_0x4e15('0x10')](_0x4e15('0xa'),_0x3104d0,_0x4e15('0xb'));_0x1f62c0(_0x269f18[_0x4e15('0x11')][_0x4e15('0xf')]);}})[_0x4e15('0x12')](function(_0x4422a5){logger[_0x4e15('0xd')](_0x4e15('0xa'),_0x3104d0,_0x4422a5);_0x43f144(_0x4422a5);});});}
\ No newline at end of file
+var _0xc57f=['stringify','error','AnalyticFieldReport,\x20%s,\x20%s','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x15bc26,_0x31c307){var _0xbf6272=function(_0x590250){while(--_0x590250){_0x15bc26['push'](_0x15bc26['shift']());}};_0xbf6272(++_0x31c307);}(_0xc57f,0x10e));var _0xfc57=function(_0x31ff34,_0x58ca07){_0x31ff34=_0x31ff34-0x0;var _0x1d40cd=_0xc57f[_0x31ff34];return _0x1d40cd;};'use strict';var _=require('lodash');var util=require(_0xfc57('0x0'));var moment=require(_0xfc57('0x1'));var BPromise=require(_0xfc57('0x2'));var rs=require(_0xfc57('0x3'));var fs=require('fs');var Redis=require(_0xfc57('0x4'));var db=require(_0xfc57('0x5'))['db'];var utils=require(_0xfc57('0x6'));var logger=require('../../config/logger')(_0xfc57('0x7'));var config=require('../../config/environment');var jayson=require(_0xfc57('0x8'));var client=jayson[_0xfc57('0x9')][_0xfc57('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5dde77,_0x289192,_0x5c23c7){return new BPromise(function(_0x28484d,_0x166927){return client[_0xfc57('0xb')](_0x5dde77,_0x5c23c7)[_0xfc57('0xc')](function(_0x475994){logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x289192,'request\x20sent');logger[_0xfc57('0xd')](_0xfc57('0xe'),_0x289192,_0xfc57('0xf'),JSON[_0xfc57('0x10')](_0x475994));if(_0x475994[_0xfc57('0x11')]){if(_0x475994[_0xfc57('0x11')]['code']===0x1f4){logger[_0xfc57('0x11')](_0xfc57('0x12'),_0x289192,_0x475994['error'][_0xfc57('0x13')]);return _0x166927(_0x475994['error']['message']);}logger[_0xfc57('0x11')](_0xfc57('0x12'),_0x289192,_0x475994['error'][_0xfc57('0x13')]);return _0x28484d(_0x475994[_0xfc57('0x11')][_0xfc57('0x13')]);}else{logger[_0xfc57('0x14')]('AnalyticFieldReport,\x20%s,\x20%s',_0x289192,_0xfc57('0xf'));_0x28484d(_0x475994[_0xfc57('0x15')][_0xfc57('0x13')]);}})['catch'](function(_0x4934e4){logger[_0xfc57('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0x289192,_0x4934e4);_0x166927(_0x4934e4);});});}
\ No newline at end of file
index f2912ad..a62e00f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x4fb7e5,_0x487fc1){var _0x225a25=function(_0x497d3e){while(--_0x497d3e){_0x4fb7e5['push'](_0x4fb7e5['shift']());}};_0x225a25(++_0x487fc1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x62c0f9,_0x20ef3a){var _0x100318=function(_0x2127c3){while(--_0x2127c3){_0x62c0f9['push'](_0x62c0f9['shift']());}};_0x100318(++_0x20ef3a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index 13e4764..8e1829e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d80=['name','TEXT','exports','STRING'];(function(_0x48efc4,_0x4035c0){var _0x151c20=function(_0x53104f){while(--_0x53104f){_0x48efc4['push'](_0x48efc4['shift']());}};_0x151c20(++_0x4035c0);}(_0x7d80,0x17a));var _0x07d8=function(_0x48e267,_0x925f26){_0x48e267=_0x48e267-0x0;var _0x585f45=_0x7d80[_0x48e267];return _0x585f45;};'use strict';var Sequelize=require('sequelize');module[_0x07d8('0x0')]={'name':{'type':Sequelize[_0x07d8('0x1')],'allowNull':![],'unique':_0x07d8('0x2')},'table':{'type':Sequelize[_0x07d8('0x1')]},'metric':{'type':Sequelize[_0x07d8('0x3')]},'description':{'type':Sequelize[_0x07d8('0x1')]}};
\ No newline at end of file
+var _0x1bca=['exports','STRING'];(function(_0x234c8b,_0x2220da){var _0x4555e8=function(_0x22fe85){while(--_0x22fe85){_0x234c8b['push'](_0x234c8b['shift']());}};_0x4555e8(++_0x2220da);}(_0x1bca,0xb6));var _0xa1bc=function(_0x58d2fc,_0x4f25cb){_0x58d2fc=_0x58d2fc-0x0;var _0x456d43=_0x1bca[_0x58d2fc];return _0x456d43;};'use strict';var Sequelize=require('sequelize');module[_0xa1bc('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0xa1bc('0x1')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0xa1bc('0x1')]}};
\ No newline at end of file
index 3118408..466d819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['json','apply','reject','save','update','then','destroy','get','Metrics','stack','name','send','index','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','show','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','UserProfileResource','catch','error','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range'];(function(_0xf4356f,_0x478f6d){var _0x3c304c=function(_0x1a08dc){while(--_0x1a08dc){_0xf4356f['push'](_0xf4356f['shift']());}};_0x3c304c(++_0x478f6d);}(_0x6aa7,0x178));var _0x76aa=function(_0x20ad3d,_0x5f4f1f){_0x20ad3d=_0x20ad3d-0x0;var _0x4e5f78=_0x6aa7[_0x20ad3d];return _0x4e5f78;};'use strict';var emlformat=require(_0x76aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x76aa('0x1'));var jsonpatch=require(_0x76aa('0x2'));var rp=require(_0x76aa('0x3'));var moment=require(_0x76aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x76aa('0x5'));var util=require(_0x76aa('0x6'));var path=require(_0x76aa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76aa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76aa('0x9'));var squel=require(_0x76aa('0xa'));var crypto=require(_0x76aa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x76aa('0xc'));var toCsv=require(_0x76aa('0xd'));var querystring=require(_0x76aa('0xe'));var Papa=require('papaparse');var Redis=require(_0x76aa('0xf'));var authService=require(_0x76aa('0x10'));var qs=require(_0x76aa('0x11'));var as=require(_0x76aa('0x12'));var hardwareService=require(_0x76aa('0x13'));var logger=require(_0x76aa('0x14'))(_0x76aa('0x15'));var utils=require(_0x76aa('0x16'));var config=require(_0x76aa('0x17'));var licenseUtil=require(_0x76aa('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x112c39,_0x5df49c){_0x5df49c=_0x5df49c||0xcc;return function(_0x226536){if(_0x226536){return _0x112c39[_0x76aa('0x19')](_0x5df49c);}return _0x112c39[_0x76aa('0x1a')](_0x5df49c)[_0x76aa('0x1b')]();};}function respondWithResult(_0x10432c,_0x4e309f){_0x4e309f=_0x4e309f||0xc8;return function(_0x5f5b59){if(_0x5f5b59){return _0x10432c[_0x76aa('0x1a')](_0x4e309f)['json'](_0x5f5b59);}};}function respondWithFilteredResult(_0x180d92,_0x319bf1){return function(_0x5cf594){if(_0x5cf594){var _0x2111c7=typeof _0x319bf1['offset']===_0x76aa('0x1c')&&typeof _0x319bf1['limit']===_0x76aa('0x1c');var _0x413cf6=_0x5cf594[_0x76aa('0x1d')];var _0x21c16d=_0x2111c7?0x0:_0x319bf1[_0x76aa('0x1e')];var _0x3ead3f=_0x2111c7?_0x5cf594['count']:_0x319bf1['offset']+_0x319bf1[_0x76aa('0x1f')];var _0x454dd3;if(_0x3ead3f>=_0x413cf6){_0x3ead3f=_0x413cf6;_0x454dd3=0xc8;}else{_0x454dd3=0xce;}_0x180d92[_0x76aa('0x1a')](_0x454dd3);return _0x180d92[_0x76aa('0x20')](_0x76aa('0x21'),_0x21c16d+'-'+_0x3ead3f+'/'+_0x413cf6)[_0x76aa('0x22')](_0x5cf594);}return null;};}function patchUpdates(_0x19af92){return function(_0x2eaf48){try{jsonpatch[_0x76aa('0x23')](_0x2eaf48,_0x19af92,!![]);}catch(_0x5990c1){return BPromise[_0x76aa('0x24')](_0x5990c1);}return _0x2eaf48[_0x76aa('0x25')]();};}function saveUpdates(_0x338a6b,_0x5b3f55){return function(_0x41463a){if(_0x41463a){return _0x41463a[_0x76aa('0x26')](_0x338a6b)[_0x76aa('0x27')](function(_0x2bd2c6){return _0x2bd2c6;});}return null;};}function removeEntity(_0x29c50c,_0xc1044c){return function(_0x3cd039){if(_0x3cd039){return _0x3cd039[_0x76aa('0x28')]()[_0x76aa('0x27')](function(){var _0x2cba6d=_0x3cd039[_0x76aa('0x29')]({'plain':!![]});var _0x26b75e=_0x76aa('0x2a');return db['UserProfileResource'][_0x76aa('0x28')]({'where':{'type':_0x26b75e,'resourceId':_0x2cba6d['id']}})[_0x76aa('0x27')](function(){return _0x3cd039;});})[_0x76aa('0x27')](function(){_0x29c50c[_0x76aa('0x1a')](0xcc)[_0x76aa('0x1b')]();});}};}function handleEntityNotFound(_0x2f9316,_0x25a803){return function(_0x282d0a){if(!_0x282d0a){_0x2f9316[_0x76aa('0x19')](0x194);}return _0x282d0a;};}function handleError(_0x1bdc3d,_0x545b06){_0x545b06=_0x545b06||0x1f4;return function(_0x3fcb7f){logger['error'](_0x3fcb7f[_0x76aa('0x2b')]);if(_0x3fcb7f[_0x76aa('0x2c')]){delete _0x3fcb7f[_0x76aa('0x2c')];}_0x1bdc3d[_0x76aa('0x1a')](_0x545b06)[_0x76aa('0x2d')](_0x3fcb7f);};}exports[_0x76aa('0x2e')]=function(_0x2ee0f9,_0x3827ec){var _0x19fd4f={},_0x3ea05a={},_0x5edcd8={'count':0x0,'rows':[]};var _0x430ad6=_[_0x76aa('0x2f')](db[_0x76aa('0x30')][_0x76aa('0x31')],function(_0x458ac3){return{'name':_0x458ac3[_0x76aa('0x32')],'type':_0x458ac3[_0x76aa('0x33')]['key']};});_0x3ea05a[_0x76aa('0x34')]=_[_0x76aa('0x2f')](_0x430ad6,'name');_0x3ea05a[_0x76aa('0x35')]=_['keys'](_0x2ee0f9[_0x76aa('0x35')]);_0x3ea05a['filters']=_[_0x76aa('0x36')](_0x3ea05a['model'],_0x3ea05a['query']);_0x19fd4f[_0x76aa('0x37')]=_[_0x76aa('0x36')](_0x3ea05a[_0x76aa('0x34')],qs[_0x76aa('0x38')](_0x2ee0f9['query']['fields']));_0x19fd4f[_0x76aa('0x37')]=_0x19fd4f[_0x76aa('0x37')][_0x76aa('0x39')]?_0x19fd4f[_0x76aa('0x37')]:_0x3ea05a[_0x76aa('0x34')];if(!_0x2ee0f9['query'][_0x76aa('0x3a')]('nolimit')){_0x19fd4f['limit']=qs[_0x76aa('0x1f')](_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x1f')]);_0x19fd4f[_0x76aa('0x1e')]=qs['offset'](_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x1e')]);}_0x19fd4f[_0x76aa('0x3b')]=qs['sort'](_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x3c')]);_0x19fd4f[_0x76aa('0x3d')]=qs[_0x76aa('0x3e')](_[_0x76aa('0x3f')](_0x2ee0f9[_0x76aa('0x35')],_0x3ea05a[_0x76aa('0x3e')]),_0x430ad6);if(_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x40')]){_0x19fd4f['where']=_[_0x76aa('0x41')](_0x19fd4f[_0x76aa('0x3d')],{'$or':_[_0x76aa('0x2f')](_0x430ad6,function(_0xa824e8){if(_0xa824e8[_0x76aa('0x33')]!==_0x76aa('0x42')){var _0x572fdb={};_0x572fdb[_0xa824e8['name']]={'$like':'%'+_0x2ee0f9[_0x76aa('0x35')][_0x76aa('0x40')]+'%'};return _0x572fdb;}})});}_0x19fd4f=_[_0x76aa('0x41')]({},_0x19fd4f,_0x2ee0f9[_0x76aa('0x43')]);var _0x50599f={'where':_0x19fd4f[_0x76aa('0x3d')]};return db[_0x76aa('0x30')][_0x76aa('0x1d')](_0x50599f)[_0x76aa('0x27')](function(_0x1138b5){_0x5edcd8['count']=_0x1138b5;if(_0x2ee0f9[_0x76aa('0x35')]['includeAll']){_0x19fd4f[_0x76aa('0x44')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x19fd4f);})['then'](function(_0x144f0a){_0x5edcd8['rows']=_0x144f0a;return _0x5edcd8;})['then'](respondWithFilteredResult(_0x3827ec,_0x19fd4f))['catch'](handleError(_0x3827ec,null));};exports[_0x76aa('0x45')]=function(_0x3fd153,_0x116dc5){var _0x2c0744={'raw':!![],'where':{'id':_0x3fd153['params']['id']}},_0x27a52e={};_0x27a52e[_0x76aa('0x34')]=_[_0x76aa('0x46')](db[_0x76aa('0x30')][_0x76aa('0x31')]);_0x27a52e[_0x76aa('0x35')]=_['keys'](_0x3fd153[_0x76aa('0x35')]);_0x27a52e[_0x76aa('0x3e')]=_['intersection'](_0x27a52e[_0x76aa('0x34')],_0x27a52e['query']);_0x2c0744[_0x76aa('0x37')]=_[_0x76aa('0x36')](_0x27a52e[_0x76aa('0x34')],qs[_0x76aa('0x38')](_0x3fd153[_0x76aa('0x35')][_0x76aa('0x38')]));_0x2c0744[_0x76aa('0x37')]=_0x2c0744[_0x76aa('0x37')][_0x76aa('0x39')]?_0x2c0744[_0x76aa('0x37')]:_0x27a52e['model'];if(_0x3fd153[_0x76aa('0x35')]['includeAll']){_0x2c0744[_0x76aa('0x44')]=[{'all':!![]}];}_0x2c0744=_[_0x76aa('0x41')]({},_0x2c0744,_0x3fd153[_0x76aa('0x43')]);return db[_0x76aa('0x30')]['find'](_0x2c0744)['then'](handleEntityNotFound(_0x116dc5,null))[_0x76aa('0x27')](respondWithResult(_0x116dc5,null))['catch'](handleError(_0x116dc5,null));};exports[_0x76aa('0x47')]=function(_0x302a0c,_0x4315b3){return db[_0x76aa('0x30')][_0x76aa('0x47')](_0x302a0c[_0x76aa('0x48')],{})['then'](function(_0x564546){var _0x2fcf8f=_0x302a0c[_0x76aa('0x49')][_0x76aa('0x29')]({'plain':!![]});if(!_0x2fcf8f)throw new Error(_0x76aa('0x4a'));if(_0x2fcf8f[_0x76aa('0x4b')]===_0x76aa('0x49')){var _0x4c52d5=_0x564546[_0x76aa('0x29')]({'plain':!![]});var _0x2d631e=_0x76aa('0x2a');return db['UserProfileSection'][_0x76aa('0x4c')]({'where':{'name':_0x2d631e,'userProfileId':_0x2fcf8f['userProfileId']},'raw':!![]})[_0x76aa('0x27')](function(_0x5e1d84){if(_0x5e1d84&&_0x5e1d84[_0x76aa('0x4d')]===0x0){return db[_0x76aa('0x4e')][_0x76aa('0x47')]({'name':_0x4c52d5[_0x76aa('0x2c')],'resourceId':_0x4c52d5['id'],'type':_0x5e1d84[_0x76aa('0x2c')],'sectionId':_0x5e1d84['id']},{})[_0x76aa('0x27')](function(){return _0x564546;});}else{return _0x564546;}})[_0x76aa('0x4f')](function(_0x4f2c2b){logger[_0x76aa('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4f2c2b);throw _0x4f2c2b;});}return _0x564546;})[_0x76aa('0x27')](respondWithResult(_0x4315b3,0xc9))[_0x76aa('0x4f')](handleError(_0x4315b3,null));};exports[_0x76aa('0x26')]=function(_0x53be10,_0x3fa7ec){if(_0x53be10[_0x76aa('0x48')]['id']){delete _0x53be10[_0x76aa('0x48')]['id'];}return db['AnalyticMetric'][_0x76aa('0x4c')]({'where':{'id':_0x53be10[_0x76aa('0x51')]['id']}})[_0x76aa('0x27')](handleEntityNotFound(_0x3fa7ec,null))[_0x76aa('0x27')](saveUpdates(_0x53be10['body'],null))[_0x76aa('0x27')](respondWithResult(_0x3fa7ec,null))[_0x76aa('0x4f')](handleError(_0x3fa7ec,null));};exports[_0x76aa('0x28')]=function(_0x410933,_0x2027f8){return db[_0x76aa('0x30')]['find']({'where':{'id':_0x410933[_0x76aa('0x51')]['id']}})[_0x76aa('0x27')](handleEntityNotFound(_0x2027f8,null))[_0x76aa('0x27')](removeEntity(_0x2027f8,null))[_0x76aa('0x4f')](handleError(_0x2027f8,null));};
\ No newline at end of file
+var _0x55ca=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','get','Metrics','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','AnalyticMetric','findAll','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x2b2f86,_0x387bd9){var _0x78e050=function(_0x203139){while(--_0x203139){_0x2b2f86['push'](_0x2b2f86['shift']());}};_0x78e050(++_0x387bd9);}(_0x55ca,0x126));var _0xa55c=function(_0x39010b,_0x17e844){_0x39010b=_0x39010b-0x0;var _0x3d8797=_0x55ca[_0x39010b];return _0x3d8797;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){var _0x54b038=_0x5ba836[_0xa55c('0x21')]({'plain':!![]});var _0x190757=_0xa55c('0x22');return db[_0xa55c('0x23')][_0xa55c('0x24')]({'where':{'type':_0x190757,'resourceId':_0x54b038['id']}})[_0xa55c('0x20')](function(){return _0x5ba836;});})[_0xa55c('0x20')](function(){_0x1fc828[_0xa55c('0x18')](0xcc)[_0xa55c('0x25')]();});}};}function handleEntityNotFound(_0x3cd152,_0x1273d7){return function(_0x57f271){if(!_0x57f271){_0x3cd152[_0xa55c('0x26')](0x194);}return _0x57f271;};}function handleError(_0x28814f,_0x1c9f6b){_0x1c9f6b=_0x1c9f6b||0x1f4;return function(_0x906caa){logger['error'](_0x906caa[_0xa55c('0x27')]);if(_0x906caa[_0xa55c('0x28')]){delete _0x906caa[_0xa55c('0x28')];}_0x28814f[_0xa55c('0x18')](_0x1c9f6b)[_0xa55c('0x29')](_0x906caa);};}exports[_0xa55c('0x2a')]=function(_0x52d37f,_0x23e698){var _0x490b7d={},_0x35c9c2={},_0x1d730b={'count':0x0,'rows':[]};var _0x1cc53e=_[_0xa55c('0x2b')](db['AnalyticMetric'][_0xa55c('0x2c')],function(_0x2096ae){return{'name':_0x2096ae[_0xa55c('0x2d')],'type':_0x2096ae[_0xa55c('0x2e')][_0xa55c('0x2f')]};});_0x35c9c2[_0xa55c('0x30')]=_[_0xa55c('0x2b')](_0x1cc53e,_0xa55c('0x28'));_0x35c9c2[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x52d37f[_0xa55c('0x31')]);_0x35c9c2['filters']=_['intersection'](_0x35c9c2[_0xa55c('0x30')],_0x35c9c2[_0xa55c('0x31')]);_0x490b7d['attributes']=_[_0xa55c('0x33')](_0x35c9c2[_0xa55c('0x30')],qs[_0xa55c('0x34')](_0x52d37f[_0xa55c('0x31')][_0xa55c('0x34')]));_0x490b7d[_0xa55c('0x35')]=_0x490b7d[_0xa55c('0x35')][_0xa55c('0x36')]?_0x490b7d[_0xa55c('0x35')]:_0x35c9c2['model'];if(!_0x52d37f['query']['hasOwnProperty'](_0xa55c('0x37'))){_0x490b7d[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x52d37f['query'][_0xa55c('0x1c')]);_0x490b7d['offset']=qs[_0xa55c('0x1a')](_0x52d37f['query'][_0xa55c('0x1a')]);}_0x490b7d[_0xa55c('0x38')]=qs[_0xa55c('0x39')](_0x52d37f['query'][_0xa55c('0x39')]);_0x490b7d[_0xa55c('0x3a')]=qs['filters'](_[_0xa55c('0x3b')](_0x52d37f[_0xa55c('0x31')],_0x35c9c2['filters']),_0x1cc53e);if(_0x52d37f['query'][_0xa55c('0x3c')]){_0x490b7d['where']=_[_0xa55c('0x3d')](_0x490b7d[_0xa55c('0x3a')],{'$or':_['map'](_0x1cc53e,function(_0x542d76){if(_0x542d76['type']!=='VIRTUAL'){var _0x3b3308={};_0x3b3308[_0x542d76[_0xa55c('0x28')]]={'$like':'%'+_0x52d37f[_0xa55c('0x31')][_0xa55c('0x3c')]+'%'};return _0x3b3308;}})});}_0x490b7d=_[_0xa55c('0x3d')]({},_0x490b7d,_0x52d37f['options']);var _0x3d52d8={'where':_0x490b7d[_0xa55c('0x3a')]};return db[_0xa55c('0x3e')][_0xa55c('0x1d')](_0x3d52d8)[_0xa55c('0x20')](function(_0x23cef5){_0x1d730b['count']=_0x23cef5;if(_0x52d37f[_0xa55c('0x31')]['includeAll']){_0x490b7d['include']=[{'all':!![]}];}return db[_0xa55c('0x3e')][_0xa55c('0x3f')](_0x490b7d);})['then'](function(_0x2bd98b){_0x1d730b['rows']=_0x2bd98b;return _0x1d730b;})['then'](respondWithFilteredResult(_0x23e698,_0x490b7d))[_0xa55c('0x40')](handleError(_0x23e698,null));};exports[_0xa55c('0x41')]=function(_0x1630ac,_0x540337){var _0x1b2708={'raw':!![],'where':{'id':_0x1630ac['params']['id']}},_0xd5a006={};_0xd5a006[_0xa55c('0x30')]=_['keys'](db[_0xa55c('0x3e')][_0xa55c('0x2c')]);_0xd5a006['query']=_[_0xa55c('0x32')](_0x1630ac[_0xa55c('0x31')]);_0xd5a006['filters']=_[_0xa55c('0x33')](_0xd5a006[_0xa55c('0x30')],_0xd5a006[_0xa55c('0x31')]);_0x1b2708['attributes']=_[_0xa55c('0x33')](_0xd5a006['model'],qs[_0xa55c('0x34')](_0x1630ac[_0xa55c('0x31')][_0xa55c('0x34')]));_0x1b2708['attributes']=_0x1b2708[_0xa55c('0x35')][_0xa55c('0x36')]?_0x1b2708['attributes']:_0xd5a006[_0xa55c('0x30')];if(_0x1630ac[_0xa55c('0x31')]['includeAll']){_0x1b2708[_0xa55c('0x42')]=[{'all':!![]}];}_0x1b2708=_[_0xa55c('0x3d')]({},_0x1b2708,_0x1630ac['options']);return db[_0xa55c('0x3e')][_0xa55c('0x43')](_0x1b2708)[_0xa55c('0x20')](handleEntityNotFound(_0x540337,null))[_0xa55c('0x20')](respondWithResult(_0x540337,null))['catch'](handleError(_0x540337,null));};exports[_0xa55c('0x44')]=function(_0x58a7ea,_0x2157d6){return db[_0xa55c('0x3e')][_0xa55c('0x44')](_0x58a7ea['body'],{})[_0xa55c('0x20')](function(_0x250b00){var _0x574fe9=_0x58a7ea[_0xa55c('0x45')][_0xa55c('0x21')]({'plain':!![]});if(!_0x574fe9)throw new Error(_0xa55c('0x46'));if(_0x574fe9[_0xa55c('0x47')]===_0xa55c('0x45')){var _0x1c84d9=_0x250b00[_0xa55c('0x21')]({'plain':!![]});var _0x129626=_0xa55c('0x22');return db[_0xa55c('0x48')]['find']({'where':{'name':_0x129626,'userProfileId':_0x574fe9[_0xa55c('0x49')]},'raw':!![]})[_0xa55c('0x20')](function(_0x216de8){if(_0x216de8&&_0x216de8['autoAssociation']===0x0){return db[_0xa55c('0x23')][_0xa55c('0x44')]({'name':_0x1c84d9['name'],'resourceId':_0x1c84d9['id'],'type':_0x216de8[_0xa55c('0x28')],'sectionId':_0x216de8['id']},{})['then'](function(){return _0x250b00;});}else{return _0x250b00;}})[_0xa55c('0x40')](function(_0x228df4){logger[_0xa55c('0x4a')](_0xa55c('0x4b'),_0x228df4);throw _0x228df4;});}return _0x250b00;})[_0xa55c('0x20')](respondWithResult(_0x2157d6,0xc9))['catch'](handleError(_0x2157d6,null));};exports[_0xa55c('0x1f')]=function(_0x4607ca,_0x4b85cc){if(_0x4607ca[_0xa55c('0x4c')]['id']){delete _0x4607ca[_0xa55c('0x4c')]['id'];}return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x4607ca['params']['id']}})['then'](handleEntityNotFound(_0x4b85cc,null))[_0xa55c('0x20')](saveUpdates(_0x4607ca[_0xa55c('0x4c')],null))[_0xa55c('0x20')](respondWithResult(_0x4b85cc,null))[_0xa55c('0x40')](handleError(_0x4b85cc,null));};exports['destroy']=function(_0x30c0c9,_0x5ce463){return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x30c0c9[_0xa55c('0x4d')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x5ce463,null))[_0xa55c('0x20')](removeEntity(_0x5ce463,null))['catch'](handleError(_0x5ce463,null));};
\ No newline at end of file
index 2c401ed..c3e9068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','lodash'];(function(_0x350182,_0x2a9feb){var _0x4a0892=function(_0x2c994d){while(--_0x2c994d){_0x350182['push'](_0x350182['shift']());}};_0x4a0892(++_0x2a9feb);}(_0xe3da,0x1cd));var _0xae3d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe3da[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));module[_0xae3d('0xb')]=function(_0xa9a1a,_0xa54808){return _0xa9a1a[_0xae3d('0xc')](_0xae3d('0xd'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcbe=['analytics_metrics','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x40ac99,_0x283c8f){var _0x1c5c59=function(_0x45fa10){while(--_0x45fa10){_0x40ac99['push'](_0x40ac99['shift']());}};_0x1c5c59(++_0x283c8f);}(_0xfcbe,0x1b1));var _0xefcb=function(_0x349996,_0x44ca73){_0x349996=_0x349996-0x0;var _0xfa5c43=_0xfcbe[_0x349996];return _0xfa5c43;};'use strict';var _=require('lodash');var util=require(_0xefcb('0x0'));var logger=require(_0xefcb('0x1'))(_0xefcb('0x2'));var moment=require(_0xefcb('0x3'));var BPromise=require(_0xefcb('0x4'));var rp=require(_0xefcb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xefcb('0x6'));var config=require(_0xefcb('0x7'));var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x50dcde,_0x3f322c){return _0x50dcde['define']('AnalyticMetric',attributes,{'tableName':_0xefcb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 24ef10c..6058a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4aeb=['catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','result'];(function(_0x5037ab,_0x43209e){var _0x512adb=function(_0x261783){while(--_0x261783){_0x5037ab['push'](_0x5037ab['shift']());}};_0x512adb(++_0x43209e);}(_0x4aeb,0x18d));var _0xb4ae=function(_0x43a127,_0x3fe719){_0x43a127=_0x43a127-0x0;var _0x585f21=_0x4aeb[_0x43a127];return _0x585f21;};'use strict';var _=require('lodash');var util=require(_0xb4ae('0x0'));var moment=require('moment');var BPromise=require(_0xb4ae('0x1'));var rs=require(_0xb4ae('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb4ae('0x3'))['db'];var utils=require(_0xb4ae('0x4'));var logger=require(_0xb4ae('0x5'))('rpc');var config=require(_0xb4ae('0x6'));var jayson=require(_0xb4ae('0x7'));var client=jayson[_0xb4ae('0x8')][_0xb4ae('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4730fd,_0x5dba06,_0x18791a){return new BPromise(function(_0x5ca390,_0x2a088d){return client[_0xb4ae('0xa')](_0x4730fd,_0x18791a)[_0xb4ae('0xb')](function(_0xfe2414){logger[_0xb4ae('0xc')]('AnalyticMetric,\x20%s,\x20%s',_0x5dba06,_0xb4ae('0xd'));logger[_0xb4ae('0xe')]('AnalyticMetric,\x20%s,\x20%s,\x20%s',_0x5dba06,_0xb4ae('0xd'),JSON[_0xb4ae('0xf')](_0xfe2414));if(_0xfe2414[_0xb4ae('0x10')]){if(_0xfe2414[_0xb4ae('0x10')][_0xb4ae('0x11')]===0x1f4){logger['error'](_0xb4ae('0x12'),_0x5dba06,_0xfe2414[_0xb4ae('0x10')][_0xb4ae('0x13')]);return _0x2a088d(_0xfe2414[_0xb4ae('0x10')]['message']);}logger[_0xb4ae('0x10')](_0xb4ae('0x12'),_0x5dba06,_0xfe2414[_0xb4ae('0x10')][_0xb4ae('0x13')]);return _0x5ca390(_0xfe2414[_0xb4ae('0x10')][_0xb4ae('0x13')]);}else{logger[_0xb4ae('0xc')](_0xb4ae('0x12'),_0x5dba06,'request\x20sent');_0x5ca390(_0xfe2414[_0xb4ae('0x14')][_0xb4ae('0x13')]);}})[_0xb4ae('0x15')](function(_0x15c526){logger[_0xb4ae('0x10')](_0xb4ae('0x12'),_0x5dba06,_0x15c526);_0x2a088d(_0x15c526);});});}
\ No newline at end of file
+var _0x1c8e=['rpc','jayson/promise','http','request','then','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger'];(function(_0x1bff38,_0x1de52f){var _0x32a27e=function(_0x26a002){while(--_0x26a002){_0x1bff38['push'](_0x1bff38['shift']());}};_0x32a27e(++_0x1de52f);}(_0x1c8e,0xcb));var _0xe1c8=function(_0x7d500c,_0x5cb2e7){_0x7d500c=_0x7d500c-0x0;var _0x1d94d6=_0x1c8e[_0x7d500c];return _0x1d94d6;};'use strict';var _=require(_0xe1c8('0x0'));var util=require(_0xe1c8('0x1'));var moment=require(_0xe1c8('0x2'));var BPromise=require(_0xe1c8('0x3'));var rs=require(_0xe1c8('0x4'));var fs=require('fs');var Redis=require(_0xe1c8('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe1c8('0x6'))(_0xe1c8('0x7'));var config=require('../../config/environment');var jayson=require(_0xe1c8('0x8'));var client=jayson['client'][_0xe1c8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c04c5,_0x12eafa,_0x36a6ee){return new BPromise(function(_0x361fac,_0x207d9a){return client[_0xe1c8('0xa')](_0x3c04c5,_0x36a6ee)[_0xe1c8('0xb')](function(_0x48dad6){logger['info'](_0xe1c8('0xc'),_0x12eafa,_0xe1c8('0xd'));logger['debug'](_0xe1c8('0xe'),_0x12eafa,'request\x20sent',JSON[_0xe1c8('0xf')](_0x48dad6));if(_0x48dad6[_0xe1c8('0x10')]){if(_0x48dad6[_0xe1c8('0x10')][_0xe1c8('0x11')]===0x1f4){logger[_0xe1c8('0x10')](_0xe1c8('0xc'),_0x12eafa,_0x48dad6[_0xe1c8('0x10')][_0xe1c8('0x12')]);return _0x207d9a(_0x48dad6[_0xe1c8('0x10')][_0xe1c8('0x12')]);}logger[_0xe1c8('0x10')](_0xe1c8('0xc'),_0x12eafa,_0x48dad6[_0xe1c8('0x10')][_0xe1c8('0x12')]);return _0x361fac(_0x48dad6[_0xe1c8('0x10')][_0xe1c8('0x12')]);}else{logger[_0xe1c8('0x13')](_0xe1c8('0xc'),_0x12eafa,_0xe1c8('0xd'));_0x361fac(_0x48dad6[_0xe1c8('0x14')][_0xe1c8('0x12')]);}})['catch'](function(_0x496759){logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x12eafa,_0x496759);_0x207d9a(_0x496759);});});}
\ No newline at end of file
index d36142e..af57b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3641=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','util','express','Router'];(function(_0x700e28,_0x22f582){var _0x343db8=function(_0x442ef6){while(--_0x442ef6){_0x700e28['push'](_0x700e28['shift']());}};_0x343db8(++_0x22f582);}(_0x3641,0x173));var _0x1364=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3641[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x1364('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1364('0x1'));var router=express[_0x1364('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x1364('0x3'));var interaction=require(_0x1364('0x4'));var config=require(_0x1364('0x5'));var controller=require('./analyticMetric.controller');router[_0x1364('0x6')]('/',auth['isAuthenticated'](),controller[_0x1364('0x7')]);router[_0x1364('0x6')](_0x1364('0x8'),auth['isAuthenticated'](),controller[_0x1364('0x9')]);router[_0x1364('0xa')]('/',auth[_0x1364('0xb')](),controller[_0x1364('0xc')]);router[_0x1364('0xd')](_0x1364('0x8'),auth[_0x1364('0xb')](),controller[_0x1364('0xe')]);router[_0x1364('0xf')](_0x1364('0x8'),auth[_0x1364('0xb')](),controller[_0x1364('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x5024=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','show','create','put','update','/:id','destroy','exports'];(function(_0x48c5f6,_0x467809){var _0x5517a4=function(_0x48d762){while(--_0x48d762){_0x48c5f6['push'](_0x48c5f6['shift']());}};_0x5517a4(++_0x467809);}(_0x5024,0xf7));var _0x4502=function(_0x2b6327,_0x20fd51){_0x2b6327=_0x2b6327-0x0;var _0x2549b2=_0x5024[_0x2b6327];return _0x2549b2;};'use strict';var multer=require(_0x4502('0x0'));var util=require(_0x4502('0x1'));var path=require(_0x4502('0x2'));var timeout=require(_0x4502('0x3'));var express=require('express');var router=express[_0x4502('0x4')]();var fs_extra=require(_0x4502('0x5'));var auth=require(_0x4502('0x6'));var interaction=require(_0x4502('0x7'));var config=require(_0x4502('0x8'));var controller=require(_0x4502('0x9'));router[_0x4502('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x4502('0xa')]('/:id',auth[_0x4502('0xb')](),controller[_0x4502('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4502('0xd')]);router[_0x4502('0xe')]('/:id',auth[_0x4502('0xb')](),controller[_0x4502('0xf')]);router['delete'](_0x4502('0x10'),auth[_0x4502('0xb')](),controller[_0x4502('0x11')]);module[_0x4502('0x12')]=router;
\ No newline at end of file
index 6cbbdc3..4de707e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ee9=['sequelize'];(function(_0x535956,_0x411673){var _0x5b21ab=function(_0x428d54){while(--_0x428d54){_0x535956['push'](_0x535956['shift']());}};_0x5b21ab(++_0x411673);}(_0x3ee9,0xd5));var _0x93ee=function(_0x405dc0,_0x5f2898){_0x405dc0=_0x405dc0-0x0;var _0x1ed46d=_0x3ee9[_0x405dc0];return _0x1ed46d;};'use strict';var Sequelize=require(_0x93ee('0x0'));module['exports']={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x7cda=['exports','TEXT'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x7cda,0xf6));var _0xa7cd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7cda[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xa7cd('0x0')]={'tree':{'type':Sequelize[_0xa7cd('0x1')],'allowNull':![]}};
\ No newline at end of file
index 97a2be5..ecb98fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebbc=['find','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','path','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','error','name','send','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','catch','params'];(function(_0x2f35a6,_0x57e552){var _0x5a9e88=function(_0x1a1714){while(--_0x1a1714){_0x2f35a6['push'](_0x2f35a6['shift']());}};_0x5a9e88(++_0x57e552);}(_0xebbc,0x128));var _0xcebb=function(_0x3f2a90,_0x50baf1){_0x3f2a90=_0x3f2a90-0x0;var _0xb46279=_0xebbc[_0x3f2a90];return _0xb46279;};'use strict';var emlformat=require(_0xcebb('0x0'));var rimraf=require(_0xcebb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcebb('0x2'));var rp=require(_0xcebb('0x3'));var moment=require(_0xcebb('0x4'));var BPromise=require(_0xcebb('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xcebb('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcebb('0x7'));var _=require('lodash');var squel=require(_0xcebb('0x8'));var crypto=require('crypto');var jsforce=require(_0xcebb('0x9'));var deskjs=require(_0xcebb('0xa'));var toCsv=require(_0xcebb('0xb'));var querystring=require(_0xcebb('0xc'));var Papa=require(_0xcebb('0xd'));var Redis=require(_0xcebb('0xe'));var authService=require(_0xcebb('0xf'));var qs=require(_0xcebb('0x10'));var as=require(_0xcebb('0x11'));var hardwareService=require(_0xcebb('0x12'));var logger=require(_0xcebb('0x13'))(_0xcebb('0x14'));var utils=require(_0xcebb('0x15'));var config=require(_0xcebb('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xcebb('0x17'))['db'];function respondWithStatusCode(_0x15f07c,_0x58ffdd){_0x58ffdd=_0x58ffdd||0xcc;return function(_0x55bb10){if(_0x55bb10){return _0x15f07c[_0xcebb('0x18')](_0x58ffdd);}return _0x15f07c[_0xcebb('0x19')](_0x58ffdd)[_0xcebb('0x1a')]();};}function respondWithResult(_0x18e719,_0x3e7fe7){_0x3e7fe7=_0x3e7fe7||0xc8;return function(_0x217d53){if(_0x217d53){return _0x18e719[_0xcebb('0x19')](_0x3e7fe7)[_0xcebb('0x1b')](_0x217d53);}};}function respondWithFilteredResult(_0x30581d,_0x13ab50){return function(_0x42d309){if(_0x42d309){var _0x3ad17d=typeof _0x13ab50['offset']===_0xcebb('0x1c')&&typeof _0x13ab50[_0xcebb('0x1d')]==='undefined';var _0x4a37d8=_0x42d309[_0xcebb('0x1e')];var _0xfb29d5=_0x3ad17d?0x0:_0x13ab50['offset'];var _0x59684d=_0x3ad17d?_0x42d309[_0xcebb('0x1e')]:_0x13ab50[_0xcebb('0x1f')]+_0x13ab50[_0xcebb('0x1d')];var _0x433e86;if(_0x59684d>=_0x4a37d8){_0x59684d=_0x4a37d8;_0x433e86=0xc8;}else{_0x433e86=0xce;}_0x30581d[_0xcebb('0x19')](_0x433e86);return _0x30581d[_0xcebb('0x20')](_0xcebb('0x21'),_0xfb29d5+'-'+_0x59684d+'/'+_0x4a37d8)[_0xcebb('0x1b')](_0x42d309);}return null;};}function patchUpdates(_0x5cec17){return function(_0x3b884a){try{jsonpatch[_0xcebb('0x22')](_0x3b884a,_0x5cec17,!![]);}catch(_0x53d05f){return BPromise['reject'](_0x53d05f);}return _0x3b884a[_0xcebb('0x23')]();};}function saveUpdates(_0x1cd921,_0x4d1286){return function(_0x3c001c){if(_0x3c001c){return _0x3c001c[_0xcebb('0x24')](_0x1cd921)[_0xcebb('0x25')](function(_0x5bef83){return _0x5bef83;});}return null;};}function removeEntity(_0x48cb22,_0x5e51f4){return function(_0x544e75){if(_0x544e75){return _0x544e75['destroy']()['then'](function(){_0x48cb22[_0xcebb('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x432f61,_0x259274){return function(_0x469723){if(!_0x469723){_0x432f61[_0xcebb('0x18')](0x194);}return _0x469723;};}function handleError(_0xfe237a,_0x2f9747){_0x2f9747=_0x2f9747||0x1f4;return function(_0x36a7a9){logger[_0xcebb('0x26')](_0x36a7a9['stack']);if(_0x36a7a9['name']){delete _0x36a7a9[_0xcebb('0x27')];}_0xfe237a[_0xcebb('0x19')](_0x2f9747)[_0xcebb('0x28')](_0x36a7a9);};}exports[_0xcebb('0x29')]=function(_0x9f56a8,_0x1c5661){var _0x4d755a={},_0x29cd27={},_0x1c13c0={'count':0x0,'rows':[]};var _0x29289d=_[_0xcebb('0x2a')](db[_0xcebb('0x2b')][_0xcebb('0x2c')],function(_0x2c9810){return{'name':_0x2c9810[_0xcebb('0x2d')],'type':_0x2c9810[_0xcebb('0x2e')][_0xcebb('0x2f')]};});_0x29cd27['model']=_[_0xcebb('0x2a')](_0x29289d,_0xcebb('0x27'));_0x29cd27[_0xcebb('0x30')]=_[_0xcebb('0x31')](_0x9f56a8[_0xcebb('0x30')]);_0x29cd27[_0xcebb('0x32')]=_[_0xcebb('0x33')](_0x29cd27['model'],_0x29cd27[_0xcebb('0x30')]);_0x4d755a[_0xcebb('0x34')]=_[_0xcebb('0x33')](_0x29cd27[_0xcebb('0x35')],qs[_0xcebb('0x36')](_0x9f56a8[_0xcebb('0x30')]['fields']));_0x4d755a[_0xcebb('0x34')]=_0x4d755a['attributes']['length']?_0x4d755a[_0xcebb('0x34')]:_0x29cd27[_0xcebb('0x35')];if(!_0x9f56a8['query'][_0xcebb('0x37')](_0xcebb('0x38'))){_0x4d755a[_0xcebb('0x1d')]=qs[_0xcebb('0x1d')](_0x9f56a8['query'][_0xcebb('0x1d')]);_0x4d755a[_0xcebb('0x1f')]=qs['offset'](_0x9f56a8['query'][_0xcebb('0x1f')]);}_0x4d755a[_0xcebb('0x39')]=qs[_0xcebb('0x3a')](_0x9f56a8[_0xcebb('0x30')][_0xcebb('0x3a')]);_0x4d755a['where']=qs['filters'](_[_0xcebb('0x3b')](_0x9f56a8[_0xcebb('0x30')],_0x29cd27[_0xcebb('0x32')]),_0x29289d);if(_0x9f56a8[_0xcebb('0x30')]['filter']){_0x4d755a[_0xcebb('0x3c')]=_[_0xcebb('0x3d')](_0x4d755a['where'],{'$or':_[_0xcebb('0x2a')](_0x29289d,function(_0x6735a6){if(_0x6735a6[_0xcebb('0x2e')]!==_0xcebb('0x3e')){var _0x2504ae={};_0x2504ae[_0x6735a6['name']]={'$like':'%'+_0x9f56a8[_0xcebb('0x30')][_0xcebb('0x3f')]+'%'};return _0x2504ae;}})});}_0x4d755a=_[_0xcebb('0x3d')]({},_0x4d755a,_0x9f56a8[_0xcebb('0x40')]);var _0x45faf={'where':_0x4d755a[_0xcebb('0x3c')]};return db[_0xcebb('0x2b')][_0xcebb('0x1e')](_0x45faf)[_0xcebb('0x25')](function(_0x58b6d0){_0x1c13c0[_0xcebb('0x1e')]=_0x58b6d0;if(_0x9f56a8[_0xcebb('0x30')][_0xcebb('0x41')]){_0x4d755a[_0xcebb('0x42')]=[{'all':!![]}];}return db[_0xcebb('0x2b')]['findAll'](_0x4d755a);})[_0xcebb('0x25')](function(_0x480a68){_0x1c13c0['rows']=_0x480a68;return _0x1c13c0;})[_0xcebb('0x25')](respondWithFilteredResult(_0x1c5661,_0x4d755a))[_0xcebb('0x43')](handleError(_0x1c5661,null));};exports['show']=function(_0x44fdac,_0x47ca5f){var _0x589ac4={'raw':!![],'where':{'id':_0x44fdac[_0xcebb('0x44')]['id']}},_0x22c933={};_0x22c933[_0xcebb('0x35')]=_[_0xcebb('0x31')](db[_0xcebb('0x2b')]['rawAttributes']);_0x22c933[_0xcebb('0x30')]=_[_0xcebb('0x31')](_0x44fdac[_0xcebb('0x30')]);_0x22c933[_0xcebb('0x32')]=_[_0xcebb('0x33')](_0x22c933[_0xcebb('0x35')],_0x22c933[_0xcebb('0x30')]);_0x589ac4[_0xcebb('0x34')]=_[_0xcebb('0x33')](_0x22c933['model'],qs['fields'](_0x44fdac[_0xcebb('0x30')][_0xcebb('0x36')]));_0x589ac4[_0xcebb('0x34')]=_0x589ac4['attributes']['length']?_0x589ac4['attributes']:_0x22c933[_0xcebb('0x35')];if(_0x44fdac[_0xcebb('0x30')][_0xcebb('0x41')]){_0x589ac4['include']=[{'all':!![]}];}_0x589ac4=_[_0xcebb('0x3d')]({},_0x589ac4,_0x44fdac[_0xcebb('0x40')]);return db[_0xcebb('0x2b')][_0xcebb('0x45')](_0x589ac4)[_0xcebb('0x25')](handleEntityNotFound(_0x47ca5f,null))[_0xcebb('0x25')](respondWithResult(_0x47ca5f,null))['catch'](handleError(_0x47ca5f,null));};exports[_0xcebb('0x46')]=function(_0x4b9d89,_0xc39ebb){return db[_0xcebb('0x2b')][_0xcebb('0x46')](_0x4b9d89['body'],{})['then'](respondWithResult(_0xc39ebb,0xc9))[_0xcebb('0x43')](handleError(_0xc39ebb,null));};exports[_0xcebb('0x24')]=function(_0x835c62,_0xaa5624){if(_0x835c62[_0xcebb('0x47')]['id']){delete _0x835c62[_0xcebb('0x47')]['id'];}return db[_0xcebb('0x2b')][_0xcebb('0x45')]({'where':{'id':_0x835c62[_0xcebb('0x44')]['id']}})[_0xcebb('0x25')](handleEntityNotFound(_0xaa5624,null))['then'](saveUpdates(_0x835c62[_0xcebb('0x47')],null))['then'](respondWithResult(_0xaa5624,null))['catch'](handleError(_0xaa5624,null));};exports[_0xcebb('0x48')]=function(_0x4eaf34,_0x37ed4a){return db[_0xcebb('0x2b')][_0xcebb('0x45')]({'where':{'id':_0x4eaf34[_0xcebb('0x44')]['id']}})[_0xcebb('0x25')](handleEntityNotFound(_0x37ed4a,null))[_0xcebb('0x25')](removeEntity(_0x37ed4a,null))['catch'](handleError(_0x37ed4a,null));};
\ No newline at end of file
+var _0xb471=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','undefined','limit','count','offset','json','apply','reject','update','then','end','error','stack','name','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','params','length','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x1562a2,_0x2e4655){var _0x39a636=function(_0x25483a){while(--_0x25483a){_0x1562a2['push'](_0x1562a2['shift']());}};_0x39a636(++_0x2e4655);}(_0xb471,0x156));var _0x1b47=function(_0xe73d6f,_0x2fa06c){_0xe73d6f=_0xe73d6f-0x0;var _0x4f68e0=_0xb471[_0xe73d6f];return _0x4f68e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1b47('0x0'));var zipdir=require(_0x1b47('0x1'));var jsonpatch=require(_0x1b47('0x2'));var rp=require('request-promise');var moment=require(_0x1b47('0x3'));var BPromise=require(_0x1b47('0x4'));var Mustache=require(_0x1b47('0x5'));var util=require(_0x1b47('0x6'));var path=require(_0x1b47('0x7'));var sox=require(_0x1b47('0x8'));var csv=require(_0x1b47('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1b47('0xa'));var _=require(_0x1b47('0xb'));var squel=require(_0x1b47('0xc'));var crypto=require(_0x1b47('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1b47('0xe'));var toCsv=require(_0x1b47('0x9'));var querystring=require(_0x1b47('0xf'));var Papa=require(_0x1b47('0x10'));var Redis=require('ioredis');var authService=require(_0x1b47('0x11'));var qs=require(_0x1b47('0x12'));var as=require(_0x1b47('0x13'));var hardwareService=require(_0x1b47('0x14'));var logger=require(_0x1b47('0x15'))(_0x1b47('0x16'));var utils=require(_0x1b47('0x17'));var config=require(_0x1b47('0x18'));var licenseUtil=require(_0x1b47('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x163f64,_0x19e6a6){_0x19e6a6=_0x19e6a6||0xcc;return function(_0x331ff5){if(_0x331ff5){return _0x163f64[_0x1b47('0x1a')](_0x19e6a6);}return _0x163f64[_0x1b47('0x1b')](_0x19e6a6)['end']();};}function respondWithResult(_0x2aaa0d,_0x33cf53){_0x33cf53=_0x33cf53||0xc8;return function(_0x222d21){if(_0x222d21){return _0x2aaa0d[_0x1b47('0x1b')](_0x33cf53)['json'](_0x222d21);}};}function respondWithFilteredResult(_0x315d9f,_0x51bb18){return function(_0x204f01){if(_0x204f01){var _0x389a49=typeof _0x51bb18['offset']===_0x1b47('0x1c')&&typeof _0x51bb18[_0x1b47('0x1d')]===_0x1b47('0x1c');var _0x56c56e=_0x204f01[_0x1b47('0x1e')];var _0x1bef63=_0x389a49?0x0:_0x51bb18[_0x1b47('0x1f')];var _0x279ad0=_0x389a49?_0x204f01[_0x1b47('0x1e')]:_0x51bb18[_0x1b47('0x1f')]+_0x51bb18[_0x1b47('0x1d')];var _0x56a91a;if(_0x279ad0>=_0x56c56e){_0x279ad0=_0x56c56e;_0x56a91a=0xc8;}else{_0x56a91a=0xce;}_0x315d9f[_0x1b47('0x1b')](_0x56a91a);return _0x315d9f['set']('Content-Range',_0x1bef63+'-'+_0x279ad0+'/'+_0x56c56e)[_0x1b47('0x20')](_0x204f01);}return null;};}function patchUpdates(_0x35e24a){return function(_0x3cce10){try{jsonpatch[_0x1b47('0x21')](_0x3cce10,_0x35e24a,!![]);}catch(_0x168906){return BPromise[_0x1b47('0x22')](_0x168906);}return _0x3cce10['save']();};}function saveUpdates(_0x2987b7,_0x44b812){return function(_0x1b811e){if(_0x1b811e){return _0x1b811e[_0x1b47('0x23')](_0x2987b7)[_0x1b47('0x24')](function(_0x1dd53f){return _0x1dd53f;});}return null;};}function removeEntity(_0x5511f0,_0x60b124){return function(_0x151135){if(_0x151135){return _0x151135['destroy']()['then'](function(){_0x5511f0[_0x1b47('0x1b')](0xcc)[_0x1b47('0x25')]();});}};}function handleEntityNotFound(_0x4b290b,_0x5f3983){return function(_0xd39e75){if(!_0xd39e75){_0x4b290b[_0x1b47('0x1a')](0x194);}return _0xd39e75;};}function handleError(_0x4f0419,_0xc659ab){_0xc659ab=_0xc659ab||0x1f4;return function(_0x31663f){logger[_0x1b47('0x26')](_0x31663f[_0x1b47('0x27')]);if(_0x31663f[_0x1b47('0x28')]){delete _0x31663f['name'];}_0x4f0419[_0x1b47('0x1b')](_0xc659ab)['send'](_0x31663f);};}exports['index']=function(_0xd50333,_0x2e2ef4){var _0xeef7c7={},_0x249072={},_0x5e70e2={'count':0x0,'rows':[]};var _0x266fc7=_[_0x1b47('0x29')](db[_0x1b47('0x2a')][_0x1b47('0x2b')],function(_0x5e66df){return{'name':_0x5e66df[_0x1b47('0x2c')],'type':_0x5e66df[_0x1b47('0x2d')][_0x1b47('0x2e')]};});_0x249072['model']=_[_0x1b47('0x29')](_0x266fc7,'name');_0x249072[_0x1b47('0x2f')]=_[_0x1b47('0x30')](_0xd50333[_0x1b47('0x2f')]);_0x249072['filters']=_[_0x1b47('0x31')](_0x249072[_0x1b47('0x32')],_0x249072[_0x1b47('0x2f')]);_0xeef7c7['attributes']=_[_0x1b47('0x31')](_0x249072[_0x1b47('0x32')],qs[_0x1b47('0x33')](_0xd50333[_0x1b47('0x2f')][_0x1b47('0x33')]));_0xeef7c7['attributes']=_0xeef7c7[_0x1b47('0x34')]['length']?_0xeef7c7[_0x1b47('0x34')]:_0x249072[_0x1b47('0x32')];if(!_0xd50333[_0x1b47('0x2f')][_0x1b47('0x35')](_0x1b47('0x36'))){_0xeef7c7['limit']=qs[_0x1b47('0x1d')](_0xd50333[_0x1b47('0x2f')][_0x1b47('0x1d')]);_0xeef7c7[_0x1b47('0x1f')]=qs[_0x1b47('0x1f')](_0xd50333['query'][_0x1b47('0x1f')]);}_0xeef7c7['order']=qs[_0x1b47('0x37')](_0xd50333[_0x1b47('0x2f')]['sort']);_0xeef7c7['where']=qs[_0x1b47('0x38')](_['pick'](_0xd50333[_0x1b47('0x2f')],_0x249072[_0x1b47('0x38')]),_0x266fc7);if(_0xd50333[_0x1b47('0x2f')][_0x1b47('0x39')]){_0xeef7c7[_0x1b47('0x3a')]=_[_0x1b47('0x3b')](_0xeef7c7[_0x1b47('0x3a')],{'$or':_[_0x1b47('0x29')](_0x266fc7,function(_0x3cd668){if(_0x3cd668[_0x1b47('0x2d')]!==_0x1b47('0x3c')){var _0x39de5c={};_0x39de5c[_0x3cd668[_0x1b47('0x28')]]={'$like':'%'+_0xd50333[_0x1b47('0x2f')][_0x1b47('0x39')]+'%'};return _0x39de5c;}})});}_0xeef7c7=_[_0x1b47('0x3b')]({},_0xeef7c7,_0xd50333[_0x1b47('0x3d')]);var _0x489a55={'where':_0xeef7c7[_0x1b47('0x3a')]};return db[_0x1b47('0x2a')][_0x1b47('0x1e')](_0x489a55)[_0x1b47('0x24')](function(_0x5983a0){_0x5e70e2[_0x1b47('0x1e')]=_0x5983a0;if(_0xd50333[_0x1b47('0x2f')][_0x1b47('0x3e')]){_0xeef7c7[_0x1b47('0x3f')]=[{'all':!![]}];}return db['AnalyticTreeReport']['findAll'](_0xeef7c7);})[_0x1b47('0x24')](function(_0x585ae8){_0x5e70e2[_0x1b47('0x40')]=_0x585ae8;return _0x5e70e2;})['then'](respondWithFilteredResult(_0x2e2ef4,_0xeef7c7))[_0x1b47('0x41')](handleError(_0x2e2ef4,null));};exports['show']=function(_0x49d1ac,_0x6bfadf){var _0x31df73={'raw':!![],'where':{'id':_0x49d1ac[_0x1b47('0x42')]['id']}},_0x2cc3a4={};_0x2cc3a4[_0x1b47('0x32')]=_[_0x1b47('0x30')](db[_0x1b47('0x2a')][_0x1b47('0x2b')]);_0x2cc3a4[_0x1b47('0x2f')]=_['keys'](_0x49d1ac[_0x1b47('0x2f')]);_0x2cc3a4[_0x1b47('0x38')]=_['intersection'](_0x2cc3a4[_0x1b47('0x32')],_0x2cc3a4[_0x1b47('0x2f')]);_0x31df73['attributes']=_[_0x1b47('0x31')](_0x2cc3a4['model'],qs[_0x1b47('0x33')](_0x49d1ac[_0x1b47('0x2f')]['fields']));_0x31df73[_0x1b47('0x34')]=_0x31df73['attributes'][_0x1b47('0x43')]?_0x31df73['attributes']:_0x2cc3a4['model'];if(_0x49d1ac[_0x1b47('0x2f')][_0x1b47('0x3e')]){_0x31df73['include']=[{'all':!![]}];}_0x31df73=_[_0x1b47('0x3b')]({},_0x31df73,_0x49d1ac[_0x1b47('0x3d')]);return db[_0x1b47('0x2a')][_0x1b47('0x44')](_0x31df73)['then'](handleEntityNotFound(_0x6bfadf,null))['then'](respondWithResult(_0x6bfadf,null))[_0x1b47('0x41')](handleError(_0x6bfadf,null));};exports[_0x1b47('0x45')]=function(_0x457a23,_0x998931){return db[_0x1b47('0x2a')][_0x1b47('0x45')](_0x457a23[_0x1b47('0x46')],{})[_0x1b47('0x24')](respondWithResult(_0x998931,0xc9))[_0x1b47('0x41')](handleError(_0x998931,null));};exports['update']=function(_0x1dafcf,_0x301548){if(_0x1dafcf[_0x1b47('0x46')]['id']){delete _0x1dafcf['body']['id'];}return db[_0x1b47('0x2a')][_0x1b47('0x44')]({'where':{'id':_0x1dafcf[_0x1b47('0x42')]['id']}})[_0x1b47('0x24')](handleEntityNotFound(_0x301548,null))['then'](saveUpdates(_0x1dafcf['body'],null))[_0x1b47('0x24')](respondWithResult(_0x301548,null))[_0x1b47('0x41')](handleError(_0x301548,null));};exports[_0x1b47('0x47')]=function(_0xd92114,_0x58b8d5){return db['AnalyticTreeReport'][_0x1b47('0x44')]({'where':{'id':_0xd92114[_0x1b47('0x42')]['id']}})[_0x1b47('0x24')](handleEntityNotFound(_0x58b8d5,null))['then'](removeEntity(_0x58b8d5,null))[_0x1b47('0x41')](handleError(_0x58b8d5,null));};
\ No newline at end of file
index 2fcc153..434be34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4b5=['path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','api','moment','request-promise'];(function(_0x18d1c3,_0x62846b){var _0x2c00cb=function(_0x1e3b23){while(--_0x1e3b23){_0x18d1c3['push'](_0x18d1c3['shift']());}};_0x2c00cb(++_0x62846b);}(_0xe4b5,0x119));var _0x5e4b=function(_0x55441b,_0x226954){_0x55441b=_0x55441b-0x0;var _0x4aa01d=_0xe4b5[_0x55441b];return _0x4aa01d;};'use strict';var _=require(_0x5e4b('0x0'));var util=require(_0x5e4b('0x1'));var logger=require('../../config/logger')(_0x5e4b('0x2'));var moment=require(_0x5e4b('0x3'));var BPromise=require('bluebird');var rp=require(_0x5e4b('0x4'));var fs=require('fs');var path=require(_0x5e4b('0x5'));var rimraf=require(_0x5e4b('0x6'));var config=require(_0x5e4b('0x7'));var attributes=require(_0x5e4b('0x8'));module[_0x5e4b('0x9')]=function(_0x1761bf,_0x52e86c){return _0x1761bf[_0x5e4b('0xa')](_0x5e4b('0xb'),attributes,{'tableName':_0x5e4b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1bd6=['exports','AnalyticTreeReport','analytics_report_trees','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xa21fee,_0x11d555){var _0x467965=function(_0x36c742){while(--_0x36c742){_0xa21fee['push'](_0xa21fee['shift']());}};_0x467965(++_0x11d555);}(_0x1bd6,0xea));var _0x61bd=function(_0xf35028,_0x3d0ce9){_0xf35028=_0xf35028-0x0;var _0x15ba57=_0x1bd6[_0xf35028];return _0x15ba57;};'use strict';var _=require('lodash');var util=require(_0x61bd('0x0'));var logger=require('../../config/logger')(_0x61bd('0x1'));var moment=require(_0x61bd('0x2'));var BPromise=require(_0x61bd('0x3'));var rp=require(_0x61bd('0x4'));var fs=require('fs');var path=require(_0x61bd('0x5'));var rimraf=require(_0x61bd('0x6'));var config=require(_0x61bd('0x7'));var attributes=require('./analyticTreeReport.attributes');module[_0x61bd('0x8')]=function(_0x45e1e1,_0x33c19c){return _0x45e1e1['define'](_0x61bd('0x9'),attributes,{'tableName':_0x61bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8349e5a..d934fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x401b3e,_0xed8de5){var _0x4f290f=function(_0xa45f77){while(--_0xa45f77){_0x401b3e['push'](_0x401b3e['shift']());}};_0x4f290f(++_0xed8de5);}(_0x2ef3,0xba));var _0x32ef=function(_0x3c9169,_0x34d37a){_0x3c9169=_0x3c9169-0x0;var _0x1e73ae=_0x2ef3[_0x3c9169];return _0x1e73ae;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x3cf3d7,_0x350963){var _0x170bdf=function(_0x2c1433){while(--_0x2c1433){_0x3cf3d7['push'](_0x3cf3d7['shift']());}};_0x170bdf(++_0x350963);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xc4aa[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 2477916..3072bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d2a=['get','isAuthenticated','index','/:id','show','post','create','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./analyticTreeReport.controller'];(function(_0x3ab12c,_0x26cb8e){var _0x27f407=function(_0x43d471){while(--_0x43d471){_0x3ab12c['push'](_0x3ab12c['shift']());}};_0x27f407(++_0x26cb8e);}(_0x9d2a,0x9a));var _0xa9d2=function(_0x2f194d,_0x5b7ed8){_0x2f194d=_0x2f194d-0x0;var _0x5121fc=_0x9d2a[_0x2f194d];return _0x5121fc;};'use strict';var multer=require('multer');var util=require(_0xa9d2('0x0'));var path=require(_0xa9d2('0x1'));var timeout=require(_0xa9d2('0x2'));var express=require(_0xa9d2('0x3'));var router=express[_0xa9d2('0x4')]();var fs_extra=require(_0xa9d2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa9d2('0x6'));var config=require('../../config/environment');var controller=require(_0xa9d2('0x7'));router[_0xa9d2('0x8')]('/',auth[_0xa9d2('0x9')](),controller[_0xa9d2('0xa')]);router['get'](_0xa9d2('0xb'),auth[_0xa9d2('0x9')](),controller[_0xa9d2('0xc')]);router[_0xa9d2('0xd')]('/',auth['isAuthenticated'](),controller[_0xa9d2('0xe')]);router[_0xa9d2('0xf')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa9d2('0x10')](_0xa9d2('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xa9d2('0x11')]=router;
\ No newline at end of file
+var _0xbe17=['create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show'];(function(_0x21b62a,_0x1df188){var _0x3b3bcd=function(_0xe675bc){while(--_0xe675bc){_0x21b62a['push'](_0x21b62a['shift']());}};_0x3b3bcd(++_0x1df188);}(_0xbe17,0x1f3));var _0x7be1=function(_0x5e5587,_0x50c6b5){_0x5e5587=_0x5e5587-0x0;var _0x10e8ae=_0xbe17[_0x5e5587];return _0x10e8ae;};'use strict';var multer=require(_0x7be1('0x0'));var util=require(_0x7be1('0x1'));var path=require(_0x7be1('0x2'));var timeout=require(_0x7be1('0x3'));var express=require(_0x7be1('0x4'));var router=express[_0x7be1('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7be1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7be1('0x7'));var controller=require(_0x7be1('0x8'));router[_0x7be1('0x9')]('/',auth[_0x7be1('0xa')](),controller[_0x7be1('0xb')]);router[_0x7be1('0x9')](_0x7be1('0xc'),auth[_0x7be1('0xa')](),controller[_0x7be1('0xd')]);router['post']('/',auth[_0x7be1('0xa')](),controller[_0x7be1('0xe')]);router[_0x7be1('0xf')](_0x7be1('0xc'),auth[_0x7be1('0xa')](),controller[_0x7be1('0x10')]);router['delete'](_0x7be1('0xc'),auth[_0x7be1('0xa')](),controller[_0x7be1('0x11')]);module[_0x7be1('0x12')]=router;
\ No newline at end of file
index 318e716..53bb6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3036=['STRING'];(function(_0x200ec3,_0x5a4c16){var _0xe8f703=function(_0x485e62){while(--_0x485e62){_0x200ec3['push'](_0x200ec3['shift']());}};_0xe8f703(++_0x5a4c16);}(_0x3036,0x1a9));var _0x6303=function(_0x1b4329,_0x556a00){_0x1b4329=_0x1b4329-0x0;var _0x4db51e=_0x3036[_0x1b4329];return _0x4db51e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x6303('0x0')]},'basename':{'type':Sequelize[_0x6303('0x0')]},'type':{'type':Sequelize[_0x6303('0x0')]}};
\ No newline at end of file
+var _0xed8a=['exports','STRING','sequelize'];(function(_0x240e17,_0x3a588e){var _0x1538bb=function(_0x4d407f){while(--_0x4d407f){_0x240e17['push'](_0x240e17['shift']());}};_0x1538bb(++_0x3a588e);}(_0xed8a,0xc5));var _0xaed8=function(_0x4c7968,_0x1a5c61){_0x4c7968=_0x4c7968-0x0;var _0x50f994=_0xed8a[_0x4c7968];return _0x50f994;};'use strict';var Sequelize=require(_0xaed8('0x0'));module[_0xaed8('0x1')]={'name':{'type':Sequelize[_0xaed8('0x2')]},'basename':{'type':Sequelize[_0xaed8('0x2')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cf445cd..8489288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c80=['save','then','destroy','end','error','stack','name','send','index','map','Attachment','rawAttributes','type','model','query','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','filters','find','includeAll','get','omit','createdAt','updatedAt','body','update','create','file','originalname','filename','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject'];(function(_0x5094c6,_0x285652){var _0x44c4b4=function(_0x128653){while(--_0x128653){_0x5094c6['push'](_0x5094c6['shift']());}};_0x44c4b4(++_0x285652);}(_0x7c80,0x193));var _0x07c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c80[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x07c8('0x0'));var zipdir=require(_0x07c8('0x1'));var jsonpatch=require(_0x07c8('0x2'));var rp=require(_0x07c8('0x3'));var moment=require(_0x07c8('0x4'));var BPromise=require(_0x07c8('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x07c8('0x6'));var sox=require(_0x07c8('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x07c8('0x8'));var _=require('lodash');var squel=require(_0x07c8('0x9'));var crypto=require(_0x07c8('0xa'));var jsforce=require(_0x07c8('0xb'));var deskjs=require(_0x07c8('0xc'));var toCsv=require(_0x07c8('0xd'));var querystring=require(_0x07c8('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x07c8('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x07c8('0x10'));var hardwareService=require(_0x07c8('0x11'));var logger=require(_0x07c8('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x07c8('0x13'));var licenseUtil=require(_0x07c8('0x14'));var db=require(_0x07c8('0x15'))['db'];function respondWithStatusCode(_0x4ae86f,_0x3d6f54){_0x3d6f54=_0x3d6f54||0xcc;return function(_0x187e7f){if(_0x187e7f){return _0x4ae86f[_0x07c8('0x16')](_0x3d6f54);}return _0x4ae86f[_0x07c8('0x17')](_0x3d6f54)['end']();};}function respondWithResult(_0x25d1fa,_0x266a53){_0x266a53=_0x266a53||0xc8;return function(_0x2384bb){if(_0x2384bb){return _0x25d1fa[_0x07c8('0x17')](_0x266a53)[_0x07c8('0x18')](_0x2384bb);}};}function respondWithFilteredResult(_0x120829,_0x5f187f){return function(_0x45ad91){if(_0x45ad91){var _0x45982=typeof _0x5f187f[_0x07c8('0x19')]===_0x07c8('0x1a')&&typeof _0x5f187f['limit']===_0x07c8('0x1a');var _0x2c6fcc=_0x45ad91['count'];var _0x2ca2ee=_0x45982?0x0:_0x5f187f[_0x07c8('0x19')];var _0x4f3ec2=_0x45982?_0x45ad91[_0x07c8('0x1b')]:_0x5f187f[_0x07c8('0x19')]+_0x5f187f[_0x07c8('0x1c')];var _0x2b8ebd;if(_0x4f3ec2>=_0x2c6fcc){_0x4f3ec2=_0x2c6fcc;_0x2b8ebd=0xc8;}else{_0x2b8ebd=0xce;}_0x120829[_0x07c8('0x17')](_0x2b8ebd);return _0x120829['set'](_0x07c8('0x1d'),_0x2ca2ee+'-'+_0x4f3ec2+'/'+_0x2c6fcc)[_0x07c8('0x18')](_0x45ad91);}return null;};}function patchUpdates(_0x167c6d){return function(_0x574911){try{jsonpatch[_0x07c8('0x1e')](_0x574911,_0x167c6d,!![]);}catch(_0x585e75){return BPromise[_0x07c8('0x1f')](_0x585e75);}return _0x574911[_0x07c8('0x20')]();};}function saveUpdates(_0x35d687,_0x24aa94){return function(_0x4a59cb){if(_0x4a59cb){return _0x4a59cb['update'](_0x35d687)[_0x07c8('0x21')](function(_0x239020){return _0x239020;});}return null;};}function removeEntity(_0x1b7ac4,_0x1793a6){return function(_0x366bac){if(_0x366bac){return _0x366bac[_0x07c8('0x22')]()['then'](function(){_0x1b7ac4[_0x07c8('0x17')](0xcc)[_0x07c8('0x23')]();});}};}function handleEntityNotFound(_0x22b35e,_0x192568){return function(_0x14c62f){if(!_0x14c62f){_0x22b35e[_0x07c8('0x16')](0x194);}return _0x14c62f;};}function handleError(_0x4395aa,_0x94c396){_0x94c396=_0x94c396||0x1f4;return function(_0x1583da){logger[_0x07c8('0x24')](_0x1583da[_0x07c8('0x25')]);if(_0x1583da[_0x07c8('0x26')]){delete _0x1583da[_0x07c8('0x26')];}_0x4395aa[_0x07c8('0x17')](_0x94c396)[_0x07c8('0x27')](_0x1583da);};}exports[_0x07c8('0x28')]=function(_0x584558,_0x517af9){var _0x12f24e={},_0x3fbeac={},_0x23b7d9={'count':0x0,'rows':[]};var _0x31962f=_[_0x07c8('0x29')](db[_0x07c8('0x2a')][_0x07c8('0x2b')],function(_0x29186d){return{'name':_0x29186d['fieldName'],'type':_0x29186d[_0x07c8('0x2c')]['key']};});_0x3fbeac[_0x07c8('0x2d')]=_[_0x07c8('0x29')](_0x31962f,'name');_0x3fbeac[_0x07c8('0x2e')]=_['keys'](_0x584558[_0x07c8('0x2e')]);_0x3fbeac['filters']=_[_0x07c8('0x2f')](_0x3fbeac[_0x07c8('0x2d')],_0x3fbeac['query']);_0x12f24e[_0x07c8('0x30')]=_[_0x07c8('0x2f')](_0x3fbeac[_0x07c8('0x2d')],qs[_0x07c8('0x31')](_0x584558['query'][_0x07c8('0x31')]));_0x12f24e[_0x07c8('0x30')]=_0x12f24e[_0x07c8('0x30')][_0x07c8('0x32')]?_0x12f24e[_0x07c8('0x30')]:_0x3fbeac[_0x07c8('0x2d')];if(!_0x584558['query'][_0x07c8('0x33')]('nolimit')){_0x12f24e[_0x07c8('0x1c')]=qs[_0x07c8('0x1c')](_0x584558[_0x07c8('0x2e')]['limit']);_0x12f24e[_0x07c8('0x19')]=qs[_0x07c8('0x19')](_0x584558[_0x07c8('0x2e')][_0x07c8('0x19')]);}_0x12f24e[_0x07c8('0x34')]=qs['sort'](_0x584558[_0x07c8('0x2e')]['sort']);_0x12f24e[_0x07c8('0x35')]=qs['filters'](_[_0x07c8('0x36')](_0x584558[_0x07c8('0x2e')],_0x3fbeac['filters']),_0x31962f);if(_0x584558[_0x07c8('0x2e')][_0x07c8('0x37')]){_0x12f24e['where']=_[_0x07c8('0x38')](_0x12f24e['where'],{'$or':_['map'](_0x31962f,function(_0x16ee0c){if(_0x16ee0c[_0x07c8('0x2c')]!==_0x07c8('0x39')){var _0x2452ac={};_0x2452ac[_0x16ee0c['name']]={'$like':'%'+_0x584558['query'][_0x07c8('0x37')]+'%'};return _0x2452ac;}})});}_0x12f24e=_[_0x07c8('0x38')]({},_0x12f24e,_0x584558[_0x07c8('0x3a')]);var _0x1126e5={'where':_0x12f24e[_0x07c8('0x35')]};return db['Attachment']['count'](_0x1126e5)[_0x07c8('0x21')](function(_0x9f057c){_0x23b7d9[_0x07c8('0x1b')]=_0x9f057c;if(_0x584558['query']['includeAll']){_0x12f24e[_0x07c8('0x3b')]=[{'all':!![]}];}return db[_0x07c8('0x2a')][_0x07c8('0x3c')](_0x12f24e);})[_0x07c8('0x21')](function(_0x4bb483){_0x23b7d9[_0x07c8('0x3d')]=_0x4bb483;return _0x23b7d9;})[_0x07c8('0x21')](respondWithFilteredResult(_0x517af9,_0x12f24e))[_0x07c8('0x3e')](handleError(_0x517af9,null));};exports[_0x07c8('0x3f')]=function(_0x36c932,_0x26dcd9){var _0xa23e5b={'raw':!![],'where':{'id':_0x36c932[_0x07c8('0x40')]['id']}},_0x213452={};_0x213452[_0x07c8('0x2d')]=_[_0x07c8('0x41')](db[_0x07c8('0x2a')][_0x07c8('0x2b')]);_0x213452[_0x07c8('0x2e')]=_[_0x07c8('0x41')](_0x36c932[_0x07c8('0x2e')]);_0x213452[_0x07c8('0x42')]=_[_0x07c8('0x2f')](_0x213452['model'],_0x213452[_0x07c8('0x2e')]);_0xa23e5b[_0x07c8('0x30')]=_[_0x07c8('0x2f')](_0x213452[_0x07c8('0x2d')],qs[_0x07c8('0x31')](_0x36c932[_0x07c8('0x2e')][_0x07c8('0x31')]));_0xa23e5b[_0x07c8('0x30')]=_0xa23e5b['attributes']['length']?_0xa23e5b[_0x07c8('0x30')]:_0x213452[_0x07c8('0x2d')];if(_0x36c932['query']['includeAll']){_0xa23e5b[_0x07c8('0x3b')]=[{'all':!![]}];}_0xa23e5b=_[_0x07c8('0x38')]({},_0xa23e5b,_0x36c932[_0x07c8('0x3a')]);return db[_0x07c8('0x2a')][_0x07c8('0x43')](_0xa23e5b)[_0x07c8('0x21')](handleEntityNotFound(_0x26dcd9,null))['then'](respondWithResult(_0x26dcd9,null))['catch'](handleError(_0x26dcd9,null));};exports['clone']=function(_0x101ad0,_0xca871c){var _0x201537={'where':{'id':_0x101ad0[_0x07c8('0x40')]['id']}},_0x3b526b={};_0x3b526b[_0x07c8('0x2d')]=_[_0x07c8('0x41')](db[_0x07c8('0x2a')]['rawAttributes']);_0x201537['attributes']=_[_0x07c8('0x2f')](_0x3b526b['model'],qs['fields'](_0x101ad0[_0x07c8('0x2e')][_0x07c8('0x31')]));_0x201537['attributes']=_0x201537[_0x07c8('0x30')][_0x07c8('0x32')]?_0x201537['attributes']:_0x3b526b['model'];if(_0x101ad0[_0x07c8('0x2e')][_0x07c8('0x44')]){_0x201537[_0x07c8('0x3b')]=[{'all':!![]}];}_0x201537=_[_0x07c8('0x38')]({},_0x201537,_0x101ad0[_0x07c8('0x3a')]);return db[_0x07c8('0x2a')][_0x07c8('0x43')](_0x201537)[_0x07c8('0x21')](handleEntityNotFound(_0xca871c,null))[_0x07c8('0x21')](function(_0x13e8f0){if(_0x13e8f0){var _0xc34c57=_0x13e8f0[_0x07c8('0x45')]({'plain':!![]});_0xc34c57=qs[_0x07c8('0x46')](_0xc34c57,['id',_0x07c8('0x47'),_0x07c8('0x48')]);_0x101ad0['body']=_[_0x07c8('0x46')](_0x101ad0['body'],['id','createdAt','updatedAt']);return db['Attachment']['create'](_[_0x07c8('0x38')](_0xc34c57,_0x101ad0[_0x07c8('0x49')]),{'include':_0x101ad0[_0x07c8('0x2e')][_0x07c8('0x44')]?[{'all':!![]}]:undefined});}})[_0x07c8('0x21')](respondWithResult(_0xca871c,0xc9))['catch'](handleError(_0xca871c,null));};exports[_0x07c8('0x4a')]=function(_0x276fba,_0x2972e1){if(_0x276fba['body']['id']){delete _0x276fba['body']['id'];}return db[_0x07c8('0x2a')][_0x07c8('0x43')]({'where':{'id':_0x276fba[_0x07c8('0x40')]['id']}})['then'](handleEntityNotFound(_0x2972e1,null))['then'](saveUpdates(_0x276fba[_0x07c8('0x49')],null))[_0x07c8('0x21')](respondWithResult(_0x2972e1,null))[_0x07c8('0x3e')](handleError(_0x2972e1,null));};exports[_0x07c8('0x22')]=function(_0x3d8466,_0x38d226){return db[_0x07c8('0x2a')][_0x07c8('0x43')]({'where':{'id':_0x3d8466[_0x07c8('0x40')]['id']}})['then'](handleEntityNotFound(_0x38d226,null))[_0x07c8('0x21')](removeEntity(_0x38d226,null))[_0x07c8('0x3e')](handleError(_0x38d226,null));};exports[_0x07c8('0x4b')]=function(_0x2e7021,_0x2d9db7,_0xe778f9){_0x2e7021[_0x07c8('0x49')]['name']=_0x2e7021[_0x07c8('0x4c')][_0x07c8('0x4d')];_0x2e7021['body']['basename']=_0x2e7021[_0x07c8('0x4c')][_0x07c8('0x4e')];_0x2e7021['body'][_0x07c8('0x2c')]=_0x2e7021[_0x07c8('0x4c')]['mimetype'];return db[_0x07c8('0x2a')][_0x07c8('0x4b')](_0x2e7021['body'])[_0x07c8('0x21')](respondWithResult(_0x2d9db7,0xc9))[_0x07c8('0x3e')](handleError(_0x2d9db7,null));};exports['download']=function(_0x444733,_0x48189f,_0x2f0892){return db[_0x07c8('0x2a')][_0x07c8('0x4f')]({'where':{'id':_0x444733[_0x07c8('0x40')]['id']},'raw':!![]})[_0x07c8('0x21')](handleEntityNotFound(_0x48189f,null))[_0x07c8('0x21')](function(_0x784115){if(_0x784115){var _0x4c454f=_0x784115[_0x07c8('0x50')]!==null;var _0x20404c=path[_0x07c8('0x51')](config[_0x07c8('0x52')],_0x07c8('0x53'));if(_0x4c454f){_0x20404c=path[_0x07c8('0x51')](_0x20404c,_0x07c8('0x54'));}var _0x48df28=path[_0x07c8('0x51')](_0x20404c,_0x784115[_0x07c8('0x55')]);return _0x48189f[_0x07c8('0x56')](_0x48df28);}})[_0x07c8('0x3e')](handleError(_0x48189f,null));};
\ No newline at end of file
+var _0xcdac=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','Attachment','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','catch','params','createdAt','omit','body','create','file','originalname','basename','filename','mimetype','findOne','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x3a71ec,_0x4402c2){var _0x4427ad=function(_0x274872){while(--_0x274872){_0x3a71ec['push'](_0x3a71ec['shift']());}};_0x4427ad(++_0x4402c2);}(_0xcdac,0x1a6));var _0xccda=function(_0x4e82e8,_0x558df1){_0x4e82e8=_0x4e82e8-0x0;var _0x4d5e5f=_0xcdac[_0x4e82e8];return _0x4d5e5f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xccda('0x0'));var zipdir=require(_0xccda('0x1'));var jsonpatch=require(_0xccda('0x2'));var rp=require(_0xccda('0x3'));var moment=require(_0xccda('0x4'));var BPromise=require(_0xccda('0x5'));var Mustache=require(_0xccda('0x6'));var util=require(_0xccda('0x7'));var path=require('path');var sox=require(_0xccda('0x8'));var csv=require(_0xccda('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xccda('0xa'));var _=require(_0xccda('0xb'));var squel=require('squel');var crypto=require(_0xccda('0xc'));var jsforce=require(_0xccda('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xccda('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xccda('0xf'));var as=require(_0xccda('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xccda('0x11'))('api');var utils=require(_0xccda('0x12'));var config=require(_0xccda('0x13'));var licenseUtil=require(_0xccda('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x235e01,_0x50350f){_0x50350f=_0x50350f||0xcc;return function(_0x5a3827){if(_0x5a3827){return _0x235e01[_0xccda('0x15')](_0x50350f);}return _0x235e01[_0xccda('0x16')](_0x50350f)[_0xccda('0x17')]();};}function respondWithResult(_0x2fcd1e,_0x1ceb30){_0x1ceb30=_0x1ceb30||0xc8;return function(_0xd1b303){if(_0xd1b303){return _0x2fcd1e['status'](_0x1ceb30)[_0xccda('0x18')](_0xd1b303);}};}function respondWithFilteredResult(_0x327737,_0x29feab){return function(_0x45520c){if(_0x45520c){var _0x556c00=typeof _0x29feab['offset']===_0xccda('0x19')&&typeof _0x29feab[_0xccda('0x1a')]===_0xccda('0x19');var _0x32a4ca=_0x45520c[_0xccda('0x1b')];var _0x1648e0=_0x556c00?0x0:_0x29feab['offset'];var _0x58deb3=_0x556c00?_0x45520c[_0xccda('0x1b')]:_0x29feab[_0xccda('0x1c')]+_0x29feab[_0xccda('0x1a')];var _0x5c34b4;if(_0x58deb3>=_0x32a4ca){_0x58deb3=_0x32a4ca;_0x5c34b4=0xc8;}else{_0x5c34b4=0xce;}_0x327737[_0xccda('0x16')](_0x5c34b4);return _0x327737[_0xccda('0x1d')](_0xccda('0x1e'),_0x1648e0+'-'+_0x58deb3+'/'+_0x32a4ca)[_0xccda('0x18')](_0x45520c);}return null;};}function patchUpdates(_0x59b554){return function(_0x327c6c){try{jsonpatch[_0xccda('0x1f')](_0x327c6c,_0x59b554,!![]);}catch(_0x5eaf4b){return BPromise[_0xccda('0x20')](_0x5eaf4b);}return _0x327c6c[_0xccda('0x21')]();};}function saveUpdates(_0x13ca0a,_0x33f196){return function(_0x107a82){if(_0x107a82){return _0x107a82[_0xccda('0x22')](_0x13ca0a)[_0xccda('0x23')](function(_0x35d24f){return _0x35d24f;});}return null;};}function removeEntity(_0x5f1fb6,_0x3b4c89){return function(_0x506711){if(_0x506711){return _0x506711[_0xccda('0x24')]()[_0xccda('0x23')](function(){_0x5f1fb6[_0xccda('0x16')](0xcc)[_0xccda('0x17')]();});}};}function handleEntityNotFound(_0x365a91,_0x1568d7){return function(_0x394270){if(!_0x394270){_0x365a91[_0xccda('0x15')](0x194);}return _0x394270;};}function handleError(_0x166237,_0x4bf846){_0x4bf846=_0x4bf846||0x1f4;return function(_0x1e800d){logger[_0xccda('0x25')](_0x1e800d[_0xccda('0x26')]);if(_0x1e800d[_0xccda('0x27')]){delete _0x1e800d[_0xccda('0x27')];}_0x166237[_0xccda('0x16')](_0x4bf846)[_0xccda('0x28')](_0x1e800d);};}exports[_0xccda('0x29')]=function(_0x53c216,_0x5c3795){var _0x2b37d3={},_0x3806b1={},_0xaf5394={'count':0x0,'rows':[]};var _0x284578=_[_0xccda('0x2a')](db[_0xccda('0x2b')][_0xccda('0x2c')],function(_0x9ab2e){return{'name':_0x9ab2e['fieldName'],'type':_0x9ab2e[_0xccda('0x2d')][_0xccda('0x2e')]};});_0x3806b1[_0xccda('0x2f')]=_[_0xccda('0x2a')](_0x284578,_0xccda('0x27'));_0x3806b1[_0xccda('0x30')]=_[_0xccda('0x31')](_0x53c216[_0xccda('0x30')]);_0x3806b1[_0xccda('0x32')]=_[_0xccda('0x33')](_0x3806b1[_0xccda('0x2f')],_0x3806b1[_0xccda('0x30')]);_0x2b37d3[_0xccda('0x34')]=_[_0xccda('0x33')](_0x3806b1[_0xccda('0x2f')],qs[_0xccda('0x35')](_0x53c216[_0xccda('0x30')]['fields']));_0x2b37d3[_0xccda('0x34')]=_0x2b37d3[_0xccda('0x34')][_0xccda('0x36')]?_0x2b37d3[_0xccda('0x34')]:_0x3806b1['model'];if(!_0x53c216['query']['hasOwnProperty'](_0xccda('0x37'))){_0x2b37d3[_0xccda('0x1a')]=qs[_0xccda('0x1a')](_0x53c216['query']['limit']);_0x2b37d3['offset']=qs[_0xccda('0x1c')](_0x53c216['query'][_0xccda('0x1c')]);}_0x2b37d3[_0xccda('0x38')]=qs[_0xccda('0x39')](_0x53c216[_0xccda('0x30')]['sort']);_0x2b37d3[_0xccda('0x3a')]=qs[_0xccda('0x32')](_[_0xccda('0x3b')](_0x53c216[_0xccda('0x30')],_0x3806b1[_0xccda('0x32')]),_0x284578);if(_0x53c216[_0xccda('0x30')][_0xccda('0x3c')]){_0x2b37d3[_0xccda('0x3a')]=_[_0xccda('0x3d')](_0x2b37d3['where'],{'$or':_[_0xccda('0x2a')](_0x284578,function(_0x13f376){if(_0x13f376['type']!==_0xccda('0x3e')){var _0x4423f9={};_0x4423f9[_0x13f376[_0xccda('0x27')]]={'$like':'%'+_0x53c216[_0xccda('0x30')][_0xccda('0x3c')]+'%'};return _0x4423f9;}})});}_0x2b37d3=_[_0xccda('0x3d')]({},_0x2b37d3,_0x53c216[_0xccda('0x3f')]);var _0x39c066={'where':_0x2b37d3['where']};return db[_0xccda('0x2b')][_0xccda('0x1b')](_0x39c066)['then'](function(_0x211ba8){_0xaf5394[_0xccda('0x1b')]=_0x211ba8;if(_0x53c216[_0xccda('0x30')][_0xccda('0x40')]){_0x2b37d3[_0xccda('0x41')]=[{'all':!![]}];}return db['Attachment'][_0xccda('0x42')](_0x2b37d3);})[_0xccda('0x23')](function(_0x59fe8d){_0xaf5394[_0xccda('0x43')]=_0x59fe8d;return _0xaf5394;})['then'](respondWithFilteredResult(_0x5c3795,_0x2b37d3))['catch'](handleError(_0x5c3795,null));};exports[_0xccda('0x44')]=function(_0x15dbd0,_0x526443){var _0x4dd2a4={'raw':!![],'where':{'id':_0x15dbd0['params']['id']}},_0x3f1c8e={};_0x3f1c8e[_0xccda('0x2f')]=_[_0xccda('0x31')](db[_0xccda('0x2b')][_0xccda('0x2c')]);_0x3f1c8e['query']=_['keys'](_0x15dbd0[_0xccda('0x30')]);_0x3f1c8e[_0xccda('0x32')]=_['intersection'](_0x3f1c8e['model'],_0x3f1c8e[_0xccda('0x30')]);_0x4dd2a4[_0xccda('0x34')]=_[_0xccda('0x33')](_0x3f1c8e['model'],qs[_0xccda('0x35')](_0x15dbd0[_0xccda('0x30')]['fields']));_0x4dd2a4[_0xccda('0x34')]=_0x4dd2a4[_0xccda('0x34')][_0xccda('0x36')]?_0x4dd2a4[_0xccda('0x34')]:_0x3f1c8e[_0xccda('0x2f')];if(_0x15dbd0[_0xccda('0x30')][_0xccda('0x40')]){_0x4dd2a4[_0xccda('0x41')]=[{'all':!![]}];}_0x4dd2a4=_[_0xccda('0x3d')]({},_0x4dd2a4,_0x15dbd0['options']);return db['Attachment'][_0xccda('0x45')](_0x4dd2a4)[_0xccda('0x23')](handleEntityNotFound(_0x526443,null))[_0xccda('0x23')](respondWithResult(_0x526443,null))[_0xccda('0x46')](handleError(_0x526443,null));};exports['clone']=function(_0x317ead,_0xb59e82){var _0x17dfc3={'where':{'id':_0x317ead[_0xccda('0x47')]['id']}},_0x259deb={};_0x259deb['model']=_[_0xccda('0x31')](db[_0xccda('0x2b')][_0xccda('0x2c')]);_0x17dfc3[_0xccda('0x34')]=_[_0xccda('0x33')](_0x259deb[_0xccda('0x2f')],qs[_0xccda('0x35')](_0x317ead[_0xccda('0x30')][_0xccda('0x35')]));_0x17dfc3['attributes']=_0x17dfc3[_0xccda('0x34')]['length']?_0x17dfc3[_0xccda('0x34')]:_0x259deb[_0xccda('0x2f')];if(_0x317ead['query'][_0xccda('0x40')]){_0x17dfc3[_0xccda('0x41')]=[{'all':!![]}];}_0x17dfc3=_['merge']({},_0x17dfc3,_0x317ead[_0xccda('0x3f')]);return db['Attachment'][_0xccda('0x45')](_0x17dfc3)['then'](handleEntityNotFound(_0xb59e82,null))[_0xccda('0x23')](function(_0x2b154e){if(_0x2b154e){var _0x171b18=_0x2b154e['get']({'plain':!![]});_0x171b18=qs['omit'](_0x171b18,['id',_0xccda('0x48'),'updatedAt']);_0x317ead['body']=_[_0xccda('0x49')](_0x317ead[_0xccda('0x4a')],['id',_0xccda('0x48'),'updatedAt']);return db[_0xccda('0x2b')][_0xccda('0x4b')](_[_0xccda('0x3d')](_0x171b18,_0x317ead[_0xccda('0x4a')]),{'include':_0x317ead['query']['includeAll']?[{'all':!![]}]:undefined});}})[_0xccda('0x23')](respondWithResult(_0xb59e82,0xc9))['catch'](handleError(_0xb59e82,null));};exports[_0xccda('0x22')]=function(_0x366e54,_0x26e72a){if(_0x366e54[_0xccda('0x4a')]['id']){delete _0x366e54[_0xccda('0x4a')]['id'];}return db['Attachment'][_0xccda('0x45')]({'where':{'id':_0x366e54[_0xccda('0x47')]['id']}})[_0xccda('0x23')](handleEntityNotFound(_0x26e72a,null))['then'](saveUpdates(_0x366e54[_0xccda('0x4a')],null))['then'](respondWithResult(_0x26e72a,null))[_0xccda('0x46')](handleError(_0x26e72a,null));};exports[_0xccda('0x24')]=function(_0x2d9a79,_0x1ae1f7){return db[_0xccda('0x2b')][_0xccda('0x45')]({'where':{'id':_0x2d9a79[_0xccda('0x47')]['id']}})[_0xccda('0x23')](handleEntityNotFound(_0x1ae1f7,null))['then'](removeEntity(_0x1ae1f7,null))[_0xccda('0x46')](handleError(_0x1ae1f7,null));};exports['create']=function(_0x37aed9,_0x2ca429,_0x4a75e4){_0x37aed9[_0xccda('0x4a')][_0xccda('0x27')]=_0x37aed9[_0xccda('0x4c')][_0xccda('0x4d')];_0x37aed9[_0xccda('0x4a')][_0xccda('0x4e')]=_0x37aed9[_0xccda('0x4c')][_0xccda('0x4f')];_0x37aed9[_0xccda('0x4a')][_0xccda('0x2d')]=_0x37aed9[_0xccda('0x4c')][_0xccda('0x50')];return db['Attachment'][_0xccda('0x4b')](_0x37aed9['body'])['then'](respondWithResult(_0x2ca429,0xc9))[_0xccda('0x46')](handleError(_0x2ca429,null));};exports['download']=function(_0x2ce3e1,_0x5d7a20,_0x545f83){return db[_0xccda('0x2b')][_0xccda('0x51')]({'where':{'id':_0x2ce3e1[_0xccda('0x47')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x5d7a20,null))[_0xccda('0x23')](function(_0x4d0aaa){if(_0x4d0aaa){var _0x1bbf10=_0x4d0aaa[_0xccda('0x52')]!==null;var _0x51ee5a=path['join'](config[_0xccda('0x53')],_0xccda('0x54'));if(_0x1bbf10){_0x51ee5a=path[_0xccda('0x55')](_0x51ee5a,_0xccda('0x56'));}var _0x4efc01=path[_0xccda('0x55')](_0x51ee5a,_0x4d0aaa[_0xccda('0x4e')]);return _0x5d7a20[_0xccda('0x57')](_0x4efc01);}})['catch'](handleError(_0x5d7a20,null));};
\ No newline at end of file
index 4d66e67..e00cd85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x514d=['bluebird','path','../../config/environment','./attachment.attributes','exports','define','lodash','../../config/logger','api','moment'];(function(_0x7729b1,_0x468322){var _0x349504=function(_0x401cee){while(--_0x401cee){_0x7729b1['push'](_0x7729b1['shift']());}};_0x349504(++_0x468322);}(_0x514d,0xba));var _0xd514=function(_0x16ae27,_0x20863d){_0x16ae27=_0x16ae27-0x0;var _0x33286b=_0x514d[_0x16ae27];return _0x33286b;};'use strict';var _=require(_0xd514('0x0'));var util=require('util');var logger=require(_0xd514('0x1'))(_0xd514('0x2'));var moment=require(_0xd514('0x3'));var BPromise=require(_0xd514('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd514('0x5'));var rimraf=require('rimraf');var config=require(_0xd514('0x6'));var attributes=require(_0xd514('0x7'));module[_0xd514('0x8')]=function(_0x7978a8,_0x15cf36){return _0x7978a8[_0xd514('0x9')]('Attachment',attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0cf3=['../../config/environment','./attachment.attributes','exports','Attachment','attachments','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0x5ee430,_0x346899){var _0x5e1331=function(_0x391ed9){while(--_0x391ed9){_0x5ee430['push'](_0x5ee430['shift']());}};_0x5e1331(++_0x346899);}(_0x0cf3,0x1c1));var _0x30cf=function(_0x15527e,_0x893a89){_0x15527e=_0x15527e-0x0;var _0x3ee650=_0x0cf3[_0x15527e];return _0x3ee650;};'use strict';var _=require(_0x30cf('0x0'));var util=require(_0x30cf('0x1'));var logger=require(_0x30cf('0x2'))('api');var moment=require(_0x30cf('0x3'));var BPromise=require(_0x30cf('0x4'));var rp=require(_0x30cf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x30cf('0x6'));var config=require(_0x30cf('0x7'));var attributes=require(_0x30cf('0x8'));module[_0x30cf('0x9')]=function(_0x53d653,_0xaeea6f){return _0x53d653['define'](_0x30cf('0xa'),attributes,{'tableName':_0x30cf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be87b2b..a9c50ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe644=['code','message','catch','CreateAttachment','create','body','options','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2f43f4,_0x2428b1){var _0x4f4223=function(_0x5b4c1a){while(--_0x5b4c1a){_0x2f43f4['push'](_0x2f43f4['shift']());}};_0x4f4223(++_0x2428b1);}(_0xe644,0x159));var _0x4e64=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe644[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4e64('0x0'));var util=require(_0x4e64('0x1'));var moment=require(_0x4e64('0x2'));var BPromise=require(_0x4e64('0x3'));var rs=require(_0x4e64('0x4'));var fs=require('fs');var Redis=require(_0x4e64('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4e64('0x6'));var logger=require(_0x4e64('0x7'))(_0x4e64('0x8'));var config=require(_0x4e64('0x9'));var jayson=require(_0x4e64('0xa'));var client=jayson[_0x4e64('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x66faf,_0x12c40d,_0x5cce6e){return new BPromise(function(_0x4d5aa6,_0x8573c1){return client['request'](_0x66faf,_0x5cce6e)['then'](function(_0x2ebcfe){logger[_0x4e64('0xc')](_0x4e64('0xd'),_0x12c40d,_0x4e64('0xe'));logger[_0x4e64('0xf')](_0x4e64('0x10'),_0x12c40d,'request\x20sent',JSON[_0x4e64('0x11')](_0x2ebcfe));if(_0x2ebcfe[_0x4e64('0x12')]){if(_0x2ebcfe['error'][_0x4e64('0x13')]===0x1f4){logger['error']('Attachment,\x20%s,\x20%s',_0x12c40d,_0x2ebcfe[_0x4e64('0x12')]['message']);return _0x8573c1(_0x2ebcfe[_0x4e64('0x12')][_0x4e64('0x14')]);}logger[_0x4e64('0x12')](_0x4e64('0xd'),_0x12c40d,_0x2ebcfe[_0x4e64('0x12')][_0x4e64('0x14')]);return _0x4d5aa6(_0x2ebcfe[_0x4e64('0x12')]['message']);}else{logger[_0x4e64('0xc')](_0x4e64('0xd'),_0x12c40d,_0x4e64('0xe'));_0x4d5aa6(_0x2ebcfe['result'][_0x4e64('0x14')]);}})[_0x4e64('0x15')](function(_0x452f34){logger[_0x4e64('0x12')](_0x4e64('0xd'),_0x12c40d,_0x452f34);_0x8573c1(_0x452f34);});});}exports[_0x4e64('0x16')]=function(_0x135ffb){var _0x3961c5=this;return new Promise(function(_0x1be196,_0x2df16a){return db['Attachment'][_0x4e64('0x17')](_0x135ffb[_0x4e64('0x18')],{'raw':_0x135ffb['options']?_0x135ffb[_0x4e64('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x18a1d3){logger[_0x4e64('0xc')](_0x4e64('0x16'),_0x135ffb);logger['debug'](_0x4e64('0x16'),_0x135ffb,JSON['stringify'](_0x18a1d3));_0x1be196(_0x18a1d3);})[_0x4e64('0x15')](function(_0x336c53){logger[_0x4e64('0x12')]('CreateAttachment',_0x336c53[_0x4e64('0x14')],_0x135ffb);_0x2df16a(_0x3961c5[_0x4e64('0x12')](0x1f4,_0x336c53[_0x4e64('0x14')]));});});};
\ No newline at end of file
+var _0x9c5e=['Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','Attachment','body','options','raw','then','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','jayson/promise','client','http','request','info'];(function(_0x1af8fd,_0x31df71){var _0x1e166f=function(_0x3f5558){while(--_0x3f5558){_0x1af8fd['push'](_0x1af8fd['shift']());}};_0x1e166f(++_0x31df71);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x22b005,_0x2a6515){_0x22b005=_0x22b005-0x0;var _0x58bd11=_0x9c5e[_0x22b005];return _0x58bd11;};'use strict';var _=require(_0xe9c5('0x0'));var util=require(_0xe9c5('0x1'));var moment=require(_0xe9c5('0x2'));var BPromise=require(_0xe9c5('0x3'));var rs=require(_0xe9c5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe9c5('0x5'))(_0xe9c5('0x6'));var config=require('../../config/environment');var jayson=require(_0xe9c5('0x7'));var client=jayson[_0xe9c5('0x8')][_0xe9c5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x6f6045,_0x5b1c04,_0x2fa290){return new BPromise(function(_0x34ee69,_0x228ef3){return client[_0xe9c5('0xa')](_0x6f6045,_0x2fa290)['then'](function(_0x596f4c){logger[_0xe9c5('0xb')](_0xe9c5('0xc'),_0x5b1c04,_0xe9c5('0xd'));logger[_0xe9c5('0xe')](_0xe9c5('0xf'),_0x5b1c04,_0xe9c5('0xd'),JSON[_0xe9c5('0x10')](_0x596f4c));if(_0x596f4c[_0xe9c5('0x11')]){if(_0x596f4c[_0xe9c5('0x11')][_0xe9c5('0x12')]===0x1f4){logger[_0xe9c5('0x11')](_0xe9c5('0xc'),_0x5b1c04,_0x596f4c[_0xe9c5('0x11')][_0xe9c5('0x13')]);return _0x228ef3(_0x596f4c[_0xe9c5('0x11')][_0xe9c5('0x13')]);}logger['error'](_0xe9c5('0xc'),_0x5b1c04,_0x596f4c[_0xe9c5('0x11')][_0xe9c5('0x13')]);return _0x34ee69(_0x596f4c[_0xe9c5('0x11')][_0xe9c5('0x13')]);}else{logger[_0xe9c5('0xb')]('Attachment,\x20%s,\x20%s',_0x5b1c04,_0xe9c5('0xd'));_0x34ee69(_0x596f4c[_0xe9c5('0x14')]['message']);}})[_0xe9c5('0x15')](function(_0x45d18d){logger[_0xe9c5('0x11')](_0xe9c5('0xc'),_0x5b1c04,_0x45d18d);_0x228ef3(_0x45d18d);});});}exports[_0xe9c5('0x16')]=function(_0x4d9c7d){var _0x3678fc=this;return new Promise(function(_0x1cecae,_0x2f050b){return db[_0xe9c5('0x17')]['create'](_0x4d9c7d[_0xe9c5('0x18')],{'raw':_0x4d9c7d[_0xe9c5('0x19')]?_0x4d9c7d[_0xe9c5('0x19')][_0xe9c5('0x1a')]===undefined?!![]:![]:!![]})[_0xe9c5('0x1b')](function(_0x58fbad){logger['info'](_0xe9c5('0x16'),_0x4d9c7d);logger['debug'](_0xe9c5('0x16'),_0x4d9c7d,JSON[_0xe9c5('0x10')](_0x58fbad));_0x1cecae(_0x58fbad);})[_0xe9c5('0x15')](function(_0x4d16bc){logger['error'](_0xe9c5('0x16'),_0x4d16bc[_0xe9c5('0x13')],_0x4d9c7d);_0x2f050b(_0x3678fc[_0xe9c5('0x11')](0x1f4,_0x4d16bc[_0xe9c5('0x13')]));});});};
\ No newline at end of file
index 4403c04..4bb989f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x249556,_0x16e026){var _0x40da2e=function(_0x4c5473){while(--_0x4c5473){_0x249556['push'](_0x249556['shift']());}};_0x40da2e(++_0x16e026);}(_0x757a,0xde));var _0xa757=function(_0x1cacd6,_0x54a7cb){_0x1cacd6=_0x1cacd6-0x0;var _0x3098af=_0x757a[_0x1cacd6];return _0x3098af;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
+var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x4456d8,_0x13eaaf){var _0x4abbcd=function(_0x25501c){while(--_0x25501c){_0x4456d8['push'](_0x4456d8['shift']());}};_0x4abbcd(++_0x13eaaf);}(_0xb10b,0x12a));var _0xbb10=function(_0x5c568e,_0xc5e4b0){_0x5c568e=_0x5c568e-0x0;var _0x5aff74=_0xb10b[_0x5c568e];return _0x5aff74;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')](_0xbb10('0x10'),auth['isAuthenticated'](),controller['clone']);var upload=multer({'storage':multer[_0xbb10('0x11')]({'destination':function(_0x118a74,_0xce64f3,_0x5e136d){_0x5e136d(null,path[_0xbb10('0x12')](config['root'],_0xbb10('0x13')));},'filename':function(_0x916a32,_0x285009,_0x193a27){_0x193a27(null,util[_0xbb10('0x14')](_0xbb10('0x15'),Date['now'](),_0x285009[_0xbb10('0x16')][_0xbb10('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xbb10('0xf')]('/',upload[_0xbb10('0x18')](_0xbb10('0x19')),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1d')]);router['delete'](_0xbb10('0x1c'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);module[_0xbb10('0x1f')]=router;
\ No newline at end of file
index 55973d6..e8c063d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be4=['api','activedirectory','url','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','adSsoEnabled','then','name','password','role','blocked','online','agent','domain','disabled','blockDuration','blockedAt','minutes','clearBlockUser','getLicense','status','message','login','ad-login','json','use','passport','passport-local','Strategy','moment','bluebird','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger'];(function(_0x838813,_0x448f0f){var _0x2bd32d=function(_0x57b589){while(--_0x57b589){_0x838813['push'](_0x838813['shift']());}};_0x2bd32d(++_0x448f0f);}(_0x7be4,0x6c));var _0x47be=function(_0x5ed22e,_0x3142fe){_0x5ed22e=_0x5ed22e-0x0;var _0x3eb30c=_0x7be4[_0x5ed22e];return _0x3eb30c;};'use strict';var passport=require(_0x47be('0x0'));var LocalStrategy=require(_0x47be('0x1'))[_0x47be('0x2')];var moment=require(_0x47be('0x3'));var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x47be('0x4'));var util=require('util');var db=require('../../mysqldb')['db'];var authService=require(_0x47be('0x5'));var utils=require(_0x47be('0x6'));var config=require(_0x47be('0x7'));var logger=require(_0x47be('0x8'))(_0x47be('0x9'));function isActiveDirectoryConfigured(_0x2b1958){var _0x327bf3=![];if(typeof _0x2b1958[_0x47be('0xa')]!=='undefined'){_0x327bf3=_0x2b1958[_0x47be('0xa')]['baseDN']&&_0x2b1958[_0x47be('0xa')][_0x47be('0xb')]&&_0x2b1958[_0x47be('0xa')]['domain'];}return _0x327bf3;}function adAuthenticate(_0x2f38d3,_0x264546,_0x14bbde){return new BPromise(function(_0x401b3c,_0x29eb4a){try{var _0x5a8650=new ActiveDirectory(_0x2f38d3);_0x5a8650[_0x47be('0xc')](_0x264546,_0x14bbde,function(_0x146696,_0x5d6236){if(_0x146696){logger['error']('Error\x20authenticate\x20%s:\x20%s',_0x264546,util['inspect'](_0x146696,{'showHidden':![],'depth':null}));_0x29eb4a(_0x47be('0xd'));}else if(!_0x5d6236){logger[_0x47be('0xe')](_0x47be('0xf'),_0x264546);_0x29eb4a(_0x47be('0xd'));}else{_0x401b3c(_0x5d6236);}});}catch(_0x4ff8d4){_0x29eb4a(_0x4ff8d4);}});}function ActiveDirectoryAuthenticate(_0x56bf15,_0x2fbd42,_0x2d88bb,_0x36b1b4){var _0x552439,_0x29aa19;if(!isActiveDirectoryConfigured(config)){logger[_0x47be('0xe')](_0x47be('0x10'),_0x2fbd42);return _0x36b1b4(null,![],{'message':_0x47be('0xd')});}return db['Setting'][_0x47be('0x11')]({'where':{'id':0x1},'attributes':[_0x47be('0x12'),'blockDuration'],'raw':!![]})[_0x47be('0x13')](function(_0xa736fe){_0x552439=_0xa736fe;if(!_0x552439[_0x47be('0x12')]){logger[_0x47be('0xe')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x2fbd42);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x56bf15[_0x47be('0x11')]({'logging':!![],'attributes':['id',_0x47be('0x14'),_0x47be('0x15'),'salt',_0x47be('0x16'),'disabled',_0x47be('0x17'),'blockedAt',_0x47be('0x18')],'where':{'name':_0x2fbd42,'role':{'$or':['admin','user',_0x47be('0x19')]},'adSsoEnabled':!![]}});})['then'](function(_0xf93c23){if(!_0xf93c23||_0xf93c23&&_0xf93c23['name']!==_0x2fbd42){throw new Error(_0x47be('0xd'));}_0x29aa19=_0xf93c23;var _0x2b5446=_0x29aa19['name']+'@'+config[_0x47be('0xa')][_0x47be('0x1a')];return adAuthenticate(config[_0x47be('0xa')],_0x2b5446,_0x2d88bb);})['then'](function(_0x518217){if(_0x29aa19[_0x47be('0x1b')]){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}if(_0x552439[_0x47be('0x1c')]>0x0){if(_0x29aa19[_0x47be('0x17')]){if(moment(_0x29aa19[_0x47be('0x1d')])['add'](_0x552439[_0x47be('0x1c')],_0x47be('0x1e'))>moment()){throw new Error(_0x47be('0xd'));}return utils[_0x47be('0x1f')](_0x29aa19,0x0,![],null)['then'](function(){return utils['getLicense'](_0x29aa19);})[_0x47be('0x13')](function(){return _0x36b1b4(null,_0x29aa19);});}else{return utils[_0x47be('0x20')](_0x29aa19)[_0x47be('0x13')](function(){return _0x36b1b4(null,_0x29aa19);});}}else{return utils[_0x47be('0x20')](_0x29aa19)[_0x47be('0x13')](function(){return _0x36b1b4(null,_0x29aa19);});}})['catch'](function(_0x278228){return _0x36b1b4(null,![],_0x278228);});}function handleError(_0x1a2c45,_0x3a5703,_0x3ce88f){return _0x1a2c45[_0x47be('0x21')](_0x3a5703||0x1f4)['send']({'message':_0x3ce88f?_0x3ce88f[_0x47be('0x22')]||_0x3ce88f:''});}exports[_0x47be('0x23')]=function(_0x33bbdf,_0x1e957e,_0x4dd8b9){passport[_0x47be('0xc')](_0x47be('0x24'),function(_0x1ee283,_0x36ddf2,_0x331c31){var _0x19d3c4=_0x1ee283||_0x331c31;if(_0x19d3c4){return handleError(_0x1e957e,0x191,_0x19d3c4);}if(!_0x36ddf2){return handleError(_0x1e957e,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x58965a={'payload':{'id':_0x36ddf2['id'],'role':_0x36ddf2[_0x47be('0x16')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x58965a)['then'](function(_0x528c3f){_0x1e957e[_0x47be('0x25')]({'id':_0x36ddf2['id'],'token':_0x528c3f,'statusCall':'','isAlreadyLogged':_0x36ddf2[_0x47be('0x18')]});});}})(_0x33bbdf,_0x1e957e,_0x4dd8b9);};passport[_0x47be('0x26')](_0x47be('0x24'),new LocalStrategy({'usernameField':_0x47be('0x14'),'passwordField':_0x47be('0x15')},function(_0x185ac5,_0x3814e5,_0x1317f5){return ActiveDirectoryAuthenticate(db['User'],_0x185ac5,_0x3814e5,_0x1317f5);}));
\ No newline at end of file
+var _0x666b=['api','activedirectory','baseDN','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','inspect','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','blockDuration','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','password','salt','role','blocked','blockedAt','online','admin','agent','name','then','disabled','add','minutes','clearBlockUser','getLicense','catch','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','User','passport','passport-local','Strategy','activedirectory2','bluebird','util','../../mysqldb','../../config/environment','../../config/logger'];(function(_0x28db8c,_0x4a3228){var _0x2a85ae=function(_0x3d55b9){while(--_0x3d55b9){_0x28db8c['push'](_0x28db8c['shift']());}};_0x2a85ae(++_0x4a3228);}(_0x666b,0x1b9));var _0xb666=function(_0x64bfd5,_0x26eed5){_0x64bfd5=_0x64bfd5-0x0;var _0x4f191e=_0x666b[_0x64bfd5];return _0x4f191e;};'use strict';var passport=require(_0xb666('0x0'));var LocalStrategy=require(_0xb666('0x1'))[_0xb666('0x2')];var moment=require('moment');var ActiveDirectory=require(_0xb666('0x3'));var BPromise=require(_0xb666('0x4'));var util=require(_0xb666('0x5'));var db=require(_0xb666('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var config=require(_0xb666('0x7'));var logger=require(_0xb666('0x8'))(_0xb666('0x9'));function isActiveDirectoryConfigured(_0x2ea7a6){var _0x4c6035=![];if(typeof _0x2ea7a6[_0xb666('0xa')]!=='undefined'){_0x4c6035=_0x2ea7a6[_0xb666('0xa')][_0xb666('0xb')]&&_0x2ea7a6[_0xb666('0xa')]['url']&&_0x2ea7a6[_0xb666('0xa')][_0xb666('0xc')];}return _0x4c6035;}function adAuthenticate(_0x25271c,_0x17a9b3,_0x380c14){return new BPromise(function(_0x58b4c7,_0x4e1a08){try{var _0x298c9e=new ActiveDirectory(_0x25271c);_0x298c9e[_0xb666('0xd')](_0x17a9b3,_0x380c14,function(_0x2620da,_0x111a0c){if(_0x2620da){logger[_0xb666('0xe')](_0xb666('0xf'),_0x17a9b3,util[_0xb666('0x10')](_0x2620da,{'showHidden':![],'depth':null}));_0x4e1a08('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x111a0c){logger['error'](_0xb666('0x11'),_0x17a9b3);_0x4e1a08(_0xb666('0x12'));}else{_0x58b4c7(_0x111a0c);}});}catch(_0x3c1dc8){_0x4e1a08(_0x3c1dc8);}});}function ActiveDirectoryAuthenticate(_0x5e33b4,_0x5203cc,_0x3560b1,_0x4dacfa){var _0x500220,_0x3484d2;if(!isActiveDirectoryConfigured(config)){logger['error'](_0xb666('0x13'),_0x5203cc);return _0x4dacfa(null,![],{'message':_0xb666('0x12')});}return db[_0xb666('0x14')][_0xb666('0x15')]({'where':{'id':0x1},'attributes':[_0xb666('0x16'),_0xb666('0x17')],'raw':!![]})['then'](function(_0x1eb6ee){_0x500220=_0x1eb6ee;if(!_0x500220[_0xb666('0x16')]){logger[_0xb666('0xe')](_0xb666('0x18'),_0x5203cc);throw new Error(_0xb666('0x12'));}return _0x5e33b4[_0xb666('0x15')]({'logging':!![],'attributes':['id','name',_0xb666('0x19'),_0xb666('0x1a'),_0xb666('0x1b'),'disabled',_0xb666('0x1c'),_0xb666('0x1d'),_0xb666('0x1e')],'where':{'name':_0x5203cc,'role':{'$or':[_0xb666('0x1f'),'user',_0xb666('0x20')]},'adSsoEnabled':!![]}});})['then'](function(_0x157c5c){if(!_0x157c5c||_0x157c5c&&_0x157c5c[_0xb666('0x21')]!==_0x5203cc){throw new Error(_0xb666('0x12'));}_0x3484d2=_0x157c5c;var _0x40d06d=_0x3484d2['name']+'@'+config[_0xb666('0xa')][_0xb666('0xc')];return adAuthenticate(config[_0xb666('0xa')],_0x40d06d,_0x3560b1);})[_0xb666('0x22')](function(_0x1995ed){if(_0x3484d2[_0xb666('0x23')]){throw new Error(_0xb666('0x12'));}if(_0x500220[_0xb666('0x17')]>0x0){if(_0x3484d2['blocked']){if(moment(_0x3484d2[_0xb666('0x1d')])[_0xb666('0x24')](_0x500220[_0xb666('0x17')],_0xb666('0x25'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0xb666('0x26')](_0x3484d2,0x0,![],null)['then'](function(){return utils['getLicense'](_0x3484d2);})[_0xb666('0x22')](function(){return _0x4dacfa(null,_0x3484d2);});}else{return utils['getLicense'](_0x3484d2)[_0xb666('0x22')](function(){return _0x4dacfa(null,_0x3484d2);});}}else{return utils[_0xb666('0x27')](_0x3484d2)[_0xb666('0x22')](function(){return _0x4dacfa(null,_0x3484d2);});}})[_0xb666('0x28')](function(_0x1d11ef){return _0x4dacfa(null,![],_0x1d11ef);});}function handleError(_0x5315f0,_0x4cb941,_0x3563bf){return _0x5315f0['status'](_0x4cb941||0x1f4)[_0xb666('0x29')]({'message':_0x3563bf?_0x3563bf[_0xb666('0x2a')]||_0x3563bf:''});}exports[_0xb666('0x2b')]=function(_0x5aae97,_0x557330,_0x4343ab){passport['authenticate'](_0xb666('0x2c'),function(_0x319151,_0x5004cf,_0x5c16bd){var _0x55bc92=_0x319151||_0x5c16bd;if(_0x55bc92){return handleError(_0x557330,0x191,_0x55bc92);}if(!_0x5004cf){return handleError(_0x557330,0x194,{'message':_0xb666('0x2d')});}else{var _0x1f3850={'payload':{'id':_0x5004cf['id'],'role':_0x5004cf[_0xb666('0x1b')]},'options':{'expiresIn':0x15180}};return authService[_0xb666('0x2e')](_0x1f3850)['then'](function(_0x4cf65d){_0x557330[_0xb666('0x2f')]({'id':_0x5004cf['id'],'token':_0x4cf65d,'statusCall':'','isAlreadyLogged':_0x5004cf[_0xb666('0x1e')]});});}})(_0x5aae97,_0x557330,_0x4343ab);};passport[_0xb666('0x30')](_0xb666('0x2c'),new LocalStrategy({'usernameField':_0xb666('0x21'),'passwordField':_0xb666('0x19')},function(_0x242bd5,_0x2cc63f,_0x1441d7){return ActiveDirectoryAuthenticate(db[_0xb666('0x31')],_0x242bd5,_0x2cc63f,_0x1441d7);}));
\ No newline at end of file
index 02426fd..1b1c52f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2953=['post','exports','express','Router','./authActiveDirectory.controller'];(function(_0x2ba425,_0x58d262){var _0x5dee4f=function(_0x4f74a6){while(--_0x4f74a6){_0x2ba425['push'](_0x2ba425['shift']());}};_0x5dee4f(++_0x58d262);}(_0x2953,0xcf));var _0x3295=function(_0x3beafc,_0x58504b){_0x3beafc=_0x3beafc-0x0;var _0x399892=_0x2953[_0x3beafc];return _0x399892;};'use strict';var express=require(_0x3295('0x0'));var router=express[_0x3295('0x1')]();var controller=require(_0x3295('0x2'));router[_0x3295('0x3')]('/',controller['login']);module[_0x3295('0x4')]=router;
\ No newline at end of file
+var _0xec50=['Router','./authActiveDirectory.controller','login','exports','express'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xec50,0xef));var _0x0ec5=function(_0x25c128,_0x39ca54){_0x25c128=_0x25c128-0x0;var _0x23ce84=_0xec50[_0x25c128];return _0x23ce84;};'use strict';var express=require(_0x0ec5('0x0'));var router=express[_0x0ec5('0x1')]();var controller=require(_0x0ec5('0x2'));router['post']('/',controller[_0x0ec5('0x3')]);module[_0x0ec5('0x4')]=router;
\ No newline at end of file
index c4c9639..718f46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x7a54,0x106));var _0x47a5=function(_0x4f40f0,_0x4de8c7){_0x4f40f0=_0x4f40f0-0x0;var _0x2640c9=_0x7a54[_0x4f40f0];return _0x2640c9;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x7a54,0x106));var _0x47a5=function(_0x23af2e,_0x47e88a){_0x23af2e=_0x23af2e-0x0;var _0x3053cc=_0x7a54[_0x23af2e];return _0x3053cc;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index 3c26ec3..2235af8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x045c=['../user/user.controller.js','../../components/auth/service','/callback','isMiddleware','login','setTokenCookie','exports','express','passport','Router','./authGoogle.controller'];(function(_0x7d807d,_0x282818){var _0x20ee3a=function(_0x5399f6){while(--_0x5399f6){_0x7d807d['push'](_0x7d807d['shift']());}};_0x20ee3a(++_0x282818);}(_0x045c,0x75));var _0xc045=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x045c[_0x2763f2];return _0x3ef471;};'use strict';var express=require(_0xc045('0x0'));var passport=require(_0xc045('0x1'));var router=express[_0xc045('0x2')]();var controller=require(_0xc045('0x3'));var userController=require(_0xc045('0x4'));var authService=require(_0xc045('0x5'));router['get']('/',controller['login']);router['get'](_0xc045('0x6'),controller['callback'],authService[_0xc045('0x7')],userController[_0xc045('0x8')],authService[_0xc045('0x9')]);module[_0xc045('0xa')]=router;
\ No newline at end of file
+var _0x4ea5=['exports','express','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','/callback','callback','isMiddleware','login','setTokenCookie'];(function(_0xbf0d01,_0x5ee414){var _0x1a8f17=function(_0x5424a4){while(--_0x5424a4){_0xbf0d01['push'](_0xbf0d01['shift']());}};_0x1a8f17(++_0x5ee414);}(_0x4ea5,0xd3));var _0x54ea=function(_0x470bfb,_0x389787){_0x470bfb=_0x470bfb-0x0;var _0x2f5d97=_0x4ea5[_0x470bfb];return _0x2f5d97;};'use strict';var express=require(_0x54ea('0x0'));var passport=require('passport');var router=express['Router']();var controller=require(_0x54ea('0x1'));var userController=require(_0x54ea('0x2'));var authService=require(_0x54ea('0x3'));router['get']('/',controller['login']);router['get'](_0x54ea('0x4'),controller[_0x54ea('0x5')],authService[_0x54ea('0x6')],userController[_0x54ea('0x7')],authService[_0x54ea('0x8')]);module[_0x54ea('0x9')]=router;
\ No newline at end of file
index 2eb2b0e..84c765e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f78=['util','passport-local','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','role','blocked','blockedAt','admin','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','disabled','add','clearBlockUser','minutes','getLicense','catch','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','pass','merge','format','\x22%s\x22\x20<%s>','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','resetPasswordToken','resetPasswordExpires','now','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','Reset\x20Email\x20sent!','reset','User','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','save','Password\x20reset!'];(function(_0x2fb453,_0x19dc6f){var _0x3e47be=function(_0x22ecb8){while(--_0x22ecb8){_0x2fb453['push'](_0x2fb453['shift']());}};_0x3e47be(++_0x19dc6f);}(_0x2f78,0x19f));var _0x82f7=function(_0x3f46f1,_0x205933){_0x3f46f1=_0x3f46f1-0x0;var _0x3cd75f=_0x2f78[_0x3f46f1];return _0x3cd75f;};'use strict';var util=require(_0x82f7('0x0'));var passport=require('passport');var LocalStrategy=require(_0x82f7('0x1'))['Strategy'];var jayson=require(_0x82f7('0x2'));var _=require(_0x82f7('0x3'));var rs=require(_0x82f7('0x4'));var moment=require(_0x82f7('0x5'));var db=require(_0x82f7('0x6'))['db'];var authService=require(_0x82f7('0x7'));var utils=require('../../config/utils');var client=jayson[_0x82f7('0x8')][_0x82f7('0x9')]({'port':0x232b});function localAuthenticate(_0xcae3f2,_0x1cdeaf,_0x8d801d,_0x2cdc01){var _0x1caec6,_0x336652;return db[_0x82f7('0xa')][_0x82f7('0xb')]({'where':{'id':0x1},'attributes':[_0x82f7('0xc'),_0x82f7('0xd')],'raw':!![]})[_0x82f7('0xe')](function(_0x318020){_0x1caec6=_0x318020;return _0xcae3f2[_0x82f7('0xb')]({'attributes':['id',_0x82f7('0xf'),_0x82f7('0x10'),'salt',_0x82f7('0x11'),'disabled',_0x82f7('0x12'),_0x82f7('0x13'),'loginAttempts'],'where':{'name':_0x1cdeaf,'role':{'$or':[_0x82f7('0x14'),'user',_0x82f7('0x15')]}}});})['then'](function(_0x26765f){if(!_0x26765f||_0x26765f&&_0x26765f[_0x82f7('0xf')]!==_0x1cdeaf){throw new Error(_0x82f7('0x16'));}else{_0x336652=_0x26765f;return _0x336652;}})['then'](function(){_0x336652[_0x82f7('0x17')](_0x8d801d,function(_0x2e80c1,_0x2f8f29){var _0x416eb5=_0x336652[_0x82f7('0x18')]+0x1;if(_0x2e80c1){return _0x2cdc01(_0x2e80c1);}else if(!_0x2f8f29){if(_0x336652[_0x82f7('0x19')]){return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}else if(_0x1caec6[_0x82f7('0xc')]>0x0){if(_0x336652[_0x82f7('0x12')]){if(_0x1caec6[_0x82f7('0xd')]>0x0){if(moment(_0x336652[_0x82f7('0x13')])[_0x82f7('0x1a')](_0x1caec6[_0x82f7('0xd')],'minutes')>moment()){return _0x2cdc01(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x82f7('0x1b')](_0x336652,_0x416eb5,![],null)[_0x82f7('0xe')](function(){return _0x2cdc01(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}}else{if(_0x416eb5>=_0x1caec6[_0x82f7('0xc')]){return utils[_0x82f7('0x1b')](_0x336652,0x0,!![],moment())[_0x82f7('0xe')](function(){return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});});}else{return utils[_0x82f7('0x1b')](_0x336652,_0x416eb5,![],null)[_0x82f7('0xe')](function(){return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});});}}}else{return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}}else{if(_0x336652[_0x82f7('0x19')]){return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}else if(_0x1caec6[_0x82f7('0xc')]>0x0){if(_0x336652[_0x82f7('0x12')]){if(_0x1caec6['blockDuration']>0x0){if(moment(_0x336652[_0x82f7('0x13')])[_0x82f7('0x1a')](_0x1caec6[_0x82f7('0xd')],_0x82f7('0x1c'))>moment()){return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}else{return utils[_0x82f7('0x1b')](_0x336652,0x0,![],null)[_0x82f7('0xe')](function(){return utils[_0x82f7('0x1d')](_0x336652);})[_0x82f7('0xe')](function(){return _0x2cdc01(null,_0x336652);});}}else{return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}}else{return utils['clearBlockUser'](_0x336652,0x0,![],null)[_0x82f7('0xe')](function(){return utils['getLicense'](_0x336652);})[_0x82f7('0xe')](function(){return _0x2cdc01(null,_0x336652);})[_0x82f7('0x1e')](function(_0x566bc7){return _0x2cdc01(null,![],_0x566bc7);});}}else{if(_0x336652[_0x82f7('0x12')]){return _0x2cdc01(null,![],{'message':_0x82f7('0x16')});}else{return utils[_0x82f7('0x1d')](_0x336652)[_0x82f7('0xe')](function(){return _0x2cdc01(null,_0x336652);});}}}});})[_0x82f7('0x1e')](function(_0x159986){return _0x2cdc01(null,![],_0x159986);});}function sendServiceMail(_0x47613a){return db['MailAccount'][_0x82f7('0x1f')]({'where':{'service':!![]},'attributes':['id','name',_0x82f7('0x20')],'include':[{'model':db['MailServerOut'],'as':_0x82f7('0x21')}]})[_0x82f7('0xe')](function(_0x2b4076){if(!_0x2b4076){throw new Error(_0x82f7('0x22'));}var _0x3856f8={'tls':{'rejectUnauthorized':![]}};if(_0x2b4076['Smtp'][_0x82f7('0x23')]){_0x3856f8['service']=_0x2b4076['Smtp']['service'];}else{_0x3856f8[_0x82f7('0x24')]=_0x2b4076[_0x82f7('0x21')][_0x82f7('0x24')];_0x3856f8[_0x82f7('0x25')]=_0x2b4076[_0x82f7('0x21')][_0x82f7('0x25')];_0x3856f8['secure']=_0x2b4076[_0x82f7('0x21')][_0x82f7('0x26')];}if(_0x2b4076[_0x82f7('0x21')][_0x82f7('0x27')]){_0x3856f8['auth']={'user':_0x2b4076[_0x82f7('0x21')]['user'],'pass':_0x2b4076[_0x82f7('0x21')][_0x82f7('0x28')]};}var _0x14c22d={'account':_0x3856f8,'message':_[_0x82f7('0x29')]({'from':util[_0x82f7('0x2a')](_0x82f7('0x2b'),_0x2b4076[_0x82f7('0xf')],_0x2b4076['email']||_0x2b4076['Smtp']['user'])},_0x47613a)};return client[_0x82f7('0x2c')]('SendMail',_0x14c22d);})[_0x82f7('0xe')](function(_0x13e78b){if(_0x13e78b[_0x82f7('0x2d')]){throw new Error(util[_0x82f7('0x2a')](_0x82f7('0x2e'),_0x13e78b['error'][_0x82f7('0x2f')]||JSON[_0x82f7('0x30')](_0x13e78b[_0x82f7('0x2d')])));}return!![];});}function handleError(_0x1d487e,_0xc0e267,_0x3ddc03){return _0x1d487e[_0x82f7('0x31')](_0xc0e267||0x1f4)[_0x82f7('0x32')]({'message':_0x3ddc03?_0x3ddc03[_0x82f7('0x2f')]||_0x3ddc03:''});}exports[_0x82f7('0x33')]=function(_0x9cf679,_0x508c1d,_0x35a135){passport['authenticate']('local-login',function(_0x4bf8f9,_0x3bb612,_0x18a646){var _0xf8621f=_0x4bf8f9||_0x18a646;if(_0xf8621f){return handleError(_0x508c1d,0x191,_0xf8621f);}if(!_0x3bb612){return handleError(_0x508c1d,0x194,{'message':_0x82f7('0x34')});}else{var _0x5ab47a={'payload':{'id':_0x3bb612['id'],'role':_0x3bb612[_0x82f7('0x11')]},'options':{'expiresIn':0x15180}};return authService[_0x82f7('0x35')](_0x5ab47a)[_0x82f7('0xe')](function(_0x2515ee){_0x508c1d[_0x82f7('0x36')]({'id':_0x3bb612['id'],'token':_0x2515ee,'statusCall':'','isAlreadyLogged':_0x3bb612[_0x82f7('0x37')]});});}})(_0x9cf679,_0x508c1d,_0x35a135);};exports[_0x82f7('0x38')]=function(_0x4948f5,_0x37b251,_0x4a2a6b){if(!_0x4948f5[_0x82f7('0x39')][_0x82f7('0x20')]){return handleError(_0x37b251,0x1f4,{'message':_0x82f7('0x3a')});}var _0x16f374=rs[_0x82f7('0x3b')]();_0x4948f5[_0x82f7('0x39')][_0x82f7('0x20')]=_0x4948f5['body']['email'][_0x82f7('0x3c')]()[_0x82f7('0x3d')]();var _0x3afe12;return db[_0x82f7('0xa')]['findOne']({'where':{'id':0x1},'attributes':[_0x82f7('0xc'),_0x82f7('0xd')],'raw':!![]})[_0x82f7('0xe')](function(_0x44b6e4){_0x3afe12=_0x44b6e4;return db['User'][_0x82f7('0x1f')]({'where':{'email':_0x4948f5['body'][_0x82f7('0x20')]}});})[_0x82f7('0xe')](function(_0x31114f){if(!_0x31114f){throw new Error(_0x82f7('0x3e'));}if(_0x31114f[_0x82f7('0x19')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x31114f[_0x82f7('0x12')]){if(moment(_0x31114f[_0x82f7('0x13')])[_0x82f7('0x1a')](_0x3afe12['blockDuration'],_0x82f7('0x1c'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x31114f[_0x82f7('0x12')]=![];_0x31114f[_0x82f7('0x13')]=null;}}_0x31114f[_0x82f7('0x3f')]=_0x16f374;_0x31114f[_0x82f7('0x40')]=Date[_0x82f7('0x41')]()+0x36ee80;return _0x31114f['save']();})[_0x82f7('0xe')](function(){return sendServiceMail({'to':_0x4948f5['body'][_0x82f7('0x20')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x82f7('0x42')+'https://'+_0x4948f5[_0x82f7('0x43')]['host']+_0x82f7('0x44')+_0x16f374+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0x82f7('0xe')](function(){_0x37b251[_0x82f7('0x31')](0xc8)[_0x82f7('0x32')]({'message':_0x82f7('0x45')});})[_0x82f7('0x1e')](function(_0x35a2f9){return handleError(_0x37b251,0x1f4,_0x35a2f9);});};exports[_0x82f7('0x46')]=function(_0x56ef47,_0x4b9109,_0x5496f8){return db[_0x82f7('0x47')][_0x82f7('0x1f')]({'where':{'resetPasswordToken':_0x56ef47[_0x82f7('0x48')][_0x82f7('0x49')],'resetPasswordExpires':{'$gt':Date[_0x82f7('0x41')]()}}})[_0x82f7('0xe')](function(_0x448522){if(!_0x448522){throw new Error(_0x82f7('0x4a'));}return db[_0x82f7('0xa')][_0x82f7('0xb')]({'attributes':['id',_0x82f7('0x4b'),_0x82f7('0x4c'),_0x82f7('0x4d')]})[_0x82f7('0xe')](function(_0x3c7cc6){if(_0x3c7cc6['securePassword'])authService[_0x82f7('0x4e')](_0x56ef47[_0x82f7('0x39')][_0x82f7('0x10')]);if(!_0x3c7cc6[_0x82f7('0x4c')]||!_0x448522[_0x82f7('0x4f')])return _0x448522;authService[_0x82f7('0x50')](_0x56ef47['body']['password'],_0x448522[_0x82f7('0x4f')],_0x3c7cc6[_0x82f7('0x4d')]);return _0x448522;})['then'](function(){_0x448522[_0x82f7('0x10')]=_0x56ef47['body'][_0x82f7('0x10')];_0x448522[_0x82f7('0x3f')]=null;_0x448522[_0x82f7('0x40')]=null;return _0x448522[_0x82f7('0x51')]();});})[_0x82f7('0xe')](function(){_0x4b9109['status'](0xc8)[_0x82f7('0x32')]({'message':_0x82f7('0x52')});})[_0x82f7('0x1e')](function(_0x33b1da){return handleError(_0x4b9109,0x1f4,_0x33b1da);});};passport['use']('local-login',new LocalStrategy({'usernameField':_0x82f7('0xf'),'passwordField':_0x82f7('0x10')},function(_0x189d76,_0x580e2e,_0x39fb5b){return localAuthenticate(db[_0x82f7('0x47')],_0x189d76,_0x580e2e,_0x39fb5b);}));
\ No newline at end of file
+var _0xbc5a=['You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','https://','/reset/','Reset\x20Email\x20sent!','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','validatePasswordPattern','password','previousPasswords','passwordHistoryLimit','save','send','Password\x20reset!','use','passport','passport-local','Strategy','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','then','disabled','blocked','loginAttempts','admin','user','agent','name','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','add','minutes','clearBlockUser','blockedAt','getLicense','catch','MailAccount','email','MailServerOut','Smtp','service','host','port','secure','authentication','auth','pass','merge','format','\x22%s\x22\x20<%s>','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','xCally\x20Motion\x20Password\x20Reset'];(function(_0x33c797,_0x430c30){var _0x514ff7=function(_0x17920c){while(--_0x17920c){_0x33c797['push'](_0x33c797['shift']());}};_0x514ff7(++_0x430c30);}(_0xbc5a,0x66));var _0xabc5=function(_0x166dcd,_0x1ba118){_0x166dcd=_0x166dcd-0x0;var _0x1731d4=_0xbc5a[_0x166dcd];return _0x1731d4;};'use strict';var util=require('util');var passport=require(_0xabc5('0x0'));var LocalStrategy=require(_0xabc5('0x1'))[_0xabc5('0x2')];var jayson=require(_0xabc5('0x3'));var _=require(_0xabc5('0x4'));var rs=require('randomstring');var moment=require(_0xabc5('0x5'));var db=require(_0xabc5('0x6'))['db'];var authService=require(_0xabc5('0x7'));var utils=require(_0xabc5('0x8'));var client=jayson[_0xabc5('0x9')][_0xabc5('0xa')]({'port':0x232b});function localAuthenticate(_0x46fad7,_0x985ada,_0x39174a,_0x17125e){var _0x5c6128,_0x210115;return db[_0xabc5('0xb')][_0xabc5('0xc')]({'where':{'id':0x1},'attributes':[_0xabc5('0xd'),'blockDuration'],'raw':!![]})[_0xabc5('0xe')](function(_0x257861){_0x5c6128=_0x257861;return _0x46fad7[_0xabc5('0xc')]({'attributes':['id','name','password','salt','role',_0xabc5('0xf'),_0xabc5('0x10'),'blockedAt',_0xabc5('0x11')],'where':{'name':_0x985ada,'role':{'$or':[_0xabc5('0x12'),_0xabc5('0x13'),_0xabc5('0x14')]}}});})[_0xabc5('0xe')](function(_0x335851){if(!_0x335851||_0x335851&&_0x335851[_0xabc5('0x15')]!==_0x985ada){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x210115=_0x335851;return _0x210115;}})[_0xabc5('0xe')](function(){_0x210115[_0xabc5('0x16')](_0x39174a,function(_0x416f21,_0x3bf69c){var _0x31fcd1=_0x210115['loginAttempts']+0x1;if(_0x416f21){return _0x17125e(_0x416f21);}else if(!_0x3bf69c){if(_0x210115['disabled']){return _0x17125e(null,![],{'message':_0xabc5('0x17')});}else if(_0x5c6128[_0xabc5('0xd')]>0x0){if(_0x210115[_0xabc5('0x10')]){if(_0x5c6128[_0xabc5('0x18')]>0x0){if(moment(_0x210115['blockedAt'])[_0xabc5('0x19')](_0x5c6128[_0xabc5('0x18')],_0xabc5('0x1a'))>moment()){return _0x17125e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x210115,_0x31fcd1,![],null)['then'](function(){return _0x17125e(null,![],{'message':_0xabc5('0x17')});});}}else{return _0x17125e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x31fcd1>=_0x5c6128[_0xabc5('0xd')]){return utils[_0xabc5('0x1b')](_0x210115,0x0,!![],moment())[_0xabc5('0xe')](function(){return _0x17125e(null,![],{'message':_0xabc5('0x17')});});}else{return utils[_0xabc5('0x1b')](_0x210115,_0x31fcd1,![],null)[_0xabc5('0xe')](function(){return _0x17125e(null,![],{'message':_0xabc5('0x17')});});}}}else{return _0x17125e(null,![],{'message':_0xabc5('0x17')});}}else{if(_0x210115[_0xabc5('0xf')]){return _0x17125e(null,![],{'message':_0xabc5('0x17')});}else if(_0x5c6128[_0xabc5('0xd')]>0x0){if(_0x210115[_0xabc5('0x10')]){if(_0x5c6128[_0xabc5('0x18')]>0x0){if(moment(_0x210115[_0xabc5('0x1c')])['add'](_0x5c6128[_0xabc5('0x18')],'minutes')>moment()){return _0x17125e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xabc5('0x1b')](_0x210115,0x0,![],null)['then'](function(){return utils[_0xabc5('0x1d')](_0x210115);})[_0xabc5('0xe')](function(){return _0x17125e(null,_0x210115);});}}else{return _0x17125e(null,![],{'message':_0xabc5('0x17')});}}else{return utils[_0xabc5('0x1b')](_0x210115,0x0,![],null)['then'](function(){return utils[_0xabc5('0x1d')](_0x210115);})[_0xabc5('0xe')](function(){return _0x17125e(null,_0x210115);})[_0xabc5('0x1e')](function(_0x4f688e){return _0x17125e(null,![],_0x4f688e);});}}else{if(_0x210115['blocked']){return _0x17125e(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xabc5('0x1d')](_0x210115)[_0xabc5('0xe')](function(){return _0x17125e(null,_0x210115);});}}}});})['catch'](function(_0x847269){return _0x17125e(null,![],_0x847269);});}function sendServiceMail(_0x46ae58){return db[_0xabc5('0x1f')]['find']({'where':{'service':!![]},'attributes':['id','name',_0xabc5('0x20')],'include':[{'model':db[_0xabc5('0x21')],'as':_0xabc5('0x22')}]})[_0xabc5('0xe')](function(_0x3a1e05){if(!_0x3a1e05){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x298b91={'tls':{'rejectUnauthorized':![]}};if(_0x3a1e05[_0xabc5('0x22')]['service']){_0x298b91[_0xabc5('0x23')]=_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x23')];}else{_0x298b91[_0xabc5('0x24')]=_0x3a1e05[_0xabc5('0x22')]['host'];_0x298b91['port']=_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x25')];_0x298b91[_0xabc5('0x26')]=_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x26')];}if(_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x27')]){_0x298b91[_0xabc5('0x28')]={'user':_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x13')],'pass':_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x29')]};}var _0x5ee9d1={'account':_0x298b91,'message':_[_0xabc5('0x2a')]({'from':util[_0xabc5('0x2b')](_0xabc5('0x2c'),_0x3a1e05[_0xabc5('0x15')],_0x3a1e05['email']||_0x3a1e05[_0xabc5('0x22')][_0xabc5('0x13')])},_0x46ae58)};return client['request'](_0xabc5('0x2d'),_0x5ee9d1);})[_0xabc5('0xe')](function(_0x40fc79){if(_0x40fc79[_0xabc5('0x2e')]){throw new Error(util[_0xabc5('0x2b')](_0xabc5('0x2f'),_0x40fc79[_0xabc5('0x2e')][_0xabc5('0x30')]||JSON[_0xabc5('0x31')](_0x40fc79['error'])));}return!![];});}function handleError(_0x2c4e2e,_0x2198e0,_0x388524){return _0x2c4e2e[_0xabc5('0x32')](_0x2198e0||0x1f4)['send']({'message':_0x388524?_0x388524[_0xabc5('0x30')]||_0x388524:''});}exports['login']=function(_0x46847a,_0x5665e2,_0x58320a){passport['authenticate'](_0xabc5('0x33'),function(_0x35de9b,_0x4acf95,_0x3fbd93){var _0x102b5a=_0x35de9b||_0x3fbd93;if(_0x102b5a){return handleError(_0x5665e2,0x191,_0x102b5a);}if(!_0x4acf95){return handleError(_0x5665e2,0x194,{'message':_0xabc5('0x34')});}else{var _0x448a48={'payload':{'id':_0x4acf95['id'],'role':_0x4acf95[_0xabc5('0x35')]},'options':{'expiresIn':0x15180}};return authService[_0xabc5('0x36')](_0x448a48)[_0xabc5('0xe')](function(_0x129e81){_0x5665e2['json']({'id':_0x4acf95['id'],'token':_0x129e81,'statusCall':'','isAlreadyLogged':_0x4acf95[_0xabc5('0x37')]});});}})(_0x46847a,_0x5665e2,_0x58320a);};exports[_0xabc5('0x38')]=function(_0x480436,_0x54fc72,_0x24aa42){if(!_0x480436[_0xabc5('0x39')][_0xabc5('0x20')]){return handleError(_0x54fc72,0x1f4,{'message':_0xabc5('0x3a')});}var _0x33b3fa=rs[_0xabc5('0x3b')]();_0x480436[_0xabc5('0x39')]['email']=_0x480436[_0xabc5('0x39')][_0xabc5('0x20')]['trim']()['toLowerCase']();var _0x58ebbb;return db[_0xabc5('0xb')]['findOne']({'where':{'id':0x1},'attributes':[_0xabc5('0xd'),_0xabc5('0x18')],'raw':!![]})['then'](function(_0x1a6864){_0x58ebbb=_0x1a6864;return db[_0xabc5('0x3c')][_0xabc5('0x3d')]({'where':{'email':_0x480436[_0xabc5('0x39')][_0xabc5('0x20')]}});})[_0xabc5('0xe')](function(_0x507352){if(!_0x507352){throw new Error(_0xabc5('0x3e'));}if(_0x507352[_0xabc5('0xf')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x507352['blocked']){if(moment(_0x507352[_0xabc5('0x1c')])[_0xabc5('0x19')](_0x58ebbb['blockDuration'],'minutes')>moment()){throw new Error(_0xabc5('0x3f'));}else{_0x507352[_0xabc5('0x10')]=![];_0x507352[_0xabc5('0x1c')]=null;}}_0x507352[_0xabc5('0x40')]=_0x33b3fa;_0x507352[_0xabc5('0x41')]=Date[_0xabc5('0x42')]()+0x36ee80;return _0x507352['save']();})[_0xabc5('0xe')](function(){return sendServiceMail({'to':_0x480436['body'][_0xabc5('0x20')],'subject':_0xabc5('0x43'),'text':_0xabc5('0x44')+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xabc5('0x45')+_0x480436['headers'][_0xabc5('0x24')]+_0xabc5('0x46')+_0x33b3fa+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})['then'](function(){_0x54fc72[_0xabc5('0x32')](0xc8)['send']({'message':_0xabc5('0x47')});})[_0xabc5('0x1e')](function(_0xeb115c){return handleError(_0x54fc72,0x1f4,_0xeb115c);});};exports[_0xabc5('0x48')]=function(_0x1ee7eb,_0x391d68,_0x1e7fe2){return db[_0xabc5('0x3c')][_0xabc5('0x3d')]({'where':{'resetPasswordToken':_0x1ee7eb['params'][_0xabc5('0x49')],'resetPasswordExpires':{'$gt':Date[_0xabc5('0x42')]()}}})['then'](function(_0x36ced3){if(!_0x36ced3){throw new Error(_0xabc5('0x4a'));}return db[_0xabc5('0xb')]['findOne']({'attributes':['id',_0xabc5('0x4b'),_0xabc5('0x4c'),'passwordHistoryLimit']})['then'](function(_0x5229ff){if(_0x5229ff[_0xabc5('0x4b')])authService[_0xabc5('0x4d')](_0x1ee7eb[_0xabc5('0x39')][_0xabc5('0x4e')]);if(!_0x5229ff['enforcePasswordHistory']||!_0x36ced3[_0xabc5('0x4f')])return _0x36ced3;authService['validatePasswordHistory'](_0x1ee7eb[_0xabc5('0x39')]['password'],_0x36ced3[_0xabc5('0x4f')],_0x5229ff[_0xabc5('0x50')]);return _0x36ced3;})[_0xabc5('0xe')](function(){_0x36ced3['password']=_0x1ee7eb[_0xabc5('0x39')][_0xabc5('0x4e')];_0x36ced3['resetPasswordToken']=null;_0x36ced3[_0xabc5('0x41')]=null;return _0x36ced3[_0xabc5('0x51')]();});})[_0xabc5('0xe')](function(){_0x391d68['status'](0xc8)[_0xabc5('0x52')]({'message':_0xabc5('0x53')});})[_0xabc5('0x1e')](function(_0x932499){return handleError(_0x391d68,0x1f4,_0x932499);});};passport[_0xabc5('0x54')]('local-login',new LocalStrategy({'usernameField':_0xabc5('0x15'),'passwordField':_0xabc5('0x4e')},function(_0x5c1904,_0x58a100,_0x5b91ef){return localAuthenticate(db[_0xabc5('0x3c')],_0x5c1904,_0x58a100,_0x5b91ef);}));
\ No newline at end of file
index 2f273c9..2fbcc36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x777f=['/reset/:token','reset','exports','express','./authLocal.controller','post','login','/forgot','forgot'];(function(_0x4a6601,_0x4d786b){var _0x190fe3=function(_0x4e4130){while(--_0x4e4130){_0x4a6601['push'](_0x4a6601['shift']());}};_0x190fe3(++_0x4d786b);}(_0x777f,0x159));var _0xf777=function(_0x2f71f6,_0x3a1f4d){_0x2f71f6=_0x2f71f6-0x0;var _0x2b23ea=_0x777f[_0x2f71f6];return _0x2b23ea;};'use strict';var express=require(_0xf777('0x0'));var router=express['Router']();var controller=require(_0xf777('0x1'));router[_0xf777('0x2')]('/',controller[_0xf777('0x3')]);router['post'](_0xf777('0x4'),controller[_0xf777('0x5')]);router['post'](_0xf777('0x6'),controller[_0xf777('0x7')]);module[_0xf777('0x8')]=router;
\ No newline at end of file
+var _0x4e31=['login','forgot','exports','express','Router','./authLocal.controller','post'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4e31,0x1d1));var _0x14e3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4e31[_0x14add3];return _0x4a174f;};'use strict';var express=require(_0x14e3('0x0'));var router=express[_0x14e3('0x1')]();var controller=require(_0x14e3('0x2'));router[_0x14e3('0x3')]('/',controller[_0x14e3('0x4')]);router[_0x14e3('0x3')]('/forgot',controller[_0x14e3('0x5')]);router[_0x14e3('0x3')]('/reset/:token',controller['reset']);module[_0x14e3('0x6')]=router;
\ No newline at end of file
index 5b7beea..9475751 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5d6=['INTEGER','exports','STRING'];(function(_0x70504d,_0x34e810){var _0x47e29b=function(_0x119dfe){while(--_0x119dfe){_0x70504d['push'](_0x70504d['shift']());}};_0x47e29b(++_0x34e810);}(_0xe5d6,0x1a2));var _0x6e5d=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xe5d6[_0x42245d];return _0x4b211a;};'use strict';var Sequelize=require('sequelize');module[_0x6e5d('0x0')]={'name':{'type':Sequelize[_0x6e5d('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x6e5d('0x1')]},'description':{'type':Sequelize[_0x6e5d('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x6e5d('0x2')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x2617=['BOOLEAN','INTEGER','exports','STRING'];(function(_0xc89664,_0x5bede7){var _0x696715=function(_0x31ccaa){while(--_0x31ccaa){_0xc89664['push'](_0xc89664['shift']());}};_0x696715(++_0x5bede7);}(_0x2617,0x72));var _0x7261=function(_0x19ae6e,_0x539a98){_0x19ae6e=_0x19ae6e-0x0;var _0x56cc9c=_0x2617[_0x19ae6e];return _0x56cc9c;};'use strict';var Sequelize=require('sequelize');module[_0x7261('0x0')]={'name':{'type':Sequelize[_0x7261('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x7261('0x1')]},'description':{'type':Sequelize[_0x7261('0x1')]},'status':{'type':Sequelize[_0x7261('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7261('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 178096e..eb68177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dec=['set','Content-Range','json','reject','save','then','error','stack','name','send','map','Automation','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','hasOwnProperty','limit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','fields','length','options','create','body','find','destroy','ids','omit','findOne','Condition','pick','nolimit','getConditions','addActions','getActions','Action','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','count'];(function(_0x5ee587,_0x2b95f5){var _0x43c4f7=function(_0x1f3b3a){while(--_0x1f3b3a){_0x5ee587['push'](_0x5ee587['shift']());}};_0x43c4f7(++_0x2b95f5);}(_0x4dec,0x85));var _0xc4de=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x4dec[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xc4de('0x0'));var rimraf=require(_0xc4de('0x1'));var zipdir=require(_0xc4de('0x2'));var jsonpatch=require(_0xc4de('0x3'));var rp=require(_0xc4de('0x4'));var moment=require(_0xc4de('0x5'));var BPromise=require(_0xc4de('0x6'));var Mustache=require('mustache');var util=require(_0xc4de('0x7'));var path=require(_0xc4de('0x8'));var sox=require(_0xc4de('0x9'));var csv=require(_0xc4de('0xa'));var ejs=require(_0xc4de('0xb'));var fs=require('fs');var fs_extra=require(_0xc4de('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc4de('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc4de('0xe'));var toCsv=require(_0xc4de('0xa'));var querystring=require('querystring');var Papa=require(_0xc4de('0xf'));var Redis=require(_0xc4de('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc4de('0x11'));var as=require(_0xc4de('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4de('0x13'))(_0xc4de('0x14'));var utils=require(_0xc4de('0x15'));var config=require(_0xc4de('0x16'));var licenseUtil=require(_0xc4de('0x17'));var db=require(_0xc4de('0x18'))['db'];function respondWithStatusCode(_0x147b91,_0x182efb){_0x182efb=_0x182efb||0xcc;return function(_0x590dcf){if(_0x590dcf){return _0x147b91[_0xc4de('0x19')](_0x182efb);}return _0x147b91[_0xc4de('0x1a')](_0x182efb)['end']();};}function respondWithResult(_0x5b969e,_0x1542e7){_0x1542e7=_0x1542e7||0xc8;return function(_0x3d7ac8){if(_0x3d7ac8){return _0x5b969e[_0xc4de('0x1a')](_0x1542e7)['json'](_0x3d7ac8);}};}function respondWithFilteredResult(_0x4893cb,_0x2c7a6c){return function(_0x296149){if(_0x296149){var _0x31de99=typeof _0x2c7a6c[_0xc4de('0x1b')]==='undefined'&&typeof _0x2c7a6c['limit']==='undefined';var _0x3c64f9=_0x296149[_0xc4de('0x1c')];var _0x4581eb=_0x31de99?0x0:_0x2c7a6c[_0xc4de('0x1b')];var _0x57c226=_0x31de99?_0x296149[_0xc4de('0x1c')]:_0x2c7a6c[_0xc4de('0x1b')]+_0x2c7a6c['limit'];var _0x4c9ab8;if(_0x57c226>=_0x3c64f9){_0x57c226=_0x3c64f9;_0x4c9ab8=0xc8;}else{_0x4c9ab8=0xce;}_0x4893cb[_0xc4de('0x1a')](_0x4c9ab8);return _0x4893cb[_0xc4de('0x1d')](_0xc4de('0x1e'),_0x4581eb+'-'+_0x57c226+'/'+_0x3c64f9)[_0xc4de('0x1f')](_0x296149);}return null;};}function patchUpdates(_0x2cf558){return function(_0xe14673){try{jsonpatch['apply'](_0xe14673,_0x2cf558,!![]);}catch(_0x352a90){return BPromise[_0xc4de('0x20')](_0x352a90);}return _0xe14673[_0xc4de('0x21')]();};}function saveUpdates(_0x2a8d18,_0x1e54bb){return function(_0x2c5cbe){if(_0x2c5cbe){return _0x2c5cbe['update'](_0x2a8d18)[_0xc4de('0x22')](function(_0xa4c77c){return _0xa4c77c;});}return null;};}function removeEntity(_0x2431a5,_0x25b77c){return function(_0x5132bd){if(_0x5132bd){return _0x5132bd['destroy']()[_0xc4de('0x22')](function(){_0x2431a5[_0xc4de('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3eacf2,_0x1f4603){return function(_0x143e47){if(!_0x143e47){_0x3eacf2['sendStatus'](0x194);}return _0x143e47;};}function handleError(_0x46726d,_0x3dfc3e){_0x3dfc3e=_0x3dfc3e||0x1f4;return function(_0x1f1a8f){logger[_0xc4de('0x23')](_0x1f1a8f[_0xc4de('0x24')]);if(_0x1f1a8f['name']){delete _0x1f1a8f[_0xc4de('0x25')];}_0x46726d[_0xc4de('0x1a')](_0x3dfc3e)[_0xc4de('0x26')](_0x1f1a8f);};}exports['index']=function(_0x204618,_0x3d4be7){var _0x281496={},_0x3c8ae4={},_0x4b86bc={'count':0x0,'rows':[]};var _0x5b908d=_[_0xc4de('0x27')](db[_0xc4de('0x28')][_0xc4de('0x29')],function(_0x2f8266){return{'name':_0x2f8266[_0xc4de('0x2a')],'type':_0x2f8266[_0xc4de('0x2b')]['key']};});_0x3c8ae4[_0xc4de('0x2c')]=_[_0xc4de('0x27')](_0x5b908d,_0xc4de('0x25'));_0x3c8ae4[_0xc4de('0x2d')]=_[_0xc4de('0x2e')](_0x204618[_0xc4de('0x2d')]);_0x3c8ae4[_0xc4de('0x2f')]=_['intersection'](_0x3c8ae4[_0xc4de('0x2c')],_0x3c8ae4[_0xc4de('0x2d')]);_0x281496['attributes']=_[_0xc4de('0x30')](_0x3c8ae4[_0xc4de('0x2c')],qs['fields'](_0x204618[_0xc4de('0x2d')]['fields']));_0x281496[_0xc4de('0x31')]=_0x281496['attributes']['length']?_0x281496['attributes']:_0x3c8ae4['model'];if(!_0x204618[_0xc4de('0x2d')][_0xc4de('0x32')]('nolimit')){_0x281496[_0xc4de('0x33')]=qs['limit'](_0x204618[_0xc4de('0x2d')][_0xc4de('0x33')]);_0x281496[_0xc4de('0x1b')]=qs[_0xc4de('0x1b')](_0x204618[_0xc4de('0x2d')]['offset']);}_0x281496[_0xc4de('0x34')]=qs['sort'](_0x204618[_0xc4de('0x2d')][_0xc4de('0x35')]);_0x281496[_0xc4de('0x36')]=qs[_0xc4de('0x2f')](_['pick'](_0x204618[_0xc4de('0x2d')],_0x3c8ae4[_0xc4de('0x2f')]),_0x5b908d);if(_0x204618[_0xc4de('0x2d')][_0xc4de('0x37')]){_0x281496[_0xc4de('0x36')]=_[_0xc4de('0x38')](_0x281496[_0xc4de('0x36')],{'$or':_[_0xc4de('0x27')](_0x5b908d,function(_0x588bf1){if(_0x588bf1[_0xc4de('0x2b')]!=='VIRTUAL'){var _0x1aa8c5={};_0x1aa8c5[_0x588bf1[_0xc4de('0x25')]]={'$like':'%'+_0x204618['query'][_0xc4de('0x37')]+'%'};return _0x1aa8c5;}})});}_0x281496=_['merge']({},_0x281496,_0x204618['options']);var _0x377d0d={'where':_0x281496['where']};return db[_0xc4de('0x28')]['count'](_0x377d0d)[_0xc4de('0x22')](function(_0x3febe9){_0x4b86bc[_0xc4de('0x1c')]=_0x3febe9;if(_0x204618[_0xc4de('0x2d')][_0xc4de('0x39')]){_0x281496[_0xc4de('0x3a')]=[{'all':!![]}];}return db[_0xc4de('0x28')][_0xc4de('0x3b')](_0x281496);})['then'](function(_0x1505e8){_0x4b86bc[_0xc4de('0x3c')]=_0x1505e8;return _0x4b86bc;})['then'](respondWithFilteredResult(_0x3d4be7,_0x281496))[_0xc4de('0x3d')](handleError(_0x3d4be7,null));};exports[_0xc4de('0x3e')]=function(_0x4a7f5,_0x4e3a27){var _0xbcf9ea={'raw':![],'where':{'id':_0x4a7f5[_0xc4de('0x3f')]['id']}},_0x4b5eee={};_0x4b5eee['model']=_[_0xc4de('0x2e')](db[_0xc4de('0x28')]['rawAttributes']);_0x4b5eee[_0xc4de('0x2d')]=_[_0xc4de('0x2e')](_0x4a7f5[_0xc4de('0x2d')]);_0x4b5eee[_0xc4de('0x2f')]=_[_0xc4de('0x30')](_0x4b5eee[_0xc4de('0x2c')],_0x4b5eee[_0xc4de('0x2d')]);_0xbcf9ea[_0xc4de('0x31')]=_[_0xc4de('0x30')](_0x4b5eee[_0xc4de('0x2c')],qs[_0xc4de('0x40')](_0x4a7f5[_0xc4de('0x2d')][_0xc4de('0x40')]));_0xbcf9ea[_0xc4de('0x31')]=_0xbcf9ea['attributes'][_0xc4de('0x41')]?_0xbcf9ea['attributes']:_0x4b5eee[_0xc4de('0x2c')];if(_0x4a7f5['query'][_0xc4de('0x39')]){_0xbcf9ea['include']=[{'all':!![]}];}_0xbcf9ea=_['merge']({},_0xbcf9ea,_0x4a7f5[_0xc4de('0x42')]);return db['Automation']['find'](_0xbcf9ea)['then'](handleEntityNotFound(_0x4e3a27,null))[_0xc4de('0x22')](respondWithResult(_0x4e3a27,null))['catch'](handleError(_0x4e3a27,null));};exports[_0xc4de('0x43')]=function(_0x3ffc06,_0x3e4a0f){return db[_0xc4de('0x28')][_0xc4de('0x43')](_0x3ffc06[_0xc4de('0x44')],{})[_0xc4de('0x22')](respondWithResult(_0x3e4a0f,0xc9))['catch'](handleError(_0x3e4a0f,null));};exports['update']=function(_0x713469,_0x4221b6){if(_0x713469[_0xc4de('0x44')]['id']){delete _0x713469[_0xc4de('0x44')]['id'];}return db['Automation'][_0xc4de('0x45')]({'where':{'id':_0x713469[_0xc4de('0x3f')]['id']}})[_0xc4de('0x22')](handleEntityNotFound(_0x4221b6,null))[_0xc4de('0x22')](saveUpdates(_0x713469[_0xc4de('0x44')],null))[_0xc4de('0x22')](respondWithResult(_0x4221b6,null))['catch'](handleError(_0x4221b6,null));};exports[_0xc4de('0x46')]=function(_0x105268,_0xc9eff7){return db[_0xc4de('0x28')][_0xc4de('0x45')]({'where':{'id':_0x105268[_0xc4de('0x3f')]['id']}})['then'](handleEntityNotFound(_0xc9eff7,null))[_0xc4de('0x22')](removeEntity(_0xc9eff7,null))[_0xc4de('0x3d')](handleError(_0xc9eff7,null));};exports['addConditions']=function(_0x56cf5d,_0x4ba958,_0x8a5459){return db['Condition'][_0xc4de('0x45')]({'where':{'id':_0x56cf5d['params']['id']}})[_0xc4de('0x22')](handleEntityNotFound(_0x4ba958,null))[_0xc4de('0x22')](function(_0x29c3ea){if(_0x29c3ea){return _0x29c3ea['addConditions'](_0x56cf5d[_0xc4de('0x44')][_0xc4de('0x47')],_[_0xc4de('0x48')](_0x56cf5d[_0xc4de('0x44')],[_0xc4de('0x47'),'id'])||{});}})[_0xc4de('0x22')](respondWithResult(_0x4ba958,null))[_0xc4de('0x3d')](handleError(_0x4ba958,null));};exports['getConditions']=function(_0x518876,_0x480f48,_0x47e2f0){var _0x27b687={};var _0x383708={};var _0x3e961d;var _0xe40edc;return db[_0xc4de('0x28')][_0xc4de('0x49')]({'where':{'id':_0x518876['params']['id']}})[_0xc4de('0x22')](handleEntityNotFound(_0x480f48,null))[_0xc4de('0x22')](function(_0x12b3a6){if(_0x12b3a6){_0x3e961d=_0x12b3a6;_0x383708['model']=_[_0xc4de('0x2e')](db[_0xc4de('0x4a')][_0xc4de('0x29')]);_0x383708[_0xc4de('0x2d')]=_[_0xc4de('0x2e')](_0x518876[_0xc4de('0x2d')]);_0x383708['filters']=_['intersection'](_0x383708['model'],_0x383708['query']);_0x27b687[_0xc4de('0x31')]=_[_0xc4de('0x30')](_0x383708[_0xc4de('0x2c')],qs[_0xc4de('0x40')](_0x518876['query'][_0xc4de('0x40')]));_0x27b687[_0xc4de('0x31')]=_0x27b687[_0xc4de('0x31')]['length']?_0x27b687[_0xc4de('0x31')]:_0x383708[_0xc4de('0x2c')];_0x27b687[_0xc4de('0x34')]=qs[_0xc4de('0x35')](_0x518876[_0xc4de('0x2d')][_0xc4de('0x35')]);_0x27b687['where']=qs[_0xc4de('0x2f')](_[_0xc4de('0x4b')](_0x518876[_0xc4de('0x2d')],_0x383708[_0xc4de('0x2f')]));if(_0x518876[_0xc4de('0x2d')]['filter']){_0x27b687[_0xc4de('0x36')]=_[_0xc4de('0x38')](_0x27b687[_0xc4de('0x36')],{'$or':_[_0xc4de('0x27')](_0x27b687[_0xc4de('0x31')],function(_0x5d13d4){var _0x5df546={};_0x5df546[_0x5d13d4]={'$like':'%'+_0x518876[_0xc4de('0x2d')][_0xc4de('0x37')]+'%'};return _0x5df546;})});}_0x27b687=_[_0xc4de('0x38')]({},_0x27b687,_0x518876['options']);return _0x3e961d['getConditions'](_0x27b687);}})['then'](function(_0x46eced){if(_0x46eced){_0xe40edc=_0x46eced['length'];if(!_0x518876[_0xc4de('0x2d')][_0xc4de('0x32')](_0xc4de('0x4c'))){_0x27b687[_0xc4de('0x33')]=qs['limit'](_0x518876['query'][_0xc4de('0x33')]);_0x27b687['offset']=qs[_0xc4de('0x1b')](_0x518876['query'][_0xc4de('0x1b')]);}return _0x3e961d[_0xc4de('0x4d')](_0x27b687);}})[_0xc4de('0x22')](function(_0x3b3e12){if(_0x3b3e12){return _0x3b3e12?{'count':_0xe40edc,'rows':_0x3b3e12}:null;}})['then'](respondWithResult(_0x480f48,null))[_0xc4de('0x3d')](handleError(_0x480f48,null));};exports[_0xc4de('0x4e')]=function(_0x45fd20,_0x5e8878,_0x13ce71){return db['Action'][_0xc4de('0x45')]({'where':{'id':_0x45fd20[_0xc4de('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5e8878,null))[_0xc4de('0x22')](function(_0x4427df){if(_0x4427df){return _0x4427df['addActions'](_0x45fd20[_0xc4de('0x44')]['ids'],_[_0xc4de('0x48')](_0x45fd20[_0xc4de('0x44')],[_0xc4de('0x47'),'id'])||{});}})['then'](respondWithResult(_0x5e8878,null))[_0xc4de('0x3d')](handleError(_0x5e8878,null));};exports[_0xc4de('0x4f')]=function(_0x35daf6,_0x2e29b6,_0x90663){var _0x596ef1={};var _0x45473d={};var _0x8e2fee;var _0x400c70;return db['Automation'][_0xc4de('0x49')]({'where':{'id':_0x35daf6['params']['id']}})[_0xc4de('0x22')](handleEntityNotFound(_0x2e29b6,null))['then'](function(_0x27d407){if(_0x27d407){_0x8e2fee=_0x27d407;_0x45473d[_0xc4de('0x2c')]=_[_0xc4de('0x2e')](db[_0xc4de('0x50')]['rawAttributes']);_0x45473d['query']=_[_0xc4de('0x2e')](_0x35daf6[_0xc4de('0x2d')]);_0x45473d['filters']=_['intersection'](_0x45473d['model'],_0x45473d[_0xc4de('0x2d')]);_0x596ef1[_0xc4de('0x31')]=_[_0xc4de('0x30')](_0x45473d['model'],qs[_0xc4de('0x40')](_0x35daf6['query'][_0xc4de('0x40')]));_0x596ef1[_0xc4de('0x31')]=_0x596ef1[_0xc4de('0x31')][_0xc4de('0x41')]?_0x596ef1[_0xc4de('0x31')]:_0x45473d[_0xc4de('0x2c')];_0x596ef1[_0xc4de('0x34')]=qs['sort'](_0x35daf6[_0xc4de('0x2d')][_0xc4de('0x35')]);_0x596ef1[_0xc4de('0x36')]=qs[_0xc4de('0x2f')](_[_0xc4de('0x4b')](_0x35daf6[_0xc4de('0x2d')],_0x45473d[_0xc4de('0x2f')]));if(_0x35daf6[_0xc4de('0x2d')][_0xc4de('0x37')]){_0x596ef1[_0xc4de('0x36')]=_[_0xc4de('0x38')](_0x596ef1[_0xc4de('0x36')],{'$or':_['map'](_0x596ef1[_0xc4de('0x31')],function(_0x581f62){var _0x2b83ab={};_0x2b83ab[_0x581f62]={'$like':'%'+_0x35daf6[_0xc4de('0x2d')][_0xc4de('0x37')]+'%'};return _0x2b83ab;})});}_0x596ef1=_[_0xc4de('0x38')]({},_0x596ef1,_0x35daf6[_0xc4de('0x42')]);return _0x8e2fee['getActions'](_0x596ef1);}})['then'](function(_0xa852d9){if(_0xa852d9){_0x400c70=_0xa852d9[_0xc4de('0x41')];if(!_0x35daf6[_0xc4de('0x2d')][_0xc4de('0x32')]('nolimit')){_0x596ef1['limit']=qs[_0xc4de('0x33')](_0x35daf6['query'][_0xc4de('0x33')]);_0x596ef1[_0xc4de('0x1b')]=qs['offset'](_0x35daf6['query'][_0xc4de('0x1b')]);}return _0x8e2fee['getActions'](_0x596ef1);}})[_0xc4de('0x22')](function(_0x2367ac){if(_0x2367ac){return _0x2367ac?{'count':_0x400c70,'rows':_0x2367ac}:null;}})['then'](respondWithResult(_0x2e29b6,null))[_0xc4de('0x3d')](handleError(_0x2e29b6,null));};
\ No newline at end of file
+var _0x92af=['model','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','merge','options','includeAll','include','findAll','catch','params','create','body','find','addConditions','Condition','ids','omit','findOne','sort','pick','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','Automation','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x92af,0x172));var _0xf92a=function(_0x286126,_0x542afc){_0x286126=_0x286126-0x0;var _0x15f11d=_0x92af[_0x286126];return _0x15f11d;};'use strict';var emlformat=require(_0xf92a('0x0'));var rimraf=require(_0xf92a('0x1'));var zipdir=require(_0xf92a('0x2'));var jsonpatch=require(_0xf92a('0x3'));var rp=require(_0xf92a('0x4'));var moment=require(_0xf92a('0x5'));var BPromise=require(_0xf92a('0x6'));var Mustache=require(_0xf92a('0x7'));var util=require('util');var path=require(_0xf92a('0x8'));var sox=require(_0xf92a('0x9'));var csv=require(_0xf92a('0xa'));var ejs=require(_0xf92a('0xb'));var fs=require('fs');var fs_extra=require(_0xf92a('0xc'));var _=require(_0xf92a('0xd'));var squel=require(_0xf92a('0xe'));var crypto=require(_0xf92a('0xf'));var jsforce=require(_0xf92a('0x10'));var deskjs=require(_0xf92a('0x11'));var toCsv=require(_0xf92a('0xa'));var querystring=require('querystring');var Papa=require(_0xf92a('0x12'));var Redis=require(_0xf92a('0x13'));var authService=require(_0xf92a('0x14'));var qs=require(_0xf92a('0x15'));var as=require(_0xf92a('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf92a('0x17'));var utils=require('../../config/utils');var config=require(_0xf92a('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf92a('0x19'))['db'];function respondWithStatusCode(_0x3ac743,_0x22ab5b){_0x22ab5b=_0x22ab5b||0xcc;return function(_0x4dd70d){if(_0x4dd70d){return _0x3ac743[_0xf92a('0x1a')](_0x22ab5b);}return _0x3ac743[_0xf92a('0x1b')](_0x22ab5b)['end']();};}function respondWithResult(_0xaa2e41,_0x1fed09){_0x1fed09=_0x1fed09||0xc8;return function(_0x43cfdb){if(_0x43cfdb){return _0xaa2e41[_0xf92a('0x1b')](_0x1fed09)[_0xf92a('0x1c')](_0x43cfdb);}};}function respondWithFilteredResult(_0x1befa2,_0x213b12){return function(_0x4659ca){if(_0x4659ca){var _0x3f5135=typeof _0x213b12[_0xf92a('0x1d')]===_0xf92a('0x1e')&&typeof _0x213b12['limit']===_0xf92a('0x1e');var _0x38ca27=_0x4659ca[_0xf92a('0x1f')];var _0x14b4cf=_0x3f5135?0x0:_0x213b12[_0xf92a('0x1d')];var _0x154286=_0x3f5135?_0x4659ca[_0xf92a('0x1f')]:_0x213b12[_0xf92a('0x1d')]+_0x213b12[_0xf92a('0x20')];var _0x1ffefb;if(_0x154286>=_0x38ca27){_0x154286=_0x38ca27;_0x1ffefb=0xc8;}else{_0x1ffefb=0xce;}_0x1befa2[_0xf92a('0x1b')](_0x1ffefb);return _0x1befa2[_0xf92a('0x21')](_0xf92a('0x22'),_0x14b4cf+'-'+_0x154286+'/'+_0x38ca27)['json'](_0x4659ca);}return null;};}function patchUpdates(_0x23645f){return function(_0x4cb9e9){try{jsonpatch[_0xf92a('0x23')](_0x4cb9e9,_0x23645f,!![]);}catch(_0x4c36be){return BPromise[_0xf92a('0x24')](_0x4c36be);}return _0x4cb9e9[_0xf92a('0x25')]();};}function saveUpdates(_0x5601ee,_0x51cb60){return function(_0x1647f9){if(_0x1647f9){return _0x1647f9[_0xf92a('0x26')](_0x5601ee)[_0xf92a('0x27')](function(_0xde31b5){return _0xde31b5;});}return null;};}function removeEntity(_0x40a594,_0x4623a6){return function(_0x16b19b){if(_0x16b19b){return _0x16b19b[_0xf92a('0x28')]()['then'](function(){_0x40a594[_0xf92a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48a69a,_0x338af3){return function(_0xdcada4){if(!_0xdcada4){_0x48a69a[_0xf92a('0x1a')](0x194);}return _0xdcada4;};}function handleError(_0x214e6b,_0x2cf62b){_0x2cf62b=_0x2cf62b||0x1f4;return function(_0x41ba0a){logger[_0xf92a('0x29')](_0x41ba0a[_0xf92a('0x2a')]);if(_0x41ba0a['name']){delete _0x41ba0a[_0xf92a('0x2b')];}_0x214e6b[_0xf92a('0x1b')](_0x2cf62b)[_0xf92a('0x2c')](_0x41ba0a);};}exports['index']=function(_0x4cd69e,_0x10e994){var _0x2b67a8={},_0x518812={},_0x5cf781={'count':0x0,'rows':[]};var _0xbfad62=_['map'](db[_0xf92a('0x2d')][_0xf92a('0x2e')],function(_0x3d9310){return{'name':_0x3d9310[_0xf92a('0x2f')],'type':_0x3d9310[_0xf92a('0x30')][_0xf92a('0x31')]};});_0x518812['model']=_[_0xf92a('0x32')](_0xbfad62,_0xf92a('0x2b'));_0x518812[_0xf92a('0x33')]=_[_0xf92a('0x34')](_0x4cd69e[_0xf92a('0x33')]);_0x518812[_0xf92a('0x35')]=_[_0xf92a('0x36')](_0x518812[_0xf92a('0x37')],_0x518812['query']);_0x2b67a8['attributes']=_['intersection'](_0x518812[_0xf92a('0x37')],qs[_0xf92a('0x38')](_0x4cd69e[_0xf92a('0x33')]['fields']));_0x2b67a8[_0xf92a('0x39')]=_0x2b67a8[_0xf92a('0x39')][_0xf92a('0x3a')]?_0x2b67a8[_0xf92a('0x39')]:_0x518812[_0xf92a('0x37')];if(!_0x4cd69e[_0xf92a('0x33')][_0xf92a('0x3b')](_0xf92a('0x3c'))){_0x2b67a8[_0xf92a('0x20')]=qs[_0xf92a('0x20')](_0x4cd69e['query'][_0xf92a('0x20')]);_0x2b67a8[_0xf92a('0x1d')]=qs['offset'](_0x4cd69e['query'][_0xf92a('0x1d')]);}_0x2b67a8[_0xf92a('0x3d')]=qs['sort'](_0x4cd69e['query']['sort']);_0x2b67a8[_0xf92a('0x3e')]=qs[_0xf92a('0x35')](_['pick'](_0x4cd69e[_0xf92a('0x33')],_0x518812['filters']),_0xbfad62);if(_0x4cd69e['query'][_0xf92a('0x3f')]){_0x2b67a8[_0xf92a('0x3e')]=_[_0xf92a('0x40')](_0x2b67a8[_0xf92a('0x3e')],{'$or':_[_0xf92a('0x32')](_0xbfad62,function(_0x455585){if(_0x455585['type']!=='VIRTUAL'){var _0x226d08={};_0x226d08[_0x455585['name']]={'$like':'%'+_0x4cd69e[_0xf92a('0x33')][_0xf92a('0x3f')]+'%'};return _0x226d08;}})});}_0x2b67a8=_['merge']({},_0x2b67a8,_0x4cd69e[_0xf92a('0x41')]);var _0x18fa81={'where':_0x2b67a8[_0xf92a('0x3e')]};return db['Automation'][_0xf92a('0x1f')](_0x18fa81)[_0xf92a('0x27')](function(_0x35b56b){_0x5cf781['count']=_0x35b56b;if(_0x4cd69e[_0xf92a('0x33')][_0xf92a('0x42')]){_0x2b67a8[_0xf92a('0x43')]=[{'all':!![]}];}return db['Automation'][_0xf92a('0x44')](_0x2b67a8);})[_0xf92a('0x27')](function(_0x2c2606){_0x5cf781['rows']=_0x2c2606;return _0x5cf781;})[_0xf92a('0x27')](respondWithFilteredResult(_0x10e994,_0x2b67a8))[_0xf92a('0x45')](handleError(_0x10e994,null));};exports['show']=function(_0x220f8b,_0x3d6037){var _0x2ceb8f={'raw':![],'where':{'id':_0x220f8b[_0xf92a('0x46')]['id']}},_0x5acefa={};_0x5acefa['model']=_['keys'](db['Automation'][_0xf92a('0x2e')]);_0x5acefa[_0xf92a('0x33')]=_[_0xf92a('0x34')](_0x220f8b[_0xf92a('0x33')]);_0x5acefa[_0xf92a('0x35')]=_[_0xf92a('0x36')](_0x5acefa[_0xf92a('0x37')],_0x5acefa['query']);_0x2ceb8f[_0xf92a('0x39')]=_[_0xf92a('0x36')](_0x5acefa[_0xf92a('0x37')],qs[_0xf92a('0x38')](_0x220f8b[_0xf92a('0x33')][_0xf92a('0x38')]));_0x2ceb8f['attributes']=_0x2ceb8f[_0xf92a('0x39')][_0xf92a('0x3a')]?_0x2ceb8f['attributes']:_0x5acefa[_0xf92a('0x37')];if(_0x220f8b[_0xf92a('0x33')]['includeAll']){_0x2ceb8f[_0xf92a('0x43')]=[{'all':!![]}];}_0x2ceb8f=_['merge']({},_0x2ceb8f,_0x220f8b[_0xf92a('0x41')]);return db[_0xf92a('0x2d')]['find'](_0x2ceb8f)[_0xf92a('0x27')](handleEntityNotFound(_0x3d6037,null))[_0xf92a('0x27')](respondWithResult(_0x3d6037,null))[_0xf92a('0x45')](handleError(_0x3d6037,null));};exports[_0xf92a('0x47')]=function(_0x423bc6,_0x261733){return db[_0xf92a('0x2d')][_0xf92a('0x47')](_0x423bc6[_0xf92a('0x48')],{})['then'](respondWithResult(_0x261733,0xc9))[_0xf92a('0x45')](handleError(_0x261733,null));};exports['update']=function(_0x4210da,_0x272af3){if(_0x4210da[_0xf92a('0x48')]['id']){delete _0x4210da['body']['id'];}return db[_0xf92a('0x2d')][_0xf92a('0x49')]({'where':{'id':_0x4210da['params']['id']}})[_0xf92a('0x27')](handleEntityNotFound(_0x272af3,null))['then'](saveUpdates(_0x4210da['body'],null))[_0xf92a('0x27')](respondWithResult(_0x272af3,null))[_0xf92a('0x45')](handleError(_0x272af3,null));};exports[_0xf92a('0x28')]=function(_0x510804,_0x342346){return db[_0xf92a('0x2d')][_0xf92a('0x49')]({'where':{'id':_0x510804[_0xf92a('0x46')]['id']}})[_0xf92a('0x27')](handleEntityNotFound(_0x342346,null))[_0xf92a('0x27')](removeEntity(_0x342346,null))[_0xf92a('0x45')](handleError(_0x342346,null));};exports[_0xf92a('0x4a')]=function(_0x56f570,_0x28854b,_0x4898a2){return db[_0xf92a('0x4b')][_0xf92a('0x49')]({'where':{'id':_0x56f570[_0xf92a('0x46')]['id']}})[_0xf92a('0x27')](handleEntityNotFound(_0x28854b,null))['then'](function(_0x4903d9){if(_0x4903d9){return _0x4903d9[_0xf92a('0x4a')](_0x56f570['body'][_0xf92a('0x4c')],_[_0xf92a('0x4d')](_0x56f570[_0xf92a('0x48')],['ids','id'])||{});}})[_0xf92a('0x27')](respondWithResult(_0x28854b,null))['catch'](handleError(_0x28854b,null));};exports['getConditions']=function(_0xd5aa2a,_0xb48c19,_0x374c3d){var _0x42f0df={};var _0xe2153e={};var _0x4d11d0;var _0x389100;return db['Automation'][_0xf92a('0x4e')]({'where':{'id':_0xd5aa2a[_0xf92a('0x46')]['id']}})[_0xf92a('0x27')](handleEntityNotFound(_0xb48c19,null))[_0xf92a('0x27')](function(_0x156820){if(_0x156820){_0x4d11d0=_0x156820;_0xe2153e['model']=_[_0xf92a('0x34')](db[_0xf92a('0x4b')]['rawAttributes']);_0xe2153e['query']=_['keys'](_0xd5aa2a[_0xf92a('0x33')]);_0xe2153e[_0xf92a('0x35')]=_[_0xf92a('0x36')](_0xe2153e[_0xf92a('0x37')],_0xe2153e[_0xf92a('0x33')]);_0x42f0df[_0xf92a('0x39')]=_[_0xf92a('0x36')](_0xe2153e[_0xf92a('0x37')],qs[_0xf92a('0x38')](_0xd5aa2a[_0xf92a('0x33')][_0xf92a('0x38')]));_0x42f0df[_0xf92a('0x39')]=_0x42f0df[_0xf92a('0x39')]['length']?_0x42f0df[_0xf92a('0x39')]:_0xe2153e['model'];_0x42f0df[_0xf92a('0x3d')]=qs['sort'](_0xd5aa2a['query'][_0xf92a('0x4f')]);_0x42f0df[_0xf92a('0x3e')]=qs[_0xf92a('0x35')](_[_0xf92a('0x50')](_0xd5aa2a[_0xf92a('0x33')],_0xe2153e[_0xf92a('0x35')]));if(_0xd5aa2a[_0xf92a('0x33')][_0xf92a('0x3f')]){_0x42f0df[_0xf92a('0x3e')]=_['merge'](_0x42f0df[_0xf92a('0x3e')],{'$or':_[_0xf92a('0x32')](_0x42f0df['attributes'],function(_0x24bbc3){var _0x141904={};_0x141904[_0x24bbc3]={'$like':'%'+_0xd5aa2a['query'][_0xf92a('0x3f')]+'%'};return _0x141904;})});}_0x42f0df=_[_0xf92a('0x40')]({},_0x42f0df,_0xd5aa2a[_0xf92a('0x41')]);return _0x4d11d0[_0xf92a('0x51')](_0x42f0df);}})['then'](function(_0x40a2ac){if(_0x40a2ac){_0x389100=_0x40a2ac['length'];if(!_0xd5aa2a['query']['hasOwnProperty']('nolimit')){_0x42f0df[_0xf92a('0x20')]=qs['limit'](_0xd5aa2a[_0xf92a('0x33')]['limit']);_0x42f0df[_0xf92a('0x1d')]=qs[_0xf92a('0x1d')](_0xd5aa2a[_0xf92a('0x33')][_0xf92a('0x1d')]);}return _0x4d11d0[_0xf92a('0x51')](_0x42f0df);}})[_0xf92a('0x27')](function(_0x4bbeb1){if(_0x4bbeb1){return _0x4bbeb1?{'count':_0x389100,'rows':_0x4bbeb1}:null;}})[_0xf92a('0x27')](respondWithResult(_0xb48c19,null))[_0xf92a('0x45')](handleError(_0xb48c19,null));};exports[_0xf92a('0x52')]=function(_0x4f90a9,_0x260f84,_0x5e071c){return db[_0xf92a('0x53')]['find']({'where':{'id':_0x4f90a9[_0xf92a('0x46')]['id']}})[_0xf92a('0x27')](handleEntityNotFound(_0x260f84,null))[_0xf92a('0x27')](function(_0xcc4cf0){if(_0xcc4cf0){return _0xcc4cf0[_0xf92a('0x52')](_0x4f90a9['body'][_0xf92a('0x4c')],_[_0xf92a('0x4d')](_0x4f90a9[_0xf92a('0x48')],[_0xf92a('0x4c'),'id'])||{});}})[_0xf92a('0x27')](respondWithResult(_0x260f84,null))[_0xf92a('0x45')](handleError(_0x260f84,null));};exports[_0xf92a('0x54')]=function(_0x2b3211,_0x250894,_0x2c35fd){var _0x155310={};var _0xe89504={};var _0x2d41e9;var _0x4f0725;return db['Automation'][_0xf92a('0x4e')]({'where':{'id':_0x2b3211[_0xf92a('0x46')]['id']}})['then'](handleEntityNotFound(_0x250894,null))[_0xf92a('0x27')](function(_0x46e2f1){if(_0x46e2f1){_0x2d41e9=_0x46e2f1;_0xe89504[_0xf92a('0x37')]=_[_0xf92a('0x34')](db[_0xf92a('0x53')][_0xf92a('0x2e')]);_0xe89504['query']=_[_0xf92a('0x34')](_0x2b3211[_0xf92a('0x33')]);_0xe89504['filters']=_['intersection'](_0xe89504['model'],_0xe89504[_0xf92a('0x33')]);_0x155310[_0xf92a('0x39')]=_[_0xf92a('0x36')](_0xe89504['model'],qs[_0xf92a('0x38')](_0x2b3211[_0xf92a('0x33')]['fields']));_0x155310[_0xf92a('0x39')]=_0x155310[_0xf92a('0x39')][_0xf92a('0x3a')]?_0x155310[_0xf92a('0x39')]:_0xe89504[_0xf92a('0x37')];_0x155310[_0xf92a('0x3d')]=qs[_0xf92a('0x4f')](_0x2b3211[_0xf92a('0x33')][_0xf92a('0x4f')]);_0x155310['where']=qs[_0xf92a('0x35')](_[_0xf92a('0x50')](_0x2b3211['query'],_0xe89504[_0xf92a('0x35')]));if(_0x2b3211[_0xf92a('0x33')][_0xf92a('0x3f')]){_0x155310[_0xf92a('0x3e')]=_['merge'](_0x155310[_0xf92a('0x3e')],{'$or':_[_0xf92a('0x32')](_0x155310[_0xf92a('0x39')],function(_0x5c10dc){var _0xa5fe05={};_0xa5fe05[_0x5c10dc]={'$like':'%'+_0x2b3211['query'][_0xf92a('0x3f')]+'%'};return _0xa5fe05;})});}_0x155310=_[_0xf92a('0x40')]({},_0x155310,_0x2b3211[_0xf92a('0x41')]);return _0x2d41e9['getActions'](_0x155310);}})[_0xf92a('0x27')](function(_0x5d1ffe){if(_0x5d1ffe){_0x4f0725=_0x5d1ffe[_0xf92a('0x3a')];if(!_0x2b3211['query']['hasOwnProperty']('nolimit')){_0x155310[_0xf92a('0x20')]=qs[_0xf92a('0x20')](_0x2b3211[_0xf92a('0x33')]['limit']);_0x155310[_0xf92a('0x1d')]=qs[_0xf92a('0x1d')](_0x2b3211[_0xf92a('0x33')][_0xf92a('0x1d')]);}return _0x2d41e9['getActions'](_0x155310);}})[_0xf92a('0x27')](function(_0x427e51){if(_0x427e51){return _0x427e51?{'count':_0x4f0725,'rows':_0x427e51}:null;}})['then'](respondWithResult(_0x250894,null))[_0xf92a('0x45')](handleError(_0x250894,null));};
\ No newline at end of file
index a1e72d2..655ad9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x419c=['Automation','tools_automations','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define'];(function(_0x9d7e5,_0x46c731){var _0x3dfff0=function(_0x38ed5b){while(--_0x38ed5b){_0x9d7e5['push'](_0x9d7e5['shift']());}};_0x3dfff0(++_0x46c731);}(_0x419c,0x72));var _0xc419=function(_0x13a094,_0x250688){_0x13a094=_0x13a094-0x0;var _0xa3d083=_0x419c[_0x13a094];return _0xa3d083;};'use strict';var _=require(_0xc419('0x0'));var util=require('util');var logger=require(_0xc419('0x1'))(_0xc419('0x2'));var moment=require(_0xc419('0x3'));var BPromise=require(_0xc419('0x4'));var rp=require(_0xc419('0x5'));var fs=require('fs');var path=require(_0xc419('0x6'));var rimraf=require(_0xc419('0x7'));var config=require(_0xc419('0x8'));var attributes=require(_0xc419('0x9'));module[_0xc419('0xa')]=function(_0x55f03b,_0x6f5847){return _0x55f03b[_0xc419('0xb')](_0xc419('0xc'),attributes,{'tableName':_0xc419('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c81=['../../config/logger','api','moment','bluebird','request-promise','rimraf','./automation.attributes','define','tools_automations','lodash','util'];(function(_0x78382a,_0x5b2fe6){var _0x2da2f0=function(_0x1f8699){while(--_0x1f8699){_0x78382a['push'](_0x78382a['shift']());}};_0x2da2f0(++_0x5b2fe6);}(_0x0c81,0x195));var _0x10c8=function(_0x42bd43,_0x59fb77){_0x42bd43=_0x42bd43-0x0;var _0x421e88=_0x0c81[_0x42bd43];return _0x421e88;};'use strict';var _=require(_0x10c8('0x0'));var util=require(_0x10c8('0x1'));var logger=require(_0x10c8('0x2'))(_0x10c8('0x3'));var moment=require(_0x10c8('0x4'));var BPromise=require(_0x10c8('0x5'));var rp=require(_0x10c8('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x10c8('0x7'));var config=require('../../config/environment');var attributes=require(_0x10c8('0x8'));module['exports']=function(_0x1f89e2,_0x12bc09){return _0x1f89e2[_0x10c8('0x9')]('Automation',attributes,{'tableName':_0x10c8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6619a2..2ee6b4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3746=['catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','Automation,\x20%s,\x20%s','request\x20sent','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x102881,_0x58d723){var _0x5c63d0=function(_0x955c59){while(--_0x955c59){_0x102881['push'](_0x102881['shift']());}};_0x5c63d0(++_0x58d723);}(_0x3746,0xa9));var _0x6374=function(_0x42d1a6,_0x1f8e73){_0x42d1a6=_0x42d1a6-0x0;var _0x46255f=_0x3746[_0x42d1a6];return _0x46255f;};'use strict';var _=require(_0x6374('0x0'));var util=require(_0x6374('0x1'));var moment=require('moment');var BPromise=require(_0x6374('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6374('0x3'));var db=require(_0x6374('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6374('0x5'));var config=require(_0x6374('0x6'));var jayson=require(_0x6374('0x7'));var client=jayson[_0x6374('0x8')][_0x6374('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46841a,_0x2e8717,_0x295cf9){return new BPromise(function(_0x330181,_0x30c9ac){return client['request'](_0x46841a,_0x295cf9)[_0x6374('0xa')](function(_0x5bd695){logger[_0x6374('0xb')](_0x6374('0xc'),_0x2e8717,_0x6374('0xd'));logger['debug'](_0x6374('0xe'),_0x2e8717,_0x6374('0xd'),JSON[_0x6374('0xf')](_0x5bd695));if(_0x5bd695['error']){if(_0x5bd695[_0x6374('0x10')][_0x6374('0x11')]===0x1f4){logger['error'](_0x6374('0xc'),_0x2e8717,_0x5bd695[_0x6374('0x10')][_0x6374('0x12')]);return _0x30c9ac(_0x5bd695['error'][_0x6374('0x12')]);}logger[_0x6374('0x10')](_0x6374('0xc'),_0x2e8717,_0x5bd695['error'][_0x6374('0x12')]);return _0x330181(_0x5bd695['error']['message']);}else{logger[_0x6374('0xb')]('Automation,\x20%s,\x20%s',_0x2e8717,_0x6374('0xd'));_0x330181(_0x5bd695[_0x6374('0x13')][_0x6374('0x12')]);}})[_0x6374('0x14')](function(_0x287981){logger[_0x6374('0x10')](_0x6374('0xc'),_0x2e8717,_0x287981);_0x30c9ac(_0x287981);});});}
\ No newline at end of file
+var _0x11c8=['jayson/promise','client','request\x20sent','debug','stringify','error','code','message','info','Automation,\x20%s,\x20%s','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x11c8,0x19a));var _0x811c=function(_0x12e073,_0x2a6387){_0x12e073=_0x12e073-0x0;var _0x17e67b=_0x11c8[_0x12e073];return _0x17e67b;};'use strict';var _=require('lodash');var util=require(_0x811c('0x0'));var moment=require(_0x811c('0x1'));var BPromise=require('bluebird');var rs=require(_0x811c('0x2'));var fs=require('fs');var Redis=require(_0x811c('0x3'));var db=require(_0x811c('0x4'))['db'];var utils=require(_0x811c('0x5'));var logger=require(_0x811c('0x6'))(_0x811c('0x7'));var config=require('../../config/environment');var jayson=require(_0x811c('0x8'));var client=jayson[_0x811c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x126cc2,_0x8af784,_0x13a95a){return new BPromise(function(_0x3e81ac,_0x57a92d){return client['request'](_0x126cc2,_0x13a95a)['then'](function(_0x5be7fc){logger['info']('Automation,\x20%s,\x20%s',_0x8af784,_0x811c('0xa'));logger[_0x811c('0xb')]('Automation,\x20%s,\x20%s,\x20%s',_0x8af784,_0x811c('0xa'),JSON[_0x811c('0xc')](_0x5be7fc));if(_0x5be7fc[_0x811c('0xd')]){if(_0x5be7fc[_0x811c('0xd')][_0x811c('0xe')]===0x1f4){logger['error']('Automation,\x20%s,\x20%s',_0x8af784,_0x5be7fc[_0x811c('0xd')]['message']);return _0x57a92d(_0x5be7fc[_0x811c('0xd')][_0x811c('0xf')]);}logger['error']('Automation,\x20%s,\x20%s',_0x8af784,_0x5be7fc[_0x811c('0xd')][_0x811c('0xf')]);return _0x3e81ac(_0x5be7fc[_0x811c('0xd')][_0x811c('0xf')]);}else{logger[_0x811c('0x10')](_0x811c('0x11'),_0x8af784,'request\x20sent');_0x3e81ac(_0x5be7fc['result'][_0x811c('0xf')]);}})[_0x811c('0x12')](function(_0x3b0895){logger[_0x811c('0xd')](_0x811c('0x11'),_0x8af784,_0x3b0895);_0x57a92d(_0x3b0895);});});}
\ No newline at end of file
index ca03139..e761e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f8=['/:id','show','/:id/conditions','/:id/actions','getActions','post','create','addConditions','addActions','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','isAuthenticated','index','get'];(function(_0x5cef48,_0x4f4b95){var _0x2486c6=function(_0x4acbe3){while(--_0x4acbe3){_0x5cef48['push'](_0x5cef48['shift']());}};_0x2486c6(++_0x4f4b95);}(_0x34f8,0xbc));var _0x834f=function(_0x3e629b,_0xf4c964){_0x3e629b=_0x3e629b-0x0;var _0x192383=_0x34f8[_0x3e629b];return _0x192383;};'use strict';var multer=require(_0x834f('0x0'));var util=require(_0x834f('0x1'));var path=require('path');var timeout=require(_0x834f('0x2'));var express=require(_0x834f('0x3'));var router=express[_0x834f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x834f('0x5'));var interaction=require(_0x834f('0x6'));var config=require(_0x834f('0x7'));var controller=require(_0x834f('0x8'));router['get']('/',auth[_0x834f('0x9')](),controller[_0x834f('0xa')]);router[_0x834f('0xb')](_0x834f('0xc'),auth['isAuthenticated'](),controller[_0x834f('0xd')]);router['get'](_0x834f('0xe'),auth[_0x834f('0x9')](),controller['getConditions']);router['get'](_0x834f('0xf'),auth[_0x834f('0x9')](),controller[_0x834f('0x10')]);router[_0x834f('0x11')]('/',auth[_0x834f('0x9')](),controller[_0x834f('0x12')]);router[_0x834f('0x11')]('/:id/conditions',auth[_0x834f('0x9')](),controller[_0x834f('0x13')]);router[_0x834f('0x11')]('/:id/actions',auth[_0x834f('0x9')](),controller[_0x834f('0x14')]);router[_0x834f('0x15')](_0x834f('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x834f('0x16')]('/:id',auth[_0x834f('0x9')](),controller[_0x834f('0x17')]);module[_0x834f('0x18')]=router;
\ No newline at end of file
+var _0xacc8=['index','isAuthenticated','getConditions','/:id/actions','getActions','post','create','/:id/conditions','addConditions','put','/:id','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./automation.controller','get'];(function(_0x119567,_0x9d685a){var _0x506dc1=function(_0x1f3771){while(--_0x1f3771){_0x119567['push'](_0x119567['shift']());}};_0x506dc1(++_0x9d685a);}(_0xacc8,0xc5));var _0x8acc=function(_0x502e15,_0x49ff8f){_0x502e15=_0x502e15-0x0;var _0xadd0c4=_0xacc8[_0x502e15];return _0xadd0c4;};'use strict';var multer=require(_0x8acc('0x0'));var util=require('util');var path=require(_0x8acc('0x1'));var timeout=require(_0x8acc('0x2'));var express=require(_0x8acc('0x3'));var router=express[_0x8acc('0x4')]();var fs_extra=require(_0x8acc('0x5'));var auth=require(_0x8acc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8acc('0x7'));var controller=require(_0x8acc('0x8'));router[_0x8acc('0x9')]('/',auth['isAuthenticated'](),controller[_0x8acc('0xa')]);router['get']('/:id',auth[_0x8acc('0xb')](),controller['show']);router[_0x8acc('0x9')]('/:id/conditions',auth[_0x8acc('0xb')](),controller[_0x8acc('0xc')]);router['get'](_0x8acc('0xd'),auth[_0x8acc('0xb')](),controller[_0x8acc('0xe')]);router[_0x8acc('0xf')]('/',auth[_0x8acc('0xb')](),controller[_0x8acc('0x10')]);router[_0x8acc('0xf')](_0x8acc('0x11'),auth[_0x8acc('0xb')](),controller[_0x8acc('0x12')]);router[_0x8acc('0xf')]('/:id/actions',auth[_0x8acc('0xb')](),controller['addActions']);router[_0x8acc('0x13')](_0x8acc('0x14'),auth['isAuthenticated'](),controller[_0x8acc('0x15')]);router['delete'](_0x8acc('0x14'),auth[_0x8acc('0xb')](),controller['destroy']);module[_0x8acc('0x16')]=router;
\ No newline at end of file
index 3db7cb9..37a99b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa000=['#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','ENUM','ivr','BOOLEAN','INTEGER','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Maximum\x20Number\x20Of\x20Words'];(function(_0x3136c2,_0x412386){var _0x2c9f50=function(_0x316d0e){while(--_0x316d0e){_0x3136c2['push'](_0x3136c2['shift']());}};_0x2c9f50(++_0x412386);}(_0xa000,0x18f));var _0x0a00=function(_0x133a03,_0x21e514){_0x133a03=_0x133a03-0x0;var _0x62f793=_0xa000[_0x133a03];return _0x62f793;};'use strict';var Sequelize=require('sequelize');module[_0x0a00('0x0')]={'name':{'type':Sequelize[_0x0a00('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x0a00('0x2')]('ivr'),'allowNull':![],'defaultValue':_0x0a00('0x3')},'description':{'type':Sequelize[_0x0a00('0x1')]},'active':{'type':Sequelize[_0x0a00('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x0a00('0x5')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x0a00('0x6')},'dialOriginateCallerIdName':{'type':Sequelize[_0x0a00('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0a00('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0a00('0x8')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x0a00('0x5')](0x5)[_0x0a00('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0a00('0x9')},'dialBusyMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x0a00('0x5')](0x5)[_0x0a00('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x0a00('0xa')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0a00('0x5')](0x5)[_0x0a00('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0a00('0xb')},'dialGlobalMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x0a00('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x0a00('0x1')],'defaultValue':_0x0a00('0xc')},'dialCheckDuplicateType':{'type':Sequelize[_0x0a00('0x2')](_0x0a00('0xd'),_0x0a00('0xe'),_0x0a00('0xf')),'defaultValue':_0x0a00('0xd')},'dialAMDActive':{'type':Sequelize[_0x0a00('0x4')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x0a00('0x5')](0x9)[_0x0a00('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0a00('0x10')},'dialAMDGreeting':{'type':Sequelize[_0x0a00('0x5')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0a00('0x11')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x0a00('0x5')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0a00('0x12')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x0a00('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0a00('0x13')},'dialAMDMinWordLength':{'type':Sequelize[_0x0a00('0x5')](0x9)[_0x0a00('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0a00('0x5')](0x9)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x0a00('0x14')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x0a00('0x5')](0x5)[_0x0a00('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x0a00('0x15')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x0a00('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0a00('0x16')},'dialOrderByScheduledAt':{'type':Sequelize[_0x0a00('0x2')](_0x0a00('0x17'),_0x0a00('0x18')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x0a00('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0a00('0x19')},'dialCutDigit':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0a00('0x1a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x0a00('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0a00('0x1b')},'dialDropMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0a00('0x1c')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0a00('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0a00('0x1d')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0a00('0x1e')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0a00('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0a00('0x1f')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0a00('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0a00('0x20')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0a00('0x5')](0x3)[_0x0a00('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0a00('0x21')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x0a00('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0a00('0x22')}};
\ No newline at end of file
+var _0xd815=['#AMD\x20Maximum\x20Word\x20Length','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'];(function(_0x7902d0,_0x378152){var _0x2ab4ac=function(_0x1837ee){while(--_0x1837ee){_0x7902d0['push'](_0x7902d0['shift']());}};_0x2ab4ac(++_0x378152);}(_0xd815,0x109));var _0x5d81=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd815[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5d81('0x0'));module[_0x5d81('0x1')]={'name':{'type':Sequelize[_0x5d81('0x2')],'unique':_0x5d81('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x5d81('0x4')](_0x5d81('0x5')),'allowNull':![],'defaultValue':_0x5d81('0x5')},'description':{'type':Sequelize[_0x5d81('0x2')]},'active':{'type':Sequelize[_0x5d81('0x6')],'defaultValue':0x0,'comment':_0x5d81('0x7')},'limitCalls':{'type':Sequelize[_0x5d81('0x8')](0x4)[_0x5d81('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x5d81('0xa')},'dialOriginateCallerIdName':{'type':Sequelize[_0x5d81('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5d81('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0xb')},'dialCongestionMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0xc')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)[_0x5d81('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0xd')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x5d81('0xf')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0x10')},'dialGlobalMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5d81('0x11')},'dialTimezone':{'type':Sequelize[_0x5d81('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5d81('0x2')],'defaultValue':_0x5d81('0x12')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x5d81('0x13'),'never',_0x5d81('0x14')),'defaultValue':_0x5d81('0x13')},'dialAMDActive':{'type':Sequelize[_0x5d81('0x6')],'defaultValue':0x0,'comment':_0x5d81('0x15')},'dialAMDInitialSilence':{'type':Sequelize[_0x5d81('0x8')](0x9)[_0x5d81('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5d81('0x16')},'dialAMDGreeting':{'type':Sequelize[_0x5d81('0x8')](0x9)[_0x5d81('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5d81('0x17')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x5d81('0x8')](0x9)[_0x5d81('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5d81('0x18')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5d81('0x8')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5d81('0x19')},'dialAMDMinWordLength':{'type':Sequelize[_0x5d81('0x8')](0x9)[_0x5d81('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x5d81('0x1a')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x5d81('0x8')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5d81('0x1b')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5d81('0x1c')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5d81('0x8')](0x9)[_0x5d81('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5d81('0x1d')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5d81('0x4')](_0x5d81('0x1e'),'ASC'),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5d81('0x1f')},'dialCutDigit':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5d81('0x20')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0x21')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5d81('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0x22')},'dialDropMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0x23')},'dialDropRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)[_0x5d81('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0x24')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0x25')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)[_0x5d81('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0x26')},'dialMachineRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)[_0x5d81('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0x27')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x5d81('0x8')](0x3)[_0x5d81('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5d81('0x28')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5d81('0x8')](0x5)[_0x5d81('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5d81('0x29')}};
\ No newline at end of file
index 9a2efdc..a4f947d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6c=['find','catch','create','body','user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','update','CmHopper','findAll','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','CampaignId','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','toString','from','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','cm_hopper','CampaignId\x20=\x20?','onlyIfOpen','CmListId','cm_contacts','push','all','removeLists','getBlackLists','addBlackLists','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','save','then','get','destroy','error','name','send','index','map','Campaign','fieldName','type','key','query','keys','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filters','merge','where','filter','options','includeAll','include','rows','show','params','rawAttributes','length'];(function(_0x4fd294,_0x181da0){var _0x10b569=function(_0x54b5f5){while(--_0x54b5f5){_0x4fd294['push'](_0x4fd294['shift']());}};_0x10b569(++_0x181da0);}(_0xbc6c,0xc0));var _0xcbc6=function(_0x4f6ba9,_0x496d1b){_0x4f6ba9=_0x4f6ba9-0x0;var _0x2d0924=_0xbc6c[_0x4f6ba9];return _0x2d0924;};'use strict';var emlformat=require(_0xcbc6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcbc6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcbc6('0x2'));var moment=require(_0xcbc6('0x3'));var BPromise=require(_0xcbc6('0x4'));var Mustache=require(_0xcbc6('0x5'));var util=require('util');var path=require(_0xcbc6('0x6'));var sox=require(_0xcbc6('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcbc6('0x8'));var _=require(_0xcbc6('0x9'));var squel=require(_0xcbc6('0xa'));var crypto=require(_0xcbc6('0xb'));var jsforce=require(_0xcbc6('0xc'));var deskjs=require(_0xcbc6('0xd'));var toCsv=require(_0xcbc6('0xe'));var querystring=require('querystring');var Papa=require(_0xcbc6('0xf'));var Redis=require(_0xcbc6('0x10'));var authService=require(_0xcbc6('0x11'));var qs=require(_0xcbc6('0x12'));var as=require(_0xcbc6('0x13'));var hardwareService=require(_0xcbc6('0x14'));var logger=require('../../config/logger')(_0xcbc6('0x15'));var utils=require(_0xcbc6('0x16'));var config=require(_0xcbc6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xcbc6('0x18'))['db'];function respondWithStatusCode(_0x303e63,_0x3d1514){_0x3d1514=_0x3d1514||0xcc;return function(_0x2ab33a){if(_0x2ab33a){return _0x303e63[_0xcbc6('0x19')](_0x3d1514);}return _0x303e63[_0xcbc6('0x1a')](_0x3d1514)[_0xcbc6('0x1b')]();};}function respondWithResult(_0x2bfdd9,_0x4b3277){_0x4b3277=_0x4b3277||0xc8;return function(_0x2de686){if(_0x2de686){return _0x2bfdd9[_0xcbc6('0x1a')](_0x4b3277)[_0xcbc6('0x1c')](_0x2de686);}};}function respondWithFilteredResult(_0x3182f8,_0x1d3273){return function(_0x4c63bd){if(_0x4c63bd){var _0xec1d67=typeof _0x1d3273[_0xcbc6('0x1d')]===_0xcbc6('0x1e')&&typeof _0x1d3273[_0xcbc6('0x1f')]==='undefined';var _0x3690fa=_0x4c63bd[_0xcbc6('0x20')];var _0x18e69a=_0xec1d67?0x0:_0x1d3273[_0xcbc6('0x1d')];var _0xf64c12=_0xec1d67?_0x4c63bd['count']:_0x1d3273[_0xcbc6('0x1d')]+_0x1d3273[_0xcbc6('0x1f')];var _0x4419f5;if(_0xf64c12>=_0x3690fa){_0xf64c12=_0x3690fa;_0x4419f5=0xc8;}else{_0x4419f5=0xce;}_0x3182f8['status'](_0x4419f5);return _0x3182f8[_0xcbc6('0x21')]('Content-Range',_0x18e69a+'-'+_0xf64c12+'/'+_0x3690fa)[_0xcbc6('0x1c')](_0x4c63bd);}return null;};}function patchUpdates(_0x443195){return function(_0x3e6a3f){try{jsonpatch['apply'](_0x3e6a3f,_0x443195,!![]);}catch(_0x487c02){return BPromise['reject'](_0x487c02);}return _0x3e6a3f[_0xcbc6('0x22')]();};}function saveUpdates(_0x40c1f6,_0x52287f){return function(_0x52bd7e){if(_0x52bd7e){return _0x52bd7e['update'](_0x40c1f6)[_0xcbc6('0x23')](function(_0x523c65){return _0x523c65;});}return null;};}function removeEntity(_0x3ab4c9,_0x14edc1){return function(_0x394858){if(_0x394858){return _0x394858['destroy']()[_0xcbc6('0x23')](function(){var _0x37e1c4=_0x394858[_0xcbc6('0x24')]({'plain':!![]});var _0x2b6010='IvrCampaigns';return db['UserProfileResource'][_0xcbc6('0x25')]({'where':{'type':_0x2b6010,'resourceId':_0x37e1c4['id']}})[_0xcbc6('0x23')](function(){return _0x394858;});})['then'](function(){_0x3ab4c9[_0xcbc6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22e831,_0x57fff8){return function(_0x17d960){if(!_0x17d960){_0x22e831[_0xcbc6('0x19')](0x194);}return _0x17d960;};}function handleError(_0x4b2560,_0x13b991){_0x13b991=_0x13b991||0x1f4;return function(_0x2c5bfd){logger[_0xcbc6('0x26')](_0x2c5bfd['stack']);if(_0x2c5bfd['name']){delete _0x2c5bfd[_0xcbc6('0x27')];}_0x4b2560[_0xcbc6('0x1a')](_0x13b991)[_0xcbc6('0x28')](_0x2c5bfd);};}exports[_0xcbc6('0x29')]=function(_0x3c816c,_0x4051c2){var _0x47b990={},_0x2a8eac={},_0x13167c={'count':0x0,'rows':[]};var _0x46d694=_[_0xcbc6('0x2a')](db[_0xcbc6('0x2b')]['rawAttributes'],function(_0x5caed5){return{'name':_0x5caed5[_0xcbc6('0x2c')],'type':_0x5caed5[_0xcbc6('0x2d')][_0xcbc6('0x2e')]};});_0x2a8eac['model']=_[_0xcbc6('0x2a')](_0x46d694,'name');_0x2a8eac[_0xcbc6('0x2f')]=_[_0xcbc6('0x30')](_0x3c816c[_0xcbc6('0x2f')]);_0x2a8eac['filters']=_['intersection'](_0x2a8eac[_0xcbc6('0x31')],_0x2a8eac['query']);_0x47b990[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x2a8eac[_0xcbc6('0x31')],qs[_0xcbc6('0x34')](_0x3c816c['query'][_0xcbc6('0x34')]));_0x47b990[_0xcbc6('0x32')]=_0x47b990['attributes']['length']?_0x47b990[_0xcbc6('0x32')]:_0x2a8eac[_0xcbc6('0x31')];if(!_0x3c816c[_0xcbc6('0x2f')][_0xcbc6('0x35')](_0xcbc6('0x36'))){_0x47b990['limit']=qs['limit'](_0x3c816c['query'][_0xcbc6('0x1f')]);_0x47b990[_0xcbc6('0x1d')]=qs['offset'](_0x3c816c[_0xcbc6('0x2f')][_0xcbc6('0x1d')]);}_0x47b990[_0xcbc6('0x37')]=qs['sort'](_0x3c816c[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0x47b990['where']=qs['filters'](_[_0xcbc6('0x39')](_0x3c816c[_0xcbc6('0x2f')],_0x2a8eac[_0xcbc6('0x3a')]),_0x46d694);if(_0x3c816c[_0xcbc6('0x2f')]['filter']){_0x47b990['where']=_[_0xcbc6('0x3b')](_0x47b990[_0xcbc6('0x3c')],{'$or':_[_0xcbc6('0x2a')](_0x46d694,function(_0x5c74fe){if(_0x5c74fe[_0xcbc6('0x2d')]!=='VIRTUAL'){var _0x3ff701={};_0x3ff701[_0x5c74fe['name']]={'$like':'%'+_0x3c816c[_0xcbc6('0x2f')][_0xcbc6('0x3d')]+'%'};return _0x3ff701;}})});}_0x47b990=_['merge']({},_0x47b990,_0x3c816c[_0xcbc6('0x3e')]);var _0x1573e5={'where':_0x47b990[_0xcbc6('0x3c')]};return db[_0xcbc6('0x2b')][_0xcbc6('0x20')](_0x1573e5)[_0xcbc6('0x23')](function(_0x3e0241){_0x13167c[_0xcbc6('0x20')]=_0x3e0241;if(_0x3c816c[_0xcbc6('0x2f')][_0xcbc6('0x3f')]){_0x47b990[_0xcbc6('0x40')]=[{'all':!![]}];}return db[_0xcbc6('0x2b')]['findAll'](_0x47b990);})[_0xcbc6('0x23')](function(_0x20ddd0){_0x13167c[_0xcbc6('0x41')]=_0x20ddd0;return _0x13167c;})[_0xcbc6('0x23')](respondWithFilteredResult(_0x4051c2,_0x47b990))['catch'](handleError(_0x4051c2,null));};exports[_0xcbc6('0x42')]=function(_0xcca627,_0x394066){var _0x9bc21b={'raw':![],'where':{'id':_0xcca627[_0xcbc6('0x43')]['id']}},_0x598b09={};_0x598b09[_0xcbc6('0x31')]=_[_0xcbc6('0x30')](db[_0xcbc6('0x2b')][_0xcbc6('0x44')]);_0x598b09[_0xcbc6('0x2f')]=_[_0xcbc6('0x30')](_0xcca627[_0xcbc6('0x2f')]);_0x598b09[_0xcbc6('0x3a')]=_[_0xcbc6('0x33')](_0x598b09['model'],_0x598b09[_0xcbc6('0x2f')]);_0x9bc21b[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x598b09[_0xcbc6('0x31')],qs[_0xcbc6('0x34')](_0xcca627[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0x9bc21b[_0xcbc6('0x32')]=_0x9bc21b[_0xcbc6('0x32')][_0xcbc6('0x45')]?_0x9bc21b['attributes']:_0x598b09[_0xcbc6('0x31')];if(_0xcca627[_0xcbc6('0x2f')][_0xcbc6('0x3f')]){_0x9bc21b['include']=[{'all':!![]}];}_0x9bc21b=_['merge']({},_0x9bc21b,_0xcca627[_0xcbc6('0x3e')]);return db[_0xcbc6('0x2b')][_0xcbc6('0x46')](_0x9bc21b)['then'](handleEntityNotFound(_0x394066,null))[_0xcbc6('0x23')](respondWithResult(_0x394066,null))[_0xcbc6('0x47')](handleError(_0x394066,null));};exports[_0xcbc6('0x48')]=function(_0x1d5ea1,_0x9d48b1){return db[_0xcbc6('0x2b')][_0xcbc6('0x48')](_0x1d5ea1[_0xcbc6('0x49')],{})[_0xcbc6('0x23')](function(_0x8aad27){var _0x396082=_0x1d5ea1[_0xcbc6('0x4a')][_0xcbc6('0x24')]({'plain':!![]});if(!_0x396082)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x396082[_0xcbc6('0x4b')]===_0xcbc6('0x4a')){var _0x3178c0=_0x8aad27['get']({'plain':!![]});var _0x2df475='IvrCampaigns';return db[_0xcbc6('0x4c')]['find']({'where':{'name':_0x2df475,'userProfileId':_0x396082['userProfileId']},'raw':!![]})['then'](function(_0x11c840){if(_0x11c840&&_0x11c840[_0xcbc6('0x4d')]===0x0){return db[_0xcbc6('0x4e')]['create']({'name':_0x3178c0[_0xcbc6('0x27')],'resourceId':_0x3178c0['id'],'type':_0x11c840[_0xcbc6('0x27')],'sectionId':_0x11c840['id']},{})['then'](function(){return _0x8aad27;});}else{return _0x8aad27;}})['catch'](function(_0x4afa0b){logger[_0xcbc6('0x26')](_0xcbc6('0x4f'),_0x4afa0b);throw _0x4afa0b;});}return _0x8aad27;})[_0xcbc6('0x23')](respondWithResult(_0x9d48b1,0xc9))[_0xcbc6('0x47')](handleError(_0x9d48b1,null));};exports[_0xcbc6('0x50')]=function(_0x50c56f,_0x262df7){var _0x4ac534={'where':{'id':_0x50c56f[_0xcbc6('0x43')]['id']}},_0x263bd6={};_0x263bd6[_0xcbc6('0x31')]=_[_0xcbc6('0x30')](db[_0xcbc6('0x2b')][_0xcbc6('0x44')]);_0x4ac534[_0xcbc6('0x32')]=_['intersection'](_0x263bd6['model'],qs[_0xcbc6('0x34')](_0x50c56f[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0x4ac534[_0xcbc6('0x32')]=_0x4ac534[_0xcbc6('0x32')][_0xcbc6('0x45')]?_0x4ac534[_0xcbc6('0x32')]:_0x263bd6['model'];if(_0x50c56f[_0xcbc6('0x2f')][_0xcbc6('0x3f')]){_0x4ac534[_0xcbc6('0x40')]=[{'all':!![]}];}_0x4ac534=_['merge']({},_0x4ac534,_0x50c56f[_0xcbc6('0x3e')]);return db[_0xcbc6('0x2b')][_0xcbc6('0x46')](_0x4ac534)[_0xcbc6('0x23')](handleEntityNotFound(_0x262df7,null))[_0xcbc6('0x23')](function(_0x1f9bf4){if(_0x1f9bf4){var _0x532d72=_0x1f9bf4[_0xcbc6('0x24')]({'plain':!![]});_0x532d72=qs['omit'](_0x532d72,['id',_0xcbc6('0x51'),_0xcbc6('0x52')]);_0x50c56f['body']=_[_0xcbc6('0x53')](_0x50c56f['body'],['id',_0xcbc6('0x51'),'updatedAt']);return db['Campaign'][_0xcbc6('0x48')](_[_0xcbc6('0x3b')](_0x532d72,_0x50c56f[_0xcbc6('0x49')]),{'include':_0x50c56f[_0xcbc6('0x2f')]['includeAll']?[{'all':!![]}]:undefined})[_0xcbc6('0x23')](function(_0xb94562){var _0x42f4ca=_0x50c56f['user'][_0xcbc6('0x24')]({'plain':!![]});if(!_0x42f4ca)throw new Error(_0xcbc6('0x54'));if(_0x42f4ca['role']==='user'){var _0x49d081=_0xb94562['get']({'plain':!![]});var _0x1cecb0='IvrCampaigns';return db[_0xcbc6('0x4c')][_0xcbc6('0x46')]({'where':{'name':_0x1cecb0,'userProfileId':_0x42f4ca[_0xcbc6('0x55')]},'raw':!![]})[_0xcbc6('0x23')](function(_0x45f62e){if(_0x45f62e&&_0x45f62e[_0xcbc6('0x4d')]===0x0){return db[_0xcbc6('0x4e')][_0xcbc6('0x48')]({'name':_0x49d081[_0xcbc6('0x27')],'resourceId':_0x49d081['id'],'type':_0x45f62e[_0xcbc6('0x27')],'sectionId':_0x45f62e['id']},{})[_0xcbc6('0x23')](function(){return _0xb94562;});}else{return _0xb94562;}})[_0xcbc6('0x47')](function(_0x2327db){logger[_0xcbc6('0x26')](_0xcbc6('0x4f'),_0x2327db);throw _0x2327db;});}return _0xb94562;});}})[_0xcbc6('0x23')](respondWithResult(_0x262df7,0xc9))[_0xcbc6('0x47')](handleError(_0x262df7,null));};exports[_0xcbc6('0x56')]=function(_0x3773f7,_0x256f07){if(_0x3773f7[_0xcbc6('0x49')]['id']){delete _0x3773f7[_0xcbc6('0x49')]['id'];}return db[_0xcbc6('0x2b')]['find']({'where':{'id':_0x3773f7[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x256f07,null))[_0xcbc6('0x23')](saveUpdates(_0x3773f7[_0xcbc6('0x49')],null))[_0xcbc6('0x23')](respondWithResult(_0x256f07,null))[_0xcbc6('0x47')](handleError(_0x256f07,null));};exports[_0xcbc6('0x25')]=function(_0x3b42ac,_0x178d91){return db[_0xcbc6('0x2b')][_0xcbc6('0x46')]({'where':{'id':_0x3b42ac[_0xcbc6('0x43')]['id']}})['then'](handleEntityNotFound(_0x178d91,null))['then'](removeEntity(_0x178d91,null))['catch'](handleError(_0x178d91,null));};exports['getHoppers']=function(_0x3c164d,_0x4c19e8,_0xbdf258){var _0xd76552={'raw':!![],'where':{}};var _0x164b0b={};var _0x4c1545={'count':0x0,'rows':[]};return db[_0xcbc6('0x2b')]['findOne']({'where':{'id':_0x3c164d[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x4c19e8,null))[_0xcbc6('0x23')](function(_0x161a94){if(_0x161a94){_0x164b0b[_0xcbc6('0x31')]=_['keys'](db['CmHopper'][_0xcbc6('0x44')]);_0x164b0b[_0xcbc6('0x2f')]=_[_0xcbc6('0x30')](_0x3c164d['query']);_0x164b0b['filters']=_[_0xcbc6('0x33')](_0x164b0b['model'],_0x164b0b[_0xcbc6('0x2f')]);_0xd76552[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x164b0b['model'],qs['fields'](_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0xd76552['attributes']=_0xd76552[_0xcbc6('0x32')]['length']?_0xd76552[_0xcbc6('0x32')]:_0x164b0b[_0xcbc6('0x31')];if(!_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x35')]('nolimit')){_0xd76552[_0xcbc6('0x1f')]=qs[_0xcbc6('0x1f')](_0x3c164d[_0xcbc6('0x2f')]['limit']);_0xd76552[_0xcbc6('0x1d')]=qs[_0xcbc6('0x1d')](_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x1d')]);}_0xd76552['order']=qs[_0xcbc6('0x38')](_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0xd76552[_0xcbc6('0x3c')]=qs['filters'](_[_0xcbc6('0x39')](_0x3c164d[_0xcbc6('0x2f')],_0x164b0b[_0xcbc6('0x3a')]));_0xd76552[_0xcbc6('0x3c')]['CampaignId']=_0x161a94['id'];if(_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x3d')]){_0xd76552[_0xcbc6('0x3c')]=_['merge'](_0xd76552['where'],{'$or':_['map'](_0xd76552['attributes'],function(_0x470075){var _0x32dfac={};_0x32dfac[_0x470075]={'$like':'%'+_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x3d')]+'%'};return _0x32dfac;})});}_0xd76552=_[_0xcbc6('0x3b')]({},_0xd76552,_0x3c164d[_0xcbc6('0x3e')]);return db[_0xcbc6('0x57')][_0xcbc6('0x20')]({'where':_0xd76552['where']})[_0xcbc6('0x23')](function(_0x27d245){_0x4c1545[_0xcbc6('0x20')]=_0x27d245;if(_0x3c164d[_0xcbc6('0x2f')][_0xcbc6('0x3f')]){_0xd76552[_0xcbc6('0x40')]=[{'all':!![]}];}return db[_0xcbc6('0x57')][_0xcbc6('0x58')](_0xd76552);})[_0xcbc6('0x23')](function(_0x17bad7){_0x4c1545[_0xcbc6('0x41')]=_0x17bad7;return _0x4c1545;});}})[_0xcbc6('0x23')](respondWithFilteredResult(_0x4c19e8,_0xd76552))[_0xcbc6('0x47')](handleError(_0x4c19e8,null));};exports[_0xcbc6('0x59')]=function(_0x2bf71d,_0x314149,_0x5936b4){var _0x27cbdd={'raw':!![],'where':{}};var _0x23ab27={};var _0x4a6816={'count':0x0,'rows':[]};return db[_0xcbc6('0x2b')][_0xcbc6('0x5a')]({'where':{'id':_0x2bf71d[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x314149,null))[_0xcbc6('0x23')](function(_0x4244cd){if(_0x4244cd){_0x23ab27[_0xcbc6('0x31')]=_['keys'](db[_0xcbc6('0x5b')][_0xcbc6('0x44')]);_0x23ab27[_0xcbc6('0x2f')]=_[_0xcbc6('0x30')](_0x2bf71d[_0xcbc6('0x2f')]);_0x23ab27[_0xcbc6('0x3a')]=_[_0xcbc6('0x33')](_0x23ab27[_0xcbc6('0x31')],_0x23ab27[_0xcbc6('0x2f')]);_0x27cbdd[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x23ab27[_0xcbc6('0x31')],qs[_0xcbc6('0x34')](_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0x27cbdd[_0xcbc6('0x32')]=_0x27cbdd[_0xcbc6('0x32')][_0xcbc6('0x45')]?_0x27cbdd['attributes']:_0x23ab27[_0xcbc6('0x31')];if(!_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x35')](_0xcbc6('0x36'))){_0x27cbdd[_0xcbc6('0x1f')]=qs['limit'](_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x1f')]);_0x27cbdd[_0xcbc6('0x1d')]=qs[_0xcbc6('0x1d')](_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x1d')]);}_0x27cbdd[_0xcbc6('0x37')]=qs[_0xcbc6('0x38')](_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0x27cbdd['where']=qs['filters'](_['pick'](_0x2bf71d[_0xcbc6('0x2f')],_0x23ab27[_0xcbc6('0x3a')]));_0x27cbdd[_0xcbc6('0x3c')]['CampaignId']=_0x4244cd['id'];if(_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x3d')]){_0x27cbdd[_0xcbc6('0x3c')]=_[_0xcbc6('0x3b')](_0x27cbdd[_0xcbc6('0x3c')],{'$or':_[_0xcbc6('0x2a')](_0x27cbdd[_0xcbc6('0x32')],function(_0x495ed7){var _0x42ed2e={};_0x42ed2e[_0x495ed7]={'$like':'%'+_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x3d')]+'%'};return _0x42ed2e;})});}_0x27cbdd=_[_0xcbc6('0x3b')]({},_0x27cbdd,_0x2bf71d[_0xcbc6('0x3e')]);return db[_0xcbc6('0x5b')]['count']({'where':_0x27cbdd[_0xcbc6('0x3c')]})[_0xcbc6('0x23')](function(_0x20c524){_0x4a6816[_0xcbc6('0x20')]=_0x20c524;if(_0x2bf71d[_0xcbc6('0x2f')][_0xcbc6('0x3f')]){_0x27cbdd['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0xcbc6('0x58')](_0x27cbdd);})[_0xcbc6('0x23')](function(_0x3e8a9b){_0x4a6816[_0xcbc6('0x41')]=_0x3e8a9b;return _0x4a6816;});}})[_0xcbc6('0x23')](respondWithFilteredResult(_0x314149,_0x27cbdd))[_0xcbc6('0x47')](handleError(_0x314149,null));};exports[_0xcbc6('0x5c')]=function(_0x6f00cf,_0x59c213,_0xb3d370){var _0x23e91a={'raw':!![],'where':{}};var _0x5b4bd1={};var _0x2cf6ac={'count':0x0,'rows':[]};return db[_0xcbc6('0x2b')]['findOne']({'where':{'id':_0x6f00cf[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x59c213,null))[_0xcbc6('0x23')](function(_0x5307ff){if(_0x5307ff){_0x5b4bd1[_0xcbc6('0x31')]=_[_0xcbc6('0x30')](db[_0xcbc6('0x5d')][_0xcbc6('0x44')]);_0x5b4bd1[_0xcbc6('0x2f')]=_[_0xcbc6('0x30')](_0x6f00cf[_0xcbc6('0x2f')]);_0x5b4bd1[_0xcbc6('0x3a')]=_[_0xcbc6('0x33')](_0x5b4bd1['model'],_0x5b4bd1[_0xcbc6('0x2f')]);_0x23e91a[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x5b4bd1[_0xcbc6('0x31')],qs[_0xcbc6('0x34')](_0x6f00cf[_0xcbc6('0x2f')]['fields']));_0x23e91a[_0xcbc6('0x32')]=_0x23e91a[_0xcbc6('0x32')][_0xcbc6('0x45')]?_0x23e91a['attributes']:_0x5b4bd1[_0xcbc6('0x31')];if(!_0x6f00cf[_0xcbc6('0x2f')][_0xcbc6('0x35')](_0xcbc6('0x36'))){_0x23e91a['limit']=qs[_0xcbc6('0x1f')](_0x6f00cf['query'][_0xcbc6('0x1f')]);_0x23e91a[_0xcbc6('0x1d')]=qs[_0xcbc6('0x1d')](_0x6f00cf[_0xcbc6('0x2f')][_0xcbc6('0x1d')]);}_0x23e91a[_0xcbc6('0x37')]=qs[_0xcbc6('0x38')](_0x6f00cf[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0x23e91a['where']=qs[_0xcbc6('0x3a')](_['pick'](_0x6f00cf[_0xcbc6('0x2f')],_0x5b4bd1[_0xcbc6('0x3a')]));_0x23e91a[_0xcbc6('0x3c')][_0xcbc6('0x5e')]=_0x5307ff['id'];if(_0x6f00cf[_0xcbc6('0x2f')][_0xcbc6('0x3d')]){_0x23e91a[_0xcbc6('0x3c')]=_[_0xcbc6('0x3b')](_0x23e91a['where'],{'$or':_['map'](_0x23e91a[_0xcbc6('0x32')],function(_0x339f1d){var _0x3187f3={};_0x3187f3[_0x339f1d]={'$like':'%'+_0x6f00cf[_0xcbc6('0x2f')][_0xcbc6('0x3d')]+'%'};return _0x3187f3;})});}_0x23e91a=_[_0xcbc6('0x3b')]({},_0x23e91a,_0x6f00cf[_0xcbc6('0x3e')]);return db[_0xcbc6('0x5d')][_0xcbc6('0x20')]({'where':_0x23e91a[_0xcbc6('0x3c')]})[_0xcbc6('0x23')](function(_0x4598c9){_0x2cf6ac[_0xcbc6('0x20')]=_0x4598c9;if(_0x6f00cf[_0xcbc6('0x2f')]['includeAll']){_0x23e91a[_0xcbc6('0x40')]=[{'all':!![]}];}return db[_0xcbc6('0x5d')][_0xcbc6('0x58')](_0x23e91a);})['then'](function(_0x96d404){_0x2cf6ac[_0xcbc6('0x41')]=_0x96d404;return _0x2cf6ac;});}})[_0xcbc6('0x23')](respondWithFilteredResult(_0x59c213,_0x23e91a))[_0xcbc6('0x47')](handleError(_0x59c213,null));};exports['getHopperBlacks']=function(_0x44eaf5,_0x37dfa4,_0x18a8b5){var _0x29c651={'raw':!![],'where':{}};var _0x53e84c={};var _0x3f2fa0={'count':0x0,'rows':[]};return db[_0xcbc6('0x2b')][_0xcbc6('0x5a')]({'where':{'id':_0x44eaf5[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x37dfa4,null))[_0xcbc6('0x23')](function(_0x36083d){if(_0x36083d){_0x53e84c['model']=_[_0xcbc6('0x30')](db[_0xcbc6('0x5f')][_0xcbc6('0x44')]);_0x53e84c['query']=_[_0xcbc6('0x30')](_0x44eaf5['query']);_0x53e84c[_0xcbc6('0x3a')]=_[_0xcbc6('0x33')](_0x53e84c[_0xcbc6('0x31')],_0x53e84c[_0xcbc6('0x2f')]);_0x29c651[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x53e84c[_0xcbc6('0x31')],qs['fields'](_0x44eaf5[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0x29c651['attributes']=_0x29c651[_0xcbc6('0x32')][_0xcbc6('0x45')]?_0x29c651['attributes']:_0x53e84c[_0xcbc6('0x31')];if(!_0x44eaf5[_0xcbc6('0x2f')]['hasOwnProperty'](_0xcbc6('0x36'))){_0x29c651[_0xcbc6('0x1f')]=qs[_0xcbc6('0x1f')](_0x44eaf5[_0xcbc6('0x2f')][_0xcbc6('0x1f')]);_0x29c651['offset']=qs['offset'](_0x44eaf5['query'][_0xcbc6('0x1d')]);}_0x29c651[_0xcbc6('0x37')]=qs[_0xcbc6('0x38')](_0x44eaf5[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0x29c651[_0xcbc6('0x3c')]=qs[_0xcbc6('0x3a')](_[_0xcbc6('0x39')](_0x44eaf5['query'],_0x53e84c['filters']));_0x29c651['where'][_0xcbc6('0x5e')]=_0x36083d['id'];if(_0x44eaf5[_0xcbc6('0x2f')][_0xcbc6('0x3d')]){_0x29c651[_0xcbc6('0x3c')]=_[_0xcbc6('0x3b')](_0x29c651[_0xcbc6('0x3c')],{'$or':_[_0xcbc6('0x2a')](_0x29c651[_0xcbc6('0x32')],function(_0x53818f){var _0x2fe819={};_0x2fe819[_0x53818f]={'$like':'%'+_0x44eaf5[_0xcbc6('0x2f')][_0xcbc6('0x3d')]+'%'};return _0x2fe819;})});}_0x29c651=_[_0xcbc6('0x3b')]({},_0x29c651,_0x44eaf5[_0xcbc6('0x3e')]);return db[_0xcbc6('0x5f')][_0xcbc6('0x20')]({'where':_0x29c651[_0xcbc6('0x3c')]})[_0xcbc6('0x23')](function(_0x47462b){_0x3f2fa0[_0xcbc6('0x20')]=_0x47462b;if(_0x44eaf5['query'][_0xcbc6('0x3f')]){_0x29c651[_0xcbc6('0x40')]=[{'all':!![]}];}return db[_0xcbc6('0x5f')][_0xcbc6('0x58')](_0x29c651);})[_0xcbc6('0x23')](function(_0x119a4a){_0x3f2fa0[_0xcbc6('0x41')]=_0x119a4a;return _0x3f2fa0;});}})[_0xcbc6('0x23')](respondWithFilteredResult(_0x37dfa4,_0x29c651))['catch'](handleError(_0x37dfa4,null));};exports[_0xcbc6('0x60')]=function(_0x586c28,_0x4dfa80,_0x508a3d){var _0x2e115d={};var _0x26e993={};var _0x313a16;var _0x3e9066;return db[_0xcbc6('0x2b')][_0xcbc6('0x5a')]({'where':{'id':_0x586c28[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x4dfa80,null))[_0xcbc6('0x23')](function(_0x45bf96){if(_0x45bf96){_0x313a16=_0x45bf96;_0x26e993['model']=_[_0xcbc6('0x30')](db[_0xcbc6('0x61')][_0xcbc6('0x44')]);_0x26e993[_0xcbc6('0x2f')]=_[_0xcbc6('0x30')](_0x586c28['query']);_0x26e993[_0xcbc6('0x3a')]=_[_0xcbc6('0x33')](_0x26e993[_0xcbc6('0x31')],_0x26e993[_0xcbc6('0x2f')]);_0x2e115d[_0xcbc6('0x32')]=_[_0xcbc6('0x33')](_0x26e993[_0xcbc6('0x31')],qs[_0xcbc6('0x34')](_0x586c28[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0x2e115d[_0xcbc6('0x32')]=_0x2e115d[_0xcbc6('0x32')][_0xcbc6('0x45')]?_0x2e115d[_0xcbc6('0x32')]:_0x26e993[_0xcbc6('0x31')];_0x2e115d[_0xcbc6('0x37')]=qs[_0xcbc6('0x38')](_0x586c28[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0x2e115d['where']=qs[_0xcbc6('0x3a')](_[_0xcbc6('0x39')](_0x586c28[_0xcbc6('0x2f')],_0x26e993[_0xcbc6('0x3a')]));if(_0x586c28[_0xcbc6('0x2f')][_0xcbc6('0x3d')]){_0x2e115d['where']=_[_0xcbc6('0x3b')](_0x2e115d['where'],{'$or':_[_0xcbc6('0x2a')](_0x2e115d[_0xcbc6('0x32')],function(_0x559536){var _0x121b70={};_0x121b70[_0x559536]={'$like':'%'+_0x586c28['query']['filter']+'%'};return _0x121b70;})});}_0x2e115d=_[_0xcbc6('0x3b')]({},_0x2e115d,_0x586c28[_0xcbc6('0x3e')]);return _0x313a16[_0xcbc6('0x60')](_0x2e115d);}})['then'](function(_0x1c1739){if(_0x1c1739){_0x3e9066=_0x1c1739[_0xcbc6('0x45')];if(!_0x586c28[_0xcbc6('0x2f')][_0xcbc6('0x35')](_0xcbc6('0x36'))){_0x2e115d['limit']=qs[_0xcbc6('0x1f')](_0x586c28[_0xcbc6('0x2f')][_0xcbc6('0x1f')]);_0x2e115d[_0xcbc6('0x1d')]=qs[_0xcbc6('0x1d')](_0x586c28['query']['offset']);}return _0x313a16[_0xcbc6('0x60')](_0x2e115d);}})['then'](function(_0x5baf00){if(_0x5baf00){return _0x5baf00?{'count':_0x3e9066,'rows':_0x5baf00}:null;}})[_0xcbc6('0x23')](respondWithResult(_0x4dfa80,null))[_0xcbc6('0x47')](handleError(_0x4dfa80,null));};exports[_0xcbc6('0x62')]=function(_0x39f6bf,_0x564167,_0x3ede35){var _0x358db3,_0x493296;return db[_0xcbc6('0x2b')]['find']({'where':{'id':_0x39f6bf[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x564167,null))[_0xcbc6('0x23')](function(_0x30586a){if(_0x30586a){_0x493296=_0x30586a;return _0x30586a['addLists'](_0x39f6bf[_0xcbc6('0x49')][_0xcbc6('0x63')],_[_0xcbc6('0x53')](_0x39f6bf[_0xcbc6('0x49')],[_0xcbc6('0x63'),'id'])||{});}return null;})[_0xcbc6('0x64')](function(_0x1faf6d){var _0x5ee37b;_0x358db3=_0x1faf6d||[];var _0xe7e744=[];if(_0x1faf6d){for(var _0x212f4f=0x0;_0x212f4f<_0x1faf6d[_0xcbc6('0x45')];_0x212f4f+=0x1){var _0x3251b8=_0x1faf6d[_0x212f4f][_0xcbc6('0x24')]({'plain':!![]});_0x493296[_0xcbc6('0x65')]=_0x39f6bf[_0xcbc6('0x49')]['dialCheckDuplicateType']?_0x39f6bf['body']['dialCheckDuplicateType']:_0x493296[_0xcbc6('0x65')];switch(_0x493296['dialCheckDuplicateType']){case _0xcbc6('0x66'):_0x5ee37b=squel[_0xcbc6('0x67')]()[_0xcbc6('0x68')]('cm_hopper')[_0xcbc6('0x69')]([_0xcbc6('0x6a'),_0xcbc6('0x6b'),_0xcbc6('0x6c'),_0xcbc6('0x6d'),_0xcbc6('0x5e'),_0xcbc6('0x51'),_0xcbc6('0x52')],squel[_0xcbc6('0x6e')]()['field']('phone',_0xcbc6('0x6a'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),_0xcbc6('0x6b'))[_0xcbc6('0x6f')]('id',_0xcbc6('0x6c'))[_0xcbc6('0x6f')](_0x3251b8['CmListId']['toString'](),'ListId')[_0xcbc6('0x6f')](_0x39f6bf[_0xcbc6('0x43')]['id'][_0xcbc6('0x71')](),_0xcbc6('0x5e'))['field'](_0xcbc6('0x70'),_0xcbc6('0x51'))[_0xcbc6('0x6f')]('NOW()','updatedAt')[_0xcbc6('0x72')]('cm_contacts')['where'](_0xcbc6('0x73'))[_0xcbc6('0x3c')](_0xcbc6('0x74'),_0x3251b8['CmListId'][_0xcbc6('0x71')]())[_0xcbc6('0x3c')](_0xcbc6('0x75'))[_0xcbc6('0x3c')](_0xcbc6('0x76'),squel[_0xcbc6('0x6e')]()[_0xcbc6('0x6f')](_0xcbc6('0x77'))[_0xcbc6('0x72')]('cm_hopper_final')[_0xcbc6('0x3c')]('CampaignId\x20=\x20?',_0x39f6bf[_0xcbc6('0x43')]['id']['toString']()))['where'](_0xcbc6('0x76'),squel['select']()['field'](_0xcbc6('0x78'))['from'](_0xcbc6('0x79'))[_0xcbc6('0x3c')](_0xcbc6('0x7a'),_0x39f6bf['params']['id'][_0xcbc6('0x71')]())))[_0xcbc6('0x71')]();break;case _0xcbc6('0x7b'):_0x5ee37b=squel[_0xcbc6('0x67')]()[_0xcbc6('0x68')](_0xcbc6('0x79'))['fromQuery'](['phone',_0xcbc6('0x6b'),'ContactId',_0xcbc6('0x6d'),'CampaignId',_0xcbc6('0x51'),_0xcbc6('0x52')],squel[_0xcbc6('0x6e')]()['field'](_0xcbc6('0x6a'),_0xcbc6('0x6a'))[_0xcbc6('0x6f')]('NOW()',_0xcbc6('0x6b'))['field']('id',_0xcbc6('0x6c'))[_0xcbc6('0x6f')](_0x3251b8[_0xcbc6('0x7c')][_0xcbc6('0x71')](),_0xcbc6('0x6d'))[_0xcbc6('0x6f')](_0x39f6bf[_0xcbc6('0x43')]['id'][_0xcbc6('0x71')](),_0xcbc6('0x5e'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),_0xcbc6('0x51'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),_0xcbc6('0x52'))['from'](_0xcbc6('0x7d'))[_0xcbc6('0x3c')]('deletedAt\x20IS\x20NULL')[_0xcbc6('0x3c')]('ListId\x20=\x20?',_0x3251b8[_0xcbc6('0x7c')]['toString']())[_0xcbc6('0x3c')](_0xcbc6('0x75'))[_0xcbc6('0x3c')](_0xcbc6('0x76'),squel['select']()['field']('COALESCE(phone,\x27\x27)')[_0xcbc6('0x72')](_0xcbc6('0x79'))[_0xcbc6('0x3c')](_0xcbc6('0x7a'),_0x39f6bf[_0xcbc6('0x43')]['id'][_0xcbc6('0x71')]())))['toString']();break;default:_0x5ee37b=squel[_0xcbc6('0x67')]()[_0xcbc6('0x68')](_0xcbc6('0x79'))[_0xcbc6('0x69')]([_0xcbc6('0x6a'),_0xcbc6('0x6b'),'ContactId','ListId',_0xcbc6('0x5e'),'createdAt',_0xcbc6('0x52')],squel['select']()[_0xcbc6('0x6f')](_0xcbc6('0x6a'),_0xcbc6('0x6a'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),_0xcbc6('0x6b'))[_0xcbc6('0x6f')]('id',_0xcbc6('0x6c'))['field'](_0x3251b8[_0xcbc6('0x7c')]['toString'](),_0xcbc6('0x6d'))['field'](_0x39f6bf[_0xcbc6('0x43')]['id'][_0xcbc6('0x71')](),_0xcbc6('0x5e'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),_0xcbc6('0x51'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),'updatedAt')[_0xcbc6('0x72')](_0xcbc6('0x7d'))[_0xcbc6('0x3c')](_0xcbc6('0x73'))[_0xcbc6('0x3c')]('ListId\x20=\x20?',_0x3251b8[_0xcbc6('0x7c')][_0xcbc6('0x71')]())[_0xcbc6('0x3c')](_0xcbc6('0x75')))[_0xcbc6('0x71')]();}_0xe7e744[_0xcbc6('0x7e')](db['sequelize'][_0xcbc6('0x2f')](_0x5ee37b));}return BPromise[_0xcbc6('0x7f')](_0xe7e744);}})[_0xcbc6('0x23')](function(){return _0x358db3;})[_0xcbc6('0x23')](respondWithResult(_0x564167,null))[_0xcbc6('0x47')](handleError(_0x564167,null));};exports['removeLists']=function(_0x20e1af,_0x2ef9e5,_0x1d5a41){return db['Campaign'][_0xcbc6('0x46')]({'where':{'id':_0x20e1af[_0xcbc6('0x43')]['id']}})[_0xcbc6('0x23')](handleEntityNotFound(_0x2ef9e5,null))[_0xcbc6('0x23')](function(_0x41d1eb){if(_0x41d1eb){return _0x41d1eb[_0xcbc6('0x80')](_0x20e1af['query'][_0xcbc6('0x63')]);}})['then'](function(_0xce854){if(_0xce854){return db[_0xcbc6('0x57')][_0xcbc6('0x25')]({'where':{'ListId':_0x20e1af[_0xcbc6('0x2f')][_0xcbc6('0x63')],'CampaignId':_0x20e1af['params']['id']}})[_0xcbc6('0x23')](function(){return _0xce854;});}})['then'](respondWithStatusCode(_0x2ef9e5,null))['catch'](handleError(_0x2ef9e5,null));};exports[_0xcbc6('0x81')]=function(_0x203536,_0x54f09b,_0x33bf17){var _0x5163bd={};var _0x131c00={};var _0xc67142;var _0x3c728e;return db[_0xcbc6('0x2b')]['findOne']({'where':{'id':_0x203536[_0xcbc6('0x43')]['id']}})['then'](handleEntityNotFound(_0x54f09b,null))[_0xcbc6('0x23')](function(_0x1073a6){if(_0x1073a6){_0xc67142=_0x1073a6;_0x131c00[_0xcbc6('0x31')]=_[_0xcbc6('0x30')](db['CmList']['rawAttributes']);_0x131c00[_0xcbc6('0x2f')]=_['keys'](_0x203536[_0xcbc6('0x2f')]);_0x131c00[_0xcbc6('0x3a')]=_[_0xcbc6('0x33')](_0x131c00[_0xcbc6('0x31')],_0x131c00[_0xcbc6('0x2f')]);_0x5163bd[_0xcbc6('0x32')]=_['intersection'](_0x131c00[_0xcbc6('0x31')],qs[_0xcbc6('0x34')](_0x203536[_0xcbc6('0x2f')][_0xcbc6('0x34')]));_0x5163bd['attributes']=_0x5163bd['attributes'][_0xcbc6('0x45')]?_0x5163bd['attributes']:_0x131c00[_0xcbc6('0x31')];_0x5163bd[_0xcbc6('0x37')]=qs[_0xcbc6('0x38')](_0x203536[_0xcbc6('0x2f')][_0xcbc6('0x38')]);_0x5163bd[_0xcbc6('0x3c')]=qs[_0xcbc6('0x3a')](_[_0xcbc6('0x39')](_0x203536['query'],_0x131c00[_0xcbc6('0x3a')]));if(_0x203536[_0xcbc6('0x2f')][_0xcbc6('0x3d')]){_0x5163bd[_0xcbc6('0x3c')]=_[_0xcbc6('0x3b')](_0x5163bd[_0xcbc6('0x3c')],{'$or':_[_0xcbc6('0x2a')](_0x5163bd[_0xcbc6('0x32')],function(_0x4d1c75){var _0x3993fd={};_0x3993fd[_0x4d1c75]={'$like':'%'+_0x203536[_0xcbc6('0x2f')][_0xcbc6('0x3d')]+'%'};return _0x3993fd;})});}_0x5163bd=_[_0xcbc6('0x3b')]({},_0x5163bd,_0x203536[_0xcbc6('0x3e')]);return _0xc67142[_0xcbc6('0x81')](_0x5163bd);}})[_0xcbc6('0x23')](function(_0x51f751){if(_0x51f751){_0x3c728e=_0x51f751['length'];if(!_0x203536['query'][_0xcbc6('0x35')]('nolimit')){_0x5163bd[_0xcbc6('0x1f')]=qs[_0xcbc6('0x1f')](_0x203536[_0xcbc6('0x2f')][_0xcbc6('0x1f')]);_0x5163bd['offset']=qs[_0xcbc6('0x1d')](_0x203536[_0xcbc6('0x2f')][_0xcbc6('0x1d')]);}return _0xc67142['getBlackLists'](_0x5163bd);}})[_0xcbc6('0x23')](function(_0x5ddea4){if(_0x5ddea4){return _0x5ddea4?{'count':_0x3c728e,'rows':_0x5ddea4}:null;}})[_0xcbc6('0x23')](respondWithResult(_0x54f09b,null))[_0xcbc6('0x47')](handleError(_0x54f09b,null));};exports['addBlackLists']=function(_0x252f76,_0x5e8ac7,_0x5c4366){var _0x4bd98c,_0x55c3d6;return db['Campaign'][_0xcbc6('0x46')]({'where':{'id':_0x252f76[_0xcbc6('0x43')]['id']}})['then'](handleEntityNotFound(_0x5e8ac7,null))[_0xcbc6('0x23')](function(_0x3ceed5){if(_0x3ceed5){_0x55c3d6=_0x3ceed5;return _0x3ceed5[_0xcbc6('0x82')](_0x252f76['body'][_0xcbc6('0x63')],_[_0xcbc6('0x53')](_0x252f76[_0xcbc6('0x49')],[_0xcbc6('0x63'),'id'])||{});}return null;})[_0xcbc6('0x64')](function(_0x32aecd){var _0x25990b;_0x4bd98c=_0x32aecd||[];var _0x233404=[];if(_0x32aecd){for(var _0x34bb45=0x0;_0x34bb45<_0x32aecd[_0xcbc6('0x45')];_0x34bb45+=0x1){var _0x50a2ff=_0x32aecd[_0x34bb45][_0xcbc6('0x24')]({'plain':!![]});_0x25990b=squel['insert']()[_0xcbc6('0x68')]('cm_hopper_black')[_0xcbc6('0x69')]([_0xcbc6('0x6a'),_0xcbc6('0x6c'),'ListId',_0xcbc6('0x5e'),_0xcbc6('0x51'),_0xcbc6('0x52')],squel[_0xcbc6('0x6e')]()[_0xcbc6('0x6f')]('phone',_0xcbc6('0x6a'))['field']('id',_0xcbc6('0x6c'))[_0xcbc6('0x6f')](_0x50a2ff[_0xcbc6('0x7c')][_0xcbc6('0x71')](),_0xcbc6('0x6d'))[_0xcbc6('0x6f')](_0x252f76[_0xcbc6('0x43')]['id']['toString'](),_0xcbc6('0x5e'))[_0xcbc6('0x6f')](_0xcbc6('0x70'),'createdAt')[_0xcbc6('0x6f')]('NOW()','updatedAt')['from']('cm_contacts')[_0xcbc6('0x3c')](_0xcbc6('0x73'))[_0xcbc6('0x3c')](_0xcbc6('0x74'),_0x50a2ff[_0xcbc6('0x7c')]['toString']())[_0xcbc6('0x3c')]('phone\x20IS\x20NOT\x20NULL'))[_0xcbc6('0x71')]();_0x233404[_0xcbc6('0x7e')](db['sequelize'][_0xcbc6('0x2f')](_0x25990b));}return BPromise[_0xcbc6('0x7f')](_0x233404);}})[_0xcbc6('0x23')](function(){return _0x4bd98c;})[_0xcbc6('0x23')](respondWithResult(_0x5e8ac7,null))[_0xcbc6('0x47')](handleError(_0x5e8ac7,null));};exports['removeBlackLists']=function(_0x2dde41,_0x26f86c,_0x2a2052){return db[_0xcbc6('0x2b')]['find']({'where':{'id':_0x2dde41[_0xcbc6('0x43')]['id']}})['then'](handleEntityNotFound(_0x26f86c,null))[_0xcbc6('0x23')](function(_0x5ddfb5){if(_0x5ddfb5){return _0x5ddfb5['removeBlackLists'](_0x2dde41[_0xcbc6('0x2f')][_0xcbc6('0x63')]);}})[_0xcbc6('0x23')](function(_0x3c201e){if(_0x3c201e){return db[_0xcbc6('0x5f')][_0xcbc6('0x25')]({'where':{'ListId':_0x2dde41[_0xcbc6('0x2f')]['ids'],'CampaignId':_0x2dde41[_0xcbc6('0x43')]['id']}})['then'](function(){return _0x3c201e;});}})['then'](respondWithStatusCode(_0x26f86c,null))[_0xcbc6('0x47')](handleError(_0x26f86c,null));};
\ No newline at end of file
+var _0x92d8=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','getHoppers','findOne','CmHopper','CampaignId','filter','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','hasOwnProperty','CmList','getLists','addLists','ids','spread','dialCheckDuplicateType','insert','into','fromQuery','phone','scheduledAt','ContactId','field','CmListId','toString','ListId','NOW()','from','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','select','COALESCE(phone,\x27\x27)','onlyIfOpen','cm_hopper','cm_contacts','push','removeLists','getBlackLists','addBlackLists','sequelize','all','removeBlackLists','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','update','then','destroy','get','IvrCampaigns','error','name','index','map','Campaign','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','userProfileId'];(function(_0x53c7f0,_0x2b9b5e){var _0x47734b=function(_0x4ab095){while(--_0x4ab095){_0x53c7f0['push'](_0x53c7f0['shift']());}};_0x47734b(++_0x2b9b5e);}(_0x92d8,0x146));var _0x892d=function(_0x519c00,_0x527620){_0x519c00=_0x519c00-0x0;var _0x4f42f5=_0x92d8[_0x519c00];return _0x4f42f5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x892d('0x0'));var jsonpatch=require(_0x892d('0x1'));var rp=require(_0x892d('0x2'));var moment=require(_0x892d('0x3'));var BPromise=require(_0x892d('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x892d('0x5'));var sox=require('sox');var csv=require(_0x892d('0x6'));var ejs=require(_0x892d('0x7'));var fs=require('fs');var fs_extra=require(_0x892d('0x8'));var _=require(_0x892d('0x9'));var squel=require(_0x892d('0xa'));var crypto=require('crypto');var jsforce=require(_0x892d('0xb'));var deskjs=require(_0x892d('0xc'));var toCsv=require(_0x892d('0x6'));var querystring=require(_0x892d('0xd'));var Papa=require('papaparse');var Redis=require(_0x892d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x892d('0xf'));var as=require(_0x892d('0x10'));var hardwareService=require(_0x892d('0x11'));var logger=require(_0x892d('0x12'))(_0x892d('0x13'));var utils=require('../../config/utils');var config=require(_0x892d('0x14'));var licenseUtil=require(_0x892d('0x15'));var db=require(_0x892d('0x16'))['db'];function respondWithStatusCode(_0x38b3ab,_0x3945fa){_0x3945fa=_0x3945fa||0xcc;return function(_0x3c0ad8){if(_0x3c0ad8){return _0x38b3ab[_0x892d('0x17')](_0x3945fa);}return _0x38b3ab[_0x892d('0x18')](_0x3945fa)[_0x892d('0x19')]();};}function respondWithResult(_0x5efd18,_0x1d27aa){_0x1d27aa=_0x1d27aa||0xc8;return function(_0x2151f4){if(_0x2151f4){return _0x5efd18['status'](_0x1d27aa)[_0x892d('0x1a')](_0x2151f4);}};}function respondWithFilteredResult(_0x5eacd8,_0xe8d355){return function(_0x35b77a){if(_0x35b77a){var _0x5253dd=typeof _0xe8d355[_0x892d('0x1b')]===_0x892d('0x1c')&&typeof _0xe8d355['limit']===_0x892d('0x1c');var _0x47e739=_0x35b77a[_0x892d('0x1d')];var _0x44137c=_0x5253dd?0x0:_0xe8d355[_0x892d('0x1b')];var _0x5c289d=_0x5253dd?_0x35b77a['count']:_0xe8d355[_0x892d('0x1b')]+_0xe8d355['limit'];var _0x19e7a1;if(_0x5c289d>=_0x47e739){_0x5c289d=_0x47e739;_0x19e7a1=0xc8;}else{_0x19e7a1=0xce;}_0x5eacd8['status'](_0x19e7a1);return _0x5eacd8[_0x892d('0x1e')]('Content-Range',_0x44137c+'-'+_0x5c289d+'/'+_0x47e739)[_0x892d('0x1a')](_0x35b77a);}return null;};}function patchUpdates(_0x4f2978){return function(_0x4e649d){try{jsonpatch[_0x892d('0x1f')](_0x4e649d,_0x4f2978,!![]);}catch(_0x42d330){return BPromise[_0x892d('0x20')](_0x42d330);}return _0x4e649d['save']();};}function saveUpdates(_0x4f8495,_0xa2dee6){return function(_0x3eedf2){if(_0x3eedf2){return _0x3eedf2[_0x892d('0x21')](_0x4f8495)[_0x892d('0x22')](function(_0x46dec1){return _0x46dec1;});}return null;};}function removeEntity(_0x57279a,_0x2ec4a1){return function(_0x58ec3a){if(_0x58ec3a){return _0x58ec3a[_0x892d('0x23')]()[_0x892d('0x22')](function(){var _0x39d5a4=_0x58ec3a[_0x892d('0x24')]({'plain':!![]});var _0x429acc=_0x892d('0x25');return db['UserProfileResource'][_0x892d('0x23')]({'where':{'type':_0x429acc,'resourceId':_0x39d5a4['id']}})[_0x892d('0x22')](function(){return _0x58ec3a;});})[_0x892d('0x22')](function(){_0x57279a[_0x892d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27ecf4,_0x559126){return function(_0x4e455d){if(!_0x4e455d){_0x27ecf4['sendStatus'](0x194);}return _0x4e455d;};}function handleError(_0x59feb9,_0x13790a){_0x13790a=_0x13790a||0x1f4;return function(_0x3c678c){logger[_0x892d('0x26')](_0x3c678c['stack']);if(_0x3c678c['name']){delete _0x3c678c[_0x892d('0x27')];}_0x59feb9[_0x892d('0x18')](_0x13790a)['send'](_0x3c678c);};}exports[_0x892d('0x28')]=function(_0x311058,_0x10d009){var _0x5f4668={},_0x276138={},_0x2bf934={'count':0x0,'rows':[]};var _0x4ac5eb=_[_0x892d('0x29')](db[_0x892d('0x2a')]['rawAttributes'],function(_0x117c44){return{'name':_0x117c44[_0x892d('0x2b')],'type':_0x117c44[_0x892d('0x2c')][_0x892d('0x2d')]};});_0x276138['model']=_[_0x892d('0x29')](_0x4ac5eb,_0x892d('0x27'));_0x276138[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0x311058[_0x892d('0x2e')]);_0x276138[_0x892d('0x30')]=_[_0x892d('0x31')](_0x276138[_0x892d('0x32')],_0x276138['query']);_0x5f4668[_0x892d('0x33')]=_[_0x892d('0x31')](_0x276138[_0x892d('0x32')],qs[_0x892d('0x34')](_0x311058[_0x892d('0x2e')][_0x892d('0x34')]));_0x5f4668[_0x892d('0x33')]=_0x5f4668['attributes'][_0x892d('0x35')]?_0x5f4668['attributes']:_0x276138[_0x892d('0x32')];if(!_0x311058[_0x892d('0x2e')]['hasOwnProperty'](_0x892d('0x36'))){_0x5f4668[_0x892d('0x37')]=qs[_0x892d('0x37')](_0x311058[_0x892d('0x2e')][_0x892d('0x37')]);_0x5f4668[_0x892d('0x1b')]=qs[_0x892d('0x1b')](_0x311058['query'][_0x892d('0x1b')]);}_0x5f4668[_0x892d('0x38')]=qs['sort'](_0x311058[_0x892d('0x2e')][_0x892d('0x39')]);_0x5f4668[_0x892d('0x3a')]=qs[_0x892d('0x30')](_[_0x892d('0x3b')](_0x311058['query'],_0x276138[_0x892d('0x30')]),_0x4ac5eb);if(_0x311058[_0x892d('0x2e')]['filter']){_0x5f4668[_0x892d('0x3a')]=_[_0x892d('0x3c')](_0x5f4668[_0x892d('0x3a')],{'$or':_[_0x892d('0x29')](_0x4ac5eb,function(_0xa957e9){if(_0xa957e9[_0x892d('0x2c')]!==_0x892d('0x3d')){var _0x52ce8b={};_0x52ce8b[_0xa957e9['name']]={'$like':'%'+_0x311058[_0x892d('0x2e')]['filter']+'%'};return _0x52ce8b;}})});}_0x5f4668=_[_0x892d('0x3c')]({},_0x5f4668,_0x311058[_0x892d('0x3e')]);var _0x46d95c={'where':_0x5f4668[_0x892d('0x3a')]};return db['Campaign'][_0x892d('0x1d')](_0x46d95c)[_0x892d('0x22')](function(_0x1e47ac){_0x2bf934[_0x892d('0x1d')]=_0x1e47ac;if(_0x311058[_0x892d('0x2e')][_0x892d('0x3f')]){_0x5f4668[_0x892d('0x40')]=[{'all':!![]}];}return db[_0x892d('0x2a')][_0x892d('0x41')](_0x5f4668);})[_0x892d('0x22')](function(_0x5afc90){_0x2bf934[_0x892d('0x42')]=_0x5afc90;return _0x2bf934;})[_0x892d('0x22')](respondWithFilteredResult(_0x10d009,_0x5f4668))[_0x892d('0x43')](handleError(_0x10d009,null));};exports[_0x892d('0x44')]=function(_0x2d35ba,_0x41b7f9){var _0x593ad5={'raw':![],'where':{'id':_0x2d35ba[_0x892d('0x45')]['id']}},_0x52bf2c={};_0x52bf2c['model']=_['keys'](db[_0x892d('0x2a')]['rawAttributes']);_0x52bf2c[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0x2d35ba[_0x892d('0x2e')]);_0x52bf2c[_0x892d('0x30')]=_['intersection'](_0x52bf2c[_0x892d('0x32')],_0x52bf2c['query']);_0x593ad5[_0x892d('0x33')]=_[_0x892d('0x31')](_0x52bf2c[_0x892d('0x32')],qs[_0x892d('0x34')](_0x2d35ba[_0x892d('0x2e')][_0x892d('0x34')]));_0x593ad5[_0x892d('0x33')]=_0x593ad5['attributes']['length']?_0x593ad5[_0x892d('0x33')]:_0x52bf2c['model'];if(_0x2d35ba[_0x892d('0x2e')][_0x892d('0x3f')]){_0x593ad5['include']=[{'all':!![]}];}_0x593ad5=_[_0x892d('0x3c')]({},_0x593ad5,_0x2d35ba[_0x892d('0x3e')]);return db['Campaign'][_0x892d('0x46')](_0x593ad5)[_0x892d('0x22')](handleEntityNotFound(_0x41b7f9,null))[_0x892d('0x22')](respondWithResult(_0x41b7f9,null))[_0x892d('0x43')](handleError(_0x41b7f9,null));};exports[_0x892d('0x47')]=function(_0x5dc44b,_0x108df8){return db[_0x892d('0x2a')][_0x892d('0x47')](_0x5dc44b[_0x892d('0x48')],{})['then'](function(_0xfca9f3){var _0x454ba3=_0x5dc44b[_0x892d('0x49')]['get']({'plain':!![]});if(!_0x454ba3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x454ba3[_0x892d('0x4a')]===_0x892d('0x49')){var _0x281aa3=_0xfca9f3[_0x892d('0x24')]({'plain':!![]});var _0x501352=_0x892d('0x25');return db['UserProfileSection'][_0x892d('0x46')]({'where':{'name':_0x501352,'userProfileId':_0x454ba3[_0x892d('0x4b')]},'raw':!![]})[_0x892d('0x22')](function(_0x231097){if(_0x231097&&_0x231097[_0x892d('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0x281aa3[_0x892d('0x27')],'resourceId':_0x281aa3['id'],'type':_0x231097[_0x892d('0x27')],'sectionId':_0x231097['id']},{})[_0x892d('0x22')](function(){return _0xfca9f3;});}else{return _0xfca9f3;}})[_0x892d('0x43')](function(_0x52675e){logger[_0x892d('0x26')](_0x892d('0x4d'),_0x52675e);throw _0x52675e;});}return _0xfca9f3;})['then'](respondWithResult(_0x108df8,0xc9))[_0x892d('0x43')](handleError(_0x108df8,null));};exports[_0x892d('0x4e')]=function(_0x1559b0,_0x5e8f94){var _0x1a53dc={'where':{'id':_0x1559b0[_0x892d('0x45')]['id']}},_0x225c7a={};_0x225c7a[_0x892d('0x32')]=_[_0x892d('0x2f')](db[_0x892d('0x2a')][_0x892d('0x4f')]);_0x1a53dc['attributes']=_[_0x892d('0x31')](_0x225c7a['model'],qs[_0x892d('0x34')](_0x1559b0[_0x892d('0x2e')][_0x892d('0x34')]));_0x1a53dc['attributes']=_0x1a53dc[_0x892d('0x33')][_0x892d('0x35')]?_0x1a53dc[_0x892d('0x33')]:_0x225c7a['model'];if(_0x1559b0[_0x892d('0x2e')][_0x892d('0x3f')]){_0x1a53dc[_0x892d('0x40')]=[{'all':!![]}];}_0x1a53dc=_[_0x892d('0x3c')]({},_0x1a53dc,_0x1559b0[_0x892d('0x3e')]);return db[_0x892d('0x2a')][_0x892d('0x46')](_0x1a53dc)[_0x892d('0x22')](handleEntityNotFound(_0x5e8f94,null))[_0x892d('0x22')](function(_0x24c95f){if(_0x24c95f){var _0x5b00dc=_0x24c95f[_0x892d('0x24')]({'plain':!![]});_0x5b00dc=qs[_0x892d('0x50')](_0x5b00dc,['id',_0x892d('0x51'),_0x892d('0x52')]);_0x1559b0[_0x892d('0x48')]=_[_0x892d('0x50')](_0x1559b0[_0x892d('0x48')],['id',_0x892d('0x51'),_0x892d('0x52')]);return db[_0x892d('0x2a')]['create'](_[_0x892d('0x3c')](_0x5b00dc,_0x1559b0[_0x892d('0x48')]),{'include':_0x1559b0[_0x892d('0x2e')][_0x892d('0x3f')]?[{'all':!![]}]:undefined})['then'](function(_0x50bed2){var _0x33fb3c=_0x1559b0[_0x892d('0x49')]['get']({'plain':!![]});if(!_0x33fb3c)throw new Error(_0x892d('0x53'));if(_0x33fb3c[_0x892d('0x4a')]==='user'){var _0x27b473=_0x50bed2[_0x892d('0x24')]({'plain':!![]});var _0xb569d7=_0x892d('0x25');return db[_0x892d('0x54')]['find']({'where':{'name':_0xb569d7,'userProfileId':_0x33fb3c[_0x892d('0x4b')]},'raw':!![]})[_0x892d('0x22')](function(_0x168797){if(_0x168797&&_0x168797[_0x892d('0x4c')]===0x0){return db['UserProfileResource'][_0x892d('0x47')]({'name':_0x27b473['name'],'resourceId':_0x27b473['id'],'type':_0x168797['name'],'sectionId':_0x168797['id']},{})[_0x892d('0x22')](function(){return _0x50bed2;});}else{return _0x50bed2;}})[_0x892d('0x43')](function(_0x5ce3d7){logger['error'](_0x892d('0x4d'),_0x5ce3d7);throw _0x5ce3d7;});}return _0x50bed2;});}})[_0x892d('0x22')](respondWithResult(_0x5e8f94,0xc9))[_0x892d('0x43')](handleError(_0x5e8f94,null));};exports['update']=function(_0x189412,_0x20016e){if(_0x189412[_0x892d('0x48')]['id']){delete _0x189412[_0x892d('0x48')]['id'];}return db[_0x892d('0x2a')][_0x892d('0x46')]({'where':{'id':_0x189412[_0x892d('0x45')]['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x20016e,null))[_0x892d('0x22')](saveUpdates(_0x189412[_0x892d('0x48')],null))[_0x892d('0x22')](respondWithResult(_0x20016e,null))['catch'](handleError(_0x20016e,null));};exports[_0x892d('0x23')]=function(_0x1ed751,_0x741bf){return db[_0x892d('0x2a')][_0x892d('0x46')]({'where':{'id':_0x1ed751['params']['id']}})['then'](handleEntityNotFound(_0x741bf,null))[_0x892d('0x22')](removeEntity(_0x741bf,null))['catch'](handleError(_0x741bf,null));};exports[_0x892d('0x55')]=function(_0x3f8c82,_0x5395a1,_0xfa782b){var _0x580628={'raw':!![],'where':{}};var _0x3fb0fa={};var _0x491512={'count':0x0,'rows':[]};return db['Campaign'][_0x892d('0x56')]({'where':{'id':_0x3f8c82[_0x892d('0x45')]['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x5395a1,null))['then'](function(_0x2f3cf8){if(_0x2f3cf8){_0x3fb0fa['model']=_[_0x892d('0x2f')](db[_0x892d('0x57')][_0x892d('0x4f')]);_0x3fb0fa[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0x3f8c82[_0x892d('0x2e')]);_0x3fb0fa[_0x892d('0x30')]=_[_0x892d('0x31')](_0x3fb0fa[_0x892d('0x32')],_0x3fb0fa[_0x892d('0x2e')]);_0x580628[_0x892d('0x33')]=_[_0x892d('0x31')](_0x3fb0fa['model'],qs[_0x892d('0x34')](_0x3f8c82['query'][_0x892d('0x34')]));_0x580628[_0x892d('0x33')]=_0x580628[_0x892d('0x33')][_0x892d('0x35')]?_0x580628[_0x892d('0x33')]:_0x3fb0fa[_0x892d('0x32')];if(!_0x3f8c82[_0x892d('0x2e')]['hasOwnProperty'](_0x892d('0x36'))){_0x580628[_0x892d('0x37')]=qs[_0x892d('0x37')](_0x3f8c82[_0x892d('0x2e')][_0x892d('0x37')]);_0x580628[_0x892d('0x1b')]=qs[_0x892d('0x1b')](_0x3f8c82[_0x892d('0x2e')][_0x892d('0x1b')]);}_0x580628['order']=qs['sort'](_0x3f8c82[_0x892d('0x2e')][_0x892d('0x39')]);_0x580628[_0x892d('0x3a')]=qs['filters'](_[_0x892d('0x3b')](_0x3f8c82[_0x892d('0x2e')],_0x3fb0fa[_0x892d('0x30')]));_0x580628[_0x892d('0x3a')][_0x892d('0x58')]=_0x2f3cf8['id'];if(_0x3f8c82[_0x892d('0x2e')][_0x892d('0x59')]){_0x580628['where']=_['merge'](_0x580628[_0x892d('0x3a')],{'$or':_[_0x892d('0x29')](_0x580628[_0x892d('0x33')],function(_0xb00435){var _0x259f41={};_0x259f41[_0xb00435]={'$like':'%'+_0x3f8c82[_0x892d('0x2e')][_0x892d('0x59')]+'%'};return _0x259f41;})});}_0x580628=_[_0x892d('0x3c')]({},_0x580628,_0x3f8c82[_0x892d('0x3e')]);return db[_0x892d('0x57')][_0x892d('0x1d')]({'where':_0x580628[_0x892d('0x3a')]})[_0x892d('0x22')](function(_0x31e4bd){_0x491512[_0x892d('0x1d')]=_0x31e4bd;if(_0x3f8c82['query'][_0x892d('0x3f')]){_0x580628[_0x892d('0x40')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x580628);})[_0x892d('0x22')](function(_0x5eecea){_0x491512[_0x892d('0x42')]=_0x5eecea;return _0x491512;});}})['then'](respondWithFilteredResult(_0x5395a1,_0x580628))[_0x892d('0x43')](handleError(_0x5395a1,null));};exports[_0x892d('0x5a')]=function(_0x47c853,_0x5b6e19,_0x42ff01){var _0x260477={'raw':!![],'where':{}};var _0x26a1af={};var _0x2c397c={'count':0x0,'rows':[]};return db[_0x892d('0x2a')][_0x892d('0x56')]({'where':{'id':_0x47c853[_0x892d('0x45')]['id']}})['then'](handleEntityNotFound(_0x5b6e19,null))[_0x892d('0x22')](function(_0xd99fb8){if(_0xd99fb8){_0x26a1af[_0x892d('0x32')]=_[_0x892d('0x2f')](db[_0x892d('0x5b')][_0x892d('0x4f')]);_0x26a1af[_0x892d('0x2e')]=_['keys'](_0x47c853[_0x892d('0x2e')]);_0x26a1af[_0x892d('0x30')]=_[_0x892d('0x31')](_0x26a1af[_0x892d('0x32')],_0x26a1af[_0x892d('0x2e')]);_0x260477[_0x892d('0x33')]=_[_0x892d('0x31')](_0x26a1af[_0x892d('0x32')],qs[_0x892d('0x34')](_0x47c853[_0x892d('0x2e')][_0x892d('0x34')]));_0x260477[_0x892d('0x33')]=_0x260477[_0x892d('0x33')][_0x892d('0x35')]?_0x260477[_0x892d('0x33')]:_0x26a1af[_0x892d('0x32')];if(!_0x47c853['query']['hasOwnProperty'](_0x892d('0x36'))){_0x260477[_0x892d('0x37')]=qs[_0x892d('0x37')](_0x47c853[_0x892d('0x2e')][_0x892d('0x37')]);_0x260477[_0x892d('0x1b')]=qs['offset'](_0x47c853[_0x892d('0x2e')][_0x892d('0x1b')]);}_0x260477[_0x892d('0x38')]=qs[_0x892d('0x39')](_0x47c853[_0x892d('0x2e')][_0x892d('0x39')]);_0x260477[_0x892d('0x3a')]=qs[_0x892d('0x30')](_[_0x892d('0x3b')](_0x47c853[_0x892d('0x2e')],_0x26a1af['filters']));_0x260477[_0x892d('0x3a')]['CampaignId']=_0xd99fb8['id'];if(_0x47c853[_0x892d('0x2e')][_0x892d('0x59')]){_0x260477[_0x892d('0x3a')]=_['merge'](_0x260477[_0x892d('0x3a')],{'$or':_[_0x892d('0x29')](_0x260477[_0x892d('0x33')],function(_0x43b116){var _0x14e605={};_0x14e605[_0x43b116]={'$like':'%'+_0x47c853[_0x892d('0x2e')][_0x892d('0x59')]+'%'};return _0x14e605;})});}_0x260477=_[_0x892d('0x3c')]({},_0x260477,_0x47c853[_0x892d('0x3e')]);return db[_0x892d('0x5b')][_0x892d('0x1d')]({'where':_0x260477[_0x892d('0x3a')]})[_0x892d('0x22')](function(_0x50dfb7){_0x2c397c[_0x892d('0x1d')]=_0x50dfb7;if(_0x47c853[_0x892d('0x2e')][_0x892d('0x3f')]){_0x260477['include']=[{'all':!![]}];}return db[_0x892d('0x5b')][_0x892d('0x41')](_0x260477);})[_0x892d('0x22')](function(_0x368c15){_0x2c397c[_0x892d('0x42')]=_0x368c15;return _0x2c397c;});}})[_0x892d('0x22')](respondWithFilteredResult(_0x5b6e19,_0x260477))[_0x892d('0x43')](handleError(_0x5b6e19,null));};exports[_0x892d('0x5c')]=function(_0x30cac9,_0x1fbf11,_0x3802de){var _0x3e1659={'raw':!![],'where':{}};var _0x294647={};var _0x143c09={'count':0x0,'rows':[]};return db['Campaign'][_0x892d('0x56')]({'where':{'id':_0x30cac9[_0x892d('0x45')]['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x1fbf11,null))[_0x892d('0x22')](function(_0x1cf932){if(_0x1cf932){_0x294647[_0x892d('0x32')]=_['keys'](db[_0x892d('0x5d')][_0x892d('0x4f')]);_0x294647[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0x30cac9['query']);_0x294647[_0x892d('0x30')]=_['intersection'](_0x294647[_0x892d('0x32')],_0x294647[_0x892d('0x2e')]);_0x3e1659['attributes']=_[_0x892d('0x31')](_0x294647[_0x892d('0x32')],qs[_0x892d('0x34')](_0x30cac9[_0x892d('0x2e')]['fields']));_0x3e1659['attributes']=_0x3e1659[_0x892d('0x33')]['length']?_0x3e1659[_0x892d('0x33')]:_0x294647['model'];if(!_0x30cac9[_0x892d('0x2e')]['hasOwnProperty'](_0x892d('0x36'))){_0x3e1659[_0x892d('0x37')]=qs[_0x892d('0x37')](_0x30cac9[_0x892d('0x2e')]['limit']);_0x3e1659[_0x892d('0x1b')]=qs[_0x892d('0x1b')](_0x30cac9[_0x892d('0x2e')][_0x892d('0x1b')]);}_0x3e1659[_0x892d('0x38')]=qs[_0x892d('0x39')](_0x30cac9[_0x892d('0x2e')][_0x892d('0x39')]);_0x3e1659[_0x892d('0x3a')]=qs['filters'](_[_0x892d('0x3b')](_0x30cac9['query'],_0x294647['filters']));_0x3e1659[_0x892d('0x3a')]['CampaignId']=_0x1cf932['id'];if(_0x30cac9[_0x892d('0x2e')][_0x892d('0x59')]){_0x3e1659[_0x892d('0x3a')]=_[_0x892d('0x3c')](_0x3e1659[_0x892d('0x3a')],{'$or':_[_0x892d('0x29')](_0x3e1659[_0x892d('0x33')],function(_0x59706c){var _0x2e2969={};_0x2e2969[_0x59706c]={'$like':'%'+_0x30cac9['query'][_0x892d('0x59')]+'%'};return _0x2e2969;})});}_0x3e1659=_[_0x892d('0x3c')]({},_0x3e1659,_0x30cac9['options']);return db[_0x892d('0x5d')]['count']({'where':_0x3e1659[_0x892d('0x3a')]})[_0x892d('0x22')](function(_0x5766db){_0x143c09[_0x892d('0x1d')]=_0x5766db;if(_0x30cac9[_0x892d('0x2e')]['includeAll']){_0x3e1659['include']=[{'all':!![]}];}return db[_0x892d('0x5d')][_0x892d('0x41')](_0x3e1659);})[_0x892d('0x22')](function(_0x5d0065){_0x143c09[_0x892d('0x42')]=_0x5d0065;return _0x143c09;});}})['then'](respondWithFilteredResult(_0x1fbf11,_0x3e1659))[_0x892d('0x43')](handleError(_0x1fbf11,null));};exports[_0x892d('0x5e')]=function(_0xb63ffd,_0x36b1fb,_0x2c807e){var _0x269676={'raw':!![],'where':{}};var _0x444322={};var _0x2e8259={'count':0x0,'rows':[]};return db[_0x892d('0x2a')][_0x892d('0x56')]({'where':{'id':_0xb63ffd[_0x892d('0x45')]['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x36b1fb,null))[_0x892d('0x22')](function(_0x552bb9){if(_0x552bb9){_0x444322['model']=_[_0x892d('0x2f')](db[_0x892d('0x5f')]['rawAttributes']);_0x444322[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0xb63ffd[_0x892d('0x2e')]);_0x444322[_0x892d('0x30')]=_[_0x892d('0x31')](_0x444322[_0x892d('0x32')],_0x444322[_0x892d('0x2e')]);_0x269676[_0x892d('0x33')]=_[_0x892d('0x31')](_0x444322[_0x892d('0x32')],qs['fields'](_0xb63ffd[_0x892d('0x2e')]['fields']));_0x269676[_0x892d('0x33')]=_0x269676[_0x892d('0x33')]['length']?_0x269676[_0x892d('0x33')]:_0x444322['model'];if(!_0xb63ffd[_0x892d('0x2e')][_0x892d('0x60')](_0x892d('0x36'))){_0x269676[_0x892d('0x37')]=qs['limit'](_0xb63ffd[_0x892d('0x2e')][_0x892d('0x37')]);_0x269676[_0x892d('0x1b')]=qs[_0x892d('0x1b')](_0xb63ffd['query'][_0x892d('0x1b')]);}_0x269676[_0x892d('0x38')]=qs['sort'](_0xb63ffd['query']['sort']);_0x269676[_0x892d('0x3a')]=qs[_0x892d('0x30')](_[_0x892d('0x3b')](_0xb63ffd[_0x892d('0x2e')],_0x444322[_0x892d('0x30')]));_0x269676[_0x892d('0x3a')][_0x892d('0x58')]=_0x552bb9['id'];if(_0xb63ffd[_0x892d('0x2e')][_0x892d('0x59')]){_0x269676['where']=_[_0x892d('0x3c')](_0x269676[_0x892d('0x3a')],{'$or':_['map'](_0x269676[_0x892d('0x33')],function(_0x52217f){var _0x42a181={};_0x42a181[_0x52217f]={'$like':'%'+_0xb63ffd[_0x892d('0x2e')][_0x892d('0x59')]+'%'};return _0x42a181;})});}_0x269676=_['merge']({},_0x269676,_0xb63ffd[_0x892d('0x3e')]);return db['CmHopperBlack']['count']({'where':_0x269676['where']})[_0x892d('0x22')](function(_0x1fb690){_0x2e8259[_0x892d('0x1d')]=_0x1fb690;if(_0xb63ffd[_0x892d('0x2e')][_0x892d('0x3f')]){_0x269676['include']=[{'all':!![]}];}return db[_0x892d('0x5f')]['findAll'](_0x269676);})['then'](function(_0x398f47){_0x2e8259[_0x892d('0x42')]=_0x398f47;return _0x2e8259;});}})[_0x892d('0x22')](respondWithFilteredResult(_0x36b1fb,_0x269676))[_0x892d('0x43')](handleError(_0x36b1fb,null));};exports['getLists']=function(_0x4a94cd,_0x8565b,_0x25d4ec){var _0x436c91={};var _0x35a1db={};var _0x7d5d9;var _0x44ef01;return db['Campaign'][_0x892d('0x56')]({'where':{'id':_0x4a94cd['params']['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x8565b,null))[_0x892d('0x22')](function(_0x2b568f){if(_0x2b568f){_0x7d5d9=_0x2b568f;_0x35a1db[_0x892d('0x32')]=_[_0x892d('0x2f')](db[_0x892d('0x61')][_0x892d('0x4f')]);_0x35a1db[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0x4a94cd[_0x892d('0x2e')]);_0x35a1db[_0x892d('0x30')]=_['intersection'](_0x35a1db[_0x892d('0x32')],_0x35a1db[_0x892d('0x2e')]);_0x436c91['attributes']=_[_0x892d('0x31')](_0x35a1db[_0x892d('0x32')],qs[_0x892d('0x34')](_0x4a94cd[_0x892d('0x2e')][_0x892d('0x34')]));_0x436c91['attributes']=_0x436c91['attributes']['length']?_0x436c91[_0x892d('0x33')]:_0x35a1db[_0x892d('0x32')];_0x436c91[_0x892d('0x38')]=qs[_0x892d('0x39')](_0x4a94cd['query'][_0x892d('0x39')]);_0x436c91[_0x892d('0x3a')]=qs[_0x892d('0x30')](_[_0x892d('0x3b')](_0x4a94cd[_0x892d('0x2e')],_0x35a1db[_0x892d('0x30')]));if(_0x4a94cd['query'][_0x892d('0x59')]){_0x436c91['where']=_[_0x892d('0x3c')](_0x436c91[_0x892d('0x3a')],{'$or':_['map'](_0x436c91[_0x892d('0x33')],function(_0x376ad2){var _0x14cd73={};_0x14cd73[_0x376ad2]={'$like':'%'+_0x4a94cd[_0x892d('0x2e')][_0x892d('0x59')]+'%'};return _0x14cd73;})});}_0x436c91=_[_0x892d('0x3c')]({},_0x436c91,_0x4a94cd[_0x892d('0x3e')]);return _0x7d5d9[_0x892d('0x62')](_0x436c91);}})[_0x892d('0x22')](function(_0x15c449){if(_0x15c449){_0x44ef01=_0x15c449['length'];if(!_0x4a94cd[_0x892d('0x2e')][_0x892d('0x60')](_0x892d('0x36'))){_0x436c91[_0x892d('0x37')]=qs[_0x892d('0x37')](_0x4a94cd[_0x892d('0x2e')]['limit']);_0x436c91[_0x892d('0x1b')]=qs['offset'](_0x4a94cd[_0x892d('0x2e')]['offset']);}return _0x7d5d9[_0x892d('0x62')](_0x436c91);}})[_0x892d('0x22')](function(_0x86ed6a){if(_0x86ed6a){return _0x86ed6a?{'count':_0x44ef01,'rows':_0x86ed6a}:null;}})[_0x892d('0x22')](respondWithResult(_0x8565b,null))[_0x892d('0x43')](handleError(_0x8565b,null));};exports[_0x892d('0x63')]=function(_0x51b5e4,_0x27f53f,_0x1a74c6){var _0x25e59e,_0x2d3ccd;return db[_0x892d('0x2a')][_0x892d('0x46')]({'where':{'id':_0x51b5e4[_0x892d('0x45')]['id']}})['then'](handleEntityNotFound(_0x27f53f,null))['then'](function(_0x442f7e){if(_0x442f7e){_0x2d3ccd=_0x442f7e;return _0x442f7e[_0x892d('0x63')](_0x51b5e4[_0x892d('0x48')][_0x892d('0x64')],_[_0x892d('0x50')](_0x51b5e4[_0x892d('0x48')],[_0x892d('0x64'),'id'])||{});}return null;})[_0x892d('0x65')](function(_0x1204b1){var _0x42d174;_0x25e59e=_0x1204b1||[];var _0xf0ce96=[];if(_0x1204b1){for(var _0x22aa97=0x0;_0x22aa97<_0x1204b1['length'];_0x22aa97+=0x1){var _0x259969=_0x1204b1[_0x22aa97]['get']({'plain':!![]});_0x2d3ccd['dialCheckDuplicateType']=_0x51b5e4[_0x892d('0x48')][_0x892d('0x66')]?_0x51b5e4[_0x892d('0x48')]['dialCheckDuplicateType']:_0x2d3ccd[_0x892d('0x66')];switch(_0x2d3ccd[_0x892d('0x66')]){case'always':_0x42d174=squel[_0x892d('0x67')]()[_0x892d('0x68')]('cm_hopper')[_0x892d('0x69')]([_0x892d('0x6a'),_0x892d('0x6b'),_0x892d('0x6c'),'ListId',_0x892d('0x58'),_0x892d('0x51'),_0x892d('0x52')],squel['select']()['field'](_0x892d('0x6a'),_0x892d('0x6a'))[_0x892d('0x6d')]('NOW()',_0x892d('0x6b'))[_0x892d('0x6d')]('id',_0x892d('0x6c'))[_0x892d('0x6d')](_0x259969[_0x892d('0x6e')][_0x892d('0x6f')](),_0x892d('0x70'))[_0x892d('0x6d')](_0x51b5e4['params']['id']['toString'](),_0x892d('0x58'))['field'](_0x892d('0x71'),_0x892d('0x51'))[_0x892d('0x6d')]('NOW()',_0x892d('0x52'))[_0x892d('0x72')]('cm_contacts')[_0x892d('0x3a')](_0x892d('0x73'))[_0x892d('0x3a')](_0x892d('0x74'),_0x259969[_0x892d('0x6e')]['toString']())['where'](_0x892d('0x75'))[_0x892d('0x3a')](_0x892d('0x76'),squel['select']()[_0x892d('0x6d')](_0x892d('0x77'))[_0x892d('0x72')](_0x892d('0x78'))['where'](_0x892d('0x79'),_0x51b5e4[_0x892d('0x45')]['id'][_0x892d('0x6f')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x892d('0x7a')]()[_0x892d('0x6d')](_0x892d('0x7b'))[_0x892d('0x72')]('cm_hopper')[_0x892d('0x3a')](_0x892d('0x79'),_0x51b5e4['params']['id'][_0x892d('0x6f')]())))['toString']();break;case _0x892d('0x7c'):_0x42d174=squel['insert']()[_0x892d('0x68')](_0x892d('0x7d'))[_0x892d('0x69')]([_0x892d('0x6a'),'scheduledAt',_0x892d('0x6c'),_0x892d('0x70'),_0x892d('0x58'),_0x892d('0x51'),_0x892d('0x52')],squel['select']()['field'](_0x892d('0x6a'),'phone')[_0x892d('0x6d')](_0x892d('0x71'),'scheduledAt')[_0x892d('0x6d')]('id','ContactId')[_0x892d('0x6d')](_0x259969['CmListId'][_0x892d('0x6f')](),_0x892d('0x70'))[_0x892d('0x6d')](_0x51b5e4[_0x892d('0x45')]['id'][_0x892d('0x6f')](),'CampaignId')['field']('NOW()',_0x892d('0x51'))[_0x892d('0x6d')](_0x892d('0x71'),_0x892d('0x52'))[_0x892d('0x72')](_0x892d('0x7e'))[_0x892d('0x3a')]('deletedAt\x20IS\x20NULL')[_0x892d('0x3a')]('ListId\x20=\x20?',_0x259969['CmListId']['toString']())[_0x892d('0x3a')]('phone\x20IS\x20NOT\x20NULL')[_0x892d('0x3a')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x892d('0x6d')](_0x892d('0x7b'))[_0x892d('0x72')]('cm_hopper')[_0x892d('0x3a')](_0x892d('0x79'),_0x51b5e4[_0x892d('0x45')]['id'][_0x892d('0x6f')]())))[_0x892d('0x6f')]();break;default:_0x42d174=squel['insert']()[_0x892d('0x68')]('cm_hopper')[_0x892d('0x69')](['phone',_0x892d('0x6b'),'ContactId',_0x892d('0x70'),_0x892d('0x58'),_0x892d('0x51'),_0x892d('0x52')],squel[_0x892d('0x7a')]()[_0x892d('0x6d')]('phone',_0x892d('0x6a'))[_0x892d('0x6d')](_0x892d('0x71'),_0x892d('0x6b'))['field']('id',_0x892d('0x6c'))[_0x892d('0x6d')](_0x259969[_0x892d('0x6e')][_0x892d('0x6f')](),_0x892d('0x70'))[_0x892d('0x6d')](_0x51b5e4[_0x892d('0x45')]['id'][_0x892d('0x6f')](),_0x892d('0x58'))[_0x892d('0x6d')](_0x892d('0x71'),_0x892d('0x51'))[_0x892d('0x6d')](_0x892d('0x71'),_0x892d('0x52'))['from'](_0x892d('0x7e'))[_0x892d('0x3a')](_0x892d('0x73'))[_0x892d('0x3a')]('ListId\x20=\x20?',_0x259969['CmListId'][_0x892d('0x6f')]())[_0x892d('0x3a')](_0x892d('0x75')))['toString']();}_0xf0ce96[_0x892d('0x7f')](db['sequelize'][_0x892d('0x2e')](_0x42d174));}return BPromise['all'](_0xf0ce96);}})[_0x892d('0x22')](function(){return _0x25e59e;})[_0x892d('0x22')](respondWithResult(_0x27f53f,null))['catch'](handleError(_0x27f53f,null));};exports[_0x892d('0x80')]=function(_0x41ef9f,_0x48f013,_0x5b622d){return db[_0x892d('0x2a')][_0x892d('0x46')]({'where':{'id':_0x41ef9f[_0x892d('0x45')]['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x48f013,null))[_0x892d('0x22')](function(_0x5c9225){if(_0x5c9225){return _0x5c9225[_0x892d('0x80')](_0x41ef9f['query'][_0x892d('0x64')]);}})[_0x892d('0x22')](function(_0x3df87b){if(_0x3df87b){return db[_0x892d('0x57')][_0x892d('0x23')]({'where':{'ListId':_0x41ef9f[_0x892d('0x2e')][_0x892d('0x64')],'CampaignId':_0x41ef9f[_0x892d('0x45')]['id']}})[_0x892d('0x22')](function(){return _0x3df87b;});}})['then'](respondWithStatusCode(_0x48f013,null))['catch'](handleError(_0x48f013,null));};exports[_0x892d('0x81')]=function(_0x1c716e,_0xbf6b14,_0x25c455){var _0x18d4dc={};var _0x349595={};var _0x239e9f;var _0x33fa9c;return db['Campaign']['findOne']({'where':{'id':_0x1c716e[_0x892d('0x45')]['id']}})['then'](handleEntityNotFound(_0xbf6b14,null))[_0x892d('0x22')](function(_0x513b63){if(_0x513b63){_0x239e9f=_0x513b63;_0x349595[_0x892d('0x32')]=_[_0x892d('0x2f')](db[_0x892d('0x61')][_0x892d('0x4f')]);_0x349595[_0x892d('0x2e')]=_[_0x892d('0x2f')](_0x1c716e[_0x892d('0x2e')]);_0x349595[_0x892d('0x30')]=_[_0x892d('0x31')](_0x349595['model'],_0x349595[_0x892d('0x2e')]);_0x18d4dc[_0x892d('0x33')]=_[_0x892d('0x31')](_0x349595[_0x892d('0x32')],qs['fields'](_0x1c716e[_0x892d('0x2e')][_0x892d('0x34')]));_0x18d4dc['attributes']=_0x18d4dc['attributes']['length']?_0x18d4dc[_0x892d('0x33')]:_0x349595['model'];_0x18d4dc[_0x892d('0x38')]=qs['sort'](_0x1c716e[_0x892d('0x2e')]['sort']);_0x18d4dc[_0x892d('0x3a')]=qs['filters'](_[_0x892d('0x3b')](_0x1c716e[_0x892d('0x2e')],_0x349595['filters']));if(_0x1c716e[_0x892d('0x2e')][_0x892d('0x59')]){_0x18d4dc[_0x892d('0x3a')]=_[_0x892d('0x3c')](_0x18d4dc[_0x892d('0x3a')],{'$or':_[_0x892d('0x29')](_0x18d4dc[_0x892d('0x33')],function(_0x45ef94){var _0xd5ce45={};_0xd5ce45[_0x45ef94]={'$like':'%'+_0x1c716e[_0x892d('0x2e')][_0x892d('0x59')]+'%'};return _0xd5ce45;})});}_0x18d4dc=_[_0x892d('0x3c')]({},_0x18d4dc,_0x1c716e[_0x892d('0x3e')]);return _0x239e9f[_0x892d('0x81')](_0x18d4dc);}})[_0x892d('0x22')](function(_0x15c440){if(_0x15c440){_0x33fa9c=_0x15c440['length'];if(!_0x1c716e['query'][_0x892d('0x60')]('nolimit')){_0x18d4dc[_0x892d('0x37')]=qs['limit'](_0x1c716e['query'][_0x892d('0x37')]);_0x18d4dc[_0x892d('0x1b')]=qs[_0x892d('0x1b')](_0x1c716e[_0x892d('0x2e')]['offset']);}return _0x239e9f[_0x892d('0x81')](_0x18d4dc);}})[_0x892d('0x22')](function(_0x4ca450){if(_0x4ca450){return _0x4ca450?{'count':_0x33fa9c,'rows':_0x4ca450}:null;}})[_0x892d('0x22')](respondWithResult(_0xbf6b14,null))[_0x892d('0x43')](handleError(_0xbf6b14,null));};exports[_0x892d('0x82')]=function(_0x3728f,_0x14bb35,_0x3726e2){var _0xed3a8a,_0x7e6d96;return db['Campaign'][_0x892d('0x46')]({'where':{'id':_0x3728f[_0x892d('0x45')]['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x14bb35,null))[_0x892d('0x22')](function(_0xc94a93){if(_0xc94a93){_0x7e6d96=_0xc94a93;return _0xc94a93[_0x892d('0x82')](_0x3728f[_0x892d('0x48')]['ids'],_['omit'](_0x3728f[_0x892d('0x48')],['ids','id'])||{});}return null;})[_0x892d('0x65')](function(_0x5f02c6){var _0x4d19c5;_0xed3a8a=_0x5f02c6||[];var _0x9cf03d=[];if(_0x5f02c6){for(var _0x56d130=0x0;_0x56d130<_0x5f02c6[_0x892d('0x35')];_0x56d130+=0x1){var _0xe07a77=_0x5f02c6[_0x56d130]['get']({'plain':!![]});_0x4d19c5=squel[_0x892d('0x67')]()[_0x892d('0x68')]('cm_hopper_black')[_0x892d('0x69')](['phone',_0x892d('0x6c'),'ListId',_0x892d('0x58'),_0x892d('0x51'),'updatedAt'],squel[_0x892d('0x7a')]()[_0x892d('0x6d')]('phone',_0x892d('0x6a'))[_0x892d('0x6d')]('id',_0x892d('0x6c'))[_0x892d('0x6d')](_0xe07a77[_0x892d('0x6e')]['toString'](),'ListId')[_0x892d('0x6d')](_0x3728f['params']['id'][_0x892d('0x6f')](),_0x892d('0x58'))[_0x892d('0x6d')](_0x892d('0x71'),_0x892d('0x51'))[_0x892d('0x6d')](_0x892d('0x71'),_0x892d('0x52'))[_0x892d('0x72')](_0x892d('0x7e'))[_0x892d('0x3a')](_0x892d('0x73'))['where'](_0x892d('0x74'),_0xe07a77[_0x892d('0x6e')][_0x892d('0x6f')]())[_0x892d('0x3a')](_0x892d('0x75')))['toString']();_0x9cf03d['push'](db[_0x892d('0x83')][_0x892d('0x2e')](_0x4d19c5));}return BPromise[_0x892d('0x84')](_0x9cf03d);}})[_0x892d('0x22')](function(){return _0xed3a8a;})[_0x892d('0x22')](respondWithResult(_0x14bb35,null))[_0x892d('0x43')](handleError(_0x14bb35,null));};exports['removeBlackLists']=function(_0x2de2c0,_0x59eef4,_0x4d101f){return db['Campaign']['find']({'where':{'id':_0x2de2c0['params']['id']}})[_0x892d('0x22')](handleEntityNotFound(_0x59eef4,null))['then'](function(_0x396403){if(_0x396403){return _0x396403[_0x892d('0x85')](_0x2de2c0[_0x892d('0x2e')][_0x892d('0x64')]);}})[_0x892d('0x22')](function(_0x5e69e6){if(_0x5e69e6){return db[_0x892d('0x5f')][_0x892d('0x23')]({'where':{'ListId':_0x2de2c0[_0x892d('0x2e')][_0x892d('0x64')],'CampaignId':_0x2de2c0[_0x892d('0x45')]['id']}})[_0x892d('0x22')](function(){return _0x5e69e6;});}})[_0x892d('0x22')](respondWithStatusCode(_0x59eef4,null))[_0x892d('0x43')](handleError(_0x59eef4,null));};
\ No newline at end of file
index 5319f76..7478648 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x40d46b,_0x5a76c1){var _0x2716cd=function(_0xde0d39){while(--_0xde0d39){_0x40d46b['push'](_0x40d46b['shift']());}};_0x2716cd(++_0x5a76c1);}(_0x7a54,0x106));var _0x47a5=function(_0xe4efb4,_0x5545ed){_0xe4efb4=_0xe4efb4-0x0;var _0x25b53c=_0x7a54[_0xe4efb4];return _0x25b53c;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x38a3d6,_0x52e305){var _0x3768d7=function(_0x1af8a9){while(--_0x1af8a9){_0x38a3d6['push'](_0x38a3d6['shift']());}};_0x3768d7(++_0x52e305);}(_0x7a54,0x106));var _0x47a5=function(_0x5404cb,_0x2df44c){_0x5404cb=_0x5404cb-0x0;var _0x2b8610=_0x7a54[_0x5404cb];return _0x2b8610;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f3a771..2569a60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9f9=['code','message','findAll','options','where','include','map','model','attributes','GetCampaign','debug','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1e1965,_0x55785c){var _0x1a2e96=function(_0x27d366){while(--_0x27d366){_0x1e1965['push'](_0x1e1965['shift']());}};_0x1a2e96(++_0x55785c);}(_0xe9f9,0x174));var _0x9e9f=function(_0x1bfcce,_0x39c6ad){_0x1bfcce=_0x1bfcce-0x0;var _0x5d4b0c=_0xe9f9[_0x1bfcce];return _0x5d4b0c;};'use strict';var _=require(_0x9e9f('0x0'));var util=require('util');var moment=require(_0x9e9f('0x1'));var BPromise=require(_0x9e9f('0x2'));var rs=require(_0x9e9f('0x3'));var fs=require('fs');var Redis=require(_0x9e9f('0x4'));var db=require(_0x9e9f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9e9f('0x6'))('rpc');var config=require(_0x9e9f('0x7'));var jayson=require(_0x9e9f('0x8'));var client=jayson['client'][_0x9e9f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x54f87c,_0x310be8,_0x661886){return new BPromise(function(_0x10d43b,_0x5256b3){return client[_0x9e9f('0xa')](_0x54f87c,_0x661886)[_0x9e9f('0xb')](function(_0x2e1e8e){logger[_0x9e9f('0xc')](_0x9e9f('0xd'),_0x310be8,_0x9e9f('0xe'));logger['debug'](_0x9e9f('0xf'),_0x310be8,_0x9e9f('0xe'),JSON[_0x9e9f('0x10')](_0x2e1e8e));if(_0x2e1e8e['error']){if(_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x12')]===0x1f4){logger[_0x9e9f('0x11')](_0x9e9f('0xd'),_0x310be8,_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x13')]);return _0x5256b3(_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x13')]);}logger[_0x9e9f('0x11')]('Campaign,\x20%s,\x20%s',_0x310be8,_0x2e1e8e['error'][_0x9e9f('0x13')]);return _0x10d43b(_0x2e1e8e[_0x9e9f('0x11')][_0x9e9f('0x13')]);}else{logger[_0x9e9f('0xc')](_0x9e9f('0xd'),_0x310be8,_0x9e9f('0xe'));_0x10d43b(_0x2e1e8e['result'][_0x9e9f('0x13')]);}})['catch'](function(_0x38897c){logger['error']('Campaign,\x20%s,\x20%s',_0x310be8,_0x38897c);_0x5256b3(_0x38897c);});});}exports['GetCampaign']=function(_0x3e1c64){var _0x4576ed=this;return new Promise(function(_0xfadc07,_0x21f5b7){return db['Campaign'][_0x9e9f('0x14')]({'raw':_0x3e1c64[_0x9e9f('0x15')]?_0x3e1c64[_0x9e9f('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3e1c64[_0x9e9f('0x15')]?_0x3e1c64[_0x9e9f('0x15')][_0x9e9f('0x16')]||null:null,'attributes':_0x3e1c64[_0x9e9f('0x15')]?_0x3e1c64['options']['attributes']||null:null,'limit':_0x3e1c64[_0x9e9f('0x15')]?_0x3e1c64[_0x9e9f('0x15')]['limit']||null:null,'include':_0x3e1c64[_0x9e9f('0x15')]?_0x3e1c64[_0x9e9f('0x15')][_0x9e9f('0x17')]?_[_0x9e9f('0x18')](_0x3e1c64['options'][_0x9e9f('0x17')],function(_0x1172c2){return{'model':db[_0x1172c2['model']],'as':_0x1172c2['as'],'attributes':_0x1172c2['attributes'],'include':_0x1172c2[_0x9e9f('0x17')]?_[_0x9e9f('0x18')](_0x1172c2['include'],function(_0x172dd1){return{'model':db[_0x172dd1[_0x9e9f('0x19')]],'as':_0x172dd1['as'],'attributes':_0x172dd1['attributes'],'include':_0x172dd1[_0x9e9f('0x17')]?_[_0x9e9f('0x18')](_0x172dd1['include'],function(_0x5cdfe6){return{'model':db[_0x5cdfe6[_0x9e9f('0x19')]],'as':_0x5cdfe6['as'],'attributes':_0x5cdfe6[_0x9e9f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9e9f('0xb')](function(_0xc12c4c){logger['info'](_0x9e9f('0x1b'),_0x3e1c64);logger[_0x9e9f('0x1c')](_0x9e9f('0x1b'),_0x3e1c64,JSON['stringify'](_0xc12c4c));_0xfadc07(_0xc12c4c);})[_0x9e9f('0x1d')](function(_0xa3a2d7){logger[_0x9e9f('0x11')]('GetCampaign',_0xa3a2d7[_0x9e9f('0x13')],_0x3e1c64);_0x21f5b7(_0x4576ed[_0x9e9f('0x11')](0x1f4,_0xa3a2d7[_0x9e9f('0x13')]));});});};
\ No newline at end of file
+var _0x7868=['map','model','then','GetCampaign','debug','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Campaign,\x20%s,\x20%s','request\x20sent','error','code','message','catch','Campaign','findAll','options','raw','where','attributes','limit','include'];(function(_0x301b12,_0x2b27c3){var _0x5851c5=function(_0x5bc16b){while(--_0x5bc16b){_0x301b12['push'](_0x301b12['shift']());}};_0x5851c5(++_0x2b27c3);}(_0x7868,0x1c0));var _0x8786=function(_0x33abe8,_0x2e9e25){_0x33abe8=_0x33abe8-0x0;var _0x2c6ee4=_0x7868[_0x33abe8];return _0x2c6ee4;};'use strict';var _=require(_0x8786('0x0'));var util=require('util');var moment=require(_0x8786('0x1'));var BPromise=require(_0x8786('0x2'));var rs=require(_0x8786('0x3'));var fs=require('fs');var Redis=require(_0x8786('0x4'));var db=require(_0x8786('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8786('0x6'))(_0x8786('0x7'));var config=require(_0x8786('0x8'));var jayson=require(_0x8786('0x9'));var client=jayson[_0x8786('0xa')][_0x8786('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x251045,_0x3b65c3,_0xe4d300){return new BPromise(function(_0xe9a88d,_0x20b3ed){return client[_0x8786('0xc')](_0x251045,_0xe4d300)['then'](function(_0x5b241a){logger[_0x8786('0xd')](_0x8786('0xe'),_0x3b65c3,_0x8786('0xf'));logger['debug']('Campaign,\x20%s,\x20%s,\x20%s',_0x3b65c3,_0x8786('0xf'),JSON['stringify'](_0x5b241a));if(_0x5b241a[_0x8786('0x10')]){if(_0x5b241a[_0x8786('0x10')][_0x8786('0x11')]===0x1f4){logger[_0x8786('0x10')](_0x8786('0xe'),_0x3b65c3,_0x5b241a[_0x8786('0x10')]['message']);return _0x20b3ed(_0x5b241a[_0x8786('0x10')][_0x8786('0x12')]);}logger['error'](_0x8786('0xe'),_0x3b65c3,_0x5b241a[_0x8786('0x10')]['message']);return _0xe9a88d(_0x5b241a[_0x8786('0x10')][_0x8786('0x12')]);}else{logger[_0x8786('0xd')](_0x8786('0xe'),_0x3b65c3,'request\x20sent');_0xe9a88d(_0x5b241a['result']['message']);}})[_0x8786('0x13')](function(_0x450606){logger[_0x8786('0x10')](_0x8786('0xe'),_0x3b65c3,_0x450606);_0x20b3ed(_0x450606);});});}exports['GetCampaign']=function(_0x1b410a){var _0x3b9ff1=this;return new Promise(function(_0x316bf7,_0x359f68){return db[_0x8786('0x14')][_0x8786('0x15')]({'raw':_0x1b410a[_0x8786('0x16')]?_0x1b410a[_0x8786('0x16')][_0x8786('0x17')]===undefined?!![]:![]:!![],'where':_0x1b410a['options']?_0x1b410a[_0x8786('0x16')][_0x8786('0x18')]||null:null,'attributes':_0x1b410a[_0x8786('0x16')]?_0x1b410a[_0x8786('0x16')][_0x8786('0x19')]||null:null,'limit':_0x1b410a['options']?_0x1b410a[_0x8786('0x16')][_0x8786('0x1a')]||null:null,'include':_0x1b410a['options']?_0x1b410a[_0x8786('0x16')][_0x8786('0x1b')]?_[_0x8786('0x1c')](_0x1b410a['options']['include'],function(_0x529247){return{'model':db[_0x529247[_0x8786('0x1d')]],'as':_0x529247['as'],'attributes':_0x529247[_0x8786('0x19')],'include':_0x529247[_0x8786('0x1b')]?_['map'](_0x529247[_0x8786('0x1b')],function(_0x42555b){return{'model':db[_0x42555b[_0x8786('0x1d')]],'as':_0x42555b['as'],'attributes':_0x42555b[_0x8786('0x19')],'include':_0x42555b[_0x8786('0x1b')]?_['map'](_0x42555b['include'],function(_0x30091c){return{'model':db[_0x30091c[_0x8786('0x1d')]],'as':_0x30091c['as'],'attributes':_0x30091c[_0x8786('0x19')]};}):[]};}):[]};}):[]:[]})[_0x8786('0x1e')](function(_0x15bc46){logger[_0x8786('0xd')](_0x8786('0x1f'),_0x1b410a);logger[_0x8786('0x20')](_0x8786('0x1f'),_0x1b410a,JSON[_0x8786('0x21')](_0x15bc46));_0x316bf7(_0x15bc46);})['catch'](function(_0x5b5af0){logger['error'](_0x8786('0x1f'),_0x5b5af0['message'],_0x1b410a);_0x359f68(_0x3b9ff1[_0x8786('0x10')](0x1f4,_0x5b5af0[_0x8786('0x12')]));});});};
\ No newline at end of file
index 4b5fc4e..212c97d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccbe=['getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addLists','put','/:id','update','delete','destroy','removeBlackLists','exports','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xccbe,0xa4));var _0xeccb=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0xccbe[_0x33fcbb];return _0x2efe40;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xeccb('0x0'));var timeout=require(_0xeccb('0x1'));var express=require('express');var router=express[_0xeccb('0x2')]();var fs_extra=require(_0xeccb('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xeccb('0x4'));var config=require(_0xeccb('0x5'));var controller=require('./campaign.controller');router[_0xeccb('0x6')]('/',auth[_0xeccb('0x7')](),controller[_0xeccb('0x8')]);router['get']('/:id',auth[_0xeccb('0x7')](),controller['show']);router[_0xeccb('0x6')]('/:id/hoppers',auth[_0xeccb('0x7')](),controller[_0xeccb('0x9')]);router[_0xeccb('0x6')](_0xeccb('0xa'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xeccb('0x6')](_0xeccb('0xb'),auth[_0xeccb('0x7')](),controller[_0xeccb('0xc')]);router[_0xeccb('0x6')](_0xeccb('0xd'),auth[_0xeccb('0x7')](),controller[_0xeccb('0xe')]);router[_0xeccb('0x6')](_0xeccb('0xf'),auth[_0xeccb('0x7')](),controller[_0xeccb('0x10')]);router[_0xeccb('0x6')](_0xeccb('0x11'),auth[_0xeccb('0x7')](),controller[_0xeccb('0x12')]);router[_0xeccb('0x13')]('/',auth[_0xeccb('0x7')](),controller['create']);router['post'](_0xeccb('0x14'),auth['isAuthenticated'](),controller[_0xeccb('0x15')]);router[_0xeccb('0x13')](_0xeccb('0xf'),auth['isAuthenticated'](),controller[_0xeccb('0x16')]);router[_0xeccb('0x13')](_0xeccb('0x11'),auth[_0xeccb('0x7')](),controller['addBlackLists']);router[_0xeccb('0x17')](_0xeccb('0x18'),auth[_0xeccb('0x7')](),controller[_0xeccb('0x19')]);router[_0xeccb('0x1a')](_0xeccb('0x18'),auth[_0xeccb('0x7')](),controller[_0xeccb('0x1b')]);router['delete'](_0xeccb('0xf'),auth[_0xeccb('0x7')](),controller['removeLists']);router['delete'](_0xeccb('0x11'),auth[_0xeccb('0x7')](),controller[_0xeccb('0x1c')]);module[_0xeccb('0x1d')]=router;
\ No newline at end of file
+var _0x963a=['/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','addBlackLists','put','delete','destroy','removeLists','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','isAuthenticated','get','/:id','show'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x963a,0xbe));var _0xa963=function(_0xf41872,_0x4a1001){_0xf41872=_0xf41872-0x0;var _0x1cd227=_0x963a[_0xf41872];return _0x1cd227;};'use strict';var multer=require(_0xa963('0x0'));var util=require(_0xa963('0x1'));var path=require(_0xa963('0x2'));var timeout=require(_0xa963('0x3'));var express=require(_0xa963('0x4'));var router=express[_0xa963('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa963('0x6'));var interaction=require(_0xa963('0x7'));var config=require(_0xa963('0x8'));var controller=require(_0xa963('0x9'));router['get']('/',auth[_0xa963('0xa')](),controller['index']);router[_0xa963('0xb')](_0xa963('0xc'),auth[_0xa963('0xa')](),controller[_0xa963('0xd')]);router[_0xa963('0xb')](_0xa963('0xe'),auth['isAuthenticated'](),controller[_0xa963('0xf')]);router[_0xa963('0xb')](_0xa963('0x10'),auth['isAuthenticated'](),controller[_0xa963('0x11')]);router[_0xa963('0xb')](_0xa963('0x12'),auth['isAuthenticated'](),controller[_0xa963('0x13')]);router['get'](_0xa963('0x14'),auth['isAuthenticated'](),controller[_0xa963('0x15')]);router[_0xa963('0xb')](_0xa963('0x16'),auth[_0xa963('0xa')](),controller[_0xa963('0x17')]);router['get'](_0xa963('0x18'),auth[_0xa963('0xa')](),controller[_0xa963('0x19')]);router[_0xa963('0x1a')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa963('0x1a')](_0xa963('0x1b'),auth[_0xa963('0xa')](),controller['clone']);router[_0xa963('0x1a')](_0xa963('0x16'),auth[_0xa963('0xa')](),controller['addLists']);router[_0xa963('0x1a')](_0xa963('0x18'),auth[_0xa963('0xa')](),controller[_0xa963('0x1c')]);router[_0xa963('0x1d')](_0xa963('0xc'),auth[_0xa963('0xa')](),controller['update']);router[_0xa963('0x1e')](_0xa963('0xc'),auth[_0xa963('0xa')](),controller[_0xa963('0x1f')]);router['delete'](_0xa963('0x16'),auth[_0xa963('0xa')](),controller[_0xa963('0x20')]);router[_0xa963('0x1e')]('/:id/blacklists',auth[_0xa963('0xa')](),controller['removeBlackLists']);module[_0xa963('0x21')]=router;
\ No newline at end of file
index 1ad8fc5..7539457 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x332c=['key','exports','STRING','TEXT','VIRTUAL','getDataValue'];(function(_0xb3b452,_0x582e8e){var _0x238983=function(_0x3bc866){while(--_0x3bc866){_0xb3b452['push'](_0xb3b452['shift']());}};_0x238983(++_0x582e8e);}(_0x332c,0x139));var _0xc332=function(_0x5ab35a,_0x3a22e0){_0x5ab35a=_0x5ab35a-0x0;var _0x3b59ad=_0x332c[_0x5ab35a];return _0x3b59ad;};'use strict';var Sequelize=require('sequelize');module[_0xc332('0x0')]={'key':{'type':Sequelize[_0xc332('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xc332('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xc332('0x1')]},'name':{'type':Sequelize[_0xc332('0x3')],'get':function(){return this[_0xc332('0x4')](_0xc332('0x5'));}}};
\ No newline at end of file
+var _0x777e=['sequelize','exports','TEXT','STRING','VIRTUAL','getDataValue','key'];(function(_0xa7429c,_0x3f6c95){var _0x57aacc=function(_0x276abe){while(--_0x276abe){_0xa7429c['push'](_0xa7429c['shift']());}};_0x57aacc(++_0x3f6c95);}(_0x777e,0x134));var _0xe777=function(_0x2c6760,_0x487080){_0x2c6760=_0x2c6760-0x0;var _0x704576=_0x777e[_0x2c6760];return _0x704576;};'use strict';var Sequelize=require(_0xe777('0x0'));module[_0xe777('0x1')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xe777('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xe777('0x3')]},'name':{'type':Sequelize[_0xe777('0x4')],'get':function(){return this[_0xe777('0x5')](_0xe777('0x6'));}}};
\ No newline at end of file
index cbf0266..0a9a337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc590=['includeAll','include','findAll','rows','catch','show','find','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','CannedAnswers','UserProfileResource','stack','name','send','index','map','CannedAnswer','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge'];(function(_0x622035,_0x1a4b91){var _0x326cf2=function(_0x5c3002){while(--_0x5c3002){_0x622035['push'](_0x622035['shift']());}};_0x326cf2(++_0x1a4b91);}(_0xc590,0x71));var _0x0c59=function(_0x4fea1a,_0x4587fd){_0x4fea1a=_0x4fea1a-0x0;var _0x5788f1=_0xc590[_0x4fea1a];return _0x5788f1;};'use strict';var emlformat=require(_0x0c59('0x0'));var rimraf=require(_0x0c59('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0c59('0x2'));var rp=require(_0x0c59('0x3'));var moment=require('moment');var BPromise=require(_0x0c59('0x4'));var Mustache=require(_0x0c59('0x5'));var util=require(_0x0c59('0x6'));var path=require(_0x0c59('0x7'));var sox=require(_0x0c59('0x8'));var csv=require('to-csv');var ejs=require(_0x0c59('0x9'));var fs=require('fs');var fs_extra=require(_0x0c59('0xa'));var _=require(_0x0c59('0xb'));var squel=require(_0x0c59('0xc'));var crypto=require(_0x0c59('0xd'));var jsforce=require(_0x0c59('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0c59('0xf'));var Papa=require('papaparse');var Redis=require(_0x0c59('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x0c59('0x11'));var hardwareService=require(_0x0c59('0x12'));var logger=require(_0x0c59('0x13'))(_0x0c59('0x14'));var utils=require('../../config/utils');var config=require(_0x0c59('0x15'));var licenseUtil=require(_0x0c59('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcc0dfc,_0x2a6b9c){_0x2a6b9c=_0x2a6b9c||0xcc;return function(_0x3d87d8){if(_0x3d87d8){return _0xcc0dfc[_0x0c59('0x17')](_0x2a6b9c);}return _0xcc0dfc[_0x0c59('0x18')](_0x2a6b9c)['end']();};}function respondWithResult(_0x2ac27f,_0x1ff71d){_0x1ff71d=_0x1ff71d||0xc8;return function(_0x87fdec){if(_0x87fdec){return _0x2ac27f[_0x0c59('0x18')](_0x1ff71d)[_0x0c59('0x19')](_0x87fdec);}};}function respondWithFilteredResult(_0x5a366c,_0x4c5279){return function(_0x2ee476){if(_0x2ee476){var _0xe8911b=typeof _0x4c5279[_0x0c59('0x1a')]===_0x0c59('0x1b')&&typeof _0x4c5279['limit']===_0x0c59('0x1b');var _0x70b48a=_0x2ee476[_0x0c59('0x1c')];var _0x12f85f=_0xe8911b?0x0:_0x4c5279[_0x0c59('0x1a')];var _0x133067=_0xe8911b?_0x2ee476[_0x0c59('0x1c')]:_0x4c5279['offset']+_0x4c5279['limit'];var _0x2c6dec;if(_0x133067>=_0x70b48a){_0x133067=_0x70b48a;_0x2c6dec=0xc8;}else{_0x2c6dec=0xce;}_0x5a366c[_0x0c59('0x18')](_0x2c6dec);return _0x5a366c[_0x0c59('0x1d')](_0x0c59('0x1e'),_0x12f85f+'-'+_0x133067+'/'+_0x70b48a)[_0x0c59('0x19')](_0x2ee476);}return null;};}function patchUpdates(_0x45c9ab){return function(_0x2f9405){try{jsonpatch[_0x0c59('0x1f')](_0x2f9405,_0x45c9ab,!![]);}catch(_0x40e3d7){return BPromise[_0x0c59('0x20')](_0x40e3d7);}return _0x2f9405[_0x0c59('0x21')]();};}function saveUpdates(_0x168d29,_0xd9ef51){return function(_0x243206){if(_0x243206){return _0x243206[_0x0c59('0x22')](_0x168d29)[_0x0c59('0x23')](function(_0x5a8ee6){return _0x5a8ee6;});}return null;};}function removeEntity(_0x250a7b,_0x52adef){return function(_0x3c46bf){if(_0x3c46bf){return _0x3c46bf[_0x0c59('0x24')]()['then'](function(){var _0x29972d=_0x3c46bf['get']({'plain':!![]});var _0x40f03f=_0x0c59('0x25');return db[_0x0c59('0x26')][_0x0c59('0x24')]({'where':{'type':_0x40f03f,'resourceId':_0x29972d['id']}})[_0x0c59('0x23')](function(){return _0x3c46bf;});})[_0x0c59('0x23')](function(){_0x250a7b[_0x0c59('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20fde9,_0x76b12d){return function(_0x127127){if(!_0x127127){_0x20fde9[_0x0c59('0x17')](0x194);}return _0x127127;};}function handleError(_0xee563e,_0x57423f){_0x57423f=_0x57423f||0x1f4;return function(_0x2dbed1){logger['error'](_0x2dbed1[_0x0c59('0x27')]);if(_0x2dbed1[_0x0c59('0x28')]){delete _0x2dbed1[_0x0c59('0x28')];}_0xee563e[_0x0c59('0x18')](_0x57423f)[_0x0c59('0x29')](_0x2dbed1);};}exports[_0x0c59('0x2a')]=function(_0x160996,_0x212948){var _0x1ebdb1={},_0x2b95bb={},_0x16dcc2={'count':0x0,'rows':[]};var _0xc05fd6=_[_0x0c59('0x2b')](db[_0x0c59('0x2c')][_0x0c59('0x2d')],function(_0x199e39){return{'name':_0x199e39['fieldName'],'type':_0x199e39[_0x0c59('0x2e')][_0x0c59('0x2f')]};});_0x2b95bb[_0x0c59('0x30')]=_[_0x0c59('0x2b')](_0xc05fd6,'name');_0x2b95bb['query']=_[_0x0c59('0x31')](_0x160996[_0x0c59('0x32')]);_0x2b95bb[_0x0c59('0x33')]=_[_0x0c59('0x34')](_0x2b95bb[_0x0c59('0x30')],_0x2b95bb[_0x0c59('0x32')]);_0x1ebdb1[_0x0c59('0x35')]=_[_0x0c59('0x34')](_0x2b95bb[_0x0c59('0x30')],qs[_0x0c59('0x36')](_0x160996['query']['fields']));_0x1ebdb1[_0x0c59('0x35')]=_0x1ebdb1[_0x0c59('0x35')][_0x0c59('0x37')]?_0x1ebdb1[_0x0c59('0x35')]:_0x2b95bb['model'];if(!_0x160996[_0x0c59('0x32')][_0x0c59('0x38')](_0x0c59('0x39'))){_0x1ebdb1[_0x0c59('0x3a')]=qs[_0x0c59('0x3a')](_0x160996['query'][_0x0c59('0x3a')]);_0x1ebdb1[_0x0c59('0x1a')]=qs[_0x0c59('0x1a')](_0x160996[_0x0c59('0x32')][_0x0c59('0x1a')]);}_0x1ebdb1[_0x0c59('0x3b')]=qs[_0x0c59('0x3c')](_0x160996[_0x0c59('0x32')][_0x0c59('0x3c')]);_0x1ebdb1[_0x0c59('0x3d')]=qs[_0x0c59('0x33')](_[_0x0c59('0x3e')](_0x160996['query'],_0x2b95bb['filters']),_0xc05fd6);if(_0x160996['query']['filter']){_0x1ebdb1[_0x0c59('0x3d')]=_['merge'](_0x1ebdb1[_0x0c59('0x3d')],{'$or':[{'key':{'$like':'%'+_0x160996[_0x0c59('0x32')]['filter']+'%'}},{'value':{'$like':'%'+_0x160996['query'][_0x0c59('0x3f')]+'%'}}]});}_0x1ebdb1=_[_0x0c59('0x40')]({},_0x1ebdb1,_0x160996['options']);var _0x290576={'where':_0x1ebdb1[_0x0c59('0x3d')]};return db[_0x0c59('0x2c')][_0x0c59('0x1c')](_0x290576)[_0x0c59('0x23')](function(_0x1d12f3){_0x16dcc2[_0x0c59('0x1c')]=_0x1d12f3;if(_0x160996['query'][_0x0c59('0x41')]){_0x1ebdb1[_0x0c59('0x42')]=[{'all':!![]}];}return db[_0x0c59('0x2c')][_0x0c59('0x43')](_0x1ebdb1);})[_0x0c59('0x23')](function(_0x944673){_0x16dcc2[_0x0c59('0x44')]=_0x944673;return _0x16dcc2;})[_0x0c59('0x23')](respondWithFilteredResult(_0x212948,_0x1ebdb1))[_0x0c59('0x45')](handleError(_0x212948,null));};exports[_0x0c59('0x46')]=function(_0x2f2715,_0x8630ed){var _0x3a38f0={'raw':!![],'where':{'id':_0x2f2715['params']['id']}},_0x8c4781={};_0x8c4781[_0x0c59('0x30')]=_['keys'](db[_0x0c59('0x2c')][_0x0c59('0x2d')]);_0x8c4781[_0x0c59('0x32')]=_[_0x0c59('0x31')](_0x2f2715[_0x0c59('0x32')]);_0x8c4781['filters']=_[_0x0c59('0x34')](_0x8c4781[_0x0c59('0x30')],_0x8c4781[_0x0c59('0x32')]);_0x3a38f0['attributes']=_[_0x0c59('0x34')](_0x8c4781[_0x0c59('0x30')],qs[_0x0c59('0x36')](_0x2f2715['query']['fields']));_0x3a38f0[_0x0c59('0x35')]=_0x3a38f0[_0x0c59('0x35')][_0x0c59('0x37')]?_0x3a38f0[_0x0c59('0x35')]:_0x8c4781[_0x0c59('0x30')];if(_0x2f2715['query'][_0x0c59('0x41')]){_0x3a38f0[_0x0c59('0x42')]=[{'all':!![]}];}_0x3a38f0=_[_0x0c59('0x40')]({},_0x3a38f0,_0x2f2715['options']);return db[_0x0c59('0x2c')][_0x0c59('0x47')](_0x3a38f0)[_0x0c59('0x23')](handleEntityNotFound(_0x8630ed,null))[_0x0c59('0x23')](respondWithResult(_0x8630ed,null))[_0x0c59('0x45')](handleError(_0x8630ed,null));};exports[_0x0c59('0x22')]=function(_0x249d08,_0x1ed537){if(_0x249d08[_0x0c59('0x48')]['id']){delete _0x249d08[_0x0c59('0x48')]['id'];}return db[_0x0c59('0x2c')][_0x0c59('0x47')]({'where':{'id':_0x249d08[_0x0c59('0x49')]['id']}})['then'](handleEntityNotFound(_0x1ed537,null))[_0x0c59('0x23')](saveUpdates(_0x249d08[_0x0c59('0x48')],null))[_0x0c59('0x23')](respondWithResult(_0x1ed537,null))[_0x0c59('0x45')](handleError(_0x1ed537,null));};exports[_0x0c59('0x24')]=function(_0xe2e23c,_0x1c2071){return db[_0x0c59('0x2c')]['find']({'where':{'id':_0xe2e23c[_0x0c59('0x49')]['id']}})[_0x0c59('0x23')](handleEntityNotFound(_0x1c2071,null))['then'](removeEntity(_0x1c2071,null))[_0x0c59('0x45')](handleError(_0x1c2071,null));};exports[_0x0c59('0x4a')]=function(_0x2de6e4,_0x5b7e0d){var _0x13ff3d={'key':_0x2de6e4[_0x0c59('0x48')][_0x0c59('0x2f')]};if(_0x2de6e4[_0x0c59('0x48')]['MailAccountId']){_0x13ff3d['MailAccountId']=_0x2de6e4[_0x0c59('0x48')][_0x0c59('0x4b')];}else if(_0x2de6e4['body'][_0x0c59('0x4c')]){_0x13ff3d[_0x0c59('0x4c')]=_0x2de6e4[_0x0c59('0x48')]['SmsAccountId'];}else if(_0x2de6e4[_0x0c59('0x48')][_0x0c59('0x4d')]){_0x13ff3d[_0x0c59('0x4d')]=_0x2de6e4[_0x0c59('0x48')]['OpenchannelAccountId'];}else if(_0x2de6e4[_0x0c59('0x48')][_0x0c59('0x4e')]){_0x13ff3d[_0x0c59('0x4e')]=_0x2de6e4[_0x0c59('0x48')][_0x0c59('0x4e')];}return db['CannedAnswer'][_0x0c59('0x47')]({'where':_0x13ff3d})[_0x0c59('0x23')](function(_0x42d015){if(_0x42d015){throw new db['Sequelize'][(_0x0c59('0x4f'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x0c59('0x2c')][_0x0c59('0x4a')](_0x2de6e4['body']);})[_0x0c59('0x23')](function(_0x372e4a){var _0x3b2e65=_0x2de6e4[_0x0c59('0x50')][_0x0c59('0x51')]({'plain':!![]});if(!_0x3b2e65)throw new Error(_0x0c59('0x52'));if(_0x3b2e65[_0x0c59('0x53')]===_0x0c59('0x50')){var _0x4088c3=_0x372e4a[_0x0c59('0x51')]({'plain':!![]});return db[_0x0c59('0x54')][_0x0c59('0x47')]({'where':{'name':_0x0c59('0x25'),'userProfileId':_0x3b2e65[_0x0c59('0x55')]},'raw':!![]})[_0x0c59('0x23')](function(_0x3712fd){if(_0x3712fd&&_0x3712fd[_0x0c59('0x56')]===0x0){return db[_0x0c59('0x26')][_0x0c59('0x4a')]({'name':_0x4088c3[_0x0c59('0x28')],'resourceId':_0x4088c3['id'],'type':_0x3712fd[_0x0c59('0x28')],'sectionId':_0x3712fd['id']},{})['then'](function(){return _0x372e4a;});}else{return _0x372e4a;}})[_0x0c59('0x45')](function(_0x2eca08){logger[_0x0c59('0x57')](_0x0c59('0x58'),_0x2eca08);throw _0x2eca08;});}return _0x372e4a;})[_0x0c59('0x23')](respondWithResult(_0x5b7e0d,0xc9))[_0x0c59('0x45')](handleError(_0x5b7e0d,null));};
\ No newline at end of file
+var _0x6226=['../../config/logger','api','../../config/utils','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','destroy','then','get','sendStatus','error','stack','name','send','index','map','CannedAnswer','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','where','merge','filter','options','includeAll','include','rows','catch','params','length','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','Sequelize','ValidationError','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x25e934,_0x4757dd){var _0x162c25=function(_0x5c8c4e){while(--_0x5c8c4e){_0x25e934['push'](_0x25e934['shift']());}};_0x162c25(++_0x4757dd);}(_0x6226,0x14a));var _0x6622=function(_0x4d82e4,_0x3cf5be){_0x4d82e4=_0x4d82e4-0x0;var _0x3a3c8b=_0x6226[_0x4d82e4];return _0x3a3c8b;};'use strict';var emlformat=require(_0x6622('0x0'));var rimraf=require(_0x6622('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6622('0x2'));var rp=require(_0x6622('0x3'));var moment=require(_0x6622('0x4'));var BPromise=require(_0x6622('0x5'));var Mustache=require(_0x6622('0x6'));var util=require(_0x6622('0x7'));var path=require(_0x6622('0x8'));var sox=require(_0x6622('0x9'));var csv=require(_0x6622('0xa'));var ejs=require(_0x6622('0xb'));var fs=require('fs');var fs_extra=require(_0x6622('0xc'));var _=require(_0x6622('0xd'));var squel=require('squel');var crypto=require(_0x6622('0xe'));var jsforce=require(_0x6622('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6622('0x10'));var Papa=require(_0x6622('0x11'));var Redis=require(_0x6622('0x12'));var authService=require(_0x6622('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x6622('0x14'));var hardwareService=require(_0x6622('0x15'));var logger=require(_0x6622('0x16'))(_0x6622('0x17'));var utils=require(_0x6622('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bfe80,_0x2e44db){_0x2e44db=_0x2e44db||0xcc;return function(_0x6e2968){if(_0x6e2968){return _0x5bfe80['sendStatus'](_0x2e44db);}return _0x5bfe80[_0x6622('0x19')](_0x2e44db)[_0x6622('0x1a')]();};}function respondWithResult(_0x6cc572,_0x55df80){_0x55df80=_0x55df80||0xc8;return function(_0x4498cf){if(_0x4498cf){return _0x6cc572['status'](_0x55df80)[_0x6622('0x1b')](_0x4498cf);}};}function respondWithFilteredResult(_0x29435a,_0x57f44f){return function(_0x4b1c4e){if(_0x4b1c4e){var _0xb4982c=typeof _0x57f44f[_0x6622('0x1c')]==='undefined'&&typeof _0x57f44f[_0x6622('0x1d')]===_0x6622('0x1e');var _0x991ff1=_0x4b1c4e['count'];var _0x334e4d=_0xb4982c?0x0:_0x57f44f[_0x6622('0x1c')];var _0x4cbed3=_0xb4982c?_0x4b1c4e[_0x6622('0x1f')]:_0x57f44f[_0x6622('0x1c')]+_0x57f44f[_0x6622('0x1d')];var _0x31f0e7;if(_0x4cbed3>=_0x991ff1){_0x4cbed3=_0x991ff1;_0x31f0e7=0xc8;}else{_0x31f0e7=0xce;}_0x29435a[_0x6622('0x19')](_0x31f0e7);return _0x29435a['set'](_0x6622('0x20'),_0x334e4d+'-'+_0x4cbed3+'/'+_0x991ff1)['json'](_0x4b1c4e);}return null;};}function patchUpdates(_0x49cfce){return function(_0x33b7b6){try{jsonpatch[_0x6622('0x21')](_0x33b7b6,_0x49cfce,!![]);}catch(_0x55de9f){return BPromise[_0x6622('0x22')](_0x55de9f);}return _0x33b7b6[_0x6622('0x23')]();};}function saveUpdates(_0x11ec7b,_0x4de187){return function(_0x24742a){if(_0x24742a){return _0x24742a[_0x6622('0x24')](_0x11ec7b)['then'](function(_0x528b90){return _0x528b90;});}return null;};}function removeEntity(_0x5e5485,_0x23397e){return function(_0x2497c8){if(_0x2497c8){return _0x2497c8[_0x6622('0x25')]()[_0x6622('0x26')](function(){var _0x2c1650=_0x2497c8[_0x6622('0x27')]({'plain':!![]});var _0x1b5cb5='CannedAnswers';return db['UserProfileResource'][_0x6622('0x25')]({'where':{'type':_0x1b5cb5,'resourceId':_0x2c1650['id']}})['then'](function(){return _0x2497c8;});})[_0x6622('0x26')](function(){_0x5e5485['status'](0xcc)[_0x6622('0x1a')]();});}};}function handleEntityNotFound(_0x44d322,_0x269e10){return function(_0x214b51){if(!_0x214b51){_0x44d322[_0x6622('0x28')](0x194);}return _0x214b51;};}function handleError(_0x2c9005,_0x202975){_0x202975=_0x202975||0x1f4;return function(_0x5791f6){logger[_0x6622('0x29')](_0x5791f6[_0x6622('0x2a')]);if(_0x5791f6[_0x6622('0x2b')]){delete _0x5791f6[_0x6622('0x2b')];}_0x2c9005[_0x6622('0x19')](_0x202975)[_0x6622('0x2c')](_0x5791f6);};}exports[_0x6622('0x2d')]=function(_0x2d96c4,_0x259998){var _0x27de1f={},_0x5ee07c={},_0x74beed={'count':0x0,'rows':[]};var _0x275696=_[_0x6622('0x2e')](db[_0x6622('0x2f')][_0x6622('0x30')],function(_0x652181){return{'name':_0x652181['fieldName'],'type':_0x652181[_0x6622('0x31')][_0x6622('0x32')]};});_0x5ee07c[_0x6622('0x33')]=_[_0x6622('0x2e')](_0x275696,_0x6622('0x2b'));_0x5ee07c[_0x6622('0x34')]=_[_0x6622('0x35')](_0x2d96c4['query']);_0x5ee07c[_0x6622('0x36')]=_[_0x6622('0x37')](_0x5ee07c[_0x6622('0x33')],_0x5ee07c[_0x6622('0x34')]);_0x27de1f[_0x6622('0x38')]=_['intersection'](_0x5ee07c['model'],qs[_0x6622('0x39')](_0x2d96c4[_0x6622('0x34')][_0x6622('0x39')]));_0x27de1f['attributes']=_0x27de1f[_0x6622('0x38')]['length']?_0x27de1f[_0x6622('0x38')]:_0x5ee07c[_0x6622('0x33')];if(!_0x2d96c4[_0x6622('0x34')][_0x6622('0x3a')](_0x6622('0x3b'))){_0x27de1f[_0x6622('0x1d')]=qs[_0x6622('0x1d')](_0x2d96c4[_0x6622('0x34')][_0x6622('0x1d')]);_0x27de1f[_0x6622('0x1c')]=qs[_0x6622('0x1c')](_0x2d96c4[_0x6622('0x34')][_0x6622('0x1c')]);}_0x27de1f['order']=qs['sort'](_0x2d96c4[_0x6622('0x34')][_0x6622('0x3c')]);_0x27de1f['where']=qs[_0x6622('0x36')](_[_0x6622('0x3d')](_0x2d96c4[_0x6622('0x34')],_0x5ee07c['filters']),_0x275696);if(_0x2d96c4[_0x6622('0x34')]['filter']){_0x27de1f[_0x6622('0x3e')]=_[_0x6622('0x3f')](_0x27de1f[_0x6622('0x3e')],{'$or':[{'key':{'$like':'%'+_0x2d96c4['query']['filter']+'%'}},{'value':{'$like':'%'+_0x2d96c4[_0x6622('0x34')][_0x6622('0x40')]+'%'}}]});}_0x27de1f=_[_0x6622('0x3f')]({},_0x27de1f,_0x2d96c4[_0x6622('0x41')]);var _0x4e70bf={'where':_0x27de1f['where']};return db[_0x6622('0x2f')][_0x6622('0x1f')](_0x4e70bf)[_0x6622('0x26')](function(_0x563dbd){_0x74beed[_0x6622('0x1f')]=_0x563dbd;if(_0x2d96c4['query'][_0x6622('0x42')]){_0x27de1f[_0x6622('0x43')]=[{'all':!![]}];}return db[_0x6622('0x2f')]['findAll'](_0x27de1f);})[_0x6622('0x26')](function(_0x3bdb78){_0x74beed[_0x6622('0x44')]=_0x3bdb78;return _0x74beed;})[_0x6622('0x26')](respondWithFilteredResult(_0x259998,_0x27de1f))[_0x6622('0x45')](handleError(_0x259998,null));};exports['show']=function(_0xe29080,_0x57aba1){var _0x11e992={'raw':!![],'where':{'id':_0xe29080[_0x6622('0x46')]['id']}},_0x4398d3={};_0x4398d3[_0x6622('0x33')]=_[_0x6622('0x35')](db['CannedAnswer'][_0x6622('0x30')]);_0x4398d3['query']=_[_0x6622('0x35')](_0xe29080[_0x6622('0x34')]);_0x4398d3[_0x6622('0x36')]=_[_0x6622('0x37')](_0x4398d3['model'],_0x4398d3[_0x6622('0x34')]);_0x11e992[_0x6622('0x38')]=_[_0x6622('0x37')](_0x4398d3[_0x6622('0x33')],qs['fields'](_0xe29080[_0x6622('0x34')][_0x6622('0x39')]));_0x11e992[_0x6622('0x38')]=_0x11e992['attributes'][_0x6622('0x47')]?_0x11e992[_0x6622('0x38')]:_0x4398d3[_0x6622('0x33')];if(_0xe29080[_0x6622('0x34')][_0x6622('0x42')]){_0x11e992['include']=[{'all':!![]}];}_0x11e992=_[_0x6622('0x3f')]({},_0x11e992,_0xe29080['options']);return db['CannedAnswer'][_0x6622('0x48')](_0x11e992)[_0x6622('0x26')](handleEntityNotFound(_0x57aba1,null))[_0x6622('0x26')](respondWithResult(_0x57aba1,null))[_0x6622('0x45')](handleError(_0x57aba1,null));};exports[_0x6622('0x24')]=function(_0x149189,_0x17c9a4){if(_0x149189[_0x6622('0x49')]['id']){delete _0x149189[_0x6622('0x49')]['id'];}return db['CannedAnswer'][_0x6622('0x48')]({'where':{'id':_0x149189[_0x6622('0x46')]['id']}})[_0x6622('0x26')](handleEntityNotFound(_0x17c9a4,null))[_0x6622('0x26')](saveUpdates(_0x149189[_0x6622('0x49')],null))['then'](respondWithResult(_0x17c9a4,null))[_0x6622('0x45')](handleError(_0x17c9a4,null));};exports['destroy']=function(_0x1860ff,_0x2dd4be){return db[_0x6622('0x2f')][_0x6622('0x48')]({'where':{'id':_0x1860ff[_0x6622('0x46')]['id']}})[_0x6622('0x26')](handleEntityNotFound(_0x2dd4be,null))['then'](removeEntity(_0x2dd4be,null))[_0x6622('0x45')](handleError(_0x2dd4be,null));};exports[_0x6622('0x4a')]=function(_0x53b874,_0x44a593){var _0x19bda4={'key':_0x53b874[_0x6622('0x49')][_0x6622('0x32')]};if(_0x53b874[_0x6622('0x49')][_0x6622('0x4b')]){_0x19bda4[_0x6622('0x4b')]=_0x53b874['body'][_0x6622('0x4b')];}else if(_0x53b874['body'][_0x6622('0x4c')]){_0x19bda4[_0x6622('0x4c')]=_0x53b874[_0x6622('0x49')][_0x6622('0x4c')];}else if(_0x53b874[_0x6622('0x49')][_0x6622('0x4d')]){_0x19bda4['OpenchannelAccountId']=_0x53b874[_0x6622('0x49')][_0x6622('0x4d')];}else if(_0x53b874[_0x6622('0x49')]['ChatWebsiteId']){_0x19bda4['ChatWebsiteId']=_0x53b874[_0x6622('0x49')]['ChatWebsiteId'];}return db['CannedAnswer'][_0x6622('0x48')]({'where':_0x19bda4})[_0x6622('0x26')](function(_0x52067c){if(_0x52067c){throw new db[(_0x6622('0x4e'))][(_0x6622('0x4f'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x6622('0x2f')][_0x6622('0x4a')](_0x53b874[_0x6622('0x49')]);})[_0x6622('0x26')](function(_0x36d4cf){var _0x195194=_0x53b874['user'][_0x6622('0x27')]({'plain':!![]});if(!_0x195194)throw new Error(_0x6622('0x50'));if(_0x195194[_0x6622('0x51')]===_0x6622('0x52')){var _0x22c4da=_0x36d4cf[_0x6622('0x27')]({'plain':!![]});return db[_0x6622('0x53')][_0x6622('0x48')]({'where':{'name':_0x6622('0x54'),'userProfileId':_0x195194[_0x6622('0x55')]},'raw':!![]})[_0x6622('0x26')](function(_0xc256a){if(_0xc256a&&_0xc256a[_0x6622('0x56')]===0x0){return db['UserProfileResource']['create']({'name':_0x22c4da[_0x6622('0x2b')],'resourceId':_0x22c4da['id'],'type':_0xc256a[_0x6622('0x2b')],'sectionId':_0xc256a['id']},{})[_0x6622('0x26')](function(){return _0x36d4cf;});}else{return _0x36d4cf;}})[_0x6622('0x45')](function(_0xdf85fa){logger[_0x6622('0x29')](_0x6622('0x57'),_0xdf85fa);throw _0xdf85fa;});}return _0x36d4cf;})[_0x6622('0x26')](respondWithResult(_0x44a593,0xc9))['catch'](handleError(_0x44a593,null));};
\ No newline at end of file
index 3ee988c..a00fd12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0d=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','define','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x238830,_0x545f75){var _0x5917f0=function(_0x12f821){while(--_0x12f821){_0x238830['push'](_0x238830['shift']());}};_0x5917f0(++_0x545f75);}(_0x8b0d,0x10f));var _0xd8b0=function(_0x29d95c,_0x860ac2){_0x29d95c=_0x29d95c-0x0;var _0x336ca8=_0x8b0d[_0x29d95c];return _0x336ca8;};'use strict';var _=require(_0xd8b0('0x0'));var util=require(_0xd8b0('0x1'));var logger=require(_0xd8b0('0x2'))('api');var moment=require(_0xd8b0('0x3'));var BPromise=require(_0xd8b0('0x4'));var rp=require(_0xd8b0('0x5'));var fs=require('fs');var path=require(_0xd8b0('0x6'));var rimraf=require(_0xd8b0('0x7'));var config=require(_0xd8b0('0x8'));var attributes=require(_0xd8b0('0x9'));module['exports']=function(_0xecad7,_0x57b736){return _0xecad7[_0xd8b0('0xa')](_0xd8b0('0xb'),attributes,{'tableName':_0xd8b0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd8b0('0xd'),'collate':_0xd8b0('0xe')});};
\ No newline at end of file
+var _0xc9be=['./cannedAnswer.attributes','exports','define','CannedAnswer','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xc9be,0x1aa));var _0xec9b=function(_0xe6eef7,_0x5ded0f){_0xe6eef7=_0xe6eef7-0x0;var _0x4e9fa6=_0xc9be[_0xe6eef7];return _0x4e9fa6;};'use strict';var _=require(_0xec9b('0x0'));var util=require(_0xec9b('0x1'));var logger=require(_0xec9b('0x2'))(_0xec9b('0x3'));var moment=require(_0xec9b('0x4'));var BPromise=require('bluebird');var rp=require(_0xec9b('0x5'));var fs=require('fs');var path=require(_0xec9b('0x6'));var rimraf=require(_0xec9b('0x7'));var config=require(_0xec9b('0x8'));var attributes=require(_0xec9b('0x9'));module[_0xec9b('0xa')]=function(_0x1c4b1c,_0x5f33eb){return _0x1c4b1c[_0xec9b('0xb')](_0xec9b('0xc'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xec9b('0xd'),'collate':_0xec9b('0xe')});};
\ No newline at end of file
index a201714..184618e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4c3740,_0x1c0b0c){var _0x125306=function(_0x3c0749){while(--_0x3c0749){_0x4c3740['push'](_0x4c3740['shift']());}};_0x125306(++_0x1c0b0c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x532b12,_0x3764c5){var _0x357ef4=function(_0x10acd6){while(--_0x10acd6){_0x532b12['push'](_0x532b12['shift']());}};_0x357ef4(++_0x3764c5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index d0d6e64..0d4f998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe83=['get','/:id','put','update','delete','destroy','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','index'];(function(_0x256684,_0x529c1e){var _0x37a0c9=function(_0x4b431b){while(--_0x4b431b){_0x256684['push'](_0x256684['shift']());}};_0x37a0c9(++_0x529c1e);}(_0xbe83,0x1c6));var _0x3be8=function(_0x52077c,_0x3e77f1){_0x52077c=_0x52077c-0x0;var _0x3e1c6b=_0xbe83[_0x52077c];return _0x3e1c6b;};'use strict';var multer=require(_0x3be8('0x0'));var util=require(_0x3be8('0x1'));var path=require(_0x3be8('0x2'));var timeout=require(_0x3be8('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3be8('0x4'));var interaction=require(_0x3be8('0x5'));var config=require(_0x3be8('0x6'));var controller=require(_0x3be8('0x7'));router['get']('/',auth[_0x3be8('0x8')](),controller[_0x3be8('0x9')]);router[_0x3be8('0xa')](_0x3be8('0xb'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x3be8('0xc')](_0x3be8('0xb'),auth[_0x3be8('0x8')](),controller[_0x3be8('0xd')]);router[_0x3be8('0xe')]('/:id',auth[_0x3be8('0x8')](),controller[_0x3be8('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x8091=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','/:id','show','post','isAuthenticated','create','put','update','delete'];(function(_0x845505,_0x19e5f3){var _0x2513b9=function(_0x10e7af){while(--_0x10e7af){_0x845505['push'](_0x845505['shift']());}};_0x2513b9(++_0x19e5f3);}(_0x8091,0xd4));var _0x1809=function(_0x5d115b,_0x57dfdc){_0x5d115b=_0x5d115b-0x0;var _0x30e43c=_0x8091[_0x5d115b];return _0x30e43c;};'use strict';var multer=require(_0x1809('0x0'));var util=require(_0x1809('0x1'));var path=require(_0x1809('0x2'));var timeout=require(_0x1809('0x3'));var express=require(_0x1809('0x4'));var router=express[_0x1809('0x5')]();var fs_extra=require(_0x1809('0x6'));var auth=require(_0x1809('0x7'));var interaction=require(_0x1809('0x8'));var config=require(_0x1809('0x9'));var controller=require(_0x1809('0xa'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x1809('0xb'),auth['isAuthenticated'](),controller[_0x1809('0xc')]);router[_0x1809('0xd')]('/',auth[_0x1809('0xe')](),controller[_0x1809('0xf')]);router[_0x1809('0x10')](_0x1809('0xb'),auth['isAuthenticated'](),controller[_0x1809('0x11')]);router[_0x1809('0x12')](_0x1809('0xb'),auth[_0x1809('0xe')](),controller[_0x1809('0x13')]);module[_0x1809('0x14')]=router;
\ No newline at end of file
index 52c0ef4..b884804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6fd=['INTEGER','sequelize','exports','STRING'];(function(_0x12fb0b,_0x23eac6){var _0x227eb3=function(_0x30c821){while(--_0x30c821){_0x12fb0b['push'](_0x12fb0b['shift']());}};_0x227eb3(++_0x23eac6);}(_0xd6fd,0x7d));var _0xdd6f=function(_0x901043,_0x560885){_0x901043=_0x901043-0x0;var _0x4d1889=_0xd6fd[_0x901043];return _0x4d1889;};'use strict';var Sequelize=require(_0xdd6f('0x0'));module[_0xdd6f('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xdd6f('0x2')]},'dst':{'type':Sequelize[_0xdd6f('0x2')]},'dcontext':{'type':Sequelize[_0xdd6f('0x2')]},'channel':{'type':Sequelize[_0xdd6f('0x2')]},'dstchannel':{'type':Sequelize[_0xdd6f('0x2')]},'lastapp':{'type':Sequelize[_0xdd6f('0x2')]},'lastdata':{'type':Sequelize[_0xdd6f('0x2')]},'duration':{'type':Sequelize[_0xdd6f('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xdd6f('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xdd6f('0x2')]},'amaflags':{'type':Sequelize[_0xdd6f('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xdd6f('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xdd6f('0x2')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0xdd6f('0x2')]},'type':{'type':Sequelize[_0xdd6f('0x2')]},'tag':{'type':Sequelize[_0xdd6f('0x2')]}};
\ No newline at end of file
+var _0xadec=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x4c8a8f,_0x997ef){var _0x404500=function(_0x1c6072){while(--_0x1c6072){_0x4c8a8f['push'](_0x4c8a8f['shift']());}};_0x404500(++_0x997ef);}(_0xadec,0x156));var _0xcade=function(_0x1a1eff,_0x7efb6b){_0x1a1eff=_0x1a1eff-0x0;var _0xfd93e9=_0xadec[_0x1a1eff];return _0xfd93e9;};'use strict';var Sequelize=require(_0xcade('0x0'));module[_0xcade('0x1')]={'calldate':{'type':Sequelize[_0xcade('0x2')],'allowNull':![],'defaultValue':_0xcade('0x3')},'clid':{'type':Sequelize[_0xcade('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xcade('0x4')]},'dstchannel':{'type':Sequelize[_0xcade('0x4')]},'lastapp':{'type':Sequelize[_0xcade('0x4')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xcade('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xcade('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xcade('0x4')]},'peeraccount':{'type':Sequelize[_0xcade('0x4')]},'type':{'type':Sequelize[_0xcade('0x4')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1d183b5..0c0f84d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','name','send','index','map','Cdr','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x425d,0x1e0));var _0xd425=function(_0x4c4136,_0x1e74ae){_0x4c4136=_0x4c4136-0x0;var _0x11fa28=_0x425d[_0x4c4136];return _0x11fa28;};'use strict';var emlformat=require(_0xd425('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd425('0x1'));var jsonpatch=require(_0xd425('0x2'));var rp=require(_0xd425('0x3'));var moment=require(_0xd425('0x4'));var BPromise=require(_0xd425('0x5'));var Mustache=require(_0xd425('0x6'));var util=require(_0xd425('0x7'));var path=require('path');var sox=require(_0xd425('0x8'));var csv=require(_0xd425('0x9'));var ejs=require(_0xd425('0xa'));var fs=require('fs');var fs_extra=require(_0xd425('0xb'));var _=require(_0xd425('0xc'));var squel=require(_0xd425('0xd'));var crypto=require('crypto');var jsforce=require(_0xd425('0xe'));var deskjs=require(_0xd425('0xf'));var toCsv=require(_0xd425('0x9'));var querystring=require(_0xd425('0x10'));var Papa=require(_0xd425('0x11'));var Redis=require(_0xd425('0x12'));var authService=require(_0xd425('0x13'));var qs=require(_0xd425('0x14'));var as=require(_0xd425('0x15'));var hardwareService=require(_0xd425('0x16'));var logger=require(_0xd425('0x17'))(_0xd425('0x18'));var utils=require(_0xd425('0x19'));var config=require(_0xd425('0x1a'));var licenseUtil=require(_0xd425('0x1b'));var db=require(_0xd425('0x1c'))['db'];function respondWithStatusCode(_0x9bb611,_0x3cacf7){_0x3cacf7=_0x3cacf7||0xcc;return function(_0x3b5de8){if(_0x3b5de8){return _0x9bb611[_0xd425('0x1d')](_0x3cacf7);}return _0x9bb611['status'](_0x3cacf7)[_0xd425('0x1e')]();};}function respondWithResult(_0x17a498,_0x336dc3){_0x336dc3=_0x336dc3||0xc8;return function(_0x5d3d60){if(_0x5d3d60){return _0x17a498[_0xd425('0x1f')](_0x336dc3)[_0xd425('0x20')](_0x5d3d60);}};}function respondWithFilteredResult(_0x643fd2,_0x41f34d){return function(_0x1fc822){if(_0x1fc822){var _0x538a0a=typeof _0x41f34d[_0xd425('0x21')]===_0xd425('0x22')&&typeof _0x41f34d[_0xd425('0x23')]===_0xd425('0x22');var _0x5d6585=_0x1fc822[_0xd425('0x24')];var _0x434d97=_0x538a0a?0x0:_0x41f34d[_0xd425('0x21')];var _0x1155bc=_0x538a0a?_0x1fc822['count']:_0x41f34d['offset']+_0x41f34d['limit'];var _0x4b293a;if(_0x1155bc>=_0x5d6585){_0x1155bc=_0x5d6585;_0x4b293a=0xc8;}else{_0x4b293a=0xce;}_0x643fd2[_0xd425('0x1f')](_0x4b293a);return _0x643fd2[_0xd425('0x25')](_0xd425('0x26'),_0x434d97+'-'+_0x1155bc+'/'+_0x5d6585)['json'](_0x1fc822);}return null;};}function patchUpdates(_0x355af0){return function(_0x7e982e){try{jsonpatch['apply'](_0x7e982e,_0x355af0,!![]);}catch(_0x2e1ec4){return BPromise[_0xd425('0x27')](_0x2e1ec4);}return _0x7e982e[_0xd425('0x28')]();};}function saveUpdates(_0x1d3fc0,_0x3e93db){return function(_0xb240c4){if(_0xb240c4){return _0xb240c4[_0xd425('0x29')](_0x1d3fc0)[_0xd425('0x2a')](function(_0x314201){return _0x314201;});}return null;};}function removeEntity(_0x2b030b,_0x151ad9){return function(_0x40e84b){if(_0x40e84b){return _0x40e84b['destroy']()[_0xd425('0x2a')](function(){_0x2b030b[_0xd425('0x1f')](0xcc)[_0xd425('0x1e')]();});}};}function handleEntityNotFound(_0x1908a5,_0x2afcdb){return function(_0x400dd7){if(!_0x400dd7){_0x1908a5[_0xd425('0x1d')](0x194);}return _0x400dd7;};}function handleError(_0x577e4b,_0x12f951){_0x12f951=_0x12f951||0x1f4;return function(_0x177de2){logger[_0xd425('0x2b')](_0x177de2['stack']);if(_0x177de2[_0xd425('0x2c')]){delete _0x177de2[_0xd425('0x2c')];}_0x577e4b[_0xd425('0x1f')](_0x12f951)[_0xd425('0x2d')](_0x177de2);};}exports[_0xd425('0x2e')]=function(_0x185d7e,_0x2fd17a){var _0x37b63c={},_0x24da23={},_0x1cac61={'count':0x0,'rows':[]};var _0x482ba6=_[_0xd425('0x2f')](db[_0xd425('0x30')][_0xd425('0x31')],function(_0x3695dd){return{'name':_0x3695dd[_0xd425('0x32')],'type':_0x3695dd[_0xd425('0x33')][_0xd425('0x34')]};});_0x24da23[_0xd425('0x35')]=_[_0xd425('0x2f')](_0x482ba6,_0xd425('0x2c'));_0x24da23[_0xd425('0x36')]=_['keys'](_0x185d7e[_0xd425('0x36')]);_0x24da23[_0xd425('0x37')]=_[_0xd425('0x38')](_0x24da23[_0xd425('0x35')],_0x24da23[_0xd425('0x36')]);_0x37b63c['attributes']=_[_0xd425('0x38')](_0x24da23[_0xd425('0x35')],qs['fields'](_0x185d7e['query']['fields']));_0x37b63c[_0xd425('0x39')]=_0x37b63c[_0xd425('0x39')][_0xd425('0x3a')]?_0x37b63c[_0xd425('0x39')]:_0x24da23['model'];if(!_0x185d7e[_0xd425('0x36')][_0xd425('0x3b')](_0xd425('0x3c'))){_0x37b63c[_0xd425('0x23')]=qs[_0xd425('0x23')](_0x185d7e[_0xd425('0x36')][_0xd425('0x23')]);_0x37b63c['offset']=qs[_0xd425('0x21')](_0x185d7e['query'][_0xd425('0x21')]);}_0x37b63c[_0xd425('0x3d')]=qs[_0xd425('0x3e')](_0x185d7e['query'][_0xd425('0x3e')]);_0x37b63c[_0xd425('0x3f')]=qs[_0xd425('0x37')](_[_0xd425('0x40')](_0x185d7e['query'],_0x24da23[_0xd425('0x37')]),_0x482ba6);if(_0x185d7e[_0xd425('0x36')]['filter']){_0x37b63c['where']=_['merge'](_0x37b63c[_0xd425('0x3f')],{'$or':_[_0xd425('0x2f')](_0x482ba6,function(_0x1f30c1){if(_0x1f30c1['type']!=='VIRTUAL'){var _0x58ebb1={};_0x58ebb1[_0x1f30c1[_0xd425('0x2c')]]={'$like':'%'+_0x185d7e[_0xd425('0x36')][_0xd425('0x41')]+'%'};return _0x58ebb1;}})});}_0x37b63c=_[_0xd425('0x42')]({},_0x37b63c,_0x185d7e[_0xd425('0x43')]);var _0x14f3be={'where':_0x37b63c[_0xd425('0x3f')]};return db['Cdr'][_0xd425('0x24')](_0x14f3be)[_0xd425('0x2a')](function(_0x1d82ec){_0x1cac61['count']=_0x1d82ec;if(_0x185d7e[_0xd425('0x36')][_0xd425('0x44')]){_0x37b63c[_0xd425('0x45')]=[{'all':!![]}];}return db['Cdr'][_0xd425('0x46')](_0x37b63c);})[_0xd425('0x2a')](function(_0x1c5ba6){_0x1cac61[_0xd425('0x47')]=_0x1c5ba6;return _0x1cac61;})['then'](respondWithFilteredResult(_0x2fd17a,_0x37b63c))[_0xd425('0x48')](handleError(_0x2fd17a,null));};exports[_0xd425('0x49')]=function(_0x2b1149,_0x41b25e){var _0x3f24fb={'raw':!![],'where':{'id':_0x2b1149[_0xd425('0x4a')]['id']}},_0x2f6bf7={};_0x2f6bf7['model']=_[_0xd425('0x4b')](db[_0xd425('0x30')]['rawAttributes']);_0x2f6bf7[_0xd425('0x36')]=_['keys'](_0x2b1149['query']);_0x2f6bf7[_0xd425('0x37')]=_['intersection'](_0x2f6bf7[_0xd425('0x35')],_0x2f6bf7['query']);_0x3f24fb[_0xd425('0x39')]=_[_0xd425('0x38')](_0x2f6bf7[_0xd425('0x35')],qs[_0xd425('0x4c')](_0x2b1149[_0xd425('0x36')]['fields']));_0x3f24fb[_0xd425('0x39')]=_0x3f24fb['attributes'][_0xd425('0x3a')]?_0x3f24fb['attributes']:_0x2f6bf7[_0xd425('0x35')];if(_0x2b1149[_0xd425('0x36')][_0xd425('0x44')]){_0x3f24fb[_0xd425('0x45')]=[{'all':!![]}];}_0x3f24fb=_[_0xd425('0x42')]({},_0x3f24fb,_0x2b1149['options']);return db[_0xd425('0x30')][_0xd425('0x4d')](_0x3f24fb)[_0xd425('0x2a')](handleEntityNotFound(_0x41b25e,null))[_0xd425('0x2a')](respondWithResult(_0x41b25e,null))[_0xd425('0x48')](handleError(_0x41b25e,null));};exports['create']=function(_0x440dc5,_0x177704){return db[_0xd425('0x30')][_0xd425('0x4e')](_0x440dc5[_0xd425('0x4f')],{})[_0xd425('0x2a')](respondWithResult(_0x177704,0xc9))['catch'](handleError(_0x177704,null));};exports[_0xd425('0x29')]=function(_0x128cb3,_0x5bfac6){if(_0x128cb3[_0xd425('0x4f')]['id']){delete _0x128cb3[_0xd425('0x4f')]['id'];}return db[_0xd425('0x30')][_0xd425('0x4d')]({'where':{'id':_0x128cb3['params']['id']}})[_0xd425('0x2a')](handleEntityNotFound(_0x5bfac6,null))[_0xd425('0x2a')](saveUpdates(_0x128cb3[_0xd425('0x4f')],null))[_0xd425('0x2a')](respondWithResult(_0x5bfac6,null))[_0xd425('0x48')](handleError(_0x5bfac6,null));};exports['destroy']=function(_0x4be6fa,_0x381bdb){return db['Cdr'][_0xd425('0x4d')]({'where':{'id':_0x4be6fa[_0xd425('0x4a')]['id']}})['then'](handleEntityNotFound(_0x381bdb,null))[_0xd425('0x2a')](removeEntity(_0x381bdb,null))['catch'](handleError(_0x381bdb,null));};exports['describe']=function(_0x39f588,_0x111905){return db[_0xd425('0x30')][_0xd425('0x50')]()[_0xd425('0x2a')](respondWithResult(_0x111905,null))[_0xd425('0x48')](handleError(_0x111905,null));};
\ No newline at end of file
+var _0x0f4d=['query','keys','filters','intersection','fields','attributes','length','order','sort','where','pick','merge','type','options','include','findAll','rows','catch','rawAttributes','find','create','body','params','describe','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','stack','name','send','index','map','Cdr','model'];(function(_0x33cca3,_0x1ec3bc){var _0xc8a1bc=function(_0x4069e4){while(--_0x4069e4){_0x33cca3['push'](_0x33cca3['shift']());}};_0xc8a1bc(++_0x1ec3bc);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x44d276,_0x5947ff){_0x44d276=_0x44d276-0x0;var _0x5bc3e9=_0x0f4d[_0x44d276];return _0x5bc3e9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd0f4('0x0'));var rp=require('request-promise');var moment=require(_0xd0f4('0x1'));var BPromise=require(_0xd0f4('0x2'));var Mustache=require(_0xd0f4('0x3'));var util=require(_0xd0f4('0x4'));var path=require(_0xd0f4('0x5'));var sox=require(_0xd0f4('0x6'));var csv=require(_0xd0f4('0x7'));var ejs=require(_0xd0f4('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd0f4('0x9'));var squel=require(_0xd0f4('0xa'));var crypto=require('crypto');var jsforce=require(_0xd0f4('0xb'));var deskjs=require(_0xd0f4('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd0f4('0xd'));var Papa=require(_0xd0f4('0xe'));var Redis=require('ioredis');var authService=require(_0xd0f4('0xf'));var qs=require(_0xd0f4('0x10'));var as=require(_0xd0f4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd0f4('0x12'));var utils=require(_0xd0f4('0x13'));var config=require(_0xd0f4('0x14'));var licenseUtil=require(_0xd0f4('0x15'));var db=require(_0xd0f4('0x16'))['db'];function respondWithStatusCode(_0x64232c,_0x134492){_0x134492=_0x134492||0xcc;return function(_0x5679a7){if(_0x5679a7){return _0x64232c[_0xd0f4('0x17')](_0x134492);}return _0x64232c[_0xd0f4('0x18')](_0x134492)['end']();};}function respondWithResult(_0x104d48,_0x536d71){_0x536d71=_0x536d71||0xc8;return function(_0x828792){if(_0x828792){return _0x104d48['status'](_0x536d71)[_0xd0f4('0x19')](_0x828792);}};}function respondWithFilteredResult(_0x4d5aef,_0x4afe4d){return function(_0x54b806){if(_0x54b806){var _0x45b32e=typeof _0x4afe4d[_0xd0f4('0x1a')]===_0xd0f4('0x1b')&&typeof _0x4afe4d[_0xd0f4('0x1c')]===_0xd0f4('0x1b');var _0x10acbe=_0x54b806[_0xd0f4('0x1d')];var _0x35be48=_0x45b32e?0x0:_0x4afe4d[_0xd0f4('0x1a')];var _0x5de07b=_0x45b32e?_0x54b806[_0xd0f4('0x1d')]:_0x4afe4d[_0xd0f4('0x1a')]+_0x4afe4d[_0xd0f4('0x1c')];var _0xa0662;if(_0x5de07b>=_0x10acbe){_0x5de07b=_0x10acbe;_0xa0662=0xc8;}else{_0xa0662=0xce;}_0x4d5aef['status'](_0xa0662);return _0x4d5aef[_0xd0f4('0x1e')](_0xd0f4('0x1f'),_0x35be48+'-'+_0x5de07b+'/'+_0x10acbe)[_0xd0f4('0x19')](_0x54b806);}return null;};}function patchUpdates(_0x208a6f){return function(_0x4e1689){try{jsonpatch[_0xd0f4('0x20')](_0x4e1689,_0x208a6f,!![]);}catch(_0xda1d14){return BPromise[_0xd0f4('0x21')](_0xda1d14);}return _0x4e1689[_0xd0f4('0x22')]();};}function saveUpdates(_0x14ba70,_0x2a1df0){return function(_0x25ee43){if(_0x25ee43){return _0x25ee43['update'](_0x14ba70)[_0xd0f4('0x23')](function(_0x327696){return _0x327696;});}return null;};}function removeEntity(_0x20e0c8,_0x299904){return function(_0x4d49c0){if(_0x4d49c0){return _0x4d49c0[_0xd0f4('0x24')]()['then'](function(){_0x20e0c8[_0xd0f4('0x18')](0xcc)[_0xd0f4('0x25')]();});}};}function handleEntityNotFound(_0x1cf493,_0x567eb4){return function(_0x42d944){if(!_0x42d944){_0x1cf493[_0xd0f4('0x17')](0x194);}return _0x42d944;};}function handleError(_0x459931,_0x1ed6e2){_0x1ed6e2=_0x1ed6e2||0x1f4;return function(_0x366af6){logger['error'](_0x366af6[_0xd0f4('0x26')]);if(_0x366af6[_0xd0f4('0x27')]){delete _0x366af6[_0xd0f4('0x27')];}_0x459931[_0xd0f4('0x18')](_0x1ed6e2)[_0xd0f4('0x28')](_0x366af6);};}exports[_0xd0f4('0x29')]=function(_0x1d3246,_0x33eb58){var _0x3cb97c={},_0x4cff90={},_0x42a44f={'count':0x0,'rows':[]};var _0x2df1ed=_[_0xd0f4('0x2a')](db[_0xd0f4('0x2b')]['rawAttributes'],function(_0x4058d7){return{'name':_0x4058d7['fieldName'],'type':_0x4058d7['type']['key']};});_0x4cff90[_0xd0f4('0x2c')]=_[_0xd0f4('0x2a')](_0x2df1ed,_0xd0f4('0x27'));_0x4cff90[_0xd0f4('0x2d')]=_[_0xd0f4('0x2e')](_0x1d3246[_0xd0f4('0x2d')]);_0x4cff90[_0xd0f4('0x2f')]=_[_0xd0f4('0x30')](_0x4cff90['model'],_0x4cff90[_0xd0f4('0x2d')]);_0x3cb97c['attributes']=_[_0xd0f4('0x30')](_0x4cff90[_0xd0f4('0x2c')],qs['fields'](_0x1d3246['query'][_0xd0f4('0x31')]));_0x3cb97c['attributes']=_0x3cb97c[_0xd0f4('0x32')][_0xd0f4('0x33')]?_0x3cb97c['attributes']:_0x4cff90[_0xd0f4('0x2c')];if(!_0x1d3246[_0xd0f4('0x2d')]['hasOwnProperty']('nolimit')){_0x3cb97c[_0xd0f4('0x1c')]=qs[_0xd0f4('0x1c')](_0x1d3246['query'][_0xd0f4('0x1c')]);_0x3cb97c['offset']=qs[_0xd0f4('0x1a')](_0x1d3246[_0xd0f4('0x2d')]['offset']);}_0x3cb97c[_0xd0f4('0x34')]=qs[_0xd0f4('0x35')](_0x1d3246[_0xd0f4('0x2d')][_0xd0f4('0x35')]);_0x3cb97c[_0xd0f4('0x36')]=qs['filters'](_[_0xd0f4('0x37')](_0x1d3246[_0xd0f4('0x2d')],_0x4cff90[_0xd0f4('0x2f')]),_0x2df1ed);if(_0x1d3246[_0xd0f4('0x2d')]['filter']){_0x3cb97c[_0xd0f4('0x36')]=_[_0xd0f4('0x38')](_0x3cb97c[_0xd0f4('0x36')],{'$or':_[_0xd0f4('0x2a')](_0x2df1ed,function(_0xd109a4){if(_0xd109a4[_0xd0f4('0x39')]!=='VIRTUAL'){var _0x269629={};_0x269629[_0xd109a4[_0xd0f4('0x27')]]={'$like':'%'+_0x1d3246[_0xd0f4('0x2d')]['filter']+'%'};return _0x269629;}})});}_0x3cb97c=_[_0xd0f4('0x38')]({},_0x3cb97c,_0x1d3246[_0xd0f4('0x3a')]);var _0x4bebe8={'where':_0x3cb97c[_0xd0f4('0x36')]};return db[_0xd0f4('0x2b')]['count'](_0x4bebe8)['then'](function(_0x3bb4ab){_0x42a44f[_0xd0f4('0x1d')]=_0x3bb4ab;if(_0x1d3246[_0xd0f4('0x2d')]['includeAll']){_0x3cb97c[_0xd0f4('0x3b')]=[{'all':!![]}];}return db['Cdr'][_0xd0f4('0x3c')](_0x3cb97c);})['then'](function(_0x29439d){_0x42a44f[_0xd0f4('0x3d')]=_0x29439d;return _0x42a44f;})[_0xd0f4('0x23')](respondWithFilteredResult(_0x33eb58,_0x3cb97c))[_0xd0f4('0x3e')](handleError(_0x33eb58,null));};exports['show']=function(_0x10509e,_0x198e47){var _0xb02892={'raw':!![],'where':{'id':_0x10509e['params']['id']}},_0x4c8b9a={};_0x4c8b9a[_0xd0f4('0x2c')]=_[_0xd0f4('0x2e')](db[_0xd0f4('0x2b')][_0xd0f4('0x3f')]);_0x4c8b9a[_0xd0f4('0x2d')]=_[_0xd0f4('0x2e')](_0x10509e[_0xd0f4('0x2d')]);_0x4c8b9a[_0xd0f4('0x2f')]=_[_0xd0f4('0x30')](_0x4c8b9a[_0xd0f4('0x2c')],_0x4c8b9a[_0xd0f4('0x2d')]);_0xb02892[_0xd0f4('0x32')]=_['intersection'](_0x4c8b9a[_0xd0f4('0x2c')],qs[_0xd0f4('0x31')](_0x10509e['query'][_0xd0f4('0x31')]));_0xb02892[_0xd0f4('0x32')]=_0xb02892[_0xd0f4('0x32')][_0xd0f4('0x33')]?_0xb02892[_0xd0f4('0x32')]:_0x4c8b9a[_0xd0f4('0x2c')];if(_0x10509e[_0xd0f4('0x2d')]['includeAll']){_0xb02892[_0xd0f4('0x3b')]=[{'all':!![]}];}_0xb02892=_[_0xd0f4('0x38')]({},_0xb02892,_0x10509e[_0xd0f4('0x3a')]);return db['Cdr'][_0xd0f4('0x40')](_0xb02892)[_0xd0f4('0x23')](handleEntityNotFound(_0x198e47,null))[_0xd0f4('0x23')](respondWithResult(_0x198e47,null))[_0xd0f4('0x3e')](handleError(_0x198e47,null));};exports[_0xd0f4('0x41')]=function(_0x563759,_0x54bb8d){return db['Cdr'][_0xd0f4('0x41')](_0x563759[_0xd0f4('0x42')],{})[_0xd0f4('0x23')](respondWithResult(_0x54bb8d,0xc9))[_0xd0f4('0x3e')](handleError(_0x54bb8d,null));};exports['update']=function(_0x31db89,_0x1b1baa){if(_0x31db89['body']['id']){delete _0x31db89[_0xd0f4('0x42')]['id'];}return db[_0xd0f4('0x2b')][_0xd0f4('0x40')]({'where':{'id':_0x31db89[_0xd0f4('0x43')]['id']}})[_0xd0f4('0x23')](handleEntityNotFound(_0x1b1baa,null))[_0xd0f4('0x23')](saveUpdates(_0x31db89[_0xd0f4('0x42')],null))[_0xd0f4('0x23')](respondWithResult(_0x1b1baa,null))[_0xd0f4('0x3e')](handleError(_0x1b1baa,null));};exports[_0xd0f4('0x24')]=function(_0x431df3,_0x120c17){return db[_0xd0f4('0x2b')]['find']({'where':{'id':_0x431df3[_0xd0f4('0x43')]['id']}})[_0xd0f4('0x23')](handleEntityNotFound(_0x120c17,null))[_0xd0f4('0x23')](removeEntity(_0x120c17,null))['catch'](handleError(_0x120c17,null));};exports[_0xd0f4('0x44')]=function(_0x3f8bcc,_0x1d8543){return db['Cdr'][_0xd0f4('0x44')]()['then'](respondWithResult(_0x1d8543,null))[_0xd0f4('0x3e')](handleError(_0x1d8543,null));};
\ No newline at end of file
index f79c6fd..3f6b17b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x1dc332,_0x297f34){var _0x13f5f2=function(_0x354f7b){while(--_0x354f7b){_0x1dc332['push'](_0x1dc332['shift']());}};_0x13f5f2(++_0x297f34);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x5733d8,_0x546887){var _0x2058f0=function(_0x33d1aa){while(--_0x33d1aa){_0x5733d8['push'](_0x5733d8['shift']());}};_0x2058f0(++_0x546887);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index fe374b1..57b7310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08ae=['../../config/logger','../../config/environment','jayson/promise','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','Cdr,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x08ae,0x12a));var _0xe08a=function(_0x11852c,_0x5bc21c){_0x11852c=_0x11852c-0x0;var _0x4f0bf2=_0x08ae[_0x11852c];return _0x4f0bf2;};'use strict';var _=require(_0xe08a('0x0'));var util=require('util');var moment=require(_0xe08a('0x1'));var BPromise=require(_0xe08a('0x2'));var rs=require(_0xe08a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe08a('0x4'))['db'];var utils=require(_0xe08a('0x5'));var logger=require(_0xe08a('0x6'))('rpc');var config=require(_0xe08a('0x7'));var jayson=require(_0xe08a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x59f6e3,_0x537eb2,_0x5112e3){return new BPromise(function(_0x3b1e26,_0x17b3ae){return client[_0xe08a('0x9')](_0x59f6e3,_0x5112e3)[_0xe08a('0xa')](function(_0x3758ba){logger[_0xe08a('0xb')](_0xe08a('0xc'),_0x537eb2,_0xe08a('0xd'));logger['debug'](_0xe08a('0xe'),_0x537eb2,_0xe08a('0xd'),JSON['stringify'](_0x3758ba));if(_0x3758ba[_0xe08a('0xf')]){if(_0x3758ba[_0xe08a('0xf')]['code']===0x1f4){logger['error'](_0xe08a('0xc'),_0x537eb2,_0x3758ba[_0xe08a('0xf')][_0xe08a('0x10')]);return _0x17b3ae(_0x3758ba['error']['message']);}logger[_0xe08a('0xf')](_0xe08a('0xc'),_0x537eb2,_0x3758ba[_0xe08a('0xf')][_0xe08a('0x10')]);return _0x3b1e26(_0x3758ba['error'][_0xe08a('0x10')]);}else{logger[_0xe08a('0xb')](_0xe08a('0xc'),_0x537eb2,_0xe08a('0xd'));_0x3b1e26(_0x3758ba[_0xe08a('0x11')][_0xe08a('0x10')]);}})[_0xe08a('0x12')](function(_0x505483){logger[_0xe08a('0xf')](_0xe08a('0xc'),_0x537eb2,_0x505483);_0x17b3ae(_0x505483);});});}
\ No newline at end of file
+var _0x3e78=['request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','lodash','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','then','Cdr,\x20%s,\x20%s'];(function(_0x4d8dbd,_0x5c49fb){var _0x306dfa=function(_0x43b63b){while(--_0x43b63b){_0x4d8dbd['push'](_0x4d8dbd['shift']());}};_0x306dfa(++_0x5c49fb);}(_0x3e78,0x1a0));var _0x83e7=function(_0x5a4b42,_0x2b9c18){_0x5a4b42=_0x5a4b42-0x0;var _0x5e81d6=_0x3e78[_0x5a4b42];return _0x5e81d6;};'use strict';var _=require(_0x83e7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x83e7('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x83e7('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x83e7('0x3'))(_0x83e7('0x4'));var config=require(_0x83e7('0x5'));var jayson=require(_0x83e7('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5bd61b,_0x17a870,_0x270bc0){return new BPromise(function(_0x59c916,_0x5a8471){return client['request'](_0x5bd61b,_0x270bc0)[_0x83e7('0x7')](function(_0x223f65){logger['info'](_0x83e7('0x8'),_0x17a870,_0x83e7('0x9'));logger[_0x83e7('0xa')](_0x83e7('0xb'),_0x17a870,_0x83e7('0x9'),JSON[_0x83e7('0xc')](_0x223f65));if(_0x223f65[_0x83e7('0xd')]){if(_0x223f65[_0x83e7('0xd')]['code']===0x1f4){logger['error'](_0x83e7('0x8'),_0x17a870,_0x223f65[_0x83e7('0xd')][_0x83e7('0xe')]);return _0x5a8471(_0x223f65[_0x83e7('0xd')][_0x83e7('0xe')]);}logger['error'](_0x83e7('0x8'),_0x17a870,_0x223f65[_0x83e7('0xd')][_0x83e7('0xe')]);return _0x59c916(_0x223f65[_0x83e7('0xd')][_0x83e7('0xe')]);}else{logger[_0x83e7('0xf')](_0x83e7('0x8'),_0x17a870,'request\x20sent');_0x59c916(_0x223f65[_0x83e7('0x10')]['message']);}})['catch'](function(_0x4d4e4a){logger['error']('Cdr,\x20%s,\x20%s',_0x17a870,_0x4d4e4a);_0x5a8471(_0x4d4e4a);});});}
\ No newline at end of file
index c34824c..155b837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../components/interaction/service','../../config/environment','./cdr.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x1f375a,_0x43fc5d){var _0x111ede=function(_0x4d4094){while(--_0x4d4094){_0x1f375a['push'](_0x1f375a['shift']());}};_0x111ede(++_0x43fc5d);}(_0xb10b,0x12a));var _0xbb10=function(_0x4bfff5,_0xbd2a67){_0x4bfff5=_0x4bfff5-0x0;var _0x2383bc=_0xb10b[_0x4bfff5];return _0x2383bc;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/describe',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0xf')]('/',auth[_0xbb10('0xb')](),controller['create']);router['put'](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x10')]);router['delete'](_0xbb10('0xd'),auth['isAuthenticated'](),controller[_0xbb10('0x11')]);module[_0xbb10('0x12')]=router;
\ No newline at end of file
+var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x3e04c4,_0x48101b){var _0x543e0f=function(_0x240c8b){while(--_0x240c8b){_0x3e04c4['push'](_0x3e04c4['shift']());}};_0x543e0f(++_0x48101b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index cbe9169..ee39b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddaa=['sequelize','INTEGER','STRING','*,*,*,*'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xddaa,0x124));var _0xadda=function(_0x5ecd60,_0x181ca8){_0x5ecd60=_0x5ecd60-0x0;var _0x1b3b03=_0xddaa[_0x5ecd60];return _0x1b3b03;};'use strict';var Sequelize=require(_0xadda('0x0'));module['exports']={'priority':{'type':Sequelize[_0xadda('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xadda('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xadda('0x3')}};
\ No newline at end of file
+var _0xe6e8=['noop','TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xe6e8,0xf9));var _0x8e6e=function(_0x362fb7,_0x4fb6f3){_0x362fb7=_0x362fb7-0x0;var _0x168738=_0xe6e8[_0x362fb7];return _0x168738;};'use strict';var Sequelize=require(_0x8e6e('0x0'));module['exports']={'priority':{'type':Sequelize[_0x8e6e('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x8e6e('0x2')],'allowNull':![],'defaultValue':_0x8e6e('0x3')},'appdata':{'type':Sequelize[_0x8e6e('0x4')]()},'description':{'type':Sequelize[_0x8e6e('0x2')]},'interval':{'type':Sequelize[_0x8e6e('0x2')],'defaultValue':_0x8e6e('0x5')}};
\ No newline at end of file
index dc62ac6..7b39069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b05=['then','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','find','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b05,0x190));var _0x55b0=function(_0x193c22,_0x3cfb18){_0x193c22=_0x193c22-0x0;var _0x44a8d6=_0x5b05[_0x193c22];return _0x44a8d6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x55b0('0x0'));var zipdir=require(_0x55b0('0x1'));var jsonpatch=require(_0x55b0('0x2'));var rp=require(_0x55b0('0x3'));var moment=require(_0x55b0('0x4'));var BPromise=require(_0x55b0('0x5'));var Mustache=require(_0x55b0('0x6'));var util=require(_0x55b0('0x7'));var path=require(_0x55b0('0x8'));var sox=require(_0x55b0('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x55b0('0xa'));var _=require(_0x55b0('0xb'));var squel=require(_0x55b0('0xc'));var crypto=require(_0x55b0('0xd'));var jsforce=require(_0x55b0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x55b0('0xf'));var querystring=require(_0x55b0('0x10'));var Papa=require(_0x55b0('0x11'));var Redis=require(_0x55b0('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x55b0('0x13'));var hardwareService=require(_0x55b0('0x14'));var logger=require(_0x55b0('0x15'))(_0x55b0('0x16'));var utils=require(_0x55b0('0x17'));var config=require(_0x55b0('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x55b0('0x19'))['db'];function respondWithStatusCode(_0x35212d,_0x4d8be8){_0x4d8be8=_0x4d8be8||0xcc;return function(_0x8c1df0){if(_0x8c1df0){return _0x35212d[_0x55b0('0x1a')](_0x4d8be8);}return _0x35212d[_0x55b0('0x1b')](_0x4d8be8)[_0x55b0('0x1c')]();};}function respondWithResult(_0x5baa88,_0x525f9b){_0x525f9b=_0x525f9b||0xc8;return function(_0x4d614b){if(_0x4d614b){return _0x5baa88[_0x55b0('0x1b')](_0x525f9b)['json'](_0x4d614b);}};}function respondWithFilteredResult(_0x7d7527,_0x3ca8e2){return function(_0x4d2271){if(_0x4d2271){var _0x15fa8f=typeof _0x3ca8e2[_0x55b0('0x1d')]===_0x55b0('0x1e')&&typeof _0x3ca8e2[_0x55b0('0x1f')]===_0x55b0('0x1e');var _0x4f98ba=_0x4d2271[_0x55b0('0x20')];var _0x20b1c5=_0x15fa8f?0x0:_0x3ca8e2[_0x55b0('0x1d')];var _0x5ca2ec=_0x15fa8f?_0x4d2271['count']:_0x3ca8e2[_0x55b0('0x1d')]+_0x3ca8e2[_0x55b0('0x1f')];var _0x3f9458;if(_0x5ca2ec>=_0x4f98ba){_0x5ca2ec=_0x4f98ba;_0x3f9458=0xc8;}else{_0x3f9458=0xce;}_0x7d7527['status'](_0x3f9458);return _0x7d7527[_0x55b0('0x21')](_0x55b0('0x22'),_0x20b1c5+'-'+_0x5ca2ec+'/'+_0x4f98ba)[_0x55b0('0x23')](_0x4d2271);}return null;};}function patchUpdates(_0x3ff56c){return function(_0x55b08e){try{jsonpatch[_0x55b0('0x24')](_0x55b08e,_0x3ff56c,!![]);}catch(_0x27ecd1){return BPromise[_0x55b0('0x25')](_0x27ecd1);}return _0x55b08e[_0x55b0('0x26')]();};}function saveUpdates(_0x4fa147,_0x4082ce){return function(_0x5e3acc){if(_0x5e3acc){return _0x5e3acc[_0x55b0('0x27')](_0x4fa147)['then'](function(_0x33bcc1){return _0x33bcc1;});}return null;};}function removeEntity(_0x25eb8a,_0x1ea756){return function(_0x3056f8){if(_0x3056f8){return _0x3056f8[_0x55b0('0x28')]()[_0x55b0('0x29')](function(){_0x25eb8a[_0x55b0('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x244092,_0x54f74f){return function(_0x494092){if(!_0x494092){_0x244092[_0x55b0('0x1a')](0x194);}return _0x494092;};}function handleError(_0x43b2c8,_0x5b2dc8){_0x5b2dc8=_0x5b2dc8||0x1f4;return function(_0x177bb8){logger['error'](_0x177bb8[_0x55b0('0x2a')]);if(_0x177bb8[_0x55b0('0x2b')]){delete _0x177bb8[_0x55b0('0x2b')];}_0x43b2c8[_0x55b0('0x1b')](_0x5b2dc8)[_0x55b0('0x2c')](_0x177bb8);};}exports[_0x55b0('0x2d')]=function(_0x20385f,_0x3b0262){var _0x10d5c9={'raw':!![],'where':{'id':_0x20385f[_0x55b0('0x2e')]['id']}},_0x4273e0={};_0x4273e0[_0x55b0('0x2f')]=_[_0x55b0('0x30')](db[_0x55b0('0x31')][_0x55b0('0x32')]);_0x4273e0[_0x55b0('0x33')]=_[_0x55b0('0x30')](_0x20385f['query']);_0x4273e0[_0x55b0('0x34')]=_[_0x55b0('0x35')](_0x4273e0[_0x55b0('0x2f')],_0x4273e0[_0x55b0('0x33')]);_0x10d5c9['attributes']=_[_0x55b0('0x35')](_0x4273e0[_0x55b0('0x2f')],qs[_0x55b0('0x36')](_0x20385f[_0x55b0('0x33')][_0x55b0('0x36')]));_0x10d5c9[_0x55b0('0x37')]=_0x10d5c9['attributes'][_0x55b0('0x38')]?_0x10d5c9['attributes']:_0x4273e0[_0x55b0('0x2f')];if(_0x20385f[_0x55b0('0x33')][_0x55b0('0x39')]){_0x10d5c9[_0x55b0('0x3a')]=[{'all':!![]}];}_0x10d5c9=_[_0x55b0('0x3b')]({},_0x10d5c9,_0x20385f[_0x55b0('0x3c')]);return db[_0x55b0('0x31')][_0x55b0('0x3d')](_0x10d5c9)[_0x55b0('0x29')](handleEntityNotFound(_0x3b0262,null))[_0x55b0('0x29')](respondWithResult(_0x3b0262,null))['catch'](handleError(_0x3b0262,null));};exports[_0x55b0('0x27')]=function(_0x14d978,_0x3df54f){if(_0x14d978[_0x55b0('0x3e')]['id']){delete _0x14d978[_0x55b0('0x3e')]['id'];}return db[_0x55b0('0x31')][_0x55b0('0x3d')]({'where':{'id':_0x14d978[_0x55b0('0x2e')]['id']}})[_0x55b0('0x29')](handleEntityNotFound(_0x3df54f,null))['then'](saveUpdates(_0x14d978['body'],null))[_0x55b0('0x29')](respondWithResult(_0x3df54f,null))['catch'](handleError(_0x3df54f,null));};exports[_0x55b0('0x28')]=function(_0x592d6e,_0x204df3){return db[_0x55b0('0x31')]['find']({'where':{'id':_0x592d6e[_0x55b0('0x2e')]['id']}})[_0x55b0('0x29')](handleEntityNotFound(_0x204df3,null))[_0x55b0('0x29')](removeEntity(_0x204df3,null))['catch'](handleError(_0x204df3,null));};
\ No newline at end of file
+var _0x1bd1=['then','destroy','name','send','show','params','keys','ChatApplication','query','filters','intersection','model','attributes','fields','length','include','merge','find','update','body','catch','eml-format','rimraf','zip-dir','request-promise','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject'];(function(_0x3a6042,_0x294113){var _0x5aebb=function(_0x4e77cc){while(--_0x4e77cc){_0x3a6042['push'](_0x3a6042['shift']());}};_0x5aebb(++_0x294113);}(_0x1bd1,0x123));var _0x11bd=function(_0x317bfa,_0x183068){_0x317bfa=_0x317bfa-0x0;var _0x3ce05d=_0x1bd1[_0x317bfa];return _0x3ce05d;};'use strict';var emlformat=require(_0x11bd('0x0'));var rimraf=require(_0x11bd('0x1'));var zipdir=require(_0x11bd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x11bd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x11bd('0x4'));var sox=require(_0x11bd('0x5'));var csv=require(_0x11bd('0x6'));var ejs=require(_0x11bd('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11bd('0x8'));var squel=require(_0x11bd('0x9'));var crypto=require(_0x11bd('0xa'));var jsforce=require(_0x11bd('0xb'));var deskjs=require(_0x11bd('0xc'));var toCsv=require('to-csv');var querystring=require(_0x11bd('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x11bd('0xe'));var qs=require(_0x11bd('0xf'));var as=require(_0x11bd('0x10'));var hardwareService=require(_0x11bd('0x11'));var logger=require(_0x11bd('0x12'))(_0x11bd('0x13'));var utils=require(_0x11bd('0x14'));var config=require(_0x11bd('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x11bd('0x16'))['db'];function respondWithStatusCode(_0x1afe14,_0x2ceee2){_0x2ceee2=_0x2ceee2||0xcc;return function(_0x39b6b9){if(_0x39b6b9){return _0x1afe14[_0x11bd('0x17')](_0x2ceee2);}return _0x1afe14[_0x11bd('0x18')](_0x2ceee2)[_0x11bd('0x19')]();};}function respondWithResult(_0x4d6ebe,_0x5e4cc4){_0x5e4cc4=_0x5e4cc4||0xc8;return function(_0x1c832b){if(_0x1c832b){return _0x4d6ebe[_0x11bd('0x18')](_0x5e4cc4)[_0x11bd('0x1a')](_0x1c832b);}};}function respondWithFilteredResult(_0x5ca6bb,_0x384144){return function(_0x5b78cc){if(_0x5b78cc){var _0x59978e=typeof _0x384144[_0x11bd('0x1b')]===_0x11bd('0x1c')&&typeof _0x384144[_0x11bd('0x1d')]===_0x11bd('0x1c');var _0xd04657=_0x5b78cc['count'];var _0x904980=_0x59978e?0x0:_0x384144[_0x11bd('0x1b')];var _0x39de22=_0x59978e?_0x5b78cc[_0x11bd('0x1e')]:_0x384144[_0x11bd('0x1b')]+_0x384144[_0x11bd('0x1d')];var _0xd2ca8a;if(_0x39de22>=_0xd04657){_0x39de22=_0xd04657;_0xd2ca8a=0xc8;}else{_0xd2ca8a=0xce;}_0x5ca6bb[_0x11bd('0x18')](_0xd2ca8a);return _0x5ca6bb['set']('Content-Range',_0x904980+'-'+_0x39de22+'/'+_0xd04657)[_0x11bd('0x1a')](_0x5b78cc);}return null;};}function patchUpdates(_0x232811){return function(_0x19176e){try{jsonpatch[_0x11bd('0x1f')](_0x19176e,_0x232811,!![]);}catch(_0x5d0f2b){return BPromise[_0x11bd('0x20')](_0x5d0f2b);}return _0x19176e['save']();};}function saveUpdates(_0x232f11,_0x104357){return function(_0x1d7984){if(_0x1d7984){return _0x1d7984['update'](_0x232f11)[_0x11bd('0x21')](function(_0x40c7d2){return _0x40c7d2;});}return null;};}function removeEntity(_0x1c0522,_0x27c98c){return function(_0x3343da){if(_0x3343da){return _0x3343da[_0x11bd('0x22')]()[_0x11bd('0x21')](function(){_0x1c0522[_0x11bd('0x18')](0xcc)[_0x11bd('0x19')]();});}};}function handleEntityNotFound(_0x39fbf9,_0x344826){return function(_0x3c6dab){if(!_0x3c6dab){_0x39fbf9['sendStatus'](0x194);}return _0x3c6dab;};}function handleError(_0x255365,_0xfbe811){_0xfbe811=_0xfbe811||0x1f4;return function(_0xa08420){logger['error'](_0xa08420['stack']);if(_0xa08420['name']){delete _0xa08420[_0x11bd('0x23')];}_0x255365[_0x11bd('0x18')](_0xfbe811)[_0x11bd('0x24')](_0xa08420);};}exports[_0x11bd('0x25')]=function(_0x39c2e3,_0x4312b3){var _0x3cc87b={'raw':!![],'where':{'id':_0x39c2e3[_0x11bd('0x26')]['id']}},_0x599f40={};_0x599f40['model']=_[_0x11bd('0x27')](db[_0x11bd('0x28')]['rawAttributes']);_0x599f40[_0x11bd('0x29')]=_[_0x11bd('0x27')](_0x39c2e3[_0x11bd('0x29')]);_0x599f40[_0x11bd('0x2a')]=_[_0x11bd('0x2b')](_0x599f40[_0x11bd('0x2c')],_0x599f40[_0x11bd('0x29')]);_0x3cc87b[_0x11bd('0x2d')]=_['intersection'](_0x599f40[_0x11bd('0x2c')],qs[_0x11bd('0x2e')](_0x39c2e3[_0x11bd('0x29')][_0x11bd('0x2e')]));_0x3cc87b[_0x11bd('0x2d')]=_0x3cc87b[_0x11bd('0x2d')][_0x11bd('0x2f')]?_0x3cc87b[_0x11bd('0x2d')]:_0x599f40[_0x11bd('0x2c')];if(_0x39c2e3[_0x11bd('0x29')]['includeAll']){_0x3cc87b[_0x11bd('0x30')]=[{'all':!![]}];}_0x3cc87b=_[_0x11bd('0x31')]({},_0x3cc87b,_0x39c2e3['options']);return db[_0x11bd('0x28')][_0x11bd('0x32')](_0x3cc87b)[_0x11bd('0x21')](handleEntityNotFound(_0x4312b3,null))[_0x11bd('0x21')](respondWithResult(_0x4312b3,null))['catch'](handleError(_0x4312b3,null));};exports[_0x11bd('0x33')]=function(_0x485915,_0x3dc82f){if(_0x485915[_0x11bd('0x34')]['id']){delete _0x485915[_0x11bd('0x34')]['id'];}return db[_0x11bd('0x28')][_0x11bd('0x32')]({'where':{'id':_0x485915[_0x11bd('0x26')]['id']}})[_0x11bd('0x21')](handleEntityNotFound(_0x3dc82f,null))[_0x11bd('0x21')](saveUpdates(_0x485915[_0x11bd('0x34')],null))[_0x11bd('0x21')](respondWithResult(_0x3dc82f,null))[_0x11bd('0x35')](handleError(_0x3dc82f,null));};exports[_0x11bd('0x22')]=function(_0x12c1f4,_0x234a4b){return db['ChatApplication']['find']({'where':{'id':_0x12c1f4['params']['id']}})[_0x11bd('0x21')](handleEntityNotFound(_0x234a4b,null))[_0x11bd('0x21')](removeEntity(_0x234a4b,null))['catch'](handleError(_0x234a4b,null));};
\ No newline at end of file
index 3a29da3..3cc52c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x596c=['request-promise','path','exports','define','chat_applications','utf8mb4_unicode_ci','moment'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x596c,0x1cd));var _0xc596=function(_0x2f7b27,_0x3a32b4){_0x2f7b27=_0x2f7b27-0x0;var _0x2741a9=_0x596c[_0x2f7b27];return _0x2741a9;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xc596('0x0'));var BPromise=require('bluebird');var rp=require(_0xc596('0x1'));var fs=require('fs');var path=require(_0xc596('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatApplication.attributes');module[_0xc596('0x3')]=function(_0x511ac2,_0x1db019){return _0x511ac2[_0xc596('0x4')]('ChatApplication',attributes,{'tableName':_0xc596('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xc596('0x6')});};
\ No newline at end of file
+var _0x78e4=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x32cd7b,_0x4b7429){var _0x4e3b59=function(_0x251a2a){while(--_0x251a2a){_0x32cd7b['push'](_0x32cd7b['shift']());}};_0x4e3b59(++_0x4b7429);}(_0x78e4,0x194));var _0x478e=function(_0xc8a931,_0x260690){_0xc8a931=_0xc8a931-0x0;var _0x28bd27=_0x78e4[_0xc8a931];return _0x28bd27;};'use strict';var _=require(_0x478e('0x0'));var util=require(_0x478e('0x1'));var logger=require(_0x478e('0x2'))(_0x478e('0x3'));var moment=require(_0x478e('0x4'));var BPromise=require(_0x478e('0x5'));var rp=require(_0x478e('0x6'));var fs=require('fs');var path=require(_0x478e('0x7'));var rimraf=require('rimraf');var config=require(_0x478e('0x8'));var attributes=require('./chatApplication.attributes');module[_0x478e('0x9')]=function(_0x39ec66,_0xaccd42){return _0x39ec66[_0x478e('0xa')]('ChatApplication',attributes,{'tableName':_0x478e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x478e('0xc'),'collate':_0x478e('0xd')});};
\ No newline at end of file
index 4dfb42e..047133c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b2=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x46005d,_0x3810cd){var _0x3bff1d=function(_0x16d7a9){while(--_0x16d7a9){_0x46005d['push'](_0x46005d['shift']());}};_0x3bff1d(++_0x3810cd);}(_0x88b2,0x1dd));var _0x288b=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x88b2[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x288b('0x0'));var util=require(_0x288b('0x1'));var moment=require(_0x288b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x288b('0x3'));var logger=require(_0x288b('0x4'))(_0x288b('0x5'));var config=require(_0x288b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x288b('0x7')][_0x288b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4ecb04,_0x47e215,_0x4efc2d){return new BPromise(function(_0x13dd8b,_0x4c55dc){return client['request'](_0x4ecb04,_0x4efc2d)[_0x288b('0x9')](function(_0x358aea){logger[_0x288b('0xa')](_0x288b('0xb'),_0x47e215,_0x288b('0xc'));logger[_0x288b('0xd')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x47e215,_0x288b('0xc'),JSON[_0x288b('0xe')](_0x358aea));if(_0x358aea[_0x288b('0xf')]){if(_0x358aea[_0x288b('0xf')][_0x288b('0x10')]===0x1f4){logger[_0x288b('0xf')](_0x288b('0xb'),_0x47e215,_0x358aea['error'][_0x288b('0x11')]);return _0x4c55dc(_0x358aea['error'][_0x288b('0x11')]);}logger[_0x288b('0xf')]('ChatApplication,\x20%s,\x20%s',_0x47e215,_0x358aea['error'][_0x288b('0x11')]);return _0x13dd8b(_0x358aea['error'][_0x288b('0x11')]);}else{logger['info'](_0x288b('0xb'),_0x47e215,_0x288b('0xc'));_0x13dd8b(_0x358aea[_0x288b('0x12')][_0x288b('0x11')]);}})[_0x288b('0x13')](function(_0x113421){logger[_0x288b('0xf')](_0x288b('0xb'),_0x47e215,_0x113421);_0x4c55dc(_0x113421);});});}
\ No newline at end of file
+var _0x98d4=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','ChatApplication,\x20%s,\x20%s','message','result','catch'];(function(_0x1e2321,_0x3ae1c5){var _0x1d346d=function(_0x24f171){while(--_0x24f171){_0x1e2321['push'](_0x1e2321['shift']());}};_0x1d346d(++_0x3ae1c5);}(_0x98d4,0x1ce));var _0x498d=function(_0x493bdd,_0x3ef53f){_0x493bdd=_0x493bdd-0x0;var _0x4b8ea7=_0x98d4[_0x493bdd];return _0x4b8ea7;};'use strict';var _=require(_0x498d('0x0'));var util=require('util');var moment=require(_0x498d('0x1'));var BPromise=require(_0x498d('0x2'));var rs=require(_0x498d('0x3'));var fs=require('fs');var Redis=require(_0x498d('0x4'));var db=require(_0x498d('0x5'))['db'];var utils=require(_0x498d('0x6'));var logger=require(_0x498d('0x7'))('rpc');var config=require(_0x498d('0x8'));var jayson=require(_0x498d('0x9'));var client=jayson[_0x498d('0xa')][_0x498d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9b9cc,_0x20dcd2,_0x37c198){return new BPromise(function(_0xf07de2,_0x33e9f4){return client['request'](_0x9b9cc,_0x37c198)['then'](function(_0x11b6a8){logger[_0x498d('0xc')]('ChatApplication,\x20%s,\x20%s',_0x20dcd2,_0x498d('0xd'));logger[_0x498d('0xe')](_0x498d('0xf'),_0x20dcd2,_0x498d('0xd'),JSON['stringify'](_0x11b6a8));if(_0x11b6a8[_0x498d('0x10')]){if(_0x11b6a8[_0x498d('0x10')]['code']===0x1f4){logger[_0x498d('0x10')](_0x498d('0x11'),_0x20dcd2,_0x11b6a8[_0x498d('0x10')][_0x498d('0x12')]);return _0x33e9f4(_0x11b6a8[_0x498d('0x10')][_0x498d('0x12')]);}logger[_0x498d('0x10')]('ChatApplication,\x20%s,\x20%s',_0x20dcd2,_0x11b6a8[_0x498d('0x10')][_0x498d('0x12')]);return _0xf07de2(_0x11b6a8[_0x498d('0x10')][_0x498d('0x12')]);}else{logger[_0x498d('0xc')](_0x498d('0x11'),_0x20dcd2,_0x498d('0xd'));_0xf07de2(_0x11b6a8[_0x498d('0x13')][_0x498d('0x12')]);}})[_0x498d('0x14')](function(_0x130bd2){logger[_0x498d('0x10')](_0x498d('0x11'),_0x20dcd2,_0x130bd2);_0x33e9f4(_0x130bd2);});});}
\ No newline at end of file
index 7589d2b..15658ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x232f=['Router','../../components/auth/service','../../config/environment','./chatApplication.controller','get','/:id','show','put','isAuthenticated','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x4d21ff,_0x19d202){var _0x22b554=function(_0x4473c5){while(--_0x4473c5){_0x4d21ff['push'](_0x4d21ff['shift']());}};_0x22b554(++_0x19d202);}(_0x232f,0xa6));var _0xf232=function(_0xd98ca3,_0x38fbd9){_0xd98ca3=_0xd98ca3-0x0;var _0x35960d=_0x232f[_0xd98ca3];return _0x35960d;};'use strict';var multer=require(_0xf232('0x0'));var util=require('util');var path=require(_0xf232('0x1'));var timeout=require(_0xf232('0x2'));var express=require(_0xf232('0x3'));var router=express[_0xf232('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf232('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf232('0x6'));var controller=require(_0xf232('0x7'));router[_0xf232('0x8')](_0xf232('0x9'),auth['isAuthenticated'](),controller[_0xf232('0xa')]);router[_0xf232('0xb')](_0xf232('0x9'),auth[_0xf232('0xc')](),controller[_0xf232('0xd')]);router[_0xf232('0xe')](_0xf232('0x9'),auth[_0xf232('0xc')](),controller[_0xf232('0xf')]);module[_0xf232('0x10')]=router;
\ No newline at end of file
+var _0xde61=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show','put','update','destroy','exports','multer','util'];(function(_0x4ddfc9,_0x23f05f){var _0x47da83=function(_0xf31784){while(--_0xf31784){_0x4ddfc9['push'](_0x4ddfc9['shift']());}};_0x47da83(++_0x23f05f);}(_0xde61,0xdb));var _0x1de6=function(_0x5d56df,_0x5830d0){_0x5d56df=_0x5d56df-0x0;var _0x1fed50=_0xde61[_0x5d56df];return _0x1fed50;};'use strict';var multer=require(_0x1de6('0x0'));var util=require(_0x1de6('0x1'));var path=require(_0x1de6('0x2'));var timeout=require(_0x1de6('0x3'));var express=require('express');var router=express[_0x1de6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1de6('0x5'));var interaction=require(_0x1de6('0x6'));var config=require(_0x1de6('0x7'));var controller=require(_0x1de6('0x8'));router[_0x1de6('0x9')](_0x1de6('0xa'),auth[_0x1de6('0xb')](),controller[_0x1de6('0xc')]);router[_0x1de6('0xd')](_0x1de6('0xa'),auth[_0x1de6('0xb')](),controller[_0x1de6('0xe')]);router['delete'](_0x1de6('0xa'),auth[_0x1de6('0xb')](),controller[_0x1de6('0xf')]);module[_0x1de6('0x10')]=router;
\ No newline at end of file
index 6fc5638..ff51efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe60=['exports','STRING','sequelize'];(function(_0x5c4bea,_0x3ab0df){var _0x51a75b=function(_0x57651b){while(--_0x57651b){_0x5c4bea['push'](_0x5c4bea['shift']());}};_0x51a75b(++_0x3ab0df);}(_0xbe60,0x1dc));var _0x0be6=function(_0x232d77,_0x132725){_0x232d77=_0x232d77-0x0;var _0x32e373=_0xbe60[_0x232d77];return _0x32e373;};'use strict';var Sequelize=require(_0x0be6('0x0'));module[_0x0be6('0x1')]={'name':{'type':Sequelize[_0x0be6('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0be6('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x87f1=['STRING','BOOLEAN','exports'];(function(_0x14e308,_0x58cfd4){var _0x370900=function(_0x45ad13){while(--_0x45ad13){_0x14e308['push'](_0x14e308['shift']());}};_0x370900(++_0x58cfd4);}(_0x87f1,0x170));var _0x187f=function(_0x6d9a0a,_0x5aa364){_0x6d9a0a=_0x6d9a0a-0x0;var _0x376544=_0x87f1[_0x6d9a0a];return _0x376544;};'use strict';var Sequelize=require('sequelize');module[_0x187f('0x0')]={'name':{'type':Sequelize[_0x187f('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x187f('0x1')]},'write':{'type':Sequelize[_0x187f('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index ab9c58a..e4e948a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf7a=['user','toInteger','addMembers','ids','omit','findOne','sort','hasOwnProperty','removeMembers','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','sendStatus','limit','undefined','offset','count','status','set','Content-Range','json','save','update','destroy','then','end','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','where','pick','filter','merge','options','ChatGroup','rows','catch','show','params','keys','length','includeAll','find','create','body','describe','ChatInternalMessage'];(function(_0x5d92b1,_0x10a2b2){var _0x156ecf=function(_0x27219a){while(--_0x27219a){_0x5d92b1['push'](_0x5d92b1['shift']());}};_0x156ecf(++_0x10a2b2);}(_0xcf7a,0x17b));var _0xacf7=function(_0x28e7b0,_0x363709){_0x28e7b0=_0x28e7b0-0x0;var _0x2d3ec2=_0xcf7a[_0x28e7b0];return _0x2d3ec2;};'use strict';var emlformat=require(_0xacf7('0x0'));var rimraf=require(_0xacf7('0x1'));var zipdir=require(_0xacf7('0x2'));var jsonpatch=require(_0xacf7('0x3'));var rp=require(_0xacf7('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xacf7('0x5'));var path=require(_0xacf7('0x6'));var sox=require(_0xacf7('0x7'));var csv=require('to-csv');var ejs=require(_0xacf7('0x8'));var fs=require('fs');var fs_extra=require(_0xacf7('0x9'));var _=require(_0xacf7('0xa'));var squel=require(_0xacf7('0xb'));var crypto=require('crypto');var jsforce=require(_0xacf7('0xc'));var deskjs=require(_0xacf7('0xd'));var toCsv=require(_0xacf7('0xe'));var querystring=require(_0xacf7('0xf'));var Papa=require(_0xacf7('0x10'));var Redis=require('ioredis');var authService=require(_0xacf7('0x11'));var qs=require(_0xacf7('0x12'));var as=require(_0xacf7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xacf7('0x14'))(_0xacf7('0x15'));var utils=require(_0xacf7('0x16'));var config=require(_0xacf7('0x17'));var licenseUtil=require(_0xacf7('0x18'));var db=require(_0xacf7('0x19'))['db'];config[_0xacf7('0x1a')]=_[_0xacf7('0x1b')](config[_0xacf7('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatGroup.socket')['register'](socket);function respondWithStatusCode(_0x58fcfb,_0x1d2ae7){_0x1d2ae7=_0x1d2ae7||0xcc;return function(_0x1c9551){if(_0x1c9551){return _0x58fcfb[_0xacf7('0x1c')](_0x1d2ae7);}return _0x58fcfb['status'](_0x1d2ae7)['end']();};}function respondWithResult(_0x1d9dd6,_0x33f24e){_0x33f24e=_0x33f24e||0xc8;return function(_0x4bc5d9){if(_0x4bc5d9){return _0x1d9dd6['status'](_0x33f24e)['json'](_0x4bc5d9);}};}function respondWithFilteredResult(_0x301772,_0xd04a20){return function(_0x23a330){if(_0x23a330){var _0x52f0a8=typeof _0xd04a20['offset']==='undefined'&&typeof _0xd04a20[_0xacf7('0x1d')]===_0xacf7('0x1e');var _0x55be70=_0x23a330['count'];var _0x18c56c=_0x52f0a8?0x0:_0xd04a20[_0xacf7('0x1f')];var _0x34909a=_0x52f0a8?_0x23a330[_0xacf7('0x20')]:_0xd04a20[_0xacf7('0x1f')]+_0xd04a20[_0xacf7('0x1d')];var _0x2cfca3;if(_0x34909a>=_0x55be70){_0x34909a=_0x55be70;_0x2cfca3=0xc8;}else{_0x2cfca3=0xce;}_0x301772[_0xacf7('0x21')](_0x2cfca3);return _0x301772[_0xacf7('0x22')](_0xacf7('0x23'),_0x18c56c+'-'+_0x34909a+'/'+_0x55be70)[_0xacf7('0x24')](_0x23a330);}return null;};}function patchUpdates(_0xe61caf){return function(_0x1d4ef9){try{jsonpatch['apply'](_0x1d4ef9,_0xe61caf,!![]);}catch(_0x17339a){return BPromise['reject'](_0x17339a);}return _0x1d4ef9[_0xacf7('0x25')]();};}function saveUpdates(_0xcceb53,_0x393e90){return function(_0x4ca277){if(_0x4ca277){return _0x4ca277[_0xacf7('0x26')](_0xcceb53)['then'](function(_0x35c88e){return _0x35c88e;});}return null;};}function removeEntity(_0x4bf142,_0x164c8d){return function(_0x2e0ea0){if(_0x2e0ea0){return _0x2e0ea0[_0xacf7('0x27')]()[_0xacf7('0x28')](function(){_0x4bf142[_0xacf7('0x21')](0xcc)[_0xacf7('0x29')]();});}};}function handleEntityNotFound(_0x3e6efa,_0x574903){return function(_0x4d4590){if(!_0x4d4590){_0x3e6efa[_0xacf7('0x1c')](0x194);}return _0x4d4590;};}function handleError(_0x15bb93,_0x296f2b){_0x296f2b=_0x296f2b||0x1f4;return function(_0x47f476){logger['error'](_0x47f476[_0xacf7('0x2a')]);if(_0x47f476[_0xacf7('0x2b')]){delete _0x47f476[_0xacf7('0x2b')];}_0x15bb93[_0xacf7('0x21')](_0x296f2b)[_0xacf7('0x2c')](_0x47f476);};}exports['index']=function(_0x266dbe,_0x6d3b5e){var _0x4b603a={},_0x5e6bf4={},_0x35e54a={'count':0x0,'rows':[]};var _0x5a3020=_[_0xacf7('0x2d')](db['ChatGroup'][_0xacf7('0x2e')],function(_0x1911ad){return{'name':_0x1911ad[_0xacf7('0x2f')],'type':_0x1911ad[_0xacf7('0x30')][_0xacf7('0x31')]};});_0x5e6bf4[_0xacf7('0x32')]=_[_0xacf7('0x2d')](_0x5a3020,_0xacf7('0x2b'));_0x5e6bf4[_0xacf7('0x33')]=_['keys'](_0x266dbe[_0xacf7('0x33')]);_0x5e6bf4[_0xacf7('0x34')]=_[_0xacf7('0x35')](_0x5e6bf4[_0xacf7('0x32')],_0x5e6bf4[_0xacf7('0x33')]);_0x4b603a[_0xacf7('0x36')]=_['intersection'](_0x5e6bf4[_0xacf7('0x32')],qs[_0xacf7('0x37')](_0x266dbe[_0xacf7('0x33')][_0xacf7('0x37')]));_0x4b603a[_0xacf7('0x36')]=_0x4b603a[_0xacf7('0x36')]['length']?_0x4b603a[_0xacf7('0x36')]:_0x5e6bf4[_0xacf7('0x32')];if(!_0x266dbe[_0xacf7('0x33')]['hasOwnProperty'](_0xacf7('0x38'))){_0x4b603a[_0xacf7('0x1d')]=qs['limit'](_0x266dbe[_0xacf7('0x33')][_0xacf7('0x1d')]);_0x4b603a['offset']=qs[_0xacf7('0x1f')](_0x266dbe[_0xacf7('0x33')][_0xacf7('0x1f')]);}_0x4b603a[_0xacf7('0x39')]=qs['sort'](_0x266dbe['query']['sort']);_0x4b603a[_0xacf7('0x3a')]=qs[_0xacf7('0x34')](_[_0xacf7('0x3b')](_0x266dbe['query'],_0x5e6bf4[_0xacf7('0x34')]),_0x5a3020);if(_0x266dbe[_0xacf7('0x33')][_0xacf7('0x3c')]){_0x4b603a['where']=_[_0xacf7('0x3d')](_0x4b603a['where'],{'$or':_['map'](_0x5a3020,function(_0x1baabc){if(_0x1baabc[_0xacf7('0x30')]!=='VIRTUAL'){var _0x425543={};_0x425543[_0x1baabc['name']]={'$like':'%'+_0x266dbe[_0xacf7('0x33')][_0xacf7('0x3c')]+'%'};return _0x425543;}})});}_0x4b603a=_[_0xacf7('0x3d')]({},_0x4b603a,_0x266dbe[_0xacf7('0x3e')]);var _0xccb5a8={'where':_0x4b603a[_0xacf7('0x3a')]};return db[_0xacf7('0x3f')]['count'](_0xccb5a8)[_0xacf7('0x28')](function(_0x433f7d){_0x35e54a[_0xacf7('0x20')]=_0x433f7d;if(_0x266dbe[_0xacf7('0x33')]['includeAll']){_0x4b603a['include']=[{'all':!![]}];}return db[_0xacf7('0x3f')]['findAll'](_0x4b603a);})['then'](function(_0x3e4fbe){_0x35e54a[_0xacf7('0x40')]=_0x3e4fbe;return _0x35e54a;})['then'](respondWithFilteredResult(_0x6d3b5e,_0x4b603a))[_0xacf7('0x41')](handleError(_0x6d3b5e,null));};exports[_0xacf7('0x42')]=function(_0x34e05a,_0x456ea4){var _0x5a8e48={'raw':!![],'where':{'id':_0x34e05a[_0xacf7('0x43')]['id']}},_0x552a72={};_0x552a72[_0xacf7('0x32')]=_[_0xacf7('0x44')](db['ChatGroup'][_0xacf7('0x2e')]);_0x552a72[_0xacf7('0x33')]=_[_0xacf7('0x44')](_0x34e05a['query']);_0x552a72[_0xacf7('0x34')]=_[_0xacf7('0x35')](_0x552a72[_0xacf7('0x32')],_0x552a72[_0xacf7('0x33')]);_0x5a8e48['attributes']=_['intersection'](_0x552a72[_0xacf7('0x32')],qs[_0xacf7('0x37')](_0x34e05a['query'][_0xacf7('0x37')]));_0x5a8e48['attributes']=_0x5a8e48[_0xacf7('0x36')][_0xacf7('0x45')]?_0x5a8e48[_0xacf7('0x36')]:_0x552a72['model'];if(_0x34e05a[_0xacf7('0x33')][_0xacf7('0x46')]){_0x5a8e48['include']=[{'all':!![]}];}_0x5a8e48=_[_0xacf7('0x3d')]({},_0x5a8e48,_0x34e05a[_0xacf7('0x3e')]);return db[_0xacf7('0x3f')][_0xacf7('0x47')](_0x5a8e48)[_0xacf7('0x28')](handleEntityNotFound(_0x456ea4,null))[_0xacf7('0x28')](respondWithResult(_0x456ea4,null))['catch'](handleError(_0x456ea4,null));};exports[_0xacf7('0x48')]=function(_0x3899e8,_0x2e121f){return db['ChatGroup'][_0xacf7('0x48')](_0x3899e8[_0xacf7('0x49')],{})['then'](respondWithResult(_0x2e121f,0xc9))[_0xacf7('0x41')](handleError(_0x2e121f,null));};exports['update']=function(_0x15fc53,_0x138b9b){if(_0x15fc53[_0xacf7('0x49')]['id']){delete _0x15fc53[_0xacf7('0x49')]['id'];}return db[_0xacf7('0x3f')][_0xacf7('0x47')]({'where':{'id':_0x15fc53[_0xacf7('0x43')]['id']}})[_0xacf7('0x28')](handleEntityNotFound(_0x138b9b,null))['then'](saveUpdates(_0x15fc53[_0xacf7('0x49')],null))[_0xacf7('0x28')](respondWithResult(_0x138b9b,null))[_0xacf7('0x41')](handleError(_0x138b9b,null));};exports[_0xacf7('0x27')]=function(_0x1ea864,_0x318171){return db[_0xacf7('0x3f')][_0xacf7('0x47')]({'where':{'id':_0x1ea864[_0xacf7('0x43')]['id']}})[_0xacf7('0x28')](handleEntityNotFound(_0x318171,null))[_0xacf7('0x28')](removeEntity(_0x318171,null))[_0xacf7('0x41')](handleError(_0x318171,null));};exports[_0xacf7('0x4a')]=function(_0x275bfa,_0x1059f0){return db[_0xacf7('0x3f')][_0xacf7('0x4a')]()[_0xacf7('0x28')](respondWithResult(_0x1059f0,null))['catch'](handleError(_0x1059f0,null));};exports['getUnread']=function(_0x2b0b6d,_0x13fb7a,_0x38b59c){return db[_0xacf7('0x4b')]['count']({'where':{'ChatGroupId':_0x2b0b6d[_0xacf7('0x43')]['id'],'ToId':_0x2b0b6d[_0xacf7('0x4c')]['id'],'read':![]}})[_0xacf7('0x28')](function(_0x352225){return{'id':_[_0xacf7('0x4d')](_0x2b0b6d['params']['id']),'count':_0x352225};})[_0xacf7('0x28')](respondWithResult(_0x13fb7a,null))[_0xacf7('0x41')](handleError(_0x13fb7a,null));};exports[_0xacf7('0x4e')]=function(_0x44a19e,_0x4847dd,_0x3908da){return db[_0xacf7('0x3f')][_0xacf7('0x47')]({'where':{'id':_0x44a19e['params']['id']}})[_0xacf7('0x28')](handleEntityNotFound(_0x4847dd,null))[_0xacf7('0x28')](function(_0x5047c6){if(_0x5047c6){return _0x5047c6[_0xacf7('0x4e')](_0x44a19e[_0xacf7('0x49')][_0xacf7('0x4f')],_[_0xacf7('0x50')](_0x44a19e[_0xacf7('0x49')],[_0xacf7('0x4f'),'id'])||{});}})[_0xacf7('0x28')](respondWithResult(_0x4847dd,null))[_0xacf7('0x41')](handleError(_0x4847dd,null));};exports['getMembers']=function(_0x38aa00,_0x14c3e6,_0xe85c77){var _0x2e0ef9={};var _0x6fc45d={};var _0x57eb98;var _0x1566ec;return db[_0xacf7('0x3f')][_0xacf7('0x51')]({'where':{'id':_0x38aa00[_0xacf7('0x43')]['id']}})[_0xacf7('0x28')](handleEntityNotFound(_0x14c3e6,null))['then'](function(_0x43447c){if(_0x43447c){_0x57eb98=_0x43447c;_0x6fc45d[_0xacf7('0x32')]=_[_0xacf7('0x44')](db['User'][_0xacf7('0x2e')]);_0x6fc45d['query']=_[_0xacf7('0x44')](_0x38aa00[_0xacf7('0x33')]);_0x6fc45d['filters']=_[_0xacf7('0x35')](_0x6fc45d[_0xacf7('0x32')],_0x6fc45d[_0xacf7('0x33')]);_0x2e0ef9[_0xacf7('0x36')]=_['intersection'](_0x6fc45d[_0xacf7('0x32')],qs[_0xacf7('0x37')](_0x38aa00[_0xacf7('0x33')][_0xacf7('0x37')]));_0x2e0ef9[_0xacf7('0x36')]=_0x2e0ef9[_0xacf7('0x36')][_0xacf7('0x45')]?_0x2e0ef9[_0xacf7('0x36')]:_0x6fc45d['model'];_0x2e0ef9[_0xacf7('0x39')]=qs[_0xacf7('0x52')](_0x38aa00[_0xacf7('0x33')][_0xacf7('0x52')]);_0x2e0ef9[_0xacf7('0x3a')]=qs[_0xacf7('0x34')](_['pick'](_0x38aa00[_0xacf7('0x33')],_0x6fc45d[_0xacf7('0x34')]));if(_0x38aa00[_0xacf7('0x33')][_0xacf7('0x3c')]){_0x2e0ef9[_0xacf7('0x3a')]=_[_0xacf7('0x3d')](_0x2e0ef9[_0xacf7('0x3a')],{'$or':_['map'](_0x2e0ef9[_0xacf7('0x36')],function(_0xa80d1){var _0xe551a8={};_0xe551a8[_0xa80d1]={'$like':'%'+_0x38aa00[_0xacf7('0x33')]['filter']+'%'};return _0xe551a8;})});}_0x2e0ef9=_['merge']({},_0x2e0ef9,_0x38aa00[_0xacf7('0x3e')]);return _0x57eb98['getMembers'](_0x2e0ef9);}})[_0xacf7('0x28')](function(_0x3962c2){if(_0x3962c2){_0x1566ec=_0x3962c2[_0xacf7('0x45')];if(!_0x38aa00[_0xacf7('0x33')][_0xacf7('0x53')](_0xacf7('0x38'))){_0x2e0ef9[_0xacf7('0x1d')]=qs[_0xacf7('0x1d')](_0x38aa00['query']['limit']);_0x2e0ef9[_0xacf7('0x1f')]=qs[_0xacf7('0x1f')](_0x38aa00[_0xacf7('0x33')]['offset']);}return _0x57eb98['getMembers'](_0x2e0ef9);}})[_0xacf7('0x28')](function(_0x2396be){if(_0x2396be){return _0x2396be?{'count':_0x1566ec,'rows':_0x2396be}:null;}})[_0xacf7('0x28')](respondWithResult(_0x14c3e6,null))[_0xacf7('0x41')](handleError(_0x14c3e6,null));};exports[_0xacf7('0x54')]=function(_0x5de9bc,_0x131555,_0x2a92f0){return db['ChatGroup'][_0xacf7('0x47')]({'where':{'id':_0x5de9bc[_0xacf7('0x43')]['id']}})['then'](handleEntityNotFound(_0x131555,null))[_0xacf7('0x28')](function(_0x14eb52){if(_0x14eb52){return _0x14eb52[_0xacf7('0x54')](_0x5de9bc[_0xacf7('0x33')][_0xacf7('0x4f')]);}})['then'](respondWithStatusCode(_0x131555,null))[_0xacf7('0x41')](handleError(_0x131555,null));};exports['addMessage']=function(_0x3a21ef,_0x190366,_0x3220a6){if(_0x3a21ef[_0xacf7('0x49')]['id']){delete _0x3a21ef[_0xacf7('0x49')]['id'];}return db['ChatGroup'][_0xacf7('0x47')]({'where':{'id':_0x3a21ef[_0xacf7('0x43')]['id']}})[_0xacf7('0x28')](handleEntityNotFound(_0x190366,null))[_0xacf7('0x28')](function(_0x563675){if(_0x563675){_0x3a21ef[_0xacf7('0x49')][_0xacf7('0x55')]=_0x563675['id'];return db[_0xacf7('0x4b')]['create'](_0x3a21ef['body']);}})[_0xacf7('0x28')](respondWithResult(_0x190366,null))[_0xacf7('0x41')](handleError(_0x190366,null));};exports[_0xacf7('0x56')]=function(_0x3d387c,_0xae4b9c,_0x460c2d){var _0x58118d={};var _0x3011c7={};var _0x3ee9b5;var _0x2f07f1;return db['ChatGroup'][_0xacf7('0x51')]({'where':{'id':_0x3d387c[_0xacf7('0x43')]['id']}})[_0xacf7('0x28')](handleEntityNotFound(_0xae4b9c,null))[_0xacf7('0x28')](function(_0x1be929){if(_0x1be929){_0x3ee9b5=_0x1be929;_0x3011c7[_0xacf7('0x32')]=_['keys'](db[_0xacf7('0x4b')][_0xacf7('0x2e')]);_0x3011c7[_0xacf7('0x33')]=_[_0xacf7('0x44')](_0x3d387c[_0xacf7('0x33')]);_0x3011c7['filters']=_[_0xacf7('0x35')](_0x3011c7[_0xacf7('0x32')],_0x3011c7[_0xacf7('0x33')]);_0x58118d['attributes']=_[_0xacf7('0x35')](_0x3011c7[_0xacf7('0x32')],qs[_0xacf7('0x37')](_0x3d387c[_0xacf7('0x33')][_0xacf7('0x37')]));_0x58118d[_0xacf7('0x36')]=_0x58118d['attributes'][_0xacf7('0x45')]?_0x58118d[_0xacf7('0x36')]:_0x3011c7[_0xacf7('0x32')];_0x58118d[_0xacf7('0x39')]=qs[_0xacf7('0x52')](_0x3d387c[_0xacf7('0x33')][_0xacf7('0x52')]);_0x58118d[_0xacf7('0x3a')]=qs[_0xacf7('0x34')](_[_0xacf7('0x3b')](_0x3d387c[_0xacf7('0x33')],_0x3011c7[_0xacf7('0x34')]));if(_0x3d387c['query'][_0xacf7('0x3c')]){_0x58118d[_0xacf7('0x3a')]=_[_0xacf7('0x3d')](_0x58118d['where'],{'$or':_[_0xacf7('0x2d')](_0x58118d[_0xacf7('0x36')],function(_0x2a4a1c){var _0x2131b9={};_0x2131b9[_0x2a4a1c]={'$like':'%'+_0x3d387c[_0xacf7('0x33')][_0xacf7('0x3c')]+'%'};return _0x2131b9;})});}if(_0x3d387c[_0xacf7('0x33')][_0xacf7('0x57')]){var _0x3e40b4=_0x3d387c[_0xacf7('0x33')][_0xacf7('0x57')][_0xacf7('0x58')](',');var _0x30a24d={};_0x30a24d[_0x3e40b4[0x0]]={'$gte':moment(_0x3e40b4[0x1])[_0xacf7('0x59')](_0xacf7('0x5a'))};_0x58118d[_0xacf7('0x3a')]=_['merge'](_0x58118d['where'],_0x30a24d);}_0x58118d=_[_0xacf7('0x3d')]({},_0x58118d,_0x3d387c[_0xacf7('0x3e')]);return _0x3ee9b5[_0xacf7('0x56')](_0x58118d);}})[_0xacf7('0x28')](function(_0x2e8117){if(_0x2e8117){_0x2f07f1=_0x2e8117[_0xacf7('0x45')];if(!_0x3d387c[_0xacf7('0x33')][_0xacf7('0x53')]('nolimit')){_0x58118d[_0xacf7('0x1d')]=qs[_0xacf7('0x1d')](_0x3d387c[_0xacf7('0x33')][_0xacf7('0x1d')]);_0x58118d[_0xacf7('0x1f')]=qs[_0xacf7('0x1f')](_0x3d387c[_0xacf7('0x33')][_0xacf7('0x1f')]);}return _0x3ee9b5[_0xacf7('0x56')](_0x58118d);}})[_0xacf7('0x28')](function(_0x5e5d42){if(_0x5e5d42){return _0x5e5d42?{'count':_0x2f07f1,'rows':_0x5e5d42}:null;}})[_0xacf7('0x28')](respondWithResult(_0xae4b9c,null))['catch'](handleError(_0xae4b9c,null));};
\ No newline at end of file
+var _0x0cf5=['ids','findOne','User','pick','getMembers','removeMembers','addMessage','getMessages','$gte','split','format','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','then','end','stack','name','map','ChatGroup','rawAttributes','fieldName','type','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','describe','getUnread','ChatInternalMessage','toInteger','addMembers','omit'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x0cf5,0xcf));var _0x50cf=function(_0x124ec0,_0x287dbf){_0x124ec0=_0x124ec0-0x0;var _0x29f75f=_0x0cf5[_0x124ec0];return _0x29f75f;};'use strict';var emlformat=require(_0x50cf('0x0'));var rimraf=require(_0x50cf('0x1'));var zipdir=require(_0x50cf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x50cf('0x3'));var moment=require(_0x50cf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x50cf('0x5'));var path=require(_0x50cf('0x6'));var sox=require(_0x50cf('0x7'));var csv=require(_0x50cf('0x8'));var ejs=require(_0x50cf('0x9'));var fs=require('fs');var fs_extra=require(_0x50cf('0xa'));var _=require(_0x50cf('0xb'));var squel=require('squel');var crypto=require(_0x50cf('0xc'));var jsforce=require(_0x50cf('0xd'));var deskjs=require(_0x50cf('0xe'));var toCsv=require(_0x50cf('0x8'));var querystring=require(_0x50cf('0xf'));var Papa=require(_0x50cf('0x10'));var Redis=require('ioredis');var authService=require(_0x50cf('0x11'));var qs=require(_0x50cf('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x50cf('0x13'));var logger=require(_0x50cf('0x14'))(_0x50cf('0x15'));var utils=require(_0x50cf('0x16'));var config=require(_0x50cf('0x17'));var licenseUtil=require(_0x50cf('0x18'));var db=require(_0x50cf('0x19'))['db'];config[_0x50cf('0x1a')]=_[_0x50cf('0x1b')](config['redis'],{'host':_0x50cf('0x1c'),'port':0x18eb});var socket=require(_0x50cf('0x1d'))(new Redis(config[_0x50cf('0x1a')]));require(_0x50cf('0x1e'))[_0x50cf('0x1f')](socket);function respondWithStatusCode(_0x2238d7,_0x2b429d){_0x2b429d=_0x2b429d||0xcc;return function(_0x4ba225){if(_0x4ba225){return _0x2238d7[_0x50cf('0x20')](_0x2b429d);}return _0x2238d7['status'](_0x2b429d)['end']();};}function respondWithResult(_0x45d393,_0x5453eb){_0x5453eb=_0x5453eb||0xc8;return function(_0x4c66f1){if(_0x4c66f1){return _0x45d393[_0x50cf('0x21')](_0x5453eb)[_0x50cf('0x22')](_0x4c66f1);}};}function respondWithFilteredResult(_0x3d3cae,_0x252763){return function(_0x34571b){if(_0x34571b){var _0x58b976=typeof _0x252763[_0x50cf('0x23')]===_0x50cf('0x24')&&typeof _0x252763['limit']==='undefined';var _0xcf31b7=_0x34571b[_0x50cf('0x25')];var _0x3fc3de=_0x58b976?0x0:_0x252763[_0x50cf('0x23')];var _0x1d632b=_0x58b976?_0x34571b[_0x50cf('0x25')]:_0x252763[_0x50cf('0x23')]+_0x252763[_0x50cf('0x26')];var _0x203d12;if(_0x1d632b>=_0xcf31b7){_0x1d632b=_0xcf31b7;_0x203d12=0xc8;}else{_0x203d12=0xce;}_0x3d3cae[_0x50cf('0x21')](_0x203d12);return _0x3d3cae[_0x50cf('0x27')](_0x50cf('0x28'),_0x3fc3de+'-'+_0x1d632b+'/'+_0xcf31b7)['json'](_0x34571b);}return null;};}function patchUpdates(_0x50b1a7){return function(_0x1f4e4f){try{jsonpatch['apply'](_0x1f4e4f,_0x50b1a7,!![]);}catch(_0xe83246){return BPromise[_0x50cf('0x29')](_0xe83246);}return _0x1f4e4f[_0x50cf('0x2a')]();};}function saveUpdates(_0x2af2f3,_0x11ddcc){return function(_0x368da7){if(_0x368da7){return _0x368da7[_0x50cf('0x2b')](_0x2af2f3)['then'](function(_0xc8260){return _0xc8260;});}return null;};}function removeEntity(_0x750d11,_0x10f11a){return function(_0x28eed8){if(_0x28eed8){return _0x28eed8[_0x50cf('0x2c')]()[_0x50cf('0x2d')](function(){_0x750d11[_0x50cf('0x21')](0xcc)[_0x50cf('0x2e')]();});}};}function handleEntityNotFound(_0x485e1e,_0x5288d4){return function(_0x1e4009){if(!_0x1e4009){_0x485e1e[_0x50cf('0x20')](0x194);}return _0x1e4009;};}function handleError(_0x50339b,_0x486a97){_0x486a97=_0x486a97||0x1f4;return function(_0x404d54){logger['error'](_0x404d54[_0x50cf('0x2f')]);if(_0x404d54['name']){delete _0x404d54[_0x50cf('0x30')];}_0x50339b[_0x50cf('0x21')](_0x486a97)['send'](_0x404d54);};}exports['index']=function(_0x5b03d7,_0x5a91c4){var _0x42e95e={},_0x345c74={},_0x6d6d4c={'count':0x0,'rows':[]};var _0x33db0b=_[_0x50cf('0x31')](db[_0x50cf('0x32')][_0x50cf('0x33')],function(_0x17e678){return{'name':_0x17e678[_0x50cf('0x34')],'type':_0x17e678[_0x50cf('0x35')][_0x50cf('0x36')]};});_0x345c74['model']=_[_0x50cf('0x31')](_0x33db0b,_0x50cf('0x30'));_0x345c74[_0x50cf('0x37')]=_[_0x50cf('0x38')](_0x5b03d7[_0x50cf('0x37')]);_0x345c74[_0x50cf('0x39')]=_['intersection'](_0x345c74['model'],_0x345c74[_0x50cf('0x37')]);_0x42e95e[_0x50cf('0x3a')]=_[_0x50cf('0x3b')](_0x345c74[_0x50cf('0x3c')],qs[_0x50cf('0x3d')](_0x5b03d7[_0x50cf('0x37')][_0x50cf('0x3d')]));_0x42e95e[_0x50cf('0x3a')]=_0x42e95e[_0x50cf('0x3a')][_0x50cf('0x3e')]?_0x42e95e['attributes']:_0x345c74[_0x50cf('0x3c')];if(!_0x5b03d7[_0x50cf('0x37')][_0x50cf('0x3f')](_0x50cf('0x40'))){_0x42e95e[_0x50cf('0x26')]=qs[_0x50cf('0x26')](_0x5b03d7[_0x50cf('0x37')]['limit']);_0x42e95e[_0x50cf('0x23')]=qs[_0x50cf('0x23')](_0x5b03d7[_0x50cf('0x37')][_0x50cf('0x23')]);}_0x42e95e[_0x50cf('0x41')]=qs[_0x50cf('0x42')](_0x5b03d7[_0x50cf('0x37')][_0x50cf('0x42')]);_0x42e95e['where']=qs[_0x50cf('0x39')](_['pick'](_0x5b03d7[_0x50cf('0x37')],_0x345c74[_0x50cf('0x39')]),_0x33db0b);if(_0x5b03d7['query']['filter']){_0x42e95e[_0x50cf('0x43')]=_[_0x50cf('0x44')](_0x42e95e[_0x50cf('0x43')],{'$or':_[_0x50cf('0x31')](_0x33db0b,function(_0x5ace0f){if(_0x5ace0f[_0x50cf('0x35')]!=='VIRTUAL'){var _0x4ca03b={};_0x4ca03b[_0x5ace0f[_0x50cf('0x30')]]={'$like':'%'+_0x5b03d7[_0x50cf('0x37')][_0x50cf('0x45')]+'%'};return _0x4ca03b;}})});}_0x42e95e=_[_0x50cf('0x44')]({},_0x42e95e,_0x5b03d7['options']);var _0x535a10={'where':_0x42e95e['where']};return db[_0x50cf('0x32')][_0x50cf('0x25')](_0x535a10)[_0x50cf('0x2d')](function(_0x174015){_0x6d6d4c[_0x50cf('0x25')]=_0x174015;if(_0x5b03d7[_0x50cf('0x37')][_0x50cf('0x46')]){_0x42e95e[_0x50cf('0x47')]=[{'all':!![]}];}return db[_0x50cf('0x32')][_0x50cf('0x48')](_0x42e95e);})['then'](function(_0x4f6e16){_0x6d6d4c[_0x50cf('0x49')]=_0x4f6e16;return _0x6d6d4c;})[_0x50cf('0x2d')](respondWithFilteredResult(_0x5a91c4,_0x42e95e))[_0x50cf('0x4a')](handleError(_0x5a91c4,null));};exports[_0x50cf('0x4b')]=function(_0x11413d,_0x484e56){var _0xad36c6={'raw':!![],'where':{'id':_0x11413d['params']['id']}},_0xef6f24={};_0xef6f24[_0x50cf('0x3c')]=_[_0x50cf('0x38')](db['ChatGroup']['rawAttributes']);_0xef6f24['query']=_[_0x50cf('0x38')](_0x11413d['query']);_0xef6f24[_0x50cf('0x39')]=_[_0x50cf('0x3b')](_0xef6f24[_0x50cf('0x3c')],_0xef6f24['query']);_0xad36c6[_0x50cf('0x3a')]=_[_0x50cf('0x3b')](_0xef6f24[_0x50cf('0x3c')],qs['fields'](_0x11413d[_0x50cf('0x37')][_0x50cf('0x3d')]));_0xad36c6[_0x50cf('0x3a')]=_0xad36c6['attributes'][_0x50cf('0x3e')]?_0xad36c6['attributes']:_0xef6f24[_0x50cf('0x3c')];if(_0x11413d[_0x50cf('0x37')][_0x50cf('0x46')]){_0xad36c6[_0x50cf('0x47')]=[{'all':!![]}];}_0xad36c6=_['merge']({},_0xad36c6,_0x11413d[_0x50cf('0x4c')]);return db[_0x50cf('0x32')][_0x50cf('0x4d')](_0xad36c6)[_0x50cf('0x2d')](handleEntityNotFound(_0x484e56,null))[_0x50cf('0x2d')](respondWithResult(_0x484e56,null))['catch'](handleError(_0x484e56,null));};exports[_0x50cf('0x4e')]=function(_0x1fea80,_0x583433){return db['ChatGroup'][_0x50cf('0x4e')](_0x1fea80['body'],{})['then'](respondWithResult(_0x583433,0xc9))[_0x50cf('0x4a')](handleError(_0x583433,null));};exports['update']=function(_0x6d3b4c,_0x5aba68){if(_0x6d3b4c[_0x50cf('0x4f')]['id']){delete _0x6d3b4c[_0x50cf('0x4f')]['id'];}return db[_0x50cf('0x32')][_0x50cf('0x4d')]({'where':{'id':_0x6d3b4c['params']['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x5aba68,null))[_0x50cf('0x2d')](saveUpdates(_0x6d3b4c[_0x50cf('0x4f')],null))[_0x50cf('0x2d')](respondWithResult(_0x5aba68,null))[_0x50cf('0x4a')](handleError(_0x5aba68,null));};exports[_0x50cf('0x2c')]=function(_0x92201a,_0x405faf){return db[_0x50cf('0x32')]['find']({'where':{'id':_0x92201a[_0x50cf('0x50')]['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x405faf,null))[_0x50cf('0x2d')](removeEntity(_0x405faf,null))['catch'](handleError(_0x405faf,null));};exports[_0x50cf('0x51')]=function(_0x1b5719,_0x1d3df7){return db[_0x50cf('0x32')][_0x50cf('0x51')]()[_0x50cf('0x2d')](respondWithResult(_0x1d3df7,null))[_0x50cf('0x4a')](handleError(_0x1d3df7,null));};exports[_0x50cf('0x52')]=function(_0x1c89c9,_0x76d567,_0x2e4591){return db[_0x50cf('0x53')][_0x50cf('0x25')]({'where':{'ChatGroupId':_0x1c89c9[_0x50cf('0x50')]['id'],'ToId':_0x1c89c9['user']['id'],'read':![]}})[_0x50cf('0x2d')](function(_0x3bd081){return{'id':_[_0x50cf('0x54')](_0x1c89c9[_0x50cf('0x50')]['id']),'count':_0x3bd081};})['then'](respondWithResult(_0x76d567,null))['catch'](handleError(_0x76d567,null));};exports[_0x50cf('0x55')]=function(_0x3c3b05,_0x4551e0,_0x34d714){return db[_0x50cf('0x32')][_0x50cf('0x4d')]({'where':{'id':_0x3c3b05[_0x50cf('0x50')]['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x4551e0,null))[_0x50cf('0x2d')](function(_0x53b622){if(_0x53b622){return _0x53b622[_0x50cf('0x55')](_0x3c3b05[_0x50cf('0x4f')]['ids'],_[_0x50cf('0x56')](_0x3c3b05[_0x50cf('0x4f')],[_0x50cf('0x57'),'id'])||{});}})[_0x50cf('0x2d')](respondWithResult(_0x4551e0,null))['catch'](handleError(_0x4551e0,null));};exports['getMembers']=function(_0x5d3433,_0x69a1f0,_0x506f16){var _0x4ae229={};var _0x30a5dd={};var _0xd0a2d0;var _0x50d062;return db[_0x50cf('0x32')][_0x50cf('0x58')]({'where':{'id':_0x5d3433[_0x50cf('0x50')]['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x69a1f0,null))[_0x50cf('0x2d')](function(_0xe2b20b){if(_0xe2b20b){_0xd0a2d0=_0xe2b20b;_0x30a5dd[_0x50cf('0x3c')]=_[_0x50cf('0x38')](db[_0x50cf('0x59')][_0x50cf('0x33')]);_0x30a5dd[_0x50cf('0x37')]=_[_0x50cf('0x38')](_0x5d3433[_0x50cf('0x37')]);_0x30a5dd['filters']=_['intersection'](_0x30a5dd[_0x50cf('0x3c')],_0x30a5dd[_0x50cf('0x37')]);_0x4ae229['attributes']=_[_0x50cf('0x3b')](_0x30a5dd['model'],qs[_0x50cf('0x3d')](_0x5d3433[_0x50cf('0x37')]['fields']));_0x4ae229[_0x50cf('0x3a')]=_0x4ae229[_0x50cf('0x3a')][_0x50cf('0x3e')]?_0x4ae229[_0x50cf('0x3a')]:_0x30a5dd['model'];_0x4ae229['order']=qs[_0x50cf('0x42')](_0x5d3433[_0x50cf('0x37')][_0x50cf('0x42')]);_0x4ae229[_0x50cf('0x43')]=qs[_0x50cf('0x39')](_[_0x50cf('0x5a')](_0x5d3433['query'],_0x30a5dd[_0x50cf('0x39')]));if(_0x5d3433[_0x50cf('0x37')][_0x50cf('0x45')]){_0x4ae229[_0x50cf('0x43')]=_[_0x50cf('0x44')](_0x4ae229[_0x50cf('0x43')],{'$or':_[_0x50cf('0x31')](_0x4ae229[_0x50cf('0x3a')],function(_0xf44b78){var _0x2a0a79={};_0x2a0a79[_0xf44b78]={'$like':'%'+_0x5d3433[_0x50cf('0x37')][_0x50cf('0x45')]+'%'};return _0x2a0a79;})});}_0x4ae229=_[_0x50cf('0x44')]({},_0x4ae229,_0x5d3433['options']);return _0xd0a2d0['getMembers'](_0x4ae229);}})[_0x50cf('0x2d')](function(_0x286467){if(_0x286467){_0x50d062=_0x286467[_0x50cf('0x3e')];if(!_0x5d3433[_0x50cf('0x37')][_0x50cf('0x3f')](_0x50cf('0x40'))){_0x4ae229['limit']=qs['limit'](_0x5d3433[_0x50cf('0x37')][_0x50cf('0x26')]);_0x4ae229['offset']=qs['offset'](_0x5d3433[_0x50cf('0x37')][_0x50cf('0x23')]);}return _0xd0a2d0[_0x50cf('0x5b')](_0x4ae229);}})[_0x50cf('0x2d')](function(_0x13f630){if(_0x13f630){return _0x13f630?{'count':_0x50d062,'rows':_0x13f630}:null;}})['then'](respondWithResult(_0x69a1f0,null))[_0x50cf('0x4a')](handleError(_0x69a1f0,null));};exports[_0x50cf('0x5c')]=function(_0x5f5d2a,_0x112ad9,_0x1d660a){return db[_0x50cf('0x32')]['find']({'where':{'id':_0x5f5d2a[_0x50cf('0x50')]['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x112ad9,null))[_0x50cf('0x2d')](function(_0x2c2451){if(_0x2c2451){return _0x2c2451[_0x50cf('0x5c')](_0x5f5d2a[_0x50cf('0x37')]['ids']);}})[_0x50cf('0x2d')](respondWithStatusCode(_0x112ad9,null))[_0x50cf('0x4a')](handleError(_0x112ad9,null));};exports[_0x50cf('0x5d')]=function(_0x3b0d96,_0x58ae89,_0xb71eea){if(_0x3b0d96[_0x50cf('0x4f')]['id']){delete _0x3b0d96[_0x50cf('0x4f')]['id'];}return db[_0x50cf('0x32')][_0x50cf('0x4d')]({'where':{'id':_0x3b0d96[_0x50cf('0x50')]['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x58ae89,null))[_0x50cf('0x2d')](function(_0x1c039a){if(_0x1c039a){_0x3b0d96[_0x50cf('0x4f')]['ChatGroupId']=_0x1c039a['id'];return db[_0x50cf('0x53')][_0x50cf('0x4e')](_0x3b0d96[_0x50cf('0x4f')]);}})[_0x50cf('0x2d')](respondWithResult(_0x58ae89,null))['catch'](handleError(_0x58ae89,null));};exports[_0x50cf('0x5e')]=function(_0x165e01,_0x5024e6,_0x4beb58){var _0x92a1f4={};var _0x59705c={};var _0x5967f1;var _0x1e4fbe;return db[_0x50cf('0x32')]['findOne']({'where':{'id':_0x165e01[_0x50cf('0x50')]['id']}})[_0x50cf('0x2d')](handleEntityNotFound(_0x5024e6,null))[_0x50cf('0x2d')](function(_0x257794){if(_0x257794){_0x5967f1=_0x257794;_0x59705c['model']=_['keys'](db[_0x50cf('0x53')][_0x50cf('0x33')]);_0x59705c[_0x50cf('0x37')]=_[_0x50cf('0x38')](_0x165e01[_0x50cf('0x37')]);_0x59705c[_0x50cf('0x39')]=_[_0x50cf('0x3b')](_0x59705c[_0x50cf('0x3c')],_0x59705c[_0x50cf('0x37')]);_0x92a1f4[_0x50cf('0x3a')]=_[_0x50cf('0x3b')](_0x59705c['model'],qs['fields'](_0x165e01[_0x50cf('0x37')]['fields']));_0x92a1f4[_0x50cf('0x3a')]=_0x92a1f4[_0x50cf('0x3a')][_0x50cf('0x3e')]?_0x92a1f4[_0x50cf('0x3a')]:_0x59705c[_0x50cf('0x3c')];_0x92a1f4['order']=qs[_0x50cf('0x42')](_0x165e01[_0x50cf('0x37')][_0x50cf('0x42')]);_0x92a1f4['where']=qs[_0x50cf('0x39')](_[_0x50cf('0x5a')](_0x165e01[_0x50cf('0x37')],_0x59705c[_0x50cf('0x39')]));if(_0x165e01[_0x50cf('0x37')][_0x50cf('0x45')]){_0x92a1f4['where']=_[_0x50cf('0x44')](_0x92a1f4[_0x50cf('0x43')],{'$or':_['map'](_0x92a1f4[_0x50cf('0x3a')],function(_0x164fb2){var _0x1b6192={};_0x1b6192[_0x164fb2]={'$like':'%'+_0x165e01['query']['filter']+'%'};return _0x1b6192;})});}if(_0x165e01[_0x50cf('0x37')]['$gte']){var _0x286f6f=_0x165e01['query'][_0x50cf('0x5f')][_0x50cf('0x60')](',');var _0x38ea98={};_0x38ea98[_0x286f6f[0x0]]={'$gte':moment(_0x286f6f[0x1])[_0x50cf('0x61')]('YYYY-MM-DD\x20HH:mm:ss')};_0x92a1f4['where']=_[_0x50cf('0x44')](_0x92a1f4[_0x50cf('0x43')],_0x38ea98);}_0x92a1f4=_[_0x50cf('0x44')]({},_0x92a1f4,_0x165e01[_0x50cf('0x4c')]);return _0x5967f1['getMessages'](_0x92a1f4);}})['then'](function(_0x412ee3){if(_0x412ee3){_0x1e4fbe=_0x412ee3['length'];if(!_0x165e01[_0x50cf('0x37')][_0x50cf('0x3f')](_0x50cf('0x40'))){_0x92a1f4[_0x50cf('0x26')]=qs[_0x50cf('0x26')](_0x165e01['query']['limit']);_0x92a1f4[_0x50cf('0x23')]=qs[_0x50cf('0x23')](_0x165e01[_0x50cf('0x37')][_0x50cf('0x23')]);}return _0x5967f1[_0x50cf('0x5e')](_0x92a1f4);}})[_0x50cf('0x2d')](function(_0xa2a75b){if(_0xa2a75b){return _0xa2a75b?{'count':_0x1e4fbe,'rows':_0xa2a75b}:null;}})[_0x50cf('0x2d')](respondWithResult(_0x5024e6,null))['catch'](handleError(_0x5024e6,null));};
\ No newline at end of file
index f54e7e2..26ef4f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22e7=['exports','events','../../mysqldb','ChatGroup','setMaxListeners','remove','emit','hook'];(function(_0xc9cd47,_0x35a546){var _0x26827e=function(_0x32d967){while(--_0x32d967){_0xc9cd47['push'](_0xc9cd47['shift']());}};_0x26827e(++_0x35a546);}(_0x22e7,0x159));var _0x722e=function(_0x14cd57,_0x27c05c){_0x14cd57=_0x14cd57-0x0;var _0x194e1a=_0x22e7[_0x14cd57];return _0x194e1a;};'use strict';var EventEmitter=require(_0x722e('0x0'));var ChatGroup=require(_0x722e('0x1'))['db'][_0x722e('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x722e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x722e('0x4')};function emitEvent(_0x1a5d7f){return function(_0x5a1853,_0x22fbad,_0x507a4c){ChatGroupEvents[_0x722e('0x5')](_0x1a5d7f+':'+_0x5a1853['id'],_0x5a1853);ChatGroupEvents['emit'](_0x1a5d7f,_0x5a1853);_0x507a4c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x722e('0x6')](e,emitEvent(event));}}module[_0x722e('0x7')]=ChatGroupEvents;
\ No newline at end of file
+var _0xd92e=['../../mysqldb','ChatGroup','save','remove','emit','exports'];(function(_0x2497ed,_0x51ecf4){var _0x32d9d0=function(_0x2f674e){while(--_0x2f674e){_0x2497ed['push'](_0x2497ed['shift']());}};_0x32d9d0(++_0x51ecf4);}(_0xd92e,0x1bc));var _0xed92=function(_0x5db2c5,_0x2596ea){_0x5db2c5=_0x5db2c5-0x0;var _0x4e5c37=_0xd92e[_0x5db2c5];return _0x4e5c37;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0xed92('0x0'))['db'][_0xed92('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xed92('0x2'),'afterUpdate':'update','afterDestroy':_0xed92('0x3')};function emitEvent(_0x462df3){return function(_0xdae6d9,_0x5b26fe,_0x3473b8){ChatGroupEvents[_0xed92('0x4')](_0x462df3+':'+_0xdae6d9['id'],_0xdae6d9);ChatGroupEvents['emit'](_0x462df3,_0xdae6d9);_0x3473b8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xed92('0x5')]=ChatGroupEvents;
\ No newline at end of file
index bb0c55e..163783a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee67=['util','api','moment','bluebird','rimraf','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','lodash'];(function(_0x58fcae,_0x3f6387){var _0x2076ed=function(_0x5851ad){while(--_0x5851ad){_0x58fcae['push'](_0x58fcae['shift']());}};_0x2076ed(++_0x3f6387);}(_0xee67,0x99));var _0x7ee6=function(_0x32d0a4,_0x5ce63a){_0x32d0a4=_0x32d0a4-0x0;var _0x3ac39f=_0xee67[_0x32d0a4];return _0x3ac39f;};'use strict';var _=require(_0x7ee6('0x0'));var util=require(_0x7ee6('0x1'));var logger=require('../../config/logger')(_0x7ee6('0x2'));var moment=require(_0x7ee6('0x3'));var BPromise=require(_0x7ee6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7ee6('0x5'));var config=require(_0x7ee6('0x6'));var attributes=require(_0x7ee6('0x7'));module[_0x7ee6('0x8')]=function(_0x235202,_0x2d7e6a){return _0x235202[_0x7ee6('0x9')]('ChatGroup',attributes,{'tableName':_0x7ee6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa3e3=['../../config/environment','./chatGroup.attributes','define','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5e9a69,_0x40c0ec){var _0x5979c8=function(_0x293da2){while(--_0x293da2){_0x5e9a69['push'](_0x5e9a69['shift']());}};_0x5979c8(++_0x40c0ec);}(_0xa3e3,0xdf));var _0x3a3e=function(_0x433c88,_0x248cc5){_0x433c88=_0x433c88-0x0;var _0x33e1b0=_0xa3e3[_0x433c88];return _0x33e1b0;};'use strict';var _=require(_0x3a3e('0x0'));var util=require('util');var logger=require(_0x3a3e('0x1'))(_0x3a3e('0x2'));var moment=require(_0x3a3e('0x3'));var BPromise=require(_0x3a3e('0x4'));var rp=require(_0x3a3e('0x5'));var fs=require('fs');var path=require(_0x3a3e('0x6'));var rimraf=require(_0x3a3e('0x7'));var config=require(_0x3a3e('0x8'));var attributes=require(_0x3a3e('0x9'));module['exports']=function(_0x1867a3,_0x319ee8){return _0x1867a3[_0x3a3e('0xa')]('ChatGroup',attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 16239e0..dfab312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a59=['http','redis','defaults','localhost','socket.io-emitter','register','then','info','request\x20sent','debug','stringify','error','message','ChatGroup,\x20%s,\x20%s','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x1d890a,_0x1323d4){var _0x1c9058=function(_0x5dfc68){while(--_0x5dfc68){_0x1d890a['push'](_0x1d890a['shift']());}};_0x1c9058(++_0x1323d4);}(_0x7a59,0x16e));var _0x97a5=function(_0x119280,_0x439c3e){_0x119280=_0x119280-0x0;var _0x481797=_0x7a59[_0x119280];return _0x481797;};'use strict';var _=require(_0x97a5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x97a5('0x1'));var rs=require(_0x97a5('0x2'));var fs=require('fs');var Redis=require(_0x97a5('0x3'));var db=require(_0x97a5('0x4'))['db'];var utils=require(_0x97a5('0x5'));var logger=require('../../config/logger')(_0x97a5('0x6'));var config=require(_0x97a5('0x7'));var jayson=require(_0x97a5('0x8'));var client=jayson['client'][_0x97a5('0x9')]({'port':0x232a});config[_0x97a5('0xa')]=_[_0x97a5('0xb')](config[_0x97a5('0xa')],{'host':_0x97a5('0xc'),'port':0x18eb});var socket=require(_0x97a5('0xd'))(new Redis(config[_0x97a5('0xa')]));require('./chatGroup.socket')[_0x97a5('0xe')](socket);function respondWithRpcPromise(_0x101c3f,_0xd70b51,_0x388bd7){return new BPromise(function(_0x1fc6b5,_0x4d93a5){return client['request'](_0x101c3f,_0x388bd7)[_0x97a5('0xf')](function(_0x41022d){logger[_0x97a5('0x10')]('ChatGroup,\x20%s,\x20%s',_0xd70b51,_0x97a5('0x11'));logger[_0x97a5('0x12')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0xd70b51,'request\x20sent',JSON[_0x97a5('0x13')](_0x41022d));if(_0x41022d[_0x97a5('0x14')]){if(_0x41022d['error']['code']===0x1f4){logger['error']('ChatGroup,\x20%s,\x20%s',_0xd70b51,_0x41022d[_0x97a5('0x14')][_0x97a5('0x15')]);return _0x4d93a5(_0x41022d[_0x97a5('0x14')]['message']);}logger[_0x97a5('0x14')](_0x97a5('0x16'),_0xd70b51,_0x41022d['error'][_0x97a5('0x15')]);return _0x1fc6b5(_0x41022d['error'][_0x97a5('0x15')]);}else{logger['info']('ChatGroup,\x20%s,\x20%s',_0xd70b51,'request\x20sent');_0x1fc6b5(_0x41022d[_0x97a5('0x17')]['message']);}})[_0x97a5('0x18')](function(_0x9863ea){logger[_0x97a5('0x14')](_0x97a5('0x16'),_0xd70b51,_0x9863ea);_0x4d93a5(_0x9863ea);});});}
\ No newline at end of file
+var _0x1f10=['error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s'];(function(_0x1c6b91,_0x399c82){var _0x522c9a=function(_0xb5d12a){while(--_0xb5d12a){_0x1c6b91['push'](_0x1c6b91['shift']());}};_0x522c9a(++_0x399c82);}(_0x1f10,0x69));var _0x01f1=function(_0x16da75,_0x52bd99){_0x16da75=_0x16da75-0x0;var _0x5e60a3=_0x1f10[_0x16da75];return _0x5e60a3;};'use strict';var _=require(_0x01f1('0x0'));var util=require(_0x01f1('0x1'));var moment=require('moment');var BPromise=require(_0x01f1('0x2'));var rs=require(_0x01f1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x01f1('0x4'));var logger=require('../../config/logger')(_0x01f1('0x5'));var config=require(_0x01f1('0x6'));var jayson=require(_0x01f1('0x7'));var client=jayson['client'][_0x01f1('0x8')]({'port':0x232a});config[_0x01f1('0x9')]=_[_0x01f1('0xa')](config[_0x01f1('0x9')],{'host':_0x01f1('0xb'),'port':0x18eb});var socket=require(_0x01f1('0xc'))(new Redis(config[_0x01f1('0x9')]));require(_0x01f1('0xd'))['register'](socket);function respondWithRpcPromise(_0x120bd1,_0x413939,_0x46dd46){return new BPromise(function(_0x38c644,_0x4fee68){return client['request'](_0x120bd1,_0x46dd46)[_0x01f1('0xe')](function(_0x2df4f5){logger[_0x01f1('0xf')](_0x01f1('0x10'),_0x413939,_0x01f1('0x11'));logger[_0x01f1('0x12')](_0x01f1('0x13'),_0x413939,_0x01f1('0x11'),JSON['stringify'](_0x2df4f5));if(_0x2df4f5[_0x01f1('0x14')]){if(_0x2df4f5[_0x01f1('0x14')][_0x01f1('0x15')]===0x1f4){logger[_0x01f1('0x14')](_0x01f1('0x10'),_0x413939,_0x2df4f5['error'][_0x01f1('0x16')]);return _0x4fee68(_0x2df4f5['error'][_0x01f1('0x16')]);}logger[_0x01f1('0x14')](_0x01f1('0x10'),_0x413939,_0x2df4f5[_0x01f1('0x14')][_0x01f1('0x16')]);return _0x38c644(_0x2df4f5[_0x01f1('0x14')][_0x01f1('0x16')]);}else{logger[_0x01f1('0xf')](_0x01f1('0x10'),_0x413939,_0x01f1('0x11'));_0x38c644(_0x2df4f5[_0x01f1('0x17')][_0x01f1('0x16')]);}})[_0x01f1('0x18')](function(_0xb4d953){logger['error'](_0x01f1('0x10'),_0x413939,_0xb4d953);_0x4fee68(_0xb4d953);});});}
\ No newline at end of file
index f824847..32a3c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5644=['removeListener','length','chatGroup:','./chatGroup.events','save','update','emit'];(function(_0x1b64dd,_0x2cf769){var _0xeb464c=function(_0x38272c){while(--_0x38272c){_0x1b64dd['push'](_0x1b64dd['shift']());}};_0xeb464c(++_0x2cf769);}(_0x5644,0x1d8));var _0x4564=function(_0x5bb4e8,_0x44b756){_0x5bb4e8=_0x5bb4e8-0x0;var _0x2a86f2=_0x5644[_0x5bb4e8];return _0x2a86f2;};'use strict';var ChatGroupEvents=require(_0x4564('0x0'));var events=[_0x4564('0x1'),'remove',_0x4564('0x2')];function createListener(_0x2f387f,_0x2ccb1f){return function(_0x240810){_0x2ccb1f[_0x4564('0x3')](_0x2f387f,_0x240810);};}function removeListener(_0x1d3b33,_0x2ed107){return function(){ChatGroupEvents[_0x4564('0x4')](_0x1d3b33,_0x2ed107);};}exports['register']=function(_0xa8da91){for(var _0x30ca37=0x0,_0xeab88d=events[_0x4564('0x5')];_0x30ca37<_0xeab88d;_0x30ca37++){var _0x20e73d=events[_0x30ca37];var _0x12a8fe=createListener(_0x4564('0x6')+_0x20e73d,_0xa8da91);ChatGroupEvents['on'](_0x20e73d,_0x12a8fe);}};
\ No newline at end of file
+var _0x78d1=['removeListener','./chatGroup.events','save','remove','update','emit'];(function(_0x5cb139,_0x1a5f77){var _0x816e2b=function(_0x1ad50f){while(--_0x1ad50f){_0x5cb139['push'](_0x5cb139['shift']());}};_0x816e2b(++_0x1a5f77);}(_0x78d1,0xf1));var _0x178d=function(_0x5bd451,_0xcedf45){_0x5bd451=_0x5bd451-0x0;var _0x3a89b9=_0x78d1[_0x5bd451];return _0x3a89b9;};'use strict';var ChatGroupEvents=require(_0x178d('0x0'));var events=[_0x178d('0x1'),_0x178d('0x2'),_0x178d('0x3')];function createListener(_0x578b2d,_0xa0c0e8){return function(_0x6189f7){_0xa0c0e8[_0x178d('0x4')](_0x578b2d,_0x6189f7);};}function removeListener(_0x32fc2b,_0x2acaa3){return function(){ChatGroupEvents[_0x178d('0x5')](_0x32fc2b,_0x2acaa3);};}exports['register']=function(_0x5b408a){for(var _0x88d7b2=0x0,_0x1bf0ce=events['length'];_0x88d7b2<_0x1bf0ce;_0x88d7b2++){var _0x930dc=events[_0x88d7b2];var _0x3754a5=createListener('chatGroup:'+_0x930dc,_0x5b408a);ChatGroupEvents['on'](_0x930dc,_0x3754a5);}};
\ No newline at end of file
index abe6ec0..42676ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6364=['/describe','describe','show','/:id/members','getMembers','/:id/messages','getMessages','post','put','/:id','delete','removeMembers','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated'];(function(_0x1e2080,_0x53283b){var _0x260111=function(_0x15da5e){while(--_0x15da5e){_0x1e2080['push'](_0x1e2080['shift']());}};_0x260111(++_0x53283b);}(_0x6364,0x9d));var _0x4636=function(_0x2c955e,_0x538021){_0x2c955e=_0x2c955e-0x0;var _0x318592=_0x6364[_0x2c955e];return _0x318592;};'use strict';var multer=require(_0x4636('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4636('0x1'));var express=require(_0x4636('0x2'));var router=express[_0x4636('0x3')]();var fs_extra=require(_0x4636('0x4'));var auth=require(_0x4636('0x5'));var interaction=require(_0x4636('0x6'));var config=require(_0x4636('0x7'));var controller=require(_0x4636('0x8'));router[_0x4636('0x9')]('/',auth[_0x4636('0xa')](),controller['index']);router[_0x4636('0x9')](_0x4636('0xb'),auth[_0x4636('0xa')](),controller[_0x4636('0xc')]);router[_0x4636('0x9')]('/:id',auth[_0x4636('0xa')](),controller[_0x4636('0xd')]);router[_0x4636('0x9')]('/:id/unread',auth['isAuthenticated'](),controller['getUnread']);router[_0x4636('0x9')](_0x4636('0xe'),auth[_0x4636('0xa')](),controller[_0x4636('0xf')]);router[_0x4636('0x9')](_0x4636('0x10'),auth[_0x4636('0xa')](),controller[_0x4636('0x11')]);router[_0x4636('0x12')]('/',auth[_0x4636('0xa')](),controller['create']);router['post'](_0x4636('0xe'),auth['isAuthenticated'](),controller['addMembers']);router[_0x4636('0x12')](_0x4636('0x10'),auth[_0x4636('0xa')](),controller['addMessage']);router[_0x4636('0x13')](_0x4636('0x14'),auth[_0x4636('0xa')](),controller['update']);router[_0x4636('0x15')](_0x4636('0x14'),auth[_0x4636('0xa')](),controller['destroy']);router[_0x4636('0x15')](_0x4636('0xe'),auth['isAuthenticated'](),controller[_0x4636('0x16')]);module[_0x4636('0x17')]=router;
\ No newline at end of file
+var _0x1b11=['destroy','multer','util','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','/:id/members','getMembers','/:id/messages','addMembers','addMessage','put'];(function(_0x3d0c12,_0x2304fb){var _0x16d3d8=function(_0x3974ed){while(--_0x3974ed){_0x3d0c12['push'](_0x3d0c12['shift']());}};_0x16d3d8(++_0x2304fb);}(_0x1b11,0x109));var _0x11b1=function(_0x255eb2,_0x373d65){_0x255eb2=_0x255eb2-0x0;var _0x4931a=_0x1b11[_0x255eb2];return _0x4931a;};'use strict';var multer=require(_0x11b1('0x0'));var util=require(_0x11b1('0x1'));var path=require('path');var timeout=require(_0x11b1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x11b1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x11b1('0x4'));var config=require(_0x11b1('0x5'));var controller=require(_0x11b1('0x6'));router[_0x11b1('0x7')]('/',auth[_0x11b1('0x8')](),controller[_0x11b1('0x9')]);router[_0x11b1('0x7')](_0x11b1('0xa'),auth[_0x11b1('0x8')](),controller[_0x11b1('0xb')]);router[_0x11b1('0x7')](_0x11b1('0xc'),auth[_0x11b1('0x8')](),controller[_0x11b1('0xd')]);router['get'](_0x11b1('0xe'),auth['isAuthenticated'](),controller['getUnread']);router[_0x11b1('0x7')](_0x11b1('0xf'),auth[_0x11b1('0x8')](),controller[_0x11b1('0x10')]);router[_0x11b1('0x7')](_0x11b1('0x11'),auth[_0x11b1('0x8')](),controller['getMessages']);router['post']('/',auth[_0x11b1('0x8')](),controller['create']);router['post'](_0x11b1('0xf'),auth['isAuthenticated'](),controller[_0x11b1('0x12')]);router['post'](_0x11b1('0x11'),auth[_0x11b1('0x8')](),controller[_0x11b1('0x13')]);router[_0x11b1('0x14')](_0x11b1('0xc'),auth[_0x11b1('0x8')](),controller['update']);router['delete']('/:id',auth[_0x11b1('0x8')](),controller[_0x11b1('0x15')]);router['delete'](_0x11b1('0xf'),auth['isAuthenticated'](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
index 05f917a..410d496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['DATE','out','BOOLEAN','sequelize','exports','star','thumb','TEXT','STRING','long'];(function(_0x386c3e,_0x44a375){var _0x4b8e13=function(_0x583c8f){while(--_0x583c8f){_0x386c3e['push'](_0x386c3e['shift']());}};_0x4b8e13(++_0x44a375);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0x0d8b('0x2'),_0x0d8b('0x3')),'defaultValue':_0x0d8b('0x2')},'ratingMessage':{'type':Sequelize[_0x0d8b('0x4')]},'pathTranscript':{'type':Sequelize[_0x0d8b('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x0d8b('0x5')]},'secondDisposition':{'type':Sequelize[_0x0d8b('0x5')]},'thirdDisposition':{'type':Sequelize[_0x0d8b('0x5')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x0d8b('0x5')]},'browserVersion':{'type':Sequelize[_0x0d8b('0x5')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x0d8b('0x5')]},'deviceModel':{'type':Sequelize[_0x0d8b('0x5')]},'deviceVendor':{'type':Sequelize[_0x0d8b('0x5')]},'deviceType':{'type':Sequelize[_0x0d8b('0x5')]},'referer':{'type':Sequelize[_0x0d8b('0x4')]},'customerIp':{'type':Sequelize[_0x0d8b('0x5')]},'formData':{'type':Sequelize[_0x0d8b('0x4')](_0x0d8b('0x6'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x0d8b('0x7')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x0d8b('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x0d8b('0x5')]},'customerPort':{'type':Sequelize[_0x0d8b('0x5')]},'vidaooSessionId':{'type':Sequelize[_0x0d8b('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x0d8b('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0xd8b0=['DATE','out','BOOLEAN','sequelize','exports','star','thumb','TEXT','STRING','long'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0x0d8b('0x2'),_0x0d8b('0x3')),'defaultValue':_0x0d8b('0x2')},'ratingMessage':{'type':Sequelize[_0x0d8b('0x4')]},'pathTranscript':{'type':Sequelize[_0x0d8b('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x0d8b('0x5')]},'secondDisposition':{'type':Sequelize[_0x0d8b('0x5')]},'thirdDisposition':{'type':Sequelize[_0x0d8b('0x5')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x0d8b('0x5')]},'browserVersion':{'type':Sequelize[_0x0d8b('0x5')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x0d8b('0x5')]},'deviceModel':{'type':Sequelize[_0x0d8b('0x5')]},'deviceVendor':{'type':Sequelize[_0x0d8b('0x5')]},'deviceType':{'type':Sequelize[_0x0d8b('0x5')]},'referer':{'type':Sequelize[_0x0d8b('0x4')]},'customerIp':{'type':Sequelize[_0x0d8b('0x5')]},'formData':{'type':Sequelize[_0x0d8b('0x4')](_0x0d8b('0x6'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0x0d8b('0x7')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x0d8b('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x0d8b('0x5')]},'customerPort':{'type':Sequelize[_0x0d8b('0x5')]},'vidaooSessionId':{'type':Sequelize[_0x0d8b('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x0d8b('0x9')],'defaultValue':![]}};
\ No newline at end of file
index 03bb139..55ae433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7964=['findAll','addTags','setTags','omit','color','emit','chatInteractionTags:save','removeTags','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','direction','secret','Owner','get','mkdirSync','Chat','Account','N.A.','closedAt','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','lastName','renderFile','downloadInteraction.ejs','transcript-','.pdf','log','eml-format','rimraf','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','register','http','client','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','sendStatus','json','offset','undefined','limit','status','apply','reject','save','update','destroy','end','stack','render','agent','interaction','map','fullname','TagIds','Tags','split','waiting','talking','abandoned','total','closed','UserId','disposition','ChatInteraction','fieldName','type','key','model','name','keys','intersection','query','attributes','fields','hasOwnProperty','order','sort','filters','pick','select','field','from','tools_tags','u.id','ui.ChatInteractionId','user_has_chat_interactions','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','left_join','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','expr','search','length','conditions','find','value','having','`\x20=\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','body','some','compact','ChatWebsiteId','where','concat','createdAt','parse','$gte','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','isEmpty','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','sequelize','toString','count','keyBy','merge','unreadMessages','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','c.lastName','c.email','c.phone','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','push','rows','show','params','includeAll','include','create','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooNote','vidaooMetadata','email','contact','account','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','follow','metadata','ValidationError','Sequelize','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','ChatOfflineMessageId','join','root','server/files/attachments/','download','mailTranscript','format','now','Messages','ChatWebsite','CmContact','%s%d','agentAlias','System','customer','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','appendFileSync','MailServerOut','Smtp','service','host','port','secure','auth','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','rawAttributes','nolimit','YYYY-MM-DD\x20HH:mm:ss','options','getMyMessages','includeAgent'];(function(_0x2aaa60,_0x22258f){var _0x2e3fa5=function(_0x335589){while(--_0x335589){_0x2aaa60['push'](_0x2aaa60['shift']());}};_0x2e3fa5(++_0x22258f);}(_0x7964,0x153));var _0x4796=function(_0x2a200b,_0x41e85c){_0x2a200b=_0x2a200b-0x0;var _0x24bfc0=_0x7964[_0x2a200b];return _0x24bfc0;};'use strict';var emlformat=require(_0x4796('0x0'));var rimraf=require(_0x4796('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4796('0x2'));var util=require(_0x4796('0x3'));var path=require('path');var sox=require(_0x4796('0x4'));var csv=require(_0x4796('0x5'));var ejs=require(_0x4796('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4796('0x7'));var squel=require(_0x4796('0x8'));var crypto=require(_0x4796('0x9'));var jsforce=require(_0x4796('0xa'));var deskjs=require(_0x4796('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4796('0xc'))(_0x4796('0xd'));var utils=require(_0x4796('0xe'));var config=require(_0x4796('0xf'));var licenseUtil=require(_0x4796('0x10'));var db=require(_0x4796('0x11'))['db'];config[_0x4796('0x12')]=_[_0x4796('0x13')](config[_0x4796('0x12')],{'host':_0x4796('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4796('0x12')]));require(_0x4796('0x15'))[_0x4796('0x16')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x4796('0x17')]({'port':0x232b});var client9004=jayson[_0x4796('0x18')]['http']({'port':0x232c});function respondWithRpcPromise(_0x1ff966,_0x23b847,_0x251a19,_0x434a17){return new BPromise(function(_0x53e44d,_0x2e1b0e){var _0x430270=_0x434a17||client;return _0x430270['request'](_0x1ff966,_0x251a19)[_0x4796('0x19')](function(_0x5a4b64){logger['info'](_0x4796('0x1a'),_0x23b847,_0x4796('0x1b'));logger[_0x4796('0x1c')](_0x4796('0x1d'),_0x23b847,_0x4796('0x1b'),JSON['stringify'](_0x5a4b64));if(_0x5a4b64[_0x4796('0x1e')]){if(_0x5a4b64[_0x4796('0x1e')][_0x4796('0x1f')]===0x1f4){logger[_0x4796('0x1e')](_0x4796('0x1a'),_0x23b847,_0x5a4b64[_0x4796('0x1e')][_0x4796('0x20')]);return _0x2e1b0e(_0x5a4b64[_0x4796('0x1e')][_0x4796('0x20')]);}logger[_0x4796('0x1e')](_0x4796('0x1a'),_0x23b847,_0x5a4b64[_0x4796('0x1e')][_0x4796('0x20')]);return _0x53e44d(_0x5a4b64['error'][_0x4796('0x20')]);}else{logger[_0x4796('0x21')]('ChatInteraction,\x20%s,\x20%s',_0x23b847,_0x4796('0x1b'));_0x53e44d(_0x5a4b64[_0x4796('0x22')]['message']);}})[_0x4796('0x23')](function(_0x27cb75){logger['error'](_0x4796('0x1a'),_0x23b847,_0x27cb75);_0x2e1b0e(_0x27cb75);});});}function respondWithStatusCode(_0x5ee7ea,_0x5bef43){_0x5bef43=_0x5bef43||0xcc;return function(_0x1fb106){if(_0x1fb106){return _0x5ee7ea[_0x4796('0x24')](_0x5bef43);}return _0x5ee7ea['status'](_0x5bef43)['end']();};}function respondWithResult(_0x3980a9,_0x199305){_0x199305=_0x199305||0xc8;return function(_0x39e92b){if(_0x39e92b){return _0x3980a9['status'](_0x199305)[_0x4796('0x25')](_0x39e92b);}};}function respondWithFilteredResult(_0x2876fe,_0x3d4b63){return function(_0x84a9d5){if(_0x84a9d5){var _0x4d1b0e=typeof _0x3d4b63[_0x4796('0x26')]===_0x4796('0x27')&&typeof _0x3d4b63[_0x4796('0x28')]===_0x4796('0x27');var _0xa83acc=_0x84a9d5['count'];var _0x4fc92a=_0x4d1b0e?0x0:_0x3d4b63[_0x4796('0x26')];var _0x10cb1c=_0x4d1b0e?_0x84a9d5['count']:_0x3d4b63['offset']+_0x3d4b63[_0x4796('0x28')];var _0x4c261f;if(_0x10cb1c>=_0xa83acc){_0x10cb1c=_0xa83acc;_0x4c261f=0xc8;}else{_0x4c261f=0xce;}_0x2876fe[_0x4796('0x29')](_0x4c261f);return _0x2876fe['set']('Content-Range',_0x4fc92a+'-'+_0x10cb1c+'/'+_0xa83acc)[_0x4796('0x25')](_0x84a9d5);}return null;};}function patchUpdates(_0xdd3cdf){return function(_0x2bd955){try{jsonpatch[_0x4796('0x2a')](_0x2bd955,_0xdd3cdf,!![]);}catch(_0x11f827){return BPromise[_0x4796('0x2b')](_0x11f827);}return _0x2bd955[_0x4796('0x2c')]();};}function saveUpdates(_0x1731ce,_0x2c60d3){return function(_0x32b158){if(_0x32b158){return _0x32b158[_0x4796('0x2d')](_0x1731ce)[_0x4796('0x19')](function(_0xcc5285){return _0xcc5285;});}return null;};}function removeEntity(_0x268f89,_0x32832e){return function(_0x5b08a8){if(_0x5b08a8){return _0x5b08a8[_0x4796('0x2e')]()['then'](function(){_0x268f89[_0x4796('0x29')](0xcc)[_0x4796('0x2f')]();});}};}function handleEntityNotFound(_0x21ceec,_0x2ba1b6){return function(_0x7140ea){if(!_0x7140ea){_0x21ceec['sendStatus'](0x194);}return _0x7140ea;};}function handleError(_0x47bf71,_0x1155c6){_0x1155c6=_0x1155c6||0x1f4;return function(_0x3aeb03){logger[_0x4796('0x1e')](_0x3aeb03[_0x4796('0x30')]);if(_0x3aeb03['name']){delete _0x3aeb03['name'];}_0x47bf71[_0x4796('0x29')](_0x1155c6)['send'](_0x3aeb03);};}function getMustacheRender(_0x211bf8,_0x267ef8){return Mustache[_0x4796('0x31')](_0x211bf8,_['merge'](_0x267ef8['body'],{'contact':_0x267ef8['contact'],'message':_0x267ef8[_0x4796('0x20')],'agent':_0x267ef8[_0x4796('0x32')],'interaction':_0x267ef8[_0x4796('0x33')],'account':_0x267ef8['account']}))||'';}function getInteractionUsers(_0x2f05bc,_0xbb0f90){return new BPromise(function(_0x26f147,_0x550d44){try{if(_0xbb0f90[_0x2f05bc['id']]){_0x2f05bc['Users']=_[_0x4796('0x34')](_0xbb0f90[_0x2f05bc['id']],function(_0x1877cc){return{'id':_0x1877cc['id'],'fullname':_0x1877cc[_0x4796('0x35')]};});}}catch(_0x9c2d74){_0x550d44(_0x9c2d74);}_0x26f147(_0x2f05bc);});}function getInteractionTags(_0x3b63fa,_0x36a9c9){return new BPromise(function(_0x19053a,_0x5ebe87){try{if(_0x3b63fa[_0x4796('0x36')]){_0x3b63fa[_0x4796('0x37')]=[];_0x3b63fa[_0x4796('0x36')][_0x4796('0x38')](',')['forEach'](function(_0x15662d){_0x3b63fa['Tags']['push'](_0x36a9c9[_0x15662d]);});}delete _0x3b63fa[_0x4796('0x36')];}catch(_0xf02780){_0x5ebe87(_0xf02780);}_0x19053a(_0x3b63fa);});}function updateChatInteraction(_0x1bacf4,_0x29004f,_0x24e729){return new BPromise(function(_0x140836,_0x5f517d){return getInteractionUsers(_0x1bacf4,_0x24e729)[_0x4796('0x19')](function(_0x17b17b){return getInteractionTags(_0x17b17b,_0x29004f);})['then'](function(_0x21256b){return getStateInteraction(_0x21256b);})[_0x4796('0x19')](function(_0x527579){_0x140836(_0x527579);})['catch'](function(_0x2f4926){_0x5f517d(_0x2f4926);});});}function getStateInteraction(_0x41fcc9){return new BPromise(function(_0x1227fb){_0x41fcc9[_0x4796('0x39')]=0x0;_0x41fcc9[_0x4796('0x3a')]=0x0;_0x41fcc9['answered']=0x0;_0x41fcc9['unmanaged']=0x0;_0x41fcc9[_0x4796('0x3b')]=0x0;_0x41fcc9[_0x4796('0x3c')]=0x0;if(!_0x41fcc9[_0x4796('0x3d')]&&!_0x41fcc9[_0x4796('0x3e')]){_0x41fcc9[_0x4796('0x39')]+=0x1;}if(!_0x41fcc9[_0x4796('0x3d')]&&_0x41fcc9[_0x4796('0x3e')]){_0x41fcc9[_0x4796('0x3a')]+=0x1;if(_0x41fcc9[_0x4796('0x39')]){_0x41fcc9[_0x4796('0x39')]-=0x1;}}if(_0x41fcc9[_0x4796('0x3d')]&&_0x41fcc9[_0x4796('0x3f')]===_0x4796('0x3b')){_0x41fcc9['abandoned']+=0x1;if(_0x41fcc9['waiting']){_0x41fcc9[_0x4796('0x39')]-=0x1;}}else if(_0x41fcc9[_0x4796('0x3d')]&&!_0x41fcc9[_0x4796('0x3e')]&&_0x41fcc9[_0x4796('0x3f')]){_0x41fcc9['unmanaged']+=0x1;if(_0x41fcc9[_0x4796('0x39')]){_0x41fcc9[_0x4796('0x39')]-=0x1;}}else if(_0x41fcc9[_0x4796('0x3d')]&&_0x41fcc9[_0x4796('0x3e')]){_0x41fcc9['answered']+=0x1;if(_0x41fcc9['talking']){_0x41fcc9[_0x4796('0x3a')]-=0x1;}}_0x41fcc9[_0x4796('0x3c')]+=0x1;_0x1227fb(_0x41fcc9);});}exports['index']=function(_0x5a8ca2,_0x325556){var _0x344079={},_0x1e594e={},_0x4ecbd7={'count':0x0,'rows':[]};var _0x454b24=_['map'](db[_0x4796('0x40')]['rawAttributes'],function(_0x1ae2ae){return{'name':_0x1ae2ae[_0x4796('0x41')],'type':_0x1ae2ae[_0x4796('0x42')][_0x4796('0x43')]};});_0x1e594e[_0x4796('0x44')]=_[_0x4796('0x34')](_0x454b24,_0x4796('0x45'));_0x1e594e['query']=_[_0x4796('0x46')](_0x5a8ca2['query']);_0x1e594e['filters']=_[_0x4796('0x47')](_0x1e594e[_0x4796('0x44')],_0x1e594e[_0x4796('0x48')]);_0x344079[_0x4796('0x49')]=_[_0x4796('0x47')](_0x1e594e[_0x4796('0x44')],qs[_0x4796('0x4a')](_0x5a8ca2['query'][_0x4796('0x4a')]));_0x344079[_0x4796('0x49')]=_0x344079[_0x4796('0x49')]['length']?_0x344079['attributes']:_0x1e594e['model'];if(!_0x5a8ca2['query'][_0x4796('0x4b')]('nolimit')){_0x344079[_0x4796('0x28')]=qs[_0x4796('0x28')](_0x5a8ca2[_0x4796('0x48')][_0x4796('0x28')]);_0x344079['offset']=qs[_0x4796('0x26')](_0x5a8ca2[_0x4796('0x48')][_0x4796('0x26')]);}_0x344079[_0x4796('0x4c')]=qs[_0x4796('0x4d')](_0x5a8ca2['query'][_0x4796('0x4d')]);_0x344079['where']=qs[_0x4796('0x4e')](_[_0x4796('0x4f')](_0x5a8ca2['query'],_0x1e594e[_0x4796('0x4e')]),_0x454b24);var _0x4054f3=[];var _0xe6a4a=squel[_0x4796('0x50')]()['field']('id')[_0x4796('0x51')](_0x4796('0x45'))['field']('color')[_0x4796('0x52')](_0x4796('0x53'));var _0x518d8e=squel[_0x4796('0x50')]()[_0x4796('0x51')](_0x4796('0x54'))['field']('u.fullname')[_0x4796('0x51')](_0x4796('0x55'))[_0x4796('0x52')](_0x4796('0x56'),'ui')['left_join'](_0x4796('0x57'),'u',_0x4796('0x58'));var _0x3589c9=squel[_0x4796('0x50')]()[_0x4796('0x52')](_0x4796('0x59'),'i')['left_join'](_0x4796('0x5a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4796('0x5b')](_0x4796('0x57'),'o',_0x4796('0x5c'))[_0x4796('0x5b')]('chat_websites','a',_0x4796('0x5d'))[_0x4796('0x5b')](_0x4796('0x5e'),'me',_0x4796('0x5f'))[_0x4796('0x5b')](_0x4796('0x60'),'it',_0x4796('0x61'))[_0x4796('0x5b')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x2bfdb5=squel[_0x4796('0x62')]();var _0x74c2e4=[];var _0x3811ba=squel[_0x4796('0x62')]();var _0x2f966c;if(_0x5a8ca2[_0x4796('0x48')][_0x4796('0x63')]){_0x2f966c=as['parseSearch'](_0x5a8ca2['query']['search']);var _0x445ea9=_0x2f966c['sqlOperator'];for(var _0x34615d=0x0;_0x34615d<_0x2f966c['conditions'][_0x4796('0x64')];_0x34615d++){var _0x25963d=_0x2f966c[_0x4796('0x65')][_0x34615d];var _0x4ed7e9='i';var _0x2a37ed=_[_0x4796('0x66')](_0x454b24,['name',_0x25963d[_0x4796('0x51')]]);if(!_0x2a37ed){switch(_0x25963d[_0x4796('0x51')]){case'unreadMessages':if(_0x25963d[_0x4796('0x67')]==0x1){_0x3589c9[_0x4796('0x68')]('`'+_0x25963d[_0x4796('0x51')]+_0x4796('0x69'));}else{_0x3589c9[_0x4796('0x68')]('`'+_0x25963d[_0x4796('0x51')]+'`\x20>\x200');}break;case _0x4796('0x6a'):if(_0x25963d[_0x4796('0x6b')]===_0x4796('0x6c')){if(_0x25963d[_0x4796('0x67')][_0x4796('0x38')]('\x20')['length']>0x1){_0x2bfdb5[_0x445ea9](_0x4796('0x6d'),qs[_0x4796('0x6e')](_0x25963d['value']),null);}else{var _0x879409='%'+_0x25963d[_0x4796('0x67')]+'%';_0x2bfdb5[_0x445ea9](_0x4796('0x6f'),_0x879409,_0x879409,_0x879409);}}else{_0x2a37ed=_[_0x4796('0x66')](_0x454b24,[_0x4796('0x45'),_0x4796('0x70')]);_0x25963d[_0x4796('0x51')]=_0x4796('0x70');_0x7eca23=as[_0x4796('0x71')](_0x4ed7e9,_0x2a37ed['type'],_0x25963d);_0x2bfdb5[_0x445ea9](_0x7eca23[_0x4796('0x72')],_0x7eca23[_0x4796('0x67')]['start'],_0x7eca23['value'][_0x4796('0x2f')]);}break;case _0x4796('0x73'):var _0x2ebd99=_0x25963d['value'][_0x4796('0x38')](',')['map'](function(_0x2bfe2d){return Number(_0x2bfe2d);});_0x2ebd99[_0x4796('0x74')](function(_0x304615){_0x3811ba['or'](_0x4796('0x75'),'%,'+_0x304615+',%');});_0x74c2e4=_[_0x4796('0x76')](_0x74c2e4,_0x2ebd99);break;case _0x4796('0x77'):if(_0x25963d[_0x4796('0x6b')]===_0x4796('0x6c')){_0x2bfdb5[_0x445ea9](_0x4796('0x78'),'%'+_0x25963d[_0x4796('0x67')]+'%',null);}else{_0x2a37ed=_[_0x4796('0x66')](_0x454b24,[_0x4796('0x45'),'UserId']);_0x25963d[_0x4796('0x51')]='UserId';_0x7eca23=as[_0x4796('0x71')](_0x4ed7e9,_0x2a37ed['type'],_0x25963d);_0x2bfdb5[_0x445ea9](_0x7eca23[_0x4796('0x72')],_0x7eca23['value'][_0x4796('0x79')],_0x7eca23[_0x4796('0x67')]['end']);}break;case _0x4796('0x7a'):_0x7eca23=as[_0x4796('0x71')]('me',null,_0x25963d);_0x2bfdb5[_0x445ea9](_0x7eca23[_0x4796('0x72')],_0x7eca23[_0x4796('0x67')]['start'],_0x7eca23[_0x4796('0x67')]['end']);break;}}else{var _0x7eca23=as[_0x4796('0x71')](_0x4ed7e9,_0x2a37ed[_0x4796('0x42')],_0x25963d);_0x2bfdb5[_0x445ea9](_0x7eca23[_0x4796('0x72')],_0x7eca23['value'][_0x4796('0x79')],_0x7eca23['value'][_0x4796('0x2f')]);}}}else{var _0x56185d=_(_0x5a8ca2[_0x4796('0x48')])[_0x4796('0x46')]()[_0x4796('0x34')](function(_0x5c1b4f){return _[_0x4796('0x7b')](_0x454b24,[_0x4796('0x45'),_0x5c1b4f])?_0x5c1b4f:undefined;})[_0x4796('0x7c')]()[_0x4796('0x67')]();if(!_['isEmpty'](_0x56185d)){_0x56185d['forEach'](function(_0x2521ce){if(_0x2521ce===_0x4796('0x7d')){_0x3589c9[_0x4796('0x7e')]('i.ChatWebsiteId\x20IN\x20?',[][_0x4796('0x7f')](_0x5a8ca2[_0x4796('0x48')][_0x2521ce]));}else if(_0x2521ce===_0x4796('0x80')){var _0x4068d8=JSON[_0x4796('0x81')](_0x5a8ca2[_0x4796('0x48')][_0x2521ce])[_0x4796('0x82')];var _0x3ff590=JSON['parse'](_0x5a8ca2[_0x4796('0x48')][_0x2521ce])['$lte'];_0x3589c9[_0x4796('0x7e')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4068d8,_0x3ff590);}else{if(_0x5a8ca2[_0x4796('0x48')][_0x2521ce]===_0x4796('0x83')){_0x3589c9[_0x4796('0x7e')]('i.'+_0x2521ce+'\x20IS\x20NULL');}else{_0x3589c9[_0x4796('0x7e')]('i.'+_0x2521ce+_0x4796('0x84'),_0x5a8ca2[_0x4796('0x48')][_0x2521ce]);}}});}if(_0x5a8ca2[_0x4796('0x48')][_0x4796('0x85')]){if(_0x5a8ca2[_0x4796('0x48')][_0x4796('0x85')]==0x1){_0x3589c9[_0x4796('0x68')]('`unreadMessages`\x20=\x200');}else{_0x3589c9[_0x4796('0x68')](_0x4796('0x86'));}}if(_0x5a8ca2[_0x4796('0x48')]['tag']){_0x74c2e4=_[_0x4796('0x87')](_0x5a8ca2[_0x4796('0x48')][_0x4796('0x88')])?_0x5a8ca2[_0x4796('0x48')][_0x4796('0x88')]:new Array(_0x5a8ca2['query'][_0x4796('0x88')]);_0x74c2e4[_0x4796('0x74')](function(_0x1ce770){_0x3811ba['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1ce770+',%');});}if(_0x5a8ca2[_0x4796('0x48')][_0x4796('0x89')]){var _0x1e6b9d=_0x5a8ca2['query'][_0x4796('0x89')]['replace']('\x5c','\x5c\x5c')[_0x4796('0x8a')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1e6b9d)){_0x2bfdb5['or'](_0x4796('0x8b'),_0x1e6b9d+'%');}else{_0x2bfdb5['or'](_0x4796('0x8c'),qs[_0x4796('0x6e')](_0x1e6b9d))['or'](_0x4796('0x8d'),_0x1e6b9d+'%');}}}_0x3589c9[_0x4796('0x7e')](_0x2bfdb5);_0x3589c9['group'](_0x4796('0x8e'));var _0x242b0f={'type':db['Sequelize'][_0x4796('0x8f')][_0x4796('0x90')],'raw':!![]};var _0x5aaf83=_0x3589c9['clone']();_0x5aaf83[_0x4796('0x51')](_0x4796('0x8e'));_0x5aaf83['field'](_0x4796('0x91'),'unreadMessages');if(_0x344079[_0x4796('0x4c')]){_0x344079['order'][_0x4796('0x74')](function(_0x3dbf82){var _0x40a945=_0x3dbf82[0x0]==='contactName'?_0x3dbf82[0x0]:'i.'+_0x3dbf82[0x0];_0x3589c9[_0x4796('0x4c')](_0x40a945,_0x3dbf82[0x1]===_0x4796('0x92')?![]:!![]);});}if(!_[_0x4796('0x93')](_0x74c2e4)){_0x3589c9[_0x4796('0x68')](_0x3811ba);_0x5aaf83['where']('t.id\x20IN\x20?',_0x74c2e4);}BPromise[_0x4796('0x94')]()['then'](function(){if(!_0x2f966c){if(_0x5a8ca2[_0x4796('0x48')]['ChatWebsiteId'])return;_0x5aaf83['where'](_0x4796('0x95'));_0x3589c9[_0x4796('0x7e')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x5a8ca2[_0x4796('0x96')][_0x4796('0x97')]!==_0x4796('0x32'))return;return _0x5a8ca2[_0x4796('0x96')][_0x4796('0x98')]({'attributes':['id'],'raw':!![]})[_0x4796('0x19')](function(_0xec9809){if(_[_0x4796('0x93')](_0xec9809)){_0x5aaf83[_0x4796('0x7e')]('i.ChatWebsiteId\x20IS\x20NULL');_0x3589c9['where'](_0x4796('0x99'));}else{_0x5aaf83[_0x4796('0x7e')]('i.ChatWebsiteId\x20IN\x20?',_[_0x4796('0x34')](_0xec9809,'id'));_0x3589c9['where'](_0x4796('0x9a'),_[_0x4796('0x34')](_0xec9809,'id'));}});})[_0x4796('0x19')](function(){if(_0x5a8ca2['user'][_0x4796('0x97')]===_0x4796('0x32')&&!_0x2f966c&&!_0x5a8ca2[_0x4796('0x48')][_0x4796('0x7d')])return[];return db[_0x4796('0x9b')][_0x4796('0x48')](_0x5aaf83[_0x4796('0x9c')](),_0x242b0f);})['then'](function(_0x1176df){_0x4ecbd7[_0x4796('0x9d')]=_0x1176df['length'];if(_0x4ecbd7[_0x4796('0x9d')]===0x0)return[];return db[_0x4796('0x9b')][_0x4796('0x48')](_0xe6a4a[_0x4796('0x9c')](),_0x242b0f)[_0x4796('0x19')](function(_0x41a101){_0x4054f3=_[_0x4796('0x9e')](_0x41a101,'id');_0x242b0f=_[_0x4796('0x9f')](_0x242b0f,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5a8ca2[_0x4796('0x48')][_0x4796('0x4a')]){_0x344079[_0x4796('0x49')][_0x4796('0x74')](function(_0x4f9f3b){_0x3589c9[_0x4796('0x51')]('i.'+_0x4f9f3b);});}else{_0x3589c9[_0x4796('0x51')](_0x4796('0x91'),_0x4796('0xa0'));_0x3589c9[_0x4796('0x51')]('a.key',_0x4796('0xa1'));_0x3589c9[_0x4796('0x51')](_0x4796('0xa2'),_0x4796('0xa3'));_0x3589c9[_0x4796('0x51')](_0x4796('0xa4'),_0x4796('0xa5'));_0x3589c9[_0x4796('0x51')](_0x4796('0xa6'));_0x3589c9[_0x4796('0x51')](_0x4796('0xa7'),'Contact.firstName');_0x3589c9[_0x4796('0x51')](_0x4796('0xa8'),'Contact.lastName');_0x3589c9[_0x4796('0x51')](_0x4796('0xa9'),'Contact.email');_0x3589c9[_0x4796('0x51')](_0x4796('0xaa'),'Contact.phone');_0x3589c9[_0x4796('0x51')]('c.mobile','Contact.mobile');_0x3589c9['field'](_0x4796('0xab'),_0x4796('0xac'));_0x3589c9[_0x4796('0x51')](_0x4796('0xad'),_0x4796('0xae'));_0x3589c9[_0x4796('0x51')](_0x4796('0xaf'),_0x4796('0xb0'));_0x3589c9[_0x4796('0x51')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x344079['limit'])_0x3589c9[_0x4796('0x28')](_0x344079[_0x4796('0x28')]);if(_0x344079[_0x4796('0x26')])_0x3589c9[_0x4796('0x26')](_0x344079[_0x4796('0x26')]);return db[_0x4796('0x9b')]['query'](_0x3589c9[_0x4796('0x9c')](),_0x242b0f);})[_0x4796('0x19')](function(_0x2e86d5){if(_0x2e86d5['length']>0x0)_0x518d8e['where'](_0x4796('0xb1'),_[_0x4796('0x34')](_0x2e86d5,'id'));return db[_0x4796('0x9b')][_0x4796('0x48')](_0x518d8e[_0x4796('0x9c')](),_0x242b0f)[_0x4796('0x19')](function(_0xdc6ef0){var _0x1ee744=_[_0x4796('0xb2')](_0xdc6ef0,_0x4796('0xb3'));var _0x4a0566=[];_0x2e86d5[_0x4796('0x74')](function(_0x43929c){_0x4a0566[_0x4796('0xb4')](updateChatInteraction(_0x43929c,_0x4054f3,_0x1ee744));});return BPromise['all'](_0x4a0566);});});})[_0x4796('0x19')](function(_0x12df26){_0x4ecbd7[_0x4796('0xb5')]=_0x12df26;return _0x4ecbd7;})[_0x4796('0x19')](respondWithFilteredResult(_0x325556,_0x344079))['catch'](handleError(_0x325556,null));};exports[_0x4796('0xb6')]=function(_0x2337e5,_0x475f41){var _0x5d9290={'raw':![],'where':{'id':_0x2337e5[_0x4796('0xb7')]['id']}},_0xefefb5={};_0xefefb5[_0x4796('0x44')]=_[_0x4796('0x46')](db[_0x4796('0x40')]['rawAttributes']);_0xefefb5[_0x4796('0x48')]=_[_0x4796('0x46')](_0x2337e5['query']);_0xefefb5[_0x4796('0x4e')]=_[_0x4796('0x47')](_0xefefb5['model'],_0xefefb5[_0x4796('0x48')]);_0x5d9290[_0x4796('0x49')]=_[_0x4796('0x47')](_0xefefb5[_0x4796('0x44')],qs[_0x4796('0x4a')](_0x2337e5[_0x4796('0x48')][_0x4796('0x4a')]));_0x5d9290[_0x4796('0x49')]=_0x5d9290[_0x4796('0x49')][_0x4796('0x64')]?_0x5d9290[_0x4796('0x49')]:_0xefefb5[_0x4796('0x44')];if(_0x2337e5[_0x4796('0x48')][_0x4796('0xb8')]){_0x5d9290[_0x4796('0xb9')]=[{'all':!![]}];}_0x5d9290=_[_0x4796('0x9f')]({},_0x5d9290,_0x2337e5['options']);return db[_0x4796('0x40')]['find'](_0x5d9290)['then'](handleEntityNotFound(_0x475f41,null))[_0x4796('0x19')](respondWithResult(_0x475f41,null))[_0x4796('0x23')](handleError(_0x475f41,null));};exports[_0x4796('0xba')]=function(_0x5bf313,_0x5dc0aa){return db[_0x4796('0x40')][_0x4796('0xba')](_0x5bf313[_0x4796('0x7a')],{})[_0x4796('0x19')](respondWithResult(_0x5dc0aa,0xc9))[_0x4796('0x23')](handleError(_0x5dc0aa,null));};exports[_0x4796('0x2d')]=function(_0x49c51c,_0x396dc4){if(_0x49c51c[_0x4796('0x7a')]['id']){delete _0x49c51c['body']['id'];}return db['ChatInteraction'][_0x4796('0x66')]({'where':{'id':_0x49c51c[_0x4796('0xb7')]['id']}})[_0x4796('0x19')](handleEntityNotFound(_0x396dc4,null))['then'](saveUpdates(_0x49c51c[_0x4796('0x7a')],null))[_0x4796('0x19')](respondWithResult(_0x396dc4,null))[_0x4796('0x23')](handleError(_0x396dc4,null));};exports[_0x4796('0x2e')]=function(_0x419b72,_0x45c6bd){return db[_0x4796('0x40')][_0x4796('0x66')]({'where':{'id':_0x419b72['params']['id']}})[_0x4796('0x19')](handleEntityNotFound(_0x45c6bd,null))[_0x4796('0x19')](removeEntity(_0x45c6bd,null))['catch'](handleError(_0x45c6bd,null));};exports[_0x4796('0xbb')]=function(_0x4ff440,_0x527ac9){return db[_0x4796('0x40')][_0x4796('0xbb')]()[_0x4796('0x19')](respondWithResult(_0x527ac9,null))[_0x4796('0x23')](handleError(_0x527ac9,null));};exports[_0x4796('0xbc')]=function(_0x585252,_0x2fb053){var _0x5de555=_0x585252['params']['id'];var _0x7105fb;var _0x117254;var _0x3963ba;return db[_0x4796('0x40')][_0x4796('0xbd')]({'where':{'id':_0x5de555}})[_0x4796('0x19')](function(_0x45ac7f){_0x7105fb=_0x45ac7f;return db['ChatWebsite'][_0x4796('0xbd')]({'where':{'id':_0x45ac7f[_0x4796('0x7d')]},'attributes':['id',_0x4796('0xbe'),_0x4796('0xbf'),'vidaooTopic',_0x4796('0xc0'),_0x4796('0xc1')],'raw':!![]});})[_0x4796('0x19')](function(_0x3f02f4){if(_0x3f02f4&&_0x3f02f4[_0x4796('0xbe')]&&_0x3f02f4[_0x4796('0xbf')]){_0x117254=_0x3f02f4;var _0x11023d={'interaction':{'id':_0x5de555},'agent':{'id':_0x585252['user']['id'],'name':_0x585252[_0x4796('0x96')]['name'],'fullname':_0x585252['user']['fullname'],'email':_0x585252['user'][_0x4796('0xc2')]},'contact':_0x585252[_0x4796('0x7a')][_0x4796('0xc3')],'account':_0x585252[_0x4796('0x7a')][_0x4796('0xc4')]};var _0x2809e8={'rejectUnauthorized':![],'method':'POST','url':_0x4796('0xc5'),'headers':{'X-APIKEY':_0x3f02f4['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x585252[_0x4796('0x96')][_0x4796('0xc2')]],'buttons':null,'topic':_0x117254[_0x4796('0xc6')],'note':_[_0x4796('0xc7')](_0x117254[_0x4796('0xc0')])?null:getMustacheRender(_0x117254[_0x4796('0xc0')],_0x11023d),'metadata':null},'redirect':_0x4796('0xc8'),'json':!![]};try{if(!_[_0x4796('0xc7')](_0x117254[_0x4796('0xc1')])){var _0x4a5610=getMustacheRender(_0x117254[_0x4796('0xc1')],_0x11023d);var _0x1bbae8=JSON[_0x4796('0x81')](_0x4a5610);_0x2809e8[_0x4796('0x7a')][_0x4796('0xc9')]=_0x1bbae8;}}catch(_0x132683){throw new db['Sequelize'][(_0x4796('0xca'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x2809e8);}else{throw new db[(_0x4796('0xcb'))][(_0x4796('0xca'))](_0x4796('0xcc'));}})[_0x4796('0x19')](function(_0x9a67a2){_0x3963ba=_0x9a67a2;if(_0x3963ba['id']){var _0x555b6d={'body':_0x3963ba[_0x4796('0xcd')],'ChatWebsiteId':_0x117254['id'],'ChatInteractionId':_0x7105fb['id'],'direction':_0x4796('0xce'),'UserId':_0x585252[_0x4796('0x96')]['id']};return db[_0x4796('0xcf')][_0x4796('0xba')](_0x555b6d,{});}else{throw new db[(_0x4796('0xcb'))][(_0x4796('0xca'))](_0x4796('0xd0'));}})['then'](function(){return _0x7105fb[_0x4796('0xd1')]({'vidaooSessionId':_0x3963ba['id']});})[_0x4796('0x19')](respondWithResult(_0x2fb053,null))['catch'](handleError(_0x2fb053,null));};exports['customUpdate']=function(_0x44ef91,_0x218d17){if(_0x44ef91[_0x4796('0x7a')]['id']){delete _0x44ef91[_0x4796('0x7a')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x44ef91[_0x4796('0xb7')]['id']},'include':[{'model':db['CmContact'],'as':_0x4796('0x6a')}]})[_0x4796('0x19')](handleEntityNotFound(_0x218d17,null))['then'](saveUpdates(_0x44ef91[_0x4796('0x7a')],null))[_0x4796('0x19')](respondWithResult(_0x218d17,null))[_0x4796('0x23')](handleError(_0x218d17,null));};exports[_0x4796('0xd2')]=function(_0x41ab98,_0x2fd079,_0x48b85e){if(_0x41ab98[_0x4796('0x7a')]['id']){delete _0x41ab98[_0x4796('0x7a')]['id'];}return db[_0x4796('0x40')]['find']({'where':{'id':_0x41ab98['params']['id']}})[_0x4796('0x19')](function(_0x50f6e1){if(!_0x50f6e1){logger[_0x4796('0x1e')](_0x4796('0xd3'),'abandon',0x194,_0x4796('0xd4'));_0x2fd079[_0x4796('0x24')](0x194);}else{if(_0x50f6e1[_0x4796('0x3e')]){throw new db['Sequelize'][(_0x4796('0xca'))](_0x4796('0xd5'));}}return _0x50f6e1;})[_0x4796('0x19')](function(_0x4fed1f){if(_0x4fed1f){return _0x4fed1f[_0x4796('0x2d')]({'closed':_0x41ab98[_0x4796('0x7a')][_0x4796('0x3d')],'disposition':_0x41ab98[_0x4796('0x7a')]['disposition']})[_0x4796('0x19')](function(_0x3cc36d){return _0x3cc36d;});}})[_0x4796('0x19')](function(_0x183607){return respondWithRpcPromise('AbandonInteraction',_0x4796('0xd2'),_0x41ab98[_0x4796('0x7a')],client9004);})['then'](respondWithResult(_0x2fd079,null))['catch'](handleError(_0x2fd079,null));};exports['attachmentUpload']=function(_0x148762,_0x24ec0c,_0x5f531e){_0x148762[_0x4796('0x7a')][_0x4796('0x45')]=_0x148762[_0x4796('0xd6')][_0x4796('0xd7')];_0x148762['body'][_0x4796('0xd8')]=_0x148762[_0x4796('0xd6')][_0x4796('0xd9')];_0x148762[_0x4796('0x7a')][_0x4796('0x42')]=_0x148762[_0x4796('0xd6')][_0x4796('0xda')];return db[_0x4796('0xdb')][_0x4796('0xba')](_0x148762[_0x4796('0x7a')])['then'](respondWithResult(_0x24ec0c,0xc9))[_0x4796('0x23')](handleError(_0x24ec0c,null));};exports[_0x4796('0xdc')]=function(_0x1203b5,_0x552df8,_0x5870a4){return db['ChatInteraction'][_0x4796('0xbd')]({'where':{'id':_0x1203b5['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x552df8,null))[_0x4796('0x19')](function(_0x1f6c84){if(_0x1f6c84){if(_0x1f6c84[_0x4796('0x3d')]){return _0x552df8[_0x4796('0x29')](0x193)[_0x4796('0x25')]({'status':0x193,'message':'Unauthorized'});}return db[_0x4796('0xdb')][_0x4796('0xbd')]({'where':{'id':_0x1203b5[_0x4796('0x48')]['attachId']},'raw':!![]})[_0x4796('0x19')](handleEntityNotFound(_0x552df8,null));}})[_0x4796('0x19')](function(_0x1b4049){if(_0x1b4049){var _0x3f6966=_0x1b4049[_0x4796('0xdd')]!==null;var _0x3b2818=path[_0x4796('0xde')](config[_0x4796('0xdf')],_0x4796('0xe0'));if(_0x3f6966){_0x3b2818=path[_0x4796('0xde')](_0x3b2818,'offline-chat/');}var _0xd658eb=path[_0x4796('0xde')](_0x3b2818,_0x1b4049[_0x4796('0xd8')]);return _0x552df8[_0x4796('0xe1')](_0xd658eb);}})[_0x4796('0x23')](handleError(_0x552df8,null));};exports['close']=function(_0x27443f,_0x208a27){var _0x1fae68=null;var _0x32d5fb=null;var _0x20451c=null;var _0x38f27d=null;if(_0x27443f['body']['id']){delete _0x27443f[_0x4796('0x7a')]['id'];}if(_0x27443f[_0x4796('0x7a')][_0x4796('0xe2')]){_0x38f27d=path['join'](config[_0x4796('0xdf')],'server/files/chat/upload/',util[_0x4796('0xe3')]('transcript-%s.txt',Date[_0x4796('0xe4')]()));_0x27443f['body']['pathTranscript']=_0x38f27d;}return db[_0x4796('0x40')][_0x4796('0x66')]({'where':{'id':_0x27443f[_0x4796('0xb7')]['id']},'include':[{'model':db[_0x4796('0xcf')],'as':_0x4796('0xe5'),'include':[{'model':db[_0x4796('0x77')],'as':_0x4796('0x77')}]}]})[_0x4796('0x19')](handleEntityNotFound(_0x208a27,null))[_0x4796('0x19')](saveUpdates(_0x27443f['body'],null))['then'](function(_0x48c2b2){if(_0x48c2b2){_0x1fae68=_0x48c2b2;return db[_0x4796('0xe6')][_0x4796('0x66')]({'where':{'id':_0x1fae68['ChatWebsiteId']}});}})['then'](function(_0xf5216){if(_0xf5216){_0x20451c=_0xf5216;return db[_0x4796('0xe7')]['find']({'where':{'id':_0x1fae68[_0x4796('0x70')]}});}})['then'](function(_0x3f90d1){if(_0x3f90d1){_0x32d5fb=_0x3f90d1;if(_0x38f27d){var _0x40149e=null;for(var _0x4bcc40=0x1;_0x4bcc40<_0x1fae68[_0x4796('0xe5')][_0x4796('0x64')];++_0x4bcc40){_0x40149e=_0x1fae68[_0x4796('0xe5')][_0x4bcc40];var _0x4573eb=_0x40149e[_0x4796('0x3e')]?util[_0x4796('0xe3')](_0x4796('0xe8'),_0x20451c[_0x4796('0xe9')],_0x40149e[_0x4796('0x3e')]):_0x4796('0xea');var _0x4424c1=_0x27443f['body'][_0x4796('0xeb')]||util[_0x4796('0xe3')](_0x4796('0xe8'),'Visitor',_0x40149e[_0x4796('0x70')]);switch(_0x20451c['agentIdentifier']){case _0x4796('0xec'):_0x4573eb=_0x40149e[_0x4796('0x3e')]?util[_0x4796('0xe3')](_0x4796('0xe8'),_0x20451c[_0x4796('0xe9')],_0x40149e[_0x4796('0x3e')]):_0x4796('0xea');break;case _0x4796('0xed'):_0x4573eb=_0x40149e[_0x4796('0x3e')]?_0x40149e[_0x4796('0x77')][_0x4796('0xee')]||_0x40149e[_0x4796('0x77')]['fullname']:_0x4796('0xea');break;case _0x4796('0xef'):_0x4573eb=_0x40149e[_0x4796('0x3e')]?_0x40149e[_0x4796('0x77')][_0x4796('0x35')]:_0x4796('0xea');break;default:_0x4573eb=_0x40149e[_0x4796('0x3e')]?util[_0x4796('0xe3')]('%s%d',_0x20451c[_0x4796('0xe9')],_0x40149e[_0x4796('0x3e')]):_0x4796('0xea');}var _0x1fad16=util[_0x4796('0xe3')](_0x4796('0xf0'),moment(_0x40149e['createdAt'])[_0x4796('0xe3')](_0x4796('0xf1')),_0x40149e['direction']==='in'?_0x4424c1:_0x4573eb,_0x40149e['body']);if(!_0x40149e['secret']){fs[_0x4796('0xf2')](_0x38f27d,_0x1fad16);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x4796('0xf3')],'as':_0x4796('0xf4'),'raw':!![]}]});}}})['then'](function(_0x380997){if(_0x380997&&_0x380997[_0x4796('0xf4')]&&_0x27443f[_0x4796('0x7a')]){var _0x1f4b54={'tls':{'rejectUnauthorized':![]}};if(_0x380997['Smtp'][_0x4796('0xf5')]){_0x1f4b54[_0x4796('0xf5')]=_0x380997[_0x4796('0xf4')][_0x4796('0xf5')];}else{_0x1f4b54['host']=_0x380997['Smtp'][_0x4796('0xf6')];_0x1f4b54['port']=_0x380997[_0x4796('0xf4')][_0x4796('0xf7')];_0x1f4b54[_0x4796('0xf8')]=_0x380997[_0x4796('0xf4')][_0x4796('0xf8')];}if(_0x380997[_0x4796('0xf4')]['authentication']){_0x1f4b54[_0x4796('0xf9')]={'user':_0x380997[_0x4796('0xf4')][_0x4796('0x96')],'pass':_0x380997[_0x4796('0xf4')]['pass']};}return respondWithRpcPromise(_0x4796('0xfa'),_0x4796('0xfb'),{'account':_0x1f4b54,'message':{'from':util[_0x4796('0xe3')]('\x22%s\x22\x20<%s>',_0x380997[_0x4796('0x45')],_0x380997[_0x4796('0xc2')]||_0x380997['Smtp']['user']),'to':_0x27443f['body'][_0x4796('0xe2')],'subject':_0x4796('0xfc'),'text':util[_0x4796('0xe3')](_0x4796('0xfd'),_0x27443f['body'][_0x4796('0xe2')]),'attachments':[{'path':_0x38f27d}]}})[_0x4796('0x19')](function(){return _0x1fae68;})[_0x4796('0x23')](function(_0x4eb3f7){console[_0x4796('0x1e')](_0x4eb3f7);});}else{return _0x1fae68;}})[_0x4796('0x19')](respondWithStatusCode(_0x208a27,0xc8))[_0x4796('0x23')](handleError(_0x208a27,null));};exports[_0x4796('0xfe')]=function(_0x29e977,_0x458dd6,_0x34b5ea){return db[_0x4796('0xcf')][_0x4796('0x66')]({'where':{'id':_0x29e977[_0x4796('0xb7')]['id']}})[_0x4796('0x19')](handleEntityNotFound(_0x458dd6,null))[_0x4796('0x19')](function(_0x39106e){if(_0x39106e){return _0x39106e['addMessage'](_0x29e977['body'][_0x4796('0xff')],_['omit'](_0x29e977[_0x4796('0x7a')],[_0x4796('0xff'),'id'])||{});}})['then'](respondWithResult(_0x458dd6,null))[_0x4796('0x23')](handleError(_0x458dd6,null));};exports[_0x4796('0x100')]=function(_0x272973,_0x1e30ac,_0x2f12bd){var _0x53e2fa={'raw':![],'where':{}};var _0xfaf69a={};var _0x3328eb={'count':0x0,'rows':[]};return db[_0x4796('0x40')][_0x4796('0xbd')]({'where':{'id':_0x272973['params']['id']}})[_0x4796('0x19')](handleEntityNotFound(_0x1e30ac,null))['then'](function(_0x436b52){if(_0x436b52){_0xfaf69a[_0x4796('0x44')]=_[_0x4796('0x46')](db[_0x4796('0xcf')][_0x4796('0x101')]);_0xfaf69a['query']=_[_0x4796('0x46')](_0x272973[_0x4796('0x48')]);_0xfaf69a[_0x4796('0x4e')]=_['intersection'](_0xfaf69a[_0x4796('0x44')],_0xfaf69a[_0x4796('0x48')]);_0x53e2fa['attributes']=_[_0x4796('0x47')](_0xfaf69a[_0x4796('0x44')],qs[_0x4796('0x4a')](_0x272973[_0x4796('0x48')][_0x4796('0x4a')]));_0x53e2fa[_0x4796('0x49')]=_0x53e2fa['attributes']['length']?_0x53e2fa['attributes']:_0xfaf69a[_0x4796('0x44')];if(!_0x272973[_0x4796('0x48')][_0x4796('0x4b')](_0x4796('0x102'))){_0x53e2fa[_0x4796('0x28')]=qs[_0x4796('0x28')](_0x272973[_0x4796('0x48')]['limit']);_0x53e2fa[_0x4796('0x26')]=qs[_0x4796('0x26')](_0x272973[_0x4796('0x48')][_0x4796('0x26')]);}_0x53e2fa['order']=qs[_0x4796('0x4d')](_0x272973[_0x4796('0x48')][_0x4796('0x4d')]);_0x53e2fa[_0x4796('0x7e')]=qs[_0x4796('0x4e')](_[_0x4796('0x4f')](_0x272973[_0x4796('0x48')],_0xfaf69a[_0x4796('0x4e')]));_0x53e2fa[_0x4796('0x7e')]['ChatInteractionId']=_0x436b52['id'];if(_0x272973[_0x4796('0x48')]['filter']){_0x53e2fa[_0x4796('0x7e')]=_[_0x4796('0x9f')](_0x53e2fa[_0x4796('0x7e')],{'$or':_[_0x4796('0x34')](_0x53e2fa[_0x4796('0x49')],function(_0x107182){var _0x4dbc3c={};_0x4dbc3c[_0x107182]={'$like':'%'+_0x272973['query'][_0x4796('0x89')]+'%'};return _0x4dbc3c;})});}if(_0x272973[_0x4796('0x48')]['$gte']){var _0x54dcd8=_0x272973['query'][_0x4796('0x82')]['split'](',');var _0x73676a={};_0x73676a[_0x54dcd8[0x0]]={'$gte':moment(_0x54dcd8[0x1])[_0x4796('0xe3')](_0x4796('0x103'))};_0x53e2fa[_0x4796('0x7e')]=_[_0x4796('0x9f')](_0x53e2fa['where'],_0x73676a);}_0x53e2fa=_['merge']({},_0x53e2fa,_0x272973[_0x4796('0x104')]);return db['ChatMessage']['count']({'where':_0x53e2fa[_0x4796('0x7e')]})['then'](function(_0x1230c9){_0x3328eb['count']=_0x1230c9;if(_0x272973[_0x4796('0x48')][_0x4796('0xb8')]){_0x53e2fa[_0x4796('0xb9')]=[{'all':!![]}];}return db[_0x4796('0xcf')]['findAll'](_0x53e2fa);})[_0x4796('0x19')](function(_0x10e747){_0x3328eb[_0x4796('0xb5')]=_0x10e747;return _0x3328eb;});}})[_0x4796('0x19')](respondWithFilteredResult(_0x1e30ac,_0x53e2fa))['catch'](handleError(_0x1e30ac,null));};exports[_0x4796('0x105')]=function(_0x29ceec,_0x5d05e4,_0x5eaec4){var _0x329f02={'where':{}},_0x1bcb0b={},_0x4f8c1b={'count':0x0,'rows':[]};return db[_0x4796('0x40')][_0x4796('0xbd')]({'where':{'id':_0x29ceec['params']['id']}})[_0x4796('0x19')](handleEntityNotFound(_0x5d05e4,null))[_0x4796('0x19')](function(_0x4b4fb4){if(_0x4b4fb4){_0x1bcb0b[_0x4796('0x44')]=_[_0x4796('0x46')](db[_0x4796('0xcf')][_0x4796('0x101')]);_0x1bcb0b[_0x4796('0x48')]=_[_0x4796('0x46')](_0x29ceec[_0x4796('0x48')]);_0x1bcb0b[_0x4796('0x4e')]=_['intersection'](_0x1bcb0b[_0x4796('0x44')],_0x1bcb0b[_0x4796('0x48')]);_0x329f02['attributes']=_[_0x4796('0x47')](_0x1bcb0b[_0x4796('0x44')],qs[_0x4796('0x4a')](_0x29ceec[_0x4796('0x48')][_0x4796('0x4a')]));_0x329f02[_0x4796('0x49')]=_0x329f02[_0x4796('0x49')][_0x4796('0x64')]?_0x329f02[_0x4796('0x49')]:_0x1bcb0b[_0x4796('0x44')];if(!_0x29ceec[_0x4796('0x48')][_0x4796('0x4b')]('nolimit')){_0x329f02[_0x4796('0x28')]=qs['limit'](_0x29ceec[_0x4796('0x48')][_0x4796('0x28')]);_0x329f02['offset']=qs[_0x4796('0x26')](_0x29ceec['query'][_0x4796('0x26')]);}_0x329f02[_0x4796('0x4c')]=qs[_0x4796('0x4d')](_0x29ceec[_0x4796('0x48')][_0x4796('0x4d')]);_0x329f02[_0x4796('0x7e')]=qs[_0x4796('0x4e')](_[_0x4796('0x4f')](_0x29ceec[_0x4796('0x48')],_0x1bcb0b[_0x4796('0x4e')]));_0x329f02[_0x4796('0x7e')]['ChatInteractionId']=_0x4b4fb4['id'];if(_0x29ceec[_0x4796('0x48')]['filter']){_0x329f02[_0x4796('0x7e')]=_[_0x4796('0x9f')](_0x329f02[_0x4796('0x7e')],{'$or':_['map'](_0x329f02[_0x4796('0x49')],function(_0x5e79ff){var _0x4c1dd3={};_0x4c1dd3[_0x5e79ff]={'$like':'%'+_0x29ceec[_0x4796('0x48')]['filter']+'%'};return _0x4c1dd3;})});}_0x329f02[_0x4796('0x7e')]['secret']=![];if(_0x29ceec[_0x4796('0x48')]['id']){_0x329f02[_0x4796('0x7e')]['id']={'$gt':_0x29ceec[_0x4796('0x48')]['id']};}_0x329f02=_['merge']({},_0x329f02,_0x29ceec[_0x4796('0x104')]);return db[_0x4796('0xcf')][_0x4796('0x9d')]({'where':_0x329f02[_0x4796('0x7e')]})[_0x4796('0x19')](function(_0x7c33f0){_0x4f8c1b['count']=_0x7c33f0;_0x329f02[_0x4796('0xb9')]=[];if(_0x29ceec[_0x4796('0x48')][_0x4796('0x106')]){_0x329f02[_0x4796('0xb9')][_0x4796('0xb4')]({'model':db[_0x4796('0x77')],'as':'User','attributes':['id','fullname','alias']});}if(_0x29ceec[_0x4796('0x48')]['includeAll']){_0x329f02[_0x4796('0xb9')]=[{'all':!![]}];}return db[_0x4796('0xcf')][_0x4796('0x107')](_0x329f02);})[_0x4796('0x19')](function(_0x5603a3){_0x4f8c1b[_0x4796('0xb5')]=_0x5603a3;return _0x4f8c1b;});}})[_0x4796('0x19')](respondWithFilteredResult(_0x5d05e4,_0x329f02))[_0x4796('0x23')](handleError(_0x5d05e4,null));};exports[_0x4796('0x108')]=function(_0x2c4849,_0xdd38db,_0x415993){return db[_0x4796('0x40')][_0x4796('0x66')]({'where':{'id':_0x2c4849[_0x4796('0xb7')]['id']}})['then'](handleEntityNotFound(_0xdd38db,null))[_0x4796('0x19')](function(_0x5be579){if(_0x5be579){return _0x5be579[_0x4796('0x109')](_0x2c4849['body'][_0x4796('0xff')],_[_0x4796('0x10a')](_0x2c4849['body'],[_0x4796('0xff'),'id'])||{})['spread'](function(){return db[_0x4796('0x73')][_0x4796('0x107')]({'attributes':['id',_0x4796('0x45'),_0x4796('0x10b')],'where':{'id':_0x2c4849[_0x4796('0x7a')]['ids']}});})[_0x4796('0x19')](function(_0x4afd5a){socket[_0x4796('0x10c')](_0x4796('0x10d'),{'id':Number(_0x2c4849['params']['id']),'tags':_0x4afd5a||[]});return{'id':Number(_0x2c4849['params']['id']),'tags':_0x4afd5a||[]};});}})[_0x4796('0x19')](respondWithResult(_0xdd38db,null))['catch'](handleError(_0xdd38db,null));};exports[_0x4796('0x10e')]=function(_0x3a2511,_0x2d5406,_0x10ea62){return db[_0x4796('0x40')]['find']({'where':{'id':_0x3a2511[_0x4796('0xb7')]['id']}})[_0x4796('0x19')](handleEntityNotFound(_0x2d5406,null))[_0x4796('0x19')](function(_0x7ffac3){if(_0x7ffac3){return _0x7ffac3[_0x4796('0x10e')](_0x3a2511['query'][_0x4796('0xff')]);}})['then'](respondWithStatusCode(_0x2d5406,null))['catch'](handleError(_0x2d5406,null));};exports[_0x4796('0xe1')]=function(_0x320ae5,_0x2e9de2){var _0x5aa957=moment()['unix']()[_0x4796('0x9c')]();var _0x412bee=path['join'](config[_0x4796('0xdf')],_0x4796('0x10f'),_0x4796('0x110'),_0x4796('0x111'));var _0x37f0a2=path[_0x4796('0xde')](config[_0x4796('0xdf')],'server',_0x4796('0x110'),_0x4796('0x112'));var _0x47c32d=path[_0x4796('0xde')](_0x412bee,_0x5aa957);var _0x53d15a=util[_0x4796('0xe3')](_0x4796('0x113'),_0x320ae5[_0x4796('0xb7')]['id'],_0x5aa957);var _0x115143=path[_0x4796('0xde')](_0x412bee,_0x53d15a);var _0x113421=[];_0x113421[_0x4796('0xb4')]({'model':db[_0x4796('0x77')],'as':_0x4796('0x77'),'attributes':['id','fullname'],'raw':!![]});_0x113421[_0x4796('0xb4')]({'model':db[_0x4796('0xe7')],'as':'Contact','attributes':['id',_0x4796('0x114'),'lastName'],'raw':!![]});if(_0x320ae5[_0x4796('0x48')][_0x4796('0x112')]){_0x113421[_0x4796('0xb4')]({'model':db['Attachment'],'as':_0x4796('0xdb'),'raw':!![]});}var _0x1f0f40=[{'model':db[_0x4796('0xcf')],'as':'Messages','attributes':['id',_0x4796('0x7a'),'createdAt',_0x4796('0x115'),_0x4796('0x116'),_0x4796('0x85')],'include':_0x113421}];_0x1f0f40['push']({'model':db[_0x4796('0xe6')],'as':'Account','attributes':['id',_0x4796('0x45')]});_0x1f0f40['push']({'model':db[_0x4796('0x77')],'as':_0x4796('0x117'),'attributes':['id',_0x4796('0x35')]});return db[_0x4796('0x40')][_0x4796('0x66')]({'where':{'id':_0x320ae5[_0x4796('0xb7')]['id']},'include':_0x1f0f40})['then'](handleEntityNotFound(_0x2e9de2,null))[_0x4796('0x19')](function(_0x3a286b){if(_0x3a286b){var _0x2200b5=_0x3a286b[_0x4796('0x118')]({'plain':!![]});fs[_0x4796('0x119')](_0x47c32d);var _0x42249e={'channel':_0x4796('0x11a'),'account':_0x2200b5[_0x4796('0x11b')][_0x4796('0x45')],'agent':_0x2200b5['Owner']?_0x2200b5['Owner']['fullname']:_0x4796('0x11c'),'createdAt':moment(_0x2200b5['createdAt'])[_0x4796('0xe3')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4796('0x9c')](),'closedAt':_0x2200b5[_0x4796('0x3d')]?moment(_0x2200b5[_0x4796('0x11d')])[_0x4796('0xe3')](_0x4796('0x103'))[_0x4796('0x9c')]():'','disposition':_0x2200b5[_0x4796('0x3f')],'chatInfo':{'browser':_0x2200b5['browserName'],'os':_0x2200b5[_0x4796('0x11e')],'referer':_0x2200b5[_0x4796('0x11f')],'customerIp':_0x2200b5[_0x4796('0x120')],'customerPort':_0x2200b5[_0x4796('0x121')]?_0x2200b5[_0x4796('0x121')]:_0x4796('0x11c')},'messages':_(_0x2200b5['Messages'])[_0x4796('0x122')]()['filter']({'secret':![]})[_0x4796('0x34')](function(_0x17e13b){if(_0x17e13b[_0x4796('0xdb')]){var _0x1711ec=path[_0x4796('0xde')](_0x37f0a2,_0x17e13b['Attachment']['basename']);if(fs[_0x4796('0x123')](_0x1711ec)){fs[_0x4796('0x124')](_0x1711ec)[_0x4796('0x125')](fs[_0x4796('0x126')](path[_0x4796('0xde')](_0x47c32d,_0x17e13b['Attachment']['basename'])));}}return{'date':moment(_0x17e13b['createdAt'])[_0x4796('0xe3')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4796('0x9c')](),'sender':_0x17e13b[_0x4796('0x115')]===_0x4796('0xce')?_0x17e13b[_0x4796('0x77')]?_0x17e13b[_0x4796('0x77')][_0x4796('0x35')]:_0x4796('0xea'):_0x17e13b['Contact']['firstName']+(_0x17e13b['Contact'][_0x4796('0x127')]?'\x20'+_0x17e13b[_0x4796('0x6a')][_0x4796('0x127')]:''),'body':_0x17e13b[_0x4796('0xdb')]?_0x17e13b['Attachment'][_0x4796('0xd8')]:_0x17e13b['body'],'direction':_0x17e13b[_0x4796('0x115')]===_0x4796('0xce')?'A':'C','secret':_0x17e13b[_0x4796('0x116')],'read':_0x17e13b[_0x4796('0x85')],'attachment':_0x17e13b[_0x4796('0xdb')]};})[_0x4796('0x67')]()};return ejs[_0x4796('0x128')](path['join'](config['root'],_0x4796('0x10f'),'views',_0x4796('0x129')),{'interaction':_0x42249e})['then'](function(_0x363ca2){var _0x1e6539=path[_0x4796('0xde')](_0x47c32d,_0x4796('0x12a')+_0x2200b5['id']+'-'+_0x5aa957+_0x4796('0x12b'));var _0x33289a={'path':_0x1e6539,'channel':_0x4796('0x11a'),'interactionId':_0x2200b5['id']};return pdf['createPdfFromHTML'](_0x363ca2,_0x33289a);})['then'](function(){return new BPromise(function(_0x3b3db7,_0x101f17){zipdir(_0x47c32d,{'saveTo':_0x115143},function(_0x1effaf,_0x313951){if(_0x1effaf)return _0x101f17(_0x1effaf);return _0x3b3db7(_0x313951);});})[_0x4796('0x19')](function(){return new BPromise(function(_0x34188e,_0x30d8ad){rimraf(_0x47c32d,function(_0x3ae85b){if(_0x3ae85b)_0x30d8ad(_0x3ae85b);return _0x34188e();});});})['then'](function(){return _0x2e9de2[_0x4796('0xe1')](_0x115143,_0x53d15a,function(_0x364c95){if(_0x364c95){console[_0x4796('0x12c')]('err',_0x364c95);}else{fs['unlinkSync'](_0x115143);}});});});}else{return _0x2e9de2[_0x4796('0x24')](0xc8);}})['catch'](handleError(_0x2e9de2,null));};
\ No newline at end of file
+var _0xe0c9=['account','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','follow','metadata','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','out','ChatMessage','updateAttributes','customUpdate','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','originalname','basename','mimetype','Attachment','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','Messages','CmContact','%s%d','System','Visitor','agentIdentifier','agentAlias','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','direction','secret','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','hasOwnProperty','pick','YYYY-MM-DD\x20HH:mm:ss','options','findAll','getMyMessages','includeAgent','addTags','omit','spread','removeTags','unix','tmp','server','files','transcript-%d-%s.zip','firstName','lastName','createdAt','Owner','get','Chat','Account','N.A.','closedAt','browserName','osName','customerIp','customerPort','tail','existsSync','createReadStream','createWriteStream','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','./chatInteraction.socket','register','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','destroy','end','name','merge','body','contact','agent','interaction','Users','map','fullname','TagIds','Tags','split','forEach','push','talking','unmanaged','abandoned','total','UserId','closed','waiting','disposition','answered','ChatInteraction','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','field','color','from','select','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','having','`\x20>\x200','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','compact','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','unreadMessages','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','rows','show','params','includeAll','include','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooNote','email'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe0c9,0x1ab));var _0x9e0c=function(_0x3b96b4,_0x3f0b68){_0x3b96b4=_0x3b96b4-0x0;var _0x3f50c4=_0xe0c9[_0x3b96b4];return _0x3f50c4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9e0c('0x0'));var jsonpatch=require(_0x9e0c('0x1'));var rp=require(_0x9e0c('0x2'));var moment=require(_0x9e0c('0x3'));var BPromise=require(_0x9e0c('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9e0c('0x5'));var sox=require(_0x9e0c('0x6'));var csv=require('to-csv');var ejs=require(_0x9e0c('0x7'));var fs=require('fs');var fs_extra=require(_0x9e0c('0x8'));var _=require(_0x9e0c('0x9'));var squel=require(_0x9e0c('0xa'));var crypto=require('crypto');var jsforce=require(_0x9e0c('0xb'));var deskjs=require(_0x9e0c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x9e0c('0xd'));var Papa=require(_0x9e0c('0xe'));var Redis=require('ioredis');var authService=require(_0x9e0c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x9e0c('0x10'));var pdf=require(_0x9e0c('0x11'));var hardwareService=require(_0x9e0c('0x12'));var logger=require('../../config/logger')(_0x9e0c('0x13'));var utils=require(_0x9e0c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9e0c('0x15'));var db=require(_0x9e0c('0x16'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x9e0c('0x17'),'port':0x18eb});var socket=require(_0x9e0c('0x18'))(new Redis(config[_0x9e0c('0x19')]));require(_0x9e0c('0x1a'))[_0x9e0c('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232b});var client9004=jayson['client'][_0x9e0c('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x4134b3,_0x10cd30,_0x29e5c4,_0x408de6){return new BPromise(function(_0x1dba7a,_0x2a7a9b){var _0x2d2f4f=_0x408de6||client;return _0x2d2f4f[_0x9e0c('0x1d')](_0x4134b3,_0x29e5c4)[_0x9e0c('0x1e')](function(_0x52b3c1){logger[_0x9e0c('0x1f')]('ChatInteraction,\x20%s,\x20%s',_0x10cd30,_0x9e0c('0x20'));logger[_0x9e0c('0x21')](_0x9e0c('0x22'),_0x10cd30,'request\x20sent',JSON['stringify'](_0x52b3c1));if(_0x52b3c1['error']){if(_0x52b3c1[_0x9e0c('0x23')][_0x9e0c('0x24')]===0x1f4){logger[_0x9e0c('0x23')](_0x9e0c('0x25'),_0x10cd30,_0x52b3c1[_0x9e0c('0x23')][_0x9e0c('0x26')]);return _0x2a7a9b(_0x52b3c1['error'][_0x9e0c('0x26')]);}logger[_0x9e0c('0x23')](_0x9e0c('0x25'),_0x10cd30,_0x52b3c1['error'][_0x9e0c('0x26')]);return _0x1dba7a(_0x52b3c1[_0x9e0c('0x23')]['message']);}else{logger[_0x9e0c('0x1f')](_0x9e0c('0x25'),_0x10cd30,_0x9e0c('0x20'));_0x1dba7a(_0x52b3c1[_0x9e0c('0x27')][_0x9e0c('0x26')]);}})[_0x9e0c('0x28')](function(_0x31ddc2){logger[_0x9e0c('0x23')](_0x9e0c('0x25'),_0x10cd30,_0x31ddc2);_0x2a7a9b(_0x31ddc2);});});}function respondWithStatusCode(_0x390aa,_0x146eb){_0x146eb=_0x146eb||0xcc;return function(_0x2256c8){if(_0x2256c8){return _0x390aa[_0x9e0c('0x29')](_0x146eb);}return _0x390aa[_0x9e0c('0x2a')](_0x146eb)['end']();};}function respondWithResult(_0xaf728,_0x1ae81c){_0x1ae81c=_0x1ae81c||0xc8;return function(_0x25b2d8){if(_0x25b2d8){return _0xaf728[_0x9e0c('0x2a')](_0x1ae81c)[_0x9e0c('0x2b')](_0x25b2d8);}};}function respondWithFilteredResult(_0xfb9709,_0x556919){return function(_0x352688){if(_0x352688){var _0x147a77=typeof _0x556919['offset']==='undefined'&&typeof _0x556919[_0x9e0c('0x2c')]===_0x9e0c('0x2d');var _0x329ace=_0x352688[_0x9e0c('0x2e')];var _0x316ced=_0x147a77?0x0:_0x556919[_0x9e0c('0x2f')];var _0x150a0c=_0x147a77?_0x352688[_0x9e0c('0x2e')]:_0x556919[_0x9e0c('0x2f')]+_0x556919['limit'];var _0x1d89ba;if(_0x150a0c>=_0x329ace){_0x150a0c=_0x329ace;_0x1d89ba=0xc8;}else{_0x1d89ba=0xce;}_0xfb9709['status'](_0x1d89ba);return _0xfb9709[_0x9e0c('0x30')](_0x9e0c('0x31'),_0x316ced+'-'+_0x150a0c+'/'+_0x329ace)['json'](_0x352688);}return null;};}function patchUpdates(_0x5b9233){return function(_0x2f33d8){try{jsonpatch[_0x9e0c('0x32')](_0x2f33d8,_0x5b9233,!![]);}catch(_0x1c119f){return BPromise[_0x9e0c('0x33')](_0x1c119f);}return _0x2f33d8[_0x9e0c('0x34')]();};}function saveUpdates(_0x261098,_0x4c814a){return function(_0x71a909){if(_0x71a909){return _0x71a909[_0x9e0c('0x35')](_0x261098)['then'](function(_0x6baeb6){return _0x6baeb6;});}return null;};}function removeEntity(_0x3cad6,_0xaee345){return function(_0x5800de){if(_0x5800de){return _0x5800de[_0x9e0c('0x36')]()[_0x9e0c('0x1e')](function(){_0x3cad6[_0x9e0c('0x2a')](0xcc)[_0x9e0c('0x37')]();});}};}function handleEntityNotFound(_0x2e3f68,_0x1fd7b4){return function(_0x41d2c7){if(!_0x41d2c7){_0x2e3f68[_0x9e0c('0x29')](0x194);}return _0x41d2c7;};}function handleError(_0xbee34e,_0x315bf2){_0x315bf2=_0x315bf2||0x1f4;return function(_0x391139){logger['error'](_0x391139['stack']);if(_0x391139[_0x9e0c('0x38')]){delete _0x391139[_0x9e0c('0x38')];}_0xbee34e[_0x9e0c('0x2a')](_0x315bf2)['send'](_0x391139);};}function getMustacheRender(_0x4a95bb,_0x1fa370){return Mustache['render'](_0x4a95bb,_[_0x9e0c('0x39')](_0x1fa370[_0x9e0c('0x3a')],{'contact':_0x1fa370[_0x9e0c('0x3b')],'message':_0x1fa370[_0x9e0c('0x26')],'agent':_0x1fa370[_0x9e0c('0x3c')],'interaction':_0x1fa370[_0x9e0c('0x3d')],'account':_0x1fa370['account']}))||'';}function getInteractionUsers(_0x1dbadf,_0x468495){return new BPromise(function(_0x5a449d,_0x4d9c8d){try{if(_0x468495[_0x1dbadf['id']]){_0x1dbadf[_0x9e0c('0x3e')]=_[_0x9e0c('0x3f')](_0x468495[_0x1dbadf['id']],function(_0x1d1f6a){return{'id':_0x1d1f6a['id'],'fullname':_0x1d1f6a[_0x9e0c('0x40')]};});}}catch(_0x430d3f){_0x4d9c8d(_0x430d3f);}_0x5a449d(_0x1dbadf);});}function getInteractionTags(_0x32a0cc,_0x3d1bdf){return new BPromise(function(_0x9a5c0f,_0x4aea1e){try{if(_0x32a0cc[_0x9e0c('0x41')]){_0x32a0cc[_0x9e0c('0x42')]=[];_0x32a0cc['TagIds'][_0x9e0c('0x43')](',')[_0x9e0c('0x44')](function(_0x50a97d){_0x32a0cc[_0x9e0c('0x42')][_0x9e0c('0x45')](_0x3d1bdf[_0x50a97d]);});}delete _0x32a0cc[_0x9e0c('0x41')];}catch(_0x50de3d){_0x4aea1e(_0x50de3d);}_0x9a5c0f(_0x32a0cc);});}function updateChatInteraction(_0x10feb9,_0x475c69,_0x17505b){return new BPromise(function(_0x3cfaca,_0x4e039c){return getInteractionUsers(_0x10feb9,_0x17505b)[_0x9e0c('0x1e')](function(_0x535189){return getInteractionTags(_0x535189,_0x475c69);})[_0x9e0c('0x1e')](function(_0x3cd339){return getStateInteraction(_0x3cd339);})[_0x9e0c('0x1e')](function(_0x1a8cf4){_0x3cfaca(_0x1a8cf4);})['catch'](function(_0x40fefc){_0x4e039c(_0x40fefc);});});}function getStateInteraction(_0x3fab0c){return new BPromise(function(_0x23240b){_0x3fab0c['waiting']=0x0;_0x3fab0c[_0x9e0c('0x46')]=0x0;_0x3fab0c['answered']=0x0;_0x3fab0c[_0x9e0c('0x47')]=0x0;_0x3fab0c[_0x9e0c('0x48')]=0x0;_0x3fab0c[_0x9e0c('0x49')]=0x0;if(!_0x3fab0c['closed']&&!_0x3fab0c[_0x9e0c('0x4a')]){_0x3fab0c['waiting']+=0x1;}if(!_0x3fab0c[_0x9e0c('0x4b')]&&_0x3fab0c[_0x9e0c('0x4a')]){_0x3fab0c[_0x9e0c('0x46')]+=0x1;if(_0x3fab0c[_0x9e0c('0x4c')]){_0x3fab0c[_0x9e0c('0x4c')]-=0x1;}}if(_0x3fab0c[_0x9e0c('0x4b')]&&_0x3fab0c[_0x9e0c('0x4d')]===_0x9e0c('0x48')){_0x3fab0c[_0x9e0c('0x48')]+=0x1;if(_0x3fab0c[_0x9e0c('0x4c')]){_0x3fab0c[_0x9e0c('0x4c')]-=0x1;}}else if(_0x3fab0c['closed']&&!_0x3fab0c['UserId']&&_0x3fab0c[_0x9e0c('0x4d')]){_0x3fab0c[_0x9e0c('0x47')]+=0x1;if(_0x3fab0c['waiting']){_0x3fab0c[_0x9e0c('0x4c')]-=0x1;}}else if(_0x3fab0c['closed']&&_0x3fab0c[_0x9e0c('0x4a')]){_0x3fab0c[_0x9e0c('0x4e')]+=0x1;if(_0x3fab0c[_0x9e0c('0x46')]){_0x3fab0c[_0x9e0c('0x46')]-=0x1;}}_0x3fab0c[_0x9e0c('0x49')]+=0x1;_0x23240b(_0x3fab0c);});}exports['index']=function(_0x14026b,_0x50c3dc){var _0x1e11d7={},_0x3baaa7={},_0x1d35ff={'count':0x0,'rows':[]};var _0x1ee440=_['map'](db[_0x9e0c('0x4f')][_0x9e0c('0x50')],function(_0x247076){return{'name':_0x247076[_0x9e0c('0x51')],'type':_0x247076[_0x9e0c('0x52')]['key']};});_0x3baaa7[_0x9e0c('0x53')]=_[_0x9e0c('0x3f')](_0x1ee440,'name');_0x3baaa7['query']=_[_0x9e0c('0x54')](_0x14026b[_0x9e0c('0x55')]);_0x3baaa7[_0x9e0c('0x56')]=_[_0x9e0c('0x57')](_0x3baaa7['model'],_0x3baaa7[_0x9e0c('0x55')]);_0x1e11d7['attributes']=_[_0x9e0c('0x57')](_0x3baaa7[_0x9e0c('0x53')],qs[_0x9e0c('0x58')](_0x14026b[_0x9e0c('0x55')]['fields']));_0x1e11d7[_0x9e0c('0x59')]=_0x1e11d7[_0x9e0c('0x59')][_0x9e0c('0x5a')]?_0x1e11d7[_0x9e0c('0x59')]:_0x3baaa7[_0x9e0c('0x53')];if(!_0x14026b['query']['hasOwnProperty'](_0x9e0c('0x5b'))){_0x1e11d7[_0x9e0c('0x2c')]=qs[_0x9e0c('0x2c')](_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x2c')]);_0x1e11d7[_0x9e0c('0x2f')]=qs[_0x9e0c('0x2f')](_0x14026b['query'][_0x9e0c('0x2f')]);}_0x1e11d7[_0x9e0c('0x5c')]=qs[_0x9e0c('0x5d')](_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x5d')]);_0x1e11d7[_0x9e0c('0x5e')]=qs['filters'](_['pick'](_0x14026b[_0x9e0c('0x55')],_0x3baaa7[_0x9e0c('0x56')]),_0x1ee440);var _0x17beb8=[];var _0x5e1816=squel['select']()[_0x9e0c('0x5f')]('id')[_0x9e0c('0x5f')](_0x9e0c('0x38'))[_0x9e0c('0x5f')](_0x9e0c('0x60'))[_0x9e0c('0x61')]('tools_tags');var _0x22a9e7=squel[_0x9e0c('0x62')]()[_0x9e0c('0x5f')]('u.id')[_0x9e0c('0x5f')](_0x9e0c('0x63'))['field'](_0x9e0c('0x64'))[_0x9e0c('0x61')](_0x9e0c('0x65'),'ui')[_0x9e0c('0x66')](_0x9e0c('0x67'),'u',_0x9e0c('0x68'));var _0x42019a=squel['select']()['from'](_0x9e0c('0x69'),'i')['left_join']('cm_contacts','c',_0x9e0c('0x6a'))[_0x9e0c('0x66')](_0x9e0c('0x67'),'o',_0x9e0c('0x6b'))[_0x9e0c('0x66')]('chat_websites','a','a.id\x20=\x20i.ChatWebsiteId')['left_join'](_0x9e0c('0x6c'),'me',_0x9e0c('0x6d'))['left_join'](_0x9e0c('0x6e'),'it',_0x9e0c('0x6f'))[_0x9e0c('0x66')](_0x9e0c('0x70'),'t',_0x9e0c('0x71'));var _0x2d115c=squel[_0x9e0c('0x72')]();var _0x4b8fa3=[];var _0x290480=squel[_0x9e0c('0x72')]();var _0x5b4edf;if(_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x73')]){_0x5b4edf=as[_0x9e0c('0x74')](_0x14026b[_0x9e0c('0x55')]['search']);var _0x8a82ed=_0x5b4edf[_0x9e0c('0x75')];for(var _0x31422b=0x0;_0x31422b<_0x5b4edf[_0x9e0c('0x76')][_0x9e0c('0x5a')];_0x31422b++){var _0x7b88f1=_0x5b4edf['conditions'][_0x31422b];var _0x21c33e='i';var _0x317aba=_[_0x9e0c('0x77')](_0x1ee440,[_0x9e0c('0x38'),_0x7b88f1[_0x9e0c('0x5f')]]);if(!_0x317aba){switch(_0x7b88f1[_0x9e0c('0x5f')]){case'unreadMessages':if(_0x7b88f1['value']==0x1){_0x42019a[_0x9e0c('0x78')]('`'+_0x7b88f1['field']+'`\x20=\x200');}else{_0x42019a[_0x9e0c('0x78')]('`'+_0x7b88f1[_0x9e0c('0x5f')]+_0x9e0c('0x79'));}break;case _0x9e0c('0x7a'):if(_0x7b88f1[_0x9e0c('0x7b')]===_0x9e0c('0x7c')){if(_0x7b88f1[_0x9e0c('0x7d')][_0x9e0c('0x43')]('\x20')[_0x9e0c('0x5a')]>0x1){_0x2d115c[_0x8a82ed](_0x9e0c('0x7e'),qs[_0x9e0c('0x7f')](_0x7b88f1['value']),null);}else{var _0x4517f4='%'+_0x7b88f1[_0x9e0c('0x7d')]+'%';_0x2d115c[_0x8a82ed](_0x9e0c('0x80'),_0x4517f4,_0x4517f4,_0x4517f4);}}else{_0x317aba=_['find'](_0x1ee440,[_0x9e0c('0x38'),_0x9e0c('0x81')]);_0x7b88f1[_0x9e0c('0x5f')]=_0x9e0c('0x81');_0x3c6218=as['buildExpression'](_0x21c33e,_0x317aba[_0x9e0c('0x52')],_0x7b88f1);_0x2d115c[_0x8a82ed](_0x3c6218[_0x9e0c('0x82')],_0x3c6218['value'][_0x9e0c('0x83')],_0x3c6218[_0x9e0c('0x7d')][_0x9e0c('0x37')]);}break;case _0x9e0c('0x84'):var _0x295427=_0x7b88f1[_0x9e0c('0x7d')]['split'](',')[_0x9e0c('0x3f')](function(_0x14826d){return Number(_0x14826d);});_0x295427[_0x9e0c('0x44')](function(_0x231789){_0x290480['or'](_0x9e0c('0x85'),'%,'+_0x231789+',%');});_0x4b8fa3=_[_0x9e0c('0x86')](_0x4b8fa3,_0x295427);break;case _0x9e0c('0x87'):if(_0x7b88f1[_0x9e0c('0x7b')]===_0x9e0c('0x7c')){_0x2d115c[_0x8a82ed](_0x9e0c('0x88'),'%'+_0x7b88f1[_0x9e0c('0x7d')]+'%',null);}else{_0x317aba=_['find'](_0x1ee440,[_0x9e0c('0x38'),_0x9e0c('0x4a')]);_0x7b88f1[_0x9e0c('0x5f')]=_0x9e0c('0x4a');_0x3c6218=as[_0x9e0c('0x89')](_0x21c33e,_0x317aba[_0x9e0c('0x52')],_0x7b88f1);_0x2d115c[_0x8a82ed](_0x3c6218[_0x9e0c('0x82')],_0x3c6218[_0x9e0c('0x7d')]['start'],_0x3c6218[_0x9e0c('0x7d')]['end']);}break;case _0x9e0c('0x3a'):_0x3c6218=as['buildExpression']('me',null,_0x7b88f1);_0x2d115c[_0x8a82ed](_0x3c6218[_0x9e0c('0x82')],_0x3c6218[_0x9e0c('0x7d')]['start'],_0x3c6218['value'][_0x9e0c('0x37')]);break;}}else{var _0x3c6218=as[_0x9e0c('0x89')](_0x21c33e,_0x317aba['type'],_0x7b88f1);_0x2d115c[_0x8a82ed](_0x3c6218['text'],_0x3c6218[_0x9e0c('0x7d')]['start'],_0x3c6218['value'][_0x9e0c('0x37')]);}}}else{var _0xe58806=_(_0x14026b[_0x9e0c('0x55')])[_0x9e0c('0x54')]()[_0x9e0c('0x3f')](function(_0x5d755a){return _['some'](_0x1ee440,['name',_0x5d755a])?_0x5d755a:undefined;})[_0x9e0c('0x8a')]()[_0x9e0c('0x7d')]();if(!_['isEmpty'](_0xe58806)){_0xe58806[_0x9e0c('0x44')](function(_0x294d4d){if(_0x294d4d===_0x9e0c('0x8b')){_0x42019a[_0x9e0c('0x5e')](_0x9e0c('0x8c'),[][_0x9e0c('0x8d')](_0x14026b[_0x9e0c('0x55')][_0x294d4d]));}else if(_0x294d4d==='createdAt'){var _0x52b53a=JSON[_0x9e0c('0x8e')](_0x14026b[_0x9e0c('0x55')][_0x294d4d])[_0x9e0c('0x8f')];var _0x6d239=JSON[_0x9e0c('0x8e')](_0x14026b['query'][_0x294d4d])[_0x9e0c('0x90')];_0x42019a[_0x9e0c('0x5e')](_0x9e0c('0x91'),_0x52b53a,_0x6d239);}else{if(_0x14026b['query'][_0x294d4d]===_0x9e0c('0x92')){_0x42019a[_0x9e0c('0x5e')]('i.'+_0x294d4d+'\x20IS\x20NULL');}else{_0x42019a[_0x9e0c('0x5e')]('i.'+_0x294d4d+_0x9e0c('0x93'),_0x14026b[_0x9e0c('0x55')][_0x294d4d]);}}});}if(_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x94')]){if(_0x14026b['query'][_0x9e0c('0x94')]==0x1){_0x42019a[_0x9e0c('0x78')](_0x9e0c('0x95'));}else{_0x42019a['having'](_0x9e0c('0x96'));}}if(_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x97')]){_0x4b8fa3=_['isArray'](_0x14026b[_0x9e0c('0x55')]['tag'])?_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x97')]:new Array(_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x97')]);_0x4b8fa3['forEach'](function(_0x48fc3f){_0x290480['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x48fc3f+',%');});}if(_0x14026b[_0x9e0c('0x55')]['filter']){var _0x5a4949=_0x14026b['query'][_0x9e0c('0x98')][_0x9e0c('0x99')]('\x5c','\x5c\x5c')[_0x9e0c('0x99')](/'/g,'\x27\x27');if(qs[_0x9e0c('0x9a')](_0x5a4949)){_0x2d115c['or'](_0x9e0c('0x9b'),_0x5a4949+'%');}else{_0x2d115c['or'](_0x9e0c('0x9c'),qs[_0x9e0c('0x7f')](_0x5a4949))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5a4949+'%');}}}_0x42019a[_0x9e0c('0x5e')](_0x2d115c);_0x42019a[_0x9e0c('0x9d')](_0x9e0c('0x9e'));var _0x56db1d={'type':db[_0x9e0c('0x9f')][_0x9e0c('0xa0')][_0x9e0c('0xa1')],'raw':!![]};var _0x4a55cf=_0x42019a[_0x9e0c('0xa2')]();_0x4a55cf[_0x9e0c('0x5f')](_0x9e0c('0x9e'));_0x4a55cf[_0x9e0c('0x5f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x1e11d7[_0x9e0c('0x5c')]){_0x1e11d7[_0x9e0c('0x5c')][_0x9e0c('0x44')](function(_0xc2366b){var _0x6bb00f=_0xc2366b[0x0]===_0x9e0c('0xa3')?_0xc2366b[0x0]:'i.'+_0xc2366b[0x0];_0x42019a[_0x9e0c('0x5c')](_0x6bb00f,_0xc2366b[0x1]===_0x9e0c('0xa4')?![]:!![]);});}if(!_[_0x9e0c('0xa5')](_0x4b8fa3)){_0x42019a['having'](_0x290480);_0x4a55cf[_0x9e0c('0x5e')](_0x9e0c('0xa6'),_0x4b8fa3);}BPromise[_0x9e0c('0xa7')]()[_0x9e0c('0x1e')](function(){if(!_0x5b4edf){if(_0x14026b[_0x9e0c('0x55')][_0x9e0c('0x8b')])return;_0x4a55cf['where'](_0x9e0c('0xa8'));_0x42019a[_0x9e0c('0x5e')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x14026b[_0x9e0c('0xa9')][_0x9e0c('0xaa')]!==_0x9e0c('0x3c'))return;return _0x14026b[_0x9e0c('0xa9')]['getChatWebsites']({'attributes':['id'],'raw':!![]})[_0x9e0c('0x1e')](function(_0x375313){if(_[_0x9e0c('0xa5')](_0x375313)){_0x4a55cf[_0x9e0c('0x5e')](_0x9e0c('0xab'));_0x42019a['where'](_0x9e0c('0xab'));}else{_0x4a55cf['where']('i.ChatWebsiteId\x20IN\x20?',_['map'](_0x375313,'id'));_0x42019a[_0x9e0c('0x5e')](_0x9e0c('0x8c'),_['map'](_0x375313,'id'));}});})['then'](function(){if(_0x14026b['user']['role']===_0x9e0c('0x3c')&&!_0x5b4edf&&!_0x14026b[_0x9e0c('0x55')]['ChatWebsiteId'])return[];return db[_0x9e0c('0xac')]['query'](_0x4a55cf[_0x9e0c('0xad')](),_0x56db1d);})[_0x9e0c('0x1e')](function(_0x11221f){_0x1d35ff['count']=_0x11221f[_0x9e0c('0x5a')];if(_0x1d35ff['count']===0x0)return[];return db[_0x9e0c('0xac')][_0x9e0c('0x55')](_0x5e1816[_0x9e0c('0xad')](),_0x56db1d)['then'](function(_0x478e82){_0x17beb8=_[_0x9e0c('0xae')](_0x478e82,'id');_0x56db1d=_[_0x9e0c('0x39')](_0x56db1d,{'model':db[_0x9e0c('0x4f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x14026b[_0x9e0c('0x55')]['fields']){_0x1e11d7[_0x9e0c('0x59')][_0x9e0c('0x44')](function(_0x28f9b6){_0x42019a[_0x9e0c('0x5f')]('i.'+_0x28f9b6);});}else{_0x42019a[_0x9e0c('0x5f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9e0c('0xaf'));_0x42019a['field'](_0x9e0c('0xb0'),'Account.key');_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xb1'),_0x9e0c('0xb2'));_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xb3'),_0x9e0c('0xa3'));_0x42019a['field'](_0x9e0c('0xb4'));_0x42019a['field'](_0x9e0c('0xb5'),_0x9e0c('0xb6'));_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xb7'),'Contact.lastName');_0x42019a['field'](_0x9e0c('0xb8'),'Contact.email');_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xb9'),_0x9e0c('0xba'));_0x42019a['field'](_0x9e0c('0xbb'),_0x9e0c('0xbc'));_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xbd'),_0x9e0c('0xbe'));_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xbf'),_0x9e0c('0xc0'));_0x42019a['field'](_0x9e0c('0xc1'),_0x9e0c('0xc2'));_0x42019a[_0x9e0c('0x5f')](_0x9e0c('0xc3'),_0x9e0c('0x41'));}if(_0x1e11d7[_0x9e0c('0x2c')])_0x42019a[_0x9e0c('0x2c')](_0x1e11d7['limit']);if(_0x1e11d7[_0x9e0c('0x2f')])_0x42019a[_0x9e0c('0x2f')](_0x1e11d7[_0x9e0c('0x2f')]);return db[_0x9e0c('0xac')][_0x9e0c('0x55')](_0x42019a[_0x9e0c('0xad')](),_0x56db1d);})[_0x9e0c('0x1e')](function(_0x5e8f92){if(_0x5e8f92[_0x9e0c('0x5a')]>0x0)_0x22a9e7[_0x9e0c('0x5e')](_0x9e0c('0xc4'),_[_0x9e0c('0x3f')](_0x5e8f92,'id'));return db[_0x9e0c('0xac')][_0x9e0c('0x55')](_0x22a9e7[_0x9e0c('0xad')](),_0x56db1d)[_0x9e0c('0x1e')](function(_0x5177ad){var _0x465f36=_['groupBy'](_0x5177ad,_0x9e0c('0xc5'));var _0x107e30=[];_0x5e8f92[_0x9e0c('0x44')](function(_0x5c6450){_0x107e30[_0x9e0c('0x45')](updateChatInteraction(_0x5c6450,_0x17beb8,_0x465f36));});return BPromise[_0x9e0c('0xc6')](_0x107e30);});});})['then'](function(_0x14a4ce){_0x1d35ff[_0x9e0c('0xc7')]=_0x14a4ce;return _0x1d35ff;})[_0x9e0c('0x1e')](respondWithFilteredResult(_0x50c3dc,_0x1e11d7))['catch'](handleError(_0x50c3dc,null));};exports[_0x9e0c('0xc8')]=function(_0xd0317c,_0x44c6fe){var _0x473371={'raw':![],'where':{'id':_0xd0317c[_0x9e0c('0xc9')]['id']}},_0x30250a={};_0x30250a[_0x9e0c('0x53')]=_[_0x9e0c('0x54')](db[_0x9e0c('0x4f')]['rawAttributes']);_0x30250a[_0x9e0c('0x55')]=_[_0x9e0c('0x54')](_0xd0317c[_0x9e0c('0x55')]);_0x30250a['filters']=_[_0x9e0c('0x57')](_0x30250a['model'],_0x30250a[_0x9e0c('0x55')]);_0x473371['attributes']=_['intersection'](_0x30250a[_0x9e0c('0x53')],qs[_0x9e0c('0x58')](_0xd0317c[_0x9e0c('0x55')][_0x9e0c('0x58')]));_0x473371[_0x9e0c('0x59')]=_0x473371[_0x9e0c('0x59')]['length']?_0x473371[_0x9e0c('0x59')]:_0x30250a[_0x9e0c('0x53')];if(_0xd0317c[_0x9e0c('0x55')][_0x9e0c('0xca')]){_0x473371[_0x9e0c('0xcb')]=[{'all':!![]}];}_0x473371=_[_0x9e0c('0x39')]({},_0x473371,_0xd0317c['options']);return db[_0x9e0c('0x4f')]['find'](_0x473371)[_0x9e0c('0x1e')](handleEntityNotFound(_0x44c6fe,null))['then'](respondWithResult(_0x44c6fe,null))[_0x9e0c('0x28')](handleError(_0x44c6fe,null));};exports[_0x9e0c('0xcc')]=function(_0x5ced40,_0x2ed7db){return db[_0x9e0c('0x4f')][_0x9e0c('0xcc')](_0x5ced40['body'],{})[_0x9e0c('0x1e')](respondWithResult(_0x2ed7db,0xc9))[_0x9e0c('0x28')](handleError(_0x2ed7db,null));};exports['update']=function(_0x1105fd,_0x212131){if(_0x1105fd[_0x9e0c('0x3a')]['id']){delete _0x1105fd[_0x9e0c('0x3a')]['id'];}return db[_0x9e0c('0x4f')][_0x9e0c('0x77')]({'where':{'id':_0x1105fd['params']['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x212131,null))[_0x9e0c('0x1e')](saveUpdates(_0x1105fd[_0x9e0c('0x3a')],null))[_0x9e0c('0x1e')](respondWithResult(_0x212131,null))['catch'](handleError(_0x212131,null));};exports[_0x9e0c('0x36')]=function(_0x24ee55,_0x52b42e){return db['ChatInteraction'][_0x9e0c('0x77')]({'where':{'id':_0x24ee55[_0x9e0c('0xc9')]['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x52b42e,null))[_0x9e0c('0x1e')](removeEntity(_0x52b42e,null))[_0x9e0c('0x28')](handleError(_0x52b42e,null));};exports[_0x9e0c('0xcd')]=function(_0x1c25e0,_0x280d32){return db[_0x9e0c('0x4f')][_0x9e0c('0xcd')]()['then'](respondWithResult(_0x280d32,null))[_0x9e0c('0x28')](handleError(_0x280d32,null));};exports[_0x9e0c('0xce')]=function(_0x16be2f,_0x11e78f){var _0x5d1866=_0x16be2f[_0x9e0c('0xc9')]['id'];var _0xc12898;var _0x1e8992;var _0x17e769;return db['ChatInteraction'][_0x9e0c('0xcf')]({'where':{'id':_0x5d1866}})[_0x9e0c('0x1e')](function(_0x4a4647){_0xc12898=_0x4a4647;return db[_0x9e0c('0xd0')]['findOne']({'where':{'id':_0x4a4647[_0x9e0c('0x8b')]},'attributes':['id',_0x9e0c('0xd1'),_0x9e0c('0xd2'),'vidaooTopic',_0x9e0c('0xd3'),'vidaooMetadata'],'raw':!![]});})[_0x9e0c('0x1e')](function(_0x425313){if(_0x425313&&_0x425313['vidaooApiKey']&&_0x425313[_0x9e0c('0xd2')]){_0x1e8992=_0x425313;var _0x2749f7={'interaction':{'id':_0x5d1866},'agent':{'id':_0x16be2f[_0x9e0c('0xa9')]['id'],'name':_0x16be2f['user'][_0x9e0c('0x38')],'fullname':_0x16be2f['user']['fullname'],'email':_0x16be2f['user'][_0x9e0c('0xd4')]},'contact':_0x16be2f[_0x9e0c('0x3a')][_0x9e0c('0x3b')],'account':_0x16be2f['body'][_0x9e0c('0xd5')]};var _0x348292={'rejectUnauthorized':![],'method':_0x9e0c('0xd6'),'url':_0x9e0c('0xd7'),'headers':{'X-APIKEY':_0x425313[_0x9e0c('0xd1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x16be2f[_0x9e0c('0xa9')]['email']],'buttons':null,'topic':_0x1e8992[_0x9e0c('0xd8')],'note':_[_0x9e0c('0xd9')](_0x1e8992[_0x9e0c('0xd3')])?null:getMustacheRender(_0x1e8992['vidaooNote'],_0x2749f7),'metadata':null},'redirect':_0x9e0c('0xda'),'json':!![]};try{if(!_['isNull'](_0x1e8992['vidaooMetadata'])){var _0xe2a241=getMustacheRender(_0x1e8992['vidaooMetadata'],_0x2749f7);var _0x266d8=JSON[_0x9e0c('0x8e')](_0xe2a241);_0x348292['body'][_0x9e0c('0xdb')]=_0x266d8;}}catch(_0x56cf8b){throw new db['Sequelize']['ValidationError'](_0x9e0c('0xdc'));}return rp(_0x348292);}else{throw new db[(_0x9e0c('0x9f'))][(_0x9e0c('0xdd'))](_0x9e0c('0xde'));}})[_0x9e0c('0x1e')](function(_0x3b2af3){_0x17e769=_0x3b2af3;if(_0x17e769['id']){var _0x20b752={'body':_0x17e769['join_url'],'ChatWebsiteId':_0x1e8992['id'],'ChatInteractionId':_0xc12898['id'],'direction':_0x9e0c('0xdf'),'UserId':_0x16be2f[_0x9e0c('0xa9')]['id']};return db[_0x9e0c('0xe0')][_0x9e0c('0xcc')](_0x20b752,{});}else{throw new db['Sequelize']['ValidationError']('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0x9e0c('0x1e')](function(){return _0xc12898[_0x9e0c('0xe1')]({'vidaooSessionId':_0x17e769['id']});})[_0x9e0c('0x1e')](respondWithResult(_0x11e78f,null))['catch'](handleError(_0x11e78f,null));};exports[_0x9e0c('0xe2')]=function(_0x162f4a,_0x3bbc8e){if(_0x162f4a[_0x9e0c('0x3a')]['id']){delete _0x162f4a['body']['id'];}return db['ChatInteraction'][_0x9e0c('0x77')]({'where':{'id':_0x162f4a['params']['id']},'include':[{'model':db['CmContact'],'as':_0x9e0c('0x7a')}]})['then'](handleEntityNotFound(_0x3bbc8e,null))[_0x9e0c('0x1e')](saveUpdates(_0x162f4a[_0x9e0c('0x3a')],null))[_0x9e0c('0x1e')](respondWithResult(_0x3bbc8e,null))[_0x9e0c('0x28')](handleError(_0x3bbc8e,null));};exports[_0x9e0c('0xe3')]=function(_0x276ee7,_0x1b6c5e,_0x2e754d){if(_0x276ee7[_0x9e0c('0x3a')]['id']){delete _0x276ee7[_0x9e0c('0x3a')]['id'];}return db[_0x9e0c('0x4f')]['find']({'where':{'id':_0x276ee7[_0x9e0c('0xc9')]['id']}})['then'](function(_0x15953b){if(!_0x15953b){logger[_0x9e0c('0x23')](_0x9e0c('0xe4'),'abandon',0x194,_0x9e0c('0xe5'));_0x1b6c5e[_0x9e0c('0x29')](0x194);}else{if(_0x15953b['UserId']){throw new db[(_0x9e0c('0x9f'))][(_0x9e0c('0xdd'))](_0x9e0c('0xe6'));}}return _0x15953b;})[_0x9e0c('0x1e')](function(_0x5962f1){if(_0x5962f1){return _0x5962f1[_0x9e0c('0x35')]({'closed':_0x276ee7[_0x9e0c('0x3a')][_0x9e0c('0x4b')],'disposition':_0x276ee7['body'][_0x9e0c('0x4d')]})[_0x9e0c('0x1e')](function(_0x1a40ab){return _0x1a40ab;});}})[_0x9e0c('0x1e')](function(_0x3fd16c){return respondWithRpcPromise(_0x9e0c('0xe7'),_0x9e0c('0xe3'),_0x276ee7[_0x9e0c('0x3a')],client9004);})[_0x9e0c('0x1e')](respondWithResult(_0x1b6c5e,null))[_0x9e0c('0x28')](handleError(_0x1b6c5e,null));};exports[_0x9e0c('0xe8')]=function(_0x461c23,_0xad02e9,_0x1de1cc){_0x461c23[_0x9e0c('0x3a')][_0x9e0c('0x38')]=_0x461c23[_0x9e0c('0xe9')][_0x9e0c('0xea')];_0x461c23[_0x9e0c('0x3a')][_0x9e0c('0xeb')]=_0x461c23[_0x9e0c('0xe9')]['filename'];_0x461c23[_0x9e0c('0x3a')][_0x9e0c('0x52')]=_0x461c23[_0x9e0c('0xe9')][_0x9e0c('0xec')];return db[_0x9e0c('0xed')][_0x9e0c('0xcc')](_0x461c23[_0x9e0c('0x3a')])['then'](respondWithResult(_0xad02e9,0xc9))[_0x9e0c('0x28')](handleError(_0xad02e9,null));};exports['attachmentDownload']=function(_0xdc5f84,_0x2085a2,_0x43f203){return db[_0x9e0c('0x4f')]['findOne']({'where':{'id':_0xdc5f84[_0x9e0c('0xc9')]['id']},'raw':!![]})[_0x9e0c('0x1e')](handleEntityNotFound(_0x2085a2,null))[_0x9e0c('0x1e')](function(_0x3cd2c1){if(_0x3cd2c1){if(_0x3cd2c1[_0x9e0c('0x4b')]){return _0x2085a2['status'](0x193)[_0x9e0c('0x2b')]({'status':0x193,'message':'Unauthorized'});}return db[_0x9e0c('0xed')][_0x9e0c('0xcf')]({'where':{'id':_0xdc5f84[_0x9e0c('0x55')]['attachId']},'raw':!![]})[_0x9e0c('0x1e')](handleEntityNotFound(_0x2085a2,null));}})[_0x9e0c('0x1e')](function(_0x17dc5f){if(_0x17dc5f){var _0x523471=_0x17dc5f[_0x9e0c('0xee')]!==null;var _0x10f04b=path[_0x9e0c('0xef')](config[_0x9e0c('0xf0')],_0x9e0c('0xf1'));if(_0x523471){_0x10f04b=path['join'](_0x10f04b,_0x9e0c('0xf2'));}var _0x127b82=path[_0x9e0c('0xef')](_0x10f04b,_0x17dc5f[_0x9e0c('0xeb')]);return _0x2085a2[_0x9e0c('0xf3')](_0x127b82);}})['catch'](handleError(_0x2085a2,null));};exports[_0x9e0c('0xf4')]=function(_0x2994b7,_0x1c4985){var _0x43821f=null;var _0x4ef9ba=null;var _0x5ddb59=null;var _0x22054b=null;if(_0x2994b7[_0x9e0c('0x3a')]['id']){delete _0x2994b7[_0x9e0c('0x3a')]['id'];}if(_0x2994b7[_0x9e0c('0x3a')][_0x9e0c('0xf5')]){_0x22054b=path[_0x9e0c('0xef')](config[_0x9e0c('0xf0')],_0x9e0c('0xf6'),util[_0x9e0c('0xf7')](_0x9e0c('0xf8'),Date[_0x9e0c('0xf9')]()));_0x2994b7[_0x9e0c('0x3a')]['pathTranscript']=_0x22054b;}return db[_0x9e0c('0x4f')][_0x9e0c('0x77')]({'where':{'id':_0x2994b7[_0x9e0c('0xc9')]['id']},'include':[{'model':db[_0x9e0c('0xe0')],'as':_0x9e0c('0xfa'),'include':[{'model':db['User'],'as':'User'}]}]})[_0x9e0c('0x1e')](handleEntityNotFound(_0x1c4985,null))[_0x9e0c('0x1e')](saveUpdates(_0x2994b7['body'],null))[_0x9e0c('0x1e')](function(_0x21f198){if(_0x21f198){_0x43821f=_0x21f198;return db[_0x9e0c('0xd0')][_0x9e0c('0x77')]({'where':{'id':_0x43821f[_0x9e0c('0x8b')]}});}})[_0x9e0c('0x1e')](function(_0x4b33e8){if(_0x4b33e8){_0x5ddb59=_0x4b33e8;return db[_0x9e0c('0xfb')][_0x9e0c('0x77')]({'where':{'id':_0x43821f[_0x9e0c('0x81')]}});}})[_0x9e0c('0x1e')](function(_0x4b29f2){if(_0x4b29f2){_0x4ef9ba=_0x4b29f2;if(_0x22054b){var _0x6c9f72=null;for(var _0x396954=0x1;_0x396954<_0x43821f[_0x9e0c('0xfa')][_0x9e0c('0x5a')];++_0x396954){_0x6c9f72=_0x43821f[_0x9e0c('0xfa')][_0x396954];var _0x2d9610=_0x6c9f72[_0x9e0c('0x4a')]?util['format'](_0x9e0c('0xfc'),_0x5ddb59['agentAlias'],_0x6c9f72[_0x9e0c('0x4a')]):_0x9e0c('0xfd');var _0x3cf621=_0x2994b7[_0x9e0c('0x3a')]['customer']||util['format']('%s%d',_0x9e0c('0xfe'),_0x6c9f72['ContactId']);switch(_0x5ddb59[_0x9e0c('0xff')]){case'website_alias':_0x2d9610=_0x6c9f72[_0x9e0c('0x4a')]?util[_0x9e0c('0xf7')](_0x9e0c('0xfc'),_0x5ddb59[_0x9e0c('0x100')],_0x6c9f72[_0x9e0c('0x4a')]):_0x9e0c('0xfd');break;case _0x9e0c('0x101'):_0x2d9610=_0x6c9f72[_0x9e0c('0x4a')]?_0x6c9f72[_0x9e0c('0x87')][_0x9e0c('0x102')]||_0x6c9f72[_0x9e0c('0x87')][_0x9e0c('0x40')]:'System';break;case'agent_fullname':_0x2d9610=_0x6c9f72[_0x9e0c('0x4a')]?_0x6c9f72[_0x9e0c('0x87')][_0x9e0c('0x40')]:_0x9e0c('0xfd');break;default:_0x2d9610=_0x6c9f72[_0x9e0c('0x4a')]?util[_0x9e0c('0xf7')](_0x9e0c('0xfc'),_0x5ddb59[_0x9e0c('0x100')],_0x6c9f72[_0x9e0c('0x4a')]):_0x9e0c('0xfd');}var _0x58e95b=util[_0x9e0c('0xf7')](_0x9e0c('0x103'),moment(_0x6c9f72['createdAt'])[_0x9e0c('0xf7')]('MM/DD/YYYY\x20HH:mm:ss'),_0x6c9f72[_0x9e0c('0x104')]==='in'?_0x3cf621:_0x2d9610,_0x6c9f72[_0x9e0c('0x3a')]);if(!_0x6c9f72[_0x9e0c('0x105')]){fs['appendFileSync'](_0x22054b,_0x58e95b);}}return db[_0x9e0c('0x106')][_0x9e0c('0xcf')]({'where':{'service':!![]},'include':[{'model':db[_0x9e0c('0x107')],'as':'Smtp','raw':!![]}]});}}})[_0x9e0c('0x1e')](function(_0x3a85c1){if(_0x3a85c1&&_0x3a85c1[_0x9e0c('0x108')]&&_0x2994b7['body']){var _0x5d03a5={'tls':{'rejectUnauthorized':![]}};if(_0x3a85c1[_0x9e0c('0x108')]['service']){_0x5d03a5[_0x9e0c('0x109')]=_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0x109')];}else{_0x5d03a5[_0x9e0c('0x10a')]=_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0x10a')];_0x5d03a5[_0x9e0c('0x10b')]=_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0x10b')];_0x5d03a5[_0x9e0c('0x10c')]=_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0x10c')];}if(_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0x10d')]){_0x5d03a5[_0x9e0c('0x10e')]={'user':_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0xa9')],'pass':_0x3a85c1[_0x9e0c('0x108')][_0x9e0c('0x10f')]};}return respondWithRpcPromise(_0x9e0c('0x110'),_0x9e0c('0x111'),{'account':_0x5d03a5,'message':{'from':util[_0x9e0c('0xf7')](_0x9e0c('0x112'),_0x3a85c1[_0x9e0c('0x38')],_0x3a85c1['email']||_0x3a85c1[_0x9e0c('0x108')]['user']),'to':_0x2994b7['body'][_0x9e0c('0xf5')],'subject':_0x9e0c('0x113'),'text':util[_0x9e0c('0xf7')](_0x9e0c('0x114'),_0x2994b7['body']['mailTranscript']),'attachments':[{'path':_0x22054b}]}})['then'](function(){return _0x43821f;})['catch'](function(_0x280b8a){console['error'](_0x280b8a);});}else{return _0x43821f;}})['then'](respondWithStatusCode(_0x1c4985,0xc8))['catch'](handleError(_0x1c4985,null));};exports['addMessage']=function(_0x987b11,_0x5b8c05,_0x2119e5){return db[_0x9e0c('0xe0')][_0x9e0c('0x77')]({'where':{'id':_0x987b11[_0x9e0c('0xc9')]['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x5b8c05,null))[_0x9e0c('0x1e')](function(_0x1c792b){if(_0x1c792b){return _0x1c792b[_0x9e0c('0x115')](_0x987b11[_0x9e0c('0x3a')][_0x9e0c('0x116')],_['omit'](_0x987b11[_0x9e0c('0x3a')],[_0x9e0c('0x116'),'id'])||{});}})[_0x9e0c('0x1e')](respondWithResult(_0x5b8c05,null))[_0x9e0c('0x28')](handleError(_0x5b8c05,null));};exports[_0x9e0c('0x117')]=function(_0x115ddf,_0x406cc4,_0x4aa805){var _0x89167f={'raw':![],'where':{}};var _0x29bb16={};var _0xaf4177={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x9e0c('0xcf')]({'where':{'id':_0x115ddf[_0x9e0c('0xc9')]['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x406cc4,null))['then'](function(_0x1cc4e2){if(_0x1cc4e2){_0x29bb16[_0x9e0c('0x53')]=_[_0x9e0c('0x54')](db[_0x9e0c('0xe0')][_0x9e0c('0x50')]);_0x29bb16[_0x9e0c('0x55')]=_['keys'](_0x115ddf[_0x9e0c('0x55')]);_0x29bb16[_0x9e0c('0x56')]=_[_0x9e0c('0x57')](_0x29bb16[_0x9e0c('0x53')],_0x29bb16[_0x9e0c('0x55')]);_0x89167f[_0x9e0c('0x59')]=_['intersection'](_0x29bb16['model'],qs[_0x9e0c('0x58')](_0x115ddf['query'][_0x9e0c('0x58')]));_0x89167f[_0x9e0c('0x59')]=_0x89167f[_0x9e0c('0x59')][_0x9e0c('0x5a')]?_0x89167f['attributes']:_0x29bb16['model'];if(!_0x115ddf[_0x9e0c('0x55')][_0x9e0c('0x118')](_0x9e0c('0x5b'))){_0x89167f[_0x9e0c('0x2c')]=qs[_0x9e0c('0x2c')](_0x115ddf[_0x9e0c('0x55')]['limit']);_0x89167f['offset']=qs[_0x9e0c('0x2f')](_0x115ddf[_0x9e0c('0x55')][_0x9e0c('0x2f')]);}_0x89167f['order']=qs[_0x9e0c('0x5d')](_0x115ddf[_0x9e0c('0x55')]['sort']);_0x89167f[_0x9e0c('0x5e')]=qs[_0x9e0c('0x56')](_[_0x9e0c('0x119')](_0x115ddf['query'],_0x29bb16[_0x9e0c('0x56')]));_0x89167f['where'][_0x9e0c('0xc5')]=_0x1cc4e2['id'];if(_0x115ddf['query'][_0x9e0c('0x98')]){_0x89167f[_0x9e0c('0x5e')]=_[_0x9e0c('0x39')](_0x89167f[_0x9e0c('0x5e')],{'$or':_[_0x9e0c('0x3f')](_0x89167f[_0x9e0c('0x59')],function(_0x2557c4){var _0x303cfe={};_0x303cfe[_0x2557c4]={'$like':'%'+_0x115ddf['query'][_0x9e0c('0x98')]+'%'};return _0x303cfe;})});}if(_0x115ddf[_0x9e0c('0x55')]['$gte']){var _0x3ea004=_0x115ddf['query'][_0x9e0c('0x8f')][_0x9e0c('0x43')](',');var _0x42fec1={};_0x42fec1[_0x3ea004[0x0]]={'$gte':moment(_0x3ea004[0x1])[_0x9e0c('0xf7')](_0x9e0c('0x11a'))};_0x89167f['where']=_[_0x9e0c('0x39')](_0x89167f['where'],_0x42fec1);}_0x89167f=_[_0x9e0c('0x39')]({},_0x89167f,_0x115ddf[_0x9e0c('0x11b')]);return db[_0x9e0c('0xe0')][_0x9e0c('0x2e')]({'where':_0x89167f[_0x9e0c('0x5e')]})[_0x9e0c('0x1e')](function(_0x3d6a1b){_0xaf4177[_0x9e0c('0x2e')]=_0x3d6a1b;if(_0x115ddf['query'][_0x9e0c('0xca')]){_0x89167f['include']=[{'all':!![]}];}return db[_0x9e0c('0xe0')][_0x9e0c('0x11c')](_0x89167f);})['then'](function(_0x25cf8){_0xaf4177['rows']=_0x25cf8;return _0xaf4177;});}})[_0x9e0c('0x1e')](respondWithFilteredResult(_0x406cc4,_0x89167f))['catch'](handleError(_0x406cc4,null));};exports[_0x9e0c('0x11d')]=function(_0x54e792,_0x4d1c44,_0xd76887){var _0x3d4d70={'where':{}},_0x1da793={},_0x40b8ed={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x9e0c('0xcf')]({'where':{'id':_0x54e792[_0x9e0c('0xc9')]['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x4d1c44,null))[_0x9e0c('0x1e')](function(_0x423abd){if(_0x423abd){_0x1da793[_0x9e0c('0x53')]=_[_0x9e0c('0x54')](db['ChatMessage'][_0x9e0c('0x50')]);_0x1da793[_0x9e0c('0x55')]=_[_0x9e0c('0x54')](_0x54e792[_0x9e0c('0x55')]);_0x1da793[_0x9e0c('0x56')]=_[_0x9e0c('0x57')](_0x1da793[_0x9e0c('0x53')],_0x1da793[_0x9e0c('0x55')]);_0x3d4d70[_0x9e0c('0x59')]=_['intersection'](_0x1da793[_0x9e0c('0x53')],qs['fields'](_0x54e792['query']['fields']));_0x3d4d70['attributes']=_0x3d4d70[_0x9e0c('0x59')][_0x9e0c('0x5a')]?_0x3d4d70[_0x9e0c('0x59')]:_0x1da793['model'];if(!_0x54e792[_0x9e0c('0x55')]['hasOwnProperty'](_0x9e0c('0x5b'))){_0x3d4d70[_0x9e0c('0x2c')]=qs[_0x9e0c('0x2c')](_0x54e792[_0x9e0c('0x55')][_0x9e0c('0x2c')]);_0x3d4d70['offset']=qs[_0x9e0c('0x2f')](_0x54e792[_0x9e0c('0x55')][_0x9e0c('0x2f')]);}_0x3d4d70['order']=qs[_0x9e0c('0x5d')](_0x54e792[_0x9e0c('0x55')][_0x9e0c('0x5d')]);_0x3d4d70['where']=qs[_0x9e0c('0x56')](_[_0x9e0c('0x119')](_0x54e792[_0x9e0c('0x55')],_0x1da793[_0x9e0c('0x56')]));_0x3d4d70[_0x9e0c('0x5e')][_0x9e0c('0xc5')]=_0x423abd['id'];if(_0x54e792['query']['filter']){_0x3d4d70['where']=_[_0x9e0c('0x39')](_0x3d4d70[_0x9e0c('0x5e')],{'$or':_[_0x9e0c('0x3f')](_0x3d4d70[_0x9e0c('0x59')],function(_0x45b794){var _0x241500={};_0x241500[_0x45b794]={'$like':'%'+_0x54e792[_0x9e0c('0x55')]['filter']+'%'};return _0x241500;})});}_0x3d4d70['where']['secret']=![];if(_0x54e792[_0x9e0c('0x55')]['id']){_0x3d4d70['where']['id']={'$gt':_0x54e792[_0x9e0c('0x55')]['id']};}_0x3d4d70=_[_0x9e0c('0x39')]({},_0x3d4d70,_0x54e792[_0x9e0c('0x11b')]);return db[_0x9e0c('0xe0')][_0x9e0c('0x2e')]({'where':_0x3d4d70[_0x9e0c('0x5e')]})[_0x9e0c('0x1e')](function(_0x50a90d){_0x40b8ed['count']=_0x50a90d;_0x3d4d70['include']=[];if(_0x54e792[_0x9e0c('0x55')][_0x9e0c('0x11e')]){_0x3d4d70['include'][_0x9e0c('0x45')]({'model':db[_0x9e0c('0x87')],'as':'User','attributes':['id',_0x9e0c('0x40'),_0x9e0c('0x102')]});}if(_0x54e792[_0x9e0c('0x55')]['includeAll']){_0x3d4d70[_0x9e0c('0xcb')]=[{'all':!![]}];}return db[_0x9e0c('0xe0')]['findAll'](_0x3d4d70);})[_0x9e0c('0x1e')](function(_0x45cd89){_0x40b8ed[_0x9e0c('0xc7')]=_0x45cd89;return _0x40b8ed;});}})['then'](respondWithFilteredResult(_0x4d1c44,_0x3d4d70))[_0x9e0c('0x28')](handleError(_0x4d1c44,null));};exports[_0x9e0c('0x11f')]=function(_0x17a863,_0x35c59f,_0x3916ad){return db[_0x9e0c('0x4f')]['find']({'where':{'id':_0x17a863['params']['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x35c59f,null))[_0x9e0c('0x1e')](function(_0x41b6c9){if(_0x41b6c9){return _0x41b6c9['setTags'](_0x17a863[_0x9e0c('0x3a')][_0x9e0c('0x116')],_[_0x9e0c('0x120')](_0x17a863['body'],[_0x9e0c('0x116'),'id'])||{})[_0x9e0c('0x121')](function(){return db['Tag'][_0x9e0c('0x11c')]({'attributes':['id',_0x9e0c('0x38'),'color'],'where':{'id':_0x17a863[_0x9e0c('0x3a')]['ids']}});})[_0x9e0c('0x1e')](function(_0x328b01){socket['emit']('chatInteractionTags:save',{'id':Number(_0x17a863[_0x9e0c('0xc9')]['id']),'tags':_0x328b01||[]});return{'id':Number(_0x17a863[_0x9e0c('0xc9')]['id']),'tags':_0x328b01||[]};});}})[_0x9e0c('0x1e')](respondWithResult(_0x35c59f,null))[_0x9e0c('0x28')](handleError(_0x35c59f,null));};exports[_0x9e0c('0x122')]=function(_0x140065,_0x197e20,_0x6b757e){return db[_0x9e0c('0x4f')][_0x9e0c('0x77')]({'where':{'id':_0x140065['params']['id']}})[_0x9e0c('0x1e')](handleEntityNotFound(_0x197e20,null))[_0x9e0c('0x1e')](function(_0x40af93){if(_0x40af93){return _0x40af93['removeTags'](_0x140065[_0x9e0c('0x55')]['ids']);}})[_0x9e0c('0x1e')](respondWithStatusCode(_0x197e20,null))[_0x9e0c('0x28')](handleError(_0x197e20,null));};exports['download']=function(_0x16bcd6,_0xe6d196){var _0x5006fd=moment()[_0x9e0c('0x123')]()[_0x9e0c('0xad')]();var _0x62eafb=path[_0x9e0c('0xef')](config['root'],'server','files',_0x9e0c('0x124'));var _0xbab93a=path[_0x9e0c('0xef')](config[_0x9e0c('0xf0')],_0x9e0c('0x125'),_0x9e0c('0x126'),'attachments');var _0x550a25=path[_0x9e0c('0xef')](_0x62eafb,_0x5006fd);var _0x1789db=util[_0x9e0c('0xf7')](_0x9e0c('0x127'),_0x16bcd6[_0x9e0c('0xc9')]['id'],_0x5006fd);var _0x4cc08a=path[_0x9e0c('0xef')](_0x62eafb,_0x1789db);var _0x4780b3=[];_0x4780b3[_0x9e0c('0x45')]({'model':db[_0x9e0c('0x87')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x4780b3[_0x9e0c('0x45')]({'model':db[_0x9e0c('0xfb')],'as':_0x9e0c('0x7a'),'attributes':['id',_0x9e0c('0x128'),_0x9e0c('0x129')],'raw':!![]});if(_0x16bcd6[_0x9e0c('0x55')]['attachments']){_0x4780b3[_0x9e0c('0x45')]({'model':db[_0x9e0c('0xed')],'as':_0x9e0c('0xed'),'raw':!![]});}var _0x3ed4c2=[{'model':db[_0x9e0c('0xe0')],'as':'Messages','attributes':['id',_0x9e0c('0x3a'),_0x9e0c('0x12a'),_0x9e0c('0x104'),_0x9e0c('0x105'),_0x9e0c('0x94')],'include':_0x4780b3}];_0x3ed4c2[_0x9e0c('0x45')]({'model':db[_0x9e0c('0xd0')],'as':'Account','attributes':['id','name']});_0x3ed4c2[_0x9e0c('0x45')]({'model':db[_0x9e0c('0x87')],'as':_0x9e0c('0x12b'),'attributes':['id','fullname']});return db[_0x9e0c('0x4f')][_0x9e0c('0x77')]({'where':{'id':_0x16bcd6[_0x9e0c('0xc9')]['id']},'include':_0x3ed4c2})['then'](handleEntityNotFound(_0xe6d196,null))[_0x9e0c('0x1e')](function(_0x16433c){if(_0x16433c){var _0x2e0779=_0x16433c[_0x9e0c('0x12c')]({'plain':!![]});fs['mkdirSync'](_0x550a25);var _0x39e3b8={'channel':_0x9e0c('0x12d'),'account':_0x2e0779[_0x9e0c('0x12e')]['name'],'agent':_0x2e0779[_0x9e0c('0x12b')]?_0x2e0779[_0x9e0c('0x12b')][_0x9e0c('0x40')]:_0x9e0c('0x12f'),'createdAt':moment(_0x2e0779['createdAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x2e0779[_0x9e0c('0x4b')]?moment(_0x2e0779[_0x9e0c('0x130')])[_0x9e0c('0xf7')](_0x9e0c('0x11a'))[_0x9e0c('0xad')]():'','disposition':_0x2e0779['disposition'],'chatInfo':{'browser':_0x2e0779[_0x9e0c('0x131')],'os':_0x2e0779[_0x9e0c('0x132')],'referer':_0x2e0779['referer'],'customerIp':_0x2e0779[_0x9e0c('0x133')],'customerPort':_0x2e0779['customerPort']?_0x2e0779[_0x9e0c('0x134')]:_0x9e0c('0x12f')},'messages':_(_0x2e0779['Messages'])[_0x9e0c('0x135')]()['filter']({'secret':![]})[_0x9e0c('0x3f')](function(_0x4ff27d){if(_0x4ff27d[_0x9e0c('0xed')]){var _0x3cd815=path[_0x9e0c('0xef')](_0xbab93a,_0x4ff27d[_0x9e0c('0xed')]['basename']);if(fs[_0x9e0c('0x136')](_0x3cd815)){fs[_0x9e0c('0x137')](_0x3cd815)['pipe'](fs[_0x9e0c('0x138')](path['join'](_0x550a25,_0x4ff27d['Attachment'][_0x9e0c('0xeb')])));}}return{'date':moment(_0x4ff27d[_0x9e0c('0x12a')])[_0x9e0c('0xf7')]('YYYY-MM-DD\x20HH:mm:ss')[_0x9e0c('0xad')](),'sender':_0x4ff27d[_0x9e0c('0x104')]===_0x9e0c('0xdf')?_0x4ff27d[_0x9e0c('0x87')]?_0x4ff27d[_0x9e0c('0x87')][_0x9e0c('0x40')]:_0x9e0c('0xfd'):_0x4ff27d[_0x9e0c('0x7a')]['firstName']+(_0x4ff27d[_0x9e0c('0x7a')][_0x9e0c('0x129')]?'\x20'+_0x4ff27d['Contact'][_0x9e0c('0x129')]:''),'body':_0x4ff27d[_0x9e0c('0xed')]?_0x4ff27d[_0x9e0c('0xed')][_0x9e0c('0xeb')]:_0x4ff27d['body'],'direction':_0x4ff27d[_0x9e0c('0x104')]===_0x9e0c('0xdf')?'A':'C','secret':_0x4ff27d[_0x9e0c('0x105')],'read':_0x4ff27d[_0x9e0c('0x94')],'attachment':_0x4ff27d['Attachment']};})[_0x9e0c('0x7d')]()};return ejs[_0x9e0c('0x139')](path['join'](config['root'],_0x9e0c('0x125'),_0x9e0c('0x13a'),_0x9e0c('0x13b')),{'interaction':_0x39e3b8})['then'](function(_0x8379f5){var _0x8530cc=path[_0x9e0c('0xef')](_0x550a25,'transcript-'+_0x2e0779['id']+'-'+_0x5006fd+_0x9e0c('0x13c'));var _0x4efd80={'path':_0x8530cc,'channel':_0x9e0c('0x12d'),'interactionId':_0x2e0779['id']};return pdf[_0x9e0c('0x13d')](_0x8379f5,_0x4efd80);})['then'](function(){return new BPromise(function(_0x480d10,_0x510fa7){zipdir(_0x550a25,{'saveTo':_0x4cc08a},function(_0x2425e6,_0x2b40bf){if(_0x2425e6)return _0x510fa7(_0x2425e6);return _0x480d10(_0x2b40bf);});})[_0x9e0c('0x1e')](function(){return new BPromise(function(_0x3a5d08,_0x598673){rimraf(_0x550a25,function(_0x31aa96){if(_0x31aa96)_0x598673(_0x31aa96);return _0x3a5d08();});});})[_0x9e0c('0x1e')](function(){return _0xe6d196[_0x9e0c('0xf3')](_0x4cc08a,_0x1789db,function(_0x4dacec){if(_0x4dacec){console['log'](_0x9e0c('0x13e'),_0x4dacec);}else{fs[_0x9e0c('0x13f')](_0x4cc08a);}});});});}else{return _0xe6d196['sendStatus'](0xc8);}})['catch'](handleError(_0xe6d196,null));};
\ No newline at end of file
index ba38f9e..eb392f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd30e=['unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users','map','findAll'];(function(_0x3909f8,_0x4c99ed){var _0x2bff6f=function(_0xe9ee71){while(--_0xe9ee71){_0x3909f8['push'](_0x3909f8['shift']());}};_0x2bff6f(++_0x4c99ed);}(_0xd30e,0x182));var _0xed30=function(_0x566960,_0x49aaf0){_0x566960=_0x566960-0x0;var _0x1ac6f1=_0xd30e[_0x566960];return _0x1ac6f1;};'use strict';var EventEmitter=require(_0xed30('0x0'));var ChatInteraction=require(_0xed30('0x1'))['db'][_0xed30('0x2')];var ChatMessage=require(_0xed30('0x1'))['db'][_0xed30('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xed30('0x4')](0x0);var events={'afterCreate':_0xed30('0x5'),'afterUpdate':_0xed30('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4524b1){return function(_0x31974f,_0x5811c6,_0x2eb6b3){_0x31974f[_0xed30('0x7')]({'attributes':['id'],'raw':!![]})[_0xed30('0x8')](function(_0x39b49f){_0x31974f[_0xed30('0x9')](_0xed30('0xa'),_0x39b49f[_0xed30('0xb')](function(_0xb37fd0){return{'id':_0xb37fd0['id']};}));return ChatMessage[_0xed30('0xc')]({'where':{'ChatInteractionId':_0x31974f['id'],'direction':'in','read':![]},'raw':!![]});})[_0xed30('0x8')](function(_0x109a24){_0x31974f[_0xed30('0x9')](_0xed30('0xd'),_0x109a24[_0xed30('0xe')]);ChatInteractionEvents[_0xed30('0xf')](_0x4524b1+':'+_0x31974f['id'],_0x31974f);ChatInteractionEvents['emit'](_0x4524b1,_0x31974f);_0x2eb6b3(null);})[_0xed30('0x10')](_0x2eb6b3(null));};}for(var e in events){if(events[_0xed30('0x11')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0xed30('0x12')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x99ba=['findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','ChatInteraction','ChatMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users','map'];(function(_0x59a086,_0x57514c){var _0x588ac7=function(_0x122c4e){while(--_0x122c4e){_0x59a086['push'](_0x59a086['shift']());}};_0x588ac7(++_0x57514c);}(_0x99ba,0x1b8));var _0xa99b=function(_0xd32e48,_0x396a2a){_0xd32e48=_0xd32e48-0x0;var _0x3577c4=_0x99ba[_0xd32e48];return _0x3577c4;};'use strict';var EventEmitter=require('events');var ChatInteraction=require('../../mysqldb')['db'][_0xa99b('0x0')];var ChatMessage=require('../../mysqldb')['db'][_0xa99b('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xa99b('0x2')](0x0);var events={'afterCreate':_0xa99b('0x3'),'afterUpdate':_0xa99b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x166511){return function(_0xfe1809,_0xb8e071,_0x4340af){_0xfe1809[_0xa99b('0x5')]({'attributes':['id'],'raw':!![]})[_0xa99b('0x6')](function(_0xe19bca){_0xfe1809[_0xa99b('0x7')](_0xa99b('0x8'),_0xe19bca[_0xa99b('0x9')](function(_0x4aba5b){return{'id':_0x4aba5b['id']};}));return ChatMessage[_0xa99b('0xa')]({'where':{'ChatInteractionId':_0xfe1809['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa99b('0x6')](function(_0x2d84f1){_0xfe1809[_0xa99b('0x7')](_0xa99b('0xb'),_0x2d84f1[_0xa99b('0xc')]);ChatInteractionEvents[_0xa99b('0xd')](_0x166511+':'+_0xfe1809['id'],_0xfe1809);ChatInteractionEvents[_0xa99b('0xd')](_0x166511,_0xfe1809);_0x4340af(null);})[_0xa99b('0xe')](_0x4340af(null));};}for(var e in events){if(events[_0xa99b('0xf')](e)){var event=events[e];ChatInteraction[_0xa99b('0x10')](e,emitEvent(event));}}module[_0xa99b('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index 10b0594..771d9d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x124f=['chat_interactions','changed','closed','closedAt','format','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','define'];(function(_0x466805,_0x3e5529){var _0x4e57f1=function(_0x556795){while(--_0x556795){_0x466805['push'](_0x466805['shift']());}};_0x4e57f1(++_0x3e5529);}(_0x124f,0x1d7));var _0xf124=function(_0x4c7f37,_0x34351c){_0x4c7f37=_0x4c7f37-0x0;var _0x2ead28=_0x124f[_0x4c7f37];return _0x2ead28;};'use strict';var _=require(_0xf124('0x0'));var util=require(_0xf124('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf124('0x2'));var BPromise=require(_0xf124('0x3'));var rp=require(_0xf124('0x4'));var fs=require('fs');var path=require(_0xf124('0x5'));var rimraf=require('rimraf');var config=require(_0xf124('0x6'));var attributes=require(_0xf124('0x7'));module['exports']=function(_0x48c795,_0x2d2178){return _0x48c795[_0xf124('0x8')]('ChatInteraction',attributes,{'tableName':_0xf124('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xf3f30e,_0x25fa80,_0x532519){if(_0xf3f30e[_0xf124('0xa')](_0xf124('0xb'))){_0xf3f30e[_0xf124('0xc')]=moment()[_0xf124('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x532519(null,_0xf3f30e);}},'charset':_0xf124('0xe'),'collate':_0xf124('0xf')});};
\ No newline at end of file
+var _0x56ce=['../../config/environment','./chatInteraction.attributes','define','ChatInteraction','chat_interactions','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x56ce,0x81));var _0xe56c=function(_0x52aec3,_0x31455f){_0x52aec3=_0x52aec3-0x0;var _0x4534cc=_0x56ce[_0x52aec3];return _0x4534cc;};'use strict';var _=require(_0xe56c('0x0'));var util=require('util');var logger=require(_0xe56c('0x1'))(_0xe56c('0x2'));var moment=require(_0xe56c('0x3'));var BPromise=require(_0xe56c('0x4'));var rp=require(_0xe56c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe56c('0x6'));var config=require(_0xe56c('0x7'));var attributes=require(_0xe56c('0x8'));module['exports']=function(_0xa206d6,_0x497e7b){return _0xa206d6[_0xe56c('0x9')](_0xe56c('0xa'),attributes,{'tableName':_0xe56c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xd29341,_0x498cc9,_0x3b1b24){if(_0xd29341[_0xe56c('0xc')](_0xe56c('0xd'))){_0xd29341['closedAt']=moment()[_0xe56c('0xe')](_0xe56c('0xf'));}_0x3b1b24(null,_0xd29341);}},'charset':_0xe56c('0x10'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 97763f6..96ad4ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf7c=['defaults','redis','socket.io-emitter','./chatInteraction.socket','register','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateChatInteraction','ChatInteraction','body','options','raw','where','attributes','limit','AddTagsToChatInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x35c507,_0x563d6b){var _0x35783e=function(_0x5e4a36){while(--_0x5e4a36){_0x35c507['push'](_0x35c507['shift']());}};_0x35783e(++_0x563d6b);}(_0xaf7c,0x17f));var _0xcaf7=function(_0x9787ca,_0x211652){_0x9787ca=_0x9787ca-0x0;var _0x504e97=_0xaf7c[_0x9787ca];return _0x504e97;};'use strict';var _=require(_0xcaf7('0x0'));var util=require(_0xcaf7('0x1'));var moment=require(_0xcaf7('0x2'));var BPromise=require('bluebird');var rs=require(_0xcaf7('0x3'));var fs=require('fs');var Redis=require(_0xcaf7('0x4'));var db=require(_0xcaf7('0x5'))['db'];var utils=require(_0xcaf7('0x6'));var logger=require(_0xcaf7('0x7'))(_0xcaf7('0x8'));var config=require(_0xcaf7('0x9'));var jayson=require(_0xcaf7('0xa'));var client=jayson[_0xcaf7('0xb')][_0xcaf7('0xc')]({'port':0x232a});config['redis']=_[_0xcaf7('0xd')](config[_0xcaf7('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0xcaf7('0xf'))(new Redis(config[_0xcaf7('0xe')]));require(_0xcaf7('0x10'))[_0xcaf7('0x11')](socket);function respondWithRpcPromise(_0x11369e,_0x439dd8,_0x4a1616){return new BPromise(function(_0x29fc2d,_0x9f0d95){return client['request'](_0x11369e,_0x4a1616)[_0xcaf7('0x12')](function(_0x40a8d7){logger['info'](_0xcaf7('0x13'),_0x439dd8,_0xcaf7('0x14'));logger[_0xcaf7('0x15')](_0xcaf7('0x16'),_0x439dd8,'request\x20sent',JSON[_0xcaf7('0x17')](_0x40a8d7));if(_0x40a8d7[_0xcaf7('0x18')]){if(_0x40a8d7[_0xcaf7('0x18')]['code']===0x1f4){logger[_0xcaf7('0x18')](_0xcaf7('0x13'),_0x439dd8,_0x40a8d7[_0xcaf7('0x18')][_0xcaf7('0x19')]);return _0x9f0d95(_0x40a8d7[_0xcaf7('0x18')][_0xcaf7('0x19')]);}logger[_0xcaf7('0x18')]('ChatInteraction,\x20%s,\x20%s',_0x439dd8,_0x40a8d7['error'][_0xcaf7('0x19')]);return _0x29fc2d(_0x40a8d7[_0xcaf7('0x18')][_0xcaf7('0x19')]);}else{logger[_0xcaf7('0x1a')]('ChatInteraction,\x20%s,\x20%s',_0x439dd8,_0xcaf7('0x14'));_0x29fc2d(_0x40a8d7[_0xcaf7('0x1b')][_0xcaf7('0x19')]);}})[_0xcaf7('0x1c')](function(_0xb1586){logger[_0xcaf7('0x18')](_0xcaf7('0x13'),_0x439dd8,_0xb1586);_0x9f0d95(_0xb1586);});});}exports[_0xcaf7('0x1d')]=function(_0x270ad6){var _0x61807a=this;return new Promise(function(_0x4dd349,_0x523bed){return db[_0xcaf7('0x1e')]['update'](_0x270ad6[_0xcaf7('0x1f')],{'raw':_0x270ad6[_0xcaf7('0x20')]?_0x270ad6[_0xcaf7('0x20')][_0xcaf7('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x270ad6[_0xcaf7('0x20')]?_0x270ad6['options'][_0xcaf7('0x22')]||null:null,'attributes':_0x270ad6[_0xcaf7('0x20')]?_0x270ad6[_0xcaf7('0x20')][_0xcaf7('0x23')]||null:null,'limit':_0x270ad6[_0xcaf7('0x20')]?_0x270ad6['options'][_0xcaf7('0x24')]||null:null})['then'](function(_0x10f2f4){logger[_0xcaf7('0x1a')](_0xcaf7('0x1d'),_0x270ad6);logger[_0xcaf7('0x15')](_0xcaf7('0x1d'),_0x270ad6,JSON['stringify'](_0x10f2f4));_0x4dd349(_0x10f2f4);})[_0xcaf7('0x1c')](function(_0xe2a9b9){logger[_0xcaf7('0x18')](_0xcaf7('0x1d'),_0xe2a9b9[_0xcaf7('0x19')],_0x270ad6);_0x523bed(_0x61807a['error'](0x1f4,_0xe2a9b9[_0xcaf7('0x19')]));});});};exports[_0xcaf7('0x25')]=function(_0x23e244){return new Promise(function(_0x364afc,_0x3e6a62){return db[_0xcaf7('0x1e')][_0xcaf7('0x26')]({'where':_0x23e244[_0xcaf7('0x20')]?_0x23e244[_0xcaf7('0x20')][_0xcaf7('0x22')]||null:null})[_0xcaf7('0x12')](function(_0x48ae56){if(_0x48ae56){return _0x48ae56[_0xcaf7('0x27')](_0x23e244[_0xcaf7('0x1f')][_0xcaf7('0x28')],_[_0xcaf7('0x29')](_0x23e244['body'],[_0xcaf7('0x28'),'id'])||{});}})[_0xcaf7('0x2a')](function(_0x55c1d6){logger['info'](_0xcaf7('0x2b'),_0x23e244);logger[_0xcaf7('0x15')](_0xcaf7('0x2b'),_0x23e244,JSON[_0xcaf7('0x17')](_0x55c1d6));_0x364afc(_0x55c1d6);})[_0xcaf7('0x1c')](function(_0x5ddc55){logger[_0xcaf7('0x18')](_0xcaf7('0x2b'),_0x5ddc55[_0xcaf7('0x19')],_0x23e244);_0x3e6a62(_this[_0xcaf7('0x18')](0x1f4,_0x5ddc55['message']));});});};
\ No newline at end of file
+var _0x4ff5=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','defaults','redis','socket.io-emitter','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','limit','catch','AddTagsToChatInteraction','find','addTags','ids','AddTags'];(function(_0x144054,_0x2b8d73){var _0x545841=function(_0x221a51){while(--_0x221a51){_0x144054['push'](_0x144054['shift']());}};_0x545841(++_0x2b8d73);}(_0x4ff5,0x1c8));var _0x54ff=function(_0x2a357b,_0x429e11){_0x2a357b=_0x2a357b-0x0;var _0x210595=_0x4ff5[_0x2a357b];return _0x210595;};'use strict';var _=require(_0x54ff('0x0'));var util=require('util');var moment=require(_0x54ff('0x1'));var BPromise=require(_0x54ff('0x2'));var rs=require(_0x54ff('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x54ff('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x54ff('0x5'))('rpc');var config=require(_0x54ff('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x54ff('0x7')][_0x54ff('0x8')]({'port':0x232a});config['redis']=_[_0x54ff('0x9')](config[_0x54ff('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x54ff('0xb'))(new Redis(config['redis']));require('./chatInteraction.socket')[_0x54ff('0xc')](socket);function respondWithRpcPromise(_0x57021f,_0x58f2d0,_0xb2d033){return new BPromise(function(_0x1935da,_0x258781){return client[_0x54ff('0xd')](_0x57021f,_0xb2d033)[_0x54ff('0xe')](function(_0x3c3cd9){logger[_0x54ff('0xf')](_0x54ff('0x10'),_0x58f2d0,_0x54ff('0x11'));logger[_0x54ff('0x12')](_0x54ff('0x13'),_0x58f2d0,_0x54ff('0x11'),JSON[_0x54ff('0x14')](_0x3c3cd9));if(_0x3c3cd9[_0x54ff('0x15')]){if(_0x3c3cd9['error'][_0x54ff('0x16')]===0x1f4){logger[_0x54ff('0x15')](_0x54ff('0x10'),_0x58f2d0,_0x3c3cd9['error'][_0x54ff('0x17')]);return _0x258781(_0x3c3cd9['error'][_0x54ff('0x17')]);}logger[_0x54ff('0x15')](_0x54ff('0x10'),_0x58f2d0,_0x3c3cd9[_0x54ff('0x15')][_0x54ff('0x17')]);return _0x1935da(_0x3c3cd9[_0x54ff('0x15')][_0x54ff('0x17')]);}else{logger[_0x54ff('0xf')](_0x54ff('0x10'),_0x58f2d0,'request\x20sent');_0x1935da(_0x3c3cd9['result'][_0x54ff('0x17')]);}})['catch'](function(_0x45d985){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x58f2d0,_0x45d985);_0x258781(_0x45d985);});});}exports[_0x54ff('0x18')]=function(_0x307296){var _0x5930e2=this;return new Promise(function(_0x5acc34,_0x43e73b){return db[_0x54ff('0x19')][_0x54ff('0x1a')](_0x307296[_0x54ff('0x1b')],{'raw':_0x307296[_0x54ff('0x1c')]?_0x307296[_0x54ff('0x1c')][_0x54ff('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x307296[_0x54ff('0x1c')]?_0x307296[_0x54ff('0x1c')]['where']||null:null,'attributes':_0x307296[_0x54ff('0x1c')]?_0x307296[_0x54ff('0x1c')][_0x54ff('0x1e')]||null:null,'limit':_0x307296[_0x54ff('0x1c')]?_0x307296[_0x54ff('0x1c')][_0x54ff('0x1f')]||null:null})['then'](function(_0x76696f){logger[_0x54ff('0xf')](_0x54ff('0x18'),_0x307296);logger[_0x54ff('0x12')](_0x54ff('0x18'),_0x307296,JSON[_0x54ff('0x14')](_0x76696f));_0x5acc34(_0x76696f);})[_0x54ff('0x20')](function(_0x1d6f88){logger[_0x54ff('0x15')](_0x54ff('0x18'),_0x1d6f88[_0x54ff('0x17')],_0x307296);_0x43e73b(_0x5930e2['error'](0x1f4,_0x1d6f88['message']));});});};exports[_0x54ff('0x21')]=function(_0x50b82b){return new Promise(function(_0x55e067,_0x122c37){return db[_0x54ff('0x19')][_0x54ff('0x22')]({'where':_0x50b82b[_0x54ff('0x1c')]?_0x50b82b[_0x54ff('0x1c')]['where']||null:null})[_0x54ff('0xe')](function(_0x5bc34b){if(_0x5bc34b){return _0x5bc34b[_0x54ff('0x23')](_0x50b82b[_0x54ff('0x1b')][_0x54ff('0x24')],_['omit'](_0x50b82b[_0x54ff('0x1b')],[_0x54ff('0x24'),'id'])||{});}})['spread'](function(_0x308c75){logger[_0x54ff('0xf')](_0x54ff('0x25'),_0x50b82b);logger[_0x54ff('0x12')](_0x54ff('0x25'),_0x50b82b,JSON['stringify'](_0x308c75));_0x55e067(_0x308c75);})[_0x54ff('0x20')](function(_0x33d27c){logger[_0x54ff('0x15')]('AddTags',_0x33d27c[_0x54ff('0x17')],_0x50b82b);_0x122c37(_this['error'](0x1f4,_0x33d27c['message']));});});};
\ No newline at end of file
index 55e5eec..f5895fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc622=['update','register','chatInteraction:','./chatInteraction.events','remove'];(function(_0x2e7360,_0x4846c3){var _0x771e0e=function(_0x29393f){while(--_0x29393f){_0x2e7360['push'](_0x2e7360['shift']());}};_0x771e0e(++_0x4846c3);}(_0xc622,0xb2));var _0x2c62=function(_0x9d639c,_0x524dbe){_0x9d639c=_0x9d639c-0x0;var _0x1671de=_0xc622[_0x9d639c];return _0x1671de;};'use strict';var ChatInteractionEvents=require(_0x2c62('0x0'));var events=['save',_0x2c62('0x1'),_0x2c62('0x2')];function createListener(_0x2155f7,_0x5aae4f){return function(_0x42b0bb){_0x5aae4f['emit'](_0x2155f7,_0x42b0bb);};}function removeListener(_0x41a56d,_0x32cedd){return function(){ChatInteractionEvents['removeListener'](_0x41a56d,_0x32cedd);};}exports[_0x2c62('0x3')]=function(_0x3ba052){for(var _0x19ee18=0x0,_0x584607=events['length'];_0x19ee18<_0x584607;_0x19ee18++){var _0x365544=events[_0x19ee18];var _0x10796b=createListener(_0x2c62('0x4')+_0x365544,_0x3ba052);ChatInteractionEvents['on'](_0x365544,_0x10796b);}};
\ No newline at end of file
+var _0xd26d=['save','remove','update','emit','removeListener','register','length','chatInteraction:'];(function(_0x42e8e9,_0x4bc353){var _0x15b530=function(_0x47682e){while(--_0x47682e){_0x42e8e9['push'](_0x42e8e9['shift']());}};_0x15b530(++_0x4bc353);}(_0xd26d,0x108));var _0xdd26=function(_0x1ea729,_0x3552bb){_0x1ea729=_0x1ea729-0x0;var _0x3576c4=_0xd26d[_0x1ea729];return _0x3576c4;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0xdd26('0x0'),_0xdd26('0x1'),_0xdd26('0x2')];function createListener(_0x247aba,_0xec5751){return function(_0x1e979c){_0xec5751[_0xdd26('0x3')](_0x247aba,_0x1e979c);};}function removeListener(_0xffa247,_0x5d7819){return function(){ChatInteractionEvents[_0xdd26('0x4')](_0xffa247,_0x5d7819);};}exports[_0xdd26('0x5')]=function(_0x27474f){for(var _0x412c84=0x0,_0x199761=events[_0xdd26('0x6')];_0x412c84<_0x199761;_0x412c84++){var _0x4c1d6b=events[_0x412c84];var _0x5097ca=createListener(_0xdd26('0x7')+_0x4c1d6b,_0x27474f);ChatInteractionEvents['on'](_0x4c1d6b,_0x5097ca);}};
\ No newline at end of file
index 0bee637..0762bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc384=['now','originalname','replace','/:id/attachment_upload','single','attachmentUpload','addMessage','/:id/tags','tracked','chat','put','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','/:id','chatinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','isAuthenticated','describe','isChatInteractionAuthorized','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','download','post','create','createVidaooSession','join','root','format'];(function(_0x44dcd3,_0x482ee7){var _0xad000c=function(_0x30fc23){while(--_0x30fc23){_0x44dcd3['push'](_0x44dcd3['shift']());}};_0xad000c(++_0x482ee7);}(_0xc384,0x195));var _0x4c38=function(_0x3fdae3,_0x23976d){_0x3fdae3=_0x3fdae3-0x0;var _0x337691=_0xc384[_0x3fdae3];return _0x337691;};'use strict';var multer=require(_0x4c38('0x0'));var util=require(_0x4c38('0x1'));var path=require(_0x4c38('0x2'));var timeout=require(_0x4c38('0x3'));var express=require(_0x4c38('0x4'));var router=express[_0x4c38('0x5')]();var fs_extra=require(_0x4c38('0x6'));var auth=require(_0x4c38('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x4c38('0x8'));var controller=require('./chatInteraction.controller');router[_0x4c38('0x9')]('/',auth['isAuthenticated'](),controller[_0x4c38('0xa')]);router[_0x4c38('0x9')]('/describe',auth[_0x4c38('0xb')](),controller[_0x4c38('0xc')]);router[_0x4c38('0x9')]('/:id',auth[_0x4c38('0xd')](),controller['show']);router[_0x4c38('0x9')](_0x4c38('0xe'),auth[_0x4c38('0xd')](),controller[_0x4c38('0xf')]);router[_0x4c38('0x9')](_0x4c38('0x10'),auth[_0x4c38('0xb')](),controller[_0x4c38('0x11')]);router[_0x4c38('0x9')](_0x4c38('0x12'),auth['isChatInteractionAuthorized'](),controller[_0x4c38('0x13')]);router[_0x4c38('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0x4c38('0x14')]);router[_0x4c38('0x15')]('/',auth['isAuthenticated'](),controller[_0x4c38('0x16')]);router[_0x4c38('0x15')]('/:id/vidaoo',auth[_0x4c38('0xb')](),controller[_0x4c38('0x17')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3a0db6,_0x5494f1,_0x2df049){_0x2df049(null,path[_0x4c38('0x18')](config[_0x4c38('0x19')],'server/files/attachments/'));},'filename':function(_0x105192,_0x32d3b8,_0x3352e8){_0x3352e8(null,util[_0x4c38('0x1a')]('%s-%s',Date[_0x4c38('0x1b')](),_0x32d3b8[_0x4c38('0x1c')][_0x4c38('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x4c38('0x15')](_0x4c38('0x1e'),upload[_0x4c38('0x1f')]('file'),controller[_0x4c38('0x20')]);router[_0x4c38('0x15')](_0x4c38('0x10'),auth[_0x4c38('0xd')](),controller[_0x4c38('0x21')]);router[_0x4c38('0x15')](_0x4c38('0x22'),auth[_0x4c38('0xb')](),interaction[_0x4c38('0x23')](_0x4c38('0x24'),'chatinteraction:addtags'),controller['addTags']);router[_0x4c38('0x25')]('/:id',auth[_0x4c38('0xb')](),interaction[_0x4c38('0x23')](_0x4c38('0x24'),'chatinteraction:update'),controller['update']);router['put'](_0x4c38('0x26'),controller[_0x4c38('0x27')]);router[_0x4c38('0x25')]('/:id/abandon',auth[_0x4c38('0xd')](),controller[_0x4c38('0x28')]);router[_0x4c38('0x25')](_0x4c38('0x29'),controller[_0x4c38('0x2a')]);router[_0x4c38('0x2b')](_0x4c38('0x2c'),auth[_0x4c38('0xb')](),interaction[_0x4c38('0x23')](_0x4c38('0x24'),_0x4c38('0x2d')),controller[_0x4c38('0x2e')]);router[_0x4c38('0x2b')](_0x4c38('0x22'),auth[_0x4c38('0xb')](),controller['removeTags']);module[_0x4c38('0x2f')]=router;
\ No newline at end of file
+var _0xba5f=['create','/:id/vidaoo','isAuthenticated','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','now','originalname','replace','/:id/attachment_upload','attachmentUpload','addMessage','/:id/tags','tracked','chat','addTags','chatinteraction:update','update','put','customUpdate','abandon','/:id/close','close','destroy','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatInteraction.controller','get','index','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','/:id/messages','getMessages','/:id/download','post'];(function(_0x3a83f5,_0x42d7a0){var _0xd7bfb2=function(_0x369a18){while(--_0x369a18){_0x3a83f5['push'](_0x3a83f5['shift']());}};_0xd7bfb2(++_0x42d7a0);}(_0xba5f,0xb6));var _0xfba5=function(_0x3b4241,_0x39bd83){_0x3b4241=_0x3b4241-0x0;var _0x295cee=_0xba5f[_0x3b4241];return _0x295cee;};'use strict';var multer=require(_0xfba5('0x0'));var util=require(_0xfba5('0x1'));var path=require(_0xfba5('0x2'));var timeout=require(_0xfba5('0x3'));var express=require(_0xfba5('0x4'));var router=express[_0xfba5('0x5')]();var fs_extra=require(_0xfba5('0x6'));var auth=require(_0xfba5('0x7'));var interaction=require(_0xfba5('0x8'));var config=require('../../config/environment');var controller=require(_0xfba5('0x9'));router[_0xfba5('0xa')]('/',auth['isAuthenticated'](),controller[_0xfba5('0xb')]);router[_0xfba5('0xa')](_0xfba5('0xc'),auth['isAuthenticated'](),controller[_0xfba5('0xd')]);router[_0xfba5('0xa')](_0xfba5('0xe'),auth[_0xfba5('0xf')](),controller[_0xfba5('0x10')]);router[_0xfba5('0xa')](_0xfba5('0x11'),auth[_0xfba5('0xf')](),controller['attachmentDownload']);router[_0xfba5('0xa')](_0xfba5('0x12'),auth['isAuthenticated'](),controller[_0xfba5('0x13')]);router[_0xfba5('0xa')]('/:id/my_messages',auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0xfba5('0xa')](_0xfba5('0x14'),auth['isAuthenticated'](),controller['download']);router[_0xfba5('0x15')]('/',auth['isAuthenticated'](),controller[_0xfba5('0x16')]);router[_0xfba5('0x15')](_0xfba5('0x17'),auth[_0xfba5('0x18')](),controller[_0xfba5('0x19')]);var upload=multer({'storage':multer[_0xfba5('0x1a')]({'destination':function(_0x563cab,_0x3581c1,_0x2b67d2){_0x2b67d2(null,path[_0xfba5('0x1b')](config[_0xfba5('0x1c')],_0xfba5('0x1d')));},'filename':function(_0x5787a7,_0x46512f,_0x222328){_0x222328(null,util[_0xfba5('0x1e')]('%s-%s',Date[_0xfba5('0x1f')](),_0x46512f[_0xfba5('0x20')][_0xfba5('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xfba5('0x15')](_0xfba5('0x22'),upload['single']('file'),controller[_0xfba5('0x23')]);router[_0xfba5('0x15')](_0xfba5('0x12'),auth[_0xfba5('0xf')](),controller[_0xfba5('0x24')]);router[_0xfba5('0x15')](_0xfba5('0x25'),auth[_0xfba5('0x18')](),interaction[_0xfba5('0x26')](_0xfba5('0x27'),'chatinteraction:addtags'),controller[_0xfba5('0x28')]);router['put'](_0xfba5('0xe'),auth['isAuthenticated'](),interaction[_0xfba5('0x26')](_0xfba5('0x27'),_0xfba5('0x29')),controller[_0xfba5('0x2a')]);router[_0xfba5('0x2b')]('/:id/custom_update',controller[_0xfba5('0x2c')]);router[_0xfba5('0x2b')]('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0xfba5('0x2d')]);router[_0xfba5('0x2b')](_0xfba5('0x2e'),controller[_0xfba5('0x2f')]);router['delete']('/:id',auth[_0xfba5('0x18')](),interaction[_0xfba5('0x26')](_0xfba5('0x27'),'chatinteraction:destroy'),controller[_0xfba5('0x30')]);router[_0xfba5('0x31')](_0xfba5('0x25'),auth[_0xfba5('0x18')](),controller['removeTags']);module[_0xfba5('0x32')]=router;
\ No newline at end of file
index 46857d7..07b35e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb95=['BOOLEAN','INTEGER','sequelize','exports','TEXT'];(function(_0x97d60a,_0x2011d1){var _0x4d9d3f=function(_0xe88d83){while(--_0xe88d83){_0x97d60a['push'](_0x97d60a['shift']());}};_0x4d9d3f(++_0x2011d1);}(_0xfb95,0xca));var _0x5fb9=function(_0x5be0a1,_0x49ee54){_0x5be0a1=_0x5be0a1-0x0;var _0x1e3f13=_0xfb95[_0x5be0a1];return _0x1e3f13;};'use strict';var Sequelize=require(_0x5fb9('0x0'));module[_0x5fb9('0x1')]={'body':{'type':Sequelize[_0x5fb9('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x5fb9('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x5fb9('0x4')]}};
\ No newline at end of file
+var _0xef70=['sequelize','exports','TEXT','medium','INTEGER'];(function(_0x5ed80b,_0x7b0d15){var _0x480755=function(_0x2d299d){while(--_0x2d299d){_0x5ed80b['push'](_0x5ed80b['shift']());}};_0x480755(++_0x7b0d15);}(_0xef70,0x16d));var _0x0ef7=function(_0x4cb272,_0x52c0e9){_0x4cb272=_0x4cb272-0x0;var _0x57b4aa=_0xef70[_0x4cb272];return _0x57b4aa;};'use strict';var Sequelize=require(_0x0ef7('0x0'));module[_0x0ef7('0x1')]={'body':{'type':Sequelize[_0x0ef7('0x2')](_0x0ef7('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x0ef7('0x4')]}};
\ No newline at end of file
index cbf05eb..5ad45c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce7=['sort','where','filters','filter','options','ChatInternalMessage','includeAll','include','findAll','catch','show','params','fields','create','body','find','destroy','describe','get','messages','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','User','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','agent','resourceId','push','ToId','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','undefined','offset','count','limit','set','apply','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x8ce7,0x10b));var _0x78ce=function(_0x279229,_0x1d69d9){_0x279229=_0x279229-0x0;var _0x195ca7=_0x8ce7[_0x279229];return _0x195ca7;};'use strict';var emlformat=require(_0x78ce('0x0'));var rimraf=require(_0x78ce('0x1'));var zipdir=require(_0x78ce('0x2'));var jsonpatch=require(_0x78ce('0x3'));var rp=require(_0x78ce('0x4'));var moment=require(_0x78ce('0x5'));var BPromise=require(_0x78ce('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x78ce('0x7'));var sox=require(_0x78ce('0x8'));var csv=require(_0x78ce('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x78ce('0xa'));var _=require(_0x78ce('0xb'));var squel=require(_0x78ce('0xc'));var crypto=require(_0x78ce('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x78ce('0xe'));var toCsv=require(_0x78ce('0x9'));var querystring=require('querystring');var Papa=require(_0x78ce('0xf'));var Redis=require(_0x78ce('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x78ce('0x11'));var hardwareService=require(_0x78ce('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x78ce('0x13'));var config=require(_0x78ce('0x14'));var licenseUtil=require(_0x78ce('0x15'));var db=require(_0x78ce('0x16'))['db'];config['redis']=_[_0x78ce('0x17')](config[_0x78ce('0x18')],{'host':_0x78ce('0x19'),'port':0x18eb});var socket=require(_0x78ce('0x1a'))(new Redis(config['redis']));require(_0x78ce('0x1b'))[_0x78ce('0x1c')](socket);function respondWithStatusCode(_0x2a5441,_0x842d2b){_0x842d2b=_0x842d2b||0xcc;return function(_0x1408a9){if(_0x1408a9){return _0x2a5441[_0x78ce('0x1d')](_0x842d2b);}return _0x2a5441[_0x78ce('0x1e')](_0x842d2b)[_0x78ce('0x1f')]();};}function respondWithResult(_0x2f33a5,_0x4b57b7){_0x4b57b7=_0x4b57b7||0xc8;return function(_0x44e26f){if(_0x44e26f){return _0x2f33a5[_0x78ce('0x1e')](_0x4b57b7)[_0x78ce('0x20')](_0x44e26f);}};}function respondWithFilteredResult(_0x528967,_0x2027b1){return function(_0x4e3edf){if(_0x4e3edf){var _0x19921d=typeof _0x2027b1['offset']===_0x78ce('0x21')&&typeof _0x2027b1['limit']===_0x78ce('0x21');var _0x54aa0a=_0x4e3edf['count'];var _0x132bd3=_0x19921d?0x0:_0x2027b1[_0x78ce('0x22')];var _0x407bac=_0x19921d?_0x4e3edf[_0x78ce('0x23')]:_0x2027b1[_0x78ce('0x22')]+_0x2027b1[_0x78ce('0x24')];var _0x699599;if(_0x407bac>=_0x54aa0a){_0x407bac=_0x54aa0a;_0x699599=0xc8;}else{_0x699599=0xce;}_0x528967['status'](_0x699599);return _0x528967[_0x78ce('0x25')]('Content-Range',_0x132bd3+'-'+_0x407bac+'/'+_0x54aa0a)[_0x78ce('0x20')](_0x4e3edf);}return null;};}function patchUpdates(_0x477478){return function(_0x2c097e){try{jsonpatch[_0x78ce('0x26')](_0x2c097e,_0x477478,!![]);}catch(_0x285c57){return BPromise[_0x78ce('0x27')](_0x285c57);}return _0x2c097e['save']();};}function saveUpdates(_0x210b2e,_0x55823f){return function(_0x4ef55d){if(_0x4ef55d){return _0x4ef55d[_0x78ce('0x28')](_0x210b2e)[_0x78ce('0x29')](function(_0x86b2a3){return _0x86b2a3;});}return null;};}function removeEntity(_0x5f1117,_0x285a84){return function(_0x46de5b){if(_0x46de5b){return _0x46de5b['destroy']()[_0x78ce('0x29')](function(){_0x5f1117['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2049da,_0x202174){return function(_0x3ec143){if(!_0x3ec143){_0x2049da['sendStatus'](0x194);}return _0x3ec143;};}function handleError(_0x3a80ab,_0x40b9a0){_0x40b9a0=_0x40b9a0||0x1f4;return function(_0x2ef0b8){logger[_0x78ce('0x2a')](_0x2ef0b8[_0x78ce('0x2b')]);if(_0x2ef0b8[_0x78ce('0x2c')]){delete _0x2ef0b8[_0x78ce('0x2c')];}_0x3a80ab[_0x78ce('0x1e')](_0x40b9a0)[_0x78ce('0x2d')](_0x2ef0b8);};}exports[_0x78ce('0x2e')]=function(_0x517282,_0x4d877f){var _0x2a4687={},_0x25d929={},_0x5831b3={'count':0x0,'rows':[]};var _0x1e0069=_[_0x78ce('0x2f')](db['ChatInternalMessage'][_0x78ce('0x30')],function(_0x18f45e){return{'name':_0x18f45e[_0x78ce('0x31')],'type':_0x18f45e[_0x78ce('0x32')]['key']};});_0x25d929[_0x78ce('0x33')]=_[_0x78ce('0x2f')](_0x1e0069,_0x78ce('0x2c'));_0x25d929[_0x78ce('0x34')]=_[_0x78ce('0x35')](_0x517282[_0x78ce('0x34')]);_0x25d929['filters']=_['intersection'](_0x25d929[_0x78ce('0x33')],_0x25d929[_0x78ce('0x34')]);_0x2a4687['attributes']=_[_0x78ce('0x36')](_0x25d929['model'],qs['fields'](_0x517282[_0x78ce('0x34')]['fields']));_0x2a4687[_0x78ce('0x37')]=_0x2a4687[_0x78ce('0x37')][_0x78ce('0x38')]?_0x2a4687['attributes']:_0x25d929[_0x78ce('0x33')];if(!_0x517282[_0x78ce('0x34')][_0x78ce('0x39')](_0x78ce('0x3a'))){_0x2a4687['limit']=qs[_0x78ce('0x24')](_0x517282[_0x78ce('0x34')][_0x78ce('0x24')]);_0x2a4687['offset']=qs[_0x78ce('0x22')](_0x517282[_0x78ce('0x34')][_0x78ce('0x22')]);}_0x2a4687[_0x78ce('0x3b')]=qs[_0x78ce('0x3c')](_0x517282[_0x78ce('0x34')]['sort']);_0x2a4687[_0x78ce('0x3d')]=qs['filters'](_['pick'](_0x517282[_0x78ce('0x34')],_0x25d929[_0x78ce('0x3e')]),_0x1e0069);if(_0x517282[_0x78ce('0x34')][_0x78ce('0x3f')]){_0x2a4687['where']=_['merge'](_0x2a4687[_0x78ce('0x3d')],{'$or':_['map'](_0x1e0069,function(_0x4a6298){if(_0x4a6298[_0x78ce('0x32')]!=='VIRTUAL'){var _0x1059bb={};_0x1059bb[_0x4a6298[_0x78ce('0x2c')]]={'$like':'%'+_0x517282[_0x78ce('0x34')][_0x78ce('0x3f')]+'%'};return _0x1059bb;}})});}_0x2a4687=_['merge']({},_0x2a4687,_0x517282[_0x78ce('0x40')]);var _0x4def2d={'where':_0x2a4687[_0x78ce('0x3d')]};return db[_0x78ce('0x41')]['count'](_0x4def2d)['then'](function(_0x531143){_0x5831b3['count']=_0x531143;if(_0x517282[_0x78ce('0x34')][_0x78ce('0x42')]){_0x2a4687[_0x78ce('0x43')]=[{'all':!![]}];}return db[_0x78ce('0x41')][_0x78ce('0x44')](_0x2a4687);})[_0x78ce('0x29')](function(_0x472c59){_0x5831b3['rows']=_0x472c59;return _0x5831b3;})[_0x78ce('0x29')](respondWithFilteredResult(_0x4d877f,_0x2a4687))[_0x78ce('0x45')](handleError(_0x4d877f,null));};exports[_0x78ce('0x46')]=function(_0x1118fa,_0x30f6d7){var _0x3dbd6b={'raw':!![],'where':{'id':_0x1118fa[_0x78ce('0x47')]['id']}},_0x19648b={};_0x19648b[_0x78ce('0x33')]=_[_0x78ce('0x35')](db[_0x78ce('0x41')][_0x78ce('0x30')]);_0x19648b[_0x78ce('0x34')]=_[_0x78ce('0x35')](_0x1118fa[_0x78ce('0x34')]);_0x19648b['filters']=_[_0x78ce('0x36')](_0x19648b[_0x78ce('0x33')],_0x19648b['query']);_0x3dbd6b['attributes']=_[_0x78ce('0x36')](_0x19648b[_0x78ce('0x33')],qs[_0x78ce('0x48')](_0x1118fa['query'][_0x78ce('0x48')]));_0x3dbd6b[_0x78ce('0x37')]=_0x3dbd6b[_0x78ce('0x37')]['length']?_0x3dbd6b[_0x78ce('0x37')]:_0x19648b[_0x78ce('0x33')];if(_0x1118fa[_0x78ce('0x34')][_0x78ce('0x42')]){_0x3dbd6b[_0x78ce('0x43')]=[{'all':!![]}];}_0x3dbd6b=_['merge']({},_0x3dbd6b,_0x1118fa[_0x78ce('0x40')]);return db[_0x78ce('0x41')]['find'](_0x3dbd6b)[_0x78ce('0x29')](handleEntityNotFound(_0x30f6d7,null))['then'](respondWithResult(_0x30f6d7,null))[_0x78ce('0x45')](handleError(_0x30f6d7,null));};exports['create']=function(_0x3ccaaf,_0x47f6aa){return db['ChatInternalMessage'][_0x78ce('0x49')](_0x3ccaaf['body'],{})[_0x78ce('0x29')](respondWithResult(_0x47f6aa,0xc9))[_0x78ce('0x45')](handleError(_0x47f6aa,null));};exports['update']=function(_0x58f4f9,_0x58efa7){if(_0x58f4f9[_0x78ce('0x4a')]['id']){delete _0x58f4f9[_0x78ce('0x4a')]['id'];}return db['ChatInternalMessage'][_0x78ce('0x4b')]({'where':{'id':_0x58f4f9[_0x78ce('0x47')]['id']}})[_0x78ce('0x29')](handleEntityNotFound(_0x58efa7,null))[_0x78ce('0x29')](saveUpdates(_0x58f4f9[_0x78ce('0x4a')],null))[_0x78ce('0x29')](respondWithResult(_0x58efa7,null))[_0x78ce('0x45')](handleError(_0x58efa7,null));};exports[_0x78ce('0x4c')]=function(_0x1d5b5a,_0x4ee328){return db['ChatInternalMessage']['find']({'where':{'id':_0x1d5b5a['params']['id']}})[_0x78ce('0x29')](handleEntityNotFound(_0x4ee328,null))[_0x78ce('0x29')](removeEntity(_0x4ee328,null))[_0x78ce('0x45')](handleError(_0x4ee328,null));};exports['describe']=function(_0x1137ae,_0xfebc56){return db['ChatInternalMessage'][_0x78ce('0x4d')]()[_0x78ce('0x29')](respondWithResult(_0xfebc56,null))['catch'](handleError(_0xfebc56,null));};function wrapUser(_0x3ec0ce){return function(_0x170fde){var _0x2cee47=_0x3ec0ce[_0x78ce('0x4e')]({'plain':!![]});_0x2cee47[_0x78ce('0x4f')]=[];if(_0x170fde){_0x2cee47['lastMessageAt']=_0x170fde[_0x78ce('0x50')];_0x2cee47[_0x78ce('0x51')]=_0x170fde;}else{_0x2cee47[_0x78ce('0x52')]=moment(0x0)[_0x78ce('0x53')](_0x78ce('0x54'));_0x2cee47[_0x78ce('0x51')]={};}return _0x2cee47;};}exports['getUsers']=function(_0x2a5b43,_0x4b013d,_0x15e433){var _0xf2f308=[];return db[_0x78ce('0x55')][_0x78ce('0x44')]({'where':{'role':['agent',_0x78ce('0x56'),_0x78ce('0x57')]},'attributes':['id',_0x78ce('0x58'),_0x78ce('0x2c'),_0x78ce('0x59'),_0x78ce('0x5a'),_0x78ce('0x5b'),_0x78ce('0x5c'),_0x78ce('0x5d'),_0x78ce('0x5e'),_0x78ce('0x5f')],'order':qs[_0x78ce('0x3c')](_0x78ce('0x60')),'include':[{'model':db['VoiceQueue'],'as':_0x78ce('0x61'),'attributes':['id',_0x78ce('0x2c'),_0x78ce('0x32')],'through':{'attributes':[]}}]})[_0x78ce('0x29')](function(_0x2c3738){if(_0x2c3738){var _0x320048=_0x2a5b43[_0x78ce('0x57')][_0x78ce('0x4e')]({'plain':!![]});if(!_0x320048)throw new Error(_0x78ce('0x62'));if(_0x320048[_0x78ce('0x59')]==='user'){return db[_0x78ce('0x63')][_0x78ce('0x4b')]({'where':{'name':_0x78ce('0x64'),'userProfileId':_0x320048[_0x78ce('0x65')]},'raw':!![]})['then'](function(_0x51b22c){if(_0x51b22c){if(_0x51b22c[_0x78ce('0x66')]===0x0){return db['UserProfileResource'][_0x78ce('0x44')]({'where':{'sectionId':_0x51b22c['id']},'raw':!![]})[_0x78ce('0x29')](function(_0x1f009c){var _0x1d9922=[];if(_['isEmpty'](_0x1f009c)){_0x1d9922=_['filter'](_0x2c3738,function(_0x3077e1){if(_0x3077e1[_0x78ce('0x59')]!=='agent'){return _0x3077e1;}});return _0x1d9922;}else{for(var _0x581604=0x0;_0x581604<_0x2c3738[_0x78ce('0x38')];_0x581604++){var _0x39c25a=_0x2c3738[_0x581604];if(_0x39c25a[_0x78ce('0x59')]===_0x78ce('0x67')){var _0x1cd766=_[_0x78ce('0x4b')](_0x1f009c,function(_0x36f5d4){return _0x36f5d4[_0x78ce('0x68')]===_0x39c25a['id'];});if(_0x1cd766)_0x1d9922['push'](_0x39c25a);}else{_0x1d9922[_0x78ce('0x69')](_0x39c25a);}}return _0x1d9922;}});}else{return _0x2c3738;}}else{var _0x1e916b=_[_0x78ce('0x3f')](_0x2c3738,function(_0x1c5ece){if(_0x1c5ece[_0x78ce('0x59')]!==_0x78ce('0x67')){return _0x1c5ece;}});return _0x1e916b;}});}else{return _0x2c3738;}}})['then'](function(_0x1d118b){var _0x460ab6=[];if(_0x1d118b){_0xf2f308=_0x1d118b;for(var _0x16525e=0x0;_0x16525e<_0x1d118b[_0x78ce('0x38')];_0x16525e+=0x1){_0xf2f308[_0x16525e][_0x78ce('0x4f')]=[];_0x460ab6['push'](db[_0x78ce('0x41')][_0x78ce('0x4b')]({'where':{'FromId':[_0x2a5b43[_0x78ce('0x57')]['id'],_0x1d118b[_0x16525e]['id']],'ToId':[_0x2a5b43[_0x78ce('0x57')]['id'],_0x1d118b[_0x16525e]['id']],'ChatGroupId':null},'attributes':['id',_0x78ce('0x50'),'FromId',_0x78ce('0x6a'),'read',_0x78ce('0x4a')],'order':qs['sort'](_0x78ce('0x6b')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x78ce('0x29')](wrapUser(_0x1d118b[_0x16525e])));}return BPromise[_0x78ce('0x6c')](_0x460ab6);}return[];})[_0x78ce('0x29')](function(_0x4d4e8a){return{'rows':_0x4d4e8a,'count':_0x4d4e8a['length']};})['then'](respondWithResult(_0x4b013d,null))['catch'](handleError(_0x4b013d,null));};
\ No newline at end of file
+var _0x5bc2=['get','lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','admin','user','fullname','role','userpic','online','lastLoginAt','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','messages','read','-createdAt','all','eml-format','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','status','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','end','sendStatus','error','name','send','index','map','ChatInternalMessage','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','params','length','find','body','describe'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x5bc2,0x87));var _0x25bc=function(_0x5235dd,_0x3f91cf){_0x5235dd=_0x5235dd-0x0;var _0x13059d=_0x5bc2[_0x5235dd];return _0x13059d;};'use strict';var emlformat=require(_0x25bc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x25bc('0x1'));var rp=require(_0x25bc('0x2'));var moment=require(_0x25bc('0x3'));var BPromise=require(_0x25bc('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x25bc('0x5'));var sox=require(_0x25bc('0x6'));var csv=require('to-csv');var ejs=require(_0x25bc('0x7'));var fs=require('fs');var fs_extra=require(_0x25bc('0x8'));var _=require(_0x25bc('0x9'));var squel=require('squel');var crypto=require(_0x25bc('0xa'));var jsforce=require(_0x25bc('0xb'));var deskjs=require(_0x25bc('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x25bc('0xd'));var Redis=require(_0x25bc('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x25bc('0xf'));var as=require(_0x25bc('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x25bc('0x11'))('api');var utils=require(_0x25bc('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x25bc('0x13'));var db=require(_0x25bc('0x14'))['db'];config[_0x25bc('0x15')]=_[_0x25bc('0x16')](config[_0x25bc('0x15')],{'host':_0x25bc('0x17'),'port':0x18eb});var socket=require(_0x25bc('0x18'))(new Redis(config[_0x25bc('0x15')]));require(_0x25bc('0x19'))[_0x25bc('0x1a')](socket);function respondWithStatusCode(_0xcd2398,_0x28031d){_0x28031d=_0x28031d||0xcc;return function(_0x2edb98){if(_0x2edb98){return _0xcd2398['sendStatus'](_0x28031d);}return _0xcd2398[_0x25bc('0x1b')](_0x28031d)['end']();};}function respondWithResult(_0x2f74ef,_0x3e8996){_0x3e8996=_0x3e8996||0xc8;return function(_0x191830){if(_0x191830){return _0x2f74ef[_0x25bc('0x1b')](_0x3e8996)[_0x25bc('0x1c')](_0x191830);}};}function respondWithFilteredResult(_0x1d4470,_0x500c35){return function(_0x3d35b9){if(_0x3d35b9){var _0xa15e1f=typeof _0x500c35['offset']===_0x25bc('0x1d')&&typeof _0x500c35[_0x25bc('0x1e')]===_0x25bc('0x1d');var _0x5d47d7=_0x3d35b9[_0x25bc('0x1f')];var _0x39e8e5=_0xa15e1f?0x0:_0x500c35[_0x25bc('0x20')];var _0xa096b3=_0xa15e1f?_0x3d35b9[_0x25bc('0x1f')]:_0x500c35[_0x25bc('0x20')]+_0x500c35[_0x25bc('0x1e')];var _0x5875c7;if(_0xa096b3>=_0x5d47d7){_0xa096b3=_0x5d47d7;_0x5875c7=0xc8;}else{_0x5875c7=0xce;}_0x1d4470[_0x25bc('0x1b')](_0x5875c7);return _0x1d4470['set'](_0x25bc('0x21'),_0x39e8e5+'-'+_0xa096b3+'/'+_0x5d47d7)[_0x25bc('0x1c')](_0x3d35b9);}return null;};}function patchUpdates(_0x57db38){return function(_0x2c1dc3){try{jsonpatch[_0x25bc('0x22')](_0x2c1dc3,_0x57db38,!![]);}catch(_0x497bed){return BPromise[_0x25bc('0x23')](_0x497bed);}return _0x2c1dc3['save']();};}function saveUpdates(_0x415653,_0x1231c7){return function(_0x2810c4){if(_0x2810c4){return _0x2810c4[_0x25bc('0x24')](_0x415653)['then'](function(_0x54570d){return _0x54570d;});}return null;};}function removeEntity(_0x1aefc5,_0x46cff4){return function(_0x5b2bc6){if(_0x5b2bc6){return _0x5b2bc6['destroy']()[_0x25bc('0x25')](function(){_0x1aefc5['status'](0xcc)[_0x25bc('0x26')]();});}};}function handleEntityNotFound(_0x18d196,_0x49aea1){return function(_0x15b3bd){if(!_0x15b3bd){_0x18d196[_0x25bc('0x27')](0x194);}return _0x15b3bd;};}function handleError(_0x186e7f,_0x4644f9){_0x4644f9=_0x4644f9||0x1f4;return function(_0x47aaf9){logger[_0x25bc('0x28')](_0x47aaf9['stack']);if(_0x47aaf9[_0x25bc('0x29')]){delete _0x47aaf9[_0x25bc('0x29')];}_0x186e7f['status'](_0x4644f9)[_0x25bc('0x2a')](_0x47aaf9);};}exports[_0x25bc('0x2b')]=function(_0x336f37,_0x154d5d){var _0x1e7dc8={},_0x4f4e43={},_0x109430={'count':0x0,'rows':[]};var _0x4a256d=_[_0x25bc('0x2c')](db[_0x25bc('0x2d')][_0x25bc('0x2e')],function(_0x16b426){return{'name':_0x16b426['fieldName'],'type':_0x16b426[_0x25bc('0x2f')][_0x25bc('0x30')]};});_0x4f4e43['model']=_[_0x25bc('0x2c')](_0x4a256d,_0x25bc('0x29'));_0x4f4e43[_0x25bc('0x31')]=_[_0x25bc('0x32')](_0x336f37[_0x25bc('0x31')]);_0x4f4e43[_0x25bc('0x33')]=_[_0x25bc('0x34')](_0x4f4e43[_0x25bc('0x35')],_0x4f4e43[_0x25bc('0x31')]);_0x1e7dc8[_0x25bc('0x36')]=_[_0x25bc('0x34')](_0x4f4e43[_0x25bc('0x35')],qs[_0x25bc('0x37')](_0x336f37['query'][_0x25bc('0x37')]));_0x1e7dc8[_0x25bc('0x36')]=_0x1e7dc8[_0x25bc('0x36')]['length']?_0x1e7dc8['attributes']:_0x4f4e43[_0x25bc('0x35')];if(!_0x336f37['query'][_0x25bc('0x38')](_0x25bc('0x39'))){_0x1e7dc8[_0x25bc('0x1e')]=qs[_0x25bc('0x1e')](_0x336f37[_0x25bc('0x31')]['limit']);_0x1e7dc8[_0x25bc('0x20')]=qs['offset'](_0x336f37[_0x25bc('0x31')][_0x25bc('0x20')]);}_0x1e7dc8['order']=qs[_0x25bc('0x3a')](_0x336f37[_0x25bc('0x31')][_0x25bc('0x3a')]);_0x1e7dc8['where']=qs[_0x25bc('0x33')](_['pick'](_0x336f37[_0x25bc('0x31')],_0x4f4e43[_0x25bc('0x33')]),_0x4a256d);if(_0x336f37['query'][_0x25bc('0x3b')]){_0x1e7dc8[_0x25bc('0x3c')]=_['merge'](_0x1e7dc8[_0x25bc('0x3c')],{'$or':_[_0x25bc('0x2c')](_0x4a256d,function(_0x2aa818){if(_0x2aa818[_0x25bc('0x2f')]!==_0x25bc('0x3d')){var _0xe3ccd5={};_0xe3ccd5[_0x2aa818[_0x25bc('0x29')]]={'$like':'%'+_0x336f37[_0x25bc('0x31')][_0x25bc('0x3b')]+'%'};return _0xe3ccd5;}})});}_0x1e7dc8=_[_0x25bc('0x3e')]({},_0x1e7dc8,_0x336f37[_0x25bc('0x3f')]);var _0x325cff={'where':_0x1e7dc8[_0x25bc('0x3c')]};return db[_0x25bc('0x2d')]['count'](_0x325cff)[_0x25bc('0x25')](function(_0x8520e){_0x109430['count']=_0x8520e;if(_0x336f37['query'][_0x25bc('0x40')]){_0x1e7dc8['include']=[{'all':!![]}];}return db[_0x25bc('0x2d')][_0x25bc('0x41')](_0x1e7dc8);})[_0x25bc('0x25')](function(_0x48cc79){_0x109430[_0x25bc('0x42')]=_0x48cc79;return _0x109430;})[_0x25bc('0x25')](respondWithFilteredResult(_0x154d5d,_0x1e7dc8))[_0x25bc('0x43')](handleError(_0x154d5d,null));};exports['show']=function(_0x4383e3,_0x57b04a){var _0x4aa0f3={'raw':!![],'where':{'id':_0x4383e3[_0x25bc('0x44')]['id']}},_0x367e9a={};_0x367e9a[_0x25bc('0x35')]=_['keys'](db[_0x25bc('0x2d')][_0x25bc('0x2e')]);_0x367e9a[_0x25bc('0x31')]=_[_0x25bc('0x32')](_0x4383e3[_0x25bc('0x31')]);_0x367e9a['filters']=_[_0x25bc('0x34')](_0x367e9a['model'],_0x367e9a[_0x25bc('0x31')]);_0x4aa0f3['attributes']=_[_0x25bc('0x34')](_0x367e9a[_0x25bc('0x35')],qs['fields'](_0x4383e3[_0x25bc('0x31')]['fields']));_0x4aa0f3[_0x25bc('0x36')]=_0x4aa0f3[_0x25bc('0x36')][_0x25bc('0x45')]?_0x4aa0f3[_0x25bc('0x36')]:_0x367e9a[_0x25bc('0x35')];if(_0x4383e3[_0x25bc('0x31')][_0x25bc('0x40')]){_0x4aa0f3['include']=[{'all':!![]}];}_0x4aa0f3=_[_0x25bc('0x3e')]({},_0x4aa0f3,_0x4383e3[_0x25bc('0x3f')]);return db[_0x25bc('0x2d')][_0x25bc('0x46')](_0x4aa0f3)[_0x25bc('0x25')](handleEntityNotFound(_0x57b04a,null))['then'](respondWithResult(_0x57b04a,null))[_0x25bc('0x43')](handleError(_0x57b04a,null));};exports['create']=function(_0x2ad06e,_0x3513af){return db['ChatInternalMessage']['create'](_0x2ad06e[_0x25bc('0x47')],{})[_0x25bc('0x25')](respondWithResult(_0x3513af,0xc9))['catch'](handleError(_0x3513af,null));};exports['update']=function(_0x46ad53,_0x3a56c1){if(_0x46ad53[_0x25bc('0x47')]['id']){delete _0x46ad53[_0x25bc('0x47')]['id'];}return db[_0x25bc('0x2d')][_0x25bc('0x46')]({'where':{'id':_0x46ad53[_0x25bc('0x44')]['id']}})[_0x25bc('0x25')](handleEntityNotFound(_0x3a56c1,null))[_0x25bc('0x25')](saveUpdates(_0x46ad53[_0x25bc('0x47')],null))[_0x25bc('0x25')](respondWithResult(_0x3a56c1,null))[_0x25bc('0x43')](handleError(_0x3a56c1,null));};exports['destroy']=function(_0x4b23b9,_0x1349e0){return db[_0x25bc('0x2d')]['find']({'where':{'id':_0x4b23b9[_0x25bc('0x44')]['id']}})[_0x25bc('0x25')](handleEntityNotFound(_0x1349e0,null))[_0x25bc('0x25')](removeEntity(_0x1349e0,null))[_0x25bc('0x43')](handleError(_0x1349e0,null));};exports[_0x25bc('0x48')]=function(_0x519109,_0x4a5c69){return db[_0x25bc('0x2d')]['describe']()[_0x25bc('0x25')](respondWithResult(_0x4a5c69,null))[_0x25bc('0x43')](handleError(_0x4a5c69,null));};function wrapUser(_0x4a04ca){return function(_0x223361){var _0x61b9b3=_0x4a04ca[_0x25bc('0x49')]({'plain':!![]});_0x61b9b3['messages']=[];if(_0x223361){_0x61b9b3[_0x25bc('0x4a')]=_0x223361[_0x25bc('0x4b')];_0x61b9b3['lastMessage']=_0x223361;}else{_0x61b9b3['lastMessageAt']=moment(0x0)[_0x25bc('0x4c')](_0x25bc('0x4d'));_0x61b9b3[_0x25bc('0x4e')]={};}return _0x61b9b3;};}exports[_0x25bc('0x4f')]=function(_0x1ba686,_0x3c4d11,_0x9b0e58){var _0x13f1ad=[];return db['User'][_0x25bc('0x41')]({'where':{'role':['agent',_0x25bc('0x50'),_0x25bc('0x51')]},'attributes':['id',_0x25bc('0x52'),_0x25bc('0x29'),_0x25bc('0x53'),_0x25bc('0x54'),'internal',_0x25bc('0x55'),_0x25bc('0x56'),'allowmessenger',_0x25bc('0x57')],'order':qs[_0x25bc('0x3a')](_0x25bc('0x58')),'include':[{'model':db[_0x25bc('0x59')],'as':_0x25bc('0x5a'),'attributes':['id',_0x25bc('0x29'),'type'],'through':{'attributes':[]}}]})[_0x25bc('0x25')](function(_0x55cd2e){if(_0x55cd2e){var _0x59f74f=_0x1ba686['user']['get']({'plain':!![]});if(!_0x59f74f)throw new Error(_0x25bc('0x5b'));if(_0x59f74f[_0x25bc('0x53')]==='user'){return db[_0x25bc('0x5c')]['find']({'where':{'name':'Agents','userProfileId':_0x59f74f[_0x25bc('0x5d')]},'raw':!![]})[_0x25bc('0x25')](function(_0x5eba62){if(_0x5eba62){if(_0x5eba62[_0x25bc('0x5e')]===0x0){return db[_0x25bc('0x5f')][_0x25bc('0x41')]({'where':{'sectionId':_0x5eba62['id']},'raw':!![]})['then'](function(_0x21adfa){var _0x230903=[];if(_[_0x25bc('0x60')](_0x21adfa)){_0x230903=_['filter'](_0x55cd2e,function(_0x1d46e2){if(_0x1d46e2['role']!==_0x25bc('0x61')){return _0x1d46e2;}});return _0x230903;}else{for(var _0x1a34ed=0x0;_0x1a34ed<_0x55cd2e['length'];_0x1a34ed++){var _0x2ce944=_0x55cd2e[_0x1a34ed];if(_0x2ce944[_0x25bc('0x53')]===_0x25bc('0x61')){var _0x5c1caa=_[_0x25bc('0x46')](_0x21adfa,function(_0x1121e6){return _0x1121e6[_0x25bc('0x62')]===_0x2ce944['id'];});if(_0x5c1caa)_0x230903[_0x25bc('0x63')](_0x2ce944);}else{_0x230903[_0x25bc('0x63')](_0x2ce944);}}return _0x230903;}});}else{return _0x55cd2e;}}else{var _0x1e2420=_['filter'](_0x55cd2e,function(_0x1a71b0){if(_0x1a71b0[_0x25bc('0x53')]!==_0x25bc('0x61')){return _0x1a71b0;}});return _0x1e2420;}});}else{return _0x55cd2e;}}})['then'](function(_0x328574){var _0x1b2c1a=[];if(_0x328574){_0x13f1ad=_0x328574;for(var _0x16277e=0x0;_0x16277e<_0x328574[_0x25bc('0x45')];_0x16277e+=0x1){_0x13f1ad[_0x16277e][_0x25bc('0x64')]=[];_0x1b2c1a[_0x25bc('0x63')](db[_0x25bc('0x2d')][_0x25bc('0x46')]({'where':{'FromId':[_0x1ba686['user']['id'],_0x328574[_0x16277e]['id']],'ToId':[_0x1ba686['user']['id'],_0x328574[_0x16277e]['id']],'ChatGroupId':null},'attributes':['id',_0x25bc('0x4b'),'FromId','ToId',_0x25bc('0x65'),_0x25bc('0x47')],'order':qs[_0x25bc('0x3a')](_0x25bc('0x66')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x25bc('0x25')](wrapUser(_0x328574[_0x16277e])));}return BPromise[_0x25bc('0x67')](_0x1b2c1a);}return[];})[_0x25bc('0x25')](function(_0x3ba52d){return{'rows':_0x3ba52d,'count':_0x3ba52d['length']};})[_0x25bc('0x25')](respondWithResult(_0x3c4d11,null))[_0x25bc('0x43')](handleError(_0x3c4d11,null));};
\ No newline at end of file
index 0d64a8d..f493843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc8f=['emit','hasOwnProperty','hook','events','setMaxListeners','save','remove'];(function(_0x460e05,_0x37f195){var _0x48dcd9=function(_0x29712d){while(--_0x29712d){_0x460e05['push'](_0x460e05['shift']());}};_0x48dcd9(++_0x37f195);}(_0xcc8f,0x10d));var _0xfcc8=function(_0x29fecc,_0x116c48){_0x29fecc=_0x29fecc-0x0;var _0x4fb553=_0xcc8f[_0x29fecc];return _0x4fb553;};'use strict';var EventEmitter=require(_0xfcc8('0x0'));var ChatInternalMessage=require('../../mysqldb')['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xfcc8('0x1')](0x0);var events={'afterCreate':_0xfcc8('0x2'),'afterUpdate':'update','afterDestroy':_0xfcc8('0x3')};function emitEvent(_0x37ab76){return function(_0x32f523,_0x383641,_0x530abd){ChatInternalMessageEvents[_0xfcc8('0x4')](_0x37ab76+':'+_0x32f523['id'],_0x32f523);ChatInternalMessageEvents[_0xfcc8('0x4')](_0x37ab76,_0x32f523);_0x530abd(null);};}for(var e in events){if(events[_0xfcc8('0x5')](e)){var event=events[e];ChatInternalMessage[_0xfcc8('0x6')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x4b97=['emit','hasOwnProperty','exports','events','ChatInternalMessage','save','update','remove'];(function(_0x32ab3b,_0x19dfa9){var _0x392628=function(_0x5395d1){while(--_0x5395d1){_0x32ab3b['push'](_0x32ab3b['shift']());}};_0x392628(++_0x19dfa9);}(_0x4b97,0x1db));var _0x74b9=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x4b97[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0x74b9('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x74b9('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x74b9('0x2'),'afterUpdate':_0x74b9('0x3'),'afterDestroy':_0x74b9('0x4')};function emitEvent(_0x27166e){return function(_0x1140d4,_0x5de6e1,_0x5a3811){ChatInternalMessageEvents[_0x74b9('0x5')](_0x27166e+':'+_0x1140d4['id'],_0x1140d4);ChatInternalMessageEvents[_0x74b9('0x5')](_0x27166e,_0x1140d4);_0x5a3811(null);};}for(var e in events){if(events[_0x74b9('0x6')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x74b9('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index 378af58..726d7f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7296=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','rimraf','../../config/environment','./chatInternalMessage.attributes','define'];(function(_0x5c4139,_0x12479e){var _0x5df4b6=function(_0xb532ce){while(--_0xb532ce){_0x5c4139['push'](_0x5c4139['shift']());}};_0x5df4b6(++_0x12479e);}(_0x7296,0x14c));var _0x6729=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7296[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x6729('0x0'));var util=require('util');var logger=require(_0x6729('0x1'))('api');var moment=require(_0x6729('0x2'));var BPromise=require(_0x6729('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6729('0x4'));var config=require(_0x6729('0x5'));var attributes=require(_0x6729('0x6'));module['exports']=function(_0x92fb62,_0xc99712){return _0x92fb62[_0x6729('0x7')]('ChatInternalMessage',attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6729('0x8'),'collate':_0x6729('0x9')});};
\ No newline at end of file
+var _0x9ebf=['./chatInternalMessage.attributes','exports','define','chat_internal_messages','utf8mb4','util','moment','rimraf','../../config/environment'];(function(_0x469383,_0x3b77ed){var _0xe46d0f=function(_0x5268fa){while(--_0x5268fa){_0x469383['push'](_0x469383['shift']());}};_0xe46d0f(++_0x3b77ed);}(_0x9ebf,0x8c));var _0xf9eb=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x9ebf[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0xf9eb('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf9eb('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf9eb('0x2'));var config=require(_0xf9eb('0x3'));var attributes=require(_0xf9eb('0x4'));module[_0xf9eb('0x5')]=function(_0x1db1a7,_0x40b0b1){return _0x1db1a7[_0xf9eb('0x6')]('ChatInternalMessage',attributes,{'tableName':_0xf9eb('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf9eb('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index dcbef79..715a0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ad=['register','info','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket'];(function(_0x2921d5,_0x1e8ba3){var _0x14a0e5=function(_0x1771c2){while(--_0x1771c2){_0x2921d5['push'](_0x2921d5['shift']());}};_0x14a0e5(++_0x1e8ba3);}(_0x15ad,0x19b));var _0xd15a=function(_0x2cce6e,_0x59033c){_0x2cce6e=_0x2cce6e-0x0;var _0x497229=_0x15ad[_0x2cce6e];return _0x497229;};'use strict';var _=require(_0xd15a('0x0'));var util=require(_0xd15a('0x1'));var moment=require(_0xd15a('0x2'));var BPromise=require(_0xd15a('0x3'));var rs=require(_0xd15a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd15a('0x5'))['db'];var utils=require(_0xd15a('0x6'));var logger=require(_0xd15a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd15a('0x8')]['http']({'port':0x232a});config[_0xd15a('0x9')]=_[_0xd15a('0xa')](config['redis'],{'host':_0xd15a('0xb'),'port':0x18eb});var socket=require(_0xd15a('0xc'))(new Redis(config[_0xd15a('0x9')]));require(_0xd15a('0xd'))[_0xd15a('0xe')](socket);function respondWithRpcPromise(_0x5a39a6,_0x1e2508,_0x1372d4){return new BPromise(function(_0x5e752f,_0x36aabc){return client['request'](_0x5a39a6,_0x1372d4)['then'](function(_0x23cd3c){logger[_0xd15a('0xf')]('ChatInternalMessage,\x20%s,\x20%s',_0x1e2508,_0xd15a('0x10'));logger[_0xd15a('0x11')](_0xd15a('0x12'),_0x1e2508,'request\x20sent',JSON[_0xd15a('0x13')](_0x23cd3c));if(_0x23cd3c['error']){if(_0x23cd3c[_0xd15a('0x14')][_0xd15a('0x15')]===0x1f4){logger[_0xd15a('0x14')](_0xd15a('0x16'),_0x1e2508,_0x23cd3c['error'][_0xd15a('0x17')]);return _0x36aabc(_0x23cd3c[_0xd15a('0x14')][_0xd15a('0x17')]);}logger[_0xd15a('0x14')](_0xd15a('0x16'),_0x1e2508,_0x23cd3c[_0xd15a('0x14')][_0xd15a('0x17')]);return _0x5e752f(_0x23cd3c['error']['message']);}else{logger[_0xd15a('0xf')](_0xd15a('0x16'),_0x1e2508,_0xd15a('0x10'));_0x5e752f(_0x23cd3c['result']['message']);}})[_0xd15a('0x18')](function(_0x1f4aca){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x1e2508,_0x1f4aca);_0x36aabc(_0x1f4aca);});});}
\ No newline at end of file
+var _0xeb1a=['localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis'];(function(_0x4d2d5b,_0x4d6cd5){var _0x27505f=function(_0x3375da){while(--_0x3375da){_0x4d2d5b['push'](_0x4d2d5b['shift']());}};_0x27505f(++_0x4d6cd5);}(_0xeb1a,0x102));var _0xaeb1=function(_0x1d432d,_0x401149){_0x1d432d=_0x1d432d-0x0;var _0x338acb=_0xeb1a[_0x1d432d];return _0x338acb;};'use strict';var _=require(_0xaeb1('0x0'));var util=require(_0xaeb1('0x1'));var moment=require(_0xaeb1('0x2'));var BPromise=require(_0xaeb1('0x3'));var rs=require(_0xaeb1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaeb1('0x5'));var logger=require(_0xaeb1('0x6'))(_0xaeb1('0x7'));var config=require(_0xaeb1('0x8'));var jayson=require(_0xaeb1('0x9'));var client=jayson['client'][_0xaeb1('0xa')]({'port':0x232a});config[_0xaeb1('0xb')]=_['defaults'](config[_0xaeb1('0xb')],{'host':_0xaeb1('0xc'),'port':0x18eb});var socket=require(_0xaeb1('0xd'))(new Redis(config[_0xaeb1('0xb')]));require(_0xaeb1('0xe'))[_0xaeb1('0xf')](socket);function respondWithRpcPromise(_0x105fba,_0xcfec5b,_0x464541){return new BPromise(function(_0x5d1023,_0x435407){return client[_0xaeb1('0x10')](_0x105fba,_0x464541)[_0xaeb1('0x11')](function(_0x2651c1){logger[_0xaeb1('0x12')](_0xaeb1('0x13'),_0xcfec5b,'request\x20sent');logger[_0xaeb1('0x14')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0xcfec5b,_0xaeb1('0x15'),JSON[_0xaeb1('0x16')](_0x2651c1));if(_0x2651c1[_0xaeb1('0x17')]){if(_0x2651c1[_0xaeb1('0x17')]['code']===0x1f4){logger[_0xaeb1('0x17')](_0xaeb1('0x13'),_0xcfec5b,_0x2651c1[_0xaeb1('0x17')][_0xaeb1('0x18')]);return _0x435407(_0x2651c1[_0xaeb1('0x17')][_0xaeb1('0x18')]);}logger[_0xaeb1('0x17')](_0xaeb1('0x13'),_0xcfec5b,_0x2651c1['error'][_0xaeb1('0x18')]);return _0x5d1023(_0x2651c1['error'][_0xaeb1('0x18')]);}else{logger[_0xaeb1('0x12')]('ChatInternalMessage,\x20%s,\x20%s',_0xcfec5b,_0xaeb1('0x15'));_0x5d1023(_0x2651c1[_0xaeb1('0x19')][_0xaeb1('0x18')]);}})[_0xaeb1('0x1a')](function(_0x4e4dcf){logger[_0xaeb1('0x17')](_0xaeb1('0x13'),_0xcfec5b,_0x4e4dcf);_0x435407(_0x4e4dcf);});});}
\ No newline at end of file
index 03b234f..5f13159 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaa7=['./chatInternalMessage.events','save','emit','removeListener','length'];(function(_0x1af0e5,_0x152990){var _0x3c444a=function(_0x3b3d13){while(--_0x3b3d13){_0x1af0e5['push'](_0x1af0e5['shift']());}};_0x3c444a(++_0x152990);}(_0xdaa7,0x82));var _0x7daa=function(_0x334f9a,_0x542f01){_0x334f9a=_0x334f9a-0x0;var _0x2b219d=_0xdaa7[_0x334f9a];return _0x2b219d;};'use strict';var ChatInternalMessageEvents=require(_0x7daa('0x0'));var events=[_0x7daa('0x1'),'remove','update'];function createListener(_0x3a644e,_0x1132d1){return function(_0x1268cf){_0x1132d1[_0x7daa('0x2')](_0x3a644e,_0x1268cf);};}function removeListener(_0x5eb5a0,_0x18b01f){return function(){ChatInternalMessageEvents[_0x7daa('0x3')](_0x5eb5a0,_0x18b01f);};}exports['register']=function(_0x33086e){for(var _0x3d566f=0x0,_0x1c4371=events[_0x7daa('0x4')];_0x3d566f<_0x1c4371;_0x3d566f++){var _0x864eed=events[_0x3d566f];var _0x5ec664=createListener('chatInternalMessage:'+_0x864eed,_0x33086e);ChatInternalMessageEvents['on'](_0x864eed,_0x5ec664);}};
\ No newline at end of file
+var _0x77d7=['./chatInternalMessage.events','save','remove','emit','removeListener','register','chatInternalMessage:'];(function(_0x3f8ea0,_0x407fa9){var _0x3a949a=function(_0x84e509){while(--_0x84e509){_0x3f8ea0['push'](_0x3f8ea0['shift']());}};_0x3a949a(++_0x407fa9);}(_0x77d7,0x196));var _0x777d=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x77d7[_0x13d07a];return _0x5ee0ee;};'use strict';var ChatInternalMessageEvents=require(_0x777d('0x0'));var events=[_0x777d('0x1'),_0x777d('0x2'),'update'];function createListener(_0xeb46a5,_0x4fa06b){return function(_0xf9ddc0){_0x4fa06b[_0x777d('0x3')](_0xeb46a5,_0xf9ddc0);};}function removeListener(_0x35df25,_0x4ca3e8){return function(){ChatInternalMessageEvents[_0x777d('0x4')](_0x35df25,_0x4ca3e8);};}exports[_0x777d('0x5')]=function(_0x10e067){for(var _0x3c4ffe=0x0,_0x3b994b=events['length'];_0x3c4ffe<_0x3b994b;_0x3c4ffe++){var _0x135177=events[_0x3c4ffe];var _0x37c8df=createListener(_0x777d('0x6')+_0x135177,_0x10e067);ChatInternalMessageEvents['on'](_0x135177,_0x37c8df);}};
\ No newline at end of file
index dd9b5a3..0eae3ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1557=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','index','/describe','describe','get','/users','isAuthenticated','getUsers','show','post','put','/:id'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x1557,0x6c));var _0x7155=function(_0x3fcf0c,_0x460eb3){_0x3fcf0c=_0x3fcf0c-0x0;var _0x1f64ac=_0x1557[_0x3fcf0c];return _0x1f64ac;};'use strict';var multer=require(_0x7155('0x0'));var util=require(_0x7155('0x1'));var path=require(_0x7155('0x2'));var timeout=require(_0x7155('0x3'));var express=require(_0x7155('0x4'));var router=express[_0x7155('0x5')]();var fs_extra=require(_0x7155('0x6'));var auth=require(_0x7155('0x7'));var interaction=require(_0x7155('0x8'));var config=require(_0x7155('0x9'));var controller=require(_0x7155('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x7155('0xb')]);router['get'](_0x7155('0xc'),auth['isAuthenticated'](),controller[_0x7155('0xd')]);router[_0x7155('0xe')](_0x7155('0xf'),auth[_0x7155('0x10')](),controller[_0x7155('0x11')]);router[_0x7155('0xe')]('/:id',auth[_0x7155('0x10')](),controller[_0x7155('0x12')]);router[_0x7155('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7155('0x14')](_0x7155('0x15'),controller[_0x7155('0x16')]);router[_0x7155('0x17')](_0x7155('0x15'),auth[_0x7155('0x10')](),controller[_0x7155('0x18')]);module[_0x7155('0x19')]=router;
\ No newline at end of file
+var _0x260b=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','/describe','isAuthenticated','describe','getUsers','get','/:id','show','post','create','put','update','destroy','exports','multer','util'];(function(_0x409eb7,_0x3b69f0){var _0x5e9078=function(_0x42d6d4){while(--_0x42d6d4){_0x409eb7['push'](_0x409eb7['shift']());}};_0x5e9078(++_0x3b69f0);}(_0x260b,0x1e2));var _0xb260=function(_0x3e5940,_0x1e510d){_0x3e5940=_0x3e5940-0x0;var _0x34a0dd=_0x260b[_0x3e5940];return _0x34a0dd;};'use strict';var multer=require(_0xb260('0x0'));var util=require(_0xb260('0x1'));var path=require('path');var timeout=require(_0xb260('0x2'));var express=require(_0xb260('0x3'));var router=express[_0xb260('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb260('0x5'));var interaction=require(_0xb260('0x6'));var config=require(_0xb260('0x7'));var controller=require(_0xb260('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb260('0x9'),auth[_0xb260('0xa')](),controller[_0xb260('0xb')]);router['get']('/users',auth[_0xb260('0xa')](),controller[_0xb260('0xc')]);router[_0xb260('0xd')](_0xb260('0xe'),auth[_0xb260('0xa')](),controller[_0xb260('0xf')]);router[_0xb260('0x10')]('/',auth[_0xb260('0xa')](),controller[_0xb260('0x11')]);router[_0xb260('0x12')](_0xb260('0xe'),controller[_0xb260('0x13')]);router['delete'](_0xb260('0xe'),auth[_0xb260('0xa')](),controller[_0xb260('0x14')]);module[_0xb260('0x15')]=router;
\ No newline at end of file
index c718fb4..0676831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['BOOLEAN','ENUM','DATE','STRING','sequelize','exports','TEXT','medium'];(function(_0x27333b,_0x5202dc){var _0x1d7b7f=function(_0x138b5f){while(--_0x138b5f){_0x27333b['push'](_0x27333b['shift']());}};_0x1d7b7f(++_0x5202dc);}(_0x93e9,0xcc));var _0x993e=function(_0x98a73,_0x374d19){_0x98a73=_0x98a73-0x0;var _0x3583e3=_0x93e9[_0x98a73];return _0x3583e3;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'body':{'type':Sequelize[_0x993e('0x2')](_0x993e('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x993e('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x993e('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x993e('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x993e('0x6')]},'providerName':{'type':Sequelize[_0x993e('0x7')]},'providerResponse':{'type':Sequelize[_0x993e('0x2')]}};
\ No newline at end of file
+var _0x5c00=['BOOLEAN','ENUM','out','DATE','sequelize','exports','TEXT'];(function(_0x44b355,_0x384ab1){var _0x5ae379=function(_0x13efe6){while(--_0x13efe6){_0x44b355['push'](_0x44b355['shift']());}};_0x5ae379(++_0x384ab1);}(_0x5c00,0x17e));var _0x05c0=function(_0x2ff38f,_0xefceba){_0x2ff38f=_0x2ff38f-0x0;var _0x19a75f=_0x5c00[_0x2ff38f];return _0x19a75f;};'use strict';var Sequelize=require(_0x05c0('0x0'));module[_0x05c0('0x1')]={'body':{'type':Sequelize[_0x05c0('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x05c0('0x4')]('in',_0x05c0('0x5')),'defaultValue':_0x05c0('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x05c0('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x05c0('0x2')]}};
\ No newline at end of file
index c58b7d0..90face7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8360=['UserId','user','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','internal','manual','interface','format','SIP/%s','channel','event','EventManager','parse','formData','role','null','RejectMessage','rejectMessage','email','motionChannel','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','end','offset','undefined','limit','count','status','set','json','apply','reject','save','update','then','name','send','index','map','rawAttributes','fieldName','model','query','filters','intersection','length','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatMessage','includeAll','findAll','rows','show','params','keys','fields','find','create','body','describe','chat-interactions','accept','chat','readAt'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8360,0x132));var _0x0836=function(_0x4cece5,_0x352aa7){_0x4cece5=_0x4cece5-0x0;var _0x27beb1=_0x8360[_0x4cece5];return _0x27beb1;};'use strict';var emlformat=require(_0x0836('0x0'));var rimraf=require(_0x0836('0x1'));var zipdir=require(_0x0836('0x2'));var jsonpatch=require(_0x0836('0x3'));var rp=require(_0x0836('0x4'));var moment=require(_0x0836('0x5'));var BPromise=require(_0x0836('0x6'));var Mustache=require(_0x0836('0x7'));var util=require(_0x0836('0x8'));var path=require(_0x0836('0x9'));var sox=require('sox');var csv=require(_0x0836('0xa'));var ejs=require(_0x0836('0xb'));var fs=require('fs');var fs_extra=require(_0x0836('0xc'));var _=require(_0x0836('0xd'));var squel=require(_0x0836('0xe'));var crypto=require('crypto');var jsforce=require(_0x0836('0xf'));var deskjs=require(_0x0836('0x10'));var toCsv=require(_0x0836('0xa'));var querystring=require(_0x0836('0x11'));var Papa=require(_0x0836('0x12'));var Redis=require(_0x0836('0x13'));var authService=require(_0x0836('0x14'));var qs=require(_0x0836('0x15'));var as=require(_0x0836('0x16'));var hardwareService=require(_0x0836('0x17'));var logger=require(_0x0836('0x18'))('api');var utils=require(_0x0836('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x0836('0x1a'));var db=require(_0x0836('0x1b'))['db'];config[_0x0836('0x1c')]=_[_0x0836('0x1d')](config[_0x0836('0x1c')],{'host':_0x0836('0x1e'),'port':0x18eb});var socket=require(_0x0836('0x1f'))(new Redis(config[_0x0836('0x1c')]));require(_0x0836('0x20'))[_0x0836('0x21')](socket);var jayson=require(_0x0836('0x22'));var client=jayson[_0x0836('0x23')]['http']({'port':0x232c});var client9002=jayson[_0x0836('0x23')][_0x0836('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x50c2e1,_0x5160ad,_0x2a7096,_0x2917d6){return new BPromise(function(_0x5dc60f,_0x43f70c){var _0x2cdb74=_0x2917d6||client;return _0x2cdb74[_0x0836('0x25')](_0x50c2e1,_0x2a7096)['then'](function(_0x1b910f){logger[_0x0836('0x26')](_0x0836('0x27'),_0x5160ad,_0x0836('0x28'));logger[_0x0836('0x29')](_0x0836('0x2a'),_0x5160ad,_0x0836('0x28'),JSON['stringify'](_0x1b910f));if(_0x1b910f[_0x0836('0x2b')]){if(_0x1b910f[_0x0836('0x2b')][_0x0836('0x2c')]===0x1f4){logger[_0x0836('0x2b')]('ChatMessage,\x20%s,\x20%s',_0x5160ad,_0x1b910f[_0x0836('0x2b')][_0x0836('0x2d')]);return _0x43f70c(_0x1b910f['error'][_0x0836('0x2d')]);}logger[_0x0836('0x2b')](_0x0836('0x27'),_0x5160ad,_0x1b910f[_0x0836('0x2b')][_0x0836('0x2d')]);return _0x5dc60f(_0x1b910f[_0x0836('0x2b')]['message']);}else{logger[_0x0836('0x26')](_0x0836('0x27'),_0x5160ad,_0x0836('0x28'));_0x5dc60f(_0x1b910f[_0x0836('0x2e')][_0x0836('0x2d')]);}})[_0x0836('0x2f')](function(_0xae0ede){logger[_0x0836('0x2b')](_0x0836('0x27'),_0x5160ad,_0xae0ede);_0x43f70c(_0xae0ede);});});}function respondWithStatusCode(_0x6ec9da,_0x40f802){_0x40f802=_0x40f802||0xcc;return function(_0x36d641){if(_0x36d641){return _0x6ec9da[_0x0836('0x30')](_0x40f802);}return _0x6ec9da['status'](_0x40f802)[_0x0836('0x31')]();};}function respondWithResult(_0x16f0ae,_0x1e3873){_0x1e3873=_0x1e3873||0xc8;return function(_0x4af268){if(_0x4af268){return _0x16f0ae['status'](_0x1e3873)['json'](_0x4af268);}};}function respondWithFilteredResult(_0xe77d62,_0x2a693b){return function(_0x3ad2e7){if(_0x3ad2e7){var _0x13022e=typeof _0x2a693b[_0x0836('0x32')]===_0x0836('0x33')&&typeof _0x2a693b[_0x0836('0x34')]==='undefined';var _0x4189db=_0x3ad2e7[_0x0836('0x35')];var _0x20148d=_0x13022e?0x0:_0x2a693b[_0x0836('0x32')];var _0x1e433f=_0x13022e?_0x3ad2e7[_0x0836('0x35')]:_0x2a693b[_0x0836('0x32')]+_0x2a693b[_0x0836('0x34')];var _0x2b08d7;if(_0x1e433f>=_0x4189db){_0x1e433f=_0x4189db;_0x2b08d7=0xc8;}else{_0x2b08d7=0xce;}_0xe77d62[_0x0836('0x36')](_0x2b08d7);return _0xe77d62[_0x0836('0x37')]('Content-Range',_0x20148d+'-'+_0x1e433f+'/'+_0x4189db)[_0x0836('0x38')](_0x3ad2e7);}return null;};}function patchUpdates(_0x3bc706){return function(_0x1860ab){try{jsonpatch[_0x0836('0x39')](_0x1860ab,_0x3bc706,!![]);}catch(_0x5d8daa){return BPromise[_0x0836('0x3a')](_0x5d8daa);}return _0x1860ab[_0x0836('0x3b')]();};}function saveUpdates(_0x4952ed,_0xe728ac){return function(_0x116c85){if(_0x116c85){return _0x116c85[_0x0836('0x3c')](_0x4952ed)['then'](function(_0x461974){return _0x461974;});}return null;};}function removeEntity(_0x872bb7,_0x1f48ee){return function(_0x167391){if(_0x167391){return _0x167391['destroy']()[_0x0836('0x3d')](function(){_0x872bb7[_0x0836('0x36')](0xcc)[_0x0836('0x31')]();});}};}function handleEntityNotFound(_0xfdb7fb,_0x522def){return function(_0x2dba15){if(!_0x2dba15){_0xfdb7fb['sendStatus'](0x194);}return _0x2dba15;};}function handleError(_0x54fda7,_0x135485){_0x135485=_0x135485||0x1f4;return function(_0x432870){logger[_0x0836('0x2b')](_0x432870['stack']);if(_0x432870[_0x0836('0x3e')]){delete _0x432870[_0x0836('0x3e')];}_0x54fda7[_0x0836('0x36')](_0x135485)[_0x0836('0x3f')](_0x432870);};}exports[_0x0836('0x40')]=function(_0x492c55,_0x10948c){var _0xf98ac1={},_0x408911={},_0x519aa7={'count':0x0,'rows':[]};var _0x48a57b=_[_0x0836('0x41')](db['ChatMessage'][_0x0836('0x42')],function(_0x408feb){return{'name':_0x408feb[_0x0836('0x43')],'type':_0x408feb['type']['key']};});_0x408911[_0x0836('0x44')]=_[_0x0836('0x41')](_0x48a57b,'name');_0x408911[_0x0836('0x45')]=_['keys'](_0x492c55[_0x0836('0x45')]);_0x408911[_0x0836('0x46')]=_['intersection'](_0x408911[_0x0836('0x44')],_0x408911[_0x0836('0x45')]);_0xf98ac1['attributes']=_[_0x0836('0x47')](_0x408911[_0x0836('0x44')],qs['fields'](_0x492c55[_0x0836('0x45')]['fields']));_0xf98ac1['attributes']=_0xf98ac1['attributes'][_0x0836('0x48')]?_0xf98ac1[_0x0836('0x49')]:_0x408911[_0x0836('0x44')];if(!_0x492c55[_0x0836('0x45')]['hasOwnProperty'](_0x0836('0x4a'))){_0xf98ac1[_0x0836('0x34')]=qs[_0x0836('0x34')](_0x492c55['query'][_0x0836('0x34')]);_0xf98ac1[_0x0836('0x32')]=qs[_0x0836('0x32')](_0x492c55[_0x0836('0x45')][_0x0836('0x32')]);}_0xf98ac1[_0x0836('0x4b')]=qs[_0x0836('0x4c')](_0x492c55[_0x0836('0x45')][_0x0836('0x4c')]);_0xf98ac1[_0x0836('0x4d')]=qs['filters'](_[_0x0836('0x4e')](_0x492c55[_0x0836('0x45')],_0x408911[_0x0836('0x46')]),_0x48a57b);if(_0x492c55[_0x0836('0x45')][_0x0836('0x4f')]){_0xf98ac1[_0x0836('0x4d')]=_[_0x0836('0x50')](_0xf98ac1[_0x0836('0x4d')],{'$or':_[_0x0836('0x41')](_0x48a57b,function(_0xc5c4e9){if(_0xc5c4e9['type']!==_0x0836('0x51')){var _0x1fc4c1={};_0x1fc4c1[_0xc5c4e9[_0x0836('0x3e')]]={'$like':'%'+_0x492c55[_0x0836('0x45')]['filter']+'%'};return _0x1fc4c1;}})});}_0xf98ac1=_[_0x0836('0x50')]({},_0xf98ac1,_0x492c55[_0x0836('0x52')]);var _0x1d4cd9={'where':_0xf98ac1['where']};return db[_0x0836('0x53')][_0x0836('0x35')](_0x1d4cd9)[_0x0836('0x3d')](function(_0xcac4ba){_0x519aa7[_0x0836('0x35')]=_0xcac4ba;if(_0x492c55['query'][_0x0836('0x54')]){_0xf98ac1['include']=[{'all':!![]}];}return db[_0x0836('0x53')][_0x0836('0x55')](_0xf98ac1);})[_0x0836('0x3d')](function(_0x48b57b){_0x519aa7[_0x0836('0x56')]=_0x48b57b;return _0x519aa7;})[_0x0836('0x3d')](respondWithFilteredResult(_0x10948c,_0xf98ac1))[_0x0836('0x2f')](handleError(_0x10948c,null));};exports[_0x0836('0x57')]=function(_0x445da9,_0x253b3e){var _0x12a905={'raw':!![],'where':{'id':_0x445da9[_0x0836('0x58')]['id']}},_0x5082b0={};_0x5082b0[_0x0836('0x44')]=_[_0x0836('0x59')](db['ChatMessage'][_0x0836('0x42')]);_0x5082b0[_0x0836('0x45')]=_[_0x0836('0x59')](_0x445da9[_0x0836('0x45')]);_0x5082b0[_0x0836('0x46')]=_[_0x0836('0x47')](_0x5082b0[_0x0836('0x44')],_0x5082b0['query']);_0x12a905[_0x0836('0x49')]=_[_0x0836('0x47')](_0x5082b0[_0x0836('0x44')],qs[_0x0836('0x5a')](_0x445da9[_0x0836('0x45')][_0x0836('0x5a')]));_0x12a905['attributes']=_0x12a905['attributes'][_0x0836('0x48')]?_0x12a905['attributes']:_0x5082b0['model'];if(_0x445da9[_0x0836('0x45')][_0x0836('0x54')]){_0x12a905['include']=[{'all':!![]}];}_0x12a905=_[_0x0836('0x50')]({},_0x12a905,_0x445da9['options']);return db['ChatMessage'][_0x0836('0x5b')](_0x12a905)[_0x0836('0x3d')](handleEntityNotFound(_0x253b3e,null))[_0x0836('0x3d')](respondWithResult(_0x253b3e,null))[_0x0836('0x2f')](handleError(_0x253b3e,null));};exports[_0x0836('0x5c')]=function(_0x5a2e43,_0x4d2408){return db['ChatMessage'][_0x0836('0x5c')](_0x5a2e43['body'],{})[_0x0836('0x3d')](respondWithResult(_0x4d2408,0xc9))[_0x0836('0x2f')](handleError(_0x4d2408,null));};exports[_0x0836('0x3c')]=function(_0x424e12,_0x3c7b06){if(_0x424e12[_0x0836('0x5d')]['id']){delete _0x424e12[_0x0836('0x5d')]['id'];}return db['ChatMessage']['find']({'where':{'id':_0x424e12['params']['id']}})[_0x0836('0x3d')](handleEntityNotFound(_0x3c7b06,null))[_0x0836('0x3d')](saveUpdates(_0x424e12['body'],null))[_0x0836('0x3d')](respondWithResult(_0x3c7b06,null))['catch'](handleError(_0x3c7b06,null));};exports['destroy']=function(_0x13d5c0,_0x2d886b){return db[_0x0836('0x53')][_0x0836('0x5b')]({'where':{'id':_0x13d5c0['params']['id']}})[_0x0836('0x3d')](handleEntityNotFound(_0x2d886b,null))[_0x0836('0x3d')](removeEntity(_0x2d886b,null))[_0x0836('0x2f')](handleError(_0x2d886b,null));};exports[_0x0836('0x5e')]=function(_0x44cecd,_0x343b78){return db['ChatMessage'][_0x0836('0x5e')]()['then'](respondWithResult(_0x343b78,null))[_0x0836('0x2f')](handleError(_0x343b78,null));};var interaction_log=require(_0x0836('0x18'))(_0x0836('0x5f'));exports[_0x0836('0x60')]=function(_0x5a9af7,_0x52086f,_0x1bf212){var _0x42372e={'agent':{},'channel':_0x0836('0x61')};if(_0x5a9af7[_0x0836('0x5d')]['id']){delete _0x5a9af7[_0x0836('0x5d')]['id'];}_0x5a9af7[_0x0836('0x5d')]['read']=!![];_0x5a9af7['body'][_0x0836('0x62')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5a9af7[_0x0836('0x5d')][_0x0836('0x63')]=_0x5a9af7[_0x0836('0x5d')]['UserId']||_0x5a9af7[_0x0836('0x64')]['id'];_0x42372e[_0x0836('0x65')]['id']=_0x5a9af7[_0x0836('0x5d')][_0x0836('0x63')];return db['ChatMessage']['find']({'where':{'id':_0x5a9af7[_0x0836('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x52086f,null))[_0x0836('0x3d')](saveUpdates(_0x5a9af7[_0x0836('0x5d')],null))[_0x0836('0x3d')](function(_0x4a212){if(_0x4a212){_0x42372e[_0x0836('0x2d')]=_0x4a212[_0x0836('0x66')]({'plain':!![]});return db[_0x0836('0x67')][_0x0836('0x5b')]({'where':{'id':_0x4a212[_0x0836('0x68')]}});}return null;})[_0x0836('0x3d')](handleEntityNotFound(_0x52086f,null))[_0x0836('0x3d')](function(_0x577e8d){if(_0x577e8d){return _0x577e8d[_0x0836('0x3c')]({'UserId':_0x5a9af7[_0x0836('0x5d')][_0x0836('0x63')],'read1stAt':_[_0x0836('0x69')](_0x577e8d[_0x0836('0x6a')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0836('0x3d')](function(_0x2257ca){if(_0x2257ca){_0x42372e[_0x0836('0x6b')]=_0x2257ca[_0x0836('0x66')]({'plain':!![]});interaction_log[_0x0836('0x26')](_0x0836('0x6c'),_0x5a9af7[_0x0836('0x64')]['id'],_0x5a9af7[_0x0836('0x64')][_0x0836('0x3e')],_0x5a9af7[_0x0836('0x64')]['role'],_0x42372e['interaction']['id'],_0x5a9af7[_0x0836('0x5d')]?JSON[_0x0836('0x6d')](_0x5a9af7[_0x0836('0x5d')]):'null');return respondWithRpcPromise('AcceptMessage',_0x0836('0x6e'),_0x42372e);}return null;})[_0x0836('0x3d')](function(_0x35ea95){var _0x395c6d=_0x0836('0x6f')+_0x35ea95[_0x0836('0x2d')][_0x0836('0x70')];return db[_0x0836('0x71')][_0x0836('0x45')](_0x395c6d,{'type':db[_0x0836('0x72')][_0x0836('0x73')][_0x0836('0x74')],'raw':!![]})[_0x0836('0x3d')](function(_0x2518d1){return _0x2518d1;});})['then'](function(_0x2596c4){if(_0x2596c4){_0x42372e[_0x0836('0x2d')][_0x0836('0x75')]=_0x2596c4[0x0];if(!_0x5a9af7['body'][_0x0836('0x63')])return;return db[_0x0836('0x76')][_0x0836('0x5b')]({'where':{'id':_0x5a9af7[_0x0836('0x5d')][_0x0836('0x63')],'role':_0x0836('0x65')},'attributes':['id','name','fullname','email',_0x0836('0x77')],'raw':!![]});}return null;})[_0x0836('0x3d')](function(_0x245e83){if(!_0x245e83)return null;_0x42372e['message'][_0x0836('0x65')]=_0x245e83;return _0x42372e;})[_0x0836('0x3d')](function(_0x1cd26d){if(_0x1cd26d){if(_0x5a9af7[_0x0836('0x5d')][_0x0836('0x78')]){_0x42372e[_0x0836('0x2d')][_0x0836('0x79')]=util[_0x0836('0x7a')](_0x0836('0x7b'),_0x5a9af7['user']['name']);_0x42372e[_0x0836('0x2d')][_0x0836('0x7c')]=_0x42372e[_0x0836('0x7c')];_0x42372e[_0x0836('0x2d')]['motionChannel']=_0x42372e['channel'];_0x42372e[_0x0836('0x2d')][_0x0836('0x7d')]=_0x0836('0x60');return respondWithRpcPromise(_0x0836('0x7e'),_0x0836('0x7e'),{'event':'acceptmessage','message':_['merge'](_0x42372e[_0x0836('0x2d')],JSON[_0x0836('0x7f')](_0x42372e[_0x0836('0x6b')][_0x0836('0x80')]))},client9002)['then'](function(){return _0x42372e;});}return _0x42372e;}return null;})[_0x0836('0x3d')](respondWithResult(_0x52086f,null))[_0x0836('0x2f')](handleError(_0x52086f,null));};var interaction_log=require(_0x0836('0x18'))(_0x0836('0x5f'));exports[_0x0836('0x3a')]=function(_0x28a179,_0x5ea809,_0x5e6815){var _0x2a00d4={'agent':{},'channel':_0x0836('0x61')};if(_0x28a179[_0x0836('0x5d')]['id']){delete _0x28a179['body']['id'];}_0x28a179['body'][_0x0836('0x63')]=_0x28a179['body'][_0x0836('0x63')]||_0x28a179[_0x0836('0x64')]['id'];_0x2a00d4['agent']['id']=_0x28a179[_0x0836('0x5d')][_0x0836('0x63')];return db[_0x0836('0x53')][_0x0836('0x5b')]({'where':{'id':_0x28a179[_0x0836('0x58')]['id'],'UserId':null}})[_0x0836('0x3d')](handleEntityNotFound(_0x5ea809,null))[_0x0836('0x3d')](function(_0x1af723){if(_0x1af723){_0x2a00d4[_0x0836('0x2d')]=_0x1af723['get']({'plain':!![]});return db['ChatInteraction'][_0x0836('0x5b')]({'where':{'id':_0x1af723[_0x0836('0x68')]}});}return null;})[_0x0836('0x3d')](handleEntityNotFound(_0x5ea809,null))['then'](function(_0x4b62c6){if(_0x4b62c6){_0x2a00d4[_0x0836('0x6b')]=_0x4b62c6[_0x0836('0x66')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x28a179['user']['id'],_0x28a179[_0x0836('0x64')]['name'],_0x28a179['user'][_0x0836('0x81')],_0x2a00d4[_0x0836('0x6b')]['id'],_0x28a179[_0x0836('0x5d')]?JSON[_0x0836('0x6d')](_0x28a179[_0x0836('0x5d')]):_0x0836('0x82'));return respondWithRpcPromise(_0x0836('0x83'),_0x0836('0x84'),_0x2a00d4);}return null;})[_0x0836('0x3d')](function(_0x29c0ef){var _0x14d679='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x29c0ef['message']['ContactId'];return db[_0x0836('0x71')][_0x0836('0x45')](_0x14d679,{'type':db['Sequelize'][_0x0836('0x73')]['SELECT'],'raw':!![]})[_0x0836('0x3d')](function(_0x49cf2a){return _0x49cf2a;});})[_0x0836('0x3d')](function(_0x187f3b){if(_0x187f3b){_0x2a00d4[_0x0836('0x2d')][_0x0836('0x75')]=_0x187f3b[0x0];if(!_0x28a179['body'][_0x0836('0x63')])return;return db[_0x0836('0x76')]['find']({'where':{'id':_0x28a179['body'][_0x0836('0x63')],'role':_0x0836('0x65')},'attributes':['id',_0x0836('0x3e'),'fullname',_0x0836('0x85'),_0x0836('0x77')],'raw':!![]});}return null;})[_0x0836('0x3d')](function(_0x22ec36){if(!_0x22ec36)return null;_0x2a00d4['message'][_0x0836('0x65')]=_0x22ec36;return _0x2a00d4;})[_0x0836('0x3d')](function(_0x537549){if(_0x537549){_0x537549['message']['interface']=util[_0x0836('0x7a')](_0x0836('0x7b'),_0x28a179['user'][_0x0836('0x3e')]);_0x537549[_0x0836('0x2d')]['channel']=_0x2a00d4[_0x0836('0x7c')];_0x537549[_0x0836('0x2d')][_0x0836('0x86')]=_0x2a00d4[_0x0836('0x7c')];_0x537549[_0x0836('0x2d')]['event']='reject';respondWithRpcPromise(_0x0836('0x7e'),_0x0836('0x7e'),{'event':'rejectmessage','message':_['merge'](_0x2a00d4[_0x0836('0x2d')],JSON[_0x0836('0x7f')](_0x2a00d4[_0x0836('0x6b')]['formData']))},client9002);return _0x2a00d4;}return null;})[_0x0836('0x3d')](respondWithResult(_0x5ea809,null))[_0x0836('0x2f')](handleError(_0x5ea809,null));};
\ No newline at end of file
+var _0x0482=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','register','jayson/promise','client','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','sendStatus','status','end','offset','limit','count','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','ChatMessage','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','rows','catch','show','find','create','body','params','describe','chat-interactions','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteraction','ChatInteractionId','isNil','interaction','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','formData','rejectMessage','ContactId','Sequelize','parse','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x688fb,_0x45f9ba){var _0x2a65fe=function(_0xd593c0){while(--_0xd593c0){_0x688fb['push'](_0x688fb['shift']());}};_0x2a65fe(++_0x45f9ba);}(_0x0482,0x1ef));var _0x2048=function(_0x5de7be,_0x51575a){_0x5de7be=_0x5de7be-0x0;var _0x21b73e=_0x0482[_0x5de7be];return _0x21b73e;};'use strict';var emlformat=require(_0x2048('0x0'));var rimraf=require(_0x2048('0x1'));var zipdir=require(_0x2048('0x2'));var jsonpatch=require(_0x2048('0x3'));var rp=require(_0x2048('0x4'));var moment=require('moment');var BPromise=require(_0x2048('0x5'));var Mustache=require(_0x2048('0x6'));var util=require(_0x2048('0x7'));var path=require(_0x2048('0x8'));var sox=require(_0x2048('0x9'));var csv=require(_0x2048('0xa'));var ejs=require(_0x2048('0xb'));var fs=require('fs');var fs_extra=require(_0x2048('0xc'));var _=require('lodash');var squel=require(_0x2048('0xd'));var crypto=require(_0x2048('0xe'));var jsforce=require(_0x2048('0xf'));var deskjs=require(_0x2048('0x10'));var toCsv=require(_0x2048('0xa'));var querystring=require(_0x2048('0x11'));var Papa=require(_0x2048('0x12'));var Redis=require(_0x2048('0x13'));var authService=require(_0x2048('0x14'));var qs=require(_0x2048('0x15'));var as=require(_0x2048('0x16'));var hardwareService=require(_0x2048('0x17'));var logger=require(_0x2048('0x18'))(_0x2048('0x19'));var utils=require(_0x2048('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2048('0x1b'))['db'];config[_0x2048('0x1c')]=_['defaults'](config[_0x2048('0x1c')],{'host':_0x2048('0x1d'),'port':0x18eb});var socket=require(_0x2048('0x1e'))(new Redis(config[_0x2048('0x1c')]));require('./chatMessage.socket')[_0x2048('0x1f')](socket);var jayson=require(_0x2048('0x20'));var client=jayson[_0x2048('0x21')]['http']({'port':0x232c});var client9002=jayson[_0x2048('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb16eb3,_0x8aa0a9,_0x53e187,_0x1e1761){return new BPromise(function(_0x1dd910,_0x2a7022){var _0x4f13d8=_0x1e1761||client;return _0x4f13d8[_0x2048('0x22')](_0xb16eb3,_0x53e187)[_0x2048('0x23')](function(_0x7569ba){logger['info'](_0x2048('0x24'),_0x8aa0a9,_0x2048('0x25'));logger['debug'](_0x2048('0x26'),_0x8aa0a9,_0x2048('0x25'),JSON[_0x2048('0x27')](_0x7569ba));if(_0x7569ba[_0x2048('0x28')]){if(_0x7569ba[_0x2048('0x28')][_0x2048('0x29')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x8aa0a9,_0x7569ba[_0x2048('0x28')][_0x2048('0x2a')]);return _0x2a7022(_0x7569ba[_0x2048('0x28')]['message']);}logger[_0x2048('0x28')]('ChatMessage,\x20%s,\x20%s',_0x8aa0a9,_0x7569ba[_0x2048('0x28')][_0x2048('0x2a')]);return _0x1dd910(_0x7569ba[_0x2048('0x28')]['message']);}else{logger[_0x2048('0x2b')](_0x2048('0x24'),_0x8aa0a9,_0x2048('0x25'));_0x1dd910(_0x7569ba['result'][_0x2048('0x2a')]);}})['catch'](function(_0x4dc555){logger[_0x2048('0x28')](_0x2048('0x24'),_0x8aa0a9,_0x4dc555);_0x2a7022(_0x4dc555);});});}function respondWithStatusCode(_0x5e2388,_0x172bb2){_0x172bb2=_0x172bb2||0xcc;return function(_0x4286f9){if(_0x4286f9){return _0x5e2388[_0x2048('0x2c')](_0x172bb2);}return _0x5e2388[_0x2048('0x2d')](_0x172bb2)[_0x2048('0x2e')]();};}function respondWithResult(_0x3f2f69,_0x3a48c7){_0x3a48c7=_0x3a48c7||0xc8;return function(_0x1ba462){if(_0x1ba462){return _0x3f2f69[_0x2048('0x2d')](_0x3a48c7)['json'](_0x1ba462);}};}function respondWithFilteredResult(_0x8b1ad4,_0x1d29b4){return function(_0x4c8021){if(_0x4c8021){var _0x314bb9=typeof _0x1d29b4[_0x2048('0x2f')]==='undefined'&&typeof _0x1d29b4[_0x2048('0x30')]==='undefined';var _0x3c32b5=_0x4c8021['count'];var _0x34bb03=_0x314bb9?0x0:_0x1d29b4['offset'];var _0x2b77ef=_0x314bb9?_0x4c8021[_0x2048('0x31')]:_0x1d29b4[_0x2048('0x2f')]+_0x1d29b4[_0x2048('0x30')];var _0x53bf13;if(_0x2b77ef>=_0x3c32b5){_0x2b77ef=_0x3c32b5;_0x53bf13=0xc8;}else{_0x53bf13=0xce;}_0x8b1ad4[_0x2048('0x2d')](_0x53bf13);return _0x8b1ad4[_0x2048('0x32')](_0x2048('0x33'),_0x34bb03+'-'+_0x2b77ef+'/'+_0x3c32b5)['json'](_0x4c8021);}return null;};}function patchUpdates(_0x8adb67){return function(_0x2791b6){try{jsonpatch[_0x2048('0x34')](_0x2791b6,_0x8adb67,!![]);}catch(_0x59248d){return BPromise[_0x2048('0x35')](_0x59248d);}return _0x2791b6['save']();};}function saveUpdates(_0x2bc171,_0x2793b2){return function(_0x321984){if(_0x321984){return _0x321984[_0x2048('0x36')](_0x2bc171)[_0x2048('0x23')](function(_0xb92049){return _0xb92049;});}return null;};}function removeEntity(_0x14eaa1,_0x23fc0a){return function(_0x531702){if(_0x531702){return _0x531702[_0x2048('0x37')]()[_0x2048('0x23')](function(){_0x14eaa1[_0x2048('0x2d')](0xcc)[_0x2048('0x2e')]();});}};}function handleEntityNotFound(_0x3e01c6,_0x3b3c87){return function(_0x43a61c){if(!_0x43a61c){_0x3e01c6[_0x2048('0x2c')](0x194);}return _0x43a61c;};}function handleError(_0x13ed22,_0x32c947){_0x32c947=_0x32c947||0x1f4;return function(_0x368162){logger['error'](_0x368162[_0x2048('0x38')]);if(_0x368162[_0x2048('0x39')]){delete _0x368162[_0x2048('0x39')];}_0x13ed22['status'](_0x32c947)[_0x2048('0x3a')](_0x368162);};}exports[_0x2048('0x3b')]=function(_0x224a8b,_0x2b3417){var _0x4b6178={},_0x84ad76={},_0x5c6e7b={'count':0x0,'rows':[]};var _0x286b6d=_[_0x2048('0x3c')](db[_0x2048('0x3d')][_0x2048('0x3e')],function(_0x543730){return{'name':_0x543730['fieldName'],'type':_0x543730['type'][_0x2048('0x3f')]};});_0x84ad76[_0x2048('0x40')]=_[_0x2048('0x3c')](_0x286b6d,_0x2048('0x39'));_0x84ad76[_0x2048('0x41')]=_[_0x2048('0x42')](_0x224a8b[_0x2048('0x41')]);_0x84ad76[_0x2048('0x43')]=_[_0x2048('0x44')](_0x84ad76[_0x2048('0x40')],_0x84ad76[_0x2048('0x41')]);_0x4b6178[_0x2048('0x45')]=_['intersection'](_0x84ad76['model'],qs[_0x2048('0x46')](_0x224a8b['query'][_0x2048('0x46')]));_0x4b6178['attributes']=_0x4b6178['attributes'][_0x2048('0x47')]?_0x4b6178[_0x2048('0x45')]:_0x84ad76['model'];if(!_0x224a8b[_0x2048('0x41')]['hasOwnProperty'](_0x2048('0x48'))){_0x4b6178[_0x2048('0x30')]=qs[_0x2048('0x30')](_0x224a8b['query'][_0x2048('0x30')]);_0x4b6178[_0x2048('0x2f')]=qs['offset'](_0x224a8b['query'][_0x2048('0x2f')]);}_0x4b6178[_0x2048('0x49')]=qs[_0x2048('0x4a')](_0x224a8b[_0x2048('0x41')][_0x2048('0x4a')]);_0x4b6178[_0x2048('0x4b')]=qs[_0x2048('0x43')](_[_0x2048('0x4c')](_0x224a8b[_0x2048('0x41')],_0x84ad76['filters']),_0x286b6d);if(_0x224a8b[_0x2048('0x41')]['filter']){_0x4b6178[_0x2048('0x4b')]=_[_0x2048('0x4d')](_0x4b6178['where'],{'$or':_['map'](_0x286b6d,function(_0x19824c){if(_0x19824c[_0x2048('0x4e')]!==_0x2048('0x4f')){var _0x1f5014={};_0x1f5014[_0x19824c[_0x2048('0x39')]]={'$like':'%'+_0x224a8b['query'][_0x2048('0x50')]+'%'};return _0x1f5014;}})});}_0x4b6178=_[_0x2048('0x4d')]({},_0x4b6178,_0x224a8b[_0x2048('0x51')]);var _0x182dc6={'where':_0x4b6178[_0x2048('0x4b')]};return db[_0x2048('0x3d')]['count'](_0x182dc6)['then'](function(_0x1c8c35){_0x5c6e7b['count']=_0x1c8c35;if(_0x224a8b['query'][_0x2048('0x52')]){_0x4b6178['include']=[{'all':!![]}];}return db[_0x2048('0x3d')]['findAll'](_0x4b6178);})[_0x2048('0x23')](function(_0x5ca11f){_0x5c6e7b[_0x2048('0x53')]=_0x5ca11f;return _0x5c6e7b;})[_0x2048('0x23')](respondWithFilteredResult(_0x2b3417,_0x4b6178))[_0x2048('0x54')](handleError(_0x2b3417,null));};exports[_0x2048('0x55')]=function(_0x4d0a21,_0x41d02f){var _0x3480ea={'raw':!![],'where':{'id':_0x4d0a21['params']['id']}},_0x2f1c27={};_0x2f1c27[_0x2048('0x40')]=_['keys'](db[_0x2048('0x3d')][_0x2048('0x3e')]);_0x2f1c27[_0x2048('0x41')]=_[_0x2048('0x42')](_0x4d0a21[_0x2048('0x41')]);_0x2f1c27[_0x2048('0x43')]=_['intersection'](_0x2f1c27[_0x2048('0x40')],_0x2f1c27[_0x2048('0x41')]);_0x3480ea[_0x2048('0x45')]=_[_0x2048('0x44')](_0x2f1c27[_0x2048('0x40')],qs[_0x2048('0x46')](_0x4d0a21[_0x2048('0x41')][_0x2048('0x46')]));_0x3480ea[_0x2048('0x45')]=_0x3480ea[_0x2048('0x45')]['length']?_0x3480ea[_0x2048('0x45')]:_0x2f1c27[_0x2048('0x40')];if(_0x4d0a21[_0x2048('0x41')][_0x2048('0x52')]){_0x3480ea['include']=[{'all':!![]}];}_0x3480ea=_['merge']({},_0x3480ea,_0x4d0a21[_0x2048('0x51')]);return db[_0x2048('0x3d')][_0x2048('0x56')](_0x3480ea)[_0x2048('0x23')](handleEntityNotFound(_0x41d02f,null))[_0x2048('0x23')](respondWithResult(_0x41d02f,null))['catch'](handleError(_0x41d02f,null));};exports[_0x2048('0x57')]=function(_0x3cbda0,_0x18cddc){return db[_0x2048('0x3d')][_0x2048('0x57')](_0x3cbda0[_0x2048('0x58')],{})[_0x2048('0x23')](respondWithResult(_0x18cddc,0xc9))[_0x2048('0x54')](handleError(_0x18cddc,null));};exports[_0x2048('0x36')]=function(_0x3484a5,_0x5e769f){if(_0x3484a5[_0x2048('0x58')]['id']){delete _0x3484a5['body']['id'];}return db[_0x2048('0x3d')]['find']({'where':{'id':_0x3484a5[_0x2048('0x59')]['id']}})['then'](handleEntityNotFound(_0x5e769f,null))[_0x2048('0x23')](saveUpdates(_0x3484a5[_0x2048('0x58')],null))['then'](respondWithResult(_0x5e769f,null))[_0x2048('0x54')](handleError(_0x5e769f,null));};exports[_0x2048('0x37')]=function(_0x3e676e,_0x42c2cf){return db[_0x2048('0x3d')]['find']({'where':{'id':_0x3e676e[_0x2048('0x59')]['id']}})[_0x2048('0x23')](handleEntityNotFound(_0x42c2cf,null))[_0x2048('0x23')](removeEntity(_0x42c2cf,null))[_0x2048('0x54')](handleError(_0x42c2cf,null));};exports[_0x2048('0x5a')]=function(_0x1d96b4,_0x496fb5){return db[_0x2048('0x3d')][_0x2048('0x5a')]()[_0x2048('0x23')](respondWithResult(_0x496fb5,null))['catch'](handleError(_0x496fb5,null));};var interaction_log=require(_0x2048('0x18'))(_0x2048('0x5b'));exports[_0x2048('0x5c')]=function(_0x37f3b2,_0x5730a5,_0x2637ea){var _0x3e18c0={'agent':{},'channel':_0x2048('0x5d')};if(_0x37f3b2['body']['id']){delete _0x37f3b2[_0x2048('0x58')]['id'];}_0x37f3b2['body'][_0x2048('0x5e')]=!![];_0x37f3b2[_0x2048('0x58')]['readAt']=moment()[_0x2048('0x5f')](_0x2048('0x60'));_0x37f3b2['body'][_0x2048('0x61')]=_0x37f3b2[_0x2048('0x58')][_0x2048('0x61')]||_0x37f3b2[_0x2048('0x62')]['id'];_0x3e18c0[_0x2048('0x63')]['id']=_0x37f3b2[_0x2048('0x58')][_0x2048('0x61')];return db['ChatMessage'][_0x2048('0x56')]({'where':{'id':_0x37f3b2[_0x2048('0x59')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5730a5,null))[_0x2048('0x23')](saveUpdates(_0x37f3b2[_0x2048('0x58')],null))[_0x2048('0x23')](function(_0x19e7e8){if(_0x19e7e8){_0x3e18c0[_0x2048('0x2a')]=_0x19e7e8['get']({'plain':!![]});return db[_0x2048('0x64')]['find']({'where':{'id':_0x19e7e8[_0x2048('0x65')]}});}return null;})[_0x2048('0x23')](handleEntityNotFound(_0x5730a5,null))[_0x2048('0x23')](function(_0x13e556){if(_0x13e556){return _0x13e556[_0x2048('0x36')]({'UserId':_0x37f3b2[_0x2048('0x58')][_0x2048('0x61')],'read1stAt':_[_0x2048('0x66')](_0x13e556['read1stAt'])?moment()[_0x2048('0x5f')](_0x2048('0x60')):undefined});}return null;})[_0x2048('0x23')](function(_0x53b41f){if(_0x53b41f){_0x3e18c0[_0x2048('0x67')]=_0x53b41f[_0x2048('0x68')]({'plain':!![]});interaction_log[_0x2048('0x2b')](_0x2048('0x69'),_0x37f3b2[_0x2048('0x62')]['id'],_0x37f3b2[_0x2048('0x62')][_0x2048('0x39')],_0x37f3b2[_0x2048('0x62')][_0x2048('0x6a')],_0x3e18c0['interaction']['id'],_0x37f3b2[_0x2048('0x58')]?JSON[_0x2048('0x27')](_0x37f3b2['body']):'null');return respondWithRpcPromise(_0x2048('0x6b'),'acceptMessage',_0x3e18c0);}return null;})[_0x2048('0x23')](function(_0x29eee5){var _0x41c352=_0x2048('0x6c')+_0x29eee5[_0x2048('0x2a')]['ContactId'];return db[_0x2048('0x6d')][_0x2048('0x41')](_0x41c352,{'type':db['Sequelize'][_0x2048('0x6e')][_0x2048('0x6f')],'raw':!![]})[_0x2048('0x23')](function(_0x4220e6){return _0x4220e6;});})[_0x2048('0x23')](function(_0xe5d538){if(_0xe5d538){_0x3e18c0[_0x2048('0x2a')][_0x2048('0x70')]=_0xe5d538[0x0];if(!_0x37f3b2[_0x2048('0x58')]['UserId'])return;return db[_0x2048('0x71')][_0x2048('0x56')]({'where':{'id':_0x37f3b2[_0x2048('0x58')][_0x2048('0x61')],'role':_0x2048('0x63')},'attributes':['id','name',_0x2048('0x72'),_0x2048('0x73'),_0x2048('0x74')],'raw':!![]});}return null;})[_0x2048('0x23')](function(_0x39f30f){if(!_0x39f30f)return null;_0x3e18c0[_0x2048('0x2a')][_0x2048('0x63')]=_0x39f30f;return _0x3e18c0;})[_0x2048('0x23')](function(_0x1c898e){if(_0x1c898e){if(_0x37f3b2[_0x2048('0x58')]['manual']){_0x3e18c0[_0x2048('0x2a')][_0x2048('0x75')]=util[_0x2048('0x5f')](_0x2048('0x76'),_0x37f3b2['user'][_0x2048('0x39')]);_0x3e18c0[_0x2048('0x2a')][_0x2048('0x77')]=_0x3e18c0[_0x2048('0x77')];_0x3e18c0[_0x2048('0x2a')][_0x2048('0x78')]=_0x3e18c0[_0x2048('0x77')];_0x3e18c0[_0x2048('0x2a')][_0x2048('0x79')]=_0x2048('0x5c');return respondWithRpcPromise(_0x2048('0x7a'),'EventManager',{'event':_0x2048('0x7b'),'message':_[_0x2048('0x4d')](_0x3e18c0[_0x2048('0x2a')],JSON['parse'](_0x3e18c0[_0x2048('0x67')][_0x2048('0x7c')]))},client9002)[_0x2048('0x23')](function(){return _0x3e18c0;});}return _0x3e18c0;}return null;})[_0x2048('0x23')](respondWithResult(_0x5730a5,null))['catch'](handleError(_0x5730a5,null));};var interaction_log=require('../../config/logger')(_0x2048('0x5b'));exports[_0x2048('0x35')]=function(_0x23a044,_0x1e5679,_0x2dbeb7){var _0x56f7ea={'agent':{},'channel':'chat'};if(_0x23a044[_0x2048('0x58')]['id']){delete _0x23a044[_0x2048('0x58')]['id'];}_0x23a044[_0x2048('0x58')][_0x2048('0x61')]=_0x23a044[_0x2048('0x58')]['UserId']||_0x23a044['user']['id'];_0x56f7ea[_0x2048('0x63')]['id']=_0x23a044[_0x2048('0x58')][_0x2048('0x61')];return db[_0x2048('0x3d')][_0x2048('0x56')]({'where':{'id':_0x23a044['params']['id'],'UserId':null}})[_0x2048('0x23')](handleEntityNotFound(_0x1e5679,null))[_0x2048('0x23')](function(_0xe2adea){if(_0xe2adea){_0x56f7ea[_0x2048('0x2a')]=_0xe2adea[_0x2048('0x68')]({'plain':!![]});return db[_0x2048('0x64')][_0x2048('0x56')]({'where':{'id':_0xe2adea[_0x2048('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x1e5679,null))[_0x2048('0x23')](function(_0x58e27a){if(_0x58e27a){_0x56f7ea['interaction']=_0x58e27a[_0x2048('0x68')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x23a044[_0x2048('0x62')]['id'],_0x23a044[_0x2048('0x62')]['name'],_0x23a044['user'][_0x2048('0x6a')],_0x56f7ea[_0x2048('0x67')]['id'],_0x23a044[_0x2048('0x58')]?JSON[_0x2048('0x27')](_0x23a044['body']):'null');return respondWithRpcPromise('RejectMessage',_0x2048('0x7d'),_0x56f7ea);}return null;})[_0x2048('0x23')](function(_0x1cbc34){var _0x36c19a=_0x2048('0x6c')+_0x1cbc34[_0x2048('0x2a')][_0x2048('0x7e')];return db[_0x2048('0x6d')]['query'](_0x36c19a,{'type':db[_0x2048('0x7f')][_0x2048('0x6e')][_0x2048('0x6f')],'raw':!![]})[_0x2048('0x23')](function(_0x5a73bb){return _0x5a73bb;});})[_0x2048('0x23')](function(_0xc8d44c){if(_0xc8d44c){_0x56f7ea[_0x2048('0x2a')]['contact']=_0xc8d44c[0x0];if(!_0x23a044[_0x2048('0x58')][_0x2048('0x61')])return;return db['User']['find']({'where':{'id':_0x23a044[_0x2048('0x58')]['UserId'],'role':_0x2048('0x63')},'attributes':['id',_0x2048('0x39'),_0x2048('0x72'),_0x2048('0x73'),_0x2048('0x74')],'raw':!![]});}return null;})['then'](function(_0x507855){if(!_0x507855)return null;_0x56f7ea['message']['agent']=_0x507855;return _0x56f7ea;})['then'](function(_0x321c75){if(_0x321c75){_0x321c75['message'][_0x2048('0x75')]=util[_0x2048('0x5f')](_0x2048('0x76'),_0x23a044['user'][_0x2048('0x39')]);_0x321c75['message'][_0x2048('0x77')]=_0x56f7ea[_0x2048('0x77')];_0x321c75[_0x2048('0x2a')][_0x2048('0x78')]=_0x56f7ea[_0x2048('0x77')];_0x321c75[_0x2048('0x2a')][_0x2048('0x79')]=_0x2048('0x35');respondWithRpcPromise(_0x2048('0x7a'),'EventManager',{'event':'rejectmessage','message':_[_0x2048('0x4d')](_0x56f7ea[_0x2048('0x2a')],JSON[_0x2048('0x80')](_0x56f7ea[_0x2048('0x67')][_0x2048('0x7c')]))},client9002);return _0x56f7ea;}return null;})['then'](respondWithResult(_0x1e5679,null))['catch'](handleError(_0x1e5679,null));};
\ No newline at end of file
index 76b90c1..50e407b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3285=['exports','events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x14d3df,_0x3041de){var _0x149bc0=function(_0x5475eb){while(--_0x5475eb){_0x14d3df['push'](_0x14d3df['shift']());}};_0x149bc0(++_0x3041de);}(_0x3285,0x1b9));var _0x5328=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0x3285[_0x1d24eb];return _0x1dc576;};'use strict';var EventEmitter=require(_0x5328('0x0'));var ChatMessage=require(_0x5328('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x5328('0x2')](0x0);var events={'afterCreate':_0x5328('0x3'),'afterUpdate':'update','afterDestroy':_0x5328('0x4')};function emitEvent(_0x45e262){return function(_0x51804e,_0x577787,_0x719cf8){ChatMessageEvents[_0x5328('0x5')](_0x45e262+':'+_0x51804e['id'],_0x51804e);ChatMessageEvents[_0x5328('0x5')](_0x45e262,_0x51804e);_0x719cf8(null);};}for(var e in events){if(events[_0x5328('0x6')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x5328('0x7')]=ChatMessageEvents;
\ No newline at end of file
+var _0xe3b0=['save','update','remove','hook','exports','events','ChatMessage'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe3b0,0x19b));var _0x0e3b=function(_0xf0bc07,_0x510ebf){_0xf0bc07=_0xf0bc07-0x0;var _0x1c50c2=_0xe3b0[_0xf0bc07];return _0x1c50c2;};'use strict';var EventEmitter=require(_0x0e3b('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x0e3b('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0e3b('0x2'),'afterUpdate':_0x0e3b('0x3'),'afterDestroy':_0x0e3b('0x4')};function emitEvent(_0x30c675){return function(_0x3d80dd,_0x1a89a1,_0x497ac9){ChatMessageEvents['emit'](_0x30c675+':'+_0x3d80dd['id'],_0x3d80dd);ChatMessageEvents['emit'](_0x30c675,_0x3d80dd);_0x497ac9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x0e3b('0x5')](e,emitEvent(event));}}module[_0x0e3b('0x6')]=ChatMessageEvents;
\ No newline at end of file
index dcb4ec7..26e55d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee9f=['catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','ChatInteraction','findOne','ChatInteractionId','update','createdAt'];(function(_0x46ed1e,_0x1a4610){var _0x1ed287=function(_0x1c1ae1){while(--_0x1c1ae1){_0x46ed1e['push'](_0x46ed1e['shift']());}};_0x1ed287(++_0x1a4610);}(_0xee9f,0x77));var _0xfee9=function(_0x497e54,_0xe87cd3){_0x497e54=_0x497e54-0x0;var _0x20d9ca=_0xee9f[_0x497e54];return _0x20d9ca;};'use strict';var _=require(_0xfee9('0x0'));var util=require(_0xfee9('0x1'));var logger=require(_0xfee9('0x2'))(_0xfee9('0x3'));var moment=require(_0xfee9('0x4'));var BPromise=require('bluebird');var rp=require(_0xfee9('0x5'));var fs=require('fs');var path=require(_0xfee9('0x6'));var rimraf=require(_0xfee9('0x7'));var config=require(_0xfee9('0x8'));var attributes=require('./chatMessage.attributes');module['exports']=function(_0x35248f,_0x551053){return _0x35248f[_0xfee9('0x9')](_0xfee9('0xa'),attributes,{'tableName':_0xfee9('0xb'),'paranoid':![],'indexes':[{'name':_0xfee9('0xc'),'fields':[_0xfee9('0xd')],'type':_0xfee9('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x701b8c,_0x6e44d4,_0x332c0e){var _0x4bd15d=_0x35248f[_0xfee9('0xf')];var _0x43444f=_0x701b8c[_0xfee9('0x10')]({'plain':!![]});if(_0x43444f[_0xfee9('0x11')]['toLowerCase']()==='in'||_0x43444f[_0xfee9('0x11')][_0xfee9('0x12')]()==='out'&&!_0x43444f[_0xfee9('0x13')]&&!_[_0xfee9('0x14')](_0x43444f['UserId'])){_0x4bd15d[_0xfee9('0x15')][_0xfee9('0x16')]({'where':{'id':_0x43444f[_0xfee9('0x17')]}})['then'](function(_0x5c7995){if(_0x5c7995){_0x5c7995[_0xfee9('0x18')]({'lastMsgAt':_0x43444f[_0xfee9('0x19')],'lastMsgDirection':_0x43444f[_0xfee9('0x11')]['toLowerCase']()});}})[_0xfee9('0x1a')](function(_0x53e2ca){console[_0xfee9('0x1b')](_0x53e2ca);});}_0x332c0e();}},'charset':'utf8mb4','collate':_0xfee9('0x1c')});};
\ No newline at end of file
+var _0x9a7a=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','models','toLowerCase','out','secret','isNil','UserId','ChatInteractionId','then','update','createdAt','direction','error','utf8mb4_unicode_ci'];(function(_0x1d6ed3,_0x45e45d){var _0x219f76=function(_0xfa08ae){while(--_0xfa08ae){_0x1d6ed3['push'](_0x1d6ed3['shift']());}};_0x219f76(++_0x45e45d);}(_0x9a7a,0x78));var _0xa9a7=function(_0x4dd479,_0x26d87a){_0x4dd479=_0x4dd479-0x0;var _0x1b6807=_0x9a7a[_0x4dd479];return _0x1b6807;};'use strict';var _=require(_0xa9a7('0x0'));var util=require(_0xa9a7('0x1'));var logger=require(_0xa9a7('0x2'))(_0xa9a7('0x3'));var moment=require(_0xa9a7('0x4'));var BPromise=require(_0xa9a7('0x5'));var rp=require(_0xa9a7('0x6'));var fs=require('fs');var path=require(_0xa9a7('0x7'));var rimraf=require(_0xa9a7('0x8'));var config=require(_0xa9a7('0x9'));var attributes=require(_0xa9a7('0xa'));module[_0xa9a7('0xb')]=function(_0x553c44,_0x337432){return _0x553c44[_0xa9a7('0xc')](_0xa9a7('0xd'),attributes,{'tableName':_0xa9a7('0xe'),'paranoid':![],'indexes':[{'name':_0xa9a7('0xf'),'fields':[_0xa9a7('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4283bb,_0x3f9550,_0x552fca){var _0x29fcb9=_0x553c44[_0xa9a7('0x11')];var _0x1b082f=_0x4283bb['get']({'plain':!![]});if(_0x1b082f['direction'][_0xa9a7('0x12')]()==='in'||_0x1b082f['direction'][_0xa9a7('0x12')]()===_0xa9a7('0x13')&&!_0x1b082f[_0xa9a7('0x14')]&&!_[_0xa9a7('0x15')](_0x1b082f[_0xa9a7('0x16')])){_0x29fcb9['ChatInteraction']['findOne']({'where':{'id':_0x1b082f[_0xa9a7('0x17')]}})[_0xa9a7('0x18')](function(_0x13b92f){if(_0x13b92f){_0x13b92f[_0xa9a7('0x19')]({'lastMsgAt':_0x1b082f[_0xa9a7('0x1a')],'lastMsgDirection':_0x1b082f[_0xa9a7('0x1b')][_0xa9a7('0x12')]()});}})['catch'](function(_0x439132){console[_0xa9a7('0x1c')](_0x439132);});}_0x552fca();}},'charset':'utf8mb4','collate':_0xa9a7('0x1d')});};
\ No newline at end of file
index f7cee4e..8ffb890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0500=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateChatMessage','body','options','raw','stringify','lodash','moment','bluebird','randomstring','ioredis'];(function(_0xa21f5d,_0x1bef49){var _0x5e2e60=function(_0xb3dd03){while(--_0xb3dd03){_0xa21f5d['push'](_0xa21f5d['shift']());}};_0x5e2e60(++_0x1bef49);}(_0x0500,0x1db));var _0x0050=function(_0x3b4724,_0x54a601){_0x3b4724=_0x3b4724-0x0;var _0x4a0c68=_0x0500[_0x3b4724];return _0x4a0c68;};'use strict';var _=require(_0x0050('0x0'));var util=require('util');var moment=require(_0x0050('0x1'));var BPromise=require(_0x0050('0x2'));var rs=require(_0x0050('0x3'));var fs=require('fs');var Redis=require(_0x0050('0x4'));var db=require(_0x0050('0x5'))['db'];var utils=require(_0x0050('0x6'));var logger=require(_0x0050('0x7'))(_0x0050('0x8'));var config=require(_0x0050('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0050('0xa')][_0x0050('0xb')]({'port':0x232a});config[_0x0050('0xc')]=_['defaults'](config[_0x0050('0xc')],{'host':_0x0050('0xd'),'port':0x18eb});var socket=require(_0x0050('0xe'))(new Redis(config[_0x0050('0xc')]));require('./chatMessage.socket')['register'](socket);function respondWithRpcPromise(_0x232b05,_0x23241e,_0x3ad465){return new BPromise(function(_0x504c64,_0x54e8f1){return client[_0x0050('0xf')](_0x232b05,_0x3ad465)[_0x0050('0x10')](function(_0x58e341){logger[_0x0050('0x11')](_0x0050('0x12'),_0x23241e,_0x0050('0x13'));logger[_0x0050('0x14')](_0x0050('0x15'),_0x23241e,_0x0050('0x13'),JSON['stringify'](_0x58e341));if(_0x58e341[_0x0050('0x16')]){if(_0x58e341[_0x0050('0x16')][_0x0050('0x17')]===0x1f4){logger[_0x0050('0x16')](_0x0050('0x12'),_0x23241e,_0x58e341[_0x0050('0x16')][_0x0050('0x18')]);return _0x54e8f1(_0x58e341['error'][_0x0050('0x18')]);}logger[_0x0050('0x16')]('ChatMessage,\x20%s,\x20%s',_0x23241e,_0x58e341['error'][_0x0050('0x18')]);return _0x504c64(_0x58e341[_0x0050('0x16')][_0x0050('0x18')]);}else{logger['info'](_0x0050('0x12'),_0x23241e,'request\x20sent');_0x504c64(_0x58e341[_0x0050('0x19')][_0x0050('0x18')]);}})[_0x0050('0x1a')](function(_0x4a9716){logger['error']('ChatMessage,\x20%s,\x20%s',_0x23241e,_0x4a9716);_0x54e8f1(_0x4a9716);});});}exports[_0x0050('0x1b')]=function(_0x1af09b){var _0x430759=this;return new Promise(function(_0x4911b6,_0x1ecc11){return db['ChatMessage']['create'](_0x1af09b[_0x0050('0x1c')],{'raw':_0x1af09b[_0x0050('0x1d')]?_0x1af09b['options'][_0x0050('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x429bde){logger['info'](_0x0050('0x1b'),_0x1af09b);logger[_0x0050('0x14')](_0x0050('0x1b'),_0x1af09b,JSON[_0x0050('0x1f')](_0x429bde));_0x4911b6(_0x429bde);})[_0x0050('0x1a')](function(_0x26a6e5){logger[_0x0050('0x16')](_0x0050('0x1b'),_0x26a6e5[_0x0050('0x18')],_0x1af09b);_0x1ecc11(_0x430759[_0x0050('0x16')](0x1f4,_0x26a6e5[_0x0050('0x18')]));});});};
\ No newline at end of file
+var _0x256d=['catch','CreateChatMessage','ChatMessage','create','body','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x256d,0x70));var _0xd256=function(_0xe8129c,_0x2fb03c){_0xe8129c=_0xe8129c-0x0;var _0x709fc5=_0x256d[_0xe8129c];return _0x709fc5;};'use strict';var _=require(_0xd256('0x0'));var util=require(_0xd256('0x1'));var moment=require(_0xd256('0x2'));var BPromise=require(_0xd256('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd256('0x4'));var db=require(_0xd256('0x5'))['db'];var utils=require(_0xd256('0x6'));var logger=require(_0xd256('0x7'))(_0xd256('0x8'));var config=require('../../config/environment');var jayson=require(_0xd256('0x9'));var client=jayson[_0xd256('0xa')][_0xd256('0xb')]({'port':0x232a});config[_0xd256('0xc')]=_['defaults'](config['redis'],{'host':_0xd256('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd256('0xc')]));require(_0xd256('0xe'))[_0xd256('0xf')](socket);function respondWithRpcPromise(_0x3dbc24,_0x93cd1b,_0x2a008a){return new BPromise(function(_0x16747e,_0x11a5d9){return client[_0xd256('0x10')](_0x3dbc24,_0x2a008a)[_0xd256('0x11')](function(_0x18b21d){logger[_0xd256('0x12')](_0xd256('0x13'),_0x93cd1b,_0xd256('0x14'));logger[_0xd256('0x15')](_0xd256('0x16'),_0x93cd1b,'request\x20sent',JSON[_0xd256('0x17')](_0x18b21d));if(_0x18b21d[_0xd256('0x18')]){if(_0x18b21d[_0xd256('0x18')][_0xd256('0x19')]===0x1f4){logger[_0xd256('0x18')]('ChatMessage,\x20%s,\x20%s',_0x93cd1b,_0x18b21d[_0xd256('0x18')][_0xd256('0x1a')]);return _0x11a5d9(_0x18b21d[_0xd256('0x18')][_0xd256('0x1a')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x93cd1b,_0x18b21d[_0xd256('0x18')][_0xd256('0x1a')]);return _0x16747e(_0x18b21d[_0xd256('0x18')][_0xd256('0x1a')]);}else{logger[_0xd256('0x12')]('ChatMessage,\x20%s,\x20%s',_0x93cd1b,_0xd256('0x14'));_0x16747e(_0x18b21d[_0xd256('0x1b')][_0xd256('0x1a')]);}})[_0xd256('0x1c')](function(_0x549ee3){logger[_0xd256('0x18')](_0xd256('0x13'),_0x93cd1b,_0x549ee3);_0x11a5d9(_0x549ee3);});});}exports[_0xd256('0x1d')]=function(_0x2e1902){var _0x25a77b=this;return new Promise(function(_0x482fe1,_0x3b2281){return db[_0xd256('0x1e')][_0xd256('0x1f')](_0x2e1902[_0xd256('0x20')],{'raw':_0x2e1902[_0xd256('0x21')]?_0x2e1902[_0xd256('0x21')][_0xd256('0x22')]===undefined?!![]:![]:!![]})['then'](function(_0x3fd64f){logger[_0xd256('0x12')]('CreateChatMessage',_0x2e1902);logger[_0xd256('0x15')](_0xd256('0x1d'),_0x2e1902,JSON[_0xd256('0x17')](_0x3fd64f));_0x482fe1(_0x3fd64f);})['catch'](function(_0x8658a2){logger[_0xd256('0x18')](_0xd256('0x1d'),_0x8658a2[_0xd256('0x1a')],_0x2e1902);_0x3b2281(_0x25a77b[_0xd256('0x18')](0x1f4,_0x8658a2[_0xd256('0x1a')]));});});};
\ No newline at end of file
index 72bcfba..df78925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950a=['chatMessage:','./chatMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x950a,0x111));var _0xa950=function(_0x1e8402,_0x3ca008){_0x1e8402=_0x1e8402-0x0;var _0x5f07a2=_0x950a[_0x1e8402];return _0x5f07a2;};'use strict';var ChatMessageEvents=require(_0xa950('0x0'));var events=[_0xa950('0x1'),_0xa950('0x2'),_0xa950('0x3')];function createListener(_0x5569f7,_0x305b26){return function(_0xa583df){_0x305b26[_0xa950('0x4')](_0x5569f7,_0xa583df);};}function removeListener(_0x2c80ed,_0x5cd4aa){return function(){ChatMessageEvents[_0xa950('0x5')](_0x2c80ed,_0x5cd4aa);};}exports[_0xa950('0x6')]=function(_0x512c0e){for(var _0x14b4ac=0x0,_0x3645b6=events['length'];_0x14b4ac<_0x3645b6;_0x14b4ac++){var _0x5675f8=events[_0x14b4ac];var _0x26e05c=createListener(_0xa950('0x7')+_0x5675f8,_0x512c0e);ChatMessageEvents['on'](_0x5675f8,_0x26e05c);}};
\ No newline at end of file
+var _0x0e76=['emit','register','length','chatMessage:','./chatMessage.events','update'];(function(_0x12e3e3,_0x501eaf){var _0x26602e=function(_0x427882){while(--_0x427882){_0x12e3e3['push'](_0x12e3e3['shift']());}};_0x26602e(++_0x501eaf);}(_0x0e76,0xc4));var _0x60e7=function(_0xe9e6cf,_0x395f6d){_0xe9e6cf=_0xe9e6cf-0x0;var _0x2b8851=_0x0e76[_0xe9e6cf];return _0x2b8851;};'use strict';var ChatMessageEvents=require(_0x60e7('0x0'));var events=['save','remove',_0x60e7('0x1')];function createListener(_0x4d71bb,_0x21402c){return function(_0x6f8f6e){_0x21402c[_0x60e7('0x2')](_0x4d71bb,_0x6f8f6e);};}function removeListener(_0xd3886,_0x2f1ad1){return function(){ChatMessageEvents['removeListener'](_0xd3886,_0x2f1ad1);};}exports[_0x60e7('0x3')]=function(_0x35b628){for(var _0x1fb45c=0x0,_0xba29ef=events[_0x60e7('0x4')];_0x1fb45c<_0xba29ef;_0x1fb45c++){var _0x194535=events[_0x1fb45c];var _0x4a15f2=createListener(_0x60e7('0x5')+_0x194535,_0x35b628);ChatMessageEvents['on'](_0x194535,_0x4a15f2);}};
\ No newline at end of file
index 5f00e5b..e62e5b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0d4=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','post','tracked','chat','create','put','/:id','update','/:id/accept','accept','/:id/reject','reject','exports','multer','util','path','connect-timeout','express'];(function(_0xf7069a,_0xbb1ef3){var _0xeeccd=function(_0x4ef17e){while(--_0x4ef17e){_0xf7069a['push'](_0xf7069a['shift']());}};_0xeeccd(++_0xbb1ef3);}(_0xe0d4,0x14b));var _0x4e0d=function(_0x5d2e16,_0x2906c9){_0x5d2e16=_0x5d2e16-0x0;var _0x4704de=_0xe0d4[_0x5d2e16];return _0x4704de;};'use strict';var multer=require(_0x4e0d('0x0'));var util=require(_0x4e0d('0x1'));var path=require(_0x4e0d('0x2'));var timeout=require(_0x4e0d('0x3'));var express=require(_0x4e0d('0x4'));var router=express[_0x4e0d('0x5')]();var fs_extra=require(_0x4e0d('0x6'));var auth=require(_0x4e0d('0x7'));var interaction=require(_0x4e0d('0x8'));var config=require(_0x4e0d('0x9'));var controller=require(_0x4e0d('0xa'));router[_0x4e0d('0xb')]('/',auth[_0x4e0d('0xc')](),controller[_0x4e0d('0xd')]);router['get'](_0x4e0d('0xe'),auth[_0x4e0d('0xc')](),controller[_0x4e0d('0xf')]);router[_0x4e0d('0xb')]('/:id',auth[_0x4e0d('0xc')](),controller['show']);router[_0x4e0d('0x10')]('/',auth[_0x4e0d('0xc')](),interaction[_0x4e0d('0x11')](_0x4e0d('0x12'),'chatmessage:create'),controller[_0x4e0d('0x13')]);router[_0x4e0d('0x14')](_0x4e0d('0x15'),controller[_0x4e0d('0x16')]);router[_0x4e0d('0x14')](_0x4e0d('0x17'),auth[_0x4e0d('0xc')](),controller[_0x4e0d('0x18')]);router[_0x4e0d('0x14')](_0x4e0d('0x19'),auth[_0x4e0d('0xc')](),controller[_0x4e0d('0x1a')]);router['delete']('/:id',auth[_0x4e0d('0xc')](),controller['destroy']);module[_0x4e0d('0x1b')]=router;
\ No newline at end of file
+var _0x2a1b=['reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','post','tracked','chat','create','put','accept','/:id/reject'];(function(_0x8e9386,_0x3cc60f){var _0x4abf26=function(_0x59de5a){while(--_0x59de5a){_0x8e9386['push'](_0x8e9386['shift']());}};_0x4abf26(++_0x3cc60f);}(_0x2a1b,0x1b4));var _0xb2a1=function(_0x3afd0e,_0x3b79ba){_0x3afd0e=_0x3afd0e-0x0;var _0x163560=_0x2a1b[_0x3afd0e];return _0x163560;};'use strict';var multer=require(_0xb2a1('0x0'));var util=require(_0xb2a1('0x1'));var path=require('path');var timeout=require(_0xb2a1('0x2'));var express=require(_0xb2a1('0x3'));var router=express[_0xb2a1('0x4')]();var fs_extra=require(_0xb2a1('0x5'));var auth=require(_0xb2a1('0x6'));var interaction=require(_0xb2a1('0x7'));var config=require('../../config/environment');var controller=require('./chatMessage.controller');router[_0xb2a1('0x8')]('/',auth[_0xb2a1('0x9')](),controller['index']);router[_0xb2a1('0x8')](_0xb2a1('0xa'),auth[_0xb2a1('0x9')](),controller[_0xb2a1('0xb')]);router[_0xb2a1('0x8')](_0xb2a1('0xc'),auth[_0xb2a1('0x9')](),controller['show']);router[_0xb2a1('0xd')]('/',auth[_0xb2a1('0x9')](),interaction[_0xb2a1('0xe')](_0xb2a1('0xf'),'chatmessage:create'),controller[_0xb2a1('0x10')]);router[_0xb2a1('0x11')](_0xb2a1('0xc'),controller['update']);router['put']('/:id/accept',auth[_0xb2a1('0x9')](),controller[_0xb2a1('0x12')]);router[_0xb2a1('0x11')](_0xb2a1('0x13'),auth['isAuthenticated'](),controller[_0xb2a1('0x14')]);router[_0xb2a1('0x15')](_0xb2a1('0xc'),auth['isAuthenticated'](),controller[_0xb2a1('0x16')]);module[_0xb2a1('0x17')]=router;
\ No newline at end of file
index 00d4b29..b9c3d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','TEXT'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x757a,0xde));var _0xa757=function(_0x31577b,_0x23a88c){_0x31577b=_0x31577b-0x0;var _0x515663=_0x757a[_0x31577b];return _0x515663;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'body':{'type':Sequelize[_0xa757('0x1')]('medium'),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT']('medium'),'allowNull':![]}};
\ No newline at end of file
+var _0xdb28=['TEXT','medium','sequelize','exports'];(function(_0x12c78a,_0x48e5ae){var _0x5e7178=function(_0x7e8905){while(--_0x7e8905){_0x12c78a['push'](_0x12c78a['shift']());}};_0x5e7178(++_0x48e5ae);}(_0xdb28,0x106));var _0x8db2=function(_0x1a47cd,_0x37d1eb){_0x1a47cd=_0x1a47cd-0x0;var _0x23a615=_0xdb28[_0x1a47cd];return _0x23a615;};'use strict';var Sequelize=require(_0x8db2('0x0'));module[_0x8db2('0x1')]={'body':{'type':Sequelize[_0x8db2('0x2')](_0x8db2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x8db2('0x3')),'allowNull':![]}};
\ No newline at end of file
index 0e1a44e..de37ea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x2104c8,_0x209843){var _0x4bb6d9=function(_0x465683){while(--_0x465683){_0x2104c8['push'](_0x2104c8['shift']());}};_0x4bb6d9(++_0x209843);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x3b6e50,_0x31216d){var _0x2aea41=function(_0x393ea9){while(--_0x393ea9){_0x3b6e50['push'](_0x3b6e50['shift']());}};_0x2aea41(++_0x31216d);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 9df7525..81e1836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x131a=['../../mysqldb','ChatOfflineMessage','setMaxListeners','remove','emit','hasOwnProperty','events'];(function(_0x1800cb,_0xba50f9){var _0x3b5e95=function(_0x556308){while(--_0x556308){_0x1800cb['push'](_0x1800cb['shift']());}};_0x3b5e95(++_0xba50f9);}(_0x131a,0x12c));var _0xa131=function(_0x4ea9e2,_0x404325){_0x4ea9e2=_0x4ea9e2-0x0;var _0x254bf5=_0x131a[_0x4ea9e2];return _0x254bf5;};'use strict';var EventEmitter=require(_0xa131('0x0'));var ChatOfflineMessage=require(_0xa131('0x1'))['db'][_0xa131('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0xa131('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xa131('0x4')};function emitEvent(_0x321e73){return function(_0x21e434,_0x57b021,_0x500447){ChatOfflineMessageEvents[_0xa131('0x5')](_0x321e73+':'+_0x21e434['id'],_0x21e434);ChatOfflineMessageEvents['emit'](_0x321e73,_0x21e434);_0x500447(null);};}for(var e in events){if(events[_0xa131('0x6')](e)){var event=events[e];ChatOfflineMessage['hook'](e,emitEvent(event));}}module['exports']=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xd85c=['exports','events','../../mysqldb','setMaxListeners','save','update','hook'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd85c,0x15f));var _0xcd85=function(_0x2fe8e1,_0x3552bf){_0x2fe8e1=_0x2fe8e1-0x0;var _0x89bd52=_0xd85c[_0x2fe8e1];return _0x89bd52;};'use strict';var EventEmitter=require(_0xcd85('0x0'));var ChatOfflineMessage=require(_0xcd85('0x1'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0xcd85('0x2')](0x0);var events={'afterCreate':_0xcd85('0x3'),'afterUpdate':_0xcd85('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1d42b7){return function(_0x51b4a4,_0x3dd87c,_0x5a8215){ChatOfflineMessageEvents['emit'](_0x1d42b7+':'+_0x51b4a4['id'],_0x51b4a4);ChatOfflineMessageEvents['emit'](_0x1d42b7,_0x51b4a4);_0x5a8215(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0xcd85('0x5')](e,emitEvent(event));}}module[_0xcd85('0x6')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 43cd682..70e744f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b86=['ChatOfflineMessage','chat_offline_messages','utf8mb4','./chatOfflineMessage.attributes','define'];(function(_0x32108e,_0x1a2a9d){var _0x698692=function(_0x38f2fa){while(--_0x38f2fa){_0x32108e['push'](_0x32108e['shift']());}};_0x698692(++_0x1a2a9d);}(_0x3b86,0x76));var _0x63b8=function(_0x500611,_0x179481){_0x500611=_0x500611-0x0;var _0x379d32=_0x3b86[_0x500611];return _0x379d32;};'use strict';var attributes=require(_0x63b8('0x0'));module['exports']=function(_0x42eed3){return _0x42eed3[_0x63b8('0x1')](_0x63b8('0x2'),attributes,{'tableName':_0x63b8('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x63b8('0x4'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf32d=['utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf32d,0x155));var _0xdf32=function(_0x2fe2f4,_0x159383){_0x2fe2f4=_0x2fe2f4-0x0;var _0x3232a3=_0xf32d[_0x2fe2f4];return _0x3232a3;};'use strict';var attributes=require(_0xdf32('0x0'));module[_0xdf32('0x1')]=function(_0x17080f){return _0x17080f[_0xdf32('0x2')]('ChatOfflineMessage',attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xdf32('0x3')});};
\ No newline at end of file
index 597b113..67eb966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b7=['request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0xb6b7,0xe4));var _0x7b6b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xb6b7[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x7b6b('0x0'));var util=require(_0x7b6b('0x1'));var moment=require(_0x7b6b('0x2'));var BPromise=require(_0x7b6b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b6b('0x4'))['db'];var utils=require(_0x7b6b('0x5'));var logger=require(_0x7b6b('0x6'))(_0x7b6b('0x7'));var config=require('../../config/environment');var jayson=require(_0x7b6b('0x8'));var client=jayson[_0x7b6b('0x9')][_0x7b6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32572f,_0x58c566,_0x1bc86b){return new BPromise(function(_0x219300,_0xb2d177){return client[_0x7b6b('0xb')](_0x32572f,_0x1bc86b)['then'](function(_0x429314){logger[_0x7b6b('0xc')](_0x7b6b('0xd'),_0x58c566,_0x7b6b('0xe'));logger[_0x7b6b('0xf')](_0x7b6b('0x10'),_0x58c566,'request\x20sent',JSON[_0x7b6b('0x11')](_0x429314));if(_0x429314[_0x7b6b('0x12')]){if(_0x429314[_0x7b6b('0x12')]['code']===0x1f4){logger[_0x7b6b('0x12')](_0x7b6b('0xd'),_0x58c566,_0x429314[_0x7b6b('0x12')][_0x7b6b('0x13')]);return _0xb2d177(_0x429314[_0x7b6b('0x12')]['message']);}logger[_0x7b6b('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x58c566,_0x429314[_0x7b6b('0x12')][_0x7b6b('0x13')]);return _0x219300(_0x429314[_0x7b6b('0x12')][_0x7b6b('0x13')]);}else{logger[_0x7b6b('0xc')](_0x7b6b('0xd'),_0x58c566,_0x7b6b('0xe'));_0x219300(_0x429314[_0x7b6b('0x14')][_0x7b6b('0x13')]);}})[_0x7b6b('0x15')](function(_0x418e5a){logger[_0x7b6b('0x12')](_0x7b6b('0xd'),_0x58c566,_0x418e5a);_0xb2d177(_0x418e5a);});});}
\ No newline at end of file
+var _0x44c5=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','message','ChatOfflineMessage,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x3b8e87,_0x600848){var _0x49477e=function(_0x1e9af3){while(--_0x1e9af3){_0x3b8e87['push'](_0x3b8e87['shift']());}};_0x49477e(++_0x600848);}(_0x44c5,0x76));var _0x544c=function(_0x3c2166,_0x41fc16){_0x3c2166=_0x3c2166-0x0;var _0x30ccc3=_0x44c5[_0x3c2166];return _0x30ccc3;};'use strict';var _=require(_0x544c('0x0'));var util=require(_0x544c('0x1'));var moment=require(_0x544c('0x2'));var BPromise=require(_0x544c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x544c('0x4'));var db=require(_0x544c('0x5'))['db'];var utils=require(_0x544c('0x6'));var logger=require(_0x544c('0x7'))(_0x544c('0x8'));var config=require(_0x544c('0x9'));var jayson=require(_0x544c('0xa'));var client=jayson[_0x544c('0xb')][_0x544c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1dfaea,_0x28221b,_0x3cc3d5){return new BPromise(function(_0xceea0a,_0x311390){return client[_0x544c('0xd')](_0x1dfaea,_0x3cc3d5)[_0x544c('0xe')](function(_0x4d43e3){logger[_0x544c('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x28221b,_0x544c('0x10'));logger[_0x544c('0x11')](_0x544c('0x12'),_0x28221b,_0x544c('0x10'),JSON['stringify'](_0x4d43e3));if(_0x4d43e3[_0x544c('0x13')]){if(_0x4d43e3['error'][_0x544c('0x14')]===0x1f4){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x28221b,_0x4d43e3['error']['message']);return _0x311390(_0x4d43e3[_0x544c('0x13')][_0x544c('0x15')]);}logger[_0x544c('0x13')](_0x544c('0x16'),_0x28221b,_0x4d43e3[_0x544c('0x13')][_0x544c('0x15')]);return _0xceea0a(_0x4d43e3[_0x544c('0x13')]['message']);}else{logger[_0x544c('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x28221b,_0x544c('0x10'));_0xceea0a(_0x4d43e3[_0x544c('0x17')][_0x544c('0x15')]);}})[_0x544c('0x18')](function(_0x50ba92){logger['error'](_0x544c('0x16'),_0x28221b,_0x50ba92);_0x311390(_0x50ba92);});});}
\ No newline at end of file
index 4464a42..9566bc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3738=['update','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3738,0xa3));var _0x8373=function(_0x5a9230,_0x576120){_0x5a9230=_0x5a9230-0x0;var _0x33d56e=_0x3738[_0x5a9230];return _0x33d56e;};'use strict';var multer=require('multer');var util=require(_0x8373('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8373('0x1'));var router=express[_0x8373('0x2')]();var fs_extra=require(_0x8373('0x3'));var auth=require(_0x8373('0x4'));var interaction=require(_0x8373('0x5'));var config=require('../../config/environment');var controller=require(_0x8373('0x6'));router[_0x8373('0x7')]('/',auth[_0x8373('0x8')](),controller[_0x8373('0x9')]);router[_0x8373('0x7')](_0x8373('0xa'),auth[_0x8373('0x8')](),controller[_0x8373('0xb')]);router[_0x8373('0x7')](_0x8373('0xc'),auth[_0x8373('0x8')](),controller[_0x8373('0xd')]);router[_0x8373('0xe')]('/',auth['isAuthenticated'](),controller[_0x8373('0xf')]);router[_0x8373('0x10')](_0x8373('0xc'),auth['isAuthenticated'](),controller[_0x8373('0x11')]);router['delete'](_0x8373('0xc'),auth[_0x8373('0x8')](),controller[_0x8373('0x12')]);module[_0x8373('0x13')]=router;
\ No newline at end of file
+var _0x38cd=['show','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','index','/describe','describe','/:id','isAuthenticated'];(function(_0x5f1248,_0x3fcd97){var _0x3dc5fa=function(_0x52225b){while(--_0x52225b){_0x5f1248['push'](_0x5f1248['shift']());}};_0x3dc5fa(++_0x3fcd97);}(_0x38cd,0x1c1));var _0xd38c=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x38cd[_0x2a6809];return _0x11c371;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd38c('0x0'));var timeout=require(_0xd38c('0x1'));var express=require(_0xd38c('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd38c('0x3'));var interaction=require(_0xd38c('0x4'));var config=require(_0xd38c('0x5'));var controller=require(_0xd38c('0x6'));router[_0xd38c('0x7')]('/',auth['isAuthenticated'](),controller[_0xd38c('0x8')]);router['get'](_0xd38c('0x9'),auth['isAuthenticated'](),controller[_0xd38c('0xa')]);router[_0xd38c('0x7')](_0xd38c('0xb'),auth[_0xd38c('0xc')](),controller[_0xd38c('0xd')]);router[_0xd38c('0xe')]('/',auth['isAuthenticated'](),controller[_0xd38c('0xf')]);router[_0xd38c('0x10')]('/:id',auth[_0xd38c('0xc')](),controller[_0xd38c('0x11')]);router[_0xd38c('0x12')]('/:id',auth[_0xd38c('0xc')](),controller[_0xd38c('0x13')]);module[_0xd38c('0x14')]=router;
\ No newline at end of file
index 0419616..f1284c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0044=['INTEGER','sequelize','STRING','timeout'];(function(_0x13ea36,_0x2805ad){var _0x312066=function(_0xfbee88){while(--_0xfbee88){_0x13ea36['push'](_0x13ea36['shift']());}};_0x312066(++_0x2805ad);}(_0x0044,0x1d5));var _0x4004=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0x0044[_0x4e7d25];return _0x526fe6;};'use strict';var Sequelize=require(_0x4004('0x0'));module['exports']={'name':{'type':Sequelize[_0x4004('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('mouseOver',_0x4004('0x2')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x4004('0x1')]},'timeout':{'type':Sequelize[_0x4004('0x3')]}};
\ No newline at end of file
+var _0xe1d4=['mouseOver','exports','STRING','timeout'];(function(_0x2cb868,_0xb9daef){var _0x3fc057=function(_0x58551f){while(--_0x58551f){_0x2cb868['push'](_0x2cb868['shift']());}};_0x3fc057(++_0xb9daef);}(_0xe1d4,0x149));var _0x4e1d=function(_0x1285dd,_0x48336f){_0x1285dd=_0x1285dd-0x0;var _0x3ac1e5=_0xe1d4[_0x1285dd];return _0x3ac1e5;};'use strict';var Sequelize=require('sequelize');module[_0x4e1d('0x0')]={'name':{'type':Sequelize[_0x4e1d('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('mouseOver',_0x4e1d('0x2')),'defaultValue':_0x4e1d('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 7a10f53..b5362a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8784=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','update','then','sendStatus','error','stack','name','send','show','params','keys','ChatProactiveAction','query','filters','intersection','model','attributes','fields','includeAll','merge','options','find','create','catch','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox'];(function(_0x41bee2,_0x2c7329){var _0x3743a6=function(_0x3a68b9){while(--_0x3a68b9){_0x41bee2['push'](_0x41bee2['shift']());}};_0x3743a6(++_0x2c7329);}(_0x8784,0x172));var _0x4878=function(_0x513f27,_0x1cbc87){_0x513f27=_0x513f27-0x0;var _0xa316b7=_0x8784[_0x513f27];return _0xa316b7;};'use strict';var emlformat=require(_0x4878('0x0'));var rimraf=require(_0x4878('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4878('0x2'));var rp=require(_0x4878('0x3'));var moment=require(_0x4878('0x4'));var BPromise=require(_0x4878('0x5'));var Mustache=require(_0x4878('0x6'));var util=require('util');var path=require('path');var sox=require(_0x4878('0x7'));var csv=require(_0x4878('0x8'));var ejs=require(_0x4878('0x9'));var fs=require('fs');var fs_extra=require(_0x4878('0xa'));var _=require(_0x4878('0xb'));var squel=require(_0x4878('0xc'));var crypto=require(_0x4878('0xd'));var jsforce=require(_0x4878('0xe'));var deskjs=require(_0x4878('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4878('0x10'));var Papa=require(_0x4878('0x11'));var Redis=require(_0x4878('0x12'));var authService=require(_0x4878('0x13'));var qs=require(_0x4878('0x14'));var as=require(_0x4878('0x15'));var hardwareService=require(_0x4878('0x16'));var logger=require(_0x4878('0x17'))(_0x4878('0x18'));var utils=require(_0x4878('0x19'));var config=require(_0x4878('0x1a'));var licenseUtil=require(_0x4878('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa3b6c,_0x462485){_0x462485=_0x462485||0xcc;return function(_0x188e81){if(_0x188e81){return _0xa3b6c['sendStatus'](_0x462485);}return _0xa3b6c[_0x4878('0x1c')](_0x462485)[_0x4878('0x1d')]();};}function respondWithResult(_0x4f6486,_0x32c5ea){_0x32c5ea=_0x32c5ea||0xc8;return function(_0x5e67cc){if(_0x5e67cc){return _0x4f6486['status'](_0x32c5ea)[_0x4878('0x1e')](_0x5e67cc);}};}function respondWithFilteredResult(_0x41fefd,_0x2b7ccc){return function(_0x297b43){if(_0x297b43){var _0x37a150=typeof _0x2b7ccc['offset']===_0x4878('0x1f')&&typeof _0x2b7ccc[_0x4878('0x20')]==='undefined';var _0x4319a8=_0x297b43['count'];var _0x2c2529=_0x37a150?0x0:_0x2b7ccc['offset'];var _0x5267ff=_0x37a150?_0x297b43[_0x4878('0x21')]:_0x2b7ccc[_0x4878('0x22')]+_0x2b7ccc[_0x4878('0x20')];var _0x3219f7;if(_0x5267ff>=_0x4319a8){_0x5267ff=_0x4319a8;_0x3219f7=0xc8;}else{_0x3219f7=0xce;}_0x41fefd[_0x4878('0x1c')](_0x3219f7);return _0x41fefd['set'](_0x4878('0x23'),_0x2c2529+'-'+_0x5267ff+'/'+_0x4319a8)[_0x4878('0x1e')](_0x297b43);}return null;};}function patchUpdates(_0x35a0e1){return function(_0x436f62){try{jsonpatch[_0x4878('0x24')](_0x436f62,_0x35a0e1,!![]);}catch(_0x3ffa0c){return BPromise['reject'](_0x3ffa0c);}return _0x436f62[_0x4878('0x25')]();};}function saveUpdates(_0x7767d1,_0x3f3f11){return function(_0x5482f5){if(_0x5482f5){return _0x5482f5[_0x4878('0x26')](_0x7767d1)[_0x4878('0x27')](function(_0x57d9b3){return _0x57d9b3;});}return null;};}function removeEntity(_0x21d4d7,_0x10e25d){return function(_0x3b2d57){if(_0x3b2d57){return _0x3b2d57['destroy']()[_0x4878('0x27')](function(){_0x21d4d7[_0x4878('0x1c')](0xcc)[_0x4878('0x1d')]();});}};}function handleEntityNotFound(_0x476ec3,_0x2938f9){return function(_0x5b1222){if(!_0x5b1222){_0x476ec3[_0x4878('0x28')](0x194);}return _0x5b1222;};}function handleError(_0x4458fb,_0x522157){_0x522157=_0x522157||0x1f4;return function(_0x48f8f){logger[_0x4878('0x29')](_0x48f8f[_0x4878('0x2a')]);if(_0x48f8f[_0x4878('0x2b')]){delete _0x48f8f[_0x4878('0x2b')];}_0x4458fb[_0x4878('0x1c')](_0x522157)[_0x4878('0x2c')](_0x48f8f);};}exports[_0x4878('0x2d')]=function(_0xcff66b,_0xe7a731){var _0x3b09f1={'raw':!![],'where':{'id':_0xcff66b[_0x4878('0x2e')]['id']}},_0x38400b={};_0x38400b['model']=_[_0x4878('0x2f')](db[_0x4878('0x30')]['rawAttributes']);_0x38400b['query']=_[_0x4878('0x2f')](_0xcff66b[_0x4878('0x31')]);_0x38400b[_0x4878('0x32')]=_[_0x4878('0x33')](_0x38400b[_0x4878('0x34')],_0x38400b[_0x4878('0x31')]);_0x3b09f1[_0x4878('0x35')]=_['intersection'](_0x38400b[_0x4878('0x34')],qs[_0x4878('0x36')](_0xcff66b[_0x4878('0x31')][_0x4878('0x36')]));_0x3b09f1[_0x4878('0x35')]=_0x3b09f1['attributes']['length']?_0x3b09f1['attributes']:_0x38400b[_0x4878('0x34')];if(_0xcff66b[_0x4878('0x31')][_0x4878('0x37')]){_0x3b09f1['include']=[{'all':!![]}];}_0x3b09f1=_[_0x4878('0x38')]({},_0x3b09f1,_0xcff66b[_0x4878('0x39')]);return db['ChatProactiveAction'][_0x4878('0x3a')](_0x3b09f1)['then'](handleEntityNotFound(_0xe7a731,null))[_0x4878('0x27')](respondWithResult(_0xe7a731,null))['catch'](handleError(_0xe7a731,null));};exports['create']=function(_0x179116,_0x535b44){return db[_0x4878('0x30')][_0x4878('0x3b')](_0x179116['body'],{})[_0x4878('0x27')](respondWithResult(_0x535b44,0xc9))[_0x4878('0x3c')](handleError(_0x535b44,null));};exports['update']=function(_0x1bda87,_0x305f44){if(_0x1bda87['body']['id']){delete _0x1bda87[_0x4878('0x3d')]['id'];}return db['ChatProactiveAction'][_0x4878('0x3a')]({'where':{'id':_0x1bda87[_0x4878('0x2e')]['id']}})[_0x4878('0x27')](handleEntityNotFound(_0x305f44,null))[_0x4878('0x27')](saveUpdates(_0x1bda87['body'],null))[_0x4878('0x27')](respondWithResult(_0x305f44,null))[_0x4878('0x3c')](handleError(_0x305f44,null));};exports[_0x4878('0x3e')]=function(_0x38d6c2,_0x5e1709){return db[_0x4878('0x30')]['find']({'where':{'id':_0x38d6c2[_0x4878('0x2e')]['id']}})[_0x4878('0x27')](handleEntityNotFound(_0x5e1709,null))['then'](removeEntity(_0x5e1709,null))[_0x4878('0x3c')](handleError(_0x5e1709,null));};
\ No newline at end of file
+var _0x212b=['querystring','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','json','apply','reject','save','update','then','destroy','error','name','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js'];(function(_0x3074f1,_0x4901aa){var _0x149af8=function(_0x122725){while(--_0x122725){_0x3074f1['push'](_0x3074f1['shift']());}};_0x149af8(++_0x4901aa);}(_0x212b,0x148));var _0xb212=function(_0x53e093,_0x5ea9e7){_0x53e093=_0x53e093-0x0;var _0x35859c=_0x212b[_0x53e093];return _0x35859c;};'use strict';var emlformat=require(_0xb212('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb212('0x1'));var jsonpatch=require(_0xb212('0x2'));var rp=require(_0xb212('0x3'));var moment=require(_0xb212('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb212('0x5'));var util=require(_0xb212('0x6'));var path=require(_0xb212('0x7'));var sox=require('sox');var csv=require(_0xb212('0x8'));var ejs=require(_0xb212('0x9'));var fs=require('fs');var fs_extra=require(_0xb212('0xa'));var _=require('lodash');var squel=require(_0xb212('0xb'));var crypto=require(_0xb212('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb212('0xd'));var toCsv=require(_0xb212('0x8'));var querystring=require(_0xb212('0xe'));var Papa=require('papaparse');var Redis=require(_0xb212('0xf'));var authService=require(_0xb212('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb212('0x11'))('api');var utils=require(_0xb212('0x12'));var config=require(_0xb212('0x13'));var licenseUtil=require(_0xb212('0x14'));var db=require(_0xb212('0x15'))['db'];function respondWithStatusCode(_0x41eba8,_0x1dd322){_0x1dd322=_0x1dd322||0xcc;return function(_0x11ea42){if(_0x11ea42){return _0x41eba8[_0xb212('0x16')](_0x1dd322);}return _0x41eba8[_0xb212('0x17')](_0x1dd322)[_0xb212('0x18')]();};}function respondWithResult(_0x2b64a7,_0x2f12bf){_0x2f12bf=_0x2f12bf||0xc8;return function(_0x5118f5){if(_0x5118f5){return _0x2b64a7['status'](_0x2f12bf)['json'](_0x5118f5);}};}function respondWithFilteredResult(_0x4baa5b,_0x105d4c){return function(_0x11dcab){if(_0x11dcab){var _0x1b2f6d=typeof _0x105d4c['offset']===_0xb212('0x19')&&typeof _0x105d4c[_0xb212('0x1a')]===_0xb212('0x19');var _0xaffb30=_0x11dcab[_0xb212('0x1b')];var _0x267c58=_0x1b2f6d?0x0:_0x105d4c[_0xb212('0x1c')];var _0xe6b2f8=_0x1b2f6d?_0x11dcab[_0xb212('0x1b')]:_0x105d4c[_0xb212('0x1c')]+_0x105d4c[_0xb212('0x1a')];var _0x30f248;if(_0xe6b2f8>=_0xaffb30){_0xe6b2f8=_0xaffb30;_0x30f248=0xc8;}else{_0x30f248=0xce;}_0x4baa5b[_0xb212('0x17')](_0x30f248);return _0x4baa5b['set']('Content-Range',_0x267c58+'-'+_0xe6b2f8+'/'+_0xaffb30)[_0xb212('0x1d')](_0x11dcab);}return null;};}function patchUpdates(_0x409e51){return function(_0x228a57){try{jsonpatch[_0xb212('0x1e')](_0x228a57,_0x409e51,!![]);}catch(_0x1a374d){return BPromise[_0xb212('0x1f')](_0x1a374d);}return _0x228a57[_0xb212('0x20')]();};}function saveUpdates(_0x19fc16,_0x3b9361){return function(_0x30aaba){if(_0x30aaba){return _0x30aaba[_0xb212('0x21')](_0x19fc16)[_0xb212('0x22')](function(_0x114d8f){return _0x114d8f;});}return null;};}function removeEntity(_0x491c3b,_0x5e0c12){return function(_0x25d40e){if(_0x25d40e){return _0x25d40e[_0xb212('0x23')]()[_0xb212('0x22')](function(){_0x491c3b[_0xb212('0x17')](0xcc)[_0xb212('0x18')]();});}};}function handleEntityNotFound(_0x2b9046,_0x2aafe4){return function(_0x4ca0a2){if(!_0x4ca0a2){_0x2b9046[_0xb212('0x16')](0x194);}return _0x4ca0a2;};}function handleError(_0x48d420,_0xd1180f){_0xd1180f=_0xd1180f||0x1f4;return function(_0x32849a){logger[_0xb212('0x24')](_0x32849a['stack']);if(_0x32849a[_0xb212('0x25')]){delete _0x32849a[_0xb212('0x25')];}_0x48d420[_0xb212('0x17')](_0xd1180f)['send'](_0x32849a);};}exports[_0xb212('0x26')]=function(_0x277812,_0x882231){var _0xdf3d5d={'raw':!![],'where':{'id':_0x277812[_0xb212('0x27')]['id']}},_0xd069d9={};_0xd069d9[_0xb212('0x28')]=_[_0xb212('0x29')](db[_0xb212('0x2a')][_0xb212('0x2b')]);_0xd069d9[_0xb212('0x2c')]=_[_0xb212('0x29')](_0x277812[_0xb212('0x2c')]);_0xd069d9[_0xb212('0x2d')]=_[_0xb212('0x2e')](_0xd069d9['model'],_0xd069d9['query']);_0xdf3d5d[_0xb212('0x2f')]=_[_0xb212('0x2e')](_0xd069d9['model'],qs[_0xb212('0x30')](_0x277812[_0xb212('0x2c')][_0xb212('0x30')]));_0xdf3d5d[_0xb212('0x2f')]=_0xdf3d5d[_0xb212('0x2f')][_0xb212('0x31')]?_0xdf3d5d[_0xb212('0x2f')]:_0xd069d9[_0xb212('0x28')];if(_0x277812['query']['includeAll']){_0xdf3d5d[_0xb212('0x32')]=[{'all':!![]}];}_0xdf3d5d=_[_0xb212('0x33')]({},_0xdf3d5d,_0x277812[_0xb212('0x34')]);return db[_0xb212('0x2a')][_0xb212('0x35')](_0xdf3d5d)[_0xb212('0x22')](handleEntityNotFound(_0x882231,null))[_0xb212('0x22')](respondWithResult(_0x882231,null))[_0xb212('0x36')](handleError(_0x882231,null));};exports[_0xb212('0x37')]=function(_0x249ccb,_0x769ba9){return db[_0xb212('0x2a')][_0xb212('0x37')](_0x249ccb['body'],{})[_0xb212('0x22')](respondWithResult(_0x769ba9,0xc9))[_0xb212('0x36')](handleError(_0x769ba9,null));};exports[_0xb212('0x21')]=function(_0x3f0141,_0x115e11){if(_0x3f0141['body']['id']){delete _0x3f0141[_0xb212('0x38')]['id'];}return db[_0xb212('0x2a')]['find']({'where':{'id':_0x3f0141[_0xb212('0x27')]['id']}})['then'](handleEntityNotFound(_0x115e11,null))[_0xb212('0x22')](saveUpdates(_0x3f0141[_0xb212('0x38')],null))['then'](respondWithResult(_0x115e11,null))[_0xb212('0x36')](handleError(_0x115e11,null));};exports[_0xb212('0x23')]=function(_0x2c8820,_0x2b36a0){return db['ChatProactiveAction'][_0xb212('0x35')]({'where':{'id':_0x2c8820[_0xb212('0x27')]['id']}})['then'](handleEntityNotFound(_0x2b36a0,null))[_0xb212('0x22')](removeEntity(_0x2b36a0,null))['catch'](handleError(_0x2b36a0,null));};
\ No newline at end of file
index 1a9e323..ef5c609 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0e1=['bluebird','request-promise','path','../../config/environment','define','ChatProactiveAction','chat_proactive_actions','../../config/logger','api','moment'];(function(_0x4287fe,_0x14ad49){var _0x329a39=function(_0x3c30a9){while(--_0x3c30a9){_0x4287fe['push'](_0x4287fe['shift']());}};_0x329a39(++_0x14ad49);}(_0xf0e1,0x1ab));var _0x1f0e=function(_0x26721d,_0x448ba5){_0x26721d=_0x26721d-0x0;var _0x1035c5=_0xf0e1[_0x26721d];return _0x1035c5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1f0e('0x0'))(_0x1f0e('0x1'));var moment=require(_0x1f0e('0x2'));var BPromise=require(_0x1f0e('0x3'));var rp=require(_0x1f0e('0x4'));var fs=require('fs');var path=require(_0x1f0e('0x5'));var rimraf=require('rimraf');var config=require(_0x1f0e('0x6'));var attributes=require('./chatProactiveAction.attributes');module['exports']=function(_0x1029a4,_0x40727d){return _0x1029a4[_0x1f0e('0x7')](_0x1f0e('0x8'),attributes,{'tableName':_0x1f0e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1e7=['util','../../config/logger','api','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','lodash'];(function(_0x4307cc,_0x447972){var _0x3c8687=function(_0x124e17){while(--_0x124e17){_0x4307cc['push'](_0x4307cc['shift']());}};_0x3c8687(++_0x447972);}(_0xd1e7,0xf1));var _0x7d1e=function(_0x32e13c,_0x58589b){_0x32e13c=_0x32e13c-0x0;var _0x197482=_0xd1e7[_0x32e13c];return _0x197482;};'use strict';var _=require(_0x7d1e('0x0'));var util=require(_0x7d1e('0x1'));var logger=require(_0x7d1e('0x2'))(_0x7d1e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7d1e('0x4'));var rimraf=require(_0x7d1e('0x5'));var config=require(_0x7d1e('0x6'));var attributes=require(_0x7d1e('0x7'));module[_0x7d1e('0x8')]=function(_0x1a2bb3,_0x257206){return _0x1a2bb3[_0x7d1e('0x9')](_0x7d1e('0xa'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6ca0ba..31a2f25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b18=['request','then','info','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','ChatProactiveAction,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client'];(function(_0x1eb094,_0x47bfc9){var _0x3c0e46=function(_0x355a3f){while(--_0x355a3f){_0x1eb094['push'](_0x1eb094['shift']());}};_0x3c0e46(++_0x47bfc9);}(_0x5b18,0x199));var _0x85b1=function(_0x2341ab,_0x326a6c){_0x2341ab=_0x2341ab-0x0;var _0x54533e=_0x5b18[_0x2341ab];return _0x54533e;};'use strict';var _=require(_0x85b1('0x0'));var util=require(_0x85b1('0x1'));var moment=require(_0x85b1('0x2'));var BPromise=require(_0x85b1('0x3'));var rs=require(_0x85b1('0x4'));var fs=require('fs');var Redis=require(_0x85b1('0x5'));var db=require(_0x85b1('0x6'))['db'];var utils=require(_0x85b1('0x7'));var logger=require('../../config/logger')(_0x85b1('0x8'));var config=require(_0x85b1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x85b1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39f86b,_0x255346,_0x5b8546){return new BPromise(function(_0x330978,_0x23b000){return client[_0x85b1('0xb')](_0x39f86b,_0x5b8546)[_0x85b1('0xc')](function(_0x2470e4){logger[_0x85b1('0xd')]('ChatProactiveAction,\x20%s,\x20%s',_0x255346,_0x85b1('0xe'));logger['debug'](_0x85b1('0xf'),_0x255346,_0x85b1('0xe'),JSON[_0x85b1('0x10')](_0x2470e4));if(_0x2470e4[_0x85b1('0x11')]){if(_0x2470e4[_0x85b1('0x11')]['code']===0x1f4){logger[_0x85b1('0x11')](_0x85b1('0x12'),_0x255346,_0x2470e4[_0x85b1('0x11')][_0x85b1('0x13')]);return _0x23b000(_0x2470e4[_0x85b1('0x11')]['message']);}logger[_0x85b1('0x11')](_0x85b1('0x12'),_0x255346,_0x2470e4[_0x85b1('0x11')]['message']);return _0x330978(_0x2470e4['error'][_0x85b1('0x13')]);}else{logger['info'](_0x85b1('0x12'),_0x255346,_0x85b1('0xe'));_0x330978(_0x2470e4['result']['message']);}})[_0x85b1('0x14')](function(_0x490b4d){logger['error'](_0x85b1('0x12'),_0x255346,_0x490b4d);_0x23b000(_0x490b4d);});});}
\ No newline at end of file
+var _0x6716=['../../config/utils','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','ioredis'];(function(_0x56fcf9,_0x4f9cc1){var _0x1a9f51=function(_0x2058ce){while(--_0x2058ce){_0x56fcf9['push'](_0x56fcf9['shift']());}};_0x1a9f51(++_0x4f9cc1);}(_0x6716,0x88));var _0x6671=function(_0x29a8f8,_0x3b4263){_0x29a8f8=_0x29a8f8-0x0;var _0x5bf4c8=_0x6716[_0x29a8f8];return _0x5bf4c8;};'use strict';var _=require('lodash');var util=require(_0x6671('0x0'));var moment=require(_0x6671('0x1'));var BPromise=require(_0x6671('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6671('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x6671('0x4'));var logger=require('../../config/logger')(_0x6671('0x5'));var config=require('../../config/environment');var jayson=require(_0x6671('0x6'));var client=jayson['client'][_0x6671('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x456fcd,_0x400dc2,_0x1044f3){return new BPromise(function(_0x25d4fc,_0x2a6e7a){return client[_0x6671('0x8')](_0x456fcd,_0x1044f3)[_0x6671('0x9')](function(_0x12d1c8){logger[_0x6671('0xa')]('ChatProactiveAction,\x20%s,\x20%s',_0x400dc2,_0x6671('0xb'));logger[_0x6671('0xc')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x400dc2,'request\x20sent',JSON[_0x6671('0xd')](_0x12d1c8));if(_0x12d1c8[_0x6671('0xe')]){if(_0x12d1c8[_0x6671('0xe')][_0x6671('0xf')]===0x1f4){logger[_0x6671('0xe')](_0x6671('0x10'),_0x400dc2,_0x12d1c8[_0x6671('0xe')][_0x6671('0x11')]);return _0x2a6e7a(_0x12d1c8[_0x6671('0xe')]['message']);}logger[_0x6671('0xe')](_0x6671('0x10'),_0x400dc2,_0x12d1c8[_0x6671('0xe')][_0x6671('0x11')]);return _0x25d4fc(_0x12d1c8[_0x6671('0xe')]['message']);}else{logger[_0x6671('0xa')](_0x6671('0x10'),_0x400dc2,_0x6671('0xb'));_0x25d4fc(_0x12d1c8[_0x6671('0x12')][_0x6671('0x11')]);}})[_0x6671('0x13')](function(_0x1e0fc3){logger[_0x6671('0xe')](_0x6671('0x10'),_0x400dc2,_0x1e0fc3);_0x2a6e7a(_0x1e0fc3);});});}
\ No newline at end of file
index 422637c..22f1f54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','post','create','update','isAuthenticated','destroy','multer'];(function(_0x4a6995,_0x4821ea){var _0x3e5c52=function(_0x4049b7){while(--_0x4049b7){_0x4a6995['push'](_0x4a6995['shift']());}};_0x3e5c52(++_0x4821ea);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x3273ca,_0x474e5f){_0x3273ca=_0x3273ca-0x0;var _0x302ac8=_0x3eea[_0x3273ca];return _0x302ac8;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')](_0xa3ee('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa3ee('0xc')]('/',auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['put'](_0xa3ee('0xb'),auth['isAuthenticated'](),controller[_0xa3ee('0xe')]);router['delete'](_0xa3ee('0xb'),auth[_0xa3ee('0xf')](),controller[_0xa3ee('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x53ec=['create','put','isAuthenticated','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatProactiveAction.controller','/:id','show','post'];(function(_0x546d9d,_0x1a8fbb){var _0x416ccc=function(_0x54e507){while(--_0x54e507){_0x546d9d['push'](_0x546d9d['shift']());}};_0x416ccc(++_0x1a8fbb);}(_0x53ec,0x192));var _0xc53e=function(_0x208b7a,_0x2e3baa){_0x208b7a=_0x208b7a-0x0;var _0x37b7ec=_0x53ec[_0x208b7a];return _0x37b7ec;};'use strict';var multer=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var path=require(_0xc53e('0x2'));var timeout=require(_0xc53e('0x3'));var express=require(_0xc53e('0x4'));var router=express[_0xc53e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xc53e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53e('0x7'));var controller=require(_0xc53e('0x8'));router['get'](_0xc53e('0x9'),auth['isAuthenticated'](),controller[_0xc53e('0xa')]);router[_0xc53e('0xb')]('/',auth['isAuthenticated'](),controller[_0xc53e('0xc')]);router[_0xc53e('0xd')](_0xc53e('0x9'),auth[_0xc53e('0xe')](),controller[_0xc53e('0xf')]);router[_0xc53e('0x10')](_0xc53e('0x9'),auth[_0xc53e('0xe')](),controller[_0xc53e('0x11')]);module['exports']=router;
\ No newline at end of file
index ce27fb6..161663d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe578=['roundrobin','sequelize','exports','name','INTEGER','ENUM','rrmemory'];(function(_0x23b8ba,_0x2a577a){var _0x55e2eb=function(_0x3e103b){while(--_0x3e103b){_0x23b8ba['push'](_0x23b8ba['shift']());}};_0x55e2eb(++_0x2a577a);}(_0xe578,0xda));var _0x8e57=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe578[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x8e57('0x0'));module[_0x8e57('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x8e57('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x8e57('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8e57('0x4')](_0x8e57('0x5'),'beepall',_0x8e57('0x6'))}};
\ No newline at end of file
+var _0x762c=['rrmemory','beepall','roundrobin','sequelize','exports','name','STRING','INTEGER','ENUM'];(function(_0x70c018,_0x1aa73d){var _0x152d85=function(_0x18334f){while(--_0x18334f){_0x70c018['push'](_0x70c018['shift']());}};_0x152d85(++_0x1aa73d);}(_0x762c,0x135));var _0xc762=function(_0x147431,_0x487d8e){_0x147431=_0x147431-0x0;var _0x254e96=_0x762c[_0x147431];return _0x254e96;};'use strict';var Sequelize=require(_0xc762('0x0'));module[_0xc762('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xc762('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc762('0x3')]},'timeout':{'type':Sequelize[_0xc762('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc762('0x5')](_0xc762('0x6'),_0xc762('0x7'),_0xc762('0x8'))}};
\ No newline at end of file
index 68d166a..82c6034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x683a=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','./chatQueue.socket','jayson/promise','client','then','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','ChatQueue,\x20%s,\x20%s','message','info','catch','end','offset','undefined','limit','count','status','set','Content-Range','json','reject','get','ChatQueues','UserProfileResource','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','destroy','describe','getMembers','UserChatQueue','length','ChatQueueId','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','chatPause','findOne','Team','getTeams','addTeams','ids','User','online','voicePause','interface','flatMap','Agents','sequelize','transaction','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','every','TeamId','includes','all','union','isEmpty','userChatQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','request-promise','moment'];(function(_0x38cf3d,_0x2b8f37){var _0x4b97f0=function(_0x237829){while(--_0x237829){_0x38cf3d['push'](_0x38cf3d['shift']());}};_0x4b97f0(++_0x2b8f37);}(_0x683a,0x1ca));var _0xa683=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x683a[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xa683('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa683('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa683('0x2'));var moment=require(_0xa683('0x3'));var BPromise=require(_0xa683('0x4'));var Mustache=require(_0xa683('0x5'));var util=require(_0xa683('0x6'));var path=require(_0xa683('0x7'));var sox=require(_0xa683('0x8'));var csv=require(_0xa683('0x9'));var ejs=require(_0xa683('0xa'));var fs=require('fs');var fs_extra=require(_0xa683('0xb'));var _=require(_0xa683('0xc'));var squel=require(_0xa683('0xd'));var crypto=require(_0xa683('0xe'));var jsforce=require(_0xa683('0xf'));var deskjs=require(_0xa683('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa683('0x11'));var Papa=require(_0xa683('0x12'));var Redis=require(_0xa683('0x13'));var authService=require(_0xa683('0x14'));var qs=require(_0xa683('0x15'));var as=require(_0xa683('0x16'));var hardwareService=require(_0xa683('0x17'));var logger=require(_0xa683('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xa683('0x19'));var licenseUtil=require(_0xa683('0x1a'));var db=require(_0xa683('0x1b'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xa683('0x1c'),'port':0x18eb});var socket=require(_0xa683('0x1d'))(new Redis(config[_0xa683('0x1e')]));require(_0xa683('0x1f'))['register'](socket);var jayson=require(_0xa683('0x20'));var client=jayson[_0xa683('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x574249,_0x440d09,_0x20e419,_0x1fe1ba){return new BPromise(function(_0x562262,_0xcc3e67){var _0x40733f=_0x1fe1ba||client;return _0x40733f['request'](_0x574249,_0x20e419)[_0xa683('0x22')](function(_0x23f0a7){logger['info']('ChatQueue,\x20%s,\x20%s',_0x440d09,_0xa683('0x23'));logger['debug'](_0xa683('0x24'),_0x440d09,_0xa683('0x23'),JSON['stringify'](_0x23f0a7));if(_0x23f0a7[_0xa683('0x25')]){if(_0x23f0a7[_0xa683('0x25')][_0xa683('0x26')]===0x1f4){logger['error'](_0xa683('0x27'),_0x440d09,_0x23f0a7[_0xa683('0x25')][_0xa683('0x28')]);return _0xcc3e67(_0x23f0a7[_0xa683('0x25')][_0xa683('0x28')]);}logger['error'](_0xa683('0x27'),_0x440d09,_0x23f0a7[_0xa683('0x25')][_0xa683('0x28')]);return _0x562262(_0x23f0a7['error']['message']);}else{logger[_0xa683('0x29')]('ChatQueue,\x20%s,\x20%s',_0x440d09,_0xa683('0x23'));_0x562262(_0x23f0a7['result'][_0xa683('0x28')]);}})[_0xa683('0x2a')](function(_0x10b8d3){logger[_0xa683('0x25')]('ChatQueue,\x20%s,\x20%s',_0x440d09,_0x10b8d3);_0xcc3e67(_0x10b8d3);});});}function respondWithStatusCode(_0x5d0984,_0x49f528){_0x49f528=_0x49f528||0xcc;return function(_0x5461a4){if(_0x5461a4){return _0x5d0984['sendStatus'](_0x49f528);}return _0x5d0984['status'](_0x49f528)[_0xa683('0x2b')]();};}function respondWithResult(_0x17a5d2,_0x4b7454){_0x4b7454=_0x4b7454||0xc8;return function(_0x2f9397){if(_0x2f9397){return _0x17a5d2['status'](_0x4b7454)['json'](_0x2f9397);}};}function respondWithFilteredResult(_0x41fe13,_0x486df9){return function(_0x2a38f4){if(_0x2a38f4){var _0x70b33=typeof _0x486df9[_0xa683('0x2c')]===_0xa683('0x2d')&&typeof _0x486df9[_0xa683('0x2e')]==='undefined';var _0x1164ea=_0x2a38f4[_0xa683('0x2f')];var _0x2d2d07=_0x70b33?0x0:_0x486df9['offset'];var _0x484b20=_0x70b33?_0x2a38f4['count']:_0x486df9['offset']+_0x486df9[_0xa683('0x2e')];var _0x17686d;if(_0x484b20>=_0x1164ea){_0x484b20=_0x1164ea;_0x17686d=0xc8;}else{_0x17686d=0xce;}_0x41fe13[_0xa683('0x30')](_0x17686d);return _0x41fe13[_0xa683('0x31')](_0xa683('0x32'),_0x2d2d07+'-'+_0x484b20+'/'+_0x1164ea)[_0xa683('0x33')](_0x2a38f4);}return null;};}function patchUpdates(_0x482105){return function(_0x50dda3){try{jsonpatch['apply'](_0x50dda3,_0x482105,!![]);}catch(_0x37ac93){return BPromise[_0xa683('0x34')](_0x37ac93);}return _0x50dda3['save']();};}function saveUpdates(_0x4de4b7,_0x254e1d){return function(_0x44e91){if(_0x44e91){return _0x44e91['update'](_0x4de4b7)[_0xa683('0x22')](function(_0x4bd412){return _0x4bd412;});}return null;};}function removeEntity(_0x43edcf,_0x5c9d2f){return function(_0x25992b){if(_0x25992b){return _0x25992b['destroy']()[_0xa683('0x22')](function(){var _0x343505=_0x25992b[_0xa683('0x35')]({'plain':!![]});var _0x470f2a=_0xa683('0x36');return db[_0xa683('0x37')]['destroy']({'where':{'type':_0x470f2a,'resourceId':_0x343505['id']}})[_0xa683('0x22')](function(){return _0x25992b;});})[_0xa683('0x22')](function(){_0x43edcf['status'](0xcc)[_0xa683('0x2b')]();});}};}function handleEntityNotFound(_0x273860,_0x54dd76){return function(_0x5f36f3){if(!_0x5f36f3){_0x273860['sendStatus'](0x194);}return _0x5f36f3;};}function handleError(_0x57218c,_0x539a68){_0x539a68=_0x539a68||0x1f4;return function(_0x15d7e2){logger[_0xa683('0x25')](_0x15d7e2['stack']);if(_0x15d7e2[_0xa683('0x38')]){delete _0x15d7e2[_0xa683('0x38')];}_0x57218c['status'](_0x539a68)[_0xa683('0x39')](_0x15d7e2);};}exports[_0xa683('0x3a')]=function(_0x3aa123,_0x83a2ef){var _0x3a1ea5={},_0x3db331={},_0x2df67a={'count':0x0,'rows':[]};var _0x35127f=_[_0xa683('0x3b')](db[_0xa683('0x3c')][_0xa683('0x3d')],function(_0x13ad6e){return{'name':_0x13ad6e[_0xa683('0x3e')],'type':_0x13ad6e[_0xa683('0x3f')][_0xa683('0x40')]};});_0x3db331[_0xa683('0x41')]=_[_0xa683('0x3b')](_0x35127f,_0xa683('0x38'));_0x3db331[_0xa683('0x42')]=_['keys'](_0x3aa123[_0xa683('0x42')]);_0x3db331[_0xa683('0x43')]=_['intersection'](_0x3db331[_0xa683('0x41')],_0x3db331[_0xa683('0x42')]);_0x3a1ea5['attributes']=_[_0xa683('0x44')](_0x3db331[_0xa683('0x41')],qs[_0xa683('0x45')](_0x3aa123[_0xa683('0x42')][_0xa683('0x45')]));_0x3a1ea5[_0xa683('0x46')]=_0x3a1ea5['attributes']['length']?_0x3a1ea5[_0xa683('0x46')]:_0x3db331[_0xa683('0x41')];if(!_0x3aa123[_0xa683('0x42')][_0xa683('0x47')](_0xa683('0x48'))){_0x3a1ea5[_0xa683('0x2e')]=qs['limit'](_0x3aa123[_0xa683('0x42')][_0xa683('0x2e')]);_0x3a1ea5['offset']=qs[_0xa683('0x2c')](_0x3aa123['query'][_0xa683('0x2c')]);}_0x3a1ea5[_0xa683('0x49')]=qs[_0xa683('0x4a')](_0x3aa123[_0xa683('0x42')][_0xa683('0x4a')]);_0x3a1ea5[_0xa683('0x4b')]=qs[_0xa683('0x43')](_[_0xa683('0x4c')](_0x3aa123[_0xa683('0x42')],_0x3db331['filters']),_0x35127f);if(_0x3aa123['query'][_0xa683('0x4d')]){_0x3a1ea5[_0xa683('0x4b')]=_[_0xa683('0x4e')](_0x3a1ea5[_0xa683('0x4b')],{'$or':_[_0xa683('0x3b')](_0x35127f,function(_0x506690){if(_0x506690[_0xa683('0x3f')]!==_0xa683('0x4f')){var _0xfe59a5={};_0xfe59a5[_0x506690[_0xa683('0x38')]]={'$like':'%'+_0x3aa123[_0xa683('0x42')][_0xa683('0x4d')]+'%'};return _0xfe59a5;}})});}_0x3a1ea5=_[_0xa683('0x4e')]({},_0x3a1ea5,_0x3aa123[_0xa683('0x50')]);var _0x3bfc13={'where':_0x3a1ea5['where']};return db['ChatQueue']['count'](_0x3bfc13)[_0xa683('0x22')](function(_0x32b871){_0x2df67a[_0xa683('0x2f')]=_0x32b871;if(_0x3aa123['query'][_0xa683('0x51')]){_0x3a1ea5[_0xa683('0x52')]=[{'all':!![]}];}return db[_0xa683('0x3c')][_0xa683('0x53')](_0x3a1ea5);})[_0xa683('0x22')](function(_0x27f578){_0x2df67a[_0xa683('0x54')]=_0x27f578;return _0x2df67a;})['then'](respondWithFilteredResult(_0x83a2ef,_0x3a1ea5))[_0xa683('0x2a')](handleError(_0x83a2ef,null));};exports[_0xa683('0x55')]=function(_0x47f659,_0x54d808){var _0x2b201c={'raw':!![],'where':{'id':_0x47f659[_0xa683('0x56')]['id']}},_0x342f4c={};_0x342f4c[_0xa683('0x41')]=_[_0xa683('0x57')](db[_0xa683('0x3c')][_0xa683('0x3d')]);_0x342f4c[_0xa683('0x42')]=_[_0xa683('0x57')](_0x47f659[_0xa683('0x42')]);_0x342f4c[_0xa683('0x43')]=_['intersection'](_0x342f4c[_0xa683('0x41')],_0x342f4c['query']);_0x2b201c[_0xa683('0x46')]=_[_0xa683('0x44')](_0x342f4c['model'],qs[_0xa683('0x45')](_0x47f659[_0xa683('0x42')][_0xa683('0x45')]));_0x2b201c[_0xa683('0x46')]=_0x2b201c[_0xa683('0x46')]['length']?_0x2b201c[_0xa683('0x46')]:_0x342f4c[_0xa683('0x41')];if(_0x47f659['query']['includeAll']){_0x2b201c[_0xa683('0x52')]=[{'all':!![]}];}_0x2b201c=_[_0xa683('0x4e')]({},_0x2b201c,_0x47f659['options']);return db[_0xa683('0x3c')]['find'](_0x2b201c)[_0xa683('0x22')](handleEntityNotFound(_0x54d808,null))['then'](respondWithResult(_0x54d808,null))[_0xa683('0x2a')](handleError(_0x54d808,null));};exports[_0xa683('0x58')]=function(_0x391def,_0xe3a90c){return db[_0xa683('0x3c')][_0xa683('0x58')](_0x391def[_0xa683('0x59')],{})[_0xa683('0x22')](function(_0x4997ed){var _0x3b743e=_0x391def[_0xa683('0x5a')][_0xa683('0x35')]({'plain':!![]});if(!_0x3b743e)throw new Error(_0xa683('0x5b'));if(_0x3b743e[_0xa683('0x5c')]===_0xa683('0x5a')){var _0x2b03d3=_0x4997ed[_0xa683('0x35')]({'plain':!![]});var _0x494ad2=_0xa683('0x36');return db['UserProfileSection']['find']({'where':{'name':_0x494ad2,'userProfileId':_0x3b743e[_0xa683('0x5d')]},'raw':!![]})[_0xa683('0x22')](function(_0x207813){if(_0x207813&&_0x207813['autoAssociation']===0x0){return db[_0xa683('0x37')][_0xa683('0x58')]({'name':_0x2b03d3['name'],'resourceId':_0x2b03d3['id'],'type':_0x207813[_0xa683('0x38')],'sectionId':_0x207813['id']},{})['then'](function(){return _0x4997ed;});}else{return _0x4997ed;}})[_0xa683('0x2a')](function(_0x3c3665){logger[_0xa683('0x25')](_0xa683('0x5e'),_0x3c3665);throw _0x3c3665;});}return _0x4997ed;})[_0xa683('0x22')](respondWithResult(_0xe3a90c,0xc9))['catch'](handleError(_0xe3a90c,null));};exports[_0xa683('0x5f')]=function(_0x15425a,_0x1538fc){if(_0x15425a[_0xa683('0x59')]['id']){delete _0x15425a[_0xa683('0x59')]['id'];}return db[_0xa683('0x3c')][_0xa683('0x60')]({'where':{'id':_0x15425a[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x1538fc,null))[_0xa683('0x22')](saveUpdates(_0x15425a[_0xa683('0x59')],null))[_0xa683('0x22')](respondWithResult(_0x1538fc,null))['catch'](handleError(_0x1538fc,null));};exports[_0xa683('0x61')]=function(_0x71df5,_0x154b23){return db[_0xa683('0x3c')][_0xa683('0x60')]({'where':{'id':_0x71df5[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x154b23,null))['then'](removeEntity(_0x154b23,null))['catch'](handleError(_0x154b23,null));};exports[_0xa683('0x62')]=function(_0x178a72,_0x3adbee){return db[_0xa683('0x3c')][_0xa683('0x62')]()['then'](respondWithResult(_0x3adbee,null))[_0xa683('0x2a')](handleError(_0x3adbee,null));};exports[_0xa683('0x63')]=function(_0x497ad6,_0x3a4ad1,_0x1fcd36){var _0x319380={'raw':!![],'where':{}},_0x50228f={},_0x4c082f;return db['ChatQueue']['findOne']({'where':{'id':_0x497ad6[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x3a4ad1,null))[_0xa683('0x22')](function(_0x1a0005){if(_0x1a0005){_0x4c082f=_0x1a0005[_0xa683('0x35')]({'plain':!![]});_0x50228f[_0xa683('0x41')]=_[_0xa683('0x57')](db[_0xa683('0x64')][_0xa683('0x3d')]);_0x50228f[_0xa683('0x42')]=_[_0xa683('0x57')](_0x497ad6[_0xa683('0x42')]);_0x50228f[_0xa683('0x43')]=_['intersection'](_0x50228f[_0xa683('0x41')],_0x50228f[_0xa683('0x42')]);_0x319380[_0xa683('0x46')]=_[_0xa683('0x44')](_0x50228f[_0xa683('0x41')],qs[_0xa683('0x45')](_0x497ad6['query'][_0xa683('0x45')]));_0x319380['attributes']=_0x319380['attributes'][_0xa683('0x65')]?_0x319380[_0xa683('0x46')]:_0x50228f[_0xa683('0x41')];if(!_0x497ad6[_0xa683('0x42')][_0xa683('0x47')](_0xa683('0x48'))){_0x319380[_0xa683('0x2e')]=qs[_0xa683('0x2e')](_0x497ad6['query'][_0xa683('0x2e')]);_0x319380[_0xa683('0x2c')]=qs[_0xa683('0x2c')](_0x497ad6['query'][_0xa683('0x2c')]);}_0x319380[_0xa683('0x49')]=qs[_0xa683('0x4a')](_0x497ad6[_0xa683('0x42')][_0xa683('0x4a')]);_0x319380[_0xa683('0x4b')]=qs['filters'](_[_0xa683('0x4c')](_0x497ad6[_0xa683('0x42')],_0x50228f[_0xa683('0x43')]));_0x319380[_0xa683('0x4b')][_0xa683('0x66')]=_0x1a0005['id'];if(_0x497ad6[_0xa683('0x42')][_0xa683('0x4d')]){_0x319380[_0xa683('0x4b')]=_[_0xa683('0x4e')](_0x319380[_0xa683('0x4b')],{'$or':_[_0xa683('0x3b')](_0x319380[_0xa683('0x46')],function(_0x377eed){var _0x3a019c={};_0x3a019c[_0x377eed]={'$like':'%'+_0x497ad6[_0xa683('0x42')][_0xa683('0x4d')]+'%'};return _0x3a019c;})});}_0x319380=_[_0xa683('0x4e')]({},_0x319380,_0x497ad6[_0xa683('0x50')]);return db[_0xa683('0x64')]['findAll'](_0x319380);}})[_0xa683('0x22')](function(_0x44dc44){if(_0x44dc44){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x44dc44,_0xa683('0x67')),'role':_0xa683('0x68')},'attributes':['id','name','chatPause',_0xa683('0x69'),_0xa683('0x6a')]});}})[_0xa683('0x22')](function(_0x2ea5d8){if(_0x2ea5d8){return{'count':_0x2ea5d8['count'],'rows':_[_0xa683('0x3b')](_0x2ea5d8[_0xa683('0x54')],function(_0x2b84a5){return{'membername':_0x2b84a5[_0xa683('0x38')],'UserId':_0x2b84a5['id'],'queue_name':_0x4c082f[_0xa683('0x38')],'ChatQueueId':_0x4c082f['id'],'interface':util[_0xa683('0x6b')](_0xa683('0x6c'),_0xa683('0x6d'),_0x2b84a5[_0xa683('0x38')]),'penalty':0x0,'paused':_0x2b84a5[_0xa683('0x6e')],'createdAt':_0x2b84a5[_0xa683('0x6a')],'updatedAt':_0x2b84a5[_0xa683('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa683('0x22')](respondWithFilteredResult(_0x3a4ad1,_0x319380))[_0xa683('0x2a')](handleError(_0x3a4ad1,null));};exports['getTeams']=function(_0x1ffabf,_0x2d87dc,_0x2601fd){var _0x19f648={};var _0x444e85={};var _0x6b03c4;var _0x29613b;return db[_0xa683('0x3c')][_0xa683('0x6f')]({'where':{'id':_0x1ffabf[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x2d87dc,null))[_0xa683('0x22')](function(_0x2615f0){if(_0x2615f0){_0x6b03c4=_0x2615f0;_0x444e85[_0xa683('0x41')]=_[_0xa683('0x57')](db[_0xa683('0x70')][_0xa683('0x3d')]);_0x444e85[_0xa683('0x42')]=_[_0xa683('0x57')](_0x1ffabf[_0xa683('0x42')]);_0x444e85[_0xa683('0x43')]=_[_0xa683('0x44')](_0x444e85[_0xa683('0x41')],_0x444e85[_0xa683('0x42')]);_0x19f648['attributes']=_['intersection'](_0x444e85['model'],qs[_0xa683('0x45')](_0x1ffabf[_0xa683('0x42')][_0xa683('0x45')]));_0x19f648[_0xa683('0x46')]=_0x19f648[_0xa683('0x46')][_0xa683('0x65')]?_0x19f648['attributes']:_0x444e85[_0xa683('0x41')];_0x19f648['order']=qs[_0xa683('0x4a')](_0x1ffabf[_0xa683('0x42')][_0xa683('0x4a')]);_0x19f648[_0xa683('0x4b')]=qs[_0xa683('0x43')](_[_0xa683('0x4c')](_0x1ffabf[_0xa683('0x42')],_0x444e85[_0xa683('0x43')]));if(_0x1ffabf[_0xa683('0x42')][_0xa683('0x4d')]){_0x19f648[_0xa683('0x4b')]=_[_0xa683('0x4e')](_0x19f648['where'],{'$or':_[_0xa683('0x3b')](_0x19f648[_0xa683('0x46')],function(_0x2f996a){var _0x52cac8={};_0x52cac8[_0x2f996a]={'$like':'%'+_0x1ffabf[_0xa683('0x42')][_0xa683('0x4d')]+'%'};return _0x52cac8;})});}_0x19f648=_[_0xa683('0x4e')]({},_0x19f648,_0x1ffabf[_0xa683('0x50')]);return _0x6b03c4[_0xa683('0x71')](_0x19f648);}})[_0xa683('0x22')](function(_0x1b85d2){if(_0x1b85d2){_0x29613b=_0x1b85d2[_0xa683('0x65')];if(!_0x1ffabf[_0xa683('0x42')]['hasOwnProperty']('nolimit')){_0x19f648[_0xa683('0x2e')]=qs[_0xa683('0x2e')](_0x1ffabf['query'][_0xa683('0x2e')]);_0x19f648[_0xa683('0x2c')]=qs['offset'](_0x1ffabf[_0xa683('0x42')][_0xa683('0x2c')]);}return _0x6b03c4[_0xa683('0x71')](_0x19f648);}})['then'](function(_0x41a44c){if(_0x41a44c){return _0x41a44c?{'count':_0x29613b,'rows':_0x41a44c}:null;}})[_0xa683('0x22')](respondWithResult(_0x2d87dc,null))[_0xa683('0x2a')](handleError(_0x2d87dc,null));};exports[_0xa683('0x72')]=function(_0x89893,_0x311462,_0x4f28a9){var _0x3affd7=_0x89893['body'][_0xa683('0x73')];return db[_0xa683('0x70')][_0xa683('0x53')]({'where':{'id':_0x3affd7},'attributes':['id'],'include':[{'model':db[_0xa683('0x74')],'as':'Agents','attributes':['id',_0xa683('0x38'),_0xa683('0x75'),_0xa683('0x76'),_0xa683('0x77')],'raw':!![]}]})[_0xa683('0x22')](function(_0x598cce){if(_0x598cce){var _0x369df7=_[_0xa683('0x78')](_0x598cce,function(_0x5a38d8){var _0x3ac0f1=_0x5a38d8['get']({'plain':!![]});return _0x3ac0f1[_0xa683('0x79')];});return db[_0xa683('0x3c')][_0xa683('0x60')]({'where':{'id':_0x89893[_0xa683('0x56')]['id']}})['then'](function(_0x3a0455){return db[_0xa683('0x7a')][_0xa683('0x7b')](function(_0x45dd36){return _0x3a0455[_0xa683('0x72')](_0x3affd7,{'transaction':_0x45dd36})[_0xa683('0x22')](function(){return BPromise['each'](_0x369df7,function(_0x4df255){return db[_0xa683('0x64')][_0xa683('0x7c')]({'where':{'UserId':_0x4df255['id'],'ChatQueueId':_0x89893['params']['id']},'transaction':_0x45dd36});});})[_0xa683('0x22')](function(){_0x369df7[_0xa683('0x7d')](function(_0x50507d){socket[_0xa683('0x7e')](_0xa683('0x7f'),{'UserId':_0x50507d['id'],'ChatQueueId':_0x3a0455['id']});});});});});}})[_0xa683('0x22')](respondWithStatusCode(_0x311462,null))[_0xa683('0x2a')](handleError(_0x311462,null));};exports[_0xa683('0x80')]=function(_0x5f2f8,_0x3fcb9f,_0x11db5f){return db[_0xa683('0x70')]['findAll']({'where':{'id':_0x5f2f8[_0xa683('0x42')][_0xa683('0x73')]},'attributes':['id'],'include':[{'model':db[_0xa683('0x74')],'as':_0xa683('0x79'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3fcb9f,null))[_0xa683('0x22')](function(_0x5c5dfb){var _0x43280c=_['map'](_0x5c5dfb,'id');var _0x55ff46=[];var _0x16ada9=[];var _0x51aeee=squel[_0xa683('0x81')]();_0x51aeee[_0xa683('0x82')](_0xa683('0x83'))['from'](_0xa683('0x84'),'tq')[_0xa683('0x85')](_0xa683('0x86'),'ut',_0xa683('0x87'))['where'](_0xa683('0x88'),_0x5f2f8[_0xa683('0x56')]['id']);for(var _0x4b8931=0x0;_0x4b8931<_0x5c5dfb[_0xa683('0x65')];_0x4b8931+=0x1){let _0x353549=_0x5c5dfb[_0x4b8931];for(var _0x1a20b6=0x0;_0x1a20b6<_0x353549['Agents'][_0xa683('0x65')];_0x1a20b6+=0x1){let _0x2d3a19=_0x353549[_0xa683('0x79')][_0x1a20b6];var _0xd43c76=_0x51aeee[_0xa683('0x89')]();_0xd43c76['where'](_0xa683('0x8a'),_0x2d3a19['id']);_0x16ada9[_0xa683('0x8b')](db[_0xa683('0x7a')][_0xa683('0x42')](_0xd43c76[_0xa683('0x8c')](),{'type':db[_0xa683('0x7a')]['QueryTypes']['SELECT']})[_0xa683('0x22')](function(_0x2a2058){if(_0x2a2058[_0xa683('0x65')]===0x1){return _0x2d3a19['id'];}else{var _0x4a3a87=_[_0xa683('0x8d')](_[_0xa683('0x3b')](_0x2a2058,_0xa683('0x8e')),function(_0x1804e9){return _[_0xa683('0x8f')](_0x43280c,_0x1804e9);});if(_0x4a3a87){return _0x2d3a19['id'];}}}));}}return BPromise[_0xa683('0x90')](_0x16ada9)[_0xa683('0x22')](function(_0x58d341){_0x55ff46=_(_0x55ff46)[_0xa683('0x91')](_0x58d341)['compact']()['value']();return db[_0xa683('0x3c')][_0xa683('0x60')]({'where':{'id':_0x5f2f8[_0xa683('0x56')]['id']}})[_0xa683('0x22')](function(_0x409cca){return db['sequelize'][_0xa683('0x7b')](function(_0x22c426){return _0x409cca[_0xa683('0x80')](_0x5f2f8[_0xa683('0x42')][_0xa683('0x73')],{'transaction':_0x22c426})[_0xa683('0x22')](function(){if(!_[_0xa683('0x92')](_0x55ff46)){return _0x409cca['removeAgents'](_0x55ff46,{'transaction':_0x22c426});}})[_0xa683('0x22')](function(){_0x55ff46[_0xa683('0x7d')](function(_0x32d3c1){socket[_0xa683('0x7e')](_0xa683('0x93'),{'UserId':_0x32d3c1,'ChatQueueId':_0x409cca['id']});});});});});});})[_0xa683('0x22')](respondWithStatusCode(_0x3fcb9f,null))['catch'](handleError(_0x3fcb9f,null));};exports[_0xa683('0x94')]=function(_0x4c3f43,_0x3b0478,_0x3c679f){return db[_0xa683('0x3c')][_0xa683('0x60')]({'where':{'id':_0x4c3f43[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x3b0478,null))[_0xa683('0x22')](function(_0x54c504){if(_0x54c504){return _0x54c504['addAgents'](_0x4c3f43[_0xa683('0x59')][_0xa683('0x73')],_[_0xa683('0x95')](_0x4c3f43['body'],[_0xa683('0x73'),'id'])||{})[_0xa683('0x96')](function(_0x592225){for(var _0x400bbc=0x0;_0x400bbc<_0x4c3f43[_0xa683('0x59')]['ids'][_0xa683('0x65')];_0x400bbc+=0x1){socket['emit'](_0xa683('0x7f'),{'UserId':Number(_0x4c3f43[_0xa683('0x59')]['ids'][_0x400bbc]),'ChatQueueId':Number(_0x4c3f43[_0xa683('0x56')]['id'])});}return _0x592225;});}})[_0xa683('0x22')](respondWithResult(_0x3b0478,null))['catch'](handleError(_0x3b0478,null));};exports[_0xa683('0x97')]=function(_0x13f7f8,_0x4e60d2,_0x5aceaf){return db[_0xa683('0x3c')][_0xa683('0x60')]({'where':{'id':_0x13f7f8[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x4e60d2,null))[_0xa683('0x22')](function(_0x570deb){if(_0x570deb){return _0x570deb[_0xa683('0x97')](_0x13f7f8[_0xa683('0x42')][_0xa683('0x73')])[_0xa683('0x22')](function(){if(_[_0xa683('0x98')](_0x13f7f8[_0xa683('0x42')][_0xa683('0x73')])){for(var _0x3d84ea=0x0;_0x3d84ea<_0x13f7f8[_0xa683('0x42')][_0xa683('0x73')][_0xa683('0x65')];_0x3d84ea+=0x1){socket[_0xa683('0x7e')](_0xa683('0x93'),{'UserId':Number(_0x13f7f8[_0xa683('0x42')][_0xa683('0x73')][_0x3d84ea]),'ChatQueueId':Number(_0x13f7f8['params']['id'])});}}else{socket['emit'](_0xa683('0x93'),{'UserId':Number(_0x13f7f8[_0xa683('0x42')][_0xa683('0x73')]),'ChatQueueId':Number(_0x13f7f8[_0xa683('0x56')]['id'])});}});}})[_0xa683('0x22')](respondWithStatusCode(_0x4e60d2,null))[_0xa683('0x2a')](handleError(_0x4e60d2,null));};exports['getAgents']=function(_0x509fdc,_0x3d6af1,_0x27c3e7){var _0x3357de={};var _0x45e921={};var _0xe5c4f;var _0x14e389;return db[_0xa683('0x3c')]['findOne']({'where':{'id':_0x509fdc[_0xa683('0x56')]['id']}})[_0xa683('0x22')](handleEntityNotFound(_0x3d6af1,null))[_0xa683('0x22')](function(_0x19931b){if(_0x19931b){_0xe5c4f=_0x19931b;_0x45e921[_0xa683('0x41')]=_[_0xa683('0x57')](db[_0xa683('0x74')][_0xa683('0x3d')]);_0x45e921['query']=_[_0xa683('0x57')](_0x509fdc[_0xa683('0x42')]);_0x45e921[_0xa683('0x43')]=_[_0xa683('0x44')](_0x45e921[_0xa683('0x41')],_0x45e921[_0xa683('0x42')]);_0x3357de['attributes']=_[_0xa683('0x44')](_0x45e921[_0xa683('0x41')],qs[_0xa683('0x45')](_0x509fdc['query'][_0xa683('0x45')]));_0x3357de[_0xa683('0x46')]=_0x3357de[_0xa683('0x46')][_0xa683('0x65')]?_0x3357de[_0xa683('0x46')]:_0x45e921['model'];_0x3357de[_0xa683('0x49')]=qs[_0xa683('0x4a')](_0x509fdc[_0xa683('0x42')][_0xa683('0x4a')]);_0x3357de['where']=qs[_0xa683('0x43')](_[_0xa683('0x4c')](_0x509fdc[_0xa683('0x42')],_0x45e921[_0xa683('0x43')]));if(_0x509fdc[_0xa683('0x42')][_0xa683('0x4d')]){_0x3357de['where']=_[_0xa683('0x4e')](_0x3357de['where'],{'$or':_[_0xa683('0x3b')](_0x3357de[_0xa683('0x46')],function(_0x229b63){var _0x284b9a={};_0x284b9a[_0x229b63]={'$like':'%'+_0x509fdc['query'][_0xa683('0x4d')]+'%'};return _0x284b9a;})});}_0x3357de=_['merge']({},_0x3357de,_0x509fdc[_0xa683('0x50')]);return _0xe5c4f[_0xa683('0x99')](_0x3357de);}})[_0xa683('0x22')](function(_0x8709){if(_0x8709){_0x14e389=_0x8709[_0xa683('0x65')];if(!_0x509fdc['query'][_0xa683('0x47')]('nolimit')){_0x3357de[_0xa683('0x2e')]=qs['limit'](_0x509fdc[_0xa683('0x42')][_0xa683('0x2e')]);_0x3357de[_0xa683('0x2c')]=qs['offset'](_0x509fdc[_0xa683('0x42')][_0xa683('0x2c')]);}return _0xe5c4f['getAgents'](_0x3357de);}})[_0xa683('0x22')](function(_0x170e89){if(_0x170e89){return _0x170e89?{'count':_0x14e389,'rows':_0x170e89}:null;}})[_0xa683('0x22')](respondWithResult(_0x3d6af1,null))[_0xa683('0x2a')](handleError(_0x3d6af1,null));};
\ No newline at end of file
+var _0x0a7a=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','redis','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','info','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','ChatQueue,\x20%s,\x20%s','message','result','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','get','ChatQueues','UserProfileResource','stack','name','send','map','ChatQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','length','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','ChatQueueId','UserChatQueue','User','findAndCountAll','UserId','agent','chatPause','createdAt','format','%s/%s','updatedAt','getTeams','findOne','Team','ids','online','interface','flatMap','Agents','addTeams','each','findOrCreate','forEach','emit','userChatQueue:save','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','every','union','compact','value','transaction','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x270f5e,_0x4ab7e2){var _0x12dd33=function(_0x593ffa){while(--_0x593ffa){_0x270f5e['push'](_0x270f5e['shift']());}};_0x12dd33(++_0x4ab7e2);}(_0x0a7a,0x84));var _0xa0a7=function(_0x43e330,_0x520997){_0x43e330=_0x43e330-0x0;var _0x364ced=_0x0a7a[_0x43e330];return _0x364ced;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa0a7('0x0'));var zipdir=require(_0xa0a7('0x1'));var jsonpatch=require(_0xa0a7('0x2'));var rp=require(_0xa0a7('0x3'));var moment=require(_0xa0a7('0x4'));var BPromise=require(_0xa0a7('0x5'));var Mustache=require(_0xa0a7('0x6'));var util=require('util');var path=require(_0xa0a7('0x7'));var sox=require(_0xa0a7('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa0a7('0x9'));var _=require(_0xa0a7('0xa'));var squel=require(_0xa0a7('0xb'));var crypto=require(_0xa0a7('0xc'));var jsforce=require(_0xa0a7('0xd'));var deskjs=require(_0xa0a7('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa0a7('0xf'));var Papa=require(_0xa0a7('0x10'));var Redis=require(_0xa0a7('0x11'));var authService=require(_0xa0a7('0x12'));var qs=require(_0xa0a7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa0a7('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xa0a7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa0a7('0x16'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xa0a7('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xa0a7('0x18'))(new Redis(config['redis']));require(_0xa0a7('0x19'))[_0xa0a7('0x1a')](socket);var jayson=require(_0xa0a7('0x1b'));var client=jayson[_0xa0a7('0x1c')][_0xa0a7('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0xfa8532,_0x4ed975,_0x533d6d,_0x49ce94){return new BPromise(function(_0x46cded,_0x41d039){var _0x1e6c6e=_0x49ce94||client;return _0x1e6c6e['request'](_0xfa8532,_0x533d6d)['then'](function(_0x3be8b1){logger[_0xa0a7('0x1e')]('ChatQueue,\x20%s,\x20%s',_0x4ed975,_0xa0a7('0x1f'));logger['debug'](_0xa0a7('0x20'),_0x4ed975,_0xa0a7('0x1f'),JSON[_0xa0a7('0x21')](_0x3be8b1));if(_0x3be8b1[_0xa0a7('0x22')]){if(_0x3be8b1[_0xa0a7('0x22')]['code']===0x1f4){logger[_0xa0a7('0x22')](_0xa0a7('0x23'),_0x4ed975,_0x3be8b1[_0xa0a7('0x22')]['message']);return _0x41d039(_0x3be8b1[_0xa0a7('0x22')]['message']);}logger[_0xa0a7('0x22')](_0xa0a7('0x23'),_0x4ed975,_0x3be8b1['error'][_0xa0a7('0x24')]);return _0x46cded(_0x3be8b1[_0xa0a7('0x22')][_0xa0a7('0x24')]);}else{logger[_0xa0a7('0x1e')](_0xa0a7('0x23'),_0x4ed975,_0xa0a7('0x1f'));_0x46cded(_0x3be8b1[_0xa0a7('0x25')]['message']);}})['catch'](function(_0x1eab03){logger[_0xa0a7('0x22')](_0xa0a7('0x23'),_0x4ed975,_0x1eab03);_0x41d039(_0x1eab03);});});}function respondWithStatusCode(_0xa963f2,_0x316f2a){_0x316f2a=_0x316f2a||0xcc;return function(_0xb60fc4){if(_0xb60fc4){return _0xa963f2['sendStatus'](_0x316f2a);}return _0xa963f2[_0xa0a7('0x26')](_0x316f2a)[_0xa0a7('0x27')]();};}function respondWithResult(_0x14a295,_0x2f4cd6){_0x2f4cd6=_0x2f4cd6||0xc8;return function(_0x48bbc8){if(_0x48bbc8){return _0x14a295['status'](_0x2f4cd6)[_0xa0a7('0x28')](_0x48bbc8);}};}function respondWithFilteredResult(_0x157e1e,_0x383a85){return function(_0x309881){if(_0x309881){var _0x14a133=typeof _0x383a85[_0xa0a7('0x29')]===_0xa0a7('0x2a')&&typeof _0x383a85['limit']==='undefined';var _0x4ef99e=_0x309881[_0xa0a7('0x2b')];var _0x596548=_0x14a133?0x0:_0x383a85[_0xa0a7('0x29')];var _0x50edd1=_0x14a133?_0x309881[_0xa0a7('0x2b')]:_0x383a85[_0xa0a7('0x29')]+_0x383a85[_0xa0a7('0x2c')];var _0x489e9a;if(_0x50edd1>=_0x4ef99e){_0x50edd1=_0x4ef99e;_0x489e9a=0xc8;}else{_0x489e9a=0xce;}_0x157e1e[_0xa0a7('0x26')](_0x489e9a);return _0x157e1e[_0xa0a7('0x2d')](_0xa0a7('0x2e'),_0x596548+'-'+_0x50edd1+'/'+_0x4ef99e)['json'](_0x309881);}return null;};}function patchUpdates(_0x1188ec){return function(_0xbbeb1){try{jsonpatch[_0xa0a7('0x2f')](_0xbbeb1,_0x1188ec,!![]);}catch(_0x385a0d){return BPromise[_0xa0a7('0x30')](_0x385a0d);}return _0xbbeb1[_0xa0a7('0x31')]();};}function saveUpdates(_0x3c3970,_0x1d07d2){return function(_0x94cc66){if(_0x94cc66){return _0x94cc66['update'](_0x3c3970)[_0xa0a7('0x32')](function(_0x3a2c1f){return _0x3a2c1f;});}return null;};}function removeEntity(_0x338f0e,_0x14eeaf){return function(_0x4d5d74){if(_0x4d5d74){return _0x4d5d74[_0xa0a7('0x33')]()[_0xa0a7('0x32')](function(){var _0x452163=_0x4d5d74[_0xa0a7('0x34')]({'plain':!![]});var _0x2e8ea8=_0xa0a7('0x35');return db[_0xa0a7('0x36')]['destroy']({'where':{'type':_0x2e8ea8,'resourceId':_0x452163['id']}})[_0xa0a7('0x32')](function(){return _0x4d5d74;});})[_0xa0a7('0x32')](function(){_0x338f0e[_0xa0a7('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52155f,_0x2b5a9b){return function(_0xb68391){if(!_0xb68391){_0x52155f['sendStatus'](0x194);}return _0xb68391;};}function handleError(_0x4db4f3,_0x4e4ba9){_0x4e4ba9=_0x4e4ba9||0x1f4;return function(_0x50af38){logger['error'](_0x50af38[_0xa0a7('0x37')]);if(_0x50af38['name']){delete _0x50af38[_0xa0a7('0x38')];}_0x4db4f3['status'](_0x4e4ba9)[_0xa0a7('0x39')](_0x50af38);};}exports['index']=function(_0x1a915c,_0x16cbc3){var _0x7c764b={},_0x1638d4={},_0x25146c={'count':0x0,'rows':[]};var _0x5c90c9=_[_0xa0a7('0x3a')](db[_0xa0a7('0x3b')]['rawAttributes'],function(_0x352602){return{'name':_0x352602[_0xa0a7('0x3c')],'type':_0x352602[_0xa0a7('0x3d')][_0xa0a7('0x3e')]};});_0x1638d4[_0xa0a7('0x3f')]=_[_0xa0a7('0x3a')](_0x5c90c9,'name');_0x1638d4[_0xa0a7('0x40')]=_[_0xa0a7('0x41')](_0x1a915c[_0xa0a7('0x40')]);_0x1638d4[_0xa0a7('0x42')]=_[_0xa0a7('0x43')](_0x1638d4[_0xa0a7('0x3f')],_0x1638d4[_0xa0a7('0x40')]);_0x7c764b[_0xa0a7('0x44')]=_['intersection'](_0x1638d4[_0xa0a7('0x3f')],qs['fields'](_0x1a915c['query'][_0xa0a7('0x45')]));_0x7c764b[_0xa0a7('0x44')]=_0x7c764b['attributes']['length']?_0x7c764b[_0xa0a7('0x44')]:_0x1638d4[_0xa0a7('0x3f')];if(!_0x1a915c[_0xa0a7('0x40')][_0xa0a7('0x46')](_0xa0a7('0x47'))){_0x7c764b[_0xa0a7('0x2c')]=qs['limit'](_0x1a915c[_0xa0a7('0x40')][_0xa0a7('0x2c')]);_0x7c764b[_0xa0a7('0x29')]=qs[_0xa0a7('0x29')](_0x1a915c[_0xa0a7('0x40')][_0xa0a7('0x29')]);}_0x7c764b[_0xa0a7('0x48')]=qs[_0xa0a7('0x49')](_0x1a915c[_0xa0a7('0x40')][_0xa0a7('0x49')]);_0x7c764b[_0xa0a7('0x4a')]=qs[_0xa0a7('0x42')](_[_0xa0a7('0x4b')](_0x1a915c[_0xa0a7('0x40')],_0x1638d4['filters']),_0x5c90c9);if(_0x1a915c[_0xa0a7('0x40')][_0xa0a7('0x4c')]){_0x7c764b[_0xa0a7('0x4a')]=_[_0xa0a7('0x4d')](_0x7c764b[_0xa0a7('0x4a')],{'$or':_[_0xa0a7('0x3a')](_0x5c90c9,function(_0x465215){if(_0x465215[_0xa0a7('0x3d')]!==_0xa0a7('0x4e')){var _0x3714e0={};_0x3714e0[_0x465215[_0xa0a7('0x38')]]={'$like':'%'+_0x1a915c[_0xa0a7('0x40')]['filter']+'%'};return _0x3714e0;}})});}_0x7c764b=_[_0xa0a7('0x4d')]({},_0x7c764b,_0x1a915c['options']);var _0x4378eb={'where':_0x7c764b[_0xa0a7('0x4a')]};return db[_0xa0a7('0x3b')][_0xa0a7('0x2b')](_0x4378eb)[_0xa0a7('0x32')](function(_0x53d0a1){_0x25146c[_0xa0a7('0x2b')]=_0x53d0a1;if(_0x1a915c['query'][_0xa0a7('0x4f')]){_0x7c764b[_0xa0a7('0x50')]=[{'all':!![]}];}return db[_0xa0a7('0x3b')][_0xa0a7('0x51')](_0x7c764b);})[_0xa0a7('0x32')](function(_0x5bbece){_0x25146c[_0xa0a7('0x52')]=_0x5bbece;return _0x25146c;})[_0xa0a7('0x32')](respondWithFilteredResult(_0x16cbc3,_0x7c764b))[_0xa0a7('0x53')](handleError(_0x16cbc3,null));};exports['show']=function(_0x34054f,_0x4d4897){var _0x104461={'raw':!![],'where':{'id':_0x34054f['params']['id']}},_0x621459={};_0x621459[_0xa0a7('0x3f')]=_[_0xa0a7('0x41')](db['ChatQueue'][_0xa0a7('0x54')]);_0x621459[_0xa0a7('0x40')]=_['keys'](_0x34054f[_0xa0a7('0x40')]);_0x621459['filters']=_[_0xa0a7('0x43')](_0x621459[_0xa0a7('0x3f')],_0x621459['query']);_0x104461[_0xa0a7('0x44')]=_[_0xa0a7('0x43')](_0x621459[_0xa0a7('0x3f')],qs[_0xa0a7('0x45')](_0x34054f['query'][_0xa0a7('0x45')]));_0x104461[_0xa0a7('0x44')]=_0x104461[_0xa0a7('0x44')][_0xa0a7('0x55')]?_0x104461[_0xa0a7('0x44')]:_0x621459[_0xa0a7('0x3f')];if(_0x34054f[_0xa0a7('0x40')]['includeAll']){_0x104461[_0xa0a7('0x50')]=[{'all':!![]}];}_0x104461=_[_0xa0a7('0x4d')]({},_0x104461,_0x34054f[_0xa0a7('0x56')]);return db['ChatQueue']['find'](_0x104461)[_0xa0a7('0x32')](handleEntityNotFound(_0x4d4897,null))['then'](respondWithResult(_0x4d4897,null))[_0xa0a7('0x53')](handleError(_0x4d4897,null));};exports[_0xa0a7('0x57')]=function(_0x2ee6df,_0x30025e){return db[_0xa0a7('0x3b')][_0xa0a7('0x57')](_0x2ee6df[_0xa0a7('0x58')],{})['then'](function(_0xc1048b){var _0x3969db=_0x2ee6df[_0xa0a7('0x59')][_0xa0a7('0x34')]({'plain':!![]});if(!_0x3969db)throw new Error(_0xa0a7('0x5a'));if(_0x3969db['role']===_0xa0a7('0x59')){var _0x3973e5=_0xc1048b[_0xa0a7('0x34')]({'plain':!![]});var _0x5004e9=_0xa0a7('0x35');return db['UserProfileSection'][_0xa0a7('0x5b')]({'where':{'name':_0x5004e9,'userProfileId':_0x3969db[_0xa0a7('0x5c')]},'raw':!![]})[_0xa0a7('0x32')](function(_0x2bee32){if(_0x2bee32&&_0x2bee32[_0xa0a7('0x5d')]===0x0){return db[_0xa0a7('0x36')]['create']({'name':_0x3973e5['name'],'resourceId':_0x3973e5['id'],'type':_0x2bee32[_0xa0a7('0x38')],'sectionId':_0x2bee32['id']},{})['then'](function(){return _0xc1048b;});}else{return _0xc1048b;}})[_0xa0a7('0x53')](function(_0x1094d9){logger['error'](_0xa0a7('0x5e'),_0x1094d9);throw _0x1094d9;});}return _0xc1048b;})[_0xa0a7('0x32')](respondWithResult(_0x30025e,0xc9))[_0xa0a7('0x53')](handleError(_0x30025e,null));};exports['update']=function(_0x11429e,_0x24be49){if(_0x11429e[_0xa0a7('0x58')]['id']){delete _0x11429e['body']['id'];}return db[_0xa0a7('0x3b')][_0xa0a7('0x5b')]({'where':{'id':_0x11429e['params']['id']}})[_0xa0a7('0x32')](handleEntityNotFound(_0x24be49,null))[_0xa0a7('0x32')](saveUpdates(_0x11429e[_0xa0a7('0x58')],null))[_0xa0a7('0x32')](respondWithResult(_0x24be49,null))['catch'](handleError(_0x24be49,null));};exports[_0xa0a7('0x33')]=function(_0x58edd9,_0x1ef77f){return db['ChatQueue'][_0xa0a7('0x5b')]({'where':{'id':_0x58edd9[_0xa0a7('0x5f')]['id']}})[_0xa0a7('0x32')](handleEntityNotFound(_0x1ef77f,null))[_0xa0a7('0x32')](removeEntity(_0x1ef77f,null))[_0xa0a7('0x53')](handleError(_0x1ef77f,null));};exports[_0xa0a7('0x60')]=function(_0x3d7e3f,_0x39f636){return db[_0xa0a7('0x3b')][_0xa0a7('0x60')]()[_0xa0a7('0x32')](respondWithResult(_0x39f636,null))['catch'](handleError(_0x39f636,null));};exports[_0xa0a7('0x61')]=function(_0xeaa3bc,_0xf6e8f2,_0x3f2eb0){var _0x4e1154={'raw':!![],'where':{}},_0x31ca65={},_0x5d94d6;return db[_0xa0a7('0x3b')]['findOne']({'where':{'id':_0xeaa3bc['params']['id']}})[_0xa0a7('0x32')](handleEntityNotFound(_0xf6e8f2,null))[_0xa0a7('0x32')](function(_0x16cc46){if(_0x16cc46){_0x5d94d6=_0x16cc46[_0xa0a7('0x34')]({'plain':!![]});_0x31ca65[_0xa0a7('0x3f')]=_[_0xa0a7('0x41')](db['UserChatQueue'][_0xa0a7('0x54')]);_0x31ca65[_0xa0a7('0x40')]=_[_0xa0a7('0x41')](_0xeaa3bc['query']);_0x31ca65[_0xa0a7('0x42')]=_[_0xa0a7('0x43')](_0x31ca65['model'],_0x31ca65[_0xa0a7('0x40')]);_0x4e1154[_0xa0a7('0x44')]=_['intersection'](_0x31ca65[_0xa0a7('0x3f')],qs[_0xa0a7('0x45')](_0xeaa3bc['query']['fields']));_0x4e1154[_0xa0a7('0x44')]=_0x4e1154[_0xa0a7('0x44')][_0xa0a7('0x55')]?_0x4e1154['attributes']:_0x31ca65['model'];if(!_0xeaa3bc[_0xa0a7('0x40')][_0xa0a7('0x46')](_0xa0a7('0x47'))){_0x4e1154[_0xa0a7('0x2c')]=qs[_0xa0a7('0x2c')](_0xeaa3bc['query'][_0xa0a7('0x2c')]);_0x4e1154[_0xa0a7('0x29')]=qs[_0xa0a7('0x29')](_0xeaa3bc[_0xa0a7('0x40')][_0xa0a7('0x29')]);}_0x4e1154[_0xa0a7('0x48')]=qs[_0xa0a7('0x49')](_0xeaa3bc['query']['sort']);_0x4e1154[_0xa0a7('0x4a')]=qs[_0xa0a7('0x42')](_['pick'](_0xeaa3bc[_0xa0a7('0x40')],_0x31ca65['filters']));_0x4e1154['where'][_0xa0a7('0x62')]=_0x16cc46['id'];if(_0xeaa3bc[_0xa0a7('0x40')][_0xa0a7('0x4c')]){_0x4e1154[_0xa0a7('0x4a')]=_['merge'](_0x4e1154[_0xa0a7('0x4a')],{'$or':_['map'](_0x4e1154[_0xa0a7('0x44')],function(_0x4b8d58){var _0x36db7d={};_0x36db7d[_0x4b8d58]={'$like':'%'+_0xeaa3bc[_0xa0a7('0x40')][_0xa0a7('0x4c')]+'%'};return _0x36db7d;})});}_0x4e1154=_[_0xa0a7('0x4d')]({},_0x4e1154,_0xeaa3bc['options']);return db[_0xa0a7('0x63')][_0xa0a7('0x51')](_0x4e1154);}})[_0xa0a7('0x32')](function(_0x47ca41){if(_0x47ca41){return db[_0xa0a7('0x64')][_0xa0a7('0x65')]({'where':{'id':_[_0xa0a7('0x3a')](_0x47ca41,_0xa0a7('0x66')),'role':_0xa0a7('0x67')},'attributes':['id','name',_0xa0a7('0x68'),'updatedAt',_0xa0a7('0x69')]});}})['then'](function(_0x52ab42){if(_0x52ab42){return{'count':_0x52ab42[_0xa0a7('0x2b')],'rows':_['map'](_0x52ab42[_0xa0a7('0x52')],function(_0x2db91c){return{'membername':_0x2db91c['name'],'UserId':_0x2db91c['id'],'queue_name':_0x5d94d6['name'],'ChatQueueId':_0x5d94d6['id'],'interface':util[_0xa0a7('0x6a')](_0xa0a7('0x6b'),'SIP',_0x2db91c[_0xa0a7('0x38')]),'penalty':0x0,'paused':_0x2db91c[_0xa0a7('0x68')],'createdAt':_0x2db91c[_0xa0a7('0x69')],'updatedAt':_0x2db91c[_0xa0a7('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xa0a7('0x32')](respondWithFilteredResult(_0xf6e8f2,_0x4e1154))[_0xa0a7('0x53')](handleError(_0xf6e8f2,null));};exports[_0xa0a7('0x6d')]=function(_0x31e6ee,_0x28cd08,_0x309f1e){var _0x44b917={};var _0xe00aad={};var _0x85543b;var _0x1362ab;return db[_0xa0a7('0x3b')][_0xa0a7('0x6e')]({'where':{'id':_0x31e6ee[_0xa0a7('0x5f')]['id']}})['then'](handleEntityNotFound(_0x28cd08,null))[_0xa0a7('0x32')](function(_0x1df30c){if(_0x1df30c){_0x85543b=_0x1df30c;_0xe00aad[_0xa0a7('0x3f')]=_[_0xa0a7('0x41')](db[_0xa0a7('0x6f')][_0xa0a7('0x54')]);_0xe00aad[_0xa0a7('0x40')]=_[_0xa0a7('0x41')](_0x31e6ee[_0xa0a7('0x40')]);_0xe00aad[_0xa0a7('0x42')]=_[_0xa0a7('0x43')](_0xe00aad['model'],_0xe00aad['query']);_0x44b917[_0xa0a7('0x44')]=_['intersection'](_0xe00aad[_0xa0a7('0x3f')],qs[_0xa0a7('0x45')](_0x31e6ee[_0xa0a7('0x40')][_0xa0a7('0x45')]));_0x44b917[_0xa0a7('0x44')]=_0x44b917['attributes'][_0xa0a7('0x55')]?_0x44b917[_0xa0a7('0x44')]:_0xe00aad[_0xa0a7('0x3f')];_0x44b917[_0xa0a7('0x48')]=qs[_0xa0a7('0x49')](_0x31e6ee[_0xa0a7('0x40')][_0xa0a7('0x49')]);_0x44b917[_0xa0a7('0x4a')]=qs[_0xa0a7('0x42')](_[_0xa0a7('0x4b')](_0x31e6ee[_0xa0a7('0x40')],_0xe00aad[_0xa0a7('0x42')]));if(_0x31e6ee[_0xa0a7('0x40')]['filter']){_0x44b917[_0xa0a7('0x4a')]=_[_0xa0a7('0x4d')](_0x44b917['where'],{'$or':_['map'](_0x44b917[_0xa0a7('0x44')],function(_0x647208){var _0x47ec2c={};_0x47ec2c[_0x647208]={'$like':'%'+_0x31e6ee['query'][_0xa0a7('0x4c')]+'%'};return _0x47ec2c;})});}_0x44b917=_[_0xa0a7('0x4d')]({},_0x44b917,_0x31e6ee[_0xa0a7('0x56')]);return _0x85543b[_0xa0a7('0x6d')](_0x44b917);}})[_0xa0a7('0x32')](function(_0x3dcb04){if(_0x3dcb04){_0x1362ab=_0x3dcb04[_0xa0a7('0x55')];if(!_0x31e6ee[_0xa0a7('0x40')]['hasOwnProperty'](_0xa0a7('0x47'))){_0x44b917[_0xa0a7('0x2c')]=qs['limit'](_0x31e6ee['query'][_0xa0a7('0x2c')]);_0x44b917[_0xa0a7('0x29')]=qs[_0xa0a7('0x29')](_0x31e6ee['query'][_0xa0a7('0x29')]);}return _0x85543b[_0xa0a7('0x6d')](_0x44b917);}})[_0xa0a7('0x32')](function(_0x49340a){if(_0x49340a){return _0x49340a?{'count':_0x1362ab,'rows':_0x49340a}:null;}})['then'](respondWithResult(_0x28cd08,null))[_0xa0a7('0x53')](handleError(_0x28cd08,null));};exports['addTeams']=function(_0x64568,_0x2a83de,_0x37180c){var _0x59e120=_0x64568[_0xa0a7('0x58')][_0xa0a7('0x70')];return db['Team']['findAll']({'where':{'id':_0x59e120},'attributes':['id'],'include':[{'model':db[_0xa0a7('0x64')],'as':'Agents','attributes':['id','name',_0xa0a7('0x71'),'voicePause',_0xa0a7('0x72')],'raw':!![]}]})['then'](function(_0xf548b9){if(_0xf548b9){var _0x3e32ab=_[_0xa0a7('0x73')](_0xf548b9,function(_0x3a4c85){var _0x39ce60=_0x3a4c85['get']({'plain':!![]});return _0x39ce60[_0xa0a7('0x74')];});return db[_0xa0a7('0x3b')]['find']({'where':{'id':_0x64568[_0xa0a7('0x5f')]['id']}})[_0xa0a7('0x32')](function(_0x466460){return db['sequelize']['transaction'](function(_0x7ee489){return _0x466460[_0xa0a7('0x75')](_0x59e120,{'transaction':_0x7ee489})[_0xa0a7('0x32')](function(){return BPromise[_0xa0a7('0x76')](_0x3e32ab,function(_0x3af5ed){return db[_0xa0a7('0x63')][_0xa0a7('0x77')]({'where':{'UserId':_0x3af5ed['id'],'ChatQueueId':_0x64568['params']['id']},'transaction':_0x7ee489});});})[_0xa0a7('0x32')](function(){_0x3e32ab[_0xa0a7('0x78')](function(_0x368905){socket[_0xa0a7('0x79')](_0xa0a7('0x7a'),{'UserId':_0x368905['id'],'ChatQueueId':_0x466460['id']});});});});});}})[_0xa0a7('0x32')](respondWithStatusCode(_0x2a83de,null))['catch'](handleError(_0x2a83de,null));};exports['removeTeams']=function(_0x5c27f8,_0x15444f,_0x56f0bf){return db[_0xa0a7('0x6f')][_0xa0a7('0x51')]({'where':{'id':_0x5c27f8['query'][_0xa0a7('0x70')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa0a7('0x74'),'attributes':['id'],'raw':!![]}]})[_0xa0a7('0x32')](handleEntityNotFound(_0x15444f,null))[_0xa0a7('0x32')](function(_0x36740d){var _0x410017=_[_0xa0a7('0x3a')](_0x36740d,'id');var _0x301da6=[];var _0x3aa670=[];var _0x47968e=squel[_0xa0a7('0x7b')]();_0x47968e[_0xa0a7('0x7c')](_0xa0a7('0x7d'))[_0xa0a7('0x7e')](_0xa0a7('0x7f'),'tq')[_0xa0a7('0x80')](_0xa0a7('0x81'),'ut',_0xa0a7('0x82'))['where'](_0xa0a7('0x83'),_0x5c27f8[_0xa0a7('0x5f')]['id']);for(var _0x4a4f03=0x0;_0x4a4f03<_0x36740d[_0xa0a7('0x55')];_0x4a4f03+=0x1){let _0xfcc6ef=_0x36740d[_0x4a4f03];for(var _0x6c222c=0x0;_0x6c222c<_0xfcc6ef[_0xa0a7('0x74')][_0xa0a7('0x55')];_0x6c222c+=0x1){let _0x5525b9=_0xfcc6ef[_0xa0a7('0x74')][_0x6c222c];var _0x441b39=_0x47968e['clone']();_0x441b39['where'](_0xa0a7('0x84'),_0x5525b9['id']);_0x3aa670[_0xa0a7('0x85')](db[_0xa0a7('0x86')][_0xa0a7('0x40')](_0x441b39[_0xa0a7('0x87')](),{'type':db[_0xa0a7('0x86')][_0xa0a7('0x88')]['SELECT']})[_0xa0a7('0x32')](function(_0x3cde91){if(_0x3cde91['length']===0x1){return _0x5525b9['id'];}else{var _0x390d37=_[_0xa0a7('0x89')](_['map'](_0x3cde91,'TeamId'),function(_0x4c0df1){return _['includes'](_0x410017,_0x4c0df1);});if(_0x390d37){return _0x5525b9['id'];}}}));}}return BPromise['all'](_0x3aa670)[_0xa0a7('0x32')](function(_0x57cee5){_0x301da6=_(_0x301da6)[_0xa0a7('0x8a')](_0x57cee5)[_0xa0a7('0x8b')]()[_0xa0a7('0x8c')]();return db['ChatQueue'][_0xa0a7('0x5b')]({'where':{'id':_0x5c27f8['params']['id']}})[_0xa0a7('0x32')](function(_0x3db481){return db['sequelize'][_0xa0a7('0x8d')](function(_0xdf8059){return _0x3db481['removeTeams'](_0x5c27f8[_0xa0a7('0x40')][_0xa0a7('0x70')],{'transaction':_0xdf8059})[_0xa0a7('0x32')](function(){if(!_[_0xa0a7('0x8e')](_0x301da6)){return _0x3db481[_0xa0a7('0x8f')](_0x301da6,{'transaction':_0xdf8059});}})['then'](function(){_0x301da6[_0xa0a7('0x78')](function(_0xa41146){socket[_0xa0a7('0x79')](_0xa0a7('0x90'),{'UserId':_0xa41146,'ChatQueueId':_0x3db481['id']});});});});});});})[_0xa0a7('0x32')](respondWithStatusCode(_0x15444f,null))[_0xa0a7('0x53')](handleError(_0x15444f,null));};exports[_0xa0a7('0x91')]=function(_0x371668,_0x59e215,_0x34144f){return db[_0xa0a7('0x3b')][_0xa0a7('0x5b')]({'where':{'id':_0x371668[_0xa0a7('0x5f')]['id']}})[_0xa0a7('0x32')](handleEntityNotFound(_0x59e215,null))[_0xa0a7('0x32')](function(_0x15c778){if(_0x15c778){return _0x15c778['addAgents'](_0x371668[_0xa0a7('0x58')][_0xa0a7('0x70')],_[_0xa0a7('0x92')](_0x371668['body'],[_0xa0a7('0x70'),'id'])||{})['spread'](function(_0x4f2535){for(var _0x5d4236=0x0;_0x5d4236<_0x371668[_0xa0a7('0x58')][_0xa0a7('0x70')][_0xa0a7('0x55')];_0x5d4236+=0x1){socket[_0xa0a7('0x79')]('userChatQueue:save',{'UserId':Number(_0x371668[_0xa0a7('0x58')]['ids'][_0x5d4236]),'ChatQueueId':Number(_0x371668['params']['id'])});}return _0x4f2535;});}})[_0xa0a7('0x32')](respondWithResult(_0x59e215,null))[_0xa0a7('0x53')](handleError(_0x59e215,null));};exports[_0xa0a7('0x8f')]=function(_0x3b6c50,_0x4aed84,_0x531b5d){return db['ChatQueue'][_0xa0a7('0x5b')]({'where':{'id':_0x3b6c50[_0xa0a7('0x5f')]['id']}})[_0xa0a7('0x32')](handleEntityNotFound(_0x4aed84,null))['then'](function(_0x4d1844){if(_0x4d1844){return _0x4d1844[_0xa0a7('0x8f')](_0x3b6c50[_0xa0a7('0x40')]['ids'])[_0xa0a7('0x32')](function(){if(_['isArray'](_0x3b6c50['query'][_0xa0a7('0x70')])){for(var _0x21a0e2=0x0;_0x21a0e2<_0x3b6c50[_0xa0a7('0x40')][_0xa0a7('0x70')][_0xa0a7('0x55')];_0x21a0e2+=0x1){socket[_0xa0a7('0x79')]('userChatQueue:remove',{'UserId':Number(_0x3b6c50['query'][_0xa0a7('0x70')][_0x21a0e2]),'ChatQueueId':Number(_0x3b6c50[_0xa0a7('0x5f')]['id'])});}}else{socket[_0xa0a7('0x79')]('userChatQueue:remove',{'UserId':Number(_0x3b6c50[_0xa0a7('0x40')][_0xa0a7('0x70')]),'ChatQueueId':Number(_0x3b6c50[_0xa0a7('0x5f')]['id'])});}});}})[_0xa0a7('0x32')](respondWithStatusCode(_0x4aed84,null))[_0xa0a7('0x53')](handleError(_0x4aed84,null));};exports['getAgents']=function(_0x57ca95,_0x30c303,_0x2edce3){var _0x2611c4={};var _0x29e9e9={};var _0x484bcb;var _0x12472f;return db['ChatQueue']['findOne']({'where':{'id':_0x57ca95[_0xa0a7('0x5f')]['id']}})[_0xa0a7('0x32')](handleEntityNotFound(_0x30c303,null))['then'](function(_0x18695a){if(_0x18695a){_0x484bcb=_0x18695a;_0x29e9e9[_0xa0a7('0x3f')]=_['keys'](db['User']['rawAttributes']);_0x29e9e9[_0xa0a7('0x40')]=_[_0xa0a7('0x41')](_0x57ca95[_0xa0a7('0x40')]);_0x29e9e9[_0xa0a7('0x42')]=_[_0xa0a7('0x43')](_0x29e9e9[_0xa0a7('0x3f')],_0x29e9e9[_0xa0a7('0x40')]);_0x2611c4[_0xa0a7('0x44')]=_[_0xa0a7('0x43')](_0x29e9e9['model'],qs['fields'](_0x57ca95[_0xa0a7('0x40')]['fields']));_0x2611c4['attributes']=_0x2611c4['attributes']['length']?_0x2611c4[_0xa0a7('0x44')]:_0x29e9e9[_0xa0a7('0x3f')];_0x2611c4[_0xa0a7('0x48')]=qs[_0xa0a7('0x49')](_0x57ca95['query'][_0xa0a7('0x49')]);_0x2611c4[_0xa0a7('0x4a')]=qs[_0xa0a7('0x42')](_['pick'](_0x57ca95[_0xa0a7('0x40')],_0x29e9e9[_0xa0a7('0x42')]));if(_0x57ca95['query'][_0xa0a7('0x4c')]){_0x2611c4[_0xa0a7('0x4a')]=_[_0xa0a7('0x4d')](_0x2611c4[_0xa0a7('0x4a')],{'$or':_[_0xa0a7('0x3a')](_0x2611c4[_0xa0a7('0x44')],function(_0x47152f){var _0x46dc2b={};_0x46dc2b[_0x47152f]={'$like':'%'+_0x57ca95[_0xa0a7('0x40')][_0xa0a7('0x4c')]+'%'};return _0x46dc2b;})});}_0x2611c4=_[_0xa0a7('0x4d')]({},_0x2611c4,_0x57ca95[_0xa0a7('0x56')]);return _0x484bcb[_0xa0a7('0x93')](_0x2611c4);}})[_0xa0a7('0x32')](function(_0x2aab1b){if(_0x2aab1b){_0x12472f=_0x2aab1b[_0xa0a7('0x55')];if(!_0x57ca95[_0xa0a7('0x40')][_0xa0a7('0x46')](_0xa0a7('0x47'))){_0x2611c4[_0xa0a7('0x2c')]=qs['limit'](_0x57ca95[_0xa0a7('0x40')][_0xa0a7('0x2c')]);_0x2611c4[_0xa0a7('0x29')]=qs[_0xa0a7('0x29')](_0x57ca95[_0xa0a7('0x40')][_0xa0a7('0x29')]);}return _0x484bcb['getAgents'](_0x2611c4);}})[_0xa0a7('0x32')](function(_0x37c6be){if(_0x37c6be){return _0x37c6be?{'count':_0x12472f,'rows':_0x37c6be}:null;}})[_0xa0a7('0x32')](respondWithResult(_0x30c303,null))['catch'](handleError(_0x30c303,null));};
\ No newline at end of file
index 77935eb..f90719c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2913=['update','remove','emit','hook','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x2913,0x1c7));var _0x3291=function(_0x7039dd,_0x374e11){_0x7039dd=_0x7039dd-0x0;var _0x18c224=_0x2913[_0x7039dd];return _0x18c224;};'use strict';var EventEmitter=require(_0x3291('0x0'));var ChatQueue=require(_0x3291('0x1'))['db'][_0x3291('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x3291('0x3')](0x0);var events={'afterCreate':_0x3291('0x4'),'afterUpdate':_0x3291('0x5'),'afterDestroy':_0x3291('0x6')};function emitEvent(_0x15b4c3){return function(_0x4b2351,_0x543e21,_0x4d3718){ChatQueueEvents['emit'](_0x15b4c3+':'+_0x4b2351['id'],_0x4b2351);ChatQueueEvents[_0x3291('0x7')](_0x15b4c3,_0x4b2351);_0x4d3718(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0x3291('0x8')](e,emitEvent(event));}}module[_0x3291('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0xbbcb=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatQueue','setMaxListeners'];(function(_0x4a90c6,_0x1249eb){var _0x33243a=function(_0xc43963){while(--_0xc43963){_0x4a90c6['push'](_0x4a90c6['shift']());}};_0x33243a(++_0x1249eb);}(_0xbbcb,0x16e));var _0xbbbc=function(_0x465d02,_0x46d662){_0x465d02=_0x465d02-0x0;var _0x3b8528=_0xbbcb[_0x465d02];return _0x3b8528;};'use strict';var EventEmitter=require(_0xbbbc('0x0'));var ChatQueue=require(_0xbbbc('0x1'))['db'][_0xbbbc('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xbbbc('0x3')](0x0);var events={'afterCreate':_0xbbbc('0x4'),'afterUpdate':_0xbbbc('0x5'),'afterDestroy':'remove'};function emitEvent(_0x441d81){return function(_0x2c1080,_0xd46d70,_0x18caa3){ChatQueueEvents[_0xbbbc('0x6')](_0x441d81+':'+_0x2c1080['id'],_0x2c1080);ChatQueueEvents[_0xbbbc('0x6')](_0x441d81,_0x2c1080);_0x18caa3(null);};}for(var e in events){if(events[_0xbbbc('0x7')](e)){var event=events[e];ChatQueue[_0xbbbc('0x8')](e,emitEvent(event));}}module[_0xbbbc('0x9')]=ChatQueueEvents;
\ No newline at end of file
index 285d2b8..1d99e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1670=['api','bluebird','./chatQueue.attributes','exports','ChatQueue','chat_queues','lodash','util','../../config/logger'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0x1670,0xa8));var _0x0167=function(_0x4b1473,_0x570c61){_0x4b1473=_0x4b1473-0x0;var _0x4eb602=_0x1670[_0x4b1473];return _0x4eb602;};'use strict';var _=require(_0x0167('0x0'));var util=require(_0x0167('0x1'));var logger=require(_0x0167('0x2'))(_0x0167('0x3'));var moment=require('moment');var BPromise=require(_0x0167('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0167('0x5'));module[_0x0167('0x6')]=function(_0x53ec54,_0x139842){return _0x53ec54['define'](_0x0167('0x7'),attributes,{'tableName':_0x0167('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x29e9=['chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define'];(function(_0x4d9d89,_0x412868){var _0x71f89d=function(_0x5667c7){while(--_0x5667c7){_0x4d9d89['push'](_0x4d9d89['shift']());}};_0x71f89d(++_0x412868);}(_0x29e9,0x127));var _0x929e=function(_0x231581,_0x2c1ad8){_0x231581=_0x231581-0x0;var _0x8f027e=_0x29e9[_0x231581];return _0x8f027e;};'use strict';var _=require(_0x929e('0x0'));var util=require(_0x929e('0x1'));var logger=require(_0x929e('0x2'))(_0x929e('0x3'));var moment=require(_0x929e('0x4'));var BPromise=require(_0x929e('0x5'));var rp=require(_0x929e('0x6'));var fs=require('fs');var path=require(_0x929e('0x7'));var rimraf=require(_0x929e('0x8'));var config=require(_0x929e('0x9'));var attributes=require(_0x929e('0xa'));module[_0x929e('0xb')]=function(_0x3debc1,_0x34a868){return _0x3debc1[_0x929e('0xc')]('ChatQueue',attributes,{'tableName':_0x929e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0707c8..6e69c81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c2c=['ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ChatQueue','options','raw','where','attributes','include','map','model','then','debug','GetChatQueue','stringify','ShowChatQueue','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','./chatQueue.socket','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x5efbfe,_0xacb62b){var _0x29395c=function(_0x230ef4){while(--_0x230ef4){_0x5efbfe['push'](_0x5efbfe['shift']());}};_0x29395c(++_0xacb62b);}(_0x3c2c,0x160));var _0xc3c2=function(_0x226ec3,_0x57264f){_0x226ec3=_0x226ec3-0x0;var _0xddafb=_0x3c2c[_0x226ec3];return _0xddafb;};'use strict';var _=require(_0xc3c2('0x0'));var util=require(_0xc3c2('0x1'));var moment=require(_0xc3c2('0x2'));var BPromise=require(_0xc3c2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc3c2('0x4'))['db'];var utils=require(_0xc3c2('0x5'));var logger=require(_0xc3c2('0x6'))(_0xc3c2('0x7'));var config=require('../../config/environment');var jayson=require(_0xc3c2('0x8'));var client=jayson[_0xc3c2('0x9')][_0xc3c2('0xa')]({'port':0x232a});config[_0xc3c2('0xb')]=_[_0xc3c2('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc3c2('0xb')]));require(_0xc3c2('0xd'))['register'](socket);function respondWithRpcPromise(_0x2ef4d1,_0x5c60cc,_0x5b81e6){return new BPromise(function(_0x1c5e1c,_0x15477c){return client[_0xc3c2('0xe')](_0x2ef4d1,_0x5b81e6)['then'](function(_0x35dbb3){logger[_0xc3c2('0xf')](_0xc3c2('0x10'),_0x5c60cc,_0xc3c2('0x11'));logger['debug'](_0xc3c2('0x12'),_0x5c60cc,_0xc3c2('0x11'),JSON['stringify'](_0x35dbb3));if(_0x35dbb3[_0xc3c2('0x13')]){if(_0x35dbb3['error'][_0xc3c2('0x14')]===0x1f4){logger['error'](_0xc3c2('0x10'),_0x5c60cc,_0x35dbb3['error'][_0xc3c2('0x15')]);return _0x15477c(_0x35dbb3[_0xc3c2('0x13')]['message']);}logger[_0xc3c2('0x13')](_0xc3c2('0x10'),_0x5c60cc,_0x35dbb3[_0xc3c2('0x13')][_0xc3c2('0x15')]);return _0x1c5e1c(_0x35dbb3[_0xc3c2('0x13')][_0xc3c2('0x15')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x5c60cc,'request\x20sent');_0x1c5e1c(_0x35dbb3[_0xc3c2('0x16')][_0xc3c2('0x15')]);}})[_0xc3c2('0x17')](function(_0x164a52){logger[_0xc3c2('0x13')]('ChatQueue,\x20%s,\x20%s',_0x5c60cc,_0x164a52);_0x15477c(_0x164a52);});});}exports['GetChatQueue']=function(_0x454bd5){var _0x6a973d=this;return new Promise(function(_0xa49dd,_0x5e925e){return db[_0xc3c2('0x18')]['findAll']({'raw':_0x454bd5[_0xc3c2('0x19')]?_0x454bd5[_0xc3c2('0x19')][_0xc3c2('0x1a')]===undefined?!![]:![]:!![],'where':_0x454bd5['options']?_0x454bd5[_0xc3c2('0x19')][_0xc3c2('0x1b')]||null:null,'attributes':_0x454bd5[_0xc3c2('0x19')]?_0x454bd5['options'][_0xc3c2('0x1c')]||null:null,'limit':_0x454bd5[_0xc3c2('0x19')]?_0x454bd5[_0xc3c2('0x19')]['limit']||null:null,'include':_0x454bd5[_0xc3c2('0x19')]?_0x454bd5['options'][_0xc3c2('0x1d')]?_[_0xc3c2('0x1e')](_0x454bd5[_0xc3c2('0x19')][_0xc3c2('0x1d')],function(_0x15f5f9){return{'model':db[_0x15f5f9[_0xc3c2('0x1f')]],'as':_0x15f5f9['as'],'attributes':_0x15f5f9[_0xc3c2('0x1c')],'include':_0x15f5f9['include']?_['map'](_0x15f5f9['include'],function(_0x1b2786){return{'model':db[_0x1b2786[_0xc3c2('0x1f')]],'as':_0x1b2786['as'],'attributes':_0x1b2786[_0xc3c2('0x1c')],'include':_0x1b2786['include']?_[_0xc3c2('0x1e')](_0x1b2786[_0xc3c2('0x1d')],function(_0x2dc9ec){return{'model':db[_0x2dc9ec[_0xc3c2('0x1f')]],'as':_0x2dc9ec['as'],'attributes':_0x2dc9ec[_0xc3c2('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xc3c2('0x20')](function(_0x1b9e5e){logger[_0xc3c2('0xf')]('GetChatQueue',_0x454bd5);logger[_0xc3c2('0x21')](_0xc3c2('0x22'),_0x454bd5,JSON[_0xc3c2('0x23')](_0x1b9e5e));_0xa49dd(_0x1b9e5e);})[_0xc3c2('0x17')](function(_0x236132){logger[_0xc3c2('0x13')]('GetChatQueue',_0x236132['message'],_0x454bd5);_0x5e925e(_0x6a973d[_0xc3c2('0x13')](0x1f4,_0x236132['message']));});});};exports[_0xc3c2('0x24')]=function(_0xd8cb00){var _0x2d6fd6=this;return new Promise(function(_0x5505e9,_0x4e756d){return db['ChatQueue']['find']({'raw':_0xd8cb00[_0xc3c2('0x19')]?_0xd8cb00['options'][_0xc3c2('0x1a')]===undefined?!![]:![]:!![],'where':_0xd8cb00['options']?_0xd8cb00[_0xc3c2('0x19')]['where']||null:null,'attributes':_0xd8cb00['options']?_0xd8cb00[_0xc3c2('0x19')][_0xc3c2('0x1c')]||null:null,'include':_0xd8cb00[_0xc3c2('0x19')]?_0xd8cb00[_0xc3c2('0x19')][_0xc3c2('0x1d')]?_[_0xc3c2('0x1e')](_0xd8cb00[_0xc3c2('0x19')][_0xc3c2('0x1d')],function(_0x3ee2ee){return{'model':db[_0x3ee2ee['model']],'as':_0x3ee2ee['as'],'attributes':_0x3ee2ee['attributes'],'include':_0x3ee2ee[_0xc3c2('0x1d')]?_[_0xc3c2('0x1e')](_0x3ee2ee[_0xc3c2('0x1d')],function(_0x1d3940){return{'model':db[_0x1d3940[_0xc3c2('0x1f')]],'as':_0x1d3940['as'],'attributes':_0x1d3940[_0xc3c2('0x1c')],'include':_0x1d3940['include']?_[_0xc3c2('0x1e')](_0x1d3940['include'],function(_0x2278fa){return{'model':db[_0x2278fa[_0xc3c2('0x1f')]],'as':_0x2278fa['as'],'attributes':_0x2278fa['attributes']};}):[]};}):[]};}):[]:[]})[_0xc3c2('0x20')](function(_0x18b426){logger['info'](_0xc3c2('0x24'),_0xd8cb00);logger[_0xc3c2('0x21')](_0xc3c2('0x24'),_0xd8cb00,JSON[_0xc3c2('0x23')](_0x18b426));_0x5505e9(_0x18b426);})[_0xc3c2('0x17')](function(_0x185796){logger[_0xc3c2('0x13')](_0xc3c2('0x24'),_0x185796['message'],_0xd8cb00);_0x4e756d(_0x2d6fd6[_0xc3c2('0x13')](0x1f4,_0x185796[_0xc3c2('0x15')]));});});};
\ No newline at end of file
+var _0xde9f=['info','ChatQueue,\x20%s,\x20%s','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','GetChatQueue','ChatQueue','findAll','options','raw','attributes','map','include','model','debug','ShowChatQueue','find','where','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','redis','socket.io-emitter','./chatQueue.socket','register','request','then'];(function(_0xa26d8c,_0x5923de){var _0x59fd06=function(_0x528033){while(--_0x528033){_0xa26d8c['push'](_0xa26d8c['shift']());}};_0x59fd06(++_0x5923de);}(_0xde9f,0x118));var _0xfde9=function(_0x556927,_0x34b53f){_0x556927=_0x556927-0x0;var _0x5f1235=_0xde9f[_0x556927];return _0x5f1235;};'use strict';var _=require(_0xfde9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfde9('0x1'));var rs=require(_0xfde9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfde9('0x3'))['db'];var utils=require(_0xfde9('0x4'));var logger=require('../../config/logger')(_0xfde9('0x5'));var config=require(_0xfde9('0x6'));var jayson=require(_0xfde9('0x7'));var client=jayson[_0xfde9('0x8')]['http']({'port':0x232a});config['redis']=_[_0xfde9('0x9')](config[_0xfde9('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xfde9('0xb'))(new Redis(config[_0xfde9('0xa')]));require(_0xfde9('0xc'))[_0xfde9('0xd')](socket);function respondWithRpcPromise(_0x3b9cf8,_0xba7ea7,_0x3f29cd){return new BPromise(function(_0xc5cc99,_0x3fa916){return client[_0xfde9('0xe')](_0x3b9cf8,_0x3f29cd)[_0xfde9('0xf')](function(_0x350a86){logger[_0xfde9('0x10')](_0xfde9('0x11'),_0xba7ea7,'request\x20sent');logger['debug'](_0xfde9('0x12'),_0xba7ea7,_0xfde9('0x13'),JSON[_0xfde9('0x14')](_0x350a86));if(_0x350a86[_0xfde9('0x15')]){if(_0x350a86['error']['code']===0x1f4){logger[_0xfde9('0x15')](_0xfde9('0x11'),_0xba7ea7,_0x350a86[_0xfde9('0x15')][_0xfde9('0x16')]);return _0x3fa916(_0x350a86[_0xfde9('0x15')]['message']);}logger[_0xfde9('0x15')](_0xfde9('0x11'),_0xba7ea7,_0x350a86[_0xfde9('0x15')]['message']);return _0xc5cc99(_0x350a86[_0xfde9('0x15')][_0xfde9('0x16')]);}else{logger[_0xfde9('0x10')]('ChatQueue,\x20%s,\x20%s',_0xba7ea7,'request\x20sent');_0xc5cc99(_0x350a86['result']['message']);}})[_0xfde9('0x17')](function(_0x3f1ab3){logger['error']('ChatQueue,\x20%s,\x20%s',_0xba7ea7,_0x3f1ab3);_0x3fa916(_0x3f1ab3);});});}exports[_0xfde9('0x18')]=function(_0x108d38){var _0x244df2=this;return new Promise(function(_0x3f43cd,_0x162b07){return db[_0xfde9('0x19')][_0xfde9('0x1a')]({'raw':_0x108d38[_0xfde9('0x1b')]?_0x108d38[_0xfde9('0x1b')][_0xfde9('0x1c')]===undefined?!![]:![]:!![],'where':_0x108d38[_0xfde9('0x1b')]?_0x108d38[_0xfde9('0x1b')]['where']||null:null,'attributes':_0x108d38[_0xfde9('0x1b')]?_0x108d38['options'][_0xfde9('0x1d')]||null:null,'limit':_0x108d38[_0xfde9('0x1b')]?_0x108d38[_0xfde9('0x1b')]['limit']||null:null,'include':_0x108d38[_0xfde9('0x1b')]?_0x108d38[_0xfde9('0x1b')]['include']?_[_0xfde9('0x1e')](_0x108d38[_0xfde9('0x1b')][_0xfde9('0x1f')],function(_0x242dae){return{'model':db[_0x242dae[_0xfde9('0x20')]],'as':_0x242dae['as'],'attributes':_0x242dae[_0xfde9('0x1d')],'include':_0x242dae[_0xfde9('0x1f')]?_[_0xfde9('0x1e')](_0x242dae[_0xfde9('0x1f')],function(_0x1a0fc5){return{'model':db[_0x1a0fc5[_0xfde9('0x20')]],'as':_0x1a0fc5['as'],'attributes':_0x1a0fc5[_0xfde9('0x1d')],'include':_0x1a0fc5[_0xfde9('0x1f')]?_[_0xfde9('0x1e')](_0x1a0fc5[_0xfde9('0x1f')],function(_0x1514f8){return{'model':db[_0x1514f8['model']],'as':_0x1514f8['as'],'attributes':_0x1514f8['attributes']};}):[]};}):[]};}):[]:[]})[_0xfde9('0xf')](function(_0x421472){logger['info'](_0xfde9('0x18'),_0x108d38);logger[_0xfde9('0x21')](_0xfde9('0x18'),_0x108d38,JSON[_0xfde9('0x14')](_0x421472));_0x3f43cd(_0x421472);})[_0xfde9('0x17')](function(_0x595b4e){logger[_0xfde9('0x15')](_0xfde9('0x18'),_0x595b4e['message'],_0x108d38);_0x162b07(_0x244df2[_0xfde9('0x15')](0x1f4,_0x595b4e[_0xfde9('0x16')]));});});};exports[_0xfde9('0x22')]=function(_0x24bf33){var _0x17d994=this;return new Promise(function(_0x513d4b,_0x24df4b){return db['ChatQueue'][_0xfde9('0x23')]({'raw':_0x24bf33['options']?_0x24bf33[_0xfde9('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x24bf33[_0xfde9('0x1b')]?_0x24bf33['options'][_0xfde9('0x24')]||null:null,'attributes':_0x24bf33[_0xfde9('0x1b')]?_0x24bf33[_0xfde9('0x1b')][_0xfde9('0x1d')]||null:null,'include':_0x24bf33[_0xfde9('0x1b')]?_0x24bf33[_0xfde9('0x1b')][_0xfde9('0x1f')]?_[_0xfde9('0x1e')](_0x24bf33[_0xfde9('0x1b')][_0xfde9('0x1f')],function(_0x3f9c43){return{'model':db[_0x3f9c43['model']],'as':_0x3f9c43['as'],'attributes':_0x3f9c43[_0xfde9('0x1d')],'include':_0x3f9c43[_0xfde9('0x1f')]?_[_0xfde9('0x1e')](_0x3f9c43[_0xfde9('0x1f')],function(_0x4f6b6e){return{'model':db[_0x4f6b6e[_0xfde9('0x20')]],'as':_0x4f6b6e['as'],'attributes':_0x4f6b6e[_0xfde9('0x1d')],'include':_0x4f6b6e[_0xfde9('0x1f')]?_[_0xfde9('0x1e')](_0x4f6b6e[_0xfde9('0x1f')],function(_0x29bb5f){return{'model':db[_0x29bb5f['model']],'as':_0x29bb5f['as'],'attributes':_0x29bb5f[_0xfde9('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x380d26){logger[_0xfde9('0x10')](_0xfde9('0x22'),_0x24bf33);logger['debug'](_0xfde9('0x22'),_0x24bf33,JSON[_0xfde9('0x14')](_0x380d26));_0x513d4b(_0x380d26);})[_0xfde9('0x17')](function(_0x2f8f83){logger[_0xfde9('0x15')](_0xfde9('0x22'),_0x2f8f83[_0xfde9('0x16')],_0x24bf33);_0x24df4b(_0x17d994[_0xfde9('0x15')](0x1f4,_0x2f8f83['message']));});});};
\ No newline at end of file
index 7c0e2e2..273c131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['emit','removeListener','length','chatQueue:','remove'];(function(_0x23b655,_0x4feb2b){var _0x364b32=function(_0x4e41ac){while(--_0x4e41ac){_0x23b655['push'](_0x23b655['shift']());}};_0x364b32(++_0x4feb2b);}(_0xadb8,0x1d0));var _0x8adb=function(_0x3ae24a,_0x7d32f9){_0x3ae24a=_0x3ae24a-0x0;var _0x18690f=_0xadb8[_0x3ae24a];return _0x18690f;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save',_0x8adb('0x0'),'update'];function createListener(_0x2b8a76,_0x2a0b30){return function(_0x24f912){_0x2a0b30[_0x8adb('0x1')](_0x2b8a76,_0x24f912);};}function removeListener(_0x44fdf7,_0x2baedb){return function(){ChatQueueEvents[_0x8adb('0x2')](_0x44fdf7,_0x2baedb);};}exports['register']=function(_0x15bc63){for(var _0x1a5f36=0x0,_0x9f435=events[_0x8adb('0x3')];_0x1a5f36<_0x9f435;_0x1a5f36++){var _0x271bed=events[_0x1a5f36];var _0x16b932=createListener(_0x8adb('0x4')+_0x271bed,_0x15bc63);ChatQueueEvents['on'](_0x271bed,_0x16b932);}};
\ No newline at end of file
+var _0x303a=['removeListener','register','length','./chatQueue.events','remove','update','emit'];(function(_0x455ed7,_0x837529){var _0x5e0374=function(_0xdbbc08){while(--_0xdbbc08){_0x455ed7['push'](_0x455ed7['shift']());}};_0x5e0374(++_0x837529);}(_0x303a,0x1a0));var _0xa303=function(_0x32825e,_0x5981c1){_0x32825e=_0x32825e-0x0;var _0x119578=_0x303a[_0x32825e];return _0x119578;};'use strict';var ChatQueueEvents=require(_0xa303('0x0'));var events=['save',_0xa303('0x1'),_0xa303('0x2')];function createListener(_0x36e548,_0x19d27a){return function(_0x594b49){_0x19d27a[_0xa303('0x3')](_0x36e548,_0x594b49);};}function removeListener(_0x26b47c,_0x38a354){return function(){ChatQueueEvents[_0xa303('0x4')](_0x26b47c,_0x38a354);};}exports[_0xa303('0x5')]=function(_0x1c7ee9){for(var _0x2bc3d7=0x0,_0x3f61f1=events[_0xa303('0x6')];_0x2bc3d7<_0x3f61f1;_0x2bc3d7++){var _0x5d95fd=events[_0x2bc3d7];var _0x51e1ee=createListener('chatQueue:'+_0x5d95fd,_0x1c7ee9);ChatQueueEvents['on'](_0x5d95fd,_0x51e1ee);}};
\ No newline at end of file
index 3ece1af..e0bae0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x2f9226,_0x51ec7c){var _0x244843=function(_0x5070a0){while(--_0x5070a0){_0x2f9226['push'](_0x2f9226['shift']());}};_0x244843(++_0x51ec7c);}(_0xe14b,0x93));var _0xbe14=function(_0x1c9524,_0x468fee){_0x1c9524=_0x1c9524-0x0;var _0x2c6416=_0xe14b[_0x1c9524];return _0x2c6416;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
+var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x575fd0,_0x1a885a){var _0x5e5320=function(_0xb9c55c){while(--_0xb9c55c){_0x575fd0['push'](_0x575fd0['shift']());}};_0x5e5320(++_0x1a885a);}(_0xe14b,0x93));var _0xbe14=function(_0x2ff2c2,_0x5977f7){_0x2ff2c2=_0x2ff2c2-0x0;var _0x63841b=_0xe14b[_0x2ff2c2];return _0x63841b;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index 2d2842b..3a9bfec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde15=['moment','exports','STRING','DATE'];(function(_0x453e2b,_0x4f1258){var _0x50f306=function(_0x397f14){while(--_0x397f14){_0x453e2b['push'](_0x453e2b['shift']());}};_0x50f306(++_0x4f1258);}(_0xde15,0x148));var _0x5de1=function(_0x5a93e9,_0x55bfd4){_0x5a93e9=_0x5a93e9-0x0;var _0x3ad481=_0xde15[_0x5a93e9];return _0x3ad481;};'use strict';var moment=require(_0x5de1('0x0'));var Sequelize=require('sequelize');module[_0x5de1('0x1')]={'uniqueid':{'type':Sequelize[_0x5de1('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x5de1('0x3')]},'leaveAt':{'type':Sequelize[_0x5de1('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x5de1('0x3')]},'reason':{'type':Sequelize[_0x5de1('0x2')]}};
\ No newline at end of file
+var _0x9cd2=['DATE','moment','exports','STRING'];(function(_0x5d10e6,_0xfafcd0){var _0x3faa5d=function(_0x56490f){while(--_0x56490f){_0x5d10e6['push'](_0x5d10e6['shift']());}};_0x3faa5d(++_0xfafcd0);}(_0x9cd2,0x85));var _0x29cd=function(_0x3fe042,_0x1106f7){_0x3fe042=_0x3fe042-0x0;var _0x7d4a1f=_0x9cd2[_0x3fe042];return _0x7d4a1f;};'use strict';var moment=require(_0x29cd('0x0'));var Sequelize=require('sequelize');module[_0x29cd('0x1')]={'uniqueid':{'type':Sequelize[_0x29cd('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x29cd('0x2')]},'joinAt':{'type':Sequelize[_0x29cd('0x3')]},'leaveAt':{'type':Sequelize[_0x29cd('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x29cd('0x2')]}};
\ No newline at end of file
index 44053b2..f080d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38b8=['querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','catch','show','params','length','include','create','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','util','path','ejs','fs-extra','squel','crypto','to-csv'];(function(_0x365be9,_0x3c88b9){var _0x185c12=function(_0xbadbbf){while(--_0xbadbbf){_0x365be9['push'](_0x365be9['shift']());}};_0x185c12(++_0x3c88b9);}(_0x38b8,0x7f));var _0x838b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x38b8[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x838b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x838b('0x1'));var jsonpatch=require(_0x838b('0x2'));var rp=require('request-promise');var moment=require(_0x838b('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x838b('0x4'));var path=require(_0x838b('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x838b('0x6'));var fs=require('fs');var fs_extra=require(_0x838b('0x7'));var _=require('lodash');var squel=require(_0x838b('0x8'));var crypto=require(_0x838b('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x838b('0xa'));var querystring=require(_0x838b('0xb'));var Papa=require(_0x838b('0xc'));var Redis=require('ioredis');var authService=require(_0x838b('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x838b('0xe'));var hardwareService=require(_0x838b('0xf'));var logger=require(_0x838b('0x10'))(_0x838b('0x11'));var utils=require(_0x838b('0x12'));var config=require(_0x838b('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x838b('0x14'))['db'];function respondWithStatusCode(_0x281764,_0x13fe8a){_0x13fe8a=_0x13fe8a||0xcc;return function(_0x144189){if(_0x144189){return _0x281764[_0x838b('0x15')](_0x13fe8a);}return _0x281764[_0x838b('0x16')](_0x13fe8a)[_0x838b('0x17')]();};}function respondWithResult(_0x3324de,_0x1ddf43){_0x1ddf43=_0x1ddf43||0xc8;return function(_0x525c60){if(_0x525c60){return _0x3324de[_0x838b('0x16')](_0x1ddf43)['json'](_0x525c60);}};}function respondWithFilteredResult(_0x4e1085,_0x584b04){return function(_0x450b9b){if(_0x450b9b){var _0x1da340=typeof _0x584b04[_0x838b('0x18')]===_0x838b('0x19')&&typeof _0x584b04[_0x838b('0x1a')]==='undefined';var _0x21aa1a=_0x450b9b[_0x838b('0x1b')];var _0x44a62c=_0x1da340?0x0:_0x584b04[_0x838b('0x18')];var _0x48c4ab=_0x1da340?_0x450b9b[_0x838b('0x1b')]:_0x584b04[_0x838b('0x18')]+_0x584b04['limit'];var _0x4c1251;if(_0x48c4ab>=_0x21aa1a){_0x48c4ab=_0x21aa1a;_0x4c1251=0xc8;}else{_0x4c1251=0xce;}_0x4e1085[_0x838b('0x16')](_0x4c1251);return _0x4e1085['set'](_0x838b('0x1c'),_0x44a62c+'-'+_0x48c4ab+'/'+_0x21aa1a)[_0x838b('0x1d')](_0x450b9b);}return null;};}function patchUpdates(_0x432a75){return function(_0x4deb91){try{jsonpatch[_0x838b('0x1e')](_0x4deb91,_0x432a75,!![]);}catch(_0x389a99){return BPromise[_0x838b('0x1f')](_0x389a99);}return _0x4deb91[_0x838b('0x20')]();};}function saveUpdates(_0x371082,_0x3f8848){return function(_0x11de0e){if(_0x11de0e){return _0x11de0e[_0x838b('0x21')](_0x371082)[_0x838b('0x22')](function(_0xd48f3b){return _0xd48f3b;});}return null;};}function removeEntity(_0x2eecf9,_0xba76){return function(_0x451089){if(_0x451089){return _0x451089[_0x838b('0x23')]()['then'](function(){_0x2eecf9[_0x838b('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51adc6,_0x430400){return function(_0x2bc24c){if(!_0x2bc24c){_0x51adc6[_0x838b('0x15')](0x194);}return _0x2bc24c;};}function handleError(_0x5cec50,_0x302445){_0x302445=_0x302445||0x1f4;return function(_0x27f385){logger['error'](_0x27f385[_0x838b('0x24')]);if(_0x27f385[_0x838b('0x25')]){delete _0x27f385['name'];}_0x5cec50['status'](_0x302445)['send'](_0x27f385);};}exports['index']=function(_0x4f6179,_0x4b46bc){var _0x1e74a6={},_0x227876={},_0x5b66f6={'count':0x0,'rows':[]};var _0x5aeeca=_[_0x838b('0x26')](db[_0x838b('0x27')][_0x838b('0x28')],function(_0x29e161){return{'name':_0x29e161[_0x838b('0x29')],'type':_0x29e161[_0x838b('0x2a')][_0x838b('0x2b')]};});_0x227876[_0x838b('0x2c')]=_[_0x838b('0x26')](_0x5aeeca,'name');_0x227876[_0x838b('0x2d')]=_[_0x838b('0x2e')](_0x4f6179[_0x838b('0x2d')]);_0x227876[_0x838b('0x2f')]=_['intersection'](_0x227876[_0x838b('0x2c')],_0x227876[_0x838b('0x2d')]);_0x1e74a6[_0x838b('0x30')]=_[_0x838b('0x31')](_0x227876[_0x838b('0x2c')],qs['fields'](_0x4f6179[_0x838b('0x2d')][_0x838b('0x32')]));_0x1e74a6[_0x838b('0x30')]=_0x1e74a6[_0x838b('0x30')]['length']?_0x1e74a6[_0x838b('0x30')]:_0x227876[_0x838b('0x2c')];if(!_0x4f6179['query'][_0x838b('0x33')](_0x838b('0x34'))){_0x1e74a6[_0x838b('0x1a')]=qs[_0x838b('0x1a')](_0x4f6179[_0x838b('0x2d')]['limit']);_0x1e74a6[_0x838b('0x18')]=qs[_0x838b('0x18')](_0x4f6179['query'][_0x838b('0x18')]);}_0x1e74a6['order']=qs[_0x838b('0x35')](_0x4f6179['query'][_0x838b('0x35')]);_0x1e74a6['where']=qs[_0x838b('0x2f')](_[_0x838b('0x36')](_0x4f6179[_0x838b('0x2d')],_0x227876[_0x838b('0x2f')]),_0x5aeeca);if(_0x4f6179[_0x838b('0x2d')][_0x838b('0x37')]){_0x1e74a6[_0x838b('0x38')]=_[_0x838b('0x39')](_0x1e74a6[_0x838b('0x38')],{'$or':_[_0x838b('0x26')](_0x5aeeca,function(_0x4ee9c2){if(_0x4ee9c2[_0x838b('0x2a')]!=='VIRTUAL'){var _0x24958f={};_0x24958f[_0x4ee9c2[_0x838b('0x25')]]={'$like':'%'+_0x4f6179[_0x838b('0x2d')][_0x838b('0x37')]+'%'};return _0x24958f;}})});}_0x1e74a6=_[_0x838b('0x39')]({},_0x1e74a6,_0x4f6179[_0x838b('0x3a')]);var _0x26dfab={'where':_0x1e74a6[_0x838b('0x38')]};return db['ChatQueueReport'][_0x838b('0x1b')](_0x26dfab)[_0x838b('0x22')](function(_0x18db4f){_0x5b66f6[_0x838b('0x1b')]=_0x18db4f;if(_0x4f6179[_0x838b('0x2d')][_0x838b('0x3b')]){_0x1e74a6['include']=[{'all':!![]}];}return db[_0x838b('0x27')]['findAll'](_0x1e74a6);})[_0x838b('0x22')](function(_0x3e67de){_0x5b66f6['rows']=_0x3e67de;return _0x5b66f6;})[_0x838b('0x22')](respondWithFilteredResult(_0x4b46bc,_0x1e74a6))[_0x838b('0x3c')](handleError(_0x4b46bc,null));};exports[_0x838b('0x3d')]=function(_0x8e18a8,_0x4a66fb){var _0x51689a={'raw':!![],'where':{'id':_0x8e18a8[_0x838b('0x3e')]['id']}},_0x3e727d={};_0x3e727d['model']=_[_0x838b('0x2e')](db['ChatQueueReport'][_0x838b('0x28')]);_0x3e727d[_0x838b('0x2d')]=_[_0x838b('0x2e')](_0x8e18a8[_0x838b('0x2d')]);_0x3e727d[_0x838b('0x2f')]=_['intersection'](_0x3e727d[_0x838b('0x2c')],_0x3e727d['query']);_0x51689a[_0x838b('0x30')]=_['intersection'](_0x3e727d[_0x838b('0x2c')],qs[_0x838b('0x32')](_0x8e18a8['query'][_0x838b('0x32')]));_0x51689a[_0x838b('0x30')]=_0x51689a['attributes'][_0x838b('0x3f')]?_0x51689a['attributes']:_0x3e727d[_0x838b('0x2c')];if(_0x8e18a8[_0x838b('0x2d')]['includeAll']){_0x51689a[_0x838b('0x40')]=[{'all':!![]}];}_0x51689a=_['merge']({},_0x51689a,_0x8e18a8['options']);return db['ChatQueueReport']['find'](_0x51689a)[_0x838b('0x22')](handleEntityNotFound(_0x4a66fb,null))[_0x838b('0x22')](respondWithResult(_0x4a66fb,null))[_0x838b('0x3c')](handleError(_0x4a66fb,null));};exports[_0x838b('0x41')]=function(_0x829aef,_0x1aaeb2){return db['ChatQueueReport'][_0x838b('0x41')](_0x829aef['body'],{})[_0x838b('0x22')](respondWithResult(_0x1aaeb2,0xc9))['catch'](handleError(_0x1aaeb2,null));};exports[_0x838b('0x21')]=function(_0x2b8990,_0x2d7e50){if(_0x2b8990[_0x838b('0x42')]['id']){delete _0x2b8990[_0x838b('0x42')]['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x2b8990[_0x838b('0x3e')]['id']}})[_0x838b('0x22')](handleEntityNotFound(_0x2d7e50,null))['then'](saveUpdates(_0x2b8990['body'],null))[_0x838b('0x22')](respondWithResult(_0x2d7e50,null))[_0x838b('0x3c')](handleError(_0x2d7e50,null));};exports[_0x838b('0x23')]=function(_0xa54216,_0x438afa){return db[_0x838b('0x27')][_0x838b('0x43')]({'where':{'id':_0xa54216[_0x838b('0x3e')]['id']}})[_0x838b('0x22')](handleEntityNotFound(_0x438afa,null))[_0x838b('0x22')](removeEntity(_0x438afa,null))['catch'](handleError(_0x438afa,null));};exports['describe']=function(_0x481f74,_0x3f5b6b){return db[_0x838b('0x27')][_0x838b('0x44')]()[_0x838b('0x22')](respondWithResult(_0x3f5b6b,null))[_0x838b('0x3c')](handleError(_0x3f5b6b,null));};
\ No newline at end of file
+var _0x5226=['bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','stack','name','index','map','ChatQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','type','filter','includeAll','findAll','rows','show','params','include','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x2c094f,_0xe5a1b0){var _0x2f7176=function(_0x28e5f5){while(--_0x28e5f5){_0x2c094f['push'](_0x2c094f['shift']());}};_0x2f7176(++_0xe5a1b0);}(_0x5226,0x137));var _0x6522=function(_0x4ba534,_0x392b4c){_0x4ba534=_0x4ba534-0x0;var _0x46f888=_0x5226[_0x4ba534];return _0x46f888;};'use strict';var emlformat=require(_0x6522('0x0'));var rimraf=require(_0x6522('0x1'));var zipdir=require(_0x6522('0x2'));var jsonpatch=require(_0x6522('0x3'));var rp=require(_0x6522('0x4'));var moment=require('moment');var BPromise=require(_0x6522('0x5'));var Mustache=require(_0x6522('0x6'));var util=require(_0x6522('0x7'));var path=require('path');var sox=require(_0x6522('0x8'));var csv=require('to-csv');var ejs=require(_0x6522('0x9'));var fs=require('fs');var fs_extra=require(_0x6522('0xa'));var _=require(_0x6522('0xb'));var squel=require(_0x6522('0xc'));var crypto=require(_0x6522('0xd'));var jsforce=require(_0x6522('0xe'));var deskjs=require(_0x6522('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6522('0x10'));var Redis=require(_0x6522('0x11'));var authService=require(_0x6522('0x12'));var qs=require(_0x6522('0x13'));var as=require(_0x6522('0x14'));var hardwareService=require(_0x6522('0x15'));var logger=require(_0x6522('0x16'))(_0x6522('0x17'));var utils=require(_0x6522('0x18'));var config=require(_0x6522('0x19'));var licenseUtil=require(_0x6522('0x1a'));var db=require(_0x6522('0x1b'))['db'];function respondWithStatusCode(_0xf95f99,_0x5a0361){_0x5a0361=_0x5a0361||0xcc;return function(_0x15cb73){if(_0x15cb73){return _0xf95f99[_0x6522('0x1c')](_0x5a0361);}return _0xf95f99[_0x6522('0x1d')](_0x5a0361)[_0x6522('0x1e')]();};}function respondWithResult(_0x469436,_0x56f7ef){_0x56f7ef=_0x56f7ef||0xc8;return function(_0x3c855a){if(_0x3c855a){return _0x469436[_0x6522('0x1d')](_0x56f7ef)[_0x6522('0x1f')](_0x3c855a);}};}function respondWithFilteredResult(_0x1b7e38,_0xc1470c){return function(_0x3e0369){if(_0x3e0369){var _0x31ddff=typeof _0xc1470c[_0x6522('0x20')]===_0x6522('0x21')&&typeof _0xc1470c[_0x6522('0x22')]===_0x6522('0x21');var _0x434a84=_0x3e0369['count'];var _0x6f0909=_0x31ddff?0x0:_0xc1470c[_0x6522('0x20')];var _0x2bb08c=_0x31ddff?_0x3e0369[_0x6522('0x23')]:_0xc1470c['offset']+_0xc1470c[_0x6522('0x22')];var _0x9a5622;if(_0x2bb08c>=_0x434a84){_0x2bb08c=_0x434a84;_0x9a5622=0xc8;}else{_0x9a5622=0xce;}_0x1b7e38['status'](_0x9a5622);return _0x1b7e38[_0x6522('0x24')]('Content-Range',_0x6f0909+'-'+_0x2bb08c+'/'+_0x434a84)[_0x6522('0x1f')](_0x3e0369);}return null;};}function patchUpdates(_0xe419a9){return function(_0x90cd3b){try{jsonpatch[_0x6522('0x25')](_0x90cd3b,_0xe419a9,!![]);}catch(_0x44bd23){return BPromise[_0x6522('0x26')](_0x44bd23);}return _0x90cd3b['save']();};}function saveUpdates(_0x1b6ad2,_0x174004){return function(_0x13ec44){if(_0x13ec44){return _0x13ec44[_0x6522('0x27')](_0x1b6ad2)[_0x6522('0x28')](function(_0x16c3cf){return _0x16c3cf;});}return null;};}function removeEntity(_0x49c7ac,_0x11ed35){return function(_0x415f16){if(_0x415f16){return _0x415f16[_0x6522('0x29')]()[_0x6522('0x28')](function(){_0x49c7ac['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x263d7d,_0x38045b){return function(_0x2c20dc){if(!_0x2c20dc){_0x263d7d[_0x6522('0x1c')](0x194);}return _0x2c20dc;};}function handleError(_0x499ec3,_0x195b5e){_0x195b5e=_0x195b5e||0x1f4;return function(_0x1af303){logger['error'](_0x1af303[_0x6522('0x2a')]);if(_0x1af303[_0x6522('0x2b')]){delete _0x1af303[_0x6522('0x2b')];}_0x499ec3[_0x6522('0x1d')](_0x195b5e)['send'](_0x1af303);};}exports[_0x6522('0x2c')]=function(_0x27bbc0,_0x1a46f6){var _0x2851cd={},_0x13a851={},_0xca94f4={'count':0x0,'rows':[]};var _0x252522=_[_0x6522('0x2d')](db[_0x6522('0x2e')][_0x6522('0x2f')],function(_0x9e6606){return{'name':_0x9e6606[_0x6522('0x30')],'type':_0x9e6606['type'][_0x6522('0x31')]};});_0x13a851[_0x6522('0x32')]=_[_0x6522('0x2d')](_0x252522,_0x6522('0x2b'));_0x13a851[_0x6522('0x33')]=_[_0x6522('0x34')](_0x27bbc0['query']);_0x13a851[_0x6522('0x35')]=_[_0x6522('0x36')](_0x13a851[_0x6522('0x32')],_0x13a851[_0x6522('0x33')]);_0x2851cd[_0x6522('0x37')]=_[_0x6522('0x36')](_0x13a851[_0x6522('0x32')],qs[_0x6522('0x38')](_0x27bbc0[_0x6522('0x33')][_0x6522('0x38')]));_0x2851cd[_0x6522('0x37')]=_0x2851cd[_0x6522('0x37')][_0x6522('0x39')]?_0x2851cd['attributes']:_0x13a851['model'];if(!_0x27bbc0['query'][_0x6522('0x3a')](_0x6522('0x3b'))){_0x2851cd[_0x6522('0x22')]=qs[_0x6522('0x22')](_0x27bbc0[_0x6522('0x33')][_0x6522('0x22')]);_0x2851cd['offset']=qs[_0x6522('0x20')](_0x27bbc0[_0x6522('0x33')][_0x6522('0x20')]);}_0x2851cd[_0x6522('0x3c')]=qs[_0x6522('0x3d')](_0x27bbc0['query']['sort']);_0x2851cd['where']=qs[_0x6522('0x35')](_[_0x6522('0x3e')](_0x27bbc0['query'],_0x13a851['filters']),_0x252522);if(_0x27bbc0[_0x6522('0x33')]['filter']){_0x2851cd['where']=_[_0x6522('0x3f')](_0x2851cd[_0x6522('0x40')],{'$or':_[_0x6522('0x2d')](_0x252522,function(_0x1b269c){if(_0x1b269c[_0x6522('0x41')]!=='VIRTUAL'){var _0x283375={};_0x283375[_0x1b269c[_0x6522('0x2b')]]={'$like':'%'+_0x27bbc0[_0x6522('0x33')][_0x6522('0x42')]+'%'};return _0x283375;}})});}_0x2851cd=_[_0x6522('0x3f')]({},_0x2851cd,_0x27bbc0['options']);var _0x1d2676={'where':_0x2851cd[_0x6522('0x40')]};return db['ChatQueueReport']['count'](_0x1d2676)[_0x6522('0x28')](function(_0xea614){_0xca94f4[_0x6522('0x23')]=_0xea614;if(_0x27bbc0[_0x6522('0x33')][_0x6522('0x43')]){_0x2851cd['include']=[{'all':!![]}];}return db[_0x6522('0x2e')][_0x6522('0x44')](_0x2851cd);})[_0x6522('0x28')](function(_0x3acdd0){_0xca94f4[_0x6522('0x45')]=_0x3acdd0;return _0xca94f4;})[_0x6522('0x28')](respondWithFilteredResult(_0x1a46f6,_0x2851cd))['catch'](handleError(_0x1a46f6,null));};exports[_0x6522('0x46')]=function(_0x5df5a7,_0x566a90){var _0x304b1f={'raw':!![],'where':{'id':_0x5df5a7[_0x6522('0x47')]['id']}},_0x1aef5e={};_0x1aef5e[_0x6522('0x32')]=_['keys'](db[_0x6522('0x2e')][_0x6522('0x2f')]);_0x1aef5e[_0x6522('0x33')]=_['keys'](_0x5df5a7[_0x6522('0x33')]);_0x1aef5e['filters']=_[_0x6522('0x36')](_0x1aef5e[_0x6522('0x32')],_0x1aef5e[_0x6522('0x33')]);_0x304b1f['attributes']=_[_0x6522('0x36')](_0x1aef5e[_0x6522('0x32')],qs[_0x6522('0x38')](_0x5df5a7[_0x6522('0x33')][_0x6522('0x38')]));_0x304b1f[_0x6522('0x37')]=_0x304b1f[_0x6522('0x37')][_0x6522('0x39')]?_0x304b1f[_0x6522('0x37')]:_0x1aef5e[_0x6522('0x32')];if(_0x5df5a7['query'][_0x6522('0x43')]){_0x304b1f[_0x6522('0x48')]=[{'all':!![]}];}_0x304b1f=_[_0x6522('0x3f')]({},_0x304b1f,_0x5df5a7[_0x6522('0x49')]);return db[_0x6522('0x2e')][_0x6522('0x4a')](_0x304b1f)[_0x6522('0x28')](handleEntityNotFound(_0x566a90,null))[_0x6522('0x28')](respondWithResult(_0x566a90,null))[_0x6522('0x4b')](handleError(_0x566a90,null));};exports[_0x6522('0x4c')]=function(_0x59ea93,_0x500855){return db[_0x6522('0x2e')][_0x6522('0x4c')](_0x59ea93['body'],{})[_0x6522('0x28')](respondWithResult(_0x500855,0xc9))[_0x6522('0x4b')](handleError(_0x500855,null));};exports['update']=function(_0x4d357d,_0x498ea4){if(_0x4d357d['body']['id']){delete _0x4d357d[_0x6522('0x4d')]['id'];}return db[_0x6522('0x2e')][_0x6522('0x4a')]({'where':{'id':_0x4d357d[_0x6522('0x47')]['id']}})[_0x6522('0x28')](handleEntityNotFound(_0x498ea4,null))[_0x6522('0x28')](saveUpdates(_0x4d357d['body'],null))[_0x6522('0x28')](respondWithResult(_0x498ea4,null))[_0x6522('0x4b')](handleError(_0x498ea4,null));};exports['destroy']=function(_0x36c429,_0x3ab0b3){return db[_0x6522('0x2e')][_0x6522('0x4a')]({'where':{'id':_0x36c429[_0x6522('0x47')]['id']}})['then'](handleEntityNotFound(_0x3ab0b3,null))[_0x6522('0x28')](removeEntity(_0x3ab0b3,null))[_0x6522('0x4b')](handleError(_0x3ab0b3,null));};exports[_0x6522('0x4e')]=function(_0x4ba2b7,_0xf02f55){return db[_0x6522('0x2e')][_0x6522('0x4e')]()[_0x6522('0x28')](respondWithResult(_0xf02f55,null))[_0x6522('0x4b')](handleError(_0xf02f55,null));};
\ No newline at end of file
index 2aac18f..bf5e08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0xfaaee3,_0x3a820f){var _0x3ed490=function(_0x392553){while(--_0x392553){_0xfaaee3['push'](_0xfaaee3['shift']());}};_0x3ed490(++_0x3a820f);}(_0x757a,0xde));var _0xa757=function(_0x48235d,_0x31ef5f){_0x48235d=_0x48235d-0x0;var _0x1ef7f1=_0x757a[_0x48235d];return _0x1ef7f1;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['report_chat_queue','uniqueid','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define'];(function(_0xe452c5,_0x3810e8){var _0x119b9a=function(_0x4cf66a){while(--_0x4cf66a){_0xe452c5['push'](_0xe452c5['shift']());}};_0x119b9a(++_0x3810e8);}(_0x757a,0xde));var _0xa757=function(_0x550a0c,_0x354bf6){_0x550a0c=_0x550a0c-0x0;var _0x1a918e=_0x757a[_0x550a0c];return _0x1a918e;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ChatQueueReport',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[{'name':_0xa757('0xa'),'fields':[_0xa757('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 2ae3101..2b426ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc741=['bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','error','code','ChatQueueReport,\x20%s,\x20%s','message','catch','create','body','options','raw','CreateChatQueueReport','debug','stringify','UpdateChatQueueReport','ChatQueueReport','update','where','attributes','limit','util','moment'];(function(_0x654995,_0xb64fc1){var _0x1b95cb=function(_0x4a149d){while(--_0x4a149d){_0x654995['push'](_0x654995['shift']());}};_0x1b95cb(++_0xb64fc1);}(_0xc741,0x99));var _0x1c74=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xc741[_0x209941];return _0x1e8729;};'use strict';var _=require('lodash');var util=require(_0x1c74('0x0'));var moment=require(_0x1c74('0x1'));var BPromise=require(_0x1c74('0x2'));var rs=require(_0x1c74('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1c74('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x1c74('0x5'))('rpc');var config=require(_0x1c74('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1c74('0x7')][_0x1c74('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x555313,_0xb0222a,_0x4292c8){return new BPromise(function(_0x55b241,_0x2b7755){return client[_0x1c74('0x9')](_0x555313,_0x4292c8)[_0x1c74('0xa')](function(_0x5a9068){logger[_0x1c74('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0xb0222a,'request\x20sent');logger['debug']('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0xb0222a,_0x1c74('0xc'),JSON['stringify'](_0x5a9068));if(_0x5a9068[_0x1c74('0xd')]){if(_0x5a9068[_0x1c74('0xd')][_0x1c74('0xe')]===0x1f4){logger[_0x1c74('0xd')](_0x1c74('0xf'),_0xb0222a,_0x5a9068['error'][_0x1c74('0x10')]);return _0x2b7755(_0x5a9068['error'][_0x1c74('0x10')]);}logger['error'](_0x1c74('0xf'),_0xb0222a,_0x5a9068[_0x1c74('0xd')][_0x1c74('0x10')]);return _0x55b241(_0x5a9068[_0x1c74('0xd')][_0x1c74('0x10')]);}else{logger[_0x1c74('0xb')](_0x1c74('0xf'),_0xb0222a,'request\x20sent');_0x55b241(_0x5a9068['result'][_0x1c74('0x10')]);}})[_0x1c74('0x11')](function(_0x253062){logger['error'](_0x1c74('0xf'),_0xb0222a,_0x253062);_0x2b7755(_0x253062);});});}exports['CreateChatQueueReport']=function(_0x9ee805){var _0xc1bfb8=this;return new Promise(function(_0x497d81,_0x2540e2){return db['ChatQueueReport'][_0x1c74('0x12')](_0x9ee805[_0x1c74('0x13')],{'raw':_0x9ee805[_0x1c74('0x14')]?_0x9ee805[_0x1c74('0x14')][_0x1c74('0x15')]===undefined?!![]:![]:!![]})[_0x1c74('0xa')](function(_0xe2357a){logger['info'](_0x1c74('0x16'),_0x9ee805);logger[_0x1c74('0x17')](_0x1c74('0x16'),_0x9ee805,JSON[_0x1c74('0x18')](_0xe2357a));_0x497d81(_0xe2357a);})[_0x1c74('0x11')](function(_0x407ca7){logger[_0x1c74('0xd')](_0x1c74('0x16'),_0x407ca7[_0x1c74('0x10')],_0x9ee805);_0x2540e2(_0xc1bfb8[_0x1c74('0xd')](0x1f4,_0x407ca7['message']));});});};exports[_0x1c74('0x19')]=function(_0xf6f70b){var _0x5b45f4=this;return new Promise(function(_0x282a0e,_0x269944){return db[_0x1c74('0x1a')][_0x1c74('0x1b')](_0xf6f70b[_0x1c74('0x13')],{'raw':_0xf6f70b[_0x1c74('0x14')]?_0xf6f70b[_0x1c74('0x14')][_0x1c74('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf6f70b['options']?_0xf6f70b[_0x1c74('0x14')][_0x1c74('0x1c')]||null:null,'attributes':_0xf6f70b['options']?_0xf6f70b['options'][_0x1c74('0x1d')]||null:null,'limit':_0xf6f70b[_0x1c74('0x14')]?_0xf6f70b['options'][_0x1c74('0x1e')]||null:null})[_0x1c74('0xa')](function(_0x447d0a){logger[_0x1c74('0xb')](_0x1c74('0x19'),_0xf6f70b);logger[_0x1c74('0x17')](_0x1c74('0x19'),_0xf6f70b,JSON['stringify'](_0x447d0a));_0x282a0e(_0x447d0a);})[_0x1c74('0x11')](function(_0x5cceec){logger[_0x1c74('0xd')](_0x1c74('0x19'),_0x5cceec[_0x1c74('0x10')],_0xf6f70b);_0x269944(_0x5b45f4[_0x1c74('0xd')](0x1f4,_0x5cceec[_0x1c74('0x10')]));});});};
\ No newline at end of file
+var _0x148c=['result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','then','stringify','UpdateChatQueueReport','update','raw','where','attributes','limit','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request\x20sent','debug','error','code','ChatQueueReport,\x20%s,\x20%s','message','info'];(function(_0x34613c,_0x52a3f4){var _0x21d92f=function(_0x318c3f){while(--_0x318c3f){_0x34613c['push'](_0x34613c['shift']());}};_0x21d92f(++_0x52a3f4);}(_0x148c,0x18f));var _0xc148=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x148c[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xc148('0x0'));var util=require('util');var moment=require(_0xc148('0x1'));var BPromise=require(_0xc148('0x2'));var rs=require(_0xc148('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc148('0x4'))['db'];var utils=require(_0xc148('0x5'));var logger=require(_0xc148('0x6'))(_0xc148('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc148('0x8')][_0xc148('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x50a048,_0x4f3a50,_0x8654f2){return new BPromise(function(_0x1df6f5,_0x255989){return client['request'](_0x50a048,_0x8654f2)['then'](function(_0x11fbbd){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x4f3a50,_0xc148('0xa'));logger[_0xc148('0xb')]('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x4f3a50,_0xc148('0xa'),JSON['stringify'](_0x11fbbd));if(_0x11fbbd[_0xc148('0xc')]){if(_0x11fbbd['error'][_0xc148('0xd')]===0x1f4){logger['error'](_0xc148('0xe'),_0x4f3a50,_0x11fbbd['error']['message']);return _0x255989(_0x11fbbd[_0xc148('0xc')][_0xc148('0xf')]);}logger[_0xc148('0xc')](_0xc148('0xe'),_0x4f3a50,_0x11fbbd[_0xc148('0xc')]['message']);return _0x1df6f5(_0x11fbbd[_0xc148('0xc')]['message']);}else{logger[_0xc148('0x10')](_0xc148('0xe'),_0x4f3a50,_0xc148('0xa'));_0x1df6f5(_0x11fbbd[_0xc148('0x11')][_0xc148('0xf')]);}})[_0xc148('0x12')](function(_0x5221e1){logger[_0xc148('0xc')](_0xc148('0xe'),_0x4f3a50,_0x5221e1);_0x255989(_0x5221e1);});});}exports[_0xc148('0x13')]=function(_0x18b914){var _0x5aaede=this;return new Promise(function(_0x105cef,_0x43a597){return db[_0xc148('0x14')][_0xc148('0x15')](_0x18b914[_0xc148('0x16')],{'raw':_0x18b914[_0xc148('0x17')]?_0x18b914[_0xc148('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xc148('0x18')](function(_0x529833){logger[_0xc148('0x10')]('CreateChatQueueReport',_0x18b914);logger[_0xc148('0xb')](_0xc148('0x13'),_0x18b914,JSON[_0xc148('0x19')](_0x529833));_0x105cef(_0x529833);})[_0xc148('0x12')](function(_0x281719){logger[_0xc148('0xc')](_0xc148('0x13'),_0x281719[_0xc148('0xf')],_0x18b914);_0x43a597(_0x5aaede['error'](0x1f4,_0x281719[_0xc148('0xf')]));});});};exports[_0xc148('0x1a')]=function(_0x33464c){var _0x25614e=this;return new Promise(function(_0x4f328f,_0x365eef){return db[_0xc148('0x14')][_0xc148('0x1b')](_0x33464c[_0xc148('0x16')],{'raw':_0x33464c[_0xc148('0x17')]?_0x33464c['options'][_0xc148('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33464c[_0xc148('0x17')]?_0x33464c[_0xc148('0x17')][_0xc148('0x1d')]||null:null,'attributes':_0x33464c['options']?_0x33464c[_0xc148('0x17')][_0xc148('0x1e')]||null:null,'limit':_0x33464c[_0xc148('0x17')]?_0x33464c[_0xc148('0x17')][_0xc148('0x1f')]||null:null})['then'](function(_0x41e2ba){logger[_0xc148('0x10')](_0xc148('0x1a'),_0x33464c);logger[_0xc148('0xb')](_0xc148('0x1a'),_0x33464c,JSON[_0xc148('0x19')](_0x41e2ba));_0x4f328f(_0x41e2ba);})[_0xc148('0x12')](function(_0x564395){logger['error']('UpdateChatQueueReport',_0x564395[_0xc148('0xf')],_0x33464c);_0x365eef(_0x25614e[_0xc148('0xc')](0x1f4,_0x564395[_0xc148('0xf')]));});});};
\ No newline at end of file
index 561e0b1..3f7d22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe222=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','post','put','update','delete','/:id','destroy','exports','util','path'];(function(_0x59f175,_0x21f473){var _0x4600b5=function(_0x16b867){while(--_0x16b867){_0x59f175['push'](_0x59f175['shift']());}};_0x4600b5(++_0x21f473);}(_0xe222,0x152));var _0x2e22=function(_0x593564,_0x43583f){_0x593564=_0x593564-0x0;var _0x211a89=_0xe222[_0x593564];return _0x211a89;};'use strict';var multer=require('multer');var util=require(_0x2e22('0x0'));var path=require(_0x2e22('0x1'));var timeout=require(_0x2e22('0x2'));var express=require(_0x2e22('0x3'));var router=express[_0x2e22('0x4')]();var fs_extra=require(_0x2e22('0x5'));var auth=require(_0x2e22('0x6'));var interaction=require(_0x2e22('0x7'));var config=require(_0x2e22('0x8'));var controller=require('./chatQueueReport.controller');router[_0x2e22('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2e22('0x9')](_0x2e22('0xa'),auth[_0x2e22('0xb')](),controller[_0x2e22('0xc')]);router[_0x2e22('0x9')]('/:id',auth[_0x2e22('0xb')](),controller['show']);router[_0x2e22('0xd')]('/',auth[_0x2e22('0xb')](),controller['create']);router[_0x2e22('0xe')]('/:id',auth[_0x2e22('0xb')](),controller[_0x2e22('0xf')]);router[_0x2e22('0x10')](_0x2e22('0x11'),auth[_0x2e22('0xb')](),controller[_0x2e22('0x12')]);module[_0x2e22('0x13')]=router;
\ No newline at end of file
+var _0x0bcf=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','put'];(function(_0x22b2a0,_0x5c03f1){var _0x413a1c=function(_0x3b3986){while(--_0x3b3986){_0x22b2a0['push'](_0x22b2a0['shift']());}};_0x413a1c(++_0x5c03f1);}(_0x0bcf,0x16a));var _0xf0bc=function(_0x3d2527,_0x308cf7){_0x3d2527=_0x3d2527-0x0;var _0x42e55a=_0x0bcf[_0x3d2527];return _0x42e55a;};'use strict';var multer=require(_0xf0bc('0x0'));var util=require(_0xf0bc('0x1'));var path=require(_0xf0bc('0x2'));var timeout=require(_0xf0bc('0x3'));var express=require(_0xf0bc('0x4'));var router=express['Router']();var fs_extra=require(_0xf0bc('0x5'));var auth=require(_0xf0bc('0x6'));var interaction=require(_0xf0bc('0x7'));var config=require(_0xf0bc('0x8'));var controller=require(_0xf0bc('0x9'));router[_0xf0bc('0xa')]('/',auth[_0xf0bc('0xb')](),controller[_0xf0bc('0xc')]);router[_0xf0bc('0xa')](_0xf0bc('0xd'),auth[_0xf0bc('0xb')](),controller['describe']);router[_0xf0bc('0xa')](_0xf0bc('0xe'),auth['isAuthenticated'](),controller[_0xf0bc('0xf')]);router[_0xf0bc('0x10')]('/',auth[_0xf0bc('0xb')](),controller['create']);router[_0xf0bc('0x11')](_0xf0bc('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xf0bc('0xe'),auth[_0xf0bc('0xb')](),controller[_0xf0bc('0x12')]);module[_0xf0bc('0x13')]=router;
\ No newline at end of file
index 5da1522..0f6fc2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x4397e4,_0x579cb7){var _0x18fcb2=function(_0x549a4b){while(--_0x549a4b){_0x4397e4['push'](_0x4397e4['shift']());}};_0x18fcb2(++_0x579cb7);}(_0xedd9,0xfc));var _0x9edd=function(_0x4e075b,_0x26c178){_0x4e075b=_0x4e075b-0x0;var _0x5d44a7=_0xedd9[_0x4e075b];return _0x5d44a7;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x583e98,_0x5534f5){var _0x84cc30=function(_0x4201ed){while(--_0x4201ed){_0x583e98['push'](_0x583e98['shift']());}};_0x84cc30(++_0x5534f5);}(_0x34e8,0x12c));var _0x834e=function(_0x1ac516,_0x3161e0){_0x1ac516=_0x1ac516-0x0;var _0x197073=_0x34e8[_0x1ac516];return _0x197073;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index d327fb9..b9eefce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6156=['rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','offset','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','intersection','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','count','includeAll','include','ChatTransferReport','findAll','catch','show','params','keys','fields','create','body','find','describe','eml-format'];(function(_0x1ac6e5,_0x40f47f){var _0x5877dc=function(_0x99caea){while(--_0x99caea){_0x1ac6e5['push'](_0x1ac6e5['shift']());}};_0x5877dc(++_0x40f47f);}(_0x6156,0xec));var _0x6615=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x6156[_0x13ce0c];return _0x4388fb;};'use strict';var emlformat=require(_0x6615('0x0'));var rimraf=require(_0x6615('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6615('0x2'));var moment=require(_0x6615('0x3'));var BPromise=require(_0x6615('0x4'));var Mustache=require('mustache');var util=require(_0x6615('0x5'));var path=require(_0x6615('0x6'));var sox=require(_0x6615('0x7'));var csv=require(_0x6615('0x8'));var ejs=require(_0x6615('0x9'));var fs=require('fs');var fs_extra=require(_0x6615('0xa'));var _=require(_0x6615('0xb'));var squel=require('squel');var crypto=require(_0x6615('0xc'));var jsforce=require(_0x6615('0xd'));var deskjs=require(_0x6615('0xe'));var toCsv=require(_0x6615('0x8'));var querystring=require(_0x6615('0xf'));var Papa=require(_0x6615('0x10'));var Redis=require(_0x6615('0x11'));var authService=require(_0x6615('0x12'));var qs=require(_0x6615('0x13'));var as=require(_0x6615('0x14'));var hardwareService=require(_0x6615('0x15'));var logger=require(_0x6615('0x16'))(_0x6615('0x17'));var utils=require(_0x6615('0x18'));var config=require(_0x6615('0x19'));var licenseUtil=require(_0x6615('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x194807,_0x265984){_0x265984=_0x265984||0xcc;return function(_0xe068){if(_0xe068){return _0x194807[_0x6615('0x1b')](_0x265984);}return _0x194807[_0x6615('0x1c')](_0x265984)['end']();};}function respondWithResult(_0x2ee55e,_0x5a2a90){_0x5a2a90=_0x5a2a90||0xc8;return function(_0x2c9a10){if(_0x2c9a10){return _0x2ee55e['status'](_0x5a2a90)[_0x6615('0x1d')](_0x2c9a10);}};}function respondWithFilteredResult(_0x1206fb,_0x3e5786){return function(_0x4ed941){if(_0x4ed941){var _0x5b9d2d=typeof _0x3e5786['offset']===_0x6615('0x1e')&&typeof _0x3e5786[_0x6615('0x1f')]===_0x6615('0x1e');var _0x20e3d3=_0x4ed941['count'];var _0x5c7811=_0x5b9d2d?0x0:_0x3e5786[_0x6615('0x20')];var _0x4d4ee3=_0x5b9d2d?_0x4ed941['count']:_0x3e5786['offset']+_0x3e5786[_0x6615('0x1f')];var _0xc1c5f9;if(_0x4d4ee3>=_0x20e3d3){_0x4d4ee3=_0x20e3d3;_0xc1c5f9=0xc8;}else{_0xc1c5f9=0xce;}_0x1206fb[_0x6615('0x1c')](_0xc1c5f9);return _0x1206fb[_0x6615('0x21')]('Content-Range',_0x5c7811+'-'+_0x4d4ee3+'/'+_0x20e3d3)[_0x6615('0x1d')](_0x4ed941);}return null;};}function patchUpdates(_0x3690db){return function(_0x3a74f4){try{jsonpatch[_0x6615('0x22')](_0x3a74f4,_0x3690db,!![]);}catch(_0x57097c){return BPromise[_0x6615('0x23')](_0x57097c);}return _0x3a74f4[_0x6615('0x24')]();};}function saveUpdates(_0x3e8e92,_0x5f10ce){return function(_0x22997e){if(_0x22997e){return _0x22997e[_0x6615('0x25')](_0x3e8e92)[_0x6615('0x26')](function(_0xb5d5ab){return _0xb5d5ab;});}return null;};}function removeEntity(_0x54bfc9,_0x355d18){return function(_0x43e7a5){if(_0x43e7a5){return _0x43e7a5[_0x6615('0x27')]()[_0x6615('0x26')](function(){_0x54bfc9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa183e,_0x5e7e2a){return function(_0x51c7b6){if(!_0x51c7b6){_0xa183e[_0x6615('0x1b')](0x194);}return _0x51c7b6;};}function handleError(_0xaab77f,_0x573edf){_0x573edf=_0x573edf||0x1f4;return function(_0x3b311e){logger[_0x6615('0x28')](_0x3b311e[_0x6615('0x29')]);if(_0x3b311e[_0x6615('0x2a')]){delete _0x3b311e['name'];}_0xaab77f[_0x6615('0x1c')](_0x573edf)[_0x6615('0x2b')](_0x3b311e);};}exports[_0x6615('0x2c')]=function(_0x1056a3,_0x4e0997){var _0x5b9a67={},_0x12e007={},_0x1a904d={'count':0x0,'rows':[]};var _0x3f69df=_['map'](db['ChatTransferReport'][_0x6615('0x2d')],function(_0x3374c0){return{'name':_0x3374c0[_0x6615('0x2e')],'type':_0x3374c0[_0x6615('0x2f')][_0x6615('0x30')]};});_0x12e007[_0x6615('0x31')]=_[_0x6615('0x32')](_0x3f69df,'name');_0x12e007[_0x6615('0x33')]=_['keys'](_0x1056a3[_0x6615('0x33')]);_0x12e007['filters']=_[_0x6615('0x34')](_0x12e007[_0x6615('0x31')],_0x12e007['query']);_0x5b9a67['attributes']=_[_0x6615('0x34')](_0x12e007[_0x6615('0x31')],qs['fields'](_0x1056a3[_0x6615('0x33')]['fields']));_0x5b9a67['attributes']=_0x5b9a67['attributes'][_0x6615('0x35')]?_0x5b9a67[_0x6615('0x36')]:_0x12e007[_0x6615('0x31')];if(!_0x1056a3[_0x6615('0x33')][_0x6615('0x37')](_0x6615('0x38'))){_0x5b9a67[_0x6615('0x1f')]=qs[_0x6615('0x1f')](_0x1056a3['query']['limit']);_0x5b9a67[_0x6615('0x20')]=qs[_0x6615('0x20')](_0x1056a3[_0x6615('0x33')]['offset']);}_0x5b9a67[_0x6615('0x39')]=qs[_0x6615('0x3a')](_0x1056a3['query'][_0x6615('0x3a')]);_0x5b9a67[_0x6615('0x3b')]=qs['filters'](_[_0x6615('0x3c')](_0x1056a3[_0x6615('0x33')],_0x12e007[_0x6615('0x3d')]),_0x3f69df);if(_0x1056a3[_0x6615('0x33')][_0x6615('0x3e')]){_0x5b9a67[_0x6615('0x3b')]=_[_0x6615('0x3f')](_0x5b9a67['where'],{'$or':_[_0x6615('0x32')](_0x3f69df,function(_0x3bf173){if(_0x3bf173[_0x6615('0x2f')]!=='VIRTUAL'){var _0x428dbe={};_0x428dbe[_0x3bf173['name']]={'$like':'%'+_0x1056a3[_0x6615('0x33')][_0x6615('0x3e')]+'%'};return _0x428dbe;}})});}_0x5b9a67=_[_0x6615('0x3f')]({},_0x5b9a67,_0x1056a3[_0x6615('0x40')]);var _0x3ae011={'where':_0x5b9a67[_0x6615('0x3b')]};return db['ChatTransferReport'][_0x6615('0x41')](_0x3ae011)[_0x6615('0x26')](function(_0x5923ec){_0x1a904d[_0x6615('0x41')]=_0x5923ec;if(_0x1056a3[_0x6615('0x33')][_0x6615('0x42')]){_0x5b9a67[_0x6615('0x43')]=[{'all':!![]}];}return db[_0x6615('0x44')][_0x6615('0x45')](_0x5b9a67);})['then'](function(_0x40ff4c){_0x1a904d['rows']=_0x40ff4c;return _0x1a904d;})[_0x6615('0x26')](respondWithFilteredResult(_0x4e0997,_0x5b9a67))[_0x6615('0x46')](handleError(_0x4e0997,null));};exports[_0x6615('0x47')]=function(_0x5c1eb5,_0x57a307){var _0x89c525={'raw':!![],'where':{'id':_0x5c1eb5[_0x6615('0x48')]['id']}},_0x2e601e={};_0x2e601e[_0x6615('0x31')]=_[_0x6615('0x49')](db[_0x6615('0x44')]['rawAttributes']);_0x2e601e[_0x6615('0x33')]=_['keys'](_0x5c1eb5[_0x6615('0x33')]);_0x2e601e[_0x6615('0x3d')]=_[_0x6615('0x34')](_0x2e601e[_0x6615('0x31')],_0x2e601e[_0x6615('0x33')]);_0x89c525[_0x6615('0x36')]=_[_0x6615('0x34')](_0x2e601e[_0x6615('0x31')],qs[_0x6615('0x4a')](_0x5c1eb5[_0x6615('0x33')][_0x6615('0x4a')]));_0x89c525[_0x6615('0x36')]=_0x89c525[_0x6615('0x36')][_0x6615('0x35')]?_0x89c525[_0x6615('0x36')]:_0x2e601e[_0x6615('0x31')];if(_0x5c1eb5[_0x6615('0x33')]['includeAll']){_0x89c525[_0x6615('0x43')]=[{'all':!![]}];}_0x89c525=_[_0x6615('0x3f')]({},_0x89c525,_0x5c1eb5[_0x6615('0x40')]);return db[_0x6615('0x44')]['find'](_0x89c525)[_0x6615('0x26')](handleEntityNotFound(_0x57a307,null))[_0x6615('0x26')](respondWithResult(_0x57a307,null))[_0x6615('0x46')](handleError(_0x57a307,null));};exports[_0x6615('0x4b')]=function(_0x57331b,_0x5f91c6){return db['ChatTransferReport']['create'](_0x57331b['body'],{})['then'](respondWithResult(_0x5f91c6,0xc9))['catch'](handleError(_0x5f91c6,null));};exports['update']=function(_0x517beb,_0x1a4ecd){if(_0x517beb[_0x6615('0x4c')]['id']){delete _0x517beb[_0x6615('0x4c')]['id'];}return db[_0x6615('0x44')][_0x6615('0x4d')]({'where':{'id':_0x517beb['params']['id']}})['then'](handleEntityNotFound(_0x1a4ecd,null))[_0x6615('0x26')](saveUpdates(_0x517beb[_0x6615('0x4c')],null))['then'](respondWithResult(_0x1a4ecd,null))[_0x6615('0x46')](handleError(_0x1a4ecd,null));};exports['destroy']=function(_0x32a05a,_0x4304f3){return db['ChatTransferReport']['find']({'where':{'id':_0x32a05a[_0x6615('0x48')]['id']}})[_0x6615('0x26')](handleEntityNotFound(_0x4304f3,null))[_0x6615('0x26')](removeEntity(_0x4304f3,null))[_0x6615('0x46')](handleError(_0x4304f3,null));};exports[_0x6615('0x4e')]=function(_0x2e43b5,_0x1c3095){return db['ChatTransferReport'][_0x6615('0x4e')]()[_0x6615('0x26')](respondWithResult(_0x1c3095,null))['catch'](handleError(_0x1c3095,null));};
\ No newline at end of file
+var _0xb72f=['create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','status','json','undefined','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','ChatTransferReport','rawAttributes','type','key','model','map','keys','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','include','catch','params','fields','find'];(function(_0x15dacb,_0x31e926){var _0x328b64=function(_0x2a29d7){while(--_0x2a29d7){_0x15dacb['push'](_0x15dacb['shift']());}};_0x328b64(++_0x31e926);}(_0xb72f,0x161));var _0xfb72=function(_0x2d61ac,_0x18ff36){_0x2d61ac=_0x2d61ac-0x0;var _0x3f7d3c=_0xb72f[_0x2d61ac];return _0x3f7d3c;};'use strict';var emlformat=require(_0xfb72('0x0'));var rimraf=require(_0xfb72('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfb72('0x2'));var rp=require(_0xfb72('0x3'));var moment=require(_0xfb72('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfb72('0x5'));var path=require(_0xfb72('0x6'));var sox=require(_0xfb72('0x7'));var csv=require(_0xfb72('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb72('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfb72('0xa'));var deskjs=require(_0xfb72('0xb'));var toCsv=require(_0xfb72('0x8'));var querystring=require('querystring');var Papa=require(_0xfb72('0xc'));var Redis=require(_0xfb72('0xd'));var authService=require(_0xfb72('0xe'));var qs=require(_0xfb72('0xf'));var as=require(_0xfb72('0x10'));var hardwareService=require(_0xfb72('0x11'));var logger=require(_0xfb72('0x12'))('api');var utils=require(_0xfb72('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xfb72('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb8c32f,_0x2b19d5){_0x2b19d5=_0x2b19d5||0xcc;return function(_0x4e34ef){if(_0x4e34ef){return _0xb8c32f[_0xfb72('0x15')](_0x2b19d5);}return _0xb8c32f['status'](_0x2b19d5)['end']();};}function respondWithResult(_0x4e3ef0,_0x522847){_0x522847=_0x522847||0xc8;return function(_0x4344df){if(_0x4344df){return _0x4e3ef0[_0xfb72('0x16')](_0x522847)[_0xfb72('0x17')](_0x4344df);}};}function respondWithFilteredResult(_0x514212,_0x505feb){return function(_0xdd755e){if(_0xdd755e){var _0x5ddf92=typeof _0x505feb['offset']===_0xfb72('0x18')&&typeof _0x505feb['limit']===_0xfb72('0x18');var _0x5e757b=_0xdd755e[_0xfb72('0x19')];var _0x55cba4=_0x5ddf92?0x0:_0x505feb[_0xfb72('0x1a')];var _0x4f1067=_0x5ddf92?_0xdd755e[_0xfb72('0x19')]:_0x505feb[_0xfb72('0x1a')]+_0x505feb[_0xfb72('0x1b')];var _0x12b06a;if(_0x4f1067>=_0x5e757b){_0x4f1067=_0x5e757b;_0x12b06a=0xc8;}else{_0x12b06a=0xce;}_0x514212['status'](_0x12b06a);return _0x514212['set'](_0xfb72('0x1c'),_0x55cba4+'-'+_0x4f1067+'/'+_0x5e757b)[_0xfb72('0x17')](_0xdd755e);}return null;};}function patchUpdates(_0x513632){return function(_0x2a8aab){try{jsonpatch[_0xfb72('0x1d')](_0x2a8aab,_0x513632,!![]);}catch(_0x1a9d72){return BPromise[_0xfb72('0x1e')](_0x1a9d72);}return _0x2a8aab[_0xfb72('0x1f')]();};}function saveUpdates(_0x46a802,_0x351e16){return function(_0xc99554){if(_0xc99554){return _0xc99554[_0xfb72('0x20')](_0x46a802)[_0xfb72('0x21')](function(_0x10d6b8){return _0x10d6b8;});}return null;};}function removeEntity(_0x132efc,_0x76f72c){return function(_0x85146f){if(_0x85146f){return _0x85146f[_0xfb72('0x22')]()[_0xfb72('0x21')](function(){_0x132efc[_0xfb72('0x16')](0xcc)[_0xfb72('0x23')]();});}};}function handleEntityNotFound(_0x3de9c8,_0x184737){return function(_0x544b44){if(!_0x544b44){_0x3de9c8[_0xfb72('0x15')](0x194);}return _0x544b44;};}function handleError(_0x517a71,_0x478fb7){_0x478fb7=_0x478fb7||0x1f4;return function(_0x5a8bcc){logger[_0xfb72('0x24')](_0x5a8bcc[_0xfb72('0x25')]);if(_0x5a8bcc[_0xfb72('0x26')]){delete _0x5a8bcc[_0xfb72('0x26')];}_0x517a71[_0xfb72('0x16')](_0x478fb7)[_0xfb72('0x27')](_0x5a8bcc);};}exports[_0xfb72('0x28')]=function(_0x4e6940,_0x529430){var _0x9b9a4b={},_0x1085f0={},_0x4cb2d={'count':0x0,'rows':[]};var _0x190a74=_['map'](db[_0xfb72('0x29')][_0xfb72('0x2a')],function(_0x2c6fbc){return{'name':_0x2c6fbc['fieldName'],'type':_0x2c6fbc[_0xfb72('0x2b')][_0xfb72('0x2c')]};});_0x1085f0[_0xfb72('0x2d')]=_[_0xfb72('0x2e')](_0x190a74,_0xfb72('0x26'));_0x1085f0['query']=_[_0xfb72('0x2f')](_0x4e6940[_0xfb72('0x30')]);_0x1085f0[_0xfb72('0x31')]=_['intersection'](_0x1085f0[_0xfb72('0x2d')],_0x1085f0[_0xfb72('0x30')]);_0x9b9a4b[_0xfb72('0x32')]=_[_0xfb72('0x33')](_0x1085f0[_0xfb72('0x2d')],qs['fields'](_0x4e6940[_0xfb72('0x30')]['fields']));_0x9b9a4b['attributes']=_0x9b9a4b['attributes'][_0xfb72('0x34')]?_0x9b9a4b[_0xfb72('0x32')]:_0x1085f0[_0xfb72('0x2d')];if(!_0x4e6940['query'][_0xfb72('0x35')](_0xfb72('0x36'))){_0x9b9a4b['limit']=qs[_0xfb72('0x1b')](_0x4e6940[_0xfb72('0x30')][_0xfb72('0x1b')]);_0x9b9a4b[_0xfb72('0x1a')]=qs[_0xfb72('0x1a')](_0x4e6940['query']['offset']);}_0x9b9a4b[_0xfb72('0x37')]=qs[_0xfb72('0x38')](_0x4e6940['query'][_0xfb72('0x38')]);_0x9b9a4b[_0xfb72('0x39')]=qs[_0xfb72('0x31')](_[_0xfb72('0x3a')](_0x4e6940[_0xfb72('0x30')],_0x1085f0[_0xfb72('0x31')]),_0x190a74);if(_0x4e6940[_0xfb72('0x30')]['filter']){_0x9b9a4b['where']=_[_0xfb72('0x3b')](_0x9b9a4b[_0xfb72('0x39')],{'$or':_[_0xfb72('0x2e')](_0x190a74,function(_0xd60882){if(_0xd60882['type']!==_0xfb72('0x3c')){var _0x10aeef={};_0x10aeef[_0xd60882[_0xfb72('0x26')]]={'$like':'%'+_0x4e6940[_0xfb72('0x30')]['filter']+'%'};return _0x10aeef;}})});}_0x9b9a4b=_['merge']({},_0x9b9a4b,_0x4e6940[_0xfb72('0x3d')]);var _0x1c8dae={'where':_0x9b9a4b[_0xfb72('0x39')]};return db[_0xfb72('0x29')][_0xfb72('0x19')](_0x1c8dae)[_0xfb72('0x21')](function(_0x414034){_0x4cb2d[_0xfb72('0x19')]=_0x414034;if(_0x4e6940[_0xfb72('0x30')]['includeAll']){_0x9b9a4b[_0xfb72('0x3e')]=[{'all':!![]}];}return db['ChatTransferReport']['findAll'](_0x9b9a4b);})[_0xfb72('0x21')](function(_0x437f3c){_0x4cb2d['rows']=_0x437f3c;return _0x4cb2d;})[_0xfb72('0x21')](respondWithFilteredResult(_0x529430,_0x9b9a4b))[_0xfb72('0x3f')](handleError(_0x529430,null));};exports['show']=function(_0x16d1cf,_0x56e9ff){var _0x2223c8={'raw':!![],'where':{'id':_0x16d1cf[_0xfb72('0x40')]['id']}},_0x28ce77={};_0x28ce77[_0xfb72('0x2d')]=_[_0xfb72('0x2f')](db[_0xfb72('0x29')][_0xfb72('0x2a')]);_0x28ce77[_0xfb72('0x30')]=_['keys'](_0x16d1cf[_0xfb72('0x30')]);_0x28ce77[_0xfb72('0x31')]=_[_0xfb72('0x33')](_0x28ce77['model'],_0x28ce77[_0xfb72('0x30')]);_0x2223c8['attributes']=_[_0xfb72('0x33')](_0x28ce77[_0xfb72('0x2d')],qs[_0xfb72('0x41')](_0x16d1cf['query'][_0xfb72('0x41')]));_0x2223c8[_0xfb72('0x32')]=_0x2223c8['attributes'][_0xfb72('0x34')]?_0x2223c8[_0xfb72('0x32')]:_0x28ce77[_0xfb72('0x2d')];if(_0x16d1cf[_0xfb72('0x30')]['includeAll']){_0x2223c8['include']=[{'all':!![]}];}_0x2223c8=_['merge']({},_0x2223c8,_0x16d1cf[_0xfb72('0x3d')]);return db[_0xfb72('0x29')][_0xfb72('0x42')](_0x2223c8)[_0xfb72('0x21')](handleEntityNotFound(_0x56e9ff,null))[_0xfb72('0x21')](respondWithResult(_0x56e9ff,null))['catch'](handleError(_0x56e9ff,null));};exports[_0xfb72('0x43')]=function(_0x4917ec,_0x2609b3){return db[_0xfb72('0x29')][_0xfb72('0x43')](_0x4917ec[_0xfb72('0x44')],{})[_0xfb72('0x21')](respondWithResult(_0x2609b3,0xc9))['catch'](handleError(_0x2609b3,null));};exports[_0xfb72('0x20')]=function(_0x50ee42,_0x5c22c0){if(_0x50ee42[_0xfb72('0x44')]['id']){delete _0x50ee42['body']['id'];}return db['ChatTransferReport'][_0xfb72('0x42')]({'where':{'id':_0x50ee42[_0xfb72('0x40')]['id']}})[_0xfb72('0x21')](handleEntityNotFound(_0x5c22c0,null))[_0xfb72('0x21')](saveUpdates(_0x50ee42[_0xfb72('0x44')],null))[_0xfb72('0x21')](respondWithResult(_0x5c22c0,null))[_0xfb72('0x3f')](handleError(_0x5c22c0,null));};exports['destroy']=function(_0x2c5ef0,_0x596bf0){return db[_0xfb72('0x29')]['find']({'where':{'id':_0x2c5ef0[_0xfb72('0x40')]['id']}})[_0xfb72('0x21')](handleEntityNotFound(_0x596bf0,null))[_0xfb72('0x21')](removeEntity(_0x596bf0,null))[_0xfb72('0x3f')](handleError(_0x596bf0,null));};exports[_0xfb72('0x45')]=function(_0x14905e,_0x41a698){return db[_0xfb72('0x29')]['describe']()['then'](respondWithResult(_0x41a698,null))[_0xfb72('0x3f')](handleError(_0x41a698,null));};
\ No newline at end of file
index a07904e..60cbf29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9547=['report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','define','ChatTransferReport'];(function(_0x1cb3fb,_0x5c8310){var _0x5df307=function(_0xec3599){while(--_0xec3599){_0x1cb3fb['push'](_0x1cb3fb['shift']());}};_0x5df307(++_0x5c8310);}(_0x9547,0x7a));var _0x7954=function(_0x1669b4,_0x3058ec){_0x1669b4=_0x1669b4-0x0;var _0x514c37=_0x9547[_0x1669b4];return _0x514c37;};'use strict';var _=require(_0x7954('0x0'));var util=require(_0x7954('0x1'));var logger=require(_0x7954('0x2'))(_0x7954('0x3'));var moment=require('moment');var BPromise=require(_0x7954('0x4'));var rp=require(_0x7954('0x5'));var fs=require('fs');var path=require(_0x7954('0x6'));var rimraf=require(_0x7954('0x7'));var config=require(_0x7954('0x8'));var attributes=require(_0x7954('0x9'));module[_0x7954('0xa')]=function(_0x7f54cb,_0x4bbc20){return _0x7f54cb[_0x7954('0xb')](_0x7954('0xc'),attributes,{'tableName':_0x7954('0xd'),'paranoid':![],'indexes':[{'name':_0x7954('0xe'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x82aa=['define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes'];(function(_0x58f934,_0x2f6d6a){var _0x32fd6a=function(_0x318535){while(--_0x318535){_0x58f934['push'](_0x58f934['shift']());}};_0x32fd6a(++_0x2f6d6a);}(_0x82aa,0x19c));var _0xa82a=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x82aa[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xa82a('0x0'));var util=require('util');var logger=require(_0xa82a('0x1'))(_0xa82a('0x2'));var moment=require('moment');var BPromise=require(_0xa82a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa82a('0x4'));var rimraf=require(_0xa82a('0x5'));var config=require(_0xa82a('0x6'));var attributes=require(_0xa82a('0x7'));module['exports']=function(_0x5f52fa,_0x268bc6){return _0x5f52fa[_0xa82a('0x8')](_0xa82a('0x9'),attributes,{'tableName':_0xa82a('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xa82a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 5badb69..3f49d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91c=['client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','ChatTransferReport,\x20%s,\x20%s','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x152556,_0x1c1771){var _0x2c0b4d=function(_0x1b29a8){while(--_0x1b29a8){_0x152556['push'](_0x152556['shift']());}};_0x2c0b4d(++_0x1c1771);}(_0xe91c,0x122));var _0xce91=function(_0x2d7a61,_0x50241b){_0x2d7a61=_0x2d7a61-0x0;var _0x4cd61e=_0xe91c[_0x2d7a61];return _0x4cd61e;};'use strict';var _=require('lodash');var util=require(_0xce91('0x0'));var moment=require(_0xce91('0x1'));var BPromise=require(_0xce91('0x2'));var rs=require(_0xce91('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xce91('0x4'))['db'];var utils=require(_0xce91('0x5'));var logger=require('../../config/logger')(_0xce91('0x6'));var config=require(_0xce91('0x7'));var jayson=require(_0xce91('0x8'));var client=jayson[_0xce91('0x9')][_0xce91('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2917c0,_0x1f8b39,_0xafeaf1){return new BPromise(function(_0x3061b7,_0xd47bc6){return client[_0xce91('0xb')](_0x2917c0,_0xafeaf1)[_0xce91('0xc')](function(_0x1a907e){logger[_0xce91('0xd')]('ChatTransferReport,\x20%s,\x20%s',_0x1f8b39,_0xce91('0xe'));logger[_0xce91('0xf')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x1f8b39,'request\x20sent',JSON[_0xce91('0x10')](_0x1a907e));if(_0x1a907e[_0xce91('0x11')]){if(_0x1a907e[_0xce91('0x11')][_0xce91('0x12')]===0x1f4){logger[_0xce91('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0x1f8b39,_0x1a907e[_0xce91('0x11')][_0xce91('0x13')]);return _0xd47bc6(_0x1a907e[_0xce91('0x11')]['message']);}logger['error'](_0xce91('0x14'),_0x1f8b39,_0x1a907e[_0xce91('0x11')][_0xce91('0x13')]);return _0x3061b7(_0x1a907e[_0xce91('0x11')][_0xce91('0x13')]);}else{logger[_0xce91('0xd')](_0xce91('0x14'),_0x1f8b39,_0xce91('0xe'));_0x3061b7(_0x1a907e[_0xce91('0x15')]['message']);}})[_0xce91('0x16')](function(_0x3b7646){logger[_0xce91('0x11')](_0xce91('0x14'),_0x1f8b39,_0x3b7646);_0xd47bc6(_0x3b7646);});});}
\ No newline at end of file
+var _0xd0d8=['jayson/promise','client','http','request','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x7ad052,_0x447f84){var _0x376a55=function(_0x1d8386){while(--_0x1d8386){_0x7ad052['push'](_0x7ad052['shift']());}};_0x376a55(++_0x447f84);}(_0xd0d8,0x1dd));var _0x8d0d=function(_0x4c3f1c,_0x30d1a5){_0x4c3f1c=_0x4c3f1c-0x0;var _0x2119b4=_0xd0d8[_0x4c3f1c];return _0x2119b4;};'use strict';var _=require('lodash');var util=require(_0x8d0d('0x0'));var moment=require('moment');var BPromise=require(_0x8d0d('0x1'));var rs=require(_0x8d0d('0x2'));var fs=require('fs');var Redis=require(_0x8d0d('0x3'));var db=require(_0x8d0d('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8d0d('0x5'))(_0x8d0d('0x6'));var config=require('../../config/environment');var jayson=require(_0x8d0d('0x7'));var client=jayson[_0x8d0d('0x8')][_0x8d0d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f2d0c,_0x23b94f,_0x43e51d){return new BPromise(function(_0x2a1101,_0x5c99b0){return client[_0x8d0d('0xa')](_0x5f2d0c,_0x43e51d)['then'](function(_0x220ef9){logger[_0x8d0d('0xb')](_0x8d0d('0xc'),_0x23b94f,_0x8d0d('0xd'));logger[_0x8d0d('0xe')](_0x8d0d('0xf'),_0x23b94f,_0x8d0d('0xd'),JSON[_0x8d0d('0x10')](_0x220ef9));if(_0x220ef9[_0x8d0d('0x11')]){if(_0x220ef9[_0x8d0d('0x11')][_0x8d0d('0x12')]===0x1f4){logger[_0x8d0d('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0x23b94f,_0x220ef9[_0x8d0d('0x11')][_0x8d0d('0x13')]);return _0x5c99b0(_0x220ef9[_0x8d0d('0x11')][_0x8d0d('0x13')]);}logger['error'](_0x8d0d('0xc'),_0x23b94f,_0x220ef9['error'][_0x8d0d('0x13')]);return _0x2a1101(_0x220ef9[_0x8d0d('0x11')][_0x8d0d('0x13')]);}else{logger[_0x8d0d('0xb')](_0x8d0d('0xc'),_0x23b94f,_0x8d0d('0xd'));_0x2a1101(_0x220ef9[_0x8d0d('0x14')][_0x8d0d('0x13')]);}})[_0x8d0d('0x15')](function(_0x2a34b4){logger['error'](_0x8d0d('0xc'),_0x23b94f,_0x2a34b4);_0x5c99b0(_0x2a34b4);});});}
\ No newline at end of file
index 9ce2134..df6dd39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a94=['create','put','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','/describe','/:id','show'];(function(_0x238600,_0x121411){var _0x4b5602=function(_0x1dfcb0){while(--_0x1dfcb0){_0x238600['push'](_0x238600['shift']());}};_0x4b5602(++_0x121411);}(_0x0a94,0x134));var _0x40a9=function(_0x147dd5,_0x50062e){_0x147dd5=_0x147dd5-0x0;var _0x105319=_0x0a94[_0x147dd5];return _0x105319;};'use strict';var multer=require(_0x40a9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x40a9('0x1'));var express=require(_0x40a9('0x2'));var router=express[_0x40a9('0x3')]();var fs_extra=require(_0x40a9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x40a9('0x5'));var config=require('../../config/environment');var controller=require(_0x40a9('0x6'));router[_0x40a9('0x7')]('/',auth[_0x40a9('0x8')](),controller['index']);router[_0x40a9('0x7')](_0x40a9('0x9'),auth[_0x40a9('0x8')](),controller['describe']);router['get'](_0x40a9('0xa'),auth[_0x40a9('0x8')](),controller[_0x40a9('0xb')]);router['post']('/',auth[_0x40a9('0x8')](),controller[_0x40a9('0xc')]);router[_0x40a9('0xd')](_0x40a9('0xa'),auth[_0x40a9('0x8')](),controller['update']);router[_0x40a9('0xe')]('/:id',auth[_0x40a9('0x8')](),controller['destroy']);module[_0x40a9('0xf')]=router;
\ No newline at end of file
+var _0x1666=['post','put','delete','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x2deeba,_0xd08bf0){var _0x46c616=function(_0x161de1){while(--_0x161de1){_0x2deeba['push'](_0x2deeba['shift']());}};_0x46c616(++_0xd08bf0);}(_0x1666,0xbf));var _0x6166=function(_0x468ff0,_0x4e0139){_0x468ff0=_0x468ff0-0x0;var _0x4ee01b=_0x1666[_0x468ff0];return _0x4ee01b;};'use strict';var multer=require(_0x6166('0x0'));var util=require('util');var path=require(_0x6166('0x1'));var timeout=require(_0x6166('0x2'));var express=require(_0x6166('0x3'));var router=express[_0x6166('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6166('0x5'));var config=require(_0x6166('0x6'));var controller=require('./chatTransferReport.controller');router[_0x6166('0x7')]('/',auth[_0x6166('0x8')](),controller['index']);router['get'](_0x6166('0x9'),auth['isAuthenticated'](),controller[_0x6166('0xa')]);router[_0x6166('0x7')](_0x6166('0xb'),auth[_0x6166('0x8')](),controller[_0x6166('0xc')]);router[_0x6166('0xd')]('/',auth[_0x6166('0x8')](),controller['create']);router[_0x6166('0xe')](_0x6166('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6166('0xf')](_0x6166('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x6166('0x10')]=router;
\ No newline at end of file
index 24ffce6..41709b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5127=['ENUM','rounded','Chat','Send','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','input','name','text','getDataValue','onlineForm','parse','stringify','textarea','Comments','Leave\x20your\x20comments','offlineForm','setDataValue','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','website_alias','bottom_right','CHAT','alternate','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x5127,0x1ea));var _0x7512=function(_0x1e2072,_0xe3cc90){_0x1e2072=_0x1e2072-0x0;var _0x22956b=_0x5127[_0x1e2072];return _0x22956b;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x7512('0x0'));module[_0x7512('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0x7512('0x2')],'allowNull':![],'unique':_0x7512('0x3')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x4')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0x4')},'key':{'type':Sequelize[_0x7512('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0x5')},'customerAlias':{'type':Sequelize[_0x7512('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x7512('0x2')],'allowNull':![],'defaultValue':_0x7512('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x7512('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x7512('0x2')],'allowNull':![],'defaultValue':_0x7512('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x7512('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x7512('0x2')]},'animation':{'type':Sequelize[_0x7512('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x7512('0xa')](_0x7512('0xb'),'squared'),'defaultValue':_0x7512('0xb')},'header_online':{'type':Sequelize[_0x7512('0x2')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0xc')},'offline_chat_button':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0xd')},'header_offline':{'type':Sequelize[_0x7512('0x2')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x7512('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x7512('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x7512('0xe')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0xf')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x11')},'noteTitle':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x12')},'placeholderMessage':{'type':Sequelize[_0x7512('0x2')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x13')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0xd')},'skipMessageButton':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x14')},'conditionAgreement':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x15')},'ratingType':{'type':Sequelize[_0x7512('0xa')]('star','thumb'),'defaultValue':_0x7512('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x7512('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x7512('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x7512('0x17'),'variable':null,'config':{'placeholder':_0x7512('0x18'),'type':_0x7512('0x19'),'required':!![]},'props':{'title':_0x7512('0x18'),'helpText':''}},{'type':'input','props':{'title':_0x7512('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x7512('0x4'),'type':_0x7512('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x7512('0x1a')](_0x7512('0x1b'))?JSON[_0x7512('0x1c')](this['getDataValue']('onlineForm')):{};},'set':function(_0x8975f0){return this['setDataValue'](_0x7512('0x1b'),JSON['stringify'](_0x8975f0));}},'offlineForm':{'type':Sequelize[_0x7512('0xe')],'defaultValue':function(){return JSON[_0x7512('0x1d')]({'items':[{'type':_0x7512('0x17'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x7512('0x4')},'variable':null},{'type':_0x7512('0x1e'),'config':{'placeholder':_0x7512('0x1f')},'props':{'title':'Comments','helpText':_0x7512('0x20')}}],'fromKey':0x0});},'get':function(){return this[_0x7512('0x1a')](_0x7512('0x21'))?JSON[_0x7512('0x1c')](this['getDataValue'](_0x7512('0x21'))):{};},'set':function(_0x5eb353){return this[_0x7512('0x22')](_0x7512('0x21'),JSON[_0x7512('0x1d')](_0x5eb353));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x7512('0x23')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x7512('0x2')]},'forwardOffline':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x7512('0x2')]},'waitingTitle':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x26')},'offlineMessageBody':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0x7512('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7512('0x28')},'skipUnmanaged':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x14')},'sendUnmanaged':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0xd')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x7512('0xe')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x7512('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x7512('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0x7512('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x2a')},'verticalAlignment':{'type':Sequelize[_0x7512('0x8')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x2b')},'messagesAlignment':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x2c')},'defaultTitle':{'type':Sequelize[_0x7512('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x7512('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x7512('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7512('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x7512('0x2')],'defaultValue':_0x7512('0x2d')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7512('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![],'comment':_0x7512('0x2e'),'set':function(_0x33c1b4){if(!_0x33c1b4)this[_0x7512('0x22')](_0x7512('0x2f'),null);this[_0x7512('0x22')]('mandatoryDisposition',_0x33c1b4);}},'vidaooEscalation':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7512('0x30')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x7512('0x31');}},'vidaooMetadata':{'type':Sequelize[_0x7512('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x7512('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x7512('0xe')]}};
\ No newline at end of file
+var _0x6aa7=['offlineForm','parse','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','CHAT','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','squared','rounded','We\x20are\x20here!','Send','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','thumb','star','stringify','name','getDataValue','onlineForm','setDataValue','input','textarea','Comments','Leave\x20your\x20comments'];(function(_0x146bf9,_0x37879c){var _0x16b6fc=function(_0x4d710e){while(--_0x4d710e){_0x146bf9['push'](_0x146bf9['shift']());}};_0x16b6fc(++_0x37879c);}(_0x6aa7,0xad));var _0x76aa=function(_0x36e5ad,_0x164c69){_0x36e5ad=_0x36e5ad-0x0;var _0x130656=_0x6aa7[_0x36e5ad];return _0x130656;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x76aa('0x0'));module[_0x76aa('0x1')]={'name':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![],'unique':_0x76aa('0x3')},'description':{'type':Sequelize[_0x76aa('0x2')]},'mapKey':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x4')},'mapKeyOffline':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x5')},'customerAlias':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![],'defaultValue':_0x76aa('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![],'defaultValue':_0x76aa('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x76aa('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x76aa('0x2')]},'animation':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x76aa('0xa')]('rounded',_0x76aa('0xb')),'defaultValue':_0x76aa('0xc')},'header_online':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0xd')},'start_chat_button':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0xe')},'header_offline':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x76aa('0x10')]},'closingQuestion':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x11')},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x12')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x76aa('0x13')},'placeholderMessage':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x14')},'closingMessage':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x15')},'closingMessageButton':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0xe')},'skipMessageButton':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x16')},'conditionAgreement':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':_0x76aa('0x17')},'ratingType':{'type':Sequelize[_0x76aa('0xa')]('star',_0x76aa('0x18')),'defaultValue':_0x76aa('0x19')},'ratingStarsNumber':{'type':Sequelize[_0x76aa('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x76aa('0x10')],'defaultValue':function(){return JSON[_0x76aa('0x1a')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x76aa('0x1b'),'type':'text','required':!![]},'props':{'title':_0x76aa('0x1b'),'helpText':''}},{'type':'input','props':{'title':_0x76aa('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x76aa('0x4'),'type':_0x76aa('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x76aa('0x1c')]('onlineForm')?JSON['parse'](this[_0x76aa('0x1c')](_0x76aa('0x1d'))):{};},'set':function(_0x2004c1){return this[_0x76aa('0x1e')]('onlineForm',JSON[_0x76aa('0x1a')](_0x2004c1));}},'offlineForm':{'type':Sequelize[_0x76aa('0x10')],'defaultValue':function(){return JSON[_0x76aa('0x1a')]({'items':[{'type':_0x76aa('0x1f'),'props':{'title':_0x76aa('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x76aa('0x4'),'type':_0x76aa('0x4')},'variable':null},{'type':_0x76aa('0x20'),'config':{'placeholder':_0x76aa('0x21')},'props':{'title':_0x76aa('0x21'),'helpText':_0x76aa('0x22')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x76aa('0x23'))?JSON[_0x76aa('0x24')](this['getDataValue']('offlineForm')):{};},'set':function(_0x39e10d){return this[_0x76aa('0x1e')](_0x76aa('0x23'),JSON[_0x76aa('0x1a')](_0x39e10d));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x76aa('0x25')]();}},'autoclose':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x76aa('0x2')]},'forwardOffline':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x26')},'waitingMessage':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x27')},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x76aa('0x28')},'enableUnmanagedNote':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x29')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0xe')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x76aa('0x10')]},'showAgentAvatar':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x76aa('0x10')],'defaultValue':function(){return _0x76aa('0x2a');}},'notificationSound':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x76aa('0x2c')},'messagesAlignment':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x2d')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x76aa('0x10')]},'showCustomerAvatar':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x76aa('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x76aa('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x76aa('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':_0x76aa('0x2e')},'systemAvatar':{'type':Sequelize[_0x76aa('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x76aa('0x8')],'comment':_0x76aa('0x2f')},'mandatoryDisposition':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![],'comment':_0x76aa('0x30'),'set':function(_0x5ddc70){if(!_0x5ddc70)this['setDataValue'](_0x76aa('0x31'),null);this[_0x76aa('0x1e')]('mandatoryDisposition',_0x5ddc70);}},'vidaooEscalation':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x76aa('0x2')]},'vidaooTopic':{'type':Sequelize[_0x76aa('0x2')],'allowNull':![],'defaultValue':_0x76aa('0x32')},'vidaooNote':{'type':Sequelize[_0x76aa('0x2')],'defaultValue':function(){return _0x76aa('0x33');}},'vidaooMetadata':{'type':Sequelize[_0x76aa('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x76aa('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x76aa('0x10')]}};
\ No newline at end of file
index 5ddc010..7461194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726e=['toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','files','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Smtp','forwardOffline','service','host','port','secure','authentication','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','offlineMessageSubject','MailAccountId','subjectOffline','toPairsIn','mapValues','NotifyMailAccount','notifyMail','Could\x20not\x20remove\x20attachment\x20file','addInteraction','pick','Contact','fullname','internal','Tag','Tags','color','tag','Command','getSnippet','timezone','interval','iftime\x20%s','indexOf','ONLINE','OFFLINE','No\x20timezone','Interval','virtual','License','chatLicenseExceeded','Intervals','all','server/files/chat/iframe.ejs','x-real-ip','connection','remoteAddress','alignment','verticalAlignment','textColor','color_button','backgroundColor','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','getProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','fromKey','Attachment','Attachments','addAgents','omit','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','User','bluebird','util','path','ejs','fs-extra','lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatWebsite.socket','register','html-to-text','jayson/promise','http','client','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','offset','limit','undefined','count','set','Content-Range','json','update','then','destroy','get','ChatWebsites','UserProfileResource','end','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','where','filter','merge','VIRTUAL','includeAll','include','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','order','sort','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','findAll','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','../../config/license/util','isNil','existsSync','join','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','notify','user-agent-parser','setUA','user-agent','getResult','chat','CmContact','Sequelize','createdAt','updatedAt','difference','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','ChatApplication','Applications','account','list','applications','priority','asc','ListId','contact','headers','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','stringify','threadId','externalUrl','interaction','ChatInteraction','messageId','created','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','Start','EventManager','offline','no\x20available\x20attributes','CompanyId','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render'];(function(_0x1ee9a1,_0x5f1434){var _0x21270f=function(_0x303251){while(--_0x303251){_0x1ee9a1['push'](_0x1ee9a1['shift']());}};_0x21270f(++_0x5f1434);}(_0x726e,0x186));var _0xe726=function(_0x4e3216,_0x3edbdb){_0x4e3216=_0x4e3216-0x0;var _0x19d3cd=_0x726e[_0x4e3216];return _0x19d3cd;};'use strict';var BPromise=require(_0xe726('0x0'));var Mustache=require('mustache');var util=require(_0xe726('0x1'));var path=require(_0xe726('0x2'));var ejs=require(_0xe726('0x3'));var fs=require('fs');var fs_extra=require(_0xe726('0x4'));var _=require(_0xe726('0x5'));var querystring=require('querystring');var Redis=require('ioredis');var qs=require(_0xe726('0x6'));var logger=require(_0xe726('0x7'))('api');var config=require(_0xe726('0x8'));var db=require(_0xe726('0x9'))['db'];config[_0xe726('0xa')]=_[_0xe726('0xb')](config[_0xe726('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe726('0xc'))(new Redis(config[_0xe726('0xa')]));require(_0xe726('0xd'))[_0xe726('0xe')](socket);var htmlToText=require(_0xe726('0xf'));var jayson=require(_0xe726('0x10'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client'][_0xe726('0x11')]({'port':0x232a});var client9003=jayson[_0xe726('0x12')][_0xe726('0x11')]({'port':0x232b});var client9001=jayson[_0xe726('0x12')][_0xe726('0x11')]({'port':0x2329});function respondWithRpcPromise(_0x399e11,_0x2da712,_0x418b11,_0x4b096e){return new BPromise(function(_0x23ae9f,_0x230614){var _0x41bbb7=_0x4b096e||client;return _0x41bbb7[_0xe726('0x13')](_0x399e11,_0x418b11)['then'](function(_0x74d7df){logger[_0xe726('0x14')](_0xe726('0x15'),_0x2da712,_0xe726('0x16'));logger[_0xe726('0x17')](_0xe726('0x18'),_0x2da712,_0xe726('0x16'),JSON['stringify'](_0x74d7df));if(_0x74d7df[_0xe726('0x19')]){if(_0x74d7df[_0xe726('0x19')][_0xe726('0x1a')]===0x1f4){logger[_0xe726('0x19')](_0xe726('0x15'),_0x2da712,_0x74d7df['error'][_0xe726('0x1b')]);return _0x230614(_0x74d7df[_0xe726('0x19')][_0xe726('0x1b')]);}logger[_0xe726('0x19')](_0xe726('0x15'),_0x2da712,_0x74d7df[_0xe726('0x19')]['message']);return _0x23ae9f(_0x74d7df[_0xe726('0x19')][_0xe726('0x1b')]);}else{logger[_0xe726('0x14')](_0xe726('0x15'),_0x2da712,_0xe726('0x16'));_0x23ae9f(_0x74d7df[_0xe726('0x1c')][_0xe726('0x1b')]);}})[_0xe726('0x1d')](function(_0x15d8d3){logger[_0xe726('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x2da712,_0x15d8d3);_0x230614(_0x15d8d3);});});}function respondWithStatusCode(_0x304b16,_0x1d15e7){_0x1d15e7=_0x1d15e7||0xcc;return function(_0x1cc111){if(_0x1cc111){return _0x304b16['sendStatus'](_0x1d15e7);}return _0x304b16[_0xe726('0x1e')](_0x1d15e7)['end']();};}function respondWithResult(_0x222337,_0xa8fcc0){_0xa8fcc0=_0xa8fcc0||0xc8;return function(_0x3f5637){if(_0x3f5637){return _0x222337[_0xe726('0x1e')](_0xa8fcc0)['json'](_0x3f5637);}};}function respondWithFilteredResult(_0x1e6aad,_0x444e7d){return function(_0x2ac054){if(_0x2ac054){var _0x377a7b=typeof _0x444e7d[_0xe726('0x1f')]==='undefined'&&typeof _0x444e7d[_0xe726('0x20')]===_0xe726('0x21');var _0x445087=_0x2ac054[_0xe726('0x22')];var _0x5b5b39=_0x377a7b?0x0:_0x444e7d[_0xe726('0x1f')];var _0x4c4494=_0x377a7b?_0x2ac054[_0xe726('0x22')]:_0x444e7d[_0xe726('0x1f')]+_0x444e7d['limit'];var _0x161dd5;if(_0x4c4494>=_0x445087){_0x4c4494=_0x445087;_0x161dd5=0xc8;}else{_0x161dd5=0xce;}_0x1e6aad[_0xe726('0x1e')](_0x161dd5);return _0x1e6aad[_0xe726('0x23')](_0xe726('0x24'),_0x5b5b39+'-'+_0x4c4494+'/'+_0x445087)[_0xe726('0x25')](_0x2ac054);}return null;};}function saveUpdates(_0x418976){return function(_0x79477){if(_0x79477){return _0x79477[_0xe726('0x26')](_0x418976)[_0xe726('0x27')](function(_0x94b859){return _0x94b859;});}return null;};}function removeEntity(_0x8a041d){return function(_0x282055){if(_0x282055){return _0x282055[_0xe726('0x28')]()[_0xe726('0x27')](function(){var _0x351fc1=_0x282055[_0xe726('0x29')]({'plain':!![]});var _0x2ca717=_0xe726('0x2a');return db[_0xe726('0x2b')]['destroy']({'where':{'type':_0x2ca717,'resourceId':_0x351fc1['id']}})[_0xe726('0x27')](function(){return _0x282055;});})[_0xe726('0x27')](function(){_0x8a041d['status'](0xcc)[_0xe726('0x2c')]();});}};}function handleEntityNotFound(_0x3f61a8){return function(_0x2fae59){if(!_0x2fae59){_0x3f61a8[_0xe726('0x2d')](0x194);}return _0x2fae59;};}function handleError(_0x13110b,_0x34b685){_0x34b685=_0x34b685||0x1f4;return function(_0x5186f7){logger[_0xe726('0x19')](_0x5186f7[_0xe726('0x2e')]);if(_0x5186f7[_0xe726('0x2f')]){delete _0x5186f7[_0xe726('0x2f')];}_0x13110b[_0xe726('0x1e')](_0x34b685)[_0xe726('0x30')](_0x5186f7);};}exports[_0xe726('0x31')]=function(_0x7f0417,_0x176d38){var _0x4727de={'include':[{'model':db[_0xe726('0x32')],'as':_0xe726('0x33')}]},_0x5a4f10={},_0x197983={'count':0x0,'rows':[]};var _0x16320d=_[_0xe726('0x34')](db[_0xe726('0x35')][_0xe726('0x36')],function(_0x5e22ba){return{'name':_0x5e22ba['fieldName'],'type':_0x5e22ba[_0xe726('0x37')][_0xe726('0x38')]};});_0x5a4f10[_0xe726('0x39')]=_['map'](_0x16320d,_0xe726('0x2f'));_0x5a4f10[_0xe726('0x3a')]=_[_0xe726('0x3b')](_0x7f0417[_0xe726('0x3a')]);_0x5a4f10[_0xe726('0x3c')]=_[_0xe726('0x3d')](_0x5a4f10[_0xe726('0x39')],_0x5a4f10[_0xe726('0x3a')]);_0x4727de['attributes']=_['intersection'](_0x5a4f10[_0xe726('0x39')],qs['fields'](_0x7f0417['query'][_0xe726('0x3e')]));_0x4727de[_0xe726('0x3f')]=_0x4727de['attributes'][_0xe726('0x40')]?_0x4727de[_0xe726('0x3f')]:_0x5a4f10[_0xe726('0x39')];if(!_0x7f0417[_0xe726('0x3a')]['hasOwnProperty'](_0xe726('0x41'))){_0x4727de[_0xe726('0x20')]=qs[_0xe726('0x20')](_0x7f0417[_0xe726('0x3a')][_0xe726('0x20')]);_0x4727de[_0xe726('0x1f')]=qs['offset'](_0x7f0417['query']['offset']);}_0x4727de['order']=qs['sort'](_0x7f0417[_0xe726('0x3a')]['sort']);_0x4727de[_0xe726('0x42')]=qs['filters'](_['pick'](_0x7f0417['query'],_0x5a4f10[_0xe726('0x3c')]),_0x16320d);if(_0x7f0417[_0xe726('0x3a')][_0xe726('0x43')]){_0x4727de[_0xe726('0x42')]=_[_0xe726('0x44')](_0x4727de['where'],{'$or':_[_0xe726('0x34')](_0x16320d,function(_0xcef3e9){if(_0xcef3e9[_0xe726('0x37')]!==_0xe726('0x45')){var _0x579a12={};_0x579a12[_0xcef3e9[_0xe726('0x2f')]]={'$like':'%'+_0x7f0417['query'][_0xe726('0x43')]+'%'};return _0x579a12;}})});}_0x4727de=_[_0xe726('0x44')]({},_0x4727de,_0x7f0417['options']);var _0x1877d5={'where':_0x4727de[_0xe726('0x42')]};return db[_0xe726('0x35')][_0xe726('0x22')](_0x1877d5)[_0xe726('0x27')](function(_0xcddbb8){_0x197983[_0xe726('0x22')]=_0xcddbb8;if(_0x7f0417['query'][_0xe726('0x46')]){_0x4727de[_0xe726('0x47')]=[{'all':!![]}];}return db[_0xe726('0x35')]['findAll'](_0x4727de);})[_0xe726('0x27')](function(_0x5ada22){_0x197983[_0xe726('0x48')]=_0x5ada22;return _0x197983;})[_0xe726('0x27')](respondWithFilteredResult(_0x176d38,_0x4727de))[_0xe726('0x1d')](handleError(_0x176d38,null));};exports[_0xe726('0x49')]=function(_0x5c8bd3,_0x15dcad){var _0x4a951d={'raw':![],'where':{'id':_0x5c8bd3[_0xe726('0x4a')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x3604fd={};_0x3604fd[_0xe726('0x39')]=_['keys'](db['ChatWebsite'][_0xe726('0x36')]);_0x3604fd['query']=_[_0xe726('0x3b')](_0x5c8bd3['query']);_0x3604fd[_0xe726('0x3c')]=_['intersection'](_0x3604fd[_0xe726('0x39')],_0x3604fd[_0xe726('0x3a')]);_0x4a951d['attributes']=_['intersection'](_0x3604fd[_0xe726('0x39')],qs[_0xe726('0x3e')](_0x5c8bd3[_0xe726('0x3a')][_0xe726('0x3e')]));_0x4a951d[_0xe726('0x3f')]=_0x4a951d[_0xe726('0x3f')][_0xe726('0x40')]?_0x4a951d[_0xe726('0x3f')]:_0x3604fd[_0xe726('0x39')];if(_0x5c8bd3[_0xe726('0x3a')][_0xe726('0x46')]){_0x4a951d[_0xe726('0x47')]=[{'all':!![]}];}_0x4a951d=_[_0xe726('0x44')]({},_0x4a951d,_0x5c8bd3['options']);return db[_0xe726('0x35')][_0xe726('0x4b')](_0x4a951d)[_0xe726('0x27')](handleEntityNotFound(_0x15dcad,null))[_0xe726('0x27')](respondWithResult(_0x15dcad,null))[_0xe726('0x1d')](handleError(_0x15dcad,null));};exports[_0xe726('0x4c')]=function(_0x96e9e9,_0x50b27a){return db[_0xe726('0x35')][_0xe726('0x4c')](_0x96e9e9[_0xe726('0x4d')],{})['then'](function(_0x4916cb){var _0x5331b2=_0x96e9e9[_0xe726('0x4e')][_0xe726('0x29')]({'plain':!![]});if(!_0x5331b2)throw new Error(_0xe726('0x4f'));if(_0x5331b2[_0xe726('0x50')]===_0xe726('0x4e')){var _0x250bec=_0x4916cb[_0xe726('0x29')]({'plain':!![]});var _0x31efc3='ChatWebsites';return db['UserProfileSection'][_0xe726('0x4b')]({'where':{'name':_0x31efc3,'userProfileId':_0x5331b2[_0xe726('0x51')]},'raw':!![]})[_0xe726('0x27')](function(_0x159eb4){if(_0x159eb4&&_0x159eb4[_0xe726('0x52')]===0x0){return db[_0xe726('0x2b')][_0xe726('0x4c')]({'name':_0x250bec['name'],'resourceId':_0x250bec['id'],'type':_0x159eb4[_0xe726('0x2f')],'sectionId':_0x159eb4['id']},{})[_0xe726('0x27')](function(){return _0x4916cb;});}else{return _0x4916cb;}})[_0xe726('0x1d')](function(_0xcdb4fc){logger[_0xe726('0x19')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xcdb4fc);throw _0xcdb4fc;});}return _0x4916cb;})[_0xe726('0x27')](respondWithResult(_0x50b27a,0xc9))[_0xe726('0x1d')](handleError(_0x50b27a,null));};exports[_0xe726('0x26')]=function(_0x4b44ea,_0x109ea1){if(_0x4b44ea[_0xe726('0x4d')]['id']){delete _0x4b44ea[_0xe726('0x4d')]['id'];}return db[_0xe726('0x35')]['find']({'where':{'id':_0x4b44ea['params']['id']},'include':[{'model':db['Pause'],'as':_0xe726('0x33')}]})['then'](handleEntityNotFound(_0x109ea1,null))[_0xe726('0x27')](saveUpdates(_0x4b44ea[_0xe726('0x4d')],null))[_0xe726('0x27')](respondWithResult(_0x109ea1,null))[_0xe726('0x1d')](handleError(_0x109ea1,null));};exports[_0xe726('0x28')]=function(_0x689110,_0x1caed2){return db['ChatWebsite'][_0xe726('0x4b')]({'where':{'id':_0x689110['params']['id']}})['then'](handleEntityNotFound(_0x1caed2,null))[_0xe726('0x27')](removeEntity(_0x1caed2,null))[_0xe726('0x1d')](handleError(_0x1caed2,null));};exports[_0xe726('0x53')]=function(_0x2c747b,_0x12ac0d){return db[_0xe726('0x35')][_0xe726('0x53')]()[_0xe726('0x27')](respondWithResult(_0x12ac0d,null))['catch'](handleError(_0x12ac0d,null));};exports[_0xe726('0x54')]=function(_0x23080c,_0x25312e){if(_0x23080c[_0xe726('0x4d')]['id']){delete _0x23080c[_0xe726('0x4d')]['id'];}return db['ChatWebsite'][_0xe726('0x4b')]({'where':{'id':_0x23080c[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x25312e,null))[_0xe726('0x27')](function(_0x12dd9b){if(_0x12dd9b){_0x23080c['body'][_0xe726('0x55')]=_0x12dd9b['id'];return db[_0xe726('0x56')]['create'](_0x23080c[_0xe726('0x4d')]);}})['then'](respondWithResult(_0x25312e,null))[_0xe726('0x1d')](handleError(_0x25312e,null));};exports[_0xe726('0x57')]=function(_0x16e7db,_0x2a5362){var _0x2cab2a={'raw':![],'where':{}};var _0x507e33={};var _0x26c432={'count':0x0,'rows':[]};return db[_0xe726('0x35')][_0xe726('0x58')]({'where':{'id':_0x16e7db[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x2a5362,null))['then'](function(_0x4e405b){if(_0x4e405b){_0x507e33[_0xe726('0x39')]=_[_0xe726('0x3b')](db['Disposition'][_0xe726('0x36')]);_0x507e33[_0xe726('0x3a')]=_['keys'](_0x16e7db[_0xe726('0x3a')]);_0x507e33['filters']=_[_0xe726('0x3d')](_0x507e33['model'],_0x507e33[_0xe726('0x3a')]);_0x2cab2a[_0xe726('0x3f')]=_[_0xe726('0x3d')](_0x507e33['model'],qs['fields'](_0x16e7db[_0xe726('0x3a')][_0xe726('0x3e')]));_0x2cab2a[_0xe726('0x3f')]=_0x2cab2a[_0xe726('0x3f')]['length']?_0x2cab2a[_0xe726('0x3f')]:_0x507e33[_0xe726('0x39')];if(!_0x16e7db[_0xe726('0x3a')]['hasOwnProperty'](_0xe726('0x41'))){_0x2cab2a[_0xe726('0x20')]=qs[_0xe726('0x20')](_0x16e7db[_0xe726('0x3a')][_0xe726('0x20')]);_0x2cab2a[_0xe726('0x1f')]=qs[_0xe726('0x1f')](_0x16e7db['query'][_0xe726('0x1f')]);}_0x2cab2a[_0xe726('0x59')]=qs[_0xe726('0x5a')](_0x16e7db[_0xe726('0x3a')][_0xe726('0x5a')]);_0x2cab2a[_0xe726('0x42')]=qs[_0xe726('0x3c')](_['pick'](_0x16e7db[_0xe726('0x3a')],_0x507e33[_0xe726('0x3c')]));_0x2cab2a[_0xe726('0x42')]['ChatWebsiteId']=_0x4e405b['id'];if(_0x16e7db[_0xe726('0x3a')][_0xe726('0x43')]){_0x2cab2a[_0xe726('0x42')]=_[_0xe726('0x44')](_0x2cab2a[_0xe726('0x42')],{'$or':_[_0xe726('0x34')](_0x2cab2a['attributes'],function(_0x26ad61){var _0x376b04={};_0x376b04[_0x26ad61]={'$like':'%'+_0x16e7db[_0xe726('0x3a')][_0xe726('0x43')]+'%'};return _0x376b04;})});}_0x2cab2a=_[_0xe726('0x44')]({},_0x2cab2a,_0x16e7db[_0xe726('0x5b')]);return db[_0xe726('0x56')]['count']({'where':_0x2cab2a[_0xe726('0x42')]})[_0xe726('0x27')](function(_0x523e58){_0x26c432[_0xe726('0x22')]=_0x523e58;if(_0x16e7db[_0xe726('0x3a')][_0xe726('0x46')]){_0x2cab2a[_0xe726('0x47')]=[{'all':!![]}];}return db[_0xe726('0x56')]['findAll'](_0x2cab2a);})[_0xe726('0x27')](function(_0x453033){_0x26c432[_0xe726('0x48')]=_0x453033;return _0x26c432;});}})['then'](respondWithFilteredResult(_0x2a5362,_0x2cab2a))[_0xe726('0x1d')](handleError(_0x2a5362,null));};exports[_0xe726('0x5c')]=function(_0x20f750,_0x404ca4){return db[_0xe726('0x35')][_0xe726('0x4b')]({'where':{'id':_0x20f750['params']['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x404ca4,null))[_0xe726('0x27')](function(_0x3405f2){if(_0x3405f2){return _0x3405f2[_0xe726('0x5c')](_0x20f750[_0xe726('0x3a')][_0xe726('0x5d')]);}})['then'](respondWithStatusCode(_0x404ca4,null))[_0xe726('0x1d')](handleError(_0x404ca4,null));};exports[_0xe726('0x5e')]=function(_0x3130b9,_0x5d33c0){if(_0x3130b9[_0xe726('0x4d')]['id']){delete _0x3130b9['body']['id'];}return db[_0xe726('0x35')][_0xe726('0x4b')]({'where':{'id':_0x3130b9[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x5d33c0,null))[_0xe726('0x27')](function(_0xe60a23){if(_0xe60a23){_0x3130b9[_0xe726('0x4d')][_0xe726('0x55')]=_0xe60a23['id'];return db[_0xe726('0x5f')][_0xe726('0x4c')](_0x3130b9[_0xe726('0x4d')]);}})[_0xe726('0x27')](respondWithResult(_0x5d33c0,null))['catch'](handleError(_0x5d33c0,null));};exports[_0xe726('0x60')]=function(_0x197bfc,_0x1ecb6a){var _0x2ce398={'raw':![],'where':{}};var _0x21ec81={};var _0x55a639={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xe726('0x58')]({'where':{'id':_0x197bfc[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x1ecb6a,null))[_0xe726('0x27')](function(_0x4bea50){if(_0x4bea50){_0x21ec81[_0xe726('0x39')]=_['keys'](db['CannedAnswer']['rawAttributes']);_0x21ec81[_0xe726('0x3a')]=_[_0xe726('0x3b')](_0x197bfc[_0xe726('0x3a')]);_0x21ec81[_0xe726('0x3c')]=_['intersection'](_0x21ec81[_0xe726('0x39')],_0x21ec81[_0xe726('0x3a')]);_0x2ce398[_0xe726('0x3f')]=_[_0xe726('0x3d')](_0x21ec81['model'],qs[_0xe726('0x3e')](_0x197bfc['query']['fields']));_0x2ce398[_0xe726('0x3f')]=_0x2ce398['attributes'][_0xe726('0x40')]?_0x2ce398[_0xe726('0x3f')]:_0x21ec81[_0xe726('0x39')];if(!_0x197bfc[_0xe726('0x3a')][_0xe726('0x61')]('nolimit')){_0x2ce398[_0xe726('0x20')]=qs['limit'](_0x197bfc[_0xe726('0x3a')][_0xe726('0x20')]);_0x2ce398[_0xe726('0x1f')]=qs[_0xe726('0x1f')](_0x197bfc[_0xe726('0x3a')]['offset']);}_0x2ce398[_0xe726('0x59')]=qs[_0xe726('0x5a')](_0x197bfc[_0xe726('0x3a')][_0xe726('0x5a')]);_0x2ce398[_0xe726('0x42')]=qs[_0xe726('0x3c')](_['pick'](_0x197bfc[_0xe726('0x3a')],_0x21ec81['filters']));_0x2ce398['where'][_0xe726('0x55')]=_0x4bea50['id'];if(_0x197bfc[_0xe726('0x3a')]['filter']){_0x2ce398['where']=_[_0xe726('0x44')](_0x2ce398[_0xe726('0x42')],{'$or':_[_0xe726('0x34')](_0x2ce398['attributes'],function(_0x52941c){var _0x5920f5={};_0x5920f5[_0x52941c]={'$like':'%'+_0x197bfc[_0xe726('0x3a')]['filter']+'%'};return _0x5920f5;})});}_0x2ce398=_[_0xe726('0x44')]({},_0x2ce398,_0x197bfc[_0xe726('0x5b')]);return db[_0xe726('0x5f')][_0xe726('0x22')]({'where':_0x2ce398[_0xe726('0x42')]})[_0xe726('0x27')](function(_0x4ae5c4){_0x55a639[_0xe726('0x22')]=_0x4ae5c4;if(_0x197bfc[_0xe726('0x3a')][_0xe726('0x46')]){_0x2ce398[_0xe726('0x47')]=[{'all':!![]}];}return db[_0xe726('0x5f')][_0xe726('0x62')](_0x2ce398);})[_0xe726('0x27')](function(_0x4eef24){_0x55a639['rows']=_0x4eef24;return _0x55a639;});}})['then'](respondWithFilteredResult(_0x1ecb6a,_0x2ce398))[_0xe726('0x1d')](handleError(_0x1ecb6a,null));};exports[_0xe726('0x63')]=function(_0x373290,_0x1ac25c){return db['ChatWebsite'][_0xe726('0x4b')]({'where':{'id':_0x373290[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x1ac25c,null))[_0xe726('0x27')](function(_0x4ec3ee){if(_0x4ec3ee){return _0x4ec3ee[_0xe726('0x63')](_0x373290[_0xe726('0x3a')][_0xe726('0x5d')]);}})[_0xe726('0x27')](respondWithStatusCode(_0x1ac25c,null))['catch'](handleError(_0x1ac25c,null));};exports[_0xe726('0x64')]=function(_0x3b444b,_0x260791){_0x3b444b[_0xe726('0x4d')][_0xe726('0x65')]=_0x3b444b[_0xe726('0x66')][_0xe726('0x67')];return db[_0xe726('0x35')]['find']({'where':{'id':_0x3b444b[_0xe726('0x4a')]['id']}})['then'](handleEntityNotFound(_0x260791,null))[_0xe726('0x27')](saveUpdates(_0x3b444b[_0xe726('0x4d')],null))['then'](respondWithResult(_0x260791,null))['catch'](handleError(_0x260791,null));};exports[_0xe726('0x68')]=function(_0x19e6da,_0x53bf4b){_0x19e6da['body'][_0xe726('0x69')]=_0x19e6da[_0xe726('0x66')][_0xe726('0x67')];return db[_0xe726('0x35')]['find']({'where':{'id':_0x19e6da[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x53bf4b,null))[_0xe726('0x27')](saveUpdates(_0x19e6da[_0xe726('0x4d')],null))['then'](respondWithResult(_0x53bf4b,null))['catch'](handleError(_0x53bf4b,null));};exports[_0xe726('0x6a')]=function(_0x2e40c0,_0x19f6b2){_0x2e40c0[_0xe726('0x4d')][_0xe726('0x6b')]=_0x2e40c0['file'][_0xe726('0x67')];return db[_0xe726('0x35')][_0xe726('0x4b')]({'where':{'id':_0x2e40c0['params']['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x19f6b2,null))[_0xe726('0x27')](saveUpdates(_0x2e40c0[_0xe726('0x4d')],null))[_0xe726('0x27')](respondWithResult(_0x19f6b2,null))[_0xe726('0x1d')](handleError(_0x19f6b2,null));};exports[_0xe726('0x6c')]=function(_0x7e3583,_0x2ffcb4){_0x7e3583['body']['systemAvatar']=_0x7e3583[_0xe726('0x66')]['filename'];return db[_0xe726('0x35')][_0xe726('0x4b')]({'where':{'id':_0x7e3583[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x2ffcb4,null))[_0xe726('0x27')](saveUpdates(_0x7e3583[_0xe726('0x4d')],null))[_0xe726('0x27')](respondWithResult(_0x2ffcb4,null))[_0xe726('0x1d')](handleError(_0x2ffcb4,null));};exports[_0xe726('0x6d')]=function(_0x3a9966,_0xa8c145){var _0x34a667=path['join'](config[_0xe726('0x6e')],_0xe726('0x6f'));var _0x1ea641={'where':{'id':_0x3a9966[_0xe726('0x4a')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x58b8c1=![];return require(_0xe726('0x70'))['getLicense']()[_0xe726('0x27')](function(_0x5c4896){if(_0x5c4896){_0x58b8c1=_0x5c4896['custom'];}})[_0xe726('0x27')](function(){return db[_0xe726('0x35')][_0xe726('0x4b')](_0x1ea641);})[_0xe726('0x27')](handleEntityNotFound(_0xa8c145,null))[_0xe726('0x27')](function(_0x320173){if(_0x320173){if(!_[_0xe726('0x71')](_0x320173[_0xe726('0x65')])){if(fs[_0xe726('0x72')](path[_0xe726('0x73')](config['root'],_0xe726('0x74'),_0x320173[_0xe726('0x65')]))&&_0x58b8c1){_0x34a667=path[_0xe726('0x73')](config['root'],'server/files/images/logos/',_0x320173[_0xe726('0x65')]);}}return _0xa8c145[_0xe726('0x75')](_0x34a667);}})[_0xe726('0x1d')](handleError(_0xa8c145,null));};exports[_0xe726('0x76')]=function(_0x298bad,_0x3ed80b){var _0x55b91e=path[_0xe726('0x73')](config['root'],_0xe726('0x77'));var _0x49d648={'where':{'id':_0x298bad[_0xe726('0x4a')]['id']},'attributes':['id',_0xe726('0x69')],'raw':!![]};return db[_0xe726('0x35')]['find'](_0x49d648)[_0xe726('0x27')](handleEntityNotFound(_0x3ed80b,null))[_0xe726('0x27')](function(_0x2b1902){if(_0x2b1902){if(!_[_0xe726('0x71')](_0x2b1902['agentAvatar'])){if(fs[_0xe726('0x72')](path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0x78'),_0x2b1902['agentAvatar']))){_0x55b91e=path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0x78'),_0x2b1902[_0xe726('0x69')]);}}return _0x3ed80b['download'](_0x55b91e);}})[_0xe726('0x1d')](handleError(_0x3ed80b,null));};exports['getCustomerAvatar']=function(_0x50bbea,_0xdfa01b){var _0xbb1fd8=path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0x79'));var _0x1cdbaa={'where':{'id':_0x50bbea[_0xe726('0x4a')]['id']},'attributes':['id',_0xe726('0x6b'),_0xe726('0x7a')],'raw':!![]};return db['ChatWebsite'][_0xe726('0x4b')](_0x1cdbaa)[_0xe726('0x27')](handleEntityNotFound(_0xdfa01b,null))['then'](function(_0xad43d7){if(_0xad43d7){if(!_[_0xe726('0x71')](_0xad43d7[_0xe726('0x6b')])){if(fs[_0xe726('0x72')](path[_0xe726('0x73')](config['root'],_0xe726('0x78'),_0xad43d7[_0xe726('0x6b')]))&&_0xad43d7[_0xe726('0x7a')]){_0xbb1fd8=path[_0xe726('0x73')](config['root'],_0xe726('0x78'),_0xad43d7[_0xe726('0x6b')]);}}return _0xdfa01b[_0xe726('0x75')](_0xbb1fd8);}})['catch'](handleError(_0xdfa01b,null));};exports['getSystemAvatar']=function(_0x4059f2,_0x46214d){var _0x3a54d5=path[_0xe726('0x73')](config['root'],_0xe726('0x7b'));var _0x241a35={'where':{'id':_0x4059f2[_0xe726('0x4a')]['id']},'attributes':['id',_0xe726('0x7c')],'raw':!![]};return db[_0xe726('0x35')][_0xe726('0x4b')](_0x241a35)[_0xe726('0x27')](handleEntityNotFound(_0x46214d,null))[_0xe726('0x27')](function(_0x5df257){if(_0x5df257){if(!_[_0xe726('0x71')](_0x5df257['systemAvatar'])){if(fs['existsSync'](path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0x78'),_0x5df257['systemAvatar']))){_0x3a54d5=path['join'](config[_0xe726('0x6e')],_0xe726('0x78'),_0x5df257['systemAvatar']);}}return _0x46214d[_0xe726('0x75')](_0x3a54d5);}})[_0xe726('0x1d')](handleError(_0x46214d,null));};exports[_0xe726('0x7d')]=function(_0x22705b,_0x58d651){var _0x2a5c66=require(_0xe726('0x7e'));var _0x297026=new _0x2a5c66();var _0xc1a94a=_0x297026[_0xe726('0x7f')](_0x22705b['headers'][_0xe726('0x80')])[_0xe726('0x81')]();var _0x48016a={'body':_0x22705b[_0xe726('0x4d')],'channel':_0xe726('0x82')};var _0x59a34a=[];var _0x3b333c=[];var _0x7f9945={};var _0x423941=![];return db[_0xe726('0x83')]['describe']()[_0xe726('0x27')](function(_0x181437){if(!_0x181437){throw new db[(_0xe726('0x84'))]['ValidationError']('no\x20available\x20attributes');}_0x59a34a=_['difference'](_[_0xe726('0x3b')](_0x181437),[_0xe726('0x85'),_0xe726('0x86')]);_0x3b333c=_[_0xe726('0x87')](_[_0xe726('0x3b')](_0x181437),['createdAt',_0xe726('0x86'),'CompanyId','ListId']);if(_0x22705b['body']['id']){delete _0x22705b[_0xe726('0x4d')]['id'];}if(_['isNil'](_0x22705b[_0xe726('0x4d')][_0xe726('0x88')])){throw new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0x8a'));}if(_[_0xe726('0x71')](_0x22705b[_0xe726('0x4d')][_0xe726('0x4d')])||_0x22705b[_0xe726('0x4d')][_0xe726('0x4d')]===''){throw new db[(_0xe726('0x84'))]['ValidationError'](_0xe726('0x8b'));}if(_[_0xe726('0x71')](_0x22705b[_0xe726('0x4d')][_0xe726('0x8c')])){throw new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0x8d')+_0x3b333c);}if(!_[_0xe726('0x8e')](_0x3b333c,_0x22705b[_0xe726('0x4d')][_0xe726('0x8c')])){throw new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0x8f')+_0x3b333c);}_0x7f9945[_0x22705b[_0xe726('0x4d')][_0xe726('0x8c')]]=_0x22705b[_0xe726('0x4d')][_0xe726('0x88')];})[_0xe726('0x27')](function(){return db['ChatWebsite'][_0xe726('0x4b')]({'where':{'id':_0x22705b[_0xe726('0x4a')]['id']},'include':[{'model':db['CmList'],'as':_0xe726('0x90'),'include':[{'model':db[_0xe726('0x83')],'as':_0xe726('0x91'),'where':_0x7f9945,'limit':0x1,'order':[[_0xe726('0x86'),_0xe726('0x92')]]}]},{'model':db[_0xe726('0x93')],'as':_0xe726('0x94')}]});})[_0xe726('0x27')](handleEntityNotFound(_0x58d651,null))['then'](function(_0x4e249f){if(_0x4e249f&&_0x4e249f[_0xe726('0x90')]){_0x48016a[_0xe726('0x95')]=_0x4e249f;_0x48016a['applications']=_0x4e249f[_0xe726('0x94')];_0x48016a[_0xe726('0x96')]=_0x4e249f[_0xe726('0x90')];_0x48016a[_0xe726('0x97')]=_['orderBy'](_0x48016a[_0xe726('0x97')],[_0xe726('0x98')],[_0xe726('0x99')]);if(_0x48016a[_0xe726('0x95')]['Applications']){delete _0x48016a[_0xe726('0x95')][_0xe726('0x94')];}if(_0x48016a['account']['List']&&_0x48016a[_0xe726('0x95')][_0xe726('0x90')]['Contacts']['length']){return _0x48016a[_0xe726('0x95')][_0xe726('0x90')][_0xe726('0x91')][0x0];}var _0x32424f=_[_0xe726('0xb')](_0x22705b[_0xe726('0x4d')],{'firstName':_0x22705b[_0xe726('0x4d')][_0xe726('0x88')],'ListId':_0x4e249f[_0xe726('0x9a')]});_0x32424f[_0x22705b[_0xe726('0x4d')][_0xe726('0x8c')]]=_0x22705b['body'][_0xe726('0x88')];return db[_0xe726('0x83')][_0xe726('0x4c')](_0x32424f,{'fields':_0x59a34a,'raw':!![]});}})[_0xe726('0x27')](handleEntityNotFound(_0x58d651,null))[_0xe726('0x27')](function(_0x586b56){_0x48016a[_0xe726('0x9b')]=_0x586b56;var _0x4cbdc0=_0x22705b[_0xe726('0x4d')]['customerIp'];if(_0x22705b[_0xe726('0x9c')]['cf-connecting-ip']){_0x4cbdc0=_0x22705b[_0xe726('0x9c')][_0xe726('0x9d')];}else if(_0x22705b[_0xe726('0x9c')][_0xe726('0x9e')]){_0x4cbdc0=_[_0xe726('0x9f')](_0x22705b['headers']['x-forwarded-for'][_0xe726('0xa0')](','));}if(_0x586b56){var _0x3d5ed3={'ContactId':_0x586b56['id'],'ChatWebsiteId':_0x22705b[_0xe726('0x4a')]['id'],'from':(_0x586b56[_0xe726('0xa1')]||'')+'\x20'+(_0x586b56[_0xe726('0xa2')]||''),'customerIp':_0x4cbdc0,'customerPort':_0x22705b[_0xe726('0x9c')][_0xe726('0xa3')]?_0x22705b['headers'][_0xe726('0xa3')]:null,'referer':_0x22705b[_0xe726('0x4d')][_0xe726('0xa4')],'browserName':_0xc1a94a[_0xe726('0xa5')]['name']&&_0xc1a94a[_0xe726('0xa5')][_0xe726('0xa6')]?util[_0xe726('0xa7')](_0xe726('0xa8'),_0xc1a94a['browser'][_0xe726('0x2f')],_0xc1a94a[_0xe726('0xa5')][_0xe726('0xa6')]):'unknown','browserVersion':_0xc1a94a[_0xe726('0xa5')]['version']||_0xe726('0xa9'),'osName':util[_0xe726('0xa7')]('%s\x20%s',_0xc1a94a['os'][_0xe726('0x2f')],_0xc1a94a['os'][_0xe726('0xa6')]),'osVersion':_0xc1a94a['os']['version'],'deviceModel':_0xc1a94a[_0xe726('0xaa')][_0xe726('0x39')]&&_0xc1a94a[_0xe726('0xaa')]['vendor']?util[_0xe726('0xa7')](_0xe726('0xab'),_0xc1a94a[_0xe726('0xaa')][_0xe726('0x39')],_0xc1a94a[_0xe726('0xaa')][_0xe726('0xac')],_0xc1a94a[_0xe726('0xaa')]['type']):null,'deviceVendor':_0xc1a94a[_0xe726('0xaa')][_0xe726('0xac')],'deviceType':_0xc1a94a[_0xe726('0xaa')][_0xe726('0x37')],'formData':JSON[_0xe726('0xad')](_0x22705b[_0xe726('0x4d')])};var _0x3bfe20={'ChatWebsiteId':_0x22705b[_0xe726('0x4a')]['id'],'closed':![]};if(_0x22705b['body'][_0xe726('0xae')]){_0x3bfe20[_0xe726('0xae')]=_0x22705b['body'][_0xe726('0xae')];return db['ChatInteraction'][_0xe726('0x4b')]({'where':_0x3bfe20})['then'](function(_0x5265ca){if(_0x5265ca){return[_0x5265ca,![]];}_0x3d5ed3[_0xe726('0xae')]=_0x22705b[_0xe726('0x4d')]['threadId'];_0x3d5ed3[_0xe726('0xaf')]=_0x22705b[_0xe726('0x4d')][_0xe726('0xaf')];return db['ChatInteraction'][_0xe726('0x4c')](_0x3d5ed3)[_0xe726('0x27')](function(_0x269e87){return[_0x269e87,!![]];});});}_0x3bfe20['ContactId']=_0x586b56['id'];if(_0x22705b[_0xe726('0x4d')][_0xe726('0xb0')]&&_0x22705b[_0xe726('0x4d')][_0xe726('0xb0')]['id']){_0x3bfe20['id']=_0x22705b[_0xe726('0x4d')][_0xe726('0xb0')]['id'];return db['ChatInteraction'][_0xe726('0x4b')]({'where':_0x3bfe20})[_0xe726('0x27')](function(_0x11d3e3){if(_0x11d3e3){return[_0x11d3e3,![]];}return db[_0xe726('0xb1')][_0xe726('0x4c')](_0x3d5ed3)[_0xe726('0x27')](function(_0x316ec7){return[_0x316ec7,!![]];});});}return db[_0xe726('0xb1')][_0xe726('0x4c')](_0x3d5ed3)[_0xe726('0x27')](function(_0xb40d3f){return[_0xb40d3f,!![]];});}})['spread'](function(_0x46a2c7,_0x5678e1){if(_0x46a2c7){_0x423941=_0x5678e1;if(!_0x5678e1){var _0x188206={'from':(_0x48016a[_0xe726('0x9b')]['firstName']||'')+'\x20'+(_0x48016a['contact'][_0xe726('0xa2')]||'')};if(_0x22705b[_0xe726('0x4d')][_0xe726('0xae')]&&_0x22705b[_0xe726('0x4d')]['messageId']&&_0x22705b[_0xe726('0x4d')]['threadId']!=_0x22705b[_0xe726('0x4d')][_0xe726('0xb2')]){_0x188206['threadId']=_0x22705b[_0xe726('0x4d')][_0xe726('0xb2')];}return _0x46a2c7[_0xe726('0x26')](_0x188206);}else{return _0x46a2c7;}}})[_0xe726('0x27')](function(_0x104a3a){_0x48016a[_0xe726('0xb0')]=_0x104a3a[_0xe726('0x29')]({'plain':!![]});_0x48016a[_0xe726('0xb0')][_0xe726('0xb3')]=_0x423941;if(_0x48016a['interaction'][_0xe726('0xb3')]){if(_0x48016a[_0xe726('0x95')]['autoclose']){_0x48016a[_0xe726('0x97')][_0xe726('0xb4')]({'id':0x0,'priority':_0x48016a[_0xe726('0x97')][_0xe726('0x40')]+0x1,'app':_0xe726('0xb5'),'appdata':_0xe726('0xb6'),'interval':_0xe726('0xb7')});}}return db[_0xe726('0xb8')]['create']({'body':_0x22705b['body'][_0xe726('0x4d')],'ChatWebsiteId':_0x22705b['params']['id'],'ChatInteractionId':_0x104a3a['id'],'direction':'in','ContactId':_0x48016a[_0xe726('0x9b')]['id'],'AttachmentId':_0x22705b[_0xe726('0x4d')][_0xe726('0xb9')]});})['then'](function(_0x2b0f8b){_0x48016a[_0xe726('0x1b')]=_0x2b0f8b;if(_0x48016a['interaction'][_0xe726('0xba')]){return db['User'][_0xe726('0x4b')]({'attributes':['id',_0xe726('0x2f')],'where':{'id':_0x48016a[_0xe726('0xb0')]['UserId']}})['then'](function(_0x25e7c2){if(_0x25e7c2){_0x48016a[_0xe726('0x97')][_0xe726('0xbb')]({'id':0x0,'priority':0x0,'app':_0xe726('0xbc'),'appdata':_0x25e7c2[_0xe726('0x2f')]+','+(_0x48016a['account'][_0xe726('0xbd')]||0xa),'interval':'*,*,*,*'});_0x48016a['forcedOwnership']=!![];}return respondWithRpcPromise('Start',_0xe726('0xbe'),_0x48016a);});}return respondWithRpcPromise(_0xe726('0xbf'),_0xe726('0xbe'),_0x48016a);})[_0xe726('0x27')](function(_0x30a707){respondWithRpcPromise(_0xe726('0xc0'),_0xe726('0xc0'),{'event':_0xe726('0x7d'),'message':_0x30a707},client9002);return _0x30a707;})[_0xe726('0x27')](respondWithResult(_0x58d651,null))[_0xe726('0x1d')](handleError(_0x58d651,null));};exports[_0xe726('0xc1')]=function(_0x32c28c,_0x50ae45){var _0x46f2e2,_0x1da5ff,_0x2631f1;var _0x3b320d=[];var _0x17a7ba={};var _0x467974=_0x32c28c['files']||[];var _0x5a01eb=[];var _0xda7d9;return db[_0xe726('0x83')][_0xe726('0x53')]()[_0xe726('0x27')](function(_0x58f60b){if(!_0x58f60b){throw new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0xc2'));}_0x3b320d=_[_0xe726('0x87')](_['keys'](_0x58f60b),[_0xe726('0x85'),_0xe726('0x86'),_0xe726('0xc3'),_0xe726('0x9a')]);if(_0x32c28c[_0xe726('0x4d')]['id']){delete _0x32c28c[_0xe726('0x4d')]['id'];}if(_['isNil'](_0x32c28c['body'][_0xe726('0x88')])){throw _0x50ae45[_0xe726('0x1e')](0x1f4)['send'](new db[(_0xe726('0x84'))]['ValidationError'](_0xe726('0x8a')));}if(_['isNil'](_0x32c28c[_0xe726('0x4d')][_0xe726('0x4d')])||_0x32c28c[_0xe726('0x4d')][_0xe726('0x4d')]===''){throw _0x50ae45[_0xe726('0x1e')](0x1f4)[_0xe726('0x30')](new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0x8b')));}if(_[_0xe726('0x71')](_0x32c28c['body'][_0xe726('0xc4')])){throw _0x50ae45[_0xe726('0x1e')](0x1f4)['send'](new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0xc5')+_0x3b320d));}if(!_[_0xe726('0x8e')](_0x3b320d,_0x32c28c[_0xe726('0x4d')][_0xe726('0xc4')])){throw _0x50ae45[_0xe726('0x1e')](0x1f4)[_0xe726('0x30')](new db[(_0xe726('0x84'))][(_0xe726('0x89'))](_0xe726('0xc6')+_0x3b320d));}_0x17a7ba[_0x32c28c[_0xe726('0x4d')][_0xe726('0xc4')]]=_0x32c28c[_0xe726('0x4d')][_0xe726('0x88')];})[_0xe726('0x27')](function(){return db[_0xe726('0x35')]['find']({'where':{'id':_0x32c28c[_0xe726('0x4a')]['id']},'include':[{'model':db['CmList'],'as':'List'},{'model':db['MailAccount'],'as':_0xe726('0xc7')}]});})['then'](handleEntityNotFound(_0x50ae45,null))[_0xe726('0x27')](function(_0x537183){if(_0x537183&&_0x537183['List']){_0x1da5ff=_0x537183;var _0x5286c2=_[_0xe726('0xb')](_0x32c28c[_0xe726('0x4d')],{'firstName':_0x32c28c[_0xe726('0x4d')][_0xe726('0x88')],'phone':_0x32c28c['body']['from'],'ListId':_0x537183[_0xe726('0x9a')]});_0x5286c2[_0x32c28c[_0xe726('0x4d')][_0xe726('0xc4')]]=_0x32c28c[_0xe726('0x4d')][_0xe726('0x88')];return db[_0xe726('0x83')][_0xe726('0xc8')]({'where':_0x17a7ba,'defaults':_0x5286c2});}})[_0xe726('0xc9')](function(_0x2933fe){if(_0x2933fe){_0x2631f1=_0x2933fe;var _0x54c258=fs[_0xe726('0xca')](path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0xcb')),_0xe726('0xcc'));var _0x11d8f0=ejs[_0xe726('0xcd')](_0x54c258,{'body':_[_0xe726('0xce')](_0x32c28c[_0xe726('0x4d')]['body']),'bodyTitle':_0x1da5ff[_0xe726('0xcf')]});return db[_0xe726('0xd0')][_0xe726('0x4c')]({'body':_0x11d8f0,'plainBody':htmlToText['fromString'](_0x11d8f0),'ContactId':_0x2933fe['id'],'ChatWebsiteId':_0x1da5ff['id']});}})[_0xe726('0x27')](function(_0x1af536){_0xda7d9=_0x1af536;if(_0x467974[_0xe726('0x40')]){var _0x1621be=_0x467974[_0xe726('0x34')](function(_0x368798){return{'name':_0x368798[_0xe726('0xd1')],'basename':_0x368798[_0xe726('0x67')],'type':_0x368798[_0xe726('0xd2')],'ChatOfflineMessageId':_0x1af536['id']};});_0x5a01eb=_0x1621be['map'](_0x1575d4=>{var _0x5baba3={'filename':_0x1575d4[_0xe726('0x2f')],'path':path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0xd3'),_0xe726('0xd4'),_0xe726('0xd5'),_0xe726('0xd6'),_0x1575d4[_0xe726('0xd7')])};return _0x5baba3;});if(!_0x1da5ff[_0xe726('0xd8')]){return db[_0xe726('0xd9')][_0xe726('0xda')](function(_0x5a07e4){return db['Attachment']['bulkCreate'](_0x1621be,{'transaction':_0x5a07e4});});}}})[_0xe726('0x27')](function(){if(_0xda7d9){_0x46f2e2=_0xda7d9;return db[_0xe726('0xc7')][_0xe726('0x58')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0xe726('0xdb'),'raw':!![]}]});}})[_0xe726('0x27')](function(_0x34b993){if(_0x34b993&&_0x34b993[_0xe726('0xdb')]&&_0x1da5ff[_0xe726('0xdc')]&&_0x1da5ff['forwardOfflineAddress']){var _0x368ba1={'tls':{'rejectUnauthorized':![]}};if(_0x34b993[_0xe726('0xdb')][_0xe726('0xdd')]){_0x368ba1['service']=_0x34b993[_0xe726('0xdb')][_0xe726('0xdd')];}else{_0x368ba1['host']=_0x34b993[_0xe726('0xdb')][_0xe726('0xde')];_0x368ba1[_0xe726('0xdf')]=_0x34b993['Smtp']['port'];_0x368ba1[_0xe726('0xe0')]=_0x34b993[_0xe726('0xdb')][_0xe726('0xe0')];}if(_0x34b993[_0xe726('0xdb')][_0xe726('0xe1')]){_0x368ba1['auth']={'user':_0x34b993['Smtp'][_0xe726('0x4e')],'pass':_0x34b993[_0xe726('0xdb')][_0xe726('0xe2')]};}return respondWithRpcPromise(_0xe726('0xe3'),_0xe726('0xe4'),{'account':_0x368ba1,'message':{'from':util[_0xe726('0xa7')](_0xe726('0xe5'),_0x34b993[_0xe726('0x2f')],_0x34b993[_0xe726('0xe6')]||_0x34b993[_0xe726('0xdb')][_0xe726('0x4e')]),'to':_0x1da5ff[_0xe726('0xe7')],'subject':_0x1da5ff[_0xe726('0xe8')],'html':_0x46f2e2[_0xe726('0x4d')],'attachments':_0x5a01eb}},client9003)[_0xe726('0x27')](function(){return _0x46f2e2;})['catch'](function(_0x17be3f){console[_0xe726('0x19')](_0x17be3f);});}})['then'](function(){if(_0x1da5ff&&_0x1da5ff[_0xe726('0xd8')]&&_0x1da5ff[_0xe726('0xe9')]){var _0x55f4ee=[];if(_0x467974['length']){_0x55f4ee=_0x467974[_0xe726('0x34')](function(_0x3e153b){return{'name':_0x3e153b[_0xe726('0xd1')],'basename':_0x3e153b[_0xe726('0x67')],'type':_0x3e153b[_0xe726('0xd2')],'ChatOfflineMessageId':_0xda7d9['id']};});}var _0x2e3993;if(!_[_0xe726('0x71')](_0x1da5ff[_0xe726('0xea')])){var _0x7f8c4e=_[_0xe726('0x34')](_0x32c28c[_0xe726('0x4d')],function(_0x1225b4){return _0x1225b4;});var _0x5f2194=_[_0xe726('0xeb')](_0x7f8c4e)[0x0];var _0x4b3771=_[_0xe726('0xec')](_0x5f2194,function(_0x3a1978){return _0x3a1978;});_0x2e3993=_0x4b3771[0x1][_0x1da5ff[_0xe726('0xea')]];}var _0x264489={'from':_0x2631f1[_0xe726('0xe6')],'firstName':_0x2631f1[_0xe726('0xa1')],'lastName':_0x2631f1['lastName'],'mapKey':_0xe726('0xe6'),'message':{'from':_0x2631f1[_0xe726('0xe6')],'to':_0x1da5ff['MailAccount'][_0xe726('0xe6')],'cc':'','subject':_['isNil'](_0x2e3993)?_0x1da5ff['offlineMessageSubject']:_0x2e3993,'messageId':'','sentAt':new Date(),'attach':_0x55f4ee['length'],'attachments':_0x55f4ee,'originChannel':'Chat','ChatWebsiteId':_0x1da5ff['id'],'ChatOfflineMessageId':_0x46f2e2['id'],'originTo':_0x1da5ff['MailAccount']['email']},'body':_0x46f2e2[_0xe726('0x4d')]};var _0x2d1221={'account':{'id':_0x1da5ff[_0xe726('0xe9')]},'body':_0x264489,'log':_0xe726('0xed')};return respondWithRpcPromise(_0xe726('0xed'),_0xe726('0xee'),_0x2d1221,client9001)[_0xe726('0x27')](function(){return _0x46f2e2;})[_0xe726('0x1d')](function(_0x2623ad){console['error'](_0x2623ad);});}return;})[_0xe726('0x27')](function(){if(_0x46f2e2){return _0x46f2e2;}})[_0xe726('0x27')](respondWithResult(_0x50ae45,null))[_0xe726('0x1d')](function(_0x340de2){console[_0xe726('0x19')](_0xe726('0x1d'),_0x340de2);for(var _0x2e80cc of _0x467974){var _0x21299a=path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0xd3'),_0xe726('0xd4'),'attachments',_0xe726('0xd6'),_0x2e80cc[_0xe726('0x67')]);fs_extra['remove'](_0x21299a)[_0xe726('0x1d')](function(_0x48bc01){console[_0xe726('0x19')](_0xe726('0xef'),_0x21299a,_0x48bc01);});}});};exports[_0xe726('0xf0')]=function(_0x1eed13,_0x495f44){return db[_0xe726('0xb1')][_0xe726('0x4b')]({'where':{'id':_0x1eed13[_0xe726('0x4a')]['id']}})['then'](handleEntityNotFound(_0x495f44,null))[_0xe726('0x27')](function(_0x54597d){if(_0x54597d){return _0x54597d[_0xe726('0xf0')](_0x1eed13[_0xe726('0x4d')][_0xe726('0x5d')],_['omit'](_0x1eed13[_0xe726('0x4d')],[_0xe726('0x5d'),'id'])||{});}})[_0xe726('0x27')](respondWithResult(_0x495f44,null))[_0xe726('0x1d')](handleError(_0x495f44,null));};exports['getInteractions']=function(_0x24df6b,_0x3caa46){var _0x3cf979={'raw':![],'where':{}};var _0x1ab1f4={};var _0x4a0dcd={'count':0x0,'rows':[]};return db[_0xe726('0x35')]['findOne']({'where':{'id':_0x24df6b[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x3caa46,null))['then'](function(_0xcbba3f){if(_0xcbba3f){_0x1ab1f4[_0xe726('0x39')]=_[_0xe726('0x3b')](db['ChatInteraction'][_0xe726('0x36')]);_0x1ab1f4[_0xe726('0x3a')]=_[_0xe726('0x3b')](_0x24df6b[_0xe726('0x3a')]);_0x1ab1f4[_0xe726('0x3c')]=_[_0xe726('0x3d')](_0x1ab1f4['model'],_0x1ab1f4[_0xe726('0x3a')]);_0x3cf979['attributes']=_[_0xe726('0x3d')](_0x1ab1f4[_0xe726('0x39')],qs['fields'](_0x24df6b[_0xe726('0x3a')]['fields']));_0x3cf979[_0xe726('0x3f')]=_0x3cf979[_0xe726('0x3f')][_0xe726('0x40')]?_0x3cf979['attributes']:_0x1ab1f4[_0xe726('0x39')];if(!_0x24df6b[_0xe726('0x3a')][_0xe726('0x61')](_0xe726('0x41'))){_0x3cf979[_0xe726('0x20')]=qs['limit'](_0x24df6b[_0xe726('0x3a')][_0xe726('0x20')]);_0x3cf979[_0xe726('0x1f')]=qs['offset'](_0x24df6b['query']['offset']);}_0x3cf979['order']=qs[_0xe726('0x5a')](_0x24df6b[_0xe726('0x3a')][_0xe726('0x5a')]);_0x3cf979[_0xe726('0x42')]=qs[_0xe726('0x3c')](_[_0xe726('0xf1')](_0x24df6b[_0xe726('0x3a')],_0x1ab1f4[_0xe726('0x3c')]));_0x3cf979[_0xe726('0x42')][_0xe726('0x55')]=_0xcbba3f['id'];if(_0x24df6b['query'][_0xe726('0x43')]){_0x3cf979[_0xe726('0x42')]=_[_0xe726('0x44')](_0x3cf979['where'],{'$or':_[_0xe726('0x34')](_0x3cf979[_0xe726('0x3f')],function(_0x556aeb){var _0x9efcee={};_0x9efcee[_0x556aeb]={'$like':'%'+_0x24df6b[_0xe726('0x3a')][_0xe726('0x43')]+'%'};return _0x9efcee;})});}_0x3cf979=_[_0xe726('0x44')]({},_0x3cf979,_0x24df6b[_0xe726('0x5b')]);return db['ChatInteraction'][_0xe726('0x22')]({'where':_0x3cf979[_0xe726('0x42')]})[_0xe726('0x27')](function(_0x39a686){_0x4a0dcd[_0xe726('0x22')]=_0x39a686;if(_0x24df6b['query']['includeAll']){_0x3cf979[_0xe726('0x47')]=[{'model':db[_0xe726('0x83')],'as':_0xe726('0xf2'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xe726('0x2f'),_0xe726('0xf3'),_0xe726('0xf4')],'required':![]},{'model':db[_0xe726('0xf5')],'as':_0xe726('0xf6'),'attributes':['id','name',_0xe726('0xf7')],'where':_0x24df6b[_0xe726('0x3a')][_0xe726('0xf8')]?{'id':_0x24df6b[_0xe726('0x3a')][_0xe726('0xf8')]}:undefined,'required':_0x24df6b[_0xe726('0x3a')][_0xe726('0xf8')]?!![]:![]}];}return db[_0xe726('0xb1')][_0xe726('0x62')](_0x3cf979);})[_0xe726('0x27')](function(_0x56a9e6){_0x4a0dcd[_0xe726('0x48')]=_0x56a9e6;return _0x4a0dcd;});}})[_0xe726('0x27')](respondWithFilteredResult(_0x3caa46,_0x3cf979))[_0xe726('0x1d')](handleError(_0x3caa46,null));};function iftimePromise(_0x2bf4f2,_0x4ecb7e){return respondWithRpcPromise(_0xe726('0xf9'),_0xe726('0xfa'),{'command':_0x4ecb7e[_0xe726('0xfb')]?util['format']('iftime\x20%s,%s',_0x2bf4f2[_0xe726('0xfc')],_0x4ecb7e[_0xe726('0xfb')]):util['format'](_0xe726('0xfd'),_0x2bf4f2[_0xe726('0xfc')])},client9002)[_0xe726('0x27')](function(_0x1aaf21){var _0xc2aad8=_0x1aaf21&&_0x1aaf21[_0xe726('0xfe')]('true')>=0x0?!![]:![];logger['info']('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x4ecb7e['id'],_0x2bf4f2['id'],_0x2bf4f2[_0xe726('0xfc')],_0xc2aad8?_0xe726('0xff'):_0xe726('0x100'),_0x4ecb7e['timezone']?_0x4ecb7e[_0xe726('0xfb')]:_0xe726('0x101'));return _0xc2aad8;})[_0xe726('0x1d')](function(_0x3344b4){logger[_0xe726('0x19')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x4ecb7e['id'],_0x2bf4f2['id'],_0x2bf4f2['interval'],util['inspect'](_0x3344b4,{'showHidden':![],'depth':null}),_0x4ecb7e[_0xe726('0xfb')]?_0x4ecb7e[_0xe726('0xfb')]:_0xe726('0x101'));return![];});}exports[_0xe726('0xfa')]=function(_0x20a18b,_0x2c35ba){var _0x73ee78=0x0;var _0x206bd9=0x0;var _0x119a78=![];var _0x57cc96;var _0x402743;return db[_0xe726('0x35')]['find']({'where':{'id':_0x20a18b[_0xe726('0x4a')]['id']},'include':[{'model':db[_0xe726('0x102')],'as':'Interval','include':[{'model':db[_0xe726('0x102')],'as':'Intervals','attributes':['id','interval'],'raw':!![]}]}]})[_0xe726('0x27')](handleEntityNotFound(_0x2c35ba,null))[_0xe726('0x27')](function(_0x34a4cf){if(_0x34a4cf){_0x57cc96=_0x34a4cf;return _0x34a4cf['getProactiveActions']({'raw':!![]});}})[_0xe726('0x27')](function(_0x492d45){if(_0x57cc96){if(_0x492d45){_0x402743=_0x492d45;}}return require(_0xe726('0x70'))['getLicense']();})[_0xe726('0x27')](function(_0x4b2f36){if(_0x4b2f36){_0x206bd9=_0x4b2f36[_0xe726('0x103')];_0x119a78=_0x4b2f36['custom'];}})[_0xe726('0x27')](function(){return db['ChatInteraction'][_0xe726('0x22')]({'where':{'closed':![]}});})['then'](function(_0x3ed5b5){_0x73ee78=_0x3ed5b5;if(_0x206bd9&&_0x3ed5b5>_0x206bd9){return db[_0xe726('0x104')][_0xe726('0x58')]({'where':{'id':0x1}})[_0xe726('0x27')](function(_0x256b43){if(_0x256b43){_0x256b43['increment'](_0xe726('0x105'));}});}})['then'](function(){if(_0x57cc96[_0xe726('0x102')]&&_0x57cc96['Interval'][_0xe726('0x106')]){var _0x53cf66=[];for(var _0x9b1155=0x0;_0x9b1155<_0x57cc96['Interval'][_0xe726('0x106')][_0xe726('0x40')];_0x9b1155++){var _0x3de139=_0x57cc96[_0xe726('0x102')][_0xe726('0x106')][_0x9b1155][_0xe726('0x29')]({'plain':!![]});_0x53cf66[_0xe726('0xb4')](iftimePromise(_0x3de139,_0x57cc96));}return BPromise[_0xe726('0x107')](_0x53cf66)[_0xe726('0x27')](function(_0x20b7d3){return _['some'](_0x20b7d3);});}else{return!![];}})[_0xe726('0x27')](function(_0x1fecd3){var _0x1ebdc3=fs[_0xe726('0xca')](path[_0xe726('0x73')](config[_0xe726('0x6e')],_0xe726('0x108')),_0xe726('0xcc'));var _0x29d100={'remote':_0x57cc96['remote'],'query':querystring[_0xe726('0xad')](_[_0xe726('0x44')](_0x57cc96[_0xe726('0x29')]({'plain':!![]}),{'customerIp':_0x20a18b[_0xe726('0x9c')][_0xe726('0x9e')]||_0x20a18b['headers'][_0xe726('0x109')]||_0x20a18b[_0xe726('0x10a')][_0xe726('0x10b')]||_0x20a18b['ip'],'referer':_0x20a18b[_0xe726('0x9c')][_0xe726('0xa4')],'openedInteractions':_0x73ee78,'maxInteractions':_0x206bd9,'virtual':_0x119a78['virtual'],'online':_0x1fecd3,'custom':_0x119a78}))['replace'](/'/g,'\x5c\x27')};_0x2c35ba[_0xe726('0x30')](ejs[_0xe726('0xcd')](Mustache[_0xe726('0xcd')](_0x1ebdc3,_0x29d100),{'proactiveActions':_0x402743,'alignment':_0x57cc96[_0xe726('0x10c')],'verticalAlignment':_0x57cc96[_0xe726('0x10d')],'div_color':_0x57cc96[_0xe726('0xf7')],'labelText':_0x57cc96['labelText'],'text_color':_0x57cc96[_0xe726('0x10e')],'button_color':_0x57cc96[_0xe726('0x10f')],'background_color':_0x57cc96[_0xe726('0x110')],'hideWhenOffline':_0x57cc96['hideWhenOffline']}));})[_0xe726('0x1d')](handleError(_0x2c35ba,null));};exports['addApplications']=function(_0x170f74,_0x26dfe6){var _0x5112ac=_0x170f74[_0xe726('0x4a')]['id'];var _0xba1d6b=_0x170f74[_0xe726('0x4d')];var _0x5f0673=0xc8;var _0x1376ec=null;return db[_0xe726('0xd9')][_0xe726('0xda')]({'isolationLevel':db['sequelize']['Transaction'][_0xe726('0x111')][_0xe726('0x112')]},function(_0x6efe0){return db[_0xe726('0x35')][_0xe726('0x58')]({'where':{'id':_0x5112ac},'transaction':_0x6efe0})['then'](function(_0x2235c7){if(_0x2235c7){return db[_0xe726('0x93')][_0xe726('0x28')]({'where':{'ChatWebsiteId':_0x5112ac},'transaction':_0x6efe0})[_0xe726('0x27')](function(){var _0x4f4a0e=_[_0xe726('0x34')](_0xba1d6b,function(_0x19d03c){_0x19d03c[_0xe726('0x55')]=_0x5112ac;return _0x19d03c;});return db[_0xe726('0x93')][_0xe726('0x113')](_0x4f4a0e,{'transaction':_0x6efe0});});}else{_0x5f0673=0x194;_0x1376ec=[];}});})['then'](function(){if(_0x5f0673!==0x194){return db[_0xe726('0x93')][_0xe726('0x114')]({'where':{'ChatWebsiteId':_0x5112ac},'order':'priority'})[_0xe726('0x27')](function(_0x19ca36){_0x1376ec=_0x19ca36;});}})['catch'](function(_0x4375ba){_0x5f0673=0x1f4;logger[_0xe726('0x19')](_0x4375ba[_0xe726('0x2e')]);if(_0x4375ba['name']){delete _0x4375ba[_0xe726('0x2f')];}_0x1376ec=_0x4375ba;})['finally'](function(){if(_0x1376ec===null){_0x26dfe6[_0xe726('0x2d')](_0x5f0673);}else{if(_0x5f0673===0x1f4){_0x26dfe6['status'](_0x5f0673)[_0xe726('0x30')](_0x1376ec);}else{_0x26dfe6['status'](_0x5f0673)[_0xe726('0x25')](_0x1376ec);}}});};exports['getApplications']=function(_0x2b7148,_0x1383a4){var _0x503e68={};var _0x51767a={};var _0x3f1a43;var _0x17dce8;return db[_0xe726('0x35')]['findOne']({'where':{'id':_0x2b7148[_0xe726('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1383a4,null))['then'](function(_0x3e2412){if(_0x3e2412){_0x3f1a43=_0x3e2412;_0x51767a['model']=_[_0xe726('0x3b')](db[_0xe726('0x93')]['rawAttributes']);_0x51767a[_0xe726('0x3a')]=_[_0xe726('0x3b')](_0x2b7148[_0xe726('0x3a')]);_0x51767a['filters']=_[_0xe726('0x3d')](_0x51767a[_0xe726('0x39')],_0x51767a['query']);_0x503e68['attributes']=_[_0xe726('0x3d')](_0x51767a[_0xe726('0x39')],qs[_0xe726('0x3e')](_0x2b7148['query'][_0xe726('0x3e')]));_0x503e68[_0xe726('0x3f')]=_0x503e68['attributes'][_0xe726('0x40')]?_0x503e68['attributes']:_0x51767a[_0xe726('0x39')];_0x503e68[_0xe726('0x59')]=qs['sort'](_0x2b7148['query'][_0xe726('0x5a')]);_0x503e68[_0xe726('0x42')]=qs[_0xe726('0x3c')](_[_0xe726('0xf1')](_0x2b7148[_0xe726('0x3a')],_0x51767a['filters']));if(_0x2b7148[_0xe726('0x3a')][_0xe726('0x43')]){_0x503e68[_0xe726('0x42')]=_[_0xe726('0x44')](_0x503e68[_0xe726('0x42')],{'$or':_['map'](_0x503e68[_0xe726('0x3f')],function(_0x36d752){var _0x43ce30={};_0x43ce30[_0x36d752]={'$like':'%'+_0x2b7148[_0xe726('0x3a')][_0xe726('0x43')]+'%'};return _0x43ce30;})});}_0x503e68=_['merge']({},_0x503e68,_0x2b7148[_0xe726('0x5b')]);return _0x3f1a43[_0xe726('0x115')](_0x503e68);}})[_0xe726('0x27')](function(_0x597db1){if(_0x597db1){_0x17dce8=_0x597db1[_0xe726('0x40')];if(!_0x2b7148['query'][_0xe726('0x61')](_0xe726('0x41'))){_0x503e68[_0xe726('0x20')]=qs[_0xe726('0x20')](_0x2b7148[_0xe726('0x3a')][_0xe726('0x20')]);_0x503e68['offset']=qs[_0xe726('0x1f')](_0x2b7148[_0xe726('0x3a')]['offset']);}return _0x3f1a43['getApplications'](_0x503e68);}})[_0xe726('0x27')](function(_0x49b5e9){if(_0x49b5e9){return _0x49b5e9?{'count':_0x17dce8,'rows':_0x49b5e9}:null;}})[_0xe726('0x27')](respondWithResult(_0x1383a4,null))[_0xe726('0x1d')](handleError(_0x1383a4,null));};exports[_0xe726('0x116')]=function(_0x11aea8,_0x1eff21){return db[_0xe726('0x117')]['find']({'where':{'id':_0x11aea8[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x1eff21,null))['then'](function(_0x2e5f27){if(_0x2e5f27){return _0x2e5f27[_0xe726('0x116')](_0x11aea8['body'][_0xe726('0x5d')],_['omit'](_0x11aea8[_0xe726('0x4d')],['ids','id'])||{});}})[_0xe726('0x27')](respondWithResult(_0x1eff21,null))[_0xe726('0x1d')](handleError(_0x1eff21,null));};exports[_0xe726('0x118')]=function(_0x3ea8dc,_0x3ea5fc){var _0x4ad012={};var _0x395a06={};var _0x21cb5e;var _0x318259;return db[_0xe726('0x35')]['findOne']({'where':{'id':_0x3ea8dc[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x3ea5fc,null))['then'](function(_0x1d820a){if(_0x1d820a){_0x21cb5e=_0x1d820a;_0x395a06['model']=_['keys'](db[_0xe726('0x119')][_0xe726('0x36')]);_0x395a06['query']=_[_0xe726('0x3b')](_0x3ea8dc[_0xe726('0x3a')]);_0x395a06['filters']=_[_0xe726('0x3d')](_0x395a06[_0xe726('0x39')],_0x395a06[_0xe726('0x3a')]);_0x4ad012['attributes']=_[_0xe726('0x3d')](_0x395a06[_0xe726('0x39')],qs[_0xe726('0x3e')](_0x3ea8dc[_0xe726('0x3a')][_0xe726('0x3e')]));_0x4ad012[_0xe726('0x3f')]=_0x4ad012[_0xe726('0x3f')][_0xe726('0x40')]?_0x4ad012[_0xe726('0x3f')]:_0x395a06['model'];_0x4ad012[_0xe726('0x59')]=qs[_0xe726('0x5a')](_0x3ea8dc[_0xe726('0x3a')][_0xe726('0x5a')]);_0x4ad012['where']=qs[_0xe726('0x3c')](_[_0xe726('0xf1')](_0x3ea8dc['query'],_0x395a06[_0xe726('0x3c')]));if(_0x3ea8dc['query'][_0xe726('0x43')]){_0x4ad012[_0xe726('0x42')]=_[_0xe726('0x44')](_0x4ad012[_0xe726('0x42')],{'$or':_[_0xe726('0x34')](_0x4ad012[_0xe726('0x3f')],function(_0x48cdb4){var _0x42aa7e={};_0x42aa7e[_0x48cdb4]={'$like':'%'+_0x3ea8dc['query'][_0xe726('0x43')]+'%'};return _0x42aa7e;})});}_0x4ad012=_[_0xe726('0x44')]({},_0x4ad012,_0x3ea8dc[_0xe726('0x5b')]);return _0x21cb5e[_0xe726('0x118')](_0x4ad012);}})[_0xe726('0x27')](function(_0x49ec34){if(_0x49ec34){_0x318259=_0x49ec34[_0xe726('0x40')];if(!_0x3ea8dc[_0xe726('0x3a')]['hasOwnProperty'](_0xe726('0x41'))){_0x4ad012['limit']=qs[_0xe726('0x20')](_0x3ea8dc[_0xe726('0x3a')][_0xe726('0x20')]);_0x4ad012['offset']=qs[_0xe726('0x1f')](_0x3ea8dc[_0xe726('0x3a')][_0xe726('0x1f')]);}return _0x21cb5e[_0xe726('0x118')](_0x4ad012);}})[_0xe726('0x27')](function(_0x38d34a){if(_0x38d34a){return _0x38d34a?{'count':_0x318259,'rows':_0x38d34a}:null;}})[_0xe726('0x27')](respondWithResult(_0x3ea5fc,null))[_0xe726('0x1d')](handleError(_0x3ea5fc,null));};exports[_0xe726('0x11a')]=function(_0x1be356,_0x29f50d){var _0x1f8801=_0x1be356[_0xe726('0x3a')][_0xe726('0x11b')]===_0xe726('0x11c')?_0xe726('0x11d'):_0xe726('0x11e');return db['ChatWebsite']['find']({'attributes':['id',_0x1f8801],'where':{'id':_0x1be356[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x29f50d,null))[_0xe726('0x27')](function(_0x142bd0){if(_0x142bd0){var _0x4aceaf=_0x142bd0[_0x1f8801];var _0x29e652=_0x4aceaf&&_0x4aceaf['items']?_0x4aceaf['items']:[];_0x29f50d[_0xe726('0x30')]({'fromKey':_[_0xe726('0x71')](_0x4aceaf['fromKey'])?undefined:_0x4aceaf[_0xe726('0x11f')],'count':_0x29e652[_0xe726('0x40')],'rows':_0x29e652});}})[_0xe726('0x1d')](handleError(_0x29f50d,null));};exports['getOfflineMessages']=function(_0x2e9495,_0x46f68d){var _0x54d8aa={'raw':![],'where':{}};var _0x460e4f={};var _0x4b08e8={'count':0x0,'rows':[]};return db[_0xe726('0x35')][_0xe726('0x58')]({'where':{'id':_0x2e9495[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x46f68d,null))['then'](function(_0x5d23c4){if(_0x5d23c4){_0x460e4f['model']=_[_0xe726('0x3b')](db[_0xe726('0xd0')][_0xe726('0x36')]);_0x460e4f[_0xe726('0x3a')]=_['keys'](_0x2e9495[_0xe726('0x3a')]);_0x460e4f['filters']=_[_0xe726('0x3d')](_0x460e4f[_0xe726('0x39')],_0x460e4f['query']);_0x54d8aa[_0xe726('0x3f')]=_[_0xe726('0x3d')](_0x460e4f[_0xe726('0x39')],qs[_0xe726('0x3e')](_0x2e9495[_0xe726('0x3a')][_0xe726('0x3e')]));_0x54d8aa[_0xe726('0x3f')]=_0x54d8aa['attributes'][_0xe726('0x40')]?_0x54d8aa[_0xe726('0x3f')]:_0x460e4f[_0xe726('0x39')];if(!_0x2e9495[_0xe726('0x3a')]['hasOwnProperty'](_0xe726('0x41'))){_0x54d8aa[_0xe726('0x20')]=qs[_0xe726('0x20')](_0x2e9495[_0xe726('0x3a')]['limit']);_0x54d8aa[_0xe726('0x1f')]=qs['offset'](_0x2e9495['query'][_0xe726('0x1f')]);}_0x54d8aa[_0xe726('0x59')]=qs[_0xe726('0x5a')](_0x2e9495[_0xe726('0x3a')]['sort']);_0x54d8aa[_0xe726('0x42')]=qs[_0xe726('0x3c')](_[_0xe726('0xf1')](_0x2e9495[_0xe726('0x3a')],_0x460e4f[_0xe726('0x3c')]));_0x54d8aa[_0xe726('0x42')]['ChatWebsiteId']=_0x5d23c4['id'];if(_0x2e9495['query'][_0xe726('0x43')]){_0x54d8aa[_0xe726('0x42')]=_[_0xe726('0x44')](_0x54d8aa[_0xe726('0x42')],{'$or':_[_0xe726('0x34')](_0x54d8aa[_0xe726('0x3f')],function(_0x2d5404){var _0x15639f={};_0x15639f[_0x2d5404]={'$like':'%'+_0x2e9495[_0xe726('0x3a')][_0xe726('0x43')]+'%'};return _0x15639f;})});}_0x54d8aa=_[_0xe726('0x44')]({},_0x54d8aa,_0x2e9495[_0xe726('0x5b')]);return db['ChatOfflineMessage'][_0xe726('0x22')]({'where':_0x54d8aa[_0xe726('0x42')]})[_0xe726('0x27')](function(_0xed0201){_0x4b08e8[_0xe726('0x22')]=_0xed0201;if(_0x2e9495[_0xe726('0x3a')][_0xe726('0x46')]){_0x54d8aa[_0xe726('0x47')]=[{'all':!![]}];}else{_0x54d8aa[_0xe726('0x47')]=[{'model':db[_0xe726('0x83')],'as':'Contact','required':![]},{'model':db[_0xe726('0x120')],'as':_0xe726('0x121'),'required':![]}];}return db[_0xe726('0xd0')][_0xe726('0x62')](_0x54d8aa);})['then'](function(_0x21c640){_0x4b08e8[_0xe726('0x48')]=_0x21c640;return _0x4b08e8;});}})[_0xe726('0x27')](respondWithFilteredResult(_0x46f68d,_0x54d8aa))[_0xe726('0x1d')](handleError(_0x46f68d,null));};exports[_0xe726('0x122')]=function(_0x5ec039,_0x12c60f){return db[_0xe726('0x35')][_0xe726('0x4b')]({'where':{'id':_0x5ec039[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x12c60f,null))['then'](function(_0x4b3a1c){if(_0x4b3a1c){return _0x4b3a1c[_0xe726('0x122')](_0x5ec039[_0xe726('0x4d')][_0xe726('0x5d')],_[_0xe726('0x123')](_0x5ec039['body'],['ids','id'])||{})[_0xe726('0xc9')](function(_0x5ade53){for(var _0x4a230e=0x0;_0x4a230e<_0x5ec039[_0xe726('0x4d')][_0xe726('0x5d')][_0xe726('0x40')];_0x4a230e+=0x1){socket[_0xe726('0x124')]('userChatWebsite:save',{'UserId':Number(_0x5ec039['body'][_0xe726('0x5d')][_0x4a230e]),'ChatWebsiteId':Number(_0x5ec039[_0xe726('0x4a')]['id'])});}return _0x5ade53;});}})[_0xe726('0x27')](respondWithResult(_0x12c60f,null))['catch'](handleError(_0x12c60f,null));};exports['removeAgents']=function(_0x393fe4,_0x161d19){return db[_0xe726('0x35')][_0xe726('0x4b')]({'where':{'id':_0x393fe4[_0xe726('0x4a')]['id']}})[_0xe726('0x27')](handleEntityNotFound(_0x161d19,null))[_0xe726('0x27')](function(_0x561356){if(_0x561356){return _0x561356[_0xe726('0x125')](_0x393fe4[_0xe726('0x3a')]['ids'])[_0xe726('0x27')](function(){if(_[_0xe726('0x126')](_0x393fe4['query'][_0xe726('0x5d')])){for(var _0x3ef2f3=0x0;_0x3ef2f3<_0x393fe4[_0xe726('0x3a')][_0xe726('0x5d')]['length'];_0x3ef2f3+=0x1){socket['emit'](_0xe726('0x127'),{'UserId':Number(_0x393fe4[_0xe726('0x3a')]['ids'][_0x3ef2f3]),'ChatWebsiteId':Number(_0x393fe4['params']['id'])});}}else{socket[_0xe726('0x124')](_0xe726('0x127'),{'UserId':Number(_0x393fe4[_0xe726('0x3a')][_0xe726('0x5d')]),'ChatWebsiteId':Number(_0x393fe4[_0xe726('0x4a')]['id'])});}});}})[_0xe726('0x27')](respondWithStatusCode(_0x161d19,null))[_0xe726('0x1d')](handleError(_0x161d19,null));};exports[_0xe726('0x128')]=function(_0x2c312e,_0x3a77e){var _0x51d247={};var _0x316706={};var _0x362226;var _0x41b354;return db[_0xe726('0x35')][_0xe726('0x58')]({'where':{'id':_0x2c312e['params']['id']}})['then'](handleEntityNotFound(_0x3a77e,null))[_0xe726('0x27')](function(_0x26675d){if(_0x26675d){_0x362226=_0x26675d;_0x316706[_0xe726('0x39')]=_[_0xe726('0x3b')](db[_0xe726('0x129')][_0xe726('0x36')]);_0x316706['query']=_[_0xe726('0x3b')](_0x2c312e[_0xe726('0x3a')]);_0x316706[_0xe726('0x3c')]=_[_0xe726('0x3d')](_0x316706[_0xe726('0x39')],_0x316706['query']);_0x51d247['attributes']=_[_0xe726('0x3d')](_0x316706[_0xe726('0x39')],qs['fields'](_0x2c312e[_0xe726('0x3a')][_0xe726('0x3e')]));_0x51d247[_0xe726('0x3f')]=_0x51d247[_0xe726('0x3f')][_0xe726('0x40')]?_0x51d247['attributes']:_0x316706[_0xe726('0x39')];_0x51d247[_0xe726('0x59')]=qs[_0xe726('0x5a')](_0x2c312e[_0xe726('0x3a')][_0xe726('0x5a')]);_0x51d247[_0xe726('0x42')]=qs['filters'](_[_0xe726('0xf1')](_0x2c312e['query'],_0x316706[_0xe726('0x3c')]));if(_0x2c312e['query'][_0xe726('0x43')]){_0x51d247[_0xe726('0x42')]=_[_0xe726('0x44')](_0x51d247[_0xe726('0x42')],{'$or':_[_0xe726('0x34')](_0x51d247[_0xe726('0x3f')],function(_0x488b45){var _0x1f5a30={};_0x1f5a30[_0x488b45]={'$like':'%'+_0x2c312e[_0xe726('0x3a')][_0xe726('0x43')]+'%'};return _0x1f5a30;})});}_0x51d247=_['merge']({},_0x51d247,_0x2c312e[_0xe726('0x5b')]);return _0x362226['getAgents'](_0x51d247);}})[_0xe726('0x27')](function(_0x1d54e7){if(_0x1d54e7){_0x41b354=_0x1d54e7['length'];if(!_0x2c312e[_0xe726('0x3a')][_0xe726('0x61')]('nolimit')){_0x51d247[_0xe726('0x20')]=qs[_0xe726('0x20')](_0x2c312e['query'][_0xe726('0x20')]);_0x51d247[_0xe726('0x1f')]=qs[_0xe726('0x1f')](_0x2c312e['query'][_0xe726('0x1f')]);}return _0x362226[_0xe726('0x128')](_0x51d247);}})[_0xe726('0x27')](function(_0x39fe47){if(_0x39fe47){return _0x39fe47?{'count':_0x41b354,'rows':_0x39fe47}:null;}})[_0xe726('0x27')](respondWithResult(_0x3a77e,null))['catch'](handleError(_0x3a77e,null));};
\ No newline at end of file
+var _0x2032=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','length','nolimit','pick','options','removeDispositions','ids','addAnswer','CannedAnswer','findOne','rows','file','filename','addAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','getLogo','join','root','sitepic','../../config/license/util','getLicense','custom','isNil','existsSync','server/files/images/logos/','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','user-agent-parser','setUA','user-agent','getResult','CmContact','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','Applications','account','list','List','applications','orderBy','priority','asc','Contacts','contact','customerIp','headers','cf-connecting-ip','x-forwarded-for','split','lastName','x-real-port','browser','format','%s\x20%s','version','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','firstName','messageId','created','autoclose','push','close','unmanaged','ChatMessage','AttachmentId','UserId','User','unshift','*,*,*,*','Start','startRouting','EventManager','offline','files','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','server','attachments','offline-chat','basename','sequelize','Attachment','bulkCreate','MailServerOut','forwardOffline','forwardOfflineAddress','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','offlineMessageSubject','openNewInteraction','MailAccountId','mimetype','subjectOffline','toPairsIn','mapValues','email','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Owner','internal','Tag','tag','Command','getSnippet','timezone','interval','indexOf','true','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','some','server/files/chat/iframe.ejs','remote','x-real-ip','remoteAddress','referer','replace','alignment','verticalAlignment','color','textColor','backgroundColor','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','finally','getApplications','chatProactiveAction','addProactiveActions','online','false','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','spread','emit','userChatWebsite:save','userChatWebsite:remove','getAgents','mustache','util','path','fs-extra','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','end','status','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','sendStatus','stack','name','send','index','Pause','map','ChatWebsite','fieldName','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','type','includeAll','findAll','catch','mandatoryDispositionPause','rawAttributes','include','find','create','body','user','get','ChatWebsites','UserProfileSection','userProfileId','autoAssociation'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x2032,0xd9));var _0x2203=function(_0x541a87,_0x1de6d3){_0x541a87=_0x541a87-0x0;var _0x53e81c=_0x2032[_0x541a87];return _0x53e81c;};'use strict';var BPromise=require('bluebird');var Mustache=require(_0x2203('0x0'));var util=require(_0x2203('0x1'));var path=require(_0x2203('0x2'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2203('0x3'));var _=require(_0x2203('0x4'));var querystring=require('querystring');var Redis=require(_0x2203('0x5'));var qs=require(_0x2203('0x6'));var logger=require(_0x2203('0x7'))(_0x2203('0x8'));var config=require(_0x2203('0x9'));var db=require(_0x2203('0xa'))['db'];config[_0x2203('0xb')]=_[_0x2203('0xc')](config[_0x2203('0xb')],{'host':_0x2203('0xd'),'port':0x18eb});var socket=require(_0x2203('0xe'))(new Redis(config['redis']));require('./chatWebsite.socket')[_0x2203('0xf')](socket);var htmlToText=require('html-to-text');var jayson=require(_0x2203('0x10'));var client=jayson[_0x2203('0x11')][_0x2203('0x12')]({'port':0x232c});var client9002=jayson['client'][_0x2203('0x12')]({'port':0x232a});var client9003=jayson['client'][_0x2203('0x12')]({'port':0x232b});var client9001=jayson['client'][_0x2203('0x12')]({'port':0x2329});function respondWithRpcPromise(_0x1abb51,_0x4b9376,_0x583bc7,_0x585c76){return new BPromise(function(_0x5f56ff,_0x4bad7c){var _0x238772=_0x585c76||client;return _0x238772['request'](_0x1abb51,_0x583bc7)['then'](function(_0x21a3af){logger[_0x2203('0x13')](_0x2203('0x14'),_0x4b9376,_0x2203('0x15'));logger[_0x2203('0x16')](_0x2203('0x17'),_0x4b9376,_0x2203('0x15'),JSON[_0x2203('0x18')](_0x21a3af));if(_0x21a3af[_0x2203('0x19')]){if(_0x21a3af[_0x2203('0x19')]['code']===0x1f4){logger[_0x2203('0x19')](_0x2203('0x14'),_0x4b9376,_0x21a3af['error'][_0x2203('0x1a')]);return _0x4bad7c(_0x21a3af[_0x2203('0x19')]['message']);}logger[_0x2203('0x19')]('ChatWebsite,\x20%s,\x20%s',_0x4b9376,_0x21a3af[_0x2203('0x19')][_0x2203('0x1a')]);return _0x5f56ff(_0x21a3af[_0x2203('0x19')][_0x2203('0x1a')]);}else{logger[_0x2203('0x13')](_0x2203('0x14'),_0x4b9376,'request\x20sent');_0x5f56ff(_0x21a3af[_0x2203('0x1b')]['message']);}})['catch'](function(_0x15f543){logger['error'](_0x2203('0x14'),_0x4b9376,_0x15f543);_0x4bad7c(_0x15f543);});});}function respondWithStatusCode(_0x5bfe61,_0x5d4c4e){_0x5d4c4e=_0x5d4c4e||0xcc;return function(_0x3ee25b){if(_0x3ee25b){return _0x5bfe61['sendStatus'](_0x5d4c4e);}return _0x5bfe61['status'](_0x5d4c4e)[_0x2203('0x1c')]();};}function respondWithResult(_0x2718f5,_0x21f930){_0x21f930=_0x21f930||0xc8;return function(_0xfd0970){if(_0xfd0970){return _0x2718f5[_0x2203('0x1d')](_0x21f930)[_0x2203('0x1e')](_0xfd0970);}};}function respondWithFilteredResult(_0x49c12,_0x250349){return function(_0x576378){if(_0x576378){var _0x143f41=typeof _0x250349[_0x2203('0x1f')]===_0x2203('0x20')&&typeof _0x250349['limit']===_0x2203('0x20');var _0x1cec17=_0x576378['count'];var _0xd6e109=_0x143f41?0x0:_0x250349[_0x2203('0x1f')];var _0x1c6a77=_0x143f41?_0x576378[_0x2203('0x21')]:_0x250349[_0x2203('0x1f')]+_0x250349[_0x2203('0x22')];var _0x9c53f;if(_0x1c6a77>=_0x1cec17){_0x1c6a77=_0x1cec17;_0x9c53f=0xc8;}else{_0x9c53f=0xce;}_0x49c12['status'](_0x9c53f);return _0x49c12[_0x2203('0x23')](_0x2203('0x24'),_0xd6e109+'-'+_0x1c6a77+'/'+_0x1cec17)[_0x2203('0x1e')](_0x576378);}return null;};}function saveUpdates(_0x74f035){return function(_0x52a426){if(_0x52a426){return _0x52a426[_0x2203('0x25')](_0x74f035)[_0x2203('0x26')](function(_0x287c95){return _0x287c95;});}return null;};}function removeEntity(_0xf59954){return function(_0x520602){if(_0x520602){return _0x520602[_0x2203('0x27')]()[_0x2203('0x26')](function(){var _0x5e6560=_0x520602['get']({'plain':!![]});var _0x1d5f74='ChatWebsites';return db['UserProfileResource'][_0x2203('0x27')]({'where':{'type':_0x1d5f74,'resourceId':_0x5e6560['id']}})[_0x2203('0x26')](function(){return _0x520602;});})[_0x2203('0x26')](function(){_0xf59954[_0x2203('0x1d')](0xcc)[_0x2203('0x1c')]();});}};}function handleEntityNotFound(_0x5ac74b){return function(_0xb22e28){if(!_0xb22e28){_0x5ac74b[_0x2203('0x28')](0x194);}return _0xb22e28;};}function handleError(_0x49caec,_0x2a2ee7){_0x2a2ee7=_0x2a2ee7||0x1f4;return function(_0x20fbe1){logger[_0x2203('0x19')](_0x20fbe1[_0x2203('0x29')]);if(_0x20fbe1[_0x2203('0x2a')]){delete _0x20fbe1[_0x2203('0x2a')];}_0x49caec[_0x2203('0x1d')](_0x2a2ee7)[_0x2203('0x2b')](_0x20fbe1);};}exports[_0x2203('0x2c')]=function(_0x522a69,_0x15c0ad){var _0x347d3e={'include':[{'model':db[_0x2203('0x2d')],'as':'mandatoryDispositionPause'}]},_0x56f9b2={},_0x54b90b={'count':0x0,'rows':[]};var _0x25cc97=_[_0x2203('0x2e')](db[_0x2203('0x2f')]['rawAttributes'],function(_0x5a2b90){return{'name':_0x5a2b90[_0x2203('0x30')],'type':_0x5a2b90['type'][_0x2203('0x31')]};});_0x56f9b2['model']=_[_0x2203('0x2e')](_0x25cc97,'name');_0x56f9b2[_0x2203('0x32')]=_[_0x2203('0x33')](_0x522a69[_0x2203('0x32')]);_0x56f9b2[_0x2203('0x34')]=_[_0x2203('0x35')](_0x56f9b2['model'],_0x56f9b2['query']);_0x347d3e['attributes']=_[_0x2203('0x35')](_0x56f9b2[_0x2203('0x36')],qs[_0x2203('0x37')](_0x522a69[_0x2203('0x32')][_0x2203('0x37')]));_0x347d3e[_0x2203('0x38')]=_0x347d3e[_0x2203('0x38')]['length']?_0x347d3e[_0x2203('0x38')]:_0x56f9b2[_0x2203('0x36')];if(!_0x522a69[_0x2203('0x32')][_0x2203('0x39')]('nolimit')){_0x347d3e['limit']=qs[_0x2203('0x22')](_0x522a69['query'][_0x2203('0x22')]);_0x347d3e[_0x2203('0x1f')]=qs[_0x2203('0x1f')](_0x522a69['query']['offset']);}_0x347d3e[_0x2203('0x3a')]=qs[_0x2203('0x3b')](_0x522a69[_0x2203('0x32')][_0x2203('0x3b')]);_0x347d3e[_0x2203('0x3c')]=qs[_0x2203('0x34')](_['pick'](_0x522a69[_0x2203('0x32')],_0x56f9b2[_0x2203('0x34')]),_0x25cc97);if(_0x522a69[_0x2203('0x32')][_0x2203('0x3d')]){_0x347d3e[_0x2203('0x3c')]=_[_0x2203('0x3e')](_0x347d3e[_0x2203('0x3c')],{'$or':_[_0x2203('0x2e')](_0x25cc97,function(_0x36b8e4){if(_0x36b8e4[_0x2203('0x3f')]!=='VIRTUAL'){var _0x2e2ca5={};_0x2e2ca5[_0x36b8e4[_0x2203('0x2a')]]={'$like':'%'+_0x522a69[_0x2203('0x32')][_0x2203('0x3d')]+'%'};return _0x2e2ca5;}})});}_0x347d3e=_['merge']({},_0x347d3e,_0x522a69['options']);var _0x1c6661={'where':_0x347d3e['where']};return db[_0x2203('0x2f')][_0x2203('0x21')](_0x1c6661)[_0x2203('0x26')](function(_0x35dba9){_0x54b90b['count']=_0x35dba9;if(_0x522a69[_0x2203('0x32')][_0x2203('0x40')]){_0x347d3e['include']=[{'all':!![]}];}return db[_0x2203('0x2f')][_0x2203('0x41')](_0x347d3e);})[_0x2203('0x26')](function(_0x2600a9){_0x54b90b['rows']=_0x2600a9;return _0x54b90b;})['then'](respondWithFilteredResult(_0x15c0ad,_0x347d3e))[_0x2203('0x42')](handleError(_0x15c0ad,null));};exports['show']=function(_0x543fde,_0x450082){var _0x33b7b5={'raw':![],'where':{'id':_0x543fde['params']['id']},'include':[{'model':db['Pause'],'as':_0x2203('0x43')}]},_0x1a2665={};_0x1a2665[_0x2203('0x36')]=_[_0x2203('0x33')](db[_0x2203('0x2f')][_0x2203('0x44')]);_0x1a2665[_0x2203('0x32')]=_['keys'](_0x543fde[_0x2203('0x32')]);_0x1a2665['filters']=_[_0x2203('0x35')](_0x1a2665[_0x2203('0x36')],_0x1a2665[_0x2203('0x32')]);_0x33b7b5[_0x2203('0x38')]=_['intersection'](_0x1a2665['model'],qs[_0x2203('0x37')](_0x543fde[_0x2203('0x32')][_0x2203('0x37')]));_0x33b7b5[_0x2203('0x38')]=_0x33b7b5['attributes']['length']?_0x33b7b5['attributes']:_0x1a2665[_0x2203('0x36')];if(_0x543fde[_0x2203('0x32')]['includeAll']){_0x33b7b5[_0x2203('0x45')]=[{'all':!![]}];}_0x33b7b5=_[_0x2203('0x3e')]({},_0x33b7b5,_0x543fde['options']);return db[_0x2203('0x2f')][_0x2203('0x46')](_0x33b7b5)[_0x2203('0x26')](handleEntityNotFound(_0x450082,null))[_0x2203('0x26')](respondWithResult(_0x450082,null))['catch'](handleError(_0x450082,null));};exports[_0x2203('0x47')]=function(_0x5268d6,_0x3858f0){return db[_0x2203('0x2f')]['create'](_0x5268d6[_0x2203('0x48')],{})[_0x2203('0x26')](function(_0x11c581){var _0x378132=_0x5268d6[_0x2203('0x49')][_0x2203('0x4a')]({'plain':!![]});if(!_0x378132)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x378132['role']===_0x2203('0x49')){var _0x524356=_0x11c581['get']({'plain':!![]});var _0xfddc3b=_0x2203('0x4b');return db[_0x2203('0x4c')]['find']({'where':{'name':_0xfddc3b,'userProfileId':_0x378132[_0x2203('0x4d')]},'raw':!![]})['then'](function(_0x5ddf9e){if(_0x5ddf9e&&_0x5ddf9e[_0x2203('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x524356['name'],'resourceId':_0x524356['id'],'type':_0x5ddf9e[_0x2203('0x2a')],'sectionId':_0x5ddf9e['id']},{})[_0x2203('0x26')](function(){return _0x11c581;});}else{return _0x11c581;}})[_0x2203('0x42')](function(_0x1c6c90){logger[_0x2203('0x19')](_0x2203('0x4f'),_0x1c6c90);throw _0x1c6c90;});}return _0x11c581;})[_0x2203('0x26')](respondWithResult(_0x3858f0,0xc9))[_0x2203('0x42')](handleError(_0x3858f0,null));};exports[_0x2203('0x25')]=function(_0x216641,_0x384a59){if(_0x216641[_0x2203('0x48')]['id']){delete _0x216641['body']['id'];}return db['ChatWebsite'][_0x2203('0x46')]({'where':{'id':_0x216641[_0x2203('0x50')]['id']},'include':[{'model':db[_0x2203('0x2d')],'as':_0x2203('0x43')}]})[_0x2203('0x26')](handleEntityNotFound(_0x384a59,null))[_0x2203('0x26')](saveUpdates(_0x216641['body'],null))['then'](respondWithResult(_0x384a59,null))[_0x2203('0x42')](handleError(_0x384a59,null));};exports[_0x2203('0x27')]=function(_0x21ee59,_0x1e6d21){return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x21ee59[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x1e6d21,null))[_0x2203('0x26')](removeEntity(_0x1e6d21,null))[_0x2203('0x42')](handleError(_0x1e6d21,null));};exports[_0x2203('0x51')]=function(_0x48bed1,_0x1ea97a){return db[_0x2203('0x2f')][_0x2203('0x51')]()[_0x2203('0x26')](respondWithResult(_0x1ea97a,null))[_0x2203('0x42')](handleError(_0x1ea97a,null));};exports[_0x2203('0x52')]=function(_0x52c159,_0x544756){if(_0x52c159[_0x2203('0x48')]['id']){delete _0x52c159[_0x2203('0x48')]['id'];}return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x52c159[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x544756,null))[_0x2203('0x26')](function(_0x34e820){if(_0x34e820){_0x52c159[_0x2203('0x48')][_0x2203('0x53')]=_0x34e820['id'];return db[_0x2203('0x54')][_0x2203('0x47')](_0x52c159['body']);}})[_0x2203('0x26')](respondWithResult(_0x544756,null))[_0x2203('0x42')](handleError(_0x544756,null));};exports[_0x2203('0x55')]=function(_0x4e461e,_0x68855d){var _0x3f73e1={'raw':![],'where':{}};var _0x1b4f96={};var _0x1b7aa8={'count':0x0,'rows':[]};return db[_0x2203('0x2f')]['findOne']({'where':{'id':_0x4e461e[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x68855d,null))[_0x2203('0x26')](function(_0x4dde80){if(_0x4dde80){_0x1b4f96['model']=_['keys'](db['Disposition']['rawAttributes']);_0x1b4f96[_0x2203('0x32')]=_[_0x2203('0x33')](_0x4e461e[_0x2203('0x32')]);_0x1b4f96[_0x2203('0x34')]=_[_0x2203('0x35')](_0x1b4f96[_0x2203('0x36')],_0x1b4f96[_0x2203('0x32')]);_0x3f73e1[_0x2203('0x38')]=_['intersection'](_0x1b4f96['model'],qs[_0x2203('0x37')](_0x4e461e[_0x2203('0x32')][_0x2203('0x37')]));_0x3f73e1[_0x2203('0x38')]=_0x3f73e1[_0x2203('0x38')][_0x2203('0x56')]?_0x3f73e1[_0x2203('0x38')]:_0x1b4f96[_0x2203('0x36')];if(!_0x4e461e[_0x2203('0x32')][_0x2203('0x39')](_0x2203('0x57'))){_0x3f73e1[_0x2203('0x22')]=qs[_0x2203('0x22')](_0x4e461e[_0x2203('0x32')][_0x2203('0x22')]);_0x3f73e1[_0x2203('0x1f')]=qs[_0x2203('0x1f')](_0x4e461e[_0x2203('0x32')][_0x2203('0x1f')]);}_0x3f73e1['order']=qs[_0x2203('0x3b')](_0x4e461e['query'][_0x2203('0x3b')]);_0x3f73e1['where']=qs[_0x2203('0x34')](_[_0x2203('0x58')](_0x4e461e[_0x2203('0x32')],_0x1b4f96[_0x2203('0x34')]));_0x3f73e1[_0x2203('0x3c')][_0x2203('0x53')]=_0x4dde80['id'];if(_0x4e461e[_0x2203('0x32')][_0x2203('0x3d')]){_0x3f73e1['where']=_['merge'](_0x3f73e1[_0x2203('0x3c')],{'$or':_[_0x2203('0x2e')](_0x3f73e1[_0x2203('0x38')],function(_0x484549){var _0x48c6c9={};_0x48c6c9[_0x484549]={'$like':'%'+_0x4e461e['query'][_0x2203('0x3d')]+'%'};return _0x48c6c9;})});}_0x3f73e1=_[_0x2203('0x3e')]({},_0x3f73e1,_0x4e461e[_0x2203('0x59')]);return db[_0x2203('0x54')]['count']({'where':_0x3f73e1[_0x2203('0x3c')]})['then'](function(_0x48bd5){_0x1b7aa8[_0x2203('0x21')]=_0x48bd5;if(_0x4e461e[_0x2203('0x32')][_0x2203('0x40')]){_0x3f73e1[_0x2203('0x45')]=[{'all':!![]}];}return db['Disposition'][_0x2203('0x41')](_0x3f73e1);})[_0x2203('0x26')](function(_0x18663f){_0x1b7aa8['rows']=_0x18663f;return _0x1b7aa8;});}})[_0x2203('0x26')](respondWithFilteredResult(_0x68855d,_0x3f73e1))[_0x2203('0x42')](handleError(_0x68855d,null));};exports[_0x2203('0x5a')]=function(_0xd76624,_0x1c65f9){return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0xd76624[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x1c65f9,null))[_0x2203('0x26')](function(_0x112385){if(_0x112385){return _0x112385['removeDispositions'](_0xd76624[_0x2203('0x32')][_0x2203('0x5b')]);}})[_0x2203('0x26')](respondWithStatusCode(_0x1c65f9,null))[_0x2203('0x42')](handleError(_0x1c65f9,null));};exports[_0x2203('0x5c')]=function(_0x52c35e,_0x23f7b1){if(_0x52c35e[_0x2203('0x48')]['id']){delete _0x52c35e[_0x2203('0x48')]['id'];}return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x52c35e[_0x2203('0x50')]['id']}})['then'](handleEntityNotFound(_0x23f7b1,null))['then'](function(_0x26cfd7){if(_0x26cfd7){_0x52c35e[_0x2203('0x48')][_0x2203('0x53')]=_0x26cfd7['id'];return db[_0x2203('0x5d')][_0x2203('0x47')](_0x52c35e['body']);}})[_0x2203('0x26')](respondWithResult(_0x23f7b1,null))[_0x2203('0x42')](handleError(_0x23f7b1,null));};exports['getAnswers']=function(_0x511689,_0x4edac6){var _0x4fc51a={'raw':![],'where':{}};var _0x5e07d7={};var _0x2952fc={'count':0x0,'rows':[]};return db[_0x2203('0x2f')][_0x2203('0x5e')]({'where':{'id':_0x511689['params']['id']}})['then'](handleEntityNotFound(_0x4edac6,null))['then'](function(_0x1e1969){if(_0x1e1969){_0x5e07d7[_0x2203('0x36')]=_[_0x2203('0x33')](db[_0x2203('0x5d')][_0x2203('0x44')]);_0x5e07d7[_0x2203('0x32')]=_[_0x2203('0x33')](_0x511689['query']);_0x5e07d7[_0x2203('0x34')]=_[_0x2203('0x35')](_0x5e07d7[_0x2203('0x36')],_0x5e07d7[_0x2203('0x32')]);_0x4fc51a[_0x2203('0x38')]=_[_0x2203('0x35')](_0x5e07d7[_0x2203('0x36')],qs['fields'](_0x511689[_0x2203('0x32')]['fields']));_0x4fc51a['attributes']=_0x4fc51a[_0x2203('0x38')]['length']?_0x4fc51a[_0x2203('0x38')]:_0x5e07d7[_0x2203('0x36')];if(!_0x511689['query'][_0x2203('0x39')](_0x2203('0x57'))){_0x4fc51a[_0x2203('0x22')]=qs[_0x2203('0x22')](_0x511689[_0x2203('0x32')][_0x2203('0x22')]);_0x4fc51a['offset']=qs[_0x2203('0x1f')](_0x511689[_0x2203('0x32')]['offset']);}_0x4fc51a['order']=qs[_0x2203('0x3b')](_0x511689[_0x2203('0x32')][_0x2203('0x3b')]);_0x4fc51a[_0x2203('0x3c')]=qs[_0x2203('0x34')](_[_0x2203('0x58')](_0x511689[_0x2203('0x32')],_0x5e07d7[_0x2203('0x34')]));_0x4fc51a[_0x2203('0x3c')][_0x2203('0x53')]=_0x1e1969['id'];if(_0x511689[_0x2203('0x32')][_0x2203('0x3d')]){_0x4fc51a[_0x2203('0x3c')]=_[_0x2203('0x3e')](_0x4fc51a[_0x2203('0x3c')],{'$or':_[_0x2203('0x2e')](_0x4fc51a['attributes'],function(_0x4e2d30){var _0x2cb712={};_0x2cb712[_0x4e2d30]={'$like':'%'+_0x511689[_0x2203('0x32')]['filter']+'%'};return _0x2cb712;})});}_0x4fc51a=_[_0x2203('0x3e')]({},_0x4fc51a,_0x511689[_0x2203('0x59')]);return db['CannedAnswer'][_0x2203('0x21')]({'where':_0x4fc51a[_0x2203('0x3c')]})['then'](function(_0x21f357){_0x2952fc[_0x2203('0x21')]=_0x21f357;if(_0x511689['query'][_0x2203('0x40')]){_0x4fc51a[_0x2203('0x45')]=[{'all':!![]}];}return db[_0x2203('0x5d')][_0x2203('0x41')](_0x4fc51a);})['then'](function(_0x511c66){_0x2952fc[_0x2203('0x5f')]=_0x511c66;return _0x2952fc;});}})[_0x2203('0x26')](respondWithFilteredResult(_0x4edac6,_0x4fc51a))[_0x2203('0x42')](handleError(_0x4edac6,null));};exports['removeAnswers']=function(_0x5ef759,_0x8df62d){return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x5ef759['params']['id']}})['then'](handleEntityNotFound(_0x8df62d,null))[_0x2203('0x26')](function(_0x348ce6){if(_0x348ce6){return _0x348ce6['removeAnswers'](_0x5ef759[_0x2203('0x32')][_0x2203('0x5b')]);}})['then'](respondWithStatusCode(_0x8df62d,null))[_0x2203('0x42')](handleError(_0x8df62d,null));};exports['addLogo']=function(_0x1feca9,_0x5505e9){_0x1feca9['body']['sitepic']=_0x1feca9[_0x2203('0x60')][_0x2203('0x61')];return db['ChatWebsite'][_0x2203('0x46')]({'where':{'id':_0x1feca9[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x5505e9,null))['then'](saveUpdates(_0x1feca9[_0x2203('0x48')],null))['then'](respondWithResult(_0x5505e9,null))[_0x2203('0x42')](handleError(_0x5505e9,null));};exports[_0x2203('0x62')]=function(_0x486563,_0x4358c1){_0x486563[_0x2203('0x48')]['agentAvatar']=_0x486563[_0x2203('0x60')][_0x2203('0x61')];return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x486563[_0x2203('0x50')]['id']}})['then'](handleEntityNotFound(_0x4358c1,null))[_0x2203('0x26')](saveUpdates(_0x486563[_0x2203('0x48')],null))[_0x2203('0x26')](respondWithResult(_0x4358c1,null))[_0x2203('0x42')](handleError(_0x4358c1,null));};exports[_0x2203('0x63')]=function(_0x180b8c,_0x579ddf){_0x180b8c[_0x2203('0x48')][_0x2203('0x64')]=_0x180b8c['file'][_0x2203('0x61')];return db['ChatWebsite'][_0x2203('0x46')]({'where':{'id':_0x180b8c[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x579ddf,null))['then'](saveUpdates(_0x180b8c[_0x2203('0x48')],null))[_0x2203('0x26')](respondWithResult(_0x579ddf,null))[_0x2203('0x42')](handleError(_0x579ddf,null));};exports[_0x2203('0x65')]=function(_0x2c275f,_0x2cd816){_0x2c275f[_0x2203('0x48')]['systemAvatar']=_0x2c275f['file'][_0x2203('0x61')];return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x2c275f[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x2cd816,null))[_0x2203('0x26')](saveUpdates(_0x2c275f[_0x2203('0x48')],null))['then'](respondWithResult(_0x2cd816,null))[_0x2203('0x42')](handleError(_0x2cd816,null));};exports[_0x2203('0x66')]=function(_0x5d331b,_0x1f18cd){var _0x53b134=path[_0x2203('0x67')](config[_0x2203('0x68')],'server/files/images/logos/default_logo.svg');var _0x2d8d8c={'where':{'id':_0x5d331b[_0x2203('0x50')]['id']},'attributes':['id',_0x2203('0x69')],'raw':!![]};var _0x9d0f9b=![];return require(_0x2203('0x6a'))[_0x2203('0x6b')]()[_0x2203('0x26')](function(_0x46dc26){if(_0x46dc26){_0x9d0f9b=_0x46dc26[_0x2203('0x6c')];}})[_0x2203('0x26')](function(){return db[_0x2203('0x2f')][_0x2203('0x46')](_0x2d8d8c);})['then'](handleEntityNotFound(_0x1f18cd,null))[_0x2203('0x26')](function(_0x50275d){if(_0x50275d){if(!_[_0x2203('0x6d')](_0x50275d[_0x2203('0x69')])){if(fs[_0x2203('0x6e')](path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x6f'),_0x50275d[_0x2203('0x69')]))&&_0x9d0f9b){_0x53b134=path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x6f'),_0x50275d[_0x2203('0x69')]);}}return _0x1f18cd['download'](_0x53b134);}})[_0x2203('0x42')](handleError(_0x1f18cd,null));};exports['getAvatar']=function(_0x44e091,_0x3deb3b){var _0x6b8ea4=path['join'](config[_0x2203('0x68')],_0x2203('0x70'));var _0x1add92={'where':{'id':_0x44e091[_0x2203('0x50')]['id']},'attributes':['id',_0x2203('0x71')],'raw':!![]};return db['ChatWebsite'][_0x2203('0x46')](_0x1add92)['then'](handleEntityNotFound(_0x3deb3b,null))[_0x2203('0x26')](function(_0x17e7e7){if(_0x17e7e7){if(!_['isNil'](_0x17e7e7[_0x2203('0x71')])){if(fs[_0x2203('0x6e')](path[_0x2203('0x67')](config[_0x2203('0x68')],'server/files/images/avatars/',_0x17e7e7[_0x2203('0x71')]))){_0x6b8ea4=path['join'](config['root'],_0x2203('0x72'),_0x17e7e7[_0x2203('0x71')]);}}return _0x3deb3b[_0x2203('0x73')](_0x6b8ea4);}})[_0x2203('0x42')](handleError(_0x3deb3b,null));};exports[_0x2203('0x74')]=function(_0x368b54,_0x206502){var _0x4b6d6f=path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x75'));var _0x492179={'where':{'id':_0x368b54['params']['id']},'attributes':['id','customerAvatar',_0x2203('0x76')],'raw':!![]};return db[_0x2203('0x2f')][_0x2203('0x46')](_0x492179)[_0x2203('0x26')](handleEntityNotFound(_0x206502,null))['then'](function(_0x238e6f){if(_0x238e6f){if(!_[_0x2203('0x6d')](_0x238e6f[_0x2203('0x64')])){if(fs[_0x2203('0x6e')](path['join'](config['root'],_0x2203('0x72'),_0x238e6f[_0x2203('0x64')]))&&_0x238e6f[_0x2203('0x76')]){_0x4b6d6f=path['join'](config[_0x2203('0x68')],_0x2203('0x72'),_0x238e6f[_0x2203('0x64')]);}}return _0x206502[_0x2203('0x73')](_0x4b6d6f);}})[_0x2203('0x42')](handleError(_0x206502,null));};exports[_0x2203('0x77')]=function(_0xbee79c,_0x529bfb){var _0x2e33df=path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x78'));var _0x268aca={'where':{'id':_0xbee79c[_0x2203('0x50')]['id']},'attributes':['id',_0x2203('0x79')],'raw':!![]};return db[_0x2203('0x2f')][_0x2203('0x46')](_0x268aca)['then'](handleEntityNotFound(_0x529bfb,null))[_0x2203('0x26')](function(_0xa53324){if(_0xa53324){if(!_[_0x2203('0x6d')](_0xa53324[_0x2203('0x79')])){if(fs['existsSync'](path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x72'),_0xa53324[_0x2203('0x79')]))){_0x2e33df=path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x72'),_0xa53324[_0x2203('0x79')]);}}return _0x529bfb[_0x2203('0x73')](_0x2e33df);}})['catch'](handleError(_0x529bfb,null));};exports['notify']=function(_0x225ea1,_0x4670e4){var _0x18f1b6=require(_0x2203('0x7a'));var _0x5bbb78=new _0x18f1b6();var _0x411e9e=_0x5bbb78[_0x2203('0x7b')](_0x225ea1['headers'][_0x2203('0x7c')])[_0x2203('0x7d')]();var _0x330f4d={'body':_0x225ea1[_0x2203('0x48')],'channel':'chat'};var _0x3f3690=[];var _0x11639a=[];var _0x1aab65={};var _0x487f71=![];return db[_0x2203('0x7e')][_0x2203('0x51')]()[_0x2203('0x26')](function(_0x5909b8){if(!_0x5909b8){throw new db['Sequelize'][(_0x2203('0x7f'))](_0x2203('0x80'));}_0x3f3690=_[_0x2203('0x81')](_[_0x2203('0x33')](_0x5909b8),['createdAt',_0x2203('0x82')]);_0x11639a=_[_0x2203('0x81')](_[_0x2203('0x33')](_0x5909b8),['createdAt','updatedAt',_0x2203('0x83'),_0x2203('0x84')]);if(_0x225ea1[_0x2203('0x48')]['id']){delete _0x225ea1[_0x2203('0x48')]['id'];}if(_[_0x2203('0x6d')](_0x225ea1[_0x2203('0x48')][_0x2203('0x85')])){throw new db[(_0x2203('0x86'))][(_0x2203('0x7f'))](_0x2203('0x87'));}if(_[_0x2203('0x6d')](_0x225ea1['body'][_0x2203('0x48')])||_0x225ea1['body'][_0x2203('0x48')]===''){throw new db[(_0x2203('0x86'))][(_0x2203('0x7f'))](_0x2203('0x88'));}if(_[_0x2203('0x6d')](_0x225ea1['body'][_0x2203('0x89')])){throw new db[(_0x2203('0x86'))][(_0x2203('0x7f'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x11639a);}if(!_[_0x2203('0x8a')](_0x11639a,_0x225ea1[_0x2203('0x48')][_0x2203('0x89')])){throw new db[(_0x2203('0x86'))]['ValidationError'](_0x2203('0x8b')+_0x11639a);}_0x1aab65[_0x225ea1[_0x2203('0x48')][_0x2203('0x89')]]=_0x225ea1[_0x2203('0x48')]['from'];})[_0x2203('0x26')](function(){return db[_0x2203('0x2f')]['find']({'where':{'id':_0x225ea1[_0x2203('0x50')]['id']},'include':[{'model':db[_0x2203('0x8c')],'as':'List','include':[{'model':db['CmContact'],'as':'Contacts','where':_0x1aab65,'limit':0x1,'order':[['updatedAt',_0x2203('0x8d')]]}]},{'model':db['ChatApplication'],'as':_0x2203('0x8e')}]});})['then'](handleEntityNotFound(_0x4670e4,null))['then'](function(_0x3b9b12){if(_0x3b9b12&&_0x3b9b12['List']){_0x330f4d[_0x2203('0x8f')]=_0x3b9b12;_0x330f4d['applications']=_0x3b9b12[_0x2203('0x8e')];_0x330f4d[_0x2203('0x90')]=_0x3b9b12[_0x2203('0x91')];_0x330f4d[_0x2203('0x92')]=_[_0x2203('0x93')](_0x330f4d[_0x2203('0x92')],[_0x2203('0x94')],[_0x2203('0x95')]);if(_0x330f4d[_0x2203('0x8f')][_0x2203('0x8e')]){delete _0x330f4d[_0x2203('0x8f')][_0x2203('0x8e')];}if(_0x330f4d['account'][_0x2203('0x91')]&&_0x330f4d[_0x2203('0x8f')][_0x2203('0x91')][_0x2203('0x96')][_0x2203('0x56')]){return _0x330f4d[_0x2203('0x8f')]['List'][_0x2203('0x96')][0x0];}var _0x367bb3=_[_0x2203('0xc')](_0x225ea1[_0x2203('0x48')],{'firstName':_0x225ea1[_0x2203('0x48')][_0x2203('0x85')],'ListId':_0x3b9b12['ListId']});_0x367bb3[_0x225ea1[_0x2203('0x48')][_0x2203('0x89')]]=_0x225ea1[_0x2203('0x48')]['from'];return db[_0x2203('0x7e')][_0x2203('0x47')](_0x367bb3,{'fields':_0x3f3690,'raw':!![]});}})[_0x2203('0x26')](handleEntityNotFound(_0x4670e4,null))[_0x2203('0x26')](function(_0x51d662){_0x330f4d[_0x2203('0x97')]=_0x51d662;var _0x4598cb=_0x225ea1[_0x2203('0x48')][_0x2203('0x98')];if(_0x225ea1[_0x2203('0x99')][_0x2203('0x9a')]){_0x4598cb=_0x225ea1[_0x2203('0x99')][_0x2203('0x9a')];}else if(_0x225ea1['headers']['x-forwarded-for']){_0x4598cb=_['first'](_0x225ea1[_0x2203('0x99')][_0x2203('0x9b')][_0x2203('0x9c')](','));}if(_0x51d662){var _0xed2e6d={'ContactId':_0x51d662['id'],'ChatWebsiteId':_0x225ea1['params']['id'],'from':(_0x51d662['firstName']||'')+'\x20'+(_0x51d662[_0x2203('0x9d')]||''),'customerIp':_0x4598cb,'customerPort':_0x225ea1[_0x2203('0x99')]['x-real-port']?_0x225ea1[_0x2203('0x99')][_0x2203('0x9e')]:null,'referer':_0x225ea1[_0x2203('0x48')]['referer'],'browserName':_0x411e9e[_0x2203('0x9f')]['name']&&_0x411e9e[_0x2203('0x9f')]['version']?util[_0x2203('0xa0')](_0x2203('0xa1'),_0x411e9e[_0x2203('0x9f')][_0x2203('0x2a')],_0x411e9e['browser'][_0x2203('0xa2')]):'unknown','browserVersion':_0x411e9e[_0x2203('0x9f')]['version']||_0x2203('0xa3'),'osName':util[_0x2203('0xa0')](_0x2203('0xa1'),_0x411e9e['os'][_0x2203('0x2a')],_0x411e9e['os']['version']),'osVersion':_0x411e9e['os'][_0x2203('0xa2')],'deviceModel':_0x411e9e[_0x2203('0xa4')][_0x2203('0x36')]&&_0x411e9e[_0x2203('0xa4')][_0x2203('0xa5')]?util[_0x2203('0xa0')](_0x2203('0xa6'),_0x411e9e[_0x2203('0xa4')][_0x2203('0x36')],_0x411e9e[_0x2203('0xa4')][_0x2203('0xa5')],_0x411e9e[_0x2203('0xa4')][_0x2203('0x3f')]):null,'deviceVendor':_0x411e9e[_0x2203('0xa4')][_0x2203('0xa5')],'deviceType':_0x411e9e['device']['type'],'formData':JSON['stringify'](_0x225ea1[_0x2203('0x48')])};var _0x1f423e={'ChatWebsiteId':_0x225ea1[_0x2203('0x50')]['id'],'closed':![]};if(_0x225ea1[_0x2203('0x48')][_0x2203('0xa7')]){_0x1f423e[_0x2203('0xa7')]=_0x225ea1['body'][_0x2203('0xa7')];return db[_0x2203('0xa8')]['find']({'where':_0x1f423e})['then'](function(_0x3f4973){if(_0x3f4973){return[_0x3f4973,![]];}_0xed2e6d['threadId']=_0x225ea1[_0x2203('0x48')][_0x2203('0xa7')];_0xed2e6d['externalUrl']=_0x225ea1[_0x2203('0x48')][_0x2203('0xa9')];return db['ChatInteraction'][_0x2203('0x47')](_0xed2e6d)['then'](function(_0x2d94a1){return[_0x2d94a1,!![]];});});}_0x1f423e[_0x2203('0xaa')]=_0x51d662['id'];if(_0x225ea1[_0x2203('0x48')]['interaction']&&_0x225ea1[_0x2203('0x48')][_0x2203('0xab')]['id']){_0x1f423e['id']=_0x225ea1[_0x2203('0x48')][_0x2203('0xab')]['id'];return db[_0x2203('0xa8')]['find']({'where':_0x1f423e})[_0x2203('0x26')](function(_0x20f50b){if(_0x20f50b){return[_0x20f50b,![]];}return db[_0x2203('0xa8')][_0x2203('0x47')](_0xed2e6d)['then'](function(_0x1b645b){return[_0x1b645b,!![]];});});}return db[_0x2203('0xa8')][_0x2203('0x47')](_0xed2e6d)[_0x2203('0x26')](function(_0x43c0bb){return[_0x43c0bb,!![]];});}})['spread'](function(_0x9c7f35,_0x4d594c){if(_0x9c7f35){_0x487f71=_0x4d594c;if(!_0x4d594c){var _0x2edd2f={'from':(_0x330f4d[_0x2203('0x97')][_0x2203('0xac')]||'')+'\x20'+(_0x330f4d[_0x2203('0x97')]['lastName']||'')};if(_0x225ea1[_0x2203('0x48')][_0x2203('0xa7')]&&_0x225ea1[_0x2203('0x48')][_0x2203('0xad')]&&_0x225ea1[_0x2203('0x48')][_0x2203('0xa7')]!=_0x225ea1[_0x2203('0x48')][_0x2203('0xad')]){_0x2edd2f[_0x2203('0xa7')]=_0x225ea1[_0x2203('0x48')][_0x2203('0xad')];}return _0x9c7f35[_0x2203('0x25')](_0x2edd2f);}else{return _0x9c7f35;}}})[_0x2203('0x26')](function(_0xd4c10e){_0x330f4d[_0x2203('0xab')]=_0xd4c10e[_0x2203('0x4a')]({'plain':!![]});_0x330f4d['interaction']['created']=_0x487f71;if(_0x330f4d['interaction'][_0x2203('0xae')]){if(_0x330f4d[_0x2203('0x8f')][_0x2203('0xaf')]){_0x330f4d['applications'][_0x2203('0xb0')]({'id':0x0,'priority':_0x330f4d[_0x2203('0x92')][_0x2203('0x56')]+0x1,'app':_0x2203('0xb1'),'appdata':_0x2203('0xb2'),'interval':'*,*,*,*'});}}return db[_0x2203('0xb3')][_0x2203('0x47')]({'body':_0x225ea1[_0x2203('0x48')][_0x2203('0x48')],'ChatWebsiteId':_0x225ea1[_0x2203('0x50')]['id'],'ChatInteractionId':_0xd4c10e['id'],'direction':'in','ContactId':_0x330f4d['contact']['id'],'AttachmentId':_0x225ea1[_0x2203('0x48')][_0x2203('0xb4')]});})['then'](function(_0x574471){_0x330f4d[_0x2203('0x1a')]=_0x574471;if(_0x330f4d[_0x2203('0xab')][_0x2203('0xb5')]){return db[_0x2203('0xb6')][_0x2203('0x46')]({'attributes':['id',_0x2203('0x2a')],'where':{'id':_0x330f4d['interaction']['UserId']}})[_0x2203('0x26')](function(_0x385c9a){if(_0x385c9a){_0x330f4d[_0x2203('0x92')][_0x2203('0xb7')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x385c9a[_0x2203('0x2a')]+','+(_0x330f4d[_0x2203('0x8f')]['waitForTheAssignedAgent']||0xa),'interval':_0x2203('0xb8')});_0x330f4d['forcedOwnership']=!![];}return respondWithRpcPromise(_0x2203('0xb9'),_0x2203('0xba'),_0x330f4d);});}return respondWithRpcPromise('Start','startRouting',_0x330f4d);})[_0x2203('0x26')](function(_0x1350e3){respondWithRpcPromise('EventManager',_0x2203('0xbb'),{'event':'notify','message':_0x1350e3},client9002);return _0x1350e3;})[_0x2203('0x26')](respondWithResult(_0x4670e4,null))['catch'](handleError(_0x4670e4,null));};exports[_0x2203('0xbc')]=function(_0xcb8c16,_0x226c23){var _0x55f80c,_0x3655b1,_0x17927c;var _0x46d93b=[];var _0x8ad33f={};var _0x1468a5=_0xcb8c16[_0x2203('0xbd')]||[];var _0x23edae=[];var _0xa620b2;return db[_0x2203('0x7e')][_0x2203('0x51')]()['then'](function(_0x2a2e3e){if(!_0x2a2e3e){throw new db['Sequelize'][(_0x2203('0x7f'))](_0x2203('0x80'));}_0x46d93b=_[_0x2203('0x81')](_[_0x2203('0x33')](_0x2a2e3e),['createdAt','updatedAt',_0x2203('0x83'),'ListId']);if(_0xcb8c16[_0x2203('0x48')]['id']){delete _0xcb8c16['body']['id'];}if(_[_0x2203('0x6d')](_0xcb8c16['body']['from'])){throw _0x226c23[_0x2203('0x1d')](0x1f4)[_0x2203('0x2b')](new db['Sequelize'][(_0x2203('0x7f'))](_0x2203('0x87')));}if(_[_0x2203('0x6d')](_0xcb8c16[_0x2203('0x48')][_0x2203('0x48')])||_0xcb8c16[_0x2203('0x48')][_0x2203('0x48')]===''){throw _0x226c23['status'](0x1f4)[_0x2203('0x2b')](new db[(_0x2203('0x86'))][(_0x2203('0x7f'))](_0x2203('0x88')));}if(_[_0x2203('0x6d')](_0xcb8c16[_0x2203('0x48')][_0x2203('0xbe')])){throw _0x226c23[_0x2203('0x1d')](0x1f4)[_0x2203('0x2b')](new db[(_0x2203('0x86'))]['ValidationError'](_0x2203('0xbf')+_0x46d93b));}if(!_[_0x2203('0x8a')](_0x46d93b,_0xcb8c16[_0x2203('0x48')][_0x2203('0xbe')])){throw _0x226c23[_0x2203('0x1d')](0x1f4)[_0x2203('0x2b')](new db[(_0x2203('0x86'))][(_0x2203('0x7f'))](_0x2203('0xc0')+_0x46d93b));}_0x8ad33f[_0xcb8c16[_0x2203('0x48')][_0x2203('0xbe')]]=_0xcb8c16[_0x2203('0x48')][_0x2203('0x85')];})['then'](function(){return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0xcb8c16['params']['id']},'include':[{'model':db[_0x2203('0x8c')],'as':_0x2203('0x91')},{'model':db[_0x2203('0xc1')],'as':_0x2203('0xc1')}]});})[_0x2203('0x26')](handleEntityNotFound(_0x226c23,null))[_0x2203('0x26')](function(_0x2efdb8){if(_0x2efdb8&&_0x2efdb8[_0x2203('0x91')]){_0x3655b1=_0x2efdb8;var _0x3e4a72=_['defaults'](_0xcb8c16[_0x2203('0x48')],{'firstName':_0xcb8c16[_0x2203('0x48')][_0x2203('0x85')],'phone':_0xcb8c16[_0x2203('0x48')][_0x2203('0x85')],'ListId':_0x2efdb8[_0x2203('0x84')]});_0x3e4a72[_0xcb8c16[_0x2203('0x48')][_0x2203('0xbe')]]=_0xcb8c16['body'][_0x2203('0x85')];return db['CmContact'][_0x2203('0xc2')]({'where':_0x8ad33f,'defaults':_0x3e4a72});}})['spread'](function(_0x4118af){if(_0x4118af){_0x17927c=_0x4118af;var _0x581c4f=fs[_0x2203('0xc3')](path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0xc4')),_0x2203('0xc5'));var _0x525a98=ejs[_0x2203('0xc6')](_0x581c4f,{'body':_[_0x2203('0xc7')](_0xcb8c16[_0x2203('0x48')][_0x2203('0x48')]),'bodyTitle':_0x3655b1[_0x2203('0xc8')]});return db[_0x2203('0xc9')][_0x2203('0x47')]({'body':_0x525a98,'plainBody':htmlToText[_0x2203('0xca')](_0x525a98),'ContactId':_0x4118af['id'],'ChatWebsiteId':_0x3655b1['id']});}})['then'](function(_0x4b0ef0){_0xa620b2=_0x4b0ef0;if(_0x1468a5['length']){var _0x13fec6=_0x1468a5['map'](function(_0x5507e9){return{'name':_0x5507e9[_0x2203('0xcb')],'basename':_0x5507e9[_0x2203('0x61')],'type':_0x5507e9['mimetype'],'ChatOfflineMessageId':_0x4b0ef0['id']};});_0x23edae=_0x13fec6['map'](_0xe4ef10=>{var _0x314669={'filename':_0xe4ef10[_0x2203('0x2a')],'path':path['join'](config[_0x2203('0x68')],_0x2203('0xcc'),_0x2203('0xbd'),_0x2203('0xcd'),_0x2203('0xce'),_0xe4ef10[_0x2203('0xcf')])};return _0x314669;});if(!_0x3655b1['openNewInteraction']){return db[_0x2203('0xd0')]['transaction'](function(_0x26d72f){return db[_0x2203('0xd1')][_0x2203('0xd2')](_0x13fec6,{'transaction':_0x26d72f});});}}})[_0x2203('0x26')](function(){if(_0xa620b2){_0x55f80c=_0xa620b2;return db[_0x2203('0xc1')][_0x2203('0x5e')]({'where':{'active':!![]},'include':[{'model':db[_0x2203('0xd3')],'as':'Smtp','raw':!![]}]});}})[_0x2203('0x26')](function(_0xb75c36){if(_0xb75c36&&_0xb75c36['Smtp']&&_0x3655b1[_0x2203('0xd4')]&&_0x3655b1[_0x2203('0xd5')]){var _0x3185e6={'tls':{'rejectUnauthorized':![]}};if(_0xb75c36[_0x2203('0xd6')][_0x2203('0xd7')]){_0x3185e6[_0x2203('0xd7')]=_0xb75c36[_0x2203('0xd6')][_0x2203('0xd7')];}else{_0x3185e6[_0x2203('0xd8')]=_0xb75c36[_0x2203('0xd6')]['host'];_0x3185e6[_0x2203('0xd9')]=_0xb75c36[_0x2203('0xd6')][_0x2203('0xd9')];_0x3185e6['secure']=_0xb75c36[_0x2203('0xd6')][_0x2203('0xda')];}if(_0xb75c36[_0x2203('0xd6')][_0x2203('0xdb')]){_0x3185e6[_0x2203('0xdc')]={'user':_0xb75c36[_0x2203('0xd6')][_0x2203('0x49')],'pass':_0xb75c36[_0x2203('0xd6')][_0x2203('0xdd')]};}return respondWithRpcPromise(_0x2203('0xde'),_0x2203('0xdf'),{'account':_0x3185e6,'message':{'from':util['format'](_0x2203('0xe0'),_0xb75c36[_0x2203('0x2a')],_0xb75c36['email']||_0xb75c36[_0x2203('0xd6')][_0x2203('0x49')]),'to':_0x3655b1[_0x2203('0xd5')],'subject':_0x3655b1[_0x2203('0xe1')],'html':_0x55f80c[_0x2203('0x48')],'attachments':_0x23edae}},client9003)[_0x2203('0x26')](function(){return _0x55f80c;})[_0x2203('0x42')](function(_0xaea451){console[_0x2203('0x19')](_0xaea451);});}})['then'](function(){if(_0x3655b1&&_0x3655b1[_0x2203('0xe2')]&&_0x3655b1[_0x2203('0xe3')]){var _0x5a8ae9=[];if(_0x1468a5[_0x2203('0x56')]){_0x5a8ae9=_0x1468a5[_0x2203('0x2e')](function(_0x15ee70){return{'name':_0x15ee70[_0x2203('0xcb')],'basename':_0x15ee70[_0x2203('0x61')],'type':_0x15ee70[_0x2203('0xe4')],'ChatOfflineMessageId':_0xa620b2['id']};});}var _0x26d6cc;if(!_[_0x2203('0x6d')](_0x3655b1[_0x2203('0xe5')])){var _0x44d30c=_[_0x2203('0x2e')](_0xcb8c16[_0x2203('0x48')],function(_0x40620e){return _0x40620e;});var _0xcfef6a=_[_0x2203('0xe6')](_0x44d30c)[0x0];var _0x529742=_[_0x2203('0xe7')](_0xcfef6a,function(_0x5da1d3){return _0x5da1d3;});_0x26d6cc=_0x529742[0x1][_0x3655b1['subjectOffline']];}var _0x6adba5={'from':_0x17927c['email'],'firstName':_0x17927c['firstName'],'lastName':_0x17927c['lastName'],'mapKey':'email','message':{'from':_0x17927c[_0x2203('0xe8')],'to':_0x3655b1[_0x2203('0xc1')][_0x2203('0xe8')],'cc':'','subject':_[_0x2203('0x6d')](_0x26d6cc)?_0x3655b1['offlineMessageSubject']:_0x26d6cc,'messageId':'','sentAt':new Date(),'attach':_0x5a8ae9[_0x2203('0x56')],'attachments':_0x5a8ae9,'originChannel':_0x2203('0xe9'),'ChatWebsiteId':_0x3655b1['id'],'ChatOfflineMessageId':_0x55f80c['id'],'originTo':_0x3655b1[_0x2203('0xc1')]['email']},'body':_0x55f80c['body']};var _0x39a1c3={'account':{'id':_0x3655b1[_0x2203('0xe3')]},'body':_0x6adba5,'log':_0x2203('0xea')};return respondWithRpcPromise(_0x2203('0xea'),_0x2203('0xeb'),_0x39a1c3,client9001)[_0x2203('0x26')](function(){return _0x55f80c;})[_0x2203('0x42')](function(_0x2481f5){console[_0x2203('0x19')](_0x2481f5);});}return;})[_0x2203('0x26')](function(){if(_0x55f80c){return _0x55f80c;}})[_0x2203('0x26')](respondWithResult(_0x226c23,null))['catch'](function(_0x5298e8){console[_0x2203('0x19')](_0x2203('0x42'),_0x5298e8);for(var _0x1b5a7c of _0x1468a5){var _0x14bbc0=path['join'](config[_0x2203('0x68')],_0x2203('0xcc'),_0x2203('0xbd'),'attachments',_0x2203('0xce'),_0x1b5a7c[_0x2203('0x61')]);fs_extra[_0x2203('0xec')](_0x14bbc0)['catch'](function(_0x3e2946){console['error'](_0x2203('0xed'),_0x14bbc0,_0x3e2946);});}});};exports[_0x2203('0xee')]=function(_0x38a7c4,_0x2111b4){return db[_0x2203('0xa8')][_0x2203('0x46')]({'where':{'id':_0x38a7c4[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x2111b4,null))[_0x2203('0x26')](function(_0x20a488){if(_0x20a488){return _0x20a488[_0x2203('0xee')](_0x38a7c4['body'][_0x2203('0x5b')],_[_0x2203('0xef')](_0x38a7c4[_0x2203('0x48')],[_0x2203('0x5b'),'id'])||{});}})[_0x2203('0x26')](respondWithResult(_0x2111b4,null))[_0x2203('0x42')](handleError(_0x2111b4,null));};exports[_0x2203('0xf0')]=function(_0x46f053,_0x29b90d){var _0x3ac5e2={'raw':![],'where':{}};var _0x160ecb={};var _0x556dd4={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x2203('0x5e')]({'where':{'id':_0x46f053[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x29b90d,null))[_0x2203('0x26')](function(_0x973a9c){if(_0x973a9c){_0x160ecb[_0x2203('0x36')]=_[_0x2203('0x33')](db[_0x2203('0xa8')][_0x2203('0x44')]);_0x160ecb[_0x2203('0x32')]=_[_0x2203('0x33')](_0x46f053[_0x2203('0x32')]);_0x160ecb['filters']=_['intersection'](_0x160ecb[_0x2203('0x36')],_0x160ecb['query']);_0x3ac5e2['attributes']=_[_0x2203('0x35')](_0x160ecb['model'],qs[_0x2203('0x37')](_0x46f053[_0x2203('0x32')][_0x2203('0x37')]));_0x3ac5e2[_0x2203('0x38')]=_0x3ac5e2[_0x2203('0x38')][_0x2203('0x56')]?_0x3ac5e2[_0x2203('0x38')]:_0x160ecb[_0x2203('0x36')];if(!_0x46f053[_0x2203('0x32')]['hasOwnProperty'](_0x2203('0x57'))){_0x3ac5e2['limit']=qs[_0x2203('0x22')](_0x46f053[_0x2203('0x32')][_0x2203('0x22')]);_0x3ac5e2[_0x2203('0x1f')]=qs[_0x2203('0x1f')](_0x46f053['query'][_0x2203('0x1f')]);}_0x3ac5e2['order']=qs[_0x2203('0x3b')](_0x46f053['query']['sort']);_0x3ac5e2[_0x2203('0x3c')]=qs[_0x2203('0x34')](_[_0x2203('0x58')](_0x46f053[_0x2203('0x32')],_0x160ecb['filters']));_0x3ac5e2['where'][_0x2203('0x53')]=_0x973a9c['id'];if(_0x46f053[_0x2203('0x32')][_0x2203('0x3d')]){_0x3ac5e2['where']=_['merge'](_0x3ac5e2[_0x2203('0x3c')],{'$or':_[_0x2203('0x2e')](_0x3ac5e2[_0x2203('0x38')],function(_0x102591){var _0x345283={};_0x345283[_0x102591]={'$like':'%'+_0x46f053[_0x2203('0x32')][_0x2203('0x3d')]+'%'};return _0x345283;})});}_0x3ac5e2=_[_0x2203('0x3e')]({},_0x3ac5e2,_0x46f053[_0x2203('0x59')]);return db[_0x2203('0xa8')][_0x2203('0x21')]({'where':_0x3ac5e2['where']})['then'](function(_0x3f4b71){_0x556dd4['count']=_0x3f4b71;if(_0x46f053[_0x2203('0x32')][_0x2203('0x40')]){_0x3ac5e2['include']=[{'model':db['CmContact'],'as':_0x2203('0xf1'),'required':![]},{'model':db[_0x2203('0xb6')],'as':_0x2203('0xf2'),'attributes':[_0x2203('0x2a'),'fullname',_0x2203('0xf3')],'required':![]},{'model':db[_0x2203('0xf4')],'as':'Tags','attributes':['id',_0x2203('0x2a'),'color'],'where':_0x46f053[_0x2203('0x32')]['tag']?{'id':_0x46f053[_0x2203('0x32')][_0x2203('0xf5')]}:undefined,'required':_0x46f053[_0x2203('0x32')][_0x2203('0xf5')]?!![]:![]}];}return db[_0x2203('0xa8')][_0x2203('0x41')](_0x3ac5e2);})[_0x2203('0x26')](function(_0x48f227){_0x556dd4[_0x2203('0x5f')]=_0x48f227;return _0x556dd4;});}})['then'](respondWithFilteredResult(_0x29b90d,_0x3ac5e2))[_0x2203('0x42')](handleError(_0x29b90d,null));};function iftimePromise(_0x2b802c,_0x1d3c00){return respondWithRpcPromise(_0x2203('0xf6'),_0x2203('0xf7'),{'command':_0x1d3c00[_0x2203('0xf8')]?util['format']('iftime\x20%s,%s',_0x2b802c[_0x2203('0xf9')],_0x1d3c00[_0x2203('0xf8')]):util[_0x2203('0xa0')]('iftime\x20%s',_0x2b802c[_0x2203('0xf9')])},client9002)[_0x2203('0x26')](function(_0x4419a8){var _0x3f4e0f=_0x4419a8&&_0x4419a8[_0x2203('0xfa')](_0x2203('0xfb'))>=0x0?!![]:![];logger[_0x2203('0x13')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x1d3c00['id'],_0x2b802c['id'],_0x2b802c[_0x2203('0xf9')],_0x3f4e0f?_0x2203('0xfc'):_0x2203('0xfd'),_0x1d3c00[_0x2203('0xf8')]?_0x1d3c00[_0x2203('0xf8')]:_0x2203('0xfe'));return _0x3f4e0f;})[_0x2203('0x42')](function(_0x1c3684){logger[_0x2203('0x19')](_0x2203('0xff'),_0x1d3c00['id'],_0x2b802c['id'],_0x2b802c[_0x2203('0xf9')],util['inspect'](_0x1c3684,{'showHidden':![],'depth':null}),_0x1d3c00[_0x2203('0xf8')]?_0x1d3c00[_0x2203('0xf8')]:_0x2203('0xfe'));return![];});}exports[_0x2203('0xf7')]=function(_0x2237ba,_0x57665c){var _0x2bc4b8=0x0;var _0x4d4684=0x0;var _0x362eb2=![];var _0x3e38cd;var _0x189c7b;return db[_0x2203('0x2f')][_0x2203('0x46')]({'where':{'id':_0x2237ba[_0x2203('0x50')]['id']},'include':[{'model':db[_0x2203('0x100')],'as':_0x2203('0x100'),'include':[{'model':db[_0x2203('0x100')],'as':_0x2203('0x101'),'attributes':['id',_0x2203('0xf9')],'raw':!![]}]}]})[_0x2203('0x26')](handleEntityNotFound(_0x57665c,null))['then'](function(_0x2e3e42){if(_0x2e3e42){_0x3e38cd=_0x2e3e42;return _0x2e3e42[_0x2203('0x102')]({'raw':!![]});}})[_0x2203('0x26')](function(_0x4574fe){if(_0x3e38cd){if(_0x4574fe){_0x189c7b=_0x4574fe;}}return require(_0x2203('0x6a'))[_0x2203('0x6b')]();})[_0x2203('0x26')](function(_0x2ff7f7){if(_0x2ff7f7){_0x4d4684=_0x2ff7f7[_0x2203('0x103')];_0x362eb2=_0x2ff7f7[_0x2203('0x6c')];}})[_0x2203('0x26')](function(){return db[_0x2203('0xa8')]['count']({'where':{'closed':![]}});})[_0x2203('0x26')](function(_0x2fc0df){_0x2bc4b8=_0x2fc0df;if(_0x4d4684&&_0x2fc0df>_0x4d4684){return db[_0x2203('0x104')][_0x2203('0x5e')]({'where':{'id':0x1}})['then'](function(_0x7a3db2){if(_0x7a3db2){_0x7a3db2[_0x2203('0x105')](_0x2203('0x106'));}});}})[_0x2203('0x26')](function(){if(_0x3e38cd[_0x2203('0x100')]&&_0x3e38cd['Interval'][_0x2203('0x101')]){var _0x5ce868=[];for(var _0xe78125=0x0;_0xe78125<_0x3e38cd['Interval'][_0x2203('0x101')][_0x2203('0x56')];_0xe78125++){var _0x18dc4f=_0x3e38cd[_0x2203('0x100')]['Intervals'][_0xe78125][_0x2203('0x4a')]({'plain':!![]});_0x5ce868['push'](iftimePromise(_0x18dc4f,_0x3e38cd));}return BPromise['all'](_0x5ce868)[_0x2203('0x26')](function(_0x16ae32){return _[_0x2203('0x107')](_0x16ae32);});}else{return!![];}})[_0x2203('0x26')](function(_0xe54582){var _0x56e08e=fs['readFileSync'](path[_0x2203('0x67')](config[_0x2203('0x68')],_0x2203('0x108')),_0x2203('0xc5'));var _0x1361db={'remote':_0x3e38cd[_0x2203('0x109')],'query':querystring[_0x2203('0x18')](_[_0x2203('0x3e')](_0x3e38cd[_0x2203('0x4a')]({'plain':!![]}),{'customerIp':_0x2237ba[_0x2203('0x99')][_0x2203('0x9b')]||_0x2237ba['headers'][_0x2203('0x10a')]||_0x2237ba['connection'][_0x2203('0x10b')]||_0x2237ba['ip'],'referer':_0x2237ba['headers'][_0x2203('0x10c')],'openedInteractions':_0x2bc4b8,'maxInteractions':_0x4d4684,'virtual':_0x362eb2[_0x2203('0x103')],'online':_0xe54582,'custom':_0x362eb2}))[_0x2203('0x10d')](/'/g,'\x5c\x27')};_0x57665c[_0x2203('0x2b')](ejs[_0x2203('0xc6')](Mustache[_0x2203('0xc6')](_0x56e08e,_0x1361db),{'proactiveActions':_0x189c7b,'alignment':_0x3e38cd[_0x2203('0x10e')],'verticalAlignment':_0x3e38cd[_0x2203('0x10f')],'div_color':_0x3e38cd[_0x2203('0x110')],'labelText':_0x3e38cd['labelText'],'text_color':_0x3e38cd[_0x2203('0x111')],'button_color':_0x3e38cd['color_button'],'background_color':_0x3e38cd[_0x2203('0x112')]}));})[_0x2203('0x42')](handleError(_0x57665c,null));};exports['addApplications']=function(_0x32a0be,_0x2aa207){var _0xb52b88=_0x32a0be[_0x2203('0x50')]['id'];var _0x1d3e2d=_0x32a0be[_0x2203('0x48')];var _0x2efa01=0xc8;var _0x1c9339=null;return db['sequelize']['transaction']({'isolationLevel':db[_0x2203('0xd0')]['Transaction'][_0x2203('0x113')][_0x2203('0x114')]},function(_0x374cec){return db['ChatWebsite'][_0x2203('0x5e')]({'where':{'id':_0xb52b88},'transaction':_0x374cec})[_0x2203('0x26')](function(_0x59b35b){if(_0x59b35b){return db[_0x2203('0x115')]['destroy']({'where':{'ChatWebsiteId':_0xb52b88},'transaction':_0x374cec})[_0x2203('0x26')](function(){var _0x56538e=_[_0x2203('0x2e')](_0x1d3e2d,function(_0xa203f0){_0xa203f0[_0x2203('0x53')]=_0xb52b88;return _0xa203f0;});return db[_0x2203('0x115')][_0x2203('0xd2')](_0x56538e,{'transaction':_0x374cec});});}else{_0x2efa01=0x194;_0x1c9339=[];}});})['then'](function(){if(_0x2efa01!==0x194){return db[_0x2203('0x115')][_0x2203('0x116')]({'where':{'ChatWebsiteId':_0xb52b88},'order':_0x2203('0x94')})['then'](function(_0x14c2f1){_0x1c9339=_0x14c2f1;});}})['catch'](function(_0x14dd3e){_0x2efa01=0x1f4;logger[_0x2203('0x19')](_0x14dd3e['stack']);if(_0x14dd3e[_0x2203('0x2a')]){delete _0x14dd3e[_0x2203('0x2a')];}_0x1c9339=_0x14dd3e;})[_0x2203('0x117')](function(){if(_0x1c9339===null){_0x2aa207[_0x2203('0x28')](_0x2efa01);}else{if(_0x2efa01===0x1f4){_0x2aa207[_0x2203('0x1d')](_0x2efa01)[_0x2203('0x2b')](_0x1c9339);}else{_0x2aa207[_0x2203('0x1d')](_0x2efa01)[_0x2203('0x1e')](_0x1c9339);}}});};exports[_0x2203('0x118')]=function(_0x41e423,_0x4adf48){var _0x594167={};var _0x206ac8={};var _0x248885;var _0x25e548;return db['ChatWebsite']['findOne']({'where':{'id':_0x41e423['params']['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x4adf48,null))[_0x2203('0x26')](function(_0x4220a7){if(_0x4220a7){_0x248885=_0x4220a7;_0x206ac8['model']=_['keys'](db[_0x2203('0x115')]['rawAttributes']);_0x206ac8[_0x2203('0x32')]=_['keys'](_0x41e423[_0x2203('0x32')]);_0x206ac8[_0x2203('0x34')]=_[_0x2203('0x35')](_0x206ac8[_0x2203('0x36')],_0x206ac8[_0x2203('0x32')]);_0x594167[_0x2203('0x38')]=_[_0x2203('0x35')](_0x206ac8[_0x2203('0x36')],qs[_0x2203('0x37')](_0x41e423[_0x2203('0x32')][_0x2203('0x37')]));_0x594167[_0x2203('0x38')]=_0x594167[_0x2203('0x38')][_0x2203('0x56')]?_0x594167[_0x2203('0x38')]:_0x206ac8['model'];_0x594167[_0x2203('0x3a')]=qs[_0x2203('0x3b')](_0x41e423[_0x2203('0x32')][_0x2203('0x3b')]);_0x594167['where']=qs['filters'](_['pick'](_0x41e423[_0x2203('0x32')],_0x206ac8['filters']));if(_0x41e423[_0x2203('0x32')][_0x2203('0x3d')]){_0x594167[_0x2203('0x3c')]=_['merge'](_0x594167[_0x2203('0x3c')],{'$or':_['map'](_0x594167[_0x2203('0x38')],function(_0x5c6564){var _0x542f01={};_0x542f01[_0x5c6564]={'$like':'%'+_0x41e423[_0x2203('0x32')][_0x2203('0x3d')]+'%'};return _0x542f01;})});}_0x594167=_['merge']({},_0x594167,_0x41e423[_0x2203('0x59')]);return _0x248885[_0x2203('0x118')](_0x594167);}})[_0x2203('0x26')](function(_0x50457d){if(_0x50457d){_0x25e548=_0x50457d[_0x2203('0x56')];if(!_0x41e423[_0x2203('0x32')][_0x2203('0x39')](_0x2203('0x57'))){_0x594167[_0x2203('0x22')]=qs[_0x2203('0x22')](_0x41e423[_0x2203('0x32')][_0x2203('0x22')]);_0x594167[_0x2203('0x1f')]=qs[_0x2203('0x1f')](_0x41e423[_0x2203('0x32')][_0x2203('0x1f')]);}return _0x248885['getApplications'](_0x594167);}})[_0x2203('0x26')](function(_0x28eb24){if(_0x28eb24){return _0x28eb24?{'count':_0x25e548,'rows':_0x28eb24}:null;}})[_0x2203('0x26')](respondWithResult(_0x4adf48,null))[_0x2203('0x42')](handleError(_0x4adf48,null));};exports['addProactiveActions']=function(_0x2d4daf,_0x7f22d6){return db[_0x2203('0x119')][_0x2203('0x46')]({'where':{'id':_0x2d4daf[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x7f22d6,null))[_0x2203('0x26')](function(_0x243a85){if(_0x243a85){return _0x243a85[_0x2203('0x11a')](_0x2d4daf[_0x2203('0x48')][_0x2203('0x5b')],_['omit'](_0x2d4daf[_0x2203('0x48')],[_0x2203('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x7f22d6,null))[_0x2203('0x42')](handleError(_0x7f22d6,null));};exports[_0x2203('0x102')]=function(_0x5c9ceb,_0x47660a){var _0x4afe90={};var _0x47f1cc={};var _0x1de009;var _0x4c6b1f;return db[_0x2203('0x2f')][_0x2203('0x5e')]({'where':{'id':_0x5c9ceb[_0x2203('0x50')]['id']}})['then'](handleEntityNotFound(_0x47660a,null))[_0x2203('0x26')](function(_0x3b6fa7){if(_0x3b6fa7){_0x1de009=_0x3b6fa7;_0x47f1cc[_0x2203('0x36')]=_['keys'](db['ChatProactiveAction'][_0x2203('0x44')]);_0x47f1cc[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5c9ceb['query']);_0x47f1cc['filters']=_[_0x2203('0x35')](_0x47f1cc[_0x2203('0x36')],_0x47f1cc[_0x2203('0x32')]);_0x4afe90['attributes']=_['intersection'](_0x47f1cc[_0x2203('0x36')],qs['fields'](_0x5c9ceb[_0x2203('0x32')]['fields']));_0x4afe90['attributes']=_0x4afe90[_0x2203('0x38')][_0x2203('0x56')]?_0x4afe90[_0x2203('0x38')]:_0x47f1cc[_0x2203('0x36')];_0x4afe90[_0x2203('0x3a')]=qs[_0x2203('0x3b')](_0x5c9ceb[_0x2203('0x32')][_0x2203('0x3b')]);_0x4afe90['where']=qs[_0x2203('0x34')](_[_0x2203('0x58')](_0x5c9ceb[_0x2203('0x32')],_0x47f1cc[_0x2203('0x34')]));if(_0x5c9ceb[_0x2203('0x32')][_0x2203('0x3d')]){_0x4afe90[_0x2203('0x3c')]=_[_0x2203('0x3e')](_0x4afe90[_0x2203('0x3c')],{'$or':_[_0x2203('0x2e')](_0x4afe90['attributes'],function(_0x55d335){var _0x2b4179={};_0x2b4179[_0x55d335]={'$like':'%'+_0x5c9ceb['query'][_0x2203('0x3d')]+'%'};return _0x2b4179;})});}_0x4afe90=_[_0x2203('0x3e')]({},_0x4afe90,_0x5c9ceb[_0x2203('0x59')]);return _0x1de009[_0x2203('0x102')](_0x4afe90);}})['then'](function(_0xcb2757){if(_0xcb2757){_0x4c6b1f=_0xcb2757[_0x2203('0x56')];if(!_0x5c9ceb[_0x2203('0x32')][_0x2203('0x39')]('nolimit')){_0x4afe90['limit']=qs[_0x2203('0x22')](_0x5c9ceb[_0x2203('0x32')][_0x2203('0x22')]);_0x4afe90[_0x2203('0x1f')]=qs['offset'](_0x5c9ceb[_0x2203('0x32')][_0x2203('0x1f')]);}return _0x1de009[_0x2203('0x102')](_0x4afe90);}})[_0x2203('0x26')](function(_0x35b738){if(_0x35b738){return _0x35b738?{'count':_0x4c6b1f,'rows':_0x35b738}:null;}})['then'](respondWithResult(_0x47660a,null))['catch'](handleError(_0x47660a,null));};exports['getFields']=function(_0x5e35b6,_0x5cda8c){var _0x14b87a=_0x5e35b6[_0x2203('0x32')][_0x2203('0x11b')]===_0x2203('0x11c')?'offlineForm':_0x2203('0x11d');return db[_0x2203('0x2f')][_0x2203('0x46')]({'attributes':['id',_0x14b87a],'where':{'id':_0x5e35b6[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x5cda8c,null))[_0x2203('0x26')](function(_0x4b427b){if(_0x4b427b){var _0x521cfd=_0x4b427b[_0x14b87a];var _0x531cbe=_0x521cfd&&_0x521cfd[_0x2203('0x11e')]?_0x521cfd[_0x2203('0x11e')]:[];_0x5cda8c[_0x2203('0x2b')]({'fromKey':_['isNil'](_0x521cfd[_0x2203('0x11f')])?undefined:_0x521cfd[_0x2203('0x11f')],'count':_0x531cbe[_0x2203('0x56')],'rows':_0x531cbe});}})['catch'](handleError(_0x5cda8c,null));};exports[_0x2203('0x120')]=function(_0x3688f3,_0x5c8865){var _0x315eb4={'raw':![],'where':{}};var _0x30c8ff={};var _0x5dd144={'count':0x0,'rows':[]};return db[_0x2203('0x2f')][_0x2203('0x5e')]({'where':{'id':_0x3688f3[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x5c8865,null))[_0x2203('0x26')](function(_0x3a8325){if(_0x3a8325){_0x30c8ff[_0x2203('0x36')]=_['keys'](db['ChatOfflineMessage'][_0x2203('0x44')]);_0x30c8ff[_0x2203('0x32')]=_['keys'](_0x3688f3[_0x2203('0x32')]);_0x30c8ff[_0x2203('0x34')]=_[_0x2203('0x35')](_0x30c8ff[_0x2203('0x36')],_0x30c8ff[_0x2203('0x32')]);_0x315eb4['attributes']=_[_0x2203('0x35')](_0x30c8ff[_0x2203('0x36')],qs['fields'](_0x3688f3[_0x2203('0x32')][_0x2203('0x37')]));_0x315eb4[_0x2203('0x38')]=_0x315eb4[_0x2203('0x38')][_0x2203('0x56')]?_0x315eb4['attributes']:_0x30c8ff[_0x2203('0x36')];if(!_0x3688f3[_0x2203('0x32')][_0x2203('0x39')]('nolimit')){_0x315eb4[_0x2203('0x22')]=qs[_0x2203('0x22')](_0x3688f3[_0x2203('0x32')][_0x2203('0x22')]);_0x315eb4[_0x2203('0x1f')]=qs['offset'](_0x3688f3[_0x2203('0x32')]['offset']);}_0x315eb4['order']=qs[_0x2203('0x3b')](_0x3688f3['query'][_0x2203('0x3b')]);_0x315eb4['where']=qs['filters'](_['pick'](_0x3688f3[_0x2203('0x32')],_0x30c8ff[_0x2203('0x34')]));_0x315eb4['where'][_0x2203('0x53')]=_0x3a8325['id'];if(_0x3688f3[_0x2203('0x32')][_0x2203('0x3d')]){_0x315eb4['where']=_[_0x2203('0x3e')](_0x315eb4[_0x2203('0x3c')],{'$or':_[_0x2203('0x2e')](_0x315eb4[_0x2203('0x38')],function(_0x5dbb0f){var _0x255fcc={};_0x255fcc[_0x5dbb0f]={'$like':'%'+_0x3688f3[_0x2203('0x32')]['filter']+'%'};return _0x255fcc;})});}_0x315eb4=_[_0x2203('0x3e')]({},_0x315eb4,_0x3688f3['options']);return db[_0x2203('0xc9')]['count']({'where':_0x315eb4[_0x2203('0x3c')]})[_0x2203('0x26')](function(_0x3b43fb){_0x5dd144['count']=_0x3b43fb;if(_0x3688f3['query']['includeAll']){_0x315eb4[_0x2203('0x45')]=[{'all':!![]}];}else{_0x315eb4[_0x2203('0x45')]=[{'model':db['CmContact'],'as':_0x2203('0xf1'),'required':![]},{'model':db['Attachment'],'as':_0x2203('0x121'),'required':![]}];}return db['ChatOfflineMessage'][_0x2203('0x41')](_0x315eb4);})['then'](function(_0x1b31d1){_0x5dd144[_0x2203('0x5f')]=_0x1b31d1;return _0x5dd144;});}})[_0x2203('0x26')](respondWithFilteredResult(_0x5c8865,_0x315eb4))[_0x2203('0x42')](handleError(_0x5c8865,null));};exports[_0x2203('0x122')]=function(_0xf03cfc,_0x4e62c7){return db['ChatWebsite'][_0x2203('0x46')]({'where':{'id':_0xf03cfc[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x4e62c7,null))[_0x2203('0x26')](function(_0x2a4524){if(_0x2a4524){return _0x2a4524[_0x2203('0x122')](_0xf03cfc[_0x2203('0x48')][_0x2203('0x5b')],_[_0x2203('0xef')](_0xf03cfc[_0x2203('0x48')],['ids','id'])||{})[_0x2203('0x123')](function(_0x1c72a3){for(var _0x50aeb9=0x0;_0x50aeb9<_0xf03cfc['body'][_0x2203('0x5b')]['length'];_0x50aeb9+=0x1){socket[_0x2203('0x124')](_0x2203('0x125'),{'UserId':Number(_0xf03cfc[_0x2203('0x48')]['ids'][_0x50aeb9]),'ChatWebsiteId':Number(_0xf03cfc[_0x2203('0x50')]['id'])});}return _0x1c72a3;});}})[_0x2203('0x26')](respondWithResult(_0x4e62c7,null))['catch'](handleError(_0x4e62c7,null));};exports['removeAgents']=function(_0x3404f0,_0x1363d2){return db['ChatWebsite'][_0x2203('0x46')]({'where':{'id':_0x3404f0['params']['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x1363d2,null))[_0x2203('0x26')](function(_0x1ec67a){if(_0x1ec67a){return _0x1ec67a['removeAgents'](_0x3404f0[_0x2203('0x32')][_0x2203('0x5b')])[_0x2203('0x26')](function(){if(_['isArray'](_0x3404f0[_0x2203('0x32')][_0x2203('0x5b')])){for(var _0x39e22d=0x0;_0x39e22d<_0x3404f0[_0x2203('0x32')][_0x2203('0x5b')][_0x2203('0x56')];_0x39e22d+=0x1){socket[_0x2203('0x124')]('userChatWebsite:remove',{'UserId':Number(_0x3404f0[_0x2203('0x32')]['ids'][_0x39e22d]),'ChatWebsiteId':Number(_0x3404f0[_0x2203('0x50')]['id'])});}}else{socket['emit'](_0x2203('0x126'),{'UserId':Number(_0x3404f0[_0x2203('0x32')][_0x2203('0x5b')]),'ChatWebsiteId':Number(_0x3404f0['params']['id'])});}});}})[_0x2203('0x26')](respondWithStatusCode(_0x1363d2,null))[_0x2203('0x42')](handleError(_0x1363d2,null));};exports[_0x2203('0x127')]=function(_0x4aa271,_0x541ada){var _0x3c9c2c={};var _0x20c49b={};var _0x329725;var _0x14b58b;return db[_0x2203('0x2f')]['findOne']({'where':{'id':_0x4aa271[_0x2203('0x50')]['id']}})[_0x2203('0x26')](handleEntityNotFound(_0x541ada,null))[_0x2203('0x26')](function(_0x5b37a4){if(_0x5b37a4){_0x329725=_0x5b37a4;_0x20c49b[_0x2203('0x36')]=_[_0x2203('0x33')](db['User'][_0x2203('0x44')]);_0x20c49b['query']=_['keys'](_0x4aa271['query']);_0x20c49b[_0x2203('0x34')]=_[_0x2203('0x35')](_0x20c49b['model'],_0x20c49b[_0x2203('0x32')]);_0x3c9c2c[_0x2203('0x38')]=_[_0x2203('0x35')](_0x20c49b['model'],qs['fields'](_0x4aa271[_0x2203('0x32')][_0x2203('0x37')]));_0x3c9c2c['attributes']=_0x3c9c2c[_0x2203('0x38')][_0x2203('0x56')]?_0x3c9c2c['attributes']:_0x20c49b[_0x2203('0x36')];_0x3c9c2c[_0x2203('0x3a')]=qs['sort'](_0x4aa271[_0x2203('0x32')]['sort']);_0x3c9c2c[_0x2203('0x3c')]=qs[_0x2203('0x34')](_['pick'](_0x4aa271[_0x2203('0x32')],_0x20c49b[_0x2203('0x34')]));if(_0x4aa271['query'][_0x2203('0x3d')]){_0x3c9c2c[_0x2203('0x3c')]=_[_0x2203('0x3e')](_0x3c9c2c['where'],{'$or':_['map'](_0x3c9c2c[_0x2203('0x38')],function(_0x196296){var _0x5f52b0={};_0x5f52b0[_0x196296]={'$like':'%'+_0x4aa271[_0x2203('0x32')][_0x2203('0x3d')]+'%'};return _0x5f52b0;})});}_0x3c9c2c=_['merge']({},_0x3c9c2c,_0x4aa271[_0x2203('0x59')]);return _0x329725['getAgents'](_0x3c9c2c);}})[_0x2203('0x26')](function(_0x59cebc){if(_0x59cebc){_0x14b58b=_0x59cebc[_0x2203('0x56')];if(!_0x4aa271['query'][_0x2203('0x39')]('nolimit')){_0x3c9c2c['limit']=qs[_0x2203('0x22')](_0x4aa271[_0x2203('0x32')]['limit']);_0x3c9c2c['offset']=qs[_0x2203('0x1f')](_0x4aa271[_0x2203('0x32')][_0x2203('0x1f')]);}return _0x329725[_0x2203('0x127')](_0x3c9c2c);}})['then'](function(_0x135d0b){if(_0x135d0b){return _0x135d0b?{'count':_0x14b58b,'rows':_0x135d0b}:null;}})['then'](respondWithResult(_0x541ada,null))[_0x2203('0x42')](handleError(_0x541ada,null));};
\ No newline at end of file
index c8ef578..938acb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b69=['exports','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x3c8f80,_0x37b7b1){var _0x482289=function(_0x3ba127){while(--_0x3ba127){_0x3c8f80['push'](_0x3c8f80['shift']());}};_0x482289(++_0x37b7b1);}(_0x1b69,0x190));var _0x91b6=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x1b69[_0x4e9628];return _0x27bc8c;};'use strict';var EventEmitter=require('events');var ChatWebsite=require('../../mysqldb')['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x91b6('0x0')](0x0);var events={'afterCreate':_0x91b6('0x1'),'afterUpdate':_0x91b6('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4663d3){return function(_0xbbd6b7,_0x35a742,_0x5f1514){ChatWebsiteEvents[_0x91b6('0x3')](_0x4663d3+':'+_0xbbd6b7['id'],_0xbbd6b7);ChatWebsiteEvents[_0x91b6('0x3')](_0x4663d3,_0xbbd6b7);_0x5f1514(null);};}for(var e in events){if(events[_0x91b6('0x4')](e)){var event=events[e];ChatWebsite[_0x91b6('0x5')](e,emitEvent(event));}}module[_0x91b6('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x8d9b=['save','hook','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x62c17,_0x4f37eb){var _0x4fd74e=function(_0x216917){while(--_0x216917){_0x62c17['push'](_0x62c17['shift']());}};_0x4fd74e(++_0x4f37eb);}(_0x8d9b,0x104));var _0xb8d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d9b[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb8d9('0x0'));var ChatWebsite=require(_0xb8d9('0x1'))['db'][_0xb8d9('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb8d9('0x3')](0x0);var events={'afterCreate':_0xb8d9('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x3f763a){return function(_0x47b650,_0x2192ff,_0x3da7ad){ChatWebsiteEvents['emit'](_0x3f763a+':'+_0x47b650['id'],_0x47b650);ChatWebsiteEvents['emit'](_0x3f763a,_0x47b650);_0x3da7ad(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xb8d9('0x5')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 84b435b..134f9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfab7=['chat_websites','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define','ChatWebsite'];(function(_0x45db01,_0x84c395){var _0xd216e3=function(_0x595e83){while(--_0x595e83){_0x45db01['push'](_0x45db01['shift']());}};_0xd216e3(++_0x84c395);}(_0xfab7,0xf3));var _0x7fab=function(_0x1c9efb,_0x5039cd){_0x1c9efb=_0x1c9efb-0x0;var _0x17ab49=_0xfab7[_0x1c9efb];return _0x17ab49;};'use strict';var _=require(_0x7fab('0x0'));var util=require('util');var logger=require(_0x7fab('0x1'))('api');var moment=require(_0x7fab('0x2'));var BPromise=require(_0x7fab('0x3'));var rp=require(_0x7fab('0x4'));var fs=require('fs');var path=require(_0x7fab('0x5'));var rimraf=require(_0x7fab('0x6'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module[_0x7fab('0x7')]=function(_0x483be1,_0x1c42d4){return _0x483be1[_0x7fab('0x8')](_0x7fab('0x9'),attributes,{'tableName':_0x7fab('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0601=['util','api','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','define','ChatWebsite','chat_websites'];(function(_0x5553ae,_0x47835a){var _0xfc3f7=function(_0x39b6a7){while(--_0x39b6a7){_0x5553ae['push'](_0x5553ae['shift']());}};_0xfc3f7(++_0x47835a);}(_0x0601,0x8c));var _0x1060=function(_0x37cecb,_0x19ff88){_0x37cecb=_0x37cecb-0x0;var _0x2afff8=_0x0601[_0x37cecb];return _0x2afff8;};'use strict';var _=require('lodash');var util=require(_0x1060('0x0'));var logger=require('../../config/logger')(_0x1060('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1060('0x2'));var fs=require('fs');var path=require(_0x1060('0x3'));var rimraf=require(_0x1060('0x4'));var config=require(_0x1060('0x5'));var attributes=require(_0x1060('0x6'));module['exports']=function(_0x1c6d09,_0x553e26){return _0x1c6d09[_0x1060('0x7')](_0x1060('0x8'),attributes,{'tableName':_0x1060('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a601e71..582b7f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb479=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','socket.io-emitter','redis','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s'];(function(_0x16bf5e,_0x113c4a){var _0x32f8af=function(_0x1380e0){while(--_0x1380e0){_0x16bf5e['push'](_0x16bf5e['shift']());}};_0x32f8af(++_0x113c4a);}(_0xb479,0x1cf));var _0x9b47=function(_0x4c4c62,_0x4ff466){_0x4c4c62=_0x4c4c62-0x0;var _0x2ca324=_0xb479[_0x4c4c62];return _0x2ca324;};'use strict';var _=require(_0x9b47('0x0'));var util=require(_0x9b47('0x1'));var moment=require(_0x9b47('0x2'));var BPromise=require(_0x9b47('0x3'));var rs=require(_0x9b47('0x4'));var fs=require('fs');var Redis=require(_0x9b47('0x5'));var db=require(_0x9b47('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9b47('0x7'));var config=require('../../config/environment');var jayson=require(_0x9b47('0x8'));var client=jayson[_0x9b47('0x9')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9b47('0xa'))(new Redis(config[_0x9b47('0xb')]));require('./chatWebsite.socket')[_0x9b47('0xc')](socket);function respondWithRpcPromise(_0x461751,_0x41c6eb,_0x2f2bac){return new BPromise(function(_0x235a1e,_0x131ac3){return client[_0x9b47('0xd')](_0x461751,_0x2f2bac)[_0x9b47('0xe')](function(_0x3d75ff){logger[_0x9b47('0xf')](_0x9b47('0x10'),_0x41c6eb,_0x9b47('0x11'));logger[_0x9b47('0x12')](_0x9b47('0x13'),_0x41c6eb,'request\x20sent',JSON['stringify'](_0x3d75ff));if(_0x3d75ff[_0x9b47('0x14')]){if(_0x3d75ff['error']['code']===0x1f4){logger[_0x9b47('0x14')](_0x9b47('0x10'),_0x41c6eb,_0x3d75ff[_0x9b47('0x14')]['message']);return _0x131ac3(_0x3d75ff[_0x9b47('0x14')][_0x9b47('0x15')]);}logger[_0x9b47('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x41c6eb,_0x3d75ff[_0x9b47('0x14')][_0x9b47('0x15')]);return _0x235a1e(_0x3d75ff[_0x9b47('0x14')][_0x9b47('0x15')]);}else{logger[_0x9b47('0xf')](_0x9b47('0x10'),_0x41c6eb,_0x9b47('0x11'));_0x235a1e(_0x3d75ff['result']['message']);}})[_0x9b47('0x16')](function(_0x2b4016){logger[_0x9b47('0x14')](_0x9b47('0x10'),_0x41c6eb,_0x2b4016);_0x131ac3(_0x2b4016);});});}
\ No newline at end of file
+var _0x1748=['client','./chatWebsite.socket','register','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x235f7f,_0x4cc112){var _0x3bf31e=function(_0x618236){while(--_0x618236){_0x235f7f['push'](_0x235f7f['shift']());}};_0x3bf31e(++_0x4cc112);}(_0x1748,0xeb));var _0x8174=function(_0x23f418,_0x165399){_0x23f418=_0x23f418-0x0;var _0x588d75=_0x1748[_0x23f418];return _0x588d75;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8174('0x0'));var BPromise=require('bluebird');var rs=require(_0x8174('0x1'));var fs=require('fs');var Redis=require(_0x8174('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8174('0x3'));var logger=require(_0x8174('0x4'))(_0x8174('0x5'));var config=require('../../config/environment');var jayson=require(_0x8174('0x6'));var client=jayson[_0x8174('0x7')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8174('0x8'))[_0x8174('0x9')](socket);function respondWithRpcPromise(_0x535771,_0x90565e,_0x2604fe){return new BPromise(function(_0x1b8d9e,_0x328646){return client[_0x8174('0xa')](_0x535771,_0x2604fe)[_0x8174('0xb')](function(_0x1de608){logger['info'](_0x8174('0xc'),_0x90565e,_0x8174('0xd'));logger[_0x8174('0xe')](_0x8174('0xf'),_0x90565e,_0x8174('0xd'),JSON[_0x8174('0x10')](_0x1de608));if(_0x1de608[_0x8174('0x11')]){if(_0x1de608[_0x8174('0x11')][_0x8174('0x12')]===0x1f4){logger[_0x8174('0x11')](_0x8174('0xc'),_0x90565e,_0x1de608[_0x8174('0x11')][_0x8174('0x13')]);return _0x328646(_0x1de608[_0x8174('0x11')][_0x8174('0x13')]);}logger[_0x8174('0x11')](_0x8174('0xc'),_0x90565e,_0x1de608[_0x8174('0x11')][_0x8174('0x13')]);return _0x1b8d9e(_0x1de608[_0x8174('0x11')]['message']);}else{logger[_0x8174('0x14')](_0x8174('0xc'),_0x90565e,_0x8174('0xd'));_0x1b8d9e(_0x1de608[_0x8174('0x15')]['message']);}})['catch'](function(_0xfd28a){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x90565e,_0xfd28a);_0x328646(_0xfd28a);});});}
\ No newline at end of file
index 6211e48..df0a7f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d4f=['update','chatWebsite:','./chatWebsite.events'];(function(_0xaa0ef9,_0x46386b){var _0x3a6f76=function(_0x19223d){while(--_0x19223d){_0xaa0ef9['push'](_0xaa0ef9['shift']());}};_0x3a6f76(++_0x46386b);}(_0x4d4f,0x1ca));var _0xf4d4=function(_0x245ebc,_0x3ba850){_0x245ebc=_0x245ebc-0x0;var _0x68227b=_0x4d4f[_0x245ebc];return _0x68227b;};'use strict';var ChatWebsiteEvents=require(_0xf4d4('0x0'));var events=['save','remove',_0xf4d4('0x1')];function createListener(_0x46f972,_0x51679a){return function(_0x14fb4d){_0x51679a['emit'](_0x46f972,_0x14fb4d);};}function removeListener(_0x163d9c,_0x1fac50){return function(){ChatWebsiteEvents['removeListener'](_0x163d9c,_0x1fac50);};}exports['register']=function(_0x421044){for(var _0x3a999b=0x0,_0x5714ec=events['length'];_0x3a999b<_0x5714ec;_0x3a999b++){var _0x1cab0a=events[_0x3a999b];var _0x132476=createListener(_0xf4d4('0x2')+_0x1cab0a,_0x421044);ChatWebsiteEvents['on'](_0x1cab0a,_0x132476);}};
\ No newline at end of file
+var _0xadfc=['removeListener','register','length','chatWebsite:','./chatWebsite.events','save','remove','update','emit'];(function(_0x565561,_0x13b487){var _0x267439=function(_0x18fe0a){while(--_0x18fe0a){_0x565561['push'](_0x565561['shift']());}};_0x267439(++_0x13b487);}(_0xadfc,0x163));var _0xcadf=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xadfc[_0xbca1b1];return _0x4e1686;};'use strict';var ChatWebsiteEvents=require(_0xcadf('0x0'));var events=[_0xcadf('0x1'),_0xcadf('0x2'),_0xcadf('0x3')];function createListener(_0x2f1798,_0x24b32b){return function(_0x41cffc){_0x24b32b[_0xcadf('0x4')](_0x2f1798,_0x41cffc);};}function removeListener(_0x483af0,_0x57e379){return function(){ChatWebsiteEvents[_0xcadf('0x5')](_0x483af0,_0x57e379);};}exports[_0xcadf('0x6')]=function(_0x26dffb){for(var _0x5bc04d=0x0,_0x3dd23f=events[_0xcadf('0x7')];_0x5bc04d<_0x3dd23f;_0x5bc04d++){var _0x145b97=events[_0x5bc04d];var _0x269548=createListener(_0xcadf('0x8')+_0x145b97,_0x26dffb);ChatWebsiteEvents['on'](_0x145b97,_0x269548);}};
\ No newline at end of file
index edebc15..b63daf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad36=['/:id/users','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','format','originalname','single','file','server/files/images/avatars/','%s-%s','addAvatar','addCustomerAvatar','now','addSystemAvatar','notify','server/files','attachments','offline-chat','replace','extname','/:id/offline','any','offline','/:id/interactions','addProactiveActions','addAgents','delete','/:id','destroy','removeDispositions','removeAnswers','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','getInteractions','/:id/snippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','getOfflineMessages'];(function(_0x255ac0,_0x3f6645){var _0x437bf1=function(_0x5baff0){while(--_0x5baff0){_0x255ac0['push'](_0x255ac0['shift']());}};_0x437bf1(++_0x3f6645);}(_0xad36,0x6b));var _0x6ad3=function(_0x3b3bae,_0xa0b409){_0x3b3bae=_0x3b3bae-0x0;var _0x1400cc=_0xad36[_0x3b3bae];return _0x1400cc;};'use strict';var multer=require(_0x6ad3('0x0'));var util=require(_0x6ad3('0x1'));var path=require(_0x6ad3('0x2'));var timeout=require('connect-timeout');var express=require(_0x6ad3('0x3'));var router=express[_0x6ad3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6ad3('0x5'));var interaction=require(_0x6ad3('0x6'));var config=require(_0x6ad3('0x7'));var controller=require(_0x6ad3('0x8'));router[_0x6ad3('0x9')]('/',auth[_0x6ad3('0xa')](),controller['index']);router[_0x6ad3('0x9')](_0x6ad3('0xb'),auth[_0x6ad3('0xa')](),controller[_0x6ad3('0xc')]);router['get']('/:id',auth[_0x6ad3('0xa')](),controller[_0x6ad3('0xd')]);router[_0x6ad3('0x9')](_0x6ad3('0xe'),auth['isAuthenticated'](),controller[_0x6ad3('0xf')]);router[_0x6ad3('0x9')](_0x6ad3('0x10'),auth[_0x6ad3('0xa')](),controller['getAnswers']);router[_0x6ad3('0x9')](_0x6ad3('0x11'),controller[_0x6ad3('0x12')]);router[_0x6ad3('0x9')](_0x6ad3('0x13'),controller[_0x6ad3('0x14')]);router[_0x6ad3('0x9')](_0x6ad3('0x15'),controller[_0x6ad3('0x16')]);router['get'](_0x6ad3('0x17'),controller[_0x6ad3('0x18')]);router[_0x6ad3('0x9')]('/:id/interactions',auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x19')]);router[_0x6ad3('0x9')](_0x6ad3('0x1a'),controller['getSnippet']);router[_0x6ad3('0x9')](_0x6ad3('0x1b'),auth[_0x6ad3('0xa')](),controller['getApplications']);router['get'](_0x6ad3('0x1c'),auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x1d')]);router[_0x6ad3('0x9')](_0x6ad3('0x1e'),controller[_0x6ad3('0x1f')]);router[_0x6ad3('0x9')]('/:id/offline_messages',auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x20')]);router[_0x6ad3('0x9')](_0x6ad3('0x21'),auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x22')]);router[_0x6ad3('0x23')]('/',auth['isAuthenticated'](),controller[_0x6ad3('0x24')]);router['post'](_0x6ad3('0xe'),auth['isAuthenticated'](),controller[_0x6ad3('0x25')]);router['post'](_0x6ad3('0x10'),auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x26')]);var upload=multer({'storage':multer[_0x6ad3('0x27')]({'destination':function(_0x7dc90f,_0x4f77b6,_0x465d36){_0x465d36(null,path[_0x6ad3('0x28')](config[_0x6ad3('0x29')],'server/files/images/logos/'));},'filename':function(_0x326c74,_0x26ce31,_0x4264b1){_0x4264b1(null,util[_0x6ad3('0x2a')]('%s-%s',Date['now'](),_0x26ce31[_0x6ad3('0x2b')]));}})});router['post'](_0x6ad3('0x11'),upload[_0x6ad3('0x2c')](_0x6ad3('0x2d')),controller['addLogo']);var upload=multer({'storage':multer[_0x6ad3('0x27')]({'destination':function(_0x49e851,_0x3b6f4c,_0x4fd127){_0x4fd127(null,path[_0x6ad3('0x28')](config[_0x6ad3('0x29')],_0x6ad3('0x2e')));},'filename':function(_0x2a5861,_0x905862,_0x560391){_0x560391(null,util[_0x6ad3('0x2a')](_0x6ad3('0x2f'),Date['now'](),_0x905862[_0x6ad3('0x2b')]));}})});router[_0x6ad3('0x23')](_0x6ad3('0x13'),upload[_0x6ad3('0x2c')](_0x6ad3('0x2d')),controller[_0x6ad3('0x30')]);var upload=multer({'storage':multer[_0x6ad3('0x27')]({'destination':function(_0x122e3c,_0x23688,_0x179cda){_0x179cda(null,path[_0x6ad3('0x28')](config['root'],'server/files/images/avatars/'));},'filename':function(_0x7008b8,_0x598b95,_0x2de587){_0x2de587(null,util[_0x6ad3('0x2a')]('%s-%s',Date['now'](),_0x598b95['originalname']));}})});router['post'](_0x6ad3('0x15'),upload['single'](_0x6ad3('0x2d')),controller[_0x6ad3('0x31')]);var upload=multer({'storage':multer[_0x6ad3('0x27')]({'destination':function(_0x5019b1,_0x1173e6,_0x1f603e){_0x1f603e(null,path[_0x6ad3('0x28')](config['root'],_0x6ad3('0x2e')));},'filename':function(_0xb55b0c,_0x1d16e9,_0x1fb00e){_0x1fb00e(null,util[_0x6ad3('0x2a')](_0x6ad3('0x2f'),Date[_0x6ad3('0x32')](),_0x1d16e9[_0x6ad3('0x2b')]));}})});router[_0x6ad3('0x23')](_0x6ad3('0x17'),upload['single'](_0x6ad3('0x2d')),controller[_0x6ad3('0x33')]);router[_0x6ad3('0x23')]('/:id/notify',controller[_0x6ad3('0x34')]);const offlineUploadMulter=multer({'storage':multer[_0x6ad3('0x27')]({'destination':function(_0x567914,_0x129569,_0x4b15a8){const _0x391067=path[_0x6ad3('0x28')](config[_0x6ad3('0x29')],_0x6ad3('0x35'),_0x6ad3('0x36'),_0x6ad3('0x37'));fs_extra['ensureDir'](_0x391067,function(){_0x4b15a8(null,_0x391067);});},'filename':function(_0x3ea4f2,_0x11f4f0,_0x5bf699){const _0x353814=_0x11f4f0[_0x6ad3('0x2b')][_0x6ad3('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x7f1a7e=path[_0x6ad3('0x39')](_0x353814);const _0x114eee=Date[_0x6ad3('0x32')]()+'-'+_0x353814[_0x6ad3('0x38')](_0x7f1a7e,'')+_0x7f1a7e;_0x5bf699(null,_0x114eee);}})});router[_0x6ad3('0x23')](_0x6ad3('0x3a'),offlineUploadMulter[_0x6ad3('0x3b')](),controller[_0x6ad3('0x3c')]);router[_0x6ad3('0x23')](_0x6ad3('0x3d'),auth['isAuthenticated'](),controller['addInteraction']);router[_0x6ad3('0x23')](_0x6ad3('0x1b'),auth[_0x6ad3('0xa')](),controller['addApplications']);router[_0x6ad3('0x23')]('/:id/proactive_actions',auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x3e')]);router[_0x6ad3('0x23')](_0x6ad3('0x21'),auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x3f')]);router['put']('/:id',auth[_0x6ad3('0xa')](),controller['update']);router[_0x6ad3('0x40')](_0x6ad3('0x41'),auth['isAuthenticated'](),controller[_0x6ad3('0x42')]);router[_0x6ad3('0x40')](_0x6ad3('0xe'),auth['isAuthenticated'](),controller[_0x6ad3('0x43')]);router[_0x6ad3('0x40')](_0x6ad3('0x10'),auth[_0x6ad3('0xa')](),controller[_0x6ad3('0x44')]);router[_0x6ad3('0x40')](_0x6ad3('0x21'),auth[_0x6ad3('0xa')](),controller['removeAgents']);module[_0x6ad3('0x45')]=router;
\ No newline at end of file
+var _0xedc1=['Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/proactive_actions','getProactiveActions','/:id/fields','getOfflineMessages','/:id/users','post','create','/:id/dispositions','addDisposition','addAnswer','join','root','format','%s-%s','originalname','single','file','addLogo','diskStorage','server/files/images/avatars/','addAvatar','now','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','offline-chat','ensureDir','replace','extname','/:id/offline','offline','addInteraction','/:id/applications','addApplications','addProactiveActions','addAgents','put','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x5c745f,_0x49a453){var _0x1a6aae=function(_0x48a52a){while(--_0x48a52a){_0x5c745f['push'](_0x5c745f['shift']());}};_0x1a6aae(++_0x49a453);}(_0xedc1,0x8b));var _0x1edc=function(_0x2c8745,_0x4ba4b5){_0x2c8745=_0x2c8745-0x0;var _0x3d96dc=_0xedc1[_0x2c8745];return _0x3d96dc;};'use strict';var multer=require(_0x1edc('0x0'));var util=require(_0x1edc('0x1'));var path=require(_0x1edc('0x2'));var timeout=require(_0x1edc('0x3'));var express=require(_0x1edc('0x4'));var router=express[_0x1edc('0x5')]();var fs_extra=require(_0x1edc('0x6'));var auth=require(_0x1edc('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x1edc('0x8'));var controller=require('./chatWebsite.controller');router['get']('/',auth[_0x1edc('0x9')](),controller[_0x1edc('0xa')]);router[_0x1edc('0xb')]('/describe',auth[_0x1edc('0x9')](),controller['describe']);router[_0x1edc('0xb')](_0x1edc('0xc'),auth['isAuthenticated'](),controller[_0x1edc('0xd')]);router[_0x1edc('0xb')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x1edc('0xe')]);router[_0x1edc('0xb')](_0x1edc('0xf'),auth['isAuthenticated'](),controller[_0x1edc('0x10')]);router[_0x1edc('0xb')](_0x1edc('0x11'),controller[_0x1edc('0x12')]);router[_0x1edc('0xb')](_0x1edc('0x13'),controller[_0x1edc('0x14')]);router['get'](_0x1edc('0x15'),controller[_0x1edc('0x16')]);router['get'](_0x1edc('0x17'),controller[_0x1edc('0x18')]);router[_0x1edc('0xb')](_0x1edc('0x19'),auth[_0x1edc('0x9')](),controller[_0x1edc('0x1a')]);router[_0x1edc('0xb')]('/:id/snippet',controller['getSnippet']);router[_0x1edc('0xb')]('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0x1edc('0xb')](_0x1edc('0x1b'),auth[_0x1edc('0x9')](),controller[_0x1edc('0x1c')]);router['get'](_0x1edc('0x1d'),controller['getFields']);router[_0x1edc('0xb')]('/:id/offline_messages',auth[_0x1edc('0x9')](),controller[_0x1edc('0x1e')]);router[_0x1edc('0xb')](_0x1edc('0x1f'),auth[_0x1edc('0x9')](),controller['getAgents']);router[_0x1edc('0x20')]('/',auth[_0x1edc('0x9')](),controller[_0x1edc('0x21')]);router[_0x1edc('0x20')](_0x1edc('0x22'),auth['isAuthenticated'](),controller[_0x1edc('0x23')]);router[_0x1edc('0x20')](_0x1edc('0xf'),auth[_0x1edc('0x9')](),controller[_0x1edc('0x24')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3da1f1,_0x3b96b3,_0x114468){_0x114468(null,path[_0x1edc('0x25')](config[_0x1edc('0x26')],'server/files/images/logos/'));},'filename':function(_0x5dbf2b,_0xc7efda,_0x455e5c){_0x455e5c(null,util[_0x1edc('0x27')](_0x1edc('0x28'),Date['now'](),_0xc7efda[_0x1edc('0x29')]));}})});router[_0x1edc('0x20')](_0x1edc('0x11'),upload[_0x1edc('0x2a')](_0x1edc('0x2b')),controller[_0x1edc('0x2c')]);var upload=multer({'storage':multer[_0x1edc('0x2d')]({'destination':function(_0x2cbad6,_0x3e9985,_0x410c08){_0x410c08(null,path['join'](config['root'],_0x1edc('0x2e')));},'filename':function(_0x9e2e6e,_0x5cc081,_0xf1599e){_0xf1599e(null,util[_0x1edc('0x27')](_0x1edc('0x28'),Date['now'](),_0x5cc081[_0x1edc('0x29')]));}})});router[_0x1edc('0x20')](_0x1edc('0x13'),upload[_0x1edc('0x2a')](_0x1edc('0x2b')),controller[_0x1edc('0x2f')]);var upload=multer({'storage':multer[_0x1edc('0x2d')]({'destination':function(_0xdf04ad,_0x3d7f5e,_0x57505f){_0x57505f(null,path[_0x1edc('0x25')](config[_0x1edc('0x26')],_0x1edc('0x2e')));},'filename':function(_0x27b117,_0x4733ef,_0x2b7d49){_0x2b7d49(null,util[_0x1edc('0x27')](_0x1edc('0x28'),Date[_0x1edc('0x30')](),_0x4733ef[_0x1edc('0x29')]));}})});router['post']('/:id/customer_avatar',upload[_0x1edc('0x2a')](_0x1edc('0x2b')),controller[_0x1edc('0x31')]);var upload=multer({'storage':multer[_0x1edc('0x2d')]({'destination':function(_0x4e52e8,_0x23accf,_0x25f081){_0x25f081(null,path[_0x1edc('0x25')](config['root'],'server/files/images/avatars/'));},'filename':function(_0x1dddaa,_0x2a6379,_0xe16163){_0xe16163(null,util[_0x1edc('0x27')](_0x1edc('0x28'),Date['now'](),_0x2a6379[_0x1edc('0x29')]));}})});router[_0x1edc('0x20')](_0x1edc('0x17'),upload['single'](_0x1edc('0x2b')),controller[_0x1edc('0x32')]);router[_0x1edc('0x20')](_0x1edc('0x33'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x1edc('0x2d')]({'destination':function(_0x59fe78,_0x32a2e4,_0x6fca23){const _0x3d8e4a=path[_0x1edc('0x25')](config[_0x1edc('0x26')],_0x1edc('0x34'),_0x1edc('0x35'),_0x1edc('0x36'));fs_extra[_0x1edc('0x37')](_0x3d8e4a,function(){_0x6fca23(null,_0x3d8e4a);});},'filename':function(_0x266c7a,_0x18afc4,_0x237d81){const _0x18df79=_0x18afc4['originalname'][_0x1edc('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x393b54=path[_0x1edc('0x39')](_0x18df79);const _0x5bca9e=Date[_0x1edc('0x30')]()+'-'+_0x18df79['replace'](_0x393b54,'')+_0x393b54;_0x237d81(null,_0x5bca9e);}})});router[_0x1edc('0x20')](_0x1edc('0x3a'),offlineUploadMulter['any'](),controller[_0x1edc('0x3b')]);router[_0x1edc('0x20')]('/:id/interactions',auth[_0x1edc('0x9')](),controller[_0x1edc('0x3c')]);router['post'](_0x1edc('0x3d'),auth['isAuthenticated'](),controller[_0x1edc('0x3e')]);router[_0x1edc('0x20')](_0x1edc('0x1b'),auth[_0x1edc('0x9')](),controller[_0x1edc('0x3f')]);router['post'](_0x1edc('0x1f'),auth['isAuthenticated'](),controller[_0x1edc('0x40')]);router[_0x1edc('0x41')](_0x1edc('0xc'),auth[_0x1edc('0x9')](),controller[_0x1edc('0x42')]);router[_0x1edc('0x43')](_0x1edc('0xc'),auth['isAuthenticated'](),controller[_0x1edc('0x44')]);router[_0x1edc('0x43')]('/:id/dispositions',auth[_0x1edc('0x9')](),controller['removeDispositions']);router[_0x1edc('0x43')]('/:id/canned_answers',auth[_0x1edc('0x9')](),controller[_0x1edc('0x45')]);router[_0x1edc('0x43')](_0x1edc('0x1f'),auth[_0x1edc('0x9')](),controller[_0x1edc('0x46')]);module[_0x1edc('0x47')]=router;
\ No newline at end of file
index 254300f..33f7d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef7b=['MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','ENUM','AmazonAWS','MicrosoftAzure','Outlook365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant'];(function(_0x4e7012,_0x5d5f73){var _0xcd56d5=function(_0x330847){while(--_0x330847){_0x4e7012['push'](_0x4e7012['shift']());}};_0xcd56d5(++_0x5d5f73);}(_0xef7b,0xf3));var _0xbef7=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xef7b[_0xc6be3a];return _0x56a310;};'use strict';var Sequelize=require(_0xbef7('0x0'));module[_0xbef7('0x1')]={'name':{'type':Sequelize[_0xbef7('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xbef7('0x3')](_0xbef7('0x4'),'Google',_0xbef7('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xbef7('0x3')](_0xbef7('0x6'),'Dynamics365')},'data1':{'type':Sequelize[_0xbef7('0x2')],'comment':_0xbef7('0x7')},'data2':{'type':Sequelize[_0xbef7('0x2')],'comment':_0xbef7('0x8')},'data3':{'type':Sequelize[_0xbef7('0x2')],'comment':_0xbef7('0x9')},'data4':{'type':Sequelize[_0xbef7('0x2')],'comment':_0xbef7('0xa')},'data5':{'type':Sequelize[_0xbef7('0xb')],'comment':_0xbef7('0xc')},'data6':{'type':Sequelize[_0xbef7('0xb')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0xbef7('0xb')],'comment':_0xbef7('0xd')}};
\ No newline at end of file
+var _0x1ded=['Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','STRING','AmazonAWS','Google','MicrosoftAzure'];(function(_0x361038,_0x294c6b){var _0x9fc9e9=function(_0x585d6a){while(--_0x585d6a){_0x361038['push'](_0x361038['shift']());}};_0x9fc9e9(++_0x294c6b);}(_0x1ded,0x1bb));var _0xd1de=function(_0x5ebe92,_0x5ca06e){_0x5ebe92=_0x5ebe92-0x0;var _0x389a23=_0x1ded[_0x5ebe92];return _0x389a23;};'use strict';var Sequelize=require(_0xd1de('0x0'));module['exports']={'name':{'type':Sequelize[_0xd1de('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0xd1de('0x2'),_0xd1de('0x3'),_0xd1de('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0xd1de('0x5'),_0xd1de('0x6'))},'data1':{'type':Sequelize[_0xd1de('0x1')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xd1de('0x1')],'comment':_0xd1de('0x7')},'data3':{'type':Sequelize[_0xd1de('0x1')],'comment':_0xd1de('0x8')},'data4':{'type':Sequelize[_0xd1de('0x1')],'comment':_0xd1de('0x9')},'data5':{'type':Sequelize[_0xd1de('0xa')],'comment':_0xd1de('0xb')},'data6':{'type':Sequelize['TEXT'],'comment':_0xd1de('0xc')},'data7':{'type':Sequelize[_0xd1de('0xa')],'comment':_0xd1de('0xd')}};
\ No newline at end of file
index 95e26a4..42c9fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab03=['Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','create','params','findOne','generateMicrosoftAuthorizationUrl','oauth2MicrosoftCallback','error','state','parse','from','base64','isValidIdToken','id_token','oauth2Claims','del','getOauth2MicrosoftAccessToken','data5','access_token','data6','refresh_token','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s','lodash','../../components/encryptor','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','defaults','redis','socket.io-emitter','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','update','destroy','then','send','padEnd','slice','map','CloudProvider','fieldName','type','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','service','data3','catch','show','rawAttributes','options','find','MicrosoftAzure','Name\x20parameter\x20not\x20specified','body','Service\x20parameter\x20not\x20specified','values','includes'];(function(_0x39176e,_0x4efe8f){var _0x5ac364=function(_0x53849f){while(--_0x53849f){_0x39176e['push'](_0x39176e['shift']());}};_0x5ac364(++_0x4efe8f);}(_0xab03,0xca));var _0x3ab0=function(_0x22a145,_0x5dfe1c){_0x22a145=_0x22a145-0x0;var _0x1c1c29=_0xab03[_0x22a145];return _0x1c1c29;};'use strict';var _=require(_0x3ab0('0x0'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var encryptor=require(_0x3ab0('0x1'));var config=require('../../config/environment');var logger=require(_0x3ab0('0x2'))(_0x3ab0('0x3'));var db=require(_0x3ab0('0x4'))['db'];var oauth=require(_0x3ab0('0x5'));config['redis']=_[_0x3ab0('0x6')](config[_0x3ab0('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x3ab0('0x8'))(new Redis(config[_0x3ab0('0x7')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x25d30c,_0x41c15b){_0x41c15b=_0x41c15b||0xcc;return function(_0x181067){if(_0x181067){return _0x25d30c[_0x3ab0('0x9')](_0x41c15b);}return _0x25d30c[_0x3ab0('0xa')](_0x41c15b)[_0x3ab0('0xb')]();};}function respondWithResult(_0x20813e,_0x12a548){_0x12a548=_0x12a548||0xc8;return function(_0x27fdb6){if(_0x27fdb6){return _0x20813e[_0x3ab0('0xa')](_0x12a548)['json'](_0x27fdb6);}};}function respondWithFilteredResult(_0xd8bf9b,_0x26427d){return function(_0x2bf817){if(_0x2bf817){var _0x40c93c=typeof _0x26427d['offset']==='undefined'&&typeof _0x26427d['limit']===_0x3ab0('0xc');var _0x3d7970=_0x2bf817[_0x3ab0('0xd')];var _0x2c4ff3=_0x40c93c?0x0:_0x26427d[_0x3ab0('0xe')];var _0x2287d4=_0x40c93c?_0x2bf817['count']:_0x26427d['offset']+_0x26427d[_0x3ab0('0xf')];var _0x13df7f;if(_0x2287d4>=_0x3d7970){_0x2287d4=_0x3d7970;_0x13df7f=0xc8;}else{_0x13df7f=0xce;}_0xd8bf9b[_0x3ab0('0xa')](_0x13df7f);return _0xd8bf9b[_0x3ab0('0x10')](_0x3ab0('0x11'),_0x2c4ff3+'-'+_0x2287d4+'/'+_0x3d7970)['json'](_0x2bf817);}return null;};}function saveUpdates(_0x14d68f){return function(_0x4f5fc4){if(_0x4f5fc4){return _0x4f5fc4[_0x3ab0('0x12')](_0x14d68f)['then'](function(_0x16ed6f){return _0x16ed6f;});}return null;};}function removeEntity(_0x1dcaf8){return function(_0x717350){if(_0x717350){return _0x717350[_0x3ab0('0x13')]()[_0x3ab0('0x14')](function(){_0x1dcaf8[_0x3ab0('0xa')](0xcc)[_0x3ab0('0xb')]();});}};}function handleEntityNotFound(_0x248257){return function(_0x4ce5c1){if(!_0x4ce5c1){_0x248257['sendStatus'](0x194);}return _0x4ce5c1;};}function handleError(_0x5e9d92,_0x562812){_0x562812=_0x562812||0x1f4;return function(_0x5ca5d5){logger['error'](_0x5ca5d5['stack']);if(_0x5ca5d5['name']){delete _0x5ca5d5['name'];}_0x5e9d92[_0x3ab0('0xa')](_0x562812)[_0x3ab0('0x15')](_0x5ca5d5);};}function maskClientSecret(_0x1c5f38){return _[_0x3ab0('0x16')](_0x1c5f38[_0x3ab0('0x17')](0x0,0x3),0x14,'*');}exports['index']=function(_0x1b477b,_0x396aa6){var _0x3d2b6f={},_0x25179e={},_0x526fa7={'count':0x0,'rows':[]};var _0x52a78f=_[_0x3ab0('0x18')](db[_0x3ab0('0x19')]['rawAttributes'],function(_0x2c2126){return{'name':_0x2c2126[_0x3ab0('0x1a')],'type':_0x2c2126[_0x3ab0('0x1b')]['key']};});_0x25179e['model']=_['map'](_0x52a78f,_0x3ab0('0x1c'));_0x25179e[_0x3ab0('0x1d')]=_[_0x3ab0('0x1e')](_0x1b477b[_0x3ab0('0x1d')]);_0x25179e[_0x3ab0('0x1f')]=_[_0x3ab0('0x20')](_0x25179e[_0x3ab0('0x21')],_0x25179e[_0x3ab0('0x1d')]);_0x3d2b6f[_0x3ab0('0x22')]=_['intersection'](_0x25179e['model'],qs[_0x3ab0('0x23')](_0x1b477b['query'][_0x3ab0('0x23')]));_0x3d2b6f['attributes']=_0x3d2b6f['attributes']['length']?_0x3d2b6f[_0x3ab0('0x22')]:_0x25179e[_0x3ab0('0x21')];if(!_0x1b477b[_0x3ab0('0x1d')][_0x3ab0('0x24')](_0x3ab0('0x25'))){_0x3d2b6f[_0x3ab0('0xf')]=qs[_0x3ab0('0xf')](_0x1b477b[_0x3ab0('0x1d')][_0x3ab0('0xf')]);_0x3d2b6f[_0x3ab0('0xe')]=qs['offset'](_0x1b477b[_0x3ab0('0x1d')][_0x3ab0('0xe')]);}_0x3d2b6f[_0x3ab0('0x26')]=qs[_0x3ab0('0x27')](_0x1b477b[_0x3ab0('0x1d')][_0x3ab0('0x27')]);_0x3d2b6f['where']=qs[_0x3ab0('0x1f')](_[_0x3ab0('0x28')](_0x1b477b[_0x3ab0('0x1d')],_0x25179e[_0x3ab0('0x1f')]),_0x52a78f);if(_0x1b477b[_0x3ab0('0x1d')][_0x3ab0('0x29')]){_0x3d2b6f[_0x3ab0('0x2a')]=_[_0x3ab0('0x2b')](_0x3d2b6f['where'],{'$or':_['map'](_0x52a78f,function(_0x395c71){if(_0x395c71[_0x3ab0('0x1b')]!==_0x3ab0('0x2c')){var _0x5380b9={};_0x5380b9[_0x395c71[_0x3ab0('0x1c')]]={'$like':'%'+_0x1b477b['query']['filter']+'%'};return _0x5380b9;}})});}_0x3d2b6f=_[_0x3ab0('0x2b')]({},_0x3d2b6f,_0x1b477b['options']);var _0x2639e6={'where':_0x3d2b6f[_0x3ab0('0x2a')]};return db[_0x3ab0('0x19')][_0x3ab0('0xd')](_0x2639e6)[_0x3ab0('0x14')](function(_0x10fe03){_0x526fa7[_0x3ab0('0xd')]=_0x10fe03;if(_0x1b477b[_0x3ab0('0x1d')][_0x3ab0('0x2d')]){_0x3d2b6f[_0x3ab0('0x2e')]=[{'all':!![]}];}return db['CloudProvider'][_0x3ab0('0x2f')](_0x3d2b6f);})['then'](function(_0x3daa63){_0x526fa7[_0x3ab0('0x30')]=_[_0x3ab0('0x18')](_0x3daa63,function(_0x93bd46){if(_0x93bd46[_0x3ab0('0x31')]==='MicrosoftAzure'){var _0x97a181=encryptor['decryptString'](_0x93bd46['data3']);_0x93bd46[_0x3ab0('0x32')]=maskClientSecret(_0x97a181);}return _0x93bd46;});return _0x526fa7;})[_0x3ab0('0x14')](respondWithFilteredResult(_0x396aa6,_0x3d2b6f))[_0x3ab0('0x33')](handleError(_0x396aa6,null));};exports[_0x3ab0('0x34')]=function(_0x388e39,_0x430cc2){var _0x110fd2={'raw':!![],'where':{'id':_0x388e39['params']['id']}},_0x366974={};_0x366974[_0x3ab0('0x21')]=_[_0x3ab0('0x1e')](db['CloudProvider'][_0x3ab0('0x35')]);_0x366974[_0x3ab0('0x1d')]=_[_0x3ab0('0x1e')](_0x388e39[_0x3ab0('0x1d')]);_0x366974[_0x3ab0('0x1f')]=_[_0x3ab0('0x20')](_0x366974[_0x3ab0('0x21')],_0x366974[_0x3ab0('0x1d')]);_0x110fd2['attributes']=_[_0x3ab0('0x20')](_0x366974[_0x3ab0('0x21')],qs['fields'](_0x388e39[_0x3ab0('0x1d')][_0x3ab0('0x23')]));_0x110fd2[_0x3ab0('0x22')]=_0x110fd2[_0x3ab0('0x22')]['length']?_0x110fd2['attributes']:_0x366974[_0x3ab0('0x21')];if(_0x388e39['query'][_0x3ab0('0x2d')]){_0x110fd2[_0x3ab0('0x2e')]=[{'all':!![]}];}_0x110fd2=_['merge']({},_0x110fd2,_0x388e39[_0x3ab0('0x36')]);return db[_0x3ab0('0x19')][_0x3ab0('0x37')](_0x110fd2)[_0x3ab0('0x14')](handleEntityNotFound(_0x430cc2,null))[_0x3ab0('0x14')](function(_0x5d6a59){if(_0x5d6a59['service']===_0x3ab0('0x38')){var _0x42aa65=encryptor['decryptString'](_0x5d6a59[_0x3ab0('0x32')]);_0x5d6a59['data3']=maskClientSecret(_0x42aa65);}return _0x5d6a59;})[_0x3ab0('0x14')](respondWithResult(_0x430cc2,null))[_0x3ab0('0x33')](handleError(_0x430cc2,null));};exports['create']=function(_0x80a59a,_0x2b240a){if(!_0x80a59a['body'][_0x3ab0('0x1c')])throw new Error(_0x3ab0('0x39'));if(!_0x80a59a[_0x3ab0('0x3a')][_0x3ab0('0x31')])throw new Error(_0x3ab0('0x3b'));var _0x41e1aa=db[_0x3ab0('0x19')]['rawAttributes'][_0x3ab0('0x31')][_0x3ab0('0x3c')];if(!_0x41e1aa[_0x3ab0('0x3d')](_0x80a59a['body'][_0x3ab0('0x31')]))throw new Error(_0x3ab0('0x3e')+_0x41e1aa[_0x3ab0('0x3f')](',\x20'));if(_0x80a59a[_0x3ab0('0x3a')]['service']===_0x3ab0('0x38')&&_0x80a59a[_0x3ab0('0x3a')][_0x3ab0('0x32')]){_0x80a59a[_0x3ab0('0x3a')][_0x3ab0('0x32')]=encryptor['encryptString'](_0x80a59a[_0x3ab0('0x3a')][_0x3ab0('0x32')]);}return db['CloudProvider'][_0x3ab0('0x40')](_0x80a59a[_0x3ab0('0x3a')],{})[_0x3ab0('0x14')](respondWithResult(_0x2b240a,0xc9))['catch'](handleError(_0x2b240a,null));};exports[_0x3ab0('0x12')]=function(_0x46e91a,_0x383d01){if(_0x46e91a[_0x3ab0('0x3a')]['id']){delete _0x46e91a[_0x3ab0('0x3a')]['id'];}return db[_0x3ab0('0x19')][_0x3ab0('0x37')]({'where':{'id':_0x46e91a[_0x3ab0('0x41')]['id']}})[_0x3ab0('0x14')](handleEntityNotFound(_0x383d01,null))['then'](function(_0x425fd1){if(_0x425fd1[_0x3ab0('0x31')]===_0x3ab0('0x38')&&_0x46e91a['body'][_0x3ab0('0x32')]){_0x46e91a[_0x3ab0('0x3a')][_0x3ab0('0x32')]=encryptor['encryptString'](_0x46e91a[_0x3ab0('0x3a')][_0x3ab0('0x32')]);}return _0x425fd1;})[_0x3ab0('0x14')](saveUpdates(_0x46e91a[_0x3ab0('0x3a')],null))[_0x3ab0('0x14')](respondWithResult(_0x383d01,null))[_0x3ab0('0x33')](handleError(_0x383d01,null));};exports['destroy']=function(_0x505fce,_0x1efc0b){return db[_0x3ab0('0x19')][_0x3ab0('0x37')]({'where':{'id':_0x505fce['params']['id']}})['then'](handleEntityNotFound(_0x1efc0b,null))[_0x3ab0('0x14')](removeEntity(_0x1efc0b,null))[_0x3ab0('0x33')](handleError(_0x1efc0b,null));};exports['oauth2MicrosoftAuthorize']=function(_0x54e6ef,_0x56a28d){return db['CloudProvider'][_0x3ab0('0x42')]({'where':{'id':_0x54e6ef[_0x3ab0('0x41')]['id']},'raw':!![]})['then'](function(_0x574d8c){if(!_0x574d8c)return _0x56a28d[_0x3ab0('0x9')](0x194);return{'url':oauth[_0x3ab0('0x43')](_0x574d8c,_0x54e6ef['user']['id'])};})[_0x3ab0('0x14')](respondWithResult(_0x56a28d,null))[_0x3ab0('0x33')](handleError(_0x56a28d,null));};exports[_0x3ab0('0x44')]=function(_0x42ae3b,_0x187279){var _0x2fd90d=_0x42ae3b[_0x3ab0('0x3a')];var _0x5b00ed;var _0x5bd2d2;if(_0x2fd90d[_0x3ab0('0x45')])throw _0x2fd90d;redis['get'](_0x2fd90d[_0x3ab0('0x46')])[_0x3ab0('0x14')](function(_0x220c47){if(!_0x220c47)throw new Error('Invalid\x20state\x20parameter');_0x5b00ed=JSON[_0x3ab0('0x47')](_0x220c47);var _0x2a69ca=Buffer[_0x3ab0('0x48')](_0x2fd90d[_0x3ab0('0x46')],_0x3ab0('0x49'))['toString']('ascii');_0x5bd2d2=JSON['parse'](_0x2a69ca);if(!oauth[_0x3ab0('0x4a')](_0x2fd90d[_0x3ab0('0x4b')],_0x5b00ed[_0x3ab0('0x4c')]))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x3ab0('0x4d')](_0x2fd90d['state']);return oauth[_0x3ab0('0x4e')](_0x2fd90d['code'],_0x5b00ed);})[_0x3ab0('0x14')](function(_0x115c6c){_0x5b00ed[_0x3ab0('0x4f')]=_0x115c6c[_0x3ab0('0x50')];_0x5b00ed[_0x3ab0('0x51')]=_0x115c6c[_0x3ab0('0x52')];return db[_0x3ab0('0x19')][_0x3ab0('0x12')]({'data5':_0x5b00ed['data5'],'data6':_0x5b00ed[_0x3ab0('0x51')]},{'where':{'id':_0x5b00ed['id']}});})['then'](function(){oauth['startRefreshInterval'](_0x5b00ed);socket[_0x3ab0('0x53')](_0x3ab0('0x54'),{'id':_0x5bd2d2['id']});return;})[_0x3ab0('0x14')](respondWithStatusCode(_0x187279,null))[_0x3ab0('0x33')](function(_0x4067ec){if(_0x5bd2d2){socket[_0x3ab0('0x53')](_0x3ab0('0x55'),{'id':_0x5bd2d2['id']});}if(!_0x5b00ed){logger['error'](_0x3ab0('0x56'),_0x4067ec);return _0x187279[_0x3ab0('0xa')](0x1f4)[_0x3ab0('0x15')](_0x4067ec['message']);}logger[_0x3ab0('0x45')](_0x3ab0('0x57'),_0x5b00ed['id'],_0x4067ec);});};
\ No newline at end of file
+var _0x47c0=['Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','create','params','encryptString','findOne','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','access_token','refresh_token','data6','startRefreshInterval','emit','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','slice','index','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','CloudProvider','findAll','service','MicrosoftAzure','data3','catch','show','include','find','decryptString','Name\x20parameter\x20not\x20specified','body','Service\x20parameter\x20not\x20specified','rawAttributes','values','includes'];(function(_0x5d400d,_0x86d6ef){var _0x52621b=function(_0x5bebf4){while(--_0x5bebf4){_0x5d400d['push'](_0x5d400d['shift']());}};_0x52621b(++_0x86d6ef);}(_0x47c0,0x13d));var _0x047c=function(_0x600e30,_0x42350c){_0x600e30=_0x600e30-0x0;var _0xf2804=_0x47c0[_0x600e30];return _0xf2804;};'use strict';var _=require(_0x047c('0x0'));var Redis=require(_0x047c('0x1'));var qs=require(_0x047c('0x2'));var encryptor=require(_0x047c('0x3'));var config=require(_0x047c('0x4'));var logger=require(_0x047c('0x5'))(_0x047c('0x6'));var db=require(_0x047c('0x7'))['db'];var oauth=require(_0x047c('0x8'));config[_0x047c('0x9')]=_[_0x047c('0xa')](config[_0x047c('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x047c('0xb'))(new Redis(config['redis']));var redis=new Redis(config[_0x047c('0x9')]);function respondWithStatusCode(_0x3b163c,_0x69f384){_0x69f384=_0x69f384||0xcc;return function(_0x153d74){if(_0x153d74){return _0x3b163c[_0x047c('0xc')](_0x69f384);}return _0x3b163c[_0x047c('0xd')](_0x69f384)[_0x047c('0xe')]();};}function respondWithResult(_0x72cdae,_0x4d9098){_0x4d9098=_0x4d9098||0xc8;return function(_0xcf73f3){if(_0xcf73f3){return _0x72cdae['status'](_0x4d9098)[_0x047c('0xf')](_0xcf73f3);}};}function respondWithFilteredResult(_0x565933,_0x29031b){return function(_0x100f4e){if(_0x100f4e){var _0x5d15fb=typeof _0x29031b[_0x047c('0x10')]===_0x047c('0x11')&&typeof _0x29031b[_0x047c('0x12')]==='undefined';var _0x58740f=_0x100f4e[_0x047c('0x13')];var _0x15c29d=_0x5d15fb?0x0:_0x29031b[_0x047c('0x10')];var _0x389d19=_0x5d15fb?_0x100f4e[_0x047c('0x13')]:_0x29031b[_0x047c('0x10')]+_0x29031b[_0x047c('0x12')];var _0x31088f;if(_0x389d19>=_0x58740f){_0x389d19=_0x58740f;_0x31088f=0xc8;}else{_0x31088f=0xce;}_0x565933[_0x047c('0xd')](_0x31088f);return _0x565933[_0x047c('0x14')](_0x047c('0x15'),_0x15c29d+'-'+_0x389d19+'/'+_0x58740f)['json'](_0x100f4e);}return null;};}function saveUpdates(_0x3f462b){return function(_0x43bce1){if(_0x43bce1){return _0x43bce1[_0x047c('0x16')](_0x3f462b)[_0x047c('0x17')](function(_0x215000){return _0x215000;});}return null;};}function removeEntity(_0x5ef847){return function(_0x109854){if(_0x109854){return _0x109854[_0x047c('0x18')]()[_0x047c('0x17')](function(){_0x5ef847['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5811a4){return function(_0x448b9c){if(!_0x448b9c){_0x5811a4['sendStatus'](0x194);}return _0x448b9c;};}function handleError(_0x47c73d,_0x1ddb3e){_0x1ddb3e=_0x1ddb3e||0x1f4;return function(_0xeece5f){logger[_0x047c('0x19')](_0xeece5f[_0x047c('0x1a')]);if(_0xeece5f['name']){delete _0xeece5f[_0x047c('0x1b')];}_0x47c73d[_0x047c('0xd')](_0x1ddb3e)[_0x047c('0x1c')](_0xeece5f);};}function maskClientSecret(_0x37e630){return _['padEnd'](_0x37e630[_0x047c('0x1d')](0x0,0x3),0x14,'*');}exports[_0x047c('0x1e')]=function(_0x235f32,_0x46779a){var _0x26dfd3={},_0x38a63a={},_0x7d21b6={'count':0x0,'rows':[]};var _0x4c4a18=_[_0x047c('0x1f')](db['CloudProvider']['rawAttributes'],function(_0x433d74){return{'name':_0x433d74[_0x047c('0x20')],'type':_0x433d74[_0x047c('0x21')]['key']};});_0x38a63a['model']=_[_0x047c('0x1f')](_0x4c4a18,'name');_0x38a63a[_0x047c('0x22')]=_[_0x047c('0x23')](_0x235f32[_0x047c('0x22')]);_0x38a63a[_0x047c('0x24')]=_[_0x047c('0x25')](_0x38a63a[_0x047c('0x26')],_0x38a63a[_0x047c('0x22')]);_0x26dfd3[_0x047c('0x27')]=_['intersection'](_0x38a63a[_0x047c('0x26')],qs[_0x047c('0x28')](_0x235f32[_0x047c('0x22')][_0x047c('0x28')]));_0x26dfd3['attributes']=_0x26dfd3['attributes'][_0x047c('0x29')]?_0x26dfd3['attributes']:_0x38a63a[_0x047c('0x26')];if(!_0x235f32[_0x047c('0x22')][_0x047c('0x2a')](_0x047c('0x2b'))){_0x26dfd3[_0x047c('0x12')]=qs[_0x047c('0x12')](_0x235f32[_0x047c('0x22')]['limit']);_0x26dfd3[_0x047c('0x10')]=qs[_0x047c('0x10')](_0x235f32[_0x047c('0x22')][_0x047c('0x10')]);}_0x26dfd3[_0x047c('0x2c')]=qs[_0x047c('0x2d')](_0x235f32['query'][_0x047c('0x2d')]);_0x26dfd3[_0x047c('0x2e')]=qs['filters'](_['pick'](_0x235f32[_0x047c('0x22')],_0x38a63a['filters']),_0x4c4a18);if(_0x235f32[_0x047c('0x22')][_0x047c('0x2f')]){_0x26dfd3[_0x047c('0x2e')]=_['merge'](_0x26dfd3[_0x047c('0x2e')],{'$or':_[_0x047c('0x1f')](_0x4c4a18,function(_0xad4e09){if(_0xad4e09[_0x047c('0x21')]!=='VIRTUAL'){var _0x9b9f9={};_0x9b9f9[_0xad4e09[_0x047c('0x1b')]]={'$like':'%'+_0x235f32[_0x047c('0x22')]['filter']+'%'};return _0x9b9f9;}})});}_0x26dfd3=_[_0x047c('0x30')]({},_0x26dfd3,_0x235f32[_0x047c('0x31')]);var _0x824107={'where':_0x26dfd3['where']};return db['CloudProvider']['count'](_0x824107)['then'](function(_0x5baf3a){_0x7d21b6[_0x047c('0x13')]=_0x5baf3a;if(_0x235f32[_0x047c('0x22')][_0x047c('0x32')]){_0x26dfd3['include']=[{'all':!![]}];}return db[_0x047c('0x33')][_0x047c('0x34')](_0x26dfd3);})[_0x047c('0x17')](function(_0x14a07a){_0x7d21b6['rows']=_[_0x047c('0x1f')](_0x14a07a,function(_0x4f762a){if(_0x4f762a[_0x047c('0x35')]===_0x047c('0x36')){var _0x4194bc=encryptor['decryptString'](_0x4f762a['data3']);_0x4f762a[_0x047c('0x37')]=maskClientSecret(_0x4194bc);}return _0x4f762a;});return _0x7d21b6;})[_0x047c('0x17')](respondWithFilteredResult(_0x46779a,_0x26dfd3))[_0x047c('0x38')](handleError(_0x46779a,null));};exports[_0x047c('0x39')]=function(_0x307f92,_0x264295){var _0x2aabbc={'raw':!![],'where':{'id':_0x307f92['params']['id']}},_0x5d867a={};_0x5d867a[_0x047c('0x26')]=_[_0x047c('0x23')](db[_0x047c('0x33')]['rawAttributes']);_0x5d867a[_0x047c('0x22')]=_[_0x047c('0x23')](_0x307f92['query']);_0x5d867a['filters']=_[_0x047c('0x25')](_0x5d867a['model'],_0x5d867a['query']);_0x2aabbc[_0x047c('0x27')]=_[_0x047c('0x25')](_0x5d867a['model'],qs['fields'](_0x307f92[_0x047c('0x22')]['fields']));_0x2aabbc[_0x047c('0x27')]=_0x2aabbc[_0x047c('0x27')][_0x047c('0x29')]?_0x2aabbc[_0x047c('0x27')]:_0x5d867a[_0x047c('0x26')];if(_0x307f92[_0x047c('0x22')][_0x047c('0x32')]){_0x2aabbc[_0x047c('0x3a')]=[{'all':!![]}];}_0x2aabbc=_['merge']({},_0x2aabbc,_0x307f92['options']);return db['CloudProvider'][_0x047c('0x3b')](_0x2aabbc)[_0x047c('0x17')](handleEntityNotFound(_0x264295,null))[_0x047c('0x17')](function(_0x214cd2){if(_0x214cd2[_0x047c('0x35')]===_0x047c('0x36')){var _0x2c779a=encryptor[_0x047c('0x3c')](_0x214cd2[_0x047c('0x37')]);_0x214cd2['data3']=maskClientSecret(_0x2c779a);}return _0x214cd2;})[_0x047c('0x17')](respondWithResult(_0x264295,null))[_0x047c('0x38')](handleError(_0x264295,null));};exports['create']=function(_0x1d8452,_0x594056){if(!_0x1d8452['body']['name'])throw new Error(_0x047c('0x3d'));if(!_0x1d8452[_0x047c('0x3e')][_0x047c('0x35')])throw new Error(_0x047c('0x3f'));var _0x18b970=db[_0x047c('0x33')][_0x047c('0x40')]['service'][_0x047c('0x41')];if(!_0x18b970[_0x047c('0x42')](_0x1d8452['body'][_0x047c('0x35')]))throw new Error(_0x047c('0x43')+_0x18b970[_0x047c('0x44')](',\x20'));if(_0x1d8452[_0x047c('0x3e')][_0x047c('0x35')]===_0x047c('0x36')&&_0x1d8452[_0x047c('0x3e')][_0x047c('0x37')]){_0x1d8452[_0x047c('0x3e')]['data3']=encryptor['encryptString'](_0x1d8452['body'][_0x047c('0x37')]);}return db[_0x047c('0x33')][_0x047c('0x45')](_0x1d8452['body'],{})['then'](respondWithResult(_0x594056,0xc9))[_0x047c('0x38')](handleError(_0x594056,null));};exports[_0x047c('0x16')]=function(_0x20ce35,_0x376116){if(_0x20ce35[_0x047c('0x3e')]['id']){delete _0x20ce35[_0x047c('0x3e')]['id'];}return db[_0x047c('0x33')][_0x047c('0x3b')]({'where':{'id':_0x20ce35[_0x047c('0x46')]['id']}})[_0x047c('0x17')](handleEntityNotFound(_0x376116,null))[_0x047c('0x17')](function(_0x2492b8){if(_0x2492b8[_0x047c('0x35')]===_0x047c('0x36')&&_0x20ce35[_0x047c('0x3e')][_0x047c('0x37')]){_0x20ce35['body'][_0x047c('0x37')]=encryptor[_0x047c('0x47')](_0x20ce35[_0x047c('0x3e')][_0x047c('0x37')]);}return _0x2492b8;})['then'](saveUpdates(_0x20ce35[_0x047c('0x3e')],null))[_0x047c('0x17')](respondWithResult(_0x376116,null))['catch'](handleError(_0x376116,null));};exports['destroy']=function(_0x22ce6e,_0x486915){return db[_0x047c('0x33')]['find']({'where':{'id':_0x22ce6e['params']['id']}})[_0x047c('0x17')](handleEntityNotFound(_0x486915,null))[_0x047c('0x17')](removeEntity(_0x486915,null))[_0x047c('0x38')](handleError(_0x486915,null));};exports['oauth2MicrosoftAuthorize']=function(_0x163b84,_0x48d908){return db['CloudProvider'][_0x047c('0x48')]({'where':{'id':_0x163b84['params']['id']},'raw':!![]})['then'](function(_0xc66836){if(!_0xc66836)return _0x48d908[_0x047c('0xc')](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0xc66836,_0x163b84['user']['id'])};})[_0x047c('0x17')](respondWithResult(_0x48d908,null))[_0x047c('0x38')](handleError(_0x48d908,null));};exports[_0x047c('0x49')]=function(_0x23d990,_0x181ba7){var _0x56bbf2=_0x23d990['body'];var _0x5797df;var _0x4004c4;if(_0x56bbf2['error'])throw _0x56bbf2;redis[_0x047c('0x4a')](_0x56bbf2[_0x047c('0x4b')])[_0x047c('0x17')](function(_0x336751){if(!_0x336751)throw new Error(_0x047c('0x4c'));_0x5797df=JSON[_0x047c('0x4d')](_0x336751);var _0x17a27a=Buffer[_0x047c('0x4e')](_0x56bbf2[_0x047c('0x4b')],_0x047c('0x4f'))[_0x047c('0x50')](_0x047c('0x51'));_0x4004c4=JSON['parse'](_0x17a27a);if(!oauth[_0x047c('0x52')](_0x56bbf2['id_token'],_0x5797df[_0x047c('0x53')]))throw new Error(_0x047c('0x54'));redis[_0x047c('0x55')](_0x56bbf2[_0x047c('0x4b')]);return oauth[_0x047c('0x56')](_0x56bbf2[_0x047c('0x57')],_0x5797df);})[_0x047c('0x17')](function(_0x4f3ceb){_0x5797df['data5']=_0x4f3ceb[_0x047c('0x58')];_0x5797df['data6']=_0x4f3ceb[_0x047c('0x59')];return db[_0x047c('0x33')][_0x047c('0x16')]({'data5':_0x5797df['data5'],'data6':_0x5797df[_0x047c('0x5a')]},{'where':{'id':_0x5797df['id']}});})[_0x047c('0x17')](function(){oauth[_0x047c('0x5b')](_0x5797df);socket[_0x047c('0x5c')]('microsoftAuthorization:success',{'id':_0x4004c4['id']});return;})['then'](respondWithStatusCode(_0x181ba7,null))[_0x047c('0x38')](function(_0x5d9aed){if(_0x4004c4){socket['emit'](_0x047c('0x5d'),{'id':_0x4004c4['id']});}if(!_0x5797df){logger['error'](_0x047c('0x5e'),_0x5d9aed);return _0x181ba7[_0x047c('0xd')](0x1f4)[_0x047c('0x1c')](_0x5d9aed[_0x047c('0x5f')]);}logger[_0x047c('0x19')]('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s',_0x5797df['id'],_0x5d9aed);});};
\ No newline at end of file
index b127be0..23478a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6a3=['moment','bluebird','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','lodash','../../config/logger','api'];(function(_0x4e9bfe,_0x1d0247){var _0x2c221d=function(_0x393646){while(--_0x393646){_0x4e9bfe['push'](_0x4e9bfe['shift']());}};_0x2c221d(++_0x1d0247);}(_0xe6a3,0x110));var _0x3e6a=function(_0x503ffd,_0x8ecde){_0x503ffd=_0x503ffd-0x0;var _0x160437=_0xe6a3[_0x503ffd];return _0x160437;};'use strict';var _=require(_0x3e6a('0x0'));var util=require('util');var logger=require(_0x3e6a('0x1'))(_0x3e6a('0x2'));var moment=require(_0x3e6a('0x3'));var BPromise=require(_0x3e6a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3e6a('0x5'));var config=require(_0x3e6a('0x6'));var attributes=require(_0x3e6a('0x7'));module[_0x3e6a('0x8')]=function(_0x1ed68d,_0x2e5530){return _0x1ed68d[_0x3e6a('0x9')](_0x3e6a('0xa'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcd4=['request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','bluebird'];(function(_0x1ddbb9,_0x5eaac9){var _0x5b4edf=function(_0x32fb69){while(--_0x32fb69){_0x1ddbb9['push'](_0x1ddbb9['shift']());}};_0x5b4edf(++_0x5eaac9);}(_0xfcd4,0x175));var _0x4fcd=function(_0x58b6a8,_0x307021){_0x58b6a8=_0x58b6a8-0x0;var _0xc566dc=_0xfcd4[_0x58b6a8];return _0xc566dc;};'use strict';var _=require(_0x4fcd('0x0'));var util=require(_0x4fcd('0x1'));var logger=require(_0x4fcd('0x2'))(_0x4fcd('0x3'));var moment=require('moment');var BPromise=require(_0x4fcd('0x4'));var rp=require(_0x4fcd('0x5'));var fs=require('fs');var path=require(_0x4fcd('0x6'));var rimraf=require(_0x4fcd('0x7'));var config=require(_0x4fcd('0x8'));var attributes=require(_0x4fcd('0x9'));module[_0x4fcd('0xa')]=function(_0x32fcbf,_0x153944){return _0x32fcbf[_0x4fcd('0xb')](_0x4fcd('0xc'),attributes,{'tableName':_0x4fcd('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cad7894..4e0187f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','localhost','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','type','push','data7','/.default','join','Dynamics365','replace','data2','code','id_token','from','randomBytes','data1','response_type','data4','response_mode','scope','state','nonce','prompt','login','value','oauth2Claims','oauth2/','stringify','decode','iss','issuer','aud','unix','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','data6','decryptString','{TENANT_ID}','data5','access_token','update','catch','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s','authorization_code','intervals','bind','findAll','inspect','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart','lodash','moment','ioredis','request-promise','util','../../components/encryptor','../../config/environment'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x326f,0xd1));var _0xf326=function(_0x44d3e5,_0xc90632){_0x44d3e5=_0x44d3e5-0x0;var _0x2a6377=_0x326f[_0x44d3e5];return _0x2a6377;};'use strict';var _=require(_0xf326('0x0'));var crypto=require('crypto');var jwt=require('jsonwebtoken');var moment=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var rp=require(_0xf326('0x3'));var util=require(_0xf326('0x4'));var encryptor=require(_0xf326('0x5'));var config=require(_0xf326('0x6'));var logger=require(_0xf326('0x7'))(_0xf326('0x8'));var schedule=require(_0xf326('0x9'));var db=require(_0xf326('0xa'))['db'];config['redis']=_[_0xf326('0xb')](config[_0xf326('0xc')],{'host':_0xf326('0xd'),'port':0x18eb});var redis=new Redis(config[_0xf326('0xc')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':['openid','profile',_0xf326('0xe'),_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12')],'Dynamics365':['openid',_0xf326('0xf')]};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0xf326('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x4aaf3a){var _0x2e4b71=_['map'](AZURE_AUTH_SCOPES[_0x4aaf3a[_0xf326('0x14')]]);if(_0x4aaf3a[_0xf326('0x14')]==='Dynamics365')_0x2e4b71[_0xf326('0x15')](_0x4aaf3a[_0xf326('0x16')]+_0xf326('0x17'));return _0x2e4b71[_0xf326('0x18')]('\x20');}function getAccessTokenScope(_0x5c8483){if(_0x5c8483[_0xf326('0x14')]==='Outlook365')return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x5c8483[_0xf326('0x14')]===_0xf326('0x19'))return _0x5c8483[_0xf326('0x16')]+_0xf326('0x17');}function generateMicrosoftAuthorizationUrl(_0x292f4b,_0x287a2a){var _0x34128e=MICROSOFT_AUTH_URL[_0xf326('0x1a')]('{TENANT_ID}',_0x292f4b[_0xf326('0x1b')]);var _0x453100=[_0xf326('0x1c'),_0xf326('0x1d')];var _0xcef2b5=Buffer[_0xf326('0x1e')](JSON['stringify']({'id':_0x287a2a}))['toString']('base64');var _0x16e605=crypto[_0xf326('0x1f')](0x10)['toString']('hex');var _0x128c68=getAuthorizationScopes(_0x292f4b);var _0x4dfa76=[{'key':'client_id','value':_0x292f4b[_0xf326('0x20')]},{'key':_0xf326('0x21'),'value':encodeURIComponent(_0x453100['join']('\x20'))},{'key':'redirect_uri','value':_0x292f4b[_0xf326('0x22')]},{'key':_0xf326('0x23'),'value':'form_post'},{'key':_0xf326('0x24'),'value':encodeURIComponent(_0x128c68)},{'key':_0xf326('0x25'),'value':_0xcef2b5},{'key':_0xf326('0x26'),'value':_0x16e605},{'key':_0xf326('0x27'),'value':_0xf326('0x28')}];var _0x2049ec=_0x34128e+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x4dfa76,function(_0x55b9f4){return _0x55b9f4['key']+'='+_0x55b9f4[_0xf326('0x29')];})[_0xf326('0x18')]('&');_0x292f4b[_0xf326('0x2a')]={'issuer':_0x34128e[_0xf326('0x1a')](_0xf326('0x2b'),''),'audience':_0x292f4b[_0xf326('0x20')],'state':_0xcef2b5,'nonce':_0x16e605};redis['set'](_0xcef2b5,JSON[_0xf326('0x2c')](_0x292f4b));return _0x2049ec;}function isValidIdToken(_0xa3c0b,_0x212d5d){try{var _0x581531=jwt[_0xf326('0x2d')](_0xa3c0b,{'complete':!![]});var _0x55ad0f=_0x581531['payload'];if(_0x55ad0f[_0xf326('0x2e')]!==_0x212d5d[_0xf326('0x2f')])return![];if(_0x55ad0f[_0xf326('0x30')]!==_0x212d5d['audience'])return![];if(_0x55ad0f[_0xf326('0x26')]!==_0x212d5d[_0xf326('0x26')])return![];if(moment()['isAfter'](moment[_0xf326('0x31')](_0x55ad0f[_0xf326('0x32')])))return![];return!![];}catch(_0xd77aba){throw _0xd77aba;}}function refreshOauth2MicrosoftAccessToken(_0x18d110){return Promise[_0xf326('0x33')]()[_0xf326('0x34')](function(){if(_0x18d110[_0xf326('0x35')])return _0x18d110;return db[_0xf326('0x36')][_0xf326('0x37')]({'where':{'id':_0x18d110['id']},'raw':!![]});})[_0xf326('0x34')](function(_0x4b52f2){var _0x1035ed={'grant_type':_0xf326('0x38'),'refresh_token':_0x4b52f2[_0xf326('0x39')],'scope':getAccessTokenScope(_0x4b52f2),'redirect_uri':_0x4b52f2['data4'],'client_id':_0x4b52f2[_0xf326('0x20')],'client_secret':encryptor[_0xf326('0x3a')](_0x4b52f2[_0xf326('0x35')])};var _0x4df451={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xf326('0x1a')](_0xf326('0x3b'),_0x4b52f2[_0xf326('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1035ed,'json':!![]};return rp(_0x4df451);})[_0xf326('0x34')](function(_0x30694f){_0x18d110[_0xf326('0x3c')]=_0x30694f[_0xf326('0x3d')];_0x18d110[_0xf326('0x39')]=_0x30694f['refresh_token'];return db[_0xf326('0x36')][_0xf326('0x3e')]({'data5':_0x18d110['data5'],'data6':_0x18d110[_0xf326('0x39')]},{'where':{'id':_0x18d110['id']}});})['then'](function(){return _0x18d110;})[_0xf326('0x3f')](function(_0x481b64){logger['error'](_0xf326('0x40'),_0x18d110['id'],_0x481b64);});}function getOauth2MicrosoftAccessToken(_0x4d8eac,_0x40dcb4){var _0x57aa27={'grant_type':_0xf326('0x41'),'code':_0x4d8eac,'scope':getAccessTokenScope(_0x40dcb4),'redirect_uri':_0x40dcb4[_0xf326('0x22')],'client_id':_0x40dcb4[_0xf326('0x20')],'client_secret':encryptor['decryptString'](_0x40dcb4[_0xf326('0x35')])};var _0x4095e6={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xf326('0x1a')](_0xf326('0x3b'),_0x40dcb4[_0xf326('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x57aa27,'json':!![]};return rp(_0x4095e6);}function startRefreshInterval(_0xaf65e0){var _0x51076c=schedule[_0xf326('0x42')];if(_0x51076c[_0xaf65e0['id']])clearInterval(_0x51076c[_0xaf65e0['id']]);_0x51076c[_0xaf65e0['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xf326('0x43')](this,{'id':_0xaf65e0['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xf326('0x42')]=_0x51076c;}function startAllRefreshIntervals(){return db[_0xf326('0x36')][_0xf326('0x44')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x3e830d){var _0x1b7bf6=_0x3e830d['map'](function(_0x4dd361){return refreshOauth2MicrosoftAccessToken(_0x4dd361)[_0xf326('0x34')](function(_0x577634){startRefreshInterval(_0x577634);});});return Promise['all'](_0x1b7bf6);})[_0xf326('0x3f')](function(_0x5d6ae2){var _0x3e1e8c=_0x5d6ae2?util[_0xf326('0x45')](_0x5d6ae2,{'showHidden':![],'depth':null}):'';logger[_0xf326('0x46')](_0xf326('0x47'),_0x3e1e8c);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x7a54=['data3','CloudProvider','findOne','refresh_token','decryptString','replace','access_token','data6','update','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s','authorization_code','POST','data2','bind','intervals','findAll','all','catch','inspect','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart','exports','lodash','crypto','jsonwebtoken','ioredis','request-promise','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','push','data7','/.default','join','Outlook365','Dynamics365','{TENANT_ID}','code','id_token','from','stringify','toString','base64','randomBytes','hex','client_id','data1','response_type','redirect_uri','data4','response_mode','form_post','state','nonce','login','key','oauth2Claims','oauth2/','set','decode','payload','iss','issuer','aud','audience','isAfter','exp','then'];(function(_0x382607,_0x1c6ed8){var _0x38245b=function(_0x44d0b9){while(--_0x44d0b9){_0x382607['push'](_0x382607['shift']());}};_0x38245b(++_0x1c6ed8);}(_0x7a54,0x106));var _0x47a5=function(_0x5b8e20,_0x308c60){_0x5b8e20=_0x5b8e20-0x0;var _0x4f7862=_0x7a54[_0x5b8e20];return _0x4f7862;};'use strict';var _=require(_0x47a5('0x0'));var crypto=require(_0x47a5('0x1'));var jwt=require(_0x47a5('0x2'));var moment=require('moment');var Redis=require(_0x47a5('0x3'));var rp=require(_0x47a5('0x4'));var util=require('util');var encryptor=require(_0x47a5('0x5'));var config=require(_0x47a5('0x6'));var logger=require(_0x47a5('0x7'))(_0x47a5('0x8'));var schedule=require(_0x47a5('0x9'));var db=require('../../mysqldb')['db'];config[_0x47a5('0xa')]=_['defaults'](config[_0x47a5('0xa')],{'host':_0x47a5('0xb'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x47a5('0xc');var AZURE_AUTH_SCOPES={'Outlook365':['openid','profile','email',_0x47a5('0xd'),_0x47a5('0xe'),'https://outlook.office.com/POP.AccessAsUser.All',_0x47a5('0xf')],'Dynamics365':['openid','offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x47a5('0x10');var MICROSOFT_TOKEN_ENDPOINT=_0x47a5('0x11');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x2f399b){var _0x250fad=_[_0x47a5('0x12')](AZURE_AUTH_SCOPES[_0x2f399b[_0x47a5('0x13')]]);if(_0x2f399b[_0x47a5('0x13')]==='Dynamics365')_0x250fad[_0x47a5('0x14')](_0x2f399b[_0x47a5('0x15')]+_0x47a5('0x16'));return _0x250fad[_0x47a5('0x17')]('\x20');}function getAccessTokenScope(_0x139f25){if(_0x139f25[_0x47a5('0x13')]===_0x47a5('0x18'))return _0x47a5('0xe');if(_0x139f25['type']===_0x47a5('0x19'))return _0x139f25[_0x47a5('0x15')]+_0x47a5('0x16');}function generateMicrosoftAuthorizationUrl(_0x2a2cbb,_0x1ef44c){var _0x574af6=MICROSOFT_AUTH_URL['replace'](_0x47a5('0x1a'),_0x2a2cbb['data2']);var _0x5247fd=[_0x47a5('0x1b'),_0x47a5('0x1c')];var _0x2ce454=Buffer[_0x47a5('0x1d')](JSON[_0x47a5('0x1e')]({'id':_0x1ef44c}))[_0x47a5('0x1f')](_0x47a5('0x20'));var _0xe3c618=crypto[_0x47a5('0x21')](0x10)['toString'](_0x47a5('0x22'));var _0xf160ba=getAuthorizationScopes(_0x2a2cbb);var _0x47cf3c=[{'key':_0x47a5('0x23'),'value':_0x2a2cbb[_0x47a5('0x24')]},{'key':_0x47a5('0x25'),'value':encodeURIComponent(_0x5247fd['join']('\x20'))},{'key':_0x47a5('0x26'),'value':_0x2a2cbb[_0x47a5('0x27')]},{'key':_0x47a5('0x28'),'value':_0x47a5('0x29')},{'key':'scope','value':encodeURIComponent(_0xf160ba)},{'key':_0x47a5('0x2a'),'value':_0x2ce454},{'key':_0x47a5('0x2b'),'value':_0xe3c618},{'key':'prompt','value':_0x47a5('0x2c')}];var _0xc4cd63=_0x574af6+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x47a5('0x12')](_0x47cf3c,function(_0x129ce5){return _0x129ce5[_0x47a5('0x2d')]+'='+_0x129ce5['value'];})['join']('&');_0x2a2cbb[_0x47a5('0x2e')]={'issuer':_0x574af6['replace'](_0x47a5('0x2f'),''),'audience':_0x2a2cbb['data1'],'state':_0x2ce454,'nonce':_0xe3c618};redis[_0x47a5('0x30')](_0x2ce454,JSON[_0x47a5('0x1e')](_0x2a2cbb));return _0xc4cd63;}function isValidIdToken(_0x36ad34,_0x1dac65){try{var _0x21f296=jwt[_0x47a5('0x31')](_0x36ad34,{'complete':!![]});var _0x24b162=_0x21f296[_0x47a5('0x32')];if(_0x24b162[_0x47a5('0x33')]!==_0x1dac65[_0x47a5('0x34')])return![];if(_0x24b162[_0x47a5('0x35')]!==_0x1dac65[_0x47a5('0x36')])return![];if(_0x24b162[_0x47a5('0x2b')]!==_0x1dac65['nonce'])return![];if(moment()[_0x47a5('0x37')](moment['unix'](_0x24b162[_0x47a5('0x38')])))return![];return!![];}catch(_0x9ac908){throw _0x9ac908;}}function refreshOauth2MicrosoftAccessToken(_0x16901f){return Promise['resolve']()[_0x47a5('0x39')](function(){if(_0x16901f[_0x47a5('0x3a')])return _0x16901f;return db[_0x47a5('0x3b')][_0x47a5('0x3c')]({'where':{'id':_0x16901f['id']},'raw':!![]});})['then'](function(_0x50d875){var _0x6f9a12={'grant_type':_0x47a5('0x3d'),'refresh_token':_0x50d875['data6'],'scope':getAccessTokenScope(_0x50d875),'redirect_uri':_0x50d875['data4'],'client_id':_0x50d875[_0x47a5('0x24')],'client_secret':encryptor[_0x47a5('0x3e')](_0x50d875['data3'])};var _0x42f70c={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x47a5('0x3f')](_0x47a5('0x1a'),_0x50d875['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x6f9a12,'json':!![]};return rp(_0x42f70c);})['then'](function(_0x274e34){_0x16901f['data5']=_0x274e34[_0x47a5('0x40')];_0x16901f[_0x47a5('0x41')]=_0x274e34[_0x47a5('0x3d')];return db['CloudProvider'][_0x47a5('0x42')]({'data5':_0x16901f['data5'],'data6':_0x16901f['data6']},{'where':{'id':_0x16901f['id']}});})[_0x47a5('0x39')](function(){return _0x16901f;})['catch'](function(_0x25cce0){logger['error'](_0x47a5('0x43'),_0x16901f['id'],_0x25cce0);});}function getOauth2MicrosoftAccessToken(_0x3534cb,_0x38c8d4){var _0x199698={'grant_type':_0x47a5('0x44'),'code':_0x3534cb,'scope':getAccessTokenScope(_0x38c8d4),'redirect_uri':_0x38c8d4[_0x47a5('0x27')],'client_id':_0x38c8d4[_0x47a5('0x24')],'client_secret':encryptor[_0x47a5('0x3e')](_0x38c8d4[_0x47a5('0x3a')])};var _0x4caed5={'method':_0x47a5('0x45'),'uri':MICROSOFT_AUTH_URL[_0x47a5('0x3f')]('{TENANT_ID}',_0x38c8d4[_0x47a5('0x46')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x199698,'json':!![]};return rp(_0x4caed5);}function startRefreshInterval(_0x2bf53d){var _0x1d4348=schedule['intervals'];if(_0x1d4348[_0x2bf53d['id']])clearInterval(_0x1d4348[_0x2bf53d['id']]);_0x1d4348[_0x2bf53d['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x47a5('0x47')](this,{'id':_0x2bf53d['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x47a5('0x48')]=_0x1d4348;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x47a5('0x49')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x47a5('0x39')](function(_0x54ae35){var _0x55c5eb=_0x54ae35['map'](function(_0x12d9f2){return refreshOauth2MicrosoftAccessToken(_0x12d9f2)['then'](function(_0x9b5eaf){startRefreshInterval(_0x9b5eaf);});});return Promise[_0x47a5('0x4a')](_0x55c5eb);})[_0x47a5('0x4b')](function(_0x111f0d){var _0x1b2c80=_0x111f0d?util[_0x47a5('0x4c')](_0x111f0d,{'showHidden':![],'depth':null}):'';logger[_0x47a5('0x4d')](_0x47a5('0x4e'),_0x1b2c80);});}module[_0x47a5('0x4f')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 5cd716e..eb804c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6629=['info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then'];(function(_0x2e56e8,_0x392c15){var _0x42b01a=function(_0x2f3623){while(--_0x2f3623){_0x2e56e8['push'](_0x2e56e8['shift']());}};_0x42b01a(++_0x392c15);}(_0x6629,0x1c2));var _0x9662=function(_0x5a438f,_0x30e5c7){_0x5a438f=_0x5a438f-0x0;var _0x35a2b8=_0x6629[_0x5a438f];return _0x35a2b8;};'use strict';var _=require(_0x9662('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9662('0x1'));var rs=require(_0x9662('0x2'));var fs=require('fs');var Redis=require(_0x9662('0x3'));var db=require(_0x9662('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9662('0x5'))(_0x9662('0x6'));var config=require(_0x9662('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9662('0x8')][_0x9662('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x457681,_0x5ec533,_0x1a1809){return new BPromise(function(_0x58e45a,_0xa866f2){return client[_0x9662('0xa')](_0x457681,_0x1a1809)[_0x9662('0xb')](function(_0x11ae91){logger[_0x9662('0xc')](_0x9662('0xd'),_0x5ec533,_0x9662('0xe'));logger[_0x9662('0xf')](_0x9662('0x10'),_0x5ec533,_0x9662('0xe'),JSON[_0x9662('0x11')](_0x11ae91));if(_0x11ae91['error']){if(_0x11ae91[_0x9662('0x12')]['code']===0x1f4){logger[_0x9662('0x12')](_0x9662('0xd'),_0x5ec533,_0x11ae91['error'][_0x9662('0x13')]);return _0xa866f2(_0x11ae91[_0x9662('0x12')][_0x9662('0x13')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x5ec533,_0x11ae91[_0x9662('0x12')]['message']);return _0x58e45a(_0x11ae91[_0x9662('0x12')][_0x9662('0x13')]);}else{logger[_0x9662('0xc')]('CloudProvider,\x20%s,\x20%s',_0x5ec533,'request\x20sent');_0x58e45a(_0x11ae91['result'][_0x9662('0x13')]);}})[_0x9662('0x14')](function(_0x4930c5){logger[_0x9662('0x12')](_0x9662('0xd'),_0x5ec533,_0x4930c5);_0xa866f2(_0x4930c5);});});}
\ No newline at end of file
+var _0xce04=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/environment','jayson/promise','http','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','code','error','message'];(function(_0xd7648,_0x2c7f7f){var _0x3ceff2=function(_0x4eb598){while(--_0x4eb598){_0xd7648['push'](_0xd7648['shift']());}};_0x3ceff2(++_0x2c7f7f);}(_0xce04,0xc0));var _0x4ce0=function(_0x4c0cb5,_0x2fbce6){_0x4c0cb5=_0x4c0cb5-0x0;var _0x396981=_0xce04[_0x4c0cb5];return _0x396981;};'use strict';var _=require(_0x4ce0('0x0'));var util=require('util');var moment=require(_0x4ce0('0x1'));var BPromise=require(_0x4ce0('0x2'));var rs=require(_0x4ce0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ce0('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4ce0('0x5'));var jayson=require(_0x4ce0('0x6'));var client=jayson['client'][_0x4ce0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x462871,_0x5377ab,_0x3a0dca){return new BPromise(function(_0x3b7238,_0x709a46){return client['request'](_0x462871,_0x3a0dca)[_0x4ce0('0x8')](function(_0x29c627){logger[_0x4ce0('0x9')](_0x4ce0('0xa'),_0x5377ab,_0x4ce0('0xb'));logger[_0x4ce0('0xc')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x5377ab,_0x4ce0('0xb'),JSON['stringify'](_0x29c627));if(_0x29c627['error']){if(_0x29c627['error'][_0x4ce0('0xd')]===0x1f4){logger[_0x4ce0('0xe')](_0x4ce0('0xa'),_0x5377ab,_0x29c627['error'][_0x4ce0('0xf')]);return _0x709a46(_0x29c627[_0x4ce0('0xe')]['message']);}logger[_0x4ce0('0xe')]('CloudProvider,\x20%s,\x20%s',_0x5377ab,_0x29c627[_0x4ce0('0xe')][_0x4ce0('0xf')]);return _0x3b7238(_0x29c627[_0x4ce0('0xe')]['message']);}else{logger[_0x4ce0('0x9')](_0x4ce0('0xa'),_0x5377ab,_0x4ce0('0xb'));_0x3b7238(_0x29c627['result'][_0x4ce0('0xf')]);}})['catch'](function(_0x4d1fd2){logger[_0x4ce0('0xe')](_0x4ce0('0xa'),_0x5377ab,_0x4d1fd2);_0x709a46(_0x4d1fd2);});});}
\ No newline at end of file
index 356f1fa..b2f77b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x7a54,0x106));var _0x47a5=function(_0x2947ec,_0x22499c){_0x2947ec=_0x2947ec-0x0;var _0xb7efb4=_0x7a54[_0x2947ec];return _0xb7efb4;};'use strict';var express=require(_0x47a5('0x0'));var router=express[_0x47a5('0x1')]();var auth=require(_0x47a5('0x2'));var controller=require('./cloudProvider.controller');router[_0x47a5('0x3')]('/',auth[_0x47a5('0x4')](),controller['index']);router[_0x47a5('0x3')](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller[_0x47a5('0x6')]);router[_0x47a5('0x7')]('/',auth['isAuthenticated'](),controller[_0x47a5('0x8')]);router['put'](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller['update']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x47a5('0x3')](_0x47a5('0xa'),auth['isAuthenticated'](),controller[_0x47a5('0xb')]);router['post']('/oauth2/microsoft/callback',controller[_0x47a5('0xc')]);module[_0x47a5('0xd')]=router;
\ No newline at end of file
+var _0xadb5=['put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','Router','./cloudProvider.controller','get','isAuthenticated','/:id','post','create'];(function(_0x557aef,_0x33851a){var _0x26f5ac=function(_0x2ceaa6){while(--_0x2ceaa6){_0x557aef['push'](_0x557aef['shift']());}};_0x26f5ac(++_0x33851a);}(_0xadb5,0xad));var _0x5adb=function(_0x1aa99e,_0x4dd3a7){_0x1aa99e=_0x1aa99e-0x0;var _0x4132a6=_0xadb5[_0x1aa99e];return _0x4132a6;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['index']);router[_0x5adb('0x2')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller['show']);router[_0x5adb('0x5')]('/',auth[_0x5adb('0x3')](),controller[_0x5adb('0x6')]);router[_0x5adb('0x7')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0x8')]);router[_0x5adb('0x9')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0xa')]);router[_0x5adb('0x2')](_0x5adb('0xb'),auth[_0x5adb('0x3')](),controller['oauth2MicrosoftAuthorize']);router['post'](_0x5adb('0xc'),controller[_0x5adb('0xd')]);module[_0x5adb('0xe')]=router;
\ No newline at end of file
index b33fc79..1f00273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['name','sequelize','exports','STRING'];(function(_0x2c84e5,_0x58a7c7){var _0x4990ec=function(_0x5b02b0){while(--_0x5b02b0){_0x2c84e5['push'](_0x2c84e5['shift']());}};_0x4990ec(++_0x58a7c7);}(_0x524a,0xf5));var _0xa524=function(_0x1fba2b,_0xc6aa75){_0x1fba2b=_0x1fba2b-0x0;var _0x4ee240=_0x524a[_0x1fba2b];return _0x4ee240;};'use strict';var Sequelize=require(_0xa524('0x0'));module[_0xa524('0x1')]={'name':{'type':Sequelize[_0xa524('0x2')],'unique':_0xa524('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xa524('0x2')]},'website':{'type':Sequelize[_0xa524('0x2')]},'phone':{'type':Sequelize[_0xa524('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xa524('0x2')]},'postalCode':{'type':Sequelize[_0xa524('0x2')]},'city':{'type':Sequelize[_0xa524('0x2')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xa524('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xa524('0x2')]},'sPostalCode':{'type':Sequelize[_0xa524('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0xa524('0x2')]},'description':{'type':Sequelize[_0xa524('0x2')]}};
\ No newline at end of file
+var _0x7721=['name','sequelize','exports','STRING'];(function(_0x1af9d7,_0x3251c9){var _0x36522a=function(_0x393f12){while(--_0x393f12){_0x1af9d7['push'](_0x1af9d7['shift']());}};_0x36522a(++_0x3251c9);}(_0x7721,0x115));var _0x1772=function(_0x41807b,_0x2f0117){_0x41807b=_0x41807b-0x0;var _0x1e58ec=_0x7721[_0x41807b];return _0x1e58ec;};'use strict';var Sequelize=require(_0x1772('0x0'));module[_0x1772('0x1')]={'name':{'type':Sequelize[_0x1772('0x2')],'unique':_0x1772('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x1772('0x2')]},'website':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x1772('0x2')]},'type':{'type':Sequelize[_0x1772('0x2')]},'street':{'type':Sequelize[_0x1772('0x2')]},'postalCode':{'type':Sequelize[_0x1772('0x2')]},'city':{'type':Sequelize[_0x1772('0x2')]},'country':{'type':Sequelize[_0x1772('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x1772('0x2')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x1772('0x2')]},'description':{'type':Sequelize[_0x1772('0x2')]}};
\ No newline at end of file
index 036f029..c49e646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3658=['then','destroy','get','Companies','UserProfileResource','error','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','merge','includeAll','include','rows','catch','show','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addContacts','CmContact','ids','omit','getContacts','options','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update'];(function(_0x3f93a3,_0x353500){var _0x138edd=function(_0x57ae63){while(--_0x57ae63){_0x3f93a3['push'](_0x3f93a3['shift']());}};_0x138edd(++_0x353500);}(_0x3658,0x187));var _0x8365=function(_0x31a80e,_0x497c4c){_0x31a80e=_0x31a80e-0x0;var _0x2b7467=_0x3658[_0x31a80e];return _0x2b7467;};'use strict';var emlformat=require(_0x8365('0x0'));var rimraf=require(_0x8365('0x1'));var zipdir=require(_0x8365('0x2'));var jsonpatch=require(_0x8365('0x3'));var rp=require('request-promise');var moment=require(_0x8365('0x4'));var BPromise=require(_0x8365('0x5'));var Mustache=require(_0x8365('0x6'));var util=require('util');var path=require(_0x8365('0x7'));var sox=require(_0x8365('0x8'));var csv=require(_0x8365('0x9'));var ejs=require(_0x8365('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8365('0xb'));var squel=require(_0x8365('0xc'));var crypto=require(_0x8365('0xd'));var jsforce=require(_0x8365('0xe'));var deskjs=require(_0x8365('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8365('0x10'));var Redis=require('ioredis');var authService=require(_0x8365('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8365('0x12'))(_0x8365('0x13'));var utils=require('../../config/utils');var config=require(_0x8365('0x14'));var licenseUtil=require(_0x8365('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x34e39e,_0x23d115){_0x23d115=_0x23d115||0xcc;return function(_0x460305){if(_0x460305){return _0x34e39e[_0x8365('0x16')](_0x23d115);}return _0x34e39e[_0x8365('0x17')](_0x23d115)[_0x8365('0x18')]();};}function respondWithResult(_0x180b9b,_0x5ac214){_0x5ac214=_0x5ac214||0xc8;return function(_0xde271a){if(_0xde271a){return _0x180b9b[_0x8365('0x17')](_0x5ac214)[_0x8365('0x19')](_0xde271a);}};}function respondWithFilteredResult(_0x4395a7,_0x4325ed){return function(_0x2ec09b){if(_0x2ec09b){var _0x8f2cce=typeof _0x4325ed[_0x8365('0x1a')]===_0x8365('0x1b')&&typeof _0x4325ed[_0x8365('0x1c')]==='undefined';var _0x52d301=_0x2ec09b[_0x8365('0x1d')];var _0x345734=_0x8f2cce?0x0:_0x4325ed[_0x8365('0x1a')];var _0x127760=_0x8f2cce?_0x2ec09b[_0x8365('0x1d')]:_0x4325ed[_0x8365('0x1a')]+_0x4325ed['limit'];var _0x72f6c8;if(_0x127760>=_0x52d301){_0x127760=_0x52d301;_0x72f6c8=0xc8;}else{_0x72f6c8=0xce;}_0x4395a7[_0x8365('0x17')](_0x72f6c8);return _0x4395a7[_0x8365('0x1e')]('Content-Range',_0x345734+'-'+_0x127760+'/'+_0x52d301)[_0x8365('0x19')](_0x2ec09b);}return null;};}function patchUpdates(_0x27b6c2){return function(_0x275e22){try{jsonpatch['apply'](_0x275e22,_0x27b6c2,!![]);}catch(_0x262998){return BPromise[_0x8365('0x1f')](_0x262998);}return _0x275e22[_0x8365('0x20')]();};}function saveUpdates(_0x2efa3a,_0x47666e){return function(_0x76ca6){if(_0x76ca6){return _0x76ca6[_0x8365('0x21')](_0x2efa3a)[_0x8365('0x22')](function(_0x249309){return _0x249309;});}return null;};}function removeEntity(_0x42cd52,_0x33ae95){return function(_0x8425db){if(_0x8425db){return _0x8425db[_0x8365('0x23')]()[_0x8365('0x22')](function(){var _0x284166=_0x8425db[_0x8365('0x24')]({'plain':!![]});var _0x27d04a=_0x8365('0x25');return db[_0x8365('0x26')][_0x8365('0x23')]({'where':{'type':_0x27d04a,'resourceId':_0x284166['id']}})[_0x8365('0x22')](function(){return _0x8425db;});})[_0x8365('0x22')](function(){_0x42cd52[_0x8365('0x17')](0xcc)[_0x8365('0x18')]();});}};}function handleEntityNotFound(_0x930c2,_0x569d0d){return function(_0x195913){if(!_0x195913){_0x930c2[_0x8365('0x16')](0x194);}return _0x195913;};}function handleError(_0x3e0ad2,_0x4f695b){_0x4f695b=_0x4f695b||0x1f4;return function(_0x26bf48){logger[_0x8365('0x27')](_0x26bf48['stack']);if(_0x26bf48[_0x8365('0x28')]){delete _0x26bf48['name'];}_0x3e0ad2[_0x8365('0x17')](_0x4f695b)[_0x8365('0x29')](_0x26bf48);};}exports[_0x8365('0x2a')]=function(_0x512f64,_0x5661eb){var _0x182be1={},_0x221a1b={},_0x35453b={'count':0x0,'rows':[]};return db[_0x8365('0x2b')][_0x8365('0x2c')]()[_0x8365('0x22')](function(_0x4363a5){_0x221a1b[_0x8365('0x2d')]=_[_0x8365('0x2e')](_0x4363a5);_0x221a1b[_0x8365('0x2f')]=_[_0x8365('0x2e')](_0x512f64['query']);_0x221a1b[_0x8365('0x30')]=_[_0x8365('0x31')](_0x221a1b[_0x8365('0x2d')],_0x221a1b[_0x8365('0x2f')]);_0x182be1[_0x8365('0x32')]=_[_0x8365('0x31')](_0x221a1b[_0x8365('0x2d')],qs[_0x8365('0x33')](_0x512f64[_0x8365('0x2f')][_0x8365('0x33')]));_0x182be1[_0x8365('0x32')]=_0x182be1[_0x8365('0x32')][_0x8365('0x34')]?_0x182be1[_0x8365('0x32')]:_0x221a1b[_0x8365('0x2d')];if(!_0x512f64[_0x8365('0x2f')][_0x8365('0x35')](_0x8365('0x36'))){_0x182be1[_0x8365('0x1c')]=qs['limit'](_0x512f64[_0x8365('0x2f')][_0x8365('0x1c')]);_0x182be1[_0x8365('0x1a')]=qs[_0x8365('0x1a')](_0x512f64[_0x8365('0x2f')][_0x8365('0x1a')]);}_0x182be1[_0x8365('0x37')]=qs['sort'](_0x512f64['query'][_0x8365('0x38')]);_0x182be1[_0x8365('0x39')]=qs[_0x8365('0x30')](_[_0x8365('0x3a')](_0x512f64[_0x8365('0x2f')],_0x221a1b[_0x8365('0x30')]),_0x4363a5);if(_0x512f64[_0x8365('0x2f')][_0x8365('0x3b')]){_0x182be1[_0x8365('0x39')]=_['merge'](_0x182be1['where'],{'$or':_[_0x8365('0x3c')](_0x182be1[_0x8365('0x32')],function(_0x113439){var _0x4ef242={};_0x4ef242[_0x113439]={'$like':'%'+_0x512f64[_0x8365('0x2f')]['filter']+'%'};return _0x4ef242;})});}_0x182be1=_[_0x8365('0x3d')]({},_0x182be1,_0x512f64['options']);var _0x3f8060={'where':_0x182be1[_0x8365('0x39')]};return db[_0x8365('0x2b')][_0x8365('0x1d')](_0x3f8060)[_0x8365('0x22')](function(_0x26180c){_0x35453b[_0x8365('0x1d')]=_0x26180c;if(_0x512f64[_0x8365('0x2f')][_0x8365('0x3e')]){_0x182be1[_0x8365('0x3f')]=[{'all':!![]}];}return db[_0x8365('0x2b')]['findAll'](_0x182be1);})['then'](function(_0x143f59){_0x35453b[_0x8365('0x40')]=_0x143f59;return _0x35453b;})[_0x8365('0x22')](respondWithFilteredResult(_0x5661eb,_0x182be1))[_0x8365('0x41')](handleError(_0x5661eb,null));})[_0x8365('0x41')](handleError(_0x5661eb,null));};exports[_0x8365('0x42')]=function(_0x2d80eb,_0x21c042){var _0x1455a4={'raw':![],'where':{'id':_0x2d80eb['params']['id']}},_0xf43fcb={};_0xf43fcb[_0x8365('0x2d')]=_[_0x8365('0x2e')](db['CmCompany'][_0x8365('0x43')]);_0xf43fcb['query']=_[_0x8365('0x2e')](_0x2d80eb[_0x8365('0x2f')]);_0xf43fcb['filters']=_[_0x8365('0x31')](_0xf43fcb[_0x8365('0x2d')],_0xf43fcb[_0x8365('0x2f')]);_0x1455a4[_0x8365('0x32')]=_[_0x8365('0x31')](_0xf43fcb[_0x8365('0x2d')],qs[_0x8365('0x33')](_0x2d80eb['query'][_0x8365('0x33')]));_0x1455a4[_0x8365('0x32')]=_0x1455a4[_0x8365('0x32')][_0x8365('0x34')]?_0x1455a4[_0x8365('0x32')]:_0xf43fcb[_0x8365('0x2d')];if(_0x2d80eb['query'][_0x8365('0x3e')]){_0x1455a4[_0x8365('0x3f')]=[{'all':!![]}];}_0x1455a4=_[_0x8365('0x3d')]({},_0x1455a4,_0x2d80eb['options']);return db[_0x8365('0x2b')][_0x8365('0x44')](_0x1455a4)[_0x8365('0x22')](handleEntityNotFound(_0x21c042,null))[_0x8365('0x22')](respondWithResult(_0x21c042,null))[_0x8365('0x41')](handleError(_0x21c042,null));};exports['create']=function(_0x443061,_0x2610c2){return db['CmCompany'][_0x8365('0x45')](_0x443061[_0x8365('0x46')],{})[_0x8365('0x22')](function(_0xec5e03){var _0x1724d1=_0x443061[_0x8365('0x47')][_0x8365('0x24')]({'plain':!![]});if(!_0x1724d1)throw new Error(_0x8365('0x48'));if(_0x1724d1[_0x8365('0x49')]===_0x8365('0x47')){var _0x4faa9e=_0xec5e03[_0x8365('0x24')]({'plain':!![]});var _0x344055='Companies';return db[_0x8365('0x4a')][_0x8365('0x44')]({'where':{'name':_0x344055,'userProfileId':_0x1724d1[_0x8365('0x4b')]},'raw':!![]})[_0x8365('0x22')](function(_0x1e6763){if(_0x1e6763&&_0x1e6763[_0x8365('0x4c')]===0x0){return db[_0x8365('0x26')][_0x8365('0x45')]({'name':_0x4faa9e[_0x8365('0x28')],'resourceId':_0x4faa9e['id'],'type':_0x1e6763[_0x8365('0x28')],'sectionId':_0x1e6763['id']},{})['then'](function(){return _0xec5e03;});}else{return _0xec5e03;}})[_0x8365('0x41')](function(_0x49b50b){logger[_0x8365('0x27')](_0x8365('0x4d'),_0x49b50b);throw _0x49b50b;});}return _0xec5e03;})['then'](respondWithResult(_0x2610c2,0xc9))[_0x8365('0x41')](handleError(_0x2610c2,null));};exports[_0x8365('0x21')]=function(_0x4f30a5,_0x5c8816){if(_0x4f30a5[_0x8365('0x46')]['id']){delete _0x4f30a5[_0x8365('0x46')]['id'];}return db[_0x8365('0x2b')]['find']({'where':{'id':_0x4f30a5[_0x8365('0x4e')]['id']}})[_0x8365('0x22')](handleEntityNotFound(_0x5c8816,null))[_0x8365('0x22')](saveUpdates(_0x4f30a5[_0x8365('0x46')],null))[_0x8365('0x22')](respondWithResult(_0x5c8816,null))[_0x8365('0x41')](handleError(_0x5c8816,null));};exports['destroy']=function(_0x407710,_0x2fbefc){return db[_0x8365('0x2b')]['find']({'where':{'id':_0x407710[_0x8365('0x4e')]['id']}})[_0x8365('0x22')](handleEntityNotFound(_0x2fbefc,null))[_0x8365('0x22')](removeEntity(_0x2fbefc,null))[_0x8365('0x41')](handleError(_0x2fbefc,null));};exports[_0x8365('0x2c')]=function(_0x5118a2,_0x573a20){return db['CmCompany'][_0x8365('0x2c')]()[_0x8365('0x22')](respondWithResult(_0x573a20,null))[_0x8365('0x41')](handleError(_0x573a20,null));};exports[_0x8365('0x4f')]=function(_0x294240,_0x9581c4,_0x7d5438){return db[_0x8365('0x50')][_0x8365('0x44')]({'where':{'id':_0x294240[_0x8365('0x4e')]['id']}})[_0x8365('0x22')](handleEntityNotFound(_0x9581c4,null))['then'](function(_0x1d1cb3){if(_0x1d1cb3){return _0x1d1cb3[_0x8365('0x4f')](_0x294240[_0x8365('0x46')][_0x8365('0x51')],_[_0x8365('0x52')](_0x294240[_0x8365('0x46')],[_0x8365('0x51'),'id'])||{});}})[_0x8365('0x22')](respondWithResult(_0x9581c4,null))[_0x8365('0x41')](handleError(_0x9581c4,null));};exports[_0x8365('0x53')]=function(_0x1c7636,_0x1e31b8,_0x3411b8){var _0x184ce1={};var _0x2b1da6={};var _0x46fb81;var _0x117acf;return db[_0x8365('0x2b')]['findOne']({'where':{'id':_0x1c7636[_0x8365('0x4e')]['id']}})[_0x8365('0x22')](handleEntityNotFound(_0x1e31b8,null))['then'](function(_0x31d1bd){if(_0x31d1bd){_0x46fb81=_0x31d1bd;_0x2b1da6[_0x8365('0x2d')]=_[_0x8365('0x2e')](db[_0x8365('0x50')]['rawAttributes']);_0x2b1da6['query']=_['keys'](_0x1c7636[_0x8365('0x2f')]);_0x2b1da6['filters']=_[_0x8365('0x31')](_0x2b1da6[_0x8365('0x2d')],_0x2b1da6[_0x8365('0x2f')]);_0x184ce1[_0x8365('0x32')]=_[_0x8365('0x31')](_0x2b1da6[_0x8365('0x2d')],qs[_0x8365('0x33')](_0x1c7636['query'][_0x8365('0x33')]));_0x184ce1['attributes']=_0x184ce1[_0x8365('0x32')][_0x8365('0x34')]?_0x184ce1['attributes']:_0x2b1da6[_0x8365('0x2d')];_0x184ce1[_0x8365('0x37')]=qs['sort'](_0x1c7636[_0x8365('0x2f')][_0x8365('0x38')]);_0x184ce1['where']=qs['filters'](_[_0x8365('0x3a')](_0x1c7636[_0x8365('0x2f')],_0x2b1da6[_0x8365('0x30')]));if(_0x1c7636['query'][_0x8365('0x3b')]){_0x184ce1[_0x8365('0x39')]=_[_0x8365('0x3d')](_0x184ce1['where'],{'$or':_[_0x8365('0x3c')](_0x184ce1[_0x8365('0x32')],function(_0xa5f574){var _0x3170ec={};_0x3170ec[_0xa5f574]={'$like':'%'+_0x1c7636['query'][_0x8365('0x3b')]+'%'};return _0x3170ec;})});}_0x184ce1=_[_0x8365('0x3d')]({},_0x184ce1,_0x1c7636[_0x8365('0x54')]);return _0x46fb81['getContacts'](_0x184ce1);}})[_0x8365('0x22')](function(_0x29090d){if(_0x29090d){_0x117acf=_0x29090d[_0x8365('0x34')];if(!_0x1c7636[_0x8365('0x2f')][_0x8365('0x35')](_0x8365('0x36'))){_0x184ce1[_0x8365('0x1c')]=qs[_0x8365('0x1c')](_0x1c7636[_0x8365('0x2f')]['limit']);_0x184ce1[_0x8365('0x1a')]=qs[_0x8365('0x1a')](_0x1c7636[_0x8365('0x2f')][_0x8365('0x1a')]);}return _0x46fb81[_0x8365('0x53')](_0x184ce1);}})[_0x8365('0x22')](function(_0x46ef1b){if(_0x46ef1b){return _0x46ef1b?{'count':_0x117acf,'rows':_0x46ef1b}:null;}})['then'](respondWithResult(_0x1e31b8,null))[_0x8365('0x41')](handleError(_0x1e31b8,null));};
\ No newline at end of file
+var _0x0ea9=['update','destroy','then','get','Companies','UserProfileResource','error','stack','name','index','CmCompany','describe','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','where','merge','filter','options','includeAll','findAll','catch','params','rawAttributes','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmContact','addContacts','ids','omit','sort','pick','map','getContacts','hasOwnProperty','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save'];(function(_0x4088f5,_0x43b49d){var _0x4f05ce=function(_0x2be5c0){while(--_0x2be5c0){_0x4088f5['push'](_0x4088f5['shift']());}};_0x4f05ce(++_0x43b49d);}(_0x0ea9,0x131));var _0x90ea=function(_0x22ba87,_0x267860){_0x22ba87=_0x22ba87-0x0;var _0x558676=_0x0ea9[_0x22ba87];return _0x558676;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x90ea('0x0'));var jsonpatch=require(_0x90ea('0x1'));var rp=require(_0x90ea('0x2'));var moment=require('moment');var BPromise=require(_0x90ea('0x3'));var Mustache=require('mustache');var util=require(_0x90ea('0x4'));var path=require(_0x90ea('0x5'));var sox=require(_0x90ea('0x6'));var csv=require('to-csv');var ejs=require(_0x90ea('0x7'));var fs=require('fs');var fs_extra=require(_0x90ea('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x90ea('0x9'));var deskjs=require(_0x90ea('0xa'));var toCsv=require(_0x90ea('0xb'));var querystring=require(_0x90ea('0xc'));var Papa=require(_0x90ea('0xd'));var Redis=require(_0x90ea('0xe'));var authService=require(_0x90ea('0xf'));var qs=require(_0x90ea('0x10'));var as=require(_0x90ea('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x90ea('0x12'))(_0x90ea('0x13'));var utils=require(_0x90ea('0x14'));var config=require(_0x90ea('0x15'));var licenseUtil=require(_0x90ea('0x16'));var db=require(_0x90ea('0x17'))['db'];function respondWithStatusCode(_0x1124b7,_0x128b69){_0x128b69=_0x128b69||0xcc;return function(_0x311192){if(_0x311192){return _0x1124b7[_0x90ea('0x18')](_0x128b69);}return _0x1124b7[_0x90ea('0x19')](_0x128b69)[_0x90ea('0x1a')]();};}function respondWithResult(_0x578971,_0x5370e6){_0x5370e6=_0x5370e6||0xc8;return function(_0x278e34){if(_0x278e34){return _0x578971[_0x90ea('0x19')](_0x5370e6)[_0x90ea('0x1b')](_0x278e34);}};}function respondWithFilteredResult(_0x184859,_0x5275e4){return function(_0xda19b4){if(_0xda19b4){var _0x34ec47=typeof _0x5275e4[_0x90ea('0x1c')]===_0x90ea('0x1d')&&typeof _0x5275e4[_0x90ea('0x1e')]===_0x90ea('0x1d');var _0x216931=_0xda19b4[_0x90ea('0x1f')];var _0x17b57a=_0x34ec47?0x0:_0x5275e4['offset'];var _0x40506a=_0x34ec47?_0xda19b4[_0x90ea('0x1f')]:_0x5275e4['offset']+_0x5275e4[_0x90ea('0x1e')];var _0x8a3818;if(_0x40506a>=_0x216931){_0x40506a=_0x216931;_0x8a3818=0xc8;}else{_0x8a3818=0xce;}_0x184859[_0x90ea('0x19')](_0x8a3818);return _0x184859[_0x90ea('0x20')](_0x90ea('0x21'),_0x17b57a+'-'+_0x40506a+'/'+_0x216931)['json'](_0xda19b4);}return null;};}function patchUpdates(_0xa509bd){return function(_0x11a08d){try{jsonpatch['apply'](_0x11a08d,_0xa509bd,!![]);}catch(_0x4834b3){return BPromise['reject'](_0x4834b3);}return _0x11a08d[_0x90ea('0x22')]();};}function saveUpdates(_0x5be2d8,_0x26d486){return function(_0x43e8fa){if(_0x43e8fa){return _0x43e8fa[_0x90ea('0x23')](_0x5be2d8)['then'](function(_0x2d6c49){return _0x2d6c49;});}return null;};}function removeEntity(_0x977ef3,_0xae82c9){return function(_0x145183){if(_0x145183){return _0x145183[_0x90ea('0x24')]()[_0x90ea('0x25')](function(){var _0x1dc0b7=_0x145183[_0x90ea('0x26')]({'plain':!![]});var _0x3047e4=_0x90ea('0x27');return db[_0x90ea('0x28')]['destroy']({'where':{'type':_0x3047e4,'resourceId':_0x1dc0b7['id']}})[_0x90ea('0x25')](function(){return _0x145183;});})[_0x90ea('0x25')](function(){_0x977ef3[_0x90ea('0x19')](0xcc)[_0x90ea('0x1a')]();});}};}function handleEntityNotFound(_0x149991,_0x483997){return function(_0x6a2b39){if(!_0x6a2b39){_0x149991['sendStatus'](0x194);}return _0x6a2b39;};}function handleError(_0x4c523b,_0x37b16e){_0x37b16e=_0x37b16e||0x1f4;return function(_0x264749){logger[_0x90ea('0x29')](_0x264749[_0x90ea('0x2a')]);if(_0x264749[_0x90ea('0x2b')]){delete _0x264749[_0x90ea('0x2b')];}_0x4c523b[_0x90ea('0x19')](_0x37b16e)['send'](_0x264749);};}exports[_0x90ea('0x2c')]=function(_0x48a663,_0x145ec3){var _0x1be6b5={},_0x52dd12={},_0x34d557={'count':0x0,'rows':[]};return db[_0x90ea('0x2d')][_0x90ea('0x2e')]()['then'](function(_0x168e60){_0x52dd12[_0x90ea('0x2f')]=_['keys'](_0x168e60);_0x52dd12['query']=_[_0x90ea('0x30')](_0x48a663[_0x90ea('0x31')]);_0x52dd12[_0x90ea('0x32')]=_[_0x90ea('0x33')](_0x52dd12[_0x90ea('0x2f')],_0x52dd12[_0x90ea('0x31')]);_0x1be6b5['attributes']=_[_0x90ea('0x33')](_0x52dd12[_0x90ea('0x2f')],qs[_0x90ea('0x34')](_0x48a663[_0x90ea('0x31')][_0x90ea('0x34')]));_0x1be6b5['attributes']=_0x1be6b5[_0x90ea('0x35')][_0x90ea('0x36')]?_0x1be6b5[_0x90ea('0x35')]:_0x52dd12[_0x90ea('0x2f')];if(!_0x48a663[_0x90ea('0x31')]['hasOwnProperty'](_0x90ea('0x37'))){_0x1be6b5[_0x90ea('0x1e')]=qs[_0x90ea('0x1e')](_0x48a663[_0x90ea('0x31')][_0x90ea('0x1e')]);_0x1be6b5[_0x90ea('0x1c')]=qs[_0x90ea('0x1c')](_0x48a663[_0x90ea('0x31')][_0x90ea('0x1c')]);}_0x1be6b5[_0x90ea('0x38')]=qs['sort'](_0x48a663['query']['sort']);_0x1be6b5['where']=qs[_0x90ea('0x32')](_['pick'](_0x48a663[_0x90ea('0x31')],_0x52dd12[_0x90ea('0x32')]),_0x168e60);if(_0x48a663[_0x90ea('0x31')]['filter']){_0x1be6b5[_0x90ea('0x39')]=_[_0x90ea('0x3a')](_0x1be6b5['where'],{'$or':_['map'](_0x1be6b5['attributes'],function(_0x46164b){var _0x43ec43={};_0x43ec43[_0x46164b]={'$like':'%'+_0x48a663['query'][_0x90ea('0x3b')]+'%'};return _0x43ec43;})});}_0x1be6b5=_['merge']({},_0x1be6b5,_0x48a663[_0x90ea('0x3c')]);var _0x5c2f45={'where':_0x1be6b5['where']};return db[_0x90ea('0x2d')][_0x90ea('0x1f')](_0x5c2f45)[_0x90ea('0x25')](function(_0x6fd27e){_0x34d557['count']=_0x6fd27e;if(_0x48a663['query'][_0x90ea('0x3d')]){_0x1be6b5['include']=[{'all':!![]}];}return db['CmCompany'][_0x90ea('0x3e')](_0x1be6b5);})[_0x90ea('0x25')](function(_0x2e01fd){_0x34d557['rows']=_0x2e01fd;return _0x34d557;})['then'](respondWithFilteredResult(_0x145ec3,_0x1be6b5))[_0x90ea('0x3f')](handleError(_0x145ec3,null));})['catch'](handleError(_0x145ec3,null));};exports['show']=function(_0x2046d7,_0x508d3d){var _0xa72572={'raw':![],'where':{'id':_0x2046d7[_0x90ea('0x40')]['id']}},_0x4816a9={};_0x4816a9[_0x90ea('0x2f')]=_[_0x90ea('0x30')](db['CmCompany'][_0x90ea('0x41')]);_0x4816a9['query']=_['keys'](_0x2046d7[_0x90ea('0x31')]);_0x4816a9[_0x90ea('0x32')]=_['intersection'](_0x4816a9[_0x90ea('0x2f')],_0x4816a9[_0x90ea('0x31')]);_0xa72572[_0x90ea('0x35')]=_[_0x90ea('0x33')](_0x4816a9[_0x90ea('0x2f')],qs[_0x90ea('0x34')](_0x2046d7['query'][_0x90ea('0x34')]));_0xa72572['attributes']=_0xa72572[_0x90ea('0x35')][_0x90ea('0x36')]?_0xa72572[_0x90ea('0x35')]:_0x4816a9['model'];if(_0x2046d7[_0x90ea('0x31')][_0x90ea('0x3d')]){_0xa72572[_0x90ea('0x42')]=[{'all':!![]}];}_0xa72572=_[_0x90ea('0x3a')]({},_0xa72572,_0x2046d7[_0x90ea('0x3c')]);return db[_0x90ea('0x2d')]['find'](_0xa72572)['then'](handleEntityNotFound(_0x508d3d,null))[_0x90ea('0x25')](respondWithResult(_0x508d3d,null))['catch'](handleError(_0x508d3d,null));};exports[_0x90ea('0x43')]=function(_0x141a6b,_0x2aeaa7){return db[_0x90ea('0x2d')][_0x90ea('0x43')](_0x141a6b[_0x90ea('0x44')],{})[_0x90ea('0x25')](function(_0x5af7bc){var _0x39639d=_0x141a6b[_0x90ea('0x45')][_0x90ea('0x26')]({'plain':!![]});if(!_0x39639d)throw new Error(_0x90ea('0x46'));if(_0x39639d[_0x90ea('0x47')]==='user'){var _0xe5bbbe=_0x5af7bc[_0x90ea('0x26')]({'plain':!![]});var _0x3ffebe=_0x90ea('0x27');return db[_0x90ea('0x48')][_0x90ea('0x49')]({'where':{'name':_0x3ffebe,'userProfileId':_0x39639d['userProfileId']},'raw':!![]})[_0x90ea('0x25')](function(_0x589bca){if(_0x589bca&&_0x589bca[_0x90ea('0x4a')]===0x0){return db[_0x90ea('0x28')][_0x90ea('0x43')]({'name':_0xe5bbbe[_0x90ea('0x2b')],'resourceId':_0xe5bbbe['id'],'type':_0x589bca[_0x90ea('0x2b')],'sectionId':_0x589bca['id']},{})[_0x90ea('0x25')](function(){return _0x5af7bc;});}else{return _0x5af7bc;}})[_0x90ea('0x3f')](function(_0x495a3c){logger[_0x90ea('0x29')](_0x90ea('0x4b'),_0x495a3c);throw _0x495a3c;});}return _0x5af7bc;})[_0x90ea('0x25')](respondWithResult(_0x2aeaa7,0xc9))[_0x90ea('0x3f')](handleError(_0x2aeaa7,null));};exports[_0x90ea('0x23')]=function(_0x129c26,_0x11d404){if(_0x129c26[_0x90ea('0x44')]['id']){delete _0x129c26[_0x90ea('0x44')]['id'];}return db[_0x90ea('0x2d')][_0x90ea('0x49')]({'where':{'id':_0x129c26[_0x90ea('0x40')]['id']}})['then'](handleEntityNotFound(_0x11d404,null))[_0x90ea('0x25')](saveUpdates(_0x129c26['body'],null))[_0x90ea('0x25')](respondWithResult(_0x11d404,null))[_0x90ea('0x3f')](handleError(_0x11d404,null));};exports[_0x90ea('0x24')]=function(_0x22b874,_0x1c310b){return db[_0x90ea('0x2d')][_0x90ea('0x49')]({'where':{'id':_0x22b874[_0x90ea('0x40')]['id']}})[_0x90ea('0x25')](handleEntityNotFound(_0x1c310b,null))['then'](removeEntity(_0x1c310b,null))[_0x90ea('0x3f')](handleError(_0x1c310b,null));};exports['describe']=function(_0x3929c5,_0xf2334a){return db[_0x90ea('0x2d')][_0x90ea('0x2e')]()[_0x90ea('0x25')](respondWithResult(_0xf2334a,null))[_0x90ea('0x3f')](handleError(_0xf2334a,null));};exports['addContacts']=function(_0x474173,_0x4e6d2e,_0x4d99de){return db[_0x90ea('0x4c')][_0x90ea('0x49')]({'where':{'id':_0x474173[_0x90ea('0x40')]['id']}})['then'](handleEntityNotFound(_0x4e6d2e,null))[_0x90ea('0x25')](function(_0x4f2e1d){if(_0x4f2e1d){return _0x4f2e1d[_0x90ea('0x4d')](_0x474173['body'][_0x90ea('0x4e')],_[_0x90ea('0x4f')](_0x474173[_0x90ea('0x44')],[_0x90ea('0x4e'),'id'])||{});}})[_0x90ea('0x25')](respondWithResult(_0x4e6d2e,null))['catch'](handleError(_0x4e6d2e,null));};exports['getContacts']=function(_0x13070c,_0x4b7b88,_0x12ff65){var _0x47803f={};var _0x2f6f5f={};var _0x33826b;var _0x83fd17;return db[_0x90ea('0x2d')]['findOne']({'where':{'id':_0x13070c[_0x90ea('0x40')]['id']}})[_0x90ea('0x25')](handleEntityNotFound(_0x4b7b88,null))[_0x90ea('0x25')](function(_0x12a1bb){if(_0x12a1bb){_0x33826b=_0x12a1bb;_0x2f6f5f['model']=_[_0x90ea('0x30')](db[_0x90ea('0x4c')][_0x90ea('0x41')]);_0x2f6f5f[_0x90ea('0x31')]=_['keys'](_0x13070c[_0x90ea('0x31')]);_0x2f6f5f['filters']=_['intersection'](_0x2f6f5f[_0x90ea('0x2f')],_0x2f6f5f[_0x90ea('0x31')]);_0x47803f[_0x90ea('0x35')]=_[_0x90ea('0x33')](_0x2f6f5f[_0x90ea('0x2f')],qs[_0x90ea('0x34')](_0x13070c['query'][_0x90ea('0x34')]));_0x47803f[_0x90ea('0x35')]=_0x47803f[_0x90ea('0x35')][_0x90ea('0x36')]?_0x47803f[_0x90ea('0x35')]:_0x2f6f5f[_0x90ea('0x2f')];_0x47803f[_0x90ea('0x38')]=qs[_0x90ea('0x50')](_0x13070c[_0x90ea('0x31')][_0x90ea('0x50')]);_0x47803f['where']=qs['filters'](_[_0x90ea('0x51')](_0x13070c[_0x90ea('0x31')],_0x2f6f5f[_0x90ea('0x32')]));if(_0x13070c['query'][_0x90ea('0x3b')]){_0x47803f[_0x90ea('0x39')]=_[_0x90ea('0x3a')](_0x47803f[_0x90ea('0x39')],{'$or':_[_0x90ea('0x52')](_0x47803f[_0x90ea('0x35')],function(_0x2ceb8b){var _0x4f4c6d={};_0x4f4c6d[_0x2ceb8b]={'$like':'%'+_0x13070c[_0x90ea('0x31')][_0x90ea('0x3b')]+'%'};return _0x4f4c6d;})});}_0x47803f=_[_0x90ea('0x3a')]({},_0x47803f,_0x13070c['options']);return _0x33826b[_0x90ea('0x53')](_0x47803f);}})[_0x90ea('0x25')](function(_0x465ccd){if(_0x465ccd){_0x83fd17=_0x465ccd[_0x90ea('0x36')];if(!_0x13070c[_0x90ea('0x31')][_0x90ea('0x54')](_0x90ea('0x37'))){_0x47803f[_0x90ea('0x1e')]=qs['limit'](_0x13070c[_0x90ea('0x31')][_0x90ea('0x1e')]);_0x47803f['offset']=qs[_0x90ea('0x1c')](_0x13070c[_0x90ea('0x31')]['offset']);}return _0x33826b[_0x90ea('0x53')](_0x47803f);}})[_0x90ea('0x25')](function(_0x2ece3b){if(_0x2ece3b){return _0x2ece3b?{'count':_0x83fd17,'rows':_0x2ece3b}:null;}})[_0x90ea('0x25')](respondWithResult(_0x4b7b88,null))['catch'](handleError(_0x4b7b88,null));};
\ No newline at end of file
index 33ba893..35a2563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8694=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CmCompany','cm_companies','lodash'];(function(_0x3ff0d7,_0x4304bc){var _0x23351a=function(_0x287ad1){while(--_0x287ad1){_0x3ff0d7['push'](_0x3ff0d7['shift']());}};_0x23351a(++_0x4304bc);}(_0x8694,0x103));var _0x4869=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0x8694[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x4869('0x0'));var util=require('util');var logger=require(_0x4869('0x1'))(_0x4869('0x2'));var moment=require(_0x4869('0x3'));var BPromise=require(_0x4869('0x4'));var rp=require(_0x4869('0x5'));var fs=require('fs');var path=require(_0x4869('0x6'));var rimraf=require(_0x4869('0x7'));var config=require(_0x4869('0x8'));var attributes=require('./cmCompany.attributes');module[_0x4869('0x9')]=function(_0x193261,_0x14e2fa){return _0x193261[_0x4869('0xa')](_0x4869('0xb'),attributes,{'tableName':_0x4869('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa185=['../../config/environment','./cmCompany.attributes','define','lodash','util','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x441a5d,_0x13cb1f){var _0x5bc727=function(_0x554b58){while(--_0x554b58){_0x441a5d['push'](_0x441a5d['shift']());}};_0x5bc727(++_0x13cb1f);}(_0xa185,0x157));var _0x5a18=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xa185[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x5a18('0x0'));var util=require(_0x5a18('0x1'));var logger=require(_0x5a18('0x2'))(_0x5a18('0x3'));var moment=require(_0x5a18('0x4'));var BPromise=require('bluebird');var rp=require(_0x5a18('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5a18('0x6'));var config=require(_0x5a18('0x7'));var attributes=require(_0x5a18('0x8'));module['exports']=function(_0x2158f5,_0x2a0f31){return _0x2158f5[_0x5a18('0x9')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01ae9c9..f4c145d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da8=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','info','request\x20sent','error','code','CmCompany,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x489ea2,_0x3043b3){var _0x19128a=function(_0x3a0274){while(--_0x3a0274){_0x489ea2['push'](_0x489ea2['shift']());}};_0x19128a(++_0x3043b3);}(_0x7da8,0x64));var _0x87da=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x7da8[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x87da('0x0'));var util=require(_0x87da('0x1'));var moment=require(_0x87da('0x2'));var BPromise=require(_0x87da('0x3'));var rs=require(_0x87da('0x4'));var fs=require('fs');var Redis=require(_0x87da('0x5'));var db=require(_0x87da('0x6'))['db'];var utils=require(_0x87da('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x87da('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x87da('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3136ab,_0x122264,_0x140164){return new BPromise(function(_0x2436c0,_0x40a736){return client['request'](_0x3136ab,_0x140164)['then'](function(_0x4f9198){logger[_0x87da('0xa')]('CmCompany,\x20%s,\x20%s',_0x122264,_0x87da('0xb'));logger['debug']('CmCompany,\x20%s,\x20%s,\x20%s',_0x122264,_0x87da('0xb'),JSON['stringify'](_0x4f9198));if(_0x4f9198[_0x87da('0xc')]){if(_0x4f9198['error'][_0x87da('0xd')]===0x1f4){logger[_0x87da('0xc')](_0x87da('0xe'),_0x122264,_0x4f9198[_0x87da('0xc')][_0x87da('0xf')]);return _0x40a736(_0x4f9198[_0x87da('0xc')]['message']);}logger[_0x87da('0xc')](_0x87da('0xe'),_0x122264,_0x4f9198[_0x87da('0xc')][_0x87da('0xf')]);return _0x2436c0(_0x4f9198['error'][_0x87da('0xf')]);}else{logger['info'](_0x87da('0xe'),_0x122264,_0x87da('0xb'));_0x2436c0(_0x4f9198['result']['message']);}})[_0x87da('0x10')](function(_0x591a75){logger[_0x87da('0xc')](_0x87da('0xe'),_0x122264,_0x591a75);_0x40a736(_0x591a75);});});}
\ No newline at end of file
+var _0x7533=['message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','http','then','info','CmCompany,\x20%s,\x20%s','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0x7533,0x1bc));var _0x3753=function(_0x244bb8,_0xa7316){_0x244bb8=_0x244bb8-0x0;var _0x517f3d=_0x7533[_0x244bb8];return _0x517f3d;};'use strict';var _=require(_0x3753('0x0'));var util=require(_0x3753('0x1'));var moment=require(_0x3753('0x2'));var BPromise=require(_0x3753('0x3'));var rs=require(_0x3753('0x4'));var fs=require('fs');var Redis=require(_0x3753('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x3753('0x6'));var logger=require(_0x3753('0x7'))(_0x3753('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x3753('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x272571,_0x4a4a5c,_0x3a13a5){return new BPromise(function(_0x463c07,_0xdeaf81){return client['request'](_0x272571,_0x3a13a5)[_0x3753('0xa')](function(_0x51e1dc){logger[_0x3753('0xb')](_0x3753('0xc'),_0x4a4a5c,'request\x20sent');logger[_0x3753('0xd')](_0x3753('0xe'),_0x4a4a5c,'request\x20sent',JSON[_0x3753('0xf')](_0x51e1dc));if(_0x51e1dc['error']){if(_0x51e1dc[_0x3753('0x10')][_0x3753('0x11')]===0x1f4){logger[_0x3753('0x10')](_0x3753('0xc'),_0x4a4a5c,_0x51e1dc[_0x3753('0x10')][_0x3753('0x12')]);return _0xdeaf81(_0x51e1dc[_0x3753('0x10')]['message']);}logger[_0x3753('0x10')](_0x3753('0xc'),_0x4a4a5c,_0x51e1dc[_0x3753('0x10')][_0x3753('0x12')]);return _0x463c07(_0x51e1dc[_0x3753('0x10')][_0x3753('0x12')]);}else{logger[_0x3753('0xb')]('CmCompany,\x20%s,\x20%s',_0x4a4a5c,_0x3753('0x13'));_0x463c07(_0x51e1dc[_0x3753('0x14')][_0x3753('0x12')]);}})[_0x3753('0x15')](function(_0x5c5e03){logger['error'](_0x3753('0xc'),_0x4a4a5c,_0x5c5e03);_0xdeaf81(_0x5c5e03);});});}
\ No newline at end of file
index f2d2160..cc0712c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db6=['show','/:id/contacts','getContacts','create','post','addContacts','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x572328,_0x227ffe){var _0x5ca0c9=function(_0x41ad84){while(--_0x41ad84){_0x572328['push'](_0x572328['shift']());}};_0x5ca0c9(++_0x227ffe);}(_0x5db6,0x143));var _0x65db=function(_0x1ca761,_0x341ed6){_0x1ca761=_0x1ca761-0x0;var _0x25104e=_0x5db6[_0x1ca761];return _0x25104e;};'use strict';var multer=require(_0x65db('0x0'));var util=require(_0x65db('0x1'));var path=require(_0x65db('0x2'));var timeout=require('connect-timeout');var express=require(_0x65db('0x3'));var router=express[_0x65db('0x4')]();var fs_extra=require(_0x65db('0x5'));var auth=require(_0x65db('0x6'));var interaction=require(_0x65db('0x7'));var config=require(_0x65db('0x8'));var controller=require('./cmCompany.controller');router[_0x65db('0x9')]('/',auth[_0x65db('0xa')](),controller[_0x65db('0xb')]);router['get'](_0x65db('0xc'),auth[_0x65db('0xa')](),controller[_0x65db('0xd')]);router[_0x65db('0x9')](_0x65db('0xe'),auth[_0x65db('0xa')](),controller[_0x65db('0xf')]);router['get'](_0x65db('0x10'),auth['isAuthenticated'](),controller[_0x65db('0x11')]);router['post']('/',auth[_0x65db('0xa')](),controller[_0x65db('0x12')]);router[_0x65db('0x13')](_0x65db('0x10'),auth[_0x65db('0xa')](),controller[_0x65db('0x14')]);router[_0x65db('0x15')](_0x65db('0xe'),auth['isAuthenticated'](),controller[_0x65db('0x16')]);router[_0x65db('0x17')]('/:id',auth[_0x65db('0xa')](),controller[_0x65db('0x18')]);module[_0x65db('0x19')]=router;
\ No newline at end of file
+var _0xe634=['index','/describe','describe','/:id','getContacts','post','create','addContacts','put','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated'];(function(_0x268800,_0x5cb126){var _0x26d1cd=function(_0x6ec6a9){while(--_0x6ec6a9){_0x268800['push'](_0x268800['shift']());}};_0x26d1cd(++_0x5cb126);}(_0xe634,0xf1));var _0x4e63=function(_0xfe9d92,_0x4b7ef2){_0xfe9d92=_0xfe9d92-0x0;var _0x16b931=_0xe634[_0xfe9d92];return _0x16b931;};'use strict';var multer=require(_0x4e63('0x0'));var util=require(_0x4e63('0x1'));var path=require(_0x4e63('0x2'));var timeout=require(_0x4e63('0x3'));var express=require(_0x4e63('0x4'));var router=express[_0x4e63('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4e63('0x6'));var interaction=require(_0x4e63('0x7'));var config=require(_0x4e63('0x8'));var controller=require(_0x4e63('0x9'));router[_0x4e63('0xa')]('/',auth[_0x4e63('0xb')](),controller[_0x4e63('0xc')]);router['get'](_0x4e63('0xd'),auth[_0x4e63('0xb')](),controller[_0x4e63('0xe')]);router[_0x4e63('0xa')](_0x4e63('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x4e63('0xa')]('/:id/contacts',auth[_0x4e63('0xb')](),controller[_0x4e63('0x10')]);router[_0x4e63('0x11')]('/',auth['isAuthenticated'](),controller[_0x4e63('0x12')]);router[_0x4e63('0x11')]('/:id/contacts',auth[_0x4e63('0xb')](),controller[_0x4e63('0x13')]);router[_0x4e63('0x14')](_0x4e63('0xf'),auth[_0x4e63('0xb')](),controller[_0x4e63('0x15')]);router['delete'](_0x4e63('0xf'),auth[_0x4e63('0xb')](),controller['destroy']);module[_0x4e63('0x16')]=router;
\ No newline at end of file
index 85af5b0..7fc1caf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce08=['UNSIGNED','DATE','NOW','lodash','sequelize','exports','STRING','INTEGER'];(function(_0x2b9204,_0xa1ffa8){var _0x40e54e=function(_0x12035f){while(--_0x12035f){_0x2b9204['push'](_0x2b9204['shift']());}};_0x40e54e(++_0xa1ffa8);}(_0xce08,0x153));var _0x8ce0=function(_0x2e8ff9,_0x45b259){_0x2e8ff9=_0x2e8ff9-0x0;var _0xe69be6=_0xce08[_0x2e8ff9];return _0xe69be6;};'use strict';var _=require(_0x8ce0('0x0'));var Sequelize=require(_0x8ce0('0x1'));module[_0x8ce0('0x2')]={'firstName':{'type':Sequelize[_0x8ce0('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x8ce0('0x3')]},'street':{'type':Sequelize[_0x8ce0('0x3')]},'postalCode':{'type':Sequelize[_0x8ce0('0x3')]},'city':{'type':Sequelize[_0x8ce0('0x3')]},'country':{'type':Sequelize[_0x8ce0('0x3')]},'dateOfBirth':{'type':Sequelize[_0x8ce0('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x8ce0('0x3')]},'mobile':{'type':Sequelize[_0x8ce0('0x3')]},'fax':{'type':Sequelize[_0x8ce0('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x8ce0('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x8ce0('0x3')]},'teams':{'type':Sequelize[_0x8ce0('0x3')]},'viber':{'type':Sequelize[_0x8ce0('0x3')]},'line':{'type':Sequelize[_0x8ce0('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x8ce0('0x3')]},'UserId':{'type':Sequelize[_0x8ce0('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x8ce0('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x8ce0('0x6')],'defaultValue':Sequelize[_0x8ce0('0x7')]}};
\ No newline at end of file
+var _0x7179=['lodash','sequelize','exports','STRING','INTEGER','UNSIGNED','DATE','NOW'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x7179,0x68));var _0x9717=function(_0x2e074e,_0x450437){_0x2e074e=_0x2e074e-0x0;var _0x79d8c9=_0x7179[_0x2e074e];return _0x79d8c9;};'use strict';var _=require(_0x9717('0x0'));var Sequelize=require(_0x9717('0x1'));module[_0x9717('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize[_0x9717('0x3')]},'street':{'type':Sequelize[_0x9717('0x3')]},'postalCode':{'type':Sequelize[_0x9717('0x3')]},'city':{'type':Sequelize[_0x9717('0x3')]},'country':{'type':Sequelize[_0x9717('0x3')]},'dateOfBirth':{'type':Sequelize[_0x9717('0x3')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0x9717('0x3')]},'mobile':{'type':Sequelize[_0x9717('0x3')]},'fax':{'type':Sequelize[_0x9717('0x3')]},'email':{'type':Sequelize[_0x9717('0x3')]},'url':{'type':Sequelize[_0x9717('0x3')]},'facebook':{'type':Sequelize[_0x9717('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0x9717('0x3')]},'skype':{'type':Sequelize[_0x9717('0x3')]},'teams':{'type':Sequelize[_0x9717('0x3')]},'viber':{'type':Sequelize[_0x9717('0x3')]},'line':{'type':Sequelize[_0x9717('0x3')]},'wechat':{'type':Sequelize[_0x9717('0x3')]},'telegram':{'type':Sequelize[_0x9717('0x3')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0x9717('0x4')](0x2)[_0x9717('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x9717('0x6')],'defaultValue':Sequelize[_0x9717('0x7')]}};
\ No newline at end of file
index 4440893..37210b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e0a=['deviceModel','osName','ratingType','ratingValue','referer','subject','substatus','openchannel','externalUrl','flatten','reverse','slice','moment','bluebird','util','path','lodash','squel','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','json','limit','undefined','count','offset','set','Content-Range','update','then','destroy','error','send','CmContact','describe','keys','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','length','fieldType','type','model','query','intersection','attributes','fields','order','sort','where','filters','pick','select','field','name','color','from','cm_contacts','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','tools_tags','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','conditions','Tag','value','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','buildExpression','text','end','map','filter','isNil','Contact','isEmpty','ListId','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','QueryTypes','SELECT','c.id','DESC','having','t.id\x20IN\x20?','resolve','role','agent','user','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.mobile','c.fax','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','catch','find','tags','columnName','displayName','analytics','findAll','alias','custom','hasOwnProperty','body','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','WhatsappMessage','join','bulkCreate','duplicates','findOrCreate','spread','show','params','get','$and','omit','format','cf_%d','pickBy','setFields','id\x20=\x20?','toParam','phone','CmHopper','getTags','rawAttributes','options','setTags','ids','getHoppers','ContactId','include','nolimit','includeAll','rows','getHopperFinals','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','No\x20phone\x20column\x20specified','firstName','server/files/tmp','file','filename','chmodSync','child_process','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','parse','import','binding','fork','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','fax','whatsapp','voice','-createdAt','includes','channel','toLowerCase','Invalid\x20channel','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20createdAt\x20filter','uniqueid','source','destination','callerid','starttime','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','fullname','Website','closed','closedAt','disposition','secondDisposition','thirdDisposition','UserId','Account','key','Owner','browserName','customerIp','customerPort'];(function(_0x4a4871,_0x5afac8){var _0x1aa1e9=function(_0x31d6f8){while(--_0x31d6f8){_0x4a4871['push'](_0x4a4871['shift']());}};_0x1aa1e9(++_0x5afac8);}(_0x4e0a,0x127));var _0xa4e0=function(_0x491faa,_0x4f2907){_0x491faa=_0x491faa-0x0;var _0x414440=_0x4e0a[_0x491faa];return _0x414440;};'use strict';var moment=require(_0xa4e0('0x0'));var BPromise=require(_0xa4e0('0x1'));var util=require(_0xa4e0('0x2'));var path=require(_0xa4e0('0x3'));var fs=require('fs');var _=require(_0xa4e0('0x4'));var squel=require(_0xa4e0('0x5'));var Papa=require(_0xa4e0('0x6'));var Redis=require(_0xa4e0('0x7'));var qs=require('../../components/parsers/qs');var as=require(_0xa4e0('0x8'));var logger=require(_0xa4e0('0x9'))(_0xa4e0('0xa'));var config=require(_0xa4e0('0xb'));var db=require(_0xa4e0('0xc'))['db'];config[_0xa4e0('0xd')]=_[_0xa4e0('0xe')](config[_0xa4e0('0xd')],{'host':_0xa4e0('0xf'),'port':0x18eb});var socket=require(_0xa4e0('0x10'))(new Redis(config[_0xa4e0('0xd')]));require(_0xa4e0('0x11'))[_0xa4e0('0x12')](socket);function respondWithResult(_0x4c24e9,_0x398e52){_0x398e52=_0x398e52||0xc8;return function(_0x19400b){if(_0x19400b){return _0x4c24e9[_0xa4e0('0x13')](_0x398e52)[_0xa4e0('0x14')](_0x19400b);}};}function respondWithFilteredResult(_0x22b515,_0xb3405){return function(_0x22fefd){if(_0x22fefd){var _0x86706c=typeof _0xb3405['offset']==='undefined'&&typeof _0xb3405[_0xa4e0('0x15')]===_0xa4e0('0x16');var _0x1d2289=_0x22fefd[_0xa4e0('0x17')];var _0x4c0e58=_0x86706c?0x0:_0xb3405[_0xa4e0('0x18')];var _0xb64d93=_0x86706c?_0x22fefd[_0xa4e0('0x17')]:_0xb3405[_0xa4e0('0x18')]+_0xb3405[_0xa4e0('0x15')];var _0x3f0be6;if(_0xb64d93>=_0x1d2289){_0xb64d93=_0x1d2289;_0x3f0be6=0xc8;}else{_0x3f0be6=0xce;}_0x22b515[_0xa4e0('0x13')](_0x3f0be6);return _0x22b515[_0xa4e0('0x19')](_0xa4e0('0x1a'),_0x4c0e58+'-'+_0xb64d93+'/'+_0x1d2289)[_0xa4e0('0x14')](_0x22fefd);}return null;};}function saveUpdates(_0x545158){return function(_0x197706){if(_0x197706){return _0x197706[_0xa4e0('0x1b')](_0x545158)[_0xa4e0('0x1c')](function(_0x3c5d36){return _0x3c5d36;});}return null;};}function removeEntity(_0x215ba1){return function(_0x3c476d){if(_0x3c476d){return _0x3c476d[_0xa4e0('0x1d')]()[_0xa4e0('0x1c')](function(){_0x215ba1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x36889c){return function(_0x4f23eb){if(!_0x4f23eb){_0x36889c['sendStatus'](0x194);}return _0x4f23eb;};}function handleError(_0x3ea12b,_0xe9e28d){_0xe9e28d=_0xe9e28d||0x1f4;return function(_0x43690c){logger[_0xa4e0('0x1e')](_0x43690c['stack']);if(_0x43690c['name']){delete _0x43690c['name'];}_0x3ea12b[_0xa4e0('0x13')](_0xe9e28d)[_0xa4e0('0x1f')](_0x43690c);};}exports['index']=function(_0x5627f0,_0x16101f){var _0x155589={},_0x17dafe={},_0x3db3c9={'count':0x0,'rows':[]};return db[_0xa4e0('0x20')][_0xa4e0('0x21')]()[_0xa4e0('0x1c')](function(_0x3088b0){var _0x1f5441=[];for(var _0x57d27=0x0;_0x57d27<Object[_0xa4e0('0x22')](_0x3088b0)['length'];_0x57d27++){var _0x2ef866=Object[_0xa4e0('0x22')](_0x3088b0)[_0x57d27];if(_[_0xa4e0('0x23')](_0x2ef866,_0xa4e0('0x24'))){_0x1f5441[_0xa4e0('0x25')](db[_0xa4e0('0x26')][_0xa4e0('0x27')]({'where':{'id':_[_0xa4e0('0x28')](_0x2ef866,_0xa4e0('0x24'))},'raw':!![]}));}}return BPromise[_0xa4e0('0x29')](_0x1f5441)[_0xa4e0('0x1c')](function(_0x30977a){for(var _0x2be05c=0x0;_0x2be05c<_0x30977a[_0xa4e0('0x2a')];_0x2be05c++){if(_0x30977a[_0x2be05c]){var _0x4e5d56=_0xa4e0('0x24')+_0x30977a[_0x2be05c]['id'];var _0x3e3e1e=_0x3088b0[_0x4e5d56];_0x3e3e1e[_0xa4e0('0x2b')]=_0x30977a[_0x2be05c][_0xa4e0('0x2c')];}}return _0x3088b0;});})[_0xa4e0('0x1c')](function(_0xae52bd){_0x17dafe[_0xa4e0('0x2d')]=_['keys'](_0xae52bd);_0x17dafe[_0xa4e0('0x2e')]=_[_0xa4e0('0x22')](_0x5627f0['query']);_0x17dafe['filters']=_[_0xa4e0('0x2f')](_0x17dafe['model'],_0x17dafe[_0xa4e0('0x2e')]);_0x155589[_0xa4e0('0x30')]=_['intersection'](_0x17dafe[_0xa4e0('0x2d')],qs['fields'](_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x31')]));_0x155589[_0xa4e0('0x30')]=_0x155589[_0xa4e0('0x30')][_0xa4e0('0x2a')]?_0x155589[_0xa4e0('0x30')]:_0x17dafe[_0xa4e0('0x2d')];if(!_0x5627f0[_0xa4e0('0x2e')]['hasOwnProperty']('nolimit')){_0x155589[_0xa4e0('0x15')]=qs['limit'](_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x15')]);_0x155589[_0xa4e0('0x18')]=qs[_0xa4e0('0x18')](_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x18')]);}_0x155589[_0xa4e0('0x32')]=qs[_0xa4e0('0x33')](_0x5627f0[_0xa4e0('0x2e')]['sort']);_0x155589[_0xa4e0('0x34')]=qs[_0xa4e0('0x35')](_[_0xa4e0('0x36')](_0x5627f0[_0xa4e0('0x2e')],_0x17dafe[_0xa4e0('0x35')]),_0xae52bd);var _0x252f71=[];var _0x37ec79=squel[_0xa4e0('0x37')]()[_0xa4e0('0x38')]('id')[_0xa4e0('0x38')](_0xa4e0('0x39'))[_0xa4e0('0x38')](_0xa4e0('0x3a'))[_0xa4e0('0x3b')]('tools_tags');var _0x4e5a1d=squel[_0xa4e0('0x37')]()[_0xa4e0('0x3b')](_0xa4e0('0x3c'),'c')[_0xa4e0('0x3d')]('cm_user_has_contacts','uc',_0xa4e0('0x3e'))[_0xa4e0('0x3d')](_0xa4e0('0x3f'),'ct',_0xa4e0('0x40'))[_0xa4e0('0x3d')](_0xa4e0('0x41'),'t',_0xa4e0('0x42'))['where'](_0xa4e0('0x43'));var _0x1c2438=squel[_0xa4e0('0x44')]();var _0x2aa5b3=[];var _0x5eb43c=squel[_0xa4e0('0x44')]();var _0x3d44f2;if(_0x5627f0['query'][_0xa4e0('0x45')]){_0x3d44f2=as[_0xa4e0('0x46')](_0x5627f0[_0xa4e0('0x2e')]['search']);var _0x38593f=_0x3d44f2['sqlOperator'];for(var _0x289e4a=0x0;_0x289e4a<_0x3d44f2['conditions'][_0xa4e0('0x2a')];_0x289e4a++){var _0x306d0a=_0x3d44f2[_0xa4e0('0x47')][_0x289e4a];var _0x11ef2b='c';var _0x588c4d=_(_0xae52bd)[_0xa4e0('0x22')]()['find'](function(_0x16cbb7){return _0x16cbb7===_0x306d0a[_0xa4e0('0x38')];});if(_0x588c4d)_0x588c4d=_0xae52bd[_0x306d0a[_0xa4e0('0x38')]];if(!_0x588c4d){if(_0x306d0a[_0xa4e0('0x38')]===_0xa4e0('0x48')){var _0x1ff113=_0x306d0a[_0xa4e0('0x49')][_0xa4e0('0x4a')](',')['map'](function(_0x250a22){return Number(_0x250a22);});_0x1ff113[_0xa4e0('0x4b')](function(_0x150574){_0x5eb43c['or'](_0xa4e0('0x4c'),'%,'+_0x150574+',%');});_0x2aa5b3=_[_0xa4e0('0x4d')](_0x2aa5b3,_0x1ff113);}else if(_0x306d0a[_0xa4e0('0x38')]===_0xa4e0('0x4e')){_0x1c2438['and'](_0xa4e0('0x4f'),_0x306d0a['value']);}}else{if(_0x306d0a[_0xa4e0('0x38')]===_0xa4e0('0x50')||_0x588c4d[_0xa4e0('0x2b')]===_0xa4e0('0x51'))_0x306d0a[_0xa4e0('0x52')]=_0xa4e0('0x53');var _0x1b32e0=as[_0xa4e0('0x54')](_0x11ef2b,_0x588c4d[_0xa4e0('0x2c')],_0x306d0a);_0x1c2438[_0x38593f](_0x1b32e0[_0xa4e0('0x55')],_0x1b32e0[_0xa4e0('0x49')]['start'],_0x1b32e0['value'][_0xa4e0('0x56')]);}}}else{var _0x1f369d=_(Object[_0xa4e0('0x22')](_0x5627f0[_0xa4e0('0x2e')]))[_0xa4e0('0x57')](function(_0x3db7a4){return _0xae52bd['hasOwnProperty'](_0x3db7a4)?_0x3db7a4:undefined;})[_0xa4e0('0x58')](function(_0x4bc794){return!_[_0xa4e0('0x59')](_0x4bc794);})[_0xa4e0('0x49')]();if(_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x5a')])_0x1f369d[_0xa4e0('0x25')](_0xa4e0('0x5a'));if(!_[_0xa4e0('0x5b')](_0x1f369d)){_0x1f369d['forEach'](function(_0x36c6b6){if(_0x36c6b6===_0xa4e0('0x5c')){_0x4e5a1d['where']('c.ListId\x20IN\x20?',[][_0xa4e0('0x5d')](_0x5627f0[_0xa4e0('0x2e')][_0x36c6b6]));}else if(_0x36c6b6===_0xa4e0('0x5a')){var _0x708787='%'+_0x5627f0[_0xa4e0('0x2e')][_0x36c6b6]+'%';_0x4e5a1d[_0xa4e0('0x34')](_0xa4e0('0x5e'),_0x708787);}else{_0x4e5a1d[_0xa4e0('0x34')]('c.'+_0x36c6b6+_0xa4e0('0x5f'),_0x5627f0[_0xa4e0('0x2e')][_0x36c6b6]);}});}if(_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x60')]){_0x2aa5b3=_[_0xa4e0('0x61')](_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x60')])?_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x60')]:new Array(_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x60')]);_0x2aa5b3[_0xa4e0('0x4b')](function(_0x1a315d){_0x5eb43c['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1a315d+',%');});}if(_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x58')]){var _0x3e8aaa=_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x58')][_0xa4e0('0x62')]('\x5c','\x5c\x5c')[_0xa4e0('0x62')](/'/g,'\x27\x27');if(_0x3e8aaa[_0xa4e0('0x4a')]('\x20')['length']>0x1){_0x1c2438['or'](_0xa4e0('0x63'),qs['getFullTextValue'](_0x3e8aaa),null);}else{if(qs[_0xa4e0('0x64')](_0x3e8aaa)){_0x1c2438['or'](_0xa4e0('0x65'),_0x3e8aaa+'%');_0x1c2438['or']('c.phone\x20LIKE\x20?',_0x3e8aaa+'%');_0x1c2438['or']('c.mobile\x20LIKE\x20?',_0x3e8aaa+'%');_0x1c2438['or'](_0xa4e0('0x66'),_0x3e8aaa+'%');}else if(qs[_0xa4e0('0x67')](_0x3e8aaa)){_0x1c2438['or'](_0xa4e0('0x68'),_0x3e8aaa+'%');}else{_0x1c2438['or'](_0xa4e0('0x69'),'%'+_0x3e8aaa+'%');_0x1c2438['or'](_0xa4e0('0x6a'),'%'+_0x3e8aaa+'%');_0x1c2438['or'](_0xa4e0('0x68'),'%'+_0x3e8aaa+'%');}}}}_0x4e5a1d['where'](_0x1c2438);_0x4e5a1d['group']('c.id');var _0x5bf4f6={'type':db['Sequelize'][_0xa4e0('0x6b')][_0xa4e0('0x6c')],'raw':!![]};var _0x1fece1=_0x4e5a1d['clone']()[_0xa4e0('0x38')](_0xa4e0('0x6d'));if(_0x155589[_0xa4e0('0x32')]){_0x155589[_0xa4e0('0x32')]['forEach'](function(_0x22fe29){_0x4e5a1d['order']('c.'+_0x22fe29[0x0],_0x22fe29[0x1]===_0xa4e0('0x6e')?![]:!![]);});}if(!_[_0xa4e0('0x5b')](_0x2aa5b3)){_0x4e5a1d[_0xa4e0('0x6f')](_0x5eb43c);_0x1fece1['where'](_0xa4e0('0x70'),_0x2aa5b3);}BPromise[_0xa4e0('0x71')]()['then'](function(){if(!_0x3d44f2)return;if(_0x5627f0['user'][_0xa4e0('0x72')]!==_0xa4e0('0x73'))return;if(!_['some'](_0x3d44f2[_0xa4e0('0x47')],[_0xa4e0('0x38'),_0xa4e0('0x4e')])){return _0x5627f0[_0xa4e0('0x74')][_0xa4e0('0x75')]({'attributes':['id'],'raw':!![]})[_0xa4e0('0x1c')](function(_0x233b6c){if(_[_0xa4e0('0x5b')](_0x233b6c)){_0x1fece1[_0xa4e0('0x34')](_0xa4e0('0x76'));_0x4e5a1d['where'](_0xa4e0('0x76'));}else{_0x1fece1[_0xa4e0('0x34')](_0xa4e0('0x77'),_[_0xa4e0('0x57')](_0x233b6c,'id'));_0x4e5a1d[_0xa4e0('0x34')]('c.ListId\x20IN\x20?',_[_0xa4e0('0x57')](_0x233b6c,'id'));}});}})['then'](function(){if(_0x5627f0[_0xa4e0('0x74')][_0xa4e0('0x72')]==='agent'&&!_0x3d44f2&&!_0x5627f0[_0xa4e0('0x2e')][_0xa4e0('0x5c')])return[];return db[_0xa4e0('0x78')][_0xa4e0('0x2e')](_0x1fece1[_0xa4e0('0x79')](),_0x5bf4f6);})[_0xa4e0('0x1c')](function(_0xf380e6){_0x3db3c9[_0xa4e0('0x17')]=_0xf380e6[_0xa4e0('0x2a')];if(_0x3db3c9[_0xa4e0('0x17')]===0x0)return[];return db[_0xa4e0('0x78')][_0xa4e0('0x2e')](_0x37ec79[_0xa4e0('0x79')](),_0x5bf4f6)[_0xa4e0('0x1c')](function(_0x109d15){_0x252f71=_[_0xa4e0('0x7a')](_0x109d15,'id');_0x5bf4f6=_[_0xa4e0('0x7b')](_0x5bf4f6,{'model':db[_0xa4e0('0x20')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5627f0['query'][_0xa4e0('0x31')]){_0x155589['attributes'][_0xa4e0('0x4b')](function(_0x98eaed){_0x4e5a1d['field']('c.'+_0x98eaed);});}else{_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x6d'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x7c'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x7d'));_0x4e5a1d[_0xa4e0('0x38')]('c.phone');_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x7e'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x7f'));_0x4e5a1d['field']('c.email');_0x4e5a1d['field'](_0xa4e0('0x80'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x81'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x82'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x83'));_0x4e5a1d[_0xa4e0('0x38')](_0xa4e0('0x84'),'TagIds');}if(_0x155589[_0xa4e0('0x15')])_0x4e5a1d[_0xa4e0('0x15')](_0x155589[_0xa4e0('0x15')]);if(_0x155589[_0xa4e0('0x18')])_0x4e5a1d[_0xa4e0('0x18')](_0x155589[_0xa4e0('0x18')]);return db[_0xa4e0('0x78')][_0xa4e0('0x2e')](_0x4e5a1d[_0xa4e0('0x79')](),_0x5bf4f6);});})[_0xa4e0('0x1c')](function(_0xebcf4b){_0xebcf4b['forEach'](function(_0x2c5209){if(_0x2c5209[_0xa4e0('0x85')]){_0x2c5209[_0xa4e0('0x86')]=[];_0x2c5209[_0xa4e0('0x85')][_0xa4e0('0x4a')](',')[_0xa4e0('0x4b')](function(_0x4f5aec){_0x2c5209[_0xa4e0('0x86')]['push'](_0x252f71[_0x4f5aec]);});}delete _0x2c5209[_0xa4e0('0x85')];});_0x3db3c9['rows']=_0xebcf4b;return _0x3db3c9;})[_0xa4e0('0x1c')](respondWithFilteredResult(_0x16101f,_0x155589));})[_0xa4e0('0x87')](handleError(_0x16101f,null));};exports['destroy']=function(_0x3da01b,_0x47059b){return db['CmContact'][_0xa4e0('0x88')]({'where':{'id':_0x3da01b['params']['id']}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x47059b,null))[_0xa4e0('0x1c')](removeEntity(_0x47059b,null))[_0xa4e0('0x87')](handleError(_0x47059b,null));};exports['describe']=function(_0x2beea4,_0x183006){return db[_0xa4e0('0x20')][_0xa4e0('0x21')]()[_0xa4e0('0x1c')](function(_0x2710c1){delete _0x2710c1[_0xa4e0('0x89')];for(var _0x47af03=0x0;_0x47af03<Object['keys'](_0x2710c1)[_0xa4e0('0x2a')];_0x47af03++){var _0x5f4418=Object[_0xa4e0('0x22')](_0x2710c1)[_0x47af03];if(!_[_0xa4e0('0x23')](_0x5f4418,_0xa4e0('0x24'))){_0x2710c1[_0x5f4418][_0xa4e0('0x8a')]=_0x5f4418;_0x2710c1[_0x5f4418][_0xa4e0('0x8b')]=_0x5f4418;}}return _0x2710c1;})[_0xa4e0('0x1c')](function(_0xd2da89){var _0x23b74a={'where':Boolean(_0x2beea4['query'][_0xa4e0('0x8c')])===!![]?undefined:{'$or':[{'ListId':_0x2beea4[_0xa4e0('0x2e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xa4e0('0x26')][_0xa4e0('0x8d')](_0x23b74a)['then'](function(_0x31f098){for(var _0x2ea0e3=0x0;_0x2ea0e3<_0x31f098[_0xa4e0('0x2a')];_0x2ea0e3++){var _0xcfc773=_0xa4e0('0x24')+_0x31f098[_0x2ea0e3]['id'];_0xd2da89[_0xcfc773]['columnName']=_0xcfc773;_0xd2da89[_0xcfc773][_0xa4e0('0x8b')]=_0x31f098[_0x2ea0e3][_0xa4e0('0x8e')];_0xd2da89[_0xcfc773][_0xa4e0('0x8f')]={'type':_0x31f098[_0x2ea0e3]['type'],'values':_0x31f098[_0x2ea0e3]['values']};}Object[_0xa4e0('0x22')](_0xd2da89)[_0xa4e0('0x4b')](function(_0x379140){if(!_0xd2da89[_0x379140][_0xa4e0('0x90')](_0xa4e0('0x8a'))){delete _0xd2da89[_0x379140];}});return _0xd2da89;});})[_0xa4e0('0x1c')](respondWithResult(_0x183006,null))[_0xa4e0('0x87')](handleError(_0x183006,null));};exports['merge']=function(_0x3e4779,_0x3aeb03){var _0x86b3ab;var _0x10e348;var _0x237a96;if(_0x3e4779['body']['id']){delete _0x3e4779[_0xa4e0('0x91')]['id'];}return db[_0xa4e0('0x20')][_0xa4e0('0x8d')]({'where':{'id':[_0x3e4779[_0xa4e0('0x91')]['to'],_0x3e4779[_0xa4e0('0x91')]['from']]}})[_0xa4e0('0x1c')](function(_0x5290eb){if(_0x5290eb){if(_0x5290eb[_0xa4e0('0x2a')]!==0x2){return null;}_0x5290eb[0x0]=_0x5290eb[0x0]['get']({'plain':!![]});_0x5290eb[0x1]=_0x5290eb[0x1]['get']({'plain':!![]});delete _0x5290eb[0x0]['id'];delete _0x5290eb[0x1]['id'];return _['mergeWith'](_0x5290eb[0x0],_0x5290eb[0x1],function(_0x2b264e,_0xaad077){if(Array[_0xa4e0('0x61')](_0xaad077)&&!_0xaad077[_0xa4e0('0x2a')]){return _0x2b264e;}else if(!_0xaad077){return _0x2b264e;}});}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x3aeb03,null))['then'](function(_0x41cf59){if(_0x41cf59){if(_0x41cf59[_0xa4e0('0x89')]&&_[_0xa4e0('0x61')](_0x41cf59[_0xa4e0('0x89')])){_0x41cf59[_0xa4e0('0x89')]=_0x41cf59[_0xa4e0('0x89')]['join']();}logger[_0xa4e0('0x92')](_0xa4e0('0x93'),_0x3e4779[_0xa4e0('0x91')]['to'],_0x3e4779[_0xa4e0('0x91')][_0xa4e0('0x3b')]);return db['CmHopper']['destroy']({'where':{'ContactId':[_0x3e4779[_0xa4e0('0x91')]['to'],_0x3e4779['body'][_0xa4e0('0x3b')]]}})[_0xa4e0('0x1c')](function(_0x1d0457){logger['info']('[CmContact][merge][destroy][CmHopper],\x20%s',_0x1d0457);return db[_0xa4e0('0x94')][_0xa4e0('0x1d')]({'where':{'ContactId':[_0x3e4779[_0xa4e0('0x91')]['to'],_0x3e4779[_0xa4e0('0x91')][_0xa4e0('0x3b')]]}})[_0xa4e0('0x1c')](function(_0x350c4f){logger[_0xa4e0('0x92')](_0xa4e0('0x95'),_0x350c4f);return db['CmContact'][_0xa4e0('0x96')](_0x41cf59);});});}})[_0xa4e0('0x1c')](function(_0x3ab921){if(_0x3ab921){_0x86b3ab=_0x3ab921;_0x10e348={'ContactId':_0x86b3ab['id']};_0x237a96={'where':{'ContactId':[_0x3e4779[_0xa4e0('0x91')]['to'],_0x3e4779[_0xa4e0('0x91')]['from']]}};return db['ChatInteraction'][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x97')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x98')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x99')]['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db['MailMessage'][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x99')]['update'](_0x10e348,_0x237a96);}})['then'](function(){if(_0x86b3ab){return db[_0xa4e0('0x9a')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x9b')]['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x9c')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})['then'](function(){if(_0x86b3ab){return db[_0xa4e0('0x9d')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x9e')]['update'](_0x10e348,_0x237a96);}})['then'](function(){if(_0x86b3ab){return db[_0xa4e0('0x9f')]['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0xa0')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})['then'](function(){if(_0x86b3ab){return db[_0xa4e0('0xa1')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0xa2')]['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0xa3')]['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0xa4')]['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0xa5')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})['then'](function(){if(_0x86b3ab){return db[_0xa4e0('0xa6')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0xa7')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db['OpenchannelQueueReport'][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db['SmsQueueReport']['update'](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db['JscriptySessionReport'][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db['WhatsappInteraction'][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})['then'](function(){if(_0x86b3ab){return db[_0xa4e0('0xa8')][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db['WhatsappQueueReport'][_0xa4e0('0x1b')](_0x10e348,_0x237a96);}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return db[_0xa4e0('0x20')][_0xa4e0('0x1d')]({'where':{'id':[_0x3e4779[_0xa4e0('0x91')]['to'],_0x3e4779[_0xa4e0('0x91')][_0xa4e0('0x3b')]]}});}})[_0xa4e0('0x1c')](function(){if(_0x86b3ab){return _0x86b3ab;}})[_0xa4e0('0x1c')](respondWithResult(_0x3aeb03,null))[_0xa4e0('0x87')](handleError(_0x3aeb03,null));};exports[_0xa4e0('0x96')]=function(_0x2c82b8,_0x1ab4ec){return db[_0xa4e0('0x20')][_0xa4e0('0x21')]()['then'](function(_0x394a4d){if(_0x2c82b8[_0xa4e0('0x91')]['tags']&&_[_0xa4e0('0x61')](_0x2c82b8[_0xa4e0('0x91')][_0xa4e0('0x89')])){if(_0x2c82b8[_0xa4e0('0x91')][_0xa4e0('0x89')][_0xa4e0('0x2a')]){_0x2c82b8[_0xa4e0('0x91')][_0xa4e0('0x89')]=_0x2c82b8['body'][_0xa4e0('0x89')][_0xa4e0('0xa9')](';')+';';}else{_0x2c82b8['body'][_0xa4e0('0x89')]=null;}}else{_0x2c82b8[_0xa4e0('0x91')][_0xa4e0('0x89')]=null;}return db[_0xa4e0('0x20')][_0xa4e0('0x96')](_0x2c82b8[_0xa4e0('0x91')],{'fields':_[_0xa4e0('0x22')](_0x394a4d),'raw':!![]});})[_0xa4e0('0x1c')](respondWithResult(_0x1ab4ec,0xc9))[_0xa4e0('0x87')](handleError(_0x1ab4ec,null));};exports[_0xa4e0('0xaa')]=function(_0x7472ae,_0x36d787){var _0x92a60d=0x0;var _0x339434=0x0;var _0x44ac63=0x0;return db['CmContact'][_0xa4e0('0x21')]()['then'](function(_0x4a89a9){return BPromise['each'](_0x7472ae['body'],function(_0x5d9209){var _0x52123a={'where':{'$or':[]},'defaults':_0x5d9209,'fields':_[_0xa4e0('0x22')](_0x4a89a9),'raw':!![]};if(_0x5d9209[_0xa4e0('0xab')]){for(var _0x2e5322=0x0;_0x2e5322<_0x5d9209[_0xa4e0('0xab')][_0xa4e0('0x2a')];_0x2e5322++){var _0x5f552e={};_0x5f552e[_0x5d9209['duplicates'][_0x2e5322]]=_0x5d9209[_0x5d9209[_0xa4e0('0xab')][_0x2e5322]];_0x52123a[_0xa4e0('0x34')]['$or'][_0xa4e0('0x25')](_0x5f552e);}_0x52123a['where']['ListId']=_0x5d9209['ListId'];}return db[_0xa4e0('0x20')][_0xa4e0('0xac')](_0x52123a)[_0xa4e0('0xad')](function(_0x500384,_0x432f08){if(_0x432f08){_0x92a60d++;}else{_0x44ac63++;}})[_0xa4e0('0x87')](function(){_0x339434++;});});})[_0xa4e0('0x1c')](function(_0x309a06){if(_0x309a06){return{'success':_0x92a60d,'failure':_0x339434,'duplicates':_0x44ac63};}})[_0xa4e0('0x1c')](respondWithResult(_0x36d787,0xc9))[_0xa4e0('0x87')](handleError(_0x36d787,null));};exports[_0xa4e0('0xae')]=function(_0x1fbc29,_0x35ce23){var _0x3f1d8a;return db['CmContact']['describe']()[_0xa4e0('0x1c')](function(_0x128cc8){return db[_0xa4e0('0x20')][_0xa4e0('0x88')]({'where':{'id':_0x1fbc29[_0xa4e0('0xaf')]['id']},'include':[{'model':db[_0xa4e0('0x48')],'as':'Tags','attributes':['id',_0xa4e0('0x39'),_0xa4e0('0x3a')],'required':_0x1fbc29['query'][_0xa4e0('0x60')]?!![]:![]}],'attributes':_[_0xa4e0('0x22')](_0x128cc8)});})[_0xa4e0('0x1c')](function(_0x525877){if(!_[_0xa4e0('0x59')](_0x525877)){_0x3f1d8a=_0x525877[_0xa4e0('0xb0')]({'plain':!![]});var _0x4d04cb={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x525877&&_0x525877[_0xa4e0('0x5c')]){if(_0x525877[_0xa4e0('0x5c')]){_0x4d04cb['where'][_0xa4e0('0xb1')][_0xa4e0('0x25')]({'ListId':{'$ne':_0x525877[_0xa4e0('0x5c')]}});}}return db[_0xa4e0('0x26')]['findAll'](_0x4d04cb);}})[_0xa4e0('0x1c')](function(_0x5439bc){if(!_['isNil'](_0x5439bc)){return _[_0xa4e0('0xb2')](_0x3f1d8a,_['map'](_0x5439bc,function(_0x105a31){return util[_0xa4e0('0xb3')](_0xa4e0('0xb4'),_0x105a31['id']);}));}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x35ce23,null))[_0xa4e0('0x1c')](respondWithResult(_0x35ce23,null))[_0xa4e0('0x87')](handleError(_0x35ce23,null));};exports['update']=function(_0x11c910,_0x1ab9bd){var _0x20bbd6;if(_0x11c910[_0xa4e0('0x91')]['id']){delete _0x11c910[_0xa4e0('0x91')]['id'];}return db[_0xa4e0('0x20')][_0xa4e0('0x88')]({'where':{'id':_0x11c910[_0xa4e0('0xaf')]['id']}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x1ab9bd,null))[_0xa4e0('0x1c')](saveUpdates(_0x11c910[_0xa4e0('0x91')],null))[_0xa4e0('0x1c')](function(_0x5d8595){_0x20bbd6=_0x5d8595;var _0x2b79fc={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5d8595&&_0x5d8595[_0xa4e0('0x5c')]){if(_0x5d8595[_0xa4e0('0x5c')]){_0x2b79fc['where']['$and'][_0xa4e0('0x25')]({'ListId':{'$ne':_0x5d8595[_0xa4e0('0x5c')]}});}}return db[_0xa4e0('0x26')]['findAll'](_0x2b79fc);})[_0xa4e0('0x1c')](function(_0x47424d){if(_0x47424d){return _[_0xa4e0('0xb2')](_[_0xa4e0('0xb5')](_0x11c910['body'],function(_0x519c3a,_0x3f6882){return _[_0xa4e0('0x23')](_0x3f6882,'cf_');}),_[_0xa4e0('0x57')](_0x47424d,function(_0x2bf55b){return util[_0xa4e0('0xb3')](_0xa4e0('0xb4'),_0x2bf55b['id']);}));}})[_0xa4e0('0x1c')](function(_0x441808){if(_0x441808&&!_[_0xa4e0('0x5b')](_0x441808)){var _0x34bf41=squel['update']()['table']('cm_contacts')[_0xa4e0('0xb6')](_0x441808)[_0xa4e0('0x34')](_0xa4e0('0xb7'),_0x11c910[_0xa4e0('0xaf')]['id'])[_0xa4e0('0xb8')]();return db[_0xa4e0('0x78')][_0xa4e0('0x2e')](_0x34bf41[_0xa4e0('0x55')],{'replacements':_0x34bf41['values']});}})[_0xa4e0('0x1c')](function(){if(_0x11c910['body'][_0xa4e0('0xb9')]&&_0x20bbd6){return db[_0xa4e0('0xba')][_0xa4e0('0x1b')]({'phone':_0x11c910[_0xa4e0('0x91')][_0xa4e0('0xb9')]},{'where':{'ContactId':_0x20bbd6['id']}});}})[_0xa4e0('0x1c')](function(){return _0x20bbd6;})['then'](respondWithResult(_0x1ab9bd,null))[_0xa4e0('0x87')](handleError(_0x1ab9bd,null));};exports[_0xa4e0('0xbb')]=function(_0x1c326e,_0x121b4b){var _0xd47ca3={};var _0x152764={};var _0x101c69;var _0x3a87c7;return db[_0xa4e0('0x20')][_0xa4e0('0x27')]({'where':{'id':_0x1c326e[_0xa4e0('0xaf')]['id']}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x121b4b,null))[_0xa4e0('0x1c')](function(_0x37b15d){if(_0x37b15d){_0x101c69=_0x37b15d;_0x152764[_0xa4e0('0x2d')]=_[_0xa4e0('0x22')](db[_0xa4e0('0x48')][_0xa4e0('0xbc')]);_0x152764['query']=_['keys'](_0x1c326e[_0xa4e0('0x2e')]);_0x152764[_0xa4e0('0x35')]=_[_0xa4e0('0x2f')](_0x152764[_0xa4e0('0x2d')],_0x152764['query']);_0xd47ca3['attributes']=_[_0xa4e0('0x2f')](_0x152764[_0xa4e0('0x2d')],qs['fields'](_0x1c326e[_0xa4e0('0x2e')][_0xa4e0('0x31')]));_0xd47ca3[_0xa4e0('0x30')]=_0xd47ca3['attributes']['length']?_0xd47ca3[_0xa4e0('0x30')]:_0x152764[_0xa4e0('0x2d')];_0xd47ca3['order']=qs['sort'](_0x1c326e[_0xa4e0('0x2e')][_0xa4e0('0x33')]);_0xd47ca3['where']=qs[_0xa4e0('0x35')](_['pick'](_0x1c326e[_0xa4e0('0x2e')],_0x152764[_0xa4e0('0x35')]));if(_0x1c326e['query'][_0xa4e0('0x58')]){_0xd47ca3[_0xa4e0('0x34')]=_[_0xa4e0('0x7b')](_0xd47ca3['where'],{'$or':_[_0xa4e0('0x57')](_0xd47ca3['attributes'],function(_0xa7a18d){var _0x172cd5={};_0x172cd5[_0xa7a18d]={'$like':'%'+_0x1c326e[_0xa4e0('0x2e')][_0xa4e0('0x58')]+'%'};return _0x172cd5;})});}_0xd47ca3=_[_0xa4e0('0x7b')]({},_0xd47ca3,_0x1c326e[_0xa4e0('0xbd')]);return _0x101c69[_0xa4e0('0xbb')](_0xd47ca3);}})[_0xa4e0('0x1c')](function(_0x486d51){if(_0x486d51){_0x3a87c7=_0x486d51[_0xa4e0('0x2a')];if(!_0x1c326e[_0xa4e0('0x2e')][_0xa4e0('0x90')]('nolimit')){_0xd47ca3['limit']=qs[_0xa4e0('0x15')](_0x1c326e[_0xa4e0('0x2e')][_0xa4e0('0x15')]);_0xd47ca3['offset']=qs[_0xa4e0('0x18')](_0x1c326e[_0xa4e0('0x2e')][_0xa4e0('0x18')]);}return _0x101c69[_0xa4e0('0xbb')](_0xd47ca3);}})[_0xa4e0('0x1c')](function(_0x1fa0c8){if(_0x1fa0c8){return _0x1fa0c8?{'count':_0x3a87c7,'rows':_0x1fa0c8}:null;}})[_0xa4e0('0x1c')](respondWithResult(_0x121b4b,null))[_0xa4e0('0x87')](handleError(_0x121b4b,null));};exports['setTags']=function(_0x1630df,_0x40657e){if(_0x1630df[_0xa4e0('0x91')]['id']){delete _0x1630df[_0xa4e0('0x91')]['id'];}return db[_0xa4e0('0x20')][_0xa4e0('0x27')]({'where':{'id':_0x1630df[_0xa4e0('0xaf')]['id']}})['then'](handleEntityNotFound(_0x40657e,null))[_0xa4e0('0x1c')](function(_0x2203bd){if(_0x2203bd){return _0x2203bd[_0xa4e0('0xbe')](_0x1630df[_0xa4e0('0x91')][_0xa4e0('0xbf')]||[]);}return null;})[_0xa4e0('0x1c')](respondWithResult(_0x40657e,null))['catch'](handleError(_0x40657e,null));};exports[_0xa4e0('0xc0')]=function(_0x47d3a3,_0x7dab9b){var _0x42d3e7={'raw':![],'where':{}};var _0x2be3c9={};var _0x2a0eb2={'count':0x0,'rows':[]};return db[_0xa4e0('0x20')]['findOne']({'where':{'id':_0x47d3a3['params']['id']}})['then'](handleEntityNotFound(_0x7dab9b,null))[_0xa4e0('0x1c')](function(_0x5be7a5){if(_0x5be7a5){_0x2be3c9[_0xa4e0('0x2d')]=_[_0xa4e0('0x22')](db[_0xa4e0('0xba')]['rawAttributes']);_0x2be3c9[_0xa4e0('0x2e')]=_[_0xa4e0('0x22')](_0x47d3a3[_0xa4e0('0x2e')]);_0x2be3c9['filters']=_[_0xa4e0('0x2f')](_0x2be3c9[_0xa4e0('0x2d')],_0x2be3c9[_0xa4e0('0x2e')]);_0x42d3e7[_0xa4e0('0x30')]=_[_0xa4e0('0x2f')](_0x2be3c9['model'],qs[_0xa4e0('0x31')](_0x47d3a3[_0xa4e0('0x2e')][_0xa4e0('0x31')]));_0x42d3e7[_0xa4e0('0x30')]=_0x42d3e7[_0xa4e0('0x30')][_0xa4e0('0x2a')]?_0x42d3e7['attributes']:_0x2be3c9[_0xa4e0('0x2d')];if(!_0x47d3a3['query']['hasOwnProperty']('nolimit')){_0x42d3e7[_0xa4e0('0x15')]=qs[_0xa4e0('0x15')](_0x47d3a3[_0xa4e0('0x2e')]['limit']);_0x42d3e7[_0xa4e0('0x18')]=qs[_0xa4e0('0x18')](_0x47d3a3[_0xa4e0('0x2e')][_0xa4e0('0x18')]);}_0x42d3e7[_0xa4e0('0x32')]=qs[_0xa4e0('0x33')](_0x47d3a3[_0xa4e0('0x2e')]['sort']);_0x42d3e7[_0xa4e0('0x34')]=qs['filters'](_['pick'](_0x47d3a3[_0xa4e0('0x2e')],_0x2be3c9[_0xa4e0('0x35')]));_0x42d3e7[_0xa4e0('0x34')][_0xa4e0('0xc1')]=_0x5be7a5['id'];if(_0x47d3a3[_0xa4e0('0x2e')][_0xa4e0('0x58')]){_0x42d3e7[_0xa4e0('0x34')]=_[_0xa4e0('0x7b')](_0x42d3e7[_0xa4e0('0x34')],{'$or':_['map'](_0x42d3e7[_0xa4e0('0x30')],function(_0x243d2c){var _0x1781a2={};_0x1781a2[_0x243d2c]={'$like':'%'+_0x47d3a3[_0xa4e0('0x2e')][_0xa4e0('0x58')]+'%'};return _0x1781a2;})});}_0x42d3e7=_[_0xa4e0('0x7b')]({},_0x42d3e7,_0x47d3a3[_0xa4e0('0xbd')]);return db[_0xa4e0('0xba')][_0xa4e0('0x17')]({'where':_0x42d3e7[_0xa4e0('0x34')]})[_0xa4e0('0x1c')](function(_0x361ecb){_0x2a0eb2[_0xa4e0('0x17')]=_0x361ecb;if(_0x47d3a3[_0xa4e0('0x2e')]['includeAll']){_0x42d3e7[_0xa4e0('0xc2')]=[{'all':!![]}];}return db[_0xa4e0('0xba')]['findAll'](_0x42d3e7);})[_0xa4e0('0x1c')](function(_0x342cf9){_0x2a0eb2['rows']=_0x342cf9;return _0x2a0eb2;});}})[_0xa4e0('0x1c')](respondWithFilteredResult(_0x7dab9b,_0x42d3e7))[_0xa4e0('0x87')](handleError(_0x7dab9b,null));};exports['getHopperHistories']=function(_0x15eec0,_0x435acd){var _0x4c347b={'raw':!![],'where':{}};var _0x2047ac={};var _0x4e8efd={'count':0x0,'rows':[]};return db[_0xa4e0('0x20')][_0xa4e0('0x27')]({'where':{'id':_0x15eec0[_0xa4e0('0xaf')]['id']}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x435acd,null))[_0xa4e0('0x1c')](function(_0x40f7b4){if(_0x40f7b4){_0x2047ac[_0xa4e0('0x2d')]=_[_0xa4e0('0x22')](db[_0xa4e0('0xa2')]['rawAttributes']);_0x2047ac[_0xa4e0('0x2e')]=_[_0xa4e0('0x22')](_0x15eec0['query']);_0x2047ac[_0xa4e0('0x35')]=_[_0xa4e0('0x2f')](_0x2047ac[_0xa4e0('0x2d')],_0x2047ac[_0xa4e0('0x2e')]);_0x4c347b[_0xa4e0('0x30')]=_[_0xa4e0('0x2f')](_0x2047ac['model'],qs[_0xa4e0('0x31')](_0x15eec0[_0xa4e0('0x2e')]['fields']));_0x4c347b[_0xa4e0('0x30')]=_0x4c347b[_0xa4e0('0x30')][_0xa4e0('0x2a')]?_0x4c347b[_0xa4e0('0x30')]:_0x2047ac[_0xa4e0('0x2d')];if(!_0x15eec0[_0xa4e0('0x2e')][_0xa4e0('0x90')](_0xa4e0('0xc3'))){_0x4c347b[_0xa4e0('0x15')]=qs['limit'](_0x15eec0[_0xa4e0('0x2e')][_0xa4e0('0x15')]);_0x4c347b['offset']=qs['offset'](_0x15eec0['query']['offset']);}_0x4c347b['order']=qs[_0xa4e0('0x33')](_0x15eec0[_0xa4e0('0x2e')][_0xa4e0('0x33')]);_0x4c347b[_0xa4e0('0x34')]=qs[_0xa4e0('0x35')](_[_0xa4e0('0x36')](_0x15eec0['query'],_0x2047ac['filters']));_0x4c347b['where'][_0xa4e0('0xc1')]=_0x40f7b4['id'];if(_0x15eec0['query'][_0xa4e0('0x58')]){_0x4c347b[_0xa4e0('0x34')]=_[_0xa4e0('0x7b')](_0x4c347b[_0xa4e0('0x34')],{'$or':_[_0xa4e0('0x57')](_0x4c347b[_0xa4e0('0x30')],function(_0xbbcdc8){var _0x6e18c0={};_0x6e18c0[_0xbbcdc8]={'$like':'%'+_0x15eec0['query'][_0xa4e0('0x58')]+'%'};return _0x6e18c0;})});}_0x4c347b=_[_0xa4e0('0x7b')]({},_0x4c347b,_0x15eec0[_0xa4e0('0xbd')]);return db[_0xa4e0('0xa2')]['count']({'where':_0x4c347b[_0xa4e0('0x34')]})[_0xa4e0('0x1c')](function(_0x9d7167){_0x4e8efd[_0xa4e0('0x17')]=_0x9d7167;if(_0x15eec0[_0xa4e0('0x2e')][_0xa4e0('0xc4')]){_0x4c347b[_0xa4e0('0xc2')]=[{'all':!![]}];}return db[_0xa4e0('0xa2')][_0xa4e0('0x8d')](_0x4c347b);})[_0xa4e0('0x1c')](function(_0x5f0167){_0x4e8efd[_0xa4e0('0xc5')]=_0x5f0167;return _0x4e8efd;});}})[_0xa4e0('0x1c')](respondWithFilteredResult(_0x435acd,_0x4c347b))['catch'](handleError(_0x435acd,null));};exports[_0xa4e0('0xc6')]=function(_0x4dbeab,_0x335d33){var _0x15869a={'raw':!![],'where':{}};var _0x5950fb={};var _0x352188={'count':0x0,'rows':[]};return db['CmContact'][_0xa4e0('0x27')]({'where':{'id':_0x4dbeab[_0xa4e0('0xaf')]['id']}})['then'](handleEntityNotFound(_0x335d33,null))[_0xa4e0('0x1c')](function(_0x10893f){if(_0x10893f){_0x5950fb[_0xa4e0('0x2d')]=_[_0xa4e0('0x22')](db[_0xa4e0('0xa1')][_0xa4e0('0xbc')]);_0x5950fb[_0xa4e0('0x2e')]=_[_0xa4e0('0x22')](_0x4dbeab[_0xa4e0('0x2e')]);_0x5950fb[_0xa4e0('0x35')]=_[_0xa4e0('0x2f')](_0x5950fb[_0xa4e0('0x2d')],_0x5950fb['query']);_0x15869a[_0xa4e0('0x30')]=_[_0xa4e0('0x2f')](_0x5950fb[_0xa4e0('0x2d')],qs['fields'](_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0x31')]));_0x15869a['attributes']=_0x15869a[_0xa4e0('0x30')]['length']?_0x15869a[_0xa4e0('0x30')]:_0x5950fb[_0xa4e0('0x2d')];if(!_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0x90')](_0xa4e0('0xc3'))){_0x15869a['limit']=qs[_0xa4e0('0x15')](_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0x15')]);_0x15869a[_0xa4e0('0x18')]=qs[_0xa4e0('0x18')](_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0x18')]);}_0x15869a[_0xa4e0('0x32')]=qs['sort'](_0x4dbeab[_0xa4e0('0x2e')]['sort']);_0x15869a[_0xa4e0('0x34')]=qs[_0xa4e0('0x35')](_[_0xa4e0('0x36')](_0x4dbeab['query'],_0x5950fb[_0xa4e0('0x35')]));_0x15869a[_0xa4e0('0x34')][_0xa4e0('0xc1')]=_0x10893f['id'];if(_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0x58')]){_0x15869a[_0xa4e0('0x34')]=_[_0xa4e0('0x7b')](_0x15869a['where'],{'$or':_[_0xa4e0('0x57')](_0x15869a[_0xa4e0('0x30')],function(_0x17f941){var _0x4dc99a={};_0x4dc99a[_0x17f941]={'$like':'%'+_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0x58')]+'%'};return _0x4dc99a;})});}_0x15869a=_['merge']({},_0x15869a,_0x4dbeab['options']);return db[_0xa4e0('0xa1')][_0xa4e0('0x17')]({'where':_0x15869a[_0xa4e0('0x34')]})[_0xa4e0('0x1c')](function(_0x56ca6a){_0x352188[_0xa4e0('0x17')]=_0x56ca6a;if(_0x4dbeab[_0xa4e0('0x2e')][_0xa4e0('0xc4')]){_0x15869a[_0xa4e0('0xc2')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xa4e0('0x8d')](_0x15869a);})['then'](function(_0x5d0487){_0x352188[_0xa4e0('0xc5')]=_0x5d0487;return _0x352188;});}})[_0xa4e0('0x1c')](respondWithFilteredResult(_0x335d33,_0x15869a))[_0xa4e0('0x87')](handleError(_0x335d33,null));};exports[_0xa4e0('0xc7')]=function(_0x38478f,_0x3039fb){var _0x102d93={'raw':!![],'where':{}};var _0x4ade88={};var _0x3fa280={'count':0x0,'rows':[]};return db[_0xa4e0('0x20')][_0xa4e0('0x27')]({'where':{'id':_0x38478f[_0xa4e0('0xaf')]['id']}})[_0xa4e0('0x1c')](handleEntityNotFound(_0x3039fb,null))[_0xa4e0('0x1c')](function(_0x16c9e1){if(_0x16c9e1){_0x4ade88[_0xa4e0('0x2d')]=_[_0xa4e0('0x22')](db[_0xa4e0('0xc8')][_0xa4e0('0xbc')]);_0x4ade88[_0xa4e0('0x2e')]=_[_0xa4e0('0x22')](_0x38478f[_0xa4e0('0x2e')]);_0x4ade88[_0xa4e0('0x35')]=_['intersection'](_0x4ade88[_0xa4e0('0x2d')],_0x4ade88['query']);_0x102d93[_0xa4e0('0x30')]=_[_0xa4e0('0x2f')](_0x4ade88[_0xa4e0('0x2d')],qs[_0xa4e0('0x31')](_0x38478f[_0xa4e0('0x2e')][_0xa4e0('0x31')]));_0x102d93[_0xa4e0('0x30')]=_0x102d93[_0xa4e0('0x30')][_0xa4e0('0x2a')]?_0x102d93[_0xa4e0('0x30')]:_0x4ade88['model'];if(!_0x38478f['query'][_0xa4e0('0x90')](_0xa4e0('0xc3'))){_0x102d93['limit']=qs[_0xa4e0('0x15')](_0x38478f['query'][_0xa4e0('0x15')]);_0x102d93[_0xa4e0('0x18')]=qs[_0xa4e0('0x18')](_0x38478f[_0xa4e0('0x2e')]['offset']);}_0x102d93[_0xa4e0('0x32')]=qs[_0xa4e0('0x33')](_0x38478f[_0xa4e0('0x2e')][_0xa4e0('0x33')]);_0x102d93[_0xa4e0('0x34')]=qs[_0xa4e0('0x35')](_['pick'](_0x38478f['query'],_0x4ade88[_0xa4e0('0x35')]));_0x102d93[_0xa4e0('0x34')][_0xa4e0('0xc1')]=_0x16c9e1['id'];if(_0x38478f['query']['filter']){_0x102d93[_0xa4e0('0x34')]=_['merge'](_0x102d93['where'],{'$or':_[_0xa4e0('0x57')](_0x102d93['attributes'],function(_0x2110bb){var _0x2b1174={};_0x2b1174[_0x2110bb]={'$like':'%'+_0x38478f['query'][_0xa4e0('0x58')]+'%'};return _0x2b1174;})});}_0x102d93=_[_0xa4e0('0x7b')]({},_0x102d93,_0x38478f[_0xa4e0('0xbd')]);return db[_0xa4e0('0xc8')][_0xa4e0('0x17')]({'where':_0x102d93[_0xa4e0('0x34')]})[_0xa4e0('0x1c')](function(_0x1589b6){_0x3fa280[_0xa4e0('0x17')]=_0x1589b6;if(_0x38478f[_0xa4e0('0x2e')][_0xa4e0('0xc4')]){_0x102d93[_0xa4e0('0xc2')]=[{'all':!![]}];}return db[_0xa4e0('0xc8')][_0xa4e0('0x8d')](_0x102d93);})[_0xa4e0('0x1c')](function(_0x56f184){_0x3fa280['rows']=_0x56f184;return _0x3fa280;});}})[_0xa4e0('0x1c')](respondWithFilteredResult(_0x3039fb,_0x102d93))[_0xa4e0('0x87')](handleError(_0x3039fb,null));};exports[_0xa4e0('0xc9')]=function(_0xa0320e,_0x536a44){try{if(!_0xa0320e['body']['ListId']){throw new Error(_0xa4e0('0xca'));}if(!_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0xcb')]){throw new Error(_0xa4e0('0xcc'));}if(!_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0xcd')]){throw new Error(_0xa4e0('0xce'));}if(!_0xa0320e['body'][_0xa4e0('0xcf')]){throw new Error(_0xa4e0('0xd0'));}var _0x482543=_0xa0320e['body'][_0xa4e0('0xcb')]['split'](',');var _0x9ffc91=_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0xcd')][_0xa4e0('0x4a')](',');if(!_0x482543[_0xa4e0('0x2a')]||!_0x9ffc91[_0xa4e0('0x2a')]||_0x482543[_0xa4e0('0x2a')]!==_0x9ffc91[_0xa4e0('0x2a')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0x31')]=_['zipObject'](_0x482543,_0x9ffc91);if(!_0xa0320e['body'][_0xa4e0('0x31')][_0xa4e0('0xb9')]){throw new Error(_0xa4e0('0xd1'));}if(!_0xa0320e['body'][_0xa4e0('0x31')][_0xa4e0('0xd2')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x97d1b0=path['join'](config['root'],_0xa4e0('0xd3'),_0xa0320e[_0xa4e0('0xd4')][_0xa4e0('0xd5')]);fs[_0xa4e0('0xd6')](_0x97d1b0,parseInt('0777',0x8));var _0x22ed8d=require(_0xa4e0('0xd7'))['fork'](path[_0xa4e0('0xa9')](__dirname,_0xa4e0('0xd8')),[_0x97d1b0,_0xa0320e[_0xa4e0('0x91')]['binding_keys'],_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0xcd')],_0xa0320e['body'][_0xa4e0('0x5c')],_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0xd9')],_0xa0320e['body']['duplicates'],_0xa0320e[_0xa4e0('0x91')][_0xa4e0('0xcf')]]);return _0x536a44[_0xa4e0('0x13')](0xc8)[_0xa4e0('0x14')]({'message':_0xa4e0('0xda'),'pid':_0x22ed8d[_0xa4e0('0xdb')]});}catch(_0x4ba9a2){return _0x536a44[_0xa4e0('0x13')](0x1f4)['send'](_0x4ba9a2);}};exports[_0xa4e0('0xdc')]=function(_0x5efcc0,_0x267952){var _0x2d9245=fs['createReadStream'](_0x5efcc0[_0xa4e0('0xd4')][_0xa4e0('0x3')]);Papa[_0xa4e0('0xdd')](_0x2d9245,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x11d12f){return _0x267952[_0xa4e0('0x13')](0xc8)[_0xa4e0('0x14')]({'file':_0x5efcc0['file'],'fields':_0x11d12f['meta'][_0xa4e0('0x31')]});}});};exports[_0xa4e0('0xde')]=function(_0x5e6361,_0x5c00eb){return db[_0xa4e0('0x4e')][_0xa4e0('0x8d')]({'raw':!![],'attributes':['id'],'where':{'role':_0xa4e0('0x73')}})[_0xa4e0('0x1c')](function(_0x35961b){var _0x27ebe7=![];if(!_0x5e6361[_0xa4e0('0x91')][_0xa4e0('0x5c')]){throw new Error(_0xa4e0('0xca'));}if(!_0x5e6361[_0xa4e0('0x91')][_0xa4e0('0xdf')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x5e6361[_0xa4e0('0x91')][_0xa4e0('0xdf')][_0xa4e0('0xd2')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x5e6361[_0xa4e0('0x91')][_0xa4e0('0xcf')]){throw new Error(_0xa4e0('0xd0'));}var _0x381af5=require(_0xa4e0('0xd7'))[_0xa4e0('0xe0')](path[_0xa4e0('0xa9')](__dirname,'../../components/import/cm/csv2'),[_0x5e6361[_0xa4e0('0xaf')]['id'],JSON[_0xa4e0('0xe1')](_0x5e6361[_0xa4e0('0x91')]),JSON[_0xa4e0('0xe1')](_0x35961b)]);_0x381af5['on'](_0xa4e0('0xe2'),function(){_0x27ebe7=!![];return _0x5c00eb[_0xa4e0('0x13')](0xc8)['json']({'message':_0xa4e0('0xe3'),'pid':_0x381af5['pid']});});_0x381af5['on'](_0xa4e0('0xe4'),function(_0x1bc0a2){if(_0x1bc0a2&&!_0x27ebe7){return _0x5c00eb[_0xa4e0('0x13')](0x1f4)[_0xa4e0('0x14')]({'message':_0xa4e0('0xe5'),'pid':_0x381af5[_0xa4e0('0xdb')]});}});})[_0xa4e0('0x87')](handleError(_0x5c00eb,null));};exports[_0xa4e0('0xe6')]=function(_0x123b89,_0x2d8aed){var _0x18ea1b=[_0xa4e0('0xe7'),_0xa4e0('0xe8'),'sms','openchannel',_0xa4e0('0xe9'),_0xa4e0('0xea'),_0xa4e0('0xeb')];var _0x2ebb8b={'offset':0x0,'order':qs[_0xa4e0('0x33')](_0xa4e0('0xec'))},_0x41a048={'count':0x0,'rows':[]};Promise['resolve']()[_0xa4e0('0x1c')](function(){if(_0x123b89['query']['channel']){if(!_[_0xa4e0('0xed')](_0x18ea1b,_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0xee')][_0xa4e0('0xef')]())){throw new Error(_0xa4e0('0xf0'));}_0x18ea1b=[_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0xee')]['toLowerCase']()];}if(_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0xf1')]){try{var _0x3fe5b5=JSON[_0xa4e0('0xdd')](_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0xf1')]);if(!moment(_0x3fe5b5[_0xa4e0('0x3b')])['isValid']()){throw new Error(_0xa4e0('0xf2'));}if(!moment(_0x3fe5b5['to'])[_0xa4e0('0xf3')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x49aa8f){throw new Error(_0xa4e0('0xf4'));}}if(!_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0x90')]('nolimit')){_0x2ebb8b[_0xa4e0('0x15')]=qs[_0xa4e0('0x15')](_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0x15')]||0xa);_0x2ebb8b['offset']=qs[_0xa4e0('0x18')](_0x123b89['query']['offset']);}var _0x2f0803=_0x18ea1b[_0xa4e0('0x57')](function(_0x46e326){if(_0x46e326===_0xa4e0('0xeb')){var _0x251c2c={'attributes':['id',_0xa4e0('0xf5'),_0xa4e0('0x2c'),_0xa4e0('0xf6'),_0xa4e0('0xf7'),_0xa4e0('0xf8'),_0xa4e0('0xf9'),_0xa4e0('0xfa'),_0xa4e0('0xfb'),_0xa4e0('0xfc'),_0xa4e0('0xfd'),_0xa4e0('0xfe'),_0xa4e0('0xff'),_0xa4e0('0x100'),'UserId'],'where':{'ContactId':_0x123b89[_0xa4e0('0xaf')]['id']},'include':[{'model':db['User'],'as':_0xa4e0('0x4e'),'attributes':['id',_0xa4e0('0x39'),'fullname',_0xa4e0('0x8e')]}],'order':[[_0xa4e0('0xfd'),'DESC']]};if(_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0xf1')]){_0x251c2c['where'][_0xa4e0('0xfd')]={'$gte':_0x3fe5b5[_0xa4e0('0x3b')],'$lte':_0x3fe5b5['to']};}return db['VoiceCallReport']['findAndCountAll'](_0x251c2c)[_0xa4e0('0x1c')](function(_0x15db13){_0x41a048[_0xa4e0('0x17')]+=_0x15db13[_0xa4e0('0x17')];return _[_0xa4e0('0x57')](_0x15db13[_0xa4e0('0xc5')],function(_0x91a851){var _0x14e8ec=_0x91a851[_0xa4e0('0xb0')]({'plain':!![]});_0x14e8ec[_0xa4e0('0xee')]=_0x46e326;if(_0x14e8ec[_0xa4e0('0x4e')]){_0x14e8ec['User']={'id':_0x14e8ec['User']['id'],'name':_0x14e8ec[_0xa4e0('0x4e')][_0xa4e0('0x39')],'fullname':_0x14e8ec[_0xa4e0('0x4e')][_0xa4e0('0x101')],'alias':_0x14e8ec[_0xa4e0('0x4e')][_0xa4e0('0x8e')]};}return _0x14e8ec;});});}else{var _0x4e5e94=_['startCase'](_0x46e326)+(_0x46e326==='chat'?_0xa4e0('0x102'):'Account');var _0x2a5732={'attributes':['id',_0xa4e0('0x103'),_0xa4e0('0x104'),_0xa4e0('0xfd'),_0xa4e0('0xfc'),_0xa4e0('0x105'),_0xa4e0('0x106'),_0xa4e0('0x107'),_0xa4e0('0x108'),_0x4e5e94+'Id'],'where':{'ContactId':_0x123b89[_0xa4e0('0xaf')]['id']},'include':[{'model':db[_0x4e5e94],'as':_0xa4e0('0x109'),'attributes':['id',_0xa4e0('0x39'),_0xa4e0('0x10a')]},{'model':db[_0xa4e0('0x4e')],'as':_0xa4e0('0x10b'),'attributes':['id','name','fullname']},{'model':db['Tag'],'as':_0xa4e0('0x86'),'attributes':['id','name',_0xa4e0('0x3a')],'through':{'attributes':[]}}],'order':[[_0xa4e0('0xfd'),'DESC']]};if(_0x123b89[_0xa4e0('0x2e')][_0xa4e0('0xf1')]){_0x2a5732[_0xa4e0('0x34')][_0xa4e0('0xfd')]={'$gte':_0x3fe5b5['from'],'$lte':_0x3fe5b5['to']};}switch(_0x46e326){case'chat':_0x2a5732[_0xa4e0('0x30')][_0xa4e0('0x25')](_0xa4e0('0x10c'),_0xa4e0('0x10d'),_0xa4e0('0x10e'),_0xa4e0('0x10f'),_0xa4e0('0x110'),'ratingMessage',_0xa4e0('0x111'),_0xa4e0('0x112'),_0xa4e0('0x113'));break;case _0xa4e0('0xe7'):_0x2a5732['attributes']['push'](_0xa4e0('0x114'),_0xa4e0('0x115'));break;case _0xa4e0('0x116'):_0x2a5732['attributes']['push'](_0xa4e0('0x117'),'threadId');break;}return db[_['startCase'](_0x46e326)+'Interaction']['findAndCountAll'](_0x2a5732)[_0xa4e0('0x1c')](function(_0x13f303){_0x41a048[_0xa4e0('0x17')]+=_0x13f303[_0xa4e0('0x17')];return _[_0xa4e0('0x57')](_0x13f303['rows'],function(_0x3c184f){var _0x52826e=_0x3c184f[_0xa4e0('0xb0')]({'plain':!![]});_0x52826e[_0xa4e0('0xee')]=_0x46e326;if(_0x52826e['Owner']){_0x52826e[_0xa4e0('0x10b')]={'id':_0x52826e[_0xa4e0('0x10b')]['id'],'name':_0x52826e[_0xa4e0('0x10b')][_0xa4e0('0x39')],'fullname':_0x52826e[_0xa4e0('0x10b')]['fullname']};}return _0x52826e;});});}});return Promise[_0xa4e0('0x29')](_0x2f0803);})['then'](function(_0x5dea06){return _(_0x5dea06)[_0xa4e0('0x118')]()['sortBy'](_0xa4e0('0xfd'))[_0xa4e0('0x119')]()[_0xa4e0('0x49')]();})['then'](function(_0x4613cf){_0x41a048[_0xa4e0('0xc5')]=_0x2ebb8b[_0xa4e0('0x15')]?_0x4613cf[_0xa4e0('0x11a')](_0x2ebb8b[_0xa4e0('0x18')],_0x2ebb8b[_0xa4e0('0x18')]+_0x2ebb8b['limit']):_0x4613cf;return _0x41a048;})[_0xa4e0('0x1c')](respondWithFilteredResult(_0x2d8aed,_0x2ebb8b))[_0xa4e0('0x87')](handleError(_0x2d8aed,null));};
\ No newline at end of file
+var _0x1543=['user','agent','some','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','role','sequelize','toString','merge','c.firstName','c.phone','c.email','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','startsWith','columnName','displayName','alias','custom','body','findAll','tags','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','ChatOfflineMessage','MailMessage','MailInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','join','bulkCreate','each','duplicates','findOrCreate','spread','params','color','get','$and','omit','format','cf_%d','pickBy','table','cm_contacts','id\x20=\x20?','phone','getTags','rawAttributes','options','setTags','getHoppers','ContactId','includeAll','include','getHopperHistories','CmHopperHistory','getHopperFinals','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','0777','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','createReadStream','parse','import','binding','No\x20firstName\x20column\x20specified','../../components/import/cm/csv2','stringify','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','getJourney','mail','chat','sms','openchannel','fax','voice','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','source','destination','callerid','starttime','endtime','duration','note','userDisposition','userSecondDisposition','userThirdDisposition','UserId','createdAt','findAndCountAll','fullname','startCase','Website','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','key','Owner','DESC','browserName','customerIp','customerPort','ratingMessage','ratingType','ratingValue','substatus','externalUrl','threadId','Interaction','sortBy','slice','moment','bluebird','util','path','lodash','squel','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./cmContact.socket','register','json','offset','undefined','limit','count','Content-Range','update','then','destroy','end','name','status','send','CmContact','describe','length','keys','cf_','push','CmCustomField','findOne','trimStart','all','type','model','query','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','select','field','from','tools_tags','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','fieldType','datetime','castTo','DATE','buildExpression','text','value','start','map','hasOwnProperty','filter','isNil','Contact','isEmpty','ListId','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','replace','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','t.id\x20IN\x20?'];(function(_0x3893cb,_0x238307){var _0x134045=function(_0x3f870c){while(--_0x3f870c){_0x3893cb['push'](_0x3893cb['shift']());}};_0x134045(++_0x238307);}(_0x1543,0x1c5));var _0x3154=function(_0x1099f4,_0x3091df){_0x1099f4=_0x1099f4-0x0;var _0x5bf466=_0x1543[_0x1099f4];return _0x5bf466;};'use strict';var moment=require(_0x3154('0x0'));var BPromise=require(_0x3154('0x1'));var util=require(_0x3154('0x2'));var path=require(_0x3154('0x3'));var fs=require('fs');var _=require(_0x3154('0x4'));var squel=require(_0x3154('0x5'));var Papa=require(_0x3154('0x6'));var Redis=require('ioredis');var qs=require(_0x3154('0x7'));var as=require(_0x3154('0x8'));var logger=require(_0x3154('0x9'))(_0x3154('0xa'));var config=require(_0x3154('0xb'));var db=require(_0x3154('0xc'))['db'];config[_0x3154('0xd')]=_[_0x3154('0xe')](config[_0x3154('0xd')],{'host':_0x3154('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3154('0xd')]));require(_0x3154('0x10'))[_0x3154('0x11')](socket);function respondWithResult(_0x291d49,_0x877743){_0x877743=_0x877743||0xc8;return function(_0x566471){if(_0x566471){return _0x291d49['status'](_0x877743)[_0x3154('0x12')](_0x566471);}};}function respondWithFilteredResult(_0xc51403,_0x2763d8){return function(_0x270550){if(_0x270550){var _0x4cb3dc=typeof _0x2763d8[_0x3154('0x13')]===_0x3154('0x14')&&typeof _0x2763d8[_0x3154('0x15')]===_0x3154('0x14');var _0x12b91c=_0x270550[_0x3154('0x16')];var _0x23f839=_0x4cb3dc?0x0:_0x2763d8[_0x3154('0x13')];var _0x4e548b=_0x4cb3dc?_0x270550[_0x3154('0x16')]:_0x2763d8[_0x3154('0x13')]+_0x2763d8[_0x3154('0x15')];var _0xf1e82e;if(_0x4e548b>=_0x12b91c){_0x4e548b=_0x12b91c;_0xf1e82e=0xc8;}else{_0xf1e82e=0xce;}_0xc51403['status'](_0xf1e82e);return _0xc51403['set'](_0x3154('0x17'),_0x23f839+'-'+_0x4e548b+'/'+_0x12b91c)[_0x3154('0x12')](_0x270550);}return null;};}function saveUpdates(_0x5646e6){return function(_0x39a9e4){if(_0x39a9e4){return _0x39a9e4[_0x3154('0x18')](_0x5646e6)[_0x3154('0x19')](function(_0x4145f0){return _0x4145f0;});}return null;};}function removeEntity(_0x4edaf2){return function(_0x8071b3){if(_0x8071b3){return _0x8071b3[_0x3154('0x1a')]()[_0x3154('0x19')](function(){_0x4edaf2['status'](0xcc)[_0x3154('0x1b')]();});}};}function handleEntityNotFound(_0x5c041c){return function(_0x7787ac){if(!_0x7787ac){_0x5c041c['sendStatus'](0x194);}return _0x7787ac;};}function handleError(_0x47931a,_0xc6eb11){_0xc6eb11=_0xc6eb11||0x1f4;return function(_0x39d794){logger['error'](_0x39d794['stack']);if(_0x39d794[_0x3154('0x1c')]){delete _0x39d794[_0x3154('0x1c')];}_0x47931a[_0x3154('0x1d')](_0xc6eb11)[_0x3154('0x1e')](_0x39d794);};}exports['index']=function(_0x21628b,_0x19617f){var _0x7750b8={},_0x19aa3c={},_0x1be91a={'count':0x0,'rows':[]};return db[_0x3154('0x1f')][_0x3154('0x20')]()[_0x3154('0x19')](function(_0x332224){var _0x533aea=[];for(var _0xd71647=0x0;_0xd71647<Object['keys'](_0x332224)[_0x3154('0x21')];_0xd71647++){var _0x3c4454=Object[_0x3154('0x22')](_0x332224)[_0xd71647];if(_['startsWith'](_0x3c4454,_0x3154('0x23'))){_0x533aea[_0x3154('0x24')](db[_0x3154('0x25')][_0x3154('0x26')]({'where':{'id':_[_0x3154('0x27')](_0x3c4454,_0x3154('0x23'))},'raw':!![]}));}}return BPromise[_0x3154('0x28')](_0x533aea)[_0x3154('0x19')](function(_0x94fd31){for(var _0x111bfe=0x0;_0x111bfe<_0x94fd31['length'];_0x111bfe++){if(_0x94fd31[_0x111bfe]){var _0x45926b='cf_'+_0x94fd31[_0x111bfe]['id'];var _0x3dd695=_0x332224[_0x45926b];_0x3dd695['fieldType']=_0x94fd31[_0x111bfe][_0x3154('0x29')];}}return _0x332224;});})['then'](function(_0x2e479d){_0x19aa3c[_0x3154('0x2a')]=_[_0x3154('0x22')](_0x2e479d);_0x19aa3c[_0x3154('0x2b')]=_[_0x3154('0x22')](_0x21628b[_0x3154('0x2b')]);_0x19aa3c['filters']=_[_0x3154('0x2c')](_0x19aa3c['model'],_0x19aa3c[_0x3154('0x2b')]);_0x7750b8[_0x3154('0x2d')]=_['intersection'](_0x19aa3c[_0x3154('0x2a')],qs[_0x3154('0x2e')](_0x21628b[_0x3154('0x2b')]['fields']));_0x7750b8['attributes']=_0x7750b8[_0x3154('0x2d')][_0x3154('0x21')]?_0x7750b8[_0x3154('0x2d')]:_0x19aa3c[_0x3154('0x2a')];if(!_0x21628b[_0x3154('0x2b')]['hasOwnProperty'](_0x3154('0x2f'))){_0x7750b8[_0x3154('0x15')]=qs['limit'](_0x21628b[_0x3154('0x2b')][_0x3154('0x15')]);_0x7750b8[_0x3154('0x13')]=qs[_0x3154('0x13')](_0x21628b[_0x3154('0x2b')]['offset']);}_0x7750b8[_0x3154('0x30')]=qs[_0x3154('0x31')](_0x21628b['query'][_0x3154('0x31')]);_0x7750b8[_0x3154('0x32')]=qs[_0x3154('0x33')](_[_0x3154('0x34')](_0x21628b['query'],_0x19aa3c[_0x3154('0x33')]),_0x2e479d);var _0x3cebe0=[];var _0x5182b5=squel[_0x3154('0x35')]()[_0x3154('0x36')]('id')[_0x3154('0x36')](_0x3154('0x1c'))[_0x3154('0x36')]('color')[_0x3154('0x37')](_0x3154('0x38'));var _0x301cef=squel[_0x3154('0x35')]()[_0x3154('0x37')]('cm_contacts','c')[_0x3154('0x39')](_0x3154('0x3a'),'uc',_0x3154('0x3b'))['left_join'](_0x3154('0x3c'),'ct',_0x3154('0x3d'))[_0x3154('0x39')](_0x3154('0x38'),'t',_0x3154('0x3e'))['where'](_0x3154('0x3f'));var _0x369833=squel['expr']();var _0x2042dc=[];var _0x1f9c40=squel[_0x3154('0x40')]();var _0x5be62f;if(_0x21628b[_0x3154('0x2b')][_0x3154('0x41')]){_0x5be62f=as[_0x3154('0x42')](_0x21628b[_0x3154('0x2b')][_0x3154('0x41')]);var _0x192709=_0x5be62f[_0x3154('0x43')];for(var _0x2d80eb=0x0;_0x2d80eb<_0x5be62f[_0x3154('0x44')]['length'];_0x2d80eb++){var _0x2de097=_0x5be62f[_0x3154('0x44')][_0x2d80eb];var _0x322bce='c';var _0x40b678=_(_0x2e479d)[_0x3154('0x22')]()[_0x3154('0x45')](function(_0x78e693){return _0x78e693===_0x2de097[_0x3154('0x36')];});if(_0x40b678)_0x40b678=_0x2e479d[_0x2de097[_0x3154('0x36')]];if(!_0x40b678){if(_0x2de097[_0x3154('0x36')]===_0x3154('0x46')){var _0xa314c2=_0x2de097['value']['split'](',')['map'](function(_0x2a232d){return Number(_0x2a232d);});_0xa314c2[_0x3154('0x47')](function(_0xdce6a5){_0x1f9c40['or'](_0x3154('0x48'),'%,'+_0xdce6a5+',%');});_0x2042dc=_[_0x3154('0x49')](_0x2042dc,_0xa314c2);}else if(_0x2de097['field']===_0x3154('0x4a')){_0x369833[_0x3154('0x4b')](_0x3154('0x4c'),_0x2de097['value']);}}else{if(_0x2de097[_0x3154('0x36')]===_0x3154('0x4d')||_0x40b678[_0x3154('0x4e')]===_0x3154('0x4f'))_0x2de097[_0x3154('0x50')]=_0x3154('0x51');var _0x547814=as[_0x3154('0x52')](_0x322bce,_0x40b678[_0x3154('0x29')],_0x2de097);_0x369833[_0x192709](_0x547814[_0x3154('0x53')],_0x547814[_0x3154('0x54')][_0x3154('0x55')],_0x547814[_0x3154('0x54')][_0x3154('0x1b')]);}}}else{var _0x523bcf=_(Object['keys'](_0x21628b[_0x3154('0x2b')]))[_0x3154('0x56')](function(_0x1065ab){return _0x2e479d[_0x3154('0x57')](_0x1065ab)?_0x1065ab:undefined;})[_0x3154('0x58')](function(_0x320b73){return!_[_0x3154('0x59')](_0x320b73);})[_0x3154('0x54')]();if(_0x21628b[_0x3154('0x2b')][_0x3154('0x5a')])_0x523bcf[_0x3154('0x24')](_0x3154('0x5a'));if(!_[_0x3154('0x5b')](_0x523bcf)){_0x523bcf[_0x3154('0x47')](function(_0x3c5cca){if(_0x3c5cca===_0x3154('0x5c')){_0x301cef[_0x3154('0x32')]('c.ListId\x20IN\x20?',[]['concat'](_0x21628b[_0x3154('0x2b')][_0x3c5cca]));}else if(_0x3c5cca===_0x3154('0x5a')){var _0x536dfb='%'+_0x21628b['query'][_0x3c5cca]+'%';_0x301cef[_0x3154('0x32')](_0x3154('0x5d'),_0x536dfb);}else{_0x301cef[_0x3154('0x32')]('c.'+_0x3c5cca+_0x3154('0x5e'),_0x21628b[_0x3154('0x2b')][_0x3c5cca]);}});}if(_0x21628b[_0x3154('0x2b')][_0x3154('0x5f')]){_0x2042dc=_[_0x3154('0x60')](_0x21628b[_0x3154('0x2b')][_0x3154('0x5f')])?_0x21628b[_0x3154('0x2b')][_0x3154('0x5f')]:new Array(_0x21628b[_0x3154('0x2b')]['tag']);_0x2042dc['forEach'](function(_0x1b0622){_0x1f9c40['or'](_0x3154('0x48'),'%,'+_0x1b0622+',%');});}if(_0x21628b[_0x3154('0x2b')][_0x3154('0x58')]){var _0x50195e=_0x21628b[_0x3154('0x2b')][_0x3154('0x58')]['replace']('\x5c','\x5c\x5c')[_0x3154('0x61')](/'/g,'\x27\x27');if(_0x50195e[_0x3154('0x62')]('\x20')[_0x3154('0x21')]>0x1){_0x369833['or'](_0x3154('0x63'),qs[_0x3154('0x64')](_0x50195e),null);}else{if(qs[_0x3154('0x65')](_0x50195e)){_0x369833['or'](_0x3154('0x66'),_0x50195e+'%');_0x369833['or'](_0x3154('0x67'),_0x50195e+'%');_0x369833['or']('c.mobile\x20LIKE\x20?',_0x50195e+'%');_0x369833['or'](_0x3154('0x68'),_0x50195e+'%');}else if(qs['isEmail'](_0x50195e)){_0x369833['or'](_0x3154('0x69'),_0x50195e+'%');}else{_0x369833['or'](_0x3154('0x6a'),'%'+_0x50195e+'%');_0x369833['or'](_0x3154('0x6b'),'%'+_0x50195e+'%');_0x369833['or'](_0x3154('0x69'),'%'+_0x50195e+'%');}}}}_0x301cef[_0x3154('0x32')](_0x369833);_0x301cef[_0x3154('0x6c')](_0x3154('0x6d'));var _0x3a8aa1={'type':db[_0x3154('0x6e')][_0x3154('0x6f')][_0x3154('0x70')],'raw':!![]};var _0x472978=_0x301cef[_0x3154('0x71')]()['field'](_0x3154('0x6d'));if(_0x7750b8[_0x3154('0x30')]){_0x7750b8['order'][_0x3154('0x47')](function(_0x1e7cc5){_0x301cef[_0x3154('0x30')]('c.'+_0x1e7cc5[0x0],_0x1e7cc5[0x1]==='DESC'?![]:!![]);});}if(!_[_0x3154('0x5b')](_0x2042dc)){_0x301cef['having'](_0x1f9c40);_0x472978['where'](_0x3154('0x72'),_0x2042dc);}BPromise['resolve']()[_0x3154('0x19')](function(){if(!_0x5be62f)return;if(_0x21628b[_0x3154('0x73')]['role']!==_0x3154('0x74'))return;if(!_[_0x3154('0x75')](_0x5be62f[_0x3154('0x44')],[_0x3154('0x36'),_0x3154('0x4a')])){return _0x21628b['user'][_0x3154('0x76')]({'attributes':['id'],'raw':!![]})[_0x3154('0x19')](function(_0x4da11b){if(_['isEmpty'](_0x4da11b)){_0x472978['where'](_0x3154('0x77'));_0x301cef[_0x3154('0x32')](_0x3154('0x77'));}else{_0x472978[_0x3154('0x32')]('c.ListId\x20IN\x20?',_[_0x3154('0x56')](_0x4da11b,'id'));_0x301cef['where'](_0x3154('0x78'),_[_0x3154('0x56')](_0x4da11b,'id'));}});}})[_0x3154('0x19')](function(){if(_0x21628b[_0x3154('0x73')][_0x3154('0x79')]===_0x3154('0x74')&&!_0x5be62f&&!_0x21628b[_0x3154('0x2b')][_0x3154('0x5c')])return[];return db[_0x3154('0x7a')][_0x3154('0x2b')](_0x472978[_0x3154('0x7b')](),_0x3a8aa1);})['then'](function(_0x1cb9c4){_0x1be91a[_0x3154('0x16')]=_0x1cb9c4[_0x3154('0x21')];if(_0x1be91a['count']===0x0)return[];return db[_0x3154('0x7a')][_0x3154('0x2b')](_0x5182b5[_0x3154('0x7b')](),_0x3a8aa1)['then'](function(_0x1ec97e){_0x3cebe0=_['keyBy'](_0x1ec97e,'id');_0x3a8aa1=_[_0x3154('0x7c')](_0x3a8aa1,{'model':db[_0x3154('0x1f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x21628b[_0x3154('0x2b')][_0x3154('0x2e')]){_0x7750b8['attributes'][_0x3154('0x47')](function(_0x52719e){_0x301cef['field']('c.'+_0x52719e);});}else{_0x301cef[_0x3154('0x36')](_0x3154('0x6d'));_0x301cef[_0x3154('0x36')](_0x3154('0x7d'));_0x301cef[_0x3154('0x36')]('c.lastName');_0x301cef[_0x3154('0x36')](_0x3154('0x7e'));_0x301cef[_0x3154('0x36')]('c.mobile');_0x301cef[_0x3154('0x36')]('c.fax');_0x301cef[_0x3154('0x36')](_0x3154('0x7f'));_0x301cef['field']('c.ListId');_0x301cef[_0x3154('0x36')](_0x3154('0x80'));_0x301cef[_0x3154('0x36')](_0x3154('0x81'));_0x301cef['field']('c.CompanyId');_0x301cef[_0x3154('0x36')](_0x3154('0x82'),_0x3154('0x83'));}if(_0x7750b8['limit'])_0x301cef[_0x3154('0x15')](_0x7750b8[_0x3154('0x15')]);if(_0x7750b8[_0x3154('0x13')])_0x301cef[_0x3154('0x13')](_0x7750b8[_0x3154('0x13')]);return db[_0x3154('0x7a')][_0x3154('0x2b')](_0x301cef[_0x3154('0x7b')](),_0x3a8aa1);});})['then'](function(_0x50504a){_0x50504a[_0x3154('0x47')](function(_0x2b2054){if(_0x2b2054['TagIds']){_0x2b2054['Tags']=[];_0x2b2054[_0x3154('0x83')][_0x3154('0x62')](',')[_0x3154('0x47')](function(_0x2dd2eb){_0x2b2054[_0x3154('0x84')]['push'](_0x3cebe0[_0x2dd2eb]);});}delete _0x2b2054[_0x3154('0x83')];});_0x1be91a[_0x3154('0x85')]=_0x50504a;return _0x1be91a;})[_0x3154('0x19')](respondWithFilteredResult(_0x19617f,_0x7750b8));})['catch'](handleError(_0x19617f,null));};exports[_0x3154('0x1a')]=function(_0x365efb,_0x4039ee){return db['CmContact'][_0x3154('0x45')]({'where':{'id':_0x365efb['params']['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x4039ee,null))[_0x3154('0x19')](removeEntity(_0x4039ee,null))[_0x3154('0x86')](handleError(_0x4039ee,null));};exports[_0x3154('0x20')]=function(_0x10c1c2,_0x265e50){return db[_0x3154('0x1f')][_0x3154('0x20')]()[_0x3154('0x19')](function(_0x1c1a4d){delete _0x1c1a4d['tags'];for(var _0x3e3829=0x0;_0x3e3829<Object[_0x3154('0x22')](_0x1c1a4d)[_0x3154('0x21')];_0x3e3829++){var _0x2c7f7b=Object[_0x3154('0x22')](_0x1c1a4d)[_0x3e3829];if(!_[_0x3154('0x87')](_0x2c7f7b,_0x3154('0x23'))){_0x1c1a4d[_0x2c7f7b]['columnName']=_0x2c7f7b;_0x1c1a4d[_0x2c7f7b]['displayName']=_0x2c7f7b;}}return _0x1c1a4d;})['then'](function(_0x35536a){var _0x1d4c29={'where':Boolean(_0x10c1c2[_0x3154('0x2b')]['analytics'])===!![]?undefined:{'$or':[{'ListId':_0x10c1c2['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0x3154('0x25')]['findAll'](_0x1d4c29)[_0x3154('0x19')](function(_0x2bb0af){for(var _0x2f9ac3=0x0;_0x2f9ac3<_0x2bb0af[_0x3154('0x21')];_0x2f9ac3++){var _0x423183=_0x3154('0x23')+_0x2bb0af[_0x2f9ac3]['id'];_0x35536a[_0x423183][_0x3154('0x88')]=_0x423183;_0x35536a[_0x423183][_0x3154('0x89')]=_0x2bb0af[_0x2f9ac3][_0x3154('0x8a')];_0x35536a[_0x423183][_0x3154('0x8b')]={'type':_0x2bb0af[_0x2f9ac3]['type'],'values':_0x2bb0af[_0x2f9ac3]['values']};}Object[_0x3154('0x22')](_0x35536a)[_0x3154('0x47')](function(_0x3bcc93){if(!_0x35536a[_0x3bcc93][_0x3154('0x57')]('columnName')){delete _0x35536a[_0x3bcc93];}});return _0x35536a;});})[_0x3154('0x19')](respondWithResult(_0x265e50,null))[_0x3154('0x86')](handleError(_0x265e50,null));};exports[_0x3154('0x7c')]=function(_0x453a38,_0x239307){var _0x5d4ebe;var _0x590f92;var _0x265287;if(_0x453a38[_0x3154('0x8c')]['id']){delete _0x453a38['body']['id'];}return db[_0x3154('0x1f')][_0x3154('0x8d')]({'where':{'id':[_0x453a38['body']['to'],_0x453a38[_0x3154('0x8c')][_0x3154('0x37')]]}})[_0x3154('0x19')](function(_0x1d5a4b){if(_0x1d5a4b){if(_0x1d5a4b['length']!==0x2){return null;}_0x1d5a4b[0x0]=_0x1d5a4b[0x0]['get']({'plain':!![]});_0x1d5a4b[0x1]=_0x1d5a4b[0x1]['get']({'plain':!![]});delete _0x1d5a4b[0x0]['id'];delete _0x1d5a4b[0x1]['id'];return _['mergeWith'](_0x1d5a4b[0x0],_0x1d5a4b[0x1],function(_0x5a12b8,_0x131352){if(Array['isArray'](_0x131352)&&!_0x131352[_0x3154('0x21')]){return _0x5a12b8;}else if(!_0x131352){return _0x5a12b8;}});}})[_0x3154('0x19')](handleEntityNotFound(_0x239307,null))['then'](function(_0x558edf){if(_0x558edf){if(_0x558edf['tags']&&_[_0x3154('0x60')](_0x558edf[_0x3154('0x8e')])){_0x558edf['tags']=_0x558edf['tags']['join']();}logger[_0x3154('0x8f')](_0x3154('0x90'),_0x453a38['body']['to'],_0x453a38[_0x3154('0x8c')][_0x3154('0x37')]);return db[_0x3154('0x91')][_0x3154('0x1a')]({'where':{'ContactId':[_0x453a38[_0x3154('0x8c')]['to'],_0x453a38[_0x3154('0x8c')]['from']]}})[_0x3154('0x19')](function(_0x111adf){logger[_0x3154('0x8f')](_0x3154('0x92'),_0x111adf);return db[_0x3154('0x93')]['destroy']({'where':{'ContactId':[_0x453a38[_0x3154('0x8c')]['to'],_0x453a38[_0x3154('0x8c')]['from']]}})[_0x3154('0x19')](function(_0x359101){logger[_0x3154('0x8f')](_0x3154('0x94'),_0x359101);return db[_0x3154('0x1f')][_0x3154('0x95')](_0x558edf);});});}})['then'](function(_0x410543){if(_0x410543){_0x5d4ebe=_0x410543;_0x590f92={'ContactId':_0x5d4ebe['id']};_0x265287={'where':{'ContactId':[_0x453a38[_0x3154('0x8c')]['to'],_0x453a38[_0x3154('0x8c')][_0x3154('0x37')]]}};return db['ChatInteraction'][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x96')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x97')][_0x3154('0x18')](_0x590f92,_0x265287);}})['then'](function(){if(_0x5d4ebe){return db['MailInteraction'][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x98')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x99')]['update'](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x98')]['update'](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db['SmsInteraction'][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x9a')][_0x3154('0x18')](_0x590f92,_0x265287);}})['then'](function(){if(_0x5d4ebe){return db[_0x3154('0x9b')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x9c')][_0x3154('0x18')](_0x590f92,_0x265287);}})['then'](function(){if(_0x5d4ebe){return db['OpenchannelInteraction'][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x9d')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x9e')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db['CmHopperHistory'][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0x9f')]['update'](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa0')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa1')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db['FaxQueueReport'][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db['MailQueueReport']['update'](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa2')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa3')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa4')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa5')][_0x3154('0x18')](_0x590f92,_0x265287);}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return db[_0x3154('0xa6')][_0x3154('0x18')](_0x590f92,_0x265287);}})['then'](function(){if(_0x5d4ebe){return db['WhatsappQueueReport'][_0x3154('0x18')](_0x590f92,_0x265287);}})['then'](function(){if(_0x5d4ebe){return db['CmContact'][_0x3154('0x1a')]({'where':{'id':[_0x453a38[_0x3154('0x8c')]['to'],_0x453a38[_0x3154('0x8c')]['from']]}});}})[_0x3154('0x19')](function(){if(_0x5d4ebe){return _0x5d4ebe;}})[_0x3154('0x19')](respondWithResult(_0x239307,null))[_0x3154('0x86')](handleError(_0x239307,null));};exports[_0x3154('0x95')]=function(_0x339d34,_0x2ee69e){return db[_0x3154('0x1f')][_0x3154('0x20')]()[_0x3154('0x19')](function(_0x4f57c6){if(_0x339d34[_0x3154('0x8c')]['tags']&&_['isArray'](_0x339d34['body'][_0x3154('0x8e')])){if(_0x339d34[_0x3154('0x8c')][_0x3154('0x8e')][_0x3154('0x21')]){_0x339d34['body']['tags']=_0x339d34['body'][_0x3154('0x8e')][_0x3154('0xa7')](';')+';';}else{_0x339d34[_0x3154('0x8c')][_0x3154('0x8e')]=null;}}else{_0x339d34[_0x3154('0x8c')][_0x3154('0x8e')]=null;}return db[_0x3154('0x1f')]['create'](_0x339d34['body'],{'fields':_[_0x3154('0x22')](_0x4f57c6),'raw':!![]});})[_0x3154('0x19')](respondWithResult(_0x2ee69e,0xc9))[_0x3154('0x86')](handleError(_0x2ee69e,null));};exports[_0x3154('0xa8')]=function(_0x2c09c1,_0x1f9897){var _0x331971=0x0;var _0x229fbe=0x0;var _0x589f18=0x0;return db[_0x3154('0x1f')][_0x3154('0x20')]()[_0x3154('0x19')](function(_0x47bd3d){return BPromise[_0x3154('0xa9')](_0x2c09c1[_0x3154('0x8c')],function(_0x236dd1){var _0x173381={'where':{'$or':[]},'defaults':_0x236dd1,'fields':_[_0x3154('0x22')](_0x47bd3d),'raw':!![]};if(_0x236dd1[_0x3154('0xaa')]){for(var _0x3dcbf4=0x0;_0x3dcbf4<_0x236dd1['duplicates'][_0x3154('0x21')];_0x3dcbf4++){var _0x51294a={};_0x51294a[_0x236dd1[_0x3154('0xaa')][_0x3dcbf4]]=_0x236dd1[_0x236dd1[_0x3154('0xaa')][_0x3dcbf4]];_0x173381['where']['$or'][_0x3154('0x24')](_0x51294a);}_0x173381[_0x3154('0x32')][_0x3154('0x5c')]=_0x236dd1[_0x3154('0x5c')];}return db[_0x3154('0x1f')][_0x3154('0xab')](_0x173381)[_0x3154('0xac')](function(_0x7d9868,_0x2324d2){if(_0x2324d2){_0x331971++;}else{_0x589f18++;}})[_0x3154('0x86')](function(){_0x229fbe++;});});})['then'](function(_0x26a5cb){if(_0x26a5cb){return{'success':_0x331971,'failure':_0x229fbe,'duplicates':_0x589f18};}})[_0x3154('0x19')](respondWithResult(_0x1f9897,0xc9))[_0x3154('0x86')](handleError(_0x1f9897,null));};exports['show']=function(_0x31b1f4,_0x1bece6){var _0x10cd40;return db[_0x3154('0x1f')]['describe']()[_0x3154('0x19')](function(_0xc7bdf8){return db[_0x3154('0x1f')]['find']({'where':{'id':_0x31b1f4[_0x3154('0xad')]['id']},'include':[{'model':db['Tag'],'as':_0x3154('0x84'),'attributes':['id','name',_0x3154('0xae')],'required':_0x31b1f4[_0x3154('0x2b')][_0x3154('0x5f')]?!![]:![]}],'attributes':_[_0x3154('0x22')](_0xc7bdf8)});})[_0x3154('0x19')](function(_0x279b50){if(!_['isNil'](_0x279b50)){_0x10cd40=_0x279b50[_0x3154('0xaf')]({'plain':!![]});var _0x15bc7a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x279b50&&_0x279b50[_0x3154('0x5c')]){if(_0x279b50['ListId']){_0x15bc7a[_0x3154('0x32')][_0x3154('0xb0')]['push']({'ListId':{'$ne':_0x279b50[_0x3154('0x5c')]}});}}return db['CmCustomField'][_0x3154('0x8d')](_0x15bc7a);}})['then'](function(_0x358b09){if(!_[_0x3154('0x59')](_0x358b09)){return _[_0x3154('0xb1')](_0x10cd40,_[_0x3154('0x56')](_0x358b09,function(_0xc6439e){return util[_0x3154('0xb2')](_0x3154('0xb3'),_0xc6439e['id']);}));}})[_0x3154('0x19')](handleEntityNotFound(_0x1bece6,null))[_0x3154('0x19')](respondWithResult(_0x1bece6,null))[_0x3154('0x86')](handleError(_0x1bece6,null));};exports[_0x3154('0x18')]=function(_0x259ecc,_0x1599ca){var _0x39d59b;if(_0x259ecc['body']['id']){delete _0x259ecc[_0x3154('0x8c')]['id'];}return db['CmContact'][_0x3154('0x45')]({'where':{'id':_0x259ecc[_0x3154('0xad')]['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x1599ca,null))['then'](saveUpdates(_0x259ecc['body'],null))[_0x3154('0x19')](function(_0x348603){_0x39d59b=_0x348603;var _0x5d47cd={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x348603&&_0x348603[_0x3154('0x5c')]){if(_0x348603['ListId']){_0x5d47cd[_0x3154('0x32')]['$and'][_0x3154('0x24')]({'ListId':{'$ne':_0x348603[_0x3154('0x5c')]}});}}return db['CmCustomField'][_0x3154('0x8d')](_0x5d47cd);})['then'](function(_0x15a21f){if(_0x15a21f){return _[_0x3154('0xb1')](_[_0x3154('0xb4')](_0x259ecc['body'],function(_0x197513,_0x420609){return _[_0x3154('0x87')](_0x420609,_0x3154('0x23'));}),_[_0x3154('0x56')](_0x15a21f,function(_0xe952f0){return util[_0x3154('0xb2')](_0x3154('0xb3'),_0xe952f0['id']);}));}})['then'](function(_0x44a304){if(_0x44a304&&!_['isEmpty'](_0x44a304)){var _0x5c5280=squel[_0x3154('0x18')]()[_0x3154('0xb5')](_0x3154('0xb6'))['setFields'](_0x44a304)[_0x3154('0x32')](_0x3154('0xb7'),_0x259ecc[_0x3154('0xad')]['id'])['toParam']();return db[_0x3154('0x7a')]['query'](_0x5c5280[_0x3154('0x53')],{'replacements':_0x5c5280['values']});}})[_0x3154('0x19')](function(){if(_0x259ecc[_0x3154('0x8c')][_0x3154('0xb8')]&&_0x39d59b){return db[_0x3154('0x91')][_0x3154('0x18')]({'phone':_0x259ecc[_0x3154('0x8c')][_0x3154('0xb8')]},{'where':{'ContactId':_0x39d59b['id']}});}})['then'](function(){return _0x39d59b;})[_0x3154('0x19')](respondWithResult(_0x1599ca,null))[_0x3154('0x86')](handleError(_0x1599ca,null));};exports[_0x3154('0xb9')]=function(_0x3effd4,_0x112109){var _0x1b4795={};var _0x51b1ae={};var _0x1dd451;var _0x513055;return db['CmContact'][_0x3154('0x26')]({'where':{'id':_0x3effd4[_0x3154('0xad')]['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x112109,null))['then'](function(_0x3e1fa2){if(_0x3e1fa2){_0x1dd451=_0x3e1fa2;_0x51b1ae[_0x3154('0x2a')]=_[_0x3154('0x22')](db[_0x3154('0x46')][_0x3154('0xba')]);_0x51b1ae['query']=_[_0x3154('0x22')](_0x3effd4[_0x3154('0x2b')]);_0x51b1ae[_0x3154('0x33')]=_[_0x3154('0x2c')](_0x51b1ae[_0x3154('0x2a')],_0x51b1ae[_0x3154('0x2b')]);_0x1b4795[_0x3154('0x2d')]=_['intersection'](_0x51b1ae[_0x3154('0x2a')],qs[_0x3154('0x2e')](_0x3effd4[_0x3154('0x2b')]['fields']));_0x1b4795[_0x3154('0x2d')]=_0x1b4795['attributes'][_0x3154('0x21')]?_0x1b4795['attributes']:_0x51b1ae[_0x3154('0x2a')];_0x1b4795[_0x3154('0x30')]=qs[_0x3154('0x31')](_0x3effd4[_0x3154('0x2b')][_0x3154('0x31')]);_0x1b4795['where']=qs[_0x3154('0x33')](_[_0x3154('0x34')](_0x3effd4[_0x3154('0x2b')],_0x51b1ae[_0x3154('0x33')]));if(_0x3effd4['query'][_0x3154('0x58')]){_0x1b4795[_0x3154('0x32')]=_[_0x3154('0x7c')](_0x1b4795[_0x3154('0x32')],{'$or':_['map'](_0x1b4795['attributes'],function(_0x311cbf){var _0x160a42={};_0x160a42[_0x311cbf]={'$like':'%'+_0x3effd4[_0x3154('0x2b')][_0x3154('0x58')]+'%'};return _0x160a42;})});}_0x1b4795=_[_0x3154('0x7c')]({},_0x1b4795,_0x3effd4[_0x3154('0xbb')]);return _0x1dd451['getTags'](_0x1b4795);}})[_0x3154('0x19')](function(_0x170174){if(_0x170174){_0x513055=_0x170174['length'];if(!_0x3effd4['query'][_0x3154('0x57')](_0x3154('0x2f'))){_0x1b4795[_0x3154('0x15')]=qs[_0x3154('0x15')](_0x3effd4[_0x3154('0x2b')][_0x3154('0x15')]);_0x1b4795[_0x3154('0x13')]=qs[_0x3154('0x13')](_0x3effd4[_0x3154('0x2b')]['offset']);}return _0x1dd451[_0x3154('0xb9')](_0x1b4795);}})[_0x3154('0x19')](function(_0x27e57d){if(_0x27e57d){return _0x27e57d?{'count':_0x513055,'rows':_0x27e57d}:null;}})[_0x3154('0x19')](respondWithResult(_0x112109,null))[_0x3154('0x86')](handleError(_0x112109,null));};exports[_0x3154('0xbc')]=function(_0x2f2f9b,_0x1d96d6){if(_0x2f2f9b[_0x3154('0x8c')]['id']){delete _0x2f2f9b[_0x3154('0x8c')]['id'];}return db[_0x3154('0x1f')][_0x3154('0x26')]({'where':{'id':_0x2f2f9b['params']['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x1d96d6,null))[_0x3154('0x19')](function(_0x1ece95){if(_0x1ece95){return _0x1ece95[_0x3154('0xbc')](_0x2f2f9b['body']['ids']||[]);}return null;})[_0x3154('0x19')](respondWithResult(_0x1d96d6,null))[_0x3154('0x86')](handleError(_0x1d96d6,null));};exports[_0x3154('0xbd')]=function(_0x37e496,_0x5f5174){var _0x5420a3={'raw':![],'where':{}};var _0x58aa17={};var _0x100200={'count':0x0,'rows':[]};return db[_0x3154('0x1f')][_0x3154('0x26')]({'where':{'id':_0x37e496[_0x3154('0xad')]['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x5f5174,null))[_0x3154('0x19')](function(_0x3b93ae){if(_0x3b93ae){_0x58aa17[_0x3154('0x2a')]=_[_0x3154('0x22')](db['CmHopper'][_0x3154('0xba')]);_0x58aa17[_0x3154('0x2b')]=_[_0x3154('0x22')](_0x37e496[_0x3154('0x2b')]);_0x58aa17[_0x3154('0x33')]=_[_0x3154('0x2c')](_0x58aa17[_0x3154('0x2a')],_0x58aa17['query']);_0x5420a3['attributes']=_['intersection'](_0x58aa17[_0x3154('0x2a')],qs[_0x3154('0x2e')](_0x37e496[_0x3154('0x2b')][_0x3154('0x2e')]));_0x5420a3[_0x3154('0x2d')]=_0x5420a3[_0x3154('0x2d')][_0x3154('0x21')]?_0x5420a3['attributes']:_0x58aa17[_0x3154('0x2a')];if(!_0x37e496[_0x3154('0x2b')][_0x3154('0x57')](_0x3154('0x2f'))){_0x5420a3[_0x3154('0x15')]=qs[_0x3154('0x15')](_0x37e496[_0x3154('0x2b')][_0x3154('0x15')]);_0x5420a3[_0x3154('0x13')]=qs['offset'](_0x37e496[_0x3154('0x2b')][_0x3154('0x13')]);}_0x5420a3[_0x3154('0x30')]=qs['sort'](_0x37e496[_0x3154('0x2b')][_0x3154('0x31')]);_0x5420a3[_0x3154('0x32')]=qs['filters'](_[_0x3154('0x34')](_0x37e496[_0x3154('0x2b')],_0x58aa17[_0x3154('0x33')]));_0x5420a3['where'][_0x3154('0xbe')]=_0x3b93ae['id'];if(_0x37e496[_0x3154('0x2b')][_0x3154('0x58')]){_0x5420a3['where']=_[_0x3154('0x7c')](_0x5420a3['where'],{'$or':_[_0x3154('0x56')](_0x5420a3[_0x3154('0x2d')],function(_0x1e56dc){var _0x441664={};_0x441664[_0x1e56dc]={'$like':'%'+_0x37e496[_0x3154('0x2b')][_0x3154('0x58')]+'%'};return _0x441664;})});}_0x5420a3=_['merge']({},_0x5420a3,_0x37e496[_0x3154('0xbb')]);return db[_0x3154('0x91')][_0x3154('0x16')]({'where':_0x5420a3[_0x3154('0x32')]})[_0x3154('0x19')](function(_0xcffb81){_0x100200[_0x3154('0x16')]=_0xcffb81;if(_0x37e496[_0x3154('0x2b')][_0x3154('0xbf')]){_0x5420a3[_0x3154('0xc0')]=[{'all':!![]}];}return db['CmHopper'][_0x3154('0x8d')](_0x5420a3);})[_0x3154('0x19')](function(_0x372d9f){_0x100200[_0x3154('0x85')]=_0x372d9f;return _0x100200;});}})['then'](respondWithFilteredResult(_0x5f5174,_0x5420a3))[_0x3154('0x86')](handleError(_0x5f5174,null));};exports[_0x3154('0xc1')]=function(_0x1b5d7d,_0x3229ed){var _0x38ff30={'raw':!![],'where':{}};var _0x29029f={};var _0x30ac18={'count':0x0,'rows':[]};return db[_0x3154('0x1f')][_0x3154('0x26')]({'where':{'id':_0x1b5d7d[_0x3154('0xad')]['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x3229ed,null))['then'](function(_0x20d913){if(_0x20d913){_0x29029f[_0x3154('0x2a')]=_[_0x3154('0x22')](db[_0x3154('0xc2')]['rawAttributes']);_0x29029f[_0x3154('0x2b')]=_['keys'](_0x1b5d7d[_0x3154('0x2b')]);_0x29029f['filters']=_[_0x3154('0x2c')](_0x29029f['model'],_0x29029f[_0x3154('0x2b')]);_0x38ff30['attributes']=_[_0x3154('0x2c')](_0x29029f['model'],qs[_0x3154('0x2e')](_0x1b5d7d[_0x3154('0x2b')][_0x3154('0x2e')]));_0x38ff30[_0x3154('0x2d')]=_0x38ff30[_0x3154('0x2d')]['length']?_0x38ff30[_0x3154('0x2d')]:_0x29029f[_0x3154('0x2a')];if(!_0x1b5d7d[_0x3154('0x2b')][_0x3154('0x57')]('nolimit')){_0x38ff30[_0x3154('0x15')]=qs['limit'](_0x1b5d7d[_0x3154('0x2b')][_0x3154('0x15')]);_0x38ff30['offset']=qs['offset'](_0x1b5d7d[_0x3154('0x2b')]['offset']);}_0x38ff30['order']=qs[_0x3154('0x31')](_0x1b5d7d['query'][_0x3154('0x31')]);_0x38ff30['where']=qs[_0x3154('0x33')](_['pick'](_0x1b5d7d[_0x3154('0x2b')],_0x29029f['filters']));_0x38ff30['where'][_0x3154('0xbe')]=_0x20d913['id'];if(_0x1b5d7d['query'][_0x3154('0x58')]){_0x38ff30[_0x3154('0x32')]=_['merge'](_0x38ff30[_0x3154('0x32')],{'$or':_['map'](_0x38ff30[_0x3154('0x2d')],function(_0x329e09){var _0x3cd113={};_0x3cd113[_0x329e09]={'$like':'%'+_0x1b5d7d[_0x3154('0x2b')]['filter']+'%'};return _0x3cd113;})});}_0x38ff30=_[_0x3154('0x7c')]({},_0x38ff30,_0x1b5d7d[_0x3154('0xbb')]);return db['CmHopperHistory'][_0x3154('0x16')]({'where':_0x38ff30[_0x3154('0x32')]})[_0x3154('0x19')](function(_0x22a892){_0x30ac18[_0x3154('0x16')]=_0x22a892;if(_0x1b5d7d['query'][_0x3154('0xbf')]){_0x38ff30['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x38ff30);})['then'](function(_0x808d8c){_0x30ac18['rows']=_0x808d8c;return _0x30ac18;});}})[_0x3154('0x19')](respondWithFilteredResult(_0x3229ed,_0x38ff30))[_0x3154('0x86')](handleError(_0x3229ed,null));};exports[_0x3154('0xc3')]=function(_0x519a9a,_0x52cc74){var _0x4763aa={'raw':!![],'where':{}};var _0x3a13aa={};var _0x3cacad={'count':0x0,'rows':[]};return db[_0x3154('0x1f')][_0x3154('0x26')]({'where':{'id':_0x519a9a[_0x3154('0xad')]['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x52cc74,null))['then'](function(_0x4608a5){if(_0x4608a5){_0x3a13aa[_0x3154('0x2a')]=_['keys'](db[_0x3154('0x9e')][_0x3154('0xba')]);_0x3a13aa[_0x3154('0x2b')]=_['keys'](_0x519a9a[_0x3154('0x2b')]);_0x3a13aa['filters']=_['intersection'](_0x3a13aa[_0x3154('0x2a')],_0x3a13aa[_0x3154('0x2b')]);_0x4763aa[_0x3154('0x2d')]=_[_0x3154('0x2c')](_0x3a13aa[_0x3154('0x2a')],qs['fields'](_0x519a9a[_0x3154('0x2b')][_0x3154('0x2e')]));_0x4763aa[_0x3154('0x2d')]=_0x4763aa[_0x3154('0x2d')][_0x3154('0x21')]?_0x4763aa['attributes']:_0x3a13aa['model'];if(!_0x519a9a[_0x3154('0x2b')]['hasOwnProperty'](_0x3154('0x2f'))){_0x4763aa[_0x3154('0x15')]=qs[_0x3154('0x15')](_0x519a9a['query'][_0x3154('0x15')]);_0x4763aa[_0x3154('0x13')]=qs[_0x3154('0x13')](_0x519a9a['query']['offset']);}_0x4763aa[_0x3154('0x30')]=qs[_0x3154('0x31')](_0x519a9a[_0x3154('0x2b')][_0x3154('0x31')]);_0x4763aa[_0x3154('0x32')]=qs['filters'](_['pick'](_0x519a9a[_0x3154('0x2b')],_0x3a13aa[_0x3154('0x33')]));_0x4763aa['where']['ContactId']=_0x4608a5['id'];if(_0x519a9a[_0x3154('0x2b')][_0x3154('0x58')]){_0x4763aa[_0x3154('0x32')]=_[_0x3154('0x7c')](_0x4763aa[_0x3154('0x32')],{'$or':_[_0x3154('0x56')](_0x4763aa[_0x3154('0x2d')],function(_0x4f68ca){var _0x3e5a00={};_0x3e5a00[_0x4f68ca]={'$like':'%'+_0x519a9a['query']['filter']+'%'};return _0x3e5a00;})});}_0x4763aa=_[_0x3154('0x7c')]({},_0x4763aa,_0x519a9a[_0x3154('0xbb')]);return db[_0x3154('0x9e')][_0x3154('0x16')]({'where':_0x4763aa[_0x3154('0x32')]})[_0x3154('0x19')](function(_0x550208){_0x3cacad[_0x3154('0x16')]=_0x550208;if(_0x519a9a[_0x3154('0x2b')][_0x3154('0xbf')]){_0x4763aa['include']=[{'all':!![]}];}return db[_0x3154('0x9e')]['findAll'](_0x4763aa);})[_0x3154('0x19')](function(_0x555c8b){_0x3cacad[_0x3154('0x85')]=_0x555c8b;return _0x3cacad;});}})['then'](respondWithFilteredResult(_0x52cc74,_0x4763aa))[_0x3154('0x86')](handleError(_0x52cc74,null));};exports['getJscriptySessions']=function(_0x1b10b9,_0x3ca2fe){var _0x26b476={'raw':!![],'where':{}};var _0x4b2617={};var _0x598045={'count':0x0,'rows':[]};return db[_0x3154('0x1f')]['findOne']({'where':{'id':_0x1b10b9[_0x3154('0xad')]['id']}})[_0x3154('0x19')](handleEntityNotFound(_0x3ca2fe,null))['then'](function(_0x43656b){if(_0x43656b){_0x4b2617[_0x3154('0x2a')]=_[_0x3154('0x22')](db[_0x3154('0xa4')][_0x3154('0xba')]);_0x4b2617['query']=_[_0x3154('0x22')](_0x1b10b9[_0x3154('0x2b')]);_0x4b2617[_0x3154('0x33')]=_[_0x3154('0x2c')](_0x4b2617['model'],_0x4b2617['query']);_0x26b476[_0x3154('0x2d')]=_[_0x3154('0x2c')](_0x4b2617['model'],qs[_0x3154('0x2e')](_0x1b10b9[_0x3154('0x2b')][_0x3154('0x2e')]));_0x26b476[_0x3154('0x2d')]=_0x26b476[_0x3154('0x2d')][_0x3154('0x21')]?_0x26b476['attributes']:_0x4b2617['model'];if(!_0x1b10b9[_0x3154('0x2b')][_0x3154('0x57')](_0x3154('0x2f'))){_0x26b476['limit']=qs[_0x3154('0x15')](_0x1b10b9[_0x3154('0x2b')][_0x3154('0x15')]);_0x26b476[_0x3154('0x13')]=qs[_0x3154('0x13')](_0x1b10b9[_0x3154('0x2b')]['offset']);}_0x26b476[_0x3154('0x30')]=qs['sort'](_0x1b10b9[_0x3154('0x2b')][_0x3154('0x31')]);_0x26b476[_0x3154('0x32')]=qs[_0x3154('0x33')](_[_0x3154('0x34')](_0x1b10b9['query'],_0x4b2617[_0x3154('0x33')]));_0x26b476[_0x3154('0x32')][_0x3154('0xbe')]=_0x43656b['id'];if(_0x1b10b9['query']['filter']){_0x26b476[_0x3154('0x32')]=_[_0x3154('0x7c')](_0x26b476[_0x3154('0x32')],{'$or':_['map'](_0x26b476[_0x3154('0x2d')],function(_0x2f993c){var _0x216db6={};_0x216db6[_0x2f993c]={'$like':'%'+_0x1b10b9[_0x3154('0x2b')][_0x3154('0x58')]+'%'};return _0x216db6;})});}_0x26b476=_[_0x3154('0x7c')]({},_0x26b476,_0x1b10b9[_0x3154('0xbb')]);return db['JscriptySessionReport'][_0x3154('0x16')]({'where':_0x26b476['where']})[_0x3154('0x19')](function(_0x5cebeb){_0x598045[_0x3154('0x16')]=_0x5cebeb;if(_0x1b10b9[_0x3154('0x2b')]['includeAll']){_0x26b476['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x3154('0x8d')](_0x26b476);})['then'](function(_0x431953){_0x598045[_0x3154('0x85')]=_0x431953;return _0x598045;});}})[_0x3154('0x19')](respondWithFilteredResult(_0x3ca2fe,_0x26b476))[_0x3154('0x86')](handleError(_0x3ca2fe,null));};exports[_0x3154('0xc4')]=function(_0x47b102,_0x3fe4bb){try{if(!_0x47b102[_0x3154('0x8c')][_0x3154('0x5c')]){throw new Error(_0x3154('0xc5'));}if(!_0x47b102['body'][_0x3154('0xc6')]){throw new Error(_0x3154('0xc7'));}if(!_0x47b102[_0x3154('0x8c')][_0x3154('0xc8')]){throw new Error(_0x3154('0xc9'));}if(!_0x47b102[_0x3154('0x8c')][_0x3154('0xca')]){throw new Error(_0x3154('0xcb'));}var _0x210e61=_0x47b102[_0x3154('0x8c')][_0x3154('0xc6')][_0x3154('0x62')](',');var _0x215ae7=_0x47b102['body'][_0x3154('0xc8')][_0x3154('0x62')](',');if(!_0x210e61[_0x3154('0x21')]||!_0x215ae7[_0x3154('0x21')]||_0x210e61[_0x3154('0x21')]!==_0x215ae7['length']){throw new Error(_0x3154('0xcc'));}_0x47b102[_0x3154('0x8c')]['fields']=_[_0x3154('0xcd')](_0x210e61,_0x215ae7);if(!_0x47b102['body'][_0x3154('0x2e')][_0x3154('0xb8')]){throw new Error(_0x3154('0xce'));}if(!_0x47b102[_0x3154('0x8c')][_0x3154('0x2e')][_0x3154('0xcf')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0xe69109=path['join'](config[_0x3154('0xd0')],_0x3154('0xd1'),_0x47b102[_0x3154('0xd2')][_0x3154('0xd3')]);fs['chmodSync'](_0xe69109,parseInt(_0x3154('0xd4'),0x8));var _0x427e55=require(_0x3154('0xd5'))[_0x3154('0xd6')](path[_0x3154('0xa7')](__dirname,_0x3154('0xd7')),[_0xe69109,_0x47b102[_0x3154('0x8c')][_0x3154('0xc6')],_0x47b102[_0x3154('0x8c')]['binding_values'],_0x47b102[_0x3154('0x8c')][_0x3154('0x5c')],_0x47b102[_0x3154('0x8c')][_0x3154('0xd8')],_0x47b102[_0x3154('0x8c')][_0x3154('0xaa')],_0x47b102[_0x3154('0x8c')][_0x3154('0xca')]]);return _0x3fe4bb[_0x3154('0x1d')](0xc8)[_0x3154('0x12')]({'message':_0x3154('0xd9'),'pid':_0x427e55[_0x3154('0xda')]});}catch(_0x5c3297){return _0x3fe4bb[_0x3154('0x1d')](0x1f4)['send'](_0x5c3297);}};exports[_0x3154('0xdb')]=function(_0x3bf13d,_0x29a35d){var _0x5ab503=fs[_0x3154('0xdc')](_0x3bf13d[_0x3154('0xd2')][_0x3154('0x3')]);Papa[_0x3154('0xdd')](_0x5ab503,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0xa71e2f){return _0x29a35d[_0x3154('0x1d')](0xc8)[_0x3154('0x12')]({'file':_0x3bf13d[_0x3154('0xd2')],'fields':_0xa71e2f['meta']['fields']});}});};exports[_0x3154('0xde')]=function(_0x132a16,_0x3a00cf){return db[_0x3154('0x4a')][_0x3154('0x8d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x3154('0x74')}})['then'](function(_0x363ae3){var _0x2671f1=![];if(!_0x132a16['body']['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x132a16[_0x3154('0x8c')]['binding'][_0x3154('0xb8')]){throw new Error(_0x3154('0xce'));}if(!_0x132a16[_0x3154('0x8c')][_0x3154('0xdf')][_0x3154('0xcf')]){throw new Error(_0x3154('0xe0'));}if(!_0x132a16[_0x3154('0x8c')][_0x3154('0xca')]){throw new Error(_0x3154('0xcb'));}var _0x11fc3c=require(_0x3154('0xd5'))[_0x3154('0xd6')](path[_0x3154('0xa7')](__dirname,_0x3154('0xe1')),[_0x132a16['params']['id'],JSON[_0x3154('0xe2')](_0x132a16[_0x3154('0x8c')]),JSON['stringify'](_0x363ae3)]);_0x11fc3c['on']('message',function(){_0x2671f1=!![];return _0x3a00cf[_0x3154('0x1d')](0xc8)[_0x3154('0x12')]({'message':_0x3154('0xe3'),'pid':_0x11fc3c[_0x3154('0xda')]});});_0x11fc3c['on'](_0x3154('0xe4'),function(_0x181400){if(_0x181400&&!_0x2671f1){return _0x3a00cf[_0x3154('0x1d')](0x1f4)['json']({'message':_0x3154('0xe5'),'pid':_0x11fc3c[_0x3154('0xda')]});}});})[_0x3154('0x86')](handleError(_0x3a00cf,null));};exports[_0x3154('0xe6')]=function(_0x36f472,_0x48e2bb){var _0x526391=[_0x3154('0xe7'),_0x3154('0xe8'),_0x3154('0xe9'),_0x3154('0xea'),_0x3154('0xeb'),'whatsapp',_0x3154('0xec')];var _0x1f27fa={'offset':0x0,'order':qs[_0x3154('0x31')](_0x3154('0xed'))},_0x5ef13b={'count':0x0,'rows':[]};Promise['resolve']()[_0x3154('0x19')](function(){if(_0x36f472[_0x3154('0x2b')][_0x3154('0xee')]){if(!_[_0x3154('0xef')](_0x526391,_0x36f472[_0x3154('0x2b')][_0x3154('0xee')]['toLowerCase']())){throw new Error(_0x3154('0xf0'));}_0x526391=[_0x36f472['query'][_0x3154('0xee')][_0x3154('0xf1')]()];}if(_0x36f472[_0x3154('0x2b')][_0x3154('0xf2')]){try{var _0x50c327=JSON['parse'](_0x36f472[_0x3154('0x2b')][_0x3154('0xf2')]);if(!moment(_0x50c327['from'])[_0x3154('0xf3')]()){throw new Error(_0x3154('0xf4'));}if(!moment(_0x50c327['to'])['isValid']()){throw new Error(_0x3154('0xf5'));}}catch(_0x530bd4){throw new Error(_0x3154('0xf6'));}}if(!_0x36f472[_0x3154('0x2b')][_0x3154('0x57')](_0x3154('0x2f'))){_0x1f27fa['limit']=qs[_0x3154('0x15')](_0x36f472['query']['limit']||0xa);_0x1f27fa[_0x3154('0x13')]=qs[_0x3154('0x13')](_0x36f472['query']['offset']);}var _0x2cbebc=_0x526391[_0x3154('0x56')](function(_0x447b94){if(_0x447b94===_0x3154('0xec')){var _0x3cfc46={'attributes':['id','uniqueid','type',_0x3154('0xf7'),_0x3154('0xf8'),_0x3154('0xf9'),_0x3154('0xfa'),_0x3154('0xfb'),_0x3154('0xfc'),_0x3154('0xfd'),'createdAt',_0x3154('0xfe'),_0x3154('0xff'),_0x3154('0x100'),_0x3154('0x101')],'where':{'ContactId':_0x36f472['params']['id']},'include':[{'model':db[_0x3154('0x4a')],'as':_0x3154('0x4a'),'attributes':['id',_0x3154('0x1c'),'fullname','alias']}],'order':[[_0x3154('0x102'),'DESC']]};if(_0x36f472['query'][_0x3154('0xf2')]){_0x3cfc46[_0x3154('0x32')][_0x3154('0x102')]={'$gte':_0x50c327[_0x3154('0x37')],'$lte':_0x50c327['to']};}return db[_0x3154('0xa0')][_0x3154('0x103')](_0x3cfc46)[_0x3154('0x19')](function(_0x3916d2){_0x5ef13b[_0x3154('0x16')]+=_0x3916d2['count'];return _['map'](_0x3916d2[_0x3154('0x85')],function(_0x2011d5){var _0xd8deee=_0x2011d5[_0x3154('0xaf')]({'plain':!![]});_0xd8deee[_0x3154('0xee')]=_0x447b94;if(_0xd8deee[_0x3154('0x4a')]){_0xd8deee['User']={'id':_0xd8deee[_0x3154('0x4a')]['id'],'name':_0xd8deee[_0x3154('0x4a')][_0x3154('0x1c')],'fullname':_0xd8deee['User'][_0x3154('0x104')],'alias':_0xd8deee[_0x3154('0x4a')][_0x3154('0x8a')]};}return _0xd8deee;});});}else{var _0x50dff8=_[_0x3154('0x105')](_0x447b94)+(_0x447b94==='chat'?_0x3154('0x106'):_0x3154('0x107'));var _0xadf10e={'attributes':['id',_0x3154('0x108'),_0x3154('0x109'),_0x3154('0x102'),'note',_0x3154('0x10a'),_0x3154('0x10b'),_0x3154('0x10c'),_0x3154('0x101'),_0x50dff8+'Id'],'where':{'ContactId':_0x36f472[_0x3154('0xad')]['id']},'include':[{'model':db[_0x50dff8],'as':_0x3154('0x107'),'attributes':['id',_0x3154('0x1c'),_0x3154('0x10d')]},{'model':db[_0x3154('0x4a')],'as':_0x3154('0x10e'),'attributes':['id',_0x3154('0x1c'),_0x3154('0x104')]},{'model':db[_0x3154('0x46')],'as':'Tags','attributes':['id','name',_0x3154('0xae')],'through':{'attributes':[]}}],'order':[[_0x3154('0x102'),_0x3154('0x10f')]]};if(_0x36f472[_0x3154('0x2b')]['range']){_0xadf10e[_0x3154('0x32')]['createdAt']={'$gte':_0x50c327[_0x3154('0x37')],'$lte':_0x50c327['to']};}switch(_0x447b94){case _0x3154('0xe8'):_0xadf10e['attributes'][_0x3154('0x24')](_0x3154('0x110'),_0x3154('0x111'),_0x3154('0x112'),'deviceModel','osName',_0x3154('0x113'),_0x3154('0x114'),_0x3154('0x115'),'referer');break;case _0x3154('0xe7'):_0xadf10e[_0x3154('0x2d')][_0x3154('0x24')]('subject',_0x3154('0x116'));break;case _0x3154('0xea'):_0xadf10e[_0x3154('0x2d')][_0x3154('0x24')](_0x3154('0x117'),_0x3154('0x118'));break;}return db[_['startCase'](_0x447b94)+_0x3154('0x119')][_0x3154('0x103')](_0xadf10e)[_0x3154('0x19')](function(_0x170a1f){_0x5ef13b[_0x3154('0x16')]+=_0x170a1f[_0x3154('0x16')];return _[_0x3154('0x56')](_0x170a1f[_0x3154('0x85')],function(_0x34123c){var _0x3d12e5=_0x34123c['get']({'plain':!![]});_0x3d12e5[_0x3154('0xee')]=_0x447b94;if(_0x3d12e5[_0x3154('0x10e')]){_0x3d12e5[_0x3154('0x10e')]={'id':_0x3d12e5['Owner']['id'],'name':_0x3d12e5['Owner'][_0x3154('0x1c')],'fullname':_0x3d12e5[_0x3154('0x10e')][_0x3154('0x104')]};}return _0x3d12e5;});});}});return Promise[_0x3154('0x28')](_0x2cbebc);})[_0x3154('0x19')](function(_0x5385df){return _(_0x5385df)['flatten']()[_0x3154('0x11a')](_0x3154('0x102'))['reverse']()['value']();})[_0x3154('0x19')](function(_0x4fa0f3){_0x5ef13b[_0x3154('0x85')]=_0x1f27fa[_0x3154('0x15')]?_0x4fa0f3[_0x3154('0x11b')](_0x1f27fa[_0x3154('0x13')],_0x1f27fa[_0x3154('0x13')]+_0x1f27fa['limit']):_0x4fa0f3;return _0x5ef13b;})[_0x3154('0x19')](respondWithFilteredResult(_0x48e2bb,_0x1f27fa))[_0x3154('0x86')](handleError(_0x48e2bb,null));};
\ No newline at end of file
index dffc30d..b6e12c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8142=['exports','../../mysqldb','setMaxListeners','remove','hook'];(function(_0x5e96ee,_0x1b2097){var _0x141ad7=function(_0x25ea7f){while(--_0x25ea7f){_0x5e96ee['push'](_0x5e96ee['shift']());}};_0x141ad7(++_0x1b2097);}(_0x8142,0xf1));var _0x2814=function(_0x7611ce,_0x4a4441){_0x7611ce=_0x7611ce-0x0;var _0x67d3ab=_0x8142[_0x7611ce];return _0x67d3ab;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x2814('0x0'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x2814('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2814('0x2')};function emitEvent(_0x4822df){return function(_0x6f58d8,_0x454ea6,_0x25585a){CmContactEvents['emit'](_0x4822df+':'+_0x6f58d8['id'],_0x6f58d8);CmContactEvents['emit'](_0x4822df,_0x6f58d8);_0x25585a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0x2814('0x3')](e,emitEvent(event));}}module[_0x2814('0x4')]=CmContactEvents;
\ No newline at end of file
+var _0xccb2=['CmContact','update','remove','emit','hasOwnProperty','exports','../../mysqldb'];(function(_0x4057f9,_0x17c5b5){var _0x5552b7=function(_0xeb792f){while(--_0xeb792f){_0x4057f9['push'](_0x4057f9['shift']());}};_0x5552b7(++_0x17c5b5);}(_0xccb2,0x102));var _0x2ccb=function(_0x43b7c3,_0x2bbb68){_0x43b7c3=_0x43b7c3-0x0;var _0x4bd5c4=_0xccb2[_0x43b7c3];return _0x4bd5c4;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x2ccb('0x0'))['db'][_0x2ccb('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x2ccb('0x2'),'afterDestroy':_0x2ccb('0x3')};function emitEvent(_0x59360a){return function(_0x106d5b,_0x28374e,_0x2cb238){CmContactEvents[_0x2ccb('0x4')](_0x59360a+':'+_0x106d5b['id'],_0x106d5b);CmContactEvents['emit'](_0x59360a,_0x106d5b);_0x2cb238(null);};}for(var e in events){if(events[_0x2ccb('0x5')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x2ccb('0x6')]=CmContactEvents;
\ No newline at end of file
index b6d31dc..5bbcc35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf3=['firstName','mobile','fax','utf8mb4','utf8mb4_unicode_ci','models','get','error','afterCreate','inspect','findOne','then','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','cmContact,\x20afterCreate\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','cmContact','CmHopper','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','onlyIfOpen','BlackLists','length','cmContact,\x20%s,\x20%s','message','always','Campaign','CmHopperBlack','isEmpty','ContactId','CampaignId','push','all','info','[CmContact][afterDestroy][Error]','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','exports','CmContact','cm_contacts','phone','fti_cm_contacts'];(function(_0x547f37,_0x290526){var _0x3c8e1a=function(_0x2b0ebf){while(--_0x2b0ebf){_0x547f37['push'](_0x547f37['shift']());}};_0x3c8e1a(++_0x290526);}(_0x4cf3,0x1eb));var _0x34cf=function(_0x43528c,_0x3eaf93){_0x43528c=_0x43528c-0x0;var _0x14bdf5=_0x4cf3[_0x43528c];return _0x14bdf5;};'use strict';var _=require(_0x34cf('0x0'));var util=require(_0x34cf('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x34cf('0x2'));var rp=require(_0x34cf('0x3'));var fs=require('fs');var path=require(_0x34cf('0x4'));var rimraf=require(_0x34cf('0x5'));var config=require(_0x34cf('0x6'));var attributes=require(_0x34cf('0x7'));module[_0x34cf('0x8')]=function(_0x54579f,_0x37bd6a){return _0x54579f['define'](_0x34cf('0x9'),attributes,{'tableName':_0x34cf('0xa'),'paranoid':!![],'indexes':[{'name':_0x34cf('0xb'),'fields':[_0x34cf('0xb')]},{'name':_0x34cf('0xc'),'fields':[_0x34cf('0xd'),'lastName',_0x34cf('0xb'),_0x34cf('0xe'),_0x34cf('0xf'),'email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x34cf('0x10'),'collate':_0x34cf('0x11'),'hooks':{'afterCreate':function(_0x33ae94,_0x5844f4,_0x123273){var _0x53e7ae=_0x54579f[_0x34cf('0x12')];var _0x2b4e0a=_0x33ae94[_0x34cf('0x13')]({'plain':!![]});function _0x191e66(){return function(_0x2dc19e){logger[_0x34cf('0x14')]('cmContact',_0x34cf('0x15'),util[_0x34cf('0x16')](_0x2dc19e,{'showHidden':![],'depth':null}));};}var _0x3bf4f0=function(_0x91195d){return new BPromise(function(_0x1649a4,_0x34d618){_0x53e7ae['CmHopper'][_0x34cf('0x17')]({'where':{'phone':_0x2b4e0a[_0x34cf('0xb')],'VoiceQueueId':_0x91195d['id']}})[_0x34cf('0x18')](function(_0x2ebf7b){if(!_[_0x34cf('0x19')](_0x2ebf7b)){throw new Error('cmContact,\x20afterCreate\x20'+_0x2b4e0a['phone']+_0x34cf('0x1a')+_0x91195d['id']);}return _0x53e7ae['CmHopper'][_0x34cf('0x1b')]({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a[_0x34cf('0x1c')],'priority':_0x2b4e0a[_0x34cf('0x1d')]?_0x2b4e0a[_0x34cf('0x1d')]:0x2,'scheduledat':_0x2b4e0a[_0x34cf('0x1e')]?_0x2b4e0a['scheduledat']:moment()[_0x34cf('0x1f')](_0x34cf('0x20')),'callback':_0x2b4e0a[_0x34cf('0x21')]?!![]:![],'callbackuniqueid':_0x2b4e0a[_0x34cf('0x21')]?_0x2b4e0a[_0x34cf('0x21')]:undefined,'callbackat':_0x2b4e0a[_0x34cf('0x21')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x91195d['id']});})['catch'](function(_0x12cd51){_0x34d618(_0x12cd51);});});};var _0x17af78=function(_0x29eb0e){return new BPromise(function(_0x6c2dc4,_0x25c979){_0x53e7ae['CmHopper'][_0x34cf('0x17')]({'where':{'phone':_0x2b4e0a['phone'],'VoiceQueueId':_0x29eb0e['id']}})[_0x34cf('0x18')](function(_0x463f10){if(!_[_0x34cf('0x19')](_0x463f10)){throw new Error(_0x34cf('0x22')+_0x2b4e0a[_0x34cf('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x29eb0e['id']);}return _0x53e7ae['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x2b4e0a['phone'],'VoiceQueueId':_0x29eb0e['id']}});})[_0x34cf('0x18')](function(_0x2f28c5){if(!_[_0x34cf('0x19')](_0x2f28c5)){throw new Error(_0x34cf('0x23')+_0x2b4e0a['phone']+_0x34cf('0x24')+_0x29eb0e['id']);}return _0x53e7ae['CmHopper']['create']({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a['ListId'],'priority':_0x2b4e0a[_0x34cf('0x1d')]?_0x2b4e0a[_0x34cf('0x1d')]:0x2,'scheduledat':_0x2b4e0a[_0x34cf('0x1e')]?_0x2b4e0a[_0x34cf('0x1e')]:moment()[_0x34cf('0x1f')](_0x34cf('0x20')),'callback':_0x2b4e0a['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2b4e0a[_0x34cf('0x21')]?_0x2b4e0a['callbackUniqueid']:undefined,'callbackat':_0x2b4e0a[_0x34cf('0x21')]?moment()[_0x34cf('0x1f')](_0x34cf('0x20')):undefined,'VoiceQueueId':_0x29eb0e['id']});})[_0x34cf('0x25')](function(_0x1216d4){_0x25c979(_0x1216d4);});});};function _0x19f2cd(){return function(_0x30cf70){logger[_0x34cf('0x14')](_0x34cf('0x26'),'afterCreate',util[_0x34cf('0x16')](_0x30cf70,{'showHidden':![],'depth':null}));};}var _0x2c4f6c=function(_0x4a60eb){return new BPromise(function(_0x2227b4,_0x5a4e3c){_0x53e7ae[_0x34cf('0x27')][_0x34cf('0x17')]({'where':{'phone':_0x2b4e0a[_0x34cf('0xb')],'CampaignId':_0x4a60eb['id']}})['then'](function(_0x343894){if(!_[_0x34cf('0x19')](_0x343894)){throw new Error(_0x34cf('0x22')+_0x2b4e0a[_0x34cf('0xb')]+_0x34cf('0x28')+_0x4a60eb['id']);}return _0x53e7ae[_0x34cf('0x27')][_0x34cf('0x1b')]({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a['ListId'],'priority':_0x2b4e0a[_0x34cf('0x1d')]?_0x2b4e0a[_0x34cf('0x1d')]:0x2,'scheduledat':_0x2b4e0a[_0x34cf('0x1e')]?_0x2b4e0a[_0x34cf('0x1e')]:moment()['format'](_0x34cf('0x20')),'callback':_0x2b4e0a[_0x34cf('0x21')]?!![]:![],'callbackuniqueid':_0x2b4e0a[_0x34cf('0x21')]?_0x2b4e0a['callbackUniqueid']:undefined,'callbackat':_0x2b4e0a[_0x34cf('0x21')]?moment()[_0x34cf('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x4a60eb['id']});})['catch'](function(_0x2ec411){_0x5a4e3c(_0x2ec411);});});};var _0x4c8c70=function(_0x3983db){return new BPromise(function(_0xa1beea,_0xb62af2){_0x53e7ae['CmHopper'][_0x34cf('0x17')]({'where':{'phone':_0x2b4e0a[_0x34cf('0xb')],'CampaignId':_0x3983db['id']}})[_0x34cf('0x18')](function(_0x4c35bc){if(!_['isNil'](_0x4c35bc)){throw new Error(_0x34cf('0x22')+_0x2b4e0a[_0x34cf('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x3983db['id']);}return _0x53e7ae[_0x34cf('0x29')][_0x34cf('0x17')]({'where':{'calleridnum':_0x2b4e0a[_0x34cf('0xb')],'CampaignId':_0x3983db['id']}});})['then'](function(_0xa0a95f){if(!_[_0x34cf('0x19')](_0xa0a95f)){throw new Error(_0x34cf('0x23')+_0x2b4e0a['phone']+_0x34cf('0x2a')+_0x3983db['id']);}return _0x53e7ae['CmHopper'][_0x34cf('0x1b')]({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a['ListId'],'priority':_0x2b4e0a[_0x34cf('0x1d')]?_0x2b4e0a[_0x34cf('0x1d')]:0x2,'scheduledat':_0x2b4e0a[_0x34cf('0x1e')]?_0x2b4e0a['scheduledat']:moment()[_0x34cf('0x1f')](_0x34cf('0x20')),'callback':_0x2b4e0a[_0x34cf('0x21')]?!![]:![],'callbackuniqueid':_0x2b4e0a[_0x34cf('0x21')]?_0x2b4e0a['callbackUniqueid']:undefined,'callbackat':_0x2b4e0a[_0x34cf('0x21')]?moment()[_0x34cf('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x3983db['id']});})['catch'](function(_0x3cf371){_0xb62af2(_0x3cf371);});});};if(_0x2b4e0a[_0x34cf('0x1c')]){_0x53e7ae[_0x34cf('0x2b')][_0x34cf('0x2c')]({'where':{'type':'outbound'},'attributes':['id',_0x34cf('0x2d')],'include':[{'model':_0x53e7ae[_0x34cf('0x2e')],'as':_0x34cf('0x2f'),'where':{'id':_0x2b4e0a['ListId']}}]})[_0x34cf('0x18')](function(_0x562c74){if(_0x562c74){var _0x1f9c3d=[];for(var _0x2dc37d=0x0,_0x2a6c83;_0x2dc37d<_0x562c74['length'];_0x2dc37d+=0x1){_0x2a6c83=_0x562c74[_0x2dc37d][_0x34cf('0x13')]({'plain':!![]});switch(_0x2a6c83['dialCheckDuplicateType']){case'always':_0x17af78(_0x2a6c83)[_0x34cf('0x25')](_0x191e66());break;case _0x34cf('0x30'):_0x3bf4f0(_0x2a6c83)[_0x34cf('0x25')](_0x191e66());break;default:_0x53e7ae[_0x34cf('0x27')][_0x34cf('0x1b')]({'phone':_0x2b4e0a['phone'],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a[_0x34cf('0x1c')],'scheduledat':_0x2b4e0a[_0x34cf('0x1e')]?_0x2b4e0a[_0x34cf('0x1e')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x2b4e0a['priority']?_0x2b4e0a[_0x34cf('0x1d')]:0x2,'callback':_0x2b4e0a['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2b4e0a[_0x34cf('0x21')]?_0x2b4e0a['callbackUniqueid']:undefined,'callbackat':_0x2b4e0a[_0x34cf('0x21')]?moment()[_0x34cf('0x1f')](_0x34cf('0x20')):undefined,'VoiceQueueId':_0x2a6c83['id']})['catch'](_0x191e66());}}}})[_0x34cf('0x18')](function(){return _0x53e7ae[_0x34cf('0x2b')][_0x34cf('0x2c')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x53e7ae['CmList'],'as':_0x34cf('0x31'),'where':{'id':_0x2b4e0a[_0x34cf('0x1c')]}}]})[_0x34cf('0x18')](function(_0x94f94d){if(_0x94f94d){var _0x3f6b41=[];for(var _0x129aaf=0x0,_0x32b028;_0x129aaf<_0x94f94d[_0x34cf('0x32')];_0x129aaf+=0x1){_0x32b028=_0x94f94d[_0x129aaf][_0x34cf('0x13')]({'plain':!![]});_0x53e7ae['CmHopperBlack']['create']({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a[_0x34cf('0x1c')],'VoiceQueueId':_0x32b028['id']})[_0x34cf('0x25')](function(_0x376829){logger[_0x34cf('0x14')](_0x34cf('0x33'),_0x34cf('0x15'),_0x376829[_0x34cf('0x34')]);});}}});})[_0x34cf('0x18')](function(){return _0x53e7ae['Campaign'][_0x34cf('0x2c')]({'attributes':['id',_0x34cf('0x2d')],'include':[{'model':_0x53e7ae['CmList'],'as':_0x34cf('0x2f'),'where':{'id':_0x2b4e0a[_0x34cf('0x1c')]}}]})[_0x34cf('0x18')](function(_0x47c282){if(_0x47c282){var _0x49adcf=[];for(var _0x16962c=0x0,_0x2f8dae;_0x16962c<_0x47c282[_0x34cf('0x32')];_0x16962c+=0x1){_0x2f8dae=_0x47c282[_0x16962c]['get']({'plain':!![]});switch(_0x2f8dae['dialCheckDuplicateType']){case _0x34cf('0x35'):_0x4c8c70(_0x2f8dae)[_0x34cf('0x25')](_0x19f2cd());break;case'onlyIfOpen':_0x2c4f6c(_0x2f8dae)[_0x34cf('0x25')](_0x19f2cd());break;default:_0x53e7ae['CmHopper'][_0x34cf('0x1b')]({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a[_0x34cf('0x1c')],'scheduledat':_0x2b4e0a['scheduledat']?_0x2b4e0a[_0x34cf('0x1e')]:moment()[_0x34cf('0x1f')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x2b4e0a[_0x34cf('0x1d')]?_0x2b4e0a[_0x34cf('0x1d')]:0x2,'callback':_0x2b4e0a['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2b4e0a[_0x34cf('0x21')]?_0x2b4e0a[_0x34cf('0x21')]:undefined,'callbackat':_0x2b4e0a[_0x34cf('0x21')]?moment()[_0x34cf('0x1f')](_0x34cf('0x20')):undefined,'CampaignId':_0x2f8dae['id']})['catch'](_0x19f2cd());}}}});})[_0x34cf('0x18')](function(){return _0x53e7ae[_0x34cf('0x36')][_0x34cf('0x2c')]({'attributes':['id'],'include':[{'model':_0x53e7ae[_0x34cf('0x2e')],'as':'BlackLists','where':{'id':_0x2b4e0a[_0x34cf('0x1c')]}}]})[_0x34cf('0x18')](function(_0x5a5b98){if(_0x5a5b98){var _0x57cd3e=[];for(var _0x58dbb0=0x0,_0x30c798;_0x58dbb0<_0x5a5b98['length'];_0x58dbb0+=0x1){_0x30c798=_0x5a5b98[_0x58dbb0][_0x34cf('0x13')]({'plain':!![]});_0x53e7ae[_0x34cf('0x37')][_0x34cf('0x1b')]({'phone':_0x2b4e0a[_0x34cf('0xb')],'ContactId':_0x2b4e0a['id'],'ListId':_0x2b4e0a['ListId'],'CampaignId':_0x30c798['id']})['catch'](function(_0x38d8ea){logger['error'](_0x34cf('0x33'),_0x34cf('0x15'),_0x38d8ea[_0x34cf('0x34')]);});}}});})[_0x34cf('0x18')](function(){_0x123273();})[_0x34cf('0x25')](function(_0x3a17e6){logger[_0x34cf('0x14')](_0x34cf('0x33'),_0x34cf('0x15'),_0x3a17e6[_0x34cf('0x34')]);_0x123273(_0x3a17e6);});}else{_0x123273(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x51fa0b,_0x344a56,_0x20f81d){var _0x562fd4=_0x54579f[_0x34cf('0x12')];var _0x419233=_0x51fa0b[_0x34cf('0x13')]({'plain':!![]});return _0x562fd4[_0x34cf('0x27')][_0x34cf('0x2c')]({'raw':!![],'where':{'ListId':_0x419233['ListId'],'ContactId':_0x419233['id']}})['then'](function(_0x538338){if(!_[_0x34cf('0x38')](_0x538338)){var _0x125ebf=[];for(var _0x2dafd7=0x0;_0x2dafd7<_0x538338[_0x34cf('0x32')];_0x2dafd7+=0x1){var _0x39885f=_0x562fd4['CmHopper']['destroy']({'where':{'ListId':_0x538338[_0x2dafd7][_0x34cf('0x1c')],'ContactId':_0x538338[_0x2dafd7][_0x34cf('0x39')],'VoiceQueueId':_0x538338[_0x2dafd7]['VoiceQueueId'],'CampaignId':_0x538338[_0x2dafd7][_0x34cf('0x3a')]}});_0x125ebf[_0x34cf('0x3b')](_0x39885f);}return BPromise[_0x34cf('0x3c')](_0x125ebf);}})[_0x34cf('0x18')](function(_0x242cfb){logger[_0x34cf('0x3d')]('[CmContact][afterDestroy][Succesfull]',util[_0x34cf('0x16')](_0x242cfb,{'showHidden':![],'depth':null}));_0x20f81d();})[_0x34cf('0x25')](function(_0x4ad142){logger[_0x34cf('0x14')](_0x34cf('0x3e'),util['inspect'](_0x4ad142,{'showHidden':![],'depth':null}));_0x20f81d(_0x4ad142);});}}});};
\ No newline at end of file
+var _0xadf4=['isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','api','bluebird','request-promise','path','rimraf','define','CmContact','cm_contacts','phone','fti_cm_contacts','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','error','cmContact','afterCreate','inspect','CmHopper','findOne','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','create','BlackLists','get','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','findAll','message','List\x20not\x20found'];(function(_0x57a50d,_0x2871f8){var _0x1b25b3=function(_0x45691e){while(--_0x45691e){_0x57a50d['push'](_0x57a50d['shift']());}};_0x1b25b3(++_0x2871f8);}(_0xadf4,0x8d));var _0x4adf=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xadf4[_0x3b5250];return _0xc844a1;};'use strict';var _=require('lodash');var util=require(_0x4adf('0x0'));var logger=require(_0x4adf('0x1'))(_0x4adf('0x2'));var moment=require('moment');var BPromise=require(_0x4adf('0x3'));var rp=require(_0x4adf('0x4'));var fs=require('fs');var path=require(_0x4adf('0x5'));var rimraf=require(_0x4adf('0x6'));var config=require('../../config/environment');var attributes=require('./cmContact.attributes');module['exports']=function(_0x3e4c81,_0x542748){return _0x3e4c81[_0x4adf('0x7')](_0x4adf('0x8'),attributes,{'tableName':_0x4adf('0x9'),'paranoid':!![],'indexes':[{'name':_0x4adf('0xa'),'fields':[_0x4adf('0xa')]},{'name':_0x4adf('0xb'),'fields':['firstName','lastName','phone','mobile','fax',_0x4adf('0xc')],'type':_0x4adf('0xd')}],'timestamps':!![],'charset':_0x4adf('0xe'),'collate':_0x4adf('0xf'),'hooks':{'afterCreate':function(_0x3b95d7,_0x1ead4d,_0x55b561){var _0x3425f2=_0x3e4c81[_0x4adf('0x10')];var _0x8c068a=_0x3b95d7['get']({'plain':!![]});function _0x1edd77(){return function(_0x69a6d3){logger[_0x4adf('0x11')](_0x4adf('0x12'),_0x4adf('0x13'),util[_0x4adf('0x14')](_0x69a6d3,{'showHidden':![],'depth':null}));};}var _0x52adfd=function(_0x448123){return new BPromise(function(_0xbb9597,_0x1e2eac){_0x3425f2[_0x4adf('0x15')][_0x4adf('0x16')]({'where':{'phone':_0x8c068a['phone'],'VoiceQueueId':_0x448123['id']}})['then'](function(_0x3995bf){if(!_[_0x4adf('0x17')](_0x3995bf)){throw new Error('cmContact,\x20afterCreate\x20'+_0x8c068a[_0x4adf('0xa')]+_0x4adf('0x18')+_0x448123['id']);}return _0x3425f2['CmHopper']['create']({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'priority':_0x8c068a[_0x4adf('0x1a')]?_0x8c068a[_0x4adf('0x1a')]:0x2,'scheduledat':_0x8c068a[_0x4adf('0x1b')]?_0x8c068a['scheduledat']:moment()['format'](_0x4adf('0x1c')),'callback':_0x8c068a[_0x4adf('0x1d')]?!![]:![],'callbackuniqueid':_0x8c068a[_0x4adf('0x1d')]?_0x8c068a[_0x4adf('0x1d')]:undefined,'callbackat':_0x8c068a[_0x4adf('0x1d')]?moment()[_0x4adf('0x1e')](_0x4adf('0x1c')):undefined,'VoiceQueueId':_0x448123['id']});})[_0x4adf('0x1f')](function(_0x59cbaf){_0x1e2eac(_0x59cbaf);});});};var _0x5c06bd=function(_0x4c7693){return new BPromise(function(_0x4df462,_0x34f293){_0x3425f2[_0x4adf('0x15')]['findOne']({'where':{'phone':_0x8c068a[_0x4adf('0xa')],'VoiceQueueId':_0x4c7693['id']}})[_0x4adf('0x20')](function(_0x4a44eb){if(!_[_0x4adf('0x17')](_0x4a44eb)){throw new Error(_0x4adf('0x21')+_0x8c068a[_0x4adf('0xa')]+_0x4adf('0x22')+_0x4c7693['id']);}return _0x3425f2[_0x4adf('0x23')][_0x4adf('0x16')]({'where':{'calleridnum':_0x8c068a[_0x4adf('0xa')],'VoiceQueueId':_0x4c7693['id']}});})[_0x4adf('0x20')](function(_0x25c17d){if(!_[_0x4adf('0x17')](_0x25c17d)){throw new Error(_0x4adf('0x24')+_0x8c068a[_0x4adf('0xa')]+_0x4adf('0x25')+_0x4c7693['id']);}return _0x3425f2[_0x4adf('0x15')]['create']({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'priority':_0x8c068a['priority']?_0x8c068a[_0x4adf('0x1a')]:0x2,'scheduledat':_0x8c068a[_0x4adf('0x1b')]?_0x8c068a[_0x4adf('0x1b')]:moment()[_0x4adf('0x1e')](_0x4adf('0x1c')),'callback':_0x8c068a[_0x4adf('0x1d')]?!![]:![],'callbackuniqueid':_0x8c068a[_0x4adf('0x1d')]?_0x8c068a[_0x4adf('0x1d')]:undefined,'callbackat':_0x8c068a[_0x4adf('0x1d')]?moment()[_0x4adf('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x4c7693['id']});})[_0x4adf('0x1f')](function(_0x2ca652){_0x34f293(_0x2ca652);});});};function _0x3676de(){return function(_0x127c00){logger[_0x4adf('0x11')](_0x4adf('0x12'),_0x4adf('0x13'),util[_0x4adf('0x14')](_0x127c00,{'showHidden':![],'depth':null}));};}var _0x1ae342=function(_0x36fba4){return new BPromise(function(_0x8668ee,_0xe8591a){_0x3425f2[_0x4adf('0x15')][_0x4adf('0x16')]({'where':{'phone':_0x8c068a[_0x4adf('0xa')],'CampaignId':_0x36fba4['id']}})[_0x4adf('0x20')](function(_0x41aafb){if(!_[_0x4adf('0x17')](_0x41aafb)){throw new Error(_0x4adf('0x21')+_0x8c068a[_0x4adf('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x36fba4['id']);}return _0x3425f2['CmHopper']['create']({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'priority':_0x8c068a[_0x4adf('0x1a')]?_0x8c068a['priority']:0x2,'scheduledat':_0x8c068a[_0x4adf('0x1b')]?_0x8c068a[_0x4adf('0x1b')]:moment()[_0x4adf('0x1e')](_0x4adf('0x1c')),'callback':_0x8c068a[_0x4adf('0x1d')]?!![]:![],'callbackuniqueid':_0x8c068a[_0x4adf('0x1d')]?_0x8c068a[_0x4adf('0x1d')]:undefined,'callbackat':_0x8c068a['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x36fba4['id']});})[_0x4adf('0x1f')](function(_0x333dc5){_0xe8591a(_0x333dc5);});});};var _0xab16f0=function(_0x12a81e){return new BPromise(function(_0x1ab1d7,_0x1f4a3d){_0x3425f2[_0x4adf('0x15')][_0x4adf('0x16')]({'where':{'phone':_0x8c068a[_0x4adf('0xa')],'CampaignId':_0x12a81e['id']}})['then'](function(_0x2dbe8a){if(!_[_0x4adf('0x17')](_0x2dbe8a)){throw new Error(_0x4adf('0x21')+_0x8c068a['phone']+_0x4adf('0x26')+_0x12a81e['id']);}return _0x3425f2[_0x4adf('0x23')][_0x4adf('0x16')]({'where':{'calleridnum':_0x8c068a[_0x4adf('0xa')],'CampaignId':_0x12a81e['id']}});})[_0x4adf('0x20')](function(_0x1d0cdb){if(!_['isNil'](_0x1d0cdb)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x8c068a[_0x4adf('0xa')]+_0x4adf('0x27')+_0x12a81e['id']);}return _0x3425f2['CmHopper']['create']({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'priority':_0x8c068a[_0x4adf('0x1a')]?_0x8c068a[_0x4adf('0x1a')]:0x2,'scheduledat':_0x8c068a[_0x4adf('0x1b')]?_0x8c068a['scheduledat']:moment()[_0x4adf('0x1e')](_0x4adf('0x1c')),'callback':_0x8c068a[_0x4adf('0x1d')]?!![]:![],'callbackuniqueid':_0x8c068a['callbackUniqueid']?_0x8c068a[_0x4adf('0x1d')]:undefined,'callbackat':_0x8c068a['callbackUniqueid']?moment()[_0x4adf('0x1e')](_0x4adf('0x1c')):undefined,'CampaignId':_0x12a81e['id']});})[_0x4adf('0x1f')](function(_0x1d250a){_0x1f4a3d(_0x1d250a);});});};if(_0x8c068a[_0x4adf('0x19')]){_0x3425f2[_0x4adf('0x28')]['findAll']({'where':{'type':_0x4adf('0x29')},'attributes':['id',_0x4adf('0x2a')],'include':[{'model':_0x3425f2[_0x4adf('0x2b')],'as':_0x4adf('0x2c'),'where':{'id':_0x8c068a[_0x4adf('0x19')]}}]})[_0x4adf('0x20')](function(_0x13031a){if(_0x13031a){var _0x5c9d1f=[];for(var _0x40c7ae=0x0,_0x4948b0;_0x40c7ae<_0x13031a[_0x4adf('0x2d')];_0x40c7ae+=0x1){_0x4948b0=_0x13031a[_0x40c7ae]['get']({'plain':!![]});switch(_0x4948b0[_0x4adf('0x2a')]){case _0x4adf('0x2e'):_0x5c06bd(_0x4948b0)[_0x4adf('0x1f')](_0x1edd77());break;case _0x4adf('0x2f'):_0x52adfd(_0x4948b0)[_0x4adf('0x1f')](_0x1edd77());break;default:_0x3425f2['CmHopper'][_0x4adf('0x30')]({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'scheduledat':_0x8c068a[_0x4adf('0x1b')]?_0x8c068a['scheduledat']:moment()[_0x4adf('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x8c068a[_0x4adf('0x1a')]?_0x8c068a[_0x4adf('0x1a')]:0x2,'callback':_0x8c068a['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x8c068a[_0x4adf('0x1d')]?_0x8c068a[_0x4adf('0x1d')]:undefined,'callbackat':_0x8c068a[_0x4adf('0x1d')]?moment()[_0x4adf('0x1e')](_0x4adf('0x1c')):undefined,'VoiceQueueId':_0x4948b0['id']})[_0x4adf('0x1f')](_0x1edd77());}}}})[_0x4adf('0x20')](function(){return _0x3425f2['VoiceQueue']['findAll']({'where':{'type':_0x4adf('0x29')},'attributes':['id'],'include':[{'model':_0x3425f2[_0x4adf('0x2b')],'as':_0x4adf('0x31'),'where':{'id':_0x8c068a[_0x4adf('0x19')]}}]})[_0x4adf('0x20')](function(_0x2edbfb){if(_0x2edbfb){var _0x2c9aa9=[];for(var _0x73f598=0x0,_0x36682d;_0x73f598<_0x2edbfb[_0x4adf('0x2d')];_0x73f598+=0x1){_0x36682d=_0x2edbfb[_0x73f598][_0x4adf('0x32')]({'plain':!![]});_0x3425f2[_0x4adf('0x33')][_0x4adf('0x30')]({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'VoiceQueueId':_0x36682d['id']})[_0x4adf('0x1f')](function(_0x122ef4){logger[_0x4adf('0x11')](_0x4adf('0x34'),_0x4adf('0x13'),_0x122ef4['message']);});}}});})[_0x4adf('0x20')](function(){return _0x3425f2[_0x4adf('0x35')][_0x4adf('0x36')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x3425f2[_0x4adf('0x2b')],'as':_0x4adf('0x2c'),'where':{'id':_0x8c068a[_0x4adf('0x19')]}}]})[_0x4adf('0x20')](function(_0x566295){if(_0x566295){var _0x4a7610=[];for(var _0xa5f806=0x0,_0x23878d;_0xa5f806<_0x566295[_0x4adf('0x2d')];_0xa5f806+=0x1){_0x23878d=_0x566295[_0xa5f806][_0x4adf('0x32')]({'plain':!![]});switch(_0x23878d['dialCheckDuplicateType']){case'always':_0xab16f0(_0x23878d)[_0x4adf('0x1f')](_0x3676de());break;case'onlyIfOpen':_0x1ae342(_0x23878d)[_0x4adf('0x1f')](_0x3676de());break;default:_0x3425f2[_0x4adf('0x15')]['create']({'phone':_0x8c068a[_0x4adf('0xa')],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'scheduledat':_0x8c068a[_0x4adf('0x1b')]?_0x8c068a[_0x4adf('0x1b')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x8c068a['priority']?_0x8c068a[_0x4adf('0x1a')]:0x2,'callback':_0x8c068a[_0x4adf('0x1d')]?!![]:![],'callbackuniqueid':_0x8c068a[_0x4adf('0x1d')]?_0x8c068a[_0x4adf('0x1d')]:undefined,'callbackat':_0x8c068a[_0x4adf('0x1d')]?moment()[_0x4adf('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x23878d['id']})[_0x4adf('0x1f')](_0x3676de());}}}});})[_0x4adf('0x20')](function(){return _0x3425f2[_0x4adf('0x35')][_0x4adf('0x36')]({'attributes':['id'],'include':[{'model':_0x3425f2[_0x4adf('0x2b')],'as':_0x4adf('0x31'),'where':{'id':_0x8c068a[_0x4adf('0x19')]}}]})[_0x4adf('0x20')](function(_0x15dd58){if(_0x15dd58){var _0x4fc810=[];for(var _0x5aab55=0x0,_0x466ca6;_0x5aab55<_0x15dd58['length'];_0x5aab55+=0x1){_0x466ca6=_0x15dd58[_0x5aab55]['get']({'plain':!![]});_0x3425f2['CmHopperBlack'][_0x4adf('0x30')]({'phone':_0x8c068a['phone'],'ContactId':_0x8c068a['id'],'ListId':_0x8c068a[_0x4adf('0x19')],'CampaignId':_0x466ca6['id']})[_0x4adf('0x1f')](function(_0x530130){logger[_0x4adf('0x11')]('cmContact,\x20%s,\x20%s',_0x4adf('0x13'),_0x530130['message']);});}}});})[_0x4adf('0x20')](function(){_0x55b561();})[_0x4adf('0x1f')](function(_0x254731){logger[_0x4adf('0x11')](_0x4adf('0x34'),_0x4adf('0x13'),_0x254731[_0x4adf('0x37')]);_0x55b561(_0x254731);});}else{_0x55b561(new Error(_0x4adf('0x38')));}},'afterDestroy':function(_0x17eb8e,_0x1f5eff,_0x2acc6f){var _0x39b85b=_0x3e4c81['models'];var _0x599e26=_0x17eb8e[_0x4adf('0x32')]({'plain':!![]});return _0x39b85b[_0x4adf('0x15')]['findAll']({'raw':!![],'where':{'ListId':_0x599e26[_0x4adf('0x19')],'ContactId':_0x599e26['id']}})['then'](function(_0x397a51){if(!_[_0x4adf('0x39')](_0x397a51)){var _0x535601=[];for(var _0x2922cc=0x0;_0x2922cc<_0x397a51[_0x4adf('0x2d')];_0x2922cc+=0x1){var _0x3ef350=_0x39b85b['CmHopper'][_0x4adf('0x3a')]({'where':{'ListId':_0x397a51[_0x2922cc]['ListId'],'ContactId':_0x397a51[_0x2922cc][_0x4adf('0x3b')],'VoiceQueueId':_0x397a51[_0x2922cc][_0x4adf('0x3c')],'CampaignId':_0x397a51[_0x2922cc][_0x4adf('0x3d')]}});_0x535601[_0x4adf('0x3e')](_0x3ef350);}return BPromise[_0x4adf('0x3f')](_0x535601);}})['then'](function(_0x1294cd){logger['info'](_0x4adf('0x40'),util[_0x4adf('0x14')](_0x1294cd,{'showHidden':![],'depth':null}));_0x2acc6f();})[_0x4adf('0x1f')](function(_0x3c5441){logger[_0x4adf('0x11')](_0x4adf('0x41'),util[_0x4adf('0x14')](_0x3c5441,{'showHidden':![],'depth':null}));_0x2acc6f(_0x3c5441);});}}});};
\ No newline at end of file
index c33ac8c..8f6d352 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b2=['set','id\x20=\x20?','query','lodash','util','moment','bluebird','randomstring','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmContact','findAll','options','raw','where','attributes','limit','include','map','model','debug','GetCmContact','catch','CreateCmContact','create','body','keys','length','startsWith','cf_','table'];(function(_0x479774,_0x393894){var _0x5f4e5c=function(_0x59f7d2){while(--_0x59f7d2){_0x479774['push'](_0x479774['shift']());}};_0x5f4e5c(++_0x393894);}(_0x62b2,0x1a3));var _0x262b=function(_0x78430b,_0x418b76){_0x78430b=_0x78430b-0x0;var _0x21bc50=_0x62b2[_0x78430b];return _0x21bc50;};'use strict';var _=require(_0x262b('0x0'));var util=require(_0x262b('0x1'));var moment=require(_0x262b('0x2'));var BPromise=require(_0x262b('0x3'));var rs=require(_0x262b('0x4'));var fs=require('fs');var Redis=require(_0x262b('0x5'));var squel=require(_0x262b('0x6'));var db=require(_0x262b('0x7'))['db'];var utils=require(_0x262b('0x8'));var logger=require(_0x262b('0x9'))(_0x262b('0xa'));var config=require(_0x262b('0xb'));var jayson=require(_0x262b('0xc'));var client=jayson[_0x262b('0xd')][_0x262b('0xe')]({'port':0x232a});config['redis']=_['defaults'](config[_0x262b('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0x262b('0x10'))(new Redis(config[_0x262b('0xf')]));require('./cmContact.socket')[_0x262b('0x11')](socket);function respondWithRpcPromise(_0xd97660,_0x7a5b3f,_0x112c7f){return new BPromise(function(_0x44f383,_0xf3f772){return client[_0x262b('0x12')](_0xd97660,_0x112c7f)[_0x262b('0x13')](function(_0x5a6837){logger[_0x262b('0x14')](_0x262b('0x15'),_0x7a5b3f,_0x262b('0x16'));logger['debug'](_0x262b('0x17'),_0x7a5b3f,_0x262b('0x16'),JSON[_0x262b('0x18')](_0x5a6837));if(_0x5a6837[_0x262b('0x19')]){if(_0x5a6837['error'][_0x262b('0x1a')]===0x1f4){logger[_0x262b('0x19')](_0x262b('0x15'),_0x7a5b3f,_0x5a6837[_0x262b('0x19')][_0x262b('0x1b')]);return _0xf3f772(_0x5a6837['error'][_0x262b('0x1b')]);}logger[_0x262b('0x19')](_0x262b('0x15'),_0x7a5b3f,_0x5a6837[_0x262b('0x19')][_0x262b('0x1b')]);return _0x44f383(_0x5a6837['error']['message']);}else{logger[_0x262b('0x14')](_0x262b('0x15'),_0x7a5b3f,_0x262b('0x16'));_0x44f383(_0x5a6837['result'][_0x262b('0x1b')]);}})['catch'](function(_0x37557e){logger[_0x262b('0x19')](_0x262b('0x15'),_0x7a5b3f,_0x37557e);_0xf3f772(_0x37557e);});});}exports['GetCmContact']=function(_0x22156d){var _0x2c9090=this;return new Promise(function(_0x1404e6,_0x514a81){return db[_0x262b('0x1c')][_0x262b('0x1d')]({'raw':_0x22156d[_0x262b('0x1e')]?_0x22156d[_0x262b('0x1e')][_0x262b('0x1f')]===undefined?!![]:![]:!![],'where':_0x22156d[_0x262b('0x1e')]?_0x22156d['options'][_0x262b('0x20')]||null:null,'attributes':_0x22156d[_0x262b('0x1e')]?_0x22156d['options'][_0x262b('0x21')]||null:null,'limit':_0x22156d[_0x262b('0x1e')]?_0x22156d['options'][_0x262b('0x22')]||null:null,'include':_0x22156d['options']?_0x22156d[_0x262b('0x1e')][_0x262b('0x23')]?_[_0x262b('0x24')](_0x22156d['options'][_0x262b('0x23')],function(_0x28c662){return{'model':db[_0x28c662[_0x262b('0x25')]],'as':_0x28c662['as'],'attributes':_0x28c662[_0x262b('0x21')],'include':_0x28c662[_0x262b('0x23')]?_[_0x262b('0x24')](_0x28c662[_0x262b('0x23')],function(_0x53a4c3){return{'model':db[_0x53a4c3[_0x262b('0x25')]],'as':_0x53a4c3['as'],'attributes':_0x53a4c3['attributes'],'include':_0x53a4c3[_0x262b('0x23')]?_['map'](_0x53a4c3[_0x262b('0x23')],function(_0x5afa3c){return{'model':db[_0x5afa3c['model']],'as':_0x5afa3c['as'],'attributes':_0x5afa3c['attributes']};}):[]};}):[]};}):[]:[]})[_0x262b('0x13')](function(_0x506188){logger[_0x262b('0x14')]('GetCmContact',_0x22156d);logger[_0x262b('0x26')](_0x262b('0x27'),_0x22156d,JSON[_0x262b('0x18')](_0x506188));_0x1404e6(_0x506188);})[_0x262b('0x28')](function(_0x49cbc7){logger[_0x262b('0x19')](_0x262b('0x27'),_0x49cbc7[_0x262b('0x1b')],_0x22156d);_0x514a81(_0x2c9090[_0x262b('0x19')](0x1f4,_0x49cbc7[_0x262b('0x1b')]));});});};exports[_0x262b('0x29')]=function(_0x42de0c){var _0x26a17f=this;return new Promise(function(_0x15904b,_0x22b3ab){return db[_0x262b('0x1c')][_0x262b('0x2a')](_0x42de0c[_0x262b('0x2b')],{'raw':_0x42de0c['options']?_0x42de0c[_0x262b('0x1e')][_0x262b('0x1f')]===undefined?!![]:![]:!![]})[_0x262b('0x13')](function(_0x219068){var _0x1caeee;for(var _0x25c065=0x0;_0x25c065<Object[_0x262b('0x2c')](_0x42de0c[_0x262b('0x2b')])[_0x262b('0x2d')];_0x25c065++){var _0x147d3b=Object[_0x262b('0x2c')](_0x42de0c[_0x262b('0x2b')])[_0x25c065];if(_0x147d3b[_0x262b('0x2e')](_0x262b('0x2f'))){_0x1caeee=squel['update']()[_0x262b('0x30')]('cm_contacts')[_0x262b('0x31')](_0x147d3b,_0x42de0c[_0x262b('0x2b')][_0x147d3b])['where'](_0x262b('0x32'),_0x219068['id'])['toString']();break;}}if(!_0x1caeee)return _0x219068;return db['sequelize'][_0x262b('0x33')](_0x1caeee)[_0x262b('0x13')](function(){return _0x219068;});})[_0x262b('0x13')](function(_0x33879f){logger[_0x262b('0x14')](_0x262b('0x29'),_0x42de0c);logger[_0x262b('0x26')]('CreateCmContact',_0x42de0c,JSON[_0x262b('0x18')](_0x33879f));_0x15904b(_0x33879f);})[_0x262b('0x28')](function(_0x47c425){logger[_0x262b('0x19')](_0x262b('0x29'),_0x47c425[_0x262b('0x1b')],_0x42de0c);_0x22b3ab(_0x26a17f[_0x262b('0x19')](0x1f4,_0x47c425[_0x262b('0x1b')]));});});};
\ No newline at end of file
+var _0x1d38=['randomstring','ioredis','squel','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','register','then','info','CmContact,\x20%s,\x20%s','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetCmContact','findAll','options','raw','where','attributes','limit','include','map','model','debug','CreateCmContact','create','body','keys','startsWith','table','cm_contacts','set','id\x20=\x20?','toString','sequelize','query','lodash','bluebird'];(function(_0x5750a,_0x5922a8){var _0x531456=function(_0x21fecf){while(--_0x21fecf){_0x5750a['push'](_0x5750a['shift']());}};_0x531456(++_0x5922a8);}(_0x1d38,0xf3));var _0x81d3=function(_0x524977,_0x418989){_0x524977=_0x524977-0x0;var _0x367eff=_0x1d38[_0x524977];return _0x367eff;};'use strict';var _=require(_0x81d3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x81d3('0x1'));var rs=require(_0x81d3('0x2'));var fs=require('fs');var Redis=require(_0x81d3('0x3'));var squel=require(_0x81d3('0x4'));var db=require(_0x81d3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x81d3('0x6'))(_0x81d3('0x7'));var config=require(_0x81d3('0x8'));var jayson=require(_0x81d3('0x9'));var client=jayson[_0x81d3('0xa')][_0x81d3('0xb')]({'port':0x232a});config['redis']=_[_0x81d3('0xc')](config['redis'],{'host':_0x81d3('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./cmContact.socket')[_0x81d3('0xe')](socket);function respondWithRpcPromise(_0x5a5d92,_0x49cad7,_0x25b563){return new BPromise(function(_0x18b4c9,_0x3bf9b4){return client['request'](_0x5a5d92,_0x25b563)[_0x81d3('0xf')](function(_0x35d7fc){logger[_0x81d3('0x10')](_0x81d3('0x11'),_0x49cad7,'request\x20sent');logger['debug'](_0x81d3('0x12'),_0x49cad7,'request\x20sent',JSON[_0x81d3('0x13')](_0x35d7fc));if(_0x35d7fc['error']){if(_0x35d7fc[_0x81d3('0x14')][_0x81d3('0x15')]===0x1f4){logger[_0x81d3('0x14')](_0x81d3('0x11'),_0x49cad7,_0x35d7fc[_0x81d3('0x14')][_0x81d3('0x16')]);return _0x3bf9b4(_0x35d7fc[_0x81d3('0x14')][_0x81d3('0x16')]);}logger[_0x81d3('0x14')](_0x81d3('0x11'),_0x49cad7,_0x35d7fc[_0x81d3('0x14')][_0x81d3('0x16')]);return _0x18b4c9(_0x35d7fc[_0x81d3('0x14')][_0x81d3('0x16')]);}else{logger[_0x81d3('0x10')](_0x81d3('0x11'),_0x49cad7,_0x81d3('0x17'));_0x18b4c9(_0x35d7fc[_0x81d3('0x18')][_0x81d3('0x16')]);}})[_0x81d3('0x19')](function(_0x494a07){logger[_0x81d3('0x14')](_0x81d3('0x11'),_0x49cad7,_0x494a07);_0x3bf9b4(_0x494a07);});});}exports[_0x81d3('0x1a')]=function(_0x3f801c){var _0x481f51=this;return new Promise(function(_0x2a17b6,_0x248185){return db['CmContact'][_0x81d3('0x1b')]({'raw':_0x3f801c[_0x81d3('0x1c')]?_0x3f801c[_0x81d3('0x1c')][_0x81d3('0x1d')]===undefined?!![]:![]:!![],'where':_0x3f801c[_0x81d3('0x1c')]?_0x3f801c['options'][_0x81d3('0x1e')]||null:null,'attributes':_0x3f801c[_0x81d3('0x1c')]?_0x3f801c[_0x81d3('0x1c')][_0x81d3('0x1f')]||null:null,'limit':_0x3f801c[_0x81d3('0x1c')]?_0x3f801c['options'][_0x81d3('0x20')]||null:null,'include':_0x3f801c[_0x81d3('0x1c')]?_0x3f801c[_0x81d3('0x1c')][_0x81d3('0x21')]?_[_0x81d3('0x22')](_0x3f801c['options'][_0x81d3('0x21')],function(_0xccc7d){return{'model':db[_0xccc7d[_0x81d3('0x23')]],'as':_0xccc7d['as'],'attributes':_0xccc7d[_0x81d3('0x1f')],'include':_0xccc7d['include']?_['map'](_0xccc7d['include'],function(_0x1c3e11){return{'model':db[_0x1c3e11['model']],'as':_0x1c3e11['as'],'attributes':_0x1c3e11[_0x81d3('0x1f')],'include':_0x1c3e11['include']?_['map'](_0x1c3e11[_0x81d3('0x21')],function(_0x3f5c43){return{'model':db[_0x3f5c43['model']],'as':_0x3f5c43['as'],'attributes':_0x3f5c43[_0x81d3('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x81d3('0xf')](function(_0x3b7446){logger[_0x81d3('0x10')](_0x81d3('0x1a'),_0x3f801c);logger[_0x81d3('0x24')](_0x81d3('0x1a'),_0x3f801c,JSON[_0x81d3('0x13')](_0x3b7446));_0x2a17b6(_0x3b7446);})[_0x81d3('0x19')](function(_0x4208ca){logger[_0x81d3('0x14')]('GetCmContact',_0x4208ca[_0x81d3('0x16')],_0x3f801c);_0x248185(_0x481f51[_0x81d3('0x14')](0x1f4,_0x4208ca['message']));});});};exports[_0x81d3('0x25')]=function(_0x4a337c){var _0x1204ea=this;return new Promise(function(_0x3d33c1,_0x114717){return db['CmContact'][_0x81d3('0x26')](_0x4a337c[_0x81d3('0x27')],{'raw':_0x4a337c[_0x81d3('0x1c')]?_0x4a337c[_0x81d3('0x1c')][_0x81d3('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x240265){var _0x3a76c9;for(var _0x2f8880=0x0;_0x2f8880<Object[_0x81d3('0x28')](_0x4a337c['body'])['length'];_0x2f8880++){var _0x5ca06a=Object[_0x81d3('0x28')](_0x4a337c[_0x81d3('0x27')])[_0x2f8880];if(_0x5ca06a[_0x81d3('0x29')]('cf_')){_0x3a76c9=squel['update']()[_0x81d3('0x2a')](_0x81d3('0x2b'))[_0x81d3('0x2c')](_0x5ca06a,_0x4a337c['body'][_0x5ca06a])[_0x81d3('0x1e')](_0x81d3('0x2d'),_0x240265['id'])[_0x81d3('0x2e')]();break;}}if(!_0x3a76c9)return _0x240265;return db[_0x81d3('0x2f')][_0x81d3('0x30')](_0x3a76c9)[_0x81d3('0xf')](function(){return _0x240265;});})['then'](function(_0x4e6b48){logger[_0x81d3('0x10')](_0x81d3('0x25'),_0x4a337c);logger['debug'](_0x81d3('0x25'),_0x4a337c,JSON['stringify'](_0x4e6b48));_0x3d33c1(_0x4e6b48);})[_0x81d3('0x19')](function(_0x4f09bb){logger[_0x81d3('0x14')](_0x81d3('0x25'),_0x4f09bb[_0x81d3('0x16')],_0x4a337c);_0x114717(_0x1204ea[_0x81d3('0x14')](0x1f4,_0x4f09bb['message']));});});};
\ No newline at end of file
index 86e4086..6bff796 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 5c9acaf..c24925f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe145=['originalname','replace','format','%s-%s%s','basename','now','extname','/csv','single','file','uploadCsv','upload','/upload/:id','import','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmContact.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/jscripty_sessions','getJscriptySessions','getJourney','post','/merge','merge','create','setTags','diskStorage','join','root','server/files/tmp'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0xe145,0x16f));var _0x5e14=function(_0x59cd53,_0x37b88c){_0x59cd53=_0x59cd53-0x0;var _0x2f7cda=_0xe145[_0x59cd53];return _0x2f7cda;};'use strict';var multer=require(_0x5e14('0x0'));var util=require('util');var path=require(_0x5e14('0x1'));var timeout=require(_0x5e14('0x2'));var express=require(_0x5e14('0x3'));var router=express[_0x5e14('0x4')]();var fs_extra=require(_0x5e14('0x5'));var auth=require(_0x5e14('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5e14('0x7'));var controller=require(_0x5e14('0x8'));router[_0x5e14('0x9')]('/',auth[_0x5e14('0xa')](),controller[_0x5e14('0xb')]);router[_0x5e14('0x9')](_0x5e14('0xc'),auth['isAuthenticated'](),controller[_0x5e14('0xd')]);router['get'](_0x5e14('0xe'),auth[_0x5e14('0xa')](),controller[_0x5e14('0xf')]);router[_0x5e14('0x9')](_0x5e14('0x10'),auth['isAuthenticated'](),controller[_0x5e14('0x11')]);router[_0x5e14('0x9')](_0x5e14('0x12'),auth[_0x5e14('0xa')](),controller[_0x5e14('0x13')]);router[_0x5e14('0x9')](_0x5e14('0x14'),auth[_0x5e14('0xa')](),controller['getHopperHistories']);router['get']('/:id/hopper_finals',auth[_0x5e14('0xa')](),controller['getHopperFinals']);router['get'](_0x5e14('0x15'),auth[_0x5e14('0xa')](),controller[_0x5e14('0x16')]);router['get']('/:id/journey',auth[_0x5e14('0xa')](),controller[_0x5e14('0x17')]);router[_0x5e14('0x18')](_0x5e14('0x19'),auth[_0x5e14('0xa')](),controller[_0x5e14('0x1a')]);router[_0x5e14('0x18')]('/',auth[_0x5e14('0xa')](),controller[_0x5e14('0x1b')]);router[_0x5e14('0x18')]('/create_many',auth[_0x5e14('0xa')](),controller['bulkCreate']);router['post']('/:id/tags',auth[_0x5e14('0xa')](),controller[_0x5e14('0x1c')]);var upload=multer({'storage':multer[_0x5e14('0x1d')]({'destination':function(_0x52bbab,_0x706778,_0x559d3a){_0x559d3a(null,path[_0x5e14('0x1e')](config[_0x5e14('0x1f')],_0x5e14('0x20')));},'filename':function(_0x25b436,_0x267615,_0x3e6e3b){_0x267615[_0x5e14('0x21')]=_0x267615[_0x5e14('0x21')][_0x5e14('0x22')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3e6e3b(null,util[_0x5e14('0x23')](_0x5e14('0x24'),path[_0x5e14('0x25')](_0x267615[_0x5e14('0x21')],path['extname'](_0x267615[_0x5e14('0x21')])),Date[_0x5e14('0x26')](),path[_0x5e14('0x27')](_0x267615[_0x5e14('0x21')])));}})});router[_0x5e14('0x18')](_0x5e14('0x28'),upload[_0x5e14('0x29')](_0x5e14('0x2a')),controller[_0x5e14('0x2b')]);var upload=multer({'storage':multer[_0x5e14('0x1d')]({'destination':function(_0x2ae140,_0x264e3f,_0x40f0f0){_0x40f0f0(null,path['join'](config[_0x5e14('0x1f')],'server/files/tmp'));},'filename':function(_0x215042,_0x46536a,_0x22fca0){_0x46536a[_0x5e14('0x21')]=_0x46536a['originalname'][_0x5e14('0x22')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x22fca0(null,util[_0x5e14('0x23')](_0x5e14('0x24'),path['basename'](_0x46536a[_0x5e14('0x21')],path[_0x5e14('0x27')](_0x46536a[_0x5e14('0x21')])),Date['now'](),path[_0x5e14('0x27')](_0x46536a[_0x5e14('0x21')])));}})});router['post']('/upload',upload[_0x5e14('0x29')](_0x5e14('0x2a')),controller[_0x5e14('0x2c')]);router[_0x5e14('0x18')](_0x5e14('0x2d'),auth[_0x5e14('0xa')](),controller[_0x5e14('0x2e')]);router['put'](_0x5e14('0xe'),auth['isAuthenticated'](),controller[_0x5e14('0x2f')]);router[_0x5e14('0x30')]('/:id',auth[_0x5e14('0xa')](),controller[_0x5e14('0x31')]);module['exports']=router;
\ No newline at end of file
+var _0x26c2=['single','uploadCsv','replace','file','upload','/upload/:id','import','update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','index','/:id','show','/:id/tags','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/jscripty_sessions','/:id/journey','post','/merge','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','server/files/tmp','originalname','format','%s-%s%s','basename','extname'];(function(_0x517601,_0x173b35){var _0x1d470a=function(_0x324bae){while(--_0x324bae){_0x517601['push'](_0x517601['shift']());}};_0x1d470a(++_0x173b35);}(_0x26c2,0x1d6));var _0x226c=function(_0x968dc6,_0xe44160){_0x968dc6=_0x968dc6-0x0;var _0x8d0ee5=_0x26c2[_0x968dc6];return _0x8d0ee5;};'use strict';var multer=require('multer');var util=require(_0x226c('0x0'));var path=require(_0x226c('0x1'));var timeout=require(_0x226c('0x2'));var express=require(_0x226c('0x3'));var router=express['Router']();var fs_extra=require(_0x226c('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x226c('0x5'));var config=require(_0x226c('0x6'));var controller=require(_0x226c('0x7'));router[_0x226c('0x8')]('/',auth[_0x226c('0x9')](),controller[_0x226c('0xa')]);router[_0x226c('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x226c('0x8')](_0x226c('0xb'),auth['isAuthenticated'](),controller[_0x226c('0xc')]);router[_0x226c('0x8')](_0x226c('0xd'),auth[_0x226c('0x9')](),controller[_0x226c('0xe')]);router[_0x226c('0x8')](_0x226c('0xf'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x226c('0x8')](_0x226c('0x10'),auth[_0x226c('0x9')](),controller[_0x226c('0x11')]);router['get']('/:id/hopper_finals',auth[_0x226c('0x9')](),controller[_0x226c('0x12')]);router[_0x226c('0x8')](_0x226c('0x13'),auth[_0x226c('0x9')](),controller['getJscriptySessions']);router[_0x226c('0x8')](_0x226c('0x14'),auth[_0x226c('0x9')](),controller['getJourney']);router[_0x226c('0x15')](_0x226c('0x16'),auth[_0x226c('0x9')](),controller[_0x226c('0x17')]);router[_0x226c('0x15')]('/',auth[_0x226c('0x9')](),controller[_0x226c('0x18')]);router[_0x226c('0x15')](_0x226c('0x19'),auth[_0x226c('0x9')](),controller[_0x226c('0x1a')]);router[_0x226c('0x15')](_0x226c('0xd'),auth['isAuthenticated'](),controller[_0x226c('0x1b')]);var upload=multer({'storage':multer[_0x226c('0x1c')]({'destination':function(_0x1abe31,_0x49f43d,_0x4038b0){_0x4038b0(null,path[_0x226c('0x1d')](config['root'],_0x226c('0x1e')));},'filename':function(_0x29c441,_0x10354d,_0x422ab8){_0x10354d[_0x226c('0x1f')]=_0x10354d[_0x226c('0x1f')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x422ab8(null,util[_0x226c('0x20')](_0x226c('0x21'),path[_0x226c('0x22')](_0x10354d[_0x226c('0x1f')],path[_0x226c('0x23')](_0x10354d[_0x226c('0x1f')])),Date['now'](),path[_0x226c('0x23')](_0x10354d[_0x226c('0x1f')])));}})});router[_0x226c('0x15')]('/csv',upload[_0x226c('0x24')]('file'),controller[_0x226c('0x25')]);var upload=multer({'storage':multer[_0x226c('0x1c')]({'destination':function(_0x1a9454,_0x343eec,_0x5b099f){_0x5b099f(null,path['join'](config['root'],'server/files/tmp'));},'filename':function(_0x52d2aa,_0x49f39,_0x8ed8b6){_0x49f39['originalname']=_0x49f39[_0x226c('0x1f')][_0x226c('0x26')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x8ed8b6(null,util[_0x226c('0x20')](_0x226c('0x21'),path[_0x226c('0x22')](_0x49f39['originalname'],path[_0x226c('0x23')](_0x49f39[_0x226c('0x1f')])),Date['now'](),path[_0x226c('0x23')](_0x49f39[_0x226c('0x1f')])));}})});router[_0x226c('0x15')]('/upload',upload[_0x226c('0x24')](_0x226c('0x27')),controller[_0x226c('0x28')]);router[_0x226c('0x15')](_0x226c('0x29'),auth[_0x226c('0x9')](),controller[_0x226c('0x2a')]);router['put'](_0x226c('0xb'),auth[_0x226c('0x9')](),controller[_0x226c('0x2b')]);router['delete'](_0x226c('0xb'),auth[_0x226c('0x9')](),controller[_0x226c('0x2c')]);module[_0x226c('0x2d')]=router;
\ No newline at end of file
index ee69dab..b9912f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3f2=['getDataValue','name','TEXT','type','select','parse','values','isArray','setDataValue','stringify','BOOLEAN','voice','sequelize','lodash','VIRTUAL','alias','STRING'];(function(_0x63da33,_0x2b7f0a){var _0x557399=function(_0x437d79){while(--_0x437d79){_0x63da33['push'](_0x63da33['shift']());}};_0x557399(++_0x2b7f0a);}(_0xf3f2,0xe9));var _0x2f3f=function(_0x5ab486,_0x4a4bdf){_0x5ab486=_0x5ab486-0x0;var _0x2d830f=_0xf3f2[_0x5ab486];return _0x2d830f;};'use strict';var Sequelize=require(_0x2f3f('0x0'));var _=require(_0x2f3f('0x1'));module['exports']={'name':{'type':Sequelize[_0x2f3f('0x2')],'get':function(_0x55b740){return this['getDataValue'](_0x2f3f('0x3'));}},'alias':{'type':Sequelize[_0x2f3f('0x4')],'allowNull':![],'set':function(_0x52949f){this['setDataValue'](_0x2f3f('0x3'),_0x52949f?_0x52949f:this[_0x2f3f('0x5')](_0x2f3f('0x6')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0x2f3f('0x7')]('long'),'get':function(){if(this[_0x2f3f('0x5')](_0x2f3f('0x8'))===_0x2f3f('0x9')){return JSON[_0x2f3f('0xa')](this[_0x2f3f('0x5')](_0x2f3f('0xb')));}else{return this[_0x2f3f('0x5')]('values');}},'set':function(_0x489f0e){if(Array[_0x2f3f('0xc')](_0x489f0e)){this[_0x2f3f('0xd')](_0x2f3f('0xb'),JSON[_0x2f3f('0xe')](_0x489f0e));}else{this[_0x2f3f('0xd')](_0x2f3f('0xb'),_0x489f0e);}}},'required':{'type':Sequelize[_0x2f3f('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x2f3f('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x2f3f('0x10'))}};
\ No newline at end of file
+var _0x429f=['long','select','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','setDataValue','name','TEXT'];(function(_0x161fc1,_0x1bae26){var _0x1ba92f=function(_0x7889e4){while(--_0x7889e4){_0x161fc1['push'](_0x161fc1['shift']());}};_0x1ba92f(++_0x1bae26);}(_0x429f,0x107));var _0xf429=function(_0x3f0743,_0x19c784){_0x3f0743=_0x3f0743-0x0;var _0x291c35=_0x429f[_0x3f0743];return _0x291c35;};'use strict';var Sequelize=require(_0xf429('0x0'));var _=require(_0xf429('0x1'));module[_0xf429('0x2')]={'name':{'type':Sequelize[_0xf429('0x3')],'get':function(_0xf7f908){return this[_0xf429('0x4')](_0xf429('0x5'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0xddaf14){this[_0xf429('0x6')](_0xf429('0x5'),_0xddaf14?_0xddaf14:this['getDataValue'](_0xf429('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0xf429('0x8')](_0xf429('0x9')),'get':function(){if(this[_0xf429('0x4')]('type')===_0xf429('0xa')){return JSON['parse'](this[_0xf429('0x4')]('values'));}else{return this[_0xf429('0x4')](_0xf429('0xb'));}},'set':function(_0x40c8bc){if(Array[_0xf429('0xc')](_0x40c8bc)){this['setDataValue']('values',JSON[_0xf429('0xd')](_0x40c8bc));}else{this[_0xf429('0x6')](_0xf429('0xb'),_0x40c8bc);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xf429('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xf429('0xf')](_0xf429('0x10'))}};
\ No newline at end of file
index 78c1409..25d0542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff5=['hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','includeAll','include','findAll','rows','catch','show','intersection','options','find','body','params','sequelize','Sequelize','TEXT','text','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','attributes','fields','length'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0x9ff5,0x74));var _0x59ff=function(_0x1d50f2,_0x3c3ec6){_0x1d50f2=_0x1d50f2-0x0;var _0x3769b8=_0x9ff5[_0x1d50f2];return _0x3769b8;};'use strict';var emlformat=require(_0x59ff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x59ff('0x1'));var jsonpatch=require(_0x59ff('0x2'));var rp=require(_0x59ff('0x3'));var moment=require(_0x59ff('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x59ff('0x5'));var path=require(_0x59ff('0x6'));var sox=require('sox');var csv=require(_0x59ff('0x7'));var ejs=require(_0x59ff('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x59ff('0x9'));var crypto=require('crypto');var jsforce=require(_0x59ff('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x59ff('0xb'));var Redis=require(_0x59ff('0xc'));var authService=require(_0x59ff('0xd'));var qs=require(_0x59ff('0xe'));var as=require(_0x59ff('0xf'));var hardwareService=require(_0x59ff('0x10'));var logger=require('../../config/logger')(_0x59ff('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x59ff('0x12'));var db=require(_0x59ff('0x13'))['db'];function respondWithStatusCode(_0x208e0a,_0x39aa88){_0x39aa88=_0x39aa88||0xcc;return function(_0x3d99f9){if(_0x3d99f9){return _0x208e0a[_0x59ff('0x14')](_0x39aa88);}return _0x208e0a[_0x59ff('0x15')](_0x39aa88)[_0x59ff('0x16')]();};}function respondWithResult(_0x4d8db4,_0x2c9d3c){_0x2c9d3c=_0x2c9d3c||0xc8;return function(_0x16f688){if(_0x16f688){return _0x4d8db4[_0x59ff('0x15')](_0x2c9d3c)[_0x59ff('0x17')](_0x16f688);}};}function respondWithFilteredResult(_0x53b847,_0x398263){return function(_0x59e88a){if(_0x59e88a){var _0x1afaf6=typeof _0x398263[_0x59ff('0x18')]===_0x59ff('0x19')&&typeof _0x398263[_0x59ff('0x1a')]===_0x59ff('0x19');var _0x2d2589=_0x59e88a[_0x59ff('0x1b')];var _0x5b202b=_0x1afaf6?0x0:_0x398263[_0x59ff('0x18')];var _0x34bba0=_0x1afaf6?_0x59e88a['count']:_0x398263['offset']+_0x398263[_0x59ff('0x1a')];var _0x1c8e38;if(_0x34bba0>=_0x2d2589){_0x34bba0=_0x2d2589;_0x1c8e38=0xc8;}else{_0x1c8e38=0xce;}_0x53b847[_0x59ff('0x15')](_0x1c8e38);return _0x53b847[_0x59ff('0x1c')](_0x59ff('0x1d'),_0x5b202b+'-'+_0x34bba0+'/'+_0x2d2589)[_0x59ff('0x17')](_0x59e88a);}return null;};}function patchUpdates(_0x4d2572){return function(_0x47a5e7){try{jsonpatch[_0x59ff('0x1e')](_0x47a5e7,_0x4d2572,!![]);}catch(_0x553b89){return BPromise[_0x59ff('0x1f')](_0x553b89);}return _0x47a5e7[_0x59ff('0x20')]();};}function saveUpdates(_0x2105ff,_0x30b71f){return function(_0x20a94d){if(_0x20a94d){return _0x20a94d[_0x59ff('0x21')](_0x2105ff)[_0x59ff('0x22')](function(_0x31c209){return _0x31c209;});}return null;};}function removeEntity(_0x5d1842,_0x5ddb8e){return function(_0x278bcf){if(_0x278bcf){return _0x278bcf[_0x59ff('0x23')]()[_0x59ff('0x22')](function(){_0x5d1842['status'](0xcc)[_0x59ff('0x16')]();});}};}function handleEntityNotFound(_0x158aaf,_0x2f8d1c){return function(_0x55d09d){if(!_0x55d09d){_0x158aaf[_0x59ff('0x14')](0x194);}return _0x55d09d;};}function handleError(_0x42d12c,_0xf0243f){_0xf0243f=_0xf0243f||0x1f4;return function(_0x4fd879){logger[_0x59ff('0x24')](_0x4fd879[_0x59ff('0x25')]);if(_0x4fd879[_0x59ff('0x26')]){delete _0x4fd879[_0x59ff('0x26')];}_0x42d12c['status'](_0xf0243f)[_0x59ff('0x27')](_0x4fd879);};}exports[_0x59ff('0x28')]=function(_0x3fdcc6,_0x1ba1bd){var _0xa20713={},_0x24c4c9={},_0x253ef3={'count':0x0,'rows':[]};var _0x548421=_[_0x59ff('0x29')](db[_0x59ff('0x2a')][_0x59ff('0x2b')],function(_0x535087){return{'name':_0x535087[_0x59ff('0x2c')],'type':_0x535087['type'][_0x59ff('0x2d')]};});_0x24c4c9[_0x59ff('0x2e')]=_[_0x59ff('0x2f')](_[_0x59ff('0x29')](_0x548421,_0x59ff('0x26')),[_0x59ff('0x26')]);_0x24c4c9[_0x59ff('0x30')]=_[_0x59ff('0x31')](_0x3fdcc6[_0x59ff('0x30')]);_0x24c4c9[_0x59ff('0x32')]=_['intersection'](_0x24c4c9[_0x59ff('0x2e')],_0x24c4c9[_0x59ff('0x30')]);_0xa20713[_0x59ff('0x33')]=_['intersection'](_0x24c4c9['model'],qs[_0x59ff('0x34')](_0x3fdcc6[_0x59ff('0x30')][_0x59ff('0x34')]));_0xa20713['attributes']=_0xa20713[_0x59ff('0x33')][_0x59ff('0x35')]?_0xa20713[_0x59ff('0x33')]:_0x24c4c9[_0x59ff('0x2e')];if(!_0x3fdcc6[_0x59ff('0x30')][_0x59ff('0x36')](_0x59ff('0x37'))){_0xa20713[_0x59ff('0x1a')]=qs['limit'](_0x3fdcc6['query']['limit']);_0xa20713[_0x59ff('0x18')]=qs[_0x59ff('0x18')](_0x3fdcc6['query'][_0x59ff('0x18')]);}_0xa20713['order']=qs[_0x59ff('0x38')](_0x3fdcc6[_0x59ff('0x30')][_0x59ff('0x38')]);_0xa20713[_0x59ff('0x39')]=qs['filters'](_[_0x59ff('0x3a')](_0x3fdcc6[_0x59ff('0x30')],_0x24c4c9['filters']),_0x548421);if(_0x3fdcc6[_0x59ff('0x30')][_0x59ff('0x3b')]){_0xa20713['where']=_[_0x59ff('0x3c')](_0xa20713['where'],{'$or':_[_0x59ff('0x29')](_0x548421,function(_0x3af148){if(_0x3af148[_0x59ff('0x3d')]!=='VIRTUAL'){var _0x4458bb={};_0x4458bb[_0x3af148[_0x59ff('0x26')]]={'$like':'%'+_0x3fdcc6[_0x59ff('0x30')][_0x59ff('0x3b')]+'%'};return _0x4458bb;}})});}_0xa20713=_[_0x59ff('0x3c')]({},_0xa20713,_0x3fdcc6['options']);var _0x4a2c14={'where':_0xa20713['where']};return db[_0x59ff('0x2a')]['count'](_0x4a2c14)[_0x59ff('0x22')](function(_0x1bc486){_0x253ef3['count']=_0x1bc486;if(_0x3fdcc6[_0x59ff('0x30')][_0x59ff('0x3e')]){_0xa20713[_0x59ff('0x3f')]=[{'all':!![]}];}return db['CmCustomField'][_0x59ff('0x40')](_0xa20713);})[_0x59ff('0x22')](function(_0x5ad735){_0x253ef3[_0x59ff('0x41')]=_0x5ad735;return _0x253ef3;})[_0x59ff('0x22')](respondWithFilteredResult(_0x1ba1bd,_0xa20713))[_0x59ff('0x42')](handleError(_0x1ba1bd,null));};exports[_0x59ff('0x43')]=function(_0x2357d1,_0x13378e){var _0x93954b={'raw':!![],'where':{'id':_0x2357d1['params']['id']}},_0x26a442={};_0x26a442['model']=_[_0x59ff('0x31')](db[_0x59ff('0x2a')][_0x59ff('0x2b')]);_0x26a442[_0x59ff('0x30')]=_[_0x59ff('0x31')](_0x2357d1[_0x59ff('0x30')]);_0x26a442[_0x59ff('0x32')]=_[_0x59ff('0x44')](_0x26a442[_0x59ff('0x2e')],_0x26a442['query']);_0x93954b[_0x59ff('0x33')]=_[_0x59ff('0x44')](_0x26a442['model'],qs[_0x59ff('0x34')](_0x2357d1[_0x59ff('0x30')][_0x59ff('0x34')]));_0x93954b[_0x59ff('0x33')]=_0x93954b[_0x59ff('0x33')][_0x59ff('0x35')]?_0x93954b[_0x59ff('0x33')]:_0x26a442[_0x59ff('0x2e')];if(_0x2357d1['query']['includeAll']){_0x93954b[_0x59ff('0x3f')]=[{'all':!![]}];}_0x93954b=_[_0x59ff('0x3c')]({},_0x93954b,_0x2357d1[_0x59ff('0x45')]);return db[_0x59ff('0x2a')][_0x59ff('0x46')](_0x93954b)['then'](handleEntityNotFound(_0x13378e,null))[_0x59ff('0x22')](respondWithResult(_0x13378e,null))['catch'](handleError(_0x13378e,null));};exports[_0x59ff('0x21')]=function(_0x22a7f6,_0x159f73){if(_0x22a7f6[_0x59ff('0x47')]['id']){delete _0x22a7f6[_0x59ff('0x47')]['id'];}return db[_0x59ff('0x2a')][_0x59ff('0x46')]({'where':{'id':_0x22a7f6[_0x59ff('0x48')]['id']}})[_0x59ff('0x22')](handleEntityNotFound(_0x159f73,null))[_0x59ff('0x22')](saveUpdates(_0x22a7f6[_0x59ff('0x47')],null))[_0x59ff('0x22')](respondWithResult(_0x159f73,null))['catch'](handleError(_0x159f73,null));};exports[_0x59ff('0x23')]=function(_0x12a24f,_0x34c37a){return db[_0x59ff('0x2a')][_0x59ff('0x46')]({'where':{'id':_0x12a24f[_0x59ff('0x48')]['id']}})[_0x59ff('0x22')](handleEntityNotFound(_0x34c37a,null))['then'](removeEntity(_0x34c37a,null))[_0x59ff('0x42')](handleError(_0x34c37a,null));};exports['create']=function(_0x225ac0,_0x561c71){var _0x56aee9;return db[_0x59ff('0x49')]['transaction'](function(_0x4211ee){return db[_0x59ff('0x2a')]['create'](_0x225ac0[_0x59ff('0x47')],{'transaction':_0x4211ee})['then'](function(_0x32d387){_0x56aee9=_0x32d387;var _0x71203d={'type':db[_0x59ff('0x4a')][_0x59ff('0x4b')],'transaction':_0x4211ee};switch(_0x225ac0[_0x59ff('0x47')][_0x59ff('0x3d')]){case _0x59ff('0x4c'):_0x71203d[_0x59ff('0x3d')]=db[_0x59ff('0x4a')][_0x59ff('0x4b')];break;case'number':_0x71203d['type']=db[_0x59ff('0x4a')][_0x59ff('0x4d')];break;case _0x59ff('0x4e'):_0x71203d[_0x59ff('0x3d')]=db['Sequelize']['BOOLEAN'];_0x71203d[_0x59ff('0x4f')]=![];break;default:}return db[_0x59ff('0x49')][_0x59ff('0x50')][_0x59ff('0x51')](_0x59ff('0x52'),util[_0x59ff('0x53')](_0x59ff('0x54'),_0x56aee9['id']),_0x71203d);})[_0x59ff('0x22')](function(){return _0x56aee9;});})[_0x59ff('0x22')](respondWithResult(_0x561c71,0xc9))[_0x59ff('0x42')](handleError(_0x561c71,null));};
\ No newline at end of file
+var _0x07be=['catch','show','params','options','body','find','sequelize','transaction','create','Sequelize','TEXT','text','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','format','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','CmCustomField','fieldName','type','key','differenceBy','query','keys','filters','intersection','model','attributes','fields','length','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x41c723,_0x2cb4f2){var _0x50da46=function(_0x133401){while(--_0x133401){_0x41c723['push'](_0x41c723['shift']());}};_0x50da46(++_0x2cb4f2);}(_0x07be,0x1c1));var _0xe07b=function(_0x36e9e7,_0x461e11){_0x36e9e7=_0x36e9e7-0x0;var _0x599ce2=_0x07be[_0x36e9e7];return _0x599ce2;};'use strict';var emlformat=require(_0xe07b('0x0'));var rimraf=require(_0xe07b('0x1'));var zipdir=require(_0xe07b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe07b('0x3'));var moment=require(_0xe07b('0x4'));var BPromise=require(_0xe07b('0x5'));var Mustache=require(_0xe07b('0x6'));var util=require(_0xe07b('0x7'));var path=require('path');var sox=require(_0xe07b('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe07b('0x9'));var _=require(_0xe07b('0xa'));var squel=require(_0xe07b('0xb'));var crypto=require(_0xe07b('0xc'));var jsforce=require(_0xe07b('0xd'));var deskjs=require(_0xe07b('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe07b('0xf'));var Papa=require(_0xe07b('0x10'));var Redis=require(_0xe07b('0x11'));var authService=require(_0xe07b('0x12'));var qs=require(_0xe07b('0x13'));var as=require(_0xe07b('0x14'));var hardwareService=require(_0xe07b('0x15'));var logger=require(_0xe07b('0x16'))(_0xe07b('0x17'));var utils=require(_0xe07b('0x18'));var config=require(_0xe07b('0x19'));var licenseUtil=require(_0xe07b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4f0b64,_0x57ca71){_0x57ca71=_0x57ca71||0xcc;return function(_0x49f66d){if(_0x49f66d){return _0x4f0b64['sendStatus'](_0x57ca71);}return _0x4f0b64[_0xe07b('0x1b')](_0x57ca71)['end']();};}function respondWithResult(_0x1abaeb,_0x50ca53){_0x50ca53=_0x50ca53||0xc8;return function(_0x49e831){if(_0x49e831){return _0x1abaeb[_0xe07b('0x1b')](_0x50ca53)[_0xe07b('0x1c')](_0x49e831);}};}function respondWithFilteredResult(_0x17084e,_0x2ec4c8){return function(_0x2e80b9){if(_0x2e80b9){var _0x12b73a=typeof _0x2ec4c8[_0xe07b('0x1d')]===_0xe07b('0x1e')&&typeof _0x2ec4c8['limit']===_0xe07b('0x1e');var _0x4a81fc=_0x2e80b9[_0xe07b('0x1f')];var _0x381fde=_0x12b73a?0x0:_0x2ec4c8['offset'];var _0x1c3788=_0x12b73a?_0x2e80b9[_0xe07b('0x1f')]:_0x2ec4c8[_0xe07b('0x1d')]+_0x2ec4c8[_0xe07b('0x20')];var _0x3e323f;if(_0x1c3788>=_0x4a81fc){_0x1c3788=_0x4a81fc;_0x3e323f=0xc8;}else{_0x3e323f=0xce;}_0x17084e[_0xe07b('0x1b')](_0x3e323f);return _0x17084e['set']('Content-Range',_0x381fde+'-'+_0x1c3788+'/'+_0x4a81fc)['json'](_0x2e80b9);}return null;};}function patchUpdates(_0x34fe17){return function(_0x2f5ddf){try{jsonpatch[_0xe07b('0x21')](_0x2f5ddf,_0x34fe17,!![]);}catch(_0x44ff7c){return BPromise[_0xe07b('0x22')](_0x44ff7c);}return _0x2f5ddf[_0xe07b('0x23')]();};}function saveUpdates(_0x82769c,_0x16c18c){return function(_0x10b51c){if(_0x10b51c){return _0x10b51c[_0xe07b('0x24')](_0x82769c)[_0xe07b('0x25')](function(_0x3e4db5){return _0x3e4db5;});}return null;};}function removeEntity(_0x2cd894,_0x3cd420){return function(_0x1ef13a){if(_0x1ef13a){return _0x1ef13a[_0xe07b('0x26')]()['then'](function(){_0x2cd894[_0xe07b('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x907227,_0x3d8b0e){return function(_0x47966a){if(!_0x47966a){_0x907227[_0xe07b('0x27')](0x194);}return _0x47966a;};}function handleError(_0x4f930f,_0x5035d5){_0x5035d5=_0x5035d5||0x1f4;return function(_0x138c2c){logger[_0xe07b('0x28')](_0x138c2c[_0xe07b('0x29')]);if(_0x138c2c[_0xe07b('0x2a')]){delete _0x138c2c['name'];}_0x4f930f[_0xe07b('0x1b')](_0x5035d5)['send'](_0x138c2c);};}exports[_0xe07b('0x2b')]=function(_0x43262d,_0x772a4e){var _0x5e3a0d={},_0x44c152={},_0x4cec72={'count':0x0,'rows':[]};var _0x34b1ea=_[_0xe07b('0x2c')](db[_0xe07b('0x2d')]['rawAttributes'],function(_0x1a8493){return{'name':_0x1a8493[_0xe07b('0x2e')],'type':_0x1a8493[_0xe07b('0x2f')][_0xe07b('0x30')]};});_0x44c152['model']=_[_0xe07b('0x31')](_[_0xe07b('0x2c')](_0x34b1ea,_0xe07b('0x2a')),['name']);_0x44c152[_0xe07b('0x32')]=_[_0xe07b('0x33')](_0x43262d[_0xe07b('0x32')]);_0x44c152[_0xe07b('0x34')]=_[_0xe07b('0x35')](_0x44c152[_0xe07b('0x36')],_0x44c152['query']);_0x5e3a0d[_0xe07b('0x37')]=_['intersection'](_0x44c152[_0xe07b('0x36')],qs[_0xe07b('0x38')](_0x43262d['query']['fields']));_0x5e3a0d[_0xe07b('0x37')]=_0x5e3a0d[_0xe07b('0x37')][_0xe07b('0x39')]?_0x5e3a0d[_0xe07b('0x37')]:_0x44c152[_0xe07b('0x36')];if(!_0x43262d[_0xe07b('0x32')]['hasOwnProperty']('nolimit')){_0x5e3a0d[_0xe07b('0x20')]=qs[_0xe07b('0x20')](_0x43262d[_0xe07b('0x32')][_0xe07b('0x20')]);_0x5e3a0d[_0xe07b('0x1d')]=qs[_0xe07b('0x1d')](_0x43262d[_0xe07b('0x32')][_0xe07b('0x1d')]);}_0x5e3a0d['order']=qs[_0xe07b('0x3a')](_0x43262d[_0xe07b('0x32')][_0xe07b('0x3a')]);_0x5e3a0d['where']=qs[_0xe07b('0x34')](_['pick'](_0x43262d['query'],_0x44c152[_0xe07b('0x34')]),_0x34b1ea);if(_0x43262d['query'][_0xe07b('0x3b')]){_0x5e3a0d[_0xe07b('0x3c')]=_[_0xe07b('0x3d')](_0x5e3a0d['where'],{'$or':_[_0xe07b('0x2c')](_0x34b1ea,function(_0x3bf90f){if(_0x3bf90f[_0xe07b('0x2f')]!==_0xe07b('0x3e')){var _0x487de5={};_0x487de5[_0x3bf90f[_0xe07b('0x2a')]]={'$like':'%'+_0x43262d[_0xe07b('0x32')][_0xe07b('0x3b')]+'%'};return _0x487de5;}})});}_0x5e3a0d=_[_0xe07b('0x3d')]({},_0x5e3a0d,_0x43262d['options']);var _0x503023={'where':_0x5e3a0d[_0xe07b('0x3c')]};return db[_0xe07b('0x2d')]['count'](_0x503023)[_0xe07b('0x25')](function(_0x394786){_0x4cec72[_0xe07b('0x1f')]=_0x394786;if(_0x43262d['query'][_0xe07b('0x3f')]){_0x5e3a0d[_0xe07b('0x40')]=[{'all':!![]}];}return db[_0xe07b('0x2d')][_0xe07b('0x41')](_0x5e3a0d);})[_0xe07b('0x25')](function(_0x3b1c70){_0x4cec72[_0xe07b('0x42')]=_0x3b1c70;return _0x4cec72;})['then'](respondWithFilteredResult(_0x772a4e,_0x5e3a0d))[_0xe07b('0x43')](handleError(_0x772a4e,null));};exports[_0xe07b('0x44')]=function(_0x16b34c,_0x4c3416){var _0x29736e={'raw':!![],'where':{'id':_0x16b34c[_0xe07b('0x45')]['id']}},_0x365ec2={};_0x365ec2[_0xe07b('0x36')]=_['keys'](db['CmCustomField']['rawAttributes']);_0x365ec2[_0xe07b('0x32')]=_['keys'](_0x16b34c[_0xe07b('0x32')]);_0x365ec2['filters']=_[_0xe07b('0x35')](_0x365ec2[_0xe07b('0x36')],_0x365ec2[_0xe07b('0x32')]);_0x29736e[_0xe07b('0x37')]=_[_0xe07b('0x35')](_0x365ec2[_0xe07b('0x36')],qs[_0xe07b('0x38')](_0x16b34c['query'][_0xe07b('0x38')]));_0x29736e[_0xe07b('0x37')]=_0x29736e['attributes'][_0xe07b('0x39')]?_0x29736e[_0xe07b('0x37')]:_0x365ec2[_0xe07b('0x36')];if(_0x16b34c[_0xe07b('0x32')][_0xe07b('0x3f')]){_0x29736e[_0xe07b('0x40')]=[{'all':!![]}];}_0x29736e=_[_0xe07b('0x3d')]({},_0x29736e,_0x16b34c[_0xe07b('0x46')]);return db['CmCustomField']['find'](_0x29736e)[_0xe07b('0x25')](handleEntityNotFound(_0x4c3416,null))[_0xe07b('0x25')](respondWithResult(_0x4c3416,null))[_0xe07b('0x43')](handleError(_0x4c3416,null));};exports['update']=function(_0x35c36d,_0x26c399){if(_0x35c36d[_0xe07b('0x47')]['id']){delete _0x35c36d[_0xe07b('0x47')]['id'];}return db[_0xe07b('0x2d')][_0xe07b('0x48')]({'where':{'id':_0x35c36d['params']['id']}})[_0xe07b('0x25')](handleEntityNotFound(_0x26c399,null))[_0xe07b('0x25')](saveUpdates(_0x35c36d[_0xe07b('0x47')],null))[_0xe07b('0x25')](respondWithResult(_0x26c399,null))[_0xe07b('0x43')](handleError(_0x26c399,null));};exports[_0xe07b('0x26')]=function(_0x2999af,_0x32877c){return db[_0xe07b('0x2d')][_0xe07b('0x48')]({'where':{'id':_0x2999af[_0xe07b('0x45')]['id']}})[_0xe07b('0x25')](handleEntityNotFound(_0x32877c,null))['then'](removeEntity(_0x32877c,null))['catch'](handleError(_0x32877c,null));};exports['create']=function(_0x193982,_0x6bd23d){var _0x4ce8eb;return db[_0xe07b('0x49')][_0xe07b('0x4a')](function(_0x293654){return db['CmCustomField'][_0xe07b('0x4b')](_0x193982[_0xe07b('0x47')],{'transaction':_0x293654})[_0xe07b('0x25')](function(_0x2ea102){_0x4ce8eb=_0x2ea102;var _0x2f9599={'type':db[_0xe07b('0x4c')][_0xe07b('0x4d')],'transaction':_0x293654};switch(_0x193982[_0xe07b('0x47')][_0xe07b('0x2f')]){case _0xe07b('0x4e'):_0x2f9599['type']=db[_0xe07b('0x4c')][_0xe07b('0x4d')];break;case'number':_0x2f9599[_0xe07b('0x2f')]=db[_0xe07b('0x4c')][_0xe07b('0x4f')];break;case _0xe07b('0x50'):_0x2f9599[_0xe07b('0x2f')]=db['Sequelize'][_0xe07b('0x51')];_0x2f9599[_0xe07b('0x52')]=![];break;default:}return db['sequelize'][_0xe07b('0x53')][_0xe07b('0x54')]('cm_contacts',util[_0xe07b('0x55')]('cf_%d',_0x4ce8eb['id']),_0x2f9599);})[_0xe07b('0x25')](function(){return _0x4ce8eb;});})[_0xe07b('0x25')](respondWithResult(_0x6bd23d,0xc9))['catch'](handleError(_0x6bd23d,null));};
\ No newline at end of file
index 1fe42cf..059e65e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x461f=['./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x4efddd,_0x39fb9d){var _0x4a1c46=function(_0x9832f1){while(--_0x9832f1){_0x4efddd['push'](_0x4efddd['shift']());}};_0x4a1c46(++_0x39fb9d);}(_0x461f,0x198));var _0xf461=function(_0x3cf518,_0x2cd587){_0x3cf518=_0x3cf518-0x0;var _0x187969=_0x461f[_0x3cf518];return _0x187969;};'use strict';var _=require(_0xf461('0x0'));var util=require('util');var logger=require(_0xf461('0x1'))(_0xf461('0x2'));var moment=require(_0xf461('0x3'));var BPromise=require(_0xf461('0x4'));var rp=require(_0xf461('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf461('0x6'));var config=require(_0xf461('0x7'));var attributes=require(_0xf461('0x8'));module[_0xf461('0x9')]=function(_0x384bb4,_0x4171b6){return _0x384bb4[_0xf461('0xa')](_0xf461('0xb'),attributes,{'tableName':_0xf461('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d69=['rimraf','../../config/environment','./cmCustomField.attributes','define','cm_custom_fields','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x116379,_0x5262f7){var _0x285630=function(_0x31928c){while(--_0x31928c){_0x116379['push'](_0x116379['shift']());}};_0x285630(++_0x5262f7);}(_0x5d69,0x17b));var _0x95d6=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x5d69[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x95d6('0x0'));var util=require('util');var logger=require(_0x95d6('0x1'))(_0x95d6('0x2'));var moment=require(_0x95d6('0x3'));var BPromise=require(_0x95d6('0x4'));var rp=require(_0x95d6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x95d6('0x6'));var config=require(_0x95d6('0x7'));var attributes=require(_0x95d6('0x8'));module['exports']=function(_0x332b31,_0x360d1b){return _0x332b31[_0x95d6('0x9')]('CmCustomField',attributes,{'tableName':_0x95d6('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef95276..b561aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ab7=['message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','CmCustomField,\x20%s,\x20%s'];(function(_0x5eb7c4,_0x15cdf5){var _0x18f41d=function(_0x44d772){while(--_0x44d772){_0x5eb7c4['push'](_0x5eb7c4['shift']());}};_0x18f41d(++_0x15cdf5);}(_0x8ab7,0x6b));var _0x78ab=function(_0x372a15,_0x534b2f){_0x372a15=_0x372a15-0x0;var _0x16ad39=_0x8ab7[_0x372a15];return _0x16ad39;};'use strict';var _=require(_0x78ab('0x0'));var util=require(_0x78ab('0x1'));var moment=require(_0x78ab('0x2'));var BPromise=require('bluebird');var rs=require(_0x78ab('0x3'));var fs=require('fs');var Redis=require(_0x78ab('0x4'));var db=require(_0x78ab('0x5'))['db'];var utils=require(_0x78ab('0x6'));var logger=require('../../config/logger')(_0x78ab('0x7'));var config=require(_0x78ab('0x8'));var jayson=require(_0x78ab('0x9'));var client=jayson[_0x78ab('0xa')][_0x78ab('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12bee7,_0x2010c7,_0xee8da2){return new BPromise(function(_0x337d92,_0x3467ba){return client['request'](_0x12bee7,_0xee8da2)[_0x78ab('0xc')](function(_0x40b6fd){logger[_0x78ab('0xd')]('CmCustomField,\x20%s,\x20%s',_0x2010c7,_0x78ab('0xe'));logger['debug'](_0x78ab('0xf'),_0x2010c7,'request\x20sent',JSON['stringify'](_0x40b6fd));if(_0x40b6fd[_0x78ab('0x10')]){if(_0x40b6fd[_0x78ab('0x10')][_0x78ab('0x11')]===0x1f4){logger[_0x78ab('0x10')](_0x78ab('0x12'),_0x2010c7,_0x40b6fd['error'][_0x78ab('0x13')]);return _0x3467ba(_0x40b6fd[_0x78ab('0x10')][_0x78ab('0x13')]);}logger['error'](_0x78ab('0x12'),_0x2010c7,_0x40b6fd['error'][_0x78ab('0x13')]);return _0x337d92(_0x40b6fd['error'][_0x78ab('0x13')]);}else{logger[_0x78ab('0xd')](_0x78ab('0x12'),_0x2010c7,_0x78ab('0xe'));_0x337d92(_0x40b6fd[_0x78ab('0x14')]['message']);}})['catch'](function(_0x26f5e8){logger[_0x78ab('0x10')]('CmCustomField,\x20%s,\x20%s',_0x2010c7,_0x26f5e8);_0x3467ba(_0x26f5e8);});});}
\ No newline at end of file
+var _0x434e=['rpc','../../config/environment','client','http','then','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','CmCustomField,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','../../config/utils'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0x434e,0x121));var _0xe434=function(_0x10df18,_0x13338c){_0x10df18=_0x10df18-0x0;var _0x1f9a1d=_0x434e[_0x10df18];return _0x1f9a1d;};'use strict';var _=require(_0xe434('0x0'));var util=require(_0xe434('0x1'));var moment=require(_0xe434('0x2'));var BPromise=require('bluebird');var rs=require(_0xe434('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe434('0x4'));var logger=require('../../config/logger')(_0xe434('0x5'));var config=require(_0xe434('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe434('0x7')][_0xe434('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2b83d9,_0x2030d7,_0x680a6e){return new BPromise(function(_0x5036e2,_0x2b18a4){return client['request'](_0x2b83d9,_0x680a6e)[_0xe434('0x9')](function(_0x2850a4){logger['info']('CmCustomField,\x20%s,\x20%s',_0x2030d7,_0xe434('0xa'));logger[_0xe434('0xb')](_0xe434('0xc'),_0x2030d7,_0xe434('0xa'),JSON[_0xe434('0xd')](_0x2850a4));if(_0x2850a4[_0xe434('0xe')]){if(_0x2850a4[_0xe434('0xe')][_0xe434('0xf')]===0x1f4){logger[_0xe434('0xe')](_0xe434('0x10'),_0x2030d7,_0x2850a4[_0xe434('0xe')]['message']);return _0x2b18a4(_0x2850a4['error'][_0xe434('0x11')]);}logger['error'](_0xe434('0x10'),_0x2030d7,_0x2850a4[_0xe434('0xe')][_0xe434('0x11')]);return _0x5036e2(_0x2850a4[_0xe434('0xe')][_0xe434('0x11')]);}else{logger[_0xe434('0x12')]('CmCustomField,\x20%s,\x20%s',_0x2030d7,_0xe434('0xa'));_0x5036e2(_0x2850a4[_0xe434('0x13')][_0xe434('0x11')]);}})[_0xe434('0x14')](function(_0x1831b2){logger[_0xe434('0xe')](_0xe434('0x10'),_0x2030d7,_0x1831b2);_0x2b18a4(_0x1831b2);});});}
\ No newline at end of file
index 647530e..cb5ffd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75a2=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','/:id','isAuthenticated','show','create','put','delete','destroy','exports'];(function(_0x3c0964,_0x48416f){var _0x44bb35=function(_0x63884c){while(--_0x63884c){_0x3c0964['push'](_0x3c0964['shift']());}};_0x44bb35(++_0x48416f);}(_0x75a2,0x187));var _0x275a=function(_0x2c3980,_0x5d177b){_0x2c3980=_0x2c3980-0x0;var _0x2fe94e=_0x75a2[_0x2c3980];return _0x2fe94e;};'use strict';var multer=require(_0x275a('0x0'));var util=require(_0x275a('0x1'));var path=require(_0x275a('0x2'));var timeout=require('connect-timeout');var express=require(_0x275a('0x3'));var router=express[_0x275a('0x4')]();var fs_extra=require(_0x275a('0x5'));var auth=require(_0x275a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x275a('0x7'));var controller=require('./cmCustomField.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x275a('0x8')](_0x275a('0x9'),auth[_0x275a('0xa')](),controller[_0x275a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x275a('0xc')]);router[_0x275a('0xd')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x275a('0xe')](_0x275a('0x9'),auth[_0x275a('0xa')](),controller[_0x275a('0xf')]);module[_0x275a('0x10')]=router;
\ No newline at end of file
+var _0x693d=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCustomField.controller','get','/:id','isAuthenticated','show','post','create','put','update'];(function(_0x36ddb6,_0x367f5b){var _0x20dd04=function(_0x489d66){while(--_0x489d66){_0x36ddb6['push'](_0x36ddb6['shift']());}};_0x20dd04(++_0x367f5b);}(_0x693d,0x153));var _0xd693=function(_0x46585b,_0x36ee90){_0x46585b=_0x46585b-0x0;var _0x1a0c84=_0x693d[_0x46585b];return _0x1a0c84;};'use strict';var multer=require(_0xd693('0x0'));var util=require(_0xd693('0x1'));var path=require(_0xd693('0x2'));var timeout=require(_0xd693('0x3'));var express=require(_0xd693('0x4'));var router=express[_0xd693('0x5')]();var fs_extra=require(_0xd693('0x6'));var auth=require(_0xd693('0x7'));var interaction=require(_0xd693('0x8'));var config=require('../../config/environment');var controller=require(_0xd693('0x9'));router[_0xd693('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd693('0xa')](_0xd693('0xb'),auth[_0xd693('0xc')](),controller[_0xd693('0xd')]);router[_0xd693('0xe')]('/',auth[_0xd693('0xc')](),controller[_0xd693('0xf')]);router[_0xd693('0x10')](_0xd693('0xb'),auth[_0xd693('0xc')](),controller[_0xd693('0x11')]);router[_0xd693('0x12')](_0xd693('0xb'),auth[_0xd693('0xc')](),controller[_0xd693('0x13')]);module[_0xd693('0x14')]=router;
\ No newline at end of file
index 0f133d0..731f915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf406=['INTEGER','STRING','UNSIGNED','contactListQueue','moment','sequelize','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1e2d7,_0x3090f7){var _0x2a9cc2=function(_0xb118b4){while(--_0xb118b4){_0x1e2d7['push'](_0x1e2d7['shift']());}};_0x2a9cc2(++_0x3090f7);}(_0xf406,0x18a));var _0x6f40=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0xf406[_0x1deb03];return _0x189fe7;};'use strict';var moment=require(_0x6f40('0x0'));var Sequelize=require(_0x6f40('0x1'));module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x6f40('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x6f40('0x3')],'defaultValue':moment()[_0x6f40('0x4')](_0x6f40('0x5'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x6f40('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6f40('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6f40('0x2')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6f40('0x7')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6f40('0x3')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x6f40('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x6f40('0x2')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x6f40('0x6')],'unique':_0x6f40('0x9')},'ListId':{'type':Sequelize[_0x6f40('0x6')],'unique':_0x6f40('0x9')},'UserId':{'type':Sequelize[_0x6f40('0x6')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x6f40('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x6f40('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6f40('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'recallmeNotifiedDate':{'type':Sequelize[_0x6f40('0x3')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x968c=['STRING','BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','contactListQueue','DATE','moment','sequelize'];(function(_0x3b1b23,_0x21bccd){var _0x1efc85=function(_0x102a95){while(--_0x102a95){_0x3b1b23['push'](_0x3b1b23['shift']());}};_0x1efc85(++_0x21bccd);}(_0x968c,0x73));var _0xc968=function(_0x3c3e8e,_0x3a9f14){_0x3c3e8e=_0x3c3e8e-0x0;var _0x224ee1=_0x968c[_0x3c3e8e];return _0x224ee1;};'use strict';var moment=require(_0xc968('0x0'));var Sequelize=require(_0xc968('0x1'));module['exports']={'phone':{'type':Sequelize[_0xc968('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0xc968('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0xc968('0x4')](_0xc968('0x5'))},'countbusyretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xc968('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0xc968('0x6')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xc968('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xc968('0x7')},'ListId':{'type':Sequelize[_0xc968('0x6')],'unique':_0xc968('0x7')},'UserId':{'type':Sequelize[_0xc968('0x6')]},'VoiceQueueId':{'type':Sequelize[_0xc968('0x6')],'unique':_0xc968('0x7')},'CampaignId':{'type':Sequelize[_0xc968('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xc968('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'recallmeNotifiedDate':{'type':Sequelize[_0xc968('0x8')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 836c527..8825bd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e5=['catch','create','update','body','describe','destroy','find','VoiceQueueId','CampaignId','VoiceQueue','createdAt','updatedAt','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','lastName','finally','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','UPDATE','CmCompany','List','Queue','getPreviewRecall','preview','Contact','Company','CmList','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','limit','undefined','count','status','Content-Range','json','apply','save','then','stack','name','index','map','CmHopper','rawAttributes','fieldName','type','key','query','keys','filters','intersection','concat','$and','$or','$gte','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$overlap','$contains','$contained','$any','attributes','fields','length','model','hasOwnProperty','nolimit','order','pick','filter','where','merge','options','includeAll','include','findAll','rows','show','params'];(function(_0x2cc711,_0x300328){var _0x31a52e=function(_0x588378){while(--_0x588378){_0x2cc711['push'](_0x2cc711['shift']());}};_0x31a52e(++_0x300328);}(_0xe2e5,0x178));var _0x5e2e=function(_0x3bd2e5,_0x31d9ad){_0x3bd2e5=_0x3bd2e5-0x0;var _0x215e27=_0xe2e5[_0x3bd2e5];return _0x215e27;};'use strict';var emlformat=require(_0x5e2e('0x0'));var rimraf=require(_0x5e2e('0x1'));var zipdir=require(_0x5e2e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e2e('0x3'));var moment=require(_0x5e2e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5e2e('0x5'));var util=require(_0x5e2e('0x6'));var path=require(_0x5e2e('0x7'));var sox=require('sox');var csv=require(_0x5e2e('0x8'));var ejs=require(_0x5e2e('0x9'));var fs=require('fs');var fs_extra=require(_0x5e2e('0xa'));var _=require(_0x5e2e('0xb'));var squel=require(_0x5e2e('0xc'));var crypto=require(_0x5e2e('0xd'));var jsforce=require(_0x5e2e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5e2e('0x8'));var querystring=require(_0x5e2e('0xf'));var Papa=require(_0x5e2e('0x10'));var Redis=require(_0x5e2e('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5e2e('0x12'));var as=require(_0x5e2e('0x13'));var hardwareService=require(_0x5e2e('0x14'));var logger=require(_0x5e2e('0x15'))(_0x5e2e('0x16'));var utils=require(_0x5e2e('0x17'));var config=require(_0x5e2e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x5e2e('0x19'))['db'];function respondWithStatusCode(_0x261a99,_0x172391){_0x172391=_0x172391||0xcc;return function(_0x25d278){if(_0x25d278){return _0x261a99[_0x5e2e('0x1a')](_0x172391);}return _0x261a99['status'](_0x172391)[_0x5e2e('0x1b')]();};}function respondWithResult(_0x31ff37,_0x3fdff7){_0x3fdff7=_0x3fdff7||0xc8;return function(_0x463d1f){if(_0x463d1f){return _0x31ff37['status'](_0x3fdff7)['json'](_0x463d1f);}};}function respondWithFilteredResult(_0x5de883,_0x5b0909){return function(_0x2688c7){if(_0x2688c7){var _0x1224d1=typeof _0x5b0909[_0x5e2e('0x1c')]==='undefined'&&typeof _0x5b0909[_0x5e2e('0x1d')]===_0x5e2e('0x1e');var _0x554f9b=_0x2688c7['count'];var _0x3f6c25=_0x1224d1?0x0:_0x5b0909[_0x5e2e('0x1c')];var _0x597a57=_0x1224d1?_0x2688c7[_0x5e2e('0x1f')]:_0x5b0909[_0x5e2e('0x1c')]+_0x5b0909['limit'];var _0x27c1c1;if(_0x597a57>=_0x554f9b){_0x597a57=_0x554f9b;_0x27c1c1=0xc8;}else{_0x27c1c1=0xce;}_0x5de883[_0x5e2e('0x20')](_0x27c1c1);return _0x5de883['set'](_0x5e2e('0x21'),_0x3f6c25+'-'+_0x597a57+'/'+_0x554f9b)[_0x5e2e('0x22')](_0x2688c7);}return null;};}function patchUpdates(_0xec1fa3){return function(_0x32bc28){try{jsonpatch[_0x5e2e('0x23')](_0x32bc28,_0xec1fa3,!![]);}catch(_0x17dd00){return BPromise['reject'](_0x17dd00);}return _0x32bc28[_0x5e2e('0x24')]();};}function saveUpdates(_0x5a26a9,_0x4dabbf){return function(_0x3f29c6){if(_0x3f29c6){return _0x3f29c6['update'](_0x5a26a9)[_0x5e2e('0x25')](function(_0x454f73){return _0x454f73;});}return null;};}function removeEntity(_0x41f952,_0x51de60){return function(_0x5a67d4){if(_0x5a67d4){return _0x5a67d4['destroy']()[_0x5e2e('0x25')](function(){_0x41f952[_0x5e2e('0x20')](0xcc)[_0x5e2e('0x1b')]();});}};}function handleEntityNotFound(_0x544dfe,_0x1c4547){return function(_0x3755cc){if(!_0x3755cc){_0x544dfe[_0x5e2e('0x1a')](0x194);}return _0x3755cc;};}function handleError(_0x2c5ea8,_0x645576){_0x645576=_0x645576||0x1f4;return function(_0x3f893d){logger['error'](_0x3f893d[_0x5e2e('0x26')]);if(_0x3f893d[_0x5e2e('0x27')]){delete _0x3f893d[_0x5e2e('0x27')];}_0x2c5ea8[_0x5e2e('0x20')](_0x645576)['send'](_0x3f893d);};}exports[_0x5e2e('0x28')]=function(_0x352054,_0x3e0146){var _0x5e5ebf={},_0xc8544f={},_0x582b44={'count':0x0,'rows':[]};var _0x424242=_[_0x5e2e('0x29')](db[_0x5e2e('0x2a')][_0x5e2e('0x2b')],function(_0x2f1c26){return{'name':_0x2f1c26[_0x5e2e('0x2c')],'type':_0x2f1c26[_0x5e2e('0x2d')][_0x5e2e('0x2e')]};});_0xc8544f['model']=_['map'](_0x424242,_0x5e2e('0x27'));_0xc8544f[_0x5e2e('0x2f')]=_[_0x5e2e('0x30')](_0x352054[_0x5e2e('0x2f')]);_0xc8544f[_0x5e2e('0x31')]=_[_0x5e2e('0x32')](_0xc8544f['model'],_0xc8544f[_0x5e2e('0x2f')]);_0xc8544f['filters']=_[_0x5e2e('0x33')](_0xc8544f[_0x5e2e('0x31')],[_0x5e2e('0x34'),_0x5e2e('0x35'),'$gt',_0x5e2e('0x36'),'$lt','$lte','$ne',_0x5e2e('0x37'),_0x5e2e('0x38'),_0x5e2e('0x39'),_0x5e2e('0x3a'),_0x5e2e('0x3b'),_0x5e2e('0x3c'),_0x5e2e('0x3d'),_0x5e2e('0x3e'),_0x5e2e('0x3f'),'$notILike','$like',_0x5e2e('0x40'),_0x5e2e('0x41'),_0x5e2e('0x42'),_0x5e2e('0x43')]);_0x5e5ebf[_0x5e2e('0x44')]=_[_0x5e2e('0x32')](_0xc8544f['model'],qs[_0x5e2e('0x45')](_0x352054[_0x5e2e('0x2f')][_0x5e2e('0x45')]));_0x5e5ebf[_0x5e2e('0x44')]=_0x5e5ebf[_0x5e2e('0x44')][_0x5e2e('0x46')]?_0x5e5ebf[_0x5e2e('0x44')]:_0xc8544f[_0x5e2e('0x47')];if(!_0x352054['query'][_0x5e2e('0x48')](_0x5e2e('0x49'))){_0x5e5ebf['limit']=qs[_0x5e2e('0x1d')](_0x352054['query'][_0x5e2e('0x1d')]);_0x5e5ebf[_0x5e2e('0x1c')]=qs['offset'](_0x352054[_0x5e2e('0x2f')][_0x5e2e('0x1c')]);}_0x5e5ebf[_0x5e2e('0x4a')]=qs['sort'](_0x352054[_0x5e2e('0x2f')]['sort']);_0x5e5ebf['where']=qs[_0x5e2e('0x31')](_[_0x5e2e('0x4b')](_0x352054[_0x5e2e('0x2f')],_0xc8544f['filters']),_0x424242);if(_0x352054['query'][_0x5e2e('0x4c')]){_0x5e5ebf[_0x5e2e('0x4d')]=_[_0x5e2e('0x4e')](_0x5e5ebf[_0x5e2e('0x4d')],{'$or':_[_0x5e2e('0x29')](_0x424242,function(_0x1fb8bd){if(_0x1fb8bd['type']!=='VIRTUAL'){var _0x5f2a72={};_0x5f2a72[_0x1fb8bd[_0x5e2e('0x27')]]={'$like':'%'+_0x352054[_0x5e2e('0x2f')]['filter']+'%'};return _0x5f2a72;}})});}_0x5e5ebf=_[_0x5e2e('0x4e')]({},_0x5e5ebf,_0x352054[_0x5e2e('0x4f')]);var _0x539d7d={'where':_0x5e5ebf[_0x5e2e('0x4d')]};return db[_0x5e2e('0x2a')][_0x5e2e('0x1f')](_0x539d7d)[_0x5e2e('0x25')](function(_0x34cd94){_0x582b44['count']=_0x34cd94;if(_0x352054[_0x5e2e('0x2f')][_0x5e2e('0x50')]){_0x5e5ebf[_0x5e2e('0x51')]=[{'all':!![]}];}return db[_0x5e2e('0x2a')][_0x5e2e('0x52')](_0x5e5ebf);})[_0x5e2e('0x25')](function(_0x16f4a0){_0x582b44[_0x5e2e('0x53')]=_0x16f4a0;return _0x582b44;})[_0x5e2e('0x25')](respondWithFilteredResult(_0x3e0146,_0x5e5ebf))['catch'](handleError(_0x3e0146,null));};exports[_0x5e2e('0x54')]=function(_0x35c33d,_0x22fde7){var _0x1f30b9={'raw':!![],'where':{'id':_0x35c33d[_0x5e2e('0x55')]['id']}},_0x33053b={};_0x33053b['model']=_[_0x5e2e('0x30')](db[_0x5e2e('0x2a')][_0x5e2e('0x2b')]);_0x33053b['query']=_[_0x5e2e('0x30')](_0x35c33d[_0x5e2e('0x2f')]);_0x33053b[_0x5e2e('0x31')]=_[_0x5e2e('0x32')](_0x33053b[_0x5e2e('0x47')],_0x33053b[_0x5e2e('0x2f')]);_0x1f30b9[_0x5e2e('0x44')]=_[_0x5e2e('0x32')](_0x33053b[_0x5e2e('0x47')],qs['fields'](_0x35c33d[_0x5e2e('0x2f')][_0x5e2e('0x45')]));_0x1f30b9[_0x5e2e('0x44')]=_0x1f30b9[_0x5e2e('0x44')][_0x5e2e('0x46')]?_0x1f30b9[_0x5e2e('0x44')]:_0x33053b[_0x5e2e('0x47')];if(_0x35c33d[_0x5e2e('0x2f')][_0x5e2e('0x50')]){_0x1f30b9['include']=[{'all':!![]}];}_0x1f30b9=_['merge']({},_0x1f30b9,_0x35c33d[_0x5e2e('0x4f')]);return db[_0x5e2e('0x2a')]['find'](_0x1f30b9)[_0x5e2e('0x25')](handleEntityNotFound(_0x22fde7,null))[_0x5e2e('0x25')](respondWithResult(_0x22fde7,null))[_0x5e2e('0x56')](handleError(_0x22fde7,null));};exports[_0x5e2e('0x57')]=function(_0xe24cb0,_0x2aef58){return db['CmHopper']['create'](_0xe24cb0['body'],{})[_0x5e2e('0x25')](respondWithResult(_0x2aef58,0xc9))[_0x5e2e('0x56')](handleError(_0x2aef58,null));};exports[_0x5e2e('0x58')]=function(_0x1339db,_0x26bce1){if(_0x1339db[_0x5e2e('0x59')]['id']){delete _0x1339db['body']['id'];}return db[_0x5e2e('0x2a')]['find']({'where':{'id':_0x1339db[_0x5e2e('0x55')]['id']}})[_0x5e2e('0x25')](handleEntityNotFound(_0x26bce1,null))[_0x5e2e('0x25')](saveUpdates(_0x1339db[_0x5e2e('0x59')],null))[_0x5e2e('0x25')](respondWithResult(_0x26bce1,null))[_0x5e2e('0x56')](handleError(_0x26bce1,null));};exports['describe']=function(_0x28b954,_0x1c6c5d){return db['CmHopper'][_0x5e2e('0x5a')]()[_0x5e2e('0x25')](respondWithResult(_0x1c6c5d,null))['catch'](handleError(_0x1c6c5d,null));};exports[_0x5e2e('0x5b')]=function(_0x28b8d4,_0x5639a0){var _0x54ef22;return db[_0x5e2e('0x2a')][_0x5e2e('0x5c')]({'where':{'id':_0x28b8d4[_0x5e2e('0x55')]['id']}})['then'](handleEntityNotFound(_0x5639a0,null))[_0x5e2e('0x25')](function(_0xfde1eb){if(_0xfde1eb){return _0xfde1eb[_0x5e2e('0x5b')]()[_0x5e2e('0x25')](function(_0x533c00){return _0x533c00;});}})[_0x5e2e('0x25')](function(_0x3e53f9){_0x54ef22=_0x3e53f9;if(_0x3e53f9){if(_0x3e53f9[_0x5e2e('0x5d')]||_0x3e53f9[_0x5e2e('0x5e')]){return db[_0x3e53f9['VoiceQueueId']?_0x5e2e('0x5f'):'Campaign'][_0x5e2e('0x5c')]({'where':{'id':_0x3e53f9[_0x5e2e('0x5d')]?_0x3e53f9['VoiceQueueId']:_0x3e53f9[_0x5e2e('0x5e')]},'attributes':['id',_0x5e2e('0x27')],'raw':!![]});}}})[_0x5e2e('0x25')](function(_0x161215){var _0xa2d998={};if(_0x161215){_[_0x5e2e('0x4e')](_0xa2d998,_['omit'](_0x54ef22['dataValues'],[_0x5e2e('0x60'),_0x5e2e('0x61'),'id']));_0xa2d998['state']=0x15;_0xa2d998[_0x5e2e('0x62')]=_0x5e2e('0x63');_0xa2d998[_0x5e2e('0x64')]=_0x161215[_0x5e2e('0x27')];_0xa2d998[_0x5e2e('0x65')]=_0x28b8d4[_0x5e2e('0x66')][_0x5e2e('0x27')];_0xa2d998[_0x5e2e('0x67')]=_0x28b8d4['user']['id'];_0xa2d998[_0x5e2e('0x63')]=!![];_0xa2d998[_0x5e2e('0x68')]=moment()[_0x5e2e('0x69')](_0x5e2e('0x6a'));_0xa2d998[_0x5e2e('0x6b')]=_0x54ef22['phone'];_0xa2d998[_0x5e2e('0x6c')]=_0x54ef22[_0x5e2e('0x5d')]?_0x5e2e('0x6d'):_0x5e2e('0x6e');return db[_0x5e2e('0x6f')][_0x5e2e('0x5c')]({'where':{'id':_0xa2d998[_0x5e2e('0x70')]},'attributes':['firstName','lastName']})[_0x5e2e('0x25')](function(_0x616c17){if(!_[_0x5e2e('0x71')](_0x5639a0)&&!_[_0x5e2e('0x71')](_0x616c17[_0x5e2e('0x72')])){_0xa2d998[_0x5e2e('0x73')]=_0x616c17[_0x5e2e('0x72')];if(!_[_0x5e2e('0x71')](_0x616c17['lastName'])){_0xa2d998[_0x5e2e('0x73')]+='\x20'+_0x616c17[_0x5e2e('0x74')];}}})[_0x5e2e('0x75')](function(){return db['CmHopperFinal'][_0x5e2e('0x57')](_0xa2d998);});}})[_0x5e2e('0x25')](function(){return _0x5639a0['status'](0xcc)[_0x5e2e('0x1b')]();})[_0x5e2e('0x56')](handleError(_0x5639a0,null));};exports[_0x5e2e('0x76')]=function(_0x3887d3,_0x4262a7,_0x4e831b){var _0x57da65=[];return db[_0x5e2e('0x6f')]['describe']()[_0x5e2e('0x25')](function(_0x417b5c){_0x57da65=_[_0x5e2e('0x30')](_0x417b5c);return _0x3887d3[_0x5e2e('0x66')][_0x5e2e('0x77')]({'where':{'type':_0x5e2e('0x78'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x5e2e('0x79'),_0x5e2e('0x7a')],'raw':!![]});})[_0x5e2e('0x25')](function(_0x153e54){if(_0x153e54&&_0x153e54['length']){return db[_0x5e2e('0x7b')][_0x5e2e('0x7c')](function(_0x377b43){var _0x3b62e9={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x5e2e('0x29')](_0x153e54,'id')},'$or':[{'UserId':null},{'UserId':_0x3887d3[_0x5e2e('0x66')]['id']}]};var _0x5e4ccb={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x153e54)[_0x5e2e('0x4c')]([_0x5e2e('0x7a'),0x0])['map']('id')[_0x5e2e('0x7d')]()},'$or':[{'UserId':null},{'UserId':_0x3887d3[_0x5e2e('0x66')]['id']}]};var _0x26bb1b={'$or':[_0x3b62e9,_0x5e4ccb]};var _0x41e1d1=[];if(_0x3887d3[_0x5e2e('0x59')][_0x5e2e('0x7e')]&&_0x3887d3[_0x5e2e('0x59')]['direction']==='prev'){if(!_[_0x5e2e('0x7f')](_0x3887d3[_0x5e2e('0x59')]['hopperIds'])){_0x26bb1b['id']={'$in':_0x3887d3[_0x5e2e('0x59')][_0x5e2e('0x80')]};}_0x41e1d1=[[_0x5e2e('0x81'),_0x5e2e('0x82')],[_0x5e2e('0x83'),_0x153e54[0x0][_0x5e2e('0x79')]==='ASC'?_0x5e2e('0x84'):'ASC'],db['sequelize'][_0x5e2e('0x85')](_0x5e2e('0x86')),['id',_0x5e2e('0x84')]];}else{if(!_[_0x5e2e('0x7f')](_0x3887d3['body'][_0x5e2e('0x80')])){_0x26bb1b['id']={'$notIn':_0x3887d3['body'][_0x5e2e('0x80')]};}_0x41e1d1=[[_0x5e2e('0x81'),'DESC'],[_0x5e2e('0x83'),_0x153e54[0x0][_0x5e2e('0x79')]],db[_0x5e2e('0x7b')][_0x5e2e('0x85')](_0x5e2e('0x87')),['id',_0x5e2e('0x82')]];}return db['CmHopper'][_0x5e2e('0x88')]({'attributes':['id',_0x5e2e('0x89'),_0x5e2e('0x8a')],'where':_0x26bb1b,'order':_0x41e1d1,'transaction':_0x377b43,'lock':_0x377b43[_0x5e2e('0x8b')][_0x5e2e('0x8c')],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x57da65,'include':[{'model':db[_0x5e2e('0x8d')],'as':'Company','attributes':['id',_0x5e2e('0x27')]}]},{'model':db['CmList'],'as':_0x5e2e('0x8e'),'attributes':['id',_0x5e2e('0x27')]},{'model':db['VoiceQueue'],'as':_0x5e2e('0x8f'),'attributes':['id','name','dialActive']}]})[_0x5e2e('0x25')](function(_0x19d0c3){if(_0x19d0c3){return _0x19d0c3[_0x5e2e('0x58')]({'UserId':_0x3887d3[_0x5e2e('0x66')]['id']},{'transaction':_0x377b43});}});});}})[_0x5e2e('0x25')](handleEntityNotFound(_0x4262a7,null))[_0x5e2e('0x25')](respondWithResult(_0x4262a7,null))[_0x5e2e('0x56')](handleError(_0x4262a7,null));};exports[_0x5e2e('0x90')]=function(_0x3817ee,_0x3a95ba,_0xdf26ab){var _0x435e62=[];return db[_0x5e2e('0x6f')][_0x5e2e('0x5a')]()['then'](function(_0x17b76a){_0x435e62=_[_0x5e2e('0x30')](_0x17b76a);return _0x3817ee['user'][_0x5e2e('0x77')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x5e2e('0x91')},'attributes':['id','dialOrderByScheduledAt',_0x5e2e('0x7a')],'raw':!![]});})['then'](function(_0x3351b6){if(_0x3351b6&&_0x3351b6['length']){return db[_0x5e2e('0x7b')]['transaction'](function(_0x59bf39){var _0x519fed={'active':![],'recallme':!![],'id':_0x3817ee[_0x5e2e('0x59')]['hopperId']};return db[_0x5e2e('0x2a')][_0x5e2e('0x88')]({'attributes':['id',_0x5e2e('0x89'),'recallme'],'where':_0x519fed,'transaction':_0x59bf39,'lock':_0x59bf39[_0x5e2e('0x8b')]['UPDATE'],'include':[{'model':db[_0x5e2e('0x6f')],'as':_0x5e2e('0x92'),'attributes':_0x435e62,'include':[{'model':db['CmCompany'],'as':_0x5e2e('0x93'),'attributes':['id','name']}]},{'model':db[_0x5e2e('0x94')],'as':_0x5e2e('0x8e'),'attributes':['id',_0x5e2e('0x27')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0x5e2e('0x27'),_0x5e2e('0x95')]}]})[_0x5e2e('0x25')](function(_0xaa6242){if(_0xaa6242){return _0xaa6242[_0x5e2e('0x58')]({'UserId':_0x3817ee[_0x5e2e('0x66')]['id']},{'transaction':_0x59bf39});}});});}})[_0x5e2e('0x25')](handleEntityNotFound(_0x3a95ba,null))[_0x5e2e('0x25')](respondWithResult(_0x3a95ba,null))[_0x5e2e('0x56')](handleError(_0x3a95ba,null));};exports[_0x5e2e('0x96')]=function(_0x46fc8c,_0x35c108,_0x8a126a){return _0x46fc8c['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x5e2e('0x25')](function(_0xaab09f){if(_0xaab09f&&_0xaab09f[_0x5e2e('0x46')]){return db[_0x5e2e('0x2a')][_0x5e2e('0x1f')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5e2e('0x69')](_0x5e2e('0x6a'))},'VoiceQueueId':{'$in':_[_0x5e2e('0x29')](_0xaab09f,'id')},'$or':[{'UserId':null},{'UserId':_0x46fc8c[_0x5e2e('0x66')]['id']}]}});}return 0x0;})[_0x5e2e('0x25')](function(_0x328f55){if(!_[_0x5e2e('0x71')](_0x328f55)&&_[_0x5e2e('0x97')](_0x328f55)){return _0x35c108[_0x5e2e('0x20')](0xc8)[_0x5e2e('0x22')]({'contacts':_0x328f55});}else{logger['error'](_0x5e2e('0x98'),_0x5e2e('0x96'),0x194,_0x5e2e('0x99'));_0x35c108[_0x5e2e('0x1a')](0x194);}})[_0x5e2e('0x56')](handleError(_0x35c108,null));};
\ No newline at end of file
+var _0xf809=['mustache','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','reject','save','update','then','destroy','error','stack','name','map','fieldName','type','key','model','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$eq','$between','$notBetween','$in','$notIn','$notLike','$iLike','$like','$overlap','$contained','$any','attributes','fields','hasOwnProperty','order','sort','filter','where','VIRTUAL','options','CmHopper','includeAll','include','rows','catch','show','params','rawAttributes','length','merge','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','dataValues','createdAt','updatedAt','state','deleted','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','transaction','value','direction','prev','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','findOne','scheduledat','recallme','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getPreviewRecall','sequelize','getOpenContacts','isNumber','fast-json-patch','request-promise','bluebird'];(function(_0x566cbb,_0x27b269){var _0x50abd8=function(_0x18300c){while(--_0x18300c){_0x566cbb['push'](_0x566cbb['shift']());}};_0x50abd8(++_0x27b269);}(_0xf809,0x92));var _0x9f80=function(_0x11408b,_0x293fab){_0x11408b=_0x11408b-0x0;var _0x1129b6=_0xf809[_0x11408b];return _0x1129b6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9f80('0x0'));var rp=require(_0x9f80('0x1'));var moment=require('moment');var BPromise=require(_0x9f80('0x2'));var Mustache=require(_0x9f80('0x3'));var util=require('util');var path=require(_0x9f80('0x4'));var sox=require(_0x9f80('0x5'));var csv=require(_0x9f80('0x6'));var ejs=require(_0x9f80('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9f80('0x8'));var crypto=require('crypto');var jsforce=require(_0x9f80('0x9'));var deskjs=require(_0x9f80('0xa'));var toCsv=require(_0x9f80('0x6'));var querystring=require(_0x9f80('0xb'));var Papa=require('papaparse');var Redis=require(_0x9f80('0xc'));var authService=require(_0x9f80('0xd'));var qs=require(_0x9f80('0xe'));var as=require(_0x9f80('0xf'));var hardwareService=require(_0x9f80('0x10'));var logger=require(_0x9f80('0x11'))(_0x9f80('0x12'));var utils=require(_0x9f80('0x13'));var config=require(_0x9f80('0x14'));var licenseUtil=require(_0x9f80('0x15'));var db=require(_0x9f80('0x16'))['db'];function respondWithStatusCode(_0x2d4593,_0x2fdd52){_0x2fdd52=_0x2fdd52||0xcc;return function(_0x5475cb){if(_0x5475cb){return _0x2d4593[_0x9f80('0x17')](_0x2fdd52);}return _0x2d4593['status'](_0x2fdd52)[_0x9f80('0x18')]();};}function respondWithResult(_0x3242bd,_0xeb7bbc){_0xeb7bbc=_0xeb7bbc||0xc8;return function(_0x554db0){if(_0x554db0){return _0x3242bd['status'](_0xeb7bbc)[_0x9f80('0x19')](_0x554db0);}};}function respondWithFilteredResult(_0x397e4f,_0x386bec){return function(_0x56fe76){if(_0x56fe76){var _0x2e53ff=typeof _0x386bec[_0x9f80('0x1a')]===_0x9f80('0x1b')&&typeof _0x386bec[_0x9f80('0x1c')]==='undefined';var _0xd0cee2=_0x56fe76[_0x9f80('0x1d')];var _0x3e5e3a=_0x2e53ff?0x0:_0x386bec[_0x9f80('0x1a')];var _0xa7d7b3=_0x2e53ff?_0x56fe76[_0x9f80('0x1d')]:_0x386bec[_0x9f80('0x1a')]+_0x386bec[_0x9f80('0x1c')];var _0x2a0684;if(_0xa7d7b3>=_0xd0cee2){_0xa7d7b3=_0xd0cee2;_0x2a0684=0xc8;}else{_0x2a0684=0xce;}_0x397e4f[_0x9f80('0x1e')](_0x2a0684);return _0x397e4f['set'](_0x9f80('0x1f'),_0x3e5e3a+'-'+_0xa7d7b3+'/'+_0xd0cee2)[_0x9f80('0x19')](_0x56fe76);}return null;};}function patchUpdates(_0x58dd95){return function(_0x43baf4){try{jsonpatch['apply'](_0x43baf4,_0x58dd95,!![]);}catch(_0x8ef661){return BPromise[_0x9f80('0x20')](_0x8ef661);}return _0x43baf4[_0x9f80('0x21')]();};}function saveUpdates(_0x44f53c,_0x36542b){return function(_0x335a01){if(_0x335a01){return _0x335a01[_0x9f80('0x22')](_0x44f53c)[_0x9f80('0x23')](function(_0xa25fe7){return _0xa25fe7;});}return null;};}function removeEntity(_0x4a5916,_0x2fae55){return function(_0x22d1d0){if(_0x22d1d0){return _0x22d1d0[_0x9f80('0x24')]()[_0x9f80('0x23')](function(){_0x4a5916[_0x9f80('0x1e')](0xcc)[_0x9f80('0x18')]();});}};}function handleEntityNotFound(_0x511e74,_0xdfc9d6){return function(_0x34cdc9){if(!_0x34cdc9){_0x511e74['sendStatus'](0x194);}return _0x34cdc9;};}function handleError(_0x22e8cf,_0xb7b823){_0xb7b823=_0xb7b823||0x1f4;return function(_0x452c5a){logger[_0x9f80('0x25')](_0x452c5a[_0x9f80('0x26')]);if(_0x452c5a[_0x9f80('0x27')]){delete _0x452c5a['name'];}_0x22e8cf[_0x9f80('0x1e')](_0xb7b823)['send'](_0x452c5a);};}exports['index']=function(_0x3b3f56,_0x4f3205){var _0x1ea0a4={},_0x4b445c={},_0xf62d39={'count':0x0,'rows':[]};var _0x545cc4=_[_0x9f80('0x28')](db['CmHopper']['rawAttributes'],function(_0x5c5370){return{'name':_0x5c5370[_0x9f80('0x29')],'type':_0x5c5370[_0x9f80('0x2a')][_0x9f80('0x2b')]};});_0x4b445c[_0x9f80('0x2c')]=_[_0x9f80('0x28')](_0x545cc4,'name');_0x4b445c[_0x9f80('0x2d')]=_[_0x9f80('0x2e')](_0x3b3f56[_0x9f80('0x2d')]);_0x4b445c[_0x9f80('0x2f')]=_[_0x9f80('0x30')](_0x4b445c[_0x9f80('0x2c')],_0x4b445c[_0x9f80('0x2d')]);_0x4b445c['filters']=_[_0x9f80('0x31')](_0x4b445c[_0x9f80('0x2f')],[_0x9f80('0x32'),_0x9f80('0x33'),_0x9f80('0x34'),_0x9f80('0x35'),_0x9f80('0x36'),_0x9f80('0x37'),'$ne',_0x9f80('0x38'),'$not',_0x9f80('0x39'),_0x9f80('0x3a'),_0x9f80('0x3b'),_0x9f80('0x3c'),'$like',_0x9f80('0x3d'),_0x9f80('0x3e'),'$notILike',_0x9f80('0x3f'),_0x9f80('0x40'),'$contains',_0x9f80('0x41'),_0x9f80('0x42')]);_0x1ea0a4[_0x9f80('0x43')]=_[_0x9f80('0x30')](_0x4b445c['model'],qs[_0x9f80('0x44')](_0x3b3f56[_0x9f80('0x2d')][_0x9f80('0x44')]));_0x1ea0a4[_0x9f80('0x43')]=_0x1ea0a4[_0x9f80('0x43')]['length']?_0x1ea0a4[_0x9f80('0x43')]:_0x4b445c[_0x9f80('0x2c')];if(!_0x3b3f56['query'][_0x9f80('0x45')]('nolimit')){_0x1ea0a4[_0x9f80('0x1c')]=qs[_0x9f80('0x1c')](_0x3b3f56[_0x9f80('0x2d')][_0x9f80('0x1c')]);_0x1ea0a4[_0x9f80('0x1a')]=qs[_0x9f80('0x1a')](_0x3b3f56[_0x9f80('0x2d')][_0x9f80('0x1a')]);}_0x1ea0a4[_0x9f80('0x46')]=qs[_0x9f80('0x47')](_0x3b3f56[_0x9f80('0x2d')][_0x9f80('0x47')]);_0x1ea0a4['where']=qs[_0x9f80('0x2f')](_['pick'](_0x3b3f56['query'],_0x4b445c[_0x9f80('0x2f')]),_0x545cc4);if(_0x3b3f56[_0x9f80('0x2d')][_0x9f80('0x48')]){_0x1ea0a4['where']=_['merge'](_0x1ea0a4[_0x9f80('0x49')],{'$or':_['map'](_0x545cc4,function(_0x3cdcec){if(_0x3cdcec[_0x9f80('0x2a')]!==_0x9f80('0x4a')){var _0x477dc1={};_0x477dc1[_0x3cdcec[_0x9f80('0x27')]]={'$like':'%'+_0x3b3f56[_0x9f80('0x2d')][_0x9f80('0x48')]+'%'};return _0x477dc1;}})});}_0x1ea0a4=_['merge']({},_0x1ea0a4,_0x3b3f56[_0x9f80('0x4b')]);var _0x3213bd={'where':_0x1ea0a4['where']};return db[_0x9f80('0x4c')][_0x9f80('0x1d')](_0x3213bd)[_0x9f80('0x23')](function(_0x498bb2){_0xf62d39[_0x9f80('0x1d')]=_0x498bb2;if(_0x3b3f56['query'][_0x9f80('0x4d')]){_0x1ea0a4[_0x9f80('0x4e')]=[{'all':!![]}];}return db[_0x9f80('0x4c')]['findAll'](_0x1ea0a4);})[_0x9f80('0x23')](function(_0x10fc0f){_0xf62d39[_0x9f80('0x4f')]=_0x10fc0f;return _0xf62d39;})[_0x9f80('0x23')](respondWithFilteredResult(_0x4f3205,_0x1ea0a4))[_0x9f80('0x50')](handleError(_0x4f3205,null));};exports[_0x9f80('0x51')]=function(_0x5394a8,_0x401c12){var _0x58d8ff={'raw':!![],'where':{'id':_0x5394a8[_0x9f80('0x52')]['id']}},_0x5c13f6={};_0x5c13f6[_0x9f80('0x2c')]=_['keys'](db[_0x9f80('0x4c')][_0x9f80('0x53')]);_0x5c13f6[_0x9f80('0x2d')]=_[_0x9f80('0x2e')](_0x5394a8[_0x9f80('0x2d')]);_0x5c13f6[_0x9f80('0x2f')]=_[_0x9f80('0x30')](_0x5c13f6[_0x9f80('0x2c')],_0x5c13f6[_0x9f80('0x2d')]);_0x58d8ff[_0x9f80('0x43')]=_[_0x9f80('0x30')](_0x5c13f6[_0x9f80('0x2c')],qs[_0x9f80('0x44')](_0x5394a8['query'][_0x9f80('0x44')]));_0x58d8ff[_0x9f80('0x43')]=_0x58d8ff[_0x9f80('0x43')][_0x9f80('0x54')]?_0x58d8ff[_0x9f80('0x43')]:_0x5c13f6[_0x9f80('0x2c')];if(_0x5394a8[_0x9f80('0x2d')][_0x9f80('0x4d')]){_0x58d8ff[_0x9f80('0x4e')]=[{'all':!![]}];}_0x58d8ff=_[_0x9f80('0x55')]({},_0x58d8ff,_0x5394a8[_0x9f80('0x4b')]);return db[_0x9f80('0x4c')][_0x9f80('0x56')](_0x58d8ff)[_0x9f80('0x23')](handleEntityNotFound(_0x401c12,null))[_0x9f80('0x23')](respondWithResult(_0x401c12,null))[_0x9f80('0x50')](handleError(_0x401c12,null));};exports[_0x9f80('0x57')]=function(_0x37e47d,_0x3fd565){return db[_0x9f80('0x4c')][_0x9f80('0x57')](_0x37e47d['body'],{})['then'](respondWithResult(_0x3fd565,0xc9))['catch'](handleError(_0x3fd565,null));};exports[_0x9f80('0x22')]=function(_0x146932,_0x9a9dec){if(_0x146932[_0x9f80('0x58')]['id']){delete _0x146932['body']['id'];}return db[_0x9f80('0x4c')][_0x9f80('0x56')]({'where':{'id':_0x146932[_0x9f80('0x52')]['id']}})[_0x9f80('0x23')](handleEntityNotFound(_0x9a9dec,null))[_0x9f80('0x23')](saveUpdates(_0x146932[_0x9f80('0x58')],null))['then'](respondWithResult(_0x9a9dec,null))[_0x9f80('0x50')](handleError(_0x9a9dec,null));};exports['describe']=function(_0x379af9,_0x1f2cc7){return db[_0x9f80('0x4c')][_0x9f80('0x59')]()['then'](respondWithResult(_0x1f2cc7,null))[_0x9f80('0x50')](handleError(_0x1f2cc7,null));};exports['destroy']=function(_0x44cc92,_0x3c48d3){var _0x435ece;return db[_0x9f80('0x4c')][_0x9f80('0x56')]({'where':{'id':_0x44cc92[_0x9f80('0x52')]['id']}})[_0x9f80('0x23')](handleEntityNotFound(_0x3c48d3,null))[_0x9f80('0x23')](function(_0x173439){if(_0x173439){return _0x173439[_0x9f80('0x24')]()[_0x9f80('0x23')](function(_0xf830fb){return _0xf830fb;});}})[_0x9f80('0x23')](function(_0x57477a){_0x435ece=_0x57477a;if(_0x57477a){if(_0x57477a[_0x9f80('0x5a')]||_0x57477a[_0x9f80('0x5b')]){return db[_0x57477a[_0x9f80('0x5a')]?_0x9f80('0x5c'):_0x9f80('0x5d')][_0x9f80('0x56')]({'where':{'id':_0x57477a[_0x9f80('0x5a')]?_0x57477a[_0x9f80('0x5a')]:_0x57477a['CampaignId']},'attributes':['id',_0x9f80('0x27')],'raw':!![]});}}})[_0x9f80('0x23')](function(_0x16978e){var _0xc320f3={};if(_0x16978e){_[_0x9f80('0x55')](_0xc320f3,_['omit'](_0x435ece[_0x9f80('0x5e')],[_0x9f80('0x5f'),_0x9f80('0x60'),'id']));_0xc320f3[_0x9f80('0x61')]=0x15;_0xc320f3['statedesc']=_0x9f80('0x62');_0xc320f3['campaign']=_0x16978e[_0x9f80('0x27')];_0xc320f3[_0x9f80('0x63')]=_0x44cc92[_0x9f80('0x64')][_0x9f80('0x27')];_0xc320f3['UserId']=_0x44cc92[_0x9f80('0x64')]['id'];_0xc320f3[_0x9f80('0x62')]=!![];_0xc320f3[_0x9f80('0x65')]=moment()[_0x9f80('0x66')](_0x9f80('0x67'));_0xc320f3[_0x9f80('0x68')]=_0x435ece[_0x9f80('0x69')];_0xc320f3[_0x9f80('0x6a')]=_0x435ece[_0x9f80('0x5a')]?_0x9f80('0x6b'):_0x9f80('0x6c');return db[_0x9f80('0x6d')][_0x9f80('0x56')]({'where':{'id':_0xc320f3[_0x9f80('0x6e')]},'attributes':[_0x9f80('0x6f'),_0x9f80('0x70')]})['then'](function(_0x4ce8af){if(!_[_0x9f80('0x71')](_0x3c48d3)&&!_['isNil'](_0x4ce8af['firstName'])){_0xc320f3['calleridname']=_0x4ce8af[_0x9f80('0x6f')];if(!_['isNil'](_0x4ce8af[_0x9f80('0x70')])){_0xc320f3[_0x9f80('0x72')]+='\x20'+_0x4ce8af['lastName'];}}})[_0x9f80('0x73')](function(){return db[_0x9f80('0x74')][_0x9f80('0x57')](_0xc320f3);});}})['then'](function(){return _0x3c48d3[_0x9f80('0x1e')](0xcc)['end']();})[_0x9f80('0x50')](handleError(_0x3c48d3,null));};exports['getPreview']=function(_0x2dcc6c,_0x4312eb,_0x4be031){var _0x1b981c=[];return db[_0x9f80('0x6d')][_0x9f80('0x59')]()[_0x9f80('0x23')](function(_0x53aca0){_0x1b981c=_[_0x9f80('0x2e')](_0x53aca0);return _0x2dcc6c['user'][_0x9f80('0x75')]({'where':{'type':_0x9f80('0x76'),'dialActive':!![],'dialMethod':_0x9f80('0x77')},'attributes':['id','dialOrderByScheduledAt',_0x9f80('0x78')],'raw':!![]});})[_0x9f80('0x23')](function(_0x489ff8){if(_0x489ff8&&_0x489ff8[_0x9f80('0x54')]){return db['sequelize'][_0x9f80('0x79')](function(_0x5ecce7){var _0x5e1e98={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9f80('0x66')](_0x9f80('0x67'))},'VoiceQueueId':{'$in':_[_0x9f80('0x28')](_0x489ff8,'id')},'$or':[{'UserId':null},{'UserId':_0x2dcc6c['user']['id']}]};var _0x5ef2a2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x489ff8)[_0x9f80('0x48')](['dialPreviewAutoRecallMe',0x0])[_0x9f80('0x28')]('id')[_0x9f80('0x7a')]()},'$or':[{'UserId':null},{'UserId':_0x2dcc6c[_0x9f80('0x64')]['id']}]};var _0x2d402d={'$or':[_0x5e1e98,_0x5ef2a2]};var _0x5e51dc=[];if(_0x2dcc6c[_0x9f80('0x58')][_0x9f80('0x7b')]&&_0x2dcc6c[_0x9f80('0x58')][_0x9f80('0x7b')]===_0x9f80('0x7c')){if(!_['isEmpty'](_0x2dcc6c['body'][_0x9f80('0x7d')])){_0x2d402d['id']={'$in':_0x2dcc6c[_0x9f80('0x58')][_0x9f80('0x7d')]};}_0x5e51dc=[[_0x9f80('0x7e'),_0x9f80('0x7f')],[_0x9f80('0x80'),_0x489ff8[0x0]['dialOrderByScheduledAt']==='ASC'?_0x9f80('0x81'):_0x9f80('0x7f')],db['sequelize'][_0x9f80('0x82')](_0x9f80('0x83')),['id',_0x9f80('0x81')]];}else{if(!_[_0x9f80('0x84')](_0x2dcc6c[_0x9f80('0x58')]['hopperIds'])){_0x2d402d['id']={'$notIn':_0x2dcc6c[_0x9f80('0x58')][_0x9f80('0x7d')]};}_0x5e51dc=[[_0x9f80('0x7e'),_0x9f80('0x81')],[_0x9f80('0x80'),_0x489ff8[0x0]['dialOrderByScheduledAt']],db['sequelize'][_0x9f80('0x82')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x9f80('0x4c')][_0x9f80('0x85')]({'attributes':['id',_0x9f80('0x86'),_0x9f80('0x87')],'where':_0x2d402d,'order':_0x5e51dc,'transaction':_0x5ecce7,'lock':_0x5ecce7[_0x9f80('0x88')][_0x9f80('0x89')],'include':[{'model':db[_0x9f80('0x6d')],'as':_0x9f80('0x8a'),'attributes':_0x1b981c,'include':[{'model':db[_0x9f80('0x8b')],'as':_0x9f80('0x8c'),'attributes':['id',_0x9f80('0x27')]}]},{'model':db[_0x9f80('0x8d')],'as':_0x9f80('0x8e'),'attributes':['id',_0x9f80('0x27')]},{'model':db[_0x9f80('0x5c')],'as':_0x9f80('0x8f'),'attributes':['id',_0x9f80('0x27'),_0x9f80('0x90')]}]})['then'](function(_0x15b9e3){if(_0x15b9e3){return _0x15b9e3['update']({'UserId':_0x2dcc6c['user']['id']},{'transaction':_0x5ecce7});}});});}})[_0x9f80('0x23')](handleEntityNotFound(_0x4312eb,null))[_0x9f80('0x23')](respondWithResult(_0x4312eb,null))['catch'](handleError(_0x4312eb,null));};exports[_0x9f80('0x91')]=function(_0xc8e54d,_0x59cf6e,_0x5a29f2){var _0x193c30=[];return db[_0x9f80('0x6d')][_0x9f80('0x59')]()[_0x9f80('0x23')](function(_0xe9cdb3){_0x193c30=_['keys'](_0xe9cdb3);return _0xc8e54d['user'][_0x9f80('0x75')]({'where':{'type':_0x9f80('0x76'),'dialActive':!![],'dialMethod':_0x9f80('0x77')},'attributes':['id','dialOrderByScheduledAt','dialPreviewAutoRecallMe'],'raw':!![]});})[_0x9f80('0x23')](function(_0x30dbd4){if(_0x30dbd4&&_0x30dbd4[_0x9f80('0x54')]){return db[_0x9f80('0x92')][_0x9f80('0x79')](function(_0x34f3b2){var _0x3905b8={'active':![],'recallme':!![],'id':_0xc8e54d[_0x9f80('0x58')]['hopperId']};return db[_0x9f80('0x4c')]['findOne']({'attributes':['id',_0x9f80('0x86'),_0x9f80('0x87')],'where':_0x3905b8,'transaction':_0x34f3b2,'lock':_0x34f3b2[_0x9f80('0x88')][_0x9f80('0x89')],'include':[{'model':db[_0x9f80('0x6d')],'as':'Contact','attributes':_0x193c30,'include':[{'model':db[_0x9f80('0x8b')],'as':_0x9f80('0x8c'),'attributes':['id',_0x9f80('0x27')]}]},{'model':db[_0x9f80('0x8d')],'as':'List','attributes':['id',_0x9f80('0x27')]},{'model':db[_0x9f80('0x5c')],'as':_0x9f80('0x8f'),'attributes':['id',_0x9f80('0x27'),_0x9f80('0x90')]}]})[_0x9f80('0x23')](function(_0x33537f){if(_0x33537f){return _0x33537f['update']({'UserId':_0xc8e54d[_0x9f80('0x64')]['id']},{'transaction':_0x34f3b2});}});});}})[_0x9f80('0x23')](handleEntityNotFound(_0x59cf6e,null))['then'](respondWithResult(_0x59cf6e,null))[_0x9f80('0x50')](handleError(_0x59cf6e,null));};exports[_0x9f80('0x93')]=function(_0x4f6d62,_0x55ea40,_0x20c8b1){return _0x4f6d62['user'][_0x9f80('0x75')]({'where':{'type':_0x9f80('0x76'),'dialActive':!![],'dialMethod':_0x9f80('0x77')},'attributes':['id'],'raw':!![]})['then'](function(_0x50e873){if(_0x50e873&&_0x50e873['length']){return db[_0x9f80('0x4c')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9f80('0x66')](_0x9f80('0x67'))},'VoiceQueueId':{'$in':_[_0x9f80('0x28')](_0x50e873,'id')},'$or':[{'UserId':null},{'UserId':_0x4f6d62['user']['id']}]}});}return 0x0;})['then'](function(_0xeaef84){if(!_[_0x9f80('0x71')](_0xeaef84)&&_[_0x9f80('0x94')](_0xeaef84)){return _0x55ea40['status'](0xc8)[_0x9f80('0x19')]({'contacts':_0xeaef84});}else{logger[_0x9f80('0x25')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x9f80('0x93'),0x194,'entity\x20not\x20found');_0x55ea40[_0x9f80('0x17')](0x194);}})[_0x9f80('0x50')](handleError(_0x55ea40,null));};
\ No newline at end of file
index ef4bc8a..283aca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['define','CmHopper','scheduledat','phone','priority','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x100e1d,_0x29d385){var _0x46b8b9=function(_0x4a4fc0){while(--_0x4a4fc0){_0x100e1d['push'](_0x100e1d['shift']());}};_0x46b8b9(++_0x29d385);}(_0x524e,0x15e));var _0xe524=function(_0x396011,_0x2e86c6){_0x396011=_0x396011-0x0;var _0x4fc5ce=_0x524e[_0x396011];return _0x4fc5ce;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe524('0x0'))(_0xe524('0x1'));var moment=require(_0xe524('0x2'));var BPromise=require(_0xe524('0x3'));var rp=require(_0xe524('0x4'));var fs=require('fs');var path=require(_0xe524('0x5'));var rimraf=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var attributes=require(_0xe524('0x8'));module[_0xe524('0x9')]=function(_0x4f75d6,_0xaaeaa9){return _0x4f75d6[_0xe524('0xa')](_0xe524('0xb'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0xe524('0xc'),'fields':[_0xe524('0xc')]},{'name':_0xe524('0xd'),'fields':[_0xe524('0xd')]},{'name':_0xe524('0xe'),'fields':[_0xe524('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['define','scheduledat','phone','priority','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x47dc1c,_0x3b156a){var _0x4aafab=function(_0x44d904){while(--_0x44d904){_0x47dc1c['push'](_0x47dc1c['shift']());}};_0x4aafab(++_0x3b156a);}(_0xf494,0x1c6));var _0x4f49=function(_0x32c268,_0x22ced7){_0x32c268=_0x32c268-0x0;var _0x1f9019=_0xf494[_0x32c268];return _0x1f9019;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('CmHopper',attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]},{'name':_0x4f49('0xd'),'fields':[_0x4f49('0xd')]},{'name':_0x4f49('0xe'),'fields':[_0x4f49('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index bbb433f..6ed91b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac2=['CmHopper','create','body','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','UpdateCmHopper','DestroyCmHopper','CmContact','describe','transaction','order','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','length','UserId','push','update','includes','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','sequelize','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','MoveContactManagedDialer','CountReScheduled','findAll','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueId','interval','NOW()\x20+\x20INTERVAL\x20','CmList','List','\x20MINUTE','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','GetCmHopper','options','raw','where','attributes','include','map','model','ShowCmHopper','find','CreateCmHopper'];(function(_0xe38535,_0x25c0f7){var _0x56ef26=function(_0x2cd754){while(--_0x2cd754){_0xe38535['push'](_0xe38535['shift']());}};_0x56ef26(++_0x25c0f7);}(_0xaac2,0x188));var _0x2aac=function(_0x54465c,_0xcab3da){_0x54465c=_0x54465c-0x0;var _0x275b42=_0xaac2[_0x54465c];return _0x275b42;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x2aac('0x0'));var rs=require(_0x2aac('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2aac('0x2'))['db'];var utils=require(_0x2aac('0x3'));var logger=require(_0x2aac('0x4'))(_0x2aac('0x5'));var config=require(_0x2aac('0x6'));var jayson=require(_0x2aac('0x7'));const {validateExpressRequest}=require('twilio/lib/webhooks/webhooks');var client=jayson[_0x2aac('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b8f7a,_0x47c710,_0x28836e){return new BPromise(function(_0x3e7dca,_0x22407){return client[_0x2aac('0x9')](_0x4b8f7a,_0x28836e)[_0x2aac('0xa')](function(_0x3cb281){logger[_0x2aac('0xb')](_0x2aac('0xc'),_0x47c710,_0x2aac('0xd'));logger[_0x2aac('0xe')](_0x2aac('0xf'),_0x47c710,'request\x20sent',JSON[_0x2aac('0x10')](_0x3cb281));if(_0x3cb281['error']){if(_0x3cb281['error'][_0x2aac('0x11')]===0x1f4){logger[_0x2aac('0x12')]('CmHopper,\x20%s,\x20%s',_0x47c710,_0x3cb281[_0x2aac('0x12')][_0x2aac('0x13')]);return _0x22407(_0x3cb281[_0x2aac('0x12')]['message']);}logger['error'](_0x2aac('0xc'),_0x47c710,_0x3cb281['error'][_0x2aac('0x13')]);return _0x3e7dca(_0x3cb281[_0x2aac('0x12')][_0x2aac('0x13')]);}else{logger[_0x2aac('0xb')]('CmHopper,\x20%s,\x20%s',_0x47c710,_0x2aac('0xd'));_0x3e7dca(_0x3cb281[_0x2aac('0x14')][_0x2aac('0x13')]);}})[_0x2aac('0x15')](function(_0x261cbb){logger[_0x2aac('0x12')](_0x2aac('0xc'),_0x47c710,_0x261cbb);_0x22407(_0x261cbb);});});}exports[_0x2aac('0x16')]=function(_0x3cde93){var _0x56ffd1=this;return new Promise(function(_0x10b7e1,_0x23f47e){return db['CmHopper']['findAll']({'raw':_0x3cde93[_0x2aac('0x17')]?_0x3cde93[_0x2aac('0x17')][_0x2aac('0x18')]===undefined?!![]:![]:!![],'where':_0x3cde93['options']?_0x3cde93['options'][_0x2aac('0x19')]||null:null,'attributes':_0x3cde93[_0x2aac('0x17')]?_0x3cde93[_0x2aac('0x17')][_0x2aac('0x1a')]||null:null,'limit':_0x3cde93[_0x2aac('0x17')]?_0x3cde93[_0x2aac('0x17')]['limit']||null:null,'include':_0x3cde93['options']?_0x3cde93['options'][_0x2aac('0x1b')]?_[_0x2aac('0x1c')](_0x3cde93[_0x2aac('0x17')][_0x2aac('0x1b')],function(_0x32c66){return{'model':db[_0x32c66[_0x2aac('0x1d')]],'as':_0x32c66['as'],'attributes':_0x32c66[_0x2aac('0x1a')],'include':_0x32c66[_0x2aac('0x1b')]?_['map'](_0x32c66[_0x2aac('0x1b')],function(_0x508f81){return{'model':db[_0x508f81['model']],'as':_0x508f81['as'],'attributes':_0x508f81['attributes'],'include':_0x508f81[_0x2aac('0x1b')]?_['map'](_0x508f81[_0x2aac('0x1b')],function(_0x8c6d8c){return{'model':db[_0x8c6d8c[_0x2aac('0x1d')]],'as':_0x8c6d8c['as'],'attributes':_0x8c6d8c[_0x2aac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2aac('0xa')](function(_0x2ef307){logger['info'](_0x2aac('0x16'),_0x3cde93);logger[_0x2aac('0xe')](_0x2aac('0x16'),_0x3cde93,JSON[_0x2aac('0x10')](_0x2ef307));_0x10b7e1(_0x2ef307);})[_0x2aac('0x15')](function(_0x1c2647){logger['error'](_0x2aac('0x16'),_0x1c2647[_0x2aac('0x13')],_0x3cde93);_0x23f47e(_0x56ffd1[_0x2aac('0x12')](0x1f4,_0x1c2647[_0x2aac('0x13')]));});});};exports[_0x2aac('0x1e')]=function(_0x36a3dd){var _0x5c71fa=this;return new Promise(function(_0x2f268c,_0xce9212){return db['CmHopper'][_0x2aac('0x1f')]({'raw':_0x36a3dd[_0x2aac('0x17')]?_0x36a3dd[_0x2aac('0x17')][_0x2aac('0x18')]===undefined?!![]:![]:!![],'where':_0x36a3dd[_0x2aac('0x17')]?_0x36a3dd[_0x2aac('0x17')]['where']||null:null,'attributes':_0x36a3dd[_0x2aac('0x17')]?_0x36a3dd[_0x2aac('0x17')]['attributes']||null:null,'include':_0x36a3dd[_0x2aac('0x17')]?_0x36a3dd[_0x2aac('0x17')][_0x2aac('0x1b')]?_[_0x2aac('0x1c')](_0x36a3dd[_0x2aac('0x17')][_0x2aac('0x1b')],function(_0x18f4ad){return{'model':db[_0x18f4ad[_0x2aac('0x1d')]],'as':_0x18f4ad['as'],'attributes':_0x18f4ad['attributes'],'include':_0x18f4ad[_0x2aac('0x1b')]?_['map'](_0x18f4ad[_0x2aac('0x1b')],function(_0x162457){return{'model':db[_0x162457['model']],'as':_0x162457['as'],'attributes':_0x162457[_0x2aac('0x1a')],'include':_0x162457['include']?_[_0x2aac('0x1c')](_0x162457[_0x2aac('0x1b')],function(_0x5721c0){return{'model':db[_0x5721c0[_0x2aac('0x1d')]],'as':_0x5721c0['as'],'attributes':_0x5721c0[_0x2aac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2aac('0xa')](function(_0x4389e0){logger[_0x2aac('0xb')](_0x2aac('0x1e'),_0x36a3dd);logger[_0x2aac('0xe')](_0x2aac('0x1e'),_0x36a3dd,JSON['stringify'](_0x4389e0));_0x2f268c(_0x4389e0);})['catch'](function(_0x44bf79){logger[_0x2aac('0x12')](_0x2aac('0x1e'),_0x44bf79[_0x2aac('0x13')],_0x36a3dd);_0xce9212(_0x5c71fa[_0x2aac('0x12')](0x1f4,_0x44bf79[_0x2aac('0x13')]));});});};exports[_0x2aac('0x20')]=function(_0x140b74){var _0xea55cf=this;return new Promise(function(_0x5a4c96,_0x2922d0){return db[_0x2aac('0x21')][_0x2aac('0x22')](_0x140b74['body'],{'raw':_0x140b74[_0x2aac('0x17')]?_0x140b74['options'][_0x2aac('0x18')]===undefined?!![]:![]:!![]})[_0x2aac('0xa')](function(_0x36b30c){logger[_0x2aac('0xb')](_0x2aac('0x20'),_0x140b74);logger[_0x2aac('0xe')](_0x2aac('0x20'),_0x140b74,JSON[_0x2aac('0x10')](_0x36b30c));_0x5a4c96(_0x36b30c);})[_0x2aac('0x15')](function(_0xda9e2b){logger[_0x2aac('0x12')](_0x2aac('0x20'),_0xda9e2b[_0x2aac('0x13')],_0x140b74);_0x2922d0(_0xea55cf[_0x2aac('0x12')](0x1f4,_0xda9e2b[_0x2aac('0x13')]));});});};exports['UpdateCmHopper']=function(_0xd5d7ce){var _0x41d899=this;return new Promise(function(_0x47c3fb,_0x4f71fa){return db[_0x2aac('0x21')]['update'](_0xd5d7ce[_0x2aac('0x23')],{'raw':_0xd5d7ce[_0x2aac('0x17')]?_0xd5d7ce[_0x2aac('0x17')][_0x2aac('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd5d7ce[_0x2aac('0x17')]?_0xd5d7ce['options'][_0x2aac('0x19')]||null:null,'attributes':_0xd5d7ce[_0x2aac('0x17')]?_0xd5d7ce['options'][_0x2aac('0x1a')]||null:null,'limit':_0xd5d7ce[_0x2aac('0x17')]?_0xd5d7ce[_0x2aac('0x17')][_0x2aac('0x24')]||null:null})['then'](function(_0x10c3cd){logger[_0x2aac('0xb')]('UpdateCmHopper',_0xd5d7ce);logger['info'](_0x2aac('0x25'),JSON[_0x2aac('0x10')](_0xd5d7ce[_0x2aac('0x17')][_0x2aac('0x19')]),_0xd5d7ce[_0x2aac('0x23')][_0x2aac('0x26')]);logger[_0x2aac('0xe')]('UpdateCmHopper',_0xd5d7ce,JSON[_0x2aac('0x10')](_0x10c3cd));_0x47c3fb(_0x10c3cd);})[_0x2aac('0x15')](function(_0x3758a4){logger[_0x2aac('0x12')](_0x2aac('0x27'),_0x3758a4[_0x2aac('0x13')],_0xd5d7ce);_0x4f71fa(_0x41d899[_0x2aac('0x12')](0x1f4,_0x3758a4[_0x2aac('0x13')]));});});};exports[_0x2aac('0x28')]=function(_0x5f0fc5){var _0x448c26=this;return new Promise(function(_0x12644c,_0x2cebe2){return db['CmHopper']['destroy']({'where':_0x5f0fc5[_0x2aac('0x17')]?_0x5f0fc5['options'][_0x2aac('0x19')]||null:null})[_0x2aac('0xa')](function(_0x26f3df){logger[_0x2aac('0xb')](_0x2aac('0x28'),_0x5f0fc5);logger['debug'](_0x2aac('0x28'),_0x5f0fc5,JSON[_0x2aac('0x10')](_0x26f3df));_0x12644c(_0x26f3df);})[_0x2aac('0x15')](function(_0x242afc){logger[_0x2aac('0x12')](_0x2aac('0x28'),_0x242afc[_0x2aac('0x13')],_0x5f0fc5);_0x2cebe2(_0x448c26['error'](0x1f4,_0x242afc[_0x2aac('0x13')]));});});};exports['GetContactDialer']=function(_0x3e309d){var _0x4eee05=this;return new Promise(function(_0x2c6652,_0x432b81){return db[_0x2aac('0x29')][_0x2aac('0x2a')]()[_0x2aac('0xa')](function(_0x56242f){return db['sequelize'][_0x2aac('0x2b')](function(_0x57c84c){return db[_0x2aac('0x21')]['findAll']({'where':_0x3e309d[_0x2aac('0x17')]?_0x3e309d[_0x2aac('0x17')][_0x2aac('0x19')]||null:null,'attributes':_0x3e309d['options']?_0x3e309d[_0x2aac('0x17')][_0x2aac('0x1a')]||null:null,'limit':_0x3e309d[_0x2aac('0x17')]?_0x3e309d['options']['limit']||null:null,'order':_0x3e309d['options']?_0x3e309d[_0x2aac('0x17')][_0x2aac('0x2c')]||null:null,'transaction':_0x57c84c,'lock':_0x57c84c[_0x2aac('0x2d')][_0x2aac('0x2e')],'include':[{'model':db[_0x2aac('0x29')],'as':_0x2aac('0x2f'),'attributes':_[_0x2aac('0x30')](_0x56242f)},{'model':db[_0x2aac('0x31')],'as':_0x2aac('0x32'),'attributes':['id',_0x2aac('0x33'),_0x2aac('0x34')]}]})[_0x2aac('0xa')](function(_0x476640){var _0x2ad771=[];var _0x13414c=[];for(var _0xa0bc94=0x0;_0xa0bc94<_0x476640[_0x2aac('0x35')];_0xa0bc94+=0x1){var _0x5ad28f=_0x476640[_0xa0bc94][_0x2aac('0x36')];if(_0x5ad28f===null){_0x2ad771[_0x2aac('0x37')](_0x476640[_0xa0bc94][_0x2aac('0x38')](_0x3e309d[_0x2aac('0x23')],{'transaction':_0x57c84c}));}else if(!_0x13414c[_0x2aac('0x39')](_0x5ad28f)){_0x13414c[_0x2aac('0x37')](_0x5ad28f);_0x2ad771[_0x2aac('0x37')](_0x476640[_0xa0bc94][_0x2aac('0x38')](_0x3e309d[_0x2aac('0x23')],{'transaction':_0x57c84c}));}}return BPromise[_0x2aac('0x3a')](_0x2ad771);});})[_0x2aac('0xa')](function(_0x4b369c){logger[_0x2aac('0xb')](_0x2aac('0x3b'),_0x3e309d);if(_0x4b369c[_0x2aac('0x35')]>0x0){logger[_0x2aac('0xb')](_0x2aac('0x3c'),_0x4b369c[0x0][_0x2aac('0x3d')]['id'],_0x4b369c[0x0][_0x2aac('0x3d')][_0x2aac('0x3e')],_0x4b369c[0x0][_0x2aac('0x3d')]['active']);}logger[_0x2aac('0xe')](_0x2aac('0x3b'),_0x3e309d,JSON[_0x2aac('0x10')](_0x4b369c));_0x2c6652(_0x4b369c);})[_0x2aac('0x15')](function(_0x40f805){logger[_0x2aac('0x12')](_0x2aac('0x3b'),_0x40f805[_0x2aac('0x13')],_0x3e309d);_0x432b81(_0x4eee05['error'](0x1f4,_0x40f805[_0x2aac('0x13')]));});});});};exports['MoveContactManagedDialer']=function(_0x3c6556){var _0x117a48=this;return new Promise(function(_0x43fdb6,_0x505e3e){return db[_0x2aac('0x3f')][_0x2aac('0x2b')](function(_0x477dff){return db['CmHopperFinal'][_0x2aac('0x22')](_0x3c6556[_0x2aac('0x23')],{'raw':_0x3c6556[_0x2aac('0x17')]?_0x3c6556[_0x2aac('0x17')]['raw']===undefined?!![]:![]:!![],'transaction':_0x477dff})[_0x2aac('0xa')](function(){logger[_0x2aac('0xb')](_0x2aac('0x40'),JSON[_0x2aac('0x10')](_0x3c6556['options']['where']),_0x3c6556[_0x2aac('0x17')][_0x2aac('0x19')][_0x2aac('0x26')]);return db[_0x2aac('0x21')]['destroy']({'where':_0x3c6556['options']?_0x3c6556[_0x2aac('0x17')]['where']||null:null,'transaction':_0x477dff});});})['then'](function(_0x1d3325){logger[_0x2aac('0xb')](_0x2aac('0x41'),_0x3c6556);logger[_0x2aac('0xe')](_0x2aac('0x41'),_0x3c6556,JSON['stringify'](_0x1d3325));_0x43fdb6(_0x1d3325);})[_0x2aac('0x15')](function(_0x52ede8){logger[_0x2aac('0x12')](_0x2aac('0x41'),_0x52ede8['message'],_0x3c6556);_0x505e3e(_0x117a48[_0x2aac('0x12')](0x1f4,_0x52ede8[_0x2aac('0x13')]));});});};exports[_0x2aac('0x42')]=function(_0x5cdbea){var _0x45944c=this;return new Promise(function(_0x57c646,_0x3c00d4){return db['CmHopper'][_0x2aac('0x43')]({'raw':_0x5cdbea['options']?_0x5cdbea[_0x2aac('0x17')][_0x2aac('0x18')]===undefined?!![]:![]:!![],'where':_0x5cdbea[_0x2aac('0x17')]?_0x5cdbea['options'][_0x2aac('0x19')]||null:null,'attributes':[[db['sequelize']['fn'](_0x2aac('0x44'),db['sequelize']['fn']('IF',db[_0x2aac('0x3f')][_0x2aac('0x45')](_0x2aac('0x46')+util[_0x2aac('0x47')](_0x2aac('0x48'),moment()[_0x2aac('0x47')](_0x2aac('0x49')))+'\x20,\x201,\x20null'))),_0x2aac('0x4a')]]})[_0x2aac('0xa')](function(_0x6394fa){logger['info'](_0x2aac('0x42'),_0x5cdbea);logger[_0x2aac('0xe')](_0x2aac('0x42'),_0x5cdbea,JSON[_0x2aac('0x10')](_0x6394fa));_0x57c646(_0x6394fa);})[_0x2aac('0x15')](function(_0x58ca7c){logger[_0x2aac('0x12')](_0x2aac('0x42'),_0x58ca7c[_0x2aac('0x13')],_0x5cdbea);_0x3c00d4(_0x45944c['error'](0x1f4,_0x58ca7c[_0x2aac('0x13')]));});});};exports[_0x2aac('0x4b')]=function(_0x177adb){var _0x388947=this;return new Promise(function(_0x36fc88,_0x1d2e97){return db[_0x2aac('0x29')][_0x2aac('0x2a')]()[_0x2aac('0xa')](function(_0x5691ec){return db[_0x2aac('0x3f')]['transaction'](function(_0x2f9c5b){return db[_0x2aac('0x21')][_0x2aac('0x43')]({'where':_0x177adb[_0x2aac('0x17')]?_0x177adb['options'][_0x2aac('0x19')]||null:null,'attributes':_0x177adb[_0x2aac('0x17')]?_0x177adb['options'][_0x2aac('0x1a')]||null:null,'limit':0x1,'order':_0x177adb['options']?_0x177adb[_0x2aac('0x17')][_0x2aac('0x2c')]||null:null,'group':db[_0x2aac('0x21')][_0x2aac('0x36')],'transaction':_0x2f9c5b,'lock':_0x2f9c5b['LOCK'][_0x2aac('0x2e')],'include':_0x177adb[_0x2aac('0x17')]?_0x177adb[_0x2aac('0x17')][_0x2aac('0x1b')]?_[_0x2aac('0x1c')](_0x177adb[_0x2aac('0x17')][_0x2aac('0x1b')],function(_0x3423b8){return{'model':db[_0x3423b8[_0x2aac('0x1d')]],'as':_0x3423b8['as'],'attributes':_0x3423b8['attributes'],'include':_0x3423b8['include']?_['map'](_0x3423b8[_0x2aac('0x1b')],function(_0x3778f2){return{'model':db[_0x3778f2[_0x2aac('0x1d')]],'as':_0x3778f2['as'],'attributes':_0x3778f2[_0x2aac('0x1a')],'include':_0x3778f2['include']?_['map'](_0x3778f2['include'],function(_0xfbe4b0){return{'model':db[_0xfbe4b0[_0x2aac('0x1d')]],'as':_0xfbe4b0['as'],'attributes':_0xfbe4b0[_0x2aac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2aac('0xa')](function(_0x619da0){var _0x2d1fd5=[];for(var _0xbd62b3=0x0;_0xbd62b3<_0x619da0['length'];_0xbd62b3+=0x1){_0x2d1fd5[_0x2aac('0x37')](_0x619da0[_0xbd62b3][_0x2aac('0x38')](_0x177adb[_0x2aac('0x23')],{'transaction':_0x2f9c5b}));}return BPromise[_0x2aac('0x3a')](_0x2d1fd5);});})['then'](function(_0x423e85){logger[_0x2aac('0xb')](_0x2aac('0x4b'),_0x177adb);logger['debug'](_0x2aac('0x4b'),_0x177adb,JSON[_0x2aac('0x10')](_0x423e85));_0x36fc88(_0x423e85);})[_0x2aac('0x15')](function(_0x4b1f14){logger[_0x2aac('0x12')]('GetContactRecallMe',_0x4b1f14[_0x2aac('0x13')],_0x177adb);_0x1d2e97(_0x388947[_0x2aac('0x12')](0x1f4,_0x4b1f14[_0x2aac('0x13')]));});});});};exports[_0x2aac('0x4c')]=function(_0x399dce){var _0xc3dba6=this;return new Promise(function(_0x1089ea,_0x1843e3){db[_0x2aac('0x29')][_0x2aac('0x2a')]()[_0x2aac('0xa')](function(_0x1148df){return db[_0x2aac('0x21')][_0x2aac('0x43')]({'raw':_0x399dce[_0x2aac('0x17')]?_0x399dce['options']['raw']===undefined?!![]:![]:!![],'where':_0x399dce[_0x2aac('0x17')]?_0x399dce[_0x2aac('0x17')]['where']||null:null,'attributes':_0x399dce[_0x2aac('0x17')]?_0x399dce[_0x2aac('0x17')]['attributes']||null:null,'limit':_0x399dce['options']?_0x399dce[_0x2aac('0x17')][_0x2aac('0x24')]||null:null,'include':_0x399dce[_0x2aac('0x17')]?_0x399dce[_0x2aac('0x17')][_0x2aac('0x1b')]?_['map'](_0x399dce[_0x2aac('0x17')][_0x2aac('0x1b')],function(_0x4c03fa){return{'model':db[_0x4c03fa[_0x2aac('0x1d')]],'as':_0x4c03fa['as'],'attributes':_0x4c03fa['as']===_0x2aac('0x2f')?_['keys'](_0x1148df):_0x4c03fa[_0x2aac('0x1a')],'include':_0x4c03fa[_0x2aac('0x1b')]?_[_0x2aac('0x1c')](_0x4c03fa[_0x2aac('0x1b')],function(_0x47c2bc){return{'model':db[_0x47c2bc['model']],'as':_0x47c2bc['as'],'attributes':_0x47c2bc[_0x2aac('0x1a')],'include':_0x47c2bc['include']?_['map'](_0x47c2bc[_0x2aac('0x1b')],function(_0x4b9f07){return{'model':db[_0x4b9f07[_0x2aac('0x1d')]],'as':_0x4b9f07['as'],'attributes':_0x4b9f07[_0x2aac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x2aac('0xa')](function(_0x3ca229){logger[_0x2aac('0xb')](_0x2aac('0x16'),_0x399dce);logger['debug'](_0x2aac('0x16'),_0x399dce,JSON[_0x2aac('0x10')](_0x3ca229));_0x1089ea(_0x3ca229);})['catch'](function(_0x1a3df8){logger['error']('GetCmHopper',_0x1a3df8['message'],_0x399dce);_0x1843e3(_0xc3dba6['error'](0x1f4,_0x1a3df8['message']));});});});};exports['ResetActiveCalls']=function(_0x3c2e39){var _0x5807f6=this;return new Promise(function(_0x4c9383,_0x47406c){return db[_0x2aac('0x3f')]['transaction'](function(_0x534a18){return db[_0x2aac('0x21')][_0x2aac('0x38')]({'active':![]},{'where':{},'transaction':_0x534a18})[_0x2aac('0xa')](function(_0x4eeb99){logger[_0x2aac('0xb')](_0x2aac('0x4d'),_0x3c2e39);logger[_0x2aac('0xe')]('ResetActiveCalls',_0x3c2e39,JSON[_0x2aac('0x10')](_0x4eeb99));_0x4c9383(_0x4eeb99);})[_0x2aac('0x15')](function(_0x38a992){logger[_0x2aac('0x12')](_0x2aac('0x4d'),_0x38a992[_0x2aac('0x13')],_0x3c2e39);_0x47406c(_0x5807f6[_0x2aac('0x12')](0x1f4,_0x38a992['message']));});});});};exports[_0x2aac('0x4e')]=function(_0x484b6b){var _0x6dca0a=this;var _0x40a15b=_0x484b6b['body'][_0x2aac('0x19')][_0x2aac('0x4f')];var _0x1bedaa=_0x484b6b[_0x2aac('0x23')]['where'][_0x2aac('0x50')];return new Promise(function(_0xf181ee,_0x49bc5d){return db[_0x2aac('0x21')][_0x2aac('0x43')]({'where':{'voiceQueueId':_0x40a15b,'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$lte':db[_0x2aac('0x3f')][_0x2aac('0x45')](_0x2aac('0x51')+_0x1bedaa+'\x20MINUTE')}},'include':[{'model':db[_0x2aac('0x29')],'as':_0x2aac('0x2f')},{'model':db[_0x2aac('0x31')],'as':_0x2aac('0x32'),'attributes':['id','name',_0x2aac('0x34')]},{'model':db[_0x2aac('0x52')],'as':_0x2aac('0x53')}]})[_0x2aac('0xa')](function(_0xb37537){return db['sequelize'][_0x2aac('0x2b')](function(_0xc764a){return db[_0x2aac('0x21')][_0x2aac('0x38')]({'recallmeNotifiedDate':new Date()},{'where':{'voiceQueueId':_0x40a15b,'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$lte':db['sequelize']['literal'](_0x2aac('0x51')+_0x1bedaa+_0x2aac('0x54'))}},'transaction':_0xc764a})[_0x2aac('0xa')](function(_0xb4d0c0){_0xf181ee(_0xb37537);})['catch'](function(_0x1698c3){logger[_0x2aac('0x12')]('CmHopperHandlePreviewRecallNotifications',_0x1698c3['message'],_0x484b6b);_0x49bc5d(validateExpressRequest);});});})['catch'](function(_0x3f1116){logger[_0x2aac('0x12')](_0x2aac('0x4e'),_0x3f1116[_0x2aac('0x13')],_0x484b6b);_0x49bc5d(_0x6dca0a['error'](0x1f4,_0x3f1116[_0x2aac('0x13')]));});});};
\ No newline at end of file
+var _0x30fc=['NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','name','voicePause','CmList','List','CmHopperHandlePreviewRecallNotifications','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','twilio/lib/webhooks/webhooks','client','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetCmHopper','findAll','options','attributes','limit','include','map','model','catch','ShowCmHopper','CmHopper','raw','where','body','CreateCmHopper','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','CmContact','describe','sequelize','transaction','order','Contact','User','Agent','length','UserId','push','update','includes','all','GetContactDialer','dataValues','ContactId','MoveContactManagedDialer','CmHopperFinal','create','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','UPDATE','GetCmHopperPreview','keys','ResetActiveCalls','voiceQueueId','interval'];(function(_0x4031f2,_0x394a1d){var _0x45129f=function(_0x49b32a){while(--_0x49b32a){_0x4031f2['push'](_0x4031f2['shift']());}};_0x45129f(++_0x394a1d);}(_0x30fc,0x1b5));var _0xc30f=function(_0x5c0ca4,_0x191abb){_0x5c0ca4=_0x5c0ca4-0x0;var _0x597047=_0x30fc[_0x5c0ca4];return _0x597047;};'use strict';var _=require(_0xc30f('0x0'));var util=require('util');var moment=require(_0xc30f('0x1'));var BPromise=require(_0xc30f('0x2'));var rs=require(_0xc30f('0x3'));var fs=require('fs');var Redis=require(_0xc30f('0x4'));var db=require(_0xc30f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc30f('0x6'))(_0xc30f('0x7'));var config=require(_0xc30f('0x8'));var jayson=require(_0xc30f('0x9'));const {validateExpressRequest}=require(_0xc30f('0xa'));var client=jayson[_0xc30f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d5ac3,_0x352220,_0x5c5936){return new BPromise(function(_0x18542f,_0x399748){return client[_0xc30f('0xc')](_0x2d5ac3,_0x5c5936)[_0xc30f('0xd')](function(_0x56dc76){logger[_0xc30f('0xe')](_0xc30f('0xf'),_0x352220,_0xc30f('0x10'));logger[_0xc30f('0x11')](_0xc30f('0x12'),_0x352220,_0xc30f('0x10'),JSON[_0xc30f('0x13')](_0x56dc76));if(_0x56dc76[_0xc30f('0x14')]){if(_0x56dc76['error']['code']===0x1f4){logger[_0xc30f('0x14')](_0xc30f('0xf'),_0x352220,_0x56dc76[_0xc30f('0x14')][_0xc30f('0x15')]);return _0x399748(_0x56dc76[_0xc30f('0x14')][_0xc30f('0x15')]);}logger['error']('CmHopper,\x20%s,\x20%s',_0x352220,_0x56dc76[_0xc30f('0x14')][_0xc30f('0x15')]);return _0x18542f(_0x56dc76['error'][_0xc30f('0x15')]);}else{logger['info']('CmHopper,\x20%s,\x20%s',_0x352220,'request\x20sent');_0x18542f(_0x56dc76[_0xc30f('0x16')][_0xc30f('0x15')]);}})['catch'](function(_0x5d4431){logger['error']('CmHopper,\x20%s,\x20%s',_0x352220,_0x5d4431);_0x399748(_0x5d4431);});});}exports[_0xc30f('0x17')]=function(_0x5f20b3){var _0x16ba30=this;return new Promise(function(_0x32a287,_0x2a5aad){return db['CmHopper'][_0xc30f('0x18')]({'raw':_0x5f20b3[_0xc30f('0x19')]?_0x5f20b3['options']['raw']===undefined?!![]:![]:!![],'where':_0x5f20b3[_0xc30f('0x19')]?_0x5f20b3[_0xc30f('0x19')]['where']||null:null,'attributes':_0x5f20b3[_0xc30f('0x19')]?_0x5f20b3['options'][_0xc30f('0x1a')]||null:null,'limit':_0x5f20b3[_0xc30f('0x19')]?_0x5f20b3[_0xc30f('0x19')][_0xc30f('0x1b')]||null:null,'include':_0x5f20b3[_0xc30f('0x19')]?_0x5f20b3['options'][_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x5f20b3['options'][_0xc30f('0x1c')],function(_0x2615a2){return{'model':db[_0x2615a2[_0xc30f('0x1e')]],'as':_0x2615a2['as'],'attributes':_0x2615a2['attributes'],'include':_0x2615a2['include']?_[_0xc30f('0x1d')](_0x2615a2['include'],function(_0x42da43){return{'model':db[_0x42da43[_0xc30f('0x1e')]],'as':_0x42da43['as'],'attributes':_0x42da43[_0xc30f('0x1a')],'include':_0x42da43[_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x42da43[_0xc30f('0x1c')],function(_0x291adc){return{'model':db[_0x291adc[_0xc30f('0x1e')]],'as':_0x291adc['as'],'attributes':_0x291adc['attributes']};}):[]};}):[]};}):[]:[]})[_0xc30f('0xd')](function(_0x116885){logger['info'](_0xc30f('0x17'),_0x5f20b3);logger[_0xc30f('0x11')](_0xc30f('0x17'),_0x5f20b3,JSON[_0xc30f('0x13')](_0x116885));_0x32a287(_0x116885);})[_0xc30f('0x1f')](function(_0x5f11fc){logger[_0xc30f('0x14')](_0xc30f('0x17'),_0x5f11fc[_0xc30f('0x15')],_0x5f20b3);_0x2a5aad(_0x16ba30['error'](0x1f4,_0x5f11fc[_0xc30f('0x15')]));});});};exports[_0xc30f('0x20')]=function(_0x1c4be7){var _0x4022dd=this;return new Promise(function(_0x9f1367,_0x4dd96b){return db[_0xc30f('0x21')]['find']({'raw':_0x1c4be7['options']?_0x1c4be7[_0xc30f('0x19')][_0xc30f('0x22')]===undefined?!![]:![]:!![],'where':_0x1c4be7[_0xc30f('0x19')]?_0x1c4be7[_0xc30f('0x19')][_0xc30f('0x23')]||null:null,'attributes':_0x1c4be7[_0xc30f('0x19')]?_0x1c4be7[_0xc30f('0x19')]['attributes']||null:null,'include':_0x1c4be7[_0xc30f('0x19')]?_0x1c4be7['options'][_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x1c4be7[_0xc30f('0x19')][_0xc30f('0x1c')],function(_0x8224ee){return{'model':db[_0x8224ee[_0xc30f('0x1e')]],'as':_0x8224ee['as'],'attributes':_0x8224ee[_0xc30f('0x1a')],'include':_0x8224ee[_0xc30f('0x1c')]?_['map'](_0x8224ee[_0xc30f('0x1c')],function(_0x4e56fb){return{'model':db[_0x4e56fb['model']],'as':_0x4e56fb['as'],'attributes':_0x4e56fb[_0xc30f('0x1a')],'include':_0x4e56fb[_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x4e56fb[_0xc30f('0x1c')],function(_0x17aaa6){return{'model':db[_0x17aaa6[_0xc30f('0x1e')]],'as':_0x17aaa6['as'],'attributes':_0x17aaa6[_0xc30f('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ef6c6){logger[_0xc30f('0xe')](_0xc30f('0x20'),_0x1c4be7);logger[_0xc30f('0x11')](_0xc30f('0x20'),_0x1c4be7,JSON['stringify'](_0x3ef6c6));_0x9f1367(_0x3ef6c6);})['catch'](function(_0x397077){logger[_0xc30f('0x14')]('ShowCmHopper',_0x397077['message'],_0x1c4be7);_0x4dd96b(_0x4022dd[_0xc30f('0x14')](0x1f4,_0x397077[_0xc30f('0x15')]));});});};exports['CreateCmHopper']=function(_0x1622d8){var _0x5b0cbc=this;return new Promise(function(_0x240338,_0x23f622){return db['CmHopper']['create'](_0x1622d8[_0xc30f('0x24')],{'raw':_0x1622d8['options']?_0x1622d8['options'][_0xc30f('0x22')]===undefined?!![]:![]:!![]})['then'](function(_0x27b341){logger[_0xc30f('0xe')](_0xc30f('0x25'),_0x1622d8);logger[_0xc30f('0x11')](_0xc30f('0x25'),_0x1622d8,JSON[_0xc30f('0x13')](_0x27b341));_0x240338(_0x27b341);})['catch'](function(_0x570e23){logger[_0xc30f('0x14')](_0xc30f('0x25'),_0x570e23['message'],_0x1622d8);_0x23f622(_0x5b0cbc[_0xc30f('0x14')](0x1f4,_0x570e23['message']));});});};exports['UpdateCmHopper']=function(_0x855431){var _0x59c133=this;return new Promise(function(_0x4685bf,_0x2c9a94){return db[_0xc30f('0x21')]['update'](_0x855431[_0xc30f('0x24')],{'raw':_0x855431[_0xc30f('0x19')]?_0x855431['options'][_0xc30f('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x855431['options']?_0x855431[_0xc30f('0x19')][_0xc30f('0x23')]||null:null,'attributes':_0x855431[_0xc30f('0x19')]?_0x855431[_0xc30f('0x19')][_0xc30f('0x1a')]||null:null,'limit':_0x855431[_0xc30f('0x19')]?_0x855431[_0xc30f('0x19')][_0xc30f('0x1b')]||null:null})[_0xc30f('0xd')](function(_0x4cc8bd){logger[_0xc30f('0xe')](_0xc30f('0x26'),_0x855431);logger['info'](_0xc30f('0x27'),JSON[_0xc30f('0x13')](_0x855431[_0xc30f('0x19')][_0xc30f('0x23')]),_0x855431['body'][_0xc30f('0x28')]);logger['debug']('UpdateCmHopper',_0x855431,JSON[_0xc30f('0x13')](_0x4cc8bd));_0x4685bf(_0x4cc8bd);})['catch'](function(_0x517fb9){logger[_0xc30f('0x14')]('UpdateCmHopper',_0x517fb9[_0xc30f('0x15')],_0x855431);_0x2c9a94(_0x59c133[_0xc30f('0x14')](0x1f4,_0x517fb9['message']));});});};exports[_0xc30f('0x29')]=function(_0x1d4389){var _0x3eb23b=this;return new Promise(function(_0x1b5bba,_0x58a5d0){return db[_0xc30f('0x21')][_0xc30f('0x2a')]({'where':_0x1d4389['options']?_0x1d4389[_0xc30f('0x19')][_0xc30f('0x23')]||null:null})[_0xc30f('0xd')](function(_0x30d0af){logger['info'](_0xc30f('0x29'),_0x1d4389);logger['debug'](_0xc30f('0x29'),_0x1d4389,JSON[_0xc30f('0x13')](_0x30d0af));_0x1b5bba(_0x30d0af);})[_0xc30f('0x1f')](function(_0x241dd6){logger[_0xc30f('0x14')](_0xc30f('0x29'),_0x241dd6['message'],_0x1d4389);_0x58a5d0(_0x3eb23b[_0xc30f('0x14')](0x1f4,_0x241dd6[_0xc30f('0x15')]));});});};exports['GetContactDialer']=function(_0x429171){var _0x46e086=this;return new Promise(function(_0x5db05d,_0x27ce9d){return db[_0xc30f('0x2b')][_0xc30f('0x2c')]()[_0xc30f('0xd')](function(_0x474540){return db[_0xc30f('0x2d')][_0xc30f('0x2e')](function(_0x2083c9){return db[_0xc30f('0x21')]['findAll']({'where':_0x429171['options']?_0x429171[_0xc30f('0x19')][_0xc30f('0x23')]||null:null,'attributes':_0x429171[_0xc30f('0x19')]?_0x429171[_0xc30f('0x19')]['attributes']||null:null,'limit':_0x429171['options']?_0x429171[_0xc30f('0x19')][_0xc30f('0x1b')]||null:null,'order':_0x429171[_0xc30f('0x19')]?_0x429171[_0xc30f('0x19')][_0xc30f('0x2f')]||null:null,'transaction':_0x2083c9,'lock':_0x2083c9['LOCK']['UPDATE'],'include':[{'model':db[_0xc30f('0x2b')],'as':_0xc30f('0x30'),'attributes':_['keys'](_0x474540)},{'model':db[_0xc30f('0x31')],'as':_0xc30f('0x32'),'attributes':['id','name','voicePause']}]})[_0xc30f('0xd')](function(_0xcf8d72){var _0x5abcaa=[];var _0x21d447=[];for(var _0x3a032c=0x0;_0x3a032c<_0xcf8d72[_0xc30f('0x33')];_0x3a032c+=0x1){var _0x513f48=_0xcf8d72[_0x3a032c][_0xc30f('0x34')];if(_0x513f48===null){_0x5abcaa[_0xc30f('0x35')](_0xcf8d72[_0x3a032c][_0xc30f('0x36')](_0x429171[_0xc30f('0x24')],{'transaction':_0x2083c9}));}else if(!_0x21d447[_0xc30f('0x37')](_0x513f48)){_0x21d447[_0xc30f('0x35')](_0x513f48);_0x5abcaa[_0xc30f('0x35')](_0xcf8d72[_0x3a032c]['update'](_0x429171[_0xc30f('0x24')],{'transaction':_0x2083c9}));}}return BPromise[_0xc30f('0x38')](_0x5abcaa);});})[_0xc30f('0xd')](function(_0x259bcd){logger[_0xc30f('0xe')](_0xc30f('0x39'),_0x429171);if(_0x259bcd[_0xc30f('0x33')]>0x0){logger[_0xc30f('0xe')]('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0x259bcd[0x0][_0xc30f('0x3a')]['id'],_0x259bcd[0x0]['dataValues'][_0xc30f('0x3b')],_0x259bcd[0x0][_0xc30f('0x3a')][_0xc30f('0x28')]);}logger[_0xc30f('0x11')](_0xc30f('0x39'),_0x429171,JSON[_0xc30f('0x13')](_0x259bcd));_0x5db05d(_0x259bcd);})[_0xc30f('0x1f')](function(_0x2dfeb7){logger['error']('GetContactDialer',_0x2dfeb7[_0xc30f('0x15')],_0x429171);_0x27ce9d(_0x46e086[_0xc30f('0x14')](0x1f4,_0x2dfeb7[_0xc30f('0x15')]));});});});};exports[_0xc30f('0x3c')]=function(_0x4ae43b){var _0x3b1e1e=this;return new Promise(function(_0x23ccdd,_0x5cf496){return db['sequelize'][_0xc30f('0x2e')](function(_0x43d7e6){return db[_0xc30f('0x3d')][_0xc30f('0x3e')](_0x4ae43b[_0xc30f('0x24')],{'raw':_0x4ae43b[_0xc30f('0x19')]?_0x4ae43b[_0xc30f('0x19')][_0xc30f('0x22')]===undefined?!![]:![]:!![],'transaction':_0x43d7e6})[_0xc30f('0xd')](function(){logger['info'](_0xc30f('0x3f'),JSON['stringify'](_0x4ae43b[_0xc30f('0x19')][_0xc30f('0x23')]),_0x4ae43b['options'][_0xc30f('0x23')]['active']);return db['CmHopper']['destroy']({'where':_0x4ae43b[_0xc30f('0x19')]?_0x4ae43b[_0xc30f('0x19')]['where']||null:null,'transaction':_0x43d7e6});});})['then'](function(_0x4d85a4){logger[_0xc30f('0xe')]('MoveContactManagedDialer',_0x4ae43b);logger[_0xc30f('0x11')](_0xc30f('0x3c'),_0x4ae43b,JSON[_0xc30f('0x13')](_0x4d85a4));_0x23ccdd(_0x4d85a4);})[_0xc30f('0x1f')](function(_0x2950d3){logger[_0xc30f('0x14')](_0xc30f('0x3c'),_0x2950d3[_0xc30f('0x15')],_0x4ae43b);_0x5cf496(_0x3b1e1e[_0xc30f('0x14')](0x1f4,_0x2950d3[_0xc30f('0x15')]));});});};exports[_0xc30f('0x40')]=function(_0x2df2a9){var _0x5adb4b=this;return new Promise(function(_0x51b139,_0x3356ea){return db[_0xc30f('0x21')][_0xc30f('0x18')]({'raw':_0x2df2a9[_0xc30f('0x19')]?_0x2df2a9[_0xc30f('0x19')][_0xc30f('0x22')]===undefined?!![]:![]:!![],'where':_0x2df2a9[_0xc30f('0x19')]?_0x2df2a9[_0xc30f('0x19')][_0xc30f('0x23')]||null:null,'attributes':[[db[_0xc30f('0x2d')]['fn'](_0xc30f('0x41'),db[_0xc30f('0x2d')]['fn']('IF',db[_0xc30f('0x2d')][_0xc30f('0x42')](_0xc30f('0x43')+util[_0xc30f('0x44')](_0xc30f('0x45'),moment()['format'](_0xc30f('0x46')))+_0xc30f('0x47')))),'contactsRescheduled']]})['then'](function(_0x4cf6f3){logger[_0xc30f('0xe')](_0xc30f('0x40'),_0x2df2a9);logger['debug']('CountReScheduled',_0x2df2a9,JSON['stringify'](_0x4cf6f3));_0x51b139(_0x4cf6f3);})['catch'](function(_0x589d70){logger[_0xc30f('0x14')]('CountReScheduled',_0x589d70['message'],_0x2df2a9);_0x3356ea(_0x5adb4b[_0xc30f('0x14')](0x1f4,_0x589d70[_0xc30f('0x15')]));});});};exports[_0xc30f('0x48')]=function(_0x182f26){var _0x19699b=this;return new Promise(function(_0x107359,_0x56f53a){return db[_0xc30f('0x2b')][_0xc30f('0x2c')]()[_0xc30f('0xd')](function(_0x3ae488){return db[_0xc30f('0x2d')][_0xc30f('0x2e')](function(_0x202b72){return db[_0xc30f('0x21')][_0xc30f('0x18')]({'where':_0x182f26[_0xc30f('0x19')]?_0x182f26[_0xc30f('0x19')]['where']||null:null,'attributes':_0x182f26[_0xc30f('0x19')]?_0x182f26[_0xc30f('0x19')][_0xc30f('0x1a')]||null:null,'limit':0x1,'order':_0x182f26[_0xc30f('0x19')]?_0x182f26[_0xc30f('0x19')][_0xc30f('0x2f')]||null:null,'group':db[_0xc30f('0x21')][_0xc30f('0x34')],'transaction':_0x202b72,'lock':_0x202b72['LOCK'][_0xc30f('0x49')],'include':_0x182f26[_0xc30f('0x19')]?_0x182f26[_0xc30f('0x19')][_0xc30f('0x1c')]?_['map'](_0x182f26[_0xc30f('0x19')][_0xc30f('0x1c')],function(_0x17c49c){return{'model':db[_0x17c49c[_0xc30f('0x1e')]],'as':_0x17c49c['as'],'attributes':_0x17c49c[_0xc30f('0x1a')],'include':_0x17c49c[_0xc30f('0x1c')]?_['map'](_0x17c49c['include'],function(_0x34cf04){return{'model':db[_0x34cf04['model']],'as':_0x34cf04['as'],'attributes':_0x34cf04[_0xc30f('0x1a')],'include':_0x34cf04[_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x34cf04[_0xc30f('0x1c')],function(_0x1df3fa){return{'model':db[_0x1df3fa[_0xc30f('0x1e')]],'as':_0x1df3fa['as'],'attributes':_0x1df3fa[_0xc30f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc30f('0xd')](function(_0x1f4d3c){var _0x321435=[];for(var _0x5a6fe7=0x0;_0x5a6fe7<_0x1f4d3c['length'];_0x5a6fe7+=0x1){_0x321435[_0xc30f('0x35')](_0x1f4d3c[_0x5a6fe7]['update'](_0x182f26[_0xc30f('0x24')],{'transaction':_0x202b72}));}return BPromise[_0xc30f('0x38')](_0x321435);});})[_0xc30f('0xd')](function(_0x38f0af){logger[_0xc30f('0xe')](_0xc30f('0x48'),_0x182f26);logger[_0xc30f('0x11')](_0xc30f('0x48'),_0x182f26,JSON[_0xc30f('0x13')](_0x38f0af));_0x107359(_0x38f0af);})[_0xc30f('0x1f')](function(_0x212f01){logger['error']('GetContactRecallMe',_0x212f01[_0xc30f('0x15')],_0x182f26);_0x56f53a(_0x19699b['error'](0x1f4,_0x212f01['message']));});});});};exports[_0xc30f('0x4a')]=function(_0x4afb71){var _0x46c214=this;return new Promise(function(_0x5d76c7,_0x4d5134){db[_0xc30f('0x2b')][_0xc30f('0x2c')]()[_0xc30f('0xd')](function(_0x26d11e){return db[_0xc30f('0x21')]['findAll']({'raw':_0x4afb71[_0xc30f('0x19')]?_0x4afb71['options'][_0xc30f('0x22')]===undefined?!![]:![]:!![],'where':_0x4afb71[_0xc30f('0x19')]?_0x4afb71['options'][_0xc30f('0x23')]||null:null,'attributes':_0x4afb71[_0xc30f('0x19')]?_0x4afb71[_0xc30f('0x19')]['attributes']||null:null,'limit':_0x4afb71[_0xc30f('0x19')]?_0x4afb71[_0xc30f('0x19')][_0xc30f('0x1b')]||null:null,'include':_0x4afb71[_0xc30f('0x19')]?_0x4afb71[_0xc30f('0x19')][_0xc30f('0x1c')]?_['map'](_0x4afb71[_0xc30f('0x19')][_0xc30f('0x1c')],function(_0x1ce830){return{'model':db[_0x1ce830[_0xc30f('0x1e')]],'as':_0x1ce830['as'],'attributes':_0x1ce830['as']===_0xc30f('0x30')?_[_0xc30f('0x4b')](_0x26d11e):_0x1ce830[_0xc30f('0x1a')],'include':_0x1ce830[_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x1ce830[_0xc30f('0x1c')],function(_0x1244c2){return{'model':db[_0x1244c2[_0xc30f('0x1e')]],'as':_0x1244c2['as'],'attributes':_0x1244c2['attributes'],'include':_0x1244c2[_0xc30f('0x1c')]?_[_0xc30f('0x1d')](_0x1244c2[_0xc30f('0x1c')],function(_0x293663){return{'model':db[_0x293663[_0xc30f('0x1e')]],'as':_0x293663['as'],'attributes':_0x293663[_0xc30f('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc30f('0xd')](function(_0x44668c){logger[_0xc30f('0xe')](_0xc30f('0x17'),_0x4afb71);logger[_0xc30f('0x11')]('GetCmHopper',_0x4afb71,JSON[_0xc30f('0x13')](_0x44668c));_0x5d76c7(_0x44668c);})[_0xc30f('0x1f')](function(_0x56b7b0){logger[_0xc30f('0x14')](_0xc30f('0x17'),_0x56b7b0[_0xc30f('0x15')],_0x4afb71);_0x4d5134(_0x46c214['error'](0x1f4,_0x56b7b0[_0xc30f('0x15')]));});});});};exports[_0xc30f('0x4c')]=function(_0x7fdee4){var _0x9bbbe0=this;return new Promise(function(_0x1d7b62,_0x21df99){return db['sequelize'][_0xc30f('0x2e')](function(_0x5ce9ee){return db['CmHopper'][_0xc30f('0x36')]({'active':![]},{'where':{},'transaction':_0x5ce9ee})[_0xc30f('0xd')](function(_0x1ee317){logger[_0xc30f('0xe')](_0xc30f('0x4c'),_0x7fdee4);logger['debug'](_0xc30f('0x4c'),_0x7fdee4,JSON[_0xc30f('0x13')](_0x1ee317));_0x1d7b62(_0x1ee317);})[_0xc30f('0x1f')](function(_0x3da34b){logger[_0xc30f('0x14')]('ResetActiveCalls',_0x3da34b[_0xc30f('0x15')],_0x7fdee4);_0x21df99(_0x9bbbe0['error'](0x1f4,_0x3da34b[_0xc30f('0x15')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x3cdd18){var _0x1ab09c=this;var _0x5e2b42=_0x3cdd18[_0xc30f('0x24')][_0xc30f('0x23')][_0xc30f('0x4d')];var _0x22154c=_0x3cdd18[_0xc30f('0x24')][_0xc30f('0x23')][_0xc30f('0x4e')];return new Promise(function(_0x10aab0,_0x39be2d){return db[_0xc30f('0x21')][_0xc30f('0x18')]({'where':{'voiceQueueId':_0x5e2b42,'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$lte':db[_0xc30f('0x2d')][_0xc30f('0x42')](_0xc30f('0x4f')+_0x22154c+_0xc30f('0x50'))}},'include':[{'model':db['CmContact'],'as':_0xc30f('0x30')},{'model':db['User'],'as':_0xc30f('0x32'),'attributes':['id',_0xc30f('0x51'),_0xc30f('0x52')]},{'model':db[_0xc30f('0x53')],'as':_0xc30f('0x54')}]})[_0xc30f('0xd')](function(_0x53f7cf){return db[_0xc30f('0x2d')][_0xc30f('0x2e')](function(_0x423e82){return db['CmHopper'][_0xc30f('0x36')]({'recallmeNotifiedDate':new Date()},{'where':{'voiceQueueId':_0x5e2b42,'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$lte':db[_0xc30f('0x2d')]['literal']('NOW()\x20+\x20INTERVAL\x20'+_0x22154c+'\x20MINUTE')}},'transaction':_0x423e82})[_0xc30f('0xd')](function(_0x1da015){_0x10aab0(_0x53f7cf);})['catch'](function(_0x37e70c){logger[_0xc30f('0x14')]('CmHopperHandlePreviewRecallNotifications',_0x37e70c['message'],_0x3cdd18);_0x39be2d(validateExpressRequest);});});})[_0xc30f('0x1f')](function(_0x2be1ea){logger[_0xc30f('0x14')](_0xc30f('0x55'),_0x2be1ea[_0xc30f('0x15')],_0x3cdd18);_0x39be2d(_0x1ab09c['error'](0x1f4,_0x2be1ea[_0xc30f('0x15')]));});});};
\ No newline at end of file
index 234cbe7..3a93de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90c0=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','show','post','/preview','getPreview','/:id'];(function(_0x3494ee,_0x7b1b9a){var _0x12b115=function(_0x25e4c6){while(--_0x25e4c6){_0x3494ee['push'](_0x3494ee['shift']());}};_0x12b115(++_0x7b1b9a);}(_0x90c0,0xf7));var _0x090c=function(_0x208c54,_0x120a70){_0x208c54=_0x208c54-0x0;var _0x4b0116=_0x90c0[_0x208c54];return _0x4b0116;};'use strict';var multer=require(_0x090c('0x0'));var util=require(_0x090c('0x1'));var path=require(_0x090c('0x2'));var timeout=require(_0x090c('0x3'));var express=require(_0x090c('0x4'));var router=express[_0x090c('0x5')]();var fs_extra=require(_0x090c('0x6'));var auth=require(_0x090c('0x7'));var interaction=require(_0x090c('0x8'));var config=require(_0x090c('0x9'));var controller=require(_0x090c('0xa'));router[_0x090c('0xb')]('/',auth[_0x090c('0xc')](),controller[_0x090c('0xd')]);router['get'](_0x090c('0xe'),auth[_0x090c('0xc')](),controller[_0x090c('0xf')]);router[_0x090c('0xb')](_0x090c('0x10'),auth['isAuthenticated'](),controller[_0x090c('0x11')]);router[_0x090c('0xb')]('/:id',auth[_0x090c('0xc')](),controller[_0x090c('0x12')]);router[_0x090c('0x13')]('/',auth[_0x090c('0xc')](),controller['create']);router[_0x090c('0x13')](_0x090c('0x14'),auth[_0x090c('0xc')](),controller[_0x090c('0x15')]);router[_0x090c('0x13')]('/previewrecall',auth[_0x090c('0xc')](),controller['getPreviewRecall']);router['put'](_0x090c('0x16'),auth[_0x090c('0xc')](),controller[_0x090c('0x17')]);router[_0x090c('0x18')](_0x090c('0x16'),auth[_0x090c('0xc')](),controller[_0x090c('0x19')]);module[_0x090c('0x1a')]=router;
\ No newline at end of file
+var _0x2c1e=['create','/preview','getPreview','getPreviewRecall','put','update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','isAuthenticated','index','get','describe','/opencontacts','getOpenContacts','/:id','show','post'];(function(_0x357762,_0x10772f){var _0x40c026=function(_0x381929){while(--_0x381929){_0x357762['push'](_0x357762['shift']());}};_0x40c026(++_0x10772f);}(_0x2c1e,0xf1));var _0xe2c1=function(_0xee3c05,_0x5c27c6){_0xee3c05=_0xee3c05-0x0;var _0x2b2f62=_0x2c1e[_0xee3c05];return _0x2b2f62;};'use strict';var multer=require(_0xe2c1('0x0'));var util=require(_0xe2c1('0x1'));var path=require(_0xe2c1('0x2'));var timeout=require(_0xe2c1('0x3'));var express=require('express');var router=express[_0xe2c1('0x4')]();var fs_extra=require(_0xe2c1('0x5'));var auth=require(_0xe2c1('0x6'));var interaction=require(_0xe2c1('0x7'));var config=require(_0xe2c1('0x8'));var controller=require(_0xe2c1('0x9'));router['get']('/',auth[_0xe2c1('0xa')](),controller[_0xe2c1('0xb')]);router[_0xe2c1('0xc')]('/describe',auth['isAuthenticated'](),controller[_0xe2c1('0xd')]);router['get'](_0xe2c1('0xe'),auth[_0xe2c1('0xa')](),controller[_0xe2c1('0xf')]);router['get'](_0xe2c1('0x10'),auth['isAuthenticated'](),controller[_0xe2c1('0x11')]);router[_0xe2c1('0x12')]('/',auth[_0xe2c1('0xa')](),controller[_0xe2c1('0x13')]);router[_0xe2c1('0x12')](_0xe2c1('0x14'),auth[_0xe2c1('0xa')](),controller[_0xe2c1('0x15')]);router[_0xe2c1('0x12')]('/previewrecall',auth[_0xe2c1('0xa')](),controller[_0xe2c1('0x16')]);router[_0xe2c1('0x17')]('/:id',auth[_0xe2c1('0xa')](),controller[_0xe2c1('0x18')]);router['delete'](_0xe2c1('0x10'),auth['isAuthenticated'](),controller[_0xe2c1('0x19')]);module['exports']=router;
\ No newline at end of file
index 1439065..bb56955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfae=['contactListQueue','sequelize','STRING','INTEGER'];(function(_0x3cc8cb,_0x31f8fe){var _0x427615=function(_0x4dda8e){while(--_0x4dda8e){_0x3cc8cb['push'](_0x3cc8cb['shift']());}};_0x427615(++_0x31f8fe);}(_0xdfae,0x18d));var _0xedfa=function(_0x148c09,_0x4fd39f){_0x148c09=_0x148c09-0x0;var _0x18e613=_0xdfae[_0x148c09];return _0x18e613;};'use strict';var moment=require('moment');var Sequelize=require(_0xedfa('0x0'));module['exports']={'phone':{'type':Sequelize[_0xedfa('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xedfa('0x2')],'unique':'contactListQueue'},'ListId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0xedfa('0x2')],'unique':_0xedfa('0x3')}};
\ No newline at end of file
+var _0xa647=['STRING','INTEGER','contactListQueue','moment','sequelize','exports'];(function(_0xb10f06,_0x35346f){var _0x6a9e31=function(_0x405987){while(--_0x405987){_0xb10f06['push'](_0xb10f06['shift']());}};_0x6a9e31(++_0x35346f);}(_0xa647,0x81));var _0x7a64=function(_0x28eff0,_0x475a29){_0x28eff0=_0x28eff0-0x0;var _0x345d65=_0xa647[_0x28eff0];return _0x345d65;};'use strict';var moment=require(_0x7a64('0x0'));var Sequelize=require(_0x7a64('0x1'));module[_0x7a64('0x2')]={'phone':{'type':Sequelize[_0x7a64('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x7a64('0x4')],'unique':_0x7a64('0x5')},'ListId':{'type':Sequelize[_0x7a64('0x4')],'unique':_0x7a64('0x5')},'VoiceQueueId':{'type':Sequelize[_0x7a64('0x4')],'unique':_0x7a64('0x5')}};
\ No newline at end of file
index f0d17c7..c700447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85a0=['fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','set','Content-Range','reject','save','update','then','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','rows','params','length','options','find','catch','body','destroy','describe','eml-format','rimraf'];(function(_0x368edc,_0xa9f058){var _0x4e2c31=function(_0x552255){while(--_0x552255){_0x368edc['push'](_0x368edc['shift']());}};_0x4e2c31(++_0xa9f058);}(_0x85a0,0xdf));var _0x085a=function(_0xdee6c4,_0x912b2c){_0xdee6c4=_0xdee6c4-0x0;var _0xcb9daa=_0x85a0[_0xdee6c4];return _0xcb9daa;};'use strict';var emlformat=require(_0x085a('0x0'));var rimraf=require(_0x085a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x085a('0x2'));var rp=require(_0x085a('0x3'));var moment=require(_0x085a('0x4'));var BPromise=require(_0x085a('0x5'));var Mustache=require(_0x085a('0x6'));var util=require(_0x085a('0x7'));var path=require('path');var sox=require(_0x085a('0x8'));var csv=require(_0x085a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x085a('0xa'));var squel=require(_0x085a('0xb'));var crypto=require(_0x085a('0xc'));var jsforce=require(_0x085a('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x085a('0x9'));var querystring=require(_0x085a('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x085a('0xf'));var qs=require(_0x085a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x085a('0x11'))(_0x085a('0x12'));var utils=require(_0x085a('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x085a('0x14'));var db=require(_0x085a('0x15'))['db'];function respondWithStatusCode(_0x5cf2de,_0x568b00){_0x568b00=_0x568b00||0xcc;return function(_0xf9a4d2){if(_0xf9a4d2){return _0x5cf2de[_0x085a('0x16')](_0x568b00);}return _0x5cf2de[_0x085a('0x17')](_0x568b00)[_0x085a('0x18')]();};}function respondWithResult(_0x4b7d8a,_0x149fbc){_0x149fbc=_0x149fbc||0xc8;return function(_0x106e9d){if(_0x106e9d){return _0x4b7d8a[_0x085a('0x17')](_0x149fbc)[_0x085a('0x19')](_0x106e9d);}};}function respondWithFilteredResult(_0x397fe1,_0x36d860){return function(_0x4858e6){if(_0x4858e6){var _0x5be09f=typeof _0x36d860['offset']==='undefined'&&typeof _0x36d860['limit']===_0x085a('0x1a');var _0x3359e0=_0x4858e6['count'];var _0x23bb7e=_0x5be09f?0x0:_0x36d860[_0x085a('0x1b')];var _0x109535=_0x5be09f?_0x4858e6[_0x085a('0x1c')]:_0x36d860['offset']+_0x36d860['limit'];var _0x2bb67d;if(_0x109535>=_0x3359e0){_0x109535=_0x3359e0;_0x2bb67d=0xc8;}else{_0x2bb67d=0xce;}_0x397fe1[_0x085a('0x17')](_0x2bb67d);return _0x397fe1[_0x085a('0x1d')](_0x085a('0x1e'),_0x23bb7e+'-'+_0x109535+'/'+_0x3359e0)[_0x085a('0x19')](_0x4858e6);}return null;};}function patchUpdates(_0x37bc3d){return function(_0x400bea){try{jsonpatch['apply'](_0x400bea,_0x37bc3d,!![]);}catch(_0x263b5f){return BPromise[_0x085a('0x1f')](_0x263b5f);}return _0x400bea[_0x085a('0x20')]();};}function saveUpdates(_0x585086,_0x3d8d84){return function(_0x41584b){if(_0x41584b){return _0x41584b[_0x085a('0x21')](_0x585086)['then'](function(_0x172c07){return _0x172c07;});}return null;};}function removeEntity(_0x140163,_0x462f84){return function(_0x266e45){if(_0x266e45){return _0x266e45['destroy']()[_0x085a('0x22')](function(){_0x140163[_0x085a('0x17')](0xcc)[_0x085a('0x18')]();});}};}function handleEntityNotFound(_0x2a3b12,_0x551206){return function(_0x51defa){if(!_0x51defa){_0x2a3b12[_0x085a('0x16')](0x194);}return _0x51defa;};}function handleError(_0x344d88,_0x9c0791){_0x9c0791=_0x9c0791||0x1f4;return function(_0x24a0b4){logger[_0x085a('0x23')](_0x24a0b4[_0x085a('0x24')]);if(_0x24a0b4[_0x085a('0x25')]){delete _0x24a0b4[_0x085a('0x25')];}_0x344d88[_0x085a('0x17')](_0x9c0791)[_0x085a('0x26')](_0x24a0b4);};}exports[_0x085a('0x27')]=function(_0x1eb578,_0x5628f1){var _0x490ecf={},_0x2513cb={},_0x56b265={'count':0x0,'rows':[]};var _0x42f3ba=_[_0x085a('0x28')](db[_0x085a('0x29')][_0x085a('0x2a')],function(_0x54fd2d){return{'name':_0x54fd2d[_0x085a('0x2b')],'type':_0x54fd2d[_0x085a('0x2c')][_0x085a('0x2d')]};});_0x2513cb[_0x085a('0x2e')]=_[_0x085a('0x28')](_0x42f3ba,'name');_0x2513cb[_0x085a('0x2f')]=_[_0x085a('0x30')](_0x1eb578[_0x085a('0x2f')]);_0x2513cb[_0x085a('0x31')]=_['intersection'](_0x2513cb['model'],_0x2513cb['query']);_0x490ecf[_0x085a('0x32')]=_[_0x085a('0x33')](_0x2513cb['model'],qs[_0x085a('0x34')](_0x1eb578[_0x085a('0x2f')][_0x085a('0x34')]));_0x490ecf[_0x085a('0x32')]=_0x490ecf[_0x085a('0x32')]['length']?_0x490ecf[_0x085a('0x32')]:_0x2513cb[_0x085a('0x2e')];if(!_0x1eb578[_0x085a('0x2f')][_0x085a('0x35')](_0x085a('0x36'))){_0x490ecf[_0x085a('0x37')]=qs[_0x085a('0x37')](_0x1eb578['query']['limit']);_0x490ecf['offset']=qs[_0x085a('0x1b')](_0x1eb578[_0x085a('0x2f')][_0x085a('0x1b')]);}_0x490ecf[_0x085a('0x38')]=qs[_0x085a('0x39')](_0x1eb578['query']['sort']);_0x490ecf['where']=qs[_0x085a('0x31')](_[_0x085a('0x3a')](_0x1eb578[_0x085a('0x2f')],_0x2513cb[_0x085a('0x31')]),_0x42f3ba);if(_0x1eb578[_0x085a('0x2f')][_0x085a('0x3b')]){_0x490ecf['where']=_[_0x085a('0x3c')](_0x490ecf[_0x085a('0x3d')],{'$or':_[_0x085a('0x28')](_0x42f3ba,function(_0x1d185a){if(_0x1d185a[_0x085a('0x2c')]!==_0x085a('0x3e')){var _0x261706={};_0x261706[_0x1d185a[_0x085a('0x25')]]={'$like':'%'+_0x1eb578[_0x085a('0x2f')]['filter']+'%'};return _0x261706;}})});}_0x490ecf=_['merge']({},_0x490ecf,_0x1eb578['options']);var _0x13c98f={'where':_0x490ecf['where']};return db[_0x085a('0x29')][_0x085a('0x1c')](_0x13c98f)['then'](function(_0x239ddf){_0x56b265['count']=_0x239ddf;if(_0x1eb578[_0x085a('0x2f')][_0x085a('0x3f')]){_0x490ecf[_0x085a('0x40')]=[{'all':!![]}];}return db[_0x085a('0x29')][_0x085a('0x41')](_0x490ecf);})[_0x085a('0x22')](function(_0x300e28){_0x56b265[_0x085a('0x42')]=_0x300e28;return _0x56b265;})['then'](respondWithFilteredResult(_0x5628f1,_0x490ecf))['catch'](handleError(_0x5628f1,null));};exports['show']=function(_0x284ba1,_0x46afe0){var _0x36533b={'raw':!![],'where':{'id':_0x284ba1[_0x085a('0x43')]['id']}},_0x39cf6f={};_0x39cf6f['model']=_[_0x085a('0x30')](db['CmHopperBlack'][_0x085a('0x2a')]);_0x39cf6f['query']=_[_0x085a('0x30')](_0x284ba1[_0x085a('0x2f')]);_0x39cf6f[_0x085a('0x31')]=_[_0x085a('0x33')](_0x39cf6f[_0x085a('0x2e')],_0x39cf6f['query']);_0x36533b[_0x085a('0x32')]=_[_0x085a('0x33')](_0x39cf6f[_0x085a('0x2e')],qs['fields'](_0x284ba1['query']['fields']));_0x36533b[_0x085a('0x32')]=_0x36533b[_0x085a('0x32')][_0x085a('0x44')]?_0x36533b['attributes']:_0x39cf6f['model'];if(_0x284ba1[_0x085a('0x2f')][_0x085a('0x3f')]){_0x36533b['include']=[{'all':!![]}];}_0x36533b=_[_0x085a('0x3c')]({},_0x36533b,_0x284ba1[_0x085a('0x45')]);return db[_0x085a('0x29')][_0x085a('0x46')](_0x36533b)['then'](handleEntityNotFound(_0x46afe0,null))['then'](respondWithResult(_0x46afe0,null))[_0x085a('0x47')](handleError(_0x46afe0,null));};exports['update']=function(_0x2ff9de,_0x2cdcef){if(_0x2ff9de[_0x085a('0x48')]['id']){delete _0x2ff9de[_0x085a('0x48')]['id'];}return db[_0x085a('0x29')][_0x085a('0x46')]({'where':{'id':_0x2ff9de['params']['id']}})['then'](handleEntityNotFound(_0x2cdcef,null))[_0x085a('0x22')](saveUpdates(_0x2ff9de['body'],null))[_0x085a('0x22')](respondWithResult(_0x2cdcef,null))[_0x085a('0x47')](handleError(_0x2cdcef,null));};exports[_0x085a('0x49')]=function(_0x280ff0,_0x296778){return db[_0x085a('0x29')][_0x085a('0x46')]({'where':{'id':_0x280ff0['params']['id']}})[_0x085a('0x22')](handleEntityNotFound(_0x296778,null))[_0x085a('0x22')](removeEntity(_0x296778,null))['catch'](handleError(_0x296778,null));};exports[_0x085a('0x4a')]=function(_0x2c3184,_0x514b5b){return db[_0x085a('0x29')][_0x085a('0x4a')]()[_0x085a('0x22')](respondWithResult(_0x514b5b,null))[_0x085a('0x47')](handleError(_0x514b5b,null));};
\ No newline at end of file
+var _0x516a=['type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName'];(function(_0x2e0fd5,_0x6b5aef){var _0x3401fd=function(_0x5d063d){while(--_0x5d063d){_0x2e0fd5['push'](_0x2e0fd5['shift']());}};_0x3401fd(++_0x6b5aef);}(_0x516a,0xb3));var _0xa516=function(_0x4014ba,_0x19d38c){_0x4014ba=_0x4014ba-0x0;var _0xdcbe23=_0x516a[_0x4014ba];return _0xdcbe23;};'use strict';var emlformat=require(_0xa516('0x0'));var rimraf=require(_0xa516('0x1'));var zipdir=require(_0xa516('0x2'));var jsonpatch=require(_0xa516('0x3'));var rp=require(_0xa516('0x4'));var moment=require(_0xa516('0x5'));var BPromise=require(_0xa516('0x6'));var Mustache=require('mustache');var util=require(_0xa516('0x7'));var path=require('path');var sox=require(_0xa516('0x8'));var csv=require('to-csv');var ejs=require(_0xa516('0x9'));var fs=require('fs');var fs_extra=require(_0xa516('0xa'));var _=require(_0xa516('0xb'));var squel=require('squel');var crypto=require(_0xa516('0xc'));var jsforce=require(_0xa516('0xd'));var deskjs=require(_0xa516('0xe'));var toCsv=require(_0xa516('0xf'));var querystring=require(_0xa516('0x10'));var Papa=require('papaparse');var Redis=require(_0xa516('0x11'));var authService=require(_0xa516('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa516('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa516('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa516('0x15'));var db=require(_0xa516('0x16'))['db'];function respondWithStatusCode(_0x41e128,_0x27d9c7){_0x27d9c7=_0x27d9c7||0xcc;return function(_0x1f9489){if(_0x1f9489){return _0x41e128[_0xa516('0x17')](_0x27d9c7);}return _0x41e128[_0xa516('0x18')](_0x27d9c7)[_0xa516('0x19')]();};}function respondWithResult(_0x3eca2b,_0x3434ec){_0x3434ec=_0x3434ec||0xc8;return function(_0x39a4c6){if(_0x39a4c6){return _0x3eca2b['status'](_0x3434ec)[_0xa516('0x1a')](_0x39a4c6);}};}function respondWithFilteredResult(_0x5b86c0,_0x27487f){return function(_0x4c8910){if(_0x4c8910){var _0x531788=typeof _0x27487f[_0xa516('0x1b')]===_0xa516('0x1c')&&typeof _0x27487f[_0xa516('0x1d')]==='undefined';var _0x168032=_0x4c8910[_0xa516('0x1e')];var _0x51f3a4=_0x531788?0x0:_0x27487f[_0xa516('0x1b')];var _0x431503=_0x531788?_0x4c8910[_0xa516('0x1e')]:_0x27487f[_0xa516('0x1b')]+_0x27487f['limit'];var _0xeed1fc;if(_0x431503>=_0x168032){_0x431503=_0x168032;_0xeed1fc=0xc8;}else{_0xeed1fc=0xce;}_0x5b86c0['status'](_0xeed1fc);return _0x5b86c0[_0xa516('0x1f')](_0xa516('0x20'),_0x51f3a4+'-'+_0x431503+'/'+_0x168032)['json'](_0x4c8910);}return null;};}function patchUpdates(_0x4279d7){return function(_0x176ac6){try{jsonpatch[_0xa516('0x21')](_0x176ac6,_0x4279d7,!![]);}catch(_0xcd5155){return BPromise[_0xa516('0x22')](_0xcd5155);}return _0x176ac6[_0xa516('0x23')]();};}function saveUpdates(_0x3b0376,_0x309d44){return function(_0x1b9f91){if(_0x1b9f91){return _0x1b9f91[_0xa516('0x24')](_0x3b0376)[_0xa516('0x25')](function(_0x29f9ec){return _0x29f9ec;});}return null;};}function removeEntity(_0x2df9f2,_0x34f336){return function(_0x264413){if(_0x264413){return _0x264413['destroy']()[_0xa516('0x25')](function(){_0x2df9f2[_0xa516('0x18')](0xcc)[_0xa516('0x19')]();});}};}function handleEntityNotFound(_0x2c7d14,_0x2a0d26){return function(_0x5736ef){if(!_0x5736ef){_0x2c7d14[_0xa516('0x17')](0x194);}return _0x5736ef;};}function handleError(_0x3a1084,_0x5c728a){_0x5c728a=_0x5c728a||0x1f4;return function(_0x4272c0){logger['error'](_0x4272c0[_0xa516('0x26')]);if(_0x4272c0['name']){delete _0x4272c0[_0xa516('0x27')];}_0x3a1084[_0xa516('0x18')](_0x5c728a)[_0xa516('0x28')](_0x4272c0);};}exports[_0xa516('0x29')]=function(_0xc176cd,_0x1823e7){var _0xa95e08={},_0x1c5a98={},_0x32d10b={'count':0x0,'rows':[]};var _0x1b9783=_[_0xa516('0x2a')](db[_0xa516('0x2b')][_0xa516('0x2c')],function(_0x164eef){return{'name':_0x164eef[_0xa516('0x2d')],'type':_0x164eef[_0xa516('0x2e')]['key']};});_0x1c5a98[_0xa516('0x2f')]=_[_0xa516('0x2a')](_0x1b9783,_0xa516('0x27'));_0x1c5a98[_0xa516('0x30')]=_[_0xa516('0x31')](_0xc176cd['query']);_0x1c5a98[_0xa516('0x32')]=_[_0xa516('0x33')](_0x1c5a98[_0xa516('0x2f')],_0x1c5a98[_0xa516('0x30')]);_0xa95e08[_0xa516('0x34')]=_[_0xa516('0x33')](_0x1c5a98[_0xa516('0x2f')],qs[_0xa516('0x35')](_0xc176cd['query'][_0xa516('0x35')]));_0xa95e08[_0xa516('0x34')]=_0xa95e08[_0xa516('0x34')][_0xa516('0x36')]?_0xa95e08[_0xa516('0x34')]:_0x1c5a98[_0xa516('0x2f')];if(!_0xc176cd[_0xa516('0x30')][_0xa516('0x37')](_0xa516('0x38'))){_0xa95e08[_0xa516('0x1d')]=qs[_0xa516('0x1d')](_0xc176cd[_0xa516('0x30')][_0xa516('0x1d')]);_0xa95e08[_0xa516('0x1b')]=qs['offset'](_0xc176cd[_0xa516('0x30')][_0xa516('0x1b')]);}_0xa95e08[_0xa516('0x39')]=qs[_0xa516('0x3a')](_0xc176cd[_0xa516('0x30')][_0xa516('0x3a')]);_0xa95e08[_0xa516('0x3b')]=qs[_0xa516('0x32')](_[_0xa516('0x3c')](_0xc176cd['query'],_0x1c5a98[_0xa516('0x32')]),_0x1b9783);if(_0xc176cd[_0xa516('0x30')][_0xa516('0x3d')]){_0xa95e08[_0xa516('0x3b')]=_[_0xa516('0x3e')](_0xa95e08[_0xa516('0x3b')],{'$or':_[_0xa516('0x2a')](_0x1b9783,function(_0x1f3a4b){if(_0x1f3a4b[_0xa516('0x2e')]!==_0xa516('0x3f')){var _0x332501={};_0x332501[_0x1f3a4b[_0xa516('0x27')]]={'$like':'%'+_0xc176cd[_0xa516('0x30')][_0xa516('0x3d')]+'%'};return _0x332501;}})});}_0xa95e08=_['merge']({},_0xa95e08,_0xc176cd[_0xa516('0x40')]);var _0x3fd9ca={'where':_0xa95e08[_0xa516('0x3b')]};return db[_0xa516('0x2b')][_0xa516('0x1e')](_0x3fd9ca)[_0xa516('0x25')](function(_0x154834){_0x32d10b['count']=_0x154834;if(_0xc176cd[_0xa516('0x30')][_0xa516('0x41')]){_0xa95e08['include']=[{'all':!![]}];}return db[_0xa516('0x2b')][_0xa516('0x42')](_0xa95e08);})[_0xa516('0x25')](function(_0x1f3803){_0x32d10b[_0xa516('0x43')]=_0x1f3803;return _0x32d10b;})['then'](respondWithFilteredResult(_0x1823e7,_0xa95e08))[_0xa516('0x44')](handleError(_0x1823e7,null));};exports[_0xa516('0x45')]=function(_0x1b1e38,_0x3956c9){var _0x449763={'raw':!![],'where':{'id':_0x1b1e38[_0xa516('0x46')]['id']}},_0x136d42={};_0x136d42[_0xa516('0x2f')]=_['keys'](db['CmHopperBlack']['rawAttributes']);_0x136d42[_0xa516('0x30')]=_[_0xa516('0x31')](_0x1b1e38[_0xa516('0x30')]);_0x136d42[_0xa516('0x32')]=_[_0xa516('0x33')](_0x136d42[_0xa516('0x2f')],_0x136d42[_0xa516('0x30')]);_0x449763[_0xa516('0x34')]=_[_0xa516('0x33')](_0x136d42[_0xa516('0x2f')],qs[_0xa516('0x35')](_0x1b1e38[_0xa516('0x30')][_0xa516('0x35')]));_0x449763[_0xa516('0x34')]=_0x449763[_0xa516('0x34')][_0xa516('0x36')]?_0x449763[_0xa516('0x34')]:_0x136d42['model'];if(_0x1b1e38['query'][_0xa516('0x41')]){_0x449763['include']=[{'all':!![]}];}_0x449763=_['merge']({},_0x449763,_0x1b1e38[_0xa516('0x40')]);return db[_0xa516('0x2b')]['find'](_0x449763)[_0xa516('0x25')](handleEntityNotFound(_0x3956c9,null))[_0xa516('0x25')](respondWithResult(_0x3956c9,null))['catch'](handleError(_0x3956c9,null));};exports[_0xa516('0x24')]=function(_0x49ae1a,_0x3a9c45){if(_0x49ae1a[_0xa516('0x47')]['id']){delete _0x49ae1a[_0xa516('0x47')]['id'];}return db[_0xa516('0x2b')][_0xa516('0x48')]({'where':{'id':_0x49ae1a['params']['id']}})[_0xa516('0x25')](handleEntityNotFound(_0x3a9c45,null))['then'](saveUpdates(_0x49ae1a[_0xa516('0x47')],null))['then'](respondWithResult(_0x3a9c45,null))['catch'](handleError(_0x3a9c45,null));};exports[_0xa516('0x49')]=function(_0x4da65d,_0x1b0a34){return db[_0xa516('0x2b')][_0xa516('0x48')]({'where':{'id':_0x4da65d['params']['id']}})[_0xa516('0x25')](handleEntityNotFound(_0x1b0a34,null))['then'](removeEntity(_0x1b0a34,null))[_0xa516('0x44')](handleError(_0x1b0a34,null));};exports['describe']=function(_0x1016fe,_0x337ee9){return db[_0xa516('0x2b')][_0xa516('0x4a')]()[_0xa516('0x25')](respondWithResult(_0x337ee9,null))[_0xa516('0x44')](handleError(_0x337ee9,null));};
\ No newline at end of file
index ff2518e..7a3d4e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4878=['request-promise','path','./cmHopperBlack.attributes','exports','cm_hopper_black','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5d78ee,_0x2c06c7){var _0x3ceffa=function(_0x4d0b49){while(--_0x4d0b49){_0x5d78ee['push'](_0x5d78ee['shift']());}};_0x3ceffa(++_0x2c06c7);}(_0x4878,0x186));var _0x8487=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4878[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x8487('0x0'));var util=require(_0x8487('0x1'));var logger=require(_0x8487('0x2'))(_0x8487('0x3'));var moment=require(_0x8487('0x4'));var BPromise=require(_0x8487('0x5'));var rp=require(_0x8487('0x6'));var fs=require('fs');var path=require(_0x8487('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8487('0x8'));module[_0x8487('0x9')]=function(_0x5ca06e,_0x4da6d2){return _0x5ca06e['define']('CmHopperBlack',attributes,{'tableName':_0x8487('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x716f=['CmHopperBlack','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./cmHopperBlack.attributes','define'];(function(_0x32729c,_0xf5afd8){var _0x482cfd=function(_0x231471){while(--_0x231471){_0x32729c['push'](_0x32729c['shift']());}};_0x482cfd(++_0xf5afd8);}(_0x716f,0xe8));var _0xf716=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x716f[_0x2b9b7f];return _0x4ed19a;};'use strict';var _=require(_0xf716('0x0'));var util=require(_0xf716('0x1'));var logger=require('../../config/logger')(_0xf716('0x2'));var moment=require(_0xf716('0x3'));var BPromise=require(_0xf716('0x4'));var rp=require(_0xf716('0x5'));var fs=require('fs');var path=require(_0xf716('0x6'));var rimraf=require(_0xf716('0x7'));var config=require('../../config/environment');var attributes=require(_0xf716('0x8'));module['exports']=function(_0x2aeddd,_0x534689){return _0x2aeddd[_0xf716('0x9')](_0xf716('0xa'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a868b2b..b2b3243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10b8=['include','map','attributes','debug','UpdateCmHopperBlack','update','body','stringify','DestroyCmHopperBlack','lodash','moment','../../config/utils','../../config/logger','../../config/environment','http','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','error','code','message','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','limit'];(function(_0x3affc8,_0x48ed83){var _0x28d090=function(_0x1a32e6){while(--_0x1a32e6){_0x3affc8['push'](_0x3affc8['shift']());}};_0x28d090(++_0x48ed83);}(_0x10b8,0x1cb));var _0x810b=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x10b8[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0x810b('0x0'));var util=require('util');var moment=require(_0x810b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x810b('0x2'));var logger=require(_0x810b('0x3'))('rpc');var config=require(_0x810b('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0x810b('0x5')]({'port':0x232a});function respondWithRpcPromise(_0xc2f57,_0x2cffba,_0x521883){return new BPromise(function(_0x383298,_0x4cc40b){return client['request'](_0xc2f57,_0x521883)[_0x810b('0x6')](function(_0x23def9){logger[_0x810b('0x7')](_0x810b('0x8'),_0x2cffba,_0x810b('0x9'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x2cffba,_0x810b('0x9'),JSON['stringify'](_0x23def9));if(_0x23def9[_0x810b('0xa')]){if(_0x23def9['error'][_0x810b('0xb')]===0x1f4){logger[_0x810b('0xa')](_0x810b('0x8'),_0x2cffba,_0x23def9[_0x810b('0xa')][_0x810b('0xc')]);return _0x4cc40b(_0x23def9[_0x810b('0xa')][_0x810b('0xc')]);}logger[_0x810b('0xa')](_0x810b('0x8'),_0x2cffba,_0x23def9[_0x810b('0xa')][_0x810b('0xc')]);return _0x383298(_0x23def9[_0x810b('0xa')][_0x810b('0xc')]);}else{logger[_0x810b('0x7')](_0x810b('0x8'),_0x2cffba,_0x810b('0x9'));_0x383298(_0x23def9['result'][_0x810b('0xc')]);}})[_0x810b('0xd')](function(_0x75be1a){logger[_0x810b('0xa')](_0x810b('0x8'),_0x2cffba,_0x75be1a);_0x4cc40b(_0x75be1a);});});}exports[_0x810b('0xe')]=function(_0x22a2a8){var _0x330e5b=this;return new Promise(function(_0x48c9e4,_0x2ceedc){return db[_0x810b('0xf')][_0x810b('0x10')]({'raw':_0x22a2a8[_0x810b('0x11')]?_0x22a2a8[_0x810b('0x11')][_0x810b('0x12')]===undefined?!![]:![]:!![],'where':_0x22a2a8[_0x810b('0x11')]?_0x22a2a8[_0x810b('0x11')][_0x810b('0x13')]||null:null,'attributes':_0x22a2a8['options']?_0x22a2a8['options']['attributes']||null:null,'limit':_0x22a2a8[_0x810b('0x11')]?_0x22a2a8['options'][_0x810b('0x14')]||null:null,'include':_0x22a2a8['options']?_0x22a2a8[_0x810b('0x11')][_0x810b('0x15')]?_['map'](_0x22a2a8[_0x810b('0x11')][_0x810b('0x15')],function(_0x3da226){return{'model':db[_0x3da226['model']],'as':_0x3da226['as'],'attributes':_0x3da226['attributes'],'include':_0x3da226[_0x810b('0x15')]?_[_0x810b('0x16')](_0x3da226[_0x810b('0x15')],function(_0x287de5){return{'model':db[_0x287de5['model']],'as':_0x287de5['as'],'attributes':_0x287de5[_0x810b('0x17')],'include':_0x287de5['include']?_[_0x810b('0x16')](_0x287de5[_0x810b('0x15')],function(_0x8756ec){return{'model':db[_0x8756ec['model']],'as':_0x8756ec['as'],'attributes':_0x8756ec['attributes']};}):[]};}):[]};}):[]:[]})[_0x810b('0x6')](function(_0x1d5cbb){logger[_0x810b('0x7')](_0x810b('0xe'),_0x22a2a8);logger[_0x810b('0x18')](_0x810b('0xe'),_0x22a2a8,JSON['stringify'](_0x1d5cbb));_0x48c9e4(_0x1d5cbb);})[_0x810b('0xd')](function(_0x2baa63){logger[_0x810b('0xa')](_0x810b('0xe'),_0x2baa63[_0x810b('0xc')],_0x22a2a8);_0x2ceedc(_0x330e5b[_0x810b('0xa')](0x1f4,_0x2baa63[_0x810b('0xc')]));});});};exports[_0x810b('0x19')]=function(_0x5a5a9b){var _0x38f96f=this;return new Promise(function(_0x52da82,_0x118327){return db[_0x810b('0xf')][_0x810b('0x1a')](_0x5a5a9b[_0x810b('0x1b')],{'raw':_0x5a5a9b[_0x810b('0x11')]?_0x5a5a9b[_0x810b('0x11')][_0x810b('0x12')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a5a9b[_0x810b('0x11')]?_0x5a5a9b['options'][_0x810b('0x13')]||null:null,'attributes':_0x5a5a9b[_0x810b('0x11')]?_0x5a5a9b[_0x810b('0x11')][_0x810b('0x17')]||null:null,'limit':_0x5a5a9b[_0x810b('0x11')]?_0x5a5a9b[_0x810b('0x11')][_0x810b('0x14')]||null:null})[_0x810b('0x6')](function(_0x4c4517){logger[_0x810b('0x7')]('UpdateCmHopperBlack',_0x5a5a9b);logger['debug'](_0x810b('0x19'),_0x5a5a9b,JSON[_0x810b('0x1c')](_0x4c4517));_0x52da82(_0x4c4517);})[_0x810b('0xd')](function(_0x39037b){logger[_0x810b('0xa')](_0x810b('0x19'),_0x39037b[_0x810b('0xc')],_0x5a5a9b);_0x118327(_0x38f96f['error'](0x1f4,_0x39037b[_0x810b('0xc')]));});});};exports[_0x810b('0x1d')]=function(_0x5ac9cc){var _0x1fc08a=this;return new Promise(function(_0x430787,_0x2bbf54){return db[_0x810b('0xf')]['destroy']({'where':_0x5ac9cc[_0x810b('0x11')]?_0x5ac9cc['options'][_0x810b('0x13')]||null:null})['then'](function(_0x3592b2){logger[_0x810b('0x7')](_0x810b('0x1d'),_0x5ac9cc);logger[_0x810b('0x18')](_0x810b('0x1d'),_0x5ac9cc,JSON[_0x810b('0x1c')](_0x3592b2));_0x430787(_0x3592b2);})['catch'](function(_0x3b05ed){logger[_0x810b('0xa')](_0x810b('0x1d'),_0x3b05ed[_0x810b('0xc')],_0x5ac9cc);_0x2bbf54(_0x1fc08a['error'](0x1f4,_0x3b05ed[_0x810b('0xc')]));});});};
\ No newline at end of file
+var _0x34a1=['limit','map','model','include','then','UpdateCmHopperBlack','update','body','destroy','DestroyCmHopperBlack','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','CmHopperBlack,\x20%s,\x20%s','info','result','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes'];(function(_0x4728a9,_0x56027a){var _0x272dbb=function(_0x301d0c){while(--_0x301d0c){_0x4728a9['push'](_0x4728a9['shift']());}};_0x272dbb(++_0x56027a);}(_0x34a1,0x1de));var _0x134a=function(_0x24278d,_0x364b89){_0x24278d=_0x24278d-0x0;var _0x434e7c=_0x34a1[_0x24278d];return _0x434e7c;};'use strict';var _=require('lodash');var util=require(_0x134a('0x0'));var moment=require('moment');var BPromise=require(_0x134a('0x1'));var rs=require(_0x134a('0x2'));var fs=require('fs');var Redis=require(_0x134a('0x3'));var db=require(_0x134a('0x4'))['db'];var utils=require(_0x134a('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x134a('0x6'));var jayson=require(_0x134a('0x7'));var client=jayson[_0x134a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34fd13,_0x46f43b,_0x1e7dc7){return new BPromise(function(_0x3db6a0,_0x2135ed){return client['request'](_0x34fd13,_0x1e7dc7)['then'](function(_0xb08ca){logger['info']('CmHopperBlack,\x20%s,\x20%s',_0x46f43b,_0x134a('0x9'));logger[_0x134a('0xa')](_0x134a('0xb'),_0x46f43b,'request\x20sent',JSON[_0x134a('0xc')](_0xb08ca));if(_0xb08ca['error']){if(_0xb08ca['error']['code']===0x1f4){logger[_0x134a('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x46f43b,_0xb08ca[_0x134a('0xd')][_0x134a('0xe')]);return _0x2135ed(_0xb08ca['error'][_0x134a('0xe')]);}logger[_0x134a('0xd')](_0x134a('0xf'),_0x46f43b,_0xb08ca[_0x134a('0xd')]['message']);return _0x3db6a0(_0xb08ca[_0x134a('0xd')][_0x134a('0xe')]);}else{logger[_0x134a('0x10')](_0x134a('0xf'),_0x46f43b,_0x134a('0x9'));_0x3db6a0(_0xb08ca[_0x134a('0x11')]['message']);}})[_0x134a('0x12')](function(_0x2419c6){logger[_0x134a('0xd')](_0x134a('0xf'),_0x46f43b,_0x2419c6);_0x2135ed(_0x2419c6);});});}exports[_0x134a('0x13')]=function(_0xe9e14c){var _0x373d60=this;return new Promise(function(_0x848d1c,_0x5e98c8){return db[_0x134a('0x14')][_0x134a('0x15')]({'raw':_0xe9e14c[_0x134a('0x16')]?_0xe9e14c[_0x134a('0x16')][_0x134a('0x17')]===undefined?!![]:![]:!![],'where':_0xe9e14c[_0x134a('0x16')]?_0xe9e14c[_0x134a('0x16')][_0x134a('0x18')]||null:null,'attributes':_0xe9e14c[_0x134a('0x16')]?_0xe9e14c[_0x134a('0x16')][_0x134a('0x19')]||null:null,'limit':_0xe9e14c[_0x134a('0x16')]?_0xe9e14c[_0x134a('0x16')][_0x134a('0x1a')]||null:null,'include':_0xe9e14c[_0x134a('0x16')]?_0xe9e14c[_0x134a('0x16')]['include']?_[_0x134a('0x1b')](_0xe9e14c[_0x134a('0x16')]['include'],function(_0x263f2b){return{'model':db[_0x263f2b[_0x134a('0x1c')]],'as':_0x263f2b['as'],'attributes':_0x263f2b[_0x134a('0x19')],'include':_0x263f2b[_0x134a('0x1d')]?_[_0x134a('0x1b')](_0x263f2b['include'],function(_0xc02a39){return{'model':db[_0xc02a39[_0x134a('0x1c')]],'as':_0xc02a39['as'],'attributes':_0xc02a39[_0x134a('0x19')],'include':_0xc02a39[_0x134a('0x1d')]?_[_0x134a('0x1b')](_0xc02a39['include'],function(_0x5cab23){return{'model':db[_0x5cab23[_0x134a('0x1c')]],'as':_0x5cab23['as'],'attributes':_0x5cab23[_0x134a('0x19')]};}):[]};}):[]};}):[]:[]})[_0x134a('0x1e')](function(_0x3a941f){logger[_0x134a('0x10')](_0x134a('0x13'),_0xe9e14c);logger[_0x134a('0xa')]('GetCmHopperBlack',_0xe9e14c,JSON[_0x134a('0xc')](_0x3a941f));_0x848d1c(_0x3a941f);})[_0x134a('0x12')](function(_0x21b7c0){logger['error'](_0x134a('0x13'),_0x21b7c0['message'],_0xe9e14c);_0x5e98c8(_0x373d60[_0x134a('0xd')](0x1f4,_0x21b7c0[_0x134a('0xe')]));});});};exports[_0x134a('0x1f')]=function(_0x5711d5){var _0x56f2f5=this;return new Promise(function(_0x1fee4f,_0x79cb7d){return db['CmHopperBlack'][_0x134a('0x20')](_0x5711d5[_0x134a('0x21')],{'raw':_0x5711d5[_0x134a('0x16')]?_0x5711d5[_0x134a('0x16')][_0x134a('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5711d5[_0x134a('0x16')]?_0x5711d5[_0x134a('0x16')][_0x134a('0x18')]||null:null,'attributes':_0x5711d5[_0x134a('0x16')]?_0x5711d5['options'][_0x134a('0x19')]||null:null,'limit':_0x5711d5[_0x134a('0x16')]?_0x5711d5[_0x134a('0x16')]['limit']||null:null})['then'](function(_0x219554){logger[_0x134a('0x10')]('UpdateCmHopperBlack',_0x5711d5);logger['debug']('UpdateCmHopperBlack',_0x5711d5,JSON[_0x134a('0xc')](_0x219554));_0x1fee4f(_0x219554);})[_0x134a('0x12')](function(_0x508e05){logger[_0x134a('0xd')](_0x134a('0x1f'),_0x508e05['message'],_0x5711d5);_0x79cb7d(_0x56f2f5['error'](0x1f4,_0x508e05[_0x134a('0xe')]));});});};exports['DestroyCmHopperBlack']=function(_0x5a1b4e){var _0x1af03c=this;return new Promise(function(_0x26bb29,_0x5eeca4){return db[_0x134a('0x14')][_0x134a('0x22')]({'where':_0x5a1b4e[_0x134a('0x16')]?_0x5a1b4e[_0x134a('0x16')][_0x134a('0x18')]||null:null})[_0x134a('0x1e')](function(_0x3df6c5){logger['info'](_0x134a('0x23'),_0x5a1b4e);logger[_0x134a('0xa')]('DestroyCmHopperBlack',_0x5a1b4e,JSON[_0x134a('0xc')](_0x3df6c5));_0x26bb29(_0x3df6c5);})[_0x134a('0x12')](function(_0x2edf6a){logger[_0x134a('0xd')](_0x134a('0x23'),_0x2edf6a[_0x134a('0xe')],_0x5a1b4e);_0x5eeca4(_0x1af03c['error'](0x1f4,_0x2edf6a[_0x134a('0xe')]));});});};
\ No newline at end of file
index 8ddbba9..e8a6428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['isAuthenticated','index','/describe','describe','/:id','show','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','./cmHopperBlack.controller','get'];(function(_0xe406bc,_0x45e9af){var _0x56cbd4=function(_0x29f11a){while(--_0x29f11a){_0xe406bc['push'](_0xe406bc['shift']());}};_0x56cbd4(++_0x45e9af);}(_0x27a0,0xbf));var _0x027a=function(_0x17088d,_0x1c28ad){_0x17088d=_0x17088d-0x0;var _0x3f8158=_0x27a0[_0x17088d];return _0x3f8158;};'use strict';var multer=require('multer');var util=require(_0x027a('0x0'));var path=require(_0x027a('0x1'));var timeout=require(_0x027a('0x2'));var express=require(_0x027a('0x3'));var router=express[_0x027a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x027a('0x5'));router[_0x027a('0x6')]('/',auth[_0x027a('0x7')](),controller[_0x027a('0x8')]);router[_0x027a('0x6')](_0x027a('0x9'),auth['isAuthenticated'](),controller[_0x027a('0xa')]);router[_0x027a('0x6')](_0x027a('0xb'),auth['isAuthenticated'](),controller[_0x027a('0xc')]);router[_0x027a('0xd')](_0x027a('0xb'),auth['isAuthenticated'](),controller[_0x027a('0xe')]);router[_0x027a('0xf')](_0x027a('0xb'),auth[_0x027a('0x7')](),controller[_0x027a('0x10')]);module[_0x027a('0x11')]=router;
\ No newline at end of file
+var _0x2a07=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','/describe','describe','/:id','show','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x568a58,_0x286968){var _0x18a644=function(_0x45e781){while(--_0x45e781){_0x568a58['push'](_0x568a58['shift']());}};_0x18a644(++_0x286968);}(_0x2a07,0x74));var _0x72a0=function(_0x3af7b7,_0x208014){_0x3af7b7=_0x3af7b7-0x0;var _0x8408b5=_0x2a07[_0x3af7b7];return _0x8408b5;};'use strict';var multer=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var path=require(_0x72a0('0x2'));var timeout=require(_0x72a0('0x3'));var express=require(_0x72a0('0x4'));var router=express['Router']();var fs_extra=require(_0x72a0('0x5'));var auth=require(_0x72a0('0x6'));var interaction=require(_0x72a0('0x7'));var config=require(_0x72a0('0x8'));var controller=require(_0x72a0('0x9'));router[_0x72a0('0xa')]('/',auth[_0x72a0('0xb')](),controller[_0x72a0('0xc')]);router[_0x72a0('0xa')](_0x72a0('0xd'),auth[_0x72a0('0xb')](),controller[_0x72a0('0xe')]);router[_0x72a0('0xa')](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x10')]);router['put'](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller['update']);router[_0x72a0('0x11')](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x12')]);module[_0x72a0('0x13')]=router;
\ No newline at end of file
index df29a8a..82ffe93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5caa=['followuptime','diff','seconds','setDataValue','dispositionat','BOOLEAN','moment','exports','INTEGER','STRING','DATE','getDataValue','endtime'];(function(_0x5c6900,_0x53a947){var _0x3d0d4a=function(_0x390e4b){while(--_0x390e4b){_0x5c6900['push'](_0x5c6900['shift']());}};_0x3d0d4a(++_0x53a947);}(_0x5caa,0x95));var _0xa5ca=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x5caa[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xa5ca('0x0'));module[_0xa5ca('0x1')]={'state':{'type':Sequelize[_0xa5ca('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xa5ca('0x3')]},'scheduledat':{'type':Sequelize[_0xa5ca('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa5ca('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xa5ca('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xa5ca('0x3')]},'originatecalleridname':{'type':Sequelize[_0xa5ca('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xa5ca('0x3')]},'starttime':{'type':Sequelize[_0xa5ca('0x4')]},'responsetime':{'type':Sequelize[_0xa5ca('0x4')]},'answertime':{'type':Sequelize[_0xa5ca('0x4')]},'droptime':{'type':Sequelize[_0xa5ca('0x4')]},'endtime':{'type':Sequelize[_0xa5ca('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xa5ca('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xa5ca('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xa5ca('0x3')]},'campaign':{'type':Sequelize[_0xa5ca('0x3')]},'campaigntype':{'type':Sequelize[_0xa5ca('0x3')]},'membername':{'type':Sequelize[_0xa5ca('0x3')]},'reason':{'type':Sequelize[_0xa5ca('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0xa5ca('0x4')],'set':function(_0x195375){var _0xda79b4=this[_0xa5ca('0x5')](_0xa5ca('0x6'));if(_0xda79b4&&_0x195375){this['setDataValue'](_0xa5ca('0x7'),moment(_0x195375)[_0xa5ca('0x8')](moment(_0xda79b4),_0xa5ca('0x9')));}return this[_0xa5ca('0xa')](_0xa5ca('0xb'),_0x195375);}},'amd':{'type':Sequelize[_0xa5ca('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0xa5ca('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xa5ca('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xa5ca('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa5ca('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa5ca('0x4')]},'deleted':{'type':Sequelize[_0xa5ca('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xa5ca('0x4')]},'recallme':{'type':Sequelize[_0xa5ca('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xa5ca('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa5ca('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0897=['setDataValue','seconds','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue'];(function(_0xafee2b,_0x22e0ce){var _0x44ad48=function(_0x190bdf){while(--_0x190bdf){_0xafee2b['push'](_0xafee2b['shift']());}};_0x44ad48(++_0x22e0ce);}(_0x0897,0x138));var _0x7089=function(_0x14e80e,_0x354eac){_0x14e80e=_0x14e80e-0x0;var _0x1b0c73=_0x0897[_0x14e80e];return _0x1b0c73;};'use strict';var Sequelize=require(_0x7089('0x0'));var moment=require(_0x7089('0x1'));module[_0x7089('0x2')]={'state':{'type':Sequelize[_0x7089('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x7089('0x4')]},'scheduledat':{'type':Sequelize[_0x7089('0x5')]},'countbusyretry':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x7089('0x4')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x7089('0x4')]},'calleridnum':{'type':Sequelize[_0x7089('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x7089('0x5')]},'responsetime':{'type':Sequelize[_0x7089('0x5')]},'answertime':{'type':Sequelize[_0x7089('0x5')]},'droptime':{'type':Sequelize[_0x7089('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x7089('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x7089('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x7089('0x4')]},'secondDisposition':{'type':Sequelize[_0x7089('0x4')]},'thirdDisposition':{'type':Sequelize[_0x7089('0x4')]},'dispositionat':{'type':Sequelize[_0x7089('0x5')],'set':function(_0x2ca524){var _0xa47021=this[_0x7089('0x6')]('endtime');if(_0xa47021&&_0x2ca524){this[_0x7089('0x7')]('followuptime',moment(_0x2ca524)['diff'](moment(_0xa47021),_0x7089('0x8')));}return this[_0x7089('0x7')](_0x7089('0x9'),_0x2ca524);}},'amd':{'type':Sequelize[_0x7089('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0x7089('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x7089('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x7089('0x5')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7089('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7089('0x5')]},'deleted':{'type':Sequelize[_0x7089('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x7089('0x5')]},'recallme':{'type':Sequelize[_0x7089('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x7089('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x7089('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 556832e..8b98b0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','name','send','index','map','CmHopperFinal','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','catch','uniqueid','body','countContactsQueueCampaignHopperFinal','sequelize','COUNT','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','literal','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','abandonedContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','phone','scheduledAt','ContactId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ListId','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','moveContactsIvrCampaignHopperFinal','Campaign','cm_hopper','fromQuery','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state\x20=\x204','group','checkContactHopper','CmHopper','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4137,0xf8));var _0x7413=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4137[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x7413('0x0'));var rimraf=require(_0x7413('0x1'));var zipdir=require(_0x7413('0x2'));var jsonpatch=require(_0x7413('0x3'));var rp=require(_0x7413('0x4'));var moment=require(_0x7413('0x5'));var BPromise=require(_0x7413('0x6'));var Mustache=require(_0x7413('0x7'));var util=require(_0x7413('0x8'));var path=require(_0x7413('0x9'));var sox=require(_0x7413('0xa'));var csv=require(_0x7413('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7413('0xc'));var _=require(_0x7413('0xd'));var squel=require(_0x7413('0xe'));var crypto=require(_0x7413('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x7413('0x10'));var toCsv=require(_0x7413('0xb'));var querystring=require('querystring');var Papa=require(_0x7413('0x11'));var Redis=require(_0x7413('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7413('0x13'));var as=require(_0x7413('0x14'));var hardwareService=require(_0x7413('0x15'));var logger=require(_0x7413('0x16'))(_0x7413('0x17'));var utils=require('../../config/utils');var config=require(_0x7413('0x18'));var licenseUtil=require(_0x7413('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18a874,_0xa26ca4){_0xa26ca4=_0xa26ca4||0xcc;return function(_0x13e6bd){if(_0x13e6bd){return _0x18a874['sendStatus'](_0xa26ca4);}return _0x18a874['status'](_0xa26ca4)['end']();};}function respondWithResult(_0x2267f6,_0x336c4c){_0x336c4c=_0x336c4c||0xc8;return function(_0x49f0f6){if(_0x49f0f6){return _0x2267f6[_0x7413('0x1a')](_0x336c4c)[_0x7413('0x1b')](_0x49f0f6);}};}function respondWithFilteredResult(_0x4955d3,_0x38b3d1){return function(_0x50f301){if(_0x50f301){var _0x4b9a5b=typeof _0x38b3d1[_0x7413('0x1c')]==='undefined'&&typeof _0x38b3d1[_0x7413('0x1d')]==='undefined';var _0x2036b6=_0x50f301[_0x7413('0x1e')];var _0x19157f=_0x4b9a5b?0x0:_0x38b3d1[_0x7413('0x1c')];var _0x2a3417=_0x4b9a5b?_0x50f301[_0x7413('0x1e')]:_0x38b3d1['offset']+_0x38b3d1[_0x7413('0x1d')];var _0x17c062;if(_0x2a3417>=_0x2036b6){_0x2a3417=_0x2036b6;_0x17c062=0xc8;}else{_0x17c062=0xce;}_0x4955d3[_0x7413('0x1a')](_0x17c062);return _0x4955d3[_0x7413('0x1f')]('Content-Range',_0x19157f+'-'+_0x2a3417+'/'+_0x2036b6)[_0x7413('0x1b')](_0x50f301);}return null;};}function patchUpdates(_0x12d94d){return function(_0x206afc){try{jsonpatch[_0x7413('0x20')](_0x206afc,_0x12d94d,!![]);}catch(_0x409392){return BPromise[_0x7413('0x21')](_0x409392);}return _0x206afc[_0x7413('0x22')]();};}function saveUpdates(_0x4e18cb,_0x56a06a){return function(_0x5f12a2){if(_0x5f12a2){return _0x5f12a2[_0x7413('0x23')](_0x4e18cb)['then'](function(_0x1585ba){return _0x1585ba;});}return null;};}function removeEntity(_0x372944,_0x3b0c81){return function(_0x2fc0f4){if(_0x2fc0f4){return _0x2fc0f4[_0x7413('0x24')]()[_0x7413('0x25')](function(){_0x372944[_0x7413('0x1a')](0xcc)[_0x7413('0x26')]();});}};}function handleEntityNotFound(_0x1d455b,_0x5a8329){return function(_0x5cb15f){if(!_0x5cb15f){_0x1d455b[_0x7413('0x27')](0x194);}return _0x5cb15f;};}function handleError(_0x48c2dc,_0x46c895){_0x46c895=_0x46c895||0x1f4;return function(_0x71cbb4){logger[_0x7413('0x28')](_0x71cbb4['stack']);if(_0x71cbb4[_0x7413('0x29')]){delete _0x71cbb4[_0x7413('0x29')];}_0x48c2dc[_0x7413('0x1a')](_0x46c895)[_0x7413('0x2a')](_0x71cbb4);};}exports[_0x7413('0x2b')]=function(_0x2e521f,_0x5eb4d9){var _0x24dce7={},_0x4ed662={},_0x1d0bde={'count':0x0,'rows':[]};var _0x23e682=_[_0x7413('0x2c')](db[_0x7413('0x2d')][_0x7413('0x2e')],function(_0x2004ea){return{'name':_0x2004ea['fieldName'],'type':_0x2004ea[_0x7413('0x2f')][_0x7413('0x30')]};});_0x4ed662[_0x7413('0x31')]=_[_0x7413('0x2c')](_0x23e682,_0x7413('0x29'));_0x4ed662[_0x7413('0x32')]=_[_0x7413('0x33')](_0x2e521f['query']);_0x4ed662[_0x7413('0x34')]=_[_0x7413('0x35')](_0x4ed662[_0x7413('0x31')],_0x4ed662[_0x7413('0x32')]);_0x24dce7[_0x7413('0x36')]=_['intersection'](_0x4ed662[_0x7413('0x31')],qs['fields'](_0x2e521f[_0x7413('0x32')][_0x7413('0x37')]));_0x24dce7[_0x7413('0x36')]=_0x24dce7['attributes'][_0x7413('0x38')]?_0x24dce7['attributes']:_0x4ed662[_0x7413('0x31')];if(!_0x2e521f[_0x7413('0x32')]['hasOwnProperty']('nolimit')){_0x24dce7[_0x7413('0x1d')]=qs[_0x7413('0x1d')](_0x2e521f[_0x7413('0x32')]['limit']);_0x24dce7['offset']=qs[_0x7413('0x1c')](_0x2e521f['query']['offset']);}_0x24dce7[_0x7413('0x39')]=qs['sort'](_0x2e521f[_0x7413('0x32')][_0x7413('0x3a')]);_0x24dce7[_0x7413('0x3b')]=qs[_0x7413('0x34')](_[_0x7413('0x3c')](_0x2e521f['query'],_0x4ed662[_0x7413('0x34')]),_0x23e682);if(_0x2e521f[_0x7413('0x32')][_0x7413('0x3d')]){_0x24dce7[_0x7413('0x3b')]=_[_0x7413('0x3e')](_0x24dce7[_0x7413('0x3b')],{'$or':_[_0x7413('0x2c')](_0x23e682,function(_0x385156){if(_0x385156[_0x7413('0x2f')]!==_0x7413('0x3f')){var _0x5c03eb={};_0x5c03eb[_0x385156[_0x7413('0x29')]]={'$like':'%'+_0x2e521f['query'][_0x7413('0x3d')]+'%'};return _0x5c03eb;}})});}_0x24dce7=_['merge']({},_0x24dce7,_0x2e521f['options']);var _0x5b592c={'where':_0x24dce7['where']};return db['CmHopperFinal'][_0x7413('0x1e')](_0x5b592c)['then'](function(_0x535e49){_0x1d0bde[_0x7413('0x1e')]=_0x535e49;if(_0x2e521f['query']['includeAll']){_0x24dce7[_0x7413('0x40')]=[{'all':!![]}];}return db[_0x7413('0x2d')][_0x7413('0x41')](_0x24dce7);})[_0x7413('0x25')](function(_0x8049c0){_0x1d0bde['rows']=_0x8049c0;return _0x1d0bde;})[_0x7413('0x25')](respondWithFilteredResult(_0x5eb4d9,_0x24dce7))['catch'](handleError(_0x5eb4d9,null));};exports[_0x7413('0x42')]=function(_0x1d8219,_0xa063d1){var _0xfe0daa={'raw':!![],'where':{'id':_0x1d8219[_0x7413('0x43')]['id']}},_0x3f7da2={};_0x3f7da2[_0x7413('0x31')]=_[_0x7413('0x33')](db[_0x7413('0x2d')][_0x7413('0x2e')]);_0x3f7da2[_0x7413('0x32')]=_[_0x7413('0x33')](_0x1d8219[_0x7413('0x32')]);_0x3f7da2['filters']=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],_0x3f7da2[_0x7413('0x32')]);_0xfe0daa[_0x7413('0x36')]=_[_0x7413('0x35')](_0x3f7da2[_0x7413('0x31')],qs[_0x7413('0x37')](_0x1d8219[_0x7413('0x32')][_0x7413('0x37')]));_0xfe0daa[_0x7413('0x36')]=_0xfe0daa[_0x7413('0x36')]['length']?_0xfe0daa[_0x7413('0x36')]:_0x3f7da2['model'];if(_0x1d8219[_0x7413('0x32')][_0x7413('0x44')]){_0xfe0daa[_0x7413('0x40')]=[{'all':!![]}];}_0xfe0daa=_[_0x7413('0x3e')]({},_0xfe0daa,_0x1d8219[_0x7413('0x45')]);return db[_0x7413('0x2d')][_0x7413('0x46')](_0xfe0daa)[_0x7413('0x25')](handleEntityNotFound(_0xa063d1,null))[_0x7413('0x25')](respondWithResult(_0xa063d1,null))[_0x7413('0x47')](handleError(_0xa063d1,null));};exports['describe']=function(_0x513657,_0x3c1f1a){return db['CmHopperFinal']['describe']()[_0x7413('0x25')](respondWithResult(_0x3c1f1a,null))[_0x7413('0x47')](handleError(_0x3c1f1a,null));};exports['update']=function(_0x2aa12c,_0x586d25){if(_0x2aa12c['body'][_0x7413('0x48')]){delete _0x2aa12c['body'][_0x7413('0x48')];}return db[_0x7413('0x2d')][_0x7413('0x46')]({'where':{'uniqueid':_0x2aa12c[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x586d25,null))[_0x7413('0x25')](saveUpdates(_0x2aa12c[_0x7413('0x49')],null))[_0x7413('0x25')](respondWithResult(_0x586d25,null))[_0x7413('0x47')](handleError(_0x586d25,null));};exports[_0x7413('0x4a')]=function(_0x50a27d,_0x369891,_0x501407){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'VoiceQueueId':_0x50a27d[_0x7413('0x43')]['id']},'attributes':[[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x7413('0x4d')))),'noSuchContacts'],[db[_0x7413('0x4b')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x203,\x201,\x20null'))),_0x7413('0x4e')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')]['literal'](_0x7413('0x4f')))),_0x7413('0x50')],[db[_0x7413('0x4b')]['fn']('COUNT',db[_0x7413('0x4b')]['fn']('IF',db['sequelize']['literal'](_0x7413('0x51')))),_0x7413('0x52')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')]['literal'](_0x7413('0x53')))),'dropContacts'],[db[_0x7413('0x4b')]['fn']('COUNT',db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x55')))),'abandonedContacts'],[db[_0x7413('0x4b')]['fn']('COUNT',db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')]['literal'](_0x7413('0x56')))),_0x7413('0x57')],[db['sequelize']['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x58')))),_0x7413('0x59')]]})[_0x7413('0x25')](handleEntityNotFound(_0x369891,null))[_0x7413('0x25')](respondWithResult(_0x369891,null))[_0x7413('0x47')](handleError(_0x369891,null));};exports[_0x7413('0x5a')]=function(_0x28130e,_0x593571,_0x35f7e8){return db['CmHopperFinal'][_0x7413('0x41')]({'raw':![],'where':{'CampaignId':_0x28130e[_0x7413('0x43')]['id']},'attributes':[[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x5b')))),_0x7413('0x4e')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x4f')))),_0x7413('0x50')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db['sequelize'][_0x7413('0x54')](_0x7413('0x51')))),'congestionContacts'],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x53')))),'dropContacts'],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db['sequelize']['fn']('IF',db[_0x7413('0x4b')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x7413('0x5c')],[db[_0x7413('0x4b')]['fn'](_0x7413('0x4c'),db[_0x7413('0x4b')]['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x56')))),_0x7413('0x57')],[db['sequelize']['fn'](_0x7413('0x4c'),db['sequelize']['fn']('IF',db[_0x7413('0x4b')][_0x7413('0x54')](_0x7413('0x58')))),_0x7413('0x59')]]})[_0x7413('0x25')](handleEntityNotFound(_0x593571,null))[_0x7413('0x25')](respondWithResult(_0x593571,null))[_0x7413('0x47')](handleError(_0x593571,null));};exports[_0x7413('0x5d')]=function(_0x2c504e,_0x50910a,_0x5988bd){return db[_0x7413('0x5e')]['find']({'where':{'id':_0x2c504e[_0x7413('0x43')]['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x50910a,null))['then'](function(_0x2be9b1){var _0x4b676a;if(_0x2be9b1){_0x4b676a=squel[_0x7413('0x5f')]()[_0x7413('0x60')]('cm_hopper')['fromQuery']([_0x7413('0x61'),_0x7413('0x62'),_0x7413('0x63'),'ListId',_0x7413('0x64'),_0x7413('0x65'),_0x7413('0x66')],squel[_0x7413('0x67')]()[_0x7413('0x68')](_0x7413('0x69'),'phone')[_0x7413('0x68')](_0x7413('0x6a'),_0x7413('0x62'))['field'](_0x7413('0x6b'),_0x7413('0x63'))[_0x7413('0x68')](_0x7413('0x6c'),_0x7413('0x6d'))[_0x7413('0x68')](_0x7413('0x6e'),_0x7413('0x64'))[_0x7413('0x68')]('NOW()',_0x7413('0x65'))[_0x7413('0x68')](_0x7413('0x6a'),_0x7413('0x66'))[_0x7413('0x6f')](_0x7413('0x70'))['where'](_0x7413('0x71'),_0x2c504e['params']['id']['toString']())[_0x7413('0x3b')](_0x7413('0x72'),_0x2c504e['body'][_0x7413('0x73')][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x75'))[_0x7413('0x3b')](_0x7413('0x76'),squel[_0x7413('0x67')]()[_0x7413('0x68')]('phone')[_0x7413('0x6f')]('cm_hopper')[_0x7413('0x3b')](_0x7413('0x71'),_0x2c504e['params']['id'][_0x7413('0x74')]()))[_0x7413('0x3b')](_0x7413('0x76'),squel[_0x7413('0x67')]()[_0x7413('0x68')](_0x7413('0x77'))[_0x7413('0x6f')](_0x7413('0x70'))[_0x7413('0x3b')](_0x7413('0x71'),_0x2c504e['params']['id'][_0x7413('0x74')]())[_0x7413('0x3b')]('state\x20=\x204'))['group']('ContactId'))[_0x7413('0x74')]();return db['sequelize'][_0x7413('0x32')](_0x4b676a);}return[];})[_0x7413('0x25')](respondWithResult(_0x50910a,null))[_0x7413('0x47')](handleError(_0x50910a,null));};exports[_0x7413('0x78')]=function(_0x470c21,_0x17c115,_0xbba3c7){return db[_0x7413('0x79')][_0x7413('0x46')]({'where':{'id':_0x470c21['params']['id']}})[_0x7413('0x25')](handleEntityNotFound(_0x17c115,null))[_0x7413('0x25')](function(_0x38bb4e){var _0x4ea60e;if(_0x38bb4e){_0x4ea60e=squel[_0x7413('0x5f')]()[_0x7413('0x60')](_0x7413('0x7a'))[_0x7413('0x7b')]([_0x7413('0x61'),_0x7413('0x62'),_0x7413('0x63'),_0x7413('0x6d'),_0x7413('0x7c'),_0x7413('0x65'),'updatedAt'],squel[_0x7413('0x67')]()[_0x7413('0x68')]('ANY_VALUE(calleridnum)',_0x7413('0x61'))[_0x7413('0x68')]('NOW()',_0x7413('0x62'))[_0x7413('0x68')](_0x7413('0x6b'),'ContactId')[_0x7413('0x68')]('ANY_VALUE(ListId)',_0x7413('0x6d'))[_0x7413('0x68')](_0x7413('0x7d'),_0x7413('0x7c'))[_0x7413('0x68')](_0x7413('0x6a'),'createdAt')[_0x7413('0x68')](_0x7413('0x6a'),_0x7413('0x66'))[_0x7413('0x6f')](_0x7413('0x70'))['where'](_0x7413('0x7e'),_0x470c21[_0x7413('0x43')]['id'][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x72'),_0x470c21['body']['state'][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x75'))[_0x7413('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x7413('0x68')](_0x7413('0x61'))[_0x7413('0x6f')]('cm_hopper')['where'](_0x7413('0x7e'),_0x470c21[_0x7413('0x43')]['id'][_0x7413('0x74')]()))[_0x7413('0x3b')](_0x7413('0x76'),squel[_0x7413('0x67')]()[_0x7413('0x68')]('calleridnum')['from'](_0x7413('0x70'))[_0x7413('0x3b')]('CampaignId\x20=\x20?',_0x470c21[_0x7413('0x43')]['id'][_0x7413('0x74')]())[_0x7413('0x3b')](_0x7413('0x7f')))[_0x7413('0x80')](_0x7413('0x63')))[_0x7413('0x74')]();return db[_0x7413('0x4b')][_0x7413('0x32')](_0x4ea60e);}return[];})['then'](respondWithResult(_0x17c115,null))[_0x7413('0x47')](handleError(_0x17c115,null));};exports[_0x7413('0x81')]=function(_0x59d665,_0x1f3e26,_0xccd480){return db[_0x7413('0x82')]['findOne']({'where':{'VoiceQueueId':_0x59d665['body']['VoiceQueueId'],'CampaignId':_0x59d665[_0x7413('0x49')][_0x7413('0x7c')],'ContactId':_0x59d665[_0x7413('0x49')][_0x7413('0x63')]}})[_0x7413('0x25')](handleEntityNotFound(_0x1f3e26,null))[_0x7413('0x25')](function(_0x207293){if(_0x207293){return _0x207293;}return null;})[_0x7413('0x25')](respondWithResult(_0x1f3e26,null))['catch'](handleError(_0x1f3e26,null));};
\ No newline at end of file
+var _0x01d9=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','catch','show','params','includeAll','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','answeringMachine','noAnswerContacts','dropContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','into','cm_hopper','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','select','field','ANY_VALUE(calleridnum)','phone','NOW()','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','fromQuery','CampaignId','updatedAt','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment'];(function(_0x547d87,_0x566555){var _0x288fdf=function(_0x58b6fc){while(--_0x58b6fc){_0x547d87['push'](_0x547d87['shift']());}};_0x288fdf(++_0x566555);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x901d('0x0'));var rimraf=require(_0x901d('0x1'));var zipdir=require(_0x901d('0x2'));var jsonpatch=require(_0x901d('0x3'));var rp=require('request-promise');var moment=require(_0x901d('0x4'));var BPromise=require(_0x901d('0x5'));var Mustache=require(_0x901d('0x6'));var util=require(_0x901d('0x7'));var path=require(_0x901d('0x8'));var sox=require(_0x901d('0x9'));var csv=require(_0x901d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x901d('0xb'));var _=require(_0x901d('0xc'));var squel=require(_0x901d('0xd'));var crypto=require(_0x901d('0xe'));var jsforce=require(_0x901d('0xf'));var deskjs=require(_0x901d('0x10'));var toCsv=require(_0x901d('0xa'));var querystring=require(_0x901d('0x11'));var Papa=require(_0x901d('0x12'));var Redis=require(_0x901d('0x13'));var authService=require(_0x901d('0x14'));var qs=require(_0x901d('0x15'));var as=require(_0x901d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x901d('0x17'))('api');var utils=require(_0x901d('0x18'));var config=require(_0x901d('0x19'));var licenseUtil=require(_0x901d('0x1a'));var db=require(_0x901d('0x1b'))['db'];function respondWithStatusCode(_0x15ebaf,_0x5d2345){_0x5d2345=_0x5d2345||0xcc;return function(_0x1d8117){if(_0x1d8117){return _0x15ebaf[_0x901d('0x1c')](_0x5d2345);}return _0x15ebaf[_0x901d('0x1d')](_0x5d2345)[_0x901d('0x1e')]();};}function respondWithResult(_0xb8869a,_0x14d99b){_0x14d99b=_0x14d99b||0xc8;return function(_0x530a2b){if(_0x530a2b){return _0xb8869a[_0x901d('0x1d')](_0x14d99b)[_0x901d('0x1f')](_0x530a2b);}};}function respondWithFilteredResult(_0x11b0cc,_0x17d451){return function(_0x1aba97){if(_0x1aba97){var _0x7dd5f4=typeof _0x17d451[_0x901d('0x20')]===_0x901d('0x21')&&typeof _0x17d451[_0x901d('0x22')]===_0x901d('0x21');var _0x28caae=_0x1aba97[_0x901d('0x23')];var _0x285353=_0x7dd5f4?0x0:_0x17d451[_0x901d('0x20')];var _0x38f42b=_0x7dd5f4?_0x1aba97[_0x901d('0x23')]:_0x17d451[_0x901d('0x20')]+_0x17d451[_0x901d('0x22')];var _0x57d518;if(_0x38f42b>=_0x28caae){_0x38f42b=_0x28caae;_0x57d518=0xc8;}else{_0x57d518=0xce;}_0x11b0cc[_0x901d('0x1d')](_0x57d518);return _0x11b0cc[_0x901d('0x24')]('Content-Range',_0x285353+'-'+_0x38f42b+'/'+_0x28caae)['json'](_0x1aba97);}return null;};}function patchUpdates(_0x496a06){return function(_0x53f8ae){try{jsonpatch[_0x901d('0x25')](_0x53f8ae,_0x496a06,!![]);}catch(_0x44ea6f){return BPromise['reject'](_0x44ea6f);}return _0x53f8ae[_0x901d('0x26')]();};}function saveUpdates(_0x3ea3f6,_0x488e24){return function(_0x20778b){if(_0x20778b){return _0x20778b[_0x901d('0x27')](_0x3ea3f6)[_0x901d('0x28')](function(_0x3f80b9){return _0x3f80b9;});}return null;};}function removeEntity(_0x1e7d36,_0x1818d3){return function(_0x46e5c6){if(_0x46e5c6){return _0x46e5c6[_0x901d('0x29')]()['then'](function(){_0x1e7d36[_0x901d('0x1d')](0xcc)[_0x901d('0x1e')]();});}};}function handleEntityNotFound(_0xbc89a5,_0x1f0ee5){return function(_0x557809){if(!_0x557809){_0xbc89a5[_0x901d('0x1c')](0x194);}return _0x557809;};}function handleError(_0x23fd43,_0x27f4ca){_0x27f4ca=_0x27f4ca||0x1f4;return function(_0x3cbe43){logger[_0x901d('0x2a')](_0x3cbe43['stack']);if(_0x3cbe43[_0x901d('0x2b')]){delete _0x3cbe43[_0x901d('0x2b')];}_0x23fd43[_0x901d('0x1d')](_0x27f4ca)[_0x901d('0x2c')](_0x3cbe43);};}exports[_0x901d('0x2d')]=function(_0x3de9b9,_0x48e86e){var _0xae6dfe={},_0x533038={},_0x128830={'count':0x0,'rows':[]};var _0x389fd9=_[_0x901d('0x2e')](db[_0x901d('0x2f')][_0x901d('0x30')],function(_0x20df02){return{'name':_0x20df02[_0x901d('0x31')],'type':_0x20df02[_0x901d('0x32')][_0x901d('0x33')]};});_0x533038[_0x901d('0x34')]=_[_0x901d('0x2e')](_0x389fd9,_0x901d('0x2b'));_0x533038[_0x901d('0x35')]=_[_0x901d('0x36')](_0x3de9b9[_0x901d('0x35')]);_0x533038['filters']=_[_0x901d('0x37')](_0x533038[_0x901d('0x34')],_0x533038[_0x901d('0x35')]);_0xae6dfe['attributes']=_[_0x901d('0x37')](_0x533038[_0x901d('0x34')],qs[_0x901d('0x38')](_0x3de9b9[_0x901d('0x35')][_0x901d('0x38')]));_0xae6dfe[_0x901d('0x39')]=_0xae6dfe[_0x901d('0x39')][_0x901d('0x3a')]?_0xae6dfe[_0x901d('0x39')]:_0x533038[_0x901d('0x34')];if(!_0x3de9b9['query']['hasOwnProperty'](_0x901d('0x3b'))){_0xae6dfe['limit']=qs[_0x901d('0x22')](_0x3de9b9[_0x901d('0x35')]['limit']);_0xae6dfe[_0x901d('0x20')]=qs[_0x901d('0x20')](_0x3de9b9[_0x901d('0x35')]['offset']);}_0xae6dfe[_0x901d('0x3c')]=qs[_0x901d('0x3d')](_0x3de9b9[_0x901d('0x35')][_0x901d('0x3d')]);_0xae6dfe[_0x901d('0x3e')]=qs[_0x901d('0x3f')](_[_0x901d('0x40')](_0x3de9b9[_0x901d('0x35')],_0x533038[_0x901d('0x3f')]),_0x389fd9);if(_0x3de9b9[_0x901d('0x35')][_0x901d('0x41')]){_0xae6dfe[_0x901d('0x3e')]=_[_0x901d('0x42')](_0xae6dfe[_0x901d('0x3e')],{'$or':_[_0x901d('0x2e')](_0x389fd9,function(_0x1644d8){if(_0x1644d8['type']!==_0x901d('0x43')){var _0x423cab={};_0x423cab[_0x1644d8['name']]={'$like':'%'+_0x3de9b9['query'][_0x901d('0x41')]+'%'};return _0x423cab;}})});}_0xae6dfe=_['merge']({},_0xae6dfe,_0x3de9b9[_0x901d('0x44')]);var _0x3d0556={'where':_0xae6dfe[_0x901d('0x3e')]};return db[_0x901d('0x2f')][_0x901d('0x23')](_0x3d0556)[_0x901d('0x28')](function(_0x5df4cb){_0x128830['count']=_0x5df4cb;if(_0x3de9b9['query']['includeAll']){_0xae6dfe[_0x901d('0x45')]=[{'all':!![]}];}return db[_0x901d('0x2f')]['findAll'](_0xae6dfe);})[_0x901d('0x28')](function(_0x22fc44){_0x128830['rows']=_0x22fc44;return _0x128830;})[_0x901d('0x28')](respondWithFilteredResult(_0x48e86e,_0xae6dfe))[_0x901d('0x46')](handleError(_0x48e86e,null));};exports[_0x901d('0x47')]=function(_0x2c1895,_0x53663d){var _0x5aeb41={'raw':!![],'where':{'id':_0x2c1895[_0x901d('0x48')]['id']}},_0xa9c008={};_0xa9c008[_0x901d('0x34')]=_[_0x901d('0x36')](db[_0x901d('0x2f')][_0x901d('0x30')]);_0xa9c008[_0x901d('0x35')]=_[_0x901d('0x36')](_0x2c1895[_0x901d('0x35')]);_0xa9c008[_0x901d('0x3f')]=_[_0x901d('0x37')](_0xa9c008['model'],_0xa9c008[_0x901d('0x35')]);_0x5aeb41['attributes']=_[_0x901d('0x37')](_0xa9c008['model'],qs[_0x901d('0x38')](_0x2c1895['query'][_0x901d('0x38')]));_0x5aeb41[_0x901d('0x39')]=_0x5aeb41[_0x901d('0x39')][_0x901d('0x3a')]?_0x5aeb41[_0x901d('0x39')]:_0xa9c008[_0x901d('0x34')];if(_0x2c1895[_0x901d('0x35')][_0x901d('0x49')]){_0x5aeb41[_0x901d('0x45')]=[{'all':!![]}];}_0x5aeb41=_[_0x901d('0x42')]({},_0x5aeb41,_0x2c1895[_0x901d('0x44')]);return db['CmHopperFinal'][_0x901d('0x4a')](_0x5aeb41)[_0x901d('0x28')](handleEntityNotFound(_0x53663d,null))[_0x901d('0x28')](respondWithResult(_0x53663d,null))[_0x901d('0x46')](handleError(_0x53663d,null));};exports[_0x901d('0x4b')]=function(_0x24b6fa,_0x27459b){return db[_0x901d('0x2f')][_0x901d('0x4b')]()[_0x901d('0x28')](respondWithResult(_0x27459b,null))[_0x901d('0x46')](handleError(_0x27459b,null));};exports[_0x901d('0x27')]=function(_0x2cd965,_0x23f2a9){if(_0x2cd965['body']['uniqueid']){delete _0x2cd965[_0x901d('0x4c')][_0x901d('0x4d')];}return db[_0x901d('0x2f')][_0x901d('0x4a')]({'where':{'uniqueid':_0x2cd965[_0x901d('0x48')]['id']}})['then'](handleEntityNotFound(_0x23f2a9,null))['then'](saveUpdates(_0x2cd965[_0x901d('0x4c')],null))[_0x901d('0x28')](respondWithResult(_0x23f2a9,null))['catch'](handleError(_0x23f2a9,null));};exports[_0x901d('0x4e')]=function(_0x165207,_0x4d2b2d,_0x4512e5){return db['CmHopperFinal'][_0x901d('0x4f')]({'raw':![],'where':{'VoiceQueueId':_0x165207[_0x901d('0x48')]['id']},'attributes':[[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db['sequelize']['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x53')))),_0x901d('0x54')],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x55')))),'noAnswerContacts'],[db[_0x901d('0x50')]['fn']('COUNT',db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x56')))),_0x901d('0x57')],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db['sequelize'][_0x901d('0x52')](_0x901d('0x58')))),_0x901d('0x59')],[db['sequelize']['fn'](_0x901d('0x51'),db['sequelize']['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x5a')))),'dropContacts'],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x5b')))),'abandonedContacts'],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x5c')))),'reCallContacts'],[db[_0x901d('0x50')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x901d('0x5d')))),_0x901d('0x5e')]]})[_0x901d('0x28')](handleEntityNotFound(_0x4d2b2d,null))['then'](respondWithResult(_0x4d2b2d,null))[_0x901d('0x46')](handleError(_0x4d2b2d,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0xabab57,_0x219c23,_0xecc8f9){return db[_0x901d('0x2f')][_0x901d('0x4f')]({'raw':![],'where':{'CampaignId':_0xabab57[_0x901d('0x48')]['id']},'attributes':[[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x53')))),_0x901d('0x54')],[db[_0x901d('0x50')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x55')))),_0x901d('0x5f')],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x901d('0x57')],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x58')))),_0x901d('0x59')],[db[_0x901d('0x50')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x5a')))),_0x901d('0x60')],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')][_0x901d('0x52')](_0x901d('0x5b')))),'abandonedContacts'],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db['sequelize']['fn']('IF',db['sequelize'][_0x901d('0x52')](_0x901d('0x5c')))),'reCallContacts'],[db[_0x901d('0x50')]['fn'](_0x901d('0x51'),db[_0x901d('0x50')]['fn']('IF',db[_0x901d('0x50')]['literal'](_0x901d('0x5d')))),_0x901d('0x5e')]]})[_0x901d('0x28')](handleEntityNotFound(_0x219c23,null))[_0x901d('0x28')](respondWithResult(_0x219c23,null))[_0x901d('0x46')](handleError(_0x219c23,null));};exports[_0x901d('0x61')]=function(_0x5cff96,_0x130dfb,_0x302049){return db[_0x901d('0x62')]['find']({'where':{'id':_0x5cff96[_0x901d('0x48')]['id']}})[_0x901d('0x28')](handleEntityNotFound(_0x130dfb,null))[_0x901d('0x28')](function(_0x4b5e3b){var _0x576d50;if(_0x4b5e3b){_0x576d50=squel['insert']()[_0x901d('0x63')](_0x901d('0x64'))['fromQuery'](['phone',_0x901d('0x65'),_0x901d('0x66'),_0x901d('0x67'),_0x901d('0x68'),_0x901d('0x69'),'updatedAt'],squel[_0x901d('0x6a')]()[_0x901d('0x6b')](_0x901d('0x6c'),_0x901d('0x6d'))['field'](_0x901d('0x6e'),'scheduledAt')[_0x901d('0x6b')]('ANY_VALUE(ContactId)',_0x901d('0x66'))[_0x901d('0x6b')](_0x901d('0x6f'),_0x901d('0x67'))[_0x901d('0x6b')](_0x901d('0x70'),_0x901d('0x68'))['field'](_0x901d('0x6e'),_0x901d('0x69'))['field'](_0x901d('0x6e'),'updatedAt')['from']('cm_hopper_final')['where'](_0x901d('0x71'),_0x5cff96[_0x901d('0x48')]['id']['toString']())[_0x901d('0x3e')](_0x901d('0x72'),_0x5cff96[_0x901d('0x4c')][_0x901d('0x73')][_0x901d('0x74')]())['where'](_0x901d('0x75'))[_0x901d('0x3e')](_0x901d('0x76'),squel['select']()[_0x901d('0x6b')](_0x901d('0x6d'))[_0x901d('0x77')](_0x901d('0x64'))[_0x901d('0x3e')](_0x901d('0x71'),_0x5cff96[_0x901d('0x48')]['id'][_0x901d('0x74')]()))[_0x901d('0x3e')](_0x901d('0x76'),squel[_0x901d('0x6a')]()[_0x901d('0x6b')](_0x901d('0x78'))['from'](_0x901d('0x79'))[_0x901d('0x3e')](_0x901d('0x71'),_0x5cff96[_0x901d('0x48')]['id'][_0x901d('0x74')]())[_0x901d('0x3e')](_0x901d('0x7a')))[_0x901d('0x7b')]('ContactId'))[_0x901d('0x74')]();return db[_0x901d('0x50')][_0x901d('0x35')](_0x576d50);}return[];})['then'](respondWithResult(_0x130dfb,null))[_0x901d('0x46')](handleError(_0x130dfb,null));};exports[_0x901d('0x7c')]=function(_0xa14cbd,_0x34f33f,_0x785f77){return db[_0x901d('0x7d')][_0x901d('0x4a')]({'where':{'id':_0xa14cbd[_0x901d('0x48')]['id']}})[_0x901d('0x28')](handleEntityNotFound(_0x34f33f,null))[_0x901d('0x28')](function(_0x28b640){var _0x45601a;if(_0x28b640){_0x45601a=squel[_0x901d('0x7e')]()[_0x901d('0x63')](_0x901d('0x64'))[_0x901d('0x7f')](['phone',_0x901d('0x65'),_0x901d('0x66'),_0x901d('0x67'),_0x901d('0x80'),_0x901d('0x69'),_0x901d('0x81')],squel['select']()[_0x901d('0x6b')](_0x901d('0x6c'),_0x901d('0x6d'))[_0x901d('0x6b')](_0x901d('0x6e'),_0x901d('0x65'))[_0x901d('0x6b')]('ANY_VALUE(ContactId)',_0x901d('0x66'))['field'](_0x901d('0x6f'),_0x901d('0x67'))[_0x901d('0x6b')](_0x901d('0x82'),'CampaignId')['field']('NOW()','createdAt')[_0x901d('0x6b')](_0x901d('0x6e'),'updatedAt')['from']('cm_hopper_final')[_0x901d('0x3e')]('CampaignId\x20=\x20?',_0xa14cbd[_0x901d('0x48')]['id'][_0x901d('0x74')]())[_0x901d('0x3e')]('state\x20=\x20?',_0xa14cbd['body'][_0x901d('0x73')][_0x901d('0x74')]())[_0x901d('0x3e')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x901d('0x6a')]()[_0x901d('0x6b')]('phone')[_0x901d('0x77')]('cm_hopper')['where'](_0x901d('0x83'),_0xa14cbd['params']['id'][_0x901d('0x74')]()))[_0x901d('0x3e')](_0x901d('0x76'),squel[_0x901d('0x6a')]()[_0x901d('0x6b')](_0x901d('0x78'))['from'](_0x901d('0x79'))[_0x901d('0x3e')](_0x901d('0x83'),_0xa14cbd[_0x901d('0x48')]['id'][_0x901d('0x74')]())[_0x901d('0x3e')]('state\x20=\x204'))['group'](_0x901d('0x66')))[_0x901d('0x74')]();return db[_0x901d('0x50')][_0x901d('0x35')](_0x45601a);}return[];})[_0x901d('0x28')](respondWithResult(_0x34f33f,null))[_0x901d('0x46')](handleError(_0x34f33f,null));};exports[_0x901d('0x84')]=function(_0x306491,_0x3cb399,_0x101067){return db['CmHopper'][_0x901d('0x85')]({'where':{'VoiceQueueId':_0x306491[_0x901d('0x4c')][_0x901d('0x68')],'CampaignId':_0x306491[_0x901d('0x4c')][_0x901d('0x80')],'ContactId':_0x306491[_0x901d('0x4c')][_0x901d('0x66')]}})[_0x901d('0x28')](handleEntityNotFound(_0x3cb399,null))[_0x901d('0x28')](function(_0x17b7ef){if(_0x17b7ef){return _0x17b7ef;}return null;})[_0x901d('0x28')](respondWithResult(_0x3cb399,null))[_0x901d('0x46')](handleError(_0x3cb399,null));};
\ No newline at end of file
index c31ae74..f5a4ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f0=['util','../../config/logger','api','bluebird','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash'];(function(_0x57bdb6,_0x16cf9c){var _0x33a138=function(_0x1623f7){while(--_0x1623f7){_0x57bdb6['push'](_0x57bdb6['shift']());}};_0x33a138(++_0x16cf9c);}(_0xd9f0,0x125));var _0x0d9f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xd9f0[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x0d9f('0x0'));var util=require(_0x0d9f('0x1'));var logger=require(_0x0d9f('0x2'))(_0x0d9f('0x3'));var moment=require('moment');var BPromise=require(_0x0d9f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0d9f('0x5'));var config=require(_0x0d9f('0x6'));var attributes=require(_0x0d9f('0x7'));module[_0x0d9f('0x8')]=function(_0x2b9fe2,_0x32f35c){return _0x2b9fe2[_0x0d9f('0x9')](_0x0d9f('0xa'),attributes,{'tableName':_0x0d9f('0xb'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0x0d9f('0xc')]},{'name':_0x0d9f('0xd'),'fields':[_0x0d9f('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb23a=['path','./cmHopperFinal.attributes','define','cm_hopper_final','calleridnum','uniqueid','lodash','util','api','bluebird','request-promise'];(function(_0x32f26d,_0x2c0b5d){var _0x5d9ddc=function(_0x1f0e26){while(--_0x1f0e26){_0x32f26d['push'](_0x32f26d['shift']());}};_0x5d9ddc(++_0x2c0b5d);}(_0xb23a,0x1a8));var _0xab23=function(_0x287d1c,_0x52e8f5){_0x287d1c=_0x287d1c-0x0;var _0x394f04=_0xb23a[_0x287d1c];return _0x394f04;};'use strict';var _=require(_0xab23('0x0'));var util=require(_0xab23('0x1'));var logger=require('../../config/logger')(_0xab23('0x2'));var moment=require('moment');var BPromise=require(_0xab23('0x3'));var rp=require(_0xab23('0x4'));var fs=require('fs');var path=require(_0xab23('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xab23('0x6'));module['exports']=function(_0x2c79ac,_0x502a48){return _0x2c79ac[_0xab23('0x7')]('CmHopperFinal',attributes,{'tableName':_0xab23('0x8'),'paranoid':![],'indexes':[{'name':_0xab23('0x9'),'fields':[_0xab23('0x9')]},{'name':_0xab23('0xa'),'fields':[_0xab23('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 89772c5..bc24201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x21654a,_0x4b2138){var _0x274793=function(_0x1aa68c){while(--_0x1aa68c){_0x21654a['push'](_0x21654a['shift']());}};_0x274793(++_0x4b2138);}(_0x7a54,0x106));var _0x47a5=function(_0x59258b,_0xcf96dc){_0x59258b=_0x59258b-0x0;var _0x17015a=_0x7a54[_0x59258b];return _0x17015a;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x1511e6,_0x3097b2){var _0x1c1076=function(_0x3cd063){while(--_0x3cd063){_0x1511e6['push'](_0x1511e6['shift']());}};_0x1c1076(++_0x3097b2);}(_0x7a54,0x106));var _0x47a5=function(_0x13bba2,_0x3c6af2){_0x13bba2=_0x13bba2-0x0;var _0x4af34b=_0x7a54[_0x13bba2];return _0x4af34b;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index ed81cc5..0c58e16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a5=['../../components/interaction/service','../../config/environment','index','get','/describe','/:id','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','isAuthenticated','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsIvrCampaignHopperFinal','post','/checkContactHopper','checkContactHopper','put','update','exports','multer','util','path','connect-timeout','../../components/auth/service'];(function(_0x4955c0,_0x1d377c){var _0x43b1db=function(_0x347b43){while(--_0x347b43){_0x4955c0['push'](_0x4955c0['shift']());}};_0x43b1db(++_0x1d377c);}(_0x62a5,0x14b));var _0x562a=function(_0x3b6eab,_0x1b7e69){_0x3b6eab=_0x3b6eab-0x0;var _0x11afa7=_0x62a5[_0x3b6eab];return _0x11afa7;};'use strict';var multer=require(_0x562a('0x0'));var util=require(_0x562a('0x1'));var path=require(_0x562a('0x2'));var timeout=require(_0x562a('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x562a('0x4'));var interaction=require(_0x562a('0x5'));var config=require(_0x562a('0x6'));var controller=require('./cmHopperFinal.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x562a('0x7')]);router[_0x562a('0x8')](_0x562a('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x562a('0x8')](_0x562a('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x562a('0x8')](_0x562a('0xb'),auth['isAuthenticated'](),controller[_0x562a('0xc')]);router[_0x562a('0x8')](_0x562a('0xd'),auth[_0x562a('0xe')](),controller[_0x562a('0xf')]);router['post'](_0x562a('0x10'),auth[_0x562a('0xe')](),controller['moveContactsQueueCampaignHopperFinal']);router['post']('/voice/campaign/moveContacts/:id',auth['isAuthenticated'](),controller[_0x562a('0x11')]);router[_0x562a('0x12')](_0x562a('0x13'),auth[_0x562a('0xe')](),controller[_0x562a('0x14')]);router[_0x562a('0x15')](_0x562a('0xa'),auth['isAuthenticated'](),controller[_0x562a('0x16')]);module[_0x562a('0x17')]=router;
\ No newline at end of file
+var _0xc1d3=['put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./cmHopperFinal.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper'];(function(_0x53758c,_0x3f5260){var _0x297de2=function(_0x20e632){while(--_0x20e632){_0x53758c['push'](_0x53758c['shift']());}};_0x297de2(++_0x3f5260);}(_0xc1d3,0x147));var _0x3c1d=function(_0x346069,_0x555279){_0x346069=_0x346069-0x0;var _0x14574b=_0xc1d3[_0x346069];return _0x14574b;};'use strict';var multer=require(_0x3c1d('0x0'));var util=require(_0x3c1d('0x1'));var path=require(_0x3c1d('0x2'));var timeout=require(_0x3c1d('0x3'));var express=require(_0x3c1d('0x4'));var router=express[_0x3c1d('0x5')]();var fs_extra=require(_0x3c1d('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3c1d('0x7'));var controller=require(_0x3c1d('0x8'));router[_0x3c1d('0x9')]('/',auth['isAuthenticated'](),controller[_0x3c1d('0xa')]);router[_0x3c1d('0x9')](_0x3c1d('0xb'),auth[_0x3c1d('0xc')](),controller[_0x3c1d('0xd')]);router['get'](_0x3c1d('0xe'),auth[_0x3c1d('0xc')](),controller[_0x3c1d('0xf')]);router[_0x3c1d('0x9')](_0x3c1d('0x10'),auth[_0x3c1d('0xc')](),controller[_0x3c1d('0x11')]);router[_0x3c1d('0x9')]('/campaign/countAttributes/:id',auth[_0x3c1d('0xc')](),controller[_0x3c1d('0x12')]);router[_0x3c1d('0x13')](_0x3c1d('0x14'),auth[_0x3c1d('0xc')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0x3c1d('0x13')](_0x3c1d('0x15'),auth['isAuthenticated'](),controller[_0x3c1d('0x16')]);router['post']('/checkContactHopper',auth['isAuthenticated'](),controller[_0x3c1d('0x17')]);router[_0x3c1d('0x18')](_0x3c1d('0xe'),auth[_0x3c1d('0xc')](),controller[_0x3c1d('0x19')]);module[_0x3c1d('0x1a')]=router;
\ No newline at end of file
index ffdd3c9..de19308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x809a=['STRING','DATE','BOOLEAN','sequelize','INTEGER'];(function(_0x42aa0a,_0x57286c){var _0x1150e4=function(_0x2c5ba7){while(--_0x2c5ba7){_0x42aa0a['push'](_0x42aa0a['shift']());}};_0x1150e4(++_0x57286c);}(_0x809a,0xb2));var _0xa809=function(_0x104bd2,_0x227aa8){_0x104bd2=_0x104bd2-0x0;var _0x3f736e=_0x809a[_0x104bd2];return _0x3f736e;};'use strict';var Sequelize=require(_0xa809('0x0'));module['exports']={'state':{'type':Sequelize[_0xa809('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xa809('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xa809('0x2')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xa809('0x2')]},'calleridnum':{'type':Sequelize[_0xa809('0x2')]},'calleridname':{'type':Sequelize[_0xa809('0x2')]},'starttime':{'type':Sequelize[_0xa809('0x3')]},'responsetime':{'type':Sequelize[_0xa809('0x3')]},'answertime':{'type':Sequelize[_0xa809('0x3')]},'droptime':{'type':Sequelize[_0xa809('0x3')]},'endtime':{'type':Sequelize[_0xa809('0x3')]},'ringtime':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xa809('0x2')]},'campaign':{'type':Sequelize[_0xa809('0x2')]},'campaigntype':{'type':Sequelize[_0xa809('0x2')]},'membername':{'type':Sequelize[_0xa809('0x2')]},'reason':{'type':Sequelize[_0xa809('0x2')]},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xa809('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa809('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xa809('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xa809('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6beb=['INTEGER','STRING','DATE','BOOLEAN'];(function(_0x56ebd8,_0x1485e7){var _0x5bed88=function(_0xb24d13){while(--_0xb24d13){_0x56ebd8['push'](_0x56ebd8['shift']());}};_0x5bed88(++_0x1485e7);}(_0x6beb,0xf0));var _0xb6be=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6beb[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize[_0xb6be('0x0')](0x2)},'statedesc':{'type':Sequelize[_0xb6be('0x1')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xb6be('0x1')]},'originatecalleridnum':{'type':Sequelize[_0xb6be('0x1')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb6be('0x1')]},'calleridname':{'type':Sequelize[_0xb6be('0x1')]},'starttime':{'type':Sequelize[_0xb6be('0x2')]},'responsetime':{'type':Sequelize[_0xb6be('0x2')]},'answertime':{'type':Sequelize[_0xb6be('0x2')]},'droptime':{'type':Sequelize[_0xb6be('0x2')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xb6be('0x1')]},'campaign':{'type':Sequelize[_0xb6be('0x1')]},'campaigntype':{'type':Sequelize[_0xb6be('0x1')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xb6be('0x1')]},'amd':{'type':Sequelize[_0xb6be('0x3')],'defaultValue':![]},'fax':{'type':Sequelize[_0xb6be('0x3')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xb6be('0x1')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xb6be('0x2')]},'recallme':{'type':Sequelize[_0xb6be('0x3')],'defaultValue':![]},'editedat':{'type':Sequelize[_0xb6be('0x2')]},'edited':{'type':Sequelize[_0xb6be('0x3')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb6be('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index f5f34e0..9efa896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e58=['update','then','destroy','name','index','CmHopperHistory','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','describe','uniqueid','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','end','status','limit','offset','count','set','json','apply','save'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x0e58,0x1d0));var _0x80e5=function(_0x2fd719,_0xa1c429){_0x2fd719=_0x2fd719-0x0;var _0x3fcc83=_0x0e58[_0x2fd719];return _0x3fcc83;};'use strict';var emlformat=require(_0x80e5('0x0'));var rimraf=require(_0x80e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x80e5('0x2'));var rp=require('request-promise');var moment=require(_0x80e5('0x3'));var BPromise=require(_0x80e5('0x4'));var Mustache=require(_0x80e5('0x5'));var util=require(_0x80e5('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x80e5('0x7'));var ejs=require(_0x80e5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x80e5('0x9'));var squel=require(_0x80e5('0xa'));var crypto=require(_0x80e5('0xb'));var jsforce=require(_0x80e5('0xc'));var deskjs=require(_0x80e5('0xd'));var toCsv=require('to-csv');var querystring=require(_0x80e5('0xe'));var Papa=require('papaparse');var Redis=require(_0x80e5('0xf'));var authService=require(_0x80e5('0x10'));var qs=require(_0x80e5('0x11'));var as=require(_0x80e5('0x12'));var hardwareService=require(_0x80e5('0x13'));var logger=require(_0x80e5('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x80e5('0x15'));var licenseUtil=require(_0x80e5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb6271d,_0x3790af){_0x3790af=_0x3790af||0xcc;return function(_0x541035){if(_0x541035){return _0xb6271d[_0x80e5('0x17')](_0x3790af);}return _0xb6271d['status'](_0x3790af)[_0x80e5('0x18')]();};}function respondWithResult(_0x4f251c,_0x2135c4){_0x2135c4=_0x2135c4||0xc8;return function(_0x4a5dda){if(_0x4a5dda){return _0x4f251c[_0x80e5('0x19')](_0x2135c4)['json'](_0x4a5dda);}};}function respondWithFilteredResult(_0x57e6f3,_0x46a849){return function(_0x1337ac){if(_0x1337ac){var _0x480be4=typeof _0x46a849['offset']==='undefined'&&typeof _0x46a849[_0x80e5('0x1a')]==='undefined';var _0x66cccf=_0x1337ac['count'];var _0x3fa908=_0x480be4?0x0:_0x46a849[_0x80e5('0x1b')];var _0x270069=_0x480be4?_0x1337ac[_0x80e5('0x1c')]:_0x46a849[_0x80e5('0x1b')]+_0x46a849[_0x80e5('0x1a')];var _0x2becbd;if(_0x270069>=_0x66cccf){_0x270069=_0x66cccf;_0x2becbd=0xc8;}else{_0x2becbd=0xce;}_0x57e6f3['status'](_0x2becbd);return _0x57e6f3[_0x80e5('0x1d')]('Content-Range',_0x3fa908+'-'+_0x270069+'/'+_0x66cccf)[_0x80e5('0x1e')](_0x1337ac);}return null;};}function patchUpdates(_0x1cc6f0){return function(_0x5b2a4c){try{jsonpatch[_0x80e5('0x1f')](_0x5b2a4c,_0x1cc6f0,!![]);}catch(_0x4e3150){return BPromise['reject'](_0x4e3150);}return _0x5b2a4c[_0x80e5('0x20')]();};}function saveUpdates(_0x35862f,_0x16493d){return function(_0x331ab8){if(_0x331ab8){return _0x331ab8[_0x80e5('0x21')](_0x35862f)[_0x80e5('0x22')](function(_0x366f65){return _0x366f65;});}return null;};}function removeEntity(_0x1e86db,_0x31e4c7){return function(_0x85e38e){if(_0x85e38e){return _0x85e38e[_0x80e5('0x23')]()[_0x80e5('0x22')](function(){_0x1e86db['status'](0xcc)[_0x80e5('0x18')]();});}};}function handleEntityNotFound(_0x4b6a14,_0x47e6b4){return function(_0x1e11a7){if(!_0x1e11a7){_0x4b6a14[_0x80e5('0x17')](0x194);}return _0x1e11a7;};}function handleError(_0x17f4f6,_0x231bd6){_0x231bd6=_0x231bd6||0x1f4;return function(_0x433eef){logger['error'](_0x433eef['stack']);if(_0x433eef['name']){delete _0x433eef[_0x80e5('0x24')];}_0x17f4f6[_0x80e5('0x19')](_0x231bd6)['send'](_0x433eef);};}exports[_0x80e5('0x25')]=function(_0x37769c,_0x2073b6){var _0x53dd9c={},_0xb1ebbc={},_0x18da16={'count':0x0,'rows':[]};var _0x28dad3=_['map'](db[_0x80e5('0x26')]['rawAttributes'],function(_0xff6529){return{'name':_0xff6529['fieldName'],'type':_0xff6529[_0x80e5('0x27')][_0x80e5('0x28')]};});_0xb1ebbc[_0x80e5('0x29')]=_[_0x80e5('0x2a')](_0x28dad3,'name');_0xb1ebbc[_0x80e5('0x2b')]=_[_0x80e5('0x2c')](_0x37769c[_0x80e5('0x2b')]);_0xb1ebbc['filters']=_['intersection'](_0xb1ebbc[_0x80e5('0x29')],_0xb1ebbc[_0x80e5('0x2b')]);_0x53dd9c['attributes']=_[_0x80e5('0x2d')](_0xb1ebbc[_0x80e5('0x29')],qs[_0x80e5('0x2e')](_0x37769c[_0x80e5('0x2b')][_0x80e5('0x2e')]));_0x53dd9c[_0x80e5('0x2f')]=_0x53dd9c['attributes'][_0x80e5('0x30')]?_0x53dd9c[_0x80e5('0x2f')]:_0xb1ebbc[_0x80e5('0x29')];if(!_0x37769c[_0x80e5('0x2b')][_0x80e5('0x31')](_0x80e5('0x32'))){_0x53dd9c[_0x80e5('0x1a')]=qs[_0x80e5('0x1a')](_0x37769c[_0x80e5('0x2b')][_0x80e5('0x1a')]);_0x53dd9c[_0x80e5('0x1b')]=qs[_0x80e5('0x1b')](_0x37769c['query'][_0x80e5('0x1b')]);}_0x53dd9c[_0x80e5('0x33')]=qs[_0x80e5('0x34')](_0x37769c[_0x80e5('0x2b')][_0x80e5('0x34')]);_0x53dd9c[_0x80e5('0x35')]=qs['filters'](_[_0x80e5('0x36')](_0x37769c[_0x80e5('0x2b')],_0xb1ebbc[_0x80e5('0x37')]),_0x28dad3);if(_0x37769c['query'][_0x80e5('0x38')]){_0x53dd9c[_0x80e5('0x35')]=_[_0x80e5('0x39')](_0x53dd9c['where'],{'$or':_['map'](_0x28dad3,function(_0x4a6b8b){if(_0x4a6b8b['type']!==_0x80e5('0x3a')){var _0x18cc1f={};_0x18cc1f[_0x4a6b8b['name']]={'$like':'%'+_0x37769c[_0x80e5('0x2b')]['filter']+'%'};return _0x18cc1f;}})});}_0x53dd9c=_['merge']({},_0x53dd9c,_0x37769c[_0x80e5('0x3b')]);var _0x436757={'where':_0x53dd9c[_0x80e5('0x35')]};return db[_0x80e5('0x26')][_0x80e5('0x1c')](_0x436757)[_0x80e5('0x22')](function(_0x5eac25){_0x18da16[_0x80e5('0x1c')]=_0x5eac25;if(_0x37769c[_0x80e5('0x2b')][_0x80e5('0x3c')]){_0x53dd9c[_0x80e5('0x3d')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x80e5('0x3e')](_0x53dd9c);})['then'](function(_0x54fb44){_0x18da16[_0x80e5('0x3f')]=_0x54fb44;return _0x18da16;})['then'](respondWithFilteredResult(_0x2073b6,_0x53dd9c))[_0x80e5('0x40')](handleError(_0x2073b6,null));};exports['show']=function(_0x2bd3f0,_0xf2881a){var _0xaa803d={'raw':!![],'where':{'id':_0x2bd3f0['params']['id']}},_0x12e0c8={};_0x12e0c8[_0x80e5('0x29')]=_['keys'](db[_0x80e5('0x26')][_0x80e5('0x41')]);_0x12e0c8[_0x80e5('0x2b')]=_[_0x80e5('0x2c')](_0x2bd3f0[_0x80e5('0x2b')]);_0x12e0c8['filters']=_[_0x80e5('0x2d')](_0x12e0c8[_0x80e5('0x29')],_0x12e0c8[_0x80e5('0x2b')]);_0xaa803d['attributes']=_[_0x80e5('0x2d')](_0x12e0c8[_0x80e5('0x29')],qs['fields'](_0x2bd3f0[_0x80e5('0x2b')][_0x80e5('0x2e')]));_0xaa803d['attributes']=_0xaa803d['attributes'][_0x80e5('0x30')]?_0xaa803d[_0x80e5('0x2f')]:_0x12e0c8['model'];if(_0x2bd3f0[_0x80e5('0x2b')]['includeAll']){_0xaa803d[_0x80e5('0x3d')]=[{'all':!![]}];}_0xaa803d=_[_0x80e5('0x39')]({},_0xaa803d,_0x2bd3f0['options']);return db[_0x80e5('0x26')][_0x80e5('0x42')](_0xaa803d)[_0x80e5('0x22')](handleEntityNotFound(_0xf2881a,null))[_0x80e5('0x22')](respondWithResult(_0xf2881a,null))[_0x80e5('0x40')](handleError(_0xf2881a,null));};exports[_0x80e5('0x43')]=function(_0x458cf8,_0x4668e9){return db[_0x80e5('0x26')][_0x80e5('0x43')](_0x458cf8[_0x80e5('0x44')],{})[_0x80e5('0x22')](respondWithResult(_0x4668e9,0xc9))['catch'](handleError(_0x4668e9,null));};exports[_0x80e5('0x45')]=function(_0x347ead,_0x108491){return db['CmHopperHistory'][_0x80e5('0x45')]()['then'](respondWithResult(_0x108491,null))[_0x80e5('0x40')](handleError(_0x108491,null));};exports[_0x80e5('0x21')]=function(_0x5736c3,_0x171886){if(_0x5736c3['body'][_0x80e5('0x46')]){delete _0x5736c3[_0x80e5('0x44')][_0x80e5('0x46')];}return db[_0x80e5('0x26')][_0x80e5('0x42')]({'where':{'uniqueid':_0x5736c3['params']['id']}})[_0x80e5('0x22')](handleEntityNotFound(_0x171886,null))[_0x80e5('0x22')](saveUpdates(_0x5736c3[_0x80e5('0x44')],null))[_0x80e5('0x22')](respondWithResult(_0x171886,null))[_0x80e5('0x40')](handleError(_0x171886,null));};
\ No newline at end of file
+var _0xbf65=['index','map','CmHopperHistory','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','describe','body','uniqueid','eml-format','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','end','name','send'];(function(_0x47b1d6,_0x1f4ff3){var _0x264d0b=function(_0xbf2878){while(--_0xbf2878){_0x47b1d6['push'](_0x47b1d6['shift']());}};_0x264d0b(++_0x1f4ff3);}(_0xbf65,0x13b));var _0x5bf6=function(_0x54613d,_0x4b8872){_0x54613d=_0x54613d-0x0;var _0x11c35b=_0xbf65[_0x54613d];return _0x11c35b;};'use strict';var emlformat=require(_0x5bf6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5bf6('0x1'));var moment=require(_0x5bf6('0x2'));var BPromise=require(_0x5bf6('0x3'));var Mustache=require(_0x5bf6('0x4'));var util=require('util');var path=require(_0x5bf6('0x5'));var sox=require(_0x5bf6('0x6'));var csv=require(_0x5bf6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5bf6('0x8'));var squel=require('squel');var crypto=require(_0x5bf6('0x9'));var jsforce=require(_0x5bf6('0xa'));var deskjs=require(_0x5bf6('0xb'));var toCsv=require(_0x5bf6('0x7'));var querystring=require(_0x5bf6('0xc'));var Papa=require(_0x5bf6('0xd'));var Redis=require(_0x5bf6('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x5bf6('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5bf6('0x10'))(_0x5bf6('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5bf6('0x12'));var db=require(_0x5bf6('0x13'))['db'];function respondWithStatusCode(_0x25d6ad,_0x23c6a9){_0x23c6a9=_0x23c6a9||0xcc;return function(_0x259b31){if(_0x259b31){return _0x25d6ad['sendStatus'](_0x23c6a9);}return _0x25d6ad[_0x5bf6('0x14')](_0x23c6a9)['end']();};}function respondWithResult(_0x57bee2,_0xae77ed){_0xae77ed=_0xae77ed||0xc8;return function(_0x23ed04){if(_0x23ed04){return _0x57bee2[_0x5bf6('0x14')](_0xae77ed)['json'](_0x23ed04);}};}function respondWithFilteredResult(_0x4b06ba,_0x52c63e){return function(_0x35b470){if(_0x35b470){var _0x2ee81b=typeof _0x52c63e[_0x5bf6('0x15')]===_0x5bf6('0x16')&&typeof _0x52c63e[_0x5bf6('0x17')]===_0x5bf6('0x16');var _0x47fb7f=_0x35b470[_0x5bf6('0x18')];var _0x4558c7=_0x2ee81b?0x0:_0x52c63e['offset'];var _0x5a8ef2=_0x2ee81b?_0x35b470[_0x5bf6('0x18')]:_0x52c63e['offset']+_0x52c63e['limit'];var _0x11faeb;if(_0x5a8ef2>=_0x47fb7f){_0x5a8ef2=_0x47fb7f;_0x11faeb=0xc8;}else{_0x11faeb=0xce;}_0x4b06ba[_0x5bf6('0x14')](_0x11faeb);return _0x4b06ba[_0x5bf6('0x19')](_0x5bf6('0x1a'),_0x4558c7+'-'+_0x5a8ef2+'/'+_0x47fb7f)[_0x5bf6('0x1b')](_0x35b470);}return null;};}function patchUpdates(_0x261f20){return function(_0x27435d){try{jsonpatch['apply'](_0x27435d,_0x261f20,!![]);}catch(_0x533fd3){return BPromise[_0x5bf6('0x1c')](_0x533fd3);}return _0x27435d[_0x5bf6('0x1d')]();};}function saveUpdates(_0x569d71,_0x3d5edc){return function(_0x374e87){if(_0x374e87){return _0x374e87[_0x5bf6('0x1e')](_0x569d71)[_0x5bf6('0x1f')](function(_0xdb02bb){return _0xdb02bb;});}return null;};}function removeEntity(_0x19c099,_0x2d1166){return function(_0x164eb0){if(_0x164eb0){return _0x164eb0['destroy']()[_0x5bf6('0x1f')](function(){_0x19c099[_0x5bf6('0x14')](0xcc)[_0x5bf6('0x20')]();});}};}function handleEntityNotFound(_0x3783a3,_0x3de102){return function(_0x52fc13){if(!_0x52fc13){_0x3783a3['sendStatus'](0x194);}return _0x52fc13;};}function handleError(_0x3001c9,_0x212d95){_0x212d95=_0x212d95||0x1f4;return function(_0x3552b4){logger['error'](_0x3552b4['stack']);if(_0x3552b4['name']){delete _0x3552b4[_0x5bf6('0x21')];}_0x3001c9[_0x5bf6('0x14')](_0x212d95)[_0x5bf6('0x22')](_0x3552b4);};}exports[_0x5bf6('0x23')]=function(_0x1b22f4,_0x48ccf5){var _0x4b0ac5={},_0x15382b={},_0x461885={'count':0x0,'rows':[]};var _0xd0ea56=_[_0x5bf6('0x24')](db[_0x5bf6('0x25')][_0x5bf6('0x26')],function(_0x84af89){return{'name':_0x84af89[_0x5bf6('0x27')],'type':_0x84af89[_0x5bf6('0x28')][_0x5bf6('0x29')]};});_0x15382b['model']=_[_0x5bf6('0x24')](_0xd0ea56,_0x5bf6('0x21'));_0x15382b[_0x5bf6('0x2a')]=_[_0x5bf6('0x2b')](_0x1b22f4['query']);_0x15382b[_0x5bf6('0x2c')]=_[_0x5bf6('0x2d')](_0x15382b[_0x5bf6('0x2e')],_0x15382b[_0x5bf6('0x2a')]);_0x4b0ac5[_0x5bf6('0x2f')]=_[_0x5bf6('0x2d')](_0x15382b[_0x5bf6('0x2e')],qs[_0x5bf6('0x30')](_0x1b22f4[_0x5bf6('0x2a')]['fields']));_0x4b0ac5[_0x5bf6('0x2f')]=_0x4b0ac5[_0x5bf6('0x2f')][_0x5bf6('0x31')]?_0x4b0ac5['attributes']:_0x15382b[_0x5bf6('0x2e')];if(!_0x1b22f4[_0x5bf6('0x2a')][_0x5bf6('0x32')]('nolimit')){_0x4b0ac5[_0x5bf6('0x17')]=qs[_0x5bf6('0x17')](_0x1b22f4['query']['limit']);_0x4b0ac5[_0x5bf6('0x15')]=qs[_0x5bf6('0x15')](_0x1b22f4['query'][_0x5bf6('0x15')]);}_0x4b0ac5[_0x5bf6('0x33')]=qs['sort'](_0x1b22f4[_0x5bf6('0x2a')][_0x5bf6('0x34')]);_0x4b0ac5['where']=qs[_0x5bf6('0x2c')](_['pick'](_0x1b22f4[_0x5bf6('0x2a')],_0x15382b[_0x5bf6('0x2c')]),_0xd0ea56);if(_0x1b22f4['query'][_0x5bf6('0x35')]){_0x4b0ac5[_0x5bf6('0x36')]=_[_0x5bf6('0x37')](_0x4b0ac5[_0x5bf6('0x36')],{'$or':_[_0x5bf6('0x24')](_0xd0ea56,function(_0x468c0f){if(_0x468c0f[_0x5bf6('0x28')]!==_0x5bf6('0x38')){var _0x560b16={};_0x560b16[_0x468c0f[_0x5bf6('0x21')]]={'$like':'%'+_0x1b22f4[_0x5bf6('0x2a')][_0x5bf6('0x35')]+'%'};return _0x560b16;}})});}_0x4b0ac5=_[_0x5bf6('0x37')]({},_0x4b0ac5,_0x1b22f4[_0x5bf6('0x39')]);var _0xa1f188={'where':_0x4b0ac5[_0x5bf6('0x36')]};return db[_0x5bf6('0x25')][_0x5bf6('0x18')](_0xa1f188)[_0x5bf6('0x1f')](function(_0x41ccef){_0x461885[_0x5bf6('0x18')]=_0x41ccef;if(_0x1b22f4[_0x5bf6('0x2a')][_0x5bf6('0x3a')]){_0x4b0ac5['include']=[{'all':!![]}];}return db[_0x5bf6('0x25')][_0x5bf6('0x3b')](_0x4b0ac5);})[_0x5bf6('0x1f')](function(_0x272ccd){_0x461885[_0x5bf6('0x3c')]=_0x272ccd;return _0x461885;})[_0x5bf6('0x1f')](respondWithFilteredResult(_0x48ccf5,_0x4b0ac5))[_0x5bf6('0x3d')](handleError(_0x48ccf5,null));};exports[_0x5bf6('0x3e')]=function(_0x8387b8,_0x273297){var _0x57a834={'raw':!![],'where':{'id':_0x8387b8[_0x5bf6('0x3f')]['id']}},_0x516250={};_0x516250['model']=_[_0x5bf6('0x2b')](db[_0x5bf6('0x25')]['rawAttributes']);_0x516250[_0x5bf6('0x2a')]=_[_0x5bf6('0x2b')](_0x8387b8[_0x5bf6('0x2a')]);_0x516250[_0x5bf6('0x2c')]=_[_0x5bf6('0x2d')](_0x516250[_0x5bf6('0x2e')],_0x516250[_0x5bf6('0x2a')]);_0x57a834[_0x5bf6('0x2f')]=_[_0x5bf6('0x2d')](_0x516250[_0x5bf6('0x2e')],qs['fields'](_0x8387b8['query'][_0x5bf6('0x30')]));_0x57a834[_0x5bf6('0x2f')]=_0x57a834[_0x5bf6('0x2f')][_0x5bf6('0x31')]?_0x57a834['attributes']:_0x516250[_0x5bf6('0x2e')];if(_0x8387b8[_0x5bf6('0x2a')][_0x5bf6('0x3a')]){_0x57a834[_0x5bf6('0x40')]=[{'all':!![]}];}_0x57a834=_['merge']({},_0x57a834,_0x8387b8[_0x5bf6('0x39')]);return db[_0x5bf6('0x25')][_0x5bf6('0x41')](_0x57a834)[_0x5bf6('0x1f')](handleEntityNotFound(_0x273297,null))[_0x5bf6('0x1f')](respondWithResult(_0x273297,null))[_0x5bf6('0x3d')](handleError(_0x273297,null));};exports[_0x5bf6('0x42')]=function(_0x5d4b8b,_0x56e072){return db[_0x5bf6('0x25')]['create'](_0x5d4b8b['body'],{})[_0x5bf6('0x1f')](respondWithResult(_0x56e072,0xc9))[_0x5bf6('0x3d')](handleError(_0x56e072,null));};exports['describe']=function(_0x319744,_0x41585a){return db[_0x5bf6('0x25')][_0x5bf6('0x43')]()[_0x5bf6('0x1f')](respondWithResult(_0x41585a,null))['catch'](handleError(_0x41585a,null));};exports[_0x5bf6('0x1e')]=function(_0x4c3e7a,_0x1fb073){if(_0x4c3e7a[_0x5bf6('0x44')][_0x5bf6('0x45')]){delete _0x4c3e7a[_0x5bf6('0x44')][_0x5bf6('0x45')];}return db[_0x5bf6('0x25')][_0x5bf6('0x41')]({'where':{'uniqueid':_0x4c3e7a[_0x5bf6('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1fb073,null))[_0x5bf6('0x1f')](saveUpdates(_0x4c3e7a[_0x5bf6('0x44')],null))[_0x5bf6('0x1f')](respondWithResult(_0x1fb073,null))[_0x5bf6('0x3d')](handleError(_0x1fb073,null));};
\ No newline at end of file
index 8668bb7..bc98248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3588=['bluebird','request-promise','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x20645f,_0x5688f0){var _0xf0485b=function(_0x4220af){while(--_0x4220af){_0x20645f['push'](_0x20645f['shift']());}};_0xf0485b(++_0x5688f0);}(_0x3588,0x82));var _0x8358=function(_0x29436c,_0x260a6a){_0x29436c=_0x29436c-0x0;var _0x3760a2=_0x3588[_0x29436c];return _0x3760a2;};'use strict';var _=require(_0x8358('0x0'));var util=require(_0x8358('0x1'));var logger=require(_0x8358('0x2'))(_0x8358('0x3'));var moment=require(_0x8358('0x4'));var BPromise=require(_0x8358('0x5'));var rp=require(_0x8358('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8358('0x7'));var config=require(_0x8358('0x8'));var attributes=require(_0x8358('0x9'));module[_0x8358('0xa')]=function(_0x483bf0,_0x15dc94){return _0x483bf0[_0x8358('0xb')]('CmHopperHistory',attributes,{'tableName':_0x8358('0xc'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0x8358('0xd')]},{'name':_0x8358('0xe'),'fields':[_0x8358('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe635=['moment','bluebird','request-promise','../../config/environment','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api'];(function(_0x44b0c0,_0x580b3f){var _0x146cad=function(_0x2ebe91){while(--_0x2ebe91){_0x44b0c0['push'](_0x44b0c0['shift']());}};_0x146cad(++_0x580b3f);}(_0xe635,0x1be));var _0x5e63=function(_0x5c6952,_0x386dfd){_0x5c6952=_0x5c6952-0x0;var _0x5a170d=_0xe635[_0x5c6952];return _0x5a170d;};'use strict';var _=require(_0x5e63('0x0'));var util=require(_0x5e63('0x1'));var logger=require(_0x5e63('0x2'))(_0x5e63('0x3'));var moment=require(_0x5e63('0x4'));var BPromise=require(_0x5e63('0x5'));var rp=require(_0x5e63('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5e63('0x7'));var attributes=require(_0x5e63('0x8'));module[_0x5e63('0x9')]=function(_0x41fdd1,_0x2d48ac){return _0x41fdd1[_0x5e63('0xa')](_0x5e63('0xb'),attributes,{'tableName':_0x5e63('0xc'),'paranoid':![],'indexes':[{'name':_0x5e63('0xd'),'fields':[_0x5e63('0xd')]},{'name':'uniqueid','fields':[_0x5e63('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index dc2e40a..91b5963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b05=['predictiveIntervalAvgHoldtime','AVG','literal','GetVoiceQueueHopperHistory','campaign','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','name','col','ivrTotalCallsDays','ivrAnswerCallsDay','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmHopperHistory,\x20%s,\x20%s','result','catch','CreateCmHopperHistory','CmHopperHistory','create','options','raw','then','AvgHandleTime','findAll','where','sequelize','COUNT','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','`state`\x20=\x204,\x20`holdtime`,\x20null'];(function(_0x39947f,_0x5787a6){var _0x415d92=function(_0x148fcd){while(--_0x148fcd){_0x39947f['push'](_0x39947f['shift']());}};_0x415d92(++_0x5787a6);}(_0x0b05,0x1ae));var _0x50b0=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x0b05[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x50b0('0x0'));var BPromise=require(_0x50b0('0x1'));var rs=require(_0x50b0('0x2'));var fs=require('fs');var Redis=require(_0x50b0('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x50b0('0x4'));var logger=require(_0x50b0('0x5'))(_0x50b0('0x6'));var config=require(_0x50b0('0x7'));var jayson=require(_0x50b0('0x8'));var client=jayson[_0x50b0('0x9')][_0x50b0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13e79a,_0x51ab81,_0x38417f){return new BPromise(function(_0x1eb448,_0x52cab0){return client['request'](_0x13e79a,_0x38417f)['then'](function(_0x5d143e){logger[_0x50b0('0xb')]('CmHopperHistory,\x20%s,\x20%s',_0x51ab81,_0x50b0('0xc'));logger[_0x50b0('0xd')](_0x50b0('0xe'),_0x51ab81,_0x50b0('0xc'),JSON[_0x50b0('0xf')](_0x5d143e));if(_0x5d143e[_0x50b0('0x10')]){if(_0x5d143e[_0x50b0('0x10')][_0x50b0('0x11')]===0x1f4){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x51ab81,_0x5d143e[_0x50b0('0x10')][_0x50b0('0x12')]);return _0x52cab0(_0x5d143e[_0x50b0('0x10')]['message']);}logger[_0x50b0('0x10')](_0x50b0('0x13'),_0x51ab81,_0x5d143e['error'][_0x50b0('0x12')]);return _0x1eb448(_0x5d143e['error'][_0x50b0('0x12')]);}else{logger[_0x50b0('0xb')]('CmHopperHistory,\x20%s,\x20%s',_0x51ab81,'request\x20sent');_0x1eb448(_0x5d143e[_0x50b0('0x14')][_0x50b0('0x12')]);}})[_0x50b0('0x15')](function(_0x48c0b6){logger['error'](_0x50b0('0x13'),_0x51ab81,_0x48c0b6);_0x52cab0(_0x48c0b6);});});}exports[_0x50b0('0x16')]=function(_0x43f692){var _0x329574=this;return new Promise(function(_0x133eb4,_0x426564){return db[_0x50b0('0x17')][_0x50b0('0x18')](_0x43f692['body'],{'raw':_0x43f692['options']?_0x43f692[_0x50b0('0x19')][_0x50b0('0x1a')]===undefined?!![]:![]:!![]})[_0x50b0('0x1b')](function(_0x250cf4){logger[_0x50b0('0xb')](_0x50b0('0x16'),_0x43f692);logger[_0x50b0('0xd')](_0x50b0('0x16'),_0x43f692,JSON[_0x50b0('0xf')](_0x250cf4));_0x133eb4(_0x250cf4);})[_0x50b0('0x15')](function(_0x1ff838){logger[_0x50b0('0x10')](_0x50b0('0x16'),_0x1ff838[_0x50b0('0x12')],_0x43f692);_0x426564(_0x329574[_0x50b0('0x10')](0x1f4,_0x1ff838['message']));});});};exports[_0x50b0('0x1c')]=function(_0x129371){var _0x16bb18=this;return new Promise(function(_0xf39459,_0x46a235){return db['CmHopperHistory'][_0x50b0('0x1d')]({'raw':_0x129371[_0x50b0('0x19')]?_0x129371[_0x50b0('0x19')][_0x50b0('0x1a')]===undefined?!![]:![]:!![],'where':_0x129371[_0x50b0('0x19')]?_0x129371[_0x50b0('0x19')][_0x50b0('0x1e')]||null:null,'attributes':[[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['col']('id')),_0x50b0('0x21')],[db['sequelize']['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')]['literal'](_0x50b0('0x22')))),'predictiveIntervalAnsweredCalls'],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')]['literal'](_0x50b0('0x23')))),_0x50b0('0x24')],[db['sequelize']['fn'](_0x50b0('0x20'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x50b0('0x25')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x50b0('0x1f')]['fn']('AVG',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x50b0('0x26')))),_0x50b0('0x27')],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x28'),db[_0x50b0('0x1f')]['fn']('IF',db['sequelize'][_0x50b0('0x29')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),'predictiveIntervalAvgTalktime']]})[_0x50b0('0x1b')](function(_0x589cb6){logger[_0x50b0('0xb')]('AvgHandleTime',_0x129371);logger[_0x50b0('0xd')](_0x50b0('0x1c'),_0x129371,JSON['stringify'](_0x589cb6));_0xf39459(_0x589cb6);})['catch'](function(_0x366898){logger[_0x50b0('0x10')]('AvgHandleTime',_0x366898[_0x50b0('0x12')],_0x129371);_0x46a235(_0x16bb18[_0x50b0('0x10')](0x1f4,_0x366898[_0x50b0('0x12')]));});});};exports[_0x50b0('0x2a')]=function(_0x3cdfdb){var _0x4976cd=this;return new Promise(function(_0x128af6,_0x4fc8d3){return db[_0x50b0('0x17')][_0x50b0('0x1d')]({'raw':_0x3cdfdb[_0x50b0('0x19')]?_0x3cdfdb['options']['raw']===undefined?!![]:![]:!![],'where':_0x3cdfdb[_0x50b0('0x19')]?_0x3cdfdb[_0x50b0('0x19')][_0x50b0('0x1e')]||null:null,'attributes':[[_0x50b0('0x2b'),'name'],[db['sequelize']['fn'](_0x50b0('0x20'),db['sequelize']['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')]('`state`\x20=\x200,\x201,\x20null'))),_0x50b0('0x2c')],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x2d')))),_0x50b0('0x2e')],[db['sequelize']['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db[_0x50b0('0x1f')]['fn']('COUNT',db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x2f')))),'outboundBusyCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')]('`state`\x20=\x208,\x201,\x20null'))),_0x50b0('0x30')],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x50b0('0x31')],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x32')))),'outboundDropCallsDayCallersExit'],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db['sequelize']['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x33')))),_0x50b0('0x34')],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')]['literal'](_0x50b0('0x35')))),'outboundBlacklistCallsDay'],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')]['literal'](_0x50b0('0x36')))),_0x50b0('0x37')],[db[_0x50b0('0x1f')]['fn']('COUNT',db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')]['literal'](_0x50b0('0x38')))),_0x50b0('0x39')],[db['sequelize']['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db['sequelize'][_0x50b0('0x29')]('`state`\x20=\x2016,\x201,\x20null'))),_0x50b0('0x3a')],[db['sequelize']['fn'](_0x50b0('0x20'),db[_0x50b0('0x1f')]['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x3b')))),_0x50b0('0x39')],[db['sequelize']['fn'](_0x50b0('0x20'),db['sequelize']['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x3c')))),_0x50b0('0x3d')]],'group':[_0x50b0('0x2b')]})[_0x50b0('0x1b')](function(_0x4fd8aa){logger[_0x50b0('0xb')](_0x50b0('0x2a'),_0x3cdfdb);logger[_0x50b0('0xd')](_0x50b0('0x2a'),_0x3cdfdb,JSON[_0x50b0('0xf')](_0x4fd8aa));_0x128af6(_0x4fd8aa);})[_0x50b0('0x15')](function(_0xdb0bb){logger['error'](_0x50b0('0x2a'),_0xdb0bb[_0x50b0('0x12')],_0x3cdfdb);_0x4fc8d3(_0x4976cd[_0x50b0('0x10')](0x1f4,_0xdb0bb[_0x50b0('0x12')]));});});};exports[_0x50b0('0x3e')]=function(_0x26c7b0){var _0x4799b1=this;return new Promise(function(_0x18e30d,_0x453050){return db[_0x50b0('0x17')][_0x50b0('0x1d')]({'raw':_0x26c7b0[_0x50b0('0x19')]?_0x26c7b0['options'][_0x50b0('0x1a')]===undefined?!![]:![]:!![],'where':_0x26c7b0[_0x50b0('0x19')]?_0x26c7b0[_0x50b0('0x19')][_0x50b0('0x1e')]||null:null,'attributes':[[_0x50b0('0x2b'),_0x50b0('0x3f')],[db['sequelize']['fn']('COUNT',db['sequelize'][_0x50b0('0x40')]('id')),_0x50b0('0x41')],[db[_0x50b0('0x1f')]['fn'](_0x50b0('0x20'),db['sequelize']['fn']('IF',db[_0x50b0('0x1f')][_0x50b0('0x29')](_0x50b0('0x22')))),_0x50b0('0x42')]],'group':[_0x50b0('0x2b')]})[_0x50b0('0x1b')](function(_0x585f4f){logger[_0x50b0('0xb')]('GetCampaignHopperHistory',_0x26c7b0);logger[_0x50b0('0xd')](_0x50b0('0x3e'),_0x26c7b0,JSON[_0x50b0('0xf')](_0x585f4f));_0x18e30d(_0x585f4f);})[_0x50b0('0x15')](function(_0x5139f9){logger['error']('GetCampaignHopperHistory',_0x5139f9['message'],_0x26c7b0);_0x453050(_0x4799b1[_0x50b0('0x10')](0x1f4,_0x5139f9[_0x50b0('0x12')]));});});};
\ No newline at end of file
+var _0xde5d=['outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmHopperHistory,\x20%s,\x20%s','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','AvgHandleTime','findAll','where','sequelize','COUNT','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','`state`\x20=\x204,\x20`holdtime`,\x20null','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundRejectCallsDay'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0xde5d,0xd7));var _0xdde5=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xde5d[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xdde5('0x0'));var util=require('util');var moment=require(_0xdde5('0x1'));var BPromise=require(_0xdde5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdde5('0x3'))['db'];var utils=require(_0xdde5('0x4'));var logger=require(_0xdde5('0x5'))('rpc');var config=require(_0xdde5('0x6'));var jayson=require(_0xdde5('0x7'));var client=jayson[_0xdde5('0x8')][_0xdde5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4feada,_0x35d8e8,_0x57402f){return new BPromise(function(_0x39b7f0,_0x560b14){return client[_0xdde5('0xa')](_0x4feada,_0x57402f)[_0xdde5('0xb')](function(_0x501ef0){logger[_0xdde5('0xc')]('CmHopperHistory,\x20%s,\x20%s',_0x35d8e8,_0xdde5('0xd'));logger[_0xdde5('0xe')](_0xdde5('0xf'),_0x35d8e8,'request\x20sent',JSON[_0xdde5('0x10')](_0x501ef0));if(_0x501ef0[_0xdde5('0x11')]){if(_0x501ef0[_0xdde5('0x11')][_0xdde5('0x12')]===0x1f4){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x35d8e8,_0x501ef0[_0xdde5('0x11')][_0xdde5('0x13')]);return _0x560b14(_0x501ef0[_0xdde5('0x11')]['message']);}logger['error'](_0xdde5('0x14'),_0x35d8e8,_0x501ef0[_0xdde5('0x11')]['message']);return _0x39b7f0(_0x501ef0['error'][_0xdde5('0x13')]);}else{logger[_0xdde5('0xc')](_0xdde5('0x14'),_0x35d8e8,'request\x20sent');_0x39b7f0(_0x501ef0[_0xdde5('0x15')]['message']);}})[_0xdde5('0x16')](function(_0x29fd36){logger[_0xdde5('0x11')](_0xdde5('0x14'),_0x35d8e8,_0x29fd36);_0x560b14(_0x29fd36);});});}exports[_0xdde5('0x17')]=function(_0x4fb33a){var _0x3d0f10=this;return new Promise(function(_0x4c6df9,_0x27db78){return db[_0xdde5('0x18')][_0xdde5('0x19')](_0x4fb33a[_0xdde5('0x1a')],{'raw':_0x4fb33a['options']?_0x4fb33a[_0xdde5('0x1b')][_0xdde5('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x25f516){logger[_0xdde5('0xc')](_0xdde5('0x17'),_0x4fb33a);logger[_0xdde5('0xe')](_0xdde5('0x17'),_0x4fb33a,JSON[_0xdde5('0x10')](_0x25f516));_0x4c6df9(_0x25f516);})[_0xdde5('0x16')](function(_0xf2b56b){logger[_0xdde5('0x11')](_0xdde5('0x17'),_0xf2b56b[_0xdde5('0x13')],_0x4fb33a);_0x27db78(_0x3d0f10[_0xdde5('0x11')](0x1f4,_0xf2b56b[_0xdde5('0x13')]));});});};exports[_0xdde5('0x1d')]=function(_0x573537){var _0x1c4118=this;return new Promise(function(_0x41efb0,_0x252b60){return db[_0xdde5('0x18')][_0xdde5('0x1e')]({'raw':_0x573537[_0xdde5('0x1b')]?_0x573537[_0xdde5('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x573537[_0xdde5('0x1b')]?_0x573537[_0xdde5('0x1b')][_0xdde5('0x1f')]||null:null,'attributes':[[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['col']('id')),'predictiveIntervalTotalCalls'],[db[_0xdde5('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdde5('0x20')]['literal'](_0xdde5('0x22')))),_0xdde5('0x23')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db['sequelize']['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x25')))),_0xdde5('0x26')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011,\x201,\x20null'))),_0xdde5('0x27')],[db['sequelize']['fn']('AVG',db[_0xdde5('0x20')]['fn']('IF',db['sequelize'][_0xdde5('0x24')](_0xdde5('0x28')))),'predictiveIntervalAvgHoldtime'],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x29'),db[_0xdde5('0x20')]['fn']('IF',db['sequelize'][_0xdde5('0x24')](_0xdde5('0x2a')))),'predictiveIntervalAvgTalktime']]})['then'](function(_0x187b62){logger[_0xdde5('0xc')](_0xdde5('0x1d'),_0x573537);logger[_0xdde5('0xe')](_0xdde5('0x1d'),_0x573537,JSON['stringify'](_0x187b62));_0x41efb0(_0x187b62);})[_0xdde5('0x16')](function(_0xd1983e){logger[_0xdde5('0x11')](_0xdde5('0x1d'),_0xd1983e['message'],_0x573537);_0x252b60(_0x1c4118[_0xdde5('0x11')](0x1f4,_0xd1983e['message']));});});};exports[_0xdde5('0x2b')]=function(_0x1db4ae){var _0x597701=this;return new Promise(function(_0x303389,_0x1bb21e){return db[_0xdde5('0x18')][_0xdde5('0x1e')]({'raw':_0x1db4ae[_0xdde5('0x1b')]?_0x1db4ae[_0xdde5('0x1b')][_0xdde5('0x1c')]===undefined?!![]:![]:!![],'where':_0x1db4ae[_0xdde5('0x1b')]?_0x1db4ae[_0xdde5('0x1b')][_0xdde5('0x1f')]||null:null,'attributes':[['campaign',_0xdde5('0x2c')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x2d')))),_0xdde5('0x2e')],[db[_0xdde5('0x20')]['fn']('COUNT',db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x2f')))),_0xdde5('0x30')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db['sequelize']['fn']('IF',db[_0xdde5('0x20')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0xdde5('0x31')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x32')))),'outboundBusyCallsDay'],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x33')))),_0xdde5('0x34')],[db['sequelize']['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x35')))),_0xdde5('0x36')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x37')))),_0xdde5('0x38')],[db['sequelize']['fn']('COUNT',db[_0xdde5('0x20')]['fn']('IF',db['sequelize'][_0xdde5('0x24')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db['sequelize']['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x39')))),_0xdde5('0x3a')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db['sequelize']['fn']('IF',db[_0xdde5('0x20')]['literal'](_0xdde5('0x3b')))),'outboundOriginateFailureCallsDay'],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2018,\x201,\x20null'))),_0xdde5('0x3c')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db['sequelize'][_0xdde5('0x24')]('`state`\x20=\x2016,\x201,\x20null'))),_0xdde5('0x3d')],[db['sequelize']['fn']('COUNT',db[_0xdde5('0x20')]['fn']('IF',db['sequelize']['literal'](_0xdde5('0x3e')))),_0xdde5('0x3c')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')][_0xdde5('0x24')](_0xdde5('0x3f')))),_0xdde5('0x40')]],'group':[_0xdde5('0x41')]})[_0xdde5('0xb')](function(_0x566831){logger[_0xdde5('0xc')](_0xdde5('0x2b'),_0x1db4ae);logger[_0xdde5('0xe')]('GetVoiceQueueHopperHistory',_0x1db4ae,JSON[_0xdde5('0x10')](_0x566831));_0x303389(_0x566831);})[_0xdde5('0x16')](function(_0x5c7dc2){logger[_0xdde5('0x11')](_0xdde5('0x2b'),_0x5c7dc2['message'],_0x1db4ae);_0x1bb21e(_0x597701['error'](0x1f4,_0x5c7dc2['message']));});});};exports[_0xdde5('0x42')]=function(_0x392013){var _0x311aea=this;return new Promise(function(_0x1b492c,_0x5b3d1d){return db[_0xdde5('0x18')][_0xdde5('0x1e')]({'raw':_0x392013[_0xdde5('0x1b')]?_0x392013[_0xdde5('0x1b')][_0xdde5('0x1c')]===undefined?!![]:![]:!![],'where':_0x392013[_0xdde5('0x1b')]?_0x392013[_0xdde5('0x1b')]['where']||null:null,'attributes':[[_0xdde5('0x41'),_0xdde5('0x2c')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['col']('id')),_0xdde5('0x43')],[db[_0xdde5('0x20')]['fn'](_0xdde5('0x21'),db[_0xdde5('0x20')]['fn']('IF',db[_0xdde5('0x20')]['literal'](_0xdde5('0x22')))),_0xdde5('0x44')]],'group':[_0xdde5('0x41')]})[_0xdde5('0xb')](function(_0x221022){logger['info'](_0xdde5('0x42'),_0x392013);logger[_0xdde5('0xe')](_0xdde5('0x42'),_0x392013,JSON[_0xdde5('0x10')](_0x221022));_0x1b492c(_0x221022);})[_0xdde5('0x16')](function(_0x336c84){logger[_0xdde5('0x11')](_0xdde5('0x42'),_0x336c84[_0xdde5('0x13')],_0x392013);_0x5b3d1d(_0x311aea[_0xdde5('0x11')](0x1f4,_0x336c84[_0xdde5('0x13')]));});});};
\ No newline at end of file
index f82889f..7920eb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5113=['index','/describe','describe','/:id','show','post','create','put','update','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x5d846f,_0x51c4e0){var _0x2f0269=function(_0x5715b1){while(--_0x5715b1){_0x5d846f['push'](_0x5d846f['shift']());}};_0x2f0269(++_0x51c4e0);}(_0x5113,0x14a));var _0x3511=function(_0x4f7a17,_0x237ece){_0x4f7a17=_0x4f7a17-0x0;var _0x459fae=_0x5113[_0x4f7a17];return _0x459fae;};'use strict';var multer=require(_0x3511('0x0'));var util=require(_0x3511('0x1'));var path=require('path');var timeout=require(_0x3511('0x2'));var express=require(_0x3511('0x3'));var router=express[_0x3511('0x4')]();var fs_extra=require(_0x3511('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3511('0x6'));var config=require(_0x3511('0x7'));var controller=require('./cmHopperHistory.controller');router[_0x3511('0x8')]('/',auth[_0x3511('0x9')](),controller[_0x3511('0xa')]);router['get'](_0x3511('0xb'),auth[_0x3511('0x9')](),controller[_0x3511('0xc')]);router[_0x3511('0x8')](_0x3511('0xd'),auth[_0x3511('0x9')](),controller[_0x3511('0xe')]);router[_0x3511('0xf')]('/',auth[_0x3511('0x9')](),controller[_0x3511('0x10')]);router[_0x3511('0x11')](_0x3511('0xd'),auth[_0x3511('0x9')](),controller[_0x3511('0x12')]);module[_0x3511('0x13')]=router;
\ No newline at end of file
+var _0x9a02=['multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','index','get','/describe','isAuthenticated','describe','/:id','post','create','exports'];(function(_0x31bd8b,_0x56fa02){var _0x1506e4=function(_0x51e54d){while(--_0x51e54d){_0x31bd8b['push'](_0x31bd8b['shift']());}};_0x1506e4(++_0x56fa02);}(_0x9a02,0xa2));var _0x29a0=function(_0x1657d7,_0x55b8c5){_0x1657d7=_0x1657d7-0x0;var _0x3e9f7e=_0x9a02[_0x1657d7];return _0x3e9f7e;};'use strict';var multer=require(_0x29a0('0x0'));var util=require(_0x29a0('0x1'));var path=require(_0x29a0('0x2'));var timeout=require(_0x29a0('0x3'));var express=require(_0x29a0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x29a0('0x5'));var interaction=require(_0x29a0('0x6'));var config=require(_0x29a0('0x7'));var controller=require(_0x29a0('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x29a0('0x9')]);router[_0x29a0('0xa')](_0x29a0('0xb'),auth[_0x29a0('0xc')](),controller[_0x29a0('0xd')]);router[_0x29a0('0xa')](_0x29a0('0xe'),auth[_0x29a0('0xc')](),controller['show']);router[_0x29a0('0xf')]('/',auth[_0x29a0('0xc')](),controller[_0x29a0('0x10')]);router['put'](_0x29a0('0xe'),auth[_0x29a0('0xc')](),controller['update']);module[_0x29a0('0x11')]=router;
\ No newline at end of file
index 030eb58..0e8c94c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d9f=['sequelize','exports','STRING','name'];(function(_0x433d65,_0x5d119b){var _0x24799c=function(_0x1da4e8){while(--_0x1da4e8){_0x433d65['push'](_0x433d65['shift']());}};_0x24799c(++_0x5d119b);}(_0x7d9f,0x15c));var _0xf7d9=function(_0xdbd1cf,_0x8d319d){_0xdbd1cf=_0xdbd1cf-0x0;var _0x3668c4=_0x7d9f[_0xdbd1cf];return _0x3668c4;};'use strict';var Sequelize=require(_0xf7d9('0x0'));module[_0xf7d9('0x1')]={'name':{'type':Sequelize[_0xf7d9('0x2')],'unique':_0xf7d9('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf7d9('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7aaf=['STRING','name','sequelize'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x7aaf,0x1eb));var _0xf7aa=function(_0x471f5e,_0x47ddea){_0x471f5e=_0x471f5e-0x0;var _0x4cc335=_0x7aaf[_0x471f5e];return _0x4cc335;};'use strict';var Sequelize=require(_0xf7aa('0x0'));module['exports']={'name':{'type':Sequelize[_0xf7aa('0x1')],'unique':_0xf7aa('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f2b10b8..e718fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d8=['addDisposition','ListId','getDispositions','Disposition','pick','removeDispositions','addContacts','tags','join','isArray','each','CmContact','omit','push','errors','message','json','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','getContactsCsv','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','Content-type','download','findOne','sequelize','addCustomFields','TEXT','text','Sequelize','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','ids','spread','emit','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./cmList.socket','register','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Lists','UserProfileResource','end','sendStatus','error','name','send','map','CmList','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','describe'];(function(_0x2d51b8,_0x32a21e){var _0x5e2b68=function(_0x47b5e7){while(--_0x47b5e7){_0x2d51b8['push'](_0x2d51b8['shift']());}};_0x5e2b68(++_0x32a21e);}(_0x93d8,0x15e));var _0x893d=function(_0x228c99,_0x11dc4){_0x228c99=_0x228c99-0x0;var _0x3c4fb0=_0x93d8[_0x228c99];return _0x3c4fb0;};'use strict';var emlformat=require(_0x893d('0x0'));var rimraf=require(_0x893d('0x1'));var zipdir=require(_0x893d('0x2'));var jsonpatch=require(_0x893d('0x3'));var rp=require('request-promise');var moment=require(_0x893d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x893d('0x5'));var util=require(_0x893d('0x6'));var path=require(_0x893d('0x7'));var sox=require(_0x893d('0x8'));var csv=require(_0x893d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x893d('0xa'));var _=require('lodash');var squel=require(_0x893d('0xb'));var crypto=require(_0x893d('0xc'));var jsforce=require(_0x893d('0xd'));var deskjs=require(_0x893d('0xe'));var toCsv=require(_0x893d('0x9'));var querystring=require(_0x893d('0xf'));var Papa=require('papaparse');var Redis=require(_0x893d('0x10'));var authService=require(_0x893d('0x11'));var qs=require(_0x893d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x893d('0x13'));var logger=require(_0x893d('0x14'))(_0x893d('0x15'));var utils=require(_0x893d('0x16'));var config=require(_0x893d('0x17'));var licenseUtil=require(_0x893d('0x18'));var db=require(_0x893d('0x19'))['db'];config[_0x893d('0x1a')]=_['defaults'](config[_0x893d('0x1a')],{'host':_0x893d('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x893d('0x1a')]));require(_0x893d('0x1c'))[_0x893d('0x1d')](socket);function respondWithStatusCode(_0x2cfc95,_0x303820){_0x303820=_0x303820||0xcc;return function(_0x255d82){if(_0x255d82){return _0x2cfc95['sendStatus'](_0x303820);}return _0x2cfc95[_0x893d('0x1e')](_0x303820)['end']();};}function respondWithResult(_0x6c9924,_0x403db2){_0x403db2=_0x403db2||0xc8;return function(_0x4cbe8d){if(_0x4cbe8d){return _0x6c9924[_0x893d('0x1e')](_0x403db2)['json'](_0x4cbe8d);}};}function respondWithFilteredResult(_0x4587dd,_0x28a289){return function(_0x111c03){if(_0x111c03){var _0x2397e3=typeof _0x28a289[_0x893d('0x1f')]===_0x893d('0x20')&&typeof _0x28a289[_0x893d('0x21')]===_0x893d('0x20');var _0x397b34=_0x111c03[_0x893d('0x22')];var _0x2298ac=_0x2397e3?0x0:_0x28a289['offset'];var _0x5e1f8d=_0x2397e3?_0x111c03[_0x893d('0x22')]:_0x28a289[_0x893d('0x1f')]+_0x28a289[_0x893d('0x21')];var _0x22ca2f;if(_0x5e1f8d>=_0x397b34){_0x5e1f8d=_0x397b34;_0x22ca2f=0xc8;}else{_0x22ca2f=0xce;}_0x4587dd[_0x893d('0x1e')](_0x22ca2f);return _0x4587dd[_0x893d('0x23')](_0x893d('0x24'),_0x2298ac+'-'+_0x5e1f8d+'/'+_0x397b34)['json'](_0x111c03);}return null;};}function patchUpdates(_0x197d7f){return function(_0x466ecc){try{jsonpatch[_0x893d('0x25')](_0x466ecc,_0x197d7f,!![]);}catch(_0x3d68a0){return BPromise[_0x893d('0x26')](_0x3d68a0);}return _0x466ecc[_0x893d('0x27')]();};}function saveUpdates(_0x3e28e8,_0x10da41){return function(_0x3dbc02){if(_0x3dbc02){return _0x3dbc02[_0x893d('0x28')](_0x3e28e8)[_0x893d('0x29')](function(_0x31d5c3){return _0x31d5c3;});}return null;};}function removeEntity(_0xc4abc2,_0x8b4176){return function(_0x4419eb){if(_0x4419eb){return _0x4419eb[_0x893d('0x2a')]()[_0x893d('0x29')](function(){var _0xf5a0a4=_0x4419eb[_0x893d('0x2b')]({'plain':!![]});var _0x46cf4c=_0x893d('0x2c');return db[_0x893d('0x2d')]['destroy']({'where':{'type':_0x46cf4c,'resourceId':_0xf5a0a4['id']}})[_0x893d('0x29')](function(){return _0x4419eb;});})[_0x893d('0x29')](function(){_0xc4abc2['status'](0xcc)[_0x893d('0x2e')]();});}};}function handleEntityNotFound(_0x5dcef9,_0x265c9e){return function(_0x5253ca){if(!_0x5253ca){_0x5dcef9[_0x893d('0x2f')](0x194);}return _0x5253ca;};}function handleError(_0x8f8f3f,_0x51365c){_0x51365c=_0x51365c||0x1f4;return function(_0x2a5f53){logger[_0x893d('0x30')](_0x2a5f53['stack']);if(_0x2a5f53['name']){delete _0x2a5f53[_0x893d('0x31')];}_0x8f8f3f[_0x893d('0x1e')](_0x51365c)[_0x893d('0x32')](_0x2a5f53);};}exports['index']=function(_0x54cb69,_0x4edb51){var _0x17bb0a={},_0x138ea2={},_0x5c7165={'count':0x0,'rows':[]};var _0x55e54a=_[_0x893d('0x33')](db[_0x893d('0x34')]['rawAttributes'],function(_0x5066b3){return{'name':_0x5066b3[_0x893d('0x35')],'type':_0x5066b3[_0x893d('0x36')][_0x893d('0x37')]};});_0x138ea2['model']=_['map'](_0x55e54a,_0x893d('0x31'));_0x138ea2[_0x893d('0x38')]=_[_0x893d('0x39')](_0x54cb69['query']);_0x138ea2[_0x893d('0x3a')]=_[_0x893d('0x3b')](_0x138ea2[_0x893d('0x3c')],_0x138ea2[_0x893d('0x38')]);_0x17bb0a['attributes']=_[_0x893d('0x3b')](_0x138ea2[_0x893d('0x3c')],qs['fields'](_0x54cb69['query'][_0x893d('0x3d')]));_0x17bb0a[_0x893d('0x3e')]=_0x17bb0a['attributes'][_0x893d('0x3f')]?_0x17bb0a[_0x893d('0x3e')]:_0x138ea2[_0x893d('0x3c')];if(!_0x54cb69[_0x893d('0x38')][_0x893d('0x40')](_0x893d('0x41'))){_0x17bb0a[_0x893d('0x21')]=qs[_0x893d('0x21')](_0x54cb69[_0x893d('0x38')]['limit']);_0x17bb0a[_0x893d('0x1f')]=qs[_0x893d('0x1f')](_0x54cb69[_0x893d('0x38')][_0x893d('0x1f')]);}_0x17bb0a[_0x893d('0x42')]=qs[_0x893d('0x43')](_0x54cb69[_0x893d('0x38')][_0x893d('0x43')]);_0x17bb0a[_0x893d('0x44')]=qs[_0x893d('0x3a')](_['pick'](_0x54cb69[_0x893d('0x38')],_0x138ea2[_0x893d('0x3a')]),_0x55e54a);if(_0x54cb69[_0x893d('0x38')][_0x893d('0x45')]){_0x17bb0a['where']=_[_0x893d('0x46')](_0x17bb0a[_0x893d('0x44')],{'$or':_[_0x893d('0x33')](_0x55e54a,function(_0x177da8){if(_0x177da8[_0x893d('0x36')]!=='VIRTUAL'){var _0x5efc65={};_0x5efc65[_0x177da8['name']]={'$like':'%'+_0x54cb69[_0x893d('0x38')][_0x893d('0x45')]+'%'};return _0x5efc65;}})});}_0x17bb0a=_[_0x893d('0x46')]({},_0x17bb0a,_0x54cb69[_0x893d('0x47')]);var _0x30e3f6={'where':_0x17bb0a[_0x893d('0x44')]};return db[_0x893d('0x34')][_0x893d('0x22')](_0x30e3f6)[_0x893d('0x29')](function(_0x1fb9ab){_0x5c7165[_0x893d('0x22')]=_0x1fb9ab;if(_0x54cb69[_0x893d('0x38')][_0x893d('0x48')]){_0x17bb0a[_0x893d('0x49')]=[{'all':!![]}];}return db[_0x893d('0x34')][_0x893d('0x4a')](_0x17bb0a);})[_0x893d('0x29')](function(_0x11d613){_0x5c7165[_0x893d('0x4b')]=_0x11d613;return _0x5c7165;})[_0x893d('0x29')](respondWithFilteredResult(_0x4edb51,_0x17bb0a))[_0x893d('0x4c')](handleError(_0x4edb51,null));};exports[_0x893d('0x4d')]=function(_0xc8311,_0x38b4c2){var _0x23a5fe={'raw':![],'where':{'id':_0xc8311[_0x893d('0x4e')]['id']}},_0x4cb70f={};_0x4cb70f[_0x893d('0x3c')]=_[_0x893d('0x39')](db[_0x893d('0x34')][_0x893d('0x4f')]);_0x4cb70f['query']=_['keys'](_0xc8311[_0x893d('0x38')]);_0x4cb70f[_0x893d('0x3a')]=_[_0x893d('0x3b')](_0x4cb70f[_0x893d('0x3c')],_0x4cb70f['query']);_0x23a5fe['attributes']=_[_0x893d('0x3b')](_0x4cb70f[_0x893d('0x3c')],qs[_0x893d('0x3d')](_0xc8311[_0x893d('0x38')][_0x893d('0x3d')]));_0x23a5fe['attributes']=_0x23a5fe[_0x893d('0x3e')]['length']?_0x23a5fe[_0x893d('0x3e')]:_0x4cb70f[_0x893d('0x3c')];if(_0xc8311[_0x893d('0x38')]['includeAll']){_0x23a5fe[_0x893d('0x49')]=[{'all':!![]}];}_0x23a5fe=_['merge']({},_0x23a5fe,_0xc8311[_0x893d('0x47')]);return db['CmList'][_0x893d('0x50')](_0x23a5fe)['then'](handleEntityNotFound(_0x38b4c2,null))['then'](respondWithResult(_0x38b4c2,null))[_0x893d('0x4c')](handleError(_0x38b4c2,null));};exports['create']=function(_0x2c62df,_0x3eb624){return db[_0x893d('0x34')][_0x893d('0x51')](_0x2c62df[_0x893d('0x52')],{})[_0x893d('0x29')](function(_0x522dfe){var _0x1ca5d7=_0x2c62df[_0x893d('0x53')][_0x893d('0x2b')]({'plain':!![]});if(!_0x1ca5d7)throw new Error(_0x893d('0x54'));if(_0x1ca5d7[_0x893d('0x55')]==='user'){var _0x24c53b=_0x522dfe[_0x893d('0x2b')]({'plain':!![]});var _0x18d063=_0x893d('0x2c');return db['UserProfileSection']['find']({'where':{'name':_0x18d063,'userProfileId':_0x1ca5d7[_0x893d('0x56')]},'raw':!![]})[_0x893d('0x29')](function(_0x19f357){if(_0x19f357&&_0x19f357['autoAssociation']===0x0){return db['UserProfileResource'][_0x893d('0x51')]({'name':_0x24c53b[_0x893d('0x31')],'resourceId':_0x24c53b['id'],'type':_0x19f357['name'],'sectionId':_0x19f357['id']},{})[_0x893d('0x29')](function(){return _0x522dfe;});}else{return _0x522dfe;}})['catch'](function(_0x38d4e7){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38d4e7);throw _0x38d4e7;});}return _0x522dfe;})[_0x893d('0x29')](respondWithResult(_0x3eb624,0xc9))[_0x893d('0x4c')](handleError(_0x3eb624,null));};exports[_0x893d('0x28')]=function(_0x2c3dc2,_0x44a2fa){if(_0x2c3dc2[_0x893d('0x52')]['id']){delete _0x2c3dc2[_0x893d('0x52')]['id'];}return db[_0x893d('0x34')][_0x893d('0x50')]({'where':{'id':_0x2c3dc2[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x44a2fa,null))[_0x893d('0x29')](saveUpdates(_0x2c3dc2['body'],null))[_0x893d('0x29')](respondWithResult(_0x44a2fa,null))[_0x893d('0x4c')](handleError(_0x44a2fa,null));};exports[_0x893d('0x2a')]=function(_0x5b725d,_0x1bc36d){return db[_0x893d('0x34')]['find']({'where':{'id':_0x5b725d[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x1bc36d,null))['then'](removeEntity(_0x1bc36d,null))[_0x893d('0x4c')](handleError(_0x1bc36d,null));};exports[_0x893d('0x57')]=function(_0x285657,_0x400c64){return db[_0x893d('0x34')][_0x893d('0x57')]()[_0x893d('0x29')](respondWithResult(_0x400c64,null))[_0x893d('0x4c')](handleError(_0x400c64,null));};exports[_0x893d('0x58')]=function(_0x2aea23,_0x549724,_0x5dc5d2){if(_0x2aea23[_0x893d('0x52')]['id']){delete _0x2aea23[_0x893d('0x52')]['id'];}return db['CmList'][_0x893d('0x50')]({'where':{'id':_0x2aea23[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x549724,null))[_0x893d('0x29')](function(_0x1de104){if(_0x1de104){_0x2aea23[_0x893d('0x52')][_0x893d('0x59')]=_0x1de104['id'];return db['Disposition'][_0x893d('0x51')](_0x2aea23['body']);}})['then'](respondWithResult(_0x549724,null))['catch'](handleError(_0x549724,null));};exports[_0x893d('0x5a')]=function(_0x100728,_0x51bd0b,_0x42b0cd){var _0x13d07e={'raw':![],'where':{}};var _0x417524={};var _0x28d9a0={'count':0x0,'rows':[]};return db[_0x893d('0x34')]['findOne']({'where':{'id':_0x100728[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x51bd0b,null))[_0x893d('0x29')](function(_0x5108e9){if(_0x5108e9){_0x417524['model']=_[_0x893d('0x39')](db[_0x893d('0x5b')][_0x893d('0x4f')]);_0x417524['query']=_['keys'](_0x100728['query']);_0x417524[_0x893d('0x3a')]=_[_0x893d('0x3b')](_0x417524['model'],_0x417524[_0x893d('0x38')]);_0x13d07e[_0x893d('0x3e')]=_[_0x893d('0x3b')](_0x417524[_0x893d('0x3c')],qs['fields'](_0x100728[_0x893d('0x38')][_0x893d('0x3d')]));_0x13d07e['attributes']=_0x13d07e[_0x893d('0x3e')][_0x893d('0x3f')]?_0x13d07e[_0x893d('0x3e')]:_0x417524['model'];if(!_0x100728[_0x893d('0x38')][_0x893d('0x40')](_0x893d('0x41'))){_0x13d07e['limit']=qs[_0x893d('0x21')](_0x100728[_0x893d('0x38')]['limit']);_0x13d07e[_0x893d('0x1f')]=qs['offset'](_0x100728['query'][_0x893d('0x1f')]);}_0x13d07e['order']=qs[_0x893d('0x43')](_0x100728[_0x893d('0x38')][_0x893d('0x43')]);_0x13d07e[_0x893d('0x44')]=qs[_0x893d('0x3a')](_[_0x893d('0x5c')](_0x100728[_0x893d('0x38')],_0x417524[_0x893d('0x3a')]));_0x13d07e[_0x893d('0x44')][_0x893d('0x59')]=_0x5108e9['id'];if(_0x100728[_0x893d('0x38')][_0x893d('0x45')]){_0x13d07e[_0x893d('0x44')]=_[_0x893d('0x46')](_0x13d07e[_0x893d('0x44')],{'$or':_['map'](_0x13d07e['attributes'],function(_0x5d37f4){var _0xaa440={};_0xaa440[_0x5d37f4]={'$like':'%'+_0x100728['query'][_0x893d('0x45')]+'%'};return _0xaa440;})});}_0x13d07e=_[_0x893d('0x46')]({},_0x13d07e,_0x100728[_0x893d('0x47')]);return db[_0x893d('0x5b')][_0x893d('0x22')]({'where':_0x13d07e[_0x893d('0x44')]})[_0x893d('0x29')](function(_0x31a1d0){_0x28d9a0[_0x893d('0x22')]=_0x31a1d0;if(_0x100728[_0x893d('0x38')][_0x893d('0x48')]){_0x13d07e['include']=[{'all':!![]}];}return db['Disposition'][_0x893d('0x4a')](_0x13d07e);})['then'](function(_0x26bc87){_0x28d9a0[_0x893d('0x4b')]=_0x26bc87;return _0x28d9a0;});}})[_0x893d('0x29')](respondWithFilteredResult(_0x51bd0b,_0x13d07e))[_0x893d('0x4c')](handleError(_0x51bd0b,null));};exports[_0x893d('0x5d')]=function(_0x4872a4,_0x4a1c64,_0x509356){return db[_0x893d('0x34')]['find']({'where':{'id':_0x4872a4[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x4a1c64,null))[_0x893d('0x29')](function(_0x1195f7){if(_0x1195f7){return _0x1195f7[_0x893d('0x5d')](_0x4872a4['query']['ids']);}})[_0x893d('0x29')](respondWithStatusCode(_0x4a1c64,null))[_0x893d('0x4c')](handleError(_0x4a1c64,null));};exports[_0x893d('0x5e')]=function(_0x1439dc,_0x37cddc,_0x105cd2){return db['CmList']['find']({'where':{'id':_0x1439dc[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x37cddc,null))[_0x893d('0x29')](function(_0x450eed){if(_0x450eed){var _0x2bed83=[];var _0x4bd561={'success':[],'errors':[]};return db['CmContact']['describe']()[_0x893d('0x29')](function(_0x2eaa2b){if(_0x1439dc[_0x893d('0x52')][_0x893d('0x5f')]&&_['isArray'](_0x1439dc[_0x893d('0x52')][_0x893d('0x5f')])){if(_0x1439dc[_0x893d('0x52')]['tags'][_0x893d('0x3f')]){_0x1439dc['body'][_0x893d('0x5f')]=_0x1439dc[_0x893d('0x52')][_0x893d('0x5f')][_0x893d('0x60')](';')+';';}else{_0x1439dc[_0x893d('0x52')]['tags']=null;}}else{_0x1439dc[_0x893d('0x52')][_0x893d('0x5f')]=null;}if(_0x1439dc[_0x893d('0x52')]&&_[_0x893d('0x61')](_0x1439dc[_0x893d('0x52')])){for(var _0x8001e0=0x0;_0x8001e0<_0x1439dc[_0x893d('0x52')]['length'];_0x8001e0+=0x1){_0x1439dc[_0x893d('0x52')][_0x8001e0][_0x893d('0x59')]=_0x1439dc[_0x893d('0x4e')]['id'];_0x2bed83['push'](_0x1439dc[_0x893d('0x52')][_0x8001e0]);}return BPromise[_0x893d('0x62')](_0x2bed83,function(_0x5799b7){return db[_0x893d('0x63')][_0x893d('0x51')](_[_0x893d('0x64')](_0x5799b7,['ids','id'])||{},{'fields':_[_0x893d('0x39')](_0x2eaa2b),'raw':!![]})[_0x893d('0x29')](function(_0x41c2dd){_0x4bd561['success'][_0x893d('0x65')](_0x41c2dd['dataValues']);})[_0x893d('0x4c')](function(_0x4d76f8){_0x4bd561[_0x893d('0x66')][_0x893d('0x65')]({'data':_0x5799b7,'error':_0x4d76f8[_0x893d('0x67')]});});})[_0x893d('0x29')](function(_0x4e03cf){return _0x4bd561;})[_0x893d('0x4c')](function(_0x51c8c4){return _0x51c8c4;});}else{_0x37cddc['status'](0x190)[_0x893d('0x68')]({'message':_0x893d('0x69')});}});}})[_0x893d('0x29')](respondWithResult(_0x37cddc,null))['catch'](handleError(_0x37cddc,null));};exports[_0x893d('0x6a')]=function(_0x5b0262,_0x1131c9,_0x169b7d){var _0x25afa4;return db[_0x893d('0x34')][_0x893d('0x50')]({'where':{'id':_0x5b0262[_0x893d('0x4e')]['id']},'include':[{'model':db[_0x893d('0x6b')],'as':_0x893d('0x6c')}]})[_0x893d('0x29')](handleEntityNotFound(_0x1131c9,null))['then'](function(_0x66d9a2){if(_0x66d9a2){_0x25afa4=_0x66d9a2;return db['CmContact']['rawAttributes'];}})['then'](function(_0x26d748){if(_0x26d748){var _0xaee36e={};var _0xfa8a0f={};_0xfa8a0f[_0x893d('0x3c')]=_[_0x893d('0x6d')](_[_0x893d('0x39')](_0x26d748),_[_0x893d('0x33')](_0x25afa4[_0x893d('0x6c')],function(_0x4b937c){return util[_0x893d('0x6e')](_0x893d('0x6f'),_0x4b937c['id']);}));_0xfa8a0f[_0x893d('0x38')]=_[_0x893d('0x39')](_0x5b0262[_0x893d('0x38')]);_0xfa8a0f[_0x893d('0x3a')]=_[_0x893d('0x3b')](_0xfa8a0f[_0x893d('0x3c')],_0xfa8a0f[_0x893d('0x38')]);_0xaee36e['attributes']=_[_0x893d('0x3b')](_0xfa8a0f['model'],qs[_0x893d('0x3d')](_0x5b0262[_0x893d('0x38')][_0x893d('0x3d')]));_0xaee36e[_0x893d('0x3e')]=_0xaee36e[_0x893d('0x3e')][_0x893d('0x3f')]?_0xaee36e[_0x893d('0x3e')]:_0xfa8a0f[_0x893d('0x3c')];if(!_0x5b0262[_0x893d('0x38')][_0x893d('0x40')](_0x893d('0x41'))){_0xaee36e[_0x893d('0x21')]=qs[_0x893d('0x21')](_0x5b0262[_0x893d('0x38')][_0x893d('0x21')]);_0xaee36e[_0x893d('0x1f')]=qs[_0x893d('0x1f')](_0x5b0262[_0x893d('0x38')]['offset']);}_0xaee36e[_0x893d('0x42')]=qs['sort'](_0x5b0262[_0x893d('0x38')][_0x893d('0x43')]);_0xaee36e[_0x893d('0x44')]=qs['filters'](_[_0x893d('0x5c')](_0x5b0262['query'],_0xfa8a0f[_0x893d('0x3a')]));_0xaee36e[_0x893d('0x70')]=!![];if(_0x5b0262[_0x893d('0x38')][_0x893d('0x45')]){_0xaee36e['where']=_[_0x893d('0x46')](_0xaee36e[_0x893d('0x44')],{'$or':_[_0x893d('0x33')](_0xaee36e[_0x893d('0x3e')],function(_0x3c34a4){var _0x213db9={};_0x213db9[_0x3c34a4]={'$like':'%'+_0x5b0262[_0x893d('0x38')][_0x893d('0x45')]+'%'};return _0x213db9;})});}_0xaee36e=_[_0x893d('0x46')]({},_0xaee36e,_0x5b0262[_0x893d('0x47')]);return _0x25afa4[_0x893d('0x6a')](_0xaee36e);}})[_0x893d('0x29')](respondWithResult(_0x1131c9,null))['catch'](handleError(_0x1131c9,null));};exports[_0x893d('0x71')]=function(_0x188f3a,_0x1cca42,_0xd79d58){var _0x17db7e;return db[_0x893d('0x34')][_0x893d('0x50')]({'where':{'id':_0x188f3a['params']['id']},'include':[{'model':db[_0x893d('0x6b')],'as':_0x893d('0x6c')}]})[_0x893d('0x29')](handleEntityNotFound(_0x1cca42,null))[_0x893d('0x29')](function(_0x160311){if(_0x160311){_0x17db7e=_0x160311;return db['CmContact'][_0x893d('0x4f')];}})[_0x893d('0x29')](function(_0x5ede82){if(_0x5ede82){var _0x3d419d={};var _0x492826={};_0x492826[_0x893d('0x3c')]=_['concat'](_[_0x893d('0x39')](_0x5ede82),_[_0x893d('0x33')](_0x17db7e[_0x893d('0x6c')],function(_0x5bf3c7){return util[_0x893d('0x6e')](_0x893d('0x6f'),_0x5bf3c7['id']);}));_0x492826[_0x893d('0x38')]=_[_0x893d('0x39')](_0x188f3a['query']);_0x492826['filters']=_[_0x893d('0x3b')](_0x492826['model'],_0x492826[_0x893d('0x38')]);_0x3d419d[_0x893d('0x3e')]=_[_0x893d('0x3b')](_0x492826[_0x893d('0x3c')],qs[_0x893d('0x3d')](_0x188f3a['query'][_0x893d('0x3d')]));_0x3d419d['attributes']=_0x3d419d[_0x893d('0x3e')][_0x893d('0x3f')]?_0x3d419d[_0x893d('0x3e')]:_0x492826['model'];if(!_0x188f3a[_0x893d('0x38')]['hasOwnProperty']('nolimit')){_0x3d419d['limit']=qs[_0x893d('0x21')](_0x188f3a['query'][_0x893d('0x21')]);_0x3d419d[_0x893d('0x1f')]=qs[_0x893d('0x1f')](_0x188f3a[_0x893d('0x38')][_0x893d('0x1f')]);}_0x3d419d[_0x893d('0x42')]=qs['sort'](_0x188f3a[_0x893d('0x38')]['sort']);_0x3d419d[_0x893d('0x44')]=qs[_0x893d('0x3a')](_[_0x893d('0x5c')](_0x188f3a[_0x893d('0x38')],_0x492826[_0x893d('0x3a')]));_0x3d419d['raw']=!![];if(_0x188f3a[_0x893d('0x38')][_0x893d('0x45')]){_0x3d419d[_0x893d('0x44')]=_['merge'](_0x3d419d['where'],{'$or':_['map'](_0x3d419d['attributes'],function(_0x48f917){var _0x540446={};_0x540446[_0x48f917]={'$like':'%'+_0x188f3a[_0x893d('0x38')][_0x893d('0x45')]+'%'};return _0x540446;})});}_0x3d419d=_[_0x893d('0x46')]({},_0x3d419d,_0x188f3a[_0x893d('0x47')]);return _0x17db7e[_0x893d('0x6a')](_0x3d419d);}})[_0x893d('0x29')](function(_0x548442){if(!_['isEmpty'](_0x548442)){var _0x279655=toCsv(_0x548442);var _0x517c18=Date[_0x893d('0x72')]();fs[_0x893d('0x73')](util[_0x893d('0x6e')](_0x893d('0x74'),_0x17db7e['id'],_0x517c18),_0x279655);_0x1cca42[_0x893d('0x75')]('Content-disposition',_0x893d('0x76')+util[_0x893d('0x6e')](_0x893d('0x77'),_0x17db7e['id'],_0x517c18));_0x1cca42[_0x893d('0x75')](_0x893d('0x78'),'text/csv');return _0x1cca42[_0x893d('0x79')](util['format']('/tmp/list_%d_%s.csv',_0x17db7e['id'],_0x517c18));}else{return _0x1cca42['sendStatus'](0xcc);}})[_0x893d('0x4c')](handleError(_0x1cca42,null));};exports['addCustomField']=function(_0x37cd8f,_0x285080,_0x1c18fa){var _0x258ae1;delete _0x37cd8f['body']['id'];return db[_0x893d('0x34')][_0x893d('0x7a')]({'where':{'id':_0x37cd8f[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x285080,null))[_0x893d('0x29')](function(_0x19c30f){if(_0x19c30f){return db[_0x893d('0x7b')]['transaction'](function(_0x1cf374){return db[_0x893d('0x6b')]['create'](_0x37cd8f[_0x893d('0x52')],{'transaction':_0x1cf374})[_0x893d('0x29')](function(_0x122dd5){_0x258ae1=_0x122dd5;return _0x19c30f[_0x893d('0x7c')](_0x122dd5,{'transaction':_0x1cf374});})[_0x893d('0x29')](function(){var _0x446111={'type':db['Sequelize'][_0x893d('0x7d')],'transaction':_0x1cf374};switch(_0x37cd8f[_0x893d('0x52')][_0x893d('0x36')]){case _0x893d('0x7e'):_0x446111[_0x893d('0x36')]=db[_0x893d('0x7f')]['TEXT'];break;case _0x893d('0x80'):_0x446111[_0x893d('0x36')]=db[_0x893d('0x7f')][_0x893d('0x81')];break;case _0x893d('0x82'):_0x446111[_0x893d('0x36')]=db[_0x893d('0x7f')][_0x893d('0x83')];_0x446111[_0x893d('0x84')]=![];break;default:}return db[_0x893d('0x7b')][_0x893d('0x85')]['addColumn'](_0x893d('0x86'),util[_0x893d('0x6e')](_0x893d('0x87'),_0x258ae1['id']),_0x446111);})[_0x893d('0x29')](function(){return _0x258ae1;});});}})[_0x893d('0x29')](respondWithResult(_0x285080,null))[_0x893d('0x4c')](handleError(_0x285080,null));};exports[_0x893d('0x88')]=function(_0x5cba06,_0x19097c,_0x8de926){var _0x2559c3={};var _0x18edf2={};var _0x1feee5;var _0x374e1d;return db[_0x893d('0x34')]['findOne']({'where':{'id':_0x5cba06[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x19097c,null))[_0x893d('0x29')](function(_0x509a38){if(_0x509a38){_0x1feee5=_0x509a38;_0x18edf2['model']=_[_0x893d('0x39')](db[_0x893d('0x6b')]['rawAttributes']);_0x18edf2['query']=_['keys'](_0x5cba06[_0x893d('0x38')]);_0x18edf2[_0x893d('0x3a')]=_[_0x893d('0x3b')](_0x18edf2[_0x893d('0x3c')],_0x18edf2[_0x893d('0x38')]);_0x2559c3[_0x893d('0x3e')]=_[_0x893d('0x3b')](_0x18edf2[_0x893d('0x3c')],qs[_0x893d('0x3d')](_0x5cba06[_0x893d('0x38')][_0x893d('0x3d')]));_0x2559c3[_0x893d('0x3e')]=_0x2559c3[_0x893d('0x3e')][_0x893d('0x3f')]?_0x2559c3['attributes']:_0x18edf2[_0x893d('0x3c')];_0x2559c3[_0x893d('0x42')]=qs['sort'](_0x5cba06['query'][_0x893d('0x43')]);_0x2559c3[_0x893d('0x44')]=qs[_0x893d('0x3a')](_[_0x893d('0x5c')](_0x5cba06['query'],_0x18edf2[_0x893d('0x3a')]));_0x2559c3[_0x893d('0x44')]=_['merge'](_0x2559c3[_0x893d('0x44')],{'$or':[{'ListId':_0x509a38['id']},{'ListId':null}]});if(_0x5cba06[_0x893d('0x38')][_0x893d('0x45')]){_0x2559c3[_0x893d('0x44')]=_[_0x893d('0x46')](_0x2559c3[_0x893d('0x44')],{'$or':_[_0x893d('0x33')](_0x2559c3[_0x893d('0x3e')],function(_0x589c27){var _0x7ba146={};_0x7ba146[_0x589c27]={'$like':'%'+_0x5cba06['query']['filter']+'%'};return _0x7ba146;})});}_0x2559c3=_[_0x893d('0x46')]({},_0x2559c3,_0x5cba06[_0x893d('0x47')]);return db['CmCustomField'][_0x893d('0x89')](_0x2559c3);}})[_0x893d('0x29')](respondWithResult(_0x19097c,null))[_0x893d('0x4c')](handleError(_0x19097c,null));};exports[_0x893d('0x8a')]=function(_0x144594,_0x876c08,_0x37cd6f){return db['CmList']['find']({'where':{'id':_0x144594[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x876c08,null))[_0x893d('0x29')](function(_0x48867d){if(_0x48867d){return _0x48867d[_0x893d('0x8a')](_0x144594[_0x893d('0x52')][_0x893d('0x8b')],_[_0x893d('0x64')](_0x144594[_0x893d('0x52')],[_0x893d('0x8b'),'id'])||{})[_0x893d('0x8c')](function(_0x4e3fdf){for(var _0x123280=0x0;_0x123280<_0x144594[_0x893d('0x52')][_0x893d('0x8b')][_0x893d('0x3f')];_0x123280+=0x1){socket[_0x893d('0x8d')]('userCmList:save',{'UserId':Number(_0x144594[_0x893d('0x52')][_0x893d('0x8b')][_0x123280]),'CmListId':Number(_0x144594[_0x893d('0x4e')]['id'])});}return _0x4e3fdf;});}})[_0x893d('0x29')](respondWithResult(_0x876c08,null))[_0x893d('0x4c')](handleError(_0x876c08,null));};exports[_0x893d('0x8e')]=function(_0x39be12,_0x2341a3,_0x1b0317){return db[_0x893d('0x34')][_0x893d('0x50')]({'where':{'id':_0x39be12[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0x2341a3,null))[_0x893d('0x29')](function(_0x4c6693){if(_0x4c6693){return _0x4c6693[_0x893d('0x8e')](_0x39be12[_0x893d('0x38')][_0x893d('0x8b')])[_0x893d('0x29')](function(){if(_[_0x893d('0x61')](_0x39be12[_0x893d('0x38')][_0x893d('0x8b')])){for(var _0x4221d5=0x0;_0x4221d5<_0x39be12[_0x893d('0x38')]['ids'][_0x893d('0x3f')];_0x4221d5+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x39be12[_0x893d('0x38')][_0x893d('0x8b')][_0x4221d5]),'CmListId':Number(_0x39be12[_0x893d('0x4e')]['id'])});}}else{socket[_0x893d('0x8d')](_0x893d('0x8f'),{'UserId':Number(_0x39be12[_0x893d('0x38')][_0x893d('0x8b')]),'CmListId':Number(_0x39be12['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2341a3,null))[_0x893d('0x4c')](handleError(_0x2341a3,null));};exports[_0x893d('0x90')]=function(_0x4605af,_0xd311f0,_0x182d1d){var _0x1dabf6={};var _0x1519e1={};var _0x29ecec;var _0xd77b3c;return db[_0x893d('0x34')][_0x893d('0x7a')]({'where':{'id':_0x4605af[_0x893d('0x4e')]['id']}})[_0x893d('0x29')](handleEntityNotFound(_0xd311f0,null))['then'](function(_0x2992a4){if(_0x2992a4){_0x29ecec=_0x2992a4;_0x1519e1[_0x893d('0x3c')]=_[_0x893d('0x39')](db[_0x893d('0x91')][_0x893d('0x4f')]);_0x1519e1[_0x893d('0x38')]=_[_0x893d('0x39')](_0x4605af[_0x893d('0x38')]);_0x1519e1['filters']=_[_0x893d('0x3b')](_0x1519e1[_0x893d('0x3c')],_0x1519e1[_0x893d('0x38')]);_0x1dabf6['attributes']=_['intersection'](_0x1519e1[_0x893d('0x3c')],qs[_0x893d('0x3d')](_0x4605af[_0x893d('0x38')][_0x893d('0x3d')]));_0x1dabf6[_0x893d('0x3e')]=_0x1dabf6[_0x893d('0x3e')][_0x893d('0x3f')]?_0x1dabf6[_0x893d('0x3e')]:_0x1519e1[_0x893d('0x3c')];_0x1dabf6[_0x893d('0x42')]=qs[_0x893d('0x43')](_0x4605af[_0x893d('0x38')][_0x893d('0x43')]);_0x1dabf6['where']=qs[_0x893d('0x3a')](_[_0x893d('0x5c')](_0x4605af[_0x893d('0x38')],_0x1519e1[_0x893d('0x3a')]));if(_0x4605af[_0x893d('0x38')][_0x893d('0x45')]){_0x1dabf6[_0x893d('0x44')]=_[_0x893d('0x46')](_0x1dabf6['where'],{'$or':_['map'](_0x1dabf6[_0x893d('0x3e')],function(_0x28c83b){var _0xc7a494={};_0xc7a494[_0x28c83b]={'$like':'%'+_0x4605af[_0x893d('0x38')]['filter']+'%'};return _0xc7a494;})});}_0x1dabf6=_[_0x893d('0x46')]({},_0x1dabf6,_0x4605af[_0x893d('0x47')]);return _0x29ecec['getAgents'](_0x1dabf6);}})['then'](function(_0x650d0f){if(_0x650d0f){_0xd77b3c=_0x650d0f[_0x893d('0x3f')];if(!_0x4605af['query'][_0x893d('0x40')](_0x893d('0x41'))){_0x1dabf6[_0x893d('0x21')]=qs[_0x893d('0x21')](_0x4605af[_0x893d('0x38')][_0x893d('0x21')]);_0x1dabf6[_0x893d('0x1f')]=qs['offset'](_0x4605af[_0x893d('0x38')][_0x893d('0x1f')]);}return _0x29ecec[_0x893d('0x90')](_0x1dabf6);}})['then'](function(_0x7d00eb){if(_0x7d00eb){return _0x7d00eb?{'count':_0xd77b3c,'rows':_0x7d00eb}:null;}})['then'](respondWithResult(_0xd311f0,null))['catch'](handleError(_0xd311f0,null));};
\ No newline at end of file
+var _0xf551=['update','then','get','Lists','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','options','CmList','include','findAll','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','describe','addDisposition','Disposition','getDispositions','nolimit','order','ListId','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','each','omit','success','errors','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','getContactsCsv','isEmpty','now','writeFileSync','setHeader','Content-disposition','list_%d_%s.csv','Content-type','/tmp/list_%d_%s.csv','addCustomField','findOne','sequelize','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cf_%s','findAndCountAll','emit','userCmList:save','removeAgents','userCmList:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save'];(function(_0x17a32f,_0x5a51a){var _0x15a293=function(_0x55fbd3){while(--_0x55fbd3){_0x17a32f['push'](_0x17a32f['shift']());}};_0x15a293(++_0x5a51a);}(_0xf551,0x68));var _0x1f55=function(_0x39cf3e,_0x256923){_0x39cf3e=_0x39cf3e-0x0;var _0x5b017d=_0xf551[_0x39cf3e];return _0x5b017d;};'use strict';var emlformat=require(_0x1f55('0x0'));var rimraf=require(_0x1f55('0x1'));var zipdir=require(_0x1f55('0x2'));var jsonpatch=require(_0x1f55('0x3'));var rp=require(_0x1f55('0x4'));var moment=require(_0x1f55('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1f55('0x6'));var util=require(_0x1f55('0x7'));var path=require(_0x1f55('0x8'));var sox=require(_0x1f55('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1f55('0xa'));var _=require(_0x1f55('0xb'));var squel=require('squel');var crypto=require(_0x1f55('0xc'));var jsforce=require(_0x1f55('0xd'));var deskjs=require(_0x1f55('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1f55('0xf'));var Redis=require('ioredis');var authService=require(_0x1f55('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1f55('0x11'));var hardwareService=require(_0x1f55('0x12'));var logger=require(_0x1f55('0x13'))(_0x1f55('0x14'));var utils=require(_0x1f55('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1f55('0x16'));var db=require(_0x1f55('0x17'))['db'];config[_0x1f55('0x18')]=_[_0x1f55('0x19')](config[_0x1f55('0x18')],{'host':_0x1f55('0x1a'),'port':0x18eb});var socket=require(_0x1f55('0x1b'))(new Redis(config[_0x1f55('0x18')]));require('./cmList.socket')[_0x1f55('0x1c')](socket);function respondWithStatusCode(_0x4ed072,_0x4292e7){_0x4292e7=_0x4292e7||0xcc;return function(_0x4f988d){if(_0x4f988d){return _0x4ed072[_0x1f55('0x1d')](_0x4292e7);}return _0x4ed072[_0x1f55('0x1e')](_0x4292e7)[_0x1f55('0x1f')]();};}function respondWithResult(_0x22387a,_0x49d60e){_0x49d60e=_0x49d60e||0xc8;return function(_0x2591dd){if(_0x2591dd){return _0x22387a[_0x1f55('0x1e')](_0x49d60e)[_0x1f55('0x20')](_0x2591dd);}};}function respondWithFilteredResult(_0x54e0b1,_0x2c9c9f){return function(_0x4ba422){if(_0x4ba422){var _0x3ecd0e=typeof _0x2c9c9f[_0x1f55('0x21')]==='undefined'&&typeof _0x2c9c9f[_0x1f55('0x22')]===_0x1f55('0x23');var _0x2f4ba2=_0x4ba422[_0x1f55('0x24')];var _0x18530d=_0x3ecd0e?0x0:_0x2c9c9f[_0x1f55('0x21')];var _0x50822c=_0x3ecd0e?_0x4ba422['count']:_0x2c9c9f[_0x1f55('0x21')]+_0x2c9c9f[_0x1f55('0x22')];var _0x4881c8;if(_0x50822c>=_0x2f4ba2){_0x50822c=_0x2f4ba2;_0x4881c8=0xc8;}else{_0x4881c8=0xce;}_0x54e0b1[_0x1f55('0x1e')](_0x4881c8);return _0x54e0b1[_0x1f55('0x25')](_0x1f55('0x26'),_0x18530d+'-'+_0x50822c+'/'+_0x2f4ba2)[_0x1f55('0x20')](_0x4ba422);}return null;};}function patchUpdates(_0x12e800){return function(_0x2c2e32){try{jsonpatch[_0x1f55('0x27')](_0x2c2e32,_0x12e800,!![]);}catch(_0x5b7a86){return BPromise[_0x1f55('0x28')](_0x5b7a86);}return _0x2c2e32[_0x1f55('0x29')]();};}function saveUpdates(_0x4f5628,_0x4941c7){return function(_0x4a8506){if(_0x4a8506){return _0x4a8506[_0x1f55('0x2a')](_0x4f5628)[_0x1f55('0x2b')](function(_0x1ffadb){return _0x1ffadb;});}return null;};}function removeEntity(_0x30438a,_0x25a71c){return function(_0x1821ad){if(_0x1821ad){return _0x1821ad['destroy']()[_0x1f55('0x2b')](function(){var _0x4ab45b=_0x1821ad[_0x1f55('0x2c')]({'plain':!![]});var _0x2f4992=_0x1f55('0x2d');return db[_0x1f55('0x2e')]['destroy']({'where':{'type':_0x2f4992,'resourceId':_0x4ab45b['id']}})[_0x1f55('0x2b')](function(){return _0x1821ad;});})[_0x1f55('0x2b')](function(){_0x30438a[_0x1f55('0x1e')](0xcc)[_0x1f55('0x1f')]();});}};}function handleEntityNotFound(_0x1fc5a6,_0x3ec528){return function(_0x17f698){if(!_0x17f698){_0x1fc5a6[_0x1f55('0x1d')](0x194);}return _0x17f698;};}function handleError(_0x306604,_0x4140ab){_0x4140ab=_0x4140ab||0x1f4;return function(_0x2a48bc){logger['error'](_0x2a48bc[_0x1f55('0x2f')]);if(_0x2a48bc[_0x1f55('0x30')]){delete _0x2a48bc[_0x1f55('0x30')];}_0x306604[_0x1f55('0x1e')](_0x4140ab)[_0x1f55('0x31')](_0x2a48bc);};}exports[_0x1f55('0x32')]=function(_0x12ad9f,_0xf8e9a7){var _0xd845e7={},_0x519515={},_0x38e93a={'count':0x0,'rows':[]};var _0x4495fb=_[_0x1f55('0x33')](db['CmList'][_0x1f55('0x34')],function(_0x245dcb){return{'name':_0x245dcb[_0x1f55('0x35')],'type':_0x245dcb[_0x1f55('0x36')][_0x1f55('0x37')]};});_0x519515[_0x1f55('0x38')]=_[_0x1f55('0x33')](_0x4495fb,'name');_0x519515[_0x1f55('0x39')]=_[_0x1f55('0x3a')](_0x12ad9f[_0x1f55('0x39')]);_0x519515[_0x1f55('0x3b')]=_[_0x1f55('0x3c')](_0x519515[_0x1f55('0x38')],_0x519515[_0x1f55('0x39')]);_0xd845e7[_0x1f55('0x3d')]=_['intersection'](_0x519515[_0x1f55('0x38')],qs['fields'](_0x12ad9f[_0x1f55('0x39')][_0x1f55('0x3e')]));_0xd845e7['attributes']=_0xd845e7[_0x1f55('0x3d')][_0x1f55('0x3f')]?_0xd845e7[_0x1f55('0x3d')]:_0x519515[_0x1f55('0x38')];if(!_0x12ad9f[_0x1f55('0x39')][_0x1f55('0x40')]('nolimit')){_0xd845e7['limit']=qs['limit'](_0x12ad9f[_0x1f55('0x39')][_0x1f55('0x22')]);_0xd845e7['offset']=qs['offset'](_0x12ad9f[_0x1f55('0x39')]['offset']);}_0xd845e7['order']=qs[_0x1f55('0x41')](_0x12ad9f[_0x1f55('0x39')][_0x1f55('0x41')]);_0xd845e7['where']=qs['filters'](_[_0x1f55('0x42')](_0x12ad9f[_0x1f55('0x39')],_0x519515[_0x1f55('0x3b')]),_0x4495fb);if(_0x12ad9f[_0x1f55('0x39')][_0x1f55('0x43')]){_0xd845e7[_0x1f55('0x44')]=_['merge'](_0xd845e7[_0x1f55('0x44')],{'$or':_[_0x1f55('0x33')](_0x4495fb,function(_0x502b72){if(_0x502b72[_0x1f55('0x36')]!=='VIRTUAL'){var _0x52c058={};_0x52c058[_0x502b72[_0x1f55('0x30')]]={'$like':'%'+_0x12ad9f['query']['filter']+'%'};return _0x52c058;}})});}_0xd845e7=_[_0x1f55('0x45')]({},_0xd845e7,_0x12ad9f[_0x1f55('0x46')]);var _0x48754b={'where':_0xd845e7[_0x1f55('0x44')]};return db[_0x1f55('0x47')][_0x1f55('0x24')](_0x48754b)[_0x1f55('0x2b')](function(_0x2628f7){_0x38e93a['count']=_0x2628f7;if(_0x12ad9f[_0x1f55('0x39')]['includeAll']){_0xd845e7[_0x1f55('0x48')]=[{'all':!![]}];}return db[_0x1f55('0x47')][_0x1f55('0x49')](_0xd845e7);})['then'](function(_0x3b431f){_0x38e93a[_0x1f55('0x4a')]=_0x3b431f;return _0x38e93a;})[_0x1f55('0x2b')](respondWithFilteredResult(_0xf8e9a7,_0xd845e7))[_0x1f55('0x4b')](handleError(_0xf8e9a7,null));};exports[_0x1f55('0x4c')]=function(_0x21afa8,_0x50fdc0){var _0x3a6274={'raw':![],'where':{'id':_0x21afa8['params']['id']}},_0x2efaa0={};_0x2efaa0[_0x1f55('0x38')]=_['keys'](db[_0x1f55('0x47')]['rawAttributes']);_0x2efaa0['query']=_[_0x1f55('0x3a')](_0x21afa8[_0x1f55('0x39')]);_0x2efaa0[_0x1f55('0x3b')]=_[_0x1f55('0x3c')](_0x2efaa0['model'],_0x2efaa0[_0x1f55('0x39')]);_0x3a6274[_0x1f55('0x3d')]=_['intersection'](_0x2efaa0[_0x1f55('0x38')],qs[_0x1f55('0x3e')](_0x21afa8[_0x1f55('0x39')]['fields']));_0x3a6274[_0x1f55('0x3d')]=_0x3a6274['attributes'][_0x1f55('0x3f')]?_0x3a6274[_0x1f55('0x3d')]:_0x2efaa0[_0x1f55('0x38')];if(_0x21afa8[_0x1f55('0x39')][_0x1f55('0x4d')]){_0x3a6274[_0x1f55('0x48')]=[{'all':!![]}];}_0x3a6274=_[_0x1f55('0x45')]({},_0x3a6274,_0x21afa8[_0x1f55('0x46')]);return db[_0x1f55('0x47')][_0x1f55('0x4e')](_0x3a6274)[_0x1f55('0x2b')](handleEntityNotFound(_0x50fdc0,null))[_0x1f55('0x2b')](respondWithResult(_0x50fdc0,null))[_0x1f55('0x4b')](handleError(_0x50fdc0,null));};exports['create']=function(_0x28522e,_0x124a41){return db[_0x1f55('0x47')][_0x1f55('0x4f')](_0x28522e[_0x1f55('0x50')],{})[_0x1f55('0x2b')](function(_0x57d315){var _0x419e1f=_0x28522e[_0x1f55('0x51')]['get']({'plain':!![]});if(!_0x419e1f)throw new Error(_0x1f55('0x52'));if(_0x419e1f[_0x1f55('0x53')]===_0x1f55('0x51')){var _0x5762fd=_0x57d315['get']({'plain':!![]});var _0x4bb74b=_0x1f55('0x2d');return db['UserProfileSection'][_0x1f55('0x4e')]({'where':{'name':_0x4bb74b,'userProfileId':_0x419e1f[_0x1f55('0x54')]},'raw':!![]})[_0x1f55('0x2b')](function(_0x27bb96){if(_0x27bb96&&_0x27bb96[_0x1f55('0x55')]===0x0){return db[_0x1f55('0x2e')][_0x1f55('0x4f')]({'name':_0x5762fd[_0x1f55('0x30')],'resourceId':_0x5762fd['id'],'type':_0x27bb96[_0x1f55('0x30')],'sectionId':_0x27bb96['id']},{})[_0x1f55('0x2b')](function(){return _0x57d315;});}else{return _0x57d315;}})[_0x1f55('0x4b')](function(_0x405d5d){logger[_0x1f55('0x56')](_0x1f55('0x57'),_0x405d5d);throw _0x405d5d;});}return _0x57d315;})[_0x1f55('0x2b')](respondWithResult(_0x124a41,0xc9))[_0x1f55('0x4b')](handleError(_0x124a41,null));};exports[_0x1f55('0x2a')]=function(_0x54615b,_0x114cfd){if(_0x54615b['body']['id']){delete _0x54615b[_0x1f55('0x50')]['id'];}return db[_0x1f55('0x47')]['find']({'where':{'id':_0x54615b[_0x1f55('0x58')]['id']}})[_0x1f55('0x2b')](handleEntityNotFound(_0x114cfd,null))[_0x1f55('0x2b')](saveUpdates(_0x54615b[_0x1f55('0x50')],null))[_0x1f55('0x2b')](respondWithResult(_0x114cfd,null))[_0x1f55('0x4b')](handleError(_0x114cfd,null));};exports[_0x1f55('0x59')]=function(_0x181901,_0x370d9d){return db[_0x1f55('0x47')][_0x1f55('0x4e')]({'where':{'id':_0x181901[_0x1f55('0x58')]['id']}})['then'](handleEntityNotFound(_0x370d9d,null))[_0x1f55('0x2b')](removeEntity(_0x370d9d,null))[_0x1f55('0x4b')](handleError(_0x370d9d,null));};exports[_0x1f55('0x5a')]=function(_0x1cd21c,_0x53823a){return db['CmList']['describe']()[_0x1f55('0x2b')](respondWithResult(_0x53823a,null))[_0x1f55('0x4b')](handleError(_0x53823a,null));};exports[_0x1f55('0x5b')]=function(_0x1ea1a8,_0x5877b6,_0x262c51){if(_0x1ea1a8['body']['id']){delete _0x1ea1a8[_0x1f55('0x50')]['id'];}return db[_0x1f55('0x47')]['find']({'where':{'id':_0x1ea1a8[_0x1f55('0x58')]['id']}})[_0x1f55('0x2b')](handleEntityNotFound(_0x5877b6,null))[_0x1f55('0x2b')](function(_0x556177){if(_0x556177){_0x1ea1a8['body']['ListId']=_0x556177['id'];return db[_0x1f55('0x5c')][_0x1f55('0x4f')](_0x1ea1a8[_0x1f55('0x50')]);}})['then'](respondWithResult(_0x5877b6,null))[_0x1f55('0x4b')](handleError(_0x5877b6,null));};exports[_0x1f55('0x5d')]=function(_0x31ba66,_0x1565fa,_0x36f082){var _0x580da6={'raw':![],'where':{}};var _0x4330f2={};var _0x1b043b={'count':0x0,'rows':[]};return db[_0x1f55('0x47')]['findOne']({'where':{'id':_0x31ba66['params']['id']}})[_0x1f55('0x2b')](handleEntityNotFound(_0x1565fa,null))[_0x1f55('0x2b')](function(_0x258e43){if(_0x258e43){_0x4330f2[_0x1f55('0x38')]=_[_0x1f55('0x3a')](db[_0x1f55('0x5c')]['rawAttributes']);_0x4330f2[_0x1f55('0x39')]=_['keys'](_0x31ba66['query']);_0x4330f2['filters']=_[_0x1f55('0x3c')](_0x4330f2['model'],_0x4330f2['query']);_0x580da6['attributes']=_[_0x1f55('0x3c')](_0x4330f2[_0x1f55('0x38')],qs[_0x1f55('0x3e')](_0x31ba66[_0x1f55('0x39')][_0x1f55('0x3e')]));_0x580da6[_0x1f55('0x3d')]=_0x580da6[_0x1f55('0x3d')][_0x1f55('0x3f')]?_0x580da6[_0x1f55('0x3d')]:_0x4330f2[_0x1f55('0x38')];if(!_0x31ba66[_0x1f55('0x39')][_0x1f55('0x40')](_0x1f55('0x5e'))){_0x580da6[_0x1f55('0x22')]=qs[_0x1f55('0x22')](_0x31ba66[_0x1f55('0x39')][_0x1f55('0x22')]);_0x580da6[_0x1f55('0x21')]=qs[_0x1f55('0x21')](_0x31ba66[_0x1f55('0x39')][_0x1f55('0x21')]);}_0x580da6[_0x1f55('0x5f')]=qs[_0x1f55('0x41')](_0x31ba66['query'][_0x1f55('0x41')]);_0x580da6[_0x1f55('0x44')]=qs[_0x1f55('0x3b')](_[_0x1f55('0x42')](_0x31ba66[_0x1f55('0x39')],_0x4330f2[_0x1f55('0x3b')]));_0x580da6[_0x1f55('0x44')][_0x1f55('0x60')]=_0x258e43['id'];if(_0x31ba66[_0x1f55('0x39')][_0x1f55('0x43')]){_0x580da6['where']=_[_0x1f55('0x45')](_0x580da6[_0x1f55('0x44')],{'$or':_[_0x1f55('0x33')](_0x580da6[_0x1f55('0x3d')],function(_0x3428d1){var _0x16b0fa={};_0x16b0fa[_0x3428d1]={'$like':'%'+_0x31ba66['query'][_0x1f55('0x43')]+'%'};return _0x16b0fa;})});}_0x580da6=_[_0x1f55('0x45')]({},_0x580da6,_0x31ba66[_0x1f55('0x46')]);return db[_0x1f55('0x5c')][_0x1f55('0x24')]({'where':_0x580da6['where']})[_0x1f55('0x2b')](function(_0x27e6bb){_0x1b043b[_0x1f55('0x24')]=_0x27e6bb;if(_0x31ba66[_0x1f55('0x39')][_0x1f55('0x4d')]){_0x580da6[_0x1f55('0x48')]=[{'all':!![]}];}return db[_0x1f55('0x5c')][_0x1f55('0x49')](_0x580da6);})[_0x1f55('0x2b')](function(_0xfb69dd){_0x1b043b[_0x1f55('0x4a')]=_0xfb69dd;return _0x1b043b;});}})[_0x1f55('0x2b')](respondWithFilteredResult(_0x1565fa,_0x580da6))[_0x1f55('0x4b')](handleError(_0x1565fa,null));};exports[_0x1f55('0x61')]=function(_0x41fe18,_0x20df2b,_0x2f36eb){return db['CmList'][_0x1f55('0x4e')]({'where':{'id':_0x41fe18['params']['id']}})['then'](handleEntityNotFound(_0x20df2b,null))[_0x1f55('0x2b')](function(_0x24a0bc){if(_0x24a0bc){return _0x24a0bc['removeDispositions'](_0x41fe18['query'][_0x1f55('0x62')]);}})[_0x1f55('0x2b')](respondWithStatusCode(_0x20df2b,null))[_0x1f55('0x4b')](handleError(_0x20df2b,null));};exports[_0x1f55('0x63')]=function(_0x550fd5,_0x1a72f9,_0x299015){return db[_0x1f55('0x47')][_0x1f55('0x4e')]({'where':{'id':_0x550fd5[_0x1f55('0x58')]['id']}})['then'](handleEntityNotFound(_0x1a72f9,null))['then'](function(_0x1e37eb){if(_0x1e37eb){var _0x51878e=[];var _0x51e3e3={'success':[],'errors':[]};return db[_0x1f55('0x64')]['describe']()[_0x1f55('0x2b')](function(_0x1a0b52){if(_0x550fd5['body'][_0x1f55('0x65')]&&_[_0x1f55('0x66')](_0x550fd5[_0x1f55('0x50')]['tags'])){if(_0x550fd5[_0x1f55('0x50')][_0x1f55('0x65')][_0x1f55('0x3f')]){_0x550fd5['body']['tags']=_0x550fd5[_0x1f55('0x50')][_0x1f55('0x65')][_0x1f55('0x67')](';')+';';}else{_0x550fd5[_0x1f55('0x50')][_0x1f55('0x65')]=null;}}else{_0x550fd5['body'][_0x1f55('0x65')]=null;}if(_0x550fd5['body']&&_[_0x1f55('0x66')](_0x550fd5['body'])){for(var _0x2b2334=0x0;_0x2b2334<_0x550fd5[_0x1f55('0x50')][_0x1f55('0x3f')];_0x2b2334+=0x1){_0x550fd5[_0x1f55('0x50')][_0x2b2334]['ListId']=_0x550fd5[_0x1f55('0x58')]['id'];_0x51878e[_0x1f55('0x68')](_0x550fd5['body'][_0x2b2334]);}return BPromise[_0x1f55('0x69')](_0x51878e,function(_0x581793){return db[_0x1f55('0x64')]['create'](_[_0x1f55('0x6a')](_0x581793,[_0x1f55('0x62'),'id'])||{},{'fields':_[_0x1f55('0x3a')](_0x1a0b52),'raw':!![]})[_0x1f55('0x2b')](function(_0x1fab11){_0x51e3e3[_0x1f55('0x6b')][_0x1f55('0x68')](_0x1fab11['dataValues']);})[_0x1f55('0x4b')](function(_0x19445){_0x51e3e3[_0x1f55('0x6c')][_0x1f55('0x68')]({'data':_0x581793,'error':_0x19445['message']});});})[_0x1f55('0x2b')](function(_0x25799f){return _0x51e3e3;})[_0x1f55('0x4b')](function(_0x728f3d){return _0x728f3d;});}else{_0x1a72f9[_0x1f55('0x1e')](0x190)[_0x1f55('0x20')]({'message':_0x1f55('0x6d')});}});}})[_0x1f55('0x2b')](respondWithResult(_0x1a72f9,null))['catch'](handleError(_0x1a72f9,null));};exports[_0x1f55('0x6e')]=function(_0x34d114,_0x1b35c5,_0x4c74e8){var _0x305299;return db[_0x1f55('0x47')]['find']({'where':{'id':_0x34d114[_0x1f55('0x58')]['id']},'include':[{'model':db[_0x1f55('0x6f')],'as':_0x1f55('0x70')}]})[_0x1f55('0x2b')](handleEntityNotFound(_0x1b35c5,null))['then'](function(_0x3d7a9f){if(_0x3d7a9f){_0x305299=_0x3d7a9f;return db[_0x1f55('0x64')][_0x1f55('0x34')];}})[_0x1f55('0x2b')](function(_0x359b5d){if(_0x359b5d){var _0x597001={};var _0xd8d742={};_0xd8d742[_0x1f55('0x38')]=_[_0x1f55('0x71')](_[_0x1f55('0x3a')](_0x359b5d),_[_0x1f55('0x33')](_0x305299[_0x1f55('0x70')],function(_0x208669){return util[_0x1f55('0x72')](_0x1f55('0x73'),_0x208669['id']);}));_0xd8d742[_0x1f55('0x39')]=_[_0x1f55('0x3a')](_0x34d114[_0x1f55('0x39')]);_0xd8d742[_0x1f55('0x3b')]=_[_0x1f55('0x3c')](_0xd8d742[_0x1f55('0x38')],_0xd8d742[_0x1f55('0x39')]);_0x597001['attributes']=_[_0x1f55('0x3c')](_0xd8d742[_0x1f55('0x38')],qs[_0x1f55('0x3e')](_0x34d114['query'][_0x1f55('0x3e')]));_0x597001[_0x1f55('0x3d')]=_0x597001['attributes'][_0x1f55('0x3f')]?_0x597001['attributes']:_0xd8d742['model'];if(!_0x34d114[_0x1f55('0x39')][_0x1f55('0x40')](_0x1f55('0x5e'))){_0x597001[_0x1f55('0x22')]=qs[_0x1f55('0x22')](_0x34d114['query'][_0x1f55('0x22')]);_0x597001[_0x1f55('0x21')]=qs[_0x1f55('0x21')](_0x34d114[_0x1f55('0x39')][_0x1f55('0x21')]);}_0x597001[_0x1f55('0x5f')]=qs[_0x1f55('0x41')](_0x34d114[_0x1f55('0x39')]['sort']);_0x597001[_0x1f55('0x44')]=qs[_0x1f55('0x3b')](_[_0x1f55('0x42')](_0x34d114['query'],_0xd8d742[_0x1f55('0x3b')]));_0x597001[_0x1f55('0x74')]=!![];if(_0x34d114[_0x1f55('0x39')]['filter']){_0x597001[_0x1f55('0x44')]=_[_0x1f55('0x45')](_0x597001[_0x1f55('0x44')],{'$or':_['map'](_0x597001[_0x1f55('0x3d')],function(_0x225e9d){var _0x50e408={};_0x50e408[_0x225e9d]={'$like':'%'+_0x34d114['query']['filter']+'%'};return _0x50e408;})});}_0x597001=_['merge']({},_0x597001,_0x34d114['options']);return _0x305299['getContacts'](_0x597001);}})[_0x1f55('0x2b')](respondWithResult(_0x1b35c5,null))['catch'](handleError(_0x1b35c5,null));};exports[_0x1f55('0x75')]=function(_0x5901da,_0x51c364,_0x11cf53){var _0x2ab8dc;return db[_0x1f55('0x47')][_0x1f55('0x4e')]({'where':{'id':_0x5901da[_0x1f55('0x58')]['id']},'include':[{'model':db[_0x1f55('0x6f')],'as':_0x1f55('0x70')}]})[_0x1f55('0x2b')](handleEntityNotFound(_0x51c364,null))[_0x1f55('0x2b')](function(_0x432075){if(_0x432075){_0x2ab8dc=_0x432075;return db[_0x1f55('0x64')]['rawAttributes'];}})[_0x1f55('0x2b')](function(_0xbc5d14){if(_0xbc5d14){var _0x1e2087={};var _0x2ac49c={};_0x2ac49c['model']=_[_0x1f55('0x71')](_[_0x1f55('0x3a')](_0xbc5d14),_[_0x1f55('0x33')](_0x2ab8dc[_0x1f55('0x70')],function(_0x136cff){return util[_0x1f55('0x72')]('cf_%d',_0x136cff['id']);}));_0x2ac49c['query']=_['keys'](_0x5901da[_0x1f55('0x39')]);_0x2ac49c[_0x1f55('0x3b')]=_[_0x1f55('0x3c')](_0x2ac49c[_0x1f55('0x38')],_0x2ac49c[_0x1f55('0x39')]);_0x1e2087[_0x1f55('0x3d')]=_[_0x1f55('0x3c')](_0x2ac49c[_0x1f55('0x38')],qs['fields'](_0x5901da[_0x1f55('0x39')][_0x1f55('0x3e')]));_0x1e2087[_0x1f55('0x3d')]=_0x1e2087[_0x1f55('0x3d')][_0x1f55('0x3f')]?_0x1e2087[_0x1f55('0x3d')]:_0x2ac49c['model'];if(!_0x5901da[_0x1f55('0x39')]['hasOwnProperty'](_0x1f55('0x5e'))){_0x1e2087[_0x1f55('0x22')]=qs['limit'](_0x5901da['query'][_0x1f55('0x22')]);_0x1e2087[_0x1f55('0x21')]=qs[_0x1f55('0x21')](_0x5901da['query']['offset']);}_0x1e2087[_0x1f55('0x5f')]=qs['sort'](_0x5901da[_0x1f55('0x39')][_0x1f55('0x41')]);_0x1e2087['where']=qs[_0x1f55('0x3b')](_[_0x1f55('0x42')](_0x5901da[_0x1f55('0x39')],_0x2ac49c[_0x1f55('0x3b')]));_0x1e2087[_0x1f55('0x74')]=!![];if(_0x5901da['query'][_0x1f55('0x43')]){_0x1e2087[_0x1f55('0x44')]=_[_0x1f55('0x45')](_0x1e2087['where'],{'$or':_[_0x1f55('0x33')](_0x1e2087['attributes'],function(_0x5c7169){var _0x129eaa={};_0x129eaa[_0x5c7169]={'$like':'%'+_0x5901da['query'][_0x1f55('0x43')]+'%'};return _0x129eaa;})});}_0x1e2087=_[_0x1f55('0x45')]({},_0x1e2087,_0x5901da[_0x1f55('0x46')]);return _0x2ab8dc[_0x1f55('0x6e')](_0x1e2087);}})[_0x1f55('0x2b')](function(_0x5dc811){if(!_[_0x1f55('0x76')](_0x5dc811)){var _0x31cebc=toCsv(_0x5dc811);var _0x1d2d86=Date[_0x1f55('0x77')]();fs[_0x1f55('0x78')](util[_0x1f55('0x72')]('/tmp/list_%d_%s.csv',_0x2ab8dc['id'],_0x1d2d86),_0x31cebc);_0x51c364[_0x1f55('0x79')](_0x1f55('0x7a'),'attachment;\x20filename='+util[_0x1f55('0x72')](_0x1f55('0x7b'),_0x2ab8dc['id'],_0x1d2d86));_0x51c364['setHeader'](_0x1f55('0x7c'),'text/csv');return _0x51c364['download'](util[_0x1f55('0x72')](_0x1f55('0x7d'),_0x2ab8dc['id'],_0x1d2d86));}else{return _0x51c364[_0x1f55('0x1d')](0xcc);}})['catch'](handleError(_0x51c364,null));};exports[_0x1f55('0x7e')]=function(_0x9b9cfd,_0xaf4534,_0x5321fd){var _0x17526f;delete _0x9b9cfd[_0x1f55('0x50')]['id'];return db[_0x1f55('0x47')][_0x1f55('0x7f')]({'where':{'id':_0x9b9cfd[_0x1f55('0x58')]['id']}})[_0x1f55('0x2b')](handleEntityNotFound(_0xaf4534,null))[_0x1f55('0x2b')](function(_0x221da1){if(_0x221da1){return db[_0x1f55('0x80')]['transaction'](function(_0x236a05){return db[_0x1f55('0x6f')]['create'](_0x9b9cfd[_0x1f55('0x50')],{'transaction':_0x236a05})[_0x1f55('0x2b')](function(_0x5841c1){_0x17526f=_0x5841c1;return _0x221da1[_0x1f55('0x81')](_0x5841c1,{'transaction':_0x236a05});})[_0x1f55('0x2b')](function(){var _0x42d4ca={'type':db[_0x1f55('0x82')][_0x1f55('0x83')],'transaction':_0x236a05};switch(_0x9b9cfd[_0x1f55('0x50')]['type']){case'text':_0x42d4ca[_0x1f55('0x36')]=db[_0x1f55('0x82')]['TEXT'];break;case _0x1f55('0x84'):_0x42d4ca[_0x1f55('0x36')]=db[_0x1f55('0x82')][_0x1f55('0x85')];break;case _0x1f55('0x86'):_0x42d4ca[_0x1f55('0x36')]=db[_0x1f55('0x82')][_0x1f55('0x87')];_0x42d4ca[_0x1f55('0x88')]=![];break;default:}return db['sequelize'][_0x1f55('0x89')]['addColumn']('cm_contacts',util[_0x1f55('0x72')](_0x1f55('0x8a'),_0x17526f['id']),_0x42d4ca);})[_0x1f55('0x2b')](function(){return _0x17526f;});});}})[_0x1f55('0x2b')](respondWithResult(_0xaf4534,null))[_0x1f55('0x4b')](handleError(_0xaf4534,null));};exports['getCustomFields']=function(_0x3e6fa4,_0x20f3b3,_0x433e99){var _0xb491e6={};var _0x14b2bf={};var _0x7fe022;var _0x74826;return db[_0x1f55('0x47')][_0x1f55('0x7f')]({'where':{'id':_0x3e6fa4[_0x1f55('0x58')]['id']}})['then'](handleEntityNotFound(_0x20f3b3,null))['then'](function(_0x4174f3){if(_0x4174f3){_0x7fe022=_0x4174f3;_0x14b2bf[_0x1f55('0x38')]=_[_0x1f55('0x3a')](db[_0x1f55('0x6f')][_0x1f55('0x34')]);_0x14b2bf[_0x1f55('0x39')]=_[_0x1f55('0x3a')](_0x3e6fa4['query']);_0x14b2bf['filters']=_[_0x1f55('0x3c')](_0x14b2bf[_0x1f55('0x38')],_0x14b2bf[_0x1f55('0x39')]);_0xb491e6[_0x1f55('0x3d')]=_['intersection'](_0x14b2bf['model'],qs[_0x1f55('0x3e')](_0x3e6fa4[_0x1f55('0x39')][_0x1f55('0x3e')]));_0xb491e6['attributes']=_0xb491e6[_0x1f55('0x3d')][_0x1f55('0x3f')]?_0xb491e6['attributes']:_0x14b2bf[_0x1f55('0x38')];_0xb491e6['order']=qs[_0x1f55('0x41')](_0x3e6fa4['query'][_0x1f55('0x41')]);_0xb491e6[_0x1f55('0x44')]=qs[_0x1f55('0x3b')](_[_0x1f55('0x42')](_0x3e6fa4['query'],_0x14b2bf[_0x1f55('0x3b')]));_0xb491e6[_0x1f55('0x44')]=_['merge'](_0xb491e6[_0x1f55('0x44')],{'$or':[{'ListId':_0x4174f3['id']},{'ListId':null}]});if(_0x3e6fa4['query'][_0x1f55('0x43')]){_0xb491e6[_0x1f55('0x44')]=_[_0x1f55('0x45')](_0xb491e6[_0x1f55('0x44')],{'$or':_[_0x1f55('0x33')](_0xb491e6[_0x1f55('0x3d')],function(_0x5cb8a7){var _0x566b82={};_0x566b82[_0x5cb8a7]={'$like':'%'+_0x3e6fa4[_0x1f55('0x39')][_0x1f55('0x43')]+'%'};return _0x566b82;})});}_0xb491e6=_[_0x1f55('0x45')]({},_0xb491e6,_0x3e6fa4['options']);return db['CmCustomField'][_0x1f55('0x8b')](_0xb491e6);}})['then'](respondWithResult(_0x20f3b3,null))[_0x1f55('0x4b')](handleError(_0x20f3b3,null));};exports['addAgents']=function(_0x112e67,_0x1ae3b9,_0x46c33c){return db[_0x1f55('0x47')][_0x1f55('0x4e')]({'where':{'id':_0x112e67[_0x1f55('0x58')]['id']}})[_0x1f55('0x2b')](handleEntityNotFound(_0x1ae3b9,null))[_0x1f55('0x2b')](function(_0x20c3a2){if(_0x20c3a2){return _0x20c3a2['addAgents'](_0x112e67[_0x1f55('0x50')][_0x1f55('0x62')],_[_0x1f55('0x6a')](_0x112e67[_0x1f55('0x50')],[_0x1f55('0x62'),'id'])||{})['spread'](function(_0x27fb16){for(var _0x35483a=0x0;_0x35483a<_0x112e67['body'][_0x1f55('0x62')]['length'];_0x35483a+=0x1){socket[_0x1f55('0x8c')](_0x1f55('0x8d'),{'UserId':Number(_0x112e67[_0x1f55('0x50')][_0x1f55('0x62')][_0x35483a]),'CmListId':Number(_0x112e67[_0x1f55('0x58')]['id'])});}return _0x27fb16;});}})['then'](respondWithResult(_0x1ae3b9,null))[_0x1f55('0x4b')](handleError(_0x1ae3b9,null));};exports['removeAgents']=function(_0x42c4cc,_0xab899e,_0x56526a){return db[_0x1f55('0x47')][_0x1f55('0x4e')]({'where':{'id':_0x42c4cc[_0x1f55('0x58')]['id']}})['then'](handleEntityNotFound(_0xab899e,null))['then'](function(_0x1d9adc){if(_0x1d9adc){return _0x1d9adc[_0x1f55('0x8e')](_0x42c4cc['query'][_0x1f55('0x62')])['then'](function(){if(_[_0x1f55('0x66')](_0x42c4cc['query'][_0x1f55('0x62')])){for(var _0x355b85=0x0;_0x355b85<_0x42c4cc[_0x1f55('0x39')][_0x1f55('0x62')][_0x1f55('0x3f')];_0x355b85+=0x1){socket[_0x1f55('0x8c')](_0x1f55('0x8f'),{'UserId':Number(_0x42c4cc[_0x1f55('0x39')][_0x1f55('0x62')][_0x355b85]),'CmListId':Number(_0x42c4cc[_0x1f55('0x58')]['id'])});}}else{socket[_0x1f55('0x8c')]('userCmList:remove',{'UserId':Number(_0x42c4cc[_0x1f55('0x39')][_0x1f55('0x62')]),'CmListId':Number(_0x42c4cc['params']['id'])});}});}})[_0x1f55('0x2b')](respondWithStatusCode(_0xab899e,null))[_0x1f55('0x4b')](handleError(_0xab899e,null));};exports['getAgents']=function(_0x511f76,_0x8be0f8,_0x2dc13d){var _0x1c59f0={};var _0x22ce84={};var _0x3d1e81;var _0x3f50cb;return db['CmList'][_0x1f55('0x7f')]({'where':{'id':_0x511f76[_0x1f55('0x58')]['id']}})['then'](handleEntityNotFound(_0x8be0f8,null))['then'](function(_0x2711f8){if(_0x2711f8){_0x3d1e81=_0x2711f8;_0x22ce84[_0x1f55('0x38')]=_[_0x1f55('0x3a')](db[_0x1f55('0x90')]['rawAttributes']);_0x22ce84[_0x1f55('0x39')]=_['keys'](_0x511f76[_0x1f55('0x39')]);_0x22ce84[_0x1f55('0x3b')]=_[_0x1f55('0x3c')](_0x22ce84[_0x1f55('0x38')],_0x22ce84[_0x1f55('0x39')]);_0x1c59f0[_0x1f55('0x3d')]=_['intersection'](_0x22ce84['model'],qs[_0x1f55('0x3e')](_0x511f76['query'][_0x1f55('0x3e')]));_0x1c59f0['attributes']=_0x1c59f0['attributes'][_0x1f55('0x3f')]?_0x1c59f0[_0x1f55('0x3d')]:_0x22ce84['model'];_0x1c59f0['order']=qs['sort'](_0x511f76[_0x1f55('0x39')][_0x1f55('0x41')]);_0x1c59f0[_0x1f55('0x44')]=qs[_0x1f55('0x3b')](_[_0x1f55('0x42')](_0x511f76[_0x1f55('0x39')],_0x22ce84[_0x1f55('0x3b')]));if(_0x511f76[_0x1f55('0x39')][_0x1f55('0x43')]){_0x1c59f0[_0x1f55('0x44')]=_[_0x1f55('0x45')](_0x1c59f0[_0x1f55('0x44')],{'$or':_['map'](_0x1c59f0[_0x1f55('0x3d')],function(_0x296e32){var _0x459470={};_0x459470[_0x296e32]={'$like':'%'+_0x511f76[_0x1f55('0x39')]['filter']+'%'};return _0x459470;})});}_0x1c59f0=_[_0x1f55('0x45')]({},_0x1c59f0,_0x511f76['options']);return _0x3d1e81[_0x1f55('0x91')](_0x1c59f0);}})[_0x1f55('0x2b')](function(_0x9da0c){if(_0x9da0c){_0x3f50cb=_0x9da0c[_0x1f55('0x3f')];if(!_0x511f76['query'][_0x1f55('0x40')](_0x1f55('0x5e'))){_0x1c59f0[_0x1f55('0x22')]=qs[_0x1f55('0x22')](_0x511f76[_0x1f55('0x39')]['limit']);_0x1c59f0[_0x1f55('0x21')]=qs[_0x1f55('0x21')](_0x511f76[_0x1f55('0x39')]['offset']);}return _0x3d1e81[_0x1f55('0x91')](_0x1c59f0);}})[_0x1f55('0x2b')](function(_0x5559f0){if(_0x5559f0){return _0x5559f0?{'count':_0x3f50cb,'rows':_0x5559f0}:null;}})[_0x1f55('0x2b')](respondWithResult(_0x8be0f8,null))[_0x1f55('0x4b')](handleError(_0x8be0f8,null));};
\ No newline at end of file
index c172afb..7ab23b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook'];(function(_0x725a4c,_0x102507){var _0x37b2cc=function(_0x505fc9){while(--_0x505fc9){_0x725a4c['push'](_0x725a4c['shift']());}};_0x37b2cc(++_0x102507);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4605dc,_0x3f7ae5){_0x4605dc=_0x4605dc-0x0;var _0x5d3e81=_0x5fc3[_0x4605dc];return _0x5d3e81;};'use strict';var EventEmitter=require(_0x35fc('0x0'));var CmList=require(_0x35fc('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0x35fc('0x2')](0x0);var events={'afterCreate':_0x35fc('0x3'),'afterUpdate':_0x35fc('0x4'),'afterDestroy':_0x35fc('0x5')};function emitEvent(_0xb4f9ce){return function(_0x5e75e6,_0x2d1404,_0x1d5fec){CmListEvents[_0x35fc('0x6')](_0xb4f9ce+':'+_0x5e75e6['id'],_0x5e75e6);CmListEvents['emit'](_0xb4f9ce,_0x5e75e6);_0x1d5fec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0x35fc('0x7')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x2bfd4f,_0x1bbf2c){var _0x341849=function(_0x4c246e){while(--_0x4c246e){_0x2bfd4f['push'](_0x2bfd4f['shift']());}};_0x341849(++_0x1bbf2c);}(_0x7217,0x19e));var _0x7721=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x7217[_0x1ac595];return _0x455fff;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index aff6cfa..f46402c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['exports','define','CmList','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x5e7a35,_0x1a58e0){var _0x553208=function(_0x1422f1){while(--_0x1422f1){_0x5e7a35['push'](_0x5e7a35['shift']());}};_0x553208(++_0x1a58e0);}(_0x702d,0x147));var _0xd702=function(_0x570200,_0x4eba87){_0x570200=_0x570200-0x0;var _0x4dde7e=_0x702d[_0x570200];return _0x4dde7e;};'use strict';var _=require(_0xd702('0x0'));var util=require(_0xd702('0x1'));var logger=require(_0xd702('0x2'))(_0xd702('0x3'));var moment=require(_0xd702('0x4'));var BPromise=require('bluebird');var rp=require(_0xd702('0x5'));var fs=require('fs');var path=require(_0xd702('0x6'));var rimraf=require(_0xd702('0x7'));var config=require(_0xd702('0x8'));var attributes=require('./cmList.attributes');module[_0xd702('0x9')]=function(_0x544e94,_0x1aecfc){return _0x544e94[_0xd702('0xa')](_0xd702('0xb'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4483=['define','CmList','cm_lists','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./cmList.attributes','exports'];(function(_0x1a8929,_0x3428a2){var _0x54e955=function(_0xb9e6b0){while(--_0xb9e6b0){_0x1a8929['push'](_0x1a8929['shift']());}};_0x54e955(++_0x3428a2);}(_0x4483,0x1a3));var _0x3448=function(_0x4d680d,_0xce6335){_0x4d680d=_0x4d680d-0x0;var _0x48f4e7=_0x4483[_0x4d680d];return _0x48f4e7;};'use strict';var _=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var logger=require(_0x3448('0x2'))('api');var moment=require(_0x3448('0x3'));var BPromise=require(_0x3448('0x4'));var rp=require(_0x3448('0x5'));var fs=require('fs');var path=require(_0x3448('0x6'));var rimraf=require(_0x3448('0x7'));var config=require('../../config/environment');var attributes=require(_0x3448('0x8'));module[_0x3448('0x9')]=function(_0x1b05db,_0xd3606d){return _0x1b05db[_0x3448('0xa')](_0x3448('0xb'),attributes,{'tableName':_0x3448('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61ba110..45ea684 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e79=['http','defaults','localhost','redis','./cmList.socket','register','request','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x7e79,0x1eb));var _0x97e7=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x7e79[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0x97e7('0x0'));var util=require('util');var moment=require(_0x97e7('0x1'));var BPromise=require(_0x97e7('0x2'));var rs=require(_0x97e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x97e7('0x4'))['db'];var utils=require(_0x97e7('0x5'));var logger=require(_0x97e7('0x6'))('rpc');var config=require(_0x97e7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x97e7('0x8')][_0x97e7('0x9')]({'port':0x232a});config['redis']=_[_0x97e7('0xa')](config['redis'],{'host':_0x97e7('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x97e7('0xc')]));require(_0x97e7('0xd'))[_0x97e7('0xe')](socket);function respondWithRpcPromise(_0x461b23,_0x218b36,_0x1726a9){return new BPromise(function(_0x3afc44,_0x351fbc){return client[_0x97e7('0xf')](_0x461b23,_0x1726a9)['then'](function(_0x4bcad0){logger[_0x97e7('0x10')](_0x97e7('0x11'),_0x218b36,_0x97e7('0x12'));logger[_0x97e7('0x13')]('CmList,\x20%s,\x20%s,\x20%s',_0x218b36,'request\x20sent',JSON[_0x97e7('0x14')](_0x4bcad0));if(_0x4bcad0['error']){if(_0x4bcad0[_0x97e7('0x15')][_0x97e7('0x16')]===0x1f4){logger[_0x97e7('0x15')]('CmList,\x20%s,\x20%s',_0x218b36,_0x4bcad0['error'][_0x97e7('0x17')]);return _0x351fbc(_0x4bcad0[_0x97e7('0x15')]['message']);}logger[_0x97e7('0x15')](_0x97e7('0x11'),_0x218b36,_0x4bcad0[_0x97e7('0x15')][_0x97e7('0x17')]);return _0x3afc44(_0x4bcad0[_0x97e7('0x15')][_0x97e7('0x17')]);}else{logger['info'](_0x97e7('0x11'),_0x218b36,_0x97e7('0x12'));_0x3afc44(_0x4bcad0[_0x97e7('0x18')][_0x97e7('0x17')]);}})['catch'](function(_0x3e0a7c){logger[_0x97e7('0x15')](_0x97e7('0x11'),_0x218b36,_0x3e0a7c);_0x351fbc(_0x3e0a7c);});});}
\ No newline at end of file
+var _0x058e=['CmList,\x20%s,\x20%s','debug','CmList,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','info'];(function(_0x1f6b9c,_0x204654){var _0x47b0af=function(_0x15e0d0){while(--_0x15e0d0){_0x1f6b9c['push'](_0x1f6b9c['shift']());}};_0x47b0af(++_0x204654);}(_0x058e,0x1e5));var _0xe058=function(_0xa27166,_0xf133e){_0xa27166=_0xa27166-0x0;var _0x56dd03=_0x058e[_0xa27166];return _0x56dd03;};'use strict';var _=require(_0xe058('0x0'));var util=require('util');var moment=require(_0xe058('0x1'));var BPromise=require(_0xe058('0x2'));var rs=require(_0xe058('0x3'));var fs=require('fs');var Redis=require(_0xe058('0x4'));var db=require(_0xe058('0x5'))['db'];var utils=require(_0xe058('0x6'));var logger=require('../../config/logger')(_0xe058('0x7'));var config=require('../../config/environment');var jayson=require(_0xe058('0x8'));var client=jayson[_0xe058('0x9')][_0xe058('0xa')]({'port':0x232a});config[_0xe058('0xb')]=_[_0xe058('0xc')](config[_0xe058('0xb')],{'host':_0xe058('0xd'),'port':0x18eb});var socket=require(_0xe058('0xe'))(new Redis(config[_0xe058('0xb')]));require(_0xe058('0xf'))[_0xe058('0x10')](socket);function respondWithRpcPromise(_0x5df9d2,_0x35abd5,_0x17f2fb){return new BPromise(function(_0x5d0bf5,_0x4a0905){return client[_0xe058('0x11')](_0x5df9d2,_0x17f2fb)['then'](function(_0x594ed5){logger[_0xe058('0x12')](_0xe058('0x13'),_0x35abd5,'request\x20sent');logger[_0xe058('0x14')](_0xe058('0x15'),_0x35abd5,'request\x20sent',JSON['stringify'](_0x594ed5));if(_0x594ed5[_0xe058('0x16')]){if(_0x594ed5['error'][_0xe058('0x17')]===0x1f4){logger[_0xe058('0x16')](_0xe058('0x13'),_0x35abd5,_0x594ed5['error'][_0xe058('0x18')]);return _0x4a0905(_0x594ed5[_0xe058('0x16')][_0xe058('0x18')]);}logger[_0xe058('0x16')]('CmList,\x20%s,\x20%s',_0x35abd5,_0x594ed5[_0xe058('0x16')][_0xe058('0x18')]);return _0x5d0bf5(_0x594ed5[_0xe058('0x16')][_0xe058('0x18')]);}else{logger['info']('CmList,\x20%s,\x20%s',_0x35abd5,_0xe058('0x19'));_0x5d0bf5(_0x594ed5[_0xe058('0x1a')][_0xe058('0x18')]);}})[_0xe058('0x1b')](function(_0x3d6d92){logger['error'](_0xe058('0x13'),_0x35abd5,_0x3d6d92);_0x4a0905(_0x3d6d92);});});}
\ No newline at end of file
index 48fe5e2..03b6d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ff=['./cmList.events','save','remove','emit','removeListener','register','length','cmList:'];(function(_0x15ef48,_0x2f90a5){var _0x146840=function(_0x4abaaf){while(--_0x4abaaf){_0x15ef48['push'](_0x15ef48['shift']());}};_0x146840(++_0x2f90a5);}(_0xe1ff,0x1e0));var _0xfe1f=function(_0x5f0cac,_0x4c0c97){_0x5f0cac=_0x5f0cac-0x0;var _0x190799=_0xe1ff[_0x5f0cac];return _0x190799;};'use strict';var CmListEvents=require(_0xfe1f('0x0'));var events=[_0xfe1f('0x1'),_0xfe1f('0x2'),'update'];function createListener(_0x2bcbe6,_0x31528f){return function(_0x25f113){_0x31528f[_0xfe1f('0x3')](_0x2bcbe6,_0x25f113);};}function removeListener(_0x551735,_0x413627){return function(){CmListEvents[_0xfe1f('0x4')](_0x551735,_0x413627);};}exports[_0xfe1f('0x5')]=function(_0x53362f){for(var _0x750cfd=0x0,_0x3a986c=events[_0xfe1f('0x6')];_0x750cfd<_0x3a986c;_0x750cfd++){var _0x2e8460=events[_0x750cfd];var _0x6d0321=createListener(_0xfe1f('0x7')+_0x2e8460,_0x53362f);CmListEvents['on'](_0x2e8460,_0x6d0321);}};
\ No newline at end of file
+var _0x455b=['emit','register','save','remove','update'];(function(_0x52b82e,_0x36c80e){var _0x316cdf=function(_0x488b85){while(--_0x488b85){_0x52b82e['push'](_0x52b82e['shift']());}};_0x316cdf(++_0x36c80e);}(_0x455b,0x151));var _0xb455=function(_0x6a09f7,_0x5d0980){_0x6a09f7=_0x6a09f7-0x0;var _0x1babcb=_0x455b[_0x6a09f7];return _0x1babcb;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0xb455('0x0'),_0xb455('0x1'),_0xb455('0x2')];function createListener(_0x5e0d1d,_0x33bb8b){return function(_0x1acc74){_0x33bb8b[_0xb455('0x3')](_0x5e0d1d,_0x1acc74);};}function removeListener(_0x251bda,_0x1f1692){return function(){CmListEvents['removeListener'](_0x251bda,_0x1f1692);};}exports[_0xb455('0x4')]=function(_0x231007){for(var _0x4316b1=0x0,_0x423315=events['length'];_0x4316b1<_0x423315;_0x4316b1++){var _0x462c7a=events[_0x4316b1];var _0x3b6b78=createListener('cmList:'+_0x462c7a,_0x231007);CmListEvents['on'](_0x462c7a,_0x3b6b78);}};
\ No newline at end of file
index c61a014..802fcdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf316=['describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','/:id/fields','getAgents','create','post','addDisposition','addContacts','addCustomField','/:id/users','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe'];(function(_0x5948dd,_0x1f6ac8){var _0xb1f8be=function(_0x31a8d2){while(--_0x31a8d2){_0x5948dd['push'](_0x5948dd['shift']());}};_0xb1f8be(++_0x1f6ac8);}(_0xf316,0x86));var _0x6f31=function(_0x3877b6,_0xa7ad3f){_0x3877b6=_0x3877b6-0x0;var _0x490385=_0xf316[_0x3877b6];return _0x490385;};'use strict';var multer=require(_0x6f31('0x0'));var util=require(_0x6f31('0x1'));var path=require(_0x6f31('0x2'));var timeout=require(_0x6f31('0x3'));var express=require(_0x6f31('0x4'));var router=express['Router']();var fs_extra=require(_0x6f31('0x5'));var auth=require(_0x6f31('0x6'));var interaction=require(_0x6f31('0x7'));var config=require(_0x6f31('0x8'));var controller=require(_0x6f31('0x9'));router[_0x6f31('0xa')]('/',auth[_0x6f31('0xb')](),controller[_0x6f31('0xc')]);router['get'](_0x6f31('0xd'),auth['isAuthenticated'](),controller[_0x6f31('0xe')]);router[_0x6f31('0xa')](_0x6f31('0xf'),auth[_0x6f31('0xb')](),controller[_0x6f31('0x10')]);router[_0x6f31('0xa')](_0x6f31('0x11'),auth['isAuthenticated'](),controller[_0x6f31('0x12')]);router['get'](_0x6f31('0x13'),auth[_0x6f31('0xb')](),controller[_0x6f31('0x14')]);router[_0x6f31('0xa')](_0x6f31('0x15'),auth[_0x6f31('0xb')](),controller['getContactsCsv']);router[_0x6f31('0xa')](_0x6f31('0x16'),auth['isAuthenticated'](),controller['getCustomFields']);router[_0x6f31('0xa')]('/:id/users',auth[_0x6f31('0xb')](),controller[_0x6f31('0x17')]);router['post']('/',auth[_0x6f31('0xb')](),controller[_0x6f31('0x18')]);router[_0x6f31('0x19')](_0x6f31('0x11'),auth['isAuthenticated'](),controller[_0x6f31('0x1a')]);router[_0x6f31('0x19')]('/:id/contacts',auth[_0x6f31('0xb')](),controller[_0x6f31('0x1b')]);router['post'](_0x6f31('0x16'),auth['isAuthenticated'](),controller[_0x6f31('0x1c')]);router[_0x6f31('0x19')](_0x6f31('0x1d'),auth['isAuthenticated'](),controller['addAgents']);router[_0x6f31('0x1e')]('/:id',auth[_0x6f31('0xb')](),controller[_0x6f31('0x1f')]);router[_0x6f31('0x20')]('/:id',auth[_0x6f31('0xb')](),controller[_0x6f31('0x21')]);router[_0x6f31('0x20')](_0x6f31('0x11'),auth['isAuthenticated'](),controller[_0x6f31('0x22')]);router['delete']('/:id/users',auth[_0x6f31('0xb')](),controller[_0x6f31('0x23')]);module[_0x6f31('0x24')]=router;
\ No newline at end of file
+var _0x8997=['addAgents','put','update','delete','removeDispositions','removeAgents','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','addDisposition','addContacts','addCustomField'];(function(_0x4149aa,_0x26143d){var _0x24ea3d=function(_0x5edec0){while(--_0x5edec0){_0x4149aa['push'](_0x4149aa['shift']());}};_0x24ea3d(++_0x26143d);}(_0x8997,0xb1));var _0x7899=function(_0x333d87,_0x5b2b13){_0x333d87=_0x333d87-0x0;var _0x96f216=_0x8997[_0x333d87];return _0x96f216;};'use strict';var multer=require(_0x7899('0x0'));var util=require(_0x7899('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7899('0x2'));var router=express['Router']();var fs_extra=require(_0x7899('0x3'));var auth=require(_0x7899('0x4'));var interaction=require(_0x7899('0x5'));var config=require(_0x7899('0x6'));var controller=require(_0x7899('0x7'));router[_0x7899('0x8')]('/',auth[_0x7899('0x9')](),controller['index']);router[_0x7899('0x8')](_0x7899('0xa'),auth[_0x7899('0x9')](),controller[_0x7899('0xb')]);router['get'](_0x7899('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x7899('0x8')](_0x7899('0xd'),auth[_0x7899('0x9')](),controller[_0x7899('0xe')]);router['get'](_0x7899('0xf'),auth[_0x7899('0x9')](),controller[_0x7899('0x10')]);router['get'](_0x7899('0x11'),auth[_0x7899('0x9')](),controller[_0x7899('0x12')]);router[_0x7899('0x8')](_0x7899('0x13'),auth[_0x7899('0x9')](),controller[_0x7899('0x14')]);router[_0x7899('0x8')](_0x7899('0x15'),auth[_0x7899('0x9')](),controller[_0x7899('0x16')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x7899('0x17')](_0x7899('0xd'),auth[_0x7899('0x9')](),controller[_0x7899('0x18')]);router[_0x7899('0x17')](_0x7899('0xf'),auth[_0x7899('0x9')](),controller[_0x7899('0x19')]);router[_0x7899('0x17')](_0x7899('0x13'),auth[_0x7899('0x9')](),controller[_0x7899('0x1a')]);router[_0x7899('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0x7899('0x1b')]);router[_0x7899('0x1c')](_0x7899('0xc'),auth['isAuthenticated'](),controller[_0x7899('0x1d')]);router[_0x7899('0x1e')](_0x7899('0xc'),auth['isAuthenticated'](),controller['destroy']);router[_0x7899('0x1e')]('/:id/dispositions',auth[_0x7899('0x9')](),controller[_0x7899('0x1f')]);router['delete'](_0x7899('0x15'),auth[_0x7899('0x9')](),controller[_0x7899('0x20')]);module[_0x7899('0x21')]=router;
\ No newline at end of file
index 7dfaf18..c3bf324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb32=['VIRTUAL','field','STRING','sequelize','exports'];(function(_0x76ac2a,_0x2dc1ad){var _0x3a46b2=function(_0x1cffd2){while(--_0x1cffd2){_0x76ac2a['push'](_0x76ac2a['shift']());}};_0x3a46b2(++_0x2dc1ad);}(_0xdb32,0x12a));var _0x2db3=function(_0x516155,_0x22c4f0){_0x516155=_0x516155-0x0;var _0x1c3bdb=_0xdb32[_0x516155];return _0x1c3bdb;};'use strict';var Sequelize=require(_0x2db3('0x0'));module[_0x2db3('0x1')]={'name':{'type':Sequelize[_0x2db3('0x2')],'get':function(_0x365266){return this['getDataValue'](_0x2db3('0x3'));}},'field':{'type':Sequelize[_0x2db3('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x2db3('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x2db3('0x4')],'allowNull':![]}};
\ No newline at end of file
+var _0x10e9=['exports','getDataValue','STRING','sequelize'];(function(_0x1481fd,_0x2de291){var _0xe85c0=function(_0x50ab5d){while(--_0x50ab5d){_0x1481fd['push'](_0x1481fd['shift']());}};_0xe85c0(++_0x2de291);}(_0x10e9,0xc3));var _0x910e=function(_0x56ba58,_0x1697c4){_0x56ba58=_0x56ba58-0x0;var _0x337772=_0x10e9[_0x56ba58];return _0x337772;};'use strict';var Sequelize=require(_0x910e('0x0'));module[_0x910e('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x225db6){return this[_0x910e('0x2')]('field');}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x910e('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index d05aa9a..6e8525e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x4336f4,_0x4d453d){var _0x23e998=function(_0x3fd3df){while(--_0x3fd3df){_0x4336f4['push'](_0x4336f4['shift']());}};_0x23e998(++_0x4d453d);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x29b106,_0x2252e1){var _0x51ce2d=function(_0x28cf50){while(--_0x28cf50){_0x29b106['push'](_0x29b106['shift']());}};_0x51ce2d(++_0x2252e1);}(_0x7a54,0x106));var _0x47a5=function(_0x5329ce,_0xfd8397){_0x5329ce=_0x5329ce-0x0;var _0x209143=_0x7a54[_0x5329ce];return _0x209143;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index 1073a37..21bc0f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd70e=['lodash','util','../../config/logger','api','moment','rimraf','./condition.attributes','exports','define','Condition','tools_conditions'];(function(_0x353ad7,_0x5ef98d){var _0x41369d=function(_0x1ac078){while(--_0x1ac078){_0x353ad7['push'](_0x353ad7['shift']());}};_0x41369d(++_0x5ef98d);}(_0xd70e,0x197));var _0xed70=function(_0x17d581,_0x3b01b6){_0x17d581=_0x17d581-0x0;var _0x3c57d3=_0xd70e[_0x17d581];return _0x3c57d3;};'use strict';var _=require(_0xed70('0x0'));var util=require(_0xed70('0x1'));var logger=require(_0xed70('0x2'))(_0xed70('0x3'));var moment=require(_0xed70('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xed70('0x5'));var config=require('../../config/environment');var attributes=require(_0xed70('0x6'));module[_0xed70('0x7')]=function(_0x447154,_0x367ee0){return _0x447154[_0xed70('0x8')](_0xed70('0x9'),attributes,{'tableName':_0xed70('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e7e=['define','tools_conditions','api','moment','request-promise','rimraf','./condition.attributes','exports'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9e7e,0x18a));var _0xe9e7=function(_0x36f797,_0x351603){_0x36f797=_0x36f797-0x0;var _0x44ba30=_0x9e7e[_0x36f797];return _0x44ba30;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xe9e7('0x0'));var moment=require(_0xe9e7('0x1'));var BPromise=require('bluebird');var rp=require(_0xe9e7('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe9e7('0x3'));var config=require('../../config/environment');var attributes=require(_0xe9e7('0x4'));module[_0xe9e7('0x5')]=function(_0x3cbc0b,_0xebf566){return _0x3cbc0b[_0xe9e7('0x6')]('Condition',attributes,{'tableName':_0xe9e7('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69c1c7e..ceeaadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf99c=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info'];(function(_0x3db122,_0x5e6bee){var _0x325b67=function(_0x5095af){while(--_0x5095af){_0x3db122['push'](_0x3db122['shift']());}};_0x325b67(++_0x5e6bee);}(_0xf99c,0x1a6));var _0xcf99=function(_0x5478ea,_0x1d127a){_0x5478ea=_0x5478ea-0x0;var _0xbbaa0e=_0xf99c[_0x5478ea];return _0xbbaa0e;};'use strict';var _=require(_0xcf99('0x0'));var util=require('util');var moment=require(_0xcf99('0x1'));var BPromise=require(_0xcf99('0x2'));var rs=require(_0xcf99('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcf99('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xcf99('0x5'));var jayson=require(_0xcf99('0x6'));var client=jayson[_0xcf99('0x7')][_0xcf99('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b02d9,_0x21bd97,_0x256cfb){return new BPromise(function(_0x54bf80,_0x4f0a79){return client[_0xcf99('0x9')](_0x1b02d9,_0x256cfb)[_0xcf99('0xa')](function(_0x46cd8e){logger['info'](_0xcf99('0xb'),_0x21bd97,_0xcf99('0xc'));logger['debug']('Condition,\x20%s,\x20%s,\x20%s',_0x21bd97,_0xcf99('0xc'),JSON[_0xcf99('0xd')](_0x46cd8e));if(_0x46cd8e[_0xcf99('0xe')]){if(_0x46cd8e[_0xcf99('0xe')][_0xcf99('0xf')]===0x1f4){logger['error'](_0xcf99('0xb'),_0x21bd97,_0x46cd8e[_0xcf99('0xe')][_0xcf99('0x10')]);return _0x4f0a79(_0x46cd8e['error'][_0xcf99('0x10')]);}logger[_0xcf99('0xe')]('Condition,\x20%s,\x20%s',_0x21bd97,_0x46cd8e[_0xcf99('0xe')]['message']);return _0x54bf80(_0x46cd8e[_0xcf99('0xe')][_0xcf99('0x10')]);}else{logger[_0xcf99('0x11')](_0xcf99('0xb'),_0x21bd97,'request\x20sent');_0x54bf80(_0x46cd8e[_0xcf99('0x12')]['message']);}})[_0xcf99('0x13')](function(_0x146c92){logger['error'](_0xcf99('0xb'),_0x21bd97,_0x146c92);_0x4f0a79(_0x146c92);});});}
\ No newline at end of file
+var _0xc001=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch'];(function(_0x545df6,_0x5bb217){var _0x473535=function(_0x490407){while(--_0x490407){_0x545df6['push'](_0x545df6['shift']());}};_0x473535(++_0x5bb217);}(_0xc001,0x18f));var _0x1c00=function(_0x2991e8,_0x228641){_0x2991e8=_0x2991e8-0x0;var _0x368a1a=_0xc001[_0x2991e8];return _0x368a1a;};'use strict';var _=require(_0x1c00('0x0'));var util=require(_0x1c00('0x1'));var moment=require(_0x1c00('0x2'));var BPromise=require(_0x1c00('0x3'));var rs=require(_0x1c00('0x4'));var fs=require('fs');var Redis=require(_0x1c00('0x5'));var db=require(_0x1c00('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1c00('0x7'));var config=require(_0x1c00('0x8'));var jayson=require(_0x1c00('0x9'));var client=jayson['client'][_0x1c00('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3639c5,_0x9d3ce7,_0x43f99d){return new BPromise(function(_0x3f7fbc,_0x45e5c){return client[_0x1c00('0xb')](_0x3639c5,_0x43f99d)[_0x1c00('0xc')](function(_0x3f84f1){logger[_0x1c00('0xd')](_0x1c00('0xe'),_0x9d3ce7,'request\x20sent');logger['debug']('Condition,\x20%s,\x20%s,\x20%s',_0x9d3ce7,_0x1c00('0xf'),JSON[_0x1c00('0x10')](_0x3f84f1));if(_0x3f84f1[_0x1c00('0x11')]){if(_0x3f84f1['error'][_0x1c00('0x12')]===0x1f4){logger[_0x1c00('0x11')](_0x1c00('0xe'),_0x9d3ce7,_0x3f84f1[_0x1c00('0x11')][_0x1c00('0x13')]);return _0x45e5c(_0x3f84f1['error'][_0x1c00('0x13')]);}logger['error'](_0x1c00('0xe'),_0x9d3ce7,_0x3f84f1[_0x1c00('0x11')]['message']);return _0x3f7fbc(_0x3f84f1[_0x1c00('0x11')][_0x1c00('0x13')]);}else{logger['info'](_0x1c00('0xe'),_0x9d3ce7,'request\x20sent');_0x3f7fbc(_0x3f84f1['result'][_0x1c00('0x13')]);}})[_0x1c00('0x14')](function(_0x42cb7b){logger[_0x1c00('0x11')]('Condition,\x20%s,\x20%s',_0x9d3ce7,_0x42cb7b);_0x45e5c(_0x42cb7b);});});}
\ No newline at end of file
index e4dbcbd..e401c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f0d=['/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./condition.controller','update','delete'];(function(_0x4377cf,_0x2a571f){var _0x45e85f=function(_0x41583e){while(--_0x41583e){_0x4377cf['push'](_0x4377cf['shift']());}};_0x45e85f(++_0x2a571f);}(_0x2f0d,0xc7));var _0xd2f0=function(_0x42afb2,_0x388b39){_0x42afb2=_0x42afb2-0x0;var _0x1e43be=_0x2f0d[_0x42afb2];return _0x1e43be;};'use strict';var multer=require(_0xd2f0('0x0'));var util=require(_0xd2f0('0x1'));var path=require(_0xd2f0('0x2'));var timeout=require(_0xd2f0('0x3'));var express=require(_0xd2f0('0x4'));var router=express[_0xd2f0('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd2f0('0x6'));var config=require(_0xd2f0('0x7'));var controller=require(_0xd2f0('0x8'));router['put']('/:id',auth['isAuthenticated'](),controller[_0xd2f0('0x9')]);router[_0xd2f0('0xa')](_0xd2f0('0xb'),auth['isAuthenticated'](),controller[_0xd2f0('0xc')]);module[_0xd2f0('0xd')]=router;
\ No newline at end of file
+var _0x1232=['../../components/interaction/service','../../config/environment','/:id','isAuthenticated','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x15d229,_0x132b33){var _0x2ebafc=function(_0x41a43c){while(--_0x41a43c){_0x15d229['push'](_0x15d229['shift']());}};_0x2ebafc(++_0x132b33);}(_0x1232,0x14a));var _0x2123=function(_0x4a49ea,_0x238bad){_0x4a49ea=_0x4a49ea-0x0;var _0x3a7196=_0x1232[_0x4a49ea];return _0x3a7196;};'use strict';var multer=require(_0x2123('0x0'));var util=require('util');var path=require(_0x2123('0x1'));var timeout=require(_0x2123('0x2'));var express=require(_0x2123('0x3'));var router=express[_0x2123('0x4')]();var fs_extra=require(_0x2123('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x2123('0x6'));var config=require(_0x2123('0x7'));var controller=require('./condition.controller');router['put'](_0x2123('0x8'),auth[_0x2123('0x9')](),controller[_0x2123('0xa')]);router[_0x2123('0xb')](_0x2123('0x8'),auth[_0x2123('0x9')](),controller[_0x2123('0xc')]);module[_0x2123('0xd')]=router;
\ No newline at end of file
index 8f30abe..10eb78c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x42e4d7,_0x4bd202){var _0x346cd8=function(_0x36c0f6){while(--_0x36c0f6){_0x42e4d7['push'](_0x42e4d7['shift']());}};_0x346cd8(++_0x4bd202);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
+var _0x757a=['exports','STRING'];(function(_0x2d4544,_0x4051ed){var _0x144d20=function(_0x5d8129){while(--_0x5d8129){_0x2d4544['push'](_0x2d4544['shift']());}};_0x144d20(++_0x4051ed);}(_0x757a,0xde));var _0xa757=function(_0x4c77c4,_0x528f08){_0x4c77c4=_0x4c77c4-0x0;var _0x16880f=_0x757a[_0x4c77c4];return _0x16880f;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 665cc31..bc8899b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa614=['error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','params','DashboardId','getItems','order','hasOwnProperty','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./dashboard.socket','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','save','update','then','get','CustomDashboards','UserProfileResource','destroy','stack','name','map','Dashboard','fieldName','type','key','model','query','intersection','attributes','fields','sort','filters','pick','filter','VIRTUAL','merge','where','count','includeAll','include','findAll','catch','show','keys','rawAttributes','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation'];(function(_0xcad9e7,_0x255d6f){var _0x170a86=function(_0x38bc38){while(--_0x38bc38){_0xcad9e7['push'](_0xcad9e7['shift']());}};_0x170a86(++_0x255d6f);}(_0xa614,0xaf));var _0x4a61=function(_0x3dee92,_0x55e1eb){_0x3dee92=_0x3dee92-0x0;var _0x44d36e=_0xa614[_0x3dee92];return _0x44d36e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a61('0x0'));var zipdir=require(_0x4a61('0x1'));var jsonpatch=require(_0x4a61('0x2'));var rp=require(_0x4a61('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4a61('0x4'));var util=require(_0x4a61('0x5'));var path=require(_0x4a61('0x6'));var sox=require(_0x4a61('0x7'));var csv=require('to-csv');var ejs=require(_0x4a61('0x8'));var fs=require('fs');var fs_extra=require(_0x4a61('0x9'));var _=require('lodash');var squel=require(_0x4a61('0xa'));var crypto=require(_0x4a61('0xb'));var jsforce=require(_0x4a61('0xc'));var deskjs=require(_0x4a61('0xd'));var toCsv=require(_0x4a61('0xe'));var querystring=require(_0x4a61('0xf'));var Papa=require(_0x4a61('0x10'));var Redis=require('ioredis');var authService=require(_0x4a61('0x11'));var qs=require(_0x4a61('0x12'));var as=require(_0x4a61('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4a61('0x14'))(_0x4a61('0x15'));var utils=require('../../config/utils');var config=require(_0x4a61('0x16'));var licenseUtil=require(_0x4a61('0x17'));var db=require(_0x4a61('0x18'))['db'];config[_0x4a61('0x19')]=_['defaults'](config[_0x4a61('0x19')],{'host':_0x4a61('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4a61('0x19')]));require(_0x4a61('0x1b'))['register'](socket);function respondWithStatusCode(_0x5a4ce9,_0x48ed35){_0x48ed35=_0x48ed35||0xcc;return function(_0x36af68){if(_0x36af68){return _0x5a4ce9[_0x4a61('0x1c')](_0x48ed35);}return _0x5a4ce9[_0x4a61('0x1d')](_0x48ed35)[_0x4a61('0x1e')]();};}function respondWithResult(_0x9d59b1,_0x98923c){_0x98923c=_0x98923c||0xc8;return function(_0x550f93){if(_0x550f93){return _0x9d59b1[_0x4a61('0x1d')](_0x98923c)[_0x4a61('0x1f')](_0x550f93);}};}function respondWithFilteredResult(_0x410baf,_0xa414e2){return function(_0x46967e){if(_0x46967e){var _0x4812cc=typeof _0xa414e2[_0x4a61('0x20')]===_0x4a61('0x21')&&typeof _0xa414e2[_0x4a61('0x22')]===_0x4a61('0x21');var _0x1e5b6a=_0x46967e['count'];var _0x54f6b8=_0x4812cc?0x0:_0xa414e2[_0x4a61('0x20')];var _0x1b820b=_0x4812cc?_0x46967e['count']:_0xa414e2[_0x4a61('0x20')]+_0xa414e2[_0x4a61('0x22')];var _0xad3e6f;if(_0x1b820b>=_0x1e5b6a){_0x1b820b=_0x1e5b6a;_0xad3e6f=0xc8;}else{_0xad3e6f=0xce;}_0x410baf[_0x4a61('0x1d')](_0xad3e6f);return _0x410baf['set'](_0x4a61('0x23'),_0x54f6b8+'-'+_0x1b820b+'/'+_0x1e5b6a)[_0x4a61('0x1f')](_0x46967e);}return null;};}function patchUpdates(_0x29345f){return function(_0x751c07){try{jsonpatch[_0x4a61('0x24')](_0x751c07,_0x29345f,!![]);}catch(_0x7da65b){return BPromise['reject'](_0x7da65b);}return _0x751c07[_0x4a61('0x25')]();};}function saveUpdates(_0x2280a9,_0x25f676){return function(_0x7b37a9){if(_0x7b37a9){return _0x7b37a9[_0x4a61('0x26')](_0x2280a9)[_0x4a61('0x27')](function(_0x5a6fc4){return _0x5a6fc4;});}return null;};}function removeEntity(_0x3b8acf,_0x2e42c2){return function(_0x12f34b){if(_0x12f34b){return _0x12f34b['destroy']()[_0x4a61('0x27')](function(){var _0x155cfb=_0x12f34b[_0x4a61('0x28')]({'plain':!![]});var _0x1bc568=_0x4a61('0x29');return db[_0x4a61('0x2a')][_0x4a61('0x2b')]({'where':{'type':_0x1bc568,'resourceId':_0x155cfb['id']}})['then'](function(){return _0x12f34b;});})[_0x4a61('0x27')](function(){_0x3b8acf[_0x4a61('0x1d')](0xcc)[_0x4a61('0x1e')]();});}};}function handleEntityNotFound(_0x2e0307,_0x23075c){return function(_0x5b14d1){if(!_0x5b14d1){_0x2e0307['sendStatus'](0x194);}return _0x5b14d1;};}function handleError(_0x1f3eb2,_0x3f96b0){_0x3f96b0=_0x3f96b0||0x1f4;return function(_0x5f02a3){logger['error'](_0x5f02a3[_0x4a61('0x2c')]);if(_0x5f02a3[_0x4a61('0x2d')]){delete _0x5f02a3[_0x4a61('0x2d')];}_0x1f3eb2[_0x4a61('0x1d')](_0x3f96b0)['send'](_0x5f02a3);};}exports['index']=function(_0x3ccf44,_0x35fc8d){var _0x1216e7={},_0x28c4d9={},_0x59c6db={'count':0x0,'rows':[]};var _0x2774ce=_[_0x4a61('0x2e')](db[_0x4a61('0x2f')]['rawAttributes'],function(_0x364aee){return{'name':_0x364aee[_0x4a61('0x30')],'type':_0x364aee[_0x4a61('0x31')][_0x4a61('0x32')]};});_0x28c4d9[_0x4a61('0x33')]=_[_0x4a61('0x2e')](_0x2774ce,'name');_0x28c4d9['query']=_['keys'](_0x3ccf44[_0x4a61('0x34')]);_0x28c4d9['filters']=_[_0x4a61('0x35')](_0x28c4d9[_0x4a61('0x33')],_0x28c4d9['query']);_0x1216e7[_0x4a61('0x36')]=_[_0x4a61('0x35')](_0x28c4d9['model'],qs[_0x4a61('0x37')](_0x3ccf44[_0x4a61('0x34')][_0x4a61('0x37')]));_0x1216e7[_0x4a61('0x36')]=_0x1216e7['attributes']['length']?_0x1216e7[_0x4a61('0x36')]:_0x28c4d9[_0x4a61('0x33')];if(!_0x3ccf44[_0x4a61('0x34')]['hasOwnProperty']('nolimit')){_0x1216e7[_0x4a61('0x22')]=qs[_0x4a61('0x22')](_0x3ccf44[_0x4a61('0x34')][_0x4a61('0x22')]);_0x1216e7[_0x4a61('0x20')]=qs[_0x4a61('0x20')](_0x3ccf44[_0x4a61('0x34')][_0x4a61('0x20')]);}_0x1216e7['order']=qs[_0x4a61('0x38')](_0x3ccf44[_0x4a61('0x34')][_0x4a61('0x38')]);_0x1216e7['where']=qs[_0x4a61('0x39')](_[_0x4a61('0x3a')](_0x3ccf44[_0x4a61('0x34')],_0x28c4d9['filters']),_0x2774ce);if(_0x3ccf44['query'][_0x4a61('0x3b')]){_0x1216e7['where']=_['merge'](_0x1216e7['where'],{'$or':_['map'](_0x2774ce,function(_0x27091b){if(_0x27091b[_0x4a61('0x31')]!==_0x4a61('0x3c')){var _0x48f30e={};_0x48f30e[_0x27091b[_0x4a61('0x2d')]]={'$like':'%'+_0x3ccf44[_0x4a61('0x34')][_0x4a61('0x3b')]+'%'};return _0x48f30e;}})});}_0x1216e7=_[_0x4a61('0x3d')]({},_0x1216e7,_0x3ccf44['options']);var _0x2dda88={'where':_0x1216e7[_0x4a61('0x3e')]};return db[_0x4a61('0x2f')][_0x4a61('0x3f')](_0x2dda88)[_0x4a61('0x27')](function(_0x4acac4){_0x59c6db['count']=_0x4acac4;if(_0x3ccf44[_0x4a61('0x34')][_0x4a61('0x40')]){_0x1216e7[_0x4a61('0x41')]=[{'all':!![]}];}return db[_0x4a61('0x2f')][_0x4a61('0x42')](_0x1216e7);})[_0x4a61('0x27')](function(_0x282a05){_0x59c6db['rows']=_0x282a05;return _0x59c6db;})['then'](respondWithFilteredResult(_0x35fc8d,_0x1216e7))[_0x4a61('0x43')](handleError(_0x35fc8d,null));};exports[_0x4a61('0x44')]=function(_0x41edd5,_0x3bc5b2){var _0x552856={'raw':![],'where':{'id':_0x41edd5['params']['id']}},_0x4b9010={};_0x4b9010[_0x4a61('0x33')]=_[_0x4a61('0x45')](db[_0x4a61('0x2f')][_0x4a61('0x46')]);_0x4b9010[_0x4a61('0x34')]=_[_0x4a61('0x45')](_0x41edd5[_0x4a61('0x34')]);_0x4b9010[_0x4a61('0x39')]=_[_0x4a61('0x35')](_0x4b9010[_0x4a61('0x33')],_0x4b9010['query']);_0x552856[_0x4a61('0x36')]=_[_0x4a61('0x35')](_0x4b9010['model'],qs[_0x4a61('0x37')](_0x41edd5['query'][_0x4a61('0x37')]));_0x552856['attributes']=_0x552856['attributes'][_0x4a61('0x47')]?_0x552856[_0x4a61('0x36')]:_0x4b9010[_0x4a61('0x33')];if(_0x41edd5['query'][_0x4a61('0x40')]){_0x552856[_0x4a61('0x41')]=[{'all':!![]}];}_0x552856=_[_0x4a61('0x3d')]({},_0x552856,_0x41edd5[_0x4a61('0x48')]);return db[_0x4a61('0x2f')][_0x4a61('0x49')](_0x552856)[_0x4a61('0x27')](handleEntityNotFound(_0x3bc5b2,null))[_0x4a61('0x27')](respondWithResult(_0x3bc5b2,null))[_0x4a61('0x43')](handleError(_0x3bc5b2,null));};exports[_0x4a61('0x4a')]=function(_0x232735,_0x1f3be1){return db['Dashboard'][_0x4a61('0x4a')](_0x232735[_0x4a61('0x4b')],{})[_0x4a61('0x27')](function(_0x100206){var _0x48419f=_0x232735[_0x4a61('0x4c')][_0x4a61('0x28')]({'plain':!![]});if(!_0x48419f)throw new Error(_0x4a61('0x4d'));if(_0x48419f[_0x4a61('0x4e')]===_0x4a61('0x4c')){var _0x2dc697=_0x100206[_0x4a61('0x28')]({'plain':!![]});var _0x11b2ad=_0x4a61('0x29');return db[_0x4a61('0x4f')][_0x4a61('0x49')]({'where':{'name':_0x11b2ad,'userProfileId':_0x48419f['userProfileId']},'raw':!![]})[_0x4a61('0x27')](function(_0x2a5c0e){if(_0x2a5c0e&&_0x2a5c0e[_0x4a61('0x50')]===0x0){return db['UserProfileResource']['create']({'name':_0x2dc697[_0x4a61('0x2d')],'resourceId':_0x2dc697['id'],'type':_0x2a5c0e['name'],'sectionId':_0x2a5c0e['id']},{})[_0x4a61('0x27')](function(){return _0x100206;});}else{return _0x100206;}})[_0x4a61('0x43')](function(_0xbd1674){logger[_0x4a61('0x51')](_0x4a61('0x52'),_0xbd1674);throw _0xbd1674;});}return _0x100206;})['then'](respondWithResult(_0x1f3be1,0xc9))['catch'](handleError(_0x1f3be1,null));};exports['clone']=function(_0x2c1772,_0xf6c9f3){var _0x56022b={'where':{'id':_0x2c1772['params']['id']}},_0x17d75b={};_0x17d75b['model']=_['keys'](db[_0x4a61('0x2f')][_0x4a61('0x46')]);_0x56022b[_0x4a61('0x36')]=_[_0x4a61('0x35')](_0x17d75b[_0x4a61('0x33')],qs['fields'](_0x2c1772[_0x4a61('0x34')]['fields']));_0x56022b['attributes']=_0x56022b[_0x4a61('0x36')][_0x4a61('0x47')]?_0x56022b[_0x4a61('0x36')]:_0x17d75b[_0x4a61('0x33')];if(_0x2c1772[_0x4a61('0x34')][_0x4a61('0x40')]){_0x56022b[_0x4a61('0x41')]=[{'all':!![]}];}_0x56022b=_[_0x4a61('0x3d')]({},_0x56022b,_0x2c1772[_0x4a61('0x48')]);return db['Dashboard'][_0x4a61('0x49')](_0x56022b)[_0x4a61('0x27')](handleEntityNotFound(_0xf6c9f3,null))[_0x4a61('0x27')](function(_0x31e733){if(_0x31e733){var _0xb469fc=_0x31e733[_0x4a61('0x28')]({'plain':!![]});_0xb469fc=qs[_0x4a61('0x53')](_0xb469fc,['id',_0x4a61('0x54'),_0x4a61('0x55')]);_0x2c1772['body']=_[_0x4a61('0x53')](_0x2c1772[_0x4a61('0x4b')],['id','createdAt',_0x4a61('0x55')]);return db[_0x4a61('0x2f')][_0x4a61('0x4a')](_[_0x4a61('0x3d')](_0xb469fc,_0x2c1772[_0x4a61('0x4b')]),{'include':_0x2c1772[_0x4a61('0x34')]['includeAll']?[{'all':!![]}]:undefined})[_0x4a61('0x27')](function(_0x50be22){var _0x540357=_0x2c1772['user']['get']({'plain':!![]});if(!_0x540357)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x540357['role']==='user'){var _0x1a271a=_0x50be22[_0x4a61('0x28')]({'plain':!![]});var _0x130b89=_0x4a61('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x130b89,'userProfileId':_0x540357['userProfileId']},'raw':!![]})[_0x4a61('0x27')](function(_0x5d9e1e){if(_0x5d9e1e&&_0x5d9e1e[_0x4a61('0x50')]===0x0){return db[_0x4a61('0x2a')][_0x4a61('0x4a')]({'name':_0x1a271a['name'],'resourceId':_0x1a271a['id'],'type':_0x5d9e1e[_0x4a61('0x2d')],'sectionId':_0x5d9e1e['id']},{})['then'](function(){return _0x50be22;});}else{return _0x50be22;}})['catch'](function(_0x39ea8a){logger[_0x4a61('0x51')](_0x4a61('0x52'),_0x39ea8a);throw _0x39ea8a;});}return _0x50be22;});}})[_0x4a61('0x27')](respondWithResult(_0xf6c9f3,0xc9))['catch'](handleError(_0xf6c9f3,null));};exports[_0x4a61('0x26')]=function(_0x24895a,_0x52dfff){if(_0x24895a['body']['id']){delete _0x24895a[_0x4a61('0x4b')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x24895a['params']['id']}})[_0x4a61('0x27')](handleEntityNotFound(_0x52dfff,null))[_0x4a61('0x27')](saveUpdates(_0x24895a[_0x4a61('0x4b')],null))[_0x4a61('0x27')](respondWithResult(_0x52dfff,null))['catch'](handleError(_0x52dfff,null));};exports[_0x4a61('0x2b')]=function(_0x2c70b0,_0x46b083){return db[_0x4a61('0x2f')][_0x4a61('0x49')]({'where':{'id':_0x2c70b0['params']['id']}})['then'](handleEntityNotFound(_0x46b083,null))[_0x4a61('0x27')](removeEntity(_0x46b083,null))[_0x4a61('0x43')](handleError(_0x46b083,null));};function widgetAttributes(_0x5b8493){try{switch(_0x5b8493[_0x4a61('0x31')]){case _0x4a61('0x56'):return[{'name':_0x4a61('0x57'),'value':_0x5b8493[_0x4a61('0x57')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x0]?_0x5b8493[_0x4a61('0x58')][0x0][_0x4a61('0x59')]:undefined)||_0x4a61('0x5a')}];case _0x4a61('0x5b'):return[{'name':_0x4a61('0x5c'),'value':_0x5b8493[_0x4a61('0x5c')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x0]?_0x5b8493[_0x4a61('0x58')][0x0][_0x4a61('0x59')]:undefined)||''}];case _0x4a61('0x5d'):return[{'name':'attrHourFormat','value':_0x5b8493[_0x4a61('0x5e')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x0]?_0x5b8493[_0x4a61('0x58')][0x0]['value']:undefined)||_0x4a61('0x5f')},{'name':_0x4a61('0x60'),'value':_0x5b8493['attrTimezone']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x1]?_0x5b8493['attrs'][0x1][_0x4a61('0x59')]:undefined)||_0x4a61('0x61')},{'name':_0x4a61('0x62'),'value':_0x5b8493[_0x4a61('0x62')]||(_0x5b8493['attrs']&&_0x5b8493[_0x4a61('0x58')][0x2]?_0x5b8493[_0x4a61('0x58')][0x2][_0x4a61('0x59')]:undefined)||0xc}];case _0x4a61('0x63'):return[{'name':_0x4a61('0x64'),'value':_0x5b8493['attrMetric']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x0]?_0x5b8493['attrs'][0x0]['value']:undefined)||_0x4a61('0x65')},{'name':_0x4a61('0x66'),'value':_0x5b8493[_0x4a61('0x66')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x1]?_0x5b8493['attrs'][0x1][_0x4a61('0x59')]:undefined)||[]},{'name':_0x4a61('0x62'),'value':_0x5b8493['attrFontSize']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x2]?_0x5b8493['attrs'][0x2][_0x4a61('0x59')]:undefined)||0x14},{'name':_0x4a61('0x67'),'value':_0x5b8493[_0x4a61('0x67')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x3]?_0x5b8493[_0x4a61('0x58')][0x3][_0x4a61('0x59')]:undefined)||_0x4a61('0x68')},{'name':_0x4a61('0x69'),'value':_0x5b8493['attrEmailAccounts']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x4]?_0x5b8493['attrs'][0x4][_0x4a61('0x59')]:undefined)||''},{'name':_0x4a61('0x6a'),'value':_0x5b8493[_0x4a61('0x6a')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x5]?_0x5b8493[_0x4a61('0x58')][0x5][_0x4a61('0x59')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x5b8493[_0x4a61('0x6b')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x6]?_0x5b8493['attrs'][0x6][_0x4a61('0x59')]:undefined)||''},{'name':_0x4a61('0x6c'),'value':_0x5b8493['attrOpenchannelAccounts']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x7]?_0x5b8493[_0x4a61('0x58')][0x7][_0x4a61('0x59')]:undefined)||''},{'name':_0x4a61('0x6d'),'value':_0x5b8493[_0x4a61('0x6d')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x8]?_0x5b8493[_0x4a61('0x58')][0x8][_0x4a61('0x59')]:undefined)||''},{'name':_0x4a61('0x6e'),'value':_0x5b8493['attrChatWebsites']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x9]?_0x5b8493[_0x4a61('0x58')][0x9][_0x4a61('0x59')]:undefined)||''}];case _0x4a61('0x6f'):case _0x4a61('0x70'):return[{'name':_0x4a61('0x71'),'value':_0x5b8493[_0x4a61('0x71')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x0]?_0x5b8493[_0x4a61('0x58')][0x0][_0x4a61('0x59')]:undefined)||_0x4a61('0x65')},{'name':_0x4a61('0x72'),'value':_0x5b8493[_0x4a61('0x72')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x1]?_0x5b8493['attrs'][0x1][_0x4a61('0x59')]:undefined)||null},{'name':_0x4a61('0x73'),'value':_0x5b8493[_0x4a61('0x73')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x2]?_0x5b8493[_0x4a61('0x58')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0x5b8493[_0x4a61('0x66')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x3]?_0x5b8493[_0x4a61('0x58')][0x3][_0x4a61('0x59')]:undefined)||[]},{'name':'attrChannel','value':_0x5b8493['attrChannel']||(_0x5b8493['attrs']&&_0x5b8493[_0x4a61('0x58')][0x4]?_0x5b8493[_0x4a61('0x58')][0x4]['value']:undefined)||_0x4a61('0x68')},{'name':_0x4a61('0x69'),'value':_0x5b8493[_0x4a61('0x69')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x5]?_0x5b8493[_0x4a61('0x58')][0x5]['value']:undefined)||''},{'name':_0x4a61('0x6a'),'value':_0x5b8493['attrFaxAccounts']||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x6]?_0x5b8493[_0x4a61('0x58')][0x6]['value']:undefined)||''},{'name':_0x4a61('0x6b'),'value':_0x5b8493[_0x4a61('0x6b')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x7]?_0x5b8493['attrs'][0x7][_0x4a61('0x59')]:undefined)||''},{'name':_0x4a61('0x6c'),'value':_0x5b8493[_0x4a61('0x6c')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x8]?_0x5b8493['attrs'][0x8]['value']:undefined)||''},{'name':_0x4a61('0x6d'),'value':_0x5b8493[_0x4a61('0x6d')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x9]?_0x5b8493[_0x4a61('0x58')][0x9][_0x4a61('0x59')]:undefined)||''},{'name':_0x4a61('0x6e'),'value':_0x5b8493[_0x4a61('0x6e')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0xa]?_0x5b8493[_0x4a61('0x58')][0xa][_0x4a61('0x59')]:undefined)||''}];case'web-report':return[{'name':_0x4a61('0x74'),'type':_0x5b8493[_0x4a61('0x75')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x0]?_0x5b8493[_0x4a61('0x58')][0x0][_0x4a61('0x31')]:undefined)||null,'value':_0x5b8493[_0x4a61('0x74')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493[_0x4a61('0x58')][0x0]?_0x5b8493[_0x4a61('0x58')][0x0][_0x4a61('0x59')]:undefined)||null},{'name':'attrRefresh','value':_0x5b8493[_0x4a61('0x76')]||(_0x5b8493[_0x4a61('0x58')]&&_0x5b8493['attrs'][0x1]?_0x5b8493[_0x4a61('0x58')][0x1][_0x4a61('0x59')]:undefined)||0x0}];default:return[];}}catch(_0x36cff0){logger[_0x4a61('0x51')](_0x4a61('0x77'),JSON[_0x4a61('0x78')](_0x36cff0));return[];}}exports[_0x4a61('0x79')]=function(_0x407b10,_0x414413,_0x10dce4){if(_0x407b10['body']['id']){delete _0x407b10['body']['id'];}return db[_0x4a61('0x2f')]['find']({'where':{'id':_0x407b10[_0x4a61('0x7a')]['id']}})['then'](handleEntityNotFound(_0x414413,null))[_0x4a61('0x27')](function(_0x4794dd){if(_0x4794dd){_0x407b10[_0x4a61('0x4b')][_0x4a61('0x7b')]=_0x4794dd['id'];_0x407b10[_0x4a61('0x4b')][_0x4a61('0x58')]=widgetAttributes(_0x407b10[_0x4a61('0x4b')]);return db['DashboardItem']['create'](_0x407b10[_0x4a61('0x4b')]);}})[_0x4a61('0x27')](respondWithResult(_0x414413,null))[_0x4a61('0x43')](handleError(_0x414413,null));};exports[_0x4a61('0x7c')]=function(_0x4dbe92,_0x325075,_0x21ebca){var _0x49ebff={};var _0x3451de={};var _0x390704;var _0x2ddce9;return db[_0x4a61('0x2f')]['findOne']({'where':{'id':_0x4dbe92[_0x4a61('0x7a')]['id']}})[_0x4a61('0x27')](handleEntityNotFound(_0x325075,null))[_0x4a61('0x27')](function(_0x4e352a){if(_0x4e352a){_0x390704=_0x4e352a;_0x3451de[_0x4a61('0x33')]=_[_0x4a61('0x45')](db['DashboardItem']['rawAttributes']);_0x3451de[_0x4a61('0x34')]=_[_0x4a61('0x45')](_0x4dbe92[_0x4a61('0x34')]);_0x3451de[_0x4a61('0x39')]=_['intersection'](_0x3451de[_0x4a61('0x33')],_0x3451de[_0x4a61('0x34')]);_0x49ebff[_0x4a61('0x36')]=_[_0x4a61('0x35')](_0x3451de[_0x4a61('0x33')],qs[_0x4a61('0x37')](_0x4dbe92[_0x4a61('0x34')]['fields']));_0x49ebff[_0x4a61('0x36')]=_0x49ebff['attributes'][_0x4a61('0x47')]?_0x49ebff[_0x4a61('0x36')]:_0x3451de[_0x4a61('0x33')];_0x49ebff[_0x4a61('0x7d')]=qs[_0x4a61('0x38')](_0x4dbe92[_0x4a61('0x34')]['sort']);_0x49ebff[_0x4a61('0x3e')]=qs[_0x4a61('0x39')](_[_0x4a61('0x3a')](_0x4dbe92['query'],_0x3451de['filters']));if(_0x4dbe92[_0x4a61('0x34')][_0x4a61('0x3b')]){_0x49ebff['where']=_[_0x4a61('0x3d')](_0x49ebff[_0x4a61('0x3e')],{'$or':_[_0x4a61('0x2e')](_0x49ebff['attributes'],function(_0x4d3380){var _0x21c5cc={};_0x21c5cc[_0x4d3380]={'$like':'%'+_0x4dbe92[_0x4a61('0x34')][_0x4a61('0x3b')]+'%'};return _0x21c5cc;})});}_0x49ebff=_[_0x4a61('0x3d')]({},_0x49ebff,_0x4dbe92[_0x4a61('0x48')]);return _0x390704[_0x4a61('0x7c')](_0x49ebff);}})['then'](function(_0x16b7ad){if(_0x16b7ad){_0x2ddce9=_0x16b7ad[_0x4a61('0x47')];if(!_0x4dbe92[_0x4a61('0x34')][_0x4a61('0x7e')](_0x4a61('0x7f'))){_0x49ebff[_0x4a61('0x22')]=qs['limit'](_0x4dbe92[_0x4a61('0x34')][_0x4a61('0x22')]);_0x49ebff[_0x4a61('0x20')]=qs[_0x4a61('0x20')](_0x4dbe92[_0x4a61('0x34')][_0x4a61('0x20')]);}return _0x390704[_0x4a61('0x7c')](_0x49ebff);}})[_0x4a61('0x27')](function(_0x3802ca){if(_0x3802ca){return _0x3802ca?{'count':_0x2ddce9,'rows':_0x3802ca}:null;}})[_0x4a61('0x27')](respondWithResult(_0x325075,null))['catch'](handleError(_0x325075,null));};
\ No newline at end of file
+var _0x9ffd=['omit','autoAssociation','error','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','findOne','getItems','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','stack','name','send','index','map','Dashboard','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','updatedAt'];(function(_0x15f731,_0xced05a){var _0x444a50=function(_0x3486b6){while(--_0x3486b6){_0x15f731['push'](_0x15f731['shift']());}};_0x444a50(++_0xced05a);}(_0x9ffd,0x1bf));var _0xd9ff=function(_0x20f655,_0x3182fd){_0x20f655=_0x20f655-0x0;var _0x5efaff=_0x9ffd[_0x20f655];return _0x5efaff;};'use strict';var emlformat=require(_0xd9ff('0x0'));var rimraf=require(_0xd9ff('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd9ff('0x2'));var rp=require(_0xd9ff('0x3'));var moment=require(_0xd9ff('0x4'));var BPromise=require(_0xd9ff('0x5'));var Mustache=require(_0xd9ff('0x6'));var util=require(_0xd9ff('0x7'));var path=require(_0xd9ff('0x8'));var sox=require(_0xd9ff('0x9'));var csv=require(_0xd9ff('0xa'));var ejs=require(_0xd9ff('0xb'));var fs=require('fs');var fs_extra=require(_0xd9ff('0xc'));var _=require(_0xd9ff('0xd'));var squel=require(_0xd9ff('0xe'));var crypto=require(_0xd9ff('0xf'));var jsforce=require(_0xd9ff('0x10'));var deskjs=require(_0xd9ff('0x11'));var toCsv=require(_0xd9ff('0xa'));var querystring=require(_0xd9ff('0x12'));var Papa=require('papaparse');var Redis=require(_0xd9ff('0x13'));var authService=require(_0xd9ff('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xd9ff('0x15'));var hardwareService=require(_0xd9ff('0x16'));var logger=require(_0xd9ff('0x17'))('api');var utils=require(_0xd9ff('0x18'));var config=require(_0xd9ff('0x19'));var licenseUtil=require(_0xd9ff('0x1a'));var db=require(_0xd9ff('0x1b'))['db'];config[_0xd9ff('0x1c')]=_[_0xd9ff('0x1d')](config[_0xd9ff('0x1c')],{'host':_0xd9ff('0x1e'),'port':0x18eb});var socket=require(_0xd9ff('0x1f'))(new Redis(config[_0xd9ff('0x1c')]));require(_0xd9ff('0x20'))[_0xd9ff('0x21')](socket);function respondWithStatusCode(_0x3bd1c5,_0x373772){_0x373772=_0x373772||0xcc;return function(_0x42c034){if(_0x42c034){return _0x3bd1c5[_0xd9ff('0x22')](_0x373772);}return _0x3bd1c5[_0xd9ff('0x23')](_0x373772)[_0xd9ff('0x24')]();};}function respondWithResult(_0x1ff664,_0x348cbe){_0x348cbe=_0x348cbe||0xc8;return function(_0x3d5617){if(_0x3d5617){return _0x1ff664[_0xd9ff('0x23')](_0x348cbe)[_0xd9ff('0x25')](_0x3d5617);}};}function respondWithFilteredResult(_0x506c76,_0x352e6e){return function(_0x2b63fe){if(_0x2b63fe){var _0x4cad20=typeof _0x352e6e[_0xd9ff('0x26')]===_0xd9ff('0x27')&&typeof _0x352e6e[_0xd9ff('0x28')]===_0xd9ff('0x27');var _0x2c69a5=_0x2b63fe['count'];var _0x27621f=_0x4cad20?0x0:_0x352e6e[_0xd9ff('0x26')];var _0x162616=_0x4cad20?_0x2b63fe[_0xd9ff('0x29')]:_0x352e6e[_0xd9ff('0x26')]+_0x352e6e[_0xd9ff('0x28')];var _0x149768;if(_0x162616>=_0x2c69a5){_0x162616=_0x2c69a5;_0x149768=0xc8;}else{_0x149768=0xce;}_0x506c76[_0xd9ff('0x23')](_0x149768);return _0x506c76[_0xd9ff('0x2a')](_0xd9ff('0x2b'),_0x27621f+'-'+_0x162616+'/'+_0x2c69a5)[_0xd9ff('0x25')](_0x2b63fe);}return null;};}function patchUpdates(_0x32aced){return function(_0x50ae9f){try{jsonpatch[_0xd9ff('0x2c')](_0x50ae9f,_0x32aced,!![]);}catch(_0x249942){return BPromise['reject'](_0x249942);}return _0x50ae9f[_0xd9ff('0x2d')]();};}function saveUpdates(_0x237a14,_0x5383a9){return function(_0x59ef29){if(_0x59ef29){return _0x59ef29[_0xd9ff('0x2e')](_0x237a14)['then'](function(_0x180161){return _0x180161;});}return null;};}function removeEntity(_0xe1745c,_0x31ef79){return function(_0x1d766e){if(_0x1d766e){return _0x1d766e['destroy']()[_0xd9ff('0x2f')](function(){var _0x14253f=_0x1d766e[_0xd9ff('0x30')]({'plain':!![]});var _0xa96576='CustomDashboards';return db[_0xd9ff('0x31')][_0xd9ff('0x32')]({'where':{'type':_0xa96576,'resourceId':_0x14253f['id']}})[_0xd9ff('0x2f')](function(){return _0x1d766e;});})[_0xd9ff('0x2f')](function(){_0xe1745c[_0xd9ff('0x23')](0xcc)[_0xd9ff('0x24')]();});}};}function handleEntityNotFound(_0x536124,_0x39e67d){return function(_0x232d60){if(!_0x232d60){_0x536124[_0xd9ff('0x22')](0x194);}return _0x232d60;};}function handleError(_0x3d4930,_0x2a1dea){_0x2a1dea=_0x2a1dea||0x1f4;return function(_0x12f7ff){logger['error'](_0x12f7ff[_0xd9ff('0x33')]);if(_0x12f7ff['name']){delete _0x12f7ff[_0xd9ff('0x34')];}_0x3d4930[_0xd9ff('0x23')](_0x2a1dea)[_0xd9ff('0x35')](_0x12f7ff);};}exports[_0xd9ff('0x36')]=function(_0x44ace0,_0x3088f4){var _0x12ebac={},_0x3d16c6={},_0x2ccc6f={'count':0x0,'rows':[]};var _0x591cee=_[_0xd9ff('0x37')](db[_0xd9ff('0x38')]['rawAttributes'],function(_0x1caa72){return{'name':_0x1caa72[_0xd9ff('0x39')],'type':_0x1caa72['type'][_0xd9ff('0x3a')]};});_0x3d16c6['model']=_[_0xd9ff('0x37')](_0x591cee,_0xd9ff('0x34'));_0x3d16c6[_0xd9ff('0x3b')]=_[_0xd9ff('0x3c')](_0x44ace0[_0xd9ff('0x3b')]);_0x3d16c6[_0xd9ff('0x3d')]=_['intersection'](_0x3d16c6[_0xd9ff('0x3e')],_0x3d16c6[_0xd9ff('0x3b')]);_0x12ebac[_0xd9ff('0x3f')]=_[_0xd9ff('0x40')](_0x3d16c6[_0xd9ff('0x3e')],qs[_0xd9ff('0x41')](_0x44ace0[_0xd9ff('0x3b')]['fields']));_0x12ebac[_0xd9ff('0x3f')]=_0x12ebac[_0xd9ff('0x3f')][_0xd9ff('0x42')]?_0x12ebac['attributes']:_0x3d16c6[_0xd9ff('0x3e')];if(!_0x44ace0[_0xd9ff('0x3b')][_0xd9ff('0x43')](_0xd9ff('0x44'))){_0x12ebac[_0xd9ff('0x28')]=qs[_0xd9ff('0x28')](_0x44ace0['query'][_0xd9ff('0x28')]);_0x12ebac[_0xd9ff('0x26')]=qs['offset'](_0x44ace0[_0xd9ff('0x3b')][_0xd9ff('0x26')]);}_0x12ebac[_0xd9ff('0x45')]=qs[_0xd9ff('0x46')](_0x44ace0[_0xd9ff('0x3b')]['sort']);_0x12ebac['where']=qs[_0xd9ff('0x3d')](_[_0xd9ff('0x47')](_0x44ace0[_0xd9ff('0x3b')],_0x3d16c6['filters']),_0x591cee);if(_0x44ace0['query'][_0xd9ff('0x48')]){_0x12ebac['where']=_[_0xd9ff('0x49')](_0x12ebac[_0xd9ff('0x4a')],{'$or':_[_0xd9ff('0x37')](_0x591cee,function(_0x525de7){if(_0x525de7[_0xd9ff('0x4b')]!==_0xd9ff('0x4c')){var _0x143bf4={};_0x143bf4[_0x525de7['name']]={'$like':'%'+_0x44ace0[_0xd9ff('0x3b')][_0xd9ff('0x48')]+'%'};return _0x143bf4;}})});}_0x12ebac=_[_0xd9ff('0x49')]({},_0x12ebac,_0x44ace0[_0xd9ff('0x4d')]);var _0x27ba80={'where':_0x12ebac['where']};return db[_0xd9ff('0x38')]['count'](_0x27ba80)[_0xd9ff('0x2f')](function(_0x13af7b){_0x2ccc6f[_0xd9ff('0x29')]=_0x13af7b;if(_0x44ace0[_0xd9ff('0x3b')][_0xd9ff('0x4e')]){_0x12ebac['include']=[{'all':!![]}];}return db[_0xd9ff('0x38')][_0xd9ff('0x4f')](_0x12ebac);})['then'](function(_0x458125){_0x2ccc6f['rows']=_0x458125;return _0x2ccc6f;})[_0xd9ff('0x2f')](respondWithFilteredResult(_0x3088f4,_0x12ebac))[_0xd9ff('0x50')](handleError(_0x3088f4,null));};exports[_0xd9ff('0x51')]=function(_0x1d404a,_0x42a5de){var _0x180d55={'raw':![],'where':{'id':_0x1d404a[_0xd9ff('0x52')]['id']}},_0x42a4f3={};_0x42a4f3[_0xd9ff('0x3e')]=_[_0xd9ff('0x3c')](db[_0xd9ff('0x38')]['rawAttributes']);_0x42a4f3[_0xd9ff('0x3b')]=_['keys'](_0x1d404a['query']);_0x42a4f3['filters']=_[_0xd9ff('0x40')](_0x42a4f3[_0xd9ff('0x3e')],_0x42a4f3[_0xd9ff('0x3b')]);_0x180d55['attributes']=_[_0xd9ff('0x40')](_0x42a4f3['model'],qs[_0xd9ff('0x41')](_0x1d404a[_0xd9ff('0x3b')][_0xd9ff('0x41')]));_0x180d55['attributes']=_0x180d55[_0xd9ff('0x3f')][_0xd9ff('0x42')]?_0x180d55['attributes']:_0x42a4f3[_0xd9ff('0x3e')];if(_0x1d404a[_0xd9ff('0x3b')]['includeAll']){_0x180d55[_0xd9ff('0x53')]=[{'all':!![]}];}_0x180d55=_['merge']({},_0x180d55,_0x1d404a[_0xd9ff('0x4d')]);return db[_0xd9ff('0x38')][_0xd9ff('0x54')](_0x180d55)[_0xd9ff('0x2f')](handleEntityNotFound(_0x42a5de,null))[_0xd9ff('0x2f')](respondWithResult(_0x42a5de,null))['catch'](handleError(_0x42a5de,null));};exports[_0xd9ff('0x55')]=function(_0x3ac898,_0x2f640c){return db['Dashboard'][_0xd9ff('0x55')](_0x3ac898[_0xd9ff('0x56')],{})['then'](function(_0x3e24df){var _0x25c8f6=_0x3ac898[_0xd9ff('0x57')][_0xd9ff('0x30')]({'plain':!![]});if(!_0x25c8f6)throw new Error(_0xd9ff('0x58'));if(_0x25c8f6[_0xd9ff('0x59')]==='user'){var _0x3e3e65=_0x3e24df[_0xd9ff('0x30')]({'plain':!![]});var _0x5500d5=_0xd9ff('0x5a');return db[_0xd9ff('0x5b')][_0xd9ff('0x54')]({'where':{'name':_0x5500d5,'userProfileId':_0x25c8f6[_0xd9ff('0x5c')]},'raw':!![]})[_0xd9ff('0x2f')](function(_0x133363){if(_0x133363&&_0x133363['autoAssociation']===0x0){return db[_0xd9ff('0x31')]['create']({'name':_0x3e3e65[_0xd9ff('0x34')],'resourceId':_0x3e3e65['id'],'type':_0x133363['name'],'sectionId':_0x133363['id']},{})[_0xd9ff('0x2f')](function(){return _0x3e24df;});}else{return _0x3e24df;}})['catch'](function(_0x381620){logger['error'](_0xd9ff('0x5d'),_0x381620);throw _0x381620;});}return _0x3e24df;})[_0xd9ff('0x2f')](respondWithResult(_0x2f640c,0xc9))['catch'](handleError(_0x2f640c,null));};exports[_0xd9ff('0x5e')]=function(_0x44ed00,_0x3790a5){var _0x234515={'where':{'id':_0x44ed00['params']['id']}},_0xf46584={};_0xf46584[_0xd9ff('0x3e')]=_[_0xd9ff('0x3c')](db[_0xd9ff('0x38')][_0xd9ff('0x5f')]);_0x234515['attributes']=_[_0xd9ff('0x40')](_0xf46584[_0xd9ff('0x3e')],qs[_0xd9ff('0x41')](_0x44ed00['query'][_0xd9ff('0x41')]));_0x234515[_0xd9ff('0x3f')]=_0x234515[_0xd9ff('0x3f')][_0xd9ff('0x42')]?_0x234515[_0xd9ff('0x3f')]:_0xf46584['model'];if(_0x44ed00[_0xd9ff('0x3b')][_0xd9ff('0x4e')]){_0x234515[_0xd9ff('0x53')]=[{'all':!![]}];}_0x234515=_[_0xd9ff('0x49')]({},_0x234515,_0x44ed00['options']);return db[_0xd9ff('0x38')][_0xd9ff('0x54')](_0x234515)[_0xd9ff('0x2f')](handleEntityNotFound(_0x3790a5,null))[_0xd9ff('0x2f')](function(_0x9b9b3f){if(_0x9b9b3f){var _0x234acc=_0x9b9b3f['get']({'plain':!![]});_0x234acc=qs['omit'](_0x234acc,['id','createdAt',_0xd9ff('0x60')]);_0x44ed00[_0xd9ff('0x56')]=_[_0xd9ff('0x61')](_0x44ed00[_0xd9ff('0x56')],['id','createdAt',_0xd9ff('0x60')]);return db['Dashboard']['create'](_['merge'](_0x234acc,_0x44ed00[_0xd9ff('0x56')]),{'include':_0x44ed00['query'][_0xd9ff('0x4e')]?[{'all':!![]}]:undefined})[_0xd9ff('0x2f')](function(_0x5b0f44){var _0x200635=_0x44ed00[_0xd9ff('0x57')][_0xd9ff('0x30')]({'plain':!![]});if(!_0x200635)throw new Error(_0xd9ff('0x58'));if(_0x200635[_0xd9ff('0x59')]==='user'){var _0x5bbacb=_0x5b0f44[_0xd9ff('0x30')]({'plain':!![]});var _0x34f159=_0xd9ff('0x5a');return db[_0xd9ff('0x5b')][_0xd9ff('0x54')]({'where':{'name':_0x34f159,'userProfileId':_0x200635[_0xd9ff('0x5c')]},'raw':!![]})[_0xd9ff('0x2f')](function(_0x2910d5){if(_0x2910d5&&_0x2910d5[_0xd9ff('0x62')]===0x0){return db['UserProfileResource'][_0xd9ff('0x55')]({'name':_0x5bbacb['name'],'resourceId':_0x5bbacb['id'],'type':_0x2910d5['name'],'sectionId':_0x2910d5['id']},{})[_0xd9ff('0x2f')](function(){return _0x5b0f44;});}else{return _0x5b0f44;}})[_0xd9ff('0x50')](function(_0x5091dc){logger[_0xd9ff('0x63')](_0xd9ff('0x5d'),_0x5091dc);throw _0x5091dc;});}return _0x5b0f44;});}})[_0xd9ff('0x2f')](respondWithResult(_0x3790a5,0xc9))[_0xd9ff('0x50')](handleError(_0x3790a5,null));};exports[_0xd9ff('0x2e')]=function(_0x65ee9,_0x58e995){if(_0x65ee9[_0xd9ff('0x56')]['id']){delete _0x65ee9[_0xd9ff('0x56')]['id'];}return db[_0xd9ff('0x38')][_0xd9ff('0x54')]({'where':{'id':_0x65ee9[_0xd9ff('0x52')]['id']}})[_0xd9ff('0x2f')](handleEntityNotFound(_0x58e995,null))[_0xd9ff('0x2f')](saveUpdates(_0x65ee9[_0xd9ff('0x56')],null))[_0xd9ff('0x2f')](respondWithResult(_0x58e995,null))[_0xd9ff('0x50')](handleError(_0x58e995,null));};exports[_0xd9ff('0x32')]=function(_0x104872,_0x38da4e){return db['Dashboard'][_0xd9ff('0x54')]({'where':{'id':_0x104872[_0xd9ff('0x52')]['id']}})['then'](handleEntityNotFound(_0x38da4e,null))['then'](removeEntity(_0x38da4e,null))[_0xd9ff('0x50')](handleError(_0x38da4e,null));};function widgetAttributes(_0xa925e5){try{switch(_0xa925e5['type']){case'iframe':return[{'name':_0xd9ff('0x64'),'value':_0xa925e5[_0xd9ff('0x64')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5['attrs'][0x0]?_0xa925e5[_0xd9ff('0x65')][0x0][_0xd9ff('0x66')]:undefined)||_0xd9ff('0x67')}];case'custom':return[{'name':'attrPath','value':_0xa925e5[_0xd9ff('0x68')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x0]?_0xa925e5[_0xd9ff('0x65')][0x0]['value']:undefined)||''}];case _0xd9ff('0x69'):return[{'name':'attrHourFormat','value':_0xa925e5[_0xd9ff('0x6a')]||(_0xa925e5['attrs']&&_0xa925e5['attrs'][0x0]?_0xa925e5[_0xd9ff('0x65')][0x0][_0xd9ff('0x66')]:undefined)||_0xd9ff('0x6b')},{'name':_0xd9ff('0x6c'),'value':_0xa925e5[_0xd9ff('0x6c')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x1]?_0xa925e5[_0xd9ff('0x65')][0x1][_0xd9ff('0x66')]:undefined)||_0xd9ff('0x6d')},{'name':_0xd9ff('0x6e'),'value':_0xa925e5[_0xd9ff('0x6e')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5['attrs'][0x2]?_0xa925e5[_0xd9ff('0x65')][0x2]['value']:undefined)||0xc}];case _0xd9ff('0x6f'):return[{'name':'attrMetric','value':_0xa925e5[_0xd9ff('0x70')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x0]?_0xa925e5[_0xd9ff('0x65')][0x0][_0xd9ff('0x66')]:undefined)||_0xd9ff('0x71')},{'name':_0xd9ff('0x72'),'value':_0xa925e5['attrVoiceQueues']||(_0xa925e5['attrs']&&_0xa925e5[_0xd9ff('0x65')][0x1]?_0xa925e5[_0xd9ff('0x65')][0x1][_0xd9ff('0x66')]:undefined)||[]},{'name':_0xd9ff('0x6e'),'value':_0xa925e5[_0xd9ff('0x6e')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x2]?_0xa925e5[_0xd9ff('0x65')][0x2][_0xd9ff('0x66')]:undefined)||0x14},{'name':_0xd9ff('0x73'),'value':_0xa925e5[_0xd9ff('0x73')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x3]?_0xa925e5[_0xd9ff('0x65')][0x3]['value']:undefined)||_0xd9ff('0x74')},{'name':_0xd9ff('0x75'),'value':_0xa925e5[_0xd9ff('0x75')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x4]?_0xa925e5['attrs'][0x4][_0xd9ff('0x66')]:undefined)||''},{'name':_0xd9ff('0x76'),'value':_0xa925e5[_0xd9ff('0x76')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x5]?_0xa925e5[_0xd9ff('0x65')][0x5][_0xd9ff('0x66')]:undefined)||''},{'name':'attrSmsAccounts','value':_0xa925e5[_0xd9ff('0x77')]||(_0xa925e5['attrs']&&_0xa925e5['attrs'][0x6]?_0xa925e5[_0xd9ff('0x65')][0x6]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0xa925e5[_0xd9ff('0x78')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x7]?_0xa925e5[_0xd9ff('0x65')][0x7]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0xa925e5[_0xd9ff('0x79')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x8]?_0xa925e5['attrs'][0x8][_0xd9ff('0x66')]:undefined)||''},{'name':_0xd9ff('0x7a'),'value':_0xa925e5['attrChatWebsites']||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5['attrs'][0x9]?_0xa925e5[_0xd9ff('0x65')][0x9][_0xd9ff('0x66')]:undefined)||''}];case'multibar-chart':case _0xd9ff('0x7b'):return[{'name':_0xd9ff('0x7c'),'value':_0xa925e5[_0xd9ff('0x7c')]||(_0xa925e5['attrs']&&_0xa925e5[_0xd9ff('0x65')][0x0]?_0xa925e5[_0xd9ff('0x65')][0x0]['value']:undefined)||'total'},{'name':_0xd9ff('0x7d'),'value':_0xa925e5[_0xd9ff('0x7d')]||(_0xa925e5['attrs']&&_0xa925e5[_0xd9ff('0x65')][0x1]?_0xa925e5[_0xd9ff('0x65')][0x1][_0xd9ff('0x66')]:undefined)||null},{'name':_0xd9ff('0x7e'),'value':_0xa925e5[_0xd9ff('0x7e')]||(_0xa925e5['attrs']&&_0xa925e5[_0xd9ff('0x65')][0x2]?_0xa925e5[_0xd9ff('0x65')][0x2][_0xd9ff('0x66')]:undefined)||null},{'name':_0xd9ff('0x72'),'value':_0xa925e5['attrVoiceQueues']||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x3]?_0xa925e5[_0xd9ff('0x65')][0x3][_0xd9ff('0x66')]:undefined)||[]},{'name':_0xd9ff('0x73'),'value':_0xa925e5[_0xd9ff('0x73')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x4]?_0xa925e5['attrs'][0x4][_0xd9ff('0x66')]:undefined)||'voice'},{'name':_0xd9ff('0x75'),'value':_0xa925e5[_0xd9ff('0x75')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x5]?_0xa925e5[_0xd9ff('0x65')][0x5][_0xd9ff('0x66')]:undefined)||''},{'name':_0xd9ff('0x76'),'value':_0xa925e5[_0xd9ff('0x76')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x6]?_0xa925e5[_0xd9ff('0x65')][0x6]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0xa925e5[_0xd9ff('0x77')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5['attrs'][0x7]?_0xa925e5[_0xd9ff('0x65')][0x7][_0xd9ff('0x66')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0xa925e5[_0xd9ff('0x78')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x8]?_0xa925e5[_0xd9ff('0x65')][0x8][_0xd9ff('0x66')]:undefined)||''},{'name':_0xd9ff('0x79'),'value':_0xa925e5[_0xd9ff('0x79')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x9]?_0xa925e5[_0xd9ff('0x65')][0x9]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0xa925e5[_0xd9ff('0x7a')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0xa]?_0xa925e5[_0xd9ff('0x65')][0xa][_0xd9ff('0x66')]:undefined)||''}];case _0xd9ff('0x7f'):return[{'name':_0xd9ff('0x80'),'type':_0xa925e5[_0xd9ff('0x81')]||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x0]?_0xa925e5['attrs'][0x0]['type']:undefined)||null,'value':_0xa925e5[_0xd9ff('0x80')]||(_0xa925e5['attrs']&&_0xa925e5[_0xd9ff('0x65')][0x0]?_0xa925e5[_0xd9ff('0x65')][0x0][_0xd9ff('0x66')]:undefined)||null},{'name':_0xd9ff('0x82'),'value':_0xa925e5['attrRefresh']||(_0xa925e5[_0xd9ff('0x65')]&&_0xa925e5[_0xd9ff('0x65')][0x1]?_0xa925e5['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x2da2e0){logger[_0xd9ff('0x63')](_0xd9ff('0x83'),JSON[_0xd9ff('0x84')](_0x2da2e0));return[];}}exports[_0xd9ff('0x85')]=function(_0x122739,_0x575c0c,_0x5ba102){if(_0x122739[_0xd9ff('0x56')]['id']){delete _0x122739[_0xd9ff('0x56')]['id'];}return db[_0xd9ff('0x38')][_0xd9ff('0x54')]({'where':{'id':_0x122739[_0xd9ff('0x52')]['id']}})['then'](handleEntityNotFound(_0x575c0c,null))[_0xd9ff('0x2f')](function(_0x26b25f){if(_0x26b25f){_0x122739['body']['DashboardId']=_0x26b25f['id'];_0x122739[_0xd9ff('0x56')][_0xd9ff('0x65')]=widgetAttributes(_0x122739['body']);return db['DashboardItem'][_0xd9ff('0x55')](_0x122739['body']);}})[_0xd9ff('0x2f')](respondWithResult(_0x575c0c,null))[_0xd9ff('0x50')](handleError(_0x575c0c,null));};exports['getItems']=function(_0x172667,_0x2f5844,_0x259f40){var _0x29f6a8={};var _0x417df8={};var _0x53c4d8;var _0x450873;return db[_0xd9ff('0x38')][_0xd9ff('0x86')]({'where':{'id':_0x172667[_0xd9ff('0x52')]['id']}})['then'](handleEntityNotFound(_0x2f5844,null))[_0xd9ff('0x2f')](function(_0xeb7fc9){if(_0xeb7fc9){_0x53c4d8=_0xeb7fc9;_0x417df8['model']=_[_0xd9ff('0x3c')](db['DashboardItem'][_0xd9ff('0x5f')]);_0x417df8[_0xd9ff('0x3b')]=_[_0xd9ff('0x3c')](_0x172667[_0xd9ff('0x3b')]);_0x417df8[_0xd9ff('0x3d')]=_[_0xd9ff('0x40')](_0x417df8['model'],_0x417df8[_0xd9ff('0x3b')]);_0x29f6a8[_0xd9ff('0x3f')]=_[_0xd9ff('0x40')](_0x417df8[_0xd9ff('0x3e')],qs['fields'](_0x172667[_0xd9ff('0x3b')]['fields']));_0x29f6a8[_0xd9ff('0x3f')]=_0x29f6a8[_0xd9ff('0x3f')][_0xd9ff('0x42')]?_0x29f6a8[_0xd9ff('0x3f')]:_0x417df8['model'];_0x29f6a8[_0xd9ff('0x45')]=qs[_0xd9ff('0x46')](_0x172667['query'][_0xd9ff('0x46')]);_0x29f6a8[_0xd9ff('0x4a')]=qs[_0xd9ff('0x3d')](_['pick'](_0x172667[_0xd9ff('0x3b')],_0x417df8[_0xd9ff('0x3d')]));if(_0x172667[_0xd9ff('0x3b')]['filter']){_0x29f6a8[_0xd9ff('0x4a')]=_[_0xd9ff('0x49')](_0x29f6a8['where'],{'$or':_[_0xd9ff('0x37')](_0x29f6a8[_0xd9ff('0x3f')],function(_0x3e7d24){var _0xcf4a32={};_0xcf4a32[_0x3e7d24]={'$like':'%'+_0x172667[_0xd9ff('0x3b')][_0xd9ff('0x48')]+'%'};return _0xcf4a32;})});}_0x29f6a8=_[_0xd9ff('0x49')]({},_0x29f6a8,_0x172667[_0xd9ff('0x4d')]);return _0x53c4d8['getItems'](_0x29f6a8);}})[_0xd9ff('0x2f')](function(_0x31b6d7){if(_0x31b6d7){_0x450873=_0x31b6d7[_0xd9ff('0x42')];if(!_0x172667['query'][_0xd9ff('0x43')]('nolimit')){_0x29f6a8[_0xd9ff('0x28')]=qs[_0xd9ff('0x28')](_0x172667['query'][_0xd9ff('0x28')]);_0x29f6a8[_0xd9ff('0x26')]=qs[_0xd9ff('0x26')](_0x172667[_0xd9ff('0x3b')][_0xd9ff('0x26')]);}return _0x53c4d8[_0xd9ff('0x87')](_0x29f6a8);}})['then'](function(_0x23591b){if(_0x23591b){return _0x23591b?{'count':_0x450873,'rows':_0x23591b}:null;}})[_0xd9ff('0x2f')](respondWithResult(_0x2f5844,null))[_0xd9ff('0x50')](handleError(_0x2f5844,null));};
\ No newline at end of file
index 4953887..c4dad74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49b9=['hasOwnProperty','hook','../../mysqldb','Dashboard','setMaxListeners','update','remove','emit'];(function(_0x264545,_0x214037){var _0x114d10=function(_0x9e3461){while(--_0x9e3461){_0x264545['push'](_0x264545['shift']());}};_0x114d10(++_0x214037);}(_0x49b9,0xaa));var _0x949b=function(_0x2217b4,_0x4670ef){_0x2217b4=_0x2217b4-0x0;var _0x27164c=_0x49b9[_0x2217b4];return _0x27164c;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0x949b('0x0'))['db'][_0x949b('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x949b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x949b('0x3'),'afterDestroy':_0x949b('0x4')};function emitEvent(_0x1ded3c){return function(_0x1e77d1,_0x202b64,_0x134f2b){DashboardEvents[_0x949b('0x5')](_0x1ded3c+':'+_0x1e77d1['id'],_0x1e77d1);DashboardEvents[_0x949b('0x5')](_0x1ded3c,_0x1e77d1);_0x134f2b(null);};}for(var e in events){if(events[_0x949b('0x6')](e)){var event=events[e];Dashboard[_0x949b('0x7')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0xc712=['events','../../mysqldb','Dashboard','setMaxListeners','update','remove','emit','hook','exports'];(function(_0x48f2b7,_0x40f214){var _0x54506f=function(_0x193c0a){while(--_0x193c0a){_0x48f2b7['push'](_0x48f2b7['shift']());}};_0x54506f(++_0x40f214);}(_0xc712,0xbd));var _0x2c71=function(_0x2d43d2,_0x534df0){_0x2d43d2=_0x2d43d2-0x0;var _0x84f400=_0xc712[_0x2d43d2];return _0x84f400;};'use strict';var EventEmitter=require(_0x2c71('0x0'));var Dashboard=require(_0x2c71('0x1'))['db'][_0x2c71('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x2c71('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2c71('0x4'),'afterDestroy':_0x2c71('0x5')};function emitEvent(_0x35f5d5){return function(_0xb1be38,_0x17bf2d,_0x5bfbb5){DashboardEvents[_0x2c71('0x6')](_0x35f5d5+':'+_0xb1be38['id'],_0xb1be38);DashboardEvents[_0x2c71('0x6')](_0x35f5d5,_0xb1be38);_0x5bfbb5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x2c71('0x7')](e,emitEvent(event));}}module[_0x2c71('0x8')]=DashboardEvents;
\ No newline at end of file
index 6eb9c11..3fb15a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aae=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x4c72e5,_0x1b0c1f){var _0x5b1fd5=function(_0xd70b51){while(--_0xd70b51){_0x4c72e5['push'](_0x4c72e5['shift']());}};_0x5b1fd5(++_0x1b0c1f);}(_0x0aae,0x1dd));var _0xe0aa=function(_0x4bc3fc,_0x45a784){_0x4bc3fc=_0x4bc3fc-0x0;var _0x2af9a4=_0x0aae[_0x4bc3fc];return _0x2af9a4;};'use strict';var _=require(_0xe0aa('0x0'));var util=require(_0xe0aa('0x1'));var logger=require(_0xe0aa('0x2'))(_0xe0aa('0x3'));var moment=require(_0xe0aa('0x4'));var BPromise=require(_0xe0aa('0x5'));var rp=require(_0xe0aa('0x6'));var fs=require('fs');var path=require(_0xe0aa('0x7'));var rimraf=require(_0xe0aa('0x8'));var config=require(_0xe0aa('0x9'));var attributes=require(_0xe0aa('0xa'));module[_0xe0aa('0xb')]=function(_0xb2c531,_0x51f365){return _0xb2c531[_0xe0aa('0xc')]('Dashboard',attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x64a6=['Dashboard','dashboards','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./dashboard.attributes','exports'];(function(_0x8aead9,_0x1834bc){var _0x20cbc5=function(_0x2bf9b2){while(--_0x2bf9b2){_0x8aead9['push'](_0x8aead9['shift']());}};_0x20cbc5(++_0x1834bc);}(_0x64a6,0x183));var _0x664a=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x64a6[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x664a('0x0'));var util=require(_0x664a('0x1'));var logger=require(_0x664a('0x2'))('api');var moment=require('moment');var BPromise=require(_0x664a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x664a('0x4'));var rimraf=require(_0x664a('0x5'));var config=require(_0x664a('0x6'));var attributes=require(_0x664a('0x7'));module[_0x664a('0x8')]=function(_0x3ba6f0,_0x19aa7f){return _0x3ba6f0['define'](_0x664a('0x9'),attributes,{'tableName':_0x664a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 53d8bf9..3240bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8406=['request\x20sent','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./dashboard.socket','register','then','info','Dashboard,\x20%s,\x20%s'];(function(_0x588f06,_0x36d85c){var _0x305fef=function(_0x5a1772){while(--_0x5a1772){_0x588f06['push'](_0x588f06['shift']());}};_0x305fef(++_0x36d85c);}(_0x8406,0x1bd));var _0x6840=function(_0x44e771,_0x1b9da6){_0x44e771=_0x44e771-0x0;var _0x4c207f=_0x8406[_0x44e771];return _0x4c207f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x6840('0x0'));var rs=require(_0x6840('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6840('0x2'))('rpc');var config=require(_0x6840('0x3'));var jayson=require(_0x6840('0x4'));var client=jayson[_0x6840('0x5')][_0x6840('0x6')]({'port':0x232a});config[_0x6840('0x7')]=_[_0x6840('0x8')](config[_0x6840('0x7')],{'host':_0x6840('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6840('0x7')]));require(_0x6840('0xa'))[_0x6840('0xb')](socket);function respondWithRpcPromise(_0x2642fc,_0x46ae8e,_0x34bc8b){return new BPromise(function(_0x4f1568,_0x46ba19){return client['request'](_0x2642fc,_0x34bc8b)[_0x6840('0xc')](function(_0xea0b98){logger[_0x6840('0xd')](_0x6840('0xe'),_0x46ae8e,_0x6840('0xf'));logger['debug'](_0x6840('0x10'),_0x46ae8e,'request\x20sent',JSON[_0x6840('0x11')](_0xea0b98));if(_0xea0b98[_0x6840('0x12')]){if(_0xea0b98['error'][_0x6840('0x13')]===0x1f4){logger['error']('Dashboard,\x20%s,\x20%s',_0x46ae8e,_0xea0b98[_0x6840('0x12')][_0x6840('0x14')]);return _0x46ba19(_0xea0b98[_0x6840('0x12')][_0x6840('0x14')]);}logger['error'](_0x6840('0xe'),_0x46ae8e,_0xea0b98[_0x6840('0x12')][_0x6840('0x14')]);return _0x4f1568(_0xea0b98[_0x6840('0x12')][_0x6840('0x14')]);}else{logger[_0x6840('0xd')]('Dashboard,\x20%s,\x20%s',_0x46ae8e,_0x6840('0xf'));_0x4f1568(_0xea0b98[_0x6840('0x15')][_0x6840('0x14')]);}})[_0x6840('0x16')](function(_0x11e56d){logger[_0x6840('0x12')](_0x6840('0xe'),_0x46ae8e,_0x11e56d);_0x46ba19(_0x11e56d);});});}
\ No newline at end of file
+var _0x1841=['stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x21bd51,_0xe0913){var _0xa3626c=function(_0xccf956){while(--_0xccf956){_0x21bd51['push'](_0x21bd51['shift']());}};_0xa3626c(++_0xe0913);}(_0x1841,0x79));var _0x1184=function(_0x1dee0a,_0x2d3faf){_0x1dee0a=_0x1dee0a-0x0;var _0x4dd01d=_0x1841[_0x1dee0a];return _0x4dd01d;};'use strict';var _=require(_0x1184('0x0'));var util=require(_0x1184('0x1'));var moment=require(_0x1184('0x2'));var BPromise=require(_0x1184('0x3'));var rs=require(_0x1184('0x4'));var fs=require('fs');var Redis=require(_0x1184('0x5'));var db=require(_0x1184('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1184('0x7'))(_0x1184('0x8'));var config=require(_0x1184('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1184('0xa')][_0x1184('0xb')]({'port':0x232a});config[_0x1184('0xc')]=_['defaults'](config[_0x1184('0xc')],{'host':_0x1184('0xd'),'port':0x18eb});var socket=require(_0x1184('0xe'))(new Redis(config[_0x1184('0xc')]));require(_0x1184('0xf'))[_0x1184('0x10')](socket);function respondWithRpcPromise(_0x31c7c3,_0x51e7dc,_0xa4f46e){return new BPromise(function(_0x1e59d6,_0x680bfd){return client[_0x1184('0x11')](_0x31c7c3,_0xa4f46e)[_0x1184('0x12')](function(_0x2b1e89){logger[_0x1184('0x13')](_0x1184('0x14'),_0x51e7dc,'request\x20sent');logger[_0x1184('0x15')](_0x1184('0x16'),_0x51e7dc,_0x1184('0x17'),JSON[_0x1184('0x18')](_0x2b1e89));if(_0x2b1e89[_0x1184('0x19')]){if(_0x2b1e89[_0x1184('0x19')]['code']===0x1f4){logger[_0x1184('0x19')](_0x1184('0x14'),_0x51e7dc,_0x2b1e89[_0x1184('0x19')][_0x1184('0x1a')]);return _0x680bfd(_0x2b1e89['error']['message']);}logger[_0x1184('0x19')]('Dashboard,\x20%s,\x20%s',_0x51e7dc,_0x2b1e89[_0x1184('0x19')][_0x1184('0x1a')]);return _0x1e59d6(_0x2b1e89[_0x1184('0x19')][_0x1184('0x1a')]);}else{logger[_0x1184('0x13')]('Dashboard,\x20%s,\x20%s',_0x51e7dc,_0x1184('0x17'));_0x1e59d6(_0x2b1e89[_0x1184('0x1b')][_0x1184('0x1a')]);}})[_0x1184('0x1c')](function(_0x2faa47){logger['error']('Dashboard,\x20%s,\x20%s',_0x51e7dc,_0x2faa47);_0x680bfd(_0x2faa47);});});}
\ No newline at end of file
index ab685bc..e0fd367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91b8=['length','dashboard:','./dashboard.events','save','remove','removeListener','register'];(function(_0x49dd98,_0x8dc77f){var _0x590ce3=function(_0x4826d3){while(--_0x4826d3){_0x49dd98['push'](_0x49dd98['shift']());}};_0x590ce3(++_0x8dc77f);}(_0x91b8,0x19f));var _0x891b=function(_0x10b837,_0x17edce){_0x10b837=_0x10b837-0x0;var _0xf0799e=_0x91b8[_0x10b837];return _0xf0799e;};'use strict';var DashboardEvents=require(_0x891b('0x0'));var events=[_0x891b('0x1'),_0x891b('0x2'),'update'];function createListener(_0x46f75d,_0x20ce97){return function(_0x162f89){_0x20ce97['emit'](_0x46f75d,_0x162f89);};}function removeListener(_0x48c980,_0x4f3b7a){return function(){DashboardEvents[_0x891b('0x3')](_0x48c980,_0x4f3b7a);};}exports[_0x891b('0x4')]=function(_0x1365ae){for(var _0xfe1c8a=0x0,_0x36b01e=events[_0x891b('0x5')];_0xfe1c8a<_0x36b01e;_0xfe1c8a++){var _0x196c13=events[_0xfe1c8a];var _0x25bb24=createListener(_0x891b('0x6')+_0x196c13,_0x1365ae);DashboardEvents['on'](_0x196c13,_0x25bb24);}};
\ No newline at end of file
+var _0x86f6=['emit','removeListener','register','length','save','remove'];(function(_0x1d0598,_0x21dd52){var _0x42e1ac=function(_0x1031f4){while(--_0x1031f4){_0x1d0598['push'](_0x1d0598['shift']());}};_0x42e1ac(++_0x21dd52);}(_0x86f6,0x178));var _0x686f=function(_0x3024a9,_0x17f643){_0x3024a9=_0x3024a9-0x0;var _0x4344b8=_0x86f6[_0x3024a9];return _0x4344b8;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x686f('0x0'),_0x686f('0x1'),'update'];function createListener(_0x73ce7d,_0x5dfbc5){return function(_0x3da30d){_0x5dfbc5[_0x686f('0x2')](_0x73ce7d,_0x3da30d);};}function removeListener(_0x430c47,_0x3fb221){return function(){DashboardEvents[_0x686f('0x3')](_0x430c47,_0x3fb221);};}exports[_0x686f('0x4')]=function(_0x2768c0){for(var _0x58ba67=0x0,_0x40877e=events[_0x686f('0x5')];_0x58ba67<_0x40877e;_0x58ba67++){var _0x55db13=events[_0x58ba67];var _0x119939=createListener('dashboard:'+_0x55db13,_0x2768c0);DashboardEvents['on'](_0x55db13,_0x119939);}};
\ No newline at end of file
index 40bea9a..6221635 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c7=['getItems','post','create','/:id/clone','clone','addItem','put','update','delete','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./dashboard.controller','isAuthenticated','index','get','/:id','show','/:id/items'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0x31c7,0x179));var _0x731c=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x31c7[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x731c('0x0'));var util=require(_0x731c('0x1'));var path=require(_0x731c('0x2'));var timeout=require(_0x731c('0x3'));var express=require('express');var router=express[_0x731c('0x4')]();var fs_extra=require(_0x731c('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x731c('0x6'));var controller=require(_0x731c('0x7'));router['get']('/',auth[_0x731c('0x8')](),controller[_0x731c('0x9')]);router[_0x731c('0xa')](_0x731c('0xb'),auth[_0x731c('0x8')](),controller[_0x731c('0xc')]);router[_0x731c('0xa')](_0x731c('0xd'),auth[_0x731c('0x8')](),controller[_0x731c('0xe')]);router[_0x731c('0xf')]('/',auth[_0x731c('0x8')](),controller[_0x731c('0x10')]);router[_0x731c('0xf')](_0x731c('0x11'),auth[_0x731c('0x8')](),controller[_0x731c('0x12')]);router[_0x731c('0xf')]('/:id/items',auth[_0x731c('0x8')](),controller[_0x731c('0x13')]);router[_0x731c('0x14')](_0x731c('0xb'),auth[_0x731c('0x8')](),controller[_0x731c('0x15')]);router[_0x731c('0x16')](_0x731c('0xb'),auth[_0x731c('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x410e=['isAuthenticated','index','/:id/items','getItems','create','/:id/clone','clone','post','addItem','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboard.controller','get'];(function(_0x152c94,_0x1b9c39){var _0x4c46e8=function(_0xc758f1){while(--_0xc758f1){_0x152c94['push'](_0x152c94['shift']());}};_0x4c46e8(++_0x1b9c39);}(_0x410e,0x115));var _0xe410=function(_0x1e85e8,_0x2841e7){_0x1e85e8=_0x1e85e8-0x0;var _0x40efb9=_0x410e[_0x1e85e8];return _0x40efb9;};'use strict';var multer=require(_0xe410('0x0'));var util=require(_0xe410('0x1'));var path=require(_0xe410('0x2'));var timeout=require(_0xe410('0x3'));var express=require(_0xe410('0x4'));var router=express[_0xe410('0x5')]();var fs_extra=require(_0xe410('0x6'));var auth=require(_0xe410('0x7'));var interaction=require(_0xe410('0x8'));var config=require('../../config/environment');var controller=require(_0xe410('0x9'));router[_0xe410('0xa')]('/',auth[_0xe410('0xb')](),controller[_0xe410('0xc')]);router[_0xe410('0xa')]('/:id',auth[_0xe410('0xb')](),controller['show']);router[_0xe410('0xa')](_0xe410('0xd'),auth[_0xe410('0xb')](),controller[_0xe410('0xe')]);router['post']('/',auth[_0xe410('0xb')](),controller[_0xe410('0xf')]);router['post'](_0xe410('0x10'),auth[_0xe410('0xb')](),controller[_0xe410('0x11')]);router[_0xe410('0x12')](_0xe410('0xd'),auth[_0xe410('0xb')](),controller[_0xe410('0x13')]);router[_0xe410('0x14')](_0xe410('0x15'),auth[_0xe410('0xb')](),controller['update']);router[_0xe410('0x16')](_0xe410('0x15'),auth[_0xe410('0xb')](),controller['destroy']);module[_0xe410('0x17')]=router;
\ No newline at end of file
index ac430e8..c535fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['#ffffff','squel','lodash','STRING','TEXT','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x7083a2,_0x5cc787){var _0x3d42aa=function(_0x1f691d){while(--_0x1f691d){_0x7083a2['push'](_0x7083a2['shift']());}};_0x3d42aa(++_0x5cc787);}(_0x6f47,0xc7));var _0x76f4=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x6f47[_0x9cd4c3];return _0x4c9025;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));module['exports']={'title':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x76f4('0x3')]('long'),'get':function(){try{return JSON[_0x76f4('0x4')](this[_0x76f4('0x5')](_0x76f4('0x6')));}catch(_0x2523ba){return[];}},'set':function(_0x5754ca){try{this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')](_0x5754ca));}catch(_0x497f99){this[_0x76f4('0x7')](_0x76f4('0x6'),JSON[_0x76f4('0x8')]([]));}}},'sizeX':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x76f4('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0x76f4('0x2')],'allowNull':![],'defaultValue':_0x76f4('0xa'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x76f4('0x2')]},'titleFontSize':{'type':Sequelize[_0x76f4('0x9')],'defaultValue':0xc}};
\ No newline at end of file
+var _0xba34=['attrs','setDataValue','stringify','INTEGER','#ffffff','sequelize','squel','lodash','exports','STRING','parse','getDataValue'];(function(_0x24f5b1,_0x350007){var _0x451a13=function(_0x30d668){while(--_0x30d668){_0x24f5b1['push'](_0x24f5b1['shift']());}};_0x451a13(++_0x350007);}(_0xba34,0x119));var _0x4ba3=function(_0x5c3036,_0x14ac8e){_0x5c3036=_0x5c3036-0x0;var _0x509cac=_0xba34[_0x5c3036];return _0x509cac;};'use strict';var Sequelize=require(_0x4ba3('0x0'));var squel=require(_0x4ba3('0x1'));var _=require(_0x4ba3('0x2'));module[_0x4ba3('0x3')]={'title':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT']('long'),'get':function(){try{return JSON[_0x4ba3('0x5')](this[_0x4ba3('0x6')](_0x4ba3('0x7')));}catch(_0x1011ec){return[];}},'set':function(_0x3590a1){try{this[_0x4ba3('0x8')](_0x4ba3('0x7'),JSON['stringify'](_0x3590a1));}catch(_0x6254fb){this[_0x4ba3('0x8')](_0x4ba3('0x7'),JSON[_0x4ba3('0x9')]([]));}}},'sizeX':{'type':Sequelize[_0x4ba3('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x4ba3('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x4ba3('0xa')]},'col':{'type':Sequelize[_0x4ba3('0xa')]},'background':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![],'defaultValue':_0x4ba3('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x4ba3('0x4')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x4ba3('0x4')]},'titleFontSize':{'type':Sequelize[_0x4ba3('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 76fa9b1..f383c65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0a=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','reject','save','update','then','destroy','error','stack','name','show','params','model','DashboardItem','query','fields','attributes','includeAll','include','merge','find','catch','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','type','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x22b430,_0x1aede5){var _0x338d2a=function(_0x1335f7){while(--_0x1335f7){_0x22b430['push'](_0x22b430['shift']());}};_0x338d2a(++_0x1aede5);}(_0x8d0a,0x172));var _0xa8d0=function(_0x425358,_0x29d6a8){_0x425358=_0x425358-0x0;var _0x486e15=_0x8d0a[_0x425358];return _0x486e15;};'use strict';var emlformat=require(_0xa8d0('0x0'));var rimraf=require(_0xa8d0('0x1'));var zipdir=require(_0xa8d0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa8d0('0x3'));var moment=require(_0xa8d0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa8d0('0x5'));var util=require(_0xa8d0('0x6'));var path=require(_0xa8d0('0x7'));var sox=require('sox');var csv=require(_0xa8d0('0x8'));var ejs=require(_0xa8d0('0x9'));var fs=require('fs');var fs_extra=require(_0xa8d0('0xa'));var _=require(_0xa8d0('0xb'));var squel=require(_0xa8d0('0xc'));var crypto=require(_0xa8d0('0xd'));var jsforce=require(_0xa8d0('0xe'));var deskjs=require(_0xa8d0('0xf'));var toCsv=require(_0xa8d0('0x8'));var querystring=require(_0xa8d0('0x10'));var Papa=require(_0xa8d0('0x11'));var Redis=require(_0xa8d0('0x12'));var authService=require(_0xa8d0('0x13'));var qs=require(_0xa8d0('0x14'));var as=require(_0xa8d0('0x15'));var hardwareService=require(_0xa8d0('0x16'));var logger=require(_0xa8d0('0x17'))(_0xa8d0('0x18'));var utils=require(_0xa8d0('0x19'));var config=require(_0xa8d0('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xa8d0('0x1b')]=_[_0xa8d0('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xa8d0('0x1d'))(new Redis(config[_0xa8d0('0x1b')]));require(_0xa8d0('0x1e'))[_0xa8d0('0x1f')](socket);function respondWithStatusCode(_0x2ebddf,_0x18f935){_0x18f935=_0x18f935||0xcc;return function(_0x192b0a){if(_0x192b0a){return _0x2ebddf[_0xa8d0('0x20')](_0x18f935);}return _0x2ebddf[_0xa8d0('0x21')](_0x18f935)[_0xa8d0('0x22')]();};}function respondWithResult(_0xfa19ee,_0x575f69){_0x575f69=_0x575f69||0xc8;return function(_0x728809){if(_0x728809){return _0xfa19ee[_0xa8d0('0x21')](_0x575f69)['json'](_0x728809);}};}function respondWithFilteredResult(_0x3e1dc6,_0x15620f){return function(_0x2899fb){if(_0x2899fb){var _0x434ad5=typeof _0x15620f[_0xa8d0('0x23')]==='undefined'&&typeof _0x15620f[_0xa8d0('0x24')]===_0xa8d0('0x25');var _0x213de2=_0x2899fb[_0xa8d0('0x26')];var _0x1b5dfb=_0x434ad5?0x0:_0x15620f[_0xa8d0('0x23')];var _0x21a6ca=_0x434ad5?_0x2899fb['count']:_0x15620f[_0xa8d0('0x23')]+_0x15620f[_0xa8d0('0x24')];var _0x3c8843;if(_0x21a6ca>=_0x213de2){_0x21a6ca=_0x213de2;_0x3c8843=0xc8;}else{_0x3c8843=0xce;}_0x3e1dc6[_0xa8d0('0x21')](_0x3c8843);return _0x3e1dc6['set'](_0xa8d0('0x27'),_0x1b5dfb+'-'+_0x21a6ca+'/'+_0x213de2)[_0xa8d0('0x28')](_0x2899fb);}return null;};}function patchUpdates(_0x3212a3){return function(_0x252682){try{jsonpatch['apply'](_0x252682,_0x3212a3,!![]);}catch(_0x150080){return BPromise[_0xa8d0('0x29')](_0x150080);}return _0x252682[_0xa8d0('0x2a')]();};}function saveUpdates(_0x1e9c3e,_0x55e6e0){return function(_0x35b4a6){if(_0x35b4a6){return _0x35b4a6[_0xa8d0('0x2b')](_0x1e9c3e)[_0xa8d0('0x2c')](function(_0x507d18){return _0x507d18;});}return null;};}function removeEntity(_0x34c0bf,_0x5f5dfb){return function(_0x3efa4e){if(_0x3efa4e){return _0x3efa4e[_0xa8d0('0x2d')]()['then'](function(){_0x34c0bf['status'](0xcc)[_0xa8d0('0x22')]();});}};}function handleEntityNotFound(_0x5d9a04,_0x312a29){return function(_0x327673){if(!_0x327673){_0x5d9a04[_0xa8d0('0x20')](0x194);}return _0x327673;};}function handleError(_0x460fae,_0x3ceaa9){_0x3ceaa9=_0x3ceaa9||0x1f4;return function(_0x5a5079){logger[_0xa8d0('0x2e')](_0x5a5079[_0xa8d0('0x2f')]);if(_0x5a5079[_0xa8d0('0x30')]){delete _0x5a5079['name'];}_0x460fae['status'](_0x3ceaa9)['send'](_0x5a5079);};}exports[_0xa8d0('0x31')]=function(_0xe5c8db,_0x2a8e98){var _0x1ae23f={'raw':![],'where':{'id':_0xe5c8db[_0xa8d0('0x32')]['id']}},_0x2c9ff2={};_0x2c9ff2[_0xa8d0('0x33')]=_['keys'](db[_0xa8d0('0x34')]['rawAttributes']);_0x2c9ff2[_0xa8d0('0x35')]=_['keys'](_0xe5c8db['query']);_0x2c9ff2['filters']=_['intersection'](_0x2c9ff2[_0xa8d0('0x33')],_0x2c9ff2[_0xa8d0('0x35')]);_0x1ae23f['attributes']=_['intersection'](_0x2c9ff2[_0xa8d0('0x33')],qs[_0xa8d0('0x36')](_0xe5c8db[_0xa8d0('0x35')][_0xa8d0('0x36')]));_0x1ae23f[_0xa8d0('0x37')]=_0x1ae23f['attributes']['length']?_0x1ae23f[_0xa8d0('0x37')]:_0x2c9ff2[_0xa8d0('0x33')];if(_0xe5c8db[_0xa8d0('0x35')][_0xa8d0('0x38')]){_0x1ae23f[_0xa8d0('0x39')]=[{'all':!![]}];}_0x1ae23f=_[_0xa8d0('0x3a')]({},_0x1ae23f,_0xe5c8db['options']);return db[_0xa8d0('0x34')][_0xa8d0('0x3b')](_0x1ae23f)[_0xa8d0('0x2c')](handleEntityNotFound(_0x2a8e98,null))['then'](respondWithResult(_0x2a8e98,null))[_0xa8d0('0x3c')](handleError(_0x2a8e98,null));};exports[_0xa8d0('0x2d')]=function(_0x285f08,_0x424a1d){return db[_0xa8d0('0x34')][_0xa8d0('0x3b')]({'where':{'id':_0x285f08[_0xa8d0('0x32')]['id']}})[_0xa8d0('0x2c')](handleEntityNotFound(_0x424a1d,null))[_0xa8d0('0x2c')](removeEntity(_0x424a1d,null))[_0xa8d0('0x3c')](handleError(_0x424a1d,null));};function widgetAttributes(_0x3563a9){try{switch(_0x3563a9['type']){case _0xa8d0('0x3d'):return[{'name':'attrUrl','value':_0x3563a9[_0xa8d0('0x3e')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x0]?_0x3563a9['attrs'][0x0][_0xa8d0('0x40')]:undefined)||_0xa8d0('0x41')}];case _0xa8d0('0x42'):return[{'name':'attrPath','value':_0x3563a9[_0xa8d0('0x43')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x0]?_0x3563a9[_0xa8d0('0x3f')][0x0][_0xa8d0('0x40')]:undefined)||''}];case _0xa8d0('0x44'):return[{'name':_0xa8d0('0x45'),'value':_0x3563a9[_0xa8d0('0x45')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9['attrs'][0x0]?_0x3563a9[_0xa8d0('0x3f')][0x0][_0xa8d0('0x40')]:undefined)||_0xa8d0('0x46')},{'name':_0xa8d0('0x47'),'value':_0x3563a9[_0xa8d0('0x47')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x1]?_0x3563a9[_0xa8d0('0x3f')][0x1][_0xa8d0('0x40')]:undefined)||'0.00'},{'name':_0xa8d0('0x48'),'value':_0x3563a9['attrFontSize']||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x2]?_0x3563a9['attrs'][0x2][_0xa8d0('0x40')]:undefined)||0xc}];case'counter':return[{'name':_0xa8d0('0x49'),'value':_0x3563a9[_0xa8d0('0x49')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9['attrs'][0x0]?_0x3563a9['attrs'][0x0][_0xa8d0('0x40')]:undefined)||_0xa8d0('0x4a')},{'name':_0xa8d0('0x4b'),'value':_0x3563a9[_0xa8d0('0x4b')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x1]?_0x3563a9[_0xa8d0('0x3f')][0x1][_0xa8d0('0x40')]:undefined)||[]},{'name':'attrFontSize','value':_0x3563a9[_0xa8d0('0x48')]||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x2]?_0x3563a9['attrs'][0x2][_0xa8d0('0x40')]:undefined)||0x14},{'name':_0xa8d0('0x4c'),'value':_0x3563a9[_0xa8d0('0x4c')]||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x3]?_0x3563a9[_0xa8d0('0x3f')][0x3][_0xa8d0('0x40')]:undefined)||_0xa8d0('0x4d')},{'name':_0xa8d0('0x4e'),'value':_0x3563a9[_0xa8d0('0x4e')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x4]?_0x3563a9[_0xa8d0('0x3f')][0x4][_0xa8d0('0x40')]:undefined)||''},{'name':_0xa8d0('0x4f'),'value':_0x3563a9[_0xa8d0('0x4f')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x5]?_0x3563a9[_0xa8d0('0x3f')][0x5]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0x3563a9[_0xa8d0('0x50')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x6]?_0x3563a9[_0xa8d0('0x3f')][0x6][_0xa8d0('0x40')]:undefined)||''},{'name':_0xa8d0('0x51'),'value':_0x3563a9[_0xa8d0('0x51')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x7]?_0x3563a9[_0xa8d0('0x3f')][0x7][_0xa8d0('0x40')]:undefined)||''},{'name':_0xa8d0('0x52'),'value':_0x3563a9[_0xa8d0('0x52')]||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x8]?_0x3563a9[_0xa8d0('0x3f')][0x8][_0xa8d0('0x40')]:undefined)||''},{'name':'attrChatWebsites','value':_0x3563a9[_0xa8d0('0x53')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x9]?_0x3563a9[_0xa8d0('0x3f')][0x9][_0xa8d0('0x40')]:undefined)||''}];case'multibar-chart':case'pie-chart':return[{'name':_0xa8d0('0x54'),'value':_0x3563a9[_0xa8d0('0x54')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x0]?_0x3563a9[_0xa8d0('0x3f')][0x0][_0xa8d0('0x40')]:undefined)||_0xa8d0('0x4a')},{'name':_0xa8d0('0x55'),'value':_0x3563a9[_0xa8d0('0x55')]||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x1]?_0x3563a9[_0xa8d0('0x3f')][0x1][_0xa8d0('0x40')]:undefined)||null},{'name':_0xa8d0('0x56'),'value':_0x3563a9[_0xa8d0('0x56')]||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x2]?_0x3563a9['attrs'][0x2][_0xa8d0('0x40')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x3563a9[_0xa8d0('0x4b')]||(_0x3563a9['attrs']&&_0x3563a9['attrs'][0x3]?_0x3563a9[_0xa8d0('0x3f')][0x3][_0xa8d0('0x40')]:undefined)||[]},{'name':_0xa8d0('0x4c'),'value':_0x3563a9['attrChannel']||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9['attrs'][0x4]?_0x3563a9['attrs'][0x4][_0xa8d0('0x40')]:undefined)||_0xa8d0('0x4d')},{'name':_0xa8d0('0x4e'),'value':_0x3563a9['attrEmailAccounts']||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x5]?_0x3563a9[_0xa8d0('0x3f')][0x5][_0xa8d0('0x40')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x3563a9[_0xa8d0('0x4f')]||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x6]?_0x3563a9[_0xa8d0('0x3f')][0x6][_0xa8d0('0x40')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x3563a9[_0xa8d0('0x50')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x7]?_0x3563a9['attrs'][0x7]['value']:undefined)||''},{'name':_0xa8d0('0x51'),'value':_0x3563a9[_0xa8d0('0x51')]||(_0x3563a9['attrs']&&_0x3563a9['attrs'][0x8]?_0x3563a9[_0xa8d0('0x3f')][0x8][_0xa8d0('0x40')]:undefined)||''},{'name':_0xa8d0('0x52'),'value':_0x3563a9['attrWhatsappAccounts']||(_0x3563a9['attrs']&&_0x3563a9[_0xa8d0('0x3f')][0x9]?_0x3563a9['attrs'][0x9][_0xa8d0('0x40')]:undefined)||''},{'name':_0xa8d0('0x53'),'value':_0x3563a9['attrChatWebsites']||(_0x3563a9['attrs']&&_0x3563a9['attrs'][0xa]?_0x3563a9[_0xa8d0('0x3f')][0xa]['value']:undefined)||''}];case _0xa8d0('0x57'):return[{'name':_0xa8d0('0x58'),'type':_0x3563a9[_0xa8d0('0x59')]||(_0x3563a9['attrs']&&_0x3563a9['attrs'][0x0]?_0x3563a9['attrs'][0x0][_0xa8d0('0x5a')]:undefined)||null,'value':_0x3563a9[_0xa8d0('0x58')]||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9[_0xa8d0('0x3f')][0x0]?_0x3563a9[_0xa8d0('0x3f')][0x0]['value']:undefined)||null},{'name':_0xa8d0('0x5b'),'value':_0x3563a9['attrRefresh']||(_0x3563a9[_0xa8d0('0x3f')]&&_0x3563a9['attrs'][0x1]?_0x3563a9[_0xa8d0('0x3f')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x16b690){logger[_0xa8d0('0x2e')](_0xa8d0('0x5c'),JSON[_0xa8d0('0x5d')](_0x16b690));return[];}}exports['create']=function(_0x409614,_0x1bbb16){if(_0x409614['body']){_0x409614[_0xa8d0('0x5e')][_0xa8d0('0x3f')]=widgetAttributes(_0x409614['body']);}return db[_0xa8d0('0x34')][_0xa8d0('0x5f')](_0x409614[_0xa8d0('0x5e')],{})[_0xa8d0('0x2c')](respondWithResult(_0x1bbb16,0xc9))['catch'](handleError(_0x1bbb16,null));};exports['update']=function(_0x2664fe,_0x62b34e){if(_0x2664fe[_0xa8d0('0x5e')]['id']){delete _0x2664fe[_0xa8d0('0x5e')]['id'];}_0x2664fe[_0xa8d0('0x5e')]['attrs']=widgetAttributes(_0x2664fe[_0xa8d0('0x5e')]);return db[_0xa8d0('0x34')][_0xa8d0('0x3b')]({'where':{'id':_0x2664fe[_0xa8d0('0x32')]['id']}})[_0xa8d0('0x2c')](handleEntityNotFound(_0x62b34e,null))[_0xa8d0('0x2c')](saveUpdates(_0x2664fe['body'],null))[_0xa8d0('0x2c')](respondWithResult(_0x62b34e,null))[_0xa8d0('0x3c')](handleError(_0x62b34e,null));};
\ No newline at end of file
+var _0x27a8=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','socket.io-emitter','./dashboardItem.socket','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','update','then','name','send','show','model','keys','DashboardItem','query','filters','intersection','attributes','fields','includeAll','include','merge','options','find','params','attrUrl','attrs','value','https://','custom','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','attrSerie1','total','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','create','body','catch','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x3358b9,_0x4bdab0){var _0x4c15eb=function(_0x3b04b1){while(--_0x3b04b1){_0x3358b9['push'](_0x3358b9['shift']());}};_0x4c15eb(++_0x4bdab0);}(_0x27a8,0x170));var _0x827a=function(_0x3db71e,_0x275086){_0x3db71e=_0x3db71e-0x0;var _0x4240a1=_0x27a8[_0x3db71e];return _0x4240a1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x827a('0x0'));var jsonpatch=require(_0x827a('0x1'));var rp=require(_0x827a('0x2'));var moment=require(_0x827a('0x3'));var BPromise=require(_0x827a('0x4'));var Mustache=require(_0x827a('0x5'));var util=require(_0x827a('0x6'));var path=require(_0x827a('0x7'));var sox=require(_0x827a('0x8'));var csv=require(_0x827a('0x9'));var ejs=require(_0x827a('0xa'));var fs=require('fs');var fs_extra=require(_0x827a('0xb'));var _=require(_0x827a('0xc'));var squel=require(_0x827a('0xd'));var crypto=require(_0x827a('0xe'));var jsforce=require(_0x827a('0xf'));var deskjs=require(_0x827a('0x10'));var toCsv=require(_0x827a('0x9'));var querystring=require(_0x827a('0x11'));var Papa=require(_0x827a('0x12'));var Redis=require(_0x827a('0x13'));var authService=require(_0x827a('0x14'));var qs=require(_0x827a('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x827a('0x16'))(_0x827a('0x17'));var utils=require(_0x827a('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x827a('0x19'))['db'];config[_0x827a('0x1a')]=_['defaults'](config[_0x827a('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x827a('0x1b'))(new Redis(config[_0x827a('0x1a')]));require(_0x827a('0x1c'))['register'](socket);function respondWithStatusCode(_0x490028,_0x2b8117){_0x2b8117=_0x2b8117||0xcc;return function(_0x173d28){if(_0x173d28){return _0x490028[_0x827a('0x1d')](_0x2b8117);}return _0x490028['status'](_0x2b8117)[_0x827a('0x1e')]();};}function respondWithResult(_0x7c67c1,_0x1881e4){_0x1881e4=_0x1881e4||0xc8;return function(_0x47e8fc){if(_0x47e8fc){return _0x7c67c1[_0x827a('0x1f')](_0x1881e4)[_0x827a('0x20')](_0x47e8fc);}};}function respondWithFilteredResult(_0x3b38af,_0x5bde2d){return function(_0x5c6aab){if(_0x5c6aab){var _0x1c1e44=typeof _0x5bde2d[_0x827a('0x21')]==='undefined'&&typeof _0x5bde2d['limit']===_0x827a('0x22');var _0x5d1724=_0x5c6aab['count'];var _0x338023=_0x1c1e44?0x0:_0x5bde2d[_0x827a('0x21')];var _0x31a6c8=_0x1c1e44?_0x5c6aab['count']:_0x5bde2d['offset']+_0x5bde2d[_0x827a('0x23')];var _0x233ca5;if(_0x31a6c8>=_0x5d1724){_0x31a6c8=_0x5d1724;_0x233ca5=0xc8;}else{_0x233ca5=0xce;}_0x3b38af['status'](_0x233ca5);return _0x3b38af[_0x827a('0x24')](_0x827a('0x25'),_0x338023+'-'+_0x31a6c8+'/'+_0x5d1724)[_0x827a('0x20')](_0x5c6aab);}return null;};}function patchUpdates(_0x7ae849){return function(_0x489f02){try{jsonpatch[_0x827a('0x26')](_0x489f02,_0x7ae849,!![]);}catch(_0x5496bc){return BPromise['reject'](_0x5496bc);}return _0x489f02['save']();};}function saveUpdates(_0x11670e,_0x34d8a8){return function(_0x512c3e){if(_0x512c3e){return _0x512c3e[_0x827a('0x27')](_0x11670e)[_0x827a('0x28')](function(_0x2e489c){return _0x2e489c;});}return null;};}function removeEntity(_0x25a049,_0x2f6897){return function(_0x33eb62){if(_0x33eb62){return _0x33eb62['destroy']()[_0x827a('0x28')](function(){_0x25a049[_0x827a('0x1f')](0xcc)[_0x827a('0x1e')]();});}};}function handleEntityNotFound(_0x49645d,_0xa86e63){return function(_0xe6a978){if(!_0xe6a978){_0x49645d[_0x827a('0x1d')](0x194);}return _0xe6a978;};}function handleError(_0x232965,_0x3bb8fc){_0x3bb8fc=_0x3bb8fc||0x1f4;return function(_0x3e492b){logger['error'](_0x3e492b['stack']);if(_0x3e492b[_0x827a('0x29')]){delete _0x3e492b[_0x827a('0x29')];}_0x232965[_0x827a('0x1f')](_0x3bb8fc)[_0x827a('0x2a')](_0x3e492b);};}exports[_0x827a('0x2b')]=function(_0x13d5df,_0x960cd2){var _0x11e4fd={'raw':![],'where':{'id':_0x13d5df['params']['id']}},_0x554b1e={};_0x554b1e[_0x827a('0x2c')]=_[_0x827a('0x2d')](db[_0x827a('0x2e')]['rawAttributes']);_0x554b1e[_0x827a('0x2f')]=_[_0x827a('0x2d')](_0x13d5df[_0x827a('0x2f')]);_0x554b1e[_0x827a('0x30')]=_[_0x827a('0x31')](_0x554b1e[_0x827a('0x2c')],_0x554b1e[_0x827a('0x2f')]);_0x11e4fd[_0x827a('0x32')]=_[_0x827a('0x31')](_0x554b1e[_0x827a('0x2c')],qs[_0x827a('0x33')](_0x13d5df['query']['fields']));_0x11e4fd[_0x827a('0x32')]=_0x11e4fd[_0x827a('0x32')]['length']?_0x11e4fd['attributes']:_0x554b1e[_0x827a('0x2c')];if(_0x13d5df[_0x827a('0x2f')][_0x827a('0x34')]){_0x11e4fd[_0x827a('0x35')]=[{'all':!![]}];}_0x11e4fd=_[_0x827a('0x36')]({},_0x11e4fd,_0x13d5df[_0x827a('0x37')]);return db['DashboardItem'][_0x827a('0x38')](_0x11e4fd)['then'](handleEntityNotFound(_0x960cd2,null))[_0x827a('0x28')](respondWithResult(_0x960cd2,null))['catch'](handleError(_0x960cd2,null));};exports['destroy']=function(_0x51476c,_0x4e5f11){return db['DashboardItem'][_0x827a('0x38')]({'where':{'id':_0x51476c[_0x827a('0x39')]['id']}})[_0x827a('0x28')](handleEntityNotFound(_0x4e5f11,null))[_0x827a('0x28')](removeEntity(_0x4e5f11,null))['catch'](handleError(_0x4e5f11,null));};function widgetAttributes(_0x383315){try{switch(_0x383315['type']){case'iframe':return[{'name':_0x827a('0x3a'),'value':_0x383315[_0x827a('0x3a')]||(_0x383315['attrs']&&_0x383315['attrs'][0x0]?_0x383315[_0x827a('0x3b')][0x0][_0x827a('0x3c')]:undefined)||_0x827a('0x3d')}];case _0x827a('0x3e'):return[{'name':'attrPath','value':_0x383315['attrPath']||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x0]?_0x383315['attrs'][0x0][_0x827a('0x3c')]:undefined)||''}];case'clock':return[{'name':_0x827a('0x3f'),'value':_0x383315[_0x827a('0x3f')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x0]?_0x383315[_0x827a('0x3b')][0x0][_0x827a('0x3c')]:undefined)||_0x827a('0x40')},{'name':_0x827a('0x41'),'value':_0x383315[_0x827a('0x41')]||(_0x383315['attrs']&&_0x383315['attrs'][0x1]?_0x383315[_0x827a('0x3b')][0x1][_0x827a('0x3c')]:undefined)||_0x827a('0x42')},{'name':_0x827a('0x43'),'value':_0x383315['attrFontSize']||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x2]?_0x383315[_0x827a('0x3b')][0x2][_0x827a('0x3c')]:undefined)||0xc}];case _0x827a('0x44'):return[{'name':_0x827a('0x45'),'value':_0x383315['attrMetric']||(_0x383315[_0x827a('0x3b')]&&_0x383315['attrs'][0x0]?_0x383315[_0x827a('0x3b')][0x0][_0x827a('0x3c')]:undefined)||'total'},{'name':_0x827a('0x46'),'value':_0x383315[_0x827a('0x46')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x1]?_0x383315[_0x827a('0x3b')][0x1]['value']:undefined)||[]},{'name':_0x827a('0x43'),'value':_0x383315[_0x827a('0x43')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x2]?_0x383315[_0x827a('0x3b')][0x2][_0x827a('0x3c')]:undefined)||0x14},{'name':_0x827a('0x47'),'value':_0x383315['attrChannel']||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x3]?_0x383315['attrs'][0x3]['value']:undefined)||_0x827a('0x48')},{'name':_0x827a('0x49'),'value':_0x383315[_0x827a('0x49')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x4]?_0x383315['attrs'][0x4][_0x827a('0x3c')]:undefined)||''},{'name':_0x827a('0x4a'),'value':_0x383315[_0x827a('0x4a')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x5]?_0x383315[_0x827a('0x3b')][0x5][_0x827a('0x3c')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x383315[_0x827a('0x4b')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x6]?_0x383315['attrs'][0x6][_0x827a('0x3c')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x383315[_0x827a('0x4c')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x7]?_0x383315[_0x827a('0x3b')][0x7][_0x827a('0x3c')]:undefined)||''},{'name':_0x827a('0x4d'),'value':_0x383315[_0x827a('0x4d')]||(_0x383315[_0x827a('0x3b')]&&_0x383315['attrs'][0x8]?_0x383315['attrs'][0x8][_0x827a('0x3c')]:undefined)||''},{'name':'attrChatWebsites','value':_0x383315[_0x827a('0x4e')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x9]?_0x383315[_0x827a('0x3b')][0x9][_0x827a('0x3c')]:undefined)||''}];case'multibar-chart':case'pie-chart':return[{'name':_0x827a('0x4f'),'value':_0x383315['attrSerie1']||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x0]?_0x383315['attrs'][0x0][_0x827a('0x3c')]:undefined)||_0x827a('0x50')},{'name':_0x827a('0x51'),'value':_0x383315['attrSerie2']||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x1]?_0x383315[_0x827a('0x3b')][0x1][_0x827a('0x3c')]:undefined)||null},{'name':'attrSerie3','value':_0x383315[_0x827a('0x52')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x2]?_0x383315[_0x827a('0x3b')][0x2][_0x827a('0x3c')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x383315[_0x827a('0x46')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x3]?_0x383315[_0x827a('0x3b')][0x3][_0x827a('0x3c')]:undefined)||[]},{'name':_0x827a('0x47'),'value':_0x383315[_0x827a('0x47')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x4]?_0x383315[_0x827a('0x3b')][0x4][_0x827a('0x3c')]:undefined)||_0x827a('0x48')},{'name':'attrEmailAccounts','value':_0x383315[_0x827a('0x49')]||(_0x383315['attrs']&&_0x383315['attrs'][0x5]?_0x383315[_0x827a('0x3b')][0x5][_0x827a('0x3c')]:undefined)||''},{'name':_0x827a('0x4a'),'value':_0x383315['attrFaxAccounts']||(_0x383315['attrs']&&_0x383315['attrs'][0x6]?_0x383315[_0x827a('0x3b')][0x6][_0x827a('0x3c')]:undefined)||''},{'name':_0x827a('0x4b'),'value':_0x383315[_0x827a('0x4b')]||(_0x383315[_0x827a('0x3b')]&&_0x383315['attrs'][0x7]?_0x383315['attrs'][0x7][_0x827a('0x3c')]:undefined)||''},{'name':_0x827a('0x4c'),'value':_0x383315[_0x827a('0x4c')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x8]?_0x383315[_0x827a('0x3b')][0x8][_0x827a('0x3c')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x383315[_0x827a('0x4d')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x9]?_0x383315[_0x827a('0x3b')][0x9][_0x827a('0x3c')]:undefined)||''},{'name':_0x827a('0x4e'),'value':_0x383315[_0x827a('0x4e')]||(_0x383315[_0x827a('0x3b')]&&_0x383315['attrs'][0xa]?_0x383315[_0x827a('0x3b')][0xa][_0x827a('0x3c')]:undefined)||''}];case _0x827a('0x53'):return[{'name':_0x827a('0x54'),'type':_0x383315[_0x827a('0x55')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x0]?_0x383315['attrs'][0x0]['type']:undefined)||null,'value':_0x383315[_0x827a('0x54')]||(_0x383315[_0x827a('0x3b')]&&_0x383315[_0x827a('0x3b')][0x0]?_0x383315['attrs'][0x0][_0x827a('0x3c')]:undefined)||null},{'name':_0x827a('0x56'),'value':_0x383315[_0x827a('0x56')]||(_0x383315['attrs']&&_0x383315[_0x827a('0x3b')][0x1]?_0x383315[_0x827a('0x3b')][0x1][_0x827a('0x3c')]:undefined)||0x0}];default:return[];}}catch(_0x1def46){logger[_0x827a('0x57')](_0x827a('0x58'),JSON[_0x827a('0x59')](_0x1def46));return[];}}exports[_0x827a('0x5a')]=function(_0x16e35d,_0x1056dc){if(_0x16e35d[_0x827a('0x5b')]){_0x16e35d[_0x827a('0x5b')][_0x827a('0x3b')]=widgetAttributes(_0x16e35d[_0x827a('0x5b')]);}return db['DashboardItem'][_0x827a('0x5a')](_0x16e35d[_0x827a('0x5b')],{})[_0x827a('0x28')](respondWithResult(_0x1056dc,0xc9))['catch'](handleError(_0x1056dc,null));};exports[_0x827a('0x27')]=function(_0x2939ea,_0x5d37df){if(_0x2939ea[_0x827a('0x5b')]['id']){delete _0x2939ea['body']['id'];}_0x2939ea[_0x827a('0x5b')]['attrs']=widgetAttributes(_0x2939ea[_0x827a('0x5b')]);return db[_0x827a('0x2e')][_0x827a('0x38')]({'where':{'id':_0x2939ea['params']['id']}})[_0x827a('0x28')](handleEntityNotFound(_0x5d37df,null))[_0x827a('0x28')](saveUpdates(_0x2939ea[_0x827a('0x5b')],null))[_0x827a('0x28')](respondWithResult(_0x5d37df,null))[_0x827a('0x5c')](handleError(_0x5d37df,null));};
\ No newline at end of file
index b8c9a4b..06f9f3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15fa=['hook','exports','../../mysqldb','save','remove','emit','hasOwnProperty'];(function(_0x244ee2,_0x4072b0){var _0x554f12=function(_0x436fe1){while(--_0x436fe1){_0x244ee2['push'](_0x244ee2['shift']());}};_0x554f12(++_0x4072b0);}(_0x15fa,0x1c2));var _0xa15f=function(_0xa6388e,_0x29c272){_0xa6388e=_0xa6388e-0x0;var _0x55a52a=_0x15fa[_0xa6388e];return _0x55a52a;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0xa15f('0x0'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa15f('0x1'),'afterUpdate':'update','afterDestroy':_0xa15f('0x2')};function emitEvent(_0x169a78){return function(_0x327e54,_0x192f7f,_0x5dec2e){DashboardItemEvents[_0xa15f('0x3')](_0x169a78+':'+_0x327e54['id'],_0x327e54);DashboardItemEvents[_0xa15f('0x3')](_0x169a78,_0x327e54);_0x5dec2e(null);};}for(var e in events){if(events[_0xa15f('0x4')](e)){var event=events[e];DashboardItem[_0xa15f('0x5')](e,emitEvent(event));}}module[_0xa15f('0x6')]=DashboardItemEvents;
\ No newline at end of file
+var _0x975c=['hook','exports','../../mysqldb','DashboardItem','save','update','emit','hasOwnProperty'];(function(_0xd43aed,_0x556f54){var _0x4aa694=function(_0x56817d){while(--_0x56817d){_0xd43aed['push'](_0xd43aed['shift']());}};_0x4aa694(++_0x556f54);}(_0x975c,0x122));var _0xc975=function(_0x24d35a,_0x18f2a9){_0x24d35a=_0x24d35a-0x0;var _0x3cf1cc=_0x975c[_0x24d35a];return _0x3cf1cc;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0xc975('0x0'))['db'][_0xc975('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc975('0x2'),'afterUpdate':_0xc975('0x3'),'afterDestroy':'remove'};function emitEvent(_0x26b4ec){return function(_0x11f1a7,_0x3433d7,_0x560aa7){DashboardItemEvents[_0xc975('0x4')](_0x26b4ec+':'+_0x11f1a7['id'],_0x11f1a7);DashboardItemEvents[_0xc975('0x4')](_0x26b4ec,_0x11f1a7);_0x560aa7(null);};}for(var e in events){if(events[_0xc975('0x5')](e)){var event=events[e];DashboardItem[_0xc975('0x6')](e,emitEvent(event));}}module[_0xc975('0x7')]=DashboardItemEvents;
\ No newline at end of file
index 1cb1273..3ce9e62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76bb=['../../config/logger','api','moment','request-promise','path','../../config/environment','./dashboardItem.attributes','define','DashboardItem','dashboard_items','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x76bb,0x16a));var _0xb76b=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x76bb[_0x4792c8];return _0x35edb1;};'use strict';var _=require('lodash');var util=require(_0xb76b('0x0'));var logger=require(_0xb76b('0x1'))(_0xb76b('0x2'));var moment=require(_0xb76b('0x3'));var BPromise=require('bluebird');var rp=require(_0xb76b('0x4'));var fs=require('fs');var path=require(_0xb76b('0x5'));var rimraf=require('rimraf');var config=require(_0xb76b('0x6'));var attributes=require(_0xb76b('0x7'));module['exports']=function(_0x42254d,_0x361737){return _0x42254d[_0xb76b('0x8')](_0xb76b('0x9'),attributes,{'tableName':_0xb76b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x528f=['bluebird','path','./dashboardItem.attributes','DashboardItem','dashboard_items','util','../../config/logger','api','moment'];(function(_0x1687f8,_0x1146c3){var _0x2557bf=function(_0x26aacb){while(--_0x26aacb){_0x1687f8['push'](_0x1687f8['shift']());}};_0x2557bf(++_0x1146c3);}(_0x528f,0x140));var _0xf528=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x528f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xf528('0x0'));var logger=require(_0xf528('0x1'))(_0xf528('0x2'));var moment=require(_0xf528('0x3'));var BPromise=require(_0xf528('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf528('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf528('0x6'));module['exports']=function(_0x2a4f5b,_0x17c8c8){return _0x2a4f5b['define'](_0xf528('0x7'),attributes,{'tableName':_0xf528('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cdee86d..7de22da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d9=['register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','client','http','redis','localhost','socket.io-emitter'];(function(_0x2df499,_0x430ba4){var _0x274bcb=function(_0x3d2f9a){while(--_0x3d2f9a){_0x2df499['push'](_0x2df499['shift']());}};_0x274bcb(++_0x430ba4);}(_0x00d9,0x1e7));var _0x900d=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x00d9[_0x27af45];return _0x18df21;};'use strict';var _=require(_0x900d('0x0'));var util=require(_0x900d('0x1'));var moment=require(_0x900d('0x2'));var BPromise=require(_0x900d('0x3'));var rs=require(_0x900d('0x4'));var fs=require('fs');var Redis=require(_0x900d('0x5'));var db=require(_0x900d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x900d('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x900d('0x8')][_0x900d('0x9')]({'port':0x232a});config[_0x900d('0xa')]=_['defaults'](config[_0x900d('0xa')],{'host':_0x900d('0xb'),'port':0x18eb});var socket=require(_0x900d('0xc'))(new Redis(config[_0x900d('0xa')]));require('./dashboardItem.socket')[_0x900d('0xd')](socket);function respondWithRpcPromise(_0x46a6fa,_0x1c7748,_0x16f6b3){return new BPromise(function(_0x196e66,_0x1956d6){return client[_0x900d('0xe')](_0x46a6fa,_0x16f6b3)[_0x900d('0xf')](function(_0x5bac14){logger[_0x900d('0x10')](_0x900d('0x11'),_0x1c7748,_0x900d('0x12'));logger['debug'](_0x900d('0x13'),_0x1c7748,'request\x20sent',JSON[_0x900d('0x14')](_0x5bac14));if(_0x5bac14[_0x900d('0x15')]){if(_0x5bac14[_0x900d('0x15')][_0x900d('0x16')]===0x1f4){logger[_0x900d('0x15')](_0x900d('0x11'),_0x1c7748,_0x5bac14['error'][_0x900d('0x17')]);return _0x1956d6(_0x5bac14['error'][_0x900d('0x17')]);}logger[_0x900d('0x15')](_0x900d('0x11'),_0x1c7748,_0x5bac14[_0x900d('0x15')][_0x900d('0x17')]);return _0x196e66(_0x5bac14[_0x900d('0x15')][_0x900d('0x17')]);}else{logger[_0x900d('0x10')](_0x900d('0x11'),_0x1c7748,_0x900d('0x12'));_0x196e66(_0x5bac14['result'][_0x900d('0x17')]);}})[_0x900d('0x18')](function(_0x15da14){logger[_0x900d('0x15')](_0x900d('0x11'),_0x1c7748,_0x15da14);_0x1956d6(_0x15da14);});});}
\ No newline at end of file
+var _0x7ac2=['redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1da811,_0x2e30db){var _0x53858b=function(_0x4e70ce){while(--_0x4e70ce){_0x1da811['push'](_0x1da811['shift']());}};_0x53858b(++_0x2e30db);}(_0x7ac2,0x1a8));var _0x27ac=function(_0x569c95,_0x54f839){_0x569c95=_0x569c95-0x0;var _0x2749b5=_0x7ac2[_0x569c95];return _0x2749b5;};'use strict';var _=require(_0x27ac('0x0'));var util=require(_0x27ac('0x1'));var moment=require(_0x27ac('0x2'));var BPromise=require(_0x27ac('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x27ac('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x27ac('0x5'));var logger=require(_0x27ac('0x6'))(_0x27ac('0x7'));var config=require(_0x27ac('0x8'));var jayson=require(_0x27ac('0x9'));var client=jayson[_0x27ac('0xa')]['http']({'port':0x232a});config[_0x27ac('0xb')]=_[_0x27ac('0xc')](config[_0x27ac('0xb')],{'host':_0x27ac('0xd'),'port':0x18eb});var socket=require(_0x27ac('0xe'))(new Redis(config[_0x27ac('0xb')]));require(_0x27ac('0xf'))['register'](socket);function respondWithRpcPromise(_0x3e265d,_0x2642fb,_0xc62aa2){return new BPromise(function(_0x366b7e,_0x4dd943){return client[_0x27ac('0x10')](_0x3e265d,_0xc62aa2)[_0x27ac('0x11')](function(_0x28853d){logger[_0x27ac('0x12')](_0x27ac('0x13'),_0x2642fb,_0x27ac('0x14'));logger[_0x27ac('0x15')](_0x27ac('0x16'),_0x2642fb,'request\x20sent',JSON[_0x27ac('0x17')](_0x28853d));if(_0x28853d[_0x27ac('0x18')]){if(_0x28853d[_0x27ac('0x18')][_0x27ac('0x19')]===0x1f4){logger[_0x27ac('0x18')]('DashboardItem,\x20%s,\x20%s',_0x2642fb,_0x28853d[_0x27ac('0x18')][_0x27ac('0x1a')]);return _0x4dd943(_0x28853d['error'][_0x27ac('0x1a')]);}logger['error'](_0x27ac('0x13'),_0x2642fb,_0x28853d[_0x27ac('0x18')][_0x27ac('0x1a')]);return _0x366b7e(_0x28853d['error'][_0x27ac('0x1a')]);}else{logger[_0x27ac('0x12')](_0x27ac('0x13'),_0x2642fb,'request\x20sent');_0x366b7e(_0x28853d[_0x27ac('0x1b')][_0x27ac('0x1a')]);}})[_0x27ac('0x1c')](function(_0x294bce){logger['error'](_0x27ac('0x13'),_0x2642fb,_0x294bce);_0x4dd943(_0x294bce);});});}
\ No newline at end of file
index 1993a8f..a5a6a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe524=['remove','update','emit','removeListener','register','length','dashboardItem:','./dashboardItem.events'];(function(_0x1084a5,_0x110738){var _0x1a9259=function(_0x5d4619){while(--_0x5d4619){_0x1084a5['push'](_0x1084a5['shift']());}};_0x1a9259(++_0x110738);}(_0xe524,0x167));var _0x4e52=function(_0x2a1db7,_0x275fdf){_0x2a1db7=_0x2a1db7-0x0;var _0x5412e4=_0xe524[_0x2a1db7];return _0x5412e4;};'use strict';var DashboardItemEvents=require(_0x4e52('0x0'));var events=['save',_0x4e52('0x1'),_0x4e52('0x2')];function createListener(_0x4bed6d,_0x3eee36){return function(_0xe51678){_0x3eee36[_0x4e52('0x3')](_0x4bed6d,_0xe51678);};}function removeListener(_0x4fb333,_0x56799c){return function(){DashboardItemEvents[_0x4e52('0x4')](_0x4fb333,_0x56799c);};}exports[_0x4e52('0x5')]=function(_0x4e08bc){for(var _0xcf7e3b=0x0,_0x2bbe20=events[_0x4e52('0x6')];_0xcf7e3b<_0x2bbe20;_0xcf7e3b++){var _0x150a82=events[_0xcf7e3b];var _0x1146f3=createListener(_0x4e52('0x7')+_0x150a82,_0x4e08bc);DashboardItemEvents['on'](_0x150a82,_0x1146f3);}};
\ No newline at end of file
+var _0xcb06=['length','dashboardItem:','./dashboardItem.events','remove','update','emit','removeListener','register'];(function(_0x277721,_0x46971e){var _0x286051=function(_0x130c98){while(--_0x130c98){_0x277721['push'](_0x277721['shift']());}};_0x286051(++_0x46971e);}(_0xcb06,0xc2));var _0x6cb0=function(_0x5bdf8e,_0x45d970){_0x5bdf8e=_0x5bdf8e-0x0;var _0x3e0750=_0xcb06[_0x5bdf8e];return _0x3e0750;};'use strict';var DashboardItemEvents=require(_0x6cb0('0x0'));var events=['save',_0x6cb0('0x1'),_0x6cb0('0x2')];function createListener(_0x248dd7,_0x46ff1d){return function(_0x4f6dea){_0x46ff1d[_0x6cb0('0x3')](_0x248dd7,_0x4f6dea);};}function removeListener(_0x1f9326,_0x17ead4){return function(){DashboardItemEvents[_0x6cb0('0x4')](_0x1f9326,_0x17ead4);};}exports[_0x6cb0('0x5')]=function(_0x3dd8e7){for(var _0x1335ad=0x0,_0x308f29=events[_0x6cb0('0x6')];_0x1335ad<_0x308f29;_0x1335ad++){var _0x284450=events[_0x1335ad];var _0x189ef2=createListener(_0x6cb0('0x7')+_0x284450,_0x3dd8e7);DashboardItemEvents['on'](_0x284450,_0x189ef2);}};
\ No newline at end of file
index 5493645..71b1d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7ec=['express','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','connect-timeout'];(function(_0x1643a7,_0x161619){var _0x4cc72f=function(_0x575cbd){while(--_0x575cbd){_0x1643a7['push'](_0x1643a7['shift']());}};_0x4cc72f(++_0x161619);}(_0xa7ec,0x14e));var _0xca7e=function(_0x407a18,_0xe0bf64){_0x407a18=_0x407a18-0x0;var _0xc3cd2a=_0xa7ec[_0x407a18];return _0xc3cd2a;};'use strict';var multer=require(_0xca7e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xca7e('0x1'));var express=require(_0xca7e('0x2'));var router=express['Router']();var fs_extra=require(_0xca7e('0x3'));var auth=require(_0xca7e('0x4'));var interaction=require(_0xca7e('0x5'));var config=require('../../config/environment');var controller=require('./dashboardItem.controller');router[_0xca7e('0x6')](_0xca7e('0x7'),auth[_0xca7e('0x8')](),controller[_0xca7e('0x9')]);router[_0xca7e('0xa')]('/',auth[_0xca7e('0x8')](),controller[_0xca7e('0xb')]);router[_0xca7e('0xc')](_0xca7e('0x7'),auth[_0xca7e('0x8')](),controller[_0xca7e('0xd')]);router[_0xca7e('0xe')](_0xca7e('0x7'),auth['isAuthenticated'](),controller['destroy']);module[_0xca7e('0xf')]=router;
\ No newline at end of file
+var _0xe96f=['../../config/environment','get','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x4a3ff0,_0xe3e1fa){var _0x299a45=function(_0x517a3d){while(--_0x517a3d){_0x4a3ff0['push'](_0x4a3ff0['shift']());}};_0x299a45(++_0xe3e1fa);}(_0xe96f,0x13d));var _0xfe96=function(_0x5b5e99,_0x1cb685){_0x5b5e99=_0x5b5e99-0x0;var _0x5bcdd2=_0xe96f[_0x5b5e99];return _0x5bcdd2;};'use strict';var multer=require('multer');var util=require(_0xfe96('0x0'));var path=require(_0xfe96('0x1'));var timeout=require(_0xfe96('0x2'));var express=require(_0xfe96('0x3'));var router=express[_0xfe96('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfe96('0x5'));var interaction=require(_0xfe96('0x6'));var config=require(_0xfe96('0x7'));var controller=require('./dashboardItem.controller');router[_0xfe96('0x8')](_0xfe96('0x9'),auth[_0xfe96('0xa')](),controller[_0xfe96('0xb')]);router[_0xfe96('0xc')]('/',auth[_0xfe96('0xa')](),controller[_0xfe96('0xd')]);router[_0xfe96('0xe')](_0xfe96('0x9'),auth[_0xfe96('0xa')](),controller[_0xfe96('0xf')]);router['delete'](_0xfe96('0x9'),auth[_0xfe96('0xa')](),controller[_0xfe96('0x10')]);module[_0xfe96('0x11')]=router;
\ No newline at end of file
index efcbe42..82d02bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f46=['ENUM','second','first','STRING'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5f46,0x10f));var _0x65f4=function(_0x32025f,_0x21fb25){_0x32025f=_0x32025f-0x0;var _0x8481de=_0x5f46[_0x32025f];return _0x8481de;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x65f4('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x65f4('0x1')]('first',_0x65f4('0x2'),'third'),'allowNull':![],'defaultValue':_0x65f4('0x3')},'description':{'type':Sequelize[_0x65f4('0x0')]}};
\ No newline at end of file
+var _0x80f5=['ENUM','second','STRING'];(function(_0x1cec72,_0x559c7e){var _0x19a51c=function(_0x5e7d9e){while(--_0x5e7d9e){_0x1cec72['push'](_0x1cec72['shift']());}};_0x19a51c(++_0x559c7e);}(_0x80f5,0x1ac));var _0x580f=function(_0x2a9153,_0x44fd73){_0x2a9153=_0x2a9153-0x0;var _0x2f6615=_0x80f5[_0x2a9153];return _0x2f6615;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x580f('0x0')],'allowNull':![]},'level':{'type':Sequelize[_0x580f('0x1')]('first',_0x580f('0x2'),'third'),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5e13c65..00b99d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5652=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','rows','catch','params','fields','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x9d2de9,_0x2f2095){var _0x1a1e98=function(_0x446c54){while(--_0x446c54){_0x9d2de9['push'](_0x9d2de9['shift']());}};_0x1a1e98(++_0x2f2095);}(_0x5652,0xea));var _0x2565=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0x5652[_0x2555d0];return _0x3bb486;};'use strict';var emlformat=require(_0x2565('0x0'));var rimraf=require(_0x2565('0x1'));var zipdir=require(_0x2565('0x2'));var jsonpatch=require(_0x2565('0x3'));var rp=require(_0x2565('0x4'));var moment=require('moment');var BPromise=require(_0x2565('0x5'));var Mustache=require(_0x2565('0x6'));var util=require(_0x2565('0x7'));var path=require('path');var sox=require(_0x2565('0x8'));var csv=require(_0x2565('0x9'));var ejs=require(_0x2565('0xa'));var fs=require('fs');var fs_extra=require(_0x2565('0xb'));var _=require(_0x2565('0xc'));var squel=require(_0x2565('0xd'));var crypto=require(_0x2565('0xe'));var jsforce=require(_0x2565('0xf'));var deskjs=require(_0x2565('0x10'));var toCsv=require(_0x2565('0x9'));var querystring=require(_0x2565('0x11'));var Papa=require('papaparse');var Redis=require(_0x2565('0x12'));var authService=require(_0x2565('0x13'));var qs=require(_0x2565('0x14'));var as=require(_0x2565('0x15'));var hardwareService=require(_0x2565('0x16'));var logger=require(_0x2565('0x17'))('api');var utils=require(_0x2565('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2565('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x367c1a,_0x2af3eb){_0x2af3eb=_0x2af3eb||0xcc;return function(_0x1d77c0){if(_0x1d77c0){return _0x367c1a[_0x2565('0x1a')](_0x2af3eb);}return _0x367c1a['status'](_0x2af3eb)[_0x2565('0x1b')]();};}function respondWithResult(_0x363a40,_0x12bf61){_0x12bf61=_0x12bf61||0xc8;return function(_0x16aedc){if(_0x16aedc){return _0x363a40[_0x2565('0x1c')](_0x12bf61)[_0x2565('0x1d')](_0x16aedc);}};}function respondWithFilteredResult(_0x5cf2c5,_0x2cdb82){return function(_0x29f401){if(_0x29f401){var _0x4f0266=typeof _0x2cdb82['offset']===_0x2565('0x1e')&&typeof _0x2cdb82['limit']===_0x2565('0x1e');var _0x151a27=_0x29f401[_0x2565('0x1f')];var _0x38456e=_0x4f0266?0x0:_0x2cdb82[_0x2565('0x20')];var _0x38c953=_0x4f0266?_0x29f401[_0x2565('0x1f')]:_0x2cdb82[_0x2565('0x20')]+_0x2cdb82[_0x2565('0x21')];var _0x43b7c1;if(_0x38c953>=_0x151a27){_0x38c953=_0x151a27;_0x43b7c1=0xc8;}else{_0x43b7c1=0xce;}_0x5cf2c5[_0x2565('0x1c')](_0x43b7c1);return _0x5cf2c5[_0x2565('0x22')]('Content-Range',_0x38456e+'-'+_0x38c953+'/'+_0x151a27)['json'](_0x29f401);}return null;};}function patchUpdates(_0x4d36f5){return function(_0x3781e3){try{jsonpatch[_0x2565('0x23')](_0x3781e3,_0x4d36f5,!![]);}catch(_0x472318){return BPromise[_0x2565('0x24')](_0x472318);}return _0x3781e3[_0x2565('0x25')]();};}function saveUpdates(_0x1ecadb,_0x126fa2){return function(_0x30b1cb){if(_0x30b1cb){return _0x30b1cb[_0x2565('0x26')](_0x1ecadb)[_0x2565('0x27')](function(_0x1a3207){return _0x1a3207;});}return null;};}function removeEntity(_0x5a40bb,_0x3d5d50){return function(_0x4e2428){if(_0x4e2428){return _0x4e2428[_0x2565('0x28')]()[_0x2565('0x27')](function(){var _0x4fba2f=_0x4e2428['get']({'plain':!![]});var _0x15a37b='Dispositions';return db['UserProfileResource'][_0x2565('0x28')]({'where':{'type':_0x15a37b,'resourceId':_0x4fba2f['id']}})[_0x2565('0x27')](function(){return _0x4e2428;});})[_0x2565('0x27')](function(){_0x5a40bb['status'](0xcc)[_0x2565('0x1b')]();});}};}function handleEntityNotFound(_0xe23265,_0x31feae){return function(_0x55d05a){if(!_0x55d05a){_0xe23265[_0x2565('0x1a')](0x194);}return _0x55d05a;};}function handleError(_0x4d880c,_0x5d51ec){_0x5d51ec=_0x5d51ec||0x1f4;return function(_0x4d97a7){logger[_0x2565('0x29')](_0x4d97a7[_0x2565('0x2a')]);if(_0x4d97a7[_0x2565('0x2b')]){delete _0x4d97a7[_0x2565('0x2b')];}_0x4d880c['status'](_0x5d51ec)['send'](_0x4d97a7);};}exports[_0x2565('0x2c')]=function(_0x6b3835,_0x2eb0d9){var _0x8ff2a4={},_0x3ea44a={},_0x140cdd={'count':0x0,'rows':[]};var _0x2a0409=_[_0x2565('0x2d')](db[_0x2565('0x2e')][_0x2565('0x2f')],function(_0x39ec7d){return{'name':_0x39ec7d[_0x2565('0x30')],'type':_0x39ec7d[_0x2565('0x31')][_0x2565('0x32')]};});_0x3ea44a[_0x2565('0x33')]=_[_0x2565('0x2d')](_0x2a0409,_0x2565('0x2b'));_0x3ea44a[_0x2565('0x34')]=_[_0x2565('0x35')](_0x6b3835[_0x2565('0x34')]);_0x3ea44a[_0x2565('0x36')]=_[_0x2565('0x37')](_0x3ea44a[_0x2565('0x33')],_0x3ea44a[_0x2565('0x34')]);_0x8ff2a4[_0x2565('0x38')]=_[_0x2565('0x37')](_0x3ea44a['model'],qs['fields'](_0x6b3835[_0x2565('0x34')]['fields']));_0x8ff2a4['attributes']=_0x8ff2a4[_0x2565('0x38')][_0x2565('0x39')]?_0x8ff2a4['attributes']:_0x3ea44a[_0x2565('0x33')];if(!_0x6b3835[_0x2565('0x34')][_0x2565('0x3a')](_0x2565('0x3b'))){_0x8ff2a4[_0x2565('0x21')]=qs[_0x2565('0x21')](_0x6b3835['query'][_0x2565('0x21')]);_0x8ff2a4['offset']=qs[_0x2565('0x20')](_0x6b3835[_0x2565('0x34')][_0x2565('0x20')]);}_0x8ff2a4['order']=qs[_0x2565('0x3c')](_0x6b3835[_0x2565('0x34')][_0x2565('0x3c')]);_0x8ff2a4[_0x2565('0x3d')]=qs['filters'](_[_0x2565('0x3e')](_0x6b3835[_0x2565('0x34')],_0x3ea44a['filters']),_0x2a0409);if(_0x6b3835[_0x2565('0x34')]['filter']){_0x8ff2a4[_0x2565('0x3d')]=_[_0x2565('0x3f')](_0x8ff2a4[_0x2565('0x3d')],{'$or':_['map'](_0x2a0409,function(_0x3b8d42){if(_0x3b8d42[_0x2565('0x31')]!==_0x2565('0x40')){var _0x17e4cf={};_0x17e4cf[_0x3b8d42[_0x2565('0x2b')]]={'$like':'%'+_0x6b3835[_0x2565('0x34')][_0x2565('0x41')]+'%'};return _0x17e4cf;}})});}_0x8ff2a4=_[_0x2565('0x3f')]({},_0x8ff2a4,_0x6b3835['options']);var _0x5ed108={'where':_0x8ff2a4['where']};return db[_0x2565('0x2e')][_0x2565('0x1f')](_0x5ed108)[_0x2565('0x27')](function(_0x2e56e7){_0x140cdd[_0x2565('0x1f')]=_0x2e56e7;if(_0x6b3835[_0x2565('0x34')][_0x2565('0x42')]){_0x8ff2a4[_0x2565('0x43')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x8ff2a4);})['then'](function(_0x49c244){_0x140cdd[_0x2565('0x44')]=_0x49c244;return _0x140cdd;})[_0x2565('0x27')](respondWithFilteredResult(_0x2eb0d9,_0x8ff2a4))[_0x2565('0x45')](handleError(_0x2eb0d9,null));};exports['show']=function(_0x4805c1,_0x1e094b){var _0x5436dd={'raw':!![],'where':{'id':_0x4805c1[_0x2565('0x46')]['id']}},_0x4898d5={};_0x4898d5['model']=_[_0x2565('0x35')](db[_0x2565('0x2e')][_0x2565('0x2f')]);_0x4898d5[_0x2565('0x34')]=_[_0x2565('0x35')](_0x4805c1['query']);_0x4898d5[_0x2565('0x36')]=_[_0x2565('0x37')](_0x4898d5['model'],_0x4898d5['query']);_0x5436dd['attributes']=_[_0x2565('0x37')](_0x4898d5['model'],qs[_0x2565('0x47')](_0x4805c1[_0x2565('0x34')][_0x2565('0x47')]));_0x5436dd[_0x2565('0x38')]=_0x5436dd['attributes']['length']?_0x5436dd[_0x2565('0x38')]:_0x4898d5['model'];if(_0x4805c1[_0x2565('0x34')]['includeAll']){_0x5436dd[_0x2565('0x43')]=[{'all':!![]}];}_0x5436dd=_['merge']({},_0x5436dd,_0x4805c1[_0x2565('0x48')]);return db[_0x2565('0x2e')][_0x2565('0x49')](_0x5436dd)[_0x2565('0x27')](handleEntityNotFound(_0x1e094b,null))[_0x2565('0x27')](respondWithResult(_0x1e094b,null))[_0x2565('0x45')](handleError(_0x1e094b,null));};exports[_0x2565('0x4a')]=function(_0x502620,_0x6813ca){return db[_0x2565('0x2e')][_0x2565('0x4a')](_0x502620[_0x2565('0x4b')],{})['then'](function(_0x2a65f2){var _0x23a4dd=_0x502620[_0x2565('0x4c')][_0x2565('0x4d')]({'plain':!![]});if(!_0x23a4dd)throw new Error(_0x2565('0x4e'));if(_0x23a4dd[_0x2565('0x4f')]===_0x2565('0x4c')){var _0x5a1983=_0x2a65f2[_0x2565('0x4d')]({'plain':!![]});var _0x4a5800=_0x2565('0x50');return db[_0x2565('0x51')]['find']({'where':{'name':_0x4a5800,'userProfileId':_0x23a4dd[_0x2565('0x52')]},'raw':!![]})['then'](function(_0x17cd4b){if(_0x17cd4b&&_0x17cd4b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x5a1983['name'],'resourceId':_0x5a1983['id'],'type':_0x17cd4b[_0x2565('0x2b')],'sectionId':_0x17cd4b['id']},{})['then'](function(){return _0x2a65f2;});}else{return _0x2a65f2;}})['catch'](function(_0x5f5987){logger[_0x2565('0x29')](_0x2565('0x53'),_0x5f5987);throw _0x5f5987;});}return _0x2a65f2;})[_0x2565('0x27')](respondWithResult(_0x6813ca,0xc9))[_0x2565('0x45')](handleError(_0x6813ca,null));};exports[_0x2565('0x26')]=function(_0x47ba08,_0x2a1c4a){if(_0x47ba08[_0x2565('0x4b')]['id']){delete _0x47ba08[_0x2565('0x4b')]['id'];}return db[_0x2565('0x2e')][_0x2565('0x49')]({'where':{'id':_0x47ba08[_0x2565('0x46')]['id']}})[_0x2565('0x27')](handleEntityNotFound(_0x2a1c4a,null))[_0x2565('0x27')](saveUpdates(_0x47ba08[_0x2565('0x4b')],null))[_0x2565('0x27')](respondWithResult(_0x2a1c4a,null))['catch'](handleError(_0x2a1c4a,null));};exports[_0x2565('0x28')]=function(_0x587c9c,_0x48e77e){return db[_0x2565('0x2e')][_0x2565('0x49')]({'where':{'id':_0x587c9c[_0x2565('0x46')]['id']}})[_0x2565('0x27')](handleEntityNotFound(_0x48e77e,null))[_0x2565('0x27')](removeEntity(_0x48e77e,null))['catch'](handleError(_0x48e77e,null));};
\ No newline at end of file
+var _0x9fe7=['sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','get','Dispositions','UserProfileResource','error','name','map','Disposition','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','then','catch','show','params','keys','fields','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path'];(function(_0x1c1b42,_0x2a24b2){var _0x3aa275=function(_0x55e120){while(--_0x55e120){_0x1c1b42['push'](_0x1c1b42['shift']());}};_0x3aa275(++_0x2a24b2);}(_0x9fe7,0x1df));var _0x79fe=function(_0x531355,_0x10737a){_0x531355=_0x531355-0x0;var _0x3f6f88=_0x9fe7[_0x531355];return _0x3f6f88;};'use strict';var emlformat=require(_0x79fe('0x0'));var rimraf=require(_0x79fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x79fe('0x2'));var rp=require('request-promise');var moment=require(_0x79fe('0x3'));var BPromise=require(_0x79fe('0x4'));var Mustache=require(_0x79fe('0x5'));var util=require('util');var path=require(_0x79fe('0x6'));var sox=require(_0x79fe('0x7'));var csv=require(_0x79fe('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x79fe('0x9'));var _=require(_0x79fe('0xa'));var squel=require(_0x79fe('0xb'));var crypto=require('crypto');var jsforce=require(_0x79fe('0xc'));var deskjs=require(_0x79fe('0xd'));var toCsv=require(_0x79fe('0x8'));var querystring=require(_0x79fe('0xe'));var Papa=require(_0x79fe('0xf'));var Redis=require('ioredis');var authService=require(_0x79fe('0x10'));var qs=require(_0x79fe('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x79fe('0x12'));var logger=require(_0x79fe('0x13'))(_0x79fe('0x14'));var utils=require(_0x79fe('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x79fe('0x16'));var db=require(_0x79fe('0x17'))['db'];function respondWithStatusCode(_0x3e0ad8,_0x93c1a7){_0x93c1a7=_0x93c1a7||0xcc;return function(_0x1a83f2){if(_0x1a83f2){return _0x3e0ad8[_0x79fe('0x18')](_0x93c1a7);}return _0x3e0ad8[_0x79fe('0x19')](_0x93c1a7)[_0x79fe('0x1a')]();};}function respondWithResult(_0x4be1c4,_0x3bd14a){_0x3bd14a=_0x3bd14a||0xc8;return function(_0x238e60){if(_0x238e60){return _0x4be1c4[_0x79fe('0x19')](_0x3bd14a)[_0x79fe('0x1b')](_0x238e60);}};}function respondWithFilteredResult(_0x35fb79,_0x25e91b){return function(_0x58124b){if(_0x58124b){var _0x127ec4=typeof _0x25e91b[_0x79fe('0x1c')]===_0x79fe('0x1d')&&typeof _0x25e91b[_0x79fe('0x1e')]==='undefined';var _0x416b5b=_0x58124b[_0x79fe('0x1f')];var _0x39be95=_0x127ec4?0x0:_0x25e91b[_0x79fe('0x1c')];var _0x536641=_0x127ec4?_0x58124b['count']:_0x25e91b[_0x79fe('0x1c')]+_0x25e91b[_0x79fe('0x1e')];var _0x25e51f;if(_0x536641>=_0x416b5b){_0x536641=_0x416b5b;_0x25e51f=0xc8;}else{_0x25e51f=0xce;}_0x35fb79['status'](_0x25e51f);return _0x35fb79[_0x79fe('0x20')](_0x79fe('0x21'),_0x39be95+'-'+_0x536641+'/'+_0x416b5b)[_0x79fe('0x1b')](_0x58124b);}return null;};}function patchUpdates(_0x4c7062){return function(_0x203405){try{jsonpatch['apply'](_0x203405,_0x4c7062,!![]);}catch(_0x15f019){return BPromise[_0x79fe('0x22')](_0x15f019);}return _0x203405[_0x79fe('0x23')]();};}function saveUpdates(_0x191bd8,_0x1ac8d7){return function(_0x23bff8){if(_0x23bff8){return _0x23bff8['update'](_0x191bd8)['then'](function(_0x107641){return _0x107641;});}return null;};}function removeEntity(_0x4e9888,_0x16aa35){return function(_0x3721bc){if(_0x3721bc){return _0x3721bc['destroy']()['then'](function(){var _0x454e93=_0x3721bc[_0x79fe('0x24')]({'plain':!![]});var _0x59339b=_0x79fe('0x25');return db[_0x79fe('0x26')]['destroy']({'where':{'type':_0x59339b,'resourceId':_0x454e93['id']}})['then'](function(){return _0x3721bc;});})['then'](function(){_0x4e9888[_0x79fe('0x19')](0xcc)[_0x79fe('0x1a')]();});}};}function handleEntityNotFound(_0x36ead5,_0x4ac913){return function(_0x47786f){if(!_0x47786f){_0x36ead5[_0x79fe('0x18')](0x194);}return _0x47786f;};}function handleError(_0x3bc5bc,_0x4de5cc){_0x4de5cc=_0x4de5cc||0x1f4;return function(_0x4e2740){logger[_0x79fe('0x27')](_0x4e2740['stack']);if(_0x4e2740[_0x79fe('0x28')]){delete _0x4e2740['name'];}_0x3bc5bc['status'](_0x4de5cc)['send'](_0x4e2740);};}exports['index']=function(_0x13f8da,_0xd2ec88){var _0x4dff5f={},_0x2b6975={},_0x5745a8={'count':0x0,'rows':[]};var _0x42558d=_[_0x79fe('0x29')](db[_0x79fe('0x2a')][_0x79fe('0x2b')],function(_0x128ca3){return{'name':_0x128ca3['fieldName'],'type':_0x128ca3[_0x79fe('0x2c')][_0x79fe('0x2d')]};});_0x2b6975[_0x79fe('0x2e')]=_[_0x79fe('0x29')](_0x42558d,_0x79fe('0x28'));_0x2b6975[_0x79fe('0x2f')]=_['keys'](_0x13f8da[_0x79fe('0x2f')]);_0x2b6975[_0x79fe('0x30')]=_[_0x79fe('0x31')](_0x2b6975[_0x79fe('0x2e')],_0x2b6975[_0x79fe('0x2f')]);_0x4dff5f[_0x79fe('0x32')]=_['intersection'](_0x2b6975[_0x79fe('0x2e')],qs['fields'](_0x13f8da[_0x79fe('0x2f')]['fields']));_0x4dff5f[_0x79fe('0x32')]=_0x4dff5f['attributes'][_0x79fe('0x33')]?_0x4dff5f[_0x79fe('0x32')]:_0x2b6975[_0x79fe('0x2e')];if(!_0x13f8da['query'][_0x79fe('0x34')](_0x79fe('0x35'))){_0x4dff5f[_0x79fe('0x1e')]=qs[_0x79fe('0x1e')](_0x13f8da[_0x79fe('0x2f')]['limit']);_0x4dff5f['offset']=qs[_0x79fe('0x1c')](_0x13f8da['query'][_0x79fe('0x1c')]);}_0x4dff5f[_0x79fe('0x36')]=qs['sort'](_0x13f8da[_0x79fe('0x2f')][_0x79fe('0x37')]);_0x4dff5f[_0x79fe('0x38')]=qs[_0x79fe('0x30')](_[_0x79fe('0x39')](_0x13f8da[_0x79fe('0x2f')],_0x2b6975['filters']),_0x42558d);if(_0x13f8da[_0x79fe('0x2f')][_0x79fe('0x3a')]){_0x4dff5f[_0x79fe('0x38')]=_[_0x79fe('0x3b')](_0x4dff5f['where'],{'$or':_[_0x79fe('0x29')](_0x42558d,function(_0x49d107){if(_0x49d107[_0x79fe('0x2c')]!=='VIRTUAL'){var _0x400a36={};_0x400a36[_0x49d107['name']]={'$like':'%'+_0x13f8da[_0x79fe('0x2f')][_0x79fe('0x3a')]+'%'};return _0x400a36;}})});}_0x4dff5f=_['merge']({},_0x4dff5f,_0x13f8da['options']);var _0x4137a3={'where':_0x4dff5f[_0x79fe('0x38')]};return db[_0x79fe('0x2a')][_0x79fe('0x1f')](_0x4137a3)['then'](function(_0x5698a2){_0x5745a8[_0x79fe('0x1f')]=_0x5698a2;if(_0x13f8da[_0x79fe('0x2f')][_0x79fe('0x3c')]){_0x4dff5f[_0x79fe('0x3d')]=[{'all':!![]}];}return db[_0x79fe('0x2a')][_0x79fe('0x3e')](_0x4dff5f);})[_0x79fe('0x3f')](function(_0x43c316){_0x5745a8['rows']=_0x43c316;return _0x5745a8;})[_0x79fe('0x3f')](respondWithFilteredResult(_0xd2ec88,_0x4dff5f))[_0x79fe('0x40')](handleError(_0xd2ec88,null));};exports[_0x79fe('0x41')]=function(_0x18e8f9,_0x461f38){var _0xcf6deb={'raw':!![],'where':{'id':_0x18e8f9[_0x79fe('0x42')]['id']}},_0x5b0d66={};_0x5b0d66[_0x79fe('0x2e')]=_[_0x79fe('0x43')](db[_0x79fe('0x2a')][_0x79fe('0x2b')]);_0x5b0d66[_0x79fe('0x2f')]=_['keys'](_0x18e8f9[_0x79fe('0x2f')]);_0x5b0d66[_0x79fe('0x30')]=_[_0x79fe('0x31')](_0x5b0d66['model'],_0x5b0d66[_0x79fe('0x2f')]);_0xcf6deb['attributes']=_['intersection'](_0x5b0d66[_0x79fe('0x2e')],qs[_0x79fe('0x44')](_0x18e8f9[_0x79fe('0x2f')]['fields']));_0xcf6deb[_0x79fe('0x32')]=_0xcf6deb[_0x79fe('0x32')][_0x79fe('0x33')]?_0xcf6deb['attributes']:_0x5b0d66['model'];if(_0x18e8f9[_0x79fe('0x2f')][_0x79fe('0x3c')]){_0xcf6deb[_0x79fe('0x3d')]=[{'all':!![]}];}_0xcf6deb=_[_0x79fe('0x3b')]({},_0xcf6deb,_0x18e8f9[_0x79fe('0x45')]);return db[_0x79fe('0x2a')][_0x79fe('0x46')](_0xcf6deb)[_0x79fe('0x3f')](handleEntityNotFound(_0x461f38,null))[_0x79fe('0x3f')](respondWithResult(_0x461f38,null))['catch'](handleError(_0x461f38,null));};exports[_0x79fe('0x47')]=function(_0x3009a8,_0x496486){return db[_0x79fe('0x2a')]['create'](_0x3009a8[_0x79fe('0x48')],{})[_0x79fe('0x3f')](function(_0x1d2845){var _0x1761d7=_0x3009a8['user'][_0x79fe('0x24')]({'plain':!![]});if(!_0x1761d7)throw new Error(_0x79fe('0x49'));if(_0x1761d7[_0x79fe('0x4a')]==='user'){var _0x5cfd05=_0x1d2845[_0x79fe('0x24')]({'plain':!![]});var _0x1ce058='Dispositions';return db[_0x79fe('0x4b')][_0x79fe('0x46')]({'where':{'name':_0x1ce058,'userProfileId':_0x1761d7[_0x79fe('0x4c')]},'raw':!![]})[_0x79fe('0x3f')](function(_0x58c900){if(_0x58c900&&_0x58c900[_0x79fe('0x4d')]===0x0){return db[_0x79fe('0x26')][_0x79fe('0x47')]({'name':_0x5cfd05['name'],'resourceId':_0x5cfd05['id'],'type':_0x58c900['name'],'sectionId':_0x58c900['id']},{})['then'](function(){return _0x1d2845;});}else{return _0x1d2845;}})['catch'](function(_0x4946d3){logger[_0x79fe('0x27')](_0x79fe('0x4e'),_0x4946d3);throw _0x4946d3;});}return _0x1d2845;})['then'](respondWithResult(_0x496486,0xc9))[_0x79fe('0x40')](handleError(_0x496486,null));};exports[_0x79fe('0x4f')]=function(_0x167ab6,_0x4a2a42){if(_0x167ab6['body']['id']){delete _0x167ab6['body']['id'];}return db[_0x79fe('0x2a')]['find']({'where':{'id':_0x167ab6[_0x79fe('0x42')]['id']}})[_0x79fe('0x3f')](handleEntityNotFound(_0x4a2a42,null))[_0x79fe('0x3f')](saveUpdates(_0x167ab6[_0x79fe('0x48')],null))[_0x79fe('0x3f')](respondWithResult(_0x4a2a42,null))[_0x79fe('0x40')](handleError(_0x4a2a42,null));};exports[_0x79fe('0x50')]=function(_0x2578da,_0x230ed9){return db[_0x79fe('0x2a')][_0x79fe('0x46')]({'where':{'id':_0x2578da['params']['id']}})[_0x79fe('0x3f')](handleEntityNotFound(_0x230ed9,null))[_0x79fe('0x3f')](removeEntity(_0x230ed9,null))['catch'](handleError(_0x230ed9,null));};
\ No newline at end of file
index fa73b80..1ce0d82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc4=['name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./disposition.attributes','exports','define','tools_dispositions','name_voice','ListId','name_chat','name','ChatWebsiteId','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId'];(function(_0xcc0f2a,_0x52ccc5){var _0x3f2415=function(_0x42ac74){while(--_0x42ac74){_0xcc0f2a['push'](_0xcc0f2a['shift']());}};_0x3f2415(++_0x52ccc5);}(_0xfdc4,0x81));var _0x4fdc=function(_0x541b40,_0x4a5016){_0x541b40=_0x541b40-0x0;var _0x2db690=_0xfdc4[_0x541b40];return _0x2db690;};'use strict';var _=require(_0x4fdc('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4fdc('0x1'));var moment=require(_0x4fdc('0x2'));var BPromise=require(_0x4fdc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4fdc('0x4'));var rimraf=require(_0x4fdc('0x5'));var config=require(_0x4fdc('0x6'));var attributes=require(_0x4fdc('0x7'));module[_0x4fdc('0x8')]=function(_0x1fe971,_0x61c811){return _0x1fe971[_0x4fdc('0x9')]('Disposition',attributes,{'tableName':_0x4fdc('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x4fdc('0xb'),'fields':['name',_0x4fdc('0xc')]},{'unique':!![],'name':_0x4fdc('0xd'),'fields':[_0x4fdc('0xe'),_0x4fdc('0xf')]},{'unique':!![],'name':'name_mail','fields':['name',_0x4fdc('0x10')]},{'unique':!![],'name':_0x4fdc('0x11'),'fields':[_0x4fdc('0xe'),_0x4fdc('0x12')]},{'unique':!![],'name':_0x4fdc('0x13'),'fields':[_0x4fdc('0xe'),_0x4fdc('0x14')]},{'unique':!![],'name':_0x4fdc('0x15'),'fields':[_0x4fdc('0xe'),_0x4fdc('0x16')]},{'unique':!![],'name':_0x4fdc('0x17'),'fields':['name',_0x4fdc('0x18')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x644f=['name_mail','MailAccountId','SmsAccountId','FaxAccountId','name_openchannel','name_whatsapp','WhatsappAccountId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId'];(function(_0x54535c,_0x234270){var _0x2b459f=function(_0x42f22f){while(--_0x42f22f){_0x54535c['push'](_0x54535c['shift']());}};_0x2b459f(++_0x234270);}(_0x644f,0x177));var _0xf644=function(_0x5e3701,_0x596265){_0x5e3701=_0x5e3701-0x0;var _0x345dcf=_0x644f[_0x5e3701];return _0x345dcf;};'use strict';var _=require('lodash');var util=require(_0xf644('0x0'));var logger=require(_0xf644('0x1'))(_0xf644('0x2'));var moment=require(_0xf644('0x3'));var BPromise=require(_0xf644('0x4'));var rp=require(_0xf644('0x5'));var fs=require('fs');var path=require(_0xf644('0x6'));var rimraf=require(_0xf644('0x7'));var config=require(_0xf644('0x8'));var attributes=require('./disposition.attributes');module['exports']=function(_0x23cd49,_0x16e2f2){return _0x23cd49[_0xf644('0x9')]('Disposition',attributes,{'tableName':_0xf644('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xf644('0xb'),'fields':[_0xf644('0xc'),_0xf644('0xd')]},{'unique':!![],'name':_0xf644('0xe'),'fields':['name',_0xf644('0xf')]},{'unique':!![],'name':_0xf644('0x10'),'fields':[_0xf644('0xc'),_0xf644('0x11')]},{'unique':!![],'name':'name_sms','fields':['name',_0xf644('0x12')]},{'unique':!![],'name':'name_fax','fields':['name',_0xf644('0x13')]},{'unique':!![],'name':_0xf644('0x14'),'fields':[_0xf644('0xc'),'OpenchannelAccountId']},{'unique':!![],'name':_0xf644('0x15'),'fields':[_0xf644('0xc'),_0xf644('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index c74ccae..bf5a637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x59bb76,_0x220b8d){var _0x221e3a=function(_0x3275f3){while(--_0x3275f3){_0x59bb76['push'](_0x59bb76['shift']());}};_0x221e3a(++_0x220b8d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b4e60,_0x101d86){var _0x2d389f=function(_0x597df7){while(--_0x597df7){_0x1b4e60['push'](_0x1b4e60['shift']());}};_0x2d389f(++_0x101d86);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 893eded..1322795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32de=['../../config/environment','get','index','/:id','isAuthenticated','show','create','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x96b05a,_0xbfca5){var _0xe9682b=function(_0x2ef124){while(--_0x2ef124){_0x96b05a['push'](_0x96b05a['shift']());}};_0xe9682b(++_0xbfca5);}(_0x32de,0x12c));var _0xe32d=function(_0x2842b4,_0x2b1b7b){_0x2842b4=_0x2842b4-0x0;var _0x2b9521=_0x32de[_0x2842b4];return _0x2b9521;};'use strict';var multer=require(_0xe32d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe32d('0x1'));var router=express[_0xe32d('0x2')]();var fs_extra=require(_0xe32d('0x3'));var auth=require(_0xe32d('0x4'));var interaction=require(_0xe32d('0x5'));var config=require(_0xe32d('0x6'));var controller=require('./disposition.controller');router[_0xe32d('0x7')]('/',auth['isAuthenticated'](),controller[_0xe32d('0x8')]);router[_0xe32d('0x7')](_0xe32d('0x9'),auth[_0xe32d('0xa')](),controller[_0xe32d('0xb')]);router['post']('/',auth[_0xe32d('0xa')](),controller[_0xe32d('0xc')]);router['put'](_0xe32d('0x9'),auth[_0xe32d('0xa')](),controller[_0xe32d('0xd')]);router[_0xe32d('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xe32d('0xf')]);module[_0xe32d('0x10')]=router;
\ No newline at end of file
+var _0xa37b=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x22ffbf,_0x16f31e){var _0x360c17=function(_0x40807f){while(--_0x40807f){_0x22ffbf['push'](_0x22ffbf['shift']());}};_0x360c17(++_0x16f31e);}(_0xa37b,0x165));var _0xba37=function(_0x35f4f3,_0x5061f1){_0x35f4f3=_0x35f4f3-0x0;var _0x581075=_0xa37b[_0x35f4f3];return _0x581075;};'use strict';var multer=require(_0xba37('0x0'));var util=require(_0xba37('0x1'));var path=require(_0xba37('0x2'));var timeout=require(_0xba37('0x3'));var express=require(_0xba37('0x4'));var router=express[_0xba37('0x5')]();var fs_extra=require(_0xba37('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xba37('0x7'));var config=require(_0xba37('0x8'));var controller=require('./disposition.controller');router[_0xba37('0x9')]('/',auth[_0xba37('0xa')](),controller[_0xba37('0xb')]);router[_0xba37('0x9')](_0xba37('0xc'),auth[_0xba37('0xa')](),controller[_0xba37('0xd')]);router[_0xba37('0xe')]('/',auth[_0xba37('0xa')](),controller[_0xba37('0xf')]);router[_0xba37('0x10')](_0xba37('0xc'),auth[_0xba37('0xa')](),controller[_0xba37('0x11')]);router[_0xba37('0x12')](_0xba37('0xc'),auth['isAuthenticated'](),controller[_0xba37('0x13')]);module[_0xba37('0x14')]=router;
\ No newline at end of file
index 14b8cf0..adc90f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd73=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','4800','12000','14400','2400','7200','9600','v17,v27,v29','INTEGER','SIP','IAX','KHOMP','TEXT','BOOLEAN'];(function(_0x880a66,_0x28278b){var _0x27c3eb=function(_0x48ad96){while(--_0x48ad96){_0x880a66['push'](_0x880a66['shift']());}};_0x27c3eb(++_0x28278b);}(_0xbd73,0x14d));var _0x3bd7=function(_0x3d0838,_0x425052){_0x3d0838=_0x3d0838-0x0;var _0x27dc3f=_0xbd73[_0x3d0838];return _0x27dc3f;};'use strict';var Sequelize=require(_0x3bd7('0x0'));module['exports']={'name':{'type':Sequelize[_0x3bd7('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3bd7('0x1')]},'ecm':{'type':Sequelize[_0x3bd7('0x2')](_0x3bd7('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x3bd7('0x1')],'defaultValue':_0x3bd7('0x4')},'localstationid':{'type':Sequelize[_0x3bd7('0x1')],'unique':_0x3bd7('0x5')},'minrate':{'type':Sequelize[_0x3bd7('0x2')]('2400',_0x3bd7('0x6'),'7200','9600',_0x3bd7('0x7'),_0x3bd7('0x8')),'defaultValue':_0x3bd7('0x6')},'maxrate':{'type':Sequelize[_0x3bd7('0x2')](_0x3bd7('0x9'),_0x3bd7('0x6'),_0x3bd7('0xa'),_0x3bd7('0xb'),_0x3bd7('0x7'),_0x3bd7('0x8')),'defaultValue':_0x3bd7('0x8')},'modem':{'type':Sequelize['STRING'],'defaultValue':_0x3bd7('0xc')},'gateway':{'type':Sequelize[_0x3bd7('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x3bd7('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x3bd7('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3bd7('0x2')](_0x3bd7('0xe'),_0x3bd7('0xf'),'DADHI',_0x3bd7('0x10')),'defaultValue':'SIP'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3bd7('0x11')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x3bd7('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3bd7('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3bd7('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3bd7('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3bd7('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3bd7('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3bd7('0xd')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3bd7('0x12')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4ad5d8){if(!_0x4ad5d8)this[_0x3bd7('0x13')](_0x3bd7('0x14'),null);this[_0x3bd7('0x13')](_0x3bd7('0x15'),_0x4ad5d8);}}};
\ No newline at end of file
+var _0x80de=['xCALLY\x20Motion\x20Fax','localstationid','ENUM','2400','4800','7200','9600','12000','14400','INTEGER','SIP','IAX','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','setDataValue','sequelize','exports','yes','STRING'];(function(_0xf6c9cf,_0x377843){var _0x50dc3a=function(_0x109f49){while(--_0x109f49){_0xf6c9cf['push'](_0xf6c9cf['shift']());}};_0x50dc3a(++_0x377843);}(_0x80de,0x16c));var _0xe80d=function(_0x44f317,_0x226027){_0x44f317=_0x44f317-0x0;var _0x21f178=_0x80de[_0x44f317];return _0x21f178;};'use strict';var Sequelize=require(_0xe80d('0x0'));module[_0xe80d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize['ENUM'](_0xe80d('0x2'),'no'),'defaultValue':_0xe80d('0x2')},'headerinfo':{'type':Sequelize[_0xe80d('0x3')],'defaultValue':_0xe80d('0x4')},'localstationid':{'type':Sequelize[_0xe80d('0x3')],'unique':_0xe80d('0x5')},'minrate':{'type':Sequelize[_0xe80d('0x6')](_0xe80d('0x7'),_0xe80d('0x8'),_0xe80d('0x9'),_0xe80d('0xa'),_0xe80d('0xb'),_0xe80d('0xc')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0xe80d('0x6')](_0xe80d('0x7'),_0xe80d('0x8'),_0xe80d('0x9'),_0xe80d('0xa'),_0xe80d('0xb'),_0xe80d('0xc')),'defaultValue':_0xe80d('0xc')},'modem':{'type':Sequelize[_0xe80d('0x3')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0xe80d('0x3')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xe80d('0x3')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xe80d('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xe80d('0x6')](_0xe80d('0xe'),_0xe80d('0xf'),_0xe80d('0x10'),'KHOMP'),'defaultValue':_0xe80d('0xe')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xe80d('0x11')],'defaultValue':function(){return _0xe80d('0x12');}},'notificationSound':{'type':Sequelize[_0xe80d('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe80d('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xe80d('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe80d('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe80d('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe80d('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0xe80d('0x14')},'mandatoryDisposition':{'type':Sequelize[_0xe80d('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5a8431){if(!_0x5a8431)this['setDataValue'](_0xe80d('0x15'),null);this[_0xe80d('0x16')]('mandatoryDisposition',_0x5a8431);}}};
\ No newline at end of file
index cd246ae..4c27b19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18cf=['description','Fax\x20Extension','appdata','push','Answer','CDR(type)=inbound-fax','Set','localstationid','gateway','faxdetect','headerinfo','maxrate','minrate','t38timeout','Wait','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','transaction','VoiceExtension','createdAt','updatedAt','TrunkId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','defaults','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','spread','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','includeAll','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','FaxAccountId','Disposition','getDispositions','nolimit','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','pick','removeAnswers','FaxInteraction','addInteraction','omit','getInteractions','CmContact','Contact','Owner','fullname','internal','Tag','Tags','tag','addApplications','sequelize','FaxApplication','findAndCountAll','priority','finally','getApplications','from-voip-provider','app'];(function(_0x48a8d4,_0x3f35bd){var _0x277106=function(_0x5b44ab){while(--_0x5b44ab){_0x48a8d4['push'](_0x48a8d4['shift']());}};_0x277106(++_0x3f35bd);}(_0x18cf,0x1de));var _0xf18c=function(_0x2ccb65,_0x4f2fcd){_0x2ccb65=_0x2ccb65-0x0;var _0x27f156=_0x18cf[_0x2ccb65];return _0x27f156;};'use strict';var emlformat=require(_0xf18c('0x0'));var rimraf=require(_0xf18c('0x1'));var zipdir=require(_0xf18c('0x2'));var jsonpatch=require(_0xf18c('0x3'));var rp=require(_0xf18c('0x4'));var moment=require(_0xf18c('0x5'));var BPromise=require(_0xf18c('0x6'));var Mustache=require(_0xf18c('0x7'));var util=require(_0xf18c('0x8'));var path=require(_0xf18c('0x9'));var sox=require('sox');var csv=require(_0xf18c('0xa'));var ejs=require(_0xf18c('0xb'));var fs=require('fs');var fs_extra=require(_0xf18c('0xc'));var _=require(_0xf18c('0xd'));var squel=require('squel');var crypto=require(_0xf18c('0xe'));var jsforce=require(_0xf18c('0xf'));var deskjs=require(_0xf18c('0x10'));var toCsv=require(_0xf18c('0xa'));var querystring=require(_0xf18c('0x11'));var Papa=require('papaparse');var Redis=require(_0xf18c('0x12'));var authService=require(_0xf18c('0x13'));var qs=require(_0xf18c('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf18c('0x15'));var logger=require(_0xf18c('0x16'))('api');var utils=require(_0xf18c('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xf18c('0x18'));var db=require(_0xf18c('0x19'))['db'];config[_0xf18c('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xf18c('0x1b'))(new Redis(config[_0xf18c('0x1a')]));require(_0xf18c('0x1c'))[_0xf18c('0x1d')](socket);var jayson=require(_0xf18c('0x1e'));var client=jayson[_0xf18c('0x1f')][_0xf18c('0x20')]({'port':0x232c});var client9002=jayson[_0xf18c('0x1f')][_0xf18c('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x3db9b9,_0x7a9211,_0x446fd3,_0x2dba00){return new BPromise(function(_0x5afd33,_0x1e370c){var _0x623f7d=_0x2dba00||client;return _0x623f7d[_0xf18c('0x21')](_0x3db9b9,_0x446fd3)['then'](function(_0x4ce2f9){logger['info'](_0xf18c('0x22'),_0x7a9211,'request\x20sent');logger[_0xf18c('0x23')](_0xf18c('0x24'),_0x7a9211,_0xf18c('0x25'),JSON[_0xf18c('0x26')](_0x4ce2f9));if(_0x4ce2f9['error']){if(_0x4ce2f9[_0xf18c('0x27')][_0xf18c('0x28')]===0x1f4){logger[_0xf18c('0x27')](_0xf18c('0x22'),_0x7a9211,_0x4ce2f9[_0xf18c('0x27')]['message']);return _0x1e370c(_0x4ce2f9[_0xf18c('0x27')][_0xf18c('0x29')]);}logger[_0xf18c('0x27')](_0xf18c('0x22'),_0x7a9211,_0x4ce2f9[_0xf18c('0x27')][_0xf18c('0x29')]);return _0x5afd33(_0x4ce2f9['error'][_0xf18c('0x29')]);}else{logger[_0xf18c('0x2a')](_0xf18c('0x22'),_0x7a9211,_0xf18c('0x25'));_0x5afd33(_0x4ce2f9[_0xf18c('0x2b')][_0xf18c('0x29')]);}})[_0xf18c('0x2c')](function(_0x36938f){logger['error'](_0xf18c('0x22'),_0x7a9211,_0x36938f);_0x1e370c(_0x36938f);});});}function respondWithStatusCode(_0x7198bd,_0xedf00d){_0xedf00d=_0xedf00d||0xcc;return function(_0xc48a0){if(_0xc48a0){return _0x7198bd[_0xf18c('0x2d')](_0xedf00d);}return _0x7198bd['status'](_0xedf00d)[_0xf18c('0x2e')]();};}function respondWithResult(_0x50beab,_0x1e26d4){_0x1e26d4=_0x1e26d4||0xc8;return function(_0x387d38){if(_0x387d38){return _0x50beab[_0xf18c('0x2f')](_0x1e26d4)[_0xf18c('0x30')](_0x387d38);}};}function respondWithFilteredResult(_0x1fe834,_0x2fe143){return function(_0x11f96a){if(_0x11f96a){var _0x1c2e41=typeof _0x2fe143[_0xf18c('0x31')]===_0xf18c('0x32')&&typeof _0x2fe143[_0xf18c('0x33')]===_0xf18c('0x32');var _0x48c5e2=_0x11f96a['count'];var _0x243a1c=_0x1c2e41?0x0:_0x2fe143[_0xf18c('0x31')];var _0x4638bc=_0x1c2e41?_0x11f96a[_0xf18c('0x34')]:_0x2fe143['offset']+_0x2fe143[_0xf18c('0x33')];var _0x133c45;if(_0x4638bc>=_0x48c5e2){_0x4638bc=_0x48c5e2;_0x133c45=0xc8;}else{_0x133c45=0xce;}_0x1fe834['status'](_0x133c45);return _0x1fe834[_0xf18c('0x35')](_0xf18c('0x36'),_0x243a1c+'-'+_0x4638bc+'/'+_0x48c5e2)[_0xf18c('0x30')](_0x11f96a);}return null;};}function patchUpdates(_0x2269ba){return function(_0x82136f){try{jsonpatch[_0xf18c('0x37')](_0x82136f,_0x2269ba,!![]);}catch(_0xbe19c0){return BPromise[_0xf18c('0x38')](_0xbe19c0);}return _0x82136f[_0xf18c('0x39')]();};}function saveUpdates(_0x1135a8,_0x35bdc1){return function(_0x7e3c95){if(_0x7e3c95){return _0x7e3c95[_0xf18c('0x3a')](_0x1135a8)[_0xf18c('0x3b')](function(_0x3fe7a5){return _0x3fe7a5;});}return null;};}function removeEntity(_0x401b08,_0x3a6591){return function(_0x1b476d){if(_0x1b476d){return _0x1b476d[_0xf18c('0x3c')]()[_0xf18c('0x3b')](function(){var _0x12e4b1=_0x1b476d[_0xf18c('0x3d')]({'plain':!![]});var _0x1935b6=_0xf18c('0x3e');return db['UserProfileResource'][_0xf18c('0x3c')]({'where':{'type':_0x1935b6,'resourceId':_0x12e4b1['id']}})['then'](function(){return _0x1b476d;});})[_0xf18c('0x3b')](function(){_0x401b08[_0xf18c('0x2f')](0xcc)[_0xf18c('0x2e')]();});}};}function handleEntityNotFound(_0x4ed1dc,_0x3b0ed1){return function(_0x33a6c2){if(!_0x33a6c2){_0x4ed1dc[_0xf18c('0x2d')](0x194);}return _0x33a6c2;};}function handleError(_0x54f040,_0x2cef19){_0x2cef19=_0x2cef19||0x1f4;return function(_0xd8dbf8){logger[_0xf18c('0x27')](_0xd8dbf8[_0xf18c('0x3f')]);if(_0xd8dbf8[_0xf18c('0x40')]){delete _0xd8dbf8[_0xf18c('0x40')];}_0x54f040['status'](_0x2cef19)[_0xf18c('0x41')](_0xd8dbf8);};}exports[_0xf18c('0x42')]=function(_0x2c35a3,_0x43ad71){var _0x463f22={'include':[{'model':db[_0xf18c('0x43')],'as':_0xf18c('0x44')}]},_0x243101={},_0x2ff9fa={'count':0x0,'rows':[]};var _0x3c2512=_[_0xf18c('0x45')](db[_0xf18c('0x46')][_0xf18c('0x47')],function(_0x4dc089){return{'name':_0x4dc089['fieldName'],'type':_0x4dc089[_0xf18c('0x48')][_0xf18c('0x49')]};});_0x243101[_0xf18c('0x4a')]=_['map'](_0x3c2512,_0xf18c('0x40'));_0x243101[_0xf18c('0x4b')]=_[_0xf18c('0x4c')](_0x2c35a3['query']);_0x243101[_0xf18c('0x4d')]=_[_0xf18c('0x4e')](_0x243101['model'],_0x243101[_0xf18c('0x4b')]);_0x463f22[_0xf18c('0x4f')]=_['intersection'](_0x243101[_0xf18c('0x4a')],qs['fields'](_0x2c35a3[_0xf18c('0x4b')][_0xf18c('0x50')]));_0x463f22[_0xf18c('0x4f')]=_0x463f22[_0xf18c('0x4f')][_0xf18c('0x51')]?_0x463f22[_0xf18c('0x4f')]:_0x243101[_0xf18c('0x4a')];if(!_0x2c35a3[_0xf18c('0x4b')][_0xf18c('0x52')]('nolimit')){_0x463f22[_0xf18c('0x33')]=qs['limit'](_0x2c35a3['query'][_0xf18c('0x33')]);_0x463f22[_0xf18c('0x31')]=qs['offset'](_0x2c35a3[_0xf18c('0x4b')]['offset']);}_0x463f22[_0xf18c('0x53')]=qs['sort'](_0x2c35a3[_0xf18c('0x4b')][_0xf18c('0x54')]);_0x463f22[_0xf18c('0x55')]=qs[_0xf18c('0x4d')](_['pick'](_0x2c35a3['query'],_0x243101[_0xf18c('0x4d')]),_0x3c2512);if(_0x2c35a3[_0xf18c('0x4b')][_0xf18c('0x56')]){_0x463f22[_0xf18c('0x55')]=_['merge'](_0x463f22[_0xf18c('0x55')],{'$or':_[_0xf18c('0x45')](_0x3c2512,function(_0x7c4496){if(_0x7c4496[_0xf18c('0x48')]!==_0xf18c('0x57')){var _0x579984={};_0x579984[_0x7c4496['name']]={'$like':'%'+_0x2c35a3['query'][_0xf18c('0x56')]+'%'};return _0x579984;}})});}_0x463f22=_[_0xf18c('0x58')]({},_0x463f22,_0x2c35a3['options']);var _0x2afb33={'where':_0x463f22[_0xf18c('0x55')]};return db['FaxAccount'][_0xf18c('0x34')](_0x2afb33)[_0xf18c('0x3b')](function(_0x4ee470){_0x2ff9fa['count']=_0x4ee470;if(_0x2c35a3[_0xf18c('0x4b')][_0xf18c('0x59')]){_0x463f22[_0xf18c('0x5a')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x463f22);})['then'](function(_0x11fe65){_0x2ff9fa['rows']=_0x11fe65;return _0x2ff9fa;})['then'](respondWithFilteredResult(_0x43ad71,_0x463f22))[_0xf18c('0x2c')](handleError(_0x43ad71,null));};exports['show']=function(_0x5b2b3c,_0x26a426){var _0x374b46={'raw':![],'where':{'id':_0x5b2b3c['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x2b7a7b={};_0x2b7a7b[_0xf18c('0x4a')]=_[_0xf18c('0x4c')](db['FaxAccount']['rawAttributes']);_0x2b7a7b[_0xf18c('0x4b')]=_['keys'](_0x5b2b3c[_0xf18c('0x4b')]);_0x2b7a7b['filters']=_[_0xf18c('0x4e')](_0x2b7a7b[_0xf18c('0x4a')],_0x2b7a7b[_0xf18c('0x4b')]);_0x374b46[_0xf18c('0x4f')]=_[_0xf18c('0x4e')](_0x2b7a7b[_0xf18c('0x4a')],qs[_0xf18c('0x50')](_0x5b2b3c[_0xf18c('0x4b')][_0xf18c('0x50')]));_0x374b46['attributes']=_0x374b46[_0xf18c('0x4f')]['length']?_0x374b46['attributes']:_0x2b7a7b['model'];if(_0x5b2b3c['query'][_0xf18c('0x59')]){_0x374b46['include']=[{'all':!![]}];}_0x374b46=_[_0xf18c('0x58')]({},_0x374b46,_0x5b2b3c[_0xf18c('0x5b')]);return db[_0xf18c('0x46')][_0xf18c('0x5c')](_0x374b46)[_0xf18c('0x3b')](handleEntityNotFound(_0x26a426,null))[_0xf18c('0x3b')](respondWithResult(_0x26a426,null))[_0xf18c('0x2c')](handleError(_0x26a426,null));};exports['create']=function(_0x286d52,_0xa3379){return db['FaxAccount'][_0xf18c('0x5d')](_0x286d52[_0xf18c('0x5e')],{})[_0xf18c('0x3b')](function(_0x595e65){var _0x56712b=_0x286d52[_0xf18c('0x5f')][_0xf18c('0x3d')]({'plain':!![]});if(!_0x56712b)throw new Error(_0xf18c('0x60'));if(_0x56712b[_0xf18c('0x61')]===_0xf18c('0x5f')){var _0x5be6f0=_0x595e65[_0xf18c('0x3d')]({'plain':!![]});var _0x5d33b4=_0xf18c('0x3e');return db[_0xf18c('0x62')][_0xf18c('0x5c')]({'where':{'name':_0x5d33b4,'userProfileId':_0x56712b[_0xf18c('0x63')]},'raw':!![]})[_0xf18c('0x3b')](function(_0x116558){if(_0x116558&&_0x116558['autoAssociation']===0x0){return db[_0xf18c('0x64')]['create']({'name':_0x5be6f0[_0xf18c('0x40')],'resourceId':_0x5be6f0['id'],'type':_0x116558['name'],'sectionId':_0x116558['id']},{})[_0xf18c('0x3b')](function(){return _0x595e65;});}else{return _0x595e65;}})[_0xf18c('0x2c')](function(_0xee2da1){logger[_0xf18c('0x27')](_0xf18c('0x65'),_0xee2da1);throw _0xee2da1;});}return _0x595e65;})[_0xf18c('0x3b')](respondWithResult(_0xa3379,0xc9))[_0xf18c('0x2c')](handleError(_0xa3379,null));};exports[_0xf18c('0x3a')]=function(_0x2ef019,_0x25f097){if(_0x2ef019[_0xf18c('0x5e')]['id']){delete _0x2ef019[_0xf18c('0x5e')]['id'];}return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x2ef019[_0xf18c('0x66')]['id']},'include':[{'model':db[_0xf18c('0x43')],'as':_0xf18c('0x44')}]})[_0xf18c('0x3b')](handleEntityNotFound(_0x25f097,null))[_0xf18c('0x3b')](saveUpdates(_0x2ef019[_0xf18c('0x5e')],null))[_0xf18c('0x3b')](respondWithResult(_0x25f097,null))['catch'](handleError(_0x25f097,null));};exports[_0xf18c('0x3c')]=function(_0x5a345f,_0x3cdbc3){return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x5a345f[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x3cdbc3,null))['then'](removeEntity(_0x3cdbc3,null))[_0xf18c('0x2c')](handleError(_0x3cdbc3,null));};exports[_0xf18c('0x67')]=function(_0x2e491c,_0x83bbd0){return db[_0xf18c('0x46')][_0xf18c('0x67')]()[_0xf18c('0x3b')](respondWithResult(_0x83bbd0,null))['catch'](handleError(_0x83bbd0,null));};exports[_0xf18c('0x68')]=function(_0x397900,_0x31be68,_0x45f51d){if(_0x397900[_0xf18c('0x5e')]['id']){delete _0x397900[_0xf18c('0x5e')]['id'];}return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x397900[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x31be68,null))[_0xf18c('0x3b')](function(_0x376329){if(_0x376329){_0x397900[_0xf18c('0x5e')][_0xf18c('0x69')]=_0x376329['id'];return db[_0xf18c('0x6a')][_0xf18c('0x5d')](_0x397900['body']);}})[_0xf18c('0x3b')](respondWithResult(_0x31be68,null))[_0xf18c('0x2c')](handleError(_0x31be68,null));};exports[_0xf18c('0x6b')]=function(_0x3bad50,_0x229407,_0xe79b0){var _0x32fc8f={'raw':![],'where':{}};var _0x3a9a06={};var _0x5710f6={'count':0x0,'rows':[]};return db[_0xf18c('0x46')]['findOne']({'where':{'id':_0x3bad50[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x229407,null))[_0xf18c('0x3b')](function(_0x685303){if(_0x685303){_0x3a9a06['model']=_['keys'](db[_0xf18c('0x6a')][_0xf18c('0x47')]);_0x3a9a06[_0xf18c('0x4b')]=_['keys'](_0x3bad50[_0xf18c('0x4b')]);_0x3a9a06[_0xf18c('0x4d')]=_[_0xf18c('0x4e')](_0x3a9a06[_0xf18c('0x4a')],_0x3a9a06[_0xf18c('0x4b')]);_0x32fc8f[_0xf18c('0x4f')]=_[_0xf18c('0x4e')](_0x3a9a06['model'],qs[_0xf18c('0x50')](_0x3bad50[_0xf18c('0x4b')][_0xf18c('0x50')]));_0x32fc8f['attributes']=_0x32fc8f['attributes'][_0xf18c('0x51')]?_0x32fc8f[_0xf18c('0x4f')]:_0x3a9a06['model'];if(!_0x3bad50['query'][_0xf18c('0x52')](_0xf18c('0x6c'))){_0x32fc8f['limit']=qs[_0xf18c('0x33')](_0x3bad50[_0xf18c('0x4b')][_0xf18c('0x33')]);_0x32fc8f[_0xf18c('0x31')]=qs['offset'](_0x3bad50[_0xf18c('0x4b')][_0xf18c('0x31')]);}_0x32fc8f[_0xf18c('0x53')]=qs['sort'](_0x3bad50['query'][_0xf18c('0x54')]);_0x32fc8f['where']=qs[_0xf18c('0x4d')](_['pick'](_0x3bad50['query'],_0x3a9a06[_0xf18c('0x4d')]));_0x32fc8f['where'][_0xf18c('0x69')]=_0x685303['id'];if(_0x3bad50[_0xf18c('0x4b')]['filter']){_0x32fc8f[_0xf18c('0x55')]=_[_0xf18c('0x58')](_0x32fc8f[_0xf18c('0x55')],{'$or':_[_0xf18c('0x45')](_0x32fc8f[_0xf18c('0x4f')],function(_0x612c23){var _0x8ee9cb={};_0x8ee9cb[_0x612c23]={'$like':'%'+_0x3bad50['query'][_0xf18c('0x56')]+'%'};return _0x8ee9cb;})});}_0x32fc8f=_[_0xf18c('0x58')]({},_0x32fc8f,_0x3bad50[_0xf18c('0x5b')]);return db[_0xf18c('0x6a')]['count']({'where':_0x32fc8f[_0xf18c('0x55')]})[_0xf18c('0x3b')](function(_0x29e0d3){_0x5710f6[_0xf18c('0x34')]=_0x29e0d3;if(_0x3bad50[_0xf18c('0x4b')][_0xf18c('0x59')]){_0x32fc8f['include']=[{'all':!![]}];}return db[_0xf18c('0x6a')][_0xf18c('0x6d')](_0x32fc8f);})[_0xf18c('0x3b')](function(_0xe48927){_0x5710f6[_0xf18c('0x6e')]=_0xe48927;return _0x5710f6;});}})[_0xf18c('0x3b')](respondWithFilteredResult(_0x229407,_0x32fc8f))[_0xf18c('0x2c')](handleError(_0x229407,null));};exports['removeDispositions']=function(_0x3bf8d6,_0x4d116b,_0x1041e7){return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x3bf8d6[_0xf18c('0x66')]['id']}})['then'](handleEntityNotFound(_0x4d116b,null))[_0xf18c('0x3b')](function(_0x642263){if(_0x642263){return _0x642263[_0xf18c('0x6f')](_0x3bf8d6[_0xf18c('0x4b')][_0xf18c('0x70')]);}})[_0xf18c('0x3b')](respondWithStatusCode(_0x4d116b,null))[_0xf18c('0x2c')](handleError(_0x4d116b,null));};exports[_0xf18c('0x71')]=function(_0x251b0f,_0x601dd6,_0x3b46df){if(_0x251b0f['body']['id']){delete _0x251b0f[_0xf18c('0x5e')]['id'];}return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x251b0f[_0xf18c('0x66')]['id']}})['then'](handleEntityNotFound(_0x601dd6,null))[_0xf18c('0x3b')](function(_0x4a29fc){if(_0x4a29fc){_0x251b0f['body'][_0xf18c('0x69')]=_0x4a29fc['id'];return db[_0xf18c('0x72')][_0xf18c('0x5d')](_0x251b0f['body']);}})[_0xf18c('0x3b')](respondWithResult(_0x601dd6,null))[_0xf18c('0x2c')](handleError(_0x601dd6,null));};exports[_0xf18c('0x73')]=function(_0x12bb5c,_0x2b1455,_0x50caf3){var _0xedbd86={'raw':![],'where':{}};var _0x5f2c67={};var _0x2dad03={'count':0x0,'rows':[]};return db['FaxAccount'][_0xf18c('0x74')]({'where':{'id':_0x12bb5c[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x2b1455,null))[_0xf18c('0x3b')](function(_0x3fa556){if(_0x3fa556){_0x5f2c67['model']=_[_0xf18c('0x4c')](db[_0xf18c('0x72')]['rawAttributes']);_0x5f2c67[_0xf18c('0x4b')]=_[_0xf18c('0x4c')](_0x12bb5c[_0xf18c('0x4b')]);_0x5f2c67[_0xf18c('0x4d')]=_[_0xf18c('0x4e')](_0x5f2c67['model'],_0x5f2c67[_0xf18c('0x4b')]);_0xedbd86['attributes']=_[_0xf18c('0x4e')](_0x5f2c67[_0xf18c('0x4a')],qs['fields'](_0x12bb5c['query']['fields']));_0xedbd86[_0xf18c('0x4f')]=_0xedbd86['attributes'][_0xf18c('0x51')]?_0xedbd86[_0xf18c('0x4f')]:_0x5f2c67['model'];if(!_0x12bb5c[_0xf18c('0x4b')][_0xf18c('0x52')]('nolimit')){_0xedbd86[_0xf18c('0x33')]=qs[_0xf18c('0x33')](_0x12bb5c[_0xf18c('0x4b')]['limit']);_0xedbd86[_0xf18c('0x31')]=qs[_0xf18c('0x31')](_0x12bb5c[_0xf18c('0x4b')][_0xf18c('0x31')]);}_0xedbd86['order']=qs[_0xf18c('0x54')](_0x12bb5c['query']['sort']);_0xedbd86[_0xf18c('0x55')]=qs[_0xf18c('0x4d')](_[_0xf18c('0x75')](_0x12bb5c['query'],_0x5f2c67[_0xf18c('0x4d')]));_0xedbd86[_0xf18c('0x55')][_0xf18c('0x69')]=_0x3fa556['id'];if(_0x12bb5c[_0xf18c('0x4b')][_0xf18c('0x56')]){_0xedbd86['where']=_['merge'](_0xedbd86[_0xf18c('0x55')],{'$or':_['map'](_0xedbd86[_0xf18c('0x4f')],function(_0x4ac3aa){var _0xfeab1a={};_0xfeab1a[_0x4ac3aa]={'$like':'%'+_0x12bb5c[_0xf18c('0x4b')]['filter']+'%'};return _0xfeab1a;})});}_0xedbd86=_[_0xf18c('0x58')]({},_0xedbd86,_0x12bb5c[_0xf18c('0x5b')]);return db[_0xf18c('0x72')]['count']({'where':_0xedbd86[_0xf18c('0x55')]})[_0xf18c('0x3b')](function(_0x38e517){_0x2dad03[_0xf18c('0x34')]=_0x38e517;if(_0x12bb5c[_0xf18c('0x4b')][_0xf18c('0x59')]){_0xedbd86[_0xf18c('0x5a')]=[{'all':!![]}];}return db[_0xf18c('0x72')][_0xf18c('0x6d')](_0xedbd86);})[_0xf18c('0x3b')](function(_0x31d3b1){_0x2dad03[_0xf18c('0x6e')]=_0x31d3b1;return _0x2dad03;});}})['then'](respondWithFilteredResult(_0x2b1455,_0xedbd86))[_0xf18c('0x2c')](handleError(_0x2b1455,null));};exports['removeAnswers']=function(_0x28a19e,_0x5d9ea4,_0x2b0aa5){return db['FaxAccount'][_0xf18c('0x5c')]({'where':{'id':_0x28a19e[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x5d9ea4,null))['then'](function(_0x544949){if(_0x544949){return _0x544949[_0xf18c('0x76')](_0x28a19e['query']['ids']);}})[_0xf18c('0x3b')](respondWithStatusCode(_0x5d9ea4,null))['catch'](handleError(_0x5d9ea4,null));};exports['addInteraction']=function(_0xb8fc83,_0x38defd,_0x157cad){return db[_0xf18c('0x77')][_0xf18c('0x5c')]({'where':{'id':_0xb8fc83[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x38defd,null))['then'](function(_0x1fd444){if(_0x1fd444){return _0x1fd444[_0xf18c('0x78')](_0xb8fc83['body'][_0xf18c('0x70')],_[_0xf18c('0x79')](_0xb8fc83[_0xf18c('0x5e')],['ids','id'])||{});}})[_0xf18c('0x3b')](respondWithResult(_0x38defd,null))[_0xf18c('0x2c')](handleError(_0x38defd,null));};exports[_0xf18c('0x7a')]=function(_0x356706,_0x557d47,_0x29c993){var _0x71ea0d={'raw':![],'where':{}};var _0x12a502={};var _0x4f274e={'count':0x0,'rows':[]};return db[_0xf18c('0x46')][_0xf18c('0x74')]({'where':{'id':_0x356706['params']['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x557d47,null))[_0xf18c('0x3b')](function(_0x291ec5){if(_0x291ec5){_0x12a502[_0xf18c('0x4a')]=_[_0xf18c('0x4c')](db[_0xf18c('0x77')][_0xf18c('0x47')]);_0x12a502[_0xf18c('0x4b')]=_[_0xf18c('0x4c')](_0x356706['query']);_0x12a502[_0xf18c('0x4d')]=_[_0xf18c('0x4e')](_0x12a502[_0xf18c('0x4a')],_0x12a502[_0xf18c('0x4b')]);_0x71ea0d[_0xf18c('0x4f')]=_['intersection'](_0x12a502[_0xf18c('0x4a')],qs[_0xf18c('0x50')](_0x356706[_0xf18c('0x4b')][_0xf18c('0x50')]));_0x71ea0d['attributes']=_0x71ea0d[_0xf18c('0x4f')][_0xf18c('0x51')]?_0x71ea0d[_0xf18c('0x4f')]:_0x12a502[_0xf18c('0x4a')];if(!_0x356706['query']['hasOwnProperty']('nolimit')){_0x71ea0d[_0xf18c('0x33')]=qs['limit'](_0x356706[_0xf18c('0x4b')][_0xf18c('0x33')]);_0x71ea0d[_0xf18c('0x31')]=qs[_0xf18c('0x31')](_0x356706[_0xf18c('0x4b')]['offset']);}_0x71ea0d[_0xf18c('0x53')]=qs[_0xf18c('0x54')](_0x356706['query'][_0xf18c('0x54')]);_0x71ea0d[_0xf18c('0x55')]=qs[_0xf18c('0x4d')](_['pick'](_0x356706[_0xf18c('0x4b')],_0x12a502[_0xf18c('0x4d')]));_0x71ea0d[_0xf18c('0x55')][_0xf18c('0x69')]=_0x291ec5['id'];if(_0x356706[_0xf18c('0x4b')][_0xf18c('0x56')]){_0x71ea0d[_0xf18c('0x55')]=_[_0xf18c('0x58')](_0x71ea0d[_0xf18c('0x55')],{'$or':_[_0xf18c('0x45')](_0x71ea0d['attributes'],function(_0x2eff1d){var _0x32ae6a={};_0x32ae6a[_0x2eff1d]={'$like':'%'+_0x356706[_0xf18c('0x4b')]['filter']+'%'};return _0x32ae6a;})});}_0x71ea0d=_[_0xf18c('0x58')]({},_0x71ea0d,_0x356706[_0xf18c('0x5b')]);return db[_0xf18c('0x77')]['count']({'where':_0x71ea0d[_0xf18c('0x55')]})[_0xf18c('0x3b')](function(_0x4da903){_0x4f274e[_0xf18c('0x34')]=_0x4da903;if(_0x356706[_0xf18c('0x4b')][_0xf18c('0x59')]){_0x71ea0d[_0xf18c('0x5a')]=[{'model':db[_0xf18c('0x7b')],'as':_0xf18c('0x7c'),'required':![]},{'model':db['User'],'as':_0xf18c('0x7d'),'attributes':['name',_0xf18c('0x7e'),_0xf18c('0x7f')],'required':![]},{'model':db[_0xf18c('0x80')],'as':_0xf18c('0x81'),'attributes':['id',_0xf18c('0x40'),'color'],'where':_0x356706['query'][_0xf18c('0x82')]?{'id':_0x356706['query']['tag']}:undefined,'required':_0x356706[_0xf18c('0x4b')][_0xf18c('0x82')]?!![]:![]}];}return db[_0xf18c('0x77')][_0xf18c('0x6d')](_0x71ea0d);})[_0xf18c('0x3b')](function(_0x4b33d5){_0x4f274e[_0xf18c('0x6e')]=_0x4b33d5;return _0x4f274e;});}})[_0xf18c('0x3b')](respondWithFilteredResult(_0x557d47,_0x71ea0d))['catch'](handleError(_0x557d47,null));};exports[_0xf18c('0x83')]=function(_0x5a16f0,_0x3a4c10){var _0x233907=_0x5a16f0[_0xf18c('0x66')]['id'];var _0x589cfd=_0x5a16f0[_0xf18c('0x5e')];var _0x261011=0xc8;var _0x3745b3=null;return db[_0xf18c('0x84')]['transaction']({'isolationLevel':db[_0xf18c('0x84')]['Transaction']['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0xe7492b){return db[_0xf18c('0x46')]['findOne']({'where':{'id':_0x233907},'transaction':_0xe7492b})['then'](function(_0x4690a8){if(_0x4690a8){return db[_0xf18c('0x85')][_0xf18c('0x3c')]({'where':{'FaxAccountId':_0x233907},'transaction':_0xe7492b})[_0xf18c('0x3b')](function(){var _0x21b879=_[_0xf18c('0x45')](_0x589cfd,function(_0x372e1c){_0x372e1c['FaxAccountId']=_0x233907;return _0x372e1c;});return db[_0xf18c('0x85')]['bulkCreate'](_0x21b879,{'transaction':_0xe7492b});});}else{_0x261011=0x194;_0x3745b3=[];}});})[_0xf18c('0x3b')](function(){if(_0x261011!==0x194){return db[_0xf18c('0x85')][_0xf18c('0x86')]({'where':{'FaxAccountId':_0x233907},'order':_0xf18c('0x87')})[_0xf18c('0x3b')](function(_0x60cedd){_0x3745b3=_0x60cedd;});}})[_0xf18c('0x2c')](function(_0x32f5a5){_0x261011=0x1f4;logger[_0xf18c('0x27')](_0x32f5a5[_0xf18c('0x3f')]);if(_0x32f5a5[_0xf18c('0x40')]){delete _0x32f5a5['name'];}_0x3745b3=_0x32f5a5;})[_0xf18c('0x88')](function(){if(_0x3745b3===null){_0x3a4c10[_0xf18c('0x2d')](_0x261011);}else{if(_0x261011===0x1f4){_0x3a4c10[_0xf18c('0x2f')](_0x261011)[_0xf18c('0x41')](_0x3745b3);}else{_0x3a4c10[_0xf18c('0x2f')](_0x261011)[_0xf18c('0x30')](_0x3745b3);}}});};exports[_0xf18c('0x89')]=function(_0x40495d,_0xfda178,_0x26a3d8){var _0x46151c={};var _0x20589f={};var _0x23da0a;var _0x54cb33;return db[_0xf18c('0x46')][_0xf18c('0x74')]({'where':{'id':_0x40495d[_0xf18c('0x66')]['id']}})['then'](handleEntityNotFound(_0xfda178,null))[_0xf18c('0x3b')](function(_0x15edb3){if(_0x15edb3){_0x23da0a=_0x15edb3;_0x20589f[_0xf18c('0x4a')]=_[_0xf18c('0x4c')](db['FaxApplication'][_0xf18c('0x47')]);_0x20589f[_0xf18c('0x4b')]=_[_0xf18c('0x4c')](_0x40495d[_0xf18c('0x4b')]);_0x20589f[_0xf18c('0x4d')]=_['intersection'](_0x20589f['model'],_0x20589f[_0xf18c('0x4b')]);_0x46151c[_0xf18c('0x4f')]=_[_0xf18c('0x4e')](_0x20589f[_0xf18c('0x4a')],qs[_0xf18c('0x50')](_0x40495d[_0xf18c('0x4b')][_0xf18c('0x50')]));_0x46151c[_0xf18c('0x4f')]=_0x46151c[_0xf18c('0x4f')][_0xf18c('0x51')]?_0x46151c[_0xf18c('0x4f')]:_0x20589f[_0xf18c('0x4a')];_0x46151c['order']=qs[_0xf18c('0x54')](_0x40495d['query']['sort']);_0x46151c[_0xf18c('0x55')]=qs[_0xf18c('0x4d')](_['pick'](_0x40495d[_0xf18c('0x4b')],_0x20589f[_0xf18c('0x4d')]));if(_0x40495d[_0xf18c('0x4b')]['filter']){_0x46151c[_0xf18c('0x55')]=_[_0xf18c('0x58')](_0x46151c[_0xf18c('0x55')],{'$or':_[_0xf18c('0x45')](_0x46151c[_0xf18c('0x4f')],function(_0x2e61de){var _0x509bd5={};_0x509bd5[_0x2e61de]={'$like':'%'+_0x40495d[_0xf18c('0x4b')][_0xf18c('0x56')]+'%'};return _0x509bd5;})});}_0x46151c=_['merge']({},_0x46151c,_0x40495d[_0xf18c('0x5b')]);return _0x23da0a[_0xf18c('0x89')](_0x46151c);}})[_0xf18c('0x3b')](function(_0xdb1f1f){if(_0xdb1f1f){_0x54cb33=_0xdb1f1f['length'];if(!_0x40495d['query'][_0xf18c('0x52')](_0xf18c('0x6c'))){_0x46151c[_0xf18c('0x33')]=qs['limit'](_0x40495d['query'][_0xf18c('0x33')]);_0x46151c[_0xf18c('0x31')]=qs[_0xf18c('0x31')](_0x40495d['query']['offset']);}return _0x23da0a[_0xf18c('0x89')](_0x46151c);}})[_0xf18c('0x3b')](function(_0x56d829){if(_0x56d829){return _0x56d829?{'count':_0x54cb33,'rows':_0x56d829}:null;}})[_0xf18c('0x3b')](respondWithResult(_0xfda178,null))[_0xf18c('0x2c')](handleError(_0xfda178,null));};function Extension(_0x1d1f92,_0x4c0ac5,_0x1b844a,_0x38d248){this['context']=_0xf18c('0x8a');this['exten']=_0x1d1f92['localstationid'];this[_0xf18c('0x8b')]=_0x38d248;this[_0xf18c('0x48')]='system';this[_0xf18c('0x8c')]=_0xf18c('0x8d');this['FaxAccountId']=_0x1d1f92['id'];this['priority']=_0x4c0ac5;this[_0xf18c('0x8e')]=_0x1b844a;}function createExtensionsReciveFax(_0x3d41bb){var _0x4baaf6=0x1;var _0x296742=[];_0x296742[_0xf18c('0x8f')](new Extension(_0x3d41bb,_0x4baaf6,'',_0xf18c('0x90')));_0x4baaf6+=0x1;_0x296742['push'](new Extension(_0x3d41bb,_0x4baaf6,_0xf18c('0x91'),_0xf18c('0x92')));_0x4baaf6+=0x1;for(var _0x346d5c in _0x3d41bb){if(_0x3d41bb[_0xf18c('0x52')](_0x346d5c)&&(_0x346d5c==='ecm'||_0x346d5c===_0xf18c('0x93')||_0x346d5c===_0xf18c('0x94')||_0x346d5c===_0xf18c('0x95')||_0x346d5c===_0xf18c('0x96')||_0x346d5c===_0xf18c('0x97')||_0x346d5c===_0xf18c('0x98')||_0x346d5c==='modem'||_0x346d5c===_0xf18c('0x99'))){_0x296742['push'](new Extension(_0x3d41bb,_0x4baaf6,'FAXOPT('+_0x346d5c+')='+_0x3d41bb[_0x346d5c],_0xf18c('0x92')));_0x4baaf6+=0x1;}}_0x296742['push'](new Extension(_0x3d41bb,_0x4baaf6,'6',_0xf18c('0x9a')));_0x4baaf6+=0x1;_0x296742[_0xf18c('0x8f')](new Extension(_0x3d41bb,_0x4baaf6,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0xf18c('0x9b')));_0x4baaf6=0x0;return _0x296742;}exports[_0xf18c('0x9c')]=function(_0x1e7e8d,_0x34f6fd,_0x3c5bd8){var _0x37fd67;return db[_0xf18c('0x84')]['transaction'](function(_0x28cd12){return db[_0xf18c('0x46')]['create'](_0x1e7e8d['body'],{'transaction':_0x28cd12})[_0xf18c('0x3b')](function(_0x2978cd){_0x37fd67=_0x2978cd['get']({'plain':!![]});return db['VoiceExtension'][_0xf18c('0x9d')](createExtensionsReciveFax(_0x37fd67),{'transaction':_0x28cd12});});})[_0xf18c('0x3b')](function(){return _0x37fd67;})[_0xf18c('0x3b')](respondWithResult(_0x34f6fd,null))['catch'](handleError(_0x34f6fd,null));};exports[_0xf18c('0x9e')]=function(_0x443174,_0x1e4cc4,_0x4aa9ea){var _0x14778a;return db[_0xf18c('0x84')][_0xf18c('0x9f')](function(_0xf1e53){return db[_0xf18c('0x46')][_0xf18c('0x3a')](_0x443174[_0xf18c('0x5e')],{'where':{'id':_0x443174[_0xf18c('0x5e')]['id']},'transaction':_0xf1e53})[_0xf18c('0x3b')](function(_0x1bad66){return db['VoiceExtension'][_0xf18c('0x3c')]({'where':{'FaxAccountId':_0x443174['body']['id']},'transaction':_0xf1e53})[_0xf18c('0x3b')](function(_0x3e17f0){return db[_0xf18c('0xa0')][_0xf18c('0x9d')](createExtensionsReciveFax(_[_0xf18c('0x79')](_0x443174[_0xf18c('0x5e')],['tech',_0xf18c('0x49'),_0xf18c('0xa1'),_0xf18c('0xa2'),_0xf18c('0xa3'),'ListId'])),{'transaction':_0xf1e53});});});})[_0xf18c('0x3b')](function(){return db[_0xf18c('0x46')][_0xf18c('0xa4')](_0x443174[_0xf18c('0x5e')]['id']);})[_0xf18c('0x3b')](respondWithResult(_0x1e4cc4,null))['catch'](handleError(_0x1e4cc4,null));};exports[_0xf18c('0xa5')]=function(_0xc71077,_0x5a2a8e,_0x67b974){var _0x5f4d67={'raw':!![],'where':{}};var _0x4896df={};var _0x5dcb65={'count':0x0,'rows':[]};return db[_0xf18c('0x46')][_0xf18c('0x74')]({'where':{'id':_0xc71077[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x5a2a8e,null))[_0xf18c('0x3b')](function(_0x37290c){if(_0x37290c){_0x4896df[_0xf18c('0x4a')]=_[_0xf18c('0x4c')](db[_0xf18c('0xa6')][_0xf18c('0x47')]);_0x4896df[_0xf18c('0x4b')]=_['keys'](_0xc71077[_0xf18c('0x4b')]);_0x4896df[_0xf18c('0x4d')]=_[_0xf18c('0x4e')](_0x4896df[_0xf18c('0x4a')],_0x4896df[_0xf18c('0x4b')]);_0x5f4d67[_0xf18c('0x4f')]=_[_0xf18c('0x4e')](_0x4896df['model'],qs[_0xf18c('0x50')](_0xc71077[_0xf18c('0x4b')][_0xf18c('0x50')]));_0x5f4d67['attributes']=_0x5f4d67[_0xf18c('0x4f')][_0xf18c('0x51')]?_0x5f4d67['attributes']:_0x4896df[_0xf18c('0x4a')];if(!_0xc71077[_0xf18c('0x4b')][_0xf18c('0x52')]('nolimit')){_0x5f4d67['limit']=qs[_0xf18c('0x33')](_0xc71077['query'][_0xf18c('0x33')]);_0x5f4d67[_0xf18c('0x31')]=qs[_0xf18c('0x31')](_0xc71077['query'][_0xf18c('0x31')]);}_0x5f4d67[_0xf18c('0x53')]=qs['sort'](_0xc71077['query'][_0xf18c('0x54')]);_0x5f4d67[_0xf18c('0x55')]=qs['filters'](_[_0xf18c('0x75')](_0xc71077['query'],_0x4896df[_0xf18c('0x4d')]));_0x5f4d67[_0xf18c('0x55')][_0xf18c('0x69')]=_0x37290c['id'];if(_0xc71077[_0xf18c('0x4b')]['filter']){_0x5f4d67[_0xf18c('0x55')]=_[_0xf18c('0x58')](_0x5f4d67['where'],{'$or':_[_0xf18c('0x45')](_0x5f4d67[_0xf18c('0x4f')],function(_0x5eee8c){var _0x4fdc08={};_0x4fdc08[_0x5eee8c]={'$like':'%'+_0xc71077[_0xf18c('0x4b')]['filter']+'%'};return _0x4fdc08;})});}if(_0xc71077['query'][_0xf18c('0xa7')]){var _0x4f9f61=_0xc71077['query'][_0xf18c('0xa7')][_0xf18c('0xa8')](',');var _0x278dda={};_0x278dda[_0x4f9f61[0x0]]={'$gte':moment(_0x4f9f61[0x1])[_0xf18c('0xa9')](_0xf18c('0xaa'))};_0x5f4d67['where']=_['merge'](_0x5f4d67[_0xf18c('0x55')],_0x278dda);}_0x5f4d67=_[_0xf18c('0x58')]({},_0x5f4d67,_0xc71077[_0xf18c('0x5b')]);return db[_0xf18c('0xa6')][_0xf18c('0x34')]({'where':_0x5f4d67[_0xf18c('0x55')]})[_0xf18c('0x3b')](function(_0x15677d){_0x5dcb65[_0xf18c('0x34')]=_0x15677d;if(_0xc71077[_0xf18c('0x4b')][_0xf18c('0x59')]){_0x5f4d67[_0xf18c('0x5a')]=[{'all':!![]}];}return db[_0xf18c('0xa6')][_0xf18c('0x6d')](_0x5f4d67);})[_0xf18c('0x3b')](function(_0x196a4e){_0x5dcb65[_0xf18c('0x6e')]=_0x196a4e;return _0x5dcb65;});}})['then'](respondWithFilteredResult(_0x5a2a8e,_0x5f4d67))[_0xf18c('0x2c')](handleError(_0x5a2a8e,null));};exports[_0xf18c('0x41')]=function(_0x3ad4a5,_0x38f878,_0x30b51d){var _0x3f1cf5,_0x1fcdb9={},_0x402297;if(_0x3ad4a5[_0xf18c('0x5e')]['to']){_0x402297=_0x3ad4a5[_0xf18c('0x5e')]['to'][0x0];}return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x3ad4a5[_0xf18c('0x66')]['id']},'include':[{'model':db[_0xf18c('0xab')],'as':_0xf18c('0xac'),'include':[{'model':db['CmContact'],'as':_0xf18c('0xad'),'where':{'fax':_0x402297},'limit':0x1,'order':[[_0xf18c('0xa2'),_0xf18c('0xae')]]}]}]})[_0xf18c('0x3b')](handleEntityNotFound(_0x38f878,null))[_0xf18c('0x3b')](function(_0x594f50){_0x3f1cf5=_0x594f50;if(_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')]&&_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][_0xf18c('0x51')]){for(var _0x27d566=0x0;_0x27d566<_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')]['length'];_0x27d566+=0x1){_0x3ad4a5[_0xf18c('0x5e')]['attachments'][_0x27d566]={'filename':_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][_0x27d566][_0xf18c('0x40')],'id':_0x3ad4a5['body'][_0xf18c('0xaf')][_0x27d566]['id'],'path':path[_0xf18c('0xb0')](config[_0xf18c('0xb1')],_0xf18c('0xb2'),_0x3ad4a5['body'][_0xf18c('0xaf')][_0x27d566][_0xf18c('0xb3')])};}}return respondWithRpcPromise('CheckAfterSend',_0xf18c('0xb4'),{'FaxAccountId':_[_0xf18c('0xb5')](_0x3ad4a5[_0xf18c('0x66')]['id'])?undefined:_0x3ad4a5[_0xf18c('0x66')]['id'],'path':_[_0xf18c('0xb5')](_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0][_0xf18c('0x9')])?undefined:_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0][_0xf18c('0x9')],'fax':_[_0xf18c('0xb5')](_0x3ad4a5[_0xf18c('0x5e')]['to'][0x0])?undefined:_0x3ad4a5[_0xf18c('0x5e')]['to'][0x0]},client9002);})[_0xf18c('0x3b')](function(){if(_0x3f1cf5){if(_[_0xf18c('0xb5')](_0x3ad4a5[_0xf18c('0x5e')]['from'])){_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xb6')]=util[_0xf18c('0xa9')](_0xf18c('0xb7'),_0x3f1cf5[_0xf18c('0x40')],_0x3f1cf5[_0xf18c('0xb8')]);}if(_0x3f1cf5[_0xf18c('0xac')]){if(_0x3f1cf5[_0xf18c('0xac')][_0xf18c('0xad')][_0xf18c('0x51')]){return _0x3f1cf5['List']['Contacts'][0x0];}else{return db[_0xf18c('0x7b')][_0xf18c('0x5d')](_[_0xf18c('0xb9')](_0x3ad4a5[_0xf18c('0x5e')],{'firstName':_0x3ad4a5['body']['to'][0x0],'phone':_0x3ad4a5[_0xf18c('0x5e')]['to'][0x0],'fax':_0x3ad4a5['body']['to'][0x0],'ListId':_0x3f1cf5[_0xf18c('0xba')]}));}}else{throw new Error(_0xf18c('0xbb'));}}else{throw new Error(_0xf18c('0xbc'));}})[_0xf18c('0x3b')](function(_0x598e62){if(_0x598e62){return db[_0xf18c('0x77')]['find']({'where':{'ContactId':_0x598e62['id'],'closed':![],'FaxAccountId':_0x3f1cf5['id']}})[_0xf18c('0x3b')](function(_0xf766c9){if(_0xf766c9){return[_0xf766c9,![]];}return db[_0xf18c('0x77')][_0xf18c('0x5d')]({'UserId':_0x3ad4a5[_0xf18c('0x5f')]['id'],'ContactId':_0x598e62['id'],'FaxAccountId':_0x3f1cf5['id'],'fax':_0x3ad4a5[_0xf18c('0x5e')]['to'][0x0],'firstMsgDirection':_0xf18c('0xbd'),'Messages':[_[_0xf18c('0x58')](_0x3ad4a5[_0xf18c('0x5e')],{'read':![],'body':_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0][_0xf18c('0xbe')],'FaxAccountId':_0x3f1cf5['id'],'UserId':_0x3ad4a5[_0xf18c('0x5f')]['id'],'ContactId':_0x598e62['id'],'AttachmentId':_0x3ad4a5[_0xf18c('0x5e')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xf18c('0xa6')],'as':_0xf18c('0xbf')}]})[_0xf18c('0x3b')](function(_0x31595e){return[_0x31595e,!![]];});});}else{throw new Error(_0xf18c('0xc0'));}})['spread'](function(_0x20bb52,_0x36424a){if(_0x36424a){return _0x20bb52;}return db['FaxMessage'][_0xf18c('0x5d')]({'direction':_0xf18c('0xbd'),'read':![],'body':_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0]['filename'],'FaxAccountId':_0x3f1cf5['id'],'FaxInteractionId':_0x20bb52['id'],'UserId':_0x3ad4a5[_0xf18c('0x5f')]['id'],'ContactId':_0x20bb52[_0xf18c('0xc1')],'AttachmentId':_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0]['id']})[_0xf18c('0x3b')](function(_0x2ab654){_0x20bb52['dataValues']['Messages']=[];_0x20bb52['dataValues'][_0xf18c('0xbf')][_0xf18c('0x8f')](_0x2ab654[_0xf18c('0xc2')]);return _0x20bb52;});})['then'](function(_0x161222){respondWithRpcPromise(_0xf18c('0xc3'),'SendFax',{'FaxAccountId':_[_0xf18c('0xb5')](_0x3ad4a5['params']['id'])?undefined:_0x3ad4a5[_0xf18c('0x66')]['id'],'path':_['isNil'](_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0]['path'])?undefined:_0x3ad4a5[_0xf18c('0x5e')][_0xf18c('0xaf')][0x0][_0xf18c('0x9')],'fax':_['isNil'](_0x3ad4a5['body']['to'][0x0])?undefined:_0x3ad4a5['body']['to'][0x0],'AttachmentId':_0x3ad4a5[_0xf18c('0x5e')]['attachments'][0x0]['id']},client9002)['then'](function(_0x1ec385){logger[_0xf18c('0x2a')](_0xf18c('0xc4'),_0x1ec385);})[_0xf18c('0x2c')](function(_0x270a49){logger[_0xf18c('0x2a')](_0xf18c('0xc4'),_0x270a49);});return _0x161222;})['then'](respondWithResult(_0x38f878,null))[_0xf18c('0x2c')](handleError(_0x38f878,null));};exports['addAgents']=function(_0x4b5d36,_0x3a1087,_0x27b2ea){return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x4b5d36[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x3a1087,null))[_0xf18c('0x3b')](function(_0x1dca07){if(_0x1dca07){return _0x1dca07[_0xf18c('0xc5')](_0x4b5d36['body'][_0xf18c('0x70')],_[_0xf18c('0x79')](_0x4b5d36['body'],[_0xf18c('0x70'),'id'])||{})[_0xf18c('0xc6')](function(_0x310a67){for(var _0x394b47=0x0;_0x394b47<_0x4b5d36[_0xf18c('0x5e')][_0xf18c('0x70')][_0xf18c('0x51')];_0x394b47+=0x1){socket['emit'](_0xf18c('0xc7'),{'UserId':Number(_0x4b5d36['body']['ids'][_0x394b47]),'FaxAccountId':Number(_0x4b5d36[_0xf18c('0x66')]['id'])});}return _0x310a67;});}})[_0xf18c('0x3b')](respondWithResult(_0x3a1087,null))[_0xf18c('0x2c')](handleError(_0x3a1087,null));};exports[_0xf18c('0xc8')]=function(_0x517aea,_0x177358,_0x1bfa7b){return db[_0xf18c('0x46')][_0xf18c('0x5c')]({'where':{'id':_0x517aea[_0xf18c('0x66')]['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x177358,null))[_0xf18c('0x3b')](function(_0xcccf59){if(_0xcccf59){return _0xcccf59[_0xf18c('0xc8')](_0x517aea[_0xf18c('0x4b')][_0xf18c('0x70')])[_0xf18c('0x3b')](function(){if(_[_0xf18c('0xc9')](_0x517aea[_0xf18c('0x4b')][_0xf18c('0x70')])){for(var _0x370508=0x0;_0x370508<_0x517aea[_0xf18c('0x4b')][_0xf18c('0x70')][_0xf18c('0x51')];_0x370508+=0x1){socket[_0xf18c('0xca')](_0xf18c('0xcb'),{'UserId':Number(_0x517aea[_0xf18c('0x4b')][_0xf18c('0x70')][_0x370508]),'FaxAccountId':Number(_0x517aea[_0xf18c('0x66')]['id'])});}}else{socket[_0xf18c('0xca')](_0xf18c('0xcb'),{'UserId':Number(_0x517aea['query'][_0xf18c('0x70')]),'FaxAccountId':Number(_0x517aea[_0xf18c('0x66')]['id'])});}});}})[_0xf18c('0x3b')](respondWithStatusCode(_0x177358,null))[_0xf18c('0x2c')](handleError(_0x177358,null));};exports['getAgents']=function(_0x1ebe73,_0x129afd,_0x4d3689){var _0xd1bdae={};var _0x6c2e11={};var _0x4b7ca3;var _0x4d9894;return db[_0xf18c('0x46')][_0xf18c('0x74')]({'where':{'id':_0x1ebe73['params']['id']}})[_0xf18c('0x3b')](handleEntityNotFound(_0x129afd,null))[_0xf18c('0x3b')](function(_0x2a240d){if(_0x2a240d){_0x4b7ca3=_0x2a240d;_0x6c2e11[_0xf18c('0x4a')]=_[_0xf18c('0x4c')](db[_0xf18c('0xcc')][_0xf18c('0x47')]);_0x6c2e11[_0xf18c('0x4b')]=_[_0xf18c('0x4c')](_0x1ebe73[_0xf18c('0x4b')]);_0x6c2e11[_0xf18c('0x4d')]=_['intersection'](_0x6c2e11[_0xf18c('0x4a')],_0x6c2e11[_0xf18c('0x4b')]);_0xd1bdae[_0xf18c('0x4f')]=_['intersection'](_0x6c2e11[_0xf18c('0x4a')],qs['fields'](_0x1ebe73[_0xf18c('0x4b')][_0xf18c('0x50')]));_0xd1bdae[_0xf18c('0x4f')]=_0xd1bdae[_0xf18c('0x4f')][_0xf18c('0x51')]?_0xd1bdae['attributes']:_0x6c2e11[_0xf18c('0x4a')];_0xd1bdae[_0xf18c('0x53')]=qs[_0xf18c('0x54')](_0x1ebe73[_0xf18c('0x4b')][_0xf18c('0x54')]);_0xd1bdae[_0xf18c('0x55')]=qs[_0xf18c('0x4d')](_[_0xf18c('0x75')](_0x1ebe73[_0xf18c('0x4b')],_0x6c2e11[_0xf18c('0x4d')]));if(_0x1ebe73[_0xf18c('0x4b')][_0xf18c('0x56')]){_0xd1bdae[_0xf18c('0x55')]=_[_0xf18c('0x58')](_0xd1bdae[_0xf18c('0x55')],{'$or':_[_0xf18c('0x45')](_0xd1bdae[_0xf18c('0x4f')],function(_0x5d0fd7){var _0x1eb391={};_0x1eb391[_0x5d0fd7]={'$like':'%'+_0x1ebe73[_0xf18c('0x4b')]['filter']+'%'};return _0x1eb391;})});}_0xd1bdae=_['merge']({},_0xd1bdae,_0x1ebe73[_0xf18c('0x5b')]);return _0x4b7ca3[_0xf18c('0xcd')](_0xd1bdae);}})[_0xf18c('0x3b')](function(_0x10e048){if(_0x10e048){_0x4d9894=_0x10e048[_0xf18c('0x51')];if(!_0x1ebe73[_0xf18c('0x4b')][_0xf18c('0x52')](_0xf18c('0x6c'))){_0xd1bdae[_0xf18c('0x33')]=qs[_0xf18c('0x33')](_0x1ebe73[_0xf18c('0x4b')]['limit']);_0xd1bdae['offset']=qs['offset'](_0x1ebe73[_0xf18c('0x4b')][_0xf18c('0x31')]);}return _0x4b7ca3[_0xf18c('0xcd')](_0xd1bdae);}})[_0xf18c('0x3b')](function(_0x13c2ba){if(_0x13c2ba){return _0x13c2ba?{'count':_0x4d9894,'rows':_0x13c2ba}:null;}})['then'](respondWithResult(_0x129afd,null))[_0xf18c('0x2c')](handleError(_0x129afd,null));};
\ No newline at end of file
+var _0x0b0c=['sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','FaxAccounts','UserProfileResource','destroy','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','show','keys','find','create','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','getDispositions','Disposition','nolimit','FaxAccountId','options','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','rows','removeAnswers','FaxInteraction','addInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','Transaction','READ_COMMITTED','FaxApplication','findAndCountAll','priority','finally','getApplications','context','localstationid','app','description','Fax\x20Extension','appdata','Answer','push','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','minrate','modem','FAXOPT(','Wait','addAccountApplications','transaction','VoiceExtension','bulkCreate','updateAccountApplications','updatedAt','TrunkId','ListId','getMessages','FaxMessage','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','Contacts','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','redis','defaults','./faxAccount.socket','register','jayson/promise','client','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x48437d,_0x326d82){var _0x200808=function(_0x50d749){while(--_0x50d749){_0x48437d['push'](_0x48437d['shift']());}};_0x200808(++_0x326d82);}(_0x0b0c,0x9b));var _0xc0b0=function(_0x2d1da8,_0x5606b9){_0x2d1da8=_0x2d1da8-0x0;var _0x53ae73=_0x0b0c[_0x2d1da8];return _0x53ae73;};'use strict';var emlformat=require(_0xc0b0('0x0'));var rimraf=require(_0xc0b0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc0b0('0x2'));var rp=require(_0xc0b0('0x3'));var moment=require(_0xc0b0('0x4'));var BPromise=require(_0xc0b0('0x5'));var Mustache=require(_0xc0b0('0x6'));var util=require(_0xc0b0('0x7'));var path=require(_0xc0b0('0x8'));var sox=require('sox');var csv=require(_0xc0b0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc0b0('0xa'));var squel=require(_0xc0b0('0xb'));var crypto=require('crypto');var jsforce=require(_0xc0b0('0xc'));var deskjs=require(_0xc0b0('0xd'));var toCsv=require(_0xc0b0('0x9'));var querystring=require(_0xc0b0('0xe'));var Papa=require('papaparse');var Redis=require(_0xc0b0('0xf'));var authService=require(_0xc0b0('0x10'));var qs=require(_0xc0b0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc0b0('0x12'));var logger=require(_0xc0b0('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xc0b0('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xc0b0('0x15')]=_[_0xc0b0('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc0b0('0x15')]));require(_0xc0b0('0x17'))[_0xc0b0('0x18')](socket);var jayson=require(_0xc0b0('0x19'));var client=jayson[_0xc0b0('0x1a')]['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4cbf0b,_0x32fcc5,_0x121c10,_0x1e443d){return new BPromise(function(_0x5968ef,_0x3a67c0){var _0x55cd5a=_0x1e443d||client;return _0x55cd5a[_0xc0b0('0x1b')](_0x4cbf0b,_0x121c10)['then'](function(_0x106dd2){logger[_0xc0b0('0x1c')](_0xc0b0('0x1d'),_0x32fcc5,_0xc0b0('0x1e'));logger[_0xc0b0('0x1f')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x32fcc5,'request\x20sent',JSON[_0xc0b0('0x20')](_0x106dd2));if(_0x106dd2[_0xc0b0('0x21')]){if(_0x106dd2['error'][_0xc0b0('0x22')]===0x1f4){logger[_0xc0b0('0x21')](_0xc0b0('0x1d'),_0x32fcc5,_0x106dd2[_0xc0b0('0x21')][_0xc0b0('0x23')]);return _0x3a67c0(_0x106dd2['error'][_0xc0b0('0x23')]);}logger[_0xc0b0('0x21')](_0xc0b0('0x1d'),_0x32fcc5,_0x106dd2[_0xc0b0('0x21')]['message']);return _0x5968ef(_0x106dd2['error'][_0xc0b0('0x23')]);}else{logger[_0xc0b0('0x1c')](_0xc0b0('0x1d'),_0x32fcc5,'request\x20sent');_0x5968ef(_0x106dd2[_0xc0b0('0x24')]['message']);}})[_0xc0b0('0x25')](function(_0x2e23b2){logger['error'](_0xc0b0('0x1d'),_0x32fcc5,_0x2e23b2);_0x3a67c0(_0x2e23b2);});});}function respondWithStatusCode(_0x3a192f,_0x23a2b8){_0x23a2b8=_0x23a2b8||0xcc;return function(_0x4ce36d){if(_0x4ce36d){return _0x3a192f[_0xc0b0('0x26')](_0x23a2b8);}return _0x3a192f[_0xc0b0('0x27')](_0x23a2b8)[_0xc0b0('0x28')]();};}function respondWithResult(_0x115eff,_0x380a81){_0x380a81=_0x380a81||0xc8;return function(_0x5b5eda){if(_0x5b5eda){return _0x115eff[_0xc0b0('0x27')](_0x380a81)[_0xc0b0('0x29')](_0x5b5eda);}};}function respondWithFilteredResult(_0x1fcf16,_0x222c33){return function(_0x498945){if(_0x498945){var _0x3646f8=typeof _0x222c33[_0xc0b0('0x2a')]===_0xc0b0('0x2b')&&typeof _0x222c33[_0xc0b0('0x2c')]===_0xc0b0('0x2b');var _0x33b473=_0x498945[_0xc0b0('0x2d')];var _0x25e9c2=_0x3646f8?0x0:_0x222c33['offset'];var _0x901b2f=_0x3646f8?_0x498945[_0xc0b0('0x2d')]:_0x222c33['offset']+_0x222c33['limit'];var _0x242880;if(_0x901b2f>=_0x33b473){_0x901b2f=_0x33b473;_0x242880=0xc8;}else{_0x242880=0xce;}_0x1fcf16[_0xc0b0('0x27')](_0x242880);return _0x1fcf16['set'](_0xc0b0('0x2e'),_0x25e9c2+'-'+_0x901b2f+'/'+_0x33b473)[_0xc0b0('0x29')](_0x498945);}return null;};}function patchUpdates(_0x2ad3e9){return function(_0x3158d2){try{jsonpatch[_0xc0b0('0x2f')](_0x3158d2,_0x2ad3e9,!![]);}catch(_0x10c58a){return BPromise[_0xc0b0('0x30')](_0x10c58a);}return _0x3158d2[_0xc0b0('0x31')]();};}function saveUpdates(_0x5d87ed,_0x11b58f){return function(_0x93a1){if(_0x93a1){return _0x93a1[_0xc0b0('0x32')](_0x5d87ed)[_0xc0b0('0x33')](function(_0x1f01ff){return _0x1f01ff;});}return null;};}function removeEntity(_0x380201,_0x48ec4c){return function(_0x9a8621){if(_0x9a8621){return _0x9a8621['destroy']()['then'](function(){var _0x48f666=_0x9a8621[_0xc0b0('0x34')]({'plain':!![]});var _0x5e3cf7=_0xc0b0('0x35');return db[_0xc0b0('0x36')][_0xc0b0('0x37')]({'where':{'type':_0x5e3cf7,'resourceId':_0x48f666['id']}})[_0xc0b0('0x33')](function(){return _0x9a8621;});})['then'](function(){_0x380201[_0xc0b0('0x27')](0xcc)[_0xc0b0('0x28')]();});}};}function handleEntityNotFound(_0x131301,_0x386c4b){return function(_0x1a48ec){if(!_0x1a48ec){_0x131301[_0xc0b0('0x26')](0x194);}return _0x1a48ec;};}function handleError(_0x20e89e,_0x9bf4a6){_0x9bf4a6=_0x9bf4a6||0x1f4;return function(_0x5c70e9){logger['error'](_0x5c70e9['stack']);if(_0x5c70e9[_0xc0b0('0x38')]){delete _0x5c70e9[_0xc0b0('0x38')];}_0x20e89e['status'](_0x9bf4a6)[_0xc0b0('0x39')](_0x5c70e9);};}exports[_0xc0b0('0x3a')]=function(_0x539515,_0x285824){var _0x62cb3e={'include':[{'model':db[_0xc0b0('0x3b')],'as':_0xc0b0('0x3c')}]},_0x461f6c={},_0x402c90={'count':0x0,'rows':[]};var _0x218dc7=_[_0xc0b0('0x3d')](db[_0xc0b0('0x3e')][_0xc0b0('0x3f')],function(_0x2d5a9b){return{'name':_0x2d5a9b['fieldName'],'type':_0x2d5a9b[_0xc0b0('0x40')][_0xc0b0('0x41')]};});_0x461f6c[_0xc0b0('0x42')]=_['map'](_0x218dc7,_0xc0b0('0x38'));_0x461f6c[_0xc0b0('0x43')]=_['keys'](_0x539515['query']);_0x461f6c[_0xc0b0('0x44')]=_['intersection'](_0x461f6c[_0xc0b0('0x42')],_0x461f6c[_0xc0b0('0x43')]);_0x62cb3e[_0xc0b0('0x45')]=_[_0xc0b0('0x46')](_0x461f6c[_0xc0b0('0x42')],qs[_0xc0b0('0x47')](_0x539515[_0xc0b0('0x43')][_0xc0b0('0x47')]));_0x62cb3e[_0xc0b0('0x45')]=_0x62cb3e[_0xc0b0('0x45')][_0xc0b0('0x48')]?_0x62cb3e[_0xc0b0('0x45')]:_0x461f6c[_0xc0b0('0x42')];if(!_0x539515['query'][_0xc0b0('0x49')]('nolimit')){_0x62cb3e[_0xc0b0('0x2c')]=qs['limit'](_0x539515['query'][_0xc0b0('0x2c')]);_0x62cb3e[_0xc0b0('0x2a')]=qs['offset'](_0x539515[_0xc0b0('0x43')][_0xc0b0('0x2a')]);}_0x62cb3e[_0xc0b0('0x4a')]=qs[_0xc0b0('0x4b')](_0x539515['query']['sort']);_0x62cb3e[_0xc0b0('0x4c')]=qs[_0xc0b0('0x44')](_[_0xc0b0('0x4d')](_0x539515['query'],_0x461f6c[_0xc0b0('0x44')]),_0x218dc7);if(_0x539515[_0xc0b0('0x43')]['filter']){_0x62cb3e[_0xc0b0('0x4c')]=_[_0xc0b0('0x4e')](_0x62cb3e[_0xc0b0('0x4c')],{'$or':_[_0xc0b0('0x3d')](_0x218dc7,function(_0x333503){if(_0x333503['type']!==_0xc0b0('0x4f')){var _0x1f8b20={};_0x1f8b20[_0x333503[_0xc0b0('0x38')]]={'$like':'%'+_0x539515[_0xc0b0('0x43')][_0xc0b0('0x50')]+'%'};return _0x1f8b20;}})});}_0x62cb3e=_['merge']({},_0x62cb3e,_0x539515['options']);var _0x4d95c3={'where':_0x62cb3e[_0xc0b0('0x4c')]};return db['FaxAccount'][_0xc0b0('0x2d')](_0x4d95c3)[_0xc0b0('0x33')](function(_0x147129){_0x402c90[_0xc0b0('0x2d')]=_0x147129;if(_0x539515[_0xc0b0('0x43')][_0xc0b0('0x51')]){_0x62cb3e[_0xc0b0('0x52')]=[{'all':!![]}];}return db[_0xc0b0('0x3e')]['findAll'](_0x62cb3e);})['then'](function(_0x48307){_0x402c90['rows']=_0x48307;return _0x402c90;})[_0xc0b0('0x33')](respondWithFilteredResult(_0x285824,_0x62cb3e))[_0xc0b0('0x25')](handleError(_0x285824,null));};exports[_0xc0b0('0x53')]=function(_0x246f2f,_0x1710bb){var _0x12dc2e={'raw':![],'where':{'id':_0x246f2f['params']['id']},'include':[{'model':db[_0xc0b0('0x3b')],'as':_0xc0b0('0x3c')}]},_0x3e70ea={};_0x3e70ea[_0xc0b0('0x42')]=_['keys'](db[_0xc0b0('0x3e')][_0xc0b0('0x3f')]);_0x3e70ea[_0xc0b0('0x43')]=_[_0xc0b0('0x54')](_0x246f2f[_0xc0b0('0x43')]);_0x3e70ea['filters']=_[_0xc0b0('0x46')](_0x3e70ea[_0xc0b0('0x42')],_0x3e70ea[_0xc0b0('0x43')]);_0x12dc2e[_0xc0b0('0x45')]=_[_0xc0b0('0x46')](_0x3e70ea['model'],qs['fields'](_0x246f2f[_0xc0b0('0x43')][_0xc0b0('0x47')]));_0x12dc2e[_0xc0b0('0x45')]=_0x12dc2e[_0xc0b0('0x45')][_0xc0b0('0x48')]?_0x12dc2e[_0xc0b0('0x45')]:_0x3e70ea[_0xc0b0('0x42')];if(_0x246f2f[_0xc0b0('0x43')][_0xc0b0('0x51')]){_0x12dc2e[_0xc0b0('0x52')]=[{'all':!![]}];}_0x12dc2e=_[_0xc0b0('0x4e')]({},_0x12dc2e,_0x246f2f['options']);return db[_0xc0b0('0x3e')][_0xc0b0('0x55')](_0x12dc2e)[_0xc0b0('0x33')](handleEntityNotFound(_0x1710bb,null))[_0xc0b0('0x33')](respondWithResult(_0x1710bb,null))[_0xc0b0('0x25')](handleError(_0x1710bb,null));};exports[_0xc0b0('0x56')]=function(_0x1b4e97,_0x433a3f){return db[_0xc0b0('0x3e')][_0xc0b0('0x56')](_0x1b4e97['body'],{})[_0xc0b0('0x33')](function(_0x6fb822){var _0x44bcb4=_0x1b4e97[_0xc0b0('0x57')]['get']({'plain':!![]});if(!_0x44bcb4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x44bcb4[_0xc0b0('0x58')]===_0xc0b0('0x57')){var _0x49a588=_0x6fb822['get']({'plain':!![]});var _0x51ab4f=_0xc0b0('0x35');return db['UserProfileSection'][_0xc0b0('0x55')]({'where':{'name':_0x51ab4f,'userProfileId':_0x44bcb4[_0xc0b0('0x59')]},'raw':!![]})[_0xc0b0('0x33')](function(_0x4df942){if(_0x4df942&&_0x4df942[_0xc0b0('0x5a')]===0x0){return db[_0xc0b0('0x36')][_0xc0b0('0x56')]({'name':_0x49a588[_0xc0b0('0x38')],'resourceId':_0x49a588['id'],'type':_0x4df942[_0xc0b0('0x38')],'sectionId':_0x4df942['id']},{})[_0xc0b0('0x33')](function(){return _0x6fb822;});}else{return _0x6fb822;}})[_0xc0b0('0x25')](function(_0x40aa29){logger[_0xc0b0('0x21')](_0xc0b0('0x5b'),_0x40aa29);throw _0x40aa29;});}return _0x6fb822;})[_0xc0b0('0x33')](respondWithResult(_0x433a3f,0xc9))['catch'](handleError(_0x433a3f,null));};exports[_0xc0b0('0x32')]=function(_0x473282,_0x42dbdc){if(_0x473282[_0xc0b0('0x5c')]['id']){delete _0x473282[_0xc0b0('0x5c')]['id'];}return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x473282[_0xc0b0('0x5d')]['id']},'include':[{'model':db[_0xc0b0('0x3b')],'as':_0xc0b0('0x3c')}]})[_0xc0b0('0x33')](handleEntityNotFound(_0x42dbdc,null))[_0xc0b0('0x33')](saveUpdates(_0x473282[_0xc0b0('0x5c')],null))['then'](respondWithResult(_0x42dbdc,null))[_0xc0b0('0x25')](handleError(_0x42dbdc,null));};exports[_0xc0b0('0x37')]=function(_0x1d50c5,_0x5b64ce){return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x1d50c5[_0xc0b0('0x5d')]['id']}})['then'](handleEntityNotFound(_0x5b64ce,null))[_0xc0b0('0x33')](removeEntity(_0x5b64ce,null))[_0xc0b0('0x25')](handleError(_0x5b64ce,null));};exports[_0xc0b0('0x5e')]=function(_0x5c1901,_0x3f2af3){return db[_0xc0b0('0x3e')][_0xc0b0('0x5e')]()[_0xc0b0('0x33')](respondWithResult(_0x3f2af3,null))['catch'](handleError(_0x3f2af3,null));};exports[_0xc0b0('0x5f')]=function(_0x27d9a2,_0x393ed3,_0x2aa2b7){if(_0x27d9a2[_0xc0b0('0x5c')]['id']){delete _0x27d9a2['body']['id'];}return db[_0xc0b0('0x3e')]['find']({'where':{'id':_0x27d9a2[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x393ed3,null))['then'](function(_0x136a7b){if(_0x136a7b){_0x27d9a2[_0xc0b0('0x5c')]['FaxAccountId']=_0x136a7b['id'];return db['Disposition'][_0xc0b0('0x56')](_0x27d9a2[_0xc0b0('0x5c')]);}})['then'](respondWithResult(_0x393ed3,null))[_0xc0b0('0x25')](handleError(_0x393ed3,null));};exports[_0xc0b0('0x60')]=function(_0x50161c,_0x31b088,_0x406c46){var _0x545d17={'raw':![],'where':{}};var _0x553232={};var _0x52f07b={'count':0x0,'rows':[]};return db[_0xc0b0('0x3e')]['findOne']({'where':{'id':_0x50161c[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x31b088,null))[_0xc0b0('0x33')](function(_0xe5f1c){if(_0xe5f1c){_0x553232['model']=_[_0xc0b0('0x54')](db[_0xc0b0('0x61')][_0xc0b0('0x3f')]);_0x553232[_0xc0b0('0x43')]=_[_0xc0b0('0x54')](_0x50161c[_0xc0b0('0x43')]);_0x553232[_0xc0b0('0x44')]=_[_0xc0b0('0x46')](_0x553232[_0xc0b0('0x42')],_0x553232[_0xc0b0('0x43')]);_0x545d17[_0xc0b0('0x45')]=_[_0xc0b0('0x46')](_0x553232['model'],qs['fields'](_0x50161c[_0xc0b0('0x43')][_0xc0b0('0x47')]));_0x545d17[_0xc0b0('0x45')]=_0x545d17[_0xc0b0('0x45')]['length']?_0x545d17[_0xc0b0('0x45')]:_0x553232[_0xc0b0('0x42')];if(!_0x50161c[_0xc0b0('0x43')][_0xc0b0('0x49')](_0xc0b0('0x62'))){_0x545d17[_0xc0b0('0x2c')]=qs[_0xc0b0('0x2c')](_0x50161c[_0xc0b0('0x43')][_0xc0b0('0x2c')]);_0x545d17[_0xc0b0('0x2a')]=qs[_0xc0b0('0x2a')](_0x50161c['query'][_0xc0b0('0x2a')]);}_0x545d17[_0xc0b0('0x4a')]=qs[_0xc0b0('0x4b')](_0x50161c['query'][_0xc0b0('0x4b')]);_0x545d17[_0xc0b0('0x4c')]=qs[_0xc0b0('0x44')](_[_0xc0b0('0x4d')](_0x50161c[_0xc0b0('0x43')],_0x553232[_0xc0b0('0x44')]));_0x545d17['where'][_0xc0b0('0x63')]=_0xe5f1c['id'];if(_0x50161c[_0xc0b0('0x43')][_0xc0b0('0x50')]){_0x545d17[_0xc0b0('0x4c')]=_[_0xc0b0('0x4e')](_0x545d17[_0xc0b0('0x4c')],{'$or':_[_0xc0b0('0x3d')](_0x545d17[_0xc0b0('0x45')],function(_0x4f0d5b){var _0x2a73d1={};_0x2a73d1[_0x4f0d5b]={'$like':'%'+_0x50161c[_0xc0b0('0x43')][_0xc0b0('0x50')]+'%'};return _0x2a73d1;})});}_0x545d17=_['merge']({},_0x545d17,_0x50161c[_0xc0b0('0x64')]);return db['Disposition'][_0xc0b0('0x2d')]({'where':_0x545d17[_0xc0b0('0x4c')]})['then'](function(_0xf39e5){_0x52f07b['count']=_0xf39e5;if(_0x50161c['query']['includeAll']){_0x545d17[_0xc0b0('0x52')]=[{'all':!![]}];}return db[_0xc0b0('0x61')][_0xc0b0('0x65')](_0x545d17);})[_0xc0b0('0x33')](function(_0x5bca20){_0x52f07b['rows']=_0x5bca20;return _0x52f07b;});}})['then'](respondWithFilteredResult(_0x31b088,_0x545d17))[_0xc0b0('0x25')](handleError(_0x31b088,null));};exports[_0xc0b0('0x66')]=function(_0x93d366,_0x2de352,_0x312c60){return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x93d366[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x2de352,null))['then'](function(_0x30ab64){if(_0x30ab64){return _0x30ab64[_0xc0b0('0x66')](_0x93d366['query'][_0xc0b0('0x67')]);}})[_0xc0b0('0x33')](respondWithStatusCode(_0x2de352,null))[_0xc0b0('0x25')](handleError(_0x2de352,null));};exports[_0xc0b0('0x68')]=function(_0xacd7bd,_0x1f74f4,_0x46cf65){if(_0xacd7bd[_0xc0b0('0x5c')]['id']){delete _0xacd7bd[_0xc0b0('0x5c')]['id'];}return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0xacd7bd[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x1f74f4,null))['then'](function(_0x20a57f){if(_0x20a57f){_0xacd7bd[_0xc0b0('0x5c')]['FaxAccountId']=_0x20a57f['id'];return db[_0xc0b0('0x69')][_0xc0b0('0x56')](_0xacd7bd[_0xc0b0('0x5c')]);}})['then'](respondWithResult(_0x1f74f4,null))['catch'](handleError(_0x1f74f4,null));};exports[_0xc0b0('0x6a')]=function(_0x2e416c,_0x23ccb8,_0x25ffb2){var _0x1e204e={'raw':![],'where':{}};var _0xb096f7={};var _0x4e294d={'count':0x0,'rows':[]};return db[_0xc0b0('0x3e')][_0xc0b0('0x6b')]({'where':{'id':_0x2e416c[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x23ccb8,null))[_0xc0b0('0x33')](function(_0x21f7b9){if(_0x21f7b9){_0xb096f7[_0xc0b0('0x42')]=_['keys'](db['CannedAnswer'][_0xc0b0('0x3f')]);_0xb096f7[_0xc0b0('0x43')]=_['keys'](_0x2e416c['query']);_0xb096f7[_0xc0b0('0x44')]=_[_0xc0b0('0x46')](_0xb096f7['model'],_0xb096f7[_0xc0b0('0x43')]);_0x1e204e[_0xc0b0('0x45')]=_[_0xc0b0('0x46')](_0xb096f7[_0xc0b0('0x42')],qs['fields'](_0x2e416c[_0xc0b0('0x43')][_0xc0b0('0x47')]));_0x1e204e[_0xc0b0('0x45')]=_0x1e204e['attributes'][_0xc0b0('0x48')]?_0x1e204e[_0xc0b0('0x45')]:_0xb096f7[_0xc0b0('0x42')];if(!_0x2e416c['query']['hasOwnProperty'](_0xc0b0('0x62'))){_0x1e204e['limit']=qs['limit'](_0x2e416c[_0xc0b0('0x43')][_0xc0b0('0x2c')]);_0x1e204e[_0xc0b0('0x2a')]=qs[_0xc0b0('0x2a')](_0x2e416c[_0xc0b0('0x43')]['offset']);}_0x1e204e[_0xc0b0('0x4a')]=qs['sort'](_0x2e416c[_0xc0b0('0x43')][_0xc0b0('0x4b')]);_0x1e204e[_0xc0b0('0x4c')]=qs[_0xc0b0('0x44')](_[_0xc0b0('0x4d')](_0x2e416c[_0xc0b0('0x43')],_0xb096f7[_0xc0b0('0x44')]));_0x1e204e['where']['FaxAccountId']=_0x21f7b9['id'];if(_0x2e416c[_0xc0b0('0x43')][_0xc0b0('0x50')]){_0x1e204e[_0xc0b0('0x4c')]=_[_0xc0b0('0x4e')](_0x1e204e['where'],{'$or':_[_0xc0b0('0x3d')](_0x1e204e[_0xc0b0('0x45')],function(_0x977908){var _0x4a5de3={};_0x4a5de3[_0x977908]={'$like':'%'+_0x2e416c[_0xc0b0('0x43')][_0xc0b0('0x50')]+'%'};return _0x4a5de3;})});}_0x1e204e=_[_0xc0b0('0x4e')]({},_0x1e204e,_0x2e416c[_0xc0b0('0x64')]);return db[_0xc0b0('0x69')][_0xc0b0('0x2d')]({'where':_0x1e204e[_0xc0b0('0x4c')]})[_0xc0b0('0x33')](function(_0x2f2dc0){_0x4e294d['count']=_0x2f2dc0;if(_0x2e416c[_0xc0b0('0x43')][_0xc0b0('0x51')]){_0x1e204e[_0xc0b0('0x52')]=[{'all':!![]}];}return db[_0xc0b0('0x69')][_0xc0b0('0x65')](_0x1e204e);})[_0xc0b0('0x33')](function(_0x1e3cdb){_0x4e294d[_0xc0b0('0x6c')]=_0x1e3cdb;return _0x4e294d;});}})[_0xc0b0('0x33')](respondWithFilteredResult(_0x23ccb8,_0x1e204e))[_0xc0b0('0x25')](handleError(_0x23ccb8,null));};exports[_0xc0b0('0x6d')]=function(_0x157a17,_0x53d070,_0x3b36e0){return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x157a17[_0xc0b0('0x5d')]['id']}})['then'](handleEntityNotFound(_0x53d070,null))[_0xc0b0('0x33')](function(_0x366a4f){if(_0x366a4f){return _0x366a4f[_0xc0b0('0x6d')](_0x157a17[_0xc0b0('0x43')][_0xc0b0('0x67')]);}})[_0xc0b0('0x33')](respondWithStatusCode(_0x53d070,null))[_0xc0b0('0x25')](handleError(_0x53d070,null));};exports['addInteraction']=function(_0x3f0052,_0x284435,_0x37a499){return db[_0xc0b0('0x6e')][_0xc0b0('0x55')]({'where':{'id':_0x3f0052[_0xc0b0('0x5d')]['id']}})['then'](handleEntityNotFound(_0x284435,null))[_0xc0b0('0x33')](function(_0x5460cf){if(_0x5460cf){return _0x5460cf[_0xc0b0('0x6f')](_0x3f0052['body'][_0xc0b0('0x67')],_[_0xc0b0('0x70')](_0x3f0052[_0xc0b0('0x5c')],[_0xc0b0('0x67'),'id'])||{});}})[_0xc0b0('0x33')](respondWithResult(_0x284435,null))[_0xc0b0('0x25')](handleError(_0x284435,null));};exports[_0xc0b0('0x71')]=function(_0x2cb958,_0x2dfb87,_0x86714b){var _0x231d38={'raw':![],'where':{}};var _0x4530d2={};var _0x46db1e={'count':0x0,'rows':[]};return db[_0xc0b0('0x3e')][_0xc0b0('0x6b')]({'where':{'id':_0x2cb958[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x2dfb87,null))[_0xc0b0('0x33')](function(_0x3cb05b){if(_0x3cb05b){_0x4530d2[_0xc0b0('0x42')]=_[_0xc0b0('0x54')](db[_0xc0b0('0x6e')][_0xc0b0('0x3f')]);_0x4530d2[_0xc0b0('0x43')]=_['keys'](_0x2cb958['query']);_0x4530d2['filters']=_[_0xc0b0('0x46')](_0x4530d2[_0xc0b0('0x42')],_0x4530d2[_0xc0b0('0x43')]);_0x231d38[_0xc0b0('0x45')]=_[_0xc0b0('0x46')](_0x4530d2[_0xc0b0('0x42')],qs[_0xc0b0('0x47')](_0x2cb958['query'][_0xc0b0('0x47')]));_0x231d38[_0xc0b0('0x45')]=_0x231d38[_0xc0b0('0x45')][_0xc0b0('0x48')]?_0x231d38['attributes']:_0x4530d2[_0xc0b0('0x42')];if(!_0x2cb958['query'][_0xc0b0('0x49')]('nolimit')){_0x231d38[_0xc0b0('0x2c')]=qs['limit'](_0x2cb958[_0xc0b0('0x43')][_0xc0b0('0x2c')]);_0x231d38[_0xc0b0('0x2a')]=qs[_0xc0b0('0x2a')](_0x2cb958[_0xc0b0('0x43')][_0xc0b0('0x2a')]);}_0x231d38[_0xc0b0('0x4a')]=qs['sort'](_0x2cb958[_0xc0b0('0x43')][_0xc0b0('0x4b')]);_0x231d38[_0xc0b0('0x4c')]=qs[_0xc0b0('0x44')](_['pick'](_0x2cb958['query'],_0x4530d2[_0xc0b0('0x44')]));_0x231d38[_0xc0b0('0x4c')]['FaxAccountId']=_0x3cb05b['id'];if(_0x2cb958[_0xc0b0('0x43')]['filter']){_0x231d38[_0xc0b0('0x4c')]=_['merge'](_0x231d38[_0xc0b0('0x4c')],{'$or':_[_0xc0b0('0x3d')](_0x231d38[_0xc0b0('0x45')],function(_0x2685af){var _0x2484fa={};_0x2484fa[_0x2685af]={'$like':'%'+_0x2cb958[_0xc0b0('0x43')]['filter']+'%'};return _0x2484fa;})});}_0x231d38=_['merge']({},_0x231d38,_0x2cb958[_0xc0b0('0x64')]);return db['FaxInteraction']['count']({'where':_0x231d38[_0xc0b0('0x4c')]})[_0xc0b0('0x33')](function(_0x404073){_0x46db1e[_0xc0b0('0x2d')]=_0x404073;if(_0x2cb958[_0xc0b0('0x43')][_0xc0b0('0x51')]){_0x231d38[_0xc0b0('0x52')]=[{'model':db[_0xc0b0('0x72')],'as':_0xc0b0('0x73'),'required':![]},{'model':db[_0xc0b0('0x74')],'as':_0xc0b0('0x75'),'attributes':['name',_0xc0b0('0x76'),_0xc0b0('0x77')],'required':![]},{'model':db['Tag'],'as':_0xc0b0('0x78'),'attributes':['id',_0xc0b0('0x38'),_0xc0b0('0x79')],'where':_0x2cb958['query'][_0xc0b0('0x7a')]?{'id':_0x2cb958[_0xc0b0('0x43')]['tag']}:undefined,'required':_0x2cb958[_0xc0b0('0x43')]['tag']?!![]:![]}];}return db['FaxInteraction'][_0xc0b0('0x65')](_0x231d38);})['then'](function(_0x359c56){_0x46db1e[_0xc0b0('0x6c')]=_0x359c56;return _0x46db1e;});}})[_0xc0b0('0x33')](respondWithFilteredResult(_0x2dfb87,_0x231d38))[_0xc0b0('0x25')](handleError(_0x2dfb87,null));};exports[_0xc0b0('0x7b')]=function(_0x5ddb13,_0x451f7c){var _0x26f245=_0x5ddb13['params']['id'];var _0x32274a=_0x5ddb13[_0xc0b0('0x5c')];var _0x1d553b=0xc8;var _0xa100c0=null;return db[_0xc0b0('0x7c')]['transaction']({'isolationLevel':db[_0xc0b0('0x7c')][_0xc0b0('0x7d')]['ISOLATION_LEVELS'][_0xc0b0('0x7e')]},function(_0x5a6064){return db[_0xc0b0('0x3e')][_0xc0b0('0x6b')]({'where':{'id':_0x26f245},'transaction':_0x5a6064})[_0xc0b0('0x33')](function(_0x4ff766){if(_0x4ff766){return db[_0xc0b0('0x7f')][_0xc0b0('0x37')]({'where':{'FaxAccountId':_0x26f245},'transaction':_0x5a6064})[_0xc0b0('0x33')](function(){var _0x5a8f70=_[_0xc0b0('0x3d')](_0x32274a,function(_0x32603b){_0x32603b['FaxAccountId']=_0x26f245;return _0x32603b;});return db['FaxApplication']['bulkCreate'](_0x5a8f70,{'transaction':_0x5a6064});});}else{_0x1d553b=0x194;_0xa100c0=[];}});})[_0xc0b0('0x33')](function(){if(_0x1d553b!==0x194){return db['FaxApplication'][_0xc0b0('0x80')]({'where':{'FaxAccountId':_0x26f245},'order':_0xc0b0('0x81')})[_0xc0b0('0x33')](function(_0x506eaa){_0xa100c0=_0x506eaa;});}})[_0xc0b0('0x25')](function(_0x4f16d2){_0x1d553b=0x1f4;logger[_0xc0b0('0x21')](_0x4f16d2['stack']);if(_0x4f16d2[_0xc0b0('0x38')]){delete _0x4f16d2[_0xc0b0('0x38')];}_0xa100c0=_0x4f16d2;})[_0xc0b0('0x82')](function(){if(_0xa100c0===null){_0x451f7c['sendStatus'](_0x1d553b);}else{if(_0x1d553b===0x1f4){_0x451f7c['status'](_0x1d553b)['send'](_0xa100c0);}else{_0x451f7c[_0xc0b0('0x27')](_0x1d553b)[_0xc0b0('0x29')](_0xa100c0);}}});};exports[_0xc0b0('0x83')]=function(_0x12e6ce,_0x217859,_0x598d3a){var _0xcc3e7e={};var _0x498987={};var _0x4a7f2d;var _0x175d85;return db['FaxAccount'][_0xc0b0('0x6b')]({'where':{'id':_0x12e6ce[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x217859,null))[_0xc0b0('0x33')](function(_0x16bc7c){if(_0x16bc7c){_0x4a7f2d=_0x16bc7c;_0x498987[_0xc0b0('0x42')]=_[_0xc0b0('0x54')](db[_0xc0b0('0x7f')][_0xc0b0('0x3f')]);_0x498987['query']=_[_0xc0b0('0x54')](_0x12e6ce[_0xc0b0('0x43')]);_0x498987[_0xc0b0('0x44')]=_['intersection'](_0x498987[_0xc0b0('0x42')],_0x498987['query']);_0xcc3e7e[_0xc0b0('0x45')]=_[_0xc0b0('0x46')](_0x498987[_0xc0b0('0x42')],qs[_0xc0b0('0x47')](_0x12e6ce[_0xc0b0('0x43')]['fields']));_0xcc3e7e[_0xc0b0('0x45')]=_0xcc3e7e['attributes'][_0xc0b0('0x48')]?_0xcc3e7e['attributes']:_0x498987[_0xc0b0('0x42')];_0xcc3e7e[_0xc0b0('0x4a')]=qs[_0xc0b0('0x4b')](_0x12e6ce[_0xc0b0('0x43')][_0xc0b0('0x4b')]);_0xcc3e7e[_0xc0b0('0x4c')]=qs[_0xc0b0('0x44')](_[_0xc0b0('0x4d')](_0x12e6ce[_0xc0b0('0x43')],_0x498987[_0xc0b0('0x44')]));if(_0x12e6ce[_0xc0b0('0x43')][_0xc0b0('0x50')]){_0xcc3e7e['where']=_[_0xc0b0('0x4e')](_0xcc3e7e[_0xc0b0('0x4c')],{'$or':_[_0xc0b0('0x3d')](_0xcc3e7e['attributes'],function(_0x915cd5){var _0x24b5a9={};_0x24b5a9[_0x915cd5]={'$like':'%'+_0x12e6ce['query'][_0xc0b0('0x50')]+'%'};return _0x24b5a9;})});}_0xcc3e7e=_['merge']({},_0xcc3e7e,_0x12e6ce['options']);return _0x4a7f2d[_0xc0b0('0x83')](_0xcc3e7e);}})['then'](function(_0x3fa3c7){if(_0x3fa3c7){_0x175d85=_0x3fa3c7[_0xc0b0('0x48')];if(!_0x12e6ce[_0xc0b0('0x43')][_0xc0b0('0x49')](_0xc0b0('0x62'))){_0xcc3e7e[_0xc0b0('0x2c')]=qs[_0xc0b0('0x2c')](_0x12e6ce[_0xc0b0('0x43')][_0xc0b0('0x2c')]);_0xcc3e7e[_0xc0b0('0x2a')]=qs[_0xc0b0('0x2a')](_0x12e6ce[_0xc0b0('0x43')][_0xc0b0('0x2a')]);}return _0x4a7f2d[_0xc0b0('0x83')](_0xcc3e7e);}})[_0xc0b0('0x33')](function(_0x4d0f68){if(_0x4d0f68){return _0x4d0f68?{'count':_0x175d85,'rows':_0x4d0f68}:null;}})['then'](respondWithResult(_0x217859,null))['catch'](handleError(_0x217859,null));};function Extension(_0x4e1af2,_0x201249,_0x2e26f8,_0x8709c){this[_0xc0b0('0x84')]='from-voip-provider';this['exten']=_0x4e1af2[_0xc0b0('0x85')];this[_0xc0b0('0x86')]=_0x8709c;this['type']='system';this[_0xc0b0('0x87')]=_0xc0b0('0x88');this[_0xc0b0('0x63')]=_0x4e1af2['id'];this[_0xc0b0('0x81')]=_0x201249;this[_0xc0b0('0x89')]=_0x2e26f8;}function createExtensionsReciveFax(_0x3b78d3){var _0x2466c2=0x1;var _0x423fbc=[];_0x423fbc['push'](new Extension(_0x3b78d3,_0x2466c2,'',_0xc0b0('0x8a')));_0x2466c2+=0x1;_0x423fbc[_0xc0b0('0x8b')](new Extension(_0x3b78d3,_0x2466c2,_0xc0b0('0x8c'),_0xc0b0('0x8d')));_0x2466c2+=0x1;for(var _0x160a1f in _0x3b78d3){if(_0x3b78d3[_0xc0b0('0x49')](_0x160a1f)&&(_0x160a1f===_0xc0b0('0x8e')||_0x160a1f===_0xc0b0('0x85')||_0x160a1f===_0xc0b0('0x8f')||_0x160a1f===_0xc0b0('0x90')||_0x160a1f===_0xc0b0('0x91')||_0x160a1f==='maxrate'||_0x160a1f===_0xc0b0('0x92')||_0x160a1f===_0xc0b0('0x93')||_0x160a1f==='t38timeout')){_0x423fbc[_0xc0b0('0x8b')](new Extension(_0x3b78d3,_0x2466c2,_0xc0b0('0x94')+_0x160a1f+')='+_0x3b78d3[_0x160a1f],_0xc0b0('0x8d')));_0x2466c2+=0x1;}}_0x423fbc[_0xc0b0('0x8b')](new Extension(_0x3b78d3,_0x2466c2,'6',_0xc0b0('0x95')));_0x2466c2+=0x1;_0x423fbc[_0xc0b0('0x8b')](new Extension(_0x3b78d3,_0x2466c2,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax'));_0x2466c2=0x0;return _0x423fbc;}exports[_0xc0b0('0x96')]=function(_0x512602,_0x2b3e81,_0x28beae){var _0x3645e5;return db['sequelize'][_0xc0b0('0x97')](function(_0x1cd78d){return db['FaxAccount'][_0xc0b0('0x56')](_0x512602[_0xc0b0('0x5c')],{'transaction':_0x1cd78d})['then'](function(_0x59f8f5){_0x3645e5=_0x59f8f5[_0xc0b0('0x34')]({'plain':!![]});return db[_0xc0b0('0x98')][_0xc0b0('0x99')](createExtensionsReciveFax(_0x3645e5),{'transaction':_0x1cd78d});});})[_0xc0b0('0x33')](function(){return _0x3645e5;})[_0xc0b0('0x33')](respondWithResult(_0x2b3e81,null))['catch'](handleError(_0x2b3e81,null));};exports[_0xc0b0('0x9a')]=function(_0x38cc93,_0x39153f,_0x2ada7c){var _0x48dc18;return db[_0xc0b0('0x7c')]['transaction'](function(_0x5bbc43){return db[_0xc0b0('0x3e')][_0xc0b0('0x32')](_0x38cc93['body'],{'where':{'id':_0x38cc93['body']['id']},'transaction':_0x5bbc43})[_0xc0b0('0x33')](function(_0x2d825d){return db[_0xc0b0('0x98')][_0xc0b0('0x37')]({'where':{'FaxAccountId':_0x38cc93[_0xc0b0('0x5c')]['id']},'transaction':_0x5bbc43})[_0xc0b0('0x33')](function(_0x3c57df){return db[_0xc0b0('0x98')]['bulkCreate'](createExtensionsReciveFax(_[_0xc0b0('0x70')](_0x38cc93[_0xc0b0('0x5c')],['tech',_0xc0b0('0x41'),'createdAt',_0xc0b0('0x9b'),_0xc0b0('0x9c'),_0xc0b0('0x9d')])),{'transaction':_0x5bbc43});});});})[_0xc0b0('0x33')](function(){return db[_0xc0b0('0x3e')]['findById'](_0x38cc93['body']['id']);})[_0xc0b0('0x33')](respondWithResult(_0x39153f,null))[_0xc0b0('0x25')](handleError(_0x39153f,null));};exports[_0xc0b0('0x9e')]=function(_0x2f7662,_0x3d39eb,_0x38fa84){var _0x25572e={'raw':!![],'where':{}};var _0x2f6511={};var _0x19e85f={'count':0x0,'rows':[]};return db[_0xc0b0('0x3e')][_0xc0b0('0x6b')]({'where':{'id':_0x2f7662[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x3d39eb,null))[_0xc0b0('0x33')](function(_0x1e2e47){if(_0x1e2e47){_0x2f6511[_0xc0b0('0x42')]=_['keys'](db[_0xc0b0('0x9f')]['rawAttributes']);_0x2f6511[_0xc0b0('0x43')]=_[_0xc0b0('0x54')](_0x2f7662[_0xc0b0('0x43')]);_0x2f6511[_0xc0b0('0x44')]=_[_0xc0b0('0x46')](_0x2f6511[_0xc0b0('0x42')],_0x2f6511[_0xc0b0('0x43')]);_0x25572e['attributes']=_[_0xc0b0('0x46')](_0x2f6511['model'],qs[_0xc0b0('0x47')](_0x2f7662['query']['fields']));_0x25572e[_0xc0b0('0x45')]=_0x25572e['attributes'][_0xc0b0('0x48')]?_0x25572e[_0xc0b0('0x45')]:_0x2f6511[_0xc0b0('0x42')];if(!_0x2f7662[_0xc0b0('0x43')][_0xc0b0('0x49')](_0xc0b0('0x62'))){_0x25572e[_0xc0b0('0x2c')]=qs[_0xc0b0('0x2c')](_0x2f7662[_0xc0b0('0x43')][_0xc0b0('0x2c')]);_0x25572e['offset']=qs[_0xc0b0('0x2a')](_0x2f7662[_0xc0b0('0x43')][_0xc0b0('0x2a')]);}_0x25572e[_0xc0b0('0x4a')]=qs[_0xc0b0('0x4b')](_0x2f7662[_0xc0b0('0x43')][_0xc0b0('0x4b')]);_0x25572e[_0xc0b0('0x4c')]=qs[_0xc0b0('0x44')](_[_0xc0b0('0x4d')](_0x2f7662[_0xc0b0('0x43')],_0x2f6511[_0xc0b0('0x44')]));_0x25572e[_0xc0b0('0x4c')][_0xc0b0('0x63')]=_0x1e2e47['id'];if(_0x2f7662[_0xc0b0('0x43')][_0xc0b0('0x50')]){_0x25572e[_0xc0b0('0x4c')]=_[_0xc0b0('0x4e')](_0x25572e[_0xc0b0('0x4c')],{'$or':_[_0xc0b0('0x3d')](_0x25572e[_0xc0b0('0x45')],function(_0x4783ad){var _0x1a8517={};_0x1a8517[_0x4783ad]={'$like':'%'+_0x2f7662['query'][_0xc0b0('0x50')]+'%'};return _0x1a8517;})});}if(_0x2f7662[_0xc0b0('0x43')]['$gte']){var _0x49e2b8=_0x2f7662['query']['$gte']['split'](',');var _0x5c335b={};_0x5c335b[_0x49e2b8[0x0]]={'$gte':moment(_0x49e2b8[0x1])[_0xc0b0('0xa0')](_0xc0b0('0xa1'))};_0x25572e[_0xc0b0('0x4c')]=_[_0xc0b0('0x4e')](_0x25572e[_0xc0b0('0x4c')],_0x5c335b);}_0x25572e=_[_0xc0b0('0x4e')]({},_0x25572e,_0x2f7662[_0xc0b0('0x64')]);return db[_0xc0b0('0x9f')][_0xc0b0('0x2d')]({'where':_0x25572e[_0xc0b0('0x4c')]})['then'](function(_0x19d617){_0x19e85f[_0xc0b0('0x2d')]=_0x19d617;if(_0x2f7662['query'][_0xc0b0('0x51')]){_0x25572e['include']=[{'all':!![]}];}return db[_0xc0b0('0x9f')]['findAll'](_0x25572e);})[_0xc0b0('0x33')](function(_0x5709f7){_0x19e85f[_0xc0b0('0x6c')]=_0x5709f7;return _0x19e85f;});}})['then'](respondWithFilteredResult(_0x3d39eb,_0x25572e))[_0xc0b0('0x25')](handleError(_0x3d39eb,null));};exports[_0xc0b0('0x39')]=function(_0x3e5b42,_0x473ec4,_0x12fb9a){var _0x11f165,_0x16199f={},_0x1b4840;if(_0x3e5b42[_0xc0b0('0x5c')]['to']){_0x1b4840=_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0];}return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x3e5b42[_0xc0b0('0x5d')]['id']},'include':[{'model':db[_0xc0b0('0xa2')],'as':_0xc0b0('0xa3'),'include':[{'model':db[_0xc0b0('0x72')],'as':'Contacts','where':{'fax':_0x1b4840},'limit':0x1,'order':[[_0xc0b0('0x9b'),_0xc0b0('0xa4')]]}]}]})[_0xc0b0('0x33')](handleEntityNotFound(_0x473ec4,null))[_0xc0b0('0x33')](function(_0x3f59bd){_0x11f165=_0x3f59bd;if(_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')]&&_0x3e5b42['body'][_0xc0b0('0xa5')][_0xc0b0('0x48')]){for(var _0x4c401d=0x0;_0x4c401d<_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][_0xc0b0('0x48')];_0x4c401d+=0x1){_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][_0x4c401d]={'filename':_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][_0x4c401d][_0xc0b0('0x38')],'id':_0x3e5b42[_0xc0b0('0x5c')]['attachments'][_0x4c401d]['id'],'path':path[_0xc0b0('0xa6')](config[_0xc0b0('0xa7')],_0xc0b0('0xa8'),_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][_0x4c401d][_0xc0b0('0xa9')])};}}return respondWithRpcPromise(_0xc0b0('0xaa'),_0xc0b0('0xaa'),{'FaxAccountId':_[_0xc0b0('0xab')](_0x3e5b42[_0xc0b0('0x5d')]['id'])?undefined:_0x3e5b42[_0xc0b0('0x5d')]['id'],'path':_[_0xc0b0('0xab')](_0x3e5b42['body']['attachments'][0x0][_0xc0b0('0x8')])?undefined:_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][0x0][_0xc0b0('0x8')],'fax':_[_0xc0b0('0xab')](_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0])?undefined:_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0]},client9002);})[_0xc0b0('0x33')](function(){if(_0x11f165){if(_['isNil'](_0x3e5b42['body'][_0xc0b0('0xac')])){_0x3e5b42[_0xc0b0('0x5c')]['from']=util['format'](_0xc0b0('0xad'),_0x11f165[_0xc0b0('0x38')],_0x11f165[_0xc0b0('0xae')]);}if(_0x11f165[_0xc0b0('0xa3')]){if(_0x11f165['List']['Contacts'][_0xc0b0('0x48')]){return _0x11f165['List'][_0xc0b0('0xaf')][0x0];}else{return db[_0xc0b0('0x72')][_0xc0b0('0x56')](_[_0xc0b0('0x16')](_0x3e5b42[_0xc0b0('0x5c')],{'firstName':_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0],'phone':_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0],'fax':_0x3e5b42['body']['to'][0x0],'ListId':_0x11f165[_0xc0b0('0x9d')]}));}}else{throw new Error(_0xc0b0('0xb0'));}}else{throw new Error(_0xc0b0('0xb1'));}})[_0xc0b0('0x33')](function(_0x357234){if(_0x357234){return db[_0xc0b0('0x6e')][_0xc0b0('0x55')]({'where':{'ContactId':_0x357234['id'],'closed':![],'FaxAccountId':_0x11f165['id']}})[_0xc0b0('0x33')](function(_0x11a10c){if(_0x11a10c){return[_0x11a10c,![]];}return db[_0xc0b0('0x6e')][_0xc0b0('0x56')]({'UserId':_0x3e5b42['user']['id'],'ContactId':_0x357234['id'],'FaxAccountId':_0x11f165['id'],'fax':_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0],'firstMsgDirection':_0xc0b0('0xb2'),'Messages':[_[_0xc0b0('0x4e')](_0x3e5b42[_0xc0b0('0x5c')],{'read':![],'body':_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][0x0][_0xc0b0('0xb3')],'FaxAccountId':_0x11f165['id'],'UserId':_0x3e5b42[_0xc0b0('0x57')]['id'],'ContactId':_0x357234['id'],'AttachmentId':_0x3e5b42['body'][_0xc0b0('0xa5')][0x0]['id']})]},{'include':[{'model':db[_0xc0b0('0x9f')],'as':_0xc0b0('0xb4')}]})[_0xc0b0('0x33')](function(_0x1d7182){return[_0x1d7182,!![]];});});}else{throw new Error(_0xc0b0('0xb5'));}})[_0xc0b0('0xb6')](function(_0x498058,_0x2f9b6a){if(_0x2f9b6a){return _0x498058;}return db[_0xc0b0('0x9f')][_0xc0b0('0x56')]({'direction':'out','read':![],'body':_0x3e5b42['body'][_0xc0b0('0xa5')][0x0]['filename'],'FaxAccountId':_0x11f165['id'],'FaxInteractionId':_0x498058['id'],'UserId':_0x3e5b42[_0xc0b0('0x57')]['id'],'ContactId':_0x498058[_0xc0b0('0xb7')],'AttachmentId':_0x3e5b42['body']['attachments'][0x0]['id']})[_0xc0b0('0x33')](function(_0x17aa95){_0x498058[_0xc0b0('0xb8')][_0xc0b0('0xb4')]=[];_0x498058['dataValues'][_0xc0b0('0xb4')][_0xc0b0('0x8b')](_0x17aa95[_0xc0b0('0xb8')]);return _0x498058;});})[_0xc0b0('0x33')](function(_0xc93f4b){respondWithRpcPromise(_0xc0b0('0xb9'),_0xc0b0('0xb9'),{'FaxAccountId':_[_0xc0b0('0xab')](_0x3e5b42['params']['id'])?undefined:_0x3e5b42[_0xc0b0('0x5d')]['id'],'path':_[_0xc0b0('0xab')](_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][0x0][_0xc0b0('0x8')])?undefined:_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][0x0][_0xc0b0('0x8')],'fax':_[_0xc0b0('0xab')](_0x3e5b42[_0xc0b0('0x5c')]['to'][0x0])?undefined:_0x3e5b42['body']['to'][0x0],'AttachmentId':_0x3e5b42[_0xc0b0('0x5c')][_0xc0b0('0xa5')][0x0]['id']},client9002)[_0xc0b0('0x33')](function(_0x555c22){logger[_0xc0b0('0x1c')](_0xc0b0('0xba'),_0x555c22);})[_0xc0b0('0x25')](function(_0x56e8f1){logger[_0xc0b0('0x1c')](_0xc0b0('0xba'),_0x56e8f1);});return _0xc93f4b;})['then'](respondWithResult(_0x473ec4,null))[_0xc0b0('0x25')](handleError(_0x473ec4,null));};exports['addAgents']=function(_0x4de559,_0x20f815,_0x27469b){return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x4de559[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x20f815,null))[_0xc0b0('0x33')](function(_0x42e9bf){if(_0x42e9bf){return _0x42e9bf['addAgents'](_0x4de559[_0xc0b0('0x5c')][_0xc0b0('0x67')],_['omit'](_0x4de559[_0xc0b0('0x5c')],['ids','id'])||{})[_0xc0b0('0xb6')](function(_0x215993){for(var _0xa03bda=0x0;_0xa03bda<_0x4de559['body'][_0xc0b0('0x67')][_0xc0b0('0x48')];_0xa03bda+=0x1){socket[_0xc0b0('0xbb')](_0xc0b0('0xbc'),{'UserId':Number(_0x4de559[_0xc0b0('0x5c')][_0xc0b0('0x67')][_0xa03bda]),'FaxAccountId':Number(_0x4de559[_0xc0b0('0x5d')]['id'])});}return _0x215993;});}})[_0xc0b0('0x33')](respondWithResult(_0x20f815,null))[_0xc0b0('0x25')](handleError(_0x20f815,null));};exports[_0xc0b0('0xbd')]=function(_0x2d1765,_0x27e430,_0x2c1d10){return db[_0xc0b0('0x3e')][_0xc0b0('0x55')]({'where':{'id':_0x2d1765[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x27e430,null))[_0xc0b0('0x33')](function(_0x14a4e3){if(_0x14a4e3){return _0x14a4e3[_0xc0b0('0xbd')](_0x2d1765['query'][_0xc0b0('0x67')])[_0xc0b0('0x33')](function(){if(_[_0xc0b0('0xbe')](_0x2d1765[_0xc0b0('0x43')][_0xc0b0('0x67')])){for(var _0x3441c1=0x0;_0x3441c1<_0x2d1765[_0xc0b0('0x43')][_0xc0b0('0x67')][_0xc0b0('0x48')];_0x3441c1+=0x1){socket[_0xc0b0('0xbb')](_0xc0b0('0xbf'),{'UserId':Number(_0x2d1765['query'][_0xc0b0('0x67')][_0x3441c1]),'FaxAccountId':Number(_0x2d1765[_0xc0b0('0x5d')]['id'])});}}else{socket[_0xc0b0('0xbb')]('userFaxAccount:remove',{'UserId':Number(_0x2d1765[_0xc0b0('0x43')][_0xc0b0('0x67')]),'FaxAccountId':Number(_0x2d1765[_0xc0b0('0x5d')]['id'])});}});}})[_0xc0b0('0x33')](respondWithStatusCode(_0x27e430,null))['catch'](handleError(_0x27e430,null));};exports[_0xc0b0('0xc0')]=function(_0x1856c1,_0x3e20c2,_0x615cef){var _0x1fbb58={};var _0x4a9083={};var _0xdb3514;var _0x116be5;return db['FaxAccount'][_0xc0b0('0x6b')]({'where':{'id':_0x1856c1[_0xc0b0('0x5d')]['id']}})[_0xc0b0('0x33')](handleEntityNotFound(_0x3e20c2,null))['then'](function(_0x15bb09){if(_0x15bb09){_0xdb3514=_0x15bb09;_0x4a9083['model']=_[_0xc0b0('0x54')](db['User'][_0xc0b0('0x3f')]);_0x4a9083[_0xc0b0('0x43')]=_['keys'](_0x1856c1[_0xc0b0('0x43')]);_0x4a9083[_0xc0b0('0x44')]=_[_0xc0b0('0x46')](_0x4a9083[_0xc0b0('0x42')],_0x4a9083[_0xc0b0('0x43')]);_0x1fbb58['attributes']=_[_0xc0b0('0x46')](_0x4a9083[_0xc0b0('0x42')],qs[_0xc0b0('0x47')](_0x1856c1[_0xc0b0('0x43')][_0xc0b0('0x47')]));_0x1fbb58[_0xc0b0('0x45')]=_0x1fbb58[_0xc0b0('0x45')]['length']?_0x1fbb58[_0xc0b0('0x45')]:_0x4a9083[_0xc0b0('0x42')];_0x1fbb58[_0xc0b0('0x4a')]=qs[_0xc0b0('0x4b')](_0x1856c1[_0xc0b0('0x43')][_0xc0b0('0x4b')]);_0x1fbb58['where']=qs[_0xc0b0('0x44')](_[_0xc0b0('0x4d')](_0x1856c1[_0xc0b0('0x43')],_0x4a9083['filters']));if(_0x1856c1['query'][_0xc0b0('0x50')]){_0x1fbb58[_0xc0b0('0x4c')]=_['merge'](_0x1fbb58[_0xc0b0('0x4c')],{'$or':_[_0xc0b0('0x3d')](_0x1fbb58[_0xc0b0('0x45')],function(_0x50c125){var _0x2d378a={};_0x2d378a[_0x50c125]={'$like':'%'+_0x1856c1[_0xc0b0('0x43')][_0xc0b0('0x50')]+'%'};return _0x2d378a;})});}_0x1fbb58=_['merge']({},_0x1fbb58,_0x1856c1['options']);return _0xdb3514[_0xc0b0('0xc0')](_0x1fbb58);}})['then'](function(_0x26f6e2){if(_0x26f6e2){_0x116be5=_0x26f6e2[_0xc0b0('0x48')];if(!_0x1856c1[_0xc0b0('0x43')][_0xc0b0('0x49')](_0xc0b0('0x62'))){_0x1fbb58[_0xc0b0('0x2c')]=qs[_0xc0b0('0x2c')](_0x1856c1[_0xc0b0('0x43')][_0xc0b0('0x2c')]);_0x1fbb58[_0xc0b0('0x2a')]=qs[_0xc0b0('0x2a')](_0x1856c1[_0xc0b0('0x43')][_0xc0b0('0x2a')]);}return _0xdb3514['getAgents'](_0x1fbb58);}})['then'](function(_0x3402ad){if(_0x3402ad){return _0x3402ad?{'count':_0x116be5,'rows':_0x3402ad}:null;}})['then'](respondWithResult(_0x3e20c2,null))['catch'](handleError(_0x3e20c2,null));};
\ No newline at end of file
index 6defdba..9560bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f36=['hasOwnProperty','hook','exports','events','FaxAccount','setMaxListeners','save','update','emit'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x5f36,0x12c));var _0x65f3=function(_0xa3d76a,_0x3d8361){_0xa3d76a=_0xa3d76a-0x0;var _0x4884cb=_0x5f36[_0xa3d76a];return _0x4884cb;};'use strict';var EventEmitter=require(_0x65f3('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x65f3('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x65f3('0x2')](0x0);var events={'afterCreate':_0x65f3('0x3'),'afterUpdate':_0x65f3('0x4'),'afterDestroy':'remove'};function emitEvent(_0x413c41){return function(_0x2c33b2,_0x2e6724,_0x2e4e36){FaxAccountEvents[_0x65f3('0x5')](_0x413c41+':'+_0x2c33b2['id'],_0x2c33b2);FaxAccountEvents[_0x65f3('0x5')](_0x413c41,_0x2c33b2);_0x2e4e36(null);};}for(var e in events){if(events[_0x65f3('0x6')](e)){var event=events[e];FaxAccount[_0x65f3('0x7')](e,emitEvent(event));}}module[_0x65f3('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x3d70=['setMaxListeners','save','update','emit','hasOwnProperty','events','../../mysqldb','FaxAccount'];(function(_0x4d77b8,_0x208e64){var _0x82da62=function(_0x30f96){while(--_0x30f96){_0x4d77b8['push'](_0x4d77b8['shift']());}};_0x82da62(++_0x208e64);}(_0x3d70,0x13d));var _0x03d7=function(_0x195c21,_0x332612){_0x195c21=_0x195c21-0x0;var _0x3576a8=_0x3d70[_0x195c21];return _0x3576a8;};'use strict';var EventEmitter=require(_0x03d7('0x0'));var FaxAccount=require(_0x03d7('0x1'))['db'][_0x03d7('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x03d7('0x3')](0x0);var events={'afterCreate':_0x03d7('0x4'),'afterUpdate':_0x03d7('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5afadc){return function(_0x5ab6b5,_0x2b4244,_0x5175a8){FaxAccountEvents[_0x03d7('0x6')](_0x5afadc+':'+_0x5ab6b5['id'],_0x5ab6b5);FaxAccountEvents['emit'](_0x5afadc,_0x5ab6b5);_0x5175a8(null);};}for(var e in events){if(events[_0x03d7('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index f2974bf..e3f64b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8db=['rimraf','./faxAccount.attributes','exports','define','fax_accounts','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x4fe35e,_0x4bc544){var _0x1136dd=function(_0x25875e){while(--_0x25875e){_0x4fe35e['push'](_0x4fe35e['shift']());}};_0x1136dd(++_0x4bc544);}(_0xd8db,0xd6));var _0xbd8d=function(_0x530f66,_0x41bcb7){_0x530f66=_0x530f66-0x0;var _0x23a441=_0xd8db[_0x530f66];return _0x23a441;};'use strict';var _=require(_0xbd8d('0x0'));var util=require('util');var logger=require(_0xbd8d('0x1'))(_0xbd8d('0x2'));var moment=require(_0xbd8d('0x3'));var BPromise=require(_0xbd8d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd8d('0x5'));var rimraf=require(_0xbd8d('0x6'));var config=require('../../config/environment');var attributes=require(_0xbd8d('0x7'));module[_0xbd8d('0x8')]=function(_0x4da74c,_0x3c8fb7){return _0x4da74c[_0xbd8d('0x9')]('FaxAccount',attributes,{'tableName':_0xbd8d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1375=['FaxAccount','fax_accounts','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','exports'];(function(_0x39872b,_0x343e6b){var _0x55fa18=function(_0x217c7f){while(--_0x217c7f){_0x39872b['push'](_0x39872b['shift']());}};_0x55fa18(++_0x343e6b);}(_0x1375,0x19a));var _0x5137=function(_0x591794,_0x1ac0d3){_0x591794=_0x591794-0x0;var _0x5b79c6=_0x1375[_0x591794];return _0x5b79c6;};'use strict';var _=require('lodash');var util=require(_0x5137('0x0'));var logger=require(_0x5137('0x1'))(_0x5137('0x2'));var moment=require(_0x5137('0x3'));var BPromise=require(_0x5137('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5137('0x5'));var rimraf=require(_0x5137('0x6'));var config=require(_0x5137('0x7'));var attributes=require(_0x5137('0x8'));module[_0x5137('0x9')]=function(_0x49d60d,_0x4303d3){return _0x49d60d['define'](_0x5137('0xa'),attributes,{'tableName':_0x5137('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c6e3001..8675d58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9759=['ValidationError','no\x20available\x20attributes','keys','createdAt','updatedAt','CompanyId','body','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','List','DESC','get','applications','Applications','orderBy','priority','asc','Contacts','ListId','create','contact','FaxInteraction','spread','autoclose','length','unmanaged','*,*,*,*','created','interaction','ContactId','AttachmentId','UserId','User','name','unshift','agent','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetFaxAccount','findAll','options','raw','where','attributes','include','map','model','stringify','NotifyFaxAccount','fax','CmContact','describe','Sequelize'];(function(_0x328ac9,_0x2f7225){var _0x2b3a0a=function(_0x759e26){while(--_0x759e26){_0x328ac9['push'](_0x328ac9['shift']());}};_0x2b3a0a(++_0x2f7225);}(_0x9759,0x1e4));var _0x9975=function(_0x27349f,_0x29f5f7){_0x27349f=_0x27349f-0x0;var _0x38e72e=_0x9759[_0x27349f];return _0x38e72e;};'use strict';var _=require('lodash');var util=require(_0x9975('0x0'));var moment=require(_0x9975('0x1'));var BPromise=require(_0x9975('0x2'));var rs=require(_0x9975('0x3'));var fs=require('fs');var Redis=require(_0x9975('0x4'));var db=require(_0x9975('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9975('0x6'))(_0x9975('0x7'));var config=require(_0x9975('0x8'));var jayson=require(_0x9975('0x9'));var client=jayson[_0x9975('0xa')][_0x9975('0xb')]({'port':0x232c});config['redis']=_[_0x9975('0xc')](config[_0x9975('0xd')],{'host':_0x9975('0xe'),'port':0x18eb});var socket=require(_0x9975('0xf'))(new Redis(config[_0x9975('0xd')]));require(_0x9975('0x10'))['register'](socket);function respondWithRpcPromise(_0x3fc164,_0x422f75,_0x1c83cb){return new BPromise(function(_0x4317ae,_0x47e7e3){return client[_0x9975('0x11')](_0x3fc164,_0x1c83cb)[_0x9975('0x12')](function(_0x196a4e){logger['info'](_0x9975('0x13'),_0x422f75,_0x9975('0x14'));logger[_0x9975('0x15')](_0x9975('0x16'),_0x422f75,_0x9975('0x14'),JSON['stringify'](_0x196a4e));if(_0x196a4e[_0x9975('0x17')]){if(_0x196a4e[_0x9975('0x17')][_0x9975('0x18')]===0x1f4){logger[_0x9975('0x17')](_0x9975('0x13'),_0x422f75,_0x196a4e[_0x9975('0x17')][_0x9975('0x19')]);return _0x47e7e3(_0x196a4e[_0x9975('0x17')][_0x9975('0x19')]);}logger[_0x9975('0x17')](_0x9975('0x13'),_0x422f75,_0x196a4e[_0x9975('0x17')]['message']);return _0x4317ae(_0x196a4e['error'][_0x9975('0x19')]);}else{logger[_0x9975('0x1a')](_0x9975('0x13'),_0x422f75,'request\x20sent');_0x4317ae(_0x196a4e[_0x9975('0x1b')][_0x9975('0x19')]);}})[_0x9975('0x1c')](function(_0x1bf5ad){logger['error']('FaxAccount,\x20%s,\x20%s',_0x422f75,_0x1bf5ad);_0x47e7e3(_0x1bf5ad);});});}exports[_0x9975('0x1d')]=function(_0x42496b){var _0x4ffae0=this;return new Promise(function(_0x21f6d5,_0x45d9ab){return db['FaxAccount'][_0x9975('0x1e')]({'raw':_0x42496b[_0x9975('0x1f')]?_0x42496b['options'][_0x9975('0x20')]===undefined?!![]:![]:!![],'where':_0x42496b[_0x9975('0x1f')]?_0x42496b['options'][_0x9975('0x21')]||null:null,'attributes':_0x42496b['options']?_0x42496b['options'][_0x9975('0x22')]||null:null,'limit':_0x42496b[_0x9975('0x1f')]?_0x42496b[_0x9975('0x1f')]['limit']||null:null,'include':_0x42496b[_0x9975('0x1f')]?_0x42496b[_0x9975('0x1f')][_0x9975('0x23')]?_[_0x9975('0x24')](_0x42496b[_0x9975('0x1f')][_0x9975('0x23')],function(_0x1e4acb){return{'model':db[_0x1e4acb[_0x9975('0x25')]],'as':_0x1e4acb['as'],'attributes':_0x1e4acb['attributes'],'include':_0x1e4acb[_0x9975('0x23')]?_[_0x9975('0x24')](_0x1e4acb['include'],function(_0x166e74){return{'model':db[_0x166e74['model']],'as':_0x166e74['as'],'attributes':_0x166e74['attributes'],'include':_0x166e74[_0x9975('0x23')]?_[_0x9975('0x24')](_0x166e74[_0x9975('0x23')],function(_0x40941f){return{'model':db[_0x40941f[_0x9975('0x25')]],'as':_0x40941f['as'],'attributes':_0x40941f[_0x9975('0x22')]};}):[]};}):[]};}):[]:[]})[_0x9975('0x12')](function(_0x4800ba){logger[_0x9975('0x1a')](_0x9975('0x1d'),_0x42496b);logger[_0x9975('0x15')](_0x9975('0x1d'),_0x42496b,JSON[_0x9975('0x26')](_0x4800ba));_0x21f6d5(_0x4800ba);})[_0x9975('0x1c')](function(_0x394ed9){logger[_0x9975('0x17')](_0x9975('0x1d'),_0x394ed9[_0x9975('0x19')],_0x42496b);_0x45d9ab(_0x4ffae0[_0x9975('0x17')](0x1f4,_0x394ed9[_0x9975('0x19')]));});});};exports[_0x9975('0x27')]=function(_0x222d93,_0x3b95c3,_0xc35e9d){var _0x114ff7=this;return new Promise(function(_0x513733,_0x380de5){var _0x5a15b4={'body':_0x222d93['body'],'channel':_0x9975('0x28')};var _0x3fdce2=[];var _0x44cd89=[];var _0x8ffa20={};return db[_0x9975('0x29')][_0x9975('0x2a')]()[_0x9975('0x12')](function(_0x2417bf){if(!_0x2417bf){throw new db[(_0x9975('0x2b'))][(_0x9975('0x2c'))](_0x9975('0x2d'));}_0x3fdce2=_['difference'](_[_0x9975('0x2e')](_0x2417bf),[_0x9975('0x2f'),_0x9975('0x30')]);_0x44cd89=_['difference'](_[_0x9975('0x2e')](_0x2417bf),[_0x9975('0x2f'),_0x9975('0x30'),_0x9975('0x31'),'ListId']);if(_0x222d93[_0x9975('0x32')]['id']){delete _0x222d93[_0x9975('0x32')]['id'];}if(_['isNil'](_0x222d93[_0x9975('0x32')][_0x9975('0x33')])){throw new db[(_0x9975('0x2b'))][(_0x9975('0x2c'))](_0x9975('0x34'));}if(_[_0x9975('0x35')](_0x222d93[_0x9975('0x32')]['body'])||_0x222d93[_0x9975('0x32')][_0x9975('0x32')]===''){throw new db['Sequelize'][(_0x9975('0x2c'))](_0x9975('0x36'));}if(_[_0x9975('0x35')](_0x222d93[_0x9975('0x32')][_0x9975('0x37')])){throw new db['Sequelize'][(_0x9975('0x2c'))](_0x9975('0x38')+_0x44cd89);}if(!_['includes'](_0x44cd89,_0x222d93['body']['mapKey'])){throw new db[(_0x9975('0x2b'))][(_0x9975('0x2c'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x44cd89);}_0x8ffa20[_0x222d93[_0x9975('0x32')]['mapKey']]=_0x222d93[_0x9975('0x32')][_0x9975('0x33')];})[_0x9975('0x12')](function(){return db['FaxAccount'][_0x9975('0x39')]({'where':{'id':_0x222d93[_0x9975('0x3a')]['id']},'include':[{'model':db['CmList'],'as':_0x9975('0x3b'),'include':[{'model':db[_0x9975('0x29')],'as':'Contacts','where':_0x8ffa20,'limit':0x1,'order':[[_0x9975('0x30'),_0x9975('0x3c')]]}]},{'model':db['FaxApplication'],'as':'Applications'}]});})[_0x9975('0x12')](function(_0x56d562){if(_0x56d562&&_0x56d562['List']){var _0x13fca0=_0x56d562[_0x9975('0x3d')]({'plain':!![]});_0x5a15b4[_0x9975('0x3a')]=_0x13fca0;_0x5a15b4[_0x9975('0x3e')]=_0x13fca0[_0x9975('0x3f')];_0x5a15b4['list']=_0x13fca0[_0x9975('0x3b')];_0x5a15b4[_0x9975('0x3e')]=_[_0x9975('0x40')](_0x5a15b4[_0x9975('0x3e')],[_0x9975('0x41')],[_0x9975('0x42')]);if(_0x5a15b4[_0x9975('0x3a')][_0x9975('0x3f')]){delete _0x5a15b4[_0x9975('0x3a')]['Applications'];}if(_0x5a15b4[_0x9975('0x3a')][_0x9975('0x3b')]&&_0x5a15b4['account'][_0x9975('0x3b')][_0x9975('0x43')]['length']){return _0x5a15b4['account'][_0x9975('0x3b')]['Contacts'][0x0];}var _0x4b1562=_[_0x9975('0xc')](_0x222d93['body'],{'firstName':_0x222d93[_0x9975('0x32')][_0x9975('0x33')],'ListId':_0x13fca0[_0x9975('0x44')]});_0x4b1562[_0x222d93[_0x9975('0x32')][_0x9975('0x37')]]=_0x222d93['body'][_0x9975('0x33')];return db[_0x9975('0x29')][_0x9975('0x45')](_0x4b1562,{'fields':_0x3fdce2,'raw':!![]});}})[_0x9975('0x12')](function(_0x1f1cdc){_0x5a15b4[_0x9975('0x46')]=_0x1f1cdc;if(_0x1f1cdc){var _0x3f1b13={'ContactId':_0x1f1cdc['id'],'FaxAccountId':_0x222d93[_0x9975('0x3a')]['id'],'fax':_0x1f1cdc[_0x9975('0x28')]};return db['FaxInteraction'][_0x9975('0x39')]({'where':{'ContactId':_0x1f1cdc['id'],'closed':![],'FaxAccountId':_0x222d93[_0x9975('0x3a')]['id']}})[_0x9975('0x12')](function(_0x5e3065){if(_0x5e3065){return[_0x5e3065,![]];}return db[_0x9975('0x47')][_0x9975('0x45')](_0x3f1b13)[_0x9975('0x12')](function(_0x462bc3){return[_0x462bc3,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x9975('0x48')](function(_0x3df706,_0x3c474d){var _0x4e57af=_0x3df706['get']({'plain':!![]});if(_0x3c474d){if(_0x5a15b4[_0x9975('0x3a')][_0x9975('0x49')]){_0x5a15b4[_0x9975('0x3e')]['push']({'id':0x0,'priority':_0x5a15b4['applications'][_0x9975('0x4a')]+0x1,'app':'close','appdata':_0x9975('0x4b'),'interval':_0x9975('0x4c')});}_0x4e57af[_0x9975('0x4d')]=!![];}else{_0x4e57af['created']=![];}_0x5a15b4[_0x9975('0x4e')]=_0x4e57af;return db['FaxMessage']['create']({'body':_0x222d93['body'][_0x9975('0x32')],'FaxAccountId':_0x222d93[_0x9975('0x3a')]['id'],'FaxInteractionId':_0x3df706['id'],'direction':'in','ContactId':_0x3df706[_0x9975('0x4f')],'AttachmentId':_0x222d93[_0x9975('0x32')][_0x9975('0x50')]});})['then'](function(_0x27f880){_0x5a15b4[_0x9975('0x19')]=_0x27f880;if(_0x5a15b4[_0x9975('0x4e')][_0x9975('0x51')]){return db[_0x9975('0x52')][_0x9975('0x39')]({'attributes':['id',_0x9975('0x53')],'where':{'id':_0x5a15b4[_0x9975('0x4e')][_0x9975('0x51')]}})[_0x9975('0x12')](function(_0x5bd20c){if(_0x5bd20c){_0x5a15b4[_0x9975('0x3e')][_0x9975('0x54')]({'id':0x0,'priority':0x0,'app':_0x9975('0x55'),'appdata':_0x5bd20c[_0x9975('0x53')]+','+(_0x5a15b4[_0x9975('0x3a')]['waitForTheAssignedAgent']||0xa),'interval':_0x9975('0x4c')});}return respondWithRpcPromise(_0x9975('0x56'),_0x9975('0x57'),_0x5a15b4);});}return respondWithRpcPromise(_0x9975('0x56'),_0x9975('0x57'),_0x5a15b4);})['then'](function(_0x1bf057){_0x513733(_0x1bf057);})[_0x9975('0x1c')](function(_0x30af10){_0x380de5(_0x114ff7[_0x9975('0x17')](0x1f4,_0x30af10[_0x9975('0x19')]));});});};
\ No newline at end of file
+var _0x3fdc=['findAll','options','raw','where','limit','include','map','model','attributes','fax','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','ListId','body','isNil','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','CmContact','DESC','FaxApplication','Applications','get','applications','list','orderBy','asc','Contacts','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','agent','name','waitForTheAssignedAgent','Start','startRouting','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetFaxAccount','FaxAccount'];(function(_0x4bb66f,_0x3cd682){var _0xf2772f=function(_0x2e3698){while(--_0x2e3698){_0x4bb66f['push'](_0x4bb66f['shift']());}};_0xf2772f(++_0x3cd682);}(_0x3fdc,0x146));var _0xc3fd=function(_0x949cb8,_0x4a0ab2){_0x949cb8=_0x949cb8-0x0;var _0x32f83c=_0x3fdc[_0x949cb8];return _0x32f83c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc3fd('0x0'));var BPromise=require(_0xc3fd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3fd('0x2'));var db=require(_0xc3fd('0x3'))['db'];var utils=require(_0xc3fd('0x4'));var logger=require('../../config/logger')(_0xc3fd('0x5'));var config=require(_0xc3fd('0x6'));var jayson=require(_0xc3fd('0x7'));var client=jayson[_0xc3fd('0x8')][_0xc3fd('0x9')]({'port':0x232c});config[_0xc3fd('0xa')]=_[_0xc3fd('0xb')](config[_0xc3fd('0xa')],{'host':_0xc3fd('0xc'),'port':0x18eb});var socket=require(_0xc3fd('0xd'))(new Redis(config[_0xc3fd('0xa')]));require(_0xc3fd('0xe'))['register'](socket);function respondWithRpcPromise(_0x6b4806,_0x520c09,_0x4a7484){return new BPromise(function(_0x213205,_0x22ffd2){return client[_0xc3fd('0xf')](_0x6b4806,_0x4a7484)[_0xc3fd('0x10')](function(_0x293c8a){logger['info'](_0xc3fd('0x11'),_0x520c09,_0xc3fd('0x12'));logger[_0xc3fd('0x13')](_0xc3fd('0x14'),_0x520c09,_0xc3fd('0x12'),JSON[_0xc3fd('0x15')](_0x293c8a));if(_0x293c8a[_0xc3fd('0x16')]){if(_0x293c8a[_0xc3fd('0x16')][_0xc3fd('0x17')]===0x1f4){logger[_0xc3fd('0x16')](_0xc3fd('0x11'),_0x520c09,_0x293c8a[_0xc3fd('0x16')][_0xc3fd('0x18')]);return _0x22ffd2(_0x293c8a[_0xc3fd('0x16')][_0xc3fd('0x18')]);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x520c09,_0x293c8a[_0xc3fd('0x16')][_0xc3fd('0x18')]);return _0x213205(_0x293c8a['error']['message']);}else{logger[_0xc3fd('0x19')](_0xc3fd('0x11'),_0x520c09,_0xc3fd('0x12'));_0x213205(_0x293c8a[_0xc3fd('0x1a')]['message']);}})[_0xc3fd('0x1b')](function(_0x127b2e){logger[_0xc3fd('0x16')](_0xc3fd('0x11'),_0x520c09,_0x127b2e);_0x22ffd2(_0x127b2e);});});}exports[_0xc3fd('0x1c')]=function(_0x1ea705){var _0x250725=this;return new Promise(function(_0x2287c5,_0x53c5c7){return db[_0xc3fd('0x1d')][_0xc3fd('0x1e')]({'raw':_0x1ea705['options']?_0x1ea705[_0xc3fd('0x1f')][_0xc3fd('0x20')]===undefined?!![]:![]:!![],'where':_0x1ea705[_0xc3fd('0x1f')]?_0x1ea705[_0xc3fd('0x1f')][_0xc3fd('0x21')]||null:null,'attributes':_0x1ea705[_0xc3fd('0x1f')]?_0x1ea705[_0xc3fd('0x1f')]['attributes']||null:null,'limit':_0x1ea705[_0xc3fd('0x1f')]?_0x1ea705[_0xc3fd('0x1f')][_0xc3fd('0x22')]||null:null,'include':_0x1ea705[_0xc3fd('0x1f')]?_0x1ea705[_0xc3fd('0x1f')][_0xc3fd('0x23')]?_[_0xc3fd('0x24')](_0x1ea705['options']['include'],function(_0x5d7482){return{'model':db[_0x5d7482[_0xc3fd('0x25')]],'as':_0x5d7482['as'],'attributes':_0x5d7482[_0xc3fd('0x26')],'include':_0x5d7482[_0xc3fd('0x23')]?_[_0xc3fd('0x24')](_0x5d7482['include'],function(_0x14c0f5){return{'model':db[_0x14c0f5[_0xc3fd('0x25')]],'as':_0x14c0f5['as'],'attributes':_0x14c0f5[_0xc3fd('0x26')],'include':_0x14c0f5[_0xc3fd('0x23')]?_[_0xc3fd('0x24')](_0x14c0f5[_0xc3fd('0x23')],function(_0x2ff2af){return{'model':db[_0x2ff2af[_0xc3fd('0x25')]],'as':_0x2ff2af['as'],'attributes':_0x2ff2af[_0xc3fd('0x26')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e4f2a){logger[_0xc3fd('0x19')]('GetFaxAccount',_0x1ea705);logger[_0xc3fd('0x13')](_0xc3fd('0x1c'),_0x1ea705,JSON[_0xc3fd('0x15')](_0x5e4f2a));_0x2287c5(_0x5e4f2a);})[_0xc3fd('0x1b')](function(_0x47f99b){logger[_0xc3fd('0x16')](_0xc3fd('0x1c'),_0x47f99b[_0xc3fd('0x18')],_0x1ea705);_0x53c5c7(_0x250725['error'](0x1f4,_0x47f99b[_0xc3fd('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x202856,_0x1e2d4f,_0x1279c0){var _0x58e5f3=this;return new Promise(function(_0x32ae6e,_0x3bbe7e){var _0x8d30d6={'body':_0x202856['body'],'channel':_0xc3fd('0x27')};var _0x2164e0=[];var _0x6c3df8=[];var _0x2a1569={};return db['CmContact']['describe']()[_0xc3fd('0x10')](function(_0x2e5262){if(!_0x2e5262){throw new db[(_0xc3fd('0x28'))][(_0xc3fd('0x29'))](_0xc3fd('0x2a'));}_0x2164e0=_[_0xc3fd('0x2b')](_[_0xc3fd('0x2c')](_0x2e5262),[_0xc3fd('0x2d'),_0xc3fd('0x2e')]);_0x6c3df8=_[_0xc3fd('0x2b')](_['keys'](_0x2e5262),[_0xc3fd('0x2d'),_0xc3fd('0x2e'),'CompanyId',_0xc3fd('0x2f')]);if(_0x202856['body']['id']){delete _0x202856[_0xc3fd('0x30')]['id'];}if(_[_0xc3fd('0x31')](_0x202856[_0xc3fd('0x30')][_0xc3fd('0x32')])){throw new db[(_0xc3fd('0x28'))][(_0xc3fd('0x29'))](_0xc3fd('0x33'));}if(_[_0xc3fd('0x31')](_0x202856[_0xc3fd('0x30')][_0xc3fd('0x30')])||_0x202856['body'][_0xc3fd('0x30')]===''){throw new db['Sequelize'][(_0xc3fd('0x29'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x202856[_0xc3fd('0x30')][_0xc3fd('0x34')])){throw new db[(_0xc3fd('0x28'))][(_0xc3fd('0x29'))](_0xc3fd('0x35')+_0x6c3df8);}if(!_[_0xc3fd('0x36')](_0x6c3df8,_0x202856['body'][_0xc3fd('0x34')])){throw new db[(_0xc3fd('0x28'))][(_0xc3fd('0x29'))](_0xc3fd('0x37')+_0x6c3df8);}_0x2a1569[_0x202856[_0xc3fd('0x30')][_0xc3fd('0x34')]]=_0x202856[_0xc3fd('0x30')]['from'];})[_0xc3fd('0x10')](function(){return db['FaxAccount'][_0xc3fd('0x38')]({'where':{'id':_0x202856[_0xc3fd('0x39')]['id']},'include':[{'model':db[_0xc3fd('0x3a')],'as':_0xc3fd('0x3b'),'include':[{'model':db[_0xc3fd('0x3c')],'as':'Contacts','where':_0x2a1569,'limit':0x1,'order':[[_0xc3fd('0x2e'),_0xc3fd('0x3d')]]}]},{'model':db[_0xc3fd('0x3e')],'as':_0xc3fd('0x3f')}]});})[_0xc3fd('0x10')](function(_0x5e3ed7){if(_0x5e3ed7&&_0x5e3ed7['List']){var _0x1d6530=_0x5e3ed7[_0xc3fd('0x40')]({'plain':!![]});_0x8d30d6[_0xc3fd('0x39')]=_0x1d6530;_0x8d30d6[_0xc3fd('0x41')]=_0x1d6530[_0xc3fd('0x3f')];_0x8d30d6[_0xc3fd('0x42')]=_0x1d6530[_0xc3fd('0x3b')];_0x8d30d6[_0xc3fd('0x41')]=_[_0xc3fd('0x43')](_0x8d30d6[_0xc3fd('0x41')],['priority'],[_0xc3fd('0x44')]);if(_0x8d30d6[_0xc3fd('0x39')][_0xc3fd('0x3f')]){delete _0x8d30d6[_0xc3fd('0x39')][_0xc3fd('0x3f')];}if(_0x8d30d6['account'][_0xc3fd('0x3b')]&&_0x8d30d6['account'][_0xc3fd('0x3b')][_0xc3fd('0x45')][_0xc3fd('0x46')]){return _0x8d30d6[_0xc3fd('0x39')]['List']['Contacts'][0x0];}var _0x519c35=_[_0xc3fd('0xb')](_0x202856[_0xc3fd('0x30')],{'firstName':_0x202856[_0xc3fd('0x30')]['from'],'ListId':_0x1d6530[_0xc3fd('0x2f')]});_0x519c35[_0x202856['body']['mapKey']]=_0x202856[_0xc3fd('0x30')][_0xc3fd('0x32')];return db['CmContact'][_0xc3fd('0x47')](_0x519c35,{'fields':_0x2164e0,'raw':!![]});}})[_0xc3fd('0x10')](function(_0x4a32fe){_0x8d30d6[_0xc3fd('0x48')]=_0x4a32fe;if(_0x4a32fe){var _0x2245c3={'ContactId':_0x4a32fe['id'],'FaxAccountId':_0x202856[_0xc3fd('0x39')]['id'],'fax':_0x4a32fe['fax']};return db[_0xc3fd('0x49')][_0xc3fd('0x38')]({'where':{'ContactId':_0x4a32fe['id'],'closed':![],'FaxAccountId':_0x202856[_0xc3fd('0x39')]['id']}})[_0xc3fd('0x10')](function(_0x1d7d2f){if(_0x1d7d2f){return[_0x1d7d2f,![]];}return db['FaxInteraction'][_0xc3fd('0x47')](_0x2245c3)[_0xc3fd('0x10')](function(_0xf12e69){return[_0xf12e69,!![]];});});}else{throw new Error(_0xc3fd('0x4a'));}})[_0xc3fd('0x4b')](function(_0x6a7096,_0x558e65){var _0x314e19=_0x6a7096[_0xc3fd('0x40')]({'plain':!![]});if(_0x558e65){if(_0x8d30d6[_0xc3fd('0x39')]['autoclose']){_0x8d30d6[_0xc3fd('0x41')]['push']({'id':0x0,'priority':_0x8d30d6['applications']['length']+0x1,'app':'close','appdata':'unmanaged','interval':_0xc3fd('0x4c')});}_0x314e19[_0xc3fd('0x4d')]=!![];}else{_0x314e19[_0xc3fd('0x4d')]=![];}_0x8d30d6[_0xc3fd('0x4e')]=_0x314e19;return db[_0xc3fd('0x4f')][_0xc3fd('0x47')]({'body':_0x202856[_0xc3fd('0x30')][_0xc3fd('0x30')],'FaxAccountId':_0x202856['account']['id'],'FaxInteractionId':_0x6a7096['id'],'direction':'in','ContactId':_0x6a7096[_0xc3fd('0x50')],'AttachmentId':_0x202856[_0xc3fd('0x30')][_0xc3fd('0x51')]});})[_0xc3fd('0x10')](function(_0x1ba403){_0x8d30d6[_0xc3fd('0x18')]=_0x1ba403;if(_0x8d30d6[_0xc3fd('0x4e')][_0xc3fd('0x52')]){return db[_0xc3fd('0x53')][_0xc3fd('0x38')]({'attributes':['id','name'],'where':{'id':_0x8d30d6[_0xc3fd('0x4e')]['UserId']}})[_0xc3fd('0x10')](function(_0x3c5ffb){if(_0x3c5ffb){_0x8d30d6[_0xc3fd('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':_0xc3fd('0x54'),'appdata':_0x3c5ffb[_0xc3fd('0x55')]+','+(_0x8d30d6['account'][_0xc3fd('0x56')]||0xa),'interval':_0xc3fd('0x4c')});}return respondWithRpcPromise(_0xc3fd('0x57'),_0xc3fd('0x58'),_0x8d30d6);});}return respondWithRpcPromise(_0xc3fd('0x57'),'startRouting',_0x8d30d6);})[_0xc3fd('0x10')](function(_0x572815){_0x32ae6e(_0x572815);})[_0xc3fd('0x1b')](function(_0x300e51){_0x3bbe7e(_0x58e5f3[_0xc3fd('0x16')](0x1f4,_0x300e51[_0xc3fd('0x18')]));});});};
\ No newline at end of file
index cfb7ef3..a545286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa628=['emit','removeListener','length','faxAccount:','save','update'];(function(_0x2dc776,_0x14f57b){var _0x48a2ed=function(_0x4f223f){while(--_0x4f223f){_0x2dc776['push'](_0x2dc776['shift']());}};_0x48a2ed(++_0x14f57b);}(_0xa628,0xee));var _0x8a62=function(_0x4528cf,_0x3b1892){_0x4528cf=_0x4528cf-0x0;var _0x4bca53=_0xa628[_0x4528cf];return _0x4bca53;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x8a62('0x0'),'remove',_0x8a62('0x1')];function createListener(_0x4689e4,_0x529d18){return function(_0x45658d){_0x529d18[_0x8a62('0x2')](_0x4689e4,_0x45658d);};}function removeListener(_0x3589ac,_0x8ce23){return function(){FaxAccountEvents[_0x8a62('0x3')](_0x3589ac,_0x8ce23);};}exports['register']=function(_0x2ec9be){for(var _0x11be13=0x0,_0x566e18=events[_0x8a62('0x4')];_0x11be13<_0x566e18;_0x11be13++){var _0x49eab8=events[_0x11be13];var _0x260308=createListener(_0x8a62('0x5')+_0x49eab8,_0x2ec9be);FaxAccountEvents['on'](_0x49eab8,_0x260308);}};
\ No newline at end of file
+var _0xfbee=['removeListener','register','faxAccount:','remove','update','emit'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xfbee,0x75));var _0xefbe=function(_0x993782,_0x5c44f1){_0x993782=_0x993782-0x0;var _0x2820f1=_0xfbee[_0x993782];return _0x2820f1;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=['save',_0xefbe('0x0'),_0xefbe('0x1')];function createListener(_0x3a67ba,_0x341f8c){return function(_0x140fca){_0x341f8c[_0xefbe('0x2')](_0x3a67ba,_0x140fca);};}function removeListener(_0x71adf2,_0xf46208){return function(){FaxAccountEvents[_0xefbe('0x3')](_0x71adf2,_0xf46208);};}exports[_0xefbe('0x4')]=function(_0x534f45){for(var _0x3cb946=0x0,_0x4d409d=events['length'];_0x3cb946<_0x4d409d;_0x3cb946++){var _0x311541=events[_0x3cb946];var _0xe7d0ad=createListener(_0xefbe('0x5')+_0x311541,_0x534f45);FaxAccountEvents['on'](_0x311541,_0xe7d0ad);}};
\ No newline at end of file
index 2148f86..e02c5b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x2f0553,_0x74517c){var _0x34c4a1=function(_0x4aff4c){while(--_0x4aff4c){_0x2f0553['push'](_0x2f0553['shift']());}};_0x34c4a1(++_0x74517c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x4980e3,_0x50746c){var _0x469ab9=function(_0xd25a01){while(--_0xd25a01){_0x4980e3['push'](_0x4980e3['shift']());}};_0x469ab9(++_0x50746c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index 4a1152b..be88bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f9=['sequelize','exports','INTEGER','STRING'];(function(_0x5734e1,_0x3e1d75){var _0x22c784=function(_0x4fe1eb){while(--_0x4fe1eb){_0x5734e1['push'](_0x5734e1['shift']());}};_0x22c784(++_0x3e1d75);}(_0x97f9,0x1d8));var _0x997f=function(_0x19eabd,_0xead8e8){_0x19eabd=_0x19eabd-0x0;var _0x254c99=_0x97f9[_0x19eabd];return _0x254c99;};'use strict';var Sequelize=require(_0x997f('0x0'));module[_0x997f('0x1')]={'priority':{'type':Sequelize[_0x997f('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x997f('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x997f('0x3')]},'interval':{'type':Sequelize[_0x997f('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xf9cc=['*,*,*,*','exports','INTEGER','noop','TEXT','STRING'];(function(_0x5ef35e,_0x329db7){var _0x4cdc0c=function(_0x20bda0){while(--_0x20bda0){_0x5ef35e['push'](_0x5ef35e['shift']());}};_0x4cdc0c(++_0x329db7);}(_0xf9cc,0x1bd));var _0xcf9c=function(_0x5b6ef4,_0x523eec){_0x5b6ef4=_0x5b6ef4-0x0;var _0x4c77b6=_0xf9cc[_0x5b6ef4];return _0x4c77b6;};'use strict';var Sequelize=require('sequelize');module[_0xcf9c('0x0')]={'priority':{'type':Sequelize[_0xcf9c('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcf9c('0x2')},'appdata':{'type':Sequelize[_0xcf9c('0x3')]()},'description':{'type':Sequelize[_0xcf9c('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xcf9c('0x5')}};
\ No newline at end of file
index 7359aef..e4e0216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9743=['rawAttributes','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','send','index','FaxApplication','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','show','params'];(function(_0x36b312,_0x368a2d){var _0x19ad95=function(_0x43a624){while(--_0x43a624){_0x36b312['push'](_0x36b312['shift']());}};_0x19ad95(++_0x368a2d);}(_0x9743,0xe0));var _0x3974=function(_0x16939d,_0x1a4dec){_0x16939d=_0x16939d-0x0;var _0x198866=_0x9743[_0x16939d];return _0x198866;};'use strict';var emlformat=require(_0x3974('0x0'));var rimraf=require(_0x3974('0x1'));var zipdir=require(_0x3974('0x2'));var jsonpatch=require(_0x3974('0x3'));var rp=require(_0x3974('0x4'));var moment=require(_0x3974('0x5'));var BPromise=require(_0x3974('0x6'));var Mustache=require(_0x3974('0x7'));var util=require('util');var path=require(_0x3974('0x8'));var sox=require(_0x3974('0x9'));var csv=require(_0x3974('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3974('0xb'));var _=require(_0x3974('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x3974('0xd'));var deskjs=require(_0x3974('0xe'));var toCsv=require(_0x3974('0xa'));var querystring=require(_0x3974('0xf'));var Papa=require(_0x3974('0x10'));var Redis=require(_0x3974('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3974('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3974('0x13'))(_0x3974('0x14'));var utils=require('../../config/utils');var config=require(_0x3974('0x15'));var licenseUtil=require(_0x3974('0x16'));var db=require(_0x3974('0x17'))['db'];function respondWithStatusCode(_0x268634,_0x2540db){_0x2540db=_0x2540db||0xcc;return function(_0x7fd8cf){if(_0x7fd8cf){return _0x268634[_0x3974('0x18')](_0x2540db);}return _0x268634[_0x3974('0x19')](_0x2540db)[_0x3974('0x1a')]();};}function respondWithResult(_0x5c334c,_0x3fcfb2){_0x3fcfb2=_0x3fcfb2||0xc8;return function(_0x1746b9){if(_0x1746b9){return _0x5c334c[_0x3974('0x19')](_0x3fcfb2)[_0x3974('0x1b')](_0x1746b9);}};}function respondWithFilteredResult(_0x38e6f4,_0x3dbc5e){return function(_0x1d1d2e){if(_0x1d1d2e){var _0x1fd6fb=typeof _0x3dbc5e[_0x3974('0x1c')]===_0x3974('0x1d')&&typeof _0x3dbc5e[_0x3974('0x1e')]===_0x3974('0x1d');var _0x1b6675=_0x1d1d2e[_0x3974('0x1f')];var _0x4a44f6=_0x1fd6fb?0x0:_0x3dbc5e[_0x3974('0x1c')];var _0x178d45=_0x1fd6fb?_0x1d1d2e[_0x3974('0x1f')]:_0x3dbc5e[_0x3974('0x1c')]+_0x3dbc5e[_0x3974('0x1e')];var _0x19ba28;if(_0x178d45>=_0x1b6675){_0x178d45=_0x1b6675;_0x19ba28=0xc8;}else{_0x19ba28=0xce;}_0x38e6f4[_0x3974('0x19')](_0x19ba28);return _0x38e6f4['set']('Content-Range',_0x4a44f6+'-'+_0x178d45+'/'+_0x1b6675)[_0x3974('0x1b')](_0x1d1d2e);}return null;};}function patchUpdates(_0x3e0b0e){return function(_0x5938a2){try{jsonpatch[_0x3974('0x20')](_0x5938a2,_0x3e0b0e,!![]);}catch(_0x43a5a1){return BPromise[_0x3974('0x21')](_0x43a5a1);}return _0x5938a2[_0x3974('0x22')]();};}function saveUpdates(_0x2f0a68,_0x5919a0){return function(_0x17a042){if(_0x17a042){return _0x17a042[_0x3974('0x23')](_0x2f0a68)[_0x3974('0x24')](function(_0x3a8533){return _0x3a8533;});}return null;};}function removeEntity(_0x4446b3,_0x193318){return function(_0x158f00){if(_0x158f00){return _0x158f00[_0x3974('0x25')]()[_0x3974('0x24')](function(){_0x4446b3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a4458,_0x457df2){return function(_0x1c8ae2){if(!_0x1c8ae2){_0x5a4458['sendStatus'](0x194);}return _0x1c8ae2;};}function handleError(_0x459295,_0x45a09e){_0x45a09e=_0x45a09e||0x1f4;return function(_0x188461){logger[_0x3974('0x26')](_0x188461[_0x3974('0x27')]);if(_0x188461[_0x3974('0x28')]){delete _0x188461[_0x3974('0x28')];}_0x459295['status'](_0x45a09e)[_0x3974('0x29')](_0x188461);};}exports[_0x3974('0x2a')]=function(_0x1ddc95,_0xf91d62){var _0x3a62b8={},_0x511a14={},_0xcf5444={'count':0x0,'rows':[]};var _0x363821=_['map'](db[_0x3974('0x2b')]['rawAttributes'],function(_0x3e0c1e){return{'name':_0x3e0c1e[_0x3974('0x2c')],'type':_0x3e0c1e[_0x3974('0x2d')][_0x3974('0x2e')]};});_0x511a14[_0x3974('0x2f')]=_[_0x3974('0x30')](_0x363821,'name');_0x511a14[_0x3974('0x31')]=_[_0x3974('0x32')](_0x1ddc95['query']);_0x511a14[_0x3974('0x33')]=_[_0x3974('0x34')](_0x511a14['model'],_0x511a14[_0x3974('0x31')]);_0x3a62b8[_0x3974('0x35')]=_['intersection'](_0x511a14[_0x3974('0x2f')],qs[_0x3974('0x36')](_0x1ddc95[_0x3974('0x31')][_0x3974('0x36')]));_0x3a62b8[_0x3974('0x35')]=_0x3a62b8['attributes']['length']?_0x3a62b8[_0x3974('0x35')]:_0x511a14[_0x3974('0x2f')];if(!_0x1ddc95[_0x3974('0x31')][_0x3974('0x37')](_0x3974('0x38'))){_0x3a62b8['limit']=qs[_0x3974('0x1e')](_0x1ddc95[_0x3974('0x31')][_0x3974('0x1e')]);_0x3a62b8['offset']=qs[_0x3974('0x1c')](_0x1ddc95[_0x3974('0x31')][_0x3974('0x1c')]);}_0x3a62b8['order']=qs[_0x3974('0x39')](_0x1ddc95['query']['sort']);_0x3a62b8['where']=qs[_0x3974('0x33')](_[_0x3974('0x3a')](_0x1ddc95['query'],_0x511a14[_0x3974('0x33')]),_0x363821);if(_0x1ddc95[_0x3974('0x31')][_0x3974('0x3b')]){_0x3a62b8[_0x3974('0x3c')]=_['merge'](_0x3a62b8[_0x3974('0x3c')],{'$or':_[_0x3974('0x30')](_0x363821,function(_0x357b02){if(_0x357b02[_0x3974('0x2d')]!=='VIRTUAL'){var _0xbd6f9b={};_0xbd6f9b[_0x357b02[_0x3974('0x28')]]={'$like':'%'+_0x1ddc95[_0x3974('0x31')][_0x3974('0x3b')]+'%'};return _0xbd6f9b;}})});}_0x3a62b8=_[_0x3974('0x3d')]({},_0x3a62b8,_0x1ddc95[_0x3974('0x3e')]);var _0x11793b={'where':_0x3a62b8[_0x3974('0x3c')]};return db[_0x3974('0x2b')][_0x3974('0x1f')](_0x11793b)[_0x3974('0x24')](function(_0x4f361e){_0xcf5444[_0x3974('0x1f')]=_0x4f361e;if(_0x1ddc95[_0x3974('0x31')][_0x3974('0x3f')]){_0x3a62b8[_0x3974('0x40')]=[{'all':!![]}];}return db['FaxApplication'][_0x3974('0x41')](_0x3a62b8);})[_0x3974('0x24')](function(_0xcd0467){_0xcf5444['rows']=_0xcd0467;return _0xcf5444;})[_0x3974('0x24')](respondWithFilteredResult(_0xf91d62,_0x3a62b8))['catch'](handleError(_0xf91d62,null));};exports[_0x3974('0x42')]=function(_0x23d7d3,_0x819aa7){var _0x3fd103={'raw':!![],'where':{'id':_0x23d7d3[_0x3974('0x43')]['id']}},_0x4950ce={};_0x4950ce[_0x3974('0x2f')]=_[_0x3974('0x32')](db['FaxApplication'][_0x3974('0x44')]);_0x4950ce[_0x3974('0x31')]=_[_0x3974('0x32')](_0x23d7d3['query']);_0x4950ce[_0x3974('0x33')]=_[_0x3974('0x34')](_0x4950ce['model'],_0x4950ce[_0x3974('0x31')]);_0x3fd103[_0x3974('0x35')]=_[_0x3974('0x34')](_0x4950ce[_0x3974('0x2f')],qs[_0x3974('0x36')](_0x23d7d3[_0x3974('0x31')][_0x3974('0x36')]));_0x3fd103[_0x3974('0x35')]=_0x3fd103[_0x3974('0x35')]['length']?_0x3fd103[_0x3974('0x35')]:_0x4950ce[_0x3974('0x2f')];if(_0x23d7d3[_0x3974('0x31')]['includeAll']){_0x3fd103[_0x3974('0x40')]=[{'all':!![]}];}_0x3fd103=_['merge']({},_0x3fd103,_0x23d7d3[_0x3974('0x3e')]);return db[_0x3974('0x2b')][_0x3974('0x45')](_0x3fd103)['then'](handleEntityNotFound(_0x819aa7,null))[_0x3974('0x24')](respondWithResult(_0x819aa7,null))['catch'](handleError(_0x819aa7,null));};exports[_0x3974('0x46')]=function(_0x48d612,_0x5a701d){return db[_0x3974('0x2b')][_0x3974('0x46')](_0x48d612[_0x3974('0x47')],{})[_0x3974('0x24')](respondWithResult(_0x5a701d,0xc9))['catch'](handleError(_0x5a701d,null));};exports['update']=function(_0x38389a,_0x5aefea){if(_0x38389a[_0x3974('0x47')]['id']){delete _0x38389a['body']['id'];}return db[_0x3974('0x2b')]['find']({'where':{'id':_0x38389a['params']['id']}})['then'](handleEntityNotFound(_0x5aefea,null))[_0x3974('0x24')](saveUpdates(_0x38389a['body'],null))['then'](respondWithResult(_0x5aefea,null))[_0x3974('0x48')](handleError(_0x5aefea,null));};exports[_0x3974('0x25')]=function(_0xbada32,_0x1cd13a){return db['FaxApplication'][_0x3974('0x45')]({'where':{'id':_0xbada32[_0x3974('0x43')]['id']}})[_0x3974('0x24')](handleEntityNotFound(_0x1cd13a,null))['then'](removeEntity(_0x1cd13a,null))[_0x3974('0x48')](handleError(_0x1cd13a,null));};
\ No newline at end of file
+var _0x7411=['length','hasOwnProperty','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','params','keys','FaxApplication','rawAttributes','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','fieldName','type','query','filters','intersection','model','fields','attributes'];(function(_0x22d655,_0x3941dd){var _0x257739=function(_0x98136e){while(--_0x98136e){_0x22d655['push'](_0x22d655['shift']());}};_0x257739(++_0x3941dd);}(_0x7411,0x1dc));var _0x1741=function(_0x2425e7,_0x5d36cb){_0x2425e7=_0x2425e7-0x0;var _0x2a8ee5=_0x7411[_0x2425e7];return _0x2a8ee5;};'use strict';var emlformat=require(_0x1741('0x0'));var rimraf=require(_0x1741('0x1'));var zipdir=require(_0x1741('0x2'));var jsonpatch=require(_0x1741('0x3'));var rp=require(_0x1741('0x4'));var moment=require(_0x1741('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1741('0x6'));var util=require(_0x1741('0x7'));var path=require(_0x1741('0x8'));var sox=require('sox');var csv=require(_0x1741('0x9'));var ejs=require(_0x1741('0xa'));var fs=require('fs');var fs_extra=require(_0x1741('0xb'));var _=require(_0x1741('0xc'));var squel=require(_0x1741('0xd'));var crypto=require(_0x1741('0xe'));var jsforce=require(_0x1741('0xf'));var deskjs=require(_0x1741('0x10'));var toCsv=require(_0x1741('0x9'));var querystring=require(_0x1741('0x11'));var Papa=require(_0x1741('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1741('0x13'));var as=require(_0x1741('0x14'));var hardwareService=require(_0x1741('0x15'));var logger=require(_0x1741('0x16'))(_0x1741('0x17'));var utils=require(_0x1741('0x18'));var config=require(_0x1741('0x19'));var licenseUtil=require(_0x1741('0x1a'));var db=require(_0x1741('0x1b'))['db'];function respondWithStatusCode(_0x2b5aa1,_0x2a265b){_0x2a265b=_0x2a265b||0xcc;return function(_0x20db12){if(_0x20db12){return _0x2b5aa1[_0x1741('0x1c')](_0x2a265b);}return _0x2b5aa1[_0x1741('0x1d')](_0x2a265b)['end']();};}function respondWithResult(_0x43fe4d,_0x2bced6){_0x2bced6=_0x2bced6||0xc8;return function(_0x41d995){if(_0x41d995){return _0x43fe4d[_0x1741('0x1d')](_0x2bced6)['json'](_0x41d995);}};}function respondWithFilteredResult(_0x2ca667,_0x562aa0){return function(_0xd9258d){if(_0xd9258d){var _0x4df0d6=typeof _0x562aa0[_0x1741('0x1e')]==='undefined'&&typeof _0x562aa0[_0x1741('0x1f')]===_0x1741('0x20');var _0x5e4c7a=_0xd9258d[_0x1741('0x21')];var _0x235746=_0x4df0d6?0x0:_0x562aa0[_0x1741('0x1e')];var _0x501975=_0x4df0d6?_0xd9258d[_0x1741('0x21')]:_0x562aa0[_0x1741('0x1e')]+_0x562aa0['limit'];var _0x1c2834;if(_0x501975>=_0x5e4c7a){_0x501975=_0x5e4c7a;_0x1c2834=0xc8;}else{_0x1c2834=0xce;}_0x2ca667['status'](_0x1c2834);return _0x2ca667[_0x1741('0x22')](_0x1741('0x23'),_0x235746+'-'+_0x501975+'/'+_0x5e4c7a)[_0x1741('0x24')](_0xd9258d);}return null;};}function patchUpdates(_0x4e7321){return function(_0x188b16){try{jsonpatch[_0x1741('0x25')](_0x188b16,_0x4e7321,!![]);}catch(_0x3ee27b){return BPromise[_0x1741('0x26')](_0x3ee27b);}return _0x188b16[_0x1741('0x27')]();};}function saveUpdates(_0x39b686,_0x2f1e3d){return function(_0x35353d){if(_0x35353d){return _0x35353d[_0x1741('0x28')](_0x39b686)[_0x1741('0x29')](function(_0x7569dd){return _0x7569dd;});}return null;};}function removeEntity(_0x5477b4,_0x4c4c81){return function(_0x45b8c7){if(_0x45b8c7){return _0x45b8c7[_0x1741('0x2a')]()[_0x1741('0x29')](function(){_0x5477b4[_0x1741('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26fc45,_0x2bd7d6){return function(_0x458d2a){if(!_0x458d2a){_0x26fc45[_0x1741('0x1c')](0x194);}return _0x458d2a;};}function handleError(_0x23cdcd,_0x4aab4d){_0x4aab4d=_0x4aab4d||0x1f4;return function(_0x4bb8c9){logger[_0x1741('0x2b')](_0x4bb8c9['stack']);if(_0x4bb8c9[_0x1741('0x2c')]){delete _0x4bb8c9[_0x1741('0x2c')];}_0x23cdcd[_0x1741('0x1d')](_0x4aab4d)[_0x1741('0x2d')](_0x4bb8c9);};}exports[_0x1741('0x2e')]=function(_0x1ea62b,_0x5f4f75){var _0x555082={},_0x5b040d={},_0x35a690={'count':0x0,'rows':[]};var _0x74ab0b=_[_0x1741('0x2f')](db['FaxApplication']['rawAttributes'],function(_0x1b71f1){return{'name':_0x1b71f1[_0x1741('0x30')],'type':_0x1b71f1[_0x1741('0x31')]['key']};});_0x5b040d['model']=_[_0x1741('0x2f')](_0x74ab0b,_0x1741('0x2c'));_0x5b040d['query']=_['keys'](_0x1ea62b[_0x1741('0x32')]);_0x5b040d[_0x1741('0x33')]=_[_0x1741('0x34')](_0x5b040d[_0x1741('0x35')],_0x5b040d[_0x1741('0x32')]);_0x555082['attributes']=_['intersection'](_0x5b040d[_0x1741('0x35')],qs[_0x1741('0x36')](_0x1ea62b['query'][_0x1741('0x36')]));_0x555082[_0x1741('0x37')]=_0x555082[_0x1741('0x37')][_0x1741('0x38')]?_0x555082[_0x1741('0x37')]:_0x5b040d['model'];if(!_0x1ea62b[_0x1741('0x32')][_0x1741('0x39')]('nolimit')){_0x555082[_0x1741('0x1f')]=qs[_0x1741('0x1f')](_0x1ea62b[_0x1741('0x32')][_0x1741('0x1f')]);_0x555082[_0x1741('0x1e')]=qs[_0x1741('0x1e')](_0x1ea62b[_0x1741('0x32')][_0x1741('0x1e')]);}_0x555082['order']=qs['sort'](_0x1ea62b[_0x1741('0x32')][_0x1741('0x3a')]);_0x555082['where']=qs['filters'](_[_0x1741('0x3b')](_0x1ea62b['query'],_0x5b040d[_0x1741('0x33')]),_0x74ab0b);if(_0x1ea62b[_0x1741('0x32')][_0x1741('0x3c')]){_0x555082[_0x1741('0x3d')]=_[_0x1741('0x3e')](_0x555082[_0x1741('0x3d')],{'$or':_[_0x1741('0x2f')](_0x74ab0b,function(_0x279861){if(_0x279861[_0x1741('0x31')]!==_0x1741('0x3f')){var _0x1d4234={};_0x1d4234[_0x279861[_0x1741('0x2c')]]={'$like':'%'+_0x1ea62b[_0x1741('0x32')][_0x1741('0x3c')]+'%'};return _0x1d4234;}})});}_0x555082=_[_0x1741('0x3e')]({},_0x555082,_0x1ea62b[_0x1741('0x40')]);var _0x1c25fa={'where':_0x555082['where']};return db['FaxApplication'][_0x1741('0x21')](_0x1c25fa)[_0x1741('0x29')](function(_0x51eb18){_0x35a690[_0x1741('0x21')]=_0x51eb18;if(_0x1ea62b['query'][_0x1741('0x41')]){_0x555082[_0x1741('0x42')]=[{'all':!![]}];}return db['FaxApplication']['findAll'](_0x555082);})[_0x1741('0x29')](function(_0x59e253){_0x35a690[_0x1741('0x43')]=_0x59e253;return _0x35a690;})[_0x1741('0x29')](respondWithFilteredResult(_0x5f4f75,_0x555082))[_0x1741('0x44')](handleError(_0x5f4f75,null));};exports['show']=function(_0x245b24,_0x14bd86){var _0x50fc7f={'raw':!![],'where':{'id':_0x245b24[_0x1741('0x45')]['id']}},_0x397e31={};_0x397e31[_0x1741('0x35')]=_[_0x1741('0x46')](db[_0x1741('0x47')][_0x1741('0x48')]);_0x397e31[_0x1741('0x32')]=_[_0x1741('0x46')](_0x245b24[_0x1741('0x32')]);_0x397e31[_0x1741('0x33')]=_[_0x1741('0x34')](_0x397e31[_0x1741('0x35')],_0x397e31[_0x1741('0x32')]);_0x50fc7f[_0x1741('0x37')]=_[_0x1741('0x34')](_0x397e31[_0x1741('0x35')],qs['fields'](_0x245b24[_0x1741('0x32')][_0x1741('0x36')]));_0x50fc7f['attributes']=_0x50fc7f['attributes'][_0x1741('0x38')]?_0x50fc7f[_0x1741('0x37')]:_0x397e31[_0x1741('0x35')];if(_0x245b24[_0x1741('0x32')][_0x1741('0x41')]){_0x50fc7f['include']=[{'all':!![]}];}_0x50fc7f=_[_0x1741('0x3e')]({},_0x50fc7f,_0x245b24[_0x1741('0x40')]);return db[_0x1741('0x47')]['find'](_0x50fc7f)[_0x1741('0x29')](handleEntityNotFound(_0x14bd86,null))[_0x1741('0x29')](respondWithResult(_0x14bd86,null))[_0x1741('0x44')](handleError(_0x14bd86,null));};exports[_0x1741('0x49')]=function(_0x2bb72b,_0x3e787c){return db[_0x1741('0x47')][_0x1741('0x49')](_0x2bb72b[_0x1741('0x4a')],{})[_0x1741('0x29')](respondWithResult(_0x3e787c,0xc9))['catch'](handleError(_0x3e787c,null));};exports[_0x1741('0x28')]=function(_0x33e95e,_0x2535af){if(_0x33e95e[_0x1741('0x4a')]['id']){delete _0x33e95e[_0x1741('0x4a')]['id'];}return db[_0x1741('0x47')][_0x1741('0x4b')]({'where':{'id':_0x33e95e[_0x1741('0x45')]['id']}})[_0x1741('0x29')](handleEntityNotFound(_0x2535af,null))['then'](saveUpdates(_0x33e95e[_0x1741('0x4a')],null))[_0x1741('0x29')](respondWithResult(_0x2535af,null))[_0x1741('0x44')](handleError(_0x2535af,null));};exports[_0x1741('0x2a')]=function(_0x1b3493,_0x1fb4fe){return db[_0x1741('0x47')][_0x1741('0x4b')]({'where':{'id':_0x1b3493[_0x1741('0x45')]['id']}})[_0x1741('0x29')](handleEntityNotFound(_0x1fb4fe,null))[_0x1741('0x29')](removeEntity(_0x1fb4fe,null))['catch'](handleError(_0x1fb4fe,null));};
\ No newline at end of file
index ac7f537..fee3001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb45d=['exports','FaxApplication','fax_applications','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxApplication.attributes'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0xb45d,0x115));var _0xdb45=function(_0x3cb30b,_0x504b3e){_0x3cb30b=_0x3cb30b-0x0;var _0x2ca717=_0xb45d[_0x3cb30b];return _0x2ca717;};'use strict';var _=require('lodash');var util=require(_0xdb45('0x0'));var logger=require(_0xdb45('0x1'))(_0xdb45('0x2'));var moment=require(_0xdb45('0x3'));var BPromise=require(_0xdb45('0x4'));var rp=require(_0xdb45('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb45('0x6'));var config=require(_0xdb45('0x7'));var attributes=require(_0xdb45('0x8'));module[_0xdb45('0x9')]=function(_0x384d87,_0x2c3e5f){return _0x384d87['define'](_0xdb45('0xa'),attributes,{'tableName':_0xdb45('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xdb45('0xc')});};
\ No newline at end of file
+var _0x19e0=['request-promise','path','rimraf','./faxApplication.attributes','exports','define','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird'];(function(_0x2e1a91,_0x249ff2){var _0x3972d0=function(_0xa42d7){while(--_0xa42d7){_0x2e1a91['push'](_0x2e1a91['shift']());}};_0x3972d0(++_0x249ff2);}(_0x19e0,0x113));var _0x019e=function(_0x23c02b,_0x411b4d){_0x23c02b=_0x23c02b-0x0;var _0x25efc5=_0x19e0[_0x23c02b];return _0x25efc5;};'use strict';var _=require(_0x019e('0x0'));var util=require('util');var logger=require(_0x019e('0x1'))(_0x019e('0x2'));var moment=require(_0x019e('0x3'));var BPromise=require(_0x019e('0x4'));var rp=require(_0x019e('0x5'));var fs=require('fs');var path=require(_0x019e('0x6'));var rimraf=require(_0x019e('0x7'));var config=require('../../config/environment');var attributes=require(_0x019e('0x8'));module[_0x019e('0x9')]=function(_0x3024c4,_0x377f8a){return _0x3024c4[_0x019e('0xa')]('FaxApplication',attributes,{'tableName':_0x019e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x019e('0xc'),'collate':_0x019e('0xd')});};
\ No newline at end of file
index d0a618a..35e32fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f96=['options','raw','where','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','FaxApplication,\x20%s,\x20%s','message','catch','UpdateFaxApplication','FaxApplication'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x5f96,0x75));var _0x65f9=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x5f96[_0x1beef3];return _0x5af964;};'use strict';var _=require(_0x65f9('0x0'));var util=require(_0x65f9('0x1'));var moment=require(_0x65f9('0x2'));var BPromise=require(_0x65f9('0x3'));var rs=require(_0x65f9('0x4'));var fs=require('fs');var Redis=require(_0x65f9('0x5'));var db=require(_0x65f9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x65f9('0x7'))('rpc');var config=require(_0x65f9('0x8'));var jayson=require(_0x65f9('0x9'));var client=jayson['client'][_0x65f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fa83d,_0x4fa88e,_0x169172){return new BPromise(function(_0x1d5152,_0x1df611){return client[_0x65f9('0xb')](_0x2fa83d,_0x169172)[_0x65f9('0xc')](function(_0x6d872d){logger['info']('FaxApplication,\x20%s,\x20%s',_0x4fa88e,_0x65f9('0xd'));logger[_0x65f9('0xe')](_0x65f9('0xf'),_0x4fa88e,_0x65f9('0xd'),JSON['stringify'](_0x6d872d));if(_0x6d872d[_0x65f9('0x10')]){if(_0x6d872d['error'][_0x65f9('0x11')]===0x1f4){logger['error'](_0x65f9('0x12'),_0x4fa88e,_0x6d872d[_0x65f9('0x10')]['message']);return _0x1df611(_0x6d872d[_0x65f9('0x10')][_0x65f9('0x13')]);}logger[_0x65f9('0x10')]('FaxApplication,\x20%s,\x20%s',_0x4fa88e,_0x6d872d[_0x65f9('0x10')]['message']);return _0x1d5152(_0x6d872d[_0x65f9('0x10')][_0x65f9('0x13')]);}else{logger['info'](_0x65f9('0x12'),_0x4fa88e,_0x65f9('0xd'));_0x1d5152(_0x6d872d['result']['message']);}})[_0x65f9('0x14')](function(_0x4694d3){logger[_0x65f9('0x10')](_0x65f9('0x12'),_0x4fa88e,_0x4694d3);_0x1df611(_0x4694d3);});});}exports[_0x65f9('0x15')]=function(_0xcd598){var _0x4151b3=this;return new Promise(function(_0x58639c,_0x291041){return db[_0x65f9('0x16')]['update'](_0xcd598['body'],{'raw':_0xcd598[_0x65f9('0x17')]?_0xcd598[_0x65f9('0x17')][_0x65f9('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcd598['options']?_0xcd598['options'][_0x65f9('0x19')]||null:null,'attributes':_0xcd598[_0x65f9('0x17')]?_0xcd598[_0x65f9('0x17')]['attributes']||null:null,'limit':_0xcd598[_0x65f9('0x17')]?_0xcd598[_0x65f9('0x17')][_0x65f9('0x1a')]||null:null})[_0x65f9('0xc')](function(_0x10167c){logger['info'](_0x65f9('0x15'),_0xcd598);logger[_0x65f9('0xe')](_0x65f9('0x15'),_0xcd598,JSON[_0x65f9('0x1b')](_0x10167c));_0x58639c(_0x10167c);})['catch'](function(_0x443b59){logger[_0x65f9('0x10')]('UpdateFaxApplication',_0x443b59[_0x65f9('0x13')],_0xcd598);_0x291041(_0x4151b3[_0x65f9('0x10')](0x1f4,_0x443b59['message']));});});};
\ No newline at end of file
+var _0x42b1=['where','attributes','limit','info','UpdateFaxApplication','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','FaxApplication,\x20%s,\x20%s','message','result','catch','update','body','options'];(function(_0x40bc1e,_0x113a73){var _0x545efa=function(_0x5346ad){while(--_0x5346ad){_0x40bc1e['push'](_0x40bc1e['shift']());}};_0x545efa(++_0x113a73);}(_0x42b1,0x164));var _0x142b=function(_0x46f3e9,_0x55631d){_0x46f3e9=_0x46f3e9-0x0;var _0x316982=_0x42b1[_0x46f3e9];return _0x316982;};'use strict';var _=require('lodash');var util=require(_0x142b('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x142b('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x142b('0x2'))['db'];var utils=require(_0x142b('0x3'));var logger=require(_0x142b('0x4'))('rpc');var config=require(_0x142b('0x5'));var jayson=require(_0x142b('0x6'));var client=jayson[_0x142b('0x7')][_0x142b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x40f8aa,_0xc27f8d,_0x11bd23){return new BPromise(function(_0x5931ff,_0x3ce897){return client['request'](_0x40f8aa,_0x11bd23)[_0x142b('0x9')](function(_0x364132){logger['info']('FaxApplication,\x20%s,\x20%s',_0xc27f8d,_0x142b('0xa'));logger[_0x142b('0xb')](_0x142b('0xc'),_0xc27f8d,_0x142b('0xa'),JSON[_0x142b('0xd')](_0x364132));if(_0x364132['error']){if(_0x364132['error']['code']===0x1f4){logger[_0x142b('0xe')](_0x142b('0xf'),_0xc27f8d,_0x364132[_0x142b('0xe')][_0x142b('0x10')]);return _0x3ce897(_0x364132[_0x142b('0xe')][_0x142b('0x10')]);}logger[_0x142b('0xe')]('FaxApplication,\x20%s,\x20%s',_0xc27f8d,_0x364132['error']['message']);return _0x5931ff(_0x364132[_0x142b('0xe')][_0x142b('0x10')]);}else{logger['info'](_0x142b('0xf'),_0xc27f8d,'request\x20sent');_0x5931ff(_0x364132[_0x142b('0x11')][_0x142b('0x10')]);}})[_0x142b('0x12')](function(_0x58eb1d){logger[_0x142b('0xe')](_0x142b('0xf'),_0xc27f8d,_0x58eb1d);_0x3ce897(_0x58eb1d);});});}exports['UpdateFaxApplication']=function(_0x2b41de){var _0x4e2d70=this;return new Promise(function(_0x365e6c,_0x289e22){return db['FaxApplication'][_0x142b('0x13')](_0x2b41de[_0x142b('0x14')],{'raw':_0x2b41de[_0x142b('0x15')]?_0x2b41de[_0x142b('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b41de['options']?_0x2b41de[_0x142b('0x15')][_0x142b('0x16')]||null:null,'attributes':_0x2b41de[_0x142b('0x15')]?_0x2b41de['options'][_0x142b('0x17')]||null:null,'limit':_0x2b41de[_0x142b('0x15')]?_0x2b41de[_0x142b('0x15')][_0x142b('0x18')]||null:null})[_0x142b('0x9')](function(_0x49d697){logger[_0x142b('0x19')](_0x142b('0x1a'),_0x2b41de);logger[_0x142b('0xb')](_0x142b('0x1a'),_0x2b41de,JSON[_0x142b('0xd')](_0x49d697));_0x365e6c(_0x49d697);})[_0x142b('0x12')](function(_0x2b1bf3){logger[_0x142b('0xe')]('UpdateFaxApplication',_0x2b1bf3[_0x142b('0x10')],_0x2b41de);_0x289e22(_0x4e2d70['error'](0x1f4,_0x2b1bf3['message']));});});};
\ No newline at end of file
index 1cb8830..ebd0fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7d1=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x21e79a,_0x5a7990){var _0x506c02=function(_0x566c95){while(--_0x566c95){_0x21e79a['push'](_0x21e79a['shift']());}};_0x506c02(++_0x5a7990);}(_0xd7d1,0x1b3));var _0x1d7d=function(_0x6a84f3,_0x42c864){_0x6a84f3=_0x6a84f3-0x0;var _0x50da07=_0xd7d1[_0x6a84f3];return _0x50da07;};'use strict';var multer=require(_0x1d7d('0x0'));var util=require(_0x1d7d('0x1'));var path=require(_0x1d7d('0x2'));var timeout=require(_0x1d7d('0x3'));var express=require(_0x1d7d('0x4'));var router=express[_0x1d7d('0x5')]();var fs_extra=require(_0x1d7d('0x6'));var auth=require(_0x1d7d('0x7'));var interaction=require(_0x1d7d('0x8'));var config=require(_0x1d7d('0x9'));var controller=require(_0x1d7d('0xa'));router[_0x1d7d('0xb')]('/',auth[_0x1d7d('0xc')](),controller['index']);router[_0x1d7d('0xb')](_0x1d7d('0xd'),auth[_0x1d7d('0xc')](),controller[_0x1d7d('0xe')]);router[_0x1d7d('0xf')]('/',auth[_0x1d7d('0xc')](),controller[_0x1d7d('0x10')]);router[_0x1d7d('0x11')](_0x1d7d('0xd'),auth[_0x1d7d('0xc')](),controller[_0x1d7d('0x12')]);router['delete'](_0x1d7d('0xd'),auth['isAuthenticated'](),controller[_0x1d7d('0x13')]);module[_0x1d7d('0x14')]=router;
\ No newline at end of file
+var _0x0972=['isAuthenticated','index','show','post','create','/:id','update','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get'];(function(_0x45e1a1,_0x5abace){var _0x41ae31=function(_0x580fb8){while(--_0x580fb8){_0x45e1a1['push'](_0x45e1a1['shift']());}};_0x41ae31(++_0x5abace);}(_0x0972,0x64));var _0x2097=function(_0x5d0e9b,_0x526412){_0x5d0e9b=_0x5d0e9b-0x0;var _0x1f5f84=_0x0972[_0x5d0e9b];return _0x1f5f84;};'use strict';var multer=require('multer');var util=require(_0x2097('0x0'));var path=require('path');var timeout=require(_0x2097('0x1'));var express=require('express');var router=express[_0x2097('0x2')]();var fs_extra=require(_0x2097('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2097('0x4'));var config=require(_0x2097('0x5'));var controller=require(_0x2097('0x6'));router[_0x2097('0x7')]('/',auth[_0x2097('0x8')](),controller[_0x2097('0x9')]);router[_0x2097('0x7')]('/:id',auth[_0x2097('0x8')](),controller[_0x2097('0xa')]);router[_0x2097('0xb')]('/',auth[_0x2097('0x8')](),controller[_0x2097('0xc')]);router['put'](_0x2097('0xd'),auth[_0x2097('0x8')](),controller[_0x2097('0xe')]);router[_0x2097('0xf')](_0x2097('0xd'),auth[_0x2097('0x8')](),controller[_0x2097('0x10')]);module[_0x2097('0x11')]=router;
\ No newline at end of file
index 9b0e9cc..a5b1174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa0=['BOOLEAN','STRING','DATE','out','sequelize','exports'];(function(_0x2807c1,_0x5e8734){var _0x1d8e0e=function(_0x5dea1e){while(--_0x5dea1e){_0x2807c1['push'](_0x2807c1['shift']());}};_0x1d8e0e(++_0x5e8734);}(_0xdfa0,0xc4));var _0x0dfa=function(_0x2dd88a,_0x4cf987){_0x2dd88a=_0x2dd88a-0x0;var _0x4c2567=_0xdfa0[_0x2dd88a];return _0x4c2567;};'use strict';var Sequelize=require(_0x0dfa('0x0'));module[_0x0dfa('0x1')]={'closed':{'type':Sequelize[_0x0dfa('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x0dfa('0x3')]},'secondDisposition':{'type':Sequelize[_0x0dfa('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x0dfa('0x3')]},'read1stAt':{'type':Sequelize[_0x0dfa('0x4')]},'fax':{'type':Sequelize[_0x0dfa('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x0dfa('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x0dfa('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xdffb=['DATE','STRING','ENUM','out','sequelize'];(function(_0x2ddcae,_0x466570){var _0x35762a=function(_0x941dfc){while(--_0x941dfc){_0x2ddcae['push'](_0x2ddcae['shift']());}};_0x35762a(++_0x466570);}(_0xdffb,0xa9));var _0xbdff=function(_0x57aec7,_0x16ba59){_0x57aec7=_0x57aec7-0x0;var _0x69365e=_0xdffb[_0x57aec7];return _0x69365e;};'use strict';var Sequelize=require(_0xbdff('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xbdff('0x1')]},'disposition':{'type':Sequelize[_0xbdff('0x2')]},'secondDisposition':{'type':Sequelize[_0xbdff('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0xbdff('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xbdff('0x3')]('in',_0xbdff('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xbdff('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xbdff('0x3')]('in',_0xbdff('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 6ae406c..2c3b130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39da=['it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','length','find','value','having','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','unreadMessages','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','groupBy','all','rows','FaxInteraction','includeAll','include','options','create','params','destroy','describe','FaxMessage','addMessage','ids','getMessages','findOne','nolimit','pick','FaxInteractionId','format','merge','findAll','addTags','setTags','omit','emit','removeTags','download','unix','join','root','tmp','server','files','attachments','transcript-%d-%s.zip','Attachment','get','mkdirSync','Messages','basename','existsSync','createReadStream','createWriteStream','resolve','log','err','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','Users','map','Tags','TagIds','push','catch','waiting','talking','total','closed','UserId','answered','unmanaged','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','field','color','tools_tags','select','u.id','u.fullname','ui.FaxInteractionId','from','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags'];(function(_0x3b81eb,_0x175f32){var _0x149491=function(_0x454753){while(--_0x454753){_0x3b81eb['push'](_0x3b81eb['shift']());}};_0x149491(++_0x175f32);}(_0x39da,0x169));var _0xa39d=function(_0x49ad30,_0x9d81a1){_0x49ad30=_0x49ad30-0x0;var _0x474e64=_0x39da[_0x49ad30];return _0x474e64;};'use strict';var emlformat=require(_0xa39d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa39d('0x1'));var jsonpatch=require(_0xa39d('0x2'));var rp=require('request-promise');var moment=require(_0xa39d('0x3'));var BPromise=require(_0xa39d('0x4'));var Mustache=require('mustache');var util=require(_0xa39d('0x5'));var path=require(_0xa39d('0x6'));var sox=require(_0xa39d('0x7'));var csv=require(_0xa39d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa39d('0x9'));var _=require('lodash');var squel=require(_0xa39d('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa39d('0xb'));var toCsv=require(_0xa39d('0x8'));var querystring=require('querystring');var Papa=require(_0xa39d('0xc'));var Redis=require(_0xa39d('0xd'));var authService=require(_0xa39d('0xe'));var qs=require(_0xa39d('0xf'));var as=require(_0xa39d('0x10'));var hardwareService=require(_0xa39d('0x11'));var logger=require(_0xa39d('0x12'))('api');var utils=require(_0xa39d('0x13'));var config=require(_0xa39d('0x14'));var licenseUtil=require(_0xa39d('0x15'));var db=require(_0xa39d('0x16'))['db'];config[_0xa39d('0x17')]=_[_0xa39d('0x18')](config[_0xa39d('0x17')],{'host':_0xa39d('0x19'),'port':0x18eb});var socket=require(_0xa39d('0x1a'))(new Redis(config[_0xa39d('0x17')]));require(_0xa39d('0x1b'))['register'](socket);function respondWithStatusCode(_0x456111,_0x2f5fd9){_0x2f5fd9=_0x2f5fd9||0xcc;return function(_0x27728f){if(_0x27728f){return _0x456111[_0xa39d('0x1c')](_0x2f5fd9);}return _0x456111['status'](_0x2f5fd9)[_0xa39d('0x1d')]();};}function respondWithResult(_0x2bd984,_0x5c6c54){_0x5c6c54=_0x5c6c54||0xc8;return function(_0x1c277b){if(_0x1c277b){return _0x2bd984[_0xa39d('0x1e')](_0x5c6c54)[_0xa39d('0x1f')](_0x1c277b);}};}function respondWithFilteredResult(_0x27fca4,_0x539f8f){return function(_0x4840b6){if(_0x4840b6){var _0x1ebcba=typeof _0x539f8f[_0xa39d('0x20')]===_0xa39d('0x21')&&typeof _0x539f8f[_0xa39d('0x22')]===_0xa39d('0x21');var _0x3e229d=_0x4840b6[_0xa39d('0x23')];var _0x26683d=_0x1ebcba?0x0:_0x539f8f[_0xa39d('0x20')];var _0x27b780=_0x1ebcba?_0x4840b6[_0xa39d('0x23')]:_0x539f8f[_0xa39d('0x20')]+_0x539f8f['limit'];var _0x14481d;if(_0x27b780>=_0x3e229d){_0x27b780=_0x3e229d;_0x14481d=0xc8;}else{_0x14481d=0xce;}_0x27fca4[_0xa39d('0x1e')](_0x14481d);return _0x27fca4['set'](_0xa39d('0x24'),_0x26683d+'-'+_0x27b780+'/'+_0x3e229d)[_0xa39d('0x1f')](_0x4840b6);}return null;};}function patchUpdates(_0x212867){return function(_0x35db67){try{jsonpatch[_0xa39d('0x25')](_0x35db67,_0x212867,!![]);}catch(_0x21b7fe){return BPromise[_0xa39d('0x26')](_0x21b7fe);}return _0x35db67[_0xa39d('0x27')]();};}function saveUpdates(_0x47f4b8,_0x5d56e2){return function(_0x1ecba5){if(_0x1ecba5){return _0x1ecba5[_0xa39d('0x28')](_0x47f4b8)[_0xa39d('0x29')](function(_0xeae563){return _0xeae563;});}return null;};}function removeEntity(_0x457ce1,_0x14a54f){return function(_0xbfba67){if(_0xbfba67){return _0xbfba67['destroy']()['then'](function(){_0x457ce1['status'](0xcc)[_0xa39d('0x1d')]();});}};}function handleEntityNotFound(_0x3fc808,_0x433e6d){return function(_0x4c6be9){if(!_0x4c6be9){_0x3fc808[_0xa39d('0x1c')](0x194);}return _0x4c6be9;};}function handleError(_0x1f61d0,_0x131c1e){_0x131c1e=_0x131c1e||0x1f4;return function(_0x1e6ef5){logger[_0xa39d('0x2a')](_0x1e6ef5[_0xa39d('0x2b')]);if(_0x1e6ef5[_0xa39d('0x2c')]){delete _0x1e6ef5[_0xa39d('0x2c')];}_0x1f61d0[_0xa39d('0x1e')](_0x131c1e)[_0xa39d('0x2d')](_0x1e6ef5);};}function getInteractionUsers(_0x470376,_0x42e195){return new BPromise(function(_0x155fbb,_0x5be14a){try{if(_0x42e195[_0x470376['id']]){_0x470376[_0xa39d('0x2e')]=_[_0xa39d('0x2f')](_0x42e195[_0x470376['id']],function(_0x4ea4e6){return{'id':_0x4ea4e6['id'],'fullname':_0x4ea4e6['fullname']};});}}catch(_0x335c2f){_0x5be14a(_0x335c2f);}_0x155fbb(_0x470376);});}function getInteractionTags(_0x32d82b,_0x5e119b){return new BPromise(function(_0x89e708,_0x2c4cf3){try{if(_0x32d82b['TagIds']){_0x32d82b[_0xa39d('0x30')]=[];_0x32d82b[_0xa39d('0x31')]['split'](',')['forEach'](function(_0x47219b){_0x32d82b[_0xa39d('0x30')][_0xa39d('0x32')](_0x5e119b[_0x47219b]);});}delete _0x32d82b[_0xa39d('0x31')];}catch(_0x1bfa68){_0x2c4cf3(_0x1bfa68);}_0x89e708(_0x32d82b);});}function updateFaxInteraction(_0x2ff19d,_0x585e98,_0x40bab7){return new BPromise(function(_0x1a7f10,_0x480838){return getInteractionUsers(_0x2ff19d,_0x40bab7)['then'](function(_0x21f77b){return getInteractionTags(_0x21f77b,_0x585e98);})['then'](function(_0x4e7e52){return getStateInteraction(_0x4e7e52);})['then'](function(_0x232356){_0x1a7f10(_0x232356);})[_0xa39d('0x33')](function(_0x2601cc){_0x480838(_0x2601cc);});});}function getStateInteraction(_0x3cb642){return new BPromise(function(_0x77162b){_0x3cb642[_0xa39d('0x34')]=0x0;_0x3cb642[_0xa39d('0x35')]=0x0;_0x3cb642['answered']=0x0;_0x3cb642['unmanaged']=0x0;_0x3cb642[_0xa39d('0x36')]=0x0;if(!_0x3cb642[_0xa39d('0x37')]&&!_0x3cb642[_0xa39d('0x38')]){_0x3cb642[_0xa39d('0x34')]+=0x1;}if(!_0x3cb642[_0xa39d('0x37')]&&_0x3cb642[_0xa39d('0x38')]){_0x3cb642[_0xa39d('0x35')]+=0x1;if(_0x3cb642['waiting']){_0x3cb642[_0xa39d('0x34')]-=0x1;}}if(_0x3cb642[_0xa39d('0x37')]&&_0x3cb642[_0xa39d('0x38')]){_0x3cb642[_0xa39d('0x39')]+=0x1;if(_0x3cb642[_0xa39d('0x35')]){_0x3cb642[_0xa39d('0x35')]-=0x1;}}if(_0x3cb642[_0xa39d('0x37')]&&!_0x3cb642[_0xa39d('0x38')]){_0x3cb642[_0xa39d('0x3a')]+=0x1;if(_0x3cb642[_0xa39d('0x34')]){_0x3cb642[_0xa39d('0x34')]-=0x1;}}_0x3cb642[_0xa39d('0x36')]+=0x1;_0x77162b(_0x3cb642);});}exports['index']=function(_0x575d49,_0x43c3f3){var _0x5c5972={},_0x1d13f1={},_0x4e280c={'count':0x0,'rows':[]};var _0x5abbc5=_[_0xa39d('0x2f')](db['FaxInteraction'][_0xa39d('0x3b')],function(_0x3fd094){return{'name':_0x3fd094['fieldName'],'type':_0x3fd094[_0xa39d('0x3c')][_0xa39d('0x3d')]};});_0x1d13f1[_0xa39d('0x3e')]=_[_0xa39d('0x2f')](_0x5abbc5,'name');_0x1d13f1[_0xa39d('0x3f')]=_[_0xa39d('0x40')](_0x575d49[_0xa39d('0x3f')]);_0x1d13f1[_0xa39d('0x41')]=_['intersection'](_0x1d13f1['model'],_0x1d13f1[_0xa39d('0x3f')]);_0x5c5972[_0xa39d('0x42')]=_[_0xa39d('0x43')](_0x1d13f1[_0xa39d('0x3e')],qs[_0xa39d('0x44')](_0x575d49['query'][_0xa39d('0x44')]));_0x5c5972[_0xa39d('0x42')]=_0x5c5972[_0xa39d('0x42')]['length']?_0x5c5972['attributes']:_0x1d13f1[_0xa39d('0x3e')];if(!_0x575d49[_0xa39d('0x3f')][_0xa39d('0x45')]('nolimit')){_0x5c5972[_0xa39d('0x22')]=qs[_0xa39d('0x22')](_0x575d49[_0xa39d('0x3f')]['limit']);_0x5c5972[_0xa39d('0x20')]=qs['offset'](_0x575d49[_0xa39d('0x3f')]['offset']);}_0x5c5972[_0xa39d('0x46')]=qs['sort'](_0x575d49[_0xa39d('0x3f')][_0xa39d('0x47')]);_0x5c5972[_0xa39d('0x48')]=qs[_0xa39d('0x41')](_['pick'](_0x575d49[_0xa39d('0x3f')],_0x1d13f1['filters']),_0x5abbc5);var _0x224121=[];var _0x3e3733=squel['select']()[_0xa39d('0x49')]('id')[_0xa39d('0x49')]('name')[_0xa39d('0x49')](_0xa39d('0x4a'))['from'](_0xa39d('0x4b'));var _0x30f264=squel[_0xa39d('0x4c')]()[_0xa39d('0x49')](_0xa39d('0x4d'))['field'](_0xa39d('0x4e'))[_0xa39d('0x49')](_0xa39d('0x4f'))[_0xa39d('0x50')]('user_has_fax_interactions','ui')[_0xa39d('0x51')](_0xa39d('0x52'),'u',_0xa39d('0x53'));var _0x443add=squel[_0xa39d('0x4c')]()[_0xa39d('0x50')](_0xa39d('0x54'),'i')[_0xa39d('0x51')](_0xa39d('0x55'),'c',_0xa39d('0x56'))[_0xa39d('0x51')](_0xa39d('0x52'),'o',_0xa39d('0x57'))[_0xa39d('0x51')](_0xa39d('0x58'),'a',_0xa39d('0x59'))[_0xa39d('0x51')](_0xa39d('0x5a'),'me',_0xa39d('0x5b'))[_0xa39d('0x51')](_0xa39d('0x5c'),'it',_0xa39d('0x5d'))['left_join'](_0xa39d('0x4b'),'t',_0xa39d('0x5e'));var _0x28119b=squel['expr']();var _0x42b7db=[];var _0x1fd908=squel[_0xa39d('0x5f')]();var _0x18a3bb;if(_0x575d49[_0xa39d('0x3f')][_0xa39d('0x60')]){_0x18a3bb=as['parseSearch'](_0x575d49[_0xa39d('0x3f')][_0xa39d('0x60')]);var _0x24478f=_0x18a3bb[_0xa39d('0x61')];for(var _0x5ab0ad=0x0;_0x5ab0ad<_0x18a3bb[_0xa39d('0x62')][_0xa39d('0x63')];_0x5ab0ad++){var _0x2e64de=_0x18a3bb[_0xa39d('0x62')][_0x5ab0ad];var _0x1c6170='i';var _0x574246=_[_0xa39d('0x64')](_0x5abbc5,[_0xa39d('0x2c'),_0x2e64de['field']]);if(!_0x574246){switch(_0x2e64de['field']){case'unreadMessages':if(_0x2e64de[_0xa39d('0x65')]==0x1){_0x443add[_0xa39d('0x66')]('`'+_0x2e64de[_0xa39d('0x49')]+'`\x20=\x200');}else{_0x443add[_0xa39d('0x66')]('`'+_0x2e64de[_0xa39d('0x49')]+_0xa39d('0x67'));}break;case _0xa39d('0x68'):if(_0x2e64de[_0xa39d('0x69')]===_0xa39d('0x6a')){if(_0x2e64de[_0xa39d('0x65')][_0xa39d('0x6b')]('\x20')[_0xa39d('0x63')]>0x1){_0x28119b[_0x24478f](_0xa39d('0x6c'),qs[_0xa39d('0x6d')](_0x2e64de[_0xa39d('0x65')]),null);}else{var _0x4f0b49='%'+_0x2e64de[_0xa39d('0x65')]+'%';_0x28119b[_0x24478f](_0xa39d('0x6e'),_0x4f0b49,_0x4f0b49,_0x4f0b49);}}else{_0x574246=_['find'](_0x5abbc5,[_0xa39d('0x2c'),'ContactId']);_0x2e64de[_0xa39d('0x49')]=_0xa39d('0x6f');_0x1f006f=as[_0xa39d('0x70')](_0x1c6170,_0x574246[_0xa39d('0x3c')],_0x2e64de);_0x28119b[_0x24478f](_0x1f006f[_0xa39d('0x71')],_0x1f006f[_0xa39d('0x65')][_0xa39d('0x72')],_0x1f006f[_0xa39d('0x65')]['end']);}break;case _0xa39d('0x73'):var _0x347386=_0x2e64de[_0xa39d('0x65')][_0xa39d('0x6b')](',')[_0xa39d('0x2f')](function(_0x199f90){return Number(_0x199f90);});_0x347386[_0xa39d('0x74')](function(_0x191294){_0x1fd908['or'](_0xa39d('0x75'),'%,'+_0x191294+',%');});_0x42b7db=_['union'](_0x42b7db,_0x347386);break;case'User':if(_0x2e64de[_0xa39d('0x69')]===_0xa39d('0x6a')){_0x28119b[_0x24478f](_0xa39d('0x76'),'%'+_0x2e64de[_0xa39d('0x65')]+'%',null);}else{_0x574246=_[_0xa39d('0x64')](_0x5abbc5,[_0xa39d('0x2c'),_0xa39d('0x38')]);_0x2e64de[_0xa39d('0x49')]=_0xa39d('0x38');_0x1f006f=as[_0xa39d('0x70')](_0x1c6170,_0x574246[_0xa39d('0x3c')],_0x2e64de);_0x28119b[_0x24478f](_0x1f006f[_0xa39d('0x71')],_0x1f006f[_0xa39d('0x65')][_0xa39d('0x72')],_0x1f006f[_0xa39d('0x65')]['end']);}break;case _0xa39d('0x77'):_0x1f006f=as[_0xa39d('0x70')]('me',null,_0x2e64de);_0x28119b[_0x24478f](_0x1f006f[_0xa39d('0x71')],_0x1f006f[_0xa39d('0x65')][_0xa39d('0x72')],_0x1f006f[_0xa39d('0x65')][_0xa39d('0x1d')]);break;}}else{var _0x1f006f=as[_0xa39d('0x70')](_0x1c6170,_0x574246[_0xa39d('0x3c')],_0x2e64de);_0x28119b[_0x24478f](_0x1f006f[_0xa39d('0x71')],_0x1f006f['value'][_0xa39d('0x72')],_0x1f006f[_0xa39d('0x65')][_0xa39d('0x1d')]);}}}else{var _0x24bc31=_(_0x575d49[_0xa39d('0x3f')])[_0xa39d('0x40')]()[_0xa39d('0x2f')](function(_0x3a2d2e){return _[_0xa39d('0x78')](_0x5abbc5,[_0xa39d('0x2c'),_0x3a2d2e])?_0x3a2d2e:undefined;})[_0xa39d('0x79')]()[_0xa39d('0x65')]();if(!_['isEmpty'](_0x24bc31)){_0x24bc31['forEach'](function(_0xcdbec4){if(_0xcdbec4==='FaxAccountId'){_0x443add[_0xa39d('0x48')](_0xa39d('0x7a'),[][_0xa39d('0x7b')](_0x575d49['query'][_0xcdbec4]));}else if(_0xcdbec4===_0xa39d('0x7c')){var _0x326b77=JSON[_0xa39d('0x7d')](_0x575d49[_0xa39d('0x3f')][_0xcdbec4])[_0xa39d('0x7e')];var _0x25e61b=JSON[_0xa39d('0x7d')](_0x575d49[_0xa39d('0x3f')][_0xcdbec4])[_0xa39d('0x7f')];_0x443add[_0xa39d('0x48')](_0xa39d('0x80'),_0x326b77,_0x25e61b);}else{if(_0x575d49[_0xa39d('0x3f')][_0xcdbec4]===_0xa39d('0x81')){_0x443add[_0xa39d('0x48')]('i.'+_0xcdbec4+_0xa39d('0x82'));}else{_0x443add[_0xa39d('0x48')]('i.'+_0xcdbec4+_0xa39d('0x83'),_0x575d49[_0xa39d('0x3f')][_0xcdbec4]);}}});}if(_0x575d49[_0xa39d('0x3f')]['read']){if(_0x575d49['query'][_0xa39d('0x84')]==0x1){_0x443add['having'](_0xa39d('0x85'));}else{_0x443add[_0xa39d('0x66')](_0xa39d('0x86'));}}if(_0x575d49[_0xa39d('0x3f')][_0xa39d('0x87')]){_0x42b7db=_[_0xa39d('0x88')](_0x575d49['query'][_0xa39d('0x87')])?_0x575d49[_0xa39d('0x3f')]['tag']:new Array(_0x575d49[_0xa39d('0x3f')]['tag']);_0x42b7db['forEach'](function(_0x1dbd0b){_0x1fd908['or'](_0xa39d('0x75'),'%,'+_0x1dbd0b+',%');});}if(_0x575d49[_0xa39d('0x3f')][_0xa39d('0x89')]){var _0x3bc8df=_0x575d49['query'][_0xa39d('0x89')][_0xa39d('0x8a')]('\x5c','\x5c\x5c')[_0xa39d('0x8a')](/'/g,'\x27\x27');if(qs[_0xa39d('0x8b')](_0x3bc8df)){_0x28119b['or']('i.id\x20LIKE\x20?',_0x3bc8df+'%')['or'](_0xa39d('0x8c'),_0x3bc8df+'%');}_0x28119b['or'](_0xa39d('0x8d'),_0x3bc8df+'%');}}_0x443add[_0xa39d('0x48')](_0x28119b);_0x443add[_0xa39d('0x8e')](_0xa39d('0x8f'));var _0x5400ae={'type':db['Sequelize'][_0xa39d('0x90')][_0xa39d('0x91')],'raw':!![]};var _0x5c0b58=_0x443add[_0xa39d('0x92')]();_0x5c0b58[_0xa39d('0x49')]('i.id');_0x5c0b58['field'](_0xa39d('0x93'),'unreadMessages');if(_0x5c5972[_0xa39d('0x46')]){_0x5c5972['order']['forEach'](function(_0xc22f81){var _0xbd556=_0xc22f81[0x0]===_0xa39d('0x94')?_0xc22f81[0x0]:'i.'+_0xc22f81[0x0];_0x443add[_0xa39d('0x46')](_0xbd556,_0xc22f81[0x1]===_0xa39d('0x95')?![]:!![]);});}if(!_[_0xa39d('0x96')](_0x42b7db)){_0x443add[_0xa39d('0x66')](_0x1fd908);_0x5c0b58[_0xa39d('0x48')](_0xa39d('0x97'),_0x42b7db);}BPromise['resolve']()[_0xa39d('0x29')](function(){if(!_0x18a3bb){if(_0x575d49[_0xa39d('0x3f')][_0xa39d('0x98')])return;_0x5c0b58[_0xa39d('0x48')](_0xa39d('0x99'));_0x443add[_0xa39d('0x48')](_0xa39d('0x99'));return;}if(_0x575d49[_0xa39d('0x9a')][_0xa39d('0x9b')]!==_0xa39d('0x9c'))return;return _0x575d49[_0xa39d('0x9a')][_0xa39d('0x9d')]({'attributes':['id'],'raw':!![]})[_0xa39d('0x29')](function(_0x168371){if(_[_0xa39d('0x96')](_0x168371)){_0x5c0b58[_0xa39d('0x48')](_0xa39d('0x9e'));_0x443add[_0xa39d('0x48')](_0xa39d('0x9e'));}else{_0x5c0b58[_0xa39d('0x48')](_0xa39d('0x7a'),_[_0xa39d('0x2f')](_0x168371,'id'));_0x443add[_0xa39d('0x48')]('i.FaxAccountId\x20IN\x20?',_[_0xa39d('0x2f')](_0x168371,'id'));}});})[_0xa39d('0x29')](function(){if(_0x575d49[_0xa39d('0x9a')][_0xa39d('0x9b')]===_0xa39d('0x9c')&&!_0x18a3bb&&!_0x575d49['query']['FaxAccountId'])return[];return db[_0xa39d('0x9f')][_0xa39d('0x3f')](_0x5c0b58[_0xa39d('0xa0')](),_0x5400ae);})[_0xa39d('0x29')](function(_0x22f243){_0x4e280c[_0xa39d('0x23')]=_0x22f243['length'];if(_0x4e280c[_0xa39d('0x23')]===0x0)return[];return db[_0xa39d('0x9f')][_0xa39d('0x3f')](_0x3e3733['toString'](),_0x5400ae)[_0xa39d('0x29')](function(_0x365657){_0x224121=_['keyBy'](_0x365657,'id');_0x5400ae=_['merge'](_0x5400ae,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x575d49[_0xa39d('0x3f')]['fields']){_0x5c5972[_0xa39d('0x42')][_0xa39d('0x74')](function(_0x11548f){_0x443add[_0xa39d('0x49')]('i.'+_0x11548f);});}else{_0x443add['field'](_0xa39d('0x93'),_0xa39d('0xa1'));_0x443add['field'](_0xa39d('0xa2'),_0xa39d('0xa3'));_0x443add[_0xa39d('0x49')](_0xa39d('0xa4'),_0xa39d('0xa5'));_0x443add[_0xa39d('0x49')](_0xa39d('0xa6'),'contactName');_0x443add[_0xa39d('0x49')](_0xa39d('0xa7'));_0x443add[_0xa39d('0x49')](_0xa39d('0xa8'),'Contact.firstName');_0x443add['field']('c.lastName',_0xa39d('0xa9'));_0x443add[_0xa39d('0x49')]('c.email',_0xa39d('0xaa'));_0x443add['field'](_0xa39d('0xab'),_0xa39d('0xac'));_0x443add['field'](_0xa39d('0xad'),_0xa39d('0xae'));_0x443add['field'](_0xa39d('0xaf'),_0xa39d('0xb0'));_0x443add[_0xa39d('0x49')](_0xa39d('0xb1'),_0xa39d('0xb2'));_0x443add[_0xa39d('0x49')]('o.internal',_0xa39d('0xb3'));_0x443add[_0xa39d('0x49')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xa39d('0x31'));}if(_0x5c5972[_0xa39d('0x22')])_0x443add['limit'](_0x5c5972[_0xa39d('0x22')]);if(_0x5c5972['offset'])_0x443add['offset'](_0x5c5972[_0xa39d('0x20')]);return db[_0xa39d('0x9f')]['query'](_0x443add['toString'](),_0x5400ae);})[_0xa39d('0x29')](function(_0x144352){if(_0x144352[_0xa39d('0x63')]>0x0)_0x30f264[_0xa39d('0x48')]('ui.FaxInteractionId\x20IN\x20?',_['map'](_0x144352,'id'));return db[_0xa39d('0x9f')][_0xa39d('0x3f')](_0x30f264[_0xa39d('0xa0')](),_0x5400ae)['then'](function(_0x3b4414){var _0x2a064f=_[_0xa39d('0xb4')](_0x3b4414,'FaxInteractionId');var _0x1881a5=[];_0x144352[_0xa39d('0x74')](function(_0x3b50ac){_0x1881a5[_0xa39d('0x32')](updateFaxInteraction(_0x3b50ac,_0x224121,_0x2a064f));});return BPromise[_0xa39d('0xb5')](_0x1881a5);});});})['then'](function(_0x4f5c49){_0x4e280c[_0xa39d('0xb6')]=_0x4f5c49;return _0x4e280c;})[_0xa39d('0x29')](respondWithFilteredResult(_0x43c3f3,_0x5c5972))[_0xa39d('0x33')](handleError(_0x43c3f3,null));};exports['show']=function(_0x5c2b1d,_0xb3eee6){var _0x422b65={'raw':![],'where':{'id':_0x5c2b1d['params']['id']}},_0x1a0703={};_0x1a0703[_0xa39d('0x3e')]=_[_0xa39d('0x40')](db[_0xa39d('0xb7')]['rawAttributes']);_0x1a0703[_0xa39d('0x3f')]=_[_0xa39d('0x40')](_0x5c2b1d['query']);_0x1a0703[_0xa39d('0x41')]=_[_0xa39d('0x43')](_0x1a0703[_0xa39d('0x3e')],_0x1a0703[_0xa39d('0x3f')]);_0x422b65[_0xa39d('0x42')]=_[_0xa39d('0x43')](_0x1a0703['model'],qs[_0xa39d('0x44')](_0x5c2b1d[_0xa39d('0x3f')][_0xa39d('0x44')]));_0x422b65[_0xa39d('0x42')]=_0x422b65[_0xa39d('0x42')][_0xa39d('0x63')]?_0x422b65[_0xa39d('0x42')]:_0x1a0703[_0xa39d('0x3e')];if(_0x5c2b1d[_0xa39d('0x3f')][_0xa39d('0xb8')]){_0x422b65[_0xa39d('0xb9')]=[{'all':!![]}];}_0x422b65=_['merge']({},_0x422b65,_0x5c2b1d[_0xa39d('0xba')]);return db['FaxInteraction'][_0xa39d('0x64')](_0x422b65)['then'](handleEntityNotFound(_0xb3eee6,null))[_0xa39d('0x29')](respondWithResult(_0xb3eee6,null))['catch'](handleError(_0xb3eee6,null));};exports[_0xa39d('0xbb')]=function(_0x17cc62,_0x1b5767){return db[_0xa39d('0xb7')]['create'](_0x17cc62[_0xa39d('0x77')],{})[_0xa39d('0x29')](respondWithResult(_0x1b5767,0xc9))['catch'](handleError(_0x1b5767,null));};exports[_0xa39d('0x28')]=function(_0x26547f,_0x3c7e08){if(_0x26547f['body']['id']){delete _0x26547f[_0xa39d('0x77')]['id'];}return db[_0xa39d('0xb7')]['find']({'where':{'id':_0x26547f[_0xa39d('0xbc')]['id']}})[_0xa39d('0x29')](handleEntityNotFound(_0x3c7e08,null))[_0xa39d('0x29')](saveUpdates(_0x26547f[_0xa39d('0x77')],null))[_0xa39d('0x29')](respondWithResult(_0x3c7e08,null))['catch'](handleError(_0x3c7e08,null));};exports[_0xa39d('0xbd')]=function(_0x15d092,_0x3e5a17){return db[_0xa39d('0xb7')][_0xa39d('0x64')]({'where':{'id':_0x15d092[_0xa39d('0xbc')]['id']}})[_0xa39d('0x29')](handleEntityNotFound(_0x3e5a17,null))[_0xa39d('0x29')](removeEntity(_0x3e5a17,null))[_0xa39d('0x33')](handleError(_0x3e5a17,null));};exports[_0xa39d('0xbe')]=function(_0x1edb98,_0x33a4a4){return db['FaxInteraction'][_0xa39d('0xbe')]()[_0xa39d('0x29')](respondWithResult(_0x33a4a4,null))[_0xa39d('0x33')](handleError(_0x33a4a4,null));};exports['addMessage']=function(_0x4eda0c,_0x5be864,_0x59e4ae){return db[_0xa39d('0xbf')][_0xa39d('0x64')]({'where':{'id':_0x4eda0c[_0xa39d('0xbc')]['id']}})[_0xa39d('0x29')](handleEntityNotFound(_0x5be864,null))[_0xa39d('0x29')](function(_0x44ac5c){if(_0x44ac5c){return _0x44ac5c[_0xa39d('0xc0')](_0x4eda0c[_0xa39d('0x77')][_0xa39d('0xc1')],_['omit'](_0x4eda0c[_0xa39d('0x77')],['ids','id'])||{});}})[_0xa39d('0x29')](respondWithResult(_0x5be864,null))[_0xa39d('0x33')](handleError(_0x5be864,null));};exports[_0xa39d('0xc2')]=function(_0x2e7751,_0x3b274d,_0x2b2661){var _0x27b00a={'raw':![],'where':{}};var _0x543601={};var _0x5ea86e={'count':0x0,'rows':[]};return db[_0xa39d('0xb7')][_0xa39d('0xc3')]({'where':{'id':_0x2e7751[_0xa39d('0xbc')]['id']}})[_0xa39d('0x29')](handleEntityNotFound(_0x3b274d,null))[_0xa39d('0x29')](function(_0x3501a7){if(_0x3501a7){_0x543601[_0xa39d('0x3e')]=_[_0xa39d('0x40')](db[_0xa39d('0xbf')]['rawAttributes']);_0x543601[_0xa39d('0x3f')]=_['keys'](_0x2e7751[_0xa39d('0x3f')]);_0x543601[_0xa39d('0x41')]=_[_0xa39d('0x43')](_0x543601[_0xa39d('0x3e')],_0x543601[_0xa39d('0x3f')]);_0x27b00a['attributes']=_[_0xa39d('0x43')](_0x543601[_0xa39d('0x3e')],qs[_0xa39d('0x44')](_0x2e7751[_0xa39d('0x3f')]['fields']));_0x27b00a[_0xa39d('0x42')]=_0x27b00a['attributes'][_0xa39d('0x63')]?_0x27b00a[_0xa39d('0x42')]:_0x543601[_0xa39d('0x3e')];if(!_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x45')](_0xa39d('0xc4'))){_0x27b00a['limit']=qs['limit'](_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x22')]);_0x27b00a[_0xa39d('0x20')]=qs[_0xa39d('0x20')](_0x2e7751['query'][_0xa39d('0x20')]);}_0x27b00a['order']=qs[_0xa39d('0x47')](_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x47')]);_0x27b00a['where']=qs['filters'](_[_0xa39d('0xc5')](_0x2e7751['query'],_0x543601[_0xa39d('0x41')]));_0x27b00a['where'][_0xa39d('0xc6')]=_0x3501a7['id'];if(_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x89')]){_0x27b00a[_0xa39d('0x48')]=_['merge'](_0x27b00a[_0xa39d('0x48')],{'$or':_['map'](_0x27b00a[_0xa39d('0x42')],function(_0x32b316){var _0x343859={};_0x343859[_0x32b316]={'$like':'%'+_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x89')]+'%'};return _0x343859;})});}if(_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x7e')]){var _0x14cf69=_0x2e7751[_0xa39d('0x3f')][_0xa39d('0x7e')][_0xa39d('0x6b')](',');var _0x1f90e1={};_0x1f90e1[_0x14cf69[0x0]]={'$gte':moment(_0x14cf69[0x1])[_0xa39d('0xc7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x27b00a[_0xa39d('0x48')]=_[_0xa39d('0xc8')](_0x27b00a['where'],_0x1f90e1);}_0x27b00a=_['merge']({},_0x27b00a,_0x2e7751[_0xa39d('0xba')]);return db[_0xa39d('0xbf')][_0xa39d('0x23')]({'where':_0x27b00a['where']})[_0xa39d('0x29')](function(_0x52117a){_0x5ea86e[_0xa39d('0x23')]=_0x52117a;if(_0x2e7751[_0xa39d('0x3f')][_0xa39d('0xb8')]){_0x27b00a['include']=[{'all':!![]}];}return db[_0xa39d('0xbf')][_0xa39d('0xc9')](_0x27b00a);})[_0xa39d('0x29')](function(_0x906fb0){_0x5ea86e[_0xa39d('0xb6')]=_0x906fb0;return _0x5ea86e;});}})[_0xa39d('0x29')](respondWithFilteredResult(_0x3b274d,_0x27b00a))['catch'](handleError(_0x3b274d,null));};exports[_0xa39d('0xca')]=function(_0x12c5a9,_0x12d8c8,_0x4f21bc){return db[_0xa39d('0xb7')][_0xa39d('0x64')]({'where':{'id':_0x12c5a9['params']['id']}})[_0xa39d('0x29')](handleEntityNotFound(_0x12d8c8,null))['then'](function(_0x26fa53){if(_0x26fa53){return _0x26fa53[_0xa39d('0xcb')](_0x12c5a9['body'][_0xa39d('0xc1')],_[_0xa39d('0xcc')](_0x12c5a9[_0xa39d('0x77')],[_0xa39d('0xc1'),'id'])||{})['spread'](function(){return db['Tag']['findAll']({'attributes':['id',_0xa39d('0x2c'),'color'],'where':{'id':_0x12c5a9[_0xa39d('0x77')][_0xa39d('0xc1')]}});})['then'](function(_0x47b4ef){socket[_0xa39d('0xcd')]('faxInteractionTags:save',{'id':Number(_0x12c5a9['params']['id']),'tags':_0x47b4ef||[]});return{'id':Number(_0x12c5a9['params']['id']),'tags':_0x47b4ef||[]};});}})[_0xa39d('0x29')](respondWithResult(_0x12d8c8,null))[_0xa39d('0x33')](handleError(_0x12d8c8,null));};exports[_0xa39d('0xce')]=function(_0x126bd7,_0x143aa2,_0xd1595){return db['FaxInteraction'][_0xa39d('0x64')]({'where':{'id':_0x126bd7[_0xa39d('0xbc')]['id']}})['then'](handleEntityNotFound(_0x143aa2,null))['then'](function(_0x34c291){if(_0x34c291){return _0x34c291['removeTags'](_0x126bd7[_0xa39d('0x3f')][_0xa39d('0xc1')]);}})['then'](respondWithStatusCode(_0x143aa2,null))[_0xa39d('0x33')](handleError(_0x143aa2,null));};exports[_0xa39d('0xcf')]=function(_0x45ec4a,_0x7198ac){var _0x1a945e=moment()[_0xa39d('0xd0')]()[_0xa39d('0xa0')]();var _0x2b317e=path[_0xa39d('0xd1')](config[_0xa39d('0xd2')],'server','files',_0xa39d('0xd3'));var _0x229d5d=path[_0xa39d('0xd1')](config[_0xa39d('0xd2')],_0xa39d('0xd4'),_0xa39d('0xd5'),_0xa39d('0xd6'));var _0x9e6a48=path[_0xa39d('0xd1')](_0x2b317e,_0x1a945e);var _0x25cbd6=util['format'](_0xa39d('0xd7'),_0x45ec4a[_0xa39d('0xbc')]['id'],_0x1a945e);var _0x435697=path[_0xa39d('0xd1')](_0x2b317e,_0x25cbd6);var _0x4a8c7b=[];_0x4a8c7b[_0xa39d('0x32')]({'model':db[_0xa39d('0xd8')],'as':_0xa39d('0xd8'),'raw':!![]});var _0x3c6506=[{'model':db[_0xa39d('0xbf')],'as':'Messages','attributes':['id',_0xa39d('0x77'),_0xa39d('0x7c')],'include':_0x4a8c7b}];return db[_0xa39d('0xb7')][_0xa39d('0x64')]({'where':{'id':_0x45ec4a[_0xa39d('0xbc')]['id']},'include':_0x3c6506})[_0xa39d('0x29')](handleEntityNotFound(_0x7198ac,null))[_0xa39d('0x29')](function(_0x16870e){if(_0x16870e&&_0x16870e['Messages']){var _0x32d8a1=_0x16870e[_0xa39d('0xd9')]({'plain':!![]});fs[_0xa39d('0xda')](_0x9e6a48);for(var _0x125b0c=0x0;_0x125b0c<_0x32d8a1['Messages'][_0xa39d('0x63')];_0x125b0c++){var _0x5c4224=_0x32d8a1[_0xa39d('0xdb')][_0x125b0c]['Attachment'];if(_0x5c4224){var _0x269fd8=path['join'](_0x229d5d,_0x5c4224[_0xa39d('0xdc')]);if(fs[_0xa39d('0xdd')](_0x269fd8)){fs[_0xa39d('0xde')](_0x269fd8)['pipe'](fs[_0xa39d('0xdf')](path[_0xa39d('0xd1')](_0x9e6a48,_0x5c4224[_0xa39d('0xdc')])));}}}return BPromise[_0xa39d('0xe0')]()[_0xa39d('0x29')](function(){return new BPromise(function(_0x334038,_0x424522){zipdir(_0x9e6a48,{'saveTo':_0x435697},function(_0x309cda,_0x487eeb){if(_0x309cda)return _0x424522(_0x309cda);return _0x334038(_0x487eeb);});})[_0xa39d('0x29')](function(){return new BPromise(function(_0x8a79e9,_0x246dc1){rimraf(_0x9e6a48,function(_0x1c9728){if(_0x1c9728)_0x246dc1(_0x1c9728);return _0x8a79e9();});});})[_0xa39d('0x29')](function(){return _0x7198ac[_0xa39d('0xcf')](_0x435697,_0x25cbd6,function(_0x2d53aa){if(_0x2d53aa){console[_0xa39d('0xe1')](_0xa39d('0xe2'),_0x2d53aa);}else{fs['unlinkSync'](_0x435697);}});});});}else{return _0x7198ac[_0xa39d('0x1c')](0xc8);}})[_0xa39d('0x33')](handleError(_0x7198ac,null));};
\ No newline at end of file
+var _0x6074=['Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','rows','show','rawAttributes','includeAll','include','options','create','params','describe','FaxMessage','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','FaxInteractionId','format','addTags','setTags','findAll','emit','faxInteractionTags:save','download','join','root','files','transcript-%d-%s.zip','Messages','get','mkdirSync','Attachment','createReadStream','pipe','createWriteStream','basename','log','unlinkSync','zip-dir','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','Users','fullname','TagIds','split','forEach','Tags','push','catch','talking','answered','total','closed','waiting','UserId','unmanaged','index','map','FaxInteraction','type','key','keys','filters','intersection','attributes','model','fields','query','length','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.FaxInteractionId','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','start','Tag','union','User','operator','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','isEmpty','FaxAccountId','concat','createdAt','$gte','parse','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email'];(function(_0x1dadfc,_0x4f6d90){var _0x4d8e67=function(_0x4fda4e){while(--_0x4fda4e){_0x1dadfc['push'](_0x1dadfc['shift']());}};_0x4d8e67(++_0x4f6d90);}(_0x6074,0x108));var _0x4607=function(_0x10e653,_0x59f1cc){_0x10e653=_0x10e653-0x0;var _0x328dfd=_0x6074[_0x10e653];return _0x328dfd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4607('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4607('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4607('0x2'));var path=require(_0x4607('0x3'));var sox=require('sox');var csv=require(_0x4607('0x4'));var ejs=require(_0x4607('0x5'));var fs=require('fs');var fs_extra=require(_0x4607('0x6'));var _=require(_0x4607('0x7'));var squel=require(_0x4607('0x8'));var crypto=require(_0x4607('0x9'));var jsforce=require(_0x4607('0xa'));var deskjs=require(_0x4607('0xb'));var toCsv=require(_0x4607('0x4'));var querystring=require(_0x4607('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4607('0xd'));var as=require(_0x4607('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4607('0xf'))(_0x4607('0x10'));var utils=require(_0x4607('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x4607('0x12'));var db=require(_0x4607('0x13'))['db'];config[_0x4607('0x14')]=_['defaults'](config[_0x4607('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x4607('0x15'))(new Redis(config[_0x4607('0x14')]));require('./faxInteraction.socket')[_0x4607('0x16')](socket);function respondWithStatusCode(_0x34e13a,_0x40b685){_0x40b685=_0x40b685||0xcc;return function(_0x24dd16){if(_0x24dd16){return _0x34e13a[_0x4607('0x17')](_0x40b685);}return _0x34e13a['status'](_0x40b685)[_0x4607('0x18')]();};}function respondWithResult(_0x2c617d,_0x2a82ab){_0x2a82ab=_0x2a82ab||0xc8;return function(_0x1b328c){if(_0x1b328c){return _0x2c617d[_0x4607('0x19')](_0x2a82ab)[_0x4607('0x1a')](_0x1b328c);}};}function respondWithFilteredResult(_0x3bf37f,_0x15e2f3){return function(_0x5eff06){if(_0x5eff06){var _0x14de9e=typeof _0x15e2f3[_0x4607('0x1b')]===_0x4607('0x1c')&&typeof _0x15e2f3[_0x4607('0x1d')]===_0x4607('0x1c');var _0x591282=_0x5eff06['count'];var _0x4ebed3=_0x14de9e?0x0:_0x15e2f3[_0x4607('0x1b')];var _0x450258=_0x14de9e?_0x5eff06[_0x4607('0x1e')]:_0x15e2f3[_0x4607('0x1b')]+_0x15e2f3[_0x4607('0x1d')];var _0x41d296;if(_0x450258>=_0x591282){_0x450258=_0x591282;_0x41d296=0xc8;}else{_0x41d296=0xce;}_0x3bf37f[_0x4607('0x19')](_0x41d296);return _0x3bf37f['set'](_0x4607('0x1f'),_0x4ebed3+'-'+_0x450258+'/'+_0x591282)[_0x4607('0x1a')](_0x5eff06);}return null;};}function patchUpdates(_0x21c989){return function(_0x3674a0){try{jsonpatch[_0x4607('0x20')](_0x3674a0,_0x21c989,!![]);}catch(_0x46a624){return BPromise[_0x4607('0x21')](_0x46a624);}return _0x3674a0[_0x4607('0x22')]();};}function saveUpdates(_0x41f511,_0x59c777){return function(_0xdf252c){if(_0xdf252c){return _0xdf252c[_0x4607('0x23')](_0x41f511)[_0x4607('0x24')](function(_0x214172){return _0x214172;});}return null;};}function removeEntity(_0x5915ec,_0x59f95d){return function(_0x2fa9db){if(_0x2fa9db){return _0x2fa9db[_0x4607('0x25')]()['then'](function(){_0x5915ec[_0x4607('0x19')](0xcc)[_0x4607('0x18')]();});}};}function handleEntityNotFound(_0x43d8d6,_0x3ceded){return function(_0x182b3f){if(!_0x182b3f){_0x43d8d6['sendStatus'](0x194);}return _0x182b3f;};}function handleError(_0x1af3c4,_0x1b5ded){_0x1b5ded=_0x1b5ded||0x1f4;return function(_0x3c83d2){logger[_0x4607('0x26')](_0x3c83d2[_0x4607('0x27')]);if(_0x3c83d2[_0x4607('0x28')]){delete _0x3c83d2[_0x4607('0x28')];}_0x1af3c4[_0x4607('0x19')](_0x1b5ded)[_0x4607('0x29')](_0x3c83d2);};}function getInteractionUsers(_0x548a39,_0x25cd46){return new BPromise(function(_0x30a658,_0x47822b){try{if(_0x25cd46[_0x548a39['id']]){_0x548a39[_0x4607('0x2a')]=_['map'](_0x25cd46[_0x548a39['id']],function(_0xbd5ce6){return{'id':_0xbd5ce6['id'],'fullname':_0xbd5ce6[_0x4607('0x2b')]};});}}catch(_0xaa07d){_0x47822b(_0xaa07d);}_0x30a658(_0x548a39);});}function getInteractionTags(_0x866fa6,_0x27ce75){return new BPromise(function(_0x5ee234,_0x3a6630){try{if(_0x866fa6[_0x4607('0x2c')]){_0x866fa6['Tags']=[];_0x866fa6[_0x4607('0x2c')][_0x4607('0x2d')](',')[_0x4607('0x2e')](function(_0x339fc2){_0x866fa6[_0x4607('0x2f')][_0x4607('0x30')](_0x27ce75[_0x339fc2]);});}delete _0x866fa6['TagIds'];}catch(_0x27f6f5){_0x3a6630(_0x27f6f5);}_0x5ee234(_0x866fa6);});}function updateFaxInteraction(_0x262cd2,_0xe68f3d,_0x17a4fd){return new BPromise(function(_0x1a6ef7,_0x5a5cf5){return getInteractionUsers(_0x262cd2,_0x17a4fd)[_0x4607('0x24')](function(_0x4ea7f1){return getInteractionTags(_0x4ea7f1,_0xe68f3d);})[_0x4607('0x24')](function(_0xb30ee4){return getStateInteraction(_0xb30ee4);})['then'](function(_0x16dd71){_0x1a6ef7(_0x16dd71);})[_0x4607('0x31')](function(_0x395d76){_0x5a5cf5(_0x395d76);});});}function getStateInteraction(_0x4993fb){return new BPromise(function(_0x58f57a){_0x4993fb['waiting']=0x0;_0x4993fb[_0x4607('0x32')]=0x0;_0x4993fb[_0x4607('0x33')]=0x0;_0x4993fb['unmanaged']=0x0;_0x4993fb[_0x4607('0x34')]=0x0;if(!_0x4993fb[_0x4607('0x35')]&&!_0x4993fb['UserId']){_0x4993fb[_0x4607('0x36')]+=0x1;}if(!_0x4993fb[_0x4607('0x35')]&&_0x4993fb[_0x4607('0x37')]){_0x4993fb[_0x4607('0x32')]+=0x1;if(_0x4993fb[_0x4607('0x36')]){_0x4993fb['waiting']-=0x1;}}if(_0x4993fb['closed']&&_0x4993fb[_0x4607('0x37')]){_0x4993fb[_0x4607('0x33')]+=0x1;if(_0x4993fb[_0x4607('0x32')]){_0x4993fb['talking']-=0x1;}}if(_0x4993fb[_0x4607('0x35')]&&!_0x4993fb['UserId']){_0x4993fb[_0x4607('0x38')]+=0x1;if(_0x4993fb[_0x4607('0x36')]){_0x4993fb[_0x4607('0x36')]-=0x1;}}_0x4993fb[_0x4607('0x34')]+=0x1;_0x58f57a(_0x4993fb);});}exports[_0x4607('0x39')]=function(_0x26facd,_0x40c1d2){var _0x4451c7={},_0x4c91a2={},_0x38b677={'count':0x0,'rows':[]};var _0x4b5160=_[_0x4607('0x3a')](db[_0x4607('0x3b')]['rawAttributes'],function(_0x1d4780){return{'name':_0x1d4780['fieldName'],'type':_0x1d4780[_0x4607('0x3c')][_0x4607('0x3d')]};});_0x4c91a2['model']=_[_0x4607('0x3a')](_0x4b5160,'name');_0x4c91a2['query']=_[_0x4607('0x3e')](_0x26facd['query']);_0x4c91a2[_0x4607('0x3f')]=_[_0x4607('0x40')](_0x4c91a2['model'],_0x4c91a2['query']);_0x4451c7[_0x4607('0x41')]=_[_0x4607('0x40')](_0x4c91a2[_0x4607('0x42')],qs[_0x4607('0x43')](_0x26facd[_0x4607('0x44')][_0x4607('0x43')]));_0x4451c7['attributes']=_0x4451c7[_0x4607('0x41')][_0x4607('0x45')]?_0x4451c7[_0x4607('0x41')]:_0x4c91a2['model'];if(!_0x26facd[_0x4607('0x44')]['hasOwnProperty'](_0x4607('0x46'))){_0x4451c7['limit']=qs[_0x4607('0x1d')](_0x26facd['query'][_0x4607('0x1d')]);_0x4451c7['offset']=qs[_0x4607('0x1b')](_0x26facd[_0x4607('0x44')][_0x4607('0x1b')]);}_0x4451c7[_0x4607('0x47')]=qs[_0x4607('0x48')](_0x26facd[_0x4607('0x44')][_0x4607('0x48')]);_0x4451c7[_0x4607('0x49')]=qs[_0x4607('0x3f')](_[_0x4607('0x4a')](_0x26facd[_0x4607('0x44')],_0x4c91a2[_0x4607('0x3f')]),_0x4b5160);var _0x4815c2=[];var _0xad3aa2=squel[_0x4607('0x4b')]()[_0x4607('0x4c')]('id')[_0x4607('0x4c')](_0x4607('0x28'))[_0x4607('0x4c')](_0x4607('0x4d'))[_0x4607('0x4e')](_0x4607('0x4f'));var _0x56d770=squel['select']()['field'](_0x4607('0x50'))[_0x4607('0x4c')](_0x4607('0x51'))[_0x4607('0x4c')](_0x4607('0x52'))[_0x4607('0x4e')]('user_has_fax_interactions','ui')[_0x4607('0x53')](_0x4607('0x54'),'u',_0x4607('0x55'));var _0x56985e=squel['select']()['from'](_0x4607('0x56'),'i')[_0x4607('0x53')](_0x4607('0x57'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4607('0x53')]('users','o','o.id\x20=\x20i.UserId')[_0x4607('0x53')](_0x4607('0x58'),'a',_0x4607('0x59'))[_0x4607('0x53')](_0x4607('0x5a'),'me',_0x4607('0x5b'))['left_join']('fax_interaction_has_tags','it','it.FaxInteractionId\x20=\x20i.id')['left_join']('tools_tags','t','t.id\x20=\x20it.TagId');var _0x13e29c=squel[_0x4607('0x5c')]();var _0x477b4a=[];var _0x4f2e00=squel['expr']();var _0x260ed9;if(_0x26facd[_0x4607('0x44')][_0x4607('0x5d')]){_0x260ed9=as[_0x4607('0x5e')](_0x26facd[_0x4607('0x44')]['search']);var _0x4adf32=_0x260ed9['sqlOperator'];for(var _0x57a013=0x0;_0x57a013<_0x260ed9[_0x4607('0x5f')][_0x4607('0x45')];_0x57a013++){var _0x4be1a0=_0x260ed9[_0x4607('0x5f')][_0x57a013];var _0x1dc944='i';var _0xba71d8=_[_0x4607('0x60')](_0x4b5160,[_0x4607('0x28'),_0x4be1a0[_0x4607('0x4c')]]);if(!_0xba71d8){switch(_0x4be1a0[_0x4607('0x4c')]){case _0x4607('0x61'):if(_0x4be1a0[_0x4607('0x62')]==0x1){_0x56985e[_0x4607('0x63')]('`'+_0x4be1a0[_0x4607('0x4c')]+_0x4607('0x64'));}else{_0x56985e[_0x4607('0x63')]('`'+_0x4be1a0[_0x4607('0x4c')]+_0x4607('0x65'));}break;case _0x4607('0x66'):if(_0x4be1a0['operator']==='$substring'){if(_0x4be1a0[_0x4607('0x62')][_0x4607('0x2d')]('\x20')['length']>0x1){_0x13e29c[_0x4adf32](_0x4607('0x67'),qs[_0x4607('0x68')](_0x4be1a0[_0x4607('0x62')]),null);}else{var _0x26918a='%'+_0x4be1a0[_0x4607('0x62')]+'%';_0x13e29c[_0x4adf32]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x26918a,_0x26918a,_0x26918a);}}else{_0xba71d8=_[_0x4607('0x60')](_0x4b5160,[_0x4607('0x28'),_0x4607('0x69')]);_0x4be1a0['field']=_0x4607('0x69');_0xeb933=as[_0x4607('0x6a')](_0x1dc944,_0xba71d8['type'],_0x4be1a0);_0x13e29c[_0x4adf32](_0xeb933[_0x4607('0x6b')],_0xeb933['value'][_0x4607('0x6c')],_0xeb933[_0x4607('0x62')][_0x4607('0x18')]);}break;case _0x4607('0x6d'):var _0x5a8d2c=_0x4be1a0[_0x4607('0x62')]['split'](',')[_0x4607('0x3a')](function(_0x43867e){return Number(_0x43867e);});_0x5a8d2c[_0x4607('0x2e')](function(_0x51a202){_0x4f2e00['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x51a202+',%');});_0x477b4a=_[_0x4607('0x6e')](_0x477b4a,_0x5a8d2c);break;case _0x4607('0x6f'):if(_0x4be1a0[_0x4607('0x70')]===_0x4607('0x71')){_0x13e29c[_0x4adf32](_0x4607('0x72'),'%'+_0x4be1a0[_0x4607('0x62')]+'%',null);}else{_0xba71d8=_['find'](_0x4b5160,[_0x4607('0x28'),'UserId']);_0x4be1a0[_0x4607('0x4c')]=_0x4607('0x37');_0xeb933=as[_0x4607('0x6a')](_0x1dc944,_0xba71d8[_0x4607('0x3c')],_0x4be1a0);_0x13e29c[_0x4adf32](_0xeb933['text'],_0xeb933['value'][_0x4607('0x6c')],_0xeb933['value'][_0x4607('0x18')]);}break;case _0x4607('0x73'):_0xeb933=as[_0x4607('0x6a')]('me',null,_0x4be1a0);_0x13e29c[_0x4adf32](_0xeb933[_0x4607('0x6b')],_0xeb933['value'][_0x4607('0x6c')],_0xeb933[_0x4607('0x62')][_0x4607('0x18')]);break;}}else{var _0xeb933=as[_0x4607('0x6a')](_0x1dc944,_0xba71d8[_0x4607('0x3c')],_0x4be1a0);_0x13e29c[_0x4adf32](_0xeb933[_0x4607('0x6b')],_0xeb933[_0x4607('0x62')]['start'],_0xeb933[_0x4607('0x62')][_0x4607('0x18')]);}}}else{var _0xc8b779=_(_0x26facd[_0x4607('0x44')])[_0x4607('0x3e')]()[_0x4607('0x3a')](function(_0x16ed30){return _[_0x4607('0x74')](_0x4b5160,[_0x4607('0x28'),_0x16ed30])?_0x16ed30:undefined;})[_0x4607('0x75')]()[_0x4607('0x62')]();if(!_[_0x4607('0x76')](_0xc8b779)){_0xc8b779[_0x4607('0x2e')](function(_0x2b05fe){if(_0x2b05fe===_0x4607('0x77')){_0x56985e[_0x4607('0x49')]('i.FaxAccountId\x20IN\x20?',[][_0x4607('0x78')](_0x26facd[_0x4607('0x44')][_0x2b05fe]));}else if(_0x2b05fe===_0x4607('0x79')){var _0x24cb46=JSON['parse'](_0x26facd[_0x4607('0x44')][_0x2b05fe])[_0x4607('0x7a')];var _0x260218=JSON[_0x4607('0x7b')](_0x26facd[_0x4607('0x44')][_0x2b05fe])['$lte'];_0x56985e['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x24cb46,_0x260218);}else{if(_0x26facd['query'][_0x2b05fe]===_0x4607('0x7c')){_0x56985e[_0x4607('0x49')]('i.'+_0x2b05fe+_0x4607('0x7d'));}else{_0x56985e[_0x4607('0x49')]('i.'+_0x2b05fe+_0x4607('0x7e'),_0x26facd[_0x4607('0x44')][_0x2b05fe]);}}});}if(_0x26facd[_0x4607('0x44')][_0x4607('0x7f')]){if(_0x26facd['query'][_0x4607('0x7f')]==0x1){_0x56985e[_0x4607('0x63')](_0x4607('0x80'));}else{_0x56985e[_0x4607('0x63')]('`unreadMessages`\x20>\x200');}}if(_0x26facd[_0x4607('0x44')][_0x4607('0x81')]){_0x477b4a=_['isArray'](_0x26facd['query'][_0x4607('0x81')])?_0x26facd[_0x4607('0x44')]['tag']:new Array(_0x26facd[_0x4607('0x44')][_0x4607('0x81')]);_0x477b4a[_0x4607('0x2e')](function(_0x25255e){_0x4f2e00['or'](_0x4607('0x82'),'%,'+_0x25255e+',%');});}if(_0x26facd[_0x4607('0x44')][_0x4607('0x83')]){var _0x583902=_0x26facd[_0x4607('0x44')][_0x4607('0x83')][_0x4607('0x84')]('\x5c','\x5c\x5c')[_0x4607('0x84')](/'/g,'\x27\x27');if(qs[_0x4607('0x85')](_0x583902)){_0x13e29c['or'](_0x4607('0x86'),_0x583902+'%')['or'](_0x4607('0x87'),_0x583902+'%');}_0x13e29c['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x583902+'%');}}_0x56985e[_0x4607('0x49')](_0x13e29c);_0x56985e['group'](_0x4607('0x88'));var _0x25e4fa={'type':db[_0x4607('0x89')]['QueryTypes'][_0x4607('0x8a')],'raw':!![]};var _0x548450=_0x56985e[_0x4607('0x8b')]();_0x548450['field'](_0x4607('0x88'));_0x548450[_0x4607('0x4c')](_0x4607('0x8c'),'unreadMessages');if(_0x4451c7[_0x4607('0x47')]){_0x4451c7['order'][_0x4607('0x2e')](function(_0x57b0c2){var _0x149a46=_0x57b0c2[0x0]===_0x4607('0x8d')?_0x57b0c2[0x0]:'i.'+_0x57b0c2[0x0];_0x56985e['order'](_0x149a46,_0x57b0c2[0x1]===_0x4607('0x8e')?![]:!![]);});}if(!_[_0x4607('0x76')](_0x477b4a)){_0x56985e['having'](_0x4f2e00);_0x548450['where'](_0x4607('0x8f'),_0x477b4a);}BPromise[_0x4607('0x90')]()[_0x4607('0x24')](function(){if(!_0x260ed9){if(_0x26facd['query']['FaxAccountId'])return;_0x548450[_0x4607('0x49')](_0x4607('0x91'));_0x56985e[_0x4607('0x49')](_0x4607('0x91'));return;}if(_0x26facd['user'][_0x4607('0x92')]!==_0x4607('0x93'))return;return _0x26facd[_0x4607('0x94')][_0x4607('0x95')]({'attributes':['id'],'raw':!![]})[_0x4607('0x24')](function(_0x50edb2){if(_['isEmpty'](_0x50edb2)){_0x548450[_0x4607('0x49')](_0x4607('0x96'));_0x56985e[_0x4607('0x49')](_0x4607('0x96'));}else{_0x548450[_0x4607('0x49')](_0x4607('0x97'),_['map'](_0x50edb2,'id'));_0x56985e[_0x4607('0x49')]('i.FaxAccountId\x20IN\x20?',_[_0x4607('0x3a')](_0x50edb2,'id'));}});})[_0x4607('0x24')](function(){if(_0x26facd[_0x4607('0x94')][_0x4607('0x92')]===_0x4607('0x93')&&!_0x260ed9&&!_0x26facd['query'][_0x4607('0x77')])return[];return db[_0x4607('0x98')][_0x4607('0x44')](_0x548450[_0x4607('0x99')](),_0x25e4fa);})['then'](function(_0x50fa55){_0x38b677[_0x4607('0x1e')]=_0x50fa55[_0x4607('0x45')];if(_0x38b677['count']===0x0)return[];return db[_0x4607('0x98')][_0x4607('0x44')](_0xad3aa2['toString'](),_0x25e4fa)['then'](function(_0x175e7b){_0x4815c2=_['keyBy'](_0x175e7b,'id');_0x25e4fa=_[_0x4607('0x9a')](_0x25e4fa,{'model':db[_0x4607('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x26facd[_0x4607('0x44')][_0x4607('0x43')]){_0x4451c7[_0x4607('0x41')][_0x4607('0x2e')](function(_0x288bfa){_0x56985e['field']('i.'+_0x288bfa);});}else{_0x56985e[_0x4607('0x4c')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x4607('0x61'));_0x56985e[_0x4607('0x4c')](_0x4607('0x9b'),_0x4607('0x9c'));_0x56985e[_0x4607('0x4c')](_0x4607('0x9d'),'Account.mandatoryDisposition');_0x56985e[_0x4607('0x4c')](_0x4607('0x9e'),_0x4607('0x8d'));_0x56985e[_0x4607('0x4c')]('i.*');_0x56985e[_0x4607('0x4c')](_0x4607('0x9f'),_0x4607('0xa0'));_0x56985e[_0x4607('0x4c')](_0x4607('0xa1'),_0x4607('0xa2'));_0x56985e['field'](_0x4607('0xa3'),_0x4607('0xa4'));_0x56985e[_0x4607('0x4c')](_0x4607('0xa5'),_0x4607('0xa6'));_0x56985e[_0x4607('0x4c')](_0x4607('0xa7'),'Contact.mobile');_0x56985e[_0x4607('0x4c')](_0x4607('0xa8'),_0x4607('0xa9'));_0x56985e[_0x4607('0x4c')](_0x4607('0xaa'),'Owner.fullname');_0x56985e[_0x4607('0x4c')](_0x4607('0xab'),_0x4607('0xac'));_0x56985e[_0x4607('0x4c')](_0x4607('0xad'),_0x4607('0x2c'));}if(_0x4451c7['limit'])_0x56985e[_0x4607('0x1d')](_0x4451c7[_0x4607('0x1d')]);if(_0x4451c7[_0x4607('0x1b')])_0x56985e[_0x4607('0x1b')](_0x4451c7[_0x4607('0x1b')]);return db[_0x4607('0x98')][_0x4607('0x44')](_0x56985e[_0x4607('0x99')](),_0x25e4fa);})[_0x4607('0x24')](function(_0x5201b3){if(_0x5201b3[_0x4607('0x45')]>0x0)_0x56d770['where'](_0x4607('0xae'),_[_0x4607('0x3a')](_0x5201b3,'id'));return db['sequelize'][_0x4607('0x44')](_0x56d770[_0x4607('0x99')](),_0x25e4fa)[_0x4607('0x24')](function(_0x463f4f){var _0x504124=_[_0x4607('0xaf')](_0x463f4f,'FaxInteractionId');var _0x26a7ad=[];_0x5201b3[_0x4607('0x2e')](function(_0x56c491){_0x26a7ad[_0x4607('0x30')](updateFaxInteraction(_0x56c491,_0x4815c2,_0x504124));});return BPromise['all'](_0x26a7ad);});});})[_0x4607('0x24')](function(_0x1b6adf){_0x38b677[_0x4607('0xb0')]=_0x1b6adf;return _0x38b677;})[_0x4607('0x24')](respondWithFilteredResult(_0x40c1d2,_0x4451c7))[_0x4607('0x31')](handleError(_0x40c1d2,null));};exports[_0x4607('0xb1')]=function(_0x886a83,_0x142891){var _0x495263={'raw':![],'where':{'id':_0x886a83['params']['id']}},_0x246464={};_0x246464[_0x4607('0x42')]=_[_0x4607('0x3e')](db['FaxInteraction'][_0x4607('0xb2')]);_0x246464[_0x4607('0x44')]=_[_0x4607('0x3e')](_0x886a83['query']);_0x246464['filters']=_[_0x4607('0x40')](_0x246464[_0x4607('0x42')],_0x246464[_0x4607('0x44')]);_0x495263[_0x4607('0x41')]=_['intersection'](_0x246464[_0x4607('0x42')],qs['fields'](_0x886a83['query'][_0x4607('0x43')]));_0x495263[_0x4607('0x41')]=_0x495263[_0x4607('0x41')]['length']?_0x495263['attributes']:_0x246464[_0x4607('0x42')];if(_0x886a83[_0x4607('0x44')][_0x4607('0xb3')]){_0x495263[_0x4607('0xb4')]=[{'all':!![]}];}_0x495263=_[_0x4607('0x9a')]({},_0x495263,_0x886a83[_0x4607('0xb5')]);return db[_0x4607('0x3b')][_0x4607('0x60')](_0x495263)[_0x4607('0x24')](handleEntityNotFound(_0x142891,null))[_0x4607('0x24')](respondWithResult(_0x142891,null))[_0x4607('0x31')](handleError(_0x142891,null));};exports[_0x4607('0xb6')]=function(_0x2686cf,_0x15f191){return db['FaxInteraction'][_0x4607('0xb6')](_0x2686cf[_0x4607('0x73')],{})[_0x4607('0x24')](respondWithResult(_0x15f191,0xc9))['catch'](handleError(_0x15f191,null));};exports[_0x4607('0x23')]=function(_0xc22c2c,_0x5cd2db){if(_0xc22c2c[_0x4607('0x73')]['id']){delete _0xc22c2c[_0x4607('0x73')]['id'];}return db[_0x4607('0x3b')]['find']({'where':{'id':_0xc22c2c['params']['id']}})['then'](handleEntityNotFound(_0x5cd2db,null))[_0x4607('0x24')](saveUpdates(_0xc22c2c[_0x4607('0x73')],null))[_0x4607('0x24')](respondWithResult(_0x5cd2db,null))['catch'](handleError(_0x5cd2db,null));};exports[_0x4607('0x25')]=function(_0x170f88,_0x548f0a){return db['FaxInteraction'][_0x4607('0x60')]({'where':{'id':_0x170f88[_0x4607('0xb7')]['id']}})[_0x4607('0x24')](handleEntityNotFound(_0x548f0a,null))[_0x4607('0x24')](removeEntity(_0x548f0a,null))['catch'](handleError(_0x548f0a,null));};exports[_0x4607('0xb8')]=function(_0x301a32,_0x132dbd){return db['FaxInteraction'][_0x4607('0xb8')]()['then'](respondWithResult(_0x132dbd,null))['catch'](handleError(_0x132dbd,null));};exports['addMessage']=function(_0x1950fa,_0x204cf1,_0x2a8b12){return db[_0x4607('0xb9')][_0x4607('0x60')]({'where':{'id':_0x1950fa[_0x4607('0xb7')]['id']}})[_0x4607('0x24')](handleEntityNotFound(_0x204cf1,null))[_0x4607('0x24')](function(_0x2e15f5){if(_0x2e15f5){return _0x2e15f5[_0x4607('0xba')](_0x1950fa[_0x4607('0x73')][_0x4607('0xbb')],_[_0x4607('0xbc')](_0x1950fa[_0x4607('0x73')],['ids','id'])||{});}})[_0x4607('0x24')](respondWithResult(_0x204cf1,null))[_0x4607('0x31')](handleError(_0x204cf1,null));};exports[_0x4607('0xbd')]=function(_0x16a34a,_0x22f00f,_0x4212f0){var _0x496c4d={'raw':![],'where':{}};var _0xeabe34={};var _0x4fc884={'count':0x0,'rows':[]};return db[_0x4607('0x3b')][_0x4607('0xbe')]({'where':{'id':_0x16a34a[_0x4607('0xb7')]['id']}})[_0x4607('0x24')](handleEntityNotFound(_0x22f00f,null))[_0x4607('0x24')](function(_0x3e9ee4){if(_0x3e9ee4){_0xeabe34[_0x4607('0x42')]=_['keys'](db[_0x4607('0xb9')][_0x4607('0xb2')]);_0xeabe34[_0x4607('0x44')]=_[_0x4607('0x3e')](_0x16a34a[_0x4607('0x44')]);_0xeabe34[_0x4607('0x3f')]=_[_0x4607('0x40')](_0xeabe34['model'],_0xeabe34['query']);_0x496c4d[_0x4607('0x41')]=_['intersection'](_0xeabe34[_0x4607('0x42')],qs[_0x4607('0x43')](_0x16a34a[_0x4607('0x44')]['fields']));_0x496c4d[_0x4607('0x41')]=_0x496c4d['attributes'][_0x4607('0x45')]?_0x496c4d[_0x4607('0x41')]:_0xeabe34['model'];if(!_0x16a34a[_0x4607('0x44')][_0x4607('0xbf')](_0x4607('0x46'))){_0x496c4d['limit']=qs['limit'](_0x16a34a['query'][_0x4607('0x1d')]);_0x496c4d[_0x4607('0x1b')]=qs[_0x4607('0x1b')](_0x16a34a[_0x4607('0x44')][_0x4607('0x1b')]);}_0x496c4d[_0x4607('0x47')]=qs[_0x4607('0x48')](_0x16a34a[_0x4607('0x44')][_0x4607('0x48')]);_0x496c4d[_0x4607('0x49')]=qs[_0x4607('0x3f')](_[_0x4607('0x4a')](_0x16a34a['query'],_0xeabe34[_0x4607('0x3f')]));_0x496c4d[_0x4607('0x49')][_0x4607('0xc0')]=_0x3e9ee4['id'];if(_0x16a34a[_0x4607('0x44')][_0x4607('0x83')]){_0x496c4d[_0x4607('0x49')]=_['merge'](_0x496c4d[_0x4607('0x49')],{'$or':_['map'](_0x496c4d[_0x4607('0x41')],function(_0x28bd5f){var _0x42d9b4={};_0x42d9b4[_0x28bd5f]={'$like':'%'+_0x16a34a[_0x4607('0x44')][_0x4607('0x83')]+'%'};return _0x42d9b4;})});}if(_0x16a34a[_0x4607('0x44')]['$gte']){var _0x4c5b73=_0x16a34a['query']['$gte'][_0x4607('0x2d')](',');var _0x68dcd1={};_0x68dcd1[_0x4c5b73[0x0]]={'$gte':moment(_0x4c5b73[0x1])[_0x4607('0xc1')]('YYYY-MM-DD\x20HH:mm:ss')};_0x496c4d[_0x4607('0x49')]=_[_0x4607('0x9a')](_0x496c4d[_0x4607('0x49')],_0x68dcd1);}_0x496c4d=_[_0x4607('0x9a')]({},_0x496c4d,_0x16a34a[_0x4607('0xb5')]);return db[_0x4607('0xb9')][_0x4607('0x1e')]({'where':_0x496c4d[_0x4607('0x49')]})[_0x4607('0x24')](function(_0x3b07bc){_0x4fc884[_0x4607('0x1e')]=_0x3b07bc;if(_0x16a34a[_0x4607('0x44')][_0x4607('0xb3')]){_0x496c4d[_0x4607('0xb4')]=[{'all':!![]}];}return db[_0x4607('0xb9')]['findAll'](_0x496c4d);})[_0x4607('0x24')](function(_0x1dd0de){_0x4fc884[_0x4607('0xb0')]=_0x1dd0de;return _0x4fc884;});}})[_0x4607('0x24')](respondWithFilteredResult(_0x22f00f,_0x496c4d))[_0x4607('0x31')](handleError(_0x22f00f,null));};exports[_0x4607('0xc2')]=function(_0x375569,_0x289839,_0x5c62e3){return db[_0x4607('0x3b')]['find']({'where':{'id':_0x375569[_0x4607('0xb7')]['id']}})['then'](handleEntityNotFound(_0x289839,null))[_0x4607('0x24')](function(_0x3cea36){if(_0x3cea36){return _0x3cea36[_0x4607('0xc3')](_0x375569[_0x4607('0x73')][_0x4607('0xbb')],_[_0x4607('0xbc')](_0x375569[_0x4607('0x73')],[_0x4607('0xbb'),'id'])||{})['spread'](function(){return db[_0x4607('0x6d')][_0x4607('0xc4')]({'attributes':['id',_0x4607('0x28'),_0x4607('0x4d')],'where':{'id':_0x375569['body'][_0x4607('0xbb')]}});})['then'](function(_0x145cbc){socket[_0x4607('0xc5')](_0x4607('0xc6'),{'id':Number(_0x375569[_0x4607('0xb7')]['id']),'tags':_0x145cbc||[]});return{'id':Number(_0x375569[_0x4607('0xb7')]['id']),'tags':_0x145cbc||[]};});}})[_0x4607('0x24')](respondWithResult(_0x289839,null))['catch'](handleError(_0x289839,null));};exports['removeTags']=function(_0xa65a7b,_0xaa311a,_0x972bdb){return db['FaxInteraction'][_0x4607('0x60')]({'where':{'id':_0xa65a7b[_0x4607('0xb7')]['id']}})[_0x4607('0x24')](handleEntityNotFound(_0xaa311a,null))[_0x4607('0x24')](function(_0x523854){if(_0x523854){return _0x523854['removeTags'](_0xa65a7b['query'][_0x4607('0xbb')]);}})[_0x4607('0x24')](respondWithStatusCode(_0xaa311a,null))[_0x4607('0x31')](handleError(_0xaa311a,null));};exports[_0x4607('0xc7')]=function(_0x56ea30,_0x4d5d57){var _0x4ebae8=moment()['unix']()[_0x4607('0x99')]();var _0x19c3ee=path[_0x4607('0xc8')](config[_0x4607('0xc9')],'server','files','tmp');var _0x2e0a5e=path[_0x4607('0xc8')](config[_0x4607('0xc9')],'server',_0x4607('0xca'),'attachments');var _0x4d6d2a=path[_0x4607('0xc8')](_0x19c3ee,_0x4ebae8);var _0x4907b0=util['format'](_0x4607('0xcb'),_0x56ea30[_0x4607('0xb7')]['id'],_0x4ebae8);var _0x5502fd=path[_0x4607('0xc8')](_0x19c3ee,_0x4907b0);var _0x4844aa=[];_0x4844aa[_0x4607('0x30')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});var _0x2f20a3=[{'model':db[_0x4607('0xb9')],'as':'Messages','attributes':['id',_0x4607('0x73'),_0x4607('0x79')],'include':_0x4844aa}];return db[_0x4607('0x3b')][_0x4607('0x60')]({'where':{'id':_0x56ea30[_0x4607('0xb7')]['id']},'include':_0x2f20a3})[_0x4607('0x24')](handleEntityNotFound(_0x4d5d57,null))[_0x4607('0x24')](function(_0x264ff7){if(_0x264ff7&&_0x264ff7[_0x4607('0xcc')]){var _0x29f9f3=_0x264ff7[_0x4607('0xcd')]({'plain':!![]});fs[_0x4607('0xce')](_0x4d6d2a);for(var _0x49ff5b=0x0;_0x49ff5b<_0x29f9f3[_0x4607('0xcc')][_0x4607('0x45')];_0x49ff5b++){var _0x3ab334=_0x29f9f3['Messages'][_0x49ff5b][_0x4607('0xcf')];if(_0x3ab334){var _0x406ae4=path[_0x4607('0xc8')](_0x2e0a5e,_0x3ab334['basename']);if(fs['existsSync'](_0x406ae4)){fs[_0x4607('0xd0')](_0x406ae4)[_0x4607('0xd1')](fs[_0x4607('0xd2')](path[_0x4607('0xc8')](_0x4d6d2a,_0x3ab334[_0x4607('0xd3')])));}}}return BPromise[_0x4607('0x90')]()[_0x4607('0x24')](function(){return new BPromise(function(_0x512729,_0x263b7d){zipdir(_0x4d6d2a,{'saveTo':_0x5502fd},function(_0x4f6225,_0x2722de){if(_0x4f6225)return _0x263b7d(_0x4f6225);return _0x512729(_0x2722de);});})['then'](function(){return new BPromise(function(_0x416e8f,_0x59c610){rimraf(_0x4d6d2a,function(_0x4547bb){if(_0x4547bb)_0x59c610(_0x4547bb);return _0x416e8f();});});})['then'](function(){return _0x4d5d57[_0x4607('0xc7')](_0x5502fd,_0x4907b0,function(_0x32e848){if(_0x32e848){console[_0x4607('0xd4')]('err',_0x32e848);}else{fs[_0x4607('0xd5')](_0x5502fd);}});});});}else{return _0x4d5d57[_0x4607('0x17')](0xc8);}})[_0x4607('0x31')](handleError(_0x4d5d57,null));};
\ No newline at end of file
index 09033bd..358d220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d64=['FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hook','events','../../mysqldb'];(function(_0x20c708,_0x3284ec){var _0x131ff7=function(_0x494c8d){while(--_0x494c8d){_0x20c708['push'](_0x20c708['shift']());}};_0x131ff7(++_0x3284ec);}(_0x6d64,0xb9));var _0x46d6=function(_0x3661c2,_0x56c1d4){_0x3661c2=_0x3661c2-0x0;var _0x16d556=_0x6d64[_0x3661c2];return _0x16d556;};'use strict';var EventEmitter=require(_0x46d6('0x0'));var FaxInteraction=require(_0x46d6('0x1'))['db'][_0x46d6('0x2')];var FaxMessage=require(_0x46d6('0x1'))['db'][_0x46d6('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x46d6('0x4')](0x0);var events={'afterCreate':_0x46d6('0x5'),'afterUpdate':_0x46d6('0x6'),'afterDestroy':_0x46d6('0x7')};function emitEvent(_0x109040){return function(_0x1bb5b9,_0x239686,_0x4e18b2){_0x1bb5b9['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x99aa94){_0x1bb5b9[_0x46d6('0x8')](_0x46d6('0x9'),_0x99aa94['map'](function(_0xc290a5){return{'id':_0xc290a5['id']};}));return FaxMessage[_0x46d6('0xa')]({'where':{'FaxInteractionId':_0x1bb5b9['id'],'direction':'in','read':![]},'raw':!![]});})[_0x46d6('0xb')](function(_0x5e8d98){_0x1bb5b9[_0x46d6('0x8')](_0x46d6('0xc'),_0x5e8d98[_0x46d6('0xd')]);FaxInteractionEvents[_0x46d6('0xe')](_0x109040+':'+_0x1bb5b9['id'],_0x1bb5b9);FaxInteractionEvents[_0x46d6('0xe')](_0x109040,_0x1bb5b9);_0x4e18b2(null);})[_0x46d6('0xf')](_0x4e18b2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0x46d6('0x10')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0xad57=['then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x44b3c7,_0x2d6845){var _0x2e74dd=function(_0x2c4c8a){while(--_0x2c4c8a){_0x44b3c7['push'](_0x44b3c7['shift']());}};_0x2e74dd(++_0x2d6845);}(_0xad57,0xf0));var _0x7ad5=function(_0x47d5d7,_0x9592bc){_0x47d5d7=_0x47d5d7-0x0;var _0x16d631=_0xad57[_0x47d5d7];return _0x16d631;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x7ad5('0x0'))['db']['FaxInteraction'];var FaxMessage=require(_0x7ad5('0x0'))['db'][_0x7ad5('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x7ad5('0x2')](0x0);var events={'afterCreate':_0x7ad5('0x3'),'afterUpdate':_0x7ad5('0x4'),'afterDestroy':_0x7ad5('0x5')};function emitEvent(_0x41b173){return function(_0x206018,_0x2be082,_0x61d43b){_0x206018[_0x7ad5('0x6')]({'attributes':['id'],'raw':!![]})[_0x7ad5('0x7')](function(_0x57921a){_0x206018[_0x7ad5('0x8')](_0x7ad5('0x9'),_0x57921a[_0x7ad5('0xa')](function(_0x59eb1a){return{'id':_0x59eb1a['id']};}));return FaxMessage[_0x7ad5('0xb')]({'where':{'FaxInteractionId':_0x206018['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7ad5('0x7')](function(_0x7545c4){_0x206018[_0x7ad5('0x8')](_0x7ad5('0xc'),_0x7545c4[_0x7ad5('0xd')]);FaxInteractionEvents[_0x7ad5('0xe')](_0x41b173+':'+_0x206018['id'],_0x206018);FaxInteractionEvents[_0x7ad5('0xe')](_0x41b173,_0x206018);_0x61d43b(null);})[_0x7ad5('0xf')](_0x61d43b(null));};}for(var e in events){if(events[_0x7ad5('0x10')](e)){var event=events[e];FaxInteraction[_0x7ad5('0x11')](e,emitEvent(event));}}module[_0x7ad5('0x12')]=FaxInteractionEvents;
\ No newline at end of file
index e66a08d..64c8e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea4e=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','moment','request-promise','path','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','closed','closedAt'];(function(_0x564c91,_0x1e77ad){var _0x1b6438=function(_0x151989){while(--_0x151989){_0x564c91['push'](_0x564c91['shift']());}};_0x1b6438(++_0x1e77ad);}(_0xea4e,0x10c));var _0xeea4=function(_0x99302a,_0xc71da9){_0x99302a=_0x99302a-0x0;var _0x3273ff=_0xea4e[_0x99302a];return _0x3273ff;};'use strict';var _=require(_0xeea4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xeea4('0x1'));var BPromise=require('bluebird');var rp=require(_0xeea4('0x2'));var fs=require('fs');var path=require(_0xeea4('0x3'));var rimraf=require('rimraf');var config=require(_0xeea4('0x4'));var attributes=require(_0xeea4('0x5'));module[_0xeea4('0x6')]=function(_0x12e419,_0x297af5){return _0x12e419[_0xeea4('0x7')](_0xeea4('0x8'),attributes,{'tableName':_0xeea4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x227d33,_0x4c949b,_0xc649e){if(_0x227d33['changed'](_0xeea4('0xa'))){_0x227d33[_0xeea4('0xb')]=moment()[_0xeea4('0xc')](_0xeea4('0xd'));}_0xc649e(null,_0x227d33);}}});};
\ No newline at end of file
+var _0xb7f0=['closed','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','changed'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xb7f0,0x1eb));var _0x0b7f=function(_0x134c79,_0x2136d3){_0x134c79=_0x134c79-0x0;var _0x2c2142=_0xb7f0[_0x134c79];return _0x2c2142;};'use strict';var _=require(_0x0b7f('0x0'));var util=require(_0x0b7f('0x1'));var logger=require(_0x0b7f('0x2'))(_0x0b7f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0b7f('0x4'));var fs=require('fs');var path=require(_0x0b7f('0x5'));var rimraf=require(_0x0b7f('0x6'));var config=require(_0x0b7f('0x7'));var attributes=require(_0x0b7f('0x8'));module[_0x0b7f('0x9')]=function(_0x1c3c26,_0x1ba1e8){return _0x1c3c26[_0x0b7f('0xa')](_0x0b7f('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x98065a,_0x65287,_0x5ed192){if(_0x98065a[_0x0b7f('0xc')](_0x0b7f('0xd'))){_0x98065a['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x5ed192(null,_0x98065a);}}});};
\ No newline at end of file
index e4562c7..bf43238 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4d1=['debug','AddTagsToFaxInteraction','FaxInteraction','find','addTags','ids','omit','body','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','./faxInteraction.socket','register','request','then','info','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','FaxInteraction,\x20%s,\x20%s','result','catch','UpdateFaxInteraction','update','options','raw','where','attributes','limit'];(function(_0x1b7f63,_0x3f5fdf){var _0x58b534=function(_0x2e7bf8){while(--_0x2e7bf8){_0x1b7f63['push'](_0x1b7f63['shift']());}};_0x58b534(++_0x3f5fdf);}(_0xd4d1,0x88));var _0x1d4d=function(_0x3d8b,_0x4ef07f){_0x3d8b=_0x3d8b-0x0;var _0x55aff1=_0xd4d1[_0x3d8b];return _0x55aff1;};'use strict';var _=require(_0x1d4d('0x0'));var util=require(_0x1d4d('0x1'));var moment=require('moment');var BPromise=require(_0x1d4d('0x2'));var rs=require(_0x1d4d('0x3'));var fs=require('fs');var Redis=require(_0x1d4d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1d4d('0x5'));var logger=require(_0x1d4d('0x6'))('rpc');var config=require(_0x1d4d('0x7'));var jayson=require(_0x1d4d('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x1d4d('0x9')]=_[_0x1d4d('0xa')](config['redis'],{'host':_0x1d4d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1d4d('0xc'))[_0x1d4d('0xd')](socket);function respondWithRpcPromise(_0x1cb9b3,_0x14a911,_0x202cab){return new BPromise(function(_0x3b0691,_0x55e2fa){return client[_0x1d4d('0xe')](_0x1cb9b3,_0x202cab)[_0x1d4d('0xf')](function(_0x510cd8){logger[_0x1d4d('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x14a911,_0x1d4d('0x11'));logger['debug'](_0x1d4d('0x12'),_0x14a911,_0x1d4d('0x11'),JSON[_0x1d4d('0x13')](_0x510cd8));if(_0x510cd8[_0x1d4d('0x14')]){if(_0x510cd8[_0x1d4d('0x14')]['code']===0x1f4){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x14a911,_0x510cd8[_0x1d4d('0x14')][_0x1d4d('0x15')]);return _0x55e2fa(_0x510cd8[_0x1d4d('0x14')][_0x1d4d('0x15')]);}logger[_0x1d4d('0x14')](_0x1d4d('0x16'),_0x14a911,_0x510cd8[_0x1d4d('0x14')][_0x1d4d('0x15')]);return _0x3b0691(_0x510cd8['error']['message']);}else{logger['info'](_0x1d4d('0x16'),_0x14a911,'request\x20sent');_0x3b0691(_0x510cd8[_0x1d4d('0x17')][_0x1d4d('0x15')]);}})[_0x1d4d('0x18')](function(_0x538fb4){logger[_0x1d4d('0x14')](_0x1d4d('0x16'),_0x14a911,_0x538fb4);_0x55e2fa(_0x538fb4);});});}exports[_0x1d4d('0x19')]=function(_0x3a6542){var _0x180311=this;return new Promise(function(_0x2190b2,_0x133c3f){return db['FaxInteraction'][_0x1d4d('0x1a')](_0x3a6542['body'],{'raw':_0x3a6542[_0x1d4d('0x1b')]?_0x3a6542[_0x1d4d('0x1b')][_0x1d4d('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a6542[_0x1d4d('0x1b')]?_0x3a6542[_0x1d4d('0x1b')][_0x1d4d('0x1d')]||null:null,'attributes':_0x3a6542[_0x1d4d('0x1b')]?_0x3a6542[_0x1d4d('0x1b')][_0x1d4d('0x1e')]||null:null,'limit':_0x3a6542[_0x1d4d('0x1b')]?_0x3a6542['options'][_0x1d4d('0x1f')]||null:null})[_0x1d4d('0xf')](function(_0x494e08){logger['info'](_0x1d4d('0x19'),_0x3a6542);logger[_0x1d4d('0x20')](_0x1d4d('0x19'),_0x3a6542,JSON[_0x1d4d('0x13')](_0x494e08));_0x2190b2(_0x494e08);})[_0x1d4d('0x18')](function(_0x3868df){logger['error'](_0x1d4d('0x19'),_0x3868df['message'],_0x3a6542);_0x133c3f(_0x180311[_0x1d4d('0x14')](0x1f4,_0x3868df[_0x1d4d('0x15')]));});});};exports[_0x1d4d('0x21')]=function(_0x52dea0){return new Promise(function(_0x9dd491,_0x5132eb){return db[_0x1d4d('0x22')][_0x1d4d('0x23')]({'where':_0x52dea0[_0x1d4d('0x1b')]?_0x52dea0[_0x1d4d('0x1b')]['where']||null:null})[_0x1d4d('0xf')](function(_0x366957){if(_0x366957){return _0x366957[_0x1d4d('0x24')](_0x52dea0['body'][_0x1d4d('0x25')],_[_0x1d4d('0x26')](_0x52dea0[_0x1d4d('0x27')],[_0x1d4d('0x25'),'id'])||{});}})[_0x1d4d('0x28')](function(_0x58324e){logger[_0x1d4d('0x10')](_0x1d4d('0x29'),_0x52dea0);logger[_0x1d4d('0x20')](_0x1d4d('0x29'),_0x52dea0,JSON[_0x1d4d('0x13')](_0x58324e));_0x9dd491(_0x58324e);})[_0x1d4d('0x18')](function(_0x1f629a){logger['error'](_0x1d4d('0x29'),_0x1f629a[_0x1d4d('0x15')],_0x52dea0);_0x5132eb(_this[_0x1d4d('0x14')](0x1f4,_0x1f629a['message']));});});};
\ No newline at end of file
+var _0x8485=['options','raw','attributes','UpdateFaxInteraction','AddTagsToFaxInteraction','find','where','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','defaults','./faxInteraction.socket','register','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FaxInteraction','update'];(function(_0x1f300d,_0x2cb7d1){var _0x468993=function(_0x4c83b9){while(--_0x4c83b9){_0x1f300d['push'](_0x1f300d['shift']());}};_0x468993(++_0x2cb7d1);}(_0x8485,0x1b1));var _0x5848=function(_0x27ff7a,_0x28f6db){_0x27ff7a=_0x27ff7a-0x0;var _0x5a518b=_0x8485[_0x27ff7a];return _0x5a518b;};'use strict';var _=require(_0x5848('0x0'));var util=require(_0x5848('0x1'));var moment=require(_0x5848('0x2'));var BPromise=require(_0x5848('0x3'));var rs=require(_0x5848('0x4'));var fs=require('fs');var Redis=require(_0x5848('0x5'));var db=require(_0x5848('0x6'))['db'];var utils=require(_0x5848('0x7'));var logger=require(_0x5848('0x8'))(_0x5848('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x5848('0xa')]({'port':0x232a});config[_0x5848('0xb')]=_[_0x5848('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5848('0xb')]));require(_0x5848('0xd'))[_0x5848('0xe')](socket);function respondWithRpcPromise(_0x3e4066,_0x1c7e22,_0x4d6e5c){return new BPromise(function(_0x3590c7,_0x414e01){return client['request'](_0x3e4066,_0x4d6e5c)[_0x5848('0xf')](function(_0x3b09c8){logger[_0x5848('0x10')](_0x5848('0x11'),_0x1c7e22,_0x5848('0x12'));logger[_0x5848('0x13')](_0x5848('0x14'),_0x1c7e22,_0x5848('0x12'),JSON[_0x5848('0x15')](_0x3b09c8));if(_0x3b09c8[_0x5848('0x16')]){if(_0x3b09c8[_0x5848('0x16')][_0x5848('0x17')]===0x1f4){logger[_0x5848('0x16')](_0x5848('0x11'),_0x1c7e22,_0x3b09c8[_0x5848('0x16')][_0x5848('0x18')]);return _0x414e01(_0x3b09c8[_0x5848('0x16')]['message']);}logger[_0x5848('0x16')](_0x5848('0x11'),_0x1c7e22,_0x3b09c8[_0x5848('0x16')][_0x5848('0x18')]);return _0x3590c7(_0x3b09c8[_0x5848('0x16')][_0x5848('0x18')]);}else{logger['info']('FaxInteraction,\x20%s,\x20%s',_0x1c7e22,_0x5848('0x12'));_0x3590c7(_0x3b09c8[_0x5848('0x19')]['message']);}})[_0x5848('0x1a')](function(_0x2fbf3d){logger[_0x5848('0x16')](_0x5848('0x11'),_0x1c7e22,_0x2fbf3d);_0x414e01(_0x2fbf3d);});});}exports['UpdateFaxInteraction']=function(_0xf6a394){var _0x1504d5=this;return new Promise(function(_0x5b157d,_0x3ab926){return db[_0x5848('0x1b')][_0x5848('0x1c')](_0xf6a394['body'],{'raw':_0xf6a394[_0x5848('0x1d')]?_0xf6a394[_0x5848('0x1d')][_0x5848('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf6a394[_0x5848('0x1d')]?_0xf6a394['options']['where']||null:null,'attributes':_0xf6a394['options']?_0xf6a394[_0x5848('0x1d')][_0x5848('0x1f')]||null:null,'limit':_0xf6a394[_0x5848('0x1d')]?_0xf6a394[_0x5848('0x1d')]['limit']||null:null})[_0x5848('0xf')](function(_0x325ef9){logger[_0x5848('0x10')](_0x5848('0x20'),_0xf6a394);logger[_0x5848('0x13')]('UpdateFaxInteraction',_0xf6a394,JSON['stringify'](_0x325ef9));_0x5b157d(_0x325ef9);})[_0x5848('0x1a')](function(_0x459590){logger[_0x5848('0x16')](_0x5848('0x20'),_0x459590['message'],_0xf6a394);_0x3ab926(_0x1504d5[_0x5848('0x16')](0x1f4,_0x459590['message']));});});};exports[_0x5848('0x21')]=function(_0x3a6a07){return new Promise(function(_0x44d9c8,_0x5bc30d){return db[_0x5848('0x1b')][_0x5848('0x22')]({'where':_0x3a6a07['options']?_0x3a6a07[_0x5848('0x1d')][_0x5848('0x23')]||null:null})[_0x5848('0xf')](function(_0x540a2e){if(_0x540a2e){return _0x540a2e[_0x5848('0x24')](_0x3a6a07[_0x5848('0x25')][_0x5848('0x26')],_[_0x5848('0x27')](_0x3a6a07[_0x5848('0x25')],[_0x5848('0x26'),'id'])||{});}})[_0x5848('0x28')](function(_0x15e3bc){logger[_0x5848('0x10')](_0x5848('0x29'),_0x3a6a07);logger['debug'](_0x5848('0x29'),_0x3a6a07,JSON[_0x5848('0x15')](_0x15e3bc));_0x44d9c8(_0x15e3bc);})[_0x5848('0x1a')](function(_0x4ea08c){logger[_0x5848('0x16')](_0x5848('0x29'),_0x4ea08c[_0x5848('0x18')],_0x3a6a07);_0x5bc30d(_this['error'](0x1f4,_0x4ea08c[_0x5848('0x18')]));});});};
\ No newline at end of file
index 8afcdf4..ebc3ff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6e0=['length','faxInteraction:','./faxInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x4b3d13,_0x1993d5){var _0xf64dd8=function(_0x2304ed){while(--_0x2304ed){_0x4b3d13['push'](_0x4b3d13['shift']());}};_0xf64dd8(++_0x1993d5);}(_0xa6e0,0x16a));var _0x0a6e=function(_0x1ee2f0,_0x4b46ce){_0x1ee2f0=_0x1ee2f0-0x0;var _0x4a6e59=_0xa6e0[_0x1ee2f0];return _0x4a6e59;};'use strict';var FaxInteractionEvents=require(_0x0a6e('0x0'));var events=[_0x0a6e('0x1'),_0x0a6e('0x2'),_0x0a6e('0x3')];function createListener(_0x232ca6,_0x52925e){return function(_0x2ea68e){_0x52925e[_0x0a6e('0x4')](_0x232ca6,_0x2ea68e);};}function removeListener(_0x57f48e,_0x117772){return function(){FaxInteractionEvents[_0x0a6e('0x5')](_0x57f48e,_0x117772);};}exports[_0x0a6e('0x6')]=function(_0x556d1d){for(var _0x417a0c=0x0,_0x3f5608=events[_0x0a6e('0x7')];_0x417a0c<_0x3f5608;_0x417a0c++){var _0x3c70f1=events[_0x417a0c];var _0x1d5f3d=createListener(_0x0a6e('0x8')+_0x3c70f1,_0x556d1d);FaxInteractionEvents['on'](_0x3c70f1,_0x1d5f3d);}};
\ No newline at end of file
+var _0x2589=['update','emit','removeListener','register','length','faxInteraction:','./faxInteraction.events','save','remove'];(function(_0x510243,_0x1e4a99){var _0x4adc90=function(_0x4183f6){while(--_0x4183f6){_0x510243['push'](_0x510243['shift']());}};_0x4adc90(++_0x1e4a99);}(_0x2589,0x19b));var _0x9258=function(_0x137160,_0x154132){_0x137160=_0x137160-0x0;var _0x404033=_0x2589[_0x137160];return _0x404033;};'use strict';var FaxInteractionEvents=require(_0x9258('0x0'));var events=[_0x9258('0x1'),_0x9258('0x2'),_0x9258('0x3')];function createListener(_0x412dbc,_0x578529){return function(_0x338541){_0x578529[_0x9258('0x4')](_0x412dbc,_0x338541);};}function removeListener(_0x5723dd,_0x3ded9d){return function(){FaxInteractionEvents[_0x9258('0x5')](_0x5723dd,_0x3ded9d);};}exports[_0x9258('0x6')]=function(_0x2c61af){for(var _0x166499=0x0,_0x49fa2c=events[_0x9258('0x7')];_0x166499<_0x49fa2c;_0x166499++){var _0x1ae0d4=events[_0x166499];var _0x363005=createListener(_0x9258('0x8')+_0x1ae0d4,_0x2c61af);FaxInteractionEvents['on'](_0x1ae0d4,_0x363005);}};
\ No newline at end of file
index ca4ac74..98b8a30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdba=['post','create','addMessage','/:id/tags','fax','addTags','tracked','faxinteraction:update','update','faxinteraction:destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','/:id','show','download'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfdba,0xf4));var _0xafdb=function(_0x222f0d,_0x1c8230){_0x222f0d=_0x222f0d-0x0;var _0x2b0429=_0xfdba[_0x222f0d];return _0x2b0429;};'use strict';var multer=require(_0xafdb('0x0'));var util=require(_0xafdb('0x1'));var path=require(_0xafdb('0x2'));var timeout=require(_0xafdb('0x3'));var express=require(_0xafdb('0x4'));var router=express[_0xafdb('0x5')]();var fs_extra=require(_0xafdb('0x6'));var auth=require(_0xafdb('0x7'));var interaction=require(_0xafdb('0x8'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router[_0xafdb('0x9')]('/',auth['isAuthenticated'](),controller[_0xafdb('0xa')]);router['get'](_0xafdb('0xb'),auth[_0xafdb('0xc')](),controller[_0xafdb('0xd')]);router[_0xafdb('0x9')](_0xafdb('0xe'),auth[_0xafdb('0xc')](),controller[_0xafdb('0xf')]);router['get']('/:id/messages',auth[_0xafdb('0xc')](),controller['getMessages']);router[_0xafdb('0x9')]('/:id/download',auth[_0xafdb('0xc')](),controller[_0xafdb('0x10')]);router[_0xafdb('0x11')]('/',auth[_0xafdb('0xc')](),controller[_0xafdb('0x12')]);router[_0xafdb('0x11')]('/:id/messages',auth['isAuthenticated'](),controller[_0xafdb('0x13')]);router[_0xafdb('0x11')](_0xafdb('0x14'),auth[_0xafdb('0xc')](),interaction['tracked'](_0xafdb('0x15'),'faxinteraction:addtags'),controller[_0xafdb('0x16')]);router['put'](_0xafdb('0xe'),auth['isAuthenticated'](),interaction[_0xafdb('0x17')](_0xafdb('0x15'),_0xafdb('0x18')),controller[_0xafdb('0x19')]);router['delete']('/:id',auth['isAuthenticated'](),interaction[_0xafdb('0x17')](_0xafdb('0x15'),_0xafdb('0x1a')),controller['destroy']);router['delete'](_0xafdb('0x14'),auth[_0xafdb('0xc')](),controller[_0xafdb('0x1b')]);module[_0xafdb('0x1c')]=router;
\ No newline at end of file
+var _0x4331=['faxinteraction:addtags','addTags','put','faxinteraction:update','update','faxinteraction:destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./faxInteraction.controller','index','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','tracked','fax'];(function(_0x571350,_0x576cf1){var _0x5f1394=function(_0x2444cd){while(--_0x2444cd){_0x571350['push'](_0x571350['shift']());}};_0x5f1394(++_0x576cf1);}(_0x4331,0x91));var _0x1433=function(_0x53a00d,_0x462437){_0x53a00d=_0x53a00d-0x0;var _0x28b7f6=_0x4331[_0x53a00d];return _0x28b7f6;};'use strict';var multer=require(_0x1433('0x0'));var util=require(_0x1433('0x1'));var path=require(_0x1433('0x2'));var timeout=require(_0x1433('0x3'));var express=require(_0x1433('0x4'));var router=express[_0x1433('0x5')]();var fs_extra=require(_0x1433('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1433('0x7'));var config=require('../../config/environment');var controller=require(_0x1433('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x1433('0x9')]);router[_0x1433('0xa')](_0x1433('0xb'),auth[_0x1433('0xc')](),controller[_0x1433('0xd')]);router[_0x1433('0xa')](_0x1433('0xe'),auth['isAuthenticated'](),controller[_0x1433('0xf')]);router[_0x1433('0xa')](_0x1433('0x10'),auth['isAuthenticated'](),controller[_0x1433('0x11')]);router[_0x1433('0xa')]('/:id/download',auth[_0x1433('0xc')](),controller[_0x1433('0x12')]);router[_0x1433('0x13')]('/',auth[_0x1433('0xc')](),controller[_0x1433('0x14')]);router[_0x1433('0x13')](_0x1433('0x10'),auth[_0x1433('0xc')](),controller[_0x1433('0x15')]);router[_0x1433('0x13')](_0x1433('0x16'),auth[_0x1433('0xc')](),interaction[_0x1433('0x17')](_0x1433('0x18'),_0x1433('0x19')),controller[_0x1433('0x1a')]);router[_0x1433('0x1b')]('/:id',auth[_0x1433('0xc')](),interaction[_0x1433('0x17')]('fax',_0x1433('0x1c')),controller[_0x1433('0x1d')]);router['delete'](_0x1433('0xe'),auth['isAuthenticated'](),interaction['tracked']('fax',_0x1433('0x1e')),controller['destroy']);router[_0x1433('0x1f')](_0x1433('0x16'),auth[_0x1433('0xc')](),controller[_0x1433('0x20')]);module[_0x1433('0x21')]=router;
\ No newline at end of file
index 56dc09e..6b0db76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb0d=['ENUM','out','TEXT','DATE','sequelize','BOOLEAN'];(function(_0x8acdc8,_0x943227){var _0x320908=function(_0x2f91ec){while(--_0x2f91ec){_0x8acdc8['push'](_0x8acdc8['shift']());}};_0x320908(++_0x943227);}(_0xeb0d,0xe2));var _0xdeb0=function(_0x3719ec,_0x4638c2){_0x3719ec=_0x3719ec-0x0;var _0x53af3a=_0xeb0d[_0x3719ec];return _0x53af3a;};'use strict';var Sequelize=require(_0xdeb0('0x0'));module['exports']={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xdeb0('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0xdeb0('0x2')]('in','out'),'defaultValue':_0xdeb0('0x3'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xdeb0('0x4')],'defaultValue':null},'readAt':{'type':Sequelize[_0xdeb0('0x5')]}};
\ No newline at end of file
+var _0xf120=['TEXT','medium','ENUM','out','DATE','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf120,0x179));var _0x0f12=function(_0x5209a2,_0xcfb0e2){_0x5209a2=_0x5209a2-0x0;var _0x34efc9=_0xf120[_0x5209a2];return _0x34efc9;};'use strict';var Sequelize=require('sequelize');module[_0x0f12('0x0')]={'body':{'type':Sequelize[_0x0f12('0x1')](_0x0f12('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x0f12('0x3')]('in',_0x0f12('0x4')),'defaultValue':_0x0f12('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x0f12('0x5')]}};
\ No newline at end of file
index fc0daf3..810648c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc852=['message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','stack','name','map','FaxMessage','fieldName','key','query','keys','filters','intersection','model','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','params','rawAttributes','fields','length','include','find','body','describe','accept','read','format','UserId','user','get','FaxInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','agent','fullname','email','internal','manual','SIP/%s','channel','event','EventManager','acceptmessage','fax','FaxInteraction','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','User','interface','motionChannel','rejectmessage','create','findOne','isNil','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','download','join','root','server','files','Attachment','basename','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','http','client','request','then','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s'];(function(_0x397f8d,_0x4d6c73){var _0x150000=function(_0x212a7a){while(--_0x212a7a){_0x397f8d['push'](_0x397f8d['shift']());}};_0x150000(++_0x4d6c73);}(_0xc852,0x18a));var _0x2c85=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc852[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2c85('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c85('0x1'));var rp=require(_0x2c85('0x2'));var moment=require(_0x2c85('0x3'));var BPromise=require(_0x2c85('0x4'));var Mustache=require(_0x2c85('0x5'));var util=require(_0x2c85('0x6'));var path=require(_0x2c85('0x7'));var sox=require(_0x2c85('0x8'));var csv=require(_0x2c85('0x9'));var ejs=require(_0x2c85('0xa'));var fs=require('fs');var fs_extra=require(_0x2c85('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2c85('0xc'));var jsforce=require(_0x2c85('0xd'));var deskjs=require(_0x2c85('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2c85('0xf'));var Papa=require(_0x2c85('0x10'));var Redis=require(_0x2c85('0x11'));var authService=require(_0x2c85('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2c85('0x13'));var hardwareService=require(_0x2c85('0x14'));var logger=require(_0x2c85('0x15'))(_0x2c85('0x16'));var utils=require(_0x2c85('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2c85('0x18'));var db=require('../../mysqldb')['db'];config[_0x2c85('0x19')]=_[_0x2c85('0x1a')](config['redis'],{'host':_0x2c85('0x1b'),'port':0x18eb});var socket=require(_0x2c85('0x1c'))(new Redis(config['redis']));require(_0x2c85('0x1d'))[_0x2c85('0x1e')](socket);var jayson=require(_0x2c85('0x1f'));var client=jayson['client'][_0x2c85('0x20')]({'port':0x232c});var client9002=jayson[_0x2c85('0x21')][_0x2c85('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xe5cb8a,_0x286f94,_0x2c2284,_0x23fc85){return new BPromise(function(_0xd8e2b3,_0x24f887){var _0xd5de54=_0x23fc85||client;return _0xd5de54[_0x2c85('0x22')](_0xe5cb8a,_0x2c2284)[_0x2c85('0x23')](function(_0x29b846){logger[_0x2c85('0x24')]('FaxMessage,\x20%s,\x20%s',_0x286f94,_0x2c85('0x25'));logger[_0x2c85('0x26')](_0x2c85('0x27'),_0x286f94,_0x2c85('0x25'),JSON[_0x2c85('0x28')](_0x29b846));if(_0x29b846[_0x2c85('0x29')]){if(_0x29b846['error'][_0x2c85('0x2a')]===0x1f4){logger[_0x2c85('0x29')](_0x2c85('0x2b'),_0x286f94,_0x29b846['error'][_0x2c85('0x2c')]);return _0x24f887(_0x29b846['error']['message']);}logger[_0x2c85('0x29')](_0x2c85('0x2b'),_0x286f94,_0x29b846[_0x2c85('0x29')][_0x2c85('0x2c')]);return _0xd8e2b3(_0x29b846['error']['message']);}else{logger['info'](_0x2c85('0x2b'),_0x286f94,_0x2c85('0x25'));_0xd8e2b3(_0x29b846[_0x2c85('0x2d')][_0x2c85('0x2c')]);}})[_0x2c85('0x2e')](function(_0x439565){logger[_0x2c85('0x29')](_0x2c85('0x2b'),_0x286f94,_0x439565);_0x24f887(_0x439565);});});}function respondWithStatusCode(_0x2b98a1,_0x5a9513){_0x5a9513=_0x5a9513||0xcc;return function(_0x2b4569){if(_0x2b4569){return _0x2b98a1[_0x2c85('0x2f')](_0x5a9513);}return _0x2b98a1[_0x2c85('0x30')](_0x5a9513)[_0x2c85('0x31')]();};}function respondWithResult(_0x249750,_0x4516aa){_0x4516aa=_0x4516aa||0xc8;return function(_0x1ac2ad){if(_0x1ac2ad){return _0x249750[_0x2c85('0x30')](_0x4516aa)['json'](_0x1ac2ad);}};}function respondWithFilteredResult(_0x13a0c6,_0x16d044){return function(_0x596220){if(_0x596220){var _0x17223c=typeof _0x16d044[_0x2c85('0x32')]===_0x2c85('0x33')&&typeof _0x16d044[_0x2c85('0x34')]===_0x2c85('0x33');var _0x40ec6f=_0x596220[_0x2c85('0x35')];var _0x41871e=_0x17223c?0x0:_0x16d044[_0x2c85('0x32')];var _0x1b49c4=_0x17223c?_0x596220[_0x2c85('0x35')]:_0x16d044[_0x2c85('0x32')]+_0x16d044[_0x2c85('0x34')];var _0x2721f1;if(_0x1b49c4>=_0x40ec6f){_0x1b49c4=_0x40ec6f;_0x2721f1=0xc8;}else{_0x2721f1=0xce;}_0x13a0c6[_0x2c85('0x30')](_0x2721f1);return _0x13a0c6[_0x2c85('0x36')]('Content-Range',_0x41871e+'-'+_0x1b49c4+'/'+_0x40ec6f)[_0x2c85('0x37')](_0x596220);}return null;};}function patchUpdates(_0x36b48c){return function(_0x572108){try{jsonpatch[_0x2c85('0x38')](_0x572108,_0x36b48c,!![]);}catch(_0x340ea7){return BPromise[_0x2c85('0x39')](_0x340ea7);}return _0x572108[_0x2c85('0x3a')]();};}function saveUpdates(_0x4b7409,_0x2ff718){return function(_0x4fbf8a){if(_0x4fbf8a){return _0x4fbf8a[_0x2c85('0x3b')](_0x4b7409)['then'](function(_0x10f29b){return _0x10f29b;});}return null;};}function removeEntity(_0x2af9d9,_0x407cc9){return function(_0xf3a83d){if(_0xf3a83d){return _0xf3a83d[_0x2c85('0x3c')]()[_0x2c85('0x23')](function(){_0x2af9d9[_0x2c85('0x30')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58fd72,_0x38a114){return function(_0x26eeb7){if(!_0x26eeb7){_0x58fd72[_0x2c85('0x2f')](0x194);}return _0x26eeb7;};}function handleError(_0x3fb318,_0x4df07c){_0x4df07c=_0x4df07c||0x1f4;return function(_0xf58ddc){logger[_0x2c85('0x29')](_0xf58ddc[_0x2c85('0x3d')]);if(_0xf58ddc[_0x2c85('0x3e')]){delete _0xf58ddc[_0x2c85('0x3e')];}_0x3fb318[_0x2c85('0x30')](_0x4df07c)['send'](_0xf58ddc);};}exports['index']=function(_0x32300b,_0x8e43ce){var _0x8e2424={},_0x337c8d={},_0xe0e055={'count':0x0,'rows':[]};var _0x9195c4=_[_0x2c85('0x3f')](db[_0x2c85('0x40')]['rawAttributes'],function(_0x3518ce){return{'name':_0x3518ce[_0x2c85('0x41')],'type':_0x3518ce['type'][_0x2c85('0x42')]};});_0x337c8d['model']=_[_0x2c85('0x3f')](_0x9195c4,_0x2c85('0x3e'));_0x337c8d[_0x2c85('0x43')]=_[_0x2c85('0x44')](_0x32300b[_0x2c85('0x43')]);_0x337c8d[_0x2c85('0x45')]=_[_0x2c85('0x46')](_0x337c8d['model'],_0x337c8d[_0x2c85('0x43')]);_0x8e2424['attributes']=_['intersection'](_0x337c8d[_0x2c85('0x47')],qs['fields'](_0x32300b[_0x2c85('0x43')]['fields']));_0x8e2424[_0x2c85('0x48')]=_0x8e2424[_0x2c85('0x48')]['length']?_0x8e2424[_0x2c85('0x48')]:_0x337c8d[_0x2c85('0x47')];if(!_0x32300b[_0x2c85('0x43')][_0x2c85('0x49')]('nolimit')){_0x8e2424[_0x2c85('0x34')]=qs['limit'](_0x32300b[_0x2c85('0x43')][_0x2c85('0x34')]);_0x8e2424[_0x2c85('0x32')]=qs[_0x2c85('0x32')](_0x32300b[_0x2c85('0x43')]['offset']);}_0x8e2424[_0x2c85('0x4a')]=qs[_0x2c85('0x4b')](_0x32300b[_0x2c85('0x43')][_0x2c85('0x4b')]);_0x8e2424[_0x2c85('0x4c')]=qs[_0x2c85('0x45')](_[_0x2c85('0x4d')](_0x32300b[_0x2c85('0x43')],_0x337c8d[_0x2c85('0x45')]),_0x9195c4);if(_0x32300b[_0x2c85('0x43')][_0x2c85('0x4e')]){_0x8e2424[_0x2c85('0x4c')]=_[_0x2c85('0x4f')](_0x8e2424['where'],{'$or':_[_0x2c85('0x3f')](_0x9195c4,function(_0x5a3d3a){if(_0x5a3d3a[_0x2c85('0x50')]!==_0x2c85('0x51')){var _0x1319ac={};_0x1319ac[_0x5a3d3a['name']]={'$like':'%'+_0x32300b[_0x2c85('0x43')]['filter']+'%'};return _0x1319ac;}})});}_0x8e2424=_[_0x2c85('0x4f')]({},_0x8e2424,_0x32300b[_0x2c85('0x52')]);var _0x90a3b9={'where':_0x8e2424[_0x2c85('0x4c')]};return db[_0x2c85('0x40')][_0x2c85('0x35')](_0x90a3b9)[_0x2c85('0x23')](function(_0x16893d){_0xe0e055[_0x2c85('0x35')]=_0x16893d;if(_0x32300b[_0x2c85('0x43')][_0x2c85('0x53')]){_0x8e2424['include']=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x8e2424);})[_0x2c85('0x23')](function(_0x29e96f){_0xe0e055[_0x2c85('0x54')]=_0x29e96f;return _0xe0e055;})[_0x2c85('0x23')](respondWithFilteredResult(_0x8e43ce,_0x8e2424))[_0x2c85('0x2e')](handleError(_0x8e43ce,null));};exports['show']=function(_0x41ebbc,_0x171a26){var _0x15c105={'raw':!![],'where':{'id':_0x41ebbc[_0x2c85('0x55')]['id']}},_0xd6268d={};_0xd6268d['model']=_['keys'](db[_0x2c85('0x40')][_0x2c85('0x56')]);_0xd6268d[_0x2c85('0x43')]=_['keys'](_0x41ebbc[_0x2c85('0x43')]);_0xd6268d['filters']=_['intersection'](_0xd6268d[_0x2c85('0x47')],_0xd6268d[_0x2c85('0x43')]);_0x15c105[_0x2c85('0x48')]=_[_0x2c85('0x46')](_0xd6268d[_0x2c85('0x47')],qs[_0x2c85('0x57')](_0x41ebbc['query']['fields']));_0x15c105[_0x2c85('0x48')]=_0x15c105[_0x2c85('0x48')][_0x2c85('0x58')]?_0x15c105[_0x2c85('0x48')]:_0xd6268d[_0x2c85('0x47')];if(_0x41ebbc[_0x2c85('0x43')][_0x2c85('0x53')]){_0x15c105[_0x2c85('0x59')]=[{'all':!![]}];}_0x15c105=_[_0x2c85('0x4f')]({},_0x15c105,_0x41ebbc[_0x2c85('0x52')]);return db[_0x2c85('0x40')][_0x2c85('0x5a')](_0x15c105)[_0x2c85('0x23')](handleEntityNotFound(_0x171a26,null))[_0x2c85('0x23')](respondWithResult(_0x171a26,null))['catch'](handleError(_0x171a26,null));};exports[_0x2c85('0x3b')]=function(_0x5157ce,_0x3be683){if(_0x5157ce[_0x2c85('0x5b')]['id']){delete _0x5157ce[_0x2c85('0x5b')]['id'];}return db['FaxMessage'][_0x2c85('0x5a')]({'where':{'id':_0x5157ce[_0x2c85('0x55')]['id']}})[_0x2c85('0x23')](handleEntityNotFound(_0x3be683,null))[_0x2c85('0x23')](saveUpdates(_0x5157ce[_0x2c85('0x5b')],null))[_0x2c85('0x23')](respondWithResult(_0x3be683,null))['catch'](handleError(_0x3be683,null));};exports['destroy']=function(_0x16c1d2,_0x493380){return db[_0x2c85('0x40')][_0x2c85('0x5a')]({'where':{'id':_0x16c1d2[_0x2c85('0x55')]['id']}})['then'](handleEntityNotFound(_0x493380,null))[_0x2c85('0x23')](removeEntity(_0x493380,null))['catch'](handleError(_0x493380,null));};exports[_0x2c85('0x5c')]=function(_0x534292,_0x18a67f){return db[_0x2c85('0x40')][_0x2c85('0x5c')]()[_0x2c85('0x23')](respondWithResult(_0x18a67f,null))['catch'](handleError(_0x18a67f,null));};var interaction_log=require(_0x2c85('0x15'))('fax-interactions');exports[_0x2c85('0x5d')]=function(_0x19a99f,_0x42f93e,_0x5ded9c){var _0x734894={'agent':{},'channel':'fax'};if(_0x19a99f[_0x2c85('0x5b')]['id']){delete _0x19a99f[_0x2c85('0x5b')]['id'];}_0x19a99f['body'][_0x2c85('0x5e')]=!![];_0x19a99f[_0x2c85('0x5b')]['readAt']=moment()[_0x2c85('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x19a99f[_0x2c85('0x5b')][_0x2c85('0x60')]=_0x19a99f[_0x2c85('0x5b')][_0x2c85('0x60')]||_0x19a99f[_0x2c85('0x61')]['id'];_0x734894['agent']['id']=_0x19a99f[_0x2c85('0x5b')][_0x2c85('0x60')];return db['FaxMessage'][_0x2c85('0x5a')]({'where':{'id':_0x19a99f[_0x2c85('0x55')]['id'],'UserId':null}})[_0x2c85('0x23')](handleEntityNotFound(_0x42f93e,null))['then'](saveUpdates(_0x19a99f[_0x2c85('0x5b')],null))[_0x2c85('0x23')](function(_0x224051){if(_0x224051){_0x734894['message']=_0x224051[_0x2c85('0x62')]({'plain':!![]});return db['FaxInteraction'][_0x2c85('0x5a')]({'where':{'id':_0x224051[_0x2c85('0x63')]}});}return null;})[_0x2c85('0x23')](handleEntityNotFound(_0x42f93e,null))[_0x2c85('0x23')](function(_0xc9b557){if(_0xc9b557){return _0xc9b557['update']({'UserId':_0x19a99f['body'][_0x2c85('0x60')],'read1stAt':_['isNil'](_0xc9b557[_0x2c85('0x64')])?moment()[_0x2c85('0x5f')](_0x2c85('0x65')):undefined});}return null;})[_0x2c85('0x23')](function(_0x77a8d0){if(_0x77a8d0){_0x734894[_0x2c85('0x66')]=_0x77a8d0[_0x2c85('0x62')]({'plain':!![]});interaction_log[_0x2c85('0x24')](_0x2c85('0x67'),_0x19a99f[_0x2c85('0x61')]['id'],_0x19a99f[_0x2c85('0x61')][_0x2c85('0x3e')],_0x19a99f[_0x2c85('0x61')][_0x2c85('0x68')],_0x734894[_0x2c85('0x66')]['id'],_0x19a99f[_0x2c85('0x5b')]?JSON[_0x2c85('0x28')](_0x19a99f['body']):_0x2c85('0x69'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x734894);}return null;})[_0x2c85('0x23')](function(_0x516f74){var _0x34009d=_0x2c85('0x6a')+_0x516f74['message'][_0x2c85('0x6b')];return db['sequelize'][_0x2c85('0x43')](_0x34009d,{'type':db[_0x2c85('0x6c')][_0x2c85('0x6d')][_0x2c85('0x6e')],'raw':!![]})[_0x2c85('0x23')](function(_0x414c5d){return _0x414c5d;});})[_0x2c85('0x23')](function(_0x2eabb7){if(_0x2eabb7){_0x734894['message'][_0x2c85('0x6f')]=_0x2eabb7[0x0];if(!_0x19a99f[_0x2c85('0x5b')][_0x2c85('0x60')])return;return db['User'][_0x2c85('0x5a')]({'where':{'id':_0x19a99f[_0x2c85('0x5b')][_0x2c85('0x60')],'role':_0x2c85('0x70')},'attributes':['id',_0x2c85('0x3e'),_0x2c85('0x71'),_0x2c85('0x72'),_0x2c85('0x73')],'raw':!![]});}return null;})[_0x2c85('0x23')](function(_0x32ad77){if(!_0x32ad77)return null;_0x734894['message'][_0x2c85('0x70')]=_0x32ad77;return _0x734894;})[_0x2c85('0x23')](function(_0xb0be18){if(_0xb0be18){if(_0x19a99f[_0x2c85('0x5b')][_0x2c85('0x74')]){_0x734894[_0x2c85('0x2c')]['interface']=util[_0x2c85('0x5f')](_0x2c85('0x75'),_0x19a99f[_0x2c85('0x61')][_0x2c85('0x3e')]);_0x734894['message'][_0x2c85('0x76')]=_0x734894[_0x2c85('0x76')];_0x734894['message']['motionChannel']=_0x734894[_0x2c85('0x76')];_0x734894['message'][_0x2c85('0x77')]=_0x2c85('0x5d');return respondWithRpcPromise(_0x2c85('0x78'),'EventManager',{'event':_0x2c85('0x79'),'message':_0x734894['message']},client9002)[_0x2c85('0x23')](function(){return _0x734894;});}return _0x734894;}return null;})[_0x2c85('0x23')](respondWithResult(_0x42f93e,null))[_0x2c85('0x2e')](handleError(_0x42f93e,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x2c85('0x39')]=function(_0x444974,_0x564044,_0xde0779){var _0x837041={'agent':{},'channel':_0x2c85('0x7a')};if(_0x444974[_0x2c85('0x5b')]['id']){delete _0x444974[_0x2c85('0x5b')]['id'];}_0x444974['body'][_0x2c85('0x60')]=_0x444974[_0x2c85('0x5b')][_0x2c85('0x60')]||_0x444974[_0x2c85('0x61')]['id'];_0x837041[_0x2c85('0x70')]['id']=_0x444974[_0x2c85('0x5b')][_0x2c85('0x60')];return db[_0x2c85('0x40')][_0x2c85('0x5a')]({'where':{'id':_0x444974[_0x2c85('0x55')]['id'],'UserId':null}})[_0x2c85('0x23')](handleEntityNotFound(_0x564044,null))[_0x2c85('0x23')](function(_0x34d50a){if(_0x34d50a){_0x837041[_0x2c85('0x2c')]=_0x34d50a[_0x2c85('0x62')]({'plain':!![]});return db[_0x2c85('0x7b')][_0x2c85('0x5a')]({'where':{'id':_0x34d50a[_0x2c85('0x63')]}});}return null;})[_0x2c85('0x23')](handleEntityNotFound(_0x564044,null))[_0x2c85('0x23')](function(_0x4a4cff){if(_0x4a4cff){_0x837041['interaction']=_0x4a4cff[_0x2c85('0x62')]({'plain':!![]});interaction_log[_0x2c85('0x24')](_0x2c85('0x7c'),_0x444974[_0x2c85('0x61')]['id'],_0x444974[_0x2c85('0x61')][_0x2c85('0x3e')],_0x444974['user'][_0x2c85('0x68')],_0x837041[_0x2c85('0x66')]['id'],_0x444974[_0x2c85('0x5b')]?JSON['stringify'](_0x444974[_0x2c85('0x5b')]):_0x2c85('0x69'));return respondWithRpcPromise(_0x2c85('0x7d'),_0x2c85('0x7e'),_0x837041);}return null;})[_0x2c85('0x23')](function(_0x493a88){var _0x11274b=_0x2c85('0x6a')+_0x493a88[_0x2c85('0x2c')]['ContactId'];return db[_0x2c85('0x7f')][_0x2c85('0x43')](_0x11274b,{'type':db['Sequelize'][_0x2c85('0x6d')][_0x2c85('0x6e')],'raw':!![]})[_0x2c85('0x23')](function(_0x2ad5f7){return _0x2ad5f7;});})[_0x2c85('0x23')](function(_0x49cf20){if(_0x49cf20){_0x837041[_0x2c85('0x2c')]['contact']=_0x49cf20[0x0];if(!_0x444974['body'][_0x2c85('0x60')])return;return db[_0x2c85('0x80')][_0x2c85('0x5a')]({'where':{'id':_0x444974[_0x2c85('0x5b')][_0x2c85('0x60')],'role':'agent'},'attributes':['id',_0x2c85('0x3e'),_0x2c85('0x71'),_0x2c85('0x72'),'internal'],'raw':!![]});}return null;})[_0x2c85('0x23')](function(_0x150da8){if(!_0x150da8)return null;_0x837041[_0x2c85('0x2c')][_0x2c85('0x70')]=_0x150da8;return _0x837041;})['then'](function(_0x4b1507){if(_0x4b1507){_0x4b1507[_0x2c85('0x2c')][_0x2c85('0x81')]=util[_0x2c85('0x5f')](_0x2c85('0x75'),_0x444974['user'][_0x2c85('0x3e')]);_0x4b1507[_0x2c85('0x2c')]['channel']=_0x837041[_0x2c85('0x76')];_0x4b1507[_0x2c85('0x2c')][_0x2c85('0x82')]=_0x837041['channel'];_0x4b1507[_0x2c85('0x2c')][_0x2c85('0x77')]=_0x2c85('0x39');respondWithRpcPromise(_0x2c85('0x78'),_0x2c85('0x78'),{'event':_0x2c85('0x83'),'message':_0x4b1507['message']},client9002);return _0x837041;}return null;})[_0x2c85('0x23')](respondWithResult(_0x564044,null))['catch'](handleError(_0x564044,null));};exports[_0x2c85('0x84')]=function(_0x4c42bd,_0x152fc6){var _0x32ce7e;return db[_0x2c85('0x40')][_0x2c85('0x84')](_0x4c42bd[_0x2c85('0x5b')],{})['then'](function(_0x24cfa9){_0x32ce7e=_0x24cfa9;return db['CmContact'][_0x2c85('0x85')]({'where':{'id':_0x32ce7e[_0x2c85('0x6b')]}});})['then'](function(_0x1f60ba){if(_[_0x2c85('0x86')](_0x1f60ba)){return;}else{_0x32ce7e[_0x2c85('0x7a')]=_0x1f60ba[_0x2c85('0x7a')];return db['Attachment'][_0x2c85('0x85')]({'where':{'id':_0x32ce7e[_0x2c85('0x87')]}});}})[_0x2c85('0x23')](function(_0x35da13){return respondWithRpcPromise(_0x2c85('0x88'),_0x2c85('0x88'),{'FaxAccountId':_[_0x2c85('0x86')](_0x4c42bd[_0x2c85('0x5b')])?undefined:_0x4c42bd['body'][_0x2c85('0x89')],'path':_[_0x2c85('0x86')](_0x35da13)?undefined:util['format'](_0x2c85('0x8a'),_0x35da13['basename']),'fax':_[_0x2c85('0x86')](_0x32ce7e[_0x2c85('0x7a')])?undefined:_0x32ce7e['fax'],'AttachmentId':_0x32ce7e[_0x2c85('0x87')]},client9002);})[_0x2c85('0x23')](respondWithResult(_0x152fc6,0xc9))[_0x2c85('0x2e')](handleError(_0x152fc6,null));};exports[_0x2c85('0x8b')]=function(_0x4c2680,_0x5c80ef){var _0x14a89a=path[_0x2c85('0x8c')](config[_0x2c85('0x8d')],_0x2c85('0x8e'),_0x2c85('0x8f'),'attachments');return db[_0x2c85('0x40')]['find']({'where':{'id':_0x4c2680[_0x2c85('0x55')]['id']},'include':[{'model':db['Attachment'],'as':_0x2c85('0x90')}]})[_0x2c85('0x23')](handleEntityNotFound(_0x5c80ef,null))['then'](function(_0x4eab43){if(_0x4eab43){return _0x5c80ef[_0x2c85('0x8b')](path[_0x2c85('0x8c')](_0x14a89a,_0x4eab43[_0x2c85('0x90')][_0x2c85('0x91')]));}})[_0x2c85('0x2e')](handleError(_0x5c80ef,null));};
\ No newline at end of file
+var _0x2aa4=['jayson/promise','client','http','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','end','name','send','map','FaxMessage','rawAttributes','fieldName','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','includeAll','include','show','params','length','options','find','body','destroy','describe','accept','fax','read','readAt','format','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','User','fullname','email','internal','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','contact','motionChannel','create','findOne','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','download','join','root','server','files','attachments','Attachment','basename','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register'];(function(_0x5bd263,_0xce4369){var _0x1400ec=function(_0x28887a){while(--_0x28887a){_0x5bd263['push'](_0x5bd263['shift']());}};_0x1400ec(++_0xce4369);}(_0x2aa4,0x194));var _0x42aa=function(_0x1b8a45,_0x57940b){_0x1b8a45=_0x1b8a45-0x0;var _0x571e2c=_0x2aa4[_0x1b8a45];return _0x571e2c;};'use strict';var emlformat=require(_0x42aa('0x0'));var rimraf=require(_0x42aa('0x1'));var zipdir=require(_0x42aa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x42aa('0x3'));var moment=require(_0x42aa('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x42aa('0x5'));var path=require(_0x42aa('0x6'));var sox=require(_0x42aa('0x7'));var csv=require(_0x42aa('0x8'));var ejs=require(_0x42aa('0x9'));var fs=require('fs');var fs_extra=require(_0x42aa('0xa'));var _=require(_0x42aa('0xb'));var squel=require(_0x42aa('0xc'));var crypto=require(_0x42aa('0xd'));var jsforce=require(_0x42aa('0xe'));var deskjs=require(_0x42aa('0xf'));var toCsv=require(_0x42aa('0x8'));var querystring=require('querystring');var Papa=require(_0x42aa('0x10'));var Redis=require(_0x42aa('0x11'));var authService=require(_0x42aa('0x12'));var qs=require(_0x42aa('0x13'));var as=require(_0x42aa('0x14'));var hardwareService=require(_0x42aa('0x15'));var logger=require(_0x42aa('0x16'))(_0x42aa('0x17'));var utils=require(_0x42aa('0x18'));var config=require(_0x42aa('0x19'));var licenseUtil=require(_0x42aa('0x1a'));var db=require(_0x42aa('0x1b'))['db'];config[_0x42aa('0x1c')]=_['defaults'](config[_0x42aa('0x1c')],{'host':_0x42aa('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x42aa('0x1c')]));require('./faxMessage.socket')[_0x42aa('0x1e')](socket);var jayson=require(_0x42aa('0x1f'));var client=jayson[_0x42aa('0x20')]['http']({'port':0x232c});var client9002=jayson[_0x42aa('0x20')][_0x42aa('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x6916ac,_0x21edf7,_0x17c2b2,_0x16cd37){return new BPromise(function(_0x1d8d66,_0x4217fd){var _0x1507d1=_0x16cd37||client;return _0x1507d1[_0x42aa('0x22')](_0x6916ac,_0x17c2b2)[_0x42aa('0x23')](function(_0x44c051){logger[_0x42aa('0x24')](_0x42aa('0x25'),_0x21edf7,_0x42aa('0x26'));logger[_0x42aa('0x27')](_0x42aa('0x28'),_0x21edf7,_0x42aa('0x26'),JSON[_0x42aa('0x29')](_0x44c051));if(_0x44c051[_0x42aa('0x2a')]){if(_0x44c051[_0x42aa('0x2a')][_0x42aa('0x2b')]===0x1f4){logger[_0x42aa('0x2a')](_0x42aa('0x25'),_0x21edf7,_0x44c051[_0x42aa('0x2a')][_0x42aa('0x2c')]);return _0x4217fd(_0x44c051['error']['message']);}logger['error'](_0x42aa('0x25'),_0x21edf7,_0x44c051[_0x42aa('0x2a')][_0x42aa('0x2c')]);return _0x1d8d66(_0x44c051[_0x42aa('0x2a')][_0x42aa('0x2c')]);}else{logger[_0x42aa('0x24')](_0x42aa('0x25'),_0x21edf7,'request\x20sent');_0x1d8d66(_0x44c051[_0x42aa('0x2d')][_0x42aa('0x2c')]);}})[_0x42aa('0x2e')](function(_0x547701){logger[_0x42aa('0x2a')](_0x42aa('0x25'),_0x21edf7,_0x547701);_0x4217fd(_0x547701);});});}function respondWithStatusCode(_0x21bc4c,_0x4f5c0a){_0x4f5c0a=_0x4f5c0a||0xcc;return function(_0xc57252){if(_0xc57252){return _0x21bc4c[_0x42aa('0x2f')](_0x4f5c0a);}return _0x21bc4c[_0x42aa('0x30')](_0x4f5c0a)['end']();};}function respondWithResult(_0xa39521,_0x4f9417){_0x4f9417=_0x4f9417||0xc8;return function(_0x4e9c0e){if(_0x4e9c0e){return _0xa39521[_0x42aa('0x30')](_0x4f9417)[_0x42aa('0x31')](_0x4e9c0e);}};}function respondWithFilteredResult(_0x41f701,_0xbd76b0){return function(_0xd356e1){if(_0xd356e1){var _0x3872cd=typeof _0xbd76b0[_0x42aa('0x32')]===_0x42aa('0x33')&&typeof _0xbd76b0[_0x42aa('0x34')]===_0x42aa('0x33');var _0xc2aab4=_0xd356e1['count'];var _0x57e783=_0x3872cd?0x0:_0xbd76b0[_0x42aa('0x32')];var _0x4aef3c=_0x3872cd?_0xd356e1[_0x42aa('0x35')]:_0xbd76b0[_0x42aa('0x32')]+_0xbd76b0['limit'];var _0x342282;if(_0x4aef3c>=_0xc2aab4){_0x4aef3c=_0xc2aab4;_0x342282=0xc8;}else{_0x342282=0xce;}_0x41f701[_0x42aa('0x30')](_0x342282);return _0x41f701[_0x42aa('0x36')](_0x42aa('0x37'),_0x57e783+'-'+_0x4aef3c+'/'+_0xc2aab4)[_0x42aa('0x31')](_0xd356e1);}return null;};}function patchUpdates(_0x5acb53){return function(_0x789d2a){try{jsonpatch['apply'](_0x789d2a,_0x5acb53,!![]);}catch(_0x416472){return BPromise[_0x42aa('0x38')](_0x416472);}return _0x789d2a[_0x42aa('0x39')]();};}function saveUpdates(_0x3ddc9f,_0xa4b72){return function(_0xea983b){if(_0xea983b){return _0xea983b[_0x42aa('0x3a')](_0x3ddc9f)[_0x42aa('0x23')](function(_0x4fc466){return _0x4fc466;});}return null;};}function removeEntity(_0x32647f,_0x31f852){return function(_0x1168be){if(_0x1168be){return _0x1168be['destroy']()[_0x42aa('0x23')](function(){_0x32647f[_0x42aa('0x30')](0xcc)[_0x42aa('0x3b')]();});}};}function handleEntityNotFound(_0x26d87d,_0x44aa0b){return function(_0x3b8422){if(!_0x3b8422){_0x26d87d['sendStatus'](0x194);}return _0x3b8422;};}function handleError(_0x2dea89,_0x24480a){_0x24480a=_0x24480a||0x1f4;return function(_0x291cc0){logger['error'](_0x291cc0['stack']);if(_0x291cc0[_0x42aa('0x3c')]){delete _0x291cc0[_0x42aa('0x3c')];}_0x2dea89['status'](_0x24480a)[_0x42aa('0x3d')](_0x291cc0);};}exports['index']=function(_0xcd2ed8,_0x51e01e){var _0x43c2a9={},_0x166923={},_0x5c10d3={'count':0x0,'rows':[]};var _0x4bd397=_[_0x42aa('0x3e')](db[_0x42aa('0x3f')][_0x42aa('0x40')],function(_0x1c002f){return{'name':_0x1c002f[_0x42aa('0x41')],'type':_0x1c002f['type']['key']};});_0x166923[_0x42aa('0x42')]=_['map'](_0x4bd397,_0x42aa('0x3c'));_0x166923[_0x42aa('0x43')]=_[_0x42aa('0x44')](_0xcd2ed8[_0x42aa('0x43')]);_0x166923['filters']=_['intersection'](_0x166923[_0x42aa('0x42')],_0x166923[_0x42aa('0x43')]);_0x43c2a9[_0x42aa('0x45')]=_[_0x42aa('0x46')](_0x166923['model'],qs[_0x42aa('0x47')](_0xcd2ed8[_0x42aa('0x43')][_0x42aa('0x47')]));_0x43c2a9[_0x42aa('0x45')]=_0x43c2a9[_0x42aa('0x45')]['length']?_0x43c2a9['attributes']:_0x166923['model'];if(!_0xcd2ed8[_0x42aa('0x43')][_0x42aa('0x48')](_0x42aa('0x49'))){_0x43c2a9['limit']=qs[_0x42aa('0x34')](_0xcd2ed8['query']['limit']);_0x43c2a9[_0x42aa('0x32')]=qs[_0x42aa('0x32')](_0xcd2ed8[_0x42aa('0x43')]['offset']);}_0x43c2a9['order']=qs[_0x42aa('0x4a')](_0xcd2ed8[_0x42aa('0x43')][_0x42aa('0x4a')]);_0x43c2a9[_0x42aa('0x4b')]=qs[_0x42aa('0x4c')](_[_0x42aa('0x4d')](_0xcd2ed8[_0x42aa('0x43')],_0x166923[_0x42aa('0x4c')]),_0x4bd397);if(_0xcd2ed8[_0x42aa('0x43')][_0x42aa('0x4e')]){_0x43c2a9[_0x42aa('0x4b')]=_[_0x42aa('0x4f')](_0x43c2a9[_0x42aa('0x4b')],{'$or':_[_0x42aa('0x3e')](_0x4bd397,function(_0x4726b0){if(_0x4726b0[_0x42aa('0x50')]!==_0x42aa('0x51')){var _0x2ef83e={};_0x2ef83e[_0x4726b0['name']]={'$like':'%'+_0xcd2ed8[_0x42aa('0x43')]['filter']+'%'};return _0x2ef83e;}})});}_0x43c2a9=_[_0x42aa('0x4f')]({},_0x43c2a9,_0xcd2ed8['options']);var _0x278016={'where':_0x43c2a9[_0x42aa('0x4b')]};return db[_0x42aa('0x3f')][_0x42aa('0x35')](_0x278016)[_0x42aa('0x23')](function(_0x5e06ff){_0x5c10d3['count']=_0x5e06ff;if(_0xcd2ed8[_0x42aa('0x43')][_0x42aa('0x52')]){_0x43c2a9[_0x42aa('0x53')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x43c2a9);})[_0x42aa('0x23')](function(_0x3d1f3f){_0x5c10d3['rows']=_0x3d1f3f;return _0x5c10d3;})['then'](respondWithFilteredResult(_0x51e01e,_0x43c2a9))[_0x42aa('0x2e')](handleError(_0x51e01e,null));};exports[_0x42aa('0x54')]=function(_0x3ff146,_0x582e67){var _0x3e60a0={'raw':!![],'where':{'id':_0x3ff146[_0x42aa('0x55')]['id']}},_0x3016d5={};_0x3016d5[_0x42aa('0x42')]=_[_0x42aa('0x44')](db[_0x42aa('0x3f')][_0x42aa('0x40')]);_0x3016d5[_0x42aa('0x43')]=_[_0x42aa('0x44')](_0x3ff146[_0x42aa('0x43')]);_0x3016d5[_0x42aa('0x4c')]=_[_0x42aa('0x46')](_0x3016d5[_0x42aa('0x42')],_0x3016d5[_0x42aa('0x43')]);_0x3e60a0['attributes']=_[_0x42aa('0x46')](_0x3016d5[_0x42aa('0x42')],qs['fields'](_0x3ff146[_0x42aa('0x43')]['fields']));_0x3e60a0[_0x42aa('0x45')]=_0x3e60a0[_0x42aa('0x45')][_0x42aa('0x56')]?_0x3e60a0[_0x42aa('0x45')]:_0x3016d5[_0x42aa('0x42')];if(_0x3ff146[_0x42aa('0x43')][_0x42aa('0x52')]){_0x3e60a0[_0x42aa('0x53')]=[{'all':!![]}];}_0x3e60a0=_[_0x42aa('0x4f')]({},_0x3e60a0,_0x3ff146[_0x42aa('0x57')]);return db[_0x42aa('0x3f')][_0x42aa('0x58')](_0x3e60a0)['then'](handleEntityNotFound(_0x582e67,null))[_0x42aa('0x23')](respondWithResult(_0x582e67,null))[_0x42aa('0x2e')](handleError(_0x582e67,null));};exports['update']=function(_0x2523e0,_0x1454d2){if(_0x2523e0[_0x42aa('0x59')]['id']){delete _0x2523e0[_0x42aa('0x59')]['id'];}return db[_0x42aa('0x3f')][_0x42aa('0x58')]({'where':{'id':_0x2523e0['params']['id']}})[_0x42aa('0x23')](handleEntityNotFound(_0x1454d2,null))[_0x42aa('0x23')](saveUpdates(_0x2523e0['body'],null))[_0x42aa('0x23')](respondWithResult(_0x1454d2,null))[_0x42aa('0x2e')](handleError(_0x1454d2,null));};exports[_0x42aa('0x5a')]=function(_0x2e05d8,_0x338706){return db['FaxMessage']['find']({'where':{'id':_0x2e05d8[_0x42aa('0x55')]['id']}})['then'](handleEntityNotFound(_0x338706,null))[_0x42aa('0x23')](removeEntity(_0x338706,null))[_0x42aa('0x2e')](handleError(_0x338706,null));};exports[_0x42aa('0x5b')]=function(_0x6740a3,_0x305525){return db[_0x42aa('0x3f')]['describe']()[_0x42aa('0x23')](respondWithResult(_0x305525,null))[_0x42aa('0x2e')](handleError(_0x305525,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x42aa('0x5c')]=function(_0x39fee3,_0x1ceb32,_0x4e599e){var _0x447366={'agent':{},'channel':_0x42aa('0x5d')};if(_0x39fee3[_0x42aa('0x59')]['id']){delete _0x39fee3[_0x42aa('0x59')]['id'];}_0x39fee3[_0x42aa('0x59')][_0x42aa('0x5e')]=!![];_0x39fee3[_0x42aa('0x59')][_0x42aa('0x5f')]=moment()[_0x42aa('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x39fee3[_0x42aa('0x59')]['UserId']=_0x39fee3[_0x42aa('0x59')][_0x42aa('0x61')]||_0x39fee3[_0x42aa('0x62')]['id'];_0x447366[_0x42aa('0x63')]['id']=_0x39fee3[_0x42aa('0x59')][_0x42aa('0x61')];return db['FaxMessage']['find']({'where':{'id':_0x39fee3[_0x42aa('0x55')]['id'],'UserId':null}})[_0x42aa('0x23')](handleEntityNotFound(_0x1ceb32,null))[_0x42aa('0x23')](saveUpdates(_0x39fee3[_0x42aa('0x59')],null))[_0x42aa('0x23')](function(_0x549c3b){if(_0x549c3b){_0x447366[_0x42aa('0x2c')]=_0x549c3b[_0x42aa('0x64')]({'plain':!![]});return db[_0x42aa('0x65')][_0x42aa('0x58')]({'where':{'id':_0x549c3b[_0x42aa('0x66')]}});}return null;})[_0x42aa('0x23')](handleEntityNotFound(_0x1ceb32,null))[_0x42aa('0x23')](function(_0x2aa565){if(_0x2aa565){return _0x2aa565['update']({'UserId':_0x39fee3[_0x42aa('0x59')][_0x42aa('0x61')],'read1stAt':_[_0x42aa('0x67')](_0x2aa565[_0x42aa('0x68')])?moment()[_0x42aa('0x60')](_0x42aa('0x69')):undefined});}return null;})[_0x42aa('0x23')](function(_0x28e987){if(_0x28e987){_0x447366[_0x42aa('0x6a')]=_0x28e987[_0x42aa('0x64')]({'plain':!![]});interaction_log[_0x42aa('0x24')](_0x42aa('0x6b'),_0x39fee3[_0x42aa('0x62')]['id'],_0x39fee3[_0x42aa('0x62')]['name'],_0x39fee3[_0x42aa('0x62')][_0x42aa('0x6c')],_0x447366['interaction']['id'],_0x39fee3[_0x42aa('0x59')]?JSON[_0x42aa('0x29')](_0x39fee3[_0x42aa('0x59')]):'null');return respondWithRpcPromise(_0x42aa('0x6d'),_0x42aa('0x6e'),_0x447366);}return null;})[_0x42aa('0x23')](function(_0x3a6b7e){var _0x2db47c=_0x42aa('0x6f')+_0x3a6b7e['message'][_0x42aa('0x70')];return db[_0x42aa('0x71')][_0x42aa('0x43')](_0x2db47c,{'type':db['Sequelize'][_0x42aa('0x72')][_0x42aa('0x73')],'raw':!![]})[_0x42aa('0x23')](function(_0x1293ce){return _0x1293ce;});})[_0x42aa('0x23')](function(_0x4d8d45){if(_0x4d8d45){_0x447366[_0x42aa('0x2c')]['contact']=_0x4d8d45[0x0];if(!_0x39fee3[_0x42aa('0x59')][_0x42aa('0x61')])return;return db[_0x42aa('0x74')][_0x42aa('0x58')]({'where':{'id':_0x39fee3[_0x42aa('0x59')]['UserId'],'role':'agent'},'attributes':['id','name',_0x42aa('0x75'),_0x42aa('0x76'),_0x42aa('0x77')],'raw':!![]});}return null;})['then'](function(_0x24e438){if(!_0x24e438)return null;_0x447366[_0x42aa('0x2c')][_0x42aa('0x63')]=_0x24e438;return _0x447366;})[_0x42aa('0x23')](function(_0x38ecba){if(_0x38ecba){if(_0x39fee3[_0x42aa('0x59')]['manual']){_0x447366['message'][_0x42aa('0x78')]=util[_0x42aa('0x60')](_0x42aa('0x79'),_0x39fee3['user'][_0x42aa('0x3c')]);_0x447366['message']['channel']=_0x447366[_0x42aa('0x7a')];_0x447366[_0x42aa('0x2c')]['motionChannel']=_0x447366[_0x42aa('0x7a')];_0x447366[_0x42aa('0x2c')][_0x42aa('0x7b')]='accept';return respondWithRpcPromise(_0x42aa('0x7c'),_0x42aa('0x7c'),{'event':_0x42aa('0x7d'),'message':_0x447366['message']},client9002)[_0x42aa('0x23')](function(){return _0x447366;});}return _0x447366;}return null;})[_0x42aa('0x23')](respondWithResult(_0x1ceb32,null))[_0x42aa('0x2e')](handleError(_0x1ceb32,null));};var interaction_log=require(_0x42aa('0x16'))('fax-interactions');exports[_0x42aa('0x38')]=function(_0x323901,_0x5aed4d,_0x297248){var _0x54f83e={'agent':{},'channel':'fax'};if(_0x323901[_0x42aa('0x59')]['id']){delete _0x323901[_0x42aa('0x59')]['id'];}_0x323901[_0x42aa('0x59')][_0x42aa('0x61')]=_0x323901['body'][_0x42aa('0x61')]||_0x323901[_0x42aa('0x62')]['id'];_0x54f83e[_0x42aa('0x63')]['id']=_0x323901['body'][_0x42aa('0x61')];return db[_0x42aa('0x3f')][_0x42aa('0x58')]({'where':{'id':_0x323901['params']['id'],'UserId':null}})[_0x42aa('0x23')](handleEntityNotFound(_0x5aed4d,null))[_0x42aa('0x23')](function(_0x590e18){if(_0x590e18){_0x54f83e[_0x42aa('0x2c')]=_0x590e18[_0x42aa('0x64')]({'plain':!![]});return db[_0x42aa('0x65')][_0x42aa('0x58')]({'where':{'id':_0x590e18[_0x42aa('0x66')]}});}return null;})[_0x42aa('0x23')](handleEntityNotFound(_0x5aed4d,null))['then'](function(_0x242059){if(_0x242059){_0x54f83e[_0x42aa('0x6a')]=_0x242059[_0x42aa('0x64')]({'plain':!![]});interaction_log[_0x42aa('0x24')](_0x42aa('0x7e'),_0x323901[_0x42aa('0x62')]['id'],_0x323901['user'][_0x42aa('0x3c')],_0x323901[_0x42aa('0x62')]['role'],_0x54f83e['interaction']['id'],_0x323901[_0x42aa('0x59')]?JSON[_0x42aa('0x29')](_0x323901[_0x42aa('0x59')]):'null');return respondWithRpcPromise(_0x42aa('0x7f'),_0x42aa('0x80'),_0x54f83e);}return null;})[_0x42aa('0x23')](function(_0x223dee){var _0x45023a=_0x42aa('0x6f')+_0x223dee[_0x42aa('0x2c')][_0x42aa('0x70')];return db[_0x42aa('0x71')]['query'](_0x45023a,{'type':db[_0x42aa('0x81')][_0x42aa('0x72')][_0x42aa('0x73')],'raw':!![]})[_0x42aa('0x23')](function(_0x1ace2a){return _0x1ace2a;});})[_0x42aa('0x23')](function(_0x253e0b){if(_0x253e0b){_0x54f83e[_0x42aa('0x2c')][_0x42aa('0x82')]=_0x253e0b[0x0];if(!_0x323901[_0x42aa('0x59')]['UserId'])return;return db['User']['find']({'where':{'id':_0x323901[_0x42aa('0x59')][_0x42aa('0x61')],'role':_0x42aa('0x63')},'attributes':['id',_0x42aa('0x3c'),_0x42aa('0x75'),_0x42aa('0x76'),_0x42aa('0x77')],'raw':!![]});}return null;})[_0x42aa('0x23')](function(_0x1dd2b3){if(!_0x1dd2b3)return null;_0x54f83e[_0x42aa('0x2c')][_0x42aa('0x63')]=_0x1dd2b3;return _0x54f83e;})[_0x42aa('0x23')](function(_0x259ddb){if(_0x259ddb){_0x259ddb[_0x42aa('0x2c')][_0x42aa('0x78')]=util[_0x42aa('0x60')](_0x42aa('0x79'),_0x323901[_0x42aa('0x62')]['name']);_0x259ddb[_0x42aa('0x2c')][_0x42aa('0x7a')]=_0x54f83e[_0x42aa('0x7a')];_0x259ddb['message'][_0x42aa('0x83')]=_0x54f83e[_0x42aa('0x7a')];_0x259ddb['message'][_0x42aa('0x7b')]=_0x42aa('0x38');respondWithRpcPromise(_0x42aa('0x7c'),'EventManager',{'event':'rejectmessage','message':_0x259ddb[_0x42aa('0x2c')]},client9002);return _0x54f83e;}return null;})[_0x42aa('0x23')](respondWithResult(_0x5aed4d,null))[_0x42aa('0x2e')](handleError(_0x5aed4d,null));};exports[_0x42aa('0x84')]=function(_0x58cd4b,_0x4a3530){var _0x58862b;return db[_0x42aa('0x3f')][_0x42aa('0x84')](_0x58cd4b[_0x42aa('0x59')],{})[_0x42aa('0x23')](function(_0x407521){_0x58862b=_0x407521;return db['CmContact'][_0x42aa('0x85')]({'where':{'id':_0x58862b[_0x42aa('0x70')]}});})['then'](function(_0x34646b){if(_[_0x42aa('0x67')](_0x34646b)){return;}else{_0x58862b[_0x42aa('0x5d')]=_0x34646b[_0x42aa('0x5d')];return db['Attachment'][_0x42aa('0x85')]({'where':{'id':_0x58862b[_0x42aa('0x86')]}});}})[_0x42aa('0x23')](function(_0x4ebfe6){return respondWithRpcPromise(_0x42aa('0x87'),_0x42aa('0x87'),{'FaxAccountId':_[_0x42aa('0x67')](_0x58cd4b[_0x42aa('0x59')])?undefined:_0x58cd4b['body']['FaxAccountId'],'path':_[_0x42aa('0x67')](_0x4ebfe6)?undefined:util[_0x42aa('0x60')](_0x42aa('0x88'),_0x4ebfe6['basename']),'fax':_[_0x42aa('0x67')](_0x58862b['fax'])?undefined:_0x58862b['fax'],'AttachmentId':_0x58862b[_0x42aa('0x86')]},client9002);})[_0x42aa('0x23')](respondWithResult(_0x4a3530,0xc9))[_0x42aa('0x2e')](handleError(_0x4a3530,null));};exports[_0x42aa('0x89')]=function(_0x43c75b,_0x55d4cc){var _0x5ad088=path[_0x42aa('0x8a')](config[_0x42aa('0x8b')],_0x42aa('0x8c'),_0x42aa('0x8d'),_0x42aa('0x8e'));return db[_0x42aa('0x3f')][_0x42aa('0x58')]({'where':{'id':_0x43c75b[_0x42aa('0x55')]['id']},'include':[{'model':db['Attachment'],'as':_0x42aa('0x8f')}]})[_0x42aa('0x23')](handleEntityNotFound(_0x55d4cc,null))[_0x42aa('0x23')](function(_0x575cf0){if(_0x575cf0){return _0x55d4cc[_0x42aa('0x89')](path['join'](_0x5ad088,_0x575cf0[_0x42aa('0x8f')][_0x42aa('0x90')]));}})[_0x42aa('0x2e')](handleError(_0x55d4cc,null));};
\ No newline at end of file
index fcabfec..8eb2ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c63=['update','remove','emit','hasOwnProperty','events','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0x62a750,_0x55ed06){var _0x359565=function(_0x4c4a60){while(--_0x4c4a60){_0x62a750['push'](_0x62a750['shift']());}};_0x359565(++_0x55ed06);}(_0x1c63,0xdc));var _0x31c6=function(_0x103277,_0x15a2a2){_0x103277=_0x103277-0x0;var _0x45c58f=_0x1c63[_0x103277];return _0x45c58f;};'use strict';var EventEmitter=require(_0x31c6('0x0'));var FaxMessage=require(_0x31c6('0x1'))['db'][_0x31c6('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x31c6('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x31c6('0x4'),'afterDestroy':_0x31c6('0x5')};function emitEvent(_0x2501a8){return function(_0x598eed,_0x12da33,_0x3c1288){FaxMessageEvents[_0x31c6('0x6')](_0x2501a8+':'+_0x598eed['id'],_0x598eed);FaxMessageEvents[_0x31c6('0x6')](_0x2501a8,_0x598eed);_0x3c1288(null);};}for(var e in events){if(events[_0x31c6('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0xb96d=['setMaxListeners','update','remove','emit','hasOwnProperty','exports','../../mysqldb','FaxMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb96d,0x9e));var _0xdb96=function(_0x555ebb,_0x4b1b68){_0x555ebb=_0x555ebb-0x0;var _0x3c0a4a=_0xb96d[_0x555ebb];return _0x3c0a4a;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0xdb96('0x0'))['db'][_0xdb96('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xdb96('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xdb96('0x3'),'afterDestroy':_0xdb96('0x4')};function emitEvent(_0x22be94){return function(_0x488b02,_0x4af3cf,_0x291c6a){FaxMessageEvents[_0xdb96('0x5')](_0x22be94+':'+_0x488b02['id'],_0x488b02);FaxMessageEvents[_0xdb96('0x5')](_0x22be94,_0x488b02);_0x291c6a(null);};}for(var e in events){if(events[_0xdb96('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xdb96('0x7')]=FaxMessageEvents;
\ No newline at end of file
index 6fbdab2..1b9af88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x215f=['body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','createdAt','catch','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','define','FaxMessage','fax_messages','fti_fax_messages'];(function(_0x5b842f,_0x1ccb80){var _0x593037=function(_0x5c001a){while(--_0x5c001a){_0x5b842f['push'](_0x5b842f['shift']());}};_0x593037(++_0x1ccb80);}(_0x215f,0xab));var _0xf215=function(_0x82270f,_0x738228){_0x82270f=_0x82270f-0x0;var _0x4eb093=_0x215f[_0x82270f];return _0x4eb093;};'use strict';var _=require(_0xf215('0x0'));var util=require(_0xf215('0x1'));var logger=require(_0xf215('0x2'))(_0xf215('0x3'));var moment=require(_0xf215('0x4'));var BPromise=require(_0xf215('0x5'));var rp=require(_0xf215('0x6'));var fs=require('fs');var path=require(_0xf215('0x7'));var rimraf=require(_0xf215('0x8'));var config=require(_0xf215('0x9'));var attributes=require(_0xf215('0xa'));module['exports']=function(_0x4562aa,_0x2ef556){return _0x4562aa[_0xf215('0xb')](_0xf215('0xc'),attributes,{'tableName':_0xf215('0xd'),'paranoid':![],'indexes':[{'name':_0xf215('0xe'),'fields':[_0xf215('0xf')],'type':_0xf215('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x46635e,_0x475c75,_0x5d948b){var _0x39a919=_0x4562aa[_0xf215('0x11')];var _0x51bd14=_0x46635e[_0xf215('0x12')]({'plain':!![]});if(_0x51bd14[_0xf215('0x13')][_0xf215('0x14')]()==='in'||_0x51bd14[_0xf215('0x13')]['toLowerCase']()===_0xf215('0x15')&&!_0x51bd14[_0xf215('0x16')]&&!_[_0xf215('0x17')](_0x51bd14[_0xf215('0x18')])){_0x39a919[_0xf215('0x19')][_0xf215('0x1a')]({'where':{'id':_0x51bd14[_0xf215('0x1b')]}})['then'](function(_0x454036){if(_0x454036){_0x454036['update']({'lastMsgAt':_0x51bd14[_0xf215('0x1c')],'lastMsgDirection':_0x51bd14[_0xf215('0x13')]['toLowerCase']()});}})[_0xf215('0x1d')](function(_0x1d92a1){console['error'](_0x1d92a1);});}_0x5d948b();}},'charset':_0xf215('0x1e'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x41e2=['FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','FaxInteraction','FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','fax_messages'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x41e2,0x1b4));var _0x241e=function(_0x2378db,_0x596ffd){_0x2378db=_0x2378db-0x0;var _0x1e357c=_0x41e2[_0x2378db];return _0x1e357c;};'use strict';var _=require(_0x241e('0x0'));var util=require('util');var logger=require(_0x241e('0x1'))('api');var moment=require(_0x241e('0x2'));var BPromise=require(_0x241e('0x3'));var rp=require(_0x241e('0x4'));var fs=require('fs');var path=require(_0x241e('0x5'));var rimraf=require(_0x241e('0x6'));var config=require(_0x241e('0x7'));var attributes=require(_0x241e('0x8'));module[_0x241e('0x9')]=function(_0x41e168,_0x1ecfa8){return _0x41e168[_0x241e('0xa')]('FaxMessage',attributes,{'tableName':_0x241e('0xb'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':['body'],'type':_0x241e('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1a0851,_0x131255,_0x1225a8){var _0x5c326e=_0x41e168[_0x241e('0xd')];var _0x5daafe=_0x1a0851[_0x241e('0xe')]({'plain':!![]});if(_0x5daafe[_0x241e('0xf')][_0x241e('0x10')]()==='in'||_0x5daafe[_0x241e('0xf')]['toLowerCase']()===_0x241e('0x11')&&!_0x5daafe[_0x241e('0x12')]&&!_[_0x241e('0x13')](_0x5daafe['UserId'])){_0x5c326e[_0x241e('0x14')]['findOne']({'where':{'id':_0x5daafe[_0x241e('0x15')]}})['then'](function(_0x2a7113){if(_0x2a7113){_0x2a7113[_0x241e('0x16')]({'lastMsgAt':_0x5daafe[_0x241e('0x17')],'lastMsgDirection':_0x5daafe[_0x241e('0xf')]['toLowerCase']()});}})[_0x241e('0x18')](function(_0x4a9ad8){console[_0x241e('0x19')](_0x4a9ad8);});}_0x1225a8();}},'charset':_0x241e('0x1a'),'collate':_0x241e('0x1b')});};
\ No newline at end of file
index 5bbfc85..aa2fde6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd50=['request','info','FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateFaxMessage','options','raw','then','UpdateFaxMessage','FaxMessage','update','body','where','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','./faxMessage.socket','register'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xbd50,0x196));var _0x0bd5=function(_0x99250c,_0x4603c0){_0x99250c=_0x99250c-0x0;var _0x3927d5=_0xbd50[_0x99250c];return _0x3927d5;};'use strict';var _=require(_0x0bd5('0x0'));var util=require(_0x0bd5('0x1'));var moment=require(_0x0bd5('0x2'));var BPromise=require('bluebird');var rs=require(_0x0bd5('0x3'));var fs=require('fs');var Redis=require(_0x0bd5('0x4'));var db=require(_0x0bd5('0x5'))['db'];var utils=require(_0x0bd5('0x6'));var logger=require(_0x0bd5('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0bd5('0x8')][_0x0bd5('0x9')]({'port':0x232a});config[_0x0bd5('0xa')]=_[_0x0bd5('0xb')](config[_0x0bd5('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0bd5('0xa')]));require(_0x0bd5('0xc'))[_0x0bd5('0xd')](socket);function respondWithRpcPromise(_0x5f5a0c,_0xa98f54,_0x2fa7d1){return new BPromise(function(_0x519bc6,_0x210f45){return client[_0x0bd5('0xe')](_0x5f5a0c,_0x2fa7d1)['then'](function(_0x1ce7dd){logger[_0x0bd5('0xf')](_0x0bd5('0x10'),_0xa98f54,'request\x20sent');logger[_0x0bd5('0x11')](_0x0bd5('0x12'),_0xa98f54,_0x0bd5('0x13'),JSON[_0x0bd5('0x14')](_0x1ce7dd));if(_0x1ce7dd[_0x0bd5('0x15')]){if(_0x1ce7dd[_0x0bd5('0x15')][_0x0bd5('0x16')]===0x1f4){logger[_0x0bd5('0x15')]('FaxMessage,\x20%s,\x20%s',_0xa98f54,_0x1ce7dd[_0x0bd5('0x15')][_0x0bd5('0x17')]);return _0x210f45(_0x1ce7dd['error'][_0x0bd5('0x17')]);}logger[_0x0bd5('0x15')](_0x0bd5('0x10'),_0xa98f54,_0x1ce7dd[_0x0bd5('0x15')]['message']);return _0x519bc6(_0x1ce7dd[_0x0bd5('0x15')][_0x0bd5('0x17')]);}else{logger[_0x0bd5('0xf')](_0x0bd5('0x10'),_0xa98f54,_0x0bd5('0x13'));_0x519bc6(_0x1ce7dd[_0x0bd5('0x18')][_0x0bd5('0x17')]);}})[_0x0bd5('0x19')](function(_0x29fa4c){logger[_0x0bd5('0x15')](_0x0bd5('0x10'),_0xa98f54,_0x29fa4c);_0x210f45(_0x29fa4c);});});}exports[_0x0bd5('0x1a')]=function(_0x4008bd){var _0x2dc1e5=this;return new Promise(function(_0x527c37,_0x5ba943){return db['FaxMessage']['create'](_0x4008bd['body'],{'raw':_0x4008bd[_0x0bd5('0x1b')]?_0x4008bd[_0x0bd5('0x1b')][_0x0bd5('0x1c')]===undefined?!![]:![]:!![]})[_0x0bd5('0x1d')](function(_0x6ee1a8){logger['info'](_0x0bd5('0x1a'),_0x4008bd);logger[_0x0bd5('0x11')](_0x0bd5('0x1a'),_0x4008bd,JSON['stringify'](_0x6ee1a8));_0x527c37(_0x6ee1a8);})[_0x0bd5('0x19')](function(_0x4a8787){logger['error'](_0x0bd5('0x1a'),_0x4a8787[_0x0bd5('0x17')],_0x4008bd);_0x5ba943(_0x2dc1e5[_0x0bd5('0x15')](0x1f4,_0x4a8787['message']));});});};exports[_0x0bd5('0x1e')]=function(_0x5eab3e){var _0x456e87=this;return new Promise(function(_0x3ffb08,_0x18cec3){return db[_0x0bd5('0x1f')][_0x0bd5('0x20')](_0x5eab3e[_0x0bd5('0x21')],{'raw':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')][_0x0bd5('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')][_0x0bd5('0x22')]||null:null,'attributes':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')]['attributes']||null:null,'limit':_0x5eab3e[_0x0bd5('0x1b')]?_0x5eab3e[_0x0bd5('0x1b')]['limit']||null:null})[_0x0bd5('0x1d')](function(_0x8eccc9){logger['info'](_0x0bd5('0x1e'),_0x5eab3e);logger[_0x0bd5('0x11')](_0x0bd5('0x1e'),_0x5eab3e,JSON[_0x0bd5('0x14')](_0x8eccc9));_0x3ffb08(_0x8eccc9);})['catch'](function(_0x440e69){logger[_0x0bd5('0x15')](_0x0bd5('0x1e'),_0x440e69[_0x0bd5('0x17')],_0x5eab3e);_0x18cec3(_0x456e87[_0x0bd5('0x15')](0x1f4,_0x440e69[_0x0bd5('0x17')]));});});};
\ No newline at end of file
+var _0x5636=['error','code','message','result','CreateFaxMessage','FaxMessage','body','options','then','UpdateFaxMessage','update','where','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1c4409,_0x3b2e8f){var _0x356d8f=function(_0xae43bf){while(--_0xae43bf){_0x1c4409['push'](_0x1c4409['shift']());}};_0x356d8f(++_0x3b2e8f);}(_0x5636,0x102));var _0x6563=function(_0x348c88,_0x30e5bd){_0x348c88=_0x348c88-0x0;var _0x33fdc4=_0x5636[_0x348c88];return _0x33fdc4;};'use strict';var _=require(_0x6563('0x0'));var util=require(_0x6563('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6563('0x2'));var db=require(_0x6563('0x3'))['db'];var utils=require(_0x6563('0x4'));var logger=require('../../config/logger')(_0x6563('0x5'));var config=require(_0x6563('0x6'));var jayson=require(_0x6563('0x7'));var client=jayson[_0x6563('0x8')][_0x6563('0x9')]({'port':0x232a});config[_0x6563('0xa')]=_[_0x6563('0xb')](config[_0x6563('0xa')],{'host':_0x6563('0xc'),'port':0x18eb});var socket=require(_0x6563('0xd'))(new Redis(config[_0x6563('0xa')]));require(_0x6563('0xe'))[_0x6563('0xf')](socket);function respondWithRpcPromise(_0x516d1a,_0x51fdc2,_0x2946f3){return new BPromise(function(_0x129fa3,_0x490a56){return client['request'](_0x516d1a,_0x2946f3)['then'](function(_0x1ef002){logger[_0x6563('0x10')](_0x6563('0x11'),_0x51fdc2,_0x6563('0x12'));logger[_0x6563('0x13')](_0x6563('0x14'),_0x51fdc2,_0x6563('0x12'),JSON[_0x6563('0x15')](_0x1ef002));if(_0x1ef002[_0x6563('0x16')]){if(_0x1ef002['error'][_0x6563('0x17')]===0x1f4){logger['error'](_0x6563('0x11'),_0x51fdc2,_0x1ef002[_0x6563('0x16')][_0x6563('0x18')]);return _0x490a56(_0x1ef002[_0x6563('0x16')]['message']);}logger[_0x6563('0x16')](_0x6563('0x11'),_0x51fdc2,_0x1ef002[_0x6563('0x16')][_0x6563('0x18')]);return _0x129fa3(_0x1ef002['error'][_0x6563('0x18')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x51fdc2,'request\x20sent');_0x129fa3(_0x1ef002[_0x6563('0x19')]['message']);}})['catch'](function(_0x27651b){logger[_0x6563('0x16')](_0x6563('0x11'),_0x51fdc2,_0x27651b);_0x490a56(_0x27651b);});});}exports[_0x6563('0x1a')]=function(_0xf8b544){var _0x10811d=this;return new Promise(function(_0x37ba3,_0x93a45){return db[_0x6563('0x1b')]['create'](_0xf8b544[_0x6563('0x1c')],{'raw':_0xf8b544[_0x6563('0x1d')]?_0xf8b544[_0x6563('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x6563('0x1e')](function(_0x5c37bb){logger[_0x6563('0x10')](_0x6563('0x1a'),_0xf8b544);logger['debug']('CreateFaxMessage',_0xf8b544,JSON[_0x6563('0x15')](_0x5c37bb));_0x37ba3(_0x5c37bb);})['catch'](function(_0x1097d0){logger[_0x6563('0x16')](_0x6563('0x1a'),_0x1097d0['message'],_0xf8b544);_0x93a45(_0x10811d[_0x6563('0x16')](0x1f4,_0x1097d0['message']));});});};exports[_0x6563('0x1f')]=function(_0x1590e6){var _0x5e5aeb=this;return new Promise(function(_0x365b16,_0x28252d){return db['FaxMessage'][_0x6563('0x20')](_0x1590e6['body'],{'raw':_0x1590e6[_0x6563('0x1d')]?_0x1590e6['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1590e6[_0x6563('0x1d')]?_0x1590e6[_0x6563('0x1d')][_0x6563('0x21')]||null:null,'attributes':_0x1590e6[_0x6563('0x1d')]?_0x1590e6[_0x6563('0x1d')]['attributes']||null:null,'limit':_0x1590e6[_0x6563('0x1d')]?_0x1590e6['options']['limit']||null:null})[_0x6563('0x1e')](function(_0x35af37){logger[_0x6563('0x10')](_0x6563('0x1f'),_0x1590e6);logger[_0x6563('0x13')](_0x6563('0x1f'),_0x1590e6,JSON[_0x6563('0x15')](_0x35af37));_0x365b16(_0x35af37);})[_0x6563('0x22')](function(_0x101b24){logger[_0x6563('0x16')]('UpdateFaxMessage',_0x101b24[_0x6563('0x18')],_0x1590e6);_0x28252d(_0x5e5aeb[_0x6563('0x16')](0x1f4,_0x101b24[_0x6563('0x18')]));});});};
\ No newline at end of file
index 57dde4c..ba084d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e3e=['length','./faxMessage.events','remove','update','emit','removeListener','register'];(function(_0x4e1a49,_0x4da738){var _0x136aae=function(_0x3ffd93){while(--_0x3ffd93){_0x4e1a49['push'](_0x4e1a49['shift']());}};_0x136aae(++_0x4da738);}(_0x5e3e,0x189));var _0xe5e3=function(_0x534c8f,_0x500079){_0x534c8f=_0x534c8f-0x0;var _0x5a57f5=_0x5e3e[_0x534c8f];return _0x5a57f5;};'use strict';var FaxMessageEvents=require(_0xe5e3('0x0'));var events=['save',_0xe5e3('0x1'),_0xe5e3('0x2')];function createListener(_0x6b53d7,_0x567808){return function(_0x44c3ad){_0x567808[_0xe5e3('0x3')](_0x6b53d7,_0x44c3ad);};}function removeListener(_0xe15aa4,_0x459be7){return function(){FaxMessageEvents[_0xe5e3('0x4')](_0xe15aa4,_0x459be7);};}exports[_0xe5e3('0x5')]=function(_0x430511){for(var _0x118503=0x0,_0x47be15=events[_0xe5e3('0x6')];_0x118503<_0x47be15;_0x118503++){var _0x47ec23=events[_0x118503];var _0x101e5e=createListener('faxMessage:'+_0x47ec23,_0x430511);FaxMessageEvents['on'](_0x47ec23,_0x101e5e);}};
\ No newline at end of file
+var _0x7fde=['register','length','faxMessage:','./faxMessage.events','save','emit','removeListener'];(function(_0xa21d97,_0x22c614){var _0x1b99fa=function(_0x48e9a9){while(--_0x48e9a9){_0xa21d97['push'](_0xa21d97['shift']());}};_0x1b99fa(++_0x22c614);}(_0x7fde,0xc0));var _0xe7fd=function(_0x31aa2b,_0x504a83){_0x31aa2b=_0x31aa2b-0x0;var _0xb1c479=_0x7fde[_0x31aa2b];return _0xb1c479;};'use strict';var FaxMessageEvents=require(_0xe7fd('0x0'));var events=[_0xe7fd('0x1'),'remove','update'];function createListener(_0x53ede0,_0x5d39fe){return function(_0x584bfb){_0x5d39fe[_0xe7fd('0x2')](_0x53ede0,_0x584bfb);};}function removeListener(_0x4dee3d,_0x1bf24d){return function(){FaxMessageEvents[_0xe7fd('0x3')](_0x4dee3d,_0x1bf24d);};}exports[_0xe7fd('0x4')]=function(_0x17ebba){for(var _0x4a47e2=0x0,_0x361887=events[_0xe7fd('0x5')];_0x4a47e2<_0x361887;_0x4a47e2++){var _0x5cb9a5=events[_0x4a47e2];var _0x2cd524=createListener(_0xe7fd('0x6')+_0x5cb9a5,_0x17ebba);FaxMessageEvents['on'](_0x5cb9a5,_0x2cd524);}};
\ No newline at end of file
index 0c86f68..0d94f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['describe','/:id','show','/:id/download','download','post','fax','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe'];(function(_0x3e8bb5,_0x3cc781){var _0xc97429=function(_0x28adda){while(--_0x28adda){_0x3e8bb5['push'](_0x3e8bb5['shift']());}};_0xc97429(++_0x3cc781);}(_0x9354,0x96));var _0x4935=function(_0x134058,_0x423995){_0x134058=_0x134058-0x0;var _0x14a1a9=_0x9354[_0x134058];return _0x14a1a9;};'use strict';var multer=require('multer');var util=require(_0x4935('0x0'));var path=require(_0x4935('0x1'));var timeout=require('connect-timeout');var express=require(_0x4935('0x2'));var router=express[_0x4935('0x3')]();var fs_extra=require(_0x4935('0x4'));var auth=require(_0x4935('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4935('0x6'));var controller=require(_0x4935('0x7'));router[_0x4935('0x8')]('/',auth[_0x4935('0x9')](),controller[_0x4935('0xa')]);router[_0x4935('0x8')](_0x4935('0xb'),auth[_0x4935('0x9')](),controller[_0x4935('0xc')]);router['get'](_0x4935('0xd'),auth['isAuthenticated'](),controller[_0x4935('0xe')]);router[_0x4935('0x8')](_0x4935('0xf'),auth[_0x4935('0x9')](),controller[_0x4935('0x10')]);router[_0x4935('0x11')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x4935('0x12'),'faxmessage:create'),controller['create']);router[_0x4935('0x13')](_0x4935('0xd'),auth[_0x4935('0x9')](),controller[_0x4935('0x14')]);router[_0x4935('0x13')](_0x4935('0x15'),auth[_0x4935('0x9')](),controller[_0x4935('0x16')]);router[_0x4935('0x13')](_0x4935('0x17'),auth[_0x4935('0x9')](),controller[_0x4935('0x18')]);router[_0x4935('0x19')](_0x4935('0xd'),auth[_0x4935('0x9')](),controller[_0x4935('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xa74f=['/describe','isAuthenticated','describe','show','/:id/download','download','post','tracked','fax','faxmessage:create','create','/:id','update','put','accept','/:id/reject','delete','destroy','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','index','get'];(function(_0x9a9f23,_0x2be6a0){var _0x423e5a=function(_0x4f0ba7){while(--_0x4f0ba7){_0x9a9f23['push'](_0x9a9f23['shift']());}};_0x423e5a(++_0x2be6a0);}(_0xa74f,0x9a));var _0xfa74=function(_0x375325,_0x57a850){_0x375325=_0x375325-0x0;var _0x228f57=_0xa74f[_0x375325];return _0x228f57;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfa74('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfa74('0x1')]();var fs_extra=require(_0xfa74('0x2'));var auth=require(_0xfa74('0x3'));var interaction=require(_0xfa74('0x4'));var config=require('../../config/environment');var controller=require(_0xfa74('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xfa74('0x6')]);router[_0xfa74('0x7')](_0xfa74('0x8'),auth[_0xfa74('0x9')](),controller[_0xfa74('0xa')]);router[_0xfa74('0x7')]('/:id',auth[_0xfa74('0x9')](),controller[_0xfa74('0xb')]);router[_0xfa74('0x7')](_0xfa74('0xc'),auth['isAuthenticated'](),controller[_0xfa74('0xd')]);router[_0xfa74('0xe')]('/',auth['isAuthenticated'](),interaction[_0xfa74('0xf')](_0xfa74('0x10'),_0xfa74('0x11')),controller[_0xfa74('0x12')]);router['put'](_0xfa74('0x13'),auth[_0xfa74('0x9')](),controller[_0xfa74('0x14')]);router[_0xfa74('0x15')]('/:id/accept',auth[_0xfa74('0x9')](),controller[_0xfa74('0x16')]);router[_0xfa74('0x15')](_0xfa74('0x17'),auth[_0xfa74('0x9')](),controller['reject']);router[_0xfa74('0x18')](_0xfa74('0x13'),auth[_0xfa74('0x9')](),controller[_0xfa74('0x19')]);module[_0xfa74('0x1a')]=router;
\ No newline at end of file
index 373fb31..27f24e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11a2=['STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x11a2,0x10c));var _0x211a=function(_0x314910,_0x3c562a){_0x314910=_0x314910-0x0;var _0x3ab9bb=_0x11a2[_0x314910];return _0x3ab9bb;};'use strict';var Sequelize=require(_0x211a('0x0'));module[_0x211a('0x1')]={'name':{'type':Sequelize[_0x211a('0x2')],'unique':_0x211a('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x211a('0x2')]},'timeout':{'type':Sequelize[_0x211a('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x211a('0x5')](_0x211a('0x6'),_0x211a('0x7'),_0x211a('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x211a('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xacb5=['sequelize','STRING','name','INTEGER','ENUM','rrmemory','roundrobin'];(function(_0x3690d2,_0x565464){var _0x5b7d01=function(_0x1d5d1f){while(--_0x1d5d1f){_0x3690d2['push'](_0x3690d2['shift']());}};_0x5b7d01(++_0x565464);}(_0xacb5,0xe0));var _0x5acb=function(_0x160e96,_0x24fd39){_0x160e96=_0x160e96-0x0;var _0x19ed54=_0xacb5[_0x160e96];return _0x19ed54;};'use strict';var Sequelize=require(_0x5acb('0x0'));module['exports']={'name':{'type':Sequelize[_0x5acb('0x1')],'unique':_0x5acb('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5acb('0x1')]},'timeout':{'type':Sequelize[_0x5acb('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5acb('0x4')](_0x5acb('0x5'),'beepall',_0x5acb('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5acb('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index e530a2b..899dbd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e4d=['each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','userFaxQueue:save','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket','sendStatus','end','status','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','FaxQueues','error','name','send','index','FaxQueue','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','count','includeAll','include','catch','show','params','keys','length','options','find','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','FaxQueueId','UserFaxQueue','findAll','User','findAndCountAll','UserId','agent','updatedAt','rows','format','%s/%s','SIP','faxPause','Team','getTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','addTeams'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3e4d,0x1c9));var _0xd3e4=function(_0x48cd03,_0x5ab5b2){_0x48cd03=_0x48cd03-0x0;var _0x509342=_0x3e4d[_0x48cd03];return _0x509342;};'use strict';var emlformat=require(_0xd3e4('0x0'));var rimraf=require(_0xd3e4('0x1'));var zipdir=require(_0xd3e4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd3e4('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd3e4('0x4'));var path=require(_0xd3e4('0x5'));var sox=require(_0xd3e4('0x6'));var csv=require(_0xd3e4('0x7'));var ejs=require(_0xd3e4('0x8'));var fs=require('fs');var fs_extra=require(_0xd3e4('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd3e4('0xa'));var jsforce=require(_0xd3e4('0xb'));var deskjs=require(_0xd3e4('0xc'));var toCsv=require(_0xd3e4('0x7'));var querystring=require(_0xd3e4('0xd'));var Papa=require(_0xd3e4('0xe'));var Redis=require(_0xd3e4('0xf'));var authService=require(_0xd3e4('0x10'));var qs=require(_0xd3e4('0x11'));var as=require(_0xd3e4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd3e4('0x13'))(_0xd3e4('0x14'));var utils=require(_0xd3e4('0x15'));var config=require(_0xd3e4('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd3e4('0x17'))['db'];config[_0xd3e4('0x18')]=_[_0xd3e4('0x19')](config[_0xd3e4('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xd3e4('0x1a'))(new Redis(config[_0xd3e4('0x18')]));require(_0xd3e4('0x1b'))['register'](socket);function respondWithStatusCode(_0x8c9ade,_0x4be158){_0x4be158=_0x4be158||0xcc;return function(_0x335017){if(_0x335017){return _0x8c9ade[_0xd3e4('0x1c')](_0x4be158);}return _0x8c9ade['status'](_0x4be158)[_0xd3e4('0x1d')]();};}function respondWithResult(_0x27d178,_0x540002){_0x540002=_0x540002||0xc8;return function(_0x1e2cc7){if(_0x1e2cc7){return _0x27d178[_0xd3e4('0x1e')](_0x540002)['json'](_0x1e2cc7);}};}function respondWithFilteredResult(_0x4d4781,_0x10f701){return function(_0x381b85){if(_0x381b85){var _0x74eaa9=typeof _0x10f701['offset']===_0xd3e4('0x1f')&&typeof _0x10f701[_0xd3e4('0x20')]==='undefined';var _0xf32fb0=_0x381b85['count'];var _0x558d49=_0x74eaa9?0x0:_0x10f701[_0xd3e4('0x21')];var _0x2a19d6=_0x74eaa9?_0x381b85['count']:_0x10f701[_0xd3e4('0x21')]+_0x10f701['limit'];var _0x543843;if(_0x2a19d6>=_0xf32fb0){_0x2a19d6=_0xf32fb0;_0x543843=0xc8;}else{_0x543843=0xce;}_0x4d4781[_0xd3e4('0x1e')](_0x543843);return _0x4d4781[_0xd3e4('0x22')](_0xd3e4('0x23'),_0x558d49+'-'+_0x2a19d6+'/'+_0xf32fb0)['json'](_0x381b85);}return null;};}function patchUpdates(_0x109325){return function(_0x42ed49){try{jsonpatch[_0xd3e4('0x24')](_0x42ed49,_0x109325,!![]);}catch(_0x435cc8){return BPromise[_0xd3e4('0x25')](_0x435cc8);}return _0x42ed49[_0xd3e4('0x26')]();};}function saveUpdates(_0x3f9d4d,_0x34f7c0){return function(_0x38009a){if(_0x38009a){return _0x38009a[_0xd3e4('0x27')](_0x3f9d4d)[_0xd3e4('0x28')](function(_0x486dc3){return _0x486dc3;});}return null;};}function removeEntity(_0x2b5389,_0x4bc73c){return function(_0xb8dcf9){if(_0xb8dcf9){return _0xb8dcf9[_0xd3e4('0x29')]()[_0xd3e4('0x28')](function(){var _0x3b433c=_0xb8dcf9['get']({'plain':!![]});var _0xb354b4=_0xd3e4('0x2a');return db['UserProfileResource'][_0xd3e4('0x29')]({'where':{'type':_0xb354b4,'resourceId':_0x3b433c['id']}})[_0xd3e4('0x28')](function(){return _0xb8dcf9;});})[_0xd3e4('0x28')](function(){_0x2b5389[_0xd3e4('0x1e')](0xcc)[_0xd3e4('0x1d')]();});}};}function handleEntityNotFound(_0x34fcd0,_0x418a03){return function(_0x4b9835){if(!_0x4b9835){_0x34fcd0['sendStatus'](0x194);}return _0x4b9835;};}function handleError(_0x175c5d,_0xc9416e){_0xc9416e=_0xc9416e||0x1f4;return function(_0x45aa6b){logger[_0xd3e4('0x2b')](_0x45aa6b['stack']);if(_0x45aa6b[_0xd3e4('0x2c')]){delete _0x45aa6b[_0xd3e4('0x2c')];}_0x175c5d[_0xd3e4('0x1e')](_0xc9416e)[_0xd3e4('0x2d')](_0x45aa6b);};}exports[_0xd3e4('0x2e')]=function(_0x5004bf,_0x969bf7){var _0x1571ff={},_0x3bcf15={},_0x122efe={'count':0x0,'rows':[]};var _0x134728=_['map'](db[_0xd3e4('0x2f')][_0xd3e4('0x30')],function(_0x228266){return{'name':_0x228266[_0xd3e4('0x31')],'type':_0x228266[_0xd3e4('0x32')][_0xd3e4('0x33')]};});_0x3bcf15[_0xd3e4('0x34')]=_[_0xd3e4('0x35')](_0x134728,_0xd3e4('0x2c'));_0x3bcf15[_0xd3e4('0x36')]=_['keys'](_0x5004bf[_0xd3e4('0x36')]);_0x3bcf15[_0xd3e4('0x37')]=_[_0xd3e4('0x38')](_0x3bcf15['model'],_0x3bcf15[_0xd3e4('0x36')]);_0x1571ff['attributes']=_['intersection'](_0x3bcf15[_0xd3e4('0x34')],qs[_0xd3e4('0x39')](_0x5004bf['query']['fields']));_0x1571ff['attributes']=_0x1571ff[_0xd3e4('0x3a')]['length']?_0x1571ff['attributes']:_0x3bcf15[_0xd3e4('0x34')];if(!_0x5004bf[_0xd3e4('0x36')][_0xd3e4('0x3b')](_0xd3e4('0x3c'))){_0x1571ff['limit']=qs[_0xd3e4('0x20')](_0x5004bf[_0xd3e4('0x36')]['limit']);_0x1571ff[_0xd3e4('0x21')]=qs[_0xd3e4('0x21')](_0x5004bf[_0xd3e4('0x36')][_0xd3e4('0x21')]);}_0x1571ff[_0xd3e4('0x3d')]=qs[_0xd3e4('0x3e')](_0x5004bf[_0xd3e4('0x36')][_0xd3e4('0x3e')]);_0x1571ff[_0xd3e4('0x3f')]=qs['filters'](_[_0xd3e4('0x40')](_0x5004bf[_0xd3e4('0x36')],_0x3bcf15[_0xd3e4('0x37')]),_0x134728);if(_0x5004bf[_0xd3e4('0x36')][_0xd3e4('0x41')]){_0x1571ff[_0xd3e4('0x3f')]=_['merge'](_0x1571ff[_0xd3e4('0x3f')],{'$or':_[_0xd3e4('0x35')](_0x134728,function(_0x544266){if(_0x544266[_0xd3e4('0x32')]!==_0xd3e4('0x42')){var _0x52bb2b={};_0x52bb2b[_0x544266['name']]={'$like':'%'+_0x5004bf['query'][_0xd3e4('0x41')]+'%'};return _0x52bb2b;}})});}_0x1571ff=_[_0xd3e4('0x43')]({},_0x1571ff,_0x5004bf['options']);var _0x46d90a={'where':_0x1571ff[_0xd3e4('0x3f')]};return db[_0xd3e4('0x2f')][_0xd3e4('0x44')](_0x46d90a)[_0xd3e4('0x28')](function(_0x552033){_0x122efe[_0xd3e4('0x44')]=_0x552033;if(_0x5004bf[_0xd3e4('0x36')][_0xd3e4('0x45')]){_0x1571ff[_0xd3e4('0x46')]=[{'all':!![]}];}return db[_0xd3e4('0x2f')]['findAll'](_0x1571ff);})['then'](function(_0x44a3ad){_0x122efe['rows']=_0x44a3ad;return _0x122efe;})[_0xd3e4('0x28')](respondWithFilteredResult(_0x969bf7,_0x1571ff))[_0xd3e4('0x47')](handleError(_0x969bf7,null));};exports[_0xd3e4('0x48')]=function(_0x515437,_0x56f3c5){var _0x1f98f9={'raw':!![],'where':{'id':_0x515437[_0xd3e4('0x49')]['id']}},_0x38a7e8={};_0x38a7e8['model']=_[_0xd3e4('0x4a')](db[_0xd3e4('0x2f')]['rawAttributes']);_0x38a7e8[_0xd3e4('0x36')]=_[_0xd3e4('0x4a')](_0x515437[_0xd3e4('0x36')]);_0x38a7e8[_0xd3e4('0x37')]=_['intersection'](_0x38a7e8[_0xd3e4('0x34')],_0x38a7e8[_0xd3e4('0x36')]);_0x1f98f9['attributes']=_['intersection'](_0x38a7e8['model'],qs[_0xd3e4('0x39')](_0x515437['query'][_0xd3e4('0x39')]));_0x1f98f9[_0xd3e4('0x3a')]=_0x1f98f9['attributes'][_0xd3e4('0x4b')]?_0x1f98f9[_0xd3e4('0x3a')]:_0x38a7e8[_0xd3e4('0x34')];if(_0x515437[_0xd3e4('0x36')][_0xd3e4('0x45')]){_0x1f98f9[_0xd3e4('0x46')]=[{'all':!![]}];}_0x1f98f9=_[_0xd3e4('0x43')]({},_0x1f98f9,_0x515437[_0xd3e4('0x4c')]);return db[_0xd3e4('0x2f')][_0xd3e4('0x4d')](_0x1f98f9)[_0xd3e4('0x28')](handleEntityNotFound(_0x56f3c5,null))['then'](respondWithResult(_0x56f3c5,null))[_0xd3e4('0x47')](handleError(_0x56f3c5,null));};exports['create']=function(_0x415a85,_0x4d300f){return db[_0xd3e4('0x2f')]['create'](_0x415a85['body'],{})[_0xd3e4('0x28')](function(_0x487352){var _0x54a939=_0x415a85[_0xd3e4('0x4e')]['get']({'plain':!![]});if(!_0x54a939)throw new Error(_0xd3e4('0x4f'));if(_0x54a939['role']===_0xd3e4('0x4e')){var _0x1ee5d2=_0x487352['get']({'plain':!![]});var _0x4dfb4d=_0xd3e4('0x2a');return db[_0xd3e4('0x50')][_0xd3e4('0x4d')]({'where':{'name':_0x4dfb4d,'userProfileId':_0x54a939['userProfileId']},'raw':!![]})[_0xd3e4('0x28')](function(_0xdbbad0){if(_0xdbbad0&&_0xdbbad0['autoAssociation']===0x0){return db[_0xd3e4('0x51')]['create']({'name':_0x1ee5d2['name'],'resourceId':_0x1ee5d2['id'],'type':_0xdbbad0[_0xd3e4('0x2c')],'sectionId':_0xdbbad0['id']},{})['then'](function(){return _0x487352;});}else{return _0x487352;}})[_0xd3e4('0x47')](function(_0x517a06){logger[_0xd3e4('0x2b')](_0xd3e4('0x52'),_0x517a06);throw _0x517a06;});}return _0x487352;})[_0xd3e4('0x28')](respondWithResult(_0x4d300f,0xc9))[_0xd3e4('0x47')](handleError(_0x4d300f,null));};exports[_0xd3e4('0x27')]=function(_0x324657,_0x1254e4){if(_0x324657[_0xd3e4('0x53')]['id']){delete _0x324657[_0xd3e4('0x53')]['id'];}return db[_0xd3e4('0x2f')][_0xd3e4('0x4d')]({'where':{'id':_0x324657[_0xd3e4('0x49')]['id']}})['then'](handleEntityNotFound(_0x1254e4,null))[_0xd3e4('0x28')](saveUpdates(_0x324657[_0xd3e4('0x53')],null))[_0xd3e4('0x28')](respondWithResult(_0x1254e4,null))['catch'](handleError(_0x1254e4,null));};exports[_0xd3e4('0x29')]=function(_0x477e92,_0x19a2b9){return db[_0xd3e4('0x2f')]['find']({'where':{'id':_0x477e92[_0xd3e4('0x49')]['id']}})[_0xd3e4('0x28')](handleEntityNotFound(_0x19a2b9,null))[_0xd3e4('0x28')](removeEntity(_0x19a2b9,null))[_0xd3e4('0x47')](handleError(_0x19a2b9,null));};exports[_0xd3e4('0x54')]=function(_0x5cfeb7,_0x1697c4){return db[_0xd3e4('0x2f')][_0xd3e4('0x54')]()[_0xd3e4('0x28')](respondWithResult(_0x1697c4,null))[_0xd3e4('0x47')](handleError(_0x1697c4,null));};exports[_0xd3e4('0x55')]=function(_0x365a9a,_0xf152ca,_0x20b359){var _0x9301b4={'raw':!![],'where':{}},_0x3aefe3={},_0x3d1d4f;return db[_0xd3e4('0x2f')][_0xd3e4('0x56')]({'where':{'id':_0x365a9a[_0xd3e4('0x49')]['id']}})[_0xd3e4('0x28')](handleEntityNotFound(_0xf152ca,null))[_0xd3e4('0x28')](function(_0x573f47){if(_0x573f47){_0x3d1d4f=_0x573f47['get']({'plain':!![]});_0x3aefe3[_0xd3e4('0x34')]=_[_0xd3e4('0x4a')](db['UserFaxQueue'][_0xd3e4('0x30')]);_0x3aefe3['query']=_[_0xd3e4('0x4a')](_0x365a9a[_0xd3e4('0x36')]);_0x3aefe3['filters']=_[_0xd3e4('0x38')](_0x3aefe3[_0xd3e4('0x34')],_0x3aefe3[_0xd3e4('0x36')]);_0x9301b4[_0xd3e4('0x3a')]=_[_0xd3e4('0x38')](_0x3aefe3[_0xd3e4('0x34')],qs[_0xd3e4('0x39')](_0x365a9a[_0xd3e4('0x36')][_0xd3e4('0x39')]));_0x9301b4[_0xd3e4('0x3a')]=_0x9301b4['attributes'][_0xd3e4('0x4b')]?_0x9301b4[_0xd3e4('0x3a')]:_0x3aefe3[_0xd3e4('0x34')];if(!_0x365a9a[_0xd3e4('0x36')]['hasOwnProperty']('nolimit')){_0x9301b4[_0xd3e4('0x20')]=qs[_0xd3e4('0x20')](_0x365a9a[_0xd3e4('0x36')][_0xd3e4('0x20')]);_0x9301b4[_0xd3e4('0x21')]=qs[_0xd3e4('0x21')](_0x365a9a[_0xd3e4('0x36')][_0xd3e4('0x21')]);}_0x9301b4[_0xd3e4('0x3d')]=qs['sort'](_0x365a9a[_0xd3e4('0x36')]['sort']);_0x9301b4[_0xd3e4('0x3f')]=qs['filters'](_['pick'](_0x365a9a['query'],_0x3aefe3['filters']));_0x9301b4[_0xd3e4('0x3f')][_0xd3e4('0x57')]=_0x573f47['id'];if(_0x365a9a[_0xd3e4('0x36')]['filter']){_0x9301b4[_0xd3e4('0x3f')]=_[_0xd3e4('0x43')](_0x9301b4[_0xd3e4('0x3f')],{'$or':_[_0xd3e4('0x35')](_0x9301b4[_0xd3e4('0x3a')],function(_0x2bf924){var _0x26c165={};_0x26c165[_0x2bf924]={'$like':'%'+_0x365a9a[_0xd3e4('0x36')][_0xd3e4('0x41')]+'%'};return _0x26c165;})});}_0x9301b4=_['merge']({},_0x9301b4,_0x365a9a[_0xd3e4('0x4c')]);return db[_0xd3e4('0x58')][_0xd3e4('0x59')](_0x9301b4);}})['then'](function(_0x226dbd){if(_0x226dbd){return db[_0xd3e4('0x5a')][_0xd3e4('0x5b')]({'where':{'id':_[_0xd3e4('0x35')](_0x226dbd,_0xd3e4('0x5c')),'role':_0xd3e4('0x5d')},'attributes':['id',_0xd3e4('0x2c'),'faxPause',_0xd3e4('0x5e'),'createdAt']});}})[_0xd3e4('0x28')](function(_0x306eff){if(_0x306eff){return{'count':_0x306eff['count'],'rows':_['map'](_0x306eff[_0xd3e4('0x5f')],function(_0x3a1fed){return{'membername':_0x3a1fed[_0xd3e4('0x2c')],'UserId':_0x3a1fed['id'],'queue_name':_0x3d1d4f[_0xd3e4('0x2c')],'FaxQueueId':_0x3d1d4f['id'],'interface':util[_0xd3e4('0x60')](_0xd3e4('0x61'),_0xd3e4('0x62'),_0x3a1fed[_0xd3e4('0x2c')]),'penalty':0x0,'paused':_0x3a1fed[_0xd3e4('0x63')],'createdAt':_0x3a1fed['createdAt'],'updatedAt':_0x3a1fed[_0xd3e4('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xd3e4('0x28')](respondWithFilteredResult(_0xf152ca,_0x9301b4))[_0xd3e4('0x47')](handleError(_0xf152ca,null));};exports['getTeams']=function(_0x261899,_0x448e6f,_0x45fb2f){var _0xdc8bc3={};var _0x3dd3eb={};var _0x109bed;var _0x2e7b0a;return db[_0xd3e4('0x2f')][_0xd3e4('0x56')]({'where':{'id':_0x261899[_0xd3e4('0x49')]['id']}})[_0xd3e4('0x28')](handleEntityNotFound(_0x448e6f,null))['then'](function(_0x3f2dde){if(_0x3f2dde){_0x109bed=_0x3f2dde;_0x3dd3eb[_0xd3e4('0x34')]=_[_0xd3e4('0x4a')](db[_0xd3e4('0x64')]['rawAttributes']);_0x3dd3eb[_0xd3e4('0x36')]=_['keys'](_0x261899[_0xd3e4('0x36')]);_0x3dd3eb[_0xd3e4('0x37')]=_['intersection'](_0x3dd3eb['model'],_0x3dd3eb[_0xd3e4('0x36')]);_0xdc8bc3['attributes']=_[_0xd3e4('0x38')](_0x3dd3eb[_0xd3e4('0x34')],qs['fields'](_0x261899['query'][_0xd3e4('0x39')]));_0xdc8bc3[_0xd3e4('0x3a')]=_0xdc8bc3[_0xd3e4('0x3a')][_0xd3e4('0x4b')]?_0xdc8bc3[_0xd3e4('0x3a')]:_0x3dd3eb[_0xd3e4('0x34')];_0xdc8bc3[_0xd3e4('0x3d')]=qs['sort'](_0x261899[_0xd3e4('0x36')]['sort']);_0xdc8bc3[_0xd3e4('0x3f')]=qs[_0xd3e4('0x37')](_[_0xd3e4('0x40')](_0x261899[_0xd3e4('0x36')],_0x3dd3eb[_0xd3e4('0x37')]));if(_0x261899[_0xd3e4('0x36')][_0xd3e4('0x41')]){_0xdc8bc3[_0xd3e4('0x3f')]=_['merge'](_0xdc8bc3[_0xd3e4('0x3f')],{'$or':_[_0xd3e4('0x35')](_0xdc8bc3['attributes'],function(_0x3d0a05){var _0x2f3059={};_0x2f3059[_0x3d0a05]={'$like':'%'+_0x261899[_0xd3e4('0x36')][_0xd3e4('0x41')]+'%'};return _0x2f3059;})});}_0xdc8bc3=_[_0xd3e4('0x43')]({},_0xdc8bc3,_0x261899[_0xd3e4('0x4c')]);return _0x109bed[_0xd3e4('0x65')](_0xdc8bc3);}})[_0xd3e4('0x28')](function(_0x475ae2){if(_0x475ae2){_0x2e7b0a=_0x475ae2[_0xd3e4('0x4b')];if(!_0x261899[_0xd3e4('0x36')][_0xd3e4('0x3b')](_0xd3e4('0x3c'))){_0xdc8bc3[_0xd3e4('0x20')]=qs['limit'](_0x261899[_0xd3e4('0x36')]['limit']);_0xdc8bc3[_0xd3e4('0x21')]=qs[_0xd3e4('0x21')](_0x261899[_0xd3e4('0x36')][_0xd3e4('0x21')]);}return _0x109bed[_0xd3e4('0x65')](_0xdc8bc3);}})['then'](function(_0x2a1eb4){if(_0x2a1eb4){return _0x2a1eb4?{'count':_0x2e7b0a,'rows':_0x2a1eb4}:null;}})[_0xd3e4('0x28')](respondWithResult(_0x448e6f,null))['catch'](handleError(_0x448e6f,null));};exports['addTeams']=function(_0x3dda26,_0x5dddb4,_0x193974){var _0x11e77c=_0x3dda26[_0xd3e4('0x53')][_0xd3e4('0x66')];return db[_0xd3e4('0x64')][_0xd3e4('0x59')]({'where':{'id':_0x11e77c},'attributes':['id'],'include':[{'model':db[_0xd3e4('0x5a')],'as':'Agents','attributes':['id',_0xd3e4('0x2c'),_0xd3e4('0x67'),_0xd3e4('0x68'),_0xd3e4('0x69')],'raw':!![]}]})[_0xd3e4('0x28')](function(_0x549d34){if(_0x549d34){var _0x23d1ba=_[_0xd3e4('0x6a')](_0x549d34,function(_0x40c0ae){var _0x237fe8=_0x40c0ae['get']({'plain':!![]});return _0x237fe8[_0xd3e4('0x6b')];});return db[_0xd3e4('0x2f')][_0xd3e4('0x4d')]({'where':{'id':_0x3dda26[_0xd3e4('0x49')]['id']}})[_0xd3e4('0x28')](function(_0x2b4fed){return db[_0xd3e4('0x6c')][_0xd3e4('0x6d')](function(_0x564d43){return _0x2b4fed[_0xd3e4('0x6e')](_0x11e77c,{'transaction':_0x564d43})[_0xd3e4('0x28')](function(){return BPromise[_0xd3e4('0x6f')](_0x23d1ba,function(_0x518c0e){return db[_0xd3e4('0x58')][_0xd3e4('0x70')]({'where':{'UserId':_0x518c0e['id'],'FaxQueueId':_0x3dda26[_0xd3e4('0x49')]['id']},'transaction':_0x564d43});});})[_0xd3e4('0x28')](function(){_0x23d1ba[_0xd3e4('0x71')](function(_0x893fb5){socket[_0xd3e4('0x72')]('userFaxQueue:save',{'UserId':_0x893fb5['id'],'FaxQueueId':_0x2b4fed['id']});});});});});}})['then'](respondWithStatusCode(_0x5dddb4,null))[_0xd3e4('0x47')](handleError(_0x5dddb4,null));};exports[_0xd3e4('0x73')]=function(_0x3dfaf0,_0x45282f,_0x10d6b5){return db[_0xd3e4('0x64')][_0xd3e4('0x59')]({'where':{'id':_0x3dfaf0[_0xd3e4('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0xd3e4('0x5a')],'as':_0xd3e4('0x6b'),'attributes':['id'],'raw':!![]}]})[_0xd3e4('0x28')](handleEntityNotFound(_0x45282f,null))[_0xd3e4('0x28')](function(_0xddf378){var _0x43ce58=_[_0xd3e4('0x35')](_0xddf378,'id');var _0x56a0d5=[];var _0x4b6190=[];var _0x2d20c4=squel[_0xd3e4('0x74')]();_0x2d20c4[_0xd3e4('0x75')](_0xd3e4('0x76'))[_0xd3e4('0x77')](_0xd3e4('0x78'),'tq')['join']('user_has_teams','ut',_0xd3e4('0x79'))[_0xd3e4('0x3f')](_0xd3e4('0x7a'),_0x3dfaf0[_0xd3e4('0x49')]['id']);for(var _0x540dfe=0x0;_0x540dfe<_0xddf378['length'];_0x540dfe+=0x1){let _0x21be5a=_0xddf378[_0x540dfe];for(var _0x2c0c1d=0x0;_0x2c0c1d<_0x21be5a['Agents'][_0xd3e4('0x4b')];_0x2c0c1d+=0x1){let _0x350b03=_0x21be5a[_0xd3e4('0x6b')][_0x2c0c1d];var _0x2d1500=_0x2d20c4[_0xd3e4('0x7b')]();_0x2d1500[_0xd3e4('0x3f')](_0xd3e4('0x7c'),_0x350b03['id']);_0x4b6190['push'](db[_0xd3e4('0x6c')][_0xd3e4('0x36')](_0x2d1500[_0xd3e4('0x7d')](),{'type':db[_0xd3e4('0x6c')][_0xd3e4('0x7e')][_0xd3e4('0x7f')]})['then'](function(_0x2f2111){if(_0x2f2111[_0xd3e4('0x4b')]===0x1){return _0x350b03['id'];}else{var _0x4d1976=_['every'](_[_0xd3e4('0x35')](_0x2f2111,'TeamId'),function(_0x629b6a){return _[_0xd3e4('0x80')](_0x43ce58,_0x629b6a);});if(_0x4d1976){return _0x350b03['id'];}}}));}}return BPromise[_0xd3e4('0x81')](_0x4b6190)[_0xd3e4('0x28')](function(_0xd96ac3){_0x56a0d5=_(_0x56a0d5)[_0xd3e4('0x82')](_0xd96ac3)[_0xd3e4('0x83')]()[_0xd3e4('0x84')]();return db['FaxQueue'][_0xd3e4('0x4d')]({'where':{'id':_0x3dfaf0[_0xd3e4('0x49')]['id']}})['then'](function(_0x1002a7){return db[_0xd3e4('0x6c')][_0xd3e4('0x6d')](function(_0x166979){return _0x1002a7[_0xd3e4('0x73')](_0x3dfaf0[_0xd3e4('0x36')][_0xd3e4('0x66')],{'transaction':_0x166979})[_0xd3e4('0x28')](function(){if(!_[_0xd3e4('0x85')](_0x56a0d5)){return _0x1002a7[_0xd3e4('0x86')](_0x56a0d5,{'transaction':_0x166979});}})[_0xd3e4('0x28')](function(){_0x56a0d5[_0xd3e4('0x71')](function(_0x24ed52){socket[_0xd3e4('0x72')]('userFaxQueue:remove',{'UserId':_0x24ed52,'FaxQueueId':_0x1002a7['id']});});});});});});})[_0xd3e4('0x28')](respondWithStatusCode(_0x45282f,null))[_0xd3e4('0x47')](handleError(_0x45282f,null));};exports[_0xd3e4('0x87')]=function(_0x37bae0,_0x1efd91,_0x552049){return db['FaxQueue'][_0xd3e4('0x4d')]({'where':{'id':_0x37bae0['params']['id']}})[_0xd3e4('0x28')](handleEntityNotFound(_0x1efd91,null))[_0xd3e4('0x28')](function(_0x47fda3){if(_0x47fda3){return _0x47fda3[_0xd3e4('0x87')](_0x37bae0['body'][_0xd3e4('0x66')],_[_0xd3e4('0x88')](_0x37bae0[_0xd3e4('0x53')],['ids','id'])||{})[_0xd3e4('0x89')](function(_0x382fb4){for(var _0x5761e6=0x0;_0x5761e6<_0x37bae0[_0xd3e4('0x53')][_0xd3e4('0x66')][_0xd3e4('0x4b')];_0x5761e6+=0x1){socket[_0xd3e4('0x72')](_0xd3e4('0x8a'),{'UserId':Number(_0x37bae0[_0xd3e4('0x53')]['ids'][_0x5761e6]),'FaxQueueId':Number(_0x37bae0[_0xd3e4('0x49')]['id'])});}return _0x382fb4;});}})[_0xd3e4('0x28')](respondWithResult(_0x1efd91,null))['catch'](handleError(_0x1efd91,null));};exports[_0xd3e4('0x86')]=function(_0x9e4359,_0x54bf8c,_0x4d376a){return db[_0xd3e4('0x2f')][_0xd3e4('0x4d')]({'where':{'id':_0x9e4359['params']['id']}})[_0xd3e4('0x28')](handleEntityNotFound(_0x54bf8c,null))[_0xd3e4('0x28')](function(_0x2a74cc){if(_0x2a74cc){return _0x2a74cc[_0xd3e4('0x86')](_0x9e4359[_0xd3e4('0x36')]['ids'])['then'](function(){if(_[_0xd3e4('0x8b')](_0x9e4359[_0xd3e4('0x36')]['ids'])){for(var _0x452b02=0x0;_0x452b02<_0x9e4359[_0xd3e4('0x36')][_0xd3e4('0x66')][_0xd3e4('0x4b')];_0x452b02+=0x1){socket[_0xd3e4('0x72')](_0xd3e4('0x8c'),{'UserId':Number(_0x9e4359[_0xd3e4('0x36')]['ids'][_0x452b02]),'FaxQueueId':Number(_0x9e4359['params']['id'])});}}else{socket[_0xd3e4('0x72')](_0xd3e4('0x8c'),{'UserId':Number(_0x9e4359[_0xd3e4('0x36')][_0xd3e4('0x66')]),'FaxQueueId':Number(_0x9e4359['params']['id'])});}});}})['then'](respondWithStatusCode(_0x54bf8c,null))['catch'](handleError(_0x54bf8c,null));};exports[_0xd3e4('0x8d')]=function(_0x445dd0,_0x4d746f,_0x48e6b1){var _0x50d2e5={};var _0x5eeb17={};var _0x289db5;var _0x23c6cb;return db[_0xd3e4('0x2f')]['findOne']({'where':{'id':_0x445dd0[_0xd3e4('0x49')]['id']}})['then'](handleEntityNotFound(_0x4d746f,null))[_0xd3e4('0x28')](function(_0x2ea009){if(_0x2ea009){_0x289db5=_0x2ea009;_0x5eeb17[_0xd3e4('0x34')]=_[_0xd3e4('0x4a')](db[_0xd3e4('0x5a')][_0xd3e4('0x30')]);_0x5eeb17[_0xd3e4('0x36')]=_[_0xd3e4('0x4a')](_0x445dd0[_0xd3e4('0x36')]);_0x5eeb17[_0xd3e4('0x37')]=_['intersection'](_0x5eeb17[_0xd3e4('0x34')],_0x5eeb17[_0xd3e4('0x36')]);_0x50d2e5[_0xd3e4('0x3a')]=_[_0xd3e4('0x38')](_0x5eeb17[_0xd3e4('0x34')],qs[_0xd3e4('0x39')](_0x445dd0[_0xd3e4('0x36')][_0xd3e4('0x39')]));_0x50d2e5[_0xd3e4('0x3a')]=_0x50d2e5['attributes'][_0xd3e4('0x4b')]?_0x50d2e5[_0xd3e4('0x3a')]:_0x5eeb17[_0xd3e4('0x34')];_0x50d2e5[_0xd3e4('0x3d')]=qs[_0xd3e4('0x3e')](_0x445dd0['query'][_0xd3e4('0x3e')]);_0x50d2e5[_0xd3e4('0x3f')]=qs[_0xd3e4('0x37')](_[_0xd3e4('0x40')](_0x445dd0[_0xd3e4('0x36')],_0x5eeb17['filters']));if(_0x445dd0['query'][_0xd3e4('0x41')]){_0x50d2e5[_0xd3e4('0x3f')]=_[_0xd3e4('0x43')](_0x50d2e5[_0xd3e4('0x3f')],{'$or':_[_0xd3e4('0x35')](_0x50d2e5[_0xd3e4('0x3a')],function(_0x395bc8){var _0x3313f6={};_0x3313f6[_0x395bc8]={'$like':'%'+_0x445dd0[_0xd3e4('0x36')][_0xd3e4('0x41')]+'%'};return _0x3313f6;})});}_0x50d2e5=_[_0xd3e4('0x43')]({},_0x50d2e5,_0x445dd0['options']);return _0x289db5[_0xd3e4('0x8d')](_0x50d2e5);}})['then'](function(_0x4cf41f){if(_0x4cf41f){_0x23c6cb=_0x4cf41f[_0xd3e4('0x4b')];if(!_0x445dd0[_0xd3e4('0x36')][_0xd3e4('0x3b')](_0xd3e4('0x3c'))){_0x50d2e5['limit']=qs[_0xd3e4('0x20')](_0x445dd0[_0xd3e4('0x36')][_0xd3e4('0x20')]);_0x50d2e5[_0xd3e4('0x21')]=qs[_0xd3e4('0x21')](_0x445dd0[_0xd3e4('0x36')]['offset']);}return _0x289db5[_0xd3e4('0x8d')](_0x50d2e5);}})[_0xd3e4('0x28')](function(_0x8476a){if(_0x8476a){return _0x8476a?{'count':_0x23c6cb,'rows':_0x8476a}:null;}})[_0xd3e4('0x28')](respondWithResult(_0x4d746f,null))[_0xd3e4('0x47')](handleError(_0x4d746f,null));};
\ No newline at end of file
+var _0x7c64=['Content-Range','apply','reject','save','update','then','destroy','get','FaxQueues','error','stack','name','send','index','map','fieldName','type','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','include','rows','show','params','keys','FaxQueue','rawAttributes','includeAll','options','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','filters','FaxQueueId','User','agent','faxPause','updatedAt','createdAt','%s/%s','getTeams','Team','order','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','field','tq.TeamId','from','team_has_fax_queues','FaxQueueId\x20=\x20?','clone','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0x7c64,0xfa));var _0x47c6=function(_0x40b878,_0x12786a){_0x40b878=_0x40b878-0x0;var _0x597df9=_0x7c64[_0x40b878];return _0x597df9;};'use strict';var emlformat=require(_0x47c6('0x0'));var rimraf=require(_0x47c6('0x1'));var zipdir=require(_0x47c6('0x2'));var jsonpatch=require(_0x47c6('0x3'));var rp=require(_0x47c6('0x4'));var moment=require('moment');var BPromise=require(_0x47c6('0x5'));var Mustache=require(_0x47c6('0x6'));var util=require(_0x47c6('0x7'));var path=require(_0x47c6('0x8'));var sox=require(_0x47c6('0x9'));var csv=require(_0x47c6('0xa'));var ejs=require(_0x47c6('0xb'));var fs=require('fs');var fs_extra=require(_0x47c6('0xc'));var _=require(_0x47c6('0xd'));var squel=require('squel');var crypto=require(_0x47c6('0xe'));var jsforce=require(_0x47c6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x47c6('0xa'));var querystring=require(_0x47c6('0x10'));var Papa=require('papaparse');var Redis=require(_0x47c6('0x11'));var authService=require(_0x47c6('0x12'));var qs=require(_0x47c6('0x13'));var as=require(_0x47c6('0x14'));var hardwareService=require(_0x47c6('0x15'));var logger=require('../../config/logger')(_0x47c6('0x16'));var utils=require('../../config/utils');var config=require(_0x47c6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x47c6('0x18'))['db'];config[_0x47c6('0x19')]=_[_0x47c6('0x1a')](config[_0x47c6('0x19')],{'host':_0x47c6('0x1b'),'port':0x18eb});var socket=require(_0x47c6('0x1c'))(new Redis(config[_0x47c6('0x19')]));require('./faxQueue.socket')[_0x47c6('0x1d')](socket);function respondWithStatusCode(_0x53f156,_0x26ccaa){_0x26ccaa=_0x26ccaa||0xcc;return function(_0x174299){if(_0x174299){return _0x53f156[_0x47c6('0x1e')](_0x26ccaa);}return _0x53f156[_0x47c6('0x1f')](_0x26ccaa)[_0x47c6('0x20')]();};}function respondWithResult(_0x788bf4,_0x1f31d8){_0x1f31d8=_0x1f31d8||0xc8;return function(_0x4c0620){if(_0x4c0620){return _0x788bf4['status'](_0x1f31d8)[_0x47c6('0x21')](_0x4c0620);}};}function respondWithFilteredResult(_0x506714,_0x49ae5c){return function(_0x5ef339){if(_0x5ef339){var _0x1569ee=typeof _0x49ae5c[_0x47c6('0x22')]===_0x47c6('0x23')&&typeof _0x49ae5c[_0x47c6('0x24')]===_0x47c6('0x23');var _0x430738=_0x5ef339[_0x47c6('0x25')];var _0x39243d=_0x1569ee?0x0:_0x49ae5c['offset'];var _0x17e78b=_0x1569ee?_0x5ef339[_0x47c6('0x25')]:_0x49ae5c[_0x47c6('0x22')]+_0x49ae5c[_0x47c6('0x24')];var _0x128d47;if(_0x17e78b>=_0x430738){_0x17e78b=_0x430738;_0x128d47=0xc8;}else{_0x128d47=0xce;}_0x506714[_0x47c6('0x1f')](_0x128d47);return _0x506714['set'](_0x47c6('0x26'),_0x39243d+'-'+_0x17e78b+'/'+_0x430738)['json'](_0x5ef339);}return null;};}function patchUpdates(_0x424327){return function(_0x12b224){try{jsonpatch[_0x47c6('0x27')](_0x12b224,_0x424327,!![]);}catch(_0x2db6d5){return BPromise[_0x47c6('0x28')](_0x2db6d5);}return _0x12b224[_0x47c6('0x29')]();};}function saveUpdates(_0xb23357,_0x458681){return function(_0x53c1f8){if(_0x53c1f8){return _0x53c1f8[_0x47c6('0x2a')](_0xb23357)[_0x47c6('0x2b')](function(_0x233176){return _0x233176;});}return null;};}function removeEntity(_0x24a6a3,_0x350a68){return function(_0x4d0dbe){if(_0x4d0dbe){return _0x4d0dbe[_0x47c6('0x2c')]()[_0x47c6('0x2b')](function(){var _0xe874bb=_0x4d0dbe[_0x47c6('0x2d')]({'plain':!![]});var _0x380c73=_0x47c6('0x2e');return db['UserProfileResource']['destroy']({'where':{'type':_0x380c73,'resourceId':_0xe874bb['id']}})[_0x47c6('0x2b')](function(){return _0x4d0dbe;});})[_0x47c6('0x2b')](function(){_0x24a6a3[_0x47c6('0x1f')](0xcc)[_0x47c6('0x20')]();});}};}function handleEntityNotFound(_0x151e27,_0x3df18e){return function(_0x44f34d){if(!_0x44f34d){_0x151e27['sendStatus'](0x194);}return _0x44f34d;};}function handleError(_0x211e5b,_0x52693a){_0x52693a=_0x52693a||0x1f4;return function(_0x388ca8){logger[_0x47c6('0x2f')](_0x388ca8[_0x47c6('0x30')]);if(_0x388ca8[_0x47c6('0x31')]){delete _0x388ca8[_0x47c6('0x31')];}_0x211e5b['status'](_0x52693a)[_0x47c6('0x32')](_0x388ca8);};}exports[_0x47c6('0x33')]=function(_0x252171,_0x35d481){var _0x366da5={},_0x11411d={},_0x4072fe={'count':0x0,'rows':[]};var _0x396691=_[_0x47c6('0x34')](db['FaxQueue']['rawAttributes'],function(_0x595692){return{'name':_0x595692[_0x47c6('0x35')],'type':_0x595692[_0x47c6('0x36')]['key']};});_0x11411d[_0x47c6('0x37')]=_[_0x47c6('0x34')](_0x396691,_0x47c6('0x31'));_0x11411d[_0x47c6('0x38')]=_['keys'](_0x252171[_0x47c6('0x38')]);_0x11411d['filters']=_[_0x47c6('0x39')](_0x11411d[_0x47c6('0x37')],_0x11411d[_0x47c6('0x38')]);_0x366da5['attributes']=_[_0x47c6('0x39')](_0x11411d[_0x47c6('0x37')],qs[_0x47c6('0x3a')](_0x252171[_0x47c6('0x38')]['fields']));_0x366da5[_0x47c6('0x3b')]=_0x366da5[_0x47c6('0x3b')][_0x47c6('0x3c')]?_0x366da5[_0x47c6('0x3b')]:_0x11411d[_0x47c6('0x37')];if(!_0x252171['query'][_0x47c6('0x3d')](_0x47c6('0x3e'))){_0x366da5['limit']=qs[_0x47c6('0x24')](_0x252171['query'][_0x47c6('0x24')]);_0x366da5[_0x47c6('0x22')]=qs[_0x47c6('0x22')](_0x252171['query']['offset']);}_0x366da5['order']=qs[_0x47c6('0x3f')](_0x252171['query'][_0x47c6('0x3f')]);_0x366da5[_0x47c6('0x40')]=qs['filters'](_[_0x47c6('0x41')](_0x252171[_0x47c6('0x38')],_0x11411d['filters']),_0x396691);if(_0x252171[_0x47c6('0x38')]['filter']){_0x366da5[_0x47c6('0x40')]=_[_0x47c6('0x42')](_0x366da5[_0x47c6('0x40')],{'$or':_[_0x47c6('0x34')](_0x396691,function(_0x44b754){if(_0x44b754[_0x47c6('0x36')]!==_0x47c6('0x43')){var _0x113744={};_0x113744[_0x44b754['name']]={'$like':'%'+_0x252171[_0x47c6('0x38')][_0x47c6('0x44')]+'%'};return _0x113744;}})});}_0x366da5=_[_0x47c6('0x42')]({},_0x366da5,_0x252171['options']);var _0x392bf4={'where':_0x366da5['where']};return db['FaxQueue'][_0x47c6('0x25')](_0x392bf4)[_0x47c6('0x2b')](function(_0x1161e8){_0x4072fe[_0x47c6('0x25')]=_0x1161e8;if(_0x252171['query']['includeAll']){_0x366da5[_0x47c6('0x45')]=[{'all':!![]}];}return db['FaxQueue']['findAll'](_0x366da5);})['then'](function(_0x509593){_0x4072fe[_0x47c6('0x46')]=_0x509593;return _0x4072fe;})[_0x47c6('0x2b')](respondWithFilteredResult(_0x35d481,_0x366da5))['catch'](handleError(_0x35d481,null));};exports[_0x47c6('0x47')]=function(_0x25cc66,_0x393808){var _0x5f02dd={'raw':!![],'where':{'id':_0x25cc66[_0x47c6('0x48')]['id']}},_0x29be6b={};_0x29be6b[_0x47c6('0x37')]=_[_0x47c6('0x49')](db[_0x47c6('0x4a')][_0x47c6('0x4b')]);_0x29be6b[_0x47c6('0x38')]=_[_0x47c6('0x49')](_0x25cc66['query']);_0x29be6b['filters']=_[_0x47c6('0x39')](_0x29be6b[_0x47c6('0x37')],_0x29be6b[_0x47c6('0x38')]);_0x5f02dd[_0x47c6('0x3b')]=_[_0x47c6('0x39')](_0x29be6b['model'],qs[_0x47c6('0x3a')](_0x25cc66[_0x47c6('0x38')][_0x47c6('0x3a')]));_0x5f02dd['attributes']=_0x5f02dd['attributes']['length']?_0x5f02dd['attributes']:_0x29be6b[_0x47c6('0x37')];if(_0x25cc66[_0x47c6('0x38')][_0x47c6('0x4c')]){_0x5f02dd[_0x47c6('0x45')]=[{'all':!![]}];}_0x5f02dd=_[_0x47c6('0x42')]({},_0x5f02dd,_0x25cc66[_0x47c6('0x4d')]);return db[_0x47c6('0x4a')][_0x47c6('0x4e')](_0x5f02dd)['then'](handleEntityNotFound(_0x393808,null))[_0x47c6('0x2b')](respondWithResult(_0x393808,null))[_0x47c6('0x4f')](handleError(_0x393808,null));};exports[_0x47c6('0x50')]=function(_0xfb5908,_0x24f5f9){return db[_0x47c6('0x4a')]['create'](_0xfb5908[_0x47c6('0x51')],{})['then'](function(_0x520d12){var _0x5e975f=_0xfb5908['user'][_0x47c6('0x2d')]({'plain':!![]});if(!_0x5e975f)throw new Error(_0x47c6('0x52'));if(_0x5e975f[_0x47c6('0x53')]===_0x47c6('0x54')){var _0xc306c0=_0x520d12['get']({'plain':!![]});var _0x450c07=_0x47c6('0x2e');return db[_0x47c6('0x55')][_0x47c6('0x4e')]({'where':{'name':_0x450c07,'userProfileId':_0x5e975f[_0x47c6('0x56')]},'raw':!![]})['then'](function(_0x4911e9){if(_0x4911e9&&_0x4911e9[_0x47c6('0x57')]===0x0){return db[_0x47c6('0x58')][_0x47c6('0x50')]({'name':_0xc306c0[_0x47c6('0x31')],'resourceId':_0xc306c0['id'],'type':_0x4911e9[_0x47c6('0x31')],'sectionId':_0x4911e9['id']},{})[_0x47c6('0x2b')](function(){return _0x520d12;});}else{return _0x520d12;}})['catch'](function(_0x1fb4da){logger[_0x47c6('0x2f')](_0x47c6('0x59'),_0x1fb4da);throw _0x1fb4da;});}return _0x520d12;})[_0x47c6('0x2b')](respondWithResult(_0x24f5f9,0xc9))[_0x47c6('0x4f')](handleError(_0x24f5f9,null));};exports[_0x47c6('0x2a')]=function(_0x237472,_0xbf1e9b){if(_0x237472[_0x47c6('0x51')]['id']){delete _0x237472['body']['id'];}return db[_0x47c6('0x4a')][_0x47c6('0x4e')]({'where':{'id':_0x237472[_0x47c6('0x48')]['id']}})['then'](handleEntityNotFound(_0xbf1e9b,null))[_0x47c6('0x2b')](saveUpdates(_0x237472['body'],null))['then'](respondWithResult(_0xbf1e9b,null))[_0x47c6('0x4f')](handleError(_0xbf1e9b,null));};exports[_0x47c6('0x2c')]=function(_0x3ae1f8,_0x52176c){return db['FaxQueue'][_0x47c6('0x4e')]({'where':{'id':_0x3ae1f8[_0x47c6('0x48')]['id']}})[_0x47c6('0x2b')](handleEntityNotFound(_0x52176c,null))[_0x47c6('0x2b')](removeEntity(_0x52176c,null))['catch'](handleError(_0x52176c,null));};exports[_0x47c6('0x5a')]=function(_0x32505b,_0x46fde6){return db[_0x47c6('0x4a')][_0x47c6('0x5a')]()['then'](respondWithResult(_0x46fde6,null))[_0x47c6('0x4f')](handleError(_0x46fde6,null));};exports[_0x47c6('0x5b')]=function(_0x16646c,_0x3facfa,_0x1d413e){var _0x4dd8dc={'raw':!![],'where':{}},_0xf9d0dd={},_0x361952;return db[_0x47c6('0x4a')][_0x47c6('0x5c')]({'where':{'id':_0x16646c['params']['id']}})[_0x47c6('0x2b')](handleEntityNotFound(_0x3facfa,null))['then'](function(_0x2b6f85){if(_0x2b6f85){_0x361952=_0x2b6f85[_0x47c6('0x2d')]({'plain':!![]});_0xf9d0dd[_0x47c6('0x37')]=_['keys'](db[_0x47c6('0x5d')][_0x47c6('0x4b')]);_0xf9d0dd[_0x47c6('0x38')]=_[_0x47c6('0x49')](_0x16646c[_0x47c6('0x38')]);_0xf9d0dd[_0x47c6('0x5e')]=_['intersection'](_0xf9d0dd[_0x47c6('0x37')],_0xf9d0dd['query']);_0x4dd8dc[_0x47c6('0x3b')]=_[_0x47c6('0x39')](_0xf9d0dd[_0x47c6('0x37')],qs[_0x47c6('0x3a')](_0x16646c['query'][_0x47c6('0x3a')]));_0x4dd8dc[_0x47c6('0x3b')]=_0x4dd8dc[_0x47c6('0x3b')]['length']?_0x4dd8dc[_0x47c6('0x3b')]:_0xf9d0dd[_0x47c6('0x37')];if(!_0x16646c['query']['hasOwnProperty'](_0x47c6('0x3e'))){_0x4dd8dc[_0x47c6('0x24')]=qs[_0x47c6('0x24')](_0x16646c[_0x47c6('0x38')][_0x47c6('0x24')]);_0x4dd8dc['offset']=qs[_0x47c6('0x22')](_0x16646c['query'][_0x47c6('0x22')]);}_0x4dd8dc['order']=qs['sort'](_0x16646c['query'][_0x47c6('0x3f')]);_0x4dd8dc[_0x47c6('0x40')]=qs[_0x47c6('0x5e')](_[_0x47c6('0x41')](_0x16646c['query'],_0xf9d0dd[_0x47c6('0x5e')]));_0x4dd8dc[_0x47c6('0x40')][_0x47c6('0x5f')]=_0x2b6f85['id'];if(_0x16646c[_0x47c6('0x38')][_0x47c6('0x44')]){_0x4dd8dc[_0x47c6('0x40')]=_['merge'](_0x4dd8dc['where'],{'$or':_[_0x47c6('0x34')](_0x4dd8dc['attributes'],function(_0x200b4e){var _0x2979e3={};_0x2979e3[_0x200b4e]={'$like':'%'+_0x16646c[_0x47c6('0x38')][_0x47c6('0x44')]+'%'};return _0x2979e3;})});}_0x4dd8dc=_[_0x47c6('0x42')]({},_0x4dd8dc,_0x16646c[_0x47c6('0x4d')]);return db[_0x47c6('0x5d')]['findAll'](_0x4dd8dc);}})['then'](function(_0x399fde){if(_0x399fde){return db[_0x47c6('0x60')]['findAndCountAll']({'where':{'id':_['map'](_0x399fde,'UserId'),'role':_0x47c6('0x61')},'attributes':['id',_0x47c6('0x31'),_0x47c6('0x62'),_0x47c6('0x63'),_0x47c6('0x64')]});}})[_0x47c6('0x2b')](function(_0x5d24e7){if(_0x5d24e7){return{'count':_0x5d24e7[_0x47c6('0x25')],'rows':_[_0x47c6('0x34')](_0x5d24e7[_0x47c6('0x46')],function(_0x6dd3ab){return{'membername':_0x6dd3ab[_0x47c6('0x31')],'UserId':_0x6dd3ab['id'],'queue_name':_0x361952[_0x47c6('0x31')],'FaxQueueId':_0x361952['id'],'interface':util['format'](_0x47c6('0x65'),'SIP',_0x6dd3ab[_0x47c6('0x31')]),'penalty':0x0,'paused':_0x6dd3ab[_0x47c6('0x62')],'createdAt':_0x6dd3ab[_0x47c6('0x64')],'updatedAt':_0x6dd3ab['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x47c6('0x2b')](respondWithFilteredResult(_0x3facfa,_0x4dd8dc))[_0x47c6('0x4f')](handleError(_0x3facfa,null));};exports[_0x47c6('0x66')]=function(_0x317a56,_0x20e1a2,_0x1561b3){var _0x495524={};var _0x297c2c={};var _0x34906a;var _0x45c7a1;return db[_0x47c6('0x4a')][_0x47c6('0x5c')]({'where':{'id':_0x317a56[_0x47c6('0x48')]['id']}})['then'](handleEntityNotFound(_0x20e1a2,null))['then'](function(_0x2f8cee){if(_0x2f8cee){_0x34906a=_0x2f8cee;_0x297c2c[_0x47c6('0x37')]=_[_0x47c6('0x49')](db[_0x47c6('0x67')][_0x47c6('0x4b')]);_0x297c2c[_0x47c6('0x38')]=_[_0x47c6('0x49')](_0x317a56[_0x47c6('0x38')]);_0x297c2c[_0x47c6('0x5e')]=_[_0x47c6('0x39')](_0x297c2c[_0x47c6('0x37')],_0x297c2c[_0x47c6('0x38')]);_0x495524[_0x47c6('0x3b')]=_['intersection'](_0x297c2c[_0x47c6('0x37')],qs[_0x47c6('0x3a')](_0x317a56['query'][_0x47c6('0x3a')]));_0x495524['attributes']=_0x495524[_0x47c6('0x3b')]['length']?_0x495524[_0x47c6('0x3b')]:_0x297c2c[_0x47c6('0x37')];_0x495524[_0x47c6('0x68')]=qs[_0x47c6('0x3f')](_0x317a56[_0x47c6('0x38')]['sort']);_0x495524[_0x47c6('0x40')]=qs[_0x47c6('0x5e')](_[_0x47c6('0x41')](_0x317a56[_0x47c6('0x38')],_0x297c2c['filters']));if(_0x317a56[_0x47c6('0x38')]['filter']){_0x495524['where']=_['merge'](_0x495524['where'],{'$or':_[_0x47c6('0x34')](_0x495524[_0x47c6('0x3b')],function(_0x17f633){var _0x4e9b75={};_0x4e9b75[_0x17f633]={'$like':'%'+_0x317a56[_0x47c6('0x38')][_0x47c6('0x44')]+'%'};return _0x4e9b75;})});}_0x495524=_[_0x47c6('0x42')]({},_0x495524,_0x317a56[_0x47c6('0x4d')]);return _0x34906a[_0x47c6('0x66')](_0x495524);}})['then'](function(_0x1b131a){if(_0x1b131a){_0x45c7a1=_0x1b131a['length'];if(!_0x317a56[_0x47c6('0x38')]['hasOwnProperty'](_0x47c6('0x3e'))){_0x495524['limit']=qs['limit'](_0x317a56[_0x47c6('0x38')][_0x47c6('0x24')]);_0x495524[_0x47c6('0x22')]=qs[_0x47c6('0x22')](_0x317a56[_0x47c6('0x38')]['offset']);}return _0x34906a[_0x47c6('0x66')](_0x495524);}})[_0x47c6('0x2b')](function(_0x115862){if(_0x115862){return _0x115862?{'count':_0x45c7a1,'rows':_0x115862}:null;}})['then'](respondWithResult(_0x20e1a2,null))[_0x47c6('0x4f')](handleError(_0x20e1a2,null));};exports[_0x47c6('0x69')]=function(_0x2c4e2d,_0x167786,_0x10548b){var _0x5bc2f3=_0x2c4e2d[_0x47c6('0x51')][_0x47c6('0x6a')];return db[_0x47c6('0x67')]['findAll']({'where':{'id':_0x5bc2f3},'attributes':['id'],'include':[{'model':db[_0x47c6('0x60')],'as':_0x47c6('0x6b'),'attributes':['id','name',_0x47c6('0x6c'),_0x47c6('0x6d'),_0x47c6('0x6e')],'raw':!![]}]})[_0x47c6('0x2b')](function(_0x4864ee){if(_0x4864ee){var _0x198a4d=_[_0x47c6('0x6f')](_0x4864ee,function(_0x3ccc73){var _0x4b8701=_0x3ccc73[_0x47c6('0x2d')]({'plain':!![]});return _0x4b8701[_0x47c6('0x6b')];});return db[_0x47c6('0x4a')][_0x47c6('0x4e')]({'where':{'id':_0x2c4e2d[_0x47c6('0x48')]['id']}})[_0x47c6('0x2b')](function(_0x175dd5){return db[_0x47c6('0x70')][_0x47c6('0x71')](function(_0x28cdfa){return _0x175dd5[_0x47c6('0x69')](_0x5bc2f3,{'transaction':_0x28cdfa})[_0x47c6('0x2b')](function(){return BPromise[_0x47c6('0x72')](_0x198a4d,function(_0x79afb2){return db[_0x47c6('0x5d')][_0x47c6('0x73')]({'where':{'UserId':_0x79afb2['id'],'FaxQueueId':_0x2c4e2d[_0x47c6('0x48')]['id']},'transaction':_0x28cdfa});});})[_0x47c6('0x2b')](function(){_0x198a4d[_0x47c6('0x74')](function(_0xb293f9){socket[_0x47c6('0x75')]('userFaxQueue:save',{'UserId':_0xb293f9['id'],'FaxQueueId':_0x175dd5['id']});});});});});}})['then'](respondWithStatusCode(_0x167786,null))[_0x47c6('0x4f')](handleError(_0x167786,null));};exports['removeTeams']=function(_0x4dd99e,_0x571210,_0x3696c8){return db[_0x47c6('0x67')]['findAll']({'where':{'id':_0x4dd99e[_0x47c6('0x38')][_0x47c6('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x47c6('0x60')],'as':_0x47c6('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x571210,null))[_0x47c6('0x2b')](function(_0x4b80a7){var _0x5aae9e=_[_0x47c6('0x34')](_0x4b80a7,'id');var _0x12d24b=[];var _0x1236a9=[];var _0x5e6e0d=squel['select']();_0x5e6e0d[_0x47c6('0x76')](_0x47c6('0x77'))[_0x47c6('0x78')](_0x47c6('0x79'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x47c6('0x40')](_0x47c6('0x7a'),_0x4dd99e[_0x47c6('0x48')]['id']);for(var _0x216cc6=0x0;_0x216cc6<_0x4b80a7['length'];_0x216cc6+=0x1){let _0xfa32db=_0x4b80a7[_0x216cc6];for(var _0x4b646e=0x0;_0x4b646e<_0xfa32db[_0x47c6('0x6b')]['length'];_0x4b646e+=0x1){let _0x2956c7=_0xfa32db[_0x47c6('0x6b')][_0x4b646e];var _0x54e091=_0x5e6e0d[_0x47c6('0x7b')]();_0x54e091[_0x47c6('0x40')]('ut.UserId\x20=\x20?',_0x2956c7['id']);_0x1236a9[_0x47c6('0x7c')](db['sequelize']['query'](_0x54e091[_0x47c6('0x7d')](),{'type':db[_0x47c6('0x70')][_0x47c6('0x7e')][_0x47c6('0x7f')]})[_0x47c6('0x2b')](function(_0x38aa44){if(_0x38aa44[_0x47c6('0x3c')]===0x1){return _0x2956c7['id'];}else{var _0x25d9c7=_[_0x47c6('0x80')](_[_0x47c6('0x34')](_0x38aa44,_0x47c6('0x81')),function(_0x1f49ad){return _[_0x47c6('0x82')](_0x5aae9e,_0x1f49ad);});if(_0x25d9c7){return _0x2956c7['id'];}}}));}}return BPromise[_0x47c6('0x83')](_0x1236a9)['then'](function(_0x7f2d9c){_0x12d24b=_(_0x12d24b)[_0x47c6('0x84')](_0x7f2d9c)[_0x47c6('0x85')]()[_0x47c6('0x86')]();return db['FaxQueue']['find']({'where':{'id':_0x4dd99e[_0x47c6('0x48')]['id']}})[_0x47c6('0x2b')](function(_0x35dc94){return db[_0x47c6('0x70')][_0x47c6('0x71')](function(_0x4d362c){return _0x35dc94[_0x47c6('0x87')](_0x4dd99e[_0x47c6('0x38')][_0x47c6('0x6a')],{'transaction':_0x4d362c})[_0x47c6('0x2b')](function(){if(!_['isEmpty'](_0x12d24b)){return _0x35dc94[_0x47c6('0x88')](_0x12d24b,{'transaction':_0x4d362c});}})['then'](function(){_0x12d24b['forEach'](function(_0x308260){socket['emit'](_0x47c6('0x89'),{'UserId':_0x308260,'FaxQueueId':_0x35dc94['id']});});});});});});})['then'](respondWithStatusCode(_0x571210,null))[_0x47c6('0x4f')](handleError(_0x571210,null));};exports[_0x47c6('0x8a')]=function(_0x498ae3,_0x49d24d,_0x27cd09){return db[_0x47c6('0x4a')][_0x47c6('0x4e')]({'where':{'id':_0x498ae3[_0x47c6('0x48')]['id']}})[_0x47c6('0x2b')](handleEntityNotFound(_0x49d24d,null))[_0x47c6('0x2b')](function(_0x1854b6){if(_0x1854b6){return _0x1854b6['addAgents'](_0x498ae3['body'][_0x47c6('0x6a')],_[_0x47c6('0x8b')](_0x498ae3['body'],[_0x47c6('0x6a'),'id'])||{})[_0x47c6('0x8c')](function(_0x4abb9b){for(var _0x5d4997=0x0;_0x5d4997<_0x498ae3['body'][_0x47c6('0x6a')]['length'];_0x5d4997+=0x1){socket[_0x47c6('0x75')](_0x47c6('0x8d'),{'UserId':Number(_0x498ae3[_0x47c6('0x51')][_0x47c6('0x6a')][_0x5d4997]),'FaxQueueId':Number(_0x498ae3[_0x47c6('0x48')]['id'])});}return _0x4abb9b;});}})[_0x47c6('0x2b')](respondWithResult(_0x49d24d,null))[_0x47c6('0x4f')](handleError(_0x49d24d,null));};exports['removeAgents']=function(_0x59ff36,_0x2a68d0,_0x530f55){return db['FaxQueue'][_0x47c6('0x4e')]({'where':{'id':_0x59ff36['params']['id']}})[_0x47c6('0x2b')](handleEntityNotFound(_0x2a68d0,null))['then'](function(_0xe673aa){if(_0xe673aa){return _0xe673aa[_0x47c6('0x88')](_0x59ff36[_0x47c6('0x38')][_0x47c6('0x6a')])[_0x47c6('0x2b')](function(){if(_[_0x47c6('0x8e')](_0x59ff36[_0x47c6('0x38')][_0x47c6('0x6a')])){for(var _0x38ccf7=0x0;_0x38ccf7<_0x59ff36[_0x47c6('0x38')][_0x47c6('0x6a')][_0x47c6('0x3c')];_0x38ccf7+=0x1){socket[_0x47c6('0x75')](_0x47c6('0x89'),{'UserId':Number(_0x59ff36[_0x47c6('0x38')][_0x47c6('0x6a')][_0x38ccf7]),'FaxQueueId':Number(_0x59ff36['params']['id'])});}}else{socket[_0x47c6('0x75')](_0x47c6('0x89'),{'UserId':Number(_0x59ff36['query']['ids']),'FaxQueueId':Number(_0x59ff36[_0x47c6('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a68d0,null))[_0x47c6('0x4f')](handleError(_0x2a68d0,null));};exports[_0x47c6('0x8f')]=function(_0x3d1ee9,_0x4d6058,_0x488fa1){var _0x114e71={};var _0x5879a6={};var _0x3f81da;var _0x302f1;return db[_0x47c6('0x4a')][_0x47c6('0x5c')]({'where':{'id':_0x3d1ee9['params']['id']}})[_0x47c6('0x2b')](handleEntityNotFound(_0x4d6058,null))[_0x47c6('0x2b')](function(_0x295d11){if(_0x295d11){_0x3f81da=_0x295d11;_0x5879a6[_0x47c6('0x37')]=_['keys'](db[_0x47c6('0x60')]['rawAttributes']);_0x5879a6[_0x47c6('0x38')]=_[_0x47c6('0x49')](_0x3d1ee9[_0x47c6('0x38')]);_0x5879a6['filters']=_[_0x47c6('0x39')](_0x5879a6['model'],_0x5879a6[_0x47c6('0x38')]);_0x114e71['attributes']=_[_0x47c6('0x39')](_0x5879a6['model'],qs['fields'](_0x3d1ee9[_0x47c6('0x38')][_0x47c6('0x3a')]));_0x114e71[_0x47c6('0x3b')]=_0x114e71[_0x47c6('0x3b')][_0x47c6('0x3c')]?_0x114e71[_0x47c6('0x3b')]:_0x5879a6[_0x47c6('0x37')];_0x114e71['order']=qs[_0x47c6('0x3f')](_0x3d1ee9[_0x47c6('0x38')][_0x47c6('0x3f')]);_0x114e71[_0x47c6('0x40')]=qs['filters'](_[_0x47c6('0x41')](_0x3d1ee9[_0x47c6('0x38')],_0x5879a6[_0x47c6('0x5e')]));if(_0x3d1ee9[_0x47c6('0x38')][_0x47c6('0x44')]){_0x114e71[_0x47c6('0x40')]=_['merge'](_0x114e71[_0x47c6('0x40')],{'$or':_['map'](_0x114e71[_0x47c6('0x3b')],function(_0x4dc305){var _0x393c21={};_0x393c21[_0x4dc305]={'$like':'%'+_0x3d1ee9['query'][_0x47c6('0x44')]+'%'};return _0x393c21;})});}_0x114e71=_[_0x47c6('0x42')]({},_0x114e71,_0x3d1ee9[_0x47c6('0x4d')]);return _0x3f81da[_0x47c6('0x8f')](_0x114e71);}})[_0x47c6('0x2b')](function(_0x2e25cb){if(_0x2e25cb){_0x302f1=_0x2e25cb['length'];if(!_0x3d1ee9[_0x47c6('0x38')][_0x47c6('0x3d')]('nolimit')){_0x114e71[_0x47c6('0x24')]=qs['limit'](_0x3d1ee9['query'][_0x47c6('0x24')]);_0x114e71[_0x47c6('0x22')]=qs[_0x47c6('0x22')](_0x3d1ee9['query'][_0x47c6('0x22')]);}return _0x3f81da['getAgents'](_0x114e71);}})[_0x47c6('0x2b')](function(_0x47c599){if(_0x47c599){return _0x47c599?{'count':_0x302f1,'rows':_0x47c599}:null;}})[_0x47c6('0x2b')](respondWithResult(_0x4d6058,null))['catch'](handleError(_0x4d6058,null));};
\ No newline at end of file
index c1b13bb..76ef801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa43d=['exports','events','FaxQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x406516,_0x17fff7){var _0x5de91a=function(_0x5964aa){while(--_0x5964aa){_0x406516['push'](_0x406516['shift']());}};_0x5de91a(++_0x17fff7);}(_0xa43d,0x1a8));var _0xda43=function(_0x14a84e,_0xffb06){_0x14a84e=_0x14a84e-0x0;var _0x2aca47=_0xa43d[_0x14a84e];return _0x2aca47;};'use strict';var EventEmitter=require(_0xda43('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0xda43('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xda43('0x2')](0x0);var events={'afterCreate':_0xda43('0x3'),'afterUpdate':_0xda43('0x4'),'afterDestroy':_0xda43('0x5')};function emitEvent(_0x403d3c){return function(_0x1a2f7a,_0x23bfc0,_0x843e3f){FaxQueueEvents['emit'](_0x403d3c+':'+_0x1a2f7a['id'],_0x1a2f7a);FaxQueueEvents[_0xda43('0x6')](_0x403d3c,_0x1a2f7a);_0x843e3f(null);};}for(var e in events){if(events[_0xda43('0x7')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xda43('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0xd8fc=['remove','emit','hasOwnProperty','hook','exports','events','save','update'];(function(_0x3eb436,_0x310ba1){var _0x1a2845=function(_0x5a5587){while(--_0x5a5587){_0x3eb436['push'](_0x3eb436['shift']());}};_0x1a2845(++_0x310ba1);}(_0xd8fc,0xdd));var _0xcd8f=function(_0x1c6ef2,_0x8d926a){_0x1c6ef2=_0x1c6ef2-0x0;var _0x404b8c=_0xd8fc[_0x1c6ef2];return _0x404b8c;};'use strict';var EventEmitter=require(_0xcd8f('0x0'));var FaxQueue=require('../../mysqldb')['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcd8f('0x1'),'afterUpdate':_0xcd8f('0x2'),'afterDestroy':_0xcd8f('0x3')};function emitEvent(_0x1fc0da){return function(_0x29e1bf,_0x15fe93,_0x3c48d0){FaxQueueEvents[_0xcd8f('0x4')](_0x1fc0da+':'+_0x29e1bf['id'],_0x29e1bf);FaxQueueEvents[_0xcd8f('0x4')](_0x1fc0da,_0x29e1bf);_0x3c48d0(null);};}for(var e in events){if(events[_0xcd8f('0x5')](e)){var event=events[e];FaxQueue[_0xcd8f('0x6')](e,emitEvent(event));}}module[_0xcd8f('0x7')]=FaxQueueEvents;
\ No newline at end of file
index 6b976e3..4354e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9519=['moment','bluebird','request-promise','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues','util','../../config/logger'];(function(_0x195325,_0x4bfed0){var _0x3c4df0=function(_0x1b9304){while(--_0x1b9304){_0x195325['push'](_0x195325['shift']());}};_0x3c4df0(++_0x4bfed0);}(_0x9519,0xf0));var _0x9951=function(_0x4030d7,_0x37cec9){_0x4030d7=_0x4030d7-0x0;var _0x2fe376=_0x9519[_0x4030d7];return _0x2fe376;};'use strict';var _=require('lodash');var util=require(_0x9951('0x0'));var logger=require(_0x9951('0x1'))('api');var moment=require(_0x9951('0x2'));var BPromise=require(_0x9951('0x3'));var rp=require(_0x9951('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9951('0x5'));var config=require(_0x9951('0x6'));var attributes=require(_0x9951('0x7'));module[_0x9951('0x8')]=function(_0x170525,_0x504d12){return _0x170525['define'](_0x9951('0x9'),attributes,{'tableName':_0x9951('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb315=['FaxQueue','fax_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0xcd21d9,_0x5726f2){var _0x424fb9=function(_0x11c6d5){while(--_0x11c6d5){_0xcd21d9['push'](_0xcd21d9['shift']());}};_0x424fb9(++_0x5726f2);}(_0xb315,0x113));var _0x5b31=function(_0x2136d5,_0x4b0479){_0x2136d5=_0x2136d5-0x0;var _0x3bee2e=_0xb315[_0x2136d5];return _0x3bee2e;};'use strict';var _=require(_0x5b31('0x0'));var util=require(_0x5b31('0x1'));var logger=require(_0x5b31('0x2'))(_0x5b31('0x3'));var moment=require(_0x5b31('0x4'));var BPromise=require(_0x5b31('0x5'));var rp=require(_0x5b31('0x6'));var fs=require('fs');var path=require(_0x5b31('0x7'));var rimraf=require(_0x5b31('0x8'));var config=require(_0x5b31('0x9'));var attributes=require('./faxQueue.attributes');module[_0x5b31('0xa')]=function(_0x56b42f,_0x23cf88){return _0x56b42f['define'](_0x5b31('0xb'),attributes,{'tableName':_0x5b31('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea612c4..0dfad29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a3=['request\x20sent','result','catch','GetFaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowFaxQueue','FaxQueue','lodash','util','moment','ioredis','../../config/utils','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','message','FaxQueue,\x20%s,\x20%s'];(function(_0x3f47b6,_0x5ef3a4){var _0x5b2514=function(_0x5e8aae){while(--_0x5e8aae){_0x3f47b6['push'](_0x3f47b6['shift']());}};_0x5b2514(++_0x5ef3a4);}(_0xd4a3,0x1f1));var _0x3d4a=function(_0x53c925,_0x3f7bd9){_0x53c925=_0x53c925-0x0;var _0x45e6f4=_0xd4a3[_0x53c925];return _0x45e6f4;};'use strict';var _=require(_0x3d4a('0x0'));var util=require(_0x3d4a('0x1'));var moment=require(_0x3d4a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3d4a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3d4a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x3d4a('0x5'));var jayson=require(_0x3d4a('0x6'));var client=jayson['client'][_0x3d4a('0x7')]({'port':0x232a});config[_0x3d4a('0x8')]=_['defaults'](config[_0x3d4a('0x8')],{'host':_0x3d4a('0x9'),'port':0x18eb});var socket=require(_0x3d4a('0xa'))(new Redis(config[_0x3d4a('0x8')]));require(_0x3d4a('0xb'))[_0x3d4a('0xc')](socket);function respondWithRpcPromise(_0x116900,_0x197a76,_0x39f16c){return new BPromise(function(_0x1bcff0,_0x2ad52d){return client[_0x3d4a('0xd')](_0x116900,_0x39f16c)[_0x3d4a('0xe')](function(_0x3e5f1f){logger[_0x3d4a('0xf')]('FaxQueue,\x20%s,\x20%s',_0x197a76,'request\x20sent');logger[_0x3d4a('0x10')](_0x3d4a('0x11'),_0x197a76,'request\x20sent',JSON['stringify'](_0x3e5f1f));if(_0x3e5f1f[_0x3d4a('0x12')]){if(_0x3e5f1f['error']['code']===0x1f4){logger[_0x3d4a('0x12')]('FaxQueue,\x20%s,\x20%s',_0x197a76,_0x3e5f1f[_0x3d4a('0x12')][_0x3d4a('0x13')]);return _0x2ad52d(_0x3e5f1f[_0x3d4a('0x12')]['message']);}logger['error'](_0x3d4a('0x14'),_0x197a76,_0x3e5f1f[_0x3d4a('0x12')][_0x3d4a('0x13')]);return _0x1bcff0(_0x3e5f1f['error'][_0x3d4a('0x13')]);}else{logger[_0x3d4a('0xf')](_0x3d4a('0x14'),_0x197a76,_0x3d4a('0x15'));_0x1bcff0(_0x3e5f1f[_0x3d4a('0x16')][_0x3d4a('0x13')]);}})[_0x3d4a('0x17')](function(_0x394641){logger['error'](_0x3d4a('0x14'),_0x197a76,_0x394641);_0x2ad52d(_0x394641);});});}exports[_0x3d4a('0x18')]=function(_0xb6d62b){var _0x4cad94=this;return new Promise(function(_0x4cac4d,_0x179663){return db['FaxQueue'][_0x3d4a('0x19')]({'raw':_0xb6d62b[_0x3d4a('0x1a')]?_0xb6d62b[_0x3d4a('0x1a')][_0x3d4a('0x1b')]===undefined?!![]:![]:!![],'where':_0xb6d62b['options']?_0xb6d62b[_0x3d4a('0x1a')][_0x3d4a('0x1c')]||null:null,'attributes':_0xb6d62b[_0x3d4a('0x1a')]?_0xb6d62b['options'][_0x3d4a('0x1d')]||null:null,'limit':_0xb6d62b[_0x3d4a('0x1a')]?_0xb6d62b[_0x3d4a('0x1a')][_0x3d4a('0x1e')]||null:null,'include':_0xb6d62b['options']?_0xb6d62b['options'][_0x3d4a('0x1f')]?_[_0x3d4a('0x20')](_0xb6d62b['options'][_0x3d4a('0x1f')],function(_0x1292fc){return{'model':db[_0x1292fc[_0x3d4a('0x21')]],'as':_0x1292fc['as'],'attributes':_0x1292fc['attributes'],'include':_0x1292fc[_0x3d4a('0x1f')]?_[_0x3d4a('0x20')](_0x1292fc[_0x3d4a('0x1f')],function(_0x15a6bf){return{'model':db[_0x15a6bf[_0x3d4a('0x21')]],'as':_0x15a6bf['as'],'attributes':_0x15a6bf[_0x3d4a('0x1d')],'include':_0x15a6bf[_0x3d4a('0x1f')]?_[_0x3d4a('0x20')](_0x15a6bf[_0x3d4a('0x1f')],function(_0x1f5c98){return{'model':db[_0x1f5c98[_0x3d4a('0x21')]],'as':_0x1f5c98['as'],'attributes':_0x1f5c98[_0x3d4a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x3d4a('0xe')](function(_0x1af082){logger[_0x3d4a('0xf')]('GetFaxQueue',_0xb6d62b);logger[_0x3d4a('0x10')]('GetFaxQueue',_0xb6d62b,JSON[_0x3d4a('0x22')](_0x1af082));_0x4cac4d(_0x1af082);})[_0x3d4a('0x17')](function(_0x531191){logger[_0x3d4a('0x12')]('GetFaxQueue',_0x531191[_0x3d4a('0x13')],_0xb6d62b);_0x179663(_0x4cad94[_0x3d4a('0x12')](0x1f4,_0x531191[_0x3d4a('0x13')]));});});};exports[_0x3d4a('0x23')]=function(_0x5ecb0e){var _0x384f19=this;return new Promise(function(_0x429a8c,_0xe565ea){return db[_0x3d4a('0x24')]['find']({'raw':_0x5ecb0e[_0x3d4a('0x1a')]?_0x5ecb0e[_0x3d4a('0x1a')][_0x3d4a('0x1b')]===undefined?!![]:![]:!![],'where':_0x5ecb0e[_0x3d4a('0x1a')]?_0x5ecb0e['options']['where']||null:null,'attributes':_0x5ecb0e['options']?_0x5ecb0e[_0x3d4a('0x1a')][_0x3d4a('0x1d')]||null:null,'include':_0x5ecb0e['options']?_0x5ecb0e[_0x3d4a('0x1a')][_0x3d4a('0x1f')]?_[_0x3d4a('0x20')](_0x5ecb0e[_0x3d4a('0x1a')][_0x3d4a('0x1f')],function(_0x3444ed){return{'model':db[_0x3444ed[_0x3d4a('0x21')]],'as':_0x3444ed['as'],'attributes':_0x3444ed[_0x3d4a('0x1d')],'include':_0x3444ed[_0x3d4a('0x1f')]?_[_0x3d4a('0x20')](_0x3444ed[_0x3d4a('0x1f')],function(_0x503cc3){return{'model':db[_0x503cc3[_0x3d4a('0x21')]],'as':_0x503cc3['as'],'attributes':_0x503cc3[_0x3d4a('0x1d')],'include':_0x503cc3[_0x3d4a('0x1f')]?_[_0x3d4a('0x20')](_0x503cc3['include'],function(_0x151bdd){return{'model':db[_0x151bdd[_0x3d4a('0x21')]],'as':_0x151bdd['as'],'attributes':_0x151bdd['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b4e51){logger[_0x3d4a('0xf')]('ShowFaxQueue',_0x5ecb0e);logger['debug']('ShowFaxQueue',_0x5ecb0e,JSON[_0x3d4a('0x22')](_0x3b4e51));_0x429a8c(_0x3b4e51);})['catch'](function(_0xe4a065){logger[_0x3d4a('0x12')](_0x3d4a('0x23'),_0xe4a065[_0x3d4a('0x13')],_0x5ecb0e);_0xe565ea(_0x384f19[_0x3d4a('0x12')](0x1f4,_0xe4a065[_0x3d4a('0x13')]));});});};
\ No newline at end of file
+var _0xbad2=['redis','socket.io-emitter','register','then','info','FaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','result','catch','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxQueue','debug','ShowFaxQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults'];(function(_0x3a53e4,_0x597b1c){var _0x5e2937=function(_0x56b9d2){while(--_0x56b9d2){_0x3a53e4['push'](_0x3a53e4['shift']());}};_0x5e2937(++_0x597b1c);}(_0xbad2,0x149));var _0x2bad=function(_0x3dd590,_0x37c2e4){_0x3dd590=_0x3dd590-0x0;var _0x514086=_0xbad2[_0x3dd590];return _0x514086;};'use strict';var _=require(_0x2bad('0x0'));var util=require(_0x2bad('0x1'));var moment=require(_0x2bad('0x2'));var BPromise=require(_0x2bad('0x3'));var rs=require(_0x2bad('0x4'));var fs=require('fs');var Redis=require(_0x2bad('0x5'));var db=require(_0x2bad('0x6'))['db'];var utils=require(_0x2bad('0x7'));var logger=require(_0x2bad('0x8'))(_0x2bad('0x9'));var config=require(_0x2bad('0xa'));var jayson=require(_0x2bad('0xb'));var client=jayson[_0x2bad('0xc')][_0x2bad('0xd')]({'port':0x232a});config['redis']=_[_0x2bad('0xe')](config[_0x2bad('0xf')],{'host':'localhost','port':0x18eb});var socket=require(_0x2bad('0x10'))(new Redis(config[_0x2bad('0xf')]));require('./faxQueue.socket')[_0x2bad('0x11')](socket);function respondWithRpcPromise(_0x3c4b49,_0x2f2328,_0x347909){return new BPromise(function(_0x23a7ac,_0x10d31b){return client['request'](_0x3c4b49,_0x347909)[_0x2bad('0x12')](function(_0x5de02f){logger[_0x2bad('0x13')]('FaxQueue,\x20%s,\x20%s',_0x2f2328,'request\x20sent');logger['debug'](_0x2bad('0x14'),_0x2f2328,_0x2bad('0x15'),JSON[_0x2bad('0x16')](_0x5de02f));if(_0x5de02f[_0x2bad('0x17')]){if(_0x5de02f[_0x2bad('0x17')][_0x2bad('0x18')]===0x1f4){logger['error']('FaxQueue,\x20%s,\x20%s',_0x2f2328,_0x5de02f[_0x2bad('0x17')][_0x2bad('0x19')]);return _0x10d31b(_0x5de02f['error'][_0x2bad('0x19')]);}logger[_0x2bad('0x17')](_0x2bad('0x1a'),_0x2f2328,_0x5de02f[_0x2bad('0x17')][_0x2bad('0x19')]);return _0x23a7ac(_0x5de02f[_0x2bad('0x17')][_0x2bad('0x19')]);}else{logger[_0x2bad('0x13')]('FaxQueue,\x20%s,\x20%s',_0x2f2328,'request\x20sent');_0x23a7ac(_0x5de02f[_0x2bad('0x1b')][_0x2bad('0x19')]);}})[_0x2bad('0x1c')](function(_0x2a3e43){logger['error'](_0x2bad('0x1a'),_0x2f2328,_0x2a3e43);_0x10d31b(_0x2a3e43);});});}exports['GetFaxQueue']=function(_0x3e0640){var _0x206c4a=this;return new Promise(function(_0x239f14,_0x463efe){return db[_0x2bad('0x1d')][_0x2bad('0x1e')]({'raw':_0x3e0640['options']?_0x3e0640[_0x2bad('0x1f')][_0x2bad('0x20')]===undefined?!![]:![]:!![],'where':_0x3e0640[_0x2bad('0x1f')]?_0x3e0640[_0x2bad('0x1f')][_0x2bad('0x21')]||null:null,'attributes':_0x3e0640[_0x2bad('0x1f')]?_0x3e0640[_0x2bad('0x1f')][_0x2bad('0x22')]||null:null,'limit':_0x3e0640['options']?_0x3e0640[_0x2bad('0x1f')][_0x2bad('0x23')]||null:null,'include':_0x3e0640['options']?_0x3e0640[_0x2bad('0x1f')][_0x2bad('0x24')]?_[_0x2bad('0x25')](_0x3e0640['options'][_0x2bad('0x24')],function(_0x48bf64){return{'model':db[_0x48bf64[_0x2bad('0x26')]],'as':_0x48bf64['as'],'attributes':_0x48bf64[_0x2bad('0x22')],'include':_0x48bf64[_0x2bad('0x24')]?_[_0x2bad('0x25')](_0x48bf64[_0x2bad('0x24')],function(_0x519026){return{'model':db[_0x519026[_0x2bad('0x26')]],'as':_0x519026['as'],'attributes':_0x519026[_0x2bad('0x22')],'include':_0x519026[_0x2bad('0x24')]?_['map'](_0x519026[_0x2bad('0x24')],function(_0x50ab45){return{'model':db[_0x50ab45[_0x2bad('0x26')]],'as':_0x50ab45['as'],'attributes':_0x50ab45['attributes']};}):[]};}):[]};}):[]:[]})[_0x2bad('0x12')](function(_0x1e70a5){logger[_0x2bad('0x13')](_0x2bad('0x27'),_0x3e0640);logger[_0x2bad('0x28')](_0x2bad('0x27'),_0x3e0640,JSON['stringify'](_0x1e70a5));_0x239f14(_0x1e70a5);})[_0x2bad('0x1c')](function(_0x225aa5){logger['error']('GetFaxQueue',_0x225aa5[_0x2bad('0x19')],_0x3e0640);_0x463efe(_0x206c4a[_0x2bad('0x17')](0x1f4,_0x225aa5['message']));});});};exports[_0x2bad('0x29')]=function(_0x1f731a){var _0x5bd93a=this;return new Promise(function(_0x4c5dd9,_0x5afa90){return db['FaxQueue'][_0x2bad('0x2a')]({'raw':_0x1f731a[_0x2bad('0x1f')]?_0x1f731a['options'][_0x2bad('0x20')]===undefined?!![]:![]:!![],'where':_0x1f731a[_0x2bad('0x1f')]?_0x1f731a[_0x2bad('0x1f')][_0x2bad('0x21')]||null:null,'attributes':_0x1f731a[_0x2bad('0x1f')]?_0x1f731a['options']['attributes']||null:null,'include':_0x1f731a['options']?_0x1f731a[_0x2bad('0x1f')][_0x2bad('0x24')]?_[_0x2bad('0x25')](_0x1f731a[_0x2bad('0x1f')][_0x2bad('0x24')],function(_0x371b45){return{'model':db[_0x371b45[_0x2bad('0x26')]],'as':_0x371b45['as'],'attributes':_0x371b45['attributes'],'include':_0x371b45['include']?_['map'](_0x371b45[_0x2bad('0x24')],function(_0x107979){return{'model':db[_0x107979[_0x2bad('0x26')]],'as':_0x107979['as'],'attributes':_0x107979['attributes'],'include':_0x107979[_0x2bad('0x24')]?_[_0x2bad('0x25')](_0x107979[_0x2bad('0x24')],function(_0x2b9655){return{'model':db[_0x2b9655['model']],'as':_0x2b9655['as'],'attributes':_0x2b9655[_0x2bad('0x22')]};}):[]};}):[]};}):[]:[]})[_0x2bad('0x12')](function(_0x16be52){logger[_0x2bad('0x13')]('ShowFaxQueue',_0x1f731a);logger[_0x2bad('0x28')](_0x2bad('0x29'),_0x1f731a,JSON['stringify'](_0x16be52));_0x4c5dd9(_0x16be52);})[_0x2bad('0x1c')](function(_0x5a885e){logger['error']('ShowFaxQueue',_0x5a885e[_0x2bad('0x19')],_0x1f731a);_0x5afa90(_0x5bd93a[_0x2bad('0x17')](0x1f4,_0x5a885e[_0x2bad('0x19')]));});});};
\ No newline at end of file
index 1985324..cf27491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d8d=['register','length','faxQueue:','./faxQueue.events','save','remove','update'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x0d8d,0x1f4));var _0xd0d8=function(_0x3bb43c,_0x5e18f3){_0x3bb43c=_0x3bb43c-0x0;var _0x1c5bf9=_0x0d8d[_0x3bb43c];return _0x1c5bf9;};'use strict';var FaxQueueEvents=require(_0xd0d8('0x0'));var events=[_0xd0d8('0x1'),_0xd0d8('0x2'),_0xd0d8('0x3')];function createListener(_0x2fde90,_0x37765d){return function(_0x42c7a1){_0x37765d['emit'](_0x2fde90,_0x42c7a1);};}function removeListener(_0x2a4960,_0x2a6964){return function(){FaxQueueEvents['removeListener'](_0x2a4960,_0x2a6964);};}exports[_0xd0d8('0x4')]=function(_0x487615){for(var _0x5ef903=0x0,_0x5f3ebf=events[_0xd0d8('0x5')];_0x5ef903<_0x5f3ebf;_0x5ef903++){var _0xf1a31c=events[_0x5ef903];var _0x3e8c9b=createListener(_0xd0d8('0x6')+_0xf1a31c,_0x487615);FaxQueueEvents['on'](_0xf1a31c,_0x3e8c9b);}};
\ No newline at end of file
+var _0x49d7=['length','faxQueue:','remove','emit','register'];(function(_0x526728,_0x594763){var _0x585d07=function(_0x55e8e0){while(--_0x55e8e0){_0x526728['push'](_0x526728['shift']());}};_0x585d07(++_0x594763);}(_0x49d7,0x133));var _0x749d=function(_0x51bda1,_0x44f80d){_0x51bda1=_0x51bda1-0x0;var _0x1ce08c=_0x49d7[_0x51bda1];return _0x1ce08c;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=['save',_0x749d('0x0'),'update'];function createListener(_0x40c222,_0x1ebdda){return function(_0x401aea){_0x1ebdda[_0x749d('0x1')](_0x40c222,_0x401aea);};}function removeListener(_0x48dcc5,_0x5e06c4){return function(){FaxQueueEvents['removeListener'](_0x48dcc5,_0x5e06c4);};}exports[_0x749d('0x2')]=function(_0x2c5712){for(var _0x23cd30=0x0,_0xafed18=events[_0x749d('0x3')];_0x23cd30<_0xafed18;_0x23cd30++){var _0x1e2a6d=events[_0x23cd30];var _0x2871eb=createListener(_0x749d('0x4')+_0x1e2a6d,_0x2c5712);FaxQueueEvents['on'](_0x1e2a6d,_0x2871eb);}};
\ No newline at end of file
index d06c51b..89aadf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee2c=['index','/describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x25f324,_0x9fff33){var _0x4f9f82=function(_0x29ee0f){while(--_0x29ee0f){_0x25f324['push'](_0x25f324['shift']());}};_0x4f9f82(++_0x9fff33);}(_0xee2c,0x1c7));var _0xcee2=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xee2c[_0x45783c];return _0x1161da;};'use strict';var multer=require(_0xcee2('0x0'));var util=require('util');var path=require(_0xcee2('0x1'));var timeout=require(_0xcee2('0x2'));var express=require(_0xcee2('0x3'));var router=express[_0xcee2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcee2('0x5'));var config=require(_0xcee2('0x6'));var controller=require('./faxQueue.controller');router[_0xcee2('0x7')]('/',auth[_0xcee2('0x8')](),controller[_0xcee2('0x9')]);router[_0xcee2('0x7')](_0xcee2('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xcee2('0x7')](_0xcee2('0xb'),auth[_0xcee2('0x8')](),controller[_0xcee2('0xc')]);router[_0xcee2('0x7')](_0xcee2('0xd'),auth[_0xcee2('0x8')](),controller[_0xcee2('0xe')]);router['get'](_0xcee2('0xf'),auth[_0xcee2('0x8')](),controller[_0xcee2('0x10')]);router[_0xcee2('0x7')](_0xcee2('0x11'),auth['isAuthenticated'](),controller[_0xcee2('0x12')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xcee2('0x13')](_0xcee2('0xf'),auth[_0xcee2('0x8')](),controller[_0xcee2('0x14')]);router['post'](_0xcee2('0x11'),auth[_0xcee2('0x8')](),controller[_0xcee2('0x15')]);router[_0xcee2('0x16')](_0xcee2('0xb'),auth[_0xcee2('0x8')](),controller[_0xcee2('0x17')]);router[_0xcee2('0x18')](_0xcee2('0xb'),auth['isAuthenticated'](),controller[_0xcee2('0x19')]);router['delete'](_0xcee2('0xf'),auth[_0xcee2('0x8')](),controller[_0xcee2('0x1a')]);router[_0xcee2('0x18')]('/:id/users',auth[_0xcee2('0x8')](),controller[_0xcee2('0x1b')]);module[_0xcee2('0x1c')]=router;
\ No newline at end of file
+var _0x4745=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','isAuthenticated','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','update','delete','destroy','removeTeams','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x558fc5,_0x2e5ea9){var _0x1c604f=function(_0x2e602a){while(--_0x2e602a){_0x558fc5['push'](_0x558fc5['shift']());}};_0x1c604f(++_0x2e5ea9);}(_0x4745,0x1e7));var _0x5474=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x4745[_0x2b10c6];return _0x3789d2;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/describe',auth[_0x5474('0xd')](),controller['describe']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0xb')](_0x5474('0x10'),auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0xb')](_0x5474('0x12'),auth[_0x5474('0xd')](),controller['getTeams']);router[_0x5474('0xb')](_0x5474('0x13'),auth[_0x5474('0xd')](),controller[_0x5474('0x14')]);router[_0x5474('0x15')]('/',auth[_0x5474('0xd')](),controller[_0x5474('0x16')]);router[_0x5474('0x15')](_0x5474('0x12'),auth['isAuthenticated'](),controller[_0x5474('0x17')]);router[_0x5474('0x15')](_0x5474('0x13'),auth[_0x5474('0xd')](),controller['addAgents']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x5474('0x18')]);router[_0x5474('0x19')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0x1a')]);router[_0x5474('0x19')]('/:id/teams',auth[_0x5474('0xd')](),controller[_0x5474('0x1b')]);router[_0x5474('0x19')](_0x5474('0x13'),auth[_0x5474('0xd')](),controller['removeAgents']);module[_0x5474('0x1c')]=router;
\ No newline at end of file
index c3067f7..e8f87da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb32=['exports','STRING','DATE','sequelize'];(function(_0x3b022b,_0x31bc88){var _0x185d11=function(_0x5ce950){while(--_0x5ce950){_0x3b022b['push'](_0x3b022b['shift']());}};_0x185d11(++_0x31bc88);}(_0xcb32,0x177));var _0x2cb3=function(_0x2b9c9c,_0x1f9c49){_0x2b9c9c=_0x2b9c9c-0x0;var _0x581c34=_0xcb32[_0x2b9c9c];return _0x581c34;};'use strict';var moment=require('moment');var Sequelize=require(_0x2cb3('0x0'));module[_0x2cb3('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x2cb3('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2cb3('0x3')]},'exitAt':{'type':Sequelize[_0x2cb3('0x3')]},'reason':{'type':Sequelize[_0x2cb3('0x2')]}};
\ No newline at end of file
+var _0x0b99=['DATE','moment','STRING'];(function(_0x4af914,_0x3ee48a){var _0x2fc22b=function(_0x3c367b){while(--_0x3c367b){_0x4af914['push'](_0x4af914['shift']());}};_0x2fc22b(++_0x3ee48a);}(_0x0b99,0xd9));var _0x90b9=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0b99[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0x90b9('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x90b9('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x90b9('0x2')]},'acceptAt':{'type':Sequelize[_0x90b9('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x90b9('0x1')]}};
\ No newline at end of file
index 11b8ab0..e190b58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ff9=['path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','create','body','update','find','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util'];(function(_0x4e811b,_0x2eef8){var _0x5ea71d=function(_0x3bce0c){while(--_0x3bce0c){_0x4e811b['push'](_0x4e811b['shift']());}};_0x5ea71d(++_0x2eef8);}(_0x8ff9,0x188));var _0x98ff=function(_0x4dc4be,_0x45f900){_0x4dc4be=_0x4dc4be-0x0;var _0x3fb94f=_0x8ff9[_0x4dc4be];return _0x3fb94f;};'use strict';var emlformat=require(_0x98ff('0x0'));var rimraf=require(_0x98ff('0x1'));var zipdir=require(_0x98ff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x98ff('0x3'));var moment=require(_0x98ff('0x4'));var BPromise=require(_0x98ff('0x5'));var Mustache=require(_0x98ff('0x6'));var util=require(_0x98ff('0x7'));var path=require(_0x98ff('0x8'));var sox=require(_0x98ff('0x9'));var csv=require('to-csv');var ejs=require(_0x98ff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x98ff('0xb'));var squel=require(_0x98ff('0xc'));var crypto=require('crypto');var jsforce=require(_0x98ff('0xd'));var deskjs=require(_0x98ff('0xe'));var toCsv=require(_0x98ff('0xf'));var querystring=require(_0x98ff('0x10'));var Papa=require(_0x98ff('0x11'));var Redis=require(_0x98ff('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x98ff('0x13'));var as=require(_0x98ff('0x14'));var hardwareService=require(_0x98ff('0x15'));var logger=require(_0x98ff('0x16'))('api');var utils=require(_0x98ff('0x17'));var config=require(_0x98ff('0x18'));var licenseUtil=require(_0x98ff('0x19'));var db=require(_0x98ff('0x1a'))['db'];function respondWithStatusCode(_0x9ec5f1,_0x3276a7){_0x3276a7=_0x3276a7||0xcc;return function(_0x5885c8){if(_0x5885c8){return _0x9ec5f1['sendStatus'](_0x3276a7);}return _0x9ec5f1[_0x98ff('0x1b')](_0x3276a7)['end']();};}function respondWithResult(_0x3f288b,_0x1c2b68){_0x1c2b68=_0x1c2b68||0xc8;return function(_0x5b092f){if(_0x5b092f){return _0x3f288b[_0x98ff('0x1b')](_0x1c2b68)['json'](_0x5b092f);}};}function respondWithFilteredResult(_0x18132e,_0x1d85a7){return function(_0x4a2e6e){if(_0x4a2e6e){var _0x2e490a=typeof _0x1d85a7['offset']===_0x98ff('0x1c')&&typeof _0x1d85a7[_0x98ff('0x1d')]===_0x98ff('0x1c');var _0x4cbb53=_0x4a2e6e['count'];var _0x19e1db=_0x2e490a?0x0:_0x1d85a7[_0x98ff('0x1e')];var _0x48ca02=_0x2e490a?_0x4a2e6e[_0x98ff('0x1f')]:_0x1d85a7[_0x98ff('0x1e')]+_0x1d85a7[_0x98ff('0x1d')];var _0x1ab7eb;if(_0x48ca02>=_0x4cbb53){_0x48ca02=_0x4cbb53;_0x1ab7eb=0xc8;}else{_0x1ab7eb=0xce;}_0x18132e[_0x98ff('0x1b')](_0x1ab7eb);return _0x18132e[_0x98ff('0x20')](_0x98ff('0x21'),_0x19e1db+'-'+_0x48ca02+'/'+_0x4cbb53)[_0x98ff('0x22')](_0x4a2e6e);}return null;};}function patchUpdates(_0x3b79db){return function(_0x5c4e5c){try{jsonpatch[_0x98ff('0x23')](_0x5c4e5c,_0x3b79db,!![]);}catch(_0x481a72){return BPromise[_0x98ff('0x24')](_0x481a72);}return _0x5c4e5c[_0x98ff('0x25')]();};}function saveUpdates(_0x3e9f9b,_0x22f8fe){return function(_0x5a1563){if(_0x5a1563){return _0x5a1563['update'](_0x3e9f9b)[_0x98ff('0x26')](function(_0x43f67f){return _0x43f67f;});}return null;};}function removeEntity(_0x766b31,_0x5e18e6){return function(_0x10826e){if(_0x10826e){return _0x10826e[_0x98ff('0x27')]()[_0x98ff('0x26')](function(){_0x766b31[_0x98ff('0x1b')](0xcc)[_0x98ff('0x28')]();});}};}function handleEntityNotFound(_0x2d346d,_0x464a14){return function(_0x2c4d4e){if(!_0x2c4d4e){_0x2d346d['sendStatus'](0x194);}return _0x2c4d4e;};}function handleError(_0x839545,_0x4a45f6){_0x4a45f6=_0x4a45f6||0x1f4;return function(_0x31fa1d){logger[_0x98ff('0x29')](_0x31fa1d[_0x98ff('0x2a')]);if(_0x31fa1d[_0x98ff('0x2b')]){delete _0x31fa1d[_0x98ff('0x2b')];}_0x839545[_0x98ff('0x1b')](_0x4a45f6)[_0x98ff('0x2c')](_0x31fa1d);};}exports[_0x98ff('0x2d')]=function(_0xa9787c,_0xa9a152){var _0x349729={},_0x2b06a9={},_0x26a993={'count':0x0,'rows':[]};var _0x3e4f74=_[_0x98ff('0x2e')](db[_0x98ff('0x2f')][_0x98ff('0x30')],function(_0x5af0dc){return{'name':_0x5af0dc[_0x98ff('0x31')],'type':_0x5af0dc[_0x98ff('0x32')][_0x98ff('0x33')]};});_0x2b06a9[_0x98ff('0x34')]=_['map'](_0x3e4f74,_0x98ff('0x2b'));_0x2b06a9['query']=_[_0x98ff('0x35')](_0xa9787c[_0x98ff('0x36')]);_0x2b06a9[_0x98ff('0x37')]=_[_0x98ff('0x38')](_0x2b06a9['model'],_0x2b06a9[_0x98ff('0x36')]);_0x349729[_0x98ff('0x39')]=_['intersection'](_0x2b06a9[_0x98ff('0x34')],qs[_0x98ff('0x3a')](_0xa9787c['query'][_0x98ff('0x3a')]));_0x349729[_0x98ff('0x39')]=_0x349729['attributes'][_0x98ff('0x3b')]?_0x349729[_0x98ff('0x39')]:_0x2b06a9[_0x98ff('0x34')];if(!_0xa9787c[_0x98ff('0x36')]['hasOwnProperty'](_0x98ff('0x3c'))){_0x349729['limit']=qs[_0x98ff('0x1d')](_0xa9787c[_0x98ff('0x36')][_0x98ff('0x1d')]);_0x349729['offset']=qs[_0x98ff('0x1e')](_0xa9787c[_0x98ff('0x36')][_0x98ff('0x1e')]);}_0x349729[_0x98ff('0x3d')]=qs[_0x98ff('0x3e')](_0xa9787c[_0x98ff('0x36')][_0x98ff('0x3e')]);_0x349729[_0x98ff('0x3f')]=qs[_0x98ff('0x37')](_[_0x98ff('0x40')](_0xa9787c[_0x98ff('0x36')],_0x2b06a9[_0x98ff('0x37')]),_0x3e4f74);if(_0xa9787c['query'][_0x98ff('0x41')]){_0x349729[_0x98ff('0x3f')]=_['merge'](_0x349729['where'],{'$or':_[_0x98ff('0x2e')](_0x3e4f74,function(_0x3c55e4){if(_0x3c55e4[_0x98ff('0x32')]!=='VIRTUAL'){var _0x21282f={};_0x21282f[_0x3c55e4[_0x98ff('0x2b')]]={'$like':'%'+_0xa9787c['query'][_0x98ff('0x41')]+'%'};return _0x21282f;}})});}_0x349729=_[_0x98ff('0x42')]({},_0x349729,_0xa9787c[_0x98ff('0x43')]);var _0xe190c4={'where':_0x349729[_0x98ff('0x3f')]};return db['FaxQueueReport'][_0x98ff('0x1f')](_0xe190c4)['then'](function(_0x1b915d){_0x26a993[_0x98ff('0x1f')]=_0x1b915d;if(_0xa9787c[_0x98ff('0x36')][_0x98ff('0x44')]){_0x349729[_0x98ff('0x45')]=[{'all':!![]}];}return db['FaxQueueReport'][_0x98ff('0x46')](_0x349729);})['then'](function(_0x14aeca){_0x26a993[_0x98ff('0x47')]=_0x14aeca;return _0x26a993;})['then'](respondWithFilteredResult(_0xa9a152,_0x349729))[_0x98ff('0x48')](handleError(_0xa9a152,null));};exports[_0x98ff('0x49')]=function(_0x35f057,_0x5465d9){var _0x37cd4d={'raw':!![],'where':{'id':_0x35f057['params']['id']}},_0x861b54={};_0x861b54['model']=_['keys'](db[_0x98ff('0x2f')][_0x98ff('0x30')]);_0x861b54['query']=_['keys'](_0x35f057[_0x98ff('0x36')]);_0x861b54[_0x98ff('0x37')]=_[_0x98ff('0x38')](_0x861b54['model'],_0x861b54['query']);_0x37cd4d['attributes']=_[_0x98ff('0x38')](_0x861b54[_0x98ff('0x34')],qs[_0x98ff('0x3a')](_0x35f057['query'][_0x98ff('0x3a')]));_0x37cd4d['attributes']=_0x37cd4d[_0x98ff('0x39')][_0x98ff('0x3b')]?_0x37cd4d['attributes']:_0x861b54[_0x98ff('0x34')];if(_0x35f057[_0x98ff('0x36')]['includeAll']){_0x37cd4d[_0x98ff('0x45')]=[{'all':!![]}];}_0x37cd4d=_[_0x98ff('0x42')]({},_0x37cd4d,_0x35f057[_0x98ff('0x43')]);return db['FaxQueueReport']['find'](_0x37cd4d)[_0x98ff('0x26')](handleEntityNotFound(_0x5465d9,null))[_0x98ff('0x26')](respondWithResult(_0x5465d9,null))[_0x98ff('0x48')](handleError(_0x5465d9,null));};exports[_0x98ff('0x4a')]=function(_0x376581,_0x1134d2){return db[_0x98ff('0x2f')][_0x98ff('0x4a')](_0x376581[_0x98ff('0x4b')],{})[_0x98ff('0x26')](respondWithResult(_0x1134d2,0xc9))[_0x98ff('0x48')](handleError(_0x1134d2,null));};exports[_0x98ff('0x4c')]=function(_0x35607f,_0x582e6f){if(_0x35607f[_0x98ff('0x4b')]['id']){delete _0x35607f[_0x98ff('0x4b')]['id'];}return db[_0x98ff('0x2f')][_0x98ff('0x4d')]({'where':{'id':_0x35607f[_0x98ff('0x4e')]['id']}})[_0x98ff('0x26')](handleEntityNotFound(_0x582e6f,null))[_0x98ff('0x26')](saveUpdates(_0x35607f['body'],null))[_0x98ff('0x26')](respondWithResult(_0x582e6f,null))[_0x98ff('0x48')](handleError(_0x582e6f,null));};exports['destroy']=function(_0x3c5faa,_0x189258){return db[_0x98ff('0x2f')][_0x98ff('0x4d')]({'where':{'id':_0x3c5faa[_0x98ff('0x4e')]['id']}})[_0x98ff('0x26')](handleEntityNotFound(_0x189258,null))[_0x98ff('0x26')](removeEntity(_0x189258,null))[_0x98ff('0x48')](handleError(_0x189258,null));};exports['describe']=function(_0x58faf5,_0x299659){return db[_0x98ff('0x2f')][_0x98ff('0x4f')]()[_0x98ff('0x26')](respondWithResult(_0x299659,null))['catch'](handleError(_0x299659,null));};
\ No newline at end of file
+var _0xd5b6=['save','update','then','destroy','error','stack','name','send','map','FaxQueueReport','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','count','offset','limit','Content-Range','json','apply','reject'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0xd5b6,0x73));var _0x6d5b=function(_0x597d92,_0x4c3111){_0x597d92=_0x597d92-0x0;var _0xca5f81=_0xd5b6[_0x597d92];return _0xca5f81;};'use strict';var emlformat=require(_0x6d5b('0x0'));var rimraf=require(_0x6d5b('0x1'));var zipdir=require(_0x6d5b('0x2'));var jsonpatch=require(_0x6d5b('0x3'));var rp=require(_0x6d5b('0x4'));var moment=require(_0x6d5b('0x5'));var BPromise=require(_0x6d5b('0x6'));var Mustache=require(_0x6d5b('0x7'));var util=require('util');var path=require(_0x6d5b('0x8'));var sox=require(_0x6d5b('0x9'));var csv=require(_0x6d5b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d5b('0xb'));var _=require(_0x6d5b('0xc'));var squel=require(_0x6d5b('0xd'));var crypto=require(_0x6d5b('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6d5b('0xa'));var querystring=require(_0x6d5b('0xf'));var Papa=require(_0x6d5b('0x10'));var Redis=require(_0x6d5b('0x11'));var authService=require(_0x6d5b('0x12'));var qs=require(_0x6d5b('0x13'));var as=require(_0x6d5b('0x14'));var hardwareService=require(_0x6d5b('0x15'));var logger=require(_0x6d5b('0x16'))(_0x6d5b('0x17'));var utils=require(_0x6d5b('0x18'));var config=require(_0x6d5b('0x19'));var licenseUtil=require(_0x6d5b('0x1a'));var db=require(_0x6d5b('0x1b'))['db'];function respondWithStatusCode(_0x267798,_0x1e3c2b){_0x1e3c2b=_0x1e3c2b||0xcc;return function(_0x3c09bb){if(_0x3c09bb){return _0x267798[_0x6d5b('0x1c')](_0x1e3c2b);}return _0x267798['status'](_0x1e3c2b)[_0x6d5b('0x1d')]();};}function respondWithResult(_0x33d3a9,_0xe6fa49){_0xe6fa49=_0xe6fa49||0xc8;return function(_0x3a4ca5){if(_0x3a4ca5){return _0x33d3a9[_0x6d5b('0x1e')](_0xe6fa49)['json'](_0x3a4ca5);}};}function respondWithFilteredResult(_0x3c8078,_0x1e6814){return function(_0x51eb25){if(_0x51eb25){var _0x2baf47=typeof _0x1e6814['offset']===_0x6d5b('0x1f')&&typeof _0x1e6814['limit']==='undefined';var _0x49def6=_0x51eb25[_0x6d5b('0x20')];var _0x1ee9a3=_0x2baf47?0x0:_0x1e6814[_0x6d5b('0x21')];var _0x5e1642=_0x2baf47?_0x51eb25[_0x6d5b('0x20')]:_0x1e6814[_0x6d5b('0x21')]+_0x1e6814[_0x6d5b('0x22')];var _0x51a8d9;if(_0x5e1642>=_0x49def6){_0x5e1642=_0x49def6;_0x51a8d9=0xc8;}else{_0x51a8d9=0xce;}_0x3c8078[_0x6d5b('0x1e')](_0x51a8d9);return _0x3c8078['set'](_0x6d5b('0x23'),_0x1ee9a3+'-'+_0x5e1642+'/'+_0x49def6)[_0x6d5b('0x24')](_0x51eb25);}return null;};}function patchUpdates(_0x26b175){return function(_0x4b67ca){try{jsonpatch[_0x6d5b('0x25')](_0x4b67ca,_0x26b175,!![]);}catch(_0x195fd6){return BPromise[_0x6d5b('0x26')](_0x195fd6);}return _0x4b67ca[_0x6d5b('0x27')]();};}function saveUpdates(_0x672e5b,_0x36d8da){return function(_0x19148d){if(_0x19148d){return _0x19148d[_0x6d5b('0x28')](_0x672e5b)[_0x6d5b('0x29')](function(_0xae55d9){return _0xae55d9;});}return null;};}function removeEntity(_0x1b5261,_0xc1087e){return function(_0x2e3192){if(_0x2e3192){return _0x2e3192[_0x6d5b('0x2a')]()['then'](function(){_0x1b5261[_0x6d5b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3402bb,_0x6a398a){return function(_0x322c57){if(!_0x322c57){_0x3402bb[_0x6d5b('0x1c')](0x194);}return _0x322c57;};}function handleError(_0x408ee8,_0x161c12){_0x161c12=_0x161c12||0x1f4;return function(_0x1be755){logger[_0x6d5b('0x2b')](_0x1be755[_0x6d5b('0x2c')]);if(_0x1be755[_0x6d5b('0x2d')]){delete _0x1be755[_0x6d5b('0x2d')];}_0x408ee8[_0x6d5b('0x1e')](_0x161c12)[_0x6d5b('0x2e')](_0x1be755);};}exports['index']=function(_0x597e06,_0x5a9f13){var _0x32c57b={},_0x1acc3a={},_0x2d0da5={'count':0x0,'rows':[]};var _0x4c9875=_[_0x6d5b('0x2f')](db[_0x6d5b('0x30')]['rawAttributes'],function(_0x47ebfe){return{'name':_0x47ebfe[_0x6d5b('0x31')],'type':_0x47ebfe[_0x6d5b('0x32')][_0x6d5b('0x33')]};});_0x1acc3a[_0x6d5b('0x34')]=_[_0x6d5b('0x2f')](_0x4c9875,'name');_0x1acc3a['query']=_[_0x6d5b('0x35')](_0x597e06['query']);_0x1acc3a[_0x6d5b('0x36')]=_[_0x6d5b('0x37')](_0x1acc3a[_0x6d5b('0x34')],_0x1acc3a[_0x6d5b('0x38')]);_0x32c57b[_0x6d5b('0x39')]=_[_0x6d5b('0x37')](_0x1acc3a[_0x6d5b('0x34')],qs[_0x6d5b('0x3a')](_0x597e06['query'][_0x6d5b('0x3a')]));_0x32c57b[_0x6d5b('0x39')]=_0x32c57b[_0x6d5b('0x39')][_0x6d5b('0x3b')]?_0x32c57b[_0x6d5b('0x39')]:_0x1acc3a[_0x6d5b('0x34')];if(!_0x597e06[_0x6d5b('0x38')][_0x6d5b('0x3c')]('nolimit')){_0x32c57b[_0x6d5b('0x22')]=qs[_0x6d5b('0x22')](_0x597e06[_0x6d5b('0x38')][_0x6d5b('0x22')]);_0x32c57b[_0x6d5b('0x21')]=qs[_0x6d5b('0x21')](_0x597e06['query']['offset']);}_0x32c57b[_0x6d5b('0x3d')]=qs[_0x6d5b('0x3e')](_0x597e06[_0x6d5b('0x38')][_0x6d5b('0x3e')]);_0x32c57b[_0x6d5b('0x3f')]=qs[_0x6d5b('0x36')](_[_0x6d5b('0x40')](_0x597e06[_0x6d5b('0x38')],_0x1acc3a[_0x6d5b('0x36')]),_0x4c9875);if(_0x597e06[_0x6d5b('0x38')][_0x6d5b('0x41')]){_0x32c57b['where']=_['merge'](_0x32c57b[_0x6d5b('0x3f')],{'$or':_[_0x6d5b('0x2f')](_0x4c9875,function(_0x248cf1){if(_0x248cf1[_0x6d5b('0x32')]!=='VIRTUAL'){var _0x2bdaed={};_0x2bdaed[_0x248cf1[_0x6d5b('0x2d')]]={'$like':'%'+_0x597e06[_0x6d5b('0x38')][_0x6d5b('0x41')]+'%'};return _0x2bdaed;}})});}_0x32c57b=_[_0x6d5b('0x42')]({},_0x32c57b,_0x597e06[_0x6d5b('0x43')]);var _0x346769={'where':_0x32c57b[_0x6d5b('0x3f')]};return db[_0x6d5b('0x30')][_0x6d5b('0x20')](_0x346769)[_0x6d5b('0x29')](function(_0x150bce){_0x2d0da5[_0x6d5b('0x20')]=_0x150bce;if(_0x597e06['query']['includeAll']){_0x32c57b[_0x6d5b('0x44')]=[{'all':!![]}];}return db[_0x6d5b('0x30')][_0x6d5b('0x45')](_0x32c57b);})[_0x6d5b('0x29')](function(_0x43ecaf){_0x2d0da5[_0x6d5b('0x46')]=_0x43ecaf;return _0x2d0da5;})[_0x6d5b('0x29')](respondWithFilteredResult(_0x5a9f13,_0x32c57b))[_0x6d5b('0x47')](handleError(_0x5a9f13,null));};exports[_0x6d5b('0x48')]=function(_0x555be0,_0x452d5b){var _0x594733={'raw':!![],'where':{'id':_0x555be0['params']['id']}},_0x10fc3c={};_0x10fc3c[_0x6d5b('0x34')]=_[_0x6d5b('0x35')](db[_0x6d5b('0x30')]['rawAttributes']);_0x10fc3c['query']=_[_0x6d5b('0x35')](_0x555be0['query']);_0x10fc3c[_0x6d5b('0x36')]=_[_0x6d5b('0x37')](_0x10fc3c[_0x6d5b('0x34')],_0x10fc3c['query']);_0x594733[_0x6d5b('0x39')]=_['intersection'](_0x10fc3c[_0x6d5b('0x34')],qs[_0x6d5b('0x3a')](_0x555be0[_0x6d5b('0x38')]['fields']));_0x594733['attributes']=_0x594733['attributes']['length']?_0x594733['attributes']:_0x10fc3c[_0x6d5b('0x34')];if(_0x555be0[_0x6d5b('0x38')]['includeAll']){_0x594733[_0x6d5b('0x44')]=[{'all':!![]}];}_0x594733=_[_0x6d5b('0x42')]({},_0x594733,_0x555be0[_0x6d5b('0x43')]);return db[_0x6d5b('0x30')][_0x6d5b('0x49')](_0x594733)[_0x6d5b('0x29')](handleEntityNotFound(_0x452d5b,null))[_0x6d5b('0x29')](respondWithResult(_0x452d5b,null))[_0x6d5b('0x47')](handleError(_0x452d5b,null));};exports[_0x6d5b('0x4a')]=function(_0x5a3eea,_0xa031cc){return db[_0x6d5b('0x30')][_0x6d5b('0x4a')](_0x5a3eea[_0x6d5b('0x4b')],{})[_0x6d5b('0x29')](respondWithResult(_0xa031cc,0xc9))[_0x6d5b('0x47')](handleError(_0xa031cc,null));};exports[_0x6d5b('0x28')]=function(_0x1b543f,_0x72479c){if(_0x1b543f[_0x6d5b('0x4b')]['id']){delete _0x1b543f[_0x6d5b('0x4b')]['id'];}return db['FaxQueueReport']['find']({'where':{'id':_0x1b543f[_0x6d5b('0x4c')]['id']}})[_0x6d5b('0x29')](handleEntityNotFound(_0x72479c,null))[_0x6d5b('0x29')](saveUpdates(_0x1b543f[_0x6d5b('0x4b')],null))[_0x6d5b('0x29')](respondWithResult(_0x72479c,null))[_0x6d5b('0x47')](handleError(_0x72479c,null));};exports[_0x6d5b('0x2a')]=function(_0x2b20e7,_0x2a5fb3){return db[_0x6d5b('0x30')][_0x6d5b('0x49')]({'where':{'id':_0x2b20e7[_0x6d5b('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2a5fb3,null))[_0x6d5b('0x29')](removeEntity(_0x2a5fb3,null))[_0x6d5b('0x47')](handleError(_0x2a5fb3,null));};exports['describe']=function(_0x3bc7e0,_0x523f0e){return db[_0x6d5b('0x30')]['describe']()[_0x6d5b('0x29')](respondWithResult(_0x523f0e,null))[_0x6d5b('0x47')](handleError(_0x523f0e,null));};
\ No newline at end of file
index 2fce8c7..ca60f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api'];(function(_0x2e8a0a,_0x51be26){var _0x16a718=function(_0x3b8d15){while(--_0x3b8d15){_0x2e8a0a['push'](_0x2e8a0a['shift']());}};_0x16a718(++_0x51be26);}(_0x5fab,0x177));var _0xb5fa=function(_0x503699,_0x152145){_0x503699=_0x503699-0x0;var _0xd66c82=_0x5fab[_0x503699];return _0xd66c82;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[{'name':_0xb5fa('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cb9=['api','moment','bluebird','path','rimraf','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','../../config/logger'];(function(_0x874cf1,_0x2a4954){var _0x233579=function(_0xa6e939){while(--_0xa6e939){_0x874cf1['push'](_0x874cf1['shift']());}};_0x233579(++_0x2a4954);}(_0x1cb9,0x14e));var _0x91cb=function(_0x33036c,_0x278f36){_0x33036c=_0x33036c-0x0;var _0x51b5f2=_0x1cb9[_0x33036c];return _0x51b5f2;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x91cb('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 9a2e3a8..0408b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1329=['util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','http','then','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','info','UpdateFaxQueueReport','where','limit','stringify'];(function(_0x6d295d,_0x22ccc9){var _0x43d6da=function(_0x351a8b){while(--_0x351a8b){_0x6d295d['push'](_0x6d295d['shift']());}};_0x43d6da(++_0x22ccc9);}(_0x1329,0x186));var _0x9132=function(_0x49bd20,_0x1bd0e1){_0x49bd20=_0x49bd20-0x0;var _0x230008=_0x1329[_0x49bd20];return _0x230008;};'use strict';var _=require('lodash');var util=require(_0x9132('0x0'));var moment=require(_0x9132('0x1'));var BPromise=require(_0x9132('0x2'));var rs=require(_0x9132('0x3'));var fs=require('fs');var Redis=require(_0x9132('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9132('0x5'))(_0x9132('0x6'));var config=require('../../config/environment');var jayson=require(_0x9132('0x7'));var client=jayson[_0x9132('0x8')][_0x9132('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x276f2c,_0x4a683c,_0x31ef76){return new BPromise(function(_0x48a7c5,_0x3b4888){return client['request'](_0x276f2c,_0x31ef76)[_0x9132('0xa')](function(_0x8f44df){logger['info'](_0x9132('0xb'),_0x4a683c,_0x9132('0xc'));logger[_0x9132('0xd')](_0x9132('0xe'),_0x4a683c,_0x9132('0xc'),JSON['stringify'](_0x8f44df));if(_0x8f44df[_0x9132('0xf')]){if(_0x8f44df[_0x9132('0xf')][_0x9132('0x10')]===0x1f4){logger[_0x9132('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x4a683c,_0x8f44df[_0x9132('0xf')][_0x9132('0x11')]);return _0x3b4888(_0x8f44df[_0x9132('0xf')]['message']);}logger[_0x9132('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x4a683c,_0x8f44df[_0x9132('0xf')][_0x9132('0x11')]);return _0x48a7c5(_0x8f44df[_0x9132('0xf')]['message']);}else{logger['info'](_0x9132('0xb'),_0x4a683c,_0x9132('0xc'));_0x48a7c5(_0x8f44df['result'][_0x9132('0x11')]);}})[_0x9132('0x12')](function(_0x518d94){logger[_0x9132('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x4a683c,_0x518d94);_0x3b4888(_0x518d94);});});}exports[_0x9132('0x13')]=function(_0x13402b){var _0x8174b6=this;return new Promise(function(_0x130949,_0x4e65c2){return db[_0x9132('0x14')][_0x9132('0x15')](_0x13402b[_0x9132('0x16')],{'raw':_0x13402b[_0x9132('0x17')]?_0x13402b['options'][_0x9132('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x4161f){logger[_0x9132('0x19')]('CreateFaxQueueReport',_0x13402b);logger[_0x9132('0xd')](_0x9132('0x13'),_0x13402b,JSON['stringify'](_0x4161f));_0x130949(_0x4161f);})[_0x9132('0x12')](function(_0x1b15ea){logger[_0x9132('0xf')](_0x9132('0x13'),_0x1b15ea['message'],_0x13402b);_0x4e65c2(_0x8174b6[_0x9132('0xf')](0x1f4,_0x1b15ea[_0x9132('0x11')]));});});};exports[_0x9132('0x1a')]=function(_0x49eee0){var _0x4e2c21=this;return new Promise(function(_0x11b766,_0x11cf64){return db['FaxQueueReport']['update'](_0x49eee0[_0x9132('0x16')],{'raw':_0x49eee0['options']?_0x49eee0[_0x9132('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x49eee0[_0x9132('0x17')]?_0x49eee0['options'][_0x9132('0x1b')]||null:null,'attributes':_0x49eee0['options']?_0x49eee0[_0x9132('0x17')]['attributes']||null:null,'limit':_0x49eee0['options']?_0x49eee0['options'][_0x9132('0x1c')]||null:null})['then'](function(_0x2fd29d){logger[_0x9132('0x19')](_0x9132('0x1a'),_0x49eee0);logger[_0x9132('0xd')](_0x9132('0x1a'),_0x49eee0,JSON[_0x9132('0x1d')](_0x2fd29d));_0x11b766(_0x2fd29d);})[_0x9132('0x12')](function(_0x219fc2){logger[_0x9132('0xf')](_0x9132('0x1a'),_0x219fc2[_0x9132('0x11')],_0x49eee0);_0x11cf64(_0x4e2c21[_0x9132('0xf')](0x1f4,_0x219fc2[_0x9132('0x11')]));});});};
\ No newline at end of file
+var _0x96bf=['CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','where','limit','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x96bf,0x77));var _0xf96b=function(_0x3c5e54,_0x2b991b){_0x3c5e54=_0x3c5e54-0x0;var _0x3ae1f3=_0x96bf[_0x3c5e54];return _0x3ae1f3;};'use strict';var _=require(_0xf96b('0x0'));var util=require(_0xf96b('0x1'));var moment=require(_0xf96b('0x2'));var BPromise=require(_0xf96b('0x3'));var rs=require(_0xf96b('0x4'));var fs=require('fs');var Redis=require(_0xf96b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf96b('0x6'));var logger=require(_0xf96b('0x7'))(_0xf96b('0x8'));var config=require(_0xf96b('0x9'));var jayson=require(_0xf96b('0xa'));var client=jayson[_0xf96b('0xb')][_0xf96b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x20b104,_0x512eb9,_0x24eca0){return new BPromise(function(_0x1c0ff6,_0xf04bb6){return client[_0xf96b('0xd')](_0x20b104,_0x24eca0)['then'](function(_0xdf751e){logger[_0xf96b('0xe')](_0xf96b('0xf'),_0x512eb9,_0xf96b('0x10'));logger[_0xf96b('0x11')](_0xf96b('0x12'),_0x512eb9,_0xf96b('0x10'),JSON[_0xf96b('0x13')](_0xdf751e));if(_0xdf751e[_0xf96b('0x14')]){if(_0xdf751e[_0xf96b('0x14')][_0xf96b('0x15')]===0x1f4){logger['error'](_0xf96b('0xf'),_0x512eb9,_0xdf751e[_0xf96b('0x14')]['message']);return _0xf04bb6(_0xdf751e[_0xf96b('0x14')][_0xf96b('0x16')]);}logger['error'](_0xf96b('0xf'),_0x512eb9,_0xdf751e[_0xf96b('0x14')][_0xf96b('0x16')]);return _0x1c0ff6(_0xdf751e['error'][_0xf96b('0x16')]);}else{logger[_0xf96b('0xe')]('FaxQueueReport,\x20%s,\x20%s',_0x512eb9,_0xf96b('0x10'));_0x1c0ff6(_0xdf751e[_0xf96b('0x17')][_0xf96b('0x16')]);}})[_0xf96b('0x18')](function(_0x22bc78){logger[_0xf96b('0x14')](_0xf96b('0xf'),_0x512eb9,_0x22bc78);_0xf04bb6(_0x22bc78);});});}exports[_0xf96b('0x19')]=function(_0x41eb2b){var _0x3df9e2=this;return new Promise(function(_0x132c62,_0x8b96c3){return db[_0xf96b('0x1a')][_0xf96b('0x1b')](_0x41eb2b[_0xf96b('0x1c')],{'raw':_0x41eb2b[_0xf96b('0x1d')]?_0x41eb2b[_0xf96b('0x1d')][_0xf96b('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x3f58de){logger[_0xf96b('0xe')](_0xf96b('0x19'),_0x41eb2b);logger['debug'](_0xf96b('0x19'),_0x41eb2b,JSON['stringify'](_0x3f58de));_0x132c62(_0x3f58de);})[_0xf96b('0x18')](function(_0x457591){logger[_0xf96b('0x14')](_0xf96b('0x19'),_0x457591[_0xf96b('0x16')],_0x41eb2b);_0x8b96c3(_0x3df9e2[_0xf96b('0x14')](0x1f4,_0x457591['message']));});});};exports[_0xf96b('0x1f')]=function(_0x532965){var _0x23d971=this;return new Promise(function(_0x2172e1,_0x1e4b1e){return db[_0xf96b('0x1a')][_0xf96b('0x20')](_0x532965[_0xf96b('0x1c')],{'raw':_0x532965[_0xf96b('0x1d')]?_0x532965[_0xf96b('0x1d')][_0xf96b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x532965[_0xf96b('0x1d')]?_0x532965[_0xf96b('0x1d')][_0xf96b('0x21')]||null:null,'attributes':_0x532965[_0xf96b('0x1d')]?_0x532965[_0xf96b('0x1d')]['attributes']||null:null,'limit':_0x532965[_0xf96b('0x1d')]?_0x532965[_0xf96b('0x1d')][_0xf96b('0x22')]||null:null})[_0xf96b('0x23')](function(_0x8471d0){logger[_0xf96b('0xe')](_0xf96b('0x1f'),_0x532965);logger[_0xf96b('0x11')](_0xf96b('0x1f'),_0x532965,JSON[_0xf96b('0x13')](_0x8471d0));_0x2172e1(_0x8471d0);})[_0xf96b('0x18')](function(_0x180432){logger[_0xf96b('0x14')](_0xf96b('0x1f'),_0x180432[_0xf96b('0x16')],_0x532965);_0x1e4b1e(_0x23d971[_0xf96b('0x14')](0x1f4,_0x180432[_0xf96b('0x16')]));});});};
\ No newline at end of file
index c495a0d..f90790f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd91e=['delete','/:id','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','post','create','put','update'];(function(_0x3b612a,_0x38ac2f){var _0x5159ec=function(_0xad7c45){while(--_0xad7c45){_0x3b612a['push'](_0x3b612a['shift']());}};_0x5159ec(++_0x38ac2f);}(_0xd91e,0x1d6));var _0xed91=function(_0x5f4635,_0x20b9c8){_0x5f4635=_0x5f4635-0x0;var _0x18ea4a=_0xd91e[_0x5f4635];return _0x18ea4a;};'use strict';var multer=require('multer');var util=require(_0xed91('0x0'));var path=require(_0xed91('0x1'));var timeout=require(_0xed91('0x2'));var express=require(_0xed91('0x3'));var router=express[_0xed91('0x4')]();var fs_extra=require(_0xed91('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xed91('0x6'));var controller=require('./faxQueueReport.controller');router[_0xed91('0x7')]('/',auth[_0xed91('0x8')](),controller[_0xed91('0x9')]);router[_0xed91('0x7')](_0xed91('0xa'),auth['isAuthenticated'](),controller[_0xed91('0xb')]);router[_0xed91('0x7')]('/:id',auth[_0xed91('0x8')](),controller['show']);router[_0xed91('0xc')]('/',auth[_0xed91('0x8')](),controller[_0xed91('0xd')]);router[_0xed91('0xe')]('/:id',auth[_0xed91('0x8')](),controller[_0xed91('0xf')]);router[_0xed91('0x10')](_0xed91('0x11'),auth[_0xed91('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xdbd0=['multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','exports'];(function(_0x27d10a,_0x35ff44){var _0x63302e=function(_0x302156){while(--_0x302156){_0x27d10a['push'](_0x27d10a['shift']());}};_0x63302e(++_0x35ff44);}(_0xdbd0,0x64));var _0x0dbd=function(_0x24800e,_0x483806){_0x24800e=_0x24800e-0x0;var _0x2523ab=_0xdbd0[_0x24800e];return _0x2523ab;};'use strict';var multer=require(_0x0dbd('0x0'));var util=require(_0x0dbd('0x1'));var path=require(_0x0dbd('0x2'));var timeout=require('connect-timeout');var express=require(_0x0dbd('0x3'));var router=express['Router']();var fs_extra=require(_0x0dbd('0x4'));var auth=require(_0x0dbd('0x5'));var interaction=require(_0x0dbd('0x6'));var config=require(_0x0dbd('0x7'));var controller=require('./faxQueueReport.controller');router[_0x0dbd('0x8')]('/',auth[_0x0dbd('0x9')](),controller[_0x0dbd('0xa')]);router[_0x0dbd('0x8')](_0x0dbd('0xb'),auth[_0x0dbd('0x9')](),controller[_0x0dbd('0xc')]);router['get'](_0x0dbd('0xd'),auth[_0x0dbd('0x9')](),controller[_0x0dbd('0xe')]);router[_0x0dbd('0xf')]('/',auth['isAuthenticated'](),controller[_0x0dbd('0x10')]);router['put'](_0x0dbd('0xd'),auth[_0x0dbd('0x9')](),controller[_0x0dbd('0x11')]);router[_0x0dbd('0x12')](_0x0dbd('0xd'),auth[_0x0dbd('0x9')](),controller['destroy']);module[_0x0dbd('0x13')]=router;
\ No newline at end of file
index 9daaf19..e68c1e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x280454,_0x28d032){var _0x3900a5=function(_0x28732e){while(--_0x28732e){_0x280454['push'](_0x280454['shift']());}};_0x3900a5(++_0x28d032);}(_0xe706,0xa3));var _0x6e70=function(_0x511dd6,_0x5d294d){_0x511dd6=_0x511dd6-0x0;var _0x39f16b=_0xe706[_0x511dd6];return _0x39f16b;};'use strict';var moment=require(_0x6e70('0x0'));var Sequelize=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6e70('0x3')](_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6')),'allowNull':![],'defaultValue':_0x6e70('0x6')},'transferredAt':{'type':Sequelize[_0x6e70('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x6e70('0x8')]}};
\ No newline at end of file
+var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x3da1c5,_0x53f43f){var _0x20d262=function(_0x5b914f){while(--_0x5b914f){_0x3da1c5['push'](_0x3da1c5['shift']());}};_0x20d262(++_0x53f43f);}(_0x54ef,0x112));var _0xf54e=function(_0x22604d,_0x4c0969){_0x22604d=_0x22604d-0x0;var _0x173a64=_0x54ef[_0x22604d];return _0x173a64;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
index 54e68e5..5ad8c98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4fd=['pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','error','stack','name','index','FaxTransferReport','rawAttributes','fieldName','type','map','query','keys','filters','model','attributes','intersection','fields','nolimit','sort','where'];(function(_0x3cc9d9,_0x69ed38){var _0x1a425d=function(_0x44d109){while(--_0x44d109){_0x3cc9d9['push'](_0x3cc9d9['shift']());}};_0x1a425d(++_0x69ed38);}(_0xa4fd,0xa0));var _0xda4f=function(_0x213df7,_0x7872f6){_0x213df7=_0x213df7-0x0;var _0x212834=_0xa4fd[_0x213df7];return _0x212834;};'use strict';var emlformat=require(_0xda4f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xda4f('0x1'));var jsonpatch=require(_0xda4f('0x2'));var rp=require(_0xda4f('0x3'));var moment=require(_0xda4f('0x4'));var BPromise=require(_0xda4f('0x5'));var Mustache=require('mustache');var util=require(_0xda4f('0x6'));var path=require('path');var sox=require(_0xda4f('0x7'));var csv=require(_0xda4f('0x8'));var ejs=require(_0xda4f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xda4f('0xa'));var jsforce=require(_0xda4f('0xb'));var deskjs=require(_0xda4f('0xc'));var toCsv=require('to-csv');var querystring=require(_0xda4f('0xd'));var Papa=require(_0xda4f('0xe'));var Redis=require(_0xda4f('0xf'));var authService=require(_0xda4f('0x10'));var qs=require(_0xda4f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xda4f('0x12'));var logger=require(_0xda4f('0x13'))('api');var utils=require(_0xda4f('0x14'));var config=require(_0xda4f('0x15'));var licenseUtil=require(_0xda4f('0x16'));var db=require(_0xda4f('0x17'))['db'];function respondWithStatusCode(_0x596b88,_0x68fb80){_0x68fb80=_0x68fb80||0xcc;return function(_0x2d8786){if(_0x2d8786){return _0x596b88[_0xda4f('0x18')](_0x68fb80);}return _0x596b88[_0xda4f('0x19')](_0x68fb80)[_0xda4f('0x1a')]();};}function respondWithResult(_0x5521b4,_0x4c1df1){_0x4c1df1=_0x4c1df1||0xc8;return function(_0x3f8f19){if(_0x3f8f19){return _0x5521b4[_0xda4f('0x19')](_0x4c1df1)[_0xda4f('0x1b')](_0x3f8f19);}};}function respondWithFilteredResult(_0x2b521e,_0x28b2bb){return function(_0x75eb38){if(_0x75eb38){var _0xb054e4=typeof _0x28b2bb[_0xda4f('0x1c')]===_0xda4f('0x1d')&&typeof _0x28b2bb[_0xda4f('0x1e')]==='undefined';var _0x39161c=_0x75eb38[_0xda4f('0x1f')];var _0x8819cf=_0xb054e4?0x0:_0x28b2bb[_0xda4f('0x1c')];var _0x20f0db=_0xb054e4?_0x75eb38[_0xda4f('0x1f')]:_0x28b2bb[_0xda4f('0x1c')]+_0x28b2bb[_0xda4f('0x1e')];var _0xfdf22e;if(_0x20f0db>=_0x39161c){_0x20f0db=_0x39161c;_0xfdf22e=0xc8;}else{_0xfdf22e=0xce;}_0x2b521e[_0xda4f('0x19')](_0xfdf22e);return _0x2b521e['set'](_0xda4f('0x20'),_0x8819cf+'-'+_0x20f0db+'/'+_0x39161c)[_0xda4f('0x1b')](_0x75eb38);}return null;};}function patchUpdates(_0x2ac004){return function(_0x1d1689){try{jsonpatch[_0xda4f('0x21')](_0x1d1689,_0x2ac004,!![]);}catch(_0x4bd7a3){return BPromise[_0xda4f('0x22')](_0x4bd7a3);}return _0x1d1689['save']();};}function saveUpdates(_0x370951,_0x50ed33){return function(_0x549528){if(_0x549528){return _0x549528['update'](_0x370951)[_0xda4f('0x23')](function(_0x27b088){return _0x27b088;});}return null;};}function removeEntity(_0x1702b9,_0x1793b7){return function(_0x42ec1c){if(_0x42ec1c){return _0x42ec1c[_0xda4f('0x24')]()[_0xda4f('0x23')](function(){_0x1702b9[_0xda4f('0x19')](0xcc)[_0xda4f('0x1a')]();});}};}function handleEntityNotFound(_0x167725,_0x5677c3){return function(_0x5e2351){if(!_0x5e2351){_0x167725[_0xda4f('0x18')](0x194);}return _0x5e2351;};}function handleError(_0xe7b2c,_0xa05054){_0xa05054=_0xa05054||0x1f4;return function(_0x24a189){logger[_0xda4f('0x25')](_0x24a189[_0xda4f('0x26')]);if(_0x24a189[_0xda4f('0x27')]){delete _0x24a189['name'];}_0xe7b2c[_0xda4f('0x19')](_0xa05054)['send'](_0x24a189);};}exports[_0xda4f('0x28')]=function(_0x15cdcc,_0x446a32){var _0x2f5d36={},_0x8348a2={},_0x52bc1={'count':0x0,'rows':[]};var _0x143eb8=_['map'](db[_0xda4f('0x29')][_0xda4f('0x2a')],function(_0x100d3f){return{'name':_0x100d3f[_0xda4f('0x2b')],'type':_0x100d3f[_0xda4f('0x2c')]['key']};});_0x8348a2['model']=_[_0xda4f('0x2d')](_0x143eb8,_0xda4f('0x27'));_0x8348a2[_0xda4f('0x2e')]=_[_0xda4f('0x2f')](_0x15cdcc[_0xda4f('0x2e')]);_0x8348a2[_0xda4f('0x30')]=_['intersection'](_0x8348a2[_0xda4f('0x31')],_0x8348a2[_0xda4f('0x2e')]);_0x2f5d36[_0xda4f('0x32')]=_[_0xda4f('0x33')](_0x8348a2[_0xda4f('0x31')],qs[_0xda4f('0x34')](_0x15cdcc['query'][_0xda4f('0x34')]));_0x2f5d36['attributes']=_0x2f5d36[_0xda4f('0x32')]['length']?_0x2f5d36['attributes']:_0x8348a2[_0xda4f('0x31')];if(!_0x15cdcc[_0xda4f('0x2e')]['hasOwnProperty'](_0xda4f('0x35'))){_0x2f5d36['limit']=qs['limit'](_0x15cdcc[_0xda4f('0x2e')][_0xda4f('0x1e')]);_0x2f5d36['offset']=qs[_0xda4f('0x1c')](_0x15cdcc['query'][_0xda4f('0x1c')]);}_0x2f5d36['order']=qs[_0xda4f('0x36')](_0x15cdcc[_0xda4f('0x2e')]['sort']);_0x2f5d36[_0xda4f('0x37')]=qs[_0xda4f('0x30')](_[_0xda4f('0x38')](_0x15cdcc[_0xda4f('0x2e')],_0x8348a2[_0xda4f('0x30')]),_0x143eb8);if(_0x15cdcc[_0xda4f('0x2e')]['filter']){_0x2f5d36[_0xda4f('0x37')]=_[_0xda4f('0x39')](_0x2f5d36[_0xda4f('0x37')],{'$or':_[_0xda4f('0x2d')](_0x143eb8,function(_0x5e6602){if(_0x5e6602['type']!==_0xda4f('0x3a')){var _0x23eb08={};_0x23eb08[_0x5e6602['name']]={'$like':'%'+_0x15cdcc[_0xda4f('0x2e')][_0xda4f('0x3b')]+'%'};return _0x23eb08;}})});}_0x2f5d36=_[_0xda4f('0x39')]({},_0x2f5d36,_0x15cdcc[_0xda4f('0x3c')]);var _0x5096a1={'where':_0x2f5d36[_0xda4f('0x37')]};return db[_0xda4f('0x29')][_0xda4f('0x1f')](_0x5096a1)['then'](function(_0x64e780){_0x52bc1['count']=_0x64e780;if(_0x15cdcc[_0xda4f('0x2e')][_0xda4f('0x3d')]){_0x2f5d36[_0xda4f('0x3e')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xda4f('0x3f')](_0x2f5d36);})['then'](function(_0x61e81d){_0x52bc1[_0xda4f('0x40')]=_0x61e81d;return _0x52bc1;})[_0xda4f('0x23')](respondWithFilteredResult(_0x446a32,_0x2f5d36))[_0xda4f('0x41')](handleError(_0x446a32,null));};exports['show']=function(_0x1ec8f4,_0x1f1df4){var _0x119989={'raw':!![],'where':{'id':_0x1ec8f4[_0xda4f('0x42')]['id']}},_0x331745={};_0x331745[_0xda4f('0x31')]=_[_0xda4f('0x2f')](db[_0xda4f('0x29')][_0xda4f('0x2a')]);_0x331745[_0xda4f('0x2e')]=_[_0xda4f('0x2f')](_0x1ec8f4[_0xda4f('0x2e')]);_0x331745[_0xda4f('0x30')]=_[_0xda4f('0x33')](_0x331745[_0xda4f('0x31')],_0x331745['query']);_0x119989[_0xda4f('0x32')]=_[_0xda4f('0x33')](_0x331745['model'],qs['fields'](_0x1ec8f4[_0xda4f('0x2e')][_0xda4f('0x34')]));_0x119989[_0xda4f('0x32')]=_0x119989[_0xda4f('0x32')]['length']?_0x119989[_0xda4f('0x32')]:_0x331745[_0xda4f('0x31')];if(_0x1ec8f4[_0xda4f('0x2e')][_0xda4f('0x3d')]){_0x119989[_0xda4f('0x3e')]=[{'all':!![]}];}_0x119989=_[_0xda4f('0x39')]({},_0x119989,_0x1ec8f4[_0xda4f('0x3c')]);return db[_0xda4f('0x29')][_0xda4f('0x43')](_0x119989)[_0xda4f('0x23')](handleEntityNotFound(_0x1f1df4,null))[_0xda4f('0x23')](respondWithResult(_0x1f1df4,null))[_0xda4f('0x41')](handleError(_0x1f1df4,null));};exports['create']=function(_0x300e91,_0xf2c68e){return db[_0xda4f('0x29')][_0xda4f('0x44')](_0x300e91[_0xda4f('0x45')],{})[_0xda4f('0x23')](respondWithResult(_0xf2c68e,0xc9))[_0xda4f('0x41')](handleError(_0xf2c68e,null));};exports[_0xda4f('0x46')]=function(_0x4817e9,_0x21e12b){if(_0x4817e9[_0xda4f('0x45')]['id']){delete _0x4817e9['body']['id'];}return db[_0xda4f('0x29')][_0xda4f('0x43')]({'where':{'id':_0x4817e9['params']['id']}})[_0xda4f('0x23')](handleEntityNotFound(_0x21e12b,null))[_0xda4f('0x23')](saveUpdates(_0x4817e9[_0xda4f('0x45')],null))[_0xda4f('0x23')](respondWithResult(_0x21e12b,null))[_0xda4f('0x41')](handleError(_0x21e12b,null));};exports[_0xda4f('0x24')]=function(_0x448a00,_0x258741){return db[_0xda4f('0x29')][_0xda4f('0x43')]({'where':{'id':_0x448a00[_0xda4f('0x42')]['id']}})['then'](handleEntityNotFound(_0x258741,null))[_0xda4f('0x23')](removeEntity(_0x258741,null))[_0xda4f('0x41')](handleError(_0x258741,null));};exports[_0xda4f('0x47')]=function(_0x199989,_0x4befe8){return db[_0xda4f('0x29')][_0xda4f('0x47')]()['then'](respondWithResult(_0x4befe8,null))[_0xda4f('0x41')](handleError(_0x4befe8,null));};
\ No newline at end of file
+var _0x9d2c=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','destroy','then','end','stack','name','send','index','FaxTransferReport','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','show','params','keys','find','catch','create','body','update','describe','rimraf','zip-dir','fast-json-patch'];(function(_0x5b78e8,_0x55096b){var _0xf2c321=function(_0x4e0cff){while(--_0x4e0cff){_0x5b78e8['push'](_0x5b78e8['shift']());}};_0xf2c321(++_0x55096b);}(_0x9d2c,0x141));var _0xc9d2=function(_0x4f67d9,_0x237051){_0x4f67d9=_0x4f67d9-0x0;var _0x57ccec=_0x9d2c[_0x4f67d9];return _0x57ccec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc9d2('0x0'));var zipdir=require(_0xc9d2('0x1'));var jsonpatch=require(_0xc9d2('0x2'));var rp=require(_0xc9d2('0x3'));var moment=require(_0xc9d2('0x4'));var BPromise=require(_0xc9d2('0x5'));var Mustache=require(_0xc9d2('0x6'));var util=require(_0xc9d2('0x7'));var path=require(_0xc9d2('0x8'));var sox=require(_0xc9d2('0x9'));var csv=require(_0xc9d2('0xa'));var ejs=require(_0xc9d2('0xb'));var fs=require('fs');var fs_extra=require(_0xc9d2('0xc'));var _=require(_0xc9d2('0xd'));var squel=require(_0xc9d2('0xe'));var crypto=require(_0xc9d2('0xf'));var jsforce=require(_0xc9d2('0x10'));var deskjs=require(_0xc9d2('0x11'));var toCsv=require(_0xc9d2('0xa'));var querystring=require(_0xc9d2('0x12'));var Papa=require(_0xc9d2('0x13'));var Redis=require('ioredis');var authService=require(_0xc9d2('0x14'));var qs=require(_0xc9d2('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc9d2('0x16'));var logger=require(_0xc9d2('0x17'))('api');var utils=require(_0xc9d2('0x18'));var config=require(_0xc9d2('0x19'));var licenseUtil=require(_0xc9d2('0x1a'));var db=require(_0xc9d2('0x1b'))['db'];function respondWithStatusCode(_0x1391bf,_0x5dd2af){_0x5dd2af=_0x5dd2af||0xcc;return function(_0x7adc91){if(_0x7adc91){return _0x1391bf[_0xc9d2('0x1c')](_0x5dd2af);}return _0x1391bf[_0xc9d2('0x1d')](_0x5dd2af)['end']();};}function respondWithResult(_0x565f6f,_0x4de0ae){_0x4de0ae=_0x4de0ae||0xc8;return function(_0x16331f){if(_0x16331f){return _0x565f6f['status'](_0x4de0ae)['json'](_0x16331f);}};}function respondWithFilteredResult(_0x590fec,_0x22eeef){return function(_0x2318f7){if(_0x2318f7){var _0xc55871=typeof _0x22eeef['offset']===_0xc9d2('0x1e')&&typeof _0x22eeef[_0xc9d2('0x1f')]===_0xc9d2('0x1e');var _0x11f339=_0x2318f7[_0xc9d2('0x20')];var _0x146ca8=_0xc55871?0x0:_0x22eeef['offset'];var _0x4877db=_0xc55871?_0x2318f7['count']:_0x22eeef[_0xc9d2('0x21')]+_0x22eeef[_0xc9d2('0x1f')];var _0xc66eea;if(_0x4877db>=_0x11f339){_0x4877db=_0x11f339;_0xc66eea=0xc8;}else{_0xc66eea=0xce;}_0x590fec['status'](_0xc66eea);return _0x590fec[_0xc9d2('0x22')](_0xc9d2('0x23'),_0x146ca8+'-'+_0x4877db+'/'+_0x11f339)[_0xc9d2('0x24')](_0x2318f7);}return null;};}function patchUpdates(_0x159191){return function(_0x398f91){try{jsonpatch[_0xc9d2('0x25')](_0x398f91,_0x159191,!![]);}catch(_0x18106e){return BPromise[_0xc9d2('0x26')](_0x18106e);}return _0x398f91[_0xc9d2('0x27')]();};}function saveUpdates(_0x4756b3,_0x1e3dd5){return function(_0x34dd54){if(_0x34dd54){return _0x34dd54['update'](_0x4756b3)['then'](function(_0x45edc3){return _0x45edc3;});}return null;};}function removeEntity(_0xc301a5,_0x410b18){return function(_0x4d653c){if(_0x4d653c){return _0x4d653c[_0xc9d2('0x28')]()[_0xc9d2('0x29')](function(){_0xc301a5['status'](0xcc)[_0xc9d2('0x2a')]();});}};}function handleEntityNotFound(_0x518d8c,_0x270284){return function(_0x562de5){if(!_0x562de5){_0x518d8c[_0xc9d2('0x1c')](0x194);}return _0x562de5;};}function handleError(_0x320a5f,_0x3b74ac){_0x3b74ac=_0x3b74ac||0x1f4;return function(_0x3a2d50){logger['error'](_0x3a2d50[_0xc9d2('0x2b')]);if(_0x3a2d50[_0xc9d2('0x2c')]){delete _0x3a2d50[_0xc9d2('0x2c')];}_0x320a5f[_0xc9d2('0x1d')](_0x3b74ac)[_0xc9d2('0x2d')](_0x3a2d50);};}exports[_0xc9d2('0x2e')]=function(_0x17cab9,_0x25d4cf){var _0x158307={},_0x51b244={},_0x49701d={'count':0x0,'rows':[]};var _0x2d869d=_['map'](db[_0xc9d2('0x2f')][_0xc9d2('0x30')],function(_0x1ff7a6){return{'name':_0x1ff7a6[_0xc9d2('0x31')],'type':_0x1ff7a6['type'][_0xc9d2('0x32')]};});_0x51b244[_0xc9d2('0x33')]=_[_0xc9d2('0x34')](_0x2d869d,'name');_0x51b244['query']=_['keys'](_0x17cab9[_0xc9d2('0x35')]);_0x51b244['filters']=_[_0xc9d2('0x36')](_0x51b244['model'],_0x51b244[_0xc9d2('0x35')]);_0x158307[_0xc9d2('0x37')]=_['intersection'](_0x51b244[_0xc9d2('0x33')],qs['fields'](_0x17cab9[_0xc9d2('0x35')][_0xc9d2('0x38')]));_0x158307[_0xc9d2('0x37')]=_0x158307['attributes'][_0xc9d2('0x39')]?_0x158307[_0xc9d2('0x37')]:_0x51b244[_0xc9d2('0x33')];if(!_0x17cab9[_0xc9d2('0x35')][_0xc9d2('0x3a')](_0xc9d2('0x3b'))){_0x158307['limit']=qs['limit'](_0x17cab9[_0xc9d2('0x35')][_0xc9d2('0x1f')]);_0x158307[_0xc9d2('0x21')]=qs['offset'](_0x17cab9[_0xc9d2('0x35')][_0xc9d2('0x21')]);}_0x158307[_0xc9d2('0x3c')]=qs[_0xc9d2('0x3d')](_0x17cab9['query']['sort']);_0x158307['where']=qs[_0xc9d2('0x3e')](_['pick'](_0x17cab9[_0xc9d2('0x35')],_0x51b244[_0xc9d2('0x3e')]),_0x2d869d);if(_0x17cab9[_0xc9d2('0x35')][_0xc9d2('0x3f')]){_0x158307[_0xc9d2('0x40')]=_['merge'](_0x158307[_0xc9d2('0x40')],{'$or':_[_0xc9d2('0x34')](_0x2d869d,function(_0x2cdb7a){if(_0x2cdb7a[_0xc9d2('0x41')]!==_0xc9d2('0x42')){var _0x24c566={};_0x24c566[_0x2cdb7a[_0xc9d2('0x2c')]]={'$like':'%'+_0x17cab9[_0xc9d2('0x35')]['filter']+'%'};return _0x24c566;}})});}_0x158307=_[_0xc9d2('0x43')]({},_0x158307,_0x17cab9[_0xc9d2('0x44')]);var _0x2de279={'where':_0x158307[_0xc9d2('0x40')]};return db[_0xc9d2('0x2f')]['count'](_0x2de279)[_0xc9d2('0x29')](function(_0x2d8936){_0x49701d['count']=_0x2d8936;if(_0x17cab9[_0xc9d2('0x35')][_0xc9d2('0x45')]){_0x158307[_0xc9d2('0x46')]=[{'all':!![]}];}return db[_0xc9d2('0x2f')][_0xc9d2('0x47')](_0x158307);})[_0xc9d2('0x29')](function(_0x57e3d1){_0x49701d['rows']=_0x57e3d1;return _0x49701d;})[_0xc9d2('0x29')](respondWithFilteredResult(_0x25d4cf,_0x158307))['catch'](handleError(_0x25d4cf,null));};exports[_0xc9d2('0x48')]=function(_0x452d55,_0x2bb598){var _0x506a06={'raw':!![],'where':{'id':_0x452d55[_0xc9d2('0x49')]['id']}},_0x55d487={};_0x55d487['model']=_[_0xc9d2('0x4a')](db['FaxTransferReport']['rawAttributes']);_0x55d487[_0xc9d2('0x35')]=_[_0xc9d2('0x4a')](_0x452d55[_0xc9d2('0x35')]);_0x55d487[_0xc9d2('0x3e')]=_['intersection'](_0x55d487[_0xc9d2('0x33')],_0x55d487[_0xc9d2('0x35')]);_0x506a06[_0xc9d2('0x37')]=_[_0xc9d2('0x36')](_0x55d487[_0xc9d2('0x33')],qs[_0xc9d2('0x38')](_0x452d55[_0xc9d2('0x35')]['fields']));_0x506a06['attributes']=_0x506a06[_0xc9d2('0x37')][_0xc9d2('0x39')]?_0x506a06[_0xc9d2('0x37')]:_0x55d487[_0xc9d2('0x33')];if(_0x452d55[_0xc9d2('0x35')][_0xc9d2('0x45')]){_0x506a06['include']=[{'all':!![]}];}_0x506a06=_[_0xc9d2('0x43')]({},_0x506a06,_0x452d55[_0xc9d2('0x44')]);return db[_0xc9d2('0x2f')][_0xc9d2('0x4b')](_0x506a06)[_0xc9d2('0x29')](handleEntityNotFound(_0x2bb598,null))[_0xc9d2('0x29')](respondWithResult(_0x2bb598,null))[_0xc9d2('0x4c')](handleError(_0x2bb598,null));};exports[_0xc9d2('0x4d')]=function(_0x4f201e,_0x1a0567){return db[_0xc9d2('0x2f')][_0xc9d2('0x4d')](_0x4f201e[_0xc9d2('0x4e')],{})[_0xc9d2('0x29')](respondWithResult(_0x1a0567,0xc9))[_0xc9d2('0x4c')](handleError(_0x1a0567,null));};exports[_0xc9d2('0x4f')]=function(_0x57eea5,_0x289e75){if(_0x57eea5[_0xc9d2('0x4e')]['id']){delete _0x57eea5['body']['id'];}return db[_0xc9d2('0x2f')]['find']({'where':{'id':_0x57eea5[_0xc9d2('0x49')]['id']}})[_0xc9d2('0x29')](handleEntityNotFound(_0x289e75,null))[_0xc9d2('0x29')](saveUpdates(_0x57eea5[_0xc9d2('0x4e')],null))[_0xc9d2('0x29')](respondWithResult(_0x289e75,null))[_0xc9d2('0x4c')](handleError(_0x289e75,null));};exports[_0xc9d2('0x28')]=function(_0x4cb4fe,_0x43fae1){return db[_0xc9d2('0x2f')][_0xc9d2('0x4b')]({'where':{'id':_0x4cb4fe[_0xc9d2('0x49')]['id']}})[_0xc9d2('0x29')](handleEntityNotFound(_0x43fae1,null))[_0xc9d2('0x29')](removeEntity(_0x43fae1,null))[_0xc9d2('0x4c')](handleError(_0x43fae1,null));};exports[_0xc9d2('0x50')]=function(_0x2037a6,_0x232e6e){return db['FaxTransferReport'][_0xc9d2('0x50')]()['then'](respondWithResult(_0x232e6e,null))[_0xc9d2('0x4c')](handleError(_0x232e6e,null));};
\ No newline at end of file
index 31c48a7..a19d8ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd8=['moment','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x1992f1,_0x5c61f0){var _0x413dfe=function(_0x2136e5){while(--_0x2136e5){_0x1992f1['push'](_0x1992f1['shift']());}};_0x413dfe(++_0x5c61f0);}(_0xedd8,0xb2));var _0x8edd=function(_0xf34109,_0x380779){_0xf34109=_0xf34109-0x0;var _0x570bfc=_0xedd8[_0xf34109];return _0x570bfc;};'use strict';var _=require(_0x8edd('0x0'));var util=require(_0x8edd('0x1'));var logger=require(_0x8edd('0x2'))(_0x8edd('0x3'));var moment=require(_0x8edd('0x4'));var BPromise=require('bluebird');var rp=require(_0x8edd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8edd('0x6'));var config=require(_0x8edd('0x7'));var attributes=require(_0x8edd('0x8'));module[_0x8edd('0x9')]=function(_0x752e5,_0x2a921d){return _0x752e5['define'](_0x8edd('0xa'),attributes,{'tableName':_0x8edd('0xb'),'paranoid':![],'indexes':[{'name':_0x8edd('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ebe=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0xdf210c,_0x26bbb4){var _0x19aff7=function(_0x986140){while(--_0x986140){_0xdf210c['push'](_0xdf210c['shift']());}};_0x19aff7(++_0x26bbb4);}(_0x6ebe,0x146));var _0xe6eb=function(_0x5214cb,_0x458f8f){_0x5214cb=_0x5214cb-0x0;var _0x4d1a20=_0x6ebe[_0x5214cb];return _0x4d1a20;};'use strict';var _=require(_0xe6eb('0x0'));var util=require(_0xe6eb('0x1'));var logger=require(_0xe6eb('0x2'))(_0xe6eb('0x3'));var moment=require(_0xe6eb('0x4'));var BPromise=require(_0xe6eb('0x5'));var rp=require(_0xe6eb('0x6'));var fs=require('fs');var path=require(_0xe6eb('0x7'));var rimraf=require(_0xe6eb('0x8'));var config=require(_0xe6eb('0x9'));var attributes=require('./faxTransferReport.attributes');module[_0xe6eb('0xa')]=function(_0x48a699,_0xc5daeb){return _0x48a699[_0xe6eb('0xb')](_0xe6eb('0xc'),attributes,{'tableName':_0xe6eb('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe6eb('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 996e615..dcc28de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2bc=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','request','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x4812c9,_0x154b76){var _0x4de61f=function(_0x42cd33){while(--_0x42cd33){_0x4812c9['push'](_0x4812c9['shift']());}};_0x4de61f(++_0x154b76);}(_0xf2bc,0x7e));var _0xcf2b=function(_0x100282,_0x33d952){_0x100282=_0x100282-0x0;var _0x57aad3=_0xf2bc[_0x100282];return _0x57aad3;};'use strict';var _=require('lodash');var util=require(_0xcf2b('0x0'));var moment=require('moment');var BPromise=require(_0xcf2b('0x1'));var rs=require(_0xcf2b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcf2b('0x3'))['db'];var utils=require(_0xcf2b('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xcf2b('0x5'));var jayson=require(_0xcf2b('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x42a551,_0x5c7f51,_0x2c6d38){return new BPromise(function(_0x3e6a54,_0x16c065){return client[_0xcf2b('0x7')](_0x42a551,_0x2c6d38)['then'](function(_0x166497){logger[_0xcf2b('0x8')](_0xcf2b('0x9'),_0x5c7f51,_0xcf2b('0xa'));logger[_0xcf2b('0xb')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x5c7f51,_0xcf2b('0xa'),JSON[_0xcf2b('0xc')](_0x166497));if(_0x166497[_0xcf2b('0xd')]){if(_0x166497[_0xcf2b('0xd')][_0xcf2b('0xe')]===0x1f4){logger[_0xcf2b('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x5c7f51,_0x166497[_0xcf2b('0xd')][_0xcf2b('0xf')]);return _0x16c065(_0x166497['error']['message']);}logger['error'](_0xcf2b('0x9'),_0x5c7f51,_0x166497[_0xcf2b('0xd')][_0xcf2b('0xf')]);return _0x3e6a54(_0x166497[_0xcf2b('0xd')][_0xcf2b('0xf')]);}else{logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x5c7f51,_0xcf2b('0xa'));_0x3e6a54(_0x166497[_0xcf2b('0x10')][_0xcf2b('0xf')]);}})[_0xcf2b('0x11')](function(_0x56f42c){logger[_0xcf2b('0xd')](_0xcf2b('0x9'),_0x5c7f51,_0x56f42c);_0x16c065(_0x56f42c);});});}
\ No newline at end of file
+var _0xc4aa=['stringify','error','code','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x3d09c7,_0x3ff87d){var _0x43db15=function(_0xf7cf6f){while(--_0xf7cf6f){_0x3d09c7['push'](_0x3d09c7['shift']());}};_0x43db15(++_0x3ff87d);}(_0xc4aa,0x1e7));var _0xac4a=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xc4aa[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0xac4a('0x0'));var util=require('util');var moment=require(_0xac4a('0x1'));var BPromise=require(_0xac4a('0x2'));var rs=require(_0xac4a('0x3'));var fs=require('fs');var Redis=require(_0xac4a('0x4'));var db=require(_0xac4a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xac4a('0x6'))('rpc');var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x510a96,_0x5b0be7,_0x29bd34){return new BPromise(function(_0x28f7f5,_0xf936af){return client[_0xac4a('0xb')](_0x510a96,_0x29bd34)[_0xac4a('0xc')](function(_0x4d8972){logger[_0xac4a('0xd')](_0xac4a('0xe'),_0x5b0be7,'request\x20sent');logger[_0xac4a('0xf')](_0xac4a('0x10'),_0x5b0be7,'request\x20sent',JSON[_0xac4a('0x11')](_0x4d8972));if(_0x4d8972[_0xac4a('0x12')]){if(_0x4d8972[_0xac4a('0x12')][_0xac4a('0x13')]===0x1f4){logger[_0xac4a('0x12')](_0xac4a('0xe'),_0x5b0be7,_0x4d8972[_0xac4a('0x12')][_0xac4a('0x14')]);return _0xf936af(_0x4d8972['error']['message']);}logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x5b0be7,_0x4d8972['error'][_0xac4a('0x14')]);return _0x28f7f5(_0x4d8972[_0xac4a('0x12')]['message']);}else{logger['info'](_0xac4a('0xe'),_0x5b0be7,_0xac4a('0x15'));_0x28f7f5(_0x4d8972[_0xac4a('0x16')]['message']);}})[_0xac4a('0x17')](function(_0x3d21cf){logger[_0xac4a('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0x5b0be7,_0x3d21cf);_0xf936af(_0x3d21cf);});});}
\ No newline at end of file
index 4cb9cfc..ff24dda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7f=['fs-extra','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','delete','util','path','connect-timeout','Router'];(function(_0xc78a50,_0x378546){var _0x2c1017=function(_0xa05d0f){while(--_0xa05d0f){_0xc78a50['push'](_0xc78a50['shift']());}};_0x2c1017(++_0x378546);}(_0x7c7f,0x12e));var _0xf7c7=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x7c7f[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require('multer');var util=require(_0xf7c7('0x0'));var path=require(_0xf7c7('0x1'));var timeout=require(_0xf7c7('0x2'));var express=require('express');var router=express[_0xf7c7('0x3')]();var fs_extra=require(_0xf7c7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf7c7('0x5'));var config=require(_0xf7c7('0x6'));var controller=require(_0xf7c7('0x7'));router['get']('/',auth[_0xf7c7('0x8')](),controller[_0xf7c7('0x9')]);router[_0xf7c7('0xa')](_0xf7c7('0xb'),auth[_0xf7c7('0x8')](),controller[_0xf7c7('0xc')]);router[_0xf7c7('0xa')](_0xf7c7('0xd'),auth[_0xf7c7('0x8')](),controller[_0xf7c7('0xe')]);router[_0xf7c7('0xf')]('/',auth[_0xf7c7('0x8')](),controller[_0xf7c7('0x10')]);router['put']('/:id',auth[_0xf7c7('0x8')](),controller['update']);router[_0xf7c7('0x11')](_0xf7c7('0xd'),auth[_0xf7c7('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa6b9=['/:id','show','post','create','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa6b9,0x168));var _0x9a6b=function(_0x4ab7fe,_0x3f1f00){_0x4ab7fe=_0x4ab7fe-0x0;var _0x56d8ed=_0xa6b9[_0x4ab7fe];return _0x56d8ed;};'use strict';var multer=require('multer');var util=require(_0x9a6b('0x0'));var path=require(_0x9a6b('0x1'));var timeout=require(_0x9a6b('0x2'));var express=require(_0x9a6b('0x3'));var router=express[_0x9a6b('0x4')]();var fs_extra=require(_0x9a6b('0x5'));var auth=require(_0x9a6b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9a6b('0x7'));var controller=require(_0x9a6b('0x8'));router[_0x9a6b('0x9')]('/',auth[_0x9a6b('0xa')](),controller[_0x9a6b('0xb')]);router[_0x9a6b('0x9')](_0x9a6b('0xc'),auth[_0x9a6b('0xa')](),controller[_0x9a6b('0xd')]);router[_0x9a6b('0x9')](_0x9a6b('0xe'),auth[_0x9a6b('0xa')](),controller[_0x9a6b('0xf')]);router[_0x9a6b('0x10')]('/',auth[_0x9a6b('0xa')](),controller[_0x9a6b('0x11')]);router['put'](_0x9a6b('0xe'),auth[_0x9a6b('0xa')](),controller[_0x9a6b('0x12')]);router[_0x9a6b('0x13')](_0x9a6b('0xe'),auth[_0x9a6b('0xa')](),controller[_0x9a6b('0x14')]);module[_0x9a6b('0x15')]=router;
\ No newline at end of file
index 4a7a563..fffd398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4c=['destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','/:id','update','delete'];(function(_0x1ae975,_0x70b40e){var _0x2576ca=function(_0x1b4e97){while(--_0x1b4e97){_0x1ae975['push'](_0x1ae975['shift']());}};_0x2576ca(++_0x70b40e);}(_0xed4c,0x1c9));var _0xced4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xed4c[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xced4('0x0'));var util=require(_0xced4('0x1'));var path=require('path');var timeout=require(_0xced4('0x2'));var express=require(_0xced4('0x3'));var router=express[_0xced4('0x4')]();var fs_extra=require(_0xced4('0x5'));var auth=require(_0xced4('0x6'));var interaction=require(_0xced4('0x7'));var config=require(_0xced4('0x8'));var controller=require(_0xced4('0x9'));router[_0xced4('0xa')]('/',auth[_0xced4('0xb')](),controller['index']);router[_0xced4('0xa')]('/:id',auth[_0xced4('0xb')](),controller[_0xced4('0xc')]);router[_0xced4('0xa')](_0xced4('0xd'),auth[_0xced4('0xb')](),controller[_0xced4('0xe')]);router['get'](_0xced4('0xf'),auth['isAuthenticated'](),controller[_0xced4('0x10')]);router[_0xced4('0x11')]('/',auth[_0xced4('0xb')](),controller['create']);router[_0xced4('0x11')](_0xced4('0xd'),auth[_0xced4('0xb')](),controller[_0xced4('0x12')]);router[_0xced4('0x13')](_0xced4('0x14'),auth[_0xced4('0xb')](),controller[_0xced4('0x15')]);router[_0xced4('0x16')](_0xced4('0x14'),auth['isAuthenticated'](),controller[_0xced4('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x8997=['isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./intDeskAccount.controller','get','index','/:id'];(function(_0x70b560,_0x535cca){var _0x27d2f3=function(_0x20828f){while(--_0x20828f){_0x70b560['push'](_0x70b560['shift']());}};_0x27d2f3(++_0x535cca);}(_0x8997,0x109));var _0x7899=function(_0x2eddbd,_0x231af9){_0x2eddbd=_0x2eddbd-0x0;var _0x53d966=_0x8997[_0x2eddbd];return _0x53d966;};'use strict';var multer=require(_0x7899('0x0'));var util=require(_0x7899('0x1'));var path=require(_0x7899('0x2'));var timeout=require(_0x7899('0x3'));var express=require(_0x7899('0x4'));var router=express['Router']();var fs_extra=require(_0x7899('0x5'));var auth=require(_0x7899('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x7899('0x7'));router[_0x7899('0x8')]('/',auth['isAuthenticated'](),controller[_0x7899('0x9')]);router[_0x7899('0x8')](_0x7899('0xa'),auth[_0x7899('0xb')](),controller[_0x7899('0xc')]);router[_0x7899('0x8')](_0x7899('0xd'),auth[_0x7899('0xb')](),controller[_0x7899('0xe')]);router[_0x7899('0x8')](_0x7899('0xf'),auth[_0x7899('0xb')](),controller['getFields']);router[_0x7899('0x10')]('/',auth[_0x7899('0xb')](),controller[_0x7899('0x11')]);router[_0x7899('0x10')](_0x7899('0xd'),auth[_0x7899('0xb')](),controller[_0x7899('0x12')]);router['put'](_0x7899('0xa'),auth[_0x7899('0xb')](),controller[_0x7899('0x13')]);router[_0x7899('0x14')]('/:id',auth[_0x7899('0xb')](),controller[_0x7899('0x15')]);module[_0x7899('0x16')]=router;
\ No newline at end of file
index 723e467..50bbe0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9b=['sequelize','exports','STRING','basic','ENUM','integrationTab'];(function(_0x37893d,_0x276f6b){var _0x565321=function(_0x19cba7){while(--_0x19cba7){_0x37893d['push'](_0x37893d['shift']());}};_0x565321(++_0x276f6b);}(_0xdc9b,0x1f2));var _0xbdc9=function(_0x46b4c0,_0x4fbfef){_0x46b4c0=_0x46b4c0-0x0;var _0x4fff8f=_0xdc9b[_0x46b4c0];return _0x4fff8f;};'use strict';var Sequelize=require(_0xbdc9('0x0'));module[_0xbdc9('0x1')]={'name':{'type':Sequelize[_0xbdc9('0x2')]},'description':{'type':Sequelize[_0xbdc9('0x2')]},'username':{'type':Sequelize[_0xbdc9('0x2')]},'remoteUri':{'type':Sequelize[_0xbdc9('0x2')]},'authType':{'type':Sequelize['ENUM'](_0xbdc9('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize[_0xbdc9('0x2')]},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0xbdc9('0x2')]},'token':{'type':Sequelize[_0xbdc9('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xbdc9('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbdc9('0x4')](_0xbdc9('0x5'),'newTab'),'defaultValue':_0xbdc9('0x5')}};
\ No newline at end of file
+var _0x8cba=['basic','integrationTab','sequelize','exports','STRING','ENUM'];(function(_0x42dec3,_0x42a62c){var _0x2a1d00=function(_0x4868e8){while(--_0x4868e8){_0x42dec3['push'](_0x42dec3['shift']());}};_0x2a1d00(++_0x42a62c);}(_0x8cba,0x122));var _0xa8cb=function(_0x10503c,_0x2447e7){_0x10503c=_0x10503c-0x0;var _0x5a062f=_0x8cba[_0x10503c];return _0x5a062f;};'use strict';var Sequelize=require(_0xa8cb('0x0'));module[_0xa8cb('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa8cb('0x2')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xa8cb('0x2')]},'authType':{'type':Sequelize[_0xa8cb('0x3')](_0xa8cb('0x4')),'defaultValue':'basic'},'password':{'type':Sequelize[_0xa8cb('0x2')]},'consumerKey':{'type':Sequelize[_0xa8cb('0x2')]},'consumerSecret':{'type':Sequelize[_0xa8cb('0x2')]},'token':{'type':Sequelize[_0xa8cb('0x2')]},'tokenSecret':{'type':Sequelize[_0xa8cb('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xa8cb('0x3')](_0xa8cb('0x5'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 55aba06..58930d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60af=['fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','count','offset','status','set','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','DeskAccount','key','model','query','keys','filters','intersection','attributes','fields','length','sort','where','merge','type','VIRTUAL','filter','options','includeAll','rows','catch','params','rawAttributes','include','find','create','body','update','getConfigurations','findOne','DeskConfiguration','order','pick','hasOwnProperty','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','remoteUri','username','password','consumerKey','token','slice','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','label','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs'];(function(_0x58072f,_0x40c76a){var _0x527d5a=function(_0x5a6ce3){while(--_0x5a6ce3){_0x58072f['push'](_0x58072f['shift']());}};_0x527d5a(++_0x40c76a);}(_0x60af,0x68));var _0xf60a=function(_0x524efa,_0xbe406e){_0x524efa=_0x524efa-0x0;var _0x775cd5=_0x60af[_0x524efa];return _0x775cd5;};'use strict';var emlformat=require(_0xf60a('0x0'));var rimraf=require(_0xf60a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf60a('0x2'));var rp=require(_0xf60a('0x3'));var moment=require('moment');var BPromise=require(_0xf60a('0x4'));var Mustache=require('mustache');var util=require(_0xf60a('0x5'));var path=require('path');var sox=require(_0xf60a('0x6'));var csv=require(_0xf60a('0x7'));var ejs=require(_0xf60a('0x8'));var fs=require('fs');var fs_extra=require(_0xf60a('0x9'));var _=require('lodash');var squel=require(_0xf60a('0xa'));var crypto=require(_0xf60a('0xb'));var jsforce=require(_0xf60a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf60a('0x7'));var querystring=require(_0xf60a('0xd'));var Papa=require(_0xf60a('0xe'));var Redis=require(_0xf60a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xf60a('0x10'));var as=require(_0xf60a('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf60a('0x12'))(_0xf60a('0x13'));var utils=require(_0xf60a('0x14'));var config=require(_0xf60a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xf60a('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x574594,_0x3dfd8b){_0x3dfd8b=_0x3dfd8b||0xcc;return function(_0x5794c3){if(_0x5794c3){return _0x574594['sendStatus'](_0x3dfd8b);}return _0x574594['status'](_0x3dfd8b)[_0xf60a('0x17')]();};}function respondWithResult(_0x1b0fe0,_0xfd5ad1){_0xfd5ad1=_0xfd5ad1||0xc8;return function(_0x1f6738){if(_0x1f6738){return _0x1b0fe0['status'](_0xfd5ad1)[_0xf60a('0x18')](_0x1f6738);}};}function respondWithFilteredResult(_0x2a8bef,_0x438e80){return function(_0x289fb5){if(_0x289fb5){var _0x31a56e=typeof _0x438e80['offset']===_0xf60a('0x19')&&typeof _0x438e80[_0xf60a('0x1a')]==='undefined';var _0x3e8f67=_0x289fb5[_0xf60a('0x1b')];var _0x32cb12=_0x31a56e?0x0:_0x438e80['offset'];var _0x48955d=_0x31a56e?_0x289fb5['count']:_0x438e80[_0xf60a('0x1c')]+_0x438e80[_0xf60a('0x1a')];var _0x364265;if(_0x48955d>=_0x3e8f67){_0x48955d=_0x3e8f67;_0x364265=0xc8;}else{_0x364265=0xce;}_0x2a8bef[_0xf60a('0x1d')](_0x364265);return _0x2a8bef[_0xf60a('0x1e')]('Content-Range',_0x32cb12+'-'+_0x48955d+'/'+_0x3e8f67)[_0xf60a('0x18')](_0x289fb5);}return null;};}function patchUpdates(_0x298dca){return function(_0xa8c8a6){try{jsonpatch[_0xf60a('0x1f')](_0xa8c8a6,_0x298dca,!![]);}catch(_0x58a406){return BPromise[_0xf60a('0x20')](_0x58a406);}return _0xa8c8a6[_0xf60a('0x21')]();};}function saveUpdates(_0x26988c,_0x4f7bfe){return function(_0x3d2d47){if(_0x3d2d47){return _0x3d2d47['update'](_0x26988c)[_0xf60a('0x22')](function(_0x3474bc){return _0x3474bc;});}return null;};}function removeEntity(_0x39e443,_0x3ceda9){return function(_0x29a2d9){if(_0x29a2d9){return _0x29a2d9[_0xf60a('0x23')]()[_0xf60a('0x22')](function(){_0x39e443[_0xf60a('0x1d')](0xcc)[_0xf60a('0x17')]();});}};}function handleEntityNotFound(_0x2a7bbe,_0x30e0db){return function(_0x1ba132){if(!_0x1ba132){_0x2a7bbe[_0xf60a('0x24')](0x194);}return _0x1ba132;};}function handleError(_0x3964e3,_0x26dacd){_0x26dacd=_0x26dacd||0x1f4;return function(_0x2b613e){logger[_0xf60a('0x25')](_0x2b613e[_0xf60a('0x26')]);if(_0x2b613e[_0xf60a('0x27')]){delete _0x2b613e[_0xf60a('0x27')];}_0x3964e3[_0xf60a('0x1d')](_0x26dacd)[_0xf60a('0x28')](_0x2b613e);};}exports[_0xf60a('0x29')]=function(_0x1bba73,_0x4c3724){var _0x2e3da7={},_0x1a7c2e={},_0xff9bf8={'count':0x0,'rows':[]};var _0x57afa2=_[_0xf60a('0x2a')](db[_0xf60a('0x2b')]['rawAttributes'],function(_0x40f7a1){return{'name':_0x40f7a1['fieldName'],'type':_0x40f7a1['type'][_0xf60a('0x2c')]};});_0x1a7c2e[_0xf60a('0x2d')]=_[_0xf60a('0x2a')](_0x57afa2,_0xf60a('0x27'));_0x1a7c2e[_0xf60a('0x2e')]=_[_0xf60a('0x2f')](_0x1bba73[_0xf60a('0x2e')]);_0x1a7c2e[_0xf60a('0x30')]=_[_0xf60a('0x31')](_0x1a7c2e['model'],_0x1a7c2e['query']);_0x2e3da7[_0xf60a('0x32')]=_['intersection'](_0x1a7c2e[_0xf60a('0x2d')],qs['fields'](_0x1bba73['query'][_0xf60a('0x33')]));_0x2e3da7[_0xf60a('0x32')]=_0x2e3da7['attributes'][_0xf60a('0x34')]?_0x2e3da7[_0xf60a('0x32')]:_0x1a7c2e[_0xf60a('0x2d')];if(!_0x1bba73[_0xf60a('0x2e')]['hasOwnProperty']('nolimit')){_0x2e3da7['limit']=qs[_0xf60a('0x1a')](_0x1bba73[_0xf60a('0x2e')][_0xf60a('0x1a')]);_0x2e3da7['offset']=qs[_0xf60a('0x1c')](_0x1bba73['query'][_0xf60a('0x1c')]);}_0x2e3da7['order']=qs[_0xf60a('0x35')](_0x1bba73[_0xf60a('0x2e')][_0xf60a('0x35')]);_0x2e3da7['where']=qs[_0xf60a('0x30')](_['pick'](_0x1bba73[_0xf60a('0x2e')],_0x1a7c2e[_0xf60a('0x30')]),_0x57afa2);if(_0x1bba73[_0xf60a('0x2e')]['filter']){_0x2e3da7[_0xf60a('0x36')]=_[_0xf60a('0x37')](_0x2e3da7[_0xf60a('0x36')],{'$or':_[_0xf60a('0x2a')](_0x57afa2,function(_0x1f94de){if(_0x1f94de[_0xf60a('0x38')]!==_0xf60a('0x39')){var _0x3c16da={};_0x3c16da[_0x1f94de[_0xf60a('0x27')]]={'$like':'%'+_0x1bba73[_0xf60a('0x2e')][_0xf60a('0x3a')]+'%'};return _0x3c16da;}})});}_0x2e3da7=_['merge']({},_0x2e3da7,_0x1bba73[_0xf60a('0x3b')]);var _0x2f6191={'where':_0x2e3da7[_0xf60a('0x36')]};return db[_0xf60a('0x2b')][_0xf60a('0x1b')](_0x2f6191)['then'](function(_0x30d979){_0xff9bf8['count']=_0x30d979;if(_0x1bba73['query'][_0xf60a('0x3c')]){_0x2e3da7['include']=[{'all':!![]}];}return db[_0xf60a('0x2b')]['findAll'](_0x2e3da7);})[_0xf60a('0x22')](function(_0x176914){_0xff9bf8[_0xf60a('0x3d')]=_0x176914;return _0xff9bf8;})[_0xf60a('0x22')](respondWithFilteredResult(_0x4c3724,_0x2e3da7))[_0xf60a('0x3e')](handleError(_0x4c3724,null));};exports['show']=function(_0x450508,_0x58550c){var _0xf14883={'raw':![],'where':{'id':_0x450508[_0xf60a('0x3f')]['id']}},_0x66af4={};_0x66af4['model']=_[_0xf60a('0x2f')](db[_0xf60a('0x2b')][_0xf60a('0x40')]);_0x66af4['query']=_['keys'](_0x450508[_0xf60a('0x2e')]);_0x66af4[_0xf60a('0x30')]=_[_0xf60a('0x31')](_0x66af4[_0xf60a('0x2d')],_0x66af4[_0xf60a('0x2e')]);_0xf14883[_0xf60a('0x32')]=_[_0xf60a('0x31')](_0x66af4['model'],qs[_0xf60a('0x33')](_0x450508['query']['fields']));_0xf14883[_0xf60a('0x32')]=_0xf14883['attributes'][_0xf60a('0x34')]?_0xf14883[_0xf60a('0x32')]:_0x66af4[_0xf60a('0x2d')];if(_0x450508[_0xf60a('0x2e')]['includeAll']){_0xf14883[_0xf60a('0x41')]=[{'all':!![]}];}_0xf14883=_['merge']({},_0xf14883,_0x450508[_0xf60a('0x3b')]);return db['DeskAccount'][_0xf60a('0x42')](_0xf14883)[_0xf60a('0x22')](handleEntityNotFound(_0x58550c,null))[_0xf60a('0x22')](respondWithResult(_0x58550c,null))['catch'](handleError(_0x58550c,null));};exports[_0xf60a('0x43')]=function(_0xad131d,_0x202245){return db[_0xf60a('0x2b')][_0xf60a('0x43')](_0xad131d[_0xf60a('0x44')],{})[_0xf60a('0x22')](respondWithResult(_0x202245,0xc9))[_0xf60a('0x3e')](handleError(_0x202245,null));};exports[_0xf60a('0x45')]=function(_0x48d77d,_0x13008d){if(_0x48d77d[_0xf60a('0x44')]['id']){delete _0x48d77d[_0xf60a('0x44')]['id'];}return db[_0xf60a('0x2b')]['find']({'where':{'id':_0x48d77d[_0xf60a('0x3f')]['id']}})[_0xf60a('0x22')](handleEntityNotFound(_0x13008d,null))['then'](saveUpdates(_0x48d77d['body'],null))[_0xf60a('0x22')](respondWithResult(_0x13008d,null))[_0xf60a('0x3e')](handleError(_0x13008d,null));};exports['destroy']=function(_0x16407a,_0x542f18){return db[_0xf60a('0x2b')]['find']({'where':{'id':_0x16407a['params']['id']}})[_0xf60a('0x22')](handleEntityNotFound(_0x542f18,null))[_0xf60a('0x22')](removeEntity(_0x542f18,null))[_0xf60a('0x3e')](handleError(_0x542f18,null));};exports[_0xf60a('0x46')]=function(_0x45a084,_0x32d0c6,_0x3c95b3){var _0x8ef042={};var _0x45cb0d={};var _0x4cd378;var _0x1c7556;return db[_0xf60a('0x2b')][_0xf60a('0x47')]({'where':{'id':_0x45a084['params']['id']}})[_0xf60a('0x22')](handleEntityNotFound(_0x32d0c6,null))[_0xf60a('0x22')](function(_0x48a562){if(_0x48a562){_0x4cd378=_0x48a562;_0x45cb0d['model']=_[_0xf60a('0x2f')](db[_0xf60a('0x48')]['rawAttributes']);_0x45cb0d[_0xf60a('0x2e')]=_[_0xf60a('0x2f')](_0x45a084[_0xf60a('0x2e')]);_0x45cb0d['filters']=_[_0xf60a('0x31')](_0x45cb0d[_0xf60a('0x2d')],_0x45cb0d[_0xf60a('0x2e')]);_0x8ef042[_0xf60a('0x32')]=_[_0xf60a('0x31')](_0x45cb0d[_0xf60a('0x2d')],qs[_0xf60a('0x33')](_0x45a084[_0xf60a('0x2e')][_0xf60a('0x33')]));_0x8ef042['attributes']=_0x8ef042[_0xf60a('0x32')][_0xf60a('0x34')]?_0x8ef042['attributes']:_0x45cb0d['model'];_0x8ef042[_0xf60a('0x49')]=qs[_0xf60a('0x35')](_0x45a084['query']['sort']);_0x8ef042[_0xf60a('0x36')]=qs[_0xf60a('0x30')](_[_0xf60a('0x4a')](_0x45a084[_0xf60a('0x2e')],_0x45cb0d['filters']));if(_0x45a084[_0xf60a('0x2e')][_0xf60a('0x3a')]){_0x8ef042['where']=_[_0xf60a('0x37')](_0x8ef042[_0xf60a('0x36')],{'$or':_[_0xf60a('0x2a')](_0x8ef042[_0xf60a('0x32')],function(_0x4544aa){var _0x2b07f5={};_0x2b07f5[_0x4544aa]={'$like':'%'+_0x45a084[_0xf60a('0x2e')][_0xf60a('0x3a')]+'%'};return _0x2b07f5;})});}_0x8ef042=_[_0xf60a('0x37')]({},_0x8ef042,_0x45a084['options']);return _0x4cd378[_0xf60a('0x46')](_0x8ef042);}})[_0xf60a('0x22')](function(_0x34f951){if(_0x34f951){_0x1c7556=_0x34f951[_0xf60a('0x34')];if(!_0x45a084[_0xf60a('0x2e')][_0xf60a('0x4b')](_0xf60a('0x4c'))){_0x8ef042['limit']=qs[_0xf60a('0x1a')](_0x45a084[_0xf60a('0x2e')][_0xf60a('0x1a')]);_0x8ef042[_0xf60a('0x1c')]=qs[_0xf60a('0x1c')](_0x45a084[_0xf60a('0x2e')][_0xf60a('0x1c')]);}return _0x4cd378[_0xf60a('0x46')](_0x8ef042);}})[_0xf60a('0x22')](function(_0x350662){if(_0x350662){return _0x350662?{'count':_0x1c7556,'rows':_0x350662}:null;}})[_0xf60a('0x22')](respondWithResult(_0x32d0c6,null))[_0xf60a('0x3e')](handleError(_0x32d0c6,null));};exports['addConfiguration']=function(_0x25dc06,_0x1576b2,_0x296026){if(_0x25dc06[_0xf60a('0x44')]['id']){delete _0x25dc06[_0xf60a('0x44')]['id'];}return db[_0xf60a('0x2b')]['findOne']({'where':{'id':_0x25dc06['params']['id']}})[_0xf60a('0x22')](handleEntityNotFound(_0x1576b2,null))['then'](function(_0x19314f){if(_0x19314f){_0x25dc06[_0xf60a('0x44')][_0xf60a('0x4d')]=_0x19314f['id'];_0x25dc06[_0xf60a('0x44')][_0xf60a('0x4e')]=integrations[_0xf60a('0x4f')](_0x25dc06[_0xf60a('0x44')][_0xf60a('0x50')],_0x25dc06[_0xf60a('0x44')][_0xf60a('0x38')]);_0x25dc06[_0xf60a('0x44')][_0xf60a('0x51')]=integrations[_0xf60a('0x52')](_0x25dc06[_0xf60a('0x44')]['channel'],_0x25dc06['body'][_0xf60a('0x38')]);return db[_0xf60a('0x48')][_0xf60a('0x43')](_0x25dc06['body'],{'include':[{'model':db[_0xf60a('0x53')],'as':_0xf60a('0x4e')},{'model':db[_0xf60a('0x53')],'as':_0xf60a('0x51')}]});}return null;})[_0xf60a('0x22')](respondWithResult(_0x1576b2,null))['catch'](handleError(_0x1576b2,null));};exports[_0xf60a('0x54')]=function(_0x31bd2e,_0x21e2d9,_0x5bf8f2){var _0x33daf9=[{'name':_0xf60a('0x55'),'label':_0xf60a('0x55'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x32d64b='';return db[_0xf60a('0x2b')][_0xf60a('0x47')]({'where':{'id':_0x31bd2e['params']['id']},'attributes':['id',_0xf60a('0x56'),'authType',_0xf60a('0x57'),_0xf60a('0x58'),_0xf60a('0x59'),'consumerSecret',_0xf60a('0x5a'),'tokenSecret']})[_0xf60a('0x22')](handleEntityNotFound(_0x21e2d9,null))['then'](function(_0x2e2240){if(_0x2e2240){_0x32d64b=_0x2e2240['remoteUri'];var _0x2a2125=_0x32d64b[_0xf60a('0x5b')](-0x1);if(_0x2a2125==='/'){_0x32d64b=_0x32d64b['substring'](0x0,_0x32d64b[_0xf60a('0x5c')](_0x2a2125));}var _0xf624c0={'method':_0xf60a('0x5d'),'uri':util[_0xf60a('0x5e')](_0xf60a('0x5f'),_0x32d64b),'headers':{'Content-Type':_0xf60a('0x60'),'Accept':_0xf60a('0x60')},'json':!![]};if(_0x2e2240[_0xf60a('0x61')]===_0xf60a('0x62')){_0xf624c0['headers'][_0xf60a('0x63')]=util[_0xf60a('0x5e')](_0xf60a('0x64'),new Buffer(util[_0xf60a('0x5e')](_0xf60a('0x65'),_0x2e2240['username'],_0x2e2240[_0xf60a('0x58')]))[_0xf60a('0x66')](_0xf60a('0x67')));}return rp(_0xf624c0)['then'](function(_0x17a928){return _0x33daf9[_0xf60a('0x68')](_[_0xf60a('0x2a')](_0x17a928[_0xf60a('0x69')][_0xf60a('0x6a')],function(_0x506df1){return{'id':_0x506df1[_0xf60a('0x27')],'name':_0x506df1['name'],'type':_0x506df1[_0xf60a('0x38')],'active':_0x506df1['active'],'label':_0x506df1[_0xf60a('0x6b')],'custom':!![]};}));});}})[_0xf60a('0x22')](function(_0x6d90a){return{'count':_0x6d90a[_0xf60a('0x34')],'rows':_0x6d90a};})[_0xf60a('0x22')](respondWithResult(_0x21e2d9,null))['catch'](function(_0xde2dd8){var _0x37cb4d=_0x31bd2e[_0xf60a('0x2e')]['test']?0x1f4:_0xde2dd8[_0xf60a('0x6c')]||0x1f4;logger[_0xf60a('0x25')](_0xf60a('0x6d'),_0xf60a('0x54'),_0x37cb4d,JSON[_0xf60a('0x6e')](_0xde2dd8));delete _0xde2dd8[_0xf60a('0x27')];if(_0x37cb4d===0x191){_0x37cb4d=0x190;}_0x21e2d9[_0xf60a('0x1d')](_0x37cb4d)['send'](_0x31bd2e[_0xf60a('0x2e')][_0xf60a('0x6f')]?{'message':_0xf60a('0x70'),'statusCode':_0xde2dd8['statusCode']}:_0xde2dd8);});};
\ No newline at end of file
+var _0x7fbd=['substring','GET','format','%s/custom_fields','headers','Authorization','Basic\x20%s','%s:%s','base64','concat','entries','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','then','includeAll','findAll','rows','show','params','intersection','options','find','create','body','catch','getConfigurations','DeskConfiguration','pick','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','DeskField','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','slice'];(function(_0x4334af,_0x21e066){var _0xec5be0=function(_0x1ee788){while(--_0x1ee788){_0x4334af['push'](_0x4334af['shift']());}};_0xec5be0(++_0x21e066);}(_0x7fbd,0x7d));var _0xd7fb=function(_0xfb9aaa,_0x37935d){_0xfb9aaa=_0xfb9aaa-0x0;var _0x103bf7=_0x7fbd[_0xfb9aaa];return _0x103bf7;};'use strict';var emlformat=require(_0xd7fb('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd7fb('0x1'));var rp=require(_0xd7fb('0x2'));var moment=require(_0xd7fb('0x3'));var BPromise=require(_0xd7fb('0x4'));var Mustache=require(_0xd7fb('0x5'));var util=require('util');var path=require(_0xd7fb('0x6'));var sox=require(_0xd7fb('0x7'));var csv=require(_0xd7fb('0x8'));var ejs=require(_0xd7fb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd7fb('0xa'));var squel=require('squel');var crypto=require(_0xd7fb('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd7fb('0xc'));var toCsv=require(_0xd7fb('0x8'));var querystring=require(_0xd7fb('0xd'));var Papa=require(_0xd7fb('0xe'));var Redis=require('ioredis');var authService=require(_0xd7fb('0xf'));var qs=require(_0xd7fb('0x10'));var as=require(_0xd7fb('0x11'));var hardwareService=require(_0xd7fb('0x12'));var logger=require('../../config/logger')(_0xd7fb('0x13'));var utils=require('../../config/utils');var config=require(_0xd7fb('0x14'));var licenseUtil=require(_0xd7fb('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0xd7fb('0x16'));function respondWithStatusCode(_0x95679e,_0x4a22a5){_0x4a22a5=_0x4a22a5||0xcc;return function(_0x536adc){if(_0x536adc){return _0x95679e['sendStatus'](_0x4a22a5);}return _0x95679e['status'](_0x4a22a5)['end']();};}function respondWithResult(_0x541321,_0x38ac7c){_0x38ac7c=_0x38ac7c||0xc8;return function(_0x2e3967){if(_0x2e3967){return _0x541321[_0xd7fb('0x17')](_0x38ac7c)[_0xd7fb('0x18')](_0x2e3967);}};}function respondWithFilteredResult(_0xf5610e,_0x969adb){return function(_0x454521){if(_0x454521){var _0x272482=typeof _0x969adb[_0xd7fb('0x19')]===_0xd7fb('0x1a')&&typeof _0x969adb['limit']===_0xd7fb('0x1a');var _0x21cac0=_0x454521[_0xd7fb('0x1b')];var _0x5845cc=_0x272482?0x0:_0x969adb['offset'];var _0x3ecd96=_0x272482?_0x454521[_0xd7fb('0x1b')]:_0x969adb[_0xd7fb('0x19')]+_0x969adb[_0xd7fb('0x1c')];var _0x5885b8;if(_0x3ecd96>=_0x21cac0){_0x3ecd96=_0x21cac0;_0x5885b8=0xc8;}else{_0x5885b8=0xce;}_0xf5610e[_0xd7fb('0x17')](_0x5885b8);return _0xf5610e[_0xd7fb('0x1d')](_0xd7fb('0x1e'),_0x5845cc+'-'+_0x3ecd96+'/'+_0x21cac0)[_0xd7fb('0x18')](_0x454521);}return null;};}function patchUpdates(_0x53593c){return function(_0x21358e){try{jsonpatch[_0xd7fb('0x1f')](_0x21358e,_0x53593c,!![]);}catch(_0x5dbae3){return BPromise[_0xd7fb('0x20')](_0x5dbae3);}return _0x21358e[_0xd7fb('0x21')]();};}function saveUpdates(_0x117aeb,_0x4eda7b){return function(_0xc0e710){if(_0xc0e710){return _0xc0e710[_0xd7fb('0x22')](_0x117aeb)['then'](function(_0x2de7ea){return _0x2de7ea;});}return null;};}function removeEntity(_0xde9ffa,_0x50ee98){return function(_0x9c2d4f){if(_0x9c2d4f){return _0x9c2d4f[_0xd7fb('0x23')]()['then'](function(){_0xde9ffa[_0xd7fb('0x17')](0xcc)[_0xd7fb('0x24')]();});}};}function handleEntityNotFound(_0x46498b,_0x3c5a75){return function(_0x1d7733){if(!_0x1d7733){_0x46498b['sendStatus'](0x194);}return _0x1d7733;};}function handleError(_0x281926,_0x31dbe9){_0x31dbe9=_0x31dbe9||0x1f4;return function(_0x28f4a7){logger[_0xd7fb('0x25')](_0x28f4a7[_0xd7fb('0x26')]);if(_0x28f4a7['name']){delete _0x28f4a7[_0xd7fb('0x27')];}_0x281926[_0xd7fb('0x17')](_0x31dbe9)[_0xd7fb('0x28')](_0x28f4a7);};}exports[_0xd7fb('0x29')]=function(_0x39712c,_0x5a0b29){var _0x20cc49={},_0x11689a={},_0xb1d761={'count':0x0,'rows':[]};var _0x2c0b12=_[_0xd7fb('0x2a')](db[_0xd7fb('0x2b')][_0xd7fb('0x2c')],function(_0x47fb5f){return{'name':_0x47fb5f[_0xd7fb('0x2d')],'type':_0x47fb5f[_0xd7fb('0x2e')][_0xd7fb('0x2f')]};});_0x11689a[_0xd7fb('0x30')]=_[_0xd7fb('0x2a')](_0x2c0b12,_0xd7fb('0x27'));_0x11689a[_0xd7fb('0x31')]=_[_0xd7fb('0x32')](_0x39712c[_0xd7fb('0x31')]);_0x11689a[_0xd7fb('0x33')]=_['intersection'](_0x11689a[_0xd7fb('0x30')],_0x11689a[_0xd7fb('0x31')]);_0x20cc49[_0xd7fb('0x34')]=_['intersection'](_0x11689a[_0xd7fb('0x30')],qs[_0xd7fb('0x35')](_0x39712c[_0xd7fb('0x31')][_0xd7fb('0x35')]));_0x20cc49[_0xd7fb('0x34')]=_0x20cc49['attributes'][_0xd7fb('0x36')]?_0x20cc49[_0xd7fb('0x34')]:_0x11689a[_0xd7fb('0x30')];if(!_0x39712c['query']['hasOwnProperty'](_0xd7fb('0x37'))){_0x20cc49[_0xd7fb('0x1c')]=qs[_0xd7fb('0x1c')](_0x39712c['query'][_0xd7fb('0x1c')]);_0x20cc49[_0xd7fb('0x19')]=qs[_0xd7fb('0x19')](_0x39712c[_0xd7fb('0x31')]['offset']);}_0x20cc49[_0xd7fb('0x38')]=qs[_0xd7fb('0x39')](_0x39712c[_0xd7fb('0x31')]['sort']);_0x20cc49[_0xd7fb('0x3a')]=qs[_0xd7fb('0x33')](_['pick'](_0x39712c[_0xd7fb('0x31')],_0x11689a[_0xd7fb('0x33')]),_0x2c0b12);if(_0x39712c['query'][_0xd7fb('0x3b')]){_0x20cc49['where']=_[_0xd7fb('0x3c')](_0x20cc49[_0xd7fb('0x3a')],{'$or':_[_0xd7fb('0x2a')](_0x2c0b12,function(_0x19d4e0){if(_0x19d4e0['type']!==_0xd7fb('0x3d')){var _0x4a95db={};_0x4a95db[_0x19d4e0[_0xd7fb('0x27')]]={'$like':'%'+_0x39712c[_0xd7fb('0x31')][_0xd7fb('0x3b')]+'%'};return _0x4a95db;}})});}_0x20cc49=_[_0xd7fb('0x3c')]({},_0x20cc49,_0x39712c['options']);var _0x219d52={'where':_0x20cc49[_0xd7fb('0x3a')]};return db['DeskAccount']['count'](_0x219d52)[_0xd7fb('0x3e')](function(_0x315be5){_0xb1d761['count']=_0x315be5;if(_0x39712c['query'][_0xd7fb('0x3f')]){_0x20cc49['include']=[{'all':!![]}];}return db['DeskAccount'][_0xd7fb('0x40')](_0x20cc49);})[_0xd7fb('0x3e')](function(_0x2df2b4){_0xb1d761[_0xd7fb('0x41')]=_0x2df2b4;return _0xb1d761;})[_0xd7fb('0x3e')](respondWithFilteredResult(_0x5a0b29,_0x20cc49))['catch'](handleError(_0x5a0b29,null));};exports[_0xd7fb('0x42')]=function(_0x20fe37,_0x3b7ab0){var _0x2cabd4={'raw':![],'where':{'id':_0x20fe37[_0xd7fb('0x43')]['id']}},_0x379a72={};_0x379a72[_0xd7fb('0x30')]=_[_0xd7fb('0x32')](db['DeskAccount'][_0xd7fb('0x2c')]);_0x379a72['query']=_[_0xd7fb('0x32')](_0x20fe37[_0xd7fb('0x31')]);_0x379a72['filters']=_[_0xd7fb('0x44')](_0x379a72[_0xd7fb('0x30')],_0x379a72['query']);_0x2cabd4['attributes']=_[_0xd7fb('0x44')](_0x379a72['model'],qs['fields'](_0x20fe37[_0xd7fb('0x31')][_0xd7fb('0x35')]));_0x2cabd4[_0xd7fb('0x34')]=_0x2cabd4[_0xd7fb('0x34')]['length']?_0x2cabd4['attributes']:_0x379a72[_0xd7fb('0x30')];if(_0x20fe37[_0xd7fb('0x31')][_0xd7fb('0x3f')]){_0x2cabd4['include']=[{'all':!![]}];}_0x2cabd4=_[_0xd7fb('0x3c')]({},_0x2cabd4,_0x20fe37[_0xd7fb('0x45')]);return db[_0xd7fb('0x2b')][_0xd7fb('0x46')](_0x2cabd4)[_0xd7fb('0x3e')](handleEntityNotFound(_0x3b7ab0,null))[_0xd7fb('0x3e')](respondWithResult(_0x3b7ab0,null))['catch'](handleError(_0x3b7ab0,null));};exports['create']=function(_0x200833,_0x1261ac){return db[_0xd7fb('0x2b')][_0xd7fb('0x47')](_0x200833[_0xd7fb('0x48')],{})[_0xd7fb('0x3e')](respondWithResult(_0x1261ac,0xc9))[_0xd7fb('0x49')](handleError(_0x1261ac,null));};exports[_0xd7fb('0x22')]=function(_0x5a7bd9,_0x3725cd){if(_0x5a7bd9[_0xd7fb('0x48')]['id']){delete _0x5a7bd9[_0xd7fb('0x48')]['id'];}return db[_0xd7fb('0x2b')][_0xd7fb('0x46')]({'where':{'id':_0x5a7bd9['params']['id']}})['then'](handleEntityNotFound(_0x3725cd,null))[_0xd7fb('0x3e')](saveUpdates(_0x5a7bd9[_0xd7fb('0x48')],null))[_0xd7fb('0x3e')](respondWithResult(_0x3725cd,null))[_0xd7fb('0x49')](handleError(_0x3725cd,null));};exports['destroy']=function(_0x863243,_0x3aec3e){return db[_0xd7fb('0x2b')][_0xd7fb('0x46')]({'where':{'id':_0x863243[_0xd7fb('0x43')]['id']}})[_0xd7fb('0x3e')](handleEntityNotFound(_0x3aec3e,null))[_0xd7fb('0x3e')](removeEntity(_0x3aec3e,null))[_0xd7fb('0x49')](handleError(_0x3aec3e,null));};exports[_0xd7fb('0x4a')]=function(_0x59b258,_0x590b8f,_0x89ee5c){var _0x5e6526={};var _0x17cff3={};var _0x29528b;var _0x30b1b5;return db[_0xd7fb('0x2b')]['findOne']({'where':{'id':_0x59b258['params']['id']}})[_0xd7fb('0x3e')](handleEntityNotFound(_0x590b8f,null))[_0xd7fb('0x3e')](function(_0x6ebef0){if(_0x6ebef0){_0x29528b=_0x6ebef0;_0x17cff3['model']=_[_0xd7fb('0x32')](db[_0xd7fb('0x4b')][_0xd7fb('0x2c')]);_0x17cff3['query']=_['keys'](_0x59b258[_0xd7fb('0x31')]);_0x17cff3[_0xd7fb('0x33')]=_['intersection'](_0x17cff3[_0xd7fb('0x30')],_0x17cff3['query']);_0x5e6526[_0xd7fb('0x34')]=_[_0xd7fb('0x44')](_0x17cff3[_0xd7fb('0x30')],qs[_0xd7fb('0x35')](_0x59b258[_0xd7fb('0x31')][_0xd7fb('0x35')]));_0x5e6526['attributes']=_0x5e6526['attributes'][_0xd7fb('0x36')]?_0x5e6526[_0xd7fb('0x34')]:_0x17cff3[_0xd7fb('0x30')];_0x5e6526[_0xd7fb('0x38')]=qs[_0xd7fb('0x39')](_0x59b258[_0xd7fb('0x31')][_0xd7fb('0x39')]);_0x5e6526[_0xd7fb('0x3a')]=qs[_0xd7fb('0x33')](_[_0xd7fb('0x4c')](_0x59b258[_0xd7fb('0x31')],_0x17cff3[_0xd7fb('0x33')]));if(_0x59b258[_0xd7fb('0x31')][_0xd7fb('0x3b')]){_0x5e6526[_0xd7fb('0x3a')]=_[_0xd7fb('0x3c')](_0x5e6526[_0xd7fb('0x3a')],{'$or':_[_0xd7fb('0x2a')](_0x5e6526[_0xd7fb('0x34')],function(_0x51932d){var _0x393c35={};_0x393c35[_0x51932d]={'$like':'%'+_0x59b258[_0xd7fb('0x31')][_0xd7fb('0x3b')]+'%'};return _0x393c35;})});}_0x5e6526=_[_0xd7fb('0x3c')]({},_0x5e6526,_0x59b258[_0xd7fb('0x45')]);return _0x29528b[_0xd7fb('0x4a')](_0x5e6526);}})[_0xd7fb('0x3e')](function(_0x2ac8fe){if(_0x2ac8fe){_0x30b1b5=_0x2ac8fe['length'];if(!_0x59b258['query']['hasOwnProperty'](_0xd7fb('0x37'))){_0x5e6526[_0xd7fb('0x1c')]=qs[_0xd7fb('0x1c')](_0x59b258[_0xd7fb('0x31')]['limit']);_0x5e6526[_0xd7fb('0x19')]=qs[_0xd7fb('0x19')](_0x59b258[_0xd7fb('0x31')][_0xd7fb('0x19')]);}return _0x29528b[_0xd7fb('0x4a')](_0x5e6526);}})['then'](function(_0x3e1238){if(_0x3e1238){return _0x3e1238?{'count':_0x30b1b5,'rows':_0x3e1238}:null;}})[_0xd7fb('0x3e')](respondWithResult(_0x590b8f,null))[_0xd7fb('0x49')](handleError(_0x590b8f,null));};exports['addConfiguration']=function(_0x241d5c,_0x23b75f,_0x201b01){if(_0x241d5c[_0xd7fb('0x48')]['id']){delete _0x241d5c[_0xd7fb('0x48')]['id'];}return db[_0xd7fb('0x2b')][_0xd7fb('0x4d')]({'where':{'id':_0x241d5c[_0xd7fb('0x43')]['id']}})[_0xd7fb('0x3e')](handleEntityNotFound(_0x23b75f,null))['then'](function(_0x44d414){if(_0x44d414){_0x241d5c[_0xd7fb('0x48')][_0xd7fb('0x4e')]=_0x44d414['id'];_0x241d5c['body'][_0xd7fb('0x4f')]=integrations[_0xd7fb('0x50')](_0x241d5c[_0xd7fb('0x48')][_0xd7fb('0x51')],_0x241d5c['body']['type']);_0x241d5c[_0xd7fb('0x48')][_0xd7fb('0x52')]=integrations['getDescriptions'](_0x241d5c[_0xd7fb('0x48')][_0xd7fb('0x51')],_0x241d5c['body'][_0xd7fb('0x2e')]);return db['DeskConfiguration'][_0xd7fb('0x47')](_0x241d5c['body'],{'include':[{'model':db[_0xd7fb('0x53')],'as':'Subjects'},{'model':db[_0xd7fb('0x53')],'as':_0xd7fb('0x52')}]});}return null;})['then'](respondWithResult(_0x23b75f,null))['catch'](handleError(_0x23b75f,null));};exports[_0xd7fb('0x54')]=function(_0xfad0c2,_0x1f7021,_0x448247){var _0x5e1f41=[{'name':'priority','label':_0xd7fb('0x55'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x15f948='';return db[_0xd7fb('0x2b')][_0xd7fb('0x4d')]({'where':{'id':_0xfad0c2[_0xd7fb('0x43')]['id']},'attributes':['id',_0xd7fb('0x56'),_0xd7fb('0x57'),_0xd7fb('0x58'),_0xd7fb('0x59'),_0xd7fb('0x5a'),_0xd7fb('0x5b'),'token','tokenSecret']})['then'](handleEntityNotFound(_0x1f7021,null))[_0xd7fb('0x3e')](function(_0x519458){if(_0x519458){_0x15f948=_0x519458[_0xd7fb('0x56')];var _0x4d0b08=_0x15f948[_0xd7fb('0x5c')](-0x1);if(_0x4d0b08==='/'){_0x15f948=_0x15f948[_0xd7fb('0x5d')](0x0,_0x15f948['lastIndexOf'](_0x4d0b08));}var _0x243610={'method':_0xd7fb('0x5e'),'uri':util[_0xd7fb('0x5f')](_0xd7fb('0x60'),_0x15f948),'headers':{'Content-Type':'application/json','Accept':'application/json'},'json':!![]};if(_0x519458['authType']==='basic'){_0x243610[_0xd7fb('0x61')][_0xd7fb('0x62')]=util['format'](_0xd7fb('0x63'),new Buffer(util[_0xd7fb('0x5f')](_0xd7fb('0x64'),_0x519458[_0xd7fb('0x58')],_0x519458[_0xd7fb('0x59')]))['toString'](_0xd7fb('0x65')));}return rp(_0x243610)[_0xd7fb('0x3e')](function(_0x1d5b1c){return _0x5e1f41[_0xd7fb('0x66')](_[_0xd7fb('0x2a')](_0x1d5b1c['_embedded'][_0xd7fb('0x67')],function(_0x1db476){return{'id':_0x1db476[_0xd7fb('0x27')],'name':_0x1db476[_0xd7fb('0x27')],'type':_0x1db476[_0xd7fb('0x2e')],'active':_0x1db476['active'],'label':_0x1db476[_0xd7fb('0x68')],'custom':!![]};}));});}})[_0xd7fb('0x3e')](function(_0x2c42cf){return{'count':_0x2c42cf[_0xd7fb('0x36')],'rows':_0x2c42cf};})['then'](respondWithResult(_0x1f7021,null))[_0xd7fb('0x49')](function(_0x21cc90){var _0x5e7fa5=_0xfad0c2[_0xd7fb('0x31')][_0xd7fb('0x69')]?0x1f4:_0x21cc90[_0xd7fb('0x6a')]||0x1f4;logger[_0xd7fb('0x25')](_0xd7fb('0x6b'),_0xd7fb('0x54'),_0x5e7fa5,JSON['stringify'](_0x21cc90));delete _0x21cc90['name'];if(_0x5e7fa5===0x191){_0x5e7fa5=0x190;}_0x1f7021['status'](_0x5e7fa5)[_0xd7fb('0x28')](_0xfad0c2[_0xd7fb('0x31')]['test']?{'message':_0xd7fb('0x6c'),'statusCode':_0x21cc90[_0xd7fb('0x6a')]}:_0x21cc90);});};
\ No newline at end of file
index e085d39..3ae4498 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90cc=['define','DeskAccount','int_desk_accounts','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x3baaf2,_0x894e3d){var _0x50e8b0=function(_0x35dd6f){while(--_0x35dd6f){_0x3baaf2['push'](_0x3baaf2['shift']());}};_0x50e8b0(++_0x894e3d);}(_0x90cc,0x1b0));var _0xc90c=function(_0x40e405,_0x51e84e){_0x40e405=_0x40e405-0x0;var _0x3a519a=_0x90cc[_0x40e405];return _0x3a519a;};'use strict';var _=require('lodash');var util=require(_0xc90c('0x0'));var logger=require(_0xc90c('0x1'))(_0xc90c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc90c('0x3'));var fs=require('fs');var path=require(_0xc90c('0x4'));var rimraf=require(_0xc90c('0x5'));var config=require(_0xc90c('0x6'));var attributes=require(_0xc90c('0x7'));var integrations=require(_0xc90c('0x8'));module[_0xc90c('0x9')]=function(_0x184103,_0x460e80){return _0x184103[_0xc90c('0xa')](_0xc90c('0xb'),attributes,{'tableName':_0xc90c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf04f=['define','DeskAccount','api','bluebird','request-promise','path','../../config/environment','../../components/integrations/configuration','exports'];(function(_0x4e7f74,_0x41791a){var _0x4c7782=function(_0x3ff782){while(--_0x3ff782){_0x4e7f74['push'](_0x4e7f74['shift']());}};_0x4c7782(++_0x41791a);}(_0xf04f,0x65));var _0xff04=function(_0x1fa759,_0x4ecdce){_0x1fa759=_0x1fa759-0x0;var _0x2da9f4=_0xf04f[_0x1fa759];return _0x2da9f4;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xff04('0x0'));var moment=require('moment');var BPromise=require(_0xff04('0x1'));var rp=require(_0xff04('0x2'));var fs=require('fs');var path=require(_0xff04('0x3'));var rimraf=require('rimraf');var config=require(_0xff04('0x4'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xff04('0x5'));module[_0xff04('0x6')]=function(_0xc4ccf9,_0x22c7c7){return _0xc4ccf9[_0xff04('0x7')](_0xff04('0x8'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 118ddc4..e300002 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbebf=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','catch','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','include','map','model','debug','find','ShowDeskAccount','moment','bluebird','randomstring'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbebf,0x16f));var _0xfbeb=function(_0x36c868,_0x2e1dbf){_0x36c868=_0x36c868-0x0;var _0xe4b28c=_0xbebf[_0x36c868];return _0xe4b28c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfbeb('0x0'));var BPromise=require(_0xfbeb('0x1'));var rs=require(_0xfbeb('0x2'));var fs=require('fs');var Redis=require(_0xfbeb('0x3'));var db=require(_0xfbeb('0x4'))['db'];var utils=require(_0xfbeb('0x5'));var logger=require(_0xfbeb('0x6'))(_0xfbeb('0x7'));var config=require(_0xfbeb('0x8'));var jayson=require(_0xfbeb('0x9'));var client=jayson[_0xfbeb('0xa')][_0xfbeb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9ac62f,_0x5e549b,_0x241bd8){return new BPromise(function(_0x12f0c2,_0xff052b){return client[_0xfbeb('0xc')](_0x9ac62f,_0x241bd8)[_0xfbeb('0xd')](function(_0x59e9c0){logger[_0xfbeb('0xe')]('DeskAccount,\x20%s,\x20%s',_0x5e549b,'request\x20sent');logger['debug'](_0xfbeb('0xf'),_0x5e549b,_0xfbeb('0x10'),JSON[_0xfbeb('0x11')](_0x59e9c0));if(_0x59e9c0[_0xfbeb('0x12')]){if(_0x59e9c0[_0xfbeb('0x12')][_0xfbeb('0x13')]===0x1f4){logger[_0xfbeb('0x12')](_0xfbeb('0x14'),_0x5e549b,_0x59e9c0[_0xfbeb('0x12')][_0xfbeb('0x15')]);return _0xff052b(_0x59e9c0[_0xfbeb('0x12')][_0xfbeb('0x15')]);}logger[_0xfbeb('0x12')]('DeskAccount,\x20%s,\x20%s',_0x5e549b,_0x59e9c0[_0xfbeb('0x12')][_0xfbeb('0x15')]);return _0x12f0c2(_0x59e9c0[_0xfbeb('0x12')][_0xfbeb('0x15')]);}else{logger[_0xfbeb('0xe')]('DeskAccount,\x20%s,\x20%s',_0x5e549b,_0xfbeb('0x10'));_0x12f0c2(_0x59e9c0[_0xfbeb('0x16')][_0xfbeb('0x15')]);}})[_0xfbeb('0x17')](function(_0x5a3e7e){logger[_0xfbeb('0x12')](_0xfbeb('0x14'),_0x5e549b,_0x5a3e7e);_0xff052b(_0x5a3e7e);});});}exports[_0xfbeb('0x18')]=function(_0x343d60){var _0x19291a=this;return new Promise(function(_0x11369b,_0x1ddd54){return db[_0xfbeb('0x19')][_0xfbeb('0x1a')]({'raw':_0x343d60[_0xfbeb('0x1b')]?_0x343d60[_0xfbeb('0x1b')][_0xfbeb('0x1c')]===undefined?!![]:![]:!![],'where':_0x343d60[_0xfbeb('0x1b')]?_0x343d60[_0xfbeb('0x1b')][_0xfbeb('0x1d')]||null:null,'attributes':_0x343d60[_0xfbeb('0x1b')]?_0x343d60[_0xfbeb('0x1b')][_0xfbeb('0x1e')]||null:null,'limit':_0x343d60[_0xfbeb('0x1b')]?_0x343d60[_0xfbeb('0x1b')]['limit']||null:null,'include':_0x343d60[_0xfbeb('0x1b')]?_0x343d60[_0xfbeb('0x1b')][_0xfbeb('0x1f')]?_['map'](_0x343d60[_0xfbeb('0x1b')]['include'],function(_0x123df0){return{'model':db[_0x123df0['model']],'as':_0x123df0['as'],'attributes':_0x123df0['attributes'],'include':_0x123df0[_0xfbeb('0x1f')]?_[_0xfbeb('0x20')](_0x123df0[_0xfbeb('0x1f')],function(_0x313578){return{'model':db[_0x313578['model']],'as':_0x313578['as'],'attributes':_0x313578[_0xfbeb('0x1e')],'include':_0x313578['include']?_[_0xfbeb('0x20')](_0x313578[_0xfbeb('0x1f')],function(_0x5af526){return{'model':db[_0x5af526[_0xfbeb('0x21')]],'as':_0x5af526['as'],'attributes':_0x5af526[_0xfbeb('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x59c40c){logger[_0xfbeb('0xe')]('GetDeskAccount',_0x343d60);logger[_0xfbeb('0x22')](_0xfbeb('0x18'),_0x343d60,JSON['stringify'](_0x59c40c));_0x11369b(_0x59c40c);})['catch'](function(_0x50373b){logger[_0xfbeb('0x12')]('GetDeskAccount',_0x50373b[_0xfbeb('0x15')],_0x343d60);_0x1ddd54(_0x19291a['error'](0x1f4,_0x50373b[_0xfbeb('0x15')]));});});};exports['ShowDeskAccount']=function(_0x5c5180){var _0x5c5f9d=this;return new Promise(function(_0x4342e0,_0x570232){return db[_0xfbeb('0x19')][_0xfbeb('0x23')]({'raw':_0x5c5180[_0xfbeb('0x1b')]?_0x5c5180[_0xfbeb('0x1b')][_0xfbeb('0x1c')]===undefined?!![]:![]:!![],'where':_0x5c5180['options']?_0x5c5180['options'][_0xfbeb('0x1d')]||null:null,'attributes':_0x5c5180[_0xfbeb('0x1b')]?_0x5c5180[_0xfbeb('0x1b')][_0xfbeb('0x1e')]||null:null,'include':_0x5c5180[_0xfbeb('0x1b')]?_0x5c5180[_0xfbeb('0x1b')][_0xfbeb('0x1f')]?_[_0xfbeb('0x20')](_0x5c5180[_0xfbeb('0x1b')]['include'],function(_0x4551e6){return{'model':db[_0x4551e6['model']],'as':_0x4551e6['as'],'attributes':_0x4551e6[_0xfbeb('0x1e')],'include':_0x4551e6[_0xfbeb('0x1f')]?_[_0xfbeb('0x20')](_0x4551e6[_0xfbeb('0x1f')],function(_0x5693dc){return{'model':db[_0x5693dc[_0xfbeb('0x21')]],'as':_0x5693dc['as'],'attributes':_0x5693dc[_0xfbeb('0x1e')],'include':_0x5693dc['include']?_[_0xfbeb('0x20')](_0x5693dc[_0xfbeb('0x1f')],function(_0x42cfd5){return{'model':db[_0x42cfd5[_0xfbeb('0x21')]],'as':_0x42cfd5['as'],'attributes':_0x42cfd5[_0xfbeb('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfbeb('0xd')](function(_0x3f30f4){logger[_0xfbeb('0xe')](_0xfbeb('0x24'),_0x5c5180);logger[_0xfbeb('0x22')](_0xfbeb('0x24'),_0x5c5180,JSON[_0xfbeb('0x11')](_0x3f30f4));_0x4342e0(_0x3f30f4);})[_0xfbeb('0x17')](function(_0x37e338){logger[_0xfbeb('0x12')]('ShowDeskAccount',_0x37e338[_0xfbeb('0x15')],_0x5c5180);_0x570232(_0x5c5f9d[_0xfbeb('0x12')](0x1f4,_0x37e338[_0xfbeb('0x15')]));});});};
\ No newline at end of file
+var _0x62b0=['options','attributes','limit','include','map','model','stringify','find','raw','where','ShowDeskAccount','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','GetDeskAccount','DeskAccount','findAll'];(function(_0xd3b0ac,_0x2f5065){var _0x3d773e=function(_0x2e10d1){while(--_0x2e10d1){_0xd3b0ac['push'](_0xd3b0ac['shift']());}};_0x3d773e(++_0x2f5065);}(_0x62b0,0x18c));var _0x062b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x62b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x062b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x062b('0x1'));var fs=require('fs');var Redis=require(_0x062b('0x2'));var db=require(_0x062b('0x3'))['db'];var utils=require(_0x062b('0x4'));var logger=require(_0x062b('0x5'))(_0x062b('0x6'));var config=require(_0x062b('0x7'));var jayson=require(_0x062b('0x8'));var client=jayson[_0x062b('0x9')][_0x062b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e0c6f,_0x4c1afa,_0x182e28){return new BPromise(function(_0x1fb4bf,_0x39205c){return client[_0x062b('0xb')](_0x5e0c6f,_0x182e28)[_0x062b('0xc')](function(_0x54a1af){logger['info']('DeskAccount,\x20%s,\x20%s',_0x4c1afa,_0x062b('0xd'));logger[_0x062b('0xe')](_0x062b('0xf'),_0x4c1afa,_0x062b('0xd'),JSON['stringify'](_0x54a1af));if(_0x54a1af[_0x062b('0x10')]){if(_0x54a1af[_0x062b('0x10')]['code']===0x1f4){logger[_0x062b('0x10')]('DeskAccount,\x20%s,\x20%s',_0x4c1afa,_0x54a1af['error'][_0x062b('0x11')]);return _0x39205c(_0x54a1af[_0x062b('0x10')]['message']);}logger[_0x062b('0x10')]('DeskAccount,\x20%s,\x20%s',_0x4c1afa,_0x54a1af[_0x062b('0x10')][_0x062b('0x11')]);return _0x1fb4bf(_0x54a1af['error'][_0x062b('0x11')]);}else{logger[_0x062b('0x12')]('DeskAccount,\x20%s,\x20%s',_0x4c1afa,'request\x20sent');_0x1fb4bf(_0x54a1af[_0x062b('0x13')][_0x062b('0x11')]);}})[_0x062b('0x14')](function(_0x63558a){logger[_0x062b('0x10')]('DeskAccount,\x20%s,\x20%s',_0x4c1afa,_0x63558a);_0x39205c(_0x63558a);});});}exports[_0x062b('0x15')]=function(_0x24d14e){var _0x9b9111=this;return new Promise(function(_0x4f53fb,_0x1c07c2){return db[_0x062b('0x16')][_0x062b('0x17')]({'raw':_0x24d14e[_0x062b('0x18')]?_0x24d14e[_0x062b('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x24d14e[_0x062b('0x18')]?_0x24d14e['options']['where']||null:null,'attributes':_0x24d14e[_0x062b('0x18')]?_0x24d14e[_0x062b('0x18')][_0x062b('0x19')]||null:null,'limit':_0x24d14e[_0x062b('0x18')]?_0x24d14e[_0x062b('0x18')][_0x062b('0x1a')]||null:null,'include':_0x24d14e[_0x062b('0x18')]?_0x24d14e[_0x062b('0x18')]['include']?_['map'](_0x24d14e[_0x062b('0x18')][_0x062b('0x1b')],function(_0x449dcd){return{'model':db[_0x449dcd['model']],'as':_0x449dcd['as'],'attributes':_0x449dcd[_0x062b('0x19')],'include':_0x449dcd[_0x062b('0x1b')]?_[_0x062b('0x1c')](_0x449dcd[_0x062b('0x1b')],function(_0x5b89f8){return{'model':db[_0x5b89f8[_0x062b('0x1d')]],'as':_0x5b89f8['as'],'attributes':_0x5b89f8[_0x062b('0x19')],'include':_0x5b89f8[_0x062b('0x1b')]?_[_0x062b('0x1c')](_0x5b89f8[_0x062b('0x1b')],function(_0x11fef3){return{'model':db[_0x11fef3[_0x062b('0x1d')]],'as':_0x11fef3['as'],'attributes':_0x11fef3[_0x062b('0x19')]};}):[]};}):[]};}):[]:[]})[_0x062b('0xc')](function(_0x205062){logger[_0x062b('0x12')](_0x062b('0x15'),_0x24d14e);logger[_0x062b('0xe')](_0x062b('0x15'),_0x24d14e,JSON[_0x062b('0x1e')](_0x205062));_0x4f53fb(_0x205062);})[_0x062b('0x14')](function(_0x285c7d){logger[_0x062b('0x10')](_0x062b('0x15'),_0x285c7d['message'],_0x24d14e);_0x1c07c2(_0x9b9111[_0x062b('0x10')](0x1f4,_0x285c7d[_0x062b('0x11')]));});});};exports['ShowDeskAccount']=function(_0x53dbf6){var _0x4ebd48=this;return new Promise(function(_0x1ddc12,_0x3a2ce2){return db[_0x062b('0x16')][_0x062b('0x1f')]({'raw':_0x53dbf6[_0x062b('0x18')]?_0x53dbf6[_0x062b('0x18')][_0x062b('0x20')]===undefined?!![]:![]:!![],'where':_0x53dbf6[_0x062b('0x18')]?_0x53dbf6[_0x062b('0x18')][_0x062b('0x21')]||null:null,'attributes':_0x53dbf6[_0x062b('0x18')]?_0x53dbf6[_0x062b('0x18')][_0x062b('0x19')]||null:null,'include':_0x53dbf6[_0x062b('0x18')]?_0x53dbf6[_0x062b('0x18')]['include']?_[_0x062b('0x1c')](_0x53dbf6[_0x062b('0x18')][_0x062b('0x1b')],function(_0xeb8374){return{'model':db[_0xeb8374[_0x062b('0x1d')]],'as':_0xeb8374['as'],'attributes':_0xeb8374['attributes'],'include':_0xeb8374[_0x062b('0x1b')]?_[_0x062b('0x1c')](_0xeb8374['include'],function(_0x134ef6){return{'model':db[_0x134ef6[_0x062b('0x1d')]],'as':_0x134ef6['as'],'attributes':_0x134ef6['attributes'],'include':_0x134ef6[_0x062b('0x1b')]?_[_0x062b('0x1c')](_0x134ef6[_0x062b('0x1b')],function(_0x442c0f){return{'model':db[_0x442c0f[_0x062b('0x1d')]],'as':_0x442c0f['as'],'attributes':_0x442c0f[_0x062b('0x19')]};}):[]};}):[]};}):[]:[]})[_0x062b('0xc')](function(_0x20ba7b){logger[_0x062b('0x12')]('ShowDeskAccount',_0x53dbf6);logger[_0x062b('0xe')](_0x062b('0x22'),_0x53dbf6,JSON[_0x062b('0x1e')](_0x20ba7b));_0x1ddc12(_0x20ba7b);})['catch'](function(_0x58e7f0){logger[_0x062b('0x10')]('ShowDeskAccount',_0x58e7f0[_0x062b('0x11')],_0x53dbf6);_0x3a2ce2(_0x4ebd48[_0x062b('0x10')](0x1f4,_0x58e7f0[_0x062b('0x11')]));});});};
\ No newline at end of file
index 872da8b..c61e9a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x39cc0f,_0xe9a8f9){var _0xee6a5a=function(_0x2c2588){while(--_0x2c2588){_0x39cc0f['push'](_0x39cc0f['shift']());}};_0xee6a5a(++_0xe9a8f9);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
+var _0x9957=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields'];(function(_0x526de6,_0x1e5c9c){var _0x321e02=function(_0x2f760d){while(--_0x2f760d){_0x526de6['push'](_0x526de6['shift']());}};_0x321e02(++_0x1e5c9c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/fields',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/descriptions',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller['destroy']);module[_0x7995('0x1a')]=router;
\ No newline at end of file
index 38a778e..e6772fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x154b=['exports','sequelize'];(function(_0x33ee4d,_0x14c274){var _0x1a2de6=function(_0xda37){while(--_0xda37){_0x33ee4d['push'](_0x33ee4d['shift']());}};_0x1a2de6(++_0x14c274);}(_0x154b,0x175));var _0xb154=function(_0x4fc96b,_0x31f403){_0x4fc96b=_0x4fc96b-0x0;var _0x1ff6f7=_0x154b[_0x4fc96b];return _0x1ff6f7;};'use strict';var Sequelize=require(_0xb154('0x0'));module[_0xb154('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2ea7=['sequelize','STRING'];(function(_0x2d2258,_0x2ce510){var _0x18e155=function(_0x11949e){while(--_0x11949e){_0x2d2258['push'](_0x2d2258['shift']());}};_0x18e155(++_0x2ce510);}(_0x2ea7,0x6c));var _0x72ea=function(_0x4c8a8f,_0x997ef){_0x4c8a8f=_0x4c8a8f-0x0;var _0x404500=_0x2ea7[_0x4c8a8f];return _0x404500;};'use strict';var Sequelize=require(_0x72ea('0x0'));module['exports']={'name':{'type':Sequelize[_0x72ea('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 63f2f9d..b36ecd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc841=['index','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','destroy','findOne','DeskField','getFields','nolimit','pick','getDescriptions','getTags','Tag','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','undefined','limit','count','status','save','update','then','end','error','stack','name'];(function(_0x545ddc,_0x2a253a){var _0x20661a=function(_0x3f1704){while(--_0x3f1704){_0x545ddc['push'](_0x545ddc['shift']());}};_0x20661a(++_0x2a253a);}(_0xc841,0x176));var _0x1c84=function(_0x37e026,_0x160bd5){_0x37e026=_0x37e026-0x0;var _0x332a34=_0xc841[_0x37e026];return _0x332a34;};'use strict';var emlformat=require(_0x1c84('0x0'));var rimraf=require(_0x1c84('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1c84('0x2'));var rp=require(_0x1c84('0x3'));var moment=require(_0x1c84('0x4'));var BPromise=require(_0x1c84('0x5'));var Mustache=require(_0x1c84('0x6'));var util=require(_0x1c84('0x7'));var path=require(_0x1c84('0x8'));var sox=require(_0x1c84('0x9'));var csv=require(_0x1c84('0xa'));var ejs=require(_0x1c84('0xb'));var fs=require('fs');var fs_extra=require(_0x1c84('0xc'));var _=require(_0x1c84('0xd'));var squel=require(_0x1c84('0xe'));var crypto=require(_0x1c84('0xf'));var jsforce=require(_0x1c84('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1c84('0x11'));var Papa=require('papaparse');var Redis=require(_0x1c84('0x12'));var authService=require(_0x1c84('0x13'));var qs=require(_0x1c84('0x14'));var as=require(_0x1c84('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1c84('0x16'))(_0x1c84('0x17'));var utils=require(_0x1c84('0x18'));var config=require(_0x1c84('0x19'));var licenseUtil=require(_0x1c84('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x383389,_0x545154){_0x545154=_0x545154||0xcc;return function(_0x4ff91d){if(_0x4ff91d){return _0x383389[_0x1c84('0x1b')](_0x545154);}return _0x383389['status'](_0x545154)['end']();};}function respondWithResult(_0x3165d3,_0x143e20){_0x143e20=_0x143e20||0xc8;return function(_0x2ad77d){if(_0x2ad77d){return _0x3165d3['status'](_0x143e20)[_0x1c84('0x1c')](_0x2ad77d);}};}function respondWithFilteredResult(_0x3dc868,_0x3fa232){return function(_0x1bf750){if(_0x1bf750){var _0x4a78db=typeof _0x3fa232[_0x1c84('0x1d')]===_0x1c84('0x1e')&&typeof _0x3fa232[_0x1c84('0x1f')]===_0x1c84('0x1e');var _0x2b1b79=_0x1bf750[_0x1c84('0x20')];var _0x10f44b=_0x4a78db?0x0:_0x3fa232[_0x1c84('0x1d')];var _0x479481=_0x4a78db?_0x1bf750[_0x1c84('0x20')]:_0x3fa232[_0x1c84('0x1d')]+_0x3fa232[_0x1c84('0x1f')];var _0x46414c;if(_0x479481>=_0x2b1b79){_0x479481=_0x2b1b79;_0x46414c=0xc8;}else{_0x46414c=0xce;}_0x3dc868[_0x1c84('0x21')](_0x46414c);return _0x3dc868['set']('Content-Range',_0x10f44b+'-'+_0x479481+'/'+_0x2b1b79)[_0x1c84('0x1c')](_0x1bf750);}return null;};}function patchUpdates(_0x41cd97){return function(_0x3960f8){try{jsonpatch['apply'](_0x3960f8,_0x41cd97,!![]);}catch(_0x3093f9){return BPromise['reject'](_0x3093f9);}return _0x3960f8[_0x1c84('0x22')]();};}function saveUpdates(_0x3ffcdc,_0x4f4d3a){return function(_0x48f7d7){if(_0x48f7d7){return _0x48f7d7[_0x1c84('0x23')](_0x3ffcdc)['then'](function(_0x353b27){return _0x353b27;});}return null;};}function removeEntity(_0x211b74,_0x36ee54){return function(_0x3800fe){if(_0x3800fe){return _0x3800fe['destroy']()[_0x1c84('0x24')](function(){_0x211b74[_0x1c84('0x21')](0xcc)[_0x1c84('0x25')]();});}};}function handleEntityNotFound(_0x160870,_0x5017e2){return function(_0x5d988a){if(!_0x5d988a){_0x160870[_0x1c84('0x1b')](0x194);}return _0x5d988a;};}function handleError(_0x2027f2,_0x38e137){_0x38e137=_0x38e137||0x1f4;return function(_0x1cc7d8){logger[_0x1c84('0x26')](_0x1cc7d8[_0x1c84('0x27')]);if(_0x1cc7d8['name']){delete _0x1cc7d8[_0x1c84('0x28')];}_0x2027f2['status'](_0x38e137)['send'](_0x1cc7d8);};}exports[_0x1c84('0x29')]=function(_0x479875,_0x514a65){var _0x4cc4ac={},_0x970637={},_0x25bd7a={'count':0x0,'rows':[]};var _0x3dd3e5=_[_0x1c84('0x2a')](db[_0x1c84('0x2b')][_0x1c84('0x2c')],function(_0x243252){return{'name':_0x243252[_0x1c84('0x2d')],'type':_0x243252[_0x1c84('0x2e')][_0x1c84('0x2f')]};});_0x970637[_0x1c84('0x30')]=_[_0x1c84('0x2a')](_0x3dd3e5,'name');_0x970637[_0x1c84('0x31')]=_[_0x1c84('0x32')](_0x479875[_0x1c84('0x31')]);_0x970637[_0x1c84('0x33')]=_['intersection'](_0x970637['model'],_0x970637[_0x1c84('0x31')]);_0x4cc4ac[_0x1c84('0x34')]=_[_0x1c84('0x35')](_0x970637['model'],qs[_0x1c84('0x36')](_0x479875['query']['fields']));_0x4cc4ac['attributes']=_0x4cc4ac[_0x1c84('0x34')][_0x1c84('0x37')]?_0x4cc4ac[_0x1c84('0x34')]:_0x970637[_0x1c84('0x30')];if(!_0x479875[_0x1c84('0x31')][_0x1c84('0x38')]('nolimit')){_0x4cc4ac[_0x1c84('0x1f')]=qs[_0x1c84('0x1f')](_0x479875['query']['limit']);_0x4cc4ac['offset']=qs[_0x1c84('0x1d')](_0x479875[_0x1c84('0x31')][_0x1c84('0x1d')]);}_0x4cc4ac[_0x1c84('0x39')]=qs[_0x1c84('0x3a')](_0x479875[_0x1c84('0x31')][_0x1c84('0x3a')]);_0x4cc4ac[_0x1c84('0x3b')]=qs['filters'](_['pick'](_0x479875[_0x1c84('0x31')],_0x970637[_0x1c84('0x33')]),_0x3dd3e5);if(_0x479875[_0x1c84('0x31')][_0x1c84('0x3c')]){_0x4cc4ac[_0x1c84('0x3b')]=_[_0x1c84('0x3d')](_0x4cc4ac['where'],{'$or':_['map'](_0x3dd3e5,function(_0x24ac41){if(_0x24ac41[_0x1c84('0x2e')]!==_0x1c84('0x3e')){var _0x5a59e4={};_0x5a59e4[_0x24ac41[_0x1c84('0x28')]]={'$like':'%'+_0x479875[_0x1c84('0x31')][_0x1c84('0x3c')]+'%'};return _0x5a59e4;}})});}_0x4cc4ac=_[_0x1c84('0x3d')]({},_0x4cc4ac,_0x479875['options']);var _0x18dd3a={'where':_0x4cc4ac[_0x1c84('0x3b')]};return db[_0x1c84('0x2b')]['count'](_0x18dd3a)[_0x1c84('0x24')](function(_0x584dd9){_0x25bd7a[_0x1c84('0x20')]=_0x584dd9;if(_0x479875[_0x1c84('0x31')][_0x1c84('0x3f')]){_0x4cc4ac[_0x1c84('0x40')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x1c84('0x41')](_0x4cc4ac);})[_0x1c84('0x24')](function(_0x1070dd){_0x25bd7a[_0x1c84('0x42')]=_0x1070dd;return _0x25bd7a;})['then'](respondWithFilteredResult(_0x514a65,_0x4cc4ac))[_0x1c84('0x43')](handleError(_0x514a65,null));};exports[_0x1c84('0x44')]=function(_0x267b00,_0x57fee9){var _0x59ea68={'raw':![],'where':{'id':_0x267b00['params']['id']}},_0x380ea8={};_0x380ea8['model']=_[_0x1c84('0x32')](db[_0x1c84('0x2b')][_0x1c84('0x2c')]);_0x380ea8[_0x1c84('0x31')]=_['keys'](_0x267b00[_0x1c84('0x31')]);_0x380ea8[_0x1c84('0x33')]=_[_0x1c84('0x35')](_0x380ea8[_0x1c84('0x30')],_0x380ea8[_0x1c84('0x31')]);_0x59ea68['attributes']=_['intersection'](_0x380ea8[_0x1c84('0x30')],qs['fields'](_0x267b00[_0x1c84('0x31')][_0x1c84('0x36')]));_0x59ea68[_0x1c84('0x34')]=_0x59ea68[_0x1c84('0x34')]['length']?_0x59ea68[_0x1c84('0x34')]:_0x380ea8[_0x1c84('0x30')];if(_0x267b00[_0x1c84('0x31')][_0x1c84('0x3f')]){_0x59ea68[_0x1c84('0x40')]=[{'all':!![]}];}_0x59ea68=_['merge']({},_0x59ea68,_0x267b00[_0x1c84('0x45')]);return db['DeskConfiguration'][_0x1c84('0x46')](_0x59ea68)[_0x1c84('0x24')](handleEntityNotFound(_0x57fee9,null))[_0x1c84('0x24')](respondWithResult(_0x57fee9,null))[_0x1c84('0x43')](handleError(_0x57fee9,null));};exports[_0x1c84('0x47')]=function(_0x388104,_0x5a691a){return db[_0x1c84('0x2b')]['create'](_0x388104[_0x1c84('0x48')],{})[_0x1c84('0x24')](respondWithResult(_0x5a691a,0xc9))[_0x1c84('0x43')](handleError(_0x5a691a,null));};exports['update']=function(_0xded3a,_0x2f462b){if(_0xded3a['body']['id']){delete _0xded3a['body']['id'];}return db[_0x1c84('0x2b')][_0x1c84('0x46')]({'where':{'id':_0xded3a[_0x1c84('0x49')]['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0x2f462b,null))[_0x1c84('0x24')](saveUpdates(_0xded3a[_0x1c84('0x48')],null))[_0x1c84('0x24')](respondWithResult(_0x2f462b,null))[_0x1c84('0x43')](handleError(_0x2f462b,null));};exports[_0x1c84('0x4a')]=function(_0x234b2e,_0x4106a5){return db['DeskConfiguration'][_0x1c84('0x46')]({'where':{'id':_0x234b2e[_0x1c84('0x49')]['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0x4106a5,null))[_0x1c84('0x24')](removeEntity(_0x4106a5,null))['catch'](handleError(_0x4106a5,null));};exports['getFields']=function(_0x4e9de1,_0x140a10,_0x531bf2){var _0x211fcf={};var _0x4fa67b={};var _0x2890d1;var _0x211d22;return db[_0x1c84('0x2b')][_0x1c84('0x4b')]({'where':{'id':_0x4e9de1[_0x1c84('0x49')]['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0x140a10,null))[_0x1c84('0x24')](function(_0x3a5328){if(_0x3a5328){_0x2890d1=_0x3a5328;_0x4fa67b['model']=_[_0x1c84('0x32')](db[_0x1c84('0x4c')]['rawAttributes']);_0x4fa67b[_0x1c84('0x31')]=_[_0x1c84('0x32')](_0x4e9de1[_0x1c84('0x31')]);_0x4fa67b[_0x1c84('0x33')]=_['intersection'](_0x4fa67b[_0x1c84('0x30')],_0x4fa67b['query']);_0x211fcf[_0x1c84('0x34')]=_[_0x1c84('0x35')](_0x4fa67b[_0x1c84('0x30')],qs['fields'](_0x4e9de1['query'][_0x1c84('0x36')]));_0x211fcf[_0x1c84('0x34')]=_0x211fcf[_0x1c84('0x34')][_0x1c84('0x37')]?_0x211fcf[_0x1c84('0x34')]:_0x4fa67b[_0x1c84('0x30')];_0x211fcf['order']=qs[_0x1c84('0x3a')](_0x4e9de1[_0x1c84('0x31')][_0x1c84('0x3a')]);_0x211fcf[_0x1c84('0x3b')]=qs[_0x1c84('0x33')](_['pick'](_0x4e9de1[_0x1c84('0x31')],_0x4fa67b['filters']));if(_0x4e9de1[_0x1c84('0x31')]['filter']){_0x211fcf['where']=_['merge'](_0x211fcf[_0x1c84('0x3b')],{'$or':_[_0x1c84('0x2a')](_0x211fcf[_0x1c84('0x34')],function(_0x560b0d){var _0x44bbf5={};_0x44bbf5[_0x560b0d]={'$like':'%'+_0x4e9de1[_0x1c84('0x31')][_0x1c84('0x3c')]+'%'};return _0x44bbf5;})});}_0x211fcf=_['merge']({},_0x211fcf,_0x4e9de1[_0x1c84('0x45')]);return _0x2890d1[_0x1c84('0x4d')](_0x211fcf);}})[_0x1c84('0x24')](function(_0x46c88b){if(_0x46c88b){_0x211d22=_0x46c88b[_0x1c84('0x37')];if(!_0x4e9de1[_0x1c84('0x31')][_0x1c84('0x38')](_0x1c84('0x4e'))){_0x211fcf[_0x1c84('0x1f')]=qs['limit'](_0x4e9de1['query'][_0x1c84('0x1f')]);_0x211fcf[_0x1c84('0x1d')]=qs['offset'](_0x4e9de1['query'][_0x1c84('0x1d')]);}return _0x2890d1[_0x1c84('0x4d')](_0x211fcf);}})[_0x1c84('0x24')](function(_0x1b6dce){if(_0x1b6dce){return _0x1b6dce?{'count':_0x211d22,'rows':_0x1b6dce}:null;}})[_0x1c84('0x24')](respondWithResult(_0x140a10,null))[_0x1c84('0x43')](handleError(_0x140a10,null));};exports['getSubjects']=function(_0x2c5470,_0x328c55,_0x299d98){var _0x8e4dd5={};var _0x54d5f9={};var _0x1b9b3e;var _0x46bc05;return db['DeskConfiguration']['findOne']({'where':{'id':_0x2c5470[_0x1c84('0x49')]['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0x328c55,null))[_0x1c84('0x24')](function(_0x462940){if(_0x462940){_0x1b9b3e=_0x462940;_0x54d5f9[_0x1c84('0x30')]=_[_0x1c84('0x32')](db[_0x1c84('0x4c')][_0x1c84('0x2c')]);_0x54d5f9[_0x1c84('0x31')]=_[_0x1c84('0x32')](_0x2c5470[_0x1c84('0x31')]);_0x54d5f9[_0x1c84('0x33')]=_['intersection'](_0x54d5f9[_0x1c84('0x30')],_0x54d5f9[_0x1c84('0x31')]);_0x8e4dd5[_0x1c84('0x34')]=_['intersection'](_0x54d5f9['model'],qs['fields'](_0x2c5470[_0x1c84('0x31')][_0x1c84('0x36')]));_0x8e4dd5['attributes']=_0x8e4dd5[_0x1c84('0x34')]['length']?_0x8e4dd5['attributes']:_0x54d5f9[_0x1c84('0x30')];_0x8e4dd5['order']=qs[_0x1c84('0x3a')](_0x2c5470[_0x1c84('0x31')][_0x1c84('0x3a')]);_0x8e4dd5[_0x1c84('0x3b')]=qs['filters'](_[_0x1c84('0x4f')](_0x2c5470['query'],_0x54d5f9[_0x1c84('0x33')]));if(_0x2c5470[_0x1c84('0x31')][_0x1c84('0x3c')]){_0x8e4dd5[_0x1c84('0x3b')]=_[_0x1c84('0x3d')](_0x8e4dd5[_0x1c84('0x3b')],{'$or':_['map'](_0x8e4dd5[_0x1c84('0x34')],function(_0x13da30){var _0x2279c7={};_0x2279c7[_0x13da30]={'$like':'%'+_0x2c5470['query'][_0x1c84('0x3c')]+'%'};return _0x2279c7;})});}_0x8e4dd5=_[_0x1c84('0x3d')]({},_0x8e4dd5,_0x2c5470[_0x1c84('0x45')]);return _0x1b9b3e['getSubjects'](_0x8e4dd5);}})['then'](function(_0x55be81){if(_0x55be81){_0x46bc05=_0x55be81[_0x1c84('0x37')];if(!_0x2c5470[_0x1c84('0x31')]['hasOwnProperty'](_0x1c84('0x4e'))){_0x8e4dd5[_0x1c84('0x1f')]=qs[_0x1c84('0x1f')](_0x2c5470[_0x1c84('0x31')][_0x1c84('0x1f')]);_0x8e4dd5[_0x1c84('0x1d')]=qs[_0x1c84('0x1d')](_0x2c5470['query'][_0x1c84('0x1d')]);}return _0x1b9b3e['getSubjects'](_0x8e4dd5);}})[_0x1c84('0x24')](function(_0x1c4ed4){if(_0x1c4ed4){return _0x1c4ed4?{'count':_0x46bc05,'rows':_0x1c4ed4}:null;}})['then'](respondWithResult(_0x328c55,null))[_0x1c84('0x43')](handleError(_0x328c55,null));};exports[_0x1c84('0x50')]=function(_0xa67657,_0xd211df,_0x2a6c53){var _0x14d568={};var _0x45867b={};var _0x411178;var _0x33d142;return db[_0x1c84('0x2b')][_0x1c84('0x4b')]({'where':{'id':_0xa67657['params']['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0xd211df,null))[_0x1c84('0x24')](function(_0x549bd5){if(_0x549bd5){_0x411178=_0x549bd5;_0x45867b['model']=_['keys'](db[_0x1c84('0x4c')][_0x1c84('0x2c')]);_0x45867b['query']=_[_0x1c84('0x32')](_0xa67657[_0x1c84('0x31')]);_0x45867b[_0x1c84('0x33')]=_[_0x1c84('0x35')](_0x45867b['model'],_0x45867b[_0x1c84('0x31')]);_0x14d568[_0x1c84('0x34')]=_['intersection'](_0x45867b[_0x1c84('0x30')],qs[_0x1c84('0x36')](_0xa67657['query']['fields']));_0x14d568[_0x1c84('0x34')]=_0x14d568[_0x1c84('0x34')][_0x1c84('0x37')]?_0x14d568[_0x1c84('0x34')]:_0x45867b[_0x1c84('0x30')];_0x14d568[_0x1c84('0x39')]=qs[_0x1c84('0x3a')](_0xa67657['query'][_0x1c84('0x3a')]);_0x14d568[_0x1c84('0x3b')]=qs[_0x1c84('0x33')](_[_0x1c84('0x4f')](_0xa67657[_0x1c84('0x31')],_0x45867b[_0x1c84('0x33')]));if(_0xa67657[_0x1c84('0x31')]['filter']){_0x14d568[_0x1c84('0x3b')]=_[_0x1c84('0x3d')](_0x14d568[_0x1c84('0x3b')],{'$or':_[_0x1c84('0x2a')](_0x14d568[_0x1c84('0x34')],function(_0x184ac1){var _0x4d40d5={};_0x4d40d5[_0x184ac1]={'$like':'%'+_0xa67657[_0x1c84('0x31')]['filter']+'%'};return _0x4d40d5;})});}_0x14d568=_[_0x1c84('0x3d')]({},_0x14d568,_0xa67657['options']);return _0x411178[_0x1c84('0x50')](_0x14d568);}})[_0x1c84('0x24')](function(_0xe4d061){if(_0xe4d061){_0x33d142=_0xe4d061[_0x1c84('0x37')];if(!_0xa67657[_0x1c84('0x31')]['hasOwnProperty'](_0x1c84('0x4e'))){_0x14d568[_0x1c84('0x1f')]=qs[_0x1c84('0x1f')](_0xa67657[_0x1c84('0x31')]['limit']);_0x14d568[_0x1c84('0x1d')]=qs[_0x1c84('0x1d')](_0xa67657['query']['offset']);}return _0x411178[_0x1c84('0x50')](_0x14d568);}})[_0x1c84('0x24')](function(_0x26bfd1){if(_0x26bfd1){return _0x26bfd1?{'count':_0x33d142,'rows':_0x26bfd1}:null;}})[_0x1c84('0x24')](respondWithResult(_0xd211df,null))[_0x1c84('0x43')](handleError(_0xd211df,null));};exports[_0x1c84('0x51')]=function(_0x465d91,_0x875123,_0x552955){var _0x33814b={};var _0x4c50ce={};var _0x1fcf91;var _0x4c195e;return db[_0x1c84('0x2b')][_0x1c84('0x4b')]({'where':{'id':_0x465d91[_0x1c84('0x49')]['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0x875123,null))['then'](function(_0x223d7b){if(_0x223d7b){_0x1fcf91=_0x223d7b;_0x4c50ce[_0x1c84('0x30')]=_[_0x1c84('0x32')](db[_0x1c84('0x52')][_0x1c84('0x2c')]);_0x4c50ce[_0x1c84('0x31')]=_[_0x1c84('0x32')](_0x465d91[_0x1c84('0x31')]);_0x4c50ce['filters']=_[_0x1c84('0x35')](_0x4c50ce[_0x1c84('0x30')],_0x4c50ce[_0x1c84('0x31')]);_0x33814b[_0x1c84('0x34')]=_[_0x1c84('0x35')](_0x4c50ce['model'],qs['fields'](_0x465d91[_0x1c84('0x31')][_0x1c84('0x36')]));_0x33814b['attributes']=_0x33814b['attributes'][_0x1c84('0x37')]?_0x33814b[_0x1c84('0x34')]:_0x4c50ce['model'];_0x33814b[_0x1c84('0x39')]=qs[_0x1c84('0x3a')](_0x465d91[_0x1c84('0x31')]['sort']);_0x33814b[_0x1c84('0x3b')]=qs['filters'](_['pick'](_0x465d91[_0x1c84('0x31')],_0x4c50ce[_0x1c84('0x33')]));if(_0x465d91[_0x1c84('0x31')][_0x1c84('0x3c')]){_0x33814b[_0x1c84('0x3b')]=_['merge'](_0x33814b[_0x1c84('0x3b')],{'$or':_['map'](_0x33814b[_0x1c84('0x34')],function(_0xaa97b8){var _0x4a6cb2={};_0x4a6cb2[_0xaa97b8]={'$like':'%'+_0x465d91[_0x1c84('0x31')][_0x1c84('0x3c')]+'%'};return _0x4a6cb2;})});}_0x33814b=_[_0x1c84('0x3d')]({},_0x33814b,_0x465d91['options']);return _0x1fcf91['getTags'](_0x33814b);}})[_0x1c84('0x24')](function(_0x53eeef){if(_0x53eeef){_0x4c195e=_0x53eeef[_0x1c84('0x37')];if(!_0x465d91[_0x1c84('0x31')][_0x1c84('0x38')](_0x1c84('0x4e'))){_0x33814b['limit']=qs[_0x1c84('0x1f')](_0x465d91[_0x1c84('0x31')][_0x1c84('0x1f')]);_0x33814b[_0x1c84('0x1d')]=qs['offset'](_0x465d91[_0x1c84('0x31')]['offset']);}return _0x1fcf91['getTags'](_0x33814b);}})['then'](function(_0x3c499c){if(_0x3c499c){return _0x3c499c?{'count':_0x4c195e,'rows':_0x3c499c}:null;}})['then'](respondWithResult(_0x875123,null))['catch'](handleError(_0x875123,null));};exports['setTags']=function(_0x1c4a9f,_0x5565cd,_0x37ee2f){if(_0x1c4a9f[_0x1c84('0x48')]['id']){delete _0x1c4a9f[_0x1c84('0x48')]['id'];}return db['DeskConfiguration'][_0x1c84('0x4b')]({'where':{'id':_0x1c4a9f['params']['id']}})[_0x1c84('0x24')](handleEntityNotFound(_0x5565cd,null))[_0x1c84('0x24')](function(_0x1d5774){if(_0x1d5774){return _0x1d5774['setTags'](_0x1c4a9f[_0x1c84('0x48')]['ids']||[]);}return null;})[_0x1c84('0x24')](respondWithResult(_0x5565cd,null))[_0x1c84('0x43')](handleError(_0x5565cd,null));};
\ No newline at end of file
+var _0x246c=['show','params','include','find','create','body','getFields','findOne','DeskField','filter','getSubjects','getDescriptions','getTags','Tag','setTags','ids','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','stack','name','send','index','DeskConfiguration','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','count','includeAll','catch'];(function(_0x509dbb,_0x224693){var _0x682888=function(_0x3c0c27){while(--_0x3c0c27){_0x509dbb['push'](_0x509dbb['shift']());}};_0x682888(++_0x224693);}(_0x246c,0xbc));var _0xc246=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x246c[_0x487b0c];return _0x1adbdc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc246('0x0'));var jsonpatch=require(_0xc246('0x1'));var rp=require('request-promise');var moment=require(_0xc246('0x2'));var BPromise=require(_0xc246('0x3'));var Mustache=require(_0xc246('0x4'));var util=require(_0xc246('0x5'));var path=require(_0xc246('0x6'));var sox=require('sox');var csv=require(_0xc246('0x7'));var ejs=require(_0xc246('0x8'));var fs=require('fs');var fs_extra=require(_0xc246('0x9'));var _=require('lodash');var squel=require(_0xc246('0xa'));var crypto=require(_0xc246('0xb'));var jsforce=require(_0xc246('0xc'));var deskjs=require(_0xc246('0xd'));var toCsv=require(_0xc246('0x7'));var querystring=require(_0xc246('0xe'));var Papa=require(_0xc246('0xf'));var Redis=require('ioredis');var authService=require(_0xc246('0x10'));var qs=require(_0xc246('0x11'));var as=require(_0xc246('0x12'));var hardwareService=require(_0xc246('0x13'));var logger=require(_0xc246('0x14'))(_0xc246('0x15'));var utils=require(_0xc246('0x16'));var config=require(_0xc246('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc246('0x18'))['db'];function respondWithStatusCode(_0x311b4d,_0xff4dc9){_0xff4dc9=_0xff4dc9||0xcc;return function(_0x567be3){if(_0x567be3){return _0x311b4d[_0xc246('0x19')](_0xff4dc9);}return _0x311b4d[_0xc246('0x1a')](_0xff4dc9)['end']();};}function respondWithResult(_0x2b7c70,_0x390fc7){_0x390fc7=_0x390fc7||0xc8;return function(_0x1f63c7){if(_0x1f63c7){return _0x2b7c70[_0xc246('0x1a')](_0x390fc7)['json'](_0x1f63c7);}};}function respondWithFilteredResult(_0x5cd698,_0x509927){return function(_0x5f5c45){if(_0x5f5c45){var _0x2c9121=typeof _0x509927[_0xc246('0x1b')]===_0xc246('0x1c')&&typeof _0x509927[_0xc246('0x1d')]==='undefined';var _0x2fb37f=_0x5f5c45['count'];var _0x7195f2=_0x2c9121?0x0:_0x509927['offset'];var _0x31fbc8=_0x2c9121?_0x5f5c45['count']:_0x509927['offset']+_0x509927[_0xc246('0x1d')];var _0x2b42c8;if(_0x31fbc8>=_0x2fb37f){_0x31fbc8=_0x2fb37f;_0x2b42c8=0xc8;}else{_0x2b42c8=0xce;}_0x5cd698[_0xc246('0x1a')](_0x2b42c8);return _0x5cd698[_0xc246('0x1e')](_0xc246('0x1f'),_0x7195f2+'-'+_0x31fbc8+'/'+_0x2fb37f)[_0xc246('0x20')](_0x5f5c45);}return null;};}function patchUpdates(_0x3285ce){return function(_0x25d74d){try{jsonpatch[_0xc246('0x21')](_0x25d74d,_0x3285ce,!![]);}catch(_0x40ad08){return BPromise[_0xc246('0x22')](_0x40ad08);}return _0x25d74d[_0xc246('0x23')]();};}function saveUpdates(_0x22d739,_0x6f84b9){return function(_0x3c81f1){if(_0x3c81f1){return _0x3c81f1[_0xc246('0x24')](_0x22d739)[_0xc246('0x25')](function(_0x3bbae4){return _0x3bbae4;});}return null;};}function removeEntity(_0x16006f,_0x47703e){return function(_0x302096){if(_0x302096){return _0x302096[_0xc246('0x26')]()[_0xc246('0x25')](function(){_0x16006f[_0xc246('0x1a')](0xcc)[_0xc246('0x27')]();});}};}function handleEntityNotFound(_0x4a642a,_0x29ccc4){return function(_0x1e8c29){if(!_0x1e8c29){_0x4a642a[_0xc246('0x19')](0x194);}return _0x1e8c29;};}function handleError(_0x301c33,_0x2d1e29){_0x2d1e29=_0x2d1e29||0x1f4;return function(_0x19757e){logger['error'](_0x19757e[_0xc246('0x28')]);if(_0x19757e[_0xc246('0x29')]){delete _0x19757e['name'];}_0x301c33[_0xc246('0x1a')](_0x2d1e29)[_0xc246('0x2a')](_0x19757e);};}exports[_0xc246('0x2b')]=function(_0x3b12cf,_0x367da0){var _0x3e88cf={},_0x2a3b11={},_0x452682={'count':0x0,'rows':[]};var _0x2db564=_['map'](db[_0xc246('0x2c')][_0xc246('0x2d')],function(_0x542676){return{'name':_0x542676[_0xc246('0x2e')],'type':_0x542676[_0xc246('0x2f')][_0xc246('0x30')]};});_0x2a3b11['model']=_[_0xc246('0x31')](_0x2db564,_0xc246('0x29'));_0x2a3b11['query']=_[_0xc246('0x32')](_0x3b12cf[_0xc246('0x33')]);_0x2a3b11[_0xc246('0x34')]=_[_0xc246('0x35')](_0x2a3b11['model'],_0x2a3b11['query']);_0x3e88cf[_0xc246('0x36')]=_[_0xc246('0x35')](_0x2a3b11[_0xc246('0x37')],qs[_0xc246('0x38')](_0x3b12cf['query'][_0xc246('0x38')]));_0x3e88cf[_0xc246('0x36')]=_0x3e88cf[_0xc246('0x36')][_0xc246('0x39')]?_0x3e88cf[_0xc246('0x36')]:_0x2a3b11[_0xc246('0x37')];if(!_0x3b12cf[_0xc246('0x33')][_0xc246('0x3a')](_0xc246('0x3b'))){_0x3e88cf[_0xc246('0x1d')]=qs['limit'](_0x3b12cf[_0xc246('0x33')][_0xc246('0x1d')]);_0x3e88cf[_0xc246('0x1b')]=qs[_0xc246('0x1b')](_0x3b12cf[_0xc246('0x33')][_0xc246('0x1b')]);}_0x3e88cf[_0xc246('0x3c')]=qs['sort'](_0x3b12cf[_0xc246('0x33')][_0xc246('0x3d')]);_0x3e88cf[_0xc246('0x3e')]=qs[_0xc246('0x34')](_[_0xc246('0x3f')](_0x3b12cf[_0xc246('0x33')],_0x2a3b11[_0xc246('0x34')]),_0x2db564);if(_0x3b12cf[_0xc246('0x33')]['filter']){_0x3e88cf[_0xc246('0x3e')]=_[_0xc246('0x40')](_0x3e88cf[_0xc246('0x3e')],{'$or':_[_0xc246('0x31')](_0x2db564,function(_0x37aea6){if(_0x37aea6[_0xc246('0x2f')]!==_0xc246('0x41')){var _0x141d93={};_0x141d93[_0x37aea6[_0xc246('0x29')]]={'$like':'%'+_0x3b12cf[_0xc246('0x33')]['filter']+'%'};return _0x141d93;}})});}_0x3e88cf=_[_0xc246('0x40')]({},_0x3e88cf,_0x3b12cf[_0xc246('0x42')]);var _0x5e1514={'where':_0x3e88cf[_0xc246('0x3e')]};return db[_0xc246('0x2c')][_0xc246('0x43')](_0x5e1514)[_0xc246('0x25')](function(_0x5212d4){_0x452682['count']=_0x5212d4;if(_0x3b12cf[_0xc246('0x33')][_0xc246('0x44')]){_0x3e88cf['include']=[{'all':!![]}];}return db[_0xc246('0x2c')]['findAll'](_0x3e88cf);})[_0xc246('0x25')](function(_0x2a52a1){_0x452682['rows']=_0x2a52a1;return _0x452682;})[_0xc246('0x25')](respondWithFilteredResult(_0x367da0,_0x3e88cf))[_0xc246('0x45')](handleError(_0x367da0,null));};exports[_0xc246('0x46')]=function(_0x5b3186,_0x20125a){var _0x391ccc={'raw':![],'where':{'id':_0x5b3186[_0xc246('0x47')]['id']}},_0x36c001={};_0x36c001[_0xc246('0x37')]=_[_0xc246('0x32')](db[_0xc246('0x2c')][_0xc246('0x2d')]);_0x36c001[_0xc246('0x33')]=_[_0xc246('0x32')](_0x5b3186[_0xc246('0x33')]);_0x36c001[_0xc246('0x34')]=_[_0xc246('0x35')](_0x36c001['model'],_0x36c001['query']);_0x391ccc[_0xc246('0x36')]=_[_0xc246('0x35')](_0x36c001[_0xc246('0x37')],qs['fields'](_0x5b3186[_0xc246('0x33')][_0xc246('0x38')]));_0x391ccc[_0xc246('0x36')]=_0x391ccc[_0xc246('0x36')]['length']?_0x391ccc[_0xc246('0x36')]:_0x36c001[_0xc246('0x37')];if(_0x5b3186[_0xc246('0x33')][_0xc246('0x44')]){_0x391ccc[_0xc246('0x48')]=[{'all':!![]}];}_0x391ccc=_['merge']({},_0x391ccc,_0x5b3186[_0xc246('0x42')]);return db['DeskConfiguration'][_0xc246('0x49')](_0x391ccc)['then'](handleEntityNotFound(_0x20125a,null))[_0xc246('0x25')](respondWithResult(_0x20125a,null))[_0xc246('0x45')](handleError(_0x20125a,null));};exports['create']=function(_0x4ba3bd,_0x48a9ef){return db[_0xc246('0x2c')][_0xc246('0x4a')](_0x4ba3bd[_0xc246('0x4b')],{})['then'](respondWithResult(_0x48a9ef,0xc9))[_0xc246('0x45')](handleError(_0x48a9ef,null));};exports[_0xc246('0x24')]=function(_0x5cda37,_0x4e5147){if(_0x5cda37[_0xc246('0x4b')]['id']){delete _0x5cda37[_0xc246('0x4b')]['id'];}return db[_0xc246('0x2c')][_0xc246('0x49')]({'where':{'id':_0x5cda37['params']['id']}})['then'](handleEntityNotFound(_0x4e5147,null))[_0xc246('0x25')](saveUpdates(_0x5cda37[_0xc246('0x4b')],null))['then'](respondWithResult(_0x4e5147,null))[_0xc246('0x45')](handleError(_0x4e5147,null));};exports[_0xc246('0x26')]=function(_0x682385,_0x221625){return db['DeskConfiguration'][_0xc246('0x49')]({'where':{'id':_0x682385[_0xc246('0x47')]['id']}})[_0xc246('0x25')](handleEntityNotFound(_0x221625,null))[_0xc246('0x25')](removeEntity(_0x221625,null))['catch'](handleError(_0x221625,null));};exports[_0xc246('0x4c')]=function(_0x246bb6,_0x252b35,_0x354b95){var _0x56c5cc={};var _0x591742={};var _0x27d19f;var _0x3aa82d;return db['DeskConfiguration'][_0xc246('0x4d')]({'where':{'id':_0x246bb6[_0xc246('0x47')]['id']}})['then'](handleEntityNotFound(_0x252b35,null))[_0xc246('0x25')](function(_0x590e8c){if(_0x590e8c){_0x27d19f=_0x590e8c;_0x591742[_0xc246('0x37')]=_[_0xc246('0x32')](db[_0xc246('0x4e')][_0xc246('0x2d')]);_0x591742[_0xc246('0x33')]=_['keys'](_0x246bb6[_0xc246('0x33')]);_0x591742[_0xc246('0x34')]=_[_0xc246('0x35')](_0x591742[_0xc246('0x37')],_0x591742[_0xc246('0x33')]);_0x56c5cc[_0xc246('0x36')]=_[_0xc246('0x35')](_0x591742[_0xc246('0x37')],qs[_0xc246('0x38')](_0x246bb6[_0xc246('0x33')][_0xc246('0x38')]));_0x56c5cc[_0xc246('0x36')]=_0x56c5cc[_0xc246('0x36')]['length']?_0x56c5cc[_0xc246('0x36')]:_0x591742['model'];_0x56c5cc['order']=qs[_0xc246('0x3d')](_0x246bb6[_0xc246('0x33')][_0xc246('0x3d')]);_0x56c5cc[_0xc246('0x3e')]=qs[_0xc246('0x34')](_[_0xc246('0x3f')](_0x246bb6[_0xc246('0x33')],_0x591742['filters']));if(_0x246bb6[_0xc246('0x33')][_0xc246('0x4f')]){_0x56c5cc[_0xc246('0x3e')]=_[_0xc246('0x40')](_0x56c5cc[_0xc246('0x3e')],{'$or':_[_0xc246('0x31')](_0x56c5cc[_0xc246('0x36')],function(_0x2d7af2){var _0x45ce9e={};_0x45ce9e[_0x2d7af2]={'$like':'%'+_0x246bb6[_0xc246('0x33')][_0xc246('0x4f')]+'%'};return _0x45ce9e;})});}_0x56c5cc=_[_0xc246('0x40')]({},_0x56c5cc,_0x246bb6[_0xc246('0x42')]);return _0x27d19f[_0xc246('0x4c')](_0x56c5cc);}})[_0xc246('0x25')](function(_0x12c847){if(_0x12c847){_0x3aa82d=_0x12c847[_0xc246('0x39')];if(!_0x246bb6['query'][_0xc246('0x3a')](_0xc246('0x3b'))){_0x56c5cc[_0xc246('0x1d')]=qs[_0xc246('0x1d')](_0x246bb6['query']['limit']);_0x56c5cc[_0xc246('0x1b')]=qs['offset'](_0x246bb6[_0xc246('0x33')][_0xc246('0x1b')]);}return _0x27d19f[_0xc246('0x4c')](_0x56c5cc);}})[_0xc246('0x25')](function(_0x7bfe54){if(_0x7bfe54){return _0x7bfe54?{'count':_0x3aa82d,'rows':_0x7bfe54}:null;}})[_0xc246('0x25')](respondWithResult(_0x252b35,null))[_0xc246('0x45')](handleError(_0x252b35,null));};exports[_0xc246('0x50')]=function(_0x336450,_0xd68053,_0x3e99f9){var _0x4c2cc3={};var _0x3b8a12={};var _0xe62d79;var _0x2093bc;return db[_0xc246('0x2c')][_0xc246('0x4d')]({'where':{'id':_0x336450['params']['id']}})['then'](handleEntityNotFound(_0xd68053,null))[_0xc246('0x25')](function(_0x7b2bd1){if(_0x7b2bd1){_0xe62d79=_0x7b2bd1;_0x3b8a12[_0xc246('0x37')]=_[_0xc246('0x32')](db[_0xc246('0x4e')][_0xc246('0x2d')]);_0x3b8a12['query']=_[_0xc246('0x32')](_0x336450[_0xc246('0x33')]);_0x3b8a12[_0xc246('0x34')]=_[_0xc246('0x35')](_0x3b8a12[_0xc246('0x37')],_0x3b8a12[_0xc246('0x33')]);_0x4c2cc3[_0xc246('0x36')]=_['intersection'](_0x3b8a12[_0xc246('0x37')],qs[_0xc246('0x38')](_0x336450[_0xc246('0x33')][_0xc246('0x38')]));_0x4c2cc3['attributes']=_0x4c2cc3[_0xc246('0x36')][_0xc246('0x39')]?_0x4c2cc3[_0xc246('0x36')]:_0x3b8a12[_0xc246('0x37')];_0x4c2cc3[_0xc246('0x3c')]=qs[_0xc246('0x3d')](_0x336450[_0xc246('0x33')][_0xc246('0x3d')]);_0x4c2cc3[_0xc246('0x3e')]=qs[_0xc246('0x34')](_['pick'](_0x336450['query'],_0x3b8a12[_0xc246('0x34')]));if(_0x336450[_0xc246('0x33')][_0xc246('0x4f')]){_0x4c2cc3['where']=_[_0xc246('0x40')](_0x4c2cc3[_0xc246('0x3e')],{'$or':_[_0xc246('0x31')](_0x4c2cc3['attributes'],function(_0x7fe101){var _0x1a7a91={};_0x1a7a91[_0x7fe101]={'$like':'%'+_0x336450[_0xc246('0x33')][_0xc246('0x4f')]+'%'};return _0x1a7a91;})});}_0x4c2cc3=_['merge']({},_0x4c2cc3,_0x336450[_0xc246('0x42')]);return _0xe62d79[_0xc246('0x50')](_0x4c2cc3);}})['then'](function(_0x58d28b){if(_0x58d28b){_0x2093bc=_0x58d28b['length'];if(!_0x336450[_0xc246('0x33')][_0xc246('0x3a')](_0xc246('0x3b'))){_0x4c2cc3['limit']=qs[_0xc246('0x1d')](_0x336450[_0xc246('0x33')][_0xc246('0x1d')]);_0x4c2cc3['offset']=qs[_0xc246('0x1b')](_0x336450[_0xc246('0x33')][_0xc246('0x1b')]);}return _0xe62d79[_0xc246('0x50')](_0x4c2cc3);}})[_0xc246('0x25')](function(_0x4bdd24){if(_0x4bdd24){return _0x4bdd24?{'count':_0x2093bc,'rows':_0x4bdd24}:null;}})[_0xc246('0x25')](respondWithResult(_0xd68053,null))[_0xc246('0x45')](handleError(_0xd68053,null));};exports[_0xc246('0x51')]=function(_0x5a26cb,_0x32f38c,_0x1a85a8){var _0x503849={};var _0x21a09f={};var _0x7f98f0;var _0x13125c;return db[_0xc246('0x2c')][_0xc246('0x4d')]({'where':{'id':_0x5a26cb[_0xc246('0x47')]['id']}})[_0xc246('0x25')](handleEntityNotFound(_0x32f38c,null))[_0xc246('0x25')](function(_0x23d0ce){if(_0x23d0ce){_0x7f98f0=_0x23d0ce;_0x21a09f['model']=_[_0xc246('0x32')](db['DeskField'][_0xc246('0x2d')]);_0x21a09f[_0xc246('0x33')]=_[_0xc246('0x32')](_0x5a26cb['query']);_0x21a09f['filters']=_[_0xc246('0x35')](_0x21a09f['model'],_0x21a09f[_0xc246('0x33')]);_0x503849[_0xc246('0x36')]=_[_0xc246('0x35')](_0x21a09f[_0xc246('0x37')],qs['fields'](_0x5a26cb[_0xc246('0x33')][_0xc246('0x38')]));_0x503849[_0xc246('0x36')]=_0x503849[_0xc246('0x36')][_0xc246('0x39')]?_0x503849[_0xc246('0x36')]:_0x21a09f['model'];_0x503849[_0xc246('0x3c')]=qs[_0xc246('0x3d')](_0x5a26cb[_0xc246('0x33')][_0xc246('0x3d')]);_0x503849[_0xc246('0x3e')]=qs[_0xc246('0x34')](_['pick'](_0x5a26cb['query'],_0x21a09f['filters']));if(_0x5a26cb[_0xc246('0x33')][_0xc246('0x4f')]){_0x503849[_0xc246('0x3e')]=_[_0xc246('0x40')](_0x503849[_0xc246('0x3e')],{'$or':_[_0xc246('0x31')](_0x503849[_0xc246('0x36')],function(_0x5c3159){var _0xe81072={};_0xe81072[_0x5c3159]={'$like':'%'+_0x5a26cb[_0xc246('0x33')][_0xc246('0x4f')]+'%'};return _0xe81072;})});}_0x503849=_[_0xc246('0x40')]({},_0x503849,_0x5a26cb[_0xc246('0x42')]);return _0x7f98f0[_0xc246('0x51')](_0x503849);}})[_0xc246('0x25')](function(_0x26dafa){if(_0x26dafa){_0x13125c=_0x26dafa[_0xc246('0x39')];if(!_0x5a26cb[_0xc246('0x33')][_0xc246('0x3a')](_0xc246('0x3b'))){_0x503849['limit']=qs[_0xc246('0x1d')](_0x5a26cb['query'][_0xc246('0x1d')]);_0x503849[_0xc246('0x1b')]=qs['offset'](_0x5a26cb[_0xc246('0x33')]['offset']);}return _0x7f98f0['getDescriptions'](_0x503849);}})[_0xc246('0x25')](function(_0x4401c2){if(_0x4401c2){return _0x4401c2?{'count':_0x13125c,'rows':_0x4401c2}:null;}})[_0xc246('0x25')](respondWithResult(_0x32f38c,null))['catch'](handleError(_0x32f38c,null));};exports[_0xc246('0x52')]=function(_0x521f22,_0x4859bf,_0x27da29){var _0x3a8dac={};var _0x3a2561={};var _0x16ed80;var _0x141c1c;return db[_0xc246('0x2c')]['findOne']({'where':{'id':_0x521f22[_0xc246('0x47')]['id']}})[_0xc246('0x25')](handleEntityNotFound(_0x4859bf,null))['then'](function(_0x33c205){if(_0x33c205){_0x16ed80=_0x33c205;_0x3a2561['model']=_[_0xc246('0x32')](db[_0xc246('0x53')][_0xc246('0x2d')]);_0x3a2561['query']=_[_0xc246('0x32')](_0x521f22[_0xc246('0x33')]);_0x3a2561[_0xc246('0x34')]=_[_0xc246('0x35')](_0x3a2561['model'],_0x3a2561['query']);_0x3a8dac[_0xc246('0x36')]=_[_0xc246('0x35')](_0x3a2561[_0xc246('0x37')],qs['fields'](_0x521f22[_0xc246('0x33')][_0xc246('0x38')]));_0x3a8dac[_0xc246('0x36')]=_0x3a8dac['attributes'][_0xc246('0x39')]?_0x3a8dac['attributes']:_0x3a2561[_0xc246('0x37')];_0x3a8dac[_0xc246('0x3c')]=qs[_0xc246('0x3d')](_0x521f22[_0xc246('0x33')]['sort']);_0x3a8dac['where']=qs[_0xc246('0x34')](_[_0xc246('0x3f')](_0x521f22['query'],_0x3a2561[_0xc246('0x34')]));if(_0x521f22[_0xc246('0x33')][_0xc246('0x4f')]){_0x3a8dac[_0xc246('0x3e')]=_[_0xc246('0x40')](_0x3a8dac['where'],{'$or':_[_0xc246('0x31')](_0x3a8dac['attributes'],function(_0x1644c7){var _0x18d661={};_0x18d661[_0x1644c7]={'$like':'%'+_0x521f22[_0xc246('0x33')][_0xc246('0x4f')]+'%'};return _0x18d661;})});}_0x3a8dac=_['merge']({},_0x3a8dac,_0x521f22[_0xc246('0x42')]);return _0x16ed80[_0xc246('0x52')](_0x3a8dac);}})[_0xc246('0x25')](function(_0x582dd8){if(_0x582dd8){_0x141c1c=_0x582dd8[_0xc246('0x39')];if(!_0x521f22[_0xc246('0x33')][_0xc246('0x3a')](_0xc246('0x3b'))){_0x3a8dac[_0xc246('0x1d')]=qs[_0xc246('0x1d')](_0x521f22[_0xc246('0x33')][_0xc246('0x1d')]);_0x3a8dac[_0xc246('0x1b')]=qs[_0xc246('0x1b')](_0x521f22[_0xc246('0x33')][_0xc246('0x1b')]);}return _0x16ed80[_0xc246('0x52')](_0x3a8dac);}})[_0xc246('0x25')](function(_0xb315a6){if(_0xb315a6){return _0xb315a6?{'count':_0x141c1c,'rows':_0xb315a6}:null;}})['then'](respondWithResult(_0x4859bf,null))['catch'](handleError(_0x4859bf,null));};exports[_0xc246('0x54')]=function(_0x3a77ea,_0x258862,_0x660712){if(_0x3a77ea['body']['id']){delete _0x3a77ea[_0xc246('0x4b')]['id'];}return db[_0xc246('0x2c')][_0xc246('0x4d')]({'where':{'id':_0x3a77ea['params']['id']}})[_0xc246('0x25')](handleEntityNotFound(_0x258862,null))[_0xc246('0x25')](function(_0x49621d){if(_0x49621d){return _0x49621d[_0xc246('0x54')](_0x3a77ea[_0xc246('0x4b')][_0xc246('0x55')]||[]);}return null;})[_0xc246('0x25')](respondWithResult(_0x258862,null))[_0xc246('0x45')](handleError(_0x258862,null));};
\ No newline at end of file
index c0af4c4..de6079b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d4=['DeskConfiguration','lodash','moment','bluebird','../../config/environment','./intDeskConfiguration.attributes','exports','define'];(function(_0x3f8a89,_0x51c3b5){var _0x12c1ff=function(_0x2a6217){while(--_0x2a6217){_0x3f8a89['push'](_0x3f8a89['shift']());}};_0x12c1ff(++_0x51c3b5);}(_0x44d4,0x161));var _0x444d=function(_0x29cce4,_0x379f7c){_0x29cce4=_0x29cce4-0x0;var _0x1a6616=_0x44d4[_0x29cce4];return _0x1a6616;};'use strict';var _=require(_0x444d('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x444d('0x1'));var BPromise=require(_0x444d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x444d('0x3'));var attributes=require(_0x444d('0x4'));module[_0x444d('0x5')]=function(_0x24f601,_0x45dfdb){return _0x24f601[_0x444d('0x6')](_0x444d('0x7'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae1a=['rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','int_desk_configurations','lodash','util','../../config/logger','bluebird'];(function(_0x41b1dd,_0x45d649){var _0x2e01df=function(_0x294805){while(--_0x294805){_0x41b1dd['push'](_0x41b1dd['shift']());}};_0x2e01df(++_0x45d649);}(_0xae1a,0xba));var _0xaae1=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xae1a[_0x4709c0];return _0x13348b;};'use strict';var _=require(_0xaae1('0x0'));var util=require(_0xaae1('0x1'));var logger=require(_0xaae1('0x2'))('api');var moment=require('moment');var BPromise=require(_0xaae1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaae1('0x4'));var config=require(_0xaae1('0x5'));var attributes=require(_0xaae1('0x6'));module[_0xaae1('0x7')]=function(_0x38323b,_0x21c8e7){return _0x38323b[_0xaae1('0x8')]('DeskConfiguration',attributes,{'tableName':_0xaae1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d961287..f273a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ea=['error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','DeskConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x75ea,0x7d));var _0xa75e=function(_0x20ddd9,_0x599877){_0x20ddd9=_0x20ddd9-0x0;var _0x270a43=_0x75ea[_0x20ddd9];return _0x270a43;};'use strict';var _=require(_0xa75e('0x0'));var util=require(_0xa75e('0x1'));var moment=require('moment');var BPromise=require(_0xa75e('0x2'));var rs=require(_0xa75e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa75e('0x4'))['db'];var utils=require(_0xa75e('0x5'));var logger=require(_0xa75e('0x6'))(_0xa75e('0x7'));var config=require(_0xa75e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa75e('0x9')][_0xa75e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f666f,_0x2c71ef,_0x148a23){return new BPromise(function(_0x31a28d,_0x351164){return client['request'](_0x1f666f,_0x148a23)['then'](function(_0x560baa){logger['info'](_0xa75e('0xb'),_0x2c71ef,'request\x20sent');logger[_0xa75e('0xc')]('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x2c71ef,_0xa75e('0xd'),JSON[_0xa75e('0xe')](_0x560baa));if(_0x560baa['error']){if(_0x560baa[_0xa75e('0xf')][_0xa75e('0x10')]===0x1f4){logger[_0xa75e('0xf')](_0xa75e('0xb'),_0x2c71ef,_0x560baa[_0xa75e('0xf')][_0xa75e('0x11')]);return _0x351164(_0x560baa[_0xa75e('0xf')][_0xa75e('0x11')]);}logger[_0xa75e('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x2c71ef,_0x560baa[_0xa75e('0xf')]['message']);return _0x31a28d(_0x560baa[_0xa75e('0xf')][_0xa75e('0x11')]);}else{logger['info'](_0xa75e('0xb'),_0x2c71ef,_0xa75e('0xd'));_0x31a28d(_0x560baa[_0xa75e('0x12')]['message']);}})[_0xa75e('0x13')](function(_0x315fde){logger[_0xa75e('0xf')](_0xa75e('0xb'),_0x2c71ef,_0x315fde);_0x351164(_0x315fde);});});}
\ No newline at end of file
+var _0xa3e8=['DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info'];(function(_0x1f36a3,_0x1ddbbc){var _0x4ac802=function(_0x5800e6){while(--_0x5800e6){_0x1f36a3['push'](_0x1f36a3['shift']());}};_0x4ac802(++_0x1ddbbc);}(_0xa3e8,0x127));var _0x8a3e=function(_0x5e2c10,_0x31c6de){_0x5e2c10=_0x5e2c10-0x0;var _0x2e93db=_0xa3e8[_0x5e2c10];return _0x2e93db;};'use strict';var _=require(_0x8a3e('0x0'));var util=require(_0x8a3e('0x1'));var moment=require(_0x8a3e('0x2'));var BPromise=require('bluebird');var rs=require(_0x8a3e('0x3'));var fs=require('fs');var Redis=require(_0x8a3e('0x4'));var db=require(_0x8a3e('0x5'))['db'];var utils=require(_0x8a3e('0x6'));var logger=require(_0x8a3e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8a3e('0x8')][_0x8a3e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2052a8,_0x5a2a25,_0x27f08d){return new BPromise(function(_0x4c7f41,_0x437cde){return client[_0x8a3e('0xa')](_0x2052a8,_0x27f08d)[_0x8a3e('0xb')](function(_0x402a96){logger[_0x8a3e('0xc')](_0x8a3e('0xd'),_0x5a2a25,_0x8a3e('0xe'));logger['debug'](_0x8a3e('0xf'),_0x5a2a25,_0x8a3e('0xe'),JSON[_0x8a3e('0x10')](_0x402a96));if(_0x402a96['error']){if(_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x12')]===0x1f4){logger[_0x8a3e('0x11')](_0x8a3e('0xd'),_0x5a2a25,_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);return _0x437cde(_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);}logger[_0x8a3e('0x11')](_0x8a3e('0xd'),_0x5a2a25,_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);return _0x4c7f41(_0x402a96[_0x8a3e('0x11')]['message']);}else{logger[_0x8a3e('0xc')](_0x8a3e('0xd'),_0x5a2a25,_0x8a3e('0xe'));_0x4c7f41(_0x402a96[_0x8a3e('0x14')][_0x8a3e('0x13')]);}})[_0x8a3e('0x15')](function(_0x48e5a8){logger[_0x8a3e('0x11')]('DeskConfiguration,\x20%s,\x20%s',_0x5a2a25,_0x48e5a8);_0x437cde(_0x48e5a8);});});}
\ No newline at end of file
index 053e682..52eeaf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa770=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDeskField.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','path'];(function(_0x253093,_0xbefea1){var _0xa88f81=function(_0x3903b6){while(--_0x3903b6){_0x253093['push'](_0x253093['shift']());}};_0xa88f81(++_0xbefea1);}(_0xa770,0xc6));var _0x0a77=function(_0x227a7b,_0x10d4db){_0x227a7b=_0x227a7b-0x0;var _0x21ae2c=_0xa770[_0x227a7b];return _0x21ae2c;};'use strict';var multer=require(_0x0a77('0x0'));var util=require('util');var path=require(_0x0a77('0x1'));var timeout=require(_0x0a77('0x2'));var express=require(_0x0a77('0x3'));var router=express[_0x0a77('0x4')]();var fs_extra=require(_0x0a77('0x5'));var auth=require(_0x0a77('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0a77('0x7'));var controller=require(_0x0a77('0x8'));router[_0x0a77('0x9')]('/',auth['isAuthenticated'](),controller[_0x0a77('0xa')]);router[_0x0a77('0x9')](_0x0a77('0xb'),auth[_0x0a77('0xc')](),controller[_0x0a77('0xd')]);router[_0x0a77('0xe')]('/',auth['isAuthenticated'](),controller[_0x0a77('0xf')]);router[_0x0a77('0x10')](_0x0a77('0xb'),auth['isAuthenticated'](),controller[_0x0a77('0x11')]);router[_0x0a77('0x12')](_0x0a77('0xb'),auth[_0x0a77('0xc')](),controller['destroy']);module[_0x0a77('0x13')]=router;
\ No newline at end of file
+var _0x7145=['path','connect-timeout','express','fs-extra','../../components/auth/service','./intDeskField.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','exports','util'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x7145,0x98));var _0x5714=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7145[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0x5714('0x0'));var path=require(_0x5714('0x1'));var timeout=require(_0x5714('0x2'));var express=require(_0x5714('0x3'));var router=express['Router']();var fs_extra=require(_0x5714('0x4'));var auth=require(_0x5714('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5714('0x6'));router[_0x5714('0x7')]('/',auth[_0x5714('0x8')](),controller[_0x5714('0x9')]);router[_0x5714('0x7')](_0x5714('0xa'),auth[_0x5714('0x8')](),controller[_0x5714('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5714('0xc')]);router[_0x5714('0xd')](_0x5714('0xa'),auth[_0x5714('0x8')](),controller[_0x5714('0xe')]);router[_0x5714('0xf')]('/:id',auth[_0x5714('0x8')](),controller['destroy']);module[_0x5714('0x10')]=router;
\ No newline at end of file
index 6d48576..c46abfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['picklist','string','STRING','ENUM','variable','BOOLEAN','sequelize','exports','customVariable','keyValue'];(function(_0x34af83,_0x18dbde){var _0x98620d=function(_0x3f4cd9){while(--_0x3f4cd9){_0x34af83['push'](_0x34af83['shift']());}};_0x98620d(++_0x18dbde);}(_0xb4e6,0x146));var _0x6b4e=function(_0xa1e3ca,_0x559022){_0xa1e3ca=_0xa1e3ca-0x0;var _0x5005ab=_0xb4e6[_0xa1e3ca];return _0x5005ab;};'use strict';var Sequelize=require(_0x6b4e('0x0'));module[_0x6b4e('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable',_0x6b4e('0x2'),_0x6b4e('0x3'),_0x6b4e('0x4')),'defaultValue':_0x6b4e('0x5')},'content':{'type':Sequelize[_0x6b4e('0x6')]},'key':{'type':Sequelize[_0x6b4e('0x6')]},'keyType':{'type':Sequelize[_0x6b4e('0x7')](_0x6b4e('0x5'),_0x6b4e('0x8'),_0x6b4e('0x2'))},'keyContent':{'type':Sequelize[_0x6b4e('0x6')]},'idField':{'type':Sequelize[_0x6b4e('0x6')]},'nameField':{'type':Sequelize[_0x6b4e('0x6')]},'customField':{'type':Sequelize[_0x6b4e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6b4e('0x6')]}};
\ No newline at end of file
+var _0xd656=['picklist','STRING','customVariable','exports','ENUM','string','variable'];(function(_0x1510e0,_0x436d5f){var _0x10236f=function(_0x2f6b00){while(--_0x2f6b00){_0x1510e0['push'](_0x1510e0['shift']());}};_0x10236f(++_0x436d5f);}(_0xd656,0x11b));var _0x6d65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd656[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x6d65('0x0')]={'type':{'type':Sequelize[_0x6d65('0x1')](_0x6d65('0x2'),_0x6d65('0x3'),'customVariable','keyValue',_0x6d65('0x4')),'defaultValue':_0x6d65('0x2')},'content':{'type':Sequelize[_0x6d65('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x6d65('0x1')](_0x6d65('0x2'),_0x6d65('0x3'),_0x6d65('0x6'))},'keyContent':{'type':Sequelize[_0x6d65('0x5')]},'idField':{'type':Sequelize[_0x6d65('0x5')]},'nameField':{'type':Sequelize[_0x6d65('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6d65('0x5')]}};
\ No newline at end of file
index 9671da8..96e43a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe574=['intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','params','keys','options','find','create','body','update','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','send','DeskField','rawAttributes','fieldName','key','model','map','query','filters'];(function(_0x57b5ac,_0x40ee0d){var _0x43cdcf=function(_0xe6055a){while(--_0xe6055a){_0x57b5ac['push'](_0x57b5ac['shift']());}};_0x43cdcf(++_0x40ee0d);}(_0xe574,0x100));var _0x4e57=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xe574[_0x5d6456];return _0x4d66c1;};'use strict';var emlformat=require(_0x4e57('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4e57('0x1'));var jsonpatch=require(_0x4e57('0x2'));var rp=require(_0x4e57('0x3'));var moment=require(_0x4e57('0x4'));var BPromise=require(_0x4e57('0x5'));var Mustache=require(_0x4e57('0x6'));var util=require(_0x4e57('0x7'));var path=require(_0x4e57('0x8'));var sox=require(_0x4e57('0x9'));var csv=require(_0x4e57('0xa'));var ejs=require(_0x4e57('0xb'));var fs=require('fs');var fs_extra=require(_0x4e57('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4e57('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4e57('0xa'));var querystring=require(_0x4e57('0xe'));var Papa=require(_0x4e57('0xf'));var Redis=require(_0x4e57('0x10'));var authService=require(_0x4e57('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4e57('0x12'));var hardwareService=require(_0x4e57('0x13'));var logger=require(_0x4e57('0x14'))(_0x4e57('0x15'));var utils=require(_0x4e57('0x16'));var config=require(_0x4e57('0x17'));var licenseUtil=require(_0x4e57('0x18'));var db=require(_0x4e57('0x19'))['db'];function respondWithStatusCode(_0xed8cbc,_0x40c8c8){_0x40c8c8=_0x40c8c8||0xcc;return function(_0x330868){if(_0x330868){return _0xed8cbc[_0x4e57('0x1a')](_0x40c8c8);}return _0xed8cbc[_0x4e57('0x1b')](_0x40c8c8)[_0x4e57('0x1c')]();};}function respondWithResult(_0x28f876,_0x2e9fa8){_0x2e9fa8=_0x2e9fa8||0xc8;return function(_0x4f088a){if(_0x4f088a){return _0x28f876[_0x4e57('0x1b')](_0x2e9fa8)['json'](_0x4f088a);}};}function respondWithFilteredResult(_0x254285,_0x4af0a6){return function(_0x3401c4){if(_0x3401c4){var _0x214957=typeof _0x4af0a6['offset']===_0x4e57('0x1d')&&typeof _0x4af0a6[_0x4e57('0x1e')]===_0x4e57('0x1d');var _0xb06d8=_0x3401c4['count'];var _0x2ed980=_0x214957?0x0:_0x4af0a6[_0x4e57('0x1f')];var _0x3c2978=_0x214957?_0x3401c4[_0x4e57('0x20')]:_0x4af0a6[_0x4e57('0x1f')]+_0x4af0a6['limit'];var _0x182286;if(_0x3c2978>=_0xb06d8){_0x3c2978=_0xb06d8;_0x182286=0xc8;}else{_0x182286=0xce;}_0x254285[_0x4e57('0x1b')](_0x182286);return _0x254285[_0x4e57('0x21')](_0x4e57('0x22'),_0x2ed980+'-'+_0x3c2978+'/'+_0xb06d8)['json'](_0x3401c4);}return null;};}function patchUpdates(_0x372295){return function(_0x59df7a){try{jsonpatch[_0x4e57('0x23')](_0x59df7a,_0x372295,!![]);}catch(_0x5b6127){return BPromise[_0x4e57('0x24')](_0x5b6127);}return _0x59df7a[_0x4e57('0x25')]();};}function saveUpdates(_0x427c6b,_0x43c9a7){return function(_0x45f9cd){if(_0x45f9cd){return _0x45f9cd['update'](_0x427c6b)['then'](function(_0x17e309){return _0x17e309;});}return null;};}function removeEntity(_0x58d6ea,_0x315f7c){return function(_0x4cfa0e){if(_0x4cfa0e){return _0x4cfa0e[_0x4e57('0x26')]()[_0x4e57('0x27')](function(){_0x58d6ea[_0x4e57('0x1b')](0xcc)[_0x4e57('0x1c')]();});}};}function handleEntityNotFound(_0x29df93,_0xc75cb3){return function(_0x4fb5db){if(!_0x4fb5db){_0x29df93[_0x4e57('0x1a')](0x194);}return _0x4fb5db;};}function handleError(_0x316988,_0x503eaa){_0x503eaa=_0x503eaa||0x1f4;return function(_0x36b415){logger[_0x4e57('0x28')](_0x36b415[_0x4e57('0x29')]);if(_0x36b415[_0x4e57('0x2a')]){delete _0x36b415[_0x4e57('0x2a')];}_0x316988[_0x4e57('0x1b')](_0x503eaa)[_0x4e57('0x2b')](_0x36b415);};}exports['index']=function(_0x1a26f6,_0x431794){var _0x1da085={},_0x197bc1={},_0x27a22f={'count':0x0,'rows':[]};var _0x5d55b9=_['map'](db[_0x4e57('0x2c')][_0x4e57('0x2d')],function(_0x3ce391){return{'name':_0x3ce391[_0x4e57('0x2e')],'type':_0x3ce391['type'][_0x4e57('0x2f')]};});_0x197bc1[_0x4e57('0x30')]=_[_0x4e57('0x31')](_0x5d55b9,_0x4e57('0x2a'));_0x197bc1[_0x4e57('0x32')]=_['keys'](_0x1a26f6[_0x4e57('0x32')]);_0x197bc1[_0x4e57('0x33')]=_['intersection'](_0x197bc1[_0x4e57('0x30')],_0x197bc1['query']);_0x1da085['attributes']=_[_0x4e57('0x34')](_0x197bc1[_0x4e57('0x30')],qs[_0x4e57('0x35')](_0x1a26f6['query'][_0x4e57('0x35')]));_0x1da085['attributes']=_0x1da085[_0x4e57('0x36')][_0x4e57('0x37')]?_0x1da085[_0x4e57('0x36')]:_0x197bc1['model'];if(!_0x1a26f6[_0x4e57('0x32')][_0x4e57('0x38')](_0x4e57('0x39'))){_0x1da085[_0x4e57('0x1e')]=qs[_0x4e57('0x1e')](_0x1a26f6[_0x4e57('0x32')][_0x4e57('0x1e')]);_0x1da085[_0x4e57('0x1f')]=qs[_0x4e57('0x1f')](_0x1a26f6[_0x4e57('0x32')][_0x4e57('0x1f')]);}_0x1da085['order']=qs[_0x4e57('0x3a')](_0x1a26f6['query'][_0x4e57('0x3a')]);_0x1da085[_0x4e57('0x3b')]=qs[_0x4e57('0x33')](_[_0x4e57('0x3c')](_0x1a26f6['query'],_0x197bc1['filters']),_0x5d55b9);if(_0x1a26f6[_0x4e57('0x32')][_0x4e57('0x3d')]){_0x1da085[_0x4e57('0x3b')]=_[_0x4e57('0x3e')](_0x1da085[_0x4e57('0x3b')],{'$or':_[_0x4e57('0x31')](_0x5d55b9,function(_0x1ab62){if(_0x1ab62[_0x4e57('0x3f')]!==_0x4e57('0x40')){var _0x4ac448={};_0x4ac448[_0x1ab62[_0x4e57('0x2a')]]={'$like':'%'+_0x1a26f6['query'][_0x4e57('0x3d')]+'%'};return _0x4ac448;}})});}_0x1da085=_[_0x4e57('0x3e')]({},_0x1da085,_0x1a26f6['options']);var _0x1ff9e7={'where':_0x1da085[_0x4e57('0x3b')]};return db[_0x4e57('0x2c')][_0x4e57('0x20')](_0x1ff9e7)[_0x4e57('0x27')](function(_0x386d3a){_0x27a22f[_0x4e57('0x20')]=_0x386d3a;if(_0x1a26f6['query'][_0x4e57('0x41')]){_0x1da085[_0x4e57('0x42')]=[{'all':!![]}];}return db['DeskField'][_0x4e57('0x43')](_0x1da085);})[_0x4e57('0x27')](function(_0x2ef995){_0x27a22f[_0x4e57('0x44')]=_0x2ef995;return _0x27a22f;})[_0x4e57('0x27')](respondWithFilteredResult(_0x431794,_0x1da085))[_0x4e57('0x45')](handleError(_0x431794,null));};exports['show']=function(_0x2e5e62,_0x3fd1b0){var _0x271551={'raw':!![],'where':{'id':_0x2e5e62[_0x4e57('0x46')]['id']}},_0x330da6={};_0x330da6[_0x4e57('0x30')]=_[_0x4e57('0x47')](db['DeskField'][_0x4e57('0x2d')]);_0x330da6[_0x4e57('0x32')]=_[_0x4e57('0x47')](_0x2e5e62[_0x4e57('0x32')]);_0x330da6[_0x4e57('0x33')]=_['intersection'](_0x330da6[_0x4e57('0x30')],_0x330da6[_0x4e57('0x32')]);_0x271551[_0x4e57('0x36')]=_[_0x4e57('0x34')](_0x330da6[_0x4e57('0x30')],qs[_0x4e57('0x35')](_0x2e5e62[_0x4e57('0x32')][_0x4e57('0x35')]));_0x271551[_0x4e57('0x36')]=_0x271551[_0x4e57('0x36')]['length']?_0x271551['attributes']:_0x330da6['model'];if(_0x2e5e62[_0x4e57('0x32')][_0x4e57('0x41')]){_0x271551[_0x4e57('0x42')]=[{'all':!![]}];}_0x271551=_[_0x4e57('0x3e')]({},_0x271551,_0x2e5e62[_0x4e57('0x48')]);return db[_0x4e57('0x2c')][_0x4e57('0x49')](_0x271551)[_0x4e57('0x27')](handleEntityNotFound(_0x3fd1b0,null))[_0x4e57('0x27')](respondWithResult(_0x3fd1b0,null))[_0x4e57('0x45')](handleError(_0x3fd1b0,null));};exports[_0x4e57('0x4a')]=function(_0xe5c591,_0x423986){return db['DeskField'][_0x4e57('0x4a')](_0xe5c591[_0x4e57('0x4b')],{})[_0x4e57('0x27')](respondWithResult(_0x423986,0xc9))[_0x4e57('0x45')](handleError(_0x423986,null));};exports[_0x4e57('0x4c')]=function(_0x41d476,_0x48869d){if(_0x41d476[_0x4e57('0x4b')]['id']){delete _0x41d476[_0x4e57('0x4b')]['id'];}return db[_0x4e57('0x2c')][_0x4e57('0x49')]({'where':{'id':_0x41d476[_0x4e57('0x46')]['id']}})[_0x4e57('0x27')](handleEntityNotFound(_0x48869d,null))[_0x4e57('0x27')](saveUpdates(_0x41d476[_0x4e57('0x4b')],null))['then'](respondWithResult(_0x48869d,null))[_0x4e57('0x45')](handleError(_0x48869d,null));};exports['destroy']=function(_0x3deb47,_0x328c2c){return db[_0x4e57('0x2c')]['find']({'where':{'id':_0x3deb47[_0x4e57('0x46')]['id']}})['then'](handleEntityNotFound(_0x328c2c,null))[_0x4e57('0x27')](removeEntity(_0x328c2c,null))[_0x4e57('0x45')](handleError(_0x328c2c,null));};
\ No newline at end of file
+var _0xe75a=['bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','nolimit','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','DeskField','include','rows','catch','params','length','includeAll','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x434543,_0x2fd498){var _0x3e6749=function(_0x5956f7){while(--_0x5956f7){_0x434543['push'](_0x434543['shift']());}};_0x3e6749(++_0x2fd498);}(_0xe75a,0x1de));var _0xae75=function(_0x4b91c4,_0x23f35f){_0x4b91c4=_0x4b91c4-0x0;var _0x25cb80=_0xe75a[_0x4b91c4];return _0x25cb80;};'use strict';var emlformat=require(_0xae75('0x0'));var rimraf=require(_0xae75('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xae75('0x2'));var rp=require(_0xae75('0x3'));var moment=require(_0xae75('0x4'));var BPromise=require(_0xae75('0x5'));var Mustache=require(_0xae75('0x6'));var util=require(_0xae75('0x7'));var path=require(_0xae75('0x8'));var sox=require(_0xae75('0x9'));var csv=require(_0xae75('0xa'));var ejs=require(_0xae75('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xae75('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xae75('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae75('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xae75('0xf'));var as=require(_0xae75('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xae75('0x11'))(_0xae75('0x12'));var utils=require('../../config/utils');var config=require(_0xae75('0x13'));var licenseUtil=require(_0xae75('0x14'));var db=require(_0xae75('0x15'))['db'];function respondWithStatusCode(_0x5e9127,_0x435111){_0x435111=_0x435111||0xcc;return function(_0x1de6fd){if(_0x1de6fd){return _0x5e9127[_0xae75('0x16')](_0x435111);}return _0x5e9127[_0xae75('0x17')](_0x435111)[_0xae75('0x18')]();};}function respondWithResult(_0x2c1437,_0x39279a){_0x39279a=_0x39279a||0xc8;return function(_0x99fdc8){if(_0x99fdc8){return _0x2c1437[_0xae75('0x17')](_0x39279a)[_0xae75('0x19')](_0x99fdc8);}};}function respondWithFilteredResult(_0x5dcc10,_0x1f76dc){return function(_0xb1461d){if(_0xb1461d){var _0x46ebef=typeof _0x1f76dc[_0xae75('0x1a')]===_0xae75('0x1b')&&typeof _0x1f76dc[_0xae75('0x1c')]==='undefined';var _0x52f683=_0xb1461d[_0xae75('0x1d')];var _0x2cffc8=_0x46ebef?0x0:_0x1f76dc[_0xae75('0x1a')];var _0x582740=_0x46ebef?_0xb1461d[_0xae75('0x1d')]:_0x1f76dc[_0xae75('0x1a')]+_0x1f76dc[_0xae75('0x1c')];var _0x30a3b0;if(_0x582740>=_0x52f683){_0x582740=_0x52f683;_0x30a3b0=0xc8;}else{_0x30a3b0=0xce;}_0x5dcc10[_0xae75('0x17')](_0x30a3b0);return _0x5dcc10[_0xae75('0x1e')]('Content-Range',_0x2cffc8+'-'+_0x582740+'/'+_0x52f683)[_0xae75('0x19')](_0xb1461d);}return null;};}function patchUpdates(_0x43b698){return function(_0x3c82bc){try{jsonpatch[_0xae75('0x1f')](_0x3c82bc,_0x43b698,!![]);}catch(_0x2ec155){return BPromise[_0xae75('0x20')](_0x2ec155);}return _0x3c82bc[_0xae75('0x21')]();};}function saveUpdates(_0x3e656a,_0x33dc4d){return function(_0x56704c){if(_0x56704c){return _0x56704c[_0xae75('0x22')](_0x3e656a)[_0xae75('0x23')](function(_0x2f6b12){return _0x2f6b12;});}return null;};}function removeEntity(_0x349144,_0x4bdbba){return function(_0x52b6e6){if(_0x52b6e6){return _0x52b6e6[_0xae75('0x24')]()['then'](function(){_0x349144[_0xae75('0x17')](0xcc)[_0xae75('0x18')]();});}};}function handleEntityNotFound(_0x3f8b21,_0x14cdb8){return function(_0x25cb0b){if(!_0x25cb0b){_0x3f8b21[_0xae75('0x16')](0x194);}return _0x25cb0b;};}function handleError(_0x76fb08,_0x3a30f8){_0x3a30f8=_0x3a30f8||0x1f4;return function(_0x2af640){logger['error'](_0x2af640[_0xae75('0x25')]);if(_0x2af640['name']){delete _0x2af640[_0xae75('0x26')];}_0x76fb08[_0xae75('0x17')](_0x3a30f8)['send'](_0x2af640);};}exports['index']=function(_0x105007,_0x4cbe0d){var _0x8644b6={},_0x1b5c2f={},_0x2a19e6={'count':0x0,'rows':[]};var _0x2579f7=_['map'](db['DeskField'][_0xae75('0x27')],function(_0x5b2370){return{'name':_0x5b2370[_0xae75('0x28')],'type':_0x5b2370['type'][_0xae75('0x29')]};});_0x1b5c2f[_0xae75('0x2a')]=_[_0xae75('0x2b')](_0x2579f7,_0xae75('0x26'));_0x1b5c2f[_0xae75('0x2c')]=_[_0xae75('0x2d')](_0x105007[_0xae75('0x2c')]);_0x1b5c2f['filters']=_[_0xae75('0x2e')](_0x1b5c2f[_0xae75('0x2a')],_0x1b5c2f[_0xae75('0x2c')]);_0x8644b6[_0xae75('0x2f')]=_['intersection'](_0x1b5c2f[_0xae75('0x2a')],qs[_0xae75('0x30')](_0x105007[_0xae75('0x2c')][_0xae75('0x30')]));_0x8644b6[_0xae75('0x2f')]=_0x8644b6[_0xae75('0x2f')]['length']?_0x8644b6[_0xae75('0x2f')]:_0x1b5c2f[_0xae75('0x2a')];if(!_0x105007[_0xae75('0x2c')]['hasOwnProperty'](_0xae75('0x31'))){_0x8644b6[_0xae75('0x1c')]=qs[_0xae75('0x1c')](_0x105007[_0xae75('0x2c')][_0xae75('0x1c')]);_0x8644b6[_0xae75('0x1a')]=qs[_0xae75('0x1a')](_0x105007[_0xae75('0x2c')][_0xae75('0x1a')]);}_0x8644b6['order']=qs['sort'](_0x105007[_0xae75('0x2c')][_0xae75('0x32')]);_0x8644b6[_0xae75('0x33')]=qs[_0xae75('0x34')](_[_0xae75('0x35')](_0x105007['query'],_0x1b5c2f['filters']),_0x2579f7);if(_0x105007[_0xae75('0x2c')][_0xae75('0x36')]){_0x8644b6[_0xae75('0x33')]=_[_0xae75('0x37')](_0x8644b6[_0xae75('0x33')],{'$or':_[_0xae75('0x2b')](_0x2579f7,function(_0x126455){if(_0x126455[_0xae75('0x38')]!==_0xae75('0x39')){var _0x586f3c={};_0x586f3c[_0x126455[_0xae75('0x26')]]={'$like':'%'+_0x105007[_0xae75('0x2c')][_0xae75('0x36')]+'%'};return _0x586f3c;}})});}_0x8644b6=_['merge']({},_0x8644b6,_0x105007[_0xae75('0x3a')]);var _0x450440={'where':_0x8644b6[_0xae75('0x33')]};return db[_0xae75('0x3b')][_0xae75('0x1d')](_0x450440)[_0xae75('0x23')](function(_0x55ac4b){_0x2a19e6[_0xae75('0x1d')]=_0x55ac4b;if(_0x105007[_0xae75('0x2c')]['includeAll']){_0x8644b6[_0xae75('0x3c')]=[{'all':!![]}];}return db[_0xae75('0x3b')]['findAll'](_0x8644b6);})[_0xae75('0x23')](function(_0x4004ee){_0x2a19e6[_0xae75('0x3d')]=_0x4004ee;return _0x2a19e6;})[_0xae75('0x23')](respondWithFilteredResult(_0x4cbe0d,_0x8644b6))[_0xae75('0x3e')](handleError(_0x4cbe0d,null));};exports['show']=function(_0x2ff63b,_0x46ed96){var _0x350beb={'raw':!![],'where':{'id':_0x2ff63b[_0xae75('0x3f')]['id']}},_0x5decd2={};_0x5decd2[_0xae75('0x2a')]=_[_0xae75('0x2d')](db[_0xae75('0x3b')][_0xae75('0x27')]);_0x5decd2[_0xae75('0x2c')]=_['keys'](_0x2ff63b[_0xae75('0x2c')]);_0x5decd2[_0xae75('0x34')]=_[_0xae75('0x2e')](_0x5decd2['model'],_0x5decd2[_0xae75('0x2c')]);_0x350beb[_0xae75('0x2f')]=_[_0xae75('0x2e')](_0x5decd2['model'],qs[_0xae75('0x30')](_0x2ff63b[_0xae75('0x2c')][_0xae75('0x30')]));_0x350beb[_0xae75('0x2f')]=_0x350beb[_0xae75('0x2f')][_0xae75('0x40')]?_0x350beb[_0xae75('0x2f')]:_0x5decd2[_0xae75('0x2a')];if(_0x2ff63b[_0xae75('0x2c')][_0xae75('0x41')]){_0x350beb[_0xae75('0x3c')]=[{'all':!![]}];}_0x350beb=_[_0xae75('0x37')]({},_0x350beb,_0x2ff63b[_0xae75('0x3a')]);return db[_0xae75('0x3b')]['find'](_0x350beb)[_0xae75('0x23')](handleEntityNotFound(_0x46ed96,null))[_0xae75('0x23')](respondWithResult(_0x46ed96,null))[_0xae75('0x3e')](handleError(_0x46ed96,null));};exports['create']=function(_0x41ba3d,_0xd0ff9d){return db[_0xae75('0x3b')][_0xae75('0x42')](_0x41ba3d[_0xae75('0x43')],{})[_0xae75('0x23')](respondWithResult(_0xd0ff9d,0xc9))[_0xae75('0x3e')](handleError(_0xd0ff9d,null));};exports[_0xae75('0x22')]=function(_0x434787,_0x262c66){if(_0x434787['body']['id']){delete _0x434787[_0xae75('0x43')]['id'];}return db[_0xae75('0x3b')][_0xae75('0x44')]({'where':{'id':_0x434787['params']['id']}})[_0xae75('0x23')](handleEntityNotFound(_0x262c66,null))[_0xae75('0x23')](saveUpdates(_0x434787['body'],null))[_0xae75('0x23')](respondWithResult(_0x262c66,null))[_0xae75('0x3e')](handleError(_0x262c66,null));};exports['destroy']=function(_0x4d196b,_0x4a66f9){return db['DeskField'][_0xae75('0x44')]({'where':{'id':_0x4d196b['params']['id']}})[_0xae75('0x23')](handleEntityNotFound(_0x4a66f9,null))[_0xae75('0x23')](removeEntity(_0x4a66f9,null))[_0xae75('0x3e')](handleError(_0x4a66f9,null));};
\ No newline at end of file
index e4d57f9..0b5af02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf60=['desk_unique_index','idField','FieldId','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','int_desk_fields'];(function(_0x2d5806,_0x159524){var _0xba5939=function(_0x529abc){while(--_0x529abc){_0x2d5806['push'](_0x2d5806['shift']());}};_0xba5939(++_0x159524);}(_0xcf60,0xc6));var _0x0cf6=function(_0x3d6f38,_0x3922ec){_0x3d6f38=_0x3d6f38-0x0;var _0x30bdb4=_0xcf60[_0x3d6f38];return _0x30bdb4;};'use strict';var _=require('lodash');var util=require(_0x0cf6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x0cf6('0x1'));var BPromise=require(_0x0cf6('0x2'));var rp=require(_0x0cf6('0x3'));var fs=require('fs');var path=require(_0x0cf6('0x4'));var rimraf=require(_0x0cf6('0x5'));var config=require(_0x0cf6('0x6'));var attributes=require(_0x0cf6('0x7'));module[_0x0cf6('0x8')]=function(_0x5dfd72,_0x15b2a5){return _0x5dfd72['define']('DeskField',attributes,{'tableName':_0x0cf6('0x9'),'paranoid':![],'indexes':[{'name':_0x0cf6('0xa'),'fields':[_0x0cf6('0xb'),_0x0cf6('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f20=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index'];(function(_0x11fc7e,_0x2fa1a2){var _0x572f83=function(_0x3e7cd5){while(--_0x3e7cd5){_0x11fc7e['push'](_0x11fc7e['shift']());}};_0x572f83(++_0x2fa1a2);}(_0x0f20,0x10b));var _0x00f2=function(_0x8aff40,_0x12d07c){_0x8aff40=_0x8aff40-0x0;var _0x1cb209=_0x0f20[_0x8aff40];return _0x1cb209;};'use strict';var _=require(_0x00f2('0x0'));var util=require(_0x00f2('0x1'));var logger=require(_0x00f2('0x2'))(_0x00f2('0x3'));var moment=require(_0x00f2('0x4'));var BPromise=require(_0x00f2('0x5'));var rp=require(_0x00f2('0x6'));var fs=require('fs');var path=require(_0x00f2('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x00f2('0x8'));module[_0x00f2('0x9')]=function(_0x5db63a,_0x5f41e0){return _0x5db63a[_0x00f2('0xa')]('DeskField',attributes,{'tableName':_0x00f2('0xb'),'paranoid':![],'indexes':[{'name':_0x00f2('0xc'),'fields':['idField',_0x00f2('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0b9389d..37f7a50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ada=['rpc','../../config/environment','client','http','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x7ada,0x158));var _0xa7ad=function(_0x3b428a,_0x4afc2c){_0x3b428a=_0x3b428a-0x0;var _0x45cb11=_0x7ada[_0x3b428a];return _0x45cb11;};'use strict';var _=require(_0xa7ad('0x0'));var util=require(_0xa7ad('0x1'));var moment=require(_0xa7ad('0x2'));var BPromise=require(_0xa7ad('0x3'));var rs=require(_0xa7ad('0x4'));var fs=require('fs');var Redis=require(_0xa7ad('0x5'));var db=require(_0xa7ad('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa7ad('0x7'))(_0xa7ad('0x8'));var config=require(_0xa7ad('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa7ad('0xa')][_0xa7ad('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x327942,_0x1ef0cd,_0x44bd5a){return new BPromise(function(_0x44c4fc,_0x14485c){return client['request'](_0x327942,_0x44bd5a)[_0xa7ad('0xc')](function(_0x2df6f0){logger[_0xa7ad('0xd')](_0xa7ad('0xe'),_0x1ef0cd,_0xa7ad('0xf'));logger[_0xa7ad('0x10')](_0xa7ad('0x11'),_0x1ef0cd,_0xa7ad('0xf'),JSON[_0xa7ad('0x12')](_0x2df6f0));if(_0x2df6f0[_0xa7ad('0x13')]){if(_0x2df6f0[_0xa7ad('0x13')]['code']===0x1f4){logger[_0xa7ad('0x13')](_0xa7ad('0xe'),_0x1ef0cd,_0x2df6f0['error'][_0xa7ad('0x14')]);return _0x14485c(_0x2df6f0['error'][_0xa7ad('0x14')]);}logger[_0xa7ad('0x13')](_0xa7ad('0xe'),_0x1ef0cd,_0x2df6f0['error']['message']);return _0x44c4fc(_0x2df6f0[_0xa7ad('0x13')]['message']);}else{logger[_0xa7ad('0xd')](_0xa7ad('0xe'),_0x1ef0cd,_0xa7ad('0xf'));_0x44c4fc(_0x2df6f0[_0xa7ad('0x15')][_0xa7ad('0x14')]);}})['catch'](function(_0x3995a1){logger[_0xa7ad('0x13')](_0xa7ad('0xe'),_0x1ef0cd,_0x3995a1);_0x14485c(_0x3995a1);});});}
\ No newline at end of file
+var _0xa419=['catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x3d1187,_0x2a8e79){var _0x3ceb4d=function(_0x54aa9b){while(--_0x54aa9b){_0x3d1187['push'](_0x3d1187['shift']());}};_0x3ceb4d(++_0x2a8e79);}(_0xa419,0x1a3));var _0x9a41=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa419[_0xea8947];return _0x2455e9;};'use strict';var _=require(_0x9a41('0x0'));var util=require(_0x9a41('0x1'));var moment=require(_0x9a41('0x2'));var BPromise=require('bluebird');var rs=require(_0x9a41('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9a41('0x4'))['db'];var utils=require(_0x9a41('0x5'));var logger=require(_0x9a41('0x6'))(_0x9a41('0x7'));var config=require(_0x9a41('0x8'));var jayson=require(_0x9a41('0x9'));var client=jayson[_0x9a41('0xa')][_0x9a41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20cede,_0x2defe7,_0x4693a5){return new BPromise(function(_0x44a265,_0x23a131){return client[_0x9a41('0xc')](_0x20cede,_0x4693a5)['then'](function(_0x397ba0){logger[_0x9a41('0xd')](_0x9a41('0xe'),_0x2defe7,_0x9a41('0xf'));logger[_0x9a41('0x10')](_0x9a41('0x11'),_0x2defe7,_0x9a41('0xf'),JSON['stringify'](_0x397ba0));if(_0x397ba0[_0x9a41('0x12')]){if(_0x397ba0[_0x9a41('0x12')]['code']===0x1f4){logger[_0x9a41('0x12')](_0x9a41('0xe'),_0x2defe7,_0x397ba0['error'][_0x9a41('0x13')]);return _0x23a131(_0x397ba0['error'][_0x9a41('0x13')]);}logger[_0x9a41('0x12')]('DeskField,\x20%s,\x20%s',_0x2defe7,_0x397ba0[_0x9a41('0x12')][_0x9a41('0x13')]);return _0x44a265(_0x397ba0['error'][_0x9a41('0x13')]);}else{logger[_0x9a41('0xd')](_0x9a41('0xe'),_0x2defe7,'request\x20sent');_0x44a265(_0x397ba0[_0x9a41('0x14')][_0x9a41('0x13')]);}})[_0x9a41('0x15')](function(_0x2da098){logger['error'](_0x9a41('0xe'),_0x2defe7,_0x2da098);_0x23a131(_0x2da098);});});}
\ No newline at end of file
index 7144e7c..342403c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b38=['fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getFields','create','post','addConfiguration','put','update','delete','destroy','exports','path','connect-timeout','express','Router'];(function(_0x4c5ac3,_0x2081dc){var _0x1881c8=function(_0x47cecd){while(--_0x47cecd){_0x4c5ac3['push'](_0x4c5ac3['shift']());}};_0x1881c8(++_0x2081dc);}(_0x9b38,0xcb));var _0x89b3=function(_0x204841,_0x571c17){_0x204841=_0x204841-0x0;var _0x5c1084=_0x9b38[_0x204841];return _0x5c1084;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x89b3('0x0'));var timeout=require(_0x89b3('0x1'));var express=require(_0x89b3('0x2'));var router=express[_0x89b3('0x3')]();var fs_extra=require(_0x89b3('0x4'));var auth=require(_0x89b3('0x5'));var interaction=require(_0x89b3('0x6'));var config=require('../../config/environment');var controller=require(_0x89b3('0x7'));router[_0x89b3('0x8')]('/',auth[_0x89b3('0x9')](),controller[_0x89b3('0xa')]);router[_0x89b3('0x8')](_0x89b3('0xb'),auth['isAuthenticated'](),controller[_0x89b3('0xc')]);router[_0x89b3('0x8')](_0x89b3('0xd'),auth['isAuthenticated'](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x89b3('0x9')](),controller[_0x89b3('0xe')]);router['post']('/',auth[_0x89b3('0x9')](),controller[_0x89b3('0xf')]);router[_0x89b3('0x10')](_0x89b3('0xd'),auth[_0x89b3('0x9')](),controller[_0x89b3('0x11')]);router[_0x89b3('0x12')](_0x89b3('0xb'),auth['isAuthenticated'](),controller[_0x89b3('0x13')]);router[_0x89b3('0x14')](_0x89b3('0xb'),auth[_0x89b3('0x9')](),controller[_0x89b3('0x15')]);module[_0x89b3('0x16')]=router;
\ No newline at end of file
+var _0x1435=['get','isAuthenticated','/:id/configurations','/:id/fields','post','create','/:id','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x179469,_0x4d0da8){var _0x131cb6=function(_0x18945e){while(--_0x18945e){_0x179469['push'](_0x179469['shift']());}};_0x131cb6(++_0x4d0da8);}(_0x1435,0x1cc));var _0x5143=function(_0x30ec81,_0x1bc7e1){_0x30ec81=_0x30ec81-0x0;var _0x2d25ae=_0x1435[_0x30ec81];return _0x2d25ae;};'use strict';var multer=require(_0x5143('0x0'));var util=require(_0x5143('0x1'));var path=require(_0x5143('0x2'));var timeout=require(_0x5143('0x3'));var express=require('express');var router=express[_0x5143('0x4')]();var fs_extra=require(_0x5143('0x5'));var auth=require(_0x5143('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5143('0x7'));var controller=require('./intDynamics365Account.controller');router[_0x5143('0x8')]('/',auth[_0x5143('0x9')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5143('0x8')](_0x5143('0xa'),auth[_0x5143('0x9')](),controller['getConfigurations']);router[_0x5143('0x8')](_0x5143('0xb'),auth[_0x5143('0x9')](),controller['getFields']);router[_0x5143('0xc')]('/',auth[_0x5143('0x9')](),controller[_0x5143('0xd')]);router['post'](_0x5143('0xa'),auth[_0x5143('0x9')](),controller['addConfiguration']);router['put'](_0x5143('0xe'),auth[_0x5143('0x9')](),controller[_0x5143('0xf')]);router[_0x5143('0x10')](_0x5143('0xe'),auth['isAuthenticated'](),controller[_0x5143('0x11')]);module['exports']=router;
\ No newline at end of file
index 666b78f..191704a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3fc=['sequelize','exports','STRING'];(function(_0x83a753,_0x4773e6){var _0x2b598b=function(_0x5e75de){while(--_0x5e75de){_0x83a753['push'](_0x83a753['shift']());}};_0x2b598b(++_0x4773e6);}(_0xf3fc,0x147));var _0xcf3f=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xf3fc[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0xcf3f('0x0'));module[_0xcf3f('0x1')]={'name':{'type':Sequelize[_0xcf3f('0x2')]},'username':{'type':Sequelize[_0xcf3f('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xcf3f('0x2')]},'clientId':{'type':Sequelize[_0xcf3f('0x2')]},'clientSecret':{'type':Sequelize[_0xcf3f('0x2')]},'serverUrl':{'type':Sequelize[_0xcf3f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xcf3f('0x2')]}};
\ No newline at end of file
+var _0x55f2=['STRING','sequelize','exports'];(function(_0x361d47,_0x579b27){var _0x1a47e4=function(_0xe571c7){while(--_0xe571c7){_0x361d47['push'](_0x361d47['shift']());}};_0x1a47e4(++_0x579b27);}(_0x55f2,0x193));var _0x255f=function(_0x1cfd3a,_0x4fde25){_0x1cfd3a=_0x1cfd3a-0x0;var _0x11ef82=_0x55f2[_0x1cfd3a];return _0x11ef82;};'use strict';var Sequelize=require(_0x255f('0x0'));module[_0x255f('0x1')]={'name':{'type':Sequelize[_0x255f('0x2')]},'username':{'type':Sequelize[_0x255f('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x255f('0x2')]},'tenantId':{'type':Sequelize[_0x255f('0x2')]},'clientId':{'type':Sequelize[_0x255f('0x2')]},'clientSecret':{'type':Sequelize[_0x255f('0x2')]},'serverUrl':{'type':Sequelize[_0x255f('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x255f('0x2')]}};
\ No newline at end of file
index e6ff2e3..c34b0da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff96=['limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','includeAll','include','findAll','rows','catch','params','keys','options','create','body','update','find','destroy','findOne','Dynamics365Configuration','order','pick','getConfigurations','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','ticketType','Incident','PhoneCall','description','customerid','ownerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','importsequencenumber','influencescore','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','owneridtype','owneridyominame','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','ticketnumber','transactioncurrencyidname','traversedpath','concat','username','remoteUri','clientId','clientSecret','substring','format','POST','tenantId','/oauth2/token','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','value','MetadataId',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','4.0','Attributes','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','isNil','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','UserLocalizedLabel','Label','Value','DisplayName','false','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x37c22c,_0x28a70d){var _0x119d79=function(_0x243a13){while(--_0x243a13){_0x37c22c['push'](_0x37c22c['shift']());}};_0x119d79(++_0x28a70d);}(_0xff96,0x179));var _0x6ff9=function(_0x520c24,_0x3fb9af){_0x520c24=_0x520c24-0x0;var _0x377104=_0xff96[_0x520c24];return _0x377104;};'use strict';var emlformat=require(_0x6ff9('0x0'));var rimraf=require(_0x6ff9('0x1'));var zipdir=require(_0x6ff9('0x2'));var jsonpatch=require(_0x6ff9('0x3'));var rp=require(_0x6ff9('0x4'));var moment=require(_0x6ff9('0x5'));var BPromise=require(_0x6ff9('0x6'));var Mustache=require(_0x6ff9('0x7'));var util=require(_0x6ff9('0x8'));var path=require(_0x6ff9('0x9'));var sox=require(_0x6ff9('0xa'));var csv=require(_0x6ff9('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6ff9('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6ff9('0xd'));var deskjs=require(_0x6ff9('0xe'));var toCsv=require(_0x6ff9('0xb'));var querystring=require(_0x6ff9('0xf'));var Papa=require(_0x6ff9('0x10'));var Redis=require(_0x6ff9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6ff9('0x12'));var as=require(_0x6ff9('0x13'));var hardwareService=require(_0x6ff9('0x14'));var logger=require(_0x6ff9('0x15'))(_0x6ff9('0x16'));var utils=require(_0x6ff9('0x17'));var config=require(_0x6ff9('0x18'));var licenseUtil=require(_0x6ff9('0x19'));var db=require(_0x6ff9('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4a1aad,_0x3a1120){_0x3a1120=_0x3a1120||0xcc;return function(_0x5ed2c6){if(_0x5ed2c6){return _0x4a1aad[_0x6ff9('0x1b')](_0x3a1120);}return _0x4a1aad[_0x6ff9('0x1c')](_0x3a1120)[_0x6ff9('0x1d')]();};}function respondWithResult(_0x58022a,_0x5b56c3){_0x5b56c3=_0x5b56c3||0xc8;return function(_0x30c5b2){if(_0x30c5b2){return _0x58022a[_0x6ff9('0x1c')](_0x5b56c3)[_0x6ff9('0x1e')](_0x30c5b2);}};}function respondWithFilteredResult(_0xc3a8aa,_0x4d3655){return function(_0x5a9a52){if(_0x5a9a52){var _0x17b0c7=typeof _0x4d3655[_0x6ff9('0x1f')]===_0x6ff9('0x20')&&typeof _0x4d3655[_0x6ff9('0x21')]===_0x6ff9('0x20');var _0x54d5ff=_0x5a9a52[_0x6ff9('0x22')];var _0x4756be=_0x17b0c7?0x0:_0x4d3655[_0x6ff9('0x1f')];var _0x5b0a94=_0x17b0c7?_0x5a9a52['count']:_0x4d3655['offset']+_0x4d3655[_0x6ff9('0x21')];var _0x1b4753;if(_0x5b0a94>=_0x54d5ff){_0x5b0a94=_0x54d5ff;_0x1b4753=0xc8;}else{_0x1b4753=0xce;}_0xc3a8aa[_0x6ff9('0x1c')](_0x1b4753);return _0xc3a8aa[_0x6ff9('0x23')](_0x6ff9('0x24'),_0x4756be+'-'+_0x5b0a94+'/'+_0x54d5ff)['json'](_0x5a9a52);}return null;};}function patchUpdates(_0x1356fa){return function(_0x40e8a9){try{jsonpatch[_0x6ff9('0x25')](_0x40e8a9,_0x1356fa,!![]);}catch(_0x3ead33){return BPromise[_0x6ff9('0x26')](_0x3ead33);}return _0x40e8a9[_0x6ff9('0x27')]();};}function saveUpdates(_0x50f207,_0x647ce3){return function(_0x87d0d0){if(_0x87d0d0){return _0x87d0d0['update'](_0x50f207)[_0x6ff9('0x28')](function(_0xfc1c6b){return _0xfc1c6b;});}return null;};}function removeEntity(_0x4521b2,_0x5777f5){return function(_0x5a977c){if(_0x5a977c){return _0x5a977c['destroy']()[_0x6ff9('0x28')](function(){_0x4521b2[_0x6ff9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f6b0f,_0x12cbd8){return function(_0x5c84a9){if(!_0x5c84a9){_0x4f6b0f['sendStatus'](0x194);}return _0x5c84a9;};}function handleError(_0x41e511,_0x4033e9){_0x4033e9=_0x4033e9||0x1f4;return function(_0x210ca5){logger[_0x6ff9('0x29')](_0x210ca5[_0x6ff9('0x2a')]);if(_0x210ca5[_0x6ff9('0x2b')]){delete _0x210ca5[_0x6ff9('0x2b')];}_0x41e511[_0x6ff9('0x1c')](_0x4033e9)[_0x6ff9('0x2c')](_0x210ca5);};}exports[_0x6ff9('0x2d')]=function(_0x380b15,_0x40b5cb){var _0x41a281={},_0x861a5f={},_0x1fc695={'count':0x0,'rows':[]};var _0x148e10=_[_0x6ff9('0x2e')](db[_0x6ff9('0x2f')][_0x6ff9('0x30')],function(_0x1dbcc8){return{'name':_0x1dbcc8[_0x6ff9('0x31')],'type':_0x1dbcc8[_0x6ff9('0x32')]['key']};});_0x861a5f[_0x6ff9('0x33')]=_[_0x6ff9('0x2e')](_0x148e10,_0x6ff9('0x2b'));_0x861a5f[_0x6ff9('0x34')]=_['keys'](_0x380b15[_0x6ff9('0x34')]);_0x861a5f[_0x6ff9('0x35')]=_[_0x6ff9('0x36')](_0x861a5f[_0x6ff9('0x33')],_0x861a5f[_0x6ff9('0x34')]);_0x41a281[_0x6ff9('0x37')]=_[_0x6ff9('0x36')](_0x861a5f[_0x6ff9('0x33')],qs[_0x6ff9('0x38')](_0x380b15['query'][_0x6ff9('0x38')]));_0x41a281[_0x6ff9('0x37')]=_0x41a281[_0x6ff9('0x37')][_0x6ff9('0x39')]?_0x41a281[_0x6ff9('0x37')]:_0x861a5f[_0x6ff9('0x33')];if(!_0x380b15['query'][_0x6ff9('0x3a')]('nolimit')){_0x41a281[_0x6ff9('0x21')]=qs['limit'](_0x380b15[_0x6ff9('0x34')][_0x6ff9('0x21')]);_0x41a281[_0x6ff9('0x1f')]=qs[_0x6ff9('0x1f')](_0x380b15[_0x6ff9('0x34')][_0x6ff9('0x1f')]);}_0x41a281['order']=qs[_0x6ff9('0x3b')](_0x380b15[_0x6ff9('0x34')][_0x6ff9('0x3b')]);_0x41a281[_0x6ff9('0x3c')]=qs[_0x6ff9('0x35')](_['pick'](_0x380b15[_0x6ff9('0x34')],_0x861a5f[_0x6ff9('0x35')]),_0x148e10);if(_0x380b15['query']['filter']){_0x41a281['where']=_['merge'](_0x41a281['where'],{'$or':_[_0x6ff9('0x2e')](_0x148e10,function(_0x4f857f){if(_0x4f857f['type']!=='VIRTUAL'){var _0x2f02ab={};_0x2f02ab[_0x4f857f[_0x6ff9('0x2b')]]={'$like':'%'+_0x380b15[_0x6ff9('0x34')][_0x6ff9('0x3d')]+'%'};return _0x2f02ab;}})});}_0x41a281=_[_0x6ff9('0x3e')]({},_0x41a281,_0x380b15['options']);var _0x1f2020={'where':_0x41a281['where']};return db['Dynamics365Account'][_0x6ff9('0x22')](_0x1f2020)['then'](function(_0x4eea6d){_0x1fc695[_0x6ff9('0x22')]=_0x4eea6d;if(_0x380b15['query'][_0x6ff9('0x3f')]){_0x41a281[_0x6ff9('0x40')]=[{'all':!![]}];}return db[_0x6ff9('0x2f')][_0x6ff9('0x41')](_0x41a281);})['then'](function(_0x2c4079){_0x1fc695[_0x6ff9('0x42')]=_0x2c4079;return _0x1fc695;})[_0x6ff9('0x28')](respondWithFilteredResult(_0x40b5cb,_0x41a281))[_0x6ff9('0x43')](handleError(_0x40b5cb,null));};exports['show']=function(_0x3e8b04,_0x4a4222){var _0xfaa623={'raw':![],'where':{'id':_0x3e8b04[_0x6ff9('0x44')]['id']}},_0x42584a={};_0x42584a[_0x6ff9('0x33')]=_[_0x6ff9('0x45')](db['Dynamics365Account'][_0x6ff9('0x30')]);_0x42584a[_0x6ff9('0x34')]=_['keys'](_0x3e8b04[_0x6ff9('0x34')]);_0x42584a[_0x6ff9('0x35')]=_[_0x6ff9('0x36')](_0x42584a[_0x6ff9('0x33')],_0x42584a[_0x6ff9('0x34')]);_0xfaa623[_0x6ff9('0x37')]=_[_0x6ff9('0x36')](_0x42584a[_0x6ff9('0x33')],qs[_0x6ff9('0x38')](_0x3e8b04[_0x6ff9('0x34')][_0x6ff9('0x38')]));_0xfaa623[_0x6ff9('0x37')]=_0xfaa623[_0x6ff9('0x37')][_0x6ff9('0x39')]?_0xfaa623[_0x6ff9('0x37')]:_0x42584a['model'];if(_0x3e8b04[_0x6ff9('0x34')][_0x6ff9('0x3f')]){_0xfaa623[_0x6ff9('0x40')]=[{'all':!![]}];}_0xfaa623=_['merge']({},_0xfaa623,_0x3e8b04[_0x6ff9('0x46')]);return db[_0x6ff9('0x2f')]['find'](_0xfaa623)[_0x6ff9('0x28')](handleEntityNotFound(_0x4a4222,null))['then'](respondWithResult(_0x4a4222,null))[_0x6ff9('0x43')](handleError(_0x4a4222,null));};exports[_0x6ff9('0x47')]=function(_0x3c80b6,_0x16d897){return db[_0x6ff9('0x2f')][_0x6ff9('0x47')](_0x3c80b6[_0x6ff9('0x48')],{})[_0x6ff9('0x28')](respondWithResult(_0x16d897,0xc9))['catch'](handleError(_0x16d897,null));};exports[_0x6ff9('0x49')]=function(_0x223532,_0x342d29){if(_0x223532[_0x6ff9('0x48')]['id']){delete _0x223532[_0x6ff9('0x48')]['id'];}return db[_0x6ff9('0x2f')][_0x6ff9('0x4a')]({'where':{'id':_0x223532[_0x6ff9('0x44')]['id']}})[_0x6ff9('0x28')](handleEntityNotFound(_0x342d29,null))[_0x6ff9('0x28')](saveUpdates(_0x223532[_0x6ff9('0x48')],null))[_0x6ff9('0x28')](respondWithResult(_0x342d29,null))[_0x6ff9('0x43')](handleError(_0x342d29,null));};exports[_0x6ff9('0x4b')]=function(_0x213c77,_0x5af341){return db['Dynamics365Account'][_0x6ff9('0x4a')]({'where':{'id':_0x213c77[_0x6ff9('0x44')]['id']}})[_0x6ff9('0x28')](handleEntityNotFound(_0x5af341,null))[_0x6ff9('0x28')](removeEntity(_0x5af341,null))[_0x6ff9('0x43')](handleError(_0x5af341,null));};exports['getConfigurations']=function(_0x1b49ab,_0x54e50e,_0x1164bb){var _0x287782={};var _0x553f27={};var _0x354fb5;var _0x772585;return db[_0x6ff9('0x2f')][_0x6ff9('0x4c')]({'where':{'id':_0x1b49ab[_0x6ff9('0x44')]['id']}})[_0x6ff9('0x28')](handleEntityNotFound(_0x54e50e,null))[_0x6ff9('0x28')](function(_0x452c60){if(_0x452c60){_0x354fb5=_0x452c60;_0x553f27[_0x6ff9('0x33')]=_[_0x6ff9('0x45')](db[_0x6ff9('0x4d')]['rawAttributes']);_0x553f27['query']=_[_0x6ff9('0x45')](_0x1b49ab[_0x6ff9('0x34')]);_0x553f27['filters']=_['intersection'](_0x553f27['model'],_0x553f27[_0x6ff9('0x34')]);_0x287782['attributes']=_[_0x6ff9('0x36')](_0x553f27[_0x6ff9('0x33')],qs[_0x6ff9('0x38')](_0x1b49ab['query']['fields']));_0x287782[_0x6ff9('0x37')]=_0x287782[_0x6ff9('0x37')][_0x6ff9('0x39')]?_0x287782[_0x6ff9('0x37')]:_0x553f27[_0x6ff9('0x33')];_0x287782[_0x6ff9('0x4e')]=qs[_0x6ff9('0x3b')](_0x1b49ab[_0x6ff9('0x34')][_0x6ff9('0x3b')]);_0x287782[_0x6ff9('0x3c')]=qs[_0x6ff9('0x35')](_[_0x6ff9('0x4f')](_0x1b49ab[_0x6ff9('0x34')],_0x553f27[_0x6ff9('0x35')]));if(_0x1b49ab[_0x6ff9('0x34')]['filter']){_0x287782[_0x6ff9('0x3c')]=_[_0x6ff9('0x3e')](_0x287782[_0x6ff9('0x3c')],{'$or':_['map'](_0x287782[_0x6ff9('0x37')],function(_0x74f41c){var _0x47fa33={};_0x47fa33[_0x74f41c]={'$like':'%'+_0x1b49ab[_0x6ff9('0x34')][_0x6ff9('0x3d')]+'%'};return _0x47fa33;})});}_0x287782=_[_0x6ff9('0x3e')]({},_0x287782,_0x1b49ab[_0x6ff9('0x46')]);return _0x354fb5[_0x6ff9('0x50')](_0x287782);}})[_0x6ff9('0x28')](function(_0x187344){if(_0x187344){_0x772585=_0x187344[_0x6ff9('0x39')];if(!_0x1b49ab[_0x6ff9('0x34')]['hasOwnProperty'](_0x6ff9('0x51'))){_0x287782[_0x6ff9('0x21')]=qs[_0x6ff9('0x21')](_0x1b49ab[_0x6ff9('0x34')][_0x6ff9('0x21')]);_0x287782[_0x6ff9('0x1f')]=qs[_0x6ff9('0x1f')](_0x1b49ab[_0x6ff9('0x34')][_0x6ff9('0x1f')]);}return _0x354fb5['getConfigurations'](_0x287782);}})[_0x6ff9('0x28')](function(_0x26d3ac){if(_0x26d3ac){return _0x26d3ac?{'count':_0x772585,'rows':_0x26d3ac}:null;}})[_0x6ff9('0x28')](respondWithResult(_0x54e50e,null))[_0x6ff9('0x43')](handleError(_0x54e50e,null));};exports['addConfiguration']=function(_0x2734a1,_0x383877,_0x5b3544){if(_0x2734a1[_0x6ff9('0x48')]['id']){delete _0x2734a1[_0x6ff9('0x48')]['id'];}return db[_0x6ff9('0x2f')][_0x6ff9('0x4c')]({'where':{'id':_0x2734a1[_0x6ff9('0x44')]['id']}})[_0x6ff9('0x28')](handleEntityNotFound(_0x383877,null))['then'](function(_0x3098e3){if(_0x3098e3){_0x2734a1['body'][_0x6ff9('0x52')]=_0x3098e3['id'];_0x2734a1[_0x6ff9('0x48')][_0x6ff9('0x53')]=integrations[_0x6ff9('0x54')](_0x2734a1[_0x6ff9('0x48')][_0x6ff9('0x55')],_0x2734a1['body'][_0x6ff9('0x32')]);_0x2734a1[_0x6ff9('0x48')][_0x6ff9('0x56')]=integrations[_0x6ff9('0x57')](_0x2734a1['body'][_0x6ff9('0x55')],_0x2734a1['body'][_0x6ff9('0x32')]);return db[_0x6ff9('0x4d')][_0x6ff9('0x47')](_0x2734a1[_0x6ff9('0x48')],{'include':[{'model':db[_0x6ff9('0x58')],'as':_0x6ff9('0x53')},{'model':db[_0x6ff9('0x58')],'as':_0x6ff9('0x56')}]});}return null;})['then'](respondWithResult(_0x383877,null))[_0x6ff9('0x43')](handleError(_0x383877,null));};exports[_0x6ff9('0x59')]=function(_0x480b39,_0x3dbbd0,_0x12e645){var _0x157e75=_0x480b39['query'][_0x6ff9('0x5a')];var _0xa09e5a=_0x157e75==='incident'?_0x6ff9('0x5b'):_0x6ff9('0x5c');var _0x329822='';var _0x2f898a='';var _0x12743a='';var _0x594167='';var _0x47c96f='';var _0x41d326='';var _0x211d93='';var _0x2491f8='';var _0x2a3495=['title',_0x6ff9('0x5d'),_0x6ff9('0x5e'),_0x6ff9('0x5f'),_0x6ff9('0x60'),_0x6ff9('0x61'),'phonenumber',_0x6ff9('0x62'),_0x6ff9('0x63'),_0x6ff9('0x64')];var _0x312ce3=[_0x6ff9('0x65'),_0x6ff9('0x66'),_0x6ff9('0x67'),'billedserviceunits',_0x6ff9('0x68'),_0x6ff9('0x69'),_0x6ff9('0x6a'),_0x6ff9('0x6b'),_0x6ff9('0x6c'),_0x6ff9('0x6d'),_0x6ff9('0x6e'),_0x6ff9('0x6f'),_0x6ff9('0x70'),'createdonbehalfbyname','createdonbehalfbyyominame',_0x6ff9('0x71'),_0x6ff9('0x72'),_0x6ff9('0x73'),_0x6ff9('0x74'),_0x6ff9('0x75'),_0x6ff9('0x76'),_0x6ff9('0x77'),_0x6ff9('0x78'),'exchangerate','firstresponsebykpiidname','followupby',_0x6ff9('0x79'),_0x6ff9('0x7a'),'kbarticleidname','lastonholdtime',_0x6ff9('0x7b'),_0x6ff9('0x7c'),_0x6ff9('0x7d'),_0x6ff9('0x7e'),_0x6ff9('0x7f'),_0x6ff9('0x80'),'modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0x6ff9('0x81'),_0x6ff9('0x82'),_0x6ff9('0x83'),_0x6ff9('0x84'),'overriddencreatedon',_0x6ff9('0x85'),_0x6ff9('0x86'),_0x6ff9('0x87'),'parentcaseidname',_0x6ff9('0x88'),_0x6ff9('0x89'),_0x6ff9('0x8a'),_0x6ff9('0x8b'),_0x6ff9('0x8c'),_0x6ff9('0x8d'),_0x6ff9('0x8e'),_0x6ff9('0x8f'),_0x6ff9('0x90'),_0x6ff9('0x91'),_0x6ff9('0x92'),'slainvokedidname',_0x6ff9('0x93'),_0x6ff9('0x94'),_0x6ff9('0x95'),'statuscode','subjectidname',_0x6ff9('0x96'),'timezoneruleversionnumber',_0x6ff9('0x97'),_0x6ff9('0x98'),'utcconversiontimezonecode','versionnumber'];var _0x3cd769=_0x2a3495[_0x6ff9('0x99')](_0x312ce3);return db[_0x6ff9('0x2f')][_0x6ff9('0x4c')]({'where':{'id':_0x480b39[_0x6ff9('0x44')]['id']},'attributes':['id',_0x6ff9('0x9a'),'password',_0x6ff9('0x9b'),'tenantId',_0x6ff9('0x9c'),_0x6ff9('0x9d')]})[_0x6ff9('0x28')](handleEntityNotFound(_0x3dbbd0,null))[_0x6ff9('0x28')](function(_0x578425){if(_0x578425){_0x2491f8=_0x578425['remoteUri'];var _0x4255e9=_0x2491f8['slice'](-0x1);if(_0x4255e9==='/'){_0x2491f8=_0x2491f8[_0x6ff9('0x9e')](0x0,_0x2491f8['lastIndexOf'](_0x4255e9));}_0x211d93=util[_0x6ff9('0x9f')]('%s/api/data/v9.0/',_0x2491f8);var _0x580237={'method':_0x6ff9('0xa0'),'uri':'https://login.microsoftonline.com/'+_0x578425[_0x6ff9('0xa1')]+_0x6ff9('0xa2'),'form':{'client_id':_0x578425[_0x6ff9('0x9c')],'resource':_0x2491f8,'username':_0x578425[_0x6ff9('0x9a')],'password':_0x578425[_0x6ff9('0xa3')],'grant_type':_0x6ff9('0xa3'),'client_secret':_0x578425[_0x6ff9('0x9d')]},'json':!![]};return rp(_0x580237);}})['then'](function(_0x2d16d8){_0x41d326=_0x2d16d8[_0x6ff9('0xa4')];var _0x1f9812={'method':_0x6ff9('0xa5'),'uri':encodeURI(_0x211d93+_0x6ff9('0xa6')+_0xa09e5a+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x41d326,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1f9812);})[_0x6ff9('0x28')](function(_0x2b7cb5){var _0x144d19=_0x2b7cb5[_0x6ff9('0xa7')][0x0];var _0x48f2a5=_0x144d19[_0x6ff9('0xa8')];var _0x3ee4cc={'method':_0x6ff9('0xa5'),'uri':_0x211d93+'EntityDefinitions('+_0x48f2a5+_0x6ff9('0xa9'),'headers':{'Authorization':_0x6ff9('0xaa')+_0x41d326,'If-None-Match':null,'OData-Version':_0x6ff9('0xab')},'json':!![]};return rp(_0x3ee4cc);})['then'](function(_0x57d415){_0x329822=_0x57d415;_0x2f898a=_0x329822[_0x6ff9('0xac')];_0x2f898a=_['remove'](_0x2f898a,function(_0x3dd642){return!_0x3cd769[_0x6ff9('0xad')](_0x3dd642[_0x6ff9('0xae')]);});var _0x5acc05=[];var _0x101fb2=[];_0x2f898a[_0x6ff9('0xaf')](function(_0x31e5df){if(_0x31e5df[_0x6ff9('0xb0')]){var _0x7172ef=_0x31e5df[_0x6ff9('0xb0')][_0x6ff9('0x9e')](_0x31e5df[_0x6ff9('0xb0')][_0x6ff9('0xb1')]('.')+0x1);if(_0x7172ef===_0x6ff9('0xb2')){_0x5acc05[_0x6ff9('0xb3')](getSelectList(_0x211d93,_0x157e75,_0x101fb2,_0x329822[_0x6ff9('0xa8')],_0x31e5df[_0x6ff9('0xa8')],_0x41d326));}}});return Promise['all'](_0x5acc05);})[_0x6ff9('0x28')](function(_0x13ba0c){_0x12743a=_0x13ba0c[0x0];var _0x2275a2=[];var _0x5e6f77=[];_0x2f898a[_0x6ff9('0xaf')](function(_0x19acf3){if(!_[_0x6ff9('0xb4')](_0x19acf3['@odata.type'])){var _0xcef864=_0x19acf3[_0x6ff9('0xb0')]['substring'](_0x19acf3[_0x6ff9('0xb0')]['lastIndexOf']('.')+0x1);if(_0xcef864===_0x6ff9('0xb5')){_0x2275a2[_0x6ff9('0xb3')](getBooleanList(_0x211d93,_0x157e75,_0x5e6f77,_0x329822[_0x6ff9('0xa8')],_0x19acf3[_0x6ff9('0xa8')],_0x41d326));}}});return Promise[_0x6ff9('0xb6')](_0x2275a2);})[_0x6ff9('0x28')](function(_0x17d749){_0x594167=_0x17d749[0x0];var _0x3f53cc=[];var _0x541552=[];_0x2f898a[_0x6ff9('0xaf')](function(_0x16db75){if(_0x16db75[_0x6ff9('0xb0')]){var _0x1ec1f6=_0x16db75[_0x6ff9('0xb0')][_0x6ff9('0x9e')](_0x16db75['@odata.type'][_0x6ff9('0xb1')]('.')+0x1);if(_0x1ec1f6===_0x6ff9('0xb7')||_0x1ec1f6===_0x6ff9('0xb8')||_0x1ec1f6===_0x6ff9('0xb9')||_0x1ec1f6===_0x6ff9('0xba')||_0x1ec1f6===_0x6ff9('0xbb')||_0x1ec1f6===_0x6ff9('0xbc')||_0x1ec1f6===_0x6ff9('0xbd')||_0x1ec1f6===_0x6ff9('0xbe')||_0x1ec1f6===_0x6ff9('0xbf')||_0x1ec1f6===_0x6ff9('0xc0')){_0x3f53cc[_0x6ff9('0xb3')](getInputList(_0x211d93,_0x157e75,_0x1ec1f6,_0x541552,_0x329822['MetadataId'],_0x16db75[_0x6ff9('0xa8')],_0x41d326));}}});return Promise[_0x6ff9('0xb6')](_0x3f53cc);})[_0x6ff9('0x28')](function(_0x279762){_0x47c96f=_0x279762[0x0];var _0x321e37=_0x12743a['concat'](_0x594167)[_0x6ff9('0x99')](_0x47c96f);var _0x539cfb={'count':_0x321e37[_0x6ff9('0x39')],'rows':_0x321e37};return _0x539cfb;})[_0x6ff9('0x28')](respondWithResult(_0x3dbbd0,null))['catch'](function(_0x1b18a6){var _0xf93453=_0x480b39[_0x6ff9('0x34')]['test']?0x1f4:_0x1b18a6[_0x6ff9('0xc1')]||0x1f4;logger[_0x6ff9('0x29')](_0x1b18a6[_0x6ff9('0x2a')]);delete _0x1b18a6[_0x6ff9('0x2b')];if(_0xf93453===0x191){_0xf93453=0x190;}_0x3dbbd0['status'](_0xf93453)[_0x6ff9('0x2c')](_0x480b39[_0x6ff9('0x34')][_0x6ff9('0xc2')]?{'message':_0x6ff9('0xc3'),'statusCode':_0x1b18a6['statusCode']}:_0x1b18a6);});};function getSelectList(_0x37f5de,_0x4417bf,_0x54a688,_0xa77611,_0x3b6ea3,_0x2a494a){var _0x8c3311={'method':_0x6ff9('0xa5'),'uri':_0x37f5de+'EntityDefinitions('+_0xa77611+_0x6ff9('0xc4')+_0x3b6ea3+_0x6ff9('0xc5')+_0x6ff9('0xc6'),'headers':{'Authorization':'Bearer\x20'+_0x2a494a,'If-None-Match':null,'OData-Version':_0x6ff9('0xab')},'json':!![]};return rp(_0x8c3311)[_0x6ff9('0x28')](function(_0x4d0de2){var _0x525e0a=[];var _0x5f3819=_0x4d0de2[_0x6ff9('0xc7')]['Options'];_0x5f3819[_0x6ff9('0xaf')](function(_0xe5fa59){_0x525e0a[_0x6ff9('0xb3')]({'name':_0xe5fa59['Label'][_0x6ff9('0xc8')][_0x6ff9('0xc9')],'value':String(_0xe5fa59[_0x6ff9('0xca')])});});var _0x23f7cf={'id':_0x4417bf+'_'+_0x4d0de2['LogicalName'],'name':_0x4d0de2[_0x6ff9('0xcb')][_0x6ff9('0xc8')][_0x6ff9('0xc9')],'custom':![],'options':_0x525e0a};_0x54a688[_0x6ff9('0xb3')](_0x23f7cf);return _0x54a688;});}function getBooleanList(_0x4d8f7f,_0x1b736e,_0x4132ae,_0x38a5c,_0x57f2ed,_0x571099){var _0x196895={'method':_0x6ff9('0xa5'),'uri':_0x4d8f7f+'EntityDefinitions('+_0x38a5c+')/Attributes('+_0x57f2ed+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x6ff9('0xaa')+_0x571099,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x196895)['then'](function(_0x4c33df){var _0x263fcd=[];_0x263fcd['push']({'name':_0x4c33df['OptionSet']['TrueOption']['Label'][_0x6ff9('0xc8')]['Label'],'value':'true'},{'name':_0x4c33df[_0x6ff9('0xc7')]['FalseOption']['Label']['UserLocalizedLabel'][_0x6ff9('0xc9')],'value':_0x6ff9('0xcc')});var _0x16c5a2={'id':_0x1b736e+'_'+_0x4c33df[_0x6ff9('0xae')],'name':_0x4c33df[_0x6ff9('0xcb')]['UserLocalizedLabel'][_0x6ff9('0xc9')],'custom':![],'options':_0x263fcd};_0x4132ae[_0x6ff9('0xb3')](_0x16c5a2);return _0x4132ae;});}function getInputList(_0x5e625f,_0x1e679b,_0x5e9519,_0x3e3b25,_0xb1f6ee,_0x191403,_0x30d1a0){var _0x5db389={'method':_0x6ff9('0xa5'),'uri':_0x5e625f+'EntityDefinitions('+_0xb1f6ee+_0x6ff9('0xc4')+_0x191403+')/Microsoft.Dynamics.CRM.'+_0x5e9519+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x6ff9('0xaa')+_0x30d1a0,'If-None-Match':null,'OData-Version':_0x6ff9('0xab')},'json':!![]};return rp(_0x5db389)[_0x6ff9('0x28')](function(_0x3681d5){var _0x1de12a={'id':_0x1e679b+'_'+_0x3681d5[_0x6ff9('0xae')],'name':_0x3681d5['DisplayName']['UserLocalizedLabel']?_0x3681d5['DisplayName'][_0x6ff9('0xc8')][_0x6ff9('0xc9')]:_0x3681d5[_0x6ff9('0xae')],'custom':![],'options':[]};_0x3e3b25[_0x6ff9('0xb3')](_0x1de12a);return _0x3e3b25;});}
\ No newline at end of file
+var _0x8b04=['contactidname','contactidyominame','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridyominame','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridtype','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolveby','responseby','responsiblecontactidname','sentimentvalue','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','clientId','remoteUri','slice','lastIndexOf','format','%s/api/data/v9.0/','https://login.microsoftonline.com/','clientSecret','access_token','GET','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','remove','includes','LogicalName','forEach','@odata.type','substring','PicklistAttributeMetadata','push','all','BooleanAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','statusCode','test','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','Value','DisplayName','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','sendStatus','stack','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','then','rows','show','params','fields','includeAll','include','catch','create','body','find','findOne','pick','getConfigurations','addConfiguration','AccountId','getSubjects','channel','Descriptions','type','Dynamics365Configuration','Dynamics365Field','Subjects','getFields','ticketType','incident','Incident','PhoneCall','title','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','billedserviceunits'];(function(_0x135c9d,_0x249e0){var _0x3b66b6=function(_0x33cc50){while(--_0x33cc50){_0x135c9d['push'](_0x135c9d['shift']());}};_0x3b66b6(++_0x249e0);}(_0x8b04,0x130));var _0x48b0=function(_0x4b10f0,_0x25c95d){_0x4b10f0=_0x4b10f0-0x0;var _0x455af5=_0x8b04[_0x4b10f0];return _0x455af5;};'use strict';var emlformat=require(_0x48b0('0x0'));var rimraf=require(_0x48b0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x48b0('0x2'));var rp=require('request-promise');var moment=require(_0x48b0('0x3'));var BPromise=require(_0x48b0('0x4'));var Mustache=require(_0x48b0('0x5'));var util=require(_0x48b0('0x6'));var path=require(_0x48b0('0x7'));var sox=require(_0x48b0('0x8'));var csv=require(_0x48b0('0x9'));var ejs=require(_0x48b0('0xa'));var fs=require('fs');var fs_extra=require(_0x48b0('0xb'));var _=require(_0x48b0('0xc'));var squel=require('squel');var crypto=require(_0x48b0('0xd'));var jsforce=require(_0x48b0('0xe'));var deskjs=require(_0x48b0('0xf'));var toCsv=require(_0x48b0('0x9'));var querystring=require(_0x48b0('0x10'));var Papa=require(_0x48b0('0x11'));var Redis=require(_0x48b0('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x48b0('0x13'));var as=require(_0x48b0('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x48b0('0x15'))(_0x48b0('0x16'));var utils=require('../../config/utils');var config=require(_0x48b0('0x17'));var licenseUtil=require(_0x48b0('0x18'));var db=require(_0x48b0('0x19'))['db'];var integrations=require(_0x48b0('0x1a'));function respondWithStatusCode(_0x3ce3ea,_0x3f7c29){_0x3f7c29=_0x3f7c29||0xcc;return function(_0x52bb16){if(_0x52bb16){return _0x3ce3ea['sendStatus'](_0x3f7c29);}return _0x3ce3ea[_0x48b0('0x1b')](_0x3f7c29)['end']();};}function respondWithResult(_0x35f755,_0x52724f){_0x52724f=_0x52724f||0xc8;return function(_0x1ec6e7){if(_0x1ec6e7){return _0x35f755[_0x48b0('0x1b')](_0x52724f)[_0x48b0('0x1c')](_0x1ec6e7);}};}function respondWithFilteredResult(_0x37110c,_0x57154e){return function(_0x377f65){if(_0x377f65){var _0x29e511=typeof _0x57154e[_0x48b0('0x1d')]==='undefined'&&typeof _0x57154e[_0x48b0('0x1e')]==='undefined';var _0x4f9815=_0x377f65[_0x48b0('0x1f')];var _0x55a3b9=_0x29e511?0x0:_0x57154e[_0x48b0('0x1d')];var _0x54e10a=_0x29e511?_0x377f65[_0x48b0('0x1f')]:_0x57154e['offset']+_0x57154e[_0x48b0('0x1e')];var _0x23d72f;if(_0x54e10a>=_0x4f9815){_0x54e10a=_0x4f9815;_0x23d72f=0xc8;}else{_0x23d72f=0xce;}_0x37110c[_0x48b0('0x1b')](_0x23d72f);return _0x37110c[_0x48b0('0x20')](_0x48b0('0x21'),_0x55a3b9+'-'+_0x54e10a+'/'+_0x4f9815)['json'](_0x377f65);}return null;};}function patchUpdates(_0x5ebcbb){return function(_0x583bbc){try{jsonpatch['apply'](_0x583bbc,_0x5ebcbb,!![]);}catch(_0x520d13){return BPromise[_0x48b0('0x22')](_0x520d13);}return _0x583bbc[_0x48b0('0x23')]();};}function saveUpdates(_0x24866b,_0x1557dc){return function(_0x4f705b){if(_0x4f705b){return _0x4f705b[_0x48b0('0x24')](_0x24866b)['then'](function(_0xc79ca7){return _0xc79ca7;});}return null;};}function removeEntity(_0x41aeac,_0x3b6067){return function(_0x259d5b){if(_0x259d5b){return _0x259d5b[_0x48b0('0x25')]()['then'](function(){_0x41aeac['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5609fb,_0x4dace2){return function(_0x1dd3d0){if(!_0x1dd3d0){_0x5609fb[_0x48b0('0x26')](0x194);}return _0x1dd3d0;};}function handleError(_0xc7b0b7,_0x379d13){_0x379d13=_0x379d13||0x1f4;return function(_0x590eb4){logger['error'](_0x590eb4[_0x48b0('0x27')]);if(_0x590eb4[_0x48b0('0x28')]){delete _0x590eb4['name'];}_0xc7b0b7['status'](_0x379d13)[_0x48b0('0x29')](_0x590eb4);};}exports[_0x48b0('0x2a')]=function(_0x47e6a6,_0x175f52){var _0x3d1ff3={},_0x5ebbb5={},_0x5b8708={'count':0x0,'rows':[]};var _0x171ddf=_[_0x48b0('0x2b')](db[_0x48b0('0x2c')][_0x48b0('0x2d')],function(_0x4d6cab){return{'name':_0x4d6cab[_0x48b0('0x2e')],'type':_0x4d6cab['type'][_0x48b0('0x2f')]};});_0x5ebbb5[_0x48b0('0x30')]=_[_0x48b0('0x2b')](_0x171ddf,'name');_0x5ebbb5['query']=_[_0x48b0('0x31')](_0x47e6a6[_0x48b0('0x32')]);_0x5ebbb5[_0x48b0('0x33')]=_['intersection'](_0x5ebbb5['model'],_0x5ebbb5[_0x48b0('0x32')]);_0x3d1ff3[_0x48b0('0x34')]=_[_0x48b0('0x35')](_0x5ebbb5[_0x48b0('0x30')],qs['fields'](_0x47e6a6[_0x48b0('0x32')]['fields']));_0x3d1ff3[_0x48b0('0x34')]=_0x3d1ff3[_0x48b0('0x34')][_0x48b0('0x36')]?_0x3d1ff3[_0x48b0('0x34')]:_0x5ebbb5[_0x48b0('0x30')];if(!_0x47e6a6[_0x48b0('0x32')][_0x48b0('0x37')](_0x48b0('0x38'))){_0x3d1ff3[_0x48b0('0x1e')]=qs['limit'](_0x47e6a6[_0x48b0('0x32')][_0x48b0('0x1e')]);_0x3d1ff3[_0x48b0('0x1d')]=qs[_0x48b0('0x1d')](_0x47e6a6[_0x48b0('0x32')][_0x48b0('0x1d')]);}_0x3d1ff3[_0x48b0('0x39')]=qs[_0x48b0('0x3a')](_0x47e6a6[_0x48b0('0x32')]['sort']);_0x3d1ff3[_0x48b0('0x3b')]=qs[_0x48b0('0x33')](_['pick'](_0x47e6a6[_0x48b0('0x32')],_0x5ebbb5[_0x48b0('0x33')]),_0x171ddf);if(_0x47e6a6[_0x48b0('0x32')][_0x48b0('0x3c')]){_0x3d1ff3[_0x48b0('0x3b')]=_[_0x48b0('0x3d')](_0x3d1ff3[_0x48b0('0x3b')],{'$or':_['map'](_0x171ddf,function(_0x5f277f){if(_0x5f277f['type']!==_0x48b0('0x3e')){var _0x3872c7={};_0x3872c7[_0x5f277f[_0x48b0('0x28')]]={'$like':'%'+_0x47e6a6[_0x48b0('0x32')]['filter']+'%'};return _0x3872c7;}})});}_0x3d1ff3=_[_0x48b0('0x3d')]({},_0x3d1ff3,_0x47e6a6[_0x48b0('0x3f')]);var _0x1a1a05={'where':_0x3d1ff3['where']};return db[_0x48b0('0x2c')][_0x48b0('0x1f')](_0x1a1a05)[_0x48b0('0x40')](function(_0x283f24){_0x5b8708['count']=_0x283f24;if(_0x47e6a6['query']['includeAll']){_0x3d1ff3['include']=[{'all':!![]}];}return db['Dynamics365Account']['findAll'](_0x3d1ff3);})[_0x48b0('0x40')](function(_0x902779){_0x5b8708[_0x48b0('0x41')]=_0x902779;return _0x5b8708;})[_0x48b0('0x40')](respondWithFilteredResult(_0x175f52,_0x3d1ff3))['catch'](handleError(_0x175f52,null));};exports[_0x48b0('0x42')]=function(_0x4cf7a9,_0x3bb87c){var _0x4a8326={'raw':![],'where':{'id':_0x4cf7a9[_0x48b0('0x43')]['id']}},_0x7c2495={};_0x7c2495[_0x48b0('0x30')]=_['keys'](db['Dynamics365Account'][_0x48b0('0x2d')]);_0x7c2495[_0x48b0('0x32')]=_[_0x48b0('0x31')](_0x4cf7a9['query']);_0x7c2495['filters']=_[_0x48b0('0x35')](_0x7c2495['model'],_0x7c2495[_0x48b0('0x32')]);_0x4a8326['attributes']=_[_0x48b0('0x35')](_0x7c2495[_0x48b0('0x30')],qs[_0x48b0('0x44')](_0x4cf7a9['query'][_0x48b0('0x44')]));_0x4a8326[_0x48b0('0x34')]=_0x4a8326[_0x48b0('0x34')]['length']?_0x4a8326[_0x48b0('0x34')]:_0x7c2495[_0x48b0('0x30')];if(_0x4cf7a9[_0x48b0('0x32')][_0x48b0('0x45')]){_0x4a8326[_0x48b0('0x46')]=[{'all':!![]}];}_0x4a8326=_[_0x48b0('0x3d')]({},_0x4a8326,_0x4cf7a9[_0x48b0('0x3f')]);return db[_0x48b0('0x2c')]['find'](_0x4a8326)[_0x48b0('0x40')](handleEntityNotFound(_0x3bb87c,null))[_0x48b0('0x40')](respondWithResult(_0x3bb87c,null))[_0x48b0('0x47')](handleError(_0x3bb87c,null));};exports[_0x48b0('0x48')]=function(_0x5b5b1e,_0x42041a){return db[_0x48b0('0x2c')][_0x48b0('0x48')](_0x5b5b1e[_0x48b0('0x49')],{})[_0x48b0('0x40')](respondWithResult(_0x42041a,0xc9))[_0x48b0('0x47')](handleError(_0x42041a,null));};exports[_0x48b0('0x24')]=function(_0x163f5e,_0x4a255c){if(_0x163f5e[_0x48b0('0x49')]['id']){delete _0x163f5e[_0x48b0('0x49')]['id'];}return db[_0x48b0('0x2c')][_0x48b0('0x4a')]({'where':{'id':_0x163f5e['params']['id']}})['then'](handleEntityNotFound(_0x4a255c,null))[_0x48b0('0x40')](saveUpdates(_0x163f5e[_0x48b0('0x49')],null))[_0x48b0('0x40')](respondWithResult(_0x4a255c,null))[_0x48b0('0x47')](handleError(_0x4a255c,null));};exports['destroy']=function(_0x3cfc6c,_0x4ca1cf){return db['Dynamics365Account']['find']({'where':{'id':_0x3cfc6c['params']['id']}})[_0x48b0('0x40')](handleEntityNotFound(_0x4ca1cf,null))['then'](removeEntity(_0x4ca1cf,null))[_0x48b0('0x47')](handleError(_0x4ca1cf,null));};exports['getConfigurations']=function(_0x1c3f6a,_0x486e31,_0xd33acf){var _0x1c692b={};var _0x317e53={};var _0x228bc8;var _0x3eef91;return db[_0x48b0('0x2c')][_0x48b0('0x4b')]({'where':{'id':_0x1c3f6a[_0x48b0('0x43')]['id']}})[_0x48b0('0x40')](handleEntityNotFound(_0x486e31,null))[_0x48b0('0x40')](function(_0x3f5d5d){if(_0x3f5d5d){_0x228bc8=_0x3f5d5d;_0x317e53[_0x48b0('0x30')]=_['keys'](db['Dynamics365Configuration'][_0x48b0('0x2d')]);_0x317e53[_0x48b0('0x32')]=_[_0x48b0('0x31')](_0x1c3f6a[_0x48b0('0x32')]);_0x317e53[_0x48b0('0x33')]=_[_0x48b0('0x35')](_0x317e53[_0x48b0('0x30')],_0x317e53[_0x48b0('0x32')]);_0x1c692b['attributes']=_[_0x48b0('0x35')](_0x317e53[_0x48b0('0x30')],qs[_0x48b0('0x44')](_0x1c3f6a['query'][_0x48b0('0x44')]));_0x1c692b[_0x48b0('0x34')]=_0x1c692b[_0x48b0('0x34')][_0x48b0('0x36')]?_0x1c692b['attributes']:_0x317e53[_0x48b0('0x30')];_0x1c692b[_0x48b0('0x39')]=qs[_0x48b0('0x3a')](_0x1c3f6a[_0x48b0('0x32')][_0x48b0('0x3a')]);_0x1c692b[_0x48b0('0x3b')]=qs['filters'](_[_0x48b0('0x4c')](_0x1c3f6a[_0x48b0('0x32')],_0x317e53['filters']));if(_0x1c3f6a[_0x48b0('0x32')][_0x48b0('0x3c')]){_0x1c692b[_0x48b0('0x3b')]=_[_0x48b0('0x3d')](_0x1c692b[_0x48b0('0x3b')],{'$or':_[_0x48b0('0x2b')](_0x1c692b[_0x48b0('0x34')],function(_0x281d01){var _0x21f26d={};_0x21f26d[_0x281d01]={'$like':'%'+_0x1c3f6a[_0x48b0('0x32')]['filter']+'%'};return _0x21f26d;})});}_0x1c692b=_[_0x48b0('0x3d')]({},_0x1c692b,_0x1c3f6a[_0x48b0('0x3f')]);return _0x228bc8['getConfigurations'](_0x1c692b);}})[_0x48b0('0x40')](function(_0x40edad){if(_0x40edad){_0x3eef91=_0x40edad[_0x48b0('0x36')];if(!_0x1c3f6a[_0x48b0('0x32')]['hasOwnProperty'](_0x48b0('0x38'))){_0x1c692b[_0x48b0('0x1e')]=qs[_0x48b0('0x1e')](_0x1c3f6a[_0x48b0('0x32')]['limit']);_0x1c692b[_0x48b0('0x1d')]=qs['offset'](_0x1c3f6a[_0x48b0('0x32')][_0x48b0('0x1d')]);}return _0x228bc8[_0x48b0('0x4d')](_0x1c692b);}})[_0x48b0('0x40')](function(_0x501a7d){if(_0x501a7d){return _0x501a7d?{'count':_0x3eef91,'rows':_0x501a7d}:null;}})['then'](respondWithResult(_0x486e31,null))['catch'](handleError(_0x486e31,null));};exports[_0x48b0('0x4e')]=function(_0x4f66dc,_0x16c501,_0x197a19){if(_0x4f66dc['body']['id']){delete _0x4f66dc[_0x48b0('0x49')]['id'];}return db[_0x48b0('0x2c')][_0x48b0('0x4b')]({'where':{'id':_0x4f66dc[_0x48b0('0x43')]['id']}})[_0x48b0('0x40')](handleEntityNotFound(_0x16c501,null))[_0x48b0('0x40')](function(_0x1c85b7){if(_0x1c85b7){_0x4f66dc[_0x48b0('0x49')][_0x48b0('0x4f')]=_0x1c85b7['id'];_0x4f66dc[_0x48b0('0x49')]['Subjects']=integrations[_0x48b0('0x50')](_0x4f66dc['body'][_0x48b0('0x51')],_0x4f66dc[_0x48b0('0x49')]['type']);_0x4f66dc['body'][_0x48b0('0x52')]=integrations['getDescriptions'](_0x4f66dc[_0x48b0('0x49')][_0x48b0('0x51')],_0x4f66dc['body'][_0x48b0('0x53')]);return db[_0x48b0('0x54')]['create'](_0x4f66dc[_0x48b0('0x49')],{'include':[{'model':db[_0x48b0('0x55')],'as':_0x48b0('0x56')},{'model':db[_0x48b0('0x55')],'as':_0x48b0('0x52')}]});}return null;})[_0x48b0('0x40')](respondWithResult(_0x16c501,null))[_0x48b0('0x47')](handleError(_0x16c501,null));};exports[_0x48b0('0x57')]=function(_0x282376,_0x2e907e,_0x51a9e5){var _0x545367=_0x282376[_0x48b0('0x32')][_0x48b0('0x58')];var _0x2a7d40=_0x545367===_0x48b0('0x59')?_0x48b0('0x5a'):_0x48b0('0x5b');var _0x35b649='';var _0xf7cd72='';var _0x5bfe92='';var _0x4f1cde='';var _0x32db31='';var _0x329aab='';var _0x19b14d='';var _0x45cecd='';var _0x57fb2b=[_0x48b0('0x5c'),'description',_0x48b0('0x5d'),_0x48b0('0x5e'),_0x48b0('0x5f'),_0x48b0('0x60'),_0x48b0('0x61'),_0x48b0('0x62'),_0x48b0('0x63'),_0x48b0('0x64')];var _0x5778f4=['accountidname','accountidyominame','actualserviceunits',_0x48b0('0x65'),_0x48b0('0x66'),_0x48b0('0x67'),'contractdetailidname','contractidname',_0x48b0('0x68'),_0x48b0('0x69'),_0x48b0('0x6a'),_0x48b0('0x6b'),_0x48b0('0x6c'),_0x48b0('0x6d'),_0x48b0('0x6e'),_0x48b0('0x6f'),'customeridtype',_0x48b0('0x70'),'emailaddress',_0x48b0('0x71'),_0x48b0('0x72'),_0x48b0('0x73'),'escalatedon',_0x48b0('0x74'),_0x48b0('0x75'),_0x48b0('0x76'),_0x48b0('0x77'),'influencescore','kbarticleidname','lastonholdtime',_0x48b0('0x78'),'modifiedbyexternalpartyname',_0x48b0('0x79'),_0x48b0('0x7a'),_0x48b0('0x7b'),_0x48b0('0x7c'),_0x48b0('0x7d'),'modifiedonbehalfbyyominame',_0x48b0('0x7e'),_0x48b0('0x7f'),_0x48b0('0x80'),_0x48b0('0x81'),_0x48b0('0x82'),'owneridname',_0x48b0('0x83'),'owneridyominame',_0x48b0('0x84'),_0x48b0('0x85'),_0x48b0('0x86'),_0x48b0('0x87'),'productidname',_0x48b0('0x88'),_0x48b0('0x89'),'resolvebykpiidname',_0x48b0('0x8a'),_0x48b0('0x8b'),'responsiblecontactidyominame',_0x48b0('0x8c'),'slainvokedidname','slaname',_0x48b0('0x8d'),_0x48b0('0x8e'),_0x48b0('0x8f'),_0x48b0('0x90'),_0x48b0('0x91'),_0x48b0('0x92'),_0x48b0('0x93'),_0x48b0('0x94'),_0x48b0('0x95'),_0x48b0('0x96')];var _0x1c82ec=_0x57fb2b[_0x48b0('0x97')](_0x5778f4);return db[_0x48b0('0x2c')][_0x48b0('0x4b')]({'where':{'id':_0x282376[_0x48b0('0x43')]['id']},'attributes':['id',_0x48b0('0x98'),_0x48b0('0x99'),'remoteUri','tenantId',_0x48b0('0x9a'),'clientSecret']})['then'](handleEntityNotFound(_0x2e907e,null))['then'](function(_0x61355){if(_0x61355){_0x45cecd=_0x61355[_0x48b0('0x9b')];var _0x243792=_0x45cecd[_0x48b0('0x9c')](-0x1);if(_0x243792==='/'){_0x45cecd=_0x45cecd['substring'](0x0,_0x45cecd[_0x48b0('0x9d')](_0x243792));}_0x19b14d=util[_0x48b0('0x9e')](_0x48b0('0x9f'),_0x45cecd);var _0x54f1cf={'method':'POST','uri':_0x48b0('0xa0')+_0x61355['tenantId']+'/oauth2/token','form':{'client_id':_0x61355[_0x48b0('0x9a')],'resource':_0x45cecd,'username':_0x61355['username'],'password':_0x61355[_0x48b0('0x99')],'grant_type':_0x48b0('0x99'),'client_secret':_0x61355[_0x48b0('0xa1')]},'json':!![]};return rp(_0x54f1cf);}})[_0x48b0('0x40')](function(_0x553d97){_0x329aab=_0x553d97[_0x48b0('0xa2')];var _0x2edf6d={'method':_0x48b0('0xa3'),'uri':encodeURI(_0x19b14d+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x2a7d40+'\x27'),'headers':{'Authorization':_0x48b0('0xa4')+_0x329aab,'If-None-Match':null,'OData-Version':_0x48b0('0xa5')},'json':!![]};return rp(_0x2edf6d);})['then'](function(_0x3ac9f1){var _0x32a2dd=_0x3ac9f1[_0x48b0('0xa6')][0x0];var _0x41caf2=_0x32a2dd[_0x48b0('0xa7')];var _0x1a7ff6={'method':_0x48b0('0xa3'),'uri':_0x19b14d+_0x48b0('0xa8')+_0x41caf2+_0x48b0('0xa9'),'headers':{'Authorization':_0x48b0('0xa4')+_0x329aab,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1a7ff6);})['then'](function(_0x160196){_0x35b649=_0x160196;_0xf7cd72=_0x35b649['Attributes'];_0xf7cd72=_[_0x48b0('0xaa')](_0xf7cd72,function(_0x24ccb7){return!_0x1c82ec[_0x48b0('0xab')](_0x24ccb7[_0x48b0('0xac')]);});var _0x4523dc=[];var _0x4edaa7=[];_0xf7cd72[_0x48b0('0xad')](function(_0x4e8ed4){if(_0x4e8ed4[_0x48b0('0xae')]){var _0x4e5355=_0x4e8ed4[_0x48b0('0xae')][_0x48b0('0xaf')](_0x4e8ed4['@odata.type'][_0x48b0('0x9d')]('.')+0x1);if(_0x4e5355===_0x48b0('0xb0')){_0x4523dc[_0x48b0('0xb1')](getSelectList(_0x19b14d,_0x545367,_0x4edaa7,_0x35b649['MetadataId'],_0x4e8ed4['MetadataId'],_0x329aab));}}});return Promise[_0x48b0('0xb2')](_0x4523dc);})[_0x48b0('0x40')](function(_0x3fdf0e){_0x5bfe92=_0x3fdf0e[0x0];var _0x29f597=[];var _0x4d9690=[];_0xf7cd72[_0x48b0('0xad')](function(_0x266c95){if(!_['isNil'](_0x266c95['@odata.type'])){var _0x37381d=_0x266c95[_0x48b0('0xae')]['substring'](_0x266c95[_0x48b0('0xae')][_0x48b0('0x9d')]('.')+0x1);if(_0x37381d===_0x48b0('0xb3')){_0x29f597[_0x48b0('0xb1')](getBooleanList(_0x19b14d,_0x545367,_0x4d9690,_0x35b649[_0x48b0('0xa7')],_0x266c95['MetadataId'],_0x329aab));}}});return Promise['all'](_0x29f597);})[_0x48b0('0x40')](function(_0x52942c){_0x4f1cde=_0x52942c[0x0];var _0x3c5328=[];var _0xbb0b62=[];_0xf7cd72[_0x48b0('0xad')](function(_0x25cca6){if(_0x25cca6[_0x48b0('0xae')]){var _0x1b995a=_0x25cca6[_0x48b0('0xae')][_0x48b0('0xaf')](_0x25cca6['@odata.type'][_0x48b0('0x9d')]('.')+0x1);if(_0x1b995a==='StringAttributeMetadata'||_0x1b995a==='DoubleAttributeMetadata'||_0x1b995a==='BigIntAttributeMetadata'||_0x1b995a===_0x48b0('0xb4')||_0x1b995a===_0x48b0('0xb5')||_0x1b995a===_0x48b0('0xb6')||_0x1b995a===_0x48b0('0xb7')||_0x1b995a===_0x48b0('0xb8')||_0x1b995a===_0x48b0('0xb9')||_0x1b995a==='DecimalAttributeMetadata'){_0x3c5328[_0x48b0('0xb1')](getInputList(_0x19b14d,_0x545367,_0x1b995a,_0xbb0b62,_0x35b649[_0x48b0('0xa7')],_0x25cca6[_0x48b0('0xa7')],_0x329aab));}}});return Promise[_0x48b0('0xb2')](_0x3c5328);})[_0x48b0('0x40')](function(_0x4c5320){_0x32db31=_0x4c5320[0x0];var _0x174019=_0x5bfe92['concat'](_0x4f1cde)[_0x48b0('0x97')](_0x32db31);var _0x3a8a73={'count':_0x174019[_0x48b0('0x36')],'rows':_0x174019};return _0x3a8a73;})['then'](respondWithResult(_0x2e907e,null))[_0x48b0('0x47')](function(_0x1e8370){var _0xe384f0=_0x282376[_0x48b0('0x32')]['test']?0x1f4:_0x1e8370[_0x48b0('0xba')]||0x1f4;logger['error'](_0x1e8370[_0x48b0('0x27')]);delete _0x1e8370[_0x48b0('0x28')];if(_0xe384f0===0x191){_0xe384f0=0x190;}_0x2e907e['status'](_0xe384f0)[_0x48b0('0x29')](_0x282376[_0x48b0('0x32')][_0x48b0('0xbb')]?{'message':_0x48b0('0xbc'),'statusCode':_0x1e8370[_0x48b0('0xba')]}:_0x1e8370);});};function getSelectList(_0x3181dd,_0x5afcaf,_0x4ecb8e,_0x395ff7,_0x54350c,_0x2e81ca){var _0x33fae2={'method':_0x48b0('0xa3'),'uri':_0x3181dd+'EntityDefinitions('+_0x395ff7+_0x48b0('0xbd')+_0x54350c+_0x48b0('0xbe')+_0x48b0('0xbf'),'headers':{'Authorization':_0x48b0('0xa4')+_0x2e81ca,'If-None-Match':null,'OData-Version':_0x48b0('0xa5')},'json':!![]};return rp(_0x33fae2)[_0x48b0('0x40')](function(_0x5b45a4){var _0x13fa05=[];var _0x51729f=_0x5b45a4['OptionSet'][_0x48b0('0xc0')];_0x51729f[_0x48b0('0xad')](function(_0xee4c2e){_0x13fa05[_0x48b0('0xb1')]({'name':_0xee4c2e[_0x48b0('0xc1')][_0x48b0('0xc2')]['Label'],'value':String(_0xee4c2e[_0x48b0('0xc3')])});});var _0x768d2d={'id':_0x5afcaf+'_'+_0x5b45a4[_0x48b0('0xac')],'name':_0x5b45a4[_0x48b0('0xc4')][_0x48b0('0xc2')][_0x48b0('0xc1')],'custom':![],'options':_0x13fa05};_0x4ecb8e[_0x48b0('0xb1')](_0x768d2d);return _0x4ecb8e;});}function getBooleanList(_0xe420,_0x3ce3bd,_0x109cd9,_0x3cd0de,_0x7754d7,_0x415cbc){var _0x3f9fb2={'method':_0x48b0('0xa3'),'uri':_0xe420+_0x48b0('0xa8')+_0x3cd0de+_0x48b0('0xbd')+_0x7754d7+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x48b0('0xa4')+_0x415cbc,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3f9fb2)[_0x48b0('0x40')](function(_0xc5b046){var _0x3531e5=[];_0x3531e5['push']({'name':_0xc5b046['OptionSet'][_0x48b0('0xc5')][_0x48b0('0xc1')][_0x48b0('0xc2')][_0x48b0('0xc1')],'value':_0x48b0('0xc6')},{'name':_0xc5b046['OptionSet'][_0x48b0('0xc7')][_0x48b0('0xc1')][_0x48b0('0xc2')][_0x48b0('0xc1')],'value':_0x48b0('0xc8')});var _0x47818f={'id':_0x3ce3bd+'_'+_0xc5b046['LogicalName'],'name':_0xc5b046[_0x48b0('0xc4')][_0x48b0('0xc2')][_0x48b0('0xc1')],'custom':![],'options':_0x3531e5};_0x109cd9[_0x48b0('0xb1')](_0x47818f);return _0x109cd9;});}function getInputList(_0x423568,_0x10e35c,_0x384c44,_0x678c33,_0x27a215,_0x3e4bc4,_0x496cb5){var _0x45c1ca={'method':'GET','uri':_0x423568+_0x48b0('0xa8')+_0x27a215+_0x48b0('0xbd')+_0x3e4bc4+_0x48b0('0xc9')+_0x384c44+_0x48b0('0xca'),'headers':{'Authorization':_0x48b0('0xa4')+_0x496cb5,'If-None-Match':null,'OData-Version':_0x48b0('0xa5')},'json':!![]};return rp(_0x45c1ca)[_0x48b0('0x40')](function(_0x5bfe90){var _0x4162a8={'id':_0x10e35c+'_'+_0x5bfe90['LogicalName'],'name':_0x5bfe90[_0x48b0('0xc4')][_0x48b0('0xc2')]?_0x5bfe90['DisplayName'][_0x48b0('0xc2')]['Label']:_0x5bfe90[_0x48b0('0xac')],'custom':![],'options':[]};_0x678c33['push'](_0x4162a8);return _0x678c33;});}
\ No newline at end of file
index 6af86c5..63f8f06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x352b88,_0x141c6e){var _0xb9595f=function(_0x456ad8){while(--_0x456ad8){_0x352b88['push'](_0x352b88['shift']());}};_0xb9595f(++_0x141c6e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));var integrations=require(_0x0a9e('0x8'));module['exports']=function(_0x219af0,_0x441e3a){return _0x219af0[_0x0a9e('0x9')]('Dynamics365Account',attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x50a581,_0x1ea13b){var _0x58059d=function(_0x114b0e){while(--_0x114b0e){_0x50a581['push'](_0x50a581['shift']());}};_0x58059d(++_0x1ea13b);}(_0x757a,0xde));var _0xa757=function(_0x1e2bad,_0x440577){_0x1e2bad=_0x1e2bad-0x0;var _0x31fb68=_0x757a[_0x1e2bad];return _0x31fb68;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index feff7e5..18f3fe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb215=['findAll','options','raw','attributes','include','map','model','debug','find','where','ShowDynamics365Account','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','then','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetDynamics365Account'];(function(_0x56fc82,_0x2b7f00){var _0x4cc0b8=function(_0x3cabd6){while(--_0x3cabd6){_0x56fc82['push'](_0x56fc82['shift']());}};_0x4cc0b8(++_0x2b7f00);}(_0xb215,0x1cb));var _0x5b21=function(_0x479183,_0x486667){_0x479183=_0x479183-0x0;var _0x2a0df8=_0xb215[_0x479183];return _0x2a0df8;};'use strict';var _=require(_0x5b21('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5b21('0x1'));var rs=require(_0x5b21('0x2'));var fs=require('fs');var Redis=require(_0x5b21('0x3'));var db=require(_0x5b21('0x4'))['db'];var utils=require(_0x5b21('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x5b21('0x6'));var jayson=require(_0x5b21('0x7'));var client=jayson[_0x5b21('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x189639,_0x512d0a,_0x28acaf){return new BPromise(function(_0x15bdc9,_0x29f323){return client['request'](_0x189639,_0x28acaf)[_0x5b21('0x9')](function(_0x37a232){logger['info'](_0x5b21('0xa'),_0x512d0a,_0x5b21('0xb'));logger['debug'](_0x5b21('0xc'),_0x512d0a,_0x5b21('0xb'),JSON[_0x5b21('0xd')](_0x37a232));if(_0x37a232['error']){if(_0x37a232[_0x5b21('0xe')][_0x5b21('0xf')]===0x1f4){logger[_0x5b21('0xe')](_0x5b21('0xa'),_0x512d0a,_0x37a232[_0x5b21('0xe')][_0x5b21('0x10')]);return _0x29f323(_0x37a232['error']['message']);}logger[_0x5b21('0xe')](_0x5b21('0xa'),_0x512d0a,_0x37a232[_0x5b21('0xe')][_0x5b21('0x10')]);return _0x15bdc9(_0x37a232[_0x5b21('0xe')][_0x5b21('0x10')]);}else{logger[_0x5b21('0x11')](_0x5b21('0xa'),_0x512d0a,'request\x20sent');_0x15bdc9(_0x37a232[_0x5b21('0x12')][_0x5b21('0x10')]);}})[_0x5b21('0x13')](function(_0x3e04b){logger['error'](_0x5b21('0xa'),_0x512d0a,_0x3e04b);_0x29f323(_0x3e04b);});});}exports[_0x5b21('0x14')]=function(_0x44fcf4){var _0x3e328c=this;return new Promise(function(_0x2e10d7,_0x4d6110){return db['Dynamics365Account'][_0x5b21('0x15')]({'raw':_0x44fcf4[_0x5b21('0x16')]?_0x44fcf4['options'][_0x5b21('0x17')]===undefined?!![]:![]:!![],'where':_0x44fcf4[_0x5b21('0x16')]?_0x44fcf4[_0x5b21('0x16')]['where']||null:null,'attributes':_0x44fcf4[_0x5b21('0x16')]?_0x44fcf4[_0x5b21('0x16')][_0x5b21('0x18')]||null:null,'limit':_0x44fcf4['options']?_0x44fcf4[_0x5b21('0x16')]['limit']||null:null,'include':_0x44fcf4['options']?_0x44fcf4[_0x5b21('0x16')][_0x5b21('0x19')]?_[_0x5b21('0x1a')](_0x44fcf4[_0x5b21('0x16')][_0x5b21('0x19')],function(_0x5a7725){return{'model':db[_0x5a7725[_0x5b21('0x1b')]],'as':_0x5a7725['as'],'attributes':_0x5a7725[_0x5b21('0x18')],'include':_0x5a7725[_0x5b21('0x19')]?_['map'](_0x5a7725[_0x5b21('0x19')],function(_0x3d4f5a){return{'model':db[_0x3d4f5a[_0x5b21('0x1b')]],'as':_0x3d4f5a['as'],'attributes':_0x3d4f5a['attributes'],'include':_0x3d4f5a[_0x5b21('0x19')]?_[_0x5b21('0x1a')](_0x3d4f5a['include'],function(_0x4c2cde){return{'model':db[_0x4c2cde[_0x5b21('0x1b')]],'as':_0x4c2cde['as'],'attributes':_0x4c2cde[_0x5b21('0x18')]};}):[]};}):[]};}):[]:[]})[_0x5b21('0x9')](function(_0x80f63c){logger['info'](_0x5b21('0x14'),_0x44fcf4);logger[_0x5b21('0x1c')]('GetDynamics365Account',_0x44fcf4,JSON[_0x5b21('0xd')](_0x80f63c));_0x2e10d7(_0x80f63c);})[_0x5b21('0x13')](function(_0x166e1f){logger[_0x5b21('0xe')]('GetDynamics365Account',_0x166e1f['message'],_0x44fcf4);_0x4d6110(_0x3e328c[_0x5b21('0xe')](0x1f4,_0x166e1f[_0x5b21('0x10')]));});});};exports['ShowDynamics365Account']=function(_0x3835a6){var _0x5bc2b6=this;return new Promise(function(_0x121544,_0x53839e){return db['Dynamics365Account'][_0x5b21('0x1d')]({'raw':_0x3835a6[_0x5b21('0x16')]?_0x3835a6['options']['raw']===undefined?!![]:![]:!![],'where':_0x3835a6['options']?_0x3835a6[_0x5b21('0x16')][_0x5b21('0x1e')]||null:null,'attributes':_0x3835a6[_0x5b21('0x16')]?_0x3835a6[_0x5b21('0x16')][_0x5b21('0x18')]||null:null,'include':_0x3835a6[_0x5b21('0x16')]?_0x3835a6[_0x5b21('0x16')][_0x5b21('0x19')]?_[_0x5b21('0x1a')](_0x3835a6['options'][_0x5b21('0x19')],function(_0x59b828){return{'model':db[_0x59b828[_0x5b21('0x1b')]],'as':_0x59b828['as'],'attributes':_0x59b828['attributes'],'include':_0x59b828[_0x5b21('0x19')]?_[_0x5b21('0x1a')](_0x59b828[_0x5b21('0x19')],function(_0x3b6422){return{'model':db[_0x3b6422[_0x5b21('0x1b')]],'as':_0x3b6422['as'],'attributes':_0x3b6422[_0x5b21('0x18')],'include':_0x3b6422[_0x5b21('0x19')]?_[_0x5b21('0x1a')](_0x3b6422[_0x5b21('0x19')],function(_0x4e532e){return{'model':db[_0x4e532e[_0x5b21('0x1b')]],'as':_0x4e532e['as'],'attributes':_0x4e532e[_0x5b21('0x18')]};}):[]};}):[]};}):[]:[]})[_0x5b21('0x9')](function(_0x446f59){logger['info'](_0x5b21('0x1f'),_0x3835a6);logger[_0x5b21('0x1c')]('ShowDynamics365Account',_0x3835a6,JSON[_0x5b21('0xd')](_0x446f59));_0x121544(_0x446f59);})['catch'](function(_0xe2f761){logger[_0x5b21('0xe')](_0x5b21('0x1f'),_0xe2f761[_0x5b21('0x10')],_0x3835a6);_0x53839e(_0x5bc2b6['error'](0x1f4,_0xe2f761[_0x5b21('0x10')]));});});};
\ No newline at end of file
+var _0xdd8a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','options','raw','where','attributes','limit','include','map','model','debug','ShowDynamics365Account','lodash','util','moment'];(function(_0x520023,_0x2f4de2){var _0x17aa8e=function(_0x4d41b4){while(--_0x4d41b4){_0x520023['push'](_0x520023['shift']());}};_0x17aa8e(++_0x2f4de2);}(_0xdd8a,0x141));var _0xadd8=function(_0x17784a,_0x42fe44){_0x17784a=_0x17784a-0x0;var _0x41aded=_0xdd8a[_0x17784a];return _0x41aded;};'use strict';var _=require(_0xadd8('0x0'));var util=require(_0xadd8('0x1'));var moment=require(_0xadd8('0x2'));var BPromise=require('bluebird');var rs=require(_0xadd8('0x3'));var fs=require('fs');var Redis=require(_0xadd8('0x4'));var db=require(_0xadd8('0x5'))['db'];var utils=require(_0xadd8('0x6'));var logger=require(_0xadd8('0x7'))(_0xadd8('0x8'));var config=require(_0xadd8('0x9'));var jayson=require(_0xadd8('0xa'));var client=jayson[_0xadd8('0xb')][_0xadd8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4f1f63,_0x208298,_0x507d84){return new BPromise(function(_0x30b769,_0x53efd5){return client['request'](_0x4f1f63,_0x507d84)[_0xadd8('0xd')](function(_0x4cf829){logger[_0xadd8('0xe')](_0xadd8('0xf'),_0x208298,_0xadd8('0x10'));logger['debug'](_0xadd8('0x11'),_0x208298,_0xadd8('0x10'),JSON[_0xadd8('0x12')](_0x4cf829));if(_0x4cf829[_0xadd8('0x13')]){if(_0x4cf829[_0xadd8('0x13')][_0xadd8('0x14')]===0x1f4){logger[_0xadd8('0x13')](_0xadd8('0xf'),_0x208298,_0x4cf829[_0xadd8('0x13')][_0xadd8('0x15')]);return _0x53efd5(_0x4cf829[_0xadd8('0x13')]['message']);}logger[_0xadd8('0x13')](_0xadd8('0xf'),_0x208298,_0x4cf829['error']['message']);return _0x30b769(_0x4cf829['error'][_0xadd8('0x15')]);}else{logger[_0xadd8('0xe')](_0xadd8('0xf'),_0x208298,'request\x20sent');_0x30b769(_0x4cf829[_0xadd8('0x16')][_0xadd8('0x15')]);}})[_0xadd8('0x17')](function(_0x3489b9){logger[_0xadd8('0x13')](_0xadd8('0xf'),_0x208298,_0x3489b9);_0x53efd5(_0x3489b9);});});}exports[_0xadd8('0x18')]=function(_0x4fda79){var _0x3893cf=this;return new Promise(function(_0x273ec7,_0x34fba4){return db[_0xadd8('0x19')]['findAll']({'raw':_0x4fda79['options']?_0x4fda79[_0xadd8('0x1a')][_0xadd8('0x1b')]===undefined?!![]:![]:!![],'where':_0x4fda79[_0xadd8('0x1a')]?_0x4fda79[_0xadd8('0x1a')][_0xadd8('0x1c')]||null:null,'attributes':_0x4fda79['options']?_0x4fda79['options'][_0xadd8('0x1d')]||null:null,'limit':_0x4fda79['options']?_0x4fda79[_0xadd8('0x1a')][_0xadd8('0x1e')]||null:null,'include':_0x4fda79[_0xadd8('0x1a')]?_0x4fda79['options'][_0xadd8('0x1f')]?_[_0xadd8('0x20')](_0x4fda79[_0xadd8('0x1a')]['include'],function(_0x3f4c63){return{'model':db[_0x3f4c63['model']],'as':_0x3f4c63['as'],'attributes':_0x3f4c63[_0xadd8('0x1d')],'include':_0x3f4c63['include']?_[_0xadd8('0x20')](_0x3f4c63[_0xadd8('0x1f')],function(_0x1ce6cc){return{'model':db[_0x1ce6cc[_0xadd8('0x21')]],'as':_0x1ce6cc['as'],'attributes':_0x1ce6cc[_0xadd8('0x1d')],'include':_0x1ce6cc[_0xadd8('0x1f')]?_[_0xadd8('0x20')](_0x1ce6cc[_0xadd8('0x1f')],function(_0x31a755){return{'model':db[_0x31a755['model']],'as':_0x31a755['as'],'attributes':_0x31a755[_0xadd8('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xadd8('0xd')](function(_0x14da00){logger[_0xadd8('0xe')]('GetDynamics365Account',_0x4fda79);logger[_0xadd8('0x22')]('GetDynamics365Account',_0x4fda79,JSON[_0xadd8('0x12')](_0x14da00));_0x273ec7(_0x14da00);})[_0xadd8('0x17')](function(_0x539392){logger['error'](_0xadd8('0x18'),_0x539392[_0xadd8('0x15')],_0x4fda79);_0x34fba4(_0x3893cf[_0xadd8('0x13')](0x1f4,_0x539392[_0xadd8('0x15')]));});});};exports[_0xadd8('0x23')]=function(_0x3637d8){var _0x4c51eb=this;return new Promise(function(_0xc16be0,_0x929bf0){return db[_0xadd8('0x19')]['find']({'raw':_0x3637d8[_0xadd8('0x1a')]?_0x3637d8[_0xadd8('0x1a')][_0xadd8('0x1b')]===undefined?!![]:![]:!![],'where':_0x3637d8[_0xadd8('0x1a')]?_0x3637d8[_0xadd8('0x1a')][_0xadd8('0x1c')]||null:null,'attributes':_0x3637d8['options']?_0x3637d8[_0xadd8('0x1a')][_0xadd8('0x1d')]||null:null,'include':_0x3637d8[_0xadd8('0x1a')]?_0x3637d8[_0xadd8('0x1a')]['include']?_[_0xadd8('0x20')](_0x3637d8[_0xadd8('0x1a')][_0xadd8('0x1f')],function(_0x8248fe){return{'model':db[_0x8248fe[_0xadd8('0x21')]],'as':_0x8248fe['as'],'attributes':_0x8248fe['attributes'],'include':_0x8248fe[_0xadd8('0x1f')]?_['map'](_0x8248fe[_0xadd8('0x1f')],function(_0x55b0d7){return{'model':db[_0x55b0d7[_0xadd8('0x21')]],'as':_0x55b0d7['as'],'attributes':_0x55b0d7[_0xadd8('0x1d')],'include':_0x55b0d7[_0xadd8('0x1f')]?_['map'](_0x55b0d7[_0xadd8('0x1f')],function(_0x3d892e){return{'model':db[_0x3d892e[_0xadd8('0x21')]],'as':_0x3d892e['as'],'attributes':_0x3d892e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x519b86){logger['info'](_0xadd8('0x23'),_0x3637d8);logger[_0xadd8('0x22')](_0xadd8('0x23'),_0x3637d8,JSON[_0xadd8('0x12')](_0x519b86));_0xc16be0(_0x519b86);})['catch'](function(_0x4a83ff){logger[_0xadd8('0x13')](_0xadd8('0x23'),_0x4a83ff[_0xadd8('0x15')],_0x3637d8);_0x929bf0(_0x4c51eb['error'](0x1f4,_0x4a83ff[_0xadd8('0x15')]));});});};
\ No newline at end of file
index d072070..ccec60e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9227=['index','/:id','show','getFields','/:id/subjects','getDescriptions','create','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated'];(function(_0x5612d1,_0x464b7a){var _0xcdb071=function(_0x114723){while(--_0x114723){_0x5612d1['push'](_0x5612d1['shift']());}};_0xcdb071(++_0x464b7a);}(_0x9227,0xc3));var _0x7922=function(_0x5c0dd8,_0x315d37){_0x5c0dd8=_0x5c0dd8-0x0;var _0xdea5c1=_0x9227[_0x5c0dd8];return _0xdea5c1;};'use strict';var multer=require(_0x7922('0x0'));var util=require('util');var path=require(_0x7922('0x1'));var timeout=require(_0x7922('0x2'));var express=require(_0x7922('0x3'));var router=express[_0x7922('0x4')]();var fs_extra=require(_0x7922('0x5'));var auth=require(_0x7922('0x6'));var interaction=require(_0x7922('0x7'));var config=require(_0x7922('0x8'));var controller=require(_0x7922('0x9'));router[_0x7922('0xa')]('/',auth[_0x7922('0xb')](),controller[_0x7922('0xc')]);router[_0x7922('0xa')](_0x7922('0xd'),auth['isAuthenticated'](),controller[_0x7922('0xe')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0x7922('0xf')]);router['get'](_0x7922('0x10'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x7922('0xa')]('/:id/descriptions',auth[_0x7922('0xb')](),controller[_0x7922('0x11')]);router['post']('/',auth[_0x7922('0xb')](),controller[_0x7922('0x12')]);router[_0x7922('0x13')](_0x7922('0xd'),auth[_0x7922('0xb')](),controller[_0x7922('0x14')]);router['delete']('/:id',auth[_0x7922('0xb')](),controller[_0x7922('0x15')]);module[_0x7922('0x16')]=router;
\ No newline at end of file
+var _0xc7d5=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','getFields','/:id/subjects','/:id/descriptions','getDescriptions'];(function(_0x4defbd,_0x51c5c1){var _0x56e722=function(_0x28af0d){while(--_0x28af0d){_0x4defbd['push'](_0x4defbd['shift']());}};_0x56e722(++_0x51c5c1);}(_0xc7d5,0x6b));var _0x5c7d=function(_0x1294d0,_0x432681){_0x1294d0=_0x1294d0-0x0;var _0xd7c81c=_0xc7d5[_0x1294d0];return _0xd7c81c;};'use strict';var multer=require(_0x5c7d('0x0'));var util=require(_0x5c7d('0x1'));var path=require(_0x5c7d('0x2'));var timeout=require(_0x5c7d('0x3'));var express=require(_0x5c7d('0x4'));var router=express[_0x5c7d('0x5')]();var fs_extra=require(_0x5c7d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5c7d('0x7'));var config=require(_0x5c7d('0x8'));var controller=require(_0x5c7d('0x9'));router[_0x5c7d('0xa')]('/',auth[_0x5c7d('0xb')](),controller[_0x5c7d('0xc')]);router[_0x5c7d('0xa')](_0x5c7d('0xd'),auth[_0x5c7d('0xb')](),controller['show']);router[_0x5c7d('0xa')]('/:id/fields',auth[_0x5c7d('0xb')](),controller[_0x5c7d('0xe')]);router[_0x5c7d('0xa')](_0x5c7d('0xf'),auth[_0x5c7d('0xb')](),controller['getSubjects']);router[_0x5c7d('0xa')](_0x5c7d('0x10'),auth['isAuthenticated'](),controller[_0x5c7d('0x11')]);router[_0x5c7d('0x12')]('/',auth[_0x5c7d('0xb')](),controller[_0x5c7d('0x13')]);router[_0x5c7d('0x14')](_0x5c7d('0xd'),auth[_0x5c7d('0xb')](),controller[_0x5c7d('0x15')]);router[_0x5c7d('0x16')](_0x5c7d('0xd'),auth[_0x5c7d('0xb')](),controller[_0x5c7d('0x17')]);module[_0x5c7d('0x18')]=router;
\ No newline at end of file
index d217c20..ff5dddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf23b=['phonecall','contact','exports','STRING','ENUM','incident'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf23b,0x1d6));var _0xbf23=function(_0x2981a8,_0x454d24){_0x2981a8=_0x2981a8-0x0;var _0x205036=_0xf23b[_0x2981a8];return _0x205036;};'use strict';var Sequelize=require('sequelize');module[_0xbf23('0x0')]={'name':{'type':Sequelize[_0xbf23('0x1')]},'description':{'type':Sequelize[_0xbf23('0x1')]},'ticketType':{'type':Sequelize[_0xbf23('0x2')](_0xbf23('0x3'),_0xbf23('0x4')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize['ENUM'](_0xbf23('0x5'),'nothing'),'defaultValue':_0xbf23('0x5'),'allowNull':![]}};
\ No newline at end of file
+var _0x6aaf=['incident','ENUM','contact','sequelize','STRING','phonecall'];(function(_0x17e703,_0x3e1e0a){var _0x115cd1=function(_0x134e60){while(--_0x134e60){_0x17e703['push'](_0x17e703['shift']());}};_0x115cd1(++_0x3e1e0a);}(_0x6aaf,0xe7));var _0xf6aa=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0x6aaf[_0x3e25c1];return _0x52e7f2;};'use strict';var Sequelize=require(_0xf6aa('0x0'));module['exports']={'name':{'type':Sequelize[_0xf6aa('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM']('incident',_0xf6aa('0x2')),'defaultValue':_0xf6aa('0x3')},'moduleCreate':{'type':Sequelize[_0xf6aa('0x4')](_0xf6aa('0x5'),'nothing'),'defaultValue':_0xf6aa('0x5'),'allowNull':![]}};
\ No newline at end of file
index 0dfd95e..daab1a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaa2=['hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','rawAttributes','length','include','find','create','update','body','destroy','getFields','Dynamics365Field','options','nolimit','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','then','end','error','stack','name','send','index','map','Dynamics365Configuration','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes'];(function(_0x33c4e1,_0x48e545){var _0x7f81fc=function(_0x1507d2){while(--_0x1507d2){_0x33c4e1['push'](_0x33c4e1['shift']());}};_0x7f81fc(++_0x48e545);}(_0xdaa2,0x1f1));var _0x2daa=function(_0x4344ac,_0x5b5be4){_0x4344ac=_0x4344ac-0x0;var _0x3af140=_0xdaa2[_0x4344ac];return _0x3af140;};'use strict';var emlformat=require(_0x2daa('0x0'));var rimraf=require(_0x2daa('0x1'));var zipdir=require(_0x2daa('0x2'));var jsonpatch=require(_0x2daa('0x3'));var rp=require(_0x2daa('0x4'));var moment=require(_0x2daa('0x5'));var BPromise=require(_0x2daa('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x2daa('0x7'));var csv=require(_0x2daa('0x8'));var ejs=require(_0x2daa('0x9'));var fs=require('fs');var fs_extra=require(_0x2daa('0xa'));var _=require(_0x2daa('0xb'));var squel=require('squel');var crypto=require(_0x2daa('0xc'));var jsforce=require(_0x2daa('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2daa('0x8'));var querystring=require(_0x2daa('0xe'));var Papa=require(_0x2daa('0xf'));var Redis=require('ioredis');var authService=require(_0x2daa('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2daa('0x11'))(_0x2daa('0x12'));var utils=require('../../config/utils');var config=require(_0x2daa('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2daa('0x14'))['db'];function respondWithStatusCode(_0x38040b,_0x4c27a2){_0x4c27a2=_0x4c27a2||0xcc;return function(_0x2641a6){if(_0x2641a6){return _0x38040b[_0x2daa('0x15')](_0x4c27a2);}return _0x38040b[_0x2daa('0x16')](_0x4c27a2)['end']();};}function respondWithResult(_0x2b4330,_0x3e8710){_0x3e8710=_0x3e8710||0xc8;return function(_0x10bb0f){if(_0x10bb0f){return _0x2b4330[_0x2daa('0x16')](_0x3e8710)['json'](_0x10bb0f);}};}function respondWithFilteredResult(_0x2a2976,_0x4d83e7){return function(_0x290af6){if(_0x290af6){var _0x4c3518=typeof _0x4d83e7[_0x2daa('0x17')]===_0x2daa('0x18')&&typeof _0x4d83e7[_0x2daa('0x19')]===_0x2daa('0x18');var _0x55201a=_0x290af6[_0x2daa('0x1a')];var _0x29d743=_0x4c3518?0x0:_0x4d83e7['offset'];var _0x203c7e=_0x4c3518?_0x290af6[_0x2daa('0x1a')]:_0x4d83e7[_0x2daa('0x17')]+_0x4d83e7['limit'];var _0x1772c0;if(_0x203c7e>=_0x55201a){_0x203c7e=_0x55201a;_0x1772c0=0xc8;}else{_0x1772c0=0xce;}_0x2a2976[_0x2daa('0x16')](_0x1772c0);return _0x2a2976[_0x2daa('0x1b')]('Content-Range',_0x29d743+'-'+_0x203c7e+'/'+_0x55201a)[_0x2daa('0x1c')](_0x290af6);}return null;};}function patchUpdates(_0x14ec88){return function(_0x201162){try{jsonpatch[_0x2daa('0x1d')](_0x201162,_0x14ec88,!![]);}catch(_0x12d326){return BPromise['reject'](_0x12d326);}return _0x201162['save']();};}function saveUpdates(_0x14363d,_0x39ef74){return function(_0x15a91e){if(_0x15a91e){return _0x15a91e['update'](_0x14363d)[_0x2daa('0x1e')](function(_0xa4fbe7){return _0xa4fbe7;});}return null;};}function removeEntity(_0x33dd48,_0x20cb82){return function(_0xbe605e){if(_0xbe605e){return _0xbe605e['destroy']()[_0x2daa('0x1e')](function(){_0x33dd48[_0x2daa('0x16')](0xcc)[_0x2daa('0x1f')]();});}};}function handleEntityNotFound(_0x5a6230,_0x108235){return function(_0x5d2cc4){if(!_0x5d2cc4){_0x5a6230[_0x2daa('0x15')](0x194);}return _0x5d2cc4;};}function handleError(_0x12eef3,_0x415736){_0x415736=_0x415736||0x1f4;return function(_0x587316){logger[_0x2daa('0x20')](_0x587316[_0x2daa('0x21')]);if(_0x587316[_0x2daa('0x22')]){delete _0x587316[_0x2daa('0x22')];}_0x12eef3[_0x2daa('0x16')](_0x415736)[_0x2daa('0x23')](_0x587316);};}exports[_0x2daa('0x24')]=function(_0x4adb84,_0x288fcc){var _0x29715e={},_0x13383f={},_0x40f561={'count':0x0,'rows':[]};var _0x5cd728=_[_0x2daa('0x25')](db[_0x2daa('0x26')]['rawAttributes'],function(_0x1a88e9){return{'name':_0x1a88e9[_0x2daa('0x27')],'type':_0x1a88e9[_0x2daa('0x28')][_0x2daa('0x29')]};});_0x13383f[_0x2daa('0x2a')]=_[_0x2daa('0x25')](_0x5cd728,'name');_0x13383f['query']=_[_0x2daa('0x2b')](_0x4adb84[_0x2daa('0x2c')]);_0x13383f[_0x2daa('0x2d')]=_[_0x2daa('0x2e')](_0x13383f[_0x2daa('0x2a')],_0x13383f['query']);_0x29715e['attributes']=_[_0x2daa('0x2e')](_0x13383f[_0x2daa('0x2a')],qs['fields'](_0x4adb84['query'][_0x2daa('0x2f')]));_0x29715e['attributes']=_0x29715e[_0x2daa('0x30')]['length']?_0x29715e['attributes']:_0x13383f[_0x2daa('0x2a')];if(!_0x4adb84['query'][_0x2daa('0x31')]('nolimit')){_0x29715e['limit']=qs[_0x2daa('0x19')](_0x4adb84['query'][_0x2daa('0x19')]);_0x29715e[_0x2daa('0x17')]=qs[_0x2daa('0x17')](_0x4adb84[_0x2daa('0x2c')][_0x2daa('0x17')]);}_0x29715e[_0x2daa('0x32')]=qs['sort'](_0x4adb84[_0x2daa('0x2c')][_0x2daa('0x33')]);_0x29715e[_0x2daa('0x34')]=qs[_0x2daa('0x2d')](_[_0x2daa('0x35')](_0x4adb84[_0x2daa('0x2c')],_0x13383f[_0x2daa('0x2d')]),_0x5cd728);if(_0x4adb84[_0x2daa('0x2c')]['filter']){_0x29715e[_0x2daa('0x34')]=_[_0x2daa('0x36')](_0x29715e[_0x2daa('0x34')],{'$or':_[_0x2daa('0x25')](_0x5cd728,function(_0x10352e){if(_0x10352e[_0x2daa('0x28')]!==_0x2daa('0x37')){var _0x5d5651={};_0x5d5651[_0x10352e[_0x2daa('0x22')]]={'$like':'%'+_0x4adb84[_0x2daa('0x2c')][_0x2daa('0x38')]+'%'};return _0x5d5651;}})});}_0x29715e=_['merge']({},_0x29715e,_0x4adb84['options']);var _0x4a8641={'where':_0x29715e['where']};return db[_0x2daa('0x26')][_0x2daa('0x1a')](_0x4a8641)[_0x2daa('0x1e')](function(_0x3ce0f3){_0x40f561[_0x2daa('0x1a')]=_0x3ce0f3;if(_0x4adb84['query'][_0x2daa('0x39')]){_0x29715e['include']=[{'all':!![]}];}return db[_0x2daa('0x26')][_0x2daa('0x3a')](_0x29715e);})[_0x2daa('0x1e')](function(_0x4051a2){_0x40f561[_0x2daa('0x3b')]=_0x4051a2;return _0x40f561;})[_0x2daa('0x1e')](respondWithFilteredResult(_0x288fcc,_0x29715e))[_0x2daa('0x3c')](handleError(_0x288fcc,null));};exports[_0x2daa('0x3d')]=function(_0x5ddf70,_0x28c540){var _0x1664c9={'raw':![],'where':{'id':_0x5ddf70[_0x2daa('0x3e')]['id']}},_0x3d759c={};_0x3d759c[_0x2daa('0x2a')]=_[_0x2daa('0x2b')](db[_0x2daa('0x26')][_0x2daa('0x3f')]);_0x3d759c[_0x2daa('0x2c')]=_[_0x2daa('0x2b')](_0x5ddf70[_0x2daa('0x2c')]);_0x3d759c[_0x2daa('0x2d')]=_[_0x2daa('0x2e')](_0x3d759c[_0x2daa('0x2a')],_0x3d759c['query']);_0x1664c9[_0x2daa('0x30')]=_[_0x2daa('0x2e')](_0x3d759c[_0x2daa('0x2a')],qs[_0x2daa('0x2f')](_0x5ddf70[_0x2daa('0x2c')][_0x2daa('0x2f')]));_0x1664c9[_0x2daa('0x30')]=_0x1664c9[_0x2daa('0x30')][_0x2daa('0x40')]?_0x1664c9[_0x2daa('0x30')]:_0x3d759c[_0x2daa('0x2a')];if(_0x5ddf70['query']['includeAll']){_0x1664c9[_0x2daa('0x41')]=[{'all':!![]}];}_0x1664c9=_[_0x2daa('0x36')]({},_0x1664c9,_0x5ddf70['options']);return db[_0x2daa('0x26')][_0x2daa('0x42')](_0x1664c9)[_0x2daa('0x1e')](handleEntityNotFound(_0x28c540,null))[_0x2daa('0x1e')](respondWithResult(_0x28c540,null))[_0x2daa('0x3c')](handleError(_0x28c540,null));};exports[_0x2daa('0x43')]=function(_0x5b7d13,_0x44dca1){return db[_0x2daa('0x26')]['create'](_0x5b7d13['body'],{})[_0x2daa('0x1e')](respondWithResult(_0x44dca1,0xc9))['catch'](handleError(_0x44dca1,null));};exports[_0x2daa('0x44')]=function(_0x43ae15,_0x48392d){if(_0x43ae15[_0x2daa('0x45')]['id']){delete _0x43ae15['body']['id'];}return db['Dynamics365Configuration'][_0x2daa('0x42')]({'where':{'id':_0x43ae15[_0x2daa('0x3e')]['id']}})[_0x2daa('0x1e')](handleEntityNotFound(_0x48392d,null))['then'](saveUpdates(_0x43ae15['body'],null))[_0x2daa('0x1e')](respondWithResult(_0x48392d,null))[_0x2daa('0x3c')](handleError(_0x48392d,null));};exports[_0x2daa('0x46')]=function(_0x181e16,_0x1a1f06){return db[_0x2daa('0x26')][_0x2daa('0x42')]({'where':{'id':_0x181e16[_0x2daa('0x3e')]['id']}})[_0x2daa('0x1e')](handleEntityNotFound(_0x1a1f06,null))['then'](removeEntity(_0x1a1f06,null))['catch'](handleError(_0x1a1f06,null));};exports[_0x2daa('0x47')]=function(_0x3dadc9,_0x878d6e,_0x59f8dd){var _0x788541={};var _0xe358d3={};var _0x17c206;var _0x4a6cbe;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x3dadc9[_0x2daa('0x3e')]['id']}})[_0x2daa('0x1e')](handleEntityNotFound(_0x878d6e,null))[_0x2daa('0x1e')](function(_0x2c2b38){if(_0x2c2b38){_0x17c206=_0x2c2b38;_0xe358d3['model']=_[_0x2daa('0x2b')](db[_0x2daa('0x48')][_0x2daa('0x3f')]);_0xe358d3[_0x2daa('0x2c')]=_[_0x2daa('0x2b')](_0x3dadc9[_0x2daa('0x2c')]);_0xe358d3[_0x2daa('0x2d')]=_[_0x2daa('0x2e')](_0xe358d3[_0x2daa('0x2a')],_0xe358d3[_0x2daa('0x2c')]);_0x788541[_0x2daa('0x30')]=_[_0x2daa('0x2e')](_0xe358d3[_0x2daa('0x2a')],qs[_0x2daa('0x2f')](_0x3dadc9[_0x2daa('0x2c')]['fields']));_0x788541[_0x2daa('0x30')]=_0x788541[_0x2daa('0x30')][_0x2daa('0x40')]?_0x788541['attributes']:_0xe358d3[_0x2daa('0x2a')];_0x788541['order']=qs['sort'](_0x3dadc9[_0x2daa('0x2c')][_0x2daa('0x33')]);_0x788541[_0x2daa('0x34')]=qs[_0x2daa('0x2d')](_[_0x2daa('0x35')](_0x3dadc9['query'],_0xe358d3[_0x2daa('0x2d')]));if(_0x3dadc9[_0x2daa('0x2c')][_0x2daa('0x38')]){_0x788541['where']=_['merge'](_0x788541[_0x2daa('0x34')],{'$or':_[_0x2daa('0x25')](_0x788541[_0x2daa('0x30')],function(_0x4c6d6f){var _0x297078={};_0x297078[_0x4c6d6f]={'$like':'%'+_0x3dadc9[_0x2daa('0x2c')][_0x2daa('0x38')]+'%'};return _0x297078;})});}_0x788541=_[_0x2daa('0x36')]({},_0x788541,_0x3dadc9[_0x2daa('0x49')]);return _0x17c206[_0x2daa('0x47')](_0x788541);}})['then'](function(_0x38cb58){if(_0x38cb58){_0x4a6cbe=_0x38cb58['length'];if(!_0x3dadc9[_0x2daa('0x2c')]['hasOwnProperty'](_0x2daa('0x4a'))){_0x788541['limit']=qs[_0x2daa('0x19')](_0x3dadc9['query'][_0x2daa('0x19')]);_0x788541[_0x2daa('0x17')]=qs[_0x2daa('0x17')](_0x3dadc9[_0x2daa('0x2c')][_0x2daa('0x17')]);}return _0x17c206[_0x2daa('0x47')](_0x788541);}})[_0x2daa('0x1e')](function(_0x53581c){if(_0x53581c){return _0x53581c?{'count':_0x4a6cbe,'rows':_0x53581c}:null;}})[_0x2daa('0x1e')](respondWithResult(_0x878d6e,null))[_0x2daa('0x3c')](handleError(_0x878d6e,null));};exports[_0x2daa('0x4b')]=function(_0x2b81fb,_0x570bd4,_0x5ed24f){var _0x4e2954={};var _0xd0a293={};var _0x2f8365;var _0x2eaac3;return db[_0x2daa('0x26')][_0x2daa('0x4c')]({'where':{'id':_0x2b81fb[_0x2daa('0x3e')]['id']}})[_0x2daa('0x1e')](handleEntityNotFound(_0x570bd4,null))[_0x2daa('0x1e')](function(_0x229bb6){if(_0x229bb6){_0x2f8365=_0x229bb6;_0xd0a293[_0x2daa('0x2a')]=_[_0x2daa('0x2b')](db[_0x2daa('0x48')][_0x2daa('0x3f')]);_0xd0a293[_0x2daa('0x2c')]=_['keys'](_0x2b81fb[_0x2daa('0x2c')]);_0xd0a293[_0x2daa('0x2d')]=_[_0x2daa('0x2e')](_0xd0a293[_0x2daa('0x2a')],_0xd0a293['query']);_0x4e2954[_0x2daa('0x30')]=_[_0x2daa('0x2e')](_0xd0a293[_0x2daa('0x2a')],qs[_0x2daa('0x2f')](_0x2b81fb[_0x2daa('0x2c')]['fields']));_0x4e2954[_0x2daa('0x30')]=_0x4e2954[_0x2daa('0x30')][_0x2daa('0x40')]?_0x4e2954[_0x2daa('0x30')]:_0xd0a293['model'];_0x4e2954[_0x2daa('0x32')]=qs[_0x2daa('0x33')](_0x2b81fb[_0x2daa('0x2c')][_0x2daa('0x33')]);_0x4e2954['where']=qs[_0x2daa('0x2d')](_[_0x2daa('0x35')](_0x2b81fb[_0x2daa('0x2c')],_0xd0a293[_0x2daa('0x2d')]));if(_0x2b81fb[_0x2daa('0x2c')]['filter']){_0x4e2954[_0x2daa('0x34')]=_[_0x2daa('0x36')](_0x4e2954[_0x2daa('0x34')],{'$or':_['map'](_0x4e2954[_0x2daa('0x30')],function(_0x50c7c3){var _0x36c81e={};_0x36c81e[_0x50c7c3]={'$like':'%'+_0x2b81fb[_0x2daa('0x2c')]['filter']+'%'};return _0x36c81e;})});}_0x4e2954=_[_0x2daa('0x36')]({},_0x4e2954,_0x2b81fb['options']);return _0x2f8365['getSubjects'](_0x4e2954);}})[_0x2daa('0x1e')](function(_0x4c7210){if(_0x4c7210){_0x2eaac3=_0x4c7210[_0x2daa('0x40')];if(!_0x2b81fb['query'][_0x2daa('0x31')](_0x2daa('0x4a'))){_0x4e2954[_0x2daa('0x19')]=qs['limit'](_0x2b81fb[_0x2daa('0x2c')]['limit']);_0x4e2954['offset']=qs[_0x2daa('0x17')](_0x2b81fb[_0x2daa('0x2c')]['offset']);}return _0x2f8365[_0x2daa('0x4b')](_0x4e2954);}})[_0x2daa('0x1e')](function(_0x1d3864){if(_0x1d3864){return _0x1d3864?{'count':_0x2eaac3,'rows':_0x1d3864}:null;}})[_0x2daa('0x1e')](respondWithResult(_0x570bd4,null))[_0x2daa('0x3c')](handleError(_0x570bd4,null));};exports['getDescriptions']=function(_0x119bdc,_0x1b5f00,_0x89c70a){var _0x28bb48={};var _0x4c6e28={};var _0x53bff3;var _0x4e1ea8;return db[_0x2daa('0x26')][_0x2daa('0x4c')]({'where':{'id':_0x119bdc[_0x2daa('0x3e')]['id']}})[_0x2daa('0x1e')](handleEntityNotFound(_0x1b5f00,null))['then'](function(_0x33874d){if(_0x33874d){_0x53bff3=_0x33874d;_0x4c6e28[_0x2daa('0x2a')]=_[_0x2daa('0x2b')](db[_0x2daa('0x48')]['rawAttributes']);_0x4c6e28[_0x2daa('0x2c')]=_['keys'](_0x119bdc[_0x2daa('0x2c')]);_0x4c6e28[_0x2daa('0x2d')]=_['intersection'](_0x4c6e28[_0x2daa('0x2a')],_0x4c6e28[_0x2daa('0x2c')]);_0x28bb48[_0x2daa('0x30')]=_[_0x2daa('0x2e')](_0x4c6e28[_0x2daa('0x2a')],qs[_0x2daa('0x2f')](_0x119bdc['query']['fields']));_0x28bb48[_0x2daa('0x30')]=_0x28bb48[_0x2daa('0x30')][_0x2daa('0x40')]?_0x28bb48['attributes']:_0x4c6e28[_0x2daa('0x2a')];_0x28bb48[_0x2daa('0x32')]=qs['sort'](_0x119bdc[_0x2daa('0x2c')]['sort']);_0x28bb48['where']=qs['filters'](_[_0x2daa('0x35')](_0x119bdc[_0x2daa('0x2c')],_0x4c6e28[_0x2daa('0x2d')]));if(_0x119bdc[_0x2daa('0x2c')][_0x2daa('0x38')]){_0x28bb48[_0x2daa('0x34')]=_[_0x2daa('0x36')](_0x28bb48[_0x2daa('0x34')],{'$or':_[_0x2daa('0x25')](_0x28bb48[_0x2daa('0x30')],function(_0x870337){var _0xd25b65={};_0xd25b65[_0x870337]={'$like':'%'+_0x119bdc['query'][_0x2daa('0x38')]+'%'};return _0xd25b65;})});}_0x28bb48=_[_0x2daa('0x36')]({},_0x28bb48,_0x119bdc['options']);return _0x53bff3[_0x2daa('0x4d')](_0x28bb48);}})[_0x2daa('0x1e')](function(_0x5461d5){if(_0x5461d5){_0x4e1ea8=_0x5461d5[_0x2daa('0x40')];if(!_0x119bdc[_0x2daa('0x2c')][_0x2daa('0x31')](_0x2daa('0x4a'))){_0x28bb48[_0x2daa('0x19')]=qs[_0x2daa('0x19')](_0x119bdc[_0x2daa('0x2c')][_0x2daa('0x19')]);_0x28bb48[_0x2daa('0x17')]=qs[_0x2daa('0x17')](_0x119bdc[_0x2daa('0x2c')][_0x2daa('0x17')]);}return _0x53bff3[_0x2daa('0x4d')](_0x28bb48);}})['then'](function(_0x41204d){if(_0x41204d){return _0x41204d?{'count':_0x4e1ea8,'rows':_0x41204d}:null;}})[_0x2daa('0x1e')](respondWithResult(_0x1b5f00,null))['catch'](handleError(_0x1b5f00,null));};
\ No newline at end of file
+var _0x3536=['pick','nolimit','findOne','Dynamics365Field','order','getSubjects','getDescriptions','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','sort','filter','where','merge','VIRTUAL','options','includeAll','include','Dynamics365Configuration','catch','params','keys','create','body','find','getFields','length'];(function(_0x5645ad,_0x580ea3){var _0x17d292=function(_0xe66902){while(--_0xe66902){_0x5645ad['push'](_0x5645ad['shift']());}};_0x17d292(++_0x580ea3);}(_0x3536,0xa1));var _0x6353=function(_0x29a676,_0x55b2b8){_0x29a676=_0x29a676-0x0;var _0x4e4ef9=_0x3536[_0x29a676];return _0x4e4ef9;};'use strict';var emlformat=require(_0x6353('0x0'));var rimraf=require(_0x6353('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6353('0x2'));var moment=require(_0x6353('0x3'));var BPromise=require(_0x6353('0x4'));var Mustache=require(_0x6353('0x5'));var util=require(_0x6353('0x6'));var path=require('path');var sox=require(_0x6353('0x7'));var csv=require(_0x6353('0x8'));var ejs=require(_0x6353('0x9'));var fs=require('fs');var fs_extra=require(_0x6353('0xa'));var _=require('lodash');var squel=require(_0x6353('0xb'));var crypto=require('crypto');var jsforce=require(_0x6353('0xc'));var deskjs=require(_0x6353('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6353('0xe'));var Redis=require('ioredis');var authService=require(_0x6353('0xf'));var qs=require(_0x6353('0x10'));var as=require(_0x6353('0x11'));var hardwareService=require(_0x6353('0x12'));var logger=require('../../config/logger')(_0x6353('0x13'));var utils=require(_0x6353('0x14'));var config=require(_0x6353('0x15'));var licenseUtil=require(_0x6353('0x16'));var db=require(_0x6353('0x17'))['db'];function respondWithStatusCode(_0x119fd1,_0x3c7ca6){_0x3c7ca6=_0x3c7ca6||0xcc;return function(_0x1e31e1){if(_0x1e31e1){return _0x119fd1[_0x6353('0x18')](_0x3c7ca6);}return _0x119fd1[_0x6353('0x19')](_0x3c7ca6)['end']();};}function respondWithResult(_0x120bb9,_0x1f5e4b){_0x1f5e4b=_0x1f5e4b||0xc8;return function(_0x45affd){if(_0x45affd){return _0x120bb9[_0x6353('0x19')](_0x1f5e4b)[_0x6353('0x1a')](_0x45affd);}};}function respondWithFilteredResult(_0x3c9b9e,_0x3e8b08){return function(_0x53aa97){if(_0x53aa97){var _0x533ed6=typeof _0x3e8b08[_0x6353('0x1b')]==='undefined'&&typeof _0x3e8b08[_0x6353('0x1c')]===_0x6353('0x1d');var _0x48e5f3=_0x53aa97['count'];var _0x1fd723=_0x533ed6?0x0:_0x3e8b08[_0x6353('0x1b')];var _0x4e5a9d=_0x533ed6?_0x53aa97[_0x6353('0x1e')]:_0x3e8b08[_0x6353('0x1b')]+_0x3e8b08[_0x6353('0x1c')];var _0x119e3a;if(_0x4e5a9d>=_0x48e5f3){_0x4e5a9d=_0x48e5f3;_0x119e3a=0xc8;}else{_0x119e3a=0xce;}_0x3c9b9e[_0x6353('0x19')](_0x119e3a);return _0x3c9b9e[_0x6353('0x1f')](_0x6353('0x20'),_0x1fd723+'-'+_0x4e5a9d+'/'+_0x48e5f3)[_0x6353('0x1a')](_0x53aa97);}return null;};}function patchUpdates(_0x28d1cc){return function(_0x3a06c8){try{jsonpatch['apply'](_0x3a06c8,_0x28d1cc,!![]);}catch(_0x58c9b0){return BPromise[_0x6353('0x21')](_0x58c9b0);}return _0x3a06c8['save']();};}function saveUpdates(_0x581083,_0x3555df){return function(_0x591630){if(_0x591630){return _0x591630['update'](_0x581083)[_0x6353('0x22')](function(_0x433f90){return _0x433f90;});}return null;};}function removeEntity(_0x3631df,_0x2cab82){return function(_0x5325f6){if(_0x5325f6){return _0x5325f6[_0x6353('0x23')]()[_0x6353('0x22')](function(){_0x3631df[_0x6353('0x19')](0xcc)[_0x6353('0x24')]();});}};}function handleEntityNotFound(_0x2f2bcc,_0x55b807){return function(_0x2f81d0){if(!_0x2f81d0){_0x2f2bcc[_0x6353('0x18')](0x194);}return _0x2f81d0;};}function handleError(_0x5f1aa4,_0x28757e){_0x28757e=_0x28757e||0x1f4;return function(_0x5a5e90){logger[_0x6353('0x25')](_0x5a5e90[_0x6353('0x26')]);if(_0x5a5e90[_0x6353('0x27')]){delete _0x5a5e90['name'];}_0x5f1aa4['status'](_0x28757e)[_0x6353('0x28')](_0x5a5e90);};}exports[_0x6353('0x29')]=function(_0x224104,_0x3757f4){var _0x2955f7={},_0x1d1ba5={},_0x3d6746={'count':0x0,'rows':[]};var _0x374b51=_[_0x6353('0x2a')](db['Dynamics365Configuration'][_0x6353('0x2b')],function(_0x4bea7d){return{'name':_0x4bea7d['fieldName'],'type':_0x4bea7d[_0x6353('0x2c')][_0x6353('0x2d')]};});_0x1d1ba5[_0x6353('0x2e')]=_[_0x6353('0x2a')](_0x374b51,'name');_0x1d1ba5[_0x6353('0x2f')]=_['keys'](_0x224104[_0x6353('0x2f')]);_0x1d1ba5[_0x6353('0x30')]=_[_0x6353('0x31')](_0x1d1ba5[_0x6353('0x2e')],_0x1d1ba5[_0x6353('0x2f')]);_0x2955f7['attributes']=_['intersection'](_0x1d1ba5[_0x6353('0x2e')],qs[_0x6353('0x32')](_0x224104[_0x6353('0x2f')]['fields']));_0x2955f7[_0x6353('0x33')]=_0x2955f7['attributes']['length']?_0x2955f7[_0x6353('0x33')]:_0x1d1ba5[_0x6353('0x2e')];if(!_0x224104[_0x6353('0x2f')][_0x6353('0x34')]('nolimit')){_0x2955f7[_0x6353('0x1c')]=qs[_0x6353('0x1c')](_0x224104[_0x6353('0x2f')][_0x6353('0x1c')]);_0x2955f7['offset']=qs['offset'](_0x224104[_0x6353('0x2f')][_0x6353('0x1b')]);}_0x2955f7['order']=qs['sort'](_0x224104[_0x6353('0x2f')][_0x6353('0x35')]);_0x2955f7['where']=qs['filters'](_['pick'](_0x224104['query'],_0x1d1ba5[_0x6353('0x30')]),_0x374b51);if(_0x224104[_0x6353('0x2f')][_0x6353('0x36')]){_0x2955f7[_0x6353('0x37')]=_[_0x6353('0x38')](_0x2955f7[_0x6353('0x37')],{'$or':_[_0x6353('0x2a')](_0x374b51,function(_0x5402c7){if(_0x5402c7['type']!==_0x6353('0x39')){var _0xd073b2={};_0xd073b2[_0x5402c7['name']]={'$like':'%'+_0x224104[_0x6353('0x2f')][_0x6353('0x36')]+'%'};return _0xd073b2;}})});}_0x2955f7=_[_0x6353('0x38')]({},_0x2955f7,_0x224104[_0x6353('0x3a')]);var _0x5262e2={'where':_0x2955f7[_0x6353('0x37')]};return db['Dynamics365Configuration'][_0x6353('0x1e')](_0x5262e2)[_0x6353('0x22')](function(_0x30ecf0){_0x3d6746['count']=_0x30ecf0;if(_0x224104['query'][_0x6353('0x3b')]){_0x2955f7[_0x6353('0x3c')]=[{'all':!![]}];}return db[_0x6353('0x3d')]['findAll'](_0x2955f7);})[_0x6353('0x22')](function(_0xbf0260){_0x3d6746['rows']=_0xbf0260;return _0x3d6746;})[_0x6353('0x22')](respondWithFilteredResult(_0x3757f4,_0x2955f7))[_0x6353('0x3e')](handleError(_0x3757f4,null));};exports['show']=function(_0x2c0fe0,_0x5eaee2){var _0x59647c={'raw':![],'where':{'id':_0x2c0fe0[_0x6353('0x3f')]['id']}},_0x14f9d3={};_0x14f9d3[_0x6353('0x2e')]=_[_0x6353('0x40')](db['Dynamics365Configuration'][_0x6353('0x2b')]);_0x14f9d3['query']=_[_0x6353('0x40')](_0x2c0fe0['query']);_0x14f9d3[_0x6353('0x30')]=_[_0x6353('0x31')](_0x14f9d3['model'],_0x14f9d3['query']);_0x59647c[_0x6353('0x33')]=_[_0x6353('0x31')](_0x14f9d3['model'],qs[_0x6353('0x32')](_0x2c0fe0['query']['fields']));_0x59647c[_0x6353('0x33')]=_0x59647c[_0x6353('0x33')]['length']?_0x59647c[_0x6353('0x33')]:_0x14f9d3['model'];if(_0x2c0fe0[_0x6353('0x2f')][_0x6353('0x3b')]){_0x59647c[_0x6353('0x3c')]=[{'all':!![]}];}_0x59647c=_[_0x6353('0x38')]({},_0x59647c,_0x2c0fe0['options']);return db[_0x6353('0x3d')]['find'](_0x59647c)['then'](handleEntityNotFound(_0x5eaee2,null))['then'](respondWithResult(_0x5eaee2,null))[_0x6353('0x3e')](handleError(_0x5eaee2,null));};exports[_0x6353('0x41')]=function(_0x22f1e5,_0x3ba49a){return db['Dynamics365Configuration'][_0x6353('0x41')](_0x22f1e5[_0x6353('0x42')],{})[_0x6353('0x22')](respondWithResult(_0x3ba49a,0xc9))[_0x6353('0x3e')](handleError(_0x3ba49a,null));};exports['update']=function(_0x59b9cb,_0x473960){if(_0x59b9cb[_0x6353('0x42')]['id']){delete _0x59b9cb[_0x6353('0x42')]['id'];}return db[_0x6353('0x3d')]['find']({'where':{'id':_0x59b9cb[_0x6353('0x3f')]['id']}})['then'](handleEntityNotFound(_0x473960,null))['then'](saveUpdates(_0x59b9cb[_0x6353('0x42')],null))['then'](respondWithResult(_0x473960,null))[_0x6353('0x3e')](handleError(_0x473960,null));};exports['destroy']=function(_0x38073f,_0x30c62a){return db[_0x6353('0x3d')][_0x6353('0x43')]({'where':{'id':_0x38073f[_0x6353('0x3f')]['id']}})[_0x6353('0x22')](handleEntityNotFound(_0x30c62a,null))[_0x6353('0x22')](removeEntity(_0x30c62a,null))[_0x6353('0x3e')](handleError(_0x30c62a,null));};exports[_0x6353('0x44')]=function(_0x44d982,_0x179206,_0xf5c99d){var _0x5e5f82={};var _0x350b75={};var _0x18455f;var _0xb38902;return db[_0x6353('0x3d')]['findOne']({'where':{'id':_0x44d982['params']['id']}})['then'](handleEntityNotFound(_0x179206,null))['then'](function(_0x1bed76){if(_0x1bed76){_0x18455f=_0x1bed76;_0x350b75[_0x6353('0x2e')]=_[_0x6353('0x40')](db['Dynamics365Field'][_0x6353('0x2b')]);_0x350b75[_0x6353('0x2f')]=_['keys'](_0x44d982[_0x6353('0x2f')]);_0x350b75[_0x6353('0x30')]=_[_0x6353('0x31')](_0x350b75['model'],_0x350b75['query']);_0x5e5f82[_0x6353('0x33')]=_[_0x6353('0x31')](_0x350b75[_0x6353('0x2e')],qs[_0x6353('0x32')](_0x44d982['query']['fields']));_0x5e5f82[_0x6353('0x33')]=_0x5e5f82[_0x6353('0x33')][_0x6353('0x45')]?_0x5e5f82[_0x6353('0x33')]:_0x350b75[_0x6353('0x2e')];_0x5e5f82['order']=qs['sort'](_0x44d982[_0x6353('0x2f')][_0x6353('0x35')]);_0x5e5f82['where']=qs['filters'](_[_0x6353('0x46')](_0x44d982[_0x6353('0x2f')],_0x350b75['filters']));if(_0x44d982['query'][_0x6353('0x36')]){_0x5e5f82['where']=_[_0x6353('0x38')](_0x5e5f82[_0x6353('0x37')],{'$or':_[_0x6353('0x2a')](_0x5e5f82[_0x6353('0x33')],function(_0x293144){var _0x334f60={};_0x334f60[_0x293144]={'$like':'%'+_0x44d982[_0x6353('0x2f')][_0x6353('0x36')]+'%'};return _0x334f60;})});}_0x5e5f82=_[_0x6353('0x38')]({},_0x5e5f82,_0x44d982[_0x6353('0x3a')]);return _0x18455f[_0x6353('0x44')](_0x5e5f82);}})[_0x6353('0x22')](function(_0x594243){if(_0x594243){_0xb38902=_0x594243['length'];if(!_0x44d982[_0x6353('0x2f')][_0x6353('0x34')](_0x6353('0x47'))){_0x5e5f82['limit']=qs[_0x6353('0x1c')](_0x44d982['query'][_0x6353('0x1c')]);_0x5e5f82[_0x6353('0x1b')]=qs[_0x6353('0x1b')](_0x44d982[_0x6353('0x2f')]['offset']);}return _0x18455f[_0x6353('0x44')](_0x5e5f82);}})['then'](function(_0x398d97){if(_0x398d97){return _0x398d97?{'count':_0xb38902,'rows':_0x398d97}:null;}})[_0x6353('0x22')](respondWithResult(_0x179206,null))['catch'](handleError(_0x179206,null));};exports['getSubjects']=function(_0x32d9d2,_0x19b6ee,_0x4f7b98){var _0xb676e6={};var _0x2e8051={};var _0x5e172b;var _0x19f901;return db['Dynamics365Configuration'][_0x6353('0x48')]({'where':{'id':_0x32d9d2[_0x6353('0x3f')]['id']}})[_0x6353('0x22')](handleEntityNotFound(_0x19b6ee,null))[_0x6353('0x22')](function(_0x3158b6){if(_0x3158b6){_0x5e172b=_0x3158b6;_0x2e8051[_0x6353('0x2e')]=_[_0x6353('0x40')](db[_0x6353('0x49')][_0x6353('0x2b')]);_0x2e8051[_0x6353('0x2f')]=_[_0x6353('0x40')](_0x32d9d2['query']);_0x2e8051[_0x6353('0x30')]=_[_0x6353('0x31')](_0x2e8051[_0x6353('0x2e')],_0x2e8051[_0x6353('0x2f')]);_0xb676e6['attributes']=_[_0x6353('0x31')](_0x2e8051['model'],qs['fields'](_0x32d9d2[_0x6353('0x2f')][_0x6353('0x32')]));_0xb676e6['attributes']=_0xb676e6[_0x6353('0x33')][_0x6353('0x45')]?_0xb676e6['attributes']:_0x2e8051[_0x6353('0x2e')];_0xb676e6[_0x6353('0x4a')]=qs[_0x6353('0x35')](_0x32d9d2[_0x6353('0x2f')][_0x6353('0x35')]);_0xb676e6[_0x6353('0x37')]=qs['filters'](_['pick'](_0x32d9d2[_0x6353('0x2f')],_0x2e8051['filters']));if(_0x32d9d2[_0x6353('0x2f')]['filter']){_0xb676e6['where']=_[_0x6353('0x38')](_0xb676e6['where'],{'$or':_[_0x6353('0x2a')](_0xb676e6[_0x6353('0x33')],function(_0x255036){var _0x130974={};_0x130974[_0x255036]={'$like':'%'+_0x32d9d2['query'][_0x6353('0x36')]+'%'};return _0x130974;})});}_0xb676e6=_[_0x6353('0x38')]({},_0xb676e6,_0x32d9d2[_0x6353('0x3a')]);return _0x5e172b[_0x6353('0x4b')](_0xb676e6);}})[_0x6353('0x22')](function(_0x1c3ecb){if(_0x1c3ecb){_0x19f901=_0x1c3ecb['length'];if(!_0x32d9d2['query'][_0x6353('0x34')](_0x6353('0x47'))){_0xb676e6[_0x6353('0x1c')]=qs['limit'](_0x32d9d2[_0x6353('0x2f')]['limit']);_0xb676e6[_0x6353('0x1b')]=qs['offset'](_0x32d9d2[_0x6353('0x2f')][_0x6353('0x1b')]);}return _0x5e172b['getSubjects'](_0xb676e6);}})['then'](function(_0x44b4f4){if(_0x44b4f4){return _0x44b4f4?{'count':_0x19f901,'rows':_0x44b4f4}:null;}})[_0x6353('0x22')](respondWithResult(_0x19b6ee,null))[_0x6353('0x3e')](handleError(_0x19b6ee,null));};exports['getDescriptions']=function(_0x3d7aa7,_0x912258,_0x116752){var _0x3c5b6e={};var _0x49120b={};var _0x22205a;var _0x6e5fa8;return db[_0x6353('0x3d')][_0x6353('0x48')]({'where':{'id':_0x3d7aa7[_0x6353('0x3f')]['id']}})['then'](handleEntityNotFound(_0x912258,null))[_0x6353('0x22')](function(_0x24af06){if(_0x24af06){_0x22205a=_0x24af06;_0x49120b[_0x6353('0x2e')]=_[_0x6353('0x40')](db[_0x6353('0x49')]['rawAttributes']);_0x49120b['query']=_['keys'](_0x3d7aa7[_0x6353('0x2f')]);_0x49120b[_0x6353('0x30')]=_[_0x6353('0x31')](_0x49120b[_0x6353('0x2e')],_0x49120b['query']);_0x3c5b6e[_0x6353('0x33')]=_[_0x6353('0x31')](_0x49120b[_0x6353('0x2e')],qs[_0x6353('0x32')](_0x3d7aa7[_0x6353('0x2f')][_0x6353('0x32')]));_0x3c5b6e[_0x6353('0x33')]=_0x3c5b6e[_0x6353('0x33')][_0x6353('0x45')]?_0x3c5b6e[_0x6353('0x33')]:_0x49120b[_0x6353('0x2e')];_0x3c5b6e[_0x6353('0x4a')]=qs['sort'](_0x3d7aa7['query'][_0x6353('0x35')]);_0x3c5b6e[_0x6353('0x37')]=qs[_0x6353('0x30')](_[_0x6353('0x46')](_0x3d7aa7[_0x6353('0x2f')],_0x49120b['filters']));if(_0x3d7aa7[_0x6353('0x2f')][_0x6353('0x36')]){_0x3c5b6e['where']=_[_0x6353('0x38')](_0x3c5b6e[_0x6353('0x37')],{'$or':_[_0x6353('0x2a')](_0x3c5b6e[_0x6353('0x33')],function(_0x8ee00d){var _0x2b75a4={};_0x2b75a4[_0x8ee00d]={'$like':'%'+_0x3d7aa7[_0x6353('0x2f')]['filter']+'%'};return _0x2b75a4;})});}_0x3c5b6e=_[_0x6353('0x38')]({},_0x3c5b6e,_0x3d7aa7[_0x6353('0x3a')]);return _0x22205a[_0x6353('0x4c')](_0x3c5b6e);}})[_0x6353('0x22')](function(_0x54e163){if(_0x54e163){_0x6e5fa8=_0x54e163[_0x6353('0x45')];if(!_0x3d7aa7[_0x6353('0x2f')][_0x6353('0x34')](_0x6353('0x47'))){_0x3c5b6e[_0x6353('0x1c')]=qs[_0x6353('0x1c')](_0x3d7aa7['query'][_0x6353('0x1c')]);_0x3c5b6e[_0x6353('0x1b')]=qs[_0x6353('0x1b')](_0x3d7aa7[_0x6353('0x2f')][_0x6353('0x1b')]);}return _0x22205a['getDescriptions'](_0x3c5b6e);}})[_0x6353('0x22')](function(_0x571ff7){if(_0x571ff7){return _0x571ff7?{'count':_0x6e5fa8,'rows':_0x571ff7}:null;}})['then'](respondWithResult(_0x912258,null))['catch'](handleError(_0x912258,null));};
\ No newline at end of file
index f4e860e..2a44f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf109=['Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define'];(function(_0x1c0809,_0x245d9e){var _0x514810=function(_0x450ec2){while(--_0x450ec2){_0x1c0809['push'](_0x1c0809['shift']());}};_0x514810(++_0x245d9e);}(_0xf109,0xce));var _0x9f10=function(_0x36ed3c,_0x44a00a){_0x36ed3c=_0x36ed3c-0x0;var _0x52a2e0=_0xf109[_0x36ed3c];return _0x52a2e0;};'use strict';var _=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f10('0x3'));var fs=require('fs');var path=require(_0x9f10('0x4'));var rimraf=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var attributes=require(_0x9f10('0x7'));module[_0x9f10('0x8')]=function(_0x408fe8,_0xd3137b){return _0x408fe8[_0x9f10('0x9')](_0x9f10('0xa'),attributes,{'tableName':_0x9f10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d0e=['define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDynamics365Configuration.attributes'];(function(_0x581c4b,_0x3fcc7e){var _0x279120=function(_0x4e5213){while(--_0x4e5213){_0x581c4b['push'](_0x581c4b['shift']());}};_0x279120(++_0x3fcc7e);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x129bcb,_0x37f3f6){_0x129bcb=_0x129bcb-0x0;var _0x2561fc=_0x8d0e[_0x129bcb];return _0x2561fc;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var logger=require(_0xe8d0('0x2'))(_0xe8d0('0x3'));var moment=require(_0xe8d0('0x4'));var BPromise=require(_0xe8d0('0x5'));var rp=require(_0xe8d0('0x6'));var fs=require('fs');var path=require(_0xe8d0('0x7'));var rimraf=require(_0xe8d0('0x8'));var config=require('../../config/environment');var attributes=require(_0xe8d0('0x9'));module['exports']=function(_0x560dab,_0x2e2985){return _0x560dab[_0xe8d0('0xa')](_0xe8d0('0xb'),attributes,{'tableName':_0xe8d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6eee16d..aa47b34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57b0=['info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','client','http','then'];(function(_0x447e64,_0x1844ff){var _0x276fd6=function(_0xa7789b){while(--_0xa7789b){_0x447e64['push'](_0x447e64['shift']());}};_0x276fd6(++_0x1844ff);}(_0x57b0,0x139));var _0x057b=function(_0x4f244d,_0x439c0b){_0x4f244d=_0x4f244d-0x0;var _0x1e15c7=_0x57b0[_0x4f244d];return _0x1e15c7;};'use strict';var _=require(_0x057b('0x0'));var util=require(_0x057b('0x1'));var moment=require(_0x057b('0x2'));var BPromise=require(_0x057b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x057b('0x4'));var db=require(_0x057b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x057b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x057b('0x7')][_0x057b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x239b10,_0xf62650,_0x1a26d1){return new BPromise(function(_0x251c09,_0x56e807){return client['request'](_0x239b10,_0x1a26d1)[_0x057b('0x9')](function(_0x5ca1cb){logger[_0x057b('0xa')](_0x057b('0xb'),_0xf62650,_0x057b('0xc'));logger[_0x057b('0xd')](_0x057b('0xe'),_0xf62650,_0x057b('0xc'),JSON[_0x057b('0xf')](_0x5ca1cb));if(_0x5ca1cb[_0x057b('0x10')]){if(_0x5ca1cb[_0x057b('0x10')][_0x057b('0x11')]===0x1f4){logger[_0x057b('0x10')]('Dynamics365Configuration,\x20%s,\x20%s',_0xf62650,_0x5ca1cb['error'][_0x057b('0x12')]);return _0x56e807(_0x5ca1cb[_0x057b('0x10')]['message']);}logger['error'](_0x057b('0xb'),_0xf62650,_0x5ca1cb[_0x057b('0x10')][_0x057b('0x12')]);return _0x251c09(_0x5ca1cb[_0x057b('0x10')][_0x057b('0x12')]);}else{logger[_0x057b('0xa')](_0x057b('0xb'),_0xf62650,_0x057b('0xc'));_0x251c09(_0x5ca1cb['result'][_0x057b('0x12')]);}})['catch'](function(_0x5da7a9){logger[_0x057b('0x10')](_0x057b('0xb'),_0xf62650,_0x5da7a9);_0x56e807(_0x5da7a9);});});}
\ No newline at end of file
+var _0x17c8=['request','then','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http'];(function(_0x59e821,_0x86c723){var _0x5333f6=function(_0x5dc2c9){while(--_0x5dc2c9){_0x59e821['push'](_0x59e821['shift']());}};_0x5333f6(++_0x86c723);}(_0x17c8,0xb2));var _0x817c=function(_0x565148,_0x545a06){_0x565148=_0x565148-0x0;var _0x1e9dc6=_0x17c8[_0x565148];return _0x1e9dc6;};'use strict';var _=require(_0x817c('0x0'));var util=require(_0x817c('0x1'));var moment=require(_0x817c('0x2'));var BPromise=require(_0x817c('0x3'));var rs=require(_0x817c('0x4'));var fs=require('fs');var Redis=require(_0x817c('0x5'));var db=require(_0x817c('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x817c('0x7'));var config=require('../../config/environment');var jayson=require(_0x817c('0x8'));var client=jayson[_0x817c('0x9')][_0x817c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x250b13,_0x265c9d,_0xb84046){return new BPromise(function(_0x53b63f,_0x55ccb9){return client[_0x817c('0xb')](_0x250b13,_0xb84046)[_0x817c('0xc')](function(_0x28ec2b){logger['info'](_0x817c('0xd'),_0x265c9d,_0x817c('0xe'));logger[_0x817c('0xf')](_0x817c('0x10'),_0x265c9d,'request\x20sent',JSON[_0x817c('0x11')](_0x28ec2b));if(_0x28ec2b['error']){if(_0x28ec2b[_0x817c('0x12')][_0x817c('0x13')]===0x1f4){logger[_0x817c('0x12')](_0x817c('0xd'),_0x265c9d,_0x28ec2b[_0x817c('0x12')][_0x817c('0x14')]);return _0x55ccb9(_0x28ec2b[_0x817c('0x12')][_0x817c('0x14')]);}logger[_0x817c('0x12')](_0x817c('0xd'),_0x265c9d,_0x28ec2b['error']['message']);return _0x53b63f(_0x28ec2b[_0x817c('0x12')][_0x817c('0x14')]);}else{logger['info'](_0x817c('0xd'),_0x265c9d,_0x817c('0xe'));_0x53b63f(_0x28ec2b['result']['message']);}})['catch'](function(_0x37c13e){logger[_0x817c('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x265c9d,_0x37c13e);_0x55ccb9(_0x37c13e);});});}
\ No newline at end of file
index e8138ca..f9e4215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c40=['connect-timeout','express','fs-extra','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','destroy','exports','multer','path'];(function(_0x135861,_0x3e2b60){var _0x480631=function(_0x3f0d73){while(--_0x3f0d73){_0x135861['push'](_0x135861['shift']());}};_0x480631(++_0x3e2b60);}(_0x2c40,0x10c));var _0x02c4=function(_0x3a6167,_0x2aa09f){_0x3a6167=_0x3a6167-0x0;var _0x31fb82=_0x2c40[_0x3a6167];return _0x31fb82;};'use strict';var multer=require(_0x02c4('0x0'));var util=require('util');var path=require(_0x02c4('0x1'));var timeout=require(_0x02c4('0x2'));var express=require(_0x02c4('0x3'));var router=express['Router']();var fs_extra=require(_0x02c4('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x02c4('0x5'));var controller=require(_0x02c4('0x6'));router[_0x02c4('0x7')]('/',auth[_0x02c4('0x8')](),controller[_0x02c4('0x9')]);router[_0x02c4('0x7')]('/:id',auth[_0x02c4('0x8')](),controller[_0x02c4('0xa')]);router[_0x02c4('0xb')]('/',auth[_0x02c4('0x8')](),controller[_0x02c4('0xc')]);router[_0x02c4('0xd')](_0x02c4('0xe'),auth[_0x02c4('0x8')](),controller[_0x02c4('0xf')]);router['delete']('/:id',auth[_0x02c4('0x8')](),controller[_0x02c4('0x10')]);module[_0x02c4('0x11')]=router;
\ No newline at end of file
+var _0xedc5=['create','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x9b7721,_0x36ef2f){var _0x2c92de=function(_0x27e0b4){while(--_0x27e0b4){_0x9b7721['push'](_0x9b7721['shift']());}};_0x2c92de(++_0x36ef2f);}(_0xedc5,0xcd));var _0x5edc=function(_0x48f038,_0x2bde84){_0x48f038=_0x48f038-0x0;var _0x2edc62=_0xedc5[_0x48f038];return _0x2edc62;};'use strict';var multer=require(_0x5edc('0x0'));var util=require(_0x5edc('0x1'));var path=require(_0x5edc('0x2'));var timeout=require('connect-timeout');var express=require(_0x5edc('0x3'));var router=express[_0x5edc('0x4')]();var fs_extra=require(_0x5edc('0x5'));var auth=require(_0x5edc('0x6'));var interaction=require(_0x5edc('0x7'));var config=require('../../config/environment');var controller=require(_0x5edc('0x8'));router[_0x5edc('0x9')]('/',auth[_0x5edc('0xa')](),controller[_0x5edc('0xb')]);router[_0x5edc('0x9')](_0x5edc('0xc'),auth['isAuthenticated'](),controller[_0x5edc('0xd')]);router[_0x5edc('0xe')]('/',auth[_0x5edc('0xa')](),controller[_0x5edc('0xf')]);router['put'](_0x5edc('0xc'),auth[_0x5edc('0xa')](),controller[_0x5edc('0x10')]);router[_0x5edc('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x5edc('0x12')]);module[_0x5edc('0x13')]=router;
\ No newline at end of file
index 673b823..8cf58bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fd4=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0x808964,_0xd1e769){var _0x63d334=function(_0xc42a29){while(--_0xc42a29){_0x808964['push'](_0x808964['shift']());}};_0x63d334(++_0xd1e769);}(_0x2fd4,0x1cc));var _0x42fd=function(_0x2fda66,_0x2ac9a1){_0x2fda66=_0x2fda66-0x0;var _0xb531a2=_0x2fd4[_0x2fda66];return _0xb531a2;};'use strict';var Sequelize=require(_0x42fd('0x0'));module[_0x42fd('0x1')]={'type':{'type':Sequelize[_0x42fd('0x2')](_0x42fd('0x3'),_0x42fd('0x4'),_0x42fd('0x5'),_0x42fd('0x6'),_0x42fd('0x7')),'defaultValue':_0x42fd('0x3')},'content':{'type':Sequelize[_0x42fd('0x8')]},'key':{'type':Sequelize[_0x42fd('0x8')]},'keyType':{'type':Sequelize['ENUM']('string',_0x42fd('0x4'),_0x42fd('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x42fd('0x8')]},'nameField':{'type':Sequelize[_0x42fd('0x8')]},'customField':{'type':Sequelize[_0x42fd('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x504c=['BOOLEAN','sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3cc977,_0x5a080e){var _0x21f180=function(_0x5da3f9){while(--_0x5da3f9){_0x3cc977['push'](_0x3cc977['shift']());}};_0x21f180(++_0x5a080e);}(_0x504c,0x1c3));var _0xc504=function(_0x2c3a8f,_0x374e56){_0x2c3a8f=_0x2c3a8f-0x0;var _0x189412=_0x504c[_0x2c3a8f];return _0x189412;};'use strict';var Sequelize=require(_0xc504('0x0'));module['exports']={'type':{'type':Sequelize[_0xc504('0x1')](_0xc504('0x2'),_0xc504('0x3'),_0xc504('0x4'),_0xc504('0x5'),_0xc504('0x6')),'defaultValue':_0xc504('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM']('string',_0xc504('0x3'),_0xc504('0x4'))},'keyContent':{'type':Sequelize[_0xc504('0x7')]},'idField':{'type':Sequelize[_0xc504('0x7')]},'nameField':{'type':Sequelize[_0xc504('0x7')]},'customField':{'type':Sequelize[_0xc504('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 28ba29f..0b78476 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa960=['create','update','body','find','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','params','keys','catch'];(function(_0x4e6606,_0xff4195){var _0xf975ae=function(_0x55dc8e){while(--_0x55dc8e){_0x4e6606['push'](_0x4e6606['shift']());}};_0xf975ae(++_0xff4195);}(_0xa960,0x9d));var _0x0a96=function(_0x1aae28,_0x5a4c62){_0x1aae28=_0x1aae28-0x0;var _0x1c8124=_0xa960[_0x1aae28];return _0x1c8124;};'use strict';var emlformat=require(_0x0a96('0x0'));var rimraf=require(_0x0a96('0x1'));var zipdir=require(_0x0a96('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0a96('0x3'));var moment=require(_0x0a96('0x4'));var BPromise=require(_0x0a96('0x5'));var Mustache=require(_0x0a96('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x0a96('0x7'));var ejs=require(_0x0a96('0x8'));var fs=require('fs');var fs_extra=require(_0x0a96('0x9'));var _=require(_0x0a96('0xa'));var squel=require(_0x0a96('0xb'));var crypto=require(_0x0a96('0xc'));var jsforce=require(_0x0a96('0xd'));var deskjs=require(_0x0a96('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a96('0xf'));var Redis=require(_0x0a96('0x10'));var authService=require(_0x0a96('0x11'));var qs=require(_0x0a96('0x12'));var as=require(_0x0a96('0x13'));var hardwareService=require(_0x0a96('0x14'));var logger=require(_0x0a96('0x15'))(_0x0a96('0x16'));var utils=require(_0x0a96('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0a96('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fc85,_0x20369e){_0x20369e=_0x20369e||0xcc;return function(_0x358f47){if(_0x358f47){return _0x17fc85[_0x0a96('0x19')](_0x20369e);}return _0x17fc85[_0x0a96('0x1a')](_0x20369e)[_0x0a96('0x1b')]();};}function respondWithResult(_0x70989a,_0x7b521f){_0x7b521f=_0x7b521f||0xc8;return function(_0x49b036){if(_0x49b036){return _0x70989a['status'](_0x7b521f)[_0x0a96('0x1c')](_0x49b036);}};}function respondWithFilteredResult(_0x268c24,_0x6029fb){return function(_0x119db1){if(_0x119db1){var _0x3ce11e=typeof _0x6029fb[_0x0a96('0x1d')]===_0x0a96('0x1e')&&typeof _0x6029fb[_0x0a96('0x1f')]===_0x0a96('0x1e');var _0x1598e5=_0x119db1[_0x0a96('0x20')];var _0x119344=_0x3ce11e?0x0:_0x6029fb[_0x0a96('0x1d')];var _0x86a4d7=_0x3ce11e?_0x119db1[_0x0a96('0x20')]:_0x6029fb['offset']+_0x6029fb[_0x0a96('0x1f')];var _0x514425;if(_0x86a4d7>=_0x1598e5){_0x86a4d7=_0x1598e5;_0x514425=0xc8;}else{_0x514425=0xce;}_0x268c24[_0x0a96('0x1a')](_0x514425);return _0x268c24[_0x0a96('0x21')](_0x0a96('0x22'),_0x119344+'-'+_0x86a4d7+'/'+_0x1598e5)[_0x0a96('0x1c')](_0x119db1);}return null;};}function patchUpdates(_0x117663){return function(_0x42564b){try{jsonpatch[_0x0a96('0x23')](_0x42564b,_0x117663,!![]);}catch(_0x4d59e4){return BPromise[_0x0a96('0x24')](_0x4d59e4);}return _0x42564b[_0x0a96('0x25')]();};}function saveUpdates(_0x2c6239,_0x37c4bf){return function(_0x2ae1e9){if(_0x2ae1e9){return _0x2ae1e9['update'](_0x2c6239)['then'](function(_0x34d94d){return _0x34d94d;});}return null;};}function removeEntity(_0x5abca5,_0x5644f7){return function(_0x4729d1){if(_0x4729d1){return _0x4729d1['destroy']()[_0x0a96('0x26')](function(){_0x5abca5[_0x0a96('0x1a')](0xcc)[_0x0a96('0x1b')]();});}};}function handleEntityNotFound(_0x458b74,_0x428982){return function(_0x59c80b){if(!_0x59c80b){_0x458b74[_0x0a96('0x19')](0x194);}return _0x59c80b;};}function handleError(_0x4721d8,_0x1d82c0){_0x1d82c0=_0x1d82c0||0x1f4;return function(_0x1de591){logger[_0x0a96('0x27')](_0x1de591[_0x0a96('0x28')]);if(_0x1de591[_0x0a96('0x29')]){delete _0x1de591[_0x0a96('0x29')];}_0x4721d8[_0x0a96('0x1a')](_0x1d82c0)[_0x0a96('0x2a')](_0x1de591);};}exports[_0x0a96('0x2b')]=function(_0x853db7,_0x168853){var _0x4b5e86={},_0x2bc1b9={},_0x3efd7f={'count':0x0,'rows':[]};var _0x2b7a17=_[_0x0a96('0x2c')](db[_0x0a96('0x2d')][_0x0a96('0x2e')],function(_0xff674b){return{'name':_0xff674b['fieldName'],'type':_0xff674b[_0x0a96('0x2f')][_0x0a96('0x30')]};});_0x2bc1b9[_0x0a96('0x31')]=_['map'](_0x2b7a17,_0x0a96('0x29'));_0x2bc1b9['query']=_['keys'](_0x853db7[_0x0a96('0x32')]);_0x2bc1b9[_0x0a96('0x33')]=_[_0x0a96('0x34')](_0x2bc1b9['model'],_0x2bc1b9[_0x0a96('0x32')]);_0x4b5e86[_0x0a96('0x35')]=_[_0x0a96('0x34')](_0x2bc1b9['model'],qs['fields'](_0x853db7[_0x0a96('0x32')][_0x0a96('0x36')]));_0x4b5e86[_0x0a96('0x35')]=_0x4b5e86[_0x0a96('0x35')][_0x0a96('0x37')]?_0x4b5e86['attributes']:_0x2bc1b9['model'];if(!_0x853db7[_0x0a96('0x32')][_0x0a96('0x38')](_0x0a96('0x39'))){_0x4b5e86[_0x0a96('0x1f')]=qs['limit'](_0x853db7[_0x0a96('0x32')][_0x0a96('0x1f')]);_0x4b5e86[_0x0a96('0x1d')]=qs['offset'](_0x853db7['query'][_0x0a96('0x1d')]);}_0x4b5e86[_0x0a96('0x3a')]=qs['sort'](_0x853db7[_0x0a96('0x32')][_0x0a96('0x3b')]);_0x4b5e86[_0x0a96('0x3c')]=qs[_0x0a96('0x33')](_[_0x0a96('0x3d')](_0x853db7['query'],_0x2bc1b9[_0x0a96('0x33')]),_0x2b7a17);if(_0x853db7[_0x0a96('0x32')][_0x0a96('0x3e')]){_0x4b5e86['where']=_['merge'](_0x4b5e86[_0x0a96('0x3c')],{'$or':_[_0x0a96('0x2c')](_0x2b7a17,function(_0x61fd1b){if(_0x61fd1b[_0x0a96('0x2f')]!==_0x0a96('0x3f')){var _0x372604={};_0x372604[_0x61fd1b[_0x0a96('0x29')]]={'$like':'%'+_0x853db7['query'][_0x0a96('0x3e')]+'%'};return _0x372604;}})});}_0x4b5e86=_[_0x0a96('0x40')]({},_0x4b5e86,_0x853db7[_0x0a96('0x41')]);var _0x11da09={'where':_0x4b5e86[_0x0a96('0x3c')]};return db['Dynamics365Field'][_0x0a96('0x20')](_0x11da09)['then'](function(_0x567f6c){_0x3efd7f[_0x0a96('0x20')]=_0x567f6c;if(_0x853db7[_0x0a96('0x32')][_0x0a96('0x42')]){_0x4b5e86[_0x0a96('0x43')]=[{'all':!![]}];}return db['Dynamics365Field']['findAll'](_0x4b5e86);})[_0x0a96('0x26')](function(_0x17de8d){_0x3efd7f['rows']=_0x17de8d;return _0x3efd7f;})[_0x0a96('0x26')](respondWithFilteredResult(_0x168853,_0x4b5e86))['catch'](handleError(_0x168853,null));};exports['show']=function(_0x471a91,_0x36401c){var _0x218563={'raw':!![],'where':{'id':_0x471a91[_0x0a96('0x44')]['id']}},_0x146be5={};_0x146be5[_0x0a96('0x31')]=_[_0x0a96('0x45')](db['Dynamics365Field'][_0x0a96('0x2e')]);_0x146be5[_0x0a96('0x32')]=_['keys'](_0x471a91[_0x0a96('0x32')]);_0x146be5[_0x0a96('0x33')]=_['intersection'](_0x146be5[_0x0a96('0x31')],_0x146be5['query']);_0x218563[_0x0a96('0x35')]=_[_0x0a96('0x34')](_0x146be5[_0x0a96('0x31')],qs[_0x0a96('0x36')](_0x471a91[_0x0a96('0x32')][_0x0a96('0x36')]));_0x218563[_0x0a96('0x35')]=_0x218563['attributes']['length']?_0x218563[_0x0a96('0x35')]:_0x146be5[_0x0a96('0x31')];if(_0x471a91[_0x0a96('0x32')][_0x0a96('0x42')]){_0x218563[_0x0a96('0x43')]=[{'all':!![]}];}_0x218563=_[_0x0a96('0x40')]({},_0x218563,_0x471a91['options']);return db['Dynamics365Field']['find'](_0x218563)[_0x0a96('0x26')](handleEntityNotFound(_0x36401c,null))[_0x0a96('0x26')](respondWithResult(_0x36401c,null))[_0x0a96('0x46')](handleError(_0x36401c,null));};exports[_0x0a96('0x47')]=function(_0x2ee0ec,_0x359dee){return db[_0x0a96('0x2d')]['create'](_0x2ee0ec['body'],{})[_0x0a96('0x26')](respondWithResult(_0x359dee,0xc9))[_0x0a96('0x46')](handleError(_0x359dee,null));};exports[_0x0a96('0x48')]=function(_0x5ebb86,_0x5d7b50){if(_0x5ebb86['body']['id']){delete _0x5ebb86[_0x0a96('0x49')]['id'];}return db[_0x0a96('0x2d')][_0x0a96('0x4a')]({'where':{'id':_0x5ebb86['params']['id']}})[_0x0a96('0x26')](handleEntityNotFound(_0x5d7b50,null))[_0x0a96('0x26')](saveUpdates(_0x5ebb86[_0x0a96('0x49')],null))[_0x0a96('0x26')](respondWithResult(_0x5d7b50,null))[_0x0a96('0x46')](handleError(_0x5d7b50,null));};exports[_0x0a96('0x4b')]=function(_0xfe9071,_0x6edd2e){return db[_0x0a96('0x2d')][_0x0a96('0x4a')]({'where':{'id':_0xfe9071['params']['id']}})[_0x0a96('0x26')](handleEntityNotFound(_0x6edd2e,null))[_0x0a96('0x26')](removeEntity(_0x6edd2e,null))[_0x0a96('0x46')](handleError(_0x6edd2e,null));};
\ No newline at end of file
+var _0x7d39=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','Dynamics365Field','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','ioredis','../../components/auth/service'];(function(_0x59c75a,_0x3c20fa){var _0x30c534=function(_0x5e8a84){while(--_0x5e8a84){_0x59c75a['push'](_0x59c75a['shift']());}};_0x30c534(++_0x3c20fa);}(_0x7d39,0x1bd));var _0x97d3=function(_0x39b9f3,_0x146d41){_0x39b9f3=_0x39b9f3-0x0;var _0x514b80=_0x7d39[_0x39b9f3];return _0x514b80;};'use strict';var emlformat=require(_0x97d3('0x0'));var rimraf=require(_0x97d3('0x1'));var zipdir=require(_0x97d3('0x2'));var jsonpatch=require(_0x97d3('0x3'));var rp=require(_0x97d3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x97d3('0x5'));var util=require(_0x97d3('0x6'));var path=require(_0x97d3('0x7'));var sox=require(_0x97d3('0x8'));var csv=require(_0x97d3('0x9'));var ejs=require(_0x97d3('0xa'));var fs=require('fs');var fs_extra=require(_0x97d3('0xb'));var _=require('lodash');var squel=require(_0x97d3('0xc'));var crypto=require(_0x97d3('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x97d3('0x9'));var querystring=require(_0x97d3('0xe'));var Papa=require('papaparse');var Redis=require(_0x97d3('0xf'));var authService=require(_0x97d3('0x10'));var qs=require(_0x97d3('0x11'));var as=require(_0x97d3('0x12'));var hardwareService=require(_0x97d3('0x13'));var logger=require(_0x97d3('0x14'))(_0x97d3('0x15'));var utils=require(_0x97d3('0x16'));var config=require(_0x97d3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x97d3('0x18'))['db'];function respondWithStatusCode(_0x40ecad,_0x124a49){_0x124a49=_0x124a49||0xcc;return function(_0x4f5632){if(_0x4f5632){return _0x40ecad[_0x97d3('0x19')](_0x124a49);}return _0x40ecad[_0x97d3('0x1a')](_0x124a49)[_0x97d3('0x1b')]();};}function respondWithResult(_0x12b8c1,_0x33ba0a){_0x33ba0a=_0x33ba0a||0xc8;return function(_0xb010c2){if(_0xb010c2){return _0x12b8c1[_0x97d3('0x1a')](_0x33ba0a)[_0x97d3('0x1c')](_0xb010c2);}};}function respondWithFilteredResult(_0x327433,_0x58f60a){return function(_0x1246ab){if(_0x1246ab){var _0x3391c9=typeof _0x58f60a[_0x97d3('0x1d')]===_0x97d3('0x1e')&&typeof _0x58f60a[_0x97d3('0x1f')]===_0x97d3('0x1e');var _0x23b53c=_0x1246ab['count'];var _0x1f5069=_0x3391c9?0x0:_0x58f60a['offset'];var _0x4a6c66=_0x3391c9?_0x1246ab['count']:_0x58f60a[_0x97d3('0x1d')]+_0x58f60a[_0x97d3('0x1f')];var _0x3228bb;if(_0x4a6c66>=_0x23b53c){_0x4a6c66=_0x23b53c;_0x3228bb=0xc8;}else{_0x3228bb=0xce;}_0x327433[_0x97d3('0x1a')](_0x3228bb);return _0x327433[_0x97d3('0x20')](_0x97d3('0x21'),_0x1f5069+'-'+_0x4a6c66+'/'+_0x23b53c)[_0x97d3('0x1c')](_0x1246ab);}return null;};}function patchUpdates(_0x513111){return function(_0x1433de){try{jsonpatch['apply'](_0x1433de,_0x513111,!![]);}catch(_0x26d2cf){return BPromise[_0x97d3('0x22')](_0x26d2cf);}return _0x1433de[_0x97d3('0x23')]();};}function saveUpdates(_0x186287,_0xef9562){return function(_0x5dbadd){if(_0x5dbadd){return _0x5dbadd[_0x97d3('0x24')](_0x186287)['then'](function(_0x174dd5){return _0x174dd5;});}return null;};}function removeEntity(_0x2413d5,_0x735728){return function(_0x1af9db){if(_0x1af9db){return _0x1af9db[_0x97d3('0x25')]()[_0x97d3('0x26')](function(){_0x2413d5[_0x97d3('0x1a')](0xcc)[_0x97d3('0x1b')]();});}};}function handleEntityNotFound(_0x5779ec,_0x21534b){return function(_0x52af76){if(!_0x52af76){_0x5779ec['sendStatus'](0x194);}return _0x52af76;};}function handleError(_0x55cc24,_0x57382a){_0x57382a=_0x57382a||0x1f4;return function(_0x314070){logger[_0x97d3('0x27')](_0x314070[_0x97d3('0x28')]);if(_0x314070['name']){delete _0x314070[_0x97d3('0x29')];}_0x55cc24[_0x97d3('0x1a')](_0x57382a)[_0x97d3('0x2a')](_0x314070);};}exports[_0x97d3('0x2b')]=function(_0x416157,_0x19711a){var _0x448e90={},_0x2e5d8f={},_0x344fa2={'count':0x0,'rows':[]};var _0x37af92=_[_0x97d3('0x2c')](db[_0x97d3('0x2d')]['rawAttributes'],function(_0x53e337){return{'name':_0x53e337[_0x97d3('0x2e')],'type':_0x53e337[_0x97d3('0x2f')][_0x97d3('0x30')]};});_0x2e5d8f['model']=_[_0x97d3('0x2c')](_0x37af92,_0x97d3('0x29'));_0x2e5d8f[_0x97d3('0x31')]=_[_0x97d3('0x32')](_0x416157[_0x97d3('0x31')]);_0x2e5d8f[_0x97d3('0x33')]=_[_0x97d3('0x34')](_0x2e5d8f[_0x97d3('0x35')],_0x2e5d8f[_0x97d3('0x31')]);_0x448e90['attributes']=_[_0x97d3('0x34')](_0x2e5d8f[_0x97d3('0x35')],qs[_0x97d3('0x36')](_0x416157[_0x97d3('0x31')][_0x97d3('0x36')]));_0x448e90[_0x97d3('0x37')]=_0x448e90['attributes'][_0x97d3('0x38')]?_0x448e90['attributes']:_0x2e5d8f['model'];if(!_0x416157[_0x97d3('0x31')][_0x97d3('0x39')]('nolimit')){_0x448e90['limit']=qs[_0x97d3('0x1f')](_0x416157['query'][_0x97d3('0x1f')]);_0x448e90[_0x97d3('0x1d')]=qs['offset'](_0x416157[_0x97d3('0x31')][_0x97d3('0x1d')]);}_0x448e90[_0x97d3('0x3a')]=qs[_0x97d3('0x3b')](_0x416157[_0x97d3('0x31')][_0x97d3('0x3b')]);_0x448e90[_0x97d3('0x3c')]=qs[_0x97d3('0x33')](_[_0x97d3('0x3d')](_0x416157[_0x97d3('0x31')],_0x2e5d8f[_0x97d3('0x33')]),_0x37af92);if(_0x416157[_0x97d3('0x31')][_0x97d3('0x3e')]){_0x448e90[_0x97d3('0x3c')]=_[_0x97d3('0x3f')](_0x448e90[_0x97d3('0x3c')],{'$or':_['map'](_0x37af92,function(_0x28b506){if(_0x28b506[_0x97d3('0x2f')]!==_0x97d3('0x40')){var _0x1fe4f8={};_0x1fe4f8[_0x28b506[_0x97d3('0x29')]]={'$like':'%'+_0x416157[_0x97d3('0x31')][_0x97d3('0x3e')]+'%'};return _0x1fe4f8;}})});}_0x448e90=_[_0x97d3('0x3f')]({},_0x448e90,_0x416157['options']);var _0x3e5e3d={'where':_0x448e90[_0x97d3('0x3c')]};return db[_0x97d3('0x2d')][_0x97d3('0x41')](_0x3e5e3d)[_0x97d3('0x26')](function(_0x5a0312){_0x344fa2[_0x97d3('0x41')]=_0x5a0312;if(_0x416157['query'][_0x97d3('0x42')]){_0x448e90['include']=[{'all':!![]}];}return db[_0x97d3('0x2d')][_0x97d3('0x43')](_0x448e90);})[_0x97d3('0x26')](function(_0xbd0d4c){_0x344fa2[_0x97d3('0x44')]=_0xbd0d4c;return _0x344fa2;})['then'](respondWithFilteredResult(_0x19711a,_0x448e90))[_0x97d3('0x45')](handleError(_0x19711a,null));};exports[_0x97d3('0x46')]=function(_0x5c8b2c,_0x5ed3f1){var _0x36eb2a={'raw':!![],'where':{'id':_0x5c8b2c[_0x97d3('0x47')]['id']}},_0x1e56d2={};_0x1e56d2[_0x97d3('0x35')]=_['keys'](db[_0x97d3('0x2d')][_0x97d3('0x48')]);_0x1e56d2['query']=_['keys'](_0x5c8b2c[_0x97d3('0x31')]);_0x1e56d2['filters']=_[_0x97d3('0x34')](_0x1e56d2[_0x97d3('0x35')],_0x1e56d2[_0x97d3('0x31')]);_0x36eb2a[_0x97d3('0x37')]=_[_0x97d3('0x34')](_0x1e56d2[_0x97d3('0x35')],qs['fields'](_0x5c8b2c[_0x97d3('0x31')][_0x97d3('0x36')]));_0x36eb2a[_0x97d3('0x37')]=_0x36eb2a['attributes'][_0x97d3('0x38')]?_0x36eb2a[_0x97d3('0x37')]:_0x1e56d2['model'];if(_0x5c8b2c[_0x97d3('0x31')][_0x97d3('0x42')]){_0x36eb2a[_0x97d3('0x49')]=[{'all':!![]}];}_0x36eb2a=_[_0x97d3('0x3f')]({},_0x36eb2a,_0x5c8b2c['options']);return db['Dynamics365Field'][_0x97d3('0x4a')](_0x36eb2a)[_0x97d3('0x26')](handleEntityNotFound(_0x5ed3f1,null))[_0x97d3('0x26')](respondWithResult(_0x5ed3f1,null))[_0x97d3('0x45')](handleError(_0x5ed3f1,null));};exports[_0x97d3('0x4b')]=function(_0x54576d,_0x18f575){return db[_0x97d3('0x2d')][_0x97d3('0x4b')](_0x54576d['body'],{})[_0x97d3('0x26')](respondWithResult(_0x18f575,0xc9))[_0x97d3('0x45')](handleError(_0x18f575,null));};exports['update']=function(_0x58d1a4,_0x555d29){if(_0x58d1a4[_0x97d3('0x4c')]['id']){delete _0x58d1a4['body']['id'];}return db[_0x97d3('0x2d')][_0x97d3('0x4a')]({'where':{'id':_0x58d1a4[_0x97d3('0x47')]['id']}})['then'](handleEntityNotFound(_0x555d29,null))[_0x97d3('0x26')](saveUpdates(_0x58d1a4['body'],null))[_0x97d3('0x26')](respondWithResult(_0x555d29,null))['catch'](handleError(_0x555d29,null));};exports[_0x97d3('0x25')]=function(_0x36789c,_0x1bcbb1){return db[_0x97d3('0x2d')][_0x97d3('0x4a')]({'where':{'id':_0x36789c[_0x97d3('0x47')]['id']}})[_0x97d3('0x26')](handleEntityNotFound(_0x1bcbb1,null))[_0x97d3('0x26')](removeEntity(_0x1bcbb1,null))[_0x97d3('0x45')](handleError(_0x1bcbb1,null));};
\ No newline at end of file
index 9ec6a14..6430bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xede0=['define','Dynamics365Field','int_dynamics365_fields','idField','FieldId','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports'];(function(_0x30a69e,_0x4af5b2){var _0x4fc54b=function(_0x5f02ac){while(--_0x5f02ac){_0x30a69e['push'](_0x30a69e['shift']());}};_0x4fc54b(++_0x4af5b2);}(_0xede0,0x9f));var _0x0ede=function(_0xb5a502,_0x630625){_0xb5a502=_0xb5a502-0x0;var _0x1d001b=_0xede0[_0xb5a502];return _0x1d001b;};'use strict';var _=require(_0x0ede('0x0'));var util=require('util');var logger=require(_0x0ede('0x1'))(_0x0ede('0x2'));var moment=require('moment');var BPromise=require(_0x0ede('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0ede('0x4'));var rimraf=require(_0x0ede('0x5'));var config=require(_0x0ede('0x6'));var attributes=require(_0x0ede('0x7'));module[_0x0ede('0x8')]=function(_0xbac826,_0x2258ca){return _0xbac826[_0x0ede('0x9')](_0x0ede('0xa'),attributes,{'tableName':_0x0ede('0xb'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x0ede('0xc'),_0x0ede('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f66=['rimraf','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','FieldId','util','../../config/logger','moment','request-promise'];(function(_0x300439,_0x54f2dc){var _0x4de382=function(_0x165ec9){while(--_0x165ec9){_0x300439['push'](_0x300439['shift']());}};_0x4de382(++_0x54f2dc);}(_0x9f66,0x17c));var _0x69f6=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0x9f66[_0x52085a];return _0x5afc1a;};'use strict';var _=require('lodash');var util=require(_0x69f6('0x0'));var logger=require(_0x69f6('0x1'))('api');var moment=require(_0x69f6('0x2'));var BPromise=require('bluebird');var rp=require(_0x69f6('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x69f6('0x4'));var config=require('../../config/environment');var attributes=require(_0x69f6('0x5'));module[_0x69f6('0x6')]=function(_0x71728d,_0x29bcc2){return _0x71728d[_0x69f6('0x7')](_0x69f6('0x8'),attributes,{'tableName':_0x69f6('0x9'),'paranoid':![],'indexes':[{'name':_0x69f6('0xa'),'fields':['idField',_0x69f6('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 4988e24..60b4587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8737=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','util'];(function(_0x4817f9,_0x4070d1){var _0x2dcfa6=function(_0x408973){while(--_0x408973){_0x4817f9['push'](_0x4817f9['shift']());}};_0x2dcfa6(++_0x4070d1);}(_0x8737,0xce));var _0x7873=function(_0x2fd342,_0x378154){_0x2fd342=_0x2fd342-0x0;var _0x332121=_0x8737[_0x2fd342];return _0x332121;};'use strict';var _=require('lodash');var util=require(_0x7873('0x0'));var moment=require(_0x7873('0x1'));var BPromise=require(_0x7873('0x2'));var rs=require(_0x7873('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7873('0x4'))['db'];var utils=require(_0x7873('0x5'));var logger=require(_0x7873('0x6'))(_0x7873('0x7'));var config=require(_0x7873('0x8'));var jayson=require(_0x7873('0x9'));var client=jayson[_0x7873('0xa')][_0x7873('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x457740,_0x569185,_0x44f2b5){return new BPromise(function(_0x589653,_0x2b143c){return client[_0x7873('0xc')](_0x457740,_0x44f2b5)[_0x7873('0xd')](function(_0x2130ae){logger[_0x7873('0xe')](_0x7873('0xf'),_0x569185,'request\x20sent');logger[_0x7873('0x10')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x569185,_0x7873('0x11'),JSON['stringify'](_0x2130ae));if(_0x2130ae[_0x7873('0x12')]){if(_0x2130ae[_0x7873('0x12')][_0x7873('0x13')]===0x1f4){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x569185,_0x2130ae['error'][_0x7873('0x14')]);return _0x2b143c(_0x2130ae[_0x7873('0x12')][_0x7873('0x14')]);}logger['error'](_0x7873('0xf'),_0x569185,_0x2130ae[_0x7873('0x12')]['message']);return _0x589653(_0x2130ae[_0x7873('0x12')][_0x7873('0x14')]);}else{logger['info'](_0x7873('0xf'),_0x569185,'request\x20sent');_0x589653(_0x2130ae[_0x7873('0x15')][_0x7873('0x14')]);}})[_0x7873('0x16')](function(_0x231359){logger[_0x7873('0x12')](_0x7873('0xf'),_0x569185,_0x231359);_0x2b143c(_0x231359);});});}
\ No newline at end of file
+var _0x037d=['http','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client'];(function(_0x56a061,_0x53fb1b){var _0x105fa0=function(_0x164d08){while(--_0x164d08){_0x56a061['push'](_0x56a061['shift']());}};_0x105fa0(++_0x53fb1b);}(_0x037d,0xff));var _0xd037=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x037d[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0xd037('0x0'));var util=require(_0xd037('0x1'));var moment=require(_0xd037('0x2'));var BPromise=require(_0xd037('0x3'));var rs=require(_0xd037('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd037('0x5'))['db'];var utils=require(_0xd037('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xd037('0x7'));var client=jayson[_0xd037('0x8')][_0xd037('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25e897,_0x450b98,_0x229557){return new BPromise(function(_0x4466be,_0x1ad8c8){return client['request'](_0x25e897,_0x229557)[_0xd037('0xa')](function(_0x4d341e){logger[_0xd037('0xb')](_0xd037('0xc'),_0x450b98,_0xd037('0xd'));logger[_0xd037('0xe')](_0xd037('0xf'),_0x450b98,_0xd037('0xd'),JSON[_0xd037('0x10')](_0x4d341e));if(_0x4d341e['error']){if(_0x4d341e['error'][_0xd037('0x11')]===0x1f4){logger[_0xd037('0x12')](_0xd037('0xc'),_0x450b98,_0x4d341e[_0xd037('0x12')][_0xd037('0x13')]);return _0x1ad8c8(_0x4d341e[_0xd037('0x12')][_0xd037('0x13')]);}logger[_0xd037('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x450b98,_0x4d341e['error'][_0xd037('0x13')]);return _0x4466be(_0x4d341e['error'][_0xd037('0x13')]);}else{logger[_0xd037('0xb')](_0xd037('0xc'),_0x450b98,_0xd037('0xd'));_0x4466be(_0x4d341e[_0xd037('0x14')][_0xd037('0x13')]);}})[_0xd037('0x15')](function(_0x20e664){logger[_0xd037('0x12')](_0xd037('0xc'),_0x450b98,_0x20e664);_0x1ad8c8(_0x20e664);});});}
\ No newline at end of file
index 0e32cdf..84825c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de5=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util'];(function(_0x4dc431,_0x560ee5){var _0x29abb9=function(_0x390d23){while(--_0x390d23){_0x4dc431['push'](_0x4dc431['shift']());}};_0x29abb9(++_0x560ee5);}(_0x3de5,0x76));var _0x53de=function(_0x4006bf,_0x45d0f){_0x4006bf=_0x4006bf-0x0;var _0x3bb327=_0x3de5[_0x4006bf];return _0x3bb327;};'use strict';var multer=require(_0x53de('0x0'));var util=require(_0x53de('0x1'));var path=require(_0x53de('0x2'));var timeout=require(_0x53de('0x3'));var express=require('express');var router=express[_0x53de('0x4')]();var fs_extra=require(_0x53de('0x5'));var auth=require(_0x53de('0x6'));var interaction=require(_0x53de('0x7'));var config=require(_0x53de('0x8'));var controller=require('./intFreshdeskAccount.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x53de('0x9')]);router[_0x53de('0xa')](_0x53de('0xb'),auth[_0x53de('0xc')](),controller['show']);router[_0x53de('0xa')](_0x53de('0xd'),auth[_0x53de('0xc')](),controller[_0x53de('0xe')]);router[_0x53de('0xa')]('/:id/fields',auth[_0x53de('0xc')](),controller[_0x53de('0xf')]);router[_0x53de('0x10')]('/',auth[_0x53de('0xc')](),controller[_0x53de('0x11')]);router['post'](_0x53de('0xd'),auth[_0x53de('0xc')](),controller[_0x53de('0x12')]);router[_0x53de('0x13')]('/:id',auth[_0x53de('0xc')](),controller[_0x53de('0x14')]);router[_0x53de('0x15')](_0x53de('0xb'),auth[_0x53de('0xc')](),controller[_0x53de('0x16')]);module[_0x53de('0x17')]=router;
\ No newline at end of file
+var _0x8a43=['create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post'];(function(_0x4057f0,_0x3abddf){var _0xbe831e=function(_0x449de2){while(--_0x449de2){_0x4057f0['push'](_0x4057f0['shift']());}};_0xbe831e(++_0x3abddf);}(_0x8a43,0x163));var _0x38a4=function(_0x180b22,_0x459411){_0x180b22=_0x180b22-0x0;var _0x534f0e=_0x8a43[_0x180b22];return _0x534f0e;};'use strict';var multer=require(_0x38a4('0x0'));var util=require(_0x38a4('0x1'));var path=require(_0x38a4('0x2'));var timeout=require('connect-timeout');var express=require(_0x38a4('0x3'));var router=express[_0x38a4('0x4')]();var fs_extra=require(_0x38a4('0x5'));var auth=require(_0x38a4('0x6'));var interaction=require(_0x38a4('0x7'));var config=require(_0x38a4('0x8'));var controller=require(_0x38a4('0x9'));router[_0x38a4('0xa')]('/',auth[_0x38a4('0xb')](),controller[_0x38a4('0xc')]);router['get'](_0x38a4('0xd'),auth[_0x38a4('0xb')](),controller[_0x38a4('0xe')]);router[_0x38a4('0xa')](_0x38a4('0xf'),auth[_0x38a4('0xb')](),controller[_0x38a4('0x10')]);router[_0x38a4('0xa')](_0x38a4('0x11'),auth[_0x38a4('0xb')](),controller[_0x38a4('0x12')]);router[_0x38a4('0x13')]('/',auth[_0x38a4('0xb')](),controller[_0x38a4('0x14')]);router['post']('/:id/configurations',auth[_0x38a4('0xb')](),controller['addConfiguration']);router[_0x38a4('0x15')](_0x38a4('0xd'),auth[_0x38a4('0xb')](),controller[_0x38a4('0x16')]);router[_0x38a4('0x17')](_0x38a4('0xd'),auth[_0x38a4('0xb')](),controller[_0x38a4('0x18')]);module['exports']=router;
\ No newline at end of file
index 36da24d..f756f6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['exports','STRING','username','remoteUri'];(function(_0x5bbd81,_0x5796eb){var _0x29eda0=function(_0x41b210){while(--_0x41b210){_0x5bbd81['push'](_0x5bbd81['shift']());}};_0x29eda0(++_0x5796eb);}(_0x33af,0xec));var _0xf33a=function(_0x5397f4,_0x3f2c05){_0x5397f4=_0x5397f4-0x0;var _0x4cba07=_0x33af[_0x5397f4];return _0x4cba07;};'use strict';var Sequelize=require('sequelize');module[_0xf33a('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf33a('0x1')]},'username':{'type':Sequelize[_0xf33a('0x1')],'unique':_0xf33a('0x2')},'apiKey':{'type':Sequelize[_0xf33a('0x1')]},'remoteUri':{'type':Sequelize[_0xf33a('0x1')],'unique':_0xf33a('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xf4f4=['exports','STRING','username','sequelize'];(function(_0x539fb2,_0x5b6718){var _0x4d583d=function(_0x55fa69){while(--_0x55fa69){_0x539fb2['push'](_0x539fb2['shift']());}};_0x4d583d(++_0x5b6718);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x2c8e26,_0x18fa83){_0x2c8e26=_0x2c8e26-0x0;var _0x329282=_0xf4f4[_0x2c8e26];return _0x329282;};'use strict';var Sequelize=require(_0x4f4f('0x0'));module[_0x4f4f('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4f4f('0x2')]},'username':{'type':Sequelize[_0x4f4f('0x2')],'unique':_0x4f4f('0x3')},'apiKey':{'type':Sequelize[_0x4f4f('0x2')]},'remoteUri':{'type':Sequelize[_0x4f4f('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x4f4f('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0cc1a59..f78c5bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eec=['substring','lastIndexOf','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','subject','agent','description','priority','group','ticket_type','company','remove','includes','default','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','send','index','map','FreshdeskAccount','rawAttributes','type','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','findAll','rows','catch','params','length','include','find','create','body','filter','getConfigurations','addConfiguration','findOne','Subjects','getSubjects','channel','getDescriptions','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','slice'];(function(_0x2c4a85,_0x58a6a7){var _0x261607=function(_0xf2ad92){while(--_0xf2ad92){_0x2c4a85['push'](_0x2c4a85['shift']());}};_0x261607(++_0x58a6a7);}(_0x3eec,0x1e9));var _0xc3ee=function(_0x4a8e0f,_0x579baa){_0x4a8e0f=_0x4a8e0f-0x0;var _0x57800c=_0x3eec[_0x4a8e0f];return _0x57800c;};'use strict';var emlformat=require(_0xc3ee('0x0'));var rimraf=require(_0xc3ee('0x1'));var zipdir=require(_0xc3ee('0x2'));var jsonpatch=require(_0xc3ee('0x3'));var rp=require('request-promise');var moment=require(_0xc3ee('0x4'));var BPromise=require(_0xc3ee('0x5'));var Mustache=require(_0xc3ee('0x6'));var util=require(_0xc3ee('0x7'));var path=require(_0xc3ee('0x8'));var sox=require(_0xc3ee('0x9'));var csv=require('to-csv');var ejs=require(_0xc3ee('0xa'));var fs=require('fs');var fs_extra=require(_0xc3ee('0xb'));var _=require(_0xc3ee('0xc'));var squel=require(_0xc3ee('0xd'));var crypto=require(_0xc3ee('0xe'));var jsforce=require(_0xc3ee('0xf'));var deskjs=require(_0xc3ee('0x10'));var toCsv=require(_0xc3ee('0x11'));var querystring=require(_0xc3ee('0x12'));var Papa=require(_0xc3ee('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc3ee('0x14'));var as=require(_0xc3ee('0x15'));var hardwareService=require(_0xc3ee('0x16'));var logger=require(_0xc3ee('0x17'))('api');var utils=require(_0xc3ee('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc3ee('0x19'));var db=require(_0xc3ee('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5f2c3a,_0x2eb82e){_0x2eb82e=_0x2eb82e||0xcc;return function(_0x5a02e0){if(_0x5a02e0){return _0x5f2c3a[_0xc3ee('0x1b')](_0x2eb82e);}return _0x5f2c3a['status'](_0x2eb82e)[_0xc3ee('0x1c')]();};}function respondWithResult(_0x58ebe7,_0x3d669d){_0x3d669d=_0x3d669d||0xc8;return function(_0x2e411c){if(_0x2e411c){return _0x58ebe7[_0xc3ee('0x1d')](_0x3d669d)[_0xc3ee('0x1e')](_0x2e411c);}};}function respondWithFilteredResult(_0x476f8f,_0xf63359){return function(_0x277e11){if(_0x277e11){var _0x4e1c51=typeof _0xf63359[_0xc3ee('0x1f')]==='undefined'&&typeof _0xf63359[_0xc3ee('0x20')]===_0xc3ee('0x21');var _0x3fa981=_0x277e11[_0xc3ee('0x22')];var _0x304889=_0x4e1c51?0x0:_0xf63359[_0xc3ee('0x1f')];var _0xd4b414=_0x4e1c51?_0x277e11[_0xc3ee('0x22')]:_0xf63359[_0xc3ee('0x1f')]+_0xf63359[_0xc3ee('0x20')];var _0x2ce864;if(_0xd4b414>=_0x3fa981){_0xd4b414=_0x3fa981;_0x2ce864=0xc8;}else{_0x2ce864=0xce;}_0x476f8f[_0xc3ee('0x1d')](_0x2ce864);return _0x476f8f[_0xc3ee('0x23')](_0xc3ee('0x24'),_0x304889+'-'+_0xd4b414+'/'+_0x3fa981)[_0xc3ee('0x1e')](_0x277e11);}return null;};}function patchUpdates(_0x46a8c9){return function(_0xcd8c18){try{jsonpatch[_0xc3ee('0x25')](_0xcd8c18,_0x46a8c9,!![]);}catch(_0x327c45){return BPromise[_0xc3ee('0x26')](_0x327c45);}return _0xcd8c18[_0xc3ee('0x27')]();};}function saveUpdates(_0x493fea,_0x4d672e){return function(_0x14b5cf){if(_0x14b5cf){return _0x14b5cf[_0xc3ee('0x28')](_0x493fea)[_0xc3ee('0x29')](function(_0x464ffc){return _0x464ffc;});}return null;};}function removeEntity(_0x28bfeb,_0x238df7){return function(_0x57ab05){if(_0x57ab05){return _0x57ab05[_0xc3ee('0x2a')]()[_0xc3ee('0x29')](function(){_0x28bfeb[_0xc3ee('0x1d')](0xcc)[_0xc3ee('0x1c')]();});}};}function handleEntityNotFound(_0x5c366e,_0x525ae5){return function(_0x4c53a5){if(!_0x4c53a5){_0x5c366e[_0xc3ee('0x1b')](0x194);}return _0x4c53a5;};}function handleError(_0x28522d,_0x3d8c79){_0x3d8c79=_0x3d8c79||0x1f4;return function(_0xb9a672){logger[_0xc3ee('0x2b')](_0xb9a672['stack']);if(_0xb9a672['name']){delete _0xb9a672['name'];}_0x28522d[_0xc3ee('0x1d')](_0x3d8c79)[_0xc3ee('0x2c')](_0xb9a672);};}exports[_0xc3ee('0x2d')]=function(_0x2fba96,_0x2cdd85){var _0x50ffaa={},_0x13f30d={},_0xfa3111={'count':0x0,'rows':[]};var _0x243b6a=_[_0xc3ee('0x2e')](db[_0xc3ee('0x2f')][_0xc3ee('0x30')],function(_0x3b17f7){return{'name':_0x3b17f7['fieldName'],'type':_0x3b17f7[_0xc3ee('0x31')][_0xc3ee('0x32')]};});_0x13f30d[_0xc3ee('0x33')]=_['map'](_0x243b6a,_0xc3ee('0x34'));_0x13f30d[_0xc3ee('0x35')]=_[_0xc3ee('0x36')](_0x2fba96[_0xc3ee('0x35')]);_0x13f30d[_0xc3ee('0x37')]=_[_0xc3ee('0x38')](_0x13f30d[_0xc3ee('0x33')],_0x13f30d['query']);_0x50ffaa[_0xc3ee('0x39')]=_['intersection'](_0x13f30d[_0xc3ee('0x33')],qs[_0xc3ee('0x3a')](_0x2fba96[_0xc3ee('0x35')][_0xc3ee('0x3a')]));_0x50ffaa[_0xc3ee('0x39')]=_0x50ffaa[_0xc3ee('0x39')]['length']?_0x50ffaa[_0xc3ee('0x39')]:_0x13f30d[_0xc3ee('0x33')];if(!_0x2fba96[_0xc3ee('0x35')][_0xc3ee('0x3b')](_0xc3ee('0x3c'))){_0x50ffaa[_0xc3ee('0x20')]=qs[_0xc3ee('0x20')](_0x2fba96[_0xc3ee('0x35')][_0xc3ee('0x20')]);_0x50ffaa[_0xc3ee('0x1f')]=qs[_0xc3ee('0x1f')](_0x2fba96[_0xc3ee('0x35')][_0xc3ee('0x1f')]);}_0x50ffaa[_0xc3ee('0x3d')]=qs[_0xc3ee('0x3e')](_0x2fba96[_0xc3ee('0x35')][_0xc3ee('0x3e')]);_0x50ffaa[_0xc3ee('0x3f')]=qs[_0xc3ee('0x37')](_[_0xc3ee('0x40')](_0x2fba96[_0xc3ee('0x35')],_0x13f30d['filters']),_0x243b6a);if(_0x2fba96[_0xc3ee('0x35')]['filter']){_0x50ffaa[_0xc3ee('0x3f')]=_[_0xc3ee('0x41')](_0x50ffaa[_0xc3ee('0x3f')],{'$or':_[_0xc3ee('0x2e')](_0x243b6a,function(_0x371000){if(_0x371000[_0xc3ee('0x31')]!=='VIRTUAL'){var _0x2a80aa={};_0x2a80aa[_0x371000[_0xc3ee('0x34')]]={'$like':'%'+_0x2fba96[_0xc3ee('0x35')]['filter']+'%'};return _0x2a80aa;}})});}_0x50ffaa=_[_0xc3ee('0x41')]({},_0x50ffaa,_0x2fba96[_0xc3ee('0x42')]);var _0x27795d={'where':_0x50ffaa[_0xc3ee('0x3f')]};return db[_0xc3ee('0x2f')][_0xc3ee('0x22')](_0x27795d)[_0xc3ee('0x29')](function(_0x2463d1){_0xfa3111[_0xc3ee('0x22')]=_0x2463d1;if(_0x2fba96[_0xc3ee('0x35')][_0xc3ee('0x43')]){_0x50ffaa['include']=[{'all':!![]}];}return db[_0xc3ee('0x2f')][_0xc3ee('0x44')](_0x50ffaa);})['then'](function(_0x4ec2a2){_0xfa3111[_0xc3ee('0x45')]=_0x4ec2a2;return _0xfa3111;})[_0xc3ee('0x29')](respondWithFilteredResult(_0x2cdd85,_0x50ffaa))[_0xc3ee('0x46')](handleError(_0x2cdd85,null));};exports['show']=function(_0x28b167,_0x92a306){var _0x112e77={'raw':![],'where':{'id':_0x28b167[_0xc3ee('0x47')]['id']}},_0x415224={};_0x415224[_0xc3ee('0x33')]=_[_0xc3ee('0x36')](db[_0xc3ee('0x2f')][_0xc3ee('0x30')]);_0x415224[_0xc3ee('0x35')]=_[_0xc3ee('0x36')](_0x28b167[_0xc3ee('0x35')]);_0x415224[_0xc3ee('0x37')]=_[_0xc3ee('0x38')](_0x415224['model'],_0x415224[_0xc3ee('0x35')]);_0x112e77['attributes']=_['intersection'](_0x415224[_0xc3ee('0x33')],qs[_0xc3ee('0x3a')](_0x28b167['query'][_0xc3ee('0x3a')]));_0x112e77[_0xc3ee('0x39')]=_0x112e77['attributes'][_0xc3ee('0x48')]?_0x112e77['attributes']:_0x415224[_0xc3ee('0x33')];if(_0x28b167['query'][_0xc3ee('0x43')]){_0x112e77[_0xc3ee('0x49')]=[{'all':!![]}];}_0x112e77=_['merge']({},_0x112e77,_0x28b167['options']);return db['FreshdeskAccount'][_0xc3ee('0x4a')](_0x112e77)[_0xc3ee('0x29')](handleEntityNotFound(_0x92a306,null))[_0xc3ee('0x29')](respondWithResult(_0x92a306,null))[_0xc3ee('0x46')](handleError(_0x92a306,null));};exports[_0xc3ee('0x4b')]=function(_0x5b5f5c,_0x4d06a8){return db[_0xc3ee('0x2f')][_0xc3ee('0x4b')](_0x5b5f5c['body'],{})[_0xc3ee('0x29')](respondWithResult(_0x4d06a8,0xc9))['catch'](handleError(_0x4d06a8,null));};exports[_0xc3ee('0x28')]=function(_0x5d0017,_0x2e5b94){if(_0x5d0017[_0xc3ee('0x4c')]['id']){delete _0x5d0017[_0xc3ee('0x4c')]['id'];}return db[_0xc3ee('0x2f')][_0xc3ee('0x4a')]({'where':{'id':_0x5d0017[_0xc3ee('0x47')]['id']}})[_0xc3ee('0x29')](handleEntityNotFound(_0x2e5b94,null))['then'](saveUpdates(_0x5d0017[_0xc3ee('0x4c')],null))[_0xc3ee('0x29')](respondWithResult(_0x2e5b94,null))[_0xc3ee('0x46')](handleError(_0x2e5b94,null));};exports[_0xc3ee('0x2a')]=function(_0x47d12c,_0xd246f2){return db[_0xc3ee('0x2f')][_0xc3ee('0x4a')]({'where':{'id':_0x47d12c[_0xc3ee('0x47')]['id']}})[_0xc3ee('0x29')](handleEntityNotFound(_0xd246f2,null))[_0xc3ee('0x29')](removeEntity(_0xd246f2,null))[_0xc3ee('0x46')](handleError(_0xd246f2,null));};exports['getConfigurations']=function(_0x52235c,_0x5a0493,_0x54793f){var _0xf18d12={};var _0x2f3e48={};var _0x2ec782;var _0x2b9ea;return db[_0xc3ee('0x2f')]['findOne']({'where':{'id':_0x52235c['params']['id']}})[_0xc3ee('0x29')](handleEntityNotFound(_0x5a0493,null))['then'](function(_0x1ca127){if(_0x1ca127){_0x2ec782=_0x1ca127;_0x2f3e48[_0xc3ee('0x33')]=_[_0xc3ee('0x36')](db['FreshdeskConfiguration'][_0xc3ee('0x30')]);_0x2f3e48[_0xc3ee('0x35')]=_[_0xc3ee('0x36')](_0x52235c[_0xc3ee('0x35')]);_0x2f3e48[_0xc3ee('0x37')]=_[_0xc3ee('0x38')](_0x2f3e48[_0xc3ee('0x33')],_0x2f3e48[_0xc3ee('0x35')]);_0xf18d12[_0xc3ee('0x39')]=_['intersection'](_0x2f3e48[_0xc3ee('0x33')],qs[_0xc3ee('0x3a')](_0x52235c[_0xc3ee('0x35')][_0xc3ee('0x3a')]));_0xf18d12[_0xc3ee('0x39')]=_0xf18d12[_0xc3ee('0x39')][_0xc3ee('0x48')]?_0xf18d12[_0xc3ee('0x39')]:_0x2f3e48[_0xc3ee('0x33')];_0xf18d12[_0xc3ee('0x3d')]=qs[_0xc3ee('0x3e')](_0x52235c[_0xc3ee('0x35')][_0xc3ee('0x3e')]);_0xf18d12['where']=qs[_0xc3ee('0x37')](_[_0xc3ee('0x40')](_0x52235c[_0xc3ee('0x35')],_0x2f3e48[_0xc3ee('0x37')]));if(_0x52235c[_0xc3ee('0x35')][_0xc3ee('0x4d')]){_0xf18d12['where']=_[_0xc3ee('0x41')](_0xf18d12[_0xc3ee('0x3f')],{'$or':_[_0xc3ee('0x2e')](_0xf18d12[_0xc3ee('0x39')],function(_0x209595){var _0x185497={};_0x185497[_0x209595]={'$like':'%'+_0x52235c[_0xc3ee('0x35')][_0xc3ee('0x4d')]+'%'};return _0x185497;})});}_0xf18d12=_[_0xc3ee('0x41')]({},_0xf18d12,_0x52235c[_0xc3ee('0x42')]);return _0x2ec782[_0xc3ee('0x4e')](_0xf18d12);}})[_0xc3ee('0x29')](function(_0x39b27b){if(_0x39b27b){_0x2b9ea=_0x39b27b['length'];if(!_0x52235c['query']['hasOwnProperty'](_0xc3ee('0x3c'))){_0xf18d12['limit']=qs[_0xc3ee('0x20')](_0x52235c[_0xc3ee('0x35')][_0xc3ee('0x20')]);_0xf18d12['offset']=qs[_0xc3ee('0x1f')](_0x52235c['query']['offset']);}return _0x2ec782[_0xc3ee('0x4e')](_0xf18d12);}})[_0xc3ee('0x29')](function(_0x3b5bc8){if(_0x3b5bc8){return _0x3b5bc8?{'count':_0x2b9ea,'rows':_0x3b5bc8}:null;}})[_0xc3ee('0x29')](respondWithResult(_0x5a0493,null))[_0xc3ee('0x46')](handleError(_0x5a0493,null));};exports[_0xc3ee('0x4f')]=function(_0x31dd4a,_0x3b5929,_0x56e346){if(_0x31dd4a[_0xc3ee('0x4c')]['id']){delete _0x31dd4a[_0xc3ee('0x4c')]['id'];}return db['FreshdeskAccount'][_0xc3ee('0x50')]({'where':{'id':_0x31dd4a[_0xc3ee('0x47')]['id']}})[_0xc3ee('0x29')](handleEntityNotFound(_0x3b5929,null))[_0xc3ee('0x29')](function(_0x344af5){if(_0x344af5){_0x31dd4a[_0xc3ee('0x4c')]['AccountId']=_0x344af5['id'];_0x31dd4a[_0xc3ee('0x4c')][_0xc3ee('0x51')]=integrations[_0xc3ee('0x52')](_0x31dd4a[_0xc3ee('0x4c')][_0xc3ee('0x53')],_0x31dd4a[_0xc3ee('0x4c')]['type']);_0x31dd4a[_0xc3ee('0x4c')]['Descriptions']=integrations[_0xc3ee('0x54')](_0x31dd4a['body'][_0xc3ee('0x53')],_0x31dd4a[_0xc3ee('0x4c')]['type']);return db['FreshdeskConfiguration'][_0xc3ee('0x4b')](_0x31dd4a[_0xc3ee('0x4c')],{'include':[{'model':db['FreshdeskField'],'as':_0xc3ee('0x51')},{'model':db[_0xc3ee('0x55')],'as':_0xc3ee('0x56')}]});}return null;})[_0xc3ee('0x29')](respondWithResult(_0x3b5929,null))[_0xc3ee('0x46')](handleError(_0x3b5929,null));};exports[_0xc3ee('0x57')]=function(_0x134948,_0x3b2252,_0x10ae1f){var _0x1a9d58='';return db[_0xc3ee('0x2f')][_0xc3ee('0x50')]({'where':{'id':_0x134948[_0xc3ee('0x47')]['id']},'attributes':['id',_0xc3ee('0x58'),_0xc3ee('0x59')]})[_0xc3ee('0x29')](handleEntityNotFound(_0x3b2252,null))[_0xc3ee('0x29')](function(_0x476908){if(_0x476908){_0x1a9d58=_0x476908[_0xc3ee('0x58')];var _0x4b5050=_0x1a9d58[_0xc3ee('0x5a')](-0x1);if(_0x4b5050==='/'){_0x1a9d58=_0x1a9d58[_0xc3ee('0x5b')](0x0,_0x1a9d58[_0xc3ee('0x5c')](_0x4b5050));}return rp({'method':'GET','uri':util[_0xc3ee('0x5d')]('%s/%s',_0x1a9d58,_0xc3ee('0x5e')),'headers':{'Authorization':util['format'](_0xc3ee('0x5f'),new Buffer(util[_0xc3ee('0x5d')](_0xc3ee('0x60'),_0x476908[_0xc3ee('0x59')]))[_0xc3ee('0x61')]('base64'))},'json':!![]});}})[_0xc3ee('0x29')](function(_0x581737){if(_0x581737){var _0x580840=[_0xc3ee('0x62'),_0xc3ee('0x63'),_0xc3ee('0x64'),_0xc3ee('0x65'),_0xc3ee('0x1d'),_0xc3ee('0x66'),_0xc3ee('0x67'),'source',_0xc3ee('0x68'),_0xc3ee('0x67'),_0xc3ee('0x69')];_[_0xc3ee('0x6a')](_0x581737,function(_0x270b4a){return _0x580840[_0xc3ee('0x6b')](_0x270b4a[_0xc3ee('0x34')])||!_0x270b4a[_0xc3ee('0x6c')]&&_0x270b4a['type']!=='custom_text'&&_0x270b4a[_0xc3ee('0x31')]!=='custom_dropdown';});return{'count':_0x581737[_0xc3ee('0x48')],'rows':_[_0xc3ee('0x2e')](_0x581737,function(_0x5479d5){return{'id':_0x5479d5['name'],'name':_0x5479d5[_0xc3ee('0x6d')],'custom':!_0x5479d5['default'],'options':_0x5479d5['choices']?_[_0xc3ee('0x2e')](_0x5479d5[_0xc3ee('0x6e')],function(_0xd298e9){return{'name':_['capitalize'](_0xd298e9),'value':_0xd298e9};}):[]};})};}})['then'](respondWithResult(_0x3b2252,null))[_0xc3ee('0x46')](function(_0x552744){var _0x5c2819=_0x134948['query'][_0xc3ee('0x6f')]?0x1f4:_0x552744[_0xc3ee('0x70')]||0x1f4;logger[_0xc3ee('0x2b')](_0xc3ee('0x71'),_0xc3ee('0x57'),_0x5c2819,JSON[_0xc3ee('0x72')](_0x552744));delete _0x552744[_0xc3ee('0x34')];if(_0x5c2819===0x191){_0x5c2819=0x190;}_0x3b2252[_0xc3ee('0x1d')](_0x5c2819)[_0xc3ee('0x2c')](_0x134948['query'][_0xc3ee('0x6f')]?{'message':_0xc3ee('0x73'),'statusCode':_0x552744[_0xc3ee('0x70')]}:_0x552744);});};
\ No newline at end of file
+var _0x69d3=['../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FreshdeskAccount','includeAll','include','findAll','rows','show','keys','find','catch','create','update','body','params','getConfigurations','findOne','FreshdeskConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','slice','substring','lastIndexOf','GET','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','apiKey','toString','requester','subject','agent','priority','group','source','ticket_type','company','remove','includes','custom_text','custom_dropdown','label','default','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils'];(function(_0x16de68,_0x33d7ff){var _0x1c277e=function(_0x1d8549){while(--_0x1d8549){_0x16de68['push'](_0x16de68['shift']());}};_0x1c277e(++_0x33d7ff);}(_0x69d3,0xda));var _0x369d=function(_0x5db2e5,_0x5ade38){_0x5db2e5=_0x5db2e5-0x0;var _0x40953f=_0x69d3[_0x5db2e5];return _0x40953f;};'use strict';var emlformat=require(_0x369d('0x0'));var rimraf=require(_0x369d('0x1'));var zipdir=require(_0x369d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x369d('0x3'));var moment=require(_0x369d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x369d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x369d('0x6'));var ejs=require(_0x369d('0x7'));var fs=require('fs');var fs_extra=require(_0x369d('0x8'));var _=require(_0x369d('0x9'));var squel=require(_0x369d('0xa'));var crypto=require(_0x369d('0xb'));var jsforce=require(_0x369d('0xc'));var deskjs=require(_0x369d('0xd'));var toCsv=require(_0x369d('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x369d('0xe'));var authService=require(_0x369d('0xf'));var qs=require(_0x369d('0x10'));var as=require(_0x369d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x369d('0x12'));var utils=require(_0x369d('0x13'));var config=require(_0x369d('0x14'));var licenseUtil=require(_0x369d('0x15'));var db=require(_0x369d('0x16'))['db'];var integrations=require(_0x369d('0x17'));function respondWithStatusCode(_0x52c126,_0x15b417){_0x15b417=_0x15b417||0xcc;return function(_0x9d016){if(_0x9d016){return _0x52c126[_0x369d('0x18')](_0x15b417);}return _0x52c126[_0x369d('0x19')](_0x15b417)[_0x369d('0x1a')]();};}function respondWithResult(_0x539536,_0x5cd4c3){_0x5cd4c3=_0x5cd4c3||0xc8;return function(_0x5485a1){if(_0x5485a1){return _0x539536[_0x369d('0x19')](_0x5cd4c3)[_0x369d('0x1b')](_0x5485a1);}};}function respondWithFilteredResult(_0x389c43,_0x5b4f55){return function(_0x2c1a4a){if(_0x2c1a4a){var _0x29c1fe=typeof _0x5b4f55[_0x369d('0x1c')]==='undefined'&&typeof _0x5b4f55[_0x369d('0x1d')]===_0x369d('0x1e');var _0x4ea6c2=_0x2c1a4a['count'];var _0x597b67=_0x29c1fe?0x0:_0x5b4f55[_0x369d('0x1c')];var _0x4494b3=_0x29c1fe?_0x2c1a4a[_0x369d('0x1f')]:_0x5b4f55['offset']+_0x5b4f55[_0x369d('0x1d')];var _0x24dfff;if(_0x4494b3>=_0x4ea6c2){_0x4494b3=_0x4ea6c2;_0x24dfff=0xc8;}else{_0x24dfff=0xce;}_0x389c43[_0x369d('0x19')](_0x24dfff);return _0x389c43[_0x369d('0x20')](_0x369d('0x21'),_0x597b67+'-'+_0x4494b3+'/'+_0x4ea6c2)['json'](_0x2c1a4a);}return null;};}function patchUpdates(_0x5c9fdd){return function(_0x448e6e){try{jsonpatch[_0x369d('0x22')](_0x448e6e,_0x5c9fdd,!![]);}catch(_0x11ac1d){return BPromise[_0x369d('0x23')](_0x11ac1d);}return _0x448e6e[_0x369d('0x24')]();};}function saveUpdates(_0x15fbef,_0x1b262a){return function(_0x54a42e){if(_0x54a42e){return _0x54a42e['update'](_0x15fbef)[_0x369d('0x25')](function(_0xed16e){return _0xed16e;});}return null;};}function removeEntity(_0xf7bc3a,_0xcae58){return function(_0x30e7c5){if(_0x30e7c5){return _0x30e7c5[_0x369d('0x26')]()[_0x369d('0x25')](function(){_0xf7bc3a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16145e,_0x46de2b){return function(_0x15cd81){if(!_0x15cd81){_0x16145e[_0x369d('0x18')](0x194);}return _0x15cd81;};}function handleError(_0x8aa521,_0x41e0cf){_0x41e0cf=_0x41e0cf||0x1f4;return function(_0x8090b0){logger['error'](_0x8090b0[_0x369d('0x27')]);if(_0x8090b0[_0x369d('0x28')]){delete _0x8090b0[_0x369d('0x28')];}_0x8aa521[_0x369d('0x19')](_0x41e0cf)[_0x369d('0x29')](_0x8090b0);};}exports[_0x369d('0x2a')]=function(_0x3d1ce0,_0x4d42ea){var _0x157291={},_0x56efb1={},_0x57b94c={'count':0x0,'rows':[]};var _0x38feda=_[_0x369d('0x2b')](db['FreshdeskAccount'][_0x369d('0x2c')],function(_0x5a14ce){return{'name':_0x5a14ce[_0x369d('0x2d')],'type':_0x5a14ce[_0x369d('0x2e')][_0x369d('0x2f')]};});_0x56efb1[_0x369d('0x30')]=_[_0x369d('0x2b')](_0x38feda,_0x369d('0x28'));_0x56efb1[_0x369d('0x31')]=_['keys'](_0x3d1ce0[_0x369d('0x31')]);_0x56efb1[_0x369d('0x32')]=_[_0x369d('0x33')](_0x56efb1[_0x369d('0x30')],_0x56efb1[_0x369d('0x31')]);_0x157291[_0x369d('0x34')]=_[_0x369d('0x33')](_0x56efb1[_0x369d('0x30')],qs['fields'](_0x3d1ce0[_0x369d('0x31')][_0x369d('0x35')]));_0x157291[_0x369d('0x34')]=_0x157291[_0x369d('0x34')][_0x369d('0x36')]?_0x157291['attributes']:_0x56efb1[_0x369d('0x30')];if(!_0x3d1ce0[_0x369d('0x31')][_0x369d('0x37')](_0x369d('0x38'))){_0x157291[_0x369d('0x1d')]=qs[_0x369d('0x1d')](_0x3d1ce0['query'][_0x369d('0x1d')]);_0x157291[_0x369d('0x1c')]=qs[_0x369d('0x1c')](_0x3d1ce0[_0x369d('0x31')][_0x369d('0x1c')]);}_0x157291[_0x369d('0x39')]=qs[_0x369d('0x3a')](_0x3d1ce0[_0x369d('0x31')][_0x369d('0x3a')]);_0x157291[_0x369d('0x3b')]=qs[_0x369d('0x32')](_[_0x369d('0x3c')](_0x3d1ce0[_0x369d('0x31')],_0x56efb1[_0x369d('0x32')]),_0x38feda);if(_0x3d1ce0[_0x369d('0x31')][_0x369d('0x3d')]){_0x157291[_0x369d('0x3b')]=_[_0x369d('0x3e')](_0x157291[_0x369d('0x3b')],{'$or':_[_0x369d('0x2b')](_0x38feda,function(_0x10c5b6){if(_0x10c5b6[_0x369d('0x2e')]!==_0x369d('0x3f')){var _0xd58366={};_0xd58366[_0x10c5b6['name']]={'$like':'%'+_0x3d1ce0['query'][_0x369d('0x3d')]+'%'};return _0xd58366;}})});}_0x157291=_[_0x369d('0x3e')]({},_0x157291,_0x3d1ce0[_0x369d('0x40')]);var _0x401bc7={'where':_0x157291[_0x369d('0x3b')]};return db[_0x369d('0x41')][_0x369d('0x1f')](_0x401bc7)[_0x369d('0x25')](function(_0x46c940){_0x57b94c['count']=_0x46c940;if(_0x3d1ce0[_0x369d('0x31')][_0x369d('0x42')]){_0x157291[_0x369d('0x43')]=[{'all':!![]}];}return db[_0x369d('0x41')][_0x369d('0x44')](_0x157291);})[_0x369d('0x25')](function(_0x28803c){_0x57b94c[_0x369d('0x45')]=_0x28803c;return _0x57b94c;})['then'](respondWithFilteredResult(_0x4d42ea,_0x157291))['catch'](handleError(_0x4d42ea,null));};exports[_0x369d('0x46')]=function(_0x3222ce,_0x30909a){var _0x4dad71={'raw':![],'where':{'id':_0x3222ce['params']['id']}},_0x4d07ac={};_0x4d07ac[_0x369d('0x30')]=_[_0x369d('0x47')](db['FreshdeskAccount'][_0x369d('0x2c')]);_0x4d07ac[_0x369d('0x31')]=_[_0x369d('0x47')](_0x3222ce[_0x369d('0x31')]);_0x4d07ac['filters']=_[_0x369d('0x33')](_0x4d07ac['model'],_0x4d07ac[_0x369d('0x31')]);_0x4dad71['attributes']=_[_0x369d('0x33')](_0x4d07ac[_0x369d('0x30')],qs[_0x369d('0x35')](_0x3222ce['query']['fields']));_0x4dad71[_0x369d('0x34')]=_0x4dad71[_0x369d('0x34')][_0x369d('0x36')]?_0x4dad71['attributes']:_0x4d07ac[_0x369d('0x30')];if(_0x3222ce[_0x369d('0x31')][_0x369d('0x42')]){_0x4dad71[_0x369d('0x43')]=[{'all':!![]}];}_0x4dad71=_[_0x369d('0x3e')]({},_0x4dad71,_0x3222ce[_0x369d('0x40')]);return db[_0x369d('0x41')][_0x369d('0x48')](_0x4dad71)[_0x369d('0x25')](handleEntityNotFound(_0x30909a,null))['then'](respondWithResult(_0x30909a,null))[_0x369d('0x49')](handleError(_0x30909a,null));};exports[_0x369d('0x4a')]=function(_0xcc1465,_0x257c3d){return db[_0x369d('0x41')][_0x369d('0x4a')](_0xcc1465['body'],{})[_0x369d('0x25')](respondWithResult(_0x257c3d,0xc9))[_0x369d('0x49')](handleError(_0x257c3d,null));};exports[_0x369d('0x4b')]=function(_0x44a357,_0x1b04d9){if(_0x44a357[_0x369d('0x4c')]['id']){delete _0x44a357[_0x369d('0x4c')]['id'];}return db[_0x369d('0x41')][_0x369d('0x48')]({'where':{'id':_0x44a357[_0x369d('0x4d')]['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x1b04d9,null))[_0x369d('0x25')](saveUpdates(_0x44a357['body'],null))[_0x369d('0x25')](respondWithResult(_0x1b04d9,null))[_0x369d('0x49')](handleError(_0x1b04d9,null));};exports[_0x369d('0x26')]=function(_0x85edd6,_0x648a0d){return db['FreshdeskAccount'][_0x369d('0x48')]({'where':{'id':_0x85edd6['params']['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x648a0d,null))[_0x369d('0x25')](removeEntity(_0x648a0d,null))[_0x369d('0x49')](handleError(_0x648a0d,null));};exports[_0x369d('0x4e')]=function(_0x46c62c,_0x1bd31c,_0x22e2d4){var _0x418cab={};var _0x1cdeca={};var _0x9f1544;var _0x4d582a;return db['FreshdeskAccount'][_0x369d('0x4f')]({'where':{'id':_0x46c62c[_0x369d('0x4d')]['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x1bd31c,null))[_0x369d('0x25')](function(_0x347df4){if(_0x347df4){_0x9f1544=_0x347df4;_0x1cdeca['model']=_['keys'](db[_0x369d('0x50')][_0x369d('0x2c')]);_0x1cdeca['query']=_[_0x369d('0x47')](_0x46c62c['query']);_0x1cdeca[_0x369d('0x32')]=_[_0x369d('0x33')](_0x1cdeca[_0x369d('0x30')],_0x1cdeca['query']);_0x418cab[_0x369d('0x34')]=_[_0x369d('0x33')](_0x1cdeca[_0x369d('0x30')],qs[_0x369d('0x35')](_0x46c62c['query']['fields']));_0x418cab[_0x369d('0x34')]=_0x418cab[_0x369d('0x34')][_0x369d('0x36')]?_0x418cab['attributes']:_0x1cdeca[_0x369d('0x30')];_0x418cab[_0x369d('0x39')]=qs[_0x369d('0x3a')](_0x46c62c['query']['sort']);_0x418cab[_0x369d('0x3b')]=qs[_0x369d('0x32')](_[_0x369d('0x3c')](_0x46c62c[_0x369d('0x31')],_0x1cdeca['filters']));if(_0x46c62c[_0x369d('0x31')][_0x369d('0x3d')]){_0x418cab[_0x369d('0x3b')]=_[_0x369d('0x3e')](_0x418cab[_0x369d('0x3b')],{'$or':_['map'](_0x418cab[_0x369d('0x34')],function(_0x304a9e){var _0x28b752={};_0x28b752[_0x304a9e]={'$like':'%'+_0x46c62c['query'][_0x369d('0x3d')]+'%'};return _0x28b752;})});}_0x418cab=_['merge']({},_0x418cab,_0x46c62c[_0x369d('0x40')]);return _0x9f1544['getConfigurations'](_0x418cab);}})['then'](function(_0x5f440e){if(_0x5f440e){_0x4d582a=_0x5f440e['length'];if(!_0x46c62c[_0x369d('0x31')]['hasOwnProperty'](_0x369d('0x38'))){_0x418cab['limit']=qs[_0x369d('0x1d')](_0x46c62c[_0x369d('0x31')][_0x369d('0x1d')]);_0x418cab['offset']=qs[_0x369d('0x1c')](_0x46c62c[_0x369d('0x31')][_0x369d('0x1c')]);}return _0x9f1544[_0x369d('0x4e')](_0x418cab);}})[_0x369d('0x25')](function(_0xe63e0f){if(_0xe63e0f){return _0xe63e0f?{'count':_0x4d582a,'rows':_0xe63e0f}:null;}})['then'](respondWithResult(_0x1bd31c,null))[_0x369d('0x49')](handleError(_0x1bd31c,null));};exports['addConfiguration']=function(_0x5706be,_0x56c98e,_0x36e990){if(_0x5706be[_0x369d('0x4c')]['id']){delete _0x5706be[_0x369d('0x4c')]['id'];}return db[_0x369d('0x41')][_0x369d('0x4f')]({'where':{'id':_0x5706be[_0x369d('0x4d')]['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x56c98e,null))[_0x369d('0x25')](function(_0x1c9683){if(_0x1c9683){_0x5706be[_0x369d('0x4c')][_0x369d('0x51')]=_0x1c9683['id'];_0x5706be[_0x369d('0x4c')][_0x369d('0x52')]=integrations[_0x369d('0x53')](_0x5706be[_0x369d('0x4c')][_0x369d('0x54')],_0x5706be['body'][_0x369d('0x2e')]);_0x5706be['body'][_0x369d('0x55')]=integrations[_0x369d('0x56')](_0x5706be[_0x369d('0x4c')][_0x369d('0x54')],_0x5706be[_0x369d('0x4c')]['type']);return db[_0x369d('0x50')]['create'](_0x5706be['body'],{'include':[{'model':db[_0x369d('0x57')],'as':_0x369d('0x52')},{'model':db[_0x369d('0x57')],'as':_0x369d('0x55')}]});}return null;})[_0x369d('0x25')](respondWithResult(_0x56c98e,null))[_0x369d('0x49')](handleError(_0x56c98e,null));};exports[_0x369d('0x58')]=function(_0x11ac7d,_0x55a811,_0x461782){var _0x24e70d='';return db['FreshdeskAccount'][_0x369d('0x4f')]({'where':{'id':_0x11ac7d[_0x369d('0x4d')]['id']},'attributes':['id',_0x369d('0x59'),'apiKey']})[_0x369d('0x25')](handleEntityNotFound(_0x55a811,null))['then'](function(_0x2a8152){if(_0x2a8152){_0x24e70d=_0x2a8152[_0x369d('0x59')];var _0x328593=_0x24e70d[_0x369d('0x5a')](-0x1);if(_0x328593==='/'){_0x24e70d=_0x24e70d[_0x369d('0x5b')](0x0,_0x24e70d[_0x369d('0x5c')](_0x328593));}return rp({'method':_0x369d('0x5d'),'uri':util['format'](_0x369d('0x5e'),_0x24e70d,_0x369d('0x5f')),'headers':{'Authorization':util['format'](_0x369d('0x60'),new Buffer(util['format'](_0x369d('0x61'),_0x2a8152[_0x369d('0x62')]))[_0x369d('0x63')]('base64'))},'json':!![]});}})[_0x369d('0x25')](function(_0x2cbe15){if(_0x2cbe15){var _0x4f6c45=[_0x369d('0x64'),_0x369d('0x65'),_0x369d('0x66'),'description',_0x369d('0x19'),_0x369d('0x67'),_0x369d('0x68'),_0x369d('0x69'),_0x369d('0x6a'),'group',_0x369d('0x6b')];_[_0x369d('0x6c')](_0x2cbe15,function(_0x45fadd){return _0x4f6c45[_0x369d('0x6d')](_0x45fadd[_0x369d('0x28')])||!_0x45fadd['default']&&_0x45fadd['type']!==_0x369d('0x6e')&&_0x45fadd[_0x369d('0x2e')]!==_0x369d('0x6f');});return{'count':_0x2cbe15[_0x369d('0x36')],'rows':_[_0x369d('0x2b')](_0x2cbe15,function(_0x2cc996){return{'id':_0x2cc996['name'],'name':_0x2cc996[_0x369d('0x70')],'custom':!_0x2cc996[_0x369d('0x71')],'options':_0x2cc996['choices']?_[_0x369d('0x2b')](_0x2cc996['choices'],function(_0x4936eb){return{'name':_['capitalize'](_0x4936eb),'value':_0x4936eb};}):[]};})};}})[_0x369d('0x25')](respondWithResult(_0x55a811,null))[_0x369d('0x49')](function(_0x5b2c2f){var _0x4148a9=_0x11ac7d['query'][_0x369d('0x72')]?0x1f4:_0x5b2c2f['statusCode']||0x1f4;logger['error'](_0x369d('0x73'),_0x369d('0x58'),_0x4148a9,JSON[_0x369d('0x74')](_0x5b2c2f));delete _0x5b2c2f[_0x369d('0x28')];if(_0x4148a9===0x191){_0x4148a9=0x190;}_0x55a811[_0x369d('0x19')](_0x4148a9)['send'](_0x11ac7d[_0x369d('0x31')][_0x369d('0x72')]?{'message':_0x369d('0x75'),'statusCode':_0x5b2c2f[_0x369d('0x76')]}:_0x5b2c2f);});};
\ No newline at end of file
index d119bc4..c9b4b09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb731=['FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x5bbe7e,_0x19c08f){var _0x6ebda1=function(_0x501701){while(--_0x501701){_0x5bbe7e['push'](_0x5bbe7e['shift']());}};_0x6ebda1(++_0x19c08f);}(_0xb731,0x147));var _0x1b73=function(_0x47f84a,_0x33b10f){_0x47f84a=_0x47f84a-0x0;var _0x328233=_0xb731[_0x47f84a];return _0x328233;};'use strict';var _=require(_0x1b73('0x0'));var util=require(_0x1b73('0x1'));var logger=require(_0x1b73('0x2'))(_0x1b73('0x3'));var moment=require('moment');var BPromise=require(_0x1b73('0x4'));var rp=require(_0x1b73('0x5'));var fs=require('fs');var path=require(_0x1b73('0x6'));var rimraf=require('rimraf');var config=require(_0x1b73('0x7'));var attributes=require(_0x1b73('0x8'));var integrations=require(_0x1b73('0x9'));module[_0x1b73('0xa')]=function(_0x14a796,_0xeff1ce){return _0x14a796['define'](_0x1b73('0xb'),attributes,{'tableName':_0x1b73('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x33fb=['rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x1ae9c9,_0x167192){var _0x5b6b3a=function(_0x3b2373){while(--_0x3b2373){_0x1ae9c9['push'](_0x1ae9c9['shift']());}};_0x5b6b3a(++_0x167192);}(_0x33fb,0x111));var _0xb33f=function(_0x59806a,_0x3d1560){_0x59806a=_0x59806a-0x0;var _0x14e08a=_0x33fb[_0x59806a];return _0x14e08a;};'use strict';var _=require(_0xb33f('0x0'));var util=require(_0xb33f('0x1'));var logger=require(_0xb33f('0x2'))(_0xb33f('0x3'));var moment=require(_0xb33f('0x4'));var BPromise=require('bluebird');var rp=require(_0xb33f('0x5'));var fs=require('fs');var path=require(_0xb33f('0x6'));var rimraf=require(_0xb33f('0x7'));var config=require(_0xb33f('0x8'));var attributes=require(_0xb33f('0x9'));var integrations=require(_0xb33f('0xa'));module[_0xb33f('0xb')]=function(_0x5d47f1,_0x11bc5e){return _0x5d47f1[_0xb33f('0xc')]('FreshdeskAccount',attributes,{'tableName':_0xb33f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 90bafec..30899ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aca=['FreshdeskAccount,\x20%s,\x20%s','message','result','catch','FreshdeskAccount','findAll','options','where','attributes','limit','include','model','map','debug','GetFreshdeskAccount','ShowFreshdeskAccount','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error'];(function(_0x47e45c,_0x492225){var _0x277d9c=function(_0x2ce122){while(--_0x2ce122){_0x47e45c['push'](_0x47e45c['shift']());}};_0x277d9c(++_0x492225);}(_0x3aca,0xea));var _0xa3ac=function(_0x390a19,_0x5dd137){_0x390a19=_0x390a19-0x0;var _0x5d8230=_0x3aca[_0x390a19];return _0x5d8230;};'use strict';var _=require(_0xa3ac('0x0'));var util=require(_0xa3ac('0x1'));var moment=require(_0xa3ac('0x2'));var BPromise=require(_0xa3ac('0x3'));var rs=require(_0xa3ac('0x4'));var fs=require('fs');var Redis=require(_0xa3ac('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa3ac('0x6'))(_0xa3ac('0x7'));var config=require(_0xa3ac('0x8'));var jayson=require(_0xa3ac('0x9'));var client=jayson[_0xa3ac('0xa')][_0xa3ac('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x397b84,_0x5d6911,_0x2eb8fb){return new BPromise(function(_0x1891d6,_0x5b5752){return client[_0xa3ac('0xc')](_0x397b84,_0x2eb8fb)[_0xa3ac('0xd')](function(_0x9945d9){logger[_0xa3ac('0xe')]('FreshdeskAccount,\x20%s,\x20%s',_0x5d6911,_0xa3ac('0xf'));logger['debug']('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x5d6911,_0xa3ac('0xf'),JSON[_0xa3ac('0x10')](_0x9945d9));if(_0x9945d9[_0xa3ac('0x11')]){if(_0x9945d9[_0xa3ac('0x11')]['code']===0x1f4){logger['error'](_0xa3ac('0x12'),_0x5d6911,_0x9945d9[_0xa3ac('0x11')][_0xa3ac('0x13')]);return _0x5b5752(_0x9945d9[_0xa3ac('0x11')][_0xa3ac('0x13')]);}logger[_0xa3ac('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0x5d6911,_0x9945d9[_0xa3ac('0x11')]['message']);return _0x1891d6(_0x9945d9['error'][_0xa3ac('0x13')]);}else{logger[_0xa3ac('0xe')](_0xa3ac('0x12'),_0x5d6911,_0xa3ac('0xf'));_0x1891d6(_0x9945d9[_0xa3ac('0x14')][_0xa3ac('0x13')]);}})[_0xa3ac('0x15')](function(_0x1396a2){logger[_0xa3ac('0x11')](_0xa3ac('0x12'),_0x5d6911,_0x1396a2);_0x5b5752(_0x1396a2);});});}exports['GetFreshdeskAccount']=function(_0x58976b){var _0x561c53=this;return new Promise(function(_0x2918aa,_0x3d1908){return db[_0xa3ac('0x16')][_0xa3ac('0x17')]({'raw':_0x58976b[_0xa3ac('0x18')]?_0x58976b['options']['raw']===undefined?!![]:![]:!![],'where':_0x58976b[_0xa3ac('0x18')]?_0x58976b[_0xa3ac('0x18')][_0xa3ac('0x19')]||null:null,'attributes':_0x58976b[_0xa3ac('0x18')]?_0x58976b[_0xa3ac('0x18')][_0xa3ac('0x1a')]||null:null,'limit':_0x58976b['options']?_0x58976b[_0xa3ac('0x18')][_0xa3ac('0x1b')]||null:null,'include':_0x58976b[_0xa3ac('0x18')]?_0x58976b[_0xa3ac('0x18')][_0xa3ac('0x1c')]?_['map'](_0x58976b[_0xa3ac('0x18')][_0xa3ac('0x1c')],function(_0xaf6aeb){return{'model':db[_0xaf6aeb[_0xa3ac('0x1d')]],'as':_0xaf6aeb['as'],'attributes':_0xaf6aeb[_0xa3ac('0x1a')],'include':_0xaf6aeb[_0xa3ac('0x1c')]?_[_0xa3ac('0x1e')](_0xaf6aeb[_0xa3ac('0x1c')],function(_0x108532){return{'model':db[_0x108532[_0xa3ac('0x1d')]],'as':_0x108532['as'],'attributes':_0x108532[_0xa3ac('0x1a')],'include':_0x108532[_0xa3ac('0x1c')]?_['map'](_0x108532[_0xa3ac('0x1c')],function(_0x467020){return{'model':db[_0x467020[_0xa3ac('0x1d')]],'as':_0x467020['as'],'attributes':_0x467020[_0xa3ac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa3ac('0xd')](function(_0x46081c){logger[_0xa3ac('0xe')]('GetFreshdeskAccount',_0x58976b);logger[_0xa3ac('0x1f')](_0xa3ac('0x20'),_0x58976b,JSON[_0xa3ac('0x10')](_0x46081c));_0x2918aa(_0x46081c);})[_0xa3ac('0x15')](function(_0x811be2){logger[_0xa3ac('0x11')]('GetFreshdeskAccount',_0x811be2[_0xa3ac('0x13')],_0x58976b);_0x3d1908(_0x561c53['error'](0x1f4,_0x811be2['message']));});});};exports[_0xa3ac('0x21')]=function(_0x3a2533){var _0x321948=this;return new Promise(function(_0x55e01e,_0x371946){return db[_0xa3ac('0x16')][_0xa3ac('0x22')]({'raw':_0x3a2533['options']?_0x3a2533[_0xa3ac('0x18')][_0xa3ac('0x23')]===undefined?!![]:![]:!![],'where':_0x3a2533[_0xa3ac('0x18')]?_0x3a2533['options'][_0xa3ac('0x19')]||null:null,'attributes':_0x3a2533[_0xa3ac('0x18')]?_0x3a2533[_0xa3ac('0x18')]['attributes']||null:null,'include':_0x3a2533['options']?_0x3a2533[_0xa3ac('0x18')][_0xa3ac('0x1c')]?_[_0xa3ac('0x1e')](_0x3a2533[_0xa3ac('0x18')]['include'],function(_0x38d916){return{'model':db[_0x38d916['model']],'as':_0x38d916['as'],'attributes':_0x38d916['attributes'],'include':_0x38d916[_0xa3ac('0x1c')]?_['map'](_0x38d916['include'],function(_0x2a7676){return{'model':db[_0x2a7676[_0xa3ac('0x1d')]],'as':_0x2a7676['as'],'attributes':_0x2a7676[_0xa3ac('0x1a')],'include':_0x2a7676[_0xa3ac('0x1c')]?_[_0xa3ac('0x1e')](_0x2a7676[_0xa3ac('0x1c')],function(_0x553eef){return{'model':db[_0x553eef[_0xa3ac('0x1d')]],'as':_0x553eef['as'],'attributes':_0x553eef[_0xa3ac('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa3ac('0xd')](function(_0x2f40bc){logger[_0xa3ac('0xe')](_0xa3ac('0x21'),_0x3a2533);logger['debug'](_0xa3ac('0x21'),_0x3a2533,JSON[_0xa3ac('0x10')](_0x2f40bc));_0x55e01e(_0x2f40bc);})[_0xa3ac('0x15')](function(_0x5dc796){logger[_0xa3ac('0x11')](_0xa3ac('0x21'),_0x5dc796['message'],_0x3a2533);_0x371946(_0x321948['error'](0x1f4,_0x5dc796[_0xa3ac('0x13')]));});});};
\ No newline at end of file
+var _0xe303=['find','ShowFreshdeskAccount','lodash','moment','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','include','map','model','stringify'];(function(_0x2d719f,_0x1f9db1){var _0x3df539=function(_0xf8852c){while(--_0xf8852c){_0x2d719f['push'](_0x2d719f['shift']());}};_0x3df539(++_0x1f9db1);}(_0xe303,0x112));var _0x3e30=function(_0x2a1f50,_0x1d88b5){_0x2a1f50=_0x2a1f50-0x0;var _0x1799d3=_0xe303[_0x2a1f50];return _0x1799d3;};'use strict';var _=require(_0x3e30('0x0'));var util=require('util');var moment=require(_0x3e30('0x1'));var BPromise=require('bluebird');var rs=require(_0x3e30('0x2'));var fs=require('fs');var Redis=require(_0x3e30('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3e30('0x4'))('rpc');var config=require(_0x3e30('0x5'));var jayson=require(_0x3e30('0x6'));var client=jayson[_0x3e30('0x7')][_0x3e30('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x189b8f,_0x18a3db,_0x41c334){return new BPromise(function(_0x4fdb81,_0x31fba7){return client[_0x3e30('0x9')](_0x189b8f,_0x41c334)[_0x3e30('0xa')](function(_0x22225f){logger[_0x3e30('0xb')](_0x3e30('0xc'),_0x18a3db,'request\x20sent');logger[_0x3e30('0xd')](_0x3e30('0xe'),_0x18a3db,'request\x20sent',JSON['stringify'](_0x22225f));if(_0x22225f['error']){if(_0x22225f[_0x3e30('0xf')][_0x3e30('0x10')]===0x1f4){logger[_0x3e30('0xf')](_0x3e30('0xc'),_0x18a3db,_0x22225f[_0x3e30('0xf')][_0x3e30('0x11')]);return _0x31fba7(_0x22225f[_0x3e30('0xf')][_0x3e30('0x11')]);}logger['error'](_0x3e30('0xc'),_0x18a3db,_0x22225f[_0x3e30('0xf')][_0x3e30('0x11')]);return _0x4fdb81(_0x22225f[_0x3e30('0xf')][_0x3e30('0x11')]);}else{logger[_0x3e30('0xb')](_0x3e30('0xc'),_0x18a3db,_0x3e30('0x12'));_0x4fdb81(_0x22225f[_0x3e30('0x13')][_0x3e30('0x11')]);}})[_0x3e30('0x14')](function(_0x5dcb18){logger['error'](_0x3e30('0xc'),_0x18a3db,_0x5dcb18);_0x31fba7(_0x5dcb18);});});}exports[_0x3e30('0x15')]=function(_0xabfb18){var _0x21fb22=this;return new Promise(function(_0x53bcd7,_0x4837e7){return db[_0x3e30('0x16')][_0x3e30('0x17')]({'raw':_0xabfb18[_0x3e30('0x18')]?_0xabfb18[_0x3e30('0x18')][_0x3e30('0x19')]===undefined?!![]:![]:!![],'where':_0xabfb18['options']?_0xabfb18[_0x3e30('0x18')][_0x3e30('0x1a')]||null:null,'attributes':_0xabfb18['options']?_0xabfb18['options'][_0x3e30('0x1b')]||null:null,'limit':_0xabfb18[_0x3e30('0x18')]?_0xabfb18['options']['limit']||null:null,'include':_0xabfb18[_0x3e30('0x18')]?_0xabfb18[_0x3e30('0x18')][_0x3e30('0x1c')]?_[_0x3e30('0x1d')](_0xabfb18['options'][_0x3e30('0x1c')],function(_0xdbc186){return{'model':db[_0xdbc186[_0x3e30('0x1e')]],'as':_0xdbc186['as'],'attributes':_0xdbc186[_0x3e30('0x1b')],'include':_0xdbc186[_0x3e30('0x1c')]?_['map'](_0xdbc186[_0x3e30('0x1c')],function(_0x7225ca){return{'model':db[_0x7225ca[_0x3e30('0x1e')]],'as':_0x7225ca['as'],'attributes':_0x7225ca[_0x3e30('0x1b')],'include':_0x7225ca['include']?_[_0x3e30('0x1d')](_0x7225ca[_0x3e30('0x1c')],function(_0x30f5e9){return{'model':db[_0x30f5e9[_0x3e30('0x1e')]],'as':_0x30f5e9['as'],'attributes':_0x30f5e9['attributes']};}):[]};}):[]};}):[]:[]})[_0x3e30('0xa')](function(_0x55b06c){logger[_0x3e30('0xb')]('GetFreshdeskAccount',_0xabfb18);logger[_0x3e30('0xd')](_0x3e30('0x15'),_0xabfb18,JSON[_0x3e30('0x1f')](_0x55b06c));_0x53bcd7(_0x55b06c);})['catch'](function(_0x33425d){logger[_0x3e30('0xf')](_0x3e30('0x15'),_0x33425d['message'],_0xabfb18);_0x4837e7(_0x21fb22[_0x3e30('0xf')](0x1f4,_0x33425d[_0x3e30('0x11')]));});});};exports['ShowFreshdeskAccount']=function(_0x41d92a){var _0x18dbf9=this;return new Promise(function(_0x1bfbab,_0x357796){return db[_0x3e30('0x16')][_0x3e30('0x20')]({'raw':_0x41d92a[_0x3e30('0x18')]?_0x41d92a['options']['raw']===undefined?!![]:![]:!![],'where':_0x41d92a['options']?_0x41d92a[_0x3e30('0x18')]['where']||null:null,'attributes':_0x41d92a[_0x3e30('0x18')]?_0x41d92a[_0x3e30('0x18')][_0x3e30('0x1b')]||null:null,'include':_0x41d92a[_0x3e30('0x18')]?_0x41d92a[_0x3e30('0x18')]['include']?_[_0x3e30('0x1d')](_0x41d92a['options'][_0x3e30('0x1c')],function(_0x1b9df4){return{'model':db[_0x1b9df4[_0x3e30('0x1e')]],'as':_0x1b9df4['as'],'attributes':_0x1b9df4[_0x3e30('0x1b')],'include':_0x1b9df4[_0x3e30('0x1c')]?_[_0x3e30('0x1d')](_0x1b9df4[_0x3e30('0x1c')],function(_0x384c3d){return{'model':db[_0x384c3d['model']],'as':_0x384c3d['as'],'attributes':_0x384c3d[_0x3e30('0x1b')],'include':_0x384c3d[_0x3e30('0x1c')]?_[_0x3e30('0x1d')](_0x384c3d[_0x3e30('0x1c')],function(_0x540c8a){return{'model':db[_0x540c8a[_0x3e30('0x1e')]],'as':_0x540c8a['as'],'attributes':_0x540c8a[_0x3e30('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3e30('0xa')](function(_0x59ebd3){logger[_0x3e30('0xb')]('ShowFreshdeskAccount',_0x41d92a);logger[_0x3e30('0xd')](_0x3e30('0x21'),_0x41d92a,JSON[_0x3e30('0x1f')](_0x59ebd3));_0x1bfbab(_0x59ebd3);})[_0x3e30('0x14')](function(_0x3423c6){logger['error'](_0x3e30('0x21'),_0x3423c6[_0x3e30('0x11')],_0x41d92a);_0x357796(_0x18dbf9[_0x3e30('0xf')](0x1f4,_0x3423c6[_0x3e30('0x11')]));});});};
\ No newline at end of file
index 075c897..3d0dfca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb5=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/tags','getTags','post','create','setTags','put','update','delete','exports'];(function(_0x5eb294,_0x5b52ba){var _0xd139fd=function(_0x52e319){while(--_0x52e319){_0x5eb294['push'](_0x5eb294['shift']());}};_0xd139fd(++_0x5b52ba);}(_0x3cb5,0x68));var _0x53cb=function(_0x27231,_0x2efe87){_0x27231=_0x27231-0x0;var _0x10237f=_0x3cb5[_0x27231];return _0x10237f;};'use strict';var multer=require(_0x53cb('0x0'));var util=require(_0x53cb('0x1'));var path=require(_0x53cb('0x2'));var timeout=require(_0x53cb('0x3'));var express=require(_0x53cb('0x4'));var router=express[_0x53cb('0x5')]();var fs_extra=require(_0x53cb('0x6'));var auth=require(_0x53cb('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x53cb('0x8'));var controller=require(_0x53cb('0x9'));router[_0x53cb('0xa')]('/',auth[_0x53cb('0xb')](),controller[_0x53cb('0xc')]);router['get'](_0x53cb('0xd'),auth[_0x53cb('0xb')](),controller[_0x53cb('0xe')]);router[_0x53cb('0xa')](_0x53cb('0xf'),auth[_0x53cb('0xb')](),controller['getFields']);router[_0x53cb('0xa')]('/:id/subjects',auth[_0x53cb('0xb')](),controller[_0x53cb('0x10')]);router[_0x53cb('0xa')]('/:id/descriptions',auth[_0x53cb('0xb')](),controller['getDescriptions']);router[_0x53cb('0xa')](_0x53cb('0x11'),auth['isAuthenticated'](),controller[_0x53cb('0x12')]);router[_0x53cb('0x13')]('/',auth[_0x53cb('0xb')](),controller[_0x53cb('0x14')]);router['post'](_0x53cb('0x11'),auth['isAuthenticated'](),controller[_0x53cb('0x15')]);router[_0x53cb('0x16')](_0x53cb('0xd'),auth[_0x53cb('0xb')](),controller[_0x53cb('0x17')]);router[_0x53cb('0x18')](_0x53cb('0xd'),auth[_0x53cb('0xb')](),controller['destroy']);module[_0x53cb('0x19')]=router;
\ No newline at end of file
+var _0x85f1=['isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x25da19,_0x1b0ea3){var _0x56fa3d=function(_0x1b973f){while(--_0x1b973f){_0x25da19['push'](_0x25da19['shift']());}};_0x56fa3d(++_0x1b0ea3);}(_0x85f1,0x147));var _0x185f=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x85f1[_0x3da832];return _0xe602f2;};'use strict';var multer=require(_0x185f('0x0'));var util=require(_0x185f('0x1'));var path=require(_0x185f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x185f('0x3')]();var fs_extra=require(_0x185f('0x4'));var auth=require(_0x185f('0x5'));var interaction=require(_0x185f('0x6'));var config=require(_0x185f('0x7'));var controller=require('./intFreshdeskConfiguration.controller');router[_0x185f('0x8')]('/',auth[_0x185f('0x9')](),controller[_0x185f('0xa')]);router['get']('/:id',auth[_0x185f('0x9')](),controller[_0x185f('0xb')]);router[_0x185f('0x8')](_0x185f('0xc'),auth['isAuthenticated'](),controller[_0x185f('0xd')]);router['get'](_0x185f('0xe'),auth[_0x185f('0x9')](),controller[_0x185f('0xf')]);router['get'](_0x185f('0x10'),auth[_0x185f('0x9')](),controller[_0x185f('0x11')]);router[_0x185f('0x8')](_0x185f('0x12'),auth[_0x185f('0x9')](),controller[_0x185f('0x13')]);router[_0x185f('0x14')]('/',auth[_0x185f('0x9')](),controller['create']);router[_0x185f('0x14')](_0x185f('0x12'),auth[_0x185f('0x9')](),controller[_0x185f('0x15')]);router[_0x185f('0x16')](_0x185f('0x17'),auth[_0x185f('0x9')](),controller[_0x185f('0x18')]);router[_0x185f('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x185f('0x1a')]);module[_0x185f('0x1b')]=router;
\ No newline at end of file
index b21abbd..8a3e50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x345f=['exports','STRING','sequelize'];(function(_0x104f04,_0x598295){var _0x14f405=function(_0x196fcd){while(--_0x196fcd){_0x104f04['push'](_0x104f04['shift']());}};_0x14f405(++_0x598295);}(_0x345f,0x1a0));var _0xf345=function(_0x154940,_0x4a448a){_0x154940=_0x154940-0x0;var _0x401409=_0x345f[_0x154940];return _0x401409;};'use strict';var Sequelize=require(_0xf345('0x0'));module[_0xf345('0x1')]={'name':{'type':Sequelize[_0xf345('0x2')]},'description':{'type':Sequelize[_0xf345('0x2')]}};
\ No newline at end of file
+var _0x0b85=['STRING','sequelize','exports'];(function(_0x1572f6,_0x3f6dd7){var _0x5249c4=function(_0x1863dc){while(--_0x1863dc){_0x1572f6['push'](_0x1572f6['shift']());}};_0x5249c4(++_0x3f6dd7);}(_0x0b85,0xa0));var _0x50b8=function(_0x2c124a,_0x21ae5){_0x2c124a=_0x2c124a-0x0;var _0x16cbd4=_0x0b85[_0x2c124a];return _0x16cbd4;};'use strict';var Sequelize=require(_0x50b8('0x0'));module[_0x50b8('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x50b8('0x2')]}};
\ No newline at end of file
index 12a1e6b..95541dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x870a=['fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','catch','show','find','create','body','params','getFields','sort','getSubjects','findOne','FreshdeskField','getDescriptions','getTags','setTags','ids','rimraf','zip-dir','mustache','util','path','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','index','FreshdeskConfiguration','rawAttributes'];(function(_0x220d73,_0xdadf3e){var _0x324f4c=function(_0x42c6be){while(--_0x42c6be){_0x220d73['push'](_0x220d73['shift']());}};_0x324f4c(++_0xdadf3e);}(_0x870a,0xc8));var _0xa870=function(_0x2d78f4,_0x4c0ef3){_0x2d78f4=_0x2d78f4-0x0;var _0x3cc57e=_0x870a[_0x2d78f4];return _0x3cc57e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa870('0x0'));var zipdir=require(_0xa870('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa870('0x2'));var util=require(_0xa870('0x3'));var path=require(_0xa870('0x4'));var sox=require(_0xa870('0x5'));var csv=require(_0xa870('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa870('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa870('0x8'));var deskjs=require(_0xa870('0x9'));var toCsv=require('to-csv');var querystring=require(_0xa870('0xa'));var Papa=require(_0xa870('0xb'));var Redis=require('ioredis');var authService=require(_0xa870('0xc'));var qs=require(_0xa870('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa870('0xe'));var logger=require(_0xa870('0xf'))('api');var utils=require(_0xa870('0x10'));var config=require(_0xa870('0x11'));var licenseUtil=require(_0xa870('0x12'));var db=require(_0xa870('0x13'))['db'];function respondWithStatusCode(_0xad589b,_0x579353){_0x579353=_0x579353||0xcc;return function(_0x55e47b){if(_0x55e47b){return _0xad589b[_0xa870('0x14')](_0x579353);}return _0xad589b['status'](_0x579353)[_0xa870('0x15')]();};}function respondWithResult(_0x5ec783,_0x42639e){_0x42639e=_0x42639e||0xc8;return function(_0x41942a){if(_0x41942a){return _0x5ec783[_0xa870('0x16')](_0x42639e)[_0xa870('0x17')](_0x41942a);}};}function respondWithFilteredResult(_0x54a24b,_0x47bfde){return function(_0x399ecb){if(_0x399ecb){var _0x15c135=typeof _0x47bfde[_0xa870('0x18')]==='undefined'&&typeof _0x47bfde['limit']===_0xa870('0x19');var _0x1ad6b4=_0x399ecb[_0xa870('0x1a')];var _0x1feee3=_0x15c135?0x0:_0x47bfde[_0xa870('0x18')];var _0x4f3ca0=_0x15c135?_0x399ecb[_0xa870('0x1a')]:_0x47bfde[_0xa870('0x18')]+_0x47bfde['limit'];var _0x3d0b00;if(_0x4f3ca0>=_0x1ad6b4){_0x4f3ca0=_0x1ad6b4;_0x3d0b00=0xc8;}else{_0x3d0b00=0xce;}_0x54a24b[_0xa870('0x16')](_0x3d0b00);return _0x54a24b['set'](_0xa870('0x1b'),_0x1feee3+'-'+_0x4f3ca0+'/'+_0x1ad6b4)['json'](_0x399ecb);}return null;};}function patchUpdates(_0x5625e2){return function(_0x5c126c){try{jsonpatch[_0xa870('0x1c')](_0x5c126c,_0x5625e2,!![]);}catch(_0x1fa44){return BPromise[_0xa870('0x1d')](_0x1fa44);}return _0x5c126c[_0xa870('0x1e')]();};}function saveUpdates(_0x92948b,_0xf607de){return function(_0x10f7d9){if(_0x10f7d9){return _0x10f7d9[_0xa870('0x1f')](_0x92948b)['then'](function(_0x2f6da1){return _0x2f6da1;});}return null;};}function removeEntity(_0xcbf445,_0x58270d){return function(_0x56d7aa){if(_0x56d7aa){return _0x56d7aa[_0xa870('0x20')]()['then'](function(){_0xcbf445[_0xa870('0x16')](0xcc)[_0xa870('0x15')]();});}};}function handleEntityNotFound(_0x137a0f,_0x34363e){return function(_0x4c799f){if(!_0x4c799f){_0x137a0f[_0xa870('0x14')](0x194);}return _0x4c799f;};}function handleError(_0x4e3db5,_0x1bf7ae){_0x1bf7ae=_0x1bf7ae||0x1f4;return function(_0x43fe10){logger[_0xa870('0x21')](_0x43fe10[_0xa870('0x22')]);if(_0x43fe10[_0xa870('0x23')]){delete _0x43fe10[_0xa870('0x23')];}_0x4e3db5[_0xa870('0x16')](_0x1bf7ae)[_0xa870('0x24')](_0x43fe10);};}exports[_0xa870('0x25')]=function(_0x344b74,_0x2eb6e0){var _0x245ec3={},_0x647b3f={},_0x571d2f={'count':0x0,'rows':[]};var _0x115853=_['map'](db[_0xa870('0x26')][_0xa870('0x27')],function(_0x6b9ad7){return{'name':_0x6b9ad7[_0xa870('0x28')],'type':_0x6b9ad7[_0xa870('0x29')][_0xa870('0x2a')]};});_0x647b3f[_0xa870('0x2b')]=_[_0xa870('0x2c')](_0x115853,_0xa870('0x23'));_0x647b3f[_0xa870('0x2d')]=_[_0xa870('0x2e')](_0x344b74['query']);_0x647b3f[_0xa870('0x2f')]=_[_0xa870('0x30')](_0x647b3f[_0xa870('0x2b')],_0x647b3f[_0xa870('0x2d')]);_0x245ec3[_0xa870('0x31')]=_[_0xa870('0x30')](_0x647b3f[_0xa870('0x2b')],qs['fields'](_0x344b74[_0xa870('0x2d')][_0xa870('0x32')]));_0x245ec3['attributes']=_0x245ec3[_0xa870('0x31')][_0xa870('0x33')]?_0x245ec3[_0xa870('0x31')]:_0x647b3f[_0xa870('0x2b')];if(!_0x344b74['query'][_0xa870('0x34')](_0xa870('0x35'))){_0x245ec3[_0xa870('0x36')]=qs['limit'](_0x344b74[_0xa870('0x2d')][_0xa870('0x36')]);_0x245ec3[_0xa870('0x18')]=qs[_0xa870('0x18')](_0x344b74[_0xa870('0x2d')]['offset']);}_0x245ec3[_0xa870('0x37')]=qs['sort'](_0x344b74[_0xa870('0x2d')]['sort']);_0x245ec3[_0xa870('0x38')]=qs[_0xa870('0x2f')](_[_0xa870('0x39')](_0x344b74[_0xa870('0x2d')],_0x647b3f[_0xa870('0x2f')]),_0x115853);if(_0x344b74[_0xa870('0x2d')][_0xa870('0x3a')]){_0x245ec3['where']=_[_0xa870('0x3b')](_0x245ec3[_0xa870('0x38')],{'$or':_[_0xa870('0x2c')](_0x115853,function(_0x21ef5d){if(_0x21ef5d[_0xa870('0x29')]!==_0xa870('0x3c')){var _0x3faa0b={};_0x3faa0b[_0x21ef5d['name']]={'$like':'%'+_0x344b74['query']['filter']+'%'};return _0x3faa0b;}})});}_0x245ec3=_['merge']({},_0x245ec3,_0x344b74[_0xa870('0x3d')]);var _0x1d019f={'where':_0x245ec3[_0xa870('0x38')]};return db['FreshdeskConfiguration'][_0xa870('0x1a')](_0x1d019f)[_0xa870('0x3e')](function(_0x29870d){_0x571d2f['count']=_0x29870d;if(_0x344b74[_0xa870('0x2d')][_0xa870('0x3f')]){_0x245ec3[_0xa870('0x40')]=[{'all':!![]}];}return db[_0xa870('0x26')]['findAll'](_0x245ec3);})[_0xa870('0x3e')](function(_0xa3ca93){_0x571d2f['rows']=_0xa3ca93;return _0x571d2f;})[_0xa870('0x3e')](respondWithFilteredResult(_0x2eb6e0,_0x245ec3))[_0xa870('0x41')](handleError(_0x2eb6e0,null));};exports[_0xa870('0x42')]=function(_0x25847e,_0x4de2ad){var _0x5d2320={'raw':![],'where':{'id':_0x25847e['params']['id']}},_0x54f375={};_0x54f375[_0xa870('0x2b')]=_[_0xa870('0x2e')](db['FreshdeskConfiguration'][_0xa870('0x27')]);_0x54f375[_0xa870('0x2d')]=_[_0xa870('0x2e')](_0x25847e[_0xa870('0x2d')]);_0x54f375[_0xa870('0x2f')]=_[_0xa870('0x30')](_0x54f375[_0xa870('0x2b')],_0x54f375['query']);_0x5d2320['attributes']=_[_0xa870('0x30')](_0x54f375[_0xa870('0x2b')],qs[_0xa870('0x32')](_0x25847e['query']['fields']));_0x5d2320['attributes']=_0x5d2320[_0xa870('0x31')]['length']?_0x5d2320[_0xa870('0x31')]:_0x54f375['model'];if(_0x25847e[_0xa870('0x2d')][_0xa870('0x3f')]){_0x5d2320[_0xa870('0x40')]=[{'all':!![]}];}_0x5d2320=_[_0xa870('0x3b')]({},_0x5d2320,_0x25847e[_0xa870('0x3d')]);return db[_0xa870('0x26')][_0xa870('0x43')](_0x5d2320)[_0xa870('0x3e')](handleEntityNotFound(_0x4de2ad,null))[_0xa870('0x3e')](respondWithResult(_0x4de2ad,null))[_0xa870('0x41')](handleError(_0x4de2ad,null));};exports[_0xa870('0x44')]=function(_0x5bceea,_0x109d71){return db[_0xa870('0x26')][_0xa870('0x44')](_0x5bceea[_0xa870('0x45')],{})['then'](respondWithResult(_0x109d71,0xc9))[_0xa870('0x41')](handleError(_0x109d71,null));};exports[_0xa870('0x1f')]=function(_0x2f49e4,_0x41575a){if(_0x2f49e4['body']['id']){delete _0x2f49e4[_0xa870('0x45')]['id'];}return db[_0xa870('0x26')][_0xa870('0x43')]({'where':{'id':_0x2f49e4[_0xa870('0x46')]['id']}})['then'](handleEntityNotFound(_0x41575a,null))[_0xa870('0x3e')](saveUpdates(_0x2f49e4[_0xa870('0x45')],null))[_0xa870('0x3e')](respondWithResult(_0x41575a,null))[_0xa870('0x41')](handleError(_0x41575a,null));};exports[_0xa870('0x20')]=function(_0xe50e44,_0x51bf41){return db[_0xa870('0x26')]['find']({'where':{'id':_0xe50e44['params']['id']}})[_0xa870('0x3e')](handleEntityNotFound(_0x51bf41,null))[_0xa870('0x3e')](removeEntity(_0x51bf41,null))['catch'](handleError(_0x51bf41,null));};exports[_0xa870('0x47')]=function(_0x41c24a,_0x50d5cb,_0x4eff7a){var _0x537afb={};var _0x5b91f2={};var _0x53296d;var _0x5b4db6;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x41c24a[_0xa870('0x46')]['id']}})[_0xa870('0x3e')](handleEntityNotFound(_0x50d5cb,null))[_0xa870('0x3e')](function(_0x58e8dc){if(_0x58e8dc){_0x53296d=_0x58e8dc;_0x5b91f2[_0xa870('0x2b')]=_[_0xa870('0x2e')](db['FreshdeskField']['rawAttributes']);_0x5b91f2[_0xa870('0x2d')]=_[_0xa870('0x2e')](_0x41c24a[_0xa870('0x2d')]);_0x5b91f2[_0xa870('0x2f')]=_[_0xa870('0x30')](_0x5b91f2[_0xa870('0x2b')],_0x5b91f2[_0xa870('0x2d')]);_0x537afb[_0xa870('0x31')]=_[_0xa870('0x30')](_0x5b91f2['model'],qs[_0xa870('0x32')](_0x41c24a[_0xa870('0x2d')][_0xa870('0x32')]));_0x537afb['attributes']=_0x537afb[_0xa870('0x31')][_0xa870('0x33')]?_0x537afb[_0xa870('0x31')]:_0x5b91f2[_0xa870('0x2b')];_0x537afb[_0xa870('0x37')]=qs['sort'](_0x41c24a[_0xa870('0x2d')][_0xa870('0x48')]);_0x537afb[_0xa870('0x38')]=qs[_0xa870('0x2f')](_[_0xa870('0x39')](_0x41c24a[_0xa870('0x2d')],_0x5b91f2[_0xa870('0x2f')]));if(_0x41c24a[_0xa870('0x2d')][_0xa870('0x3a')]){_0x537afb[_0xa870('0x38')]=_[_0xa870('0x3b')](_0x537afb[_0xa870('0x38')],{'$or':_[_0xa870('0x2c')](_0x537afb[_0xa870('0x31')],function(_0x2885c9){var _0x2a0966={};_0x2a0966[_0x2885c9]={'$like':'%'+_0x41c24a['query'][_0xa870('0x3a')]+'%'};return _0x2a0966;})});}_0x537afb=_[_0xa870('0x3b')]({},_0x537afb,_0x41c24a['options']);return _0x53296d[_0xa870('0x47')](_0x537afb);}})['then'](function(_0x3f2742){if(_0x3f2742){_0x5b4db6=_0x3f2742[_0xa870('0x33')];if(!_0x41c24a[_0xa870('0x2d')]['hasOwnProperty'](_0xa870('0x35'))){_0x537afb['limit']=qs['limit'](_0x41c24a[_0xa870('0x2d')][_0xa870('0x36')]);_0x537afb[_0xa870('0x18')]=qs[_0xa870('0x18')](_0x41c24a[_0xa870('0x2d')]['offset']);}return _0x53296d['getFields'](_0x537afb);}})['then'](function(_0x100928){if(_0x100928){return _0x100928?{'count':_0x5b4db6,'rows':_0x100928}:null;}})[_0xa870('0x3e')](respondWithResult(_0x50d5cb,null))[_0xa870('0x41')](handleError(_0x50d5cb,null));};exports[_0xa870('0x49')]=function(_0x290e70,_0x5051d9,_0x1830b2){var _0xf4db07={};var _0x460e30={};var _0x2cc996;var _0x3cdb82;return db[_0xa870('0x26')][_0xa870('0x4a')]({'where':{'id':_0x290e70['params']['id']}})['then'](handleEntityNotFound(_0x5051d9,null))[_0xa870('0x3e')](function(_0x204e77){if(_0x204e77){_0x2cc996=_0x204e77;_0x460e30[_0xa870('0x2b')]=_[_0xa870('0x2e')](db[_0xa870('0x4b')][_0xa870('0x27')]);_0x460e30[_0xa870('0x2d')]=_[_0xa870('0x2e')](_0x290e70[_0xa870('0x2d')]);_0x460e30['filters']=_['intersection'](_0x460e30[_0xa870('0x2b')],_0x460e30[_0xa870('0x2d')]);_0xf4db07['attributes']=_['intersection'](_0x460e30[_0xa870('0x2b')],qs[_0xa870('0x32')](_0x290e70['query']['fields']));_0xf4db07['attributes']=_0xf4db07[_0xa870('0x31')][_0xa870('0x33')]?_0xf4db07[_0xa870('0x31')]:_0x460e30[_0xa870('0x2b')];_0xf4db07[_0xa870('0x37')]=qs[_0xa870('0x48')](_0x290e70[_0xa870('0x2d')][_0xa870('0x48')]);_0xf4db07[_0xa870('0x38')]=qs['filters'](_['pick'](_0x290e70['query'],_0x460e30[_0xa870('0x2f')]));if(_0x290e70[_0xa870('0x2d')][_0xa870('0x3a')]){_0xf4db07[_0xa870('0x38')]=_[_0xa870('0x3b')](_0xf4db07[_0xa870('0x38')],{'$or':_[_0xa870('0x2c')](_0xf4db07[_0xa870('0x31')],function(_0x1267e3){var _0x5b38d5={};_0x5b38d5[_0x1267e3]={'$like':'%'+_0x290e70[_0xa870('0x2d')][_0xa870('0x3a')]+'%'};return _0x5b38d5;})});}_0xf4db07=_[_0xa870('0x3b')]({},_0xf4db07,_0x290e70[_0xa870('0x3d')]);return _0x2cc996[_0xa870('0x49')](_0xf4db07);}})[_0xa870('0x3e')](function(_0x196c6e){if(_0x196c6e){_0x3cdb82=_0x196c6e['length'];if(!_0x290e70[_0xa870('0x2d')][_0xa870('0x34')](_0xa870('0x35'))){_0xf4db07['limit']=qs[_0xa870('0x36')](_0x290e70['query'][_0xa870('0x36')]);_0xf4db07[_0xa870('0x18')]=qs[_0xa870('0x18')](_0x290e70[_0xa870('0x2d')][_0xa870('0x18')]);}return _0x2cc996[_0xa870('0x49')](_0xf4db07);}})[_0xa870('0x3e')](function(_0x497a48){if(_0x497a48){return _0x497a48?{'count':_0x3cdb82,'rows':_0x497a48}:null;}})['then'](respondWithResult(_0x5051d9,null))[_0xa870('0x41')](handleError(_0x5051d9,null));};exports[_0xa870('0x4c')]=function(_0x2969d8,_0x2bb9fe,_0x5a9b2a){var _0x2ab5d3={};var _0x10fa44={};var _0x28c907;var _0x4ec0ca;return db[_0xa870('0x26')][_0xa870('0x4a')]({'where':{'id':_0x2969d8[_0xa870('0x46')]['id']}})['then'](handleEntityNotFound(_0x2bb9fe,null))[_0xa870('0x3e')](function(_0x5bc060){if(_0x5bc060){_0x28c907=_0x5bc060;_0x10fa44[_0xa870('0x2b')]=_['keys'](db[_0xa870('0x4b')][_0xa870('0x27')]);_0x10fa44['query']=_[_0xa870('0x2e')](_0x2969d8[_0xa870('0x2d')]);_0x10fa44[_0xa870('0x2f')]=_[_0xa870('0x30')](_0x10fa44[_0xa870('0x2b')],_0x10fa44['query']);_0x2ab5d3[_0xa870('0x31')]=_['intersection'](_0x10fa44['model'],qs[_0xa870('0x32')](_0x2969d8[_0xa870('0x2d')][_0xa870('0x32')]));_0x2ab5d3[_0xa870('0x31')]=_0x2ab5d3[_0xa870('0x31')][_0xa870('0x33')]?_0x2ab5d3['attributes']:_0x10fa44[_0xa870('0x2b')];_0x2ab5d3[_0xa870('0x37')]=qs[_0xa870('0x48')](_0x2969d8[_0xa870('0x2d')][_0xa870('0x48')]);_0x2ab5d3[_0xa870('0x38')]=qs['filters'](_[_0xa870('0x39')](_0x2969d8[_0xa870('0x2d')],_0x10fa44['filters']));if(_0x2969d8['query']['filter']){_0x2ab5d3[_0xa870('0x38')]=_[_0xa870('0x3b')](_0x2ab5d3['where'],{'$or':_[_0xa870('0x2c')](_0x2ab5d3[_0xa870('0x31')],function(_0x5efaf1){var _0x2eab5d={};_0x2eab5d[_0x5efaf1]={'$like':'%'+_0x2969d8[_0xa870('0x2d')][_0xa870('0x3a')]+'%'};return _0x2eab5d;})});}_0x2ab5d3=_[_0xa870('0x3b')]({},_0x2ab5d3,_0x2969d8[_0xa870('0x3d')]);return _0x28c907[_0xa870('0x4c')](_0x2ab5d3);}})['then'](function(_0x351679){if(_0x351679){_0x4ec0ca=_0x351679['length'];if(!_0x2969d8[_0xa870('0x2d')][_0xa870('0x34')]('nolimit')){_0x2ab5d3[_0xa870('0x36')]=qs['limit'](_0x2969d8[_0xa870('0x2d')][_0xa870('0x36')]);_0x2ab5d3[_0xa870('0x18')]=qs['offset'](_0x2969d8['query'][_0xa870('0x18')]);}return _0x28c907[_0xa870('0x4c')](_0x2ab5d3);}})[_0xa870('0x3e')](function(_0x58286a){if(_0x58286a){return _0x58286a?{'count':_0x4ec0ca,'rows':_0x58286a}:null;}})[_0xa870('0x3e')](respondWithResult(_0x2bb9fe,null))['catch'](handleError(_0x2bb9fe,null));};exports[_0xa870('0x4d')]=function(_0x2b5800,_0xb46b87,_0x522237){var _0x494991={};var _0x239468={};var _0x1dd610;var _0xd10078;return db['FreshdeskConfiguration'][_0xa870('0x4a')]({'where':{'id':_0x2b5800['params']['id']}})['then'](handleEntityNotFound(_0xb46b87,null))[_0xa870('0x3e')](function(_0x4dddcb){if(_0x4dddcb){_0x1dd610=_0x4dddcb;_0x239468['model']=_[_0xa870('0x2e')](db['Tag'][_0xa870('0x27')]);_0x239468[_0xa870('0x2d')]=_[_0xa870('0x2e')](_0x2b5800['query']);_0x239468[_0xa870('0x2f')]=_[_0xa870('0x30')](_0x239468[_0xa870('0x2b')],_0x239468['query']);_0x494991[_0xa870('0x31')]=_[_0xa870('0x30')](_0x239468[_0xa870('0x2b')],qs['fields'](_0x2b5800['query'][_0xa870('0x32')]));_0x494991[_0xa870('0x31')]=_0x494991['attributes'][_0xa870('0x33')]?_0x494991[_0xa870('0x31')]:_0x239468['model'];_0x494991[_0xa870('0x37')]=qs[_0xa870('0x48')](_0x2b5800[_0xa870('0x2d')][_0xa870('0x48')]);_0x494991[_0xa870('0x38')]=qs[_0xa870('0x2f')](_[_0xa870('0x39')](_0x2b5800[_0xa870('0x2d')],_0x239468[_0xa870('0x2f')]));if(_0x2b5800[_0xa870('0x2d')][_0xa870('0x3a')]){_0x494991['where']=_[_0xa870('0x3b')](_0x494991[_0xa870('0x38')],{'$or':_[_0xa870('0x2c')](_0x494991['attributes'],function(_0x35042a){var _0x56315e={};_0x56315e[_0x35042a]={'$like':'%'+_0x2b5800[_0xa870('0x2d')][_0xa870('0x3a')]+'%'};return _0x56315e;})});}_0x494991=_[_0xa870('0x3b')]({},_0x494991,_0x2b5800['options']);return _0x1dd610[_0xa870('0x4d')](_0x494991);}})[_0xa870('0x3e')](function(_0x2f9636){if(_0x2f9636){_0xd10078=_0x2f9636[_0xa870('0x33')];if(!_0x2b5800[_0xa870('0x2d')]['hasOwnProperty'](_0xa870('0x35'))){_0x494991[_0xa870('0x36')]=qs['limit'](_0x2b5800[_0xa870('0x2d')]['limit']);_0x494991['offset']=qs[_0xa870('0x18')](_0x2b5800[_0xa870('0x2d')][_0xa870('0x18')]);}return _0x1dd610[_0xa870('0x4d')](_0x494991);}})['then'](function(_0x18951c){if(_0x18951c){return _0x18951c?{'count':_0xd10078,'rows':_0x18951c}:null;}})[_0xa870('0x3e')](respondWithResult(_0xb46b87,null))[_0xa870('0x41')](handleError(_0xb46b87,null));};exports[_0xa870('0x4e')]=function(_0x21df6,_0x4b5f54,_0x3528b6){if(_0x21df6[_0xa870('0x45')]['id']){delete _0x21df6[_0xa870('0x45')]['id'];}return db[_0xa870('0x26')][_0xa870('0x4a')]({'where':{'id':_0x21df6[_0xa870('0x46')]['id']}})[_0xa870('0x3e')](handleEntityNotFound(_0x4b5f54,null))[_0xa870('0x3e')](function(_0x14ae87){if(_0x14ae87){return _0x14ae87[_0xa870('0x4e')](_0x21df6[_0xa870('0x45')][_0xa870('0x4f')]||[]);}return null;})[_0xa870('0x3e')](respondWithResult(_0x4b5f54,null))['catch'](handleError(_0x4b5f54,null));};
\ No newline at end of file
+var _0x96ef=['rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','includeAll','include','FreshdeskConfiguration','catch','params','length','merge','options','find','create','body','findOne','FreshdeskField','order','filter','getSubjects','getDescriptions','Tag','getTags','setTags','ids','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','index','map'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x96ef,0x1af));var _0xf96e=function(_0xe88a94,_0x386551){_0xe88a94=_0xe88a94-0x0;var _0xa5148b=_0x96ef[_0xe88a94];return _0xa5148b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf96e('0x0'));var zipdir=require(_0xf96e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf96e('0x2'));var moment=require(_0xf96e('0x3'));var BPromise=require(_0xf96e('0x4'));var Mustache=require(_0xf96e('0x5'));var util=require(_0xf96e('0x6'));var path=require('path');var sox=require(_0xf96e('0x7'));var csv=require(_0xf96e('0x8'));var ejs=require(_0xf96e('0x9'));var fs=require('fs');var fs_extra=require(_0xf96e('0xa'));var _=require(_0xf96e('0xb'));var squel=require(_0xf96e('0xc'));var crypto=require(_0xf96e('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf96e('0x8'));var querystring=require(_0xf96e('0xe'));var Papa=require(_0xf96e('0xf'));var Redis=require(_0xf96e('0x10'));var authService=require(_0xf96e('0x11'));var qs=require(_0xf96e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf96e('0x13'))(_0xf96e('0x14'));var utils=require(_0xf96e('0x15'));var config=require(_0xf96e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf96e('0x17'))['db'];function respondWithStatusCode(_0x39f239,_0x58b459){_0x58b459=_0x58b459||0xcc;return function(_0x4b8143){if(_0x4b8143){return _0x39f239[_0xf96e('0x18')](_0x58b459);}return _0x39f239[_0xf96e('0x19')](_0x58b459)['end']();};}function respondWithResult(_0x2604ca,_0x569be0){_0x569be0=_0x569be0||0xc8;return function(_0x603350){if(_0x603350){return _0x2604ca[_0xf96e('0x19')](_0x569be0)[_0xf96e('0x1a')](_0x603350);}};}function respondWithFilteredResult(_0x619e1e,_0x392842){return function(_0x46fe63){if(_0x46fe63){var _0x3f541b=typeof _0x392842[_0xf96e('0x1b')]===_0xf96e('0x1c')&&typeof _0x392842[_0xf96e('0x1d')]==='undefined';var _0x2f286b=_0x46fe63[_0xf96e('0x1e')];var _0x1bdb88=_0x3f541b?0x0:_0x392842[_0xf96e('0x1b')];var _0xac287e=_0x3f541b?_0x46fe63[_0xf96e('0x1e')]:_0x392842[_0xf96e('0x1b')]+_0x392842['limit'];var _0x3c5fbf;if(_0xac287e>=_0x2f286b){_0xac287e=_0x2f286b;_0x3c5fbf=0xc8;}else{_0x3c5fbf=0xce;}_0x619e1e[_0xf96e('0x19')](_0x3c5fbf);return _0x619e1e[_0xf96e('0x1f')](_0xf96e('0x20'),_0x1bdb88+'-'+_0xac287e+'/'+_0x2f286b)[_0xf96e('0x1a')](_0x46fe63);}return null;};}function patchUpdates(_0x4cc3fd){return function(_0x3ad743){try{jsonpatch[_0xf96e('0x21')](_0x3ad743,_0x4cc3fd,!![]);}catch(_0x43b240){return BPromise[_0xf96e('0x22')](_0x43b240);}return _0x3ad743[_0xf96e('0x23')]();};}function saveUpdates(_0x21578d,_0x41fe04){return function(_0x53cc12){if(_0x53cc12){return _0x53cc12[_0xf96e('0x24')](_0x21578d)[_0xf96e('0x25')](function(_0x5cd02f){return _0x5cd02f;});}return null;};}function removeEntity(_0x382edc,_0xac3948){return function(_0x689e47){if(_0x689e47){return _0x689e47['destroy']()[_0xf96e('0x25')](function(){_0x382edc[_0xf96e('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x273e6a,_0x18d56b){return function(_0x141a4e){if(!_0x141a4e){_0x273e6a['sendStatus'](0x194);}return _0x141a4e;};}function handleError(_0x1e9730,_0x81d703){_0x81d703=_0x81d703||0x1f4;return function(_0x98c65){logger[_0xf96e('0x26')](_0x98c65['stack']);if(_0x98c65[_0xf96e('0x27')]){delete _0x98c65[_0xf96e('0x27')];}_0x1e9730[_0xf96e('0x19')](_0x81d703)[_0xf96e('0x28')](_0x98c65);};}exports[_0xf96e('0x29')]=function(_0x17a449,_0x1569d9){var _0x5e9f23={},_0x3d7ada={},_0x42fb6b={'count':0x0,'rows':[]};var _0x28a55d=_[_0xf96e('0x2a')](db['FreshdeskConfiguration'][_0xf96e('0x2b')],function(_0x371fba){return{'name':_0x371fba['fieldName'],'type':_0x371fba[_0xf96e('0x2c')][_0xf96e('0x2d')]};});_0x3d7ada['model']=_[_0xf96e('0x2a')](_0x28a55d,_0xf96e('0x27'));_0x3d7ada[_0xf96e('0x2e')]=_[_0xf96e('0x2f')](_0x17a449[_0xf96e('0x2e')]);_0x3d7ada[_0xf96e('0x30')]=_[_0xf96e('0x31')](_0x3d7ada[_0xf96e('0x32')],_0x3d7ada[_0xf96e('0x2e')]);_0x5e9f23[_0xf96e('0x33')]=_['intersection'](_0x3d7ada['model'],qs[_0xf96e('0x34')](_0x17a449['query'][_0xf96e('0x34')]));_0x5e9f23['attributes']=_0x5e9f23[_0xf96e('0x33')]['length']?_0x5e9f23['attributes']:_0x3d7ada[_0xf96e('0x32')];if(!_0x17a449['query'][_0xf96e('0x35')](_0xf96e('0x36'))){_0x5e9f23[_0xf96e('0x1d')]=qs[_0xf96e('0x1d')](_0x17a449[_0xf96e('0x2e')][_0xf96e('0x1d')]);_0x5e9f23['offset']=qs[_0xf96e('0x1b')](_0x17a449['query'][_0xf96e('0x1b')]);}_0x5e9f23['order']=qs[_0xf96e('0x37')](_0x17a449['query'][_0xf96e('0x37')]);_0x5e9f23[_0xf96e('0x38')]=qs[_0xf96e('0x30')](_[_0xf96e('0x39')](_0x17a449[_0xf96e('0x2e')],_0x3d7ada['filters']),_0x28a55d);if(_0x17a449[_0xf96e('0x2e')]['filter']){_0x5e9f23[_0xf96e('0x38')]=_['merge'](_0x5e9f23['where'],{'$or':_[_0xf96e('0x2a')](_0x28a55d,function(_0x22e813){if(_0x22e813['type']!=='VIRTUAL'){var _0x112a3f={};_0x112a3f[_0x22e813[_0xf96e('0x27')]]={'$like':'%'+_0x17a449[_0xf96e('0x2e')]['filter']+'%'};return _0x112a3f;}})});}_0x5e9f23=_['merge']({},_0x5e9f23,_0x17a449['options']);var _0x27565e={'where':_0x5e9f23['where']};return db['FreshdeskConfiguration'][_0xf96e('0x1e')](_0x27565e)['then'](function(_0x1f930a){_0x42fb6b[_0xf96e('0x1e')]=_0x1f930a;if(_0x17a449[_0xf96e('0x2e')][_0xf96e('0x3a')]){_0x5e9f23[_0xf96e('0x3b')]=[{'all':!![]}];}return db[_0xf96e('0x3c')]['findAll'](_0x5e9f23);})[_0xf96e('0x25')](function(_0x478456){_0x42fb6b['rows']=_0x478456;return _0x42fb6b;})['then'](respondWithFilteredResult(_0x1569d9,_0x5e9f23))[_0xf96e('0x3d')](handleError(_0x1569d9,null));};exports['show']=function(_0x5977af,_0x4235a1){var _0x283c10={'raw':![],'where':{'id':_0x5977af[_0xf96e('0x3e')]['id']}},_0x150474={};_0x150474[_0xf96e('0x32')]=_[_0xf96e('0x2f')](db[_0xf96e('0x3c')][_0xf96e('0x2b')]);_0x150474[_0xf96e('0x2e')]=_['keys'](_0x5977af[_0xf96e('0x2e')]);_0x150474[_0xf96e('0x30')]=_[_0xf96e('0x31')](_0x150474[_0xf96e('0x32')],_0x150474[_0xf96e('0x2e')]);_0x283c10[_0xf96e('0x33')]=_[_0xf96e('0x31')](_0x150474[_0xf96e('0x32')],qs['fields'](_0x5977af[_0xf96e('0x2e')][_0xf96e('0x34')]));_0x283c10[_0xf96e('0x33')]=_0x283c10[_0xf96e('0x33')][_0xf96e('0x3f')]?_0x283c10['attributes']:_0x150474['model'];if(_0x5977af[_0xf96e('0x2e')][_0xf96e('0x3a')]){_0x283c10[_0xf96e('0x3b')]=[{'all':!![]}];}_0x283c10=_[_0xf96e('0x40')]({},_0x283c10,_0x5977af[_0xf96e('0x41')]);return db['FreshdeskConfiguration'][_0xf96e('0x42')](_0x283c10)[_0xf96e('0x25')](handleEntityNotFound(_0x4235a1,null))[_0xf96e('0x25')](respondWithResult(_0x4235a1,null))[_0xf96e('0x3d')](handleError(_0x4235a1,null));};exports[_0xf96e('0x43')]=function(_0x9bd53a,_0x503d41){return db[_0xf96e('0x3c')][_0xf96e('0x43')](_0x9bd53a[_0xf96e('0x44')],{})[_0xf96e('0x25')](respondWithResult(_0x503d41,0xc9))[_0xf96e('0x3d')](handleError(_0x503d41,null));};exports[_0xf96e('0x24')]=function(_0x255501,_0x654fa4){if(_0x255501['body']['id']){delete _0x255501[_0xf96e('0x44')]['id'];}return db['FreshdeskConfiguration']['find']({'where':{'id':_0x255501[_0xf96e('0x3e')]['id']}})[_0xf96e('0x25')](handleEntityNotFound(_0x654fa4,null))[_0xf96e('0x25')](saveUpdates(_0x255501[_0xf96e('0x44')],null))[_0xf96e('0x25')](respondWithResult(_0x654fa4,null))['catch'](handleError(_0x654fa4,null));};exports['destroy']=function(_0xea5f8f,_0x5e553b){return db[_0xf96e('0x3c')][_0xf96e('0x42')]({'where':{'id':_0xea5f8f[_0xf96e('0x3e')]['id']}})[_0xf96e('0x25')](handleEntityNotFound(_0x5e553b,null))[_0xf96e('0x25')](removeEntity(_0x5e553b,null))['catch'](handleError(_0x5e553b,null));};exports['getFields']=function(_0x20a6fd,_0x5a6208,_0x22090e){var _0x535df6={};var _0x1ce39b={};var _0x576672;var _0x5bee35;return db[_0xf96e('0x3c')][_0xf96e('0x45')]({'where':{'id':_0x20a6fd[_0xf96e('0x3e')]['id']}})[_0xf96e('0x25')](handleEntityNotFound(_0x5a6208,null))[_0xf96e('0x25')](function(_0x29abca){if(_0x29abca){_0x576672=_0x29abca;_0x1ce39b[_0xf96e('0x32')]=_[_0xf96e('0x2f')](db[_0xf96e('0x46')]['rawAttributes']);_0x1ce39b[_0xf96e('0x2e')]=_[_0xf96e('0x2f')](_0x20a6fd[_0xf96e('0x2e')]);_0x1ce39b['filters']=_[_0xf96e('0x31')](_0x1ce39b[_0xf96e('0x32')],_0x1ce39b[_0xf96e('0x2e')]);_0x535df6[_0xf96e('0x33')]=_[_0xf96e('0x31')](_0x1ce39b['model'],qs[_0xf96e('0x34')](_0x20a6fd[_0xf96e('0x2e')]['fields']));_0x535df6[_0xf96e('0x33')]=_0x535df6[_0xf96e('0x33')][_0xf96e('0x3f')]?_0x535df6[_0xf96e('0x33')]:_0x1ce39b['model'];_0x535df6[_0xf96e('0x47')]=qs[_0xf96e('0x37')](_0x20a6fd['query'][_0xf96e('0x37')]);_0x535df6[_0xf96e('0x38')]=qs[_0xf96e('0x30')](_[_0xf96e('0x39')](_0x20a6fd[_0xf96e('0x2e')],_0x1ce39b[_0xf96e('0x30')]));if(_0x20a6fd[_0xf96e('0x2e')]['filter']){_0x535df6[_0xf96e('0x38')]=_['merge'](_0x535df6['where'],{'$or':_['map'](_0x535df6[_0xf96e('0x33')],function(_0xaa7e8b){var _0x4483cf={};_0x4483cf[_0xaa7e8b]={'$like':'%'+_0x20a6fd[_0xf96e('0x2e')][_0xf96e('0x48')]+'%'};return _0x4483cf;})});}_0x535df6=_['merge']({},_0x535df6,_0x20a6fd['options']);return _0x576672['getFields'](_0x535df6);}})[_0xf96e('0x25')](function(_0xdd688d){if(_0xdd688d){_0x5bee35=_0xdd688d[_0xf96e('0x3f')];if(!_0x20a6fd['query']['hasOwnProperty']('nolimit')){_0x535df6[_0xf96e('0x1d')]=qs[_0xf96e('0x1d')](_0x20a6fd['query'][_0xf96e('0x1d')]);_0x535df6[_0xf96e('0x1b')]=qs[_0xf96e('0x1b')](_0x20a6fd['query']['offset']);}return _0x576672['getFields'](_0x535df6);}})[_0xf96e('0x25')](function(_0x57c7a9){if(_0x57c7a9){return _0x57c7a9?{'count':_0x5bee35,'rows':_0x57c7a9}:null;}})[_0xf96e('0x25')](respondWithResult(_0x5a6208,null))[_0xf96e('0x3d')](handleError(_0x5a6208,null));};exports[_0xf96e('0x49')]=function(_0x4f1c2f,_0x29a9a2,_0x1d3eb2){var _0x1178a2={};var _0x32751a={};var _0x19b875;var _0x2d558c;return db['FreshdeskConfiguration'][_0xf96e('0x45')]({'where':{'id':_0x4f1c2f[_0xf96e('0x3e')]['id']}})['then'](handleEntityNotFound(_0x29a9a2,null))[_0xf96e('0x25')](function(_0x13f6c0){if(_0x13f6c0){_0x19b875=_0x13f6c0;_0x32751a[_0xf96e('0x32')]=_[_0xf96e('0x2f')](db[_0xf96e('0x46')][_0xf96e('0x2b')]);_0x32751a[_0xf96e('0x2e')]=_[_0xf96e('0x2f')](_0x4f1c2f['query']);_0x32751a['filters']=_[_0xf96e('0x31')](_0x32751a[_0xf96e('0x32')],_0x32751a['query']);_0x1178a2[_0xf96e('0x33')]=_[_0xf96e('0x31')](_0x32751a[_0xf96e('0x32')],qs['fields'](_0x4f1c2f[_0xf96e('0x2e')]['fields']));_0x1178a2[_0xf96e('0x33')]=_0x1178a2[_0xf96e('0x33')]['length']?_0x1178a2['attributes']:_0x32751a[_0xf96e('0x32')];_0x1178a2[_0xf96e('0x47')]=qs['sort'](_0x4f1c2f[_0xf96e('0x2e')][_0xf96e('0x37')]);_0x1178a2['where']=qs['filters'](_[_0xf96e('0x39')](_0x4f1c2f[_0xf96e('0x2e')],_0x32751a['filters']));if(_0x4f1c2f[_0xf96e('0x2e')][_0xf96e('0x48')]){_0x1178a2[_0xf96e('0x38')]=_[_0xf96e('0x40')](_0x1178a2[_0xf96e('0x38')],{'$or':_[_0xf96e('0x2a')](_0x1178a2[_0xf96e('0x33')],function(_0x4f8fe9){var _0x3cc027={};_0x3cc027[_0x4f8fe9]={'$like':'%'+_0x4f1c2f[_0xf96e('0x2e')][_0xf96e('0x48')]+'%'};return _0x3cc027;})});}_0x1178a2=_[_0xf96e('0x40')]({},_0x1178a2,_0x4f1c2f[_0xf96e('0x41')]);return _0x19b875[_0xf96e('0x49')](_0x1178a2);}})[_0xf96e('0x25')](function(_0x36ef9b){if(_0x36ef9b){_0x2d558c=_0x36ef9b[_0xf96e('0x3f')];if(!_0x4f1c2f['query'][_0xf96e('0x35')](_0xf96e('0x36'))){_0x1178a2['limit']=qs[_0xf96e('0x1d')](_0x4f1c2f[_0xf96e('0x2e')][_0xf96e('0x1d')]);_0x1178a2[_0xf96e('0x1b')]=qs[_0xf96e('0x1b')](_0x4f1c2f[_0xf96e('0x2e')][_0xf96e('0x1b')]);}return _0x19b875['getSubjects'](_0x1178a2);}})[_0xf96e('0x25')](function(_0x1c659c){if(_0x1c659c){return _0x1c659c?{'count':_0x2d558c,'rows':_0x1c659c}:null;}})[_0xf96e('0x25')](respondWithResult(_0x29a9a2,null))[_0xf96e('0x3d')](handleError(_0x29a9a2,null));};exports[_0xf96e('0x4a')]=function(_0x945ed,_0x58502c,_0x2a82f6){var _0x187d6e={};var _0x2ce170={};var _0x510c3d;var _0x4603d0;return db[_0xf96e('0x3c')]['findOne']({'where':{'id':_0x945ed[_0xf96e('0x3e')]['id']}})[_0xf96e('0x25')](handleEntityNotFound(_0x58502c,null))[_0xf96e('0x25')](function(_0xf80e91){if(_0xf80e91){_0x510c3d=_0xf80e91;_0x2ce170[_0xf96e('0x32')]=_[_0xf96e('0x2f')](db[_0xf96e('0x46')][_0xf96e('0x2b')]);_0x2ce170[_0xf96e('0x2e')]=_[_0xf96e('0x2f')](_0x945ed[_0xf96e('0x2e')]);_0x2ce170[_0xf96e('0x30')]=_[_0xf96e('0x31')](_0x2ce170[_0xf96e('0x32')],_0x2ce170['query']);_0x187d6e[_0xf96e('0x33')]=_['intersection'](_0x2ce170[_0xf96e('0x32')],qs['fields'](_0x945ed[_0xf96e('0x2e')][_0xf96e('0x34')]));_0x187d6e[_0xf96e('0x33')]=_0x187d6e[_0xf96e('0x33')]['length']?_0x187d6e['attributes']:_0x2ce170[_0xf96e('0x32')];_0x187d6e['order']=qs['sort'](_0x945ed[_0xf96e('0x2e')][_0xf96e('0x37')]);_0x187d6e[_0xf96e('0x38')]=qs[_0xf96e('0x30')](_[_0xf96e('0x39')](_0x945ed[_0xf96e('0x2e')],_0x2ce170[_0xf96e('0x30')]));if(_0x945ed[_0xf96e('0x2e')][_0xf96e('0x48')]){_0x187d6e[_0xf96e('0x38')]=_[_0xf96e('0x40')](_0x187d6e['where'],{'$or':_[_0xf96e('0x2a')](_0x187d6e['attributes'],function(_0x47b41c){var _0x357ac7={};_0x357ac7[_0x47b41c]={'$like':'%'+_0x945ed['query'][_0xf96e('0x48')]+'%'};return _0x357ac7;})});}_0x187d6e=_[_0xf96e('0x40')]({},_0x187d6e,_0x945ed[_0xf96e('0x41')]);return _0x510c3d[_0xf96e('0x4a')](_0x187d6e);}})['then'](function(_0xd71cf){if(_0xd71cf){_0x4603d0=_0xd71cf[_0xf96e('0x3f')];if(!_0x945ed[_0xf96e('0x2e')][_0xf96e('0x35')]('nolimit')){_0x187d6e['limit']=qs[_0xf96e('0x1d')](_0x945ed[_0xf96e('0x2e')][_0xf96e('0x1d')]);_0x187d6e['offset']=qs[_0xf96e('0x1b')](_0x945ed[_0xf96e('0x2e')][_0xf96e('0x1b')]);}return _0x510c3d[_0xf96e('0x4a')](_0x187d6e);}})[_0xf96e('0x25')](function(_0x434abd){if(_0x434abd){return _0x434abd?{'count':_0x4603d0,'rows':_0x434abd}:null;}})[_0xf96e('0x25')](respondWithResult(_0x58502c,null))['catch'](handleError(_0x58502c,null));};exports['getTags']=function(_0x49eb48,_0x4fe37c,_0x3a3d09){var _0x1c28ee={};var _0x529322={};var _0x1ab33f;var _0x451665;return db[_0xf96e('0x3c')][_0xf96e('0x45')]({'where':{'id':_0x49eb48[_0xf96e('0x3e')]['id']}})[_0xf96e('0x25')](handleEntityNotFound(_0x4fe37c,null))['then'](function(_0x68acd){if(_0x68acd){_0x1ab33f=_0x68acd;_0x529322[_0xf96e('0x32')]=_[_0xf96e('0x2f')](db[_0xf96e('0x4b')]['rawAttributes']);_0x529322[_0xf96e('0x2e')]=_[_0xf96e('0x2f')](_0x49eb48[_0xf96e('0x2e')]);_0x529322['filters']=_[_0xf96e('0x31')](_0x529322[_0xf96e('0x32')],_0x529322[_0xf96e('0x2e')]);_0x1c28ee[_0xf96e('0x33')]=_['intersection'](_0x529322[_0xf96e('0x32')],qs[_0xf96e('0x34')](_0x49eb48[_0xf96e('0x2e')][_0xf96e('0x34')]));_0x1c28ee[_0xf96e('0x33')]=_0x1c28ee[_0xf96e('0x33')][_0xf96e('0x3f')]?_0x1c28ee[_0xf96e('0x33')]:_0x529322[_0xf96e('0x32')];_0x1c28ee[_0xf96e('0x47')]=qs[_0xf96e('0x37')](_0x49eb48[_0xf96e('0x2e')][_0xf96e('0x37')]);_0x1c28ee[_0xf96e('0x38')]=qs[_0xf96e('0x30')](_[_0xf96e('0x39')](_0x49eb48[_0xf96e('0x2e')],_0x529322[_0xf96e('0x30')]));if(_0x49eb48['query']['filter']){_0x1c28ee['where']=_[_0xf96e('0x40')](_0x1c28ee[_0xf96e('0x38')],{'$or':_[_0xf96e('0x2a')](_0x1c28ee[_0xf96e('0x33')],function(_0x360a0b){var _0x13fa48={};_0x13fa48[_0x360a0b]={'$like':'%'+_0x49eb48[_0xf96e('0x2e')][_0xf96e('0x48')]+'%'};return _0x13fa48;})});}_0x1c28ee=_['merge']({},_0x1c28ee,_0x49eb48[_0xf96e('0x41')]);return _0x1ab33f[_0xf96e('0x4c')](_0x1c28ee);}})[_0xf96e('0x25')](function(_0x5c5b59){if(_0x5c5b59){_0x451665=_0x5c5b59[_0xf96e('0x3f')];if(!_0x49eb48[_0xf96e('0x2e')]['hasOwnProperty'](_0xf96e('0x36'))){_0x1c28ee['limit']=qs['limit'](_0x49eb48[_0xf96e('0x2e')][_0xf96e('0x1d')]);_0x1c28ee[_0xf96e('0x1b')]=qs[_0xf96e('0x1b')](_0x49eb48['query']['offset']);}return _0x1ab33f['getTags'](_0x1c28ee);}})[_0xf96e('0x25')](function(_0x12e608){if(_0x12e608){return _0x12e608?{'count':_0x451665,'rows':_0x12e608}:null;}})[_0xf96e('0x25')](respondWithResult(_0x4fe37c,null))[_0xf96e('0x3d')](handleError(_0x4fe37c,null));};exports[_0xf96e('0x4d')]=function(_0x44efb5,_0x1328ca,_0x5c3f48){if(_0x44efb5[_0xf96e('0x44')]['id']){delete _0x44efb5[_0xf96e('0x44')]['id'];}return db[_0xf96e('0x3c')][_0xf96e('0x45')]({'where':{'id':_0x44efb5[_0xf96e('0x3e')]['id']}})[_0xf96e('0x25')](handleEntityNotFound(_0x1328ca,null))[_0xf96e('0x25')](function(_0x435edb){if(_0x435edb){return _0x435edb[_0xf96e('0x4d')](_0x44efb5[_0xf96e('0x44')][_0xf96e('0x4e')]||[]);}return null;})['then'](respondWithResult(_0x1328ca,null))[_0xf96e('0x3d')](handleError(_0x1328ca,null));};
\ No newline at end of file
index 25153af..a38f972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0146=['rimraf','../../config/environment','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x500ec4,_0x17b332){var _0x333786=function(_0x1377c0){while(--_0x1377c0){_0x500ec4['push'](_0x500ec4['shift']());}};_0x333786(++_0x17b332);}(_0x0146,0xec));var _0x6014=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0x0146[_0x2b5513];return _0x578fd2;};'use strict';var _=require(_0x6014('0x0'));var util=require(_0x6014('0x1'));var logger=require(_0x6014('0x2'))(_0x6014('0x3'));var moment=require('moment');var BPromise=require(_0x6014('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6014('0x5'));var rimraf=require(_0x6014('0x6'));var config=require(_0x6014('0x7'));var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x5625a7,_0x49d32c){return _0x5625a7[_0x6014('0x8')](_0x6014('0x9'),attributes,{'tableName':_0x6014('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd88=['rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x6e3410,_0x5365ca){var _0x1a8b7a=function(_0x5e7fed){while(--_0x5e7fed){_0x6e3410['push'](_0x6e3410['shift']());}};_0x1a8b7a(++_0x5365ca);}(_0xbd88,0x1a6));var _0x8bd8=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xbd88[_0x3e5086];return _0xfeb102;};'use strict';var _=require(_0x8bd8('0x0'));var util=require(_0x8bd8('0x1'));var logger=require(_0x8bd8('0x2'))(_0x8bd8('0x3'));var moment=require('moment');var BPromise=require(_0x8bd8('0x4'));var rp=require(_0x8bd8('0x5'));var fs=require('fs');var path=require(_0x8bd8('0x6'));var rimraf=require(_0x8bd8('0x7'));var config=require(_0x8bd8('0x8'));var attributes=require(_0x8bd8('0x9'));module[_0x8bd8('0xa')]=function(_0x5a03d4,_0x27d102){return _0x5a03d4['define']('FreshdeskConfiguration',attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b7bb3fe..911cafd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3335=['ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird'];(function(_0x3ac99c,_0x219e27){var _0x57553c=function(_0x5e6dc3){while(--_0x5e6dc3){_0x3ac99c['push'](_0x3ac99c['shift']());}};_0x57553c(++_0x219e27);}(_0x3335,0x1a1));var _0x5333=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x3335[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0x5333('0x0'));var util=require(_0x5333('0x1'));var moment=require('moment');var BPromise=require(_0x5333('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5333('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5333('0x4'));var logger=require(_0x5333('0x5'))(_0x5333('0x6'));var config=require('../../config/environment');var jayson=require(_0x5333('0x7'));var client=jayson[_0x5333('0x8')][_0x5333('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3e818d,_0x4df266,_0x5a07c3){return new BPromise(function(_0x5ad6d6,_0x4a04d3){return client[_0x5333('0xa')](_0x3e818d,_0x5a07c3)[_0x5333('0xb')](function(_0x414c54){logger[_0x5333('0xc')](_0x5333('0xd'),_0x4df266,_0x5333('0xe'));logger['debug'](_0x5333('0xf'),_0x4df266,'request\x20sent',JSON[_0x5333('0x10')](_0x414c54));if(_0x414c54[_0x5333('0x11')]){if(_0x414c54[_0x5333('0x11')]['code']===0x1f4){logger[_0x5333('0x11')](_0x5333('0xd'),_0x4df266,_0x414c54[_0x5333('0x11')][_0x5333('0x12')]);return _0x4a04d3(_0x414c54[_0x5333('0x11')]['message']);}logger[_0x5333('0x11')](_0x5333('0xd'),_0x4df266,_0x414c54[_0x5333('0x11')]['message']);return _0x5ad6d6(_0x414c54[_0x5333('0x11')][_0x5333('0x12')]);}else{logger['info'](_0x5333('0xd'),_0x4df266,_0x5333('0xe'));_0x5ad6d6(_0x414c54[_0x5333('0x13')][_0x5333('0x12')]);}})[_0x5333('0x14')](function(_0x5164c7){logger['error'](_0x5333('0xd'),_0x4df266,_0x5164c7);_0x4a04d3(_0x5164c7);});});}
\ No newline at end of file
+var _0x578c=['util','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x3a9a6a,_0x30e0b3){var _0x50cfde=function(_0x35bb0a){while(--_0x35bb0a){_0x3a9a6a['push'](_0x3a9a6a['shift']());}};_0x50cfde(++_0x30e0b3);}(_0x578c,0x1cb));var _0xc578=function(_0x4b81be,_0x936f1f){_0x4b81be=_0x4b81be-0x0;var _0x4bddf7=_0x578c[_0x4b81be];return _0x4bddf7;};'use strict';var _=require(_0xc578('0x0'));var util=require(_0xc578('0x1'));var moment=require('moment');var BPromise=require(_0xc578('0x2'));var rs=require(_0xc578('0x3'));var fs=require('fs');var Redis=require(_0xc578('0x4'));var db=require(_0xc578('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc578('0x6'));var config=require('../../config/environment');var jayson=require(_0xc578('0x7'));var client=jayson[_0xc578('0x8')][_0xc578('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1fc41c,_0x28328b,_0x1ecf62){return new BPromise(function(_0x6d9e9f,_0x3a9ef9){return client[_0xc578('0xa')](_0x1fc41c,_0x1ecf62)[_0xc578('0xb')](function(_0x4f965c){logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x28328b,'request\x20sent');logger[_0xc578('0xc')](_0xc578('0xd'),_0x28328b,_0xc578('0xe'),JSON[_0xc578('0xf')](_0x4f965c));if(_0x4f965c[_0xc578('0x10')]){if(_0x4f965c[_0xc578('0x10')][_0xc578('0x11')]===0x1f4){logger[_0xc578('0x10')](_0xc578('0x12'),_0x28328b,_0x4f965c[_0xc578('0x10')][_0xc578('0x13')]);return _0x3a9ef9(_0x4f965c['error'][_0xc578('0x13')]);}logger[_0xc578('0x10')](_0xc578('0x12'),_0x28328b,_0x4f965c['error'][_0xc578('0x13')]);return _0x6d9e9f(_0x4f965c[_0xc578('0x10')][_0xc578('0x13')]);}else{logger[_0xc578('0x14')](_0xc578('0x12'),_0x28328b,_0xc578('0xe'));_0x6d9e9f(_0x4f965c[_0xc578('0x15')][_0xc578('0x13')]);}})[_0xc578('0x16')](function(_0xc34008){logger[_0xc578('0x10')](_0xc578('0x12'),_0x28328b,_0xc34008);_0x3a9ef9(_0xc34008);});});}
\ No newline at end of file
index 58f6302..b425909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf08d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra'];(function(_0x52e9b8,_0x3b5d0c){var _0x248c4c=function(_0x2738c8){while(--_0x2738c8){_0x52e9b8['push'](_0x52e9b8['shift']());}};_0x248c4c(++_0x3b5d0c);}(_0xf08d,0xd4));var _0xdf08=function(_0xe56c11,_0x287e99){_0xe56c11=_0xe56c11-0x0;var _0x12f908=_0xf08d[_0xe56c11];return _0x12f908;};'use strict';var multer=require('multer');var util=require(_0xdf08('0x0'));var path=require('path');var timeout=require(_0xdf08('0x1'));var express=require(_0xdf08('0x2'));var router=express['Router']();var fs_extra=require(_0xdf08('0x3'));var auth=require(_0xdf08('0x4'));var interaction=require(_0xdf08('0x5'));var config=require(_0xdf08('0x6'));var controller=require(_0xdf08('0x7'));router['get']('/',auth[_0xdf08('0x8')](),controller[_0xdf08('0x9')]);router['get'](_0xdf08('0xa'),auth[_0xdf08('0x8')](),controller[_0xdf08('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0xdf08('0xc')]);router[_0xdf08('0xd')]('/:id',auth[_0xdf08('0x8')](),controller[_0xdf08('0xe')]);router[_0xdf08('0xf')](_0xdf08('0xa'),auth['isAuthenticated'](),controller[_0xdf08('0x10')]);module[_0xdf08('0x11')]=router;
\ No newline at end of file
+var _0x2c9b=['fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','put','delete','multer','path'];(function(_0x4dccee,_0xf9c233){var _0x3de52f=function(_0x5df492){while(--_0x5df492){_0x4dccee['push'](_0x4dccee['shift']());}};_0x3de52f(++_0xf9c233);}(_0x2c9b,0xe8));var _0xb2c9=function(_0x3be397,_0x51b9dd){_0x3be397=_0x3be397-0x0;var _0x4b564a=_0x2c9b[_0x3be397];return _0x4b564a;};'use strict';var multer=require(_0xb2c9('0x0'));var util=require('util');var path=require(_0xb2c9('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xb2c9('0x2'));var auth=require(_0xb2c9('0x3'));var interaction=require(_0xb2c9('0x4'));var config=require('../../config/environment');var controller=require('./intFreshdeskField.controller');router[_0xb2c9('0x5')]('/',auth[_0xb2c9('0x6')](),controller[_0xb2c9('0x7')]);router[_0xb2c9('0x5')](_0xb2c9('0x8'),auth[_0xb2c9('0x6')](),controller[_0xb2c9('0x9')]);router[_0xb2c9('0xa')]('/',auth[_0xb2c9('0x6')](),controller['create']);router[_0xb2c9('0xb')](_0xb2c9('0x8'),auth[_0xb2c9('0x6')](),controller['update']);router[_0xb2c9('0xc')](_0xb2c9('0x8'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 43fd888..a2aa61d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aca=['sequelize','exports','string','variable','customVariable','keyValue','STRING','ENUM'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5aca,0x130));var _0xa5ac=function(_0x2eb5b3,_0x305c36){_0x2eb5b3=_0x2eb5b3-0x0;var _0x412b8b=_0x5aca[_0x2eb5b3];return _0x412b8b;};'use strict';var Sequelize=require(_0xa5ac('0x0'));module[_0xa5ac('0x1')]={'type':{'type':Sequelize['ENUM'](_0xa5ac('0x2'),_0xa5ac('0x3'),_0xa5ac('0x4'),_0xa5ac('0x5'),'picklist'),'defaultValue':_0xa5ac('0x2')},'content':{'type':Sequelize[_0xa5ac('0x6')]},'key':{'type':Sequelize[_0xa5ac('0x6')]},'keyType':{'type':Sequelize[_0xa5ac('0x7')](_0xa5ac('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xa5ac('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa5ac('0x6')]}};
\ No newline at end of file
+var _0x9c24=['string','STRING','ENUM','variable','sequelize','customVariable','keyValue'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x9c24,0x13f));var _0x49c2=function(_0x4c445a,_0x4ee80f){_0x4c445a=_0x4c445a-0x0;var _0x2f611c=_0x9c24[_0x4c445a];return _0x2f611c;};'use strict';var Sequelize=require(_0x49c2('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string','variable',_0x49c2('0x1'),_0x49c2('0x2'),'picklist'),'defaultValue':_0x49c2('0x3')},'content':{'type':Sequelize[_0x49c2('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x49c2('0x5')]('string',_0x49c2('0x6'),_0x49c2('0x1'))},'keyContent':{'type':Sequelize[_0x49c2('0x4')]},'idField':{'type':Sequelize[_0x49c2('0x4')]},'nameField':{'type':Sequelize[_0x49c2('0x4')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x49c2('0x4')]}};
\ No newline at end of file
index e1eae33..815e0ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75b=['filter','options','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','limit','undefined','count','set','reject','then','destroy','end','sendStatus','error','index','map','FreshdeskField','rawAttributes','type','model','name','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa75b,0x170));var _0xba75=function(_0x472d1c,_0x19b04c){_0x472d1c=_0x472d1c-0x0;var _0x38df16=_0xa75b[_0x472d1c];return _0x38df16;};'use strict';var emlformat=require(_0xba75('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xba75('0x1'));var rp=require(_0xba75('0x2'));var moment=require(_0xba75('0x3'));var BPromise=require(_0xba75('0x4'));var Mustache=require(_0xba75('0x5'));var util=require(_0xba75('0x6'));var path=require(_0xba75('0x7'));var sox=require(_0xba75('0x8'));var csv=require(_0xba75('0x9'));var ejs=require(_0xba75('0xa'));var fs=require('fs');var fs_extra=require(_0xba75('0xb'));var _=require(_0xba75('0xc'));var squel=require(_0xba75('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xba75('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xba75('0xf'));var Redis=require('ioredis');var authService=require(_0xba75('0x10'));var qs=require(_0xba75('0x11'));var as=require(_0xba75('0x12'));var hardwareService=require(_0xba75('0x13'));var logger=require(_0xba75('0x14'))(_0xba75('0x15'));var utils=require(_0xba75('0x16'));var config=require(_0xba75('0x17'));var licenseUtil=require(_0xba75('0x18'));var db=require(_0xba75('0x19'))['db'];function respondWithStatusCode(_0x8116d8,_0x1ed697){_0x1ed697=_0x1ed697||0xcc;return function(_0x50db90){if(_0x50db90){return _0x8116d8['sendStatus'](_0x1ed697);}return _0x8116d8[_0xba75('0x1a')](_0x1ed697)['end']();};}function respondWithResult(_0x2f141a,_0x2df615){_0x2df615=_0x2df615||0xc8;return function(_0xa27f76){if(_0xa27f76){return _0x2f141a[_0xba75('0x1a')](_0x2df615)['json'](_0xa27f76);}};}function respondWithFilteredResult(_0x31b3b3,_0x18bab2){return function(_0x256678){if(_0x256678){var _0x4028f9=typeof _0x18bab2[_0xba75('0x1b')]==='undefined'&&typeof _0x18bab2[_0xba75('0x1c')]===_0xba75('0x1d');var _0x14bd83=_0x256678['count'];var _0x2822af=_0x4028f9?0x0:_0x18bab2[_0xba75('0x1b')];var _0xc4bf17=_0x4028f9?_0x256678[_0xba75('0x1e')]:_0x18bab2[_0xba75('0x1b')]+_0x18bab2[_0xba75('0x1c')];var _0x5811cb;if(_0xc4bf17>=_0x14bd83){_0xc4bf17=_0x14bd83;_0x5811cb=0xc8;}else{_0x5811cb=0xce;}_0x31b3b3[_0xba75('0x1a')](_0x5811cb);return _0x31b3b3[_0xba75('0x1f')]('Content-Range',_0x2822af+'-'+_0xc4bf17+'/'+_0x14bd83)['json'](_0x256678);}return null;};}function patchUpdates(_0x35ffd2){return function(_0x31bc33){try{jsonpatch['apply'](_0x31bc33,_0x35ffd2,!![]);}catch(_0x48206c){return BPromise[_0xba75('0x20')](_0x48206c);}return _0x31bc33['save']();};}function saveUpdates(_0x1b8a36,_0x2ece41){return function(_0x19b2d7){if(_0x19b2d7){return _0x19b2d7['update'](_0x1b8a36)[_0xba75('0x21')](function(_0x221d5e){return _0x221d5e;});}return null;};}function removeEntity(_0x139fa4,_0x3e9bd9){return function(_0x14c54b){if(_0x14c54b){return _0x14c54b[_0xba75('0x22')]()['then'](function(){_0x139fa4[_0xba75('0x1a')](0xcc)[_0xba75('0x23')]();});}};}function handleEntityNotFound(_0xe579fb,_0x5ec733){return function(_0x1caa6){if(!_0x1caa6){_0xe579fb[_0xba75('0x24')](0x194);}return _0x1caa6;};}function handleError(_0x26dd53,_0x37f7c8){_0x37f7c8=_0x37f7c8||0x1f4;return function(_0x35c571){logger[_0xba75('0x25')](_0x35c571['stack']);if(_0x35c571['name']){delete _0x35c571['name'];}_0x26dd53[_0xba75('0x1a')](_0x37f7c8)['send'](_0x35c571);};}exports[_0xba75('0x26')]=function(_0x58ea2d,_0x15b5bc){var _0x1afc1f={},_0x20ac78={},_0x4edc2e={'count':0x0,'rows':[]};var _0x3a1fd3=_[_0xba75('0x27')](db[_0xba75('0x28')][_0xba75('0x29')],function(_0x5d9f78){return{'name':_0x5d9f78['fieldName'],'type':_0x5d9f78[_0xba75('0x2a')]['key']};});_0x20ac78[_0xba75('0x2b')]=_[_0xba75('0x27')](_0x3a1fd3,_0xba75('0x2c'));_0x20ac78[_0xba75('0x2d')]=_['keys'](_0x58ea2d[_0xba75('0x2d')]);_0x20ac78[_0xba75('0x2e')]=_['intersection'](_0x20ac78[_0xba75('0x2b')],_0x20ac78[_0xba75('0x2d')]);_0x1afc1f[_0xba75('0x2f')]=_[_0xba75('0x30')](_0x20ac78['model'],qs[_0xba75('0x31')](_0x58ea2d[_0xba75('0x2d')]['fields']));_0x1afc1f[_0xba75('0x2f')]=_0x1afc1f[_0xba75('0x2f')][_0xba75('0x32')]?_0x1afc1f['attributes']:_0x20ac78[_0xba75('0x2b')];if(!_0x58ea2d[_0xba75('0x2d')][_0xba75('0x33')](_0xba75('0x34'))){_0x1afc1f[_0xba75('0x1c')]=qs[_0xba75('0x1c')](_0x58ea2d[_0xba75('0x2d')]['limit']);_0x1afc1f['offset']=qs[_0xba75('0x1b')](_0x58ea2d[_0xba75('0x2d')][_0xba75('0x1b')]);}_0x1afc1f['order']=qs[_0xba75('0x35')](_0x58ea2d[_0xba75('0x2d')]['sort']);_0x1afc1f['where']=qs[_0xba75('0x2e')](_[_0xba75('0x36')](_0x58ea2d[_0xba75('0x2d')],_0x20ac78[_0xba75('0x2e')]),_0x3a1fd3);if(_0x58ea2d[_0xba75('0x2d')]['filter']){_0x1afc1f['where']=_[_0xba75('0x37')](_0x1afc1f[_0xba75('0x38')],{'$or':_[_0xba75('0x27')](_0x3a1fd3,function(_0x68526f){if(_0x68526f[_0xba75('0x2a')]!==_0xba75('0x39')){var _0x987cc1={};_0x987cc1[_0x68526f['name']]={'$like':'%'+_0x58ea2d[_0xba75('0x2d')][_0xba75('0x3a')]+'%'};return _0x987cc1;}})});}_0x1afc1f=_['merge']({},_0x1afc1f,_0x58ea2d[_0xba75('0x3b')]);var _0x3740bd={'where':_0x1afc1f[_0xba75('0x38')]};return db[_0xba75('0x28')][_0xba75('0x1e')](_0x3740bd)[_0xba75('0x21')](function(_0x20e857){_0x4edc2e['count']=_0x20e857;if(_0x58ea2d[_0xba75('0x2d')]['includeAll']){_0x1afc1f[_0xba75('0x3c')]=[{'all':!![]}];}return db['FreshdeskField'][_0xba75('0x3d')](_0x1afc1f);})[_0xba75('0x21')](function(_0x9c32ad){_0x4edc2e[_0xba75('0x3e')]=_0x9c32ad;return _0x4edc2e;})[_0xba75('0x21')](respondWithFilteredResult(_0x15b5bc,_0x1afc1f))[_0xba75('0x3f')](handleError(_0x15b5bc,null));};exports[_0xba75('0x40')]=function(_0x3f2a91,_0xfd400f){var _0x5c7c7f={'raw':!![],'where':{'id':_0x3f2a91[_0xba75('0x41')]['id']}},_0x30b5f0={};_0x30b5f0['model']=_[_0xba75('0x42')](db[_0xba75('0x28')][_0xba75('0x29')]);_0x30b5f0['query']=_['keys'](_0x3f2a91['query']);_0x30b5f0['filters']=_[_0xba75('0x30')](_0x30b5f0['model'],_0x30b5f0[_0xba75('0x2d')]);_0x5c7c7f[_0xba75('0x2f')]=_[_0xba75('0x30')](_0x30b5f0[_0xba75('0x2b')],qs[_0xba75('0x31')](_0x3f2a91['query']['fields']));_0x5c7c7f[_0xba75('0x2f')]=_0x5c7c7f['attributes'][_0xba75('0x32')]?_0x5c7c7f['attributes']:_0x30b5f0[_0xba75('0x2b')];if(_0x3f2a91[_0xba75('0x2d')][_0xba75('0x43')]){_0x5c7c7f[_0xba75('0x3c')]=[{'all':!![]}];}_0x5c7c7f=_['merge']({},_0x5c7c7f,_0x3f2a91[_0xba75('0x3b')]);return db[_0xba75('0x28')][_0xba75('0x44')](_0x5c7c7f)[_0xba75('0x21')](handleEntityNotFound(_0xfd400f,null))[_0xba75('0x21')](respondWithResult(_0xfd400f,null))[_0xba75('0x3f')](handleError(_0xfd400f,null));};exports[_0xba75('0x45')]=function(_0x2cd995,_0x51cd22){return db[_0xba75('0x28')][_0xba75('0x45')](_0x2cd995[_0xba75('0x46')],{})[_0xba75('0x21')](respondWithResult(_0x51cd22,0xc9))[_0xba75('0x3f')](handleError(_0x51cd22,null));};exports['update']=function(_0x2a1f84,_0x25ae33){if(_0x2a1f84[_0xba75('0x46')]['id']){delete _0x2a1f84[_0xba75('0x46')]['id'];}return db[_0xba75('0x28')][_0xba75('0x44')]({'where':{'id':_0x2a1f84[_0xba75('0x41')]['id']}})['then'](handleEntityNotFound(_0x25ae33,null))[_0xba75('0x21')](saveUpdates(_0x2a1f84[_0xba75('0x46')],null))[_0xba75('0x21')](respondWithResult(_0x25ae33,null))['catch'](handleError(_0x25ae33,null));};exports[_0xba75('0x22')]=function(_0x29b4fc,_0x559f6f){return db['FreshdeskField'][_0xba75('0x44')]({'where':{'id':_0x29b4fc['params']['id']}})['then'](handleEntityNotFound(_0x559f6f,null))[_0xba75('0x21')](removeEntity(_0x559f6f,null))['catch'](handleError(_0x559f6f,null));};
\ No newline at end of file
+var _0x2f68=['length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','rows','catch','params','includeAll','find','create','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','name','send','map','FreshdeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields'];(function(_0x249565,_0x2a026a){var _0x43dee8=function(_0x15a1ab){while(--_0x15a1ab){_0x249565['push'](_0x249565['shift']());}};_0x43dee8(++_0x2a026a);}(_0x2f68,0x9a));var _0x82f6=function(_0x548636,_0xaffa){_0x548636=_0x548636-0x0;var _0xe170aa=_0x2f68[_0x548636];return _0xe170aa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x82f6('0x0'));var zipdir=require(_0x82f6('0x1'));var jsonpatch=require(_0x82f6('0x2'));var rp=require(_0x82f6('0x3'));var moment=require('moment');var BPromise=require(_0x82f6('0x4'));var Mustache=require('mustache');var util=require(_0x82f6('0x5'));var path=require(_0x82f6('0x6'));var sox=require('sox');var csv=require(_0x82f6('0x7'));var ejs=require(_0x82f6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x82f6('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x82f6('0xa'));var toCsv=require(_0x82f6('0x7'));var querystring=require(_0x82f6('0xb'));var Papa=require('papaparse');var Redis=require(_0x82f6('0xc'));var authService=require(_0x82f6('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x82f6('0xe'));var hardwareService=require(_0x82f6('0xf'));var logger=require(_0x82f6('0x10'))(_0x82f6('0x11'));var utils=require(_0x82f6('0x12'));var config=require(_0x82f6('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x82f6('0x14'))['db'];function respondWithStatusCode(_0x442262,_0x4cc967){_0x4cc967=_0x4cc967||0xcc;return function(_0x194da7){if(_0x194da7){return _0x442262[_0x82f6('0x15')](_0x4cc967);}return _0x442262[_0x82f6('0x16')](_0x4cc967)[_0x82f6('0x17')]();};}function respondWithResult(_0x371481,_0xa00275){_0xa00275=_0xa00275||0xc8;return function(_0x115c7b){if(_0x115c7b){return _0x371481[_0x82f6('0x16')](_0xa00275)[_0x82f6('0x18')](_0x115c7b);}};}function respondWithFilteredResult(_0x55b58e,_0x389949){return function(_0x5d0827){if(_0x5d0827){var _0x249222=typeof _0x389949[_0x82f6('0x19')]===_0x82f6('0x1a')&&typeof _0x389949[_0x82f6('0x1b')]===_0x82f6('0x1a');var _0x2326ae=_0x5d0827[_0x82f6('0x1c')];var _0xcbc95f=_0x249222?0x0:_0x389949[_0x82f6('0x19')];var _0x2bfd57=_0x249222?_0x5d0827[_0x82f6('0x1c')]:_0x389949[_0x82f6('0x19')]+_0x389949[_0x82f6('0x1b')];var _0x4fe226;if(_0x2bfd57>=_0x2326ae){_0x2bfd57=_0x2326ae;_0x4fe226=0xc8;}else{_0x4fe226=0xce;}_0x55b58e[_0x82f6('0x16')](_0x4fe226);return _0x55b58e['set'](_0x82f6('0x1d'),_0xcbc95f+'-'+_0x2bfd57+'/'+_0x2326ae)[_0x82f6('0x18')](_0x5d0827);}return null;};}function patchUpdates(_0x55cbce){return function(_0x2b03ad){try{jsonpatch[_0x82f6('0x1e')](_0x2b03ad,_0x55cbce,!![]);}catch(_0x46713a){return BPromise[_0x82f6('0x1f')](_0x46713a);}return _0x2b03ad['save']();};}function saveUpdates(_0xdc4dea,_0x4beccf){return function(_0x8668bb){if(_0x8668bb){return _0x8668bb[_0x82f6('0x20')](_0xdc4dea)['then'](function(_0x516deb){return _0x516deb;});}return null;};}function removeEntity(_0x3af5f7,_0x1d96d5){return function(_0x4c57c5){if(_0x4c57c5){return _0x4c57c5['destroy']()[_0x82f6('0x21')](function(){_0x3af5f7[_0x82f6('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfd8b68,_0x304e83){return function(_0x5037f8){if(!_0x5037f8){_0xfd8b68['sendStatus'](0x194);}return _0x5037f8;};}function handleError(_0x1c165b,_0x5187d0){_0x5187d0=_0x5187d0||0x1f4;return function(_0x469b6b){logger[_0x82f6('0x22')](_0x469b6b['stack']);if(_0x469b6b[_0x82f6('0x23')]){delete _0x469b6b[_0x82f6('0x23')];}_0x1c165b[_0x82f6('0x16')](_0x5187d0)[_0x82f6('0x24')](_0x469b6b);};}exports['index']=function(_0x40a071,_0x1fb461){var _0x14a309={},_0x400137={},_0x271c28={'count':0x0,'rows':[]};var _0x328707=_[_0x82f6('0x25')](db[_0x82f6('0x26')][_0x82f6('0x27')],function(_0x402449){return{'name':_0x402449[_0x82f6('0x28')],'type':_0x402449[_0x82f6('0x29')][_0x82f6('0x2a')]};});_0x400137[_0x82f6('0x2b')]=_['map'](_0x328707,_0x82f6('0x23'));_0x400137[_0x82f6('0x2c')]=_[_0x82f6('0x2d')](_0x40a071['query']);_0x400137[_0x82f6('0x2e')]=_[_0x82f6('0x2f')](_0x400137[_0x82f6('0x2b')],_0x400137[_0x82f6('0x2c')]);_0x14a309[_0x82f6('0x30')]=_[_0x82f6('0x2f')](_0x400137[_0x82f6('0x2b')],qs[_0x82f6('0x31')](_0x40a071[_0x82f6('0x2c')][_0x82f6('0x31')]));_0x14a309[_0x82f6('0x30')]=_0x14a309[_0x82f6('0x30')][_0x82f6('0x32')]?_0x14a309[_0x82f6('0x30')]:_0x400137['model'];if(!_0x40a071[_0x82f6('0x2c')][_0x82f6('0x33')](_0x82f6('0x34'))){_0x14a309[_0x82f6('0x1b')]=qs[_0x82f6('0x1b')](_0x40a071[_0x82f6('0x2c')][_0x82f6('0x1b')]);_0x14a309[_0x82f6('0x19')]=qs[_0x82f6('0x19')](_0x40a071[_0x82f6('0x2c')][_0x82f6('0x19')]);}_0x14a309[_0x82f6('0x35')]=qs[_0x82f6('0x36')](_0x40a071[_0x82f6('0x2c')]['sort']);_0x14a309[_0x82f6('0x37')]=qs['filters'](_['pick'](_0x40a071[_0x82f6('0x2c')],_0x400137[_0x82f6('0x2e')]),_0x328707);if(_0x40a071['query'][_0x82f6('0x38')]){_0x14a309[_0x82f6('0x37')]=_[_0x82f6('0x39')](_0x14a309['where'],{'$or':_[_0x82f6('0x25')](_0x328707,function(_0x4eb44e){if(_0x4eb44e[_0x82f6('0x29')]!=='VIRTUAL'){var _0x452463={};_0x452463[_0x4eb44e['name']]={'$like':'%'+_0x40a071[_0x82f6('0x2c')][_0x82f6('0x38')]+'%'};return _0x452463;}})});}_0x14a309=_['merge']({},_0x14a309,_0x40a071[_0x82f6('0x3a')]);var _0x368c11={'where':_0x14a309[_0x82f6('0x37')]};return db[_0x82f6('0x26')]['count'](_0x368c11)[_0x82f6('0x21')](function(_0x3b7b19){_0x271c28[_0x82f6('0x1c')]=_0x3b7b19;if(_0x40a071[_0x82f6('0x2c')]['includeAll']){_0x14a309[_0x82f6('0x3b')]=[{'all':!![]}];}return db[_0x82f6('0x26')]['findAll'](_0x14a309);})[_0x82f6('0x21')](function(_0x699803){_0x271c28[_0x82f6('0x3c')]=_0x699803;return _0x271c28;})[_0x82f6('0x21')](respondWithFilteredResult(_0x1fb461,_0x14a309))[_0x82f6('0x3d')](handleError(_0x1fb461,null));};exports['show']=function(_0x8cebb6,_0x5786ce){var _0x139614={'raw':!![],'where':{'id':_0x8cebb6[_0x82f6('0x3e')]['id']}},_0x38e82d={};_0x38e82d[_0x82f6('0x2b')]=_[_0x82f6('0x2d')](db[_0x82f6('0x26')][_0x82f6('0x27')]);_0x38e82d['query']=_[_0x82f6('0x2d')](_0x8cebb6[_0x82f6('0x2c')]);_0x38e82d[_0x82f6('0x2e')]=_[_0x82f6('0x2f')](_0x38e82d['model'],_0x38e82d[_0x82f6('0x2c')]);_0x139614['attributes']=_[_0x82f6('0x2f')](_0x38e82d[_0x82f6('0x2b')],qs[_0x82f6('0x31')](_0x8cebb6[_0x82f6('0x2c')][_0x82f6('0x31')]));_0x139614[_0x82f6('0x30')]=_0x139614['attributes'][_0x82f6('0x32')]?_0x139614[_0x82f6('0x30')]:_0x38e82d[_0x82f6('0x2b')];if(_0x8cebb6[_0x82f6('0x2c')][_0x82f6('0x3f')]){_0x139614[_0x82f6('0x3b')]=[{'all':!![]}];}_0x139614=_[_0x82f6('0x39')]({},_0x139614,_0x8cebb6[_0x82f6('0x3a')]);return db['FreshdeskField'][_0x82f6('0x40')](_0x139614)[_0x82f6('0x21')](handleEntityNotFound(_0x5786ce,null))['then'](respondWithResult(_0x5786ce,null))[_0x82f6('0x3d')](handleError(_0x5786ce,null));};exports['create']=function(_0x1380ae,_0x5e3321){return db[_0x82f6('0x26')][_0x82f6('0x41')](_0x1380ae[_0x82f6('0x42')],{})[_0x82f6('0x21')](respondWithResult(_0x5e3321,0xc9))[_0x82f6('0x3d')](handleError(_0x5e3321,null));};exports[_0x82f6('0x20')]=function(_0x53f7d4,_0x3cb1f0){if(_0x53f7d4[_0x82f6('0x42')]['id']){delete _0x53f7d4['body']['id'];}return db['FreshdeskField'][_0x82f6('0x40')]({'where':{'id':_0x53f7d4[_0x82f6('0x3e')]['id']}})[_0x82f6('0x21')](handleEntityNotFound(_0x3cb1f0,null))['then'](saveUpdates(_0x53f7d4[_0x82f6('0x42')],null))[_0x82f6('0x21')](respondWithResult(_0x3cb1f0,null))[_0x82f6('0x3d')](handleError(_0x3cb1f0,null));};exports[_0x82f6('0x43')]=function(_0x4e9e13,_0x495400){return db[_0x82f6('0x26')][_0x82f6('0x40')]({'where':{'id':_0x4e9e13[_0x82f6('0x3e')]['id']}})['then'](handleEntityNotFound(_0x495400,null))[_0x82f6('0x21')](removeEntity(_0x495400,null))[_0x82f6('0x3d')](handleError(_0x495400,null));};
\ No newline at end of file
index 4aa624b..1e796ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x177d=['./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x4edd68,_0x54eebc){var _0x5cdeef=function(_0x38b3ba){while(--_0x38b3ba){_0x4edd68['push'](_0x4edd68['shift']());}};_0x5cdeef(++_0x54eebc);}(_0x177d,0x68));var _0xd177=function(_0x3bb572,_0x2c1d61){_0x3bb572=_0x3bb572-0x0;var _0xadb53=_0x177d[_0x3bb572];return _0xadb53;};'use strict';var _=require(_0xd177('0x0'));var util=require(_0xd177('0x1'));var logger=require(_0xd177('0x2'))(_0xd177('0x3'));var moment=require(_0xd177('0x4'));var BPromise=require(_0xd177('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd177('0x6'));var config=require(_0xd177('0x7'));var attributes=require(_0xd177('0x8'));module[_0xd177('0x9')]=function(_0x3e88f5,_0x5d7a11){return _0x3e88f5[_0xd177('0xa')](_0xd177('0xb'),attributes,{'tableName':_0xd177('0xc'),'paranoid':![],'indexes':[{'name':_0xd177('0xd'),'fields':[_0xd177('0xe'),_0xd177('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x34ab=['../../config/environment','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','lodash','util','../../config/logger','api','request-promise','rimraf'];(function(_0xbe6f1a,_0x30c79c){var _0x491f95=function(_0x197c27){while(--_0x197c27){_0xbe6f1a['push'](_0xbe6f1a['shift']());}};_0x491f95(++_0x30c79c);}(_0x34ab,0xf1));var _0xb34a=function(_0x11c573,_0x9e7c6e){_0x11c573=_0x11c573-0x0;var _0x6b72de=_0x34ab[_0x11c573];return _0x6b72de;};'use strict';var _=require(_0xb34a('0x0'));var util=require(_0xb34a('0x1'));var logger=require(_0xb34a('0x2'))(_0xb34a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb34a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb34a('0x5'));var config=require(_0xb34a('0x6'));var attributes=require(_0xb34a('0x7'));module['exports']=function(_0x6e669,_0x1f6df3){return _0x6e669[_0xb34a('0x8')](_0xb34a('0x9'),attributes,{'tableName':_0xb34a('0xa'),'paranoid':![],'indexes':[{'name':_0xb34a('0xb'),'fields':[_0xb34a('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e254241..286b860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc901=['request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s'];(function(_0x3a98e1,_0x564b54){var _0x2ce833=function(_0x4b7106){while(--_0x4b7106){_0x3a98e1['push'](_0x3a98e1['shift']());}};_0x2ce833(++_0x564b54);}(_0xc901,0x18e));var _0x1c90=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc901[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x1c90('0x0'));var util=require(_0x1c90('0x1'));var moment=require(_0x1c90('0x2'));var BPromise=require(_0x1c90('0x3'));var rs=require(_0x1c90('0x4'));var fs=require('fs');var Redis=require(_0x1c90('0x5'));var db=require(_0x1c90('0x6'))['db'];var utils=require(_0x1c90('0x7'));var logger=require(_0x1c90('0x8'))(_0x1c90('0x9'));var config=require(_0x1c90('0xa'));var jayson=require(_0x1c90('0xb'));var client=jayson[_0x1c90('0xc')][_0x1c90('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1a10da,_0x5a5e0a,_0x277ebd){return new BPromise(function(_0x44a7ea,_0xb7dd23){return client[_0x1c90('0xe')](_0x1a10da,_0x277ebd)[_0x1c90('0xf')](function(_0x29835c){logger[_0x1c90('0x10')](_0x1c90('0x11'),_0x5a5e0a,_0x1c90('0x12'));logger[_0x1c90('0x13')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x5a5e0a,_0x1c90('0x12'),JSON[_0x1c90('0x14')](_0x29835c));if(_0x29835c[_0x1c90('0x15')]){if(_0x29835c['error'][_0x1c90('0x16')]===0x1f4){logger[_0x1c90('0x15')]('FreshdeskField,\x20%s,\x20%s',_0x5a5e0a,_0x29835c['error']['message']);return _0xb7dd23(_0x29835c[_0x1c90('0x15')][_0x1c90('0x17')]);}logger[_0x1c90('0x15')](_0x1c90('0x11'),_0x5a5e0a,_0x29835c[_0x1c90('0x15')]['message']);return _0x44a7ea(_0x29835c[_0x1c90('0x15')][_0x1c90('0x17')]);}else{logger[_0x1c90('0x10')](_0x1c90('0x11'),_0x5a5e0a,_0x1c90('0x12'));_0x44a7ea(_0x29835c[_0x1c90('0x18')]['message']);}})[_0x1c90('0x19')](function(_0x295448){logger[_0x1c90('0x15')](_0x1c90('0x11'),_0x5a5e0a,_0x295448);_0xb7dd23(_0x295448);});});}
\ No newline at end of file
+var _0xaa93=['info','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x442209,_0x49673c){var _0x53f7d6=function(_0x2e7fa4){while(--_0x2e7fa4){_0x442209['push'](_0x442209['shift']());}};_0x53f7d6(++_0x49673c);}(_0xaa93,0x1d7));var _0x3aa9=function(_0x2f0190,_0x52325f){_0x2f0190=_0x2f0190-0x0;var _0x2594e3=_0xaa93[_0x2f0190];return _0x2594e3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3aa9('0x0'));var BPromise=require(_0x3aa9('0x1'));var rs=require(_0x3aa9('0x2'));var fs=require('fs');var Redis=require(_0x3aa9('0x3'));var db=require(_0x3aa9('0x4'))['db'];var utils=require(_0x3aa9('0x5'));var logger=require(_0x3aa9('0x6'))(_0x3aa9('0x7'));var config=require(_0x3aa9('0x8'));var jayson=require(_0x3aa9('0x9'));var client=jayson[_0x3aa9('0xa')][_0x3aa9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24630a,_0x37fe2c,_0x33390f){return new BPromise(function(_0x220974,_0xd540f2){return client['request'](_0x24630a,_0x33390f)['then'](function(_0x55e6da){logger[_0x3aa9('0xc')](_0x3aa9('0xd'),_0x37fe2c,_0x3aa9('0xe'));logger['debug'](_0x3aa9('0xf'),_0x37fe2c,_0x3aa9('0xe'),JSON[_0x3aa9('0x10')](_0x55e6da));if(_0x55e6da[_0x3aa9('0x11')]){if(_0x55e6da[_0x3aa9('0x11')][_0x3aa9('0x12')]===0x1f4){logger[_0x3aa9('0x11')](_0x3aa9('0xd'),_0x37fe2c,_0x55e6da['error'][_0x3aa9('0x13')]);return _0xd540f2(_0x55e6da['error']['message']);}logger[_0x3aa9('0x11')]('FreshdeskField,\x20%s,\x20%s',_0x37fe2c,_0x55e6da[_0x3aa9('0x11')][_0x3aa9('0x13')]);return _0x220974(_0x55e6da[_0x3aa9('0x11')]['message']);}else{logger[_0x3aa9('0xc')](_0x3aa9('0xd'),_0x37fe2c,_0x3aa9('0xe'));_0x220974(_0x55e6da['result']['message']);}})[_0x3aa9('0x14')](function(_0x30f28d){logger[_0x3aa9('0x11')](_0x3aa9('0xd'),_0x37fe2c,_0x30f28d);_0xd540f2(_0x30f28d);});});}
\ No newline at end of file
index 81ca6b4..9b381ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','show'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0x34b7,0x196));var _0x734b=function(_0x5a401e,_0x2de782){_0x5a401e=_0x5a401e-0x0;var _0x2aa2cc=_0x34b7[_0x5a401e];return _0x2aa2cc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x734b('0x0'));var timeout=require(_0x734b('0x1'));var express=require(_0x734b('0x2'));var router=express[_0x734b('0x3')]();var fs_extra=require(_0x734b('0x4'));var auth=require(_0x734b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x734b('0x6'));router[_0x734b('0x7')]('/',auth[_0x734b('0x8')](),controller[_0x734b('0x9')]);router[_0x734b('0x7')](_0x734b('0xa'),auth['isAuthenticated'](),controller[_0x734b('0xb')]);router[_0x734b('0x7')]('/:id/configurations',auth['isAuthenticated'](),controller['getConfigurations']);router[_0x734b('0x7')]('/:id/fields',auth[_0x734b('0x8')](),controller[_0x734b('0xc')]);router[_0x734b('0xd')]('/',auth[_0x734b('0x8')](),controller[_0x734b('0xe')]);router[_0x734b('0xd')](_0x734b('0xf'),auth[_0x734b('0x8')](),controller[_0x734b('0x10')]);router[_0x734b('0x11')](_0x734b('0xa'),auth[_0x734b('0x8')](),controller[_0x734b('0x12')]);router[_0x734b('0x13')]('/:id',auth[_0x734b('0x8')](),controller[_0x734b('0x14')]);module[_0x734b('0x15')]=router;
\ No newline at end of file
+var _0xbdb7=['fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesAccount.controller','index','get','show','getConfigurations','/:id/fields','isAuthenticated','getFields','post','create','addConfiguration','put','/:id','multer','util','path','connect-timeout','express','Router'];(function(_0x548268,_0x27adee){var _0x1b918c=function(_0x1db025){while(--_0x1db025){_0x548268['push'](_0x548268['shift']());}};_0x1b918c(++_0x27adee);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x154940,_0x4a448a){_0x154940=_0x154940-0x0;var _0x401409=_0xbdb7[_0x154940];return _0x401409;};'use strict';var multer=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var path=require(_0x7bdb('0x2'));var timeout=require(_0x7bdb('0x3'));var express=require(_0x7bdb('0x4'));var router=express[_0x7bdb('0x5')]();var fs_extra=require(_0x7bdb('0x6'));var auth=require(_0x7bdb('0x7'));var interaction=require(_0x7bdb('0x8'));var config=require('../../config/environment');var controller=require(_0x7bdb('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x7bdb('0xa')]);router[_0x7bdb('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x7bdb('0xc')]);router[_0x7bdb('0xb')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x7bdb('0xd')]);router[_0x7bdb('0xb')](_0x7bdb('0xe'),auth[_0x7bdb('0xf')](),controller[_0x7bdb('0x10')]);router[_0x7bdb('0x11')]('/',auth[_0x7bdb('0xf')](),controller[_0x7bdb('0x12')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0x7bdb('0x13')]);router[_0x7bdb('0x14')]('/:id',auth[_0x7bdb('0xf')](),controller['update']);router['delete'](_0x7bdb('0x15'),auth[_0x7bdb('0xf')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index e66aefb..8c098ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['STRING','sequelize'];(function(_0x5c9d1d,_0x3fdf83){var _0x473e05=function(_0x36783b){while(--_0x36783b){_0x5c9d1d['push'](_0x5c9d1d['shift']());}};_0x473e05(++_0x3fdf83);}(_0x6a55,0xdb));var _0x56a5=function(_0x28f922,_0x1302f8){_0x28f922=_0x28f922-0x0;var _0x4eceac=_0x6a55[_0x28f922];return _0x4eceac;};'use strict';var Sequelize=require(_0x56a5('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x56a5('0x1')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x56a5('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x56a5('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xd824=['exports','STRING','username','remoteUri','sequelize'];(function(_0x2042f3,_0x8c9a74){var _0x69ac6d=function(_0x5258b4){while(--_0x5258b4){_0x2042f3['push'](_0x2042f3['shift']());}};_0x69ac6d(++_0x8c9a74);}(_0xd824,0xc2));var _0x4d82=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xd824[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x3')},'apiKey':{'type':Sequelize[_0x4d82('0x2')]},'remoteUri':{'type':Sequelize[_0x4d82('0x2')],'unique':_0x4d82('0x4')},'serverUrl':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]}};
\ No newline at end of file
index 3b24c22..9718bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1218=['stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','FreshsalesAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','type','VIRTUAL','options','findAll','rows','catch','show','params','include','create','body','find','getConfigurations','FreshsalesConfiguration','pick','nolimit','addConfiguration','findOne','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','slice','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s'];(function(_0x52ff44,_0xc827b2){var _0x25e5b7=function(_0x2e4a04){while(--_0x2e4a04){_0x52ff44['push'](_0x52ff44['shift']());}};_0x25e5b7(++_0xc827b2);}(_0x1218,0x6d));var _0x8121=function(_0x7523d7,_0x206ffe){_0x7523d7=_0x7523d7-0x0;var _0x1f4a22=_0x1218[_0x7523d7];return _0x1f4a22;};'use strict';var emlformat=require(_0x8121('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8121('0x1'));var jsonpatch=require(_0x8121('0x2'));var rp=require(_0x8121('0x3'));var moment=require(_0x8121('0x4'));var BPromise=require(_0x8121('0x5'));var Mustache=require(_0x8121('0x6'));var util=require(_0x8121('0x7'));var path=require(_0x8121('0x8'));var sox=require(_0x8121('0x9'));var csv=require('to-csv');var ejs=require(_0x8121('0xa'));var fs=require('fs');var fs_extra=require(_0x8121('0xb'));var _=require(_0x8121('0xc'));var squel=require(_0x8121('0xd'));var crypto=require(_0x8121('0xe'));var jsforce=require(_0x8121('0xf'));var deskjs=require(_0x8121('0x10'));var toCsv=require(_0x8121('0x11'));var querystring=require(_0x8121('0x12'));var Papa=require('papaparse');var Redis=require(_0x8121('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x8121('0x14'));var as=require(_0x8121('0x15'));var hardwareService=require(_0x8121('0x16'));var logger=require('../../config/logger')(_0x8121('0x17'));var utils=require(_0x8121('0x18'));var config=require(_0x8121('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x8121('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3dfbe1,_0x5146cc){_0x5146cc=_0x5146cc||0xcc;return function(_0x1686a0){if(_0x1686a0){return _0x3dfbe1[_0x8121('0x1b')](_0x5146cc);}return _0x3dfbe1[_0x8121('0x1c')](_0x5146cc)[_0x8121('0x1d')]();};}function respondWithResult(_0x3eb999,_0x452c3d){_0x452c3d=_0x452c3d||0xc8;return function(_0xa7b1b){if(_0xa7b1b){return _0x3eb999[_0x8121('0x1c')](_0x452c3d)[_0x8121('0x1e')](_0xa7b1b);}};}function respondWithFilteredResult(_0x4e8cb2,_0x311916){return function(_0x13a9bd){if(_0x13a9bd){var _0x210cd6=typeof _0x311916['offset']===_0x8121('0x1f')&&typeof _0x311916[_0x8121('0x20')]===_0x8121('0x1f');var _0x4cb7dd=_0x13a9bd[_0x8121('0x21')];var _0x2b2756=_0x210cd6?0x0:_0x311916[_0x8121('0x22')];var _0x110c5e=_0x210cd6?_0x13a9bd['count']:_0x311916['offset']+_0x311916['limit'];var _0xa7d603;if(_0x110c5e>=_0x4cb7dd){_0x110c5e=_0x4cb7dd;_0xa7d603=0xc8;}else{_0xa7d603=0xce;}_0x4e8cb2['status'](_0xa7d603);return _0x4e8cb2[_0x8121('0x23')](_0x8121('0x24'),_0x2b2756+'-'+_0x110c5e+'/'+_0x4cb7dd)['json'](_0x13a9bd);}return null;};}function patchUpdates(_0x2d0016){return function(_0x519894){try{jsonpatch[_0x8121('0x25')](_0x519894,_0x2d0016,!![]);}catch(_0x285c3f){return BPromise[_0x8121('0x26')](_0x285c3f);}return _0x519894[_0x8121('0x27')]();};}function saveUpdates(_0x2940ed,_0xf7ac08){return function(_0x2f0b68){if(_0x2f0b68){return _0x2f0b68[_0x8121('0x28')](_0x2940ed)[_0x8121('0x29')](function(_0xa1855f){return _0xa1855f;});}return null;};}function removeEntity(_0x4fc238,_0x8caa54){return function(_0x1b2765){if(_0x1b2765){return _0x1b2765[_0x8121('0x2a')]()[_0x8121('0x29')](function(){_0x4fc238[_0x8121('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25f14d,_0x45061c){return function(_0x5150ae){if(!_0x5150ae){_0x25f14d[_0x8121('0x1b')](0x194);}return _0x5150ae;};}function handleError(_0x10e413,_0x12d2ac){_0x12d2ac=_0x12d2ac||0x1f4;return function(_0x294ef6){logger[_0x8121('0x2b')](_0x294ef6['stack']);if(_0x294ef6[_0x8121('0x2c')]){delete _0x294ef6[_0x8121('0x2c')];}_0x10e413[_0x8121('0x1c')](_0x12d2ac)[_0x8121('0x2d')](_0x294ef6);};}exports['index']=function(_0x3db2f9,_0x1b87cc){var _0xad0614={},_0x589da2={},_0x3f989b={'count':0x0,'rows':[]};var _0x3db3b6=_[_0x8121('0x2e')](db[_0x8121('0x2f')][_0x8121('0x30')],function(_0x2f217b){return{'name':_0x2f217b[_0x8121('0x31')],'type':_0x2f217b['type'][_0x8121('0x32')]};});_0x589da2[_0x8121('0x33')]=_[_0x8121('0x2e')](_0x3db3b6,_0x8121('0x2c'));_0x589da2[_0x8121('0x34')]=_[_0x8121('0x35')](_0x3db2f9['query']);_0x589da2[_0x8121('0x36')]=_[_0x8121('0x37')](_0x589da2['model'],_0x589da2['query']);_0xad0614[_0x8121('0x38')]=_['intersection'](_0x589da2['model'],qs[_0x8121('0x39')](_0x3db2f9[_0x8121('0x34')][_0x8121('0x39')]));_0xad0614[_0x8121('0x38')]=_0xad0614[_0x8121('0x38')][_0x8121('0x3a')]?_0xad0614[_0x8121('0x38')]:_0x589da2[_0x8121('0x33')];if(!_0x3db2f9['query'][_0x8121('0x3b')]('nolimit')){_0xad0614[_0x8121('0x20')]=qs[_0x8121('0x20')](_0x3db2f9[_0x8121('0x34')][_0x8121('0x20')]);_0xad0614[_0x8121('0x22')]=qs[_0x8121('0x22')](_0x3db2f9[_0x8121('0x34')][_0x8121('0x22')]);}_0xad0614[_0x8121('0x3c')]=qs[_0x8121('0x3d')](_0x3db2f9[_0x8121('0x34')]['sort']);_0xad0614[_0x8121('0x3e')]=qs['filters'](_['pick'](_0x3db2f9[_0x8121('0x34')],_0x589da2[_0x8121('0x36')]),_0x3db3b6);if(_0x3db2f9['query'][_0x8121('0x3f')]){_0xad0614[_0x8121('0x3e')]=_[_0x8121('0x40')](_0xad0614[_0x8121('0x3e')],{'$or':_['map'](_0x3db3b6,function(_0x3ee825){if(_0x3ee825[_0x8121('0x41')]!==_0x8121('0x42')){var _0x270849={};_0x270849[_0x3ee825[_0x8121('0x2c')]]={'$like':'%'+_0x3db2f9[_0x8121('0x34')][_0x8121('0x3f')]+'%'};return _0x270849;}})});}_0xad0614=_[_0x8121('0x40')]({},_0xad0614,_0x3db2f9[_0x8121('0x43')]);var _0x2648b5={'where':_0xad0614[_0x8121('0x3e')]};return db['FreshsalesAccount'][_0x8121('0x21')](_0x2648b5)[_0x8121('0x29')](function(_0x170fba){_0x3f989b[_0x8121('0x21')]=_0x170fba;if(_0x3db2f9['query']['includeAll']){_0xad0614['include']=[{'all':!![]}];}return db['FreshsalesAccount'][_0x8121('0x44')](_0xad0614);})[_0x8121('0x29')](function(_0x160a4e){_0x3f989b[_0x8121('0x45')]=_0x160a4e;return _0x3f989b;})[_0x8121('0x29')](respondWithFilteredResult(_0x1b87cc,_0xad0614))[_0x8121('0x46')](handleError(_0x1b87cc,null));};exports[_0x8121('0x47')]=function(_0x159cf8,_0x1824e1){var _0x586ac3={'raw':![],'where':{'id':_0x159cf8[_0x8121('0x48')]['id']}},_0x4429d2={};_0x4429d2['model']=_[_0x8121('0x35')](db[_0x8121('0x2f')][_0x8121('0x30')]);_0x4429d2[_0x8121('0x34')]=_[_0x8121('0x35')](_0x159cf8[_0x8121('0x34')]);_0x4429d2[_0x8121('0x36')]=_[_0x8121('0x37')](_0x4429d2['model'],_0x4429d2[_0x8121('0x34')]);_0x586ac3[_0x8121('0x38')]=_['intersection'](_0x4429d2[_0x8121('0x33')],qs[_0x8121('0x39')](_0x159cf8['query'][_0x8121('0x39')]));_0x586ac3['attributes']=_0x586ac3[_0x8121('0x38')]['length']?_0x586ac3[_0x8121('0x38')]:_0x4429d2[_0x8121('0x33')];if(_0x159cf8[_0x8121('0x34')]['includeAll']){_0x586ac3[_0x8121('0x49')]=[{'all':!![]}];}_0x586ac3=_['merge']({},_0x586ac3,_0x159cf8[_0x8121('0x43')]);return db[_0x8121('0x2f')]['find'](_0x586ac3)[_0x8121('0x29')](handleEntityNotFound(_0x1824e1,null))[_0x8121('0x29')](respondWithResult(_0x1824e1,null))[_0x8121('0x46')](handleError(_0x1824e1,null));};exports[_0x8121('0x4a')]=function(_0x4bf985,_0x37dce4){return db[_0x8121('0x2f')][_0x8121('0x4a')](_0x4bf985['body'],{})[_0x8121('0x29')](respondWithResult(_0x37dce4,0xc9))[_0x8121('0x46')](handleError(_0x37dce4,null));};exports[_0x8121('0x28')]=function(_0x5cbd5a,_0x418241){if(_0x5cbd5a[_0x8121('0x4b')]['id']){delete _0x5cbd5a[_0x8121('0x4b')]['id'];}return db[_0x8121('0x2f')][_0x8121('0x4c')]({'where':{'id':_0x5cbd5a['params']['id']}})['then'](handleEntityNotFound(_0x418241,null))[_0x8121('0x29')](saveUpdates(_0x5cbd5a[_0x8121('0x4b')],null))['then'](respondWithResult(_0x418241,null))[_0x8121('0x46')](handleError(_0x418241,null));};exports[_0x8121('0x2a')]=function(_0x16f7d0,_0x5c6a6f){return db['FreshsalesAccount'][_0x8121('0x4c')]({'where':{'id':_0x16f7d0['params']['id']}})[_0x8121('0x29')](handleEntityNotFound(_0x5c6a6f,null))[_0x8121('0x29')](removeEntity(_0x5c6a6f,null))[_0x8121('0x46')](handleError(_0x5c6a6f,null));};exports[_0x8121('0x4d')]=function(_0x4eba48,_0x4193f4,_0x15fdb2){var _0x46a328={};var _0x2a1ded={};var _0x47bd78;var _0xcdcf0b;return db[_0x8121('0x2f')]['findOne']({'where':{'id':_0x4eba48[_0x8121('0x48')]['id']}})['then'](handleEntityNotFound(_0x4193f4,null))[_0x8121('0x29')](function(_0x15eec7){if(_0x15eec7){_0x47bd78=_0x15eec7;_0x2a1ded[_0x8121('0x33')]=_[_0x8121('0x35')](db[_0x8121('0x4e')][_0x8121('0x30')]);_0x2a1ded[_0x8121('0x34')]=_[_0x8121('0x35')](_0x4eba48['query']);_0x2a1ded[_0x8121('0x36')]=_[_0x8121('0x37')](_0x2a1ded[_0x8121('0x33')],_0x2a1ded[_0x8121('0x34')]);_0x46a328['attributes']=_[_0x8121('0x37')](_0x2a1ded[_0x8121('0x33')],qs[_0x8121('0x39')](_0x4eba48['query'][_0x8121('0x39')]));_0x46a328[_0x8121('0x38')]=_0x46a328['attributes'][_0x8121('0x3a')]?_0x46a328[_0x8121('0x38')]:_0x2a1ded[_0x8121('0x33')];_0x46a328[_0x8121('0x3c')]=qs[_0x8121('0x3d')](_0x4eba48['query'][_0x8121('0x3d')]);_0x46a328['where']=qs[_0x8121('0x36')](_[_0x8121('0x4f')](_0x4eba48[_0x8121('0x34')],_0x2a1ded['filters']));if(_0x4eba48[_0x8121('0x34')]['filter']){_0x46a328[_0x8121('0x3e')]=_['merge'](_0x46a328[_0x8121('0x3e')],{'$or':_[_0x8121('0x2e')](_0x46a328[_0x8121('0x38')],function(_0x2fd53f){var _0x3f3040={};_0x3f3040[_0x2fd53f]={'$like':'%'+_0x4eba48[_0x8121('0x34')]['filter']+'%'};return _0x3f3040;})});}_0x46a328=_[_0x8121('0x40')]({},_0x46a328,_0x4eba48[_0x8121('0x43')]);return _0x47bd78[_0x8121('0x4d')](_0x46a328);}})[_0x8121('0x29')](function(_0x1e7bae){if(_0x1e7bae){_0xcdcf0b=_0x1e7bae[_0x8121('0x3a')];if(!_0x4eba48['query'][_0x8121('0x3b')](_0x8121('0x50'))){_0x46a328[_0x8121('0x20')]=qs[_0x8121('0x20')](_0x4eba48['query'][_0x8121('0x20')]);_0x46a328[_0x8121('0x22')]=qs['offset'](_0x4eba48[_0x8121('0x34')]['offset']);}return _0x47bd78['getConfigurations'](_0x46a328);}})['then'](function(_0x1e7924){if(_0x1e7924){return _0x1e7924?{'count':_0xcdcf0b,'rows':_0x1e7924}:null;}})['then'](respondWithResult(_0x4193f4,null))[_0x8121('0x46')](handleError(_0x4193f4,null));};exports[_0x8121('0x51')]=function(_0xe36288,_0x5214c5,_0x22ab97){if(_0xe36288['body']['id']){delete _0xe36288[_0x8121('0x4b')]['id'];}return db[_0x8121('0x2f')][_0x8121('0x52')]({'where':{'id':_0xe36288['params']['id']}})[_0x8121('0x29')](handleEntityNotFound(_0x5214c5,null))[_0x8121('0x29')](function(_0x32cc6f){if(_0x32cc6f){_0xe36288[_0x8121('0x4b')]['AccountId']=_0x32cc6f['id'];_0xe36288[_0x8121('0x4b')][_0x8121('0x53')]=integrations[_0x8121('0x54')](_0xe36288[_0x8121('0x4b')][_0x8121('0x55')],_0xe36288[_0x8121('0x4b')][_0x8121('0x41')]);_0xe36288[_0x8121('0x4b')][_0x8121('0x56')]=integrations[_0x8121('0x57')](_0xe36288['body'][_0x8121('0x55')],_0xe36288[_0x8121('0x4b')][_0x8121('0x41')]);return db[_0x8121('0x4e')][_0x8121('0x4a')](_0xe36288['body'],{'include':[{'model':db['FreshsalesField'],'as':_0x8121('0x53')},{'model':db[_0x8121('0x58')],'as':_0x8121('0x56')}]});}return null;})[_0x8121('0x29')](respondWithResult(_0x5214c5,null))[_0x8121('0x46')](handleError(_0x5214c5,null));};exports[_0x8121('0x59')]=function(_0x192a6c,_0x49912f,_0x174729){var _0x4a26b2='';var _0x10e4d1='';return db['FreshsalesAccount'][_0x8121('0x52')]({'where':{'id':_0x192a6c['params']['id']},'attributes':['id',_0x8121('0x5a'),_0x8121('0x5b'),'apiKey']})[_0x8121('0x29')](handleEntityNotFound(_0x49912f,null))['then'](function(_0x21f6fd){if(_0x21f6fd){_0x10e4d1=_0x21f6fd[_0x8121('0x5a')];_0x4a26b2=_0x21f6fd['remoteUri'];var _0x4656be=_0x21f6fd[_0x8121('0x5b')][_0x8121('0x5c')](-0x1);if(_0x4656be==='/'){_0x4a26b2=_0x4a26b2[_0x8121('0x5d')](0x0,_0x4a26b2['lastIndexOf'](_0x4656be));}return rp({'method':_0x8121('0x5e'),'uri':util[_0x8121('0x5f')](_0x8121('0x60'),_0x4a26b2,_0x8121('0x61')),'headers':{'Authorization':_0x8121('0x62')+_0x21f6fd[_0x8121('0x63')]},'json':!![]});}})['then'](function(_0xe64b2){if(_0xe64b2){var _0x451e8b=_0xe64b2[_0x8121('0x64')];var _0x36f58f=![];var _0x5df146=null;for(_0x5df146=0x0;_0x5df146<_0x451e8b[_0x8121('0x3a')];_0x5df146++){if(_0x451e8b[_0x5df146][_0x8121('0x65')]===_0x10e4d1){_0x36f58f=!![];}}if(_0x36f58f){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x8121('0x66')});}}})[_0x8121('0x29')](respondWithResult(_0x49912f,null))['catch'](function(_0x5221fd){var _0x3e3a95=_0x192a6c[_0x8121('0x34')]['test']?0x1f4:_0x5221fd[_0x8121('0x67')]||0x1f4;logger['error'](_0x8121('0x68'),_0x8121('0x59'),_0x3e3a95,JSON[_0x8121('0x69')](_0x5221fd));delete _0x5221fd['name'];if(_0x3e3a95===0x191){_0x3e3a95=0x190;}_0x49912f[_0x8121('0x1c')](_0x3e3a95)['send'](_0x192a6c[_0x8121('0x34')]['test']?{'message':_0x8121('0x6a'),'statusCode':_0x5221fd[_0x8121('0x67')]}:_0x5221fd);});};
\ No newline at end of file
+var _0xd377=['VIRTUAL','filter','options','includeAll','include','catch','params','keys','length','find','create','body','update','destroy','getConfigurations','findOne','FreshsalesConfiguration','sort','hasOwnProperty','AccountId','Subjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','name','send','FreshsalesAccount','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','limit','order','where','pick','merge'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xd377,0x8c));var _0x7d37=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd377[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x7d37('0x0'));var rimraf=require(_0x7d37('0x1'));var zipdir=require(_0x7d37('0x2'));var jsonpatch=require(_0x7d37('0x3'));var rp=require(_0x7d37('0x4'));var moment=require('moment');var BPromise=require(_0x7d37('0x5'));var Mustache=require(_0x7d37('0x6'));var util=require(_0x7d37('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7d37('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7d37('0x9'));var crypto=require(_0x7d37('0xa'));var jsforce=require(_0x7d37('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x7d37('0xc'));var querystring=require(_0x7d37('0xd'));var Papa=require(_0x7d37('0xe'));var Redis=require('ioredis');var authService=require(_0x7d37('0xf'));var qs=require(_0x7d37('0x10'));var as=require(_0x7d37('0x11'));var hardwareService=require(_0x7d37('0x12'));var logger=require('../../config/logger')(_0x7d37('0x13'));var utils=require(_0x7d37('0x14'));var config=require(_0x7d37('0x15'));var licenseUtil=require(_0x7d37('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x7d37('0x17'));function respondWithStatusCode(_0x47a3c5,_0x9bf261){_0x9bf261=_0x9bf261||0xcc;return function(_0xb47f92){if(_0xb47f92){return _0x47a3c5[_0x7d37('0x18')](_0x9bf261);}return _0x47a3c5[_0x7d37('0x19')](_0x9bf261)[_0x7d37('0x1a')]();};}function respondWithResult(_0x4ac7fb,_0x1c3ccf){_0x1c3ccf=_0x1c3ccf||0xc8;return function(_0x4d90a5){if(_0x4d90a5){return _0x4ac7fb['status'](_0x1c3ccf)[_0x7d37('0x1b')](_0x4d90a5);}};}function respondWithFilteredResult(_0x131f38,_0x107aa1){return function(_0x5bd378){if(_0x5bd378){var _0x292543=typeof _0x107aa1[_0x7d37('0x1c')]===_0x7d37('0x1d')&&typeof _0x107aa1['limit']===_0x7d37('0x1d');var _0x55d970=_0x5bd378[_0x7d37('0x1e')];var _0x185d80=_0x292543?0x0:_0x107aa1[_0x7d37('0x1c')];var _0x34f92e=_0x292543?_0x5bd378[_0x7d37('0x1e')]:_0x107aa1[_0x7d37('0x1c')]+_0x107aa1['limit'];var _0x197fc6;if(_0x34f92e>=_0x55d970){_0x34f92e=_0x55d970;_0x197fc6=0xc8;}else{_0x197fc6=0xce;}_0x131f38[_0x7d37('0x19')](_0x197fc6);return _0x131f38[_0x7d37('0x1f')](_0x7d37('0x20'),_0x185d80+'-'+_0x34f92e+'/'+_0x55d970)[_0x7d37('0x1b')](_0x5bd378);}return null;};}function patchUpdates(_0x5d132c){return function(_0x3a4344){try{jsonpatch[_0x7d37('0x21')](_0x3a4344,_0x5d132c,!![]);}catch(_0x54d033){return BPromise[_0x7d37('0x22')](_0x54d033);}return _0x3a4344[_0x7d37('0x23')]();};}function saveUpdates(_0x4676c3,_0x23d4d0){return function(_0x53c7dd){if(_0x53c7dd){return _0x53c7dd['update'](_0x4676c3)[_0x7d37('0x24')](function(_0x4f4eb9){return _0x4f4eb9;});}return null;};}function removeEntity(_0xbe37fc,_0x506ca8){return function(_0x5b13b8){if(_0x5b13b8){return _0x5b13b8['destroy']()[_0x7d37('0x24')](function(){_0xbe37fc[_0x7d37('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4087e1,_0x2b4ec4){return function(_0x5a950d){if(!_0x5a950d){_0x4087e1['sendStatus'](0x194);}return _0x5a950d;};}function handleError(_0x485df5,_0x48bf35){_0x48bf35=_0x48bf35||0x1f4;return function(_0x1c52b9){logger['error'](_0x1c52b9['stack']);if(_0x1c52b9[_0x7d37('0x25')]){delete _0x1c52b9[_0x7d37('0x25')];}_0x485df5[_0x7d37('0x19')](_0x48bf35)[_0x7d37('0x26')](_0x1c52b9);};}exports['index']=function(_0x1af14b,_0x594f99){var _0x11af85={},_0x3cee9f={},_0x802718={'count':0x0,'rows':[]};var _0x5c32c5=_['map'](db[_0x7d37('0x27')][_0x7d37('0x28')],function(_0x4ea2ff){return{'name':_0x4ea2ff[_0x7d37('0x29')],'type':_0x4ea2ff[_0x7d37('0x2a')][_0x7d37('0x2b')]};});_0x3cee9f[_0x7d37('0x2c')]=_[_0x7d37('0x2d')](_0x5c32c5,_0x7d37('0x25'));_0x3cee9f['query']=_['keys'](_0x1af14b[_0x7d37('0x2e')]);_0x3cee9f[_0x7d37('0x2f')]=_['intersection'](_0x3cee9f[_0x7d37('0x2c')],_0x3cee9f[_0x7d37('0x2e')]);_0x11af85[_0x7d37('0x30')]=_[_0x7d37('0x31')](_0x3cee9f['model'],qs[_0x7d37('0x32')](_0x1af14b[_0x7d37('0x2e')][_0x7d37('0x32')]));_0x11af85[_0x7d37('0x30')]=_0x11af85[_0x7d37('0x30')]['length']?_0x11af85[_0x7d37('0x30')]:_0x3cee9f[_0x7d37('0x2c')];if(!_0x1af14b[_0x7d37('0x2e')]['hasOwnProperty']('nolimit')){_0x11af85[_0x7d37('0x33')]=qs[_0x7d37('0x33')](_0x1af14b[_0x7d37('0x2e')][_0x7d37('0x33')]);_0x11af85[_0x7d37('0x1c')]=qs['offset'](_0x1af14b['query'][_0x7d37('0x1c')]);}_0x11af85[_0x7d37('0x34')]=qs['sort'](_0x1af14b['query']['sort']);_0x11af85[_0x7d37('0x35')]=qs[_0x7d37('0x2f')](_[_0x7d37('0x36')](_0x1af14b[_0x7d37('0x2e')],_0x3cee9f[_0x7d37('0x2f')]),_0x5c32c5);if(_0x1af14b[_0x7d37('0x2e')]['filter']){_0x11af85[_0x7d37('0x35')]=_[_0x7d37('0x37')](_0x11af85[_0x7d37('0x35')],{'$or':_[_0x7d37('0x2d')](_0x5c32c5,function(_0x2819b8){if(_0x2819b8[_0x7d37('0x2a')]!==_0x7d37('0x38')){var _0x5c8fa1={};_0x5c8fa1[_0x2819b8['name']]={'$like':'%'+_0x1af14b['query'][_0x7d37('0x39')]+'%'};return _0x5c8fa1;}})});}_0x11af85=_[_0x7d37('0x37')]({},_0x11af85,_0x1af14b[_0x7d37('0x3a')]);var _0xa1355={'where':_0x11af85[_0x7d37('0x35')]};return db[_0x7d37('0x27')]['count'](_0xa1355)[_0x7d37('0x24')](function(_0x251f8c){_0x802718[_0x7d37('0x1e')]=_0x251f8c;if(_0x1af14b[_0x7d37('0x2e')][_0x7d37('0x3b')]){_0x11af85[_0x7d37('0x3c')]=[{'all':!![]}];}return db[_0x7d37('0x27')]['findAll'](_0x11af85);})[_0x7d37('0x24')](function(_0x1b9e85){_0x802718['rows']=_0x1b9e85;return _0x802718;})[_0x7d37('0x24')](respondWithFilteredResult(_0x594f99,_0x11af85))[_0x7d37('0x3d')](handleError(_0x594f99,null));};exports['show']=function(_0x4e170e,_0x1ece88){var _0x8fd0ff={'raw':![],'where':{'id':_0x4e170e[_0x7d37('0x3e')]['id']}},_0x30964f={};_0x30964f[_0x7d37('0x2c')]=_['keys'](db['FreshsalesAccount'][_0x7d37('0x28')]);_0x30964f['query']=_[_0x7d37('0x3f')](_0x4e170e[_0x7d37('0x2e')]);_0x30964f[_0x7d37('0x2f')]=_[_0x7d37('0x31')](_0x30964f[_0x7d37('0x2c')],_0x30964f['query']);_0x8fd0ff[_0x7d37('0x30')]=_[_0x7d37('0x31')](_0x30964f[_0x7d37('0x2c')],qs[_0x7d37('0x32')](_0x4e170e[_0x7d37('0x2e')][_0x7d37('0x32')]));_0x8fd0ff[_0x7d37('0x30')]=_0x8fd0ff[_0x7d37('0x30')][_0x7d37('0x40')]?_0x8fd0ff['attributes']:_0x30964f[_0x7d37('0x2c')];if(_0x4e170e[_0x7d37('0x2e')][_0x7d37('0x3b')]){_0x8fd0ff[_0x7d37('0x3c')]=[{'all':!![]}];}_0x8fd0ff=_[_0x7d37('0x37')]({},_0x8fd0ff,_0x4e170e[_0x7d37('0x3a')]);return db['FreshsalesAccount'][_0x7d37('0x41')](_0x8fd0ff)[_0x7d37('0x24')](handleEntityNotFound(_0x1ece88,null))['then'](respondWithResult(_0x1ece88,null))[_0x7d37('0x3d')](handleError(_0x1ece88,null));};exports['create']=function(_0x59a1cd,_0xb0ddcf){return db[_0x7d37('0x27')][_0x7d37('0x42')](_0x59a1cd[_0x7d37('0x43')],{})[_0x7d37('0x24')](respondWithResult(_0xb0ddcf,0xc9))['catch'](handleError(_0xb0ddcf,null));};exports[_0x7d37('0x44')]=function(_0x4595be,_0x24d6a1){if(_0x4595be['body']['id']){delete _0x4595be['body']['id'];}return db[_0x7d37('0x27')][_0x7d37('0x41')]({'where':{'id':_0x4595be[_0x7d37('0x3e')]['id']}})['then'](handleEntityNotFound(_0x24d6a1,null))['then'](saveUpdates(_0x4595be[_0x7d37('0x43')],null))['then'](respondWithResult(_0x24d6a1,null))['catch'](handleError(_0x24d6a1,null));};exports[_0x7d37('0x45')]=function(_0x299e39,_0x200fcf){return db['FreshsalesAccount'][_0x7d37('0x41')]({'where':{'id':_0x299e39[_0x7d37('0x3e')]['id']}})[_0x7d37('0x24')](handleEntityNotFound(_0x200fcf,null))[_0x7d37('0x24')](removeEntity(_0x200fcf,null))[_0x7d37('0x3d')](handleError(_0x200fcf,null));};exports[_0x7d37('0x46')]=function(_0xeb8ebd,_0x2eed47,_0x5ab1f2){var _0x55b442={};var _0x3e8715={};var _0x1f925b;var _0x4f8499;return db[_0x7d37('0x27')][_0x7d37('0x47')]({'where':{'id':_0xeb8ebd[_0x7d37('0x3e')]['id']}})[_0x7d37('0x24')](handleEntityNotFound(_0x2eed47,null))[_0x7d37('0x24')](function(_0x545853){if(_0x545853){_0x1f925b=_0x545853;_0x3e8715[_0x7d37('0x2c')]=_[_0x7d37('0x3f')](db[_0x7d37('0x48')][_0x7d37('0x28')]);_0x3e8715['query']=_[_0x7d37('0x3f')](_0xeb8ebd[_0x7d37('0x2e')]);_0x3e8715['filters']=_['intersection'](_0x3e8715[_0x7d37('0x2c')],_0x3e8715[_0x7d37('0x2e')]);_0x55b442['attributes']=_[_0x7d37('0x31')](_0x3e8715['model'],qs[_0x7d37('0x32')](_0xeb8ebd[_0x7d37('0x2e')][_0x7d37('0x32')]));_0x55b442[_0x7d37('0x30')]=_0x55b442[_0x7d37('0x30')][_0x7d37('0x40')]?_0x55b442['attributes']:_0x3e8715[_0x7d37('0x2c')];_0x55b442[_0x7d37('0x34')]=qs[_0x7d37('0x49')](_0xeb8ebd['query'][_0x7d37('0x49')]);_0x55b442[_0x7d37('0x35')]=qs[_0x7d37('0x2f')](_['pick'](_0xeb8ebd[_0x7d37('0x2e')],_0x3e8715[_0x7d37('0x2f')]));if(_0xeb8ebd[_0x7d37('0x2e')][_0x7d37('0x39')]){_0x55b442[_0x7d37('0x35')]=_['merge'](_0x55b442[_0x7d37('0x35')],{'$or':_['map'](_0x55b442[_0x7d37('0x30')],function(_0x106f94){var _0x2340ef={};_0x2340ef[_0x106f94]={'$like':'%'+_0xeb8ebd[_0x7d37('0x2e')][_0x7d37('0x39')]+'%'};return _0x2340ef;})});}_0x55b442=_['merge']({},_0x55b442,_0xeb8ebd[_0x7d37('0x3a')]);return _0x1f925b[_0x7d37('0x46')](_0x55b442);}})[_0x7d37('0x24')](function(_0x37eb02){if(_0x37eb02){_0x4f8499=_0x37eb02[_0x7d37('0x40')];if(!_0xeb8ebd['query'][_0x7d37('0x4a')]('nolimit')){_0x55b442[_0x7d37('0x33')]=qs[_0x7d37('0x33')](_0xeb8ebd[_0x7d37('0x2e')]['limit']);_0x55b442[_0x7d37('0x1c')]=qs[_0x7d37('0x1c')](_0xeb8ebd[_0x7d37('0x2e')][_0x7d37('0x1c')]);}return _0x1f925b[_0x7d37('0x46')](_0x55b442);}})['then'](function(_0x2c48ba){if(_0x2c48ba){return _0x2c48ba?{'count':_0x4f8499,'rows':_0x2c48ba}:null;}})['then'](respondWithResult(_0x2eed47,null))['catch'](handleError(_0x2eed47,null));};exports['addConfiguration']=function(_0x559844,_0x649acf,_0x46f245){if(_0x559844['body']['id']){delete _0x559844[_0x7d37('0x43')]['id'];}return db[_0x7d37('0x27')][_0x7d37('0x47')]({'where':{'id':_0x559844[_0x7d37('0x3e')]['id']}})[_0x7d37('0x24')](handleEntityNotFound(_0x649acf,null))['then'](function(_0x47611a){if(_0x47611a){_0x559844[_0x7d37('0x43')][_0x7d37('0x4b')]=_0x47611a['id'];_0x559844[_0x7d37('0x43')][_0x7d37('0x4c')]=integrations['getSubjects'](_0x559844['body'][_0x7d37('0x4d')],_0x559844[_0x7d37('0x43')][_0x7d37('0x2a')]);_0x559844[_0x7d37('0x43')][_0x7d37('0x4e')]=integrations[_0x7d37('0x4f')](_0x559844['body'][_0x7d37('0x4d')],_0x559844[_0x7d37('0x43')][_0x7d37('0x2a')]);return db[_0x7d37('0x48')][_0x7d37('0x42')](_0x559844['body'],{'include':[{'model':db[_0x7d37('0x50')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':'Descriptions'}]});}return null;})[_0x7d37('0x24')](respondWithResult(_0x649acf,null))[_0x7d37('0x3d')](handleError(_0x649acf,null));};exports[_0x7d37('0x51')]=function(_0x5f0075,_0x50901f,_0x198aea){var _0x5a233c='';var _0x3d52de='';return db['FreshsalesAccount'][_0x7d37('0x47')]({'where':{'id':_0x5f0075[_0x7d37('0x3e')]['id']},'attributes':['id',_0x7d37('0x52'),_0x7d37('0x53'),_0x7d37('0x54')]})[_0x7d37('0x24')](handleEntityNotFound(_0x50901f,null))[_0x7d37('0x24')](function(_0x1440cf){if(_0x1440cf){_0x3d52de=_0x1440cf[_0x7d37('0x52')];_0x5a233c=_0x1440cf[_0x7d37('0x53')];var _0x44e0f6=_0x1440cf[_0x7d37('0x53')][_0x7d37('0x55')](-0x1);if(_0x44e0f6==='/'){_0x5a233c=_0x5a233c[_0x7d37('0x56')](0x0,_0x5a233c['lastIndexOf'](_0x44e0f6));}return rp({'method':_0x7d37('0x57'),'uri':util[_0x7d37('0x58')](_0x7d37('0x59'),_0x5a233c,_0x7d37('0x5a')),'headers':{'Authorization':_0x7d37('0x5b')+_0x1440cf[_0x7d37('0x54')]},'json':!![]});}})[_0x7d37('0x24')](function(_0x69c84f){if(_0x69c84f){var _0x3d3a35=_0x69c84f['users'];var _0x8f9141=![];var _0x43c52e=null;for(_0x43c52e=0x0;_0x43c52e<_0x3d3a35['length'];_0x43c52e++){if(_0x3d3a35[_0x43c52e][_0x7d37('0x5c')]===_0x3d52de){_0x8f9141=!![];}}if(_0x8f9141){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x7d37('0x5d')});}}})[_0x7d37('0x24')](respondWithResult(_0x50901f,null))[_0x7d37('0x3d')](function(_0x421bba){var _0x253ca7=_0x5f0075['query'][_0x7d37('0x5e')]?0x1f4:_0x421bba[_0x7d37('0x5f')]||0x1f4;logger['error'](_0x7d37('0x60'),_0x7d37('0x51'),_0x253ca7,JSON['stringify'](_0x421bba));delete _0x421bba['name'];if(_0x253ca7===0x191){_0x253ca7=0x190;}_0x50901f[_0x7d37('0x19')](_0x253ca7)[_0x7d37('0x26')](_0x5f0075['query'][_0x7d37('0x5e')]?{'message':_0x7d37('0x61'),'statusCode':_0x421bba['statusCode']}:_0x421bba);});};
\ No newline at end of file
index 187ba66..d590ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7880=['bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','util','../../config/logger','api','moment'];(function(_0x560384,_0x3a5270){var _0x8dd816=function(_0x540c64){while(--_0x540c64){_0x560384['push'](_0x560384['shift']());}};_0x8dd816(++_0x3a5270);}(_0x7880,0x1f4));var _0x0788=function(_0x23cfaf,_0x1d8545){_0x23cfaf=_0x23cfaf-0x0;var _0xf8af44=_0x7880[_0x23cfaf];return _0xf8af44;};'use strict';var _=require('lodash');var util=require(_0x0788('0x0'));var logger=require(_0x0788('0x1'))(_0x0788('0x2'));var moment=require(_0x0788('0x3'));var BPromise=require(_0x0788('0x4'));var rp=require(_0x0788('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0788('0x6'));var config=require(_0x0788('0x7'));var attributes=require(_0x0788('0x8'));var integrations=require(_0x0788('0x9'));module[_0x0788('0xa')]=function(_0x775629,_0x3f9cb8){return _0x775629[_0x0788('0xb')](_0x0788('0xc'),attributes,{'tableName':_0x0788('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6343=['../../components/integrations/configuration','exports','define','../../config/logger','api','rimraf','../../config/environment'];(function(_0x3eac10,_0x4a1ca9){var _0x890c2e=function(_0x5ca835){while(--_0x5ca835){_0x3eac10['push'](_0x3eac10['shift']());}};_0x890c2e(++_0x4a1ca9);}(_0x6343,0x168));var _0x3634=function(_0x4b92f7,_0x4b92c2){_0x4b92f7=_0x4b92f7-0x0;var _0x38b1db=_0x6343[_0x4b92f7];return _0x38b1db;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3634('0x0'))(_0x3634('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3634('0x2'));var config=require(_0x3634('0x3'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0x3634('0x4'));module[_0x3634('0x5')]=function(_0x4bb496,_0x302828){return _0x4bb496[_0x3634('0x6')]('FreshsalesAccount',attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2cea0dc..86a3bbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5204=['catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','attributes','include','model','map','then','ShowFreshsalesAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5204,0xdf));var _0x4520=function(_0x145b3c,_0x31ea4a){_0x145b3c=_0x145b3c-0x0;var _0x1b6e36=_0x5204[_0x145b3c];return _0x1b6e36;};'use strict';var _=require(_0x4520('0x0'));var util=require(_0x4520('0x1'));var moment=require('moment');var BPromise=require(_0x4520('0x2'));var rs=require(_0x4520('0x3'));var fs=require('fs');var Redis=require(_0x4520('0x4'));var db=require(_0x4520('0x5'))['db'];var utils=require(_0x4520('0x6'));var logger=require('../../config/logger')(_0x4520('0x7'));var config=require('../../config/environment');var jayson=require(_0x4520('0x8'));var client=jayson[_0x4520('0x9')][_0x4520('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe741c2,_0x396d29,_0x446dc9){return new BPromise(function(_0x27890f,_0x55b44f){return client[_0x4520('0xb')](_0xe741c2,_0x446dc9)['then'](function(_0x168e62){logger[_0x4520('0xc')](_0x4520('0xd'),_0x396d29,_0x4520('0xe'));logger[_0x4520('0xf')](_0x4520('0x10'),_0x396d29,_0x4520('0xe'),JSON[_0x4520('0x11')](_0x168e62));if(_0x168e62[_0x4520('0x12')]){if(_0x168e62[_0x4520('0x12')][_0x4520('0x13')]===0x1f4){logger[_0x4520('0x12')](_0x4520('0xd'),_0x396d29,_0x168e62[_0x4520('0x12')][_0x4520('0x14')]);return _0x55b44f(_0x168e62[_0x4520('0x12')][_0x4520('0x14')]);}logger[_0x4520('0x12')](_0x4520('0xd'),_0x396d29,_0x168e62[_0x4520('0x12')][_0x4520('0x14')]);return _0x27890f(_0x168e62['error'][_0x4520('0x14')]);}else{logger[_0x4520('0xc')](_0x4520('0xd'),_0x396d29,_0x4520('0xe'));_0x27890f(_0x168e62[_0x4520('0x15')]['message']);}})[_0x4520('0x16')](function(_0x33ac29){logger[_0x4520('0x12')](_0x4520('0xd'),_0x396d29,_0x33ac29);_0x55b44f(_0x33ac29);});});}exports[_0x4520('0x17')]=function(_0x2e00f4){var _0x1dcf51=this;return new Promise(function(_0x4ba69f,_0x3791b6){return db[_0x4520('0x18')][_0x4520('0x19')]({'raw':_0x2e00f4[_0x4520('0x1a')]?_0x2e00f4['options'][_0x4520('0x1b')]===undefined?!![]:![]:!![],'where':_0x2e00f4['options']?_0x2e00f4['options']['where']||null:null,'attributes':_0x2e00f4[_0x4520('0x1a')]?_0x2e00f4['options'][_0x4520('0x1c')]||null:null,'limit':_0x2e00f4[_0x4520('0x1a')]?_0x2e00f4[_0x4520('0x1a')]['limit']||null:null,'include':_0x2e00f4[_0x4520('0x1a')]?_0x2e00f4[_0x4520('0x1a')][_0x4520('0x1d')]?_['map'](_0x2e00f4[_0x4520('0x1a')][_0x4520('0x1d')],function(_0x24eacd){return{'model':db[_0x24eacd[_0x4520('0x1e')]],'as':_0x24eacd['as'],'attributes':_0x24eacd[_0x4520('0x1c')],'include':_0x24eacd['include']?_[_0x4520('0x1f')](_0x24eacd[_0x4520('0x1d')],function(_0x3532aa){return{'model':db[_0x3532aa[_0x4520('0x1e')]],'as':_0x3532aa['as'],'attributes':_0x3532aa['attributes'],'include':_0x3532aa[_0x4520('0x1d')]?_[_0x4520('0x1f')](_0x3532aa[_0x4520('0x1d')],function(_0x21e1f3){return{'model':db[_0x21e1f3[_0x4520('0x1e')]],'as':_0x21e1f3['as'],'attributes':_0x21e1f3[_0x4520('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4520('0x20')](function(_0x195c58){logger[_0x4520('0xc')](_0x4520('0x17'),_0x2e00f4);logger['debug'](_0x4520('0x17'),_0x2e00f4,JSON['stringify'](_0x195c58));_0x4ba69f(_0x195c58);})[_0x4520('0x16')](function(_0x14778a){logger[_0x4520('0x12')](_0x4520('0x17'),_0x14778a[_0x4520('0x14')],_0x2e00f4);_0x3791b6(_0x1dcf51[_0x4520('0x12')](0x1f4,_0x14778a['message']));});});};exports[_0x4520('0x21')]=function(_0x508c05){var _0x2585eb=this;return new Promise(function(_0x4a6755,_0xf6caff){return db['FreshsalesAccount'][_0x4520('0x22')]({'raw':_0x508c05['options']?_0x508c05['options'][_0x4520('0x1b')]===undefined?!![]:![]:!![],'where':_0x508c05[_0x4520('0x1a')]?_0x508c05[_0x4520('0x1a')]['where']||null:null,'attributes':_0x508c05[_0x4520('0x1a')]?_0x508c05[_0x4520('0x1a')][_0x4520('0x1c')]||null:null,'include':_0x508c05[_0x4520('0x1a')]?_0x508c05['options']['include']?_[_0x4520('0x1f')](_0x508c05[_0x4520('0x1a')]['include'],function(_0x779e94){return{'model':db[_0x779e94[_0x4520('0x1e')]],'as':_0x779e94['as'],'attributes':_0x779e94[_0x4520('0x1c')],'include':_0x779e94[_0x4520('0x1d')]?_[_0x4520('0x1f')](_0x779e94[_0x4520('0x1d')],function(_0x550a0f){return{'model':db[_0x550a0f[_0x4520('0x1e')]],'as':_0x550a0f['as'],'attributes':_0x550a0f[_0x4520('0x1c')],'include':_0x550a0f['include']?_[_0x4520('0x1f')](_0x550a0f['include'],function(_0x8bf557){return{'model':db[_0x8bf557[_0x4520('0x1e')]],'as':_0x8bf557['as'],'attributes':_0x8bf557['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5527a6){logger[_0x4520('0xc')](_0x4520('0x21'),_0x508c05);logger[_0x4520('0xf')](_0x4520('0x21'),_0x508c05,JSON[_0x4520('0x11')](_0x5527a6));_0x4a6755(_0x5527a6);})[_0x4520('0x16')](function(_0x3bfc83){logger['error'](_0x4520('0x21'),_0x3bfc83[_0x4520('0x14')],_0x508c05);_0xf6caff(_0x2585eb[_0x4520('0x12')](0x1f4,_0x3bfc83['message']));});});};
\ No newline at end of file
+var _0xf61e=['include','map','then','ShowFreshsalesAccount','FreshsalesAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetFreshsalesAccount','findAll','options','raw','where','attributes','limit','model'];(function(_0x13d4cc,_0x3aa0ae){var _0x1ea768=function(_0x1908da){while(--_0x1908da){_0x13d4cc['push'](_0x13d4cc['shift']());}};_0x1ea768(++_0x3aa0ae);}(_0xf61e,0x191));var _0xef61=function(_0x21a307,_0x538fdd){_0x21a307=_0x21a307-0x0;var _0x3b667f=_0xf61e[_0x21a307];return _0x3b667f;};'use strict';var _=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var moment=require(_0xef61('0x2'));var BPromise=require(_0xef61('0x3'));var rs=require(_0xef61('0x4'));var fs=require('fs');var Redis=require(_0xef61('0x5'));var db=require(_0xef61('0x6'))['db'];var utils=require(_0xef61('0x7'));var logger=require(_0xef61('0x8'))(_0xef61('0x9'));var config=require(_0xef61('0xa'));var jayson=require(_0xef61('0xb'));var client=jayson['client'][_0xef61('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3e2f79,_0x4f0cc5,_0x2242a7){return new BPromise(function(_0x277fa1,_0x106e7f){return client['request'](_0x3e2f79,_0x2242a7)['then'](function(_0x188894){logger[_0xef61('0xd')](_0xef61('0xe'),_0x4f0cc5,_0xef61('0xf'));logger[_0xef61('0x10')](_0xef61('0x11'),_0x4f0cc5,_0xef61('0xf'),JSON[_0xef61('0x12')](_0x188894));if(_0x188894[_0xef61('0x13')]){if(_0x188894[_0xef61('0x13')][_0xef61('0x14')]===0x1f4){logger[_0xef61('0x13')](_0xef61('0xe'),_0x4f0cc5,_0x188894[_0xef61('0x13')]['message']);return _0x106e7f(_0x188894[_0xef61('0x13')]['message']);}logger[_0xef61('0x13')](_0xef61('0xe'),_0x4f0cc5,_0x188894[_0xef61('0x13')][_0xef61('0x15')]);return _0x277fa1(_0x188894['error'][_0xef61('0x15')]);}else{logger[_0xef61('0xd')](_0xef61('0xe'),_0x4f0cc5,_0xef61('0xf'));_0x277fa1(_0x188894['result'][_0xef61('0x15')]);}})[_0xef61('0x16')](function(_0x4f7a62){logger[_0xef61('0x13')](_0xef61('0xe'),_0x4f0cc5,_0x4f7a62);_0x106e7f(_0x4f7a62);});});}exports[_0xef61('0x17')]=function(_0x22dc1b){var _0xfc36d6=this;return new Promise(function(_0x28315a,_0xdd5e38){return db['FreshsalesAccount'][_0xef61('0x18')]({'raw':_0x22dc1b[_0xef61('0x19')]?_0x22dc1b['options'][_0xef61('0x1a')]===undefined?!![]:![]:!![],'where':_0x22dc1b[_0xef61('0x19')]?_0x22dc1b[_0xef61('0x19')][_0xef61('0x1b')]||null:null,'attributes':_0x22dc1b[_0xef61('0x19')]?_0x22dc1b[_0xef61('0x19')][_0xef61('0x1c')]||null:null,'limit':_0x22dc1b['options']?_0x22dc1b['options'][_0xef61('0x1d')]||null:null,'include':_0x22dc1b['options']?_0x22dc1b[_0xef61('0x19')]['include']?_['map'](_0x22dc1b[_0xef61('0x19')]['include'],function(_0x53181b){return{'model':db[_0x53181b[_0xef61('0x1e')]],'as':_0x53181b['as'],'attributes':_0x53181b[_0xef61('0x1c')],'include':_0x53181b[_0xef61('0x1f')]?_[_0xef61('0x20')](_0x53181b['include'],function(_0x16b144){return{'model':db[_0x16b144['model']],'as':_0x16b144['as'],'attributes':_0x16b144[_0xef61('0x1c')],'include':_0x16b144[_0xef61('0x1f')]?_[_0xef61('0x20')](_0x16b144[_0xef61('0x1f')],function(_0x2155f1){return{'model':db[_0x2155f1[_0xef61('0x1e')]],'as':_0x2155f1['as'],'attributes':_0x2155f1[_0xef61('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xef61('0x21')](function(_0x297df7){logger[_0xef61('0xd')](_0xef61('0x17'),_0x22dc1b);logger[_0xef61('0x10')](_0xef61('0x17'),_0x22dc1b,JSON[_0xef61('0x12')](_0x297df7));_0x28315a(_0x297df7);})[_0xef61('0x16')](function(_0x85978){logger[_0xef61('0x13')](_0xef61('0x17'),_0x85978[_0xef61('0x15')],_0x22dc1b);_0xdd5e38(_0xfc36d6[_0xef61('0x13')](0x1f4,_0x85978[_0xef61('0x15')]));});});};exports[_0xef61('0x22')]=function(_0x4f35ad){var _0x51d5d1=this;return new Promise(function(_0x38b522,_0x36713e){return db[_0xef61('0x23')]['find']({'raw':_0x4f35ad[_0xef61('0x19')]?_0x4f35ad[_0xef61('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4f35ad[_0xef61('0x19')]?_0x4f35ad['options']['where']||null:null,'attributes':_0x4f35ad[_0xef61('0x19')]?_0x4f35ad['options'][_0xef61('0x1c')]||null:null,'include':_0x4f35ad['options']?_0x4f35ad[_0xef61('0x19')][_0xef61('0x1f')]?_[_0xef61('0x20')](_0x4f35ad[_0xef61('0x19')][_0xef61('0x1f')],function(_0x1bdcb9){return{'model':db[_0x1bdcb9[_0xef61('0x1e')]],'as':_0x1bdcb9['as'],'attributes':_0x1bdcb9[_0xef61('0x1c')],'include':_0x1bdcb9[_0xef61('0x1f')]?_[_0xef61('0x20')](_0x1bdcb9['include'],function(_0x569db6){return{'model':db[_0x569db6[_0xef61('0x1e')]],'as':_0x569db6['as'],'attributes':_0x569db6[_0xef61('0x1c')],'include':_0x569db6[_0xef61('0x1f')]?_[_0xef61('0x20')](_0x569db6['include'],function(_0x1c38dc){return{'model':db[_0x1c38dc[_0xef61('0x1e')]],'as':_0x1c38dc['as'],'attributes':_0x1c38dc[_0xef61('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x59b97b){logger['info'](_0xef61('0x22'),_0x4f35ad);logger['debug']('ShowFreshsalesAccount',_0x4f35ad,JSON['stringify'](_0x59b97b));_0x38b522(_0x59b97b);})[_0xef61('0x16')](function(_0x294063){logger[_0xef61('0x13')]('ShowFreshsalesAccount',_0x294063['message'],_0x4f35ad);_0x36713e(_0x51d5d1['error'](0x1f4,_0x294063[_0xef61('0x15')]));});});};
\ No newline at end of file
index 59af3f1..7cae62f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e5=['Router','fs-extra','../../components/auth/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','/:id','show','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','post','update','destroy','exports','multer','path','connect-timeout'];(function(_0x26efac,_0x21ab8a){var _0x8482e4=function(_0x14db32){while(--_0x14db32){_0x26efac['push'](_0x26efac['shift']());}};_0x8482e4(++_0x21ab8a);}(_0xc5e5,0x66));var _0x5c5e=function(_0x1bf7ba,_0x41c7bd){_0x1bf7ba=_0x1bf7ba-0x0;var _0x4eeead=_0xc5e5[_0x1bf7ba];return _0x4eeead;};'use strict';var multer=require(_0x5c5e('0x0'));var util=require('util');var path=require(_0x5c5e('0x1'));var timeout=require(_0x5c5e('0x2'));var express=require('express');var router=express[_0x5c5e('0x3')]();var fs_extra=require(_0x5c5e('0x4'));var auth=require(_0x5c5e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5c5e('0x6'));var controller=require(_0x5c5e('0x7'));router[_0x5c5e('0x8')]('/',auth[_0x5c5e('0x9')](),controller['index']);router[_0x5c5e('0x8')](_0x5c5e('0xa'),auth['isAuthenticated'](),controller[_0x5c5e('0xb')]);router[_0x5c5e('0x8')](_0x5c5e('0xc'),auth['isAuthenticated'](),controller[_0x5c5e('0xd')]);router[_0x5c5e('0x8')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x5c5e('0xe')]);router[_0x5c5e('0x8')](_0x5c5e('0xf'),auth[_0x5c5e('0x9')](),controller[_0x5c5e('0x10')]);router[_0x5c5e('0x11')]('/',auth[_0x5c5e('0x9')](),controller['create']);router['put']('/:id',auth[_0x5c5e('0x9')](),controller[_0x5c5e('0x12')]);router['delete'](_0x5c5e('0xa'),auth[_0x5c5e('0x9')](),controller[_0x5c5e('0x13')]);module[_0x5c5e('0x14')]=router;
\ No newline at end of file
+var _0x880d=['./intFreshsalesConfiguration.controller','isAuthenticated','get','/:id','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','post','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x278b30,_0x5cf8a3){var _0x535b59=function(_0x1795c6){while(--_0x1795c6){_0x278b30['push'](_0x278b30['shift']());}};_0x535b59(++_0x5cf8a3);}(_0x880d,0x177));var _0xd880=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x880d[_0x4d8ed9];return _0x1e2140;};'use strict';var multer=require(_0xd880('0x0'));var util=require(_0xd880('0x1'));var path=require(_0xd880('0x2'));var timeout=require(_0xd880('0x3'));var express=require(_0xd880('0x4'));var router=express[_0xd880('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd880('0x6'));var interaction=require(_0xd880('0x7'));var config=require(_0xd880('0x8'));var controller=require(_0xd880('0x9'));router['get']('/',auth[_0xd880('0xa')](),controller['index']);router[_0xd880('0xb')](_0xd880('0xc'),auth[_0xd880('0xa')](),controller['show']);router['get'](_0xd880('0xd'),auth[_0xd880('0xa')](),controller[_0xd880('0xe')]);router[_0xd880('0xb')](_0xd880('0xf'),auth['isAuthenticated'](),controller[_0xd880('0x10')]);router[_0xd880('0xb')](_0xd880('0x11'),auth[_0xd880('0xa')](),controller[_0xd880('0x12')]);router[_0xd880('0x13')]('/',auth['isAuthenticated'](),controller[_0xd880('0x14')]);router[_0xd880('0x15')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0xd880('0xc'),auth['isAuthenticated'](),controller[_0xd880('0x16')]);module[_0xd880('0x17')]=router;
\ No newline at end of file
index 26660f5..90d8844 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec9=['sequelize','exports'];(function(_0x54f696,_0x532152){var _0x1323d8=function(_0x336656){while(--_0x336656){_0x54f696['push'](_0x54f696['shift']());}};_0x1323d8(++_0x532152);}(_0x3ec9,0x1be));var _0x93ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ec9[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x93ec('0x0'));module[_0x93ec('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcb77=['exports','STRING','sequelize'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xcb77,0x17f));var _0x7cb7=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0xcb77[_0x43b08];return _0x5e05f4;};'use strict';var Sequelize=require(_0x7cb7('0x0'));module[_0x7cb7('0x1')]={'name':{'type':Sequelize[_0x7cb7('0x2')]},'description':{'type':Sequelize[_0x7cb7('0x2')]}};
\ No newline at end of file
index 89f06b5..9685472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54c4=['body','getSubjects','findOne','FreshsalesField','order','pick','getDescriptions','getFields','eml-format','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','jsforce','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','send','map','rawAttributes','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','FreshsalesConfiguration','includeAll','include','findAll','rows','catch','params','create'];(function(_0x3cceab,_0x1421b1){var _0xceead2=function(_0x4ebee4){while(--_0x4ebee4){_0x3cceab['push'](_0x3cceab['shift']());}};_0xceead2(++_0x1421b1);}(_0x54c4,0xdd));var _0x454c=function(_0x1cb988,_0x46787a){_0x1cb988=_0x1cb988-0x0;var _0x388127=_0x54c4[_0x1cb988];return _0x388127;};'use strict';var emlformat=require(_0x454c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x454c('0x1'));var jsonpatch=require(_0x454c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x454c('0x3'));var util=require(_0x454c('0x4'));var path=require(_0x454c('0x5'));var sox=require(_0x454c('0x6'));var csv=require(_0x454c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x454c('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x454c('0x9'));var Redis=require('ioredis');var authService=require(_0x454c('0xa'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x454c('0xb'));var logger=require('../../config/logger')(_0x454c('0xc'));var utils=require(_0x454c('0xd'));var config=require('../../config/environment');var licenseUtil=require(_0x454c('0xe'));var db=require(_0x454c('0xf'))['db'];function respondWithStatusCode(_0x3a5cad,_0x59d626){_0x59d626=_0x59d626||0xcc;return function(_0x3f24ab){if(_0x3f24ab){return _0x3a5cad[_0x454c('0x10')](_0x59d626);}return _0x3a5cad[_0x454c('0x11')](_0x59d626)[_0x454c('0x12')]();};}function respondWithResult(_0x556486,_0x4bca32){_0x4bca32=_0x4bca32||0xc8;return function(_0x3cca21){if(_0x3cca21){return _0x556486['status'](_0x4bca32)[_0x454c('0x13')](_0x3cca21);}};}function respondWithFilteredResult(_0x298781,_0x403506){return function(_0x4ddd91){if(_0x4ddd91){var _0x1f5178=typeof _0x403506[_0x454c('0x14')]===_0x454c('0x15')&&typeof _0x403506['limit']==='undefined';var _0x3db74a=_0x4ddd91[_0x454c('0x16')];var _0x134bc6=_0x1f5178?0x0:_0x403506[_0x454c('0x14')];var _0x3b2460=_0x1f5178?_0x4ddd91[_0x454c('0x16')]:_0x403506[_0x454c('0x14')]+_0x403506[_0x454c('0x17')];var _0x49db0b;if(_0x3b2460>=_0x3db74a){_0x3b2460=_0x3db74a;_0x49db0b=0xc8;}else{_0x49db0b=0xce;}_0x298781[_0x454c('0x11')](_0x49db0b);return _0x298781[_0x454c('0x18')](_0x454c('0x19'),_0x134bc6+'-'+_0x3b2460+'/'+_0x3db74a)['json'](_0x4ddd91);}return null;};}function patchUpdates(_0x150307){return function(_0x1b9795){try{jsonpatch[_0x454c('0x1a')](_0x1b9795,_0x150307,!![]);}catch(_0x5bd885){return BPromise['reject'](_0x5bd885);}return _0x1b9795[_0x454c('0x1b')]();};}function saveUpdates(_0x4bfadb,_0x1e047a){return function(_0x370a23){if(_0x370a23){return _0x370a23[_0x454c('0x1c')](_0x4bfadb)[_0x454c('0x1d')](function(_0x1c2cdb){return _0x1c2cdb;});}return null;};}function removeEntity(_0x3b4c3b,_0x5d9757){return function(_0x4d4e3a){if(_0x4d4e3a){return _0x4d4e3a[_0x454c('0x1e')]()['then'](function(){_0x3b4c3b[_0x454c('0x11')](0xcc)[_0x454c('0x12')]();});}};}function handleEntityNotFound(_0x15e7f6,_0x5c4e1e){return function(_0x37a488){if(!_0x37a488){_0x15e7f6['sendStatus'](0x194);}return _0x37a488;};}function handleError(_0x4c2b90,_0x44fcf5){_0x44fcf5=_0x44fcf5||0x1f4;return function(_0x1a1b5b){logger[_0x454c('0x1f')](_0x1a1b5b[_0x454c('0x20')]);if(_0x1a1b5b['name']){delete _0x1a1b5b['name'];}_0x4c2b90['status'](_0x44fcf5)[_0x454c('0x21')](_0x1a1b5b);};}exports['index']=function(_0x4673f3,_0x51765b){var _0x1561dc={},_0x4fc6e1={},_0x13351c={'count':0x0,'rows':[]};var _0x4b83ad=_[_0x454c('0x22')](db['FreshsalesConfiguration'][_0x454c('0x23')],function(_0x46faf7){return{'name':_0x46faf7['fieldName'],'type':_0x46faf7['type'][_0x454c('0x24')]};});_0x4fc6e1[_0x454c('0x25')]=_[_0x454c('0x22')](_0x4b83ad,_0x454c('0x26'));_0x4fc6e1[_0x454c('0x27')]=_[_0x454c('0x28')](_0x4673f3['query']);_0x4fc6e1[_0x454c('0x29')]=_[_0x454c('0x2a')](_0x4fc6e1[_0x454c('0x25')],_0x4fc6e1[_0x454c('0x27')]);_0x1561dc[_0x454c('0x2b')]=_[_0x454c('0x2a')](_0x4fc6e1[_0x454c('0x25')],qs[_0x454c('0x2c')](_0x4673f3[_0x454c('0x27')][_0x454c('0x2c')]));_0x1561dc['attributes']=_0x1561dc['attributes'][_0x454c('0x2d')]?_0x1561dc[_0x454c('0x2b')]:_0x4fc6e1[_0x454c('0x25')];if(!_0x4673f3[_0x454c('0x27')][_0x454c('0x2e')](_0x454c('0x2f'))){_0x1561dc[_0x454c('0x17')]=qs[_0x454c('0x17')](_0x4673f3[_0x454c('0x27')][_0x454c('0x17')]);_0x1561dc[_0x454c('0x14')]=qs[_0x454c('0x14')](_0x4673f3[_0x454c('0x27')]['offset']);}_0x1561dc['order']=qs[_0x454c('0x30')](_0x4673f3[_0x454c('0x27')][_0x454c('0x30')]);_0x1561dc[_0x454c('0x31')]=qs[_0x454c('0x29')](_['pick'](_0x4673f3['query'],_0x4fc6e1['filters']),_0x4b83ad);if(_0x4673f3['query']['filter']){_0x1561dc[_0x454c('0x31')]=_[_0x454c('0x32')](_0x1561dc['where'],{'$or':_['map'](_0x4b83ad,function(_0x43a088){if(_0x43a088[_0x454c('0x33')]!==_0x454c('0x34')){var _0x520256={};_0x520256[_0x43a088['name']]={'$like':'%'+_0x4673f3[_0x454c('0x27')][_0x454c('0x35')]+'%'};return _0x520256;}})});}_0x1561dc=_[_0x454c('0x32')]({},_0x1561dc,_0x4673f3[_0x454c('0x36')]);var _0x55aefa={'where':_0x1561dc[_0x454c('0x31')]};return db[_0x454c('0x37')][_0x454c('0x16')](_0x55aefa)[_0x454c('0x1d')](function(_0x537cec){_0x13351c['count']=_0x537cec;if(_0x4673f3[_0x454c('0x27')][_0x454c('0x38')]){_0x1561dc[_0x454c('0x39')]=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0x454c('0x3a')](_0x1561dc);})[_0x454c('0x1d')](function(_0x514ac5){_0x13351c[_0x454c('0x3b')]=_0x514ac5;return _0x13351c;})[_0x454c('0x1d')](respondWithFilteredResult(_0x51765b,_0x1561dc))[_0x454c('0x3c')](handleError(_0x51765b,null));};exports['show']=function(_0x333422,_0xb70b0d){var _0x566391={'raw':![],'where':{'id':_0x333422[_0x454c('0x3d')]['id']}},_0x5e1ac7={};_0x5e1ac7[_0x454c('0x25')]=_[_0x454c('0x28')](db['FreshsalesConfiguration'][_0x454c('0x23')]);_0x5e1ac7[_0x454c('0x27')]=_[_0x454c('0x28')](_0x333422[_0x454c('0x27')]);_0x5e1ac7['filters']=_[_0x454c('0x2a')](_0x5e1ac7[_0x454c('0x25')],_0x5e1ac7[_0x454c('0x27')]);_0x566391[_0x454c('0x2b')]=_[_0x454c('0x2a')](_0x5e1ac7[_0x454c('0x25')],qs[_0x454c('0x2c')](_0x333422['query'][_0x454c('0x2c')]));_0x566391[_0x454c('0x2b')]=_0x566391[_0x454c('0x2b')][_0x454c('0x2d')]?_0x566391['attributes']:_0x5e1ac7[_0x454c('0x25')];if(_0x333422[_0x454c('0x27')][_0x454c('0x38')]){_0x566391[_0x454c('0x39')]=[{'all':!![]}];}_0x566391=_[_0x454c('0x32')]({},_0x566391,_0x333422[_0x454c('0x36')]);return db['FreshsalesConfiguration']['find'](_0x566391)[_0x454c('0x1d')](handleEntityNotFound(_0xb70b0d,null))[_0x454c('0x1d')](respondWithResult(_0xb70b0d,null))['catch'](handleError(_0xb70b0d,null));};exports['create']=function(_0x199f48,_0x162b4d){return db[_0x454c('0x37')][_0x454c('0x3e')](_0x199f48[_0x454c('0x3f')],{})[_0x454c('0x1d')](respondWithResult(_0x162b4d,0xc9))[_0x454c('0x3c')](handleError(_0x162b4d,null));};exports[_0x454c('0x1c')]=function(_0x59c057,_0xfa9e6e){if(_0x59c057[_0x454c('0x3f')]['id']){delete _0x59c057[_0x454c('0x3f')]['id'];}return db[_0x454c('0x37')]['find']({'where':{'id':_0x59c057[_0x454c('0x3d')]['id']}})[_0x454c('0x1d')](handleEntityNotFound(_0xfa9e6e,null))[_0x454c('0x1d')](saveUpdates(_0x59c057['body'],null))[_0x454c('0x1d')](respondWithResult(_0xfa9e6e,null))[_0x454c('0x3c')](handleError(_0xfa9e6e,null));};exports[_0x454c('0x1e')]=function(_0x28e23f,_0x3b4128){return db['FreshsalesConfiguration']['find']({'where':{'id':_0x28e23f['params']['id']}})['then'](handleEntityNotFound(_0x3b4128,null))[_0x454c('0x1d')](removeEntity(_0x3b4128,null))['catch'](handleError(_0x3b4128,null));};exports[_0x454c('0x40')]=function(_0x45d34d,_0x400f46,_0x502cdc){var _0x21c858={};var _0x5d8c53={};var _0x2eb946;var _0x3cb4b0;return db[_0x454c('0x37')][_0x454c('0x41')]({'where':{'id':_0x45d34d[_0x454c('0x3d')]['id']}})[_0x454c('0x1d')](handleEntityNotFound(_0x400f46,null))[_0x454c('0x1d')](function(_0x3260cc){if(_0x3260cc){_0x2eb946=_0x3260cc;_0x5d8c53[_0x454c('0x25')]=_[_0x454c('0x28')](db[_0x454c('0x42')][_0x454c('0x23')]);_0x5d8c53[_0x454c('0x27')]=_[_0x454c('0x28')](_0x45d34d[_0x454c('0x27')]);_0x5d8c53['filters']=_[_0x454c('0x2a')](_0x5d8c53[_0x454c('0x25')],_0x5d8c53[_0x454c('0x27')]);_0x21c858[_0x454c('0x2b')]=_[_0x454c('0x2a')](_0x5d8c53[_0x454c('0x25')],qs[_0x454c('0x2c')](_0x45d34d[_0x454c('0x27')][_0x454c('0x2c')]));_0x21c858[_0x454c('0x2b')]=_0x21c858[_0x454c('0x2b')][_0x454c('0x2d')]?_0x21c858[_0x454c('0x2b')]:_0x5d8c53[_0x454c('0x25')];_0x21c858[_0x454c('0x43')]=qs[_0x454c('0x30')](_0x45d34d[_0x454c('0x27')]['sort']);_0x21c858[_0x454c('0x31')]=qs['filters'](_[_0x454c('0x44')](_0x45d34d[_0x454c('0x27')],_0x5d8c53[_0x454c('0x29')]));if(_0x45d34d[_0x454c('0x27')]['filter']){_0x21c858[_0x454c('0x31')]=_[_0x454c('0x32')](_0x21c858['where'],{'$or':_[_0x454c('0x22')](_0x21c858[_0x454c('0x2b')],function(_0x343acc){var _0xcf12bb={};_0xcf12bb[_0x343acc]={'$like':'%'+_0x45d34d[_0x454c('0x27')]['filter']+'%'};return _0xcf12bb;})});}_0x21c858=_[_0x454c('0x32')]({},_0x21c858,_0x45d34d['options']);return _0x2eb946[_0x454c('0x40')](_0x21c858);}})['then'](function(_0x275d67){if(_0x275d67){_0x3cb4b0=_0x275d67['length'];if(!_0x45d34d['query']['hasOwnProperty'](_0x454c('0x2f'))){_0x21c858[_0x454c('0x17')]=qs['limit'](_0x45d34d[_0x454c('0x27')][_0x454c('0x17')]);_0x21c858[_0x454c('0x14')]=qs[_0x454c('0x14')](_0x45d34d[_0x454c('0x27')][_0x454c('0x14')]);}return _0x2eb946[_0x454c('0x40')](_0x21c858);}})[_0x454c('0x1d')](function(_0x58f357){if(_0x58f357){return _0x58f357?{'count':_0x3cb4b0,'rows':_0x58f357}:null;}})['then'](respondWithResult(_0x400f46,null))[_0x454c('0x3c')](handleError(_0x400f46,null));};exports[_0x454c('0x45')]=function(_0x14de7a,_0x3a6de2,_0x35be47){var _0x3fed76={};var _0x4f3644={};var _0x581387;var _0x43f0fa;return db['FreshsalesConfiguration'][_0x454c('0x41')]({'where':{'id':_0x14de7a[_0x454c('0x3d')]['id']}})[_0x454c('0x1d')](handleEntityNotFound(_0x3a6de2,null))[_0x454c('0x1d')](function(_0x44010f){if(_0x44010f){_0x581387=_0x44010f;_0x4f3644[_0x454c('0x25')]=_[_0x454c('0x28')](db[_0x454c('0x42')]['rawAttributes']);_0x4f3644[_0x454c('0x27')]=_['keys'](_0x14de7a[_0x454c('0x27')]);_0x4f3644['filters']=_[_0x454c('0x2a')](_0x4f3644[_0x454c('0x25')],_0x4f3644[_0x454c('0x27')]);_0x3fed76['attributes']=_[_0x454c('0x2a')](_0x4f3644['model'],qs[_0x454c('0x2c')](_0x14de7a[_0x454c('0x27')][_0x454c('0x2c')]));_0x3fed76[_0x454c('0x2b')]=_0x3fed76[_0x454c('0x2b')][_0x454c('0x2d')]?_0x3fed76[_0x454c('0x2b')]:_0x4f3644['model'];_0x3fed76[_0x454c('0x43')]=qs[_0x454c('0x30')](_0x14de7a[_0x454c('0x27')]['sort']);_0x3fed76['where']=qs[_0x454c('0x29')](_[_0x454c('0x44')](_0x14de7a[_0x454c('0x27')],_0x4f3644['filters']));if(_0x14de7a[_0x454c('0x27')][_0x454c('0x35')]){_0x3fed76[_0x454c('0x31')]=_[_0x454c('0x32')](_0x3fed76[_0x454c('0x31')],{'$or':_[_0x454c('0x22')](_0x3fed76[_0x454c('0x2b')],function(_0x453e56){var _0x40a58f={};_0x40a58f[_0x453e56]={'$like':'%'+_0x14de7a[_0x454c('0x27')][_0x454c('0x35')]+'%'};return _0x40a58f;})});}_0x3fed76=_[_0x454c('0x32')]({},_0x3fed76,_0x14de7a[_0x454c('0x36')]);return _0x581387[_0x454c('0x45')](_0x3fed76);}})[_0x454c('0x1d')](function(_0x5dd5bc){if(_0x5dd5bc){_0x43f0fa=_0x5dd5bc[_0x454c('0x2d')];if(!_0x14de7a['query']['hasOwnProperty'](_0x454c('0x2f'))){_0x3fed76[_0x454c('0x17')]=qs['limit'](_0x14de7a[_0x454c('0x27')][_0x454c('0x17')]);_0x3fed76[_0x454c('0x14')]=qs[_0x454c('0x14')](_0x14de7a['query'][_0x454c('0x14')]);}return _0x581387[_0x454c('0x45')](_0x3fed76);}})['then'](function(_0x449532){if(_0x449532){return _0x449532?{'count':_0x43f0fa,'rows':_0x449532}:null;}})[_0x454c('0x1d')](respondWithResult(_0x3a6de2,null))[_0x454c('0x3c')](handleError(_0x3a6de2,null));};exports[_0x454c('0x46')]=function(_0x5b4115,_0x5a1e01,_0x51f653){var _0x3a3b9d={};var _0x485283={};var _0x2e52b1;var _0x5a1f1b;return db['FreshsalesConfiguration'][_0x454c('0x41')]({'where':{'id':_0x5b4115['params']['id']}})['then'](handleEntityNotFound(_0x5a1e01,null))[_0x454c('0x1d')](function(_0x24bb9e){if(_0x24bb9e){_0x2e52b1=_0x24bb9e;_0x485283[_0x454c('0x25')]=_[_0x454c('0x28')](db[_0x454c('0x42')]['rawAttributes']);_0x485283[_0x454c('0x27')]=_[_0x454c('0x28')](_0x5b4115[_0x454c('0x27')]);_0x485283[_0x454c('0x29')]=_[_0x454c('0x2a')](_0x485283['model'],_0x485283[_0x454c('0x27')]);_0x3a3b9d[_0x454c('0x2b')]=_[_0x454c('0x2a')](_0x485283[_0x454c('0x25')],qs['fields'](_0x5b4115[_0x454c('0x27')][_0x454c('0x2c')]));_0x3a3b9d[_0x454c('0x2b')]=_0x3a3b9d['attributes'][_0x454c('0x2d')]?_0x3a3b9d[_0x454c('0x2b')]:_0x485283[_0x454c('0x25')];_0x3a3b9d[_0x454c('0x43')]=qs['sort'](_0x5b4115[_0x454c('0x27')][_0x454c('0x30')]);_0x3a3b9d[_0x454c('0x31')]=qs['filters'](_['pick'](_0x5b4115[_0x454c('0x27')],_0x485283[_0x454c('0x29')]));if(_0x5b4115[_0x454c('0x27')]['filter']){_0x3a3b9d[_0x454c('0x31')]=_[_0x454c('0x32')](_0x3a3b9d[_0x454c('0x31')],{'$or':_[_0x454c('0x22')](_0x3a3b9d[_0x454c('0x2b')],function(_0x41b9fc){var _0x507a1c={};_0x507a1c[_0x41b9fc]={'$like':'%'+_0x5b4115[_0x454c('0x27')]['filter']+'%'};return _0x507a1c;})});}_0x3a3b9d=_[_0x454c('0x32')]({},_0x3a3b9d,_0x5b4115[_0x454c('0x36')]);return _0x2e52b1[_0x454c('0x46')](_0x3a3b9d);}})[_0x454c('0x1d')](function(_0x5ed7b6){if(_0x5ed7b6){_0x5a1f1b=_0x5ed7b6[_0x454c('0x2d')];if(!_0x5b4115[_0x454c('0x27')]['hasOwnProperty'](_0x454c('0x2f'))){_0x3a3b9d['limit']=qs[_0x454c('0x17')](_0x5b4115[_0x454c('0x27')]['limit']);_0x3a3b9d[_0x454c('0x14')]=qs[_0x454c('0x14')](_0x5b4115[_0x454c('0x27')][_0x454c('0x14')]);}return _0x2e52b1['getFields'](_0x3a3b9d);}})[_0x454c('0x1d')](function(_0xf60788){if(_0xf60788){return _0xf60788?{'count':_0x5a1f1b,'rows':_0xf60788}:null;}})['then'](respondWithResult(_0x5a1e01,null))[_0x454c('0x3c')](handleError(_0x5a1e01,null));};
\ No newline at end of file
+var _0xc598=['ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','name','index','map','rawAttributes','fieldName','key','keys','filters','intersection','model','query','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','FreshsalesConfiguration','includeAll','include','rows','catch','show','params','find','create','body','destroy','findOne','getSubjects','getDescriptions','FreshsalesField','hasOwnProperty','getFields','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0xec1d1d,_0x32ea0c){var _0x561901=function(_0x505f56){while(--_0x505f56){_0xec1d1d['push'](_0xec1d1d['shift']());}};_0x561901(++_0x32ea0c);}(_0xc598,0x17d));var _0x8c59=function(_0xe13e68,_0x11ba6c){_0xe13e68=_0xe13e68-0x0;var _0xee039c=_0xc598[_0xe13e68];return _0xee039c;};'use strict';var emlformat=require(_0x8c59('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8c59('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8c59('0x2'));var moment=require(_0x8c59('0x3'));var BPromise=require(_0x8c59('0x4'));var Mustache=require(_0x8c59('0x5'));var util=require(_0x8c59('0x6'));var path=require(_0x8c59('0x7'));var sox=require(_0x8c59('0x8'));var csv=require('to-csv');var ejs=require(_0x8c59('0x9'));var fs=require('fs');var fs_extra=require(_0x8c59('0xa'));var _=require(_0x8c59('0xb'));var squel=require('squel');var crypto=require(_0x8c59('0xc'));var jsforce=require(_0x8c59('0xd'));var deskjs=require(_0x8c59('0xe'));var toCsv=require(_0x8c59('0xf'));var querystring=require(_0x8c59('0x10'));var Papa=require(_0x8c59('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8c59('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8c59('0x13'));var logger=require('../../config/logger')(_0x8c59('0x14'));var utils=require(_0x8c59('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8c59('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d93fb,_0x155f45){_0x155f45=_0x155f45||0xcc;return function(_0xc24c9a){if(_0xc24c9a){return _0x3d93fb['sendStatus'](_0x155f45);}return _0x3d93fb['status'](_0x155f45)['end']();};}function respondWithResult(_0x53f7a7,_0x3fd418){_0x3fd418=_0x3fd418||0xc8;return function(_0x56b5b0){if(_0x56b5b0){return _0x53f7a7['status'](_0x3fd418)[_0x8c59('0x17')](_0x56b5b0);}};}function respondWithFilteredResult(_0x59f4ea,_0x4e4bbd){return function(_0x4a61c5){if(_0x4a61c5){var _0xae880c=typeof _0x4e4bbd[_0x8c59('0x18')]===_0x8c59('0x19')&&typeof _0x4e4bbd[_0x8c59('0x1a')]==='undefined';var _0x326521=_0x4a61c5[_0x8c59('0x1b')];var _0x20e35f=_0xae880c?0x0:_0x4e4bbd[_0x8c59('0x18')];var _0x256af7=_0xae880c?_0x4a61c5['count']:_0x4e4bbd['offset']+_0x4e4bbd[_0x8c59('0x1a')];var _0x41656f;if(_0x256af7>=_0x326521){_0x256af7=_0x326521;_0x41656f=0xc8;}else{_0x41656f=0xce;}_0x59f4ea[_0x8c59('0x1c')](_0x41656f);return _0x59f4ea[_0x8c59('0x1d')](_0x8c59('0x1e'),_0x20e35f+'-'+_0x256af7+'/'+_0x326521)['json'](_0x4a61c5);}return null;};}function patchUpdates(_0x3be513){return function(_0x1656e2){try{jsonpatch[_0x8c59('0x1f')](_0x1656e2,_0x3be513,!![]);}catch(_0xa8b5a7){return BPromise[_0x8c59('0x20')](_0xa8b5a7);}return _0x1656e2[_0x8c59('0x21')]();};}function saveUpdates(_0x5072fc,_0x502e14){return function(_0x2f8331){if(_0x2f8331){return _0x2f8331[_0x8c59('0x22')](_0x5072fc)[_0x8c59('0x23')](function(_0x9c2068){return _0x9c2068;});}return null;};}function removeEntity(_0x484668,_0x3082e0){return function(_0x59f542){if(_0x59f542){return _0x59f542['destroy']()['then'](function(){_0x484668[_0x8c59('0x1c')](0xcc)[_0x8c59('0x24')]();});}};}function handleEntityNotFound(_0x402983,_0x585ffe){return function(_0x1012f0){if(!_0x1012f0){_0x402983[_0x8c59('0x25')](0x194);}return _0x1012f0;};}function handleError(_0x5be51e,_0x3d4b0f){_0x3d4b0f=_0x3d4b0f||0x1f4;return function(_0x2db9b3){logger[_0x8c59('0x26')](_0x2db9b3['stack']);if(_0x2db9b3[_0x8c59('0x27')]){delete _0x2db9b3[_0x8c59('0x27')];}_0x5be51e[_0x8c59('0x1c')](_0x3d4b0f)['send'](_0x2db9b3);};}exports[_0x8c59('0x28')]=function(_0x393860,_0x45bde3){var _0x42d1b5={},_0x40f352={},_0x3e455b={'count':0x0,'rows':[]};var _0x177322=_[_0x8c59('0x29')](db['FreshsalesConfiguration'][_0x8c59('0x2a')],function(_0x46c5fb){return{'name':_0x46c5fb[_0x8c59('0x2b')],'type':_0x46c5fb['type'][_0x8c59('0x2c')]};});_0x40f352['model']=_['map'](_0x177322,_0x8c59('0x27'));_0x40f352['query']=_[_0x8c59('0x2d')](_0x393860['query']);_0x40f352[_0x8c59('0x2e')]=_[_0x8c59('0x2f')](_0x40f352[_0x8c59('0x30')],_0x40f352[_0x8c59('0x31')]);_0x42d1b5['attributes']=_[_0x8c59('0x2f')](_0x40f352[_0x8c59('0x30')],qs[_0x8c59('0x32')](_0x393860['query']['fields']));_0x42d1b5[_0x8c59('0x33')]=_0x42d1b5['attributes'][_0x8c59('0x34')]?_0x42d1b5[_0x8c59('0x33')]:_0x40f352['model'];if(!_0x393860[_0x8c59('0x31')]['hasOwnProperty'](_0x8c59('0x35'))){_0x42d1b5[_0x8c59('0x1a')]=qs[_0x8c59('0x1a')](_0x393860[_0x8c59('0x31')][_0x8c59('0x1a')]);_0x42d1b5[_0x8c59('0x18')]=qs[_0x8c59('0x18')](_0x393860[_0x8c59('0x31')][_0x8c59('0x18')]);}_0x42d1b5[_0x8c59('0x36')]=qs[_0x8c59('0x37')](_0x393860['query'][_0x8c59('0x37')]);_0x42d1b5[_0x8c59('0x38')]=qs[_0x8c59('0x2e')](_[_0x8c59('0x39')](_0x393860['query'],_0x40f352[_0x8c59('0x2e')]),_0x177322);if(_0x393860['query'][_0x8c59('0x3a')]){_0x42d1b5[_0x8c59('0x38')]=_[_0x8c59('0x3b')](_0x42d1b5[_0x8c59('0x38')],{'$or':_[_0x8c59('0x29')](_0x177322,function(_0x412e5f){if(_0x412e5f['type']!=='VIRTUAL'){var _0x287d6e={};_0x287d6e[_0x412e5f[_0x8c59('0x27')]]={'$like':'%'+_0x393860[_0x8c59('0x31')]['filter']+'%'};return _0x287d6e;}})});}_0x42d1b5=_[_0x8c59('0x3b')]({},_0x42d1b5,_0x393860[_0x8c59('0x3c')]);var _0x1cf4ee={'where':_0x42d1b5[_0x8c59('0x38')]};return db[_0x8c59('0x3d')][_0x8c59('0x1b')](_0x1cf4ee)[_0x8c59('0x23')](function(_0x182d6a){_0x3e455b['count']=_0x182d6a;if(_0x393860[_0x8c59('0x31')][_0x8c59('0x3e')]){_0x42d1b5[_0x8c59('0x3f')]=[{'all':!![]}];}return db[_0x8c59('0x3d')]['findAll'](_0x42d1b5);})[_0x8c59('0x23')](function(_0x33c9ab){_0x3e455b[_0x8c59('0x40')]=_0x33c9ab;return _0x3e455b;})[_0x8c59('0x23')](respondWithFilteredResult(_0x45bde3,_0x42d1b5))[_0x8c59('0x41')](handleError(_0x45bde3,null));};exports[_0x8c59('0x42')]=function(_0x3a883b,_0x2dadaa){var _0x1ff851={'raw':![],'where':{'id':_0x3a883b[_0x8c59('0x43')]['id']}},_0xec56b7={};_0xec56b7['model']=_[_0x8c59('0x2d')](db['FreshsalesConfiguration'][_0x8c59('0x2a')]);_0xec56b7[_0x8c59('0x31')]=_[_0x8c59('0x2d')](_0x3a883b['query']);_0xec56b7[_0x8c59('0x2e')]=_[_0x8c59('0x2f')](_0xec56b7[_0x8c59('0x30')],_0xec56b7['query']);_0x1ff851[_0x8c59('0x33')]=_[_0x8c59('0x2f')](_0xec56b7[_0x8c59('0x30')],qs['fields'](_0x3a883b['query'][_0x8c59('0x32')]));_0x1ff851['attributes']=_0x1ff851[_0x8c59('0x33')][_0x8c59('0x34')]?_0x1ff851[_0x8c59('0x33')]:_0xec56b7['model'];if(_0x3a883b[_0x8c59('0x31')]['includeAll']){_0x1ff851['include']=[{'all':!![]}];}_0x1ff851=_[_0x8c59('0x3b')]({},_0x1ff851,_0x3a883b['options']);return db[_0x8c59('0x3d')][_0x8c59('0x44')](_0x1ff851)['then'](handleEntityNotFound(_0x2dadaa,null))['then'](respondWithResult(_0x2dadaa,null))[_0x8c59('0x41')](handleError(_0x2dadaa,null));};exports[_0x8c59('0x45')]=function(_0x3d1a72,_0x1b233a){return db['FreshsalesConfiguration'][_0x8c59('0x45')](_0x3d1a72['body'],{})['then'](respondWithResult(_0x1b233a,0xc9))['catch'](handleError(_0x1b233a,null));};exports[_0x8c59('0x22')]=function(_0x36cc11,_0x206c2c){if(_0x36cc11['body']['id']){delete _0x36cc11[_0x8c59('0x46')]['id'];}return db['FreshsalesConfiguration'][_0x8c59('0x44')]({'where':{'id':_0x36cc11[_0x8c59('0x43')]['id']}})[_0x8c59('0x23')](handleEntityNotFound(_0x206c2c,null))[_0x8c59('0x23')](saveUpdates(_0x36cc11['body'],null))[_0x8c59('0x23')](respondWithResult(_0x206c2c,null))[_0x8c59('0x41')](handleError(_0x206c2c,null));};exports[_0x8c59('0x47')]=function(_0x12fec4,_0x51b45f){return db[_0x8c59('0x3d')][_0x8c59('0x44')]({'where':{'id':_0x12fec4[_0x8c59('0x43')]['id']}})['then'](handleEntityNotFound(_0x51b45f,null))[_0x8c59('0x23')](removeEntity(_0x51b45f,null))[_0x8c59('0x41')](handleError(_0x51b45f,null));};exports['getSubjects']=function(_0x58e15e,_0x34b5d5,_0x5731cb){var _0x9f57c9={};var _0x3ef31e={};var _0x405cbf;var _0x306396;return db[_0x8c59('0x3d')][_0x8c59('0x48')]({'where':{'id':_0x58e15e[_0x8c59('0x43')]['id']}})[_0x8c59('0x23')](handleEntityNotFound(_0x34b5d5,null))[_0x8c59('0x23')](function(_0xa368a1){if(_0xa368a1){_0x405cbf=_0xa368a1;_0x3ef31e[_0x8c59('0x30')]=_['keys'](db['FreshsalesField']['rawAttributes']);_0x3ef31e[_0x8c59('0x31')]=_['keys'](_0x58e15e['query']);_0x3ef31e['filters']=_['intersection'](_0x3ef31e[_0x8c59('0x30')],_0x3ef31e['query']);_0x9f57c9[_0x8c59('0x33')]=_[_0x8c59('0x2f')](_0x3ef31e[_0x8c59('0x30')],qs[_0x8c59('0x32')](_0x58e15e['query'][_0x8c59('0x32')]));_0x9f57c9[_0x8c59('0x33')]=_0x9f57c9['attributes']['length']?_0x9f57c9[_0x8c59('0x33')]:_0x3ef31e[_0x8c59('0x30')];_0x9f57c9[_0x8c59('0x36')]=qs[_0x8c59('0x37')](_0x58e15e[_0x8c59('0x31')][_0x8c59('0x37')]);_0x9f57c9[_0x8c59('0x38')]=qs[_0x8c59('0x2e')](_['pick'](_0x58e15e[_0x8c59('0x31')],_0x3ef31e['filters']));if(_0x58e15e[_0x8c59('0x31')]['filter']){_0x9f57c9[_0x8c59('0x38')]=_[_0x8c59('0x3b')](_0x9f57c9[_0x8c59('0x38')],{'$or':_[_0x8c59('0x29')](_0x9f57c9[_0x8c59('0x33')],function(_0x1d6f7e){var _0x766d2d={};_0x766d2d[_0x1d6f7e]={'$like':'%'+_0x58e15e[_0x8c59('0x31')][_0x8c59('0x3a')]+'%'};return _0x766d2d;})});}_0x9f57c9=_[_0x8c59('0x3b')]({},_0x9f57c9,_0x58e15e[_0x8c59('0x3c')]);return _0x405cbf[_0x8c59('0x49')](_0x9f57c9);}})[_0x8c59('0x23')](function(_0x6b48b5){if(_0x6b48b5){_0x306396=_0x6b48b5['length'];if(!_0x58e15e['query']['hasOwnProperty'](_0x8c59('0x35'))){_0x9f57c9['limit']=qs['limit'](_0x58e15e[_0x8c59('0x31')][_0x8c59('0x1a')]);_0x9f57c9[_0x8c59('0x18')]=qs[_0x8c59('0x18')](_0x58e15e[_0x8c59('0x31')][_0x8c59('0x18')]);}return _0x405cbf['getSubjects'](_0x9f57c9);}})[_0x8c59('0x23')](function(_0x4c5a6d){if(_0x4c5a6d){return _0x4c5a6d?{'count':_0x306396,'rows':_0x4c5a6d}:null;}})[_0x8c59('0x23')](respondWithResult(_0x34b5d5,null))['catch'](handleError(_0x34b5d5,null));};exports[_0x8c59('0x4a')]=function(_0x5bbb7e,_0x45c825,_0x53141b){var _0x319eff={};var _0x33f507={};var _0x32cf27;var _0x46cf57;return db['FreshsalesConfiguration']['findOne']({'where':{'id':_0x5bbb7e['params']['id']}})['then'](handleEntityNotFound(_0x45c825,null))[_0x8c59('0x23')](function(_0x29b505){if(_0x29b505){_0x32cf27=_0x29b505;_0x33f507['model']=_[_0x8c59('0x2d')](db[_0x8c59('0x4b')][_0x8c59('0x2a')]);_0x33f507[_0x8c59('0x31')]=_[_0x8c59('0x2d')](_0x5bbb7e[_0x8c59('0x31')]);_0x33f507['filters']=_[_0x8c59('0x2f')](_0x33f507[_0x8c59('0x30')],_0x33f507[_0x8c59('0x31')]);_0x319eff[_0x8c59('0x33')]=_[_0x8c59('0x2f')](_0x33f507['model'],qs[_0x8c59('0x32')](_0x5bbb7e['query'][_0x8c59('0x32')]));_0x319eff[_0x8c59('0x33')]=_0x319eff['attributes'][_0x8c59('0x34')]?_0x319eff[_0x8c59('0x33')]:_0x33f507[_0x8c59('0x30')];_0x319eff['order']=qs[_0x8c59('0x37')](_0x5bbb7e[_0x8c59('0x31')]['sort']);_0x319eff[_0x8c59('0x38')]=qs[_0x8c59('0x2e')](_[_0x8c59('0x39')](_0x5bbb7e['query'],_0x33f507[_0x8c59('0x2e')]));if(_0x5bbb7e['query']['filter']){_0x319eff[_0x8c59('0x38')]=_[_0x8c59('0x3b')](_0x319eff[_0x8c59('0x38')],{'$or':_[_0x8c59('0x29')](_0x319eff[_0x8c59('0x33')],function(_0x5454ed){var _0x3a5028={};_0x3a5028[_0x5454ed]={'$like':'%'+_0x5bbb7e[_0x8c59('0x31')][_0x8c59('0x3a')]+'%'};return _0x3a5028;})});}_0x319eff=_[_0x8c59('0x3b')]({},_0x319eff,_0x5bbb7e[_0x8c59('0x3c')]);return _0x32cf27['getDescriptions'](_0x319eff);}})[_0x8c59('0x23')](function(_0x2cb42f){if(_0x2cb42f){_0x46cf57=_0x2cb42f['length'];if(!_0x5bbb7e[_0x8c59('0x31')][_0x8c59('0x4c')](_0x8c59('0x35'))){_0x319eff['limit']=qs['limit'](_0x5bbb7e[_0x8c59('0x31')][_0x8c59('0x1a')]);_0x319eff[_0x8c59('0x18')]=qs[_0x8c59('0x18')](_0x5bbb7e[_0x8c59('0x31')]['offset']);}return _0x32cf27[_0x8c59('0x4a')](_0x319eff);}})[_0x8c59('0x23')](function(_0x91592a){if(_0x91592a){return _0x91592a?{'count':_0x46cf57,'rows':_0x91592a}:null;}})['then'](respondWithResult(_0x45c825,null))[_0x8c59('0x41')](handleError(_0x45c825,null));};exports['getFields']=function(_0x2d60fb,_0x3589fc,_0x20e496){var _0x180604={};var _0x335bbe={};var _0x7f3253;var _0x2a02bc;return db[_0x8c59('0x3d')][_0x8c59('0x48')]({'where':{'id':_0x2d60fb[_0x8c59('0x43')]['id']}})['then'](handleEntityNotFound(_0x3589fc,null))[_0x8c59('0x23')](function(_0x3a06dd){if(_0x3a06dd){_0x7f3253=_0x3a06dd;_0x335bbe[_0x8c59('0x30')]=_[_0x8c59('0x2d')](db[_0x8c59('0x4b')]['rawAttributes']);_0x335bbe[_0x8c59('0x31')]=_[_0x8c59('0x2d')](_0x2d60fb[_0x8c59('0x31')]);_0x335bbe[_0x8c59('0x2e')]=_[_0x8c59('0x2f')](_0x335bbe[_0x8c59('0x30')],_0x335bbe[_0x8c59('0x31')]);_0x180604[_0x8c59('0x33')]=_[_0x8c59('0x2f')](_0x335bbe['model'],qs[_0x8c59('0x32')](_0x2d60fb[_0x8c59('0x31')]['fields']));_0x180604[_0x8c59('0x33')]=_0x180604['attributes'][_0x8c59('0x34')]?_0x180604[_0x8c59('0x33')]:_0x335bbe['model'];_0x180604['order']=qs[_0x8c59('0x37')](_0x2d60fb[_0x8c59('0x31')][_0x8c59('0x37')]);_0x180604[_0x8c59('0x38')]=qs[_0x8c59('0x2e')](_[_0x8c59('0x39')](_0x2d60fb['query'],_0x335bbe[_0x8c59('0x2e')]));if(_0x2d60fb['query']['filter']){_0x180604[_0x8c59('0x38')]=_[_0x8c59('0x3b')](_0x180604[_0x8c59('0x38')],{'$or':_[_0x8c59('0x29')](_0x180604['attributes'],function(_0x3952e7){var _0xfc2639={};_0xfc2639[_0x3952e7]={'$like':'%'+_0x2d60fb[_0x8c59('0x31')][_0x8c59('0x3a')]+'%'};return _0xfc2639;})});}_0x180604=_[_0x8c59('0x3b')]({},_0x180604,_0x2d60fb[_0x8c59('0x3c')]);return _0x7f3253[_0x8c59('0x4d')](_0x180604);}})[_0x8c59('0x23')](function(_0x112ec8){if(_0x112ec8){_0x2a02bc=_0x112ec8[_0x8c59('0x34')];if(!_0x2d60fb['query'][_0x8c59('0x4c')](_0x8c59('0x35'))){_0x180604[_0x8c59('0x1a')]=qs[_0x8c59('0x1a')](_0x2d60fb[_0x8c59('0x31')][_0x8c59('0x1a')]);_0x180604['offset']=qs[_0x8c59('0x18')](_0x2d60fb[_0x8c59('0x31')][_0x8c59('0x18')]);}return _0x7f3253[_0x8c59('0x4d')](_0x180604);}})['then'](function(_0x570fcb){if(_0x570fcb){return _0x570fcb?{'count':_0x2a02bc,'rows':_0x570fcb}:null;}})['then'](respondWithResult(_0x3589fc,null))[_0x8c59('0x41')](handleError(_0x3589fc,null));};
\ No newline at end of file
index 33cab33..9c55b0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dbf=['bluebird','request-promise','path','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x73aef5,_0x5b2293){var _0x29be73=function(_0x1c9129){while(--_0x1c9129){_0x73aef5['push'](_0x73aef5['shift']());}};_0x29be73(++_0x5b2293);}(_0x7dbf,0x140));var _0xf7db=function(_0x324a59,_0x5d97cf){_0x324a59=_0x324a59-0x0;var _0x1ddf26=_0x7dbf[_0x324a59];return _0x1ddf26;};'use strict';var _=require(_0xf7db('0x0'));var util=require(_0xf7db('0x1'));var logger=require(_0xf7db('0x2'))(_0xf7db('0x3'));var moment=require(_0xf7db('0x4'));var BPromise=require(_0xf7db('0x5'));var rp=require(_0xf7db('0x6'));var fs=require('fs');var path=require(_0xf7db('0x7'));var rimraf=require('rimraf');var config=require(_0xf7db('0x8'));var attributes=require(_0xf7db('0x9'));module[_0xf7db('0xa')]=function(_0x121c7e,_0x5115bd){return _0x121c7e['define'](_0xf7db('0xb'),attributes,{'tableName':_0xf7db('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc66d=['rimraf','exports','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x4c2a93,_0x57d040){var _0xaabbb6=function(_0x31d0b0){while(--_0x31d0b0){_0x4c2a93['push'](_0x4c2a93['shift']());}};_0xaabbb6(++_0x57d040);}(_0xc66d,0x1cd));var _0xdc66=function(_0x5749d0,_0x4b3590){_0x5749d0=_0x5749d0-0x0;var _0x2cea6d=_0xc66d[_0x5749d0];return _0x2cea6d;};'use strict';var _=require(_0xdc66('0x0'));var util=require(_0xdc66('0x1'));var logger=require('../../config/logger')(_0xdc66('0x2'));var moment=require(_0xdc66('0x3'));var BPromise=require(_0xdc66('0x4'));var rp=require(_0xdc66('0x5'));var fs=require('fs');var path=require(_0xdc66('0x6'));var rimraf=require(_0xdc66('0x7'));var config=require('../../config/environment');var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xdc66('0x8')]=function(_0xd3ebee,_0x459147){return _0xd3ebee[_0xdc66('0x9')](_0xdc66('0xa'),attributes,{'tableName':_0xdc66('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 54a851f..ff24379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37dd=['jayson/promise','http','request','info','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment'];(function(_0x402a46,_0x5f0e7a){var _0xa1e1f=function(_0x39b0e0){while(--_0x39b0e0){_0x402a46['push'](_0x402a46['shift']());}};_0xa1e1f(++_0x5f0e7a);}(_0x37dd,0x14c));var _0xd37d=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x37dd[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xd37d('0x0'));var util=require(_0xd37d('0x1'));var moment=require(_0xd37d('0x2'));var BPromise=require('bluebird');var rs=require(_0xd37d('0x3'));var fs=require('fs');var Redis=require(_0xd37d('0x4'));var db=require(_0xd37d('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd37d('0x6'));var config=require(_0xd37d('0x7'));var jayson=require(_0xd37d('0x8'));var client=jayson['client'][_0xd37d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34efdd,_0x73388e,_0x2d6116){return new BPromise(function(_0x2144b7,_0x3f31d8){return client[_0xd37d('0xa')](_0x34efdd,_0x2d6116)['then'](function(_0x40dd3e){logger[_0xd37d('0xb')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x73388e,_0xd37d('0xc'));logger[_0xd37d('0xd')](_0xd37d('0xe'),_0x73388e,_0xd37d('0xc'),JSON[_0xd37d('0xf')](_0x40dd3e));if(_0x40dd3e[_0xd37d('0x10')]){if(_0x40dd3e[_0xd37d('0x10')][_0xd37d('0x11')]===0x1f4){logger[_0xd37d('0x10')](_0xd37d('0x12'),_0x73388e,_0x40dd3e[_0xd37d('0x10')]['message']);return _0x3f31d8(_0x40dd3e[_0xd37d('0x10')][_0xd37d('0x13')]);}logger[_0xd37d('0x10')](_0xd37d('0x12'),_0x73388e,_0x40dd3e[_0xd37d('0x10')][_0xd37d('0x13')]);return _0x2144b7(_0x40dd3e[_0xd37d('0x10')][_0xd37d('0x13')]);}else{logger[_0xd37d('0xb')](_0xd37d('0x12'),_0x73388e,_0xd37d('0xc'));_0x2144b7(_0x40dd3e['result'][_0xd37d('0x13')]);}})['catch'](function(_0x5b4c4c){logger[_0xd37d('0x10')](_0xd37d('0x12'),_0x73388e,_0x5b4c4c);_0x3f31d8(_0x5b4c4c);});});}
\ No newline at end of file
+var _0x5385=['util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x103953,_0x829461){var _0xa4061c=function(_0x1f0a9e){while(--_0x1f0a9e){_0x103953['push'](_0x103953['shift']());}};_0xa4061c(++_0x829461);}(_0x5385,0x6d));var _0x5538=function(_0x4a72f7,_0x42d628){_0x4a72f7=_0x4a72f7-0x0;var _0x5e4829=_0x5385[_0x4a72f7];return _0x5e4829;};'use strict';var _=require(_0x5538('0x0'));var util=require(_0x5538('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5538('0x2'));var fs=require('fs');var Redis=require(_0x5538('0x3'));var db=require(_0x5538('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5538('0x5'));var config=require(_0x5538('0x6'));var jayson=require(_0x5538('0x7'));var client=jayson[_0x5538('0x8')][_0x5538('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x19bf02,_0x2616e6,_0x44c718){return new BPromise(function(_0x519c2c,_0x4878df){return client[_0x5538('0xa')](_0x19bf02,_0x44c718)[_0x5538('0xb')](function(_0x27b35a){logger[_0x5538('0xc')](_0x5538('0xd'),_0x2616e6,'request\x20sent');logger[_0x5538('0xe')](_0x5538('0xf'),_0x2616e6,'request\x20sent',JSON[_0x5538('0x10')](_0x27b35a));if(_0x27b35a[_0x5538('0x11')]){if(_0x27b35a[_0x5538('0x11')][_0x5538('0x12')]===0x1f4){logger[_0x5538('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x2616e6,_0x27b35a[_0x5538('0x11')][_0x5538('0x13')]);return _0x4878df(_0x27b35a[_0x5538('0x11')][_0x5538('0x13')]);}logger[_0x5538('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x2616e6,_0x27b35a[_0x5538('0x11')][_0x5538('0x13')]);return _0x519c2c(_0x27b35a['error'][_0x5538('0x13')]);}else{logger[_0x5538('0xc')](_0x5538('0xd'),_0x2616e6,'request\x20sent');_0x519c2c(_0x27b35a[_0x5538('0x14')]['message']);}})[_0x5538('0x15')](function(_0x147b21){logger[_0x5538('0x11')](_0x5538('0xd'),_0x2616e6,_0x147b21);_0x4878df(_0x147b21);});});}
\ No newline at end of file
index 3c96ae9..de10173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','./intFreshsalesField.controller','get'];(function(_0x55b32b,_0x3e4235){var _0x13e498=function(_0x5b5247){while(--_0x5b5247){_0x55b32b['push'](_0x55b32b['shift']());}};_0x13e498(++_0x3e4235);}(_0x91a7,0xe7));var _0x791a=function(_0x4f9ee2,_0x3e9fcb){_0x4f9ee2=_0x4f9ee2-0x0;var _0x1e186c=_0x91a7[_0x4f9ee2];return _0x1e186c;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['show']);router[_0x791a('0xa')]('/',auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0xc')](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0xd')]);router[_0x791a('0xe')]('/:id',auth[_0x791a('0x9')](),controller[_0x791a('0xf')]);module[_0x791a('0x10')]=router;
\ No newline at end of file
+var _0x7914=['delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','show','post','create','put','/:id'];(function(_0x4aae48,_0x1e853c){var _0x56b3ef=function(_0x58af59){while(--_0x58af59){_0x4aae48['push'](_0x4aae48['shift']());}};_0x56b3ef(++_0x1e853c);}(_0x7914,0x107));var _0x4791=function(_0x8b51d3,_0x1e93df){_0x8b51d3=_0x8b51d3-0x0;var _0x52077f=_0x7914[_0x8b51d3];return _0x52077f;};'use strict';var multer=require(_0x4791('0x0'));var util=require(_0x4791('0x1'));var path=require('path');var timeout=require(_0x4791('0x2'));var express=require(_0x4791('0x3'));var router=express[_0x4791('0x4')]();var fs_extra=require(_0x4791('0x5'));var auth=require(_0x4791('0x6'));var interaction=require(_0x4791('0x7'));var config=require(_0x4791('0x8'));var controller=require(_0x4791('0x9'));router[_0x4791('0xa')]('/',auth[_0x4791('0xb')](),controller['index']);router[_0x4791('0xa')]('/:id',auth[_0x4791('0xb')](),controller[_0x4791('0xc')]);router[_0x4791('0xd')]('/',auth[_0x4791('0xb')](),controller[_0x4791('0xe')]);router[_0x4791('0xf')](_0x4791('0x10'),auth[_0x4791('0xb')](),controller['update']);router[_0x4791('0x11')](_0x4791('0x10'),auth[_0x4791('0xb')](),controller[_0x4791('0x12')]);module[_0x4791('0x13')]=router;
\ No newline at end of file
index a0add36..8aabc98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1e=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize'];(function(_0x547ff4,_0x416fa1){var _0xe41057=function(_0x1afe63){while(--_0x1afe63){_0x547ff4['push'](_0x547ff4['shift']());}};_0xe41057(++_0x416fa1);}(_0x1d1e,0x81));var _0xe1d1=function(_0x10dbab,_0x2e8174){_0x10dbab=_0x10dbab-0x0;var _0x408bfe=_0x1d1e[_0x10dbab];return _0x408bfe;};'use strict';var Sequelize=require(_0xe1d1('0x0'));module[_0xe1d1('0x1')]={'type':{'type':Sequelize[_0xe1d1('0x2')](_0xe1d1('0x3'),_0xe1d1('0x4'),_0xe1d1('0x5'),_0xe1d1('0x6'),_0xe1d1('0x7')),'defaultValue':_0xe1d1('0x3')},'content':{'type':Sequelize[_0xe1d1('0x8')]},'key':{'type':Sequelize[_0xe1d1('0x8')]},'keyType':{'type':Sequelize[_0xe1d1('0x2')]('string',_0xe1d1('0x4'),_0xe1d1('0x5'))},'keyContent':{'type':Sequelize[_0xe1d1('0x8')]},'idField':{'type':Sequelize[_0xe1d1('0x8')]},'nameField':{'type':Sequelize[_0xe1d1('0x8')]},'customField':{'type':Sequelize[_0xe1d1('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7de6=['picklist','STRING','BOOLEAN','sequelize','exports','string','variable','customVariable','keyValue'];(function(_0x3555a0,_0xf0edc2){var _0xacaefe=function(_0x38ef80){while(--_0x38ef80){_0x3555a0['push'](_0x3555a0['shift']());}};_0xacaefe(++_0xf0edc2);}(_0x7de6,0x111));var _0x67de=function(_0x49cb71,_0x2f0149){_0x49cb71=_0x49cb71-0x0;var _0x3a50fd=_0x7de6[_0x49cb71];return _0x3a50fd;};'use strict';var Sequelize=require(_0x67de('0x0'));module[_0x67de('0x1')]={'type':{'type':Sequelize['ENUM'](_0x67de('0x2'),_0x67de('0x3'),_0x67de('0x4'),_0x67de('0x5'),_0x67de('0x6')),'defaultValue':_0x67de('0x2')},'content':{'type':Sequelize[_0x67de('0x7')]},'key':{'type':Sequelize[_0x67de('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x67de('0x2'),_0x67de('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x67de('0x7')]},'idField':{'type':Sequelize[_0x67de('0x7')]},'nameField':{'type':Sequelize[_0x67de('0x7')]},'customField':{'type':Sequelize[_0x67de('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x67de('0x7')]}};
\ No newline at end of file
index 663f67c..4085398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a12=['status','end','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','merge','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x50a05f,_0x1d6994){var _0xd43489=function(_0xdfb61c){while(--_0xdfb61c){_0x50a05f['push'](_0x50a05f['shift']());}};_0xd43489(++_0x1d6994);}(_0x1a12,0x114));var _0x21a1=function(_0x980d1e,_0x45ea51){_0x980d1e=_0x980d1e-0x0;var _0x415931=_0x1a12[_0x980d1e];return _0x415931;};'use strict';var emlformat=require(_0x21a1('0x0'));var rimraf=require(_0x21a1('0x1'));var zipdir=require(_0x21a1('0x2'));var jsonpatch=require(_0x21a1('0x3'));var rp=require(_0x21a1('0x4'));var moment=require(_0x21a1('0x5'));var BPromise=require(_0x21a1('0x6'));var Mustache=require(_0x21a1('0x7'));var util=require(_0x21a1('0x8'));var path=require('path');var sox=require(_0x21a1('0x9'));var csv=require(_0x21a1('0xa'));var ejs=require(_0x21a1('0xb'));var fs=require('fs');var fs_extra=require(_0x21a1('0xc'));var _=require(_0x21a1('0xd'));var squel=require(_0x21a1('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x21a1('0xf'));var toCsv=require(_0x21a1('0xa'));var querystring=require(_0x21a1('0x10'));var Papa=require(_0x21a1('0x11'));var Redis=require(_0x21a1('0x12'));var authService=require(_0x21a1('0x13'));var qs=require(_0x21a1('0x14'));var as=require(_0x21a1('0x15'));var hardwareService=require(_0x21a1('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x21a1('0x17'));var config=require(_0x21a1('0x18'));var licenseUtil=require(_0x21a1('0x19'));var db=require(_0x21a1('0x1a'))['db'];function respondWithStatusCode(_0x5a673c,_0x3333e0){_0x3333e0=_0x3333e0||0xcc;return function(_0x10b969){if(_0x10b969){return _0x5a673c[_0x21a1('0x1b')](_0x3333e0);}return _0x5a673c[_0x21a1('0x1c')](_0x3333e0)[_0x21a1('0x1d')]();};}function respondWithResult(_0x155b9e,_0xc877e7){_0xc877e7=_0xc877e7||0xc8;return function(_0x63d497){if(_0x63d497){return _0x155b9e[_0x21a1('0x1c')](_0xc877e7)[_0x21a1('0x1e')](_0x63d497);}};}function respondWithFilteredResult(_0x3b6987,_0x4de34d){return function(_0x5f0eff){if(_0x5f0eff){var _0x102338=typeof _0x4de34d[_0x21a1('0x1f')]==='undefined'&&typeof _0x4de34d[_0x21a1('0x20')]==='undefined';var _0x2c9d80=_0x5f0eff[_0x21a1('0x21')];var _0x46ea4d=_0x102338?0x0:_0x4de34d['offset'];var _0x2a1446=_0x102338?_0x5f0eff[_0x21a1('0x21')]:_0x4de34d[_0x21a1('0x1f')]+_0x4de34d[_0x21a1('0x20')];var _0x3ca7b5;if(_0x2a1446>=_0x2c9d80){_0x2a1446=_0x2c9d80;_0x3ca7b5=0xc8;}else{_0x3ca7b5=0xce;}_0x3b6987[_0x21a1('0x1c')](_0x3ca7b5);return _0x3b6987[_0x21a1('0x22')](_0x21a1('0x23'),_0x46ea4d+'-'+_0x2a1446+'/'+_0x2c9d80)[_0x21a1('0x1e')](_0x5f0eff);}return null;};}function patchUpdates(_0x407b29){return function(_0x19da14){try{jsonpatch[_0x21a1('0x24')](_0x19da14,_0x407b29,!![]);}catch(_0x3aee18){return BPromise['reject'](_0x3aee18);}return _0x19da14['save']();};}function saveUpdates(_0x140ca3,_0x411ab0){return function(_0x38ffca){if(_0x38ffca){return _0x38ffca[_0x21a1('0x25')](_0x140ca3)[_0x21a1('0x26')](function(_0xc25bc5){return _0xc25bc5;});}return null;};}function removeEntity(_0xc04dca,_0x3fd98f){return function(_0x166f5d){if(_0x166f5d){return _0x166f5d[_0x21a1('0x27')]()['then'](function(){_0xc04dca[_0x21a1('0x1c')](0xcc)[_0x21a1('0x1d')]();});}};}function handleEntityNotFound(_0x466585,_0x8a635f){return function(_0x125d0d){if(!_0x125d0d){_0x466585['sendStatus'](0x194);}return _0x125d0d;};}function handleError(_0x3d6a00,_0xe59731){_0xe59731=_0xe59731||0x1f4;return function(_0x5e3c7d){logger[_0x21a1('0x28')](_0x5e3c7d[_0x21a1('0x29')]);if(_0x5e3c7d[_0x21a1('0x2a')]){delete _0x5e3c7d['name'];}_0x3d6a00[_0x21a1('0x1c')](_0xe59731)['send'](_0x5e3c7d);};}exports[_0x21a1('0x2b')]=function(_0x18da38,_0x5ad7b4){var _0x17d1dd={},_0x1d8714={},_0x48079b={'count':0x0,'rows':[]};var _0x407bee=_[_0x21a1('0x2c')](db[_0x21a1('0x2d')][_0x21a1('0x2e')],function(_0x332819){return{'name':_0x332819[_0x21a1('0x2f')],'type':_0x332819[_0x21a1('0x30')][_0x21a1('0x31')]};});_0x1d8714[_0x21a1('0x32')]=_[_0x21a1('0x2c')](_0x407bee,_0x21a1('0x2a'));_0x1d8714[_0x21a1('0x33')]=_[_0x21a1('0x34')](_0x18da38[_0x21a1('0x33')]);_0x1d8714[_0x21a1('0x35')]=_['intersection'](_0x1d8714[_0x21a1('0x32')],_0x1d8714['query']);_0x17d1dd['attributes']=_[_0x21a1('0x36')](_0x1d8714[_0x21a1('0x32')],qs['fields'](_0x18da38[_0x21a1('0x33')][_0x21a1('0x37')]));_0x17d1dd['attributes']=_0x17d1dd[_0x21a1('0x38')][_0x21a1('0x39')]?_0x17d1dd[_0x21a1('0x38')]:_0x1d8714[_0x21a1('0x32')];if(!_0x18da38[_0x21a1('0x33')]['hasOwnProperty'](_0x21a1('0x3a'))){_0x17d1dd[_0x21a1('0x20')]=qs[_0x21a1('0x20')](_0x18da38[_0x21a1('0x33')][_0x21a1('0x20')]);_0x17d1dd[_0x21a1('0x1f')]=qs[_0x21a1('0x1f')](_0x18da38[_0x21a1('0x33')][_0x21a1('0x1f')]);}_0x17d1dd[_0x21a1('0x3b')]=qs[_0x21a1('0x3c')](_0x18da38[_0x21a1('0x33')][_0x21a1('0x3c')]);_0x17d1dd[_0x21a1('0x3d')]=qs['filters'](_['pick'](_0x18da38[_0x21a1('0x33')],_0x1d8714[_0x21a1('0x35')]),_0x407bee);if(_0x18da38[_0x21a1('0x33')][_0x21a1('0x3e')]){_0x17d1dd[_0x21a1('0x3d')]=_['merge'](_0x17d1dd['where'],{'$or':_[_0x21a1('0x2c')](_0x407bee,function(_0x262096){if(_0x262096['type']!==_0x21a1('0x3f')){var _0x2c90bc={};_0x2c90bc[_0x262096[_0x21a1('0x2a')]]={'$like':'%'+_0x18da38[_0x21a1('0x33')][_0x21a1('0x3e')]+'%'};return _0x2c90bc;}})});}_0x17d1dd=_['merge']({},_0x17d1dd,_0x18da38[_0x21a1('0x40')]);var _0x1f7385={'where':_0x17d1dd['where']};return db[_0x21a1('0x2d')]['count'](_0x1f7385)[_0x21a1('0x26')](function(_0x599111){_0x48079b[_0x21a1('0x21')]=_0x599111;if(_0x18da38['query'][_0x21a1('0x41')]){_0x17d1dd[_0x21a1('0x42')]=[{'all':!![]}];}return db[_0x21a1('0x2d')][_0x21a1('0x43')](_0x17d1dd);})[_0x21a1('0x26')](function(_0x2bb150){_0x48079b[_0x21a1('0x44')]=_0x2bb150;return _0x48079b;})[_0x21a1('0x26')](respondWithFilteredResult(_0x5ad7b4,_0x17d1dd))[_0x21a1('0x45')](handleError(_0x5ad7b4,null));};exports[_0x21a1('0x46')]=function(_0x3e7ac8,_0x396453){var _0x43bc92={'raw':!![],'where':{'id':_0x3e7ac8['params']['id']}},_0x16dcba={};_0x16dcba['model']=_[_0x21a1('0x34')](db[_0x21a1('0x2d')][_0x21a1('0x2e')]);_0x16dcba['query']=_['keys'](_0x3e7ac8[_0x21a1('0x33')]);_0x16dcba['filters']=_[_0x21a1('0x36')](_0x16dcba[_0x21a1('0x32')],_0x16dcba[_0x21a1('0x33')]);_0x43bc92[_0x21a1('0x38')]=_[_0x21a1('0x36')](_0x16dcba[_0x21a1('0x32')],qs[_0x21a1('0x37')](_0x3e7ac8['query']['fields']));_0x43bc92['attributes']=_0x43bc92[_0x21a1('0x38')][_0x21a1('0x39')]?_0x43bc92[_0x21a1('0x38')]:_0x16dcba[_0x21a1('0x32')];if(_0x3e7ac8[_0x21a1('0x33')][_0x21a1('0x41')]){_0x43bc92['include']=[{'all':!![]}];}_0x43bc92=_[_0x21a1('0x47')]({},_0x43bc92,_0x3e7ac8['options']);return db[_0x21a1('0x2d')][_0x21a1('0x48')](_0x43bc92)[_0x21a1('0x26')](handleEntityNotFound(_0x396453,null))[_0x21a1('0x26')](respondWithResult(_0x396453,null))[_0x21a1('0x45')](handleError(_0x396453,null));};exports[_0x21a1('0x49')]=function(_0x2cf283,_0x1db0ef){return db[_0x21a1('0x2d')][_0x21a1('0x49')](_0x2cf283['body'],{})[_0x21a1('0x26')](respondWithResult(_0x1db0ef,0xc9))[_0x21a1('0x45')](handleError(_0x1db0ef,null));};exports['update']=function(_0x37139a,_0x882d3f){if(_0x37139a[_0x21a1('0x4a')]['id']){delete _0x37139a[_0x21a1('0x4a')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0x37139a[_0x21a1('0x4b')]['id']}})[_0x21a1('0x26')](handleEntityNotFound(_0x882d3f,null))[_0x21a1('0x26')](saveUpdates(_0x37139a[_0x21a1('0x4a')],null))['then'](respondWithResult(_0x882d3f,null))[_0x21a1('0x45')](handleError(_0x882d3f,null));};exports[_0x21a1('0x27')]=function(_0x3646e8,_0x40b474){return db[_0x21a1('0x2d')][_0x21a1('0x48')]({'where':{'id':_0x3646e8[_0x21a1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x40b474,null))[_0x21a1('0x26')](removeEntity(_0x40b474,null))[_0x21a1('0x45')](handleError(_0x40b474,null));};
\ No newline at end of file
+var _0x5c77=['fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','map','FreshsalesField','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','findAll','params','keys','rawAttributes','includeAll','include','find','catch','create','body','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0xc69bf9,_0x31b60e){var _0x5f394a=function(_0x88a6f1){while(--_0x88a6f1){_0xc69bf9['push'](_0xc69bf9['shift']());}};_0x5f394a(++_0x31b60e);}(_0x5c77,0x11a));var _0x75c7=function(_0x411bd1,_0x416106){_0x411bd1=_0x411bd1-0x0;var _0x320464=_0x5c77[_0x411bd1];return _0x320464;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x75c7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75c7('0x1'));var moment=require(_0x75c7('0x2'));var BPromise=require(_0x75c7('0x3'));var Mustache=require(_0x75c7('0x4'));var util=require(_0x75c7('0x5'));var path=require(_0x75c7('0x6'));var sox=require(_0x75c7('0x7'));var csv=require(_0x75c7('0x8'));var ejs=require(_0x75c7('0x9'));var fs=require('fs');var fs_extra=require(_0x75c7('0xa'));var _=require(_0x75c7('0xb'));var squel=require(_0x75c7('0xc'));var crypto=require(_0x75c7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x75c7('0xe'));var toCsv=require(_0x75c7('0x8'));var querystring=require('querystring');var Papa=require(_0x75c7('0xf'));var Redis=require(_0x75c7('0x10'));var authService=require(_0x75c7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x75c7('0x12'));var hardwareService=require(_0x75c7('0x13'));var logger=require(_0x75c7('0x14'))(_0x75c7('0x15'));var utils=require(_0x75c7('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x75c7('0x17'));var db=require(_0x75c7('0x18'))['db'];function respondWithStatusCode(_0x10e681,_0x3c0de5){_0x3c0de5=_0x3c0de5||0xcc;return function(_0x46885f){if(_0x46885f){return _0x10e681[_0x75c7('0x19')](_0x3c0de5);}return _0x10e681[_0x75c7('0x1a')](_0x3c0de5)[_0x75c7('0x1b')]();};}function respondWithResult(_0x5e2726,_0x5d9e75){_0x5d9e75=_0x5d9e75||0xc8;return function(_0x46306e){if(_0x46306e){return _0x5e2726[_0x75c7('0x1a')](_0x5d9e75)[_0x75c7('0x1c')](_0x46306e);}};}function respondWithFilteredResult(_0x2f2646,_0x477537){return function(_0x146096){if(_0x146096){var _0x4f9d11=typeof _0x477537[_0x75c7('0x1d')]===_0x75c7('0x1e')&&typeof _0x477537[_0x75c7('0x1f')]===_0x75c7('0x1e');var _0x15ea8b=_0x146096[_0x75c7('0x20')];var _0x5b302c=_0x4f9d11?0x0:_0x477537[_0x75c7('0x1d')];var _0x40732f=_0x4f9d11?_0x146096[_0x75c7('0x20')]:_0x477537[_0x75c7('0x1d')]+_0x477537['limit'];var _0x20708f;if(_0x40732f>=_0x15ea8b){_0x40732f=_0x15ea8b;_0x20708f=0xc8;}else{_0x20708f=0xce;}_0x2f2646[_0x75c7('0x1a')](_0x20708f);return _0x2f2646[_0x75c7('0x21')](_0x75c7('0x22'),_0x5b302c+'-'+_0x40732f+'/'+_0x15ea8b)['json'](_0x146096);}return null;};}function patchUpdates(_0x4c91a2){return function(_0x470efc){try{jsonpatch['apply'](_0x470efc,_0x4c91a2,!![]);}catch(_0x31d56c){return BPromise[_0x75c7('0x23')](_0x31d56c);}return _0x470efc[_0x75c7('0x24')]();};}function saveUpdates(_0x594a83,_0x2e5670){return function(_0x40999a){if(_0x40999a){return _0x40999a[_0x75c7('0x25')](_0x594a83)[_0x75c7('0x26')](function(_0x5a82e7){return _0x5a82e7;});}return null;};}function removeEntity(_0x5e5278,_0x1d34cd){return function(_0x1f322f){if(_0x1f322f){return _0x1f322f[_0x75c7('0x27')]()['then'](function(){_0x5e5278[_0x75c7('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x148bcc,_0x5baa38){return function(_0x357ad4){if(!_0x357ad4){_0x148bcc[_0x75c7('0x19')](0x194);}return _0x357ad4;};}function handleError(_0x428c37,_0x2a1d9e){_0x2a1d9e=_0x2a1d9e||0x1f4;return function(_0x1cbdf9){logger[_0x75c7('0x28')](_0x1cbdf9[_0x75c7('0x29')]);if(_0x1cbdf9[_0x75c7('0x2a')]){delete _0x1cbdf9['name'];}_0x428c37['status'](_0x2a1d9e)['send'](_0x1cbdf9);};}exports['index']=function(_0x4d21b0,_0x4b3eea){var _0x36794d={},_0x3ae280={},_0x145638={'count':0x0,'rows':[]};var _0x941eec=_[_0x75c7('0x2b')](db[_0x75c7('0x2c')]['rawAttributes'],function(_0x53df41){return{'name':_0x53df41[_0x75c7('0x2d')],'type':_0x53df41[_0x75c7('0x2e')][_0x75c7('0x2f')]};});_0x3ae280['model']=_['map'](_0x941eec,'name');_0x3ae280[_0x75c7('0x30')]=_['keys'](_0x4d21b0[_0x75c7('0x30')]);_0x3ae280[_0x75c7('0x31')]=_[_0x75c7('0x32')](_0x3ae280[_0x75c7('0x33')],_0x3ae280[_0x75c7('0x30')]);_0x36794d[_0x75c7('0x34')]=_[_0x75c7('0x32')](_0x3ae280['model'],qs[_0x75c7('0x35')](_0x4d21b0[_0x75c7('0x30')][_0x75c7('0x35')]));_0x36794d[_0x75c7('0x34')]=_0x36794d[_0x75c7('0x34')][_0x75c7('0x36')]?_0x36794d[_0x75c7('0x34')]:_0x3ae280[_0x75c7('0x33')];if(!_0x4d21b0[_0x75c7('0x30')]['hasOwnProperty'](_0x75c7('0x37'))){_0x36794d[_0x75c7('0x1f')]=qs[_0x75c7('0x1f')](_0x4d21b0[_0x75c7('0x30')]['limit']);_0x36794d['offset']=qs[_0x75c7('0x1d')](_0x4d21b0[_0x75c7('0x30')][_0x75c7('0x1d')]);}_0x36794d[_0x75c7('0x38')]=qs[_0x75c7('0x39')](_0x4d21b0[_0x75c7('0x30')][_0x75c7('0x39')]);_0x36794d['where']=qs['filters'](_[_0x75c7('0x3a')](_0x4d21b0['query'],_0x3ae280['filters']),_0x941eec);if(_0x4d21b0[_0x75c7('0x30')][_0x75c7('0x3b')]){_0x36794d['where']=_[_0x75c7('0x3c')](_0x36794d[_0x75c7('0x3d')],{'$or':_[_0x75c7('0x2b')](_0x941eec,function(_0x549e31){if(_0x549e31[_0x75c7('0x2e')]!==_0x75c7('0x3e')){var _0x152ef6={};_0x152ef6[_0x549e31['name']]={'$like':'%'+_0x4d21b0['query'][_0x75c7('0x3b')]+'%'};return _0x152ef6;}})});}_0x36794d=_[_0x75c7('0x3c')]({},_0x36794d,_0x4d21b0['options']);var _0x7e9833={'where':_0x36794d[_0x75c7('0x3d')]};return db[_0x75c7('0x2c')][_0x75c7('0x20')](_0x7e9833)['then'](function(_0x3a6514){_0x145638[_0x75c7('0x20')]=_0x3a6514;if(_0x4d21b0[_0x75c7('0x30')]['includeAll']){_0x36794d['include']=[{'all':!![]}];}return db[_0x75c7('0x2c')][_0x75c7('0x3f')](_0x36794d);})[_0x75c7('0x26')](function(_0x3bea1a){_0x145638['rows']=_0x3bea1a;return _0x145638;})[_0x75c7('0x26')](respondWithFilteredResult(_0x4b3eea,_0x36794d))['catch'](handleError(_0x4b3eea,null));};exports['show']=function(_0x2c1f5d,_0x381cc5){var _0x2dcf8c={'raw':!![],'where':{'id':_0x2c1f5d[_0x75c7('0x40')]['id']}},_0x32e549={};_0x32e549[_0x75c7('0x33')]=_[_0x75c7('0x41')](db[_0x75c7('0x2c')][_0x75c7('0x42')]);_0x32e549['query']=_['keys'](_0x2c1f5d[_0x75c7('0x30')]);_0x32e549[_0x75c7('0x31')]=_[_0x75c7('0x32')](_0x32e549[_0x75c7('0x33')],_0x32e549[_0x75c7('0x30')]);_0x2dcf8c[_0x75c7('0x34')]=_[_0x75c7('0x32')](_0x32e549[_0x75c7('0x33')],qs[_0x75c7('0x35')](_0x2c1f5d[_0x75c7('0x30')][_0x75c7('0x35')]));_0x2dcf8c[_0x75c7('0x34')]=_0x2dcf8c['attributes'][_0x75c7('0x36')]?_0x2dcf8c[_0x75c7('0x34')]:_0x32e549['model'];if(_0x2c1f5d[_0x75c7('0x30')][_0x75c7('0x43')]){_0x2dcf8c[_0x75c7('0x44')]=[{'all':!![]}];}_0x2dcf8c=_[_0x75c7('0x3c')]({},_0x2dcf8c,_0x2c1f5d['options']);return db[_0x75c7('0x2c')][_0x75c7('0x45')](_0x2dcf8c)[_0x75c7('0x26')](handleEntityNotFound(_0x381cc5,null))['then'](respondWithResult(_0x381cc5,null))[_0x75c7('0x46')](handleError(_0x381cc5,null));};exports[_0x75c7('0x47')]=function(_0x528075,_0x2727b0){return db['FreshsalesField']['create'](_0x528075[_0x75c7('0x48')],{})['then'](respondWithResult(_0x2727b0,0xc9))[_0x75c7('0x46')](handleError(_0x2727b0,null));};exports[_0x75c7('0x25')]=function(_0x4b134f,_0x2ad143){if(_0x4b134f[_0x75c7('0x48')]['id']){delete _0x4b134f[_0x75c7('0x48')]['id'];}return db[_0x75c7('0x2c')]['find']({'where':{'id':_0x4b134f[_0x75c7('0x40')]['id']}})[_0x75c7('0x26')](handleEntityNotFound(_0x2ad143,null))[_0x75c7('0x26')](saveUpdates(_0x4b134f[_0x75c7('0x48')],null))['then'](respondWithResult(_0x2ad143,null))['catch'](handleError(_0x2ad143,null));};exports[_0x75c7('0x27')]=function(_0x5466d4,_0x541ff8){return db[_0x75c7('0x2c')][_0x75c7('0x45')]({'where':{'id':_0x5466d4['params']['id']}})['then'](handleEntityNotFound(_0x541ff8,null))[_0x75c7('0x26')](removeEntity(_0x541ff8,null))[_0x75c7('0x46')](handleError(_0x541ff8,null));};
\ No newline at end of file
index 8a0c77e..2514427 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c9=['rimraf','./intFreshsalesField.attributes','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','request-promise','path'];(function(_0x2b3806,_0x4ecf8d){var _0xabdeab=function(_0x4a2a7b){while(--_0x4a2a7b){_0x2b3806['push'](_0x2b3806['shift']());}};_0xabdeab(++_0x4ecf8d);}(_0xf4c9,0x1aa));var _0x9f4c=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xf4c9[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0x9f4c('0x0'));var util=require(_0x9f4c('0x1'));var logger=require(_0x9f4c('0x2'))('api');var moment=require(_0x9f4c('0x3'));var BPromise=require('bluebird');var rp=require(_0x9f4c('0x4'));var fs=require('fs');var path=require(_0x9f4c('0x5'));var rimraf=require(_0x9f4c('0x6'));var config=require('../../config/environment');var attributes=require(_0x9f4c('0x7'));module['exports']=function(_0x42cd40,_0x48dc53){return _0x42cd40['define']('FreshsalesField',attributes,{'tableName':_0x9f4c('0x8'),'paranoid':![],'indexes':[{'name':_0x9f4c('0x9'),'fields':[_0x9f4c('0xa'),_0x9f4c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x09d2=['FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FreshsalesField','idField'];(function(_0x56ca19,_0x499977){var _0x3bf609=function(_0x6fcea7){while(--_0x6fcea7){_0x56ca19['push'](_0x56ca19['shift']());}};_0x3bf609(++_0x499977);}(_0x09d2,0x1d2));var _0x209d=function(_0x4b6e28,_0x56ee06){_0x4b6e28=_0x4b6e28-0x0;var _0x52b72c=_0x09d2[_0x4b6e28];return _0x52b72c;};'use strict';var _=require(_0x209d('0x0'));var util=require(_0x209d('0x1'));var logger=require(_0x209d('0x2'))(_0x209d('0x3'));var moment=require(_0x209d('0x4'));var BPromise=require(_0x209d('0x5'));var rp=require(_0x209d('0x6'));var fs=require('fs');var path=require(_0x209d('0x7'));var rimraf=require(_0x209d('0x8'));var config=require(_0x209d('0x9'));var attributes=require('./intFreshsalesField.attributes');module[_0x209d('0xa')]=function(_0x315ec7,_0x3f2896){return _0x315ec7[_0x209d('0xb')](_0x209d('0xc'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x209d('0xd'),_0x209d('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index eafcfe4..53fa731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x5aa373,_0x54c7f4){var _0x590e8e=function(_0x505e62){while(--_0x505e62){_0x5aa373['push'](_0x5aa373['shift']());}};_0x590e8e(++_0x54c7f4);}(_0x687b,0x14a));var _0xb687=function(_0x5f4d59,_0x554969){_0x5f4d59=_0x5f4d59-0x0;var _0x4d5dea=_0x687b[_0x5f4d59];return _0x4d5dea;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var moment=require(_0xb687('0x2'));var BPromise=require(_0xb687('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb687('0x4'))['db'];var utils=require(_0xb687('0x5'));var logger=require(_0xb687('0x6'))(_0xb687('0x7'));var config=require(_0xb687('0x8'));var jayson=require(_0xb687('0x9'));var client=jayson[_0xb687('0xa')][_0xb687('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x47ffea,_0x27b750,_0x48942b){return new BPromise(function(_0x2aea59,_0xd40346){return client['request'](_0x47ffea,_0x48942b)[_0xb687('0xc')](function(_0x21e3ab){logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));logger[_0xb687('0x10')](_0xb687('0x11'),_0x27b750,_0xb687('0xf'),JSON[_0xb687('0x12')](_0x21e3ab));if(_0x21e3ab['error']){if(_0x21e3ab[_0xb687('0x13')][_0xb687('0x14')]===0x1f4){logger[_0xb687('0x13')](_0xb687('0xe'),_0x27b750,_0x21e3ab['error']['message']);return _0xd40346(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}logger['error'](_0xb687('0xe'),_0x27b750,_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);return _0x2aea59(_0x21e3ab[_0xb687('0x13')][_0xb687('0x15')]);}else{logger[_0xb687('0xd')](_0xb687('0xe'),_0x27b750,_0xb687('0xf'));_0x2aea59(_0x21e3ab[_0xb687('0x16')][_0xb687('0x15')]);}})[_0xb687('0x17')](function(_0x19bb29){logger['error'](_0xb687('0xe'),_0x27b750,_0x19bb29);_0xd40346(_0x19bb29);});});}
\ No newline at end of file
+var _0xacf4=['message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','error'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0xacf4,0xe7));var _0x4acf=function(_0x2db5f2,_0x244403){_0x2db5f2=_0x2db5f2-0x0;var _0x230c2f=_0xacf4[_0x2db5f2];return _0x230c2f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}
\ No newline at end of file
index 14b7d76..880c8bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x7f7220,_0x443a44){var _0x202d05=function(_0x437aac){while(--_0x437aac){_0x7f7220['push'](_0x7f7220['shift']());}};_0x202d05(++_0x443a44);}(_0xa9e0,0x123));var _0x0a9e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa9e0[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2f8a29,_0x3c8890){var _0x195933=function(_0x36def2){while(--_0x36def2){_0x2f8a29['push'](_0x2f8a29['shift']());}};_0x195933(++_0x3c8890);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 4f44ead..bbad9a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65cb=['STRING','ENUM','integrationTab','newTab','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x65cb,0xa4));var _0xb65c=function(_0x3903aa,_0x42e19d){_0x3903aa=_0x3903aa-0x0;var _0x357eb7=_0x65cb[_0x3903aa];return _0x357eb7;};'use strict';var Sequelize=require(_0xb65c('0x0'));module['exports']={'name':{'type':Sequelize[_0xb65c('0x1')]},'description':{'type':Sequelize[_0xb65c('0x1')]},'username':{'type':Sequelize[_0xb65c('0x1')],'unique':'username'},'remoteUri':{'type':Sequelize[_0xb65c('0x1')]},'password':{'type':Sequelize[_0xb65c('0x1')]},'clientId':{'type':Sequelize[_0xb65c('0x1')]},'clientSecret':{'type':Sequelize[_0xb65c('0x1')]},'securityToken':{'type':Sequelize[_0xb65c('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb65c('0x2')](_0xb65c('0x3'),_0xb65c('0x4')),'defaultValue':_0xb65c('0x3')}};
\ No newline at end of file
+var _0x0e5a=['STRING','username','newTab','integrationTab','sequelize','exports'];(function(_0xeb8012,_0x221ad8){var _0x4e702a=function(_0x42836e){while(--_0x42836e){_0xeb8012['push'](_0xeb8012['shift']());}};_0x4e702a(++_0x221ad8);}(_0x0e5a,0x70));var _0xa0e5=function(_0x152061,_0x24001d){_0x152061=_0x152061-0x0;var _0x439aa4=_0x0e5a[_0x152061];return _0x439aa4;};'use strict';var Sequelize=require(_0xa0e5('0x0'));module[_0xa0e5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xa0e5('0x2')],'unique':_0xa0e5('0x3')},'remoteUri':{'type':Sequelize[_0xa0e5('0x2')]},'password':{'type':Sequelize[_0xa0e5('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xa0e5('0x2')]},'securityToken':{'type':Sequelize[_0xa0e5('0x2')]},'serverUrl':{'type':Sequelize[_0xa0e5('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0xa0e5('0x4')),'defaultValue':_0xa0e5('0x5')}};
\ No newline at end of file
index d3bd08f..ff3909c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x361f=['getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','SalesforceAccount','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','destroy','getConfigurations','findOne','SalesforceConfiguration','AccountId','channel','Descriptions','getDescriptions','SalesforceField','Subjects','getFields','remoteUri','clientId','username','password','securityToken','slice','substring','Connection','clientSecret','login','isNil','ticketType','sobject','describe','OwnerId','IsReminderSet','IsRecurrence','Subject','Description','string','int','boolean','textarea','includes','label','custom','picklistValues','value','True','true','test','statusCode'];(function(_0xf591f4,_0x2d48b7){var _0x2260c9=function(_0x193519){while(--_0x193519){_0xf591f4['push'](_0xf591f4['shift']());}};_0x2260c9(++_0x2d48b7);}(_0x361f,0x7c));var _0xf361=function(_0x597ebe,_0x33b3ec){_0x597ebe=_0x597ebe-0x0;var _0x23c0bd=_0x361f[_0x597ebe];return _0x23c0bd;};'use strict';var emlformat=require(_0xf361('0x0'));var rimraf=require(_0xf361('0x1'));var zipdir=require(_0xf361('0x2'));var jsonpatch=require(_0xf361('0x3'));var rp=require(_0xf361('0x4'));var moment=require(_0xf361('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xf361('0x6'));var util=require('util');var path=require('path');var sox=require(_0xf361('0x7'));var csv=require('to-csv');var ejs=require(_0xf361('0x8'));var fs=require('fs');var fs_extra=require(_0xf361('0x9'));var _=require(_0xf361('0xa'));var squel=require(_0xf361('0xb'));var crypto=require(_0xf361('0xc'));var jsforce=require(_0xf361('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf361('0xe'));var Papa=require(_0xf361('0xf'));var Redis=require(_0xf361('0x10'));var authService=require(_0xf361('0x11'));var qs=require(_0xf361('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf361('0x13'));var logger=require(_0xf361('0x14'))(_0xf361('0x15'));var utils=require(_0xf361('0x16'));var config=require(_0xf361('0x17'));var licenseUtil=require(_0xf361('0x18'));var db=require(_0xf361('0x19'))['db'];var integrations=require(_0xf361('0x1a'));function respondWithStatusCode(_0x2c5bd7,_0x80c7d9){_0x80c7d9=_0x80c7d9||0xcc;return function(_0x26b0d7){if(_0x26b0d7){return _0x2c5bd7[_0xf361('0x1b')](_0x80c7d9);}return _0x2c5bd7[_0xf361('0x1c')](_0x80c7d9)['end']();};}function respondWithResult(_0x3b1583,_0x3f03d8){_0x3f03d8=_0x3f03d8||0xc8;return function(_0xe2cc76){if(_0xe2cc76){return _0x3b1583['status'](_0x3f03d8)[_0xf361('0x1d')](_0xe2cc76);}};}function respondWithFilteredResult(_0x5126a7,_0x107a29){return function(_0x5e564c){if(_0x5e564c){var _0x113384=typeof _0x107a29[_0xf361('0x1e')]==='undefined'&&typeof _0x107a29[_0xf361('0x1f')]===_0xf361('0x20');var _0x411eca=_0x5e564c['count'];var _0x1b0109=_0x113384?0x0:_0x107a29[_0xf361('0x1e')];var _0x569f29=_0x113384?_0x5e564c[_0xf361('0x21')]:_0x107a29[_0xf361('0x1e')]+_0x107a29[_0xf361('0x1f')];var _0x11fb19;if(_0x569f29>=_0x411eca){_0x569f29=_0x411eca;_0x11fb19=0xc8;}else{_0x11fb19=0xce;}_0x5126a7['status'](_0x11fb19);return _0x5126a7['set'](_0xf361('0x22'),_0x1b0109+'-'+_0x569f29+'/'+_0x411eca)[_0xf361('0x1d')](_0x5e564c);}return null;};}function patchUpdates(_0x494a22){return function(_0x5a350b){try{jsonpatch[_0xf361('0x23')](_0x5a350b,_0x494a22,!![]);}catch(_0x4dab39){return BPromise[_0xf361('0x24')](_0x4dab39);}return _0x5a350b[_0xf361('0x25')]();};}function saveUpdates(_0x24ef77,_0x51df81){return function(_0x53d8db){if(_0x53d8db){return _0x53d8db[_0xf361('0x26')](_0x24ef77)[_0xf361('0x27')](function(_0x207d6a){return _0x207d6a;});}return null;};}function removeEntity(_0x8ab291,_0x527fa2){return function(_0x1780b7){if(_0x1780b7){return _0x1780b7['destroy']()[_0xf361('0x27')](function(){_0x8ab291[_0xf361('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ff6ec,_0x3fca51){return function(_0x1f9913){if(!_0x1f9913){_0x2ff6ec[_0xf361('0x1b')](0x194);}return _0x1f9913;};}function handleError(_0x5809ad,_0xf877cf){_0xf877cf=_0xf877cf||0x1f4;return function(_0x4661d6){logger[_0xf361('0x28')](_0x4661d6[_0xf361('0x29')]);if(_0x4661d6[_0xf361('0x2a')]){delete _0x4661d6['name'];}_0x5809ad['status'](_0xf877cf)[_0xf361('0x2b')](_0x4661d6);};}exports[_0xf361('0x2c')]=function(_0xa65d48,_0x29f198){var _0xccfa63={},_0x23fee0={},_0x11350f={'count':0x0,'rows':[]};var _0x4295ad=_[_0xf361('0x2d')](db['SalesforceAccount']['rawAttributes'],function(_0x148d44){return{'name':_0x148d44['fieldName'],'type':_0x148d44['type'][_0xf361('0x2e')]};});_0x23fee0[_0xf361('0x2f')]=_['map'](_0x4295ad,'name');_0x23fee0[_0xf361('0x30')]=_['keys'](_0xa65d48[_0xf361('0x30')]);_0x23fee0[_0xf361('0x31')]=_[_0xf361('0x32')](_0x23fee0['model'],_0x23fee0[_0xf361('0x30')]);_0xccfa63[_0xf361('0x33')]=_[_0xf361('0x32')](_0x23fee0[_0xf361('0x2f')],qs[_0xf361('0x34')](_0xa65d48[_0xf361('0x30')]['fields']));_0xccfa63['attributes']=_0xccfa63[_0xf361('0x33')][_0xf361('0x35')]?_0xccfa63[_0xf361('0x33')]:_0x23fee0['model'];if(!_0xa65d48[_0xf361('0x30')][_0xf361('0x36')](_0xf361('0x37'))){_0xccfa63[_0xf361('0x1f')]=qs[_0xf361('0x1f')](_0xa65d48['query'][_0xf361('0x1f')]);_0xccfa63['offset']=qs[_0xf361('0x1e')](_0xa65d48[_0xf361('0x30')][_0xf361('0x1e')]);}_0xccfa63[_0xf361('0x38')]=qs[_0xf361('0x39')](_0xa65d48[_0xf361('0x30')][_0xf361('0x39')]);_0xccfa63['where']=qs['filters'](_['pick'](_0xa65d48[_0xf361('0x30')],_0x23fee0['filters']),_0x4295ad);if(_0xa65d48['query'][_0xf361('0x3a')]){_0xccfa63[_0xf361('0x3b')]=_[_0xf361('0x3c')](_0xccfa63['where'],{'$or':_[_0xf361('0x2d')](_0x4295ad,function(_0x597ebc){if(_0x597ebc[_0xf361('0x3d')]!==_0xf361('0x3e')){var _0x3d3d86={};_0x3d3d86[_0x597ebc['name']]={'$like':'%'+_0xa65d48['query'][_0xf361('0x3a')]+'%'};return _0x3d3d86;}})});}_0xccfa63=_[_0xf361('0x3c')]({},_0xccfa63,_0xa65d48[_0xf361('0x3f')]);var _0x71d201={'where':_0xccfa63[_0xf361('0x3b')]};return db[_0xf361('0x40')][_0xf361('0x21')](_0x71d201)[_0xf361('0x27')](function(_0x521b61){_0x11350f[_0xf361('0x21')]=_0x521b61;if(_0xa65d48[_0xf361('0x30')][_0xf361('0x41')]){_0xccfa63[_0xf361('0x42')]=[{'all':!![]}];}return db[_0xf361('0x40')][_0xf361('0x43')](_0xccfa63);})[_0xf361('0x27')](function(_0x39f344){_0x11350f[_0xf361('0x44')]=_0x39f344;return _0x11350f;})['then'](respondWithFilteredResult(_0x29f198,_0xccfa63))[_0xf361('0x45')](handleError(_0x29f198,null));};exports[_0xf361('0x46')]=function(_0x295f4e,_0x294429){var _0x2476ba={'raw':![],'where':{'id':_0x295f4e[_0xf361('0x47')]['id']}},_0x399994={};_0x399994['model']=_[_0xf361('0x48')](db[_0xf361('0x40')][_0xf361('0x49')]);_0x399994[_0xf361('0x30')]=_[_0xf361('0x48')](_0x295f4e['query']);_0x399994['filters']=_[_0xf361('0x32')](_0x399994[_0xf361('0x2f')],_0x399994[_0xf361('0x30')]);_0x2476ba[_0xf361('0x33')]=_[_0xf361('0x32')](_0x399994['model'],qs[_0xf361('0x34')](_0x295f4e[_0xf361('0x30')][_0xf361('0x34')]));_0x2476ba['attributes']=_0x2476ba[_0xf361('0x33')][_0xf361('0x35')]?_0x2476ba[_0xf361('0x33')]:_0x399994[_0xf361('0x2f')];if(_0x295f4e[_0xf361('0x30')][_0xf361('0x41')]){_0x2476ba['include']=[{'all':!![]}];}_0x2476ba=_['merge']({},_0x2476ba,_0x295f4e[_0xf361('0x3f')]);return db[_0xf361('0x40')][_0xf361('0x4a')](_0x2476ba)[_0xf361('0x27')](handleEntityNotFound(_0x294429,null))['then'](respondWithResult(_0x294429,null))['catch'](handleError(_0x294429,null));};exports[_0xf361('0x4b')]=function(_0x3d1a8c,_0x50fb73){return db[_0xf361('0x40')][_0xf361('0x4b')](_0x3d1a8c['body'],{})[_0xf361('0x27')](respondWithResult(_0x50fb73,0xc9))[_0xf361('0x45')](handleError(_0x50fb73,null));};exports['update']=function(_0x56b365,_0x5132a7){if(_0x56b365['body']['id']){delete _0x56b365[_0xf361('0x4c')]['id'];}return db[_0xf361('0x40')]['find']({'where':{'id':_0x56b365[_0xf361('0x47')]['id']}})[_0xf361('0x27')](handleEntityNotFound(_0x5132a7,null))['then'](saveUpdates(_0x56b365['body'],null))['then'](respondWithResult(_0x5132a7,null))[_0xf361('0x45')](handleError(_0x5132a7,null));};exports[_0xf361('0x4d')]=function(_0xcd3313,_0x41888f){return db['SalesforceAccount'][_0xf361('0x4a')]({'where':{'id':_0xcd3313['params']['id']}})[_0xf361('0x27')](handleEntityNotFound(_0x41888f,null))[_0xf361('0x27')](removeEntity(_0x41888f,null))[_0xf361('0x45')](handleError(_0x41888f,null));};exports[_0xf361('0x4e')]=function(_0x590030,_0x30484b,_0x3b9101){var _0x5e2961={};var _0x2f9657={};var _0x1aa0e2;var _0x5af7ed;return db[_0xf361('0x40')][_0xf361('0x4f')]({'where':{'id':_0x590030[_0xf361('0x47')]['id']}})[_0xf361('0x27')](handleEntityNotFound(_0x30484b,null))[_0xf361('0x27')](function(_0xb4ab9c){if(_0xb4ab9c){_0x1aa0e2=_0xb4ab9c;_0x2f9657[_0xf361('0x2f')]=_[_0xf361('0x48')](db[_0xf361('0x50')]['rawAttributes']);_0x2f9657[_0xf361('0x30')]=_[_0xf361('0x48')](_0x590030[_0xf361('0x30')]);_0x2f9657[_0xf361('0x31')]=_[_0xf361('0x32')](_0x2f9657[_0xf361('0x2f')],_0x2f9657[_0xf361('0x30')]);_0x5e2961[_0xf361('0x33')]=_['intersection'](_0x2f9657[_0xf361('0x2f')],qs[_0xf361('0x34')](_0x590030[_0xf361('0x30')][_0xf361('0x34')]));_0x5e2961[_0xf361('0x33')]=_0x5e2961[_0xf361('0x33')]['length']?_0x5e2961[_0xf361('0x33')]:_0x2f9657[_0xf361('0x2f')];_0x5e2961[_0xf361('0x38')]=qs[_0xf361('0x39')](_0x590030['query'][_0xf361('0x39')]);_0x5e2961[_0xf361('0x3b')]=qs[_0xf361('0x31')](_['pick'](_0x590030['query'],_0x2f9657[_0xf361('0x31')]));if(_0x590030[_0xf361('0x30')]['filter']){_0x5e2961[_0xf361('0x3b')]=_[_0xf361('0x3c')](_0x5e2961['where'],{'$or':_[_0xf361('0x2d')](_0x5e2961[_0xf361('0x33')],function(_0x28d946){var _0x2d6297={};_0x2d6297[_0x28d946]={'$like':'%'+_0x590030[_0xf361('0x30')]['filter']+'%'};return _0x2d6297;})});}_0x5e2961=_['merge']({},_0x5e2961,_0x590030[_0xf361('0x3f')]);return _0x1aa0e2[_0xf361('0x4e')](_0x5e2961);}})[_0xf361('0x27')](function(_0x5eb5c4){if(_0x5eb5c4){_0x5af7ed=_0x5eb5c4['length'];if(!_0x590030[_0xf361('0x30')][_0xf361('0x36')](_0xf361('0x37'))){_0x5e2961[_0xf361('0x1f')]=qs[_0xf361('0x1f')](_0x590030[_0xf361('0x30')][_0xf361('0x1f')]);_0x5e2961[_0xf361('0x1e')]=qs[_0xf361('0x1e')](_0x590030[_0xf361('0x30')]['offset']);}return _0x1aa0e2[_0xf361('0x4e')](_0x5e2961);}})[_0xf361('0x27')](function(_0x2b4ad7){if(_0x2b4ad7){return _0x2b4ad7?{'count':_0x5af7ed,'rows':_0x2b4ad7}:null;}})[_0xf361('0x27')](respondWithResult(_0x30484b,null))['catch'](handleError(_0x30484b,null));};exports['addConfiguration']=function(_0x3a8ccf,_0x5b8233,_0x13287e){if(_0x3a8ccf['body']['id']){delete _0x3a8ccf['body']['id'];}return db['SalesforceAccount'][_0xf361('0x4f')]({'where':{'id':_0x3a8ccf[_0xf361('0x47')]['id']}})['then'](handleEntityNotFound(_0x5b8233,null))[_0xf361('0x27')](function(_0x1cb037){if(_0x1cb037){_0x3a8ccf[_0xf361('0x4c')][_0xf361('0x51')]=_0x1cb037['id'];_0x3a8ccf[_0xf361('0x4c')]['Subjects']=integrations['getSubjects'](_0x3a8ccf[_0xf361('0x4c')][_0xf361('0x52')],_0x3a8ccf[_0xf361('0x4c')][_0xf361('0x3d')]);_0x3a8ccf[_0xf361('0x4c')][_0xf361('0x53')]=integrations[_0xf361('0x54')](_0x3a8ccf[_0xf361('0x4c')]['channel'],_0x3a8ccf[_0xf361('0x4c')][_0xf361('0x3d')]);return db[_0xf361('0x50')][_0xf361('0x4b')](_0x3a8ccf[_0xf361('0x4c')],{'include':[{'model':db[_0xf361('0x55')],'as':_0xf361('0x56')},{'model':db[_0xf361('0x55')],'as':_0xf361('0x53')}]});}return null;})[_0xf361('0x27')](respondWithResult(_0x5b8233,null))[_0xf361('0x45')](handleError(_0x5b8233,null));};exports[_0xf361('0x57')]=function(_0x339013,_0x1b9d0b,_0x29e07c){var _0x346ba3;var _0x13608f='';var _0x24b4c9='Task';return db[_0xf361('0x40')][_0xf361('0x4f')]({'where':{'id':_0x339013['params']['id']},'attributes':['id',_0xf361('0x58'),_0xf361('0x59'),'clientSecret',_0xf361('0x5a'),_0xf361('0x5b'),_0xf361('0x5c')]})[_0xf361('0x27')](handleEntityNotFound(_0x1b9d0b,null))[_0xf361('0x27')](function(_0x54394f){if(_0x54394f){_0x13608f=_0x54394f[_0xf361('0x58')];var _0x42ddc2=_0x13608f[_0xf361('0x5d')](-0x1);if(_0x42ddc2==='/'){_0x13608f=_0x13608f[_0xf361('0x5e')](0x0,_0x13608f['lastIndexOf'](_0x42ddc2));}_0x346ba3=new jsforce[(_0xf361('0x5f'))]({'oauth2':{'loginUrl':_0x13608f,'clientId':_0x54394f[_0xf361('0x59')],'clientSecret':_0x54394f[_0xf361('0x60')]}});return _0x346ba3[_0xf361('0x61')](_0x54394f[_0xf361('0x5a')],_0x54394f['password']['concat'](_0x54394f[_0xf361('0x5c')]));}})[_0xf361('0x27')](function(_0x2073e4){if(_0x2073e4){if(!_[_0xf361('0x62')](_0x339013[_0xf361('0x30')][_0xf361('0x63')])){_0x24b4c9=_0x339013['query']['ticketType'];}return _0x346ba3[_0xf361('0x64')](_0x24b4c9)[_0xf361('0x65')]();}})[_0xf361('0x27')](function(_0x5d0b6c){var _0x50f83b=[_0xf361('0x66'),'ActivityDate',_0xf361('0x67'),_0xf361('0x68'),_0xf361('0x69'),_0xf361('0x6a')];var _0x267d48=[_0xf361('0x6b'),_0xf361('0x6c'),'picklist',_0xf361('0x6d'),'email',_0xf361('0x6e'),'phone'];if(_0x5d0b6c){_['remove'](_0x5d0b6c[_0xf361('0x34')],function(_0x38b352){return _0x50f83b[_0xf361('0x6f')](_0x38b352[_0xf361('0x2a')])||!_0x267d48['includes'](_0x38b352['type']);});return{'count':_0x5d0b6c[_0xf361('0x34')][_0xf361('0x35')],'rows':_['map'](_0x5d0b6c[_0xf361('0x34')],function(_0x350516){return{'id':_0x350516[_0xf361('0x2a')],'name':_0x350516[_0xf361('0x70')],'custom':_0x350516[_0xf361('0x71')],'options':_0x350516[_0xf361('0x72')]['length']>0x0?_[_0xf361('0x2d')](_0x350516[_0xf361('0x72')],function(_0x234bfa){return{'name':_0x234bfa['label'],'value':_0x234bfa[_0xf361('0x73')]};}):_0x350516[_0xf361('0x3d')]==_0xf361('0x6d')?[{'name':_0xf361('0x74'),'value':_0xf361('0x75')},{'name':'False','value':'false'}]:[]};})};}})[_0xf361('0x27')](respondWithResult(_0x1b9d0b,null))['catch'](function(_0x3f65e7){var _0x57fa2e=_0x339013[_0xf361('0x30')][_0xf361('0x76')]?0x1f4:_0x3f65e7[_0xf361('0x77')]||0x1f4;logger[_0xf361('0x28')](_0xf361('0x78'),_0xf361('0x57'),_0x57fa2e,JSON[_0xf361('0x79')](_0x3f65e7));delete _0x3f65e7[_0xf361('0x2a')];if(_0x57fa2e===0x191){_0x57fa2e=0x190;}_0x1b9d0b['status'](_0x57fa2e)[_0xf361('0x2b')](_0x339013[_0xf361('0x30')][_0xf361('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x3f65e7[_0xf361('0x77')]}:_0x3f65e7);});};
\ No newline at end of file
+var _0xa8bd=['papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','then','destroy','end','error','name','send','index','map','SalesforceAccount','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','include','findAll','rows','catch','show','params','includeAll','find','create','body','update','getConfigurations','findOne','rawAttributes','options','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','getFields','remoteUri','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','clientSecret','login','username','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','Subject','string','int','boolean','email','phone','remove','includes','custom','picklistValues','value','true','False','false','getFields,\x20%s,\x20%s,\x20%s','stringify','test','statusCode','eml-format','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xa8bd,0x1da));var _0xda8b=function(_0x4122e2,_0x105191){_0x4122e2=_0x4122e2-0x0;var _0x572cc0=_0xa8bd[_0x4122e2];return _0x572cc0;};'use strict';var emlformat=require(_0xda8b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xda8b('0x1'));var rp=require(_0xda8b('0x2'));var moment=require(_0xda8b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xda8b('0x4'));var util=require(_0xda8b('0x5'));var path=require('path');var sox=require(_0xda8b('0x6'));var csv=require(_0xda8b('0x7'));var ejs=require(_0xda8b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda8b('0x9'));var squel=require(_0xda8b('0xa'));var crypto=require(_0xda8b('0xb'));var jsforce=require(_0xda8b('0xc'));var deskjs=require(_0xda8b('0xd'));var toCsv=require(_0xda8b('0x7'));var querystring=require('querystring');var Papa=require(_0xda8b('0xe'));var Redis=require(_0xda8b('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xda8b('0x10'));var as=require(_0xda8b('0x11'));var hardwareService=require(_0xda8b('0x12'));var logger=require(_0xda8b('0x13'))('api');var utils=require(_0xda8b('0x14'));var config=require(_0xda8b('0x15'));var licenseUtil=require(_0xda8b('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0xda8b('0x17'));function respondWithStatusCode(_0x2d28c9,_0x4a405a){_0x4a405a=_0x4a405a||0xcc;return function(_0x2328ef){if(_0x2328ef){return _0x2d28c9[_0xda8b('0x18')](_0x4a405a);}return _0x2d28c9[_0xda8b('0x19')](_0x4a405a)['end']();};}function respondWithResult(_0x404b63,_0x447156){_0x447156=_0x447156||0xc8;return function(_0x24ba21){if(_0x24ba21){return _0x404b63[_0xda8b('0x19')](_0x447156)[_0xda8b('0x1a')](_0x24ba21);}};}function respondWithFilteredResult(_0x49d877,_0x5d07df){return function(_0x281e7e){if(_0x281e7e){var _0x65142=typeof _0x5d07df['offset']===_0xda8b('0x1b')&&typeof _0x5d07df[_0xda8b('0x1c')]===_0xda8b('0x1b');var _0x133b67=_0x281e7e[_0xda8b('0x1d')];var _0xf991bc=_0x65142?0x0:_0x5d07df[_0xda8b('0x1e')];var _0x17e715=_0x65142?_0x281e7e[_0xda8b('0x1d')]:_0x5d07df[_0xda8b('0x1e')]+_0x5d07df[_0xda8b('0x1c')];var _0x4bf6d2;if(_0x17e715>=_0x133b67){_0x17e715=_0x133b67;_0x4bf6d2=0xc8;}else{_0x4bf6d2=0xce;}_0x49d877['status'](_0x4bf6d2);return _0x49d877['set'](_0xda8b('0x1f'),_0xf991bc+'-'+_0x17e715+'/'+_0x133b67)[_0xda8b('0x1a')](_0x281e7e);}return null;};}function patchUpdates(_0x5a44c9){return function(_0x48564c){try{jsonpatch[_0xda8b('0x20')](_0x48564c,_0x5a44c9,!![]);}catch(_0x268462){return BPromise[_0xda8b('0x21')](_0x268462);}return _0x48564c['save']();};}function saveUpdates(_0x142a3f,_0x44bee4){return function(_0x3ed445){if(_0x3ed445){return _0x3ed445['update'](_0x142a3f)[_0xda8b('0x22')](function(_0x48ea0e){return _0x48ea0e;});}return null;};}function removeEntity(_0x238b04,_0x5b11f1){return function(_0x48edd0){if(_0x48edd0){return _0x48edd0[_0xda8b('0x23')]()['then'](function(){_0x238b04[_0xda8b('0x19')](0xcc)[_0xda8b('0x24')]();});}};}function handleEntityNotFound(_0xc0bac0,_0x420618){return function(_0x5267a2){if(!_0x5267a2){_0xc0bac0[_0xda8b('0x18')](0x194);}return _0x5267a2;};}function handleError(_0x47c93f,_0x364a86){_0x364a86=_0x364a86||0x1f4;return function(_0x4bbaa6){logger[_0xda8b('0x25')](_0x4bbaa6['stack']);if(_0x4bbaa6[_0xda8b('0x26')]){delete _0x4bbaa6[_0xda8b('0x26')];}_0x47c93f[_0xda8b('0x19')](_0x364a86)[_0xda8b('0x27')](_0x4bbaa6);};}exports[_0xda8b('0x28')]=function(_0x580990,_0x2f5ae2){var _0x5cc74b={},_0x5851db={},_0x3179eb={'count':0x0,'rows':[]};var _0x2b2e66=_[_0xda8b('0x29')](db[_0xda8b('0x2a')]['rawAttributes'],function(_0x4c7e4f){return{'name':_0x4c7e4f['fieldName'],'type':_0x4c7e4f[_0xda8b('0x2b')][_0xda8b('0x2c')]};});_0x5851db[_0xda8b('0x2d')]=_[_0xda8b('0x29')](_0x2b2e66,_0xda8b('0x26'));_0x5851db['query']=_[_0xda8b('0x2e')](_0x580990[_0xda8b('0x2f')]);_0x5851db[_0xda8b('0x30')]=_[_0xda8b('0x31')](_0x5851db[_0xda8b('0x2d')],_0x5851db[_0xda8b('0x2f')]);_0x5cc74b['attributes']=_[_0xda8b('0x31')](_0x5851db['model'],qs[_0xda8b('0x32')](_0x580990['query'][_0xda8b('0x32')]));_0x5cc74b[_0xda8b('0x33')]=_0x5cc74b[_0xda8b('0x33')][_0xda8b('0x34')]?_0x5cc74b[_0xda8b('0x33')]:_0x5851db[_0xda8b('0x2d')];if(!_0x580990[_0xda8b('0x2f')][_0xda8b('0x35')]('nolimit')){_0x5cc74b[_0xda8b('0x1c')]=qs['limit'](_0x580990[_0xda8b('0x2f')]['limit']);_0x5cc74b[_0xda8b('0x1e')]=qs['offset'](_0x580990['query'][_0xda8b('0x1e')]);}_0x5cc74b[_0xda8b('0x36')]=qs[_0xda8b('0x37')](_0x580990[_0xda8b('0x2f')][_0xda8b('0x37')]);_0x5cc74b[_0xda8b('0x38')]=qs[_0xda8b('0x30')](_[_0xda8b('0x39')](_0x580990[_0xda8b('0x2f')],_0x5851db[_0xda8b('0x30')]),_0x2b2e66);if(_0x580990[_0xda8b('0x2f')][_0xda8b('0x3a')]){_0x5cc74b[_0xda8b('0x38')]=_[_0xda8b('0x3b')](_0x5cc74b[_0xda8b('0x38')],{'$or':_[_0xda8b('0x29')](_0x2b2e66,function(_0x4be9ef){if(_0x4be9ef['type']!=='VIRTUAL'){var _0xa8766a={};_0xa8766a[_0x4be9ef['name']]={'$like':'%'+_0x580990[_0xda8b('0x2f')]['filter']+'%'};return _0xa8766a;}})});}_0x5cc74b=_[_0xda8b('0x3b')]({},_0x5cc74b,_0x580990['options']);var _0x19aba3={'where':_0x5cc74b[_0xda8b('0x38')]};return db[_0xda8b('0x2a')][_0xda8b('0x1d')](_0x19aba3)[_0xda8b('0x22')](function(_0x5b0980){_0x3179eb[_0xda8b('0x1d')]=_0x5b0980;if(_0x580990['query']['includeAll']){_0x5cc74b[_0xda8b('0x3c')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xda8b('0x3d')](_0x5cc74b);})[_0xda8b('0x22')](function(_0x2921f0){_0x3179eb[_0xda8b('0x3e')]=_0x2921f0;return _0x3179eb;})['then'](respondWithFilteredResult(_0x2f5ae2,_0x5cc74b))[_0xda8b('0x3f')](handleError(_0x2f5ae2,null));};exports[_0xda8b('0x40')]=function(_0x1cf10e,_0x49b16e){var _0x1272e8={'raw':![],'where':{'id':_0x1cf10e[_0xda8b('0x41')]['id']}},_0xd6c23e={};_0xd6c23e[_0xda8b('0x2d')]=_[_0xda8b('0x2e')](db[_0xda8b('0x2a')]['rawAttributes']);_0xd6c23e[_0xda8b('0x2f')]=_[_0xda8b('0x2e')](_0x1cf10e['query']);_0xd6c23e['filters']=_[_0xda8b('0x31')](_0xd6c23e[_0xda8b('0x2d')],_0xd6c23e['query']);_0x1272e8[_0xda8b('0x33')]=_[_0xda8b('0x31')](_0xd6c23e[_0xda8b('0x2d')],qs[_0xda8b('0x32')](_0x1cf10e[_0xda8b('0x2f')][_0xda8b('0x32')]));_0x1272e8[_0xda8b('0x33')]=_0x1272e8['attributes'][_0xda8b('0x34')]?_0x1272e8[_0xda8b('0x33')]:_0xd6c23e[_0xda8b('0x2d')];if(_0x1cf10e[_0xda8b('0x2f')][_0xda8b('0x42')]){_0x1272e8['include']=[{'all':!![]}];}_0x1272e8=_[_0xda8b('0x3b')]({},_0x1272e8,_0x1cf10e['options']);return db[_0xda8b('0x2a')][_0xda8b('0x43')](_0x1272e8)['then'](handleEntityNotFound(_0x49b16e,null))[_0xda8b('0x22')](respondWithResult(_0x49b16e,null))[_0xda8b('0x3f')](handleError(_0x49b16e,null));};exports['create']=function(_0x35d759,_0x1732ae){return db['SalesforceAccount'][_0xda8b('0x44')](_0x35d759[_0xda8b('0x45')],{})[_0xda8b('0x22')](respondWithResult(_0x1732ae,0xc9))[_0xda8b('0x3f')](handleError(_0x1732ae,null));};exports[_0xda8b('0x46')]=function(_0x297a15,_0x155746){if(_0x297a15[_0xda8b('0x45')]['id']){delete _0x297a15[_0xda8b('0x45')]['id'];}return db[_0xda8b('0x2a')][_0xda8b('0x43')]({'where':{'id':_0x297a15['params']['id']}})[_0xda8b('0x22')](handleEntityNotFound(_0x155746,null))[_0xda8b('0x22')](saveUpdates(_0x297a15[_0xda8b('0x45')],null))[_0xda8b('0x22')](respondWithResult(_0x155746,null))[_0xda8b('0x3f')](handleError(_0x155746,null));};exports[_0xda8b('0x23')]=function(_0x4d84ed,_0x428212){return db['SalesforceAccount'][_0xda8b('0x43')]({'where':{'id':_0x4d84ed[_0xda8b('0x41')]['id']}})[_0xda8b('0x22')](handleEntityNotFound(_0x428212,null))['then'](removeEntity(_0x428212,null))[_0xda8b('0x3f')](handleError(_0x428212,null));};exports[_0xda8b('0x47')]=function(_0x4af679,_0x342592,_0x66458b){var _0x328664={};var _0x477d8a={};var _0x4b1b70;var _0x87e0;return db[_0xda8b('0x2a')][_0xda8b('0x48')]({'where':{'id':_0x4af679[_0xda8b('0x41')]['id']}})[_0xda8b('0x22')](handleEntityNotFound(_0x342592,null))[_0xda8b('0x22')](function(_0x56f179){if(_0x56f179){_0x4b1b70=_0x56f179;_0x477d8a[_0xda8b('0x2d')]=_[_0xda8b('0x2e')](db['SalesforceConfiguration'][_0xda8b('0x49')]);_0x477d8a[_0xda8b('0x2f')]=_['keys'](_0x4af679[_0xda8b('0x2f')]);_0x477d8a[_0xda8b('0x30')]=_[_0xda8b('0x31')](_0x477d8a[_0xda8b('0x2d')],_0x477d8a[_0xda8b('0x2f')]);_0x328664[_0xda8b('0x33')]=_[_0xda8b('0x31')](_0x477d8a[_0xda8b('0x2d')],qs[_0xda8b('0x32')](_0x4af679[_0xda8b('0x2f')][_0xda8b('0x32')]));_0x328664[_0xda8b('0x33')]=_0x328664[_0xda8b('0x33')][_0xda8b('0x34')]?_0x328664['attributes']:_0x477d8a[_0xda8b('0x2d')];_0x328664[_0xda8b('0x36')]=qs['sort'](_0x4af679[_0xda8b('0x2f')][_0xda8b('0x37')]);_0x328664[_0xda8b('0x38')]=qs['filters'](_['pick'](_0x4af679['query'],_0x477d8a[_0xda8b('0x30')]));if(_0x4af679[_0xda8b('0x2f')][_0xda8b('0x3a')]){_0x328664['where']=_[_0xda8b('0x3b')](_0x328664[_0xda8b('0x38')],{'$or':_[_0xda8b('0x29')](_0x328664[_0xda8b('0x33')],function(_0x3a9475){var _0x5769b4={};_0x5769b4[_0x3a9475]={'$like':'%'+_0x4af679['query']['filter']+'%'};return _0x5769b4;})});}_0x328664=_[_0xda8b('0x3b')]({},_0x328664,_0x4af679[_0xda8b('0x4a')]);return _0x4b1b70[_0xda8b('0x47')](_0x328664);}})['then'](function(_0x35f0cb){if(_0x35f0cb){_0x87e0=_0x35f0cb['length'];if(!_0x4af679[_0xda8b('0x2f')]['hasOwnProperty'](_0xda8b('0x4b'))){_0x328664[_0xda8b('0x1c')]=qs[_0xda8b('0x1c')](_0x4af679[_0xda8b('0x2f')][_0xda8b('0x1c')]);_0x328664[_0xda8b('0x1e')]=qs['offset'](_0x4af679['query'][_0xda8b('0x1e')]);}return _0x4b1b70[_0xda8b('0x47')](_0x328664);}})[_0xda8b('0x22')](function(_0x39653c){if(_0x39653c){return _0x39653c?{'count':_0x87e0,'rows':_0x39653c}:null;}})['then'](respondWithResult(_0x342592,null))[_0xda8b('0x3f')](handleError(_0x342592,null));};exports[_0xda8b('0x4c')]=function(_0x47b2d3,_0x5d21d1,_0x4f8317){if(_0x47b2d3[_0xda8b('0x45')]['id']){delete _0x47b2d3[_0xda8b('0x45')]['id'];}return db['SalesforceAccount'][_0xda8b('0x48')]({'where':{'id':_0x47b2d3[_0xda8b('0x41')]['id']}})['then'](handleEntityNotFound(_0x5d21d1,null))[_0xda8b('0x22')](function(_0x3d0f31){if(_0x3d0f31){_0x47b2d3[_0xda8b('0x45')][_0xda8b('0x4d')]=_0x3d0f31['id'];_0x47b2d3[_0xda8b('0x45')][_0xda8b('0x4e')]=integrations['getSubjects'](_0x47b2d3[_0xda8b('0x45')][_0xda8b('0x4f')],_0x47b2d3['body']['type']);_0x47b2d3[_0xda8b('0x45')][_0xda8b('0x50')]=integrations[_0xda8b('0x51')](_0x47b2d3['body'][_0xda8b('0x4f')],_0x47b2d3['body']['type']);return db[_0xda8b('0x52')][_0xda8b('0x44')](_0x47b2d3['body'],{'include':[{'model':db[_0xda8b('0x53')],'as':_0xda8b('0x4e')},{'model':db[_0xda8b('0x53')],'as':_0xda8b('0x50')}]});}return null;})[_0xda8b('0x22')](respondWithResult(_0x5d21d1,null))[_0xda8b('0x3f')](handleError(_0x5d21d1,null));};exports[_0xda8b('0x54')]=function(_0x374ef5,_0x59c012,_0xc89ee4){var _0x34f712;var _0x5ae44f='';var _0x3eafaf='Task';return db[_0xda8b('0x2a')]['findOne']({'where':{'id':_0x374ef5['params']['id']},'attributes':['id',_0xda8b('0x55'),'clientId','clientSecret','username',_0xda8b('0x56'),_0xda8b('0x57')]})[_0xda8b('0x22')](handleEntityNotFound(_0x59c012,null))[_0xda8b('0x22')](function(_0x1cc4de){if(_0x1cc4de){_0x5ae44f=_0x1cc4de[_0xda8b('0x55')];var _0x23e480=_0x5ae44f[_0xda8b('0x58')](-0x1);if(_0x23e480==='/'){_0x5ae44f=_0x5ae44f[_0xda8b('0x59')](0x0,_0x5ae44f[_0xda8b('0x5a')](_0x23e480));}_0x34f712=new jsforce[(_0xda8b('0x5b'))]({'oauth2':{'loginUrl':_0x5ae44f,'clientId':_0x1cc4de[_0xda8b('0x5c')],'clientSecret':_0x1cc4de[_0xda8b('0x5d')]}});return _0x34f712[_0xda8b('0x5e')](_0x1cc4de[_0xda8b('0x5f')],_0x1cc4de[_0xda8b('0x56')][_0xda8b('0x60')](_0x1cc4de[_0xda8b('0x57')]));}})['then'](function(_0x2f6a4e){if(_0x2f6a4e){if(!_[_0xda8b('0x61')](_0x374ef5[_0xda8b('0x2f')][_0xda8b('0x62')])){_0x3eafaf=_0x374ef5['query'][_0xda8b('0x62')];}return _0x34f712[_0xda8b('0x63')](_0x3eafaf)[_0xda8b('0x64')]();}})[_0xda8b('0x22')](function(_0x3b3b30){var _0x53b095=[_0xda8b('0x65'),_0xda8b('0x66'),_0xda8b('0x67'),'IsRecurrence',_0xda8b('0x68'),'Description'];var _0xfe6682=[_0xda8b('0x69'),_0xda8b('0x6a'),'picklist',_0xda8b('0x6b'),_0xda8b('0x6c'),'textarea',_0xda8b('0x6d')];if(_0x3b3b30){_[_0xda8b('0x6e')](_0x3b3b30[_0xda8b('0x32')],function(_0x51df5a){return _0x53b095[_0xda8b('0x6f')](_0x51df5a[_0xda8b('0x26')])||!_0xfe6682[_0xda8b('0x6f')](_0x51df5a[_0xda8b('0x2b')]);});return{'count':_0x3b3b30[_0xda8b('0x32')]['length'],'rows':_[_0xda8b('0x29')](_0x3b3b30['fields'],function(_0x282371){return{'id':_0x282371[_0xda8b('0x26')],'name':_0x282371['label'],'custom':_0x282371[_0xda8b('0x70')],'options':_0x282371[_0xda8b('0x71')][_0xda8b('0x34')]>0x0?_[_0xda8b('0x29')](_0x282371[_0xda8b('0x71')],function(_0x1befef){return{'name':_0x1befef['label'],'value':_0x1befef[_0xda8b('0x72')]};}):_0x282371['type']==_0xda8b('0x6b')?[{'name':'True','value':_0xda8b('0x73')},{'name':_0xda8b('0x74'),'value':_0xda8b('0x75')}]:[]};})};}})['then'](respondWithResult(_0x59c012,null))[_0xda8b('0x3f')](function(_0x542ce4){var _0x3d8449=_0x374ef5[_0xda8b('0x2f')]['test']?0x1f4:_0x542ce4['statusCode']||0x1f4;logger[_0xda8b('0x25')](_0xda8b('0x76'),_0xda8b('0x54'),_0x3d8449,JSON[_0xda8b('0x77')](_0x542ce4));delete _0x542ce4[_0xda8b('0x26')];if(_0x3d8449===0x191){_0x3d8449=0x190;}_0x59c012[_0xda8b('0x19')](_0x3d8449)['send'](_0x374ef5[_0xda8b('0x2f')][_0xda8b('0x78')]?{'message':'Wrong\x20credentials','statusCode':_0x542ce4[_0xda8b('0x79')]}:_0x542ce4);});};
\ No newline at end of file
index 2c9c973..d8a3260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb37f=['../../config/logger','bluebird','request-promise','../../config/environment','./intSalesforceAccount.attributes','define','SalesforceAccount','util'];(function(_0x122e0f,_0x3acf1a){var _0x118f13=function(_0x369fed){while(--_0x369fed){_0x122e0f['push'](_0x122e0f['shift']());}};_0x118f13(++_0x3acf1a);}(_0xb37f,0x1ef));var _0xfb37=function(_0x476bf4,_0x2a3755){_0x476bf4=_0x476bf4-0x0;var _0x788ffe=_0xb37f[_0x476bf4];return _0x788ffe;};'use strict';var _=require('lodash');var util=require(_0xfb37('0x0'));var logger=require(_0xfb37('0x1'))('api');var moment=require('moment');var BPromise=require(_0xfb37('0x2'));var rp=require(_0xfb37('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xfb37('0x4'));var attributes=require(_0xfb37('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x2570f9,_0x166332){return _0x2570f9[_0xfb37('0x6')](_0xfb37('0x7'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe6b9=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','lodash'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xe6b9,0x1cd));var _0x9e6b=function(_0x16de68,_0x33d7ff){_0x16de68=_0x16de68-0x0;var _0x1c277e=_0xe6b9[_0x16de68];return _0x1c277e;};'use strict';var _=require(_0x9e6b('0x0'));var util=require(_0x9e6b('0x1'));var logger=require(_0x9e6b('0x2'))(_0x9e6b('0x3'));var moment=require('moment');var BPromise=require(_0x9e6b('0x4'));var rp=require(_0x9e6b('0x5'));var fs=require('fs');var path=require(_0x9e6b('0x6'));var rimraf=require(_0x9e6b('0x7'));var config=require(_0x9e6b('0x8'));var attributes=require(_0x9e6b('0x9'));var integrations=require(_0x9e6b('0xa'));module[_0x9e6b('0xb')]=function(_0x41005e,_0x885139){return _0x41005e[_0x9e6b('0xc')](_0x9e6b('0xd'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3ace27..1660506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x369e=['error','code','message','result','catch','SalesforceAccount','findAll','options','attributes','limit','map','include','model','GetSalesforceAccount','stringify','ShowSalesforceAccount','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5bbc9c,_0x5eeb98){var _0xcd107e=function(_0x52c7d0){while(--_0x52c7d0){_0x5bbc9c['push'](_0x5bbc9c['shift']());}};_0xcd107e(++_0x5eeb98);}(_0x369e,0x17a));var _0xe369=function(_0x42bef8,_0x1ed865){_0x42bef8=_0x42bef8-0x0;var _0x2c436e=_0x369e[_0x42bef8];return _0x2c436e;};'use strict';var _=require(_0xe369('0x0'));var util=require(_0xe369('0x1'));var moment=require(_0xe369('0x2'));var BPromise=require(_0xe369('0x3'));var rs=require(_0xe369('0x4'));var fs=require('fs');var Redis=require(_0xe369('0x5'));var db=require(_0xe369('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe369('0x7'))('rpc');var config=require(_0xe369('0x8'));var jayson=require(_0xe369('0x9'));var client=jayson[_0xe369('0xa')][_0xe369('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31916c,_0x17acb8,_0xfcad7b){return new BPromise(function(_0x2d80be,_0x225017){return client[_0xe369('0xc')](_0x31916c,_0xfcad7b)[_0xe369('0xd')](function(_0x4fe6cf){logger[_0xe369('0xe')](_0xe369('0xf'),_0x17acb8,_0xe369('0x10'));logger[_0xe369('0x11')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x17acb8,_0xe369('0x10'),JSON['stringify'](_0x4fe6cf));if(_0x4fe6cf[_0xe369('0x12')]){if(_0x4fe6cf[_0xe369('0x12')][_0xe369('0x13')]===0x1f4){logger['error']('SalesforceAccount,\x20%s,\x20%s',_0x17acb8,_0x4fe6cf['error'][_0xe369('0x14')]);return _0x225017(_0x4fe6cf[_0xe369('0x12')][_0xe369('0x14')]);}logger[_0xe369('0x12')](_0xe369('0xf'),_0x17acb8,_0x4fe6cf['error'][_0xe369('0x14')]);return _0x2d80be(_0x4fe6cf['error'][_0xe369('0x14')]);}else{logger[_0xe369('0xe')](_0xe369('0xf'),_0x17acb8,_0xe369('0x10'));_0x2d80be(_0x4fe6cf[_0xe369('0x15')][_0xe369('0x14')]);}})[_0xe369('0x16')](function(_0x3772a9){logger['error'](_0xe369('0xf'),_0x17acb8,_0x3772a9);_0x225017(_0x3772a9);});});}exports['GetSalesforceAccount']=function(_0x17ddc8){var _0x56d7d4=this;return new Promise(function(_0x40be18,_0x1ac8a0){return db[_0xe369('0x17')][_0xe369('0x18')]({'raw':_0x17ddc8['options']?_0x17ddc8[_0xe369('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x17ddc8[_0xe369('0x19')]?_0x17ddc8['options']['where']||null:null,'attributes':_0x17ddc8[_0xe369('0x19')]?_0x17ddc8[_0xe369('0x19')][_0xe369('0x1a')]||null:null,'limit':_0x17ddc8['options']?_0x17ddc8[_0xe369('0x19')][_0xe369('0x1b')]||null:null,'include':_0x17ddc8[_0xe369('0x19')]?_0x17ddc8[_0xe369('0x19')]['include']?_[_0xe369('0x1c')](_0x17ddc8[_0xe369('0x19')][_0xe369('0x1d')],function(_0x4197f9){return{'model':db[_0x4197f9['model']],'as':_0x4197f9['as'],'attributes':_0x4197f9[_0xe369('0x1a')],'include':_0x4197f9[_0xe369('0x1d')]?_[_0xe369('0x1c')](_0x4197f9[_0xe369('0x1d')],function(_0x5bfee4){return{'model':db[_0x5bfee4['model']],'as':_0x5bfee4['as'],'attributes':_0x5bfee4['attributes'],'include':_0x5bfee4[_0xe369('0x1d')]?_[_0xe369('0x1c')](_0x5bfee4[_0xe369('0x1d')],function(_0x5024ea){return{'model':db[_0x5024ea[_0xe369('0x1e')]],'as':_0x5024ea['as'],'attributes':_0x5024ea['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x194525){logger[_0xe369('0xe')](_0xe369('0x1f'),_0x17ddc8);logger[_0xe369('0x11')]('GetSalesforceAccount',_0x17ddc8,JSON[_0xe369('0x20')](_0x194525));_0x40be18(_0x194525);})[_0xe369('0x16')](function(_0x2ab862){logger[_0xe369('0x12')](_0xe369('0x1f'),_0x2ab862[_0xe369('0x14')],_0x17ddc8);_0x1ac8a0(_0x56d7d4['error'](0x1f4,_0x2ab862[_0xe369('0x14')]));});});};exports[_0xe369('0x21')]=function(_0x52ae42){var _0x5c5e91=this;return new Promise(function(_0x366f14,_0x429dc7){return db[_0xe369('0x17')][_0xe369('0x22')]({'raw':_0x52ae42[_0xe369('0x19')]?_0x52ae42[_0xe369('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x52ae42[_0xe369('0x19')]?_0x52ae42[_0xe369('0x19')][_0xe369('0x23')]||null:null,'attributes':_0x52ae42['options']?_0x52ae42[_0xe369('0x19')][_0xe369('0x1a')]||null:null,'include':_0x52ae42[_0xe369('0x19')]?_0x52ae42[_0xe369('0x19')]['include']?_[_0xe369('0x1c')](_0x52ae42[_0xe369('0x19')]['include'],function(_0x463ce4){return{'model':db[_0x463ce4[_0xe369('0x1e')]],'as':_0x463ce4['as'],'attributes':_0x463ce4[_0xe369('0x1a')],'include':_0x463ce4[_0xe369('0x1d')]?_['map'](_0x463ce4[_0xe369('0x1d')],function(_0x1eb048){return{'model':db[_0x1eb048[_0xe369('0x1e')]],'as':_0x1eb048['as'],'attributes':_0x1eb048[_0xe369('0x1a')],'include':_0x1eb048['include']?_[_0xe369('0x1c')](_0x1eb048[_0xe369('0x1d')],function(_0x422a19){return{'model':db[_0x422a19[_0xe369('0x1e')]],'as':_0x422a19['as'],'attributes':_0x422a19[_0xe369('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe369('0xd')](function(_0x5dbf49){logger[_0xe369('0xe')](_0xe369('0x21'),_0x52ae42);logger[_0xe369('0x11')](_0xe369('0x21'),_0x52ae42,JSON[_0xe369('0x20')](_0x5dbf49));_0x366f14(_0x5dbf49);})[_0xe369('0x16')](function(_0x42a4c6){logger[_0xe369('0x12')](_0xe369('0x21'),_0x42a4c6[_0xe369('0x14')],_0x52ae42);_0x429dc7(_0x5c5e91[_0xe369('0x12')](0x1f4,_0x42a4c6['message']));});});};
\ No newline at end of file
+var _0xfe5a=['stringify','ShowSalesforceAccount','SalesforceAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','GetSalesforceAccount','options','raw','where','attributes','map','model','include'];(function(_0x3015f9,_0x6eeb0d){var _0x3390b6=function(_0x4cff57){while(--_0x4cff57){_0x3015f9['push'](_0x3015f9['shift']());}};_0x3390b6(++_0x6eeb0d);}(_0xfe5a,0x67));var _0xafe5=function(_0x2ec8fd,_0x2dba94){_0x2ec8fd=_0x2ec8fd-0x0;var _0x3adb74=_0xfe5a[_0x2ec8fd];return _0x3adb74;};'use strict';var _=require(_0xafe5('0x0'));var util=require(_0xafe5('0x1'));var moment=require(_0xafe5('0x2'));var BPromise=require(_0xafe5('0x3'));var rs=require(_0xafe5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xafe5('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xafe5('0x6'));var config=require(_0xafe5('0x7'));var jayson=require(_0xafe5('0x8'));var client=jayson[_0xafe5('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x193aea,_0x3c2e9d,_0xfcb67){return new BPromise(function(_0x45c5d2,_0x301544){return client[_0xafe5('0xa')](_0x193aea,_0xfcb67)[_0xafe5('0xb')](function(_0x2cc9af){logger['info'](_0xafe5('0xc'),_0x3c2e9d,_0xafe5('0xd'));logger[_0xafe5('0xe')](_0xafe5('0xf'),_0x3c2e9d,'request\x20sent',JSON['stringify'](_0x2cc9af));if(_0x2cc9af['error']){if(_0x2cc9af[_0xafe5('0x10')][_0xafe5('0x11')]===0x1f4){logger[_0xafe5('0x10')](_0xafe5('0xc'),_0x3c2e9d,_0x2cc9af[_0xafe5('0x10')][_0xafe5('0x12')]);return _0x301544(_0x2cc9af[_0xafe5('0x10')][_0xafe5('0x12')]);}logger[_0xafe5('0x10')](_0xafe5('0xc'),_0x3c2e9d,_0x2cc9af[_0xafe5('0x10')][_0xafe5('0x12')]);return _0x45c5d2(_0x2cc9af['error'][_0xafe5('0x12')]);}else{logger[_0xafe5('0x13')](_0xafe5('0xc'),_0x3c2e9d,_0xafe5('0xd'));_0x45c5d2(_0x2cc9af['result'][_0xafe5('0x12')]);}})[_0xafe5('0x14')](function(_0x137927){logger[_0xafe5('0x10')](_0xafe5('0xc'),_0x3c2e9d,_0x137927);_0x301544(_0x137927);});});}exports[_0xafe5('0x15')]=function(_0x19a0c2){var _0x116b83=this;return new Promise(function(_0x39a115,_0x5041ec){return db['SalesforceAccount']['findAll']({'raw':_0x19a0c2[_0xafe5('0x16')]?_0x19a0c2['options'][_0xafe5('0x17')]===undefined?!![]:![]:!![],'where':_0x19a0c2[_0xafe5('0x16')]?_0x19a0c2[_0xafe5('0x16')][_0xafe5('0x18')]||null:null,'attributes':_0x19a0c2[_0xafe5('0x16')]?_0x19a0c2[_0xafe5('0x16')][_0xafe5('0x19')]||null:null,'limit':_0x19a0c2[_0xafe5('0x16')]?_0x19a0c2[_0xafe5('0x16')]['limit']||null:null,'include':_0x19a0c2[_0xafe5('0x16')]?_0x19a0c2[_0xafe5('0x16')]['include']?_[_0xafe5('0x1a')](_0x19a0c2[_0xafe5('0x16')]['include'],function(_0x26d670){return{'model':db[_0x26d670[_0xafe5('0x1b')]],'as':_0x26d670['as'],'attributes':_0x26d670[_0xafe5('0x19')],'include':_0x26d670[_0xafe5('0x1c')]?_[_0xafe5('0x1a')](_0x26d670[_0xafe5('0x1c')],function(_0x54d31b){return{'model':db[_0x54d31b['model']],'as':_0x54d31b['as'],'attributes':_0x54d31b[_0xafe5('0x19')],'include':_0x54d31b['include']?_[_0xafe5('0x1a')](_0x54d31b[_0xafe5('0x1c')],function(_0x4a5ae0){return{'model':db[_0x4a5ae0[_0xafe5('0x1b')]],'as':_0x4a5ae0['as'],'attributes':_0x4a5ae0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x321bd8){logger[_0xafe5('0x13')](_0xafe5('0x15'),_0x19a0c2);logger[_0xafe5('0xe')](_0xafe5('0x15'),_0x19a0c2,JSON[_0xafe5('0x1d')](_0x321bd8));_0x39a115(_0x321bd8);})[_0xafe5('0x14')](function(_0x38e0d6){logger[_0xafe5('0x10')]('GetSalesforceAccount',_0x38e0d6[_0xafe5('0x12')],_0x19a0c2);_0x5041ec(_0x116b83[_0xafe5('0x10')](0x1f4,_0x38e0d6['message']));});});};exports[_0xafe5('0x1e')]=function(_0x18c5d5){var _0x269bf1=this;return new Promise(function(_0x108c97,_0x198b33){return db[_0xafe5('0x1f')][_0xafe5('0x20')]({'raw':_0x18c5d5[_0xafe5('0x16')]?_0x18c5d5['options'][_0xafe5('0x17')]===undefined?!![]:![]:!![],'where':_0x18c5d5[_0xafe5('0x16')]?_0x18c5d5[_0xafe5('0x16')][_0xafe5('0x18')]||null:null,'attributes':_0x18c5d5['options']?_0x18c5d5['options']['attributes']||null:null,'include':_0x18c5d5[_0xafe5('0x16')]?_0x18c5d5['options'][_0xafe5('0x1c')]?_[_0xafe5('0x1a')](_0x18c5d5[_0xafe5('0x16')][_0xafe5('0x1c')],function(_0x2fd0a8){return{'model':db[_0x2fd0a8[_0xafe5('0x1b')]],'as':_0x2fd0a8['as'],'attributes':_0x2fd0a8['attributes'],'include':_0x2fd0a8['include']?_['map'](_0x2fd0a8[_0xafe5('0x1c')],function(_0x85d026){return{'model':db[_0x85d026[_0xafe5('0x1b')]],'as':_0x85d026['as'],'attributes':_0x85d026[_0xafe5('0x19')],'include':_0x85d026['include']?_[_0xafe5('0x1a')](_0x85d026[_0xafe5('0x1c')],function(_0x5a972f){return{'model':db[_0x5a972f[_0xafe5('0x1b')]],'as':_0x5a972f['as'],'attributes':_0x5a972f[_0xafe5('0x19')]};}):[]};}):[]};}):[]:[]})[_0xafe5('0xb')](function(_0x2aef87){logger['info'](_0xafe5('0x1e'),_0x18c5d5);logger['debug'](_0xafe5('0x1e'),_0x18c5d5,JSON[_0xafe5('0x1d')](_0x2aef87));_0x108c97(_0x2aef87);})[_0xafe5('0x14')](function(_0x421f90){logger[_0xafe5('0x10')]('ShowSalesforceAccount',_0x421f90[_0xafe5('0x12')],_0x18c5d5);_0x198b33(_0x269bf1[_0xafe5('0x10')](0x1f4,_0x421f90[_0xafe5('0x12')]));});});};
\ No newline at end of file
index c6491df..6938dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x56c648,_0x21cd1b){var _0x3c021e=function(_0x51c9c0){while(--_0x51c9c0){_0x56c648['push'](_0x56c648['shift']());}};_0x3c021e(++_0x21cd1b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x5f66[_0x126558];return _0x1f6d14;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xdb28,0x106));var _0x8db2=function(_0x5c3bd0,_0xb05b6f){_0x5c3bd0=_0x5c3bd0-0x0;var _0x459ec1=_0xdb28[_0x5c3bd0];return _0x459ec1;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
index d600b10..5da0343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d6e=['exports','STRING','ENUM','Case','Task','contact_lead','contact','lead','account_contact_lead','account','nothing','sequelize'];(function(_0x5bbbca,_0x2ee1d9){var _0x233b7c=function(_0x1dcdf5){while(--_0x1dcdf5){_0x5bbbca['push'](_0x5bbbca['shift']());}};_0x233b7c(++_0x2ee1d9);}(_0x4d6e,0x77));var _0xe4d6=function(_0x42bfb7,_0x25a3ec){_0x42bfb7=_0x42bfb7-0x0;var _0x5c497d=_0x4d6e[_0x42bfb7];return _0x5c497d;};'use strict';var Sequelize=require(_0xe4d6('0x0'));module[_0xe4d6('0x1')]={'name':{'type':Sequelize[_0xe4d6('0x2')]},'description':{'type':Sequelize[_0xe4d6('0x2')]},'ticketType':{'type':Sequelize[_0xe4d6('0x3')]('Task',_0xe4d6('0x4')),'defaultValue':_0xe4d6('0x5')},'moduleSearch':{'type':Sequelize[_0xe4d6('0x3')](_0xe4d6('0x6'),_0xe4d6('0x7'),_0xe4d6('0x8'),_0xe4d6('0x9'),_0xe4d6('0xa')),'defaultValue':_0xe4d6('0x6')},'moduleCreate':{'type':Sequelize[_0xe4d6('0x3')](_0xe4d6('0xb'),_0xe4d6('0x7'),'lead',_0xe4d6('0xa')),'defaultValue':_0xe4d6('0x8')},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0xe4d6('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xe4d6('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xe4d6('0x2')]}};
\ No newline at end of file
+var _0xa6c4=['lead','sequelize','STRING','ENUM','Task','Case','contact_lead','contact','account_contact_lead','nothing','account'];(function(_0x419d87,_0x5035a5){var _0x2f294e=function(_0x2765a6){while(--_0x2765a6){_0x419d87['push'](_0x419d87['shift']());}};_0x2f294e(++_0x5035a5);}(_0xa6c4,0x1da));var _0x4a6c=function(_0x2fdf82,_0x322e7c){_0x2fdf82=_0x2fdf82-0x0;var _0x2382f5=_0xa6c4[_0x2fdf82];return _0x2382f5;};'use strict';var Sequelize=require(_0x4a6c('0x0'));module['exports']={'name':{'type':Sequelize[_0x4a6c('0x1')]},'description':{'type':Sequelize[_0x4a6c('0x1')]},'ticketType':{'type':Sequelize[_0x4a6c('0x2')](_0x4a6c('0x3'),_0x4a6c('0x4')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM'](_0x4a6c('0x5'),_0x4a6c('0x6'),'lead',_0x4a6c('0x7'),'account'),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize['ENUM'](_0x4a6c('0x8'),_0x4a6c('0x6'),'lead',_0x4a6c('0x9')),'defaultValue':_0x4a6c('0xa')},'leadId':{'type':Sequelize[_0x4a6c('0x1')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x4a6c('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5e40906..92ead5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa306=['getDescriptions','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','status','offset','undefined','limit','count','set','json','apply','reject','then','destroy','end','error','name','send','index','map','SalesforceConfiguration','fieldName','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','merge','type','options','includeAll','include','catch','show','params','keys','rawAttributes','length','find','create','update','body','getFields','findOne','filter','hasOwnProperty','getSubjects','SalesforceField'];(function(_0x2f59dc,_0x648e10){var _0x28179b=function(_0x3c3aec){while(--_0x3c3aec){_0x2f59dc['push'](_0x2f59dc['shift']());}};_0x28179b(++_0x648e10);}(_0xa306,0x1cf));var _0x6a30=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xa306[_0x5a3cf0];return _0x5a64ee;};'use strict';var emlformat=require(_0x6a30('0x0'));var rimraf=require(_0x6a30('0x1'));var zipdir=require(_0x6a30('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a30('0x3'));var moment=require('moment');var BPromise=require(_0x6a30('0x4'));var Mustache=require(_0x6a30('0x5'));var util=require(_0x6a30('0x6'));var path=require(_0x6a30('0x7'));var sox=require(_0x6a30('0x8'));var csv=require(_0x6a30('0x9'));var ejs=require(_0x6a30('0xa'));var fs=require('fs');var fs_extra=require(_0x6a30('0xb'));var _=require(_0x6a30('0xc'));var squel=require(_0x6a30('0xd'));var crypto=require('crypto');var jsforce=require(_0x6a30('0xe'));var deskjs=require(_0x6a30('0xf'));var toCsv=require(_0x6a30('0x9'));var querystring=require(_0x6a30('0x10'));var Papa=require(_0x6a30('0x11'));var Redis=require(_0x6a30('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x6a30('0x13'));var as=require(_0x6a30('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6a30('0x15'));var utils=require(_0x6a30('0x16'));var config=require(_0x6a30('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2d272f,_0x4b1991){_0x4b1991=_0x4b1991||0xcc;return function(_0x20d17a){if(_0x20d17a){return _0x2d272f['sendStatus'](_0x4b1991);}return _0x2d272f[_0x6a30('0x18')](_0x4b1991)['end']();};}function respondWithResult(_0x24814c,_0x60b723){_0x60b723=_0x60b723||0xc8;return function(_0x3013d2){if(_0x3013d2){return _0x24814c[_0x6a30('0x18')](_0x60b723)['json'](_0x3013d2);}};}function respondWithFilteredResult(_0x5a3c3c,_0x128e71){return function(_0x1463ec){if(_0x1463ec){var _0x499e4f=typeof _0x128e71[_0x6a30('0x19')]===_0x6a30('0x1a')&&typeof _0x128e71[_0x6a30('0x1b')]==='undefined';var _0x135567=_0x1463ec[_0x6a30('0x1c')];var _0x43eef5=_0x499e4f?0x0:_0x128e71[_0x6a30('0x19')];var _0xec1192=_0x499e4f?_0x1463ec['count']:_0x128e71[_0x6a30('0x19')]+_0x128e71[_0x6a30('0x1b')];var _0x124cb7;if(_0xec1192>=_0x135567){_0xec1192=_0x135567;_0x124cb7=0xc8;}else{_0x124cb7=0xce;}_0x5a3c3c['status'](_0x124cb7);return _0x5a3c3c[_0x6a30('0x1d')]('Content-Range',_0x43eef5+'-'+_0xec1192+'/'+_0x135567)[_0x6a30('0x1e')](_0x1463ec);}return null;};}function patchUpdates(_0x5597f6){return function(_0x45d93e){try{jsonpatch[_0x6a30('0x1f')](_0x45d93e,_0x5597f6,!![]);}catch(_0x4b424f){return BPromise[_0x6a30('0x20')](_0x4b424f);}return _0x45d93e['save']();};}function saveUpdates(_0xd7ac,_0x598cd0){return function(_0x45a3d3){if(_0x45a3d3){return _0x45a3d3['update'](_0xd7ac)[_0x6a30('0x21')](function(_0x106cf5){return _0x106cf5;});}return null;};}function removeEntity(_0xcfe76f,_0x3be9c7){return function(_0x495328){if(_0x495328){return _0x495328[_0x6a30('0x22')]()[_0x6a30('0x21')](function(){_0xcfe76f[_0x6a30('0x18')](0xcc)[_0x6a30('0x23')]();});}};}function handleEntityNotFound(_0x3d6765,_0x9961c0){return function(_0x526a3a){if(!_0x526a3a){_0x3d6765['sendStatus'](0x194);}return _0x526a3a;};}function handleError(_0xbccbc1,_0x1fc5ce){_0x1fc5ce=_0x1fc5ce||0x1f4;return function(_0x266d71){logger[_0x6a30('0x24')](_0x266d71['stack']);if(_0x266d71[_0x6a30('0x25')]){delete _0x266d71[_0x6a30('0x25')];}_0xbccbc1[_0x6a30('0x18')](_0x1fc5ce)[_0x6a30('0x26')](_0x266d71);};}exports[_0x6a30('0x27')]=function(_0x17d225,_0x528884){var _0x524b02={},_0x48fded={},_0x2ab81a={'count':0x0,'rows':[]};var _0x5d443b=_[_0x6a30('0x28')](db[_0x6a30('0x29')]['rawAttributes'],function(_0x3fd0e4){return{'name':_0x3fd0e4[_0x6a30('0x2a')],'type':_0x3fd0e4['type'][_0x6a30('0x2b')]};});_0x48fded[_0x6a30('0x2c')]=_[_0x6a30('0x28')](_0x5d443b,'name');_0x48fded[_0x6a30('0x2d')]=_['keys'](_0x17d225[_0x6a30('0x2d')]);_0x48fded[_0x6a30('0x2e')]=_[_0x6a30('0x2f')](_0x48fded[_0x6a30('0x2c')],_0x48fded[_0x6a30('0x2d')]);_0x524b02[_0x6a30('0x30')]=_[_0x6a30('0x2f')](_0x48fded[_0x6a30('0x2c')],qs['fields'](_0x17d225['query'][_0x6a30('0x31')]));_0x524b02['attributes']=_0x524b02[_0x6a30('0x30')]['length']?_0x524b02[_0x6a30('0x30')]:_0x48fded[_0x6a30('0x2c')];if(!_0x17d225[_0x6a30('0x2d')]['hasOwnProperty'](_0x6a30('0x32'))){_0x524b02[_0x6a30('0x1b')]=qs[_0x6a30('0x1b')](_0x17d225[_0x6a30('0x2d')][_0x6a30('0x1b')]);_0x524b02[_0x6a30('0x19')]=qs[_0x6a30('0x19')](_0x17d225[_0x6a30('0x2d')][_0x6a30('0x19')]);}_0x524b02[_0x6a30('0x33')]=qs[_0x6a30('0x34')](_0x17d225[_0x6a30('0x2d')][_0x6a30('0x34')]);_0x524b02[_0x6a30('0x35')]=qs['filters'](_[_0x6a30('0x36')](_0x17d225[_0x6a30('0x2d')],_0x48fded[_0x6a30('0x2e')]),_0x5d443b);if(_0x17d225[_0x6a30('0x2d')]['filter']){_0x524b02[_0x6a30('0x35')]=_[_0x6a30('0x37')](_0x524b02[_0x6a30('0x35')],{'$or':_[_0x6a30('0x28')](_0x5d443b,function(_0x240ce4){if(_0x240ce4[_0x6a30('0x38')]!=='VIRTUAL'){var _0x186b5c={};_0x186b5c[_0x240ce4[_0x6a30('0x25')]]={'$like':'%'+_0x17d225['query']['filter']+'%'};return _0x186b5c;}})});}_0x524b02=_[_0x6a30('0x37')]({},_0x524b02,_0x17d225[_0x6a30('0x39')]);var _0x13ae97={'where':_0x524b02['where']};return db[_0x6a30('0x29')]['count'](_0x13ae97)[_0x6a30('0x21')](function(_0x16d3fe){_0x2ab81a[_0x6a30('0x1c')]=_0x16d3fe;if(_0x17d225[_0x6a30('0x2d')][_0x6a30('0x3a')]){_0x524b02[_0x6a30('0x3b')]=[{'all':!![]}];}return db[_0x6a30('0x29')]['findAll'](_0x524b02);})[_0x6a30('0x21')](function(_0x9fcca9){_0x2ab81a['rows']=_0x9fcca9;return _0x2ab81a;})[_0x6a30('0x21')](respondWithFilteredResult(_0x528884,_0x524b02))[_0x6a30('0x3c')](handleError(_0x528884,null));};exports[_0x6a30('0x3d')]=function(_0x5f5262,_0x54c8df){var _0x337293={'raw':![],'where':{'id':_0x5f5262[_0x6a30('0x3e')]['id']}},_0x13a874={};_0x13a874[_0x6a30('0x2c')]=_[_0x6a30('0x3f')](db[_0x6a30('0x29')][_0x6a30('0x40')]);_0x13a874[_0x6a30('0x2d')]=_[_0x6a30('0x3f')](_0x5f5262[_0x6a30('0x2d')]);_0x13a874[_0x6a30('0x2e')]=_[_0x6a30('0x2f')](_0x13a874['model'],_0x13a874[_0x6a30('0x2d')]);_0x337293['attributes']=_[_0x6a30('0x2f')](_0x13a874[_0x6a30('0x2c')],qs[_0x6a30('0x31')](_0x5f5262['query']['fields']));_0x337293[_0x6a30('0x30')]=_0x337293['attributes'][_0x6a30('0x41')]?_0x337293['attributes']:_0x13a874['model'];if(_0x5f5262[_0x6a30('0x2d')][_0x6a30('0x3a')]){_0x337293[_0x6a30('0x3b')]=[{'all':!![]}];}_0x337293=_[_0x6a30('0x37')]({},_0x337293,_0x5f5262['options']);return db[_0x6a30('0x29')][_0x6a30('0x42')](_0x337293)['then'](handleEntityNotFound(_0x54c8df,null))[_0x6a30('0x21')](respondWithResult(_0x54c8df,null))['catch'](handleError(_0x54c8df,null));};exports['create']=function(_0x244abb,_0x22decd){return db[_0x6a30('0x29')][_0x6a30('0x43')](_0x244abb['body'],{})['then'](respondWithResult(_0x22decd,0xc9))['catch'](handleError(_0x22decd,null));};exports[_0x6a30('0x44')]=function(_0x4786cb,_0x4ff5d4){if(_0x4786cb['body']['id']){delete _0x4786cb[_0x6a30('0x45')]['id'];}return db['SalesforceConfiguration'][_0x6a30('0x42')]({'where':{'id':_0x4786cb[_0x6a30('0x3e')]['id']}})[_0x6a30('0x21')](handleEntityNotFound(_0x4ff5d4,null))[_0x6a30('0x21')](saveUpdates(_0x4786cb[_0x6a30('0x45')],null))[_0x6a30('0x21')](respondWithResult(_0x4ff5d4,null))[_0x6a30('0x3c')](handleError(_0x4ff5d4,null));};exports[_0x6a30('0x22')]=function(_0x4e3bdd,_0x140ea7){return db[_0x6a30('0x29')][_0x6a30('0x42')]({'where':{'id':_0x4e3bdd[_0x6a30('0x3e')]['id']}})[_0x6a30('0x21')](handleEntityNotFound(_0x140ea7,null))[_0x6a30('0x21')](removeEntity(_0x140ea7,null))[_0x6a30('0x3c')](handleError(_0x140ea7,null));};exports[_0x6a30('0x46')]=function(_0x52a934,_0x14cf19,_0x3531e7){var _0x934952={};var _0x12731f={};var _0x46386f;var _0x394e52;return db[_0x6a30('0x29')][_0x6a30('0x47')]({'where':{'id':_0x52a934['params']['id']}})[_0x6a30('0x21')](handleEntityNotFound(_0x14cf19,null))[_0x6a30('0x21')](function(_0x20efe6){if(_0x20efe6){_0x46386f=_0x20efe6;_0x12731f[_0x6a30('0x2c')]=_[_0x6a30('0x3f')](db['SalesforceField']['rawAttributes']);_0x12731f['query']=_[_0x6a30('0x3f')](_0x52a934['query']);_0x12731f[_0x6a30('0x2e')]=_['intersection'](_0x12731f[_0x6a30('0x2c')],_0x12731f[_0x6a30('0x2d')]);_0x934952[_0x6a30('0x30')]=_[_0x6a30('0x2f')](_0x12731f[_0x6a30('0x2c')],qs['fields'](_0x52a934[_0x6a30('0x2d')][_0x6a30('0x31')]));_0x934952['attributes']=_0x934952[_0x6a30('0x30')]['length']?_0x934952[_0x6a30('0x30')]:_0x12731f['model'];_0x934952[_0x6a30('0x33')]=qs[_0x6a30('0x34')](_0x52a934['query']['sort']);_0x934952[_0x6a30('0x35')]=qs[_0x6a30('0x2e')](_['pick'](_0x52a934['query'],_0x12731f[_0x6a30('0x2e')]));if(_0x52a934[_0x6a30('0x2d')][_0x6a30('0x48')]){_0x934952[_0x6a30('0x35')]=_[_0x6a30('0x37')](_0x934952[_0x6a30('0x35')],{'$or':_[_0x6a30('0x28')](_0x934952[_0x6a30('0x30')],function(_0x3f60dc){var _0x1bd2ee={};_0x1bd2ee[_0x3f60dc]={'$like':'%'+_0x52a934[_0x6a30('0x2d')]['filter']+'%'};return _0x1bd2ee;})});}_0x934952=_[_0x6a30('0x37')]({},_0x934952,_0x52a934[_0x6a30('0x39')]);return _0x46386f['getFields'](_0x934952);}})['then'](function(_0x2172cf){if(_0x2172cf){_0x394e52=_0x2172cf[_0x6a30('0x41')];if(!_0x52a934[_0x6a30('0x2d')][_0x6a30('0x49')]('nolimit')){_0x934952[_0x6a30('0x1b')]=qs[_0x6a30('0x1b')](_0x52a934['query'][_0x6a30('0x1b')]);_0x934952['offset']=qs['offset'](_0x52a934[_0x6a30('0x2d')][_0x6a30('0x19')]);}return _0x46386f[_0x6a30('0x46')](_0x934952);}})[_0x6a30('0x21')](function(_0x5d3187){if(_0x5d3187){return _0x5d3187?{'count':_0x394e52,'rows':_0x5d3187}:null;}})[_0x6a30('0x21')](respondWithResult(_0x14cf19,null))[_0x6a30('0x3c')](handleError(_0x14cf19,null));};exports[_0x6a30('0x4a')]=function(_0x54063b,_0x6a002f,_0x40c210){var _0x4e0e6d={};var _0x488a0a={};var _0x4ee974;var _0x2a272b;return db[_0x6a30('0x29')][_0x6a30('0x47')]({'where':{'id':_0x54063b[_0x6a30('0x3e')]['id']}})[_0x6a30('0x21')](handleEntityNotFound(_0x6a002f,null))[_0x6a30('0x21')](function(_0x25bbb4){if(_0x25bbb4){_0x4ee974=_0x25bbb4;_0x488a0a[_0x6a30('0x2c')]=_[_0x6a30('0x3f')](db[_0x6a30('0x4b')][_0x6a30('0x40')]);_0x488a0a['query']=_[_0x6a30('0x3f')](_0x54063b[_0x6a30('0x2d')]);_0x488a0a[_0x6a30('0x2e')]=_[_0x6a30('0x2f')](_0x488a0a[_0x6a30('0x2c')],_0x488a0a[_0x6a30('0x2d')]);_0x4e0e6d[_0x6a30('0x30')]=_['intersection'](_0x488a0a[_0x6a30('0x2c')],qs[_0x6a30('0x31')](_0x54063b['query'][_0x6a30('0x31')]));_0x4e0e6d[_0x6a30('0x30')]=_0x4e0e6d[_0x6a30('0x30')][_0x6a30('0x41')]?_0x4e0e6d[_0x6a30('0x30')]:_0x488a0a[_0x6a30('0x2c')];_0x4e0e6d[_0x6a30('0x33')]=qs[_0x6a30('0x34')](_0x54063b[_0x6a30('0x2d')][_0x6a30('0x34')]);_0x4e0e6d['where']=qs[_0x6a30('0x2e')](_[_0x6a30('0x36')](_0x54063b['query'],_0x488a0a[_0x6a30('0x2e')]));if(_0x54063b[_0x6a30('0x2d')][_0x6a30('0x48')]){_0x4e0e6d[_0x6a30('0x35')]=_['merge'](_0x4e0e6d['where'],{'$or':_[_0x6a30('0x28')](_0x4e0e6d['attributes'],function(_0x38b075){var _0xa2f80={};_0xa2f80[_0x38b075]={'$like':'%'+_0x54063b[_0x6a30('0x2d')][_0x6a30('0x48')]+'%'};return _0xa2f80;})});}_0x4e0e6d=_[_0x6a30('0x37')]({},_0x4e0e6d,_0x54063b['options']);return _0x4ee974['getSubjects'](_0x4e0e6d);}})[_0x6a30('0x21')](function(_0x3a3995){if(_0x3a3995){_0x2a272b=_0x3a3995[_0x6a30('0x41')];if(!_0x54063b['query'][_0x6a30('0x49')]('nolimit')){_0x4e0e6d[_0x6a30('0x1b')]=qs[_0x6a30('0x1b')](_0x54063b[_0x6a30('0x2d')][_0x6a30('0x1b')]);_0x4e0e6d['offset']=qs[_0x6a30('0x19')](_0x54063b['query'][_0x6a30('0x19')]);}return _0x4ee974[_0x6a30('0x4a')](_0x4e0e6d);}})['then'](function(_0x5d1e32){if(_0x5d1e32){return _0x5d1e32?{'count':_0x2a272b,'rows':_0x5d1e32}:null;}})[_0x6a30('0x21')](respondWithResult(_0x6a002f,null))[_0x6a30('0x3c')](handleError(_0x6a002f,null));};exports[_0x6a30('0x4c')]=function(_0xd32743,_0x50e3f7,_0x42c4cb){var _0x5c890d={};var _0x27e23c={};var _0x147d4d;var _0x37fce3;return db[_0x6a30('0x29')][_0x6a30('0x47')]({'where':{'id':_0xd32743[_0x6a30('0x3e')]['id']}})['then'](handleEntityNotFound(_0x50e3f7,null))[_0x6a30('0x21')](function(_0x168917){if(_0x168917){_0x147d4d=_0x168917;_0x27e23c[_0x6a30('0x2c')]=_[_0x6a30('0x3f')](db[_0x6a30('0x4b')][_0x6a30('0x40')]);_0x27e23c[_0x6a30('0x2d')]=_[_0x6a30('0x3f')](_0xd32743[_0x6a30('0x2d')]);_0x27e23c[_0x6a30('0x2e')]=_['intersection'](_0x27e23c[_0x6a30('0x2c')],_0x27e23c[_0x6a30('0x2d')]);_0x5c890d['attributes']=_[_0x6a30('0x2f')](_0x27e23c[_0x6a30('0x2c')],qs[_0x6a30('0x31')](_0xd32743[_0x6a30('0x2d')][_0x6a30('0x31')]));_0x5c890d[_0x6a30('0x30')]=_0x5c890d['attributes'][_0x6a30('0x41')]?_0x5c890d[_0x6a30('0x30')]:_0x27e23c[_0x6a30('0x2c')];_0x5c890d[_0x6a30('0x33')]=qs[_0x6a30('0x34')](_0xd32743[_0x6a30('0x2d')][_0x6a30('0x34')]);_0x5c890d['where']=qs[_0x6a30('0x2e')](_['pick'](_0xd32743[_0x6a30('0x2d')],_0x27e23c[_0x6a30('0x2e')]));if(_0xd32743['query'][_0x6a30('0x48')]){_0x5c890d[_0x6a30('0x35')]=_[_0x6a30('0x37')](_0x5c890d[_0x6a30('0x35')],{'$or':_[_0x6a30('0x28')](_0x5c890d[_0x6a30('0x30')],function(_0x22eb03){var _0x54386e={};_0x54386e[_0x22eb03]={'$like':'%'+_0xd32743[_0x6a30('0x2d')]['filter']+'%'};return _0x54386e;})});}_0x5c890d=_['merge']({},_0x5c890d,_0xd32743['options']);return _0x147d4d[_0x6a30('0x4c')](_0x5c890d);}})[_0x6a30('0x21')](function(_0x4f4175){if(_0x4f4175){_0x37fce3=_0x4f4175[_0x6a30('0x41')];if(!_0xd32743[_0x6a30('0x2d')][_0x6a30('0x49')](_0x6a30('0x32'))){_0x5c890d['limit']=qs[_0x6a30('0x1b')](_0xd32743[_0x6a30('0x2d')][_0x6a30('0x1b')]);_0x5c890d[_0x6a30('0x19')]=qs[_0x6a30('0x19')](_0xd32743[_0x6a30('0x2d')]['offset']);}return _0x147d4d[_0x6a30('0x4c')](_0x5c890d);}})[_0x6a30('0x21')](function(_0x537008){if(_0x537008){return _0x537008?{'count':_0x37fce3,'rows':_0x537008}:null;}})[_0x6a30('0x21')](respondWithResult(_0x50e3f7,null))[_0x6a30('0x3c')](handleError(_0x50e3f7,null));};
\ No newline at end of file
+var _0x66e6=['merge','options','includeAll','findAll','rows','show','params','rawAttributes','intersection','length','find','create','catch','update','body','findOne','SalesforceField','getFields','hasOwnProperty','getSubjects','order','getDescriptions','pick','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','apply','save','then','destroy','name','index','map','SalesforceConfiguration','query','keys','model','fields','attributes','nolimit','limit','sort','where','filters','filter'];(function(_0x52f1e6,_0xf70489){var _0x21f104=function(_0xb89f9e){while(--_0xb89f9e){_0x52f1e6['push'](_0x52f1e6['shift']());}};_0x21f104(++_0xf70489);}(_0x66e6,0xb1));var _0x666e=function(_0xcc58a5,_0x241713){_0xcc58a5=_0xcc58a5-0x0;var _0x151fe5=_0x66e6[_0xcc58a5];return _0x151fe5;};'use strict';var emlformat=require(_0x666e('0x0'));var rimraf=require(_0x666e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x666e('0x2'));var rp=require(_0x666e('0x3'));var moment=require(_0x666e('0x4'));var BPromise=require(_0x666e('0x5'));var Mustache=require(_0x666e('0x6'));var util=require(_0x666e('0x7'));var path=require('path');var sox=require(_0x666e('0x8'));var csv=require(_0x666e('0x9'));var ejs=require(_0x666e('0xa'));var fs=require('fs');var fs_extra=require(_0x666e('0xb'));var _=require(_0x666e('0xc'));var squel=require('squel');var crypto=require(_0x666e('0xd'));var jsforce=require(_0x666e('0xe'));var deskjs=require(_0x666e('0xf'));var toCsv=require(_0x666e('0x9'));var querystring=require(_0x666e('0x10'));var Papa=require(_0x666e('0x11'));var Redis=require(_0x666e('0x12'));var authService=require(_0x666e('0x13'));var qs=require(_0x666e('0x14'));var as=require(_0x666e('0x15'));var hardwareService=require(_0x666e('0x16'));var logger=require(_0x666e('0x17'))(_0x666e('0x18'));var utils=require(_0x666e('0x19'));var config=require(_0x666e('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x666e('0x1b'))['db'];function respondWithStatusCode(_0x3bb0e7,_0x2f31ca){_0x2f31ca=_0x2f31ca||0xcc;return function(_0x528ace){if(_0x528ace){return _0x3bb0e7[_0x666e('0x1c')](_0x2f31ca);}return _0x3bb0e7[_0x666e('0x1d')](_0x2f31ca)[_0x666e('0x1e')]();};}function respondWithResult(_0xacef06,_0xe850a7){_0xe850a7=_0xe850a7||0xc8;return function(_0x2ae485){if(_0x2ae485){return _0xacef06[_0x666e('0x1d')](_0xe850a7)[_0x666e('0x1f')](_0x2ae485);}};}function respondWithFilteredResult(_0x5924c2,_0x391967){return function(_0x24c693){if(_0x24c693){var _0x50320e=typeof _0x391967[_0x666e('0x20')]===_0x666e('0x21')&&typeof _0x391967['limit']===_0x666e('0x21');var _0x44caff=_0x24c693[_0x666e('0x22')];var _0x2fca80=_0x50320e?0x0:_0x391967['offset'];var _0x374404=_0x50320e?_0x24c693[_0x666e('0x22')]:_0x391967['offset']+_0x391967['limit'];var _0x5c43e5;if(_0x374404>=_0x44caff){_0x374404=_0x44caff;_0x5c43e5=0xc8;}else{_0x5c43e5=0xce;}_0x5924c2[_0x666e('0x1d')](_0x5c43e5);return _0x5924c2['set']('Content-Range',_0x2fca80+'-'+_0x374404+'/'+_0x44caff)[_0x666e('0x1f')](_0x24c693);}return null;};}function patchUpdates(_0x3abd0d){return function(_0x31d03e){try{jsonpatch[_0x666e('0x23')](_0x31d03e,_0x3abd0d,!![]);}catch(_0x252646){return BPromise['reject'](_0x252646);}return _0x31d03e[_0x666e('0x24')]();};}function saveUpdates(_0x240f05,_0x346dd8){return function(_0x481314){if(_0x481314){return _0x481314['update'](_0x240f05)[_0x666e('0x25')](function(_0x436aaa){return _0x436aaa;});}return null;};}function removeEntity(_0x49e353,_0x4628d8){return function(_0x27db8e){if(_0x27db8e){return _0x27db8e[_0x666e('0x26')]()[_0x666e('0x25')](function(){_0x49e353[_0x666e('0x1d')](0xcc)[_0x666e('0x1e')]();});}};}function handleEntityNotFound(_0x262d8e,_0x888eb){return function(_0x2f7f89){if(!_0x2f7f89){_0x262d8e['sendStatus'](0x194);}return _0x2f7f89;};}function handleError(_0x4dcb27,_0x25c0df){_0x25c0df=_0x25c0df||0x1f4;return function(_0x307de9){logger['error'](_0x307de9['stack']);if(_0x307de9[_0x666e('0x27')]){delete _0x307de9[_0x666e('0x27')];}_0x4dcb27[_0x666e('0x1d')](_0x25c0df)['send'](_0x307de9);};}exports[_0x666e('0x28')]=function(_0x290b6b,_0x2f3372){var _0x1d04a8={},_0x258739={},_0x41e5c4={'count':0x0,'rows':[]};var _0x2d6e18=_[_0x666e('0x29')](db[_0x666e('0x2a')]['rawAttributes'],function(_0x5e3756){return{'name':_0x5e3756['fieldName'],'type':_0x5e3756['type']['key']};});_0x258739['model']=_[_0x666e('0x29')](_0x2d6e18,_0x666e('0x27'));_0x258739[_0x666e('0x2b')]=_[_0x666e('0x2c')](_0x290b6b[_0x666e('0x2b')]);_0x258739['filters']=_['intersection'](_0x258739[_0x666e('0x2d')],_0x258739[_0x666e('0x2b')]);_0x1d04a8['attributes']=_['intersection'](_0x258739['model'],qs[_0x666e('0x2e')](_0x290b6b[_0x666e('0x2b')][_0x666e('0x2e')]));_0x1d04a8[_0x666e('0x2f')]=_0x1d04a8['attributes']['length']?_0x1d04a8[_0x666e('0x2f')]:_0x258739[_0x666e('0x2d')];if(!_0x290b6b[_0x666e('0x2b')]['hasOwnProperty'](_0x666e('0x30'))){_0x1d04a8[_0x666e('0x31')]=qs[_0x666e('0x31')](_0x290b6b[_0x666e('0x2b')]['limit']);_0x1d04a8[_0x666e('0x20')]=qs[_0x666e('0x20')](_0x290b6b[_0x666e('0x2b')]['offset']);}_0x1d04a8['order']=qs[_0x666e('0x32')](_0x290b6b[_0x666e('0x2b')][_0x666e('0x32')]);_0x1d04a8[_0x666e('0x33')]=qs[_0x666e('0x34')](_['pick'](_0x290b6b[_0x666e('0x2b')],_0x258739[_0x666e('0x34')]),_0x2d6e18);if(_0x290b6b['query']['filter']){_0x1d04a8[_0x666e('0x33')]=_['merge'](_0x1d04a8[_0x666e('0x33')],{'$or':_[_0x666e('0x29')](_0x2d6e18,function(_0x2e0cd6){if(_0x2e0cd6['type']!=='VIRTUAL'){var _0x214749={};_0x214749[_0x2e0cd6[_0x666e('0x27')]]={'$like':'%'+_0x290b6b[_0x666e('0x2b')][_0x666e('0x35')]+'%'};return _0x214749;}})});}_0x1d04a8=_[_0x666e('0x36')]({},_0x1d04a8,_0x290b6b[_0x666e('0x37')]);var _0x1880e7={'where':_0x1d04a8['where']};return db[_0x666e('0x2a')][_0x666e('0x22')](_0x1880e7)[_0x666e('0x25')](function(_0x3caab8){_0x41e5c4[_0x666e('0x22')]=_0x3caab8;if(_0x290b6b[_0x666e('0x2b')][_0x666e('0x38')]){_0x1d04a8['include']=[{'all':!![]}];}return db[_0x666e('0x2a')][_0x666e('0x39')](_0x1d04a8);})[_0x666e('0x25')](function(_0xd3d878){_0x41e5c4[_0x666e('0x3a')]=_0xd3d878;return _0x41e5c4;})[_0x666e('0x25')](respondWithFilteredResult(_0x2f3372,_0x1d04a8))['catch'](handleError(_0x2f3372,null));};exports[_0x666e('0x3b')]=function(_0x580d25,_0x32532e){var _0x452045={'raw':![],'where':{'id':_0x580d25[_0x666e('0x3c')]['id']}},_0x3b3811={};_0x3b3811[_0x666e('0x2d')]=_['keys'](db[_0x666e('0x2a')][_0x666e('0x3d')]);_0x3b3811['query']=_[_0x666e('0x2c')](_0x580d25[_0x666e('0x2b')]);_0x3b3811[_0x666e('0x34')]=_[_0x666e('0x3e')](_0x3b3811['model'],_0x3b3811[_0x666e('0x2b')]);_0x452045[_0x666e('0x2f')]=_[_0x666e('0x3e')](_0x3b3811['model'],qs['fields'](_0x580d25['query'][_0x666e('0x2e')]));_0x452045[_0x666e('0x2f')]=_0x452045[_0x666e('0x2f')][_0x666e('0x3f')]?_0x452045[_0x666e('0x2f')]:_0x3b3811['model'];if(_0x580d25[_0x666e('0x2b')]['includeAll']){_0x452045['include']=[{'all':!![]}];}_0x452045=_[_0x666e('0x36')]({},_0x452045,_0x580d25[_0x666e('0x37')]);return db['SalesforceConfiguration'][_0x666e('0x40')](_0x452045)[_0x666e('0x25')](handleEntityNotFound(_0x32532e,null))[_0x666e('0x25')](respondWithResult(_0x32532e,null))['catch'](handleError(_0x32532e,null));};exports[_0x666e('0x41')]=function(_0x3f3e6,_0x4a516f){return db[_0x666e('0x2a')][_0x666e('0x41')](_0x3f3e6['body'],{})[_0x666e('0x25')](respondWithResult(_0x4a516f,0xc9))[_0x666e('0x42')](handleError(_0x4a516f,null));};exports[_0x666e('0x43')]=function(_0x37d9ab,_0x5d1099){if(_0x37d9ab[_0x666e('0x44')]['id']){delete _0x37d9ab[_0x666e('0x44')]['id'];}return db['SalesforceConfiguration'][_0x666e('0x40')]({'where':{'id':_0x37d9ab[_0x666e('0x3c')]['id']}})['then'](handleEntityNotFound(_0x5d1099,null))[_0x666e('0x25')](saveUpdates(_0x37d9ab[_0x666e('0x44')],null))[_0x666e('0x25')](respondWithResult(_0x5d1099,null))[_0x666e('0x42')](handleError(_0x5d1099,null));};exports['destroy']=function(_0x16f5ca,_0x1f0fb5){return db[_0x666e('0x2a')]['find']({'where':{'id':_0x16f5ca['params']['id']}})[_0x666e('0x25')](handleEntityNotFound(_0x1f0fb5,null))[_0x666e('0x25')](removeEntity(_0x1f0fb5,null))[_0x666e('0x42')](handleError(_0x1f0fb5,null));};exports['getFields']=function(_0x2ce799,_0x51dda2,_0x5af0f5){var _0x3ad250={};var _0x41648e={};var _0x2556ae;var _0x1a6426;return db[_0x666e('0x2a')][_0x666e('0x45')]({'where':{'id':_0x2ce799['params']['id']}})[_0x666e('0x25')](handleEntityNotFound(_0x51dda2,null))[_0x666e('0x25')](function(_0x2436c3){if(_0x2436c3){_0x2556ae=_0x2436c3;_0x41648e['model']=_[_0x666e('0x2c')](db[_0x666e('0x46')][_0x666e('0x3d')]);_0x41648e[_0x666e('0x2b')]=_[_0x666e('0x2c')](_0x2ce799[_0x666e('0x2b')]);_0x41648e[_0x666e('0x34')]=_['intersection'](_0x41648e['model'],_0x41648e[_0x666e('0x2b')]);_0x3ad250[_0x666e('0x2f')]=_['intersection'](_0x41648e[_0x666e('0x2d')],qs['fields'](_0x2ce799['query'][_0x666e('0x2e')]));_0x3ad250[_0x666e('0x2f')]=_0x3ad250['attributes']['length']?_0x3ad250[_0x666e('0x2f')]:_0x41648e[_0x666e('0x2d')];_0x3ad250['order']=qs[_0x666e('0x32')](_0x2ce799[_0x666e('0x2b')]['sort']);_0x3ad250['where']=qs[_0x666e('0x34')](_['pick'](_0x2ce799['query'],_0x41648e[_0x666e('0x34')]));if(_0x2ce799[_0x666e('0x2b')][_0x666e('0x35')]){_0x3ad250[_0x666e('0x33')]=_[_0x666e('0x36')](_0x3ad250[_0x666e('0x33')],{'$or':_[_0x666e('0x29')](_0x3ad250[_0x666e('0x2f')],function(_0x31e55f){var _0x373e5b={};_0x373e5b[_0x31e55f]={'$like':'%'+_0x2ce799[_0x666e('0x2b')][_0x666e('0x35')]+'%'};return _0x373e5b;})});}_0x3ad250=_['merge']({},_0x3ad250,_0x2ce799[_0x666e('0x37')]);return _0x2556ae[_0x666e('0x47')](_0x3ad250);}})[_0x666e('0x25')](function(_0x2260c0){if(_0x2260c0){_0x1a6426=_0x2260c0[_0x666e('0x3f')];if(!_0x2ce799[_0x666e('0x2b')][_0x666e('0x48')](_0x666e('0x30'))){_0x3ad250['limit']=qs['limit'](_0x2ce799[_0x666e('0x2b')][_0x666e('0x31')]);_0x3ad250[_0x666e('0x20')]=qs[_0x666e('0x20')](_0x2ce799[_0x666e('0x2b')][_0x666e('0x20')]);}return _0x2556ae['getFields'](_0x3ad250);}})[_0x666e('0x25')](function(_0x134b9e){if(_0x134b9e){return _0x134b9e?{'count':_0x1a6426,'rows':_0x134b9e}:null;}})['then'](respondWithResult(_0x51dda2,null))['catch'](handleError(_0x51dda2,null));};exports[_0x666e('0x49')]=function(_0x4e60f5,_0x5af886,_0x4761be){var _0x23fbf4={};var _0xce1295={};var _0x1cb3f3;var _0x4fdb50;return db[_0x666e('0x2a')][_0x666e('0x45')]({'where':{'id':_0x4e60f5[_0x666e('0x3c')]['id']}})['then'](handleEntityNotFound(_0x5af886,null))[_0x666e('0x25')](function(_0x190415){if(_0x190415){_0x1cb3f3=_0x190415;_0xce1295[_0x666e('0x2d')]=_['keys'](db['SalesforceField'][_0x666e('0x3d')]);_0xce1295['query']=_['keys'](_0x4e60f5['query']);_0xce1295[_0x666e('0x34')]=_[_0x666e('0x3e')](_0xce1295[_0x666e('0x2d')],_0xce1295['query']);_0x23fbf4[_0x666e('0x2f')]=_[_0x666e('0x3e')](_0xce1295[_0x666e('0x2d')],qs['fields'](_0x4e60f5[_0x666e('0x2b')]['fields']));_0x23fbf4['attributes']=_0x23fbf4['attributes'][_0x666e('0x3f')]?_0x23fbf4[_0x666e('0x2f')]:_0xce1295[_0x666e('0x2d')];_0x23fbf4[_0x666e('0x4a')]=qs[_0x666e('0x32')](_0x4e60f5['query'][_0x666e('0x32')]);_0x23fbf4[_0x666e('0x33')]=qs[_0x666e('0x34')](_['pick'](_0x4e60f5[_0x666e('0x2b')],_0xce1295[_0x666e('0x34')]));if(_0x4e60f5['query'][_0x666e('0x35')]){_0x23fbf4['where']=_['merge'](_0x23fbf4[_0x666e('0x33')],{'$or':_[_0x666e('0x29')](_0x23fbf4[_0x666e('0x2f')],function(_0xd2e9c9){var _0x402d0a={};_0x402d0a[_0xd2e9c9]={'$like':'%'+_0x4e60f5[_0x666e('0x2b')][_0x666e('0x35')]+'%'};return _0x402d0a;})});}_0x23fbf4=_[_0x666e('0x36')]({},_0x23fbf4,_0x4e60f5[_0x666e('0x37')]);return _0x1cb3f3['getSubjects'](_0x23fbf4);}})[_0x666e('0x25')](function(_0x4e37e5){if(_0x4e37e5){_0x4fdb50=_0x4e37e5[_0x666e('0x3f')];if(!_0x4e60f5[_0x666e('0x2b')][_0x666e('0x48')](_0x666e('0x30'))){_0x23fbf4[_0x666e('0x31')]=qs[_0x666e('0x31')](_0x4e60f5[_0x666e('0x2b')][_0x666e('0x31')]);_0x23fbf4[_0x666e('0x20')]=qs['offset'](_0x4e60f5[_0x666e('0x2b')]['offset']);}return _0x1cb3f3[_0x666e('0x49')](_0x23fbf4);}})[_0x666e('0x25')](function(_0x331d98){if(_0x331d98){return _0x331d98?{'count':_0x4fdb50,'rows':_0x331d98}:null;}})[_0x666e('0x25')](respondWithResult(_0x5af886,null))['catch'](handleError(_0x5af886,null));};exports[_0x666e('0x4b')]=function(_0xc9d5d3,_0x95a49f,_0x4885ff){var _0x2c80d8={};var _0x891c64={};var _0x50a5af;var _0x465170;return db[_0x666e('0x2a')]['findOne']({'where':{'id':_0xc9d5d3['params']['id']}})[_0x666e('0x25')](handleEntityNotFound(_0x95a49f,null))[_0x666e('0x25')](function(_0x1e719b){if(_0x1e719b){_0x50a5af=_0x1e719b;_0x891c64[_0x666e('0x2d')]=_[_0x666e('0x2c')](db['SalesforceField'][_0x666e('0x3d')]);_0x891c64[_0x666e('0x2b')]=_['keys'](_0xc9d5d3['query']);_0x891c64[_0x666e('0x34')]=_['intersection'](_0x891c64['model'],_0x891c64[_0x666e('0x2b')]);_0x2c80d8[_0x666e('0x2f')]=_[_0x666e('0x3e')](_0x891c64[_0x666e('0x2d')],qs[_0x666e('0x2e')](_0xc9d5d3['query'][_0x666e('0x2e')]));_0x2c80d8[_0x666e('0x2f')]=_0x2c80d8[_0x666e('0x2f')][_0x666e('0x3f')]?_0x2c80d8[_0x666e('0x2f')]:_0x891c64[_0x666e('0x2d')];_0x2c80d8[_0x666e('0x4a')]=qs[_0x666e('0x32')](_0xc9d5d3[_0x666e('0x2b')][_0x666e('0x32')]);_0x2c80d8[_0x666e('0x33')]=qs[_0x666e('0x34')](_[_0x666e('0x4c')](_0xc9d5d3[_0x666e('0x2b')],_0x891c64[_0x666e('0x34')]));if(_0xc9d5d3[_0x666e('0x2b')][_0x666e('0x35')]){_0x2c80d8[_0x666e('0x33')]=_[_0x666e('0x36')](_0x2c80d8[_0x666e('0x33')],{'$or':_['map'](_0x2c80d8[_0x666e('0x2f')],function(_0x5d642e){var _0x397d89={};_0x397d89[_0x5d642e]={'$like':'%'+_0xc9d5d3[_0x666e('0x2b')][_0x666e('0x35')]+'%'};return _0x397d89;})});}_0x2c80d8=_['merge']({},_0x2c80d8,_0xc9d5d3[_0x666e('0x37')]);return _0x50a5af[_0x666e('0x4b')](_0x2c80d8);}})['then'](function(_0x2dee73){if(_0x2dee73){_0x465170=_0x2dee73[_0x666e('0x3f')];if(!_0xc9d5d3[_0x666e('0x2b')]['hasOwnProperty'](_0x666e('0x30'))){_0x2c80d8['limit']=qs['limit'](_0xc9d5d3[_0x666e('0x2b')][_0x666e('0x31')]);_0x2c80d8[_0x666e('0x20')]=qs[_0x666e('0x20')](_0xc9d5d3['query'][_0x666e('0x20')]);}return _0x50a5af[_0x666e('0x4b')](_0x2c80d8);}})['then'](function(_0x14d7f1){if(_0x14d7f1){return _0x14d7f1?{'count':_0x465170,'rows':_0x14d7f1}:null;}})[_0x666e('0x25')](respondWithResult(_0x95a49f,null))[_0x666e('0x42')](handleError(_0x95a49f,null));};
\ No newline at end of file
index d7e69f8..9a30357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0651=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration'];(function(_0x470d1e,_0x5dd5a9){var _0x4e5ef1=function(_0x1bc191){while(--_0x1bc191){_0x470d1e['push'](_0x470d1e['shift']());}};_0x4e5ef1(++_0x5dd5a9);}(_0x0651,0x1e4));var _0x1065=function(_0x47c895,_0x5384ac){_0x47c895=_0x47c895-0x0;var _0x2013d9=_0x0651[_0x47c895];return _0x2013d9;};'use strict';var _=require('lodash');var util=require(_0x1065('0x0'));var logger=require(_0x1065('0x1'))(_0x1065('0x2'));var moment=require(_0x1065('0x3'));var BPromise=require(_0x1065('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1065('0x5'));var config=require(_0x1065('0x6'));var attributes=require(_0x1065('0x7'));module[_0x1065('0x8')]=function(_0x2433d6,_0x3dd6c1){return _0x2433d6[_0x1065('0x9')](_0x1065('0xa'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf8de=['util','../../config/logger','moment','request-promise','path','rimraf','./intSalesforceConfiguration.attributes','exports','int_salesforce_configurations'];(function(_0x236d49,_0x5a39fa){var _0x491f0b=function(_0x3e991e){while(--_0x3e991e){_0x236d49['push'](_0x236d49['shift']());}};_0x491f0b(++_0x5a39fa);}(_0xf8de,0x1d4));var _0xef8d=function(_0x52c4fb,_0x3e7d4a){_0x52c4fb=_0x52c4fb-0x0;var _0x232f74=_0xf8de[_0x52c4fb];return _0x232f74;};'use strict';var _=require('lodash');var util=require(_0xef8d('0x0'));var logger=require(_0xef8d('0x1'))('api');var moment=require(_0xef8d('0x2'));var BPromise=require('bluebird');var rp=require(_0xef8d('0x3'));var fs=require('fs');var path=require(_0xef8d('0x4'));var rimraf=require(_0xef8d('0x5'));var config=require('../../config/environment');var attributes=require(_0xef8d('0x6'));module[_0xef8d('0x7')]=function(_0x586e39,_0x2ba6b9){return _0x586e39['define']('SalesforceConfiguration',attributes,{'tableName':_0xef8d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a07544a..ddb2c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1abf=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x1509f1,_0x2f6f24){var _0x450fc4=function(_0x5efad2){while(--_0x5efad2){_0x1509f1['push'](_0x1509f1['shift']());}};_0x450fc4(++_0x2f6f24);}(_0x1abf,0x6d));var _0xf1ab=function(_0x2380cb,_0x3503e7){_0x2380cb=_0x2380cb-0x0;var _0x42e80b=_0x1abf[_0x2380cb];return _0x42e80b;};'use strict';var _=require(_0xf1ab('0x0'));var util=require('util');var moment=require(_0xf1ab('0x1'));var BPromise=require(_0xf1ab('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf1ab('0x3'));var db=require(_0xf1ab('0x4'))['db'];var utils=require(_0xf1ab('0x5'));var logger=require(_0xf1ab('0x6'))('rpc');var config=require(_0xf1ab('0x7'));var jayson=require(_0xf1ab('0x8'));var client=jayson[_0xf1ab('0x9')][_0xf1ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x560d8f,_0x11b9b7,_0x277e7c){return new BPromise(function(_0x5a6677,_0x11048c){return client['request'](_0x560d8f,_0x277e7c)[_0xf1ab('0xb')](function(_0x52bd35){logger[_0xf1ab('0xc')](_0xf1ab('0xd'),_0x11b9b7,_0xf1ab('0xe'));logger[_0xf1ab('0xf')](_0xf1ab('0x10'),_0x11b9b7,_0xf1ab('0xe'),JSON[_0xf1ab('0x11')](_0x52bd35));if(_0x52bd35[_0xf1ab('0x12')]){if(_0x52bd35[_0xf1ab('0x12')][_0xf1ab('0x13')]===0x1f4){logger[_0xf1ab('0x12')]('SalesforceConfiguration,\x20%s,\x20%s',_0x11b9b7,_0x52bd35[_0xf1ab('0x12')]['message']);return _0x11048c(_0x52bd35['error'][_0xf1ab('0x14')]);}logger['error'](_0xf1ab('0xd'),_0x11b9b7,_0x52bd35[_0xf1ab('0x12')]['message']);return _0x5a6677(_0x52bd35[_0xf1ab('0x12')]['message']);}else{logger['info'](_0xf1ab('0xd'),_0x11b9b7,_0xf1ab('0xe'));_0x5a6677(_0x52bd35[_0xf1ab('0x15')][_0xf1ab('0x14')]);}})['catch'](function(_0x41cbfe){logger[_0xf1ab('0x12')](_0xf1ab('0xd'),_0x11b9b7,_0x41cbfe);_0x11048c(_0x41cbfe);});});}
\ No newline at end of file
+var _0xed6f=['error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x338356,_0x169289){var _0x45a531=function(_0x4e39df){while(--_0x4e39df){_0x338356['push'](_0x338356['shift']());}};_0x45a531(++_0x169289);}(_0xed6f,0x95));var _0xfed6=function(_0x31d81d,_0x4e93bf){_0x31d81d=_0x31d81d-0x0;var _0xd2d001=_0xed6f[_0x31d81d];return _0xd2d001;};'use strict';var _=require(_0xfed6('0x0'));var util=require(_0xfed6('0x1'));var moment=require('moment');var BPromise=require(_0xfed6('0x2'));var rs=require(_0xfed6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfed6('0x4'))['db'];var utils=require(_0xfed6('0x5'));var logger=require(_0xfed6('0x6'))(_0xfed6('0x7'));var config=require(_0xfed6('0x8'));var jayson=require(_0xfed6('0x9'));var client=jayson[_0xfed6('0xa')][_0xfed6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xf1abdc,_0x4a0710,_0x3c39a0){return new BPromise(function(_0x3cb386,_0x4c0816){return client[_0xfed6('0xc')](_0xf1abdc,_0x3c39a0)[_0xfed6('0xd')](function(_0xeb4fc5){logger[_0xfed6('0xe')](_0xfed6('0xf'),_0x4a0710,_0xfed6('0x10'));logger[_0xfed6('0x11')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x4a0710,_0xfed6('0x10'),JSON[_0xfed6('0x12')](_0xeb4fc5));if(_0xeb4fc5[_0xfed6('0x13')]){if(_0xeb4fc5[_0xfed6('0x13')][_0xfed6('0x14')]===0x1f4){logger[_0xfed6('0x13')](_0xfed6('0xf'),_0x4a0710,_0xeb4fc5['error']['message']);return _0x4c0816(_0xeb4fc5[_0xfed6('0x13')]['message']);}logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x4a0710,_0xeb4fc5[_0xfed6('0x13')][_0xfed6('0x15')]);return _0x3cb386(_0xeb4fc5['error']['message']);}else{logger[_0xfed6('0xe')](_0xfed6('0xf'),_0x4a0710,_0xfed6('0x10'));_0x3cb386(_0xeb4fc5[_0xfed6('0x16')][_0xfed6('0x15')]);}})[_0xfed6('0x17')](function(_0x4b5fe1){logger[_0xfed6('0x13')](_0xfed6('0xf'),_0x4a0710,_0x4b5fe1);_0x4c0816(_0x4b5fe1);});});}
\ No newline at end of file
index cbd44a2..efd5ab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b8=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x39f49d,_0x3a033f){var _0x450aaa=function(_0x2361b5){while(--_0x2361b5){_0x39f49d['push'](_0x39f49d['shift']());}};_0x450aaa(++_0x3a033f);}(_0x18b8,0xff));var _0x818b=function(_0x380141,_0x46f887){_0x380141=_0x380141-0x0;var _0x4df4a2=_0x18b8[_0x380141];return _0x4df4a2;};'use strict';var multer=require(_0x818b('0x0'));var util=require(_0x818b('0x1'));var path=require(_0x818b('0x2'));var timeout=require(_0x818b('0x3'));var express=require(_0x818b('0x4'));var router=express[_0x818b('0x5')]();var fs_extra=require(_0x818b('0x6'));var auth=require(_0x818b('0x7'));var interaction=require(_0x818b('0x8'));var config=require(_0x818b('0x9'));var controller=require('./intSalesforceField.controller');router[_0x818b('0xa')]('/',auth[_0x818b('0xb')](),controller[_0x818b('0xc')]);router[_0x818b('0xa')](_0x818b('0xd'),auth[_0x818b('0xb')](),controller[_0x818b('0xe')]);router[_0x818b('0xf')]('/',auth['isAuthenticated'](),controller[_0x818b('0x10')]);router[_0x818b('0x11')](_0x818b('0xd'),auth[_0x818b('0xb')](),controller['update']);router[_0x818b('0x12')](_0x818b('0xd'),auth[_0x818b('0xb')](),controller[_0x818b('0x13')]);module[_0x818b('0x14')]=router;
\ No newline at end of file
+var _0x07bc=['multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','create','update','delete','destroy','exports'];(function(_0x4480c7,_0x5f438a){var _0x356b6d=function(_0x137473){while(--_0x137473){_0x4480c7['push'](_0x4480c7['shift']());}};_0x356b6d(++_0x5f438a);}(_0x07bc,0xd8));var _0xc07b=function(_0x6cca8,_0x3e51e2){_0x6cca8=_0x6cca8-0x0;var _0x55361f=_0x07bc[_0x6cca8];return _0x55361f;};'use strict';var multer=require(_0xc07b('0x0'));var util=require(_0xc07b('0x1'));var path=require('path');var timeout=require(_0xc07b('0x2'));var express=require('express');var router=express[_0xc07b('0x3')]();var fs_extra=require(_0xc07b('0x4'));var auth=require(_0xc07b('0x5'));var interaction=require(_0xc07b('0x6'));var config=require(_0xc07b('0x7'));var controller=require(_0xc07b('0x8'));router[_0xc07b('0x9')]('/',auth[_0xc07b('0xa')](),controller[_0xc07b('0xb')]);router[_0xc07b('0x9')](_0xc07b('0xc'),auth[_0xc07b('0xa')](),controller['show']);router['post']('/',auth[_0xc07b('0xa')](),controller[_0xc07b('0xd')]);router['put'](_0xc07b('0xc'),auth[_0xc07b('0xa')](),controller[_0xc07b('0xe')]);router[_0xc07b('0xf')](_0xc07b('0xc'),auth[_0xc07b('0xa')](),controller[_0xc07b('0x10')]);module[_0xc07b('0x11')]=router;
\ No newline at end of file
index 57353f3..a656dc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x240e=['string','variable','customVariable','keyValue','picklist','STRING','exports','ENUM'];(function(_0x38fb0d,_0x52b5db){var _0x30a5d6=function(_0x31eba6){while(--_0x31eba6){_0x38fb0d['push'](_0x38fb0d['shift']());}};_0x30a5d6(++_0x52b5db);}(_0x240e,0xfe));var _0xe240=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x240e[_0x1fc122];return _0xa2cb13;};'use strict';var Sequelize=require('sequelize');module[_0xe240('0x0')]={'type':{'type':Sequelize[_0xe240('0x1')](_0xe240('0x2'),_0xe240('0x3'),_0xe240('0x4'),_0xe240('0x5'),_0xe240('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0xe240('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe240('0x1')]('string','variable',_0xe240('0x4'))},'keyContent':{'type':Sequelize[_0xe240('0x7')]},'idField':{'type':Sequelize[_0xe240('0x7')]},'variableName':{'type':Sequelize[_0xe240('0x7')]}};
\ No newline at end of file
+var _0x972a=['exports','customVariable','keyValue','picklist','string','STRING','variable'];(function(_0x3c6e8d,_0x5356f3){var _0x3d50a3=function(_0x405095){while(--_0x405095){_0x3c6e8d['push'](_0x3c6e8d['shift']());}};_0x3d50a3(++_0x5356f3);}(_0x972a,0x12d));var _0xa972=function(_0x57a6ce,_0x3d7316){_0x57a6ce=_0x57a6ce-0x0;var _0x38de7e=_0x972a[_0x57a6ce];return _0x38de7e;};'use strict';var Sequelize=require('sequelize');module[_0xa972('0x0')]={'type':{'type':Sequelize['ENUM']('string','variable',_0xa972('0x1'),_0xa972('0x2'),_0xa972('0x3')),'defaultValue':_0xa972('0x4')},'content':{'type':Sequelize[_0xa972('0x5')]},'key':{'type':Sequelize[_0xa972('0x5')]},'keyType':{'type':Sequelize['ENUM']('string',_0xa972('0x6'),_0xa972('0x1'))},'keyContent':{'type':Sequelize[_0xa972('0x5')]},'idField':{'type':Sequelize[_0xa972('0x5')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b5e9142..a6868f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa9b=['model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','show','params','rawAttributes','includeAll','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','json','apply','save','update','then','destroy','end','error','stack','name','send','map','SalesforceField','fieldName','type','key'];(function(_0x5b7cd8,_0x1c2572){var _0x276c68=function(_0x379cde){while(--_0x379cde){_0x5b7cd8['push'](_0x5b7cd8['shift']());}};_0x276c68(++_0x1c2572);}(_0xfa9b,0x64));var _0xbfa9=function(_0xdb9c68,_0x4b1f17){_0xdb9c68=_0xdb9c68-0x0;var _0x38e786=_0xfa9b[_0xdb9c68];return _0x38e786;};'use strict';var emlformat=require(_0xbfa9('0x0'));var rimraf=require(_0xbfa9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbfa9('0x2'));var rp=require(_0xbfa9('0x3'));var moment=require('moment');var BPromise=require(_0xbfa9('0x4'));var Mustache=require(_0xbfa9('0x5'));var util=require(_0xbfa9('0x6'));var path=require(_0xbfa9('0x7'));var sox=require(_0xbfa9('0x8'));var csv=require(_0xbfa9('0x9'));var ejs=require(_0xbfa9('0xa'));var fs=require('fs');var fs_extra=require(_0xbfa9('0xb'));var _=require(_0xbfa9('0xc'));var squel=require(_0xbfa9('0xd'));var crypto=require(_0xbfa9('0xe'));var jsforce=require(_0xbfa9('0xf'));var deskjs=require(_0xbfa9('0x10'));var toCsv=require(_0xbfa9('0x9'));var querystring=require('querystring');var Papa=require(_0xbfa9('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbfa9('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbfa9('0x13'))(_0xbfa9('0x14'));var utils=require(_0xbfa9('0x15'));var config=require(_0xbfa9('0x16'));var licenseUtil=require(_0xbfa9('0x17'));var db=require(_0xbfa9('0x18'))['db'];function respondWithStatusCode(_0x5c007e,_0x272c00){_0x272c00=_0x272c00||0xcc;return function(_0x1da789){if(_0x1da789){return _0x5c007e[_0xbfa9('0x19')](_0x272c00);}return _0x5c007e[_0xbfa9('0x1a')](_0x272c00)['end']();};}function respondWithResult(_0x59f254,_0x2a796c){_0x2a796c=_0x2a796c||0xc8;return function(_0xf78a46){if(_0xf78a46){return _0x59f254['status'](_0x2a796c)['json'](_0xf78a46);}};}function respondWithFilteredResult(_0x4199a5,_0x1af729){return function(_0x20c851){if(_0x20c851){var _0x4d6787=typeof _0x1af729['offset']===_0xbfa9('0x1b')&&typeof _0x1af729[_0xbfa9('0x1c')]===_0xbfa9('0x1b');var _0x10a1df=_0x20c851[_0xbfa9('0x1d')];var _0xedcb5d=_0x4d6787?0x0:_0x1af729[_0xbfa9('0x1e')];var _0x4f1bea=_0x4d6787?_0x20c851['count']:_0x1af729[_0xbfa9('0x1e')]+_0x1af729[_0xbfa9('0x1c')];var _0x5edd45;if(_0x4f1bea>=_0x10a1df){_0x4f1bea=_0x10a1df;_0x5edd45=0xc8;}else{_0x5edd45=0xce;}_0x4199a5[_0xbfa9('0x1a')](_0x5edd45);return _0x4199a5[_0xbfa9('0x1f')]('Content-Range',_0xedcb5d+'-'+_0x4f1bea+'/'+_0x10a1df)[_0xbfa9('0x20')](_0x20c851);}return null;};}function patchUpdates(_0x2273e0){return function(_0x2e2c89){try{jsonpatch[_0xbfa9('0x21')](_0x2e2c89,_0x2273e0,!![]);}catch(_0x5eb5f5){return BPromise['reject'](_0x5eb5f5);}return _0x2e2c89[_0xbfa9('0x22')]();};}function saveUpdates(_0x27df12,_0x3eeff6){return function(_0x122041){if(_0x122041){return _0x122041[_0xbfa9('0x23')](_0x27df12)[_0xbfa9('0x24')](function(_0x3efa66){return _0x3efa66;});}return null;};}function removeEntity(_0x1d531e,_0x4985c8){return function(_0x53584e){if(_0x53584e){return _0x53584e[_0xbfa9('0x25')]()['then'](function(){_0x1d531e['status'](0xcc)[_0xbfa9('0x26')]();});}};}function handleEntityNotFound(_0x396311,_0x860500){return function(_0x308f5b){if(!_0x308f5b){_0x396311['sendStatus'](0x194);}return _0x308f5b;};}function handleError(_0x1ac594,_0x55ff7b){_0x55ff7b=_0x55ff7b||0x1f4;return function(_0x2b42b9){logger[_0xbfa9('0x27')](_0x2b42b9[_0xbfa9('0x28')]);if(_0x2b42b9[_0xbfa9('0x29')]){delete _0x2b42b9[_0xbfa9('0x29')];}_0x1ac594[_0xbfa9('0x1a')](_0x55ff7b)[_0xbfa9('0x2a')](_0x2b42b9);};}exports['index']=function(_0x250862,_0x1f46df){var _0xedf972={},_0x58b20a={},_0x4c1e84={'count':0x0,'rows':[]};var _0x4a666d=_[_0xbfa9('0x2b')](db[_0xbfa9('0x2c')]['rawAttributes'],function(_0x2712c4){return{'name':_0x2712c4[_0xbfa9('0x2d')],'type':_0x2712c4[_0xbfa9('0x2e')][_0xbfa9('0x2f')]};});_0x58b20a[_0xbfa9('0x30')]=_[_0xbfa9('0x2b')](_0x4a666d,'name');_0x58b20a[_0xbfa9('0x31')]=_[_0xbfa9('0x32')](_0x250862['query']);_0x58b20a[_0xbfa9('0x33')]=_[_0xbfa9('0x34')](_0x58b20a['model'],_0x58b20a[_0xbfa9('0x31')]);_0xedf972[_0xbfa9('0x35')]=_[_0xbfa9('0x34')](_0x58b20a['model'],qs[_0xbfa9('0x36')](_0x250862[_0xbfa9('0x31')][_0xbfa9('0x36')]));_0xedf972[_0xbfa9('0x35')]=_0xedf972[_0xbfa9('0x35')][_0xbfa9('0x37')]?_0xedf972['attributes']:_0x58b20a[_0xbfa9('0x30')];if(!_0x250862[_0xbfa9('0x31')]['hasOwnProperty'](_0xbfa9('0x38'))){_0xedf972[_0xbfa9('0x1c')]=qs[_0xbfa9('0x1c')](_0x250862[_0xbfa9('0x31')][_0xbfa9('0x1c')]);_0xedf972['offset']=qs[_0xbfa9('0x1e')](_0x250862[_0xbfa9('0x31')][_0xbfa9('0x1e')]);}_0xedf972[_0xbfa9('0x39')]=qs['sort'](_0x250862[_0xbfa9('0x31')][_0xbfa9('0x3a')]);_0xedf972[_0xbfa9('0x3b')]=qs[_0xbfa9('0x33')](_[_0xbfa9('0x3c')](_0x250862[_0xbfa9('0x31')],_0x58b20a[_0xbfa9('0x33')]),_0x4a666d);if(_0x250862[_0xbfa9('0x31')][_0xbfa9('0x3d')]){_0xedf972['where']=_[_0xbfa9('0x3e')](_0xedf972['where'],{'$or':_['map'](_0x4a666d,function(_0x3e3335){if(_0x3e3335['type']!==_0xbfa9('0x3f')){var _0x182744={};_0x182744[_0x3e3335[_0xbfa9('0x29')]]={'$like':'%'+_0x250862[_0xbfa9('0x31')][_0xbfa9('0x3d')]+'%'};return _0x182744;}})});}_0xedf972=_['merge']({},_0xedf972,_0x250862['options']);var _0x582318={'where':_0xedf972['where']};return db[_0xbfa9('0x2c')][_0xbfa9('0x1d')](_0x582318)[_0xbfa9('0x24')](function(_0x3d60ea){_0x4c1e84['count']=_0x3d60ea;if(_0x250862['query']['includeAll']){_0xedf972[_0xbfa9('0x40')]=[{'all':!![]}];}return db['SalesforceField'][_0xbfa9('0x41')](_0xedf972);})[_0xbfa9('0x24')](function(_0x4d9c58){_0x4c1e84['rows']=_0x4d9c58;return _0x4c1e84;})['then'](respondWithFilteredResult(_0x1f46df,_0xedf972))[_0xbfa9('0x42')](handleError(_0x1f46df,null));};exports[_0xbfa9('0x43')]=function(_0xe5e8d3,_0x493ca7){var _0x21c45f={'raw':!![],'where':{'id':_0xe5e8d3[_0xbfa9('0x44')]['id']}},_0x2f12b9={};_0x2f12b9[_0xbfa9('0x30')]=_['keys'](db[_0xbfa9('0x2c')][_0xbfa9('0x45')]);_0x2f12b9[_0xbfa9('0x31')]=_[_0xbfa9('0x32')](_0xe5e8d3[_0xbfa9('0x31')]);_0x2f12b9[_0xbfa9('0x33')]=_['intersection'](_0x2f12b9[_0xbfa9('0x30')],_0x2f12b9[_0xbfa9('0x31')]);_0x21c45f[_0xbfa9('0x35')]=_[_0xbfa9('0x34')](_0x2f12b9['model'],qs['fields'](_0xe5e8d3[_0xbfa9('0x31')][_0xbfa9('0x36')]));_0x21c45f[_0xbfa9('0x35')]=_0x21c45f[_0xbfa9('0x35')][_0xbfa9('0x37')]?_0x21c45f[_0xbfa9('0x35')]:_0x2f12b9[_0xbfa9('0x30')];if(_0xe5e8d3[_0xbfa9('0x31')][_0xbfa9('0x46')]){_0x21c45f['include']=[{'all':!![]}];}_0x21c45f=_[_0xbfa9('0x3e')]({},_0x21c45f,_0xe5e8d3['options']);return db[_0xbfa9('0x2c')][_0xbfa9('0x47')](_0x21c45f)[_0xbfa9('0x24')](handleEntityNotFound(_0x493ca7,null))[_0xbfa9('0x24')](respondWithResult(_0x493ca7,null))[_0xbfa9('0x42')](handleError(_0x493ca7,null));};exports[_0xbfa9('0x48')]=function(_0x827d8b,_0x4543ec){return db[_0xbfa9('0x2c')][_0xbfa9('0x48')](_0x827d8b[_0xbfa9('0x49')],{})['then'](respondWithResult(_0x4543ec,0xc9))[_0xbfa9('0x42')](handleError(_0x4543ec,null));};exports[_0xbfa9('0x23')]=function(_0x8cf25c,_0x5d1efc){if(_0x8cf25c[_0xbfa9('0x49')]['id']){delete _0x8cf25c[_0xbfa9('0x49')]['id'];}return db['SalesforceField']['find']({'where':{'id':_0x8cf25c[_0xbfa9('0x44')]['id']}})[_0xbfa9('0x24')](handleEntityNotFound(_0x5d1efc,null))['then'](saveUpdates(_0x8cf25c[_0xbfa9('0x49')],null))[_0xbfa9('0x24')](respondWithResult(_0x5d1efc,null))[_0xbfa9('0x42')](handleError(_0x5d1efc,null));};exports[_0xbfa9('0x25')]=function(_0x169b43,_0x30ac8e){return db[_0xbfa9('0x2c')][_0xbfa9('0x47')]({'where':{'id':_0x169b43['params']['id']}})[_0xbfa9('0x24')](handleEntityNotFound(_0x30ac8e,null))['then'](removeEntity(_0x30ac8e,null))['catch'](handleError(_0x30ac8e,null));};
\ No newline at end of file
+var _0xabfc=['create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0x4ec0f8,_0x59b1b4){var _0x1a2515=function(_0x40b452){while(--_0x40b452){_0x4ec0f8['push'](_0x4ec0f8['shift']());}};_0x1a2515(++_0x59b1b4);}(_0xabfc,0xf5));var _0xcabf=function(_0x2ac4af,_0x288c53){_0x2ac4af=_0x2ac4af-0x0;var _0x3a36df=_0xabfc[_0x2ac4af];return _0x3a36df;};'use strict';var emlformat=require(_0xcabf('0x0'));var rimraf=require(_0xcabf('0x1'));var zipdir=require(_0xcabf('0x2'));var jsonpatch=require(_0xcabf('0x3'));var rp=require(_0xcabf('0x4'));var moment=require(_0xcabf('0x5'));var BPromise=require(_0xcabf('0x6'));var Mustache=require(_0xcabf('0x7'));var util=require('util');var path=require(_0xcabf('0x8'));var sox=require(_0xcabf('0x9'));var csv=require(_0xcabf('0xa'));var ejs=require(_0xcabf('0xb'));var fs=require('fs');var fs_extra=require(_0xcabf('0xc'));var _=require('lodash');var squel=require(_0xcabf('0xd'));var crypto=require(_0xcabf('0xe'));var jsforce=require(_0xcabf('0xf'));var deskjs=require(_0xcabf('0x10'));var toCsv=require(_0xcabf('0xa'));var querystring=require(_0xcabf('0x11'));var Papa=require(_0xcabf('0x12'));var Redis=require('ioredis');var authService=require(_0xcabf('0x13'));var qs=require(_0xcabf('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcabf('0x15'));var logger=require(_0xcabf('0x16'))(_0xcabf('0x17'));var utils=require(_0xcabf('0x18'));var config=require(_0xcabf('0x19'));var licenseUtil=require(_0xcabf('0x1a'));var db=require(_0xcabf('0x1b'))['db'];function respondWithStatusCode(_0x37edf9,_0x3ad77f){_0x3ad77f=_0x3ad77f||0xcc;return function(_0x214651){if(_0x214651){return _0x37edf9['sendStatus'](_0x3ad77f);}return _0x37edf9[_0xcabf('0x1c')](_0x3ad77f)[_0xcabf('0x1d')]();};}function respondWithResult(_0x3555cb,_0x31b3ad){_0x31b3ad=_0x31b3ad||0xc8;return function(_0x126d60){if(_0x126d60){return _0x3555cb[_0xcabf('0x1c')](_0x31b3ad)[_0xcabf('0x1e')](_0x126d60);}};}function respondWithFilteredResult(_0x597f63,_0x1b5daf){return function(_0xf5debf){if(_0xf5debf){var _0x34649f=typeof _0x1b5daf[_0xcabf('0x1f')]===_0xcabf('0x20')&&typeof _0x1b5daf['limit']==='undefined';var _0x37f1a6=_0xf5debf['count'];var _0x47133a=_0x34649f?0x0:_0x1b5daf[_0xcabf('0x1f')];var _0x268533=_0x34649f?_0xf5debf[_0xcabf('0x21')]:_0x1b5daf[_0xcabf('0x1f')]+_0x1b5daf[_0xcabf('0x22')];var _0x1a7d81;if(_0x268533>=_0x37f1a6){_0x268533=_0x37f1a6;_0x1a7d81=0xc8;}else{_0x1a7d81=0xce;}_0x597f63[_0xcabf('0x1c')](_0x1a7d81);return _0x597f63[_0xcabf('0x23')](_0xcabf('0x24'),_0x47133a+'-'+_0x268533+'/'+_0x37f1a6)['json'](_0xf5debf);}return null;};}function patchUpdates(_0x58fcb7){return function(_0x4e559c){try{jsonpatch[_0xcabf('0x25')](_0x4e559c,_0x58fcb7,!![]);}catch(_0x4fc043){return BPromise[_0xcabf('0x26')](_0x4fc043);}return _0x4e559c[_0xcabf('0x27')]();};}function saveUpdates(_0x6766a5,_0x4d6452){return function(_0x320b31){if(_0x320b31){return _0x320b31[_0xcabf('0x28')](_0x6766a5)[_0xcabf('0x29')](function(_0xe07f97){return _0xe07f97;});}return null;};}function removeEntity(_0x3e1717,_0x25009f){return function(_0x40f306){if(_0x40f306){return _0x40f306[_0xcabf('0x2a')]()[_0xcabf('0x29')](function(){_0x3e1717[_0xcabf('0x1c')](0xcc)[_0xcabf('0x1d')]();});}};}function handleEntityNotFound(_0x113098,_0x3fe82e){return function(_0x52fb24){if(!_0x52fb24){_0x113098[_0xcabf('0x2b')](0x194);}return _0x52fb24;};}function handleError(_0x355b97,_0x11609c){_0x11609c=_0x11609c||0x1f4;return function(_0x80de55){logger[_0xcabf('0x2c')](_0x80de55[_0xcabf('0x2d')]);if(_0x80de55[_0xcabf('0x2e')]){delete _0x80de55[_0xcabf('0x2e')];}_0x355b97[_0xcabf('0x1c')](_0x11609c)[_0xcabf('0x2f')](_0x80de55);};}exports[_0xcabf('0x30')]=function(_0x2daaab,_0x567a34){var _0x1909db={},_0x27a0d5={},_0x3f3fd1={'count':0x0,'rows':[]};var _0x3cfcc3=_[_0xcabf('0x31')](db[_0xcabf('0x32')][_0xcabf('0x33')],function(_0x3103b5){return{'name':_0x3103b5[_0xcabf('0x34')],'type':_0x3103b5['type'][_0xcabf('0x35')]};});_0x27a0d5[_0xcabf('0x36')]=_[_0xcabf('0x31')](_0x3cfcc3,'name');_0x27a0d5[_0xcabf('0x37')]=_['keys'](_0x2daaab[_0xcabf('0x37')]);_0x27a0d5[_0xcabf('0x38')]=_[_0xcabf('0x39')](_0x27a0d5['model'],_0x27a0d5[_0xcabf('0x37')]);_0x1909db[_0xcabf('0x3a')]=_[_0xcabf('0x39')](_0x27a0d5[_0xcabf('0x36')],qs[_0xcabf('0x3b')](_0x2daaab[_0xcabf('0x37')][_0xcabf('0x3b')]));_0x1909db['attributes']=_0x1909db[_0xcabf('0x3a')]['length']?_0x1909db[_0xcabf('0x3a')]:_0x27a0d5[_0xcabf('0x36')];if(!_0x2daaab[_0xcabf('0x37')][_0xcabf('0x3c')](_0xcabf('0x3d'))){_0x1909db[_0xcabf('0x22')]=qs[_0xcabf('0x22')](_0x2daaab[_0xcabf('0x37')][_0xcabf('0x22')]);_0x1909db[_0xcabf('0x1f')]=qs[_0xcabf('0x1f')](_0x2daaab[_0xcabf('0x37')][_0xcabf('0x1f')]);}_0x1909db[_0xcabf('0x3e')]=qs[_0xcabf('0x3f')](_0x2daaab[_0xcabf('0x37')][_0xcabf('0x3f')]);_0x1909db['where']=qs[_0xcabf('0x38')](_[_0xcabf('0x40')](_0x2daaab['query'],_0x27a0d5[_0xcabf('0x38')]),_0x3cfcc3);if(_0x2daaab[_0xcabf('0x37')][_0xcabf('0x41')]){_0x1909db[_0xcabf('0x42')]=_[_0xcabf('0x43')](_0x1909db[_0xcabf('0x42')],{'$or':_[_0xcabf('0x31')](_0x3cfcc3,function(_0x2725a0){if(_0x2725a0[_0xcabf('0x44')]!=='VIRTUAL'){var _0x49e427={};_0x49e427[_0x2725a0[_0xcabf('0x2e')]]={'$like':'%'+_0x2daaab[_0xcabf('0x37')][_0xcabf('0x41')]+'%'};return _0x49e427;}})});}_0x1909db=_[_0xcabf('0x43')]({},_0x1909db,_0x2daaab[_0xcabf('0x45')]);var _0xd004a0={'where':_0x1909db['where']};return db[_0xcabf('0x32')][_0xcabf('0x21')](_0xd004a0)[_0xcabf('0x29')](function(_0xe79761){_0x3f3fd1[_0xcabf('0x21')]=_0xe79761;if(_0x2daaab[_0xcabf('0x37')][_0xcabf('0x46')]){_0x1909db[_0xcabf('0x47')]=[{'all':!![]}];}return db[_0xcabf('0x32')][_0xcabf('0x48')](_0x1909db);})['then'](function(_0x5ae932){_0x3f3fd1[_0xcabf('0x49')]=_0x5ae932;return _0x3f3fd1;})['then'](respondWithFilteredResult(_0x567a34,_0x1909db))[_0xcabf('0x4a')](handleError(_0x567a34,null));};exports[_0xcabf('0x4b')]=function(_0xed8fc3,_0x490706){var _0x3fc0ce={'raw':!![],'where':{'id':_0xed8fc3[_0xcabf('0x4c')]['id']}},_0xcef919={};_0xcef919['model']=_[_0xcabf('0x4d')](db['SalesforceField']['rawAttributes']);_0xcef919[_0xcabf('0x37')]=_['keys'](_0xed8fc3[_0xcabf('0x37')]);_0xcef919[_0xcabf('0x38')]=_['intersection'](_0xcef919[_0xcabf('0x36')],_0xcef919['query']);_0x3fc0ce[_0xcabf('0x3a')]=_[_0xcabf('0x39')](_0xcef919[_0xcabf('0x36')],qs[_0xcabf('0x3b')](_0xed8fc3[_0xcabf('0x37')]['fields']));_0x3fc0ce[_0xcabf('0x3a')]=_0x3fc0ce[_0xcabf('0x3a')]['length']?_0x3fc0ce[_0xcabf('0x3a')]:_0xcef919[_0xcabf('0x36')];if(_0xed8fc3[_0xcabf('0x37')][_0xcabf('0x46')]){_0x3fc0ce['include']=[{'all':!![]}];}_0x3fc0ce=_[_0xcabf('0x43')]({},_0x3fc0ce,_0xed8fc3['options']);return db[_0xcabf('0x32')][_0xcabf('0x4e')](_0x3fc0ce)[_0xcabf('0x29')](handleEntityNotFound(_0x490706,null))[_0xcabf('0x29')](respondWithResult(_0x490706,null))['catch'](handleError(_0x490706,null));};exports[_0xcabf('0x4f')]=function(_0x3e09e6,_0xef0748){return db[_0xcabf('0x32')]['create'](_0x3e09e6[_0xcabf('0x50')],{})[_0xcabf('0x29')](respondWithResult(_0xef0748,0xc9))[_0xcabf('0x4a')](handleError(_0xef0748,null));};exports[_0xcabf('0x28')]=function(_0x222b10,_0x4f0a2a){if(_0x222b10[_0xcabf('0x50')]['id']){delete _0x222b10[_0xcabf('0x50')]['id'];}return db[_0xcabf('0x32')]['find']({'where':{'id':_0x222b10[_0xcabf('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4f0a2a,null))[_0xcabf('0x29')](saveUpdates(_0x222b10[_0xcabf('0x50')],null))['then'](respondWithResult(_0x4f0a2a,null))[_0xcabf('0x4a')](handleError(_0x4f0a2a,null));};exports[_0xcabf('0x2a')]=function(_0x16f390,_0x514015){return db[_0xcabf('0x32')]['find']({'where':{'id':_0x16f390[_0xcabf('0x4c')]['id']}})[_0xcabf('0x29')](handleEntityNotFound(_0x514015,null))[_0xcabf('0x29')](removeEntity(_0x514015,null))[_0xcabf('0x4a')](handleError(_0x514015,null));};
\ No newline at end of file
index cbf4c49..cfd7eb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x041f=['idField','lodash','../../config/logger','moment','bluebird','request-promise','../../config/environment','./intSalesforceField.attributes','exports','int_salesforce_fields'];(function(_0x190c4e,_0x2d1463){var _0x576e83=function(_0x8fdfc8){while(--_0x8fdfc8){_0x190c4e['push'](_0x190c4e['shift']());}};_0x576e83(++_0x2d1463);}(_0x041f,0x1d7));var _0xf041=function(_0x28bec2,_0x48677c){_0x28bec2=_0x28bec2-0x0;var _0x3ea681=_0x041f[_0x28bec2];return _0x3ea681;};'use strict';var _=require(_0xf041('0x0'));var util=require('util');var logger=require(_0xf041('0x1'))('api');var moment=require(_0xf041('0x2'));var BPromise=require(_0xf041('0x3'));var rp=require(_0xf041('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf041('0x5'));var attributes=require(_0xf041('0x6'));module[_0xf041('0x7')]=function(_0x5c7dd2,_0x1d3a48){return _0x5c7dd2['define']('SalesforceField',attributes,{'tableName':_0xf041('0x8'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0xf041('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6fc6=['salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define'];(function(_0x10fe9e,_0x5514b4){var _0x29ef86=function(_0x10a3b5){while(--_0x10a3b5){_0x10fe9e['push'](_0x10fe9e['shift']());}};_0x29ef86(++_0x5514b4);}(_0x6fc6,0x1b5));var _0x66fc=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6fc6[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x66fc('0x0'));var util=require(_0x66fc('0x1'));var logger=require(_0x66fc('0x2'))('api');var moment=require(_0x66fc('0x3'));var BPromise=require(_0x66fc('0x4'));var rp=require(_0x66fc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x66fc('0x6'));var config=require(_0x66fc('0x7'));var attributes=require(_0x66fc('0x8'));module[_0x66fc('0x9')]=function(_0x279b50,_0x262d35){return _0x279b50[_0x66fc('0xa')]('SalesforceField',attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x66fc('0xb'),'fields':[_0x66fc('0xc'),_0x66fc('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0444c43..fbfac1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffd3=['request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x360730,_0x58a711){var _0x19212b=function(_0x29ae0d){while(--_0x29ae0d){_0x360730['push'](_0x360730['shift']());}};_0x19212b(++_0x58a711);}(_0xffd3,0x1d8));var _0x3ffd=function(_0x37898f,_0x5badca){_0x37898f=_0x37898f-0x0;var _0x260661=_0xffd3[_0x37898f];return _0x260661;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x3ffd('0x0'));var rs=require(_0x3ffd('0x1'));var fs=require('fs');var Redis=require(_0x3ffd('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3ffd('0x3'))(_0x3ffd('0x4'));var config=require(_0x3ffd('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x3ffd('0x6')][_0x3ffd('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x57b917,_0x2db19b,_0x1c19ca){return new BPromise(function(_0xf05811,_0x4d93b0){return client[_0x3ffd('0x8')](_0x57b917,_0x1c19ca)[_0x3ffd('0x9')](function(_0x18991f){logger[_0x3ffd('0xa')](_0x3ffd('0xb'),_0x2db19b,_0x3ffd('0xc'));logger[_0x3ffd('0xd')](_0x3ffd('0xe'),_0x2db19b,_0x3ffd('0xc'),JSON[_0x3ffd('0xf')](_0x18991f));if(_0x18991f[_0x3ffd('0x10')]){if(_0x18991f['error']['code']===0x1f4){logger[_0x3ffd('0x10')](_0x3ffd('0xb'),_0x2db19b,_0x18991f[_0x3ffd('0x10')][_0x3ffd('0x11')]);return _0x4d93b0(_0x18991f['error'][_0x3ffd('0x11')]);}logger['error'](_0x3ffd('0xb'),_0x2db19b,_0x18991f[_0x3ffd('0x10')]['message']);return _0xf05811(_0x18991f[_0x3ffd('0x10')][_0x3ffd('0x11')]);}else{logger[_0x3ffd('0xa')](_0x3ffd('0xb'),_0x2db19b,_0x3ffd('0xc'));_0xf05811(_0x18991f[_0x3ffd('0x12')][_0x3ffd('0x11')]);}})[_0x3ffd('0x13')](function(_0x5c6521){logger[_0x3ffd('0x10')](_0x3ffd('0xb'),_0x2db19b,_0x5c6521);_0x4d93b0(_0x5c6521);});});}
\ No newline at end of file
+var _0x17be=['../../config/environment','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x493d32,_0x2fd026){var _0x560f0a=function(_0x4cea64){while(--_0x4cea64){_0x493d32['push'](_0x493d32['shift']());}};_0x560f0a(++_0x2fd026);}(_0x17be,0xd0));var _0xe17b=function(_0x4ef0e5,_0x5e893e){_0x4ef0e5=_0x4ef0e5-0x0;var _0x1bd3da=_0x17be[_0x4ef0e5];return _0x1bd3da;};'use strict';var _=require(_0xe17b('0x0'));var util=require(_0xe17b('0x1'));var moment=require(_0xe17b('0x2'));var BPromise=require(_0xe17b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe17b('0x4'));var db=require(_0xe17b('0x5'))['db'];var utils=require(_0xe17b('0x6'));var logger=require('../../config/logger')(_0xe17b('0x7'));var config=require(_0xe17b('0x8'));var jayson=require(_0xe17b('0x9'));var client=jayson[_0xe17b('0xa')][_0xe17b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x275f2d,_0xc71858,_0x2a240b){return new BPromise(function(_0x2f4f32,_0x69c627){return client[_0xe17b('0xc')](_0x275f2d,_0x2a240b)[_0xe17b('0xd')](function(_0x1780e6){logger[_0xe17b('0xe')](_0xe17b('0xf'),_0xc71858,_0xe17b('0x10'));logger['debug'](_0xe17b('0x11'),_0xc71858,_0xe17b('0x10'),JSON[_0xe17b('0x12')](_0x1780e6));if(_0x1780e6['error']){if(_0x1780e6[_0xe17b('0x13')][_0xe17b('0x14')]===0x1f4){logger['error'](_0xe17b('0xf'),_0xc71858,_0x1780e6[_0xe17b('0x13')][_0xe17b('0x15')]);return _0x69c627(_0x1780e6[_0xe17b('0x13')][_0xe17b('0x15')]);}logger['error'](_0xe17b('0xf'),_0xc71858,_0x1780e6[_0xe17b('0x13')][_0xe17b('0x15')]);return _0x2f4f32(_0x1780e6['error'][_0xe17b('0x15')]);}else{logger[_0xe17b('0xe')](_0xe17b('0xf'),_0xc71858,_0xe17b('0x10'));_0x2f4f32(_0x1780e6[_0xe17b('0x16')]['message']);}})[_0xe17b('0x17')](function(_0x2ea87){logger[_0xe17b('0x13')](_0xe17b('0xf'),_0xc71858,_0x2ea87);_0x69c627(_0x2ea87);});});}
\ No newline at end of file
index 7645dac..4fcb9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10a7=['express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','get','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x4e94bf,_0x930532){var _0x530556=function(_0x203bde){while(--_0x203bde){_0x4e94bf['push'](_0x4e94bf['shift']());}};_0x530556(++_0x930532);}(_0x10a7,0xd4));var _0x710a=function(_0x5f4856,_0x4425c9){_0x5f4856=_0x5f4856-0x0;var _0x2f7232=_0x10a7[_0x5f4856];return _0x2f7232;};'use strict';var multer=require(_0x710a('0x0'));var util=require(_0x710a('0x1'));var path=require(_0x710a('0x2'));var timeout=require(_0x710a('0x3'));var express=require(_0x710a('0x4'));var router=express['Router']();var fs_extra=require(_0x710a('0x5'));var auth=require(_0x710a('0x6'));var interaction=require(_0x710a('0x7'));var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router['get']('/',auth[_0x710a('0x8')](),controller[_0x710a('0x9')]);router['get'](_0x710a('0xa'),auth['isAuthenticated'](),controller[_0x710a('0xb')]);router['get'](_0x710a('0xc'),auth[_0x710a('0x8')](),controller[_0x710a('0xd')]);router[_0x710a('0xe')](_0x710a('0xf'),auth[_0x710a('0x8')](),controller[_0x710a('0x10')]);router[_0x710a('0x11')]('/',auth[_0x710a('0x8')](),controller[_0x710a('0x12')]);router['post'](_0x710a('0xc'),auth['isAuthenticated'](),controller[_0x710a('0x13')]);router[_0x710a('0x14')](_0x710a('0xa'),auth['isAuthenticated'](),controller[_0x710a('0x15')]);router[_0x710a('0x16')](_0x710a('0xa'),auth[_0x710a('0x8')](),controller[_0x710a('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x5cc1=['./intServicenowAccount.controller','get','isAuthenticated','/:id/configurations','/:id/fields','create','post','addConfiguration','/:id','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5cc1,0xe4));var _0x15cc=function(_0x4e00e4,_0x435287){_0x4e00e4=_0x4e00e4-0x0;var _0x2a6ee2=_0x5cc1[_0x4e00e4];return _0x2a6ee2;};'use strict';var multer=require('multer');var util=require(_0x15cc('0x0'));var path=require(_0x15cc('0x1'));var timeout=require(_0x15cc('0x2'));var express=require(_0x15cc('0x3'));var router=express[_0x15cc('0x4')]();var fs_extra=require(_0x15cc('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x15cc('0x6'));router[_0x15cc('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x15cc('0x7')]('/:id',auth[_0x15cc('0x8')](),controller['show']);router['get'](_0x15cc('0x9'),auth[_0x15cc('0x8')](),controller['getConfigurations']);router[_0x15cc('0x7')](_0x15cc('0xa'),auth[_0x15cc('0x8')](),controller['getFields']);router['post']('/',auth[_0x15cc('0x8')](),controller[_0x15cc('0xb')]);router[_0x15cc('0xc')](_0x15cc('0x9'),auth[_0x15cc('0x8')](),controller[_0x15cc('0xd')]);router['put'](_0x15cc('0xe'),auth[_0x15cc('0x8')](),controller[_0x15cc('0xf')]);router[_0x15cc('0x10')](_0x15cc('0xe'),auth[_0x15cc('0x8')](),controller[_0x15cc('0x11')]);module['exports']=router;
\ No newline at end of file
index a58de28..4433571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9e1=['remoteUri','sequelize','exports','STRING','username'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc9e1,0xbf));var _0x1c9e=function(_0x17148f,_0x24dbca){_0x17148f=_0x17148f-0x0;var _0x580132=_0xc9e1[_0x17148f];return _0x580132;};'use strict';var Sequelize=require(_0x1c9e('0x0'));module[_0x1c9e('0x1')]={'name':{'type':Sequelize[_0x1c9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1c9e('0x2')],'unique':_0x1c9e('0x3')},'password':{'type':Sequelize[_0x1c9e('0x2')]},'email':{'type':Sequelize[_0x1c9e('0x2')]},'remoteUri':{'type':Sequelize[_0x1c9e('0x2')],'unique':_0x1c9e('0x4')},'serverUrl':{'type':Sequelize[_0x1c9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xd2ce=['username','sequelize','exports','STRING'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xd2ce,0x69));var _0xed2c=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xd2ce[_0x2cfb58];return _0xd99951;};'use strict';var Sequelize=require(_0xed2c('0x0'));module[_0xed2c('0x1')]={'name':{'type':Sequelize[_0xed2c('0x2')]},'description':{'type':Sequelize[_0xed2c('0x2')]},'username':{'type':Sequelize[_0xed2c('0x2')],'unique':_0xed2c('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xed2c('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xed2c('0x2')],'allowNull':![]}};
\ No newline at end of file
index 48dce49..1c8144c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c53=['../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','sendStatus','error','stack','send','index','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','name','filter','options','include','findAll','rows','catch','show','params','keys','ServicenowAccount','includeAll','find','create','body','update','findOne','ServicenowConfiguration','length','getConfigurations','Subjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','hold_reason','knowledge','notify','incident_state','severity','category','caused_by','watch_list','sys_updated_on','child_incidents','approval_history','sys_updated_by','opened_by','sys_created_on','sys_domain','calendar_stc','closed_at','cmdb_ci','active','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','subcategory','work_notes','short_description','close_code','correlation_display','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','follow_up','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','serverUrl','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','includes','forEach','internalType','label','push','all','assign','TCL:\x20_object','remove','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','statusCode','test','True','true','False','inactive','false','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x155d15,_0x10c260){var _0x540eed=function(_0xd14159){while(--_0xd14159){_0x155d15['push'](_0x155d15['shift']());}};_0x540eed(++_0x10c260);}(_0x5c53,0x161));var _0x35c5=function(_0x321b79,_0x4341cd){_0x321b79=_0x321b79-0x0;var _0x41acd1=_0x5c53[_0x321b79];return _0x41acd1;};'use strict';var emlformat=require(_0x35c5('0x0'));var rimraf=require(_0x35c5('0x1'));var zipdir=require(_0x35c5('0x2'));var jsonpatch=require(_0x35c5('0x3'));var rp=require(_0x35c5('0x4'));var moment=require(_0x35c5('0x5'));var BPromise=require(_0x35c5('0x6'));var Mustache=require(_0x35c5('0x7'));var util=require(_0x35c5('0x8'));var path=require(_0x35c5('0x9'));var sox=require(_0x35c5('0xa'));var csv=require(_0x35c5('0xb'));var ejs=require(_0x35c5('0xc'));var fs=require('fs');var fs_extra=require(_0x35c5('0xd'));var _=require('lodash');var squel=require(_0x35c5('0xe'));var crypto=require('crypto');var jsforce=require(_0x35c5('0xf'));var deskjs=require(_0x35c5('0x10'));var toCsv=require('to-csv');var querystring=require(_0x35c5('0x11'));var Papa=require(_0x35c5('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x35c5('0x13'));var as=require(_0x35c5('0x14'));var hardwareService=require(_0x35c5('0x15'));var logger=require(_0x35c5('0x16'))(_0x35c5('0x17'));var utils=require(_0x35c5('0x18'));var config=require(_0x35c5('0x19'));var licenseUtil=require(_0x35c5('0x1a'));var db=require(_0x35c5('0x1b'))['db'];var integrations=require(_0x35c5('0x1c'));function respondWithStatusCode(_0x590716,_0x203a1c){_0x203a1c=_0x203a1c||0xcc;return function(_0x363de0){if(_0x363de0){return _0x590716['sendStatus'](_0x203a1c);}return _0x590716[_0x35c5('0x1d')](_0x203a1c)[_0x35c5('0x1e')]();};}function respondWithResult(_0x1f3eae,_0x50d63a){_0x50d63a=_0x50d63a||0xc8;return function(_0x18d798){if(_0x18d798){return _0x1f3eae['status'](_0x50d63a)[_0x35c5('0x1f')](_0x18d798);}};}function respondWithFilteredResult(_0x5bccc0,_0x998d06){return function(_0x34e087){if(_0x34e087){var _0x1274e9=typeof _0x998d06[_0x35c5('0x20')]===_0x35c5('0x21')&&typeof _0x998d06[_0x35c5('0x22')]===_0x35c5('0x21');var _0x55ff57=_0x34e087[_0x35c5('0x23')];var _0x33ada9=_0x1274e9?0x0:_0x998d06[_0x35c5('0x20')];var _0x1d6c0f=_0x1274e9?_0x34e087[_0x35c5('0x23')]:_0x998d06[_0x35c5('0x20')]+_0x998d06[_0x35c5('0x22')];var _0x10348e;if(_0x1d6c0f>=_0x55ff57){_0x1d6c0f=_0x55ff57;_0x10348e=0xc8;}else{_0x10348e=0xce;}_0x5bccc0[_0x35c5('0x1d')](_0x10348e);return _0x5bccc0[_0x35c5('0x24')](_0x35c5('0x25'),_0x33ada9+'-'+_0x1d6c0f+'/'+_0x55ff57)['json'](_0x34e087);}return null;};}function patchUpdates(_0x264ffe){return function(_0x13ea33){try{jsonpatch['apply'](_0x13ea33,_0x264ffe,!![]);}catch(_0x543988){return BPromise[_0x35c5('0x26')](_0x543988);}return _0x13ea33[_0x35c5('0x27')]();};}function saveUpdates(_0x25976f,_0x7607d6){return function(_0x3096d5){if(_0x3096d5){return _0x3096d5['update'](_0x25976f)[_0x35c5('0x28')](function(_0x4e9569){return _0x4e9569;});}return null;};}function removeEntity(_0x3c48df,_0x150826){return function(_0xf645d){if(_0xf645d){return _0xf645d['destroy']()['then'](function(){_0x3c48df[_0x35c5('0x1d')](0xcc)[_0x35c5('0x1e')]();});}};}function handleEntityNotFound(_0x66e672,_0x178927){return function(_0x4a33c8){if(!_0x4a33c8){_0x66e672[_0x35c5('0x29')](0x194);}return _0x4a33c8;};}function handleError(_0x333018,_0x5e061a){_0x5e061a=_0x5e061a||0x1f4;return function(_0x474c04){logger[_0x35c5('0x2a')](_0x474c04[_0x35c5('0x2b')]);if(_0x474c04['name']){delete _0x474c04['name'];}_0x333018[_0x35c5('0x1d')](_0x5e061a)[_0x35c5('0x2c')](_0x474c04);};}exports[_0x35c5('0x2d')]=function(_0x4fd6aa,_0x11a613){var _0x1aae98={},_0x35d7d7={},_0x170431={'count':0x0,'rows':[]};var _0x175719=_['map'](db['ServicenowAccount'][_0x35c5('0x2e')],function(_0x257f9e){return{'name':_0x257f9e[_0x35c5('0x2f')],'type':_0x257f9e[_0x35c5('0x30')]['key']};});_0x35d7d7[_0x35c5('0x31')]=_[_0x35c5('0x32')](_0x175719,'name');_0x35d7d7[_0x35c5('0x33')]=_['keys'](_0x4fd6aa[_0x35c5('0x33')]);_0x35d7d7[_0x35c5('0x34')]=_[_0x35c5('0x35')](_0x35d7d7[_0x35c5('0x31')],_0x35d7d7[_0x35c5('0x33')]);_0x1aae98[_0x35c5('0x36')]=_['intersection'](_0x35d7d7[_0x35c5('0x31')],qs['fields'](_0x4fd6aa[_0x35c5('0x33')][_0x35c5('0x37')]));_0x1aae98[_0x35c5('0x36')]=_0x1aae98[_0x35c5('0x36')]['length']?_0x1aae98['attributes']:_0x35d7d7[_0x35c5('0x31')];if(!_0x4fd6aa[_0x35c5('0x33')][_0x35c5('0x38')](_0x35c5('0x39'))){_0x1aae98[_0x35c5('0x22')]=qs[_0x35c5('0x22')](_0x4fd6aa[_0x35c5('0x33')][_0x35c5('0x22')]);_0x1aae98[_0x35c5('0x20')]=qs[_0x35c5('0x20')](_0x4fd6aa[_0x35c5('0x33')][_0x35c5('0x20')]);}_0x1aae98[_0x35c5('0x3a')]=qs[_0x35c5('0x3b')](_0x4fd6aa[_0x35c5('0x33')][_0x35c5('0x3b')]);_0x1aae98[_0x35c5('0x3c')]=qs['filters'](_['pick'](_0x4fd6aa[_0x35c5('0x33')],_0x35d7d7[_0x35c5('0x34')]),_0x175719);if(_0x4fd6aa[_0x35c5('0x33')]['filter']){_0x1aae98[_0x35c5('0x3c')]=_[_0x35c5('0x3d')](_0x1aae98[_0x35c5('0x3c')],{'$or':_['map'](_0x175719,function(_0x225c4b){if(_0x225c4b[_0x35c5('0x30')]!==_0x35c5('0x3e')){var _0x4853bd={};_0x4853bd[_0x225c4b[_0x35c5('0x3f')]]={'$like':'%'+_0x4fd6aa['query'][_0x35c5('0x40')]+'%'};return _0x4853bd;}})});}_0x1aae98=_['merge']({},_0x1aae98,_0x4fd6aa[_0x35c5('0x41')]);var _0x445f50={'where':_0x1aae98[_0x35c5('0x3c')]};return db['ServicenowAccount'][_0x35c5('0x23')](_0x445f50)[_0x35c5('0x28')](function(_0x4721c1){_0x170431[_0x35c5('0x23')]=_0x4721c1;if(_0x4fd6aa[_0x35c5('0x33')]['includeAll']){_0x1aae98[_0x35c5('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x35c5('0x43')](_0x1aae98);})['then'](function(_0x159c0d){_0x170431[_0x35c5('0x44')]=_0x159c0d;return _0x170431;})[_0x35c5('0x28')](respondWithFilteredResult(_0x11a613,_0x1aae98))[_0x35c5('0x45')](handleError(_0x11a613,null));};exports[_0x35c5('0x46')]=function(_0x289bbb,_0x5137ba){var _0x1b29c0={'raw':![],'where':{'id':_0x289bbb[_0x35c5('0x47')]['id']}},_0x4744ea={};_0x4744ea[_0x35c5('0x31')]=_[_0x35c5('0x48')](db[_0x35c5('0x49')][_0x35c5('0x2e')]);_0x4744ea['query']=_[_0x35c5('0x48')](_0x289bbb[_0x35c5('0x33')]);_0x4744ea[_0x35c5('0x34')]=_['intersection'](_0x4744ea[_0x35c5('0x31')],_0x4744ea['query']);_0x1b29c0[_0x35c5('0x36')]=_[_0x35c5('0x35')](_0x4744ea[_0x35c5('0x31')],qs[_0x35c5('0x37')](_0x289bbb[_0x35c5('0x33')][_0x35c5('0x37')]));_0x1b29c0[_0x35c5('0x36')]=_0x1b29c0['attributes']['length']?_0x1b29c0[_0x35c5('0x36')]:_0x4744ea[_0x35c5('0x31')];if(_0x289bbb[_0x35c5('0x33')][_0x35c5('0x4a')]){_0x1b29c0[_0x35c5('0x42')]=[{'all':!![]}];}_0x1b29c0=_[_0x35c5('0x3d')]({},_0x1b29c0,_0x289bbb[_0x35c5('0x41')]);return db[_0x35c5('0x49')][_0x35c5('0x4b')](_0x1b29c0)[_0x35c5('0x28')](handleEntityNotFound(_0x5137ba,null))['then'](respondWithResult(_0x5137ba,null))[_0x35c5('0x45')](handleError(_0x5137ba,null));};exports[_0x35c5('0x4c')]=function(_0x449a6e,_0x2270bf){return db['ServicenowAccount'][_0x35c5('0x4c')](_0x449a6e[_0x35c5('0x4d')],{})[_0x35c5('0x28')](respondWithResult(_0x2270bf,0xc9))[_0x35c5('0x45')](handleError(_0x2270bf,null));};exports[_0x35c5('0x4e')]=function(_0x13c628,_0x2ee56b){if(_0x13c628[_0x35c5('0x4d')]['id']){delete _0x13c628['body']['id'];}return db['ServicenowAccount']['find']({'where':{'id':_0x13c628[_0x35c5('0x47')]['id']}})[_0x35c5('0x28')](handleEntityNotFound(_0x2ee56b,null))[_0x35c5('0x28')](saveUpdates(_0x13c628[_0x35c5('0x4d')],null))['then'](respondWithResult(_0x2ee56b,null))[_0x35c5('0x45')](handleError(_0x2ee56b,null));};exports['destroy']=function(_0x4c5519,_0x4ccb95){return db[_0x35c5('0x49')][_0x35c5('0x4b')]({'where':{'id':_0x4c5519[_0x35c5('0x47')]['id']}})[_0x35c5('0x28')](handleEntityNotFound(_0x4ccb95,null))[_0x35c5('0x28')](removeEntity(_0x4ccb95,null))[_0x35c5('0x45')](handleError(_0x4ccb95,null));};exports['getConfigurations']=function(_0x2d3f76,_0x97b2f7,_0x1a5343){var _0x1f4d64={};var _0xe903f2={};var _0x19ae78;var _0x3560af;return db[_0x35c5('0x49')][_0x35c5('0x4f')]({'where':{'id':_0x2d3f76[_0x35c5('0x47')]['id']}})['then'](handleEntityNotFound(_0x97b2f7,null))[_0x35c5('0x28')](function(_0x4e30ed){if(_0x4e30ed){_0x19ae78=_0x4e30ed;_0xe903f2[_0x35c5('0x31')]=_[_0x35c5('0x48')](db[_0x35c5('0x50')][_0x35c5('0x2e')]);_0xe903f2['query']=_['keys'](_0x2d3f76[_0x35c5('0x33')]);_0xe903f2['filters']=_[_0x35c5('0x35')](_0xe903f2[_0x35c5('0x31')],_0xe903f2[_0x35c5('0x33')]);_0x1f4d64[_0x35c5('0x36')]=_[_0x35c5('0x35')](_0xe903f2[_0x35c5('0x31')],qs[_0x35c5('0x37')](_0x2d3f76['query'][_0x35c5('0x37')]));_0x1f4d64[_0x35c5('0x36')]=_0x1f4d64[_0x35c5('0x36')][_0x35c5('0x51')]?_0x1f4d64[_0x35c5('0x36')]:_0xe903f2[_0x35c5('0x31')];_0x1f4d64[_0x35c5('0x3a')]=qs[_0x35c5('0x3b')](_0x2d3f76['query'][_0x35c5('0x3b')]);_0x1f4d64['where']=qs[_0x35c5('0x34')](_['pick'](_0x2d3f76[_0x35c5('0x33')],_0xe903f2['filters']));if(_0x2d3f76[_0x35c5('0x33')][_0x35c5('0x40')]){_0x1f4d64[_0x35c5('0x3c')]=_[_0x35c5('0x3d')](_0x1f4d64[_0x35c5('0x3c')],{'$or':_[_0x35c5('0x32')](_0x1f4d64['attributes'],function(_0x480347){var _0x53ddfa={};_0x53ddfa[_0x480347]={'$like':'%'+_0x2d3f76[_0x35c5('0x33')][_0x35c5('0x40')]+'%'};return _0x53ddfa;})});}_0x1f4d64=_[_0x35c5('0x3d')]({},_0x1f4d64,_0x2d3f76[_0x35c5('0x41')]);return _0x19ae78['getConfigurations'](_0x1f4d64);}})[_0x35c5('0x28')](function(_0x5a1c06){if(_0x5a1c06){_0x3560af=_0x5a1c06[_0x35c5('0x51')];if(!_0x2d3f76[_0x35c5('0x33')]['hasOwnProperty']('nolimit')){_0x1f4d64[_0x35c5('0x22')]=qs[_0x35c5('0x22')](_0x2d3f76[_0x35c5('0x33')][_0x35c5('0x22')]);_0x1f4d64[_0x35c5('0x20')]=qs[_0x35c5('0x20')](_0x2d3f76[_0x35c5('0x33')][_0x35c5('0x20')]);}return _0x19ae78[_0x35c5('0x52')](_0x1f4d64);}})['then'](function(_0x5222fb){if(_0x5222fb){return _0x5222fb?{'count':_0x3560af,'rows':_0x5222fb}:null;}})[_0x35c5('0x28')](respondWithResult(_0x97b2f7,null))[_0x35c5('0x45')](handleError(_0x97b2f7,null));};exports['addConfiguration']=function(_0x46cd92,_0x19607e,_0x2b5b3a){if(_0x46cd92[_0x35c5('0x4d')]['id']){delete _0x46cd92[_0x35c5('0x4d')]['id'];}return db[_0x35c5('0x49')][_0x35c5('0x4f')]({'where':{'id':_0x46cd92[_0x35c5('0x47')]['id']}})[_0x35c5('0x28')](handleEntityNotFound(_0x19607e,null))[_0x35c5('0x28')](function(_0x4ee61c){if(_0x4ee61c){_0x46cd92['body']['AccountId']=_0x4ee61c['id'];_0x46cd92[_0x35c5('0x4d')][_0x35c5('0x53')]=integrations['getSubjects'](_0x46cd92['body'][_0x35c5('0x54')],_0x46cd92[_0x35c5('0x4d')][_0x35c5('0x30')]);_0x46cd92[_0x35c5('0x4d')][_0x35c5('0x55')]=integrations[_0x35c5('0x56')](_0x46cd92[_0x35c5('0x4d')][_0x35c5('0x54')],_0x46cd92['body'][_0x35c5('0x30')]);return db['ServicenowConfiguration'][_0x35c5('0x4c')](_0x46cd92['body'],{'include':[{'model':db[_0x35c5('0x57')],'as':_0x35c5('0x53')},{'model':db[_0x35c5('0x57')],'as':_0x35c5('0x55')}]});}return null;})[_0x35c5('0x28')](respondWithResult(_0x19607e,null))[_0x35c5('0x45')](handleError(_0x19607e,null));};exports[_0x35c5('0x58')]=function(_0x2849d0,_0x5c576f,_0x5bbd30){var _0x43ebc2=[_0x35c5('0x59'),_0x35c5('0x5a'),_0x35c5('0x5b'),'subcategory','close_code',_0x35c5('0x5c'),_0x35c5('0x5d'),_0x35c5('0x5e'),_0x35c5('0x5f')];var _0x41ffbb=['parent',_0x35c5('0x59'),_0x35c5('0x60'),_0x35c5('0x61'),'upon_reject',_0x35c5('0x62'),_0x35c5('0x63'),_0x35c5('0x5a'),_0x35c5('0x64'),'number','resolved_by',_0x35c5('0x65'),_0x35c5('0x66'),'user_input',_0x35c5('0x67'),_0x35c5('0x68'),'state','sys_created_by',_0x35c5('0x5b'),_0x35c5('0x3a'),_0x35c5('0x69'),_0x35c5('0x6a'),_0x35c5('0x6b'),'delivery_plan','impact',_0x35c5('0x6c'),_0x35c5('0x6d'),_0x35c5('0x6e'),_0x35c5('0x6f'),_0x35c5('0x70'),_0x35c5('0x71'),_0x35c5('0x72'),_0x35c5('0x73'),_0x35c5('0x74'),_0x35c5('0x75'),_0x35c5('0x76'),_0x35c5('0x77'),_0x35c5('0x78'),_0x35c5('0x79'),_0x35c5('0x7a'),_0x35c5('0x7b'),_0x35c5('0x7c'),_0x35c5('0x7d'),_0x35c5('0x7e'),_0x35c5('0x7f'),_0x35c5('0x80'),'delivery_task',_0x35c5('0x81'),_0x35c5('0x82'),_0x35c5('0x83'),_0x35c5('0x84'),_0x35c5('0x85'),_0x35c5('0x86'),_0x35c5('0x5c'),_0x35c5('0x87'),_0x35c5('0x88'),'closed_by',_0x35c5('0x89'),'parent_incident','sys_id','contact_type','reopened_by',_0x35c5('0x5d'),_0x35c5('0x8a'),_0x35c5('0x8b'),_0x35c5('0x8c'),_0x35c5('0x8d'),_0x35c5('0x8e'),_0x35c5('0x8f'),_0x35c5('0x5e'),_0x35c5('0x90'),'sla_due',_0x35c5('0x91'),_0x35c5('0x92'),_0x35c5('0x93'),_0x35c5('0x94'),_0x35c5('0x95'),_0x35c5('0x96'),_0x35c5('0x97'),_0x35c5('0x98'),_0x35c5('0x99'),_0x35c5('0x9a'),_0x35c5('0x5f')];var _0xef9796='';var _0x53acee='';var _0x39b8bc=[];var _0x4a3b02='';var _0x295060='';var _0x2f32f0=[];var _0x8684c2='';var _0x3752df='';var _0xdd10b0={};var _0x557d3a='';return db[_0x35c5('0x49')]['findOne']({'where':{'id':_0x2849d0[_0x35c5('0x47')]['id']},'attributes':['id',_0x35c5('0x9b'),_0x35c5('0x9c'),_0x35c5('0x9d'),'remoteUri',_0x35c5('0x9e')]})[_0x35c5('0x28')](handleEntityNotFound(_0x5c576f,null))[_0x35c5('0x28')](function(_0x56b454){if(_0x56b454){_0x557d3a=_0x56b454[_0x35c5('0x9f')];var _0x3bee5c=_0x557d3a[_0x35c5('0xa0')](-0x1);if(_0x3bee5c==='/'){_0x557d3a=_0x557d3a[_0x35c5('0xa1')](0x0,_0x557d3a[_0x35c5('0xa2')](_0x3bee5c));}_0x3752df=util[_0x35c5('0xa3')](_0x35c5('0xa4'),_0x557d3a);_0x8684c2=util[_0x35c5('0xa3')](_0x35c5('0xa5'),_0x557d3a);_0xdd10b0={'user':_0x56b454['username'],'pass':_0x56b454[_0x35c5('0x9c')]};var _0x57743d={'method':_0x35c5('0xa6'),'uri':_0x3752df+_0x35c5('0xa7'),'auth':_0xdd10b0,'json':!![]};return rp(_0x57743d);}})['then'](function(_0x21a945){if(_0x21a945[_0x35c5('0xa8')][_0x35c5('0x51')]>0x0){_0xef9796=_0x21a945[_0x35c5('0xa8')];}console[_0x35c5('0xa9')]('incident\x20table\x20objects',_0xef9796);_0x2f32f0=[];_0x53acee=Object['assign']([],_0xef9796);_['remove'](_0x53acee,function(_0x15b725){return!_0x43ebc2[_0x35c5('0xaa')](_0x15b725[_0x35c5('0x3f')]);});_0x53acee[_0x35c5('0xab')](function(_0x3b2676){var _0x2df4f0=createFieldObject(_0x8684c2,_0xdd10b0,_0x3b2676[_0x35c5('0xac')],_0x3b2676[_0x35c5('0x3f')],_0x3b2676[_0x35c5('0xad')],![]);_0x2f32f0[_0x35c5('0xae')](_0x2df4f0);});return Promise[_0x35c5('0xaf')](_0x2f32f0);})[_0x35c5('0x28')](function(_0x52e4db){_0x39b8bc=_0x52e4db;_0x4a3b02=Object[_0x35c5('0xb0')]([],_0xef9796);console['log'](_0x35c5('0xb1'),_0xef9796);_[_0x35c5('0xb2')](_0x4a3b02,function(_0xb5f5fe){return _0x41ffbb[_0x35c5('0xaa')](_0xb5f5fe[_0x35c5('0x3f')]);});console[_0x35c5('0xa9')](_0x35c5('0xb3'),_0x4a3b02);_0x2f32f0=[];_0x4a3b02[_0x35c5('0xab')](function(_0xfc5701){var _0x5d5fb9=createFieldObject(_0x8684c2,_0xdd10b0,_0xfc5701[_0x35c5('0xac')],_0xfc5701['name'],_0xfc5701['label'],!![]);_0x2f32f0[_0x35c5('0xae')](_0x5d5fb9);});return Promise[_0x35c5('0xaf')](_0x2f32f0);})[_0x35c5('0x28')](function(_0x567f00){_0x295060=_0x567f00;var _0x1e4173=_0x39b8bc[_0x35c5('0xb4')](_0x295060);return{'count':_0x1e4173['length'],'rows':_0x1e4173};})[_0x35c5('0x28')](respondWithResult(_0x5c576f,null))[_0x35c5('0x45')](function(_0x3a5941){console[_0x35c5('0xa9')](_0x35c5('0xb5')+_0x3a5941);var _0x915aa1=_0x2849d0['query']['test']?0x1f4:_0x3a5941[_0x35c5('0xb6')]||0x1f4;logger[_0x35c5('0x2a')](_0x3a5941[_0x35c5('0x2b')]);delete _0x3a5941['name'];if(_0x915aa1===0x191){_0x915aa1=0x190;}_0x5c576f['status'](_0x915aa1)[_0x35c5('0x2c')](_0x2849d0[_0x35c5('0x33')][_0x35c5('0xb7')]?{'message':'Wrong\x20credentials','statusCode':_0x3a5941[_0x35c5('0xb6')]}:_0x3a5941);});};function createFieldObject(_0xf5ef2a,_0x1d8890,_0x321f73,_0x4ff2a0,_0x4ed367,_0x412a99){return new Promise(function(_0x58796d,_0x59f859){var _0x4b30bc={'id':_0x4ff2a0,'name':_0x4ed367,'custom':_0x412a99};if(_0x321f73==='boolean'){_0x4b30bc[_0x35c5('0x41')]=[{'name':_0x35c5('0xb8'),'value':_0x35c5('0xb9')},{'name':_0x35c5('0xba'),'value':'false'}];_0x58796d(_0x4b30bc);}else{var _0x155475={'method':_0x35c5('0xa6'),'uri':_0xf5ef2a+'sys_choice?sysparm_query=name=incident^element='+_0x4ff2a0,'auth':_0x1d8890,'json':!![]};return rp(_0x155475)[_0x35c5('0x28')](function(_0x50c9cc){var _0x518738=[];if(_0x50c9cc[_0x35c5('0xa8')][_0x35c5('0x51')]>0x0){_0x50c9cc[_0x35c5('0xa8')][_0x35c5('0xab')](function(_0x68568f){if(_0x68568f[_0x35c5('0xbb')]===_0x35c5('0xbc')){var _0x129f64={'name':_0x68568f[_0x35c5('0xad')],'value':_0x68568f[_0x35c5('0xbd')]};_0x518738[_0x35c5('0xae')](_0x129f64);}});}_0x4b30bc[_0x35c5('0x41')]=_0x518738;if(_0x4b30bc[_0x35c5('0x41')][_0x35c5('0x51')]>0x0){_0x58796d(_0x4b30bc);}else{if(_0x412a99==![]){_0x58796d();}else{_0x58796d(_0x4b30bc);}}});}});}
\ No newline at end of file
+var _0x176a=['catch','show','length','find','body','update','params','getConfigurations','findOne','ServicenowConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','type','Descriptions','getDescriptions','create','ServicenowField','Subjects','made_sla','hold_reason','knowledge','notify','incident_state','category','parent','caused_by','watch_list','upon_reject','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','closed_at','cmdb_ci','impact','active','business_service','priority','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','subcategory','work_notes','short_description','close_code','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','urgency','problem_id','reassignment_count','activity_due','assigned_to','severity','comments','sla_due','approval','comments_and_work_notes','sys_tags','upon_approval','location','username','password','remoteUri','serverUrl','slice','lastIndexOf','%s/api/now/doc/table/schema/','format','GET','result','log','assign','remove','internalType','label','push','all','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','statusCode','boolean','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','ServicenowAccount','rawAttributes','fieldName','key','model','map','query','keys','intersection','fields','attributes','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll'];(function(_0x8da290,_0x325818){var _0x195667=function(_0x5f37bd){while(--_0x5f37bd){_0x8da290['push'](_0x8da290['shift']());}};_0x195667(++_0x325818);}(_0x176a,0x134));var _0xa176=function(_0x3c715a,_0x632b85){_0x3c715a=_0x3c715a-0x0;var _0x5737a3=_0x176a[_0x3c715a];return _0x5737a3;};'use strict';var emlformat=require(_0xa176('0x0'));var rimraf=require(_0xa176('0x1'));var zipdir=require(_0xa176('0x2'));var jsonpatch=require(_0xa176('0x3'));var rp=require(_0xa176('0x4'));var moment=require(_0xa176('0x5'));var BPromise=require(_0xa176('0x6'));var Mustache=require(_0xa176('0x7'));var util=require(_0xa176('0x8'));var path=require(_0xa176('0x9'));var sox=require(_0xa176('0xa'));var csv=require(_0xa176('0xb'));var ejs=require(_0xa176('0xc'));var fs=require('fs');var fs_extra=require(_0xa176('0xd'));var _=require(_0xa176('0xe'));var squel=require(_0xa176('0xf'));var crypto=require('crypto');var jsforce=require(_0xa176('0x10'));var deskjs=require(_0xa176('0x11'));var toCsv=require(_0xa176('0xb'));var querystring=require(_0xa176('0x12'));var Papa=require(_0xa176('0x13'));var Redis=require('ioredis');var authService=require(_0xa176('0x14'));var qs=require(_0xa176('0x15'));var as=require(_0xa176('0x16'));var hardwareService=require(_0xa176('0x17'));var logger=require('../../config/logger')('api');var utils=require(_0xa176('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xa176('0x19'));var db=require(_0xa176('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2a443b,_0x3d582d){_0x3d582d=_0x3d582d||0xcc;return function(_0x361f0b){if(_0x361f0b){return _0x2a443b['sendStatus'](_0x3d582d);}return _0x2a443b[_0xa176('0x1b')](_0x3d582d)[_0xa176('0x1c')]();};}function respondWithResult(_0x4c5219,_0x33b265){_0x33b265=_0x33b265||0xc8;return function(_0x44f810){if(_0x44f810){return _0x4c5219[_0xa176('0x1b')](_0x33b265)['json'](_0x44f810);}};}function respondWithFilteredResult(_0x431167,_0x58b7a9){return function(_0x1ab61f){if(_0x1ab61f){var _0x273df8=typeof _0x58b7a9[_0xa176('0x1d')]===_0xa176('0x1e')&&typeof _0x58b7a9['limit']===_0xa176('0x1e');var _0x11e0e0=_0x1ab61f[_0xa176('0x1f')];var _0x1ff1af=_0x273df8?0x0:_0x58b7a9[_0xa176('0x1d')];var _0x873cba=_0x273df8?_0x1ab61f[_0xa176('0x1f')]:_0x58b7a9[_0xa176('0x1d')]+_0x58b7a9['limit'];var _0x43dca6;if(_0x873cba>=_0x11e0e0){_0x873cba=_0x11e0e0;_0x43dca6=0xc8;}else{_0x43dca6=0xce;}_0x431167['status'](_0x43dca6);return _0x431167[_0xa176('0x20')](_0xa176('0x21'),_0x1ff1af+'-'+_0x873cba+'/'+_0x11e0e0)['json'](_0x1ab61f);}return null;};}function patchUpdates(_0x5f0c85){return function(_0x19b29b){try{jsonpatch[_0xa176('0x22')](_0x19b29b,_0x5f0c85,!![]);}catch(_0x133faf){return BPromise[_0xa176('0x23')](_0x133faf);}return _0x19b29b[_0xa176('0x24')]();};}function saveUpdates(_0x4e8502,_0x3b8e60){return function(_0x8b8f53){if(_0x8b8f53){return _0x8b8f53['update'](_0x4e8502)[_0xa176('0x25')](function(_0x50826c){return _0x50826c;});}return null;};}function removeEntity(_0x3cbc6f,_0x37a223){return function(_0x58220a){if(_0x58220a){return _0x58220a[_0xa176('0x26')]()[_0xa176('0x25')](function(){_0x3cbc6f[_0xa176('0x1b')](0xcc)[_0xa176('0x1c')]();});}};}function handleEntityNotFound(_0x484f97,_0x455391){return function(_0x59077b){if(!_0x59077b){_0x484f97['sendStatus'](0x194);}return _0x59077b;};}function handleError(_0x6ff936,_0x746a76){_0x746a76=_0x746a76||0x1f4;return function(_0x122124){logger['error'](_0x122124[_0xa176('0x27')]);if(_0x122124[_0xa176('0x28')]){delete _0x122124['name'];}_0x6ff936[_0xa176('0x1b')](_0x746a76)[_0xa176('0x29')](_0x122124);};}exports[_0xa176('0x2a')]=function(_0xbb4878,_0x40891b){var _0x512494={},_0x293c70={},_0xc09b7={'count':0x0,'rows':[]};var _0x24e96f=_['map'](db[_0xa176('0x2b')][_0xa176('0x2c')],function(_0x5b92eb){return{'name':_0x5b92eb[_0xa176('0x2d')],'type':_0x5b92eb['type'][_0xa176('0x2e')]};});_0x293c70[_0xa176('0x2f')]=_[_0xa176('0x30')](_0x24e96f,'name');_0x293c70[_0xa176('0x31')]=_[_0xa176('0x32')](_0xbb4878['query']);_0x293c70['filters']=_[_0xa176('0x33')](_0x293c70['model'],_0x293c70[_0xa176('0x31')]);_0x512494['attributes']=_[_0xa176('0x33')](_0x293c70[_0xa176('0x2f')],qs['fields'](_0xbb4878[_0xa176('0x31')][_0xa176('0x34')]));_0x512494[_0xa176('0x35')]=_0x512494[_0xa176('0x35')]['length']?_0x512494[_0xa176('0x35')]:_0x293c70[_0xa176('0x2f')];if(!_0xbb4878[_0xa176('0x31')]['hasOwnProperty'](_0xa176('0x36'))){_0x512494['limit']=qs[_0xa176('0x37')](_0xbb4878['query'][_0xa176('0x37')]);_0x512494['offset']=qs[_0xa176('0x1d')](_0xbb4878['query'][_0xa176('0x1d')]);}_0x512494[_0xa176('0x38')]=qs[_0xa176('0x39')](_0xbb4878['query']['sort']);_0x512494[_0xa176('0x3a')]=qs[_0xa176('0x3b')](_[_0xa176('0x3c')](_0xbb4878[_0xa176('0x31')],_0x293c70[_0xa176('0x3b')]),_0x24e96f);if(_0xbb4878['query'][_0xa176('0x3d')]){_0x512494[_0xa176('0x3a')]=_['merge'](_0x512494[_0xa176('0x3a')],{'$or':_[_0xa176('0x30')](_0x24e96f,function(_0x62974c){if(_0x62974c['type']!==_0xa176('0x3e')){var _0x1416c6={};_0x1416c6[_0x62974c[_0xa176('0x28')]]={'$like':'%'+_0xbb4878['query']['filter']+'%'};return _0x1416c6;}})});}_0x512494=_[_0xa176('0x3f')]({},_0x512494,_0xbb4878[_0xa176('0x40')]);var _0x3d30d1={'where':_0x512494['where']};return db[_0xa176('0x2b')]['count'](_0x3d30d1)['then'](function(_0x89b88c){_0xc09b7[_0xa176('0x1f')]=_0x89b88c;if(_0xbb4878['query'][_0xa176('0x41')]){_0x512494[_0xa176('0x42')]=[{'all':!![]}];}return db[_0xa176('0x2b')][_0xa176('0x43')](_0x512494);})[_0xa176('0x25')](function(_0x4cd947){_0xc09b7['rows']=_0x4cd947;return _0xc09b7;})[_0xa176('0x25')](respondWithFilteredResult(_0x40891b,_0x512494))[_0xa176('0x44')](handleError(_0x40891b,null));};exports[_0xa176('0x45')]=function(_0x504d16,_0x134148){var _0x1e5e80={'raw':![],'where':{'id':_0x504d16['params']['id']}},_0x265927={};_0x265927[_0xa176('0x2f')]=_[_0xa176('0x32')](db[_0xa176('0x2b')][_0xa176('0x2c')]);_0x265927[_0xa176('0x31')]=_[_0xa176('0x32')](_0x504d16[_0xa176('0x31')]);_0x265927[_0xa176('0x3b')]=_[_0xa176('0x33')](_0x265927[_0xa176('0x2f')],_0x265927['query']);_0x1e5e80[_0xa176('0x35')]=_[_0xa176('0x33')](_0x265927[_0xa176('0x2f')],qs[_0xa176('0x34')](_0x504d16[_0xa176('0x31')][_0xa176('0x34')]));_0x1e5e80[_0xa176('0x35')]=_0x1e5e80['attributes'][_0xa176('0x46')]?_0x1e5e80[_0xa176('0x35')]:_0x265927[_0xa176('0x2f')];if(_0x504d16[_0xa176('0x31')][_0xa176('0x41')]){_0x1e5e80[_0xa176('0x42')]=[{'all':!![]}];}_0x1e5e80=_[_0xa176('0x3f')]({},_0x1e5e80,_0x504d16[_0xa176('0x40')]);return db['ServicenowAccount'][_0xa176('0x47')](_0x1e5e80)[_0xa176('0x25')](handleEntityNotFound(_0x134148,null))[_0xa176('0x25')](respondWithResult(_0x134148,null))[_0xa176('0x44')](handleError(_0x134148,null));};exports['create']=function(_0x4200e4,_0x2d52f5){return db['ServicenowAccount']['create'](_0x4200e4[_0xa176('0x48')],{})[_0xa176('0x25')](respondWithResult(_0x2d52f5,0xc9))[_0xa176('0x44')](handleError(_0x2d52f5,null));};exports[_0xa176('0x49')]=function(_0x30211e,_0x58eed8){if(_0x30211e['body']['id']){delete _0x30211e[_0xa176('0x48')]['id'];}return db['ServicenowAccount']['find']({'where':{'id':_0x30211e['params']['id']}})[_0xa176('0x25')](handleEntityNotFound(_0x58eed8,null))[_0xa176('0x25')](saveUpdates(_0x30211e['body'],null))['then'](respondWithResult(_0x58eed8,null))[_0xa176('0x44')](handleError(_0x58eed8,null));};exports[_0xa176('0x26')]=function(_0x13deac,_0x2be3e3){return db[_0xa176('0x2b')][_0xa176('0x47')]({'where':{'id':_0x13deac[_0xa176('0x4a')]['id']}})[_0xa176('0x25')](handleEntityNotFound(_0x2be3e3,null))['then'](removeEntity(_0x2be3e3,null))[_0xa176('0x44')](handleError(_0x2be3e3,null));};exports[_0xa176('0x4b')]=function(_0x1e41f6,_0x21ba77,_0x48af4f){var _0x294e33={};var _0x1e7b70={};var _0x4a9853;var _0x3bbe3b;return db['ServicenowAccount'][_0xa176('0x4c')]({'where':{'id':_0x1e41f6[_0xa176('0x4a')]['id']}})['then'](handleEntityNotFound(_0x21ba77,null))['then'](function(_0x1a558e){if(_0x1a558e){_0x4a9853=_0x1a558e;_0x1e7b70['model']=_[_0xa176('0x32')](db[_0xa176('0x4d')][_0xa176('0x2c')]);_0x1e7b70['query']=_['keys'](_0x1e41f6[_0xa176('0x31')]);_0x1e7b70[_0xa176('0x3b')]=_[_0xa176('0x33')](_0x1e7b70[_0xa176('0x2f')],_0x1e7b70[_0xa176('0x31')]);_0x294e33['attributes']=_[_0xa176('0x33')](_0x1e7b70[_0xa176('0x2f')],qs[_0xa176('0x34')](_0x1e41f6['query'][_0xa176('0x34')]));_0x294e33[_0xa176('0x35')]=_0x294e33['attributes'][_0xa176('0x46')]?_0x294e33[_0xa176('0x35')]:_0x1e7b70[_0xa176('0x2f')];_0x294e33['order']=qs['sort'](_0x1e41f6[_0xa176('0x31')][_0xa176('0x39')]);_0x294e33[_0xa176('0x3a')]=qs[_0xa176('0x3b')](_[_0xa176('0x3c')](_0x1e41f6['query'],_0x1e7b70[_0xa176('0x3b')]));if(_0x1e41f6[_0xa176('0x31')][_0xa176('0x3d')]){_0x294e33[_0xa176('0x3a')]=_[_0xa176('0x3f')](_0x294e33['where'],{'$or':_[_0xa176('0x30')](_0x294e33['attributes'],function(_0x4dd1c9){var _0x22c31c={};_0x22c31c[_0x4dd1c9]={'$like':'%'+_0x1e41f6['query'][_0xa176('0x3d')]+'%'};return _0x22c31c;})});}_0x294e33=_[_0xa176('0x3f')]({},_0x294e33,_0x1e41f6[_0xa176('0x40')]);return _0x4a9853['getConfigurations'](_0x294e33);}})[_0xa176('0x25')](function(_0x2674b2){if(_0x2674b2){_0x3bbe3b=_0x2674b2[_0xa176('0x46')];if(!_0x1e41f6['query'][_0xa176('0x4e')](_0xa176('0x36'))){_0x294e33[_0xa176('0x37')]=qs[_0xa176('0x37')](_0x1e41f6[_0xa176('0x31')][_0xa176('0x37')]);_0x294e33[_0xa176('0x1d')]=qs['offset'](_0x1e41f6[_0xa176('0x31')]['offset']);}return _0x4a9853[_0xa176('0x4b')](_0x294e33);}})[_0xa176('0x25')](function(_0x139a31){if(_0x139a31){return _0x139a31?{'count':_0x3bbe3b,'rows':_0x139a31}:null;}})['then'](respondWithResult(_0x21ba77,null))[_0xa176('0x44')](handleError(_0x21ba77,null));};exports[_0xa176('0x4f')]=function(_0x348a21,_0x455425,_0x5e3094){if(_0x348a21[_0xa176('0x48')]['id']){delete _0x348a21[_0xa176('0x48')]['id'];}return db[_0xa176('0x2b')][_0xa176('0x4c')]({'where':{'id':_0x348a21['params']['id']}})[_0xa176('0x25')](handleEntityNotFound(_0x455425,null))[_0xa176('0x25')](function(_0x1d597d){if(_0x1d597d){_0x348a21[_0xa176('0x48')][_0xa176('0x50')]=_0x1d597d['id'];_0x348a21[_0xa176('0x48')]['Subjects']=integrations[_0xa176('0x51')](_0x348a21[_0xa176('0x48')][_0xa176('0x52')],_0x348a21[_0xa176('0x48')][_0xa176('0x53')]);_0x348a21['body'][_0xa176('0x54')]=integrations[_0xa176('0x55')](_0x348a21['body']['channel'],_0x348a21[_0xa176('0x48')][_0xa176('0x53')]);return db[_0xa176('0x4d')][_0xa176('0x56')](_0x348a21[_0xa176('0x48')],{'include':[{'model':db[_0xa176('0x57')],'as':_0xa176('0x58')},{'model':db['ServicenowField'],'as':_0xa176('0x54')}]});}return null;})[_0xa176('0x25')](respondWithResult(_0x455425,null))[_0xa176('0x44')](handleError(_0x455425,null));};exports['getFields']=function(_0x5909d7,_0x44fd38,_0x426d94){var _0x1f63d0=[_0xa176('0x59'),_0xa176('0x5a'),_0xa176('0x5b'),'subcategory','close_code',_0xa176('0x5c'),_0xa176('0x5d'),'severity',_0xa176('0x5e')];var _0x37daba=[_0xa176('0x5f'),'made_sla',_0xa176('0x60'),_0xa176('0x61'),_0xa176('0x62'),'sys_updated_on',_0xa176('0x63'),_0xa176('0x5a'),_0xa176('0x64'),_0xa176('0x65'),_0xa176('0x66'),_0xa176('0x67'),_0xa176('0x68'),_0xa176('0x69'),_0xa176('0x6a'),'sys_domain',_0xa176('0x6b'),_0xa176('0x6c'),_0xa176('0x5b'),'order','calendar_stc',_0xa176('0x6d'),_0xa176('0x6e'),'delivery_plan',_0xa176('0x6f'),_0xa176('0x70'),'work_notes_list',_0xa176('0x71'),_0xa176('0x72'),'sys_domain_path','rfc',_0xa176('0x73'),_0xa176('0x74'),_0xa176('0x75'),_0xa176('0x76'),_0xa176('0x77'),_0xa176('0x78'),_0xa176('0x79'),_0xa176('0x7a'),_0xa176('0x7b'),_0xa176('0x7c'),_0xa176('0x7d'),_0xa176('0x7e'),_0xa176('0x7f'),_0xa176('0x80'),_0xa176('0x81'),_0xa176('0x82'),_0xa176('0x83'),_0xa176('0x84'),_0xa176('0x85'),_0xa176('0x86'),'description',_0xa176('0x87'),_0xa176('0x5c'),_0xa176('0x88'),_0xa176('0x89'),_0xa176('0x8a'),_0xa176('0x8b'),_0xa176('0x8c'),'sys_id',_0xa176('0x8d'),_0xa176('0x8e'),_0xa176('0x5d'),_0xa176('0x8f'),_0xa176('0x90'),'company',_0xa176('0x91'),_0xa176('0x92'),_0xa176('0x93'),_0xa176('0x94'),_0xa176('0x95'),_0xa176('0x96'),_0xa176('0x97'),_0xa176('0x98'),'due_date','sys_mod_count','reopen_count',_0xa176('0x99'),'escalation',_0xa176('0x9a'),'correlation_id',_0xa176('0x9b'),_0xa176('0x5e')];var _0x2480b2='';var _0x11be3c='';var _0x4339ec=[];var _0x1d0132='';var _0x1acdcc='';var _0x617a6c=[];var _0x4cd54c='';var _0x48a219='';var _0x4b6ee9={};var _0x56e7b7='';return db[_0xa176('0x2b')][_0xa176('0x4c')]({'where':{'id':_0x5909d7[_0xa176('0x4a')]['id']},'attributes':['id',_0xa176('0x9c'),_0xa176('0x9d'),'email',_0xa176('0x9e'),_0xa176('0x9f')]})[_0xa176('0x25')](handleEntityNotFound(_0x44fd38,null))[_0xa176('0x25')](function(_0x5a1fba){if(_0x5a1fba){_0x56e7b7=_0x5a1fba[_0xa176('0x9e')];var _0x44f543=_0x56e7b7[_0xa176('0xa0')](-0x1);if(_0x44f543==='/'){_0x56e7b7=_0x56e7b7['substring'](0x0,_0x56e7b7[_0xa176('0xa1')](_0x44f543));}_0x48a219=util['format'](_0xa176('0xa2'),_0x56e7b7);_0x4cd54c=util[_0xa176('0xa3')]('%s/api/now/table/',_0x56e7b7);_0x4b6ee9={'user':_0x5a1fba[_0xa176('0x9c')],'pass':_0x5a1fba[_0xa176('0x9d')]};var _0x244c81={'method':_0xa176('0xa4'),'uri':_0x48a219+'incident?sysparm_display_value=all','auth':_0x4b6ee9,'json':!![]};return rp(_0x244c81);}})[_0xa176('0x25')](function(_0x3a2fe1){if(_0x3a2fe1[_0xa176('0xa5')]['length']>0x0){_0x2480b2=_0x3a2fe1[_0xa176('0xa5')];}console[_0xa176('0xa6')]('incident\x20table\x20objects',_0x2480b2);_0x617a6c=[];_0x11be3c=Object[_0xa176('0xa7')]([],_0x2480b2);_[_0xa176('0xa8')](_0x11be3c,function(_0x53cdb6){return!_0x1f63d0['includes'](_0x53cdb6[_0xa176('0x28')]);});_0x11be3c['forEach'](function(_0x3b80bb){var _0x31c96a=createFieldObject(_0x4cd54c,_0x4b6ee9,_0x3b80bb[_0xa176('0xa9')],_0x3b80bb[_0xa176('0x28')],_0x3b80bb[_0xa176('0xaa')],![]);_0x617a6c[_0xa176('0xab')](_0x31c96a);});return Promise[_0xa176('0xac')](_0x617a6c);})['then'](function(_0x10d174){_0x4339ec=_0x10d174;_0x1d0132=Object['assign']([],_0x2480b2);console[_0xa176('0xa6')]('TCL:\x20_object',_0x2480b2);_[_0xa176('0xa8')](_0x1d0132,function(_0x1fce20){return _0x37daba[_0xa176('0xad')](_0x1fce20[_0xa176('0x28')]);});console[_0xa176('0xa6')](_0xa176('0xae'),_0x1d0132);_0x617a6c=[];_0x1d0132[_0xa176('0xaf')](function(_0x40999e){var _0x135527=createFieldObject(_0x4cd54c,_0x4b6ee9,_0x40999e[_0xa176('0xa9')],_0x40999e[_0xa176('0x28')],_0x40999e[_0xa176('0xaa')],!![]);_0x617a6c[_0xa176('0xab')](_0x135527);});return Promise['all'](_0x617a6c);})['then'](function(_0x40fafb){_0x1acdcc=_0x40fafb;var _0x99c7d3=_0x4339ec[_0xa176('0xb0')](_0x1acdcc);return{'count':_0x99c7d3[_0xa176('0x46')],'rows':_0x99c7d3};})['then'](respondWithResult(_0x44fd38,null))['catch'](function(_0x3a952a){console[_0xa176('0xa6')](_0xa176('0xb1')+_0x3a952a);var _0x2111cf=_0x5909d7[_0xa176('0x31')][_0xa176('0xb2')]?0x1f4:_0x3a952a['statusCode']||0x1f4;logger['error'](_0x3a952a[_0xa176('0x27')]);delete _0x3a952a['name'];if(_0x2111cf===0x191){_0x2111cf=0x190;}_0x44fd38[_0xa176('0x1b')](_0x2111cf)[_0xa176('0x29')](_0x5909d7[_0xa176('0x31')][_0xa176('0xb2')]?{'message':_0xa176('0xb3'),'statusCode':_0x3a952a[_0xa176('0xb4')]}:_0x3a952a);});};function createFieldObject(_0x435c9d,_0x6642d2,_0xe29a64,_0x5db596,_0xb884ba,_0x31958e){return new Promise(function(_0x50fbc9,_0x47a98d){var _0x2e6fb5={'id':_0x5db596,'name':_0xb884ba,'custom':_0x31958e};if(_0xe29a64===_0xa176('0xb5')){_0x2e6fb5[_0xa176('0x40')]=[{'name':_0xa176('0xb6'),'value':_0xa176('0xb7')},{'name':_0xa176('0xb8'),'value':'false'}];_0x50fbc9(_0x2e6fb5);}else{var _0x18d4a9={'method':'GET','uri':_0x435c9d+_0xa176('0xb9')+_0x5db596,'auth':_0x6642d2,'json':!![]};return rp(_0x18d4a9)[_0xa176('0x25')](function(_0x1c2365){var _0x34ad91=[];if(_0x1c2365[_0xa176('0xa5')][_0xa176('0x46')]>0x0){_0x1c2365[_0xa176('0xa5')][_0xa176('0xaf')](function(_0x7d5e77){if(_0x7d5e77[_0xa176('0xba')]===_0xa176('0xbb')){var _0xc50333={'name':_0x7d5e77['label'],'value':_0x7d5e77['value']};_0x34ad91[_0xa176('0xab')](_0xc50333);}});}_0x2e6fb5[_0xa176('0x40')]=_0x34ad91;if(_0x2e6fb5[_0xa176('0x40')][_0xa176('0x46')]>0x0){_0x50fbc9(_0x2e6fb5);}else{if(_0x31958e==![]){_0x50fbc9();}else{_0x50fbc9(_0x2e6fb5);}}});}});}
\ No newline at end of file
index 2af923f..7634ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['moment','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api'];(function(_0x5188b4,_0x182193){var _0x16eb05=function(_0x891697){while(--_0x891697){_0x5188b4['push'](_0x5188b4['shift']());}};_0x16eb05(++_0x182193);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x359f5e,_0x53344e){_0x359f5e=_0x359f5e-0x0;var _0x36a140=_0xb4c7[_0x359f5e];return _0x36a140;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b4c('0xa')]=function(_0x10e197,_0x2dd5c7){return _0x10e197['define'](_0x7b4c('0xb'),attributes,{'tableName':_0x7b4c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4c7=['moment','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api'];(function(_0x2bf9ae,_0x270fda){var _0x23c251=function(_0x3be086){while(--_0x3be086){_0x2bf9ae['push'](_0x2bf9ae['shift']());}};_0x23c251(++_0x270fda);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x35ca8f,_0x3c95b8){_0x35ca8f=_0x35ca8f-0x0;var _0x484cc8=_0xb4c7[_0x35ca8f];return _0x484cc8;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b4c('0xa')]=function(_0x10e197,_0x2dd5c7){return _0x10e197['define'](_0x7b4c('0xb'),attributes,{'tableName':_0x7b4c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5a578ae..744e1cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01cb=['attributes','GetServicenowAccount','ShowServicenowAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','then','debug','request\x20sent','stringify','error','code','ServicenowAccount,\x20%s,\x20%s','message','info','result','catch','ServicenowAccount','options','raw','where','limit','map','include','model'];(function(_0x2b5513,_0x3fe5cd){var _0x578fd2=function(_0x7a9106){while(--_0x7a9106){_0x2b5513['push'](_0x2b5513['shift']());}};_0x578fd2(++_0x3fe5cd);}(_0x01cb,0x1b1));var _0xb01c=function(_0x411e71,_0xf9652){_0x411e71=_0x411e71-0x0;var _0x226ae3=_0x01cb[_0x411e71];return _0x226ae3;};'use strict';var _=require(_0xb01c('0x0'));var util=require(_0xb01c('0x1'));var moment=require('moment');var BPromise=require(_0xb01c('0x2'));var rs=require(_0xb01c('0x3'));var fs=require('fs');var Redis=require(_0xb01c('0x4'));var db=require(_0xb01c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb01c('0x6'));var config=require('../../config/environment');var jayson=require(_0xb01c('0x7'));var client=jayson['client'][_0xb01c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5655c6,_0x491970,_0x22cb61){return new BPromise(function(_0x3224de,_0x22ed36){return client[_0xb01c('0x9')](_0x5655c6,_0x22cb61)[_0xb01c('0xa')](function(_0x220dc6){logger['info']('ServicenowAccount,\x20%s,\x20%s',_0x491970,'request\x20sent');logger[_0xb01c('0xb')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x491970,_0xb01c('0xc'),JSON[_0xb01c('0xd')](_0x220dc6));if(_0x220dc6[_0xb01c('0xe')]){if(_0x220dc6[_0xb01c('0xe')][_0xb01c('0xf')]===0x1f4){logger['error'](_0xb01c('0x10'),_0x491970,_0x220dc6['error'][_0xb01c('0x11')]);return _0x22ed36(_0x220dc6[_0xb01c('0xe')][_0xb01c('0x11')]);}logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x491970,_0x220dc6[_0xb01c('0xe')][_0xb01c('0x11')]);return _0x3224de(_0x220dc6[_0xb01c('0xe')][_0xb01c('0x11')]);}else{logger[_0xb01c('0x12')](_0xb01c('0x10'),_0x491970,'request\x20sent');_0x3224de(_0x220dc6[_0xb01c('0x13')][_0xb01c('0x11')]);}})[_0xb01c('0x14')](function(_0x2670d1){logger[_0xb01c('0xe')](_0xb01c('0x10'),_0x491970,_0x2670d1);_0x22ed36(_0x2670d1);});});}exports['GetServicenowAccount']=function(_0x1293ca){var _0x1fc411=this;return new Promise(function(_0x219907,_0x44e91e){return db[_0xb01c('0x15')]['findAll']({'raw':_0x1293ca[_0xb01c('0x16')]?_0x1293ca[_0xb01c('0x16')][_0xb01c('0x17')]===undefined?!![]:![]:!![],'where':_0x1293ca[_0xb01c('0x16')]?_0x1293ca['options'][_0xb01c('0x18')]||null:null,'attributes':_0x1293ca[_0xb01c('0x16')]?_0x1293ca[_0xb01c('0x16')]['attributes']||null:null,'limit':_0x1293ca['options']?_0x1293ca[_0xb01c('0x16')][_0xb01c('0x19')]||null:null,'include':_0x1293ca['options']?_0x1293ca['options']['include']?_[_0xb01c('0x1a')](_0x1293ca[_0xb01c('0x16')][_0xb01c('0x1b')],function(_0x47ef76){return{'model':db[_0x47ef76[_0xb01c('0x1c')]],'as':_0x47ef76['as'],'attributes':_0x47ef76['attributes'],'include':_0x47ef76[_0xb01c('0x1b')]?_[_0xb01c('0x1a')](_0x47ef76[_0xb01c('0x1b')],function(_0x3825ee){return{'model':db[_0x3825ee['model']],'as':_0x3825ee['as'],'attributes':_0x3825ee[_0xb01c('0x1d')],'include':_0x3825ee[_0xb01c('0x1b')]?_[_0xb01c('0x1a')](_0x3825ee[_0xb01c('0x1b')],function(_0xd54cf3){return{'model':db[_0xd54cf3[_0xb01c('0x1c')]],'as':_0xd54cf3['as'],'attributes':_0xd54cf3['attributes']};}):[]};}):[]};}):[]:[]})[_0xb01c('0xa')](function(_0x4cbfa9){logger[_0xb01c('0x12')]('GetServicenowAccount',_0x1293ca);logger[_0xb01c('0xb')](_0xb01c('0x1e'),_0x1293ca,JSON[_0xb01c('0xd')](_0x4cbfa9));_0x219907(_0x4cbfa9);})['catch'](function(_0x3db1c5){logger[_0xb01c('0xe')](_0xb01c('0x1e'),_0x3db1c5['message'],_0x1293ca);_0x44e91e(_0x1fc411[_0xb01c('0xe')](0x1f4,_0x3db1c5['message']));});});};exports[_0xb01c('0x1f')]=function(_0x48d162){var _0xb52cc5=this;return new Promise(function(_0x35b34c,_0x2b356d){return db[_0xb01c('0x15')][_0xb01c('0x20')]({'raw':_0x48d162[_0xb01c('0x16')]?_0x48d162[_0xb01c('0x16')][_0xb01c('0x17')]===undefined?!![]:![]:!![],'where':_0x48d162[_0xb01c('0x16')]?_0x48d162['options'][_0xb01c('0x18')]||null:null,'attributes':_0x48d162[_0xb01c('0x16')]?_0x48d162['options'][_0xb01c('0x1d')]||null:null,'include':_0x48d162[_0xb01c('0x16')]?_0x48d162[_0xb01c('0x16')][_0xb01c('0x1b')]?_[_0xb01c('0x1a')](_0x48d162[_0xb01c('0x16')]['include'],function(_0x3ad568){return{'model':db[_0x3ad568[_0xb01c('0x1c')]],'as':_0x3ad568['as'],'attributes':_0x3ad568[_0xb01c('0x1d')],'include':_0x3ad568[_0xb01c('0x1b')]?_[_0xb01c('0x1a')](_0x3ad568[_0xb01c('0x1b')],function(_0x52edc3){return{'model':db[_0x52edc3[_0xb01c('0x1c')]],'as':_0x52edc3['as'],'attributes':_0x52edc3[_0xb01c('0x1d')],'include':_0x52edc3['include']?_[_0xb01c('0x1a')](_0x52edc3[_0xb01c('0x1b')],function(_0x1a65aa){return{'model':db[_0x1a65aa[_0xb01c('0x1c')]],'as':_0x1a65aa['as'],'attributes':_0x1a65aa[_0xb01c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb01c('0xa')](function(_0x1952ff){logger['info']('ShowServicenowAccount',_0x48d162);logger[_0xb01c('0xb')]('ShowServicenowAccount',_0x48d162,JSON[_0xb01c('0xd')](_0x1952ff));_0x35b34c(_0x1952ff);})[_0xb01c('0x14')](function(_0x28a6f2){logger['error'](_0xb01c('0x1f'),_0x28a6f2[_0xb01c('0x11')],_0x48d162);_0x2b356d(_0xb52cc5[_0xb01c('0xe')](0x1f4,_0x28a6f2[_0xb01c('0x11')]));});});};
\ No newline at end of file
+var _0x1500=['message','result','catch','raw','options','where','attributes','include','map','model','GetServicenowAccount','stringify','ServicenowAccount','then','ShowServicenowAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1500,0x14a));var _0x0150=function(_0x551a60,_0x1d8e04){_0x551a60=_0x551a60-0x0;var _0x5e3843=_0x1500[_0x551a60];return _0x5e3843;};'use strict';var _=require(_0x0150('0x0'));var util=require(_0x0150('0x1'));var moment=require(_0x0150('0x2'));var BPromise=require(_0x0150('0x3'));var rs=require(_0x0150('0x4'));var fs=require('fs');var Redis=require(_0x0150('0x5'));var db=require(_0x0150('0x6'))['db'];var utils=require(_0x0150('0x7'));var logger=require(_0x0150('0x8'))(_0x0150('0x9'));var config=require(_0x0150('0xa'));var jayson=require(_0x0150('0xb'));var client=jayson['client'][_0x0150('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x509393,_0x529e32,_0x3ca8d8){return new BPromise(function(_0x57e33d,_0x44cad8){return client[_0x0150('0xd')](_0x509393,_0x3ca8d8)['then'](function(_0x31154f){logger[_0x0150('0xe')](_0x0150('0xf'),_0x529e32,_0x0150('0x10'));logger[_0x0150('0x11')](_0x0150('0x12'),_0x529e32,_0x0150('0x10'),JSON['stringify'](_0x31154f));if(_0x31154f[_0x0150('0x13')]){if(_0x31154f[_0x0150('0x13')]['code']===0x1f4){logger[_0x0150('0x13')](_0x0150('0xf'),_0x529e32,_0x31154f[_0x0150('0x13')][_0x0150('0x14')]);return _0x44cad8(_0x31154f['error'][_0x0150('0x14')]);}logger['error'](_0x0150('0xf'),_0x529e32,_0x31154f[_0x0150('0x13')]['message']);return _0x57e33d(_0x31154f[_0x0150('0x13')][_0x0150('0x14')]);}else{logger['info'](_0x0150('0xf'),_0x529e32,_0x0150('0x10'));_0x57e33d(_0x31154f[_0x0150('0x15')]['message']);}})[_0x0150('0x16')](function(_0x37e191){logger[_0x0150('0x13')](_0x0150('0xf'),_0x529e32,_0x37e191);_0x44cad8(_0x37e191);});});}exports['GetServicenowAccount']=function(_0x5dd165){var _0x56bf79=this;return new Promise(function(_0x230282,_0x757fb3){return db['ServicenowAccount']['findAll']({'raw':_0x5dd165['options']?_0x5dd165['options'][_0x0150('0x17')]===undefined?!![]:![]:!![],'where':_0x5dd165[_0x0150('0x18')]?_0x5dd165['options'][_0x0150('0x19')]||null:null,'attributes':_0x5dd165[_0x0150('0x18')]?_0x5dd165[_0x0150('0x18')][_0x0150('0x1a')]||null:null,'limit':_0x5dd165['options']?_0x5dd165[_0x0150('0x18')]['limit']||null:null,'include':_0x5dd165['options']?_0x5dd165[_0x0150('0x18')][_0x0150('0x1b')]?_[_0x0150('0x1c')](_0x5dd165[_0x0150('0x18')]['include'],function(_0x3b1ec7){return{'model':db[_0x3b1ec7[_0x0150('0x1d')]],'as':_0x3b1ec7['as'],'attributes':_0x3b1ec7['attributes'],'include':_0x3b1ec7['include']?_[_0x0150('0x1c')](_0x3b1ec7[_0x0150('0x1b')],function(_0x359376){return{'model':db[_0x359376['model']],'as':_0x359376['as'],'attributes':_0x359376[_0x0150('0x1a')],'include':_0x359376[_0x0150('0x1b')]?_[_0x0150('0x1c')](_0x359376[_0x0150('0x1b')],function(_0x43a133){return{'model':db[_0x43a133['model']],'as':_0x43a133['as'],'attributes':_0x43a133['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ce369){logger[_0x0150('0xe')](_0x0150('0x1e'),_0x5dd165);logger[_0x0150('0x11')](_0x0150('0x1e'),_0x5dd165,JSON[_0x0150('0x1f')](_0x3ce369));_0x230282(_0x3ce369);})[_0x0150('0x16')](function(_0x5a5a73){logger['error'](_0x0150('0x1e'),_0x5a5a73[_0x0150('0x14')],_0x5dd165);_0x757fb3(_0x56bf79[_0x0150('0x13')](0x1f4,_0x5a5a73[_0x0150('0x14')]));});});};exports['ShowServicenowAccount']=function(_0x289ad9){var _0x5280bd=this;return new Promise(function(_0x1f8733,_0x25a691){return db[_0x0150('0x20')]['find']({'raw':_0x289ad9['options']?_0x289ad9[_0x0150('0x18')][_0x0150('0x17')]===undefined?!![]:![]:!![],'where':_0x289ad9[_0x0150('0x18')]?_0x289ad9[_0x0150('0x18')][_0x0150('0x19')]||null:null,'attributes':_0x289ad9[_0x0150('0x18')]?_0x289ad9[_0x0150('0x18')]['attributes']||null:null,'include':_0x289ad9['options']?_0x289ad9[_0x0150('0x18')]['include']?_[_0x0150('0x1c')](_0x289ad9['options']['include'],function(_0x3020df){return{'model':db[_0x3020df[_0x0150('0x1d')]],'as':_0x3020df['as'],'attributes':_0x3020df[_0x0150('0x1a')],'include':_0x3020df[_0x0150('0x1b')]?_[_0x0150('0x1c')](_0x3020df['include'],function(_0x381e8f){return{'model':db[_0x381e8f[_0x0150('0x1d')]],'as':_0x381e8f['as'],'attributes':_0x381e8f[_0x0150('0x1a')],'include':_0x381e8f[_0x0150('0x1b')]?_[_0x0150('0x1c')](_0x381e8f[_0x0150('0x1b')],function(_0x56cdf3){return{'model':db[_0x56cdf3[_0x0150('0x1d')]],'as':_0x56cdf3['as'],'attributes':_0x56cdf3['attributes']};}):[]};}):[]};}):[]:[]})[_0x0150('0x21')](function(_0x273e8b){logger['info']('ShowServicenowAccount',_0x289ad9);logger[_0x0150('0x11')](_0x0150('0x22'),_0x289ad9,JSON['stringify'](_0x273e8b));_0x1f8733(_0x273e8b);})[_0x0150('0x16')](function(_0xce466a){logger[_0x0150('0x13')](_0x0150('0x22'),_0xce466a[_0x0150('0x14')],_0x289ad9);_0x25a691(_0x5280bd['error'](0x1f4,_0xce466a[_0x0150('0x14')]));});});};
\ No newline at end of file
index 82e613b..e90c9b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf023=['fs-extra','../../config/environment','./intServicenowConfiguration.controller','get','index','/:id','show','isAuthenticated','getFields','/:id/subjects','getDescriptions','post','put','update','destroy','exports','util','path','connect-timeout','express'];(function(_0x31e568,_0x179582){var _0x5b4169=function(_0x1bbe32){while(--_0x1bbe32){_0x31e568['push'](_0x31e568['shift']());}};_0x5b4169(++_0x179582);}(_0xf023,0x128));var _0x3f02=function(_0x3828dc,_0x2d3afb){_0x3828dc=_0x3828dc-0x0;var _0x8900d=_0xf023[_0x3828dc];return _0x8900d;};'use strict';var multer=require('multer');var util=require(_0x3f02('0x0'));var path=require(_0x3f02('0x1'));var timeout=require(_0x3f02('0x2'));var express=require(_0x3f02('0x3'));var router=express['Router']();var fs_extra=require(_0x3f02('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3f02('0x5'));var controller=require(_0x3f02('0x6'));router[_0x3f02('0x7')]('/',auth['isAuthenticated'](),controller[_0x3f02('0x8')]);router['get'](_0x3f02('0x9'),auth['isAuthenticated'](),controller[_0x3f02('0xa')]);router[_0x3f02('0x7')]('/:id/fields',auth[_0x3f02('0xb')](),controller[_0x3f02('0xc')]);router[_0x3f02('0x7')](_0x3f02('0xd'),auth[_0x3f02('0xb')](),controller['getSubjects']);router[_0x3f02('0x7')]('/:id/descriptions',auth[_0x3f02('0xb')](),controller[_0x3f02('0xe')]);router[_0x3f02('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3f02('0x10')](_0x3f02('0x9'),auth[_0x3f02('0xb')](),controller[_0x3f02('0x11')]);router['delete']('/:id',auth[_0x3f02('0xb')](),controller[_0x3f02('0x12')]);module[_0x3f02('0x13')]=router;
\ No newline at end of file
+var _0x6e4f=['getSubjects','/:id/descriptions','create','put','update','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','/:id/subjects'];(function(_0xc1232d,_0x1e8031){var _0x426d51=function(_0xd1e677){while(--_0xd1e677){_0xc1232d['push'](_0xc1232d['shift']());}};_0x426d51(++_0x1e8031);}(_0x6e4f,0x13b));var _0xf6e4=function(_0x413cac,_0x3405d4){_0x413cac=_0x413cac-0x0;var _0x9b03=_0x6e4f[_0x413cac];return _0x9b03;};'use strict';var multer=require('multer');var util=require(_0xf6e4('0x0'));var path=require(_0xf6e4('0x1'));var timeout=require(_0xf6e4('0x2'));var express=require('express');var router=express[_0xf6e4('0x3')]();var fs_extra=require(_0xf6e4('0x4'));var auth=require(_0xf6e4('0x5'));var interaction=require(_0xf6e4('0x6'));var config=require('../../config/environment');var controller=require(_0xf6e4('0x7'));router[_0xf6e4('0x8')]('/',auth['isAuthenticated'](),controller[_0xf6e4('0x9')]);router[_0xf6e4('0x8')](_0xf6e4('0xa'),auth[_0xf6e4('0xb')](),controller[_0xf6e4('0xc')]);router['get'](_0xf6e4('0xd'),auth[_0xf6e4('0xb')](),controller['getFields']);router[_0xf6e4('0x8')](_0xf6e4('0xe'),auth[_0xf6e4('0xb')](),controller[_0xf6e4('0xf')]);router[_0xf6e4('0x8')](_0xf6e4('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0xf6e4('0x11')]);router[_0xf6e4('0x12')]('/:id',auth[_0xf6e4('0xb')](),controller[_0xf6e4('0x13')]);router[_0xf6e4('0x14')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xf6e4('0x15')]=router;
\ No newline at end of file
index aea14f5..2dd3fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2e3=['exports','STRING','sequelize'];(function(_0x264923,_0x393c1c){var _0x4c90e3=function(_0x848961){while(--_0x848961){_0x264923['push'](_0x264923['shift']());}};_0x4c90e3(++_0x393c1c);}(_0xc2e3,0x12b));var _0x3c2e=function(_0x30f5d1,_0x5892a2){_0x30f5d1=_0x30f5d1-0x0;var _0x13f691=_0xc2e3[_0x30f5d1];return _0x13f691;};'use strict';var Sequelize=require(_0x3c2e('0x0'));module[_0x3c2e('0x1')]={'name':{'type':Sequelize[_0x3c2e('0x2')]},'description':{'type':Sequelize[_0x3c2e('0x2')]}};
\ No newline at end of file
+var _0x6736=['sequelize','exports','STRING'];(function(_0x3aa893,_0x48918b){var _0x29edb2=function(_0x523053){while(--_0x523053){_0x3aa893['push'](_0x3aa893['shift']());}};_0x29edb2(++_0x48918b);}(_0x6736,0x16e));var _0x6673=function(_0x249f83,_0x5b067f){_0x249f83=_0x249f83-0x0;var _0x46bc4a=_0x6736[_0x249f83];return _0x46bc4a;};'use strict';var Sequelize=require(_0x6673('0x0'));module[_0x6673('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6673('0x2')]}};
\ No newline at end of file
index eb58e1b..3fb34a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf57=['filters','pick','filter','where','VIRTUAL','merge','options','ServicenowConfiguration','includeAll','include','rows','show','rawAttributes','intersection','fields','create','body','catch','update','find','params','findOne','getFields','nolimit','ServicenowField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','save','then','destroy','error','stack','name','send','index','map','type','key','model','query','keys','attributes','length','hasOwnProperty','order','sort'];(function(_0x131827,_0x275af8){var _0x2bd323=function(_0x3a3097){while(--_0x3a3097){_0x131827['push'](_0x131827['shift']());}};_0x2bd323(++_0x275af8);}(_0xdf57,0x15b));var _0x7df5=function(_0x255cca,_0x121536){_0x255cca=_0x255cca-0x0;var _0x16d8de=_0xdf57[_0x255cca];return _0x16d8de;};'use strict';var emlformat=require(_0x7df5('0x0'));var rimraf=require(_0x7df5('0x1'));var zipdir=require(_0x7df5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7df5('0x3'));var moment=require('moment');var BPromise=require(_0x7df5('0x4'));var Mustache=require(_0x7df5('0x5'));var util=require(_0x7df5('0x6'));var path=require(_0x7df5('0x7'));var sox=require(_0x7df5('0x8'));var csv=require(_0x7df5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7df5('0xa'));var _=require('lodash');var squel=require(_0x7df5('0xb'));var crypto=require(_0x7df5('0xc'));var jsforce=require(_0x7df5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7df5('0x9'));var querystring=require(_0x7df5('0xe'));var Papa=require(_0x7df5('0xf'));var Redis=require(_0x7df5('0x10'));var authService=require(_0x7df5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7df5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7df5('0x13'))(_0x7df5('0x14'));var utils=require(_0x7df5('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7df5('0x16'));var db=require(_0x7df5('0x17'))['db'];function respondWithStatusCode(_0x37a177,_0x33376e){_0x33376e=_0x33376e||0xcc;return function(_0x41cc6a){if(_0x41cc6a){return _0x37a177[_0x7df5('0x18')](_0x33376e);}return _0x37a177[_0x7df5('0x19')](_0x33376e)[_0x7df5('0x1a')]();};}function respondWithResult(_0x2cb6ee,_0x533234){_0x533234=_0x533234||0xc8;return function(_0x4bc509){if(_0x4bc509){return _0x2cb6ee[_0x7df5('0x19')](_0x533234)['json'](_0x4bc509);}};}function respondWithFilteredResult(_0x54902d,_0xa73116){return function(_0x3999d9){if(_0x3999d9){var _0x935b49=typeof _0xa73116[_0x7df5('0x1b')]==='undefined'&&typeof _0xa73116[_0x7df5('0x1c')]===_0x7df5('0x1d');var _0x3afb6c=_0x3999d9[_0x7df5('0x1e')];var _0x51304d=_0x935b49?0x0:_0xa73116[_0x7df5('0x1b')];var _0x3d1b52=_0x935b49?_0x3999d9[_0x7df5('0x1e')]:_0xa73116[_0x7df5('0x1b')]+_0xa73116['limit'];var _0x5d7170;if(_0x3d1b52>=_0x3afb6c){_0x3d1b52=_0x3afb6c;_0x5d7170=0xc8;}else{_0x5d7170=0xce;}_0x54902d['status'](_0x5d7170);return _0x54902d['set'](_0x7df5('0x1f'),_0x51304d+'-'+_0x3d1b52+'/'+_0x3afb6c)[_0x7df5('0x20')](_0x3999d9);}return null;};}function patchUpdates(_0x4756d3){return function(_0x112d42){try{jsonpatch[_0x7df5('0x21')](_0x112d42,_0x4756d3,!![]);}catch(_0x52c86c){return BPromise['reject'](_0x52c86c);}return _0x112d42[_0x7df5('0x22')]();};}function saveUpdates(_0xf286a,_0x429934){return function(_0x5ba2da){if(_0x5ba2da){return _0x5ba2da['update'](_0xf286a)[_0x7df5('0x23')](function(_0x1e4def){return _0x1e4def;});}return null;};}function removeEntity(_0x4843,_0x2fcc04){return function(_0x4d530e){if(_0x4d530e){return _0x4d530e[_0x7df5('0x24')]()[_0x7df5('0x23')](function(){_0x4843[_0x7df5('0x19')](0xcc)[_0x7df5('0x1a')]();});}};}function handleEntityNotFound(_0x5392ac,_0x3fead0){return function(_0x5aff4c){if(!_0x5aff4c){_0x5392ac[_0x7df5('0x18')](0x194);}return _0x5aff4c;};}function handleError(_0x14dbba,_0x43b63a){_0x43b63a=_0x43b63a||0x1f4;return function(_0x236d10){logger[_0x7df5('0x25')](_0x236d10[_0x7df5('0x26')]);if(_0x236d10[_0x7df5('0x27')]){delete _0x236d10[_0x7df5('0x27')];}_0x14dbba[_0x7df5('0x19')](_0x43b63a)[_0x7df5('0x28')](_0x236d10);};}exports[_0x7df5('0x29')]=function(_0x47d324,_0x2b45b1){var _0x9ac705={},_0x226aba={},_0x4f22cc={'count':0x0,'rows':[]};var _0x2cb31e=_[_0x7df5('0x2a')](db['ServicenowConfiguration']['rawAttributes'],function(_0x144810){return{'name':_0x144810['fieldName'],'type':_0x144810[_0x7df5('0x2b')][_0x7df5('0x2c')]};});_0x226aba[_0x7df5('0x2d')]=_[_0x7df5('0x2a')](_0x2cb31e,'name');_0x226aba[_0x7df5('0x2e')]=_[_0x7df5('0x2f')](_0x47d324[_0x7df5('0x2e')]);_0x226aba['filters']=_['intersection'](_0x226aba[_0x7df5('0x2d')],_0x226aba[_0x7df5('0x2e')]);_0x9ac705[_0x7df5('0x30')]=_['intersection'](_0x226aba['model'],qs['fields'](_0x47d324['query']['fields']));_0x9ac705[_0x7df5('0x30')]=_0x9ac705[_0x7df5('0x30')][_0x7df5('0x31')]?_0x9ac705[_0x7df5('0x30')]:_0x226aba[_0x7df5('0x2d')];if(!_0x47d324[_0x7df5('0x2e')][_0x7df5('0x32')]('nolimit')){_0x9ac705[_0x7df5('0x1c')]=qs['limit'](_0x47d324[_0x7df5('0x2e')][_0x7df5('0x1c')]);_0x9ac705[_0x7df5('0x1b')]=qs['offset'](_0x47d324[_0x7df5('0x2e')][_0x7df5('0x1b')]);}_0x9ac705[_0x7df5('0x33')]=qs['sort'](_0x47d324['query'][_0x7df5('0x34')]);_0x9ac705['where']=qs[_0x7df5('0x35')](_[_0x7df5('0x36')](_0x47d324[_0x7df5('0x2e')],_0x226aba['filters']),_0x2cb31e);if(_0x47d324['query'][_0x7df5('0x37')]){_0x9ac705[_0x7df5('0x38')]=_['merge'](_0x9ac705[_0x7df5('0x38')],{'$or':_[_0x7df5('0x2a')](_0x2cb31e,function(_0x4a9d01){if(_0x4a9d01[_0x7df5('0x2b')]!==_0x7df5('0x39')){var _0x3c7319={};_0x3c7319[_0x4a9d01[_0x7df5('0x27')]]={'$like':'%'+_0x47d324[_0x7df5('0x2e')][_0x7df5('0x37')]+'%'};return _0x3c7319;}})});}_0x9ac705=_[_0x7df5('0x3a')]({},_0x9ac705,_0x47d324[_0x7df5('0x3b')]);var _0x41a871={'where':_0x9ac705[_0x7df5('0x38')]};return db[_0x7df5('0x3c')][_0x7df5('0x1e')](_0x41a871)['then'](function(_0x3f2e70){_0x4f22cc[_0x7df5('0x1e')]=_0x3f2e70;if(_0x47d324[_0x7df5('0x2e')][_0x7df5('0x3d')]){_0x9ac705[_0x7df5('0x3e')]=[{'all':!![]}];}return db['ServicenowConfiguration']['findAll'](_0x9ac705);})['then'](function(_0xdec84c){_0x4f22cc[_0x7df5('0x3f')]=_0xdec84c;return _0x4f22cc;})[_0x7df5('0x23')](respondWithFilteredResult(_0x2b45b1,_0x9ac705))['catch'](handleError(_0x2b45b1,null));};exports[_0x7df5('0x40')]=function(_0x51dace,_0x140fcc){var _0x458161={'raw':![],'where':{'id':_0x51dace['params']['id']}},_0x171fb0={};_0x171fb0[_0x7df5('0x2d')]=_[_0x7df5('0x2f')](db[_0x7df5('0x3c')][_0x7df5('0x41')]);_0x171fb0[_0x7df5('0x2e')]=_['keys'](_0x51dace[_0x7df5('0x2e')]);_0x171fb0['filters']=_[_0x7df5('0x42')](_0x171fb0[_0x7df5('0x2d')],_0x171fb0[_0x7df5('0x2e')]);_0x458161[_0x7df5('0x30')]=_['intersection'](_0x171fb0['model'],qs[_0x7df5('0x43')](_0x51dace['query']['fields']));_0x458161[_0x7df5('0x30')]=_0x458161['attributes'][_0x7df5('0x31')]?_0x458161[_0x7df5('0x30')]:_0x171fb0['model'];if(_0x51dace[_0x7df5('0x2e')][_0x7df5('0x3d')]){_0x458161['include']=[{'all':!![]}];}_0x458161=_['merge']({},_0x458161,_0x51dace[_0x7df5('0x3b')]);return db[_0x7df5('0x3c')]['find'](_0x458161)[_0x7df5('0x23')](handleEntityNotFound(_0x140fcc,null))[_0x7df5('0x23')](respondWithResult(_0x140fcc,null))['catch'](handleError(_0x140fcc,null));};exports[_0x7df5('0x44')]=function(_0x129087,_0x55f6e5){return db[_0x7df5('0x3c')][_0x7df5('0x44')](_0x129087[_0x7df5('0x45')],{})[_0x7df5('0x23')](respondWithResult(_0x55f6e5,0xc9))[_0x7df5('0x46')](handleError(_0x55f6e5,null));};exports[_0x7df5('0x47')]=function(_0x4d8ccd,_0x1c87f5){if(_0x4d8ccd['body']['id']){delete _0x4d8ccd[_0x7df5('0x45')]['id'];}return db[_0x7df5('0x3c')][_0x7df5('0x48')]({'where':{'id':_0x4d8ccd[_0x7df5('0x49')]['id']}})[_0x7df5('0x23')](handleEntityNotFound(_0x1c87f5,null))[_0x7df5('0x23')](saveUpdates(_0x4d8ccd[_0x7df5('0x45')],null))[_0x7df5('0x23')](respondWithResult(_0x1c87f5,null))['catch'](handleError(_0x1c87f5,null));};exports[_0x7df5('0x24')]=function(_0xdd9821,_0x23935a){return db['ServicenowConfiguration'][_0x7df5('0x48')]({'where':{'id':_0xdd9821[_0x7df5('0x49')]['id']}})[_0x7df5('0x23')](handleEntityNotFound(_0x23935a,null))['then'](removeEntity(_0x23935a,null))[_0x7df5('0x46')](handleError(_0x23935a,null));};exports['getFields']=function(_0x5eec51,_0x4d994b,_0x5a53d6){var _0x24520a={};var _0x4c91fe={};var _0xdc5101;var _0x1f21f7;return db['ServicenowConfiguration'][_0x7df5('0x4a')]({'where':{'id':_0x5eec51[_0x7df5('0x49')]['id']}})[_0x7df5('0x23')](handleEntityNotFound(_0x4d994b,null))['then'](function(_0x4e82a2){if(_0x4e82a2){_0xdc5101=_0x4e82a2;_0x4c91fe[_0x7df5('0x2d')]=_[_0x7df5('0x2f')](db['ServicenowField'][_0x7df5('0x41')]);_0x4c91fe[_0x7df5('0x2e')]=_[_0x7df5('0x2f')](_0x5eec51['query']);_0x4c91fe[_0x7df5('0x35')]=_[_0x7df5('0x42')](_0x4c91fe[_0x7df5('0x2d')],_0x4c91fe[_0x7df5('0x2e')]);_0x24520a[_0x7df5('0x30')]=_[_0x7df5('0x42')](_0x4c91fe[_0x7df5('0x2d')],qs[_0x7df5('0x43')](_0x5eec51['query']['fields']));_0x24520a[_0x7df5('0x30')]=_0x24520a[_0x7df5('0x30')][_0x7df5('0x31')]?_0x24520a['attributes']:_0x4c91fe[_0x7df5('0x2d')];_0x24520a[_0x7df5('0x33')]=qs[_0x7df5('0x34')](_0x5eec51['query'][_0x7df5('0x34')]);_0x24520a[_0x7df5('0x38')]=qs[_0x7df5('0x35')](_[_0x7df5('0x36')](_0x5eec51[_0x7df5('0x2e')],_0x4c91fe[_0x7df5('0x35')]));if(_0x5eec51['query'][_0x7df5('0x37')]){_0x24520a[_0x7df5('0x38')]=_['merge'](_0x24520a[_0x7df5('0x38')],{'$or':_[_0x7df5('0x2a')](_0x24520a['attributes'],function(_0x174464){var _0x26eb56={};_0x26eb56[_0x174464]={'$like':'%'+_0x5eec51[_0x7df5('0x2e')][_0x7df5('0x37')]+'%'};return _0x26eb56;})});}_0x24520a=_[_0x7df5('0x3a')]({},_0x24520a,_0x5eec51[_0x7df5('0x3b')]);return _0xdc5101[_0x7df5('0x4b')](_0x24520a);}})[_0x7df5('0x23')](function(_0x36dad7){if(_0x36dad7){_0x1f21f7=_0x36dad7[_0x7df5('0x31')];if(!_0x5eec51[_0x7df5('0x2e')][_0x7df5('0x32')](_0x7df5('0x4c'))){_0x24520a[_0x7df5('0x1c')]=qs[_0x7df5('0x1c')](_0x5eec51['query'][_0x7df5('0x1c')]);_0x24520a['offset']=qs[_0x7df5('0x1b')](_0x5eec51[_0x7df5('0x2e')][_0x7df5('0x1b')]);}return _0xdc5101[_0x7df5('0x4b')](_0x24520a);}})['then'](function(_0x13a7d8){if(_0x13a7d8){return _0x13a7d8?{'count':_0x1f21f7,'rows':_0x13a7d8}:null;}})['then'](respondWithResult(_0x4d994b,null))['catch'](handleError(_0x4d994b,null));};exports['getSubjects']=function(_0x529f50,_0x1e7835,_0x4cf2df){var _0x1bd354={};var _0xfae65b={};var _0x5e8684;var _0x431766;return db[_0x7df5('0x3c')]['findOne']({'where':{'id':_0x529f50[_0x7df5('0x49')]['id']}})['then'](handleEntityNotFound(_0x1e7835,null))['then'](function(_0x2799b9){if(_0x2799b9){_0x5e8684=_0x2799b9;_0xfae65b[_0x7df5('0x2d')]=_[_0x7df5('0x2f')](db[_0x7df5('0x4d')][_0x7df5('0x41')]);_0xfae65b[_0x7df5('0x2e')]=_[_0x7df5('0x2f')](_0x529f50[_0x7df5('0x2e')]);_0xfae65b[_0x7df5('0x35')]=_[_0x7df5('0x42')](_0xfae65b[_0x7df5('0x2d')],_0xfae65b[_0x7df5('0x2e')]);_0x1bd354[_0x7df5('0x30')]=_[_0x7df5('0x42')](_0xfae65b[_0x7df5('0x2d')],qs[_0x7df5('0x43')](_0x529f50[_0x7df5('0x2e')]['fields']));_0x1bd354[_0x7df5('0x30')]=_0x1bd354[_0x7df5('0x30')][_0x7df5('0x31')]?_0x1bd354['attributes']:_0xfae65b['model'];_0x1bd354[_0x7df5('0x33')]=qs[_0x7df5('0x34')](_0x529f50['query'][_0x7df5('0x34')]);_0x1bd354['where']=qs[_0x7df5('0x35')](_[_0x7df5('0x36')](_0x529f50[_0x7df5('0x2e')],_0xfae65b[_0x7df5('0x35')]));if(_0x529f50['query']['filter']){_0x1bd354[_0x7df5('0x38')]=_[_0x7df5('0x3a')](_0x1bd354[_0x7df5('0x38')],{'$or':_[_0x7df5('0x2a')](_0x1bd354[_0x7df5('0x30')],function(_0x124b7a){var _0x41c009={};_0x41c009[_0x124b7a]={'$like':'%'+_0x529f50['query']['filter']+'%'};return _0x41c009;})});}_0x1bd354=_[_0x7df5('0x3a')]({},_0x1bd354,_0x529f50[_0x7df5('0x3b')]);return _0x5e8684[_0x7df5('0x4e')](_0x1bd354);}})['then'](function(_0x5e595f){if(_0x5e595f){_0x431766=_0x5e595f[_0x7df5('0x31')];if(!_0x529f50[_0x7df5('0x2e')][_0x7df5('0x32')](_0x7df5('0x4c'))){_0x1bd354[_0x7df5('0x1c')]=qs[_0x7df5('0x1c')](_0x529f50[_0x7df5('0x2e')]['limit']);_0x1bd354[_0x7df5('0x1b')]=qs[_0x7df5('0x1b')](_0x529f50[_0x7df5('0x2e')][_0x7df5('0x1b')]);}return _0x5e8684[_0x7df5('0x4e')](_0x1bd354);}})['then'](function(_0x999480){if(_0x999480){return _0x999480?{'count':_0x431766,'rows':_0x999480}:null;}})[_0x7df5('0x23')](respondWithResult(_0x1e7835,null))[_0x7df5('0x46')](handleError(_0x1e7835,null));};exports['getDescriptions']=function(_0x32829a,_0x43f897,_0x4e9eff){var _0x320855={};var _0x4b163d={};var _0x10de05;var _0x164f08;return db[_0x7df5('0x3c')]['findOne']({'where':{'id':_0x32829a[_0x7df5('0x49')]['id']}})[_0x7df5('0x23')](handleEntityNotFound(_0x43f897,null))['then'](function(_0xdbd8df){if(_0xdbd8df){_0x10de05=_0xdbd8df;_0x4b163d[_0x7df5('0x2d')]=_[_0x7df5('0x2f')](db[_0x7df5('0x4d')][_0x7df5('0x41')]);_0x4b163d[_0x7df5('0x2e')]=_[_0x7df5('0x2f')](_0x32829a[_0x7df5('0x2e')]);_0x4b163d[_0x7df5('0x35')]=_[_0x7df5('0x42')](_0x4b163d[_0x7df5('0x2d')],_0x4b163d[_0x7df5('0x2e')]);_0x320855['attributes']=_[_0x7df5('0x42')](_0x4b163d[_0x7df5('0x2d')],qs[_0x7df5('0x43')](_0x32829a[_0x7df5('0x2e')][_0x7df5('0x43')]));_0x320855[_0x7df5('0x30')]=_0x320855[_0x7df5('0x30')][_0x7df5('0x31')]?_0x320855[_0x7df5('0x30')]:_0x4b163d[_0x7df5('0x2d')];_0x320855[_0x7df5('0x33')]=qs[_0x7df5('0x34')](_0x32829a['query'][_0x7df5('0x34')]);_0x320855[_0x7df5('0x38')]=qs[_0x7df5('0x35')](_[_0x7df5('0x36')](_0x32829a[_0x7df5('0x2e')],_0x4b163d['filters']));if(_0x32829a[_0x7df5('0x2e')][_0x7df5('0x37')]){_0x320855['where']=_[_0x7df5('0x3a')](_0x320855['where'],{'$or':_[_0x7df5('0x2a')](_0x320855[_0x7df5('0x30')],function(_0x10642a){var _0x31c837={};_0x31c837[_0x10642a]={'$like':'%'+_0x32829a[_0x7df5('0x2e')]['filter']+'%'};return _0x31c837;})});}_0x320855=_[_0x7df5('0x3a')]({},_0x320855,_0x32829a[_0x7df5('0x3b')]);return _0x10de05[_0x7df5('0x4f')](_0x320855);}})[_0x7df5('0x23')](function(_0x33ab10){if(_0x33ab10){_0x164f08=_0x33ab10['length'];if(!_0x32829a['query']['hasOwnProperty'](_0x7df5('0x4c'))){_0x320855['limit']=qs[_0x7df5('0x1c')](_0x32829a[_0x7df5('0x2e')]['limit']);_0x320855[_0x7df5('0x1b')]=qs[_0x7df5('0x1b')](_0x32829a[_0x7df5('0x2e')]['offset']);}return _0x10de05[_0x7df5('0x4f')](_0x320855);}})[_0x7df5('0x23')](function(_0x3dfb3b){if(_0x3dfb3b){return _0x3dfb3b?{'count':_0x164f08,'rows':_0x3dfb3b}:null;}})[_0x7df5('0x23')](respondWithResult(_0x43f897,null))['catch'](handleError(_0x43f897,null));};
\ No newline at end of file
+var _0x9575=['getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','stack','name','send','index','map','ServicenowConfiguration','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','catch','show','params','rawAttributes','include','find','create','body','getFields','findOne','pick','options','nolimit','getSubjects','ServicenowField'];(function(_0x49b51f,_0x1b8142){var _0x41a7dc=function(_0x268b9a){while(--_0x268b9a){_0x49b51f['push'](_0x49b51f['shift']());}};_0x41a7dc(++_0x1b8142);}(_0x9575,0x99));var _0x5957=function(_0x2a35ca,_0x45fc85){_0x2a35ca=_0x2a35ca-0x0;var _0x4074d3=_0x9575[_0x2a35ca];return _0x4074d3;};'use strict';var emlformat=require(_0x5957('0x0'));var rimraf=require(_0x5957('0x1'));var zipdir=require(_0x5957('0x2'));var jsonpatch=require(_0x5957('0x3'));var rp=require('request-promise');var moment=require(_0x5957('0x4'));var BPromise=require(_0x5957('0x5'));var Mustache=require(_0x5957('0x6'));var util=require(_0x5957('0x7'));var path=require('path');var sox=require(_0x5957('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5957('0x9'));var _=require(_0x5957('0xa'));var squel=require('squel');var crypto=require(_0x5957('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5957('0xc'));var toCsv=require(_0x5957('0xd'));var querystring=require(_0x5957('0xe'));var Papa=require(_0x5957('0xf'));var Redis=require(_0x5957('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5957('0x11'));var as=require(_0x5957('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5957('0x13'));var utils=require(_0x5957('0x14'));var config=require(_0x5957('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x5957('0x16'))['db'];function respondWithStatusCode(_0x1f3ae7,_0x6048f){_0x6048f=_0x6048f||0xcc;return function(_0x2f5595){if(_0x2f5595){return _0x1f3ae7[_0x5957('0x17')](_0x6048f);}return _0x1f3ae7[_0x5957('0x18')](_0x6048f)[_0x5957('0x19')]();};}function respondWithResult(_0x265fd7,_0xfe992d){_0xfe992d=_0xfe992d||0xc8;return function(_0x415a7d){if(_0x415a7d){return _0x265fd7[_0x5957('0x18')](_0xfe992d)[_0x5957('0x1a')](_0x415a7d);}};}function respondWithFilteredResult(_0x24d910,_0x1cf743){return function(_0x312841){if(_0x312841){var _0x57d3a2=typeof _0x1cf743[_0x5957('0x1b')]===_0x5957('0x1c')&&typeof _0x1cf743[_0x5957('0x1d')]===_0x5957('0x1c');var _0x337314=_0x312841[_0x5957('0x1e')];var _0x2df596=_0x57d3a2?0x0:_0x1cf743['offset'];var _0x29a40b=_0x57d3a2?_0x312841[_0x5957('0x1e')]:_0x1cf743[_0x5957('0x1b')]+_0x1cf743[_0x5957('0x1d')];var _0x33274f;if(_0x29a40b>=_0x337314){_0x29a40b=_0x337314;_0x33274f=0xc8;}else{_0x33274f=0xce;}_0x24d910[_0x5957('0x18')](_0x33274f);return _0x24d910[_0x5957('0x1f')](_0x5957('0x20'),_0x2df596+'-'+_0x29a40b+'/'+_0x337314)['json'](_0x312841);}return null;};}function patchUpdates(_0x3d0a6d){return function(_0x437e3f){try{jsonpatch[_0x5957('0x21')](_0x437e3f,_0x3d0a6d,!![]);}catch(_0x388abd){return BPromise['reject'](_0x388abd);}return _0x437e3f['save']();};}function saveUpdates(_0xf3950,_0x3de79c){return function(_0x5d1aa6){if(_0x5d1aa6){return _0x5d1aa6[_0x5957('0x22')](_0xf3950)[_0x5957('0x23')](function(_0x4dc0fd){return _0x4dc0fd;});}return null;};}function removeEntity(_0x1cec93,_0x11ce1d){return function(_0x720272){if(_0x720272){return _0x720272[_0x5957('0x24')]()[_0x5957('0x23')](function(){_0x1cec93[_0x5957('0x18')](0xcc)[_0x5957('0x19')]();});}};}function handleEntityNotFound(_0x2d6141,_0x1723e5){return function(_0x1429c6){if(!_0x1429c6){_0x2d6141['sendStatus'](0x194);}return _0x1429c6;};}function handleError(_0x53d04b,_0x29f98f){_0x29f98f=_0x29f98f||0x1f4;return function(_0x439eb0){logger['error'](_0x439eb0[_0x5957('0x25')]);if(_0x439eb0['name']){delete _0x439eb0[_0x5957('0x26')];}_0x53d04b['status'](_0x29f98f)[_0x5957('0x27')](_0x439eb0);};}exports[_0x5957('0x28')]=function(_0x348f87,_0x3e0761){var _0x41fa5a={},_0x19e9ae={},_0x3771e4={'count':0x0,'rows':[]};var _0x355b57=_[_0x5957('0x29')](db[_0x5957('0x2a')]['rawAttributes'],function(_0x117603){return{'name':_0x117603['fieldName'],'type':_0x117603[_0x5957('0x2b')][_0x5957('0x2c')]};});_0x19e9ae[_0x5957('0x2d')]=_[_0x5957('0x29')](_0x355b57,_0x5957('0x26'));_0x19e9ae[_0x5957('0x2e')]=_[_0x5957('0x2f')](_0x348f87['query']);_0x19e9ae[_0x5957('0x30')]=_[_0x5957('0x31')](_0x19e9ae[_0x5957('0x2d')],_0x19e9ae['query']);_0x41fa5a[_0x5957('0x32')]=_['intersection'](_0x19e9ae[_0x5957('0x2d')],qs[_0x5957('0x33')](_0x348f87[_0x5957('0x2e')][_0x5957('0x33')]));_0x41fa5a['attributes']=_0x41fa5a['attributes'][_0x5957('0x34')]?_0x41fa5a[_0x5957('0x32')]:_0x19e9ae[_0x5957('0x2d')];if(!_0x348f87[_0x5957('0x2e')][_0x5957('0x35')]('nolimit')){_0x41fa5a[_0x5957('0x1d')]=qs[_0x5957('0x1d')](_0x348f87[_0x5957('0x2e')][_0x5957('0x1d')]);_0x41fa5a['offset']=qs['offset'](_0x348f87[_0x5957('0x2e')][_0x5957('0x1b')]);}_0x41fa5a[_0x5957('0x36')]=qs['sort'](_0x348f87[_0x5957('0x2e')][_0x5957('0x37')]);_0x41fa5a[_0x5957('0x38')]=qs['filters'](_['pick'](_0x348f87[_0x5957('0x2e')],_0x19e9ae[_0x5957('0x30')]),_0x355b57);if(_0x348f87[_0x5957('0x2e')][_0x5957('0x39')]){_0x41fa5a[_0x5957('0x38')]=_[_0x5957('0x3a')](_0x41fa5a[_0x5957('0x38')],{'$or':_['map'](_0x355b57,function(_0x268444){if(_0x268444[_0x5957('0x2b')]!==_0x5957('0x3b')){var _0x2f7202={};_0x2f7202[_0x268444[_0x5957('0x26')]]={'$like':'%'+_0x348f87['query'][_0x5957('0x39')]+'%'};return _0x2f7202;}})});}_0x41fa5a=_[_0x5957('0x3a')]({},_0x41fa5a,_0x348f87['options']);var _0x559ebe={'where':_0x41fa5a[_0x5957('0x38')]};return db[_0x5957('0x2a')][_0x5957('0x1e')](_0x559ebe)[_0x5957('0x23')](function(_0x42ff26){_0x3771e4[_0x5957('0x1e')]=_0x42ff26;if(_0x348f87[_0x5957('0x2e')]['includeAll']){_0x41fa5a['include']=[{'all':!![]}];}return db[_0x5957('0x2a')]['findAll'](_0x41fa5a);})[_0x5957('0x23')](function(_0x2a2d78){_0x3771e4['rows']=_0x2a2d78;return _0x3771e4;})[_0x5957('0x23')](respondWithFilteredResult(_0x3e0761,_0x41fa5a))[_0x5957('0x3c')](handleError(_0x3e0761,null));};exports[_0x5957('0x3d')]=function(_0xa5bfc0,_0x22823b){var _0x515261={'raw':![],'where':{'id':_0xa5bfc0[_0x5957('0x3e')]['id']}},_0x3846fa={};_0x3846fa[_0x5957('0x2d')]=_[_0x5957('0x2f')](db[_0x5957('0x2a')][_0x5957('0x3f')]);_0x3846fa[_0x5957('0x2e')]=_['keys'](_0xa5bfc0['query']);_0x3846fa[_0x5957('0x30')]=_[_0x5957('0x31')](_0x3846fa[_0x5957('0x2d')],_0x3846fa[_0x5957('0x2e')]);_0x515261[_0x5957('0x32')]=_[_0x5957('0x31')](_0x3846fa[_0x5957('0x2d')],qs[_0x5957('0x33')](_0xa5bfc0[_0x5957('0x2e')][_0x5957('0x33')]));_0x515261[_0x5957('0x32')]=_0x515261[_0x5957('0x32')][_0x5957('0x34')]?_0x515261[_0x5957('0x32')]:_0x3846fa['model'];if(_0xa5bfc0[_0x5957('0x2e')]['includeAll']){_0x515261[_0x5957('0x40')]=[{'all':!![]}];}_0x515261=_[_0x5957('0x3a')]({},_0x515261,_0xa5bfc0['options']);return db['ServicenowConfiguration'][_0x5957('0x41')](_0x515261)[_0x5957('0x23')](handleEntityNotFound(_0x22823b,null))[_0x5957('0x23')](respondWithResult(_0x22823b,null))['catch'](handleError(_0x22823b,null));};exports[_0x5957('0x42')]=function(_0x32804e,_0x1720cd){return db['ServicenowConfiguration'][_0x5957('0x42')](_0x32804e['body'],{})[_0x5957('0x23')](respondWithResult(_0x1720cd,0xc9))[_0x5957('0x3c')](handleError(_0x1720cd,null));};exports[_0x5957('0x22')]=function(_0x26f480,_0x407df8){if(_0x26f480['body']['id']){delete _0x26f480[_0x5957('0x43')]['id'];}return db[_0x5957('0x2a')][_0x5957('0x41')]({'where':{'id':_0x26f480[_0x5957('0x3e')]['id']}})[_0x5957('0x23')](handleEntityNotFound(_0x407df8,null))[_0x5957('0x23')](saveUpdates(_0x26f480[_0x5957('0x43')],null))[_0x5957('0x23')](respondWithResult(_0x407df8,null))[_0x5957('0x3c')](handleError(_0x407df8,null));};exports[_0x5957('0x24')]=function(_0x10b89e,_0x58112c){return db[_0x5957('0x2a')][_0x5957('0x41')]({'where':{'id':_0x10b89e[_0x5957('0x3e')]['id']}})['then'](handleEntityNotFound(_0x58112c,null))[_0x5957('0x23')](removeEntity(_0x58112c,null))['catch'](handleError(_0x58112c,null));};exports[_0x5957('0x44')]=function(_0x151d04,_0x15f8d2,_0xeba793){var _0x118f7d={};var _0x1fc9ea={};var _0x39d693;var _0x179e75;return db[_0x5957('0x2a')][_0x5957('0x45')]({'where':{'id':_0x151d04['params']['id']}})[_0x5957('0x23')](handleEntityNotFound(_0x15f8d2,null))[_0x5957('0x23')](function(_0x97bd2a){if(_0x97bd2a){_0x39d693=_0x97bd2a;_0x1fc9ea[_0x5957('0x2d')]=_['keys'](db['ServicenowField']['rawAttributes']);_0x1fc9ea[_0x5957('0x2e')]=_[_0x5957('0x2f')](_0x151d04['query']);_0x1fc9ea[_0x5957('0x30')]=_[_0x5957('0x31')](_0x1fc9ea['model'],_0x1fc9ea['query']);_0x118f7d['attributes']=_[_0x5957('0x31')](_0x1fc9ea[_0x5957('0x2d')],qs['fields'](_0x151d04[_0x5957('0x2e')][_0x5957('0x33')]));_0x118f7d[_0x5957('0x32')]=_0x118f7d['attributes'][_0x5957('0x34')]?_0x118f7d[_0x5957('0x32')]:_0x1fc9ea[_0x5957('0x2d')];_0x118f7d[_0x5957('0x36')]=qs[_0x5957('0x37')](_0x151d04[_0x5957('0x2e')][_0x5957('0x37')]);_0x118f7d[_0x5957('0x38')]=qs[_0x5957('0x30')](_[_0x5957('0x46')](_0x151d04[_0x5957('0x2e')],_0x1fc9ea[_0x5957('0x30')]));if(_0x151d04[_0x5957('0x2e')]['filter']){_0x118f7d[_0x5957('0x38')]=_[_0x5957('0x3a')](_0x118f7d[_0x5957('0x38')],{'$or':_[_0x5957('0x29')](_0x118f7d['attributes'],function(_0x113eaf){var _0x35c5c9={};_0x35c5c9[_0x113eaf]={'$like':'%'+_0x151d04[_0x5957('0x2e')][_0x5957('0x39')]+'%'};return _0x35c5c9;})});}_0x118f7d=_[_0x5957('0x3a')]({},_0x118f7d,_0x151d04[_0x5957('0x47')]);return _0x39d693[_0x5957('0x44')](_0x118f7d);}})[_0x5957('0x23')](function(_0x549445){if(_0x549445){_0x179e75=_0x549445[_0x5957('0x34')];if(!_0x151d04[_0x5957('0x2e')][_0x5957('0x35')](_0x5957('0x48'))){_0x118f7d[_0x5957('0x1d')]=qs[_0x5957('0x1d')](_0x151d04[_0x5957('0x2e')][_0x5957('0x1d')]);_0x118f7d[_0x5957('0x1b')]=qs[_0x5957('0x1b')](_0x151d04[_0x5957('0x2e')][_0x5957('0x1b')]);}return _0x39d693[_0x5957('0x44')](_0x118f7d);}})['then'](function(_0xf84645){if(_0xf84645){return _0xf84645?{'count':_0x179e75,'rows':_0xf84645}:null;}})['then'](respondWithResult(_0x15f8d2,null))[_0x5957('0x3c')](handleError(_0x15f8d2,null));};exports[_0x5957('0x49')]=function(_0x478382,_0x46a9f8,_0x22cce4){var _0xe8962d={};var _0x6af3ed={};var _0x49e385;var _0x49c02d;return db['ServicenowConfiguration'][_0x5957('0x45')]({'where':{'id':_0x478382[_0x5957('0x3e')]['id']}})['then'](handleEntityNotFound(_0x46a9f8,null))[_0x5957('0x23')](function(_0x3a18d8){if(_0x3a18d8){_0x49e385=_0x3a18d8;_0x6af3ed['model']=_[_0x5957('0x2f')](db['ServicenowField']['rawAttributes']);_0x6af3ed[_0x5957('0x2e')]=_['keys'](_0x478382[_0x5957('0x2e')]);_0x6af3ed[_0x5957('0x30')]=_[_0x5957('0x31')](_0x6af3ed[_0x5957('0x2d')],_0x6af3ed[_0x5957('0x2e')]);_0xe8962d[_0x5957('0x32')]=_['intersection'](_0x6af3ed[_0x5957('0x2d')],qs[_0x5957('0x33')](_0x478382[_0x5957('0x2e')][_0x5957('0x33')]));_0xe8962d['attributes']=_0xe8962d['attributes']['length']?_0xe8962d['attributes']:_0x6af3ed[_0x5957('0x2d')];_0xe8962d[_0x5957('0x36')]=qs[_0x5957('0x37')](_0x478382[_0x5957('0x2e')][_0x5957('0x37')]);_0xe8962d[_0x5957('0x38')]=qs['filters'](_[_0x5957('0x46')](_0x478382[_0x5957('0x2e')],_0x6af3ed[_0x5957('0x30')]));if(_0x478382[_0x5957('0x2e')]['filter']){_0xe8962d[_0x5957('0x38')]=_[_0x5957('0x3a')](_0xe8962d['where'],{'$or':_['map'](_0xe8962d[_0x5957('0x32')],function(_0x15ded0){var _0x24676c={};_0x24676c[_0x15ded0]={'$like':'%'+_0x478382[_0x5957('0x2e')][_0x5957('0x39')]+'%'};return _0x24676c;})});}_0xe8962d=_[_0x5957('0x3a')]({},_0xe8962d,_0x478382[_0x5957('0x47')]);return _0x49e385[_0x5957('0x49')](_0xe8962d);}})[_0x5957('0x23')](function(_0x54343b){if(_0x54343b){_0x49c02d=_0x54343b[_0x5957('0x34')];if(!_0x478382[_0x5957('0x2e')][_0x5957('0x35')](_0x5957('0x48'))){_0xe8962d[_0x5957('0x1d')]=qs[_0x5957('0x1d')](_0x478382['query'][_0x5957('0x1d')]);_0xe8962d[_0x5957('0x1b')]=qs['offset'](_0x478382[_0x5957('0x2e')][_0x5957('0x1b')]);}return _0x49e385[_0x5957('0x49')](_0xe8962d);}})['then'](function(_0x4d4d16){if(_0x4d4d16){return _0x4d4d16?{'count':_0x49c02d,'rows':_0x4d4d16}:null;}})[_0x5957('0x23')](respondWithResult(_0x46a9f8,null))['catch'](handleError(_0x46a9f8,null));};exports['getDescriptions']=function(_0x5054dd,_0x50577e,_0x4ba296){var _0x26f44f={};var _0x4824a7={};var _0xcbd78f;var _0x448ac9;return db[_0x5957('0x2a')]['findOne']({'where':{'id':_0x5054dd[_0x5957('0x3e')]['id']}})[_0x5957('0x23')](handleEntityNotFound(_0x50577e,null))[_0x5957('0x23')](function(_0x42540b){if(_0x42540b){_0xcbd78f=_0x42540b;_0x4824a7['model']=_[_0x5957('0x2f')](db[_0x5957('0x4a')]['rawAttributes']);_0x4824a7[_0x5957('0x2e')]=_[_0x5957('0x2f')](_0x5054dd['query']);_0x4824a7[_0x5957('0x30')]=_[_0x5957('0x31')](_0x4824a7[_0x5957('0x2d')],_0x4824a7['query']);_0x26f44f['attributes']=_[_0x5957('0x31')](_0x4824a7[_0x5957('0x2d')],qs[_0x5957('0x33')](_0x5054dd[_0x5957('0x2e')]['fields']));_0x26f44f[_0x5957('0x32')]=_0x26f44f[_0x5957('0x32')][_0x5957('0x34')]?_0x26f44f[_0x5957('0x32')]:_0x4824a7[_0x5957('0x2d')];_0x26f44f[_0x5957('0x36')]=qs['sort'](_0x5054dd[_0x5957('0x2e')][_0x5957('0x37')]);_0x26f44f[_0x5957('0x38')]=qs[_0x5957('0x30')](_[_0x5957('0x46')](_0x5054dd[_0x5957('0x2e')],_0x4824a7['filters']));if(_0x5054dd[_0x5957('0x2e')][_0x5957('0x39')]){_0x26f44f['where']=_[_0x5957('0x3a')](_0x26f44f['where'],{'$or':_['map'](_0x26f44f[_0x5957('0x32')],function(_0x53ad4b){var _0x2323b0={};_0x2323b0[_0x53ad4b]={'$like':'%'+_0x5054dd[_0x5957('0x2e')]['filter']+'%'};return _0x2323b0;})});}_0x26f44f=_[_0x5957('0x3a')]({},_0x26f44f,_0x5054dd[_0x5957('0x47')]);return _0xcbd78f[_0x5957('0x4b')](_0x26f44f);}})[_0x5957('0x23')](function(_0x45a92b){if(_0x45a92b){_0x448ac9=_0x45a92b['length'];if(!_0x5054dd[_0x5957('0x2e')][_0x5957('0x35')]('nolimit')){_0x26f44f[_0x5957('0x1d')]=qs[_0x5957('0x1d')](_0x5054dd[_0x5957('0x2e')][_0x5957('0x1d')]);_0x26f44f['offset']=qs['offset'](_0x5054dd['query'][_0x5957('0x1b')]);}return _0xcbd78f[_0x5957('0x4b')](_0x26f44f);}})[_0x5957('0x23')](function(_0x319aca){if(_0x319aca){return _0x319aca?{'count':_0x448ac9,'rows':_0x319aca}:null;}})[_0x5957('0x23')](respondWithResult(_0x50577e,null))[_0x5957('0x3c')](handleError(_0x50577e,null));};
\ No newline at end of file
index ccedcfe..d1fb6db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['exports','define','ServicenowConfiguration','lodash','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x33bf75,_0x2648ae){_0x33bf75=_0x33bf75-0x0;var _0x54aaa5=_0xdd4f[_0x33bf75];return _0x54aaa5;};'use strict';var _=require(_0xfdd4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfdd4('0x1'));var BPromise=require(_0xfdd4('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfdd4('0x3'));var rimraf=require(_0xfdd4('0x4'));var config=require(_0xfdd4('0x5'));var attributes=require('./intServicenowConfiguration.attributes');module[_0xfdd4('0x6')]=function(_0x43cbcf,_0x30e080){return _0x43cbcf[_0xfdd4('0x7')](_0xfdd4('0x8'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b37=['int_servicenow_configurations','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes'];(function(_0x4c2f17,_0x5c6821){var _0x20919e=function(_0x31eef7){while(--_0x31eef7){_0x4c2f17['push'](_0x4c2f17['shift']());}};_0x20919e(++_0x5c6821);}(_0x7b37,0xd9));var _0x77b3=function(_0x2fc7bb,_0x399dc1){_0x2fc7bb=_0x2fc7bb-0x0;var _0x45fa5b=_0x7b37[_0x2fc7bb];return _0x45fa5b;};'use strict';var _=require(_0x77b3('0x0'));var util=require(_0x77b3('0x1'));var logger=require('../../config/logger')(_0x77b3('0x2'));var moment=require(_0x77b3('0x3'));var BPromise=require('bluebird');var rp=require(_0x77b3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77b3('0x5'));var config=require(_0x77b3('0x6'));var attributes=require(_0x77b3('0x7'));module['exports']=function(_0x3acdea,_0x32345c){return _0x3acdea['define']('ServicenowConfiguration',attributes,{'tableName':_0x77b3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d74ad5b..a57cf3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0760=['request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','ServicenowConfiguration,\x20%s,\x20%s'];(function(_0x1dfa3b,_0x21ee6e){var _0x4f2fda=function(_0xc5309b){while(--_0xc5309b){_0x1dfa3b['push'](_0x1dfa3b['shift']());}};_0x4f2fda(++_0x21ee6e);}(_0x0760,0xa9));var _0x0076=function(_0x546750,_0x4c86d2){_0x546750=_0x546750-0x0;var _0x518b4e=_0x0760[_0x546750];return _0x518b4e;};'use strict';var _=require(_0x0076('0x0'));var util=require('util');var moment=require(_0x0076('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0076('0x2'))['db'];var utils=require(_0x0076('0x3'));var logger=require(_0x0076('0x4'))(_0x0076('0x5'));var config=require(_0x0076('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0076('0x7')][_0x0076('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1b7f29,_0x9b8b1a,_0x1d61d6){return new BPromise(function(_0x5b4c91,_0x411b4b){return client['request'](_0x1b7f29,_0x1d61d6)[_0x0076('0x9')](function(_0x31ad28){logger['info'](_0x0076('0xa'),_0x9b8b1a,_0x0076('0xb'));logger[_0x0076('0xc')](_0x0076('0xd'),_0x9b8b1a,_0x0076('0xb'),JSON[_0x0076('0xe')](_0x31ad28));if(_0x31ad28['error']){if(_0x31ad28[_0x0076('0xf')][_0x0076('0x10')]===0x1f4){logger[_0x0076('0xf')](_0x0076('0xa'),_0x9b8b1a,_0x31ad28[_0x0076('0xf')][_0x0076('0x11')]);return _0x411b4b(_0x31ad28[_0x0076('0xf')][_0x0076('0x11')]);}logger[_0x0076('0xf')](_0x0076('0xa'),_0x9b8b1a,_0x31ad28[_0x0076('0xf')]['message']);return _0x5b4c91(_0x31ad28[_0x0076('0xf')]['message']);}else{logger['info'](_0x0076('0xa'),_0x9b8b1a,_0x0076('0xb'));_0x5b4c91(_0x31ad28['result'][_0x0076('0x11')]);}})['catch'](function(_0x2ff722){logger[_0x0076('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0x9b8b1a,_0x2ff722);_0x411b4b(_0x2ff722);});});}
\ No newline at end of file
+var _0x2b56=['stringify','error','code','message','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','info','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2b56,0x15b));var _0x62b5=function(_0x57b299,_0x34b5c7){_0x57b299=_0x57b299-0x0;var _0x2c410e=_0x2b56[_0x57b299];return _0x2c410e;};'use strict';var _=require('lodash');var util=require(_0x62b5('0x0'));var moment=require(_0x62b5('0x1'));var BPromise=require('bluebird');var rs=require(_0x62b5('0x2'));var fs=require('fs');var Redis=require(_0x62b5('0x3'));var db=require(_0x62b5('0x4'))['db'];var utils=require(_0x62b5('0x5'));var logger=require(_0x62b5('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x62b5('0x7'));var client=jayson['client'][_0x62b5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x588a7d,_0x13e2a5,_0x399460){return new BPromise(function(_0x5ab55c,_0x4184b3){return client['request'](_0x588a7d,_0x399460)['then'](function(_0x269944){logger[_0x62b5('0x9')](_0x62b5('0xa'),_0x13e2a5,'request\x20sent');logger[_0x62b5('0xb')](_0x62b5('0xc'),_0x13e2a5,_0x62b5('0xd'),JSON[_0x62b5('0xe')](_0x269944));if(_0x269944[_0x62b5('0xf')]){if(_0x269944[_0x62b5('0xf')][_0x62b5('0x10')]===0x1f4){logger['error'](_0x62b5('0xa'),_0x13e2a5,_0x269944[_0x62b5('0xf')][_0x62b5('0x11')]);return _0x4184b3(_0x269944[_0x62b5('0xf')]['message']);}logger['error'](_0x62b5('0xa'),_0x13e2a5,_0x269944['error'][_0x62b5('0x11')]);return _0x5ab55c(_0x269944[_0x62b5('0xf')][_0x62b5('0x11')]);}else{logger[_0x62b5('0x9')](_0x62b5('0xa'),_0x13e2a5,'request\x20sent');_0x5ab55c(_0x269944[_0x62b5('0x12')][_0x62b5('0x11')]);}})['catch'](function(_0x45a130){logger[_0x62b5('0xf')](_0x62b5('0xa'),_0x13e2a5,_0x45a130);_0x4184b3(_0x45a130);});});}
\ No newline at end of file
index d23f845..567b6cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9709=['delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','/:id','isAuthenticated','show','post','create','put','update'];(function(_0x2b9af6,_0x475a9b){var _0x20ed39=function(_0x386d34){while(--_0x386d34){_0x2b9af6['push'](_0x2b9af6['shift']());}};_0x20ed39(++_0x475a9b);}(_0x9709,0xc9));var _0x9970=function(_0x37f6d8,_0x444925){_0x37f6d8=_0x37f6d8-0x0;var _0x49f67b=_0x9709[_0x37f6d8];return _0x49f67b;};'use strict';var multer=require('multer');var util=require(_0x9970('0x0'));var path=require(_0x9970('0x1'));var timeout=require(_0x9970('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9970('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x9970('0x4'));var config=require(_0x9970('0x5'));var controller=require(_0x9970('0x6'));router[_0x9970('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x9970('0x8'),auth[_0x9970('0x9')](),controller[_0x9970('0xa')]);router[_0x9970('0xb')]('/',auth[_0x9970('0x9')](),controller[_0x9970('0xc')]);router[_0x9970('0xd')](_0x9970('0x8'),auth[_0x9970('0x9')](),controller[_0x9970('0xe')]);router[_0x9970('0xf')](_0x9970('0x8'),auth[_0x9970('0x9')](),controller[_0x9970('0x10')]);module[_0x9970('0x11')]=router;
\ No newline at end of file
+var _0x2e2e=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','index','/:id','isAuthenticated','create','delete','destroy','exports','multer','util'];(function(_0x579d5c,_0x3476ea){var _0x3e0c9b=function(_0x26afe4){while(--_0x26afe4){_0x579d5c['push'](_0x579d5c['shift']());}};_0x3e0c9b(++_0x3476ea);}(_0x2e2e,0x1d9));var _0xe2e2=function(_0x184445,_0x35ccdf){_0x184445=_0x184445-0x0;var _0x20ff70=_0x2e2e[_0x184445];return _0x20ff70;};'use strict';var multer=require(_0xe2e2('0x0'));var util=require(_0xe2e2('0x1'));var path=require(_0xe2e2('0x2'));var timeout=require(_0xe2e2('0x3'));var express=require(_0xe2e2('0x4'));var router=express[_0xe2e2('0x5')]();var fs_extra=require(_0xe2e2('0x6'));var auth=require(_0xe2e2('0x7'));var interaction=require(_0xe2e2('0x8'));var config=require(_0xe2e2('0x9'));var controller=require(_0xe2e2('0xa'));router[_0xe2e2('0xb')]('/',auth['isAuthenticated'](),controller[_0xe2e2('0xc')]);router['get'](_0xe2e2('0xd'),auth[_0xe2e2('0xe')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xe2e2('0xf')]);router['put'](_0xe2e2('0xd'),auth[_0xe2e2('0xe')](),controller['update']);router[_0xe2e2('0x10')]('/:id',auth[_0xe2e2('0xe')](),controller[_0xe2e2('0x11')]);module[_0xe2e2('0x12')]=router;
\ No newline at end of file
index 7a53783..7226f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa64c=['ENUM','string','customVariable','keyValue','STRING','variable','BOOLEAN','sequelize'];(function(_0x5ac530,_0x4871ca){var _0x2f3071=function(_0x18d934){while(--_0x18d934){_0x5ac530['push'](_0x5ac530['shift']());}};_0x2f3071(++_0x4871ca);}(_0xa64c,0xcf));var _0xca64=function(_0x3a3f2f,_0x3365f6){_0x3a3f2f=_0x3a3f2f-0x0;var _0x1c8a5a=_0xa64c[_0x3a3f2f];return _0x1c8a5a;};'use strict';var Sequelize=require(_0xca64('0x0'));module['exports']={'type':{'type':Sequelize[_0xca64('0x1')](_0xca64('0x2'),'variable',_0xca64('0x3'),_0xca64('0x4'),'picklist'),'defaultValue':_0xca64('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xca64('0x5')]},'keyType':{'type':Sequelize[_0xca64('0x1')](_0xca64('0x2'),_0xca64('0x6'),_0xca64('0x3'))},'keyContent':{'type':Sequelize[_0xca64('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xca64('0x5')]},'customField':{'type':Sequelize[_0xca64('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xca64('0x5')]}};
\ No newline at end of file
+var _0x833f=['customVariable','keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string','variable'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x833f,0x191));var _0xf833=function(_0x45bf48,_0x5dd33e){_0x45bf48=_0x45bf48-0x0;var _0x5299a0=_0x833f[_0x45bf48];return _0x5299a0;};'use strict';var Sequelize=require('sequelize');module[_0xf833('0x0')]={'type':{'type':Sequelize[_0xf833('0x1')](_0xf833('0x2'),_0xf833('0x3'),_0xf833('0x4'),_0xf833('0x5'),_0xf833('0x6')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xf833('0x1')](_0xf833('0x2'),_0xf833('0x3'),_0xf833('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf833('0x7')]},'nameField':{'type':Sequelize[_0xf833('0x7')]},'customField':{'type':Sequelize[_0xf833('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 525ae84..29c17a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe677=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ServicenowField','rawAttributes','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','fields','includeAll','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x5c7006,_0x19b273){var _0x5e7f11=function(_0x5b94e6){while(--_0x5b94e6){_0x5c7006['push'](_0x5c7006['shift']());}};_0x5e7f11(++_0x19b273);}(_0xe677,0xc9));var _0x7e67=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0xe677[_0x4e6ae6];return _0x23c108;};'use strict';var emlformat=require(_0x7e67('0x0'));var rimraf=require(_0x7e67('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7e67('0x2'));var rp=require(_0x7e67('0x3'));var moment=require('moment');var BPromise=require(_0x7e67('0x4'));var Mustache=require(_0x7e67('0x5'));var util=require(_0x7e67('0x6'));var path=require(_0x7e67('0x7'));var sox=require(_0x7e67('0x8'));var csv=require(_0x7e67('0x9'));var ejs=require(_0x7e67('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e67('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7e67('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7e67('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7e67('0xd'));var authService=require(_0x7e67('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x7e67('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7e67('0x10'))(_0x7e67('0x11'));var utils=require(_0x7e67('0x12'));var config=require(_0x7e67('0x13'));var licenseUtil=require(_0x7e67('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x104eed,_0xe5c911){_0xe5c911=_0xe5c911||0xcc;return function(_0x1d908c){if(_0x1d908c){return _0x104eed[_0x7e67('0x15')](_0xe5c911);}return _0x104eed['status'](_0xe5c911)[_0x7e67('0x16')]();};}function respondWithResult(_0xdcf672,_0x38b8af){_0x38b8af=_0x38b8af||0xc8;return function(_0x10b371){if(_0x10b371){return _0xdcf672[_0x7e67('0x17')](_0x38b8af)[_0x7e67('0x18')](_0x10b371);}};}function respondWithFilteredResult(_0x2cff5f,_0x16f910){return function(_0x16beb6){if(_0x16beb6){var _0x5d9c11=typeof _0x16f910['offset']===_0x7e67('0x19')&&typeof _0x16f910['limit']===_0x7e67('0x19');var _0x473b95=_0x16beb6[_0x7e67('0x1a')];var _0x74b461=_0x5d9c11?0x0:_0x16f910[_0x7e67('0x1b')];var _0x11a04f=_0x5d9c11?_0x16beb6[_0x7e67('0x1a')]:_0x16f910[_0x7e67('0x1b')]+_0x16f910[_0x7e67('0x1c')];var _0xd10d34;if(_0x11a04f>=_0x473b95){_0x11a04f=_0x473b95;_0xd10d34=0xc8;}else{_0xd10d34=0xce;}_0x2cff5f[_0x7e67('0x17')](_0xd10d34);return _0x2cff5f[_0x7e67('0x1d')](_0x7e67('0x1e'),_0x74b461+'-'+_0x11a04f+'/'+_0x473b95)[_0x7e67('0x18')](_0x16beb6);}return null;};}function patchUpdates(_0x31393a){return function(_0x4023b2){try{jsonpatch[_0x7e67('0x1f')](_0x4023b2,_0x31393a,!![]);}catch(_0x215269){return BPromise[_0x7e67('0x20')](_0x215269);}return _0x4023b2[_0x7e67('0x21')]();};}function saveUpdates(_0x3b5694,_0x4b4a84){return function(_0x216737){if(_0x216737){return _0x216737[_0x7e67('0x22')](_0x3b5694)[_0x7e67('0x23')](function(_0x1c188d){return _0x1c188d;});}return null;};}function removeEntity(_0x5e67e9,_0x339944){return function(_0x271332){if(_0x271332){return _0x271332[_0x7e67('0x24')]()['then'](function(){_0x5e67e9['status'](0xcc)[_0x7e67('0x16')]();});}};}function handleEntityNotFound(_0x232a38,_0x5982ad){return function(_0x32bf72){if(!_0x32bf72){_0x232a38['sendStatus'](0x194);}return _0x32bf72;};}function handleError(_0x2d89d4,_0x324503){_0x324503=_0x324503||0x1f4;return function(_0x2cc05a){logger[_0x7e67('0x25')](_0x2cc05a[_0x7e67('0x26')]);if(_0x2cc05a[_0x7e67('0x27')]){delete _0x2cc05a['name'];}_0x2d89d4[_0x7e67('0x17')](_0x324503)[_0x7e67('0x28')](_0x2cc05a);};}exports['index']=function(_0x1f6b27,_0x422ccc){var _0x49484a={},_0x21d700={},_0x21dfd2={'count':0x0,'rows':[]};var _0x134c96=_[_0x7e67('0x29')](db[_0x7e67('0x2a')][_0x7e67('0x2b')],function(_0x13f0bf){return{'name':_0x13f0bf['fieldName'],'type':_0x13f0bf['type'][_0x7e67('0x2c')]};});_0x21d700[_0x7e67('0x2d')]=_[_0x7e67('0x29')](_0x134c96,_0x7e67('0x27'));_0x21d700[_0x7e67('0x2e')]=_[_0x7e67('0x2f')](_0x1f6b27['query']);_0x21d700[_0x7e67('0x30')]=_[_0x7e67('0x31')](_0x21d700[_0x7e67('0x2d')],_0x21d700[_0x7e67('0x2e')]);_0x49484a[_0x7e67('0x32')]=_[_0x7e67('0x31')](_0x21d700['model'],qs['fields'](_0x1f6b27[_0x7e67('0x2e')]['fields']));_0x49484a[_0x7e67('0x32')]=_0x49484a[_0x7e67('0x32')][_0x7e67('0x33')]?_0x49484a[_0x7e67('0x32')]:_0x21d700[_0x7e67('0x2d')];if(!_0x1f6b27[_0x7e67('0x2e')][_0x7e67('0x34')](_0x7e67('0x35'))){_0x49484a['limit']=qs['limit'](_0x1f6b27[_0x7e67('0x2e')][_0x7e67('0x1c')]);_0x49484a[_0x7e67('0x1b')]=qs[_0x7e67('0x1b')](_0x1f6b27[_0x7e67('0x2e')]['offset']);}_0x49484a[_0x7e67('0x36')]=qs[_0x7e67('0x37')](_0x1f6b27[_0x7e67('0x2e')]['sort']);_0x49484a[_0x7e67('0x38')]=qs[_0x7e67('0x30')](_[_0x7e67('0x39')](_0x1f6b27[_0x7e67('0x2e')],_0x21d700['filters']),_0x134c96);if(_0x1f6b27[_0x7e67('0x2e')][_0x7e67('0x3a')]){_0x49484a['where']=_['merge'](_0x49484a[_0x7e67('0x38')],{'$or':_['map'](_0x134c96,function(_0x5d1cda){if(_0x5d1cda['type']!==_0x7e67('0x3b')){var _0x3360ae={};_0x3360ae[_0x5d1cda[_0x7e67('0x27')]]={'$like':'%'+_0x1f6b27[_0x7e67('0x2e')][_0x7e67('0x3a')]+'%'};return _0x3360ae;}})});}_0x49484a=_[_0x7e67('0x3c')]({},_0x49484a,_0x1f6b27[_0x7e67('0x3d')]);var _0xb0f427={'where':_0x49484a[_0x7e67('0x38')]};return db[_0x7e67('0x2a')][_0x7e67('0x1a')](_0xb0f427)[_0x7e67('0x23')](function(_0x19a312){_0x21dfd2['count']=_0x19a312;if(_0x1f6b27[_0x7e67('0x2e')]['includeAll']){_0x49484a[_0x7e67('0x3e')]=[{'all':!![]}];}return db[_0x7e67('0x2a')][_0x7e67('0x3f')](_0x49484a);})[_0x7e67('0x23')](function(_0x59a9a7){_0x21dfd2[_0x7e67('0x40')]=_0x59a9a7;return _0x21dfd2;})[_0x7e67('0x23')](respondWithFilteredResult(_0x422ccc,_0x49484a))[_0x7e67('0x41')](handleError(_0x422ccc,null));};exports[_0x7e67('0x42')]=function(_0x41f2c9,_0x2ea96d){var _0x524d8b={'raw':!![],'where':{'id':_0x41f2c9[_0x7e67('0x43')]['id']}},_0x51b9e2={};_0x51b9e2[_0x7e67('0x2d')]=_[_0x7e67('0x2f')](db[_0x7e67('0x2a')][_0x7e67('0x2b')]);_0x51b9e2[_0x7e67('0x2e')]=_[_0x7e67('0x2f')](_0x41f2c9[_0x7e67('0x2e')]);_0x51b9e2['filters']=_[_0x7e67('0x31')](_0x51b9e2[_0x7e67('0x2d')],_0x51b9e2[_0x7e67('0x2e')]);_0x524d8b[_0x7e67('0x32')]=_[_0x7e67('0x31')](_0x51b9e2['model'],qs[_0x7e67('0x44')](_0x41f2c9['query'][_0x7e67('0x44')]));_0x524d8b[_0x7e67('0x32')]=_0x524d8b['attributes'][_0x7e67('0x33')]?_0x524d8b[_0x7e67('0x32')]:_0x51b9e2['model'];if(_0x41f2c9['query'][_0x7e67('0x45')]){_0x524d8b[_0x7e67('0x3e')]=[{'all':!![]}];}_0x524d8b=_[_0x7e67('0x3c')]({},_0x524d8b,_0x41f2c9['options']);return db[_0x7e67('0x2a')]['find'](_0x524d8b)[_0x7e67('0x23')](handleEntityNotFound(_0x2ea96d,null))[_0x7e67('0x23')](respondWithResult(_0x2ea96d,null))['catch'](handleError(_0x2ea96d,null));};exports['create']=function(_0x23f7a9,_0x49bad7){return db[_0x7e67('0x2a')][_0x7e67('0x46')](_0x23f7a9[_0x7e67('0x47')],{})['then'](respondWithResult(_0x49bad7,0xc9))[_0x7e67('0x41')](handleError(_0x49bad7,null));};exports[_0x7e67('0x22')]=function(_0x574cd7,_0x2edd3f){if(_0x574cd7[_0x7e67('0x47')]['id']){delete _0x574cd7['body']['id'];}return db[_0x7e67('0x2a')][_0x7e67('0x48')]({'where':{'id':_0x574cd7[_0x7e67('0x43')]['id']}})[_0x7e67('0x23')](handleEntityNotFound(_0x2edd3f,null))[_0x7e67('0x23')](saveUpdates(_0x574cd7[_0x7e67('0x47')],null))[_0x7e67('0x23')](respondWithResult(_0x2edd3f,null))[_0x7e67('0x41')](handleError(_0x2edd3f,null));};exports[_0x7e67('0x24')]=function(_0x39babc,_0x187559){return db['ServicenowField'][_0x7e67('0x48')]({'where':{'id':_0x39babc[_0x7e67('0x43')]['id']}})[_0x7e67('0x23')](handleEntityNotFound(_0x187559,null))[_0x7e67('0x23')](removeEntity(_0x187559,null))['catch'](handleError(_0x187559,null));};
\ No newline at end of file
+var _0x4936=['zip-dir','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','then','destroy','error','stack','name','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','update','eml-format','rimraf'];(function(_0x3d8ca8,_0x1a9764){var _0x517e45=function(_0x641ad9){while(--_0x641ad9){_0x3d8ca8['push'](_0x3d8ca8['shift']());}};_0x517e45(++_0x1a9764);}(_0x4936,0x96));var _0x6493=function(_0x542bd7,_0x1fe5a7){_0x542bd7=_0x542bd7-0x0;var _0x57f488=_0x4936[_0x542bd7];return _0x57f488;};'use strict';var emlformat=require(_0x6493('0x0'));var rimraf=require(_0x6493('0x1'));var zipdir=require(_0x6493('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6493('0x3'));var moment=require(_0x6493('0x4'));var BPromise=require(_0x6493('0x5'));var Mustache=require(_0x6493('0x6'));var util=require('util');var path=require(_0x6493('0x7'));var sox=require(_0x6493('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6493('0x9'));var _=require(_0x6493('0xa'));var squel=require(_0x6493('0xb'));var crypto=require(_0x6493('0xc'));var jsforce=require(_0x6493('0xd'));var deskjs=require(_0x6493('0xe'));var toCsv=require(_0x6493('0xf'));var querystring=require(_0x6493('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6493('0x11'));var qs=require(_0x6493('0x12'));var as=require(_0x6493('0x13'));var hardwareService=require(_0x6493('0x14'));var logger=require(_0x6493('0x15'))('api');var utils=require(_0x6493('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x6493('0x17'));var db=require(_0x6493('0x18'))['db'];function respondWithStatusCode(_0x3d60cf,_0x30777b){_0x30777b=_0x30777b||0xcc;return function(_0x2fe827){if(_0x2fe827){return _0x3d60cf[_0x6493('0x19')](_0x30777b);}return _0x3d60cf[_0x6493('0x1a')](_0x30777b)[_0x6493('0x1b')]();};}function respondWithResult(_0x3f02c1,_0x477974){_0x477974=_0x477974||0xc8;return function(_0x1ec1de){if(_0x1ec1de){return _0x3f02c1[_0x6493('0x1a')](_0x477974)[_0x6493('0x1c')](_0x1ec1de);}};}function respondWithFilteredResult(_0x6c4c3d,_0x414472){return function(_0x3ddf35){if(_0x3ddf35){var _0x2f83bd=typeof _0x414472[_0x6493('0x1d')]===_0x6493('0x1e')&&typeof _0x414472[_0x6493('0x1f')]===_0x6493('0x1e');var _0x20d4dc=_0x3ddf35[_0x6493('0x20')];var _0x4570ae=_0x2f83bd?0x0:_0x414472[_0x6493('0x1d')];var _0x3159e6=_0x2f83bd?_0x3ddf35['count']:_0x414472[_0x6493('0x1d')]+_0x414472[_0x6493('0x1f')];var _0x2ae093;if(_0x3159e6>=_0x20d4dc){_0x3159e6=_0x20d4dc;_0x2ae093=0xc8;}else{_0x2ae093=0xce;}_0x6c4c3d[_0x6493('0x1a')](_0x2ae093);return _0x6c4c3d[_0x6493('0x21')]('Content-Range',_0x4570ae+'-'+_0x3159e6+'/'+_0x20d4dc)[_0x6493('0x1c')](_0x3ddf35);}return null;};}function patchUpdates(_0x5cd175){return function(_0x5f14fe){try{jsonpatch[_0x6493('0x22')](_0x5f14fe,_0x5cd175,!![]);}catch(_0x5ed5d8){return BPromise[_0x6493('0x23')](_0x5ed5d8);}return _0x5f14fe['save']();};}function saveUpdates(_0x55c5d3,_0x1e19b9){return function(_0x19cf1e){if(_0x19cf1e){return _0x19cf1e['update'](_0x55c5d3)[_0x6493('0x24')](function(_0x414130){return _0x414130;});}return null;};}function removeEntity(_0x238f41,_0x2823ea){return function(_0x1455cc){if(_0x1455cc){return _0x1455cc[_0x6493('0x25')]()[_0x6493('0x24')](function(){_0x238f41['status'](0xcc)[_0x6493('0x1b')]();});}};}function handleEntityNotFound(_0x205aa6,_0x35a15c){return function(_0x5e600f){if(!_0x5e600f){_0x205aa6[_0x6493('0x19')](0x194);}return _0x5e600f;};}function handleError(_0x3fbc22,_0x120805){_0x120805=_0x120805||0x1f4;return function(_0x450b2){logger[_0x6493('0x26')](_0x450b2[_0x6493('0x27')]);if(_0x450b2[_0x6493('0x28')]){delete _0x450b2['name'];}_0x3fbc22[_0x6493('0x1a')](_0x120805)['send'](_0x450b2);};}exports[_0x6493('0x29')]=function(_0x1c0687,_0x4d5a64){var _0x59ba3f={},_0x18f493={},_0x3c28db={'count':0x0,'rows':[]};var _0xae81a4=_[_0x6493('0x2a')](db[_0x6493('0x2b')][_0x6493('0x2c')],function(_0x5f9fa5){return{'name':_0x5f9fa5[_0x6493('0x2d')],'type':_0x5f9fa5[_0x6493('0x2e')][_0x6493('0x2f')]};});_0x18f493[_0x6493('0x30')]=_[_0x6493('0x2a')](_0xae81a4,'name');_0x18f493[_0x6493('0x31')]=_[_0x6493('0x32')](_0x1c0687[_0x6493('0x31')]);_0x18f493['filters']=_[_0x6493('0x33')](_0x18f493[_0x6493('0x30')],_0x18f493[_0x6493('0x31')]);_0x59ba3f[_0x6493('0x34')]=_[_0x6493('0x33')](_0x18f493[_0x6493('0x30')],qs[_0x6493('0x35')](_0x1c0687[_0x6493('0x31')][_0x6493('0x35')]));_0x59ba3f[_0x6493('0x34')]=_0x59ba3f[_0x6493('0x34')][_0x6493('0x36')]?_0x59ba3f['attributes']:_0x18f493[_0x6493('0x30')];if(!_0x1c0687[_0x6493('0x31')][_0x6493('0x37')](_0x6493('0x38'))){_0x59ba3f['limit']=qs[_0x6493('0x1f')](_0x1c0687['query'][_0x6493('0x1f')]);_0x59ba3f['offset']=qs['offset'](_0x1c0687[_0x6493('0x31')][_0x6493('0x1d')]);}_0x59ba3f[_0x6493('0x39')]=qs[_0x6493('0x3a')](_0x1c0687['query'][_0x6493('0x3a')]);_0x59ba3f['where']=qs[_0x6493('0x3b')](_[_0x6493('0x3c')](_0x1c0687[_0x6493('0x31')],_0x18f493[_0x6493('0x3b')]),_0xae81a4);if(_0x1c0687[_0x6493('0x31')][_0x6493('0x3d')]){_0x59ba3f['where']=_[_0x6493('0x3e')](_0x59ba3f[_0x6493('0x3f')],{'$or':_[_0x6493('0x2a')](_0xae81a4,function(_0x5079ef){if(_0x5079ef['type']!=='VIRTUAL'){var _0x39d056={};_0x39d056[_0x5079ef[_0x6493('0x28')]]={'$like':'%'+_0x1c0687['query'][_0x6493('0x3d')]+'%'};return _0x39d056;}})});}_0x59ba3f=_[_0x6493('0x3e')]({},_0x59ba3f,_0x1c0687[_0x6493('0x40')]);var _0x54c616={'where':_0x59ba3f['where']};return db[_0x6493('0x2b')]['count'](_0x54c616)['then'](function(_0x49ca9e){_0x3c28db[_0x6493('0x20')]=_0x49ca9e;if(_0x1c0687[_0x6493('0x31')]['includeAll']){_0x59ba3f[_0x6493('0x41')]=[{'all':!![]}];}return db[_0x6493('0x2b')][_0x6493('0x42')](_0x59ba3f);})[_0x6493('0x24')](function(_0x59dcec){_0x3c28db[_0x6493('0x43')]=_0x59dcec;return _0x3c28db;})[_0x6493('0x24')](respondWithFilteredResult(_0x4d5a64,_0x59ba3f))[_0x6493('0x44')](handleError(_0x4d5a64,null));};exports[_0x6493('0x45')]=function(_0x2a4b53,_0x464130){var _0x1cac65={'raw':!![],'where':{'id':_0x2a4b53[_0x6493('0x46')]['id']}},_0x1d5619={};_0x1d5619[_0x6493('0x30')]=_[_0x6493('0x32')](db[_0x6493('0x2b')][_0x6493('0x2c')]);_0x1d5619[_0x6493('0x31')]=_[_0x6493('0x32')](_0x2a4b53[_0x6493('0x31')]);_0x1d5619[_0x6493('0x3b')]=_[_0x6493('0x33')](_0x1d5619[_0x6493('0x30')],_0x1d5619[_0x6493('0x31')]);_0x1cac65['attributes']=_[_0x6493('0x33')](_0x1d5619['model'],qs[_0x6493('0x35')](_0x2a4b53['query'][_0x6493('0x35')]));_0x1cac65[_0x6493('0x34')]=_0x1cac65['attributes'][_0x6493('0x36')]?_0x1cac65[_0x6493('0x34')]:_0x1d5619[_0x6493('0x30')];if(_0x2a4b53[_0x6493('0x31')][_0x6493('0x47')]){_0x1cac65[_0x6493('0x41')]=[{'all':!![]}];}_0x1cac65=_['merge']({},_0x1cac65,_0x2a4b53[_0x6493('0x40')]);return db[_0x6493('0x2b')][_0x6493('0x48')](_0x1cac65)[_0x6493('0x24')](handleEntityNotFound(_0x464130,null))[_0x6493('0x24')](respondWithResult(_0x464130,null))['catch'](handleError(_0x464130,null));};exports[_0x6493('0x49')]=function(_0x5bd7c5,_0x44491e){return db[_0x6493('0x2b')]['create'](_0x5bd7c5[_0x6493('0x4a')],{})[_0x6493('0x24')](respondWithResult(_0x44491e,0xc9))[_0x6493('0x44')](handleError(_0x44491e,null));};exports[_0x6493('0x4b')]=function(_0x52dd46,_0x12fe63){if(_0x52dd46['body']['id']){delete _0x52dd46[_0x6493('0x4a')]['id'];}return db[_0x6493('0x2b')]['find']({'where':{'id':_0x52dd46['params']['id']}})['then'](handleEntityNotFound(_0x12fe63,null))[_0x6493('0x24')](saveUpdates(_0x52dd46[_0x6493('0x4a')],null))['then'](respondWithResult(_0x12fe63,null))['catch'](handleError(_0x12fe63,null));};exports[_0x6493('0x25')]=function(_0x53592f,_0x2c5e42){return db['ServicenowField']['find']({'where':{'id':_0x53592f[_0x6493('0x46')]['id']}})[_0x6493('0x24')](handleEntityNotFound(_0x2c5e42,null))['then'](removeEntity(_0x2c5e42,null))[_0x6493('0x44')](handleError(_0x2c5e42,null));};
\ No newline at end of file
index 4885ce0..6ffb907 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffa1=['define','servicenow_unique_index','idField','FieldId','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes'];(function(_0x2ea8a2,_0x54fbe1){var _0x63ad64=function(_0x52396a){while(--_0x52396a){_0x2ea8a2['push'](_0x2ea8a2['shift']());}};_0x63ad64(++_0x54fbe1);}(_0xffa1,0x149));var _0x1ffa=function(_0x4a24a6,_0x4c8204){_0x4a24a6=_0x4a24a6-0x0;var _0x26f143=_0xffa1[_0x4a24a6];return _0x26f143;};'use strict';var _=require(_0x1ffa('0x0'));var util=require(_0x1ffa('0x1'));var logger=require('../../config/logger')(_0x1ffa('0x2'));var moment=require('moment');var BPromise=require(_0x1ffa('0x3'));var rp=require(_0x1ffa('0x4'));var fs=require('fs');var path=require(_0x1ffa('0x5'));var rimraf=require(_0x1ffa('0x6'));var config=require(_0x1ffa('0x7'));var attributes=require(_0x1ffa('0x8'));module['exports']=function(_0x5ad37a,_0x467923){return _0x5ad37a[_0x1ffa('0x9')]('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x1ffa('0xa'),'fields':[_0x1ffa('0xb'),_0x1ffa('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33b5=['FieldId','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define','int_servicenow_fields','servicenow_unique_index'];(function(_0x23f725,_0x56327a){var _0x2c89ab=function(_0x2f9375){while(--_0x2f9375){_0x23f725['push'](_0x23f725['shift']());}};_0x2c89ab(++_0x56327a);}(_0x33b5,0x1cf));var _0x533b=function(_0x2452b9,_0x6bb4de){_0x2452b9=_0x2452b9-0x0;var _0x348b0d=_0x33b5[_0x2452b9];return _0x348b0d;};'use strict';var _=require('lodash');var util=require(_0x533b('0x0'));var logger=require(_0x533b('0x1'))(_0x533b('0x2'));var moment=require('moment');var BPromise=require(_0x533b('0x3'));var rp=require(_0x533b('0x4'));var fs=require('fs');var path=require(_0x533b('0x5'));var rimraf=require(_0x533b('0x6'));var config=require(_0x533b('0x7'));var attributes=require(_0x533b('0x8'));module[_0x533b('0x9')]=function(_0x5b5517,_0x4a485c){return _0x5b5517[_0x533b('0xa')]('ServicenowField',attributes,{'tableName':_0x533b('0xb'),'paranoid':![],'indexes':[{'name':_0x533b('0xc'),'fields':['idField',_0x533b('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0d9bb57..8b47069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x504168,_0x23c3a1){var _0x24d158=function(_0x307a01){while(--_0x307a01){_0x504168['push'](_0x504168['shift']());}};_0x24d158(++_0x23c3a1);}(_0x70e0,0x17b));var _0x070e=function(_0x35200d,_0x3bd482){_0x35200d=_0x35200d-0x0;var _0x427395=_0x70e0[_0x35200d];return _0x427395;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _0xe706=['http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x544578,_0x3ff02d){var _0x7fc38c=function(_0x4070d1){while(--_0x4070d1){_0x544578['push'](_0x544578['shift']());}};_0x7fc38c(++_0x3ff02d);}(_0xe706,0xa3));var _0x6e70=function(_0x38d6e8,_0x21c3b9){_0x38d6e8=_0x38d6e8-0x0;var _0x37e27f=_0xe706[_0x38d6e8];return _0x37e27f;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('ServicenowField,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index c4b301c..0fa689b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x237fc8,_0x5da95c){var _0x45d6e5=function(_0x2a466e){while(--_0x2a466e){_0x237fc8['push'](_0x237fc8['shift']());}};_0x45d6e5(++_0x5da95c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4aa0f9,_0x26bb4f){var _0x28cb6f=function(_0x23ad07){while(--_0x23ad07){_0x4aa0f9['push'](_0x4aa0f9['shift']());}};_0x28cb6f(++_0x26bb4f);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index e655fe0..99d3fb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x32040d,_0x26df4d){var _0x38ad8e=function(_0x2ec6c6){while(--_0x2ec6c6){_0x32040d['push'](_0x32040d['shift']());}};_0x38ad8e(++_0x26df4d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x27b01c,_0x28be2d){var _0x1c0682=function(_0x10b1eb){while(--_0x10b1eb){_0x27b01c['push'](_0x27b01c['shift']());}};_0x1c0682(++_0x28be2d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index dc0c3ee..eeb4588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c23=['options','SugarcrmAccount','include','findAll','rows','catch','show','includeAll','find','create','body','params','destroy','getConfigurations','findOne','SugarcrmConfiguration','sort','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','SugarcrmField','getFields','assigned_user_id','description','date_start','direction','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','JSON','stringify','username','xCALLY\x20Motion\x20Integration','Invalid\x20Login','get_module_fields','Calls','values','remove','includes','label','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','order','where','filter','merge','VIRTUAL'];(function(_0x999b85,_0x1edc2b){var _0x1d7124=function(_0x59cd29){while(--_0x59cd29){_0x999b85['push'](_0x999b85['shift']());}};_0x1d7124(++_0x1edc2b);}(_0x8c23,0xaf));var _0x38c2=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x8c23[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x38c2('0x0'));var rimraf=require(_0x38c2('0x1'));var zipdir=require(_0x38c2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x38c2('0x3'));var moment=require(_0x38c2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x38c2('0x5'));var util=require(_0x38c2('0x6'));var path=require(_0x38c2('0x7'));var sox=require(_0x38c2('0x8'));var csv=require(_0x38c2('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38c2('0xa'));var squel=require(_0x38c2('0xb'));var crypto=require(_0x38c2('0xc'));var jsforce=require(_0x38c2('0xd'));var deskjs=require(_0x38c2('0xe'));var toCsv=require(_0x38c2('0x9'));var querystring=require(_0x38c2('0xf'));var Papa=require(_0x38c2('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x38c2('0x11'));var as=require(_0x38c2('0x12'));var hardwareService=require(_0x38c2('0x13'));var logger=require(_0x38c2('0x14'))(_0x38c2('0x15'));var utils=require(_0x38c2('0x16'));var config=require(_0x38c2('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x38c2('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x170f85,_0x58f63b){_0x58f63b=_0x58f63b||0xcc;return function(_0xacb641){if(_0xacb641){return _0x170f85[_0x38c2('0x19')](_0x58f63b);}return _0x170f85[_0x38c2('0x1a')](_0x58f63b)[_0x38c2('0x1b')]();};}function respondWithResult(_0x2fb6ba,_0x137f99){_0x137f99=_0x137f99||0xc8;return function(_0x5f4360){if(_0x5f4360){return _0x2fb6ba[_0x38c2('0x1a')](_0x137f99)[_0x38c2('0x1c')](_0x5f4360);}};}function respondWithFilteredResult(_0x4f1888,_0x349775){return function(_0x1ab9c4){if(_0x1ab9c4){var _0xba9e05=typeof _0x349775[_0x38c2('0x1d')]===_0x38c2('0x1e')&&typeof _0x349775[_0x38c2('0x1f')]===_0x38c2('0x1e');var _0x21f712=_0x1ab9c4[_0x38c2('0x20')];var _0x209b5b=_0xba9e05?0x0:_0x349775[_0x38c2('0x1d')];var _0x4e3453=_0xba9e05?_0x1ab9c4[_0x38c2('0x20')]:_0x349775[_0x38c2('0x1d')]+_0x349775[_0x38c2('0x1f')];var _0x5849f9;if(_0x4e3453>=_0x21f712){_0x4e3453=_0x21f712;_0x5849f9=0xc8;}else{_0x5849f9=0xce;}_0x4f1888[_0x38c2('0x1a')](_0x5849f9);return _0x4f1888[_0x38c2('0x21')](_0x38c2('0x22'),_0x209b5b+'-'+_0x4e3453+'/'+_0x21f712)['json'](_0x1ab9c4);}return null;};}function patchUpdates(_0x1ea6d4){return function(_0x225095){try{jsonpatch[_0x38c2('0x23')](_0x225095,_0x1ea6d4,!![]);}catch(_0x58ec23){return BPromise[_0x38c2('0x24')](_0x58ec23);}return _0x225095[_0x38c2('0x25')]();};}function saveUpdates(_0x69b56,_0xa51ea1){return function(_0x120b2c){if(_0x120b2c){return _0x120b2c[_0x38c2('0x26')](_0x69b56)[_0x38c2('0x27')](function(_0x5a7975){return _0x5a7975;});}return null;};}function removeEntity(_0x1b38b2,_0x1127d0){return function(_0x5d9fc){if(_0x5d9fc){return _0x5d9fc['destroy']()[_0x38c2('0x27')](function(){_0x1b38b2[_0x38c2('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xcfcfdd,_0x5c68fd){return function(_0x441dd5){if(!_0x441dd5){_0xcfcfdd[_0x38c2('0x19')](0x194);}return _0x441dd5;};}function handleError(_0x16f304,_0x1b1b72){_0x1b1b72=_0x1b1b72||0x1f4;return function(_0x115125){logger[_0x38c2('0x28')](_0x115125[_0x38c2('0x29')]);if(_0x115125[_0x38c2('0x2a')]){delete _0x115125['name'];}_0x16f304[_0x38c2('0x1a')](_0x1b1b72)['send'](_0x115125);};}exports[_0x38c2('0x2b')]=function(_0x131785,_0x22e91b){var _0x233fae={},_0xc96ce1={},_0x4bea4c={'count':0x0,'rows':[]};var _0x435d4a=_['map'](db['SugarcrmAccount'][_0x38c2('0x2c')],function(_0x39c51b){return{'name':_0x39c51b[_0x38c2('0x2d')],'type':_0x39c51b[_0x38c2('0x2e')][_0x38c2('0x2f')]};});_0xc96ce1[_0x38c2('0x30')]=_[_0x38c2('0x31')](_0x435d4a,'name');_0xc96ce1['query']=_[_0x38c2('0x32')](_0x131785['query']);_0xc96ce1[_0x38c2('0x33')]=_[_0x38c2('0x34')](_0xc96ce1[_0x38c2('0x30')],_0xc96ce1['query']);_0x233fae['attributes']=_[_0x38c2('0x34')](_0xc96ce1[_0x38c2('0x30')],qs[_0x38c2('0x35')](_0x131785[_0x38c2('0x36')][_0x38c2('0x35')]));_0x233fae[_0x38c2('0x37')]=_0x233fae[_0x38c2('0x37')][_0x38c2('0x38')]?_0x233fae[_0x38c2('0x37')]:_0xc96ce1[_0x38c2('0x30')];if(!_0x131785[_0x38c2('0x36')][_0x38c2('0x39')]('nolimit')){_0x233fae[_0x38c2('0x1f')]=qs[_0x38c2('0x1f')](_0x131785[_0x38c2('0x36')][_0x38c2('0x1f')]);_0x233fae['offset']=qs['offset'](_0x131785[_0x38c2('0x36')]['offset']);}_0x233fae[_0x38c2('0x3a')]=qs['sort'](_0x131785['query']['sort']);_0x233fae[_0x38c2('0x3b')]=qs[_0x38c2('0x33')](_['pick'](_0x131785['query'],_0xc96ce1[_0x38c2('0x33')]),_0x435d4a);if(_0x131785[_0x38c2('0x36')][_0x38c2('0x3c')]){_0x233fae[_0x38c2('0x3b')]=_[_0x38c2('0x3d')](_0x233fae[_0x38c2('0x3b')],{'$or':_[_0x38c2('0x31')](_0x435d4a,function(_0x7cc059){if(_0x7cc059[_0x38c2('0x2e')]!==_0x38c2('0x3e')){var _0xfe5a24={};_0xfe5a24[_0x7cc059['name']]={'$like':'%'+_0x131785[_0x38c2('0x36')][_0x38c2('0x3c')]+'%'};return _0xfe5a24;}})});}_0x233fae=_[_0x38c2('0x3d')]({},_0x233fae,_0x131785[_0x38c2('0x3f')]);var _0x265e2a={'where':_0x233fae[_0x38c2('0x3b')]};return db[_0x38c2('0x40')]['count'](_0x265e2a)[_0x38c2('0x27')](function(_0x560abc){_0x4bea4c[_0x38c2('0x20')]=_0x560abc;if(_0x131785['query']['includeAll']){_0x233fae[_0x38c2('0x41')]=[{'all':!![]}];}return db[_0x38c2('0x40')][_0x38c2('0x42')](_0x233fae);})[_0x38c2('0x27')](function(_0x47e146){_0x4bea4c[_0x38c2('0x43')]=_0x47e146;return _0x4bea4c;})[_0x38c2('0x27')](respondWithFilteredResult(_0x22e91b,_0x233fae))[_0x38c2('0x44')](handleError(_0x22e91b,null));};exports[_0x38c2('0x45')]=function(_0x1be051,_0x490ee9){var _0x1f505b={'raw':![],'where':{'id':_0x1be051['params']['id']}},_0x15696d={};_0x15696d[_0x38c2('0x30')]=_[_0x38c2('0x32')](db[_0x38c2('0x40')][_0x38c2('0x2c')]);_0x15696d['query']=_[_0x38c2('0x32')](_0x1be051[_0x38c2('0x36')]);_0x15696d['filters']=_[_0x38c2('0x34')](_0x15696d[_0x38c2('0x30')],_0x15696d[_0x38c2('0x36')]);_0x1f505b['attributes']=_[_0x38c2('0x34')](_0x15696d[_0x38c2('0x30')],qs[_0x38c2('0x35')](_0x1be051[_0x38c2('0x36')][_0x38c2('0x35')]));_0x1f505b[_0x38c2('0x37')]=_0x1f505b[_0x38c2('0x37')][_0x38c2('0x38')]?_0x1f505b[_0x38c2('0x37')]:_0x15696d[_0x38c2('0x30')];if(_0x1be051['query'][_0x38c2('0x46')]){_0x1f505b[_0x38c2('0x41')]=[{'all':!![]}];}_0x1f505b=_[_0x38c2('0x3d')]({},_0x1f505b,_0x1be051[_0x38c2('0x3f')]);return db[_0x38c2('0x40')][_0x38c2('0x47')](_0x1f505b)[_0x38c2('0x27')](handleEntityNotFound(_0x490ee9,null))[_0x38c2('0x27')](respondWithResult(_0x490ee9,null))[_0x38c2('0x44')](handleError(_0x490ee9,null));};exports[_0x38c2('0x48')]=function(_0x339ba2,_0x3f9dcf){return db[_0x38c2('0x40')][_0x38c2('0x48')](_0x339ba2[_0x38c2('0x49')],{})[_0x38c2('0x27')](respondWithResult(_0x3f9dcf,0xc9))[_0x38c2('0x44')](handleError(_0x3f9dcf,null));};exports[_0x38c2('0x26')]=function(_0x2ddfe7,_0x4a4703){if(_0x2ddfe7[_0x38c2('0x49')]['id']){delete _0x2ddfe7['body']['id'];}return db['SugarcrmAccount']['find']({'where':{'id':_0x2ddfe7[_0x38c2('0x4a')]['id']}})[_0x38c2('0x27')](handleEntityNotFound(_0x4a4703,null))[_0x38c2('0x27')](saveUpdates(_0x2ddfe7['body'],null))[_0x38c2('0x27')](respondWithResult(_0x4a4703,null))[_0x38c2('0x44')](handleError(_0x4a4703,null));};exports[_0x38c2('0x4b')]=function(_0x5a36d7,_0x25aca9){return db['SugarcrmAccount'][_0x38c2('0x47')]({'where':{'id':_0x5a36d7[_0x38c2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x25aca9,null))['then'](removeEntity(_0x25aca9,null))[_0x38c2('0x44')](handleError(_0x25aca9,null));};exports[_0x38c2('0x4c')]=function(_0x416347,_0x9a20dd,_0x4ea2ba){var _0x53f481={};var _0x16717f={};var _0x4929f3;var _0x40588f;return db[_0x38c2('0x40')][_0x38c2('0x4d')]({'where':{'id':_0x416347[_0x38c2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x9a20dd,null))[_0x38c2('0x27')](function(_0x1c3a8b){if(_0x1c3a8b){_0x4929f3=_0x1c3a8b;_0x16717f[_0x38c2('0x30')]=_[_0x38c2('0x32')](db[_0x38c2('0x4e')][_0x38c2('0x2c')]);_0x16717f[_0x38c2('0x36')]=_[_0x38c2('0x32')](_0x416347[_0x38c2('0x36')]);_0x16717f[_0x38c2('0x33')]=_[_0x38c2('0x34')](_0x16717f[_0x38c2('0x30')],_0x16717f[_0x38c2('0x36')]);_0x53f481['attributes']=_[_0x38c2('0x34')](_0x16717f[_0x38c2('0x30')],qs[_0x38c2('0x35')](_0x416347['query'][_0x38c2('0x35')]));_0x53f481['attributes']=_0x53f481[_0x38c2('0x37')][_0x38c2('0x38')]?_0x53f481[_0x38c2('0x37')]:_0x16717f[_0x38c2('0x30')];_0x53f481[_0x38c2('0x3a')]=qs['sort'](_0x416347['query'][_0x38c2('0x4f')]);_0x53f481[_0x38c2('0x3b')]=qs[_0x38c2('0x33')](_['pick'](_0x416347[_0x38c2('0x36')],_0x16717f['filters']));if(_0x416347[_0x38c2('0x36')]['filter']){_0x53f481[_0x38c2('0x3b')]=_[_0x38c2('0x3d')](_0x53f481[_0x38c2('0x3b')],{'$or':_[_0x38c2('0x31')](_0x53f481[_0x38c2('0x37')],function(_0x3d0e34){var _0x5dfcaa={};_0x5dfcaa[_0x3d0e34]={'$like':'%'+_0x416347[_0x38c2('0x36')][_0x38c2('0x3c')]+'%'};return _0x5dfcaa;})});}_0x53f481=_[_0x38c2('0x3d')]({},_0x53f481,_0x416347[_0x38c2('0x3f')]);return _0x4929f3['getConfigurations'](_0x53f481);}})[_0x38c2('0x27')](function(_0x3553e8){if(_0x3553e8){_0x40588f=_0x3553e8['length'];if(!_0x416347[_0x38c2('0x36')]['hasOwnProperty'](_0x38c2('0x50'))){_0x53f481[_0x38c2('0x1f')]=qs[_0x38c2('0x1f')](_0x416347['query']['limit']);_0x53f481[_0x38c2('0x1d')]=qs['offset'](_0x416347[_0x38c2('0x36')][_0x38c2('0x1d')]);}return _0x4929f3[_0x38c2('0x4c')](_0x53f481);}})[_0x38c2('0x27')](function(_0x7c4dca){if(_0x7c4dca){return _0x7c4dca?{'count':_0x40588f,'rows':_0x7c4dca}:null;}})['then'](respondWithResult(_0x9a20dd,null))[_0x38c2('0x44')](handleError(_0x9a20dd,null));};exports[_0x38c2('0x51')]=function(_0x5a6248,_0xd625bb,_0x42921a){if(_0x5a6248[_0x38c2('0x49')]['id']){delete _0x5a6248[_0x38c2('0x49')]['id'];}return db[_0x38c2('0x40')][_0x38c2('0x4d')]({'where':{'id':_0x5a6248[_0x38c2('0x4a')]['id']}})[_0x38c2('0x27')](handleEntityNotFound(_0xd625bb,null))[_0x38c2('0x27')](function(_0x3c8586){if(_0x3c8586){_0x5a6248[_0x38c2('0x49')][_0x38c2('0x52')]=_0x3c8586['id'];_0x5a6248['body'][_0x38c2('0x53')]=integrations['getSubjects'](_0x5a6248[_0x38c2('0x49')][_0x38c2('0x54')],_0x5a6248[_0x38c2('0x49')]['type']);_0x5a6248[_0x38c2('0x49')][_0x38c2('0x55')]=integrations['getDescriptions'](_0x5a6248['body'][_0x38c2('0x54')],_0x5a6248[_0x38c2('0x49')]['type']);return db[_0x38c2('0x4e')][_0x38c2('0x48')](_0x5a6248[_0x38c2('0x49')],{'include':[{'model':db[_0x38c2('0x56')],'as':_0x38c2('0x53')},{'model':db[_0x38c2('0x56')],'as':_0x38c2('0x55')}]});}return null;})[_0x38c2('0x27')](respondWithResult(_0xd625bb,null))[_0x38c2('0x44')](handleError(_0xd625bb,null));};exports[_0x38c2('0x57')]=function(_0x2e671d,_0x4fb503,_0x40308f){var _0xc096d1='';var _0x2d7fdf=['id','name',_0x38c2('0x58'),'created_by',_0x38c2('0x59'),_0x38c2('0x5a'),'duration_hours','duration_minutes','parent_id','parent_type','parent_name',_0x38c2('0x5b')];return db['SugarcrmAccount'][_0x38c2('0x4d')]({'where':{'id':_0x2e671d[_0x38c2('0x4a')]['id']},'attributes':['id','username',_0x38c2('0x5c'),_0x38c2('0x5d')]})['then'](handleEntityNotFound(_0x4fb503,null))[_0x38c2('0x27')](function(_0xc254ed){if(_0xc254ed){_0xc096d1=_0xc254ed[_0x38c2('0x5d')];var _0x47c766=_0xc096d1[_0x38c2('0x5e')](-0x1);if(_0x47c766==='/'){_0xc096d1=_0xc096d1[_0x38c2('0x5f')](0x0,_0xc096d1[_0x38c2('0x60')](_0x47c766));}return rp({'method':_0x38c2('0x61'),'uri':util[_0x38c2('0x62')](_0x38c2('0x63'),_0xc096d1,_0x38c2('0x64')),'json':!![],'form':{'method':'login','input_type':_0x38c2('0x65'),'response_type':_0x38c2('0x65'),'rest_data':JSON[_0x38c2('0x66')]({'user_auth':{'user_name':_0xc254ed[_0x38c2('0x67')],'password':_0xc254ed['password'],'encryption':'PLAIN'},'application':_0x38c2('0x68')})}});}})[_0x38c2('0x27')](function(_0x414e61){if(_0x414e61&&_0x414e61[_0x38c2('0x2a')]!==_0x38c2('0x69')&&_0x414e61[_0x38c2('0x2a')]!=='Password\x20Expired'){return rp({'method':_0x38c2('0x61'),'uri':util[_0x38c2('0x62')](_0x38c2('0x63'),_0xc096d1,_0x38c2('0x64')),'json':!![],'form':{'method':_0x38c2('0x6a'),'input_type':_0x38c2('0x65'),'response_type':_0x38c2('0x65'),'rest_data':JSON[_0x38c2('0x66')]({'session':_0x414e61['id'],'module_name':_0x38c2('0x6b')})}})['then'](function(_0xe02d4e){if(_0xe02d4e){var _0x223296=_[_0x38c2('0x6c')](_0xe02d4e['module_fields']);_[_0x38c2('0x6d')](_0x223296,function(_0x1206a5){return _0x2d7fdf[_0x38c2('0x6e')](_0x1206a5['name']);});return{'count':_0x223296[_0x38c2('0x38')],'rows':_[_0x38c2('0x31')](_0x223296,function(_0x66f28e){return{'id':_0x66f28e[_0x38c2('0x2a')],'name':_0x66f28e[_0x38c2('0x6f')],'custom':_[_0x38c2('0x70')](_0x66f28e[_0x38c2('0x2a')],'_c')?!![]:![],'options':_0x66f28e[_0x38c2('0x3f')]?_[_0x38c2('0x31')](_[_0x38c2('0x6c')](_0x66f28e[_0x38c2('0x3f')]),function(_0x1c93f7){return{'name':_0x1c93f7[_0x38c2('0x71')],'value':_0x1c93f7[_0x38c2('0x2a')]};}):[]};})};}})[_0x38c2('0x27')](respondWithResult(_0x4fb503,null))[_0x38c2('0x44')](function(_0x22dd44){var _0x55ad1f=_0x2e671d[_0x38c2('0x36')]['test']?0x1f4:_0x22dd44[_0x38c2('0x72')]||0x1f4;logger['error'](_0x38c2('0x73'),_0x38c2('0x57'),_0x55ad1f,JSON[_0x38c2('0x66')](_0x22dd44));delete _0x22dd44[_0x38c2('0x2a')];if(_0x55ad1f===0x191){_0x55ad1f=0x190;}_0x4fb503[_0x38c2('0x1a')](_0x55ad1f)[_0x38c2('0x74')](_0x2e671d[_0x38c2('0x36')][_0x38c2('0x75')]?{'message':_0x38c2('0x76'),'statusCode':_0x22dd44['statusCode']}:_0x22dd44);});}else{var _0x2877f1=0x1f4;_0x4fb503[_0x38c2('0x1a')](_0x2877f1)['send']({'message':_0x38c2('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x226f=['SugarcrmField','Subjects','getFields','assigned_user_id','created_by','description','date_start','duration_hours','parent_id','parent_type','parent_name','direction','password','remoteUri','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','stringify','username','PLAIN','get_module_fields','values','includes','length','label','value','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','fieldName','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','SugarcrmAccount','findAll','rows','catch','show','params','rawAttributes','include','create','body','find','getConfigurations','findOne','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions'];(function(_0x272d97,_0x3cb745){var _0x40fc01=function(_0x1ad071){while(--_0x1ad071){_0x272d97['push'](_0x272d97['shift']());}};_0x40fc01(++_0x3cb745);}(_0x226f,0x190));var _0xf226=function(_0x4f49bf,_0x6d06a9){_0x4f49bf=_0x4f49bf-0x0;var _0x240456=_0x226f[_0x4f49bf];return _0x240456;};'use strict';var emlformat=require(_0xf226('0x0'));var rimraf=require(_0xf226('0x1'));var zipdir=require(_0xf226('0x2'));var jsonpatch=require(_0xf226('0x3'));var rp=require(_0xf226('0x4'));var moment=require('moment');var BPromise=require(_0xf226('0x5'));var Mustache=require(_0xf226('0x6'));var util=require(_0xf226('0x7'));var path=require(_0xf226('0x8'));var sox=require(_0xf226('0x9'));var csv=require(_0xf226('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf226('0xb'));var _=require(_0xf226('0xc'));var squel=require(_0xf226('0xd'));var crypto=require(_0xf226('0xe'));var jsforce=require(_0xf226('0xf'));var deskjs=require(_0xf226('0x10'));var toCsv=require(_0xf226('0xa'));var querystring=require(_0xf226('0x11'));var Papa=require(_0xf226('0x12'));var Redis=require(_0xf226('0x13'));var authService=require(_0xf226('0x14'));var qs=require(_0xf226('0x15'));var as=require(_0xf226('0x16'));var hardwareService=require(_0xf226('0x17'));var logger=require(_0xf226('0x18'))(_0xf226('0x19'));var utils=require('../../config/utils');var config=require(_0xf226('0x1a'));var licenseUtil=require(_0xf226('0x1b'));var db=require(_0xf226('0x1c'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3c1980,_0x2009c3){_0x2009c3=_0x2009c3||0xcc;return function(_0x259b6d){if(_0x259b6d){return _0x3c1980[_0xf226('0x1d')](_0x2009c3);}return _0x3c1980[_0xf226('0x1e')](_0x2009c3)[_0xf226('0x1f')]();};}function respondWithResult(_0x1096c2,_0x291528){_0x291528=_0x291528||0xc8;return function(_0x425ea9){if(_0x425ea9){return _0x1096c2[_0xf226('0x1e')](_0x291528)[_0xf226('0x20')](_0x425ea9);}};}function respondWithFilteredResult(_0x3393df,_0x118981){return function(_0x405deb){if(_0x405deb){var _0x3cd86e=typeof _0x118981[_0xf226('0x21')]===_0xf226('0x22')&&typeof _0x118981[_0xf226('0x23')]==='undefined';var _0x264735=_0x405deb[_0xf226('0x24')];var _0x3c1858=_0x3cd86e?0x0:_0x118981[_0xf226('0x21')];var _0x4e7848=_0x3cd86e?_0x405deb['count']:_0x118981[_0xf226('0x21')]+_0x118981['limit'];var _0x264764;if(_0x4e7848>=_0x264735){_0x4e7848=_0x264735;_0x264764=0xc8;}else{_0x264764=0xce;}_0x3393df['status'](_0x264764);return _0x3393df[_0xf226('0x25')]('Content-Range',_0x3c1858+'-'+_0x4e7848+'/'+_0x264735)['json'](_0x405deb);}return null;};}function patchUpdates(_0x5b930c){return function(_0x465681){try{jsonpatch[_0xf226('0x26')](_0x465681,_0x5b930c,!![]);}catch(_0x2aefb2){return BPromise[_0xf226('0x27')](_0x2aefb2);}return _0x465681[_0xf226('0x28')]();};}function saveUpdates(_0x1fac6c,_0x297c40){return function(_0x3fd5c4){if(_0x3fd5c4){return _0x3fd5c4[_0xf226('0x29')](_0x1fac6c)[_0xf226('0x2a')](function(_0x4532ad){return _0x4532ad;});}return null;};}function removeEntity(_0x32ce5d,_0x3f4712){return function(_0x383e34){if(_0x383e34){return _0x383e34[_0xf226('0x2b')]()[_0xf226('0x2a')](function(){_0x32ce5d[_0xf226('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25fbde,_0x2f7a29){return function(_0x14553a){if(!_0x14553a){_0x25fbde[_0xf226('0x1d')](0x194);}return _0x14553a;};}function handleError(_0x3003d0,_0x29c21e){_0x29c21e=_0x29c21e||0x1f4;return function(_0x322004){logger[_0xf226('0x2c')](_0x322004[_0xf226('0x2d')]);if(_0x322004[_0xf226('0x2e')]){delete _0x322004[_0xf226('0x2e')];}_0x3003d0[_0xf226('0x1e')](_0x29c21e)[_0xf226('0x2f')](_0x322004);};}exports[_0xf226('0x30')]=function(_0x17f2eb,_0x25ca0a){var _0x11cdf5={},_0x39a8cc={},_0x1958d3={'count':0x0,'rows':[]};var _0x3df6a3=_[_0xf226('0x31')](db['SugarcrmAccount']['rawAttributes'],function(_0x3ef810){return{'name':_0x3ef810[_0xf226('0x32')],'type':_0x3ef810['type']['key']};});_0x39a8cc[_0xf226('0x33')]=_[_0xf226('0x31')](_0x3df6a3,'name');_0x39a8cc[_0xf226('0x34')]=_[_0xf226('0x35')](_0x17f2eb['query']);_0x39a8cc[_0xf226('0x36')]=_['intersection'](_0x39a8cc[_0xf226('0x33')],_0x39a8cc[_0xf226('0x34')]);_0x11cdf5[_0xf226('0x37')]=_[_0xf226('0x38')](_0x39a8cc['model'],qs[_0xf226('0x39')](_0x17f2eb['query'][_0xf226('0x39')]));_0x11cdf5[_0xf226('0x37')]=_0x11cdf5[_0xf226('0x37')]['length']?_0x11cdf5[_0xf226('0x37')]:_0x39a8cc[_0xf226('0x33')];if(!_0x17f2eb[_0xf226('0x34')][_0xf226('0x3a')](_0xf226('0x3b'))){_0x11cdf5['limit']=qs[_0xf226('0x23')](_0x17f2eb[_0xf226('0x34')][_0xf226('0x23')]);_0x11cdf5[_0xf226('0x21')]=qs[_0xf226('0x21')](_0x17f2eb['query']['offset']);}_0x11cdf5[_0xf226('0x3c')]=qs[_0xf226('0x3d')](_0x17f2eb[_0xf226('0x34')][_0xf226('0x3d')]);_0x11cdf5[_0xf226('0x3e')]=qs['filters'](_[_0xf226('0x3f')](_0x17f2eb[_0xf226('0x34')],_0x39a8cc[_0xf226('0x36')]),_0x3df6a3);if(_0x17f2eb[_0xf226('0x34')][_0xf226('0x40')]){_0x11cdf5['where']=_[_0xf226('0x41')](_0x11cdf5[_0xf226('0x3e')],{'$or':_[_0xf226('0x31')](_0x3df6a3,function(_0x198962){if(_0x198962[_0xf226('0x42')]!==_0xf226('0x43')){var _0x14ef61={};_0x14ef61[_0x198962[_0xf226('0x2e')]]={'$like':'%'+_0x17f2eb[_0xf226('0x34')][_0xf226('0x40')]+'%'};return _0x14ef61;}})});}_0x11cdf5=_['merge']({},_0x11cdf5,_0x17f2eb[_0xf226('0x44')]);var _0x57bd6b={'where':_0x11cdf5['where']};return db['SugarcrmAccount'][_0xf226('0x24')](_0x57bd6b)['then'](function(_0x58d0e2){_0x1958d3[_0xf226('0x24')]=_0x58d0e2;if(_0x17f2eb['query']['includeAll']){_0x11cdf5['include']=[{'all':!![]}];}return db[_0xf226('0x45')][_0xf226('0x46')](_0x11cdf5);})[_0xf226('0x2a')](function(_0xb68464){_0x1958d3[_0xf226('0x47')]=_0xb68464;return _0x1958d3;})[_0xf226('0x2a')](respondWithFilteredResult(_0x25ca0a,_0x11cdf5))[_0xf226('0x48')](handleError(_0x25ca0a,null));};exports[_0xf226('0x49')]=function(_0x42a4ba,_0x132bfc){var _0x33e9ff={'raw':![],'where':{'id':_0x42a4ba[_0xf226('0x4a')]['id']}},_0x295cf3={};_0x295cf3['model']=_[_0xf226('0x35')](db[_0xf226('0x45')][_0xf226('0x4b')]);_0x295cf3[_0xf226('0x34')]=_[_0xf226('0x35')](_0x42a4ba[_0xf226('0x34')]);_0x295cf3[_0xf226('0x36')]=_[_0xf226('0x38')](_0x295cf3[_0xf226('0x33')],_0x295cf3[_0xf226('0x34')]);_0x33e9ff[_0xf226('0x37')]=_[_0xf226('0x38')](_0x295cf3[_0xf226('0x33')],qs['fields'](_0x42a4ba[_0xf226('0x34')][_0xf226('0x39')]));_0x33e9ff[_0xf226('0x37')]=_0x33e9ff[_0xf226('0x37')]['length']?_0x33e9ff[_0xf226('0x37')]:_0x295cf3[_0xf226('0x33')];if(_0x42a4ba['query']['includeAll']){_0x33e9ff[_0xf226('0x4c')]=[{'all':!![]}];}_0x33e9ff=_['merge']({},_0x33e9ff,_0x42a4ba['options']);return db['SugarcrmAccount']['find'](_0x33e9ff)[_0xf226('0x2a')](handleEntityNotFound(_0x132bfc,null))[_0xf226('0x2a')](respondWithResult(_0x132bfc,null))['catch'](handleError(_0x132bfc,null));};exports[_0xf226('0x4d')]=function(_0x396341,_0x326818){return db[_0xf226('0x45')]['create'](_0x396341[_0xf226('0x4e')],{})[_0xf226('0x2a')](respondWithResult(_0x326818,0xc9))[_0xf226('0x48')](handleError(_0x326818,null));};exports['update']=function(_0x5bb5b5,_0x33d07c){if(_0x5bb5b5[_0xf226('0x4e')]['id']){delete _0x5bb5b5[_0xf226('0x4e')]['id'];}return db[_0xf226('0x45')]['find']({'where':{'id':_0x5bb5b5[_0xf226('0x4a')]['id']}})['then'](handleEntityNotFound(_0x33d07c,null))[_0xf226('0x2a')](saveUpdates(_0x5bb5b5[_0xf226('0x4e')],null))['then'](respondWithResult(_0x33d07c,null))[_0xf226('0x48')](handleError(_0x33d07c,null));};exports[_0xf226('0x2b')]=function(_0xf0dd88,_0x21ab06){return db[_0xf226('0x45')][_0xf226('0x4f')]({'where':{'id':_0xf0dd88[_0xf226('0x4a')]['id']}})[_0xf226('0x2a')](handleEntityNotFound(_0x21ab06,null))[_0xf226('0x2a')](removeEntity(_0x21ab06,null))['catch'](handleError(_0x21ab06,null));};exports[_0xf226('0x50')]=function(_0x1013aa,_0x14348b,_0x599e8d){var _0x4f721a={};var _0x35d23d={};var _0x24262f;var _0x40acec;return db['SugarcrmAccount'][_0xf226('0x51')]({'where':{'id':_0x1013aa[_0xf226('0x4a')]['id']}})['then'](handleEntityNotFound(_0x14348b,null))[_0xf226('0x2a')](function(_0x382e41){if(_0x382e41){_0x24262f=_0x382e41;_0x35d23d[_0xf226('0x33')]=_['keys'](db['SugarcrmConfiguration']['rawAttributes']);_0x35d23d['query']=_['keys'](_0x1013aa[_0xf226('0x34')]);_0x35d23d[_0xf226('0x36')]=_['intersection'](_0x35d23d[_0xf226('0x33')],_0x35d23d[_0xf226('0x34')]);_0x4f721a['attributes']=_[_0xf226('0x38')](_0x35d23d['model'],qs[_0xf226('0x39')](_0x1013aa[_0xf226('0x34')][_0xf226('0x39')]));_0x4f721a[_0xf226('0x37')]=_0x4f721a['attributes']['length']?_0x4f721a[_0xf226('0x37')]:_0x35d23d[_0xf226('0x33')];_0x4f721a[_0xf226('0x3c')]=qs[_0xf226('0x3d')](_0x1013aa[_0xf226('0x34')][_0xf226('0x3d')]);_0x4f721a[_0xf226('0x3e')]=qs[_0xf226('0x36')](_[_0xf226('0x3f')](_0x1013aa[_0xf226('0x34')],_0x35d23d[_0xf226('0x36')]));if(_0x1013aa[_0xf226('0x34')][_0xf226('0x40')]){_0x4f721a[_0xf226('0x3e')]=_[_0xf226('0x41')](_0x4f721a[_0xf226('0x3e')],{'$or':_['map'](_0x4f721a['attributes'],function(_0x37deca){var _0x57e1d4={};_0x57e1d4[_0x37deca]={'$like':'%'+_0x1013aa['query'][_0xf226('0x40')]+'%'};return _0x57e1d4;})});}_0x4f721a=_[_0xf226('0x41')]({},_0x4f721a,_0x1013aa[_0xf226('0x44')]);return _0x24262f['getConfigurations'](_0x4f721a);}})[_0xf226('0x2a')](function(_0x4a8244){if(_0x4a8244){_0x40acec=_0x4a8244['length'];if(!_0x1013aa[_0xf226('0x34')][_0xf226('0x3a')](_0xf226('0x3b'))){_0x4f721a[_0xf226('0x23')]=qs[_0xf226('0x23')](_0x1013aa[_0xf226('0x34')]['limit']);_0x4f721a['offset']=qs[_0xf226('0x21')](_0x1013aa[_0xf226('0x34')][_0xf226('0x21')]);}return _0x24262f[_0xf226('0x50')](_0x4f721a);}})[_0xf226('0x2a')](function(_0x4343a3){if(_0x4343a3){return _0x4343a3?{'count':_0x40acec,'rows':_0x4343a3}:null;}})[_0xf226('0x2a')](respondWithResult(_0x14348b,null))[_0xf226('0x48')](handleError(_0x14348b,null));};exports[_0xf226('0x52')]=function(_0x37cbfb,_0x3c46f7,_0xf0a5f0){if(_0x37cbfb[_0xf226('0x4e')]['id']){delete _0x37cbfb[_0xf226('0x4e')]['id'];}return db[_0xf226('0x45')][_0xf226('0x51')]({'where':{'id':_0x37cbfb[_0xf226('0x4a')]['id']}})[_0xf226('0x2a')](handleEntityNotFound(_0x3c46f7,null))[_0xf226('0x2a')](function(_0x30e1d0){if(_0x30e1d0){_0x37cbfb[_0xf226('0x4e')][_0xf226('0x53')]=_0x30e1d0['id'];_0x37cbfb[_0xf226('0x4e')]['Subjects']=integrations[_0xf226('0x54')](_0x37cbfb[_0xf226('0x4e')][_0xf226('0x55')],_0x37cbfb['body'][_0xf226('0x42')]);_0x37cbfb[_0xf226('0x4e')][_0xf226('0x56')]=integrations[_0xf226('0x57')](_0x37cbfb[_0xf226('0x4e')][_0xf226('0x55')],_0x37cbfb[_0xf226('0x4e')][_0xf226('0x42')]);return db['SugarcrmConfiguration'][_0xf226('0x4d')](_0x37cbfb[_0xf226('0x4e')],{'include':[{'model':db[_0xf226('0x58')],'as':_0xf226('0x59')},{'model':db[_0xf226('0x58')],'as':_0xf226('0x56')}]});}return null;})['then'](respondWithResult(_0x3c46f7,null))[_0xf226('0x48')](handleError(_0x3c46f7,null));};exports[_0xf226('0x5a')]=function(_0x513d71,_0x376a3f,_0x553fd8){var _0x229251='';var _0x5df790=['id',_0xf226('0x2e'),_0xf226('0x5b'),_0xf226('0x5c'),_0xf226('0x5d'),_0xf226('0x5e'),_0xf226('0x5f'),'duration_minutes',_0xf226('0x60'),_0xf226('0x61'),_0xf226('0x62'),_0xf226('0x63')];return db[_0xf226('0x45')][_0xf226('0x51')]({'where':{'id':_0x513d71[_0xf226('0x4a')]['id']},'attributes':['id','username',_0xf226('0x64'),_0xf226('0x65')]})[_0xf226('0x2a')](handleEntityNotFound(_0x376a3f,null))[_0xf226('0x2a')](function(_0x527548){if(_0x527548){_0x229251=_0x527548['remoteUri'];var _0x33662e=_0x229251['slice'](-0x1);if(_0x33662e==='/'){_0x229251=_0x229251[_0xf226('0x66')](0x0,_0x229251[_0xf226('0x67')](_0x33662e));}return rp({'method':_0xf226('0x68'),'uri':util[_0xf226('0x69')](_0xf226('0x6a'),_0x229251,_0xf226('0x6b')),'json':!![],'form':{'method':_0xf226('0x6c'),'input_type':_0xf226('0x6d'),'response_type':_0xf226('0x6d'),'rest_data':JSON[_0xf226('0x6e')]({'user_auth':{'user_name':_0x527548[_0xf226('0x6f')],'password':_0x527548['password'],'encryption':_0xf226('0x70')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xf226('0x2a')](function(_0x5e2c8d){if(_0x5e2c8d&&_0x5e2c8d['name']!=='Invalid\x20Login'&&_0x5e2c8d[_0xf226('0x2e')]!=='Password\x20Expired'){return rp({'method':_0xf226('0x68'),'uri':util[_0xf226('0x69')]('%s%s',_0x229251,_0xf226('0x6b')),'json':!![],'form':{'method':_0xf226('0x71'),'input_type':_0xf226('0x6d'),'response_type':_0xf226('0x6d'),'rest_data':JSON['stringify']({'session':_0x5e2c8d['id'],'module_name':'Calls'})}})[_0xf226('0x2a')](function(_0x332ce1){if(_0x332ce1){var _0x51df38=_[_0xf226('0x72')](_0x332ce1['module_fields']);_['remove'](_0x51df38,function(_0x301639){return _0x5df790[_0xf226('0x73')](_0x301639['name']);});return{'count':_0x51df38[_0xf226('0x74')],'rows':_[_0xf226('0x31')](_0x51df38,function(_0x2a4232){return{'id':_0x2a4232[_0xf226('0x2e')],'name':_0x2a4232[_0xf226('0x75')],'custom':_['endsWith'](_0x2a4232[_0xf226('0x2e')],'_c')?!![]:![],'options':_0x2a4232[_0xf226('0x44')]?_[_0xf226('0x31')](_[_0xf226('0x72')](_0x2a4232[_0xf226('0x44')]),function(_0x2894fa){return{'name':_0x2894fa[_0xf226('0x76')],'value':_0x2894fa[_0xf226('0x2e')]};}):[]};})};}})[_0xf226('0x2a')](respondWithResult(_0x376a3f,null))['catch'](function(_0x5811e6){var _0x15c393=_0x513d71[_0xf226('0x34')][_0xf226('0x77')]?0x1f4:_0x5811e6[_0xf226('0x78')]||0x1f4;logger[_0xf226('0x2c')]('getFields,\x20%s,\x20%s,\x20%s',_0xf226('0x5a'),_0x15c393,JSON['stringify'](_0x5811e6));delete _0x5811e6['name'];if(_0x15c393===0x191){_0x15c393=0x190;}_0x376a3f['status'](_0x15c393)[_0xf226('0x2f')](_0x513d71[_0xf226('0x34')][_0xf226('0x77')]?{'message':_0xf226('0x79'),'statusCode':_0x5811e6[_0xf226('0x78')]}:_0x5811e6);});}else{var _0x1f007c=0x1f4;_0x376a3f[_0xf226('0x1e')](_0x1f007c)[_0xf226('0x2f')]({'message':_0xf226('0x79'),'statusCode':0x190});}});};
\ No newline at end of file
index b5f6cd9..0a069f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['bluebird','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','int_sugarcrm_accounts','util','../../config/logger','api','moment'];(function(_0x2c5ce4,_0x1b4766){var _0x4060a3=function(_0x3d4b86){while(--_0x3d4b86){_0x2c5ce4['push'](_0x2c5ce4['shift']());}};_0x4060a3(++_0x1b4766);}(_0x99e9,0xec));var _0x999e=function(_0x2fffff,_0x415518){_0x2fffff=_0x2fffff-0x0;var _0x4f2a2c=_0x99e9[_0x2fffff];return _0x4f2a2c;};'use strict';var _=require('lodash');var util=require(_0x999e('0x0'));var logger=require(_0x999e('0x1'))(_0x999e('0x2'));var moment=require(_0x999e('0x3'));var BPromise=require(_0x999e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x999e('0x5'));var rimraf=require(_0x999e('0x6'));var config=require(_0x999e('0x7'));var attributes=require(_0x999e('0x8'));var integrations=require(_0x999e('0x9'));module[_0x999e('0xa')]=function(_0x4cd669,_0x374c32){return _0x4cd669['define']('SugarcrmAccount',attributes,{'tableName':_0x999e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbc2c=['./intSugarcrmAccount.attributes','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x6d8d0c,_0x25a563){var _0xc0447=function(_0x17edc2){while(--_0x17edc2){_0x6d8d0c['push'](_0x6d8d0c['shift']());}};_0xc0447(++_0x25a563);}(_0xbc2c,0x123));var _0xcbc2=function(_0x1b1a84,_0x1cf20a){_0x1b1a84=_0x1b1a84-0x0;var _0x15e3c9=_0xbc2c[_0x1b1a84];return _0x15e3c9;};'use strict';var _=require(_0xcbc2('0x0'));var util=require(_0xcbc2('0x1'));var logger=require(_0xcbc2('0x2'))(_0xcbc2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcbc2('0x4'));var fs=require('fs');var path=require(_0xcbc2('0x5'));var rimraf=require(_0xcbc2('0x6'));var config=require(_0xcbc2('0x7'));var attributes=require(_0xcbc2('0x8'));var integrations=require(_0xcbc2('0x9'));module['exports']=function(_0x5c04dd,_0x816449){return _0x5c04dd[_0xcbc2('0xa')](_0xcbc2('0xb'),attributes,{'tableName':_0xcbc2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 92e01b7..d9d60d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb06e=['catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','attributes','include','map','model','where','ShowSugarcrmAccount','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','SugarcrmAccount,\x20%s,\x20%s','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info'];(function(_0x11e9d9,_0x1336e6){var _0x3e0a17=function(_0x323f58){while(--_0x323f58){_0x11e9d9['push'](_0x11e9d9['shift']());}};_0x3e0a17(++_0x1336e6);}(_0xb06e,0x1ec));var _0xeb06=function(_0x15a0a5,_0x4226d2){_0x15a0a5=_0x15a0a5-0x0;var _0x1b106e=_0xb06e[_0x15a0a5];return _0x1b106e;};'use strict';var _=require(_0xeb06('0x0'));var util=require('util');var moment=require(_0xeb06('0x1'));var BPromise=require('bluebird');var rs=require(_0xeb06('0x2'));var fs=require('fs');var Redis=require(_0xeb06('0x3'));var db=require(_0xeb06('0x4'))['db'];var utils=require(_0xeb06('0x5'));var logger=require('../../config/logger')(_0xeb06('0x6'));var config=require(_0xeb06('0x7'));var jayson=require(_0xeb06('0x8'));var client=jayson['client'][_0xeb06('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x434ec0,_0x1d9908,_0x4d3f45){return new BPromise(function(_0x168205,_0x131b30){return client[_0xeb06('0xa')](_0x434ec0,_0x4d3f45)[_0xeb06('0xb')](function(_0x1c4fb5){logger['info'](_0xeb06('0xc'),_0x1d9908,'request\x20sent');logger[_0xeb06('0xd')](_0xeb06('0xe'),_0x1d9908,_0xeb06('0xf'),JSON[_0xeb06('0x10')](_0x1c4fb5));if(_0x1c4fb5[_0xeb06('0x11')]){if(_0x1c4fb5[_0xeb06('0x11')]['code']===0x1f4){logger[_0xeb06('0x11')](_0xeb06('0xc'),_0x1d9908,_0x1c4fb5[_0xeb06('0x11')][_0xeb06('0x12')]);return _0x131b30(_0x1c4fb5[_0xeb06('0x11')][_0xeb06('0x12')]);}logger[_0xeb06('0x11')](_0xeb06('0xc'),_0x1d9908,_0x1c4fb5[_0xeb06('0x11')][_0xeb06('0x12')]);return _0x168205(_0x1c4fb5['error'][_0xeb06('0x12')]);}else{logger[_0xeb06('0x13')]('SugarcrmAccount,\x20%s,\x20%s',_0x1d9908,_0xeb06('0xf'));_0x168205(_0x1c4fb5['result']['message']);}})[_0xeb06('0x14')](function(_0x22a9c6){logger['error'](_0xeb06('0xc'),_0x1d9908,_0x22a9c6);_0x131b30(_0x22a9c6);});});}exports[_0xeb06('0x15')]=function(_0x3384e5){var _0x17613a=this;return new Promise(function(_0xeef4d8,_0x4412c2){return db[_0xeb06('0x16')][_0xeb06('0x17')]({'raw':_0x3384e5['options']?_0x3384e5[_0xeb06('0x18')][_0xeb06('0x19')]===undefined?!![]:![]:!![],'where':_0x3384e5['options']?_0x3384e5[_0xeb06('0x18')]['where']||null:null,'attributes':_0x3384e5[_0xeb06('0x18')]?_0x3384e5[_0xeb06('0x18')][_0xeb06('0x1a')]||null:null,'limit':_0x3384e5[_0xeb06('0x18')]?_0x3384e5[_0xeb06('0x18')]['limit']||null:null,'include':_0x3384e5[_0xeb06('0x18')]?_0x3384e5[_0xeb06('0x18')]['include']?_['map'](_0x3384e5[_0xeb06('0x18')][_0xeb06('0x1b')],function(_0x1a2dda){return{'model':db[_0x1a2dda['model']],'as':_0x1a2dda['as'],'attributes':_0x1a2dda[_0xeb06('0x1a')],'include':_0x1a2dda[_0xeb06('0x1b')]?_[_0xeb06('0x1c')](_0x1a2dda[_0xeb06('0x1b')],function(_0x54cea8){return{'model':db[_0x54cea8[_0xeb06('0x1d')]],'as':_0x54cea8['as'],'attributes':_0x54cea8[_0xeb06('0x1a')],'include':_0x54cea8[_0xeb06('0x1b')]?_[_0xeb06('0x1c')](_0x54cea8[_0xeb06('0x1b')],function(_0x28a867){return{'model':db[_0x28a867[_0xeb06('0x1d')]],'as':_0x28a867['as'],'attributes':_0x28a867[_0xeb06('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xeb06('0xb')](function(_0x5486ee){logger[_0xeb06('0x13')]('GetSugarcrmAccount',_0x3384e5);logger[_0xeb06('0xd')]('GetSugarcrmAccount',_0x3384e5,JSON[_0xeb06('0x10')](_0x5486ee));_0xeef4d8(_0x5486ee);})[_0xeb06('0x14')](function(_0xd89998){logger[_0xeb06('0x11')](_0xeb06('0x15'),_0xd89998[_0xeb06('0x12')],_0x3384e5);_0x4412c2(_0x17613a[_0xeb06('0x11')](0x1f4,_0xd89998[_0xeb06('0x12')]));});});};exports['ShowSugarcrmAccount']=function(_0x1e785a){var _0x2f64a8=this;return new Promise(function(_0x4c2f55,_0x774e11){return db[_0xeb06('0x16')]['find']({'raw':_0x1e785a[_0xeb06('0x18')]?_0x1e785a[_0xeb06('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1e785a[_0xeb06('0x18')]?_0x1e785a[_0xeb06('0x18')][_0xeb06('0x1e')]||null:null,'attributes':_0x1e785a['options']?_0x1e785a[_0xeb06('0x18')][_0xeb06('0x1a')]||null:null,'include':_0x1e785a[_0xeb06('0x18')]?_0x1e785a['options'][_0xeb06('0x1b')]?_[_0xeb06('0x1c')](_0x1e785a[_0xeb06('0x18')]['include'],function(_0x5237d0){return{'model':db[_0x5237d0['model']],'as':_0x5237d0['as'],'attributes':_0x5237d0[_0xeb06('0x1a')],'include':_0x5237d0[_0xeb06('0x1b')]?_[_0xeb06('0x1c')](_0x5237d0[_0xeb06('0x1b')],function(_0x4db5e8){return{'model':db[_0x4db5e8[_0xeb06('0x1d')]],'as':_0x4db5e8['as'],'attributes':_0x4db5e8['attributes'],'include':_0x4db5e8[_0xeb06('0x1b')]?_[_0xeb06('0x1c')](_0x4db5e8['include'],function(_0x730f8f){return{'model':db[_0x730f8f[_0xeb06('0x1d')]],'as':_0x730f8f['as'],'attributes':_0x730f8f[_0xeb06('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xeb06('0xb')](function(_0x3d6f94){logger[_0xeb06('0x13')](_0xeb06('0x1f'),_0x1e785a);logger[_0xeb06('0xd')](_0xeb06('0x1f'),_0x1e785a,JSON['stringify'](_0x3d6f94));_0x4c2f55(_0x3d6f94);})[_0xeb06('0x14')](function(_0x23e74d){logger[_0xeb06('0x11')]('ShowSugarcrmAccount',_0x23e74d[_0xeb06('0x12')],_0x1e785a);_0x774e11(_0x2f64a8[_0xeb06('0x11')](0x1f4,_0x23e74d[_0xeb06('0x12')]));});});};
\ No newline at end of file
+var _0x7e8a=['stringify','error','code','message','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','limit','include','map','model','attributes','catch','ShowSugarcrmAccount','find','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3d1514,_0x4f23f6){var _0x4fe496=function(_0x1f6ec9){while(--_0x1f6ec9){_0x3d1514['push'](_0x3d1514['shift']());}};_0x4fe496(++_0x4f23f6);}(_0x7e8a,0xb3));var _0xa7e8=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x7e8a[_0x819464];return _0x49dcc0;};'use strict';var _=require('lodash');var util=require(_0xa7e8('0x0'));var moment=require(_0xa7e8('0x1'));var BPromise=require(_0xa7e8('0x2'));var rs=require(_0xa7e8('0x3'));var fs=require('fs');var Redis=require(_0xa7e8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa7e8('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xa7e8('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3bd603,_0x415245,_0x1e947c){return new BPromise(function(_0x21e470,_0x34b0d5){return client[_0xa7e8('0x7')](_0x3bd603,_0x1e947c)[_0xa7e8('0x8')](function(_0x5f04f1){logger[_0xa7e8('0x9')](_0xa7e8('0xa'),_0x415245,_0xa7e8('0xb'));logger[_0xa7e8('0xc')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x415245,_0xa7e8('0xb'),JSON[_0xa7e8('0xd')](_0x5f04f1));if(_0x5f04f1['error']){if(_0x5f04f1[_0xa7e8('0xe')][_0xa7e8('0xf')]===0x1f4){logger[_0xa7e8('0xe')](_0xa7e8('0xa'),_0x415245,_0x5f04f1['error']['message']);return _0x34b0d5(_0x5f04f1['error'][_0xa7e8('0x10')]);}logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x415245,_0x5f04f1[_0xa7e8('0xe')]['message']);return _0x21e470(_0x5f04f1[_0xa7e8('0xe')]['message']);}else{logger[_0xa7e8('0x9')](_0xa7e8('0xa'),_0x415245,_0xa7e8('0xb'));_0x21e470(_0x5f04f1[_0xa7e8('0x11')][_0xa7e8('0x10')]);}})['catch'](function(_0x3ce665){logger[_0xa7e8('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x415245,_0x3ce665);_0x34b0d5(_0x3ce665);});});}exports[_0xa7e8('0x12')]=function(_0x3d5e4e){var _0x56da84=this;return new Promise(function(_0x1c221c,_0x1b2606){return db[_0xa7e8('0x13')][_0xa7e8('0x14')]({'raw':_0x3d5e4e[_0xa7e8('0x15')]?_0x3d5e4e[_0xa7e8('0x15')][_0xa7e8('0x16')]===undefined?!![]:![]:!![],'where':_0x3d5e4e[_0xa7e8('0x15')]?_0x3d5e4e[_0xa7e8('0x15')][_0xa7e8('0x17')]||null:null,'attributes':_0x3d5e4e[_0xa7e8('0x15')]?_0x3d5e4e['options']['attributes']||null:null,'limit':_0x3d5e4e[_0xa7e8('0x15')]?_0x3d5e4e[_0xa7e8('0x15')][_0xa7e8('0x18')]||null:null,'include':_0x3d5e4e[_0xa7e8('0x15')]?_0x3d5e4e['options'][_0xa7e8('0x19')]?_[_0xa7e8('0x1a')](_0x3d5e4e[_0xa7e8('0x15')][_0xa7e8('0x19')],function(_0x2b14aa){return{'model':db[_0x2b14aa[_0xa7e8('0x1b')]],'as':_0x2b14aa['as'],'attributes':_0x2b14aa[_0xa7e8('0x1c')],'include':_0x2b14aa['include']?_[_0xa7e8('0x1a')](_0x2b14aa['include'],function(_0x52582e){return{'model':db[_0x52582e[_0xa7e8('0x1b')]],'as':_0x52582e['as'],'attributes':_0x52582e[_0xa7e8('0x1c')],'include':_0x52582e[_0xa7e8('0x19')]?_[_0xa7e8('0x1a')](_0x52582e[_0xa7e8('0x19')],function(_0x3ae689){return{'model':db[_0x3ae689[_0xa7e8('0x1b')]],'as':_0x3ae689['as'],'attributes':_0x3ae689['attributes']};}):[]};}):[]};}):[]:[]})[_0xa7e8('0x8')](function(_0x5e1ed8){logger[_0xa7e8('0x9')](_0xa7e8('0x12'),_0x3d5e4e);logger[_0xa7e8('0xc')](_0xa7e8('0x12'),_0x3d5e4e,JSON[_0xa7e8('0xd')](_0x5e1ed8));_0x1c221c(_0x5e1ed8);})[_0xa7e8('0x1d')](function(_0x41bc99){logger['error'](_0xa7e8('0x12'),_0x41bc99[_0xa7e8('0x10')],_0x3d5e4e);_0x1b2606(_0x56da84[_0xa7e8('0xe')](0x1f4,_0x41bc99[_0xa7e8('0x10')]));});});};exports[_0xa7e8('0x1e')]=function(_0x1d227e){var _0x4fab3d=this;return new Promise(function(_0x10a3d4,_0x10901f){return db[_0xa7e8('0x13')][_0xa7e8('0x1f')]({'raw':_0x1d227e[_0xa7e8('0x15')]?_0x1d227e[_0xa7e8('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x1d227e[_0xa7e8('0x15')]?_0x1d227e['options'][_0xa7e8('0x17')]||null:null,'attributes':_0x1d227e[_0xa7e8('0x15')]?_0x1d227e[_0xa7e8('0x15')][_0xa7e8('0x1c')]||null:null,'include':_0x1d227e[_0xa7e8('0x15')]?_0x1d227e[_0xa7e8('0x15')][_0xa7e8('0x19')]?_['map'](_0x1d227e['options']['include'],function(_0x741ea9){return{'model':db[_0x741ea9[_0xa7e8('0x1b')]],'as':_0x741ea9['as'],'attributes':_0x741ea9[_0xa7e8('0x1c')],'include':_0x741ea9['include']?_['map'](_0x741ea9[_0xa7e8('0x19')],function(_0x42720e){return{'model':db[_0x42720e[_0xa7e8('0x1b')]],'as':_0x42720e['as'],'attributes':_0x42720e[_0xa7e8('0x1c')],'include':_0x42720e[_0xa7e8('0x19')]?_['map'](_0x42720e[_0xa7e8('0x19')],function(_0x2ee95e){return{'model':db[_0x2ee95e[_0xa7e8('0x1b')]],'as':_0x2ee95e['as'],'attributes':_0x2ee95e[_0xa7e8('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa7e8('0x8')](function(_0x2ae412){logger[_0xa7e8('0x9')](_0xa7e8('0x1e'),_0x1d227e);logger[_0xa7e8('0xc')](_0xa7e8('0x1e'),_0x1d227e,JSON[_0xa7e8('0xd')](_0x2ae412));_0x10a3d4(_0x2ae412);})[_0xa7e8('0x1d')](function(_0x21db5f){logger[_0xa7e8('0xe')]('ShowSugarcrmAccount',_0x21db5f['message'],_0x1d227e);_0x10901f(_0x4fab3d[_0xa7e8('0xe')](0x1f4,_0x21db5f[_0xa7e8('0x10')]));});});};
\ No newline at end of file
index 653d698..e178641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x538d=['get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller'];(function(_0x3917d3,_0xab2510){var _0x36b6fa=function(_0x5a8fdc){while(--_0x5a8fdc){_0x3917d3['push'](_0x3917d3['shift']());}};_0x36b6fa(++_0xab2510);}(_0x538d,0x10b));var _0xd538=function(_0x1ba970,_0x47746f){_0x1ba970=_0x1ba970-0x0;var _0x5a33f7=_0x538d[_0x1ba970];return _0x5a33f7;};'use strict';var multer=require(_0xd538('0x0'));var util=require(_0xd538('0x1'));var path=require(_0xd538('0x2'));var timeout=require(_0xd538('0x3'));var express=require(_0xd538('0x4'));var router=express['Router']();var fs_extra=require(_0xd538('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd538('0x6'));var config=require(_0xd538('0x7'));var controller=require(_0xd538('0x8'));router[_0xd538('0x9')]('/',auth[_0xd538('0xa')](),controller[_0xd538('0xb')]);router[_0xd538('0x9')](_0xd538('0xc'),auth[_0xd538('0xa')](),controller[_0xd538('0xd')]);router[_0xd538('0x9')](_0xd538('0xe'),auth[_0xd538('0xa')](),controller[_0xd538('0xf')]);router[_0xd538('0x9')](_0xd538('0x10'),auth[_0xd538('0xa')](),controller['getSubjects']);router['get'](_0xd538('0x11'),auth[_0xd538('0xa')](),controller[_0xd538('0x12')]);router[_0xd538('0x13')]('/',auth[_0xd538('0xa')](),controller[_0xd538('0x14')]);router['put'](_0xd538('0xc'),auth[_0xd538('0xa')](),controller['update']);router[_0xd538('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xd538('0x16')]=router;
\ No newline at end of file
+var _0x4d9a=['getSubjects','post','create','update','delete','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','show','getFields','/:id/subjects'];(function(_0x1e0f6e,_0x5a2315){var _0x489ca0=function(_0x48c0ec){while(--_0x48c0ec){_0x1e0f6e['push'](_0x1e0f6e['shift']());}};_0x489ca0(++_0x5a2315);}(_0x4d9a,0xa6));var _0xa4d9=function(_0x3af0a5,_0x18bcd9){_0x3af0a5=_0x3af0a5-0x0;var _0x334aba=_0x4d9a[_0x3af0a5];return _0x334aba;};'use strict';var multer=require(_0xa4d9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa4d9('0x1'));var express=require(_0xa4d9('0x2'));var router=express['Router']();var fs_extra=require(_0xa4d9('0x3'));var auth=require(_0xa4d9('0x4'));var interaction=require(_0xa4d9('0x5'));var config=require(_0xa4d9('0x6'));var controller=require(_0xa4d9('0x7'));router[_0xa4d9('0x8')]('/',auth[_0xa4d9('0x9')](),controller['index']);router[_0xa4d9('0x8')](_0xa4d9('0xa'),auth[_0xa4d9('0x9')](),controller[_0xa4d9('0xb')]);router[_0xa4d9('0x8')]('/:id/fields',auth[_0xa4d9('0x9')](),controller[_0xa4d9('0xc')]);router[_0xa4d9('0x8')](_0xa4d9('0xd'),auth[_0xa4d9('0x9')](),controller[_0xa4d9('0xe')]);router['get']('/:id/descriptions',auth[_0xa4d9('0x9')](),controller['getDescriptions']);router[_0xa4d9('0xf')]('/',auth[_0xa4d9('0x9')](),controller[_0xa4d9('0x10')]);router['put']('/:id',auth[_0xa4d9('0x9')](),controller[_0xa4d9('0x11')]);router[_0xa4d9('0x12')](_0xa4d9('0xa'),auth['isAuthenticated'](),controller[_0xa4d9('0x13')]);module['exports']=router;
\ No newline at end of file
index 9d4eab5..9519336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9112=['sequelize','exports'];(function(_0x4944b5,_0x80ba80){var _0x3e44c7=function(_0x1b62b8){while(--_0x1b62b8){_0x4944b5['push'](_0x4944b5['shift']());}};_0x3e44c7(++_0x80ba80);}(_0x9112,0x1ce));var _0x2911=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9112[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x2911('0x0'));module[_0x2911('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3566=['exports','STRING','sequelize'];(function(_0xe586b9,_0xac7192){var _0x46a05f=function(_0x8e7aab){while(--_0x8e7aab){_0xe586b9['push'](_0xe586b9['shift']());}};_0x46a05f(++_0xac7192);}(_0x3566,0x1a6));var _0x6356=function(_0x23d32a,_0x1596d8){_0x23d32a=_0x23d32a-0x0;var _0x59dc6b=_0x3566[_0x23d32a];return _0x59dc6b;};'use strict';var Sequelize=require(_0x6356('0x0'));module[_0x6356('0x1')]={'name':{'type':Sequelize[_0x6356('0x2')]},'description':{'type':Sequelize[_0x6356('0x2')]}};
\ No newline at end of file
index f795f3b..8f5ec62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d8=['sort','where','pick','filter','merge','then','includeAll','include','show','options','find','catch','create','body','params','SugarcrmField','getFields','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','end','error','name','send','map','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order'];(function(_0x44d5a6,_0x37e14a){var _0x1d793b=function(_0x1b2757){while(--_0x1b2757){_0x44d5a6['push'](_0x44d5a6['shift']());}};_0x1d793b(++_0x37e14a);}(_0x13d8,0x101));var _0x813d=function(_0x5c12ca,_0x39d23d){_0x5c12ca=_0x5c12ca-0x0;var _0x433e29=_0x13d8[_0x5c12ca];return _0x433e29;};'use strict';var emlformat=require(_0x813d('0x0'));var rimraf=require(_0x813d('0x1'));var zipdir=require(_0x813d('0x2'));var jsonpatch=require(_0x813d('0x3'));var rp=require('request-promise');var moment=require(_0x813d('0x4'));var BPromise=require(_0x813d('0x5'));var Mustache=require(_0x813d('0x6'));var util=require(_0x813d('0x7'));var path=require(_0x813d('0x8'));var sox=require(_0x813d('0x9'));var csv=require(_0x813d('0xa'));var ejs=require(_0x813d('0xb'));var fs=require('fs');var fs_extra=require(_0x813d('0xc'));var _=require(_0x813d('0xd'));var squel=require(_0x813d('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x813d('0xf'));var toCsv=require(_0x813d('0xa'));var querystring=require(_0x813d('0x10'));var Papa=require('papaparse');var Redis=require(_0x813d('0x11'));var authService=require(_0x813d('0x12'));var qs=require(_0x813d('0x13'));var as=require(_0x813d('0x14'));var hardwareService=require(_0x813d('0x15'));var logger=require('../../config/logger')(_0x813d('0x16'));var utils=require(_0x813d('0x17'));var config=require(_0x813d('0x18'));var licenseUtil=require(_0x813d('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x308e56,_0x24cf33){_0x24cf33=_0x24cf33||0xcc;return function(_0x16f7ad){if(_0x16f7ad){return _0x308e56[_0x813d('0x1a')](_0x24cf33);}return _0x308e56[_0x813d('0x1b')](_0x24cf33)['end']();};}function respondWithResult(_0x21460f,_0x508da7){_0x508da7=_0x508da7||0xc8;return function(_0x4d39a4){if(_0x4d39a4){return _0x21460f[_0x813d('0x1b')](_0x508da7)[_0x813d('0x1c')](_0x4d39a4);}};}function respondWithFilteredResult(_0xe267ab,_0x51078f){return function(_0x12280a){if(_0x12280a){var _0x54d288=typeof _0x51078f[_0x813d('0x1d')]===_0x813d('0x1e')&&typeof _0x51078f[_0x813d('0x1f')]===_0x813d('0x1e');var _0x42dbbe=_0x12280a['count'];var _0x357fe0=_0x54d288?0x0:_0x51078f[_0x813d('0x1d')];var _0x158873=_0x54d288?_0x12280a[_0x813d('0x20')]:_0x51078f[_0x813d('0x1d')]+_0x51078f[_0x813d('0x1f')];var _0x152cbe;if(_0x158873>=_0x42dbbe){_0x158873=_0x42dbbe;_0x152cbe=0xc8;}else{_0x152cbe=0xce;}_0xe267ab[_0x813d('0x1b')](_0x152cbe);return _0xe267ab['set'](_0x813d('0x21'),_0x357fe0+'-'+_0x158873+'/'+_0x42dbbe)[_0x813d('0x1c')](_0x12280a);}return null;};}function patchUpdates(_0x3dee16){return function(_0x442820){try{jsonpatch[_0x813d('0x22')](_0x442820,_0x3dee16,!![]);}catch(_0x38e539){return BPromise[_0x813d('0x23')](_0x38e539);}return _0x442820['save']();};}function saveUpdates(_0x81df35,_0x5046c1){return function(_0x160be5){if(_0x160be5){return _0x160be5[_0x813d('0x24')](_0x81df35)['then'](function(_0x21936b){return _0x21936b;});}return null;};}function removeEntity(_0x4a9ba7,_0x4dac29){return function(_0x5b0dc7){if(_0x5b0dc7){return _0x5b0dc7[_0x813d('0x25')]()['then'](function(){_0x4a9ba7[_0x813d('0x1b')](0xcc)[_0x813d('0x26')]();});}};}function handleEntityNotFound(_0x35867d,_0x58588b){return function(_0x19e489){if(!_0x19e489){_0x35867d[_0x813d('0x1a')](0x194);}return _0x19e489;};}function handleError(_0x4d3c43,_0x168093){_0x168093=_0x168093||0x1f4;return function(_0x17788b){logger[_0x813d('0x27')](_0x17788b['stack']);if(_0x17788b['name']){delete _0x17788b[_0x813d('0x28')];}_0x4d3c43['status'](_0x168093)[_0x813d('0x29')](_0x17788b);};}exports['index']=function(_0x2555ae,_0x23f113){var _0x419add={},_0x4f7cf4={},_0x4b41b5={'count':0x0,'rows':[]};var _0x1eedbf=_[_0x813d('0x2a')](db[_0x813d('0x2b')][_0x813d('0x2c')],function(_0x18335f){return{'name':_0x18335f[_0x813d('0x2d')],'type':_0x18335f[_0x813d('0x2e')][_0x813d('0x2f')]};});_0x4f7cf4[_0x813d('0x30')]=_[_0x813d('0x2a')](_0x1eedbf,_0x813d('0x28'));_0x4f7cf4[_0x813d('0x31')]=_[_0x813d('0x32')](_0x2555ae[_0x813d('0x31')]);_0x4f7cf4[_0x813d('0x33')]=_['intersection'](_0x4f7cf4[_0x813d('0x30')],_0x4f7cf4['query']);_0x419add['attributes']=_[_0x813d('0x34')](_0x4f7cf4[_0x813d('0x30')],qs[_0x813d('0x35')](_0x2555ae[_0x813d('0x31')][_0x813d('0x35')]));_0x419add['attributes']=_0x419add['attributes'][_0x813d('0x36')]?_0x419add[_0x813d('0x37')]:_0x4f7cf4['model'];if(!_0x2555ae[_0x813d('0x31')][_0x813d('0x38')](_0x813d('0x39'))){_0x419add[_0x813d('0x1f')]=qs[_0x813d('0x1f')](_0x2555ae[_0x813d('0x31')][_0x813d('0x1f')]);_0x419add[_0x813d('0x1d')]=qs[_0x813d('0x1d')](_0x2555ae[_0x813d('0x31')][_0x813d('0x1d')]);}_0x419add[_0x813d('0x3a')]=qs[_0x813d('0x3b')](_0x2555ae['query']['sort']);_0x419add[_0x813d('0x3c')]=qs[_0x813d('0x33')](_[_0x813d('0x3d')](_0x2555ae[_0x813d('0x31')],_0x4f7cf4[_0x813d('0x33')]),_0x1eedbf);if(_0x2555ae[_0x813d('0x31')][_0x813d('0x3e')]){_0x419add[_0x813d('0x3c')]=_[_0x813d('0x3f')](_0x419add['where'],{'$or':_[_0x813d('0x2a')](_0x1eedbf,function(_0x1410f1){if(_0x1410f1[_0x813d('0x2e')]!=='VIRTUAL'){var _0x15c31f={};_0x15c31f[_0x1410f1[_0x813d('0x28')]]={'$like':'%'+_0x2555ae[_0x813d('0x31')][_0x813d('0x3e')]+'%'};return _0x15c31f;}})});}_0x419add=_['merge']({},_0x419add,_0x2555ae['options']);var _0x59b6b3={'where':_0x419add[_0x813d('0x3c')]};return db['SugarcrmConfiguration'][_0x813d('0x20')](_0x59b6b3)[_0x813d('0x40')](function(_0x1cc67b){_0x4b41b5[_0x813d('0x20')]=_0x1cc67b;if(_0x2555ae[_0x813d('0x31')][_0x813d('0x41')]){_0x419add[_0x813d('0x42')]=[{'all':!![]}];}return db[_0x813d('0x2b')]['findAll'](_0x419add);})[_0x813d('0x40')](function(_0x5c76e5){_0x4b41b5['rows']=_0x5c76e5;return _0x4b41b5;})[_0x813d('0x40')](respondWithFilteredResult(_0x23f113,_0x419add))['catch'](handleError(_0x23f113,null));};exports[_0x813d('0x43')]=function(_0x408dd2,_0x21b088){var _0x227ab5={'raw':![],'where':{'id':_0x408dd2['params']['id']}},_0x2ac0a7={};_0x2ac0a7[_0x813d('0x30')]=_['keys'](db[_0x813d('0x2b')]['rawAttributes']);_0x2ac0a7[_0x813d('0x31')]=_['keys'](_0x408dd2[_0x813d('0x31')]);_0x2ac0a7[_0x813d('0x33')]=_[_0x813d('0x34')](_0x2ac0a7['model'],_0x2ac0a7['query']);_0x227ab5[_0x813d('0x37')]=_[_0x813d('0x34')](_0x2ac0a7[_0x813d('0x30')],qs[_0x813d('0x35')](_0x408dd2[_0x813d('0x31')][_0x813d('0x35')]));_0x227ab5[_0x813d('0x37')]=_0x227ab5[_0x813d('0x37')]['length']?_0x227ab5['attributes']:_0x2ac0a7[_0x813d('0x30')];if(_0x408dd2[_0x813d('0x31')][_0x813d('0x41')]){_0x227ab5[_0x813d('0x42')]=[{'all':!![]}];}_0x227ab5=_['merge']({},_0x227ab5,_0x408dd2[_0x813d('0x44')]);return db[_0x813d('0x2b')][_0x813d('0x45')](_0x227ab5)['then'](handleEntityNotFound(_0x21b088,null))[_0x813d('0x40')](respondWithResult(_0x21b088,null))[_0x813d('0x46')](handleError(_0x21b088,null));};exports[_0x813d('0x47')]=function(_0x31a553,_0x3b0000){return db[_0x813d('0x2b')]['create'](_0x31a553[_0x813d('0x48')],{})[_0x813d('0x40')](respondWithResult(_0x3b0000,0xc9))[_0x813d('0x46')](handleError(_0x3b0000,null));};exports['update']=function(_0x44e470,_0x3fd356){if(_0x44e470[_0x813d('0x48')]['id']){delete _0x44e470[_0x813d('0x48')]['id'];}return db[_0x813d('0x2b')][_0x813d('0x45')]({'where':{'id':_0x44e470[_0x813d('0x49')]['id']}})[_0x813d('0x40')](handleEntityNotFound(_0x3fd356,null))[_0x813d('0x40')](saveUpdates(_0x44e470[_0x813d('0x48')],null))['then'](respondWithResult(_0x3fd356,null))[_0x813d('0x46')](handleError(_0x3fd356,null));};exports[_0x813d('0x25')]=function(_0x52ba85,_0x4f4008){return db[_0x813d('0x2b')]['find']({'where':{'id':_0x52ba85[_0x813d('0x49')]['id']}})['then'](handleEntityNotFound(_0x4f4008,null))[_0x813d('0x40')](removeEntity(_0x4f4008,null))[_0x813d('0x46')](handleError(_0x4f4008,null));};exports['getFields']=function(_0x1edf94,_0x5e2e6e,_0x19ab48){var _0x2f5981={};var _0x2f5c37={};var _0x5150b0;var _0x2b3de8;return db[_0x813d('0x2b')]['findOne']({'where':{'id':_0x1edf94[_0x813d('0x49')]['id']}})['then'](handleEntityNotFound(_0x5e2e6e,null))[_0x813d('0x40')](function(_0x3c0a39){if(_0x3c0a39){_0x5150b0=_0x3c0a39;_0x2f5c37[_0x813d('0x30')]=_[_0x813d('0x32')](db[_0x813d('0x4a')][_0x813d('0x2c')]);_0x2f5c37[_0x813d('0x31')]=_['keys'](_0x1edf94['query']);_0x2f5c37[_0x813d('0x33')]=_[_0x813d('0x34')](_0x2f5c37[_0x813d('0x30')],_0x2f5c37[_0x813d('0x31')]);_0x2f5981['attributes']=_['intersection'](_0x2f5c37[_0x813d('0x30')],qs['fields'](_0x1edf94['query'][_0x813d('0x35')]));_0x2f5981['attributes']=_0x2f5981[_0x813d('0x37')][_0x813d('0x36')]?_0x2f5981['attributes']:_0x2f5c37[_0x813d('0x30')];_0x2f5981['order']=qs['sort'](_0x1edf94[_0x813d('0x31')][_0x813d('0x3b')]);_0x2f5981[_0x813d('0x3c')]=qs['filters'](_[_0x813d('0x3d')](_0x1edf94[_0x813d('0x31')],_0x2f5c37[_0x813d('0x33')]));if(_0x1edf94[_0x813d('0x31')][_0x813d('0x3e')]){_0x2f5981[_0x813d('0x3c')]=_[_0x813d('0x3f')](_0x2f5981[_0x813d('0x3c')],{'$or':_[_0x813d('0x2a')](_0x2f5981[_0x813d('0x37')],function(_0x31441b){var _0x551462={};_0x551462[_0x31441b]={'$like':'%'+_0x1edf94['query'][_0x813d('0x3e')]+'%'};return _0x551462;})});}_0x2f5981=_[_0x813d('0x3f')]({},_0x2f5981,_0x1edf94[_0x813d('0x44')]);return _0x5150b0[_0x813d('0x4b')](_0x2f5981);}})[_0x813d('0x40')](function(_0x50b364){if(_0x50b364){_0x2b3de8=_0x50b364[_0x813d('0x36')];if(!_0x1edf94[_0x813d('0x31')][_0x813d('0x38')](_0x813d('0x39'))){_0x2f5981[_0x813d('0x1f')]=qs[_0x813d('0x1f')](_0x1edf94[_0x813d('0x31')][_0x813d('0x1f')]);_0x2f5981[_0x813d('0x1d')]=qs[_0x813d('0x1d')](_0x1edf94[_0x813d('0x31')][_0x813d('0x1d')]);}return _0x5150b0[_0x813d('0x4b')](_0x2f5981);}})[_0x813d('0x40')](function(_0x6e9ab8){if(_0x6e9ab8){return _0x6e9ab8?{'count':_0x2b3de8,'rows':_0x6e9ab8}:null;}})[_0x813d('0x40')](respondWithResult(_0x5e2e6e,null))['catch'](handleError(_0x5e2e6e,null));};exports[_0x813d('0x4c')]=function(_0x38097b,_0x4a143e,_0x297e90){var _0x34120d={};var _0x48ba9b={};var _0x1ab62f;var _0xe1d91a;return db[_0x813d('0x2b')][_0x813d('0x4d')]({'where':{'id':_0x38097b[_0x813d('0x49')]['id']}})[_0x813d('0x40')](handleEntityNotFound(_0x4a143e,null))[_0x813d('0x40')](function(_0x5e3da3){if(_0x5e3da3){_0x1ab62f=_0x5e3da3;_0x48ba9b['model']=_['keys'](db[_0x813d('0x4a')][_0x813d('0x2c')]);_0x48ba9b[_0x813d('0x31')]=_[_0x813d('0x32')](_0x38097b['query']);_0x48ba9b['filters']=_[_0x813d('0x34')](_0x48ba9b['model'],_0x48ba9b[_0x813d('0x31')]);_0x34120d[_0x813d('0x37')]=_[_0x813d('0x34')](_0x48ba9b[_0x813d('0x30')],qs['fields'](_0x38097b[_0x813d('0x31')][_0x813d('0x35')]));_0x34120d[_0x813d('0x37')]=_0x34120d[_0x813d('0x37')][_0x813d('0x36')]?_0x34120d['attributes']:_0x48ba9b[_0x813d('0x30')];_0x34120d[_0x813d('0x3a')]=qs['sort'](_0x38097b[_0x813d('0x31')]['sort']);_0x34120d[_0x813d('0x3c')]=qs[_0x813d('0x33')](_['pick'](_0x38097b[_0x813d('0x31')],_0x48ba9b['filters']));if(_0x38097b['query'][_0x813d('0x3e')]){_0x34120d['where']=_[_0x813d('0x3f')](_0x34120d[_0x813d('0x3c')],{'$or':_['map'](_0x34120d[_0x813d('0x37')],function(_0x443ab1){var _0x38ba89={};_0x38ba89[_0x443ab1]={'$like':'%'+_0x38097b[_0x813d('0x31')][_0x813d('0x3e')]+'%'};return _0x38ba89;})});}_0x34120d=_[_0x813d('0x3f')]({},_0x34120d,_0x38097b[_0x813d('0x44')]);return _0x1ab62f[_0x813d('0x4c')](_0x34120d);}})[_0x813d('0x40')](function(_0x5b4ea3){if(_0x5b4ea3){_0xe1d91a=_0x5b4ea3[_0x813d('0x36')];if(!_0x38097b[_0x813d('0x31')][_0x813d('0x38')](_0x813d('0x39'))){_0x34120d[_0x813d('0x1f')]=qs[_0x813d('0x1f')](_0x38097b[_0x813d('0x31')][_0x813d('0x1f')]);_0x34120d[_0x813d('0x1d')]=qs[_0x813d('0x1d')](_0x38097b[_0x813d('0x31')][_0x813d('0x1d')]);}return _0x1ab62f[_0x813d('0x4c')](_0x34120d);}})[_0x813d('0x40')](function(_0x298fac){if(_0x298fac){return _0x298fac?{'count':_0xe1d91a,'rows':_0x298fac}:null;}})[_0x813d('0x40')](respondWithResult(_0x4a143e,null))[_0x813d('0x46')](handleError(_0x4a143e,null));};exports['getDescriptions']=function(_0x1ea4f6,_0xf6456a,_0x4e4ba8){var _0x3bf6c6={};var _0x2e6047={};var _0x53d8bc;var _0x5e8f06;return db[_0x813d('0x2b')][_0x813d('0x4d')]({'where':{'id':_0x1ea4f6[_0x813d('0x49')]['id']}})[_0x813d('0x40')](handleEntityNotFound(_0xf6456a,null))[_0x813d('0x40')](function(_0x50543b){if(_0x50543b){_0x53d8bc=_0x50543b;_0x2e6047['model']=_[_0x813d('0x32')](db[_0x813d('0x4a')][_0x813d('0x2c')]);_0x2e6047[_0x813d('0x31')]=_[_0x813d('0x32')](_0x1ea4f6[_0x813d('0x31')]);_0x2e6047[_0x813d('0x33')]=_[_0x813d('0x34')](_0x2e6047[_0x813d('0x30')],_0x2e6047[_0x813d('0x31')]);_0x3bf6c6[_0x813d('0x37')]=_[_0x813d('0x34')](_0x2e6047[_0x813d('0x30')],qs[_0x813d('0x35')](_0x1ea4f6['query'][_0x813d('0x35')]));_0x3bf6c6['attributes']=_0x3bf6c6[_0x813d('0x37')]['length']?_0x3bf6c6[_0x813d('0x37')]:_0x2e6047[_0x813d('0x30')];_0x3bf6c6[_0x813d('0x3a')]=qs['sort'](_0x1ea4f6[_0x813d('0x31')][_0x813d('0x3b')]);_0x3bf6c6[_0x813d('0x3c')]=qs[_0x813d('0x33')](_[_0x813d('0x3d')](_0x1ea4f6['query'],_0x2e6047[_0x813d('0x33')]));if(_0x1ea4f6[_0x813d('0x31')][_0x813d('0x3e')]){_0x3bf6c6[_0x813d('0x3c')]=_[_0x813d('0x3f')](_0x3bf6c6[_0x813d('0x3c')],{'$or':_[_0x813d('0x2a')](_0x3bf6c6[_0x813d('0x37')],function(_0x32f30c){var _0x2b459d={};_0x2b459d[_0x32f30c]={'$like':'%'+_0x1ea4f6[_0x813d('0x31')]['filter']+'%'};return _0x2b459d;})});}_0x3bf6c6=_[_0x813d('0x3f')]({},_0x3bf6c6,_0x1ea4f6[_0x813d('0x44')]);return _0x53d8bc[_0x813d('0x4e')](_0x3bf6c6);}})['then'](function(_0x2994d2){if(_0x2994d2){_0x5e8f06=_0x2994d2[_0x813d('0x36')];if(!_0x1ea4f6[_0x813d('0x31')][_0x813d('0x38')](_0x813d('0x39'))){_0x3bf6c6['limit']=qs[_0x813d('0x1f')](_0x1ea4f6[_0x813d('0x31')][_0x813d('0x1f')]);_0x3bf6c6[_0x813d('0x1d')]=qs['offset'](_0x1ea4f6['query'][_0x813d('0x1d')]);}return _0x53d8bc[_0x813d('0x4e')](_0x3bf6c6);}})['then'](function(_0x2d7651){if(_0x2d7651){return _0x2d7651?{'count':_0x5e8f06,'rows':_0x2d7651}:null;}})[_0x813d('0x40')](respondWithResult(_0xf6456a,null))[_0x813d('0x46')](handleError(_0xf6456a,null));};
\ No newline at end of file
+var _0xc19e=['update','body','SugarcrmField','order','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy','error','stack','name','index','map','fieldName','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','SugarcrmConfiguration','findAll','rows','catch','show','params','keys','rawAttributes','fields','includeAll','find','create'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xc19e,0x100));var _0xec19=function(_0x5e4083,_0x510fdf){_0x5e4083=_0x5e4083-0x0;var _0x421470=_0xc19e[_0x5e4083];return _0x421470;};'use strict';var emlformat=require(_0xec19('0x0'));var rimraf=require(_0xec19('0x1'));var zipdir=require(_0xec19('0x2'));var jsonpatch=require(_0xec19('0x3'));var rp=require(_0xec19('0x4'));var moment=require('moment');var BPromise=require(_0xec19('0x5'));var Mustache=require(_0xec19('0x6'));var util=require(_0xec19('0x7'));var path=require(_0xec19('0x8'));var sox=require(_0xec19('0x9'));var csv=require(_0xec19('0xa'));var ejs=require(_0xec19('0xb'));var fs=require('fs');var fs_extra=require(_0xec19('0xc'));var _=require(_0xec19('0xd'));var squel=require(_0xec19('0xe'));var crypto=require(_0xec19('0xf'));var jsforce=require(_0xec19('0x10'));var deskjs=require(_0xec19('0x11'));var toCsv=require(_0xec19('0xa'));var querystring=require(_0xec19('0x12'));var Papa=require('papaparse');var Redis=require(_0xec19('0x13'));var authService=require(_0xec19('0x14'));var qs=require(_0xec19('0x15'));var as=require(_0xec19('0x16'));var hardwareService=require(_0xec19('0x17'));var logger=require(_0xec19('0x18'))(_0xec19('0x19'));var utils=require('../../config/utils');var config=require(_0xec19('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2100a2,_0x4b03e4){_0x4b03e4=_0x4b03e4||0xcc;return function(_0x499bb6){if(_0x499bb6){return _0x2100a2[_0xec19('0x1b')](_0x4b03e4);}return _0x2100a2[_0xec19('0x1c')](_0x4b03e4)[_0xec19('0x1d')]();};}function respondWithResult(_0x5b0744,_0x36623f){_0x36623f=_0x36623f||0xc8;return function(_0x179bef){if(_0x179bef){return _0x5b0744[_0xec19('0x1c')](_0x36623f)[_0xec19('0x1e')](_0x179bef);}};}function respondWithFilteredResult(_0x5cb8ff,_0x96950a){return function(_0x3d318a){if(_0x3d318a){var _0x2acfe9=typeof _0x96950a['offset']===_0xec19('0x1f')&&typeof _0x96950a[_0xec19('0x20')]===_0xec19('0x1f');var _0x380595=_0x3d318a[_0xec19('0x21')];var _0x33a5f9=_0x2acfe9?0x0:_0x96950a['offset'];var _0x135080=_0x2acfe9?_0x3d318a['count']:_0x96950a[_0xec19('0x22')]+_0x96950a[_0xec19('0x20')];var _0x5ce436;if(_0x135080>=_0x380595){_0x135080=_0x380595;_0x5ce436=0xc8;}else{_0x5ce436=0xce;}_0x5cb8ff[_0xec19('0x1c')](_0x5ce436);return _0x5cb8ff[_0xec19('0x23')](_0xec19('0x24'),_0x33a5f9+'-'+_0x135080+'/'+_0x380595)[_0xec19('0x1e')](_0x3d318a);}return null;};}function patchUpdates(_0x2a623a){return function(_0x3afc1){try{jsonpatch[_0xec19('0x25')](_0x3afc1,_0x2a623a,!![]);}catch(_0x525091){return BPromise[_0xec19('0x26')](_0x525091);}return _0x3afc1['save']();};}function saveUpdates(_0x43e5f4,_0x1fade9){return function(_0x3c4447){if(_0x3c4447){return _0x3c4447['update'](_0x43e5f4)[_0xec19('0x27')](function(_0x5e2c71){return _0x5e2c71;});}return null;};}function removeEntity(_0x134d4b,_0x29da59){return function(_0x275aec){if(_0x275aec){return _0x275aec[_0xec19('0x28')]()[_0xec19('0x27')](function(){_0x134d4b[_0xec19('0x1c')](0xcc)[_0xec19('0x1d')]();});}};}function handleEntityNotFound(_0x391498,_0x26052b){return function(_0x19783f){if(!_0x19783f){_0x391498['sendStatus'](0x194);}return _0x19783f;};}function handleError(_0x7a925d,_0x25a422){_0x25a422=_0x25a422||0x1f4;return function(_0x192107){logger[_0xec19('0x29')](_0x192107[_0xec19('0x2a')]);if(_0x192107[_0xec19('0x2b')]){delete _0x192107[_0xec19('0x2b')];}_0x7a925d['status'](_0x25a422)['send'](_0x192107);};}exports[_0xec19('0x2c')]=function(_0x548ffa,_0x4968d8){var _0x1cd397={},_0x43754a={},_0x3c1529={'count':0x0,'rows':[]};var _0x2b350b=_[_0xec19('0x2d')](db['SugarcrmConfiguration']['rawAttributes'],function(_0x1aecaa){return{'name':_0x1aecaa[_0xec19('0x2e')],'type':_0x1aecaa['type'][_0xec19('0x2f')]};});_0x43754a[_0xec19('0x30')]=_[_0xec19('0x2d')](_0x2b350b,'name');_0x43754a[_0xec19('0x31')]=_['keys'](_0x548ffa['query']);_0x43754a[_0xec19('0x32')]=_[_0xec19('0x33')](_0x43754a[_0xec19('0x30')],_0x43754a[_0xec19('0x31')]);_0x1cd397[_0xec19('0x34')]=_[_0xec19('0x33')](_0x43754a[_0xec19('0x30')],qs['fields'](_0x548ffa[_0xec19('0x31')]['fields']));_0x1cd397['attributes']=_0x1cd397[_0xec19('0x34')][_0xec19('0x35')]?_0x1cd397[_0xec19('0x34')]:_0x43754a[_0xec19('0x30')];if(!_0x548ffa[_0xec19('0x31')][_0xec19('0x36')](_0xec19('0x37'))){_0x1cd397[_0xec19('0x20')]=qs['limit'](_0x548ffa[_0xec19('0x31')][_0xec19('0x20')]);_0x1cd397[_0xec19('0x22')]=qs[_0xec19('0x22')](_0x548ffa[_0xec19('0x31')]['offset']);}_0x1cd397['order']=qs[_0xec19('0x38')](_0x548ffa[_0xec19('0x31')][_0xec19('0x38')]);_0x1cd397[_0xec19('0x39')]=qs[_0xec19('0x32')](_[_0xec19('0x3a')](_0x548ffa['query'],_0x43754a[_0xec19('0x32')]),_0x2b350b);if(_0x548ffa[_0xec19('0x31')][_0xec19('0x3b')]){_0x1cd397[_0xec19('0x39')]=_[_0xec19('0x3c')](_0x1cd397[_0xec19('0x39')],{'$or':_['map'](_0x2b350b,function(_0x167955){if(_0x167955['type']!==_0xec19('0x3d')){var _0x3fb6f1={};_0x3fb6f1[_0x167955[_0xec19('0x2b')]]={'$like':'%'+_0x548ffa['query'][_0xec19('0x3b')]+'%'};return _0x3fb6f1;}})});}_0x1cd397=_['merge']({},_0x1cd397,_0x548ffa[_0xec19('0x3e')]);var _0x40cd42={'where':_0x1cd397[_0xec19('0x39')]};return db['SugarcrmConfiguration'][_0xec19('0x21')](_0x40cd42)[_0xec19('0x27')](function(_0x4146ee){_0x3c1529[_0xec19('0x21')]=_0x4146ee;if(_0x548ffa['query']['includeAll']){_0x1cd397[_0xec19('0x3f')]=[{'all':!![]}];}return db[_0xec19('0x40')][_0xec19('0x41')](_0x1cd397);})[_0xec19('0x27')](function(_0x50ee80){_0x3c1529[_0xec19('0x42')]=_0x50ee80;return _0x3c1529;})[_0xec19('0x27')](respondWithFilteredResult(_0x4968d8,_0x1cd397))[_0xec19('0x43')](handleError(_0x4968d8,null));};exports[_0xec19('0x44')]=function(_0x36ca8f,_0x147d11){var _0x12b32d={'raw':![],'where':{'id':_0x36ca8f[_0xec19('0x45')]['id']}},_0x3556ab={};_0x3556ab[_0xec19('0x30')]=_[_0xec19('0x46')](db[_0xec19('0x40')][_0xec19('0x47')]);_0x3556ab[_0xec19('0x31')]=_[_0xec19('0x46')](_0x36ca8f[_0xec19('0x31')]);_0x3556ab[_0xec19('0x32')]=_[_0xec19('0x33')](_0x3556ab[_0xec19('0x30')],_0x3556ab[_0xec19('0x31')]);_0x12b32d[_0xec19('0x34')]=_[_0xec19('0x33')](_0x3556ab[_0xec19('0x30')],qs['fields'](_0x36ca8f[_0xec19('0x31')][_0xec19('0x48')]));_0x12b32d[_0xec19('0x34')]=_0x12b32d[_0xec19('0x34')]['length']?_0x12b32d[_0xec19('0x34')]:_0x3556ab['model'];if(_0x36ca8f[_0xec19('0x31')][_0xec19('0x49')]){_0x12b32d[_0xec19('0x3f')]=[{'all':!![]}];}_0x12b32d=_[_0xec19('0x3c')]({},_0x12b32d,_0x36ca8f['options']);return db['SugarcrmConfiguration'][_0xec19('0x4a')](_0x12b32d)[_0xec19('0x27')](handleEntityNotFound(_0x147d11,null))[_0xec19('0x27')](respondWithResult(_0x147d11,null))['catch'](handleError(_0x147d11,null));};exports[_0xec19('0x4b')]=function(_0x5d69ca,_0x3790cc){return db[_0xec19('0x40')][_0xec19('0x4b')](_0x5d69ca['body'],{})[_0xec19('0x27')](respondWithResult(_0x3790cc,0xc9))['catch'](handleError(_0x3790cc,null));};exports[_0xec19('0x4c')]=function(_0x318c84,_0xb976ce){if(_0x318c84[_0xec19('0x4d')]['id']){delete _0x318c84[_0xec19('0x4d')]['id'];}return db[_0xec19('0x40')]['find']({'where':{'id':_0x318c84[_0xec19('0x45')]['id']}})['then'](handleEntityNotFound(_0xb976ce,null))['then'](saveUpdates(_0x318c84[_0xec19('0x4d')],null))[_0xec19('0x27')](respondWithResult(_0xb976ce,null))[_0xec19('0x43')](handleError(_0xb976ce,null));};exports[_0xec19('0x28')]=function(_0x29149a,_0x1a9dc6){return db['SugarcrmConfiguration']['find']({'where':{'id':_0x29149a[_0xec19('0x45')]['id']}})[_0xec19('0x27')](handleEntityNotFound(_0x1a9dc6,null))[_0xec19('0x27')](removeEntity(_0x1a9dc6,null))[_0xec19('0x43')](handleError(_0x1a9dc6,null));};exports['getFields']=function(_0x4d22cf,_0x3b974a,_0x36aa19){var _0x2ebb12={};var _0x475335={};var _0x3b795d;var _0x1756d6;return db[_0xec19('0x40')]['findOne']({'where':{'id':_0x4d22cf[_0xec19('0x45')]['id']}})[_0xec19('0x27')](handleEntityNotFound(_0x3b974a,null))['then'](function(_0x31827a){if(_0x31827a){_0x3b795d=_0x31827a;_0x475335['model']=_[_0xec19('0x46')](db[_0xec19('0x4e')][_0xec19('0x47')]);_0x475335[_0xec19('0x31')]=_[_0xec19('0x46')](_0x4d22cf['query']);_0x475335[_0xec19('0x32')]=_[_0xec19('0x33')](_0x475335[_0xec19('0x30')],_0x475335['query']);_0x2ebb12[_0xec19('0x34')]=_[_0xec19('0x33')](_0x475335[_0xec19('0x30')],qs[_0xec19('0x48')](_0x4d22cf['query'][_0xec19('0x48')]));_0x2ebb12[_0xec19('0x34')]=_0x2ebb12['attributes'][_0xec19('0x35')]?_0x2ebb12[_0xec19('0x34')]:_0x475335[_0xec19('0x30')];_0x2ebb12[_0xec19('0x4f')]=qs[_0xec19('0x38')](_0x4d22cf[_0xec19('0x31')][_0xec19('0x38')]);_0x2ebb12[_0xec19('0x39')]=qs[_0xec19('0x32')](_[_0xec19('0x3a')](_0x4d22cf[_0xec19('0x31')],_0x475335[_0xec19('0x32')]));if(_0x4d22cf[_0xec19('0x31')][_0xec19('0x3b')]){_0x2ebb12[_0xec19('0x39')]=_['merge'](_0x2ebb12[_0xec19('0x39')],{'$or':_[_0xec19('0x2d')](_0x2ebb12['attributes'],function(_0x495a97){var _0x24c29e={};_0x24c29e[_0x495a97]={'$like':'%'+_0x4d22cf['query'][_0xec19('0x3b')]+'%'};return _0x24c29e;})});}_0x2ebb12=_[_0xec19('0x3c')]({},_0x2ebb12,_0x4d22cf['options']);return _0x3b795d['getFields'](_0x2ebb12);}})[_0xec19('0x27')](function(_0x39727a){if(_0x39727a){_0x1756d6=_0x39727a['length'];if(!_0x4d22cf[_0xec19('0x31')][_0xec19('0x36')](_0xec19('0x37'))){_0x2ebb12[_0xec19('0x20')]=qs['limit'](_0x4d22cf[_0xec19('0x31')][_0xec19('0x20')]);_0x2ebb12[_0xec19('0x22')]=qs['offset'](_0x4d22cf[_0xec19('0x31')]['offset']);}return _0x3b795d['getFields'](_0x2ebb12);}})[_0xec19('0x27')](function(_0x4e758c){if(_0x4e758c){return _0x4e758c?{'count':_0x1756d6,'rows':_0x4e758c}:null;}})[_0xec19('0x27')](respondWithResult(_0x3b974a,null))['catch'](handleError(_0x3b974a,null));};exports[_0xec19('0x50')]=function(_0x158436,_0x11be78,_0x195eb9){var _0x3b25f0={};var _0x45d3aa={};var _0x39a68e;var _0x1d7008;return db[_0xec19('0x40')][_0xec19('0x51')]({'where':{'id':_0x158436[_0xec19('0x45')]['id']}})['then'](handleEntityNotFound(_0x11be78,null))[_0xec19('0x27')](function(_0x5dcf02){if(_0x5dcf02){_0x39a68e=_0x5dcf02;_0x45d3aa[_0xec19('0x30')]=_[_0xec19('0x46')](db['SugarcrmField'][_0xec19('0x47')]);_0x45d3aa[_0xec19('0x31')]=_['keys'](_0x158436[_0xec19('0x31')]);_0x45d3aa[_0xec19('0x32')]=_[_0xec19('0x33')](_0x45d3aa[_0xec19('0x30')],_0x45d3aa['query']);_0x3b25f0[_0xec19('0x34')]=_[_0xec19('0x33')](_0x45d3aa[_0xec19('0x30')],qs[_0xec19('0x48')](_0x158436[_0xec19('0x31')]['fields']));_0x3b25f0[_0xec19('0x34')]=_0x3b25f0[_0xec19('0x34')][_0xec19('0x35')]?_0x3b25f0['attributes']:_0x45d3aa[_0xec19('0x30')];_0x3b25f0[_0xec19('0x4f')]=qs['sort'](_0x158436[_0xec19('0x31')][_0xec19('0x38')]);_0x3b25f0[_0xec19('0x39')]=qs[_0xec19('0x32')](_[_0xec19('0x3a')](_0x158436[_0xec19('0x31')],_0x45d3aa[_0xec19('0x32')]));if(_0x158436[_0xec19('0x31')][_0xec19('0x3b')]){_0x3b25f0[_0xec19('0x39')]=_[_0xec19('0x3c')](_0x3b25f0[_0xec19('0x39')],{'$or':_['map'](_0x3b25f0['attributes'],function(_0x115973){var _0x2b0d6d={};_0x2b0d6d[_0x115973]={'$like':'%'+_0x158436['query']['filter']+'%'};return _0x2b0d6d;})});}_0x3b25f0=_['merge']({},_0x3b25f0,_0x158436[_0xec19('0x3e')]);return _0x39a68e[_0xec19('0x50')](_0x3b25f0);}})[_0xec19('0x27')](function(_0x3ffd25){if(_0x3ffd25){_0x1d7008=_0x3ffd25['length'];if(!_0x158436[_0xec19('0x31')][_0xec19('0x36')](_0xec19('0x37'))){_0x3b25f0[_0xec19('0x20')]=qs[_0xec19('0x20')](_0x158436['query'][_0xec19('0x20')]);_0x3b25f0[_0xec19('0x22')]=qs[_0xec19('0x22')](_0x158436[_0xec19('0x31')][_0xec19('0x22')]);}return _0x39a68e[_0xec19('0x50')](_0x3b25f0);}})[_0xec19('0x27')](function(_0x1df114){if(_0x1df114){return _0x1df114?{'count':_0x1d7008,'rows':_0x1df114}:null;}})['then'](respondWithResult(_0x11be78,null))[_0xec19('0x43')](handleError(_0x11be78,null));};exports[_0xec19('0x52')]=function(_0x25eca7,_0xa9071f,_0x5e87c7){var _0x1c933a={};var _0x267be9={};var _0x2d2067;var _0x2e0e6c;return db['SugarcrmConfiguration'][_0xec19('0x51')]({'where':{'id':_0x25eca7[_0xec19('0x45')]['id']}})[_0xec19('0x27')](handleEntityNotFound(_0xa9071f,null))[_0xec19('0x27')](function(_0x4dae2b){if(_0x4dae2b){_0x2d2067=_0x4dae2b;_0x267be9[_0xec19('0x30')]=_[_0xec19('0x46')](db[_0xec19('0x4e')][_0xec19('0x47')]);_0x267be9[_0xec19('0x31')]=_[_0xec19('0x46')](_0x25eca7[_0xec19('0x31')]);_0x267be9['filters']=_['intersection'](_0x267be9[_0xec19('0x30')],_0x267be9[_0xec19('0x31')]);_0x1c933a[_0xec19('0x34')]=_[_0xec19('0x33')](_0x267be9[_0xec19('0x30')],qs['fields'](_0x25eca7['query'][_0xec19('0x48')]));_0x1c933a['attributes']=_0x1c933a['attributes']['length']?_0x1c933a[_0xec19('0x34')]:_0x267be9[_0xec19('0x30')];_0x1c933a['order']=qs[_0xec19('0x38')](_0x25eca7[_0xec19('0x31')][_0xec19('0x38')]);_0x1c933a[_0xec19('0x39')]=qs[_0xec19('0x32')](_['pick'](_0x25eca7[_0xec19('0x31')],_0x267be9[_0xec19('0x32')]));if(_0x25eca7[_0xec19('0x31')][_0xec19('0x3b')]){_0x1c933a[_0xec19('0x39')]=_[_0xec19('0x3c')](_0x1c933a[_0xec19('0x39')],{'$or':_[_0xec19('0x2d')](_0x1c933a[_0xec19('0x34')],function(_0x514445){var _0x17cd5e={};_0x17cd5e[_0x514445]={'$like':'%'+_0x25eca7['query']['filter']+'%'};return _0x17cd5e;})});}_0x1c933a=_[_0xec19('0x3c')]({},_0x1c933a,_0x25eca7[_0xec19('0x3e')]);return _0x2d2067[_0xec19('0x52')](_0x1c933a);}})[_0xec19('0x27')](function(_0x266af6){if(_0x266af6){_0x2e0e6c=_0x266af6['length'];if(!_0x25eca7[_0xec19('0x31')][_0xec19('0x36')]('nolimit')){_0x1c933a[_0xec19('0x20')]=qs[_0xec19('0x20')](_0x25eca7['query'][_0xec19('0x20')]);_0x1c933a[_0xec19('0x22')]=qs[_0xec19('0x22')](_0x25eca7[_0xec19('0x31')][_0xec19('0x22')]);}return _0x2d2067[_0xec19('0x52')](_0x1c933a);}})[_0xec19('0x27')](function(_0x30302c){if(_0x30302c){return _0x30302c?{'count':_0x2e0e6c,'rows':_0x30302c}:null;}})['then'](respondWithResult(_0xa9071f,null))['catch'](handleError(_0xa9071f,null));};
\ No newline at end of file
index fac571e..a3be13a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a8e=['../../config/logger','api','moment','bluebird','path','rimraf','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','lodash','util'];(function(_0x35d00d,_0x413345){var _0x98fafd=function(_0x26469f){while(--_0x26469f){_0x35d00d['push'](_0x35d00d['shift']());}};_0x98fafd(++_0x413345);}(_0x6a8e,0x76));var _0xe6a8=function(_0x2917c2,_0x5732d9){_0x2917c2=_0x2917c2-0x0;var _0x2e7448=_0x6a8e[_0x2917c2];return _0x2e7448;};'use strict';var _=require(_0xe6a8('0x0'));var util=require(_0xe6a8('0x1'));var logger=require(_0xe6a8('0x2'))(_0xe6a8('0x3'));var moment=require(_0xe6a8('0x4'));var BPromise=require(_0xe6a8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe6a8('0x6'));var rimraf=require(_0xe6a8('0x7'));var config=require('../../config/environment');var attributes=require(_0xe6a8('0x8'));module[_0xe6a8('0x9')]=function(_0x234d35,_0x31c8a6){return _0x234d35[_0xe6a8('0xa')](_0xe6a8('0xb'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf544=['path','rimraf','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','api','bluebird'];(function(_0x2a101c,_0x2f6a3f){var _0x57e217=function(_0x7af67c){while(--_0x7af67c){_0x2a101c['push'](_0x2a101c['shift']());}};_0x57e217(++_0x2f6a3f);}(_0xf544,0xe3));var _0x4f54=function(_0x25a0b9,_0x86e28f){_0x25a0b9=_0x25a0b9-0x0;var _0x30b9ab=_0xf544[_0x25a0b9];return _0x30b9ab;};'use strict';var _=require(_0x4f54('0x0'));var util=require(_0x4f54('0x1'));var logger=require('../../config/logger')(_0x4f54('0x2'));var moment=require('moment');var BPromise=require(_0x4f54('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4f54('0x4'));var rimraf=require(_0x4f54('0x5'));var config=require('../../config/environment');var attributes=require(_0x4f54('0x6'));module[_0x4f54('0x7')]=function(_0x5235d4,_0xc3bfc2){return _0x5235d4[_0x4f54('0x8')](_0x4f54('0x9'),attributes,{'tableName':_0x4f54('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b64c1d7..349d42c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef97=['request','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','http'];(function(_0x4a8475,_0x4dc586){var _0x2576ba=function(_0x3859f2){while(--_0x3859f2){_0x4a8475['push'](_0x4a8475['shift']());}};_0x2576ba(++_0x4dc586);}(_0xef97,0x173));var _0x7ef9=function(_0x1ac120,_0x3e7e45){_0x1ac120=_0x1ac120-0x0;var _0x19b703=_0xef97[_0x1ac120];return _0x19b703;};'use strict';var _=require(_0x7ef9('0x0'));var util=require(_0x7ef9('0x1'));var moment=require('moment');var BPromise=require(_0x7ef9('0x2'));var rs=require(_0x7ef9('0x3'));var fs=require('fs');var Redis=require(_0x7ef9('0x4'));var db=require(_0x7ef9('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7ef9('0x6'));var config=require(_0x7ef9('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7ef9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x11e862,_0x229717,_0x250afb){return new BPromise(function(_0x233601,_0x8c4eea){return client[_0x7ef9('0x9')](_0x11e862,_0x250afb)[_0x7ef9('0xa')](function(_0x2785d2){logger['info'](_0x7ef9('0xb'),_0x229717,_0x7ef9('0xc'));logger[_0x7ef9('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x229717,_0x7ef9('0xc'),JSON[_0x7ef9('0xe')](_0x2785d2));if(_0x2785d2[_0x7ef9('0xf')]){if(_0x2785d2[_0x7ef9('0xf')][_0x7ef9('0x10')]===0x1f4){logger[_0x7ef9('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x229717,_0x2785d2[_0x7ef9('0xf')]['message']);return _0x8c4eea(_0x2785d2['error'][_0x7ef9('0x11')]);}logger[_0x7ef9('0xf')](_0x7ef9('0xb'),_0x229717,_0x2785d2['error'][_0x7ef9('0x11')]);return _0x233601(_0x2785d2[_0x7ef9('0xf')]['message']);}else{logger[_0x7ef9('0x12')](_0x7ef9('0xb'),_0x229717,'request\x20sent');_0x233601(_0x2785d2[_0x7ef9('0x13')][_0x7ef9('0x11')]);}})['catch'](function(_0x7aaca1){logger[_0x7ef9('0xf')](_0x7ef9('0xb'),_0x229717,_0x7aaca1);_0x8c4eea(_0x7aaca1);});});}
\ No newline at end of file
+var _0x83e0=['moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x586b63,_0x602ca){var _0x424dc6=function(_0x5135a0){while(--_0x5135a0){_0x586b63['push'](_0x586b63['shift']());}};_0x424dc6(++_0x602ca);}(_0x83e0,0x1a2));var _0x083e=function(_0x4501a7,_0x3570d7){_0x4501a7=_0x4501a7-0x0;var _0x35725d=_0x83e0[_0x4501a7];return _0x35725d;};'use strict';var _=require(_0x083e('0x0'));var util=require(_0x083e('0x1'));var moment=require(_0x083e('0x2'));var BPromise=require(_0x083e('0x3'));var rs=require(_0x083e('0x4'));var fs=require('fs');var Redis=require(_0x083e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x083e('0x6'))('rpc');var config=require(_0x083e('0x7'));var jayson=require(_0x083e('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x274347,_0x1ad34c,_0x23dcf5){return new BPromise(function(_0x2cb6d1,_0x26ecab){return client[_0x083e('0x9')](_0x274347,_0x23dcf5)[_0x083e('0xa')](function(_0x3c68dc){logger[_0x083e('0xb')](_0x083e('0xc'),_0x1ad34c,_0x083e('0xd'));logger[_0x083e('0xe')](_0x083e('0xf'),_0x1ad34c,_0x083e('0xd'),JSON[_0x083e('0x10')](_0x3c68dc));if(_0x3c68dc['error']){if(_0x3c68dc[_0x083e('0x11')][_0x083e('0x12')]===0x1f4){logger[_0x083e('0x11')](_0x083e('0xc'),_0x1ad34c,_0x3c68dc[_0x083e('0x11')]['message']);return _0x26ecab(_0x3c68dc[_0x083e('0x11')]['message']);}logger[_0x083e('0x11')](_0x083e('0xc'),_0x1ad34c,_0x3c68dc[_0x083e('0x11')][_0x083e('0x13')]);return _0x2cb6d1(_0x3c68dc[_0x083e('0x11')][_0x083e('0x13')]);}else{logger[_0x083e('0xb')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1ad34c,_0x083e('0xd'));_0x2cb6d1(_0x3c68dc[_0x083e('0x14')][_0x083e('0x13')]);}})['catch'](function(_0x174677){logger[_0x083e('0x11')](_0x083e('0xc'),_0x1ad34c,_0x174677);_0x26ecab(_0x174677);});});}
\ No newline at end of file
index 561a354..778c76c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dea=['delete','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','index','/:id','isAuthenticated','show','post','create','update'];(function(_0x5f5b2f,_0x1863c4){var _0x16c260=function(_0x53b1b9){while(--_0x53b1b9){_0x5f5b2f['push'](_0x5f5b2f['shift']());}};_0x16c260(++_0x1863c4);}(_0x8dea,0x1c3));var _0xa8de=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8dea[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xa8de('0x0'));var util=require(_0xa8de('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa8de('0x2'));var router=express[_0xa8de('0x3')]();var fs_extra=require(_0xa8de('0x4'));var auth=require(_0xa8de('0x5'));var interaction=require(_0xa8de('0x6'));var config=require(_0xa8de('0x7'));var controller=require(_0xa8de('0x8'));router[_0xa8de('0x9')]('/',auth['isAuthenticated'](),controller[_0xa8de('0xa')]);router['get'](_0xa8de('0xb'),auth[_0xa8de('0xc')](),controller[_0xa8de('0xd')]);router[_0xa8de('0xe')]('/',auth[_0xa8de('0xc')](),controller[_0xa8de('0xf')]);router['put'](_0xa8de('0xb'),auth[_0xa8de('0xc')](),controller[_0xa8de('0x10')]);router[_0xa8de('0x11')](_0xa8de('0xb'),auth[_0xa8de('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x79ed=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','multer'];(function(_0x109480,_0x13bf39){var _0x381943=function(_0x1e0a40){while(--_0x1e0a40){_0x109480['push'](_0x109480['shift']());}};_0x381943(++_0x13bf39);}(_0x79ed,0xe3));var _0xd79e=function(_0x234893,_0x4c63a6){_0x234893=_0x234893-0x0;var _0x55f19d=_0x79ed[_0x234893];return _0x55f19d;};'use strict';var multer=require(_0xd79e('0x0'));var util=require(_0xd79e('0x1'));var path=require('path');var timeout=require(_0xd79e('0x2'));var express=require(_0xd79e('0x3'));var router=express[_0xd79e('0x4')]();var fs_extra=require(_0xd79e('0x5'));var auth=require(_0xd79e('0x6'));var interaction=require(_0xd79e('0x7'));var config=require(_0xd79e('0x8'));var controller=require('./intSugarcrmField.controller');router[_0xd79e('0x9')]('/',auth[_0xd79e('0xa')](),controller['index']);router[_0xd79e('0x9')]('/:id',auth[_0xd79e('0xa')](),controller[_0xd79e('0xb')]);router[_0xd79e('0xc')]('/',auth[_0xd79e('0xa')](),controller[_0xd79e('0xd')]);router[_0xd79e('0xe')](_0xd79e('0xf'),auth[_0xd79e('0xa')](),controller[_0xd79e('0x10')]);router[_0xd79e('0x11')](_0xd79e('0xf'),auth[_0xd79e('0xa')](),controller[_0xd79e('0x12')]);module['exports']=router;
\ No newline at end of file
index 2906c8c..a829f19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1858=['BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING','customVariable'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x1858,0x105));var _0x8185=function(_0x410974,_0x12d294){_0x410974=_0x410974-0x0;var _0x3df4d2=_0x1858[_0x410974];return _0x3df4d2;};'use strict';var Sequelize=require(_0x8185('0x0'));module[_0x8185('0x1')]={'type':{'type':Sequelize[_0x8185('0x2')](_0x8185('0x3'),_0x8185('0x4'),'customVariable',_0x8185('0x5'),_0x8185('0x6')),'defaultValue':_0x8185('0x3')},'content':{'type':Sequelize[_0x8185('0x7')]},'key':{'type':Sequelize[_0x8185('0x7')]},'keyType':{'type':Sequelize[_0x8185('0x2')](_0x8185('0x3'),'variable',_0x8185('0x8'))},'keyContent':{'type':Sequelize[_0x8185('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x8185('0x7')]},'customField':{'type':Sequelize[_0x8185('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8185('0x7')]}};
\ No newline at end of file
+var _0x1860=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x1860,0x130));var _0x0186=function(_0x1120df,_0x2aa407){_0x1120df=_0x1120df-0x0;var _0xd50f9f=_0x1860[_0x1120df];return _0xd50f9f;};'use strict';var Sequelize=require('sequelize');module[_0x0186('0x0')]={'type':{'type':Sequelize[_0x0186('0x1')](_0x0186('0x2'),_0x0186('0x3'),_0x0186('0x4'),_0x0186('0x5'),_0x0186('0x6')),'defaultValue':_0x0186('0x2')},'content':{'type':Sequelize[_0x0186('0x7')]},'key':{'type':Sequelize[_0x0186('0x7')]},'keyType':{'type':Sequelize[_0x0186('0x1')](_0x0186('0x2'),_0x0186('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x0186('0x7')]},'idField':{'type':Sequelize[_0x0186('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0186('0x7')]}};
\ No newline at end of file
index 1a027a6..6e9f358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x622f=['sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','then','destroy','error','stack','name','map','SugarcrmField','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util'];(function(_0xb837f5,_0x3f80a9){var _0x357368=function(_0x432e64){while(--_0x432e64){_0xb837f5['push'](_0xb837f5['shift']());}};_0x357368(++_0x3f80a9);}(_0x622f,0x17a));var _0xf622=function(_0x358dee,_0x3abeea){_0x358dee=_0x358dee-0x0;var _0x59e7ff=_0x622f[_0x358dee];return _0x59e7ff;};'use strict';var emlformat=require(_0xf622('0x0'));var rimraf=require(_0xf622('0x1'));var zipdir=require(_0xf622('0x2'));var jsonpatch=require(_0xf622('0x3'));var rp=require(_0xf622('0x4'));var moment=require('moment');var BPromise=require(_0xf622('0x5'));var Mustache=require('mustache');var util=require(_0xf622('0x6'));var path=require('path');var sox=require(_0xf622('0x7'));var csv=require(_0xf622('0x8'));var ejs=require(_0xf622('0x9'));var fs=require('fs');var fs_extra=require(_0xf622('0xa'));var _=require(_0xf622('0xb'));var squel=require('squel');var crypto=require(_0xf622('0xc'));var jsforce=require(_0xf622('0xd'));var deskjs=require(_0xf622('0xe'));var toCsv=require(_0xf622('0x8'));var querystring=require(_0xf622('0xf'));var Papa=require(_0xf622('0x10'));var Redis=require(_0xf622('0x11'));var authService=require(_0xf622('0x12'));var qs=require(_0xf622('0x13'));var as=require(_0xf622('0x14'));var hardwareService=require(_0xf622('0x15'));var logger=require(_0xf622('0x16'))(_0xf622('0x17'));var utils=require(_0xf622('0x18'));var config=require(_0xf622('0x19'));var licenseUtil=require(_0xf622('0x1a'));var db=require(_0xf622('0x1b'))['db'];function respondWithStatusCode(_0x979ab3,_0xace459){_0xace459=_0xace459||0xcc;return function(_0x1cd0e2){if(_0x1cd0e2){return _0x979ab3[_0xf622('0x1c')](_0xace459);}return _0x979ab3[_0xf622('0x1d')](_0xace459)[_0xf622('0x1e')]();};}function respondWithResult(_0x58840b,_0x44637a){_0x44637a=_0x44637a||0xc8;return function(_0x345512){if(_0x345512){return _0x58840b[_0xf622('0x1d')](_0x44637a)[_0xf622('0x1f')](_0x345512);}};}function respondWithFilteredResult(_0x5b9480,_0x2cdad6){return function(_0x1bff2c){if(_0x1bff2c){var _0x143f32=typeof _0x2cdad6['offset']==='undefined'&&typeof _0x2cdad6['limit']===_0xf622('0x20');var _0x22fe07=_0x1bff2c[_0xf622('0x21')];var _0x195373=_0x143f32?0x0:_0x2cdad6['offset'];var _0xfeb681=_0x143f32?_0x1bff2c['count']:_0x2cdad6[_0xf622('0x22')]+_0x2cdad6['limit'];var _0x46c3d9;if(_0xfeb681>=_0x22fe07){_0xfeb681=_0x22fe07;_0x46c3d9=0xc8;}else{_0x46c3d9=0xce;}_0x5b9480[_0xf622('0x1d')](_0x46c3d9);return _0x5b9480[_0xf622('0x23')](_0xf622('0x24'),_0x195373+'-'+_0xfeb681+'/'+_0x22fe07)[_0xf622('0x1f')](_0x1bff2c);}return null;};}function patchUpdates(_0x2aab11){return function(_0x5b9cef){try{jsonpatch[_0xf622('0x25')](_0x5b9cef,_0x2aab11,!![]);}catch(_0x2d29d1){return BPromise[_0xf622('0x26')](_0x2d29d1);}return _0x5b9cef['save']();};}function saveUpdates(_0x374e32,_0x573b08){return function(_0x2c187c){if(_0x2c187c){return _0x2c187c['update'](_0x374e32)[_0xf622('0x27')](function(_0x9c84d7){return _0x9c84d7;});}return null;};}function removeEntity(_0x5ab5d1,_0x4acc1b){return function(_0x44ca2f){if(_0x44ca2f){return _0x44ca2f[_0xf622('0x28')]()['then'](function(){_0x5ab5d1[_0xf622('0x1d')](0xcc)[_0xf622('0x1e')]();});}};}function handleEntityNotFound(_0x242c03,_0x1d9170){return function(_0x453ed0){if(!_0x453ed0){_0x242c03['sendStatus'](0x194);}return _0x453ed0;};}function handleError(_0x1bd526,_0x17c469){_0x17c469=_0x17c469||0x1f4;return function(_0x1b77a8){logger[_0xf622('0x29')](_0x1b77a8[_0xf622('0x2a')]);if(_0x1b77a8['name']){delete _0x1b77a8[_0xf622('0x2b')];}_0x1bd526['status'](_0x17c469)['send'](_0x1b77a8);};}exports['index']=function(_0x4eff3d,_0x2bf8e5){var _0x3a381d={},_0x4185f4={},_0x160f08={'count':0x0,'rows':[]};var _0x852828=_[_0xf622('0x2c')](db[_0xf622('0x2d')]['rawAttributes'],function(_0x481111){return{'name':_0x481111[_0xf622('0x2e')],'type':_0x481111['type'][_0xf622('0x2f')]};});_0x4185f4[_0xf622('0x30')]=_[_0xf622('0x2c')](_0x852828,_0xf622('0x2b'));_0x4185f4['query']=_[_0xf622('0x31')](_0x4eff3d[_0xf622('0x32')]);_0x4185f4[_0xf622('0x33')]=_[_0xf622('0x34')](_0x4185f4[_0xf622('0x30')],_0x4185f4[_0xf622('0x32')]);_0x3a381d[_0xf622('0x35')]=_[_0xf622('0x34')](_0x4185f4[_0xf622('0x30')],qs['fields'](_0x4eff3d[_0xf622('0x32')][_0xf622('0x36')]));_0x3a381d[_0xf622('0x35')]=_0x3a381d[_0xf622('0x35')][_0xf622('0x37')]?_0x3a381d[_0xf622('0x35')]:_0x4185f4[_0xf622('0x30')];if(!_0x4eff3d['query'][_0xf622('0x38')](_0xf622('0x39'))){_0x3a381d[_0xf622('0x3a')]=qs['limit'](_0x4eff3d[_0xf622('0x32')][_0xf622('0x3a')]);_0x3a381d[_0xf622('0x22')]=qs[_0xf622('0x22')](_0x4eff3d[_0xf622('0x32')][_0xf622('0x22')]);}_0x3a381d['order']=qs[_0xf622('0x3b')](_0x4eff3d[_0xf622('0x32')][_0xf622('0x3b')]);_0x3a381d[_0xf622('0x3c')]=qs[_0xf622('0x33')](_['pick'](_0x4eff3d[_0xf622('0x32')],_0x4185f4[_0xf622('0x33')]),_0x852828);if(_0x4eff3d[_0xf622('0x32')][_0xf622('0x3d')]){_0x3a381d[_0xf622('0x3c')]=_[_0xf622('0x3e')](_0x3a381d[_0xf622('0x3c')],{'$or':_[_0xf622('0x2c')](_0x852828,function(_0x17b480){if(_0x17b480[_0xf622('0x3f')]!==_0xf622('0x40')){var _0x584d26={};_0x584d26[_0x17b480[_0xf622('0x2b')]]={'$like':'%'+_0x4eff3d[_0xf622('0x32')]['filter']+'%'};return _0x584d26;}})});}_0x3a381d=_['merge']({},_0x3a381d,_0x4eff3d['options']);var _0xb2b9af={'where':_0x3a381d[_0xf622('0x3c')]};return db[_0xf622('0x2d')]['count'](_0xb2b9af)[_0xf622('0x27')](function(_0x254fd0){_0x160f08[_0xf622('0x21')]=_0x254fd0;if(_0x4eff3d[_0xf622('0x32')][_0xf622('0x41')]){_0x3a381d[_0xf622('0x42')]=[{'all':!![]}];}return db['SugarcrmField'][_0xf622('0x43')](_0x3a381d);})[_0xf622('0x27')](function(_0x390902){_0x160f08[_0xf622('0x44')]=_0x390902;return _0x160f08;})['then'](respondWithFilteredResult(_0x2bf8e5,_0x3a381d))[_0xf622('0x45')](handleError(_0x2bf8e5,null));};exports[_0xf622('0x46')]=function(_0x3ea118,_0x9886f3){var _0x5e4799={'raw':!![],'where':{'id':_0x3ea118[_0xf622('0x47')]['id']}},_0x263798={};_0x263798[_0xf622('0x30')]=_[_0xf622('0x31')](db[_0xf622('0x2d')]['rawAttributes']);_0x263798[_0xf622('0x32')]=_[_0xf622('0x31')](_0x3ea118['query']);_0x263798['filters']=_[_0xf622('0x34')](_0x263798[_0xf622('0x30')],_0x263798[_0xf622('0x32')]);_0x5e4799[_0xf622('0x35')]=_['intersection'](_0x263798['model'],qs[_0xf622('0x36')](_0x3ea118['query']['fields']));_0x5e4799[_0xf622('0x35')]=_0x5e4799[_0xf622('0x35')][_0xf622('0x37')]?_0x5e4799[_0xf622('0x35')]:_0x263798[_0xf622('0x30')];if(_0x3ea118[_0xf622('0x32')][_0xf622('0x41')]){_0x5e4799[_0xf622('0x42')]=[{'all':!![]}];}_0x5e4799=_[_0xf622('0x3e')]({},_0x5e4799,_0x3ea118[_0xf622('0x48')]);return db[_0xf622('0x2d')][_0xf622('0x49')](_0x5e4799)['then'](handleEntityNotFound(_0x9886f3,null))[_0xf622('0x27')](respondWithResult(_0x9886f3,null))[_0xf622('0x45')](handleError(_0x9886f3,null));};exports[_0xf622('0x4a')]=function(_0x122610,_0x48968e){return db[_0xf622('0x2d')][_0xf622('0x4a')](_0x122610[_0xf622('0x4b')],{})[_0xf622('0x27')](respondWithResult(_0x48968e,0xc9))[_0xf622('0x45')](handleError(_0x48968e,null));};exports[_0xf622('0x4c')]=function(_0x20281f,_0xa9d02e){if(_0x20281f[_0xf622('0x4b')]['id']){delete _0x20281f[_0xf622('0x4b')]['id'];}return db['SugarcrmField'][_0xf622('0x49')]({'where':{'id':_0x20281f[_0xf622('0x47')]['id']}})[_0xf622('0x27')](handleEntityNotFound(_0xa9d02e,null))[_0xf622('0x27')](saveUpdates(_0x20281f['body'],null))[_0xf622('0x27')](respondWithResult(_0xa9d02e,null))['catch'](handleError(_0xa9d02e,null));};exports[_0xf622('0x28')]=function(_0x1a366f,_0x369d24){return db['SugarcrmField']['find']({'where':{'id':_0x1a366f[_0xf622('0x47')]['id']}})[_0xf622('0x27')](handleEntityNotFound(_0x369d24,null))['then'](removeEntity(_0x369d24,null))['catch'](handleError(_0x369d24,null));};
\ No newline at end of file
+var _0x4a39=['end','error','name','send','index','map','SugarcrmField','fieldName','type','key','model','keys','intersection','query','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','rawAttributes','find','create','body','params','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then'];(function(_0x1378f2,_0x526277){var _0x4a8e7a=function(_0x21b6e1){while(--_0x21b6e1){_0x1378f2['push'](_0x1378f2['shift']());}};_0x4a8e7a(++_0x526277);}(_0x4a39,0x71));var _0x94a3=function(_0x41ece3,_0x3a298a){_0x41ece3=_0x41ece3-0x0;var _0x34b232=_0x4a39[_0x41ece3];return _0x34b232;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x94a3('0x0'));var jsonpatch=require(_0x94a3('0x1'));var rp=require(_0x94a3('0x2'));var moment=require('moment');var BPromise=require(_0x94a3('0x3'));var Mustache=require('mustache');var util=require(_0x94a3('0x4'));var path=require('path');var sox=require(_0x94a3('0x5'));var csv=require(_0x94a3('0x6'));var ejs=require(_0x94a3('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x94a3('0x8'));var squel=require(_0x94a3('0x9'));var crypto=require(_0x94a3('0xa'));var jsforce=require(_0x94a3('0xb'));var deskjs=require(_0x94a3('0xc'));var toCsv=require(_0x94a3('0x6'));var querystring=require(_0x94a3('0xd'));var Papa=require(_0x94a3('0xe'));var Redis=require(_0x94a3('0xf'));var authService=require(_0x94a3('0x10'));var qs=require(_0x94a3('0x11'));var as=require(_0x94a3('0x12'));var hardwareService=require(_0x94a3('0x13'));var logger=require(_0x94a3('0x14'))(_0x94a3('0x15'));var utils=require('../../config/utils');var config=require(_0x94a3('0x16'));var licenseUtil=require(_0x94a3('0x17'));var db=require(_0x94a3('0x18'))['db'];function respondWithStatusCode(_0xbf6108,_0x2e02cd){_0x2e02cd=_0x2e02cd||0xcc;return function(_0x45f171){if(_0x45f171){return _0xbf6108[_0x94a3('0x19')](_0x2e02cd);}return _0xbf6108[_0x94a3('0x1a')](_0x2e02cd)['end']();};}function respondWithResult(_0x382a4b,_0xd9180){_0xd9180=_0xd9180||0xc8;return function(_0x24a149){if(_0x24a149){return _0x382a4b[_0x94a3('0x1a')](_0xd9180)[_0x94a3('0x1b')](_0x24a149);}};}function respondWithFilteredResult(_0x56bed4,_0x8404c4){return function(_0xa9f099){if(_0xa9f099){var _0x3e9a7e=typeof _0x8404c4[_0x94a3('0x1c')]===_0x94a3('0x1d')&&typeof _0x8404c4[_0x94a3('0x1e')]==='undefined';var _0x203c72=_0xa9f099[_0x94a3('0x1f')];var _0x329f78=_0x3e9a7e?0x0:_0x8404c4[_0x94a3('0x1c')];var _0x235b51=_0x3e9a7e?_0xa9f099[_0x94a3('0x1f')]:_0x8404c4['offset']+_0x8404c4[_0x94a3('0x1e')];var _0x4a7a01;if(_0x235b51>=_0x203c72){_0x235b51=_0x203c72;_0x4a7a01=0xc8;}else{_0x4a7a01=0xce;}_0x56bed4[_0x94a3('0x1a')](_0x4a7a01);return _0x56bed4[_0x94a3('0x20')](_0x94a3('0x21'),_0x329f78+'-'+_0x235b51+'/'+_0x203c72)[_0x94a3('0x1b')](_0xa9f099);}return null;};}function patchUpdates(_0x54e458){return function(_0x398046){try{jsonpatch['apply'](_0x398046,_0x54e458,!![]);}catch(_0x17cabc){return BPromise[_0x94a3('0x22')](_0x17cabc);}return _0x398046[_0x94a3('0x23')]();};}function saveUpdates(_0x2d945b,_0x1da237){return function(_0x464a26){if(_0x464a26){return _0x464a26[_0x94a3('0x24')](_0x2d945b)['then'](function(_0x98a4f1){return _0x98a4f1;});}return null;};}function removeEntity(_0x37ff6a,_0x4a0e5b){return function(_0x313bd8){if(_0x313bd8){return _0x313bd8[_0x94a3('0x25')]()[_0x94a3('0x26')](function(){_0x37ff6a['status'](0xcc)[_0x94a3('0x27')]();});}};}function handleEntityNotFound(_0x3c53fc,_0x1fa6c1){return function(_0x1ead72){if(!_0x1ead72){_0x3c53fc['sendStatus'](0x194);}return _0x1ead72;};}function handleError(_0x403185,_0x5b6914){_0x5b6914=_0x5b6914||0x1f4;return function(_0x21a740){logger[_0x94a3('0x28')](_0x21a740['stack']);if(_0x21a740[_0x94a3('0x29')]){delete _0x21a740[_0x94a3('0x29')];}_0x403185['status'](_0x5b6914)[_0x94a3('0x2a')](_0x21a740);};}exports[_0x94a3('0x2b')]=function(_0x5f315c,_0x5bfd16){var _0x5d11e0={},_0x1fa8af={},_0xcbf6ca={'count':0x0,'rows':[]};var _0x29e14d=_[_0x94a3('0x2c')](db[_0x94a3('0x2d')]['rawAttributes'],function(_0x4c6c10){return{'name':_0x4c6c10[_0x94a3('0x2e')],'type':_0x4c6c10[_0x94a3('0x2f')][_0x94a3('0x30')]};});_0x1fa8af[_0x94a3('0x31')]=_[_0x94a3('0x2c')](_0x29e14d,_0x94a3('0x29'));_0x1fa8af['query']=_[_0x94a3('0x32')](_0x5f315c['query']);_0x1fa8af['filters']=_[_0x94a3('0x33')](_0x1fa8af[_0x94a3('0x31')],_0x1fa8af['query']);_0x5d11e0['attributes']=_[_0x94a3('0x33')](_0x1fa8af['model'],qs['fields'](_0x5f315c[_0x94a3('0x34')][_0x94a3('0x35')]));_0x5d11e0['attributes']=_0x5d11e0[_0x94a3('0x36')][_0x94a3('0x37')]?_0x5d11e0[_0x94a3('0x36')]:_0x1fa8af['model'];if(!_0x5f315c['query']['hasOwnProperty'](_0x94a3('0x38'))){_0x5d11e0[_0x94a3('0x1e')]=qs['limit'](_0x5f315c[_0x94a3('0x34')][_0x94a3('0x1e')]);_0x5d11e0[_0x94a3('0x1c')]=qs[_0x94a3('0x1c')](_0x5f315c['query'][_0x94a3('0x1c')]);}_0x5d11e0[_0x94a3('0x39')]=qs[_0x94a3('0x3a')](_0x5f315c[_0x94a3('0x34')][_0x94a3('0x3a')]);_0x5d11e0[_0x94a3('0x3b')]=qs[_0x94a3('0x3c')](_[_0x94a3('0x3d')](_0x5f315c[_0x94a3('0x34')],_0x1fa8af[_0x94a3('0x3c')]),_0x29e14d);if(_0x5f315c[_0x94a3('0x34')][_0x94a3('0x3e')]){_0x5d11e0[_0x94a3('0x3b')]=_[_0x94a3('0x3f')](_0x5d11e0['where'],{'$or':_[_0x94a3('0x2c')](_0x29e14d,function(_0x1fb1c5){if(_0x1fb1c5[_0x94a3('0x2f')]!==_0x94a3('0x40')){var _0x2a7904={};_0x2a7904[_0x1fb1c5['name']]={'$like':'%'+_0x5f315c[_0x94a3('0x34')][_0x94a3('0x3e')]+'%'};return _0x2a7904;}})});}_0x5d11e0=_[_0x94a3('0x3f')]({},_0x5d11e0,_0x5f315c[_0x94a3('0x41')]);var _0x23d98c={'where':_0x5d11e0[_0x94a3('0x3b')]};return db[_0x94a3('0x2d')][_0x94a3('0x1f')](_0x23d98c)['then'](function(_0x4f4740){_0xcbf6ca[_0x94a3('0x1f')]=_0x4f4740;if(_0x5f315c[_0x94a3('0x34')][_0x94a3('0x42')]){_0x5d11e0[_0x94a3('0x43')]=[{'all':!![]}];}return db[_0x94a3('0x2d')]['findAll'](_0x5d11e0);})['then'](function(_0x7652b){_0xcbf6ca[_0x94a3('0x44')]=_0x7652b;return _0xcbf6ca;})[_0x94a3('0x26')](respondWithFilteredResult(_0x5bfd16,_0x5d11e0))[_0x94a3('0x45')](handleError(_0x5bfd16,null));};exports[_0x94a3('0x46')]=function(_0x2c4034,_0x16c4ba){var _0x2c50bb={'raw':!![],'where':{'id':_0x2c4034['params']['id']}},_0x139f0c={};_0x139f0c[_0x94a3('0x31')]=_[_0x94a3('0x32')](db[_0x94a3('0x2d')][_0x94a3('0x47')]);_0x139f0c[_0x94a3('0x34')]=_[_0x94a3('0x32')](_0x2c4034[_0x94a3('0x34')]);_0x139f0c['filters']=_['intersection'](_0x139f0c[_0x94a3('0x31')],_0x139f0c[_0x94a3('0x34')]);_0x2c50bb['attributes']=_[_0x94a3('0x33')](_0x139f0c[_0x94a3('0x31')],qs[_0x94a3('0x35')](_0x2c4034[_0x94a3('0x34')][_0x94a3('0x35')]));_0x2c50bb['attributes']=_0x2c50bb[_0x94a3('0x36')]['length']?_0x2c50bb[_0x94a3('0x36')]:_0x139f0c['model'];if(_0x2c4034[_0x94a3('0x34')][_0x94a3('0x42')]){_0x2c50bb[_0x94a3('0x43')]=[{'all':!![]}];}_0x2c50bb=_['merge']({},_0x2c50bb,_0x2c4034[_0x94a3('0x41')]);return db[_0x94a3('0x2d')][_0x94a3('0x48')](_0x2c50bb)['then'](handleEntityNotFound(_0x16c4ba,null))[_0x94a3('0x26')](respondWithResult(_0x16c4ba,null))[_0x94a3('0x45')](handleError(_0x16c4ba,null));};exports[_0x94a3('0x49')]=function(_0x5d350d,_0x26ce31){return db[_0x94a3('0x2d')]['create'](_0x5d350d[_0x94a3('0x4a')],{})['then'](respondWithResult(_0x26ce31,0xc9))[_0x94a3('0x45')](handleError(_0x26ce31,null));};exports[_0x94a3('0x24')]=function(_0x40a34e,_0x2f4a61){if(_0x40a34e['body']['id']){delete _0x40a34e[_0x94a3('0x4a')]['id'];}return db[_0x94a3('0x2d')][_0x94a3('0x48')]({'where':{'id':_0x40a34e[_0x94a3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2f4a61,null))['then'](saveUpdates(_0x40a34e[_0x94a3('0x4a')],null))[_0x94a3('0x26')](respondWithResult(_0x2f4a61,null))[_0x94a3('0x45')](handleError(_0x2f4a61,null));};exports[_0x94a3('0x25')]=function(_0x30063b,_0x22a88e){return db[_0x94a3('0x2d')]['find']({'where':{'id':_0x30063b[_0x94a3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x22a88e,null))['then'](removeEntity(_0x22a88e,null))[_0x94a3('0x45')](handleError(_0x22a88e,null));};
\ No newline at end of file
index 1b3b56c..35b78bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4e7=['../../config/environment','./intSugarcrmField.attributes','define','SugarcrmField','sugarcrm_unique_index','lodash','api','bluebird','request-promise'];(function(_0x560166,_0x3bbf7d){var _0x577cf0=function(_0xee031a){while(--_0xee031a){_0x560166['push'](_0x560166['shift']());}};_0x577cf0(++_0x3bbf7d);}(_0xc4e7,0x10a));var _0x7c4e=function(_0x201a67,_0x2688e7){_0x201a67=_0x201a67-0x0;var _0x123634=_0xc4e7[_0x201a67];return _0x123634;};'use strict';var _=require(_0x7c4e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7c4e('0x1'));var moment=require('moment');var BPromise=require(_0x7c4e('0x2'));var rp=require(_0x7c4e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7c4e('0x4'));var attributes=require(_0x7c4e('0x5'));module['exports']=function(_0x9617e4,_0x5b8134){return _0x9617e4[_0x7c4e('0x6')](_0x7c4e('0x7'),attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':_0x7c4e('0x8'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa4af=['request-promise','path','../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','FieldId','util','../../config/logger','api','moment','bluebird'];(function(_0x8ef83d,_0x520c3d){var _0x4a4a19=function(_0x189336){while(--_0x189336){_0x8ef83d['push'](_0x8ef83d['shift']());}};_0x4a4a19(++_0x520c3d);}(_0xa4af,0x121));var _0xfa4a=function(_0x580dbf,_0x3162e8){_0x580dbf=_0x580dbf-0x0;var _0x454909=_0xa4af[_0x580dbf];return _0x454909;};'use strict';var _=require('lodash');var util=require(_0xfa4a('0x0'));var logger=require(_0xfa4a('0x1'))(_0xfa4a('0x2'));var moment=require(_0xfa4a('0x3'));var BPromise=require(_0xfa4a('0x4'));var rp=require(_0xfa4a('0x5'));var fs=require('fs');var path=require(_0xfa4a('0x6'));var rimraf=require('rimraf');var config=require(_0xfa4a('0x7'));var attributes=require(_0xfa4a('0x8'));module[_0xfa4a('0x9')]=function(_0x21c04c,_0x34ce68){return _0x21c04c[_0xfa4a('0xa')]('SugarcrmField',attributes,{'tableName':_0xfa4a('0xb'),'paranoid':![],'indexes':[{'name':_0xfa4a('0xc'),'fields':['idField',_0xfa4a('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b1fb699..bc79129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d96=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x1d96,0x13e));var _0x61d9=function(_0x3226b5,_0x25aeeb){_0x3226b5=_0x3226b5-0x0;var _0x4a7920=_0x1d96[_0x3226b5];return _0x4a7920;};'use strict';var _=require(_0x61d9('0x0'));var util=require(_0x61d9('0x1'));var moment=require(_0x61d9('0x2'));var BPromise=require(_0x61d9('0x3'));var rs=require(_0x61d9('0x4'));var fs=require('fs');var Redis=require(_0x61d9('0x5'));var db=require(_0x61d9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x61d9('0x7'))('rpc');var config=require(_0x61d9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x61d9('0x9')][_0x61d9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ca3ad,_0x283db5,_0x1d4437){return new BPromise(function(_0x265a89,_0x2716d6){return client['request'](_0x5ca3ad,_0x1d4437)[_0x61d9('0xb')](function(_0x22b582){logger[_0x61d9('0xc')](_0x61d9('0xd'),_0x283db5,_0x61d9('0xe'));logger['debug']('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x283db5,_0x61d9('0xe'),JSON[_0x61d9('0xf')](_0x22b582));if(_0x22b582[_0x61d9('0x10')]){if(_0x22b582[_0x61d9('0x10')][_0x61d9('0x11')]===0x1f4){logger[_0x61d9('0x10')](_0x61d9('0xd'),_0x283db5,_0x22b582[_0x61d9('0x10')][_0x61d9('0x12')]);return _0x2716d6(_0x22b582[_0x61d9('0x10')][_0x61d9('0x12')]);}logger[_0x61d9('0x10')]('SugarcrmField,\x20%s,\x20%s',_0x283db5,_0x22b582[_0x61d9('0x10')]['message']);return _0x265a89(_0x22b582[_0x61d9('0x10')]['message']);}else{logger['info'](_0x61d9('0xd'),_0x283db5,'request\x20sent');_0x265a89(_0x22b582['result'][_0x61d9('0x12')]);}})[_0x61d9('0x13')](function(_0x3d7f86){logger[_0x61d9('0x10')](_0x61d9('0xd'),_0x283db5,_0x3d7f86);_0x2716d6(_0x3d7f86);});});}
\ No newline at end of file
+var _0xa4e0=['../../config/logger','../../config/environment','client','http','then','info','SugarcrmField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x57b432,_0x1589a0){var _0x2edf2a=function(_0x20edfc){while(--_0x20edfc){_0x57b432['push'](_0x57b432['shift']());}};_0x2edf2a(++_0x1589a0);}(_0xa4e0,0x162));var _0x0a4e=function(_0x187b7e,_0x1aec7f){_0x187b7e=_0x187b7e-0x0;var _0xb4e76e=_0xa4e0[_0x187b7e];return _0xb4e76e;};'use strict';var _=require(_0x0a4e('0x0'));var util=require(_0x0a4e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0a4e('0x2'));var fs=require('fs');var Redis=require(_0x0a4e('0x3'));var db=require(_0x0a4e('0x4'))['db'];var utils=require(_0x0a4e('0x5'));var logger=require(_0x0a4e('0x6'))('rpc');var config=require(_0x0a4e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0a4e('0x8')][_0x0a4e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52f245,_0x196c13,_0xe895b0){return new BPromise(function(_0x5dff97,_0x4f854a){return client['request'](_0x52f245,_0xe895b0)[_0x0a4e('0xa')](function(_0x218d3d){logger[_0x0a4e('0xb')](_0x0a4e('0xc'),_0x196c13,'request\x20sent');logger[_0x0a4e('0xd')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x196c13,_0x0a4e('0xe'),JSON[_0x0a4e('0xf')](_0x218d3d));if(_0x218d3d[_0x0a4e('0x10')]){if(_0x218d3d['error'][_0x0a4e('0x11')]===0x1f4){logger[_0x0a4e('0x10')](_0x0a4e('0xc'),_0x196c13,_0x218d3d[_0x0a4e('0x10')][_0x0a4e('0x12')]);return _0x4f854a(_0x218d3d[_0x0a4e('0x10')][_0x0a4e('0x12')]);}logger[_0x0a4e('0x10')](_0x0a4e('0xc'),_0x196c13,_0x218d3d[_0x0a4e('0x10')]['message']);return _0x5dff97(_0x218d3d[_0x0a4e('0x10')]['message']);}else{logger[_0x0a4e('0xb')](_0x0a4e('0xc'),_0x196c13,'request\x20sent');_0x5dff97(_0x218d3d[_0x0a4e('0x13')][_0x0a4e('0x12')]);}})['catch'](function(_0xe616d9){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x196c13,_0xe616d9);_0x4f854a(_0xe616d9);});});}
\ No newline at end of file
index 40fadf9..7da5d89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1352=['update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','show','/:id/configurations','/:id/fields','getFields','post','create','put','/:id'];(function(_0x53e01e,_0x175418){var _0x530336=function(_0x506ada){while(--_0x506ada){_0x53e01e['push'](_0x53e01e['shift']());}};_0x530336(++_0x175418);}(_0x1352,0x17a));var _0x2135=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x1352[_0x2b10c6];return _0x3789d2;};'use strict';var multer=require(_0x2135('0x0'));var util=require(_0x2135('0x1'));var path=require(_0x2135('0x2'));var timeout=require(_0x2135('0x3'));var express=require(_0x2135('0x4'));var router=express[_0x2135('0x5')]();var fs_extra=require(_0x2135('0x6'));var auth=require(_0x2135('0x7'));var interaction=require(_0x2135('0x8'));var config=require(_0x2135('0x9'));var controller=require(_0x2135('0xa'));router[_0x2135('0xb')]('/',auth[_0x2135('0xc')](),controller[_0x2135('0xd')]);router[_0x2135('0xb')]('/:id',auth[_0x2135('0xc')](),controller[_0x2135('0xe')]);router['get'](_0x2135('0xf'),auth[_0x2135('0xc')](),controller['getConfigurations']);router[_0x2135('0xb')](_0x2135('0x10'),auth[_0x2135('0xc')](),controller[_0x2135('0x11')]);router[_0x2135('0x12')]('/',auth[_0x2135('0xc')](),controller[_0x2135('0x13')]);router[_0x2135('0x12')](_0x2135('0xf'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x2135('0x14')](_0x2135('0x15'),auth[_0x2135('0xc')](),controller[_0x2135('0x16')]);router['delete'](_0x2135('0x15'),auth['isAuthenticated'](),controller[_0x2135('0x17')]);module[_0x2135('0x18')]=router;
\ No newline at end of file
+var _0x2dae=['update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration'];(function(_0x5d8a80,_0x588b92){var _0x3f8c1f=function(_0x1e1bbc){while(--_0x1e1bbc){_0x5d8a80['push'](_0x5d8a80['shift']());}};_0x3f8c1f(++_0x588b92);}(_0x2dae,0xc3));var _0xe2da=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0x2dae[_0x470f63];return _0x4f09e2;};'use strict';var multer=require(_0xe2da('0x0'));var util=require('util');var path=require(_0xe2da('0x1'));var timeout=require(_0xe2da('0x2'));var express=require(_0xe2da('0x3'));var router=express[_0xe2da('0x4')]();var fs_extra=require(_0xe2da('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe2da('0x6'));var config=require(_0xe2da('0x7'));var controller=require(_0xe2da('0x8'));router[_0xe2da('0x9')]('/',auth['isAuthenticated'](),controller[_0xe2da('0xa')]);router[_0xe2da('0x9')](_0xe2da('0xb'),auth[_0xe2da('0xc')](),controller[_0xe2da('0xd')]);router[_0xe2da('0x9')](_0xe2da('0xe'),auth[_0xe2da('0xc')](),controller[_0xe2da('0xf')]);router['get'](_0xe2da('0x10'),auth[_0xe2da('0xc')](),controller[_0xe2da('0x11')]);router[_0xe2da('0x12')]('/',auth[_0xe2da('0xc')](),controller[_0xe2da('0x13')]);router[_0xe2da('0x12')](_0xe2da('0xe'),auth['isAuthenticated'](),controller[_0xe2da('0x14')]);router['put'](_0xe2da('0xb'),auth[_0xe2da('0xc')](),controller[_0xe2da('0x15')]);router[_0xe2da('0x16')](_0xe2da('0xb'),auth[_0xe2da('0xc')](),controller[_0xe2da('0x17')]);module['exports']=router;
\ No newline at end of file
index 5a5eb20..dc87506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ee1=['HelpDesk','sequelize','exports','STRING'];(function(_0x3d316e,_0x45afe4){var _0x22b230=function(_0x18336f){while(--_0x18336f){_0x3d316e['push'](_0x3d316e['shift']());}};_0x22b230(++_0x45afe4);}(_0x3ee1,0x111));var _0x13ee=function(_0x165885,_0x7ea764){_0x165885=_0x165885-0x0;var _0x403555=_0x3ee1[_0x165885];return _0x403555;};'use strict';var Sequelize=require(_0x13ee('0x0'));module[_0x13ee('0x1')]={'name':{'type':Sequelize[_0x13ee('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x13ee('0x2')]},'username':{'type':Sequelize[_0x13ee('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x13ee('0x2')],'allowNull':![],'defaultValue':_0x13ee('0x3')},'remoteUri':{'type':Sequelize[_0x13ee('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x13ee('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x13ee('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xeef4=['exports','STRING','sequelize'];(function(_0xcf6643,_0x16c5df){var _0x112462=function(_0x2c1c8a){while(--_0x2c1c8a){_0xcf6643['push'](_0xcf6643['shift']());}};_0x112462(++_0x16c5df);}(_0xeef4,0xc2));var _0x4eef=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xeef4[_0x4a53d];return _0x27410e;};'use strict';var Sequelize=require(_0x4eef('0x0'));module[_0x4eef('0x1')]={'name':{'type':Sequelize[_0x4eef('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x4eef('0x2')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x4eef('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x4eef('0x2')],'allowNull':![]}};
\ No newline at end of file
index 073dbf7..c0aa02c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5417=['substring','lastIndexOf','format','GET','getchallenge','POST','login','result','success','describe','autogenerated','reference','owner','remove','includes','false','label','cf_','picklist','picklistValues','value','log','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','fast-json-patch','request-promise','bluebird','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','stack','name','VtigerAccount','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','length','limit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','attributes','find','create','body','findOne','VtigerConfiguration','getConfigurations','hasOwnProperty','nolimit','AccountId','Subjects','getSubjects','channel','getDescriptions','VtigerField','getFields','username','description','remoteUri','serverUrl','accessKey','moduleName','slice'];(function(_0x1d3f0c,_0x2bd959){var _0x44d905=function(_0x2cd3eb){while(--_0x2cd3eb){_0x1d3f0c['push'](_0x1d3f0c['shift']());}};_0x44d905(++_0x2bd959);}(_0x5417,0x90));var _0x7541=function(_0x2202ce,_0x36aefe){_0x2202ce=_0x2202ce-0x0;var _0x2b5189=_0x5417[_0x2202ce];return _0x2b5189;};'use strict';var emlformat=require(_0x7541('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7541('0x1'));var rp=require(_0x7541('0x2'));var moment=require('moment');var BPromise=require(_0x7541('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7541('0x4'));var sox=require(_0x7541('0x5'));var csv=require('to-csv');var ejs=require(_0x7541('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7541('0x7'));var squel=require(_0x7541('0x8'));var crypto=require(_0x7541('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x7541('0xa'));var toCsv=require(_0x7541('0xb'));var querystring=require(_0x7541('0xc'));var Papa=require(_0x7541('0xd'));var Redis=require(_0x7541('0xe'));var authService=require(_0x7541('0xf'));var qs=require(_0x7541('0x10'));var as=require(_0x7541('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7541('0x12'));var utils=require(_0x7541('0x13'));var config=require(_0x7541('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x7541('0x15'))['db'];var integrations=require(_0x7541('0x16'));function respondWithStatusCode(_0x58c289,_0x2d8f7a){_0x2d8f7a=_0x2d8f7a||0xcc;return function(_0x32cdb4){if(_0x32cdb4){return _0x58c289[_0x7541('0x17')](_0x2d8f7a);}return _0x58c289[_0x7541('0x18')](_0x2d8f7a)[_0x7541('0x19')]();};}function respondWithResult(_0x2cc7f5,_0x572b2a){_0x572b2a=_0x572b2a||0xc8;return function(_0x2c5430){if(_0x2c5430){return _0x2cc7f5[_0x7541('0x18')](_0x572b2a)[_0x7541('0x1a')](_0x2c5430);}};}function respondWithFilteredResult(_0x3e585b,_0x1c27c2){return function(_0x16051d){if(_0x16051d){var _0x5200f5=typeof _0x1c27c2[_0x7541('0x1b')]===_0x7541('0x1c')&&typeof _0x1c27c2['limit']===_0x7541('0x1c');var _0x39c9a3=_0x16051d[_0x7541('0x1d')];var _0x404c5b=_0x5200f5?0x0:_0x1c27c2[_0x7541('0x1b')];var _0x91644d=_0x5200f5?_0x16051d[_0x7541('0x1d')]:_0x1c27c2['offset']+_0x1c27c2['limit'];var _0x40ff71;if(_0x91644d>=_0x39c9a3){_0x91644d=_0x39c9a3;_0x40ff71=0xc8;}else{_0x40ff71=0xce;}_0x3e585b[_0x7541('0x18')](_0x40ff71);return _0x3e585b[_0x7541('0x1e')](_0x7541('0x1f'),_0x404c5b+'-'+_0x91644d+'/'+_0x39c9a3)['json'](_0x16051d);}return null;};}function patchUpdates(_0x173e33){return function(_0x177e54){try{jsonpatch['apply'](_0x177e54,_0x173e33,!![]);}catch(_0x1668a1){return BPromise[_0x7541('0x20')](_0x1668a1);}return _0x177e54[_0x7541('0x21')]();};}function saveUpdates(_0x37b1e7,_0x4831e8){return function(_0x491799){if(_0x491799){return _0x491799[_0x7541('0x22')](_0x37b1e7)[_0x7541('0x23')](function(_0xf0d6a5){return _0xf0d6a5;});}return null;};}function removeEntity(_0x3b9cfa,_0x47395b){return function(_0x93b998){if(_0x93b998){return _0x93b998[_0x7541('0x24')]()['then'](function(){_0x3b9cfa['status'](0xcc)[_0x7541('0x19')]();});}};}function handleEntityNotFound(_0x306b31,_0x3cf50b){return function(_0x1a1e70){if(!_0x1a1e70){_0x306b31[_0x7541('0x17')](0x194);}return _0x1a1e70;};}function handleError(_0x91a61e,_0x3c981a){_0x3c981a=_0x3c981a||0x1f4;return function(_0xb16c4c){logger['error'](_0xb16c4c[_0x7541('0x25')]);if(_0xb16c4c[_0x7541('0x26')]){delete _0xb16c4c[_0x7541('0x26')];}_0x91a61e['status'](_0x3c981a)['send'](_0xb16c4c);};}exports['index']=function(_0x435643,_0x6c71fd){var _0x530f33={},_0x288c3f={},_0xadcfc6={'count':0x0,'rows':[]};var _0x56b58e=_['map'](db[_0x7541('0x27')][_0x7541('0x28')],function(_0x44493a){return{'name':_0x44493a[_0x7541('0x29')],'type':_0x44493a[_0x7541('0x2a')][_0x7541('0x2b')]};});_0x288c3f[_0x7541('0x2c')]=_[_0x7541('0x2d')](_0x56b58e,_0x7541('0x26'));_0x288c3f[_0x7541('0x2e')]=_[_0x7541('0x2f')](_0x435643[_0x7541('0x2e')]);_0x288c3f['filters']=_[_0x7541('0x30')](_0x288c3f[_0x7541('0x2c')],_0x288c3f[_0x7541('0x2e')]);_0x530f33['attributes']=_[_0x7541('0x30')](_0x288c3f[_0x7541('0x2c')],qs['fields'](_0x435643[_0x7541('0x2e')][_0x7541('0x31')]));_0x530f33['attributes']=_0x530f33['attributes'][_0x7541('0x32')]?_0x530f33['attributes']:_0x288c3f[_0x7541('0x2c')];if(!_0x435643[_0x7541('0x2e')]['hasOwnProperty']('nolimit')){_0x530f33['limit']=qs['limit'](_0x435643[_0x7541('0x2e')][_0x7541('0x33')]);_0x530f33['offset']=qs[_0x7541('0x1b')](_0x435643[_0x7541('0x2e')][_0x7541('0x1b')]);}_0x530f33[_0x7541('0x34')]=qs[_0x7541('0x35')](_0x435643[_0x7541('0x2e')][_0x7541('0x35')]);_0x530f33[_0x7541('0x36')]=qs[_0x7541('0x37')](_[_0x7541('0x38')](_0x435643[_0x7541('0x2e')],_0x288c3f['filters']),_0x56b58e);if(_0x435643[_0x7541('0x2e')][_0x7541('0x39')]){_0x530f33[_0x7541('0x36')]=_[_0x7541('0x3a')](_0x530f33[_0x7541('0x36')],{'$or':_[_0x7541('0x2d')](_0x56b58e,function(_0x3261fe){if(_0x3261fe[_0x7541('0x2a')]!=='VIRTUAL'){var _0x5e51ed={};_0x5e51ed[_0x3261fe[_0x7541('0x26')]]={'$like':'%'+_0x435643[_0x7541('0x2e')][_0x7541('0x39')]+'%'};return _0x5e51ed;}})});}_0x530f33=_[_0x7541('0x3a')]({},_0x530f33,_0x435643[_0x7541('0x3b')]);var _0x5eba68={'where':_0x530f33[_0x7541('0x36')]};return db['VtigerAccount'][_0x7541('0x1d')](_0x5eba68)[_0x7541('0x23')](function(_0x44da0d){_0xadcfc6[_0x7541('0x1d')]=_0x44da0d;if(_0x435643[_0x7541('0x2e')][_0x7541('0x3c')]){_0x530f33[_0x7541('0x3d')]=[{'all':!![]}];}return db[_0x7541('0x27')][_0x7541('0x3e')](_0x530f33);})['then'](function(_0x47b540){_0xadcfc6[_0x7541('0x3f')]=_0x47b540;return _0xadcfc6;})[_0x7541('0x23')](respondWithFilteredResult(_0x6c71fd,_0x530f33))[_0x7541('0x40')](handleError(_0x6c71fd,null));};exports[_0x7541('0x41')]=function(_0x442813,_0x15dbd4){var _0x22bfea={'raw':![],'where':{'id':_0x442813[_0x7541('0x42')]['id']}},_0x549fd9={};_0x549fd9[_0x7541('0x2c')]=_[_0x7541('0x2f')](db[_0x7541('0x27')][_0x7541('0x28')]);_0x549fd9['query']=_[_0x7541('0x2f')](_0x442813[_0x7541('0x2e')]);_0x549fd9[_0x7541('0x37')]=_[_0x7541('0x30')](_0x549fd9['model'],_0x549fd9[_0x7541('0x2e')]);_0x22bfea[_0x7541('0x43')]=_[_0x7541('0x30')](_0x549fd9[_0x7541('0x2c')],qs[_0x7541('0x31')](_0x442813[_0x7541('0x2e')][_0x7541('0x31')]));_0x22bfea[_0x7541('0x43')]=_0x22bfea[_0x7541('0x43')]['length']?_0x22bfea[_0x7541('0x43')]:_0x549fd9[_0x7541('0x2c')];if(_0x442813['query'][_0x7541('0x3c')]){_0x22bfea[_0x7541('0x3d')]=[{'all':!![]}];}_0x22bfea=_['merge']({},_0x22bfea,_0x442813[_0x7541('0x3b')]);return db[_0x7541('0x27')][_0x7541('0x44')](_0x22bfea)['then'](handleEntityNotFound(_0x15dbd4,null))['then'](respondWithResult(_0x15dbd4,null))[_0x7541('0x40')](handleError(_0x15dbd4,null));};exports[_0x7541('0x45')]=function(_0x4bd180,_0x44ac43){return db[_0x7541('0x27')][_0x7541('0x45')](_0x4bd180[_0x7541('0x46')],{})[_0x7541('0x23')](respondWithResult(_0x44ac43,0xc9))['catch'](handleError(_0x44ac43,null));};exports[_0x7541('0x22')]=function(_0x1e26eb,_0xae76d8){if(_0x1e26eb[_0x7541('0x46')]['id']){delete _0x1e26eb[_0x7541('0x46')]['id'];}return db['VtigerAccount'][_0x7541('0x44')]({'where':{'id':_0x1e26eb['params']['id']}})['then'](handleEntityNotFound(_0xae76d8,null))[_0x7541('0x23')](saveUpdates(_0x1e26eb[_0x7541('0x46')],null))[_0x7541('0x23')](respondWithResult(_0xae76d8,null))[_0x7541('0x40')](handleError(_0xae76d8,null));};exports[_0x7541('0x24')]=function(_0x29aa6d,_0x2c71b3){return db[_0x7541('0x27')]['find']({'where':{'id':_0x29aa6d[_0x7541('0x42')]['id']}})[_0x7541('0x23')](handleEntityNotFound(_0x2c71b3,null))[_0x7541('0x23')](removeEntity(_0x2c71b3,null))[_0x7541('0x40')](handleError(_0x2c71b3,null));};exports['getConfigurations']=function(_0x3f1cde,_0x2cc0c0,_0xb2693d){var _0x4c65bd={};var _0x520bac={};var _0x3c5538;var _0x50d4ab;return db['VtigerAccount'][_0x7541('0x47')]({'where':{'id':_0x3f1cde['params']['id']}})[_0x7541('0x23')](handleEntityNotFound(_0x2cc0c0,null))[_0x7541('0x23')](function(_0x217e8c){if(_0x217e8c){_0x3c5538=_0x217e8c;_0x520bac[_0x7541('0x2c')]=_[_0x7541('0x2f')](db[_0x7541('0x48')]['rawAttributes']);_0x520bac[_0x7541('0x2e')]=_[_0x7541('0x2f')](_0x3f1cde[_0x7541('0x2e')]);_0x520bac[_0x7541('0x37')]=_['intersection'](_0x520bac[_0x7541('0x2c')],_0x520bac[_0x7541('0x2e')]);_0x4c65bd[_0x7541('0x43')]=_['intersection'](_0x520bac[_0x7541('0x2c')],qs[_0x7541('0x31')](_0x3f1cde[_0x7541('0x2e')][_0x7541('0x31')]));_0x4c65bd[_0x7541('0x43')]=_0x4c65bd[_0x7541('0x43')][_0x7541('0x32')]?_0x4c65bd[_0x7541('0x43')]:_0x520bac[_0x7541('0x2c')];_0x4c65bd['order']=qs[_0x7541('0x35')](_0x3f1cde[_0x7541('0x2e')][_0x7541('0x35')]);_0x4c65bd[_0x7541('0x36')]=qs[_0x7541('0x37')](_[_0x7541('0x38')](_0x3f1cde[_0x7541('0x2e')],_0x520bac[_0x7541('0x37')]));if(_0x3f1cde[_0x7541('0x2e')][_0x7541('0x39')]){_0x4c65bd[_0x7541('0x36')]=_[_0x7541('0x3a')](_0x4c65bd[_0x7541('0x36')],{'$or':_['map'](_0x4c65bd[_0x7541('0x43')],function(_0x241aa8){var _0x2198e1={};_0x2198e1[_0x241aa8]={'$like':'%'+_0x3f1cde[_0x7541('0x2e')]['filter']+'%'};return _0x2198e1;})});}_0x4c65bd=_[_0x7541('0x3a')]({},_0x4c65bd,_0x3f1cde[_0x7541('0x3b')]);return _0x3c5538[_0x7541('0x49')](_0x4c65bd);}})[_0x7541('0x23')](function(_0x33a012){if(_0x33a012){_0x50d4ab=_0x33a012[_0x7541('0x32')];if(!_0x3f1cde[_0x7541('0x2e')][_0x7541('0x4a')](_0x7541('0x4b'))){_0x4c65bd[_0x7541('0x33')]=qs[_0x7541('0x33')](_0x3f1cde['query'][_0x7541('0x33')]);_0x4c65bd[_0x7541('0x1b')]=qs[_0x7541('0x1b')](_0x3f1cde[_0x7541('0x2e')][_0x7541('0x1b')]);}return _0x3c5538[_0x7541('0x49')](_0x4c65bd);}})['then'](function(_0x4bdb04){if(_0x4bdb04){return _0x4bdb04?{'count':_0x50d4ab,'rows':_0x4bdb04}:null;}})[_0x7541('0x23')](respondWithResult(_0x2cc0c0,null))['catch'](handleError(_0x2cc0c0,null));};exports['addConfiguration']=function(_0x3b47d6,_0x39263e,_0x2d3d95){if(_0x3b47d6[_0x7541('0x46')]['id']){delete _0x3b47d6[_0x7541('0x46')]['id'];}return db[_0x7541('0x27')]['findOne']({'where':{'id':_0x3b47d6[_0x7541('0x42')]['id']}})['then'](handleEntityNotFound(_0x39263e,null))[_0x7541('0x23')](function(_0x195ce0){if(_0x195ce0){_0x3b47d6['body'][_0x7541('0x4c')]=_0x195ce0['id'];_0x3b47d6[_0x7541('0x46')][_0x7541('0x4d')]=integrations[_0x7541('0x4e')](_0x3b47d6[_0x7541('0x46')][_0x7541('0x4f')],_0x3b47d6[_0x7541('0x46')]['type']);_0x3b47d6['body']['Descriptions']=integrations[_0x7541('0x50')](_0x3b47d6['body'][_0x7541('0x4f')],_0x3b47d6[_0x7541('0x46')]['type']);return db[_0x7541('0x48')][_0x7541('0x45')](_0x3b47d6['body'],{'include':[{'model':db[_0x7541('0x51')],'as':_0x7541('0x4d')},{'model':db[_0x7541('0x51')],'as':'Descriptions'}]});}return null;})[_0x7541('0x23')](respondWithResult(_0x39263e,null))['catch'](handleError(_0x39263e,null));};var md5=require('md5');exports[_0x7541('0x52')]=function(_0x1719c7,_0x50c3d2,_0x377c65){var _0x25a98b=null;var _0x392fd6=null;var _0x3076fe=null;var _0x11a874=null;var _0x29c55f='';return db[_0x7541('0x27')][_0x7541('0x47')]({'where':{'id':_0x1719c7[_0x7541('0x42')]['id']},'attributes':['id','name',_0x7541('0x53'),_0x7541('0x54'),'moduleName',_0x7541('0x55'),_0x7541('0x56'),_0x7541('0x57')]})[_0x7541('0x23')](handleEntityNotFound(_0x50c3d2,null))['then'](function(_0x9a93fb){if(_0x9a93fb){_0x25a98b=_0x9a93fb[_0x7541('0x53')];_0x392fd6=_0x9a93fb[_0x7541('0x57')];_0x3076fe=_0x9a93fb[_0x7541('0x58')];_0x29c55f=_0x9a93fb[_0x7541('0x55')];var _0x4c6ec7=_0x29c55f[_0x7541('0x59')](-0x1);if(_0x4c6ec7==='/'){_0x29c55f=_0x29c55f[_0x7541('0x5a')](0x0,_0x29c55f[_0x7541('0x5b')](_0x4c6ec7));}_0x11a874=util[_0x7541('0x5c')]('%s/webservice.php',_0x29c55f);var _0x48f1af={'method':_0x7541('0x5d'),'uri':_0x11a874,'qs':{'operation':_0x7541('0x5e'),'username':_0x9a93fb[_0x7541('0x53')]},'json':!![]};return rp(_0x48f1af);}})['then'](function(_0x2b7163){if(_0x2b7163['success']){var _0x81e989={'method':_0x7541('0x5f'),'uri':_0x11a874,'form':{'operation':_0x7541('0x60'),'username':_0x25a98b,'accessKey':md5(_0x2b7163[_0x7541('0x61')]['token']+_0x392fd6)},'json':!![]};return rp(_0x81e989);}})[_0x7541('0x23')](function(_0xb45dd1){if(_0xb45dd1[_0x7541('0x62')]){var _0x323c4d={'method':'GET','uri':_0x11a874,'qs':{'operation':_0x7541('0x63'),'username':_0x25a98b,'sessionName':_0xb45dd1['result']['sessionName'],'elementType':_0x3076fe},'json':!![]};return rp(_0x323c4d);}})[_0x7541('0x23')](function(_0x592b9d){if(_0x592b9d[_0x7541('0x62')]){var _0x2ee78d=[_0x7541('0x64'),_0x7541('0x65'),_0x7541('0x66')];_[_0x7541('0x67')](_0x592b9d[_0x7541('0x61')][_0x7541('0x31')],function(_0x21f660){return _0x2ee78d[_0x7541('0x68')](_0x21f660[_0x7541('0x2a')][_0x7541('0x26')]);});_[_0x7541('0x67')](_0x592b9d[_0x7541('0x61')]['fields'],function(_0x473bda){return _0x473bda['editable']===_0x7541('0x69');});return{'count':_0x592b9d[_0x7541('0x61')]['fields']['length'],'rows':_[_0x7541('0x2d')](_0x592b9d[_0x7541('0x61')][_0x7541('0x31')],function(_0x3c5ba6){return{'id':_0x3c5ba6['name'],'name':_0x3c5ba6[_0x7541('0x6a')],'custom':_['startsWith'](_0x3c5ba6[_0x7541('0x26')],_0x7541('0x6b'))?!![]:![],'options':_0x3c5ba6[_0x7541('0x2a')][_0x7541('0x26')]===_0x7541('0x6c')&&_0x3c5ba6[_0x7541('0x2a')][_0x7541('0x6d')][_0x7541('0x32')]>0x0?_[_0x7541('0x2d')](_0x3c5ba6[_0x7541('0x2a')][_0x7541('0x6d')],function(_0x42c75f){return{'name':_0x42c75f[_0x7541('0x6a')],'value':_0x42c75f[_0x7541('0x6e')]};}):[]};})};}})[_0x7541('0x23')](respondWithResult(_0x50c3d2,null))[_0x7541('0x40')](function(_0x3319d7){console[_0x7541('0x6f')]('vTiger\x20error:\x20'+_0x3319d7);var _0xf590b2=_0x1719c7[_0x7541('0x2e')][_0x7541('0x70')]?0x1f4:_0x3319d7[_0x7541('0x71')]||0x1f4;logger[_0x7541('0x72')](_0x7541('0x73'),_0x7541('0x52'),_0xf590b2,JSON[_0x7541('0x74')](_0x3319d7));delete _0x3319d7[_0x7541('0x26')];if(_0xf590b2===0x191){_0xf590b2=0x190;}_0x50c3d2[_0x7541('0x18')](_0xf590b2)['send'](_0x1719c7[_0x7541('0x2e')][_0x7541('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x3319d7[_0x7541('0x71')]}:_0x3319d7);});};
\ No newline at end of file
+var _0x72e9=['querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','name','send','map','VtigerAccount','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','pick','filter','VIRTUAL','options','where','includeAll','include','catch','show','params','merge','find','create','body','getConfigurations','findOne','VtigerConfiguration','AccountId','channel','Descriptions','getDescriptions','VtigerField','Subjects','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','lastIndexOf','format','%s/webservice.php','getchallenge','success','POST','login','result','token','GET','describe','autogenerated','reference','owner','remove','includes','editable','false','label','cf_','picklistValues','value','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce'];(function(_0x281aed,_0x2f2677){var _0x8d980e=function(_0x146325){while(--_0x146325){_0x281aed['push'](_0x281aed['shift']());}};_0x8d980e(++_0x2f2677);}(_0x72e9,0xd8));var _0x972e=function(_0x22e2ae,_0x4ef9b6){_0x22e2ae=_0x22e2ae-0x0;var _0xeac627=_0x72e9[_0x22e2ae];return _0xeac627;};'use strict';var emlformat=require(_0x972e('0x0'));var rimraf=require(_0x972e('0x1'));var zipdir=require(_0x972e('0x2'));var jsonpatch=require(_0x972e('0x3'));var rp=require(_0x972e('0x4'));var moment=require(_0x972e('0x5'));var BPromise=require(_0x972e('0x6'));var Mustache=require('mustache');var util=require(_0x972e('0x7'));var path=require(_0x972e('0x8'));var sox=require('sox');var csv=require(_0x972e('0x9'));var ejs=require(_0x972e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x972e('0xb'));var squel=require('squel');var crypto=require(_0x972e('0xc'));var jsforce=require(_0x972e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x972e('0x9'));var querystring=require(_0x972e('0xe'));var Papa=require(_0x972e('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x972e('0x10'));var hardwareService=require(_0x972e('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x972e('0x12'));var licenseUtil=require(_0x972e('0x13'));var db=require(_0x972e('0x14'))['db'];var integrations=require(_0x972e('0x15'));function respondWithStatusCode(_0x1dfbbc,_0x4f0d5c){_0x4f0d5c=_0x4f0d5c||0xcc;return function(_0x46dfde){if(_0x46dfde){return _0x1dfbbc[_0x972e('0x16')](_0x4f0d5c);}return _0x1dfbbc[_0x972e('0x17')](_0x4f0d5c)[_0x972e('0x18')]();};}function respondWithResult(_0x4c8094,_0x4fa721){_0x4fa721=_0x4fa721||0xc8;return function(_0x39c6e6){if(_0x39c6e6){return _0x4c8094[_0x972e('0x17')](_0x4fa721)[_0x972e('0x19')](_0x39c6e6);}};}function respondWithFilteredResult(_0x40b449,_0x4c3ed2){return function(_0x438544){if(_0x438544){var _0x172be4=typeof _0x4c3ed2[_0x972e('0x1a')]===_0x972e('0x1b')&&typeof _0x4c3ed2[_0x972e('0x1c')]===_0x972e('0x1b');var _0x29ad99=_0x438544[_0x972e('0x1d')];var _0x24a492=_0x172be4?0x0:_0x4c3ed2[_0x972e('0x1a')];var _0x177821=_0x172be4?_0x438544['count']:_0x4c3ed2['offset']+_0x4c3ed2['limit'];var _0x4c0ac6;if(_0x177821>=_0x29ad99){_0x177821=_0x29ad99;_0x4c0ac6=0xc8;}else{_0x4c0ac6=0xce;}_0x40b449[_0x972e('0x17')](_0x4c0ac6);return _0x40b449[_0x972e('0x1e')]('Content-Range',_0x24a492+'-'+_0x177821+'/'+_0x29ad99)[_0x972e('0x19')](_0x438544);}return null;};}function patchUpdates(_0x169c9d){return function(_0x29fe1d){try{jsonpatch[_0x972e('0x1f')](_0x29fe1d,_0x169c9d,!![]);}catch(_0x120fd1){return BPromise['reject'](_0x120fd1);}return _0x29fe1d[_0x972e('0x20')]();};}function saveUpdates(_0x30de2e,_0x48c119){return function(_0x345ad8){if(_0x345ad8){return _0x345ad8[_0x972e('0x21')](_0x30de2e)[_0x972e('0x22')](function(_0x1ca966){return _0x1ca966;});}return null;};}function removeEntity(_0x2906b7,_0x4119bb){return function(_0x124d70){if(_0x124d70){return _0x124d70[_0x972e('0x23')]()['then'](function(){_0x2906b7['status'](0xcc)[_0x972e('0x18')]();});}};}function handleEntityNotFound(_0x4a98bd,_0x3b9912){return function(_0x4afd6e){if(!_0x4afd6e){_0x4a98bd['sendStatus'](0x194);}return _0x4afd6e;};}function handleError(_0x5a6e8d,_0x1c7f9e){_0x1c7f9e=_0x1c7f9e||0x1f4;return function(_0xd8ecc0){logger[_0x972e('0x24')](_0xd8ecc0['stack']);if(_0xd8ecc0[_0x972e('0x25')]){delete _0xd8ecc0[_0x972e('0x25')];}_0x5a6e8d[_0x972e('0x17')](_0x1c7f9e)[_0x972e('0x26')](_0xd8ecc0);};}exports['index']=function(_0x59ae3a,_0x31a744){var _0x237052={},_0x4ed224={},_0x38e225={'count':0x0,'rows':[]};var _0x4e7928=_[_0x972e('0x27')](db[_0x972e('0x28')][_0x972e('0x29')],function(_0x4f9cc4){return{'name':_0x4f9cc4[_0x972e('0x2a')],'type':_0x4f9cc4[_0x972e('0x2b')][_0x972e('0x2c')]};});_0x4ed224['model']=_[_0x972e('0x27')](_0x4e7928,_0x972e('0x25'));_0x4ed224[_0x972e('0x2d')]=_[_0x972e('0x2e')](_0x59ae3a[_0x972e('0x2d')]);_0x4ed224['filters']=_['intersection'](_0x4ed224[_0x972e('0x2f')],_0x4ed224[_0x972e('0x2d')]);_0x237052[_0x972e('0x30')]=_[_0x972e('0x31')](_0x4ed224['model'],qs[_0x972e('0x32')](_0x59ae3a['query']['fields']));_0x237052['attributes']=_0x237052['attributes'][_0x972e('0x33')]?_0x237052['attributes']:_0x4ed224[_0x972e('0x2f')];if(!_0x59ae3a['query'][_0x972e('0x34')]('nolimit')){_0x237052['limit']=qs[_0x972e('0x1c')](_0x59ae3a[_0x972e('0x2d')][_0x972e('0x1c')]);_0x237052[_0x972e('0x1a')]=qs[_0x972e('0x1a')](_0x59ae3a['query']['offset']);}_0x237052[_0x972e('0x35')]=qs[_0x972e('0x36')](_0x59ae3a[_0x972e('0x2d')][_0x972e('0x36')]);_0x237052['where']=qs[_0x972e('0x37')](_[_0x972e('0x38')](_0x59ae3a['query'],_0x4ed224[_0x972e('0x37')]),_0x4e7928);if(_0x59ae3a[_0x972e('0x2d')][_0x972e('0x39')]){_0x237052['where']=_['merge'](_0x237052['where'],{'$or':_[_0x972e('0x27')](_0x4e7928,function(_0x49c34c){if(_0x49c34c[_0x972e('0x2b')]!==_0x972e('0x3a')){var _0x5b8649={};_0x5b8649[_0x49c34c[_0x972e('0x25')]]={'$like':'%'+_0x59ae3a['query'][_0x972e('0x39')]+'%'};return _0x5b8649;}})});}_0x237052=_['merge']({},_0x237052,_0x59ae3a[_0x972e('0x3b')]);var _0xe111ea={'where':_0x237052[_0x972e('0x3c')]};return db[_0x972e('0x28')][_0x972e('0x1d')](_0xe111ea)['then'](function(_0x1ee8c4){_0x38e225[_0x972e('0x1d')]=_0x1ee8c4;if(_0x59ae3a[_0x972e('0x2d')][_0x972e('0x3d')]){_0x237052[_0x972e('0x3e')]=[{'all':!![]}];}return db[_0x972e('0x28')]['findAll'](_0x237052);})[_0x972e('0x22')](function(_0x271874){_0x38e225['rows']=_0x271874;return _0x38e225;})['then'](respondWithFilteredResult(_0x31a744,_0x237052))[_0x972e('0x3f')](handleError(_0x31a744,null));};exports[_0x972e('0x40')]=function(_0x21627d,_0x5dba80){var _0x78a7c2={'raw':![],'where':{'id':_0x21627d[_0x972e('0x41')]['id']}},_0x1616b6={};_0x1616b6[_0x972e('0x2f')]=_['keys'](db['VtigerAccount'][_0x972e('0x29')]);_0x1616b6[_0x972e('0x2d')]=_['keys'](_0x21627d['query']);_0x1616b6[_0x972e('0x37')]=_[_0x972e('0x31')](_0x1616b6[_0x972e('0x2f')],_0x1616b6[_0x972e('0x2d')]);_0x78a7c2[_0x972e('0x30')]=_[_0x972e('0x31')](_0x1616b6[_0x972e('0x2f')],qs[_0x972e('0x32')](_0x21627d[_0x972e('0x2d')][_0x972e('0x32')]));_0x78a7c2[_0x972e('0x30')]=_0x78a7c2[_0x972e('0x30')][_0x972e('0x33')]?_0x78a7c2['attributes']:_0x1616b6[_0x972e('0x2f')];if(_0x21627d[_0x972e('0x2d')]['includeAll']){_0x78a7c2['include']=[{'all':!![]}];}_0x78a7c2=_[_0x972e('0x42')]({},_0x78a7c2,_0x21627d['options']);return db[_0x972e('0x28')][_0x972e('0x43')](_0x78a7c2)[_0x972e('0x22')](handleEntityNotFound(_0x5dba80,null))[_0x972e('0x22')](respondWithResult(_0x5dba80,null))[_0x972e('0x3f')](handleError(_0x5dba80,null));};exports[_0x972e('0x44')]=function(_0x2cd8ce,_0x52ba13){return db[_0x972e('0x28')][_0x972e('0x44')](_0x2cd8ce['body'],{})[_0x972e('0x22')](respondWithResult(_0x52ba13,0xc9))['catch'](handleError(_0x52ba13,null));};exports[_0x972e('0x21')]=function(_0x348f4b,_0x3e341f){if(_0x348f4b[_0x972e('0x45')]['id']){delete _0x348f4b[_0x972e('0x45')]['id'];}return db[_0x972e('0x28')][_0x972e('0x43')]({'where':{'id':_0x348f4b['params']['id']}})[_0x972e('0x22')](handleEntityNotFound(_0x3e341f,null))[_0x972e('0x22')](saveUpdates(_0x348f4b[_0x972e('0x45')],null))['then'](respondWithResult(_0x3e341f,null))[_0x972e('0x3f')](handleError(_0x3e341f,null));};exports[_0x972e('0x23')]=function(_0x11ee9a,_0x40a3f7){return db[_0x972e('0x28')][_0x972e('0x43')]({'where':{'id':_0x11ee9a[_0x972e('0x41')]['id']}})[_0x972e('0x22')](handleEntityNotFound(_0x40a3f7,null))[_0x972e('0x22')](removeEntity(_0x40a3f7,null))[_0x972e('0x3f')](handleError(_0x40a3f7,null));};exports[_0x972e('0x46')]=function(_0x4ab52d,_0x562f1d,_0x4cb8b7){var _0x172835={};var _0x1e89f6={};var _0x4faf7b;var _0x2476e0;return db['VtigerAccount'][_0x972e('0x47')]({'where':{'id':_0x4ab52d[_0x972e('0x41')]['id']}})[_0x972e('0x22')](handleEntityNotFound(_0x562f1d,null))[_0x972e('0x22')](function(_0x4541ce){if(_0x4541ce){_0x4faf7b=_0x4541ce;_0x1e89f6['model']=_[_0x972e('0x2e')](db[_0x972e('0x48')]['rawAttributes']);_0x1e89f6[_0x972e('0x2d')]=_[_0x972e('0x2e')](_0x4ab52d[_0x972e('0x2d')]);_0x1e89f6[_0x972e('0x37')]=_[_0x972e('0x31')](_0x1e89f6['model'],_0x1e89f6['query']);_0x172835[_0x972e('0x30')]=_['intersection'](_0x1e89f6[_0x972e('0x2f')],qs['fields'](_0x4ab52d[_0x972e('0x2d')]['fields']));_0x172835[_0x972e('0x30')]=_0x172835[_0x972e('0x30')][_0x972e('0x33')]?_0x172835[_0x972e('0x30')]:_0x1e89f6[_0x972e('0x2f')];_0x172835[_0x972e('0x35')]=qs[_0x972e('0x36')](_0x4ab52d['query'][_0x972e('0x36')]);_0x172835[_0x972e('0x3c')]=qs['filters'](_[_0x972e('0x38')](_0x4ab52d[_0x972e('0x2d')],_0x1e89f6[_0x972e('0x37')]));if(_0x4ab52d['query']['filter']){_0x172835[_0x972e('0x3c')]=_[_0x972e('0x42')](_0x172835[_0x972e('0x3c')],{'$or':_['map'](_0x172835[_0x972e('0x30')],function(_0x22f280){var _0x511e97={};_0x511e97[_0x22f280]={'$like':'%'+_0x4ab52d['query'][_0x972e('0x39')]+'%'};return _0x511e97;})});}_0x172835=_[_0x972e('0x42')]({},_0x172835,_0x4ab52d['options']);return _0x4faf7b[_0x972e('0x46')](_0x172835);}})[_0x972e('0x22')](function(_0x2931a6){if(_0x2931a6){_0x2476e0=_0x2931a6[_0x972e('0x33')];if(!_0x4ab52d[_0x972e('0x2d')][_0x972e('0x34')]('nolimit')){_0x172835[_0x972e('0x1c')]=qs[_0x972e('0x1c')](_0x4ab52d[_0x972e('0x2d')][_0x972e('0x1c')]);_0x172835[_0x972e('0x1a')]=qs['offset'](_0x4ab52d[_0x972e('0x2d')][_0x972e('0x1a')]);}return _0x4faf7b[_0x972e('0x46')](_0x172835);}})['then'](function(_0x50684f){if(_0x50684f){return _0x50684f?{'count':_0x2476e0,'rows':_0x50684f}:null;}})['then'](respondWithResult(_0x562f1d,null))[_0x972e('0x3f')](handleError(_0x562f1d,null));};exports['addConfiguration']=function(_0x355e8f,_0x442fbb,_0x2697bf){if(_0x355e8f[_0x972e('0x45')]['id']){delete _0x355e8f[_0x972e('0x45')]['id'];}return db['VtigerAccount'][_0x972e('0x47')]({'where':{'id':_0x355e8f[_0x972e('0x41')]['id']}})[_0x972e('0x22')](handleEntityNotFound(_0x442fbb,null))[_0x972e('0x22')](function(_0x5c2362){if(_0x5c2362){_0x355e8f[_0x972e('0x45')][_0x972e('0x49')]=_0x5c2362['id'];_0x355e8f[_0x972e('0x45')]['Subjects']=integrations['getSubjects'](_0x355e8f[_0x972e('0x45')][_0x972e('0x4a')],_0x355e8f['body'][_0x972e('0x2b')]);_0x355e8f[_0x972e('0x45')][_0x972e('0x4b')]=integrations[_0x972e('0x4c')](_0x355e8f[_0x972e('0x45')][_0x972e('0x4a')],_0x355e8f['body'][_0x972e('0x2b')]);return db[_0x972e('0x48')][_0x972e('0x44')](_0x355e8f[_0x972e('0x45')],{'include':[{'model':db[_0x972e('0x4d')],'as':_0x972e('0x4e')},{'model':db[_0x972e('0x4d')],'as':_0x972e('0x4b')}]});}return null;})[_0x972e('0x22')](respondWithResult(_0x442fbb,null))['catch'](handleError(_0x442fbb,null));};var md5=require(_0x972e('0x4f'));exports[_0x972e('0x50')]=function(_0xe83f59,_0x26d4f4,_0x4e2d2f){var _0x5f15b8=null;var _0x27bea2=null;var _0x51377c=null;var _0x11a934=null;var _0x514070='';return db['VtigerAccount'][_0x972e('0x47')]({'where':{'id':_0xe83f59[_0x972e('0x41')]['id']},'attributes':['id',_0x972e('0x25'),_0x972e('0x51'),_0x972e('0x52'),_0x972e('0x53'),_0x972e('0x54'),_0x972e('0x55'),_0x972e('0x56')]})['then'](handleEntityNotFound(_0x26d4f4,null))['then'](function(_0x1785b3){if(_0x1785b3){_0x5f15b8=_0x1785b3['username'];_0x27bea2=_0x1785b3[_0x972e('0x56')];_0x51377c=_0x1785b3[_0x972e('0x53')];_0x514070=_0x1785b3['remoteUri'];var _0x12283e=_0x514070[_0x972e('0x57')](-0x1);if(_0x12283e==='/'){_0x514070=_0x514070['substring'](0x0,_0x514070[_0x972e('0x58')](_0x12283e));}_0x11a934=util[_0x972e('0x59')](_0x972e('0x5a'),_0x514070);var _0x30cf6a={'method':'GET','uri':_0x11a934,'qs':{'operation':_0x972e('0x5b'),'username':_0x1785b3[_0x972e('0x51')]},'json':!![]};return rp(_0x30cf6a);}})[_0x972e('0x22')](function(_0x1983ab){if(_0x1983ab[_0x972e('0x5c')]){var _0xdbe130={'method':_0x972e('0x5d'),'uri':_0x11a934,'form':{'operation':_0x972e('0x5e'),'username':_0x5f15b8,'accessKey':md5(_0x1983ab[_0x972e('0x5f')][_0x972e('0x60')]+_0x27bea2)},'json':!![]};return rp(_0xdbe130);}})['then'](function(_0x3760c8){if(_0x3760c8[_0x972e('0x5c')]){var _0x2e32dd={'method':_0x972e('0x61'),'uri':_0x11a934,'qs':{'operation':_0x972e('0x62'),'username':_0x5f15b8,'sessionName':_0x3760c8[_0x972e('0x5f')]['sessionName'],'elementType':_0x51377c},'json':!![]};return rp(_0x2e32dd);}})[_0x972e('0x22')](function(_0x48711f){if(_0x48711f['success']){var _0x5b2038=[_0x972e('0x63'),_0x972e('0x64'),_0x972e('0x65')];_[_0x972e('0x66')](_0x48711f[_0x972e('0x5f')][_0x972e('0x32')],function(_0x268be4){return _0x5b2038[_0x972e('0x67')](_0x268be4['type']['name']);});_['remove'](_0x48711f[_0x972e('0x5f')][_0x972e('0x32')],function(_0x3f1202){return _0x3f1202[_0x972e('0x68')]===_0x972e('0x69');});return{'count':_0x48711f['result'][_0x972e('0x32')][_0x972e('0x33')],'rows':_[_0x972e('0x27')](_0x48711f[_0x972e('0x5f')][_0x972e('0x32')],function(_0x40152f){return{'id':_0x40152f[_0x972e('0x25')],'name':_0x40152f[_0x972e('0x6a')],'custom':_['startsWith'](_0x40152f[_0x972e('0x25')],_0x972e('0x6b'))?!![]:![],'options':_0x40152f['type'][_0x972e('0x25')]==='picklist'&&_0x40152f[_0x972e('0x2b')][_0x972e('0x6c')]['length']>0x0?_[_0x972e('0x27')](_0x40152f[_0x972e('0x2b')][_0x972e('0x6c')],function(_0x5dbf4b){return{'name':_0x5dbf4b[_0x972e('0x6a')],'value':_0x5dbf4b[_0x972e('0x6d')]};}):[]};})};}})[_0x972e('0x22')](respondWithResult(_0x26d4f4,null))['catch'](function(_0x31d0b7){console['log']('vTiger\x20error:\x20'+_0x31d0b7);var _0x6e9718=_0xe83f59[_0x972e('0x2d')][_0x972e('0x6e')]?0x1f4:_0x31d0b7['statusCode']||0x1f4;logger[_0x972e('0x24')](_0x972e('0x6f'),_0x972e('0x50'),_0x6e9718,JSON[_0x972e('0x70')](_0x31d0b7));delete _0x31d0b7[_0x972e('0x25')];if(_0x6e9718===0x191){_0x6e9718=0x190;}_0x26d4f4[_0x972e('0x17')](_0x6e9718)[_0x972e('0x26')](_0xe83f59['query']['test']?{'message':_0x972e('0x71'),'statusCode':_0x31d0b7[_0x972e('0x72')]}:_0x31d0b7);});};
\ No newline at end of file
index 472baf1..92ecf83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0193=['rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0x0193,0xf0));var _0x3019=function(_0x3f2b99,_0x5f0ac1){_0x3f2b99=_0x3f2b99-0x0;var _0x433e05=_0x0193[_0x3f2b99];return _0x433e05;};'use strict';var _=require(_0x3019('0x0'));var util=require('util');var logger=require(_0x3019('0x1'))(_0x3019('0x2'));var moment=require(_0x3019('0x3'));var BPromise=require(_0x3019('0x4'));var rp=require(_0x3019('0x5'));var fs=require('fs');var path=require(_0x3019('0x6'));var rimraf=require(_0x3019('0x7'));var config=require(_0x3019('0x8'));var attributes=require(_0x3019('0x9'));var integrations=require(_0x3019('0xa'));module[_0x3019('0xb')]=function(_0x2a024d,_0xf17b0a){return _0x2a024d['define'](_0x3019('0xc'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7dfb=['exports','define','int_vtiger_accounts','lodash','util','api','moment','request-promise','rimraf','../../config/environment','./intVtigerAccount.attributes'];(function(_0x51b4ae,_0x319569){var _0x4efb5d=function(_0x54ec4f){while(--_0x54ec4f){_0x51b4ae['push'](_0x51b4ae['shift']());}};_0x4efb5d(++_0x319569);}(_0x7dfb,0x10b));var _0xb7df=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x7dfb[_0x543084];return _0x306a57;};'use strict';var _=require(_0xb7df('0x0'));var util=require(_0xb7df('0x1'));var logger=require('../../config/logger')(_0xb7df('0x2'));var moment=require(_0xb7df('0x3'));var BPromise=require('bluebird');var rp=require(_0xb7df('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb7df('0x5'));var config=require(_0xb7df('0x6'));var attributes=require(_0xb7df('0x7'));var integrations=require('../../components/integrations/configuration');module[_0xb7df('0x8')]=function(_0x32e9a8,_0x53528c){return _0x32e9a8[_0xb7df('0x9')]('VtigerAccount',attributes,{'tableName':_0xb7df('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6b6aec3..08f1b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcc=['findAll','options','raw','where','attributes','limit','map','model','include','then','GetVtigerAccount','catch','ShowVtigerAccount','VtigerAccount','find','lodash','bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x5e3a45,_0x45f0c5){var _0x13419f=function(_0x5ac996){while(--_0x5ac996){_0x5e3a45['push'](_0x5e3a45['shift']());}};_0x13419f(++_0x45f0c5);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x3f2a90,_0x50baf1){_0x3f2a90=_0x3f2a90-0x0;var _0xb46279=_0xbfcc[_0x3f2a90];return _0xb46279;};'use strict';var _=require(_0xcbfc('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcbfc('0x1'));var rs=require(_0xcbfc('0x2'));var fs=require('fs');var Redis=require(_0xcbfc('0x3'));var db=require(_0xcbfc('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xcbfc('0x5'));var client=jayson[_0xcbfc('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b3917,_0x5a2be0,_0x2ea130){return new BPromise(function(_0x1f8b71,_0x1b1377){return client[_0xcbfc('0x7')](_0x1b3917,_0x2ea130)['then'](function(_0x2e7097){logger[_0xcbfc('0x8')](_0xcbfc('0x9'),_0x5a2be0,_0xcbfc('0xa'));logger[_0xcbfc('0xb')](_0xcbfc('0xc'),_0x5a2be0,'request\x20sent',JSON[_0xcbfc('0xd')](_0x2e7097));if(_0x2e7097[_0xcbfc('0xe')]){if(_0x2e7097[_0xcbfc('0xe')][_0xcbfc('0xf')]===0x1f4){logger[_0xcbfc('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x5a2be0,_0x2e7097[_0xcbfc('0xe')][_0xcbfc('0x10')]);return _0x1b1377(_0x2e7097[_0xcbfc('0xe')]['message']);}logger[_0xcbfc('0xe')](_0xcbfc('0x9'),_0x5a2be0,_0x2e7097[_0xcbfc('0xe')][_0xcbfc('0x10')]);return _0x1f8b71(_0x2e7097[_0xcbfc('0xe')]['message']);}else{logger[_0xcbfc('0x8')](_0xcbfc('0x9'),_0x5a2be0,_0xcbfc('0xa'));_0x1f8b71(_0x2e7097[_0xcbfc('0x11')]['message']);}})['catch'](function(_0x418f18){logger[_0xcbfc('0xe')](_0xcbfc('0x9'),_0x5a2be0,_0x418f18);_0x1b1377(_0x418f18);});});}exports['GetVtigerAccount']=function(_0x5b078f){var _0x33f731=this;return new Promise(function(_0x99b59d,_0x344510){return db['VtigerAccount'][_0xcbfc('0x12')]({'raw':_0x5b078f['options']?_0x5b078f[_0xcbfc('0x13')][_0xcbfc('0x14')]===undefined?!![]:![]:!![],'where':_0x5b078f[_0xcbfc('0x13')]?_0x5b078f[_0xcbfc('0x13')][_0xcbfc('0x15')]||null:null,'attributes':_0x5b078f[_0xcbfc('0x13')]?_0x5b078f['options'][_0xcbfc('0x16')]||null:null,'limit':_0x5b078f[_0xcbfc('0x13')]?_0x5b078f['options'][_0xcbfc('0x17')]||null:null,'include':_0x5b078f['options']?_0x5b078f['options']['include']?_[_0xcbfc('0x18')](_0x5b078f['options']['include'],function(_0x1b3e42){return{'model':db[_0x1b3e42[_0xcbfc('0x19')]],'as':_0x1b3e42['as'],'attributes':_0x1b3e42[_0xcbfc('0x16')],'include':_0x1b3e42[_0xcbfc('0x1a')]?_['map'](_0x1b3e42[_0xcbfc('0x1a')],function(_0x51284a){return{'model':db[_0x51284a[_0xcbfc('0x19')]],'as':_0x51284a['as'],'attributes':_0x51284a[_0xcbfc('0x16')],'include':_0x51284a['include']?_[_0xcbfc('0x18')](_0x51284a[_0xcbfc('0x1a')],function(_0x4ab48e){return{'model':db[_0x4ab48e[_0xcbfc('0x19')]],'as':_0x4ab48e['as'],'attributes':_0x4ab48e[_0xcbfc('0x16')]};}):[]};}):[]};}):[]:[]})[_0xcbfc('0x1b')](function(_0x41f3b8){logger['info'](_0xcbfc('0x1c'),_0x5b078f);logger[_0xcbfc('0xb')]('GetVtigerAccount',_0x5b078f,JSON[_0xcbfc('0xd')](_0x41f3b8));_0x99b59d(_0x41f3b8);})[_0xcbfc('0x1d')](function(_0x7cbdfa){logger[_0xcbfc('0xe')](_0xcbfc('0x1c'),_0x7cbdfa[_0xcbfc('0x10')],_0x5b078f);_0x344510(_0x33f731[_0xcbfc('0xe')](0x1f4,_0x7cbdfa['message']));});});};exports[_0xcbfc('0x1e')]=function(_0x433300){var _0x3f9d20=this;return new Promise(function(_0x20a378,_0x500a0b){return db[_0xcbfc('0x1f')][_0xcbfc('0x20')]({'raw':_0x433300[_0xcbfc('0x13')]?_0x433300[_0xcbfc('0x13')][_0xcbfc('0x14')]===undefined?!![]:![]:!![],'where':_0x433300[_0xcbfc('0x13')]?_0x433300[_0xcbfc('0x13')]['where']||null:null,'attributes':_0x433300[_0xcbfc('0x13')]?_0x433300[_0xcbfc('0x13')]['attributes']||null:null,'include':_0x433300[_0xcbfc('0x13')]?_0x433300[_0xcbfc('0x13')][_0xcbfc('0x1a')]?_['map'](_0x433300['options']['include'],function(_0x3c6d04){return{'model':db[_0x3c6d04[_0xcbfc('0x19')]],'as':_0x3c6d04['as'],'attributes':_0x3c6d04[_0xcbfc('0x16')],'include':_0x3c6d04[_0xcbfc('0x1a')]?_[_0xcbfc('0x18')](_0x3c6d04[_0xcbfc('0x1a')],function(_0x856e83){return{'model':db[_0x856e83[_0xcbfc('0x19')]],'as':_0x856e83['as'],'attributes':_0x856e83['attributes'],'include':_0x856e83[_0xcbfc('0x1a')]?_[_0xcbfc('0x18')](_0x856e83['include'],function(_0x3093b5){return{'model':db[_0x3093b5['model']],'as':_0x3093b5['as'],'attributes':_0x3093b5[_0xcbfc('0x16')]};}):[]};}):[]};}):[]:[]})[_0xcbfc('0x1b')](function(_0x43121e){logger['info'](_0xcbfc('0x1e'),_0x433300);logger['debug']('ShowVtigerAccount',_0x433300,JSON[_0xcbfc('0xd')](_0x43121e));_0x20a378(_0x43121e);})[_0xcbfc('0x1d')](function(_0x382d8b){logger[_0xcbfc('0xe')](_0xcbfc('0x1e'),_0x382d8b[_0xcbfc('0x10')],_0x433300);_0x500a0b(_0x3f9d20[_0xcbfc('0xe')](0x1f4,_0x382d8b[_0xcbfc('0x10')]));});});};
\ No newline at end of file
+var _0x4483=['client','http','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVtigerAccount','options','raw','where','attributes','include','model','find','map','ShowVtigerAccount','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x168e2d,_0x9e0d1a){var _0x212197=function(_0x9273f3){while(--_0x9273f3){_0x168e2d['push'](_0x168e2d['shift']());}};_0x212197(++_0x9e0d1a);}(_0x4483,0x1a3));var _0x3448=function(_0xae6a5f,_0x4fcb3e){_0xae6a5f=_0xae6a5f-0x0;var _0xaa737e=_0x4483[_0xae6a5f];return _0xaa737e;};'use strict';var _=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var moment=require(_0x3448('0x2'));var BPromise=require('bluebird');var rs=require(_0x3448('0x3'));var fs=require('fs');var Redis=require(_0x3448('0x4'));var db=require(_0x3448('0x5'))['db'];var utils=require(_0x3448('0x6'));var logger=require(_0x3448('0x7'))('rpc');var config=require(_0x3448('0x8'));var jayson=require(_0x3448('0x9'));var client=jayson[_0x3448('0xa')][_0x3448('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bb7e5,_0x2caa81,_0x3cc81d){return new BPromise(function(_0x34b926,_0x5923ee){return client['request'](_0x1bb7e5,_0x3cc81d)[_0x3448('0xc')](function(_0x25c152){logger[_0x3448('0xd')](_0x3448('0xe'),_0x2caa81,_0x3448('0xf'));logger[_0x3448('0x10')](_0x3448('0x11'),_0x2caa81,_0x3448('0xf'),JSON[_0x3448('0x12')](_0x25c152));if(_0x25c152[_0x3448('0x13')]){if(_0x25c152[_0x3448('0x13')]['code']===0x1f4){logger['error'](_0x3448('0xe'),_0x2caa81,_0x25c152[_0x3448('0x13')]['message']);return _0x5923ee(_0x25c152[_0x3448('0x13')][_0x3448('0x14')]);}logger[_0x3448('0x13')]('VtigerAccount,\x20%s,\x20%s',_0x2caa81,_0x25c152[_0x3448('0x13')][_0x3448('0x14')]);return _0x34b926(_0x25c152['error'][_0x3448('0x14')]);}else{logger[_0x3448('0xd')](_0x3448('0xe'),_0x2caa81,'request\x20sent');_0x34b926(_0x25c152[_0x3448('0x15')][_0x3448('0x14')]);}})[_0x3448('0x16')](function(_0x30f8dd){logger[_0x3448('0x13')](_0x3448('0xe'),_0x2caa81,_0x30f8dd);_0x5923ee(_0x30f8dd);});});}exports[_0x3448('0x17')]=function(_0x425514){var _0x4a348c=this;return new Promise(function(_0x1658cd,_0x5b410d){return db['VtigerAccount']['findAll']({'raw':_0x425514[_0x3448('0x18')]?_0x425514[_0x3448('0x18')][_0x3448('0x19')]===undefined?!![]:![]:!![],'where':_0x425514['options']?_0x425514[_0x3448('0x18')][_0x3448('0x1a')]||null:null,'attributes':_0x425514[_0x3448('0x18')]?_0x425514[_0x3448('0x18')][_0x3448('0x1b')]||null:null,'limit':_0x425514[_0x3448('0x18')]?_0x425514['options']['limit']||null:null,'include':_0x425514['options']?_0x425514[_0x3448('0x18')][_0x3448('0x1c')]?_['map'](_0x425514['options'][_0x3448('0x1c')],function(_0x4371d6){return{'model':db[_0x4371d6[_0x3448('0x1d')]],'as':_0x4371d6['as'],'attributes':_0x4371d6[_0x3448('0x1b')],'include':_0x4371d6[_0x3448('0x1c')]?_['map'](_0x4371d6[_0x3448('0x1c')],function(_0x1b5c49){return{'model':db[_0x1b5c49[_0x3448('0x1d')]],'as':_0x1b5c49['as'],'attributes':_0x1b5c49[_0x3448('0x1b')],'include':_0x1b5c49[_0x3448('0x1c')]?_['map'](_0x1b5c49[_0x3448('0x1c')],function(_0x393081){return{'model':db[_0x393081['model']],'as':_0x393081['as'],'attributes':_0x393081[_0x3448('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3448('0xc')](function(_0x310912){logger[_0x3448('0xd')](_0x3448('0x17'),_0x425514);logger[_0x3448('0x10')](_0x3448('0x17'),_0x425514,JSON[_0x3448('0x12')](_0x310912));_0x1658cd(_0x310912);})['catch'](function(_0x3307dc){logger[_0x3448('0x13')](_0x3448('0x17'),_0x3307dc['message'],_0x425514);_0x5b410d(_0x4a348c[_0x3448('0x13')](0x1f4,_0x3307dc['message']));});});};exports['ShowVtigerAccount']=function(_0x493898){var _0x52fb48=this;return new Promise(function(_0xff6513,_0x5e96f0){return db['VtigerAccount'][_0x3448('0x1e')]({'raw':_0x493898[_0x3448('0x18')]?_0x493898[_0x3448('0x18')][_0x3448('0x19')]===undefined?!![]:![]:!![],'where':_0x493898['options']?_0x493898[_0x3448('0x18')][_0x3448('0x1a')]||null:null,'attributes':_0x493898[_0x3448('0x18')]?_0x493898['options'][_0x3448('0x1b')]||null:null,'include':_0x493898[_0x3448('0x18')]?_0x493898['options']['include']?_[_0x3448('0x1f')](_0x493898[_0x3448('0x18')][_0x3448('0x1c')],function(_0x37a0ee){return{'model':db[_0x37a0ee['model']],'as':_0x37a0ee['as'],'attributes':_0x37a0ee[_0x3448('0x1b')],'include':_0x37a0ee[_0x3448('0x1c')]?_[_0x3448('0x1f')](_0x37a0ee[_0x3448('0x1c')],function(_0x5ebab6){return{'model':db[_0x5ebab6[_0x3448('0x1d')]],'as':_0x5ebab6['as'],'attributes':_0x5ebab6[_0x3448('0x1b')],'include':_0x5ebab6['include']?_[_0x3448('0x1f')](_0x5ebab6[_0x3448('0x1c')],function(_0x89d6ae){return{'model':db[_0x89d6ae[_0x3448('0x1d')]],'as':_0x89d6ae['as'],'attributes':_0x89d6ae[_0x3448('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3448('0xc')](function(_0x32592f){logger[_0x3448('0xd')](_0x3448('0x20'),_0x493898);logger['debug']('ShowVtigerAccount',_0x493898,JSON[_0x3448('0x12')](_0x32592f));_0xff6513(_0x32592f);})['catch'](function(_0x22bb31){logger[_0x3448('0x13')](_0x3448('0x20'),_0x22bb31[_0x3448('0x14')],_0x493898);_0x5e96f0(_0x52fb48['error'](0x1f4,_0x22bb31[_0x3448('0x14')]));});});};
\ No newline at end of file
index 77f5cb9..4d7efae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c3e=['/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','/:id/fields','getFields'];(function(_0x4138cf,_0x4beae5){var _0x1f2c06=function(_0x36358a){while(--_0x36358a){_0x4138cf['push'](_0x4138cf['shift']());}};_0x1f2c06(++_0x4beae5);}(_0x4c3e,0x1ed));var _0xe4c3=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x4c3e[_0x376b45];return _0x2341b3;};'use strict';var multer=require(_0xe4c3('0x0'));var util=require(_0xe4c3('0x1'));var path=require('path');var timeout=require(_0xe4c3('0x2'));var express=require('express');var router=express[_0xe4c3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe4c3('0x4'));var interaction=require(_0xe4c3('0x5'));var config=require(_0xe4c3('0x6'));var controller=require('./intVtigerConfiguration.controller');router['get']('/',auth[_0xe4c3('0x7')](),controller[_0xe4c3('0x8')]);router[_0xe4c3('0x9')](_0xe4c3('0xa'),auth[_0xe4c3('0x7')](),controller['show']);router[_0xe4c3('0x9')](_0xe4c3('0xb'),auth[_0xe4c3('0x7')](),controller[_0xe4c3('0xc')]);router[_0xe4c3('0x9')](_0xe4c3('0xd'),auth[_0xe4c3('0x7')](),controller[_0xe4c3('0xe')]);router[_0xe4c3('0x9')]('/:id/descriptions',auth[_0xe4c3('0x7')](),controller[_0xe4c3('0xf')]);router[_0xe4c3('0x10')]('/',auth['isAuthenticated'](),controller[_0xe4c3('0x11')]);router[_0xe4c3('0x12')](_0xe4c3('0xa'),auth['isAuthenticated'](),controller[_0xe4c3('0x13')]);router[_0xe4c3('0x14')](_0xe4c3('0xa'),auth['isAuthenticated'](),controller[_0xe4c3('0x15')]);module[_0xe4c3('0x16')]=router;
\ No newline at end of file
+var _0xce6d=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','index','isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','/:id'];(function(_0x2cda46,_0x3edbfd){var _0x25ac2e=function(_0x5c92a6){while(--_0x5c92a6){_0x2cda46['push'](_0x2cda46['shift']());}};_0x25ac2e(++_0x3edbfd);}(_0xce6d,0x12f));var _0xdce6=function(_0x45aa72,_0x8af642){_0x45aa72=_0x45aa72-0x0;var _0x75adaa=_0xce6d[_0x45aa72];return _0x75adaa;};'use strict';var multer=require(_0xdce6('0x0'));var util=require('util');var path=require(_0xdce6('0x1'));var timeout=require(_0xdce6('0x2'));var express=require(_0xdce6('0x3'));var router=express[_0xdce6('0x4')]();var fs_extra=require(_0xdce6('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdce6('0x6'));var controller=require('./intVtigerConfiguration.controller');router[_0xdce6('0x7')]('/',auth['isAuthenticated'](),controller[_0xdce6('0x8')]);router['get']('/:id',auth[_0xdce6('0x9')](),controller['show']);router[_0xdce6('0x7')](_0xdce6('0xa'),auth[_0xdce6('0x9')](),controller[_0xdce6('0xb')]);router[_0xdce6('0x7')](_0xdce6('0xc'),auth[_0xdce6('0x9')](),controller[_0xdce6('0xd')]);router[_0xdce6('0x7')]('/:id/descriptions',auth[_0xdce6('0x9')](),controller[_0xdce6('0xe')]);router[_0xdce6('0xf')]('/',auth[_0xdce6('0x9')](),controller[_0xdce6('0x10')]);router[_0xdce6('0x11')](_0xdce6('0x12'),auth['isAuthenticated'](),controller[_0xdce6('0x13')]);router[_0xdce6('0x14')]('/:id',auth[_0xdce6('0x9')](),controller[_0xdce6('0x15')]);module[_0xdce6('0x16')]=router;
\ No newline at end of file
index 3d343aa..9225ddc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5910=['sequelize','exports','STRING'];(function(_0x239056,_0x3e6e2a){var _0x170e7b=function(_0x3fcf92){while(--_0x3fcf92){_0x239056['push'](_0x239056['shift']());}};_0x170e7b(++_0x3e6e2a);}(_0x5910,0x1c5));var _0x0591=function(_0x28c6f1,_0x5b0cd9){_0x28c6f1=_0x28c6f1-0x0;var _0x45d430=_0x5910[_0x28c6f1];return _0x45d430;};'use strict';var Sequelize=require(_0x0591('0x0'));module[_0x0591('0x1')]={'name':{'type':Sequelize[_0x0591('0x2')]},'description':{'type':Sequelize[_0x0591('0x2')]}};
\ No newline at end of file
+var _0x37f2=['exports','sequelize'];(function(_0x382e89,_0x4768c0){var _0x3a1318=function(_0x79e1ce){while(--_0x79e1ce){_0x382e89['push'](_0x382e89['shift']());}};_0x3a1318(++_0x4768c0);}(_0x37f2,0x9b));var _0x237f=function(_0x356422,_0x214dc7){_0x356422=_0x356422-0x0;var _0x294825=_0x37f2[_0x356422];return _0x294825;};'use strict';var Sequelize=require(_0x237f('0x0'));module[_0x237f('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index de993b6..1ba16c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c58=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','include','find','create','body','findOne','VtigerField','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','map','VtigerConfiguration','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields'];(function(_0x225f50,_0x48a77d){var _0x19d003=function(_0x58965d){while(--_0x58965d){_0x225f50['push'](_0x225f50['shift']());}};_0x19d003(++_0x48a77d);}(_0x8c58,0xba));var _0x88c5=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x8c58[_0x49ca18];return _0x145d54;};'use strict';var emlformat=require(_0x88c5('0x0'));var rimraf=require(_0x88c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x88c5('0x2'));var rp=require(_0x88c5('0x3'));var moment=require(_0x88c5('0x4'));var BPromise=require(_0x88c5('0x5'));var Mustache=require(_0x88c5('0x6'));var util=require(_0x88c5('0x7'));var path=require(_0x88c5('0x8'));var sox=require(_0x88c5('0x9'));var csv=require(_0x88c5('0xa'));var ejs=require(_0x88c5('0xb'));var fs=require('fs');var fs_extra=require(_0x88c5('0xc'));var _=require(_0x88c5('0xd'));var squel=require(_0x88c5('0xe'));var crypto=require(_0x88c5('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x88c5('0xa'));var querystring=require(_0x88c5('0x10'));var Papa=require(_0x88c5('0x11'));var Redis=require('ioredis');var authService=require(_0x88c5('0x12'));var qs=require(_0x88c5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x88c5('0x14'));var logger=require(_0x88c5('0x15'))(_0x88c5('0x16'));var utils=require(_0x88c5('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x88c5('0x18'));var db=require(_0x88c5('0x19'))['db'];function respondWithStatusCode(_0x587a67,_0x1a6038){_0x1a6038=_0x1a6038||0xcc;return function(_0x172809){if(_0x172809){return _0x587a67[_0x88c5('0x1a')](_0x1a6038);}return _0x587a67[_0x88c5('0x1b')](_0x1a6038)[_0x88c5('0x1c')]();};}function respondWithResult(_0x302893,_0x4883c0){_0x4883c0=_0x4883c0||0xc8;return function(_0x12bc9e){if(_0x12bc9e){return _0x302893[_0x88c5('0x1b')](_0x4883c0)[_0x88c5('0x1d')](_0x12bc9e);}};}function respondWithFilteredResult(_0x174893,_0x59a569){return function(_0x34a3c7){if(_0x34a3c7){var _0xbffaf6=typeof _0x59a569[_0x88c5('0x1e')]===_0x88c5('0x1f')&&typeof _0x59a569[_0x88c5('0x20')]===_0x88c5('0x1f');var _0x5be72a=_0x34a3c7[_0x88c5('0x21')];var _0x3675aa=_0xbffaf6?0x0:_0x59a569[_0x88c5('0x1e')];var _0x342371=_0xbffaf6?_0x34a3c7[_0x88c5('0x21')]:_0x59a569[_0x88c5('0x1e')]+_0x59a569[_0x88c5('0x20')];var _0x5c49e4;if(_0x342371>=_0x5be72a){_0x342371=_0x5be72a;_0x5c49e4=0xc8;}else{_0x5c49e4=0xce;}_0x174893[_0x88c5('0x1b')](_0x5c49e4);return _0x174893[_0x88c5('0x22')](_0x88c5('0x23'),_0x3675aa+'-'+_0x342371+'/'+_0x5be72a)[_0x88c5('0x1d')](_0x34a3c7);}return null;};}function patchUpdates(_0x737835){return function(_0x1b207f){try{jsonpatch[_0x88c5('0x24')](_0x1b207f,_0x737835,!![]);}catch(_0x5aa511){return BPromise[_0x88c5('0x25')](_0x5aa511);}return _0x1b207f['save']();};}function saveUpdates(_0x35c10c,_0x1db033){return function(_0x18ba56){if(_0x18ba56){return _0x18ba56[_0x88c5('0x26')](_0x35c10c)[_0x88c5('0x27')](function(_0x1c6d25){return _0x1c6d25;});}return null;};}function removeEntity(_0x253d91,_0x16dc79){return function(_0x10aee4){if(_0x10aee4){return _0x10aee4[_0x88c5('0x28')]()[_0x88c5('0x27')](function(){_0x253d91['status'](0xcc)[_0x88c5('0x1c')]();});}};}function handleEntityNotFound(_0x285e6c,_0xa40954){return function(_0x4ade82){if(!_0x4ade82){_0x285e6c[_0x88c5('0x1a')](0x194);}return _0x4ade82;};}function handleError(_0xc489bc,_0x53a496){_0x53a496=_0x53a496||0x1f4;return function(_0x189a1d){logger[_0x88c5('0x29')](_0x189a1d['stack']);if(_0x189a1d[_0x88c5('0x2a')]){delete _0x189a1d['name'];}_0xc489bc[_0x88c5('0x1b')](_0x53a496)['send'](_0x189a1d);};}exports['index']=function(_0xbf87d5,_0x635fc2){var _0x99647a={},_0x179392={},_0x3fbf9d={'count':0x0,'rows':[]};var _0x55db3c=_[_0x88c5('0x2b')](db[_0x88c5('0x2c')][_0x88c5('0x2d')],function(_0x31624d){return{'name':_0x31624d[_0x88c5('0x2e')],'type':_0x31624d['type']['key']};});_0x179392['model']=_['map'](_0x55db3c,_0x88c5('0x2a'));_0x179392[_0x88c5('0x2f')]=_[_0x88c5('0x30')](_0xbf87d5['query']);_0x179392[_0x88c5('0x31')]=_[_0x88c5('0x32')](_0x179392[_0x88c5('0x33')],_0x179392['query']);_0x99647a[_0x88c5('0x34')]=_['intersection'](_0x179392[_0x88c5('0x33')],qs[_0x88c5('0x35')](_0xbf87d5[_0x88c5('0x2f')][_0x88c5('0x35')]));_0x99647a[_0x88c5('0x34')]=_0x99647a[_0x88c5('0x34')][_0x88c5('0x36')]?_0x99647a[_0x88c5('0x34')]:_0x179392[_0x88c5('0x33')];if(!_0xbf87d5[_0x88c5('0x2f')][_0x88c5('0x37')](_0x88c5('0x38'))){_0x99647a['limit']=qs[_0x88c5('0x20')](_0xbf87d5[_0x88c5('0x2f')][_0x88c5('0x20')]);_0x99647a[_0x88c5('0x1e')]=qs['offset'](_0xbf87d5[_0x88c5('0x2f')]['offset']);}_0x99647a[_0x88c5('0x39')]=qs[_0x88c5('0x3a')](_0xbf87d5[_0x88c5('0x2f')][_0x88c5('0x3a')]);_0x99647a[_0x88c5('0x3b')]=qs[_0x88c5('0x31')](_[_0x88c5('0x3c')](_0xbf87d5[_0x88c5('0x2f')],_0x179392[_0x88c5('0x31')]),_0x55db3c);if(_0xbf87d5['query'][_0x88c5('0x3d')]){_0x99647a[_0x88c5('0x3b')]=_[_0x88c5('0x3e')](_0x99647a[_0x88c5('0x3b')],{'$or':_[_0x88c5('0x2b')](_0x55db3c,function(_0xe4502f){if(_0xe4502f[_0x88c5('0x3f')]!==_0x88c5('0x40')){var _0x2c3087={};_0x2c3087[_0xe4502f[_0x88c5('0x2a')]]={'$like':'%'+_0xbf87d5[_0x88c5('0x2f')][_0x88c5('0x3d')]+'%'};return _0x2c3087;}})});}_0x99647a=_[_0x88c5('0x3e')]({},_0x99647a,_0xbf87d5[_0x88c5('0x41')]);var _0x5cf74a={'where':_0x99647a[_0x88c5('0x3b')]};return db[_0x88c5('0x2c')][_0x88c5('0x21')](_0x5cf74a)['then'](function(_0x155bcb){_0x3fbf9d[_0x88c5('0x21')]=_0x155bcb;if(_0xbf87d5[_0x88c5('0x2f')][_0x88c5('0x42')]){_0x99647a['include']=[{'all':!![]}];}return db[_0x88c5('0x2c')]['findAll'](_0x99647a);})[_0x88c5('0x27')](function(_0x157520){_0x3fbf9d[_0x88c5('0x43')]=_0x157520;return _0x3fbf9d;})[_0x88c5('0x27')](respondWithFilteredResult(_0x635fc2,_0x99647a))[_0x88c5('0x44')](handleError(_0x635fc2,null));};exports[_0x88c5('0x45')]=function(_0x27cfd4,_0x1a69fd){var _0x475602={'raw':![],'where':{'id':_0x27cfd4[_0x88c5('0x46')]['id']}},_0x435e82={};_0x435e82[_0x88c5('0x33')]=_[_0x88c5('0x30')](db['VtigerConfiguration'][_0x88c5('0x2d')]);_0x435e82[_0x88c5('0x2f')]=_[_0x88c5('0x30')](_0x27cfd4['query']);_0x435e82[_0x88c5('0x31')]=_[_0x88c5('0x32')](_0x435e82['model'],_0x435e82[_0x88c5('0x2f')]);_0x475602[_0x88c5('0x34')]=_[_0x88c5('0x32')](_0x435e82[_0x88c5('0x33')],qs[_0x88c5('0x35')](_0x27cfd4[_0x88c5('0x2f')][_0x88c5('0x35')]));_0x475602[_0x88c5('0x34')]=_0x475602[_0x88c5('0x34')][_0x88c5('0x36')]?_0x475602[_0x88c5('0x34')]:_0x435e82[_0x88c5('0x33')];if(_0x27cfd4[_0x88c5('0x2f')][_0x88c5('0x42')]){_0x475602[_0x88c5('0x47')]=[{'all':!![]}];}_0x475602=_[_0x88c5('0x3e')]({},_0x475602,_0x27cfd4[_0x88c5('0x41')]);return db['VtigerConfiguration'][_0x88c5('0x48')](_0x475602)[_0x88c5('0x27')](handleEntityNotFound(_0x1a69fd,null))[_0x88c5('0x27')](respondWithResult(_0x1a69fd,null))['catch'](handleError(_0x1a69fd,null));};exports[_0x88c5('0x49')]=function(_0x185879,_0xeee24){return db[_0x88c5('0x2c')]['create'](_0x185879['body'],{})[_0x88c5('0x27')](respondWithResult(_0xeee24,0xc9))[_0x88c5('0x44')](handleError(_0xeee24,null));};exports['update']=function(_0x558f9b,_0xaca38a){if(_0x558f9b[_0x88c5('0x4a')]['id']){delete _0x558f9b['body']['id'];}return db['VtigerConfiguration'][_0x88c5('0x48')]({'where':{'id':_0x558f9b[_0x88c5('0x46')]['id']}})['then'](handleEntityNotFound(_0xaca38a,null))[_0x88c5('0x27')](saveUpdates(_0x558f9b[_0x88c5('0x4a')],null))[_0x88c5('0x27')](respondWithResult(_0xaca38a,null))[_0x88c5('0x44')](handleError(_0xaca38a,null));};exports['destroy']=function(_0x46f98a,_0x51db14){return db[_0x88c5('0x2c')][_0x88c5('0x48')]({'where':{'id':_0x46f98a[_0x88c5('0x46')]['id']}})[_0x88c5('0x27')](handleEntityNotFound(_0x51db14,null))['then'](removeEntity(_0x51db14,null))[_0x88c5('0x44')](handleError(_0x51db14,null));};exports['getFields']=function(_0xf3c6bb,_0x4e2729,_0x4e5cef){var _0xd2d5ed={};var _0x56434e={};var _0x363c27;var _0x3f3ef4;return db[_0x88c5('0x2c')][_0x88c5('0x4b')]({'where':{'id':_0xf3c6bb['params']['id']}})[_0x88c5('0x27')](handleEntityNotFound(_0x4e2729,null))['then'](function(_0x213760){if(_0x213760){_0x363c27=_0x213760;_0x56434e['model']=_[_0x88c5('0x30')](db[_0x88c5('0x4c')]['rawAttributes']);_0x56434e[_0x88c5('0x2f')]=_['keys'](_0xf3c6bb[_0x88c5('0x2f')]);_0x56434e[_0x88c5('0x31')]=_[_0x88c5('0x32')](_0x56434e[_0x88c5('0x33')],_0x56434e['query']);_0xd2d5ed[_0x88c5('0x34')]=_['intersection'](_0x56434e[_0x88c5('0x33')],qs[_0x88c5('0x35')](_0xf3c6bb['query']['fields']));_0xd2d5ed[_0x88c5('0x34')]=_0xd2d5ed[_0x88c5('0x34')]['length']?_0xd2d5ed[_0x88c5('0x34')]:_0x56434e[_0x88c5('0x33')];_0xd2d5ed[_0x88c5('0x39')]=qs['sort'](_0xf3c6bb[_0x88c5('0x2f')][_0x88c5('0x3a')]);_0xd2d5ed[_0x88c5('0x3b')]=qs[_0x88c5('0x31')](_[_0x88c5('0x3c')](_0xf3c6bb['query'],_0x56434e['filters']));if(_0xf3c6bb[_0x88c5('0x2f')][_0x88c5('0x3d')]){_0xd2d5ed['where']=_[_0x88c5('0x3e')](_0xd2d5ed[_0x88c5('0x3b')],{'$or':_[_0x88c5('0x2b')](_0xd2d5ed['attributes'],function(_0x48f34d){var _0x1f4a01={};_0x1f4a01[_0x48f34d]={'$like':'%'+_0xf3c6bb[_0x88c5('0x2f')][_0x88c5('0x3d')]+'%'};return _0x1f4a01;})});}_0xd2d5ed=_[_0x88c5('0x3e')]({},_0xd2d5ed,_0xf3c6bb[_0x88c5('0x41')]);return _0x363c27[_0x88c5('0x4d')](_0xd2d5ed);}})[_0x88c5('0x27')](function(_0x524810){if(_0x524810){_0x3f3ef4=_0x524810[_0x88c5('0x36')];if(!_0xf3c6bb[_0x88c5('0x2f')][_0x88c5('0x37')](_0x88c5('0x38'))){_0xd2d5ed['limit']=qs[_0x88c5('0x20')](_0xf3c6bb['query']['limit']);_0xd2d5ed[_0x88c5('0x1e')]=qs['offset'](_0xf3c6bb[_0x88c5('0x2f')]['offset']);}return _0x363c27['getFields'](_0xd2d5ed);}})[_0x88c5('0x27')](function(_0x4edcb8){if(_0x4edcb8){return _0x4edcb8?{'count':_0x3f3ef4,'rows':_0x4edcb8}:null;}})[_0x88c5('0x27')](respondWithResult(_0x4e2729,null))['catch'](handleError(_0x4e2729,null));};exports[_0x88c5('0x4e')]=function(_0x59f43c,_0x1c1ac5,_0x59173d){var _0x55ecac={};var _0x3cb3a8={};var _0x2ac79b;var _0x2d037a;return db[_0x88c5('0x2c')][_0x88c5('0x4b')]({'where':{'id':_0x59f43c[_0x88c5('0x46')]['id']}})[_0x88c5('0x27')](handleEntityNotFound(_0x1c1ac5,null))[_0x88c5('0x27')](function(_0x2d385e){if(_0x2d385e){_0x2ac79b=_0x2d385e;_0x3cb3a8['model']=_[_0x88c5('0x30')](db['VtigerField']['rawAttributes']);_0x3cb3a8[_0x88c5('0x2f')]=_['keys'](_0x59f43c[_0x88c5('0x2f')]);_0x3cb3a8[_0x88c5('0x31')]=_[_0x88c5('0x32')](_0x3cb3a8[_0x88c5('0x33')],_0x3cb3a8[_0x88c5('0x2f')]);_0x55ecac[_0x88c5('0x34')]=_[_0x88c5('0x32')](_0x3cb3a8['model'],qs[_0x88c5('0x35')](_0x59f43c[_0x88c5('0x2f')][_0x88c5('0x35')]));_0x55ecac[_0x88c5('0x34')]=_0x55ecac[_0x88c5('0x34')][_0x88c5('0x36')]?_0x55ecac[_0x88c5('0x34')]:_0x3cb3a8['model'];_0x55ecac['order']=qs[_0x88c5('0x3a')](_0x59f43c[_0x88c5('0x2f')][_0x88c5('0x3a')]);_0x55ecac[_0x88c5('0x3b')]=qs[_0x88c5('0x31')](_[_0x88c5('0x3c')](_0x59f43c['query'],_0x3cb3a8[_0x88c5('0x31')]));if(_0x59f43c[_0x88c5('0x2f')][_0x88c5('0x3d')]){_0x55ecac[_0x88c5('0x3b')]=_[_0x88c5('0x3e')](_0x55ecac['where'],{'$or':_['map'](_0x55ecac['attributes'],function(_0x3bd930){var _0x17df64={};_0x17df64[_0x3bd930]={'$like':'%'+_0x59f43c[_0x88c5('0x2f')]['filter']+'%'};return _0x17df64;})});}_0x55ecac=_[_0x88c5('0x3e')]({},_0x55ecac,_0x59f43c[_0x88c5('0x41')]);return _0x2ac79b['getSubjects'](_0x55ecac);}})[_0x88c5('0x27')](function(_0x3760ba){if(_0x3760ba){_0x2d037a=_0x3760ba['length'];if(!_0x59f43c['query'][_0x88c5('0x37')](_0x88c5('0x38'))){_0x55ecac[_0x88c5('0x20')]=qs['limit'](_0x59f43c[_0x88c5('0x2f')]['limit']);_0x55ecac[_0x88c5('0x1e')]=qs[_0x88c5('0x1e')](_0x59f43c['query'][_0x88c5('0x1e')]);}return _0x2ac79b['getSubjects'](_0x55ecac);}})[_0x88c5('0x27')](function(_0x55bae2){if(_0x55bae2){return _0x55bae2?{'count':_0x2d037a,'rows':_0x55bae2}:null;}})[_0x88c5('0x27')](respondWithResult(_0x1c1ac5,null))[_0x88c5('0x44')](handleError(_0x1c1ac5,null));};exports[_0x88c5('0x4f')]=function(_0x3f15d5,_0x46cefc,_0x338416){var _0x4126de={};var _0x6513e0={};var _0x575069;var _0x4649ba;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x3f15d5[_0x88c5('0x46')]['id']}})[_0x88c5('0x27')](handleEntityNotFound(_0x46cefc,null))[_0x88c5('0x27')](function(_0x1c3e05){if(_0x1c3e05){_0x575069=_0x1c3e05;_0x6513e0[_0x88c5('0x33')]=_[_0x88c5('0x30')](db[_0x88c5('0x4c')][_0x88c5('0x2d')]);_0x6513e0[_0x88c5('0x2f')]=_[_0x88c5('0x30')](_0x3f15d5[_0x88c5('0x2f')]);_0x6513e0[_0x88c5('0x31')]=_[_0x88c5('0x32')](_0x6513e0['model'],_0x6513e0[_0x88c5('0x2f')]);_0x4126de['attributes']=_['intersection'](_0x6513e0[_0x88c5('0x33')],qs[_0x88c5('0x35')](_0x3f15d5[_0x88c5('0x2f')]['fields']));_0x4126de[_0x88c5('0x34')]=_0x4126de[_0x88c5('0x34')][_0x88c5('0x36')]?_0x4126de['attributes']:_0x6513e0[_0x88c5('0x33')];_0x4126de[_0x88c5('0x39')]=qs[_0x88c5('0x3a')](_0x3f15d5[_0x88c5('0x2f')][_0x88c5('0x3a')]);_0x4126de[_0x88c5('0x3b')]=qs[_0x88c5('0x31')](_[_0x88c5('0x3c')](_0x3f15d5['query'],_0x6513e0[_0x88c5('0x31')]));if(_0x3f15d5[_0x88c5('0x2f')][_0x88c5('0x3d')]){_0x4126de[_0x88c5('0x3b')]=_[_0x88c5('0x3e')](_0x4126de[_0x88c5('0x3b')],{'$or':_[_0x88c5('0x2b')](_0x4126de[_0x88c5('0x34')],function(_0xb9916f){var _0x25b43e={};_0x25b43e[_0xb9916f]={'$like':'%'+_0x3f15d5['query'][_0x88c5('0x3d')]+'%'};return _0x25b43e;})});}_0x4126de=_[_0x88c5('0x3e')]({},_0x4126de,_0x3f15d5['options']);return _0x575069[_0x88c5('0x4f')](_0x4126de);}})['then'](function(_0x74d617){if(_0x74d617){_0x4649ba=_0x74d617[_0x88c5('0x36')];if(!_0x3f15d5['query'][_0x88c5('0x37')](_0x88c5('0x38'))){_0x4126de[_0x88c5('0x20')]=qs['limit'](_0x3f15d5[_0x88c5('0x2f')]['limit']);_0x4126de[_0x88c5('0x1e')]=qs[_0x88c5('0x1e')](_0x3f15d5['query'][_0x88c5('0x1e')]);}return _0x575069[_0x88c5('0x4f')](_0x4126de);}})[_0x88c5('0x27')](function(_0x2cd24b){if(_0x2cd24b){return _0x2cd24b?{'count':_0x4649ba,'rows':_0x2cd24b}:null;}})[_0x88c5('0x27')](respondWithResult(_0x46cefc,null))[_0x88c5('0x44')](handleError(_0x46cefc,null));};
\ No newline at end of file
+var _0x69a2=['stack','send','map','VtigerConfiguration','rawAttributes','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','include','findAll','catch','show','params','includeAll','find','body','getFields','findOne','VtigerField','pick','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','mustache','util','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','error'];(function(_0x4718a5,_0x34bdaf){var _0x25720e=function(_0x3f40d7){while(--_0x3f40d7){_0x4718a5['push'](_0x4718a5['shift']());}};_0x25720e(++_0x34bdaf);}(_0x69a2,0xbf));var _0x269a=function(_0x265793,_0x1184c5){_0x265793=_0x265793-0x0;var _0x1fbad1=_0x69a2[_0x265793];return _0x1fbad1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x269a('0x0'));var zipdir=require(_0x269a('0x1'));var jsonpatch=require(_0x269a('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x269a('0x3'));var util=require(_0x269a('0x4'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x269a('0x5'));var fs=require('fs');var fs_extra=require(_0x269a('0x6'));var _=require(_0x269a('0x7'));var squel=require(_0x269a('0x8'));var crypto=require(_0x269a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x269a('0xa'));var toCsv=require('to-csv');var querystring=require(_0x269a('0xb'));var Papa=require('papaparse');var Redis=require(_0x269a('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x269a('0xd'));var hardwareService=require(_0x269a('0xe'));var logger=require(_0x269a('0xf'))(_0x269a('0x10'));var utils=require(_0x269a('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x269a('0x12'));var db=require(_0x269a('0x13'))['db'];function respondWithStatusCode(_0x15a1de,_0x4ee989){_0x4ee989=_0x4ee989||0xcc;return function(_0x1077fa){if(_0x1077fa){return _0x15a1de[_0x269a('0x14')](_0x4ee989);}return _0x15a1de['status'](_0x4ee989)[_0x269a('0x15')]();};}function respondWithResult(_0x39e4dd,_0x529389){_0x529389=_0x529389||0xc8;return function(_0x57d53b){if(_0x57d53b){return _0x39e4dd[_0x269a('0x16')](_0x529389)[_0x269a('0x17')](_0x57d53b);}};}function respondWithFilteredResult(_0x12b987,_0x640757){return function(_0x25f17c){if(_0x25f17c){var _0x1bdbf4=typeof _0x640757[_0x269a('0x18')]==='undefined'&&typeof _0x640757[_0x269a('0x19')]===_0x269a('0x1a');var _0x4e2885=_0x25f17c[_0x269a('0x1b')];var _0x15050b=_0x1bdbf4?0x0:_0x640757[_0x269a('0x18')];var _0x2e6fb7=_0x1bdbf4?_0x25f17c[_0x269a('0x1b')]:_0x640757[_0x269a('0x18')]+_0x640757[_0x269a('0x19')];var _0x2244a5;if(_0x2e6fb7>=_0x4e2885){_0x2e6fb7=_0x4e2885;_0x2244a5=0xc8;}else{_0x2244a5=0xce;}_0x12b987[_0x269a('0x16')](_0x2244a5);return _0x12b987[_0x269a('0x1c')](_0x269a('0x1d'),_0x15050b+'-'+_0x2e6fb7+'/'+_0x4e2885)[_0x269a('0x17')](_0x25f17c);}return null;};}function patchUpdates(_0x563c67){return function(_0x2eb484){try{jsonpatch[_0x269a('0x1e')](_0x2eb484,_0x563c67,!![]);}catch(_0x4f93ae){return BPromise[_0x269a('0x1f')](_0x4f93ae);}return _0x2eb484[_0x269a('0x20')]();};}function saveUpdates(_0x3f552d,_0x1f8e69){return function(_0x500297){if(_0x500297){return _0x500297[_0x269a('0x21')](_0x3f552d)['then'](function(_0x26fbe1){return _0x26fbe1;});}return null;};}function removeEntity(_0x2957b9,_0x4f4fde){return function(_0xd6ab22){if(_0xd6ab22){return _0xd6ab22[_0x269a('0x22')]()[_0x269a('0x23')](function(){_0x2957b9[_0x269a('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26378c,_0x2b7578){return function(_0x36dfee){if(!_0x36dfee){_0x26378c[_0x269a('0x14')](0x194);}return _0x36dfee;};}function handleError(_0x1b80f3,_0xd97d9b){_0xd97d9b=_0xd97d9b||0x1f4;return function(_0x185c90){logger[_0x269a('0x24')](_0x185c90[_0x269a('0x25')]);if(_0x185c90['name']){delete _0x185c90['name'];}_0x1b80f3['status'](_0xd97d9b)[_0x269a('0x26')](_0x185c90);};}exports['index']=function(_0x57eb19,_0xa929aa){var _0x3a080b={},_0x50e5dd={},_0x1a160c={'count':0x0,'rows':[]};var _0x1ddea6=_[_0x269a('0x27')](db[_0x269a('0x28')][_0x269a('0x29')],function(_0x59bdd6){return{'name':_0x59bdd6['fieldName'],'type':_0x59bdd6[_0x269a('0x2a')][_0x269a('0x2b')]};});_0x50e5dd[_0x269a('0x2c')]=_[_0x269a('0x27')](_0x1ddea6,_0x269a('0x2d'));_0x50e5dd[_0x269a('0x2e')]=_[_0x269a('0x2f')](_0x57eb19['query']);_0x50e5dd[_0x269a('0x30')]=_[_0x269a('0x31')](_0x50e5dd[_0x269a('0x2c')],_0x50e5dd[_0x269a('0x2e')]);_0x3a080b[_0x269a('0x32')]=_[_0x269a('0x31')](_0x50e5dd[_0x269a('0x2c')],qs[_0x269a('0x33')](_0x57eb19[_0x269a('0x2e')][_0x269a('0x33')]));_0x3a080b[_0x269a('0x32')]=_0x3a080b[_0x269a('0x32')][_0x269a('0x34')]?_0x3a080b[_0x269a('0x32')]:_0x50e5dd[_0x269a('0x2c')];if(!_0x57eb19[_0x269a('0x2e')][_0x269a('0x35')](_0x269a('0x36'))){_0x3a080b['limit']=qs[_0x269a('0x19')](_0x57eb19[_0x269a('0x2e')]['limit']);_0x3a080b[_0x269a('0x18')]=qs[_0x269a('0x18')](_0x57eb19[_0x269a('0x2e')]['offset']);}_0x3a080b[_0x269a('0x37')]=qs[_0x269a('0x38')](_0x57eb19['query']['sort']);_0x3a080b['where']=qs['filters'](_['pick'](_0x57eb19[_0x269a('0x2e')],_0x50e5dd[_0x269a('0x30')]),_0x1ddea6);if(_0x57eb19['query'][_0x269a('0x39')]){_0x3a080b[_0x269a('0x3a')]=_[_0x269a('0x3b')](_0x3a080b[_0x269a('0x3a')],{'$or':_[_0x269a('0x27')](_0x1ddea6,function(_0xf13694){if(_0xf13694['type']!==_0x269a('0x3c')){var _0x563a0a={};_0x563a0a[_0xf13694['name']]={'$like':'%'+_0x57eb19[_0x269a('0x2e')][_0x269a('0x39')]+'%'};return _0x563a0a;}})});}_0x3a080b=_[_0x269a('0x3b')]({},_0x3a080b,_0x57eb19[_0x269a('0x3d')]);var _0x3e06a7={'where':_0x3a080b[_0x269a('0x3a')]};return db[_0x269a('0x28')][_0x269a('0x1b')](_0x3e06a7)['then'](function(_0x153292){_0x1a160c[_0x269a('0x1b')]=_0x153292;if(_0x57eb19[_0x269a('0x2e')]['includeAll']){_0x3a080b[_0x269a('0x3e')]=[{'all':!![]}];}return db[_0x269a('0x28')][_0x269a('0x3f')](_0x3a080b);})[_0x269a('0x23')](function(_0x436538){_0x1a160c['rows']=_0x436538;return _0x1a160c;})[_0x269a('0x23')](respondWithFilteredResult(_0xa929aa,_0x3a080b))[_0x269a('0x40')](handleError(_0xa929aa,null));};exports[_0x269a('0x41')]=function(_0x1e0118,_0x40df11){var _0x1c5735={'raw':![],'where':{'id':_0x1e0118[_0x269a('0x42')]['id']}},_0x45ef1c={};_0x45ef1c['model']=_[_0x269a('0x2f')](db['VtigerConfiguration'][_0x269a('0x29')]);_0x45ef1c[_0x269a('0x2e')]=_['keys'](_0x1e0118[_0x269a('0x2e')]);_0x45ef1c[_0x269a('0x30')]=_[_0x269a('0x31')](_0x45ef1c[_0x269a('0x2c')],_0x45ef1c[_0x269a('0x2e')]);_0x1c5735[_0x269a('0x32')]=_['intersection'](_0x45ef1c[_0x269a('0x2c')],qs[_0x269a('0x33')](_0x1e0118['query']['fields']));_0x1c5735[_0x269a('0x32')]=_0x1c5735[_0x269a('0x32')][_0x269a('0x34')]?_0x1c5735[_0x269a('0x32')]:_0x45ef1c[_0x269a('0x2c')];if(_0x1e0118[_0x269a('0x2e')][_0x269a('0x43')]){_0x1c5735[_0x269a('0x3e')]=[{'all':!![]}];}_0x1c5735=_[_0x269a('0x3b')]({},_0x1c5735,_0x1e0118[_0x269a('0x3d')]);return db[_0x269a('0x28')][_0x269a('0x44')](_0x1c5735)[_0x269a('0x23')](handleEntityNotFound(_0x40df11,null))[_0x269a('0x23')](respondWithResult(_0x40df11,null))[_0x269a('0x40')](handleError(_0x40df11,null));};exports['create']=function(_0x503b95,_0x427ddc){return db[_0x269a('0x28')]['create'](_0x503b95[_0x269a('0x45')],{})[_0x269a('0x23')](respondWithResult(_0x427ddc,0xc9))[_0x269a('0x40')](handleError(_0x427ddc,null));};exports[_0x269a('0x21')]=function(_0x1e0edb,_0x4d91aa){if(_0x1e0edb['body']['id']){delete _0x1e0edb['body']['id'];}return db[_0x269a('0x28')][_0x269a('0x44')]({'where':{'id':_0x1e0edb[_0x269a('0x42')]['id']}})[_0x269a('0x23')](handleEntityNotFound(_0x4d91aa,null))[_0x269a('0x23')](saveUpdates(_0x1e0edb[_0x269a('0x45')],null))[_0x269a('0x23')](respondWithResult(_0x4d91aa,null))[_0x269a('0x40')](handleError(_0x4d91aa,null));};exports[_0x269a('0x22')]=function(_0x1e115c,_0x138649){return db[_0x269a('0x28')][_0x269a('0x44')]({'where':{'id':_0x1e115c[_0x269a('0x42')]['id']}})[_0x269a('0x23')](handleEntityNotFound(_0x138649,null))[_0x269a('0x23')](removeEntity(_0x138649,null))[_0x269a('0x40')](handleError(_0x138649,null));};exports[_0x269a('0x46')]=function(_0xc2c785,_0x2762db,_0x32a366){var _0x53985f={};var _0x164a71={};var _0x5eb13d;var _0x362d98;return db['VtigerConfiguration'][_0x269a('0x47')]({'where':{'id':_0xc2c785[_0x269a('0x42')]['id']}})[_0x269a('0x23')](handleEntityNotFound(_0x2762db,null))[_0x269a('0x23')](function(_0x2d2880){if(_0x2d2880){_0x5eb13d=_0x2d2880;_0x164a71[_0x269a('0x2c')]=_[_0x269a('0x2f')](db[_0x269a('0x48')][_0x269a('0x29')]);_0x164a71['query']=_[_0x269a('0x2f')](_0xc2c785[_0x269a('0x2e')]);_0x164a71[_0x269a('0x30')]=_[_0x269a('0x31')](_0x164a71[_0x269a('0x2c')],_0x164a71[_0x269a('0x2e')]);_0x53985f['attributes']=_[_0x269a('0x31')](_0x164a71['model'],qs[_0x269a('0x33')](_0xc2c785['query'][_0x269a('0x33')]));_0x53985f['attributes']=_0x53985f[_0x269a('0x32')][_0x269a('0x34')]?_0x53985f[_0x269a('0x32')]:_0x164a71['model'];_0x53985f[_0x269a('0x37')]=qs[_0x269a('0x38')](_0xc2c785[_0x269a('0x2e')]['sort']);_0x53985f[_0x269a('0x3a')]=qs[_0x269a('0x30')](_[_0x269a('0x49')](_0xc2c785[_0x269a('0x2e')],_0x164a71['filters']));if(_0xc2c785['query'][_0x269a('0x39')]){_0x53985f['where']=_[_0x269a('0x3b')](_0x53985f[_0x269a('0x3a')],{'$or':_[_0x269a('0x27')](_0x53985f[_0x269a('0x32')],function(_0x31f3a5){var _0x5b0ac8={};_0x5b0ac8[_0x31f3a5]={'$like':'%'+_0xc2c785[_0x269a('0x2e')][_0x269a('0x39')]+'%'};return _0x5b0ac8;})});}_0x53985f=_[_0x269a('0x3b')]({},_0x53985f,_0xc2c785[_0x269a('0x3d')]);return _0x5eb13d['getFields'](_0x53985f);}})[_0x269a('0x23')](function(_0x28708e){if(_0x28708e){_0x362d98=_0x28708e['length'];if(!_0xc2c785[_0x269a('0x2e')][_0x269a('0x35')](_0x269a('0x36'))){_0x53985f[_0x269a('0x19')]=qs[_0x269a('0x19')](_0xc2c785['query'][_0x269a('0x19')]);_0x53985f[_0x269a('0x18')]=qs[_0x269a('0x18')](_0xc2c785[_0x269a('0x2e')][_0x269a('0x18')]);}return _0x5eb13d[_0x269a('0x46')](_0x53985f);}})[_0x269a('0x23')](function(_0x545439){if(_0x545439){return _0x545439?{'count':_0x362d98,'rows':_0x545439}:null;}})['then'](respondWithResult(_0x2762db,null))[_0x269a('0x40')](handleError(_0x2762db,null));};exports[_0x269a('0x4a')]=function(_0x2fcfac,_0x2932a4,_0x25d623){var _0x4aeb59={};var _0x17124c={};var _0x3bfe6;var _0xe860c1;return db[_0x269a('0x28')][_0x269a('0x47')]({'where':{'id':_0x2fcfac[_0x269a('0x42')]['id']}})[_0x269a('0x23')](handleEntityNotFound(_0x2932a4,null))[_0x269a('0x23')](function(_0x4978b6){if(_0x4978b6){_0x3bfe6=_0x4978b6;_0x17124c['model']=_['keys'](db[_0x269a('0x48')][_0x269a('0x29')]);_0x17124c[_0x269a('0x2e')]=_[_0x269a('0x2f')](_0x2fcfac['query']);_0x17124c['filters']=_['intersection'](_0x17124c[_0x269a('0x2c')],_0x17124c[_0x269a('0x2e')]);_0x4aeb59[_0x269a('0x32')]=_[_0x269a('0x31')](_0x17124c[_0x269a('0x2c')],qs['fields'](_0x2fcfac[_0x269a('0x2e')][_0x269a('0x33')]));_0x4aeb59[_0x269a('0x32')]=_0x4aeb59[_0x269a('0x32')][_0x269a('0x34')]?_0x4aeb59[_0x269a('0x32')]:_0x17124c[_0x269a('0x2c')];_0x4aeb59[_0x269a('0x37')]=qs[_0x269a('0x38')](_0x2fcfac[_0x269a('0x2e')][_0x269a('0x38')]);_0x4aeb59[_0x269a('0x3a')]=qs[_0x269a('0x30')](_[_0x269a('0x49')](_0x2fcfac[_0x269a('0x2e')],_0x17124c['filters']));if(_0x2fcfac[_0x269a('0x2e')][_0x269a('0x39')]){_0x4aeb59[_0x269a('0x3a')]=_[_0x269a('0x3b')](_0x4aeb59[_0x269a('0x3a')],{'$or':_[_0x269a('0x27')](_0x4aeb59['attributes'],function(_0x2178bd){var _0x3896df={};_0x3896df[_0x2178bd]={'$like':'%'+_0x2fcfac[_0x269a('0x2e')][_0x269a('0x39')]+'%'};return _0x3896df;})});}_0x4aeb59=_['merge']({},_0x4aeb59,_0x2fcfac['options']);return _0x3bfe6[_0x269a('0x4a')](_0x4aeb59);}})[_0x269a('0x23')](function(_0x5b4918){if(_0x5b4918){_0xe860c1=_0x5b4918[_0x269a('0x34')];if(!_0x2fcfac[_0x269a('0x2e')][_0x269a('0x35')]('nolimit')){_0x4aeb59[_0x269a('0x19')]=qs[_0x269a('0x19')](_0x2fcfac[_0x269a('0x2e')]['limit']);_0x4aeb59[_0x269a('0x18')]=qs['offset'](_0x2fcfac[_0x269a('0x2e')][_0x269a('0x18')]);}return _0x3bfe6[_0x269a('0x4a')](_0x4aeb59);}})[_0x269a('0x23')](function(_0xa957c6){if(_0xa957c6){return _0xa957c6?{'count':_0xe860c1,'rows':_0xa957c6}:null;}})[_0x269a('0x23')](respondWithResult(_0x2932a4,null))[_0x269a('0x40')](handleError(_0x2932a4,null));};exports[_0x269a('0x4b')]=function(_0x2efae6,_0x2bfe64,_0x770818){var _0xa11ddc={};var _0x3ccc8e={};var _0x4ee452;var _0x102e87;return db[_0x269a('0x28')][_0x269a('0x47')]({'where':{'id':_0x2efae6[_0x269a('0x42')]['id']}})[_0x269a('0x23')](handleEntityNotFound(_0x2bfe64,null))[_0x269a('0x23')](function(_0x2bfa62){if(_0x2bfa62){_0x4ee452=_0x2bfa62;_0x3ccc8e[_0x269a('0x2c')]=_[_0x269a('0x2f')](db[_0x269a('0x48')][_0x269a('0x29')]);_0x3ccc8e[_0x269a('0x2e')]=_[_0x269a('0x2f')](_0x2efae6['query']);_0x3ccc8e['filters']=_[_0x269a('0x31')](_0x3ccc8e['model'],_0x3ccc8e[_0x269a('0x2e')]);_0xa11ddc[_0x269a('0x32')]=_[_0x269a('0x31')](_0x3ccc8e['model'],qs[_0x269a('0x33')](_0x2efae6['query'][_0x269a('0x33')]));_0xa11ddc[_0x269a('0x32')]=_0xa11ddc[_0x269a('0x32')][_0x269a('0x34')]?_0xa11ddc[_0x269a('0x32')]:_0x3ccc8e[_0x269a('0x2c')];_0xa11ddc[_0x269a('0x37')]=qs[_0x269a('0x38')](_0x2efae6['query']['sort']);_0xa11ddc[_0x269a('0x3a')]=qs['filters'](_[_0x269a('0x49')](_0x2efae6[_0x269a('0x2e')],_0x3ccc8e['filters']));if(_0x2efae6['query']['filter']){_0xa11ddc[_0x269a('0x3a')]=_['merge'](_0xa11ddc[_0x269a('0x3a')],{'$or':_[_0x269a('0x27')](_0xa11ddc[_0x269a('0x32')],function(_0x40a5b7){var _0x3bfdfd={};_0x3bfdfd[_0x40a5b7]={'$like':'%'+_0x2efae6['query'][_0x269a('0x39')]+'%'};return _0x3bfdfd;})});}_0xa11ddc=_[_0x269a('0x3b')]({},_0xa11ddc,_0x2efae6[_0x269a('0x3d')]);return _0x4ee452[_0x269a('0x4b')](_0xa11ddc);}})[_0x269a('0x23')](function(_0x4ee499){if(_0x4ee499){_0x102e87=_0x4ee499[_0x269a('0x34')];if(!_0x2efae6[_0x269a('0x2e')]['hasOwnProperty']('nolimit')){_0xa11ddc[_0x269a('0x19')]=qs['limit'](_0x2efae6['query'][_0x269a('0x19')]);_0xa11ddc[_0x269a('0x18')]=qs[_0x269a('0x18')](_0x2efae6[_0x269a('0x2e')][_0x269a('0x18')]);}return _0x4ee452[_0x269a('0x4b')](_0xa11ddc);}})[_0x269a('0x23')](function(_0x2e9d0d){if(_0x2e9d0d){return _0x2e9d0d?{'count':_0x102e87,'rows':_0x2e9d0d}:null;}})['then'](respondWithResult(_0x2bfe64,null))[_0x269a('0x40')](handleError(_0x2bfe64,null));};
\ No newline at end of file
index 97c6804..b6fdb63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca92=['path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','define','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xf83ee1,_0x291495){var _0x5250c5=function(_0x12602a){while(--_0x12602a){_0xf83ee1['push'](_0xf83ee1['shift']());}};_0x5250c5(++_0x291495);}(_0xca92,0x85));var _0x2ca9=function(_0x3f9602,_0x115411){_0x3f9602=_0x3f9602-0x0;var _0xb22e48=_0xca92[_0x3f9602];return _0xb22e48;};'use strict';var _=require(_0x2ca9('0x0'));var util=require(_0x2ca9('0x1'));var logger=require(_0x2ca9('0x2'))(_0x2ca9('0x3'));var moment=require(_0x2ca9('0x4'));var BPromise=require(_0x2ca9('0x5'));var rp=require(_0x2ca9('0x6'));var fs=require('fs');var path=require(_0x2ca9('0x7'));var rimraf=require(_0x2ca9('0x8'));var config=require(_0x2ca9('0x9'));var attributes=require(_0x2ca9('0xa'));module['exports']=function(_0x296b66,_0x482803){return _0x296b66[_0x2ca9('0xb')](_0x2ca9('0xc'),attributes,{'tableName':_0x2ca9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9bc8=['bluebird','request-promise','path','rimraf','exports','define','VtigerConfiguration','int_vtiger_configurations','util','../../config/logger','api','moment'];(function(_0x10b822,_0x4c0cd4){var _0x4020d7=function(_0x544884){while(--_0x544884){_0x10b822['push'](_0x10b822['shift']());}};_0x4020d7(++_0x4c0cd4);}(_0x9bc8,0x1d0));var _0x89bc=function(_0x21e803,_0x3e1fd5){_0x21e803=_0x21e803-0x0;var _0x43d870=_0x9bc8[_0x21e803];return _0x43d870;};'use strict';var _=require('lodash');var util=require(_0x89bc('0x0'));var logger=require(_0x89bc('0x1'))(_0x89bc('0x2'));var moment=require(_0x89bc('0x3'));var BPromise=require(_0x89bc('0x4'));var rp=require(_0x89bc('0x5'));var fs=require('fs');var path=require(_0x89bc('0x6'));var rimraf=require(_0x89bc('0x7'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module[_0x89bc('0x8')]=function(_0x2fdba1,_0x4c9ef2){return _0x2fdba1[_0x89bc('0x9')](_0x89bc('0xa'),attributes,{'tableName':_0x89bc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0a3361..19987e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d0b=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x3a5cf4,_0x773b69){var _0x488364=function(_0x311fde){while(--_0x311fde){_0x3a5cf4['push'](_0x3a5cf4['shift']());}};_0x488364(++_0x773b69);}(_0x7d0b,0xe1));var _0xb7d0=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x7d0b[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xb7d0('0x0'));var util=require(_0xb7d0('0x1'));var moment=require(_0xb7d0('0x2'));var BPromise=require(_0xb7d0('0x3'));var rs=require(_0xb7d0('0x4'));var fs=require('fs');var Redis=require(_0xb7d0('0x5'));var db=require(_0xb7d0('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb7d0('0x7'))(_0xb7d0('0x8'));var config=require(_0xb7d0('0x9'));var jayson=require(_0xb7d0('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xc0382b,_0x1cfae6,_0x50e1ed){return new BPromise(function(_0x108b6d,_0x4ad8f2){return client[_0xb7d0('0xb')](_0xc0382b,_0x50e1ed)[_0xb7d0('0xc')](function(_0x17443a){logger['info'](_0xb7d0('0xd'),_0x1cfae6,_0xb7d0('0xe'));logger[_0xb7d0('0xf')](_0xb7d0('0x10'),_0x1cfae6,_0xb7d0('0xe'),JSON[_0xb7d0('0x11')](_0x17443a));if(_0x17443a[_0xb7d0('0x12')]){if(_0x17443a[_0xb7d0('0x12')][_0xb7d0('0x13')]===0x1f4){logger[_0xb7d0('0x12')](_0xb7d0('0xd'),_0x1cfae6,_0x17443a[_0xb7d0('0x12')]['message']);return _0x4ad8f2(_0x17443a[_0xb7d0('0x12')][_0xb7d0('0x14')]);}logger[_0xb7d0('0x12')](_0xb7d0('0xd'),_0x1cfae6,_0x17443a['error'][_0xb7d0('0x14')]);return _0x108b6d(_0x17443a[_0xb7d0('0x12')]['message']);}else{logger[_0xb7d0('0x15')](_0xb7d0('0xd'),_0x1cfae6,_0xb7d0('0xe'));_0x108b6d(_0x17443a['result'][_0xb7d0('0x14')]);}})[_0xb7d0('0x16')](function(_0x36ab2b){logger[_0xb7d0('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x1cfae6,_0x36ab2b);_0x4ad8f2(_0x36ab2b);});});}
\ No newline at end of file
+var _0xa6eb=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment'];(function(_0x213c40,_0x1f8082){var _0x5522b5=function(_0xc4f548){while(--_0xc4f548){_0x213c40['push'](_0x213c40['shift']());}};_0x5522b5(++_0x1f8082);}(_0xa6eb,0x1b7));var _0xba6e=function(_0x44dc6c,_0x29b003){_0x44dc6c=_0x44dc6c-0x0;var _0x20a947=_0xa6eb[_0x44dc6c];return _0x20a947;};'use strict';var _=require('lodash');var util=require(_0xba6e('0x0'));var moment=require(_0xba6e('0x1'));var BPromise=require(_0xba6e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba6e('0x3'));var db=require(_0xba6e('0x4'))['db'];var utils=require(_0xba6e('0x5'));var logger=require(_0xba6e('0x6'))(_0xba6e('0x7'));var config=require(_0xba6e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xba6e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2572d4,_0x216488,_0x5d50c8){return new BPromise(function(_0x4c77ef,_0x3d4cbd){return client[_0xba6e('0xa')](_0x2572d4,_0x5d50c8)['then'](function(_0x4b6c6c){logger[_0xba6e('0xb')](_0xba6e('0xc'),_0x216488,_0xba6e('0xd'));logger['debug'](_0xba6e('0xe'),_0x216488,_0xba6e('0xd'),JSON[_0xba6e('0xf')](_0x4b6c6c));if(_0x4b6c6c[_0xba6e('0x10')]){if(_0x4b6c6c[_0xba6e('0x10')][_0xba6e('0x11')]===0x1f4){logger[_0xba6e('0x10')](_0xba6e('0xc'),_0x216488,_0x4b6c6c[_0xba6e('0x10')][_0xba6e('0x12')]);return _0x3d4cbd(_0x4b6c6c['error']['message']);}logger[_0xba6e('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x216488,_0x4b6c6c[_0xba6e('0x10')][_0xba6e('0x12')]);return _0x4c77ef(_0x4b6c6c[_0xba6e('0x10')][_0xba6e('0x12')]);}else{logger[_0xba6e('0xb')]('VtigerConfiguration,\x20%s,\x20%s',_0x216488,_0xba6e('0xd'));_0x4c77ef(_0x4b6c6c[_0xba6e('0x13')][_0xba6e('0x12')]);}})[_0xba6e('0x14')](function(_0x2ed86b){logger['error'](_0xba6e('0xc'),_0x216488,_0x2ed86b);_0x3d4cbd(_0x2ed86b);});});}
\ No newline at end of file
index 73c0a5b..6e9ceef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c4=['exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','show','post','/:id','update','delete','destroy'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xc4c4,0x1b1));var _0x4c4c=function(_0x2bda24,_0x3683ee){_0x2bda24=_0x2bda24-0x0;var _0x436332=_0xc4c4[_0x2bda24];return _0x436332;};'use strict';var multer=require(_0x4c4c('0x0'));var util=require(_0x4c4c('0x1'));var path=require('path');var timeout=require(_0x4c4c('0x2'));var express=require('express');var router=express[_0x4c4c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x4c4c('0x4'));var interaction=require(_0x4c4c('0x5'));var config=require(_0x4c4c('0x6'));var controller=require(_0x4c4c('0x7'));router[_0x4c4c('0x8')]('/',auth[_0x4c4c('0x9')](),controller[_0x4c4c('0xa')]);router[_0x4c4c('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x4c4c('0xb')]);router[_0x4c4c('0xc')]('/',auth[_0x4c4c('0x9')](),controller['create']);router['put'](_0x4c4c('0xd'),auth[_0x4c4c('0x9')](),controller[_0x4c4c('0xe')]);router[_0x4c4c('0xf')](_0x4c4c('0xd'),auth['isAuthenticated'](),controller[_0x4c4c('0x10')]);module[_0x4c4c('0x11')]=router;
\ No newline at end of file
+var _0x236a=['destroy','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','put','update','delete'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x236a,0x1aa));var _0xa236=function(_0xf0757d,_0xd29328){_0xf0757d=_0xf0757d-0x0;var _0x5429f0=_0x236a[_0xf0757d];return _0x5429f0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa236('0x0'));var timeout=require(_0xa236('0x1'));var express=require(_0xa236('0x2'));var router=express[_0xa236('0x3')]();var fs_extra=require(_0xa236('0x4'));var auth=require(_0xa236('0x5'));var interaction=require(_0xa236('0x6'));var config=require(_0xa236('0x7'));var controller=require('./intVtigerField.controller');router[_0xa236('0x8')]('/',auth[_0xa236('0x9')](),controller[_0xa236('0xa')]);router['get'](_0xa236('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa236('0xc')]('/',auth[_0xa236('0x9')](),controller['create']);router[_0xa236('0xd')]('/:id',auth[_0xa236('0x9')](),controller[_0xa236('0xe')]);router[_0xa236('0xf')]('/:id',auth[_0xa236('0x9')](),controller[_0xa236('0x10')]);module['exports']=router;
\ No newline at end of file
index e2ef7b6..5d81334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff9=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xbff9,0xfe));var _0x9bff=function(_0x18670d,_0x3e3921){_0x18670d=_0x18670d-0x0;var _0x3a0163=_0xbff9[_0x18670d];return _0x3a0163;};'use strict';var Sequelize=require(_0x9bff('0x0'));module[_0x9bff('0x1')]={'type':{'type':Sequelize[_0x9bff('0x2')](_0x9bff('0x3'),_0x9bff('0x4'),_0x9bff('0x5'),_0x9bff('0x6'),_0x9bff('0x7')),'defaultValue':_0x9bff('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x9bff('0x8')]},'keyType':{'type':Sequelize[_0x9bff('0x2')](_0x9bff('0x3'),'variable',_0x9bff('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x9bff('0x8')]},'nameField':{'type':Sequelize[_0x9bff('0x8')]},'customField':{'type':Sequelize[_0x9bff('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9bff('0x8')]}};
\ No newline at end of file
+var _0xa946=['customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize','exports','string','variable'];(function(_0x17e95d,_0x52843a){var _0xe1103f=function(_0x48d9ee){while(--_0x48d9ee){_0x17e95d['push'](_0x17e95d['shift']());}};_0xe1103f(++_0x52843a);}(_0xa946,0xe2));var _0x6a94=function(_0x491cbe,_0x45c8ba){_0x491cbe=_0x491cbe-0x0;var _0x59449d=_0xa946[_0x491cbe];return _0x59449d;};'use strict';var Sequelize=require(_0x6a94('0x0'));module[_0x6a94('0x1')]={'type':{'type':Sequelize['ENUM'](_0x6a94('0x2'),_0x6a94('0x3'),_0x6a94('0x4'),_0x6a94('0x5'),_0x6a94('0x6')),'defaultValue':_0x6a94('0x2')},'content':{'type':Sequelize[_0x6a94('0x7')]},'key':{'type':Sequelize[_0x6a94('0x7')]},'keyType':{'type':Sequelize[_0x6a94('0x8')](_0x6a94('0x2'),_0x6a94('0x3'),_0x6a94('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x6a94('0x7')]},'nameField':{'type':Sequelize[_0x6a94('0x7')]},'customField':{'type':Sequelize[_0x6a94('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4e7fd87..aa53363 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9392=['attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','options','includeAll','include','findAll','catch','show','params','rawAttributes','length','find','create','body','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','send','VtigerField','fieldName','type','key','keys','query','filters','intersection','model'];(function(_0x3d6d51,_0x12ebd9){var _0x275338=function(_0x5ee66b){while(--_0x5ee66b){_0x3d6d51['push'](_0x3d6d51['shift']());}};_0x275338(++_0x12ebd9);}(_0x9392,0xe8));var _0x2939=function(_0x182664,_0x550386){_0x182664=_0x182664-0x0;var _0x210c80=_0x9392[_0x182664];return _0x210c80;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2939('0x0'));var zipdir=require(_0x2939('0x1'));var jsonpatch=require(_0x2939('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2939('0x3'));var Mustache=require(_0x2939('0x4'));var util=require(_0x2939('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x2939('0x6'));var ejs=require(_0x2939('0x7'));var fs=require('fs');var fs_extra=require(_0x2939('0x8'));var _=require('lodash');var squel=require(_0x2939('0x9'));var crypto=require(_0x2939('0xa'));var jsforce=require(_0x2939('0xb'));var deskjs=require(_0x2939('0xc'));var toCsv=require(_0x2939('0x6'));var querystring=require(_0x2939('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2939('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x2939('0xf'));var hardwareService=require(_0x2939('0x10'));var logger=require(_0x2939('0x11'))(_0x2939('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2939('0x13'));var db=require(_0x2939('0x14'))['db'];function respondWithStatusCode(_0x574490,_0x375eb1){_0x375eb1=_0x375eb1||0xcc;return function(_0x39dd3e){if(_0x39dd3e){return _0x574490[_0x2939('0x15')](_0x375eb1);}return _0x574490['status'](_0x375eb1)[_0x2939('0x16')]();};}function respondWithResult(_0x2badb0,_0x22bf49){_0x22bf49=_0x22bf49||0xc8;return function(_0x3cffe2){if(_0x3cffe2){return _0x2badb0[_0x2939('0x17')](_0x22bf49)[_0x2939('0x18')](_0x3cffe2);}};}function respondWithFilteredResult(_0x55d3c2,_0x1cb9f5){return function(_0x2fc10d){if(_0x2fc10d){var _0x2fc3b7=typeof _0x1cb9f5[_0x2939('0x19')]===_0x2939('0x1a')&&typeof _0x1cb9f5[_0x2939('0x1b')]==='undefined';var _0x5d1928=_0x2fc10d[_0x2939('0x1c')];var _0xddbd01=_0x2fc3b7?0x0:_0x1cb9f5[_0x2939('0x19')];var _0x2bba8e=_0x2fc3b7?_0x2fc10d['count']:_0x1cb9f5[_0x2939('0x19')]+_0x1cb9f5['limit'];var _0xe5f4b9;if(_0x2bba8e>=_0x5d1928){_0x2bba8e=_0x5d1928;_0xe5f4b9=0xc8;}else{_0xe5f4b9=0xce;}_0x55d3c2[_0x2939('0x17')](_0xe5f4b9);return _0x55d3c2[_0x2939('0x1d')](_0x2939('0x1e'),_0xddbd01+'-'+_0x2bba8e+'/'+_0x5d1928)['json'](_0x2fc10d);}return null;};}function patchUpdates(_0x175f51){return function(_0x570069){try{jsonpatch[_0x2939('0x1f')](_0x570069,_0x175f51,!![]);}catch(_0x449d51){return BPromise[_0x2939('0x20')](_0x449d51);}return _0x570069[_0x2939('0x21')]();};}function saveUpdates(_0x6df566,_0x68f449){return function(_0xe6616f){if(_0xe6616f){return _0xe6616f[_0x2939('0x22')](_0x6df566)['then'](function(_0x552f28){return _0x552f28;});}return null;};}function removeEntity(_0x58e04b,_0x7bb409){return function(_0x540ad7){if(_0x540ad7){return _0x540ad7[_0x2939('0x23')]()[_0x2939('0x24')](function(){_0x58e04b[_0x2939('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cb095,_0x282fb4){return function(_0x50fdc9){if(!_0x50fdc9){_0x1cb095[_0x2939('0x15')](0x194);}return _0x50fdc9;};}function handleError(_0x13c7b7,_0x4b5650){_0x4b5650=_0x4b5650||0x1f4;return function(_0x3cbf30){logger['error'](_0x3cbf30['stack']);if(_0x3cbf30[_0x2939('0x25')]){delete _0x3cbf30[_0x2939('0x25')];}_0x13c7b7[_0x2939('0x17')](_0x4b5650)[_0x2939('0x26')](_0x3cbf30);};}exports['index']=function(_0x5ccaeb,_0x2ab825){var _0x5a482b={},_0x5104d3={},_0x354b38={'count':0x0,'rows':[]};var _0x4a6623=_['map'](db[_0x2939('0x27')]['rawAttributes'],function(_0x33a6c9){return{'name':_0x33a6c9[_0x2939('0x28')],'type':_0x33a6c9[_0x2939('0x29')][_0x2939('0x2a')]};});_0x5104d3['model']=_['map'](_0x4a6623,'name');_0x5104d3['query']=_[_0x2939('0x2b')](_0x5ccaeb[_0x2939('0x2c')]);_0x5104d3[_0x2939('0x2d')]=_[_0x2939('0x2e')](_0x5104d3[_0x2939('0x2f')],_0x5104d3['query']);_0x5a482b[_0x2939('0x30')]=_[_0x2939('0x2e')](_0x5104d3['model'],qs[_0x2939('0x31')](_0x5ccaeb[_0x2939('0x2c')][_0x2939('0x31')]));_0x5a482b['attributes']=_0x5a482b[_0x2939('0x30')]['length']?_0x5a482b[_0x2939('0x30')]:_0x5104d3[_0x2939('0x2f')];if(!_0x5ccaeb[_0x2939('0x2c')][_0x2939('0x32')](_0x2939('0x33'))){_0x5a482b['limit']=qs[_0x2939('0x1b')](_0x5ccaeb[_0x2939('0x2c')]['limit']);_0x5a482b['offset']=qs[_0x2939('0x19')](_0x5ccaeb[_0x2939('0x2c')]['offset']);}_0x5a482b[_0x2939('0x34')]=qs[_0x2939('0x35')](_0x5ccaeb[_0x2939('0x2c')][_0x2939('0x35')]);_0x5a482b[_0x2939('0x36')]=qs['filters'](_['pick'](_0x5ccaeb[_0x2939('0x2c')],_0x5104d3['filters']),_0x4a6623);if(_0x5ccaeb[_0x2939('0x2c')][_0x2939('0x37')]){_0x5a482b[_0x2939('0x36')]=_[_0x2939('0x38')](_0x5a482b[_0x2939('0x36')],{'$or':_[_0x2939('0x39')](_0x4a6623,function(_0x2e972c){if(_0x2e972c[_0x2939('0x29')]!=='VIRTUAL'){var _0xd10e1e={};_0xd10e1e[_0x2e972c['name']]={'$like':'%'+_0x5ccaeb[_0x2939('0x2c')][_0x2939('0x37')]+'%'};return _0xd10e1e;}})});}_0x5a482b=_['merge']({},_0x5a482b,_0x5ccaeb[_0x2939('0x3a')]);var _0x167ab0={'where':_0x5a482b[_0x2939('0x36')]};return db[_0x2939('0x27')][_0x2939('0x1c')](_0x167ab0)['then'](function(_0x331ada){_0x354b38['count']=_0x331ada;if(_0x5ccaeb[_0x2939('0x2c')][_0x2939('0x3b')]){_0x5a482b[_0x2939('0x3c')]=[{'all':!![]}];}return db[_0x2939('0x27')][_0x2939('0x3d')](_0x5a482b);})[_0x2939('0x24')](function(_0xaea968){_0x354b38['rows']=_0xaea968;return _0x354b38;})['then'](respondWithFilteredResult(_0x2ab825,_0x5a482b))[_0x2939('0x3e')](handleError(_0x2ab825,null));};exports[_0x2939('0x3f')]=function(_0x3d31c8,_0x5a1043){var _0x1010e4={'raw':!![],'where':{'id':_0x3d31c8[_0x2939('0x40')]['id']}},_0x51ab5d={};_0x51ab5d[_0x2939('0x2f')]=_[_0x2939('0x2b')](db['VtigerField'][_0x2939('0x41')]);_0x51ab5d[_0x2939('0x2c')]=_['keys'](_0x3d31c8[_0x2939('0x2c')]);_0x51ab5d[_0x2939('0x2d')]=_['intersection'](_0x51ab5d[_0x2939('0x2f')],_0x51ab5d[_0x2939('0x2c')]);_0x1010e4['attributes']=_[_0x2939('0x2e')](_0x51ab5d[_0x2939('0x2f')],qs[_0x2939('0x31')](_0x3d31c8[_0x2939('0x2c')][_0x2939('0x31')]));_0x1010e4[_0x2939('0x30')]=_0x1010e4['attributes'][_0x2939('0x42')]?_0x1010e4[_0x2939('0x30')]:_0x51ab5d[_0x2939('0x2f')];if(_0x3d31c8[_0x2939('0x2c')][_0x2939('0x3b')]){_0x1010e4['include']=[{'all':!![]}];}_0x1010e4=_[_0x2939('0x38')]({},_0x1010e4,_0x3d31c8['options']);return db[_0x2939('0x27')][_0x2939('0x43')](_0x1010e4)[_0x2939('0x24')](handleEntityNotFound(_0x5a1043,null))[_0x2939('0x24')](respondWithResult(_0x5a1043,null))[_0x2939('0x3e')](handleError(_0x5a1043,null));};exports[_0x2939('0x44')]=function(_0x11ab73,_0x388dc6){return db[_0x2939('0x27')][_0x2939('0x44')](_0x11ab73['body'],{})[_0x2939('0x24')](respondWithResult(_0x388dc6,0xc9))[_0x2939('0x3e')](handleError(_0x388dc6,null));};exports[_0x2939('0x22')]=function(_0x194bd0,_0x5eeadd){if(_0x194bd0[_0x2939('0x45')]['id']){delete _0x194bd0[_0x2939('0x45')]['id'];}return db[_0x2939('0x27')][_0x2939('0x43')]({'where':{'id':_0x194bd0[_0x2939('0x40')]['id']}})[_0x2939('0x24')](handleEntityNotFound(_0x5eeadd,null))[_0x2939('0x24')](saveUpdates(_0x194bd0[_0x2939('0x45')],null))['then'](respondWithResult(_0x5eeadd,null))['catch'](handleError(_0x5eeadd,null));};exports['destroy']=function(_0x1b8263,_0x43a45b){return db[_0x2939('0x27')][_0x2939('0x43')]({'where':{'id':_0x1b8263[_0x2939('0x40')]['id']}})[_0x2939('0x24')](handleEntityNotFound(_0x43a45b,null))[_0x2939('0x24')](removeEntity(_0x43a45b,null))[_0x2939('0x3e')](handleError(_0x43a45b,null));};
\ No newline at end of file
+var _0x08ea=['rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','VtigerField','includeAll','include','findAll','rows','catch','params','keys','intersection','options','find','create','body','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','reject','save','update','then','destroy','end','error','stack','name','send','index','map'];(function(_0xcd8053,_0x25e45a){var _0x121f48=function(_0x308b9c){while(--_0x308b9c){_0xcd8053['push'](_0xcd8053['shift']());}};_0x121f48(++_0x25e45a);}(_0x08ea,0x1e6));var _0xa08e=function(_0x58b975,_0x55616f){_0x58b975=_0x58b975-0x0;var _0x4c23a1=_0x08ea[_0x58b975];return _0x4c23a1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa08e('0x0'));var zipdir=require(_0xa08e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa08e('0x2'));var moment=require('moment');var BPromise=require(_0xa08e('0x3'));var Mustache=require(_0xa08e('0x4'));var util=require(_0xa08e('0x5'));var path=require('path');var sox=require(_0xa08e('0x6'));var csv=require(_0xa08e('0x7'));var ejs=require(_0xa08e('0x8'));var fs=require('fs');var fs_extra=require(_0xa08e('0x9'));var _=require(_0xa08e('0xa'));var squel=require('squel');var crypto=require(_0xa08e('0xb'));var jsforce=require(_0xa08e('0xc'));var deskjs=require(_0xa08e('0xd'));var toCsv=require(_0xa08e('0x7'));var querystring=require(_0xa08e('0xe'));var Papa=require(_0xa08e('0xf'));var Redis=require(_0xa08e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa08e('0x11'));var as=require(_0xa08e('0x12'));var hardwareService=require(_0xa08e('0x13'));var logger=require(_0xa08e('0x14'))(_0xa08e('0x15'));var utils=require(_0xa08e('0x16'));var config=require(_0xa08e('0x17'));var licenseUtil=require(_0xa08e('0x18'));var db=require(_0xa08e('0x19'))['db'];function respondWithStatusCode(_0x1cdf1f,_0x43816a){_0x43816a=_0x43816a||0xcc;return function(_0xadd827){if(_0xadd827){return _0x1cdf1f[_0xa08e('0x1a')](_0x43816a);}return _0x1cdf1f['status'](_0x43816a)['end']();};}function respondWithResult(_0x1d59d1,_0x512fdd){_0x512fdd=_0x512fdd||0xc8;return function(_0x1fa62b){if(_0x1fa62b){return _0x1d59d1[_0xa08e('0x1b')](_0x512fdd)[_0xa08e('0x1c')](_0x1fa62b);}};}function respondWithFilteredResult(_0x29149c,_0x562ade){return function(_0x5c374f){if(_0x5c374f){var _0x338c09=typeof _0x562ade[_0xa08e('0x1d')]==='undefined'&&typeof _0x562ade[_0xa08e('0x1e')]===_0xa08e('0x1f');var _0x4ff7c7=_0x5c374f[_0xa08e('0x20')];var _0x51ae25=_0x338c09?0x0:_0x562ade[_0xa08e('0x1d')];var _0x264d39=_0x338c09?_0x5c374f[_0xa08e('0x20')]:_0x562ade[_0xa08e('0x1d')]+_0x562ade[_0xa08e('0x1e')];var _0x373878;if(_0x264d39>=_0x4ff7c7){_0x264d39=_0x4ff7c7;_0x373878=0xc8;}else{_0x373878=0xce;}_0x29149c['status'](_0x373878);return _0x29149c[_0xa08e('0x21')]('Content-Range',_0x51ae25+'-'+_0x264d39+'/'+_0x4ff7c7)[_0xa08e('0x1c')](_0x5c374f);}return null;};}function patchUpdates(_0x4f83fa){return function(_0x677278){try{jsonpatch['apply'](_0x677278,_0x4f83fa,!![]);}catch(_0x38b2c6){return BPromise[_0xa08e('0x22')](_0x38b2c6);}return _0x677278[_0xa08e('0x23')]();};}function saveUpdates(_0x4ce042,_0x7bdc91){return function(_0x31de57){if(_0x31de57){return _0x31de57[_0xa08e('0x24')](_0x4ce042)[_0xa08e('0x25')](function(_0x58c536){return _0x58c536;});}return null;};}function removeEntity(_0x144246,_0x45337a){return function(_0xc4b4cb){if(_0xc4b4cb){return _0xc4b4cb[_0xa08e('0x26')]()[_0xa08e('0x25')](function(){_0x144246[_0xa08e('0x1b')](0xcc)[_0xa08e('0x27')]();});}};}function handleEntityNotFound(_0x2efc26,_0x5259fd){return function(_0x3aabcd){if(!_0x3aabcd){_0x2efc26[_0xa08e('0x1a')](0x194);}return _0x3aabcd;};}function handleError(_0x34fd26,_0x51fbb3){_0x51fbb3=_0x51fbb3||0x1f4;return function(_0x5554b9){logger[_0xa08e('0x28')](_0x5554b9[_0xa08e('0x29')]);if(_0x5554b9[_0xa08e('0x2a')]){delete _0x5554b9[_0xa08e('0x2a')];}_0x34fd26[_0xa08e('0x1b')](_0x51fbb3)[_0xa08e('0x2b')](_0x5554b9);};}exports[_0xa08e('0x2c')]=function(_0x2ba3bb,_0x1c0aaf){var _0x1b7a50={},_0x4ff981={},_0x22865a={'count':0x0,'rows':[]};var _0x2d22ad=_[_0xa08e('0x2d')](db['VtigerField'][_0xa08e('0x2e')],function(_0x4fce9d){return{'name':_0x4fce9d[_0xa08e('0x2f')],'type':_0x4fce9d[_0xa08e('0x30')][_0xa08e('0x31')]};});_0x4ff981[_0xa08e('0x32')]=_[_0xa08e('0x2d')](_0x2d22ad,_0xa08e('0x2a'));_0x4ff981[_0xa08e('0x33')]=_['keys'](_0x2ba3bb[_0xa08e('0x33')]);_0x4ff981[_0xa08e('0x34')]=_['intersection'](_0x4ff981[_0xa08e('0x32')],_0x4ff981['query']);_0x1b7a50[_0xa08e('0x35')]=_['intersection'](_0x4ff981[_0xa08e('0x32')],qs[_0xa08e('0x36')](_0x2ba3bb[_0xa08e('0x33')][_0xa08e('0x36')]));_0x1b7a50[_0xa08e('0x35')]=_0x1b7a50['attributes'][_0xa08e('0x37')]?_0x1b7a50[_0xa08e('0x35')]:_0x4ff981[_0xa08e('0x32')];if(!_0x2ba3bb[_0xa08e('0x33')]['hasOwnProperty'](_0xa08e('0x38'))){_0x1b7a50[_0xa08e('0x1e')]=qs[_0xa08e('0x1e')](_0x2ba3bb[_0xa08e('0x33')][_0xa08e('0x1e')]);_0x1b7a50[_0xa08e('0x1d')]=qs[_0xa08e('0x1d')](_0x2ba3bb[_0xa08e('0x33')][_0xa08e('0x1d')]);}_0x1b7a50[_0xa08e('0x39')]=qs['sort'](_0x2ba3bb[_0xa08e('0x33')][_0xa08e('0x3a')]);_0x1b7a50[_0xa08e('0x3b')]=qs[_0xa08e('0x34')](_[_0xa08e('0x3c')](_0x2ba3bb[_0xa08e('0x33')],_0x4ff981['filters']),_0x2d22ad);if(_0x2ba3bb[_0xa08e('0x33')]['filter']){_0x1b7a50[_0xa08e('0x3b')]=_[_0xa08e('0x3d')](_0x1b7a50[_0xa08e('0x3b')],{'$or':_[_0xa08e('0x2d')](_0x2d22ad,function(_0x3bd67d){if(_0x3bd67d[_0xa08e('0x30')]!==_0xa08e('0x3e')){var _0x5f4110={};_0x5f4110[_0x3bd67d['name']]={'$like':'%'+_0x2ba3bb[_0xa08e('0x33')]['filter']+'%'};return _0x5f4110;}})});}_0x1b7a50=_[_0xa08e('0x3d')]({},_0x1b7a50,_0x2ba3bb['options']);var _0x6d09ce={'where':_0x1b7a50[_0xa08e('0x3b')]};return db[_0xa08e('0x3f')][_0xa08e('0x20')](_0x6d09ce)[_0xa08e('0x25')](function(_0x315754){_0x22865a[_0xa08e('0x20')]=_0x315754;if(_0x2ba3bb[_0xa08e('0x33')][_0xa08e('0x40')]){_0x1b7a50[_0xa08e('0x41')]=[{'all':!![]}];}return db[_0xa08e('0x3f')][_0xa08e('0x42')](_0x1b7a50);})[_0xa08e('0x25')](function(_0x31b3d6){_0x22865a[_0xa08e('0x43')]=_0x31b3d6;return _0x22865a;})[_0xa08e('0x25')](respondWithFilteredResult(_0x1c0aaf,_0x1b7a50))[_0xa08e('0x44')](handleError(_0x1c0aaf,null));};exports['show']=function(_0x58149d,_0x1b39c2){var _0x2a23f7={'raw':!![],'where':{'id':_0x58149d[_0xa08e('0x45')]['id']}},_0x3060d7={};_0x3060d7[_0xa08e('0x32')]=_[_0xa08e('0x46')](db['VtigerField'][_0xa08e('0x2e')]);_0x3060d7[_0xa08e('0x33')]=_['keys'](_0x58149d['query']);_0x3060d7[_0xa08e('0x34')]=_[_0xa08e('0x47')](_0x3060d7['model'],_0x3060d7[_0xa08e('0x33')]);_0x2a23f7[_0xa08e('0x35')]=_['intersection'](_0x3060d7['model'],qs['fields'](_0x58149d['query'][_0xa08e('0x36')]));_0x2a23f7['attributes']=_0x2a23f7[_0xa08e('0x35')][_0xa08e('0x37')]?_0x2a23f7[_0xa08e('0x35')]:_0x3060d7[_0xa08e('0x32')];if(_0x58149d[_0xa08e('0x33')][_0xa08e('0x40')]){_0x2a23f7[_0xa08e('0x41')]=[{'all':!![]}];}_0x2a23f7=_[_0xa08e('0x3d')]({},_0x2a23f7,_0x58149d[_0xa08e('0x48')]);return db[_0xa08e('0x3f')][_0xa08e('0x49')](_0x2a23f7)[_0xa08e('0x25')](handleEntityNotFound(_0x1b39c2,null))['then'](respondWithResult(_0x1b39c2,null))[_0xa08e('0x44')](handleError(_0x1b39c2,null));};exports[_0xa08e('0x4a')]=function(_0x52ab40,_0x21c895){return db[_0xa08e('0x3f')][_0xa08e('0x4a')](_0x52ab40[_0xa08e('0x4b')],{})[_0xa08e('0x25')](respondWithResult(_0x21c895,0xc9))['catch'](handleError(_0x21c895,null));};exports[_0xa08e('0x24')]=function(_0xb23bd6,_0x513e7f){if(_0xb23bd6[_0xa08e('0x4b')]['id']){delete _0xb23bd6[_0xa08e('0x4b')]['id'];}return db['VtigerField'][_0xa08e('0x49')]({'where':{'id':_0xb23bd6[_0xa08e('0x45')]['id']}})[_0xa08e('0x25')](handleEntityNotFound(_0x513e7f,null))[_0xa08e('0x25')](saveUpdates(_0xb23bd6['body'],null))[_0xa08e('0x25')](respondWithResult(_0x513e7f,null))[_0xa08e('0x44')](handleError(_0x513e7f,null));};exports[_0xa08e('0x26')]=function(_0x37872b,_0x4c04f5){return db[_0xa08e('0x3f')][_0xa08e('0x49')]({'where':{'id':_0x37872b[_0xa08e('0x45')]['id']}})[_0xa08e('0x25')](handleEntityNotFound(_0x4c04f5,null))[_0xa08e('0x25')](removeEntity(_0x4c04f5,null))[_0xa08e('0x44')](handleError(_0x4c04f5,null));};
\ No newline at end of file
index a414822..0c444fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a7=['vtiger_unique_index','idField','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa8a7,0x72));var _0x7a8a=function(_0x27cd22,_0x411d56){_0x27cd22=_0x27cd22-0x0;var _0x1bd274=_0xa8a7[_0x27cd22];return _0x1bd274;};'use strict';var _=require(_0x7a8a('0x0'));var util=require(_0x7a8a('0x1'));var logger=require(_0x7a8a('0x2'))('api');var moment=require(_0x7a8a('0x3'));var BPromise=require(_0x7a8a('0x4'));var rp=require(_0x7a8a('0x5'));var fs=require('fs');var path=require(_0x7a8a('0x6'));var rimraf=require(_0x7a8a('0x7'));var config=require(_0x7a8a('0x8'));var attributes=require(_0x7a8a('0x9'));module[_0x7a8a('0xa')]=function(_0x3d8cba,_0x41f666){return _0x3d8cba[_0x7a8a('0xb')](_0x7a8a('0xc'),attributes,{'tableName':_0x7a8a('0xd'),'paranoid':![],'indexes':[{'name':_0x7a8a('0xe'),'fields':[_0x7a8a('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xea78=['VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird','./intVtigerField.attributes','exports','define'];(function(_0x54ecf8,_0x1dde8b){var _0x226058=function(_0x2e8959){while(--_0x2e8959){_0x54ecf8['push'](_0x54ecf8['shift']());}};_0x226058(++_0x1dde8b);}(_0xea78,0x123));var _0x8ea7=function(_0x16bb4b,_0x5fe431){_0x16bb4b=_0x16bb4b-0x0;var _0x8aeb84=_0xea78[_0x16bb4b];return _0x8aeb84;};'use strict';var _=require(_0x8ea7('0x0'));var util=require(_0x8ea7('0x1'));var logger=require(_0x8ea7('0x2'))(_0x8ea7('0x3'));var moment=require('moment');var BPromise=require(_0x8ea7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8ea7('0x5'));module[_0x8ea7('0x6')]=function(_0x4567f3,_0x2c2bf1){return _0x4567f3[_0x8ea7('0x7')](_0x8ea7('0x8'),attributes,{'tableName':_0x8ea7('0x9'),'paranoid':![],'indexes':[{'name':_0x8ea7('0xa'),'fields':[_0x8ea7('0xb'),_0x8ea7('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 5cd08f7..e48ca92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c0a=['client','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x589aee,_0x140a03){var _0x2f5ed4=function(_0x3d224f){while(--_0x3d224f){_0x589aee['push'](_0x589aee['shift']());}};_0x2f5ed4(++_0x140a03);}(_0x2c0a,0x1a6));var _0xa2c0=function(_0x277107,_0x3420dc){_0x277107=_0x277107-0x0;var _0x1da046=_0x2c0a[_0x277107];return _0x1da046;};'use strict';var _=require(_0xa2c0('0x0'));var util=require(_0xa2c0('0x1'));var moment=require(_0xa2c0('0x2'));var BPromise=require('bluebird');var rs=require(_0xa2c0('0x3'));var fs=require('fs');var Redis=require(_0xa2c0('0x4'));var db=require(_0xa2c0('0x5'))['db'];var utils=require(_0xa2c0('0x6'));var logger=require(_0xa2c0('0x7'))(_0xa2c0('0x8'));var config=require(_0xa2c0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa2c0('0xa')][_0xa2c0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x182d8c,_0x3f639b,_0x134803){return new BPromise(function(_0x399c02,_0x1f78c0){return client[_0xa2c0('0xc')](_0x182d8c,_0x134803)[_0xa2c0('0xd')](function(_0x4dc97e){logger[_0xa2c0('0xe')](_0xa2c0('0xf'),_0x3f639b,_0xa2c0('0x10'));logger[_0xa2c0('0x11')](_0xa2c0('0x12'),_0x3f639b,'request\x20sent',JSON[_0xa2c0('0x13')](_0x4dc97e));if(_0x4dc97e[_0xa2c0('0x14')]){if(_0x4dc97e[_0xa2c0('0x14')][_0xa2c0('0x15')]===0x1f4){logger[_0xa2c0('0x14')](_0xa2c0('0xf'),_0x3f639b,_0x4dc97e[_0xa2c0('0x14')][_0xa2c0('0x16')]);return _0x1f78c0(_0x4dc97e['error'][_0xa2c0('0x16')]);}logger[_0xa2c0('0x14')](_0xa2c0('0xf'),_0x3f639b,_0x4dc97e['error'][_0xa2c0('0x16')]);return _0x399c02(_0x4dc97e[_0xa2c0('0x14')][_0xa2c0('0x16')]);}else{logger['info'](_0xa2c0('0xf'),_0x3f639b,_0xa2c0('0x10'));_0x399c02(_0x4dc97e[_0xa2c0('0x17')][_0xa2c0('0x16')]);}})['catch'](function(_0x299716){logger[_0xa2c0('0x14')]('VtigerField,\x20%s,\x20%s',_0x3f639b,_0x299716);_0x1f78c0(_0x299716);});});}
\ No newline at end of file
+var _0xa142=['VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xa142,0x1eb));var _0x2a14=function(_0x2f90c0,_0x5d162a){_0x2f90c0=_0x2f90c0-0x0;var _0x2e3552=_0xa142[_0x2f90c0];return _0x2e3552;};'use strict';var _=require('lodash');var util=require(_0x2a14('0x0'));var moment=require(_0x2a14('0x1'));var BPromise=require(_0x2a14('0x2'));var rs=require(_0x2a14('0x3'));var fs=require('fs');var Redis=require(_0x2a14('0x4'));var db=require(_0x2a14('0x5'))['db'];var utils=require(_0x2a14('0x6'));var logger=require(_0x2a14('0x7'))(_0x2a14('0x8'));var config=require(_0x2a14('0x9'));var jayson=require(_0x2a14('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x46a080,_0x318288,_0x3a950e){return new BPromise(function(_0xda837a,_0xa29ca1){return client[_0x2a14('0xb')](_0x46a080,_0x3a950e)['then'](function(_0x46a749){logger[_0x2a14('0xc')](_0x2a14('0xd'),_0x318288,'request\x20sent');logger[_0x2a14('0xe')](_0x2a14('0xf'),_0x318288,_0x2a14('0x10'),JSON[_0x2a14('0x11')](_0x46a749));if(_0x46a749[_0x2a14('0x12')]){if(_0x46a749['error'][_0x2a14('0x13')]===0x1f4){logger[_0x2a14('0x12')](_0x2a14('0xd'),_0x318288,_0x46a749['error'][_0x2a14('0x14')]);return _0xa29ca1(_0x46a749['error']['message']);}logger[_0x2a14('0x12')](_0x2a14('0xd'),_0x318288,_0x46a749[_0x2a14('0x12')][_0x2a14('0x14')]);return _0xda837a(_0x46a749[_0x2a14('0x12')][_0x2a14('0x14')]);}else{logger[_0x2a14('0xc')](_0x2a14('0xd'),_0x318288,_0x2a14('0x10'));_0xda837a(_0x46a749['result'][_0x2a14('0x14')]);}})['catch'](function(_0x387836){logger[_0x2a14('0x12')](_0x2a14('0xd'),_0x318288,_0x387836);_0xa29ca1(_0x387836);});});}
\ No newline at end of file
index 2d4d97f..430fcd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c97=['post','create','addConfiguration','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','/:id/fields','getFields'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0x8c97,0x194));var _0x78c9=function(_0x14aaca,_0x2103c5){_0x14aaca=_0x14aaca-0x0;var _0x5c4599=_0x8c97[_0x14aaca];return _0x5c4599;};'use strict';var multer=require(_0x78c9('0x0'));var util=require(_0x78c9('0x1'));var path=require(_0x78c9('0x2'));var timeout=require(_0x78c9('0x3'));var express=require('express');var router=express[_0x78c9('0x4')]();var fs_extra=require(_0x78c9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x78c9('0x6'));var config=require(_0x78c9('0x7'));var controller=require(_0x78c9('0x8'));router[_0x78c9('0x9')]('/',auth[_0x78c9('0xa')](),controller[_0x78c9('0xb')]);router[_0x78c9('0x9')](_0x78c9('0xc'),auth[_0x78c9('0xa')](),controller['show']);router[_0x78c9('0x9')](_0x78c9('0xd'),auth[_0x78c9('0xa')](),controller['getConfigurations']);router[_0x78c9('0x9')](_0x78c9('0xe'),auth[_0x78c9('0xa')](),controller[_0x78c9('0xf')]);router[_0x78c9('0x10')]('/',auth[_0x78c9('0xa')](),controller[_0x78c9('0x11')]);router['post'](_0x78c9('0xd'),auth[_0x78c9('0xa')](),controller[_0x78c9('0x12')]);router['put'](_0x78c9('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x78c9('0x13')](_0x78c9('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x78c9('0x14')]=router;
\ No newline at end of file
+var _0x6c45=['../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post','addConfiguration','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x47cc9e,_0x52ab32){var _0x47e80a=function(_0x175b83){while(--_0x175b83){_0x47cc9e['push'](_0x47cc9e['shift']());}};_0x47e80a(++_0x52ab32);}(_0x6c45,0xb1));var _0x56c4=function(_0x3497fa,_0x21b5f0){_0x3497fa=_0x3497fa-0x0;var _0x5b2d0a=_0x6c45[_0x3497fa];return _0x5b2d0a;};'use strict';var multer=require(_0x56c4('0x0'));var util=require(_0x56c4('0x1'));var path=require('path');var timeout=require(_0x56c4('0x2'));var express=require(_0x56c4('0x3'));var router=express[_0x56c4('0x4')]();var fs_extra=require(_0x56c4('0x5'));var auth=require(_0x56c4('0x6'));var interaction=require(_0x56c4('0x7'));var config=require(_0x56c4('0x8'));var controller=require(_0x56c4('0x9'));router[_0x56c4('0xa')]('/',auth[_0x56c4('0xb')](),controller[_0x56c4('0xc')]);router[_0x56c4('0xa')](_0x56c4('0xd'),auth[_0x56c4('0xb')](),controller[_0x56c4('0xe')]);router[_0x56c4('0xa')](_0x56c4('0xf'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x10')]);router[_0x56c4('0xa')]('/:id/fields',auth[_0x56c4('0xb')](),controller[_0x56c4('0x11')]);router[_0x56c4('0x12')]('/',auth[_0x56c4('0xb')](),controller['create']);router[_0x56c4('0x12')](_0x56c4('0xf'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x13')]);router['put'](_0x56c4('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x56c4('0x14')](_0x56c4('0xd'),auth[_0x56c4('0xb')](),controller[_0x56c4('0x15')]);module[_0x56c4('0x16')]=router;
\ No newline at end of file
index 3f7495d..7e35922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ccb=['remoteUri','password','token','ENUM','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x126c60,_0x4bda13){var _0x3110e0=function(_0xd96d7){while(--_0xd96d7){_0x126c60['push'](_0x126c60['shift']());}};_0x3110e0(++_0x4bda13);}(_0x4ccb,0x196));var _0xb4cc=function(_0x58caea,_0x2708d6){_0x58caea=_0x58caea-0x0;var _0x29d6ae=_0x4ccb[_0x58caea];return _0x29d6ae;};'use strict';var Sequelize=require(_0xb4cc('0x0'));module[_0xb4cc('0x1')]={'name':{'type':Sequelize[_0xb4cc('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xb4cc('0x2')],'unique':_0xb4cc('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xb4cc('0x2')]},'remoteUri':{'type':Sequelize[_0xb4cc('0x2')],'unique':_0xb4cc('0x4')},'authType':{'type':Sequelize['ENUM'](_0xb4cc('0x5'),_0xb4cc('0x6')),'defaultValue':_0xb4cc('0x5')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb4cc('0x7')](_0xb4cc('0x8'),_0xb4cc('0x9')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xf072=['exports','STRING','ENUM','password','token','integrationTab','newTab','sequelize'];(function(_0x2cb769,_0x1e80e2){var _0x50bc1d=function(_0xd8eea8){while(--_0xd8eea8){_0x2cb769['push'](_0x2cb769['shift']());}};_0x50bc1d(++_0x1e80e2);}(_0xf072,0x1cf));var _0x2f07=function(_0x2c4e4b,_0x43e320){_0x2c4e4b=_0x2c4e4b-0x0;var _0x193da3=_0xf072[_0x2c4e4b];return _0x193da3;};'use strict';var Sequelize=require(_0x2f07('0x0'));module[_0x2f07('0x1')]={'name':{'type':Sequelize[_0x2f07('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x2f07('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x2f07('0x2')]},'token':{'type':Sequelize[_0x2f07('0x2')]},'remoteUri':{'type':Sequelize[_0x2f07('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize[_0x2f07('0x3')](_0x2f07('0x4'),_0x2f07('0x5')),'defaultValue':_0x2f07('0x4')},'serverUrl':{'type':Sequelize[_0x2f07('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x2f07('0x3')](_0x2f07('0x6'),_0x2f07('0x7')),'defaultValue':_0x2f07('0x6')}};
\ No newline at end of file
index 2986db0..d2cb2b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a4=['model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','ZendeskAccount','include','findAll','rows','catch','params','rawAttributes','includeAll','find','create','body','getConfigurations','findOne','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskConfiguration','ZendeskField','getFields','password','token','remoteUri','slice','substring','lastIndexOf','format','authType','headers','Basic\x20%s','%s:%s','username','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','assignee','ticket_fields','includes','position','title','system_field_options','custom_field_options','test','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','end','sendStatus','stack','name','send','map','type'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x58a4,0xbf));var _0x458a=function(_0x31cdff,_0x545438){_0x31cdff=_0x31cdff-0x0;var _0x14091f=_0x58a4[_0x31cdff];return _0x14091f;};'use strict';var emlformat=require(_0x458a('0x0'));var rimraf=require(_0x458a('0x1'));var zipdir=require(_0x458a('0x2'));var jsonpatch=require(_0x458a('0x3'));var rp=require(_0x458a('0x4'));var moment=require(_0x458a('0x5'));var BPromise=require(_0x458a('0x6'));var Mustache=require(_0x458a('0x7'));var util=require(_0x458a('0x8'));var path=require(_0x458a('0x9'));var sox=require(_0x458a('0xa'));var csv=require(_0x458a('0xb'));var ejs=require(_0x458a('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x458a('0xd'));var crypto=require(_0x458a('0xe'));var jsforce=require(_0x458a('0xf'));var deskjs=require(_0x458a('0x10'));var toCsv=require(_0x458a('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x458a('0x11'));var authService=require(_0x458a('0x12'));var qs=require(_0x458a('0x13'));var as=require(_0x458a('0x14'));var hardwareService=require(_0x458a('0x15'));var logger=require('../../config/logger')(_0x458a('0x16'));var utils=require(_0x458a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x458a('0x18'));var db=require(_0x458a('0x19'))['db'];var integrations=require(_0x458a('0x1a'));function respondWithStatusCode(_0x2a4934,_0x2e788b){_0x2e788b=_0x2e788b||0xcc;return function(_0x5bd09e){if(_0x5bd09e){return _0x2a4934['sendStatus'](_0x2e788b);}return _0x2a4934[_0x458a('0x1b')](_0x2e788b)['end']();};}function respondWithResult(_0x2c7528,_0x44f683){_0x44f683=_0x44f683||0xc8;return function(_0x10133b){if(_0x10133b){return _0x2c7528[_0x458a('0x1b')](_0x44f683)[_0x458a('0x1c')](_0x10133b);}};}function respondWithFilteredResult(_0x29acee,_0x507b0f){return function(_0x4b26be){if(_0x4b26be){var _0x5c7993=typeof _0x507b0f[_0x458a('0x1d')]===_0x458a('0x1e')&&typeof _0x507b0f[_0x458a('0x1f')]==='undefined';var _0x310569=_0x4b26be[_0x458a('0x20')];var _0x18504d=_0x5c7993?0x0:_0x507b0f[_0x458a('0x1d')];var _0xa91473=_0x5c7993?_0x4b26be['count']:_0x507b0f['offset']+_0x507b0f[_0x458a('0x1f')];var _0x4d07a7;if(_0xa91473>=_0x310569){_0xa91473=_0x310569;_0x4d07a7=0xc8;}else{_0x4d07a7=0xce;}_0x29acee[_0x458a('0x1b')](_0x4d07a7);return _0x29acee[_0x458a('0x21')]('Content-Range',_0x18504d+'-'+_0xa91473+'/'+_0x310569)[_0x458a('0x1c')](_0x4b26be);}return null;};}function patchUpdates(_0x55a588){return function(_0x200213){try{jsonpatch[_0x458a('0x22')](_0x200213,_0x55a588,!![]);}catch(_0x59f44c){return BPromise[_0x458a('0x23')](_0x59f44c);}return _0x200213[_0x458a('0x24')]();};}function saveUpdates(_0x5a2bcb,_0xa6b8ff){return function(_0x5ad95a){if(_0x5ad95a){return _0x5ad95a[_0x458a('0x25')](_0x5a2bcb)['then'](function(_0x4080fc){return _0x4080fc;});}return null;};}function removeEntity(_0x5dfc6c,_0x36b08e){return function(_0x911eaf){if(_0x911eaf){return _0x911eaf[_0x458a('0x26')]()[_0x458a('0x27')](function(){_0x5dfc6c[_0x458a('0x1b')](0xcc)[_0x458a('0x28')]();});}};}function handleEntityNotFound(_0x340375,_0x3012c7){return function(_0x1f2d0){if(!_0x1f2d0){_0x340375[_0x458a('0x29')](0x194);}return _0x1f2d0;};}function handleError(_0x52efed,_0x327fcb){_0x327fcb=_0x327fcb||0x1f4;return function(_0x21ec38){logger['error'](_0x21ec38[_0x458a('0x2a')]);if(_0x21ec38[_0x458a('0x2b')]){delete _0x21ec38['name'];}_0x52efed['status'](_0x327fcb)[_0x458a('0x2c')](_0x21ec38);};}exports['index']=function(_0x33c5d8,_0x29f9b5){var _0x223f73={},_0x4a49e4={},_0xa6fdf={'count':0x0,'rows':[]};var _0x2531f7=_[_0x458a('0x2d')](db['ZendeskAccount']['rawAttributes'],function(_0x18c890){return{'name':_0x18c890['fieldName'],'type':_0x18c890[_0x458a('0x2e')]['key']};});_0x4a49e4[_0x458a('0x2f')]=_[_0x458a('0x2d')](_0x2531f7,'name');_0x4a49e4[_0x458a('0x30')]=_[_0x458a('0x31')](_0x33c5d8[_0x458a('0x30')]);_0x4a49e4['filters']=_[_0x458a('0x32')](_0x4a49e4[_0x458a('0x2f')],_0x4a49e4[_0x458a('0x30')]);_0x223f73[_0x458a('0x33')]=_[_0x458a('0x32')](_0x4a49e4['model'],qs[_0x458a('0x34')](_0x33c5d8[_0x458a('0x30')][_0x458a('0x34')]));_0x223f73[_0x458a('0x33')]=_0x223f73[_0x458a('0x33')][_0x458a('0x35')]?_0x223f73['attributes']:_0x4a49e4[_0x458a('0x2f')];if(!_0x33c5d8[_0x458a('0x30')][_0x458a('0x36')](_0x458a('0x37'))){_0x223f73[_0x458a('0x1f')]=qs[_0x458a('0x1f')](_0x33c5d8[_0x458a('0x30')][_0x458a('0x1f')]);_0x223f73[_0x458a('0x1d')]=qs['offset'](_0x33c5d8[_0x458a('0x30')][_0x458a('0x1d')]);}_0x223f73[_0x458a('0x38')]=qs[_0x458a('0x39')](_0x33c5d8[_0x458a('0x30')][_0x458a('0x39')]);_0x223f73[_0x458a('0x3a')]=qs[_0x458a('0x3b')](_[_0x458a('0x3c')](_0x33c5d8[_0x458a('0x30')],_0x4a49e4[_0x458a('0x3b')]),_0x2531f7);if(_0x33c5d8[_0x458a('0x30')][_0x458a('0x3d')]){_0x223f73[_0x458a('0x3a')]=_[_0x458a('0x3e')](_0x223f73['where'],{'$or':_[_0x458a('0x2d')](_0x2531f7,function(_0x397a41){if(_0x397a41[_0x458a('0x2e')]!==_0x458a('0x3f')){var _0x3c5840={};_0x3c5840[_0x397a41[_0x458a('0x2b')]]={'$like':'%'+_0x33c5d8[_0x458a('0x30')][_0x458a('0x3d')]+'%'};return _0x3c5840;}})});}_0x223f73=_[_0x458a('0x3e')]({},_0x223f73,_0x33c5d8[_0x458a('0x40')]);var _0x20cf10={'where':_0x223f73['where']};return db[_0x458a('0x41')][_0x458a('0x20')](_0x20cf10)['then'](function(_0x430bda){_0xa6fdf[_0x458a('0x20')]=_0x430bda;if(_0x33c5d8[_0x458a('0x30')]['includeAll']){_0x223f73[_0x458a('0x42')]=[{'all':!![]}];}return db[_0x458a('0x41')][_0x458a('0x43')](_0x223f73);})[_0x458a('0x27')](function(_0xbcd632){_0xa6fdf[_0x458a('0x44')]=_0xbcd632;return _0xa6fdf;})[_0x458a('0x27')](respondWithFilteredResult(_0x29f9b5,_0x223f73))[_0x458a('0x45')](handleError(_0x29f9b5,null));};exports['show']=function(_0x296385,_0x145e3c){var _0x2b9030={'raw':![],'where':{'id':_0x296385[_0x458a('0x46')]['id']}},_0x5180ae={};_0x5180ae[_0x458a('0x2f')]=_['keys'](db[_0x458a('0x41')][_0x458a('0x47')]);_0x5180ae[_0x458a('0x30')]=_[_0x458a('0x31')](_0x296385[_0x458a('0x30')]);_0x5180ae['filters']=_['intersection'](_0x5180ae[_0x458a('0x2f')],_0x5180ae[_0x458a('0x30')]);_0x2b9030[_0x458a('0x33')]=_[_0x458a('0x32')](_0x5180ae['model'],qs[_0x458a('0x34')](_0x296385[_0x458a('0x30')]['fields']));_0x2b9030[_0x458a('0x33')]=_0x2b9030['attributes'][_0x458a('0x35')]?_0x2b9030[_0x458a('0x33')]:_0x5180ae[_0x458a('0x2f')];if(_0x296385['query'][_0x458a('0x48')]){_0x2b9030[_0x458a('0x42')]=[{'all':!![]}];}_0x2b9030=_[_0x458a('0x3e')]({},_0x2b9030,_0x296385['options']);return db['ZendeskAccount'][_0x458a('0x49')](_0x2b9030)[_0x458a('0x27')](handleEntityNotFound(_0x145e3c,null))[_0x458a('0x27')](respondWithResult(_0x145e3c,null))['catch'](handleError(_0x145e3c,null));};exports['create']=function(_0x3a7005,_0xf362b5){return db[_0x458a('0x41')][_0x458a('0x4a')](_0x3a7005[_0x458a('0x4b')],{})[_0x458a('0x27')](respondWithResult(_0xf362b5,0xc9))[_0x458a('0x45')](handleError(_0xf362b5,null));};exports[_0x458a('0x25')]=function(_0xb22232,_0x213f86){if(_0xb22232[_0x458a('0x4b')]['id']){delete _0xb22232[_0x458a('0x4b')]['id'];}return db[_0x458a('0x41')][_0x458a('0x49')]({'where':{'id':_0xb22232[_0x458a('0x46')]['id']}})[_0x458a('0x27')](handleEntityNotFound(_0x213f86,null))['then'](saveUpdates(_0xb22232[_0x458a('0x4b')],null))[_0x458a('0x27')](respondWithResult(_0x213f86,null))[_0x458a('0x45')](handleError(_0x213f86,null));};exports[_0x458a('0x26')]=function(_0x44670a,_0x5630cf){return db['ZendeskAccount']['find']({'where':{'id':_0x44670a[_0x458a('0x46')]['id']}})['then'](handleEntityNotFound(_0x5630cf,null))[_0x458a('0x27')](removeEntity(_0x5630cf,null))[_0x458a('0x45')](handleError(_0x5630cf,null));};exports[_0x458a('0x4c')]=function(_0x649553,_0xfa6e65,_0x5f0151){var _0x48f68e={};var _0x3d7616={};var _0x2d8b77;var _0x2587a1;return db[_0x458a('0x41')][_0x458a('0x4d')]({'where':{'id':_0x649553['params']['id']}})[_0x458a('0x27')](handleEntityNotFound(_0xfa6e65,null))['then'](function(_0xa51e28){if(_0xa51e28){_0x2d8b77=_0xa51e28;_0x3d7616['model']=_[_0x458a('0x31')](db['ZendeskConfiguration']['rawAttributes']);_0x3d7616['query']=_[_0x458a('0x31')](_0x649553[_0x458a('0x30')]);_0x3d7616['filters']=_[_0x458a('0x32')](_0x3d7616[_0x458a('0x2f')],_0x3d7616[_0x458a('0x30')]);_0x48f68e['attributes']=_[_0x458a('0x32')](_0x3d7616[_0x458a('0x2f')],qs[_0x458a('0x34')](_0x649553[_0x458a('0x30')][_0x458a('0x34')]));_0x48f68e[_0x458a('0x33')]=_0x48f68e['attributes'][_0x458a('0x35')]?_0x48f68e[_0x458a('0x33')]:_0x3d7616[_0x458a('0x2f')];_0x48f68e[_0x458a('0x38')]=qs[_0x458a('0x39')](_0x649553[_0x458a('0x30')][_0x458a('0x39')]);_0x48f68e[_0x458a('0x3a')]=qs['filters'](_[_0x458a('0x3c')](_0x649553['query'],_0x3d7616[_0x458a('0x3b')]));if(_0x649553[_0x458a('0x30')][_0x458a('0x3d')]){_0x48f68e[_0x458a('0x3a')]=_['merge'](_0x48f68e['where'],{'$or':_[_0x458a('0x2d')](_0x48f68e[_0x458a('0x33')],function(_0x2b9aac){var _0x156a22={};_0x156a22[_0x2b9aac]={'$like':'%'+_0x649553[_0x458a('0x30')][_0x458a('0x3d')]+'%'};return _0x156a22;})});}_0x48f68e=_['merge']({},_0x48f68e,_0x649553[_0x458a('0x40')]);return _0x2d8b77[_0x458a('0x4c')](_0x48f68e);}})['then'](function(_0x18d83a){if(_0x18d83a){_0x2587a1=_0x18d83a['length'];if(!_0x649553[_0x458a('0x30')][_0x458a('0x36')](_0x458a('0x37'))){_0x48f68e[_0x458a('0x1f')]=qs[_0x458a('0x1f')](_0x649553[_0x458a('0x30')][_0x458a('0x1f')]);_0x48f68e[_0x458a('0x1d')]=qs['offset'](_0x649553[_0x458a('0x30')][_0x458a('0x1d')]);}return _0x2d8b77['getConfigurations'](_0x48f68e);}})[_0x458a('0x27')](function(_0x3da617){if(_0x3da617){return _0x3da617?{'count':_0x2587a1,'rows':_0x3da617}:null;}})['then'](respondWithResult(_0xfa6e65,null))[_0x458a('0x45')](handleError(_0xfa6e65,null));};exports[_0x458a('0x4e')]=function(_0x47cbcf,_0x17b611,_0x180df0){if(_0x47cbcf['body']['id']){delete _0x47cbcf[_0x458a('0x4b')]['id'];}return db[_0x458a('0x41')][_0x458a('0x4d')]({'where':{'id':_0x47cbcf[_0x458a('0x46')]['id']}})[_0x458a('0x27')](handleEntityNotFound(_0x17b611,null))[_0x458a('0x27')](function(_0x4199a7){if(_0x4199a7){_0x47cbcf[_0x458a('0x4b')]['AccountId']=_0x4199a7['id'];_0x47cbcf[_0x458a('0x4b')][_0x458a('0x4f')]=integrations[_0x458a('0x50')](_0x47cbcf[_0x458a('0x4b')][_0x458a('0x51')],_0x47cbcf[_0x458a('0x4b')][_0x458a('0x2e')]);_0x47cbcf[_0x458a('0x4b')][_0x458a('0x52')]=integrations[_0x458a('0x53')](_0x47cbcf['body'][_0x458a('0x51')],_0x47cbcf['body'][_0x458a('0x2e')]);return db[_0x458a('0x54')][_0x458a('0x4a')](_0x47cbcf[_0x458a('0x4b')],{'include':[{'model':db[_0x458a('0x55')],'as':_0x458a('0x4f')},{'model':db[_0x458a('0x55')],'as':_0x458a('0x52')}]});}return null;})[_0x458a('0x27')](respondWithResult(_0x17b611,null))[_0x458a('0x45')](handleError(_0x17b611,null));};exports[_0x458a('0x56')]=function(_0x448cbc,_0x11bbba,_0x435884){var _0x3948aa='';return db[_0x458a('0x41')]['findOne']({'where':{'id':_0x448cbc[_0x458a('0x46')]['id']},'attributes':['id','username',_0x458a('0x57'),_0x458a('0x58'),'authType',_0x458a('0x59')]})[_0x458a('0x27')](handleEntityNotFound(_0x11bbba,null))[_0x458a('0x27')](function(_0x494710){if(_0x494710){_0x3948aa=_0x494710[_0x458a('0x59')];var _0xed002=_0x3948aa[_0x458a('0x5a')](-0x1);if(_0xed002==='/'){_0x3948aa=_0x3948aa[_0x458a('0x5b')](0x0,_0x3948aa[_0x458a('0x5c')](_0xed002));}var _0x42f213={'method':'GET','uri':util[_0x458a('0x5d')]('%s/%s',_0x3948aa,'ticket_fields'),'json':!![]};switch(_0x494710[_0x458a('0x5e')]){case _0x458a('0x57'):_0x42f213[_0x458a('0x5f')]={'Authorization':util[_0x458a('0x5d')](_0x458a('0x60'),new Buffer(util[_0x458a('0x5d')](_0x458a('0x61'),_0x494710[_0x458a('0x62')],_0x494710[_0x458a('0x57')]))[_0x458a('0x63')](_0x458a('0x64')))};break;case _0x458a('0x58'):_0x42f213[_0x458a('0x5f')]={'Authorization':util[_0x458a('0x5d')]('Basic\x20%s',new Buffer(util['format']('%s/token:%s',_0x494710[_0x458a('0x62')],_0x494710['token']))[_0x458a('0x63')](_0x458a('0x64')))};break;default:throw new db[(_0x458a('0x65'))][(_0x458a('0x66'))](_0x458a('0x67'));}return rp(_0x42f213);}})[_0x458a('0x27')](function(_0x46df7c){if(_0x46df7c){var _0x49f3ee=[_0x458a('0x68'),_0x458a('0x69'),'group',_0x458a('0x6a')];_['remove'](_0x46df7c[_0x458a('0x6b')],function(_0x58d29d){return _0x49f3ee[_0x458a('0x6c')](_0x58d29d[_0x458a('0x2e')]);});return{'count':_0x46df7c[_0x458a('0x6b')][_0x458a('0x35')],'rows':_['map'](_0x46df7c[_0x458a('0x6b')],function(_0x14b95e){return{'id':_0x14b95e['id'],'name':_0x14b95e[_0x458a('0x6d')]>0x7?_0x14b95e[_0x458a('0x6e')]:_0x14b95e[_0x458a('0x2e')],'custom':_0x14b95e[_0x458a('0x6d')]>0x7?!![]:![],'options':_0x14b95e[_0x458a('0x6f')]?_0x14b95e[_0x458a('0x6f')]:_0x14b95e['custom_field_options']?_0x14b95e[_0x458a('0x70')]:[]};})};}})[_0x458a('0x27')](respondWithResult(_0x11bbba,null))[_0x458a('0x45')](function(_0x4212af){var _0x591dbb=_0x448cbc[_0x458a('0x30')][_0x458a('0x71')]?0x1f4:_0x4212af['statusCode']||0x1f4;logger[_0x458a('0x72')](_0x458a('0x73'),_0x458a('0x56'),_0x591dbb,JSON[_0x458a('0x74')](_0x4212af));delete _0x4212af[_0x458a('0x2b')];if(_0x591dbb===0x191){_0x591dbb=0x190;}_0x11bbba['status'](_0x591dbb)[_0x458a('0x2c')](_0x448cbc[_0x458a('0x30')][_0x458a('0x71')]?{'message':_0x458a('0x75'),'statusCode':_0x4212af[_0x458a('0x76')]}:_0x4212af);});};
\ No newline at end of file
+var _0xc900=['query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','rawAttributes','intersection','includeAll','find','create','body','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','password','token','authType','remoteUri','substring','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','username','toString','base64','ValidationError','Unknown\x20authentication\x20type','subject','group','remove','includes','title','position','system_field_options','custom_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ZendeskAccount','fieldName','type','model'];(function(_0x14a426,_0x36cc37){var _0x2cf548=function(_0x1241fe){while(--_0x1241fe){_0x14a426['push'](_0x14a426['shift']());}};_0x2cf548(++_0x36cc37);}(_0xc900,0xb3));var _0x0c90=function(_0x26fe03,_0x211380){_0x26fe03=_0x26fe03-0x0;var _0x6229f9=_0xc900[_0x26fe03];return _0x6229f9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c90('0x0'));var jsonpatch=require(_0x0c90('0x1'));var rp=require(_0x0c90('0x2'));var moment=require('moment');var BPromise=require(_0x0c90('0x3'));var Mustache=require(_0x0c90('0x4'));var util=require('util');var path=require(_0x0c90('0x5'));var sox=require(_0x0c90('0x6'));var csv=require(_0x0c90('0x7'));var ejs=require(_0x0c90('0x8'));var fs=require('fs');var fs_extra=require(_0x0c90('0x9'));var _=require(_0x0c90('0xa'));var squel=require('squel');var crypto=require(_0x0c90('0xb'));var jsforce=require(_0x0c90('0xc'));var deskjs=require(_0x0c90('0xd'));var toCsv=require(_0x0c90('0x7'));var querystring=require(_0x0c90('0xe'));var Papa=require(_0x0c90('0xf'));var Redis=require(_0x0c90('0x10'));var authService=require(_0x0c90('0x11'));var qs=require(_0x0c90('0x12'));var as=require(_0x0c90('0x13'));var hardwareService=require(_0x0c90('0x14'));var logger=require(_0x0c90('0x15'))(_0x0c90('0x16'));var utils=require('../../config/utils');var config=require(_0x0c90('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c90('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x459cdb,_0x26fc46){_0x26fc46=_0x26fc46||0xcc;return function(_0x4535a2){if(_0x4535a2){return _0x459cdb[_0x0c90('0x19')](_0x26fc46);}return _0x459cdb[_0x0c90('0x1a')](_0x26fc46)['end']();};}function respondWithResult(_0x467b32,_0x4451e0){_0x4451e0=_0x4451e0||0xc8;return function(_0x4f35f4){if(_0x4f35f4){return _0x467b32[_0x0c90('0x1a')](_0x4451e0)[_0x0c90('0x1b')](_0x4f35f4);}};}function respondWithFilteredResult(_0x3bd5e8,_0x5bef7d){return function(_0x5daeb7){if(_0x5daeb7){var _0x412635=typeof _0x5bef7d[_0x0c90('0x1c')]===_0x0c90('0x1d')&&typeof _0x5bef7d[_0x0c90('0x1e')]===_0x0c90('0x1d');var _0x2cab22=_0x5daeb7[_0x0c90('0x1f')];var _0x57b9a6=_0x412635?0x0:_0x5bef7d[_0x0c90('0x1c')];var _0x38becc=_0x412635?_0x5daeb7[_0x0c90('0x1f')]:_0x5bef7d[_0x0c90('0x1c')]+_0x5bef7d['limit'];var _0x10a775;if(_0x38becc>=_0x2cab22){_0x38becc=_0x2cab22;_0x10a775=0xc8;}else{_0x10a775=0xce;}_0x3bd5e8[_0x0c90('0x1a')](_0x10a775);return _0x3bd5e8[_0x0c90('0x20')](_0x0c90('0x21'),_0x57b9a6+'-'+_0x38becc+'/'+_0x2cab22)[_0x0c90('0x1b')](_0x5daeb7);}return null;};}function patchUpdates(_0xc08f54){return function(_0x4cc940){try{jsonpatch[_0x0c90('0x22')](_0x4cc940,_0xc08f54,!![]);}catch(_0x4d629f){return BPromise[_0x0c90('0x23')](_0x4d629f);}return _0x4cc940[_0x0c90('0x24')]();};}function saveUpdates(_0x47b13c,_0x2a053a){return function(_0x43ddc3){if(_0x43ddc3){return _0x43ddc3[_0x0c90('0x25')](_0x47b13c)[_0x0c90('0x26')](function(_0x212164){return _0x212164;});}return null;};}function removeEntity(_0x3b287c,_0x4dfbc3){return function(_0x26f0a3){if(_0x26f0a3){return _0x26f0a3[_0x0c90('0x27')]()['then'](function(){_0x3b287c['status'](0xcc)[_0x0c90('0x28')]();});}};}function handleEntityNotFound(_0x3ea861,_0x35c243){return function(_0x109a5f){if(!_0x109a5f){_0x3ea861['sendStatus'](0x194);}return _0x109a5f;};}function handleError(_0x2dfa14,_0x438652){_0x438652=_0x438652||0x1f4;return function(_0xeb7f58){logger[_0x0c90('0x29')](_0xeb7f58[_0x0c90('0x2a')]);if(_0xeb7f58[_0x0c90('0x2b')]){delete _0xeb7f58['name'];}_0x2dfa14[_0x0c90('0x1a')](_0x438652)[_0x0c90('0x2c')](_0xeb7f58);};}exports[_0x0c90('0x2d')]=function(_0x13b377,_0x52d28d){var _0x4c8603={},_0x1f27f1={},_0x25da6e={'count':0x0,'rows':[]};var _0x3bff04=_[_0x0c90('0x2e')](db[_0x0c90('0x2f')]['rawAttributes'],function(_0x120136){return{'name':_0x120136[_0x0c90('0x30')],'type':_0x120136[_0x0c90('0x31')]['key']};});_0x1f27f1[_0x0c90('0x32')]=_['map'](_0x3bff04,'name');_0x1f27f1[_0x0c90('0x33')]=_[_0x0c90('0x34')](_0x13b377[_0x0c90('0x33')]);_0x1f27f1[_0x0c90('0x35')]=_['intersection'](_0x1f27f1[_0x0c90('0x32')],_0x1f27f1['query']);_0x4c8603[_0x0c90('0x36')]=_['intersection'](_0x1f27f1[_0x0c90('0x32')],qs[_0x0c90('0x37')](_0x13b377['query'][_0x0c90('0x37')]));_0x4c8603[_0x0c90('0x36')]=_0x4c8603[_0x0c90('0x36')][_0x0c90('0x38')]?_0x4c8603[_0x0c90('0x36')]:_0x1f27f1[_0x0c90('0x32')];if(!_0x13b377[_0x0c90('0x33')][_0x0c90('0x39')]('nolimit')){_0x4c8603[_0x0c90('0x1e')]=qs[_0x0c90('0x1e')](_0x13b377[_0x0c90('0x33')][_0x0c90('0x1e')]);_0x4c8603['offset']=qs[_0x0c90('0x1c')](_0x13b377[_0x0c90('0x33')][_0x0c90('0x1c')]);}_0x4c8603[_0x0c90('0x3a')]=qs[_0x0c90('0x3b')](_0x13b377[_0x0c90('0x33')][_0x0c90('0x3b')]);_0x4c8603[_0x0c90('0x3c')]=qs['filters'](_[_0x0c90('0x3d')](_0x13b377[_0x0c90('0x33')],_0x1f27f1['filters']),_0x3bff04);if(_0x13b377[_0x0c90('0x33')][_0x0c90('0x3e')]){_0x4c8603[_0x0c90('0x3c')]=_[_0x0c90('0x3f')](_0x4c8603[_0x0c90('0x3c')],{'$or':_['map'](_0x3bff04,function(_0x2f1d95){if(_0x2f1d95[_0x0c90('0x31')]!==_0x0c90('0x40')){var _0x2bca69={};_0x2bca69[_0x2f1d95[_0x0c90('0x2b')]]={'$like':'%'+_0x13b377[_0x0c90('0x33')][_0x0c90('0x3e')]+'%'};return _0x2bca69;}})});}_0x4c8603=_[_0x0c90('0x3f')]({},_0x4c8603,_0x13b377[_0x0c90('0x41')]);var _0x4f0227={'where':_0x4c8603[_0x0c90('0x3c')]};return db['ZendeskAccount'][_0x0c90('0x1f')](_0x4f0227)['then'](function(_0xb126ef){_0x25da6e[_0x0c90('0x1f')]=_0xb126ef;if(_0x13b377['query']['includeAll']){_0x4c8603[_0x0c90('0x42')]=[{'all':!![]}];}return db['ZendeskAccount'][_0x0c90('0x43')](_0x4c8603);})[_0x0c90('0x26')](function(_0x373f9f){_0x25da6e['rows']=_0x373f9f;return _0x25da6e;})[_0x0c90('0x26')](respondWithFilteredResult(_0x52d28d,_0x4c8603))[_0x0c90('0x44')](handleError(_0x52d28d,null));};exports[_0x0c90('0x45')]=function(_0x3e5137,_0x2139c3){var _0x1184c4={'raw':![],'where':{'id':_0x3e5137[_0x0c90('0x46')]['id']}},_0x565b10={};_0x565b10[_0x0c90('0x32')]=_[_0x0c90('0x34')](db[_0x0c90('0x2f')][_0x0c90('0x47')]);_0x565b10[_0x0c90('0x33')]=_[_0x0c90('0x34')](_0x3e5137['query']);_0x565b10[_0x0c90('0x35')]=_['intersection'](_0x565b10[_0x0c90('0x32')],_0x565b10[_0x0c90('0x33')]);_0x1184c4[_0x0c90('0x36')]=_[_0x0c90('0x48')](_0x565b10[_0x0c90('0x32')],qs[_0x0c90('0x37')](_0x3e5137[_0x0c90('0x33')][_0x0c90('0x37')]));_0x1184c4[_0x0c90('0x36')]=_0x1184c4[_0x0c90('0x36')][_0x0c90('0x38')]?_0x1184c4[_0x0c90('0x36')]:_0x565b10[_0x0c90('0x32')];if(_0x3e5137[_0x0c90('0x33')][_0x0c90('0x49')]){_0x1184c4['include']=[{'all':!![]}];}_0x1184c4=_[_0x0c90('0x3f')]({},_0x1184c4,_0x3e5137[_0x0c90('0x41')]);return db[_0x0c90('0x2f')][_0x0c90('0x4a')](_0x1184c4)[_0x0c90('0x26')](handleEntityNotFound(_0x2139c3,null))[_0x0c90('0x26')](respondWithResult(_0x2139c3,null))[_0x0c90('0x44')](handleError(_0x2139c3,null));};exports[_0x0c90('0x4b')]=function(_0x3bb138,_0x3af64f){return db[_0x0c90('0x2f')][_0x0c90('0x4b')](_0x3bb138[_0x0c90('0x4c')],{})[_0x0c90('0x26')](respondWithResult(_0x3af64f,0xc9))['catch'](handleError(_0x3af64f,null));};exports[_0x0c90('0x25')]=function(_0x38f492,_0x553fea){if(_0x38f492['body']['id']){delete _0x38f492['body']['id'];}return db[_0x0c90('0x2f')][_0x0c90('0x4a')]({'where':{'id':_0x38f492[_0x0c90('0x46')]['id']}})[_0x0c90('0x26')](handleEntityNotFound(_0x553fea,null))[_0x0c90('0x26')](saveUpdates(_0x38f492['body'],null))[_0x0c90('0x26')](respondWithResult(_0x553fea,null))[_0x0c90('0x44')](handleError(_0x553fea,null));};exports[_0x0c90('0x27')]=function(_0x549c78,_0x119776){return db[_0x0c90('0x2f')][_0x0c90('0x4a')]({'where':{'id':_0x549c78[_0x0c90('0x46')]['id']}})[_0x0c90('0x26')](handleEntityNotFound(_0x119776,null))[_0x0c90('0x26')](removeEntity(_0x119776,null))[_0x0c90('0x44')](handleError(_0x119776,null));};exports[_0x0c90('0x4d')]=function(_0x1daeed,_0xeeee3b,_0x5e288e){var _0xac80b2={};var _0x4ba9e7={};var _0xda4331;var _0x67539d;return db[_0x0c90('0x2f')][_0x0c90('0x4e')]({'where':{'id':_0x1daeed[_0x0c90('0x46')]['id']}})[_0x0c90('0x26')](handleEntityNotFound(_0xeeee3b,null))['then'](function(_0x4930fc){if(_0x4930fc){_0xda4331=_0x4930fc;_0x4ba9e7['model']=_['keys'](db[_0x0c90('0x4f')][_0x0c90('0x47')]);_0x4ba9e7[_0x0c90('0x33')]=_['keys'](_0x1daeed[_0x0c90('0x33')]);_0x4ba9e7[_0x0c90('0x35')]=_['intersection'](_0x4ba9e7[_0x0c90('0x32')],_0x4ba9e7['query']);_0xac80b2[_0x0c90('0x36')]=_[_0x0c90('0x48')](_0x4ba9e7[_0x0c90('0x32')],qs[_0x0c90('0x37')](_0x1daeed['query'][_0x0c90('0x37')]));_0xac80b2['attributes']=_0xac80b2[_0x0c90('0x36')][_0x0c90('0x38')]?_0xac80b2['attributes']:_0x4ba9e7['model'];_0xac80b2['order']=qs[_0x0c90('0x3b')](_0x1daeed[_0x0c90('0x33')][_0x0c90('0x3b')]);_0xac80b2[_0x0c90('0x3c')]=qs[_0x0c90('0x35')](_['pick'](_0x1daeed[_0x0c90('0x33')],_0x4ba9e7[_0x0c90('0x35')]));if(_0x1daeed['query'][_0x0c90('0x3e')]){_0xac80b2['where']=_[_0x0c90('0x3f')](_0xac80b2[_0x0c90('0x3c')],{'$or':_['map'](_0xac80b2[_0x0c90('0x36')],function(_0x5baf85){var _0x4de11a={};_0x4de11a[_0x5baf85]={'$like':'%'+_0x1daeed['query'][_0x0c90('0x3e')]+'%'};return _0x4de11a;})});}_0xac80b2=_[_0x0c90('0x3f')]({},_0xac80b2,_0x1daeed[_0x0c90('0x41')]);return _0xda4331[_0x0c90('0x4d')](_0xac80b2);}})['then'](function(_0x5b385b){if(_0x5b385b){_0x67539d=_0x5b385b[_0x0c90('0x38')];if(!_0x1daeed[_0x0c90('0x33')][_0x0c90('0x39')]('nolimit')){_0xac80b2[_0x0c90('0x1e')]=qs[_0x0c90('0x1e')](_0x1daeed[_0x0c90('0x33')]['limit']);_0xac80b2[_0x0c90('0x1c')]=qs[_0x0c90('0x1c')](_0x1daeed[_0x0c90('0x33')]['offset']);}return _0xda4331[_0x0c90('0x4d')](_0xac80b2);}})[_0x0c90('0x26')](function(_0x1a198b){if(_0x1a198b){return _0x1a198b?{'count':_0x67539d,'rows':_0x1a198b}:null;}})[_0x0c90('0x26')](respondWithResult(_0xeeee3b,null))[_0x0c90('0x44')](handleError(_0xeeee3b,null));};exports[_0x0c90('0x50')]=function(_0x19f4ac,_0x143e0d,_0x181fe3){if(_0x19f4ac['body']['id']){delete _0x19f4ac['body']['id'];}return db[_0x0c90('0x2f')][_0x0c90('0x4e')]({'where':{'id':_0x19f4ac[_0x0c90('0x46')]['id']}})[_0x0c90('0x26')](handleEntityNotFound(_0x143e0d,null))[_0x0c90('0x26')](function(_0x2dad30){if(_0x2dad30){_0x19f4ac[_0x0c90('0x4c')][_0x0c90('0x51')]=_0x2dad30['id'];_0x19f4ac[_0x0c90('0x4c')][_0x0c90('0x52')]=integrations[_0x0c90('0x53')](_0x19f4ac[_0x0c90('0x4c')][_0x0c90('0x54')],_0x19f4ac[_0x0c90('0x4c')][_0x0c90('0x31')]);_0x19f4ac['body'][_0x0c90('0x55')]=integrations[_0x0c90('0x56')](_0x19f4ac[_0x0c90('0x4c')]['channel'],_0x19f4ac['body'][_0x0c90('0x31')]);return db['ZendeskConfiguration'][_0x0c90('0x4b')](_0x19f4ac[_0x0c90('0x4c')],{'include':[{'model':db['ZendeskField'],'as':_0x0c90('0x52')},{'model':db[_0x0c90('0x57')],'as':_0x0c90('0x55')}]});}return null;})[_0x0c90('0x26')](respondWithResult(_0x143e0d,null))['catch'](handleError(_0x143e0d,null));};exports['getFields']=function(_0x5f32d6,_0x16b38a,_0x2d3287){var _0x3bc90d='';return db[_0x0c90('0x2f')]['findOne']({'where':{'id':_0x5f32d6[_0x0c90('0x46')]['id']},'attributes':['id','username',_0x0c90('0x58'),_0x0c90('0x59'),_0x0c90('0x5a'),'remoteUri']})[_0x0c90('0x26')](handleEntityNotFound(_0x16b38a,null))[_0x0c90('0x26')](function(_0x2da9f9){if(_0x2da9f9){_0x3bc90d=_0x2da9f9[_0x0c90('0x5b')];var _0x57c3b3=_0x3bc90d['slice'](-0x1);if(_0x57c3b3==='/'){_0x3bc90d=_0x3bc90d[_0x0c90('0x5c')](0x0,_0x3bc90d['lastIndexOf'](_0x57c3b3));}var _0x3254c0={'method':_0x0c90('0x5d'),'uri':util[_0x0c90('0x5e')](_0x0c90('0x5f'),_0x3bc90d,_0x0c90('0x60')),'json':!![]};switch(_0x2da9f9[_0x0c90('0x5a')]){case _0x0c90('0x58'):_0x3254c0[_0x0c90('0x61')]={'Authorization':util[_0x0c90('0x5e')](_0x0c90('0x62'),new Buffer(util['format'](_0x0c90('0x63'),_0x2da9f9[_0x0c90('0x64')],_0x2da9f9[_0x0c90('0x58')]))[_0x0c90('0x65')](_0x0c90('0x66')))};break;case _0x0c90('0x59'):_0x3254c0[_0x0c90('0x61')]={'Authorization':util[_0x0c90('0x5e')](_0x0c90('0x62'),new Buffer(util[_0x0c90('0x5e')]('%s/token:%s',_0x2da9f9[_0x0c90('0x64')],_0x2da9f9[_0x0c90('0x59')]))[_0x0c90('0x65')](_0x0c90('0x66')))};break;default:throw new db['Sequelize'][(_0x0c90('0x67'))](_0x0c90('0x68'));}return rp(_0x3254c0);}})[_0x0c90('0x26')](function(_0x48a32f){if(_0x48a32f){var _0x40866c=[_0x0c90('0x69'),'description',_0x0c90('0x6a'),'assignee'];_[_0x0c90('0x6b')](_0x48a32f['ticket_fields'],function(_0x5633a4){return _0x40866c[_0x0c90('0x6c')](_0x5633a4[_0x0c90('0x31')]);});return{'count':_0x48a32f['ticket_fields']['length'],'rows':_[_0x0c90('0x2e')](_0x48a32f[_0x0c90('0x60')],function(_0x5d80b9){return{'id':_0x5d80b9['id'],'name':_0x5d80b9['position']>0x7?_0x5d80b9[_0x0c90('0x6d')]:_0x5d80b9['type'],'custom':_0x5d80b9[_0x0c90('0x6e')]>0x7?!![]:![],'options':_0x5d80b9[_0x0c90('0x6f')]?_0x5d80b9[_0x0c90('0x6f')]:_0x5d80b9[_0x0c90('0x70')]?_0x5d80b9[_0x0c90('0x70')]:[]};})};}})['then'](respondWithResult(_0x16b38a,null))[_0x0c90('0x44')](function(_0x142268){var _0x3aed3c=_0x5f32d6['query']['test']?0x1f4:_0x142268[_0x0c90('0x71')]||0x1f4;logger[_0x0c90('0x29')](_0x0c90('0x72'),'getFields',_0x3aed3c,JSON['stringify'](_0x142268));delete _0x142268['name'];if(_0x3aed3c===0x191){_0x3aed3c=0x190;}_0x16b38a[_0x0c90('0x1a')](_0x3aed3c)['send'](_0x5f32d6['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x142268[_0x0c90('0x71')]}:_0x142268);});};
\ No newline at end of file
index 38f1a93..12071f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a7d=['request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','exports','ZendeskAccount','int_zendesk_accounts','lodash','util','api','moment','bluebird'];(function(_0x1e2080,_0x53283b){var _0x260111=function(_0x15da5e){while(--_0x15da5e){_0x1e2080['push'](_0x1e2080['shift']());}};_0x260111(++_0x53283b);}(_0x5a7d,0x1c2));var _0xd5a7=function(_0x186edd,_0x16afae){_0x186edd=_0x186edd-0x0;var _0x447af8=_0x5a7d[_0x186edd];return _0x447af8;};'use strict';var _=require(_0xd5a7('0x0'));var util=require(_0xd5a7('0x1'));var logger=require('../../config/logger')(_0xd5a7('0x2'));var moment=require(_0xd5a7('0x3'));var BPromise=require(_0xd5a7('0x4'));var rp=require(_0xd5a7('0x5'));var fs=require('fs');var path=require(_0xd5a7('0x6'));var rimraf=require(_0xd5a7('0x7'));var config=require(_0xd5a7('0x8'));var attributes=require(_0xd5a7('0x9'));var integrations=require('../../components/integrations/configuration');module[_0xd5a7('0xa')]=function(_0x65f3f1,_0x547a2f){return _0x65f3f1['define'](_0xd5a7('0xb'),attributes,{'tableName':_0xd5a7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8147=['bluebird','request-promise','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','util','../../config/logger','api','moment'];(function(_0x4bdc24,_0x5c55e9){var _0x597774=function(_0x3266a2){while(--_0x3266a2){_0x4bdc24['push'](_0x4bdc24['shift']());}};_0x597774(++_0x5c55e9);}(_0x8147,0x175));var _0x7814=function(_0x52818d,_0x587538){_0x52818d=_0x52818d-0x0;var _0x38999f=_0x8147[_0x52818d];return _0x38999f;};'use strict';var _=require('lodash');var util=require(_0x7814('0x0'));var logger=require(_0x7814('0x1'))(_0x7814('0x2'));var moment=require(_0x7814('0x3'));var BPromise=require(_0x7814('0x4'));var rp=require(_0x7814('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7814('0x6'));var config=require(_0x7814('0x7'));var attributes=require(_0x7814('0x8'));var integrations=require(_0x7814('0x9'));module[_0x7814('0xa')]=function(_0x4091a4,_0x43f2ac){return _0x4091a4[_0x7814('0xb')](_0x7814('0xc'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d612953..db66c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08b6=['result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','limit','include','map','model','attributes','then','ShowZendeskAccount','find','where','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x499f5e,_0x1dc384){var _0x2a0d0d=function(_0x31878a){while(--_0x31878a){_0x499f5e['push'](_0x499f5e['shift']());}};_0x2a0d0d(++_0x1dc384);}(_0x08b6,0x1c0));var _0x608b=function(_0x17215f,_0x22b6f2){_0x17215f=_0x17215f-0x0;var _0x5f0cb8=_0x08b6[_0x17215f];return _0x5f0cb8;};'use strict';var _=require(_0x608b('0x0'));var util=require('util');var moment=require(_0x608b('0x1'));var BPromise=require(_0x608b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x608b('0x3'));var db=require(_0x608b('0x4'))['db'];var utils=require(_0x608b('0x5'));var logger=require(_0x608b('0x6'))(_0x608b('0x7'));var config=require('../../config/environment');var jayson=require(_0x608b('0x8'));var client=jayson[_0x608b('0x9')][_0x608b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x372421,_0x475751,_0x1dc842){return new BPromise(function(_0x408813,_0x41669d){return client['request'](_0x372421,_0x1dc842)['then'](function(_0x430b96){logger['info'](_0x608b('0xb'),_0x475751,_0x608b('0xc'));logger[_0x608b('0xd')](_0x608b('0xe'),_0x475751,_0x608b('0xc'),JSON[_0x608b('0xf')](_0x430b96));if(_0x430b96[_0x608b('0x10')]){if(_0x430b96[_0x608b('0x10')][_0x608b('0x11')]===0x1f4){logger[_0x608b('0x10')](_0x608b('0xb'),_0x475751,_0x430b96[_0x608b('0x10')][_0x608b('0x12')]);return _0x41669d(_0x430b96[_0x608b('0x10')][_0x608b('0x12')]);}logger[_0x608b('0x10')](_0x608b('0xb'),_0x475751,_0x430b96[_0x608b('0x10')][_0x608b('0x12')]);return _0x408813(_0x430b96[_0x608b('0x10')][_0x608b('0x12')]);}else{logger[_0x608b('0x13')](_0x608b('0xb'),_0x475751,'request\x20sent');_0x408813(_0x430b96[_0x608b('0x14')][_0x608b('0x12')]);}})[_0x608b('0x15')](function(_0x4cb519){logger[_0x608b('0x10')](_0x608b('0xb'),_0x475751,_0x4cb519);_0x41669d(_0x4cb519);});});}exports[_0x608b('0x16')]=function(_0x470575){var _0x589484=this;return new Promise(function(_0x56e13c,_0x2bc0ee){return db[_0x608b('0x17')][_0x608b('0x18')]({'raw':_0x470575[_0x608b('0x19')]?_0x470575[_0x608b('0x19')][_0x608b('0x1a')]===undefined?!![]:![]:!![],'where':_0x470575[_0x608b('0x19')]?_0x470575['options']['where']||null:null,'attributes':_0x470575[_0x608b('0x19')]?_0x470575[_0x608b('0x19')]['attributes']||null:null,'limit':_0x470575['options']?_0x470575['options'][_0x608b('0x1b')]||null:null,'include':_0x470575[_0x608b('0x19')]?_0x470575[_0x608b('0x19')][_0x608b('0x1c')]?_[_0x608b('0x1d')](_0x470575[_0x608b('0x19')][_0x608b('0x1c')],function(_0x48778a){return{'model':db[_0x48778a[_0x608b('0x1e')]],'as':_0x48778a['as'],'attributes':_0x48778a[_0x608b('0x1f')],'include':_0x48778a['include']?_[_0x608b('0x1d')](_0x48778a[_0x608b('0x1c')],function(_0x5905a9){return{'model':db[_0x5905a9[_0x608b('0x1e')]],'as':_0x5905a9['as'],'attributes':_0x5905a9[_0x608b('0x1f')],'include':_0x5905a9[_0x608b('0x1c')]?_[_0x608b('0x1d')](_0x5905a9[_0x608b('0x1c')],function(_0x154a79){return{'model':db[_0x154a79['model']],'as':_0x154a79['as'],'attributes':_0x154a79['attributes']};}):[]};}):[]};}):[]:[]})[_0x608b('0x20')](function(_0x2209be){logger[_0x608b('0x13')](_0x608b('0x16'),_0x470575);logger[_0x608b('0xd')](_0x608b('0x16'),_0x470575,JSON['stringify'](_0x2209be));_0x56e13c(_0x2209be);})[_0x608b('0x15')](function(_0x29fe0c){logger[_0x608b('0x10')](_0x608b('0x16'),_0x29fe0c['message'],_0x470575);_0x2bc0ee(_0x589484['error'](0x1f4,_0x29fe0c[_0x608b('0x12')]));});});};exports[_0x608b('0x21')]=function(_0x42a556){var _0x23efcd=this;return new Promise(function(_0x5486d4,_0x50529b){return db[_0x608b('0x17')][_0x608b('0x22')]({'raw':_0x42a556['options']?_0x42a556[_0x608b('0x19')][_0x608b('0x1a')]===undefined?!![]:![]:!![],'where':_0x42a556[_0x608b('0x19')]?_0x42a556[_0x608b('0x19')][_0x608b('0x23')]||null:null,'attributes':_0x42a556[_0x608b('0x19')]?_0x42a556['options']['attributes']||null:null,'include':_0x42a556[_0x608b('0x19')]?_0x42a556['options'][_0x608b('0x1c')]?_['map'](_0x42a556[_0x608b('0x19')]['include'],function(_0x28f227){return{'model':db[_0x28f227['model']],'as':_0x28f227['as'],'attributes':_0x28f227[_0x608b('0x1f')],'include':_0x28f227['include']?_[_0x608b('0x1d')](_0x28f227[_0x608b('0x1c')],function(_0xe46c80){return{'model':db[_0xe46c80[_0x608b('0x1e')]],'as':_0xe46c80['as'],'attributes':_0xe46c80[_0x608b('0x1f')],'include':_0xe46c80[_0x608b('0x1c')]?_[_0x608b('0x1d')](_0xe46c80[_0x608b('0x1c')],function(_0xd12e1){return{'model':db[_0xd12e1[_0x608b('0x1e')]],'as':_0xd12e1['as'],'attributes':_0xd12e1['attributes']};}):[]};}):[]};}):[]:[]})[_0x608b('0x20')](function(_0x263975){logger[_0x608b('0x13')]('ShowZendeskAccount',_0x42a556);logger[_0x608b('0xd')](_0x608b('0x21'),_0x42a556,JSON[_0x608b('0xf')](_0x263975));_0x5486d4(_0x263975);})['catch'](function(_0x1c6681){logger[_0x608b('0x10')]('ShowZendeskAccount',_0x1c6681['message'],_0x42a556);_0x50529b(_0x23efcd[_0x608b('0x10')](0x1f4,_0x1c6681[_0x608b('0x12')]));});});};
\ No newline at end of file
+var _0x2444=['error','code','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','include','model','attributes','map','stringify','ShowZendeskAccount','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s'];(function(_0x485e4c,_0xf850c6){var _0x186efb=function(_0x9e5d29){while(--_0x9e5d29){_0x485e4c['push'](_0x485e4c['shift']());}};_0x186efb(++_0xf850c6);}(_0x2444,0x170));var _0x4244=function(_0x430141,_0x113c29){_0x430141=_0x430141-0x0;var _0x1e55f1=_0x2444[_0x430141];return _0x1e55f1;};'use strict';var _=require(_0x4244('0x0'));var util=require(_0x4244('0x1'));var moment=require(_0x4244('0x2'));var BPromise=require(_0x4244('0x3'));var rs=require(_0x4244('0x4'));var fs=require('fs');var Redis=require(_0x4244('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4244('0x6'));var logger=require('../../config/logger')(_0x4244('0x7'));var config=require(_0x4244('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4244('0x9')][_0x4244('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x48cb08,_0x108595,_0x22331d){return new BPromise(function(_0x5bfc19,_0x42889e){return client[_0x4244('0xb')](_0x48cb08,_0x22331d)[_0x4244('0xc')](function(_0x202d7a){logger['info'](_0x4244('0xd'),_0x108595,_0x4244('0xe'));logger[_0x4244('0xf')](_0x4244('0x10'),_0x108595,'request\x20sent',JSON['stringify'](_0x202d7a));if(_0x202d7a[_0x4244('0x11')]){if(_0x202d7a[_0x4244('0x11')][_0x4244('0x12')]===0x1f4){logger[_0x4244('0x11')](_0x4244('0xd'),_0x108595,_0x202d7a[_0x4244('0x11')]['message']);return _0x42889e(_0x202d7a[_0x4244('0x11')][_0x4244('0x13')]);}logger[_0x4244('0x11')](_0x4244('0xd'),_0x108595,_0x202d7a[_0x4244('0x11')][_0x4244('0x13')]);return _0x5bfc19(_0x202d7a[_0x4244('0x11')][_0x4244('0x13')]);}else{logger[_0x4244('0x14')](_0x4244('0xd'),_0x108595,_0x4244('0xe'));_0x5bfc19(_0x202d7a[_0x4244('0x15')][_0x4244('0x13')]);}})[_0x4244('0x16')](function(_0x5d8494){logger[_0x4244('0x11')](_0x4244('0xd'),_0x108595,_0x5d8494);_0x42889e(_0x5d8494);});});}exports[_0x4244('0x17')]=function(_0x21ab33){var _0xef5ddf=this;return new Promise(function(_0x890fe5,_0x261c3d){return db[_0x4244('0x18')][_0x4244('0x19')]({'raw':_0x21ab33[_0x4244('0x1a')]?_0x21ab33[_0x4244('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x21ab33[_0x4244('0x1a')]?_0x21ab33[_0x4244('0x1a')]['where']||null:null,'attributes':_0x21ab33[_0x4244('0x1a')]?_0x21ab33['options']['attributes']||null:null,'limit':_0x21ab33['options']?_0x21ab33['options']['limit']||null:null,'include':_0x21ab33[_0x4244('0x1a')]?_0x21ab33[_0x4244('0x1a')][_0x4244('0x1b')]?_['map'](_0x21ab33[_0x4244('0x1a')][_0x4244('0x1b')],function(_0x264f48){return{'model':db[_0x264f48[_0x4244('0x1c')]],'as':_0x264f48['as'],'attributes':_0x264f48[_0x4244('0x1d')],'include':_0x264f48[_0x4244('0x1b')]?_[_0x4244('0x1e')](_0x264f48[_0x4244('0x1b')],function(_0x302871){return{'model':db[_0x302871[_0x4244('0x1c')]],'as':_0x302871['as'],'attributes':_0x302871[_0x4244('0x1d')],'include':_0x302871[_0x4244('0x1b')]?_['map'](_0x302871[_0x4244('0x1b')],function(_0x3e315c){return{'model':db[_0x3e315c[_0x4244('0x1c')]],'as':_0x3e315c['as'],'attributes':_0x3e315c['attributes']};}):[]};}):[]};}):[]:[]})[_0x4244('0xc')](function(_0x5e99a0){logger[_0x4244('0x14')](_0x4244('0x17'),_0x21ab33);logger[_0x4244('0xf')]('GetZendeskAccount',_0x21ab33,JSON[_0x4244('0x1f')](_0x5e99a0));_0x890fe5(_0x5e99a0);})['catch'](function(_0x4db863){logger[_0x4244('0x11')](_0x4244('0x17'),_0x4db863[_0x4244('0x13')],_0x21ab33);_0x261c3d(_0xef5ddf[_0x4244('0x11')](0x1f4,_0x4db863[_0x4244('0x13')]));});});};exports[_0x4244('0x20')]=function(_0x30d7c1){var _0x2b625d=this;return new Promise(function(_0x4b26b4,_0x1d49b9){return db[_0x4244('0x18')][_0x4244('0x21')]({'raw':_0x30d7c1[_0x4244('0x1a')]?_0x30d7c1[_0x4244('0x1a')][_0x4244('0x22')]===undefined?!![]:![]:!![],'where':_0x30d7c1[_0x4244('0x1a')]?_0x30d7c1[_0x4244('0x1a')]['where']||null:null,'attributes':_0x30d7c1['options']?_0x30d7c1[_0x4244('0x1a')]['attributes']||null:null,'include':_0x30d7c1['options']?_0x30d7c1['options'][_0x4244('0x1b')]?_[_0x4244('0x1e')](_0x30d7c1['options'][_0x4244('0x1b')],function(_0x15e860){return{'model':db[_0x15e860[_0x4244('0x1c')]],'as':_0x15e860['as'],'attributes':_0x15e860[_0x4244('0x1d')],'include':_0x15e860['include']?_[_0x4244('0x1e')](_0x15e860[_0x4244('0x1b')],function(_0x2f9f4d){return{'model':db[_0x2f9f4d[_0x4244('0x1c')]],'as':_0x2f9f4d['as'],'attributes':_0x2f9f4d[_0x4244('0x1d')],'include':_0x2f9f4d[_0x4244('0x1b')]?_[_0x4244('0x1e')](_0x2f9f4d['include'],function(_0x23cc0d){return{'model':db[_0x23cc0d[_0x4244('0x1c')]],'as':_0x23cc0d['as'],'attributes':_0x23cc0d['attributes']};}):[]};}):[]};}):[]:[]})[_0x4244('0xc')](function(_0x97374e){logger[_0x4244('0x14')](_0x4244('0x20'),_0x30d7c1);logger[_0x4244('0xf')](_0x4244('0x20'),_0x30d7c1,JSON[_0x4244('0x1f')](_0x97374e));_0x4b26b4(_0x97374e);})[_0x4244('0x16')](function(_0x3ac67c){logger['error']('ShowZendeskAccount',_0x3ac67c[_0x4244('0x13')],_0x30d7c1);_0x1d49b9(_0x2b625d[_0x4244('0x11')](0x1f4,_0x3ac67c[_0x4244('0x13')]));});});};
\ No newline at end of file
index 9da406a..20d232c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['util','path','connect-timeout','Router','../../components/auth/service','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','put','update','destroy','exports'];(function(_0x29f495,_0x53e7b5){var _0x385dbd=function(_0xc9f1f1){while(--_0xc9f1f1){_0x29f495['push'](_0x29f495['shift']());}};_0x385dbd(++_0x53e7b5);}(_0x91a7,0xe7));var _0x791a=function(_0x2f4e6a,_0x2cdc80){_0x2f4e6a=_0x2f4e6a-0x0;var _0x3f945e=_0x91a7[_0x2f4e6a];return _0x3f945e;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['show']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/subjects',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['get'](_0x791a('0xd'),auth[_0x791a('0x9')](),controller[_0x791a('0xe')]);router[_0x791a('0x6')](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['getTags']);router['post']('/',auth[_0x791a('0x9')](),controller[_0x791a('0x10')]);router['post'](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['setTags']);router[_0x791a('0x11')](_0x791a('0x8'),auth[_0x791a('0x9')](),controller[_0x791a('0x12')]);router['delete'](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0x13')]);module[_0x791a('0x14')]=router;
\ No newline at end of file
+var _0x5c00=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects','/:id/tags','post','create','setTags','put','/:id','delete','destroy','exports','multer','util'];(function(_0x5c6817,_0x15f79f){var _0x3da84c=function(_0x411bcb){while(--_0x411bcb){_0x5c6817['push'](_0x5c6817['shift']());}};_0x3da84c(++_0x15f79f);}(_0x5c00,0x17e));var _0x05c0=function(_0x17dcd1,_0x3b7ccb){_0x17dcd1=_0x17dcd1-0x0;var _0x12af77=_0x5c00[_0x17dcd1];return _0x12af77;};'use strict';var multer=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var path=require(_0x05c0('0x2'));var timeout=require('connect-timeout');var express=require(_0x05c0('0x3'));var router=express['Router']();var fs_extra=require(_0x05c0('0x4'));var auth=require(_0x05c0('0x5'));var interaction=require(_0x05c0('0x6'));var config=require(_0x05c0('0x7'));var controller=require('./intZendeskConfiguration.controller');router[_0x05c0('0x8')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0xa')]);router[_0x05c0('0x8')]('/:id',auth[_0x05c0('0x9')](),controller[_0x05c0('0xb')]);router[_0x05c0('0x8')]('/:id/fields',auth[_0x05c0('0x9')](),controller[_0x05c0('0xc')]);router[_0x05c0('0x8')](_0x05c0('0xd'),auth[_0x05c0('0x9')](),controller[_0x05c0('0xe')]);router['get']('/:id/descriptions',auth[_0x05c0('0x9')](),controller['getDescriptions']);router[_0x05c0('0x8')](_0x05c0('0xf'),auth[_0x05c0('0x9')](),controller['getTags']);router[_0x05c0('0x10')]('/',auth['isAuthenticated'](),controller[_0x05c0('0x11')]);router[_0x05c0('0x10')](_0x05c0('0xf'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x12')]);router[_0x05c0('0x13')](_0x05c0('0x14'),auth[_0x05c0('0x9')](),controller['update']);router[_0x05c0('0x15')](_0x05c0('0x14'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x16')]);module[_0x05c0('0x17')]=router;
\ No newline at end of file
index 0c39f09..fc957de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9783=['sequelize','STRING'];(function(_0x5b27cf,_0x99c894){var _0x10dcda=function(_0x38955a){while(--_0x38955a){_0x5b27cf['push'](_0x5b27cf['shift']());}};_0x10dcda(++_0x99c894);}(_0x9783,0x104));var _0x3978=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9783[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3978('0x0'));module['exports']={'name':{'type':Sequelize[_0x3978('0x1')]},'description':{'type':Sequelize[_0x3978('0x1')]}};
\ No newline at end of file
+var _0xcd00=['STRING','sequelize','exports'];(function(_0x2353fe,_0x4b0bca){var _0x4d43f6=function(_0x5d0bd9){while(--_0x5d0bd9){_0x2353fe['push'](_0x2353fe['shift']());}};_0x4d43f6(++_0x4b0bca);}(_0xcd00,0x11b));var _0x0cd0=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xcd00[_0x19950b];return _0x3c6b41;};'use strict';var Sequelize=require(_0x0cd0('0x0'));module[_0x0cd0('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0cd0('0x2')]}};
\ No newline at end of file
index 1157a48..3175003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb94c=['rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','index','map','ZendeskConfiguration','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','destroy','getFields','ZendeskField','rawAttributes','order','getSubjects','findOne','nolimit','getDescriptions','getTags','Tag','setTags','eml-format'];(function(_0x4de823,_0x347172){var _0x307699=function(_0x3a64dc){while(--_0x3a64dc){_0x4de823['push'](_0x4de823['shift']());}};_0x307699(++_0x347172);}(_0xb94c,0x10a));var _0xcb94=function(_0x589cd2,_0x340f8a){_0x589cd2=_0x589cd2-0x0;var _0x4739bc=_0xb94c[_0x589cd2];return _0x4739bc;};'use strict';var emlformat=require(_0xcb94('0x0'));var rimraf=require(_0xcb94('0x1'));var zipdir=require(_0xcb94('0x2'));var jsonpatch=require(_0xcb94('0x3'));var rp=require('request-promise');var moment=require(_0xcb94('0x4'));var BPromise=require(_0xcb94('0x5'));var Mustache=require(_0xcb94('0x6'));var util=require(_0xcb94('0x7'));var path=require(_0xcb94('0x8'));var sox=require(_0xcb94('0x9'));var csv=require(_0xcb94('0xa'));var ejs=require(_0xcb94('0xb'));var fs=require('fs');var fs_extra=require(_0xcb94('0xc'));var _=require(_0xcb94('0xd'));var squel=require(_0xcb94('0xe'));var crypto=require(_0xcb94('0xf'));var jsforce=require(_0xcb94('0x10'));var deskjs=require(_0xcb94('0x11'));var toCsv=require(_0xcb94('0xa'));var querystring=require(_0xcb94('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcb94('0x13'));var qs=require(_0xcb94('0x14'));var as=require(_0xcb94('0x15'));var hardwareService=require(_0xcb94('0x16'));var logger=require('../../config/logger')(_0xcb94('0x17'));var utils=require(_0xcb94('0x18'));var config=require(_0xcb94('0x19'));var licenseUtil=require(_0xcb94('0x1a'));var db=require(_0xcb94('0x1b'))['db'];function respondWithStatusCode(_0x1cde20,_0x5331ba){_0x5331ba=_0x5331ba||0xcc;return function(_0x556d1b){if(_0x556d1b){return _0x1cde20[_0xcb94('0x1c')](_0x5331ba);}return _0x1cde20[_0xcb94('0x1d')](_0x5331ba)[_0xcb94('0x1e')]();};}function respondWithResult(_0x3444d7,_0x166eed){_0x166eed=_0x166eed||0xc8;return function(_0x1ce425){if(_0x1ce425){return _0x3444d7[_0xcb94('0x1d')](_0x166eed)[_0xcb94('0x1f')](_0x1ce425);}};}function respondWithFilteredResult(_0x2743e7,_0x29f3bc){return function(_0x1cc4a4){if(_0x1cc4a4){var _0x3bb05b=typeof _0x29f3bc[_0xcb94('0x20')]===_0xcb94('0x21')&&typeof _0x29f3bc[_0xcb94('0x22')]==='undefined';var _0x3bfd70=_0x1cc4a4[_0xcb94('0x23')];var _0x506158=_0x3bb05b?0x0:_0x29f3bc[_0xcb94('0x20')];var _0x11c8e5=_0x3bb05b?_0x1cc4a4[_0xcb94('0x23')]:_0x29f3bc[_0xcb94('0x20')]+_0x29f3bc[_0xcb94('0x22')];var _0x149e97;if(_0x11c8e5>=_0x3bfd70){_0x11c8e5=_0x3bfd70;_0x149e97=0xc8;}else{_0x149e97=0xce;}_0x2743e7[_0xcb94('0x1d')](_0x149e97);return _0x2743e7[_0xcb94('0x24')](_0xcb94('0x25'),_0x506158+'-'+_0x11c8e5+'/'+_0x3bfd70)[_0xcb94('0x1f')](_0x1cc4a4);}return null;};}function patchUpdates(_0x5851cc){return function(_0x4c5fb8){try{jsonpatch[_0xcb94('0x26')](_0x4c5fb8,_0x5851cc,!![]);}catch(_0x1e5dd8){return BPromise[_0xcb94('0x27')](_0x1e5dd8);}return _0x4c5fb8[_0xcb94('0x28')]();};}function saveUpdates(_0x3e11f9,_0x5bc6be){return function(_0x18ad26){if(_0x18ad26){return _0x18ad26['update'](_0x3e11f9)[_0xcb94('0x29')](function(_0x3407d5){return _0x3407d5;});}return null;};}function removeEntity(_0x2cfca8,_0x2a460d){return function(_0x3f2f1b){if(_0x3f2f1b){return _0x3f2f1b['destroy']()[_0xcb94('0x29')](function(){_0x2cfca8[_0xcb94('0x1d')](0xcc)[_0xcb94('0x1e')]();});}};}function handleEntityNotFound(_0x278eb4,_0x436c57){return function(_0x257fc7){if(!_0x257fc7){_0x278eb4[_0xcb94('0x1c')](0x194);}return _0x257fc7;};}function handleError(_0x57fc14,_0x41c2db){_0x41c2db=_0x41c2db||0x1f4;return function(_0x8d19ef){logger[_0xcb94('0x2a')](_0x8d19ef[_0xcb94('0x2b')]);if(_0x8d19ef['name']){delete _0x8d19ef[_0xcb94('0x2c')];}_0x57fc14[_0xcb94('0x1d')](_0x41c2db)['send'](_0x8d19ef);};}exports[_0xcb94('0x2d')]=function(_0x18b6d4,_0x4a4848){var _0x2dbfc1={},_0x4e9d09={},_0x29721a={'count':0x0,'rows':[]};var _0x25d875=_[_0xcb94('0x2e')](db[_0xcb94('0x2f')]['rawAttributes'],function(_0x149096){return{'name':_0x149096[_0xcb94('0x30')],'type':_0x149096[_0xcb94('0x31')][_0xcb94('0x32')]};});_0x4e9d09['model']=_['map'](_0x25d875,_0xcb94('0x2c'));_0x4e9d09[_0xcb94('0x33')]=_['keys'](_0x18b6d4['query']);_0x4e9d09['filters']=_['intersection'](_0x4e9d09[_0xcb94('0x34')],_0x4e9d09[_0xcb94('0x33')]);_0x2dbfc1[_0xcb94('0x35')]=_[_0xcb94('0x36')](_0x4e9d09[_0xcb94('0x34')],qs[_0xcb94('0x37')](_0x18b6d4['query'][_0xcb94('0x37')]));_0x2dbfc1[_0xcb94('0x35')]=_0x2dbfc1['attributes'][_0xcb94('0x38')]?_0x2dbfc1[_0xcb94('0x35')]:_0x4e9d09['model'];if(!_0x18b6d4[_0xcb94('0x33')][_0xcb94('0x39')]('nolimit')){_0x2dbfc1[_0xcb94('0x22')]=qs['limit'](_0x18b6d4['query']['limit']);_0x2dbfc1[_0xcb94('0x20')]=qs[_0xcb94('0x20')](_0x18b6d4[_0xcb94('0x33')]['offset']);}_0x2dbfc1['order']=qs[_0xcb94('0x3a')](_0x18b6d4[_0xcb94('0x33')][_0xcb94('0x3a')]);_0x2dbfc1[_0xcb94('0x3b')]=qs[_0xcb94('0x3c')](_[_0xcb94('0x3d')](_0x18b6d4[_0xcb94('0x33')],_0x4e9d09[_0xcb94('0x3c')]),_0x25d875);if(_0x18b6d4['query']['filter']){_0x2dbfc1[_0xcb94('0x3b')]=_['merge'](_0x2dbfc1[_0xcb94('0x3b')],{'$or':_[_0xcb94('0x2e')](_0x25d875,function(_0x36e039){if(_0x36e039[_0xcb94('0x31')]!==_0xcb94('0x3e')){var _0x55ce10={};_0x55ce10[_0x36e039[_0xcb94('0x2c')]]={'$like':'%'+_0x18b6d4[_0xcb94('0x33')][_0xcb94('0x3f')]+'%'};return _0x55ce10;}})});}_0x2dbfc1=_[_0xcb94('0x40')]({},_0x2dbfc1,_0x18b6d4[_0xcb94('0x41')]);var _0x3b8637={'where':_0x2dbfc1[_0xcb94('0x3b')]};return db[_0xcb94('0x2f')]['count'](_0x3b8637)[_0xcb94('0x29')](function(_0x58ceec){_0x29721a[_0xcb94('0x23')]=_0x58ceec;if(_0x18b6d4[_0xcb94('0x33')][_0xcb94('0x42')]){_0x2dbfc1[_0xcb94('0x43')]=[{'all':!![]}];}return db[_0xcb94('0x2f')][_0xcb94('0x44')](_0x2dbfc1);})[_0xcb94('0x29')](function(_0x71507a){_0x29721a[_0xcb94('0x45')]=_0x71507a;return _0x29721a;})[_0xcb94('0x29')](respondWithFilteredResult(_0x4a4848,_0x2dbfc1))[_0xcb94('0x46')](handleError(_0x4a4848,null));};exports[_0xcb94('0x47')]=function(_0x13ff04,_0x3e68f1){var _0x4170b7={'raw':![],'where':{'id':_0x13ff04[_0xcb94('0x48')]['id']}},_0x33fe06={};_0x33fe06[_0xcb94('0x34')]=_['keys'](db['ZendeskConfiguration']['rawAttributes']);_0x33fe06['query']=_[_0xcb94('0x49')](_0x13ff04[_0xcb94('0x33')]);_0x33fe06['filters']=_[_0xcb94('0x36')](_0x33fe06['model'],_0x33fe06[_0xcb94('0x33')]);_0x4170b7[_0xcb94('0x35')]=_[_0xcb94('0x36')](_0x33fe06[_0xcb94('0x34')],qs[_0xcb94('0x37')](_0x13ff04[_0xcb94('0x33')]['fields']));_0x4170b7[_0xcb94('0x35')]=_0x4170b7[_0xcb94('0x35')][_0xcb94('0x38')]?_0x4170b7[_0xcb94('0x35')]:_0x33fe06[_0xcb94('0x34')];if(_0x13ff04[_0xcb94('0x33')][_0xcb94('0x42')]){_0x4170b7[_0xcb94('0x43')]=[{'all':!![]}];}_0x4170b7=_[_0xcb94('0x40')]({},_0x4170b7,_0x13ff04['options']);return db[_0xcb94('0x2f')]['find'](_0x4170b7)[_0xcb94('0x29')](handleEntityNotFound(_0x3e68f1,null))[_0xcb94('0x29')](respondWithResult(_0x3e68f1,null))[_0xcb94('0x46')](handleError(_0x3e68f1,null));};exports[_0xcb94('0x4a')]=function(_0x5bed92,_0x195855){return db[_0xcb94('0x2f')]['create'](_0x5bed92[_0xcb94('0x4b')],{})[_0xcb94('0x29')](respondWithResult(_0x195855,0xc9))[_0xcb94('0x46')](handleError(_0x195855,null));};exports['update']=function(_0x22d3aa,_0x3d6148){if(_0x22d3aa[_0xcb94('0x4b')]['id']){delete _0x22d3aa[_0xcb94('0x4b')]['id'];}return db[_0xcb94('0x2f')][_0xcb94('0x4c')]({'where':{'id':_0x22d3aa[_0xcb94('0x48')]['id']}})[_0xcb94('0x29')](handleEntityNotFound(_0x3d6148,null))[_0xcb94('0x29')](saveUpdates(_0x22d3aa[_0xcb94('0x4b')],null))[_0xcb94('0x29')](respondWithResult(_0x3d6148,null))[_0xcb94('0x46')](handleError(_0x3d6148,null));};exports[_0xcb94('0x4d')]=function(_0x3a646c,_0x3e77b4){return db['ZendeskConfiguration'][_0xcb94('0x4c')]({'where':{'id':_0x3a646c[_0xcb94('0x48')]['id']}})[_0xcb94('0x29')](handleEntityNotFound(_0x3e77b4,null))[_0xcb94('0x29')](removeEntity(_0x3e77b4,null))[_0xcb94('0x46')](handleError(_0x3e77b4,null));};exports[_0xcb94('0x4e')]=function(_0x3d4b15,_0x59771d,_0x38d5f7){var _0x39adc0={};var _0x40b78b={};var _0x4536ec;var _0x70d5e5;return db[_0xcb94('0x2f')]['findOne']({'where':{'id':_0x3d4b15[_0xcb94('0x48')]['id']}})[_0xcb94('0x29')](handleEntityNotFound(_0x59771d,null))[_0xcb94('0x29')](function(_0x5e3fd6){if(_0x5e3fd6){_0x4536ec=_0x5e3fd6;_0x40b78b['model']=_['keys'](db[_0xcb94('0x4f')][_0xcb94('0x50')]);_0x40b78b['query']=_[_0xcb94('0x49')](_0x3d4b15[_0xcb94('0x33')]);_0x40b78b[_0xcb94('0x3c')]=_['intersection'](_0x40b78b['model'],_0x40b78b[_0xcb94('0x33')]);_0x39adc0['attributes']=_[_0xcb94('0x36')](_0x40b78b[_0xcb94('0x34')],qs[_0xcb94('0x37')](_0x3d4b15[_0xcb94('0x33')][_0xcb94('0x37')]));_0x39adc0['attributes']=_0x39adc0[_0xcb94('0x35')]['length']?_0x39adc0[_0xcb94('0x35')]:_0x40b78b[_0xcb94('0x34')];_0x39adc0[_0xcb94('0x51')]=qs[_0xcb94('0x3a')](_0x3d4b15['query']['sort']);_0x39adc0['where']=qs[_0xcb94('0x3c')](_[_0xcb94('0x3d')](_0x3d4b15[_0xcb94('0x33')],_0x40b78b[_0xcb94('0x3c')]));if(_0x3d4b15[_0xcb94('0x33')]['filter']){_0x39adc0[_0xcb94('0x3b')]=_[_0xcb94('0x40')](_0x39adc0['where'],{'$or':_['map'](_0x39adc0[_0xcb94('0x35')],function(_0x16406a){var _0xd5432a={};_0xd5432a[_0x16406a]={'$like':'%'+_0x3d4b15[_0xcb94('0x33')][_0xcb94('0x3f')]+'%'};return _0xd5432a;})});}_0x39adc0=_['merge']({},_0x39adc0,_0x3d4b15[_0xcb94('0x41')]);return _0x4536ec[_0xcb94('0x4e')](_0x39adc0);}})[_0xcb94('0x29')](function(_0x550a53){if(_0x550a53){_0x70d5e5=_0x550a53['length'];if(!_0x3d4b15['query'][_0xcb94('0x39')]('nolimit')){_0x39adc0['limit']=qs['limit'](_0x3d4b15['query']['limit']);_0x39adc0[_0xcb94('0x20')]=qs['offset'](_0x3d4b15[_0xcb94('0x33')][_0xcb94('0x20')]);}return _0x4536ec[_0xcb94('0x4e')](_0x39adc0);}})[_0xcb94('0x29')](function(_0x300269){if(_0x300269){return _0x300269?{'count':_0x70d5e5,'rows':_0x300269}:null;}})[_0xcb94('0x29')](respondWithResult(_0x59771d,null))['catch'](handleError(_0x59771d,null));};exports[_0xcb94('0x52')]=function(_0x163464,_0x2a6a0b,_0x4e4e46){var _0x2c45aa={};var _0x57cbc2={};var _0x4d97ad;var _0x5cc991;return db[_0xcb94('0x2f')][_0xcb94('0x53')]({'where':{'id':_0x163464[_0xcb94('0x48')]['id']}})[_0xcb94('0x29')](handleEntityNotFound(_0x2a6a0b,null))[_0xcb94('0x29')](function(_0xa3b816){if(_0xa3b816){_0x4d97ad=_0xa3b816;_0x57cbc2[_0xcb94('0x34')]=_[_0xcb94('0x49')](db[_0xcb94('0x4f')]['rawAttributes']);_0x57cbc2[_0xcb94('0x33')]=_[_0xcb94('0x49')](_0x163464[_0xcb94('0x33')]);_0x57cbc2[_0xcb94('0x3c')]=_[_0xcb94('0x36')](_0x57cbc2[_0xcb94('0x34')],_0x57cbc2[_0xcb94('0x33')]);_0x2c45aa[_0xcb94('0x35')]=_[_0xcb94('0x36')](_0x57cbc2[_0xcb94('0x34')],qs['fields'](_0x163464['query'][_0xcb94('0x37')]));_0x2c45aa[_0xcb94('0x35')]=_0x2c45aa['attributes'][_0xcb94('0x38')]?_0x2c45aa[_0xcb94('0x35')]:_0x57cbc2['model'];_0x2c45aa[_0xcb94('0x51')]=qs[_0xcb94('0x3a')](_0x163464['query'][_0xcb94('0x3a')]);_0x2c45aa[_0xcb94('0x3b')]=qs[_0xcb94('0x3c')](_[_0xcb94('0x3d')](_0x163464[_0xcb94('0x33')],_0x57cbc2[_0xcb94('0x3c')]));if(_0x163464[_0xcb94('0x33')][_0xcb94('0x3f')]){_0x2c45aa['where']=_[_0xcb94('0x40')](_0x2c45aa[_0xcb94('0x3b')],{'$or':_[_0xcb94('0x2e')](_0x2c45aa[_0xcb94('0x35')],function(_0x2638f3){var _0xe65321={};_0xe65321[_0x2638f3]={'$like':'%'+_0x163464[_0xcb94('0x33')][_0xcb94('0x3f')]+'%'};return _0xe65321;})});}_0x2c45aa=_[_0xcb94('0x40')]({},_0x2c45aa,_0x163464[_0xcb94('0x41')]);return _0x4d97ad[_0xcb94('0x52')](_0x2c45aa);}})[_0xcb94('0x29')](function(_0x4ad71b){if(_0x4ad71b){_0x5cc991=_0x4ad71b[_0xcb94('0x38')];if(!_0x163464[_0xcb94('0x33')][_0xcb94('0x39')](_0xcb94('0x54'))){_0x2c45aa['limit']=qs[_0xcb94('0x22')](_0x163464[_0xcb94('0x33')][_0xcb94('0x22')]);_0x2c45aa['offset']=qs['offset'](_0x163464[_0xcb94('0x33')][_0xcb94('0x20')]);}return _0x4d97ad[_0xcb94('0x52')](_0x2c45aa);}})['then'](function(_0x69d0d0){if(_0x69d0d0){return _0x69d0d0?{'count':_0x5cc991,'rows':_0x69d0d0}:null;}})[_0xcb94('0x29')](respondWithResult(_0x2a6a0b,null))[_0xcb94('0x46')](handleError(_0x2a6a0b,null));};exports[_0xcb94('0x55')]=function(_0x40d02b,_0x27ee4f,_0x224df7){var _0x4bffa0={};var _0x1887bf={};var _0x44d1cc;var _0x118b68;return db[_0xcb94('0x2f')]['findOne']({'where':{'id':_0x40d02b[_0xcb94('0x48')]['id']}})['then'](handleEntityNotFound(_0x27ee4f,null))[_0xcb94('0x29')](function(_0x21e5c0){if(_0x21e5c0){_0x44d1cc=_0x21e5c0;_0x1887bf[_0xcb94('0x34')]=_[_0xcb94('0x49')](db['ZendeskField']['rawAttributes']);_0x1887bf[_0xcb94('0x33')]=_[_0xcb94('0x49')](_0x40d02b[_0xcb94('0x33')]);_0x1887bf[_0xcb94('0x3c')]=_[_0xcb94('0x36')](_0x1887bf['model'],_0x1887bf[_0xcb94('0x33')]);_0x4bffa0[_0xcb94('0x35')]=_[_0xcb94('0x36')](_0x1887bf[_0xcb94('0x34')],qs['fields'](_0x40d02b['query'][_0xcb94('0x37')]));_0x4bffa0[_0xcb94('0x35')]=_0x4bffa0[_0xcb94('0x35')]['length']?_0x4bffa0[_0xcb94('0x35')]:_0x1887bf[_0xcb94('0x34')];_0x4bffa0[_0xcb94('0x51')]=qs[_0xcb94('0x3a')](_0x40d02b[_0xcb94('0x33')][_0xcb94('0x3a')]);_0x4bffa0['where']=qs[_0xcb94('0x3c')](_[_0xcb94('0x3d')](_0x40d02b[_0xcb94('0x33')],_0x1887bf[_0xcb94('0x3c')]));if(_0x40d02b['query']['filter']){_0x4bffa0[_0xcb94('0x3b')]=_[_0xcb94('0x40')](_0x4bffa0[_0xcb94('0x3b')],{'$or':_[_0xcb94('0x2e')](_0x4bffa0[_0xcb94('0x35')],function(_0x2e3981){var _0x64bff3={};_0x64bff3[_0x2e3981]={'$like':'%'+_0x40d02b[_0xcb94('0x33')][_0xcb94('0x3f')]+'%'};return _0x64bff3;})});}_0x4bffa0=_[_0xcb94('0x40')]({},_0x4bffa0,_0x40d02b['options']);return _0x44d1cc[_0xcb94('0x55')](_0x4bffa0);}})['then'](function(_0x34bc4){if(_0x34bc4){_0x118b68=_0x34bc4[_0xcb94('0x38')];if(!_0x40d02b['query'][_0xcb94('0x39')](_0xcb94('0x54'))){_0x4bffa0[_0xcb94('0x22')]=qs['limit'](_0x40d02b[_0xcb94('0x33')][_0xcb94('0x22')]);_0x4bffa0[_0xcb94('0x20')]=qs[_0xcb94('0x20')](_0x40d02b['query']['offset']);}return _0x44d1cc[_0xcb94('0x55')](_0x4bffa0);}})[_0xcb94('0x29')](function(_0x49081d){if(_0x49081d){return _0x49081d?{'count':_0x118b68,'rows':_0x49081d}:null;}})[_0xcb94('0x29')](respondWithResult(_0x27ee4f,null))['catch'](handleError(_0x27ee4f,null));};exports[_0xcb94('0x56')]=function(_0x4cbde2,_0x1dafe5,_0x1fe1e8){var _0x12fb7a={};var _0x349a0e={};var _0x1b9f7f;var _0x4491fb;return db[_0xcb94('0x2f')][_0xcb94('0x53')]({'where':{'id':_0x4cbde2[_0xcb94('0x48')]['id']}})['then'](handleEntityNotFound(_0x1dafe5,null))[_0xcb94('0x29')](function(_0x483b94){if(_0x483b94){_0x1b9f7f=_0x483b94;_0x349a0e[_0xcb94('0x34')]=_[_0xcb94('0x49')](db[_0xcb94('0x57')][_0xcb94('0x50')]);_0x349a0e[_0xcb94('0x33')]=_[_0xcb94('0x49')](_0x4cbde2[_0xcb94('0x33')]);_0x349a0e[_0xcb94('0x3c')]=_[_0xcb94('0x36')](_0x349a0e['model'],_0x349a0e[_0xcb94('0x33')]);_0x12fb7a['attributes']=_[_0xcb94('0x36')](_0x349a0e[_0xcb94('0x34')],qs[_0xcb94('0x37')](_0x4cbde2[_0xcb94('0x33')][_0xcb94('0x37')]));_0x12fb7a[_0xcb94('0x35')]=_0x12fb7a[_0xcb94('0x35')][_0xcb94('0x38')]?_0x12fb7a[_0xcb94('0x35')]:_0x349a0e['model'];_0x12fb7a[_0xcb94('0x51')]=qs[_0xcb94('0x3a')](_0x4cbde2[_0xcb94('0x33')][_0xcb94('0x3a')]);_0x12fb7a[_0xcb94('0x3b')]=qs[_0xcb94('0x3c')](_[_0xcb94('0x3d')](_0x4cbde2[_0xcb94('0x33')],_0x349a0e['filters']));if(_0x4cbde2[_0xcb94('0x33')][_0xcb94('0x3f')]){_0x12fb7a[_0xcb94('0x3b')]=_['merge'](_0x12fb7a['where'],{'$or':_[_0xcb94('0x2e')](_0x12fb7a[_0xcb94('0x35')],function(_0xb26c22){var _0x140e78={};_0x140e78[_0xb26c22]={'$like':'%'+_0x4cbde2[_0xcb94('0x33')]['filter']+'%'};return _0x140e78;})});}_0x12fb7a=_[_0xcb94('0x40')]({},_0x12fb7a,_0x4cbde2[_0xcb94('0x41')]);return _0x1b9f7f[_0xcb94('0x56')](_0x12fb7a);}})['then'](function(_0x1cc901){if(_0x1cc901){_0x4491fb=_0x1cc901['length'];if(!_0x4cbde2[_0xcb94('0x33')][_0xcb94('0x39')](_0xcb94('0x54'))){_0x12fb7a[_0xcb94('0x22')]=qs['limit'](_0x4cbde2[_0xcb94('0x33')]['limit']);_0x12fb7a[_0xcb94('0x20')]=qs[_0xcb94('0x20')](_0x4cbde2[_0xcb94('0x33')][_0xcb94('0x20')]);}return _0x1b9f7f[_0xcb94('0x56')](_0x12fb7a);}})[_0xcb94('0x29')](function(_0x4227c1){if(_0x4227c1){return _0x4227c1?{'count':_0x4491fb,'rows':_0x4227c1}:null;}})[_0xcb94('0x29')](respondWithResult(_0x1dafe5,null))['catch'](handleError(_0x1dafe5,null));};exports[_0xcb94('0x58')]=function(_0x5e3202,_0x26593f,_0x211d48){if(_0x5e3202[_0xcb94('0x4b')]['id']){delete _0x5e3202[_0xcb94('0x4b')]['id'];}return db[_0xcb94('0x2f')][_0xcb94('0x53')]({'where':{'id':_0x5e3202[_0xcb94('0x48')]['id']}})[_0xcb94('0x29')](handleEntityNotFound(_0x26593f,null))[_0xcb94('0x29')](function(_0x1f2c1f){if(_0x1f2c1f){return _0x1f2c1f['setTags'](_0x5e3202['body']['ids']||[]);}return null;})['then'](respondWithResult(_0x26593f,null))[_0xcb94('0x46')](handleError(_0x26593f,null));};
\ No newline at end of file
+var _0xffb5=['pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','body','catch','update','getFields','findOne','ZendeskField','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','crypto','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','apply','reject','save','then','destroy','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0xc83285,_0x3860f3){var _0x59ef36=function(_0x375eaf){while(--_0x375eaf){_0xc83285['push'](_0xc83285['shift']());}};_0x59ef36(++_0x3860f3);}(_0xffb5,0x1c6));var _0x5ffb=function(_0x5e2750,_0x3d1f6e){_0x5e2750=_0x5e2750-0x0;var _0x422d9e=_0xffb5[_0x5e2750];return _0x422d9e;};'use strict';var emlformat=require(_0x5ffb('0x0'));var rimraf=require(_0x5ffb('0x1'));var zipdir=require(_0x5ffb('0x2'));var jsonpatch=require(_0x5ffb('0x3'));var rp=require(_0x5ffb('0x4'));var moment=require(_0x5ffb('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5ffb('0x6'));var util=require(_0x5ffb('0x7'));var path=require(_0x5ffb('0x8'));var sox=require(_0x5ffb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5ffb('0xa'));var _=require(_0x5ffb('0xb'));var squel=require(_0x5ffb('0xc'));var crypto=require(_0x5ffb('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5ffb('0xe'));var querystring=require(_0x5ffb('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5ffb('0x10'));var qs=require(_0x5ffb('0x11'));var as=require(_0x5ffb('0x12'));var hardwareService=require(_0x5ffb('0x13'));var logger=require(_0x5ffb('0x14'))(_0x5ffb('0x15'));var utils=require(_0x5ffb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5ffb('0x17'));var db=require(_0x5ffb('0x18'))['db'];function respondWithStatusCode(_0x229d68,_0x1d6e81){_0x1d6e81=_0x1d6e81||0xcc;return function(_0x17cfb8){if(_0x17cfb8){return _0x229d68[_0x5ffb('0x19')](_0x1d6e81);}return _0x229d68[_0x5ffb('0x1a')](_0x1d6e81)[_0x5ffb('0x1b')]();};}function respondWithResult(_0x4fc2f2,_0x40ce43){_0x40ce43=_0x40ce43||0xc8;return function(_0x1a9e4d){if(_0x1a9e4d){return _0x4fc2f2[_0x5ffb('0x1a')](_0x40ce43)[_0x5ffb('0x1c')](_0x1a9e4d);}};}function respondWithFilteredResult(_0x719f77,_0x44458c){return function(_0x12a183){if(_0x12a183){var _0x1961b3=typeof _0x44458c[_0x5ffb('0x1d')]===_0x5ffb('0x1e')&&typeof _0x44458c['limit']===_0x5ffb('0x1e');var _0x40337d=_0x12a183[_0x5ffb('0x1f')];var _0x1c22d2=_0x1961b3?0x0:_0x44458c['offset'];var _0x4d6af0=_0x1961b3?_0x12a183[_0x5ffb('0x1f')]:_0x44458c['offset']+_0x44458c[_0x5ffb('0x20')];var _0x5b39a0;if(_0x4d6af0>=_0x40337d){_0x4d6af0=_0x40337d;_0x5b39a0=0xc8;}else{_0x5b39a0=0xce;}_0x719f77[_0x5ffb('0x1a')](_0x5b39a0);return _0x719f77['set']('Content-Range',_0x1c22d2+'-'+_0x4d6af0+'/'+_0x40337d)[_0x5ffb('0x1c')](_0x12a183);}return null;};}function patchUpdates(_0x358961){return function(_0x2a2182){try{jsonpatch[_0x5ffb('0x21')](_0x2a2182,_0x358961,!![]);}catch(_0x419b9d){return BPromise[_0x5ffb('0x22')](_0x419b9d);}return _0x2a2182[_0x5ffb('0x23')]();};}function saveUpdates(_0x2f598b,_0x4e0ef9){return function(_0x1394e2){if(_0x1394e2){return _0x1394e2['update'](_0x2f598b)[_0x5ffb('0x24')](function(_0x63b248){return _0x63b248;});}return null;};}function removeEntity(_0x35fe85,_0x4b4f24){return function(_0x2e8b00){if(_0x2e8b00){return _0x2e8b00[_0x5ffb('0x25')]()['then'](function(){_0x35fe85[_0x5ffb('0x1a')](0xcc)[_0x5ffb('0x1b')]();});}};}function handleEntityNotFound(_0x35a85a,_0x1a6504){return function(_0x399567){if(!_0x399567){_0x35a85a[_0x5ffb('0x19')](0x194);}return _0x399567;};}function handleError(_0x360d6e,_0x547a0c){_0x547a0c=_0x547a0c||0x1f4;return function(_0x286c19){logger[_0x5ffb('0x26')](_0x286c19[_0x5ffb('0x27')]);if(_0x286c19[_0x5ffb('0x28')]){delete _0x286c19[_0x5ffb('0x28')];}_0x360d6e[_0x5ffb('0x1a')](_0x547a0c)[_0x5ffb('0x29')](_0x286c19);};}exports[_0x5ffb('0x2a')]=function(_0x3943a2,_0xbfc09c){var _0xf90e2e={},_0x17e89={},_0x580c01={'count':0x0,'rows':[]};var _0x3ead32=_[_0x5ffb('0x2b')](db[_0x5ffb('0x2c')][_0x5ffb('0x2d')],function(_0x56c85f){return{'name':_0x56c85f[_0x5ffb('0x2e')],'type':_0x56c85f[_0x5ffb('0x2f')][_0x5ffb('0x30')]};});_0x17e89[_0x5ffb('0x31')]=_[_0x5ffb('0x2b')](_0x3ead32,'name');_0x17e89[_0x5ffb('0x32')]=_[_0x5ffb('0x33')](_0x3943a2[_0x5ffb('0x32')]);_0x17e89[_0x5ffb('0x34')]=_['intersection'](_0x17e89['model'],_0x17e89['query']);_0xf90e2e[_0x5ffb('0x35')]=_[_0x5ffb('0x36')](_0x17e89[_0x5ffb('0x31')],qs[_0x5ffb('0x37')](_0x3943a2[_0x5ffb('0x32')][_0x5ffb('0x37')]));_0xf90e2e[_0x5ffb('0x35')]=_0xf90e2e[_0x5ffb('0x35')][_0x5ffb('0x38')]?_0xf90e2e[_0x5ffb('0x35')]:_0x17e89[_0x5ffb('0x31')];if(!_0x3943a2[_0x5ffb('0x32')][_0x5ffb('0x39')](_0x5ffb('0x3a'))){_0xf90e2e[_0x5ffb('0x20')]=qs[_0x5ffb('0x20')](_0x3943a2[_0x5ffb('0x32')][_0x5ffb('0x20')]);_0xf90e2e[_0x5ffb('0x1d')]=qs[_0x5ffb('0x1d')](_0x3943a2[_0x5ffb('0x32')][_0x5ffb('0x1d')]);}_0xf90e2e[_0x5ffb('0x3b')]=qs['sort'](_0x3943a2['query'][_0x5ffb('0x3c')]);_0xf90e2e[_0x5ffb('0x3d')]=qs[_0x5ffb('0x34')](_[_0x5ffb('0x3e')](_0x3943a2[_0x5ffb('0x32')],_0x17e89[_0x5ffb('0x34')]),_0x3ead32);if(_0x3943a2['query'][_0x5ffb('0x3f')]){_0xf90e2e[_0x5ffb('0x3d')]=_[_0x5ffb('0x40')](_0xf90e2e[_0x5ffb('0x3d')],{'$or':_[_0x5ffb('0x2b')](_0x3ead32,function(_0x5e1731){if(_0x5e1731[_0x5ffb('0x2f')]!==_0x5ffb('0x41')){var _0xca932c={};_0xca932c[_0x5e1731[_0x5ffb('0x28')]]={'$like':'%'+_0x3943a2[_0x5ffb('0x32')][_0x5ffb('0x3f')]+'%'};return _0xca932c;}})});}_0xf90e2e=_['merge']({},_0xf90e2e,_0x3943a2[_0x5ffb('0x42')]);var _0x430d2e={'where':_0xf90e2e[_0x5ffb('0x3d')]};return db[_0x5ffb('0x2c')][_0x5ffb('0x1f')](_0x430d2e)[_0x5ffb('0x24')](function(_0xb1845b){_0x580c01[_0x5ffb('0x1f')]=_0xb1845b;if(_0x3943a2[_0x5ffb('0x32')][_0x5ffb('0x43')]){_0xf90e2e[_0x5ffb('0x44')]=[{'all':!![]}];}return db[_0x5ffb('0x2c')][_0x5ffb('0x45')](_0xf90e2e);})['then'](function(_0x5b642a){_0x580c01[_0x5ffb('0x46')]=_0x5b642a;return _0x580c01;})[_0x5ffb('0x24')](respondWithFilteredResult(_0xbfc09c,_0xf90e2e))['catch'](handleError(_0xbfc09c,null));};exports[_0x5ffb('0x47')]=function(_0x4d9c12,_0xb76a91){var _0x53d165={'raw':![],'where':{'id':_0x4d9c12[_0x5ffb('0x48')]['id']}},_0x477877={};_0x477877[_0x5ffb('0x31')]=_[_0x5ffb('0x33')](db[_0x5ffb('0x2c')][_0x5ffb('0x2d')]);_0x477877[_0x5ffb('0x32')]=_[_0x5ffb('0x33')](_0x4d9c12[_0x5ffb('0x32')]);_0x477877[_0x5ffb('0x34')]=_[_0x5ffb('0x36')](_0x477877[_0x5ffb('0x31')],_0x477877['query']);_0x53d165[_0x5ffb('0x35')]=_[_0x5ffb('0x36')](_0x477877[_0x5ffb('0x31')],qs[_0x5ffb('0x37')](_0x4d9c12[_0x5ffb('0x32')][_0x5ffb('0x37')]));_0x53d165[_0x5ffb('0x35')]=_0x53d165['attributes'][_0x5ffb('0x38')]?_0x53d165['attributes']:_0x477877[_0x5ffb('0x31')];if(_0x4d9c12['query'][_0x5ffb('0x43')]){_0x53d165[_0x5ffb('0x44')]=[{'all':!![]}];}_0x53d165=_[_0x5ffb('0x40')]({},_0x53d165,_0x4d9c12['options']);return db[_0x5ffb('0x2c')][_0x5ffb('0x49')](_0x53d165)[_0x5ffb('0x24')](handleEntityNotFound(_0xb76a91,null))[_0x5ffb('0x24')](respondWithResult(_0xb76a91,null))['catch'](handleError(_0xb76a91,null));};exports[_0x5ffb('0x4a')]=function(_0x45065c,_0xe81af){return db[_0x5ffb('0x2c')]['create'](_0x45065c[_0x5ffb('0x4b')],{})[_0x5ffb('0x24')](respondWithResult(_0xe81af,0xc9))[_0x5ffb('0x4c')](handleError(_0xe81af,null));};exports[_0x5ffb('0x4d')]=function(_0x44100f,_0x33f258){if(_0x44100f[_0x5ffb('0x4b')]['id']){delete _0x44100f['body']['id'];}return db['ZendeskConfiguration'][_0x5ffb('0x49')]({'where':{'id':_0x44100f[_0x5ffb('0x48')]['id']}})[_0x5ffb('0x24')](handleEntityNotFound(_0x33f258,null))['then'](saveUpdates(_0x44100f[_0x5ffb('0x4b')],null))[_0x5ffb('0x24')](respondWithResult(_0x33f258,null))[_0x5ffb('0x4c')](handleError(_0x33f258,null));};exports[_0x5ffb('0x25')]=function(_0x29719e,_0x1dc7f8){return db[_0x5ffb('0x2c')][_0x5ffb('0x49')]({'where':{'id':_0x29719e[_0x5ffb('0x48')]['id']}})[_0x5ffb('0x24')](handleEntityNotFound(_0x1dc7f8,null))[_0x5ffb('0x24')](removeEntity(_0x1dc7f8,null))[_0x5ffb('0x4c')](handleError(_0x1dc7f8,null));};exports[_0x5ffb('0x4e')]=function(_0x3e5024,_0x1cf81a,_0x434ddf){var _0x2b20f3={};var _0x7d03ec={};var _0xf54625;var _0x5c499e;return db['ZendeskConfiguration'][_0x5ffb('0x4f')]({'where':{'id':_0x3e5024[_0x5ffb('0x48')]['id']}})[_0x5ffb('0x24')](handleEntityNotFound(_0x1cf81a,null))[_0x5ffb('0x24')](function(_0xfcdb3a){if(_0xfcdb3a){_0xf54625=_0xfcdb3a;_0x7d03ec[_0x5ffb('0x31')]=_[_0x5ffb('0x33')](db[_0x5ffb('0x50')][_0x5ffb('0x2d')]);_0x7d03ec[_0x5ffb('0x32')]=_['keys'](_0x3e5024[_0x5ffb('0x32')]);_0x7d03ec[_0x5ffb('0x34')]=_[_0x5ffb('0x36')](_0x7d03ec['model'],_0x7d03ec['query']);_0x2b20f3[_0x5ffb('0x35')]=_[_0x5ffb('0x36')](_0x7d03ec[_0x5ffb('0x31')],qs[_0x5ffb('0x37')](_0x3e5024[_0x5ffb('0x32')][_0x5ffb('0x37')]));_0x2b20f3['attributes']=_0x2b20f3[_0x5ffb('0x35')][_0x5ffb('0x38')]?_0x2b20f3['attributes']:_0x7d03ec[_0x5ffb('0x31')];_0x2b20f3['order']=qs['sort'](_0x3e5024[_0x5ffb('0x32')]['sort']);_0x2b20f3[_0x5ffb('0x3d')]=qs[_0x5ffb('0x34')](_['pick'](_0x3e5024['query'],_0x7d03ec['filters']));if(_0x3e5024[_0x5ffb('0x32')][_0x5ffb('0x3f')]){_0x2b20f3[_0x5ffb('0x3d')]=_[_0x5ffb('0x40')](_0x2b20f3[_0x5ffb('0x3d')],{'$or':_[_0x5ffb('0x2b')](_0x2b20f3[_0x5ffb('0x35')],function(_0x39f8eb){var _0x2de14f={};_0x2de14f[_0x39f8eb]={'$like':'%'+_0x3e5024['query'][_0x5ffb('0x3f')]+'%'};return _0x2de14f;})});}_0x2b20f3=_[_0x5ffb('0x40')]({},_0x2b20f3,_0x3e5024['options']);return _0xf54625[_0x5ffb('0x4e')](_0x2b20f3);}})[_0x5ffb('0x24')](function(_0x11543d){if(_0x11543d){_0x5c499e=_0x11543d[_0x5ffb('0x38')];if(!_0x3e5024[_0x5ffb('0x32')][_0x5ffb('0x39')]('nolimit')){_0x2b20f3[_0x5ffb('0x20')]=qs[_0x5ffb('0x20')](_0x3e5024[_0x5ffb('0x32')][_0x5ffb('0x20')]);_0x2b20f3['offset']=qs[_0x5ffb('0x1d')](_0x3e5024[_0x5ffb('0x32')]['offset']);}return _0xf54625['getFields'](_0x2b20f3);}})['then'](function(_0x2611fe){if(_0x2611fe){return _0x2611fe?{'count':_0x5c499e,'rows':_0x2611fe}:null;}})[_0x5ffb('0x24')](respondWithResult(_0x1cf81a,null))[_0x5ffb('0x4c')](handleError(_0x1cf81a,null));};exports['getSubjects']=function(_0x148e0b,_0xde576b,_0x1aaefb){var _0x54731d={};var _0x1214bc={};var _0x1baaed;var _0x5c6a3f;return db[_0x5ffb('0x2c')]['findOne']({'where':{'id':_0x148e0b[_0x5ffb('0x48')]['id']}})[_0x5ffb('0x24')](handleEntityNotFound(_0xde576b,null))[_0x5ffb('0x24')](function(_0x20c79b){if(_0x20c79b){_0x1baaed=_0x20c79b;_0x1214bc[_0x5ffb('0x31')]=_[_0x5ffb('0x33')](db[_0x5ffb('0x50')][_0x5ffb('0x2d')]);_0x1214bc[_0x5ffb('0x32')]=_['keys'](_0x148e0b[_0x5ffb('0x32')]);_0x1214bc[_0x5ffb('0x34')]=_['intersection'](_0x1214bc['model'],_0x1214bc[_0x5ffb('0x32')]);_0x54731d[_0x5ffb('0x35')]=_[_0x5ffb('0x36')](_0x1214bc[_0x5ffb('0x31')],qs[_0x5ffb('0x37')](_0x148e0b[_0x5ffb('0x32')][_0x5ffb('0x37')]));_0x54731d['attributes']=_0x54731d[_0x5ffb('0x35')][_0x5ffb('0x38')]?_0x54731d['attributes']:_0x1214bc[_0x5ffb('0x31')];_0x54731d[_0x5ffb('0x3b')]=qs['sort'](_0x148e0b[_0x5ffb('0x32')][_0x5ffb('0x3c')]);_0x54731d['where']=qs[_0x5ffb('0x34')](_[_0x5ffb('0x3e')](_0x148e0b['query'],_0x1214bc['filters']));if(_0x148e0b['query'][_0x5ffb('0x3f')]){_0x54731d[_0x5ffb('0x3d')]=_['merge'](_0x54731d['where'],{'$or':_[_0x5ffb('0x2b')](_0x54731d['attributes'],function(_0x1df72e){var _0x1084cf={};_0x1084cf[_0x1df72e]={'$like':'%'+_0x148e0b[_0x5ffb('0x32')][_0x5ffb('0x3f')]+'%'};return _0x1084cf;})});}_0x54731d=_['merge']({},_0x54731d,_0x148e0b[_0x5ffb('0x42')]);return _0x1baaed[_0x5ffb('0x51')](_0x54731d);}})['then'](function(_0x185c39){if(_0x185c39){_0x5c6a3f=_0x185c39[_0x5ffb('0x38')];if(!_0x148e0b[_0x5ffb('0x32')][_0x5ffb('0x39')](_0x5ffb('0x3a'))){_0x54731d[_0x5ffb('0x20')]=qs[_0x5ffb('0x20')](_0x148e0b[_0x5ffb('0x32')][_0x5ffb('0x20')]);_0x54731d[_0x5ffb('0x1d')]=qs[_0x5ffb('0x1d')](_0x148e0b[_0x5ffb('0x32')][_0x5ffb('0x1d')]);}return _0x1baaed['getSubjects'](_0x54731d);}})['then'](function(_0x12d91a){if(_0x12d91a){return _0x12d91a?{'count':_0x5c6a3f,'rows':_0x12d91a}:null;}})['then'](respondWithResult(_0xde576b,null))[_0x5ffb('0x4c')](handleError(_0xde576b,null));};exports[_0x5ffb('0x52')]=function(_0x1cb049,_0xdb6e32,_0xb2a59a){var _0x1ca395={};var _0x3c0c53={};var _0x4842b4;var _0x407ce5;return db[_0x5ffb('0x2c')][_0x5ffb('0x4f')]({'where':{'id':_0x1cb049[_0x5ffb('0x48')]['id']}})[_0x5ffb('0x24')](handleEntityNotFound(_0xdb6e32,null))[_0x5ffb('0x24')](function(_0x1cd701){if(_0x1cd701){_0x4842b4=_0x1cd701;_0x3c0c53[_0x5ffb('0x31')]=_['keys'](db['ZendeskField'][_0x5ffb('0x2d')]);_0x3c0c53['query']=_['keys'](_0x1cb049[_0x5ffb('0x32')]);_0x3c0c53[_0x5ffb('0x34')]=_['intersection'](_0x3c0c53[_0x5ffb('0x31')],_0x3c0c53[_0x5ffb('0x32')]);_0x1ca395[_0x5ffb('0x35')]=_[_0x5ffb('0x36')](_0x3c0c53[_0x5ffb('0x31')],qs[_0x5ffb('0x37')](_0x1cb049[_0x5ffb('0x32')][_0x5ffb('0x37')]));_0x1ca395[_0x5ffb('0x35')]=_0x1ca395['attributes'][_0x5ffb('0x38')]?_0x1ca395[_0x5ffb('0x35')]:_0x3c0c53['model'];_0x1ca395[_0x5ffb('0x3b')]=qs[_0x5ffb('0x3c')](_0x1cb049[_0x5ffb('0x32')][_0x5ffb('0x3c')]);_0x1ca395[_0x5ffb('0x3d')]=qs[_0x5ffb('0x34')](_[_0x5ffb('0x3e')](_0x1cb049[_0x5ffb('0x32')],_0x3c0c53[_0x5ffb('0x34')]));if(_0x1cb049[_0x5ffb('0x32')][_0x5ffb('0x3f')]){_0x1ca395[_0x5ffb('0x3d')]=_[_0x5ffb('0x40')](_0x1ca395[_0x5ffb('0x3d')],{'$or':_['map'](_0x1ca395['attributes'],function(_0xe36428){var _0x3c105d={};_0x3c105d[_0xe36428]={'$like':'%'+_0x1cb049['query'][_0x5ffb('0x3f')]+'%'};return _0x3c105d;})});}_0x1ca395=_[_0x5ffb('0x40')]({},_0x1ca395,_0x1cb049['options']);return _0x4842b4[_0x5ffb('0x52')](_0x1ca395);}})['then'](function(_0x564ac0){if(_0x564ac0){_0x407ce5=_0x564ac0[_0x5ffb('0x38')];if(!_0x1cb049[_0x5ffb('0x32')]['hasOwnProperty']('nolimit')){_0x1ca395[_0x5ffb('0x20')]=qs['limit'](_0x1cb049[_0x5ffb('0x32')][_0x5ffb('0x20')]);_0x1ca395[_0x5ffb('0x1d')]=qs[_0x5ffb('0x1d')](_0x1cb049[_0x5ffb('0x32')]['offset']);}return _0x4842b4[_0x5ffb('0x52')](_0x1ca395);}})[_0x5ffb('0x24')](function(_0x723aa4){if(_0x723aa4){return _0x723aa4?{'count':_0x407ce5,'rows':_0x723aa4}:null;}})[_0x5ffb('0x24')](respondWithResult(_0xdb6e32,null))['catch'](handleError(_0xdb6e32,null));};exports[_0x5ffb('0x53')]=function(_0x438fec,_0x40e7ce,_0x1f8d8a){var _0x550e06={};var _0x5aa6a4={};var _0x223485;var _0x4a21f3;return db[_0x5ffb('0x2c')][_0x5ffb('0x4f')]({'where':{'id':_0x438fec[_0x5ffb('0x48')]['id']}})['then'](handleEntityNotFound(_0x40e7ce,null))['then'](function(_0x1426b8){if(_0x1426b8){_0x223485=_0x1426b8;_0x5aa6a4[_0x5ffb('0x31')]=_[_0x5ffb('0x33')](db[_0x5ffb('0x54')][_0x5ffb('0x2d')]);_0x5aa6a4[_0x5ffb('0x32')]=_['keys'](_0x438fec[_0x5ffb('0x32')]);_0x5aa6a4['filters']=_['intersection'](_0x5aa6a4['model'],_0x5aa6a4[_0x5ffb('0x32')]);_0x550e06['attributes']=_[_0x5ffb('0x36')](_0x5aa6a4[_0x5ffb('0x31')],qs[_0x5ffb('0x37')](_0x438fec['query'][_0x5ffb('0x37')]));_0x550e06[_0x5ffb('0x35')]=_0x550e06[_0x5ffb('0x35')][_0x5ffb('0x38')]?_0x550e06['attributes']:_0x5aa6a4['model'];_0x550e06[_0x5ffb('0x3b')]=qs[_0x5ffb('0x3c')](_0x438fec['query']['sort']);_0x550e06['where']=qs[_0x5ffb('0x34')](_[_0x5ffb('0x3e')](_0x438fec[_0x5ffb('0x32')],_0x5aa6a4[_0x5ffb('0x34')]));if(_0x438fec[_0x5ffb('0x32')][_0x5ffb('0x3f')]){_0x550e06['where']=_['merge'](_0x550e06[_0x5ffb('0x3d')],{'$or':_[_0x5ffb('0x2b')](_0x550e06[_0x5ffb('0x35')],function(_0x54bed3){var _0x4382ef={};_0x4382ef[_0x54bed3]={'$like':'%'+_0x438fec[_0x5ffb('0x32')][_0x5ffb('0x3f')]+'%'};return _0x4382ef;})});}_0x550e06=_[_0x5ffb('0x40')]({},_0x550e06,_0x438fec[_0x5ffb('0x42')]);return _0x223485[_0x5ffb('0x53')](_0x550e06);}})[_0x5ffb('0x24')](function(_0x581ec2){if(_0x581ec2){_0x4a21f3=_0x581ec2[_0x5ffb('0x38')];if(!_0x438fec[_0x5ffb('0x32')][_0x5ffb('0x39')](_0x5ffb('0x3a'))){_0x550e06[_0x5ffb('0x20')]=qs[_0x5ffb('0x20')](_0x438fec[_0x5ffb('0x32')][_0x5ffb('0x20')]);_0x550e06[_0x5ffb('0x1d')]=qs[_0x5ffb('0x1d')](_0x438fec[_0x5ffb('0x32')][_0x5ffb('0x1d')]);}return _0x223485[_0x5ffb('0x53')](_0x550e06);}})['then'](function(_0x3c7f00){if(_0x3c7f00){return _0x3c7f00?{'count':_0x4a21f3,'rows':_0x3c7f00}:null;}})[_0x5ffb('0x24')](respondWithResult(_0x40e7ce,null))[_0x5ffb('0x4c')](handleError(_0x40e7ce,null));};exports[_0x5ffb('0x55')]=function(_0x4a87cd,_0x197cd7,_0x552b51){if(_0x4a87cd[_0x5ffb('0x4b')]['id']){delete _0x4a87cd[_0x5ffb('0x4b')]['id'];}return db[_0x5ffb('0x2c')][_0x5ffb('0x4f')]({'where':{'id':_0x4a87cd['params']['id']}})['then'](handleEntityNotFound(_0x197cd7,null))[_0x5ffb('0x24')](function(_0x440a5c){if(_0x440a5c){return _0x440a5c[_0x5ffb('0x55')](_0x4a87cd[_0x5ffb('0x4b')]['ids']||[]);}return null;})[_0x5ffb('0x24')](respondWithResult(_0x197cd7,null))[_0x5ffb('0x4c')](handleError(_0x197cd7,null));};
\ No newline at end of file
index cf3b337..364f133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['request-promise','path','rimraf','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','util','api','bluebird'];(function(_0x222427,_0x302918){var _0x4d6bf6=function(_0x5bbd1f){while(--_0x5bbd1f){_0x222427['push'](_0x222427['shift']());}};_0x4d6bf6(++_0x302918);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x26c1ff,_0xb7c424){_0x26c1ff=_0x26c1ff-0x0;var _0xa7f0ee=_0xe2cf[_0x26c1ff];return _0xa7f0ee;};'use strict';var _=require('lodash');var util=require(_0xfe2c('0x0'));var logger=require('../../config/logger')(_0xfe2c('0x1'));var moment=require('moment');var BPromise=require(_0xfe2c('0x2'));var rp=require(_0xfe2c('0x3'));var fs=require('fs');var path=require(_0xfe2c('0x4'));var rimraf=require(_0xfe2c('0x5'));var config=require('../../config/environment');var attributes=require(_0xfe2c('0x6'));module[_0xfe2c('0x7')]=function(_0x55bb12,_0x4fa079){return _0x55bb12[_0xfe2c('0x8')](_0xfe2c('0x9'),attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28f2=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define','int_zendesk_configurations'];(function(_0x4f8268,_0x3eecc9){var _0x195606=function(_0x36a78f){while(--_0x36a78f){_0x4f8268['push'](_0x4f8268['shift']());}};_0x195606(++_0x3eecc9);}(_0x28f2,0x193));var _0x228f=function(_0xc8feb8,_0x13c042){_0xc8feb8=_0xc8feb8-0x0;var _0x3beac0=_0x28f2[_0xc8feb8];return _0x3beac0;};'use strict';var _=require(_0x228f('0x0'));var util=require(_0x228f('0x1'));var logger=require(_0x228f('0x2'))(_0x228f('0x3'));var moment=require(_0x228f('0x4'));var BPromise=require('bluebird');var rp=require(_0x228f('0x5'));var fs=require('fs');var path=require(_0x228f('0x6'));var rimraf=require(_0x228f('0x7'));var config=require(_0x228f('0x8'));var attributes=require(_0x228f('0x9'));module[_0x228f('0xa')]=function(_0x32c5c3,_0x485423){return _0x32c5c3[_0x228f('0xb')]('ZendeskConfiguration',attributes,{'tableName':_0x228f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0da24d3..c358222 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbc=['ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','client','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5b589a,_0x4e30b1){var _0x49721f=function(_0x275754){while(--_0x275754){_0x5b589a['push'](_0x5b589a['shift']());}};_0x49721f(++_0x4e30b1);}(_0x3cbc,0x1c0));var _0xc3cb=function(_0x1b50b8,_0x56d196){_0x1b50b8=_0x1b50b8-0x0;var _0xcd9ea2=_0x3cbc[_0x1b50b8];return _0xcd9ea2;};'use strict';var _=require(_0xc3cb('0x0'));var util=require(_0xc3cb('0x1'));var moment=require('moment');var BPromise=require(_0xc3cb('0x2'));var rs=require(_0xc3cb('0x3'));var fs=require('fs');var Redis=require(_0xc3cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc3cb('0x5'));var logger=require('../../config/logger')(_0xc3cb('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc3cb('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41c7bd,_0x15daba,_0x144b64){return new BPromise(function(_0x1ffd09,_0x5cc41f){return client[_0xc3cb('0x8')](_0x41c7bd,_0x144b64)[_0xc3cb('0x9')](function(_0x649928){logger[_0xc3cb('0xa')](_0xc3cb('0xb'),_0x15daba,_0xc3cb('0xc'));logger[_0xc3cb('0xd')](_0xc3cb('0xe'),_0x15daba,'request\x20sent',JSON[_0xc3cb('0xf')](_0x649928));if(_0x649928[_0xc3cb('0x10')]){if(_0x649928[_0xc3cb('0x10')][_0xc3cb('0x11')]===0x1f4){logger[_0xc3cb('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x15daba,_0x649928[_0xc3cb('0x10')]['message']);return _0x5cc41f(_0x649928[_0xc3cb('0x10')][_0xc3cb('0x12')]);}logger[_0xc3cb('0x10')](_0xc3cb('0xb'),_0x15daba,_0x649928[_0xc3cb('0x10')]['message']);return _0x1ffd09(_0x649928[_0xc3cb('0x10')][_0xc3cb('0x12')]);}else{logger['info'](_0xc3cb('0xb'),_0x15daba,_0xc3cb('0xc'));_0x1ffd09(_0x649928[_0xc3cb('0x13')][_0xc3cb('0x12')]);}})[_0xc3cb('0x14')](function(_0x432579){logger['error'](_0xc3cb('0xb'),_0x15daba,_0x432579);_0x5cc41f(_0x432579);});});}
\ No newline at end of file
+var _0x1dbf=['request','then','info','ZendeskConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http'];(function(_0x145888,_0x15b71d){var _0x280239=function(_0x48ae32){while(--_0x48ae32){_0x145888['push'](_0x145888['shift']());}};_0x280239(++_0x15b71d);}(_0x1dbf,0xfb));var _0xf1db=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x1dbf[_0x3070dc];return _0x431489;};'use strict';var _=require('lodash');var util=require(_0xf1db('0x0'));var moment=require('moment');var BPromise=require(_0xf1db('0x1'));var rs=require(_0xf1db('0x2'));var fs=require('fs');var Redis=require(_0xf1db('0x3'));var db=require(_0xf1db('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf1db('0x5'));var config=require(_0xf1db('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf1db('0x7')][_0xf1db('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2dbf60,_0x1098e2,_0xf72d4e){return new BPromise(function(_0x1cdd71,_0x4eda39){return client[_0xf1db('0x9')](_0x2dbf60,_0xf72d4e)[_0xf1db('0xa')](function(_0x32f6db){logger[_0xf1db('0xb')](_0xf1db('0xc'),_0x1098e2,'request\x20sent');logger[_0xf1db('0xd')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x1098e2,_0xf1db('0xe'),JSON[_0xf1db('0xf')](_0x32f6db));if(_0x32f6db[_0xf1db('0x10')]){if(_0x32f6db[_0xf1db('0x10')][_0xf1db('0x11')]===0x1f4){logger[_0xf1db('0x10')](_0xf1db('0xc'),_0x1098e2,_0x32f6db[_0xf1db('0x10')]['message']);return _0x4eda39(_0x32f6db[_0xf1db('0x10')][_0xf1db('0x12')]);}logger['error'](_0xf1db('0xc'),_0x1098e2,_0x32f6db[_0xf1db('0x10')][_0xf1db('0x12')]);return _0x1cdd71(_0x32f6db[_0xf1db('0x10')]['message']);}else{logger[_0xf1db('0xb')](_0xf1db('0xc'),_0x1098e2,'request\x20sent');_0x1cdd71(_0x32f6db['result']['message']);}})[_0xf1db('0x13')](function(_0x26f93b){logger[_0xf1db('0x10')](_0xf1db('0xc'),_0x1098e2,_0x26f93b);_0x4eda39(_0x26f93b);});});}
\ No newline at end of file
index 8a96c64..49609ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f62=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','index','get','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x46c955,_0xa3d4e){var _0x227422=function(_0x5b12e7){while(--_0x5b12e7){_0x46c955['push'](_0x46c955['shift']());}};_0x227422(++_0xa3d4e);}(_0x0f62,0x1f4));var _0x20f6=function(_0x307070,_0x34ce6c){_0x307070=_0x307070-0x0;var _0x33cccb=_0x0f62[_0x307070];return _0x33cccb;};'use strict';var multer=require(_0x20f6('0x0'));var util=require(_0x20f6('0x1'));var path=require('path');var timeout=require(_0x20f6('0x2'));var express=require(_0x20f6('0x3'));var router=express[_0x20f6('0x4')]();var fs_extra=require(_0x20f6('0x5'));var auth=require(_0x20f6('0x6'));var interaction=require(_0x20f6('0x7'));var config=require(_0x20f6('0x8'));var controller=require(_0x20f6('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x20f6('0xa')]);router[_0x20f6('0xb')](_0x20f6('0xc'),auth[_0x20f6('0xd')](),controller['show']);router[_0x20f6('0xe')]('/',auth[_0x20f6('0xd')](),controller[_0x20f6('0xf')]);router[_0x20f6('0x10')](_0x20f6('0xc'),auth['isAuthenticated'](),controller[_0x20f6('0x11')]);router[_0x20f6('0x12')](_0x20f6('0xc'),auth[_0x20f6('0xd')](),controller[_0x20f6('0x13')]);module[_0x20f6('0x14')]=router;
\ No newline at end of file
+var _0x524a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4dd479,_0x26d87a){var _0x1b6807=function(_0x2bec19){while(--_0x2bec19){_0x4dd479['push'](_0x4dd479['shift']());}};_0x1b6807(++_0x26d87a);}(_0x524a,0x8e));var _0xa524=function(_0x1ed032,_0x1131e5){_0x1ed032=_0x1ed032-0x0;var _0x5b3425=_0x524a[_0x1ed032];return _0x5b3425;};'use strict';var multer=require(_0xa524('0x0'));var util=require(_0xa524('0x1'));var path=require(_0xa524('0x2'));var timeout=require(_0xa524('0x3'));var express=require(_0xa524('0x4'));var router=express[_0xa524('0x5')]();var fs_extra=require(_0xa524('0x6'));var auth=require(_0xa524('0x7'));var interaction=require(_0xa524('0x8'));var config=require(_0xa524('0x9'));var controller=require(_0xa524('0xa'));router[_0xa524('0xb')]('/',auth[_0xa524('0xc')](),controller['index']);router[_0xa524('0xb')](_0xa524('0xd'),auth[_0xa524('0xc')](),controller[_0xa524('0xe')]);router[_0xa524('0xf')]('/',auth[_0xa524('0xc')](),controller[_0xa524('0x10')]);router['put'](_0xa524('0xd'),auth[_0xa524('0xc')](),controller[_0xa524('0x11')]);router[_0xa524('0x12')](_0xa524('0xd'),auth['isAuthenticated'](),controller[_0xa524('0x13')]);module[_0xa524('0x14')]=router;
\ No newline at end of file
index 72b3a42..34487ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c8b=['sequelize','exports','ENUM','string','variable','picklist','STRING','customVariable'];(function(_0x3f6340,_0x3b2c10){var _0xb889f8=function(_0x7eb85d){while(--_0x7eb85d){_0x3f6340['push'](_0x3f6340['shift']());}};_0xb889f8(++_0x3b2c10);}(_0x1c8b,0x88));var _0xb1c8=function(_0x209bb2,_0x3950e6){_0x209bb2=_0x209bb2-0x0;var _0xdbedfe=_0x1c8b[_0x209bb2];return _0xdbedfe;};'use strict';var Sequelize=require(_0xb1c8('0x0'));module[_0xb1c8('0x1')]={'type':{'type':Sequelize[_0xb1c8('0x2')](_0xb1c8('0x3'),_0xb1c8('0x4'),'customVariable','keyValue',_0xb1c8('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xb1c8('0x6')]},'key':{'type':Sequelize[_0xb1c8('0x6')]},'keyType':{'type':Sequelize[_0xb1c8('0x2')](_0xb1c8('0x3'),'variable',_0xb1c8('0x7'))},'keyContent':{'type':Sequelize[_0xb1c8('0x6')]},'idField':{'type':Sequelize[_0xb1c8('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbf79=['sequelize','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0xe598d2,_0x2c30a2){var _0x2c3846=function(_0xba4ea8){while(--_0xba4ea8){_0xe598d2['push'](_0xe598d2['shift']());}};_0x2c3846(++_0x2c30a2);}(_0xbf79,0x15f));var _0x9bf7=function(_0xc83460,_0x360ea9){_0xc83460=_0xc83460-0x0;var _0x24f971=_0xbf79[_0xc83460];return _0x24f971;};'use strict';var Sequelize=require(_0x9bf7('0x0'));module['exports']={'type':{'type':Sequelize[_0x9bf7('0x1')](_0x9bf7('0x2'),_0x9bf7('0x3'),_0x9bf7('0x4'),_0x9bf7('0x5'),_0x9bf7('0x6')),'defaultValue':_0x9bf7('0x2')},'content':{'type':Sequelize[_0x9bf7('0x7')]},'key':{'type':Sequelize[_0x9bf7('0x7')]},'keyType':{'type':Sequelize[_0x9bf7('0x1')](_0x9bf7('0x2'),_0x9bf7('0x3'),_0x9bf7('0x4'))},'keyContent':{'type':Sequelize[_0x9bf7('0x7')]},'idField':{'type':Sequelize[_0x9bf7('0x7')]},'nameField':{'type':Sequelize[_0x9bf7('0x7')]},'customField':{'type':Sequelize[_0x9bf7('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9bf7('0x7')]}};
\ No newline at end of file
index 1add60a..3f682b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e2=['limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','error','name','index','map','fieldName','type','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','VIRTUAL','options','ZendeskField','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined'];(function(_0x512b48,_0xa3924f){var _0x278a76=function(_0x2360ec){while(--_0x2360ec){_0x512b48['push'](_0x512b48['shift']());}};_0x278a76(++_0xa3924f);}(_0x70e2,0xc3));var _0x270e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x70e2[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x270e('0x0'));var rimraf=require(_0x270e('0x1'));var zipdir=require(_0x270e('0x2'));var jsonpatch=require(_0x270e('0x3'));var rp=require('request-promise');var moment=require(_0x270e('0x4'));var BPromise=require(_0x270e('0x5'));var Mustache=require(_0x270e('0x6'));var util=require(_0x270e('0x7'));var path=require(_0x270e('0x8'));var sox=require(_0x270e('0x9'));var csv=require('to-csv');var ejs=require(_0x270e('0xa'));var fs=require('fs');var fs_extra=require(_0x270e('0xb'));var _=require(_0x270e('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x270e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x270e('0xe'));var querystring=require(_0x270e('0xf'));var Papa=require(_0x270e('0x10'));var Redis=require(_0x270e('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x270e('0x12'));var hardwareService=require(_0x270e('0x13'));var logger=require(_0x270e('0x14'))(_0x270e('0x15'));var utils=require(_0x270e('0x16'));var config=require(_0x270e('0x17'));var licenseUtil=require(_0x270e('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4fa19f,_0x14e90a){_0x14e90a=_0x14e90a||0xcc;return function(_0x2b54c2){if(_0x2b54c2){return _0x4fa19f[_0x270e('0x19')](_0x14e90a);}return _0x4fa19f[_0x270e('0x1a')](_0x14e90a)['end']();};}function respondWithResult(_0x12e546,_0x3d5c26){_0x3d5c26=_0x3d5c26||0xc8;return function(_0x3f613d){if(_0x3f613d){return _0x12e546[_0x270e('0x1a')](_0x3d5c26)[_0x270e('0x1b')](_0x3f613d);}};}function respondWithFilteredResult(_0x5ee7d1,_0x1de210){return function(_0x35409e){if(_0x35409e){var _0x28a7e8=typeof _0x1de210[_0x270e('0x1c')]===_0x270e('0x1d')&&typeof _0x1de210[_0x270e('0x1e')]===_0x270e('0x1d');var _0x3c1dfa=_0x35409e[_0x270e('0x1f')];var _0x5394e4=_0x28a7e8?0x0:_0x1de210[_0x270e('0x1c')];var _0x3df77a=_0x28a7e8?_0x35409e[_0x270e('0x1f')]:_0x1de210[_0x270e('0x1c')]+_0x1de210[_0x270e('0x1e')];var _0x38fca5;if(_0x3df77a>=_0x3c1dfa){_0x3df77a=_0x3c1dfa;_0x38fca5=0xc8;}else{_0x38fca5=0xce;}_0x5ee7d1['status'](_0x38fca5);return _0x5ee7d1[_0x270e('0x20')](_0x270e('0x21'),_0x5394e4+'-'+_0x3df77a+'/'+_0x3c1dfa)['json'](_0x35409e);}return null;};}function patchUpdates(_0x480ed6){return function(_0x4ccd7a){try{jsonpatch[_0x270e('0x22')](_0x4ccd7a,_0x480ed6,!![]);}catch(_0x51c0d1){return BPromise[_0x270e('0x23')](_0x51c0d1);}return _0x4ccd7a[_0x270e('0x24')]();};}function saveUpdates(_0x1418d5,_0x4f3714){return function(_0x136555){if(_0x136555){return _0x136555[_0x270e('0x25')](_0x1418d5)['then'](function(_0x2faa50){return _0x2faa50;});}return null;};}function removeEntity(_0x556475,_0x28323f){return function(_0x4647c8){if(_0x4647c8){return _0x4647c8[_0x270e('0x26')]()[_0x270e('0x27')](function(){_0x556475[_0x270e('0x1a')](0xcc)[_0x270e('0x28')]();});}};}function handleEntityNotFound(_0x57754c,_0x4a2e9d){return function(_0x2b506c){if(!_0x2b506c){_0x57754c[_0x270e('0x19')](0x194);}return _0x2b506c;};}function handleError(_0xc112e7,_0x15c695){_0x15c695=_0x15c695||0x1f4;return function(_0x1d5bf7){logger[_0x270e('0x29')](_0x1d5bf7['stack']);if(_0x1d5bf7[_0x270e('0x2a')]){delete _0x1d5bf7[_0x270e('0x2a')];}_0xc112e7[_0x270e('0x1a')](_0x15c695)['send'](_0x1d5bf7);};}exports[_0x270e('0x2b')]=function(_0x1cbe36,_0x5c9b7b){var _0x18750d={},_0x70675f={},_0x1e7528={'count':0x0,'rows':[]};var _0x46b41c=_[_0x270e('0x2c')](db['ZendeskField']['rawAttributes'],function(_0x2b19ef){return{'name':_0x2b19ef[_0x270e('0x2d')],'type':_0x2b19ef[_0x270e('0x2e')]['key']};});_0x70675f['model']=_[_0x270e('0x2c')](_0x46b41c,_0x270e('0x2a'));_0x70675f[_0x270e('0x2f')]=_[_0x270e('0x30')](_0x1cbe36[_0x270e('0x2f')]);_0x70675f['filters']=_['intersection'](_0x70675f[_0x270e('0x31')],_0x70675f[_0x270e('0x2f')]);_0x18750d[_0x270e('0x32')]=_[_0x270e('0x33')](_0x70675f[_0x270e('0x31')],qs[_0x270e('0x34')](_0x1cbe36[_0x270e('0x2f')]['fields']));_0x18750d[_0x270e('0x32')]=_0x18750d[_0x270e('0x32')][_0x270e('0x35')]?_0x18750d[_0x270e('0x32')]:_0x70675f[_0x270e('0x31')];if(!_0x1cbe36[_0x270e('0x2f')][_0x270e('0x36')](_0x270e('0x37'))){_0x18750d['limit']=qs[_0x270e('0x1e')](_0x1cbe36[_0x270e('0x2f')][_0x270e('0x1e')]);_0x18750d[_0x270e('0x1c')]=qs[_0x270e('0x1c')](_0x1cbe36[_0x270e('0x2f')]['offset']);}_0x18750d[_0x270e('0x38')]=qs['sort'](_0x1cbe36[_0x270e('0x2f')][_0x270e('0x39')]);_0x18750d['where']=qs[_0x270e('0x3a')](_['pick'](_0x1cbe36['query'],_0x70675f[_0x270e('0x3a')]),_0x46b41c);if(_0x1cbe36['query']['filter']){_0x18750d[_0x270e('0x3b')]=_[_0x270e('0x3c')](_0x18750d[_0x270e('0x3b')],{'$or':_[_0x270e('0x2c')](_0x46b41c,function(_0x5f14c0){if(_0x5f14c0['type']!==_0x270e('0x3d')){var _0xae7ad9={};_0xae7ad9[_0x5f14c0[_0x270e('0x2a')]]={'$like':'%'+_0x1cbe36[_0x270e('0x2f')]['filter']+'%'};return _0xae7ad9;}})});}_0x18750d=_[_0x270e('0x3c')]({},_0x18750d,_0x1cbe36[_0x270e('0x3e')]);var _0x4eb47b={'where':_0x18750d[_0x270e('0x3b')]};return db[_0x270e('0x3f')][_0x270e('0x1f')](_0x4eb47b)[_0x270e('0x27')](function(_0x18072b){_0x1e7528[_0x270e('0x1f')]=_0x18072b;if(_0x1cbe36[_0x270e('0x2f')][_0x270e('0x40')]){_0x18750d[_0x270e('0x41')]=[{'all':!![]}];}return db['ZendeskField'][_0x270e('0x42')](_0x18750d);})[_0x270e('0x27')](function(_0x43098c){_0x1e7528[_0x270e('0x43')]=_0x43098c;return _0x1e7528;})['then'](respondWithFilteredResult(_0x5c9b7b,_0x18750d))[_0x270e('0x44')](handleError(_0x5c9b7b,null));};exports[_0x270e('0x45')]=function(_0x3d9435,_0x53ff5d){var _0x16c9fa={'raw':!![],'where':{'id':_0x3d9435[_0x270e('0x46')]['id']}},_0x565eac={};_0x565eac[_0x270e('0x31')]=_[_0x270e('0x30')](db[_0x270e('0x3f')][_0x270e('0x47')]);_0x565eac[_0x270e('0x2f')]=_[_0x270e('0x30')](_0x3d9435[_0x270e('0x2f')]);_0x565eac['filters']=_['intersection'](_0x565eac[_0x270e('0x31')],_0x565eac[_0x270e('0x2f')]);_0x16c9fa[_0x270e('0x32')]=_['intersection'](_0x565eac[_0x270e('0x31')],qs[_0x270e('0x34')](_0x3d9435[_0x270e('0x2f')][_0x270e('0x34')]));_0x16c9fa['attributes']=_0x16c9fa[_0x270e('0x32')][_0x270e('0x35')]?_0x16c9fa[_0x270e('0x32')]:_0x565eac['model'];if(_0x3d9435[_0x270e('0x2f')][_0x270e('0x40')]){_0x16c9fa[_0x270e('0x41')]=[{'all':!![]}];}_0x16c9fa=_[_0x270e('0x3c')]({},_0x16c9fa,_0x3d9435[_0x270e('0x3e')]);return db[_0x270e('0x3f')]['find'](_0x16c9fa)[_0x270e('0x27')](handleEntityNotFound(_0x53ff5d,null))[_0x270e('0x27')](respondWithResult(_0x53ff5d,null))[_0x270e('0x44')](handleError(_0x53ff5d,null));};exports[_0x270e('0x48')]=function(_0x27ba88,_0x4d7985){return db[_0x270e('0x3f')]['create'](_0x27ba88['body'],{})['then'](respondWithResult(_0x4d7985,0xc9))[_0x270e('0x44')](handleError(_0x4d7985,null));};exports['update']=function(_0x5ec7b2,_0x5f5d09){if(_0x5ec7b2['body']['id']){delete _0x5ec7b2[_0x270e('0x49')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x5ec7b2['params']['id']}})['then'](handleEntityNotFound(_0x5f5d09,null))['then'](saveUpdates(_0x5ec7b2[_0x270e('0x49')],null))['then'](respondWithResult(_0x5f5d09,null))['catch'](handleError(_0x5f5d09,null));};exports[_0x270e('0x26')]=function(_0x59b905,_0x1a6d81){return db[_0x270e('0x3f')][_0x270e('0x4a')]({'where':{'id':_0x59b905[_0x270e('0x46')]['id']}})['then'](handleEntityNotFound(_0x1a6d81,null))[_0x270e('0x27')](removeEntity(_0x1a6d81,null))[_0x270e('0x44')](handleError(_0x1a6d81,null));};
\ No newline at end of file
+var _0x5b05=['filter','where','merge','type','options','includeAll','include','findAll','rows','show','find','catch','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort'];(function(_0xc36d01,_0x3bf1a6){var _0xecb231=function(_0x2fb301){while(--_0x2fb301){_0xc36d01['push'](_0xc36d01['shift']());}};_0xecb231(++_0x3bf1a6);}(_0x5b05,0x190));var _0x55b0=function(_0x266333,_0xf88698){_0x266333=_0x266333-0x0;var _0x353f94=_0x5b05[_0x266333];return _0x353f94;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x55b0('0x0'));var zipdir=require(_0x55b0('0x1'));var jsonpatch=require(_0x55b0('0x2'));var rp=require(_0x55b0('0x3'));var moment=require(_0x55b0('0x4'));var BPromise=require(_0x55b0('0x5'));var Mustache=require(_0x55b0('0x6'));var util=require(_0x55b0('0x7'));var path=require(_0x55b0('0x8'));var sox=require(_0x55b0('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x55b0('0xa'));var _=require(_0x55b0('0xb'));var squel=require(_0x55b0('0xc'));var crypto=require(_0x55b0('0xd'));var jsforce=require(_0x55b0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x55b0('0xf'));var querystring=require(_0x55b0('0x10'));var Papa=require(_0x55b0('0x11'));var Redis=require(_0x55b0('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x55b0('0x13'));var hardwareService=require(_0x55b0('0x14'));var logger=require(_0x55b0('0x15'))(_0x55b0('0x16'));var utils=require(_0x55b0('0x17'));var config=require(_0x55b0('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x55b0('0x19'))['db'];function respondWithStatusCode(_0x35212d,_0x4d8be8){_0x4d8be8=_0x4d8be8||0xcc;return function(_0x8c1df0){if(_0x8c1df0){return _0x35212d[_0x55b0('0x1a')](_0x4d8be8);}return _0x35212d[_0x55b0('0x1b')](_0x4d8be8)[_0x55b0('0x1c')]();};}function respondWithResult(_0x5baa88,_0x525f9b){_0x525f9b=_0x525f9b||0xc8;return function(_0x4d614b){if(_0x4d614b){return _0x5baa88[_0x55b0('0x1b')](_0x525f9b)['json'](_0x4d614b);}};}function respondWithFilteredResult(_0x7d7527,_0x3ca8e2){return function(_0x4d2271){if(_0x4d2271){var _0x15fa8f=typeof _0x3ca8e2[_0x55b0('0x1d')]===_0x55b0('0x1e')&&typeof _0x3ca8e2[_0x55b0('0x1f')]===_0x55b0('0x1e');var _0x4f98ba=_0x4d2271[_0x55b0('0x20')];var _0x20b1c5=_0x15fa8f?0x0:_0x3ca8e2[_0x55b0('0x1d')];var _0x5ca2ec=_0x15fa8f?_0x4d2271['count']:_0x3ca8e2[_0x55b0('0x1d')]+_0x3ca8e2[_0x55b0('0x1f')];var _0x3f9458;if(_0x5ca2ec>=_0x4f98ba){_0x5ca2ec=_0x4f98ba;_0x3f9458=0xc8;}else{_0x3f9458=0xce;}_0x7d7527['status'](_0x3f9458);return _0x7d7527[_0x55b0('0x21')](_0x55b0('0x22'),_0x20b1c5+'-'+_0x5ca2ec+'/'+_0x4f98ba)[_0x55b0('0x23')](_0x4d2271);}return null;};}function patchUpdates(_0x3ff56c){return function(_0x55b08e){try{jsonpatch[_0x55b0('0x24')](_0x55b08e,_0x3ff56c,!![]);}catch(_0x27ecd1){return BPromise[_0x55b0('0x25')](_0x27ecd1);}return _0x55b08e[_0x55b0('0x26')]();};}function saveUpdates(_0x4fa147,_0x4082ce){return function(_0x5e3acc){if(_0x5e3acc){return _0x5e3acc[_0x55b0('0x27')](_0x4fa147)['then'](function(_0x33bcc1){return _0x33bcc1;});}return null;};}function removeEntity(_0x25eb8a,_0x1ea756){return function(_0x3056f8){if(_0x3056f8){return _0x3056f8[_0x55b0('0x28')]()[_0x55b0('0x29')](function(){_0x25eb8a[_0x55b0('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x244092,_0x54f74f){return function(_0x494092){if(!_0x494092){_0x244092[_0x55b0('0x1a')](0x194);}return _0x494092;};}function handleError(_0x43b2c8,_0x5b2dc8){_0x5b2dc8=_0x5b2dc8||0x1f4;return function(_0x177bb8){logger['error'](_0x177bb8[_0x55b0('0x2a')]);if(_0x177bb8[_0x55b0('0x2b')]){delete _0x177bb8[_0x55b0('0x2b')];}_0x43b2c8[_0x55b0('0x1b')](_0x5b2dc8)[_0x55b0('0x2c')](_0x177bb8);};}exports[_0x55b0('0x2d')]=function(_0x20385f,_0x3b0262){var _0x10d5c9={},_0x4273e0={},_0x443d20={'count':0x0,'rows':[]};var _0x1237f9=_[_0x55b0('0x2e')](db[_0x55b0('0x2f')][_0x55b0('0x30')],function(_0xc62841){return{'name':_0xc62841[_0x55b0('0x31')],'type':_0xc62841['type'][_0x55b0('0x32')]};});_0x4273e0[_0x55b0('0x33')]=_[_0x55b0('0x2e')](_0x1237f9,_0x55b0('0x2b'));_0x4273e0['query']=_[_0x55b0('0x34')](_0x20385f[_0x55b0('0x35')]);_0x4273e0[_0x55b0('0x36')]=_[_0x55b0('0x37')](_0x4273e0[_0x55b0('0x33')],_0x4273e0[_0x55b0('0x35')]);_0x10d5c9['attributes']=_[_0x55b0('0x37')](_0x4273e0['model'],qs[_0x55b0('0x38')](_0x20385f[_0x55b0('0x35')][_0x55b0('0x38')]));_0x10d5c9[_0x55b0('0x39')]=_0x10d5c9[_0x55b0('0x39')][_0x55b0('0x3a')]?_0x10d5c9[_0x55b0('0x39')]:_0x4273e0[_0x55b0('0x33')];if(!_0x20385f[_0x55b0('0x35')][_0x55b0('0x3b')]('nolimit')){_0x10d5c9[_0x55b0('0x1f')]=qs[_0x55b0('0x1f')](_0x20385f[_0x55b0('0x35')][_0x55b0('0x1f')]);_0x10d5c9[_0x55b0('0x1d')]=qs[_0x55b0('0x1d')](_0x20385f[_0x55b0('0x35')][_0x55b0('0x1d')]);}_0x10d5c9[_0x55b0('0x3c')]=qs['sort'](_0x20385f['query'][_0x55b0('0x3d')]);_0x10d5c9['where']=qs[_0x55b0('0x36')](_['pick'](_0x20385f[_0x55b0('0x35')],_0x4273e0[_0x55b0('0x36')]),_0x1237f9);if(_0x20385f['query'][_0x55b0('0x3e')]){_0x10d5c9[_0x55b0('0x3f')]=_[_0x55b0('0x40')](_0x10d5c9['where'],{'$or':_['map'](_0x1237f9,function(_0x512969){if(_0x512969[_0x55b0('0x41')]!=='VIRTUAL'){var _0x4b7d7b={};_0x4b7d7b[_0x512969[_0x55b0('0x2b')]]={'$like':'%'+_0x20385f[_0x55b0('0x35')]['filter']+'%'};return _0x4b7d7b;}})});}_0x10d5c9=_[_0x55b0('0x40')]({},_0x10d5c9,_0x20385f[_0x55b0('0x42')]);var _0x4a70c5={'where':_0x10d5c9['where']};return db[_0x55b0('0x2f')][_0x55b0('0x20')](_0x4a70c5)[_0x55b0('0x29')](function(_0x5f4afc){_0x443d20[_0x55b0('0x20')]=_0x5f4afc;if(_0x20385f[_0x55b0('0x35')][_0x55b0('0x43')]){_0x10d5c9[_0x55b0('0x44')]=[{'all':!![]}];}return db[_0x55b0('0x2f')][_0x55b0('0x45')](_0x10d5c9);})[_0x55b0('0x29')](function(_0x163f93){_0x443d20[_0x55b0('0x46')]=_0x163f93;return _0x443d20;})['then'](respondWithFilteredResult(_0x3b0262,_0x10d5c9))['catch'](handleError(_0x3b0262,null));};exports[_0x55b0('0x47')]=function(_0x323fbc,_0x10bbd9){var _0x22e0c9={'raw':!![],'where':{'id':_0x323fbc['params']['id']}},_0x5cb5e1={};_0x5cb5e1['model']=_[_0x55b0('0x34')](db[_0x55b0('0x2f')][_0x55b0('0x30')]);_0x5cb5e1[_0x55b0('0x35')]=_[_0x55b0('0x34')](_0x323fbc[_0x55b0('0x35')]);_0x5cb5e1['filters']=_[_0x55b0('0x37')](_0x5cb5e1[_0x55b0('0x33')],_0x5cb5e1[_0x55b0('0x35')]);_0x22e0c9['attributes']=_[_0x55b0('0x37')](_0x5cb5e1[_0x55b0('0x33')],qs[_0x55b0('0x38')](_0x323fbc[_0x55b0('0x35')][_0x55b0('0x38')]));_0x22e0c9[_0x55b0('0x39')]=_0x22e0c9['attributes'][_0x55b0('0x3a')]?_0x22e0c9['attributes']:_0x5cb5e1[_0x55b0('0x33')];if(_0x323fbc[_0x55b0('0x35')][_0x55b0('0x43')]){_0x22e0c9[_0x55b0('0x44')]=[{'all':!![]}];}_0x22e0c9=_[_0x55b0('0x40')]({},_0x22e0c9,_0x323fbc[_0x55b0('0x42')]);return db[_0x55b0('0x2f')][_0x55b0('0x48')](_0x22e0c9)['then'](handleEntityNotFound(_0x10bbd9,null))['then'](respondWithResult(_0x10bbd9,null))[_0x55b0('0x49')](handleError(_0x10bbd9,null));};exports[_0x55b0('0x4a')]=function(_0x358b0a,_0x42783e){return db['ZendeskField']['create'](_0x358b0a[_0x55b0('0x4b')],{})[_0x55b0('0x29')](respondWithResult(_0x42783e,0xc9))[_0x55b0('0x49')](handleError(_0x42783e,null));};exports['update']=function(_0x4b2df2,_0x7e2fc){if(_0x4b2df2['body']['id']){delete _0x4b2df2[_0x55b0('0x4b')]['id'];}return db[_0x55b0('0x2f')][_0x55b0('0x48')]({'where':{'id':_0x4b2df2[_0x55b0('0x4c')]['id']}})['then'](handleEntityNotFound(_0x7e2fc,null))[_0x55b0('0x29')](saveUpdates(_0x4b2df2['body'],null))[_0x55b0('0x29')](respondWithResult(_0x7e2fc,null))[_0x55b0('0x49')](handleError(_0x7e2fc,null));};exports[_0x55b0('0x28')]=function(_0x955c43,_0xe15280){return db['ZendeskField'][_0x55b0('0x48')]({'where':{'id':_0x955c43[_0x55b0('0x4c')]['id']}})[_0x55b0('0x29')](handleEntityNotFound(_0xe15280,null))[_0x55b0('0x29')](removeEntity(_0xe15280,null))['catch'](handleError(_0xe15280,null));};
\ No newline at end of file
index 516f17c..39664a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x269c=['FieldId','lodash','util','moment','bluebird','request-promise','path','rimraf','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x269c,0x69));var _0xc269=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x269c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc269('0x0'));var util=require(_0xc269('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc269('0x2'));var BPromise=require(_0xc269('0x3'));var rp=require(_0xc269('0x4'));var fs=require('fs');var path=require(_0xc269('0x5'));var rimraf=require(_0xc269('0x6'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0xc269('0x7')]=function(_0xfcc1c3,_0x231f6d){return _0xfcc1c3[_0xc269('0x8')](_0xc269('0x9'),attributes,{'tableName':_0xc269('0xa'),'paranoid':![],'indexes':[{'name':_0xc269('0xb'),'fields':['idField',_0xc269('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x12ca=['int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x46b1c9,_0x169f87){var _0x17569c=function(_0x4b7c45){while(--_0x4b7c45){_0x46b1c9['push'](_0x46b1c9['shift']());}};_0x17569c(++_0x169f87);}(_0x12ca,0x154));var _0xa12c=function(_0x50e8be,_0x51a7c4){_0x50e8be=_0x50e8be-0x0;var _0x2b7ffb=_0x12ca[_0x50e8be];return _0x2b7ffb;};'use strict';var _=require(_0xa12c('0x0'));var util=require(_0xa12c('0x1'));var logger=require(_0xa12c('0x2'))(_0xa12c('0x3'));var moment=require(_0xa12c('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa12c('0x5'));var rimraf=require(_0xa12c('0x6'));var config=require(_0xa12c('0x7'));var attributes=require('./intZendeskField.attributes');module[_0xa12c('0x8')]=function(_0x2b789e,_0x470caa){return _0x2b789e[_0xa12c('0x9')]('ZendeskField',attributes,{'tableName':_0xa12c('0xa'),'paranoid':![],'indexes':[{'name':_0xa12c('0xb'),'fields':[_0xa12c('0xc'),_0xa12c('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ac66efc..8e6b50d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa99a=['jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','code','ZendeskField,\x20%s,\x20%s','message','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x5308bb,_0x4f21f7){var _0x3983f8=function(_0x19d4f8){while(--_0x19d4f8){_0x5308bb['push'](_0x5308bb['shift']());}};_0x3983f8(++_0x4f21f7);}(_0xa99a,0xfc));var _0xaa99=function(_0x2df8f2,_0x4e0742){_0x2df8f2=_0x2df8f2-0x0;var _0x2c3926=_0xa99a[_0x2df8f2];return _0x2c3926;};'use strict';var _=require(_0xaa99('0x0'));var util=require(_0xaa99('0x1'));var moment=require(_0xaa99('0x2'));var BPromise=require(_0xaa99('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaa99('0x4'));var db=require(_0xaa99('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaa99('0x6'))(_0xaa99('0x7'));var config=require('../../config/environment');var jayson=require(_0xaa99('0x8'));var client=jayson[_0xaa99('0x9')][_0xaa99('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2d8cdc,_0xaba518,_0x42df22){return new BPromise(function(_0x37ad27,_0x48f2d5){return client[_0xaa99('0xb')](_0x2d8cdc,_0x42df22)['then'](function(_0x45782a){logger[_0xaa99('0xc')]('ZendeskField,\x20%s,\x20%s',_0xaba518,_0xaa99('0xd'));logger[_0xaa99('0xe')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0xaba518,_0xaa99('0xd'),JSON[_0xaa99('0xf')](_0x45782a));if(_0x45782a[_0xaa99('0x10')]){if(_0x45782a[_0xaa99('0x10')][_0xaa99('0x11')]===0x1f4){logger[_0xaa99('0x10')](_0xaa99('0x12'),_0xaba518,_0x45782a[_0xaa99('0x10')][_0xaa99('0x13')]);return _0x48f2d5(_0x45782a[_0xaa99('0x10')][_0xaa99('0x13')]);}logger[_0xaa99('0x10')](_0xaa99('0x12'),_0xaba518,_0x45782a[_0xaa99('0x10')][_0xaa99('0x13')]);return _0x37ad27(_0x45782a['error'][_0xaa99('0x13')]);}else{logger['info'](_0xaa99('0x12'),_0xaba518,_0xaa99('0xd'));_0x37ad27(_0x45782a['result'][_0xaa99('0x13')]);}})['catch'](function(_0x98e0b1){logger['error'](_0xaa99('0x12'),_0xaba518,_0x98e0b1);_0x48f2d5(_0x98e0b1);});});}
\ No newline at end of file
+var _0x322a=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x534115,_0x477054){var _0x5bdd56=function(_0x4a548d){while(--_0x4a548d){_0x534115['push'](_0x534115['shift']());}};_0x5bdd56(++_0x477054);}(_0x322a,0x1a0));var _0xa322=function(_0x14e27a,_0x3b4136){_0x14e27a=_0x14e27a-0x0;var _0x288688=_0x322a[_0x14e27a];return _0x288688;};'use strict';var _=require(_0xa322('0x0'));var util=require(_0xa322('0x1'));var moment=require(_0xa322('0x2'));var BPromise=require(_0xa322('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa322('0x4'));var db=require(_0xa322('0x5'))['db'];var utils=require(_0xa322('0x6'));var logger=require(_0xa322('0x7'))('rpc');var config=require(_0xa322('0x8'));var jayson=require(_0xa322('0x9'));var client=jayson['client'][_0xa322('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x161f76,_0xbeb4d9,_0x317120){return new BPromise(function(_0x40f891,_0x31fbcd){return client[_0xa322('0xb')](_0x161f76,_0x317120)[_0xa322('0xc')](function(_0x33f19c){logger[_0xa322('0xd')](_0xa322('0xe'),_0xbeb4d9,_0xa322('0xf'));logger[_0xa322('0x10')](_0xa322('0x11'),_0xbeb4d9,'request\x20sent',JSON[_0xa322('0x12')](_0x33f19c));if(_0x33f19c[_0xa322('0x13')]){if(_0x33f19c[_0xa322('0x13')]['code']===0x1f4){logger[_0xa322('0x13')](_0xa322('0xe'),_0xbeb4d9,_0x33f19c['error'][_0xa322('0x14')]);return _0x31fbcd(_0x33f19c[_0xa322('0x13')]['message']);}logger[_0xa322('0x13')](_0xa322('0xe'),_0xbeb4d9,_0x33f19c['error'][_0xa322('0x14')]);return _0x40f891(_0x33f19c['error'][_0xa322('0x14')]);}else{logger['info']('ZendeskField,\x20%s,\x20%s',_0xbeb4d9,'request\x20sent');_0x40f891(_0x33f19c[_0xa322('0x15')][_0xa322('0x14')]);}})[_0xa322('0x16')](function(_0x4bbac9){logger[_0xa322('0x13')](_0xa322('0xe'),_0xbeb4d9,_0x4bbac9);_0x31fbcd(_0x4bbac9);});});}
\ No newline at end of file
index 468fbbc..61ccd07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa775=['./intZohoAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4f6a08,_0x5230df){var _0x59440c=function(_0x2062bc){while(--_0x2062bc){_0x4f6a08['push'](_0x4f6a08['shift']());}};_0x59440c(++_0x5230df);}(_0xa775,0xd5));var _0x5a77=function(_0x15deab,_0x192db1){_0x15deab=_0x15deab-0x0;var _0x2b01b4=_0xa775[_0x15deab];return _0x2b01b4;};'use strict';var multer=require(_0x5a77('0x0'));var util=require(_0x5a77('0x1'));var path=require(_0x5a77('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x5a77('0x3'));var auth=require(_0x5a77('0x4'));var interaction=require(_0x5a77('0x5'));var config=require(_0x5a77('0x6'));var controller=require(_0x5a77('0x7'));router[_0x5a77('0x8')]('/',auth[_0x5a77('0x9')](),controller[_0x5a77('0xa')]);router['get']('/:id',auth[_0x5a77('0x9')](),controller[_0x5a77('0xb')]);router[_0x5a77('0x8')](_0x5a77('0xc'),auth['isAuthenticated'](),controller[_0x5a77('0xd')]);router[_0x5a77('0x8')](_0x5a77('0xe'),auth['isAuthenticated'](),controller[_0x5a77('0xf')]);router[_0x5a77('0x10')]('/',auth[_0x5a77('0x9')](),controller[_0x5a77('0x11')]);router[_0x5a77('0x10')](_0x5a77('0xc'),auth[_0x5a77('0x9')](),controller[_0x5a77('0x12')]);router[_0x5a77('0x13')](_0x5a77('0x14'),auth[_0x5a77('0x9')](),controller[_0x5a77('0x15')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x02e4=['/:id','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','get','/:id/configurations','getConfigurations','/:id/fields','post','create','put','update'];(function(_0x19b464,_0x5f30ab){var _0x30c598=function(_0x1f0abe){while(--_0x1f0abe){_0x19b464['push'](_0x19b464['shift']());}};_0x30c598(++_0x5f30ab);}(_0x02e4,0x67));var _0x402e=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x02e4[_0x126558];return _0x1f6d14;};'use strict';var multer=require('multer');var util=require(_0x402e('0x0'));var path=require('path');var timeout=require(_0x402e('0x1'));var express=require('express');var router=express[_0x402e('0x2')]();var fs_extra=require(_0x402e('0x3'));var auth=require(_0x402e('0x4'));var interaction=require(_0x402e('0x5'));var config=require(_0x402e('0x6'));var controller=require(_0x402e('0x7'));router['get']('/',auth[_0x402e('0x8')](),controller['index']);router[_0x402e('0x9')]('/:id',auth[_0x402e('0x8')](),controller['show']);router[_0x402e('0x9')](_0x402e('0xa'),auth[_0x402e('0x8')](),controller[_0x402e('0xb')]);router[_0x402e('0x9')](_0x402e('0xc'),auth[_0x402e('0x8')](),controller['getFields']);router[_0x402e('0xd')]('/',auth[_0x402e('0x8')](),controller[_0x402e('0xe')]);router[_0x402e('0xd')]('/:id/configurations',auth[_0x402e('0x8')](),controller['addConfiguration']);router[_0x402e('0xf')]('/:id',auth[_0x402e('0x8')](),controller[_0x402e('0x10')]);router['delete'](_0x402e('0x11'),auth['isAuthenticated'](),controller[_0x402e('0x12')]);module[_0x402e('0x13')]=router;
\ No newline at end of file
index 1a3ab92..7e781c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd50=['STRING','sequelize','exports'];(function(_0xd1b4d7,_0x28b2c1){var _0x3002ec=function(_0x3d95ce){while(--_0x3d95ce){_0xd1b4d7['push'](_0xd1b4d7['shift']());}};_0x3002ec(++_0x28b2c1);}(_0xbd50,0x196));var _0x0bd5=function(_0x49988d,_0x15dae4){_0x49988d=_0x49988d-0x0;var _0x2259f7=_0xbd50[_0x49988d];return _0x2259f7;};'use strict';var Sequelize=require(_0x0bd5('0x0'));module[_0x0bd5('0x1')]={'name':{'type':Sequelize[_0x0bd5('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x0bd5('0x2')]},'zone':{'type':Sequelize[_0x0bd5('0x2')]},'clientId':{'type':Sequelize[_0x0bd5('0x2')]},'clientSecret':{'type':Sequelize[_0x0bd5('0x2')]},'serverUrl':{'type':Sequelize[_0x0bd5('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb821=['STRING','exports'];(function(_0x4e5552,_0x19ec4e){var _0x60a338=function(_0x40c70e){while(--_0x40c70e){_0x4e5552['push'](_0x4e5552['shift']());}};_0x60a338(++_0x19ec4e);}(_0xb821,0xa7));var _0x1b82=function(_0x5cd7df,_0x58570d){_0x5cd7df=_0x5cd7df-0x0;var _0x3b4cc7=_0xb821[_0x5cd7df];return _0x3b4cc7;};'use strict';var Sequelize=require('sequelize');module[_0x1b82('0x0')]={'name':{'type':Sequelize[_0x1b82('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x1b82('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x1b82('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0x1b82('0x1')]},'refreshToken':{'type':Sequelize[_0x1b82('0x1')]}};
\ No newline at end of file
index fabfeeb..c45bdb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6092=['keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','include','find','create','body','findOne','getConfigurations','addConfiguration','AccountId','getDescriptions','channel','ZohoConfiguration','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientSecret','refresh_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Type','remove','includes','api_name','system_mandatory','display_label','custom_field','data_type','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','save','then','destroy','error','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','model','query'];(function(_0xbf9484,_0x2cfc57){var _0x5dd3ad=function(_0x345212){while(--_0x345212){_0xbf9484['push'](_0xbf9484['shift']());}};_0x5dd3ad(++_0x2cfc57);}(_0x6092,0xc6));var _0x2609=function(_0x3037c7,_0x35c957){_0x3037c7=_0x3037c7-0x0;var _0x54212b=_0x6092[_0x3037c7];return _0x54212b;};'use strict';var emlformat=require(_0x2609('0x0'));var rimraf=require(_0x2609('0x1'));var zipdir=require(_0x2609('0x2'));var jsonpatch=require(_0x2609('0x3'));var rp=require(_0x2609('0x4'));var moment=require(_0x2609('0x5'));var BPromise=require(_0x2609('0x6'));var Mustache=require('mustache');var util=require(_0x2609('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2609('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2609('0x9'));var squel=require(_0x2609('0xa'));var crypto=require(_0x2609('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2609('0xc'));var toCsv=require('to-csv');var querystring=require(_0x2609('0xd'));var Papa=require(_0x2609('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2609('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2609('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x2609('0x11'));var config=require(_0x2609('0x12'));var licenseUtil=require(_0x2609('0x13'));var db=require(_0x2609('0x14'))['db'];var integrations=require(_0x2609('0x15'));function respondWithStatusCode(_0xfccf4d,_0x7e13f6){_0x7e13f6=_0x7e13f6||0xcc;return function(_0xb1b36e){if(_0xb1b36e){return _0xfccf4d[_0x2609('0x16')](_0x7e13f6);}return _0xfccf4d[_0x2609('0x17')](_0x7e13f6)[_0x2609('0x18')]();};}function respondWithResult(_0x9ae2a6,_0x1570e2){_0x1570e2=_0x1570e2||0xc8;return function(_0x388674){if(_0x388674){return _0x9ae2a6[_0x2609('0x17')](_0x1570e2)[_0x2609('0x19')](_0x388674);}};}function respondWithFilteredResult(_0xccba5a,_0x18d7b9){return function(_0xd054ae){if(_0xd054ae){var _0x6e866e=typeof _0x18d7b9['offset']===_0x2609('0x1a')&&typeof _0x18d7b9[_0x2609('0x1b')]===_0x2609('0x1a');var _0x5032b0=_0xd054ae[_0x2609('0x1c')];var _0x5bbc3e=_0x6e866e?0x0:_0x18d7b9[_0x2609('0x1d')];var _0xe891d0=_0x6e866e?_0xd054ae[_0x2609('0x1c')]:_0x18d7b9[_0x2609('0x1d')]+_0x18d7b9[_0x2609('0x1b')];var _0x36e337;if(_0xe891d0>=_0x5032b0){_0xe891d0=_0x5032b0;_0x36e337=0xc8;}else{_0x36e337=0xce;}_0xccba5a['status'](_0x36e337);return _0xccba5a[_0x2609('0x1e')](_0x2609('0x1f'),_0x5bbc3e+'-'+_0xe891d0+'/'+_0x5032b0)['json'](_0xd054ae);}return null;};}function patchUpdates(_0x59aa49){return function(_0x20f0f0){try{jsonpatch['apply'](_0x20f0f0,_0x59aa49,!![]);}catch(_0x1bfa27){return BPromise['reject'](_0x1bfa27);}return _0x20f0f0[_0x2609('0x20')]();};}function saveUpdates(_0x575fe8,_0x5e8b16){return function(_0x5b3d22){if(_0x5b3d22){return _0x5b3d22['update'](_0x575fe8)[_0x2609('0x21')](function(_0x21d905){return _0x21d905;});}return null;};}function removeEntity(_0x5bf7c4,_0x7cf65c){return function(_0x341a8d){if(_0x341a8d){return _0x341a8d[_0x2609('0x22')]()[_0x2609('0x21')](function(){_0x5bf7c4[_0x2609('0x17')](0xcc)[_0x2609('0x18')]();});}};}function handleEntityNotFound(_0x559607,_0x46500b){return function(_0x3e705f){if(!_0x3e705f){_0x559607[_0x2609('0x16')](0x194);}return _0x3e705f;};}function handleError(_0x3381df,_0x11a603){_0x11a603=_0x11a603||0x1f4;return function(_0x53d04e){logger[_0x2609('0x23')](_0x53d04e['stack']);if(_0x53d04e[_0x2609('0x24')]){delete _0x53d04e[_0x2609('0x24')];}_0x3381df[_0x2609('0x17')](_0x11a603)[_0x2609('0x25')](_0x53d04e);};}exports[_0x2609('0x26')]=function(_0x30a009,_0x37b245){var _0x29ebf7={},_0xb639b7={},_0xfc3f42={'count':0x0,'rows':[]};var _0x529c17=_[_0x2609('0x27')](db[_0x2609('0x28')][_0x2609('0x29')],function(_0x1ae736){return{'name':_0x1ae736[_0x2609('0x2a')],'type':_0x1ae736[_0x2609('0x2b')]['key']};});_0xb639b7[_0x2609('0x2c')]=_[_0x2609('0x27')](_0x529c17,_0x2609('0x24'));_0xb639b7[_0x2609('0x2d')]=_[_0x2609('0x2e')](_0x30a009[_0x2609('0x2d')]);_0xb639b7['filters']=_[_0x2609('0x2f')](_0xb639b7['model'],_0xb639b7[_0x2609('0x2d')]);_0x29ebf7[_0x2609('0x30')]=_[_0x2609('0x2f')](_0xb639b7[_0x2609('0x2c')],qs['fields'](_0x30a009[_0x2609('0x2d')][_0x2609('0x31')]));_0x29ebf7['attributes']=_0x29ebf7['attributes'][_0x2609('0x32')]?_0x29ebf7[_0x2609('0x30')]:_0xb639b7[_0x2609('0x2c')];if(!_0x30a009[_0x2609('0x2d')][_0x2609('0x33')](_0x2609('0x34'))){_0x29ebf7[_0x2609('0x1b')]=qs[_0x2609('0x1b')](_0x30a009['query']['limit']);_0x29ebf7[_0x2609('0x1d')]=qs['offset'](_0x30a009[_0x2609('0x2d')][_0x2609('0x1d')]);}_0x29ebf7[_0x2609('0x35')]=qs[_0x2609('0x36')](_0x30a009['query'][_0x2609('0x36')]);_0x29ebf7[_0x2609('0x37')]=qs[_0x2609('0x38')](_[_0x2609('0x39')](_0x30a009[_0x2609('0x2d')],_0xb639b7[_0x2609('0x38')]),_0x529c17);if(_0x30a009[_0x2609('0x2d')]['filter']){_0x29ebf7[_0x2609('0x37')]=_[_0x2609('0x3a')](_0x29ebf7[_0x2609('0x37')],{'$or':_['map'](_0x529c17,function(_0x1846eb){if(_0x1846eb['type']!==_0x2609('0x3b')){var _0x9fb48c={};_0x9fb48c[_0x1846eb['name']]={'$like':'%'+_0x30a009[_0x2609('0x2d')][_0x2609('0x3c')]+'%'};return _0x9fb48c;}})});}_0x29ebf7=_[_0x2609('0x3a')]({},_0x29ebf7,_0x30a009[_0x2609('0x3d')]);var _0x435b6a={'where':_0x29ebf7[_0x2609('0x37')]};return db[_0x2609('0x28')][_0x2609('0x1c')](_0x435b6a)[_0x2609('0x21')](function(_0x35b791){_0xfc3f42[_0x2609('0x1c')]=_0x35b791;if(_0x30a009[_0x2609('0x2d')][_0x2609('0x3e')]){_0x29ebf7['include']=[{'all':!![]}];}return db[_0x2609('0x28')][_0x2609('0x3f')](_0x29ebf7);})[_0x2609('0x21')](function(_0x56f214){_0xfc3f42[_0x2609('0x40')]=_0x56f214;return _0xfc3f42;})[_0x2609('0x21')](respondWithFilteredResult(_0x37b245,_0x29ebf7))[_0x2609('0x41')](handleError(_0x37b245,null));};exports['show']=function(_0xf71a8e,_0x5039b5){var _0x421c61={'raw':![],'where':{'id':_0xf71a8e[_0x2609('0x42')]['id']}},_0xce838a={};_0xce838a[_0x2609('0x2c')]=_[_0x2609('0x2e')](db[_0x2609('0x28')][_0x2609('0x29')]);_0xce838a[_0x2609('0x2d')]=_[_0x2609('0x2e')](_0xf71a8e[_0x2609('0x2d')]);_0xce838a[_0x2609('0x38')]=_['intersection'](_0xce838a[_0x2609('0x2c')],_0xce838a[_0x2609('0x2d')]);_0x421c61[_0x2609('0x30')]=_[_0x2609('0x2f')](_0xce838a['model'],qs['fields'](_0xf71a8e[_0x2609('0x2d')][_0x2609('0x31')]));_0x421c61['attributes']=_0x421c61[_0x2609('0x30')][_0x2609('0x32')]?_0x421c61[_0x2609('0x30')]:_0xce838a[_0x2609('0x2c')];if(_0xf71a8e['query'][_0x2609('0x3e')]){_0x421c61[_0x2609('0x43')]=[{'all':!![]}];}_0x421c61=_[_0x2609('0x3a')]({},_0x421c61,_0xf71a8e['options']);return db[_0x2609('0x28')][_0x2609('0x44')](_0x421c61)['then'](handleEntityNotFound(_0x5039b5,null))[_0x2609('0x21')](respondWithResult(_0x5039b5,null))[_0x2609('0x41')](handleError(_0x5039b5,null));};exports[_0x2609('0x45')]=function(_0x4eccb3,_0x17e457){return db['ZohoAccount']['create'](_0x4eccb3[_0x2609('0x46')],{})[_0x2609('0x21')](respondWithResult(_0x17e457,0xc9))[_0x2609('0x41')](handleError(_0x17e457,null));};exports['update']=function(_0x40f354,_0x5c47dc){if(_0x40f354[_0x2609('0x46')]['id']){delete _0x40f354[_0x2609('0x46')]['id'];}return db[_0x2609('0x28')]['find']({'where':{'id':_0x40f354[_0x2609('0x42')]['id']}})['then'](handleEntityNotFound(_0x5c47dc,null))[_0x2609('0x21')](saveUpdates(_0x40f354[_0x2609('0x46')],null))[_0x2609('0x21')](respondWithResult(_0x5c47dc,null))[_0x2609('0x41')](handleError(_0x5c47dc,null));};exports[_0x2609('0x22')]=function(_0x4a1335,_0x9168dc){return db[_0x2609('0x28')][_0x2609('0x44')]({'where':{'id':_0x4a1335[_0x2609('0x42')]['id']}})[_0x2609('0x21')](handleEntityNotFound(_0x9168dc,null))[_0x2609('0x21')](removeEntity(_0x9168dc,null))[_0x2609('0x41')](handleError(_0x9168dc,null));};exports['getConfigurations']=function(_0x53ca8b,_0x8b6bd2,_0x23ab97){var _0x28b5a0={};var _0x37a6c1={};var _0x37e3f8;var _0x20616c;return db[_0x2609('0x28')][_0x2609('0x47')]({'where':{'id':_0x53ca8b[_0x2609('0x42')]['id']}})[_0x2609('0x21')](handleEntityNotFound(_0x8b6bd2,null))[_0x2609('0x21')](function(_0x53de0d){if(_0x53de0d){_0x37e3f8=_0x53de0d;_0x37a6c1[_0x2609('0x2c')]=_[_0x2609('0x2e')](db['ZohoConfiguration'][_0x2609('0x29')]);_0x37a6c1[_0x2609('0x2d')]=_['keys'](_0x53ca8b[_0x2609('0x2d')]);_0x37a6c1[_0x2609('0x38')]=_[_0x2609('0x2f')](_0x37a6c1[_0x2609('0x2c')],_0x37a6c1[_0x2609('0x2d')]);_0x28b5a0['attributes']=_[_0x2609('0x2f')](_0x37a6c1[_0x2609('0x2c')],qs['fields'](_0x53ca8b['query']['fields']));_0x28b5a0[_0x2609('0x30')]=_0x28b5a0[_0x2609('0x30')]['length']?_0x28b5a0[_0x2609('0x30')]:_0x37a6c1['model'];_0x28b5a0[_0x2609('0x35')]=qs[_0x2609('0x36')](_0x53ca8b[_0x2609('0x2d')]['sort']);_0x28b5a0[_0x2609('0x37')]=qs[_0x2609('0x38')](_[_0x2609('0x39')](_0x53ca8b[_0x2609('0x2d')],_0x37a6c1[_0x2609('0x38')]));if(_0x53ca8b['query']['filter']){_0x28b5a0[_0x2609('0x37')]=_[_0x2609('0x3a')](_0x28b5a0[_0x2609('0x37')],{'$or':_[_0x2609('0x27')](_0x28b5a0[_0x2609('0x30')],function(_0x4cf8fa){var _0x43010d={};_0x43010d[_0x4cf8fa]={'$like':'%'+_0x53ca8b[_0x2609('0x2d')][_0x2609('0x3c')]+'%'};return _0x43010d;})});}_0x28b5a0=_[_0x2609('0x3a')]({},_0x28b5a0,_0x53ca8b[_0x2609('0x3d')]);return _0x37e3f8['getConfigurations'](_0x28b5a0);}})[_0x2609('0x21')](function(_0x477d72){if(_0x477d72){_0x20616c=_0x477d72[_0x2609('0x32')];if(!_0x53ca8b[_0x2609('0x2d')][_0x2609('0x33')](_0x2609('0x34'))){_0x28b5a0[_0x2609('0x1b')]=qs[_0x2609('0x1b')](_0x53ca8b[_0x2609('0x2d')]['limit']);_0x28b5a0[_0x2609('0x1d')]=qs[_0x2609('0x1d')](_0x53ca8b['query'][_0x2609('0x1d')]);}return _0x37e3f8[_0x2609('0x48')](_0x28b5a0);}})[_0x2609('0x21')](function(_0x310d8b){if(_0x310d8b){return _0x310d8b?{'count':_0x20616c,'rows':_0x310d8b}:null;}})[_0x2609('0x21')](respondWithResult(_0x8b6bd2,null))['catch'](handleError(_0x8b6bd2,null));};exports[_0x2609('0x49')]=function(_0x1a9da0,_0x1902fb,_0x590701){if(_0x1a9da0[_0x2609('0x46')]['id']){delete _0x1a9da0['body']['id'];}return db[_0x2609('0x28')][_0x2609('0x47')]({'where':{'id':_0x1a9da0[_0x2609('0x42')]['id']}})['then'](handleEntityNotFound(_0x1902fb,null))['then'](function(_0x2cff54){if(_0x2cff54){_0x1a9da0[_0x2609('0x46')][_0x2609('0x4a')]=_0x2cff54['id'];_0x1a9da0[_0x2609('0x46')]['Subjects']=integrations['getSubjects'](_0x1a9da0[_0x2609('0x46')]['channel'],_0x1a9da0[_0x2609('0x46')]['type']);_0x1a9da0[_0x2609('0x46')]['Descriptions']=integrations[_0x2609('0x4b')](_0x1a9da0[_0x2609('0x46')][_0x2609('0x4c')],_0x1a9da0['body'][_0x2609('0x2b')]);return db[_0x2609('0x4d')][_0x2609('0x45')](_0x1a9da0[_0x2609('0x46')],{'include':[{'model':db[_0x2609('0x4e')],'as':'Subjects'},{'model':db[_0x2609('0x4e')],'as':_0x2609('0x4f')}]});}return null;})[_0x2609('0x21')](respondWithResult(_0x1902fb,null))[_0x2609('0x41')](handleError(_0x1902fb,null));};function getAccessToken(_0x7b68a2){return new Promise(function(_0x4439fd,_0x5e0b80){var _0x3a4b17;switch(_0x7b68a2[_0x2609('0x50')]){case'US':_0x3a4b17=_0x2609('0x51');break;case'AU':_0x3a4b17=_0x2609('0x52');break;case'EU':_0x3a4b17=_0x2609('0x53');break;case'IN':_0x3a4b17=_0x2609('0x54');break;case'CN':_0x3a4b17=_0x2609('0x55');break;default:_0x3a4b17=_0x2609('0x53');break;}var _0x117df9={'method':_0x2609('0x56'),'uri':_0x3a4b17+'/oauth/v2/token','qs':{'refresh_token':_0x7b68a2[_0x2609('0x57')],'client_id':_0x7b68a2['clientId'],'client_secret':_0x7b68a2[_0x2609('0x58')],'grant_type':_0x2609('0x59')},'json':!![]};return rp(_0x117df9)[_0x2609('0x21')](function(_0x48a12c){if(_0x48a12c['access_token']){_0x4439fd(_0x48a12c['access_token']);}else{_0x5e0b80(_0x2609('0x5a'));}})[_0x2609('0x41')](function(_0x518b89){_0x5e0b80(_0x518b89);});});}exports[_0x2609('0x5b')]=function(_0x4aa72d,_0x4e3d9e,_0x110b8e){var _0x5485d1,_0x13ea2d,_0x14a05d,_0x47460a,_0x59a05b;return db[_0x2609('0x28')]['findOne']({'where':{'id':_0x4aa72d[_0x2609('0x42')]['id']},'attributes':['id',_0x2609('0x5c'),_0x2609('0x50'),'clientId',_0x2609('0x58'),_0x2609('0x5d'),_0x2609('0x5e'),_0x2609('0x57')]})['then'](handleEntityNotFound(_0x4e3d9e,null))[_0x2609('0x21')](function(_0x263c09){_0x59a05b=_0x263c09;_0x5485d1=_0x59a05b[_0x2609('0x5c')];_0x13ea2d=_0x5485d1===_0x2609('0x5f')?'eu':'com';_0x14a05d=_0x59a05b[_0x2609('0x5d')];var _0x1aa78c=_0x14a05d[_0x2609('0x60')](-0x1);if(_0x1aa78c==='/'||_0x1aa78c==='\x5c'||_0x1aa78c===':'){_0x14a05d=_0x14a05d[_0x2609('0x61')](0x0,_0x14a05d[_0x2609('0x62')](_0x1aa78c));}if(!_0x59a05b[_0x2609('0x57')]){throw new Error(_0x2609('0x63'));}return getAccessToken(_0x59a05b);})[_0x2609('0x21')](function(_0xe01ef8){if(_0xe01ef8){return rp({'method':_0x2609('0x64'),'uri':util['format'](_0x2609('0x65'),_0x13ea2d),'qs':{'module':_0x2609('0x66')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0xe01ef8},'json':!![]});}})[_0x2609('0x21')](function(_0x2e119b){if(_0x2e119b){if(_0x2e119b['response']&&_0x2e119b[_0x2609('0x67')]['error']){throw new Error(_0x2e119b['response'][_0x2609('0x23')][_0x2609('0x68')]);}var _0x12cbfa=[];var _0x564853=[];var _0x25cd38=['Owner',_0x2609('0x69'),_0x2609('0x6a'),_0x2609('0x6b'),_0x2609('0x6c'),_0x2609('0x6d'),'Call_Start_Time',_0x2609('0x6e')];_0x564853=_[_0x2609('0x6f')](_0x2e119b[_0x2609('0x31')],function(_0x3784a1){return _0x25cd38[_0x2609('0x70')](_0x3784a1[_0x2609('0x71')]);});for(var _0x474b1d=0x0;_0x474b1d<_0x564853[_0x2609('0x32')];_0x474b1d++){if(_0x564853[_0x474b1d][_0x2609('0x72')]===![]){_0x12cbfa['push']({'id':_0x564853[_0x474b1d]['id'],'name':_0x564853[_0x474b1d][_0x2609('0x73')],'custom':_0x564853[_0x474b1d][_0x2609('0x74')],'options':_0x564853[_0x474b1d][_0x2609('0x75')]==='picklist'&&_0x564853[_0x474b1d]['pick_list_values'][_0x2609('0x32')]>-0x1?_[_0x2609('0x27')](_0x564853[_0x474b1d]['pick_list_values'],function(_0x6257a9){return{'name':_0x6257a9,'value':_0x6257a9};}):[]});}}return{'count':_0x12cbfa['length'],'rows':_0x12cbfa};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x4e3d9e,null))[_0x2609('0x41')](function(_0x571486){var _0x35fe97=_0x4aa72d['query'][_0x2609('0x76')]?0x1f4:_0x571486[_0x2609('0x77')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x2609('0x5b'),_0x35fe97,JSON[_0x2609('0x78')](_0x571486));delete _0x571486[_0x2609('0x24')];if(_0x35fe97===0x191){_0x35fe97=0x190;}_0x4e3d9e['status'](_0x35fe97)[_0x2609('0x25')](_0x4aa72d['query'][_0x2609('0x76')]?{'message':_0x2609('0x79'),'statusCode':_0x571486[_0x2609('0x77')]}:_0x571486);});};
\ No newline at end of file
+var _0x20bb=['ZohoAccount','includeAll','include','findAll','rows','catch','params','find','create','body','getConfigurations','findOne','ZohoConfiguration','sort','AccountId','Subjects','getSubjects','channel','getDescriptions','ZohoField','Descriptions','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','code','refreshToken','zoho.eu','com','slice','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Description','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','display_label','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options'];(function(_0x1ecfcf,_0x2079d3){var _0x140a35=function(_0x1c4ce1){while(--_0x1c4ce1){_0x1ecfcf['push'](_0x1ecfcf['shift']());}};_0x140a35(++_0x2079d3);}(_0x20bb,0xc0));var _0xb20b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x20bb[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb20b('0x0'));var jsonpatch=require(_0xb20b('0x1'));var rp=require(_0xb20b('0x2'));var moment=require(_0xb20b('0x3'));var BPromise=require(_0xb20b('0x4'));var Mustache=require('mustache');var util=require(_0xb20b('0x5'));var path=require(_0xb20b('0x6'));var sox=require(_0xb20b('0x7'));var csv=require('to-csv');var ejs=require(_0xb20b('0x8'));var fs=require('fs');var fs_extra=require(_0xb20b('0x9'));var _=require(_0xb20b('0xa'));var squel=require(_0xb20b('0xb'));var crypto=require(_0xb20b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb20b('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb20b('0xe'));var Papa=require(_0xb20b('0xf'));var Redis=require(_0xb20b('0x10'));var authService=require(_0xb20b('0x11'));var qs=require(_0xb20b('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb20b('0x13'));var utils=require(_0xb20b('0x14'));var config=require(_0xb20b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xb20b('0x16'))['db'];var integrations=require(_0xb20b('0x17'));function respondWithStatusCode(_0x343f7a,_0x30ab50){_0x30ab50=_0x30ab50||0xcc;return function(_0x2fe8c4){if(_0x2fe8c4){return _0x343f7a[_0xb20b('0x18')](_0x30ab50);}return _0x343f7a['status'](_0x30ab50)['end']();};}function respondWithResult(_0x3e6ce5,_0x320bd5){_0x320bd5=_0x320bd5||0xc8;return function(_0x195c76){if(_0x195c76){return _0x3e6ce5[_0xb20b('0x19')](_0x320bd5)['json'](_0x195c76);}};}function respondWithFilteredResult(_0x4925e2,_0x1a6418){return function(_0x288115){if(_0x288115){var _0x23d05b=typeof _0x1a6418[_0xb20b('0x1a')]===_0xb20b('0x1b')&&typeof _0x1a6418[_0xb20b('0x1c')]===_0xb20b('0x1b');var _0xf3203e=_0x288115[_0xb20b('0x1d')];var _0x432833=_0x23d05b?0x0:_0x1a6418[_0xb20b('0x1a')];var _0x404d3d=_0x23d05b?_0x288115[_0xb20b('0x1d')]:_0x1a6418[_0xb20b('0x1a')]+_0x1a6418[_0xb20b('0x1c')];var _0x44b899;if(_0x404d3d>=_0xf3203e){_0x404d3d=_0xf3203e;_0x44b899=0xc8;}else{_0x44b899=0xce;}_0x4925e2[_0xb20b('0x19')](_0x44b899);return _0x4925e2[_0xb20b('0x1e')](_0xb20b('0x1f'),_0x432833+'-'+_0x404d3d+'/'+_0xf3203e)[_0xb20b('0x20')](_0x288115);}return null;};}function patchUpdates(_0x1fd4de){return function(_0x30b32c){try{jsonpatch[_0xb20b('0x21')](_0x30b32c,_0x1fd4de,!![]);}catch(_0x3d2fe1){return BPromise[_0xb20b('0x22')](_0x3d2fe1);}return _0x30b32c['save']();};}function saveUpdates(_0x276bfe,_0x321455){return function(_0x4f049f){if(_0x4f049f){return _0x4f049f[_0xb20b('0x23')](_0x276bfe)[_0xb20b('0x24')](function(_0x5930da){return _0x5930da;});}return null;};}function removeEntity(_0x53f9e5,_0x11db35){return function(_0x33bb8b){if(_0x33bb8b){return _0x33bb8b[_0xb20b('0x25')]()[_0xb20b('0x24')](function(){_0x53f9e5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16a405,_0x274a7e){return function(_0xf9c90e){if(!_0xf9c90e){_0x16a405[_0xb20b('0x18')](0x194);}return _0xf9c90e;};}function handleError(_0x953d58,_0x2d6dc1){_0x2d6dc1=_0x2d6dc1||0x1f4;return function(_0x4c05c){logger[_0xb20b('0x26')](_0x4c05c['stack']);if(_0x4c05c[_0xb20b('0x27')]){delete _0x4c05c[_0xb20b('0x27')];}_0x953d58[_0xb20b('0x19')](_0x2d6dc1)[_0xb20b('0x28')](_0x4c05c);};}exports[_0xb20b('0x29')]=function(_0x3ae106,_0x57fe4d){var _0x12ade1={},_0x1a12e1={},_0x553b27={'count':0x0,'rows':[]};var _0x4cccb2=_[_0xb20b('0x2a')](db['ZohoAccount'][_0xb20b('0x2b')],function(_0x25d37a){return{'name':_0x25d37a[_0xb20b('0x2c')],'type':_0x25d37a[_0xb20b('0x2d')][_0xb20b('0x2e')]};});_0x1a12e1[_0xb20b('0x2f')]=_[_0xb20b('0x2a')](_0x4cccb2,_0xb20b('0x27'));_0x1a12e1[_0xb20b('0x30')]=_[_0xb20b('0x31')](_0x3ae106[_0xb20b('0x30')]);_0x1a12e1[_0xb20b('0x32')]=_[_0xb20b('0x33')](_0x1a12e1[_0xb20b('0x2f')],_0x1a12e1[_0xb20b('0x30')]);_0x12ade1[_0xb20b('0x34')]=_[_0xb20b('0x33')](_0x1a12e1['model'],qs[_0xb20b('0x35')](_0x3ae106['query'][_0xb20b('0x35')]));_0x12ade1[_0xb20b('0x34')]=_0x12ade1['attributes'][_0xb20b('0x36')]?_0x12ade1[_0xb20b('0x34')]:_0x1a12e1['model'];if(!_0x3ae106['query'][_0xb20b('0x37')](_0xb20b('0x38'))){_0x12ade1['limit']=qs[_0xb20b('0x1c')](_0x3ae106[_0xb20b('0x30')][_0xb20b('0x1c')]);_0x12ade1['offset']=qs[_0xb20b('0x1a')](_0x3ae106['query'][_0xb20b('0x1a')]);}_0x12ade1[_0xb20b('0x39')]=qs['sort'](_0x3ae106['query']['sort']);_0x12ade1[_0xb20b('0x3a')]=qs[_0xb20b('0x32')](_[_0xb20b('0x3b')](_0x3ae106[_0xb20b('0x30')],_0x1a12e1[_0xb20b('0x32')]),_0x4cccb2);if(_0x3ae106[_0xb20b('0x30')][_0xb20b('0x3c')]){_0x12ade1[_0xb20b('0x3a')]=_[_0xb20b('0x3d')](_0x12ade1[_0xb20b('0x3a')],{'$or':_[_0xb20b('0x2a')](_0x4cccb2,function(_0x5b800e){if(_0x5b800e[_0xb20b('0x2d')]!==_0xb20b('0x3e')){var _0x347a71={};_0x347a71[_0x5b800e['name']]={'$like':'%'+_0x3ae106['query'][_0xb20b('0x3c')]+'%'};return _0x347a71;}})});}_0x12ade1=_['merge']({},_0x12ade1,_0x3ae106[_0xb20b('0x3f')]);var _0x76c1dc={'where':_0x12ade1[_0xb20b('0x3a')]};return db[_0xb20b('0x40')][_0xb20b('0x1d')](_0x76c1dc)['then'](function(_0x1fddf6){_0x553b27[_0xb20b('0x1d')]=_0x1fddf6;if(_0x3ae106['query'][_0xb20b('0x41')]){_0x12ade1[_0xb20b('0x42')]=[{'all':!![]}];}return db[_0xb20b('0x40')][_0xb20b('0x43')](_0x12ade1);})[_0xb20b('0x24')](function(_0x347456){_0x553b27[_0xb20b('0x44')]=_0x347456;return _0x553b27;})[_0xb20b('0x24')](respondWithFilteredResult(_0x57fe4d,_0x12ade1))[_0xb20b('0x45')](handleError(_0x57fe4d,null));};exports['show']=function(_0x6307a8,_0x28cb48){var _0x2ef6f3={'raw':![],'where':{'id':_0x6307a8[_0xb20b('0x46')]['id']}},_0xb79060={};_0xb79060[_0xb20b('0x2f')]=_['keys'](db[_0xb20b('0x40')]['rawAttributes']);_0xb79060[_0xb20b('0x30')]=_[_0xb20b('0x31')](_0x6307a8['query']);_0xb79060[_0xb20b('0x32')]=_[_0xb20b('0x33')](_0xb79060[_0xb20b('0x2f')],_0xb79060['query']);_0x2ef6f3[_0xb20b('0x34')]=_[_0xb20b('0x33')](_0xb79060[_0xb20b('0x2f')],qs[_0xb20b('0x35')](_0x6307a8[_0xb20b('0x30')][_0xb20b('0x35')]));_0x2ef6f3[_0xb20b('0x34')]=_0x2ef6f3['attributes'][_0xb20b('0x36')]?_0x2ef6f3[_0xb20b('0x34')]:_0xb79060[_0xb20b('0x2f')];if(_0x6307a8['query'][_0xb20b('0x41')]){_0x2ef6f3[_0xb20b('0x42')]=[{'all':!![]}];}_0x2ef6f3=_['merge']({},_0x2ef6f3,_0x6307a8[_0xb20b('0x3f')]);return db[_0xb20b('0x40')][_0xb20b('0x47')](_0x2ef6f3)[_0xb20b('0x24')](handleEntityNotFound(_0x28cb48,null))[_0xb20b('0x24')](respondWithResult(_0x28cb48,null))[_0xb20b('0x45')](handleError(_0x28cb48,null));};exports[_0xb20b('0x48')]=function(_0x1a0368,_0x13844f){return db[_0xb20b('0x40')][_0xb20b('0x48')](_0x1a0368[_0xb20b('0x49')],{})[_0xb20b('0x24')](respondWithResult(_0x13844f,0xc9))[_0xb20b('0x45')](handleError(_0x13844f,null));};exports[_0xb20b('0x23')]=function(_0x2dc26d,_0x1c2b01){if(_0x2dc26d[_0xb20b('0x49')]['id']){delete _0x2dc26d['body']['id'];}return db[_0xb20b('0x40')][_0xb20b('0x47')]({'where':{'id':_0x2dc26d[_0xb20b('0x46')]['id']}})[_0xb20b('0x24')](handleEntityNotFound(_0x1c2b01,null))[_0xb20b('0x24')](saveUpdates(_0x2dc26d[_0xb20b('0x49')],null))['then'](respondWithResult(_0x1c2b01,null))[_0xb20b('0x45')](handleError(_0x1c2b01,null));};exports['destroy']=function(_0x2d6bd8,_0x15440b){return db[_0xb20b('0x40')][_0xb20b('0x47')]({'where':{'id':_0x2d6bd8[_0xb20b('0x46')]['id']}})[_0xb20b('0x24')](handleEntityNotFound(_0x15440b,null))[_0xb20b('0x24')](removeEntity(_0x15440b,null))[_0xb20b('0x45')](handleError(_0x15440b,null));};exports[_0xb20b('0x4a')]=function(_0x5e8d05,_0x3de471,_0x2402c7){var _0x88d8b6={};var _0x46b6c0={};var _0x1859f8;var _0x5a536e;return db[_0xb20b('0x40')][_0xb20b('0x4b')]({'where':{'id':_0x5e8d05[_0xb20b('0x46')]['id']}})[_0xb20b('0x24')](handleEntityNotFound(_0x3de471,null))[_0xb20b('0x24')](function(_0x1f161c){if(_0x1f161c){_0x1859f8=_0x1f161c;_0x46b6c0[_0xb20b('0x2f')]=_[_0xb20b('0x31')](db[_0xb20b('0x4c')][_0xb20b('0x2b')]);_0x46b6c0['query']=_['keys'](_0x5e8d05[_0xb20b('0x30')]);_0x46b6c0[_0xb20b('0x32')]=_[_0xb20b('0x33')](_0x46b6c0['model'],_0x46b6c0[_0xb20b('0x30')]);_0x88d8b6['attributes']=_['intersection'](_0x46b6c0[_0xb20b('0x2f')],qs[_0xb20b('0x35')](_0x5e8d05[_0xb20b('0x30')][_0xb20b('0x35')]));_0x88d8b6[_0xb20b('0x34')]=_0x88d8b6[_0xb20b('0x34')][_0xb20b('0x36')]?_0x88d8b6[_0xb20b('0x34')]:_0x46b6c0[_0xb20b('0x2f')];_0x88d8b6[_0xb20b('0x39')]=qs['sort'](_0x5e8d05['query'][_0xb20b('0x4d')]);_0x88d8b6[_0xb20b('0x3a')]=qs[_0xb20b('0x32')](_[_0xb20b('0x3b')](_0x5e8d05[_0xb20b('0x30')],_0x46b6c0['filters']));if(_0x5e8d05['query'][_0xb20b('0x3c')]){_0x88d8b6[_0xb20b('0x3a')]=_[_0xb20b('0x3d')](_0x88d8b6[_0xb20b('0x3a')],{'$or':_['map'](_0x88d8b6[_0xb20b('0x34')],function(_0x59cea1){var _0x3e4c21={};_0x3e4c21[_0x59cea1]={'$like':'%'+_0x5e8d05['query']['filter']+'%'};return _0x3e4c21;})});}_0x88d8b6=_[_0xb20b('0x3d')]({},_0x88d8b6,_0x5e8d05['options']);return _0x1859f8[_0xb20b('0x4a')](_0x88d8b6);}})[_0xb20b('0x24')](function(_0x142805){if(_0x142805){_0x5a536e=_0x142805[_0xb20b('0x36')];if(!_0x5e8d05[_0xb20b('0x30')][_0xb20b('0x37')]('nolimit')){_0x88d8b6[_0xb20b('0x1c')]=qs[_0xb20b('0x1c')](_0x5e8d05[_0xb20b('0x30')][_0xb20b('0x1c')]);_0x88d8b6[_0xb20b('0x1a')]=qs[_0xb20b('0x1a')](_0x5e8d05[_0xb20b('0x30')]['offset']);}return _0x1859f8['getConfigurations'](_0x88d8b6);}})[_0xb20b('0x24')](function(_0x3a09cd){if(_0x3a09cd){return _0x3a09cd?{'count':_0x5a536e,'rows':_0x3a09cd}:null;}})['then'](respondWithResult(_0x3de471,null))[_0xb20b('0x45')](handleError(_0x3de471,null));};exports['addConfiguration']=function(_0x1cb162,_0x22ae4b,_0x386552){if(_0x1cb162[_0xb20b('0x49')]['id']){delete _0x1cb162[_0xb20b('0x49')]['id'];}return db[_0xb20b('0x40')][_0xb20b('0x4b')]({'where':{'id':_0x1cb162[_0xb20b('0x46')]['id']}})[_0xb20b('0x24')](handleEntityNotFound(_0x22ae4b,null))[_0xb20b('0x24')](function(_0x20a670){if(_0x20a670){_0x1cb162[_0xb20b('0x49')][_0xb20b('0x4e')]=_0x20a670['id'];_0x1cb162[_0xb20b('0x49')][_0xb20b('0x4f')]=integrations[_0xb20b('0x50')](_0x1cb162[_0xb20b('0x49')][_0xb20b('0x51')],_0x1cb162['body']['type']);_0x1cb162['body']['Descriptions']=integrations[_0xb20b('0x52')](_0x1cb162['body'][_0xb20b('0x51')],_0x1cb162[_0xb20b('0x49')][_0xb20b('0x2d')]);return db['ZohoConfiguration'][_0xb20b('0x48')](_0x1cb162['body'],{'include':[{'model':db[_0xb20b('0x53')],'as':_0xb20b('0x4f')},{'model':db[_0xb20b('0x53')],'as':_0xb20b('0x54')}]});}return null;})[_0xb20b('0x24')](respondWithResult(_0x22ae4b,null))[_0xb20b('0x45')](handleError(_0x22ae4b,null));};function getAccessToken(_0x24a4d3){return new Promise(function(_0x4cfdf1,_0x10d170){var _0x578f5f;switch(_0x24a4d3[_0xb20b('0x55')]){case'US':_0x578f5f=_0xb20b('0x56');break;case'AU':_0x578f5f=_0xb20b('0x57');break;case'EU':_0x578f5f=_0xb20b('0x58');break;case'IN':_0x578f5f=_0xb20b('0x59');break;case'CN':_0x578f5f=_0xb20b('0x5a');break;default:_0x578f5f=_0xb20b('0x58');break;}var _0x12dbaa={'method':_0xb20b('0x5b'),'uri':_0x578f5f+_0xb20b('0x5c'),'qs':{'refresh_token':_0x24a4d3['refreshToken'],'client_id':_0x24a4d3[_0xb20b('0x5d')],'client_secret':_0x24a4d3['clientSecret'],'grant_type':_0xb20b('0x5e')},'json':!![]};return rp(_0x12dbaa)[_0xb20b('0x24')](function(_0x4dcbd3){if(_0x4dcbd3['access_token']){_0x4cfdf1(_0x4dcbd3[_0xb20b('0x5f')]);}else{_0x10d170(_0xb20b('0x60'));}})[_0xb20b('0x45')](function(_0x25721c){_0x10d170(_0x25721c);});});}exports[_0xb20b('0x61')]=function(_0x603036,_0x33bd83,_0x4bd200){var _0x5b771c,_0x5e1ee6,_0xf6d96f,_0x4d1298,_0x1cf4f1;return db[_0xb20b('0x40')]['findOne']({'where':{'id':_0x603036['params']['id']},'attributes':['id',_0xb20b('0x62'),'zone','clientId','clientSecret','serverUrl',_0xb20b('0x63'),_0xb20b('0x64')]})[_0xb20b('0x24')](handleEntityNotFound(_0x33bd83,null))['then'](function(_0x1712cf){_0x1cf4f1=_0x1712cf;_0x5b771c=_0x1cf4f1[_0xb20b('0x62')];_0x5e1ee6=_0x5b771c===_0xb20b('0x65')?'eu':_0xb20b('0x66');_0xf6d96f=_0x1cf4f1['serverUrl'];var _0x5b12ed=_0xf6d96f[_0xb20b('0x67')](-0x1);if(_0x5b12ed==='/'||_0x5b12ed==='\x5c'||_0x5b12ed===':'){_0xf6d96f=_0xf6d96f['substring'](0x0,_0xf6d96f['lastIndexOf'](_0x5b12ed));}if(!_0x1cf4f1[_0xb20b('0x64')]){throw new Error(_0xb20b('0x68'));}return getAccessToken(_0x1cf4f1);})[_0xb20b('0x24')](function(_0x46561e){if(_0x46561e){return rp({'method':_0xb20b('0x69'),'uri':util[_0xb20b('0x6a')](_0xb20b('0x6b'),_0x5e1ee6),'qs':{'module':_0xb20b('0x6c')},'headers':{'Authorization':_0xb20b('0x6d')+_0x46561e},'json':!![]});}})[_0xb20b('0x24')](function(_0x5deb39){if(_0x5deb39){if(_0x5deb39['response']&&_0x5deb39[_0xb20b('0x6e')]['error']){throw new Error(_0x5deb39[_0xb20b('0x6e')][_0xb20b('0x26')][_0xb20b('0x6f')]);}var _0x459076=[];var _0x4a4360=[];var _0x34629=['Owner','Subject',_0xb20b('0x70'),'WhoId',_0xb20b('0x71'),_0xb20b('0x72'),_0xb20b('0x73'),_0xb20b('0x74')];_0x4a4360=_[_0xb20b('0x75')](_0x5deb39[_0xb20b('0x35')],function(_0x232287){return _0x34629[_0xb20b('0x76')](_0x232287[_0xb20b('0x77')]);});for(var _0x24dec1=0x0;_0x24dec1<_0x4a4360[_0xb20b('0x36')];_0x24dec1++){if(_0x4a4360[_0x24dec1][_0xb20b('0x78')]===![]){_0x459076['push']({'id':_0x4a4360[_0x24dec1]['id'],'name':_0x4a4360[_0x24dec1][_0xb20b('0x79')],'custom':_0x4a4360[_0x24dec1]['custom_field'],'options':_0x4a4360[_0x24dec1]['data_type']==='picklist'&&_0x4a4360[_0x24dec1]['pick_list_values'][_0xb20b('0x36')]>-0x1?_[_0xb20b('0x2a')](_0x4a4360[_0x24dec1][_0xb20b('0x7a')],function(_0x314de0){return{'name':_0x314de0,'value':_0x314de0};}):[]});}}return{'count':_0x459076[_0xb20b('0x36')],'rows':_0x459076};}else{return{'count':0x0,'rows':[]};}})[_0xb20b('0x24')](respondWithResult(_0x33bd83,null))[_0xb20b('0x45')](function(_0x25f421){var _0x5b177e=_0x603036[_0xb20b('0x30')][_0xb20b('0x7b')]?0x1f4:_0x25f421[_0xb20b('0x7c')]||0x1f4;logger[_0xb20b('0x26')](_0xb20b('0x7d'),_0xb20b('0x61'),_0x5b177e,JSON[_0xb20b('0x7e')](_0x25f421));delete _0x25f421[_0xb20b('0x27')];if(_0x5b177e===0x191){_0x5b177e=0x190;}_0x33bd83[_0xb20b('0x19')](_0x5b177e)[_0xb20b('0x28')](_0x603036['query']['test']?{'message':_0xb20b('0x7f'),'statusCode':_0x25f421['statusCode']}:_0x25f421);});};
\ No newline at end of file
index 827a215..c14a5f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b8=['substring','https://accounts.zoho.in','POST','inspect','lodash','util','api','bluebird','path','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','changed','serverUrl','clientId','clientSecret','code','slice','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','/oauth/v2/token','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','host'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x99b8,0x1e4));var _0x899b=function(_0x4c6091,_0x3cf00f){_0x4c6091=_0x4c6091-0x0;var _0x16c412=_0x99b8[_0x4c6091];return _0x16c412;};'use strict';var _=require(_0x899b('0x0'));var util=require(_0x899b('0x1'));var logger=require('../../config/logger')(_0x899b('0x2'));var moment=require('moment');var BPromise=require(_0x899b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x899b('0x4'));var rimraf=require(_0x899b('0x5'));var config=require('../../config/environment');var attributes=require(_0x899b('0x6'));var integrations=require(_0x899b('0x7'));module[_0x899b('0x8')]=function(_0x202bce,_0x57d09e){return _0x202bce[_0x899b('0x9')](_0x899b('0xa'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3060db,_0x59d969,_0x1544dc){if(_0x3060db[_0x899b('0xb')]('zone')||_0x3060db[_0x899b('0xb')](_0x899b('0xc'))||_0x3060db[_0x899b('0xb')](_0x899b('0xd'))||_0x3060db[_0x899b('0xb')](_0x899b('0xe'))||_0x3060db[_0x899b('0xb')](_0x899b('0xf'))||_0x3060db[_0x899b('0xb')]('host')){var _0x239e03,_0x1b8622;_0x239e03=_0x3060db['serverUrl'];var _0x552309=_0x239e03[_0x899b('0x10')](-0x1);if(_0x552309==='/'||_0x552309==='\x5c'||_0x552309===':'){_0x239e03=_0x239e03['substring'](0x0,_0x239e03[_0x899b('0x11')](_0x552309));}switch(_0x3060db[_0x899b('0x12')]){case'US':_0x1b8622=_0x899b('0x13');break;case'AU':_0x1b8622=_0x899b('0x14');break;case'IN':_0x1b8622='https://accounts.zoho.in';break;case'CN':_0x1b8622=_0x899b('0x15');break;default:_0x1b8622=_0x899b('0x16');break;}var _0x55ec87={'method':'POST','uri':_0x1b8622+_0x899b('0x17'),'form':{'grant_type':'authorization_code','client_id':_0x3060db[_0x899b('0xd')],'client_secret':_0x3060db['clientSecret'],'redirect_uri':_0x3060db[_0x899b('0xc')],'code':_0x3060db[_0x899b('0xf')]},'headers':{'Content-Type':_0x899b('0x18')}};return rp(_0x55ec87)[_0x899b('0x19')](function(_0x590a33){var _0x2041ab=JSON[_0x899b('0x1a')](_0x590a33);if(_0x2041ab[_0x899b('0x1b')]){_0x3060db[_0x899b('0x1c')]=_0x2041ab['refresh_token'];logger[_0x899b('0x1d')](util['format'](_0x899b('0x1e'),_0x3060db['name'],_0x3060db['id']));}else{logger[_0x899b('0x1f')](util[_0x899b('0x20')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3060db['name'],_0x3060db['id']),util['inspect'](_0x2041ab,{'showHidden':![],'depth':null}));}return _0x1544dc(null,_0x59d969);})['catch'](function(_0x3adb38){logger[_0x899b('0x1f')](util[_0x899b('0x20')](_0x899b('0x21'),_0x3060db[_0x899b('0x22')],_0x3060db['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x1544dc(_0x3adb38);});}else{return _0x1544dc(null,_0x59d969);}},'beforeUpdate':function(_0x516dfa,_0x5d04ee,_0x6a3a38){if(_0x516dfa[_0x899b('0xb')]('zone')||_0x516dfa['changed'](_0x899b('0xc'))||_0x516dfa['changed'](_0x899b('0xd'))||_0x516dfa[_0x899b('0xb')](_0x899b('0xe'))||_0x516dfa[_0x899b('0xb')](_0x899b('0xf'))||_0x516dfa['changed'](_0x899b('0x23'))){var _0x124a9a,_0x379c18;_0x124a9a=_0x516dfa[_0x899b('0xc')];var _0x14b6a7=_0x124a9a[_0x899b('0x10')](-0x1);if(_0x14b6a7==='/'||_0x14b6a7==='\x5c'||_0x14b6a7===':'){_0x124a9a=_0x124a9a[_0x899b('0x24')](0x0,_0x124a9a[_0x899b('0x11')](_0x14b6a7));}switch(_0x516dfa[_0x899b('0x12')]){case'US':_0x379c18='https://accounts.zoho.com';break;case'AU':_0x379c18=_0x899b('0x14');break;case'IN':_0x379c18=_0x899b('0x25');break;case'CN':_0x379c18='https://accounts.zoho.com.cn';break;default:_0x379c18=_0x899b('0x16');break;}var _0x4d31a2={'method':_0x899b('0x26'),'uri':_0x379c18+_0x899b('0x17'),'form':{'grant_type':'authorization_code','client_id':_0x516dfa[_0x899b('0xd')],'client_secret':_0x516dfa[_0x899b('0xe')],'redirect_uri':_0x516dfa['serverUrl'],'code':_0x516dfa[_0x899b('0xf')]},'headers':{'Content-Type':_0x899b('0x18')}};return rp(_0x4d31a2)['then'](function(_0x501419){var _0x232a1e=JSON[_0x899b('0x1a')](_0x501419);if(_0x232a1e[_0x899b('0x1b')]){_0x516dfa[_0x899b('0x1c')]=_0x232a1e[_0x899b('0x1b')];logger['info'](util[_0x899b('0x20')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x516dfa['name'],_0x516dfa['id']));}else{logger['error'](util[_0x899b('0x20')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x516dfa[_0x899b('0x22')],_0x516dfa['id']),util['inspect'](_0x232a1e,{'showHidden':![],'depth':null}));}return _0x6a3a38(null,_0x5d04ee);})['catch'](function(_0x453fe5){logger[_0x899b('0x1f')](util[_0x899b('0x20')](_0x899b('0x21'),_0x516dfa['name'],_0x516dfa['id']),util[_0x899b('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x6a3a38(_0x453fe5);});}else{return _0x6a3a38(null,_0x5d04ee);}}}});};
\ No newline at end of file
+var _0x9820=['inspect','lastIndexOf','info','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','host','slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','code','application/x-www-form-urlencoded','then','parse','refreshToken','refresh_token','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch'];(function(_0x3b13e2,_0x3cd43d){var _0x29dd1f=function(_0x1c7677){while(--_0x1c7677){_0x3b13e2['push'](_0x3b13e2['shift']());}};_0x29dd1f(++_0x3cd43d);}(_0x9820,0x137));var _0x0982=function(_0x425670,_0x2975aa){_0x425670=_0x425670-0x0;var _0x5f1459=_0x9820[_0x425670];return _0x5f1459;};'use strict';var _=require(_0x0982('0x0'));var util=require(_0x0982('0x1'));var logger=require(_0x0982('0x2'))(_0x0982('0x3'));var moment=require('moment');var BPromise=require(_0x0982('0x4'));var rp=require(_0x0982('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0982('0x6'));var config=require(_0x0982('0x7'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x0982('0x8'));module[_0x0982('0x9')]=function(_0x4a9055,_0x37a527){return _0x4a9055[_0x0982('0xa')](_0x0982('0xb'),attributes,{'tableName':_0x0982('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4c6c1b,_0x3136ce,_0xfac140){if(_0x4c6c1b[_0x0982('0xd')](_0x0982('0xe'))||_0x4c6c1b[_0x0982('0xd')](_0x0982('0xf'))||_0x4c6c1b['changed'](_0x0982('0x10'))||_0x4c6c1b[_0x0982('0xd')](_0x0982('0x11'))||_0x4c6c1b[_0x0982('0xd')]('code')||_0x4c6c1b[_0x0982('0xd')](_0x0982('0x12'))){var _0x3fa544,_0x3a5a26;_0x3fa544=_0x4c6c1b[_0x0982('0xf')];var _0x440837=_0x3fa544[_0x0982('0x13')](-0x1);if(_0x440837==='/'||_0x440837==='\x5c'||_0x440837===':'){_0x3fa544=_0x3fa544[_0x0982('0x14')](0x0,_0x3fa544['lastIndexOf'](_0x440837));}switch(_0x4c6c1b[_0x0982('0xe')]){case'US':_0x3a5a26=_0x0982('0x15');break;case'AU':_0x3a5a26=_0x0982('0x16');break;case'IN':_0x3a5a26=_0x0982('0x17');break;case'CN':_0x3a5a26=_0x0982('0x18');break;default:_0x3a5a26=_0x0982('0x19');break;}var _0x34df8={'method':_0x0982('0x1a'),'uri':_0x3a5a26+_0x0982('0x1b'),'form':{'grant_type':_0x0982('0x1c'),'client_id':_0x4c6c1b[_0x0982('0x10')],'client_secret':_0x4c6c1b[_0x0982('0x11')],'redirect_uri':_0x4c6c1b[_0x0982('0xf')],'code':_0x4c6c1b[_0x0982('0x1d')]},'headers':{'Content-Type':_0x0982('0x1e')}};return rp(_0x34df8)[_0x0982('0x1f')](function(_0x26a446){var _0x37fe17=JSON[_0x0982('0x20')](_0x26a446);if(_0x37fe17['refresh_token']){_0x4c6c1b[_0x0982('0x21')]=_0x37fe17[_0x0982('0x22')];logger['info'](util[_0x0982('0x23')](_0x0982('0x24'),_0x4c6c1b[_0x0982('0x25')],_0x4c6c1b['id']));}else{logger[_0x0982('0x26')](util[_0x0982('0x23')](_0x0982('0x27'),_0x4c6c1b['name'],_0x4c6c1b['id']),util['inspect'](_0x37fe17,{'showHidden':![],'depth':null}));}return _0xfac140(null,_0x3136ce);})[_0x0982('0x28')](function(_0x3173cb){logger[_0x0982('0x26')](util[_0x0982('0x23')](_0x0982('0x27'),_0x4c6c1b[_0x0982('0x25')],_0x4c6c1b['id']),util[_0x0982('0x29')](parsedResult,{'showHidden':![],'depth':null}));return _0xfac140(_0x3173cb);});}else{return _0xfac140(null,_0x3136ce);}},'beforeUpdate':function(_0x4f51d3,_0x59ca2f,_0x48b19d){if(_0x4f51d3[_0x0982('0xd')](_0x0982('0xe'))||_0x4f51d3['changed'](_0x0982('0xf'))||_0x4f51d3[_0x0982('0xd')](_0x0982('0x10'))||_0x4f51d3['changed']('clientSecret')||_0x4f51d3[_0x0982('0xd')](_0x0982('0x1d'))||_0x4f51d3['changed'](_0x0982('0x12'))){var _0x27e977,_0x5e9ab1;_0x27e977=_0x4f51d3[_0x0982('0xf')];var _0x9d7fbb=_0x27e977[_0x0982('0x13')](-0x1);if(_0x9d7fbb==='/'||_0x9d7fbb==='\x5c'||_0x9d7fbb===':'){_0x27e977=_0x27e977['substring'](0x0,_0x27e977[_0x0982('0x2a')](_0x9d7fbb));}switch(_0x4f51d3['zone']){case'US':_0x5e9ab1=_0x0982('0x15');break;case'AU':_0x5e9ab1=_0x0982('0x16');break;case'IN':_0x5e9ab1='https://accounts.zoho.in';break;case'CN':_0x5e9ab1=_0x0982('0x18');break;default:_0x5e9ab1=_0x0982('0x19');break;}var _0x4a4466={'method':_0x0982('0x1a'),'uri':_0x5e9ab1+_0x0982('0x1b'),'form':{'grant_type':_0x0982('0x1c'),'client_id':_0x4f51d3[_0x0982('0x10')],'client_secret':_0x4f51d3[_0x0982('0x11')],'redirect_uri':_0x4f51d3[_0x0982('0xf')],'code':_0x4f51d3[_0x0982('0x1d')]},'headers':{'Content-Type':_0x0982('0x1e')}};return rp(_0x4a4466)['then'](function(_0x1ce100){var _0x3f0406=JSON[_0x0982('0x20')](_0x1ce100);if(_0x3f0406[_0x0982('0x22')]){_0x4f51d3[_0x0982('0x21')]=_0x3f0406[_0x0982('0x22')];logger[_0x0982('0x2b')](util[_0x0982('0x23')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4f51d3['name'],_0x4f51d3['id']));}else{logger[_0x0982('0x26')](util['format'](_0x0982('0x27'),_0x4f51d3[_0x0982('0x25')],_0x4f51d3['id']),util['inspect'](_0x3f0406,{'showHidden':![],'depth':null}));}return _0x48b19d(null,_0x59ca2f);})[_0x0982('0x28')](function(_0x303d0b){logger[_0x0982('0x26')](util[_0x0982('0x23')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x4f51d3['name'],_0x4f51d3['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x48b19d(_0x303d0b);});}else{return _0x48b19d(null,_0x59ca2f);}}}});};
\ No newline at end of file
index 0011be4..f84522e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793b=['debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','GetZohoAccount','ZohoAccount','findAll','options','attributes','include','map','model','stringify','ShowZohoAccount','find','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s'];(function(_0x2dc81a,_0x42a9fd){var _0x2d781c=function(_0xfd185c){while(--_0xfd185c){_0x2dc81a['push'](_0x2dc81a['shift']());}};_0x2d781c(++_0x42a9fd);}(_0x793b,0x189));var _0xb793=function(_0x2a7841,_0x269151){_0x2a7841=_0x2a7841-0x0;var _0x5a25a8=_0x793b[_0x2a7841];return _0x5a25a8;};'use strict';var _=require(_0xb793('0x0'));var util=require(_0xb793('0x1'));var moment=require(_0xb793('0x2'));var BPromise=require(_0xb793('0x3'));var rs=require(_0xb793('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb793('0x5'))['db'];var utils=require(_0xb793('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb793('0x7'));var jayson=require(_0xb793('0x8'));var client=jayson[_0xb793('0x9')][_0xb793('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39f110,_0x42d0c7,_0x134ac4){return new BPromise(function(_0x23a718,_0x149720){return client[_0xb793('0xb')](_0x39f110,_0x134ac4)[_0xb793('0xc')](function(_0x22c9ea){logger[_0xb793('0xd')](_0xb793('0xe'),_0x42d0c7,'request\x20sent');logger[_0xb793('0xf')](_0xb793('0x10'),_0x42d0c7,'request\x20sent',JSON['stringify'](_0x22c9ea));if(_0x22c9ea[_0xb793('0x11')]){if(_0x22c9ea[_0xb793('0x11')]['code']===0x1f4){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea['error'][_0xb793('0x12')]);return _0x149720(_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);}logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);return _0x23a718(_0x22c9ea['error'][_0xb793('0x12')]);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0x42d0c7,_0xb793('0x13'));_0x23a718(_0x22c9ea[_0xb793('0x14')][_0xb793('0x12')]);}})[_0xb793('0x15')](function(_0x38d9f2){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x38d9f2);_0x149720(_0x38d9f2);});});}exports[_0xb793('0x16')]=function(_0x977026){var _0x2914a2=this;return new Promise(function(_0x2c9e87,_0x101162){return db[_0xb793('0x17')][_0xb793('0x18')]({'raw':_0x977026[_0xb793('0x19')]?_0x977026[_0xb793('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x977026[_0xb793('0x19')]?_0x977026[_0xb793('0x19')]['where']||null:null,'attributes':_0x977026[_0xb793('0x19')]?_0x977026[_0xb793('0x19')][_0xb793('0x1a')]||null:null,'limit':_0x977026[_0xb793('0x19')]?_0x977026[_0xb793('0x19')]['limit']||null:null,'include':_0x977026['options']?_0x977026[_0xb793('0x19')][_0xb793('0x1b')]?_[_0xb793('0x1c')](_0x977026[_0xb793('0x19')][_0xb793('0x1b')],function(_0x3753d3){return{'model':db[_0x3753d3[_0xb793('0x1d')]],'as':_0x3753d3['as'],'attributes':_0x3753d3[_0xb793('0x1a')],'include':_0x3753d3['include']?_[_0xb793('0x1c')](_0x3753d3[_0xb793('0x1b')],function(_0x14ecb0){return{'model':db[_0x14ecb0[_0xb793('0x1d')]],'as':_0x14ecb0['as'],'attributes':_0x14ecb0[_0xb793('0x1a')],'include':_0x14ecb0[_0xb793('0x1b')]?_[_0xb793('0x1c')](_0x14ecb0['include'],function(_0x1eef51){return{'model':db[_0x1eef51[_0xb793('0x1d')]],'as':_0x1eef51['as'],'attributes':_0x1eef51[_0xb793('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb793('0xc')](function(_0x35cd9d){logger[_0xb793('0xd')]('GetZohoAccount',_0x977026);logger[_0xb793('0xf')](_0xb793('0x16'),_0x977026,JSON[_0xb793('0x1e')](_0x35cd9d));_0x2c9e87(_0x35cd9d);})['catch'](function(_0x89d007){logger[_0xb793('0x11')](_0xb793('0x16'),_0x89d007[_0xb793('0x12')],_0x977026);_0x101162(_0x2914a2['error'](0x1f4,_0x89d007['message']));});});};exports[_0xb793('0x1f')]=function(_0x4b0297){var _0x4864f0=this;return new Promise(function(_0x8a0bed,_0x2e659d){return db[_0xb793('0x17')][_0xb793('0x20')]({'raw':_0x4b0297['options']?_0x4b0297[_0xb793('0x19')][_0xb793('0x21')]===undefined?!![]:![]:!![],'where':_0x4b0297[_0xb793('0x19')]?_0x4b0297[_0xb793('0x19')]['where']||null:null,'attributes':_0x4b0297[_0xb793('0x19')]?_0x4b0297[_0xb793('0x19')][_0xb793('0x1a')]||null:null,'include':_0x4b0297[_0xb793('0x19')]?_0x4b0297[_0xb793('0x19')][_0xb793('0x1b')]?_[_0xb793('0x1c')](_0x4b0297[_0xb793('0x19')]['include'],function(_0x4f1b49){return{'model':db[_0x4f1b49[_0xb793('0x1d')]],'as':_0x4f1b49['as'],'attributes':_0x4f1b49[_0xb793('0x1a')],'include':_0x4f1b49[_0xb793('0x1b')]?_[_0xb793('0x1c')](_0x4f1b49['include'],function(_0xa679c0){return{'model':db[_0xa679c0[_0xb793('0x1d')]],'as':_0xa679c0['as'],'attributes':_0xa679c0[_0xb793('0x1a')],'include':_0xa679c0[_0xb793('0x1b')]?_[_0xb793('0x1c')](_0xa679c0['include'],function(_0x383db9){return{'model':db[_0x383db9[_0xb793('0x1d')]],'as':_0x383db9['as'],'attributes':_0x383db9[_0xb793('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb793('0xc')](function(_0x46ed5d){logger[_0xb793('0xd')](_0xb793('0x1f'),_0x4b0297);logger['debug'](_0xb793('0x1f'),_0x4b0297,JSON[_0xb793('0x1e')](_0x46ed5d));_0x8a0bed(_0x46ed5d);})['catch'](function(_0x3127f1){logger[_0xb793('0x11')]('ShowZohoAccount',_0x3127f1[_0xb793('0x12')],_0x4b0297);_0x2e659d(_0x4864f0['error'](0x1f4,_0x3127f1[_0xb793('0x12')]));});});};
\ No newline at end of file
+var _0x80cd=['GetZohoAccount','ZohoAccount','findAll','options','where','attributes','include','map','model','ShowZohoAccount','find','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x80cd,0x146));var _0xd80c=function(_0x480bc8,_0x1fac40){_0x480bc8=_0x480bc8-0x0;var _0x28c245=_0x80cd[_0x480bc8];return _0x28c245;};'use strict';var _=require('lodash');var util=require(_0xd80c('0x0'));var moment=require(_0xd80c('0x1'));var BPromise=require(_0xd80c('0x2'));var rs=require(_0xd80c('0x3'));var fs=require('fs');var Redis=require(_0xd80c('0x4'));var db=require(_0xd80c('0x5'))['db'];var utils=require(_0xd80c('0x6'));var logger=require(_0xd80c('0x7'))('rpc');var config=require(_0xd80c('0x8'));var jayson=require(_0xd80c('0x9'));var client=jayson[_0xd80c('0xa')][_0xd80c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x508e19,_0x343595,_0x20cd74){return new BPromise(function(_0x2dc89b,_0x3aa004){return client['request'](_0x508e19,_0x20cd74)[_0xd80c('0xc')](function(_0x588160){logger['info'](_0xd80c('0xd'),_0x343595,'request\x20sent');logger[_0xd80c('0xe')](_0xd80c('0xf'),_0x343595,_0xd80c('0x10'),JSON[_0xd80c('0x11')](_0x588160));if(_0x588160[_0xd80c('0x12')]){if(_0x588160[_0xd80c('0x12')][_0xd80c('0x13')]===0x1f4){logger['error'](_0xd80c('0xd'),_0x343595,_0x588160[_0xd80c('0x12')][_0xd80c('0x14')]);return _0x3aa004(_0x588160[_0xd80c('0x12')][_0xd80c('0x14')]);}logger[_0xd80c('0x12')](_0xd80c('0xd'),_0x343595,_0x588160[_0xd80c('0x12')][_0xd80c('0x14')]);return _0x2dc89b(_0x588160['error'][_0xd80c('0x14')]);}else{logger[_0xd80c('0x15')](_0xd80c('0xd'),_0x343595,_0xd80c('0x10'));_0x2dc89b(_0x588160[_0xd80c('0x16')]['message']);}})[_0xd80c('0x17')](function(_0xec332d){logger[_0xd80c('0x12')](_0xd80c('0xd'),_0x343595,_0xec332d);_0x3aa004(_0xec332d);});});}exports[_0xd80c('0x18')]=function(_0x41aac6){var _0x3b6a9c=this;return new Promise(function(_0x44fc81,_0x491735){return db[_0xd80c('0x19')][_0xd80c('0x1a')]({'raw':_0x41aac6[_0xd80c('0x1b')]?_0x41aac6[_0xd80c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x41aac6[_0xd80c('0x1b')]?_0x41aac6[_0xd80c('0x1b')][_0xd80c('0x1c')]||null:null,'attributes':_0x41aac6['options']?_0x41aac6[_0xd80c('0x1b')][_0xd80c('0x1d')]||null:null,'limit':_0x41aac6['options']?_0x41aac6[_0xd80c('0x1b')]['limit']||null:null,'include':_0x41aac6['options']?_0x41aac6['options'][_0xd80c('0x1e')]?_[_0xd80c('0x1f')](_0x41aac6[_0xd80c('0x1b')][_0xd80c('0x1e')],function(_0x391956){return{'model':db[_0x391956['model']],'as':_0x391956['as'],'attributes':_0x391956['attributes'],'include':_0x391956[_0xd80c('0x1e')]?_['map'](_0x391956[_0xd80c('0x1e')],function(_0x38de68){return{'model':db[_0x38de68[_0xd80c('0x20')]],'as':_0x38de68['as'],'attributes':_0x38de68[_0xd80c('0x1d')],'include':_0x38de68['include']?_[_0xd80c('0x1f')](_0x38de68[_0xd80c('0x1e')],function(_0x3bbf75){return{'model':db[_0x3bbf75[_0xd80c('0x20')]],'as':_0x3bbf75['as'],'attributes':_0x3bbf75[_0xd80c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd80c('0xc')](function(_0x16a844){logger[_0xd80c('0x15')](_0xd80c('0x18'),_0x41aac6);logger[_0xd80c('0xe')](_0xd80c('0x18'),_0x41aac6,JSON[_0xd80c('0x11')](_0x16a844));_0x44fc81(_0x16a844);})[_0xd80c('0x17')](function(_0x3d36ca){logger[_0xd80c('0x12')]('GetZohoAccount',_0x3d36ca[_0xd80c('0x14')],_0x41aac6);_0x491735(_0x3b6a9c[_0xd80c('0x12')](0x1f4,_0x3d36ca[_0xd80c('0x14')]));});});};exports[_0xd80c('0x21')]=function(_0x47638e){var _0x40823e=this;return new Promise(function(_0xcefbfc,_0x519ee6){return db[_0xd80c('0x19')][_0xd80c('0x22')]({'raw':_0x47638e[_0xd80c('0x1b')]?_0x47638e[_0xd80c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x47638e[_0xd80c('0x1b')]?_0x47638e['options'][_0xd80c('0x1c')]||null:null,'attributes':_0x47638e[_0xd80c('0x1b')]?_0x47638e['options'][_0xd80c('0x1d')]||null:null,'include':_0x47638e['options']?_0x47638e[_0xd80c('0x1b')][_0xd80c('0x1e')]?_['map'](_0x47638e[_0xd80c('0x1b')][_0xd80c('0x1e')],function(_0x456072){return{'model':db[_0x456072[_0xd80c('0x20')]],'as':_0x456072['as'],'attributes':_0x456072[_0xd80c('0x1d')],'include':_0x456072[_0xd80c('0x1e')]?_[_0xd80c('0x1f')](_0x456072[_0xd80c('0x1e')],function(_0x4f841d){return{'model':db[_0x4f841d[_0xd80c('0x20')]],'as':_0x4f841d['as'],'attributes':_0x4f841d[_0xd80c('0x1d')],'include':_0x4f841d[_0xd80c('0x1e')]?_['map'](_0x4f841d[_0xd80c('0x1e')],function(_0x42c7e8){return{'model':db[_0x42c7e8[_0xd80c('0x20')]],'as':_0x42c7e8['as'],'attributes':_0x42c7e8['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x230152){logger[_0xd80c('0x15')](_0xd80c('0x21'),_0x47638e);logger[_0xd80c('0xe')]('ShowZohoAccount',_0x47638e,JSON[_0xd80c('0x11')](_0x230152));_0xcefbfc(_0x230152);})[_0xd80c('0x17')](function(_0x4aaa79){logger['error']('ShowZohoAccount',_0x4aaa79[_0xd80c('0x14')],_0x47638e);_0x519ee6(_0x40823e[_0xd80c('0x12')](0x1f4,_0x4aaa79[_0xd80c('0x14')]));});});};
\ No newline at end of file
index d04535f..44ce565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebc2=['/:id','show','/:id/fields','get','/:id/subjects','getDescriptions','post','create','put','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','isAuthenticated','index'];(function(_0x43540d,_0x28ea84){var _0x406ca3=function(_0x2cb631){while(--_0x2cb631){_0x43540d['push'](_0x43540d['shift']());}};_0x406ca3(++_0x28ea84);}(_0xebc2,0x172));var _0x2ebc=function(_0x2aeedb,_0x779b5e){_0x2aeedb=_0x2aeedb-0x0;var _0x14f9d8=_0xebc2[_0x2aeedb];return _0x14f9d8;};'use strict';var multer=require('multer');var util=require(_0x2ebc('0x0'));var path=require(_0x2ebc('0x1'));var timeout=require(_0x2ebc('0x2'));var express=require(_0x2ebc('0x3'));var router=express['Router']();var fs_extra=require(_0x2ebc('0x4'));var auth=require(_0x2ebc('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intZohoConfiguration.controller');router['get']('/',auth[_0x2ebc('0x6')](),controller[_0x2ebc('0x7')]);router['get'](_0x2ebc('0x8'),auth[_0x2ebc('0x6')](),controller[_0x2ebc('0x9')]);router['get'](_0x2ebc('0xa'),auth[_0x2ebc('0x6')](),controller['getFields']);router[_0x2ebc('0xb')](_0x2ebc('0xc'),auth[_0x2ebc('0x6')](),controller['getSubjects']);router['get']('/:id/descriptions',auth[_0x2ebc('0x6')](),controller[_0x2ebc('0xd')]);router[_0x2ebc('0xe')]('/',auth['isAuthenticated'](),controller[_0x2ebc('0xf')]);router[_0x2ebc('0x10')](_0x2ebc('0x8'),auth[_0x2ebc('0x6')](),controller['update']);router['delete'](_0x2ebc('0x8'),auth[_0x2ebc('0x6')](),controller['destroy']);module[_0x2ebc('0x11')]=router;
\ No newline at end of file
+var _0xaa64=['index','/:id','show','/:id/fields','/:id/subjects','getSubjects','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x58ee69,_0x47d13d){var _0x384381=function(_0x7026cd){while(--_0x7026cd){_0x58ee69['push'](_0x58ee69['shift']());}};_0x384381(++_0x47d13d);}(_0xaa64,0x155));var _0x4aa6=function(_0x44c022,_0x5806dd){_0x44c022=_0x44c022-0x0;var _0x31bacf=_0xaa64[_0x44c022];return _0x31bacf;};'use strict';var multer=require(_0x4aa6('0x0'));var util=require(_0x4aa6('0x1'));var path=require(_0x4aa6('0x2'));var timeout=require(_0x4aa6('0x3'));var express=require(_0x4aa6('0x4'));var router=express[_0x4aa6('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4aa6('0x6'));var interaction=require(_0x4aa6('0x7'));var config=require(_0x4aa6('0x8'));var controller=require('./intZohoConfiguration.controller');router[_0x4aa6('0x9')]('/',auth[_0x4aa6('0xa')](),controller[_0x4aa6('0xb')]);router[_0x4aa6('0x9')](_0x4aa6('0xc'),auth[_0x4aa6('0xa')](),controller[_0x4aa6('0xd')]);router[_0x4aa6('0x9')](_0x4aa6('0xe'),auth[_0x4aa6('0xa')](),controller['getFields']);router[_0x4aa6('0x9')](_0x4aa6('0xf'),auth[_0x4aa6('0xa')](),controller[_0x4aa6('0x10')]);router[_0x4aa6('0x9')]('/:id/descriptions',auth[_0x4aa6('0xa')](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0x4aa6('0x11')]);router[_0x4aa6('0x12')](_0x4aa6('0xc'),auth['isAuthenticated'](),controller[_0x4aa6('0x13')]);router[_0x4aa6('0x14')](_0x4aa6('0xc'),auth[_0x4aa6('0xa')](),controller['destroy']);module[_0x4aa6('0x15')]=router;
\ No newline at end of file
index 10c8594..53afb66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe234=['contact','contact_lead','exports','STRING','ENUM','lead'];(function(_0xba17a2,_0xbc3e00){var _0x482eae=function(_0x124b57){while(--_0x124b57){_0xba17a2['push'](_0xba17a2['shift']());}};_0x482eae(++_0xbc3e00);}(_0xe234,0xfe));var _0x4e23=function(_0x4cdabc,_0x2e9a7b){_0x4cdabc=_0x4cdabc-0x0;var _0x345c19=_0xe234[_0x4cdabc];return _0x345c19;};'use strict';var Sequelize=require('sequelize');module[_0x4e23('0x0')]={'name':{'type':Sequelize[_0x4e23('0x1')]},'moduleCreate':{'type':Sequelize[_0x4e23('0x2')](_0x4e23('0x3'),_0x4e23('0x4'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x4e23('0x2')](_0x4e23('0x5'),_0x4e23('0x4'),_0x4e23('0x3')),'defaultValue':_0x4e23('0x5')},'description':{'type':Sequelize[_0x4e23('0x1')]}};
\ No newline at end of file
+var _0xcb4f=['exports','ENUM','lead','contact','nothing','contact_lead','STRING','sequelize'];(function(_0x57b786,_0x22db7a){var _0x248894=function(_0x212f03){while(--_0x212f03){_0x57b786['push'](_0x57b786['shift']());}};_0x248894(++_0x22db7a);}(_0xcb4f,0x147));var _0xfcb4=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xcb4f[_0x5bd426];return _0x23a7eb;};'use strict';var Sequelize=require(_0xfcb4('0x0'));module[_0xfcb4('0x1')]={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xfcb4('0x2')](_0xfcb4('0x3'),_0xfcb4('0x4'),_0xfcb4('0x5')),'defaultValue':_0xfcb4('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0xfcb4('0x6'),_0xfcb4('0x4'),_0xfcb4('0x3')),'defaultValue':_0xfcb4('0x6')},'description':{'type':Sequelize[_0xfcb4('0x7')]}};
\ No newline at end of file
index 42ce5ad..3832e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x743a=['squel','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','end','error','stack','name','index','map','ZohoConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','getFields','findOne','ZohoField','order','filter','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash'];(function(_0x2d8eeb,_0x45028a){var _0x15c672=function(_0x49c0bd){while(--_0x49c0bd){_0x2d8eeb['push'](_0x2d8eeb['shift']());}};_0x15c672(++_0x45028a);}(_0x743a,0x126));var _0xa743=function(_0x2157b7,_0xf2fe8f){_0x2157b7=_0x2157b7-0x0;var _0x47be2a=_0x743a[_0x2157b7];return _0x47be2a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa743('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa743('0x1'));var rp=require(_0xa743('0x2'));var moment=require('moment');var BPromise=require(_0xa743('0x3'));var Mustache=require(_0xa743('0x4'));var util=require(_0xa743('0x5'));var path=require(_0xa743('0x6'));var sox=require(_0xa743('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa743('0x8'));var _=require(_0xa743('0x9'));var squel=require(_0xa743('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa743('0xb'));var toCsv=require(_0xa743('0xc'));var querystring=require(_0xa743('0xd'));var Papa=require(_0xa743('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa743('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa743('0x10'));var logger=require(_0xa743('0x11'))(_0xa743('0x12'));var utils=require('../../config/utils');var config=require(_0xa743('0x13'));var licenseUtil=require(_0xa743('0x14'));var db=require(_0xa743('0x15'))['db'];function respondWithStatusCode(_0x459c0,_0x5c8463){_0x5c8463=_0x5c8463||0xcc;return function(_0x4e3b70){if(_0x4e3b70){return _0x459c0[_0xa743('0x16')](_0x5c8463);}return _0x459c0['status'](_0x5c8463)['end']();};}function respondWithResult(_0x2d8b1b,_0x59e1dc){_0x59e1dc=_0x59e1dc||0xc8;return function(_0xbf09c5){if(_0xbf09c5){return _0x2d8b1b[_0xa743('0x17')](_0x59e1dc)[_0xa743('0x18')](_0xbf09c5);}};}function respondWithFilteredResult(_0x182cfb,_0x1a1f54){return function(_0x396bee){if(_0x396bee){var _0x22cbe5=typeof _0x1a1f54[_0xa743('0x19')]===_0xa743('0x1a')&&typeof _0x1a1f54[_0xa743('0x1b')]===_0xa743('0x1a');var _0xe87d6b=_0x396bee[_0xa743('0x1c')];var _0x215d7e=_0x22cbe5?0x0:_0x1a1f54[_0xa743('0x19')];var _0x2b5dae=_0x22cbe5?_0x396bee[_0xa743('0x1c')]:_0x1a1f54['offset']+_0x1a1f54[_0xa743('0x1b')];var _0x28fc5c;if(_0x2b5dae>=_0xe87d6b){_0x2b5dae=_0xe87d6b;_0x28fc5c=0xc8;}else{_0x28fc5c=0xce;}_0x182cfb[_0xa743('0x17')](_0x28fc5c);return _0x182cfb[_0xa743('0x1d')]('Content-Range',_0x215d7e+'-'+_0x2b5dae+'/'+_0xe87d6b)['json'](_0x396bee);}return null;};}function patchUpdates(_0x443f66){return function(_0x3678c0){try{jsonpatch[_0xa743('0x1e')](_0x3678c0,_0x443f66,!![]);}catch(_0x19cfe5){return BPromise['reject'](_0x19cfe5);}return _0x3678c0[_0xa743('0x1f')]();};}function saveUpdates(_0x214578,_0x2b5e97){return function(_0x4cba5a){if(_0x4cba5a){return _0x4cba5a[_0xa743('0x20')](_0x214578)[_0xa743('0x21')](function(_0x37c84a){return _0x37c84a;});}return null;};}function removeEntity(_0x30b666,_0x2e272d){return function(_0x145eed){if(_0x145eed){return _0x145eed[_0xa743('0x22')]()[_0xa743('0x21')](function(){_0x30b666['status'](0xcc)[_0xa743('0x23')]();});}};}function handleEntityNotFound(_0x597b02,_0x120149){return function(_0x10aa73){if(!_0x10aa73){_0x597b02[_0xa743('0x16')](0x194);}return _0x10aa73;};}function handleError(_0x14853f,_0xde41b5){_0xde41b5=_0xde41b5||0x1f4;return function(_0x250fe3){logger[_0xa743('0x24')](_0x250fe3[_0xa743('0x25')]);if(_0x250fe3[_0xa743('0x26')]){delete _0x250fe3[_0xa743('0x26')];}_0x14853f[_0xa743('0x17')](_0xde41b5)['send'](_0x250fe3);};}exports[_0xa743('0x27')]=function(_0x346252,_0x125caf){var _0x576b7c={},_0x4acd46={},_0x5d2b13={'count':0x0,'rows':[]};var _0x22ee5b=_[_0xa743('0x28')](db[_0xa743('0x29')][_0xa743('0x2a')],function(_0x5a295e){return{'name':_0x5a295e['fieldName'],'type':_0x5a295e[_0xa743('0x2b')][_0xa743('0x2c')]};});_0x4acd46[_0xa743('0x2d')]=_[_0xa743('0x28')](_0x22ee5b,_0xa743('0x26'));_0x4acd46[_0xa743('0x2e')]=_[_0xa743('0x2f')](_0x346252[_0xa743('0x2e')]);_0x4acd46[_0xa743('0x30')]=_[_0xa743('0x31')](_0x4acd46[_0xa743('0x2d')],_0x4acd46[_0xa743('0x2e')]);_0x576b7c[_0xa743('0x32')]=_[_0xa743('0x31')](_0x4acd46[_0xa743('0x2d')],qs[_0xa743('0x33')](_0x346252[_0xa743('0x2e')][_0xa743('0x33')]));_0x576b7c[_0xa743('0x32')]=_0x576b7c[_0xa743('0x32')][_0xa743('0x34')]?_0x576b7c[_0xa743('0x32')]:_0x4acd46[_0xa743('0x2d')];if(!_0x346252[_0xa743('0x2e')][_0xa743('0x35')](_0xa743('0x36'))){_0x576b7c['limit']=qs[_0xa743('0x1b')](_0x346252['query'][_0xa743('0x1b')]);_0x576b7c[_0xa743('0x19')]=qs['offset'](_0x346252[_0xa743('0x2e')][_0xa743('0x19')]);}_0x576b7c['order']=qs[_0xa743('0x37')](_0x346252['query'][_0xa743('0x37')]);_0x576b7c['where']=qs[_0xa743('0x30')](_[_0xa743('0x38')](_0x346252['query'],_0x4acd46['filters']),_0x22ee5b);if(_0x346252[_0xa743('0x2e')]['filter']){_0x576b7c['where']=_[_0xa743('0x39')](_0x576b7c[_0xa743('0x3a')],{'$or':_[_0xa743('0x28')](_0x22ee5b,function(_0x1cc42b){if(_0x1cc42b[_0xa743('0x2b')]!==_0xa743('0x3b')){var _0x313ed6={};_0x313ed6[_0x1cc42b['name']]={'$like':'%'+_0x346252[_0xa743('0x2e')]['filter']+'%'};return _0x313ed6;}})});}_0x576b7c=_['merge']({},_0x576b7c,_0x346252[_0xa743('0x3c')]);var _0x473065={'where':_0x576b7c[_0xa743('0x3a')]};return db['ZohoConfiguration'][_0xa743('0x1c')](_0x473065)[_0xa743('0x21')](function(_0x589c60){_0x5d2b13[_0xa743('0x1c')]=_0x589c60;if(_0x346252[_0xa743('0x2e')][_0xa743('0x3d')]){_0x576b7c[_0xa743('0x3e')]=[{'all':!![]}];}return db[_0xa743('0x29')][_0xa743('0x3f')](_0x576b7c);})[_0xa743('0x21')](function(_0x393cb4){_0x5d2b13['rows']=_0x393cb4;return _0x5d2b13;})[_0xa743('0x21')](respondWithFilteredResult(_0x125caf,_0x576b7c))[_0xa743('0x40')](handleError(_0x125caf,null));};exports['show']=function(_0x4d5d4b,_0x760be5){var _0x19304d={'raw':![],'where':{'id':_0x4d5d4b[_0xa743('0x41')]['id']}},_0x42c14e={};_0x42c14e[_0xa743('0x2d')]=_[_0xa743('0x2f')](db[_0xa743('0x29')]['rawAttributes']);_0x42c14e[_0xa743('0x2e')]=_['keys'](_0x4d5d4b['query']);_0x42c14e[_0xa743('0x30')]=_[_0xa743('0x31')](_0x42c14e[_0xa743('0x2d')],_0x42c14e[_0xa743('0x2e')]);_0x19304d[_0xa743('0x32')]=_[_0xa743('0x31')](_0x42c14e[_0xa743('0x2d')],qs[_0xa743('0x33')](_0x4d5d4b[_0xa743('0x2e')][_0xa743('0x33')]));_0x19304d['attributes']=_0x19304d[_0xa743('0x32')]['length']?_0x19304d[_0xa743('0x32')]:_0x42c14e[_0xa743('0x2d')];if(_0x4d5d4b[_0xa743('0x2e')]['includeAll']){_0x19304d['include']=[{'all':!![]}];}_0x19304d=_[_0xa743('0x39')]({},_0x19304d,_0x4d5d4b['options']);return db[_0xa743('0x29')][_0xa743('0x42')](_0x19304d)[_0xa743('0x21')](handleEntityNotFound(_0x760be5,null))[_0xa743('0x21')](respondWithResult(_0x760be5,null))[_0xa743('0x40')](handleError(_0x760be5,null));};exports[_0xa743('0x43')]=function(_0x39b403,_0x4e2c13){return db[_0xa743('0x29')][_0xa743('0x43')](_0x39b403[_0xa743('0x44')],{})[_0xa743('0x21')](respondWithResult(_0x4e2c13,0xc9))[_0xa743('0x40')](handleError(_0x4e2c13,null));};exports[_0xa743('0x20')]=function(_0x9df3fc,_0x3912f3){if(_0x9df3fc[_0xa743('0x44')]['id']){delete _0x9df3fc[_0xa743('0x44')]['id'];}return db[_0xa743('0x29')]['find']({'where':{'id':_0x9df3fc['params']['id']}})[_0xa743('0x21')](handleEntityNotFound(_0x3912f3,null))['then'](saveUpdates(_0x9df3fc['body'],null))[_0xa743('0x21')](respondWithResult(_0x3912f3,null))[_0xa743('0x40')](handleError(_0x3912f3,null));};exports['destroy']=function(_0x275dc7,_0x305ea9){return db['ZohoConfiguration']['find']({'where':{'id':_0x275dc7[_0xa743('0x41')]['id']}})['then'](handleEntityNotFound(_0x305ea9,null))[_0xa743('0x21')](removeEntity(_0x305ea9,null))[_0xa743('0x40')](handleError(_0x305ea9,null));};exports[_0xa743('0x45')]=function(_0x3f1358,_0x218556,_0x861734){var _0xced0e8={};var _0x7fa384={};var _0x2a40bc;var _0xe9fe7e;return db[_0xa743('0x29')][_0xa743('0x46')]({'where':{'id':_0x3f1358[_0xa743('0x41')]['id']}})[_0xa743('0x21')](handleEntityNotFound(_0x218556,null))['then'](function(_0x49cb9a){if(_0x49cb9a){_0x2a40bc=_0x49cb9a;_0x7fa384[_0xa743('0x2d')]=_[_0xa743('0x2f')](db[_0xa743('0x47')][_0xa743('0x2a')]);_0x7fa384['query']=_['keys'](_0x3f1358[_0xa743('0x2e')]);_0x7fa384[_0xa743('0x30')]=_[_0xa743('0x31')](_0x7fa384[_0xa743('0x2d')],_0x7fa384['query']);_0xced0e8[_0xa743('0x32')]=_[_0xa743('0x31')](_0x7fa384[_0xa743('0x2d')],qs[_0xa743('0x33')](_0x3f1358['query'][_0xa743('0x33')]));_0xced0e8['attributes']=_0xced0e8[_0xa743('0x32')]['length']?_0xced0e8['attributes']:_0x7fa384[_0xa743('0x2d')];_0xced0e8[_0xa743('0x48')]=qs[_0xa743('0x37')](_0x3f1358[_0xa743('0x2e')][_0xa743('0x37')]);_0xced0e8[_0xa743('0x3a')]=qs[_0xa743('0x30')](_[_0xa743('0x38')](_0x3f1358['query'],_0x7fa384[_0xa743('0x30')]));if(_0x3f1358[_0xa743('0x2e')][_0xa743('0x49')]){_0xced0e8[_0xa743('0x3a')]=_['merge'](_0xced0e8[_0xa743('0x3a')],{'$or':_[_0xa743('0x28')](_0xced0e8[_0xa743('0x32')],function(_0x1a1274){var _0x38b188={};_0x38b188[_0x1a1274]={'$like':'%'+_0x3f1358[_0xa743('0x2e')][_0xa743('0x49')]+'%'};return _0x38b188;})});}_0xced0e8=_[_0xa743('0x39')]({},_0xced0e8,_0x3f1358[_0xa743('0x3c')]);return _0x2a40bc[_0xa743('0x45')](_0xced0e8);}})['then'](function(_0x5ac0d6){if(_0x5ac0d6){_0xe9fe7e=_0x5ac0d6[_0xa743('0x34')];if(!_0x3f1358['query']['hasOwnProperty'](_0xa743('0x36'))){_0xced0e8[_0xa743('0x1b')]=qs[_0xa743('0x1b')](_0x3f1358['query'][_0xa743('0x1b')]);_0xced0e8[_0xa743('0x19')]=qs['offset'](_0x3f1358[_0xa743('0x2e')][_0xa743('0x19')]);}return _0x2a40bc[_0xa743('0x45')](_0xced0e8);}})['then'](function(_0xd8f174){if(_0xd8f174){return _0xd8f174?{'count':_0xe9fe7e,'rows':_0xd8f174}:null;}})['then'](respondWithResult(_0x218556,null))[_0xa743('0x40')](handleError(_0x218556,null));};exports[_0xa743('0x4a')]=function(_0x25e76e,_0x39ea01,_0x3106bc){var _0x40f91d={};var _0x43e740={};var _0x396cd2;var _0x16877e;return db[_0xa743('0x29')][_0xa743('0x46')]({'where':{'id':_0x25e76e[_0xa743('0x41')]['id']}})[_0xa743('0x21')](handleEntityNotFound(_0x39ea01,null))[_0xa743('0x21')](function(_0x12861e){if(_0x12861e){_0x396cd2=_0x12861e;_0x43e740[_0xa743('0x2d')]=_['keys'](db[_0xa743('0x47')][_0xa743('0x2a')]);_0x43e740['query']=_[_0xa743('0x2f')](_0x25e76e[_0xa743('0x2e')]);_0x43e740[_0xa743('0x30')]=_['intersection'](_0x43e740[_0xa743('0x2d')],_0x43e740[_0xa743('0x2e')]);_0x40f91d['attributes']=_[_0xa743('0x31')](_0x43e740[_0xa743('0x2d')],qs['fields'](_0x25e76e[_0xa743('0x2e')][_0xa743('0x33')]));_0x40f91d['attributes']=_0x40f91d['attributes'][_0xa743('0x34')]?_0x40f91d['attributes']:_0x43e740[_0xa743('0x2d')];_0x40f91d[_0xa743('0x48')]=qs['sort'](_0x25e76e['query']['sort']);_0x40f91d[_0xa743('0x3a')]=qs['filters'](_[_0xa743('0x38')](_0x25e76e[_0xa743('0x2e')],_0x43e740['filters']));if(_0x25e76e[_0xa743('0x2e')]['filter']){_0x40f91d[_0xa743('0x3a')]=_[_0xa743('0x39')](_0x40f91d[_0xa743('0x3a')],{'$or':_[_0xa743('0x28')](_0x40f91d['attributes'],function(_0xd3f660){var _0x2a56d8={};_0x2a56d8[_0xd3f660]={'$like':'%'+_0x25e76e[_0xa743('0x2e')][_0xa743('0x49')]+'%'};return _0x2a56d8;})});}_0x40f91d=_[_0xa743('0x39')]({},_0x40f91d,_0x25e76e[_0xa743('0x3c')]);return _0x396cd2[_0xa743('0x4a')](_0x40f91d);}})[_0xa743('0x21')](function(_0x3f8f84){if(_0x3f8f84){_0x16877e=_0x3f8f84['length'];if(!_0x25e76e[_0xa743('0x2e')][_0xa743('0x35')](_0xa743('0x36'))){_0x40f91d[_0xa743('0x1b')]=qs[_0xa743('0x1b')](_0x25e76e[_0xa743('0x2e')][_0xa743('0x1b')]);_0x40f91d[_0xa743('0x19')]=qs[_0xa743('0x19')](_0x25e76e[_0xa743('0x2e')][_0xa743('0x19')]);}return _0x396cd2['getSubjects'](_0x40f91d);}})[_0xa743('0x21')](function(_0x381d11){if(_0x381d11){return _0x381d11?{'count':_0x16877e,'rows':_0x381d11}:null;}})[_0xa743('0x21')](respondWithResult(_0x39ea01,null))[_0xa743('0x40')](handleError(_0x39ea01,null));};exports['getDescriptions']=function(_0x9638c4,_0x18771a,_0x4b3e37){var _0x4ac45f={};var _0x2e532e={};var _0x10c51b;var _0x298688;return db[_0xa743('0x29')][_0xa743('0x46')]({'where':{'id':_0x9638c4[_0xa743('0x41')]['id']}})[_0xa743('0x21')](handleEntityNotFound(_0x18771a,null))[_0xa743('0x21')](function(_0x2591d9){if(_0x2591d9){_0x10c51b=_0x2591d9;_0x2e532e['model']=_[_0xa743('0x2f')](db['ZohoField']['rawAttributes']);_0x2e532e['query']=_[_0xa743('0x2f')](_0x9638c4[_0xa743('0x2e')]);_0x2e532e[_0xa743('0x30')]=_[_0xa743('0x31')](_0x2e532e[_0xa743('0x2d')],_0x2e532e[_0xa743('0x2e')]);_0x4ac45f[_0xa743('0x32')]=_[_0xa743('0x31')](_0x2e532e[_0xa743('0x2d')],qs[_0xa743('0x33')](_0x9638c4[_0xa743('0x2e')][_0xa743('0x33')]));_0x4ac45f[_0xa743('0x32')]=_0x4ac45f[_0xa743('0x32')]['length']?_0x4ac45f[_0xa743('0x32')]:_0x2e532e['model'];_0x4ac45f[_0xa743('0x48')]=qs['sort'](_0x9638c4[_0xa743('0x2e')][_0xa743('0x37')]);_0x4ac45f[_0xa743('0x3a')]=qs[_0xa743('0x30')](_[_0xa743('0x38')](_0x9638c4[_0xa743('0x2e')],_0x2e532e[_0xa743('0x30')]));if(_0x9638c4[_0xa743('0x2e')]['filter']){_0x4ac45f['where']=_[_0xa743('0x39')](_0x4ac45f[_0xa743('0x3a')],{'$or':_[_0xa743('0x28')](_0x4ac45f['attributes'],function(_0x477e3c){var _0x19817c={};_0x19817c[_0x477e3c]={'$like':'%'+_0x9638c4['query'][_0xa743('0x49')]+'%'};return _0x19817c;})});}_0x4ac45f=_['merge']({},_0x4ac45f,_0x9638c4['options']);return _0x10c51b[_0xa743('0x4b')](_0x4ac45f);}})[_0xa743('0x21')](function(_0x1a5218){if(_0x1a5218){_0x298688=_0x1a5218[_0xa743('0x34')];if(!_0x9638c4[_0xa743('0x2e')][_0xa743('0x35')](_0xa743('0x36'))){_0x4ac45f[_0xa743('0x1b')]=qs[_0xa743('0x1b')](_0x9638c4[_0xa743('0x2e')]['limit']);_0x4ac45f[_0xa743('0x19')]=qs['offset'](_0x9638c4[_0xa743('0x2e')][_0xa743('0x19')]);}return _0x10c51b[_0xa743('0x4b')](_0x4ac45f);}})[_0xa743('0x21')](function(_0x2efe89){if(_0x2efe89){return _0x2efe89?{'count':_0x298688,'rows':_0x2efe89}:null;}})[_0xa743('0x21')](respondWithResult(_0x18771a,null))[_0xa743('0x40')](handleError(_0x18771a,null));};
\ No newline at end of file
+var _0x8bd3=['index','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','map','VIRTUAL','options','ZohoConfiguration','includeAll','catch','show','include','find','create','body','params','destroy','getFields','ZohoField','length','findOne','filter','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','stack'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x8bd3,0x11e));var _0x38bd=function(_0x3074f1,_0x4901aa){_0x3074f1=_0x3074f1-0x0;var _0x149af8=_0x8bd3[_0x3074f1];return _0x149af8;};'use strict';var emlformat=require(_0x38bd('0x0'));var rimraf=require(_0x38bd('0x1'));var zipdir=require(_0x38bd('0x2'));var jsonpatch=require(_0x38bd('0x3'));var rp=require(_0x38bd('0x4'));var moment=require(_0x38bd('0x5'));var BPromise=require(_0x38bd('0x6'));var Mustache=require(_0x38bd('0x7'));var util=require(_0x38bd('0x8'));var path=require(_0x38bd('0x9'));var sox=require(_0x38bd('0xa'));var csv=require(_0x38bd('0xb'));var ejs=require(_0x38bd('0xc'));var fs=require('fs');var fs_extra=require(_0x38bd('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x38bd('0xe'));var jsforce=require(_0x38bd('0xf'));var deskjs=require(_0x38bd('0x10'));var toCsv=require(_0x38bd('0xb'));var querystring=require(_0x38bd('0x11'));var Papa=require(_0x38bd('0x12'));var Redis=require(_0x38bd('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x38bd('0x14'));var as=require(_0x38bd('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38bd('0x16'))(_0x38bd('0x17'));var utils=require(_0x38bd('0x18'));var config=require(_0x38bd('0x19'));var licenseUtil=require(_0x38bd('0x1a'));var db=require(_0x38bd('0x1b'))['db'];function respondWithStatusCode(_0x4fad51,_0x376ea0){_0x376ea0=_0x376ea0||0xcc;return function(_0x2e4544){if(_0x2e4544){return _0x4fad51['sendStatus'](_0x376ea0);}return _0x4fad51[_0x38bd('0x1c')](_0x376ea0)[_0x38bd('0x1d')]();};}function respondWithResult(_0x401c01,_0xea2256){_0xea2256=_0xea2256||0xc8;return function(_0x27edbe){if(_0x27edbe){return _0x401c01['status'](_0xea2256)['json'](_0x27edbe);}};}function respondWithFilteredResult(_0x247b17,_0x438e3c){return function(_0x58f528){if(_0x58f528){var _0x5d4123=typeof _0x438e3c[_0x38bd('0x1e')]===_0x38bd('0x1f')&&typeof _0x438e3c[_0x38bd('0x20')]===_0x38bd('0x1f');var _0x5e01ec=_0x58f528[_0x38bd('0x21')];var _0x236b14=_0x5d4123?0x0:_0x438e3c['offset'];var _0x3e6d04=_0x5d4123?_0x58f528[_0x38bd('0x21')]:_0x438e3c[_0x38bd('0x1e')]+_0x438e3c[_0x38bd('0x20')];var _0x1f9004;if(_0x3e6d04>=_0x5e01ec){_0x3e6d04=_0x5e01ec;_0x1f9004=0xc8;}else{_0x1f9004=0xce;}_0x247b17[_0x38bd('0x1c')](_0x1f9004);return _0x247b17[_0x38bd('0x22')](_0x38bd('0x23'),_0x236b14+'-'+_0x3e6d04+'/'+_0x5e01ec)[_0x38bd('0x24')](_0x58f528);}return null;};}function patchUpdates(_0x5414c2){return function(_0x3717fc){try{jsonpatch[_0x38bd('0x25')](_0x3717fc,_0x5414c2,!![]);}catch(_0x9bf6d7){return BPromise[_0x38bd('0x26')](_0x9bf6d7);}return _0x3717fc['save']();};}function saveUpdates(_0x30329f,_0x3fd100){return function(_0x543a81){if(_0x543a81){return _0x543a81[_0x38bd('0x27')](_0x30329f)[_0x38bd('0x28')](function(_0x166750){return _0x166750;});}return null;};}function removeEntity(_0x1ac5cc,_0x5818e3){return function(_0x577ca4){if(_0x577ca4){return _0x577ca4['destroy']()[_0x38bd('0x28')](function(){_0x1ac5cc[_0x38bd('0x1c')](0xcc)[_0x38bd('0x1d')]();});}};}function handleEntityNotFound(_0x15b848,_0x149250){return function(_0x14dffd){if(!_0x14dffd){_0x15b848['sendStatus'](0x194);}return _0x14dffd;};}function handleError(_0x92fc04,_0x4d4dc7){_0x4d4dc7=_0x4d4dc7||0x1f4;return function(_0xdbb18a){logger['error'](_0xdbb18a[_0x38bd('0x29')]);if(_0xdbb18a['name']){delete _0xdbb18a['name'];}_0x92fc04[_0x38bd('0x1c')](_0x4d4dc7)['send'](_0xdbb18a);};}exports[_0x38bd('0x2a')]=function(_0x4f242f,_0x2a0b9d){var _0x1449c4={},_0x25b018={},_0x542655={'count':0x0,'rows':[]};var _0x1c7a6e=_['map'](db['ZohoConfiguration'][_0x38bd('0x2b')],function(_0x4b49e6){return{'name':_0x4b49e6[_0x38bd('0x2c')],'type':_0x4b49e6[_0x38bd('0x2d')][_0x38bd('0x2e')]};});_0x25b018['model']=_['map'](_0x1c7a6e,_0x38bd('0x2f'));_0x25b018[_0x38bd('0x30')]=_[_0x38bd('0x31')](_0x4f242f[_0x38bd('0x30')]);_0x25b018[_0x38bd('0x32')]=_[_0x38bd('0x33')](_0x25b018[_0x38bd('0x34')],_0x25b018[_0x38bd('0x30')]);_0x1449c4['attributes']=_[_0x38bd('0x33')](_0x25b018[_0x38bd('0x34')],qs[_0x38bd('0x35')](_0x4f242f[_0x38bd('0x30')]['fields']));_0x1449c4[_0x38bd('0x36')]=_0x1449c4[_0x38bd('0x36')]['length']?_0x1449c4['attributes']:_0x25b018['model'];if(!_0x4f242f[_0x38bd('0x30')][_0x38bd('0x37')](_0x38bd('0x38'))){_0x1449c4['limit']=qs[_0x38bd('0x20')](_0x4f242f[_0x38bd('0x30')][_0x38bd('0x20')]);_0x1449c4[_0x38bd('0x1e')]=qs[_0x38bd('0x1e')](_0x4f242f[_0x38bd('0x30')][_0x38bd('0x1e')]);}_0x1449c4[_0x38bd('0x39')]=qs['sort'](_0x4f242f['query'][_0x38bd('0x3a')]);_0x1449c4['where']=qs['filters'](_[_0x38bd('0x3b')](_0x4f242f[_0x38bd('0x30')],_0x25b018['filters']),_0x1c7a6e);if(_0x4f242f[_0x38bd('0x30')]['filter']){_0x1449c4[_0x38bd('0x3c')]=_[_0x38bd('0x3d')](_0x1449c4[_0x38bd('0x3c')],{'$or':_[_0x38bd('0x3e')](_0x1c7a6e,function(_0x126af0){if(_0x126af0['type']!==_0x38bd('0x3f')){var _0x3ad5e5={};_0x3ad5e5[_0x126af0['name']]={'$like':'%'+_0x4f242f[_0x38bd('0x30')]['filter']+'%'};return _0x3ad5e5;}})});}_0x1449c4=_[_0x38bd('0x3d')]({},_0x1449c4,_0x4f242f[_0x38bd('0x40')]);var _0x20e6d9={'where':_0x1449c4[_0x38bd('0x3c')]};return db[_0x38bd('0x41')][_0x38bd('0x21')](_0x20e6d9)[_0x38bd('0x28')](function(_0x56d415){_0x542655[_0x38bd('0x21')]=_0x56d415;if(_0x4f242f['query'][_0x38bd('0x42')]){_0x1449c4['include']=[{'all':!![]}];}return db[_0x38bd('0x41')]['findAll'](_0x1449c4);})['then'](function(_0x3cf333){_0x542655['rows']=_0x3cf333;return _0x542655;})['then'](respondWithFilteredResult(_0x2a0b9d,_0x1449c4))[_0x38bd('0x43')](handleError(_0x2a0b9d,null));};exports[_0x38bd('0x44')]=function(_0x497f83,_0xb227ad){var _0x1899dd={'raw':![],'where':{'id':_0x497f83['params']['id']}},_0x2e1d09={};_0x2e1d09['model']=_[_0x38bd('0x31')](db[_0x38bd('0x41')]['rawAttributes']);_0x2e1d09[_0x38bd('0x30')]=_[_0x38bd('0x31')](_0x497f83[_0x38bd('0x30')]);_0x2e1d09[_0x38bd('0x32')]=_[_0x38bd('0x33')](_0x2e1d09[_0x38bd('0x34')],_0x2e1d09['query']);_0x1899dd['attributes']=_[_0x38bd('0x33')](_0x2e1d09[_0x38bd('0x34')],qs[_0x38bd('0x35')](_0x497f83[_0x38bd('0x30')][_0x38bd('0x35')]));_0x1899dd['attributes']=_0x1899dd[_0x38bd('0x36')]['length']?_0x1899dd['attributes']:_0x2e1d09['model'];if(_0x497f83[_0x38bd('0x30')][_0x38bd('0x42')]){_0x1899dd[_0x38bd('0x45')]=[{'all':!![]}];}_0x1899dd=_[_0x38bd('0x3d')]({},_0x1899dd,_0x497f83[_0x38bd('0x40')]);return db[_0x38bd('0x41')][_0x38bd('0x46')](_0x1899dd)[_0x38bd('0x28')](handleEntityNotFound(_0xb227ad,null))[_0x38bd('0x28')](respondWithResult(_0xb227ad,null))[_0x38bd('0x43')](handleError(_0xb227ad,null));};exports[_0x38bd('0x47')]=function(_0x1b10b4,_0x151ffe){return db[_0x38bd('0x41')][_0x38bd('0x47')](_0x1b10b4[_0x38bd('0x48')],{})['then'](respondWithResult(_0x151ffe,0xc9))[_0x38bd('0x43')](handleError(_0x151ffe,null));};exports[_0x38bd('0x27')]=function(_0x30705d,_0x5a00b9){if(_0x30705d['body']['id']){delete _0x30705d[_0x38bd('0x48')]['id'];}return db[_0x38bd('0x41')][_0x38bd('0x46')]({'where':{'id':_0x30705d[_0x38bd('0x49')]['id']}})[_0x38bd('0x28')](handleEntityNotFound(_0x5a00b9,null))[_0x38bd('0x28')](saveUpdates(_0x30705d[_0x38bd('0x48')],null))['then'](respondWithResult(_0x5a00b9,null))[_0x38bd('0x43')](handleError(_0x5a00b9,null));};exports[_0x38bd('0x4a')]=function(_0x2f4427,_0x18f41c){return db[_0x38bd('0x41')][_0x38bd('0x46')]({'where':{'id':_0x2f4427[_0x38bd('0x49')]['id']}})['then'](handleEntityNotFound(_0x18f41c,null))[_0x38bd('0x28')](removeEntity(_0x18f41c,null))[_0x38bd('0x43')](handleError(_0x18f41c,null));};exports[_0x38bd('0x4b')]=function(_0x4a4b7a,_0x4774a5,_0x59fc1e){var _0x1976e7={};var _0x26597f={};var _0x55680c;var _0x3c99c3;return db[_0x38bd('0x41')]['findOne']({'where':{'id':_0x4a4b7a[_0x38bd('0x49')]['id']}})['then'](handleEntityNotFound(_0x4774a5,null))['then'](function(_0x5222a5){if(_0x5222a5){_0x55680c=_0x5222a5;_0x26597f[_0x38bd('0x34')]=_[_0x38bd('0x31')](db[_0x38bd('0x4c')][_0x38bd('0x2b')]);_0x26597f[_0x38bd('0x30')]=_[_0x38bd('0x31')](_0x4a4b7a[_0x38bd('0x30')]);_0x26597f[_0x38bd('0x32')]=_[_0x38bd('0x33')](_0x26597f[_0x38bd('0x34')],_0x26597f[_0x38bd('0x30')]);_0x1976e7['attributes']=_[_0x38bd('0x33')](_0x26597f[_0x38bd('0x34')],qs[_0x38bd('0x35')](_0x4a4b7a[_0x38bd('0x30')][_0x38bd('0x35')]));_0x1976e7[_0x38bd('0x36')]=_0x1976e7[_0x38bd('0x36')][_0x38bd('0x4d')]?_0x1976e7[_0x38bd('0x36')]:_0x26597f[_0x38bd('0x34')];_0x1976e7['order']=qs['sort'](_0x4a4b7a['query'][_0x38bd('0x3a')]);_0x1976e7[_0x38bd('0x3c')]=qs['filters'](_[_0x38bd('0x3b')](_0x4a4b7a['query'],_0x26597f[_0x38bd('0x32')]));if(_0x4a4b7a[_0x38bd('0x30')]['filter']){_0x1976e7[_0x38bd('0x3c')]=_[_0x38bd('0x3d')](_0x1976e7['where'],{'$or':_[_0x38bd('0x3e')](_0x1976e7[_0x38bd('0x36')],function(_0x197b61){var _0x4a5532={};_0x4a5532[_0x197b61]={'$like':'%'+_0x4a4b7a[_0x38bd('0x30')]['filter']+'%'};return _0x4a5532;})});}_0x1976e7=_[_0x38bd('0x3d')]({},_0x1976e7,_0x4a4b7a['options']);return _0x55680c[_0x38bd('0x4b')](_0x1976e7);}})['then'](function(_0x404ad0){if(_0x404ad0){_0x3c99c3=_0x404ad0[_0x38bd('0x4d')];if(!_0x4a4b7a[_0x38bd('0x30')][_0x38bd('0x37')](_0x38bd('0x38'))){_0x1976e7['limit']=qs['limit'](_0x4a4b7a[_0x38bd('0x30')][_0x38bd('0x20')]);_0x1976e7['offset']=qs[_0x38bd('0x1e')](_0x4a4b7a[_0x38bd('0x30')]['offset']);}return _0x55680c['getFields'](_0x1976e7);}})[_0x38bd('0x28')](function(_0x596ff1){if(_0x596ff1){return _0x596ff1?{'count':_0x3c99c3,'rows':_0x596ff1}:null;}})[_0x38bd('0x28')](respondWithResult(_0x4774a5,null))[_0x38bd('0x43')](handleError(_0x4774a5,null));};exports['getSubjects']=function(_0x220942,_0x5c85ac,_0x29db19){var _0x322b27={};var _0x57a1b9={};var _0x1bfc50;var _0x256385;return db[_0x38bd('0x41')][_0x38bd('0x4e')]({'where':{'id':_0x220942[_0x38bd('0x49')]['id']}})[_0x38bd('0x28')](handleEntityNotFound(_0x5c85ac,null))[_0x38bd('0x28')](function(_0x3a239c){if(_0x3a239c){_0x1bfc50=_0x3a239c;_0x57a1b9['model']=_[_0x38bd('0x31')](db[_0x38bd('0x4c')]['rawAttributes']);_0x57a1b9['query']=_[_0x38bd('0x31')](_0x220942['query']);_0x57a1b9[_0x38bd('0x32')]=_[_0x38bd('0x33')](_0x57a1b9[_0x38bd('0x34')],_0x57a1b9['query']);_0x322b27[_0x38bd('0x36')]=_[_0x38bd('0x33')](_0x57a1b9[_0x38bd('0x34')],qs['fields'](_0x220942['query'][_0x38bd('0x35')]));_0x322b27[_0x38bd('0x36')]=_0x322b27[_0x38bd('0x36')][_0x38bd('0x4d')]?_0x322b27[_0x38bd('0x36')]:_0x57a1b9[_0x38bd('0x34')];_0x322b27['order']=qs[_0x38bd('0x3a')](_0x220942['query'][_0x38bd('0x3a')]);_0x322b27[_0x38bd('0x3c')]=qs[_0x38bd('0x32')](_[_0x38bd('0x3b')](_0x220942[_0x38bd('0x30')],_0x57a1b9[_0x38bd('0x32')]));if(_0x220942[_0x38bd('0x30')][_0x38bd('0x4f')]){_0x322b27[_0x38bd('0x3c')]=_[_0x38bd('0x3d')](_0x322b27[_0x38bd('0x3c')],{'$or':_['map'](_0x322b27[_0x38bd('0x36')],function(_0x4ccb2f){var _0x13524b={};_0x13524b[_0x4ccb2f]={'$like':'%'+_0x220942[_0x38bd('0x30')]['filter']+'%'};return _0x13524b;})});}_0x322b27=_[_0x38bd('0x3d')]({},_0x322b27,_0x220942[_0x38bd('0x40')]);return _0x1bfc50[_0x38bd('0x50')](_0x322b27);}})[_0x38bd('0x28')](function(_0x40f6b9){if(_0x40f6b9){_0x256385=_0x40f6b9[_0x38bd('0x4d')];if(!_0x220942[_0x38bd('0x30')]['hasOwnProperty']('nolimit')){_0x322b27[_0x38bd('0x20')]=qs['limit'](_0x220942[_0x38bd('0x30')][_0x38bd('0x20')]);_0x322b27[_0x38bd('0x1e')]=qs['offset'](_0x220942[_0x38bd('0x30')]['offset']);}return _0x1bfc50['getSubjects'](_0x322b27);}})[_0x38bd('0x28')](function(_0x38f10b){if(_0x38f10b){return _0x38f10b?{'count':_0x256385,'rows':_0x38f10b}:null;}})[_0x38bd('0x28')](respondWithResult(_0x5c85ac,null))[_0x38bd('0x43')](handleError(_0x5c85ac,null));};exports[_0x38bd('0x51')]=function(_0x504639,_0x59c6ab,_0x56e704){var _0x90cd4={};var _0x30b6f8={};var _0x2f8474;var _0x5ea337;return db[_0x38bd('0x41')][_0x38bd('0x4e')]({'where':{'id':_0x504639[_0x38bd('0x49')]['id']}})['then'](handleEntityNotFound(_0x59c6ab,null))['then'](function(_0x4382d4){if(_0x4382d4){_0x2f8474=_0x4382d4;_0x30b6f8['model']=_['keys'](db[_0x38bd('0x4c')]['rawAttributes']);_0x30b6f8[_0x38bd('0x30')]=_[_0x38bd('0x31')](_0x504639[_0x38bd('0x30')]);_0x30b6f8[_0x38bd('0x32')]=_[_0x38bd('0x33')](_0x30b6f8[_0x38bd('0x34')],_0x30b6f8[_0x38bd('0x30')]);_0x90cd4['attributes']=_[_0x38bd('0x33')](_0x30b6f8[_0x38bd('0x34')],qs[_0x38bd('0x35')](_0x504639[_0x38bd('0x30')]['fields']));_0x90cd4['attributes']=_0x90cd4[_0x38bd('0x36')]['length']?_0x90cd4[_0x38bd('0x36')]:_0x30b6f8[_0x38bd('0x34')];_0x90cd4['order']=qs[_0x38bd('0x3a')](_0x504639[_0x38bd('0x30')][_0x38bd('0x3a')]);_0x90cd4['where']=qs[_0x38bd('0x32')](_['pick'](_0x504639[_0x38bd('0x30')],_0x30b6f8[_0x38bd('0x32')]));if(_0x504639[_0x38bd('0x30')][_0x38bd('0x4f')]){_0x90cd4[_0x38bd('0x3c')]=_[_0x38bd('0x3d')](_0x90cd4[_0x38bd('0x3c')],{'$or':_[_0x38bd('0x3e')](_0x90cd4['attributes'],function(_0x5c8a1d){var _0x5440e1={};_0x5440e1[_0x5c8a1d]={'$like':'%'+_0x504639[_0x38bd('0x30')][_0x38bd('0x4f')]+'%'};return _0x5440e1;})});}_0x90cd4=_[_0x38bd('0x3d')]({},_0x90cd4,_0x504639['options']);return _0x2f8474[_0x38bd('0x51')](_0x90cd4);}})['then'](function(_0x12c9fb){if(_0x12c9fb){_0x5ea337=_0x12c9fb[_0x38bd('0x4d')];if(!_0x504639[_0x38bd('0x30')][_0x38bd('0x37')](_0x38bd('0x38'))){_0x90cd4[_0x38bd('0x20')]=qs[_0x38bd('0x20')](_0x504639[_0x38bd('0x30')][_0x38bd('0x20')]);_0x90cd4[_0x38bd('0x1e')]=qs['offset'](_0x504639[_0x38bd('0x30')][_0x38bd('0x1e')]);}return _0x2f8474[_0x38bd('0x51')](_0x90cd4);}})[_0x38bd('0x28')](function(_0x43428a){if(_0x43428a){return _0x43428a?{'count':_0x5ea337,'rows':_0x43428a}:null;}})[_0x38bd('0x28')](respondWithResult(_0x59c6ab,null))['catch'](handleError(_0x59c6ab,null));};
\ No newline at end of file
index 6200421..ac9d484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9aa=['../../config/logger','api','moment','request-promise','path','exports','define','ZohoConfiguration','int_zoho_configurations','lodash'];(function(_0x15b8f2,_0x83725c){var _0x4dbb64=function(_0x312366){while(--_0x312366){_0x15b8f2['push'](_0x15b8f2['shift']());}};_0x4dbb64(++_0x83725c);}(_0xa9aa,0x1cb));var _0xaa9a=function(_0x33f6e0,_0x1dc51a){_0x33f6e0=_0x33f6e0-0x0;var _0x1d4e5e=_0xa9aa[_0x33f6e0];return _0x1d4e5e;};'use strict';var _=require(_0xaa9a('0x0'));var util=require('util');var logger=require(_0xaa9a('0x1'))(_0xaa9a('0x2'));var moment=require(_0xaa9a('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa9a('0x4'));var fs=require('fs');var path=require(_0xaa9a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module[_0xaa9a('0x6')]=function(_0x51b7cb,_0x2d59a7){return _0x51b7cb[_0xaa9a('0x7')](_0xaa9a('0x8'),attributes,{'tableName':_0xaa9a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x627b=['api','bluebird','request-promise','path','rimraf','./intZohoConfiguration.attributes','define','ZohoConfiguration','util'];(function(_0x4f4212,_0xd01d82){var _0x1f48ae=function(_0xea4b13){while(--_0xea4b13){_0x4f4212['push'](_0x4f4212['shift']());}};_0x1f48ae(++_0xd01d82);}(_0x627b,0xe9));var _0xb627=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x627b[_0x18ab2a];return _0x16dcee;};'use strict';var _=require('lodash');var util=require(_0xb627('0x0'));var logger=require('../../config/logger')(_0xb627('0x1'));var moment=require('moment');var BPromise=require(_0xb627('0x2'));var rp=require(_0xb627('0x3'));var fs=require('fs');var path=require(_0xb627('0x4'));var rimraf=require(_0xb627('0x5'));var config=require('../../config/environment');var attributes=require(_0xb627('0x6'));module['exports']=function(_0x5997fc,_0x5defd4){return _0x5997fc[_0xb627('0x7')](_0xb627('0x8'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a55a59c..2d5e1f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9655=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result'];(function(_0x24a0c8,_0x28420c){var _0x14ed51=function(_0xdc5a43){while(--_0xdc5a43){_0x24a0c8['push'](_0x24a0c8['shift']());}};_0x14ed51(++_0x28420c);}(_0x9655,0xdc));var _0x5965=function(_0x18b9ca,_0x5ab519){_0x18b9ca=_0x18b9ca-0x0;var _0x3df637=_0x9655[_0x18b9ca];return _0x3df637;};'use strict';var _=require(_0x5965('0x0'));var util=require(_0x5965('0x1'));var moment=require(_0x5965('0x2'));var BPromise=require('bluebird');var rs=require(_0x5965('0x3'));var fs=require('fs');var Redis=require(_0x5965('0x4'));var db=require(_0x5965('0x5'))['db'];var utils=require(_0x5965('0x6'));var logger=require(_0x5965('0x7'))(_0x5965('0x8'));var config=require('../../config/environment');var jayson=require(_0x5965('0x9'));var client=jayson[_0x5965('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x189066,_0x4ac505,_0x19b3f1){return new BPromise(function(_0x3fb719,_0x4f57cf){return client[_0x5965('0xb')](_0x189066,_0x19b3f1)[_0x5965('0xc')](function(_0x4535cb){logger['info'](_0x5965('0xd'),_0x4ac505,_0x5965('0xe'));logger[_0x5965('0xf')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x4ac505,'request\x20sent',JSON[_0x5965('0x10')](_0x4535cb));if(_0x4535cb[_0x5965('0x11')]){if(_0x4535cb[_0x5965('0x11')][_0x5965('0x12')]===0x1f4){logger[_0x5965('0x11')](_0x5965('0xd'),_0x4ac505,_0x4535cb[_0x5965('0x11')]['message']);return _0x4f57cf(_0x4535cb[_0x5965('0x11')][_0x5965('0x13')]);}logger[_0x5965('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x4ac505,_0x4535cb[_0x5965('0x11')][_0x5965('0x13')]);return _0x3fb719(_0x4535cb['error'][_0x5965('0x13')]);}else{logger[_0x5965('0x14')]('ZohoConfiguration,\x20%s,\x20%s',_0x4ac505,_0x5965('0xe'));_0x3fb719(_0x4535cb[_0x5965('0x15')][_0x5965('0x13')]);}})['catch'](function(_0x27ff0d){logger['error'](_0x5965('0xd'),_0x4ac505,_0x27ff0d);_0x4f57cf(_0x27ff0d);});});}
\ No newline at end of file
+var _0x99bd=['then','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x361138,_0x82030){var _0x35d80=function(_0x42b12e){while(--_0x42b12e){_0x361138['push'](_0x361138['shift']());}};_0x35d80(++_0x82030);}(_0x99bd,0x14d));var _0xd99b=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x99bd[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require(_0xd99b('0x0'));var moment=require(_0xd99b('0x1'));var BPromise=require('bluebird');var rs=require(_0xd99b('0x2'));var fs=require('fs');var Redis=require(_0xd99b('0x3'));var db=require(_0xd99b('0x4'))['db'];var utils=require(_0xd99b('0x5'));var logger=require(_0xd99b('0x6'))(_0xd99b('0x7'));var config=require(_0xd99b('0x8'));var jayson=require(_0xd99b('0x9'));var client=jayson[_0xd99b('0xa')][_0xd99b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4563b3,_0x1b1b24,_0x40d084){return new BPromise(function(_0x5067e9,_0x1cc5f3){return client['request'](_0x4563b3,_0x40d084)[_0xd99b('0xc')](function(_0x55c657){logger['info'](_0xd99b('0xd'),_0x1b1b24,_0xd99b('0xe'));logger[_0xd99b('0xf')](_0xd99b('0x10'),_0x1b1b24,_0xd99b('0xe'),JSON['stringify'](_0x55c657));if(_0x55c657[_0xd99b('0x11')]){if(_0x55c657['error'][_0xd99b('0x12')]===0x1f4){logger[_0xd99b('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x1b1b24,_0x55c657[_0xd99b('0x11')]['message']);return _0x1cc5f3(_0x55c657[_0xd99b('0x11')][_0xd99b('0x13')]);}logger[_0xd99b('0x11')]('ZohoConfiguration,\x20%s,\x20%s',_0x1b1b24,_0x55c657['error']['message']);return _0x5067e9(_0x55c657[_0xd99b('0x11')][_0xd99b('0x13')]);}else{logger[_0xd99b('0x14')](_0xd99b('0xd'),_0x1b1b24,'request\x20sent');_0x5067e9(_0x55c657[_0xd99b('0x15')][_0xd99b('0x13')]);}})[_0xd99b('0x16')](function(_0x5b65d6){logger[_0xd99b('0x11')](_0xd99b('0xd'),_0x1b1b24,_0x5b65d6);_0x1cc5f3(_0x5b65d6);});});}
\ No newline at end of file
index c9b7695..ab299db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0bb=['fs-extra','../../config/environment','isAuthenticated','index','show','create','put','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x26b01f,_0x27b8f5){var _0x2ca517=function(_0x4919c6){while(--_0x4919c6){_0x26b01f['push'](_0x26b01f['shift']());}};_0x2ca517(++_0x27b8f5);}(_0xf0bb,0xf9));var _0xbf0b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf0bb[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xbf0b('0x0'));var util=require(_0xbf0b('0x1'));var path=require(_0xbf0b('0x2'));var timeout=require(_0xbf0b('0x3'));var express=require(_0xbf0b('0x4'));var router=express[_0xbf0b('0x5')]();var fs_extra=require(_0xbf0b('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbf0b('0x7'));var controller=require('./intZohoField.controller');router['get']('/',auth[_0xbf0b('0x8')](),controller[_0xbf0b('0x9')]);router['get']('/:id',auth[_0xbf0b('0x8')](),controller[_0xbf0b('0xa')]);router['post']('/',auth[_0xbf0b('0x8')](),controller[_0xbf0b('0xb')]);router[_0xbf0b('0xc')]('/:id',auth[_0xbf0b('0x8')](),controller['update']);router[_0xbf0b('0xd')](_0xbf0b('0xe'),auth['isAuthenticated'](),controller[_0xbf0b('0xf')]);module[_0xbf0b('0x10')]=router;
\ No newline at end of file
+var _0x59a4=['fs-extra','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x5a7e7e,_0x14d5ad){var _0x57e099=function(_0x59eb8d){while(--_0x59eb8d){_0x5a7e7e['push'](_0x5a7e7e['shift']());}};_0x57e099(++_0x14d5ad);}(_0x59a4,0xf9));var _0x459a=function(_0x159641,_0x292389){_0x159641=_0x159641-0x0;var _0x41c53a=_0x59a4[_0x159641];return _0x41c53a;};'use strict';var multer=require(_0x459a('0x0'));var util=require(_0x459a('0x1'));var path=require(_0x459a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x459a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x459a('0x4'));var config=require(_0x459a('0x5'));var controller=require(_0x459a('0x6'));router[_0x459a('0x7')]('/',auth[_0x459a('0x8')](),controller['index']);router['get'](_0x459a('0x9'),auth[_0x459a('0x8')](),controller[_0x459a('0xa')]);router[_0x459a('0xb')]('/',auth['isAuthenticated'](),controller[_0x459a('0xc')]);router[_0x459a('0xd')]('/:id',auth[_0x459a('0x8')](),controller[_0x459a('0xe')]);router[_0x459a('0xf')]('/:id',auth[_0x459a('0x8')](),controller[_0x459a('0x10')]);module[_0x459a('0x11')]=router;
\ No newline at end of file
index 9382c5b..4139861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd688=['BOOLEAN','sequelize','exports','ENUM','variable','customVariable','picklist','string','STRING'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0xd688,0x9a));var _0x8d68=function(_0xcf567b,_0x105cd9){_0xcf567b=_0xcf567b-0x0;var _0x475334=_0xd688[_0xcf567b];return _0x475334;};'use strict';var Sequelize=require(_0x8d68('0x0'));module[_0x8d68('0x1')]={'type':{'type':Sequelize[_0x8d68('0x2')]('string',_0x8d68('0x3'),_0x8d68('0x4'),'keyValue',_0x8d68('0x5')),'defaultValue':_0x8d68('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8d68('0x7')]},'keyType':{'type':Sequelize[_0x8d68('0x2')](_0x8d68('0x6'),_0x8d68('0x3'),_0x8d68('0x4'))},'keyContent':{'type':Sequelize[_0x8d68('0x7')]},'idField':{'type':Sequelize[_0x8d68('0x7')]},'nameField':{'type':Sequelize[_0x8d68('0x7')]},'customField':{'type':Sequelize[_0x8d68('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8d68('0x7')]}};
\ No newline at end of file
+var _0xf9d5=['sequelize','variable','customVariable','keyValue','picklist','STRING','ENUM','string'];(function(_0x26e4f2,_0x5a0e0d){var _0x4b7950=function(_0x198355){while(--_0x198355){_0x26e4f2['push'](_0x26e4f2['shift']());}};_0x4b7950(++_0x5a0e0d);}(_0xf9d5,0x190));var _0x5f9d=function(_0x51373b,_0x263636){_0x51373b=_0x51373b-0x0;var _0x2d2cce=_0xf9d5[_0x51373b];return _0x2d2cce;};'use strict';var Sequelize=require(_0x5f9d('0x0'));module['exports']={'type':{'type':Sequelize['ENUM']('string',_0x5f9d('0x1'),_0x5f9d('0x2'),_0x5f9d('0x3'),_0x5f9d('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x5f9d('0x5')]},'key':{'type':Sequelize[_0x5f9d('0x5')]},'keyType':{'type':Sequelize[_0x5f9d('0x6')](_0x5f9d('0x7'),'variable',_0x5f9d('0x2'))},'keyContent':{'type':Sequelize[_0x5f9d('0x5')]},'idField':{'type':Sequelize[_0x5f9d('0x5')]},'nameField':{'type':Sequelize[_0x5f9d('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a3676d8..75028f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c07=['moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','ZohoField','includeAll','rows','catch','show','params','fields','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0c07,0x8b));var _0x70c0=function(_0x397d7c,_0x395c73){_0x397d7c=_0x397d7c-0x0;var _0x195ad3=_0x0c07[_0x397d7c];return _0x195ad3;};'use strict';var emlformat=require(_0x70c0('0x0'));var rimraf=require(_0x70c0('0x1'));var zipdir=require(_0x70c0('0x2'));var jsonpatch=require(_0x70c0('0x3'));var rp=require(_0x70c0('0x4'));var moment=require(_0x70c0('0x5'));var BPromise=require(_0x70c0('0x6'));var Mustache=require(_0x70c0('0x7'));var util=require(_0x70c0('0x8'));var path=require(_0x70c0('0x9'));var sox=require(_0x70c0('0xa'));var csv=require(_0x70c0('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x70c0('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x70c0('0xd'));var jsforce=require(_0x70c0('0xe'));var deskjs=require(_0x70c0('0xf'));var toCsv=require(_0x70c0('0xb'));var querystring=require('querystring');var Papa=require(_0x70c0('0x10'));var Redis=require('ioredis');var authService=require(_0x70c0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x70c0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x70c0('0x13'))(_0x70c0('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x70c0('0x15'))['db'];function respondWithStatusCode(_0x3bc340,_0x361035){_0x361035=_0x361035||0xcc;return function(_0x53d6c2){if(_0x53d6c2){return _0x3bc340[_0x70c0('0x16')](_0x361035);}return _0x3bc340['status'](_0x361035)[_0x70c0('0x17')]();};}function respondWithResult(_0x39c395,_0x37eaac){_0x37eaac=_0x37eaac||0xc8;return function(_0x3d20bb){if(_0x3d20bb){return _0x39c395[_0x70c0('0x18')](_0x37eaac)[_0x70c0('0x19')](_0x3d20bb);}};}function respondWithFilteredResult(_0xba35f3,_0x16bec2){return function(_0x6ccc35){if(_0x6ccc35){var _0x1bf6fe=typeof _0x16bec2[_0x70c0('0x1a')]==='undefined'&&typeof _0x16bec2[_0x70c0('0x1b')]===_0x70c0('0x1c');var _0x1bd5e1=_0x6ccc35[_0x70c0('0x1d')];var _0x390f54=_0x1bf6fe?0x0:_0x16bec2[_0x70c0('0x1a')];var _0x3c2988=_0x1bf6fe?_0x6ccc35[_0x70c0('0x1d')]:_0x16bec2['offset']+_0x16bec2['limit'];var _0x367ed9;if(_0x3c2988>=_0x1bd5e1){_0x3c2988=_0x1bd5e1;_0x367ed9=0xc8;}else{_0x367ed9=0xce;}_0xba35f3['status'](_0x367ed9);return _0xba35f3[_0x70c0('0x1e')](_0x70c0('0x1f'),_0x390f54+'-'+_0x3c2988+'/'+_0x1bd5e1)[_0x70c0('0x19')](_0x6ccc35);}return null;};}function patchUpdates(_0x4d503f){return function(_0x2a590b){try{jsonpatch['apply'](_0x2a590b,_0x4d503f,!![]);}catch(_0x2dc1ff){return BPromise[_0x70c0('0x20')](_0x2dc1ff);}return _0x2a590b[_0x70c0('0x21')]();};}function saveUpdates(_0x11bfb9,_0x35f295){return function(_0x3e6f7c){if(_0x3e6f7c){return _0x3e6f7c[_0x70c0('0x22')](_0x11bfb9)[_0x70c0('0x23')](function(_0x3fc53c){return _0x3fc53c;});}return null;};}function removeEntity(_0x4ba806,_0x234ab2){return function(_0x4c2cd9){if(_0x4c2cd9){return _0x4c2cd9[_0x70c0('0x24')]()[_0x70c0('0x23')](function(){_0x4ba806[_0x70c0('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28623f,_0x3823e2){return function(_0x4dbf28){if(!_0x4dbf28){_0x28623f[_0x70c0('0x16')](0x194);}return _0x4dbf28;};}function handleError(_0x418dc5,_0x8bff9c){_0x8bff9c=_0x8bff9c||0x1f4;return function(_0x31495b){logger[_0x70c0('0x25')](_0x31495b[_0x70c0('0x26')]);if(_0x31495b[_0x70c0('0x27')]){delete _0x31495b[_0x70c0('0x27')];}_0x418dc5[_0x70c0('0x18')](_0x8bff9c)[_0x70c0('0x28')](_0x31495b);};}exports['index']=function(_0x41f791,_0x464984){var _0x13499f={},_0x79134b={},_0x1978ba={'count':0x0,'rows':[]};var _0x47af91=_[_0x70c0('0x29')](db['ZohoField'][_0x70c0('0x2a')],function(_0x24c201){return{'name':_0x24c201[_0x70c0('0x2b')],'type':_0x24c201[_0x70c0('0x2c')][_0x70c0('0x2d')]};});_0x79134b[_0x70c0('0x2e')]=_['map'](_0x47af91,'name');_0x79134b[_0x70c0('0x2f')]=_['keys'](_0x41f791[_0x70c0('0x2f')]);_0x79134b[_0x70c0('0x30')]=_[_0x70c0('0x31')](_0x79134b[_0x70c0('0x2e')],_0x79134b['query']);_0x13499f[_0x70c0('0x32')]=_[_0x70c0('0x31')](_0x79134b[_0x70c0('0x2e')],qs['fields'](_0x41f791[_0x70c0('0x2f')]['fields']));_0x13499f[_0x70c0('0x32')]=_0x13499f[_0x70c0('0x32')][_0x70c0('0x33')]?_0x13499f[_0x70c0('0x32')]:_0x79134b['model'];if(!_0x41f791[_0x70c0('0x2f')][_0x70c0('0x34')]('nolimit')){_0x13499f[_0x70c0('0x1b')]=qs[_0x70c0('0x1b')](_0x41f791[_0x70c0('0x2f')][_0x70c0('0x1b')]);_0x13499f[_0x70c0('0x1a')]=qs['offset'](_0x41f791[_0x70c0('0x2f')][_0x70c0('0x1a')]);}_0x13499f[_0x70c0('0x35')]=qs[_0x70c0('0x36')](_0x41f791[_0x70c0('0x2f')]['sort']);_0x13499f['where']=qs['filters'](_[_0x70c0('0x37')](_0x41f791['query'],_0x79134b['filters']),_0x47af91);if(_0x41f791[_0x70c0('0x2f')][_0x70c0('0x38')]){_0x13499f[_0x70c0('0x39')]=_[_0x70c0('0x3a')](_0x13499f[_0x70c0('0x39')],{'$or':_['map'](_0x47af91,function(_0xae8bc0){if(_0xae8bc0['type']!==_0x70c0('0x3b')){var _0x5a270b={};_0x5a270b[_0xae8bc0['name']]={'$like':'%'+_0x41f791[_0x70c0('0x2f')][_0x70c0('0x38')]+'%'};return _0x5a270b;}})});}_0x13499f=_[_0x70c0('0x3a')]({},_0x13499f,_0x41f791[_0x70c0('0x3c')]);var _0x3d82c4={'where':_0x13499f[_0x70c0('0x39')]};return db[_0x70c0('0x3d')][_0x70c0('0x1d')](_0x3d82c4)[_0x70c0('0x23')](function(_0x233b1f){_0x1978ba[_0x70c0('0x1d')]=_0x233b1f;if(_0x41f791[_0x70c0('0x2f')][_0x70c0('0x3e')]){_0x13499f['include']=[{'all':!![]}];}return db[_0x70c0('0x3d')]['findAll'](_0x13499f);})[_0x70c0('0x23')](function(_0x32f065){_0x1978ba[_0x70c0('0x3f')]=_0x32f065;return _0x1978ba;})[_0x70c0('0x23')](respondWithFilteredResult(_0x464984,_0x13499f))[_0x70c0('0x40')](handleError(_0x464984,null));};exports[_0x70c0('0x41')]=function(_0x588d7d,_0x4a59b8){var _0x261237={'raw':!![],'where':{'id':_0x588d7d[_0x70c0('0x42')]['id']}},_0x11e5db={};_0x11e5db[_0x70c0('0x2e')]=_['keys'](db[_0x70c0('0x3d')][_0x70c0('0x2a')]);_0x11e5db[_0x70c0('0x2f')]=_['keys'](_0x588d7d['query']);_0x11e5db[_0x70c0('0x30')]=_[_0x70c0('0x31')](_0x11e5db[_0x70c0('0x2e')],_0x11e5db['query']);_0x261237[_0x70c0('0x32')]=_[_0x70c0('0x31')](_0x11e5db[_0x70c0('0x2e')],qs['fields'](_0x588d7d[_0x70c0('0x2f')][_0x70c0('0x43')]));_0x261237['attributes']=_0x261237[_0x70c0('0x32')][_0x70c0('0x33')]?_0x261237[_0x70c0('0x32')]:_0x11e5db['model'];if(_0x588d7d[_0x70c0('0x2f')][_0x70c0('0x3e')]){_0x261237[_0x70c0('0x44')]=[{'all':!![]}];}_0x261237=_['merge']({},_0x261237,_0x588d7d['options']);return db[_0x70c0('0x3d')][_0x70c0('0x45')](_0x261237)[_0x70c0('0x23')](handleEntityNotFound(_0x4a59b8,null))[_0x70c0('0x23')](respondWithResult(_0x4a59b8,null))[_0x70c0('0x40')](handleError(_0x4a59b8,null));};exports[_0x70c0('0x46')]=function(_0x2d8ebf,_0x37d7bd){return db[_0x70c0('0x3d')][_0x70c0('0x46')](_0x2d8ebf[_0x70c0('0x47')],{})[_0x70c0('0x23')](respondWithResult(_0x37d7bd,0xc9))[_0x70c0('0x40')](handleError(_0x37d7bd,null));};exports[_0x70c0('0x22')]=function(_0x47f631,_0x2ba8a3){if(_0x47f631['body']['id']){delete _0x47f631[_0x70c0('0x47')]['id'];}return db['ZohoField'][_0x70c0('0x45')]({'where':{'id':_0x47f631[_0x70c0('0x42')]['id']}})[_0x70c0('0x23')](handleEntityNotFound(_0x2ba8a3,null))['then'](saveUpdates(_0x47f631[_0x70c0('0x47')],null))['then'](respondWithResult(_0x2ba8a3,null))[_0x70c0('0x40')](handleError(_0x2ba8a3,null));};exports['destroy']=function(_0x3df32e,_0x3bfb45){return db[_0x70c0('0x3d')]['find']({'where':{'id':_0x3df32e[_0x70c0('0x42')]['id']}})[_0x70c0('0x23')](handleEntityNotFound(_0x3bfb45,null))['then'](removeEntity(_0x3bfb45,null))['catch'](handleError(_0x3bfb45,null));};
\ No newline at end of file
+var _0x77e6=['stack','name','send','index','map','ZohoField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','catch','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','then','end'];(function(_0x5aedbc,_0x41eab8){var _0xc9a701=function(_0x3e965e){while(--_0x3e965e){_0x5aedbc['push'](_0x5aedbc['shift']());}};_0xc9a701(++_0x41eab8);}(_0x77e6,0x1a6));var _0x677e=function(_0x302658,_0x18411f){_0x302658=_0x302658-0x0;var _0x526b7b=_0x77e6[_0x302658];return _0x526b7b;};'use strict';var emlformat=require(_0x677e('0x0'));var rimraf=require(_0x677e('0x1'));var zipdir=require(_0x677e('0x2'));var jsonpatch=require(_0x677e('0x3'));var rp=require(_0x677e('0x4'));var moment=require(_0x677e('0x5'));var BPromise=require(_0x677e('0x6'));var Mustache=require(_0x677e('0x7'));var util=require('util');var path=require(_0x677e('0x8'));var sox=require(_0x677e('0x9'));var csv=require('to-csv');var ejs=require(_0x677e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x677e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x677e('0xc'));var deskjs=require(_0x677e('0xd'));var toCsv=require(_0x677e('0xe'));var querystring=require(_0x677e('0xf'));var Papa=require('papaparse');var Redis=require(_0x677e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x677e('0x11'));var as=require(_0x677e('0x12'));var hardwareService=require(_0x677e('0x13'));var logger=require(_0x677e('0x14'))(_0x677e('0x15'));var utils=require(_0x677e('0x16'));var config=require(_0x677e('0x17'));var licenseUtil=require(_0x677e('0x18'));var db=require(_0x677e('0x19'))['db'];function respondWithStatusCode(_0x46a67e,_0x366490){_0x366490=_0x366490||0xcc;return function(_0x2a5f95){if(_0x2a5f95){return _0x46a67e[_0x677e('0x1a')](_0x366490);}return _0x46a67e[_0x677e('0x1b')](_0x366490)['end']();};}function respondWithResult(_0x512631,_0x5c7351){_0x5c7351=_0x5c7351||0xc8;return function(_0x213a50){if(_0x213a50){return _0x512631[_0x677e('0x1b')](_0x5c7351)[_0x677e('0x1c')](_0x213a50);}};}function respondWithFilteredResult(_0x36e976,_0x4daa04){return function(_0x42d0c3){if(_0x42d0c3){var _0x24c9eb=typeof _0x4daa04[_0x677e('0x1d')]===_0x677e('0x1e')&&typeof _0x4daa04[_0x677e('0x1f')]===_0x677e('0x1e');var _0xe4d960=_0x42d0c3['count'];var _0x1c5124=_0x24c9eb?0x0:_0x4daa04[_0x677e('0x1d')];var _0x385b06=_0x24c9eb?_0x42d0c3[_0x677e('0x20')]:_0x4daa04[_0x677e('0x1d')]+_0x4daa04[_0x677e('0x1f')];var _0x52f65d;if(_0x385b06>=_0xe4d960){_0x385b06=_0xe4d960;_0x52f65d=0xc8;}else{_0x52f65d=0xce;}_0x36e976[_0x677e('0x1b')](_0x52f65d);return _0x36e976['set'](_0x677e('0x21'),_0x1c5124+'-'+_0x385b06+'/'+_0xe4d960)[_0x677e('0x1c')](_0x42d0c3);}return null;};}function patchUpdates(_0x26e9c5){return function(_0x593aed){try{jsonpatch[_0x677e('0x22')](_0x593aed,_0x26e9c5,!![]);}catch(_0x1a6122){return BPromise[_0x677e('0x23')](_0x1a6122);}return _0x593aed[_0x677e('0x24')]();};}function saveUpdates(_0x295964,_0x8732e0){return function(_0x3a7895){if(_0x3a7895){return _0x3a7895['update'](_0x295964)['then'](function(_0x52d915){return _0x52d915;});}return null;};}function removeEntity(_0x357466,_0x154fce){return function(_0x31a1e4){if(_0x31a1e4){return _0x31a1e4[_0x677e('0x25')]()[_0x677e('0x26')](function(){_0x357466[_0x677e('0x1b')](0xcc)[_0x677e('0x27')]();});}};}function handleEntityNotFound(_0x42f2b8,_0x2c51d3){return function(_0x3f0646){if(!_0x3f0646){_0x42f2b8['sendStatus'](0x194);}return _0x3f0646;};}function handleError(_0x5f0ba2,_0x3d3370){_0x3d3370=_0x3d3370||0x1f4;return function(_0x184f68){logger['error'](_0x184f68[_0x677e('0x28')]);if(_0x184f68[_0x677e('0x29')]){delete _0x184f68[_0x677e('0x29')];}_0x5f0ba2[_0x677e('0x1b')](_0x3d3370)[_0x677e('0x2a')](_0x184f68);};}exports[_0x677e('0x2b')]=function(_0x56ad40,_0xcd4646){var _0x2a6033={},_0xeca8e2={},_0x1e2694={'count':0x0,'rows':[]};var _0x22e44c=_[_0x677e('0x2c')](db[_0x677e('0x2d')][_0x677e('0x2e')],function(_0x9d49b5){return{'name':_0x9d49b5['fieldName'],'type':_0x9d49b5[_0x677e('0x2f')][_0x677e('0x30')]};});_0xeca8e2[_0x677e('0x31')]=_[_0x677e('0x2c')](_0x22e44c,_0x677e('0x29'));_0xeca8e2[_0x677e('0x32')]=_[_0x677e('0x33')](_0x56ad40[_0x677e('0x32')]);_0xeca8e2[_0x677e('0x34')]=_[_0x677e('0x35')](_0xeca8e2['model'],_0xeca8e2[_0x677e('0x32')]);_0x2a6033[_0x677e('0x36')]=_[_0x677e('0x35')](_0xeca8e2[_0x677e('0x31')],qs[_0x677e('0x37')](_0x56ad40[_0x677e('0x32')]['fields']));_0x2a6033[_0x677e('0x36')]=_0x2a6033[_0x677e('0x36')][_0x677e('0x38')]?_0x2a6033['attributes']:_0xeca8e2[_0x677e('0x31')];if(!_0x56ad40[_0x677e('0x32')][_0x677e('0x39')](_0x677e('0x3a'))){_0x2a6033[_0x677e('0x1f')]=qs['limit'](_0x56ad40[_0x677e('0x32')][_0x677e('0x1f')]);_0x2a6033[_0x677e('0x1d')]=qs[_0x677e('0x1d')](_0x56ad40['query'][_0x677e('0x1d')]);}_0x2a6033[_0x677e('0x3b')]=qs[_0x677e('0x3c')](_0x56ad40['query']['sort']);_0x2a6033[_0x677e('0x3d')]=qs[_0x677e('0x34')](_['pick'](_0x56ad40[_0x677e('0x32')],_0xeca8e2[_0x677e('0x34')]),_0x22e44c);if(_0x56ad40['query']['filter']){_0x2a6033[_0x677e('0x3d')]=_[_0x677e('0x3e')](_0x2a6033['where'],{'$or':_['map'](_0x22e44c,function(_0x42ce2c){if(_0x42ce2c[_0x677e('0x2f')]!==_0x677e('0x3f')){var _0x5bb080={};_0x5bb080[_0x42ce2c[_0x677e('0x29')]]={'$like':'%'+_0x56ad40[_0x677e('0x32')][_0x677e('0x40')]+'%'};return _0x5bb080;}})});}_0x2a6033=_[_0x677e('0x3e')]({},_0x2a6033,_0x56ad40[_0x677e('0x41')]);var _0x4b34fa={'where':_0x2a6033['where']};return db[_0x677e('0x2d')][_0x677e('0x20')](_0x4b34fa)[_0x677e('0x26')](function(_0x1db5b4){_0x1e2694[_0x677e('0x20')]=_0x1db5b4;if(_0x56ad40[_0x677e('0x32')][_0x677e('0x42')]){_0x2a6033[_0x677e('0x43')]=[{'all':!![]}];}return db[_0x677e('0x2d')][_0x677e('0x44')](_0x2a6033);})['then'](function(_0x56eb30){_0x1e2694[_0x677e('0x45')]=_0x56eb30;return _0x1e2694;})[_0x677e('0x26')](respondWithFilteredResult(_0xcd4646,_0x2a6033))['catch'](handleError(_0xcd4646,null));};exports[_0x677e('0x46')]=function(_0x511125,_0x16362e){var _0x29b9c0={'raw':!![],'where':{'id':_0x511125[_0x677e('0x47')]['id']}},_0x283aaa={};_0x283aaa[_0x677e('0x31')]=_[_0x677e('0x33')](db['ZohoField'][_0x677e('0x2e')]);_0x283aaa[_0x677e('0x32')]=_[_0x677e('0x33')](_0x511125[_0x677e('0x32')]);_0x283aaa[_0x677e('0x34')]=_[_0x677e('0x35')](_0x283aaa['model'],_0x283aaa[_0x677e('0x32')]);_0x29b9c0['attributes']=_[_0x677e('0x35')](_0x283aaa[_0x677e('0x31')],qs[_0x677e('0x37')](_0x511125[_0x677e('0x32')][_0x677e('0x37')]));_0x29b9c0[_0x677e('0x36')]=_0x29b9c0[_0x677e('0x36')][_0x677e('0x38')]?_0x29b9c0[_0x677e('0x36')]:_0x283aaa[_0x677e('0x31')];if(_0x511125['query'][_0x677e('0x42')]){_0x29b9c0['include']=[{'all':!![]}];}_0x29b9c0=_['merge']({},_0x29b9c0,_0x511125[_0x677e('0x41')]);return db[_0x677e('0x2d')][_0x677e('0x48')](_0x29b9c0)[_0x677e('0x26')](handleEntityNotFound(_0x16362e,null))[_0x677e('0x26')](respondWithResult(_0x16362e,null))['catch'](handleError(_0x16362e,null));};exports[_0x677e('0x49')]=function(_0x136b77,_0x3cb653){return db[_0x677e('0x2d')][_0x677e('0x49')](_0x136b77['body'],{})[_0x677e('0x26')](respondWithResult(_0x3cb653,0xc9))[_0x677e('0x4a')](handleError(_0x3cb653,null));};exports[_0x677e('0x4b')]=function(_0x496627,_0x30ed5c){if(_0x496627['body']['id']){delete _0x496627[_0x677e('0x4c')]['id'];}return db['ZohoField']['find']({'where':{'id':_0x496627[_0x677e('0x47')]['id']}})[_0x677e('0x26')](handleEntityNotFound(_0x30ed5c,null))[_0x677e('0x26')](saveUpdates(_0x496627[_0x677e('0x4c')],null))['then'](respondWithResult(_0x30ed5c,null))[_0x677e('0x4a')](handleError(_0x30ed5c,null));};exports[_0x677e('0x25')]=function(_0x51b2b8,_0x5e93e9){return db[_0x677e('0x2d')][_0x677e('0x48')]({'where':{'id':_0x51b2b8[_0x677e('0x47')]['id']}})[_0x677e('0x26')](handleEntityNotFound(_0x5e93e9,null))['then'](removeEntity(_0x5e93e9,null))[_0x677e('0x4a')](handleError(_0x5e93e9,null));};
\ No newline at end of file
index b7ea358..bc05330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['define','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x2a9146,_0x55b436){var _0xe06fdc=function(_0x152963){while(--_0x152963){_0x2a9146['push'](_0x2a9146['shift']());}};_0xe06fdc(++_0x55b436);}(_0x627e,0x14a));var _0xe627=function(_0x5e72e2,_0xb6af33){_0x5e72e2=_0x5e72e2-0x0;var _0xf5f31f=_0x627e[_0x5e72e2];return _0xf5f31f;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var logger=require(_0xe627('0x2'))(_0xe627('0x3'));var moment=require(_0xe627('0x4'));var BPromise=require('bluebird');var rp=require(_0xe627('0x5'));var fs=require('fs');var path=require(_0xe627('0x6'));var rimraf=require(_0xe627('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module['exports']=function(_0x1a1a3d,_0x3f2791){return _0x1a1a3d[_0xe627('0x8')](_0xe627('0x9'),attributes,{'tableName':_0xe627('0xa'),'paranoid':![],'indexes':[{'name':_0xe627('0xb'),'fields':['idField',_0xe627('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xba34=['FieldId','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./intZohoField.attributes','exports','define','int_zoho_fields','zoho_unique_index','idField'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xba34,0x119));var _0x4ba3=function(_0x248919,_0x43c704){_0x248919=_0x248919-0x0;var _0x66a6f3=_0xba34[_0x248919];return _0x66a6f3;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var logger=require(_0x4ba3('0x2'))(_0x4ba3('0x3'));var moment=require(_0x4ba3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var attributes=require(_0x4ba3('0x7'));module[_0x4ba3('0x8')]=function(_0x3590a1,_0xb88621){return _0x3590a1[_0x4ba3('0x9')]('ZohoField',attributes,{'tableName':_0x4ba3('0xa'),'paranoid':![],'indexes':[{'name':_0x4ba3('0xb'),'fields':[_0x4ba3('0xc'),_0x4ba3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index dc5c90f..7e07052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','ZohoField,\x20%s,\x20%s','request\x20sent','ZohoField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash'];(function(_0x221019,_0x15c3c1){var _0x1b3cae=function(_0x7a192d){while(--_0x7a192d){_0x221019['push'](_0x221019['shift']());}};_0x1b3cae(++_0x15c3c1);}(_0x1cf9,0x175));var _0x91cf=function(_0x154093,_0x4c987e){_0x154093=_0x154093-0x0;var _0x2b760a=_0x1cf9[_0x154093];return _0x2b760a;};'use strict';var _=require(_0x91cf('0x0'));var util=require('util');var moment=require(_0x91cf('0x1'));var BPromise=require(_0x91cf('0x2'));var rs=require(_0x91cf('0x3'));var fs=require('fs');var Redis=require(_0x91cf('0x4'));var db=require(_0x91cf('0x5'))['db'];var utils=require(_0x91cf('0x6'));var logger=require(_0x91cf('0x7'))(_0x91cf('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x91cf('0x9')][_0x91cf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x514aed,_0x11c690,_0x3a44db){return new BPromise(function(_0x215adf,_0x3a59db){return client[_0x91cf('0xb')](_0x514aed,_0x3a44db)['then'](function(_0x3ff4a2){logger[_0x91cf('0xc')](_0x91cf('0xd'),_0x11c690,_0x91cf('0xe'));logger['debug'](_0x91cf('0xf'),_0x11c690,_0x91cf('0xe'),JSON[_0x91cf('0x10')](_0x3ff4a2));if(_0x3ff4a2['error']){if(_0x3ff4a2['error'][_0x91cf('0x11')]===0x1f4){logger[_0x91cf('0x12')](_0x91cf('0xd'),_0x11c690,_0x3ff4a2[_0x91cf('0x12')][_0x91cf('0x13')]);return _0x3a59db(_0x3ff4a2[_0x91cf('0x12')][_0x91cf('0x13')]);}logger['error'](_0x91cf('0xd'),_0x11c690,_0x3ff4a2[_0x91cf('0x12')][_0x91cf('0x13')]);return _0x215adf(_0x3ff4a2['error'][_0x91cf('0x13')]);}else{logger['info']('ZohoField,\x20%s,\x20%s',_0x11c690,_0x91cf('0xe'));_0x215adf(_0x3ff4a2[_0x91cf('0x14')][_0x91cf('0x13')]);}})[_0x91cf('0x15')](function(_0x354ddf){logger[_0x91cf('0x12')](_0x91cf('0xd'),_0x11c690,_0x354ddf);_0x3a59db(_0x354ddf);});});}
\ No newline at end of file
+var _0x1d70=['lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0xc82f28,_0x24e29a){var _0x5608b1=function(_0x1e1ab5){while(--_0x1e1ab5){_0xc82f28['push'](_0xc82f28['shift']());}};_0x5608b1(++_0x24e29a);}(_0x1d70,0x150));var _0x01d7=function(_0x45d75b,_0x523780){_0x45d75b=_0x45d75b-0x0;var _0x73e563=_0x1d70[_0x45d75b];return _0x73e563;};'use strict';var _=require(_0x01d7('0x0'));var util=require(_0x01d7('0x1'));var moment=require(_0x01d7('0x2'));var BPromise=require(_0x01d7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x01d7('0x4'));var logger=require(_0x01d7('0x5'))(_0x01d7('0x6'));var config=require(_0x01d7('0x7'));var jayson=require(_0x01d7('0x8'));var client=jayson[_0x01d7('0x9')][_0x01d7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x320f2a,_0x300d5d,_0x519a9e){return new BPromise(function(_0x535ad1,_0x5f29a0){return client['request'](_0x320f2a,_0x519a9e)['then'](function(_0x12073b){logger['info'](_0x01d7('0xb'),_0x300d5d,_0x01d7('0xc'));logger[_0x01d7('0xd')](_0x01d7('0xe'),_0x300d5d,_0x01d7('0xc'),JSON[_0x01d7('0xf')](_0x12073b));if(_0x12073b[_0x01d7('0x10')]){if(_0x12073b[_0x01d7('0x10')][_0x01d7('0x11')]===0x1f4){logger['error'](_0x01d7('0xb'),_0x300d5d,_0x12073b[_0x01d7('0x10')]['message']);return _0x5f29a0(_0x12073b[_0x01d7('0x10')][_0x01d7('0x12')]);}logger[_0x01d7('0x10')]('ZohoField,\x20%s,\x20%s',_0x300d5d,_0x12073b['error'][_0x01d7('0x12')]);return _0x535ad1(_0x12073b[_0x01d7('0x10')][_0x01d7('0x12')]);}else{logger['info'](_0x01d7('0xb'),_0x300d5d,'request\x20sent');_0x535ad1(_0x12073b[_0x01d7('0x13')][_0x01d7('0x12')]);}})[_0x01d7('0x14')](function(_0x219bae){logger[_0x01d7('0x10')](_0x01d7('0xb'),_0x300d5d,_0x219bae);_0x5f29a0(_0x219bae);});});}
\ No newline at end of file
index 0456d6b..94b8614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x498357,_0x3ae17c){var _0x22fe2d=function(_0x11544f){while(--_0x11544f){_0x498357['push'](_0x498357['shift']());}};_0x22fe2d(++_0x3ae17c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x498334,_0x27b6fe){_0x498334=_0x498334-0x0;var _0x13bb70=_0xcb91[_0x498334];return _0x13bb70;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x94030f,_0x476ed2){var _0x9f7747=function(_0x2b977a){while(--_0x2b977a){_0x94030f['push'](_0x94030f['shift']());}};_0x9f7747(++_0x476ed2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xa9e0[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 64cd053..534a5f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa847=['INTEGER','state','sequelize','exports','STRING','unique_name_and_version','app.js'];(function(_0x24a047,_0x390af1){var _0x3b99e1=function(_0x1c68a1){while(--_0x1c68a1){_0x24a047['push'](_0x24a047['shift']());}};_0x3b99e1(++_0x390af1);}(_0xa847,0x191));var _0x7a84=function(_0x1bc871,_0x2a457b){_0x1bc871=_0x1bc871-0x0;var _0x3696=_0xa847[_0x1bc871];return _0x3696;};'use strict';var Sequelize=require(_0x7a84('0x0'));module[_0x7a84('0x1')]={'name':{'type':Sequelize[_0x7a84('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x7a84('0x3')},'main':{'type':Sequelize[_0x7a84('0x2')],'defaultValue':_0x7a84('0x4')},'filename':{'type':Sequelize[_0x7a84('0x2')]},'path':{'type':Sequelize[_0x7a84('0x2')]},'type':{'type':Sequelize[_0x7a84('0x2')]},'size':{'type':Sequelize[_0x7a84('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0x7a84('0x2')]},'logo':{'type':Sequelize[_0x7a84('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0x7a84('0x6')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x7a84('0x2')]},'remoteUri':{'type':Sequelize[_0x7a84('0x2')]},'link':{'type':Sequelize[_0x7a84('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x0523=['exports','STRING','app.js','INTEGER','BOOLEAN','state','sequelize'];(function(_0x12c676,_0x4e075b){var _0x1d2c8d=function(_0x5e3a41){while(--_0x5e3a41){_0x12c676['push'](_0x12c676['shift']());}};_0x1d2c8d(++_0x4e075b);}(_0x0523,0xfb));var _0x3052=function(_0x58a0b1,_0x53372d){_0x58a0b1=_0x58a0b1-0x0;var _0x2395d0=_0x0523[_0x58a0b1];return _0x2395d0;};'use strict';var Sequelize=require(_0x3052('0x0'));module[_0x3052('0x1')]={'name':{'type':Sequelize[_0x3052('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x3052('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x3052('0x2')],'defaultValue':_0x3052('0x3')},'filename':{'type':Sequelize[_0x3052('0x2')]},'path':{'type':Sequelize[_0x3052('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x3052('0x4')]},'active':{'type':Sequelize[_0x3052('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x3052('0x2')]},'logo':{'type':Sequelize[_0x3052('0x2')]},'state':{'type':Sequelize['STRING'],'unique':_0x3052('0x6')},'description':{'type':Sequelize[_0x3052('0x2')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x3052('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index e8e5109..1daf900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','Integration','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','findAll','params','find','catch','create','body','rimraf','zip-dir','request-promise','moment'];(function(_0x39fe78,_0x196a99){var _0x4a9e87=function(_0x56fac0){while(--_0x56fac0){_0x39fe78['push'](_0x39fe78['shift']());}};_0x4a9e87(++_0x196a99);}(_0x57ca,0x108));var _0xa57c=function(_0x2028cc,_0x390340){_0x2028cc=_0x2028cc-0x0;var _0x3ff4e9=_0x57ca[_0x2028cc];return _0x3ff4e9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa57c('0x0'));var zipdir=require(_0xa57c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa57c('0x2'));var moment=require(_0xa57c('0x3'));var BPromise=require(_0xa57c('0x4'));var Mustache=require(_0xa57c('0x5'));var util=require(_0xa57c('0x6'));var path=require('path');var sox=require(_0xa57c('0x7'));var csv=require(_0xa57c('0x8'));var ejs=require(_0xa57c('0x9'));var fs=require('fs');var fs_extra=require(_0xa57c('0xa'));var _=require(_0xa57c('0xb'));var squel=require(_0xa57c('0xc'));var crypto=require(_0xa57c('0xd'));var jsforce=require(_0xa57c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa57c('0x8'));var querystring=require('querystring');var Papa=require(_0xa57c('0xf'));var Redis=require(_0xa57c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa57c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa57c('0x12'));var logger=require(_0xa57c('0x13'))('api');var utils=require(_0xa57c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa57c('0x15'));var db=require(_0xa57c('0x16'))['db'];function respondWithStatusCode(_0x1f2bb5,_0x9e25bf){_0x9e25bf=_0x9e25bf||0xcc;return function(_0x205e72){if(_0x205e72){return _0x1f2bb5['sendStatus'](_0x9e25bf);}return _0x1f2bb5[_0xa57c('0x17')](_0x9e25bf)['end']();};}function respondWithResult(_0x30d23d,_0x3d5995){_0x3d5995=_0x3d5995||0xc8;return function(_0x30940d){if(_0x30940d){return _0x30d23d[_0xa57c('0x17')](_0x3d5995)[_0xa57c('0x18')](_0x30940d);}};}function respondWithFilteredResult(_0x37a323,_0x3f900a){return function(_0x4b4bdb){if(_0x4b4bdb){var _0x26607a=typeof _0x3f900a[_0xa57c('0x19')]===_0xa57c('0x1a')&&typeof _0x3f900a['limit']===_0xa57c('0x1a');var _0x5f33f1=_0x4b4bdb[_0xa57c('0x1b')];var _0x3d781d=_0x26607a?0x0:_0x3f900a[_0xa57c('0x19')];var _0xe3d505=_0x26607a?_0x4b4bdb[_0xa57c('0x1b')]:_0x3f900a[_0xa57c('0x19')]+_0x3f900a[_0xa57c('0x1c')];var _0x595c7a;if(_0xe3d505>=_0x5f33f1){_0xe3d505=_0x5f33f1;_0x595c7a=0xc8;}else{_0x595c7a=0xce;}_0x37a323['status'](_0x595c7a);return _0x37a323[_0xa57c('0x1d')]('Content-Range',_0x3d781d+'-'+_0xe3d505+'/'+_0x5f33f1)['json'](_0x4b4bdb);}return null;};}function patchUpdates(_0x418415){return function(_0xa5b314){try{jsonpatch[_0xa57c('0x1e')](_0xa5b314,_0x418415,!![]);}catch(_0x23bec0){return BPromise['reject'](_0x23bec0);}return _0xa5b314[_0xa57c('0x1f')]();};}function saveUpdates(_0x25715f,_0x34d1bc){return function(_0x2213b2){if(_0x2213b2){return _0x2213b2[_0xa57c('0x20')](_0x25715f)[_0xa57c('0x21')](function(_0x1e0192){return _0x1e0192;});}return null;};}function removeEntity(_0x42038e,_0x2e99ed){return function(_0xdf65dd){if(_0xdf65dd){return _0xdf65dd[_0xa57c('0x22')]()[_0xa57c('0x21')](function(){_0x42038e[_0xa57c('0x17')](0xcc)[_0xa57c('0x23')]();});}};}function handleEntityNotFound(_0x431bec,_0x511a26){return function(_0x2db443){if(!_0x2db443){_0x431bec[_0xa57c('0x24')](0x194);}return _0x2db443;};}function handleError(_0x27884d,_0x5228b9){_0x5228b9=_0x5228b9||0x1f4;return function(_0x315ad7){logger[_0xa57c('0x25')](_0x315ad7[_0xa57c('0x26')]);if(_0x315ad7[_0xa57c('0x27')]){delete _0x315ad7[_0xa57c('0x27')];}_0x27884d[_0xa57c('0x17')](_0x5228b9)['send'](_0x315ad7);};}exports[_0xa57c('0x28')]=function(_0x4c1478,_0x54a18b){var _0x257661={},_0x7d10ec={},_0x5a3e03={'count':0x0,'rows':[]};var _0x12898b=_[_0xa57c('0x29')](db[_0xa57c('0x2a')]['rawAttributes'],function(_0xd779f1){return{'name':_0xd779f1['fieldName'],'type':_0xd779f1[_0xa57c('0x2b')]['key']};});_0x7d10ec[_0xa57c('0x2c')]=_['map'](_0x12898b,_0xa57c('0x27'));_0x7d10ec['query']=_[_0xa57c('0x2d')](_0x4c1478[_0xa57c('0x2e')]);_0x7d10ec[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x7d10ec[_0xa57c('0x2c')],_0x7d10ec[_0xa57c('0x2e')]);_0x257661[_0xa57c('0x31')]=_['intersection'](_0x7d10ec[_0xa57c('0x2c')],qs['fields'](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x257661[_0xa57c('0x31')]=_0x257661['attributes'][_0xa57c('0x33')]?_0x257661['attributes']:_0x7d10ec[_0xa57c('0x2c')];if(!_0x4c1478['query'][_0xa57c('0x34')]('nolimit')){_0x257661[_0xa57c('0x1c')]=qs[_0xa57c('0x1c')](_0x4c1478['query'][_0xa57c('0x1c')]);_0x257661['offset']=qs[_0xa57c('0x19')](_0x4c1478['query'][_0xa57c('0x19')]);}_0x257661[_0xa57c('0x35')]=qs[_0xa57c('0x36')](_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x36')]);_0x257661[_0xa57c('0x37')]=qs['filters'](_['pick'](_0x4c1478[_0xa57c('0x2e')],_0x7d10ec[_0xa57c('0x2f')]),_0x12898b);if(_0x4c1478[_0xa57c('0x2e')]['filter']){_0x257661[_0xa57c('0x37')]=_['merge'](_0x257661[_0xa57c('0x37')],{'$or':_[_0xa57c('0x29')](_0x12898b,function(_0x5c8256){if(_0x5c8256['type']!=='VIRTUAL'){var _0x3be888={};_0x3be888[_0x5c8256[_0xa57c('0x27')]]={'$like':'%'+_0x4c1478[_0xa57c('0x2e')][_0xa57c('0x38')]+'%'};return _0x3be888;}})});}_0x257661=_[_0xa57c('0x39')]({},_0x257661,_0x4c1478[_0xa57c('0x3a')]);var _0x5a444a={'where':_0x257661[_0xa57c('0x37')]};return db[_0xa57c('0x2a')]['count'](_0x5a444a)['then'](function(_0x5e10b){_0x5a3e03[_0xa57c('0x1b')]=_0x5e10b;if(_0x4c1478['query'][_0xa57c('0x3b')]){_0x257661[_0xa57c('0x3c')]=[{'all':!![]}];}return db[_0xa57c('0x2a')][_0xa57c('0x3d')](_0x257661);})[_0xa57c('0x21')](function(_0x43c1d7){_0x5a3e03['rows']=_0x43c1d7;return _0x5a3e03;})[_0xa57c('0x21')](respondWithFilteredResult(_0x54a18b,_0x257661))['catch'](handleError(_0x54a18b,null));};exports['show']=function(_0x5b3300,_0x520383){var _0x588199={'raw':![],'where':{'id':_0x5b3300[_0xa57c('0x3e')]['id']}},_0x39b20f={};_0x39b20f[_0xa57c('0x2c')]=_['keys'](db['Integration']['rawAttributes']);_0x39b20f[_0xa57c('0x2e')]=_[_0xa57c('0x2d')](_0x5b3300[_0xa57c('0x2e')]);_0x39b20f[_0xa57c('0x2f')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],_0x39b20f['query']);_0x588199[_0xa57c('0x31')]=_[_0xa57c('0x30')](_0x39b20f[_0xa57c('0x2c')],qs[_0xa57c('0x32')](_0x5b3300[_0xa57c('0x2e')][_0xa57c('0x32')]));_0x588199['attributes']=_0x588199[_0xa57c('0x31')][_0xa57c('0x33')]?_0x588199[_0xa57c('0x31')]:_0x39b20f[_0xa57c('0x2c')];if(_0x5b3300[_0xa57c('0x2e')]['includeAll']){_0x588199[_0xa57c('0x3c')]=[{'all':!![]}];}_0x588199=_[_0xa57c('0x39')]({},_0x588199,_0x5b3300[_0xa57c('0x3a')]);return db[_0xa57c('0x2a')][_0xa57c('0x3f')](_0x588199)[_0xa57c('0x21')](handleEntityNotFound(_0x520383,null))['then'](respondWithResult(_0x520383,null))[_0xa57c('0x40')](handleError(_0x520383,null));};exports[_0xa57c('0x41')]=function(_0x247906,_0x44ea0a){return db[_0xa57c('0x2a')][_0xa57c('0x41')](_0x247906['body'],{})['then'](respondWithResult(_0x44ea0a,0xc9))['catch'](handleError(_0x44ea0a,null));};exports['update']=function(_0x232675,_0x49492f){if(_0x232675[_0xa57c('0x42')]['id']){delete _0x232675[_0xa57c('0x42')]['id'];}return db['Integration'][_0xa57c('0x3f')]({'where':{'id':_0x232675[_0xa57c('0x3e')]['id']}})[_0xa57c('0x21')](handleEntityNotFound(_0x49492f,null))[_0xa57c('0x21')](saveUpdates(_0x232675[_0xa57c('0x42')],null))['then'](respondWithResult(_0x49492f,null))[_0xa57c('0x40')](handleError(_0x49492f,null));};exports[_0xa57c('0x22')]=function(_0x4584e8,_0xd57bac){return db[_0xa57c('0x2a')]['find']({'where':{'id':_0x4584e8[_0xa57c('0x3e')]['id']}})['then'](handleEntityNotFound(_0xd57bac,null))['then'](removeEntity(_0xd57bac,null))[_0xa57c('0x40')](handleError(_0xd57bac,null));};
\ No newline at end of file
+var _0x7880=['set','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','Integration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','keys','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit'];(function(_0x28e927,_0x1a4e60){var _0x3969e8=function(_0x260748){while(--_0x260748){_0x28e927['push'](_0x28e927['shift']());}};_0x3969e8(++_0x1a4e60);}(_0x7880,0x1f4));var _0x0788=function(_0x503ea8,_0x22e391){_0x503ea8=_0x503ea8-0x0;var _0x427e5d=_0x7880[_0x503ea8];return _0x427e5d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var hardwareService=require(_0x0788('0x14'));var logger=require(_0x0788('0x15'))('api');var utils=require(_0x0788('0x16'));var config=require(_0x0788('0x17'));var licenseUtil=require(_0x0788('0x18'));var db=require(_0x0788('0x19'))['db'];function respondWithStatusCode(_0x311729,_0xce4342){_0xce4342=_0xce4342||0xcc;return function(_0x261ebc){if(_0x261ebc){return _0x311729['sendStatus'](_0xce4342);}return _0x311729[_0x0788('0x1a')](_0xce4342)[_0x0788('0x1b')]();};}function respondWithResult(_0x3bdcdf,_0x13cf07){_0x13cf07=_0x13cf07||0xc8;return function(_0x51e5d3){if(_0x51e5d3){return _0x3bdcdf[_0x0788('0x1a')](_0x13cf07)['json'](_0x51e5d3);}};}function respondWithFilteredResult(_0x195f14,_0x170d56){return function(_0x3fd1e4){if(_0x3fd1e4){var _0xb406fb=typeof _0x170d56[_0x0788('0x1c')]===_0x0788('0x1d')&&typeof _0x170d56['limit']==='undefined';var _0x17d805=_0x3fd1e4[_0x0788('0x1e')];var _0x5b2bdc=_0xb406fb?0x0:_0x170d56[_0x0788('0x1c')];var _0x415f19=_0xb406fb?_0x3fd1e4[_0x0788('0x1e')]:_0x170d56['offset']+_0x170d56[_0x0788('0x1f')];var _0x3fb723;if(_0x415f19>=_0x17d805){_0x415f19=_0x17d805;_0x3fb723=0xc8;}else{_0x3fb723=0xce;}_0x195f14['status'](_0x3fb723);return _0x195f14[_0x0788('0x20')]('Content-Range',_0x5b2bdc+'-'+_0x415f19+'/'+_0x17d805)[_0x0788('0x21')](_0x3fd1e4);}return null;};}function patchUpdates(_0x48bc5f){return function(_0x17cca3){try{jsonpatch[_0x0788('0x22')](_0x17cca3,_0x48bc5f,!![]);}catch(_0x18ff22){return BPromise[_0x0788('0x23')](_0x18ff22);}return _0x17cca3[_0x0788('0x24')]();};}function saveUpdates(_0x4f0005,_0x48ec43){return function(_0x2270d4){if(_0x2270d4){return _0x2270d4[_0x0788('0x25')](_0x4f0005)[_0x0788('0x26')](function(_0x7a99a1){return _0x7a99a1;});}return null;};}function removeEntity(_0x5ba1da,_0x4d5c93){return function(_0x79204e){if(_0x79204e){return _0x79204e[_0x0788('0x27')]()[_0x0788('0x26')](function(){_0x5ba1da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x240459,_0xa1f7dc){return function(_0x5f2dda){if(!_0x5f2dda){_0x240459['sendStatus'](0x194);}return _0x5f2dda;};}function handleError(_0x5a54a5,_0x44798c){_0x44798c=_0x44798c||0x1f4;return function(_0x57fda1){logger[_0x0788('0x28')](_0x57fda1[_0x0788('0x29')]);if(_0x57fda1[_0x0788('0x2a')]){delete _0x57fda1[_0x0788('0x2a')];}_0x5a54a5[_0x0788('0x1a')](_0x44798c)[_0x0788('0x2b')](_0x57fda1);};}exports[_0x0788('0x2c')]=function(_0x3ffe4f,_0x5b7594){var _0x5a5178={},_0x3c5246={},_0x40d345={'count':0x0,'rows':[]};var _0x54979a=_['map'](db[_0x0788('0x2d')][_0x0788('0x2e')],function(_0x20fcd8){return{'name':_0x20fcd8[_0x0788('0x2f')],'type':_0x20fcd8[_0x0788('0x30')][_0x0788('0x31')]};});_0x3c5246[_0x0788('0x32')]=_[_0x0788('0x33')](_0x54979a,_0x0788('0x2a'));_0x3c5246[_0x0788('0x34')]=_['keys'](_0x3ffe4f[_0x0788('0x34')]);_0x3c5246[_0x0788('0x35')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],_0x3c5246[_0x0788('0x34')]);_0x5a5178[_0x0788('0x37')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],qs[_0x0788('0x38')](_0x3ffe4f[_0x0788('0x34')]['fields']));_0x5a5178['attributes']=_0x5a5178['attributes']['length']?_0x5a5178['attributes']:_0x3c5246['model'];if(!_0x3ffe4f[_0x0788('0x34')][_0x0788('0x39')](_0x0788('0x3a'))){_0x5a5178['limit']=qs[_0x0788('0x1f')](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x1f')]);_0x5a5178[_0x0788('0x1c')]=qs['offset'](_0x3ffe4f[_0x0788('0x34')]['offset']);}_0x5a5178[_0x0788('0x3b')]=qs['sort'](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3c')]);_0x5a5178['where']=qs[_0x0788('0x35')](_[_0x0788('0x3d')](_0x3ffe4f['query'],_0x3c5246[_0x0788('0x35')]),_0x54979a);if(_0x3ffe4f['query'][_0x0788('0x3e')]){_0x5a5178['where']=_[_0x0788('0x3f')](_0x5a5178['where'],{'$or':_[_0x0788('0x33')](_0x54979a,function(_0x57fec9){if(_0x57fec9['type']!==_0x0788('0x40')){var _0x68d9d4={};_0x68d9d4[_0x57fec9[_0x0788('0x2a')]]={'$like':'%'+_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3e')]+'%'};return _0x68d9d4;}})});}_0x5a5178=_['merge']({},_0x5a5178,_0x3ffe4f['options']);var _0x530d83={'where':_0x5a5178['where']};return db[_0x0788('0x2d')][_0x0788('0x1e')](_0x530d83)[_0x0788('0x26')](function(_0x358a22){_0x40d345[_0x0788('0x1e')]=_0x358a22;if(_0x3ffe4f['query']['includeAll']){_0x5a5178[_0x0788('0x41')]=[{'all':!![]}];}return db[_0x0788('0x2d')][_0x0788('0x42')](_0x5a5178);})[_0x0788('0x26')](function(_0x236b63){_0x40d345[_0x0788('0x43')]=_0x236b63;return _0x40d345;})[_0x0788('0x26')](respondWithFilteredResult(_0x5b7594,_0x5a5178))[_0x0788('0x44')](handleError(_0x5b7594,null));};exports[_0x0788('0x45')]=function(_0x50e8f5,_0x5581e6){var _0x441aec={'raw':![],'where':{'id':_0x50e8f5[_0x0788('0x46')]['id']}},_0x1d579d={};_0x1d579d['model']=_['keys'](db['Integration'][_0x0788('0x2e')]);_0x1d579d[_0x0788('0x34')]=_[_0x0788('0x47')](_0x50e8f5[_0x0788('0x34')]);_0x1d579d[_0x0788('0x35')]=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],_0x1d579d[_0x0788('0x34')]);_0x441aec['attributes']=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],qs[_0x0788('0x38')](_0x50e8f5[_0x0788('0x34')]['fields']));_0x441aec[_0x0788('0x37')]=_0x441aec[_0x0788('0x37')]['length']?_0x441aec['attributes']:_0x1d579d['model'];if(_0x50e8f5[_0x0788('0x34')]['includeAll']){_0x441aec[_0x0788('0x41')]=[{'all':!![]}];}_0x441aec=_[_0x0788('0x3f')]({},_0x441aec,_0x50e8f5[_0x0788('0x48')]);return db[_0x0788('0x2d')][_0x0788('0x49')](_0x441aec)[_0x0788('0x26')](handleEntityNotFound(_0x5581e6,null))[_0x0788('0x26')](respondWithResult(_0x5581e6,null))[_0x0788('0x44')](handleError(_0x5581e6,null));};exports['create']=function(_0x4c6366,_0x39c3cc){return db[_0x0788('0x2d')][_0x0788('0x4a')](_0x4c6366['body'],{})[_0x0788('0x26')](respondWithResult(_0x39c3cc,0xc9))[_0x0788('0x44')](handleError(_0x39c3cc,null));};exports[_0x0788('0x25')]=function(_0x4563cd,_0x2395ad){if(_0x4563cd['body']['id']){delete _0x4563cd['body']['id'];}return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x4563cd['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x2395ad,null))['then'](saveUpdates(_0x4563cd[_0x0788('0x4b')],null))[_0x0788('0x26')](respondWithResult(_0x2395ad,null))[_0x0788('0x44')](handleError(_0x2395ad,null));};exports[_0x0788('0x27')]=function(_0x3c757a,_0x379928){return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x3c757a['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x379928,null))[_0x0788('0x26')](removeEntity(_0x379928,null))[_0x0788('0x44')](handleError(_0x379928,null));};
\ No newline at end of file
index 128c05a..b0e66e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb21c=['Integration','moment','bluebird','request-promise','rimraf','../../config/environment','./integration.attributes'];(function(_0x2becba,_0x4ea656){var _0x90b5dd=function(_0x26ae2b){while(--_0x26ae2b){_0x2becba['push'](_0x2becba['shift']());}};_0x90b5dd(++_0x4ea656);}(_0xb21c,0xf6));var _0xcb21=function(_0x56f7e2,_0x145392){_0x56f7e2=_0x56f7e2-0x0;var _0x36240b=_0xb21c[_0x56f7e2];return _0x36240b;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xcb21('0x0'));var BPromise=require(_0xcb21('0x1'));var rp=require(_0xcb21('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb21('0x3'));var config=require(_0xcb21('0x4'));var attributes=require(_0xcb21('0x5'));module['exports']=function(_0x7726ed,_0x5ccc06){return _0x7726ed['define'](_0xcb21('0x6'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf146=['bluebird','request-promise','../../config/environment','./integration.attributes','exports','define','Integration','integrations','util','../../config/logger','api'];(function(_0x3ebf41,_0x143460){var _0x1a706c=function(_0x131bc4){while(--_0x131bc4){_0x3ebf41['push'](_0x3ebf41['shift']());}};_0x1a706c(++_0x143460);}(_0xf146,0x97));var _0x6f14=function(_0x170f4c,_0x4a4c80){_0x170f4c=_0x170f4c-0x0;var _0x52eedd=_0xf146[_0x170f4c];return _0x52eedd;};'use strict';var _=require('lodash');var util=require(_0x6f14('0x0'));var logger=require(_0x6f14('0x1'))(_0x6f14('0x2'));var moment=require('moment');var BPromise=require(_0x6f14('0x3'));var rp=require(_0x6f14('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6f14('0x5'));var attributes=require(_0x6f14('0x6'));module[_0x6f14('0x7')]=function(_0x49c8f5,_0x113fa0){return _0x49c8f5[_0x6f14('0x8')](_0x6f14('0x9'),attributes,{'tableName':_0x6f14('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab937b1..b6c6855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['then','info','Integration,\x20%s,\x20%s','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x1967,0x173));var _0x7196=function(_0xa8fea8,_0xe2d832){_0xa8fea8=_0xa8fea8-0x0;var _0x2cb9a2=_0x1967[_0xa8fea8];return _0x2cb9a2;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}
\ No newline at end of file
+var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x8a92e6,_0x2dbc11){var _0x5653df=function(_0x3ea3ab){while(--_0x3ea3ab){_0x8a92e6['push'](_0x8a92e6['shift']());}};_0x5653df(++_0x2dbc11);}(_0xba34,0x119));var _0x4ba3=function(_0x51f93c,_0x203964){_0x51f93c=_0x51f93c-0x0;var _0x1de17a=_0xba34[_0x51f93c];return _0x1de17a;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var moment=require(_0x4ba3('0x2'));var BPromise=require(_0x4ba3('0x3'));var rs=require(_0x4ba3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ba3('0x5'))(_0x4ba3('0x6'));var config=require(_0x4ba3('0x7'));var jayson=require(_0x4ba3('0x8'));var client=jayson[_0x4ba3('0x9')][_0x4ba3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe5f99a,_0x585f2d,_0x6254fb){return new BPromise(function(_0x368eee,_0x2df7f3){return client[_0x4ba3('0xb')](_0xe5f99a,_0x6254fb)[_0x4ba3('0xc')](function(_0xcf1ec3){logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0x585f2d,'request\x20sent',JSON[_0x4ba3('0x12')](_0xcf1ec3));if(_0xcf1ec3[_0x4ba3('0x13')]){if(_0xcf1ec3['error'][_0x4ba3('0x14')]===0x1f4){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3['error'][_0x4ba3('0x15')]);return _0x2df7f3(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}logger[_0x4ba3('0x13')](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);return _0x368eee(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}else{logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));_0x368eee(_0xcf1ec3[_0x4ba3('0x16')][_0x4ba3('0x15')]);}})[_0x4ba3('0x17')](function(_0x1b7776){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0x1b7776);_0x2df7f3(_0x1b7776);});});}
\ No newline at end of file
index 7c85269..2b04b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','path','connect-timeout'];(function(_0x3755a8,_0x1b89cc){var _0x2b8141=function(_0x4c229b){while(--_0x4c229b){_0x3755a8['push'](_0x3755a8['shift']());}};_0x2b8141(++_0x1b89cc);}(_0x524e,0x15e));var _0xe524=function(_0x2d1cac,_0x1ab1cf){_0x2d1cac=_0x2d1cac-0x0;var _0x2c2fa9=_0x524e[_0x2d1cac];return _0x2c2fa9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe524('0x0'));var timeout=require(_0xe524('0x1'));var express=require(_0xe524('0x2'));var router=express[_0xe524('0x3')]();var fs_extra=require(_0xe524('0x4'));var auth=require(_0xe524('0x5'));var interaction=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var controller=require(_0xe524('0x8'));router[_0xe524('0x9')]('/',auth['isAuthenticated'](),controller[_0xe524('0xa')]);router[_0xe524('0x9')](_0xe524('0xb'),auth['isAuthenticated'](),controller[_0xe524('0xc')]);router[_0xe524('0x9')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0xf')]);router[_0xe524('0x10')]('/',auth[_0xe524('0xe')](),controller[_0xe524('0x11')]);router[_0xe524('0x12')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0x13')]);router[_0xe524('0x14')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xadb5=['delete','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update'];(function(_0x3d13bb,_0x262a54){var _0x4b5a1b=function(_0x53417e){while(--_0x53417e){_0x3d13bb['push'](_0x3d13bb['shift']());}};_0x4b5a1b(++_0x262a54);}(_0xadb5,0xad));var _0x5adb=function(_0x4431e2,_0x369e1c){_0x4431e2=_0x4431e2-0x0;var _0x4d63ca=_0xadb5[_0x4431e2];return _0x4d63ca;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./integrationReport.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0xf')]);router['put']('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller['destroy']);module[_0x5adb('0x12')]=router;
\ No newline at end of file
index f94edb0..21983ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbd0=['BOOLEAN','TEXT','ENUM','SENT','RECEIVED','FAILED','sequelize','STRING','INTEGER','DATE'];(function(_0x432b13,_0x27cb42){var _0x2ee67b=function(_0x4ffb6c){while(--_0x4ffb6c){_0x432b13['push'](_0x432b13['shift']());}};_0x2ee67b(++_0x27cb42);}(_0xcbd0,0x1c8));var _0x0cbd=function(_0x2ec348,_0x3d8367){_0x2ec348=_0x2ec348-0x0;var _0x10e202=_0xcbd0[_0x2ec348];return _0x10e202;};'use strict';var Sequelize=require(_0x0cbd('0x0'));module['exports']={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x0cbd('0x1')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x0cbd('0x2')]},'contacts':{'type':Sequelize[_0x0cbd('0x1')]},'uniqueid':{'type':Sequelize[_0x0cbd('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x0cbd('0x1')]},'queue':{'type':Sequelize[_0x0cbd('0x1')]},'interface':{'type':Sequelize[_0x0cbd('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x0cbd('0x3')]},'agentconnectAt':{'type':Sequelize[_0x0cbd('0x3')]},'holdtime':{'type':Sequelize[_0x0cbd('0x2')]},'agentcomplete':{'type':Sequelize[_0x0cbd('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x0cbd('0x3')]},'talktime':{'type':Sequelize[_0x0cbd('0x2')]},'agentacw':{'type':Sequelize[_0x0cbd('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x0cbd('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x0cbd('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x0cbd('0x3')]},'agentdump':{'type':Sequelize[_0x0cbd('0x4')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x0cbd('0x3')]},'lastevent':{'type':Sequelize[_0x0cbd('0x1')]},'channel':{'type':Sequelize[_0x0cbd('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0cbd('0x1')]},'connectedlinename':{'type':Sequelize[_0x0cbd('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x0cbd('0x1')]},'exten':{'type':Sequelize[_0x0cbd('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x0cbd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x0cbd('0x1')]},'destcalleridnum':{'type':Sequelize[_0x0cbd('0x1')]},'destcalleridname':{'type':Sequelize[_0x0cbd('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x0cbd('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x0cbd('0x1')]},'destlanguage':{'type':Sequelize[_0x0cbd('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x0cbd('0x1')]},'destuniqueid':{'type':Sequelize[_0x0cbd('0x1')]},'messageId':{'type':Sequelize[_0x0cbd('0x1')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x0cbd('0x1')]},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x0cbd('0x1')]},'cc':{'type':Sequelize[_0x0cbd('0x1')]},'attachment':{'type':Sequelize[_0x0cbd('0x5')]},'html':{'type':Sequelize[_0x0cbd('0x5')]},'text':{'type':Sequelize[_0x0cbd('0x5')]},'status':{'type':Sequelize[_0x0cbd('0x6')](_0x0cbd('0x7'),'SENDING',_0x0cbd('0x8'),_0x0cbd('0x9'))},'url':{'type':Sequelize[_0x0cbd('0x1')]},'app':{'type':Sequelize[_0x0cbd('0x1')]},'appdata':{'type':Sequelize[_0x0cbd('0x1')]},'projectId':{'type':Sequelize[_0x0cbd('0x2')]}};
\ No newline at end of file
+var _0xb86f=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','sequelize'];(function(_0x159fa0,_0x6afc3){var _0x1a44ae=function(_0x3298bc){while(--_0x3298bc){_0x159fa0['push'](_0x159fa0['shift']());}};_0x1a44ae(++_0x6afc3);}(_0xb86f,0x1f3));var _0xfb86=function(_0x57c6c6,_0x5947e7){_0x57c6c6=_0x57c6c6-0x0;var _0x5293fc=_0xb86f[_0x57c6c6];return _0x5293fc;};'use strict';var Sequelize=require(_0xfb86('0x0'));module[_0xfb86('0x1')]={'integration':{'type':Sequelize[_0xfb86('0x2')]},'eventChannel':{'type':Sequelize[_0xfb86('0x2')]},'exitStatus':{'type':Sequelize[_0xfb86('0x2')]},'ticketId':{'type':Sequelize[_0xfb86('0x2')]},'integrationId':{'type':Sequelize[_0xfb86('0x3')]},'contacts':{'type':Sequelize[_0xfb86('0x2')]},'uniqueid':{'type':Sequelize[_0xfb86('0x2')]},'calleridnum':{'type':Sequelize[_0xfb86('0x2')]},'calleridname':{'type':Sequelize[_0xfb86('0x2')]},'queue':{'type':Sequelize[_0xfb86('0x2')]},'interface':{'type':Sequelize[_0xfb86('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0xfb86('0x4')]},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0xfb86('0x3')]},'agentcomplete':{'type':Sequelize[_0xfb86('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xfb86('0x4')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xfb86('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xfb86('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xfb86('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xfb86('0x4')]},'lastevent':{'type':Sequelize[_0xfb86('0x2')]},'channel':{'type':Sequelize[_0xfb86('0x2')]},'channelstate':{'type':Sequelize[_0xfb86('0x3')]},'channelstatedesc':{'type':Sequelize[_0xfb86('0x2')]},'connectedlinenum':{'type':Sequelize[_0xfb86('0x2')]},'connectedlinename':{'type':Sequelize[_0xfb86('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xfb86('0x2')]},'exten':{'type':Sequelize[_0xfb86('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xfb86('0x2')]},'destchannelstate':{'type':Sequelize[_0xfb86('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xfb86('0x2')]},'destcalleridname':{'type':Sequelize[_0xfb86('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xfb86('0x2')]},'destcontext':{'type':Sequelize[_0xfb86('0x2')]},'destexten':{'type':Sequelize[_0xfb86('0x2')]},'destpriority':{'type':Sequelize[_0xfb86('0x2')]},'destuniqueid':{'type':Sequelize[_0xfb86('0x2')]},'messageId':{'type':Sequelize[_0xfb86('0x2')]},'inReplyTo':{'type':Sequelize[_0xfb86('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0xfb86('0x2')]},'to':{'type':Sequelize[_0xfb86('0x2')]},'cc':{'type':Sequelize[_0xfb86('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0xfb86('0x6')]},'text':{'type':Sequelize[_0xfb86('0x6')]},'status':{'type':Sequelize[_0xfb86('0x7')]('SENT',_0xfb86('0x8'),_0xfb86('0x9'),'FAILED')},'url':{'type':Sequelize[_0xfb86('0x2')]},'app':{'type':Sequelize[_0xfb86('0x2')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0xfb86('0x3')]}};
\ No newline at end of file
index 8588c7b..f7d7898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x456e=['request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x157abf,_0x1bf34c){var _0x1ce2c0=function(_0x23ede9){while(--_0x23ede9){_0x157abf['push'](_0x157abf['shift']());}};_0x1ce2c0(++_0x1bf34c);}(_0x456e,0x1e8));var _0xe456=function(_0xb6fc2a,_0x597455){_0xb6fc2a=_0xb6fc2a-0x0;var _0x11a54c=_0x456e[_0xb6fc2a];return _0x11a54c;};'use strict';var emlformat=require(_0xe456('0x0'));var rimraf=require(_0xe456('0x1'));var zipdir=require(_0xe456('0x2'));var jsonpatch=require(_0xe456('0x3'));var rp=require(_0xe456('0x4'));var moment=require(_0xe456('0x5'));var BPromise=require(_0xe456('0x6'));var Mustache=require(_0xe456('0x7'));var util=require('util');var path=require(_0xe456('0x8'));var sox=require(_0xe456('0x9'));var csv=require(_0xe456('0xa'));var ejs=require(_0xe456('0xb'));var fs=require('fs');var fs_extra=require(_0xe456('0xc'));var _=require(_0xe456('0xd'));var squel=require(_0xe456('0xe'));var crypto=require('crypto');var jsforce=require(_0xe456('0xf'));var deskjs=require(_0xe456('0x10'));var toCsv=require(_0xe456('0xa'));var querystring=require(_0xe456('0x11'));var Papa=require('papaparse');var Redis=require(_0xe456('0x12'));var authService=require(_0xe456('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe456('0x14'));var hardwareService=require(_0xe456('0x15'));var logger=require(_0xe456('0x16'))(_0xe456('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe456('0x18'));var db=require(_0xe456('0x19'))['db'];function respondWithStatusCode(_0x555d2a,_0x57b802){_0x57b802=_0x57b802||0xcc;return function(_0x5231a6){if(_0x5231a6){return _0x555d2a['sendStatus'](_0x57b802);}return _0x555d2a[_0xe456('0x1a')](_0x57b802)[_0xe456('0x1b')]();};}function respondWithResult(_0x400bfe,_0x36a369){_0x36a369=_0x36a369||0xc8;return function(_0x229258){if(_0x229258){return _0x400bfe[_0xe456('0x1a')](_0x36a369)[_0xe456('0x1c')](_0x229258);}};}function respondWithFilteredResult(_0x25085f,_0x4f1db6){return function(_0x2498cc){if(_0x2498cc){var _0x3eef99=typeof _0x4f1db6[_0xe456('0x1d')]===_0xe456('0x1e')&&typeof _0x4f1db6[_0xe456('0x1f')]==='undefined';var _0x1bc80f=_0x2498cc[_0xe456('0x20')];var _0xfaf092=_0x3eef99?0x0:_0x4f1db6[_0xe456('0x1d')];var _0x110dcf=_0x3eef99?_0x2498cc['count']:_0x4f1db6[_0xe456('0x1d')]+_0x4f1db6[_0xe456('0x1f')];var _0x2566ae;if(_0x110dcf>=_0x1bc80f){_0x110dcf=_0x1bc80f;_0x2566ae=0xc8;}else{_0x2566ae=0xce;}_0x25085f[_0xe456('0x1a')](_0x2566ae);return _0x25085f[_0xe456('0x21')](_0xe456('0x22'),_0xfaf092+'-'+_0x110dcf+'/'+_0x1bc80f)['json'](_0x2498cc);}return null;};}function patchUpdates(_0x59c61b){return function(_0x7c3358){try{jsonpatch[_0xe456('0x23')](_0x7c3358,_0x59c61b,!![]);}catch(_0x50e6da){return BPromise[_0xe456('0x24')](_0x50e6da);}return _0x7c3358[_0xe456('0x25')]();};}function saveUpdates(_0x549659,_0x88b093){return function(_0x44f8ec){if(_0x44f8ec){return _0x44f8ec[_0xe456('0x26')](_0x549659)[_0xe456('0x27')](function(_0x1a3714){return _0x1a3714;});}return null;};}function removeEntity(_0x54c1f7,_0x342f43){return function(_0x2a5149){if(_0x2a5149){return _0x2a5149[_0xe456('0x28')]()[_0xe456('0x27')](function(){_0x54c1f7['status'](0xcc)[_0xe456('0x1b')]();});}};}function handleEntityNotFound(_0x93235b,_0x338f71){return function(_0x147213){if(!_0x147213){_0x93235b[_0xe456('0x29')](0x194);}return _0x147213;};}function handleError(_0x3fb4c0,_0x22dc13){_0x22dc13=_0x22dc13||0x1f4;return function(_0x302784){logger[_0xe456('0x2a')](_0x302784[_0xe456('0x2b')]);if(_0x302784[_0xe456('0x2c')]){delete _0x302784[_0xe456('0x2c')];}_0x3fb4c0[_0xe456('0x1a')](_0x22dc13)[_0xe456('0x2d')](_0x302784);};}exports[_0xe456('0x2e')]=function(_0x342989,_0x2d8b26){var _0x2d8e90={},_0x41d6c3={},_0x17da31={'count':0x0,'rows':[]};var _0x3cf9e3=_[_0xe456('0x2f')](db[_0xe456('0x30')][_0xe456('0x31')],function(_0x1f0f68){return{'name':_0x1f0f68[_0xe456('0x32')],'type':_0x1f0f68['type'][_0xe456('0x33')]};});_0x41d6c3['model']=_['map'](_0x3cf9e3,_0xe456('0x2c'));_0x41d6c3[_0xe456('0x34')]=_[_0xe456('0x35')](_0x342989[_0xe456('0x34')]);_0x41d6c3['filters']=_[_0xe456('0x36')](_0x41d6c3[_0xe456('0x37')],_0x41d6c3[_0xe456('0x34')]);_0x2d8e90[_0xe456('0x38')]=_[_0xe456('0x36')](_0x41d6c3[_0xe456('0x37')],qs['fields'](_0x342989[_0xe456('0x34')][_0xe456('0x39')]));_0x2d8e90[_0xe456('0x38')]=_0x2d8e90[_0xe456('0x38')][_0xe456('0x3a')]?_0x2d8e90[_0xe456('0x38')]:_0x41d6c3[_0xe456('0x37')];if(!_0x342989[_0xe456('0x34')][_0xe456('0x3b')](_0xe456('0x3c'))){_0x2d8e90[_0xe456('0x1f')]=qs[_0xe456('0x1f')](_0x342989[_0xe456('0x34')][_0xe456('0x1f')]);_0x2d8e90[_0xe456('0x1d')]=qs['offset'](_0x342989['query']['offset']);}_0x2d8e90[_0xe456('0x3d')]=qs['sort'](_0x342989[_0xe456('0x34')][_0xe456('0x3e')]);_0x2d8e90[_0xe456('0x3f')]=qs[_0xe456('0x40')](_[_0xe456('0x41')](_0x342989[_0xe456('0x34')],_0x41d6c3['filters']),_0x3cf9e3);if(_0x342989['query'][_0xe456('0x42')]){_0x2d8e90[_0xe456('0x3f')]=_[_0xe456('0x43')](_0x2d8e90[_0xe456('0x3f')],{'$or':_[_0xe456('0x2f')](_0x3cf9e3,function(_0x450154){if(_0x450154[_0xe456('0x44')]!==_0xe456('0x45')){var _0x197d5c={};_0x197d5c[_0x450154[_0xe456('0x2c')]]={'$like':'%'+_0x342989[_0xe456('0x34')]['filter']+'%'};return _0x197d5c;}})});}_0x2d8e90=_[_0xe456('0x43')]({},_0x2d8e90,_0x342989[_0xe456('0x46')]);var _0x19734b={'where':_0x2d8e90[_0xe456('0x3f')]};return db['IntegrationReport'][_0xe456('0x20')](_0x19734b)[_0xe456('0x27')](function(_0x39e258){_0x17da31['count']=_0x39e258;if(_0x342989[_0xe456('0x34')]['includeAll']){_0x2d8e90[_0xe456('0x47')]=[{'all':!![]}];}return db[_0xe456('0x30')][_0xe456('0x48')](_0x2d8e90);})['then'](function(_0x4a0330){_0x17da31[_0xe456('0x49')]=_0x4a0330;return _0x17da31;})[_0xe456('0x27')](respondWithFilteredResult(_0x2d8b26,_0x2d8e90))[_0xe456('0x4a')](handleError(_0x2d8b26,null));};exports[_0xe456('0x4b')]=function(_0x442b65,_0x52d002){var _0x5433f5={'raw':![],'where':{'id':_0x442b65['params']['id']}},_0x17affc={};_0x17affc[_0xe456('0x37')]=_[_0xe456('0x35')](db['IntegrationReport'][_0xe456('0x31')]);_0x17affc[_0xe456('0x34')]=_[_0xe456('0x35')](_0x442b65[_0xe456('0x34')]);_0x17affc[_0xe456('0x40')]=_[_0xe456('0x36')](_0x17affc[_0xe456('0x37')],_0x17affc[_0xe456('0x34')]);_0x5433f5[_0xe456('0x38')]=_[_0xe456('0x36')](_0x17affc['model'],qs['fields'](_0x442b65[_0xe456('0x34')][_0xe456('0x39')]));_0x5433f5[_0xe456('0x38')]=_0x5433f5[_0xe456('0x38')][_0xe456('0x3a')]?_0x5433f5[_0xe456('0x38')]:_0x17affc[_0xe456('0x37')];if(_0x442b65[_0xe456('0x34')][_0xe456('0x4c')]){_0x5433f5[_0xe456('0x47')]=[{'all':!![]}];}_0x5433f5=_[_0xe456('0x43')]({},_0x5433f5,_0x442b65['options']);return db[_0xe456('0x30')][_0xe456('0x4d')](_0x5433f5)[_0xe456('0x27')](handleEntityNotFound(_0x52d002,null))['then'](respondWithResult(_0x52d002,null))['catch'](handleError(_0x52d002,null));};exports[_0xe456('0x4e')]=function(_0x4cd43d,_0x4aba7e){return db[_0xe456('0x30')][_0xe456('0x4e')](_0x4cd43d[_0xe456('0x4f')],{})['then'](respondWithResult(_0x4aba7e,0xc9))[_0xe456('0x4a')](handleError(_0x4aba7e,null));};exports[_0xe456('0x26')]=function(_0x7aef2b,_0x30785f){if(_0x7aef2b[_0xe456('0x4f')]['id']){delete _0x7aef2b['body']['id'];}return db[_0xe456('0x30')]['find']({'where':{'id':_0x7aef2b[_0xe456('0x50')]['id']}})[_0xe456('0x27')](handleEntityNotFound(_0x30785f,null))['then'](saveUpdates(_0x7aef2b[_0xe456('0x4f')],null))[_0xe456('0x27')](respondWithResult(_0x30785f,null))[_0xe456('0x4a')](handleError(_0x30785f,null));};exports[_0xe456('0x28')]=function(_0xf75545,_0x10748c){return db['IntegrationReport']['find']({'where':{'id':_0xf75545[_0xe456('0x50')]['id']}})[_0xe456('0x27')](handleEntityNotFound(_0x10748c,null))['then'](removeEntity(_0x10748c,null))[_0xe456('0x4a')](handleError(_0x10748c,null));};exports[_0xe456('0x51')]=function(_0x24d7de,_0x195d8f){return db[_0xe456('0x30')][_0xe456('0x51')]()[_0xe456('0x27')](respondWithResult(_0x195d8f,null))['catch'](handleError(_0x195d8f,null));};
\ No newline at end of file
+var _0x7319=['sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','IntegrationReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','findAll','catch','show','include','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x220dbb,_0x99328d){var _0x2b77de=function(_0x15e966){while(--_0x15e966){_0x220dbb['push'](_0x220dbb['shift']());}};_0x2b77de(++_0x99328d);}(_0x7319,0x14f));var _0x9731=function(_0x400a93,_0x176c44){_0x400a93=_0x400a93-0x0;var _0x420b6f=_0x7319[_0x400a93];return _0x420b6f;};'use strict';var emlformat=require(_0x9731('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9731('0x1'));var jsonpatch=require(_0x9731('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9731('0x3'));var Mustache=require(_0x9731('0x4'));var util=require(_0x9731('0x5'));var path=require('path');var sox=require(_0x9731('0x6'));var csv=require(_0x9731('0x7'));var ejs=require(_0x9731('0x8'));var fs=require('fs');var fs_extra=require(_0x9731('0x9'));var _=require('lodash');var squel=require(_0x9731('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9731('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x9731('0xc'));var Redis=require(_0x9731('0xd'));var authService=require(_0x9731('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x9731('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9731('0x10'))(_0x9731('0x11'));var utils=require(_0x9731('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x9731('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d9baf,_0x2ff7cd){_0x2ff7cd=_0x2ff7cd||0xcc;return function(_0x5744c1){if(_0x5744c1){return _0x3d9baf[_0x9731('0x14')](_0x2ff7cd);}return _0x3d9baf[_0x9731('0x15')](_0x2ff7cd)['end']();};}function respondWithResult(_0x91e267,_0x25bcc6){_0x25bcc6=_0x25bcc6||0xc8;return function(_0x67ae94){if(_0x67ae94){return _0x91e267['status'](_0x25bcc6)[_0x9731('0x16')](_0x67ae94);}};}function respondWithFilteredResult(_0x1ef20e,_0x14184b){return function(_0x44ed88){if(_0x44ed88){var _0x3be644=typeof _0x14184b[_0x9731('0x17')]===_0x9731('0x18')&&typeof _0x14184b[_0x9731('0x19')]===_0x9731('0x18');var _0x7c0ef=_0x44ed88[_0x9731('0x1a')];var _0x4a73bf=_0x3be644?0x0:_0x14184b[_0x9731('0x17')];var _0x1c48da=_0x3be644?_0x44ed88[_0x9731('0x1a')]:_0x14184b['offset']+_0x14184b[_0x9731('0x19')];var _0x391917;if(_0x1c48da>=_0x7c0ef){_0x1c48da=_0x7c0ef;_0x391917=0xc8;}else{_0x391917=0xce;}_0x1ef20e[_0x9731('0x15')](_0x391917);return _0x1ef20e[_0x9731('0x1b')](_0x9731('0x1c'),_0x4a73bf+'-'+_0x1c48da+'/'+_0x7c0ef)['json'](_0x44ed88);}return null;};}function patchUpdates(_0x2f4180){return function(_0x1c4989){try{jsonpatch[_0x9731('0x1d')](_0x1c4989,_0x2f4180,!![]);}catch(_0x1454ac){return BPromise['reject'](_0x1454ac);}return _0x1c4989[_0x9731('0x1e')]();};}function saveUpdates(_0x3ec552,_0x450589){return function(_0x20646e){if(_0x20646e){return _0x20646e[_0x9731('0x1f')](_0x3ec552)[_0x9731('0x20')](function(_0x4896bc){return _0x4896bc;});}return null;};}function removeEntity(_0x5de8bc,_0x5f364c){return function(_0x2cd6b7){if(_0x2cd6b7){return _0x2cd6b7[_0x9731('0x21')]()[_0x9731('0x20')](function(){_0x5de8bc[_0x9731('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a8094,_0x145c93){return function(_0x3814ae){if(!_0x3814ae){_0x5a8094[_0x9731('0x14')](0x194);}return _0x3814ae;};}function handleError(_0x4ad4a5,_0x7ad8da){_0x7ad8da=_0x7ad8da||0x1f4;return function(_0x32ec1c){logger[_0x9731('0x22')](_0x32ec1c[_0x9731('0x23')]);if(_0x32ec1c[_0x9731('0x24')]){delete _0x32ec1c[_0x9731('0x24')];}_0x4ad4a5[_0x9731('0x15')](_0x7ad8da)[_0x9731('0x25')](_0x32ec1c);};}exports['index']=function(_0x228606,_0x4658c6){var _0x3c54be={},_0xfaf2e2={},_0x3fe4b2={'count':0x0,'rows':[]};var _0x2cd52c=_[_0x9731('0x26')](db[_0x9731('0x27')][_0x9731('0x28')],function(_0x1bf94e){return{'name':_0x1bf94e[_0x9731('0x29')],'type':_0x1bf94e['type'][_0x9731('0x2a')]};});_0xfaf2e2[_0x9731('0x2b')]=_[_0x9731('0x26')](_0x2cd52c,'name');_0xfaf2e2[_0x9731('0x2c')]=_[_0x9731('0x2d')](_0x228606[_0x9731('0x2c')]);_0xfaf2e2[_0x9731('0x2e')]=_[_0x9731('0x2f')](_0xfaf2e2[_0x9731('0x2b')],_0xfaf2e2[_0x9731('0x2c')]);_0x3c54be[_0x9731('0x30')]=_['intersection'](_0xfaf2e2[_0x9731('0x2b')],qs['fields'](_0x228606[_0x9731('0x2c')][_0x9731('0x31')]));_0x3c54be[_0x9731('0x30')]=_0x3c54be['attributes'][_0x9731('0x32')]?_0x3c54be[_0x9731('0x30')]:_0xfaf2e2[_0x9731('0x2b')];if(!_0x228606[_0x9731('0x2c')][_0x9731('0x33')]('nolimit')){_0x3c54be[_0x9731('0x19')]=qs[_0x9731('0x19')](_0x228606['query'][_0x9731('0x19')]);_0x3c54be[_0x9731('0x17')]=qs[_0x9731('0x17')](_0x228606[_0x9731('0x2c')]['offset']);}_0x3c54be[_0x9731('0x34')]=qs[_0x9731('0x35')](_0x228606[_0x9731('0x2c')][_0x9731('0x35')]);_0x3c54be['where']=qs[_0x9731('0x2e')](_[_0x9731('0x36')](_0x228606[_0x9731('0x2c')],_0xfaf2e2['filters']),_0x2cd52c);if(_0x228606['query'][_0x9731('0x37')]){_0x3c54be[_0x9731('0x38')]=_[_0x9731('0x39')](_0x3c54be[_0x9731('0x38')],{'$or':_[_0x9731('0x26')](_0x2cd52c,function(_0x474415){if(_0x474415[_0x9731('0x3a')]!==_0x9731('0x3b')){var _0x1a52c8={};_0x1a52c8[_0x474415[_0x9731('0x24')]]={'$like':'%'+_0x228606['query'][_0x9731('0x37')]+'%'};return _0x1a52c8;}})});}_0x3c54be=_[_0x9731('0x39')]({},_0x3c54be,_0x228606[_0x9731('0x3c')]);var _0x149c43={'where':_0x3c54be[_0x9731('0x38')]};return db['IntegrationReport'][_0x9731('0x1a')](_0x149c43)['then'](function(_0x430b85){_0x3fe4b2[_0x9731('0x1a')]=_0x430b85;if(_0x228606[_0x9731('0x2c')][_0x9731('0x3d')]){_0x3c54be['include']=[{'all':!![]}];}return db[_0x9731('0x27')][_0x9731('0x3e')](_0x3c54be);})[_0x9731('0x20')](function(_0x33207f){_0x3fe4b2['rows']=_0x33207f;return _0x3fe4b2;})[_0x9731('0x20')](respondWithFilteredResult(_0x4658c6,_0x3c54be))[_0x9731('0x3f')](handleError(_0x4658c6,null));};exports[_0x9731('0x40')]=function(_0x5efbf6,_0x5d5609){var _0x4335f1={'raw':![],'where':{'id':_0x5efbf6['params']['id']}},_0xd02f4d={};_0xd02f4d[_0x9731('0x2b')]=_[_0x9731('0x2d')](db[_0x9731('0x27')][_0x9731('0x28')]);_0xd02f4d[_0x9731('0x2c')]=_[_0x9731('0x2d')](_0x5efbf6['query']);_0xd02f4d[_0x9731('0x2e')]=_[_0x9731('0x2f')](_0xd02f4d[_0x9731('0x2b')],_0xd02f4d[_0x9731('0x2c')]);_0x4335f1[_0x9731('0x30')]=_['intersection'](_0xd02f4d[_0x9731('0x2b')],qs[_0x9731('0x31')](_0x5efbf6[_0x9731('0x2c')][_0x9731('0x31')]));_0x4335f1[_0x9731('0x30')]=_0x4335f1[_0x9731('0x30')][_0x9731('0x32')]?_0x4335f1[_0x9731('0x30')]:_0xd02f4d[_0x9731('0x2b')];if(_0x5efbf6[_0x9731('0x2c')][_0x9731('0x3d')]){_0x4335f1[_0x9731('0x41')]=[{'all':!![]}];}_0x4335f1=_[_0x9731('0x39')]({},_0x4335f1,_0x5efbf6[_0x9731('0x3c')]);return db['IntegrationReport'][_0x9731('0x42')](_0x4335f1)[_0x9731('0x20')](handleEntityNotFound(_0x5d5609,null))[_0x9731('0x20')](respondWithResult(_0x5d5609,null))['catch'](handleError(_0x5d5609,null));};exports['create']=function(_0x316ece,_0x22e201){return db[_0x9731('0x27')][_0x9731('0x43')](_0x316ece['body'],{})[_0x9731('0x20')](respondWithResult(_0x22e201,0xc9))[_0x9731('0x3f')](handleError(_0x22e201,null));};exports['update']=function(_0x57ef87,_0x45e5f7){if(_0x57ef87[_0x9731('0x44')]['id']){delete _0x57ef87[_0x9731('0x44')]['id'];}return db[_0x9731('0x27')][_0x9731('0x42')]({'where':{'id':_0x57ef87[_0x9731('0x45')]['id']}})[_0x9731('0x20')](handleEntityNotFound(_0x45e5f7,null))[_0x9731('0x20')](saveUpdates(_0x57ef87[_0x9731('0x44')],null))[_0x9731('0x20')](respondWithResult(_0x45e5f7,null))[_0x9731('0x3f')](handleError(_0x45e5f7,null));};exports['destroy']=function(_0x1c4ba2,_0x32b59b){return db['IntegrationReport'][_0x9731('0x42')]({'where':{'id':_0x1c4ba2[_0x9731('0x45')]['id']}})['then'](handleEntityNotFound(_0x32b59b,null))['then'](removeEntity(_0x32b59b,null))['catch'](handleError(_0x32b59b,null));};exports['describe']=function(_0x3586e3,_0x2ab4ad){return db['IntegrationReport'][_0x9731('0x46')]()[_0x9731('0x20')](respondWithResult(_0x2ab4ad,null))[_0x9731('0x3f')](handleError(_0x2ab4ad,null));};
\ No newline at end of file
index 1a06ed0..05c1543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a70=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./integrationReport.attributes','define','IntegrationReport'];(function(_0xbf1875,_0x34b144){var _0x2e598b=function(_0xd104ec){while(--_0xd104ec){_0xbf1875['push'](_0xbf1875['shift']());}};_0x2e598b(++_0x34b144);}(_0x3a70,0x1c3));var _0x03a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3a70[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x03a7('0x0'));var util=require(_0x03a7('0x1'));var logger=require(_0x03a7('0x2'))(_0x03a7('0x3'));var moment=require('moment');var BPromise=require(_0x03a7('0x4'));var rp=require(_0x03a7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x03a7('0x6'));var config=require(_0x03a7('0x7'));var attributes=require(_0x03a7('0x8'));module['exports']=function(_0x2686b4,_0x29a9b9){return _0x2686b4[_0x03a7('0x9')](_0x03a7('0xa'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8938=['path','rimraf','./integrationReport.attributes','exports','define','report_integration','lodash','api','moment','bluebird','request-promise'];(function(_0x36f5be,_0x1d569c){var _0x44bca8=function(_0xc8bb48){while(--_0xc8bb48){_0x36f5be['push'](_0x36f5be['shift']());}};_0x44bca8(++_0x1d569c);}(_0x8938,0x187));var _0x8893=function(_0x3a3b9e,_0xc59037){_0x3a3b9e=_0x3a3b9e-0x0;var _0x148103=_0x8938[_0x3a3b9e];return _0x148103;};'use strict';var _=require(_0x8893('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8893('0x1'));var moment=require(_0x8893('0x2'));var BPromise=require(_0x8893('0x3'));var rp=require(_0x8893('0x4'));var fs=require('fs');var path=require(_0x8893('0x5'));var rimraf=require(_0x8893('0x6'));var config=require('../../config/environment');var attributes=require(_0x8893('0x7'));module[_0x8893('0x8')]=function(_0x34da5b,_0x584a13){return _0x34da5b[_0x8893('0x9')]('IntegrationReport',attributes,{'tableName':_0x8893('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7905d35..92ffeda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0x4975,0x86));var _0x5497=function(_0x578a4a,_0x1aef72){_0x578a4a=_0x578a4a-0x0;var _0x1770c2=_0x4975[_0x578a4a];return _0x1770c2;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','IntegrationReport,\x20%s,\x20%s','IntegrationReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x15e9c0,_0x1bd22e){var _0x2a3ec3=function(_0x13773d){while(--_0x13773d){_0x15e9c0['push'](_0x15e9c0['shift']());}};_0x2a3ec3(++_0x1bd22e);}(_0x2ef3,0xba));var _0x32ef=function(_0x395cc9,_0x2bb16c){_0x395cc9=_0x395cc9-0x0;var _0x42aec1=_0x2ef3[_0x395cc9];return _0x42aec1;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('IntegrationReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index 68e299c..a6d5522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d0a=['../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','/:id','show','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','delete','destroy','multer','util','path','express'];(function(_0x563eed,_0x34b19d){var _0x2a26b1=function(_0x3445c2){while(--_0x3445c2){_0x563eed['push'](_0x563eed['shift']());}};_0x2a26b1(++_0x34b19d);}(_0x4d0a,0x176));var _0xa4d0=function(_0x3a8f49,_0x46b9ae){_0x3a8f49=_0x3a8f49-0x0;var _0x23ad3b=_0x4d0a[_0x3a8f49];return _0x23ad3b;};'use strict';var multer=require(_0xa4d0('0x0'));var util=require(_0xa4d0('0x1'));var path=require(_0xa4d0('0x2'));var timeout=require('connect-timeout');var express=require(_0xa4d0('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa4d0('0x4'));var interaction=require(_0xa4d0('0x5'));var config=require(_0xa4d0('0x6'));var controller=require(_0xa4d0('0x7'));router[_0xa4d0('0x8')]('/',auth[_0xa4d0('0x9')](),controller[_0xa4d0('0xa')]);router[_0xa4d0('0x8')](_0xa4d0('0xb'),auth[_0xa4d0('0x9')](),controller[_0xa4d0('0xc')]);router[_0xa4d0('0x8')]('/:id/sub_intervals',auth[_0xa4d0('0x9')](),controller[_0xa4d0('0xd')]);router[_0xa4d0('0xe')]('/',auth[_0xa4d0('0x9')](),controller[_0xa4d0('0xf')]);router[_0xa4d0('0xe')]('/:id/sub_intervals',auth[_0xa4d0('0x9')](),controller[_0xa4d0('0x10')]);router[_0xa4d0('0xe')](_0xa4d0('0x11'),auth[_0xa4d0('0x9')](),controller[_0xa4d0('0x12')]);router['put'](_0xa4d0('0xb'),auth[_0xa4d0('0x9')](),controller['update']);router[_0xa4d0('0x13')](_0xa4d0('0xb'),auth[_0xa4d0('0x9')](),controller[_0xa4d0('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xab36=['fs-extra','../../components/auth/service','../../components/interaction/service','./interval.controller','get','isAuthenticated','index','/:id','show','post','create','/:id/sub_intervals','addIntervals','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0xc48bae,_0x5ca3cd){var _0x2debfe=function(_0x1e28a1){while(--_0x1e28a1){_0xc48bae['push'](_0xc48bae['shift']());}};_0x2debfe(++_0x5ca3cd);}(_0xab36,0x1df));var _0x6ab3=function(_0xe57993,_0x26a1c1){_0xe57993=_0xe57993-0x0;var _0x1a45c5=_0xab36[_0xe57993];return _0x1a45c5;};'use strict';var multer=require(_0x6ab3('0x0'));var util=require(_0x6ab3('0x1'));var path=require(_0x6ab3('0x2'));var timeout=require(_0x6ab3('0x3'));var express=require(_0x6ab3('0x4'));var router=express['Router']();var fs_extra=require(_0x6ab3('0x5'));var auth=require(_0x6ab3('0x6'));var interaction=require(_0x6ab3('0x7'));var config=require('../../config/environment');var controller=require(_0x6ab3('0x8'));router[_0x6ab3('0x9')]('/',auth[_0x6ab3('0xa')](),controller[_0x6ab3('0xb')]);router[_0x6ab3('0x9')](_0x6ab3('0xc'),auth['isAuthenticated'](),controller[_0x6ab3('0xd')]);router[_0x6ab3('0x9')]('/:id/sub_intervals',auth[_0x6ab3('0xa')](),controller['getIntervals']);router[_0x6ab3('0xe')]('/',auth[_0x6ab3('0xa')](),controller[_0x6ab3('0xf')]);router[_0x6ab3('0xe')](_0x6ab3('0x10'),auth[_0x6ab3('0xa')](),controller['addInterval']);router[_0x6ab3('0xe')]('/:id/sub_intervals/create_many',auth[_0x6ab3('0xa')](),controller[_0x6ab3('0x11')]);router[_0x6ab3('0x12')](_0x6ab3('0xc'),auth[_0x6ab3('0xa')](),controller['update']);router[_0x6ab3('0x13')](_0x6ab3('0xc'),auth[_0x6ab3('0xa')](),controller[_0x6ab3('0x14')]);module[_0x6ab3('0x15')]=router;
\ No newline at end of file
index 76f38aa..c9082b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9285=['STRING','sequelize','exports'];(function(_0x12cbd6,_0x4109a3){var _0x527546=function(_0x2bb543){while(--_0x2bb543){_0x12cbd6['push'](_0x12cbd6['shift']());}};_0x527546(++_0x4109a3);}(_0x9285,0x148));var _0x5928=function(_0x2a6cbe,_0x1490e9){_0x2a6cbe=_0x2a6cbe-0x0;var _0x5697ec=_0x9285[_0x2a6cbe];return _0x5697ec;};'use strict';var Sequelize=require(_0x5928('0x0'));module[_0x5928('0x1')]={'name':{'type':Sequelize[_0x5928('0x2')]},'description':{'type':Sequelize[_0x5928('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x11bc=['exports','STRING'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x11bc,0x1ac));var _0xc11b=function(_0x31e719,_0x397785){_0x31e719=_0x31e719-0x0;var _0x4ae4e8=_0x11bc[_0x31e719];return _0x4ae4e8;};'use strict';var Sequelize=require('sequelize');module[_0xc11b('0x0')]={'name':{'type':Sequelize[_0xc11b('0x1')]},'description':{'type':Sequelize[_0xc11b('0x1')]},'interval':{'type':Sequelize[_0xc11b('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 67b9cb0..a6d71b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4882=['filter','nolimit','addIntervals','sequelize','transaction','bulkCreate','findAll','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','error','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','VIRTUAL','merge','options','Interval','includeAll','include','rows','show','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','body','params','IntervalId','getIntervals','findOne','length','pick'];(function(_0x381e91,_0xc68dcf){var _0x7334b3=function(_0xe5d915){while(--_0xe5d915){_0x381e91['push'](_0x381e91['shift']());}};_0x7334b3(++_0xc68dcf);}(_0x4882,0x118));var _0x2488=function(_0x376525,_0x74b163){_0x376525=_0x376525-0x0;var _0x3f3ecd=_0x4882[_0x376525];return _0x3f3ecd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2488('0x0'));var jsonpatch=require(_0x2488('0x1'));var rp=require(_0x2488('0x2'));var moment=require(_0x2488('0x3'));var BPromise=require(_0x2488('0x4'));var Mustache=require(_0x2488('0x5'));var util=require(_0x2488('0x6'));var path=require(_0x2488('0x7'));var sox=require(_0x2488('0x8'));var csv=require(_0x2488('0x9'));var ejs=require(_0x2488('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x2488('0xb'));var jsforce=require(_0x2488('0xc'));var deskjs=require(_0x2488('0xd'));var toCsv=require(_0x2488('0x9'));var querystring=require('querystring');var Papa=require(_0x2488('0xe'));var Redis=require('ioredis');var authService=require(_0x2488('0xf'));var qs=require(_0x2488('0x10'));var as=require(_0x2488('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2488('0x12'))(_0x2488('0x13'));var utils=require(_0x2488('0x14'));var config=require(_0x2488('0x15'));var licenseUtil=require(_0x2488('0x16'));var db=require(_0x2488('0x17'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x77156a,_0x261e36){_0x261e36=_0x261e36||0xcc;return function(_0x462eba){if(_0x462eba){return _0x77156a[_0x2488('0x18')](_0x261e36);}return _0x77156a[_0x2488('0x19')](_0x261e36)['end']();};}function respondWithResult(_0x26d5d3,_0xce0d42){_0xce0d42=_0xce0d42||0xc8;return function(_0x29a5b6){if(_0x29a5b6){return _0x26d5d3['status'](_0xce0d42)[_0x2488('0x1a')](_0x29a5b6);}};}function respondWithFilteredResult(_0x5cb355,_0x5cd7b8){return function(_0x40827d){if(_0x40827d){var _0x4a1afa=typeof _0x5cd7b8[_0x2488('0x1b')]===_0x2488('0x1c')&&typeof _0x5cd7b8[_0x2488('0x1d')]===_0x2488('0x1c');var _0x478a40=_0x40827d[_0x2488('0x1e')];var _0x52c30c=_0x4a1afa?0x0:_0x5cd7b8[_0x2488('0x1b')];var _0x4cfbd2=_0x4a1afa?_0x40827d[_0x2488('0x1e')]:_0x5cd7b8[_0x2488('0x1b')]+_0x5cd7b8[_0x2488('0x1d')];var _0x52e218;if(_0x4cfbd2>=_0x478a40){_0x4cfbd2=_0x478a40;_0x52e218=0xc8;}else{_0x52e218=0xce;}_0x5cb355[_0x2488('0x19')](_0x52e218);return _0x5cb355[_0x2488('0x1f')](_0x2488('0x20'),_0x52c30c+'-'+_0x4cfbd2+'/'+_0x478a40)['json'](_0x40827d);}return null;};}function patchUpdates(_0x4088ac){return function(_0x25f47d){try{jsonpatch[_0x2488('0x21')](_0x25f47d,_0x4088ac,!![]);}catch(_0x3fd700){return BPromise[_0x2488('0x22')](_0x3fd700);}return _0x25f47d[_0x2488('0x23')]();};}function saveUpdates(_0x5a4ef0,_0x185594){return function(_0x56631c){if(_0x56631c){return _0x56631c[_0x2488('0x24')](_0x5a4ef0)[_0x2488('0x25')](function(_0x1431fb){return _0x1431fb;});}return null;};}function removeEntity(_0x4e9556,_0x277580){return function(_0x2a781d){if(_0x2a781d){return _0x2a781d[_0x2488('0x26')]()[_0x2488('0x25')](function(){var _0x1eea28=_0x2a781d[_0x2488('0x27')]({'plain':!![]});var _0x14389c=_0x2488('0x28');return db[_0x2488('0x29')]['destroy']({'where':{'type':_0x14389c,'resourceId':_0x1eea28['id']}})[_0x2488('0x25')](function(){return _0x2a781d;});})[_0x2488('0x25')](function(){_0x4e9556['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e2630,_0x41cd2c){return function(_0xcd6b11){if(!_0xcd6b11){_0x2e2630[_0x2488('0x18')](0x194);}return _0xcd6b11;};}function handleError(_0x294e9d,_0x294282){_0x294282=_0x294282||0x1f4;return function(_0x49b8f0){logger[_0x2488('0x2a')](_0x49b8f0[_0x2488('0x2b')]);if(_0x49b8f0[_0x2488('0x2c')]){delete _0x49b8f0[_0x2488('0x2c')];}_0x294e9d['status'](_0x294282)[_0x2488('0x2d')](_0x49b8f0);};}exports['index']=function(_0x5e61e6,_0x101a3e){var _0x1f671d={},_0x2e1828={},_0x56c9d4={'count':0x0,'rows':[]};var _0x258a5c=_[_0x2488('0x2e')](db['Interval'][_0x2488('0x2f')],function(_0x4e604){return{'name':_0x4e604[_0x2488('0x30')],'type':_0x4e604[_0x2488('0x31')]['key']};});_0x2e1828[_0x2488('0x32')]=_[_0x2488('0x2e')](_0x258a5c,_0x2488('0x2c'));_0x2e1828[_0x2488('0x33')]=_[_0x2488('0x34')](_0x5e61e6['query']);_0x2e1828[_0x2488('0x35')]=_['intersection'](_0x2e1828[_0x2488('0x32')],_0x2e1828[_0x2488('0x33')]);_0x1f671d[_0x2488('0x36')]=_[_0x2488('0x37')](_0x2e1828[_0x2488('0x32')],qs['fields'](_0x5e61e6[_0x2488('0x33')][_0x2488('0x38')]));_0x1f671d[_0x2488('0x36')]=_0x1f671d[_0x2488('0x36')]['length']?_0x1f671d['attributes']:_0x2e1828[_0x2488('0x32')];if(!_0x5e61e6[_0x2488('0x33')][_0x2488('0x39')]('nolimit')){_0x1f671d[_0x2488('0x1d')]=qs[_0x2488('0x1d')](_0x5e61e6[_0x2488('0x33')][_0x2488('0x1d')]);_0x1f671d[_0x2488('0x1b')]=qs[_0x2488('0x1b')](_0x5e61e6['query'][_0x2488('0x1b')]);}_0x1f671d[_0x2488('0x3a')]=qs[_0x2488('0x3b')](_0x5e61e6[_0x2488('0x33')]['sort']);_0x1f671d[_0x2488('0x3c')]=qs[_0x2488('0x35')](_['pick'](_0x5e61e6[_0x2488('0x33')],_0x2e1828[_0x2488('0x35')]),_0x258a5c);if(_0x5e61e6[_0x2488('0x33')]['filter']){_0x1f671d[_0x2488('0x3c')]=_['merge'](_0x1f671d[_0x2488('0x3c')],{'$or':_[_0x2488('0x2e')](_0x258a5c,function(_0x327f91){if(_0x327f91[_0x2488('0x31')]!==_0x2488('0x3d')){var _0x11b4f9={};_0x11b4f9[_0x327f91[_0x2488('0x2c')]]={'$like':'%'+_0x5e61e6['query']['filter']+'%'};return _0x11b4f9;}})});}_0x1f671d=_[_0x2488('0x3e')]({},_0x1f671d,_0x5e61e6[_0x2488('0x3f')]);var _0xbfa2ce={'where':_0x1f671d[_0x2488('0x3c')]};return db[_0x2488('0x40')][_0x2488('0x1e')](_0xbfa2ce)[_0x2488('0x25')](function(_0x586417){_0x56c9d4[_0x2488('0x1e')]=_0x586417;if(_0x5e61e6[_0x2488('0x33')][_0x2488('0x41')]){_0x1f671d[_0x2488('0x42')]=[{'all':!![]}];}return db[_0x2488('0x40')]['findAll'](_0x1f671d);})['then'](function(_0x412fa4){_0x56c9d4[_0x2488('0x43')]=_0x412fa4;return _0x56c9d4;})[_0x2488('0x25')](respondWithFilteredResult(_0x101a3e,_0x1f671d))['catch'](handleError(_0x101a3e,null));};exports[_0x2488('0x44')]=function(_0x50cf86,_0x1da1d4){var _0x226fe2={'raw':!![],'where':{'id':_0x50cf86['params']['id']}},_0x5e0fa3={};_0x5e0fa3[_0x2488('0x32')]=_[_0x2488('0x34')](db[_0x2488('0x40')][_0x2488('0x2f')]);_0x5e0fa3[_0x2488('0x33')]=_['keys'](_0x50cf86[_0x2488('0x33')]);_0x5e0fa3['filters']=_[_0x2488('0x37')](_0x5e0fa3[_0x2488('0x32')],_0x5e0fa3[_0x2488('0x33')]);_0x226fe2[_0x2488('0x36')]=_[_0x2488('0x37')](_0x5e0fa3[_0x2488('0x32')],qs[_0x2488('0x38')](_0x50cf86[_0x2488('0x33')][_0x2488('0x38')]));_0x226fe2[_0x2488('0x36')]=_0x226fe2[_0x2488('0x36')]['length']?_0x226fe2[_0x2488('0x36')]:_0x5e0fa3[_0x2488('0x32')];if(_0x50cf86[_0x2488('0x33')][_0x2488('0x41')]){_0x226fe2[_0x2488('0x42')]=[{'all':!![]}];}_0x226fe2=_['merge']({},_0x226fe2,_0x50cf86[_0x2488('0x3f')]);return db[_0x2488('0x40')][_0x2488('0x45')](_0x226fe2)[_0x2488('0x25')](handleEntityNotFound(_0x1da1d4,null))[_0x2488('0x25')](respondWithResult(_0x1da1d4,null))[_0x2488('0x46')](handleError(_0x1da1d4,null));};exports[_0x2488('0x47')]=function(_0x216480,_0x15ba96){return db['Interval']['create'](_0x216480['body'],{})[_0x2488('0x25')](function(_0x3f4c0c){var _0x581efe=_0x216480[_0x2488('0x48')]['get']({'plain':!![]});if(!_0x581efe)throw new Error(_0x2488('0x49'));if(_0x581efe[_0x2488('0x4a')]==='user'){var _0x270e9c=_0x3f4c0c[_0x2488('0x27')]({'plain':!![]});var _0x4383dc=_0x2488('0x28');return db[_0x2488('0x4b')][_0x2488('0x45')]({'where':{'name':_0x4383dc,'userProfileId':_0x581efe[_0x2488('0x4c')]},'raw':!![]})[_0x2488('0x25')](function(_0x12e7c9){if(_0x12e7c9&&_0x12e7c9['autoAssociation']===0x0){return db['UserProfileResource'][_0x2488('0x47')]({'name':_0x270e9c['name'],'resourceId':_0x270e9c['id'],'type':_0x12e7c9['name'],'sectionId':_0x12e7c9['id']},{})[_0x2488('0x25')](function(){return _0x3f4c0c;});}else{return _0x3f4c0c;}})['catch'](function(_0x5dbc39){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5dbc39);throw _0x5dbc39;});}return _0x3f4c0c;})[_0x2488('0x25')](respondWithResult(_0x15ba96,0xc9))['catch'](handleError(_0x15ba96,null));};exports[_0x2488('0x24')]=function(_0x445b2c,_0x1e02cd){if(_0x445b2c[_0x2488('0x4d')]['id']){delete _0x445b2c['body']['id'];}return db[_0x2488('0x40')]['find']({'where':{'id':_0x445b2c['params']['id']}})[_0x2488('0x25')](handleEntityNotFound(_0x1e02cd,null))[_0x2488('0x25')](saveUpdates(_0x445b2c[_0x2488('0x4d')],null))[_0x2488('0x25')](respondWithResult(_0x1e02cd,null))[_0x2488('0x46')](handleError(_0x1e02cd,null));};exports['destroy']=function(_0x4bb4d1,_0x4d98d0){return db[_0x2488('0x40')]['find']({'where':{'id':_0x4bb4d1['params']['id']}})['then'](handleEntityNotFound(_0x4d98d0,null))[_0x2488('0x25')](removeEntity(_0x4d98d0,null))[_0x2488('0x46')](handleError(_0x4d98d0,null));};exports['addInterval']=function(_0x10956a,_0x320725,_0x247535){if(_0x10956a[_0x2488('0x4d')]['id']){delete _0x10956a[_0x2488('0x4d')]['id'];}return db['Interval'][_0x2488('0x45')]({'where':{'id':_0x10956a[_0x2488('0x4e')]['id']}})['then'](handleEntityNotFound(_0x320725,null))[_0x2488('0x25')](function(_0x120e39){if(_0x120e39){_0x10956a[_0x2488('0x4d')][_0x2488('0x4f')]=_0x120e39['id'];return db[_0x2488('0x40')][_0x2488('0x47')](_0x10956a[_0x2488('0x4d')]);}})[_0x2488('0x25')](respondWithResult(_0x320725,null))[_0x2488('0x46')](handleError(_0x320725,null));};exports[_0x2488('0x50')]=function(_0x3062f2,_0x2709d9,_0x18937c){var _0x826177={};var _0x4eedb7={};var _0x45d4b6;var _0xc3b118;return db[_0x2488('0x40')][_0x2488('0x51')]({'where':{'id':_0x3062f2['params']['id']}})[_0x2488('0x25')](handleEntityNotFound(_0x2709d9,null))['then'](function(_0x127632){if(_0x127632){_0x45d4b6=_0x127632;_0x4eedb7['model']=_['keys'](db[_0x2488('0x40')][_0x2488('0x2f')]);_0x4eedb7[_0x2488('0x33')]=_[_0x2488('0x34')](_0x3062f2['query']);_0x4eedb7[_0x2488('0x35')]=_[_0x2488('0x37')](_0x4eedb7[_0x2488('0x32')],_0x4eedb7[_0x2488('0x33')]);_0x826177['attributes']=_[_0x2488('0x37')](_0x4eedb7[_0x2488('0x32')],qs[_0x2488('0x38')](_0x3062f2[_0x2488('0x33')]['fields']));_0x826177['attributes']=_0x826177['attributes'][_0x2488('0x52')]?_0x826177[_0x2488('0x36')]:_0x4eedb7[_0x2488('0x32')];_0x826177['order']=qs[_0x2488('0x3b')](_0x3062f2['query'][_0x2488('0x3b')]);_0x826177[_0x2488('0x3c')]=qs[_0x2488('0x35')](_[_0x2488('0x53')](_0x3062f2[_0x2488('0x33')],_0x4eedb7[_0x2488('0x35')]));if(_0x3062f2[_0x2488('0x33')][_0x2488('0x54')]){_0x826177[_0x2488('0x3c')]=_[_0x2488('0x3e')](_0x826177[_0x2488('0x3c')],{'$or':_[_0x2488('0x2e')](_0x826177['attributes'],function(_0x135bf3){var _0xcf5311={};_0xcf5311[_0x135bf3]={'$like':'%'+_0x3062f2['query'][_0x2488('0x54')]+'%'};return _0xcf5311;})});}_0x826177=_[_0x2488('0x3e')]({},_0x826177,_0x3062f2['options']);return _0x45d4b6['getIntervals'](_0x826177);}})[_0x2488('0x25')](function(_0x1a5c69){if(_0x1a5c69){_0xc3b118=_0x1a5c69[_0x2488('0x52')];if(!_0x3062f2['query']['hasOwnProperty'](_0x2488('0x55'))){_0x826177[_0x2488('0x1d')]=qs['limit'](_0x3062f2[_0x2488('0x33')][_0x2488('0x1d')]);_0x826177[_0x2488('0x1b')]=qs['offset'](_0x3062f2['query'][_0x2488('0x1b')]);}return _0x45d4b6[_0x2488('0x50')](_0x826177);}})[_0x2488('0x25')](function(_0x2ecb37){if(_0x2ecb37){return _0x2ecb37?{'count':_0xc3b118,'rows':_0x2ecb37}:null;}})[_0x2488('0x25')](respondWithResult(_0x2709d9,null))[_0x2488('0x46')](handleError(_0x2709d9,null));};exports[_0x2488('0x56')]=function(_0xe5c304,_0xc9fe47,_0x4772e2){return db[_0x2488('0x40')]['findOne']({'where':{'id':_0xe5c304[_0x2488('0x4e')]['id']}})['then'](handleEntityNotFound(_0xc9fe47,null))[_0x2488('0x25')](function(_0xa93f06){if(_0xa93f06){return db[_0x2488('0x57')][_0x2488('0x58')](function(_0x3bfb1e){return db[_0x2488('0x40')][_0x2488('0x26')]({'where':{'IntervalId':_0xe5c304['params']['id']},'transaction':_0x3bfb1e})['then'](function(_0x12d48e){var _0x31386f=_[_0x2488('0x2e')](_0xe5c304[_0x2488('0x4d')],function(_0x227486){delete _0x227486['id'];_0x227486['IntervalId']=_0xe5c304[_0x2488('0x4e')]['id'];return _0x227486;});return db[_0x2488('0x40')][_0x2488('0x59')](_0x31386f,{'transaction':_0x3bfb1e});});})[_0x2488('0x25')](function(){return db[_0x2488('0x40')][_0x2488('0x5a')]({'where':{'IntervalId':_0xe5c304[_0x2488('0x4e')]['id']}});});}})['then'](respondWithResult(_0xc9fe47,null))[_0x2488('0x46')](handleError(_0xc9fe47,null));};
\ No newline at end of file
+var _0x25e3=['length','hasOwnProperty','nolimit','order','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','show','find','catch','create','body','role','Intervals','UserProfileSection','userProfileId','autoAssociation','error','update','params','addInterval','getIntervals','findOne','sort','addIntervals','transaction','IntervalId','bulkCreate','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','sendStatus','stack','name','send','map','Interval','rawAttributes','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields'];(function(_0x4385ad,_0x2d0479){var _0x37df26=function(_0x15051e){while(--_0x15051e){_0x4385ad['push'](_0x4385ad['shift']());}};_0x37df26(++_0x2d0479);}(_0x25e3,0x131));var _0x325e=function(_0x3e371b,_0x3f3fa6){_0x3e371b=_0x3e371b-0x0;var _0x310329=_0x25e3[_0x3e371b];return _0x310329;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x325e('0x0'));var zipdir=require(_0x325e('0x1'));var jsonpatch=require(_0x325e('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x325e('0x3'));var Mustache=require(_0x325e('0x4'));var util=require(_0x325e('0x5'));var path=require(_0x325e('0x6'));var sox=require(_0x325e('0x7'));var csv=require(_0x325e('0x8'));var ejs=require(_0x325e('0x9'));var fs=require('fs');var fs_extra=require(_0x325e('0xa'));var _=require(_0x325e('0xb'));var squel=require(_0x325e('0xc'));var crypto=require(_0x325e('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x325e('0x8'));var querystring=require('querystring');var Papa=require(_0x325e('0xe'));var Redis=require(_0x325e('0xf'));var authService=require(_0x325e('0x10'));var qs=require(_0x325e('0x11'));var as=require(_0x325e('0x12'));var hardwareService=require(_0x325e('0x13'));var logger=require(_0x325e('0x14'))('api');var utils=require(_0x325e('0x15'));var config=require(_0x325e('0x16'));var licenseUtil=require(_0x325e('0x17'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x4a4786,_0x45b986){_0x45b986=_0x45b986||0xcc;return function(_0x37f28d){if(_0x37f28d){return _0x4a4786['sendStatus'](_0x45b986);}return _0x4a4786[_0x325e('0x18')](_0x45b986)[_0x325e('0x19')]();};}function respondWithResult(_0x210fa1,_0x449803){_0x449803=_0x449803||0xc8;return function(_0x105682){if(_0x105682){return _0x210fa1['status'](_0x449803)[_0x325e('0x1a')](_0x105682);}};}function respondWithFilteredResult(_0x56bd3b,_0xb24ae7){return function(_0x391ce7){if(_0x391ce7){var _0x92bea3=typeof _0xb24ae7[_0x325e('0x1b')]===_0x325e('0x1c')&&typeof _0xb24ae7[_0x325e('0x1d')]===_0x325e('0x1c');var _0x571f46=_0x391ce7[_0x325e('0x1e')];var _0x534d11=_0x92bea3?0x0:_0xb24ae7['offset'];var _0x121938=_0x92bea3?_0x391ce7[_0x325e('0x1e')]:_0xb24ae7[_0x325e('0x1b')]+_0xb24ae7['limit'];var _0x3d4693;if(_0x121938>=_0x571f46){_0x121938=_0x571f46;_0x3d4693=0xc8;}else{_0x3d4693=0xce;}_0x56bd3b[_0x325e('0x18')](_0x3d4693);return _0x56bd3b[_0x325e('0x1f')](_0x325e('0x20'),_0x534d11+'-'+_0x121938+'/'+_0x571f46)[_0x325e('0x1a')](_0x391ce7);}return null;};}function patchUpdates(_0x139ac5){return function(_0x4da769){try{jsonpatch['apply'](_0x4da769,_0x139ac5,!![]);}catch(_0x125b88){return BPromise[_0x325e('0x21')](_0x125b88);}return _0x4da769[_0x325e('0x22')]();};}function saveUpdates(_0xe303ec,_0x206bf9){return function(_0x460718){if(_0x460718){return _0x460718['update'](_0xe303ec)[_0x325e('0x23')](function(_0x463382){return _0x463382;});}return null;};}function removeEntity(_0x239b87,_0xc5858c){return function(_0xe305e9){if(_0xe305e9){return _0xe305e9[_0x325e('0x24')]()['then'](function(){var _0xb9321a=_0xe305e9[_0x325e('0x25')]({'plain':!![]});var _0x58c806='Intervals';return db['UserProfileResource'][_0x325e('0x24')]({'where':{'type':_0x58c806,'resourceId':_0xb9321a['id']}})[_0x325e('0x23')](function(){return _0xe305e9;});})[_0x325e('0x23')](function(){_0x239b87[_0x325e('0x18')](0xcc)[_0x325e('0x19')]();});}};}function handleEntityNotFound(_0x1893a1,_0x1b0b4c){return function(_0x2dfa12){if(!_0x2dfa12){_0x1893a1[_0x325e('0x26')](0x194);}return _0x2dfa12;};}function handleError(_0x53846f,_0x1f6490){_0x1f6490=_0x1f6490||0x1f4;return function(_0x2ea15e){logger['error'](_0x2ea15e[_0x325e('0x27')]);if(_0x2ea15e[_0x325e('0x28')]){delete _0x2ea15e[_0x325e('0x28')];}_0x53846f[_0x325e('0x18')](_0x1f6490)[_0x325e('0x29')](_0x2ea15e);};}exports['index']=function(_0xe6211e,_0x30e37a){var _0x38d20d={},_0x5694b6={},_0x3c8274={'count':0x0,'rows':[]};var _0xd0f870=_[_0x325e('0x2a')](db[_0x325e('0x2b')][_0x325e('0x2c')],function(_0x23d35a){return{'name':_0x23d35a[_0x325e('0x2d')],'type':_0x23d35a[_0x325e('0x2e')][_0x325e('0x2f')]};});_0x5694b6['model']=_[_0x325e('0x2a')](_0xd0f870,'name');_0x5694b6['query']=_[_0x325e('0x30')](_0xe6211e[_0x325e('0x31')]);_0x5694b6[_0x325e('0x32')]=_['intersection'](_0x5694b6['model'],_0x5694b6[_0x325e('0x31')]);_0x38d20d[_0x325e('0x33')]=_[_0x325e('0x34')](_0x5694b6[_0x325e('0x35')],qs[_0x325e('0x36')](_0xe6211e[_0x325e('0x31')][_0x325e('0x36')]));_0x38d20d[_0x325e('0x33')]=_0x38d20d[_0x325e('0x33')][_0x325e('0x37')]?_0x38d20d[_0x325e('0x33')]:_0x5694b6[_0x325e('0x35')];if(!_0xe6211e[_0x325e('0x31')][_0x325e('0x38')](_0x325e('0x39'))){_0x38d20d[_0x325e('0x1d')]=qs[_0x325e('0x1d')](_0xe6211e[_0x325e('0x31')][_0x325e('0x1d')]);_0x38d20d[_0x325e('0x1b')]=qs[_0x325e('0x1b')](_0xe6211e[_0x325e('0x31')]['offset']);}_0x38d20d[_0x325e('0x3a')]=qs['sort'](_0xe6211e[_0x325e('0x31')]['sort']);_0x38d20d['where']=qs[_0x325e('0x32')](_[_0x325e('0x3b')](_0xe6211e['query'],_0x5694b6[_0x325e('0x32')]),_0xd0f870);if(_0xe6211e[_0x325e('0x31')][_0x325e('0x3c')]){_0x38d20d['where']=_[_0x325e('0x3d')](_0x38d20d[_0x325e('0x3e')],{'$or':_[_0x325e('0x2a')](_0xd0f870,function(_0x5a78cc){if(_0x5a78cc[_0x325e('0x2e')]!==_0x325e('0x3f')){var _0x13d0ae={};_0x13d0ae[_0x5a78cc['name']]={'$like':'%'+_0xe6211e['query'][_0x325e('0x3c')]+'%'};return _0x13d0ae;}})});}_0x38d20d=_['merge']({},_0x38d20d,_0xe6211e[_0x325e('0x40')]);var _0x524135={'where':_0x38d20d[_0x325e('0x3e')]};return db['Interval'][_0x325e('0x1e')](_0x524135)['then'](function(_0x46c0fa){_0x3c8274['count']=_0x46c0fa;if(_0xe6211e[_0x325e('0x31')][_0x325e('0x41')]){_0x38d20d[_0x325e('0x42')]=[{'all':!![]}];}return db[_0x325e('0x2b')][_0x325e('0x43')](_0x38d20d);})[_0x325e('0x23')](function(_0x56054b){_0x3c8274[_0x325e('0x44')]=_0x56054b;return _0x3c8274;})[_0x325e('0x23')](respondWithFilteredResult(_0x30e37a,_0x38d20d))['catch'](handleError(_0x30e37a,null));};exports[_0x325e('0x45')]=function(_0x410e43,_0x14d7e2){var _0x64fcda={'raw':!![],'where':{'id':_0x410e43['params']['id']}},_0x17defc={};_0x17defc[_0x325e('0x35')]=_['keys'](db[_0x325e('0x2b')][_0x325e('0x2c')]);_0x17defc[_0x325e('0x31')]=_[_0x325e('0x30')](_0x410e43['query']);_0x17defc[_0x325e('0x32')]=_[_0x325e('0x34')](_0x17defc[_0x325e('0x35')],_0x17defc['query']);_0x64fcda[_0x325e('0x33')]=_[_0x325e('0x34')](_0x17defc[_0x325e('0x35')],qs[_0x325e('0x36')](_0x410e43[_0x325e('0x31')][_0x325e('0x36')]));_0x64fcda[_0x325e('0x33')]=_0x64fcda[_0x325e('0x33')]['length']?_0x64fcda[_0x325e('0x33')]:_0x17defc[_0x325e('0x35')];if(_0x410e43[_0x325e('0x31')][_0x325e('0x41')]){_0x64fcda['include']=[{'all':!![]}];}_0x64fcda=_[_0x325e('0x3d')]({},_0x64fcda,_0x410e43[_0x325e('0x40')]);return db[_0x325e('0x2b')][_0x325e('0x46')](_0x64fcda)['then'](handleEntityNotFound(_0x14d7e2,null))[_0x325e('0x23')](respondWithResult(_0x14d7e2,null))[_0x325e('0x47')](handleError(_0x14d7e2,null));};exports[_0x325e('0x48')]=function(_0x54936b,_0x17d353){return db[_0x325e('0x2b')]['create'](_0x54936b[_0x325e('0x49')],{})['then'](function(_0x3ecebf){var _0x4aca17=_0x54936b['user'][_0x325e('0x25')]({'plain':!![]});if(!_0x4aca17)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4aca17[_0x325e('0x4a')]==='user'){var _0x3e65b1=_0x3ecebf[_0x325e('0x25')]({'plain':!![]});var _0x79155a=_0x325e('0x4b');return db[_0x325e('0x4c')][_0x325e('0x46')]({'where':{'name':_0x79155a,'userProfileId':_0x4aca17[_0x325e('0x4d')]},'raw':!![]})[_0x325e('0x23')](function(_0x5436e7){if(_0x5436e7&&_0x5436e7[_0x325e('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x3e65b1[_0x325e('0x28')],'resourceId':_0x3e65b1['id'],'type':_0x5436e7['name'],'sectionId':_0x5436e7['id']},{})[_0x325e('0x23')](function(){return _0x3ecebf;});}else{return _0x3ecebf;}})[_0x325e('0x47')](function(_0x376595){logger[_0x325e('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x376595);throw _0x376595;});}return _0x3ecebf;})[_0x325e('0x23')](respondWithResult(_0x17d353,0xc9))[_0x325e('0x47')](handleError(_0x17d353,null));};exports[_0x325e('0x50')]=function(_0x7b51b6,_0x55f315){if(_0x7b51b6[_0x325e('0x49')]['id']){delete _0x7b51b6[_0x325e('0x49')]['id'];}return db[_0x325e('0x2b')][_0x325e('0x46')]({'where':{'id':_0x7b51b6[_0x325e('0x51')]['id']}})[_0x325e('0x23')](handleEntityNotFound(_0x55f315,null))['then'](saveUpdates(_0x7b51b6[_0x325e('0x49')],null))['then'](respondWithResult(_0x55f315,null))['catch'](handleError(_0x55f315,null));};exports[_0x325e('0x24')]=function(_0x2a076e,_0x3f2d54){return db['Interval']['find']({'where':{'id':_0x2a076e[_0x325e('0x51')]['id']}})[_0x325e('0x23')](handleEntityNotFound(_0x3f2d54,null))['then'](removeEntity(_0x3f2d54,null))[_0x325e('0x47')](handleError(_0x3f2d54,null));};exports[_0x325e('0x52')]=function(_0x2913f3,_0x165514,_0x56473b){if(_0x2913f3[_0x325e('0x49')]['id']){delete _0x2913f3[_0x325e('0x49')]['id'];}return db[_0x325e('0x2b')]['find']({'where':{'id':_0x2913f3[_0x325e('0x51')]['id']}})['then'](handleEntityNotFound(_0x165514,null))['then'](function(_0x4dd65b){if(_0x4dd65b){_0x2913f3['body']['IntervalId']=_0x4dd65b['id'];return db['Interval']['create'](_0x2913f3['body']);}})[_0x325e('0x23')](respondWithResult(_0x165514,null))[_0x325e('0x47')](handleError(_0x165514,null));};exports[_0x325e('0x53')]=function(_0x455286,_0x155383,_0x247187){var _0x53a9c3={};var _0x229f1e={};var _0x407285;var _0x164c7f;return db[_0x325e('0x2b')][_0x325e('0x54')]({'where':{'id':_0x455286[_0x325e('0x51')]['id']}})[_0x325e('0x23')](handleEntityNotFound(_0x155383,null))['then'](function(_0xce3a5c){if(_0xce3a5c){_0x407285=_0xce3a5c;_0x229f1e[_0x325e('0x35')]=_[_0x325e('0x30')](db[_0x325e('0x2b')][_0x325e('0x2c')]);_0x229f1e['query']=_[_0x325e('0x30')](_0x455286[_0x325e('0x31')]);_0x229f1e['filters']=_[_0x325e('0x34')](_0x229f1e['model'],_0x229f1e[_0x325e('0x31')]);_0x53a9c3[_0x325e('0x33')]=_['intersection'](_0x229f1e[_0x325e('0x35')],qs[_0x325e('0x36')](_0x455286[_0x325e('0x31')]['fields']));_0x53a9c3[_0x325e('0x33')]=_0x53a9c3[_0x325e('0x33')][_0x325e('0x37')]?_0x53a9c3[_0x325e('0x33')]:_0x229f1e[_0x325e('0x35')];_0x53a9c3[_0x325e('0x3a')]=qs['sort'](_0x455286[_0x325e('0x31')][_0x325e('0x55')]);_0x53a9c3[_0x325e('0x3e')]=qs[_0x325e('0x32')](_[_0x325e('0x3b')](_0x455286[_0x325e('0x31')],_0x229f1e[_0x325e('0x32')]));if(_0x455286[_0x325e('0x31')][_0x325e('0x3c')]){_0x53a9c3[_0x325e('0x3e')]=_[_0x325e('0x3d')](_0x53a9c3[_0x325e('0x3e')],{'$or':_[_0x325e('0x2a')](_0x53a9c3[_0x325e('0x33')],function(_0x249ca0){var _0x144695={};_0x144695[_0x249ca0]={'$like':'%'+_0x455286[_0x325e('0x31')][_0x325e('0x3c')]+'%'};return _0x144695;})});}_0x53a9c3=_[_0x325e('0x3d')]({},_0x53a9c3,_0x455286[_0x325e('0x40')]);return _0x407285[_0x325e('0x53')](_0x53a9c3);}})[_0x325e('0x23')](function(_0x10587a){if(_0x10587a){_0x164c7f=_0x10587a[_0x325e('0x37')];if(!_0x455286[_0x325e('0x31')][_0x325e('0x38')]('nolimit')){_0x53a9c3[_0x325e('0x1d')]=qs[_0x325e('0x1d')](_0x455286[_0x325e('0x31')][_0x325e('0x1d')]);_0x53a9c3['offset']=qs[_0x325e('0x1b')](_0x455286[_0x325e('0x31')][_0x325e('0x1b')]);}return _0x407285[_0x325e('0x53')](_0x53a9c3);}})['then'](function(_0x5f09f1){if(_0x5f09f1){return _0x5f09f1?{'count':_0x164c7f,'rows':_0x5f09f1}:null;}})[_0x325e('0x23')](respondWithResult(_0x155383,null))[_0x325e('0x47')](handleError(_0x155383,null));};exports[_0x325e('0x56')]=function(_0x403a0a,_0x56455a,_0x24ba75){return db[_0x325e('0x2b')][_0x325e('0x54')]({'where':{'id':_0x403a0a[_0x325e('0x51')]['id']}})[_0x325e('0x23')](handleEntityNotFound(_0x56455a,null))[_0x325e('0x23')](function(_0x6764ed){if(_0x6764ed){return db['sequelize'][_0x325e('0x57')](function(_0x4c4f04){return db[_0x325e('0x2b')]['destroy']({'where':{'IntervalId':_0x403a0a[_0x325e('0x51')]['id']},'transaction':_0x4c4f04})[_0x325e('0x23')](function(_0x36d625){var _0x3d4a26=_[_0x325e('0x2a')](_0x403a0a[_0x325e('0x49')],function(_0x190800){delete _0x190800['id'];_0x190800[_0x325e('0x58')]=_0x403a0a[_0x325e('0x51')]['id'];return _0x190800;});return db['Interval'][_0x325e('0x59')](_0x3d4a26,{'transaction':_0x4c4f04});});})[_0x325e('0x23')](function(){return db[_0x325e('0x2b')]['findAll']({'where':{'IntervalId':_0x403a0a[_0x325e('0x51')]['id']}});});}})[_0x325e('0x23')](respondWithResult(_0x56455a,null))['catch'](handleError(_0x56455a,null));};
\ No newline at end of file
index 3dfa013..05fd014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa701=['Interval','tools_intervals','rewrite','util','../../config/logger','bluebird','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','define'];(function(_0x441871,_0x54f33b){var _0x4befdb=function(_0x5d072f){while(--_0x5d072f){_0x441871['push'](_0x441871['shift']());}};_0x4befdb(++_0x54f33b);}(_0xa701,0xd4));var _0x1a70=function(_0x5024da,_0x497a3d){_0x5024da=_0x5024da-0x0;var _0x44c6f1=_0xa701[_0x5024da];return _0x44c6f1;};'use strict';var _=require('lodash');var util=require(_0x1a70('0x0'));var logger=require(_0x1a70('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1a70('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1a70('0x3'));var config=require(_0x1a70('0x4'));var attributes=require(_0x1a70('0x5'));var extensions=require(_0x1a70('0x6'));module['exports']=function(_0x5ec401,_0x1c700b){return _0x5ec401[_0x1a70('0x7')](_0x1a70('0x8'),attributes,{'tableName':_0x1a70('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1dd89b,_0x135dfb){extensions[_0x1a70('0xa')](_0x5ec401,_0x1dd89b);},'afterBulkCreate':function(_0x55b5e2,_0xe69b9b,_0x121091){_0x121091();extensions[_0x1a70('0xa')](_0x5ec401,_0x55b5e2[0x0]);},'afterUpdate':function(_0x471b1f,_0x5772d9){extensions[_0x1a70('0xa')](_0x5ec401,_0x471b1f);},'afterDestroy':function(_0x4305bd,_0x1b29e7){extensions['rewrite'](_0x5ec401,_0x4305bd);}}});};
\ No newline at end of file
+var _0xce0d=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','tools_intervals','rewrite','lodash','util'];(function(_0x56afd8,_0x39ebf5){var _0x5c6265=function(_0x401d68){while(--_0x401d68){_0x56afd8['push'](_0x56afd8['shift']());}};_0x5c6265(++_0x39ebf5);}(_0xce0d,0x143));var _0xdce0=function(_0x2074db,_0x10b81b){_0x2074db=_0x2074db-0x0;var _0x27324c=_0xce0d[_0x2074db];return _0x27324c;};'use strict';var _=require(_0xdce0('0x0'));var util=require(_0xdce0('0x1'));var logger=require(_0xdce0('0x2'))(_0xdce0('0x3'));var moment=require(_0xdce0('0x4'));var BPromise=require(_0xdce0('0x5'));var rp=require(_0xdce0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdce0('0x7'));var config=require(_0xdce0('0x8'));var attributes=require('./interval.attributes');var extensions=require('../../components/extensions/rewrite');module[_0xdce0('0x9')]=function(_0x5b1591,_0x14de59){return _0x5b1591[_0xdce0('0xa')]('Interval',attributes,{'tableName':_0xdce0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x8d53f8,_0x2863f9){extensions[_0xdce0('0xc')](_0x5b1591,_0x8d53f8);},'afterBulkCreate':function(_0x1576cd,_0xe56e70,_0x443395){_0x443395();extensions[_0xdce0('0xc')](_0x5b1591,_0x1576cd[0x0]);},'afterUpdate':function(_0xe43ec2,_0x4918a3){extensions[_0xdce0('0xc')](_0x5b1591,_0xe43ec2);},'afterDestroy':function(_0xf8ed04,_0x5d3439){extensions[_0xdce0('0xc')](_0x5b1591,_0xf8ed04);}}});};
\ No newline at end of file
index 3a164b4..d197a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x2b8077,_0x453634){var _0x308091=function(_0x426df7){while(--_0x426df7){_0x2b8077['push'](_0x2b8077['shift']());}};_0x308091(++_0x453634);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x57e00e,_0x36e79a){var _0x415e60=function(_0x5cd7fa){while(--_0x5cd7fa){_0x57e00e['push'](_0x57e00e['shift']());}};_0x415e60(++_0x36e79a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index 46214a4..c292b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0x85df8e,_0x412ae2){var _0x75cf16=function(_0x3b3180){while(--_0x3b3180){_0x85df8e['push'](_0x85df8e['shift']());}};_0x75cf16(++_0x412ae2);}(_0x2032,0xd9));var _0x2203=function(_0x2ca62a,_0x141bfa){_0x2ca62a=_0x2ca62a-0x0;var _0x5dc413=_0x2032[_0x2ca62a];return _0x5dc413;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
+var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x296923,_0x4adaed){var _0x29af70=function(_0x4eeedb){while(--_0x4eeedb){_0x296923['push'](_0x296923['shift']());}};_0x29af70(++_0x4adaed);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5f66[_0x3e5086];return _0xfeb102;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
index cdc710e..3976113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2e0=['customfield_11501','newToken','customfield_11503','name','customfield_11504','reason','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','base64','setEncoding','utf8','data','end','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email'];(function(_0x10b6ef,_0x58fca5){var _0x15acf7=function(_0x7ee655){while(--_0x7ee655){_0x10b6ef['push'](_0x10b6ef['shift']());}};_0x15acf7(++_0x58fca5);}(_0xa2e0,0x139));var _0x0a2e=function(_0x4b474d,_0x589150){_0x4b474d=_0x4b474d-0x0;var _0x3cfd5d=_0xa2e0[_0x4b474d];return _0x3cfd5d;};'use strict';var BPromise=require('bluebird');var https=require('https');var logger=require(_0x0a2e('0x0'))(_0x0a2e('0x1'));var USERNAME=_0x0a2e('0x2');var PASSWORD=_0x0a2e('0x3');function openIssue(_0x5e949e,_0x513190){var _0xb84d20={'fields':{'project':{'key':_0x5e949e[_0x0a2e('0x4')]||_0x0a2e('0x5')},'summary':(_0x5e949e[_0x0a2e('0x6')]||_0x0a2e('0x7'))+_0x0a2e('0x8')+_0x5e949e['ip'],'description':_0x5e949e[_0x0a2e('0x9')]||JSON[_0x0a2e('0xa')](_0x5e949e),'issuetype':{'name':_0x5e949e[_0x0a2e('0xb')]||_0x0a2e('0xc')}}};_0xb84d20[_0x0a2e('0xd')][_0x0a2e('0xe')]=_0x5e949e[_0x0a2e('0xf')];_0xb84d20[_0x0a2e('0xd')][_0x0a2e('0x10')]=_0x5e949e['oldToken'];_0xb84d20[_0x0a2e('0xd')]['customfield_11502']=_0x5e949e[_0x0a2e('0x11')];_0xb84d20[_0x0a2e('0xd')][_0x0a2e('0x12')]=_0x5e949e[_0x0a2e('0x13')];_0xb84d20[_0x0a2e('0xd')][_0x0a2e('0x14')]=_0x5e949e[_0x0a2e('0x15')];_0xb84d20[_0x0a2e('0xd')]['customfield_10102']=_0x5e949e['ip'];var _0x4a5178={'host':_0x0a2e('0x16'),'port':0x1bb,'path':_0x0a2e('0x17'),'method':_0x0a2e('0x18'),'timeout':0x4e20,'headers':{'Content-Type':_0x0a2e('0x19'),'Authorization':_0x0a2e('0x1a')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x0a2e('0x1b'))}};var _0x3592df=JSON[_0x0a2e('0xa')](_0xb84d20);var _0x5c99e6=https['request'](_0x4a5178,function(_0x4acb60){_0x4acb60[_0x0a2e('0x1c')](_0x0a2e('0x1d'));var _0x627300='';_0x4acb60['on'](_0x0a2e('0x1e'),function(_0x4f51fe){_0x627300+=_0x4f51fe;});_0x4acb60['on'](_0x0a2e('0x1f'),function(){if(_0x513190){return _0x513190['status'](_0x4acb60[_0x0a2e('0x20')])[_0x0a2e('0x21')](JSON[_0x0a2e('0x22')](_0x627300));}});});_0x5c99e6['on'](_0x0a2e('0x23'),function(_0x388354){if(_0x513190){return _0x513190['status'](0x1f4)['json']({'errors':[{'message':_0x0a2e('0x24'),'type':_0x0a2e('0x25')}]});}});_0x5c99e6[_0x0a2e('0x26')](_0x3592df);_0x5c99e6[_0x0a2e('0x1f')]();}exports[_0x0a2e('0x27')]=openIssue;exports[_0x0a2e('0x28')]=function(_0xa4582d,_0x51c4ef){_0xa4582d[_0x0a2e('0x29')]['ip']=_0xa4582d[_0x0a2e('0x2a')][_0x0a2e('0x2b')]||_0xa4582d[_0x0a2e('0x2c')][_0x0a2e('0x2d')]||_0xa4582d[_0x0a2e('0x2e')][_0x0a2e('0x2d')]||_0xa4582d[_0x0a2e('0x2c')][_0x0a2e('0x2e')]['remoteAddress'];return openIssue(_0xa4582d[_0x0a2e('0x29')],_0x51c4ef);};
\ No newline at end of file
+var _0x11cb=['json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','send','body','x-forwarded-for','connection','remoteAddress','socket','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','oldToken','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','application/json','Basic\x20','toString','request','setEncoding','utf8','data','end','status','statusCode'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x11cb,0x18c));var _0xb11c=function(_0x4e197d,_0x2cabeb){_0x4e197d=_0x4e197d-0x0;var _0x51f535=_0x11cb[_0x4e197d];return _0x51f535;};'use strict';var BPromise=require('bluebird');var https=require(_0xb11c('0x0'));var logger=require(_0xb11c('0x1'))(_0xb11c('0x2'));var USERNAME=_0xb11c('0x3');var PASSWORD=_0xb11c('0x4');function openIssue(_0x168004,_0x43f652){var _0x30bdc7={'fields':{'project':{'key':_0x168004[_0xb11c('0x5')]||_0xb11c('0x6')},'summary':(_0x168004[_0xb11c('0x7')]||_0xb11c('0x8'))+_0xb11c('0x9')+_0x168004['ip'],'description':_0x168004[_0xb11c('0xa')]||JSON[_0xb11c('0xb')](_0x168004),'issuetype':{'name':_0x168004[_0xb11c('0xc')]||_0xb11c('0xd')}}};_0x30bdc7[_0xb11c('0xe')][_0xb11c('0xf')]=_0x168004[_0xb11c('0x10')];_0x30bdc7[_0xb11c('0xe')]['customfield_11501']=_0x168004[_0xb11c('0x11')];_0x30bdc7[_0xb11c('0xe')][_0xb11c('0x12')]=_0x168004[_0xb11c('0x13')];_0x30bdc7[_0xb11c('0xe')][_0xb11c('0x14')]=_0x168004[_0xb11c('0x15')];_0x30bdc7['fields']['customfield_11504']=_0x168004[_0xb11c('0x16')];_0x30bdc7['fields'][_0xb11c('0x17')]=_0x168004['ip'];var _0x43a982={'host':_0xb11c('0x18'),'port':0x1bb,'path':_0xb11c('0x19'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0xb11c('0x1a'),'Authorization':_0xb11c('0x1b')+new Buffer(USERNAME+':'+PASSWORD)[_0xb11c('0x1c')]('base64')}};var _0x393182=JSON[_0xb11c('0xb')](_0x30bdc7);var _0x1d1eed=https[_0xb11c('0x1d')](_0x43a982,function(_0x3787ba){_0x3787ba[_0xb11c('0x1e')](_0xb11c('0x1f'));var _0x2618f3='';_0x3787ba['on'](_0xb11c('0x20'),function(_0x487c5c){_0x2618f3+=_0x487c5c;});_0x3787ba['on'](_0xb11c('0x21'),function(){if(_0x43f652){return _0x43f652[_0xb11c('0x22')](_0x3787ba[_0xb11c('0x23')])[_0xb11c('0x24')](JSON[_0xb11c('0x25')](_0x2618f3));}});});_0x1d1eed['on'](_0xb11c('0x26'),function(_0x15cfd4){if(_0x43f652){return _0x43f652[_0xb11c('0x22')](0x1f4)[_0xb11c('0x24')]({'errors':[{'message':_0xb11c('0x27'),'type':_0xb11c('0x28')}]});}});_0x1d1eed[_0xb11c('0x29')](_0x393182);_0x1d1eed[_0xb11c('0x21')]();}exports['openIssue']=openIssue;exports[_0xb11c('0x2a')]=function(_0x46ad6b,_0x5dbbea){_0x46ad6b[_0xb11c('0x2b')]['ip']=_0x46ad6b['headers'][_0xb11c('0x2c')]||_0x46ad6b[_0xb11c('0x2d')][_0xb11c('0x2e')]||_0x46ad6b[_0xb11c('0x2f')][_0xb11c('0x2e')]||_0x46ad6b[_0xb11c('0x2d')][_0xb11c('0x2f')][_0xb11c('0x2e')];return openIssue(_0x46ad6b[_0xb11c('0x2b')],_0x5dbbea);};
\ No newline at end of file
index 0cd1859..289e3d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x3b43f1,_0x42f22b){var _0x4c4401=function(_0x87d257){while(--_0x87d257){_0x3b43f1['push'](_0x3b43f1['shift']());}};_0x4c4401(++_0x42f22b);}(_0xe706,0xa3));var _0x6e70=function(_0x25cb87,_0xc2d352){_0x25cb87=_0x25cb87-0x0;var _0x3a7537=_0xe706[_0x25cb87];return _0x3a7537;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0x1339=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4259fb,_0x5e707b){var _0x39b86c=function(_0x5297db){while(--_0x5297db){_0x4259fb['push'](_0x4259fb['shift']());}};_0x39b86c(++_0x5e707b);}(_0x1339,0x1ed));var _0x9133=function(_0x4503ca,_0x282631){_0x4503ca=_0x4503ca-0x0;var _0x234c30=_0x1339[_0x4503ca];return _0x234c30;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9133('0x0'));var timeout=require(_0x9133('0x1'));var express=require(_0x9133('0x2'));var router=express[_0x9133('0x3')]();var fs_extra=require(_0x9133('0x4'));var auth=require(_0x9133('0x5'));var interaction=require(_0x9133('0x6'));var config=require(_0x9133('0x7'));var controller=require('./jscriptyAnswerReport.controller');router[_0x9133('0x8')]('/',auth[_0x9133('0x9')](),controller[_0x9133('0xa')]);router['get'](_0x9133('0xb'),auth[_0x9133('0x9')](),controller[_0x9133('0xc')]);router[_0x9133('0x8')](_0x9133('0xd'),auth[_0x9133('0x9')](),controller[_0x9133('0xe')]);router[_0x9133('0xf')]('/',auth[_0x9133('0x9')](),controller[_0x9133('0x10')]);router['put'](_0x9133('0xd'),auth[_0x9133('0x9')](),controller[_0x9133('0x11')]);router[_0x9133('0x12')](_0x9133('0xd'),auth[_0x9133('0x9')](),controller['destroy']);module[_0x9133('0x13')]=router;
\ No newline at end of file
index ed5eb9b..5d85d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x7a54,0x106));var _0x47a5=function(_0xbf3c89,_0x5b43fd){_0xbf3c89=_0xbf3c89-0x0;var _0x46432c=_0x7a54[_0xbf3c89];return _0x46432c;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0x7a54,0x106));var _0x47a5=function(_0x17c9b8,_0x4b6fed){_0x17c9b8=_0x17c9b8-0x0;var _0x2bf115=_0x7a54[_0x17c9b8];return _0x2bf115;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index 30f62ad..7b009db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dee=['fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','count','includeAll','findAll','rows','show','options','catch','create','body','find','params','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','JscriptyAnswerReport','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','attributes'];(function(_0x312e6d,_0x2005c4){var _0x24f975=function(_0x365209){while(--_0x365209){_0x312e6d['push'](_0x312e6d['shift']());}};_0x24f975(++_0x2005c4);}(_0x7dee,0xb0));var _0xe7de=function(_0x29dd28,_0x35b067){_0x29dd28=_0x29dd28-0x0;var _0x4a2b1a=_0x7dee[_0x29dd28];return _0x4a2b1a;};'use strict';var emlformat=require(_0xe7de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe7de('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7de('0x2'));var moment=require(_0xe7de('0x3'));var BPromise=require(_0xe7de('0x4'));var Mustache=require(_0xe7de('0x5'));var util=require('util');var path=require(_0xe7de('0x6'));var sox=require('sox');var csv=require(_0xe7de('0x7'));var ejs=require(_0xe7de('0x8'));var fs=require('fs');var fs_extra=require(_0xe7de('0x9'));var _=require(_0xe7de('0xa'));var squel=require(_0xe7de('0xb'));var crypto=require(_0xe7de('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe7de('0xd'));var toCsv=require(_0xe7de('0x7'));var querystring=require(_0xe7de('0xe'));var Papa=require(_0xe7de('0xf'));var Redis=require('ioredis');var authService=require(_0xe7de('0x10'));var qs=require(_0xe7de('0x11'));var as=require(_0xe7de('0x12'));var hardwareService=require(_0xe7de('0x13'));var logger=require(_0xe7de('0x14'))(_0xe7de('0x15'));var utils=require(_0xe7de('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xe7de('0x17'));var db=require(_0xe7de('0x18'))['db'];function respondWithStatusCode(_0x38c0a1,_0x2c535c){_0x2c535c=_0x2c535c||0xcc;return function(_0x2c49d6){if(_0x2c49d6){return _0x38c0a1['sendStatus'](_0x2c535c);}return _0x38c0a1[_0xe7de('0x19')](_0x2c535c)[_0xe7de('0x1a')]();};}function respondWithResult(_0x280473,_0x41f731){_0x41f731=_0x41f731||0xc8;return function(_0xe68b48){if(_0xe68b48){return _0x280473[_0xe7de('0x19')](_0x41f731)['json'](_0xe68b48);}};}function respondWithFilteredResult(_0x4b70ab,_0x28a0c4){return function(_0x3f62e1){if(_0x3f62e1){var _0x3e49d5=typeof _0x28a0c4[_0xe7de('0x1b')]===_0xe7de('0x1c')&&typeof _0x28a0c4['limit']===_0xe7de('0x1c');var _0x4b1648=_0x3f62e1['count'];var _0x5cb629=_0x3e49d5?0x0:_0x28a0c4[_0xe7de('0x1b')];var _0x1da189=_0x3e49d5?_0x3f62e1['count']:_0x28a0c4[_0xe7de('0x1b')]+_0x28a0c4[_0xe7de('0x1d')];var _0x2850c6;if(_0x1da189>=_0x4b1648){_0x1da189=_0x4b1648;_0x2850c6=0xc8;}else{_0x2850c6=0xce;}_0x4b70ab[_0xe7de('0x19')](_0x2850c6);return _0x4b70ab[_0xe7de('0x1e')](_0xe7de('0x1f'),_0x5cb629+'-'+_0x1da189+'/'+_0x4b1648)[_0xe7de('0x20')](_0x3f62e1);}return null;};}function patchUpdates(_0xfead44){return function(_0x1c6fa6){try{jsonpatch['apply'](_0x1c6fa6,_0xfead44,!![]);}catch(_0x1120c1){return BPromise[_0xe7de('0x21')](_0x1120c1);}return _0x1c6fa6[_0xe7de('0x22')]();};}function saveUpdates(_0x4eb228,_0xc9f494){return function(_0x597346){if(_0x597346){return _0x597346[_0xe7de('0x23')](_0x4eb228)[_0xe7de('0x24')](function(_0x3b0c24){return _0x3b0c24;});}return null;};}function removeEntity(_0x5e97ec,_0x45b4e1){return function(_0x454952){if(_0x454952){return _0x454952[_0xe7de('0x25')]()[_0xe7de('0x24')](function(){_0x5e97ec[_0xe7de('0x19')](0xcc)[_0xe7de('0x1a')]();});}};}function handleEntityNotFound(_0xd7f3ca,_0x1f837e){return function(_0x4c0aff){if(!_0x4c0aff){_0xd7f3ca[_0xe7de('0x26')](0x194);}return _0x4c0aff;};}function handleError(_0x33e7f1,_0x419a94){_0x419a94=_0x419a94||0x1f4;return function(_0x248b9a){logger[_0xe7de('0x27')](_0x248b9a[_0xe7de('0x28')]);if(_0x248b9a[_0xe7de('0x29')]){delete _0x248b9a['name'];}_0x33e7f1[_0xe7de('0x19')](_0x419a94)[_0xe7de('0x2a')](_0x248b9a);};}exports[_0xe7de('0x2b')]=function(_0x3d4d63,_0x25b7cd){var _0x4ff7df={},_0x41b591={},_0x241a37={'count':0x0,'rows':[]};var _0x596cb2=_['map'](db[_0xe7de('0x2c')][_0xe7de('0x2d')],function(_0x225e8e){return{'name':_0x225e8e[_0xe7de('0x2e')],'type':_0x225e8e['type'][_0xe7de('0x2f')]};});_0x41b591[_0xe7de('0x30')]=_[_0xe7de('0x31')](_0x596cb2,_0xe7de('0x29'));_0x41b591['query']=_[_0xe7de('0x32')](_0x3d4d63[_0xe7de('0x33')]);_0x41b591[_0xe7de('0x34')]=_[_0xe7de('0x35')](_0x41b591[_0xe7de('0x30')],_0x41b591[_0xe7de('0x33')]);_0x4ff7df[_0xe7de('0x36')]=_[_0xe7de('0x35')](_0x41b591['model'],qs[_0xe7de('0x37')](_0x3d4d63[_0xe7de('0x33')][_0xe7de('0x37')]));_0x4ff7df[_0xe7de('0x36')]=_0x4ff7df[_0xe7de('0x36')][_0xe7de('0x38')]?_0x4ff7df[_0xe7de('0x36')]:_0x41b591[_0xe7de('0x30')];if(!_0x3d4d63[_0xe7de('0x33')][_0xe7de('0x39')]('nolimit')){_0x4ff7df['limit']=qs[_0xe7de('0x1d')](_0x3d4d63[_0xe7de('0x33')][_0xe7de('0x1d')]);_0x4ff7df[_0xe7de('0x1b')]=qs[_0xe7de('0x1b')](_0x3d4d63[_0xe7de('0x33')][_0xe7de('0x1b')]);}_0x4ff7df[_0xe7de('0x3a')]=qs[_0xe7de('0x3b')](_0x3d4d63[_0xe7de('0x33')]['sort']);_0x4ff7df[_0xe7de('0x3c')]=qs[_0xe7de('0x34')](_[_0xe7de('0x3d')](_0x3d4d63[_0xe7de('0x33')],_0x41b591[_0xe7de('0x34')]),_0x596cb2);if(_0x3d4d63['query']['filter']){_0x4ff7df[_0xe7de('0x3c')]=_[_0xe7de('0x3e')](_0x4ff7df[_0xe7de('0x3c')],{'$or':_[_0xe7de('0x31')](_0x596cb2,function(_0x377b89){if(_0x377b89[_0xe7de('0x3f')]!==_0xe7de('0x40')){var _0x219231={};_0x219231[_0x377b89[_0xe7de('0x29')]]={'$like':'%'+_0x3d4d63['query']['filter']+'%'};return _0x219231;}})});}_0x4ff7df=_[_0xe7de('0x3e')]({},_0x4ff7df,_0x3d4d63['options']);var _0x51ff68={'where':_0x4ff7df['where']};return db[_0xe7de('0x2c')][_0xe7de('0x41')](_0x51ff68)[_0xe7de('0x24')](function(_0x94a7c2){_0x241a37[_0xe7de('0x41')]=_0x94a7c2;if(_0x3d4d63[_0xe7de('0x33')][_0xe7de('0x42')]){_0x4ff7df['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xe7de('0x43')](_0x4ff7df);})[_0xe7de('0x24')](function(_0xa71e89){_0x241a37[_0xe7de('0x44')]=_0xa71e89;return _0x241a37;})['then'](respondWithFilteredResult(_0x25b7cd,_0x4ff7df))['catch'](handleError(_0x25b7cd,null));};exports[_0xe7de('0x45')]=function(_0x495a82,_0x1ad1ac){var _0x5ac35f={'raw':!![],'where':{'id':_0x495a82['params']['id']}},_0x3e33dc={};_0x3e33dc[_0xe7de('0x30')]=_['keys'](db[_0xe7de('0x2c')][_0xe7de('0x2d')]);_0x3e33dc[_0xe7de('0x33')]=_['keys'](_0x495a82[_0xe7de('0x33')]);_0x3e33dc[_0xe7de('0x34')]=_[_0xe7de('0x35')](_0x3e33dc['model'],_0x3e33dc[_0xe7de('0x33')]);_0x5ac35f['attributes']=_[_0xe7de('0x35')](_0x3e33dc[_0xe7de('0x30')],qs[_0xe7de('0x37')](_0x495a82[_0xe7de('0x33')][_0xe7de('0x37')]));_0x5ac35f['attributes']=_0x5ac35f['attributes'][_0xe7de('0x38')]?_0x5ac35f['attributes']:_0x3e33dc['model'];if(_0x495a82[_0xe7de('0x33')][_0xe7de('0x42')]){_0x5ac35f['include']=[{'all':!![]}];}_0x5ac35f=_[_0xe7de('0x3e')]({},_0x5ac35f,_0x495a82[_0xe7de('0x46')]);return db['JscriptyAnswerReport']['find'](_0x5ac35f)[_0xe7de('0x24')](handleEntityNotFound(_0x1ad1ac,null))[_0xe7de('0x24')](respondWithResult(_0x1ad1ac,null))[_0xe7de('0x47')](handleError(_0x1ad1ac,null));};exports['create']=function(_0x2eef24,_0x28eef7){return db[_0xe7de('0x2c')][_0xe7de('0x48')](_0x2eef24[_0xe7de('0x49')],{})[_0xe7de('0x24')](respondWithResult(_0x28eef7,0xc9))[_0xe7de('0x47')](handleError(_0x28eef7,null));};exports[_0xe7de('0x23')]=function(_0x407582,_0x2d8a9a){if(_0x407582[_0xe7de('0x49')]['id']){delete _0x407582['body']['id'];}return db[_0xe7de('0x2c')][_0xe7de('0x4a')]({'where':{'id':_0x407582[_0xe7de('0x4b')]['id']}})[_0xe7de('0x24')](handleEntityNotFound(_0x2d8a9a,null))['then'](saveUpdates(_0x407582[_0xe7de('0x49')],null))[_0xe7de('0x24')](respondWithResult(_0x2d8a9a,null))[_0xe7de('0x47')](handleError(_0x2d8a9a,null));};exports[_0xe7de('0x25')]=function(_0x374d37,_0x427ba6){return db[_0xe7de('0x2c')][_0xe7de('0x4a')]({'where':{'id':_0x374d37[_0xe7de('0x4b')]['id']}})[_0xe7de('0x24')](handleEntityNotFound(_0x427ba6,null))['then'](removeEntity(_0x427ba6,null))[_0xe7de('0x47')](handleError(_0x427ba6,null));};exports[_0xe7de('0x4c')]=function(_0x3aac91,_0x3415a6){return db[_0xe7de('0x2c')][_0xe7de('0x4c')]()['then'](respondWithResult(_0x3415a6,null))[_0xe7de('0x47')](handleError(_0x3415a6,null));};
\ No newline at end of file
+var _0xd5b2=['status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','then','stack','name','send','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','include','catch','show','params','fields','find','create','body','destroy','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','fs-extra','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x269bbf,_0x1f4171){var _0x5e4f02=function(_0x583e3e){while(--_0x583e3e){_0x269bbf['push'](_0x269bbf['shift']());}};_0x5e4f02(++_0x1f4171);}(_0xd5b2,0x10e));var _0x2d5b=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xd5b2[_0x543084];return _0x306a57;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2d5b('0x0'));var zipdir=require(_0x2d5b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2d5b('0x2'));var moment=require(_0x2d5b('0x3'));var BPromise=require(_0x2d5b('0x4'));var Mustache=require(_0x2d5b('0x5'));var util=require(_0x2d5b('0x6'));var path=require(_0x2d5b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2d5b('0x8'));var _=require('lodash');var squel=require(_0x2d5b('0x9'));var crypto=require('crypto');var jsforce=require(_0x2d5b('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x2d5b('0xb'));var querystring=require(_0x2d5b('0xc'));var Papa=require(_0x2d5b('0xd'));var Redis=require(_0x2d5b('0xe'));var authService=require(_0x2d5b('0xf'));var qs=require(_0x2d5b('0x10'));var as=require(_0x2d5b('0x11'));var hardwareService=require(_0x2d5b('0x12'));var logger=require(_0x2d5b('0x13'))(_0x2d5b('0x14'));var utils=require(_0x2d5b('0x15'));var config=require(_0x2d5b('0x16'));var licenseUtil=require(_0x2d5b('0x17'));var db=require(_0x2d5b('0x18'))['db'];function respondWithStatusCode(_0x594fad,_0x4a45b6){_0x4a45b6=_0x4a45b6||0xcc;return function(_0x327b75){if(_0x327b75){return _0x594fad[_0x2d5b('0x19')](_0x4a45b6);}return _0x594fad[_0x2d5b('0x1a')](_0x4a45b6)[_0x2d5b('0x1b')]();};}function respondWithResult(_0x40ec2c,_0x461969){_0x461969=_0x461969||0xc8;return function(_0x48d993){if(_0x48d993){return _0x40ec2c[_0x2d5b('0x1a')](_0x461969)['json'](_0x48d993);}};}function respondWithFilteredResult(_0x1a5624,_0x3ffe86){return function(_0x5e22bf){if(_0x5e22bf){var _0x1c5ee6=typeof _0x3ffe86[_0x2d5b('0x1c')]==='undefined'&&typeof _0x3ffe86[_0x2d5b('0x1d')]===_0x2d5b('0x1e');var _0x4cecb5=_0x5e22bf[_0x2d5b('0x1f')];var _0x2d4715=_0x1c5ee6?0x0:_0x3ffe86[_0x2d5b('0x1c')];var _0x8c32cc=_0x1c5ee6?_0x5e22bf[_0x2d5b('0x1f')]:_0x3ffe86[_0x2d5b('0x1c')]+_0x3ffe86[_0x2d5b('0x1d')];var _0x4f81db;if(_0x8c32cc>=_0x4cecb5){_0x8c32cc=_0x4cecb5;_0x4f81db=0xc8;}else{_0x4f81db=0xce;}_0x1a5624[_0x2d5b('0x1a')](_0x4f81db);return _0x1a5624[_0x2d5b('0x20')](_0x2d5b('0x21'),_0x2d4715+'-'+_0x8c32cc+'/'+_0x4cecb5)[_0x2d5b('0x22')](_0x5e22bf);}return null;};}function patchUpdates(_0x4a5201){return function(_0x13a713){try{jsonpatch['apply'](_0x13a713,_0x4a5201,!![]);}catch(_0xc3bd09){return BPromise[_0x2d5b('0x23')](_0xc3bd09);}return _0x13a713[_0x2d5b('0x24')]();};}function saveUpdates(_0x1f4902,_0x4521b3){return function(_0x52cd78){if(_0x52cd78){return _0x52cd78[_0x2d5b('0x25')](_0x1f4902)[_0x2d5b('0x26')](function(_0x5e93a5){return _0x5e93a5;});}return null;};}function removeEntity(_0x4e8372,_0x30336e){return function(_0x3089ac){if(_0x3089ac){return _0x3089ac['destroy']()['then'](function(){_0x4e8372[_0x2d5b('0x1a')](0xcc)[_0x2d5b('0x1b')]();});}};}function handleEntityNotFound(_0x52363c,_0x1cb328){return function(_0x1ce508){if(!_0x1ce508){_0x52363c[_0x2d5b('0x19')](0x194);}return _0x1ce508;};}function handleError(_0x110207,_0x365d82){_0x365d82=_0x365d82||0x1f4;return function(_0x51e47c){logger['error'](_0x51e47c[_0x2d5b('0x27')]);if(_0x51e47c[_0x2d5b('0x28')]){delete _0x51e47c[_0x2d5b('0x28')];}_0x110207[_0x2d5b('0x1a')](_0x365d82)[_0x2d5b('0x29')](_0x51e47c);};}exports['index']=function(_0x8e8fbc,_0x3a3966){var _0x3e30ae={},_0x2254d0={},_0x57a897={'count':0x0,'rows':[]};var _0x4c95ee=_[_0x2d5b('0x2a')](db[_0x2d5b('0x2b')][_0x2d5b('0x2c')],function(_0x19058e){return{'name':_0x19058e[_0x2d5b('0x2d')],'type':_0x19058e[_0x2d5b('0x2e')][_0x2d5b('0x2f')]};});_0x2254d0[_0x2d5b('0x30')]=_['map'](_0x4c95ee,_0x2d5b('0x28'));_0x2254d0['query']=_[_0x2d5b('0x31')](_0x8e8fbc[_0x2d5b('0x32')]);_0x2254d0['filters']=_[_0x2d5b('0x33')](_0x2254d0[_0x2d5b('0x30')],_0x2254d0[_0x2d5b('0x32')]);_0x3e30ae[_0x2d5b('0x34')]=_[_0x2d5b('0x33')](_0x2254d0[_0x2d5b('0x30')],qs['fields'](_0x8e8fbc[_0x2d5b('0x32')]['fields']));_0x3e30ae['attributes']=_0x3e30ae['attributes'][_0x2d5b('0x35')]?_0x3e30ae[_0x2d5b('0x34')]:_0x2254d0[_0x2d5b('0x30')];if(!_0x8e8fbc[_0x2d5b('0x32')][_0x2d5b('0x36')](_0x2d5b('0x37'))){_0x3e30ae[_0x2d5b('0x1d')]=qs['limit'](_0x8e8fbc['query'][_0x2d5b('0x1d')]);_0x3e30ae[_0x2d5b('0x1c')]=qs[_0x2d5b('0x1c')](_0x8e8fbc['query'][_0x2d5b('0x1c')]);}_0x3e30ae[_0x2d5b('0x38')]=qs['sort'](_0x8e8fbc[_0x2d5b('0x32')][_0x2d5b('0x39')]);_0x3e30ae[_0x2d5b('0x3a')]=qs[_0x2d5b('0x3b')](_['pick'](_0x8e8fbc['query'],_0x2254d0[_0x2d5b('0x3b')]),_0x4c95ee);if(_0x8e8fbc['query'][_0x2d5b('0x3c')]){_0x3e30ae[_0x2d5b('0x3a')]=_[_0x2d5b('0x3d')](_0x3e30ae[_0x2d5b('0x3a')],{'$or':_[_0x2d5b('0x2a')](_0x4c95ee,function(_0x292d02){if(_0x292d02[_0x2d5b('0x2e')]!==_0x2d5b('0x3e')){var _0x24b0e7={};_0x24b0e7[_0x292d02['name']]={'$like':'%'+_0x8e8fbc[_0x2d5b('0x32')]['filter']+'%'};return _0x24b0e7;}})});}_0x3e30ae=_[_0x2d5b('0x3d')]({},_0x3e30ae,_0x8e8fbc[_0x2d5b('0x3f')]);var _0x3bc415={'where':_0x3e30ae[_0x2d5b('0x3a')]};return db[_0x2d5b('0x2b')][_0x2d5b('0x1f')](_0x3bc415)[_0x2d5b('0x26')](function(_0xa324c4){_0x57a897[_0x2d5b('0x1f')]=_0xa324c4;if(_0x8e8fbc[_0x2d5b('0x32')]['includeAll']){_0x3e30ae[_0x2d5b('0x40')]=[{'all':!![]}];}return db[_0x2d5b('0x2b')]['findAll'](_0x3e30ae);})[_0x2d5b('0x26')](function(_0x28302e){_0x57a897['rows']=_0x28302e;return _0x57a897;})[_0x2d5b('0x26')](respondWithFilteredResult(_0x3a3966,_0x3e30ae))[_0x2d5b('0x41')](handleError(_0x3a3966,null));};exports[_0x2d5b('0x42')]=function(_0x3aa43d,_0x39786b){var _0x1187ca={'raw':!![],'where':{'id':_0x3aa43d[_0x2d5b('0x43')]['id']}},_0x4129c8={};_0x4129c8['model']=_[_0x2d5b('0x31')](db[_0x2d5b('0x2b')]['rawAttributes']);_0x4129c8[_0x2d5b('0x32')]=_[_0x2d5b('0x31')](_0x3aa43d[_0x2d5b('0x32')]);_0x4129c8['filters']=_[_0x2d5b('0x33')](_0x4129c8[_0x2d5b('0x30')],_0x4129c8[_0x2d5b('0x32')]);_0x1187ca[_0x2d5b('0x34')]=_['intersection'](_0x4129c8[_0x2d5b('0x30')],qs['fields'](_0x3aa43d['query'][_0x2d5b('0x44')]));_0x1187ca[_0x2d5b('0x34')]=_0x1187ca[_0x2d5b('0x34')]['length']?_0x1187ca[_0x2d5b('0x34')]:_0x4129c8['model'];if(_0x3aa43d[_0x2d5b('0x32')]['includeAll']){_0x1187ca[_0x2d5b('0x40')]=[{'all':!![]}];}_0x1187ca=_[_0x2d5b('0x3d')]({},_0x1187ca,_0x3aa43d[_0x2d5b('0x3f')]);return db[_0x2d5b('0x2b')][_0x2d5b('0x45')](_0x1187ca)[_0x2d5b('0x26')](handleEntityNotFound(_0x39786b,null))[_0x2d5b('0x26')](respondWithResult(_0x39786b,null))['catch'](handleError(_0x39786b,null));};exports[_0x2d5b('0x46')]=function(_0x157262,_0x35d1d6){return db[_0x2d5b('0x2b')][_0x2d5b('0x46')](_0x157262[_0x2d5b('0x47')],{})[_0x2d5b('0x26')](respondWithResult(_0x35d1d6,0xc9))[_0x2d5b('0x41')](handleError(_0x35d1d6,null));};exports[_0x2d5b('0x25')]=function(_0x5a5d28,_0x40ee6b){if(_0x5a5d28[_0x2d5b('0x47')]['id']){delete _0x5a5d28[_0x2d5b('0x47')]['id'];}return db[_0x2d5b('0x2b')]['find']({'where':{'id':_0x5a5d28[_0x2d5b('0x43')]['id']}})[_0x2d5b('0x26')](handleEntityNotFound(_0x40ee6b,null))['then'](saveUpdates(_0x5a5d28['body'],null))[_0x2d5b('0x26')](respondWithResult(_0x40ee6b,null))[_0x2d5b('0x41')](handleError(_0x40ee6b,null));};exports[_0x2d5b('0x48')]=function(_0x325f07,_0x4d246e){return db[_0x2d5b('0x2b')]['find']({'where':{'id':_0x325f07['params']['id']}})[_0x2d5b('0x26')](handleEntityNotFound(_0x4d246e,null))[_0x2d5b('0x26')](removeEntity(_0x4d246e,null))[_0x2d5b('0x41')](handleError(_0x4d246e,null));};exports[_0x2d5b('0x49')]=function(_0x5b6dd2,_0xa8f865){return db[_0x2d5b('0x2b')][_0x2d5b('0x49')]()['then'](respondWithResult(_0xa8f865,null))[_0x2d5b('0x41')](handleError(_0xa8f865,null));};
\ No newline at end of file
index a10aee0..a6f2f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f5=['../../config/logger','api','moment','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe8f5,0xc1));var _0x5e8f=function(_0x13e874,_0x3c4091){_0x13e874=_0x13e874-0x0;var _0x2b004d=_0xe8f5[_0x13e874];return _0x2b004d;};'use strict';var _=require(_0x5e8f('0x0'));var util=require(_0x5e8f('0x1'));var logger=require(_0x5e8f('0x2'))(_0x5e8f('0x3'));var moment=require(_0x5e8f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5e8f('0x5'));var rimraf=require(_0x5e8f('0x6'));var config=require(_0x5e8f('0x7'));var attributes=require(_0x5e8f('0x8'));module[_0x5e8f('0x9')]=function(_0x5f139d,_0x431351){return _0x5f139d[_0x5e8f('0xa')](_0x5e8f('0xb'),attributes,{'tableName':_0x5e8f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x150d=['bluebird','rimraf','exports','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','moment'];(function(_0x12d033,_0x25fa2f){var _0x3b4e80=function(_0x46c1f4){while(--_0x46c1f4){_0x12d033['push'](_0x12d033['shift']());}};_0x3b4e80(++_0x25fa2f);}(_0x150d,0x1ef));var _0xd150=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0x150d[_0x5c619e];return _0x445cf8;};'use strict';var _=require(_0xd150('0x0'));var util=require(_0xd150('0x1'));var logger=require(_0xd150('0x2'))(_0xd150('0x3'));var moment=require(_0xd150('0x4'));var BPromise=require(_0xd150('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd150('0x6'));var config=require('../../config/environment');var attributes=require('./jscriptyAnswerReport.attributes');module[_0xd150('0x7')]=function(_0x314aad,_0x38cadb){return _0x314aad['define'](_0xd150('0x8'),attributes,{'tableName':_0xd150('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2660e12..4fbc897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e20=['rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x375ac0,_0x53af74){var _0x3b4833=function(_0x2d5b82){while(--_0x2d5b82){_0x375ac0['push'](_0x375ac0['shift']());}};_0x3b4833(++_0x53af74);}(_0x7e20,0x187));var _0x07e2=function(_0x130264,_0x4ec074){_0x130264=_0x130264-0x0;var _0x52b3a5=_0x7e20[_0x130264];return _0x52b3a5;};'use strict';var _=require(_0x07e2('0x0'));var util=require(_0x07e2('0x1'));var moment=require(_0x07e2('0x2'));var BPromise=require(_0x07e2('0x3'));var rs=require(_0x07e2('0x4'));var fs=require('fs');var Redis=require(_0x07e2('0x5'));var db=require(_0x07e2('0x6'))['db'];var utils=require(_0x07e2('0x7'));var logger=require(_0x07e2('0x8'))(_0x07e2('0x9'));var config=require(_0x07e2('0xa'));var jayson=require(_0x07e2('0xb'));var client=jayson[_0x07e2('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f65e5,_0x3f3cac,_0x4295ce){return new BPromise(function(_0x576990,_0x33de67){return client[_0x07e2('0xd')](_0x1f65e5,_0x4295ce)[_0x07e2('0xe')](function(_0x5833b6){logger[_0x07e2('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3f3cac,_0x07e2('0x10'));logger[_0x07e2('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x3f3cac,_0x07e2('0x10'),JSON[_0x07e2('0x12')](_0x5833b6));if(_0x5833b6[_0x07e2('0x13')]){if(_0x5833b6[_0x07e2('0x13')][_0x07e2('0x14')]===0x1f4){logger[_0x07e2('0x13')](_0x07e2('0x15'),_0x3f3cac,_0x5833b6[_0x07e2('0x13')][_0x07e2('0x16')]);return _0x33de67(_0x5833b6['error'][_0x07e2('0x16')]);}logger[_0x07e2('0x13')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3f3cac,_0x5833b6['error'][_0x07e2('0x16')]);return _0x576990(_0x5833b6[_0x07e2('0x13')][_0x07e2('0x16')]);}else{logger[_0x07e2('0xf')](_0x07e2('0x15'),_0x3f3cac,_0x07e2('0x10'));_0x576990(_0x5833b6[_0x07e2('0x17')][_0x07e2('0x16')]);}})[_0x07e2('0x18')](function(_0x1f6e30){logger[_0x07e2('0x13')](_0x07e2('0x15'),_0x3f3cac,_0x1f6e30);_0x33de67(_0x1f6e30);});});}
\ No newline at end of file
+var _0x15da=['catch','lodash','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x15da,0x1e4));var _0xa15d=function(_0x33e864,_0x2d8439){_0x33e864=_0x33e864-0x0;var _0x1787d7=_0x15da[_0x33e864];return _0x1787d7;};'use strict';var _=require(_0xa15d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa15d('0x1'));var rs=require(_0xa15d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa15d('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa15d('0x4'));var config=require('../../config/environment');var jayson=require(_0xa15d('0x5'));var client=jayson[_0xa15d('0x6')][_0xa15d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1503f7,_0x5070bc,_0x4391b4){return new BPromise(function(_0x3367c2,_0x2ea630){return client[_0xa15d('0x8')](_0x1503f7,_0x4391b4)[_0xa15d('0x9')](function(_0x5c4e2a){logger['info'](_0xa15d('0xa'),_0x5070bc,_0xa15d('0xb'));logger[_0xa15d('0xc')](_0xa15d('0xd'),_0x5070bc,_0xa15d('0xb'),JSON[_0xa15d('0xe')](_0x5c4e2a));if(_0x5c4e2a[_0xa15d('0xf')]){if(_0x5c4e2a[_0xa15d('0xf')][_0xa15d('0x10')]===0x1f4){logger['error'](_0xa15d('0xa'),_0x5070bc,_0x5c4e2a[_0xa15d('0xf')]['message']);return _0x2ea630(_0x5c4e2a[_0xa15d('0xf')][_0xa15d('0x11')]);}logger['error'](_0xa15d('0xa'),_0x5070bc,_0x5c4e2a[_0xa15d('0xf')]['message']);return _0x3367c2(_0x5c4e2a[_0xa15d('0xf')]['message']);}else{logger[_0xa15d('0x12')](_0xa15d('0xa'),_0x5070bc,_0xa15d('0xb'));_0x3367c2(_0x5c4e2a[_0xa15d('0x13')]['message']);}})[_0xa15d('0x14')](function(_0x449666){logger[_0xa15d('0xf')](_0xa15d('0xa'),_0x5070bc,_0x449666);_0x2ea630(_0x449666);});});}
\ No newline at end of file
index 1a47700..b333c41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe474=['index','isAuthenticated','get','/:id/sessions','/:id/answers','getAnswers','/:id/summary','post','create','/:id/clone','clone','put','/:id','update','destroy','exports','multer','path','express','../../components/auth/service','../../config/environment','./jscriptyProject.controller'];(function(_0xd0ff04,_0x1e4dd6){var _0x2da6eb=function(_0x1a99fd){while(--_0x1a99fd){_0xd0ff04['push'](_0xd0ff04['shift']());}};_0x2da6eb(++_0x1e4dd6);}(_0xe474,0x1f4));var _0x4e47=function(_0x4992bc,_0x57ff33){_0x4992bc=_0x4992bc-0x0;var _0x1fbcfd=_0xe474[_0x4992bc];return _0x1fbcfd;};'use strict';var multer=require(_0x4e47('0x0'));var util=require('util');var path=require(_0x4e47('0x1'));var timeout=require('connect-timeout');var express=require(_0x4e47('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4e47('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x4e47('0x4'));var controller=require(_0x4e47('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x4e47('0x6')]);router['get']('/:id',auth[_0x4e47('0x7')](),controller['show']);router[_0x4e47('0x8')](_0x4e47('0x9'),auth[_0x4e47('0x7')](),controller['getSessions']);router['get'](_0x4e47('0xa'),auth[_0x4e47('0x7')](),controller[_0x4e47('0xb')]);router[_0x4e47('0x8')](_0x4e47('0xc'),auth[_0x4e47('0x7')](),timeout('30s'),controller['getSummary']);router[_0x4e47('0xd')]('/',auth[_0x4e47('0x7')](),controller[_0x4e47('0xe')]);router[_0x4e47('0xd')](_0x4e47('0xf'),auth[_0x4e47('0x7')](),controller[_0x4e47('0x10')]);router[_0x4e47('0x11')](_0x4e47('0x12'),auth[_0x4e47('0x7')](),controller[_0x4e47('0x13')]);router['delete']('/:id',auth[_0x4e47('0x7')](),controller[_0x4e47('0x14')]);module[_0x4e47('0x15')]=router;
\ No newline at end of file
+var _0x7371=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','/:id','show','/:id/sessions','getSessions','/:id/answers','/:id/summary','30s','getSummary','post','create','put','update','destroy','multer','util'];(function(_0x2b9caf,_0x5e9ddc){var _0x175b9f=function(_0x5cac1c){while(--_0x5cac1c){_0x2b9caf['push'](_0x2b9caf['shift']());}};_0x175b9f(++_0x5e9ddc);}(_0x7371,0x136));var _0x1737=function(_0x5417a1,_0x1db50a){_0x5417a1=_0x5417a1-0x0;var _0x54bbb9=_0x7371[_0x5417a1];return _0x54bbb9;};'use strict';var multer=require(_0x1737('0x0'));var util=require(_0x1737('0x1'));var path=require(_0x1737('0x2'));var timeout=require(_0x1737('0x3'));var express=require('express');var router=express[_0x1737('0x4')]();var fs_extra=require(_0x1737('0x5'));var auth=require(_0x1737('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1737('0x7'));var controller=require(_0x1737('0x8'));router[_0x1737('0x9')]('/',auth[_0x1737('0xa')](),controller['index']);router['get'](_0x1737('0xb'),auth['isAuthenticated'](),controller[_0x1737('0xc')]);router['get'](_0x1737('0xd'),auth[_0x1737('0xa')](),controller[_0x1737('0xe')]);router[_0x1737('0x9')](_0x1737('0xf'),auth[_0x1737('0xa')](),controller['getAnswers']);router[_0x1737('0x9')](_0x1737('0x10'),auth[_0x1737('0xa')](),timeout(_0x1737('0x11')),controller[_0x1737('0x12')]);router[_0x1737('0x13')]('/',auth[_0x1737('0xa')](),controller[_0x1737('0x14')]);router[_0x1737('0x13')]('/:id/clone',auth[_0x1737('0xa')](),controller['clone']);router[_0x1737('0x15')](_0x1737('0xb'),auth[_0x1737('0xa')](),controller[_0x1737('0x16')]);router['delete']('/:id',auth[_0x1737('0xa')](),controller[_0x1737('0x17')]);module['exports']=router;
\ No newline at end of file
index 67b8a73..0fcc7f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0734=['util','exports','name','STRING','TEXT','long','setDataValue','stringify','isString','formData','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','sequelize','lodash'];(function(_0x2015a7,_0x35f2cd){var _0x64c71a=function(_0x5aaaee){while(--_0x5aaaee){_0x2015a7['push'](_0x2015a7['shift']());}};_0x64c71a(++_0x35f2cd);}(_0x0734,0x1b1));var _0x4073=function(_0x556848,_0x4bb1e3){_0x556848=_0x556848-0x0;var _0x95dbd9=_0x0734[_0x556848];return _0x95dbd9;};'use strict';var Sequelize=require(_0x4073('0x0'));var _=require(_0x4073('0x1'));var util=require(_0x4073('0x2'));module[_0x4073('0x3')]={'name':{'type':Sequelize['STRING'],'unique':_0x4073('0x4')},'description':{'type':Sequelize[_0x4073('0x5')]},'formData':{'type':Sequelize[_0x4073('0x6')](_0x4073('0x7')),'set':function(_0x5ae811){if(_['isObjectLike'](_0x5ae811)){this[_0x4073('0x8')]('formData',JSON[_0x4073('0x9')](_0x5ae811));}else if(_[_0x4073('0xa')](_0x5ae811)){this[_0x4073('0x8')](_0x4073('0xb'),_0x5ae811);}else{this[_0x4073('0x8')](_0x4073('0xb'),util['format'](_0x4073('0xc'),this[_0x4073('0xd')]('name')||'',this[_0x4073('0xd')](_0x4073('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd2f2=['getDataValue','description','BOOLEAN','sequelize','util','exports','STRING','name','long','isObjectLike','stringify','isString','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0xd2f2,0x1d4));var _0x2d2f=function(_0x290a36,_0x561046){_0x290a36=_0x290a36-0x0;var _0xc59237=_0xd2f2[_0x290a36];return _0xc59237;};'use strict';var Sequelize=require(_0x2d2f('0x0'));var _=require('lodash');var util=require(_0x2d2f('0x1'));module[_0x2d2f('0x2')]={'name':{'type':Sequelize[_0x2d2f('0x3')],'unique':_0x2d2f('0x4')},'description':{'type':Sequelize[_0x2d2f('0x3')]},'formData':{'type':Sequelize['TEXT'](_0x2d2f('0x5')),'set':function(_0x355466){if(_[_0x2d2f('0x6')](_0x355466)){this['setDataValue']('formData',JSON[_0x2d2f('0x7')](_0x355466));}else if(_[_0x2d2f('0x8')](_0x355466)){this['setDataValue'](_0x2d2f('0x9'),_0x355466);}else{this['setDataValue'](_0x2d2f('0x9'),util[_0x2d2f('0xa')](_0x2d2f('0xb'),this['getDataValue']('name')||'',this[_0x2d2f('0xc')](_0x2d2f('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x2d2f('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x2d2f('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 262acc3..0909e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf15d=['ProjectId','JscriptySessionReport','getAnswers','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Content-type','text/csv','download','eml-format','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','save','update','then','get','Projects','UserProfileResource','destroy','stack','name','send','index','JscriptyProject','rawAttributes','fieldName','type','key','map','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','count','includeAll','findAll','rows','catch','show','keys','include','role','user','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','create','findOne','pick'];(function(_0xf0d819,_0x28ff27){var _0x4e4a57=function(_0x377b94){while(--_0x377b94){_0xf0d819['push'](_0xf0d819['shift']());}};_0x4e4a57(++_0x28ff27);}(_0xf15d,0x113));var _0xdf15=function(_0x680446,_0x534cc5){_0x680446=_0x680446-0x0;var _0x51f696=_0xf15d[_0x680446];return _0x51f696;};'use strict';var emlformat=require(_0xdf15('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdf15('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdf15('0x2'));var BPromise=require(_0xdf15('0x3'));var Mustache=require(_0xdf15('0x4'));var util=require(_0xdf15('0x5'));var path=require('path');var sox=require(_0xdf15('0x6'));var csv=require(_0xdf15('0x7'));var ejs=require(_0xdf15('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdf15('0x9'));var squel=require(_0xdf15('0xa'));var crypto=require(_0xdf15('0xb'));var jsforce=require(_0xdf15('0xc'));var deskjs=require(_0xdf15('0xd'));var toCsv=require(_0xdf15('0x7'));var querystring=require(_0xdf15('0xe'));var Papa=require(_0xdf15('0xf'));var Redis=require(_0xdf15('0x10'));var authService=require(_0xdf15('0x11'));var qs=require(_0xdf15('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdf15('0x13'));var logger=require(_0xdf15('0x14'))(_0xdf15('0x15'));var utils=require(_0xdf15('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f6f9e,_0x291a62){_0x291a62=_0x291a62||0xcc;return function(_0x375f2c){if(_0x375f2c){return _0x1f6f9e[_0xdf15('0x17')](_0x291a62);}return _0x1f6f9e[_0xdf15('0x18')](_0x291a62)[_0xdf15('0x19')]();};}function respondWithResult(_0x567a78,_0x248809){_0x248809=_0x248809||0xc8;return function(_0x1a66aa){if(_0x1a66aa){return _0x567a78['status'](_0x248809)[_0xdf15('0x1a')](_0x1a66aa);}};}function respondWithFilteredResult(_0x5bdd70,_0x3577d7){return function(_0x4a6222){if(_0x4a6222){var _0xbd1de2=typeof _0x3577d7['offset']===_0xdf15('0x1b')&&typeof _0x3577d7[_0xdf15('0x1c')]===_0xdf15('0x1b');var _0x5349aa=_0x4a6222['count'];var _0x3c1a45=_0xbd1de2?0x0:_0x3577d7[_0xdf15('0x1d')];var _0x2b3496=_0xbd1de2?_0x4a6222['count']:_0x3577d7[_0xdf15('0x1d')]+_0x3577d7[_0xdf15('0x1c')];var _0x843fec;if(_0x2b3496>=_0x5349aa){_0x2b3496=_0x5349aa;_0x843fec=0xc8;}else{_0x843fec=0xce;}_0x5bdd70[_0xdf15('0x18')](_0x843fec);return _0x5bdd70[_0xdf15('0x1e')](_0xdf15('0x1f'),_0x3c1a45+'-'+_0x2b3496+'/'+_0x5349aa)['json'](_0x4a6222);}return null;};}function patchUpdates(_0x32f2f4){return function(_0x1d3d3a){try{jsonpatch[_0xdf15('0x20')](_0x1d3d3a,_0x32f2f4,!![]);}catch(_0x1bae91){return BPromise['reject'](_0x1bae91);}return _0x1d3d3a[_0xdf15('0x21')]();};}function saveUpdates(_0x48bcfe,_0x169704){return function(_0x2b4d8a){if(_0x2b4d8a){return _0x2b4d8a[_0xdf15('0x22')](_0x48bcfe)['then'](function(_0x365bad){return _0x365bad;});}return null;};}function removeEntity(_0x517182,_0x30c03){return function(_0x5059d8){if(_0x5059d8){return _0x5059d8['destroy']()[_0xdf15('0x23')](function(){var _0x4b7b91=_0x5059d8[_0xdf15('0x24')]({'plain':!![]});var _0x5099e4=_0xdf15('0x25');return db[_0xdf15('0x26')][_0xdf15('0x27')]({'where':{'type':_0x5099e4,'resourceId':_0x4b7b91['id']}})[_0xdf15('0x23')](function(){return _0x5059d8;});})[_0xdf15('0x23')](function(){_0x517182[_0xdf15('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x518101,_0x1f9adc){return function(_0x208801){if(!_0x208801){_0x518101[_0xdf15('0x17')](0x194);}return _0x208801;};}function handleError(_0x2a75c7,_0x351b55){_0x351b55=_0x351b55||0x1f4;return function(_0x5e95b1){logger['error'](_0x5e95b1[_0xdf15('0x28')]);if(_0x5e95b1[_0xdf15('0x29')]){delete _0x5e95b1[_0xdf15('0x29')];}_0x2a75c7['status'](_0x351b55)[_0xdf15('0x2a')](_0x5e95b1);};}exports[_0xdf15('0x2b')]=function(_0x271d31,_0x20e972){var _0x4861c5={},_0x1a4e26={},_0x254189={'count':0x0,'rows':[]};var _0x1df0b1=_['map'](db[_0xdf15('0x2c')][_0xdf15('0x2d')],function(_0x277edb){return{'name':_0x277edb[_0xdf15('0x2e')],'type':_0x277edb[_0xdf15('0x2f')][_0xdf15('0x30')]};});_0x1a4e26['model']=_[_0xdf15('0x31')](_0x1df0b1,_0xdf15('0x29'));_0x1a4e26[_0xdf15('0x32')]=_['keys'](_0x271d31[_0xdf15('0x32')]);_0x1a4e26[_0xdf15('0x33')]=_[_0xdf15('0x34')](_0x1a4e26['model'],_0x1a4e26[_0xdf15('0x32')]);_0x4861c5[_0xdf15('0x35')]=_[_0xdf15('0x34')](_0x1a4e26[_0xdf15('0x36')],qs[_0xdf15('0x37')](_0x271d31[_0xdf15('0x32')]['fields']));_0x4861c5[_0xdf15('0x35')]=_0x4861c5[_0xdf15('0x35')][_0xdf15('0x38')]?_0x4861c5[_0xdf15('0x35')]:_0x1a4e26[_0xdf15('0x36')];if(!_0x271d31[_0xdf15('0x32')][_0xdf15('0x39')](_0xdf15('0x3a'))){_0x4861c5[_0xdf15('0x1c')]=qs[_0xdf15('0x1c')](_0x271d31[_0xdf15('0x32')]['limit']);_0x4861c5[_0xdf15('0x1d')]=qs[_0xdf15('0x1d')](_0x271d31['query'][_0xdf15('0x1d')]);}_0x4861c5[_0xdf15('0x3b')]=qs[_0xdf15('0x3c')](_0x271d31[_0xdf15('0x32')][_0xdf15('0x3c')]);_0x4861c5[_0xdf15('0x3d')]=qs[_0xdf15('0x33')](_['pick'](_0x271d31[_0xdf15('0x32')],_0x1a4e26[_0xdf15('0x33')]),_0x1df0b1);if(_0x271d31[_0xdf15('0x32')]['filter']){_0x4861c5[_0xdf15('0x3d')]=_[_0xdf15('0x3e')](_0x4861c5[_0xdf15('0x3d')],{'$or':_[_0xdf15('0x31')](_0x1df0b1,function(_0x131df3){if(_0x131df3[_0xdf15('0x2f')]!=='VIRTUAL'){var _0x517c70={};_0x517c70[_0x131df3[_0xdf15('0x29')]]={'$like':'%'+_0x271d31[_0xdf15('0x32')][_0xdf15('0x3f')]+'%'};return _0x517c70;}})});}_0x4861c5=_['merge']({},_0x4861c5,_0x271d31[_0xdf15('0x40')]);var _0x161de3={'where':_0x4861c5['where']};return db[_0xdf15('0x2c')][_0xdf15('0x41')](_0x161de3)[_0xdf15('0x23')](function(_0x573b99){_0x254189[_0xdf15('0x41')]=_0x573b99;if(_0x271d31['query'][_0xdf15('0x42')]){_0x4861c5['include']=[{'all':!![]}];}return db[_0xdf15('0x2c')][_0xdf15('0x43')](_0x4861c5);})[_0xdf15('0x23')](function(_0x2fb1cf){_0x254189[_0xdf15('0x44')]=_0x2fb1cf;return _0x254189;})[_0xdf15('0x23')](respondWithFilteredResult(_0x20e972,_0x4861c5))[_0xdf15('0x45')](handleError(_0x20e972,null));};exports[_0xdf15('0x46')]=function(_0x541c59,_0x262a29){var _0x1eb4f7={'raw':![],'where':{'id':_0x541c59['params']['id']}},_0x2d29f0={};_0x2d29f0[_0xdf15('0x36')]=_['keys'](db['JscriptyProject'][_0xdf15('0x2d')]);_0x2d29f0[_0xdf15('0x32')]=_[_0xdf15('0x47')](_0x541c59[_0xdf15('0x32')]);_0x2d29f0[_0xdf15('0x33')]=_[_0xdf15('0x34')](_0x2d29f0[_0xdf15('0x36')],_0x2d29f0[_0xdf15('0x32')]);_0x1eb4f7[_0xdf15('0x35')]=_[_0xdf15('0x34')](_0x2d29f0[_0xdf15('0x36')],qs[_0xdf15('0x37')](_0x541c59[_0xdf15('0x32')][_0xdf15('0x37')]));_0x1eb4f7[_0xdf15('0x35')]=_0x1eb4f7['attributes'][_0xdf15('0x38')]?_0x1eb4f7[_0xdf15('0x35')]:_0x2d29f0[_0xdf15('0x36')];if(_0x541c59[_0xdf15('0x32')][_0xdf15('0x42')]){_0x1eb4f7[_0xdf15('0x48')]=[{'all':!![]}];}_0x1eb4f7=_[_0xdf15('0x3e')]({},_0x1eb4f7,_0x541c59[_0xdf15('0x40')]);return db['JscriptyProject']['find'](_0x1eb4f7)['then'](handleEntityNotFound(_0x262a29,null))[_0xdf15('0x23')](respondWithResult(_0x262a29,null))[_0xdf15('0x45')](handleError(_0x262a29,null));};exports['create']=function(_0x37968f,_0x30a18b){return db[_0xdf15('0x2c')]['create'](_0x37968f['body'],{})[_0xdf15('0x23')](function(_0x3ffb9c){var _0x3930a1=_0x37968f['user'][_0xdf15('0x24')]({'plain':!![]});if(!_0x3930a1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3930a1[_0xdf15('0x49')]===_0xdf15('0x4a')){var _0x58b47b=_0x3ffb9c[_0xdf15('0x24')]({'plain':!![]});var _0x27abbb=_0xdf15('0x25');return db[_0xdf15('0x4b')][_0xdf15('0x4c')]({'where':{'name':_0x27abbb,'userProfileId':_0x3930a1[_0xdf15('0x4d')]},'raw':!![]})[_0xdf15('0x23')](function(_0x5c9ca0){if(_0x5c9ca0&&_0x5c9ca0[_0xdf15('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x58b47b[_0xdf15('0x29')],'resourceId':_0x58b47b['id'],'type':_0x5c9ca0['name'],'sectionId':_0x5c9ca0['id']},{})[_0xdf15('0x23')](function(){return _0x3ffb9c;});}else{return _0x3ffb9c;}})[_0xdf15('0x45')](function(_0x223a99){logger[_0xdf15('0x4f')](_0xdf15('0x50'),_0x223a99);throw _0x223a99;});}return _0x3ffb9c;})[_0xdf15('0x23')](respondWithResult(_0x30a18b,0xc9))[_0xdf15('0x45')](handleError(_0x30a18b,null));};exports[_0xdf15('0x51')]=function(_0x4c0e64,_0x2f5eff){var _0x14a4cd={'where':{'id':_0x4c0e64[_0xdf15('0x52')]['id']}},_0x126860={};_0x126860[_0xdf15('0x36')]=_['keys'](db['JscriptyProject']['rawAttributes']);_0x14a4cd[_0xdf15('0x35')]=_[_0xdf15('0x34')](_0x126860[_0xdf15('0x36')],qs['fields'](_0x4c0e64[_0xdf15('0x32')][_0xdf15('0x37')]));_0x14a4cd[_0xdf15('0x35')]=_0x14a4cd[_0xdf15('0x35')][_0xdf15('0x38')]?_0x14a4cd[_0xdf15('0x35')]:_0x126860[_0xdf15('0x36')];if(_0x4c0e64[_0xdf15('0x32')][_0xdf15('0x42')]){_0x14a4cd[_0xdf15('0x48')]=[{'all':!![]}];}_0x14a4cd=_[_0xdf15('0x3e')]({},_0x14a4cd,_0x4c0e64[_0xdf15('0x40')]);return db[_0xdf15('0x2c')]['find'](_0x14a4cd)[_0xdf15('0x23')](handleEntityNotFound(_0x2f5eff,null))[_0xdf15('0x23')](function(_0x45f1a9){if(_0x45f1a9){var _0x2a2f35=_0x45f1a9[_0xdf15('0x24')]({'plain':!![]});_0x2a2f35=qs[_0xdf15('0x53')](_0x2a2f35,['id',_0xdf15('0x54'),_0xdf15('0x55')]);_0x4c0e64[_0xdf15('0x56')]=_[_0xdf15('0x53')](_0x4c0e64['body'],['id',_0xdf15('0x54'),_0xdf15('0x55')]);return db['JscriptyProject']['create'](_[_0xdf15('0x3e')](_0x2a2f35,_0x4c0e64[_0xdf15('0x56')]),{'include':_0x4c0e64[_0xdf15('0x32')][_0xdf15('0x42')]?[{'all':!![]}]:undefined})[_0xdf15('0x23')](function(_0x127c53){var _0x3222dc=_0x4c0e64[_0xdf15('0x4a')]['get']({'plain':!![]});if(!_0x3222dc)throw new Error(_0xdf15('0x57'));if(_0x3222dc[_0xdf15('0x49')]===_0xdf15('0x4a')){var _0x50d429=_0x127c53[_0xdf15('0x24')]({'plain':!![]});var _0x2bcfef='Projects';return db[_0xdf15('0x4b')][_0xdf15('0x4c')]({'where':{'name':_0x2bcfef,'userProfileId':_0x3222dc[_0xdf15('0x4d')]},'raw':!![]})[_0xdf15('0x23')](function(_0x21555c){if(_0x21555c&&_0x21555c[_0xdf15('0x4e')]===0x0){return db[_0xdf15('0x26')][_0xdf15('0x58')]({'name':_0x50d429[_0xdf15('0x29')],'resourceId':_0x50d429['id'],'type':_0x21555c['name'],'sectionId':_0x21555c['id']},{})[_0xdf15('0x23')](function(){return _0x127c53;});}else{return _0x127c53;}})[_0xdf15('0x45')](function(_0x36622a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x36622a);throw _0x36622a;});}return _0x127c53;});}})[_0xdf15('0x23')](respondWithResult(_0x2f5eff,0xc9))[_0xdf15('0x45')](handleError(_0x2f5eff,null));};exports[_0xdf15('0x22')]=function(_0x23decc,_0x4b11e1){if(_0x23decc[_0xdf15('0x56')]['id']){delete _0x23decc[_0xdf15('0x56')]['id'];}return db[_0xdf15('0x2c')][_0xdf15('0x4c')]({'where':{'id':_0x23decc['params']['id']}})['then'](handleEntityNotFound(_0x4b11e1,null))['then'](saveUpdates(_0x23decc['body'],null))['then'](respondWithResult(_0x4b11e1,null))['catch'](handleError(_0x4b11e1,null));};exports[_0xdf15('0x27')]=function(_0x4f8d4e,_0xe5ae4f){return db[_0xdf15('0x2c')][_0xdf15('0x4c')]({'where':{'id':_0x4f8d4e[_0xdf15('0x52')]['id']}})[_0xdf15('0x23')](handleEntityNotFound(_0xe5ae4f,null))[_0xdf15('0x23')](removeEntity(_0xe5ae4f,null))[_0xdf15('0x45')](handleError(_0xe5ae4f,null));};exports['getSessions']=function(_0x3f2b17,_0x3df369,_0x5a04f4){var _0x3c74f2={'raw':!![],'where':{}};var _0x21affc={};var _0x243d64={'count':0x0,'rows':[]};return db[_0xdf15('0x2c')][_0xdf15('0x59')]({'where':{'id':_0x3f2b17['params']['id']}})[_0xdf15('0x23')](handleEntityNotFound(_0x3df369,null))[_0xdf15('0x23')](function(_0x30867d){if(_0x30867d){_0x21affc['model']=_[_0xdf15('0x47')](db['JscriptySessionReport']['rawAttributes']);_0x21affc['query']=_[_0xdf15('0x47')](_0x3f2b17[_0xdf15('0x32')]);_0x21affc['filters']=_[_0xdf15('0x34')](_0x21affc[_0xdf15('0x36')],_0x21affc[_0xdf15('0x32')]);_0x3c74f2[_0xdf15('0x35')]=_[_0xdf15('0x34')](_0x21affc[_0xdf15('0x36')],qs['fields'](_0x3f2b17[_0xdf15('0x32')][_0xdf15('0x37')]));_0x3c74f2['attributes']=_0x3c74f2[_0xdf15('0x35')]['length']?_0x3c74f2['attributes']:_0x21affc[_0xdf15('0x36')];if(!_0x3f2b17[_0xdf15('0x32')][_0xdf15('0x39')]('nolimit')){_0x3c74f2[_0xdf15('0x1c')]=qs[_0xdf15('0x1c')](_0x3f2b17[_0xdf15('0x32')]['limit']);_0x3c74f2[_0xdf15('0x1d')]=qs[_0xdf15('0x1d')](_0x3f2b17[_0xdf15('0x32')]['offset']);}_0x3c74f2[_0xdf15('0x3b')]=qs[_0xdf15('0x3c')](_0x3f2b17['query'][_0xdf15('0x3c')]);_0x3c74f2[_0xdf15('0x3d')]=qs['filters'](_[_0xdf15('0x5a')](_0x3f2b17[_0xdf15('0x32')],_0x21affc[_0xdf15('0x33')]));_0x3c74f2['where'][_0xdf15('0x5b')]=_0x30867d['id'];if(_0x3f2b17[_0xdf15('0x32')][_0xdf15('0x3f')]){_0x3c74f2[_0xdf15('0x3d')]=_[_0xdf15('0x3e')](_0x3c74f2[_0xdf15('0x3d')],{'$or':_['map'](_0x3c74f2['attributes'],function(_0xa17306){var _0x2df1bb={};_0x2df1bb[_0xa17306]={'$like':'%'+_0x3f2b17[_0xdf15('0x32')][_0xdf15('0x3f')]+'%'};return _0x2df1bb;})});}_0x3c74f2=_['merge']({},_0x3c74f2,_0x3f2b17[_0xdf15('0x40')]);return db['JscriptySessionReport'][_0xdf15('0x41')]({'where':_0x3c74f2[_0xdf15('0x3d')]})[_0xdf15('0x23')](function(_0x536dc3){_0x243d64[_0xdf15('0x41')]=_0x536dc3;if(_0x3f2b17[_0xdf15('0x32')]['includeAll']){_0x3c74f2['include']=[{'all':!![]}];}return db[_0xdf15('0x5c')][_0xdf15('0x43')](_0x3c74f2);})[_0xdf15('0x23')](function(_0x20f4b0){_0x243d64[_0xdf15('0x44')]=_0x20f4b0;return _0x243d64;});}})[_0xdf15('0x23')](respondWithFilteredResult(_0x3df369,_0x3c74f2))[_0xdf15('0x45')](handleError(_0x3df369,null));};exports[_0xdf15('0x5d')]=function(_0x3177fb,_0x240f14,_0x51dbcb){var _0x260231={'raw':!![],'where':{}};var _0x33fda9={};var _0x9833fd={'count':0x0,'rows':[]};return db[_0xdf15('0x2c')][_0xdf15('0x59')]({'where':{'id':_0x3177fb[_0xdf15('0x52')]['id']}})[_0xdf15('0x23')](handleEntityNotFound(_0x240f14,null))[_0xdf15('0x23')](function(_0x1c1223){if(_0x1c1223){_0x33fda9['model']=_['keys'](db[_0xdf15('0x5e')][_0xdf15('0x2d')]);_0x33fda9['query']=_[_0xdf15('0x47')](_0x3177fb[_0xdf15('0x32')]);_0x33fda9['filters']=_[_0xdf15('0x34')](_0x33fda9['model'],_0x33fda9['query']);_0x260231['attributes']=_[_0xdf15('0x34')](_0x33fda9['model'],qs[_0xdf15('0x37')](_0x3177fb[_0xdf15('0x32')][_0xdf15('0x37')]));_0x260231[_0xdf15('0x35')]=_0x260231[_0xdf15('0x35')]['length']?_0x260231[_0xdf15('0x35')]:_0x33fda9[_0xdf15('0x36')];if(!_0x3177fb[_0xdf15('0x32')][_0xdf15('0x39')](_0xdf15('0x3a'))){_0x260231[_0xdf15('0x1c')]=qs[_0xdf15('0x1c')](_0x3177fb[_0xdf15('0x32')]['limit']);_0x260231['offset']=qs[_0xdf15('0x1d')](_0x3177fb[_0xdf15('0x32')][_0xdf15('0x1d')]);}_0x260231[_0xdf15('0x3b')]=qs['sort'](_0x3177fb[_0xdf15('0x32')]['sort']);_0x260231['where']=qs[_0xdf15('0x33')](_[_0xdf15('0x5a')](_0x3177fb['query'],_0x33fda9[_0xdf15('0x33')]));_0x260231[_0xdf15('0x3d')][_0xdf15('0x5b')]=_0x1c1223['id'];if(_0x3177fb[_0xdf15('0x32')]['filter']){_0x260231[_0xdf15('0x3d')]=_[_0xdf15('0x3e')](_0x260231[_0xdf15('0x3d')],{'$or':_[_0xdf15('0x31')](_0x260231[_0xdf15('0x35')],function(_0x562cf8){var _0x317bdd={};_0x317bdd[_0x562cf8]={'$like':'%'+_0x3177fb[_0xdf15('0x32')][_0xdf15('0x3f')]+'%'};return _0x317bdd;})});}_0x260231=_['merge']({},_0x260231,_0x3177fb[_0xdf15('0x40')]);return db[_0xdf15('0x5e')][_0xdf15('0x41')]({'where':_0x260231['where']})[_0xdf15('0x23')](function(_0xaad41a){_0x9833fd[_0xdf15('0x41')]=_0xaad41a;if(_0x3177fb[_0xdf15('0x32')][_0xdf15('0x42')]){_0x260231['include']=[{'all':!![]}];}return db['JscriptyAnswerReport']['findAll'](_0x260231);})[_0xdf15('0x23')](function(_0x3ec5e3){_0x9833fd[_0xdf15('0x44')]=_0x3ec5e3;return _0x9833fd;});}})[_0xdf15('0x23')](respondWithFilteredResult(_0x240f14,_0x260231))[_0xdf15('0x45')](handleError(_0x240f14,null));};function char(_0x1895f9){return _0xdf15('0x5f')===typeof _0x1895f9?String[_0xdf15('0x60')][_0xdf15('0x20')](null,arguments):_0x1895f9;}function needsEncapsulation(_0x5cd9b8){return!!_0x5cd9b8&&(_0x5cd9b8['toString']()[_0xdf15('0x61')](char(0xd))>=0x0||_0x5cd9b8['toString']()['indexOf'](char(0xa))>=0x0||_0x5cd9b8[_0xdf15('0x62')]()[_0xdf15('0x61')](char(0x2c))>=0x0||_0x5cd9b8[_0xdf15('0x62')]()[_0xdf15('0x61')](char(0x22))>=0x0);}function encapsulate(_0x516fcc){var _0x5198cb=char(0x22),_0x7785c7='\x5c'+char(0x22),_0x3ce880=_0x516fcc[_0xdf15('0x62')]()['replace'](new RegExp(_0x5198cb,'g'),_0x7785c7);return _0x5198cb+_0x3ce880+_0x5198cb;}exports[_0xdf15('0x63')]=function(_0x370ce6,_0x5b2dfa,_0x23419b){var _0xe593b7,_0x329832;var _0x5af9c3={'where':{'ProjectId':_0x370ce6[_0xdf15('0x52')]['id']}};if(_0x370ce6['query'][_0xdf15('0x64')]){_0x5af9c3[_0xdf15('0x3d')]['starttime']=JSON[_0xdf15('0x65')](_0x370ce6[_0xdf15('0x32')][_0xdf15('0x64')]);}return db[_0xdf15('0x5c')][_0xdf15('0x43')](_0x5af9c3)[_0xdf15('0x23')](handleEntityNotFound(_0x5b2dfa,null))['then'](function(_0x19e61f){if(_0x19e61f){_0xe593b7=_0x19e61f;return db[_0xdf15('0x66')][_0xdf15('0x43')]({'where':{'SessionId':{'$in':_[_0xdf15('0x31')](_0xe593b7,'id')},'ProjectId':_0x370ce6[_0xdf15('0x52')]['id']},'order':_0xdf15('0x67')});}})[_0xdf15('0x23')](handleEntityNotFound(_0x5b2dfa,null))[_0xdf15('0x23')](function(_0x2605ec){if(_0x2605ec){_0x329832=_0x2605ec;var _0x16e625={};for(var _0x3169cb=0x0,_0x5edd9b=_0x329832['length'];_0x3169cb<_0x5edd9b;_0x3169cb++){if(!_0x16e625[_0xdf15('0x39')](_0x329832[_0x3169cb][_0xdf15('0x68')])){_0x16e625[_0x329832[_0x3169cb][_0xdf15('0x68')]]=needsEncapsulation(_0x329832[_0x3169cb][_0xdf15('0x69')])?encapsulate(_0x329832[_0x3169cb][_0xdf15('0x69')]):_0x329832[_0x3169cb][_0xdf15('0x69')];}}var _0x13bacc=[],_0x271daf={};for(var _0x4fda7b=0x0,_0x474bcd=_0xe593b7['length'];_0x4fda7b<_0x474bcd;_0x4fda7b++){_0x271daf={'ProjectId':_0x370ce6['params']['id'],'SessionId':_0xe593b7[_0x4fda7b]['id'],'StartTime':moment(_0xe593b7[_0x4fda7b][_0xdf15('0x6a')])['format'](_0xdf15('0x6b'))};for(var _0xf40168=0x0,_0x4964cb=_0x329832[_0xdf15('0x38')];_0xf40168<_0x4964cb;_0xf40168++){if(_0x329832[_0xf40168][_0xdf15('0x6c')]==_0xe593b7[_0x4fda7b]['id']&&_0x16e625[_0xdf15('0x39')](_0x329832[_0xf40168]['questionId'])){_0x271daf[_0x16e625[_0x329832[_0xf40168][_0xdf15('0x68')]]]=_0x329832[_0xf40168][_0xdf15('0x6d')];}}for(var _0x508eb7 in _0x16e625){if(!_0x271daf[_0xdf15('0x39')](_0x16e625[_0x508eb7])){_0x271daf[_0x16e625[_0x508eb7]]=null;}}_0x13bacc[_0xdf15('0x6e')](_0x271daf);}return _0x13bacc;}})[_0xdf15('0x23')](function(_0x26ac24){if(!_[_0xdf15('0x6f')](_0x26ac24)){var _0x58a8cf=toCsv(_0x26ac24);var _0x4c50cc=Date[_0xdf15('0x70')]();fs[_0xdf15('0x71')](util[_0xdf15('0x72')](_0xdf15('0x73'),_0x370ce6[_0xdf15('0x52')]['id'],_0x4c50cc),_0x58a8cf);_0x5b2dfa[_0xdf15('0x74')](_0xdf15('0x75'),_0xdf15('0x76')+util[_0xdf15('0x72')]('Jscripty_Project_%d_Summary_%s.csv',_0x370ce6[_0xdf15('0x52')]['id'],_0x4c50cc));_0x5b2dfa['setHeader'](_0xdf15('0x77'),_0xdf15('0x78'));return _0x5b2dfa[_0xdf15('0x79')](util[_0xdf15('0x72')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x370ce6[_0xdf15('0x52')]['id'],_0x4c50cc));}else{return _0x5b2dfa[_0xdf15('0x17')](0xcc);}})[_0xdf15('0x45')](handleError(_0x5b2dfa,null));};
\ No newline at end of file
+var _0x6d0c=['fromCharCode','indexOf','toString','getSummary','startTime','starttime','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','sendStatus','error','stack','name','send','index','map','JscriptyProject','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','params','options','find','role','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','createdAt','updatedAt','body','omit','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','getSessions','findOne','JscriptySessionReport','order','pick','ProjectId','JscriptyAnswerReport','number'];(function(_0x138f4b,_0x41a8c4){var _0x177b3e=function(_0x3ea407){while(--_0x3ea407){_0x138f4b['push'](_0x138f4b['shift']());}};_0x177b3e(++_0x41a8c4);}(_0x6d0c,0x8c));var _0xc6d0=function(_0x1e3bd3,_0x4b4cec){_0x1e3bd3=_0x1e3bd3-0x0;var _0x5485f7=_0x6d0c[_0x1e3bd3];return _0x5485f7;};'use strict';var emlformat=require(_0xc6d0('0x0'));var rimraf=require(_0xc6d0('0x1'));var zipdir=require(_0xc6d0('0x2'));var jsonpatch=require(_0xc6d0('0x3'));var rp=require(_0xc6d0('0x4'));var moment=require(_0xc6d0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc6d0('0x6'));var util=require('util');var path=require('path');var sox=require(_0xc6d0('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc6d0('0x8'));var _=require(_0xc6d0('0x9'));var squel=require(_0xc6d0('0xa'));var crypto=require(_0xc6d0('0xb'));var jsforce=require(_0xc6d0('0xc'));var deskjs=require(_0xc6d0('0xd'));var toCsv=require(_0xc6d0('0xe'));var querystring=require(_0xc6d0('0xf'));var Papa=require(_0xc6d0('0x10'));var Redis=require(_0xc6d0('0x11'));var authService=require(_0xc6d0('0x12'));var qs=require(_0xc6d0('0x13'));var as=require(_0xc6d0('0x14'));var hardwareService=require(_0xc6d0('0x15'));var logger=require(_0xc6d0('0x16'))(_0xc6d0('0x17'));var utils=require(_0xc6d0('0x18'));var config=require(_0xc6d0('0x19'));var licenseUtil=require(_0xc6d0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x562ae9,_0x170c38){_0x170c38=_0x170c38||0xcc;return function(_0x3b3a05){if(_0x3b3a05){return _0x562ae9['sendStatus'](_0x170c38);}return _0x562ae9[_0xc6d0('0x1b')](_0x170c38)[_0xc6d0('0x1c')]();};}function respondWithResult(_0x16170e,_0x58393c){_0x58393c=_0x58393c||0xc8;return function(_0x5c4521){if(_0x5c4521){return _0x16170e[_0xc6d0('0x1b')](_0x58393c)[_0xc6d0('0x1d')](_0x5c4521);}};}function respondWithFilteredResult(_0x17afb5,_0x501260){return function(_0x2e1ba2){if(_0x2e1ba2){var _0x49ef8e=typeof _0x501260[_0xc6d0('0x1e')]===_0xc6d0('0x1f')&&typeof _0x501260[_0xc6d0('0x20')]===_0xc6d0('0x1f');var _0x3acff1=_0x2e1ba2['count'];var _0x4b178c=_0x49ef8e?0x0:_0x501260['offset'];var _0x1fa160=_0x49ef8e?_0x2e1ba2[_0xc6d0('0x21')]:_0x501260[_0xc6d0('0x1e')]+_0x501260['limit'];var _0x278552;if(_0x1fa160>=_0x3acff1){_0x1fa160=_0x3acff1;_0x278552=0xc8;}else{_0x278552=0xce;}_0x17afb5['status'](_0x278552);return _0x17afb5['set'](_0xc6d0('0x22'),_0x4b178c+'-'+_0x1fa160+'/'+_0x3acff1)[_0xc6d0('0x1d')](_0x2e1ba2);}return null;};}function patchUpdates(_0x2121f2){return function(_0x42d2d7){try{jsonpatch[_0xc6d0('0x23')](_0x42d2d7,_0x2121f2,!![]);}catch(_0x7a0604){return BPromise[_0xc6d0('0x24')](_0x7a0604);}return _0x42d2d7[_0xc6d0('0x25')]();};}function saveUpdates(_0x4e88b2,_0x411faa){return function(_0x2fbbd9){if(_0x2fbbd9){return _0x2fbbd9[_0xc6d0('0x26')](_0x4e88b2)[_0xc6d0('0x27')](function(_0x4b48f3){return _0x4b48f3;});}return null;};}function removeEntity(_0x5e7a68,_0x321a97){return function(_0x55b44d){if(_0x55b44d){return _0x55b44d[_0xc6d0('0x28')]()[_0xc6d0('0x27')](function(){var _0x400de1=_0x55b44d[_0xc6d0('0x29')]({'plain':!![]});var _0x2cc17e=_0xc6d0('0x2a');return db[_0xc6d0('0x2b')][_0xc6d0('0x28')]({'where':{'type':_0x2cc17e,'resourceId':_0x400de1['id']}})[_0xc6d0('0x27')](function(){return _0x55b44d;});})[_0xc6d0('0x27')](function(){_0x5e7a68[_0xc6d0('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ad146,_0x4509ab){return function(_0x415f95){if(!_0x415f95){_0x5ad146[_0xc6d0('0x2c')](0x194);}return _0x415f95;};}function handleError(_0x134bc2,_0x4cd597){_0x4cd597=_0x4cd597||0x1f4;return function(_0xa457fa){logger[_0xc6d0('0x2d')](_0xa457fa[_0xc6d0('0x2e')]);if(_0xa457fa[_0xc6d0('0x2f')]){delete _0xa457fa[_0xc6d0('0x2f')];}_0x134bc2['status'](_0x4cd597)[_0xc6d0('0x30')](_0xa457fa);};}exports[_0xc6d0('0x31')]=function(_0x2b500e,_0x8463ab){var _0x4622ce={},_0x122c2c={},_0x501d4e={'count':0x0,'rows':[]};var _0x2985cf=_[_0xc6d0('0x32')](db[_0xc6d0('0x33')][_0xc6d0('0x34')],function(_0x3c391f){return{'name':_0x3c391f['fieldName'],'type':_0x3c391f['type'][_0xc6d0('0x35')]};});_0x122c2c[_0xc6d0('0x36')]=_['map'](_0x2985cf,_0xc6d0('0x2f'));_0x122c2c[_0xc6d0('0x37')]=_[_0xc6d0('0x38')](_0x2b500e[_0xc6d0('0x37')]);_0x122c2c[_0xc6d0('0x39')]=_[_0xc6d0('0x3a')](_0x122c2c['model'],_0x122c2c[_0xc6d0('0x37')]);_0x4622ce['attributes']=_['intersection'](_0x122c2c[_0xc6d0('0x36')],qs[_0xc6d0('0x3b')](_0x2b500e[_0xc6d0('0x37')]['fields']));_0x4622ce['attributes']=_0x4622ce[_0xc6d0('0x3c')][_0xc6d0('0x3d')]?_0x4622ce['attributes']:_0x122c2c['model'];if(!_0x2b500e[_0xc6d0('0x37')][_0xc6d0('0x3e')]('nolimit')){_0x4622ce[_0xc6d0('0x20')]=qs[_0xc6d0('0x20')](_0x2b500e[_0xc6d0('0x37')]['limit']);_0x4622ce['offset']=qs[_0xc6d0('0x1e')](_0x2b500e[_0xc6d0('0x37')][_0xc6d0('0x1e')]);}_0x4622ce['order']=qs['sort'](_0x2b500e['query'][_0xc6d0('0x3f')]);_0x4622ce[_0xc6d0('0x40')]=qs[_0xc6d0('0x39')](_['pick'](_0x2b500e['query'],_0x122c2c[_0xc6d0('0x39')]),_0x2985cf);if(_0x2b500e[_0xc6d0('0x37')][_0xc6d0('0x41')]){_0x4622ce['where']=_[_0xc6d0('0x42')](_0x4622ce[_0xc6d0('0x40')],{'$or':_['map'](_0x2985cf,function(_0x339a1d){if(_0x339a1d[_0xc6d0('0x43')]!==_0xc6d0('0x44')){var _0x1c98dd={};_0x1c98dd[_0x339a1d[_0xc6d0('0x2f')]]={'$like':'%'+_0x2b500e['query'][_0xc6d0('0x41')]+'%'};return _0x1c98dd;}})});}_0x4622ce=_[_0xc6d0('0x42')]({},_0x4622ce,_0x2b500e['options']);var _0x25e138={'where':_0x4622ce[_0xc6d0('0x40')]};return db[_0xc6d0('0x33')][_0xc6d0('0x21')](_0x25e138)['then'](function(_0x4a3cd8){_0x501d4e[_0xc6d0('0x21')]=_0x4a3cd8;if(_0x2b500e[_0xc6d0('0x37')][_0xc6d0('0x45')]){_0x4622ce[_0xc6d0('0x46')]=[{'all':!![]}];}return db[_0xc6d0('0x33')][_0xc6d0('0x47')](_0x4622ce);})['then'](function(_0x3c54fc){_0x501d4e[_0xc6d0('0x48')]=_0x3c54fc;return _0x501d4e;})[_0xc6d0('0x27')](respondWithFilteredResult(_0x8463ab,_0x4622ce))[_0xc6d0('0x49')](handleError(_0x8463ab,null));};exports['show']=function(_0x270702,_0x502f29){var _0x2b9244={'raw':![],'where':{'id':_0x270702[_0xc6d0('0x4a')]['id']}},_0x50d30b={};_0x50d30b[_0xc6d0('0x36')]=_[_0xc6d0('0x38')](db[_0xc6d0('0x33')]['rawAttributes']);_0x50d30b[_0xc6d0('0x37')]=_['keys'](_0x270702[_0xc6d0('0x37')]);_0x50d30b['filters']=_[_0xc6d0('0x3a')](_0x50d30b[_0xc6d0('0x36')],_0x50d30b[_0xc6d0('0x37')]);_0x2b9244['attributes']=_[_0xc6d0('0x3a')](_0x50d30b[_0xc6d0('0x36')],qs[_0xc6d0('0x3b')](_0x270702[_0xc6d0('0x37')]['fields']));_0x2b9244[_0xc6d0('0x3c')]=_0x2b9244[_0xc6d0('0x3c')][_0xc6d0('0x3d')]?_0x2b9244[_0xc6d0('0x3c')]:_0x50d30b['model'];if(_0x270702['query']['includeAll']){_0x2b9244[_0xc6d0('0x46')]=[{'all':!![]}];}_0x2b9244=_[_0xc6d0('0x42')]({},_0x2b9244,_0x270702[_0xc6d0('0x4b')]);return db['JscriptyProject'][_0xc6d0('0x4c')](_0x2b9244)[_0xc6d0('0x27')](handleEntityNotFound(_0x502f29,null))[_0xc6d0('0x27')](respondWithResult(_0x502f29,null))[_0xc6d0('0x49')](handleError(_0x502f29,null));};exports['create']=function(_0x530472,_0x47ec13){return db[_0xc6d0('0x33')]['create'](_0x530472['body'],{})[_0xc6d0('0x27')](function(_0xf23e9){var _0x4921d6=_0x530472['user']['get']({'plain':!![]});if(!_0x4921d6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4921d6[_0xc6d0('0x4d')]==='user'){var _0x234783=_0xf23e9[_0xc6d0('0x29')]({'plain':!![]});var _0x2a8b88=_0xc6d0('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x2a8b88,'userProfileId':_0x4921d6['userProfileId']},'raw':!![]})[_0xc6d0('0x27')](function(_0x4c6d42){if(_0x4c6d42&&_0x4c6d42[_0xc6d0('0x4e')]===0x0){return db['UserProfileResource'][_0xc6d0('0x4f')]({'name':_0x234783[_0xc6d0('0x2f')],'resourceId':_0x234783['id'],'type':_0x4c6d42[_0xc6d0('0x2f')],'sectionId':_0x4c6d42['id']},{})[_0xc6d0('0x27')](function(){return _0xf23e9;});}else{return _0xf23e9;}})[_0xc6d0('0x49')](function(_0x3d2f76){logger[_0xc6d0('0x2d')](_0xc6d0('0x50'),_0x3d2f76);throw _0x3d2f76;});}return _0xf23e9;})[_0xc6d0('0x27')](respondWithResult(_0x47ec13,0xc9))[_0xc6d0('0x49')](handleError(_0x47ec13,null));};exports['clone']=function(_0x19c273,_0x2f0a07){var _0x2f8b3f={'where':{'id':_0x19c273[_0xc6d0('0x4a')]['id']}},_0x27333f={};_0x27333f[_0xc6d0('0x36')]=_[_0xc6d0('0x38')](db[_0xc6d0('0x33')][_0xc6d0('0x34')]);_0x2f8b3f[_0xc6d0('0x3c')]=_[_0xc6d0('0x3a')](_0x27333f[_0xc6d0('0x36')],qs[_0xc6d0('0x3b')](_0x19c273[_0xc6d0('0x37')][_0xc6d0('0x3b')]));_0x2f8b3f[_0xc6d0('0x3c')]=_0x2f8b3f['attributes']['length']?_0x2f8b3f['attributes']:_0x27333f[_0xc6d0('0x36')];if(_0x19c273[_0xc6d0('0x37')][_0xc6d0('0x45')]){_0x2f8b3f[_0xc6d0('0x46')]=[{'all':!![]}];}_0x2f8b3f=_['merge']({},_0x2f8b3f,_0x19c273[_0xc6d0('0x4b')]);return db[_0xc6d0('0x33')][_0xc6d0('0x4c')](_0x2f8b3f)[_0xc6d0('0x27')](handleEntityNotFound(_0x2f0a07,null))[_0xc6d0('0x27')](function(_0x57303e){if(_0x57303e){var _0x3a3e5a=_0x57303e[_0xc6d0('0x29')]({'plain':!![]});_0x3a3e5a=qs['omit'](_0x3a3e5a,['id',_0xc6d0('0x51'),_0xc6d0('0x52')]);_0x19c273[_0xc6d0('0x53')]=_[_0xc6d0('0x54')](_0x19c273[_0xc6d0('0x53')],['id',_0xc6d0('0x51'),'updatedAt']);return db[_0xc6d0('0x33')][_0xc6d0('0x4f')](_[_0xc6d0('0x42')](_0x3a3e5a,_0x19c273[_0xc6d0('0x53')]),{'include':_0x19c273[_0xc6d0('0x37')][_0xc6d0('0x45')]?[{'all':!![]}]:undefined})[_0xc6d0('0x27')](function(_0x3be445){var _0x521ce7=_0x19c273[_0xc6d0('0x55')][_0xc6d0('0x29')]({'plain':!![]});if(!_0x521ce7)throw new Error(_0xc6d0('0x56'));if(_0x521ce7[_0xc6d0('0x4d')]===_0xc6d0('0x55')){var _0x54e315=_0x3be445[_0xc6d0('0x29')]({'plain':!![]});var _0x5254d5='Projects';return db[_0xc6d0('0x57')][_0xc6d0('0x4c')]({'where':{'name':_0x5254d5,'userProfileId':_0x521ce7['userProfileId']},'raw':!![]})[_0xc6d0('0x27')](function(_0x4ecfc9){if(_0x4ecfc9&&_0x4ecfc9[_0xc6d0('0x4e')]===0x0){return db[_0xc6d0('0x2b')][_0xc6d0('0x4f')]({'name':_0x54e315[_0xc6d0('0x2f')],'resourceId':_0x54e315['id'],'type':_0x4ecfc9[_0xc6d0('0x2f')],'sectionId':_0x4ecfc9['id']},{})['then'](function(){return _0x3be445;});}else{return _0x3be445;}})['catch'](function(_0x2f23be){logger[_0xc6d0('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2f23be);throw _0x2f23be;});}return _0x3be445;});}})[_0xc6d0('0x27')](respondWithResult(_0x2f0a07,0xc9))[_0xc6d0('0x49')](handleError(_0x2f0a07,null));};exports[_0xc6d0('0x26')]=function(_0x48f0f9,_0x335919){if(_0x48f0f9['body']['id']){delete _0x48f0f9[_0xc6d0('0x53')]['id'];}return db[_0xc6d0('0x33')]['find']({'where':{'id':_0x48f0f9[_0xc6d0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x335919,null))[_0xc6d0('0x27')](saveUpdates(_0x48f0f9['body'],null))[_0xc6d0('0x27')](respondWithResult(_0x335919,null))['catch'](handleError(_0x335919,null));};exports[_0xc6d0('0x28')]=function(_0x3128fa,_0x51b13d){return db['JscriptyProject']['find']({'where':{'id':_0x3128fa[_0xc6d0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x51b13d,null))[_0xc6d0('0x27')](removeEntity(_0x51b13d,null))[_0xc6d0('0x49')](handleError(_0x51b13d,null));};exports[_0xc6d0('0x58')]=function(_0x2829aa,_0x7d44c1,_0x3c8861){var _0x2fe434={'raw':!![],'where':{}};var _0x47c01b={};var _0x26781d={'count':0x0,'rows':[]};return db[_0xc6d0('0x33')][_0xc6d0('0x59')]({'where':{'id':_0x2829aa[_0xc6d0('0x4a')]['id']}})[_0xc6d0('0x27')](handleEntityNotFound(_0x7d44c1,null))[_0xc6d0('0x27')](function(_0x39d294){if(_0x39d294){_0x47c01b['model']=_['keys'](db[_0xc6d0('0x5a')][_0xc6d0('0x34')]);_0x47c01b[_0xc6d0('0x37')]=_['keys'](_0x2829aa[_0xc6d0('0x37')]);_0x47c01b[_0xc6d0('0x39')]=_[_0xc6d0('0x3a')](_0x47c01b[_0xc6d0('0x36')],_0x47c01b[_0xc6d0('0x37')]);_0x2fe434[_0xc6d0('0x3c')]=_[_0xc6d0('0x3a')](_0x47c01b['model'],qs['fields'](_0x2829aa[_0xc6d0('0x37')]['fields']));_0x2fe434[_0xc6d0('0x3c')]=_0x2fe434['attributes'][_0xc6d0('0x3d')]?_0x2fe434[_0xc6d0('0x3c')]:_0x47c01b[_0xc6d0('0x36')];if(!_0x2829aa['query'][_0xc6d0('0x3e')]('nolimit')){_0x2fe434[_0xc6d0('0x20')]=qs[_0xc6d0('0x20')](_0x2829aa[_0xc6d0('0x37')][_0xc6d0('0x20')]);_0x2fe434[_0xc6d0('0x1e')]=qs[_0xc6d0('0x1e')](_0x2829aa[_0xc6d0('0x37')][_0xc6d0('0x1e')]);}_0x2fe434[_0xc6d0('0x5b')]=qs['sort'](_0x2829aa[_0xc6d0('0x37')][_0xc6d0('0x3f')]);_0x2fe434[_0xc6d0('0x40')]=qs[_0xc6d0('0x39')](_[_0xc6d0('0x5c')](_0x2829aa['query'],_0x47c01b[_0xc6d0('0x39')]));_0x2fe434[_0xc6d0('0x40')][_0xc6d0('0x5d')]=_0x39d294['id'];if(_0x2829aa[_0xc6d0('0x37')][_0xc6d0('0x41')]){_0x2fe434[_0xc6d0('0x40')]=_[_0xc6d0('0x42')](_0x2fe434[_0xc6d0('0x40')],{'$or':_['map'](_0x2fe434['attributes'],function(_0x569b52){var _0x3d95b3={};_0x3d95b3[_0x569b52]={'$like':'%'+_0x2829aa[_0xc6d0('0x37')][_0xc6d0('0x41')]+'%'};return _0x3d95b3;})});}_0x2fe434=_['merge']({},_0x2fe434,_0x2829aa[_0xc6d0('0x4b')]);return db[_0xc6d0('0x5a')][_0xc6d0('0x21')]({'where':_0x2fe434[_0xc6d0('0x40')]})[_0xc6d0('0x27')](function(_0x311c18){_0x26781d['count']=_0x311c18;if(_0x2829aa['query'][_0xc6d0('0x45')]){_0x2fe434[_0xc6d0('0x46')]=[{'all':!![]}];}return db[_0xc6d0('0x5a')]['findAll'](_0x2fe434);})['then'](function(_0x41af68){_0x26781d[_0xc6d0('0x48')]=_0x41af68;return _0x26781d;});}})['then'](respondWithFilteredResult(_0x7d44c1,_0x2fe434))[_0xc6d0('0x49')](handleError(_0x7d44c1,null));};exports['getAnswers']=function(_0xfcab03,_0x32ac0d,_0x2eec0a){var _0x57ace5={'raw':!![],'where':{}};var _0x1a6947={};var _0x1ad736={'count':0x0,'rows':[]};return db[_0xc6d0('0x33')][_0xc6d0('0x59')]({'where':{'id':_0xfcab03['params']['id']}})[_0xc6d0('0x27')](handleEntityNotFound(_0x32ac0d,null))[_0xc6d0('0x27')](function(_0x305fbf){if(_0x305fbf){_0x1a6947[_0xc6d0('0x36')]=_[_0xc6d0('0x38')](db['JscriptyAnswerReport'][_0xc6d0('0x34')]);_0x1a6947[_0xc6d0('0x37')]=_[_0xc6d0('0x38')](_0xfcab03['query']);_0x1a6947[_0xc6d0('0x39')]=_[_0xc6d0('0x3a')](_0x1a6947['model'],_0x1a6947[_0xc6d0('0x37')]);_0x57ace5['attributes']=_[_0xc6d0('0x3a')](_0x1a6947[_0xc6d0('0x36')],qs[_0xc6d0('0x3b')](_0xfcab03['query'][_0xc6d0('0x3b')]));_0x57ace5[_0xc6d0('0x3c')]=_0x57ace5[_0xc6d0('0x3c')][_0xc6d0('0x3d')]?_0x57ace5[_0xc6d0('0x3c')]:_0x1a6947[_0xc6d0('0x36')];if(!_0xfcab03[_0xc6d0('0x37')][_0xc6d0('0x3e')]('nolimit')){_0x57ace5[_0xc6d0('0x20')]=qs['limit'](_0xfcab03[_0xc6d0('0x37')][_0xc6d0('0x20')]);_0x57ace5[_0xc6d0('0x1e')]=qs[_0xc6d0('0x1e')](_0xfcab03[_0xc6d0('0x37')][_0xc6d0('0x1e')]);}_0x57ace5[_0xc6d0('0x5b')]=qs[_0xc6d0('0x3f')](_0xfcab03['query'][_0xc6d0('0x3f')]);_0x57ace5[_0xc6d0('0x40')]=qs['filters'](_[_0xc6d0('0x5c')](_0xfcab03[_0xc6d0('0x37')],_0x1a6947[_0xc6d0('0x39')]));_0x57ace5['where'][_0xc6d0('0x5d')]=_0x305fbf['id'];if(_0xfcab03[_0xc6d0('0x37')][_0xc6d0('0x41')]){_0x57ace5['where']=_[_0xc6d0('0x42')](_0x57ace5[_0xc6d0('0x40')],{'$or':_[_0xc6d0('0x32')](_0x57ace5[_0xc6d0('0x3c')],function(_0x3ec72d){var _0x43f4a5={};_0x43f4a5[_0x3ec72d]={'$like':'%'+_0xfcab03[_0xc6d0('0x37')][_0xc6d0('0x41')]+'%'};return _0x43f4a5;})});}_0x57ace5=_[_0xc6d0('0x42')]({},_0x57ace5,_0xfcab03['options']);return db[_0xc6d0('0x5e')][_0xc6d0('0x21')]({'where':_0x57ace5[_0xc6d0('0x40')]})[_0xc6d0('0x27')](function(_0x19430d){_0x1ad736[_0xc6d0('0x21')]=_0x19430d;if(_0xfcab03[_0xc6d0('0x37')]['includeAll']){_0x57ace5[_0xc6d0('0x46')]=[{'all':!![]}];}return db[_0xc6d0('0x5e')][_0xc6d0('0x47')](_0x57ace5);})['then'](function(_0xfe6963){_0x1ad736[_0xc6d0('0x48')]=_0xfe6963;return _0x1ad736;});}})['then'](respondWithFilteredResult(_0x32ac0d,_0x57ace5))['catch'](handleError(_0x32ac0d,null));};function char(_0x1e4ee5){return _0xc6d0('0x5f')===typeof _0x1e4ee5?String[_0xc6d0('0x60')][_0xc6d0('0x23')](null,arguments):_0x1e4ee5;}function needsEncapsulation(_0x22f2d0){return!!_0x22f2d0&&(_0x22f2d0['toString']()['indexOf'](char(0xd))>=0x0||_0x22f2d0['toString']()[_0xc6d0('0x61')](char(0xa))>=0x0||_0x22f2d0[_0xc6d0('0x62')]()[_0xc6d0('0x61')](char(0x2c))>=0x0||_0x22f2d0['toString']()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x5e188e){var _0xecbad1=char(0x22),_0x5c455c='\x5c'+char(0x22),_0xf282fd=_0x5e188e[_0xc6d0('0x62')]()['replace'](new RegExp(_0xecbad1,'g'),_0x5c455c);return _0xecbad1+_0xf282fd+_0xecbad1;}exports[_0xc6d0('0x63')]=function(_0x2b0f71,_0x595c94,_0x142897){var _0x55d4e6,_0x33a3a2;var _0x517636={'where':{'ProjectId':_0x2b0f71[_0xc6d0('0x4a')]['id']}};if(_0x2b0f71[_0xc6d0('0x37')][_0xc6d0('0x64')]){_0x517636[_0xc6d0('0x40')][_0xc6d0('0x65')]=JSON['parse'](_0x2b0f71[_0xc6d0('0x37')][_0xc6d0('0x64')]);}return db['JscriptySessionReport'][_0xc6d0('0x47')](_0x517636)['then'](handleEntityNotFound(_0x595c94,null))[_0xc6d0('0x27')](function(_0x70c7a8){if(_0x70c7a8){_0x55d4e6=_0x70c7a8;return db['JscriptyQuestionReport'][_0xc6d0('0x47')]({'where':{'SessionId':{'$in':_[_0xc6d0('0x32')](_0x55d4e6,'id')},'ProjectId':_0x2b0f71[_0xc6d0('0x4a')]['id']},'order':'-createdAt'});}})[_0xc6d0('0x27')](handleEntityNotFound(_0x595c94,null))[_0xc6d0('0x27')](function(_0x3beeca){if(_0x3beeca){_0x33a3a2=_0x3beeca;var _0x1bdb5c={};for(var _0x3d2783=0x0,_0x5d36eb=_0x33a3a2[_0xc6d0('0x3d')];_0x3d2783<_0x5d36eb;_0x3d2783++){if(!_0x1bdb5c[_0xc6d0('0x3e')](_0x33a3a2[_0x3d2783][_0xc6d0('0x66')])){_0x1bdb5c[_0x33a3a2[_0x3d2783][_0xc6d0('0x66')]]=needsEncapsulation(_0x33a3a2[_0x3d2783][_0xc6d0('0x67')])?encapsulate(_0x33a3a2[_0x3d2783][_0xc6d0('0x67')]):_0x33a3a2[_0x3d2783]['question'];}}var _0x146d5a=[],_0x5012b8={};for(var _0x1135a0=0x0,_0x2bf519=_0x55d4e6[_0xc6d0('0x3d')];_0x1135a0<_0x2bf519;_0x1135a0++){_0x5012b8={'ProjectId':_0x2b0f71[_0xc6d0('0x4a')]['id'],'SessionId':_0x55d4e6[_0x1135a0]['id'],'StartTime':moment(_0x55d4e6[_0x1135a0][_0xc6d0('0x65')])[_0xc6d0('0x68')](_0xc6d0('0x69'))};for(var _0x36f8c7=0x0,_0x114898=_0x33a3a2[_0xc6d0('0x3d')];_0x36f8c7<_0x114898;_0x36f8c7++){if(_0x33a3a2[_0x36f8c7][_0xc6d0('0x6a')]==_0x55d4e6[_0x1135a0]['id']&&_0x1bdb5c[_0xc6d0('0x3e')](_0x33a3a2[_0x36f8c7][_0xc6d0('0x66')])){_0x5012b8[_0x1bdb5c[_0x33a3a2[_0x36f8c7]['questionId']]]=_0x33a3a2[_0x36f8c7]['answer'];}}for(var _0x4629e1 in _0x1bdb5c){if(!_0x5012b8[_0xc6d0('0x3e')](_0x1bdb5c[_0x4629e1])){_0x5012b8[_0x1bdb5c[_0x4629e1]]=null;}}_0x146d5a[_0xc6d0('0x6b')](_0x5012b8);}return _0x146d5a;}})[_0xc6d0('0x27')](function(_0x3f7a5f){if(!_[_0xc6d0('0x6c')](_0x3f7a5f)){var _0x4046a1=toCsv(_0x3f7a5f);var _0x24b6f6=Date[_0xc6d0('0x6d')]();fs[_0xc6d0('0x6e')](util[_0xc6d0('0x68')](_0xc6d0('0x6f'),_0x2b0f71[_0xc6d0('0x4a')]['id'],_0x24b6f6),_0x4046a1);_0x595c94[_0xc6d0('0x70')]('Content-disposition',_0xc6d0('0x71')+util[_0xc6d0('0x68')](_0xc6d0('0x72'),_0x2b0f71[_0xc6d0('0x4a')]['id'],_0x24b6f6));_0x595c94[_0xc6d0('0x70')](_0xc6d0('0x73'),_0xc6d0('0x74'));return _0x595c94[_0xc6d0('0x75')](util[_0xc6d0('0x68')](_0xc6d0('0x6f'),_0x2b0f71[_0xc6d0('0x4a')]['id'],_0x24b6f6));}else{return _0x595c94[_0xc6d0('0x2c')](0xcc);}})[_0xc6d0('0x49')](handleError(_0x595c94,null));};
\ No newline at end of file
index 6108d82..c193ffa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1793=['../../config/environment','jscripty_projects','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x1793,0x1ce));var _0x3179=function(_0x257ada,_0x117063){_0x257ada=_0x257ada-0x0;var _0x38bbfd=_0x1793[_0x257ada];return _0x38bbfd;};'use strict';var _=require(_0x3179('0x0'));var util=require(_0x3179('0x1'));var logger=require(_0x3179('0x2'))(_0x3179('0x3'));var moment=require('moment');var BPromise=require(_0x3179('0x4'));var rp=require(_0x3179('0x5'));var fs=require('fs');var path=require(_0x3179('0x6'));var rimraf=require(_0x3179('0x7'));var config=require(_0x3179('0x8'));var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0x43ee6e,_0x2e6158){return _0x43ee6e['define']('JscriptyProject',attributes,{'tableName':_0x3179('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0dec=['bluebird','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','lodash','util','../../config/logger','api'];(function(_0x55f757,_0x157df5){var _0x3bf3a6=function(_0x325285){while(--_0x325285){_0x55f757['push'](_0x55f757['shift']());}};_0x3bf3a6(++_0x157df5);}(_0x0dec,0x11c));var _0xc0de=function(_0x2108f1,_0x4fcf0a){_0x2108f1=_0x2108f1-0x0;var _0x2dbb27=_0x0dec[_0x2108f1];return _0x2dbb27;};'use strict';var _=require(_0xc0de('0x0'));var util=require(_0xc0de('0x1'));var logger=require(_0xc0de('0x2'))(_0xc0de('0x3'));var moment=require('moment');var BPromise=require(_0xc0de('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc0de('0x5'));var config=require(_0xc0de('0x6'));var attributes=require(_0xc0de('0x7'));module[_0xc0de('0x8')]=function(_0xae49db,_0x194937){return _0xae49db[_0xc0de('0x9')](_0xc0de('0xa'),attributes,{'tableName':_0xc0de('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba73893..b090c87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0x4aa24f,_0x2148de){var _0xf05e18=function(_0xa5c683){while(--_0xa5c683){_0x4aa24f['push'](_0x4aa24f['shift']());}};_0xf05e18(++_0x2148de);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c7d8b,_0x572388){_0x4c7d8b=_0x4c7d8b-0x0;var _0x187158=_0xcb91[_0x4c7d8b];return _0x187158;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x1425e8,_0x2c195b){var _0x1cd239=function(_0x404246){while(--_0x404246){_0x1425e8['push'](_0x1425e8['shift']());}};_0x1cd239(++_0x2c195b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
index 3d331c7..759e0ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7e5=['get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xd7e5,0x19c));var _0x5d7e=function(_0x3bb69c,_0x3c497e){_0x3bb69c=_0x3bb69c-0x0;var _0x5f2fea=_0xd7e5[_0x3bb69c];return _0x5f2fea;};'use strict';var multer=require(_0x5d7e('0x0'));var util=require('util');var path=require(_0x5d7e('0x1'));var timeout=require(_0x5d7e('0x2'));var express=require(_0x5d7e('0x3'));var router=express['Router']();var fs_extra=require(_0x5d7e('0x4'));var auth=require(_0x5d7e('0x5'));var interaction=require(_0x5d7e('0x6'));var config=require('../../config/environment');var controller=require(_0x5d7e('0x7'));router[_0x5d7e('0x8')]('/',auth[_0x5d7e('0x9')](),controller[_0x5d7e('0xa')]);router['get'](_0x5d7e('0xb'),auth['isAuthenticated'](),controller[_0x5d7e('0xc')]);router[_0x5d7e('0x8')](_0x5d7e('0xd'),auth[_0x5d7e('0x9')](),controller[_0x5d7e('0xe')]);router[_0x5d7e('0xf')]('/',auth[_0x5d7e('0x9')](),controller[_0x5d7e('0x10')]);router[_0x5d7e('0x11')](_0x5d7e('0xd'),auth['isAuthenticated'](),controller[_0x5d7e('0x12')]);router['delete'](_0x5d7e('0xd'),auth[_0x5d7e('0x9')](),controller[_0x5d7e('0x13')]);module[_0x5d7e('0x14')]=router;
\ No newline at end of file
+var _0x2e5e=['/:id','show','put','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe'];(function(_0x511b76,_0x4727fa){var _0x5424ff=function(_0x24b7c0){while(--_0x24b7c0){_0x511b76['push'](_0x511b76['shift']());}};_0x5424ff(++_0x4727fa);}(_0x2e5e,0xfd));var _0xe2e5=function(_0x4fe6ba,_0x27ce8c){_0x4fe6ba=_0x4fe6ba-0x0;var _0x34897e=_0x2e5e[_0x4fe6ba];return _0x34897e;};'use strict';var multer=require(_0xe2e5('0x0'));var util=require('util');var path=require(_0xe2e5('0x1'));var timeout=require('connect-timeout');var express=require(_0xe2e5('0x2'));var router=express[_0xe2e5('0x3')]();var fs_extra=require(_0xe2e5('0x4'));var auth=require(_0xe2e5('0x5'));var interaction=require(_0xe2e5('0x6'));var config=require(_0xe2e5('0x7'));var controller=require(_0xe2e5('0x8'));router[_0xe2e5('0x9')]('/',auth[_0xe2e5('0xa')](),controller[_0xe2e5('0xb')]);router['get'](_0xe2e5('0xc'),auth[_0xe2e5('0xa')](),controller['describe']);router[_0xe2e5('0x9')](_0xe2e5('0xd'),auth[_0xe2e5('0xa')](),controller[_0xe2e5('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xe2e5('0xf')](_0xe2e5('0xd'),auth[_0xe2e5('0xa')](),controller['update']);router[_0xe2e5('0x10')]('/:id',auth[_0xe2e5('0xa')](),controller[_0xe2e5('0x11')]);module[_0xe2e5('0x12')]=router;
\ No newline at end of file
index 4ec5f13..83a2182 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x7a54,0x106));var _0x47a5=function(_0x19ef75,_0x2e243e){_0x19ef75=_0x19ef75-0x0;var _0x43bec4=_0x7a54[_0x19ef75];return _0x43bec4;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x7a54,0x106));var _0x47a5=function(_0x3f6614,_0xa49e0c){_0x3f6614=_0x3f6614-0x0;var _0x61c0e5=_0x7a54[_0x3f6614];return _0x61c0e5;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index ae20be3..fa3d46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51f=['then','error','stack','send','index','map','rawAttributes','fieldName','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','JscriptyQuestionReport','includeAll','findAll','rows','catch','show','include','options','find','create','body','params','destroy','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','offset','count','set','apply','save','update'];(function(_0x515283,_0x813dea){var _0x38f836=function(_0x40c8f4){while(--_0x40c8f4){_0x515283['push'](_0x515283['shift']());}};_0x38f836(++_0x813dea);}(_0xf51f,0x19f));var _0xff51=function(_0x555069,_0x23d66a){_0x555069=_0x555069-0x0;var _0x100af7=_0xf51f[_0x555069];return _0x100af7;};'use strict';var emlformat=require(_0xff51('0x0'));var rimraf=require(_0xff51('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xff51('0x2'));var rp=require(_0xff51('0x3'));var moment=require('moment');var BPromise=require(_0xff51('0x4'));var Mustache=require(_0xff51('0x5'));var util=require(_0xff51('0x6'));var path=require(_0xff51('0x7'));var sox=require(_0xff51('0x8'));var csv=require(_0xff51('0x9'));var ejs=require(_0xff51('0xa'));var fs=require('fs');var fs_extra=require(_0xff51('0xb'));var _=require(_0xff51('0xc'));var squel=require(_0xff51('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xff51('0xe'));var toCsv=require(_0xff51('0x9'));var querystring=require(_0xff51('0xf'));var Papa=require('papaparse');var Redis=require(_0xff51('0x10'));var authService=require(_0xff51('0x11'));var qs=require(_0xff51('0x12'));var as=require(_0xff51('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff51('0x14'))('api');var utils=require(_0xff51('0x15'));var config=require(_0xff51('0x16'));var licenseUtil=require(_0xff51('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x391dc8,_0x40ecb9){_0x40ecb9=_0x40ecb9||0xcc;return function(_0x474fc4){if(_0x474fc4){return _0x391dc8[_0xff51('0x18')](_0x40ecb9);}return _0x391dc8[_0xff51('0x19')](_0x40ecb9)[_0xff51('0x1a')]();};}function respondWithResult(_0x50752e,_0x417f62){_0x417f62=_0x417f62||0xc8;return function(_0xf899eb){if(_0xf899eb){return _0x50752e[_0xff51('0x19')](_0x417f62)[_0xff51('0x1b')](_0xf899eb);}};}function respondWithFilteredResult(_0x21fe6d,_0x4404e0){return function(_0x5edc43){if(_0x5edc43){var _0x6606c2=typeof _0x4404e0['offset']==='undefined'&&typeof _0x4404e0[_0xff51('0x1c')]==='undefined';var _0x554acc=_0x5edc43['count'];var _0x22bcdc=_0x6606c2?0x0:_0x4404e0[_0xff51('0x1d')];var _0x22eacd=_0x6606c2?_0x5edc43[_0xff51('0x1e')]:_0x4404e0[_0xff51('0x1d')]+_0x4404e0[_0xff51('0x1c')];var _0x1cd4f9;if(_0x22eacd>=_0x554acc){_0x22eacd=_0x554acc;_0x1cd4f9=0xc8;}else{_0x1cd4f9=0xce;}_0x21fe6d['status'](_0x1cd4f9);return _0x21fe6d[_0xff51('0x1f')]('Content-Range',_0x22bcdc+'-'+_0x22eacd+'/'+_0x554acc)['json'](_0x5edc43);}return null;};}function patchUpdates(_0x4f2895){return function(_0x3f4999){try{jsonpatch[_0xff51('0x20')](_0x3f4999,_0x4f2895,!![]);}catch(_0xa47564){return BPromise['reject'](_0xa47564);}return _0x3f4999[_0xff51('0x21')]();};}function saveUpdates(_0x5c9515,_0x4b6bf0){return function(_0x46155f){if(_0x46155f){return _0x46155f[_0xff51('0x22')](_0x5c9515)[_0xff51('0x23')](function(_0x21fee8){return _0x21fee8;});}return null;};}function removeEntity(_0x1c4224,_0x9e2f6f){return function(_0x563301){if(_0x563301){return _0x563301['destroy']()[_0xff51('0x23')](function(){_0x1c4224[_0xff51('0x19')](0xcc)[_0xff51('0x1a')]();});}};}function handleEntityNotFound(_0x52a340,_0x58840c){return function(_0x54bb66){if(!_0x54bb66){_0x52a340[_0xff51('0x18')](0x194);}return _0x54bb66;};}function handleError(_0x3af926,_0x587d76){_0x587d76=_0x587d76||0x1f4;return function(_0x2c61bd){logger[_0xff51('0x24')](_0x2c61bd[_0xff51('0x25')]);if(_0x2c61bd['name']){delete _0x2c61bd['name'];}_0x3af926[_0xff51('0x19')](_0x587d76)[_0xff51('0x26')](_0x2c61bd);};}exports[_0xff51('0x27')]=function(_0x2e1fcb,_0x7591ae){var _0x3f6c8e={},_0xb928c5={},_0x472448={'count':0x0,'rows':[]};var _0x38e793=_[_0xff51('0x28')](db['JscriptyQuestionReport'][_0xff51('0x29')],function(_0x2f459b){return{'name':_0x2f459b[_0xff51('0x2a')],'type':_0x2f459b['type'][_0xff51('0x2b')]};});_0xb928c5[_0xff51('0x2c')]=_[_0xff51('0x28')](_0x38e793,_0xff51('0x2d'));_0xb928c5[_0xff51('0x2e')]=_[_0xff51('0x2f')](_0x2e1fcb['query']);_0xb928c5[_0xff51('0x30')]=_[_0xff51('0x31')](_0xb928c5[_0xff51('0x2c')],_0xb928c5[_0xff51('0x2e')]);_0x3f6c8e[_0xff51('0x32')]=_[_0xff51('0x31')](_0xb928c5[_0xff51('0x2c')],qs[_0xff51('0x33')](_0x2e1fcb[_0xff51('0x2e')]['fields']));_0x3f6c8e['attributes']=_0x3f6c8e['attributes'][_0xff51('0x34')]?_0x3f6c8e[_0xff51('0x32')]:_0xb928c5['model'];if(!_0x2e1fcb[_0xff51('0x2e')][_0xff51('0x35')](_0xff51('0x36'))){_0x3f6c8e[_0xff51('0x1c')]=qs[_0xff51('0x1c')](_0x2e1fcb['query'][_0xff51('0x1c')]);_0x3f6c8e[_0xff51('0x1d')]=qs[_0xff51('0x1d')](_0x2e1fcb[_0xff51('0x2e')][_0xff51('0x1d')]);}_0x3f6c8e[_0xff51('0x37')]=qs[_0xff51('0x38')](_0x2e1fcb[_0xff51('0x2e')][_0xff51('0x38')]);_0x3f6c8e[_0xff51('0x39')]=qs[_0xff51('0x30')](_['pick'](_0x2e1fcb[_0xff51('0x2e')],_0xb928c5[_0xff51('0x30')]),_0x38e793);if(_0x2e1fcb[_0xff51('0x2e')]['filter']){_0x3f6c8e['where']=_[_0xff51('0x3a')](_0x3f6c8e['where'],{'$or':_[_0xff51('0x28')](_0x38e793,function(_0x4d2e61){if(_0x4d2e61[_0xff51('0x3b')]!=='VIRTUAL'){var _0x571470={};_0x571470[_0x4d2e61[_0xff51('0x2d')]]={'$like':'%'+_0x2e1fcb['query'][_0xff51('0x3c')]+'%'};return _0x571470;}})});}_0x3f6c8e=_[_0xff51('0x3a')]({},_0x3f6c8e,_0x2e1fcb['options']);var _0x11dd87={'where':_0x3f6c8e[_0xff51('0x39')]};return db[_0xff51('0x3d')][_0xff51('0x1e')](_0x11dd87)[_0xff51('0x23')](function(_0x140cbe){_0x472448[_0xff51('0x1e')]=_0x140cbe;if(_0x2e1fcb['query'][_0xff51('0x3e')]){_0x3f6c8e['include']=[{'all':!![]}];}return db[_0xff51('0x3d')][_0xff51('0x3f')](_0x3f6c8e);})[_0xff51('0x23')](function(_0x1d6df3){_0x472448[_0xff51('0x40')]=_0x1d6df3;return _0x472448;})[_0xff51('0x23')](respondWithFilteredResult(_0x7591ae,_0x3f6c8e))[_0xff51('0x41')](handleError(_0x7591ae,null));};exports[_0xff51('0x42')]=function(_0x4971d3,_0x341e52){var _0x223b2e={'raw':!![],'where':{'id':_0x4971d3['params']['id']}},_0x2aec14={};_0x2aec14[_0xff51('0x2c')]=_[_0xff51('0x2f')](db[_0xff51('0x3d')][_0xff51('0x29')]);_0x2aec14[_0xff51('0x2e')]=_[_0xff51('0x2f')](_0x4971d3[_0xff51('0x2e')]);_0x2aec14[_0xff51('0x30')]=_['intersection'](_0x2aec14[_0xff51('0x2c')],_0x2aec14[_0xff51('0x2e')]);_0x223b2e[_0xff51('0x32')]=_[_0xff51('0x31')](_0x2aec14[_0xff51('0x2c')],qs[_0xff51('0x33')](_0x4971d3[_0xff51('0x2e')]['fields']));_0x223b2e[_0xff51('0x32')]=_0x223b2e[_0xff51('0x32')][_0xff51('0x34')]?_0x223b2e[_0xff51('0x32')]:_0x2aec14['model'];if(_0x4971d3['query']['includeAll']){_0x223b2e[_0xff51('0x43')]=[{'all':!![]}];}_0x223b2e=_[_0xff51('0x3a')]({},_0x223b2e,_0x4971d3[_0xff51('0x44')]);return db[_0xff51('0x3d')][_0xff51('0x45')](_0x223b2e)[_0xff51('0x23')](handleEntityNotFound(_0x341e52,null))[_0xff51('0x23')](respondWithResult(_0x341e52,null))['catch'](handleError(_0x341e52,null));};exports[_0xff51('0x46')]=function(_0x5d22ee,_0x2a665d){return db[_0xff51('0x3d')][_0xff51('0x46')](_0x5d22ee[_0xff51('0x47')],{})[_0xff51('0x23')](respondWithResult(_0x2a665d,0xc9))[_0xff51('0x41')](handleError(_0x2a665d,null));};exports[_0xff51('0x22')]=function(_0x19cc90,_0x274eb8){if(_0x19cc90[_0xff51('0x47')]['id']){delete _0x19cc90['body']['id'];}return db[_0xff51('0x3d')][_0xff51('0x45')]({'where':{'id':_0x19cc90[_0xff51('0x48')]['id']}})['then'](handleEntityNotFound(_0x274eb8,null))[_0xff51('0x23')](saveUpdates(_0x19cc90[_0xff51('0x47')],null))[_0xff51('0x23')](respondWithResult(_0x274eb8,null))[_0xff51('0x41')](handleError(_0x274eb8,null));};exports[_0xff51('0x49')]=function(_0x58377f,_0x354af3){return db[_0xff51('0x3d')][_0xff51('0x45')]({'where':{'id':_0x58377f['params']['id']}})[_0xff51('0x23')](handleEntityNotFound(_0x354af3,null))[_0xff51('0x23')](removeEntity(_0x354af3,null))[_0xff51('0x41')](handleError(_0x354af3,null));};exports[_0xff51('0x4a')]=function(_0x17d5e6,_0x1ed5c9){return db[_0xff51('0x3d')][_0xff51('0x4a')]()['then'](respondWithResult(_0x1ed5c9,null))['catch'](handleError(_0x1ed5c9,null));};
\ No newline at end of file
+var _0xe18a=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','JscriptyQuestionReport','includeAll','include','findAll','rows','catch','params','keys','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','intersection','model'];(function(_0x187924,_0x17e8e1){var _0x434cff=function(_0xf187eb){while(--_0xf187eb){_0x187924['push'](_0x187924['shift']());}};_0x434cff(++_0x17e8e1);}(_0xe18a,0x10a));var _0xae18=function(_0x10e9ac,_0x2d7aa3){_0x10e9ac=_0x10e9ac-0x0;var _0x1424b0=_0xe18a[_0x10e9ac];return _0x1424b0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xae18('0x0'));var zipdir=require(_0xae18('0x1'));var jsonpatch=require(_0xae18('0x2'));var rp=require(_0xae18('0x3'));var moment=require(_0xae18('0x4'));var BPromise=require(_0xae18('0x5'));var Mustache=require(_0xae18('0x6'));var util=require(_0xae18('0x7'));var path=require(_0xae18('0x8'));var sox=require('sox');var csv=require(_0xae18('0x9'));var ejs=require(_0xae18('0xa'));var fs=require('fs');var fs_extra=require(_0xae18('0xb'));var _=require(_0xae18('0xc'));var squel=require(_0xae18('0xd'));var crypto=require('crypto');var jsforce=require(_0xae18('0xe'));var deskjs=require(_0xae18('0xf'));var toCsv=require(_0xae18('0x9'));var querystring=require(_0xae18('0x10'));var Papa=require(_0xae18('0x11'));var Redis=require(_0xae18('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xae18('0x13'));var as=require(_0xae18('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xae18('0x15'));var config=require(_0xae18('0x16'));var licenseUtil=require(_0xae18('0x17'));var db=require(_0xae18('0x18'))['db'];function respondWithStatusCode(_0x4d28d7,_0x1062f0){_0x1062f0=_0x1062f0||0xcc;return function(_0x2aa04f){if(_0x2aa04f){return _0x4d28d7[_0xae18('0x19')](_0x1062f0);}return _0x4d28d7[_0xae18('0x1a')](_0x1062f0)['end']();};}function respondWithResult(_0x1662be,_0x285c92){_0x285c92=_0x285c92||0xc8;return function(_0x27a0d5){if(_0x27a0d5){return _0x1662be[_0xae18('0x1a')](_0x285c92)['json'](_0x27a0d5);}};}function respondWithFilteredResult(_0xed201a,_0x37f62f){return function(_0x4cf8c3){if(_0x4cf8c3){var _0x42061c=typeof _0x37f62f[_0xae18('0x1b')]===_0xae18('0x1c')&&typeof _0x37f62f['limit']===_0xae18('0x1c');var _0xade5ed=_0x4cf8c3[_0xae18('0x1d')];var _0x3e8637=_0x42061c?0x0:_0x37f62f[_0xae18('0x1b')];var _0x12e1a1=_0x42061c?_0x4cf8c3[_0xae18('0x1d')]:_0x37f62f['offset']+_0x37f62f[_0xae18('0x1e')];var _0x46f6e5;if(_0x12e1a1>=_0xade5ed){_0x12e1a1=_0xade5ed;_0x46f6e5=0xc8;}else{_0x46f6e5=0xce;}_0xed201a[_0xae18('0x1a')](_0x46f6e5);return _0xed201a[_0xae18('0x1f')](_0xae18('0x20'),_0x3e8637+'-'+_0x12e1a1+'/'+_0xade5ed)[_0xae18('0x21')](_0x4cf8c3);}return null;};}function patchUpdates(_0x3be62a){return function(_0x13108c){try{jsonpatch[_0xae18('0x22')](_0x13108c,_0x3be62a,!![]);}catch(_0x2c56a7){return BPromise[_0xae18('0x23')](_0x2c56a7);}return _0x13108c[_0xae18('0x24')]();};}function saveUpdates(_0x16a088,_0x3e72e7){return function(_0x523f26){if(_0x523f26){return _0x523f26[_0xae18('0x25')](_0x16a088)['then'](function(_0x24df9b){return _0x24df9b;});}return null;};}function removeEntity(_0x1b5760,_0x379f64){return function(_0x1d96bf){if(_0x1d96bf){return _0x1d96bf[_0xae18('0x26')]()[_0xae18('0x27')](function(){_0x1b5760[_0xae18('0x1a')](0xcc)[_0xae18('0x28')]();});}};}function handleEntityNotFound(_0x16368e,_0x288fd5){return function(_0x5a4d05){if(!_0x5a4d05){_0x16368e[_0xae18('0x19')](0x194);}return _0x5a4d05;};}function handleError(_0x50f5c3,_0x3fb8da){_0x3fb8da=_0x3fb8da||0x1f4;return function(_0x1da138){logger[_0xae18('0x29')](_0x1da138[_0xae18('0x2a')]);if(_0x1da138[_0xae18('0x2b')]){delete _0x1da138[_0xae18('0x2b')];}_0x50f5c3[_0xae18('0x1a')](_0x3fb8da)[_0xae18('0x2c')](_0x1da138);};}exports[_0xae18('0x2d')]=function(_0x5c6ebd,_0xefd3a8){var _0x522b50={},_0x36e722={},_0x3db8db={'count':0x0,'rows':[]};var _0xa4bf2f=_['map'](db['JscriptyQuestionReport'][_0xae18('0x2e')],function(_0x3061ba){return{'name':_0x3061ba[_0xae18('0x2f')],'type':_0x3061ba[_0xae18('0x30')][_0xae18('0x31')]};});_0x36e722['model']=_[_0xae18('0x32')](_0xa4bf2f,_0xae18('0x2b'));_0x36e722['query']=_['keys'](_0x5c6ebd[_0xae18('0x33')]);_0x36e722['filters']=_[_0xae18('0x34')](_0x36e722[_0xae18('0x35')],_0x36e722[_0xae18('0x33')]);_0x522b50[_0xae18('0x36')]=_[_0xae18('0x34')](_0x36e722[_0xae18('0x35')],qs['fields'](_0x5c6ebd[_0xae18('0x33')][_0xae18('0x37')]));_0x522b50['attributes']=_0x522b50[_0xae18('0x36')][_0xae18('0x38')]?_0x522b50['attributes']:_0x36e722[_0xae18('0x35')];if(!_0x5c6ebd['query'][_0xae18('0x39')](_0xae18('0x3a'))){_0x522b50[_0xae18('0x1e')]=qs[_0xae18('0x1e')](_0x5c6ebd['query'][_0xae18('0x1e')]);_0x522b50['offset']=qs['offset'](_0x5c6ebd['query'][_0xae18('0x1b')]);}_0x522b50[_0xae18('0x3b')]=qs[_0xae18('0x3c')](_0x5c6ebd['query'][_0xae18('0x3c')]);_0x522b50[_0xae18('0x3d')]=qs[_0xae18('0x3e')](_[_0xae18('0x3f')](_0x5c6ebd[_0xae18('0x33')],_0x36e722[_0xae18('0x3e')]),_0xa4bf2f);if(_0x5c6ebd['query'][_0xae18('0x40')]){_0x522b50[_0xae18('0x3d')]=_[_0xae18('0x41')](_0x522b50[_0xae18('0x3d')],{'$or':_[_0xae18('0x32')](_0xa4bf2f,function(_0x154dd5){if(_0x154dd5[_0xae18('0x30')]!==_0xae18('0x42')){var _0x2dd29e={};_0x2dd29e[_0x154dd5[_0xae18('0x2b')]]={'$like':'%'+_0x5c6ebd['query']['filter']+'%'};return _0x2dd29e;}})});}_0x522b50=_[_0xae18('0x41')]({},_0x522b50,_0x5c6ebd['options']);var _0x4cff1d={'where':_0x522b50[_0xae18('0x3d')]};return db[_0xae18('0x43')][_0xae18('0x1d')](_0x4cff1d)['then'](function(_0x5f4417){_0x3db8db[_0xae18('0x1d')]=_0x5f4417;if(_0x5c6ebd['query'][_0xae18('0x44')]){_0x522b50[_0xae18('0x45')]=[{'all':!![]}];}return db[_0xae18('0x43')][_0xae18('0x46')](_0x522b50);})[_0xae18('0x27')](function(_0x20aa17){_0x3db8db[_0xae18('0x47')]=_0x20aa17;return _0x3db8db;})[_0xae18('0x27')](respondWithFilteredResult(_0xefd3a8,_0x522b50))[_0xae18('0x48')](handleError(_0xefd3a8,null));};exports['show']=function(_0x4151f2,_0x281094){var _0x3b94b7={'raw':!![],'where':{'id':_0x4151f2[_0xae18('0x49')]['id']}},_0x3cd57d={};_0x3cd57d[_0xae18('0x35')]=_[_0xae18('0x4a')](db['JscriptyQuestionReport'][_0xae18('0x2e')]);_0x3cd57d['query']=_[_0xae18('0x4a')](_0x4151f2[_0xae18('0x33')]);_0x3cd57d['filters']=_['intersection'](_0x3cd57d[_0xae18('0x35')],_0x3cd57d[_0xae18('0x33')]);_0x3b94b7['attributes']=_[_0xae18('0x34')](_0x3cd57d['model'],qs['fields'](_0x4151f2['query'][_0xae18('0x37')]));_0x3b94b7[_0xae18('0x36')]=_0x3b94b7[_0xae18('0x36')]['length']?_0x3b94b7['attributes']:_0x3cd57d['model'];if(_0x4151f2['query'][_0xae18('0x44')]){_0x3b94b7[_0xae18('0x45')]=[{'all':!![]}];}_0x3b94b7=_[_0xae18('0x41')]({},_0x3b94b7,_0x4151f2[_0xae18('0x4b')]);return db[_0xae18('0x43')][_0xae18('0x4c')](_0x3b94b7)[_0xae18('0x27')](handleEntityNotFound(_0x281094,null))[_0xae18('0x27')](respondWithResult(_0x281094,null))['catch'](handleError(_0x281094,null));};exports[_0xae18('0x4d')]=function(_0x3739e4,_0x595e70){return db[_0xae18('0x43')][_0xae18('0x4d')](_0x3739e4['body'],{})['then'](respondWithResult(_0x595e70,0xc9))[_0xae18('0x48')](handleError(_0x595e70,null));};exports[_0xae18('0x25')]=function(_0x48f40b,_0x529cb4){if(_0x48f40b['body']['id']){delete _0x48f40b[_0xae18('0x4e')]['id'];}return db['JscriptyQuestionReport'][_0xae18('0x4c')]({'where':{'id':_0x48f40b[_0xae18('0x49')]['id']}})['then'](handleEntityNotFound(_0x529cb4,null))[_0xae18('0x27')](saveUpdates(_0x48f40b[_0xae18('0x4e')],null))['then'](respondWithResult(_0x529cb4,null))[_0xae18('0x48')](handleError(_0x529cb4,null));};exports[_0xae18('0x26')]=function(_0x5034ea,_0x521232){return db[_0xae18('0x43')]['find']({'where':{'id':_0x5034ea[_0xae18('0x49')]['id']}})['then'](handleEntityNotFound(_0x521232,null))[_0xae18('0x27')](removeEntity(_0x521232,null))[_0xae18('0x48')](handleError(_0x521232,null));};exports[_0xae18('0x4f')]=function(_0x439cb1,_0x18c6b4){return db[_0xae18('0x43')]['describe']()[_0xae18('0x27')](respondWithResult(_0x18c6b4,null))[_0xae18('0x48')](handleError(_0x18c6b4,null));};
\ No newline at end of file
index 74154bd..a7db18d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf15c=['util','../../config/logger','api','moment','request-promise','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash'];(function(_0x51ffcb,_0x29d838){var _0x584420=function(_0x368885){while(--_0x368885){_0x51ffcb['push'](_0x51ffcb['shift']());}};_0x584420(++_0x29d838);}(_0xf15c,0x8f));var _0xcf15=function(_0x18f21f,_0x44e7ee){_0x18f21f=_0x18f21f-0x0;var _0x2f1a1e=_0xf15c[_0x18f21f];return _0x2f1a1e;};'use strict';var _=require(_0xcf15('0x0'));var util=require(_0xcf15('0x1'));var logger=require(_0xcf15('0x2'))(_0xcf15('0x3'));var moment=require(_0xcf15('0x4'));var BPromise=require('bluebird');var rp=require(_0xcf15('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcf15('0x6'));var attributes=require(_0xcf15('0x7'));module[_0xcf15('0x8')]=function(_0x147484,_0x13d7bd){return _0x147484[_0xcf15('0x9')](_0xcf15('0xa'),attributes,{'tableName':_0xcf15('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd00=['moment','bluebird','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','api'];(function(_0x54ef77,_0x2f78da){var _0x489951=function(_0x4d0f70){while(--_0x4d0f70){_0x54ef77['push'](_0x54ef77['shift']());}};_0x489951(++_0x2f78da);}(_0xfd00,0x11d));var _0x0fd0=function(_0x2ad228,_0x3a77c8){_0x2ad228=_0x2ad228-0x0;var _0x13010c=_0xfd00[_0x2ad228];return _0x13010c;};'use strict';var _=require(_0x0fd0('0x0'));var util=require(_0x0fd0('0x1'));var logger=require('../../config/logger')(_0x0fd0('0x2'));var moment=require(_0x0fd0('0x3'));var BPromise=require(_0x0fd0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0fd0('0x5'));var config=require(_0x0fd0('0x6'));var attributes=require(_0x0fd0('0x7'));module[_0x0fd0('0x8')]=function(_0x39de9b,_0x1d7948){return _0x39de9b[_0x0fd0('0x9')](_0x0fd0('0xa'),attributes,{'tableName':_0x0fd0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d968d33..95dcf79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d3=['http','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x205ab9,_0x174d3c){var _0x1daf25=function(_0x1cd064){while(--_0x1cd064){_0x205ab9['push'](_0x205ab9['shift']());}};_0x1daf25(++_0x174d3c);}(_0xe2d3,0x1d6));var _0x3e2d=function(_0x5311e8,_0x57c5bb){_0x5311e8=_0x5311e8-0x0;var _0x582ad8=_0xe2d3[_0x5311e8];return _0x582ad8;};'use strict';var _=require('lodash');var util=require(_0x3e2d('0x0'));var moment=require('moment');var BPromise=require(_0x3e2d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3e2d('0x2'));var db=require(_0x3e2d('0x3'))['db'];var utils=require(_0x3e2d('0x4'));var logger=require(_0x3e2d('0x5'))(_0x3e2d('0x6'));var config=require(_0x3e2d('0x7'));var jayson=require(_0x3e2d('0x8'));var client=jayson[_0x3e2d('0x9')][_0x3e2d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4fbffc,_0x1f97df,_0x2c4eac){return new BPromise(function(_0x537238,_0x5999e3){return client['request'](_0x4fbffc,_0x2c4eac)['then'](function(_0x22d180){logger[_0x3e2d('0xb')](_0x3e2d('0xc'),_0x1f97df,_0x3e2d('0xd'));logger[_0x3e2d('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x1f97df,'request\x20sent',JSON['stringify'](_0x22d180));if(_0x22d180[_0x3e2d('0xf')]){if(_0x22d180['error'][_0x3e2d('0x10')]===0x1f4){logger[_0x3e2d('0xf')](_0x3e2d('0xc'),_0x1f97df,_0x22d180[_0x3e2d('0xf')][_0x3e2d('0x11')]);return _0x5999e3(_0x22d180[_0x3e2d('0xf')][_0x3e2d('0x11')]);}logger[_0x3e2d('0xf')](_0x3e2d('0xc'),_0x1f97df,_0x22d180[_0x3e2d('0xf')][_0x3e2d('0x11')]);return _0x537238(_0x22d180[_0x3e2d('0xf')][_0x3e2d('0x11')]);}else{logger['info'](_0x3e2d('0xc'),_0x1f97df,_0x3e2d('0xd'));_0x537238(_0x22d180[_0x3e2d('0x12')][_0x3e2d('0x11')]);}})[_0x3e2d('0x13')](function(_0x4652b0){logger['error'](_0x3e2d('0xc'),_0x1f97df,_0x4652b0);_0x5999e3(_0x4652b0);});});}
\ No newline at end of file
+var _0x6735=['message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s'];(function(_0x5e32d5,_0x4bc865){var _0x2832af=function(_0x8f2c79){while(--_0x8f2c79){_0x5e32d5['push'](_0x5e32d5['shift']());}};_0x2832af(++_0x4bc865);}(_0x6735,0x1b9));var _0x5673=function(_0x375224,_0x28f01d){_0x375224=_0x375224-0x0;var _0x52e9d9=_0x6735[_0x375224];return _0x52e9d9;};'use strict';var _=require(_0x5673('0x0'));var util=require(_0x5673('0x1'));var moment=require(_0x5673('0x2'));var BPromise=require(_0x5673('0x3'));var rs=require(_0x5673('0x4'));var fs=require('fs');var Redis=require(_0x5673('0x5'));var db=require(_0x5673('0x6'))['db'];var utils=require(_0x5673('0x7'));var logger=require(_0x5673('0x8'))(_0x5673('0x9'));var config=require(_0x5673('0xa'));var jayson=require(_0x5673('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x205600,_0xc02361,_0x60fa2a){return new BPromise(function(_0x45d041,_0x17c198){return client[_0x5673('0xc')](_0x205600,_0x60fa2a)['then'](function(_0x3d9690){logger[_0x5673('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0xc02361,_0x5673('0xe'));logger[_0x5673('0xf')](_0x5673('0x10'),_0xc02361,_0x5673('0xe'),JSON[_0x5673('0x11')](_0x3d9690));if(_0x3d9690[_0x5673('0x12')]){if(_0x3d9690[_0x5673('0x12')][_0x5673('0x13')]===0x1f4){logger['error'](_0x5673('0x14'),_0xc02361,_0x3d9690[_0x5673('0x12')]['message']);return _0x17c198(_0x3d9690['error'][_0x5673('0x15')]);}logger[_0x5673('0x12')]('JscriptyQuestionReport,\x20%s,\x20%s',_0xc02361,_0x3d9690[_0x5673('0x12')][_0x5673('0x15')]);return _0x45d041(_0x3d9690['error'][_0x5673('0x15')]);}else{logger[_0x5673('0xd')](_0x5673('0x14'),_0xc02361,_0x5673('0xe'));_0x45d041(_0x3d9690['result']['message']);}})['catch'](function(_0x581757){logger[_0x5673('0x12')](_0x5673('0x14'),_0xc02361,_0x581757);_0x17c198(_0x581757);});});}
\ No newline at end of file
index 51b285f..ab2f90f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc119=['post','create','put','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/questions'];(function(_0x3e8167,_0x47b811){var _0x5941b8=function(_0x51336c){while(--_0x51336c){_0x3e8167['push'](_0x3e8167['shift']());}};_0x5941b8(++_0x47b811);}(_0xc119,0x165));var _0x9c11=function(_0x56740a,_0x568894){_0x56740a=_0x56740a-0x0;var _0x257144=_0xc119[_0x56740a];return _0x257144;};'use strict';var multer=require(_0x9c11('0x0'));var util=require(_0x9c11('0x1'));var path=require('path');var timeout=require(_0x9c11('0x2'));var express=require(_0x9c11('0x3'));var router=express[_0x9c11('0x4')]();var fs_extra=require(_0x9c11('0x5'));var auth=require(_0x9c11('0x6'));var interaction=require(_0x9c11('0x7'));var config=require(_0x9c11('0x8'));var controller=require(_0x9c11('0x9'));router[_0x9c11('0xa')]('/',auth[_0x9c11('0xb')](),controller[_0x9c11('0xc')]);router[_0x9c11('0xa')](_0x9c11('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x9c11('0xa')](_0x9c11('0xe'),auth['isAuthenticated'](),controller[_0x9c11('0xf')]);router['get'](_0x9c11('0x10'),auth[_0x9c11('0xb')](),controller['getQuestions']);router[_0x9c11('0x11')]('/',auth['isAuthenticated'](),controller[_0x9c11('0x12')]);router[_0x9c11('0x13')]('/:id',auth[_0x9c11('0xb')](),controller[_0x9c11('0x14')]);router[_0x9c11('0x15')](_0x9c11('0xe'),auth[_0x9c11('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2305=['util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','describe','show','/:id/questions','getQuestions','create','exports','multer'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x2305,0x143));var _0x5230=function(_0x351509,_0x54725c){_0x351509=_0x351509-0x0;var _0x4e9861=_0x2305[_0x351509];return _0x4e9861;};'use strict';var multer=require(_0x5230('0x0'));var util=require(_0x5230('0x1'));var path=require(_0x5230('0x2'));var timeout=require(_0x5230('0x3'));var express=require(_0x5230('0x4'));var router=express[_0x5230('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x5230('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5230('0x7'));var controller=require(_0x5230('0x8'));router[_0x5230('0x9')]('/',auth[_0x5230('0xa')](),controller[_0x5230('0xb')]);router['get']('/describe',auth[_0x5230('0xa')](),controller[_0x5230('0xc')]);router[_0x5230('0x9')]('/:id',auth[_0x5230('0xa')](),controller[_0x5230('0xd')]);router[_0x5230('0x9')](_0x5230('0xe'),auth['isAuthenticated'](),controller[_0x5230('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5230('0x10')]);router['put']('/:id',auth[_0x5230('0xa')](),controller['update']);router['delete']('/:id',auth[_0x5230('0xa')](),controller['destroy']);module[_0x5230('0x11')]=router;
\ No newline at end of file
index f70f001..902cce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a0=['setDataValue','starttime','format','STRING','BOOLEAN','moment','exports','DATE'];(function(_0x440018,_0x3307ab){var _0x5eb49d=function(_0x5c27a2){while(--_0x5c27a2){_0x440018['push'](_0x440018['shift']());}};_0x5eb49d(++_0x3307ab);}(_0x00a0,0xd5));var _0x000a=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x00a0[_0x178e48];return _0x440d7e;};'use strict';var moment=require(_0x000a('0x0'));var Sequelize=require('sequelize');module[_0x000a('0x1')]={'starttime':{'type':Sequelize[_0x000a('0x2')],'set':function(_0x37081){this[_0x000a('0x3')](_0x000a('0x4'),_0x37081);this[_0x000a('0x3')]('endtime',moment()[_0x000a('0x5')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x000a('0x2')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x000a('0x6')]},'queue':{'type':Sequelize[_0x000a('0x6')]},'uniqueid':{'type':Sequelize[_0x000a('0x6')]},'calleridname':{'type':Sequelize[_0x000a('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0x000a('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xfae3=['STRING','moment','sequelize','exports','DATE','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1f3f9b,_0x55efc3){var _0x45d4e2=function(_0x4b8311){while(--_0x4b8311){_0x1f3f9b['push'](_0x1f3f9b['shift']());}};_0x45d4e2(++_0x55efc3);}(_0xfae3,0xa1));var _0x3fae=function(_0x17c283,_0x587fcc){_0x17c283=_0x17c283-0x0;var _0x4e0800=_0xfae3[_0x17c283];return _0x4e0800;};'use strict';var moment=require(_0x3fae('0x0'));var Sequelize=require(_0x3fae('0x1'));module[_0x3fae('0x2')]={'starttime':{'type':Sequelize[_0x3fae('0x3')],'set':function(_0x2e7d22){this[_0x3fae('0x4')](_0x3fae('0x5'),_0x2e7d22);this[_0x3fae('0x4')](_0x3fae('0x6'),moment()[_0x3fae('0x7')](_0x3fae('0x8')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x3fae('0x9')]},'projectname':{'type':Sequelize[_0x3fae('0x9')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x3fae('0x9')]},'calleridnum':{'type':Sequelize[_0x3fae('0x9')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 3685ac9..7aae3d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ca7=['hasOwnProperty','nolimit','SessionId','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','send','index','map','JscriptySessionReport','rawAttributes','fieldName','key','model','name','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','getQuestions','findOne','JscriptyQuestionReport','length'];(function(_0x33b861,_0x23f2c6){var _0x4aa688=function(_0x284ac4){while(--_0x284ac4){_0x33b861['push'](_0x33b861['shift']());}};_0x4aa688(++_0x23f2c6);}(_0x5ca7,0x1e9));var _0x75ca=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x5ca7[_0x50a0c2];return _0x5ebadd;};'use strict';var emlformat=require(_0x75ca('0x0'));var rimraf=require(_0x75ca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75ca('0x2'));var moment=require(_0x75ca('0x3'));var BPromise=require(_0x75ca('0x4'));var Mustache=require(_0x75ca('0x5'));var util=require(_0x75ca('0x6'));var path=require('path');var sox=require(_0x75ca('0x7'));var csv=require(_0x75ca('0x8'));var ejs=require(_0x75ca('0x9'));var fs=require('fs');var fs_extra=require(_0x75ca('0xa'));var _=require(_0x75ca('0xb'));var squel=require('squel');var crypto=require(_0x75ca('0xc'));var jsforce=require(_0x75ca('0xd'));var deskjs=require(_0x75ca('0xe'));var toCsv=require(_0x75ca('0x8'));var querystring=require('querystring');var Papa=require(_0x75ca('0xf'));var Redis=require('ioredis');var authService=require(_0x75ca('0x10'));var qs=require(_0x75ca('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x75ca('0x12'))(_0x75ca('0x13'));var utils=require(_0x75ca('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x75ca('0x15'))['db'];function respondWithStatusCode(_0x37e804,_0x53d323){_0x53d323=_0x53d323||0xcc;return function(_0x349bba){if(_0x349bba){return _0x37e804[_0x75ca('0x16')](_0x53d323);}return _0x37e804['status'](_0x53d323)['end']();};}function respondWithResult(_0x6477d4,_0x169189){_0x169189=_0x169189||0xc8;return function(_0x5650c5){if(_0x5650c5){return _0x6477d4[_0x75ca('0x17')](_0x169189)[_0x75ca('0x18')](_0x5650c5);}};}function respondWithFilteredResult(_0x500899,_0x5d2aed){return function(_0x1685f5){if(_0x1685f5){var _0x4f69bd=typeof _0x5d2aed[_0x75ca('0x19')]===_0x75ca('0x1a')&&typeof _0x5d2aed[_0x75ca('0x1b')]==='undefined';var _0x2b9c6e=_0x1685f5[_0x75ca('0x1c')];var _0x3a0da1=_0x4f69bd?0x0:_0x5d2aed[_0x75ca('0x19')];var _0x546eb4=_0x4f69bd?_0x1685f5[_0x75ca('0x1c')]:_0x5d2aed['offset']+_0x5d2aed[_0x75ca('0x1b')];var _0x33faf5;if(_0x546eb4>=_0x2b9c6e){_0x546eb4=_0x2b9c6e;_0x33faf5=0xc8;}else{_0x33faf5=0xce;}_0x500899['status'](_0x33faf5);return _0x500899[_0x75ca('0x1d')](_0x75ca('0x1e'),_0x3a0da1+'-'+_0x546eb4+'/'+_0x2b9c6e)[_0x75ca('0x18')](_0x1685f5);}return null;};}function patchUpdates(_0x37f6dd){return function(_0x74d05e){try{jsonpatch[_0x75ca('0x1f')](_0x74d05e,_0x37f6dd,!![]);}catch(_0x21eadc){return BPromise['reject'](_0x21eadc);}return _0x74d05e[_0x75ca('0x20')]();};}function saveUpdates(_0x3dc03a,_0x559162){return function(_0x4174c6){if(_0x4174c6){return _0x4174c6[_0x75ca('0x21')](_0x3dc03a)[_0x75ca('0x22')](function(_0x36a737){return _0x36a737;});}return null;};}function removeEntity(_0xa8d2af,_0x3deeaf){return function(_0x54f760){if(_0x54f760){return _0x54f760[_0x75ca('0x23')]()['then'](function(){_0xa8d2af[_0x75ca('0x17')](0xcc)[_0x75ca('0x24')]();});}};}function handleEntityNotFound(_0x564e23,_0x20817c){return function(_0x48eabc){if(!_0x48eabc){_0x564e23[_0x75ca('0x16')](0x194);}return _0x48eabc;};}function handleError(_0x3f9a77,_0x358552){_0x358552=_0x358552||0x1f4;return function(_0x34ab02){logger[_0x75ca('0x25')](_0x34ab02[_0x75ca('0x26')]);if(_0x34ab02['name']){delete _0x34ab02['name'];}_0x3f9a77[_0x75ca('0x17')](_0x358552)[_0x75ca('0x27')](_0x34ab02);};}exports[_0x75ca('0x28')]=function(_0x28755a,_0x143cff){var _0x2c7485={},_0x46a119={},_0x263b2e={'count':0x0,'rows':[]};var _0x59ce90=_[_0x75ca('0x29')](db[_0x75ca('0x2a')][_0x75ca('0x2b')],function(_0x18c216){return{'name':_0x18c216[_0x75ca('0x2c')],'type':_0x18c216['type'][_0x75ca('0x2d')]};});_0x46a119[_0x75ca('0x2e')]=_['map'](_0x59ce90,_0x75ca('0x2f'));_0x46a119[_0x75ca('0x30')]=_[_0x75ca('0x31')](_0x28755a[_0x75ca('0x30')]);_0x46a119[_0x75ca('0x32')]=_[_0x75ca('0x33')](_0x46a119[_0x75ca('0x2e')],_0x46a119[_0x75ca('0x30')]);_0x2c7485[_0x75ca('0x34')]=_[_0x75ca('0x33')](_0x46a119[_0x75ca('0x2e')],qs[_0x75ca('0x35')](_0x28755a[_0x75ca('0x30')][_0x75ca('0x35')]));_0x2c7485[_0x75ca('0x34')]=_0x2c7485[_0x75ca('0x34')]['length']?_0x2c7485[_0x75ca('0x34')]:_0x46a119[_0x75ca('0x2e')];if(!_0x28755a[_0x75ca('0x30')]['hasOwnProperty']('nolimit')){_0x2c7485[_0x75ca('0x1b')]=qs[_0x75ca('0x1b')](_0x28755a[_0x75ca('0x30')][_0x75ca('0x1b')]);_0x2c7485[_0x75ca('0x19')]=qs[_0x75ca('0x19')](_0x28755a['query']['offset']);}_0x2c7485[_0x75ca('0x36')]=qs[_0x75ca('0x37')](_0x28755a[_0x75ca('0x30')][_0x75ca('0x37')]);_0x2c7485[_0x75ca('0x38')]=qs['filters'](_[_0x75ca('0x39')](_0x28755a[_0x75ca('0x30')],_0x46a119[_0x75ca('0x32')]),_0x59ce90);if(_0x28755a[_0x75ca('0x30')][_0x75ca('0x3a')]){_0x2c7485[_0x75ca('0x38')]=_[_0x75ca('0x3b')](_0x2c7485[_0x75ca('0x38')],{'$or':_[_0x75ca('0x29')](_0x59ce90,function(_0x120281){if(_0x120281[_0x75ca('0x3c')]!==_0x75ca('0x3d')){var _0x7bc91f={};_0x7bc91f[_0x120281['name']]={'$like':'%'+_0x28755a[_0x75ca('0x30')][_0x75ca('0x3a')]+'%'};return _0x7bc91f;}})});}_0x2c7485=_['merge']({},_0x2c7485,_0x28755a[_0x75ca('0x3e')]);var _0x4cdbf9={'where':_0x2c7485[_0x75ca('0x38')]};return db['JscriptySessionReport'][_0x75ca('0x1c')](_0x4cdbf9)[_0x75ca('0x22')](function(_0xae95d2){_0x263b2e[_0x75ca('0x1c')]=_0xae95d2;if(_0x28755a['query'][_0x75ca('0x3f')]){_0x2c7485[_0x75ca('0x40')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x75ca('0x41')](_0x2c7485);})['then'](function(_0x4db2df){_0x263b2e[_0x75ca('0x42')]=_0x4db2df;return _0x263b2e;})[_0x75ca('0x22')](respondWithFilteredResult(_0x143cff,_0x2c7485))[_0x75ca('0x43')](handleError(_0x143cff,null));};exports[_0x75ca('0x44')]=function(_0x48834e,_0x1b6b21){var _0x3bcd73={'raw':!![],'where':{'id':_0x48834e[_0x75ca('0x45')]['id']}},_0x18e0f7={};_0x18e0f7[_0x75ca('0x2e')]=_['keys'](db[_0x75ca('0x2a')][_0x75ca('0x2b')]);_0x18e0f7[_0x75ca('0x30')]=_[_0x75ca('0x31')](_0x48834e[_0x75ca('0x30')]);_0x18e0f7[_0x75ca('0x32')]=_[_0x75ca('0x33')](_0x18e0f7[_0x75ca('0x2e')],_0x18e0f7[_0x75ca('0x30')]);_0x3bcd73[_0x75ca('0x34')]=_[_0x75ca('0x33')](_0x18e0f7[_0x75ca('0x2e')],qs['fields'](_0x48834e[_0x75ca('0x30')][_0x75ca('0x35')]));_0x3bcd73[_0x75ca('0x34')]=_0x3bcd73['attributes']['length']?_0x3bcd73['attributes']:_0x18e0f7[_0x75ca('0x2e')];if(_0x48834e[_0x75ca('0x30')][_0x75ca('0x3f')]){_0x3bcd73[_0x75ca('0x40')]=[{'all':!![]}];}_0x3bcd73=_[_0x75ca('0x3b')]({},_0x3bcd73,_0x48834e[_0x75ca('0x3e')]);return db[_0x75ca('0x2a')]['find'](_0x3bcd73)[_0x75ca('0x22')](handleEntityNotFound(_0x1b6b21,null))[_0x75ca('0x22')](respondWithResult(_0x1b6b21,null))['catch'](handleError(_0x1b6b21,null));};exports[_0x75ca('0x46')]=function(_0x4cbb1b,_0xd148){return db[_0x75ca('0x2a')][_0x75ca('0x46')](_0x4cbb1b[_0x75ca('0x47')],{})['then'](respondWithResult(_0xd148,0xc9))[_0x75ca('0x43')](handleError(_0xd148,null));};exports[_0x75ca('0x21')]=function(_0x5edc51,_0x10ab78){if(_0x5edc51[_0x75ca('0x47')]['id']){delete _0x5edc51[_0x75ca('0x47')]['id'];}return db[_0x75ca('0x2a')][_0x75ca('0x48')]({'where':{'id':_0x5edc51['params']['id']}})[_0x75ca('0x22')](handleEntityNotFound(_0x10ab78,null))[_0x75ca('0x22')](saveUpdates(_0x5edc51[_0x75ca('0x47')],null))['then'](respondWithResult(_0x10ab78,null))[_0x75ca('0x43')](handleError(_0x10ab78,null));};exports[_0x75ca('0x23')]=function(_0x4a776c,_0x22166b){return db[_0x75ca('0x2a')][_0x75ca('0x48')]({'where':{'id':_0x4a776c['params']['id']}})['then'](handleEntityNotFound(_0x22166b,null))[_0x75ca('0x22')](removeEntity(_0x22166b,null))[_0x75ca('0x43')](handleError(_0x22166b,null));};exports[_0x75ca('0x49')]=function(_0x3ac40d,_0x1419af){return db[_0x75ca('0x2a')]['describe']()[_0x75ca('0x22')](respondWithResult(_0x1419af,null))['catch'](handleError(_0x1419af,null));};exports[_0x75ca('0x4a')]=function(_0x58a45d,_0x3628d4,_0x1a58e0){var _0x3313d2={'raw':!![],'where':{}};var _0x16f3ca={};var _0x23115f={'count':0x0,'rows':[]};return db[_0x75ca('0x2a')][_0x75ca('0x4b')]({'where':{'id':_0x58a45d[_0x75ca('0x45')]['id']}})[_0x75ca('0x22')](handleEntityNotFound(_0x3628d4,null))[_0x75ca('0x22')](function(_0x58ef94){if(_0x58ef94){_0x16f3ca[_0x75ca('0x2e')]=_[_0x75ca('0x31')](db[_0x75ca('0x4c')][_0x75ca('0x2b')]);_0x16f3ca['query']=_['keys'](_0x58a45d[_0x75ca('0x30')]);_0x16f3ca['filters']=_[_0x75ca('0x33')](_0x16f3ca[_0x75ca('0x2e')],_0x16f3ca[_0x75ca('0x30')]);_0x3313d2['attributes']=_[_0x75ca('0x33')](_0x16f3ca['model'],qs[_0x75ca('0x35')](_0x58a45d[_0x75ca('0x30')][_0x75ca('0x35')]));_0x3313d2[_0x75ca('0x34')]=_0x3313d2['attributes'][_0x75ca('0x4d')]?_0x3313d2[_0x75ca('0x34')]:_0x16f3ca['model'];if(!_0x58a45d['query'][_0x75ca('0x4e')](_0x75ca('0x4f'))){_0x3313d2[_0x75ca('0x1b')]=qs[_0x75ca('0x1b')](_0x58a45d['query']['limit']);_0x3313d2[_0x75ca('0x19')]=qs[_0x75ca('0x19')](_0x58a45d[_0x75ca('0x30')][_0x75ca('0x19')]);}_0x3313d2[_0x75ca('0x36')]=qs['sort'](_0x58a45d[_0x75ca('0x30')][_0x75ca('0x37')]);_0x3313d2[_0x75ca('0x38')]=qs[_0x75ca('0x32')](_[_0x75ca('0x39')](_0x58a45d['query'],_0x16f3ca[_0x75ca('0x32')]));_0x3313d2['where'][_0x75ca('0x50')]=_0x58ef94['id'];if(_0x58a45d['query'][_0x75ca('0x3a')]){_0x3313d2[_0x75ca('0x38')]=_['merge'](_0x3313d2[_0x75ca('0x38')],{'$or':_[_0x75ca('0x29')](_0x3313d2[_0x75ca('0x34')],function(_0x194a5e){var _0x125660={};_0x125660[_0x194a5e]={'$like':'%'+_0x58a45d[_0x75ca('0x30')][_0x75ca('0x3a')]+'%'};return _0x125660;})});}_0x3313d2=_['merge']({},_0x3313d2,_0x58a45d[_0x75ca('0x3e')]);return db['JscriptyQuestionReport'][_0x75ca('0x1c')]({'where':_0x3313d2['where']})[_0x75ca('0x22')](function(_0x1609b9){_0x23115f[_0x75ca('0x1c')]=_0x1609b9;if(_0x58a45d[_0x75ca('0x30')][_0x75ca('0x3f')]){_0x3313d2[_0x75ca('0x40')]=[{'all':!![]}];}return db[_0x75ca('0x4c')][_0x75ca('0x41')](_0x3313d2);})[_0x75ca('0x22')](function(_0x2d860f){_0x23115f[_0x75ca('0x42')]=_0x2d860f;return _0x23115f;});}})[_0x75ca('0x22')](respondWithFilteredResult(_0x3628d4,_0x3313d2))['catch'](handleError(_0x3628d4,null));};
\ No newline at end of file
+var _0x692e=['../../mysqldb','status','end','offset','undefined','limit','set','Content-Range','apply','update','then','destroy','error','stack','send','index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','count','includeAll','include','rows','catch','show','params','options','find','create','body','describe','getQuestions','length','pick','SessionId','JscriptyQuestionReport','findAll','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x1e2059,_0x22cd7f){var _0x298ea9=function(_0x384706){while(--_0x384706){_0x1e2059['push'](_0x1e2059['shift']());}};_0x298ea9(++_0x22cd7f);}(_0x692e,0x131));var _0xe692=function(_0x10dfdf,_0x36b623){_0x10dfdf=_0x10dfdf-0x0;var _0x4d857d=_0x692e[_0x10dfdf];return _0x4d857d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe692('0x0'));var zipdir=require(_0xe692('0x1'));var jsonpatch=require(_0xe692('0x2'));var rp=require(_0xe692('0x3'));var moment=require('moment');var BPromise=require(_0xe692('0x4'));var Mustache=require(_0xe692('0x5'));var util=require(_0xe692('0x6'));var path=require(_0xe692('0x7'));var sox=require(_0xe692('0x8'));var csv=require(_0xe692('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe692('0xa'));var _=require(_0xe692('0xb'));var squel=require(_0xe692('0xc'));var crypto=require(_0xe692('0xd'));var jsforce=require(_0xe692('0xe'));var deskjs=require(_0xe692('0xf'));var toCsv=require(_0xe692('0x9'));var querystring=require(_0xe692('0x10'));var Papa=require(_0xe692('0x11'));var Redis=require(_0xe692('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xe692('0x13'));var as=require(_0xe692('0x14'));var hardwareService=require(_0xe692('0x15'));var logger=require(_0xe692('0x16'))(_0xe692('0x17'));var utils=require(_0xe692('0x18'));var config=require(_0xe692('0x19'));var licenseUtil=require(_0xe692('0x1a'));var db=require(_0xe692('0x1b'))['db'];function respondWithStatusCode(_0x4ee3fb,_0x5158ad){_0x5158ad=_0x5158ad||0xcc;return function(_0x512a6f){if(_0x512a6f){return _0x4ee3fb['sendStatus'](_0x5158ad);}return _0x4ee3fb[_0xe692('0x1c')](_0x5158ad)[_0xe692('0x1d')]();};}function respondWithResult(_0x22c87b,_0x272ba7){_0x272ba7=_0x272ba7||0xc8;return function(_0x5e7e55){if(_0x5e7e55){return _0x22c87b['status'](_0x272ba7)['json'](_0x5e7e55);}};}function respondWithFilteredResult(_0x289bf6,_0x4fc99a){return function(_0x36b2d1){if(_0x36b2d1){var _0x1898aa=typeof _0x4fc99a[_0xe692('0x1e')]===_0xe692('0x1f')&&typeof _0x4fc99a[_0xe692('0x20')]===_0xe692('0x1f');var _0x454212=_0x36b2d1['count'];var _0x54e527=_0x1898aa?0x0:_0x4fc99a[_0xe692('0x1e')];var _0x5731b9=_0x1898aa?_0x36b2d1['count']:_0x4fc99a['offset']+_0x4fc99a[_0xe692('0x20')];var _0x46d7f5;if(_0x5731b9>=_0x454212){_0x5731b9=_0x454212;_0x46d7f5=0xc8;}else{_0x46d7f5=0xce;}_0x289bf6[_0xe692('0x1c')](_0x46d7f5);return _0x289bf6[_0xe692('0x21')](_0xe692('0x22'),_0x54e527+'-'+_0x5731b9+'/'+_0x454212)['json'](_0x36b2d1);}return null;};}function patchUpdates(_0x44ed26){return function(_0x3d6e4a){try{jsonpatch[_0xe692('0x23')](_0x3d6e4a,_0x44ed26,!![]);}catch(_0x48bc71){return BPromise['reject'](_0x48bc71);}return _0x3d6e4a['save']();};}function saveUpdates(_0xccd557,_0x754a0){return function(_0x27a1b7){if(_0x27a1b7){return _0x27a1b7[_0xe692('0x24')](_0xccd557)[_0xe692('0x25')](function(_0x1312de){return _0x1312de;});}return null;};}function removeEntity(_0x23732e,_0x1ec308){return function(_0x57c30a){if(_0x57c30a){return _0x57c30a[_0xe692('0x26')]()[_0xe692('0x25')](function(){_0x23732e[_0xe692('0x1c')](0xcc)[_0xe692('0x1d')]();});}};}function handleEntityNotFound(_0x59e5e2,_0x259f6e){return function(_0x24447a){if(!_0x24447a){_0x59e5e2['sendStatus'](0x194);}return _0x24447a;};}function handleError(_0x4cc8ec,_0x77ae7a){_0x77ae7a=_0x77ae7a||0x1f4;return function(_0x642830){logger[_0xe692('0x27')](_0x642830[_0xe692('0x28')]);if(_0x642830['name']){delete _0x642830['name'];}_0x4cc8ec[_0xe692('0x1c')](_0x77ae7a)[_0xe692('0x29')](_0x642830);};}exports[_0xe692('0x2a')]=function(_0x62e8a3,_0x5a53dc){var _0x5f1788={},_0x41541c={},_0x4305a0={'count':0x0,'rows':[]};var _0x1e361f=_[_0xe692('0x2b')](db[_0xe692('0x2c')][_0xe692('0x2d')],function(_0x3f5ac3){return{'name':_0x3f5ac3[_0xe692('0x2e')],'type':_0x3f5ac3[_0xe692('0x2f')][_0xe692('0x30')]};});_0x41541c[_0xe692('0x31')]=_['map'](_0x1e361f,_0xe692('0x32'));_0x41541c[_0xe692('0x33')]=_[_0xe692('0x34')](_0x62e8a3[_0xe692('0x33')]);_0x41541c[_0xe692('0x35')]=_['intersection'](_0x41541c[_0xe692('0x31')],_0x41541c['query']);_0x5f1788[_0xe692('0x36')]=_[_0xe692('0x37')](_0x41541c[_0xe692('0x31')],qs[_0xe692('0x38')](_0x62e8a3['query'][_0xe692('0x38')]));_0x5f1788[_0xe692('0x36')]=_0x5f1788[_0xe692('0x36')]['length']?_0x5f1788[_0xe692('0x36')]:_0x41541c[_0xe692('0x31')];if(!_0x62e8a3[_0xe692('0x33')][_0xe692('0x39')](_0xe692('0x3a'))){_0x5f1788[_0xe692('0x20')]=qs['limit'](_0x62e8a3[_0xe692('0x33')][_0xe692('0x20')]);_0x5f1788[_0xe692('0x1e')]=qs[_0xe692('0x1e')](_0x62e8a3[_0xe692('0x33')][_0xe692('0x1e')]);}_0x5f1788[_0xe692('0x3b')]=qs[_0xe692('0x3c')](_0x62e8a3[_0xe692('0x33')][_0xe692('0x3c')]);_0x5f1788['where']=qs[_0xe692('0x35')](_['pick'](_0x62e8a3['query'],_0x41541c[_0xe692('0x35')]),_0x1e361f);if(_0x62e8a3[_0xe692('0x33')][_0xe692('0x3d')]){_0x5f1788['where']=_[_0xe692('0x3e')](_0x5f1788[_0xe692('0x3f')],{'$or':_[_0xe692('0x2b')](_0x1e361f,function(_0x57f34a){if(_0x57f34a[_0xe692('0x2f')]!==_0xe692('0x40')){var _0x44210e={};_0x44210e[_0x57f34a[_0xe692('0x32')]]={'$like':'%'+_0x62e8a3[_0xe692('0x33')][_0xe692('0x3d')]+'%'};return _0x44210e;}})});}_0x5f1788=_[_0xe692('0x3e')]({},_0x5f1788,_0x62e8a3['options']);var _0x19e2db={'where':_0x5f1788[_0xe692('0x3f')]};return db['JscriptySessionReport'][_0xe692('0x41')](_0x19e2db)[_0xe692('0x25')](function(_0x39feeb){_0x4305a0[_0xe692('0x41')]=_0x39feeb;if(_0x62e8a3[_0xe692('0x33')][_0xe692('0x42')]){_0x5f1788[_0xe692('0x43')]=[{'all':!![]}];}return db[_0xe692('0x2c')]['findAll'](_0x5f1788);})[_0xe692('0x25')](function(_0x1f8b7f){_0x4305a0[_0xe692('0x44')]=_0x1f8b7f;return _0x4305a0;})['then'](respondWithFilteredResult(_0x5a53dc,_0x5f1788))[_0xe692('0x45')](handleError(_0x5a53dc,null));};exports[_0xe692('0x46')]=function(_0x5c7cf7,_0x14ccd0){var _0x324138={'raw':!![],'where':{'id':_0x5c7cf7[_0xe692('0x47')]['id']}},_0x46a15d={};_0x46a15d[_0xe692('0x31')]=_[_0xe692('0x34')](db[_0xe692('0x2c')][_0xe692('0x2d')]);_0x46a15d[_0xe692('0x33')]=_[_0xe692('0x34')](_0x5c7cf7['query']);_0x46a15d['filters']=_[_0xe692('0x37')](_0x46a15d[_0xe692('0x31')],_0x46a15d[_0xe692('0x33')]);_0x324138[_0xe692('0x36')]=_[_0xe692('0x37')](_0x46a15d[_0xe692('0x31')],qs[_0xe692('0x38')](_0x5c7cf7[_0xe692('0x33')][_0xe692('0x38')]));_0x324138['attributes']=_0x324138[_0xe692('0x36')]['length']?_0x324138[_0xe692('0x36')]:_0x46a15d['model'];if(_0x5c7cf7[_0xe692('0x33')][_0xe692('0x42')]){_0x324138[_0xe692('0x43')]=[{'all':!![]}];}_0x324138=_[_0xe692('0x3e')]({},_0x324138,_0x5c7cf7[_0xe692('0x48')]);return db['JscriptySessionReport'][_0xe692('0x49')](_0x324138)[_0xe692('0x25')](handleEntityNotFound(_0x14ccd0,null))[_0xe692('0x25')](respondWithResult(_0x14ccd0,null))['catch'](handleError(_0x14ccd0,null));};exports[_0xe692('0x4a')]=function(_0x7e4d41,_0x2ab1a6){return db['JscriptySessionReport'][_0xe692('0x4a')](_0x7e4d41[_0xe692('0x4b')],{})[_0xe692('0x25')](respondWithResult(_0x2ab1a6,0xc9))['catch'](handleError(_0x2ab1a6,null));};exports[_0xe692('0x24')]=function(_0x19f891,_0x33a1ce){if(_0x19f891[_0xe692('0x4b')]['id']){delete _0x19f891[_0xe692('0x4b')]['id'];}return db[_0xe692('0x2c')][_0xe692('0x49')]({'where':{'id':_0x19f891[_0xe692('0x47')]['id']}})[_0xe692('0x25')](handleEntityNotFound(_0x33a1ce,null))[_0xe692('0x25')](saveUpdates(_0x19f891[_0xe692('0x4b')],null))[_0xe692('0x25')](respondWithResult(_0x33a1ce,null))[_0xe692('0x45')](handleError(_0x33a1ce,null));};exports['destroy']=function(_0x99acbd,_0x3d4335){return db['JscriptySessionReport'][_0xe692('0x49')]({'where':{'id':_0x99acbd[_0xe692('0x47')]['id']}})[_0xe692('0x25')](handleEntityNotFound(_0x3d4335,null))[_0xe692('0x25')](removeEntity(_0x3d4335,null))[_0xe692('0x45')](handleError(_0x3d4335,null));};exports[_0xe692('0x4c')]=function(_0xfc633,_0x2f1dc0){return db[_0xe692('0x2c')][_0xe692('0x4c')]()[_0xe692('0x25')](respondWithResult(_0x2f1dc0,null))[_0xe692('0x45')](handleError(_0x2f1dc0,null));};exports[_0xe692('0x4d')]=function(_0x59c5ba,_0x42f0d0,_0x4d2614){var _0x3aea2b={'raw':!![],'where':{}};var _0x2efc90={};var _0x157b7e={'count':0x0,'rows':[]};return db[_0xe692('0x2c')]['findOne']({'where':{'id':_0x59c5ba['params']['id']}})[_0xe692('0x25')](handleEntityNotFound(_0x42f0d0,null))[_0xe692('0x25')](function(_0x3684a0){if(_0x3684a0){_0x2efc90[_0xe692('0x31')]=_['keys'](db['JscriptyQuestionReport']['rawAttributes']);_0x2efc90[_0xe692('0x33')]=_['keys'](_0x59c5ba[_0xe692('0x33')]);_0x2efc90[_0xe692('0x35')]=_[_0xe692('0x37')](_0x2efc90[_0xe692('0x31')],_0x2efc90[_0xe692('0x33')]);_0x3aea2b[_0xe692('0x36')]=_[_0xe692('0x37')](_0x2efc90[_0xe692('0x31')],qs[_0xe692('0x38')](_0x59c5ba['query'][_0xe692('0x38')]));_0x3aea2b[_0xe692('0x36')]=_0x3aea2b[_0xe692('0x36')][_0xe692('0x4e')]?_0x3aea2b[_0xe692('0x36')]:_0x2efc90[_0xe692('0x31')];if(!_0x59c5ba[_0xe692('0x33')][_0xe692('0x39')](_0xe692('0x3a'))){_0x3aea2b[_0xe692('0x20')]=qs[_0xe692('0x20')](_0x59c5ba['query'][_0xe692('0x20')]);_0x3aea2b[_0xe692('0x1e')]=qs['offset'](_0x59c5ba[_0xe692('0x33')][_0xe692('0x1e')]);}_0x3aea2b[_0xe692('0x3b')]=qs[_0xe692('0x3c')](_0x59c5ba['query'][_0xe692('0x3c')]);_0x3aea2b[_0xe692('0x3f')]=qs['filters'](_[_0xe692('0x4f')](_0x59c5ba['query'],_0x2efc90[_0xe692('0x35')]));_0x3aea2b[_0xe692('0x3f')][_0xe692('0x50')]=_0x3684a0['id'];if(_0x59c5ba[_0xe692('0x33')]['filter']){_0x3aea2b[_0xe692('0x3f')]=_[_0xe692('0x3e')](_0x3aea2b[_0xe692('0x3f')],{'$or':_[_0xe692('0x2b')](_0x3aea2b['attributes'],function(_0x17b66c){var _0x392fe3={};_0x392fe3[_0x17b66c]={'$like':'%'+_0x59c5ba[_0xe692('0x33')][_0xe692('0x3d')]+'%'};return _0x392fe3;})});}_0x3aea2b=_[_0xe692('0x3e')]({},_0x3aea2b,_0x59c5ba[_0xe692('0x48')]);return db['JscriptyQuestionReport'][_0xe692('0x41')]({'where':_0x3aea2b[_0xe692('0x3f')]})[_0xe692('0x25')](function(_0x2c18ca){_0x157b7e['count']=_0x2c18ca;if(_0x59c5ba['query'][_0xe692('0x42')]){_0x3aea2b[_0xe692('0x43')]=[{'all':!![]}];}return db[_0xe692('0x51')][_0xe692('0x52')](_0x3aea2b);})[_0xe692('0x25')](function(_0x4c871c){_0x157b7e[_0xe692('0x44')]=_0x4c871c;return _0x157b7e;});}})[_0xe692('0x25')](respondWithFilteredResult(_0x42f0d0,_0x3aea2b))[_0xe692('0x45')](handleError(_0x42f0d0,null));};
\ No newline at end of file
index 3e29366..ee8bf35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe015=['lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','report_jscripty_sessions'];(function(_0x2c5840,_0x35585e){var _0x274fab=function(_0x51469a){while(--_0x51469a){_0x2c5840['push'](_0x2c5840['shift']());}};_0x274fab(++_0x35585e);}(_0xe015,0x13b));var _0x5e01=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xe015[_0x432682];return _0x463d05;};'use strict';var _=require(_0x5e01('0x0'));var util=require(_0x5e01('0x1'));var logger=require(_0x5e01('0x2'))('api');var moment=require('moment');var BPromise=require(_0x5e01('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5e01('0x4'));var rimraf=require(_0x5e01('0x5'));var config=require(_0x5e01('0x6'));var attributes=require(_0x5e01('0x7'));module['exports']=function(_0x1814cb,_0x3d2da2){return _0x1814cb['define']('JscriptySessionReport',attributes,{'tableName':_0x5e01('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3831=['define','report_jscripty_sessions','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','./jscriptySessionReport.attributes'];(function(_0xc17082,_0x2e2dd6){var _0xd7596b=function(_0x1989c4){while(--_0x1989c4){_0xc17082['push'](_0xc17082['shift']());}};_0xd7596b(++_0x2e2dd6);}(_0x3831,0x14c));var _0x1383=function(_0x568d32,_0x25edf9){_0x568d32=_0x568d32-0x0;var _0x59d096=_0x3831[_0x568d32];return _0x59d096;};'use strict';var _=require(_0x1383('0x0'));var util=require('util');var logger=require(_0x1383('0x1'))(_0x1383('0x2'));var moment=require(_0x1383('0x3'));var BPromise=require(_0x1383('0x4'));var rp=require(_0x1383('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1383('0x6'));var config=require('../../config/environment');var attributes=require(_0x1383('0x7'));module['exports']=function(_0x5b64b1,_0x5eb4d8){return _0x5b64b1[_0x1383('0x8')]('JscriptySessionReport',attributes,{'tableName':_0x1383('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c6c6009..75c0f36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0xacf4,0xe7));var _0x4acf=function(_0x804022,_0x1c1df1){_0x804022=_0x804022-0x0;var _0xf804a8=_0xacf4[_0x804022];return _0xf804a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}
\ No newline at end of file
+var _0x57ca=['client','http','request','info','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptySessionReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x45182a,_0x3e4c97){var _0x26f510=function(_0x440364){while(--_0x440364){_0x45182a['push'](_0x45182a['shift']());}};_0x26f510(++_0x3e4c97);}(_0x57ca,0x108));var _0xa57c=function(_0x426c45,_0x341bcc){_0x426c45=_0x426c45-0x0;var _0x4398f6=_0x57ca[_0x426c45];return _0x4398f6;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('JscriptySessionReport,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('JscriptySessionReport,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
index 1179a58..2859ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x714d=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','put','/:id','isAuthenticated','update','/download_log_file','exports','util','path'];(function(_0x23d939,_0x4d2525){var _0x4c984b=function(_0x4bffec){while(--_0x4bffec){_0x23d939['push'](_0x23d939['shift']());}};_0x4c984b(++_0x4d2525);}(_0x714d,0x11b));var _0xd714=function(_0x47e2b9,_0x425eb2){_0x47e2b9=_0x47e2b9-0x0;var _0x1754bd=_0x714d[_0x47e2b9];return _0x1754bd;};'use strict';var multer=require('multer');var util=require(_0xd714('0x0'));var path=require(_0xd714('0x1'));var timeout=require(_0xd714('0x2'));var express=require('express');var router=express[_0xd714('0x3')]();var fs_extra=require(_0xd714('0x4'));var auth=require(_0xd714('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd714('0x6'));var controller=require('./license.controller');router[_0xd714('0x7')]('/',controller[_0xd714('0x8')]);router[_0xd714('0x9')](_0xd714('0xa'),auth[_0xd714('0xb')](),controller[_0xd714('0xc')]);router[_0xd714('0x7')](_0xd714('0xd'),auth['isAuthenticated'](),controller['downloadLogFile']);module[_0xd714('0xe')]=router;
\ No newline at end of file
+var _0xe110=['../../components/interaction/service','../../config/environment','./license.controller','get','index','put','isAuthenticated','/download_log_file','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x129959,_0x33083d){var _0x2279f5=function(_0x46cefa){while(--_0x46cefa){_0x129959['push'](_0x129959['shift']());}};_0x2279f5(++_0x33083d);}(_0xe110,0x119));var _0x0e11=function(_0x368457,_0x23b4eb){_0x368457=_0x368457-0x0;var _0x138291=_0xe110[_0x368457];return _0x138291;};'use strict';var multer=require(_0x0e11('0x0'));var util=require(_0x0e11('0x1'));var path=require(_0x0e11('0x2'));var timeout=require(_0x0e11('0x3'));var express=require(_0x0e11('0x4'));var router=express[_0x0e11('0x5')]();var fs_extra=require(_0x0e11('0x6'));var auth=require(_0x0e11('0x7'));var interaction=require(_0x0e11('0x8'));var config=require(_0x0e11('0x9'));var controller=require(_0x0e11('0xa'));router[_0x0e11('0xb')]('/',controller[_0x0e11('0xc')]);router[_0x0e11('0xd')]('/:id',auth[_0x0e11('0xe')](),controller['update']);router['get'](_0x0e11('0xf'),auth[_0x0e11('0xe')](),controller['downloadLogFile']);module[_0x0e11('0x10')]=router;
\ No newline at end of file
index 2cb5812..c9fa31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb726=['STRING','sequelize','TEXT'];(function(_0x51a56e,_0x5d6ee9){var _0x5a8685=function(_0x161c4c){while(--_0x161c4c){_0x51a56e['push'](_0x51a56e['shift']());}};_0x5a8685(++_0x5d6ee9);}(_0xb726,0x175));var _0x6b72=function(_0xe7c276,_0x391531){_0xe7c276=_0xe7c276-0x0;var _0x27fa13=_0xb726[_0xe7c276];return _0x27fa13;};'use strict';var Sequelize=require(_0x6b72('0x0'));module['exports']={'license':{'type':Sequelize[_0x6b72('0x1')]},'data1':{'type':Sequelize[_0x6b72('0x2')]},'data2':{'type':Sequelize[_0x6b72('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc85e=['STRING','sequelize','exports'];(function(_0x31ada2,_0x1ff020){var _0x3c1540=function(_0x4e5898){while(--_0x4e5898){_0x31ada2['push'](_0x31ada2['shift']());}};_0x3c1540(++_0x1ff020);}(_0xc85e,0x157));var _0xec85=function(_0x1f4b71,_0x1613a9){_0x1f4b71=_0x1f4b71-0x0;var _0x487f58=_0xc85e[_0x1f4b71];return _0x487f58;};'use strict';var Sequelize=require(_0xec85('0x0'));module[_0xec85('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xec85('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 72f704f..731bacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd44=['setHeader','Content-disposition','attachment;\x20filename=','Content-Type','text/plain','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','save','update','then','destroy','error','stack','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','getLicense','catch','body','License','params','get','key','demo','downloadLogFile','/var','xcally'];(function(_0xcd38d3,_0x3731b4){var _0x42d5b1=function(_0x480260){while(--_0x480260){_0xcd38d3['push'](_0xcd38d3['shift']());}};_0x42d5b1(++_0x3731b4);}(_0xbd44,0x1e8));var _0x4bd4=function(_0x5c5de3,_0x50043b){_0x5c5de3=_0x5c5de3-0x0;var _0x1f4179=_0xbd44[_0x5c5de3];return _0x1f4179;};'use strict';var emlformat=require(_0x4bd4('0x0'));var rimraf=require(_0x4bd4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4bd4('0x2'));var moment=require(_0x4bd4('0x3'));var BPromise=require(_0x4bd4('0x4'));var Mustache=require(_0x4bd4('0x5'));var util=require(_0x4bd4('0x6'));var path=require(_0x4bd4('0x7'));var sox=require(_0x4bd4('0x8'));var csv=require(_0x4bd4('0x9'));var ejs=require(_0x4bd4('0xa'));var fs=require('fs');var fs_extra=require(_0x4bd4('0xb'));var _=require(_0x4bd4('0xc'));var squel=require(_0x4bd4('0xd'));var crypto=require(_0x4bd4('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4bd4('0x9'));var querystring=require(_0x4bd4('0xf'));var Papa=require(_0x4bd4('0x10'));var Redis=require(_0x4bd4('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4bd4('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4bd4('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x4bd4('0x14'));var licenseUtil=require(_0x4bd4('0x15'));var db=require(_0x4bd4('0x16'))['db'];function respondWithStatusCode(_0x2464d,_0x137cdc){_0x137cdc=_0x137cdc||0xcc;return function(_0x5adae1){if(_0x5adae1){return _0x2464d[_0x4bd4('0x17')](_0x137cdc);}return _0x2464d['status'](_0x137cdc)[_0x4bd4('0x18')]();};}function respondWithResult(_0x551b20,_0x42c16f){_0x42c16f=_0x42c16f||0xc8;return function(_0x170cca){if(_0x170cca){return _0x551b20[_0x4bd4('0x19')](_0x42c16f)['json'](_0x170cca);}};}function respondWithFilteredResult(_0x2089df,_0x571d8e){return function(_0x5b964b){if(_0x5b964b){var _0x277f08=typeof _0x571d8e[_0x4bd4('0x1a')]===_0x4bd4('0x1b')&&typeof _0x571d8e[_0x4bd4('0x1c')]==='undefined';var _0x4f84d0=_0x5b964b[_0x4bd4('0x1d')];var _0x3b6982=_0x277f08?0x0:_0x571d8e[_0x4bd4('0x1a')];var _0xc19ccb=_0x277f08?_0x5b964b['count']:_0x571d8e[_0x4bd4('0x1a')]+_0x571d8e['limit'];var _0x3d0229;if(_0xc19ccb>=_0x4f84d0){_0xc19ccb=_0x4f84d0;_0x3d0229=0xc8;}else{_0x3d0229=0xce;}_0x2089df[_0x4bd4('0x19')](_0x3d0229);return _0x2089df[_0x4bd4('0x1e')]('Content-Range',_0x3b6982+'-'+_0xc19ccb+'/'+_0x4f84d0)[_0x4bd4('0x1f')](_0x5b964b);}return null;};}function patchUpdates(_0x47d388){return function(_0x461ef2){try{jsonpatch[_0x4bd4('0x20')](_0x461ef2,_0x47d388,!![]);}catch(_0x5d5816){return BPromise['reject'](_0x5d5816);}return _0x461ef2[_0x4bd4('0x21')]();};}function saveUpdates(_0x3814b0,_0x46e0a4){return function(_0x3db832){if(_0x3db832){return _0x3db832[_0x4bd4('0x22')](_0x3814b0)[_0x4bd4('0x23')](function(_0x35f513){return _0x35f513;});}return null;};}function removeEntity(_0x3f89e0,_0x522563){return function(_0x25813e){if(_0x25813e){return _0x25813e[_0x4bd4('0x24')]()[_0x4bd4('0x23')](function(){_0x3f89e0[_0x4bd4('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x174a13,_0x142930){return function(_0x4cd6ee){if(!_0x4cd6ee){_0x174a13[_0x4bd4('0x17')](0x194);}return _0x4cd6ee;};}function handleError(_0x106a42,_0x564331){_0x564331=_0x564331||0x1f4;return function(_0x5b6b49){logger[_0x4bd4('0x25')](_0x5b6b49[_0x4bd4('0x26')]);if(_0x5b6b49[_0x4bd4('0x27')]){delete _0x5b6b49['name'];}_0x106a42[_0x4bd4('0x19')](_0x564331)[_0x4bd4('0x28')](_0x5b6b49);};}var utilLicense=require('../../config/license/util');exports[_0x4bd4('0x29')]=function(_0x129f90,_0x5a55e1){var _0xdb3f56={'raw':!![],'where':{'id':0x1}},_0x1f77bf={};_0x1f77bf[_0x4bd4('0x2a')]=_[_0x4bd4('0x2b')](db['License'][_0x4bd4('0x2c')]);_0x1f77bf['query']=_[_0x4bd4('0x2b')](_0x129f90[_0x4bd4('0x2d')]);_0x1f77bf[_0x4bd4('0x2e')]=_[_0x4bd4('0x2f')](_0x1f77bf[_0x4bd4('0x2a')],_0x1f77bf['query']);_0xdb3f56[_0x4bd4('0x30')]=_[_0x4bd4('0x2f')](_0x1f77bf[_0x4bd4('0x2a')],qs[_0x4bd4('0x31')](_0x129f90[_0x4bd4('0x2d')][_0x4bd4('0x31')]));_0xdb3f56[_0x4bd4('0x30')]=_0xdb3f56[_0x4bd4('0x30')][_0x4bd4('0x32')]?_0xdb3f56[_0x4bd4('0x30')]:_0x1f77bf[_0x4bd4('0x2a')];_0xdb3f56=_[_0x4bd4('0x33')]({},_0xdb3f56,_0x129f90[_0x4bd4('0x34')]);return utilLicense[_0x4bd4('0x35')](_0xdb3f56)['then'](respondWithResult(_0x5a55e1,null))[_0x4bd4('0x36')](handleError(_0x5a55e1,null));};exports['update']=function(_0x5d8bd4,_0x5dbb4b){if(_0x5d8bd4[_0x4bd4('0x37')]['id']){delete _0x5d8bd4[_0x4bd4('0x37')]['id'];}return db[_0x4bd4('0x38')]['find']({'where':{'id':_0x5d8bd4[_0x4bd4('0x39')]['id']}})[_0x4bd4('0x23')](handleEntityNotFound(_0x5dbb4b,null))[_0x4bd4('0x23')](function(_0x122e94){var _0x575478=_0x122e94[_0x4bd4('0x3a')]({'plain':!![]});return utilLicense['checkLicense'](_0x575478,_0x5d8bd4[_0x4bd4('0x37')][_0x4bd4('0x3b')]);})[_0x4bd4('0x23')](function(_0x36777e){if(!_0x36777e[_0x4bd4('0x3c')]){return saveUpdates(_0x5d8bd4[_0x4bd4('0x37')],null);}return _0x36777e;})[_0x4bd4('0x23')](respondWithResult(_0x5dbb4b,null))[_0x4bd4('0x36')](handleError(_0x5dbb4b,null));};exports[_0x4bd4('0x3d')]=function(_0x5da3bc,_0x305d19){var _0x229042='license-info.log';var _0x5aee6e=path['join'](_0x4bd4('0x3e'),'log',_0x4bd4('0x3f'),_0x229042);_0x305d19[_0x4bd4('0x40')](_0x4bd4('0x41'),_0x4bd4('0x42')+_0x229042);_0x305d19[_0x4bd4('0x1e')](_0x4bd4('0x43'),_0x4bd4('0x44'));_0x305d19['download'](_0x5aee6e);};
\ No newline at end of file
+var _0xd384=['keys','License','rawAttributes','query','intersection','attributes','length','merge','options','getLicense','catch','body','find','params','key','demo','downloadLogFile','license-info.log','/var','log','xcally','Content-disposition','attachment;\x20filename=','Content-Type','text/plain','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','error','name','send','../../config/license/util','index','model'];(function(_0x395b3e,_0x476044){var _0x3365b5=function(_0x299876){while(--_0x299876){_0x395b3e['push'](_0x395b3e['shift']());}};_0x3365b5(++_0x476044);}(_0xd384,0x1e0));var _0x4d38=function(_0x2d207a,_0x37313a){_0x2d207a=_0x2d207a-0x0;var _0x1e5c90=_0xd384[_0x2d207a];return _0x1e5c90;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4d38('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4d38('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x4d38('0x2'));var util=require(_0x4d38('0x3'));var path=require(_0x4d38('0x4'));var sox=require(_0x4d38('0x5'));var csv=require(_0x4d38('0x6'));var ejs=require(_0x4d38('0x7'));var fs=require('fs');var fs_extra=require(_0x4d38('0x8'));var _=require(_0x4d38('0x9'));var squel=require('squel');var crypto=require(_0x4d38('0xa'));var jsforce=require(_0x4d38('0xb'));var deskjs=require(_0x4d38('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4d38('0xd'));var Redis=require(_0x4d38('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4d38('0xf'));var hardwareService=require(_0x4d38('0x10'));var logger=require(_0x4d38('0x11'))(_0x4d38('0x12'));var utils=require('../../config/utils');var config=require(_0x4d38('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc88d6e,_0x3f9bca){_0x3f9bca=_0x3f9bca||0xcc;return function(_0x74e97b){if(_0x74e97b){return _0xc88d6e[_0x4d38('0x14')](_0x3f9bca);}return _0xc88d6e[_0x4d38('0x15')](_0x3f9bca)[_0x4d38('0x16')]();};}function respondWithResult(_0x4316f2,_0x1e35b7){_0x1e35b7=_0x1e35b7||0xc8;return function(_0x42fa52){if(_0x42fa52){return _0x4316f2[_0x4d38('0x15')](_0x1e35b7)[_0x4d38('0x17')](_0x42fa52);}};}function respondWithFilteredResult(_0x109ac8,_0x1f7e46){return function(_0x5bfa45){if(_0x5bfa45){var _0x50e50a=typeof _0x1f7e46[_0x4d38('0x18')]==='undefined'&&typeof _0x1f7e46[_0x4d38('0x19')]===_0x4d38('0x1a');var _0x13d6ca=_0x5bfa45[_0x4d38('0x1b')];var _0x47a6f3=_0x50e50a?0x0:_0x1f7e46['offset'];var _0x22ef1a=_0x50e50a?_0x5bfa45[_0x4d38('0x1b')]:_0x1f7e46[_0x4d38('0x18')]+_0x1f7e46[_0x4d38('0x19')];var _0x135426;if(_0x22ef1a>=_0x13d6ca){_0x22ef1a=_0x13d6ca;_0x135426=0xc8;}else{_0x135426=0xce;}_0x109ac8[_0x4d38('0x15')](_0x135426);return _0x109ac8[_0x4d38('0x1c')](_0x4d38('0x1d'),_0x47a6f3+'-'+_0x22ef1a+'/'+_0x13d6ca)[_0x4d38('0x17')](_0x5bfa45);}return null;};}function patchUpdates(_0x17304b){return function(_0x1097ab){try{jsonpatch['apply'](_0x1097ab,_0x17304b,!![]);}catch(_0x4965d2){return BPromise[_0x4d38('0x1e')](_0x4965d2);}return _0x1097ab['save']();};}function saveUpdates(_0x1a20be,_0x641453){return function(_0x3332a9){if(_0x3332a9){return _0x3332a9[_0x4d38('0x1f')](_0x1a20be)[_0x4d38('0x20')](function(_0x47be91){return _0x47be91;});}return null;};}function removeEntity(_0x565049,_0x160ea8){return function(_0x1532a8){if(_0x1532a8){return _0x1532a8[_0x4d38('0x21')]()[_0x4d38('0x20')](function(){_0x565049[_0x4d38('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41e270,_0x4dba94){return function(_0xd410d0){if(!_0xd410d0){_0x41e270[_0x4d38('0x14')](0x194);}return _0xd410d0;};}function handleError(_0x528f91,_0x4468c7){_0x4468c7=_0x4468c7||0x1f4;return function(_0x5d65c4){logger[_0x4d38('0x22')](_0x5d65c4['stack']);if(_0x5d65c4[_0x4d38('0x23')]){delete _0x5d65c4[_0x4d38('0x23')];}_0x528f91[_0x4d38('0x15')](_0x4468c7)[_0x4d38('0x24')](_0x5d65c4);};}var utilLicense=require(_0x4d38('0x25'));exports[_0x4d38('0x26')]=function(_0xe0ee4a,_0x4dc980){var _0x3fee3b={'raw':!![],'where':{'id':0x1}},_0x3c5eb2={};_0x3c5eb2[_0x4d38('0x27')]=_[_0x4d38('0x28')](db[_0x4d38('0x29')][_0x4d38('0x2a')]);_0x3c5eb2[_0x4d38('0x2b')]=_[_0x4d38('0x28')](_0xe0ee4a[_0x4d38('0x2b')]);_0x3c5eb2['filters']=_[_0x4d38('0x2c')](_0x3c5eb2['model'],_0x3c5eb2[_0x4d38('0x2b')]);_0x3fee3b[_0x4d38('0x2d')]=_[_0x4d38('0x2c')](_0x3c5eb2['model'],qs['fields'](_0xe0ee4a[_0x4d38('0x2b')]['fields']));_0x3fee3b[_0x4d38('0x2d')]=_0x3fee3b['attributes'][_0x4d38('0x2e')]?_0x3fee3b[_0x4d38('0x2d')]:_0x3c5eb2[_0x4d38('0x27')];_0x3fee3b=_[_0x4d38('0x2f')]({},_0x3fee3b,_0xe0ee4a[_0x4d38('0x30')]);return utilLicense[_0x4d38('0x31')](_0x3fee3b)[_0x4d38('0x20')](respondWithResult(_0x4dc980,null))[_0x4d38('0x32')](handleError(_0x4dc980,null));};exports[_0x4d38('0x1f')]=function(_0x48b1a4,_0x280c2f){if(_0x48b1a4[_0x4d38('0x33')]['id']){delete _0x48b1a4[_0x4d38('0x33')]['id'];}return db[_0x4d38('0x29')][_0x4d38('0x34')]({'where':{'id':_0x48b1a4[_0x4d38('0x35')]['id']}})[_0x4d38('0x20')](handleEntityNotFound(_0x280c2f,null))[_0x4d38('0x20')](function(_0x4de28e){var _0x55477c=_0x4de28e['get']({'plain':!![]});return utilLicense['checkLicense'](_0x55477c,_0x48b1a4[_0x4d38('0x33')][_0x4d38('0x36')]);})[_0x4d38('0x20')](function(_0x178efe){if(!_0x178efe[_0x4d38('0x37')]){return saveUpdates(_0x48b1a4[_0x4d38('0x33')],null);}return _0x178efe;})[_0x4d38('0x20')](respondWithResult(_0x280c2f,null))[_0x4d38('0x32')](handleError(_0x280c2f,null));};exports[_0x4d38('0x38')]=function(_0x3e2540,_0xf36422){var _0x388ef3=_0x4d38('0x39');var _0x40696e=path['join'](_0x4d38('0x3a'),_0x4d38('0x3b'),_0x4d38('0x3c'),_0x388ef3);_0xf36422['setHeader'](_0x4d38('0x3d'),_0x4d38('0x3e')+_0x388ef3);_0xf36422[_0x4d38('0x1c')](_0x4d38('0x3f'),_0x4d38('0x40'));_0xf36422['download'](_0x40696e);};
\ No newline at end of file
index af356c6..995a7c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15dc=['bluebird','path','rimraf','../../config/environment','./license.attributes','exports','define','License','license','lodash','util','../../config/logger','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x15dc,0x1b6));var _0xc15d=function(_0x2703e4,_0x199f9f){_0x2703e4=_0x2703e4-0x0;var _0x9f8511=_0x15dc[_0x2703e4];return _0x9f8511;};'use strict';var _=require(_0xc15d('0x0'));var util=require(_0xc15d('0x1'));var logger=require(_0xc15d('0x2'))('api');var moment=require(_0xc15d('0x3'));var BPromise=require(_0xc15d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc15d('0x5'));var rimraf=require(_0xc15d('0x6'));var config=require(_0xc15d('0x7'));var attributes=require(_0xc15d('0x8'));module[_0xc15d('0x9')]=function(_0x22c798,_0xca1626){return _0x22c798[_0xc15d('0xa')](_0xc15d('0xb'),attributes,{'tableName':_0xc15d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x13c5=['exports','license','lodash','path','./license.attributes'];(function(_0x58321f,_0x5730b9){var _0x3728ea=function(_0x53e4ac){while(--_0x53e4ac){_0x58321f['push'](_0x58321f['shift']());}};_0x3728ea(++_0x5730b9);}(_0x13c5,0x7a));var _0x513c=function(_0x3241f4,_0x3294e8){_0x3241f4=_0x3241f4-0x0;var _0x5c6bfa=_0x13c5[_0x3241f4];return _0x5c6bfa;};'use strict';var _=require(_0x513c('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x513c('0x1'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x513c('0x2'));module[_0x513c('0x3')]=function(_0x982017,_0x2ad2db){return _0x982017['define']('License',attributes,{'tableName':_0x513c('0x4'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2832354..5f61aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1116=['lodash','util','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','License,\x20%s,\x20%s','message','catch'];(function(_0x3ee46c,_0x157980){var _0x2dd087=function(_0x5f397b){while(--_0x5f397b){_0x3ee46c['push'](_0x3ee46c['shift']());}};_0x2dd087(++_0x157980);}(_0x1116,0x17c));var _0x6111=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0x1116[_0x1ddedd];return _0xa3e1ac;};'use strict';var _=require(_0x6111('0x0'));var util=require(_0x6111('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6111('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6111('0x3'));var logger=require('../../config/logger')(_0x6111('0x4'));var config=require(_0x6111('0x5'));var jayson=require(_0x6111('0x6'));var client=jayson[_0x6111('0x7')][_0x6111('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x448004,_0x33c47b,_0x44fe07){return new BPromise(function(_0x35b7ca,_0x45920a){return client['request'](_0x448004,_0x44fe07)[_0x6111('0x9')](function(_0x18cef4){logger[_0x6111('0xa')]('License,\x20%s,\x20%s',_0x33c47b,'request\x20sent');logger[_0x6111('0xb')](_0x6111('0xc'),_0x33c47b,_0x6111('0xd'),JSON[_0x6111('0xe')](_0x18cef4));if(_0x18cef4['error']){if(_0x18cef4[_0x6111('0xf')][_0x6111('0x10')]===0x1f4){logger[_0x6111('0xf')](_0x6111('0x11'),_0x33c47b,_0x18cef4[_0x6111('0xf')][_0x6111('0x12')]);return _0x45920a(_0x18cef4[_0x6111('0xf')][_0x6111('0x12')]);}logger['error'](_0x6111('0x11'),_0x33c47b,_0x18cef4[_0x6111('0xf')][_0x6111('0x12')]);return _0x35b7ca(_0x18cef4['error'][_0x6111('0x12')]);}else{logger['info'](_0x6111('0x11'),_0x33c47b,'request\x20sent');_0x35b7ca(_0x18cef4['result']['message']);}})[_0x6111('0x13')](function(_0x56399c){logger[_0x6111('0xf')](_0x6111('0x11'),_0x33c47b,_0x56399c);_0x45920a(_0x56399c);});});}
\ No newline at end of file
+var _0x4a53=['../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x2bb655,_0x33ef24){var _0x40efae=function(_0x4d1953){while(--_0x4d1953){_0x2bb655['push'](_0x2bb655['shift']());}};_0x40efae(++_0x33ef24);}(_0x4a53,0xed));var _0x34a5=function(_0x271277,_0x968ac1){_0x271277=_0x271277-0x0;var _0x4e55df=_0x4a53[_0x271277];return _0x4e55df;};'use strict';var _=require(_0x34a5('0x0'));var util=require('util');var moment=require(_0x34a5('0x1'));var BPromise=require(_0x34a5('0x2'));var rs=require(_0x34a5('0x3'));var fs=require('fs');var Redis=require(_0x34a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x34a5('0x5'));var logger=require(_0x34a5('0x6'))('rpc');var config=require(_0x34a5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x34a5('0x8')][_0x34a5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1206e7,_0xbf9524,_0x3152ca){return new BPromise(function(_0x50429e,_0x2cd2de){return client[_0x34a5('0xa')](_0x1206e7,_0x3152ca)[_0x34a5('0xb')](function(_0x59c127){logger[_0x34a5('0xc')](_0x34a5('0xd'),_0xbf9524,_0x34a5('0xe'));logger[_0x34a5('0xf')](_0x34a5('0x10'),_0xbf9524,_0x34a5('0xe'),JSON[_0x34a5('0x11')](_0x59c127));if(_0x59c127[_0x34a5('0x12')]){if(_0x59c127[_0x34a5('0x12')][_0x34a5('0x13')]===0x1f4){logger[_0x34a5('0x12')]('License,\x20%s,\x20%s',_0xbf9524,_0x59c127['error'][_0x34a5('0x14')]);return _0x2cd2de(_0x59c127['error'][_0x34a5('0x14')]);}logger[_0x34a5('0x12')](_0x34a5('0xd'),_0xbf9524,_0x59c127[_0x34a5('0x12')][_0x34a5('0x14')]);return _0x50429e(_0x59c127[_0x34a5('0x12')][_0x34a5('0x14')]);}else{logger[_0x34a5('0xc')](_0x34a5('0xd'),_0xbf9524,_0x34a5('0xe'));_0x50429e(_0x59c127[_0x34a5('0x15')]['message']);}})['catch'](function(_0x270f59){logger[_0x34a5('0x12')](_0x34a5('0xd'),_0xbf9524,_0x270f59);_0x2cd2de(_0x270f59);});});}
\ No newline at end of file
index 87e9d02..487ec6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fb5=['show','/:id/dispositions','/:id/canned_answers','/:id/in_servers','/:id/out_servers','getSmtp','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','removeDispositions','delete','removeAnswers','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','isAuthenticated','index','/describe','describe','get','/:id'];(function(_0x19d0a5,_0x27dd19){var _0x3452ba=function(_0xd60535){while(--_0xd60535){_0x19d0a5['push'](_0x19d0a5['shift']());}};_0x3452ba(++_0x27dd19);}(_0x1fb5,0x16f));var _0x51fb=function(_0x4456ce,_0x44c363){_0x4456ce=_0x4456ce-0x0;var _0x2ec7f5=_0x1fb5[_0x4456ce];return _0x2ec7f5;};'use strict';var multer=require('multer');var util=require(_0x51fb('0x0'));var path=require('path');var timeout=require(_0x51fb('0x1'));var express=require(_0x51fb('0x2'));var router=express[_0x51fb('0x3')]();var fs_extra=require(_0x51fb('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./mailAccount.controller');router['get']('/',auth[_0x51fb('0x5')](),controller[_0x51fb('0x6')]);router['get'](_0x51fb('0x7'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x8')]);router[_0x51fb('0x9')](_0x51fb('0xa'),auth['isAuthenticated'](),controller[_0x51fb('0xb')]);router[_0x51fb('0x9')](_0x51fb('0xc'),auth[_0x51fb('0x5')](),controller['getDispositions']);router[_0x51fb('0x9')](_0x51fb('0xd'),auth[_0x51fb('0x5')](),controller['getAnswers']);router['get'](_0x51fb('0xe'),auth[_0x51fb('0x5')](),controller['getImap']);router['get'](_0x51fb('0xf'),auth['isAuthenticated'](),controller[_0x51fb('0x10')]);router['get']('/:id/interactions',auth['isAuthenticated'](),controller[_0x51fb('0x11')]);router[_0x51fb('0x9')](_0x51fb('0x12'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x13')]);router[_0x51fb('0x9')](_0x51fb('0x14'),auth['isAuthenticated'](),controller[_0x51fb('0x15')]);router[_0x51fb('0x9')](_0x51fb('0x16'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x17')]);router['get'](_0x51fb('0x18'),auth['isAuthenticated'](),controller[_0x51fb('0x19')]);router[_0x51fb('0x1a')](_0x51fb('0xc'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x1b')]);router[_0x51fb('0x1a')](_0x51fb('0xd'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x1c')]);router[_0x51fb('0x1a')]('/',auth[_0x51fb('0x5')](),controller[_0x51fb('0x1d')]);router['post'](_0x51fb('0xe'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x1e')]);router['post'](_0x51fb('0xf'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x1f')]);router[_0x51fb('0x1a')]('/:id/interactions',auth[_0x51fb('0x5')](),controller[_0x51fb('0x20')]);router[_0x51fb('0x1a')](_0x51fb('0x12'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x21')]);router['post'](_0x51fb('0x22'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x23')]);router[_0x51fb('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x51fb('0x24')]);router['put'](_0x51fb('0xa'),auth[_0x51fb('0x5')](),controller['update']);router['delete'](_0x51fb('0xc'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x25')]);router[_0x51fb('0x26')](_0x51fb('0xd'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x27')]);router[_0x51fb('0x26')](_0x51fb('0xe'),auth[_0x51fb('0x5')](),controller['removeImap']);router['delete'](_0x51fb('0xf'),auth[_0x51fb('0x5')](),controller['removeSmtp']);router[_0x51fb('0x26')]('/:id',auth[_0x51fb('0x5')](),controller['destroy']);router[_0x51fb('0x26')](_0x51fb('0x18'),auth[_0x51fb('0x5')](),controller[_0x51fb('0x28')]);module[_0x51fb('0x29')]=router;
\ No newline at end of file
+var _0xb84a=['./mailAccount.controller','isAuthenticated','index','get','/describe','describe','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications','getApplications','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addAnswer','create','addImap','addSmtp','addInteraction','/:id/send','send','/:id','update','removeDispositions','delete','removeAnswers','removeImap','destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment'];(function(_0x312e70,_0x418674){var _0x3527e1=function(_0x21f30d){while(--_0x21f30d){_0x312e70['push'](_0x312e70['shift']());}};_0x3527e1(++_0x418674);}(_0xb84a,0x80));var _0xab84=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb84a[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xab84('0x0'));var util=require(_0xab84('0x1'));var path=require(_0xab84('0x2'));var timeout=require(_0xab84('0x3'));var express=require(_0xab84('0x4'));var router=express[_0xab84('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xab84('0x6'));var controller=require(_0xab84('0x7'));router['get']('/',auth[_0xab84('0x8')](),controller[_0xab84('0x9')]);router[_0xab84('0xa')](_0xab84('0xb'),auth[_0xab84('0x8')](),controller[_0xab84('0xc')]);router[_0xab84('0xa')]('/:id',auth[_0xab84('0x8')](),controller[_0xab84('0xd')]);router[_0xab84('0xa')](_0xab84('0xe'),auth[_0xab84('0x8')](),controller['getDispositions']);router[_0xab84('0xa')](_0xab84('0xf'),auth[_0xab84('0x8')](),controller[_0xab84('0x10')]);router[_0xab84('0xa')](_0xab84('0x11'),auth[_0xab84('0x8')](),controller[_0xab84('0x12')]);router[_0xab84('0xa')](_0xab84('0x13'),auth['isAuthenticated'](),controller['getSmtp']);router['get'](_0xab84('0x14'),auth[_0xab84('0x8')](),controller[_0xab84('0x15')]);router[_0xab84('0xa')](_0xab84('0x16'),auth['isAuthenticated'](),controller[_0xab84('0x17')]);router[_0xab84('0xa')]('/:id/messages',auth['isAuthenticated'](),controller[_0xab84('0x18')]);router[_0xab84('0xa')](_0xab84('0x19'),auth[_0xab84('0x8')](),controller[_0xab84('0x1a')]);router[_0xab84('0xa')](_0xab84('0x1b'),auth[_0xab84('0x8')](),controller[_0xab84('0x1c')]);router['post'](_0xab84('0xe'),auth[_0xab84('0x8')](),controller['addDisposition']);router[_0xab84('0x1d')](_0xab84('0xf'),auth['isAuthenticated'](),controller[_0xab84('0x1e')]);router['post']('/',auth[_0xab84('0x8')](),controller[_0xab84('0x1f')]);router['post'](_0xab84('0x11'),auth[_0xab84('0x8')](),controller[_0xab84('0x20')]);router['post']('/:id/out_servers',auth[_0xab84('0x8')](),controller[_0xab84('0x21')]);router[_0xab84('0x1d')]('/:id/interactions',auth['isAuthenticated'](),controller[_0xab84('0x22')]);router[_0xab84('0x1d')]('/:id/applications',auth[_0xab84('0x8')](),controller['addApplications']);router[_0xab84('0x1d')](_0xab84('0x23'),auth[_0xab84('0x8')](),controller[_0xab84('0x24')]);router[_0xab84('0x1d')](_0xab84('0x1b'),auth[_0xab84('0x8')](),controller['addAgents']);router['put'](_0xab84('0x25'),auth[_0xab84('0x8')](),controller[_0xab84('0x26')]);router['delete']('/:id/dispositions',auth[_0xab84('0x8')](),controller[_0xab84('0x27')]);router[_0xab84('0x28')](_0xab84('0xf'),auth[_0xab84('0x8')](),controller[_0xab84('0x29')]);router[_0xab84('0x28')](_0xab84('0x11'),auth[_0xab84('0x8')](),controller[_0xab84('0x2a')]);router[_0xab84('0x28')](_0xab84('0x13'),auth[_0xab84('0x8')](),controller['removeSmtp']);router[_0xab84('0x28')]('/:id',auth[_0xab84('0x8')](),controller[_0xab84('0x2b')]);router[_0xab84('0x28')]('/:id/users',auth[_0xab84('0x8')](),controller['removeAgents']);module[_0xab84('0x2c')]=router;
\ No newline at end of file
index 187c80e..b8c92ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf394=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','ENUM','gmail','hotmail','yahoo','getDataValue','provider','custom','sequelize','STRING','BOOLEAN','INTEGER','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x56dbe5,_0x57fa97){var _0x47009d=function(_0x2ed2db){while(--_0x2ed2db){_0x56dbe5['push'](_0x56dbe5['shift']());}};_0x47009d(++_0x57fa97);}(_0xf394,0x14d));var _0x4f39=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xf394[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require(_0x4f39('0x0'));module['exports']={'description':{'type':Sequelize[_0x4f39('0x1')]},'name':{'type':Sequelize[_0x4f39('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x4f39('0x1')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x4f39('0x1')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0x4f39('0x3')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x4f39('0x4')],'defaultValue':function(){return _0x4f39('0x5');}},'notificationSound':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4f39('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4f39('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4f39('0x3')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4f39('0x3')],'allowNull':!![],'defaultValue':null,'comment':_0x4f39('0x6')},'mandatoryDisposition':{'type':Sequelize[_0x4f39('0x2')],'defaultValue':![],'comment':_0x4f39('0x7'),'set':function(_0x34a23e){if(!_0x34a23e)this[_0x4f39('0x8')]('mandatoryDispositionPauseId',null);this[_0x4f39('0x8')](_0x4f39('0x9'),_0x34a23e);}},'provider':{'type':Sequelize[_0x4f39('0xa')](_0x4f39('0xb'),_0x4f39('0xc'),_0x4f39('0xd'),'outlook365'),'defaultValue':null,'get':function(){if(!this[_0x4f39('0xe')]('provider'))return'custom';return this[_0x4f39('0xe')](_0x4f39('0xf'));},'set':function(_0x249775){if(_0x249775===_0x4f39('0x10'))_0x249775=null;return this[_0x4f39('0x8')]('provider',_0x249775);}}};
\ No newline at end of file
+var _0x37b8=['ENUM','gmail','hotmail','yahoo','outlook365','getDataValue','provider','custom','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition'];(function(_0x237c19,_0x529ab0){var _0x58c4d7=function(_0x3d6139){while(--_0x3d6139){_0x237c19['push'](_0x237c19['shift']());}};_0x58c4d7(++_0x529ab0);}(_0x37b8,0x112));var _0x837b=function(_0x128a34,_0x290ddd){_0x128a34=_0x128a34-0x0;var _0x1e7fd0=_0x37b8[_0x128a34];return _0x1e7fd0;};'use strict';var Sequelize=require('sequelize');module[_0x837b('0x0')]={'description':{'type':Sequelize[_0x837b('0x1')]},'name':{'type':Sequelize[_0x837b('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x837b('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x837b('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x837b('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x837b('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x837b('0x3')]},'markAsUnread':{'type':Sequelize[_0x837b('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x837b('0x1')],'allowNull':![],'defaultValue':_0x837b('0x4')},'fontSize':{'type':Sequelize[_0x837b('0x5')](0x2)[_0x837b('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x837b('0x3')],'defaultValue':function(){return _0x837b('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x837b('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x837b('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x837b('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x837b('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x837b('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x837b('0x5')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x837b('0x8'),'set':function(_0x36c901){if(!_0x36c901)this[_0x837b('0x9')]('mandatoryDispositionPauseId',null);this[_0x837b('0x9')](_0x837b('0xa'),_0x36c901);}},'provider':{'type':Sequelize[_0x837b('0xb')](_0x837b('0xc'),_0x837b('0xd'),_0x837b('0xe'),_0x837b('0xf')),'defaultValue':null,'get':function(){if(!this[_0x837b('0x10')](_0x837b('0x11')))return _0x837b('0x12');return this[_0x837b('0x10')](_0x837b('0x11'));},'set':function(_0x33fb62){if(_0x33fb62===_0x837b('0x12'))_0x33fb62=null;return this['setDataValue']('provider',_0x33fb62);}}};
\ No newline at end of file
index a688f6f..172fce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf595=['addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','findAndCountAll','priority','finally','getApplications','getMessages','MailMessage','$gte','split','format','inlineCss','true','Contacts','updatedAt','DESC','from','attachments','join','root','basename','auth','secure','SendMail','sendMail','List','ListId','List\x20not\x20found','messageId','subject','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','CloudProvider','OAuth2','data5','VerifySmtp','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','bluebird','util','path','juice','ioredis','../../components/parsers/qs','api','../../config/environment','redis','localhost','./mailAccount.socket','jayson/promise','client','http','request','info','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','destroy','then','get','MailAccounts','UserProfileResource','stack','name','index','MailServerIn','MailServerOut','Smtp','Pause','map','MailAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','Imap','mandatoryDispositionPause','rawAttributes','includeAll','find','body','CloudProviderId','modernAuthentication','params','update','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','findAll','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','provider','custom','email','isNil','active','description','user','username','password','pass','service','host','port','authentication','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag'];(function(_0x5c4a2d,_0x5cf70c){var _0x597429=function(_0xdbb0a1){while(--_0xdbb0a1){_0x5c4a2d['push'](_0x5c4a2d['shift']());}};_0x597429(++_0x5cf70c);}(_0xf595,0x1b5));var _0x5f59=function(_0x5e55a8,_0x2578e5){_0x5e55a8=_0x5e55a8-0x0;var _0x38e2b6=_0xf595[_0x5e55a8];return _0x38e2b6;};'use strict';var moment=require('moment');var BPromise=require(_0x5f59('0x0'));var util=require(_0x5f59('0x1'));var path=require(_0x5f59('0x2'));var _=require('lodash');var juice=require(_0x5f59('0x3'));var Redis=require(_0x5f59('0x4'));var qs=require(_0x5f59('0x5'));var logger=require('../../config/logger')(_0x5f59('0x6'));var config=require(_0x5f59('0x7'));var db=require('../../mysqldb')['db'];config[_0x5f59('0x8')]=_['defaults'](config[_0x5f59('0x8')],{'host':_0x5f59('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5f59('0xa'))['register'](socket);var jayson=require(_0x5f59('0xb'));var client=jayson[_0x5f59('0xc')][_0x5f59('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x3181bc,_0x4c1a71,_0x5c70f6,_0x27d070){return new BPromise(function(_0x273daf,_0x1d2d12){var _0x1ee2ef=_0x27d070||client;return _0x1ee2ef[_0x5f59('0xe')](_0x3181bc,_0x5c70f6)['then'](function(_0x52921e){logger[_0x5f59('0xf')]('MailAccount,\x20%s,\x20%s',_0x4c1a71,'request\x20sent');logger[_0x5f59('0x10')](_0x5f59('0x11'),_0x4c1a71,_0x5f59('0x12'),JSON[_0x5f59('0x13')](_0x52921e));if(_0x52921e[_0x5f59('0x14')]){if(_0x52921e['error'][_0x5f59('0x15')]===0x1f4){logger[_0x5f59('0x14')](_0x5f59('0x16'),_0x4c1a71,_0x52921e['error'][_0x5f59('0x17')]);return _0x1d2d12(_0x52921e[_0x5f59('0x14')][_0x5f59('0x17')]);}logger[_0x5f59('0x14')](_0x5f59('0x16'),_0x4c1a71,_0x52921e[_0x5f59('0x14')][_0x5f59('0x17')]);return _0x273daf(_0x52921e[_0x5f59('0x14')][_0x5f59('0x17')]);}else{logger['info'](_0x5f59('0x16'),_0x4c1a71,_0x5f59('0x12'));_0x273daf(_0x52921e[_0x5f59('0x18')][_0x5f59('0x17')]);}})[_0x5f59('0x19')](function(_0x18823e){logger['error'](_0x5f59('0x16'),_0x4c1a71,_0x18823e);_0x1d2d12(_0x18823e);});});}function respondWithStatusCode(_0x45510e,_0x664190){_0x664190=_0x664190||0xcc;return function(_0x276063){if(_0x276063){return _0x45510e[_0x5f59('0x1a')](_0x664190);}return _0x45510e[_0x5f59('0x1b')](_0x664190)[_0x5f59('0x1c')]();};}function respondWithResult(_0x1387bf,_0x32ffb7){_0x32ffb7=_0x32ffb7||0xc8;return function(_0x2a2975){if(_0x2a2975){return _0x1387bf[_0x5f59('0x1b')](_0x32ffb7)[_0x5f59('0x1d')](_0x2a2975);}};}function respondWithFilteredResult(_0x524a4f,_0x4a4823){return function(_0x218d6b){if(_0x218d6b){var _0x36b58d=typeof _0x4a4823['offset']==='undefined'&&typeof _0x4a4823[_0x5f59('0x1e')]===_0x5f59('0x1f');var _0x18f990=_0x218d6b[_0x5f59('0x20')];var _0x5d412f=_0x36b58d?0x0:_0x4a4823[_0x5f59('0x21')];var _0x593b66=_0x36b58d?_0x218d6b[_0x5f59('0x20')]:_0x4a4823[_0x5f59('0x21')]+_0x4a4823[_0x5f59('0x1e')];var _0x5ab1a1;if(_0x593b66>=_0x18f990){_0x593b66=_0x18f990;_0x5ab1a1=0xc8;}else{_0x5ab1a1=0xce;}_0x524a4f['status'](_0x5ab1a1);return _0x524a4f[_0x5f59('0x22')](_0x5f59('0x23'),_0x5d412f+'-'+_0x593b66+'/'+_0x18f990)[_0x5f59('0x1d')](_0x218d6b);}return null;};}function saveUpdates(_0x14c9c2){return function(_0x45f28a){if(_0x45f28a){return _0x45f28a['update'](_0x14c9c2)['then'](function(_0x1dd448){return _0x1dd448;});}return null;};}function removeEntity(_0x73a02e){return function(_0x3a4808){if(_0x3a4808){return _0x3a4808[_0x5f59('0x24')]()[_0x5f59('0x25')](function(){var _0x451c43=_0x3a4808[_0x5f59('0x26')]({'plain':!![]});var _0x42aa1d=_0x5f59('0x27');return db[_0x5f59('0x28')][_0x5f59('0x24')]({'where':{'type':_0x42aa1d,'resourceId':_0x451c43['id']}})[_0x5f59('0x25')](function(){return _0x3a4808;});})[_0x5f59('0x25')](function(){_0x73a02e[_0x5f59('0x1b')](0xcc)[_0x5f59('0x1c')]();});}};}function handleEntityNotFound(_0x1ff096){return function(_0x3d408d){if(!_0x3d408d){_0x1ff096[_0x5f59('0x1a')](0x194);}return _0x3d408d;};}function handleError(_0x56b84f,_0x4f6082){_0x4f6082=_0x4f6082||0x1f4;return function(_0x2d9258){logger['error'](_0x2d9258[_0x5f59('0x29')]);if(_0x2d9258[_0x5f59('0x2a')]){delete _0x2d9258[_0x5f59('0x2a')];}_0x56b84f['status'](_0x4f6082)['send'](_0x2d9258);};}exports[_0x5f59('0x2b')]=function(_0x1586d0,_0x13cac9){var _0xfa3f1e={'include':[{'model':db[_0x5f59('0x2c')],'as':'Imap'},{'model':db[_0x5f59('0x2d')],'as':_0x5f59('0x2e')},{'model':db[_0x5f59('0x2f')],'as':'mandatoryDispositionPause'}]},_0x49025d={},_0xeeb834={'count':0x0,'rows':[]};var _0x23698a=_[_0x5f59('0x30')](db[_0x5f59('0x31')]['rawAttributes'],function(_0xbde71a){return{'name':_0xbde71a[_0x5f59('0x32')],'type':_0xbde71a[_0x5f59('0x33')][_0x5f59('0x34')]};});_0x49025d[_0x5f59('0x35')]=_['map'](_0x23698a,_0x5f59('0x2a'));_0x49025d[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x1586d0[_0x5f59('0x36')]);_0x49025d[_0x5f59('0x38')]=_[_0x5f59('0x39')](_0x49025d[_0x5f59('0x35')],_0x49025d[_0x5f59('0x36')]);_0xfa3f1e[_0x5f59('0x3a')]=_[_0x5f59('0x39')](_0x49025d[_0x5f59('0x35')],qs[_0x5f59('0x3b')](_0x1586d0[_0x5f59('0x36')]['fields']));_0xfa3f1e[_0x5f59('0x3a')]=_0xfa3f1e[_0x5f59('0x3a')][_0x5f59('0x3c')]?_0xfa3f1e['attributes']:_0x49025d[_0x5f59('0x35')];if(!_0x1586d0[_0x5f59('0x36')][_0x5f59('0x3d')](_0x5f59('0x3e'))){_0xfa3f1e[_0x5f59('0x1e')]=qs[_0x5f59('0x1e')](_0x1586d0[_0x5f59('0x36')][_0x5f59('0x1e')]);_0xfa3f1e['offset']=qs[_0x5f59('0x21')](_0x1586d0[_0x5f59('0x36')][_0x5f59('0x21')]);}_0xfa3f1e[_0x5f59('0x3f')]=qs[_0x5f59('0x40')](_0x1586d0[_0x5f59('0x36')][_0x5f59('0x40')]);_0xfa3f1e[_0x5f59('0x41')]=qs['filters'](_[_0x5f59('0x42')](_0x1586d0[_0x5f59('0x36')],_0x49025d[_0x5f59('0x38')]),_0x23698a);if(_0x1586d0[_0x5f59('0x36')][_0x5f59('0x43')]){_0xfa3f1e[_0x5f59('0x41')]=_[_0x5f59('0x44')](_0xfa3f1e[_0x5f59('0x41')],{'$or':_[_0x5f59('0x30')](_0x23698a,function(_0x48304e){if(_0x48304e[_0x5f59('0x33')]!==_0x5f59('0x45')){var _0x5db53e={};_0x5db53e[_0x48304e[_0x5f59('0x2a')]]={'$like':'%'+_0x1586d0[_0x5f59('0x36')]['filter']+'%'};return _0x5db53e;}})});}_0xfa3f1e=_[_0x5f59('0x44')]({},_0xfa3f1e,_0x1586d0[_0x5f59('0x46')]);var _0x36fed0={'where':_0xfa3f1e['where']};return db[_0x5f59('0x31')]['count'](_0x36fed0)[_0x5f59('0x25')](function(_0x318129){_0xeeb834[_0x5f59('0x20')]=_0x318129;if(_0x1586d0[_0x5f59('0x36')]['includeAll']){_0xfa3f1e[_0x5f59('0x47')]=[{'all':!![]}];}return db[_0x5f59('0x31')]['findAll'](_0xfa3f1e);})[_0x5f59('0x25')](function(_0x4920e4){_0xeeb834[_0x5f59('0x48')]=_0x4920e4;return _0xeeb834;})['then'](respondWithFilteredResult(_0x13cac9,_0xfa3f1e))['catch'](handleError(_0x13cac9,null));};exports[_0x5f59('0x49')]=function(_0x45cc3b,_0x1d7de7){var _0x5057f3={'raw':![],'where':{'id':_0x45cc3b['params']['id']},'include':[{'model':db['MailServerIn'],'as':_0x5f59('0x4a')},{'model':db[_0x5f59('0x2d')],'as':'Smtp'},{'model':db[_0x5f59('0x2f')],'as':_0x5f59('0x4b')}]},_0x21274d={};_0x21274d[_0x5f59('0x35')]=_['keys'](db[_0x5f59('0x31')][_0x5f59('0x4c')]);_0x21274d[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x45cc3b[_0x5f59('0x36')]);_0x21274d[_0x5f59('0x38')]=_[_0x5f59('0x39')](_0x21274d[_0x5f59('0x35')],_0x21274d['query']);_0x5057f3[_0x5f59('0x3a')]=_['intersection'](_0x21274d['model'],qs[_0x5f59('0x3b')](_0x45cc3b['query'][_0x5f59('0x3b')]));_0x5057f3[_0x5f59('0x3a')]=_0x5057f3['attributes']['length']?_0x5057f3[_0x5f59('0x3a')]:_0x21274d[_0x5f59('0x35')];if(_0x45cc3b[_0x5f59('0x36')][_0x5f59('0x4d')]){_0x5057f3[_0x5f59('0x47')]=[{'all':!![]}];}_0x5057f3=_['merge']({},_0x5057f3,_0x45cc3b[_0x5f59('0x46')]);return db[_0x5f59('0x31')][_0x5f59('0x4e')](_0x5057f3)[_0x5f59('0x25')](handleEntityNotFound(_0x1d7de7,null))[_0x5f59('0x25')](respondWithResult(_0x1d7de7,null))[_0x5f59('0x19')](handleError(_0x1d7de7,null));};exports['update']=function(_0x3881c9,_0x11140c){if(_0x3881c9[_0x5f59('0x4f')]['id']){delete _0x3881c9[_0x5f59('0x4f')]['id'];}if(_0x3881c9[_0x5f59('0x4f')]['Imap']){if(!_0x3881c9[_0x5f59('0x4f')]['Imap']['modernAuthentication']){_0x3881c9['body'][_0x5f59('0x4a')][_0x5f59('0x50')]=null;}}if(_0x3881c9['body'][_0x5f59('0x2e')]){if(!_0x3881c9[_0x5f59('0x4f')]['Smtp'][_0x5f59('0x51')]){_0x3881c9[_0x5f59('0x4f')][_0x5f59('0x2e')][_0x5f59('0x50')]=null;}}return db[_0x5f59('0x31')]['find']({'where':{'id':_0x3881c9[_0x5f59('0x52')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x5f59('0x4a')},{'model':db[_0x5f59('0x2d')],'as':_0x5f59('0x2e')},{'model':db[_0x5f59('0x2f')],'as':_0x5f59('0x4b')}]})[_0x5f59('0x25')](handleEntityNotFound(_0x11140c,null))[_0x5f59('0x25')](saveUpdates(_0x3881c9[_0x5f59('0x4f')],null))['then'](function(_0x2a3a5a){if(_0x2a3a5a&&_0x3881c9[_0x5f59('0x4f')][_0x5f59('0x4a')]){return db[_0x5f59('0x2c')][_0x5f59('0x53')](_0x3881c9['body'][_0x5f59('0x4a')],{'where':{'MailAccountId':_0x2a3a5a['id']}})[_0x5f59('0x25')](function(){return _0x2a3a5a;});}return _0x2a3a5a;})[_0x5f59('0x25')](function(_0x3afc4b){if(_0x3afc4b&&_0x3881c9['body'][_0x5f59('0x2e')]){return db['MailServerOut'][_0x5f59('0x53')](_0x3881c9['body'][_0x5f59('0x2e')],{'where':{'MailAccountId':_0x3afc4b['id']}})[_0x5f59('0x25')](function(){return _0x3afc4b;});}return _0x3afc4b;})['then'](respondWithResult(_0x11140c,null))[_0x5f59('0x19')](handleError(_0x11140c,null));};exports['describe']=function(_0x2df892,_0xecc733){return db[_0x5f59('0x31')]['describe']()[_0x5f59('0x25')](respondWithResult(_0xecc733,null))['catch'](handleError(_0xecc733,null));};exports[_0x5f59('0x54')]=function(_0x2d99bc,_0x1f5f20){if(_0x2d99bc['body']['id']){delete _0x2d99bc[_0x5f59('0x4f')]['id'];}return db['MailAccount'][_0x5f59('0x4e')]({'where':{'id':_0x2d99bc[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x1f5f20,null))[_0x5f59('0x25')](function(_0x296ca7){if(_0x296ca7){_0x2d99bc[_0x5f59('0x4f')][_0x5f59('0x55')]=_0x296ca7['id'];return db[_0x5f59('0x56')][_0x5f59('0x57')](_0x2d99bc[_0x5f59('0x4f')]);}})[_0x5f59('0x25')](respondWithResult(_0x1f5f20,null))['catch'](handleError(_0x1f5f20,null));};exports[_0x5f59('0x58')]=function(_0x4b9816,_0x32856e){var _0x330558={'raw':![],'where':{}};var _0x5d33de={};var _0x45e43a={'count':0x0,'rows':[]};return db[_0x5f59('0x31')][_0x5f59('0x59')]({'where':{'id':_0x4b9816[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x32856e,null))['then'](function(_0x4431ad){if(_0x4431ad){_0x5d33de['model']=_[_0x5f59('0x37')](db[_0x5f59('0x56')][_0x5f59('0x4c')]);_0x5d33de[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x4b9816[_0x5f59('0x36')]);_0x5d33de[_0x5f59('0x38')]=_[_0x5f59('0x39')](_0x5d33de[_0x5f59('0x35')],_0x5d33de['query']);_0x330558[_0x5f59('0x3a')]=_[_0x5f59('0x39')](_0x5d33de[_0x5f59('0x35')],qs['fields'](_0x4b9816[_0x5f59('0x36')][_0x5f59('0x3b')]));_0x330558[_0x5f59('0x3a')]=_0x330558[_0x5f59('0x3a')][_0x5f59('0x3c')]?_0x330558[_0x5f59('0x3a')]:_0x5d33de['model'];if(!_0x4b9816[_0x5f59('0x36')][_0x5f59('0x3d')](_0x5f59('0x3e'))){_0x330558[_0x5f59('0x1e')]=qs['limit'](_0x4b9816[_0x5f59('0x36')][_0x5f59('0x1e')]);_0x330558[_0x5f59('0x21')]=qs['offset'](_0x4b9816[_0x5f59('0x36')][_0x5f59('0x21')]);}_0x330558['order']=qs['sort'](_0x4b9816[_0x5f59('0x36')][_0x5f59('0x40')]);_0x330558[_0x5f59('0x41')]=qs[_0x5f59('0x38')](_['pick'](_0x4b9816['query'],_0x5d33de[_0x5f59('0x38')]));_0x330558[_0x5f59('0x41')]['MailAccountId']=_0x4431ad['id'];if(_0x4b9816[_0x5f59('0x36')][_0x5f59('0x43')]){_0x330558['where']=_[_0x5f59('0x44')](_0x330558['where'],{'$or':_[_0x5f59('0x30')](_0x330558[_0x5f59('0x3a')],function(_0x2fb8c7){var _0x6bc1d1={};_0x6bc1d1[_0x2fb8c7]={'$like':'%'+_0x4b9816['query'][_0x5f59('0x43')]+'%'};return _0x6bc1d1;})});}_0x330558=_[_0x5f59('0x44')]({},_0x330558,_0x4b9816[_0x5f59('0x46')]);return db['Disposition'][_0x5f59('0x20')]({'where':_0x330558['where']})[_0x5f59('0x25')](function(_0x21a9b6){_0x45e43a['count']=_0x21a9b6;if(_0x4b9816['query'][_0x5f59('0x4d')]){_0x330558[_0x5f59('0x47')]=[{'all':!![]}];}return db[_0x5f59('0x56')][_0x5f59('0x5a')](_0x330558);})['then'](function(_0x120f1a){_0x45e43a[_0x5f59('0x48')]=_0x120f1a;return _0x45e43a;});}})[_0x5f59('0x25')](respondWithFilteredResult(_0x32856e,_0x330558))[_0x5f59('0x19')](handleError(_0x32856e,null));};exports[_0x5f59('0x5b')]=function(_0x468124,_0x378950){return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x468124[_0x5f59('0x52')]['id']}})['then'](handleEntityNotFound(_0x378950,null))['then'](function(_0x15e7a0){if(_0x15e7a0){return _0x15e7a0[_0x5f59('0x5b')](_0x468124[_0x5f59('0x36')][_0x5f59('0x5c')]);}})[_0x5f59('0x25')](respondWithStatusCode(_0x378950,null))[_0x5f59('0x19')](handleError(_0x378950,null));};exports['addAnswer']=function(_0x4e3867,_0x348b64){if(_0x4e3867[_0x5f59('0x4f')]['id']){delete _0x4e3867['body']['id'];}return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x4e3867['params']['id']}})['then'](handleEntityNotFound(_0x348b64,null))['then'](function(_0x46fc34){if(_0x46fc34){_0x4e3867[_0x5f59('0x4f')][_0x5f59('0x55')]=_0x46fc34['id'];return db[_0x5f59('0x5d')][_0x5f59('0x57')](_0x4e3867['body']);}})[_0x5f59('0x25')](respondWithResult(_0x348b64,null))[_0x5f59('0x19')](handleError(_0x348b64,null));};exports[_0x5f59('0x5e')]=function(_0x47c601,_0x7f5f6c){var _0xa084d3={'raw':![],'where':{}};var _0x5d8281={};var _0x462f70={'count':0x0,'rows':[]};return db['MailAccount'][_0x5f59('0x59')]({'where':{'id':_0x47c601[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x7f5f6c,null))['then'](function(_0x2b9e9a){if(_0x2b9e9a){_0x5d8281[_0x5f59('0x35')]=_['keys'](db['CannedAnswer'][_0x5f59('0x4c')]);_0x5d8281[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x47c601['query']);_0x5d8281['filters']=_[_0x5f59('0x39')](_0x5d8281['model'],_0x5d8281['query']);_0xa084d3['attributes']=_[_0x5f59('0x39')](_0x5d8281[_0x5f59('0x35')],qs[_0x5f59('0x3b')](_0x47c601[_0x5f59('0x36')][_0x5f59('0x3b')]));_0xa084d3[_0x5f59('0x3a')]=_0xa084d3[_0x5f59('0x3a')][_0x5f59('0x3c')]?_0xa084d3[_0x5f59('0x3a')]:_0x5d8281['model'];if(!_0x47c601[_0x5f59('0x36')][_0x5f59('0x3d')]('nolimit')){_0xa084d3[_0x5f59('0x1e')]=qs[_0x5f59('0x1e')](_0x47c601[_0x5f59('0x36')][_0x5f59('0x1e')]);_0xa084d3[_0x5f59('0x21')]=qs[_0x5f59('0x21')](_0x47c601[_0x5f59('0x36')]['offset']);}_0xa084d3[_0x5f59('0x3f')]=qs[_0x5f59('0x40')](_0x47c601['query']['sort']);_0xa084d3['where']=qs[_0x5f59('0x38')](_[_0x5f59('0x42')](_0x47c601[_0x5f59('0x36')],_0x5d8281[_0x5f59('0x38')]));_0xa084d3[_0x5f59('0x41')][_0x5f59('0x55')]=_0x2b9e9a['id'];if(_0x47c601[_0x5f59('0x36')][_0x5f59('0x43')]){_0xa084d3[_0x5f59('0x41')]=_[_0x5f59('0x44')](_0xa084d3[_0x5f59('0x41')],{'$or':_[_0x5f59('0x30')](_0xa084d3[_0x5f59('0x3a')],function(_0x23f603){var _0x557815={};_0x557815[_0x23f603]={'$like':'%'+_0x47c601[_0x5f59('0x36')][_0x5f59('0x43')]+'%'};return _0x557815;})});}_0xa084d3=_[_0x5f59('0x44')]({},_0xa084d3,_0x47c601[_0x5f59('0x46')]);return db[_0x5f59('0x5d')][_0x5f59('0x20')]({'where':_0xa084d3[_0x5f59('0x41')]})[_0x5f59('0x25')](function(_0x4bd9ef){_0x462f70[_0x5f59('0x20')]=_0x4bd9ef;if(_0x47c601[_0x5f59('0x36')][_0x5f59('0x4d')]){_0xa084d3[_0x5f59('0x47')]=[{'all':!![]}];}return db['CannedAnswer'][_0x5f59('0x5a')](_0xa084d3);})['then'](function(_0x597291){_0x462f70[_0x5f59('0x48')]=_0x597291;return _0x462f70;});}})[_0x5f59('0x25')](respondWithFilteredResult(_0x7f5f6c,_0xa084d3))[_0x5f59('0x19')](handleError(_0x7f5f6c,null));};exports[_0x5f59('0x5f')]=function(_0x1d7f89,_0x115d89){return db['MailAccount'][_0x5f59('0x4e')]({'where':{'id':_0x1d7f89[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x115d89,null))[_0x5f59('0x25')](function(_0x1658f7){if(_0x1658f7){return _0x1658f7[_0x5f59('0x5f')](_0x1d7f89[_0x5f59('0x36')]['ids']);}})[_0x5f59('0x25')](respondWithStatusCode(_0x115d89,null))[_0x5f59('0x19')](handleError(_0x115d89,null));};exports[_0x5f59('0x57')]=function(_0x3283dc,_0x48420e){var _0xc5c8d3={'name':_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x2a')],'key':_0x3283dc['body'][_0x5f59('0x34')],'provider':_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x60')]===_0x5f59('0x61')?null:_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x60')],'email':_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x62')],'ListId':_0x3283dc['body']['ListId'],'active':!_[_0x5f59('0x63')](_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x64')])?_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x64')]:!![],'description':_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x65')]||null,'Imap':{},'Smtp':{}};if(_0xc5c8d3[_0x5f59('0x60')]){_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x66')]=_0xc5c8d3['Smtp'][_0x5f59('0x66')]=_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x67')];_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x68')]=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x69')]=_0x3283dc['body'][_0x5f59('0x68')];if(_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x51')]){_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x51')]=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x51')]=!![];_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x50')]=_0xc5c8d3[_0x5f59('0x2e')]['CloudProviderId']=_0x3283dc['body'][_0x5f59('0x50')];_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x68')]=_0xc5c8d3['Smtp'][_0x5f59('0x69')]=null;}else{_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x50')]=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x50')]=null;}_0xc5c8d3['Imap'][_0x5f59('0x6a')]=_0xc5c8d3['Smtp'][_0x5f59('0x6a')]=null;_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x6b')]=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x6b')]=null;_0xc5c8d3[_0x5f59('0x4a')]['port']=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x6c')]=null;}else{if(_0x3283dc[_0x5f59('0x4f')]['authentication']){_0xc5c8d3['Imap']['user']=_0xc5c8d3['Smtp']['user']=_0x3283dc['body'][_0x5f59('0x67')];_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x68')]=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x69')]=_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x68')];}else{_0xc5c8d3['Imap'][_0x5f59('0x6d')]=_0xc5c8d3['Smtp'][_0x5f59('0x6d')]=![];_0xc5c8d3['Imap'][_0x5f59('0x66')]=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x66')]=null;_0xc5c8d3[_0x5f59('0x4a')]['password']=_0xc5c8d3[_0x5f59('0x2e')][_0x5f59('0x69')]=null;}_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x6b')]=_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x4a')][_0x5f59('0x6b')];_0xc5c8d3[_0x5f59('0x4a')][_0x5f59('0x6c')]=_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x4a')][_0x5f59('0x6c')];_0xc5c8d3['Smtp'][_0x5f59('0x6b')]=_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x2e')][_0x5f59('0x6b')];_0xc5c8d3[_0x5f59('0x2e')]['port']=_0x3283dc[_0x5f59('0x4f')][_0x5f59('0x2e')][_0x5f59('0x6c')];}return db[_0x5f59('0x31')][_0x5f59('0x57')](_0xc5c8d3,{'include':[{'model':db['MailServerOut'],'as':_0x5f59('0x2e')},{'model':db[_0x5f59('0x2c')],'as':'Imap'}]})[_0x5f59('0x25')](function(_0x25fc84){var _0x5c7632=_0x3283dc[_0x5f59('0x66')][_0x5f59('0x26')]({'plain':!![]});if(!_0x5c7632)throw new Error(_0x5f59('0x6e'));if(_0x5c7632[_0x5f59('0x6f')]==='user'){var _0xe99390=_0x25fc84['get']({'plain':!![]});return db[_0x5f59('0x70')][_0x5f59('0x4e')]({'where':{'name':_0x5f59('0x27'),'userProfileId':_0x5c7632[_0x5f59('0x71')]},'raw':!![]})[_0x5f59('0x25')](function(_0x412372){if(_0x412372&&_0x412372[_0x5f59('0x72')]===0x0){return db[_0x5f59('0x28')][_0x5f59('0x57')]({'name':_0xe99390[_0x5f59('0x2a')],'resourceId':_0xe99390['id'],'type':_0x412372[_0x5f59('0x2a')],'sectionId':_0x412372['id']},{})[_0x5f59('0x25')](function(){return _0x25fc84;});}else{return _0x25fc84;}})['catch'](function(_0x38af6a){logger[_0x5f59('0x14')](_0x5f59('0x73'),_0x38af6a);throw _0x38af6a;});}return _0x25fc84;})[_0x5f59('0x25')](respondWithResult(_0x48420e,0xc9))[_0x5f59('0x19')](handleError(_0x48420e,null));};exports[_0x5f59('0x74')]=function(_0xee7737,_0x266e5d){return db[_0x5f59('0x31')]['findOne']({'where':{'id':_0xee7737[_0x5f59('0x52')]['id']}})['then'](handleEntityNotFound(_0x266e5d,null))[_0x5f59('0x25')](function(_0x3cf587){if(_0x3cf587){return _0x3cf587['getImap']();}return null;})[_0x5f59('0x25')](respondWithResult(_0x266e5d,null))['catch'](handleError(_0x266e5d,null));};exports[_0x5f59('0x75')]=function(_0x9a06df,_0x1523ed){if(_0x9a06df[_0x5f59('0x4f')]['id']){delete _0x9a06df[_0x5f59('0x4f')]['id'];}return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x9a06df[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x1523ed,null))[_0x5f59('0x25')](function(_0x467ab0){if(_0x467ab0){_0x9a06df[_0x5f59('0x4f')][_0x5f59('0x55')]=_0x467ab0['id'];return db[_0x5f59('0x2c')][_0x5f59('0x57')](_0x9a06df[_0x5f59('0x4f')]);}})['then'](respondWithResult(_0x1523ed,null))[_0x5f59('0x19')](handleError(_0x1523ed,null));};exports['removeImap']=function(_0x250e0d,_0x4ec93b){return db['MailAccount'][_0x5f59('0x59')]({'where':{'id':_0x250e0d[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x4ec93b,null))[_0x5f59('0x25')](function(_0x1eb141){if(_0x1eb141){return _0x1eb141[_0x5f59('0x76')](null);}return null;})['then'](respondWithStatusCode(_0x4ec93b,null))[_0x5f59('0x19')](handleError(_0x4ec93b,null));};exports[_0x5f59('0x77')]=function(_0x281ef7,_0x31f2ad){return db[_0x5f59('0x31')]['findOne']({'where':{'id':_0x281ef7[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x31f2ad,null))[_0x5f59('0x25')](function(_0x5ca3bd){if(_0x5ca3bd){return _0x5ca3bd[_0x5f59('0x77')]();}return null;})['then'](respondWithResult(_0x31f2ad,null))[_0x5f59('0x19')](handleError(_0x31f2ad,null));};exports[_0x5f59('0x78')]=function(_0x453506,_0x5eb087){if(_0x453506[_0x5f59('0x4f')]['id']){delete _0x453506['body']['id'];}return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x453506[_0x5f59('0x52')]['id']}})['then'](handleEntityNotFound(_0x5eb087,null))['then'](function(_0x87a48){if(_0x87a48){_0x453506[_0x5f59('0x4f')][_0x5f59('0x55')]=_0x87a48['id'];return db[_0x5f59('0x2d')][_0x5f59('0x57')](_0x453506['body']);}})[_0x5f59('0x25')](respondWithResult(_0x5eb087,null))[_0x5f59('0x19')](handleError(_0x5eb087,null));};exports[_0x5f59('0x79')]=function(_0x436b49,_0x49ca82){return db[_0x5f59('0x31')][_0x5f59('0x59')]({'where':{'id':_0x436b49[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x49ca82,null))[_0x5f59('0x25')](function(_0x48685e){if(_0x48685e){return _0x48685e['setSmtp'](null);}return null;})[_0x5f59('0x25')](respondWithStatusCode(_0x49ca82,null))[_0x5f59('0x19')](handleError(_0x49ca82,null));};exports[_0x5f59('0x7a')]=function(_0x94319f,_0x248e69){return db[_0x5f59('0x7b')][_0x5f59('0x4e')]({'where':{'id':_0x94319f[_0x5f59('0x52')]['id']}})['then'](handleEntityNotFound(_0x248e69,null))[_0x5f59('0x25')](function(_0xd8484){if(_0xd8484){return _0xd8484[_0x5f59('0x7a')](_0x94319f['body'][_0x5f59('0x5c')],_[_0x5f59('0x7c')](_0x94319f[_0x5f59('0x4f')],[_0x5f59('0x5c'),'id'])||{});}})['then'](respondWithResult(_0x248e69,null))[_0x5f59('0x19')](handleError(_0x248e69,null));};exports[_0x5f59('0x7d')]=function(_0x1623b1,_0xd35c8a){var _0x5ac1b2={'raw':![],'where':{}};var _0x616058={};var _0x32485b={'count':0x0,'rows':[]};return db[_0x5f59('0x31')][_0x5f59('0x59')]({'where':{'id':_0x1623b1[_0x5f59('0x52')]['id']}})['then'](handleEntityNotFound(_0xd35c8a,null))[_0x5f59('0x25')](function(_0x3a27fb){if(_0x3a27fb){_0x616058[_0x5f59('0x35')]=_[_0x5f59('0x37')](db['MailInteraction']['rawAttributes']);_0x616058[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x1623b1[_0x5f59('0x36')]);_0x616058['filters']=_[_0x5f59('0x39')](_0x616058[_0x5f59('0x35')],_0x616058[_0x5f59('0x36')]);_0x5ac1b2[_0x5f59('0x3a')]=_[_0x5f59('0x39')](_0x616058[_0x5f59('0x35')],qs[_0x5f59('0x3b')](_0x1623b1[_0x5f59('0x36')][_0x5f59('0x3b')]));_0x5ac1b2[_0x5f59('0x3a')]=_0x5ac1b2['attributes']['length']?_0x5ac1b2[_0x5f59('0x3a')]:_0x616058[_0x5f59('0x35')];if(!_0x1623b1[_0x5f59('0x36')][_0x5f59('0x3d')](_0x5f59('0x3e'))){_0x5ac1b2[_0x5f59('0x1e')]=qs[_0x5f59('0x1e')](_0x1623b1['query'][_0x5f59('0x1e')]);_0x5ac1b2[_0x5f59('0x21')]=qs[_0x5f59('0x21')](_0x1623b1[_0x5f59('0x36')][_0x5f59('0x21')]);}_0x5ac1b2[_0x5f59('0x3f')]=qs[_0x5f59('0x40')](_0x1623b1['query'][_0x5f59('0x40')]);_0x5ac1b2[_0x5f59('0x41')]=qs[_0x5f59('0x38')](_[_0x5f59('0x42')](_0x1623b1[_0x5f59('0x36')],_0x616058['filters']));_0x5ac1b2[_0x5f59('0x41')][_0x5f59('0x55')]=_0x3a27fb['id'];if(_0x1623b1[_0x5f59('0x36')]['filter']){_0x5ac1b2[_0x5f59('0x41')]=_['merge'](_0x5ac1b2[_0x5f59('0x41')],{'$or':_[_0x5f59('0x30')](_0x5ac1b2[_0x5f59('0x3a')],function(_0x24edab){var _0x433a73={};_0x433a73[_0x24edab]={'$like':'%'+_0x1623b1[_0x5f59('0x36')][_0x5f59('0x43')]+'%'};return _0x433a73;})});}_0x5ac1b2=_[_0x5f59('0x44')]({},_0x5ac1b2,_0x1623b1[_0x5f59('0x46')]);return db[_0x5f59('0x7b')]['count']({'where':_0x5ac1b2[_0x5f59('0x41')]})[_0x5f59('0x25')](function(_0x2e2cbb){_0x32485b[_0x5f59('0x20')]=_0x2e2cbb;if(_0x1623b1[_0x5f59('0x36')][_0x5f59('0x4d')]){_0x5ac1b2[_0x5f59('0x47')]=[{'model':db[_0x5f59('0x7e')],'as':_0x5f59('0x7f'),'required':![]},{'model':db[_0x5f59('0x80')],'as':_0x5f59('0x81'),'attributes':[_0x5f59('0x2a'),_0x5f59('0x82'),_0x5f59('0x83')],'required':![]},{'model':db[_0x5f59('0x84')],'as':_0x5f59('0x85'),'attributes':['id',_0x5f59('0x2a'),_0x5f59('0x86')],'where':_0x1623b1[_0x5f59('0x36')][_0x5f59('0x87')]?{'id':_0x1623b1[_0x5f59('0x36')][_0x5f59('0x87')]}:undefined,'required':_0x1623b1[_0x5f59('0x36')][_0x5f59('0x87')]?!![]:![]}];}return db[_0x5f59('0x7b')][_0x5f59('0x5a')](_0x5ac1b2);})['then'](function(_0x5b690b){_0x32485b['rows']=_0x5b690b;return _0x32485b;});}})['then'](respondWithFilteredResult(_0xd35c8a,_0x5ac1b2))['catch'](handleError(_0xd35c8a,null));};exports[_0x5f59('0x88')]=function addApplications(_0x1de285,_0x47c9d5){var _0x590764=_0x1de285[_0x5f59('0x52')]['id'];var _0x18ac5d=_0x1de285[_0x5f59('0x4f')];var _0x43ddb3=0xc8;var _0x1e6280=null;return db[_0x5f59('0x89')][_0x5f59('0x8a')]({'isolationLevel':db['sequelize'][_0x5f59('0x8b')][_0x5f59('0x8c')][_0x5f59('0x8d')]},function(_0x673e67){return db[_0x5f59('0x31')][_0x5f59('0x59')]({'where':{'id':_0x590764},'transaction':_0x673e67})[_0x5f59('0x25')](function(_0x3e607d){if(_0x3e607d){return db['MailApplication'][_0x5f59('0x24')]({'where':{'MailAccountId':_0x590764},'transaction':_0x673e67})['then'](function(){var _0x440741=_[_0x5f59('0x30')](_0x18ac5d,function(_0x24a9dd){_0x24a9dd[_0x5f59('0x55')]=_0x590764;return _0x24a9dd;});return db[_0x5f59('0x8e')]['bulkCreate'](_0x440741,{'transaction':_0x673e67});});}else{_0x43ddb3=0x194;_0x1e6280=[];}});})[_0x5f59('0x25')](function(){if(_0x43ddb3!==0x194){return db[_0x5f59('0x8e')][_0x5f59('0x8f')]({'where':{'MailAccountId':_0x590764},'order':_0x5f59('0x90')})[_0x5f59('0x25')](function(_0x14d7e4){_0x1e6280=_0x14d7e4;});}})[_0x5f59('0x19')](function(_0x54e97d){_0x43ddb3=0x1f4;logger[_0x5f59('0x14')](_0x54e97d[_0x5f59('0x29')]);if(_0x54e97d['name']){delete _0x54e97d['name'];}_0x1e6280=_0x54e97d;})[_0x5f59('0x91')](function(){if(_0x1e6280===null){_0x47c9d5['sendStatus'](_0x43ddb3);}else{if(_0x43ddb3===0x1f4){_0x47c9d5[_0x5f59('0x1b')](_0x43ddb3)['send'](_0x1e6280);}else{_0x47c9d5[_0x5f59('0x1b')](_0x43ddb3)[_0x5f59('0x1d')](_0x1e6280);}}});};exports[_0x5f59('0x92')]=function(_0x497bef,_0x50364f){var _0x746af6={};var _0x1f453d={};var _0x1c4548;var _0x3169b5;return db[_0x5f59('0x31')][_0x5f59('0x59')]({'where':{'id':_0x497bef[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x50364f,null))['then'](function(_0x226de4){if(_0x226de4){_0x1c4548=_0x226de4;_0x1f453d[_0x5f59('0x35')]=_[_0x5f59('0x37')](db[_0x5f59('0x8e')][_0x5f59('0x4c')]);_0x1f453d[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x497bef['query']);_0x1f453d['filters']=_[_0x5f59('0x39')](_0x1f453d['model'],_0x1f453d[_0x5f59('0x36')]);_0x746af6[_0x5f59('0x3a')]=_[_0x5f59('0x39')](_0x1f453d[_0x5f59('0x35')],qs['fields'](_0x497bef['query']['fields']));_0x746af6['attributes']=_0x746af6['attributes']['length']?_0x746af6[_0x5f59('0x3a')]:_0x1f453d[_0x5f59('0x35')];_0x746af6[_0x5f59('0x3f')]=qs[_0x5f59('0x40')](_0x497bef[_0x5f59('0x36')][_0x5f59('0x40')]);_0x746af6[_0x5f59('0x41')]=qs['filters'](_[_0x5f59('0x42')](_0x497bef[_0x5f59('0x36')],_0x1f453d[_0x5f59('0x38')]));if(_0x497bef['query'][_0x5f59('0x43')]){_0x746af6['where']=_['merge'](_0x746af6[_0x5f59('0x41')],{'$or':_[_0x5f59('0x30')](_0x746af6[_0x5f59('0x3a')],function(_0x5537cc){var _0x11e0a8={};_0x11e0a8[_0x5537cc]={'$like':'%'+_0x497bef['query'][_0x5f59('0x43')]+'%'};return _0x11e0a8;})});}_0x746af6=_['merge']({},_0x746af6,_0x497bef[_0x5f59('0x46')]);return _0x1c4548[_0x5f59('0x92')](_0x746af6);}})[_0x5f59('0x25')](function(_0x17c085){if(_0x17c085){_0x3169b5=_0x17c085[_0x5f59('0x3c')];if(!_0x497bef[_0x5f59('0x36')][_0x5f59('0x3d')]('nolimit')){_0x746af6[_0x5f59('0x1e')]=qs[_0x5f59('0x1e')](_0x497bef[_0x5f59('0x36')][_0x5f59('0x1e')]);_0x746af6[_0x5f59('0x21')]=qs[_0x5f59('0x21')](_0x497bef[_0x5f59('0x36')][_0x5f59('0x21')]);}return _0x1c4548[_0x5f59('0x92')](_0x746af6);}})[_0x5f59('0x25')](function(_0x272b27){if(_0x272b27){return _0x272b27?{'count':_0x3169b5,'rows':_0x272b27}:null;}})[_0x5f59('0x25')](respondWithResult(_0x50364f,null))[_0x5f59('0x19')](handleError(_0x50364f,null));};exports[_0x5f59('0x93')]=function(_0x14d96b,_0x1dcd04){var _0x5e9084={'raw':!![],'where':{}};var _0x5789bd={};var _0x2bf476={'count':0x0,'rows':[]};return db['MailAccount'][_0x5f59('0x59')]({'where':{'id':_0x14d96b[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x1dcd04,null))[_0x5f59('0x25')](function(_0x406cb9){if(_0x406cb9){_0x5789bd[_0x5f59('0x35')]=_[_0x5f59('0x37')](db[_0x5f59('0x94')]['rawAttributes']);_0x5789bd[_0x5f59('0x36')]=_[_0x5f59('0x37')](_0x14d96b['query']);_0x5789bd[_0x5f59('0x38')]=_[_0x5f59('0x39')](_0x5789bd[_0x5f59('0x35')],_0x5789bd[_0x5f59('0x36')]);_0x5e9084[_0x5f59('0x3a')]=_['intersection'](_0x5789bd[_0x5f59('0x35')],qs['fields'](_0x14d96b[_0x5f59('0x36')]['fields']));_0x5e9084[_0x5f59('0x3a')]=_0x5e9084['attributes'][_0x5f59('0x3c')]?_0x5e9084[_0x5f59('0x3a')]:_0x5789bd[_0x5f59('0x35')];if(!_0x14d96b[_0x5f59('0x36')][_0x5f59('0x3d')](_0x5f59('0x3e'))){_0x5e9084[_0x5f59('0x1e')]=qs[_0x5f59('0x1e')](_0x14d96b['query']['limit']);_0x5e9084[_0x5f59('0x21')]=qs[_0x5f59('0x21')](_0x14d96b['query'][_0x5f59('0x21')]);}_0x5e9084[_0x5f59('0x3f')]=qs['sort'](_0x14d96b['query'][_0x5f59('0x40')]);_0x5e9084[_0x5f59('0x41')]=qs[_0x5f59('0x38')](_[_0x5f59('0x42')](_0x14d96b['query'],_0x5789bd[_0x5f59('0x38')]));_0x5e9084[_0x5f59('0x41')][_0x5f59('0x55')]=_0x406cb9['id'];if(_0x14d96b[_0x5f59('0x36')][_0x5f59('0x43')]){_0x5e9084[_0x5f59('0x41')]=_[_0x5f59('0x44')](_0x5e9084[_0x5f59('0x41')],{'$or':_[_0x5f59('0x30')](_0x5e9084[_0x5f59('0x3a')],function(_0x554fbd){var _0x502fc7={};_0x502fc7[_0x554fbd]={'$like':'%'+_0x14d96b[_0x5f59('0x36')][_0x5f59('0x43')]+'%'};return _0x502fc7;})});}if(_0x14d96b[_0x5f59('0x36')][_0x5f59('0x95')]){var _0x3958b6=_0x14d96b['query']['$gte'][_0x5f59('0x96')](',');var _0xbc1a6e={};_0xbc1a6e[_0x3958b6[0x0]]={'$gte':moment(_0x3958b6[0x1])[_0x5f59('0x97')]('YYYY-MM-DD\x20HH:mm:ss')};_0x5e9084[_0x5f59('0x41')]=_['merge'](_0x5e9084[_0x5f59('0x41')],_0xbc1a6e);}_0x5e9084=_[_0x5f59('0x44')]({},_0x5e9084,_0x14d96b[_0x5f59('0x46')]);return db[_0x5f59('0x94')][_0x5f59('0x20')]({'where':_0x5e9084[_0x5f59('0x41')]})['then'](function(_0x11b21e){_0x2bf476[_0x5f59('0x20')]=_0x11b21e;if(_0x14d96b[_0x5f59('0x36')][_0x5f59('0x4d')]){_0x5e9084[_0x5f59('0x47')]=[{'all':!![]}];}return db[_0x5f59('0x94')][_0x5f59('0x5a')](_0x5e9084);})[_0x5f59('0x25')](function(_0x4ba84c){if(_0x14d96b['query'][_0x5f59('0x98')]===_0x5f59('0x99')){for(var _0x2eae68=0x0;_0x2eae68<_0x4ba84c['length'];_0x2eae68++){_0x4ba84c[_0x2eae68]['body']=juice(_0x4ba84c[_0x2eae68][_0x5f59('0x4f')]);}}_0x2bf476['rows']=_0x4ba84c;return _0x2bf476;});}})[_0x5f59('0x25')](respondWithFilteredResult(_0x1dcd04,_0x5e9084))['catch'](handleError(_0x1dcd04,null));};exports['send']=function(_0x1dce4,_0x36b28f){var _0x243ca5,_0x135fbc={},_0x4420d8;if(_0x1dce4[_0x5f59('0x4f')]['to']){_0x4420d8=_0x1dce4[_0x5f59('0x4f')]['to'][_0x5f59('0x96')](',')[0x0];}return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x1dce4[_0x5f59('0x52')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x5f59('0x7e')],'as':_0x5f59('0x9a'),'where':{'email':_0x4420d8},'limit':0x1,'order':[[_0x5f59('0x9b'),_0x5f59('0x9c')]]}]},{'model':db[_0x5f59('0x2d')],'as':_0x5f59('0x2e'),'raw':!![]}]})[_0x5f59('0x25')](handleEntityNotFound(_0x36b28f,null))[_0x5f59('0x25')](function(_0x1401d6){if(_0x1401d6){_0x243ca5=_0x1401d6;if(_0x1401d6[_0x5f59('0x2e')]){if(_[_0x5f59('0x63')](_0x1dce4[_0x5f59('0x4f')][_0x5f59('0x9d')])){_0x1dce4['body'][_0x5f59('0x9d')]=util[_0x5f59('0x97')]('%s\x20<%s>',_0x1401d6[_0x5f59('0x2a')],_0x1401d6['email']||_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x66')]);}if(_0x1dce4['body'][_0x5f59('0x9e')]&&_0x1dce4[_0x5f59('0x4f')][_0x5f59('0x9e')]['length']){for(var _0x3f66af=0x0;_0x3f66af<_0x1dce4[_0x5f59('0x4f')]['attachments'][_0x5f59('0x3c')];_0x3f66af+=0x1){_0x1dce4[_0x5f59('0x4f')][_0x5f59('0x9e')][_0x3f66af]={'filename':_0x1dce4[_0x5f59('0x4f')][_0x5f59('0x9e')][_0x3f66af]['name'],'path':path[_0x5f59('0x9f')](config[_0x5f59('0xa0')],'server/files/attachments',_0x1dce4[_0x5f59('0x4f')][_0x5f59('0x9e')][_0x3f66af][_0x5f59('0xa1')])};}}var _0x3a83d4={'tls':{'rejectUnauthorized':![]}};if(_[_0x5f59('0x63')](_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x6a')])){if(_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x6d')]){_0x3a83d4[_0x5f59('0xa2')]={'user':_0x1401d6['Smtp'][_0x5f59('0x66')],'pass':_0x1401d6[_0x5f59('0x2e')]['pass']};}_0x3a83d4[_0x5f59('0x6b')]=_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x6b')];_0x3a83d4['port']=_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x6c')];_0x3a83d4['secure']=_0x1401d6[_0x5f59('0x2e')][_0x5f59('0xa3')];}else{_0x3a83d4['service']=_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x6a')];_0x3a83d4[_0x5f59('0xa2')]={'user':_0x1401d6['Smtp'][_0x5f59('0x66')],'pass':_0x1401d6[_0x5f59('0x2e')][_0x5f59('0x69')]};}return respondWithRpcPromise(_0x5f59('0xa4'),_0x5f59('0xa5'),{'account':_0x3a83d4,'message':_0x1dce4[_0x5f59('0x4f')]});}else{throw new Error('List\x20not\x20found');}}})[_0x5f59('0x25')](function(_0x177571){if(_0x177571){_0x135fbc=_0x177571;if(_0x243ca5[_0x5f59('0xa6')]){if(_0x243ca5[_0x5f59('0xa6')][_0x5f59('0x9a')][_0x5f59('0x3c')]){return _0x243ca5[_0x5f59('0xa6')]['Contacts'][0x0];}else{return db[_0x5f59('0x7e')][_0x5f59('0x57')](_['defaults'](_0x1dce4[_0x5f59('0x4f')],{'firstName':_0x1dce4[_0x5f59('0x4f')]['to'],'email':_0x1dce4[_0x5f59('0x4f')]['to'],'phone':_0x1dce4['body']['to'],'ListId':_0x243ca5[_0x5f59('0xa7')]}));}}else{throw new Error(_0x5f59('0xa8'));}}})['then'](function(_0x4373f1){if(_0x4373f1){var _0x17b3c4={'UserId':_0x1dce4[_0x5f59('0x66')]['id'],'ContactId':_0x4373f1['id'],'MailAccountId':_0x243ca5['id'],'inReplyTo':_0x135fbc[_0x5f59('0xa9')],'to':_0x1dce4[_0x5f59('0x4f')][_0x5f59('0x9d')],'cc':_0x1dce4['body']['cc'],'subject':_0x1dce4['body'][_0x5f59('0xaa')],'attach':_0x1dce4[_0x5f59('0x4f')]['attach'],'firstMsgDirection':_0x5f59('0xab'),'lastMsgAt':moment()['format'](_0x5f59('0xac')),'lastMsgDirection':_0x5f59('0xab'),'Messages':[_['merge'](_0x1dce4['body'],{'messageId':_0x135fbc[_0x5f59('0xa9')],'sentAt':moment()[_0x5f59('0x97')](_0x5f59('0xac')),'read':!![],'MailAccountId':_0x243ca5['id'],'UserId':_0x1dce4[_0x5f59('0x66')]['id'],'ContactId':_0x4373f1['id']})]};if(_0x1dce4[_0x5f59('0x4f')][_0x5f59('0xad')]){_0x17b3c4=_[_0x5f59('0x44')](_0x17b3c4,_0x1dce4[_0x5f59('0x4f')]['Interaction']);}return db['MailInteraction'][_0x5f59('0x57')](_0x17b3c4,{'include':[{'model':db[_0x5f59('0x94')],'as':_0x5f59('0xae')}]});}})[_0x5f59('0x25')](respondWithResult(_0x36b28f,null))['catch'](handleError(_0x36b28f,null));};exports['verifySmtp']=function(_0x1e2787,_0x251e4d){return db['MailAccount'][_0x5f59('0x4e')]({'where':{'id':_0x1e2787[_0x5f59('0x52')]['id']},'include':[{'model':db[_0x5f59('0x2d')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x5f59('0xaf')],'as':'CloudProvider','raw':!![]}]}]})['then'](handleEntityNotFound(_0x251e4d,null))['then'](function(_0x554b1d){if(!_0x554b1d['Smtp'])return;var _0x13676f={'id':_0x554b1d['id'],'tls':{'rejectUnauthorized':![]}};if(_0x554b1d[_0x5f59('0x60')]!==_0x5f59('0x61')){_0x13676f[_0x5f59('0x6a')]=_0x554b1d[_0x5f59('0x60')];}else{_0x13676f[_0x5f59('0x6b')]=_0x554b1d[_0x5f59('0x2e')]['host'];_0x13676f[_0x5f59('0x6c')]=_0x554b1d[_0x5f59('0x2e')][_0x5f59('0x6c')];_0x13676f[_0x5f59('0xa3')]=_0x554b1d[_0x5f59('0x2e')]['secure'];}if(_0x554b1d['Smtp'][_0x5f59('0x6d')]){if(_0x554b1d['Smtp'][_0x5f59('0x51')]){_0x13676f[_0x5f59('0xa2')]={'type':_0x5f59('0xb0'),'user':_0x554b1d[_0x5f59('0x2e')][_0x5f59('0x66')],'accessToken':_0x554b1d[_0x5f59('0x2e')]['CloudProvider'][_0x5f59('0xb1')]};}else{_0x13676f[_0x5f59('0xa2')]={'user':_0x554b1d[_0x5f59('0x2e')][_0x5f59('0x66')],'pass':_0x554b1d[_0x5f59('0x2e')][_0x5f59('0x69')]};}}return respondWithRpcPromise(_0x5f59('0xb2'),_0x5f59('0xb3'),{'account':_0x13676f});})[_0x5f59('0x25')](respondWithResult(_0x251e4d,null))[_0x5f59('0x19')](handleError(_0x251e4d,null));};exports[_0x5f59('0x24')]=function(_0x43717a,_0x5f3c2c){return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x43717a[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x5f3c2c,null))[_0x5f59('0x25')](function(_0x507cbd){if(_0x507cbd&&_0x507cbd[_0x5f59('0x6a')]){throw new db[(_0x5f59('0xb4'))][(_0x5f59('0xb5'))](_0x5f59('0xb6'));}return _0x507cbd;})['then'](removeEntity(_0x5f3c2c,null))['catch'](handleError(_0x5f3c2c,null));};exports[_0x5f59('0xb7')]=function(_0x19c433,_0x3c2e42){return db[_0x5f59('0x31')][_0x5f59('0x4e')]({'where':{'id':_0x19c433['params']['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x3c2e42,null))[_0x5f59('0x25')](function(_0x598853){if(_0x598853){return _0x598853['addAgents'](_0x19c433[_0x5f59('0x4f')][_0x5f59('0x5c')],_[_0x5f59('0x7c')](_0x19c433[_0x5f59('0x4f')],[_0x5f59('0x5c'),'id'])||{})[_0x5f59('0xb8')](function(_0x225a6c){for(var _0x3bbffa=0x0;_0x3bbffa<_0x19c433[_0x5f59('0x4f')][_0x5f59('0x5c')][_0x5f59('0x3c')];_0x3bbffa+=0x1){socket['emit'](_0x5f59('0xb9'),{'UserId':Number(_0x19c433[_0x5f59('0x4f')][_0x5f59('0x5c')][_0x3bbffa]),'MailAccountId':Number(_0x19c433[_0x5f59('0x52')]['id'])});}return _0x225a6c;});}})['then'](respondWithResult(_0x3c2e42,null))[_0x5f59('0x19')](handleError(_0x3c2e42,null));};exports[_0x5f59('0xba')]=function(_0x2e3f8a,_0x124c49){return db[_0x5f59('0x31')]['find']({'where':{'id':_0x2e3f8a[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x124c49,null))[_0x5f59('0x25')](function(_0x2b1d2d){if(_0x2b1d2d){return _0x2b1d2d[_0x5f59('0xba')](_0x2e3f8a[_0x5f59('0x36')]['ids'])[_0x5f59('0x25')](function(){if(_[_0x5f59('0xbb')](_0x2e3f8a[_0x5f59('0x36')][_0x5f59('0x5c')])){for(var _0x219eec=0x0;_0x219eec<_0x2e3f8a['query'][_0x5f59('0x5c')][_0x5f59('0x3c')];_0x219eec+=0x1){socket[_0x5f59('0xbc')](_0x5f59('0xbd'),{'UserId':Number(_0x2e3f8a[_0x5f59('0x36')]['ids'][_0x219eec]),'MailAccountId':Number(_0x2e3f8a[_0x5f59('0x52')]['id'])});}}else{socket[_0x5f59('0xbc')](_0x5f59('0xbd'),{'UserId':Number(_0x2e3f8a[_0x5f59('0x36')][_0x5f59('0x5c')]),'MailAccountId':Number(_0x2e3f8a['params']['id'])});}});}})['then'](respondWithStatusCode(_0x124c49,null))[_0x5f59('0x19')](handleError(_0x124c49,null));};exports[_0x5f59('0xbe')]=function(_0x30d656,_0x397912){var _0x5820b4={};var _0x5dc50d={};var _0x17210f;var _0x540a63;return db[_0x5f59('0x31')][_0x5f59('0x59')]({'where':{'id':_0x30d656[_0x5f59('0x52')]['id']}})[_0x5f59('0x25')](handleEntityNotFound(_0x397912,null))[_0x5f59('0x25')](function(_0x3fa5fe){if(_0x3fa5fe){_0x17210f=_0x3fa5fe;_0x5dc50d[_0x5f59('0x35')]=_[_0x5f59('0x37')](db[_0x5f59('0x80')]['rawAttributes']);_0x5dc50d['query']=_[_0x5f59('0x37')](_0x30d656[_0x5f59('0x36')]);_0x5dc50d[_0x5f59('0x38')]=_['intersection'](_0x5dc50d[_0x5f59('0x35')],_0x5dc50d[_0x5f59('0x36')]);_0x5820b4['attributes']=_['intersection'](_0x5dc50d[_0x5f59('0x35')],qs[_0x5f59('0x3b')](_0x30d656[_0x5f59('0x36')]['fields']));_0x5820b4[_0x5f59('0x3a')]=_0x5820b4[_0x5f59('0x3a')][_0x5f59('0x3c')]?_0x5820b4[_0x5f59('0x3a')]:_0x5dc50d['model'];_0x5820b4['order']=qs['sort'](_0x30d656['query']['sort']);_0x5820b4[_0x5f59('0x41')]=qs[_0x5f59('0x38')](_['pick'](_0x30d656[_0x5f59('0x36')],_0x5dc50d['filters']));if(_0x30d656['query']['filter']){_0x5820b4[_0x5f59('0x41')]=_[_0x5f59('0x44')](_0x5820b4['where'],{'$or':_[_0x5f59('0x30')](_0x5820b4[_0x5f59('0x3a')],function(_0x19733d){var _0x251f98={};_0x251f98[_0x19733d]={'$like':'%'+_0x30d656[_0x5f59('0x36')][_0x5f59('0x43')]+'%'};return _0x251f98;})});}_0x5820b4=_[_0x5f59('0x44')]({},_0x5820b4,_0x30d656[_0x5f59('0x46')]);return _0x17210f[_0x5f59('0xbe')](_0x5820b4);}})[_0x5f59('0x25')](function(_0x1b9cdc){if(_0x1b9cdc){_0x540a63=_0x1b9cdc[_0x5f59('0x3c')];if(!_0x30d656[_0x5f59('0x36')]['hasOwnProperty'](_0x5f59('0x3e'))){_0x5820b4['limit']=qs[_0x5f59('0x1e')](_0x30d656[_0x5f59('0x36')][_0x5f59('0x1e')]);_0x5820b4[_0x5f59('0x21')]=qs[_0x5f59('0x21')](_0x30d656[_0x5f59('0x36')][_0x5f59('0x21')]);}return _0x17210f[_0x5f59('0xbe')](_0x5820b4);}})['then'](function(_0x210286){if(_0x210286){return _0x210286?{'count':_0x540a63,'rows':_0x210286}:null;}})[_0x5f59('0x25')](respondWithResult(_0x397912,null))[_0x5f59('0x19')](handleError(_0x397912,null));};
\ No newline at end of file
+var _0xb802=['READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','stack','getApplications','getMessages','$gte','split','format','MailMessage','inlineCss','CmList','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','root','basename','secure','SendMail','sendMail','List\x20not\x20found','messageId','attach','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','CloudProvider','auth','OAuth2','data5','VerifySmtp','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','emit','getAgents','moment','bluebird','util','juice','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','jayson/promise','client','http','request','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','update','then','destroy','MailAccounts','UserProfileResource','name','send','MailServerIn','Imap','Smtp','Pause','mandatoryDispositionPause','map','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','options','MailAccount','includeAll','include','findAll','rows','show','params','MailServerOut','keys','rawAttributes','merge','find','body','modernAuthentication','CloudProviderId','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','provider','custom','isNil','active','description','user','username','password','pass','service','host','port','authentication','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','getInteractions','CmContact','Contact','User','Tag','Tags','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0xb802,0x195));var _0x2b80=function(_0x25d66f,_0x17ad4c){_0x25d66f=_0x25d66f-0x0;var _0x4feb17=_0xb802[_0x25d66f];return _0x4feb17;};'use strict';var moment=require(_0x2b80('0x0'));var BPromise=require(_0x2b80('0x1'));var util=require(_0x2b80('0x2'));var path=require('path');var _=require('lodash');var juice=require(_0x2b80('0x3'));var Redis=require('ioredis');var qs=require(_0x2b80('0x4'));var logger=require(_0x2b80('0x5'))(_0x2b80('0x6'));var config=require('../../config/environment');var db=require(_0x2b80('0x7'))['db'];config[_0x2b80('0x8')]=_[_0x2b80('0x9')](config[_0x2b80('0x8')],{'host':_0x2b80('0xa'),'port':0x18eb});var socket=require(_0x2b80('0xb'))(new Redis(config[_0x2b80('0x8')]));require(_0x2b80('0xc'))['register'](socket);var jayson=require(_0x2b80('0xd'));var client=jayson[_0x2b80('0xe')][_0x2b80('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x13a49a,_0x18586d,_0x2de58e,_0x56851a){return new BPromise(function(_0x37458b,_0x54c628){var _0x457594=_0x56851a||client;return _0x457594[_0x2b80('0x10')](_0x13a49a,_0x2de58e)['then'](function(_0x46d6ce){logger['info'](_0x2b80('0x11'),_0x18586d,_0x2b80('0x12'));logger[_0x2b80('0x13')](_0x2b80('0x14'),_0x18586d,_0x2b80('0x12'),JSON[_0x2b80('0x15')](_0x46d6ce));if(_0x46d6ce[_0x2b80('0x16')]){if(_0x46d6ce['error'][_0x2b80('0x17')]===0x1f4){logger[_0x2b80('0x16')](_0x2b80('0x11'),_0x18586d,_0x46d6ce['error'][_0x2b80('0x18')]);return _0x54c628(_0x46d6ce['error']['message']);}logger[_0x2b80('0x16')]('MailAccount,\x20%s,\x20%s',_0x18586d,_0x46d6ce[_0x2b80('0x16')][_0x2b80('0x18')]);return _0x37458b(_0x46d6ce[_0x2b80('0x16')][_0x2b80('0x18')]);}else{logger['info'](_0x2b80('0x11'),_0x18586d,'request\x20sent');_0x37458b(_0x46d6ce[_0x2b80('0x19')][_0x2b80('0x18')]);}})[_0x2b80('0x1a')](function(_0x396cd8){logger[_0x2b80('0x16')]('MailAccount,\x20%s,\x20%s',_0x18586d,_0x396cd8);_0x54c628(_0x396cd8);});});}function respondWithStatusCode(_0x4d0eb0,_0x2017ce){_0x2017ce=_0x2017ce||0xcc;return function(_0x40458c){if(_0x40458c){return _0x4d0eb0[_0x2b80('0x1b')](_0x2017ce);}return _0x4d0eb0[_0x2b80('0x1c')](_0x2017ce)[_0x2b80('0x1d')]();};}function respondWithResult(_0x530bec,_0x20c0d2){_0x20c0d2=_0x20c0d2||0xc8;return function(_0x4604c6){if(_0x4604c6){return _0x530bec[_0x2b80('0x1c')](_0x20c0d2)['json'](_0x4604c6);}};}function respondWithFilteredResult(_0x327ba0,_0x58515c){return function(_0x9ba45c){if(_0x9ba45c){var _0x22a7e4=typeof _0x58515c[_0x2b80('0x1e')]===_0x2b80('0x1f')&&typeof _0x58515c['limit']===_0x2b80('0x1f');var _0x554ea2=_0x9ba45c[_0x2b80('0x20')];var _0x5ae743=_0x22a7e4?0x0:_0x58515c['offset'];var _0x41b656=_0x22a7e4?_0x9ba45c['count']:_0x58515c[_0x2b80('0x1e')]+_0x58515c[_0x2b80('0x21')];var _0x5aa9d3;if(_0x41b656>=_0x554ea2){_0x41b656=_0x554ea2;_0x5aa9d3=0xc8;}else{_0x5aa9d3=0xce;}_0x327ba0[_0x2b80('0x1c')](_0x5aa9d3);return _0x327ba0[_0x2b80('0x22')](_0x2b80('0x23'),_0x5ae743+'-'+_0x41b656+'/'+_0x554ea2)[_0x2b80('0x24')](_0x9ba45c);}return null;};}function saveUpdates(_0x1f5855){return function(_0x352d37){if(_0x352d37){return _0x352d37[_0x2b80('0x25')](_0x1f5855)[_0x2b80('0x26')](function(_0x20c550){return _0x20c550;});}return null;};}function removeEntity(_0x52db01){return function(_0x5d90c1){if(_0x5d90c1){return _0x5d90c1[_0x2b80('0x27')]()['then'](function(){var _0x55be4e=_0x5d90c1['get']({'plain':!![]});var _0x5399e8=_0x2b80('0x28');return db[_0x2b80('0x29')][_0x2b80('0x27')]({'where':{'type':_0x5399e8,'resourceId':_0x55be4e['id']}})[_0x2b80('0x26')](function(){return _0x5d90c1;});})[_0x2b80('0x26')](function(){_0x52db01['status'](0xcc)[_0x2b80('0x1d')]();});}};}function handleEntityNotFound(_0x1edcab){return function(_0x86a9d0){if(!_0x86a9d0){_0x1edcab[_0x2b80('0x1b')](0x194);}return _0x86a9d0;};}function handleError(_0x28fcb8,_0x5f22e8){_0x5f22e8=_0x5f22e8||0x1f4;return function(_0x7aed41){logger[_0x2b80('0x16')](_0x7aed41['stack']);if(_0x7aed41[_0x2b80('0x2a')]){delete _0x7aed41[_0x2b80('0x2a')];}_0x28fcb8['status'](_0x5f22e8)[_0x2b80('0x2b')](_0x7aed41);};}exports['index']=function(_0x4f7dbe,_0x4d8b2d){var _0x44460e={'include':[{'model':db[_0x2b80('0x2c')],'as':_0x2b80('0x2d')},{'model':db['MailServerOut'],'as':_0x2b80('0x2e')},{'model':db[_0x2b80('0x2f')],'as':_0x2b80('0x30')}]},_0x1f6d5a={},_0x204a2d={'count':0x0,'rows':[]};var _0x47d812=_[_0x2b80('0x31')](db['MailAccount']['rawAttributes'],function(_0x32c7fb){return{'name':_0x32c7fb[_0x2b80('0x32')],'type':_0x32c7fb['type']['key']};});_0x1f6d5a[_0x2b80('0x33')]=_[_0x2b80('0x31')](_0x47d812,_0x2b80('0x2a'));_0x1f6d5a[_0x2b80('0x34')]=_['keys'](_0x4f7dbe[_0x2b80('0x34')]);_0x1f6d5a[_0x2b80('0x35')]=_[_0x2b80('0x36')](_0x1f6d5a[_0x2b80('0x33')],_0x1f6d5a[_0x2b80('0x34')]);_0x44460e['attributes']=_['intersection'](_0x1f6d5a[_0x2b80('0x33')],qs[_0x2b80('0x37')](_0x4f7dbe[_0x2b80('0x34')][_0x2b80('0x37')]));_0x44460e[_0x2b80('0x38')]=_0x44460e[_0x2b80('0x38')][_0x2b80('0x39')]?_0x44460e[_0x2b80('0x38')]:_0x1f6d5a['model'];if(!_0x4f7dbe['query'][_0x2b80('0x3a')](_0x2b80('0x3b'))){_0x44460e['limit']=qs[_0x2b80('0x21')](_0x4f7dbe['query'][_0x2b80('0x21')]);_0x44460e[_0x2b80('0x1e')]=qs[_0x2b80('0x1e')](_0x4f7dbe['query'][_0x2b80('0x1e')]);}_0x44460e[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x4f7dbe['query']['sort']);_0x44460e[_0x2b80('0x3e')]=qs['filters'](_[_0x2b80('0x3f')](_0x4f7dbe[_0x2b80('0x34')],_0x1f6d5a[_0x2b80('0x35')]),_0x47d812);if(_0x4f7dbe[_0x2b80('0x34')][_0x2b80('0x40')]){_0x44460e[_0x2b80('0x3e')]=_['merge'](_0x44460e[_0x2b80('0x3e')],{'$or':_[_0x2b80('0x31')](_0x47d812,function(_0x15da07){if(_0x15da07[_0x2b80('0x41')]!=='VIRTUAL'){var _0x416652={};_0x416652[_0x15da07[_0x2b80('0x2a')]]={'$like':'%'+_0x4f7dbe[_0x2b80('0x34')][_0x2b80('0x40')]+'%'};return _0x416652;}})});}_0x44460e=_['merge']({},_0x44460e,_0x4f7dbe[_0x2b80('0x42')]);var _0x510404={'where':_0x44460e[_0x2b80('0x3e')]};return db[_0x2b80('0x43')][_0x2b80('0x20')](_0x510404)['then'](function(_0x1fdf98){_0x204a2d[_0x2b80('0x20')]=_0x1fdf98;if(_0x4f7dbe[_0x2b80('0x34')][_0x2b80('0x44')]){_0x44460e[_0x2b80('0x45')]=[{'all':!![]}];}return db[_0x2b80('0x43')][_0x2b80('0x46')](_0x44460e);})[_0x2b80('0x26')](function(_0xd039ab){_0x204a2d[_0x2b80('0x47')]=_0xd039ab;return _0x204a2d;})['then'](respondWithFilteredResult(_0x4d8b2d,_0x44460e))[_0x2b80('0x1a')](handleError(_0x4d8b2d,null));};exports[_0x2b80('0x48')]=function(_0x370224,_0x1ff1ef){var _0x136e25={'raw':![],'where':{'id':_0x370224[_0x2b80('0x49')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x2b80('0x2d')},{'model':db[_0x2b80('0x4a')],'as':'Smtp'},{'model':db['Pause'],'as':_0x2b80('0x30')}]},_0x5beaae={};_0x5beaae[_0x2b80('0x33')]=_[_0x2b80('0x4b')](db[_0x2b80('0x43')][_0x2b80('0x4c')]);_0x5beaae[_0x2b80('0x34')]=_[_0x2b80('0x4b')](_0x370224[_0x2b80('0x34')]);_0x5beaae[_0x2b80('0x35')]=_[_0x2b80('0x36')](_0x5beaae[_0x2b80('0x33')],_0x5beaae[_0x2b80('0x34')]);_0x136e25[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0x5beaae['model'],qs[_0x2b80('0x37')](_0x370224[_0x2b80('0x34')]['fields']));_0x136e25[_0x2b80('0x38')]=_0x136e25[_0x2b80('0x38')][_0x2b80('0x39')]?_0x136e25[_0x2b80('0x38')]:_0x5beaae[_0x2b80('0x33')];if(_0x370224[_0x2b80('0x34')]['includeAll']){_0x136e25[_0x2b80('0x45')]=[{'all':!![]}];}_0x136e25=_[_0x2b80('0x4d')]({},_0x136e25,_0x370224[_0x2b80('0x42')]);return db[_0x2b80('0x43')][_0x2b80('0x4e')](_0x136e25)[_0x2b80('0x26')](handleEntityNotFound(_0x1ff1ef,null))['then'](respondWithResult(_0x1ff1ef,null))[_0x2b80('0x1a')](handleError(_0x1ff1ef,null));};exports[_0x2b80('0x25')]=function(_0x42397f,_0x3d7be1){if(_0x42397f[_0x2b80('0x4f')]['id']){delete _0x42397f[_0x2b80('0x4f')]['id'];}if(_0x42397f[_0x2b80('0x4f')][_0x2b80('0x2d')]){if(!_0x42397f[_0x2b80('0x4f')][_0x2b80('0x2d')][_0x2b80('0x50')]){_0x42397f['body']['Imap'][_0x2b80('0x51')]=null;}}if(_0x42397f[_0x2b80('0x4f')][_0x2b80('0x2e')]){if(!_0x42397f['body'][_0x2b80('0x2e')][_0x2b80('0x50')]){_0x42397f[_0x2b80('0x4f')][_0x2b80('0x2e')][_0x2b80('0x51')]=null;}}return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0x42397f[_0x2b80('0x49')]['id']},'include':[{'model':db[_0x2b80('0x2c')],'as':_0x2b80('0x2d')},{'model':db[_0x2b80('0x4a')],'as':_0x2b80('0x2e')},{'model':db[_0x2b80('0x2f')],'as':_0x2b80('0x30')}]})[_0x2b80('0x26')](handleEntityNotFound(_0x3d7be1,null))[_0x2b80('0x26')](saveUpdates(_0x42397f['body'],null))[_0x2b80('0x26')](function(_0x318d97){if(_0x318d97&&_0x42397f[_0x2b80('0x4f')]['Imap']){return db[_0x2b80('0x2c')][_0x2b80('0x25')](_0x42397f[_0x2b80('0x4f')][_0x2b80('0x2d')],{'where':{'MailAccountId':_0x318d97['id']}})[_0x2b80('0x26')](function(){return _0x318d97;});}return _0x318d97;})[_0x2b80('0x26')](function(_0x1a9df5){if(_0x1a9df5&&_0x42397f[_0x2b80('0x4f')][_0x2b80('0x2e')]){return db['MailServerOut']['update'](_0x42397f['body'][_0x2b80('0x2e')],{'where':{'MailAccountId':_0x1a9df5['id']}})['then'](function(){return _0x1a9df5;});}return _0x1a9df5;})[_0x2b80('0x26')](respondWithResult(_0x3d7be1,null))[_0x2b80('0x1a')](handleError(_0x3d7be1,null));};exports[_0x2b80('0x52')]=function(_0x33cd9f,_0x58c7c8){return db[_0x2b80('0x43')]['describe']()[_0x2b80('0x26')](respondWithResult(_0x58c7c8,null))[_0x2b80('0x1a')](handleError(_0x58c7c8,null));};exports[_0x2b80('0x53')]=function(_0x3f4125,_0x560160){if(_0x3f4125[_0x2b80('0x4f')]['id']){delete _0x3f4125[_0x2b80('0x4f')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x3f4125[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x560160,null))[_0x2b80('0x26')](function(_0x4805de){if(_0x4805de){_0x3f4125[_0x2b80('0x4f')][_0x2b80('0x54')]=_0x4805de['id'];return db[_0x2b80('0x55')][_0x2b80('0x56')](_0x3f4125[_0x2b80('0x4f')]);}})[_0x2b80('0x26')](respondWithResult(_0x560160,null))[_0x2b80('0x1a')](handleError(_0x560160,null));};exports[_0x2b80('0x57')]=function(_0x51ab9c,_0x467b9b){var _0x1a2432={'raw':![],'where':{}};var _0x38e33e={};var _0xd9d8fa={'count':0x0,'rows':[]};return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x51ab9c[_0x2b80('0x49')]['id']}})['then'](handleEntityNotFound(_0x467b9b,null))[_0x2b80('0x26')](function(_0x16544d){if(_0x16544d){_0x38e33e['model']=_[_0x2b80('0x4b')](db['Disposition']['rawAttributes']);_0x38e33e[_0x2b80('0x34')]=_[_0x2b80('0x4b')](_0x51ab9c[_0x2b80('0x34')]);_0x38e33e[_0x2b80('0x35')]=_[_0x2b80('0x36')](_0x38e33e[_0x2b80('0x33')],_0x38e33e[_0x2b80('0x34')]);_0x1a2432[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0x38e33e[_0x2b80('0x33')],qs[_0x2b80('0x37')](_0x51ab9c['query'][_0x2b80('0x37')]));_0x1a2432['attributes']=_0x1a2432[_0x2b80('0x38')][_0x2b80('0x39')]?_0x1a2432[_0x2b80('0x38')]:_0x38e33e[_0x2b80('0x33')];if(!_0x51ab9c[_0x2b80('0x34')][_0x2b80('0x3a')]('nolimit')){_0x1a2432[_0x2b80('0x21')]=qs[_0x2b80('0x21')](_0x51ab9c['query'][_0x2b80('0x21')]);_0x1a2432['offset']=qs[_0x2b80('0x1e')](_0x51ab9c[_0x2b80('0x34')][_0x2b80('0x1e')]);}_0x1a2432[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x51ab9c['query']['sort']);_0x1a2432[_0x2b80('0x3e')]=qs[_0x2b80('0x35')](_[_0x2b80('0x3f')](_0x51ab9c[_0x2b80('0x34')],_0x38e33e[_0x2b80('0x35')]));_0x1a2432[_0x2b80('0x3e')][_0x2b80('0x54')]=_0x16544d['id'];if(_0x51ab9c[_0x2b80('0x34')][_0x2b80('0x40')]){_0x1a2432['where']=_[_0x2b80('0x4d')](_0x1a2432['where'],{'$or':_[_0x2b80('0x31')](_0x1a2432[_0x2b80('0x38')],function(_0xf6c150){var _0x495e2c={};_0x495e2c[_0xf6c150]={'$like':'%'+_0x51ab9c['query'][_0x2b80('0x40')]+'%'};return _0x495e2c;})});}_0x1a2432=_[_0x2b80('0x4d')]({},_0x1a2432,_0x51ab9c['options']);return db[_0x2b80('0x55')]['count']({'where':_0x1a2432[_0x2b80('0x3e')]})[_0x2b80('0x26')](function(_0x2023f5){_0xd9d8fa[_0x2b80('0x20')]=_0x2023f5;if(_0x51ab9c[_0x2b80('0x34')]['includeAll']){_0x1a2432['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x1a2432);})[_0x2b80('0x26')](function(_0x227f0b){_0xd9d8fa[_0x2b80('0x47')]=_0x227f0b;return _0xd9d8fa;});}})[_0x2b80('0x26')](respondWithFilteredResult(_0x467b9b,_0x1a2432))[_0x2b80('0x1a')](handleError(_0x467b9b,null));};exports[_0x2b80('0x59')]=function(_0xcebdc8,_0x5b8d07){return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0xcebdc8['params']['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x5b8d07,null))[_0x2b80('0x26')](function(_0x2fc38f){if(_0x2fc38f){return _0x2fc38f[_0x2b80('0x59')](_0xcebdc8[_0x2b80('0x34')][_0x2b80('0x5a')]);}})[_0x2b80('0x26')](respondWithStatusCode(_0x5b8d07,null))['catch'](handleError(_0x5b8d07,null));};exports[_0x2b80('0x5b')]=function(_0x8155ed,_0x2592ac){if(_0x8155ed[_0x2b80('0x4f')]['id']){delete _0x8155ed[_0x2b80('0x4f')]['id'];}return db[_0x2b80('0x43')]['find']({'where':{'id':_0x8155ed[_0x2b80('0x49')]['id']}})['then'](handleEntityNotFound(_0x2592ac,null))[_0x2b80('0x26')](function(_0x2d3cb8){if(_0x2d3cb8){_0x8155ed['body'][_0x2b80('0x54')]=_0x2d3cb8['id'];return db[_0x2b80('0x5c')][_0x2b80('0x56')](_0x8155ed[_0x2b80('0x4f')]);}})[_0x2b80('0x26')](respondWithResult(_0x2592ac,null))[_0x2b80('0x1a')](handleError(_0x2592ac,null));};exports[_0x2b80('0x5d')]=function(_0x53a9dc,_0x484663){var _0x537077={'raw':![],'where':{}};var _0xa45704={};var _0x40f759={'count':0x0,'rows':[]};return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x53a9dc[_0x2b80('0x49')]['id']}})['then'](handleEntityNotFound(_0x484663,null))[_0x2b80('0x26')](function(_0x3fc7f1){if(_0x3fc7f1){_0xa45704['model']=_['keys'](db[_0x2b80('0x5c')]['rawAttributes']);_0xa45704[_0x2b80('0x34')]=_[_0x2b80('0x4b')](_0x53a9dc[_0x2b80('0x34')]);_0xa45704[_0x2b80('0x35')]=_[_0x2b80('0x36')](_0xa45704[_0x2b80('0x33')],_0xa45704[_0x2b80('0x34')]);_0x537077[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0xa45704[_0x2b80('0x33')],qs[_0x2b80('0x37')](_0x53a9dc[_0x2b80('0x34')][_0x2b80('0x37')]));_0x537077[_0x2b80('0x38')]=_0x537077[_0x2b80('0x38')][_0x2b80('0x39')]?_0x537077[_0x2b80('0x38')]:_0xa45704['model'];if(!_0x53a9dc[_0x2b80('0x34')][_0x2b80('0x3a')](_0x2b80('0x3b'))){_0x537077[_0x2b80('0x21')]=qs[_0x2b80('0x21')](_0x53a9dc[_0x2b80('0x34')][_0x2b80('0x21')]);_0x537077[_0x2b80('0x1e')]=qs['offset'](_0x53a9dc[_0x2b80('0x34')][_0x2b80('0x1e')]);}_0x537077[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x53a9dc['query']['sort']);_0x537077[_0x2b80('0x3e')]=qs['filters'](_[_0x2b80('0x3f')](_0x53a9dc['query'],_0xa45704[_0x2b80('0x35')]));_0x537077[_0x2b80('0x3e')]['MailAccountId']=_0x3fc7f1['id'];if(_0x53a9dc[_0x2b80('0x34')]['filter']){_0x537077['where']=_['merge'](_0x537077[_0x2b80('0x3e')],{'$or':_[_0x2b80('0x31')](_0x537077['attributes'],function(_0x38823e){var _0x25af5e={};_0x25af5e[_0x38823e]={'$like':'%'+_0x53a9dc[_0x2b80('0x34')]['filter']+'%'};return _0x25af5e;})});}_0x537077=_[_0x2b80('0x4d')]({},_0x537077,_0x53a9dc[_0x2b80('0x42')]);return db['CannedAnswer'][_0x2b80('0x20')]({'where':_0x537077[_0x2b80('0x3e')]})[_0x2b80('0x26')](function(_0xf1cac4){_0x40f759['count']=_0xf1cac4;if(_0x53a9dc[_0x2b80('0x34')][_0x2b80('0x44')]){_0x537077[_0x2b80('0x45')]=[{'all':!![]}];}return db[_0x2b80('0x5c')][_0x2b80('0x46')](_0x537077);})[_0x2b80('0x26')](function(_0x57c735){_0x40f759['rows']=_0x57c735;return _0x40f759;});}})[_0x2b80('0x26')](respondWithFilteredResult(_0x484663,_0x537077))['catch'](handleError(_0x484663,null));};exports[_0x2b80('0x5e')]=function(_0x351b61,_0x17687a){return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0x351b61[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x17687a,null))['then'](function(_0x597486){if(_0x597486){return _0x597486[_0x2b80('0x5e')](_0x351b61[_0x2b80('0x34')][_0x2b80('0x5a')]);}})['then'](respondWithStatusCode(_0x17687a,null))[_0x2b80('0x1a')](handleError(_0x17687a,null));};exports[_0x2b80('0x56')]=function(_0x25f6bc,_0x411c86){var _0x595c63={'name':_0x25f6bc['body'][_0x2b80('0x2a')],'key':_0x25f6bc[_0x2b80('0x4f')]['key'],'provider':_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x5f')]===_0x2b80('0x60')?null:_0x25f6bc['body'][_0x2b80('0x5f')],'email':_0x25f6bc['body']['email'],'ListId':_0x25f6bc['body']['ListId'],'active':!_[_0x2b80('0x61')](_0x25f6bc['body'][_0x2b80('0x62')])?_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x62')]:!![],'description':_0x25f6bc['body'][_0x2b80('0x63')]||null,'Imap':{},'Smtp':{}};if(_0x595c63[_0x2b80('0x5f')]){_0x595c63[_0x2b80('0x2d')][_0x2b80('0x64')]=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x64')]=_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x65')];_0x595c63['Imap'][_0x2b80('0x66')]=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x67')]=_0x25f6bc[_0x2b80('0x4f')]['password'];if(_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x50')]){_0x595c63[_0x2b80('0x2d')]['modernAuthentication']=_0x595c63['Smtp'][_0x2b80('0x50')]=!![];_0x595c63[_0x2b80('0x2d')]['CloudProviderId']=_0x595c63[_0x2b80('0x2e')]['CloudProviderId']=_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x51')];_0x595c63['Imap'][_0x2b80('0x66')]=_0x595c63[_0x2b80('0x2e')]['pass']=null;}else{_0x595c63[_0x2b80('0x2d')][_0x2b80('0x51')]=_0x595c63['Smtp'][_0x2b80('0x51')]=null;}_0x595c63[_0x2b80('0x2d')][_0x2b80('0x68')]=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x68')]=null;_0x595c63['Imap']['host']=_0x595c63['Smtp'][_0x2b80('0x69')]=null;_0x595c63[_0x2b80('0x2d')]['port']=_0x595c63['Smtp'][_0x2b80('0x6a')]=null;}else{if(_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x6b')]){_0x595c63[_0x2b80('0x2d')][_0x2b80('0x64')]=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x64')]=_0x25f6bc['body'][_0x2b80('0x65')];_0x595c63[_0x2b80('0x2d')]['password']=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x67')]=_0x25f6bc['body'][_0x2b80('0x66')];}else{_0x595c63[_0x2b80('0x2d')][_0x2b80('0x6b')]=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x6b')]=![];_0x595c63[_0x2b80('0x2d')]['user']=_0x595c63[_0x2b80('0x2e')][_0x2b80('0x64')]=null;_0x595c63[_0x2b80('0x2d')][_0x2b80('0x66')]=_0x595c63[_0x2b80('0x2e')]['pass']=null;}_0x595c63[_0x2b80('0x2d')][_0x2b80('0x69')]=_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x2d')][_0x2b80('0x69')];_0x595c63[_0x2b80('0x2d')][_0x2b80('0x6a')]=_0x25f6bc[_0x2b80('0x4f')]['Imap']['port'];_0x595c63[_0x2b80('0x2e')][_0x2b80('0x69')]=_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x2e')][_0x2b80('0x69')];_0x595c63[_0x2b80('0x2e')]['port']=_0x25f6bc[_0x2b80('0x4f')][_0x2b80('0x2e')][_0x2b80('0x6a')];}return db[_0x2b80('0x43')][_0x2b80('0x56')](_0x595c63,{'include':[{'model':db[_0x2b80('0x4a')],'as':_0x2b80('0x2e')},{'model':db[_0x2b80('0x2c')],'as':'Imap'}]})[_0x2b80('0x26')](function(_0x48cbf9){var _0x2f1598=_0x25f6bc['user']['get']({'plain':!![]});if(!_0x2f1598)throw new Error(_0x2b80('0x6c'));if(_0x2f1598['role']==='user'){var _0x414498=_0x48cbf9['get']({'plain':!![]});return db[_0x2b80('0x6d')][_0x2b80('0x4e')]({'where':{'name':_0x2b80('0x28'),'userProfileId':_0x2f1598[_0x2b80('0x6e')]},'raw':!![]})['then'](function(_0x34ad12){if(_0x34ad12&&_0x34ad12['autoAssociation']===0x0){return db[_0x2b80('0x29')][_0x2b80('0x56')]({'name':_0x414498[_0x2b80('0x2a')],'resourceId':_0x414498['id'],'type':_0x34ad12[_0x2b80('0x2a')],'sectionId':_0x34ad12['id']},{})[_0x2b80('0x26')](function(){return _0x48cbf9;});}else{return _0x48cbf9;}})[_0x2b80('0x1a')](function(_0x4b2106){logger[_0x2b80('0x16')](_0x2b80('0x6f'),_0x4b2106);throw _0x4b2106;});}return _0x48cbf9;})[_0x2b80('0x26')](respondWithResult(_0x411c86,0xc9))[_0x2b80('0x1a')](handleError(_0x411c86,null));};exports[_0x2b80('0x70')]=function(_0x5d84b2,_0x10e14d){return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x5d84b2[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x10e14d,null))[_0x2b80('0x26')](function(_0x449275){if(_0x449275){return _0x449275[_0x2b80('0x70')]();}return null;})[_0x2b80('0x26')](respondWithResult(_0x10e14d,null))[_0x2b80('0x1a')](handleError(_0x10e14d,null));};exports[_0x2b80('0x71')]=function(_0x34f4a4,_0x26bf13){if(_0x34f4a4[_0x2b80('0x4f')]['id']){delete _0x34f4a4[_0x2b80('0x4f')]['id'];}return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0x34f4a4['params']['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x26bf13,null))[_0x2b80('0x26')](function(_0x3f7764){if(_0x3f7764){_0x34f4a4['body']['MailAccountId']=_0x3f7764['id'];return db[_0x2b80('0x2c')]['create'](_0x34f4a4[_0x2b80('0x4f')]);}})[_0x2b80('0x26')](respondWithResult(_0x26bf13,null))[_0x2b80('0x1a')](handleError(_0x26bf13,null));};exports['removeImap']=function(_0x445b3d,_0x3dd502){return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x445b3d[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x3dd502,null))[_0x2b80('0x26')](function(_0x3a0e2c){if(_0x3a0e2c){return _0x3a0e2c[_0x2b80('0x72')](null);}return null;})[_0x2b80('0x26')](respondWithStatusCode(_0x3dd502,null))[_0x2b80('0x1a')](handleError(_0x3dd502,null));};exports['getSmtp']=function(_0x41f1e8,_0x340327){return db['MailAccount']['findOne']({'where':{'id':_0x41f1e8[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x340327,null))[_0x2b80('0x26')](function(_0x4fbe70){if(_0x4fbe70){return _0x4fbe70[_0x2b80('0x73')]();}return null;})[_0x2b80('0x26')](respondWithResult(_0x340327,null))[_0x2b80('0x1a')](handleError(_0x340327,null));};exports[_0x2b80('0x74')]=function(_0x2a2f78,_0x26bca0){if(_0x2a2f78[_0x2b80('0x4f')]['id']){delete _0x2a2f78[_0x2b80('0x4f')]['id'];}return db[_0x2b80('0x43')]['find']({'where':{'id':_0x2a2f78[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x26bca0,null))[_0x2b80('0x26')](function(_0x82b337){if(_0x82b337){_0x2a2f78[_0x2b80('0x4f')][_0x2b80('0x54')]=_0x82b337['id'];return db[_0x2b80('0x4a')][_0x2b80('0x56')](_0x2a2f78[_0x2b80('0x4f')]);}})[_0x2b80('0x26')](respondWithResult(_0x26bca0,null))[_0x2b80('0x1a')](handleError(_0x26bca0,null));};exports[_0x2b80('0x75')]=function(_0x5aaf3e,_0x3f53a6){return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x5aaf3e[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x3f53a6,null))['then'](function(_0x542ce2){if(_0x542ce2){return _0x542ce2['setSmtp'](null);}return null;})[_0x2b80('0x26')](respondWithStatusCode(_0x3f53a6,null))[_0x2b80('0x1a')](handleError(_0x3f53a6,null));};exports[_0x2b80('0x76')]=function(_0x5ccaf7,_0x5f492f){return db[_0x2b80('0x77')]['find']({'where':{'id':_0x5ccaf7[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x5f492f,null))[_0x2b80('0x26')](function(_0x2403a7){if(_0x2403a7){return _0x2403a7[_0x2b80('0x76')](_0x5ccaf7[_0x2b80('0x4f')][_0x2b80('0x5a')],_['omit'](_0x5ccaf7[_0x2b80('0x4f')],['ids','id'])||{});}})[_0x2b80('0x26')](respondWithResult(_0x5f492f,null))[_0x2b80('0x1a')](handleError(_0x5f492f,null));};exports[_0x2b80('0x78')]=function(_0x1b04b8,_0x22fea8){var _0x44acc9={'raw':![],'where':{}};var _0x49fefc={};var _0x492e83={'count':0x0,'rows':[]};return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x1b04b8['params']['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x22fea8,null))['then'](function(_0x689311){if(_0x689311){_0x49fefc[_0x2b80('0x33')]=_[_0x2b80('0x4b')](db[_0x2b80('0x77')]['rawAttributes']);_0x49fefc[_0x2b80('0x34')]=_[_0x2b80('0x4b')](_0x1b04b8[_0x2b80('0x34')]);_0x49fefc[_0x2b80('0x35')]=_[_0x2b80('0x36')](_0x49fefc[_0x2b80('0x33')],_0x49fefc[_0x2b80('0x34')]);_0x44acc9[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0x49fefc[_0x2b80('0x33')],qs[_0x2b80('0x37')](_0x1b04b8[_0x2b80('0x34')][_0x2b80('0x37')]));_0x44acc9['attributes']=_0x44acc9[_0x2b80('0x38')][_0x2b80('0x39')]?_0x44acc9[_0x2b80('0x38')]:_0x49fefc[_0x2b80('0x33')];if(!_0x1b04b8['query']['hasOwnProperty'](_0x2b80('0x3b'))){_0x44acc9[_0x2b80('0x21')]=qs['limit'](_0x1b04b8[_0x2b80('0x34')][_0x2b80('0x21')]);_0x44acc9['offset']=qs[_0x2b80('0x1e')](_0x1b04b8[_0x2b80('0x34')][_0x2b80('0x1e')]);}_0x44acc9[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x1b04b8[_0x2b80('0x34')][_0x2b80('0x3d')]);_0x44acc9['where']=qs['filters'](_[_0x2b80('0x3f')](_0x1b04b8['query'],_0x49fefc[_0x2b80('0x35')]));_0x44acc9['where'][_0x2b80('0x54')]=_0x689311['id'];if(_0x1b04b8[_0x2b80('0x34')]['filter']){_0x44acc9[_0x2b80('0x3e')]=_[_0x2b80('0x4d')](_0x44acc9[_0x2b80('0x3e')],{'$or':_['map'](_0x44acc9[_0x2b80('0x38')],function(_0x167523){var _0x29c43c={};_0x29c43c[_0x167523]={'$like':'%'+_0x1b04b8[_0x2b80('0x34')]['filter']+'%'};return _0x29c43c;})});}_0x44acc9=_['merge']({},_0x44acc9,_0x1b04b8[_0x2b80('0x42')]);return db[_0x2b80('0x77')][_0x2b80('0x20')]({'where':_0x44acc9[_0x2b80('0x3e')]})[_0x2b80('0x26')](function(_0x1cc400){_0x492e83[_0x2b80('0x20')]=_0x1cc400;if(_0x1b04b8['query'][_0x2b80('0x44')]){_0x44acc9[_0x2b80('0x45')]=[{'model':db[_0x2b80('0x79')],'as':_0x2b80('0x7a'),'required':![]},{'model':db[_0x2b80('0x7b')],'as':'Owner','attributes':['name','fullname','internal'],'required':![]},{'model':db[_0x2b80('0x7c')],'as':_0x2b80('0x7d'),'attributes':['id',_0x2b80('0x2a'),'color'],'where':_0x1b04b8[_0x2b80('0x34')][_0x2b80('0x7e')]?{'id':_0x1b04b8['query'][_0x2b80('0x7e')]}:undefined,'required':_0x1b04b8[_0x2b80('0x34')][_0x2b80('0x7e')]?!![]:![]}];}return db[_0x2b80('0x77')][_0x2b80('0x46')](_0x44acc9);})['then'](function(_0x5b245c){_0x492e83['rows']=_0x5b245c;return _0x492e83;});}})[_0x2b80('0x26')](respondWithFilteredResult(_0x22fea8,_0x44acc9))['catch'](handleError(_0x22fea8,null));};exports[_0x2b80('0x7f')]=function addApplications(_0x1bd5d8,_0x1b3c30){var _0x12f55e=_0x1bd5d8[_0x2b80('0x49')]['id'];var _0x49dcc4=_0x1bd5d8[_0x2b80('0x4f')];var _0x41293d=0xc8;var _0x29a446=null;return db[_0x2b80('0x80')][_0x2b80('0x81')]({'isolationLevel':db[_0x2b80('0x80')][_0x2b80('0x82')][_0x2b80('0x83')][_0x2b80('0x84')]},function(_0x1bbcd7){return db['MailAccount']['findOne']({'where':{'id':_0x12f55e},'transaction':_0x1bbcd7})[_0x2b80('0x26')](function(_0x20b6ce){if(_0x20b6ce){return db[_0x2b80('0x85')][_0x2b80('0x27')]({'where':{'MailAccountId':_0x12f55e},'transaction':_0x1bbcd7})[_0x2b80('0x26')](function(){var _0x4b713b=_[_0x2b80('0x31')](_0x49dcc4,function(_0x2851f7){_0x2851f7['MailAccountId']=_0x12f55e;return _0x2851f7;});return db[_0x2b80('0x85')][_0x2b80('0x86')](_0x4b713b,{'transaction':_0x1bbcd7});});}else{_0x41293d=0x194;_0x29a446=[];}});})[_0x2b80('0x26')](function(){if(_0x41293d!==0x194){return db['MailApplication'][_0x2b80('0x87')]({'where':{'MailAccountId':_0x12f55e},'order':'priority'})[_0x2b80('0x26')](function(_0x3679db){_0x29a446=_0x3679db;});}})[_0x2b80('0x1a')](function(_0x484f66){_0x41293d=0x1f4;logger[_0x2b80('0x16')](_0x484f66[_0x2b80('0x88')]);if(_0x484f66[_0x2b80('0x2a')]){delete _0x484f66[_0x2b80('0x2a')];}_0x29a446=_0x484f66;})['finally'](function(){if(_0x29a446===null){_0x1b3c30[_0x2b80('0x1b')](_0x41293d);}else{if(_0x41293d===0x1f4){_0x1b3c30['status'](_0x41293d)[_0x2b80('0x2b')](_0x29a446);}else{_0x1b3c30[_0x2b80('0x1c')](_0x41293d)[_0x2b80('0x24')](_0x29a446);}}});};exports[_0x2b80('0x89')]=function(_0x3b2ffe,_0x371aca){var _0x50d83b={};var _0x167484={};var _0x11af6d;var _0x549949;return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x3b2ffe[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x371aca,null))[_0x2b80('0x26')](function(_0x39ef67){if(_0x39ef67){_0x11af6d=_0x39ef67;_0x167484[_0x2b80('0x33')]=_[_0x2b80('0x4b')](db[_0x2b80('0x85')][_0x2b80('0x4c')]);_0x167484['query']=_[_0x2b80('0x4b')](_0x3b2ffe['query']);_0x167484[_0x2b80('0x35')]=_['intersection'](_0x167484[_0x2b80('0x33')],_0x167484[_0x2b80('0x34')]);_0x50d83b[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0x167484[_0x2b80('0x33')],qs[_0x2b80('0x37')](_0x3b2ffe[_0x2b80('0x34')][_0x2b80('0x37')]));_0x50d83b[_0x2b80('0x38')]=_0x50d83b[_0x2b80('0x38')][_0x2b80('0x39')]?_0x50d83b[_0x2b80('0x38')]:_0x167484[_0x2b80('0x33')];_0x50d83b[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x3b2ffe[_0x2b80('0x34')][_0x2b80('0x3d')]);_0x50d83b['where']=qs[_0x2b80('0x35')](_[_0x2b80('0x3f')](_0x3b2ffe['query'],_0x167484[_0x2b80('0x35')]));if(_0x3b2ffe[_0x2b80('0x34')]['filter']){_0x50d83b[_0x2b80('0x3e')]=_[_0x2b80('0x4d')](_0x50d83b[_0x2b80('0x3e')],{'$or':_[_0x2b80('0x31')](_0x50d83b['attributes'],function(_0x25a62c){var _0x58e7fd={};_0x58e7fd[_0x25a62c]={'$like':'%'+_0x3b2ffe[_0x2b80('0x34')]['filter']+'%'};return _0x58e7fd;})});}_0x50d83b=_[_0x2b80('0x4d')]({},_0x50d83b,_0x3b2ffe[_0x2b80('0x42')]);return _0x11af6d['getApplications'](_0x50d83b);}})[_0x2b80('0x26')](function(_0x3b384a){if(_0x3b384a){_0x549949=_0x3b384a[_0x2b80('0x39')];if(!_0x3b2ffe[_0x2b80('0x34')]['hasOwnProperty'](_0x2b80('0x3b'))){_0x50d83b['limit']=qs[_0x2b80('0x21')](_0x3b2ffe['query'][_0x2b80('0x21')]);_0x50d83b[_0x2b80('0x1e')]=qs[_0x2b80('0x1e')](_0x3b2ffe[_0x2b80('0x34')]['offset']);}return _0x11af6d[_0x2b80('0x89')](_0x50d83b);}})[_0x2b80('0x26')](function(_0x136072){if(_0x136072){return _0x136072?{'count':_0x549949,'rows':_0x136072}:null;}})[_0x2b80('0x26')](respondWithResult(_0x371aca,null))['catch'](handleError(_0x371aca,null));};exports[_0x2b80('0x8a')]=function(_0x1b71c1,_0x4499ca){var _0x502911={'raw':!![],'where':{}};var _0x1c5e85={};var _0xfe2c1c={'count':0x0,'rows':[]};return db[_0x2b80('0x43')]['findOne']({'where':{'id':_0x1b71c1[_0x2b80('0x49')]['id']}})['then'](handleEntityNotFound(_0x4499ca,null))[_0x2b80('0x26')](function(_0x24aaaf){if(_0x24aaaf){_0x1c5e85[_0x2b80('0x33')]=_[_0x2b80('0x4b')](db['MailMessage'][_0x2b80('0x4c')]);_0x1c5e85[_0x2b80('0x34')]=_[_0x2b80('0x4b')](_0x1b71c1['query']);_0x1c5e85[_0x2b80('0x35')]=_['intersection'](_0x1c5e85[_0x2b80('0x33')],_0x1c5e85[_0x2b80('0x34')]);_0x502911[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0x1c5e85[_0x2b80('0x33')],qs[_0x2b80('0x37')](_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x37')]));_0x502911['attributes']=_0x502911[_0x2b80('0x38')][_0x2b80('0x39')]?_0x502911[_0x2b80('0x38')]:_0x1c5e85['model'];if(!_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x3a')]('nolimit')){_0x502911[_0x2b80('0x21')]=qs[_0x2b80('0x21')](_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x21')]);_0x502911['offset']=qs[_0x2b80('0x1e')](_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x1e')]);}_0x502911[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x1b71c1[_0x2b80('0x34')]['sort']);_0x502911[_0x2b80('0x3e')]=qs[_0x2b80('0x35')](_[_0x2b80('0x3f')](_0x1b71c1[_0x2b80('0x34')],_0x1c5e85[_0x2b80('0x35')]));_0x502911['where']['MailAccountId']=_0x24aaaf['id'];if(_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x40')]){_0x502911[_0x2b80('0x3e')]=_['merge'](_0x502911[_0x2b80('0x3e')],{'$or':_[_0x2b80('0x31')](_0x502911[_0x2b80('0x38')],function(_0x197306){var _0x3c1cc8={};_0x3c1cc8[_0x197306]={'$like':'%'+_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x40')]+'%'};return _0x3c1cc8;})});}if(_0x1b71c1[_0x2b80('0x34')]['$gte']){var _0x4831fd=_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x8b')][_0x2b80('0x8c')](',');var _0x42946d={};_0x42946d[_0x4831fd[0x0]]={'$gte':moment(_0x4831fd[0x1])[_0x2b80('0x8d')]('YYYY-MM-DD\x20HH:mm:ss')};_0x502911['where']=_[_0x2b80('0x4d')](_0x502911[_0x2b80('0x3e')],_0x42946d);}_0x502911=_[_0x2b80('0x4d')]({},_0x502911,_0x1b71c1[_0x2b80('0x42')]);return db[_0x2b80('0x8e')]['count']({'where':_0x502911[_0x2b80('0x3e')]})[_0x2b80('0x26')](function(_0x1cbdcb){_0xfe2c1c[_0x2b80('0x20')]=_0x1cbdcb;if(_0x1b71c1[_0x2b80('0x34')][_0x2b80('0x44')]){_0x502911['include']=[{'all':!![]}];}return db[_0x2b80('0x8e')][_0x2b80('0x46')](_0x502911);})[_0x2b80('0x26')](function(_0xce007a){if(_0x1b71c1['query'][_0x2b80('0x8f')]==='true'){for(var _0x14c56a=0x0;_0x14c56a<_0xce007a[_0x2b80('0x39')];_0x14c56a++){_0xce007a[_0x14c56a][_0x2b80('0x4f')]=juice(_0xce007a[_0x14c56a][_0x2b80('0x4f')]);}}_0xfe2c1c[_0x2b80('0x47')]=_0xce007a;return _0xfe2c1c;});}})['then'](respondWithFilteredResult(_0x4499ca,_0x502911))[_0x2b80('0x1a')](handleError(_0x4499ca,null));};exports[_0x2b80('0x2b')]=function(_0x1f2054,_0x1f4476){var _0x269377,_0x3ae8cd={},_0x4dd929;if(_0x1f2054[_0x2b80('0x4f')]['to']){_0x4dd929=_0x1f2054['body']['to']['split'](',')[0x0];}return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0x1f2054[_0x2b80('0x49')]['id']},'include':[{'model':db[_0x2b80('0x90')],'as':_0x2b80('0x91'),'include':[{'model':db['CmContact'],'as':_0x2b80('0x92'),'where':{'email':_0x4dd929},'limit':0x1,'order':[[_0x2b80('0x93'),_0x2b80('0x94')]]}]},{'model':db[_0x2b80('0x4a')],'as':_0x2b80('0x2e'),'raw':!![]}]})['then'](handleEntityNotFound(_0x1f4476,null))[_0x2b80('0x26')](function(_0x433de6){if(_0x433de6){_0x269377=_0x433de6;if(_0x433de6[_0x2b80('0x2e')]){if(_[_0x2b80('0x61')](_0x1f2054['body'][_0x2b80('0x95')])){_0x1f2054[_0x2b80('0x4f')][_0x2b80('0x95')]=util[_0x2b80('0x8d')](_0x2b80('0x96'),_0x433de6[_0x2b80('0x2a')],_0x433de6['email']||_0x433de6[_0x2b80('0x2e')]['user']);}if(_0x1f2054[_0x2b80('0x4f')]['attachments']&&_0x1f2054[_0x2b80('0x4f')][_0x2b80('0x97')][_0x2b80('0x39')]){for(var _0x3ec3cf=0x0;_0x3ec3cf<_0x1f2054[_0x2b80('0x4f')][_0x2b80('0x97')][_0x2b80('0x39')];_0x3ec3cf+=0x1){_0x1f2054[_0x2b80('0x4f')][_0x2b80('0x97')][_0x3ec3cf]={'filename':_0x1f2054[_0x2b80('0x4f')][_0x2b80('0x97')][_0x3ec3cf][_0x2b80('0x2a')],'path':path['join'](config[_0x2b80('0x98')],'server/files/attachments',_0x1f2054['body'][_0x2b80('0x97')][_0x3ec3cf][_0x2b80('0x99')])};}}var _0x4d446e={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x433de6[_0x2b80('0x2e')][_0x2b80('0x68')])){if(_0x433de6[_0x2b80('0x2e')][_0x2b80('0x6b')]){_0x4d446e['auth']={'user':_0x433de6[_0x2b80('0x2e')][_0x2b80('0x64')],'pass':_0x433de6[_0x2b80('0x2e')][_0x2b80('0x67')]};}_0x4d446e['host']=_0x433de6[_0x2b80('0x2e')]['host'];_0x4d446e[_0x2b80('0x6a')]=_0x433de6[_0x2b80('0x2e')]['port'];_0x4d446e[_0x2b80('0x9a')]=_0x433de6['Smtp'][_0x2b80('0x9a')];}else{_0x4d446e[_0x2b80('0x68')]=_0x433de6['Smtp'][_0x2b80('0x68')];_0x4d446e['auth']={'user':_0x433de6[_0x2b80('0x2e')][_0x2b80('0x64')],'pass':_0x433de6['Smtp'][_0x2b80('0x67')]};}return respondWithRpcPromise(_0x2b80('0x9b'),_0x2b80('0x9c'),{'account':_0x4d446e,'message':_0x1f2054[_0x2b80('0x4f')]});}else{throw new Error(_0x2b80('0x9d'));}}})[_0x2b80('0x26')](function(_0x2dbb02){if(_0x2dbb02){_0x3ae8cd=_0x2dbb02;if(_0x269377['List']){if(_0x269377[_0x2b80('0x91')][_0x2b80('0x92')][_0x2b80('0x39')]){return _0x269377['List'][_0x2b80('0x92')][0x0];}else{return db[_0x2b80('0x79')][_0x2b80('0x56')](_['defaults'](_0x1f2054[_0x2b80('0x4f')],{'firstName':_0x1f2054[_0x2b80('0x4f')]['to'],'email':_0x1f2054['body']['to'],'phone':_0x1f2054[_0x2b80('0x4f')]['to'],'ListId':_0x269377['ListId']}));}}else{throw new Error(_0x2b80('0x9d'));}}})[_0x2b80('0x26')](function(_0x4eb3a5){if(_0x4eb3a5){var _0x15d7ac={'UserId':_0x1f2054[_0x2b80('0x64')]['id'],'ContactId':_0x4eb3a5['id'],'MailAccountId':_0x269377['id'],'inReplyTo':_0x3ae8cd[_0x2b80('0x9e')],'to':_0x1f2054[_0x2b80('0x4f')][_0x2b80('0x95')],'cc':_0x1f2054[_0x2b80('0x4f')]['cc'],'subject':_0x1f2054[_0x2b80('0x4f')]['subject'],'attach':_0x1f2054['body'][_0x2b80('0x9f')],'firstMsgDirection':'out','lastMsgAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'out','Messages':[_[_0x2b80('0x4d')](_0x1f2054[_0x2b80('0x4f')],{'messageId':_0x3ae8cd[_0x2b80('0x9e')],'sentAt':moment()[_0x2b80('0x8d')](_0x2b80('0xa0')),'read':!![],'MailAccountId':_0x269377['id'],'UserId':_0x1f2054[_0x2b80('0x64')]['id'],'ContactId':_0x4eb3a5['id']})]};if(_0x1f2054['body'][_0x2b80('0xa1')]){_0x15d7ac=_[_0x2b80('0x4d')](_0x15d7ac,_0x1f2054[_0x2b80('0x4f')][_0x2b80('0xa1')]);}return db['MailInteraction'][_0x2b80('0x56')](_0x15d7ac,{'include':[{'model':db[_0x2b80('0x8e')],'as':_0x2b80('0xa2')}]});}})[_0x2b80('0x26')](respondWithResult(_0x1f4476,null))[_0x2b80('0x1a')](handleError(_0x1f4476,null));};exports['verifySmtp']=function(_0xb877dd,_0x1c4e09){return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0xb877dd[_0x2b80('0x49')]['id']},'include':[{'model':db[_0x2b80('0x4a')],'as':_0x2b80('0x2e'),'raw':!![],'include':[{'model':db[_0x2b80('0xa3')],'as':'CloudProvider','raw':!![]}]}]})[_0x2b80('0x26')](handleEntityNotFound(_0x1c4e09,null))['then'](function(_0xfb8ada){if(!_0xfb8ada['Smtp'])return;var _0x5bbc8e={'id':_0xfb8ada['id'],'tls':{'rejectUnauthorized':![]}};if(_0xfb8ada[_0x2b80('0x5f')]!==_0x2b80('0x60')){_0x5bbc8e[_0x2b80('0x68')]=_0xfb8ada[_0x2b80('0x5f')];}else{_0x5bbc8e[_0x2b80('0x69')]=_0xfb8ada['Smtp'][_0x2b80('0x69')];_0x5bbc8e[_0x2b80('0x6a')]=_0xfb8ada[_0x2b80('0x2e')][_0x2b80('0x6a')];_0x5bbc8e[_0x2b80('0x9a')]=_0xfb8ada[_0x2b80('0x2e')]['secure'];}if(_0xfb8ada[_0x2b80('0x2e')][_0x2b80('0x6b')]){if(_0xfb8ada[_0x2b80('0x2e')][_0x2b80('0x50')]){_0x5bbc8e[_0x2b80('0xa4')]={'type':_0x2b80('0xa5'),'user':_0xfb8ada[_0x2b80('0x2e')]['user'],'accessToken':_0xfb8ada['Smtp'][_0x2b80('0xa3')][_0x2b80('0xa6')]};}else{_0x5bbc8e[_0x2b80('0xa4')]={'user':_0xfb8ada[_0x2b80('0x2e')]['user'],'pass':_0xfb8ada[_0x2b80('0x2e')][_0x2b80('0x67')]};}}return respondWithRpcPromise(_0x2b80('0xa7'),_0x2b80('0xa8'),{'account':_0x5bbc8e});})[_0x2b80('0x26')](respondWithResult(_0x1c4e09,null))[_0x2b80('0x1a')](handleError(_0x1c4e09,null));};exports[_0x2b80('0x27')]=function(_0x48a157,_0x19f598){return db[_0x2b80('0x43')][_0x2b80('0x4e')]({'where':{'id':_0x48a157['params']['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x19f598,null))[_0x2b80('0x26')](function(_0x199d4b){if(_0x199d4b&&_0x199d4b[_0x2b80('0x68')]){throw new db[(_0x2b80('0xa9'))][(_0x2b80('0xaa'))](_0x2b80('0xab'));}return _0x199d4b;})[_0x2b80('0x26')](removeEntity(_0x19f598,null))[_0x2b80('0x1a')](handleError(_0x19f598,null));};exports['addAgents']=function(_0x3163ad,_0x59aeaa){return db[_0x2b80('0x43')]['find']({'where':{'id':_0x3163ad[_0x2b80('0x49')]['id']}})['then'](handleEntityNotFound(_0x59aeaa,null))[_0x2b80('0x26')](function(_0x30f71e){if(_0x30f71e){return _0x30f71e[_0x2b80('0xac')](_0x3163ad[_0x2b80('0x4f')][_0x2b80('0x5a')],_['omit'](_0x3163ad[_0x2b80('0x4f')],[_0x2b80('0x5a'),'id'])||{})['spread'](function(_0x1216eb){for(var _0x380e04=0x0;_0x380e04<_0x3163ad['body'][_0x2b80('0x5a')][_0x2b80('0x39')];_0x380e04+=0x1){socket['emit'](_0x2b80('0xad'),{'UserId':Number(_0x3163ad[_0x2b80('0x4f')][_0x2b80('0x5a')][_0x380e04]),'MailAccountId':Number(_0x3163ad['params']['id'])});}return _0x1216eb;});}})['then'](respondWithResult(_0x59aeaa,null))[_0x2b80('0x1a')](handleError(_0x59aeaa,null));};exports[_0x2b80('0xae')]=function(_0xe1c4b9,_0x5b1278){return db['MailAccount'][_0x2b80('0x4e')]({'where':{'id':_0xe1c4b9[_0x2b80('0x49')]['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0x5b1278,null))[_0x2b80('0x26')](function(_0x3562a7){if(_0x3562a7){return _0x3562a7[_0x2b80('0xae')](_0xe1c4b9[_0x2b80('0x34')][_0x2b80('0x5a')])[_0x2b80('0x26')](function(){if(_[_0x2b80('0xaf')](_0xe1c4b9[_0x2b80('0x34')][_0x2b80('0x5a')])){for(var _0x418ff5=0x0;_0x418ff5<_0xe1c4b9[_0x2b80('0x34')][_0x2b80('0x5a')][_0x2b80('0x39')];_0x418ff5+=0x1){socket['emit'](_0x2b80('0xb0'),{'UserId':Number(_0xe1c4b9['query'][_0x2b80('0x5a')][_0x418ff5]),'MailAccountId':Number(_0xe1c4b9[_0x2b80('0x49')]['id'])});}}else{socket[_0x2b80('0xb1')](_0x2b80('0xb0'),{'UserId':Number(_0xe1c4b9[_0x2b80('0x34')][_0x2b80('0x5a')]),'MailAccountId':Number(_0xe1c4b9[_0x2b80('0x49')]['id'])});}});}})[_0x2b80('0x26')](respondWithStatusCode(_0x5b1278,null))[_0x2b80('0x1a')](handleError(_0x5b1278,null));};exports[_0x2b80('0xb2')]=function(_0x1a4235,_0xda7d08){var _0x1e710c={};var _0x34d01a={};var _0x4b3d8c;var _0x397b87;return db[_0x2b80('0x43')][_0x2b80('0x58')]({'where':{'id':_0x1a4235['params']['id']}})[_0x2b80('0x26')](handleEntityNotFound(_0xda7d08,null))['then'](function(_0x382f90){if(_0x382f90){_0x4b3d8c=_0x382f90;_0x34d01a['model']=_[_0x2b80('0x4b')](db['User'][_0x2b80('0x4c')]);_0x34d01a[_0x2b80('0x34')]=_[_0x2b80('0x4b')](_0x1a4235['query']);_0x34d01a[_0x2b80('0x35')]=_[_0x2b80('0x36')](_0x34d01a[_0x2b80('0x33')],_0x34d01a['query']);_0x1e710c[_0x2b80('0x38')]=_[_0x2b80('0x36')](_0x34d01a[_0x2b80('0x33')],qs['fields'](_0x1a4235[_0x2b80('0x34')][_0x2b80('0x37')]));_0x1e710c[_0x2b80('0x38')]=_0x1e710c[_0x2b80('0x38')][_0x2b80('0x39')]?_0x1e710c[_0x2b80('0x38')]:_0x34d01a[_0x2b80('0x33')];_0x1e710c[_0x2b80('0x3c')]=qs[_0x2b80('0x3d')](_0x1a4235['query']['sort']);_0x1e710c[_0x2b80('0x3e')]=qs[_0x2b80('0x35')](_[_0x2b80('0x3f')](_0x1a4235[_0x2b80('0x34')],_0x34d01a['filters']));if(_0x1a4235[_0x2b80('0x34')][_0x2b80('0x40')]){_0x1e710c[_0x2b80('0x3e')]=_[_0x2b80('0x4d')](_0x1e710c['where'],{'$or':_[_0x2b80('0x31')](_0x1e710c['attributes'],function(_0x2076ba){var _0x1ce14b={};_0x1ce14b[_0x2076ba]={'$like':'%'+_0x1a4235[_0x2b80('0x34')][_0x2b80('0x40')]+'%'};return _0x1ce14b;})});}_0x1e710c=_['merge']({},_0x1e710c,_0x1a4235[_0x2b80('0x42')]);return _0x4b3d8c[_0x2b80('0xb2')](_0x1e710c);}})['then'](function(_0x3b1141){if(_0x3b1141){_0x397b87=_0x3b1141[_0x2b80('0x39')];if(!_0x1a4235[_0x2b80('0x34')]['hasOwnProperty'](_0x2b80('0x3b'))){_0x1e710c['limit']=qs[_0x2b80('0x21')](_0x1a4235['query'][_0x2b80('0x21')]);_0x1e710c[_0x2b80('0x1e')]=qs[_0x2b80('0x1e')](_0x1a4235[_0x2b80('0x34')]['offset']);}return _0x4b3d8c[_0x2b80('0xb2')](_0x1e710c);}})['then'](function(_0x596924){if(_0x596924){return _0x596924?{'count':_0x397b87,'rows':_0x596924}:null;}})[_0x2b80('0x26')](respondWithResult(_0xda7d08,null))['catch'](handleError(_0xda7d08,null));};
\ No newline at end of file
index 7220fa1..1ae25d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x686c=['setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events','MailAccount'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x686c,0x1de));var _0xc686=function(_0x24b741,_0x85f7ce){_0x24b741=_0x24b741-0x0;var _0x3d8c28=_0x686c[_0x24b741];return _0x3d8c28;};'use strict';var EventEmitter=require(_0xc686('0x0'));var MailAccount=require('../../mysqldb')['db'][_0xc686('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xc686('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xc686('0x3')};function emitEvent(_0x54f960){return function(_0x51012a,_0x58d145,_0x85f306){MailAccountEvents[_0xc686('0x4')](_0x54f960+':'+_0x51012a['id'],_0x51012a);MailAccountEvents[_0xc686('0x4')](_0x54f960,_0x51012a);_0x85f306(null);};}for(var e in events){if(events[_0xc686('0x5')](e)){var event=events[e];MailAccount[_0xc686('0x6')](e,emitEvent(event));}}module[_0xc686('0x7')]=MailAccountEvents;
\ No newline at end of file
+var _0x86be=['update','remove','hasOwnProperty','hook','exports','events','MailAccount','setMaxListeners','save'];(function(_0x355ce8,_0x5f1d0a){var _0x1db8b8=function(_0x277eb2){while(--_0x277eb2){_0x355ce8['push'](_0x355ce8['shift']());}};_0x1db8b8(++_0x5f1d0a);}(_0x86be,0x176));var _0xe86b=function(_0x153287,_0x1aaed7){_0x153287=_0x153287-0x0;var _0x5dd5f9=_0x86be[_0x153287];return _0x5dd5f9;};'use strict';var EventEmitter=require(_0xe86b('0x0'));var MailAccount=require('../../mysqldb')['db'][_0xe86b('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xe86b('0x2')](0x0);var events={'afterCreate':_0xe86b('0x3'),'afterUpdate':_0xe86b('0x4'),'afterDestroy':_0xe86b('0x5')};function emitEvent(_0x3c3b51){return function(_0x815b97,_0x2ef1e1,_0x47ba5d){MailAccountEvents['emit'](_0x3c3b51+':'+_0x815b97['id'],_0x815b97);MailAccountEvents['emit'](_0x3c3b51,_0x815b97);_0x47ba5d(null);};}for(var e in events){if(events[_0xe86b('0x6')](e)){var event=events[e];MailAccount[_0xe86b('0x7')](e,emitEvent(event));}}module[_0xe86b('0x8')]=MailAccountEvents;
\ No newline at end of file
index 2191445..d4ccc3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacca=['../../config/environment','exports','define','mail_accounts','lodash','util','moment','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xacca,0x9c));var _0xaacc=function(_0x1237c8,_0x357534){_0x1237c8=_0x1237c8-0x0;var _0x5af6c2=_0xacca[_0x1237c8];return _0x5af6c2;};'use strict';var _=require(_0xaacc('0x0'));var util=require(_0xaacc('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xaacc('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xaacc('0x3'));var rimraf=require('rimraf');var config=require(_0xaacc('0x4'));var attributes=require('./mailAccount.attributes');module[_0xaacc('0x5')]=function(_0x3cfde6,_0xe7990b){return _0x3cfde6[_0xaacc('0x6')]('MailAccount',attributes,{'tableName':_0xaacc('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa213=['MailAccount','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./mailAccount.attributes','exports'];(function(_0x1e6516,_0x204efd){var _0x4036f8=function(_0xdae9ef){while(--_0xdae9ef){_0x1e6516['push'](_0x1e6516['shift']());}};_0x4036f8(++_0x204efd);}(_0xa213,0x198));var _0x3a21=function(_0x2357fd,_0x448d7d){_0x2357fd=_0x2357fd-0x0;var _0x306c00=_0xa213[_0x2357fd];return _0x306c00;};'use strict';var _=require(_0x3a21('0x0'));var util=require('util');var logger=require(_0x3a21('0x1'))(_0x3a21('0x2'));var moment=require(_0x3a21('0x3'));var BPromise=require('bluebird');var rp=require(_0x3a21('0x4'));var fs=require('fs');var path=require(_0x3a21('0x5'));var rimraf=require(_0x3a21('0x6'));var config=require(_0x3a21('0x7'));var attributes=require(_0x3a21('0x8'));module[_0x3a21('0x9')]=function(_0x438ea5,_0x2ac000){return _0x438ea5['define'](_0x3a21('0xa'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 56340f0..2ffcc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74c=['format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','Messages','inReplyTo','Contact\x20not\x20found','spread','update','subject','interaction','created','MailMessage','contact','attachments','originTo','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachments','UserId','User','name','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','defaults','localhost','socket.io-emitter','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MailAccount','options','raw','attributes','map','include','model','GetMailAccount','debug','ShowMailAccount','where','NotifyMailAccount','body','mail','CmContact','rawAttributes','updatedAt','CompanyId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','from','find','account','CmList','List','Contacts','DESC','MailApplication','MailServerOut','get','omit','Applications','applications','list','asc','push','length','close','autoclose','ListId','create','List\x20not\x20found','messageId','generate','attach'];(function(_0x4dae00,_0x15b194){var _0x16bf42=function(_0x5f2a9a){while(--_0x5f2a9a){_0x4dae00['push'](_0x4dae00['shift']());}};_0x16bf42(++_0x15b194);}(_0xe74c,0x1ae));var _0xce74=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xe74c[_0x12d033];return _0x3b4e80;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xce74('0x0'));var rs=require(_0xce74('0x1'));var fs=require('fs');var Redis=require(_0xce74('0x2'));var db=require(_0xce74('0x3'))['db'];var utils=require(_0xce74('0x4'));var logger=require(_0xce74('0x5'))(_0xce74('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xce74('0x7')]({'port':0x232c});config[_0xce74('0x8')]=_[_0xce74('0x9')](config[_0xce74('0x8')],{'host':_0xce74('0xa'),'port':0x18eb});var socket=require(_0xce74('0xb'))(new Redis(config['redis']));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x55fac4,_0x42a07f,_0x1c369c){return new BPromise(function(_0x5f283d,_0x2df24f){return client['request'](_0x55fac4,_0x1c369c)[_0xce74('0xc')](function(_0x2349a9){logger[_0xce74('0xd')](_0xce74('0xe'),_0x42a07f,_0xce74('0xf'));logger['debug'](_0xce74('0x10'),_0x42a07f,_0xce74('0xf'),JSON[_0xce74('0x11')](_0x2349a9));if(_0x2349a9[_0xce74('0x12')]){if(_0x2349a9[_0xce74('0x12')][_0xce74('0x13')]===0x1f4){logger[_0xce74('0x12')](_0xce74('0xe'),_0x42a07f,_0x2349a9[_0xce74('0x12')]['message']);return _0x2df24f(_0x2349a9[_0xce74('0x12')][_0xce74('0x14')]);}logger[_0xce74('0x12')](_0xce74('0xe'),_0x42a07f,_0x2349a9[_0xce74('0x12')][_0xce74('0x14')]);return _0x5f283d(_0x2349a9[_0xce74('0x12')][_0xce74('0x14')]);}else{logger[_0xce74('0xd')]('MailAccount,\x20%s,\x20%s',_0x42a07f,_0xce74('0xf'));_0x5f283d(_0x2349a9[_0xce74('0x15')]['message']);}})[_0xce74('0x16')](function(_0xdf3083){logger[_0xce74('0x12')](_0xce74('0xe'),_0x42a07f,_0xdf3083);_0x2df24f(_0xdf3083);});});}exports['GetMailAccount']=function(_0x479dcb){var _0x1d8b4e=this;return new Promise(function(_0x11c3c0,_0xf955ac){return db[_0xce74('0x17')]['findAll']({'raw':_0x479dcb[_0xce74('0x18')]?_0x479dcb[_0xce74('0x18')][_0xce74('0x19')]===undefined?!![]:![]:!![],'where':_0x479dcb[_0xce74('0x18')]?_0x479dcb['options']['where']||null:null,'attributes':_0x479dcb[_0xce74('0x18')]?_0x479dcb[_0xce74('0x18')][_0xce74('0x1a')]||null:null,'limit':_0x479dcb['options']?_0x479dcb['options']['limit']||null:null,'include':_0x479dcb[_0xce74('0x18')]?_0x479dcb[_0xce74('0x18')]['include']?_[_0xce74('0x1b')](_0x479dcb[_0xce74('0x18')][_0xce74('0x1c')],function(_0x333a9e){return{'model':db[_0x333a9e[_0xce74('0x1d')]],'as':_0x333a9e['as'],'attributes':_0x333a9e[_0xce74('0x1a')],'include':_0x333a9e[_0xce74('0x1c')]?_[_0xce74('0x1b')](_0x333a9e['include'],function(_0x1d0e35){return{'model':db[_0x1d0e35[_0xce74('0x1d')]],'as':_0x1d0e35['as'],'attributes':_0x1d0e35['attributes'],'include':_0x1d0e35['include']?_['map'](_0x1d0e35[_0xce74('0x1c')],function(_0xaaebb9){return{'model':db[_0xaaebb9[_0xce74('0x1d')]],'as':_0xaaebb9['as'],'attributes':_0xaaebb9[_0xce74('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x24c1bc){logger[_0xce74('0xd')](_0xce74('0x1e'),_0x479dcb);logger[_0xce74('0x1f')](_0xce74('0x1e'),_0x479dcb,JSON[_0xce74('0x11')](_0x24c1bc));_0x11c3c0(_0x24c1bc);})[_0xce74('0x16')](function(_0x4dfac2){logger[_0xce74('0x12')](_0xce74('0x1e'),_0x4dfac2[_0xce74('0x14')],_0x479dcb);_0xf955ac(_0x1d8b4e[_0xce74('0x12')](0x1f4,_0x4dfac2[_0xce74('0x14')]));});});};exports[_0xce74('0x20')]=function(_0x298e1c){var _0x41cddb=this;return new Promise(function(_0x2bb72a,_0x1e5ef4){return db['MailAccount']['find']({'raw':_0x298e1c[_0xce74('0x18')]?_0x298e1c[_0xce74('0x18')][_0xce74('0x19')]===undefined?!![]:![]:!![],'where':_0x298e1c['options']?_0x298e1c[_0xce74('0x18')][_0xce74('0x21')]||null:null,'attributes':_0x298e1c[_0xce74('0x18')]?_0x298e1c['options']['attributes']||null:null,'include':_0x298e1c['options']?_0x298e1c[_0xce74('0x18')][_0xce74('0x1c')]?_[_0xce74('0x1b')](_0x298e1c[_0xce74('0x18')][_0xce74('0x1c')],function(_0xc4a0a4){return{'model':db[_0xc4a0a4[_0xce74('0x1d')]],'as':_0xc4a0a4['as'],'attributes':_0xc4a0a4[_0xce74('0x1a')],'include':_0xc4a0a4[_0xce74('0x1c')]?_[_0xce74('0x1b')](_0xc4a0a4[_0xce74('0x1c')],function(_0x5ec9b2){return{'model':db[_0x5ec9b2[_0xce74('0x1d')]],'as':_0x5ec9b2['as'],'attributes':_0x5ec9b2[_0xce74('0x1a')],'include':_0x5ec9b2['include']?_['map'](_0x5ec9b2['include'],function(_0x4000f1){return{'model':db[_0x4000f1[_0xce74('0x1d')]],'as':_0x4000f1['as'],'attributes':_0x4000f1[_0xce74('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xce74('0xc')](function(_0x1b0e58){logger[_0xce74('0xd')](_0xce74('0x20'),_0x298e1c);logger[_0xce74('0x1f')](_0xce74('0x20'),_0x298e1c,JSON['stringify'](_0x1b0e58));_0x2bb72a(_0x1b0e58);})[_0xce74('0x16')](function(_0xa3628c){logger['error'](_0xce74('0x20'),_0xa3628c['message'],_0x298e1c);_0x1e5ef4(_0x41cddb[_0xce74('0x12')](0x1f4,_0xa3628c[_0xce74('0x14')]));});});};exports[_0xce74('0x22')]=function(_0x43ba10){var _0x1d1ad9=this;return new Promise(function(_0x5d9976,_0x1f60e8){var _0x4f3d03={'body':_0x43ba10[_0xce74('0x23')],'channel':_0xce74('0x24')};var _0x911a4=_['difference'](_['keys'](db[_0xce74('0x25')][_0xce74('0x26')]),['createdAt',_0xce74('0x27'),_0xce74('0x28'),'ListId']);var _0x448359=![];if(_0x43ba10['body']['id']){delete _0x43ba10['body']['id'];}if(_[_0xce74('0x29')](_0x43ba10['body']['from'])){return _0x1f60e8(_0x1d1ad9[_0xce74('0x12')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xce74('0x29')](_0x43ba10[_0xce74('0x23')]['body'])||_0x43ba10[_0xce74('0x23')][_0xce74('0x23')]===''){return _0x1f60e8(_0x1d1ad9[_0xce74('0x12')](0x1f4,_0xce74('0x2a')));}if(_[_0xce74('0x29')](_0x43ba10[_0xce74('0x23')]['mapKey'])){return _0x1f60e8(_0x1d1ad9['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x911a4));}if(!_[_0xce74('0x2b')](_0x911a4,_0x43ba10[_0xce74('0x23')][_0xce74('0x2c')])){return _0x1f60e8(_0x1d1ad9['error'](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x911a4));}var _0x49089c={};_0x49089c[_0x43ba10[_0xce74('0x23')][_0xce74('0x2c')]]=_0x43ba10[_0xce74('0x23')][_0xce74('0x2d')];return db['MailAccount'][_0xce74('0x2e')]({'where':{'id':_0x43ba10[_0xce74('0x2f')]['id']},'include':[{'model':db[_0xce74('0x30')],'as':_0xce74('0x31'),'include':[{'model':db[_0xce74('0x25')],'as':_0xce74('0x32'),'where':_0x49089c,'limit':0x1,'order':[['updatedAt',_0xce74('0x33')]]}]},{'model':db[_0xce74('0x34')],'as':'Applications'},{'model':db[_0xce74('0x35')],'as':'Smtp'}]})['then'](function(_0x2527ce){if(_0x2527ce&&_0x2527ce['List']){var _0x34faae=_0x2527ce[_0xce74('0x36')]({'plain':!![]});_0x4f3d03[_0xce74('0x2f')]=_[_0xce74('0x37')](_0x34faae,[_0xce74('0x38'),_0xce74('0x31')]);_0x4f3d03[_0xce74('0x39')]=_0x34faae['Applications'];_0x4f3d03[_0xce74('0x3a')]=_0x34faae[_0xce74('0x31')];_0x4f3d03['applications']=_['orderBy'](_0x4f3d03[_0xce74('0x39')],['priority'],[_0xce74('0x3b')]);if(_0x4f3d03[_0xce74('0x2f')]&&_0x4f3d03[_0xce74('0x2f')]['autoclose']){_0x4f3d03[_0xce74('0x39')][_0xce74('0x3c')]({'id':0x0,'priority':_0x4f3d03[_0xce74('0x39')][_0xce74('0x3d')]+0x1,'app':_0xce74('0x3e'),'appdata':_0xce74('0x3f'),'interval':'*,*,*,*'});}if(_0x4f3d03[_0xce74('0x2f')][_0xce74('0x38')]){delete _0x4f3d03[_0xce74('0x2f')][_0xce74('0x38')];}if(_0x4f3d03[_0xce74('0x2f')]['List']){delete _0x4f3d03[_0xce74('0x2f')][_0xce74('0x31')];}if(_0x34faae[_0xce74('0x31')]['Contacts'][_0xce74('0x3d')]){return _0x34faae[_0xce74('0x31')][_0xce74('0x32')][0x0];}var _0x44c993=_[_0xce74('0x9')](_0x43ba10['body'],{'firstName':_0x43ba10['body'][_0xce74('0x2d')],'ListId':_0x34faae[_0xce74('0x40')]});_0x44c993[_0x43ba10['body'][_0xce74('0x2c')]]=_0x43ba10[_0xce74('0x23')][_0xce74('0x2d')];return db[_0xce74('0x25')][_0xce74('0x41')](_0x44c993);}else{throw new Error(_0xce74('0x42'));}})[_0xce74('0xc')](function(_0x59ad44){_0x4f3d03['contact']=_0x59ad44;if(_0x59ad44){if(!_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x43')]){_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x43')]=rs[_0xce74('0x44')]()+'\x20'+_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x2d')];}var _0x297505={'ContactId':_0x59ad44['id'],'MailAccountId':_0x43ba10[_0xce74('0x2f')]['id'],'inReplyTo':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x43')],'to':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')]['from'],'cc':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')]['cc'],'subject':_0x43ba10['body'][_0xce74('0x14')]['subject'],'attach':_0x43ba10['body'][_0xce74('0x14')][_0xce74('0x45')],'lastMsgAt':moment()[_0xce74('0x46')](_0xce74('0x47')),'lastMsgDirection':'in'};return db[_0xce74('0x48')][_0xce74('0x2e')]({'where':{'closed':![],'MailAccountId':_0x43ba10[_0xce74('0x2f')]['id']},'include':[{'model':db['MailMessage'],'as':_0xce74('0x49'),'attributes':[_0xce74('0x43')],'where':{'messageId':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x4a')]}}]})['then'](function(_0x451dfd){if(_0x451dfd){return[_0x451dfd,![]];}return db[_0xce74('0x48')][_0xce74('0x41')](_0x297505)[_0xce74('0xc')](function(_0x517241){return[_0x517241,!![]];});});}else{throw new Error(_0xce74('0x4b'));}})[_0xce74('0x4c')](function(_0x558c8c,_0x1c6103){if(_0x558c8c){_0x448359=_0x1c6103;if(!_0x1c6103){return _0x558c8c[_0xce74('0x4d')]({'inReplyTo':_0x43ba10['body'][_0xce74('0x14')][_0xce74('0x43')],'to':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x2d')],'cc':_0x43ba10['body'][_0xce74('0x14')]['cc'],'subject':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x4e')],'attach':_0x558c8c[_0xce74('0x45')]?_0x558c8c[_0xce74('0x45')]:_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x45')],'substatus':null,'substatusAt':moment()['format'](_0xce74('0x47')),'lastMsgAt':moment()[_0xce74('0x46')](_0xce74('0x47')),'lastMsgDirection':'in'});}else{return _0x558c8c;}}})[_0xce74('0xc')](function(_0x261dea){_0x4f3d03[_0xce74('0x4f')]=_0x261dea[_0xce74('0x36')]({'plain':!![]});_0x4f3d03[_0xce74('0x4f')][_0xce74('0x50')]=_0x448359;return db[_0xce74('0x51')][_0xce74('0x41')]({'body':_0x43ba10[_0xce74('0x23')][_0xce74('0x23')],'MailAccountId':_0x43ba10['account']['id'],'MailInteractionId':_0x261dea['id'],'direction':'in','ContactId':_0x4f3d03[_0xce74('0x52')]['id'],'messageId':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')]['messageId'],'from':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x2d')],'to':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')]['to'],'cc':_0x43ba10['body'][_0xce74('0x14')]['cc'],'subject':_0x43ba10['body'][_0xce74('0x14')][_0xce74('0x4e')],'attach':_0x43ba10['body'][_0xce74('0x14')][_0xce74('0x45')],'Attachments':_0x43ba10['body']['message'][_0xce74('0x53')],'originTo':_0x43ba10[_0xce74('0x23')]['message'][_0xce74('0x54')],'originCc':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x55')],'bcc':_0x43ba10[_0xce74('0x23')]['message'][_0xce74('0x56')],'ChatWebsiteId':_0x43ba10['body']['message'][_0xce74('0x57')]||null,'originChannel':_0x43ba10[_0xce74('0x23')][_0xce74('0x14')][_0xce74('0x58')]||_0xce74('0x59'),'ChatOfflineMessageId':_0x43ba10['body'][_0xce74('0x14')][_0xce74('0x5a')]||null},{'include':[{'model':db['Attachment'],'as':_0xce74('0x5b')}]});})[_0xce74('0xc')](function(_0x276e61){_0x4f3d03[_0xce74('0x14')]=_0x276e61;if(_0x4f3d03[_0xce74('0x4f')][_0xce74('0x5c')]){return db[_0xce74('0x5d')]['find']({'attributes':['id',_0xce74('0x5e')],'where':{'id':_0x4f3d03[_0xce74('0x4f')][_0xce74('0x5c')]}})['then'](function(_0xc79563){if(_0xc79563){_0x4f3d03[_0xce74('0x39')][_0xce74('0x5f')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0xc79563[_0xce74('0x5e')]+','+(_0x4f3d03[_0xce74('0x2f')][_0xce74('0x60')]||0xa),'interval':_0xce74('0x61')});}return respondWithRpcPromise(_0xce74('0x62'),_0xce74('0x63'),_0x4f3d03);});}return respondWithRpcPromise(_0xce74('0x62'),_0xce74('0x63'),_0x4f3d03);})[_0xce74('0xc')](function(_0x275f58){_0x5d9976(_0x275f58);})[_0xce74('0x16')](function(_0x2ca760){_0x1f60e8(_0x1d1ad9['error'](0x1f4,_0x2ca760['message']));});});};
\ No newline at end of file
+var _0x8f04=['findAll','options','raw','where','attributes','limit','include','map','model','info','ShowMailAccount','NotifyMailAccount','body','difference','keys','CmContact','createdAt','updatedAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','account','List','DESC','Applications','Smtp','omit','applications','priority','asc','autoclose','length','close','create','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','find','Messages','inReplyTo','spread','update','format','get','interaction','attachments','originTo','bcc','originChannel','ChatOfflineMessageId','Attachments','UserId','User','agent','name','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','MailAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','GetMailAccount','MailAccount'];(function(_0x248d46,_0xba08ec){var _0x354942=function(_0x1b52a1){while(--_0x1b52a1){_0x248d46['push'](_0x248d46['shift']());}};_0x354942(++_0xba08ec);}(_0x8f04,0x1b4));var _0x48f0=function(_0x81249a,_0x23f625){_0x81249a=_0x81249a-0x0;var _0x2d7204=_0x8f04[_0x81249a];return _0x2d7204;};'use strict';var _=require('lodash');var util=require(_0x48f0('0x0'));var moment=require(_0x48f0('0x1'));var BPromise=require(_0x48f0('0x2'));var rs=require(_0x48f0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x48f0('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x48f0('0x5'));var config=require('../../config/environment');var jayson=require(_0x48f0('0x6'));var client=jayson[_0x48f0('0x7')][_0x48f0('0x8')]({'port':0x232c});config[_0x48f0('0x9')]=_['defaults'](config[_0x48f0('0x9')],{'host':_0x48f0('0xa'),'port':0x18eb});var socket=require(_0x48f0('0xb'))(new Redis(config[_0x48f0('0x9')]));require('./mailAccount.socket')[_0x48f0('0xc')](socket);function respondWithRpcPromise(_0x15b709,_0x9df7d4,_0x4e6bd4){return new BPromise(function(_0x3a4147,_0x265d85){return client['request'](_0x15b709,_0x4e6bd4)[_0x48f0('0xd')](function(_0x4daa72){logger['info'](_0x48f0('0xe'),_0x9df7d4,'request\x20sent');logger[_0x48f0('0xf')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x9df7d4,_0x48f0('0x10'),JSON[_0x48f0('0x11')](_0x4daa72));if(_0x4daa72['error']){if(_0x4daa72['error']['code']===0x1f4){logger[_0x48f0('0x12')](_0x48f0('0xe'),_0x9df7d4,_0x4daa72[_0x48f0('0x12')][_0x48f0('0x13')]);return _0x265d85(_0x4daa72[_0x48f0('0x12')][_0x48f0('0x13')]);}logger[_0x48f0('0x12')](_0x48f0('0xe'),_0x9df7d4,_0x4daa72[_0x48f0('0x12')][_0x48f0('0x13')]);return _0x3a4147(_0x4daa72[_0x48f0('0x12')][_0x48f0('0x13')]);}else{logger['info'](_0x48f0('0xe'),_0x9df7d4,_0x48f0('0x10'));_0x3a4147(_0x4daa72[_0x48f0('0x14')][_0x48f0('0x13')]);}})[_0x48f0('0x15')](function(_0x5d882a){logger[_0x48f0('0x12')]('MailAccount,\x20%s,\x20%s',_0x9df7d4,_0x5d882a);_0x265d85(_0x5d882a);});});}exports[_0x48f0('0x16')]=function(_0x16b161){var _0x6f43c5=this;return new Promise(function(_0x4d9b97,_0x5a1dab){return db[_0x48f0('0x17')][_0x48f0('0x18')]({'raw':_0x16b161['options']?_0x16b161[_0x48f0('0x19')][_0x48f0('0x1a')]===undefined?!![]:![]:!![],'where':_0x16b161[_0x48f0('0x19')]?_0x16b161[_0x48f0('0x19')][_0x48f0('0x1b')]||null:null,'attributes':_0x16b161[_0x48f0('0x19')]?_0x16b161[_0x48f0('0x19')][_0x48f0('0x1c')]||null:null,'limit':_0x16b161[_0x48f0('0x19')]?_0x16b161[_0x48f0('0x19')][_0x48f0('0x1d')]||null:null,'include':_0x16b161[_0x48f0('0x19')]?_0x16b161[_0x48f0('0x19')][_0x48f0('0x1e')]?_[_0x48f0('0x1f')](_0x16b161[_0x48f0('0x19')][_0x48f0('0x1e')],function(_0x3eb861){return{'model':db[_0x3eb861[_0x48f0('0x20')]],'as':_0x3eb861['as'],'attributes':_0x3eb861[_0x48f0('0x1c')],'include':_0x3eb861['include']?_[_0x48f0('0x1f')](_0x3eb861[_0x48f0('0x1e')],function(_0x1c99f6){return{'model':db[_0x1c99f6[_0x48f0('0x20')]],'as':_0x1c99f6['as'],'attributes':_0x1c99f6[_0x48f0('0x1c')],'include':_0x1c99f6[_0x48f0('0x1e')]?_[_0x48f0('0x1f')](_0x1c99f6[_0x48f0('0x1e')],function(_0x1849ef){return{'model':db[_0x1849ef[_0x48f0('0x20')]],'as':_0x1849ef['as'],'attributes':_0x1849ef[_0x48f0('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x48f0('0xd')](function(_0x3e84d3){logger[_0x48f0('0x21')]('GetMailAccount',_0x16b161);logger[_0x48f0('0xf')](_0x48f0('0x16'),_0x16b161,JSON[_0x48f0('0x11')](_0x3e84d3));_0x4d9b97(_0x3e84d3);})['catch'](function(_0x3f842a){logger[_0x48f0('0x12')](_0x48f0('0x16'),_0x3f842a[_0x48f0('0x13')],_0x16b161);_0x5a1dab(_0x6f43c5[_0x48f0('0x12')](0x1f4,_0x3f842a[_0x48f0('0x13')]));});});};exports[_0x48f0('0x22')]=function(_0x1c7e7c){var _0x1ec4f4=this;return new Promise(function(_0x27b64f,_0x4b7a90){return db[_0x48f0('0x17')]['find']({'raw':_0x1c7e7c['options']?_0x1c7e7c[_0x48f0('0x19')][_0x48f0('0x1a')]===undefined?!![]:![]:!![],'where':_0x1c7e7c[_0x48f0('0x19')]?_0x1c7e7c[_0x48f0('0x19')][_0x48f0('0x1b')]||null:null,'attributes':_0x1c7e7c['options']?_0x1c7e7c['options'][_0x48f0('0x1c')]||null:null,'include':_0x1c7e7c[_0x48f0('0x19')]?_0x1c7e7c[_0x48f0('0x19')][_0x48f0('0x1e')]?_['map'](_0x1c7e7c[_0x48f0('0x19')]['include'],function(_0x3690ee){return{'model':db[_0x3690ee[_0x48f0('0x20')]],'as':_0x3690ee['as'],'attributes':_0x3690ee['attributes'],'include':_0x3690ee[_0x48f0('0x1e')]?_[_0x48f0('0x1f')](_0x3690ee['include'],function(_0xb3375c){return{'model':db[_0xb3375c[_0x48f0('0x20')]],'as':_0xb3375c['as'],'attributes':_0xb3375c[_0x48f0('0x1c')],'include':_0xb3375c[_0x48f0('0x1e')]?_[_0x48f0('0x1f')](_0xb3375c[_0x48f0('0x1e')],function(_0x4b7610){return{'model':db[_0x4b7610[_0x48f0('0x20')]],'as':_0x4b7610['as'],'attributes':_0x4b7610[_0x48f0('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x48f0('0xd')](function(_0x51f3dc){logger[_0x48f0('0x21')]('ShowMailAccount',_0x1c7e7c);logger['debug'](_0x48f0('0x22'),_0x1c7e7c,JSON[_0x48f0('0x11')](_0x51f3dc));_0x27b64f(_0x51f3dc);})[_0x48f0('0x15')](function(_0x2fa3dc){logger[_0x48f0('0x12')](_0x48f0('0x22'),_0x2fa3dc[_0x48f0('0x13')],_0x1c7e7c);_0x4b7a90(_0x1ec4f4[_0x48f0('0x12')](0x1f4,_0x2fa3dc[_0x48f0('0x13')]));});});};exports[_0x48f0('0x23')]=function(_0x1cdfc3){var _0x47d5a9=this;return new Promise(function(_0x179dda,_0x4c716a){var _0x2e641f={'body':_0x1cdfc3[_0x48f0('0x24')],'channel':'mail'};var _0x12c035=_[_0x48f0('0x25')](_[_0x48f0('0x26')](db[_0x48f0('0x27')]['rawAttributes']),[_0x48f0('0x28'),_0x48f0('0x29'),'CompanyId',_0x48f0('0x2a')]);var _0x575203=![];if(_0x1cdfc3[_0x48f0('0x24')]['id']){delete _0x1cdfc3[_0x48f0('0x24')]['id'];}if(_[_0x48f0('0x2b')](_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x2c')])){return _0x4c716a(_0x47d5a9[_0x48f0('0x12')](0x1f4,_0x48f0('0x2d')));}if(_[_0x48f0('0x2b')](_0x1cdfc3[_0x48f0('0x24')]['body'])||_0x1cdfc3['body'][_0x48f0('0x24')]===''){return _0x4c716a(_0x47d5a9[_0x48f0('0x12')](0x1f4,_0x48f0('0x2e')));}if(_[_0x48f0('0x2b')](_0x1cdfc3[_0x48f0('0x24')]['mapKey'])){return _0x4c716a(_0x47d5a9[_0x48f0('0x12')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x12c035));}if(!_[_0x48f0('0x2f')](_0x12c035,_0x1cdfc3[_0x48f0('0x24')]['mapKey'])){return _0x4c716a(_0x47d5a9['error'](0x1f4,_0x48f0('0x30')+_0x12c035));}var _0x3492d0={};_0x3492d0[_0x1cdfc3['body'][_0x48f0('0x31')]]=_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x2c')];return db[_0x48f0('0x17')]['find']({'where':{'id':_0x1cdfc3[_0x48f0('0x32')]['id']},'include':[{'model':db['CmList'],'as':_0x48f0('0x33'),'include':[{'model':db[_0x48f0('0x27')],'as':'Contacts','where':_0x3492d0,'limit':0x1,'order':[[_0x48f0('0x29'),_0x48f0('0x34')]]}]},{'model':db['MailApplication'],'as':_0x48f0('0x35')},{'model':db['MailServerOut'],'as':_0x48f0('0x36')}]})[_0x48f0('0xd')](function(_0x238cbf){if(_0x238cbf&&_0x238cbf[_0x48f0('0x33')]){var _0x3652f2=_0x238cbf['get']({'plain':!![]});_0x2e641f[_0x48f0('0x32')]=_[_0x48f0('0x37')](_0x3652f2,[_0x48f0('0x35'),_0x48f0('0x33')]);_0x2e641f['applications']=_0x3652f2[_0x48f0('0x35')];_0x2e641f['list']=_0x3652f2[_0x48f0('0x33')];_0x2e641f[_0x48f0('0x38')]=_['orderBy'](_0x2e641f[_0x48f0('0x38')],[_0x48f0('0x39')],[_0x48f0('0x3a')]);if(_0x2e641f[_0x48f0('0x32')]&&_0x2e641f['account'][_0x48f0('0x3b')]){_0x2e641f[_0x48f0('0x38')]['push']({'id':0x0,'priority':_0x2e641f[_0x48f0('0x38')][_0x48f0('0x3c')]+0x1,'app':_0x48f0('0x3d'),'appdata':_0x48f0('0x3b'),'interval':'*,*,*,*'});}if(_0x2e641f[_0x48f0('0x32')][_0x48f0('0x35')]){delete _0x2e641f[_0x48f0('0x32')][_0x48f0('0x35')];}if(_0x2e641f[_0x48f0('0x32')][_0x48f0('0x33')]){delete _0x2e641f[_0x48f0('0x32')][_0x48f0('0x33')];}if(_0x3652f2[_0x48f0('0x33')]['Contacts'][_0x48f0('0x3c')]){return _0x3652f2['List']['Contacts'][0x0];}var _0x172a03=_['defaults'](_0x1cdfc3[_0x48f0('0x24')],{'firstName':_0x1cdfc3['body'][_0x48f0('0x2c')],'ListId':_0x3652f2[_0x48f0('0x2a')]});_0x172a03[_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x31')]]=_0x1cdfc3[_0x48f0('0x24')]['from'];return db['CmContact'][_0x48f0('0x3e')](_0x172a03);}else{throw new Error('List\x20not\x20found');}})[_0x48f0('0xd')](function(_0x52e86b){_0x2e641f[_0x48f0('0x3f')]=_0x52e86b;if(_0x52e86b){if(!_0x1cdfc3['body'][_0x48f0('0x13')][_0x48f0('0x40')]){_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x40')]=rs[_0x48f0('0x41')]()+'\x20'+_0x1cdfc3['body'][_0x48f0('0x13')][_0x48f0('0x2c')];}var _0xda1136={'ContactId':_0x52e86b['id'],'MailAccountId':_0x1cdfc3['account']['id'],'inReplyTo':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x40')],'to':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x2c')],'cc':_0x1cdfc3['body'][_0x48f0('0x13')]['cc'],'subject':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x42')],'attach':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x43')],'lastMsgAt':moment()['format'](_0x48f0('0x44')),'lastMsgDirection':'in'};return db[_0x48f0('0x45')][_0x48f0('0x46')]({'where':{'closed':![],'MailAccountId':_0x1cdfc3['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x48f0('0x47'),'attributes':[_0x48f0('0x40')],'where':{'messageId':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x48')]}}]})['then'](function(_0x3c5e24){if(_0x3c5e24){return[_0x3c5e24,![]];}return db[_0x48f0('0x45')][_0x48f0('0x3e')](_0xda1136)[_0x48f0('0xd')](function(_0x2af8a9){return[_0x2af8a9,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x48f0('0x49')](function(_0x3e82af,_0x4e8900){if(_0x3e82af){_0x575203=_0x4e8900;if(!_0x4e8900){return _0x3e82af[_0x48f0('0x4a')]({'inReplyTo':_0x1cdfc3['body'][_0x48f0('0x13')][_0x48f0('0x40')],'to':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x2c')],'cc':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')]['cc'],'subject':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x42')],'attach':_0x3e82af[_0x48f0('0x43')]?_0x3e82af[_0x48f0('0x43')]:_0x1cdfc3[_0x48f0('0x24')]['message'][_0x48f0('0x43')],'substatus':null,'substatusAt':moment()[_0x48f0('0x4b')](_0x48f0('0x44')),'lastMsgAt':moment()[_0x48f0('0x4b')](_0x48f0('0x44')),'lastMsgDirection':'in'});}else{return _0x3e82af;}}})[_0x48f0('0xd')](function(_0x580fe8){_0x2e641f['interaction']=_0x580fe8[_0x48f0('0x4c')]({'plain':!![]});_0x2e641f[_0x48f0('0x4d')]['created']=_0x575203;return db['MailMessage']['create']({'body':_0x1cdfc3[_0x48f0('0x24')]['body'],'MailAccountId':_0x1cdfc3[_0x48f0('0x32')]['id'],'MailInteractionId':_0x580fe8['id'],'direction':'in','ContactId':_0x2e641f[_0x48f0('0x3f')]['id'],'messageId':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x40')],'from':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x2c')],'to':_0x1cdfc3['body'][_0x48f0('0x13')]['to'],'cc':_0x1cdfc3['body'][_0x48f0('0x13')]['cc'],'subject':_0x1cdfc3[_0x48f0('0x24')]['message'][_0x48f0('0x42')],'attach':_0x1cdfc3['body'][_0x48f0('0x13')][_0x48f0('0x43')],'Attachments':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x4e')],'originTo':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x4f')],'originCc':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')]['originCc'],'bcc':_0x1cdfc3[_0x48f0('0x24')][_0x48f0('0x13')][_0x48f0('0x50')],'ChatWebsiteId':_0x1cdfc3['body'][_0x48f0('0x13')]['ChatWebsiteId']||null,'originChannel':_0x1cdfc3[_0x48f0('0x24')]['message'][_0x48f0('0x51')]||'Email','ChatOfflineMessageId':_0x1cdfc3[_0x48f0('0x24')]['message'][_0x48f0('0x52')]||null},{'include':[{'model':db['Attachment'],'as':_0x48f0('0x53')}]});})[_0x48f0('0xd')](function(_0x12d700){_0x2e641f['message']=_0x12d700;if(_0x2e641f[_0x48f0('0x4d')][_0x48f0('0x54')]){return db[_0x48f0('0x55')][_0x48f0('0x46')]({'attributes':['id','name'],'where':{'id':_0x2e641f[_0x48f0('0x4d')][_0x48f0('0x54')]}})['then'](function(_0x8805bc){if(_0x8805bc){_0x2e641f[_0x48f0('0x38')]['unshift']({'id':0x0,'priority':0x0,'app':_0x48f0('0x56'),'appdata':_0x8805bc[_0x48f0('0x57')]+','+(_0x2e641f['account'][_0x48f0('0x58')]||0xa),'interval':_0x48f0('0x59')});}return respondWithRpcPromise(_0x48f0('0x5a'),_0x48f0('0x5b'),_0x2e641f);});}return respondWithRpcPromise(_0x48f0('0x5a'),_0x48f0('0x5b'),_0x2e641f);})[_0x48f0('0xd')](function(_0x2b3766){_0x179dda(_0x2b3766);})[_0x48f0('0x15')](function(_0x2ed22a){_0x4c716a(_0x47d5a9[_0x48f0('0x12')](0x1f4,_0x2ed22a[_0x48f0('0x13')]));});});};
\ No newline at end of file
index abb6eb2..36c624f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1f5=['length','mailAccount:','./mailAccount.events','remove','removeListener','register'];(function(_0x5e2ee8,_0x4323f9){var _0x115a9f=function(_0x272e61){while(--_0x272e61){_0x5e2ee8['push'](_0x5e2ee8['shift']());}};_0x115a9f(++_0x4323f9);}(_0xa1f5,0xce));var _0x5a1f=function(_0x66d6c0,_0x11b01b){_0x66d6c0=_0x66d6c0-0x0;var _0x28b1e0=_0xa1f5[_0x66d6c0];return _0x28b1e0;};'use strict';var MailAccountEvents=require(_0x5a1f('0x0'));var events=['save',_0x5a1f('0x1'),'update'];function createListener(_0x5702e1,_0x190028){return function(_0x2ac530){_0x190028['emit'](_0x5702e1,_0x2ac530);};}function removeListener(_0x4f254b,_0x13bc24){return function(){MailAccountEvents[_0x5a1f('0x2')](_0x4f254b,_0x13bc24);};}exports[_0x5a1f('0x3')]=function(_0x52bf92){for(var _0x15705b=0x0,_0x16c7bb=events[_0x5a1f('0x4')];_0x15705b<_0x16c7bb;_0x15705b++){var _0x326e66=events[_0x15705b];var _0x288056=createListener(_0x5a1f('0x5')+_0x326e66,_0x52bf92);MailAccountEvents['on'](_0x326e66,_0x288056);}};
\ No newline at end of file
+var _0xe195=['update','removeListener','register','mailAccount:','remove'];(function(_0xdd827a,_0x482ad2){var _0x2f46f1=function(_0x221046){while(--_0x221046){_0xdd827a['push'](_0xdd827a['shift']());}};_0x2f46f1(++_0x482ad2);}(_0xe195,0x1c6));var _0x5e19=function(_0x2ed1b9,_0x4b1147){_0x2ed1b9=_0x2ed1b9-0x0;var _0x233e73=_0xe195[_0x2ed1b9];return _0x233e73;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save',_0x5e19('0x0'),_0x5e19('0x1')];function createListener(_0xb7869f,_0x30eeb0){return function(_0xe698e4){_0x30eeb0['emit'](_0xb7869f,_0xe698e4);};}function removeListener(_0x2ddbb8,_0x1d59b4){return function(){MailAccountEvents[_0x5e19('0x2')](_0x2ddbb8,_0x1d59b4);};}exports[_0x5e19('0x3')]=function(_0x272cb7){for(var _0x4a239f=0x0,_0x2ca278=events['length'];_0x4a239f<_0x2ca278;_0x4a239f++){var _0x1e40c4=events[_0x4a239f];var _0x21e440=createListener(_0x5e19('0x4')+_0x1e40c4,_0x272cb7);MailAccountEvents['on'](_0x1e40c4,_0x21e440);}};
\ No newline at end of file
index adb5b86..60c4275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9e1=['express','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','update','delete','destroy','util','path','connect-timeout'];(function(_0x511007,_0x130c58){var _0x1d2364=function(_0x2cd548){while(--_0x2cd548){_0x511007['push'](_0x511007['shift']());}};_0x1d2364(++_0x130c58);}(_0xf9e1,0x1de));var _0x1f9e=function(_0x27d51d,_0x56fbbd){_0x27d51d=_0x27d51d-0x0;var _0x3ba131=_0xf9e1[_0x27d51d];return _0x3ba131;};'use strict';var multer=require('multer');var util=require(_0x1f9e('0x0'));var path=require(_0x1f9e('0x1'));var timeout=require(_0x1f9e('0x2'));var express=require(_0x1f9e('0x3'));var router=express['Router']();var fs_extra=require(_0x1f9e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1f9e('0x5'));var config=require(_0x1f9e('0x6'));var controller=require('./mailApplication.controller');router[_0x1f9e('0x7')](_0x1f9e('0x8'),auth[_0x1f9e('0x9')](),controller['show']);router['put'](_0x1f9e('0x8'),auth['isAuthenticated'](),controller[_0x1f9e('0xa')]);router[_0x1f9e('0xb')]('/:id',auth[_0x1f9e('0x9')](),controller[_0x1f9e('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x4b0e=['./mailApplication.controller','get','/:id','show','put','isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/interaction/service','../../config/environment'];(function(_0xeda7d1,_0x22b72a){var _0x27ba2d=function(_0x3f2226){while(--_0x3f2226){_0xeda7d1['push'](_0xeda7d1['shift']());}};_0x27ba2d(++_0x22b72a);}(_0x4b0e,0xda));var _0xe4b0=function(_0x26e3f0,_0x257066){_0x26e3f0=_0x26e3f0-0x0;var _0x5ae776=_0x4b0e[_0x26e3f0];return _0x5ae776;};'use strict';var multer=require(_0xe4b0('0x0'));var util=require(_0xe4b0('0x1'));var path=require('path');var timeout=require(_0xe4b0('0x2'));var express=require('express');var router=express[_0xe4b0('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe4b0('0x4'));var config=require(_0xe4b0('0x5'));var controller=require(_0xe4b0('0x6'));router[_0xe4b0('0x7')](_0xe4b0('0x8'),auth['isAuthenticated'](),controller[_0xe4b0('0x9')]);router[_0xe4b0('0xa')]('/:id',auth[_0xe4b0('0xb')](),controller[_0xe4b0('0xc')]);router[_0xe4b0('0xd')]('/:id',auth[_0xe4b0('0xb')](),controller[_0xe4b0('0xe')]);module[_0xe4b0('0xf')]=router;
\ No newline at end of file
index d7aec42..d9652b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x914f=['TEXT','*,*,*,*','exports','INTEGER','STRING','noop'];(function(_0x22c545,_0x2a9923){var _0x3ebc1f=function(_0x512889){while(--_0x512889){_0x22c545['push'](_0x22c545['shift']());}};_0x3ebc1f(++_0x2a9923);}(_0x914f,0x158));var _0xf914=function(_0x3b73c8,_0x222b86){_0x3b73c8=_0x3b73c8-0x0;var _0x1c927c=_0x914f[_0x3b73c8];return _0x1c927c;};'use strict';var Sequelize=require('sequelize');module[_0xf914('0x0')]={'priority':{'type':Sequelize[_0xf914('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xf914('0x2')],'allowNull':![],'defaultValue':_0xf914('0x3')},'appdata':{'type':Sequelize[_0xf914('0x4')]()},'description':{'type':Sequelize[_0xf914('0x2')]},'interval':{'type':Sequelize[_0xf914('0x2')],'defaultValue':_0xf914('0x5')}};
\ No newline at end of file
+var _0xbe42=['sequelize','exports','INTEGER','STRING','TEXT'];(function(_0x58397d,_0x48759a){var _0x1e6705=function(_0x46c853){while(--_0x46c853){_0x58397d['push'](_0x58397d['shift']());}};_0x1e6705(++_0x48759a);}(_0xbe42,0x1ae));var _0x2be4=function(_0xed4881,_0x45771c){_0xed4881=_0xed4881-0x0;var _0x7fcbd5=_0xbe42[_0xed4881];return _0x7fcbd5;};'use strict';var Sequelize=require(_0x2be4('0x0'));module[_0x2be4('0x1')]={'priority':{'type':Sequelize[_0x2be4('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x2be4('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x2be4('0x4')]()},'description':{'type':Sequelize[_0x2be4('0x3')]},'interval':{'type':Sequelize[_0x2be4('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 3b066ee..0275120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0xb0975b,_0x93b0d6){var _0x320d30=function(_0x396b12){while(--_0x396b12){_0xb0975b['push'](_0xb0975b['shift']());}};_0x320d30(++_0x93b0d6);}(_0xe706,0xa3));var _0x6e70=function(_0x4e7abc,_0x2aeca1){_0x4e7abc=_0x4e7abc-0x0;var _0x428796=_0xe706[_0x4e7abc];return _0x428796;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
+var _0xcb91=['send','show','params','keys','rawAttributes','query','intersection','attributes','fields','length','model','includeAll','include','merge','options','MailApplication','find','catch','body','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','error','stack','name'];(function(_0xf2f5cb,_0x15077e){var _0x4da5a1=function(_0x4d415f){while(--_0x4d415f){_0xf2f5cb['push'](_0xf2f5cb['shift']());}};_0x4da5a1(++_0x15077e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x263f4c,_0x438626){_0x263f4c=_0x263f4c-0x0;var _0x3a78d3=_0xcb91[_0x263f4c];return _0x3a78d3;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1cb9('0x0'));var jsonpatch=require(_0x1cb9('0x1'));var rp=require(_0x1cb9('0x2'));var moment=require(_0x1cb9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1cb9('0x4'));var util=require(_0x1cb9('0x5'));var path=require('path');var sox=require(_0x1cb9('0x6'));var csv=require(_0x1cb9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1cb9('0x8'));var _=require(_0x1cb9('0x9'));var squel=require('squel');var crypto=require(_0x1cb9('0xa'));var jsforce=require(_0x1cb9('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x1cb9('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1cb9('0xc'));var authService=require(_0x1cb9('0xd'));var qs=require(_0x1cb9('0xe'));var as=require(_0x1cb9('0xf'));var hardwareService=require(_0x1cb9('0x10'));var logger=require('../../config/logger')(_0x1cb9('0x11'));var utils=require(_0x1cb9('0x12'));var config=require(_0x1cb9('0x13'));var licenseUtil=require(_0x1cb9('0x14'));var db=require(_0x1cb9('0x15'))['db'];function respondWithStatusCode(_0x5445e1,_0x5e3c19){_0x5e3c19=_0x5e3c19||0xcc;return function(_0x59dec3){if(_0x59dec3){return _0x5445e1[_0x1cb9('0x16')](_0x5e3c19);}return _0x5445e1[_0x1cb9('0x17')](_0x5e3c19)[_0x1cb9('0x18')]();};}function respondWithResult(_0x1c714f,_0x56884d){_0x56884d=_0x56884d||0xc8;return function(_0x397727){if(_0x397727){return _0x1c714f[_0x1cb9('0x17')](_0x56884d)[_0x1cb9('0x19')](_0x397727);}};}function respondWithFilteredResult(_0x8dfa55,_0x3e2d11){return function(_0x5806d8){if(_0x5806d8){var _0x5572cb=typeof _0x3e2d11[_0x1cb9('0x1a')]===_0x1cb9('0x1b')&&typeof _0x3e2d11[_0x1cb9('0x1c')]===_0x1cb9('0x1b');var _0x3e21e0=_0x5806d8[_0x1cb9('0x1d')];var _0x23d3a9=_0x5572cb?0x0:_0x3e2d11['offset'];var _0x479d43=_0x5572cb?_0x5806d8[_0x1cb9('0x1d')]:_0x3e2d11[_0x1cb9('0x1a')]+_0x3e2d11[_0x1cb9('0x1c')];var _0x31481a;if(_0x479d43>=_0x3e21e0){_0x479d43=_0x3e21e0;_0x31481a=0xc8;}else{_0x31481a=0xce;}_0x8dfa55[_0x1cb9('0x17')](_0x31481a);return _0x8dfa55[_0x1cb9('0x1e')](_0x1cb9('0x1f'),_0x23d3a9+'-'+_0x479d43+'/'+_0x3e21e0)['json'](_0x5806d8);}return null;};}function patchUpdates(_0x559bcc){return function(_0x1a5a72){try{jsonpatch['apply'](_0x1a5a72,_0x559bcc,!![]);}catch(_0x4750b1){return BPromise[_0x1cb9('0x20')](_0x4750b1);}return _0x1a5a72['save']();};}function saveUpdates(_0x599275,_0x2e3854){return function(_0x325637){if(_0x325637){return _0x325637[_0x1cb9('0x21')](_0x599275)[_0x1cb9('0x22')](function(_0x45b8d3){return _0x45b8d3;});}return null;};}function removeEntity(_0x27db16,_0x59ebea){return function(_0x55b232){if(_0x55b232){return _0x55b232[_0x1cb9('0x23')]()['then'](function(){_0x27db16[_0x1cb9('0x17')](0xcc)[_0x1cb9('0x18')]();});}};}function handleEntityNotFound(_0x69b4c8,_0x44d3c4){return function(_0x43a100){if(!_0x43a100){_0x69b4c8['sendStatus'](0x194);}return _0x43a100;};}function handleError(_0x195f16,_0x9df250){_0x9df250=_0x9df250||0x1f4;return function(_0x4c8d76){logger[_0x1cb9('0x24')](_0x4c8d76[_0x1cb9('0x25')]);if(_0x4c8d76[_0x1cb9('0x26')]){delete _0x4c8d76[_0x1cb9('0x26')];}_0x195f16[_0x1cb9('0x17')](_0x9df250)[_0x1cb9('0x27')](_0x4c8d76);};}exports[_0x1cb9('0x28')]=function(_0xb644b3,_0x41e5c2){var _0x9de64b={'raw':!![],'where':{'id':_0xb644b3[_0x1cb9('0x29')]['id']}},_0x48888d={};_0x48888d['model']=_[_0x1cb9('0x2a')](db['MailApplication'][_0x1cb9('0x2b')]);_0x48888d[_0x1cb9('0x2c')]=_[_0x1cb9('0x2a')](_0xb644b3[_0x1cb9('0x2c')]);_0x48888d['filters']=_[_0x1cb9('0x2d')](_0x48888d['model'],_0x48888d[_0x1cb9('0x2c')]);_0x9de64b[_0x1cb9('0x2e')]=_[_0x1cb9('0x2d')](_0x48888d['model'],qs[_0x1cb9('0x2f')](_0xb644b3['query'][_0x1cb9('0x2f')]));_0x9de64b['attributes']=_0x9de64b[_0x1cb9('0x2e')][_0x1cb9('0x30')]?_0x9de64b[_0x1cb9('0x2e')]:_0x48888d[_0x1cb9('0x31')];if(_0xb644b3['query'][_0x1cb9('0x32')]){_0x9de64b[_0x1cb9('0x33')]=[{'all':!![]}];}_0x9de64b=_[_0x1cb9('0x34')]({},_0x9de64b,_0xb644b3[_0x1cb9('0x35')]);return db[_0x1cb9('0x36')][_0x1cb9('0x37')](_0x9de64b)[_0x1cb9('0x22')](handleEntityNotFound(_0x41e5c2,null))[_0x1cb9('0x22')](respondWithResult(_0x41e5c2,null))[_0x1cb9('0x38')](handleError(_0x41e5c2,null));};exports[_0x1cb9('0x21')]=function(_0x294eec,_0x26b950){if(_0x294eec[_0x1cb9('0x39')]['id']){delete _0x294eec['body']['id'];}return db['MailApplication'][_0x1cb9('0x37')]({'where':{'id':_0x294eec[_0x1cb9('0x29')]['id']}})[_0x1cb9('0x22')](handleEntityNotFound(_0x26b950,null))[_0x1cb9('0x22')](saveUpdates(_0x294eec[_0x1cb9('0x39')],null))[_0x1cb9('0x22')](respondWithResult(_0x26b950,null))[_0x1cb9('0x38')](handleError(_0x26b950,null));};exports[_0x1cb9('0x23')]=function(_0x4d3e39,_0x2aa59b){return db[_0x1cb9('0x36')][_0x1cb9('0x37')]({'where':{'id':_0x4d3e39['params']['id']}})[_0x1cb9('0x22')](handleEntityNotFound(_0x2aa59b,null))['then'](removeEntity(_0x2aa59b,null))[_0x1cb9('0x38')](handleError(_0x2aa59b,null));};
\ No newline at end of file
index 129ea55..be7ea52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53b7=['path','rimraf','define','MailApplication','mail_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x90334d,_0x3ec517){var _0x42c8cf=function(_0x28520a){while(--_0x28520a){_0x90334d['push'](_0x90334d['shift']());}};_0x42c8cf(++_0x3ec517);}(_0x53b7,0x199));var _0x753b=function(_0x1c6195,_0x380a80){_0x1c6195=_0x1c6195-0x0;var _0x355381=_0x53b7[_0x1c6195];return _0x355381;};'use strict';var _=require(_0x753b('0x0'));var util=require(_0x753b('0x1'));var logger=require(_0x753b('0x2'))(_0x753b('0x3'));var moment=require(_0x753b('0x4'));var BPromise=require(_0x753b('0x5'));var rp=require(_0x753b('0x6'));var fs=require('fs');var path=require(_0x753b('0x7'));var rimraf=require(_0x753b('0x8'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module['exports']=function(_0x516387,_0x5bdb66){return _0x516387[_0x753b('0x9')](_0x753b('0xa'),attributes,{'tableName':_0x753b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x753b('0xc')});};
\ No newline at end of file
+var _0x8b75=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./mailApplication.attributes','exports','MailApplication','mail_applications','utf8mb4'];(function(_0x41aed2,_0x5359e1){var _0x1fdd42=function(_0x30f9b4){while(--_0x30f9b4){_0x41aed2['push'](_0x41aed2['shift']());}};_0x1fdd42(++_0x5359e1);}(_0x8b75,0x197));var _0x58b7=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x8b75[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x58b7('0x0'));var util=require(_0x58b7('0x1'));var logger=require(_0x58b7('0x2'))('api');var moment=require(_0x58b7('0x3'));var BPromise=require(_0x58b7('0x4'));var rp=require(_0x58b7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x58b7('0x6'));var config=require(_0x58b7('0x7'));var attributes=require(_0x58b7('0x8'));module[_0x58b7('0x9')]=function(_0xd06960,_0x1231d0){return _0xd06960['define'](_0x58b7('0xa'),attributes,{'tableName':_0x58b7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x58b7('0xc'),'collate':_0x58b7('0xd')});};
\ No newline at end of file
index 30b7b15..eb91eb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd90c=['limit','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailApplication','update','body','options','raw','where','attributes'];(function(_0x4179e2,_0xf2dbb){var _0x24cb50=function(_0x3b7899){while(--_0x3b7899){_0x4179e2['push'](_0x4179e2['shift']());}};_0x24cb50(++_0xf2dbb);}(_0xd90c,0x12b));var _0xcd90=function(_0x4ab6fc,_0x74d68a){_0x4ab6fc=_0x4ab6fc-0x0;var _0x187477=_0xd90c[_0x4ab6fc];return _0x187477;};'use strict';var _=require(_0xcd90('0x0'));var util=require(_0xcd90('0x1'));var moment=require(_0xcd90('0x2'));var BPromise=require(_0xcd90('0x3'));var rs=require(_0xcd90('0x4'));var fs=require('fs');var Redis=require(_0xcd90('0x5'));var db=require(_0xcd90('0x6'))['db'];var utils=require(_0xcd90('0x7'));var logger=require(_0xcd90('0x8'))(_0xcd90('0x9'));var config=require('../../config/environment');var jayson=require(_0xcd90('0xa'));var client=jayson[_0xcd90('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d5878,_0x2ca454,_0x594b32){return new BPromise(function(_0x3f6288,_0x2e8d12){return client[_0xcd90('0xc')](_0x2d5878,_0x594b32)[_0xcd90('0xd')](function(_0x477076){logger[_0xcd90('0xe')](_0xcd90('0xf'),_0x2ca454,_0xcd90('0x10'));logger['debug'](_0xcd90('0x11'),_0x2ca454,_0xcd90('0x10'),JSON[_0xcd90('0x12')](_0x477076));if(_0x477076[_0xcd90('0x13')]){if(_0x477076['error'][_0xcd90('0x14')]===0x1f4){logger[_0xcd90('0x13')](_0xcd90('0xf'),_0x2ca454,_0x477076[_0xcd90('0x13')][_0xcd90('0x15')]);return _0x2e8d12(_0x477076[_0xcd90('0x13')]['message']);}logger[_0xcd90('0x13')]('MailApplication,\x20%s,\x20%s',_0x2ca454,_0x477076[_0xcd90('0x13')][_0xcd90('0x15')]);return _0x3f6288(_0x477076[_0xcd90('0x13')][_0xcd90('0x15')]);}else{logger[_0xcd90('0xe')](_0xcd90('0xf'),_0x2ca454,'request\x20sent');_0x3f6288(_0x477076[_0xcd90('0x16')][_0xcd90('0x15')]);}})[_0xcd90('0x17')](function(_0x5dc679){logger[_0xcd90('0x13')](_0xcd90('0xf'),_0x2ca454,_0x5dc679);_0x2e8d12(_0x5dc679);});});}exports[_0xcd90('0x18')]=function(_0x4dc75f){var _0x1a7e81=this;return new Promise(function(_0x48e884,_0x53b2c0){return db['MailApplication'][_0xcd90('0x19')](_0x4dc75f[_0xcd90('0x1a')],{'raw':_0x4dc75f[_0xcd90('0x1b')]?_0x4dc75f[_0xcd90('0x1b')][_0xcd90('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4dc75f[_0xcd90('0x1b')]?_0x4dc75f[_0xcd90('0x1b')][_0xcd90('0x1d')]||null:null,'attributes':_0x4dc75f['options']?_0x4dc75f[_0xcd90('0x1b')][_0xcd90('0x1e')]||null:null,'limit':_0x4dc75f[_0xcd90('0x1b')]?_0x4dc75f[_0xcd90('0x1b')][_0xcd90('0x1f')]||null:null})[_0xcd90('0xd')](function(_0x252702){logger[_0xcd90('0xe')](_0xcd90('0x18'),_0x4dc75f);logger[_0xcd90('0x20')](_0xcd90('0x18'),_0x4dc75f,JSON[_0xcd90('0x12')](_0x252702));_0x48e884(_0x252702);})['catch'](function(_0x4847ff){logger['error'](_0xcd90('0x18'),_0x4847ff[_0xcd90('0x15')],_0x4dc75f);_0x53b2c0(_0x1a7e81[_0xcd90('0x13')](0x1f4,_0x4847ff['message']));});});};
\ No newline at end of file
+var _0xa003=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateMailApplication','update','body','options','where','attributes','limit','lodash','util'];(function(_0x401a04,_0x27cd04){var _0x469676=function(_0x39aea1){while(--_0x39aea1){_0x401a04['push'](_0x401a04['shift']());}};_0x469676(++_0x27cd04);}(_0xa003,0x1de));var _0x3a00=function(_0x4d7e67,_0xdbb224){_0x4d7e67=_0x4d7e67-0x0;var _0x284a01=_0xa003[_0x4d7e67];return _0x284a01;};'use strict';var _=require(_0x3a00('0x0'));var util=require(_0x3a00('0x1'));var moment=require(_0x3a00('0x2'));var BPromise=require('bluebird');var rs=require(_0x3a00('0x3'));var fs=require('fs');var Redis=require(_0x3a00('0x4'));var db=require(_0x3a00('0x5'))['db'];var utils=require(_0x3a00('0x6'));var logger=require(_0x3a00('0x7'))(_0x3a00('0x8'));var config=require(_0x3a00('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3a00('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xf04d5a,_0x5baec8,_0x2d9e82){return new BPromise(function(_0x37a527,_0x2ecd7e){return client[_0x3a00('0xb')](_0xf04d5a,_0x2d9e82)[_0x3a00('0xc')](function(_0x1bc2e4){logger[_0x3a00('0xd')](_0x3a00('0xe'),_0x5baec8,'request\x20sent');logger[_0x3a00('0xf')](_0x3a00('0x10'),_0x5baec8,_0x3a00('0x11'),JSON[_0x3a00('0x12')](_0x1bc2e4));if(_0x1bc2e4[_0x3a00('0x13')]){if(_0x1bc2e4[_0x3a00('0x13')]['code']===0x1f4){logger[_0x3a00('0x13')]('MailApplication,\x20%s,\x20%s',_0x5baec8,_0x1bc2e4['error'][_0x3a00('0x14')]);return _0x2ecd7e(_0x1bc2e4[_0x3a00('0x13')][_0x3a00('0x14')]);}logger[_0x3a00('0x13')](_0x3a00('0xe'),_0x5baec8,_0x1bc2e4[_0x3a00('0x13')][_0x3a00('0x14')]);return _0x37a527(_0x1bc2e4[_0x3a00('0x13')][_0x3a00('0x14')]);}else{logger['info'](_0x3a00('0xe'),_0x5baec8,_0x3a00('0x11'));_0x37a527(_0x1bc2e4[_0x3a00('0x15')][_0x3a00('0x14')]);}})[_0x3a00('0x16')](function(_0x2193d9){logger[_0x3a00('0x13')](_0x3a00('0xe'),_0x5baec8,_0x2193d9);_0x2ecd7e(_0x2193d9);});});}exports[_0x3a00('0x17')]=function(_0x12f4d5){var _0x55b04e=this;return new Promise(function(_0x3d1c2a,_0x40bd9e){return db['MailApplication'][_0x3a00('0x18')](_0x12f4d5[_0x3a00('0x19')],{'raw':_0x12f4d5[_0x3a00('0x1a')]?_0x12f4d5['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12f4d5['options']?_0x12f4d5[_0x3a00('0x1a')][_0x3a00('0x1b')]||null:null,'attributes':_0x12f4d5[_0x3a00('0x1a')]?_0x12f4d5[_0x3a00('0x1a')][_0x3a00('0x1c')]||null:null,'limit':_0x12f4d5['options']?_0x12f4d5[_0x3a00('0x1a')][_0x3a00('0x1d')]||null:null})[_0x3a00('0xc')](function(_0x123f78){logger[_0x3a00('0xd')](_0x3a00('0x17'),_0x12f4d5);logger[_0x3a00('0xf')]('UpdateMailApplication',_0x12f4d5,JSON[_0x3a00('0x12')](_0x123f78));_0x3d1c2a(_0x123f78);})[_0x3a00('0x16')](function(_0x3cfd27){logger[_0x3a00('0x13')](_0x3a00('0x17'),_0x3cfd27[_0x3a00('0x14')],_0x12f4d5);_0x40bd9e(_0x55b04e[_0x3a00('0x13')](0x1f4,_0x3cfd27[_0x3a00('0x14')]));});});};
\ No newline at end of file
index 9338ad1..bc3cc24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc3=['Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','index','/describe','describe','isAuthenticated','/:id/messages','/:id/download','download','post','addMessage','/:id/tags','mail','mailinteraction:addtags','addTags','put','/:id','tracked','mailinteraction:update','update','mailinteraction:destroy','destroy','delete','removeTags','express'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x4bc3,0x1bf));var _0x34bc=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0x4bc3[_0x2aa0e7];return _0x1472c0;};'use strict';var express=require(_0x34bc('0x0'));var router=express[_0x34bc('0x1')]();var auth=require(_0x34bc('0x2'));var interaction=require(_0x34bc('0x3'));var controller=require(_0x34bc('0x4'));router[_0x34bc('0x5')]('/',auth['isAuthenticated'](),controller[_0x34bc('0x6')]);router['get'](_0x34bc('0x7'),auth['isAuthenticated'](),controller[_0x34bc('0x8')]);router['get']('/:id',auth[_0x34bc('0x9')](),controller['show']);router[_0x34bc('0x5')](_0x34bc('0xa'),auth[_0x34bc('0x9')](),controller['getMessages']);router[_0x34bc('0x5')](_0x34bc('0xb'),auth[_0x34bc('0x9')](),controller[_0x34bc('0xc')]);router[_0x34bc('0xd')]('/',auth[_0x34bc('0x9')](),controller['create']);router['post'](_0x34bc('0xa'),auth['isAuthenticated'](),controller[_0x34bc('0xe')]);router['post'](_0x34bc('0xf'),auth[_0x34bc('0x9')](),interaction['tracked'](_0x34bc('0x10'),_0x34bc('0x11')),controller[_0x34bc('0x12')]);router[_0x34bc('0x13')](_0x34bc('0x14'),auth['isAuthenticated'](),interaction[_0x34bc('0x15')](_0x34bc('0x10'),_0x34bc('0x16')),controller[_0x34bc('0x17')]);router['delete'](_0x34bc('0x14'),auth['isAuthenticated'](),interaction['tracked']('mail',_0x34bc('0x18')),controller[_0x34bc('0x19')]);router[_0x34bc('0x1a')](_0x34bc('0xf'),auth['isAuthenticated'](),controller[_0x34bc('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x2065=['/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','mail','mailinteraction:addtags','addTags','put','tracked','mailinteraction:update','update','/:id','mailinteraction:destroy','destroy','delete','removeTags','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','/describe','show'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x2065,0xfc));var _0x5206=function(_0x22e191,_0xb7064e){_0x22e191=_0x22e191-0x0;var _0x2314f4=_0x2065[_0x22e191];return _0x2314f4;};'use strict';var express=require(_0x5206('0x0'));var router=express[_0x5206('0x1')]();var auth=require(_0x5206('0x2'));var interaction=require(_0x5206('0x3'));var controller=require(_0x5206('0x4'));router[_0x5206('0x5')]('/',auth[_0x5206('0x6')](),controller['index']);router[_0x5206('0x5')](_0x5206('0x7'),auth[_0x5206('0x6')](),controller['describe']);router[_0x5206('0x5')]('/:id',auth[_0x5206('0x6')](),controller[_0x5206('0x8')]);router[_0x5206('0x5')](_0x5206('0x9'),auth[_0x5206('0x6')](),controller[_0x5206('0xa')]);router[_0x5206('0x5')](_0x5206('0xb'),auth[_0x5206('0x6')](),controller[_0x5206('0xc')]);router['post']('/',auth[_0x5206('0x6')](),controller[_0x5206('0xd')]);router[_0x5206('0xe')](_0x5206('0x9'),auth[_0x5206('0x6')](),controller[_0x5206('0xf')]);router['post'](_0x5206('0x10'),auth[_0x5206('0x6')](),interaction['tracked'](_0x5206('0x11'),_0x5206('0x12')),controller[_0x5206('0x13')]);router[_0x5206('0x14')]('/:id',auth['isAuthenticated'](),interaction[_0x5206('0x15')](_0x5206('0x11'),_0x5206('0x16')),controller[_0x5206('0x17')]);router['delete'](_0x5206('0x18'),auth[_0x5206('0x6')](),interaction['tracked'](_0x5206('0x11'),_0x5206('0x19')),controller[_0x5206('0x1a')]);router[_0x5206('0x1b')](_0x5206('0x10'),auth[_0x5206('0x6')](),controller[_0x5206('0x1c')]);module['exports']=router;
\ No newline at end of file
index c817453..29de305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x181c=['STRING','ENUM','out','sequelize','iconv','exports','BOOLEAN','DATE'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x181c,0x14b));var _0xc181=function(_0x546aaf,_0x1ed138){_0x546aaf=_0x546aaf-0x0;var _0x1cbf6d=_0x181c[_0x546aaf];return _0x1cbf6d;};'use strict';var Sequelize=require(_0xc181('0x0'));var iconv=require(_0xc181('0x1'));module[_0xc181('0x2')]={'closed':{'type':Sequelize[_0xc181('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc181('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xc181('0x5')]},'thirdDisposition':{'type':Sequelize[_0xc181('0x5')]},'note':{'type':Sequelize[_0xc181('0x5')]},'inReplyTo':{'type':Sequelize[_0xc181('0x5')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0xc181('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xc181('0x4')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize[_0xc181('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xc181('0x6')]('in',_0xc181('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc181('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xc181('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x063a=['sequelize','BOOLEAN','STRING','TEXT','long','DATE','ENUM','out'];(function(_0x357a01,_0x1e57d0){var _0x252c1f=function(_0x53c71f){while(--_0x53c71f){_0x357a01['push'](_0x357a01['shift']());}};_0x252c1f(++_0x1e57d0);}(_0x063a,0x1e0));var _0xa063=function(_0x47aa4c,_0x44b3e2){_0x47aa4c=_0x47aa4c-0x0;var _0x360a87=_0x063a[_0x47aa4c];return _0x360a87;};'use strict';var Sequelize=require(_0xa063('0x0'));var iconv=require('iconv');module['exports']={'closed':{'type':Sequelize[_0xa063('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xa063('0x2')]},'secondDisposition':{'type':Sequelize[_0xa063('0x2')]},'thirdDisposition':{'type':Sequelize[_0xa063('0x2')]},'note':{'type':Sequelize[_0xa063('0x2')]},'inReplyTo':{'type':Sequelize[_0xa063('0x2')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xa063('0x3')](_0xa063('0x4'))},'subject':{'type':Sequelize[_0xa063('0x3')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xa063('0x5')]},'substatus':{'type':Sequelize[_0xa063('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0xa063('0x5')]},'firstMsgDirection':{'type':Sequelize[_0xa063('0x6')]('in',_0xa063('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa063('0x5')]},'lastMsgDirection':{'type':Sequelize[_0xa063('0x6')]('in',_0xa063('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xa063('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 92a3bce..073f190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74af=['having','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','text','keys','some','compact','MailAccountId','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','null','\x20=\x20?','read','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','group','i.id','Sequelize','QueryTypes','clone','order','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','isEmpty','i.MailAccountId\x20IS\x20NULL','sequelize','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.thirdDisposition','i.substatus','i.ContactId','i.MailAccountId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','MailInteractionId','enableEmailPreview','all','rows','show','params','includeAll','merge','options','create','body','describe','addMessage','ids','getMessages','findOne','nolimit','YYYY-MM-DD\x20HH:mm:ss','include','inlineCss','addTags','setTags','omit','spread','findAll','emit','mailInteractionTags:save','removeTags','download','unix','server','join','root','files','format','transcript-%d-%s.zip','attachments','push','Attachment','Attachments','Messages','bcc','subject','get','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','Bcc','basename','existsSync','readFileSync','build','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','lodash','squel','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','set','update','then','destroy','error','name','send','Users','map','fullname','TagIds','Tags','split','forEach','MailMessage','out','-id','plainBody','trimStart','catch','waiting','talking','answered','unmanaged','total','closed','UserId','index','MailInteraction','type','key','query','filters','intersection','model','fields','attributes','length','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200'];(function(_0x5dd60c,_0x194066){var _0x32891c=function(_0x329d5c){while(--_0x329d5c){_0x5dd60c['push'](_0x5dd60c['shift']());}};_0x32891c(++_0x194066);}(_0x74af,0x178));var _0xf74a=function(_0x10ea98,_0x3a87b1){_0x10ea98=_0x10ea98-0x0;var _0x58ce0b=_0x74af[_0x10ea98];return _0x58ce0b;};'use strict';var emlformat=require(_0xf74a('0x0'));var rimraf=require(_0xf74a('0x1'));var zipdir=require(_0xf74a('0x2'));var moment=require(_0xf74a('0x3'));var BPromise=require(_0xf74a('0x4'));var util=require(_0xf74a('0x5'));var path=require('path');var fs=require('fs');var _=require(_0xf74a('0x6'));var squel=require(_0xf74a('0x7'));var juice=require(_0xf74a('0x8'));var Redis=require(_0xf74a('0x9'));var qs=require(_0xf74a('0xa'));var as=require(_0xf74a('0xb'));var logger=require(_0xf74a('0xc'))('api');var config=require(_0xf74a('0xd'));var db=require(_0xf74a('0xe'))['db'];var htmlEntities=require(_0xf74a('0xf'));config[_0xf74a('0x10')]=_[_0xf74a('0x11')](config[_0xf74a('0x10')],{'host':_0xf74a('0x12'),'port':0x18eb});var socket=require(_0xf74a('0x13'))(new Redis(config[_0xf74a('0x10')]));require(_0xf74a('0x14'))[_0xf74a('0x15')](socket);function respondWithStatusCode(_0xd79080,_0x6e453d){_0x6e453d=_0x6e453d||0xcc;return function(_0x2c1f21){if(_0x2c1f21){return _0xd79080[_0xf74a('0x16')](_0x6e453d);}return _0xd79080['status'](_0x6e453d)[_0xf74a('0x17')]();};}function respondWithResult(_0x5efa82,_0x16533b){_0x16533b=_0x16533b||0xc8;return function(_0x302984){if(_0x302984){return _0x5efa82[_0xf74a('0x18')](_0x16533b)[_0xf74a('0x19')](_0x302984);}};}function respondWithFilteredResult(_0x275b6d,_0x255be2){return function(_0x51255a){if(_0x51255a){var _0xd34f86=typeof _0x255be2['offset']===_0xf74a('0x1a')&&typeof _0x255be2[_0xf74a('0x1b')]==='undefined';var _0xf3cb24=_0x51255a[_0xf74a('0x1c')];var _0x37eb21=_0xd34f86?0x0:_0x255be2[_0xf74a('0x1d')];var _0x5820b2=_0xd34f86?_0x51255a[_0xf74a('0x1c')]:_0x255be2['offset']+_0x255be2['limit'];var _0x42c0f9;if(_0x5820b2>=_0xf3cb24){_0x5820b2=_0xf3cb24;_0x42c0f9=0xc8;}else{_0x42c0f9=0xce;}_0x275b6d[_0xf74a('0x18')](_0x42c0f9);return _0x275b6d[_0xf74a('0x1e')]('Content-Range',_0x37eb21+'-'+_0x5820b2+'/'+_0xf3cb24)['json'](_0x51255a);}return null;};}function saveUpdates(_0x56f11a){return function(_0x26c0ee){if(_0x26c0ee){return _0x26c0ee[_0xf74a('0x1f')](_0x56f11a)[_0xf74a('0x20')](function(_0x21ee4b){return _0x21ee4b;});}return null;};}function removeEntity(_0x47be71){return function(_0x5759a4){if(_0x5759a4){return _0x5759a4[_0xf74a('0x21')]()['then'](function(){_0x47be71[_0xf74a('0x18')](0xcc)[_0xf74a('0x17')]();});}};}function handleEntityNotFound(_0x41dcc3){return function(_0x34cd80){if(!_0x34cd80){_0x41dcc3[_0xf74a('0x16')](0x194);}return _0x34cd80;};}function handleError(_0x402b2a,_0x32c37c){_0x32c37c=_0x32c37c||0x1f4;return function(_0x4bccbe){logger[_0xf74a('0x22')](_0x4bccbe['stack']);if(_0x4bccbe[_0xf74a('0x23')]){delete _0x4bccbe[_0xf74a('0x23')];}_0x402b2a[_0xf74a('0x18')](_0x32c37c)[_0xf74a('0x24')](_0x4bccbe);};}function getInteractionUsers(_0x201632,_0x45d3ea){return new BPromise(function(_0x4a852e,_0x219cfd){try{if(_0x45d3ea[_0x201632['id']]){_0x201632[_0xf74a('0x25')]=_[_0xf74a('0x26')](_0x45d3ea[_0x201632['id']],function(_0x5416f7){return{'id':_0x5416f7['id'],'fullname':_0x5416f7[_0xf74a('0x27')]};});}}catch(_0x1fc9d3){_0x219cfd(_0x1fc9d3);}_0x4a852e(_0x201632);});}function getInteractionTags(_0x2d1140,_0x470f64){return new BPromise(function(_0x3a9a87,_0x5cc49d){try{if(_0x2d1140[_0xf74a('0x28')]){_0x2d1140[_0xf74a('0x29')]=[];_0x2d1140['TagIds'][_0xf74a('0x2a')](',')[_0xf74a('0x2b')](function(_0x58f934){_0x2d1140[_0xf74a('0x29')]['push'](_0x470f64[_0x58f934]);});}delete _0x2d1140[_0xf74a('0x28')];}catch(_0x515b42){_0x5cc49d(_0x515b42);}_0x3a9a87(_0x2d1140);});}function getLastMessageText(_0x3b9f0e){return new BPromise(function(_0x21bf78,_0x31dca9){return db[_0xf74a('0x2c')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x3b9f0e['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xf74a('0x2d')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xf74a('0x2e'),'raw':!![]})['then'](function(_0x41509b){if(_0x41509b&&_0x41509b[_0xf74a('0x2f')]){_0x3b9f0e['lastMsgText']=_[_0xf74a('0x30')](_0x41509b[_0xf74a('0x2f')]);}_0x21bf78(_0x3b9f0e);})[_0xf74a('0x31')](function(_0x46e938){_0x31dca9(_0x46e938);});});}function updateMailInteraction(_0x3242af,_0x1115b5,_0x16f6c0,_0x1172ae){return new BPromise(function(_0x2215ae,_0x548a91){return getInteractionUsers(_0x3242af,_0x16f6c0)[_0xf74a('0x20')](function(_0x2f61fc){return getInteractionTags(_0x2f61fc,_0x1115b5);})[_0xf74a('0x20')](function(_0x95d7d0){return getStateInteraction(_0x95d7d0);})[_0xf74a('0x20')](function(_0x18f41d){if(_0x1172ae){_0x2215ae(getLastMessageText(_0x18f41d));}else{_0x2215ae(_0x18f41d);}})[_0xf74a('0x31')](function(_0x2aa7bf){_0x548a91(_0x2aa7bf);});});}function getStateInteraction(_0x1dabdf){return new BPromise(function(_0x2fe751){_0x1dabdf[_0xf74a('0x32')]=0x0;_0x1dabdf[_0xf74a('0x33')]=0x0;_0x1dabdf[_0xf74a('0x34')]=0x0;_0x1dabdf[_0xf74a('0x35')]=0x0;_0x1dabdf[_0xf74a('0x36')]=0x0;if(!_0x1dabdf[_0xf74a('0x37')]&&!_0x1dabdf[_0xf74a('0x38')]){_0x1dabdf[_0xf74a('0x32')]+=0x1;}if(!_0x1dabdf['closed']&&_0x1dabdf['UserId']){_0x1dabdf['talking']+=0x1;if(_0x1dabdf[_0xf74a('0x32')]){_0x1dabdf[_0xf74a('0x32')]-=0x1;}}if(_0x1dabdf[_0xf74a('0x37')]&&_0x1dabdf[_0xf74a('0x38')]){_0x1dabdf[_0xf74a('0x34')]+=0x1;if(_0x1dabdf[_0xf74a('0x33')]){_0x1dabdf['talking']-=0x1;}}if(_0x1dabdf[_0xf74a('0x37')]&&!_0x1dabdf['UserId']){_0x1dabdf[_0xf74a('0x35')]+=0x1;if(_0x1dabdf[_0xf74a('0x32')]){_0x1dabdf[_0xf74a('0x32')]-=0x1;}}_0x1dabdf[_0xf74a('0x36')]+=0x1;_0x2fe751(_0x1dabdf);});}exports[_0xf74a('0x39')]=function(_0x3bdcf1,_0x4da8f7){var _0x3e51e5={},_0x22d604={},_0x2775a6={'count':0x0,'rows':[]};var _0x491438=_[_0xf74a('0x26')](db[_0xf74a('0x3a')]['rawAttributes'],function(_0x3cc273){return{'name':_0x3cc273['fieldName'],'type':_0x3cc273[_0xf74a('0x3b')][_0xf74a('0x3c')]};});_0x22d604['model']=_[_0xf74a('0x26')](_0x491438,_0xf74a('0x23'));_0x22d604['query']=_['keys'](_0x3bdcf1[_0xf74a('0x3d')]);_0x22d604[_0xf74a('0x3e')]=_[_0xf74a('0x3f')](_0x22d604[_0xf74a('0x40')],_0x22d604[_0xf74a('0x3d')]);_0x3e51e5['attributes']=_[_0xf74a('0x3f')](_0x22d604[_0xf74a('0x40')],qs[_0xf74a('0x41')](_0x3bdcf1[_0xf74a('0x3d')]['fields']));_0x3e51e5[_0xf74a('0x42')]=_0x3e51e5[_0xf74a('0x42')][_0xf74a('0x43')]?_0x3e51e5[_0xf74a('0x42')]:_0x22d604['model'];if(!_0x3bdcf1[_0xf74a('0x3d')]['hasOwnProperty']('nolimit')){_0x3e51e5[_0xf74a('0x1b')]=qs[_0xf74a('0x1b')](_0x3bdcf1['query']['limit']);_0x3e51e5[_0xf74a('0x1d')]=qs[_0xf74a('0x1d')](_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x1d')]);}_0x3e51e5['order']=qs[_0xf74a('0x44')](_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x44')]);_0x3e51e5[_0xf74a('0x45')]=qs[_0xf74a('0x3e')](_[_0xf74a('0x46')](_0x3bdcf1['query'],_0x22d604['filters']),_0x491438);var _0x21bcbe=[];var _0x3f93c0=squel[_0xf74a('0x47')]()['field']('id')[_0xf74a('0x48')](_0xf74a('0x23'))['field'](_0xf74a('0x49'))[_0xf74a('0x4a')](_0xf74a('0x4b'));var _0x16c0e6=squel[_0xf74a('0x47')]()[_0xf74a('0x48')](_0xf74a('0x4c'))['field'](_0xf74a('0x4d'))['field'](_0xf74a('0x4e'))['from'](_0xf74a('0x4f'),'ui')['left_join'](_0xf74a('0x50'),'u',_0xf74a('0x51'));var _0x2d13bf=squel[_0xf74a('0x47')]()[_0xf74a('0x4a')](_0xf74a('0x52'),'i')['left_join'](_0xf74a('0x53'),'c',_0xf74a('0x54'))[_0xf74a('0x55')](_0xf74a('0x50'),'o',_0xf74a('0x56'))[_0xf74a('0x55')](_0xf74a('0x57'),'a',_0xf74a('0x58'))['left_join'](_0xf74a('0x59'),'me',_0xf74a('0x5a'))['left_join']('mail_interaction_has_tags','it',_0xf74a('0x5b'))[_0xf74a('0x55')](_0xf74a('0x4b'),'t',_0xf74a('0x5c'));var _0x3760b6=squel[_0xf74a('0x5d')]();var _0x43f1d7=[];var _0x8e31a2=squel[_0xf74a('0x5d')]();var _0x11249a;if(_0x3bdcf1['query'][_0xf74a('0x5e')]){_0x11249a=as[_0xf74a('0x5f')](_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x5e')]);var _0x603cda=_0x11249a[_0xf74a('0x60')];for(var _0x41b3ed=0x0;_0x41b3ed<_0x11249a[_0xf74a('0x61')][_0xf74a('0x43')];_0x41b3ed++){var _0x1c21ae=_0x11249a[_0xf74a('0x61')][_0x41b3ed];var _0x4a9f53='i';var _0x5ba1b2=_[_0xf74a('0x62')](_0x491438,[_0xf74a('0x23'),_0x1c21ae[_0xf74a('0x48')]]);if(!_0x5ba1b2){switch(_0x1c21ae[_0xf74a('0x48')]){case _0xf74a('0x63'):if(_0x1c21ae[_0xf74a('0x64')]==0x1){_0x2d13bf['having']('`'+_0x1c21ae[_0xf74a('0x48')]+_0xf74a('0x65'));}else{_0x2d13bf[_0xf74a('0x66')]('`'+_0x1c21ae[_0xf74a('0x48')]+_0xf74a('0x67'));}break;case _0xf74a('0x68'):if(_0x1c21ae['operator']===_0xf74a('0x69')){if(_0x1c21ae[_0xf74a('0x64')][_0xf74a('0x2a')]('\x20')[_0xf74a('0x43')]>0x1){_0x3760b6[_0x603cda](_0xf74a('0x6a'),qs[_0xf74a('0x6b')](_0x1c21ae['value']),null);}else{var _0x12a43c='%'+_0x1c21ae['value']+'%';_0x3760b6[_0x603cda]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x12a43c,_0x12a43c,_0x12a43c);}}else{_0x5ba1b2=_[_0xf74a('0x62')](_0x491438,['name',_0xf74a('0x6c')]);_0x1c21ae[_0xf74a('0x48')]=_0xf74a('0x6c');_0x456507=as[_0xf74a('0x6d')](_0x4a9f53,_0x5ba1b2[_0xf74a('0x3b')],_0x1c21ae);_0x3760b6[_0x603cda](_0x456507['text'],_0x456507['value'][_0xf74a('0x6e')],_0x456507[_0xf74a('0x64')]['end']);}break;case _0xf74a('0x6f'):var _0x2e11d8=_0x1c21ae[_0xf74a('0x64')][_0xf74a('0x2a')](',')[_0xf74a('0x26')](function(_0xf77733){return Number(_0xf77733);});_0x2e11d8['forEach'](function(_0x113a38){_0x8e31a2['or'](_0xf74a('0x70'),'%,'+_0x113a38+',%');});_0x43f1d7=_[_0xf74a('0x71')](_0x43f1d7,_0x2e11d8);break;case _0xf74a('0x72'):if(_0x1c21ae['operator']===_0xf74a('0x69')){_0x3760b6[_0x603cda]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1c21ae['value']+'%',null);}else{_0x5ba1b2=_['find'](_0x491438,[_0xf74a('0x23'),_0xf74a('0x38')]);_0x1c21ae[_0xf74a('0x48')]=_0xf74a('0x38');_0x456507=as['buildExpression'](_0x4a9f53,_0x5ba1b2[_0xf74a('0x3b')],_0x1c21ae);_0x3760b6[_0x603cda](_0x456507[_0xf74a('0x73')],_0x456507[_0xf74a('0x64')][_0xf74a('0x6e')],_0x456507[_0xf74a('0x64')][_0xf74a('0x17')]);}break;case _0xf74a('0x2f'):_0x456507=as['buildExpression']('me',null,_0x1c21ae);_0x3760b6[_0x603cda](_0x456507[_0xf74a('0x73')],_0x456507[_0xf74a('0x64')][_0xf74a('0x6e')],_0x456507['value'][_0xf74a('0x17')]);break;}}else{var _0x456507=as[_0xf74a('0x6d')](_0x4a9f53,_0x5ba1b2[_0xf74a('0x3b')],_0x1c21ae);_0x3760b6[_0x603cda](_0x456507[_0xf74a('0x73')],_0x456507[_0xf74a('0x64')][_0xf74a('0x6e')],_0x456507[_0xf74a('0x64')]['end']);}}}else{var _0x3ef36c=_(_0x3bdcf1[_0xf74a('0x3d')])[_0xf74a('0x74')]()['map'](function(_0x268af5){return _[_0xf74a('0x75')](_0x491438,[_0xf74a('0x23'),_0x268af5])?_0x268af5:undefined;})[_0xf74a('0x76')]()[_0xf74a('0x64')]();if(!_['isEmpty'](_0x3ef36c)){_0x3ef36c[_0xf74a('0x2b')](function(_0x4f5597){if(_0x4f5597===_0xf74a('0x77')){_0x2d13bf['where'](_0xf74a('0x78'),[][_0xf74a('0x79')](_0x3bdcf1['query'][_0x4f5597]));}else if(_0x4f5597===_0xf74a('0x7a')){var _0x248077=JSON[_0xf74a('0x7b')](_0x3bdcf1['query'][_0x4f5597])[_0xf74a('0x7c')];var _0x4935e=JSON[_0xf74a('0x7b')](_0x3bdcf1['query'][_0x4f5597])['$lte'];_0x2d13bf[_0xf74a('0x45')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x248077,_0x4935e);}else{if(_0x3bdcf1[_0xf74a('0x3d')][_0x4f5597]===_0xf74a('0x7d')){_0x2d13bf[_0xf74a('0x45')]('i.'+_0x4f5597+'\x20IS\x20NULL');}else{_0x2d13bf[_0xf74a('0x45')]('i.'+_0x4f5597+_0xf74a('0x7e'),_0x3bdcf1[_0xf74a('0x3d')][_0x4f5597]);}}});}if(_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x7f')]){if(_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x7f')]==0x1){_0x2d13bf['having']('`unreadMessages`\x20=\x200');}else{_0x2d13bf['having']('`unreadMessages`\x20>\x200');}}if(_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x80')]){_0x43f1d7=_[_0xf74a('0x81')](_0x3bdcf1['query'][_0xf74a('0x80')])?_0x3bdcf1[_0xf74a('0x3d')]['tag']:new Array(_0x3bdcf1['query'][_0xf74a('0x80')]);_0x43f1d7[_0xf74a('0x2b')](function(_0x4b9114){_0x8e31a2['or'](_0xf74a('0x70'),'%,'+_0x4b9114+',%');});}if(_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x82')]){var _0x4bb793=_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x82')]['replace']('\x5c','\x5c\x5c')[_0xf74a('0x83')](/'/g,'\x27\x27');if(qs[_0xf74a('0x84')](_0x4bb793)){_0x3760b6['or'](_0xf74a('0x85'),_0x4bb793+'%');}else if(qs[_0xf74a('0x86')](_0x4bb793)){_0x3760b6['or']('c.email\x20LIKE\x20?',_0x4bb793+'%');}else{_0x3760b6['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf74a('0x6b')](_0x4bb793))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf74a('0x6b')](_0x4bb793));}}}_0x2d13bf[_0xf74a('0x45')](_0x3760b6);_0x2d13bf[_0xf74a('0x87')](_0xf74a('0x88'));var _0x155135={'type':db[_0xf74a('0x89')][_0xf74a('0x8a')]['SELECT'],'raw':!![]};var _0x1de7e4=_0x2d13bf[_0xf74a('0x8b')]();_0x1de7e4['field'](_0xf74a('0x88'));_0x1de7e4[_0xf74a('0x48')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf74a('0x63'));if(_0x3e51e5[_0xf74a('0x8c')]){_0x3e51e5[_0xf74a('0x8c')][_0xf74a('0x2b')](function(_0x392826){var _0x4a6b47=_0x392826[0x0]===_0xf74a('0x8d')?_0x392826[0x0]:'i.'+_0x392826[0x0];_0x2d13bf['order'](_0x4a6b47,_0x392826[0x1]===_0xf74a('0x8e')?![]:!![]);});}if(!_['isEmpty'](_0x43f1d7)){_0x2d13bf[_0xf74a('0x66')](_0x8e31a2);_0x1de7e4['where'](_0xf74a('0x8f'),_0x43f1d7);}BPromise[_0xf74a('0x90')]()[_0xf74a('0x20')](function(){if(!_0x11249a){if(_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x77')])return;_0x1de7e4[_0xf74a('0x45')](_0xf74a('0x91'));_0x2d13bf[_0xf74a('0x45')](_0xf74a('0x91'));return;}if(_0x3bdcf1[_0xf74a('0x92')][_0xf74a('0x93')]!==_0xf74a('0x94'))return;return _0x3bdcf1[_0xf74a('0x92')][_0xf74a('0x95')]({'attributes':['id'],'raw':!![]})[_0xf74a('0x20')](function(_0xd93a2e){if(_[_0xf74a('0x96')](_0xd93a2e)){_0x1de7e4[_0xf74a('0x45')](_0xf74a('0x97'));_0x2d13bf[_0xf74a('0x45')](_0xf74a('0x97'));}else{_0x1de7e4[_0xf74a('0x45')](_0xf74a('0x78'),_['map'](_0xd93a2e,'id'));_0x2d13bf[_0xf74a('0x45')](_0xf74a('0x78'),_[_0xf74a('0x26')](_0xd93a2e,'id'));}});})[_0xf74a('0x20')](function(){if(_0x3bdcf1['user'][_0xf74a('0x93')]===_0xf74a('0x94')&&!_0x11249a&&!_0x3bdcf1[_0xf74a('0x3d')][_0xf74a('0x77')])return[];return db[_0xf74a('0x98')][_0xf74a('0x3d')](_0x1de7e4[_0xf74a('0x99')](),_0x155135);})[_0xf74a('0x20')](function(_0x38f36b){_0x2775a6['count']=_0x38f36b[_0xf74a('0x43')];if(_0x2775a6[_0xf74a('0x1c')]===0x0)return[];return db['sequelize'][_0xf74a('0x3d')](_0x3f93c0[_0xf74a('0x99')](),_0x155135)[_0xf74a('0x20')](function(_0x166453){_0x21bcbe=_[_0xf74a('0x9a')](_0x166453,'id');_0x155135=_['merge'](_0x155135,{'model':db[_0xf74a('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3bdcf1[_0xf74a('0x3d')]['fields']){_0x3e51e5[_0xf74a('0x42')][_0xf74a('0x2b')](function(_0x183cd1){_0x2d13bf[_0xf74a('0x48')]('i.'+_0x183cd1);});}else{_0x2d13bf[_0xf74a('0x48')](_0xf74a('0x9b'),_0xf74a('0x63'));_0x2d13bf[_0xf74a('0x48')]('a.key',_0xf74a('0x9c'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0x9d'),_0xf74a('0x9e'));_0x2d13bf[_0xf74a('0x48')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xf74a('0x8d'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0x88'));_0x2d13bf['field'](_0xf74a('0x9f'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa0'));_0x2d13bf[_0xf74a('0x48')]('i.closed');_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa1'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa2'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa3'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa4'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa5'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa6'));_0x2d13bf['field']('i.secondDisposition');_0x2d13bf['field'](_0xf74a('0xa7'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xa8'));_0x2d13bf[_0xf74a('0x48')]('i.to');_0x2d13bf['field'](_0xf74a('0xa9'));_0x2d13bf['field'](_0xf74a('0xaa'));_0x2d13bf[_0xf74a('0x48')]('i.UserId');_0x2d13bf['field'](_0xf74a('0xab'),_0xf74a('0xac'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xad'),_0xf74a('0xae'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xaf'),_0xf74a('0xb0'));_0x2d13bf[_0xf74a('0x48')]('c.phone','Contact.phone');_0x2d13bf['field'](_0xf74a('0xb1'),_0xf74a('0xb2'));_0x2d13bf[_0xf74a('0x48')](_0xf74a('0xb3'),_0xf74a('0xb4'));_0x2d13bf['field'](_0xf74a('0xb5'),_0xf74a('0xb6'));_0x2d13bf['field'](_0xf74a('0xb7'),_0xf74a('0xb8'));_0x2d13bf['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0xf74a('0x28'));}if(_0x3e51e5[_0xf74a('0x1b')])_0x2d13bf[_0xf74a('0x1b')](_0x3e51e5[_0xf74a('0x1b')]);if(_0x3e51e5['offset'])_0x2d13bf['offset'](_0x3e51e5[_0xf74a('0x1d')]);return db[_0xf74a('0x98')][_0xf74a('0x3d')](_0x2d13bf[_0xf74a('0x99')](),_0x155135);})['then'](function(_0x5cf41c){if(_0x5cf41c['length']>0x0)_0x16c0e6['where']('ui.MailInteractionId\x20IN\x20?',_[_0xf74a('0x26')](_0x5cf41c,'id'));return db[_0xf74a('0x98')][_0xf74a('0x3d')](_0x16c0e6['toString'](),_0x155135)[_0xf74a('0x20')](function(_0x3773ce){var _0x46d21d=_['groupBy'](_0x3773ce,_0xf74a('0xb9'));var _0x3d5c88=[];return db['Setting']['findOne']({'attributes':[_0xf74a('0xba')],'raw':!![]})[_0xf74a('0x20')](function(_0x4dd3f4){var _0x3bcbfa=_0x4dd3f4[_0xf74a('0xba')];_0x5cf41c[_0xf74a('0x2b')](function(_0x1db0a0){_0x3d5c88['push'](updateMailInteraction(_0x1db0a0,_0x21bcbe,_0x46d21d,_0x3bcbfa));});return BPromise[_0xf74a('0xbb')](_0x3d5c88);});});});})[_0xf74a('0x20')](function(_0x46dd86){_0x2775a6[_0xf74a('0xbc')]=_0x46dd86;return _0x2775a6;})['then'](respondWithFilteredResult(_0x4da8f7,_0x3e51e5))[_0xf74a('0x31')](handleError(_0x4da8f7,null));};exports[_0xf74a('0xbd')]=function(_0x21f417,_0x4e02ef){var _0x250f3b={'raw':![],'where':{'id':_0x21f417[_0xf74a('0xbe')]['id']}},_0x42ebc4={};_0x42ebc4[_0xf74a('0x40')]=_['keys'](db[_0xf74a('0x3a')]['rawAttributes']);_0x42ebc4['query']=_[_0xf74a('0x74')](_0x21f417[_0xf74a('0x3d')]);_0x42ebc4[_0xf74a('0x3e')]=_[_0xf74a('0x3f')](_0x42ebc4[_0xf74a('0x40')],_0x42ebc4[_0xf74a('0x3d')]);_0x250f3b[_0xf74a('0x42')]=_[_0xf74a('0x3f')](_0x42ebc4[_0xf74a('0x40')],qs[_0xf74a('0x41')](_0x21f417[_0xf74a('0x3d')][_0xf74a('0x41')]));_0x250f3b[_0xf74a('0x42')]=_0x250f3b[_0xf74a('0x42')]['length']?_0x250f3b[_0xf74a('0x42')]:_0x42ebc4[_0xf74a('0x40')];if(_0x21f417['query'][_0xf74a('0xbf')]){_0x250f3b['include']=[{'all':!![]}];}_0x250f3b=_[_0xf74a('0xc0')]({},_0x250f3b,_0x21f417[_0xf74a('0xc1')]);return db[_0xf74a('0x3a')]['find'](_0x250f3b)[_0xf74a('0x20')](handleEntityNotFound(_0x4e02ef,null))[_0xf74a('0x20')](respondWithResult(_0x4e02ef,null))[_0xf74a('0x31')](handleError(_0x4e02ef,null));};exports[_0xf74a('0xc2')]=function(_0x50d319,_0x5b4f86){return db[_0xf74a('0x3a')][_0xf74a('0xc2')](_0x50d319['body'],{})[_0xf74a('0x20')](respondWithResult(_0x5b4f86,0xc9))[_0xf74a('0x31')](handleError(_0x5b4f86,null));};exports[_0xf74a('0x1f')]=function(_0xb00a66,_0xf6c079){if(_0xb00a66[_0xf74a('0xc3')]['id']){delete _0xb00a66['body']['id'];}return db['MailInteraction'][_0xf74a('0x62')]({'where':{'id':_0xb00a66[_0xf74a('0xbe')]['id']}})['then'](handleEntityNotFound(_0xf6c079,null))[_0xf74a('0x20')](saveUpdates(_0xb00a66[_0xf74a('0xc3')],null))[_0xf74a('0x20')](respondWithResult(_0xf6c079,null))['catch'](handleError(_0xf6c079,null));};exports['destroy']=function(_0x78027e,_0x63456){return db[_0xf74a('0x3a')][_0xf74a('0x62')]({'where':{'id':_0x78027e[_0xf74a('0xbe')]['id']}})['then'](handleEntityNotFound(_0x63456,null))['then'](removeEntity(_0x63456,null))[_0xf74a('0x31')](handleError(_0x63456,null));};exports[_0xf74a('0xc4')]=function(_0x42dc08,_0x1f55c1){return db[_0xf74a('0x3a')]['describe']()[_0xf74a('0x20')](respondWithResult(_0x1f55c1,null))[_0xf74a('0x31')](handleError(_0x1f55c1,null));};exports['addMessage']=function(_0x278e57,_0x1dd296){return db['MailMessage'][_0xf74a('0x62')]({'where':{'id':_0x278e57['params']['id']}})[_0xf74a('0x20')](handleEntityNotFound(_0x1dd296,null))[_0xf74a('0x20')](function(_0x68ce85){if(_0x68ce85){return _0x68ce85[_0xf74a('0xc5')](_0x278e57[_0xf74a('0xc3')][_0xf74a('0xc6')],_['omit'](_0x278e57['body'],[_0xf74a('0xc6'),'id'])||{});}})[_0xf74a('0x20')](respondWithResult(_0x1dd296,null))['catch'](handleError(_0x1dd296,null));};exports[_0xf74a('0xc7')]=function(_0x577bb2,_0x4560fa){var _0x2d7101={'raw':![],'where':{}};var _0x3b5287={};var _0xbfed71={'count':0x0,'rows':[]};return db[_0xf74a('0x3a')][_0xf74a('0xc8')]({'where':{'id':_0x577bb2[_0xf74a('0xbe')]['id']}})[_0xf74a('0x20')](handleEntityNotFound(_0x4560fa,null))[_0xf74a('0x20')](function(_0x1f2174){if(_0x1f2174){_0x3b5287[_0xf74a('0x40')]=_[_0xf74a('0x74')](db[_0xf74a('0x2c')]['rawAttributes']);_0x3b5287[_0xf74a('0x3d')]=_[_0xf74a('0x74')](_0x577bb2[_0xf74a('0x3d')]);_0x3b5287[_0xf74a('0x3e')]=_[_0xf74a('0x3f')](_0x3b5287[_0xf74a('0x40')],_0x3b5287[_0xf74a('0x3d')]);_0x2d7101[_0xf74a('0x42')]=_['intersection'](_0x3b5287[_0xf74a('0x40')],qs['fields'](_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x41')]));_0x2d7101['attributes']=_0x2d7101[_0xf74a('0x42')][_0xf74a('0x43')]?_0x2d7101[_0xf74a('0x42')]:_0x3b5287['model'];if(!_0x577bb2[_0xf74a('0x3d')]['hasOwnProperty'](_0xf74a('0xc9'))){_0x2d7101[_0xf74a('0x1b')]=qs[_0xf74a('0x1b')](_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x1b')]);_0x2d7101[_0xf74a('0x1d')]=qs[_0xf74a('0x1d')](_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x1d')]);}_0x2d7101['order']=qs[_0xf74a('0x44')](_0x577bb2['query'][_0xf74a('0x44')]);_0x2d7101['where']=qs[_0xf74a('0x3e')](_['pick'](_0x577bb2[_0xf74a('0x3d')],_0x3b5287[_0xf74a('0x3e')]));_0x2d7101[_0xf74a('0x45')][_0xf74a('0xb9')]=_0x1f2174['id'];if(_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x82')]){_0x2d7101[_0xf74a('0x45')]=_[_0xf74a('0xc0')](_0x2d7101['where'],{'$or':_[_0xf74a('0x26')](_0x2d7101[_0xf74a('0x42')],function(_0x5d768e){var _0x58b99f={};_0x58b99f[_0x5d768e]={'$like':'%'+_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x82')]+'%'};return _0x58b99f;})});}if(_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x7c')]){var _0x574391=_0x577bb2[_0xf74a('0x3d')][_0xf74a('0x7c')][_0xf74a('0x2a')](',');var _0xdd13df={};_0xdd13df[_0x574391[0x0]]={'$gte':moment(_0x574391[0x1])['format'](_0xf74a('0xca'))};_0x2d7101[_0xf74a('0x45')]=_['merge'](_0x2d7101[_0xf74a('0x45')],_0xdd13df);}_0x2d7101=_[_0xf74a('0xc0')]({},_0x2d7101,_0x577bb2[_0xf74a('0xc1')]);return db[_0xf74a('0x2c')][_0xf74a('0x1c')]({'where':_0x2d7101[_0xf74a('0x45')]})[_0xf74a('0x20')](function(_0x1df863){_0xbfed71[_0xf74a('0x1c')]=_0x1df863;if(_0x577bb2[_0xf74a('0x3d')][_0xf74a('0xbf')]){_0x2d7101[_0xf74a('0xcb')]=[{'all':!![]}];}return db[_0xf74a('0x2c')]['findAll'](_0x2d7101);})[_0xf74a('0x20')](function(_0x31a036){if(_0x577bb2[_0xf74a('0x3d')][_0xf74a('0xcc')]==='true'){for(var _0x34a72b=0x0;_0x34a72b<_0x31a036[_0xf74a('0x43')];_0x34a72b++){_0x31a036[_0x34a72b][_0xf74a('0xc3')]=juice(_0x31a036[_0x34a72b][_0xf74a('0xc3')]);}}_0xbfed71[_0xf74a('0xbc')]=_0x31a036;return _0xbfed71;});}})[_0xf74a('0x20')](respondWithFilteredResult(_0x4560fa,_0x2d7101))[_0xf74a('0x31')](handleError(_0x4560fa,null));};exports[_0xf74a('0xcd')]=function(_0xa950e2,_0x118d44){return db[_0xf74a('0x3a')][_0xf74a('0x62')]({'where':{'id':_0xa950e2['params']['id']}})[_0xf74a('0x20')](handleEntityNotFound(_0x118d44,null))[_0xf74a('0x20')](function(_0x32377f){if(_0x32377f){return _0x32377f[_0xf74a('0xce')](_0xa950e2[_0xf74a('0xc3')][_0xf74a('0xc6')],_[_0xf74a('0xcf')](_0xa950e2[_0xf74a('0xc3')],[_0xf74a('0xc6'),'id'])||{})[_0xf74a('0xd0')](function(){return db['Tag'][_0xf74a('0xd1')]({'attributes':['id','name',_0xf74a('0x49')],'where':{'id':_0xa950e2[_0xf74a('0xc3')][_0xf74a('0xc6')]}});})[_0xf74a('0x20')](function(_0x39bbeb){socket[_0xf74a('0xd2')](_0xf74a('0xd3'),{'id':Number(_0xa950e2[_0xf74a('0xbe')]['id']),'tags':_0x39bbeb||[]});return{'id':Number(_0xa950e2[_0xf74a('0xbe')]['id']),'tags':_0x39bbeb||[]};});}})[_0xf74a('0x20')](respondWithResult(_0x118d44,null))[_0xf74a('0x31')](handleError(_0x118d44,null));};exports[_0xf74a('0xd4')]=function(_0x187476,_0x2a453f){return db['MailInteraction'][_0xf74a('0x62')]({'where':{'id':_0x187476['params']['id']}})[_0xf74a('0x20')](handleEntityNotFound(_0x2a453f,null))[_0xf74a('0x20')](function(_0x4e3489){if(_0x4e3489){return _0x4e3489['removeTags'](_0x187476[_0xf74a('0x3d')]['ids']);}})[_0xf74a('0x20')](respondWithStatusCode(_0x2a453f,null))[_0xf74a('0x31')](handleError(_0x2a453f,null));};exports[_0xf74a('0xd5')]=function(_0x500eaf,_0x22cac5){var _0x404d2b=moment()[_0xf74a('0xd6')]()['toString']();var _0x2477ac=path['join'](config['root'],_0xf74a('0xd7'),'files','tmp');var _0x4dbd27=path[_0xf74a('0xd8')](config[_0xf74a('0xd9')],_0xf74a('0xd7'),_0xf74a('0xda'),'attachments');var _0x109c6a=path['join'](_0x2477ac,_0x404d2b);var _0x200153=util[_0xf74a('0xdb')](_0xf74a('0xdc'),_0x500eaf[_0xf74a('0xbe')]['id'],_0x404d2b);var _0x437f3e=path[_0xf74a('0xd8')](_0x2477ac,_0x200153);var _0x3c7ab6=[];if(_0x500eaf['query'][_0xf74a('0xdd')]){_0x3c7ab6[_0xf74a('0xde')]({'model':db[_0xf74a('0xdf')],'as':_0xf74a('0xe0'),'raw':!![]});}var _0x34c1e0=[{'model':db[_0xf74a('0x2c')],'as':_0xf74a('0xe1'),'attributes':['id',_0xf74a('0xc3'),_0xf74a('0x4a'),'to','cc',_0xf74a('0xe2'),_0xf74a('0xe3'),_0xf74a('0x7a')],'where':{'secret':![]},'order':qs[_0xf74a('0x44')]('id'),'include':_0x3c7ab6}];return db[_0xf74a('0x3a')][_0xf74a('0x62')]({'where':{'id':_0x500eaf['params']['id']},'include':_0x34c1e0})[_0xf74a('0x20')](handleEntityNotFound(_0x22cac5,null))[_0xf74a('0x20')](function(_0x1a03a6){if(_0x1a03a6&&_0x1a03a6['Messages']){var _0x276c51=_0x1a03a6[_0xf74a('0xe4')]({'plain':!![]});fs['mkdirSync'](_0x109c6a);return BPromise[_0xf74a('0xe5')](_0x276c51[_0xf74a('0xe1')],function(_0x578758,_0x2aa406){var _0x2f8c46={'from':_0x578758[_0xf74a('0x4a')],'to':_0x578758['to'],'subject':_0x578758['subject'],'html':htmlEntities[_0xf74a('0xe6')](_0x578758['body']),'headers':{'Date':moment(_0x578758[_0xf74a('0x7a')])['format'](_0xf74a('0xe7'))},'attachments':[]};if(_0x578758['cc']){_0x2f8c46['headers']['Cc']=_0x578758['cc'];}if(_0x578758[_0xf74a('0xe2')]){_0x2f8c46['headers'][_0xf74a('0xe8')]=_0x578758['bcc'];}return new BPromise(function(_0x37dbea,_0x273689){if(_0x578758['Attachments']){for(var _0x5a4c66=0x0;_0x5a4c66<_0x578758[_0xf74a('0xe0')][_0xf74a('0x43')];_0x5a4c66++){var _0x428a3e=_0x578758[_0xf74a('0xe0')][_0x5a4c66];var _0xdf56e8=path[_0xf74a('0xd8')](_0x4dbd27,_0x428a3e[_0xf74a('0xe9')]);if(fs[_0xf74a('0xea')](_0xdf56e8)){_0x2f8c46[_0xf74a('0xdd')][_0xf74a('0xde')]({'name':_0x428a3e[_0xf74a('0x23')],'contentType':_0x428a3e[_0xf74a('0x3b')],'data':fs[_0xf74a('0xeb')](_0xdf56e8)});}}}emlformat[_0xf74a('0xec')](_0x2f8c46,function(_0x12f619,_0x3cf826){if(_0x12f619)return _0x273689(_0x12f619);fs['writeFileSync'](path[_0xf74a('0xd8')](_0x109c6a,util[_0xf74a('0xdb')](_0xf74a('0xed'),_0x2aa406)),_0x3cf826);return _0x37dbea(_0x3cf826);});});})['then'](function(){return new BPromise(function(_0x2e51f0,_0x5b50a8){zipdir(_0x109c6a,{'saveTo':_0x437f3e},function(_0x2fdddc,_0x11c119){if(_0x2fdddc)return _0x5b50a8(_0x2fdddc);return _0x2e51f0(_0x11c119);});})[_0xf74a('0x20')](function(){return new BPromise(function(_0x78292f,_0x292d36){rimraf(_0x109c6a,function(_0x4ddd8a){if(_0x4ddd8a)_0x292d36(_0x4ddd8a);return _0x78292f();});});})[_0xf74a('0x20')](function(){return _0x22cac5[_0xf74a('0xd5')](_0x437f3e,_0x200153,function(_0x55237c){if(!_0x55237c)fs[_0xf74a('0xee')](_0x437f3e);});});});}else{return _0x22cac5['sendStatus'](0xc8);}})[_0xf74a('0x31')](handleError(_0x22cac5,null));};
\ No newline at end of file
+var _0x2d2c=['moment','bluebird','util','lodash','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','update','destroy','then','error','stack','name','send','Users','map','fullname','TagIds','split','forEach','Tags','push','MailMessage','findOne','out','plainBody','-id','trimStart','catch','waiting','talking','answered','unmanaged','total','closed','UserId','index','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','select','field','color','from','tools_tags','u.id','u.fullname','left_join','users','u.id\x20=\x20ui.UserId','mail_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','some','compact','isEmpty','MailAccountId','concat','createdAt','$gte','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','QueryTypes','SELECT','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','role','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','i.MailAccountId\x20IN\x20?','agent','sequelize','toString','keyBy','merge','MailInteraction','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.updatedAt','i.closedAt','i.lastMsgDirection','i.substatus','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','all','params','includeAll','options','create','body','describe','addMessage','format','YYYY-MM-DD\x20HH:mm:ss','findAll','true','rows','addTags','setTags','ids','Tag','emit','mailInteractionTags:save','removeTags','download','unix','root','server','tmp','files','attachments','join','transcript-%d-%s.zip','Attachment','bcc','Messages','get','mkdirSync','each','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','build','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir'];(function(_0x1c31ff,_0x4d7927){var _0x1c657a=function(_0x46a4e8){while(--_0x46a4e8){_0x1c31ff['push'](_0x1c31ff['shift']());}};_0x1c657a(++_0x4d7927);}(_0x2d2c,0x1d7));var _0xc2d2=function(_0x41648f,_0x4a8936){_0x41648f=_0x41648f-0x0;var _0x20340a=_0x2d2c[_0x41648f];return _0x20340a;};'use strict';var emlformat=require(_0xc2d2('0x0'));var rimraf=require(_0xc2d2('0x1'));var zipdir=require(_0xc2d2('0x2'));var moment=require(_0xc2d2('0x3'));var BPromise=require(_0xc2d2('0x4'));var util=require(_0xc2d2('0x5'));var path=require('path');var fs=require('fs');var _=require(_0xc2d2('0x6'));var squel=require('squel');var juice=require(_0xc2d2('0x7'));var Redis=require(_0xc2d2('0x8'));var qs=require(_0xc2d2('0x9'));var as=require(_0xc2d2('0xa'));var logger=require(_0xc2d2('0xb'))('api');var config=require('../../config/environment');var db=require(_0xc2d2('0xc'))['db'];var htmlEntities=require(_0xc2d2('0xd'));config[_0xc2d2('0xe')]=_[_0xc2d2('0xf')](config[_0xc2d2('0xe')],{'host':_0xc2d2('0x10'),'port':0x18eb});var socket=require(_0xc2d2('0x11'))(new Redis(config[_0xc2d2('0xe')]));require(_0xc2d2('0x12'))[_0xc2d2('0x13')](socket);function respondWithStatusCode(_0x2f247a,_0x2b238a){_0x2b238a=_0x2b238a||0xcc;return function(_0x5ae744){if(_0x5ae744){return _0x2f247a[_0xc2d2('0x14')](_0x2b238a);}return _0x2f247a[_0xc2d2('0x15')](_0x2b238a)[_0xc2d2('0x16')]();};}function respondWithResult(_0x57e318,_0x273269){_0x273269=_0x273269||0xc8;return function(_0x738877){if(_0x738877){return _0x57e318['status'](_0x273269)[_0xc2d2('0x17')](_0x738877);}};}function respondWithFilteredResult(_0x1db3d2,_0x5a694f){return function(_0xa6f836){if(_0xa6f836){var _0x4de52a=typeof _0x5a694f['offset']===_0xc2d2('0x18')&&typeof _0x5a694f[_0xc2d2('0x19')]===_0xc2d2('0x18');var _0x4006f3=_0xa6f836[_0xc2d2('0x1a')];var _0x37552b=_0x4de52a?0x0:_0x5a694f[_0xc2d2('0x1b')];var _0x23957d=_0x4de52a?_0xa6f836[_0xc2d2('0x1a')]:_0x5a694f[_0xc2d2('0x1b')]+_0x5a694f[_0xc2d2('0x19')];var _0x4e2712;if(_0x23957d>=_0x4006f3){_0x23957d=_0x4006f3;_0x4e2712=0xc8;}else{_0x4e2712=0xce;}_0x1db3d2[_0xc2d2('0x15')](_0x4e2712);return _0x1db3d2[_0xc2d2('0x1c')](_0xc2d2('0x1d'),_0x37552b+'-'+_0x23957d+'/'+_0x4006f3)[_0xc2d2('0x17')](_0xa6f836);}return null;};}function saveUpdates(_0x54dc26){return function(_0x31c213){if(_0x31c213){return _0x31c213[_0xc2d2('0x1e')](_0x54dc26)['then'](function(_0x3881e2){return _0x3881e2;});}return null;};}function removeEntity(_0x21e4f0){return function(_0xa3ca74){if(_0xa3ca74){return _0xa3ca74[_0xc2d2('0x1f')]()[_0xc2d2('0x20')](function(){_0x21e4f0['status'](0xcc)[_0xc2d2('0x16')]();});}};}function handleEntityNotFound(_0x2af5b0){return function(_0x4c84e0){if(!_0x4c84e0){_0x2af5b0[_0xc2d2('0x14')](0x194);}return _0x4c84e0;};}function handleError(_0x4e3cb5,_0x5ecf78){_0x5ecf78=_0x5ecf78||0x1f4;return function(_0x588342){logger[_0xc2d2('0x21')](_0x588342[_0xc2d2('0x22')]);if(_0x588342[_0xc2d2('0x23')]){delete _0x588342['name'];}_0x4e3cb5[_0xc2d2('0x15')](_0x5ecf78)[_0xc2d2('0x24')](_0x588342);};}function getInteractionUsers(_0x1d5442,_0xbb46df){return new BPromise(function(_0x5532cd,_0x25b201){try{if(_0xbb46df[_0x1d5442['id']]){_0x1d5442[_0xc2d2('0x25')]=_[_0xc2d2('0x26')](_0xbb46df[_0x1d5442['id']],function(_0x1dd3c1){return{'id':_0x1dd3c1['id'],'fullname':_0x1dd3c1[_0xc2d2('0x27')]};});}}catch(_0x1c14e5){_0x25b201(_0x1c14e5);}_0x5532cd(_0x1d5442);});}function getInteractionTags(_0x49e955,_0xa4c66a){return new BPromise(function(_0x11299b,_0x2613d2){try{if(_0x49e955[_0xc2d2('0x28')]){_0x49e955['Tags']=[];_0x49e955['TagIds'][_0xc2d2('0x29')](',')[_0xc2d2('0x2a')](function(_0x1f3b66){_0x49e955[_0xc2d2('0x2b')][_0xc2d2('0x2c')](_0xa4c66a[_0x1f3b66]);});}delete _0x49e955[_0xc2d2('0x28')];}catch(_0x4d4af2){_0x2613d2(_0x4d4af2);}_0x11299b(_0x49e955);});}function getLastMessageText(_0x3e90f6){return new BPromise(function(_0x1adbf0,_0x55d09b){return db[_0xc2d2('0x2d')][_0xc2d2('0x2e')]({'where':{'$and':[{'MailInteractionId':_0x3e90f6['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xc2d2('0x2f')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xc2d2('0x30')],'order':_0xc2d2('0x31'),'raw':!![]})['then'](function(_0x481afa){if(_0x481afa&&_0x481afa[_0xc2d2('0x30')]){_0x3e90f6['lastMsgText']=_[_0xc2d2('0x32')](_0x481afa[_0xc2d2('0x30')]);}_0x1adbf0(_0x3e90f6);})[_0xc2d2('0x33')](function(_0x919e8a){_0x55d09b(_0x919e8a);});});}function updateMailInteraction(_0x126c10,_0x5ba6ae,_0x2ae10f,_0x3ec2b7){return new BPromise(function(_0xe7214e,_0x2b936f){return getInteractionUsers(_0x126c10,_0x2ae10f)[_0xc2d2('0x20')](function(_0x2db21f){return getInteractionTags(_0x2db21f,_0x5ba6ae);})['then'](function(_0x15d56d){return getStateInteraction(_0x15d56d);})[_0xc2d2('0x20')](function(_0x561a26){if(_0x3ec2b7){_0xe7214e(getLastMessageText(_0x561a26));}else{_0xe7214e(_0x561a26);}})[_0xc2d2('0x33')](function(_0x5ca4b2){_0x2b936f(_0x5ca4b2);});});}function getStateInteraction(_0x38cdce){return new BPromise(function(_0x3cc9c8){_0x38cdce[_0xc2d2('0x34')]=0x0;_0x38cdce[_0xc2d2('0x35')]=0x0;_0x38cdce[_0xc2d2('0x36')]=0x0;_0x38cdce[_0xc2d2('0x37')]=0x0;_0x38cdce[_0xc2d2('0x38')]=0x0;if(!_0x38cdce[_0xc2d2('0x39')]&&!_0x38cdce['UserId']){_0x38cdce[_0xc2d2('0x34')]+=0x1;}if(!_0x38cdce[_0xc2d2('0x39')]&&_0x38cdce[_0xc2d2('0x3a')]){_0x38cdce[_0xc2d2('0x35')]+=0x1;if(_0x38cdce['waiting']){_0x38cdce[_0xc2d2('0x34')]-=0x1;}}if(_0x38cdce[_0xc2d2('0x39')]&&_0x38cdce[_0xc2d2('0x3a')]){_0x38cdce[_0xc2d2('0x36')]+=0x1;if(_0x38cdce['talking']){_0x38cdce[_0xc2d2('0x35')]-=0x1;}}if(_0x38cdce['closed']&&!_0x38cdce[_0xc2d2('0x3a')]){_0x38cdce[_0xc2d2('0x37')]+=0x1;if(_0x38cdce['waiting']){_0x38cdce[_0xc2d2('0x34')]-=0x1;}}_0x38cdce[_0xc2d2('0x38')]+=0x1;_0x3cc9c8(_0x38cdce);});}exports[_0xc2d2('0x3b')]=function(_0x29d04b,_0x2a27ff){var _0x38d236={},_0x16bf47={},_0x379e58={'count':0x0,'rows':[]};var _0x450b5=_[_0xc2d2('0x26')](db['MailInteraction'][_0xc2d2('0x3c')],function(_0x7ba0d9){return{'name':_0x7ba0d9['fieldName'],'type':_0x7ba0d9[_0xc2d2('0x3d')][_0xc2d2('0x3e')]};});_0x16bf47[_0xc2d2('0x3f')]=_['map'](_0x450b5,'name');_0x16bf47['query']=_[_0xc2d2('0x40')](_0x29d04b[_0xc2d2('0x41')]);_0x16bf47[_0xc2d2('0x42')]=_[_0xc2d2('0x43')](_0x16bf47['model'],_0x16bf47[_0xc2d2('0x41')]);_0x38d236['attributes']=_['intersection'](_0x16bf47[_0xc2d2('0x3f')],qs[_0xc2d2('0x44')](_0x29d04b[_0xc2d2('0x41')]['fields']));_0x38d236[_0xc2d2('0x45')]=_0x38d236[_0xc2d2('0x45')][_0xc2d2('0x46')]?_0x38d236['attributes']:_0x16bf47[_0xc2d2('0x3f')];if(!_0x29d04b['query'][_0xc2d2('0x47')](_0xc2d2('0x48'))){_0x38d236[_0xc2d2('0x19')]=qs[_0xc2d2('0x19')](_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x19')]);_0x38d236['offset']=qs[_0xc2d2('0x1b')](_0x29d04b['query'][_0xc2d2('0x1b')]);}_0x38d236[_0xc2d2('0x49')]=qs[_0xc2d2('0x4a')](_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x4a')]);_0x38d236['where']=qs[_0xc2d2('0x42')](_[_0xc2d2('0x4b')](_0x29d04b['query'],_0x16bf47['filters']),_0x450b5);var _0x4b8e36=[];var _0x484e69=squel[_0xc2d2('0x4c')]()[_0xc2d2('0x4d')]('id')[_0xc2d2('0x4d')](_0xc2d2('0x23'))[_0xc2d2('0x4d')](_0xc2d2('0x4e'))[_0xc2d2('0x4f')](_0xc2d2('0x50'));var _0x3aa6cb=squel[_0xc2d2('0x4c')]()[_0xc2d2('0x4d')](_0xc2d2('0x51'))['field'](_0xc2d2('0x52'))[_0xc2d2('0x4d')]('ui.MailInteractionId')[_0xc2d2('0x4f')]('user_has_mail_interactions','ui')[_0xc2d2('0x53')](_0xc2d2('0x54'),'u',_0xc2d2('0x55'));var _0x18805a=squel['select']()[_0xc2d2('0x4f')](_0xc2d2('0x56'),'i')[_0xc2d2('0x53')](_0xc2d2('0x57'),'c',_0xc2d2('0x58'))[_0xc2d2('0x53')](_0xc2d2('0x54'),'o',_0xc2d2('0x59'))[_0xc2d2('0x53')]('mail_accounts','a','a.id\x20=\x20i.MailAccountId')[_0xc2d2('0x53')](_0xc2d2('0x5a'),'me',_0xc2d2('0x5b'))[_0xc2d2('0x53')](_0xc2d2('0x5c'),'it','it.MailInteractionId\x20=\x20i.id')[_0xc2d2('0x53')](_0xc2d2('0x50'),'t',_0xc2d2('0x5d'));var _0x5f3c48=squel[_0xc2d2('0x5e')]();var _0x534db2=[];var _0x244bbd=squel[_0xc2d2('0x5e')]();var _0x385d03;if(_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x5f')]){_0x385d03=as[_0xc2d2('0x60')](_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x5f')]);var _0x3170df=_0x385d03[_0xc2d2('0x61')];for(var _0x2dc042=0x0;_0x2dc042<_0x385d03[_0xc2d2('0x62')][_0xc2d2('0x46')];_0x2dc042++){var _0x23f503=_0x385d03[_0xc2d2('0x62')][_0x2dc042];var _0x1619d7='i';var _0x367df7=_[_0xc2d2('0x63')](_0x450b5,[_0xc2d2('0x23'),_0x23f503['field']]);if(!_0x367df7){switch(_0x23f503['field']){case'unreadMessages':if(_0x23f503[_0xc2d2('0x64')]==0x1){_0x18805a[_0xc2d2('0x65')]('`'+_0x23f503[_0xc2d2('0x4d')]+_0xc2d2('0x66'));}else{_0x18805a['having']('`'+_0x23f503['field']+'`\x20>\x200');}break;case _0xc2d2('0x67'):if(_0x23f503[_0xc2d2('0x68')]==='$substring'){if(_0x23f503['value'][_0xc2d2('0x29')]('\x20')[_0xc2d2('0x46')]>0x1){_0x5f3c48[_0x3170df](_0xc2d2('0x69'),qs['getFullTextValue'](_0x23f503[_0xc2d2('0x64')]),null);}else{var _0x15ba2b='%'+_0x23f503[_0xc2d2('0x64')]+'%';_0x5f3c48[_0x3170df](_0xc2d2('0x6a'),_0x15ba2b,_0x15ba2b,_0x15ba2b);}}else{_0x367df7=_['find'](_0x450b5,['name',_0xc2d2('0x6b')]);_0x23f503[_0xc2d2('0x4d')]=_0xc2d2('0x6b');_0x367ebb=as[_0xc2d2('0x6c')](_0x1619d7,_0x367df7[_0xc2d2('0x3d')],_0x23f503);_0x5f3c48[_0x3170df](_0x367ebb[_0xc2d2('0x6d')],_0x367ebb[_0xc2d2('0x64')]['start'],_0x367ebb['value'][_0xc2d2('0x16')]);}break;case'Tag':var _0x5e3587=_0x23f503[_0xc2d2('0x64')][_0xc2d2('0x29')](',')['map'](function(_0x126fd8){return Number(_0x126fd8);});_0x5e3587['forEach'](function(_0x51f893){_0x244bbd['or'](_0xc2d2('0x6e'),'%,'+_0x51f893+',%');});_0x534db2=_[_0xc2d2('0x6f')](_0x534db2,_0x5e3587);break;case _0xc2d2('0x70'):if(_0x23f503['operator']===_0xc2d2('0x71')){_0x5f3c48[_0x3170df](_0xc2d2('0x72'),'%'+_0x23f503['value']+'%',null);}else{_0x367df7=_[_0xc2d2('0x63')](_0x450b5,['name',_0xc2d2('0x3a')]);_0x23f503[_0xc2d2('0x4d')]=_0xc2d2('0x3a');_0x367ebb=as['buildExpression'](_0x1619d7,_0x367df7['type'],_0x23f503);_0x5f3c48[_0x3170df](_0x367ebb[_0xc2d2('0x6d')],_0x367ebb['value'][_0xc2d2('0x73')],_0x367ebb['value']['end']);}break;case'plainBody':_0x367ebb=as[_0xc2d2('0x6c')]('me',null,_0x23f503);_0x5f3c48[_0x3170df](_0x367ebb['text'],_0x367ebb[_0xc2d2('0x64')]['start'],_0x367ebb[_0xc2d2('0x64')][_0xc2d2('0x16')]);break;}}else{var _0x367ebb=as[_0xc2d2('0x6c')](_0x1619d7,_0x367df7[_0xc2d2('0x3d')],_0x23f503);_0x5f3c48[_0x3170df](_0x367ebb[_0xc2d2('0x6d')],_0x367ebb['value'][_0xc2d2('0x73')],_0x367ebb[_0xc2d2('0x64')]['end']);}}}else{var _0xe3b660=_(_0x29d04b[_0xc2d2('0x41')])[_0xc2d2('0x40')]()['map'](function(_0xaa9604){return _[_0xc2d2('0x74')](_0x450b5,['name',_0xaa9604])?_0xaa9604:undefined;})[_0xc2d2('0x75')]()[_0xc2d2('0x64')]();if(!_[_0xc2d2('0x76')](_0xe3b660)){_0xe3b660[_0xc2d2('0x2a')](function(_0x11198b){if(_0x11198b===_0xc2d2('0x77')){_0x18805a['where']('i.MailAccountId\x20IN\x20?',[][_0xc2d2('0x78')](_0x29d04b[_0xc2d2('0x41')][_0x11198b]));}else if(_0x11198b===_0xc2d2('0x79')){var _0x4c4f85=JSON['parse'](_0x29d04b['query'][_0x11198b])[_0xc2d2('0x7a')];var _0x3cb5d5=JSON['parse'](_0x29d04b[_0xc2d2('0x41')][_0x11198b])[_0xc2d2('0x7b')];_0x18805a[_0xc2d2('0x7c')](_0xc2d2('0x7d'),_0x4c4f85,_0x3cb5d5);}else{if(_0x29d04b[_0xc2d2('0x41')][_0x11198b]===_0xc2d2('0x7e')){_0x18805a[_0xc2d2('0x7c')]('i.'+_0x11198b+_0xc2d2('0x7f'));}else{_0x18805a['where']('i.'+_0x11198b+'\x20=\x20?',_0x29d04b[_0xc2d2('0x41')][_0x11198b]);}}});}if(_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x80')]){if(_0x29d04b['query']['read']==0x1){_0x18805a['having']('`unreadMessages`\x20=\x200');}else{_0x18805a[_0xc2d2('0x65')](_0xc2d2('0x81'));}}if(_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x82')]){_0x534db2=_[_0xc2d2('0x83')](_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x82')])?_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x82')]:new Array(_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x82')]);_0x534db2[_0xc2d2('0x2a')](function(_0xa600e5){_0x244bbd['or'](_0xc2d2('0x6e'),'%,'+_0xa600e5+',%');});}if(_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x84')]){var _0x57eb9d=_0x29d04b[_0xc2d2('0x41')]['filter'][_0xc2d2('0x85')]('\x5c','\x5c\x5c')[_0xc2d2('0x85')](/'/g,'\x27\x27');if(qs[_0xc2d2('0x86')](_0x57eb9d)){_0x5f3c48['or'](_0xc2d2('0x87'),_0x57eb9d+'%');}else if(qs[_0xc2d2('0x88')](_0x57eb9d)){_0x5f3c48['or'](_0xc2d2('0x89'),_0x57eb9d+'%');}else{_0x5f3c48['or'](_0xc2d2('0x8a'),qs[_0xc2d2('0x8b')](_0x57eb9d))['or'](_0xc2d2('0x8c'),qs[_0xc2d2('0x8b')](_0x57eb9d));}}}_0x18805a['where'](_0x5f3c48);_0x18805a['group'](_0xc2d2('0x8d'));var _0x3689d7={'type':db['Sequelize'][_0xc2d2('0x8e')][_0xc2d2('0x8f')],'raw':!![]};var _0x37fddd=_0x18805a['clone']();_0x37fddd[_0xc2d2('0x4d')]('i.id');_0x37fddd[_0xc2d2('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xc2d2('0x90'));if(_0x38d236[_0xc2d2('0x49')]){_0x38d236['order'][_0xc2d2('0x2a')](function(_0x3325eb){var _0x417837=_0x3325eb[0x0]===_0xc2d2('0x91')?_0x3325eb[0x0]:'i.'+_0x3325eb[0x0];_0x18805a[_0xc2d2('0x49')](_0x417837,_0x3325eb[0x1]===_0xc2d2('0x92')?![]:!![]);});}if(!_['isEmpty'](_0x534db2)){_0x18805a[_0xc2d2('0x65')](_0x244bbd);_0x37fddd[_0xc2d2('0x7c')](_0xc2d2('0x93'),_0x534db2);}BPromise[_0xc2d2('0x94')]()[_0xc2d2('0x20')](function(){if(!_0x385d03){if(_0x29d04b[_0xc2d2('0x41')]['MailAccountId'])return;_0x37fddd['where'](_0xc2d2('0x95'));_0x18805a['where'](_0xc2d2('0x95'));return;}if(_0x29d04b['user'][_0xc2d2('0x96')]!=='agent')return;return _0x29d04b[_0xc2d2('0x97')][_0xc2d2('0x98')]({'attributes':['id'],'raw':!![]})['then'](function(_0x9b3471){if(_[_0xc2d2('0x76')](_0x9b3471)){_0x37fddd[_0xc2d2('0x7c')](_0xc2d2('0x99'));_0x18805a[_0xc2d2('0x7c')]('i.MailAccountId\x20IS\x20NULL');}else{_0x37fddd[_0xc2d2('0x7c')]('i.MailAccountId\x20IN\x20?',_[_0xc2d2('0x26')](_0x9b3471,'id'));_0x18805a['where'](_0xc2d2('0x9a'),_[_0xc2d2('0x26')](_0x9b3471,'id'));}});})[_0xc2d2('0x20')](function(){if(_0x29d04b[_0xc2d2('0x97')][_0xc2d2('0x96')]===_0xc2d2('0x9b')&&!_0x385d03&&!_0x29d04b[_0xc2d2('0x41')][_0xc2d2('0x77')])return[];return db[_0xc2d2('0x9c')][_0xc2d2('0x41')](_0x37fddd['toString'](),_0x3689d7);})[_0xc2d2('0x20')](function(_0x59a969){_0x379e58[_0xc2d2('0x1a')]=_0x59a969[_0xc2d2('0x46')];if(_0x379e58[_0xc2d2('0x1a')]===0x0)return[];return db[_0xc2d2('0x9c')][_0xc2d2('0x41')](_0x484e69[_0xc2d2('0x9d')](),_0x3689d7)[_0xc2d2('0x20')](function(_0x3edb04){_0x4b8e36=_[_0xc2d2('0x9e')](_0x3edb04,'id');_0x3689d7=_[_0xc2d2('0x9f')](_0x3689d7,{'model':db[_0xc2d2('0xa0')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x29d04b['query'][_0xc2d2('0x44')]){_0x38d236[_0xc2d2('0x45')]['forEach'](function(_0x36860e){_0x18805a[_0xc2d2('0x4d')]('i.'+_0x36860e);});}else{_0x18805a[_0xc2d2('0x4d')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xc2d2('0x90'));_0x18805a[_0xc2d2('0x4d')]('a.key',_0xc2d2('0xa1'));_0x18805a[_0xc2d2('0x4d')]('a.mandatoryDisposition',_0xc2d2('0xa2'));_0x18805a['field'](_0xc2d2('0xa3'),'contactName');_0x18805a['field'](_0xc2d2('0x8d'));_0x18805a[_0xc2d2('0x4d')]('i.createdAt');_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xa4'));_0x18805a['field']('i.closed');_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xa5'));_0x18805a[_0xc2d2('0x4d')]('i.attach');_0x18805a[_0xc2d2('0x4d')]('i.lastMsgAt');_0x18805a['field'](_0xc2d2('0xa6'));_0x18805a[_0xc2d2('0x4d')]('i.subject');_0x18805a[_0xc2d2('0x4d')]('i.disposition');_0x18805a[_0xc2d2('0x4d')]('i.secondDisposition');_0x18805a[_0xc2d2('0x4d')]('i.thirdDisposition');_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xa7'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xa8'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xa9'));_0x18805a[_0xc2d2('0x4d')]('i.MailAccountId');_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xaa'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xab'),_0xc2d2('0xac'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xad'),_0xc2d2('0xae'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xaf'),'Contact.email');_0x18805a['field'](_0xc2d2('0xb0'),_0xc2d2('0xb1'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xb2'),'Contact.mobile');_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xb3'),_0xc2d2('0xb4'));_0x18805a['field'](_0xc2d2('0xb5'),_0xc2d2('0xb6'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xb7'),_0xc2d2('0xb8'));_0x18805a[_0xc2d2('0x4d')](_0xc2d2('0xb9'),_0xc2d2('0x28'));}if(_0x38d236[_0xc2d2('0x19')])_0x18805a[_0xc2d2('0x19')](_0x38d236[_0xc2d2('0x19')]);if(_0x38d236[_0xc2d2('0x1b')])_0x18805a[_0xc2d2('0x1b')](_0x38d236['offset']);return db[_0xc2d2('0x9c')]['query'](_0x18805a['toString'](),_0x3689d7);})[_0xc2d2('0x20')](function(_0x2c9ac8){if(_0x2c9ac8['length']>0x0)_0x3aa6cb['where'](_0xc2d2('0xba'),_[_0xc2d2('0x26')](_0x2c9ac8,'id'));return db[_0xc2d2('0x9c')][_0xc2d2('0x41')](_0x3aa6cb[_0xc2d2('0x9d')](),_0x3689d7)[_0xc2d2('0x20')](function(_0x2ab0c9){var _0x382bc6=_[_0xc2d2('0xbb')](_0x2ab0c9,_0xc2d2('0xbc'));var _0x4b331e=[];return db[_0xc2d2('0xbd')][_0xc2d2('0x2e')]({'attributes':[_0xc2d2('0xbe')],'raw':!![]})['then'](function(_0x44d117){var _0x343d0d=_0x44d117['enableEmailPreview'];_0x2c9ac8[_0xc2d2('0x2a')](function(_0x5d7491){_0x4b331e[_0xc2d2('0x2c')](updateMailInteraction(_0x5d7491,_0x4b8e36,_0x382bc6,_0x343d0d));});return BPromise[_0xc2d2('0xbf')](_0x4b331e);});});});})[_0xc2d2('0x20')](function(_0x270d9d){_0x379e58['rows']=_0x270d9d;return _0x379e58;})[_0xc2d2('0x20')](respondWithFilteredResult(_0x2a27ff,_0x38d236))['catch'](handleError(_0x2a27ff,null));};exports['show']=function(_0xa7ed88,_0x3832ae){var _0x19ee8c={'raw':![],'where':{'id':_0xa7ed88[_0xc2d2('0xc0')]['id']}},_0x486437={};_0x486437['model']=_[_0xc2d2('0x40')](db[_0xc2d2('0xa0')][_0xc2d2('0x3c')]);_0x486437[_0xc2d2('0x41')]=_[_0xc2d2('0x40')](_0xa7ed88[_0xc2d2('0x41')]);_0x486437['filters']=_['intersection'](_0x486437[_0xc2d2('0x3f')],_0x486437[_0xc2d2('0x41')]);_0x19ee8c['attributes']=_[_0xc2d2('0x43')](_0x486437[_0xc2d2('0x3f')],qs[_0xc2d2('0x44')](_0xa7ed88['query'][_0xc2d2('0x44')]));_0x19ee8c[_0xc2d2('0x45')]=_0x19ee8c['attributes'][_0xc2d2('0x46')]?_0x19ee8c[_0xc2d2('0x45')]:_0x486437[_0xc2d2('0x3f')];if(_0xa7ed88[_0xc2d2('0x41')][_0xc2d2('0xc1')]){_0x19ee8c['include']=[{'all':!![]}];}_0x19ee8c=_['merge']({},_0x19ee8c,_0xa7ed88[_0xc2d2('0xc2')]);return db[_0xc2d2('0xa0')][_0xc2d2('0x63')](_0x19ee8c)[_0xc2d2('0x20')](handleEntityNotFound(_0x3832ae,null))[_0xc2d2('0x20')](respondWithResult(_0x3832ae,null))['catch'](handleError(_0x3832ae,null));};exports[_0xc2d2('0xc3')]=function(_0xf672a1,_0x1d335a){return db[_0xc2d2('0xa0')][_0xc2d2('0xc3')](_0xf672a1[_0xc2d2('0xc4')],{})['then'](respondWithResult(_0x1d335a,0xc9))[_0xc2d2('0x33')](handleError(_0x1d335a,null));};exports[_0xc2d2('0x1e')]=function(_0x45c027,_0x51b59b){if(_0x45c027[_0xc2d2('0xc4')]['id']){delete _0x45c027[_0xc2d2('0xc4')]['id'];}return db[_0xc2d2('0xa0')]['find']({'where':{'id':_0x45c027[_0xc2d2('0xc0')]['id']}})['then'](handleEntityNotFound(_0x51b59b,null))[_0xc2d2('0x20')](saveUpdates(_0x45c027[_0xc2d2('0xc4')],null))[_0xc2d2('0x20')](respondWithResult(_0x51b59b,null))['catch'](handleError(_0x51b59b,null));};exports['destroy']=function(_0x1b1ea8,_0x2349e8){return db['MailInteraction'][_0xc2d2('0x63')]({'where':{'id':_0x1b1ea8[_0xc2d2('0xc0')]['id']}})[_0xc2d2('0x20')](handleEntityNotFound(_0x2349e8,null))[_0xc2d2('0x20')](removeEntity(_0x2349e8,null))[_0xc2d2('0x33')](handleError(_0x2349e8,null));};exports[_0xc2d2('0xc5')]=function(_0x3aa96d,_0x111b6d){return db[_0xc2d2('0xa0')][_0xc2d2('0xc5')]()[_0xc2d2('0x20')](respondWithResult(_0x111b6d,null))[_0xc2d2('0x33')](handleError(_0x111b6d,null));};exports[_0xc2d2('0xc6')]=function(_0x5052f1,_0x2f02ed){return db[_0xc2d2('0x2d')][_0xc2d2('0x63')]({'where':{'id':_0x5052f1['params']['id']}})[_0xc2d2('0x20')](handleEntityNotFound(_0x2f02ed,null))[_0xc2d2('0x20')](function(_0x55ffbe){if(_0x55ffbe){return _0x55ffbe[_0xc2d2('0xc6')](_0x5052f1[_0xc2d2('0xc4')]['ids'],_['omit'](_0x5052f1[_0xc2d2('0xc4')],['ids','id'])||{});}})[_0xc2d2('0x20')](respondWithResult(_0x2f02ed,null))[_0xc2d2('0x33')](handleError(_0x2f02ed,null));};exports['getMessages']=function(_0x496bc5,_0xae961e){var _0x57073c={'raw':![],'where':{}};var _0x146889={};var _0x434cef={'count':0x0,'rows':[]};return db[_0xc2d2('0xa0')][_0xc2d2('0x2e')]({'where':{'id':_0x496bc5['params']['id']}})['then'](handleEntityNotFound(_0xae961e,null))['then'](function(_0x40e0ea){if(_0x40e0ea){_0x146889[_0xc2d2('0x3f')]=_['keys'](db['MailMessage'][_0xc2d2('0x3c')]);_0x146889['query']=_[_0xc2d2('0x40')](_0x496bc5[_0xc2d2('0x41')]);_0x146889[_0xc2d2('0x42')]=_[_0xc2d2('0x43')](_0x146889[_0xc2d2('0x3f')],_0x146889['query']);_0x57073c[_0xc2d2('0x45')]=_[_0xc2d2('0x43')](_0x146889['model'],qs[_0xc2d2('0x44')](_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x44')]));_0x57073c[_0xc2d2('0x45')]=_0x57073c[_0xc2d2('0x45')][_0xc2d2('0x46')]?_0x57073c['attributes']:_0x146889[_0xc2d2('0x3f')];if(!_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x47')](_0xc2d2('0x48'))){_0x57073c[_0xc2d2('0x19')]=qs['limit'](_0x496bc5['query'][_0xc2d2('0x19')]);_0x57073c[_0xc2d2('0x1b')]=qs[_0xc2d2('0x1b')](_0x496bc5[_0xc2d2('0x41')]['offset']);}_0x57073c[_0xc2d2('0x49')]=qs[_0xc2d2('0x4a')](_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x4a')]);_0x57073c['where']=qs[_0xc2d2('0x42')](_['pick'](_0x496bc5['query'],_0x146889['filters']));_0x57073c[_0xc2d2('0x7c')][_0xc2d2('0xbc')]=_0x40e0ea['id'];if(_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x84')]){_0x57073c[_0xc2d2('0x7c')]=_['merge'](_0x57073c[_0xc2d2('0x7c')],{'$or':_['map'](_0x57073c['attributes'],function(_0x1b3086){var _0x4f63fe={};_0x4f63fe[_0x1b3086]={'$like':'%'+_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x84')]+'%'};return _0x4f63fe;})});}if(_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x7a')]){var _0xc2544e=_0x496bc5[_0xc2d2('0x41')][_0xc2d2('0x7a')][_0xc2d2('0x29')](',');var _0x4c5a9d={};_0x4c5a9d[_0xc2544e[0x0]]={'$gte':moment(_0xc2544e[0x1])[_0xc2d2('0xc7')](_0xc2d2('0xc8'))};_0x57073c['where']=_['merge'](_0x57073c[_0xc2d2('0x7c')],_0x4c5a9d);}_0x57073c=_['merge']({},_0x57073c,_0x496bc5[_0xc2d2('0xc2')]);return db[_0xc2d2('0x2d')][_0xc2d2('0x1a')]({'where':_0x57073c[_0xc2d2('0x7c')]})['then'](function(_0x3752e8){_0x434cef['count']=_0x3752e8;if(_0x496bc5[_0xc2d2('0x41')]['includeAll']){_0x57073c['include']=[{'all':!![]}];}return db[_0xc2d2('0x2d')][_0xc2d2('0xc9')](_0x57073c);})['then'](function(_0x108400){if(_0x496bc5['query']['inlineCss']===_0xc2d2('0xca')){for(var _0x1015e0=0x0;_0x1015e0<_0x108400[_0xc2d2('0x46')];_0x1015e0++){_0x108400[_0x1015e0][_0xc2d2('0xc4')]=juice(_0x108400[_0x1015e0][_0xc2d2('0xc4')]);}}_0x434cef[_0xc2d2('0xcb')]=_0x108400;return _0x434cef;});}})[_0xc2d2('0x20')](respondWithFilteredResult(_0xae961e,_0x57073c))['catch'](handleError(_0xae961e,null));};exports[_0xc2d2('0xcc')]=function(_0x2b0da2,_0x1fa328){return db[_0xc2d2('0xa0')][_0xc2d2('0x63')]({'where':{'id':_0x2b0da2[_0xc2d2('0xc0')]['id']}})['then'](handleEntityNotFound(_0x1fa328,null))['then'](function(_0x34b4e7){if(_0x34b4e7){return _0x34b4e7[_0xc2d2('0xcd')](_0x2b0da2[_0xc2d2('0xc4')]['ids'],_['omit'](_0x2b0da2[_0xc2d2('0xc4')],[_0xc2d2('0xce'),'id'])||{})['spread'](function(){return db[_0xc2d2('0xcf')][_0xc2d2('0xc9')]({'attributes':['id',_0xc2d2('0x23'),_0xc2d2('0x4e')],'where':{'id':_0x2b0da2['body'][_0xc2d2('0xce')]}});})[_0xc2d2('0x20')](function(_0x2507d7){socket[_0xc2d2('0xd0')](_0xc2d2('0xd1'),{'id':Number(_0x2b0da2['params']['id']),'tags':_0x2507d7||[]});return{'id':Number(_0x2b0da2['params']['id']),'tags':_0x2507d7||[]};});}})['then'](respondWithResult(_0x1fa328,null))[_0xc2d2('0x33')](handleError(_0x1fa328,null));};exports[_0xc2d2('0xd2')]=function(_0x2d330b,_0x417964){return db[_0xc2d2('0xa0')][_0xc2d2('0x63')]({'where':{'id':_0x2d330b[_0xc2d2('0xc0')]['id']}})['then'](handleEntityNotFound(_0x417964,null))['then'](function(_0x5b5ce1){if(_0x5b5ce1){return _0x5b5ce1[_0xc2d2('0xd2')](_0x2d330b[_0xc2d2('0x41')][_0xc2d2('0xce')]);}})[_0xc2d2('0x20')](respondWithStatusCode(_0x417964,null))[_0xc2d2('0x33')](handleError(_0x417964,null));};exports[_0xc2d2('0xd3')]=function(_0x467a88,_0x4ecbff){var _0xe993e9=moment()[_0xc2d2('0xd4')]()['toString']();var _0x40538c=path['join'](config[_0xc2d2('0xd5')],_0xc2d2('0xd6'),'files',_0xc2d2('0xd7'));var _0x2a2caf=path['join'](config[_0xc2d2('0xd5')],_0xc2d2('0xd6'),_0xc2d2('0xd8'),_0xc2d2('0xd9'));var _0xcb8dfb=path[_0xc2d2('0xda')](_0x40538c,_0xe993e9);var _0xe02410=util[_0xc2d2('0xc7')](_0xc2d2('0xdb'),_0x467a88[_0xc2d2('0xc0')]['id'],_0xe993e9);var _0x27488e=path[_0xc2d2('0xda')](_0x40538c,_0xe02410);var _0x18ebb6=[];if(_0x467a88[_0xc2d2('0x41')]['attachments']){_0x18ebb6[_0xc2d2('0x2c')]({'model':db[_0xc2d2('0xdc')],'as':'Attachments','raw':!![]});}var _0xb91cb8=[{'model':db['MailMessage'],'as':'Messages','attributes':['id','body',_0xc2d2('0x4f'),'to','cc',_0xc2d2('0xdd'),'subject',_0xc2d2('0x79')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x18ebb6}];return db[_0xc2d2('0xa0')]['find']({'where':{'id':_0x467a88[_0xc2d2('0xc0')]['id']},'include':_0xb91cb8})[_0xc2d2('0x20')](handleEntityNotFound(_0x4ecbff,null))[_0xc2d2('0x20')](function(_0x3fd6ad){if(_0x3fd6ad&&_0x3fd6ad[_0xc2d2('0xde')]){var _0x45743b=_0x3fd6ad[_0xc2d2('0xdf')]({'plain':!![]});fs[_0xc2d2('0xe0')](_0xcb8dfb);return BPromise[_0xc2d2('0xe1')](_0x45743b['Messages'],function(_0x962d6c,_0x40fdfd){var _0x400251={'from':_0x962d6c['from'],'to':_0x962d6c['to'],'subject':_0x962d6c[_0xc2d2('0xe2')],'html':htmlEntities[_0xc2d2('0xe3')](_0x962d6c[_0xc2d2('0xc4')]),'headers':{'Date':moment(_0x962d6c[_0xc2d2('0x79')])[_0xc2d2('0xc7')](_0xc2d2('0xe4'))},'attachments':[]};if(_0x962d6c['cc']){_0x400251['headers']['Cc']=_0x962d6c['cc'];}if(_0x962d6c['bcc']){_0x400251[_0xc2d2('0xe5')][_0xc2d2('0xe6')]=_0x962d6c[_0xc2d2('0xdd')];}return new BPromise(function(_0x5856b8,_0x1e5aa6){if(_0x962d6c[_0xc2d2('0xe7')]){for(var _0x28b296=0x0;_0x28b296<_0x962d6c['Attachments'][_0xc2d2('0x46')];_0x28b296++){var _0x3449de=_0x962d6c['Attachments'][_0x28b296];var _0x5c6061=path[_0xc2d2('0xda')](_0x2a2caf,_0x3449de['basename']);if(fs[_0xc2d2('0xe8')](_0x5c6061)){_0x400251[_0xc2d2('0xd9')][_0xc2d2('0x2c')]({'name':_0x3449de[_0xc2d2('0x23')],'contentType':_0x3449de[_0xc2d2('0x3d')],'data':fs['readFileSync'](_0x5c6061)});}}}emlformat[_0xc2d2('0xe9')](_0x400251,function(_0x5c16eb,_0xb08cd4){if(_0x5c16eb)return _0x1e5aa6(_0x5c16eb);fs[_0xc2d2('0xea')](path[_0xc2d2('0xda')](_0xcb8dfb,util[_0xc2d2('0xc7')](_0xc2d2('0xeb'),_0x40fdfd)),_0xb08cd4);return _0x5856b8(_0xb08cd4);});});})['then'](function(){return new BPromise(function(_0x410e4b,_0x4c7d34){zipdir(_0xcb8dfb,{'saveTo':_0x27488e},function(_0x46a916,_0x3d4b7a){if(_0x46a916)return _0x4c7d34(_0x46a916);return _0x410e4b(_0x3d4b7a);});})['then'](function(){return new BPromise(function(_0x4d50ec,_0x911dc){rimraf(_0xcb8dfb,function(_0x22d6ed){if(_0x22d6ed)_0x911dc(_0x22d6ed);return _0x4d50ec();});});})['then'](function(){return _0x4ecbff[_0xc2d2('0xd3')](_0x27488e,_0xe02410,function(_0x1d2074){if(!_0x1d2074)fs[_0xc2d2('0xec')](_0x27488e);});});});}else{return _0x4ecbff['sendStatus'](0xc8);}})[_0xc2d2('0x33')](handleError(_0x4ecbff,null));};
\ No newline at end of file
index 29d1ef2..c3fec32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x458b=['setMaxListeners','update','remove','Users','findAll','then','setDataValue','length','emit','catch','exports','events','MailInteraction','../../mysqldb','MailMessage'];(function(_0x3438cf,_0x73b174){var _0x278698=function(_0xbba932){while(--_0xbba932){_0x3438cf['push'](_0x3438cf['shift']());}};_0x278698(++_0x73b174);}(_0x458b,0x1eb));var _0xb458=function(_0x4a22f3,_0x498fe8){_0x4a22f3=_0x4a22f3-0x0;var _0xe7eb07=_0x458b[_0x4a22f3];return _0xe7eb07;};'use strict';var EventEmitter=require(_0xb458('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0xb458('0x1')];var MailMessage=require(_0xb458('0x2'))['db'][_0xb458('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xb458('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb458('0x5'),'afterDestroy':_0xb458('0x6')};function emitEvent(_0x23e2ec){return function(_0x1b4e7b,_0x449297,_0x1abe24){_0x1b4e7b['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x5ca549){_0x1b4e7b['setDataValue'](_0xb458('0x7'),_0x5ca549['map'](function(_0x13efb2){return{'id':_0x13efb2['id']};}));return MailMessage[_0xb458('0x8')]({'where':{'MailInteractionId':_0x1b4e7b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb458('0x9')](function(_0x6bd0b1){_0x1b4e7b[_0xb458('0xa')]('unreadMessages',_0x6bd0b1[_0xb458('0xb')]);MailInteractionEvents[_0xb458('0xc')](_0x23e2ec+':'+_0x1b4e7b['id'],_0x1b4e7b);MailInteractionEvents[_0xb458('0xc')](_0x23e2ec,_0x1b4e7b);_0x1abe24(null);})[_0xb458('0xd')](_0x1abe24(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0xb458('0xe')]=MailInteractionEvents;
\ No newline at end of file
+var _0xa0c1=['emit','catch','hasOwnProperty','hook','events','MailInteraction','MailMessage','update','remove','getUsers','Users','findAll','then','setDataValue','length'];(function(_0x98f020,_0x4c1b82){var _0x3e5ec0=function(_0x334ce0){while(--_0x334ce0){_0x98f020['push'](_0x98f020['shift']());}};_0x3e5ec0(++_0x4c1b82);}(_0xa0c1,0x1c6));var _0x1a0c=function(_0x1ab1ad,_0x32888d){_0x1ab1ad=_0x1ab1ad-0x0;var _0x38a522=_0xa0c1[_0x1ab1ad];return _0x38a522;};'use strict';var EventEmitter=require(_0x1a0c('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x1a0c('0x1')];var MailMessage=require('../../mysqldb')['db'][_0x1a0c('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x1a0c('0x3'),'afterDestroy':_0x1a0c('0x4')};function emitEvent(_0xb037d3){return function(_0x1085b3,_0x2944c3,_0xecda8b){_0x1085b3[_0x1a0c('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x51d8a6){_0x1085b3['setDataValue'](_0x1a0c('0x6'),_0x51d8a6['map'](function(_0xbb6971){return{'id':_0xbb6971['id']};}));return MailMessage[_0x1a0c('0x7')]({'where':{'MailInteractionId':_0x1085b3['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1a0c('0x8')](function(_0x3bd13c){_0x1085b3[_0x1a0c('0x9')]('unreadMessages',_0x3bd13c[_0x1a0c('0xa')]);MailInteractionEvents[_0x1a0c('0xb')](_0xb037d3+':'+_0x1085b3['id'],_0x1085b3);MailInteractionEvents[_0x1a0c('0xb')](_0xb037d3,_0x1085b3);_0xecda8b(null);})[_0x1a0c('0xc')](_0xecda8b(null));};}for(var e in events){if(events[_0x1a0c('0xd')](e)){var event=events[e];MailInteraction[_0x1a0c('0xe')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 8af15c7..b57e9c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7599=['mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','models','get','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./mailInteraction.attributes','exports','MailInteraction'];(function(_0x5b0ff6,_0x241684){var _0x52a081=function(_0x52f701){while(--_0x52f701){_0x5b0ff6['push'](_0x5b0ff6['shift']());}};_0x52a081(++_0x241684);}(_0x7599,0xfb));var _0x9759=function(_0x13f4f9,_0x5e2b97){_0x13f4f9=_0x13f4f9-0x0;var _0x25b5f7=_0x7599[_0x13f4f9];return _0x25b5f7;};'use strict';var _=require('lodash');var util=require(_0x9759('0x0'));var logger=require(_0x9759('0x1'))(_0x9759('0x2'));var moment=require(_0x9759('0x3'));var BPromise=require('bluebird');var rp=require(_0x9759('0x4'));var fs=require('fs');var path=require(_0x9759('0x5'));var rimraf=require('rimraf');var config=require(_0x9759('0x6'));var attributes=require(_0x9759('0x7'));module[_0x9759('0x8')]=function(_0x44a358,_0x267334){return _0x44a358['define'](_0x9759('0x9'),attributes,{'tableName':_0x9759('0xa'),'paranoid':![],'indexes':[{'name':_0x9759('0xb'),'fields':[_0x9759('0xc'),'to'],'type':_0x9759('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x48e264,_0x5cdea7,_0x4d18d9){if(_0x48e264[_0x9759('0xe')]){_0x48e264[_0x9759('0xf')]=moment()['format'](_0x9759('0x10'));}if(_0x48e264[_0x9759('0x11')]){_0x48e264[_0x9759('0x12')]=moment()[_0x9759('0x13')](_0x9759('0x10'));}_0x4d18d9(null,_0x5cdea7);},'beforeUpdate':function(_0x1f2031,_0x1401c7,_0xc6bcc7){if(_0x1f2031[_0x9759('0x14')](_0x9759('0xe'))){_0x1f2031['substatusAt']=_0x1f2031[_0x9759('0xe')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x1f2031['changed'](_0x9759('0x11'))){_0x1f2031[_0x9759('0x12')]=moment()['format'](_0x9759('0x10'));_0x1f2031[_0x9759('0xe')]=null;_0x1f2031[_0x9759('0xf')]=null;}_0xc6bcc7(null,_0x1f2031);},'afterUpdate':function(_0xb88d1a,_0x1a2275,_0x52dfc4){var _0x23e9c0=_0x44a358[_0x9759('0x15')];var _0x264974=_0xb88d1a[_0x9759('0x16')]({'plain':!![]});if(_0x264974[_0x9759('0x11')]){return _0x23e9c0[_0x9759('0x17')][_0x9759('0x18')]({'read':!![]},{'where':{'MailInteractionId':_0x264974['id']}})[_0x9759('0x19')](function(){_0x52dfc4();})[_0x9759('0x1a')](function(_0xefd98d){_0x52dfc4(_0xefd98d);});}else{_0x52dfc4();}}},'charset':_0x9759('0x1b'),'collate':_0x9759('0x1c')});};
\ No newline at end of file
+var _0x6935=['update','then','catch','utf8mb4','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','./mailInteraction.attributes','exports','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','substatus','substatusAt','models','get','MailMessage'];(function(_0x1d3d1a,_0x2a3dde){var _0x4bc3ad=function(_0x534345){while(--_0x534345){_0x1d3d1a['push'](_0x1d3d1a['shift']());}};_0x4bc3ad(++_0x2a3dde);}(_0x6935,0xc1));var _0x5693=function(_0x4e3932,_0x2f7e21){_0x4e3932=_0x4e3932-0x0;var _0x551655=_0x6935[_0x4e3932];return _0x551655;};'use strict';var _=require(_0x5693('0x0'));var util=require(_0x5693('0x1'));var logger=require(_0x5693('0x2'))(_0x5693('0x3'));var moment=require('moment');var BPromise=require(_0x5693('0x4'));var rp=require(_0x5693('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5693('0x6'));var config=require('../../config/environment');var attributes=require(_0x5693('0x7'));module[_0x5693('0x8')]=function(_0x337869,_0x868a60){return _0x337869['define'](_0x5693('0x9'),attributes,{'tableName':_0x5693('0xa'),'paranoid':![],'indexes':[{'name':_0x5693('0xb'),'fields':['subject','to'],'type':_0x5693('0xc')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4d98b2,_0x218eaf,_0x2bdb8e){if(_0x4d98b2['substatus']){_0x4d98b2['substatusAt']=moment()['format'](_0x5693('0xd'));}if(_0x4d98b2[_0x5693('0xe')]){_0x4d98b2[_0x5693('0xf')]=moment()[_0x5693('0x10')](_0x5693('0xd'));}_0x2bdb8e(null,_0x218eaf);},'beforeUpdate':function(_0x1a51ae,_0x3d2c60,_0x3b1057){if(_0x1a51ae[_0x5693('0x11')](_0x5693('0x12'))){_0x1a51ae[_0x5693('0x13')]=_0x1a51ae['substatus']?moment()[_0x5693('0x10')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x1a51ae[_0x5693('0x11')]('closed')){_0x1a51ae[_0x5693('0xf')]=moment()['format'](_0x5693('0xd'));_0x1a51ae[_0x5693('0x12')]=null;_0x1a51ae['substatusAt']=null;}_0x3b1057(null,_0x1a51ae);},'afterUpdate':function(_0x386f8f,_0xde8805,_0x53de23){var _0x2cd13f=_0x337869[_0x5693('0x14')];var _0xf212d2=_0x386f8f[_0x5693('0x15')]({'plain':!![]});if(_0xf212d2[_0x5693('0xe')]){return _0x2cd13f[_0x5693('0x16')][_0x5693('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0xf212d2['id']}})[_0x5693('0x18')](function(){_0x53de23();})[_0x5693('0x19')](function(_0x437d3e){_0x53de23(_0x437d3e);});}else{_0x53de23();}}},'charset':_0x5693('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index fb1e0d6..55515ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9365=['moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','info','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','MailInteraction,\x20%s,\x20%s','message','result','catch','MailInteraction','update','body','options','raw','where','attributes','UpdateMailInteraction','find','omit','spread','AddTags','util'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x9365,0xe9));var _0x5936=function(_0x28b35b,_0x446d31){_0x28b35b=_0x28b35b-0x0;var _0x331d4f=_0x9365[_0x28b35b];return _0x331d4f;};'use strict';var _=require('lodash');var util=require(_0x5936('0x0'));var moment=require(_0x5936('0x1'));var BPromise=require('bluebird');var rs=require(_0x5936('0x2'));var fs=require('fs');var Redis=require(_0x5936('0x3'));var db=require(_0x5936('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5936('0x5'))('rpc');var config=require(_0x5936('0x6'));var jayson=require(_0x5936('0x7'));var client=jayson[_0x5936('0x8')]['http']({'port':0x232a});config[_0x5936('0x9')]=_['defaults'](config[_0x5936('0x9')],{'host':_0x5936('0xa'),'port':0x18eb});var socket=require(_0x5936('0xb'))(new Redis(config[_0x5936('0x9')]));require(_0x5936('0xc'))[_0x5936('0xd')](socket);function respondWithRpcPromise(_0x1867db,_0x13c8ad,_0x501f4d){return new BPromise(function(_0x2bf1f3,_0x1913da){return client[_0x5936('0xe')](_0x1867db,_0x501f4d)[_0x5936('0xf')](function(_0x4fb64a){logger[_0x5936('0x10')]('MailInteraction,\x20%s,\x20%s',_0x13c8ad,_0x5936('0x11'));logger[_0x5936('0x12')](_0x5936('0x13'),_0x13c8ad,_0x5936('0x11'),JSON[_0x5936('0x14')](_0x4fb64a));if(_0x4fb64a['error']){if(_0x4fb64a[_0x5936('0x15')][_0x5936('0x16')]===0x1f4){logger[_0x5936('0x15')](_0x5936('0x17'),_0x13c8ad,_0x4fb64a['error'][_0x5936('0x18')]);return _0x1913da(_0x4fb64a[_0x5936('0x15')][_0x5936('0x18')]);}logger[_0x5936('0x15')](_0x5936('0x17'),_0x13c8ad,_0x4fb64a['error'][_0x5936('0x18')]);return _0x2bf1f3(_0x4fb64a['error'][_0x5936('0x18')]);}else{logger['info'](_0x5936('0x17'),_0x13c8ad,'request\x20sent');_0x2bf1f3(_0x4fb64a[_0x5936('0x19')][_0x5936('0x18')]);}})[_0x5936('0x1a')](function(_0x52aa46){logger[_0x5936('0x15')]('MailInteraction,\x20%s,\x20%s',_0x13c8ad,_0x52aa46);_0x1913da(_0x52aa46);});});}exports['UpdateMailInteraction']=function(_0x552061){var _0x165489=this;return new Promise(function(_0x4988a9,_0x451b07){return db[_0x5936('0x1b')][_0x5936('0x1c')](_0x552061[_0x5936('0x1d')],{'raw':_0x552061[_0x5936('0x1e')]?_0x552061[_0x5936('0x1e')][_0x5936('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x552061['options']?_0x552061[_0x5936('0x1e')][_0x5936('0x20')]||null:null,'attributes':_0x552061[_0x5936('0x1e')]?_0x552061['options'][_0x5936('0x21')]||null:null,'limit':_0x552061[_0x5936('0x1e')]?_0x552061['options']['limit']||null:null})['then'](function(_0x5a7baf){logger[_0x5936('0x10')](_0x5936('0x22'),_0x552061);logger[_0x5936('0x12')](_0x5936('0x22'),_0x552061,JSON[_0x5936('0x14')](_0x5a7baf));_0x4988a9(_0x5a7baf);})[_0x5936('0x1a')](function(_0x925f09){logger['error'](_0x5936('0x22'),_0x925f09[_0x5936('0x18')],_0x552061);_0x451b07(_0x165489[_0x5936('0x15')](0x1f4,_0x925f09['message']));});});};exports['AddTagsToMailInteraction']=function(_0x5f1143){return new Promise(function(_0x943206,_0x57b928){return db['MailInteraction'][_0x5936('0x23')]({'where':_0x5f1143[_0x5936('0x1e')]?_0x5f1143[_0x5936('0x1e')][_0x5936('0x20')]||null:null})['then'](function(_0x24e1ba){if(_0x24e1ba){return _0x24e1ba['addTags'](_0x5f1143[_0x5936('0x1d')]['ids'],_[_0x5936('0x24')](_0x5f1143[_0x5936('0x1d')],['ids','id'])||{});}})[_0x5936('0x25')](function(_0x4a11a7){logger['info'](_0x5936('0x26'),_0x5f1143);logger[_0x5936('0x12')]('AddTags',_0x5f1143,JSON[_0x5936('0x14')](_0x4a11a7));_0x943206(_0x4a11a7);})['catch'](function(_0x528708){logger['error'](_0x5936('0x26'),_0x528708[_0x5936('0x18')],_0x5f1143);_0x57b928(_this[_0x5936('0x15')](0x1f4,_0x528708[_0x5936('0x18')]));});});};
\ No newline at end of file
+var _0x5d91=['./mailInteraction.socket','register','request','then','info','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','MailInteraction,\x20%s,\x20%s','UpdateMailInteraction','MailInteraction','update','body','options','raw','limit','catch','find','where','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x580045,_0x3c0c42){var _0x59ce97=function(_0x373b5d){while(--_0x373b5d){_0x580045['push'](_0x580045['shift']());}};_0x59ce97(++_0x3c0c42);}(_0x5d91,0xf8));var _0x15d9=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5d91[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x15d9('0x0'));var util=require(_0x15d9('0x1'));var moment=require(_0x15d9('0x2'));var BPromise=require(_0x15d9('0x3'));var rs=require(_0x15d9('0x4'));var fs=require('fs');var Redis=require(_0x15d9('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x15d9('0x6'));var logger=require(_0x15d9('0x7'))(_0x15d9('0x8'));var config=require(_0x15d9('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x15d9('0xa')][_0x15d9('0xb')]({'port':0x232a});config['redis']=_[_0x15d9('0xc')](config[_0x15d9('0xd')],{'host':_0x15d9('0xe'),'port':0x18eb});var socket=require(_0x15d9('0xf'))(new Redis(config[_0x15d9('0xd')]));require(_0x15d9('0x10'))[_0x15d9('0x11')](socket);function respondWithRpcPromise(_0x3884f1,_0x3ff04e,_0x1ff3dc){return new BPromise(function(_0x30ea99,_0x439a7a){return client[_0x15d9('0x12')](_0x3884f1,_0x1ff3dc)[_0x15d9('0x13')](function(_0x2b9e73){logger[_0x15d9('0x14')]('MailInteraction,\x20%s,\x20%s',_0x3ff04e,_0x15d9('0x15'));logger[_0x15d9('0x16')](_0x15d9('0x17'),_0x3ff04e,'request\x20sent',JSON[_0x15d9('0x18')](_0x2b9e73));if(_0x2b9e73[_0x15d9('0x19')]){if(_0x2b9e73['error'][_0x15d9('0x1a')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x3ff04e,_0x2b9e73[_0x15d9('0x19')][_0x15d9('0x1b')]);return _0x439a7a(_0x2b9e73[_0x15d9('0x19')][_0x15d9('0x1b')]);}logger['error']('MailInteraction,\x20%s,\x20%s',_0x3ff04e,_0x2b9e73[_0x15d9('0x19')][_0x15d9('0x1b')]);return _0x30ea99(_0x2b9e73[_0x15d9('0x19')][_0x15d9('0x1b')]);}else{logger['info']('MailInteraction,\x20%s,\x20%s',_0x3ff04e,_0x15d9('0x15'));_0x30ea99(_0x2b9e73[_0x15d9('0x1c')]['message']);}})['catch'](function(_0x4e37f0){logger[_0x15d9('0x19')](_0x15d9('0x1d'),_0x3ff04e,_0x4e37f0);_0x439a7a(_0x4e37f0);});});}exports[_0x15d9('0x1e')]=function(_0x27d468){var _0x4d483d=this;return new Promise(function(_0x14b75c,_0x390712){return db[_0x15d9('0x1f')][_0x15d9('0x20')](_0x27d468[_0x15d9('0x21')],{'raw':_0x27d468[_0x15d9('0x22')]?_0x27d468[_0x15d9('0x22')][_0x15d9('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27d468[_0x15d9('0x22')]?_0x27d468[_0x15d9('0x22')]['where']||null:null,'attributes':_0x27d468[_0x15d9('0x22')]?_0x27d468[_0x15d9('0x22')]['attributes']||null:null,'limit':_0x27d468['options']?_0x27d468['options'][_0x15d9('0x24')]||null:null})['then'](function(_0x1e9f05){logger[_0x15d9('0x14')]('UpdateMailInteraction',_0x27d468);logger[_0x15d9('0x16')]('UpdateMailInteraction',_0x27d468,JSON[_0x15d9('0x18')](_0x1e9f05));_0x14b75c(_0x1e9f05);})[_0x15d9('0x25')](function(_0x37a072){logger[_0x15d9('0x19')](_0x15d9('0x1e'),_0x37a072[_0x15d9('0x1b')],_0x27d468);_0x390712(_0x4d483d[_0x15d9('0x19')](0x1f4,_0x37a072[_0x15d9('0x1b')]));});});};exports['AddTagsToMailInteraction']=function(_0x47774c){return new Promise(function(_0x3ed0bf,_0x376d04){return db[_0x15d9('0x1f')][_0x15d9('0x26')]({'where':_0x47774c[_0x15d9('0x22')]?_0x47774c[_0x15d9('0x22')][_0x15d9('0x27')]||null:null})[_0x15d9('0x13')](function(_0x29ff87){if(_0x29ff87){return _0x29ff87[_0x15d9('0x28')](_0x47774c[_0x15d9('0x21')][_0x15d9('0x29')],_[_0x15d9('0x2a')](_0x47774c[_0x15d9('0x21')],['ids','id'])||{});}})['spread'](function(_0x2f432f){logger[_0x15d9('0x14')](_0x15d9('0x2b'),_0x47774c);logger[_0x15d9('0x16')](_0x15d9('0x2b'),_0x47774c,JSON['stringify'](_0x2f432f));_0x3ed0bf(_0x2f432f);})[_0x15d9('0x25')](function(_0x1c44f5){logger[_0x15d9('0x19')](_0x15d9('0x2b'),_0x1c44f5['message'],_0x47774c);_0x376d04(_this[_0x15d9('0x19')](0x1f4,_0x1c44f5[_0x15d9('0x1b')]));});});};
\ No newline at end of file
index 6d73bef..cb57479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd816=['save','remove','update','emit','removeListener','register','length','mailInteraction:','./mailInteraction.events'];(function(_0x1eb170,_0x57a773){var _0x4f01ed=function(_0x1e5576){while(--_0x1e5576){_0x1eb170['push'](_0x1eb170['shift']());}};_0x4f01ed(++_0x57a773);}(_0xd816,0xe9));var _0x6d81=function(_0x25ba1b,_0x222cbe){_0x25ba1b=_0x25ba1b-0x0;var _0x5d9b75=_0xd816[_0x25ba1b];return _0x5d9b75;};'use strict';var MailInteractionEvents=require(_0x6d81('0x0'));var events=[_0x6d81('0x1'),_0x6d81('0x2'),_0x6d81('0x3')];function createListener(_0x572e19,_0x443397){return function(_0xf3c154){_0x443397[_0x6d81('0x4')](_0x572e19,_0xf3c154);};}function removeListener(_0x34e01f,_0x5c2ade){return function(){MailInteractionEvents[_0x6d81('0x5')](_0x34e01f,_0x5c2ade);};}exports[_0x6d81('0x6')]=function(_0x5ed832){for(var _0x15adb6=0x0,_0x5eac9c=events[_0x6d81('0x7')];_0x15adb6<_0x5eac9c;_0x15adb6++){var _0x4f6b3d=events[_0x15adb6];var _0xc5880d=createListener(_0x6d81('0x8')+_0x4f6b3d,_0x5ed832);MailInteractionEvents['on'](_0x4f6b3d,_0xc5880d);}};
\ No newline at end of file
+var _0x4bde=['mailInteraction:','save','update','removeListener','register'];(function(_0x13d438,_0x202db8){var _0x334826=function(_0x135cf0){while(--_0x135cf0){_0x13d438['push'](_0x13d438['shift']());}};_0x334826(++_0x202db8);}(_0x4bde,0x1e6));var _0xe4bd=function(_0x45528b,_0x1a9cb3){_0x45528b=_0x45528b-0x0;var _0x3b77c7=_0x4bde[_0x45528b];return _0x3b77c7;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xe4bd('0x0'),'remove',_0xe4bd('0x1')];function createListener(_0x179fd3,_0x9ff413){return function(_0x5c95cd){_0x9ff413['emit'](_0x179fd3,_0x5c95cd);};}function removeListener(_0x22f919,_0xf76de3){return function(){MailInteractionEvents[_0xe4bd('0x2')](_0x22f919,_0xf76de3);};}exports[_0xe4bd('0x3')]=function(_0x32e09d){for(var _0x261a71=0x0,_0x5f21e6=events['length'];_0x261a71<_0x5f21e6;_0x261a71++){var _0x37bf6b=events[_0x261a71];var _0x2dfad6=createListener(_0xe4bd('0x4')+_0x37bf6b,_0x32e09d);MailInteractionEvents['on'](_0x37bf6b,_0x2dfad6);}};
\ No newline at end of file
index cf51f09..d291d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd49c=['fs-extra','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','download','post','tracked','mail','mailmessage:create','create','update','put','accept','/:id/reject','reject','delete','util','connect-timeout','express'];(function(_0x28081c,_0x29e897){var _0x314b52=function(_0x188af5){while(--_0x188af5){_0x28081c['push'](_0x28081c['shift']());}};_0x314b52(++_0x29e897);}(_0xd49c,0x1d8));var _0xcd49=function(_0x5f5544,_0x1b56df){_0x5f5544=_0x5f5544-0x0;var _0x141673=_0xd49c[_0x5f5544];return _0x141673;};'use strict';var multer=require('multer');var util=require(_0xcd49('0x0'));var path=require('path');var timeout=require(_0xcd49('0x1'));var express=require(_0xcd49('0x2'));var router=express['Router']();var fs_extra=require(_0xcd49('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xcd49('0x4'));var config=require('../../config/environment');var controller=require(_0xcd49('0x5'));router[_0xcd49('0x6')]('/',auth[_0xcd49('0x7')](),controller[_0xcd49('0x8')]);router[_0xcd49('0x6')](_0xcd49('0x9'),auth[_0xcd49('0x7')](),controller[_0xcd49('0xa')]);router[_0xcd49('0x6')](_0xcd49('0xb'),auth[_0xcd49('0x7')](),controller['show']);router[_0xcd49('0x6')](_0xcd49('0xc'),auth[_0xcd49('0x7')](),controller[_0xcd49('0xd')]);router[_0xcd49('0xe')]('/',auth[_0xcd49('0x7')](),interaction[_0xcd49('0xf')](_0xcd49('0x10'),_0xcd49('0x11')),controller[_0xcd49('0x12')]);router['put']('/:id',auth[_0xcd49('0x7')](),controller[_0xcd49('0x13')]);router[_0xcd49('0x14')]('/:id/accept',auth[_0xcd49('0x7')](),controller[_0xcd49('0x15')]);router['put'](_0xcd49('0x16'),auth[_0xcd49('0x7')](),controller[_0xcd49('0x17')]);router[_0xcd49('0x18')](_0xcd49('0xb'),auth[_0xcd49('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xaa1b=['/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','create','put','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','get','isAuthenticated','describe'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0xaa1b,0x123));var _0xbaa1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xaa1b[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xbaa1('0x0'));var util=require(_0xbaa1('0x1'));var path=require(_0xbaa1('0x2'));var timeout=require('connect-timeout');var express=require(_0xbaa1('0x3'));var router=express['Router']();var fs_extra=require(_0xbaa1('0x4'));var auth=require(_0xbaa1('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./mailMessage.controller');router[_0xbaa1('0x6')]('/',auth[_0xbaa1('0x7')](),controller['index']);router[_0xbaa1('0x6')]('/describe',auth[_0xbaa1('0x7')](),controller[_0xbaa1('0x8')]);router[_0xbaa1('0x6')](_0xbaa1('0x9'),auth[_0xbaa1('0x7')](),controller[_0xbaa1('0xa')]);router['get'](_0xbaa1('0xb'),auth[_0xbaa1('0x7')](),controller[_0xbaa1('0xc')]);router[_0xbaa1('0xd')]('/',auth[_0xbaa1('0x7')](),interaction[_0xbaa1('0xe')](_0xbaa1('0xf'),_0xbaa1('0x10')),controller[_0xbaa1('0x11')]);router[_0xbaa1('0x12')](_0xbaa1('0x9'),auth[_0xbaa1('0x7')](),controller['update']);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0xbaa1('0x13')]);router[_0xbaa1('0x12')](_0xbaa1('0x14'),auth[_0xbaa1('0x7')](),controller[_0xbaa1('0x15')]);router[_0xbaa1('0x16')](_0xbaa1('0x9'),auth[_0xbaa1('0x7')](),controller[_0xbaa1('0x17')]);module[_0xbaa1('0x18')]=router;
\ No newline at end of file
index 20b34d9..b801602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda50=['Chat','lodash','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE','Email'];(function(_0x33f1f1,_0x3f2a10){var _0x3052d4=function(_0x2d62ad){while(--_0x2d62ad){_0x33f1f1['push'](_0x33f1f1['shift']());}};_0x3052d4(++_0x3f2a10);}(_0xda50,0x1c4));var _0x0da5=function(_0x1de742,_0x239b5a){_0x1de742=_0x1de742-0x0;var _0xd76284=_0xda50[_0x1de742];return _0xd76284;};'use strict';var Sequelize=require('sequelize');var _=require(_0x0da5('0x0'));module['exports']={'body':{'type':Sequelize[_0x0da5('0x1')](_0x0da5('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x0da5('0x3'))},'read':{'type':Sequelize[_0x0da5('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0da5('0x5')]('in',_0x0da5('0x6')),'defaultValue':_0x0da5('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x0da5('0x7')](0x1fe)},'from':{'type':Sequelize[_0x0da5('0x7')]},'to':{'type':Sequelize[_0x0da5('0x1')](_0x0da5('0x2'))},'cc':{'type':Sequelize['TEXT']('long')},'bcc':{'type':Sequelize[_0x0da5('0x1')]('long')},'subject':{'type':Sequelize[_0x0da5('0x1')]},'sentAt':{'type':Sequelize[_0x0da5('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x0da5('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x0da5('0x8')]},'originTo':{'type':Sequelize[_0x0da5('0x1')](_0x0da5('0x2'))},'originCc':{'type':Sequelize['TEXT'](_0x0da5('0x2'))},'originChannel':{'type':Sequelize[_0x0da5('0x5')](_0x0da5('0x9'),_0x0da5('0xa')),'defaultValue':_0x0da5('0x9'),'allowNull':![]}};
\ No newline at end of file
+var _0x55f9=['lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Email','sequelize'];(function(_0xcba83a,_0x910f9d){var _0x174c2c=function(_0x2a5974){while(--_0x2a5974){_0xcba83a['push'](_0xcba83a['shift']());}};_0x174c2c(++_0x910f9d);}(_0x55f9,0x16b));var _0x955f=function(_0x1f7552,_0x5bdd1e){_0x1f7552=_0x1f7552-0x0;var _0x5b848b=_0x55f9[_0x1f7552];return _0x5b848b;};'use strict';var Sequelize=require(_0x955f('0x0'));var _=require(_0x955f('0x1'));module[_0x955f('0x2')]={'body':{'type':Sequelize[_0x955f('0x3')](_0x955f('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x955f('0x3')](_0x955f('0x5'))},'read':{'type':Sequelize[_0x955f('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0x955f('0x7')]('in',_0x955f('0x8')),'defaultValue':_0x955f('0x8'),'allowNull':![]},'messageId':{'type':Sequelize[_0x955f('0x9')](0x1fe)},'from':{'type':Sequelize[_0x955f('0x9')]},'to':{'type':Sequelize[_0x955f('0x3')](_0x955f('0x4'))},'cc':{'type':Sequelize['TEXT'](_0x955f('0x4'))},'bcc':{'type':Sequelize[_0x955f('0x3')](_0x955f('0x4'))},'subject':{'type':Sequelize[_0x955f('0x3')]},'sentAt':{'type':Sequelize[_0x955f('0xa')]},'attach':{'type':Sequelize[_0x955f('0xb')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x955f('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x955f('0xa')]},'originTo':{'type':Sequelize['TEXT']('long')},'originCc':{'type':Sequelize[_0x955f('0x3')](_0x955f('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0x955f('0xc'),'Chat'),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index e80ecb5..7829c92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ff1=['basename','existsSync','push','readFileSync','build','writeFileSync','download','unlinkSync','eml-format','moment','bluebird','util','path','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','jayson/promise','client','http','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','offset','undefined','limit','set','Content-Range','update','then','destroy','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','merge','options','count','include','findAll','rows','show','params','find','body','describe','create','direction','out','secret','split','findOne','CmList','List','CmContact','Contacts','updatedAt','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','root','server/files/attachments','ListId','List\x20not\x20found','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','read','readAt','format','UserId','agent','get','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','SIP/%s','channel','event','fromString','EventManager','acceptmessage','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','User','motionChannel','rejectmessage','unix','toString','join','server','tmp','files','message-%s.eml','from','bcc','subject','createdAt','Attachment','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Attachments'];(function(_0x44d869,_0x49425f){var _0x1ed521=function(_0x2c2968){while(--_0x2c2968){_0x44d869['push'](_0x44d869['shift']());}};_0x1ed521(++_0x49425f);}(_0x2ff1,0xb1));var _0x12ff=function(_0x5adf67,_0x55b2bb){_0x5adf67=_0x5adf67-0x0;var _0x3c7b44=_0x2ff1[_0x5adf67];return _0x3c7b44;};'use strict';var emlformat=require(_0x12ff('0x0'));var moment=require(_0x12ff('0x1'));var BPromise=require(_0x12ff('0x2'));var util=require(_0x12ff('0x3'));var path=require(_0x12ff('0x4'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var htmlToText=require('html-to-text');var qs=require(_0x12ff('0x5'));var logger=require(_0x12ff('0x6'))(_0x12ff('0x7'));var interaction_log=require('../../config/logger')(_0x12ff('0x8'));var config=require(_0x12ff('0x9'));var db=require(_0x12ff('0xa'))['db'];config[_0x12ff('0xb')]=_[_0x12ff('0xc')](config[_0x12ff('0xb')],{'host':_0x12ff('0xd'),'port':0x18eb});var socket=require(_0x12ff('0xe'))(new Redis(config[_0x12ff('0xb')]));var htmlEntities=require('html-entities');require(_0x12ff('0xf'))['register'](socket);var jayson=require(_0x12ff('0x10'));var client=jayson[_0x12ff('0x11')][_0x12ff('0x12')]({'port':0x232c});var client9003=jayson[_0x12ff('0x11')]['http']({'port':0x232b});var client9002=jayson['client'][_0x12ff('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x3f305e,_0x172efa,_0x141888,_0x10da3c){return new BPromise(function(_0xb42c22,_0x25501a){var _0x4e1649=_0x10da3c||client;return _0x4e1649['request'](_0x3f305e,_0x141888)['then'](function(_0x159b7e){logger[_0x12ff('0x13')](_0x12ff('0x14'),_0x172efa,_0x12ff('0x15'));logger[_0x12ff('0x16')](_0x12ff('0x17'),_0x172efa,_0x12ff('0x15'),JSON[_0x12ff('0x18')](_0x159b7e));if(_0x159b7e['error']){if(_0x159b7e[_0x12ff('0x19')][_0x12ff('0x1a')]===0x1f4){logger['error'](_0x12ff('0x14'),_0x172efa,_0x159b7e[_0x12ff('0x19')]['message']);return _0x25501a(_0x159b7e[_0x12ff('0x19')][_0x12ff('0x1b')]);}logger['error'](_0x12ff('0x14'),_0x172efa,_0x159b7e[_0x12ff('0x19')][_0x12ff('0x1b')]);return _0xb42c22(_0x159b7e[_0x12ff('0x19')]['message']);}else{logger[_0x12ff('0x13')](_0x12ff('0x14'),_0x172efa,_0x12ff('0x15'));_0xb42c22(_0x159b7e[_0x12ff('0x1c')][_0x12ff('0x1b')]);}})[_0x12ff('0x1d')](function(_0x35895d){logger[_0x12ff('0x19')](_0x12ff('0x14'),_0x172efa,_0x35895d);_0x25501a(_0x35895d);});});}function respondWithResult(_0x4357a0,_0x3f5be3){_0x3f5be3=_0x3f5be3||0xc8;return function(_0x95c85c){if(_0x95c85c){return _0x4357a0[_0x12ff('0x1e')](_0x3f5be3)[_0x12ff('0x1f')](_0x95c85c);}};}function respondWithFilteredResult(_0x403817,_0x59ee9d){return function(_0x24f8f2){if(_0x24f8f2){var _0xda7e0c=typeof _0x59ee9d[_0x12ff('0x20')]===_0x12ff('0x21')&&typeof _0x59ee9d[_0x12ff('0x22')]===_0x12ff('0x21');var _0xb5a53c=_0x24f8f2['count'];var _0x2be3f8=_0xda7e0c?0x0:_0x59ee9d[_0x12ff('0x20')];var _0x52a5d7=_0xda7e0c?_0x24f8f2['count']:_0x59ee9d[_0x12ff('0x20')]+_0x59ee9d[_0x12ff('0x22')];var _0x582b78;if(_0x52a5d7>=_0xb5a53c){_0x52a5d7=_0xb5a53c;_0x582b78=0xc8;}else{_0x582b78=0xce;}_0x403817[_0x12ff('0x1e')](_0x582b78);return _0x403817[_0x12ff('0x23')](_0x12ff('0x24'),_0x2be3f8+'-'+_0x52a5d7+'/'+_0xb5a53c)[_0x12ff('0x1f')](_0x24f8f2);}return null;};}function saveUpdates(_0x3b3a6b){return function(_0x311063){if(_0x311063){return _0x311063[_0x12ff('0x25')](_0x3b3a6b)[_0x12ff('0x26')](function(_0x11a80b){return _0x11a80b;});}return null;};}function removeEntity(_0x59b6b8){return function(_0x445fe3){if(_0x445fe3){return _0x445fe3[_0x12ff('0x27')]()[_0x12ff('0x26')](function(){_0x59b6b8[_0x12ff('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12660e){return function(_0x1f6f5c){if(!_0x1f6f5c){_0x12660e[_0x12ff('0x28')](0x194);}return _0x1f6f5c;};}function handleError(_0x25f24b,_0xb51fdf){_0xb51fdf=_0xb51fdf||0x1f4;return function(_0x31b78a){logger[_0x12ff('0x19')](_0x31b78a[_0x12ff('0x29')]);if(_0x31b78a[_0x12ff('0x2a')]){delete _0x31b78a['name'];}_0x25f24b['status'](_0xb51fdf)['send'](_0x31b78a);};}exports[_0x12ff('0x2b')]=function(_0x37d2d9,_0x20e0a5){var _0x43589f={},_0x462abf={},_0x4725fe={'count':0x0,'rows':[]};var _0x2ed252=_[_0x12ff('0x2c')](db[_0x12ff('0x2d')][_0x12ff('0x2e')],function(_0x3d609e){return{'name':_0x3d609e[_0x12ff('0x2f')],'type':_0x3d609e[_0x12ff('0x30')][_0x12ff('0x31')]};});_0x462abf['model']=_[_0x12ff('0x2c')](_0x2ed252,_0x12ff('0x2a'));_0x462abf[_0x12ff('0x32')]=_[_0x12ff('0x33')](_0x37d2d9[_0x12ff('0x32')]);_0x462abf[_0x12ff('0x34')]=_[_0x12ff('0x35')](_0x462abf[_0x12ff('0x36')],_0x462abf[_0x12ff('0x32')]);_0x43589f[_0x12ff('0x37')]=_[_0x12ff('0x35')](_0x462abf[_0x12ff('0x36')],qs[_0x12ff('0x38')](_0x37d2d9[_0x12ff('0x32')]['fields']));_0x43589f[_0x12ff('0x37')]=_0x43589f[_0x12ff('0x37')][_0x12ff('0x39')]?_0x43589f[_0x12ff('0x37')]:_0x462abf[_0x12ff('0x36')];if(!_0x37d2d9[_0x12ff('0x32')][_0x12ff('0x3a')](_0x12ff('0x3b'))){_0x43589f[_0x12ff('0x22')]=qs[_0x12ff('0x22')](_0x37d2d9[_0x12ff('0x32')][_0x12ff('0x22')]);_0x43589f[_0x12ff('0x20')]=qs[_0x12ff('0x20')](_0x37d2d9[_0x12ff('0x32')]['offset']);}_0x43589f[_0x12ff('0x3c')]=qs[_0x12ff('0x3d')](_0x37d2d9['query'][_0x12ff('0x3d')]);_0x43589f[_0x12ff('0x3e')]=qs[_0x12ff('0x34')](_['pick'](_0x37d2d9['query'],_0x462abf[_0x12ff('0x34')]),_0x2ed252);if(_0x37d2d9[_0x12ff('0x32')]['filter']){_0x43589f['where']=_['merge'](_0x43589f['where'],{'$or':_[_0x12ff('0x2c')](_0x2ed252,function(_0x436dde){if(_0x436dde['type']!==_0x12ff('0x3f')){var _0x46dfc2={};_0x46dfc2[_0x436dde[_0x12ff('0x2a')]]={'$like':'%'+_0x37d2d9['query']['filter']+'%'};return _0x46dfc2;}})});}_0x43589f=_[_0x12ff('0x40')]({},_0x43589f,_0x37d2d9[_0x12ff('0x41')]);var _0x58d4e4={'where':_0x43589f[_0x12ff('0x3e')]};return db[_0x12ff('0x2d')][_0x12ff('0x42')](_0x58d4e4)['then'](function(_0x3d2895){_0x4725fe[_0x12ff('0x42')]=_0x3d2895;if(_0x37d2d9[_0x12ff('0x32')]['includeAll']){_0x43589f[_0x12ff('0x43')]=[{'all':!![]}];}return db['MailMessage'][_0x12ff('0x44')](_0x43589f);})[_0x12ff('0x26')](function(_0xd8b817){_0x4725fe[_0x12ff('0x45')]=_0xd8b817;return _0x4725fe;})[_0x12ff('0x26')](respondWithFilteredResult(_0x20e0a5,_0x43589f))[_0x12ff('0x1d')](handleError(_0x20e0a5,null));};exports[_0x12ff('0x46')]=function(_0x3b651a,_0x23c5fc){var _0x4791c9={'raw':!![],'where':{'id':_0x3b651a[_0x12ff('0x47')]['id']}},_0x5ebfca={};_0x5ebfca[_0x12ff('0x36')]=_['keys'](db[_0x12ff('0x2d')][_0x12ff('0x2e')]);_0x5ebfca[_0x12ff('0x32')]=_['keys'](_0x3b651a[_0x12ff('0x32')]);_0x5ebfca[_0x12ff('0x34')]=_[_0x12ff('0x35')](_0x5ebfca[_0x12ff('0x36')],_0x5ebfca[_0x12ff('0x32')]);_0x4791c9[_0x12ff('0x37')]=_[_0x12ff('0x35')](_0x5ebfca[_0x12ff('0x36')],qs[_0x12ff('0x38')](_0x3b651a[_0x12ff('0x32')][_0x12ff('0x38')]));_0x4791c9[_0x12ff('0x37')]=_0x4791c9[_0x12ff('0x37')][_0x12ff('0x39')]?_0x4791c9[_0x12ff('0x37')]:_0x5ebfca[_0x12ff('0x36')];if(_0x3b651a[_0x12ff('0x32')]['includeAll']){_0x4791c9['include']=[{'all':!![]}];}_0x4791c9=_['merge']({},_0x4791c9,_0x3b651a[_0x12ff('0x41')]);return db[_0x12ff('0x2d')][_0x12ff('0x48')](_0x4791c9)[_0x12ff('0x26')](handleEntityNotFound(_0x23c5fc,null))[_0x12ff('0x26')](respondWithResult(_0x23c5fc,null))[_0x12ff('0x1d')](handleError(_0x23c5fc,null));};exports[_0x12ff('0x25')]=function(_0x5dca23,_0x40c784){if(_0x5dca23[_0x12ff('0x49')]['id']){delete _0x5dca23[_0x12ff('0x49')]['id'];}return db['MailMessage'][_0x12ff('0x48')]({'where':{'id':_0x5dca23[_0x12ff('0x47')]['id']}})[_0x12ff('0x26')](handleEntityNotFound(_0x40c784,null))[_0x12ff('0x26')](saveUpdates(_0x5dca23[_0x12ff('0x49')],null))[_0x12ff('0x26')](respondWithResult(_0x40c784,null))[_0x12ff('0x1d')](handleError(_0x40c784,null));};exports[_0x12ff('0x27')]=function(_0x3aa1a7,_0x2601ee){return db[_0x12ff('0x2d')][_0x12ff('0x48')]({'where':{'id':_0x3aa1a7[_0x12ff('0x47')]['id']}})[_0x12ff('0x26')](handleEntityNotFound(_0x2601ee,null))[_0x12ff('0x26')](removeEntity(_0x2601ee,null))[_0x12ff('0x1d')](handleError(_0x2601ee,null));};exports[_0x12ff('0x4a')]=function(_0x218950,_0x310f8b){return db[_0x12ff('0x2d')][_0x12ff('0x4a')]()[_0x12ff('0x26')](respondWithResult(_0x310f8b,null))['catch'](handleError(_0x310f8b,null));};exports[_0x12ff('0x4b')]=function(_0x28ca1a,_0x58d461){return db[_0x12ff('0x2d')]['create'](_0x28ca1a[_0x12ff('0x49')])[_0x12ff('0x26')](function(_0x17417b){if(_0x17417b){if(_0x17417b[_0x12ff('0x4c')]===_0x12ff('0x4d')&&!_0x17417b[_0x12ff('0x4e')]){var _0x971d55,_0x4ec44f,_0x1f610e;if(_0x28ca1a[_0x12ff('0x49')]['to']){_0x4ec44f=_0x28ca1a[_0x12ff('0x49')]['to'][_0x12ff('0x4f')](',')[0x0];}return db['MailAccount'][_0x12ff('0x50')]({'where':{'id':_0x17417b['MailAccountId']},'include':[{'model':db[_0x12ff('0x51')],'as':_0x12ff('0x52'),'include':[{'model':db[_0x12ff('0x53')],'as':_0x12ff('0x54'),'where':{'email':_0x4ec44f},'limit':0x1,'order':[[_0x12ff('0x55'),'DESC']]}]},{'model':db[_0x12ff('0x56')],'as':_0x12ff('0x57'),'raw':!![]}]})[_0x12ff('0x26')](function(_0x5250b0){_0x971d55=_0x5250b0;if(_0x971d55&&_0x971d55['Smtp']){var _0x207955={'tls':{'rejectUnauthorized':![]}};if(_[_0x12ff('0x58')](_0x971d55[_0x12ff('0x57')][_0x12ff('0x59')])){_0x207955[_0x12ff('0x5a')]=_0x971d55[_0x12ff('0x57')][_0x12ff('0x5a')];_0x207955[_0x12ff('0x5b')]=_0x971d55[_0x12ff('0x57')][_0x12ff('0x5b')];_0x207955[_0x12ff('0x5c')]=_0x971d55['Smtp']['secure'];if(_0x971d55['Smtp'][_0x12ff('0x5d')]){_0x207955[_0x12ff('0x5e')]={'user':_0x971d55[_0x12ff('0x57')][_0x12ff('0x5f')],'pass':_0x971d55['Smtp'][_0x12ff('0x60')]};}}else{_0x207955[_0x12ff('0x59')]=_0x971d55[_0x12ff('0x57')][_0x12ff('0x59')];_0x207955[_0x12ff('0x5e')]={'user':_0x971d55['Smtp'][_0x12ff('0x5f')],'pass':_0x971d55[_0x12ff('0x57')][_0x12ff('0x60')]};_0x207955['secure']=_0x971d55[_0x12ff('0x57')][_0x12ff('0x5c')];}if(_0x28ca1a['body'][_0x12ff('0x61')]&&_0x28ca1a['body'][_0x12ff('0x61')]['length']){for(var _0x5c2f35=0x0;_0x5c2f35<_0x28ca1a[_0x12ff('0x49')]['attachments']['length'];_0x5c2f35+=0x1){_0x28ca1a[_0x12ff('0x49')][_0x12ff('0x61')][_0x5c2f35]={'filename':_0x28ca1a[_0x12ff('0x49')][_0x12ff('0x61')][_0x5c2f35][_0x12ff('0x2a')],'path':path['join'](config[_0x12ff('0x62')],_0x12ff('0x63'),_0x28ca1a[_0x12ff('0x49')][_0x12ff('0x61')][_0x5c2f35]['basename'])};}}_0x1f610e={'account':_0x207955,'message':_0x28ca1a[_0x12ff('0x49')]};return;}})['then'](function(){if(_0x971d55[_0x12ff('0x52')]){if(_0x971d55[_0x12ff('0x52')]['Contacts'][_0x12ff('0x39')]){return _0x971d55[_0x12ff('0x52')][_0x12ff('0x54')][0x0];}else{return db[_0x12ff('0x53')][_0x12ff('0x4b')](_[_0x12ff('0xc')](_0x28ca1a[_0x12ff('0x49')],{'firstName':_0x28ca1a[_0x12ff('0x49')]['to'],'email':_0x28ca1a[_0x12ff('0x49')]['to'],'phone':_0x28ca1a[_0x12ff('0x49')]['to'],'ListId':_0x971d55[_0x12ff('0x64')]}));}}else{throw new Error(_0x12ff('0x65'));}})['then'](function(){if(_0x1f610e){return respondWithRpcPromise('SendMail',_0x12ff('0x66'),_0x1f610e,client9003)[_0x12ff('0x26')](function(_0x473fad){return _0x17417b[_0x12ff('0x25')]({'read':!![],'messageId':_0x473fad[_0x12ff('0x67')],'sentAt':moment()['format'](_0x12ff('0x68'))});})[_0x12ff('0x1d')](function(_0x7a64eb){logger[_0x12ff('0x19')]('%s',JSON['stringify'](_0x7a64eb));return _0x17417b;});}return _0x17417b;});}return _0x17417b;}})['then'](respondWithResult(_0x58d461,0xc9))[_0x12ff('0x1d')](handleError(_0x58d461,null));};exports[_0x12ff('0x69')]=function(_0xb87ede,_0x2f3cf3){var _0x2c2ef8={'agent':{},'channel':_0x12ff('0x6a')};if(_0xb87ede[_0x12ff('0x49')]['id']){delete _0xb87ede[_0x12ff('0x49')]['id'];}_0xb87ede[_0x12ff('0x49')][_0x12ff('0x6b')]=!![];_0xb87ede['body'][_0x12ff('0x6c')]=moment()[_0x12ff('0x6d')](_0x12ff('0x68'));_0xb87ede[_0x12ff('0x49')][_0x12ff('0x6e')]=_0xb87ede['body']['UserId']||_0xb87ede[_0x12ff('0x5f')]['id'];_0x2c2ef8[_0x12ff('0x6f')]['id']=_0xb87ede['body'][_0x12ff('0x6e')];return db[_0x12ff('0x2d')][_0x12ff('0x48')]({'where':{'id':_0xb87ede[_0x12ff('0x47')]['id'],'UserId':null}})[_0x12ff('0x26')](handleEntityNotFound(_0x2f3cf3,null))[_0x12ff('0x26')](saveUpdates(_0xb87ede[_0x12ff('0x49')],null))[_0x12ff('0x26')](function(_0x4410db){if(_0x4410db){_0x2c2ef8[_0x12ff('0x1b')]=_0x4410db[_0x12ff('0x70')]({'plain':!![]});return db['MailInteraction'][_0x12ff('0x48')]({'where':{'id':_0x4410db[_0x12ff('0x71')]}});}return null;})['then'](handleEntityNotFound(_0x2f3cf3,null))[_0x12ff('0x26')](function(_0x1ac46e){if(_0x1ac46e){return _0x1ac46e[_0x12ff('0x25')]({'UserId':_0xb87ede[_0x12ff('0x49')][_0x12ff('0x6e')],'read1stAt':_[_0x12ff('0x58')](_0x1ac46e[_0x12ff('0x72')])?moment()[_0x12ff('0x6d')](_0x12ff('0x68')):undefined});}return null;})[_0x12ff('0x26')](function(_0x318c0e){if(_0x318c0e){_0x2c2ef8[_0x12ff('0x73')]=_0x318c0e[_0x12ff('0x70')]({'plain':!![]});interaction_log[_0x12ff('0x13')](_0x12ff('0x74'),_0xb87ede['user']['id'],_0xb87ede[_0x12ff('0x5f')][_0x12ff('0x2a')],_0xb87ede[_0x12ff('0x5f')][_0x12ff('0x75')],_0x2c2ef8['interaction']['id'],_0xb87ede[_0x12ff('0x49')]?JSON['stringify'](_0xb87ede['body']):_0x12ff('0x76'));return respondWithRpcPromise('AcceptMessage',_0x12ff('0x77'),_0x2c2ef8);}return null;})[_0x12ff('0x26')](function(_0x326b9f){var _0xc2bee9=_0x12ff('0x78')+_0x326b9f[_0x12ff('0x1b')][_0x12ff('0x79')];return db[_0x12ff('0x7a')][_0x12ff('0x32')](_0xc2bee9,{'type':db[_0x12ff('0x7b')][_0x12ff('0x7c')][_0x12ff('0x7d')],'raw':!![]})[_0x12ff('0x26')](function(_0x466609){return _0x466609;});})[_0x12ff('0x26')](function(_0x12193c){if(_0x12193c){_0x2c2ef8['message'][_0x12ff('0x7e')]=_0x12193c[0x0];if(!_0xb87ede[_0x12ff('0x49')]['UserId'])return;return db['User'][_0x12ff('0x48')]({'where':{'id':_0xb87ede['body'][_0x12ff('0x6e')],'role':'agent'},'attributes':['id',_0x12ff('0x2a'),_0x12ff('0x7f'),_0x12ff('0x80'),_0x12ff('0x81')],'raw':!![]});}return null;})[_0x12ff('0x26')](function(_0x5f4067){if(!_0x5f4067)return null;_0x2c2ef8[_0x12ff('0x1b')][_0x12ff('0x6f')]=_0x5f4067;return _0x2c2ef8;})[_0x12ff('0x26')](function(_0x433a7f){if(_0x433a7f){if(_0xb87ede['body'][_0x12ff('0x82')]){_0x2c2ef8[_0x12ff('0x1b')][_0x12ff('0x83')]=util[_0x12ff('0x6d')](_0x12ff('0x84'),_0xb87ede[_0x12ff('0x5f')][_0x12ff('0x2a')]);_0x2c2ef8[_0x12ff('0x1b')][_0x12ff('0x85')]=_0x2c2ef8[_0x12ff('0x85')];_0x2c2ef8[_0x12ff('0x1b')]['motionChannel']=_0x2c2ef8[_0x12ff('0x85')];_0x2c2ef8[_0x12ff('0x1b')][_0x12ff('0x86')]='accept';_0x2c2ef8[_0x12ff('0x1b')][_0x12ff('0x49')]=htmlToText[_0x12ff('0x87')](_0x2c2ef8[_0x12ff('0x1b')][_0x12ff('0x49')]);return respondWithRpcPromise(_0x12ff('0x88'),_0x12ff('0x88'),{'event':_0x12ff('0x89'),'message':_0x2c2ef8[_0x12ff('0x1b')]},client9002)[_0x12ff('0x26')](function(){return _0x2c2ef8;});}return _0x2c2ef8;}return null;})[_0x12ff('0x26')](respondWithResult(_0x2f3cf3,null))[_0x12ff('0x1d')](handleError(_0x2f3cf3,null));};exports['reject']=function(_0x501bbe,_0x97331c){var _0x3e5fb9={'agent':{},'channel':_0x12ff('0x6a')};if(_0x501bbe[_0x12ff('0x49')]['id']){delete _0x501bbe[_0x12ff('0x49')]['id'];}_0x501bbe[_0x12ff('0x49')][_0x12ff('0x6e')]=_0x501bbe[_0x12ff('0x49')][_0x12ff('0x6e')]||_0x501bbe[_0x12ff('0x5f')]['id'];_0x3e5fb9['agent']['id']=_0x501bbe['body']['UserId'];return db[_0x12ff('0x2d')][_0x12ff('0x48')]({'where':{'id':_0x501bbe[_0x12ff('0x47')]['id'],'UserId':null}})[_0x12ff('0x26')](handleEntityNotFound(_0x97331c,null))[_0x12ff('0x26')](function(_0x6252d){if(_0x6252d){_0x3e5fb9['message']=_0x6252d['get']({'plain':!![]});return db[_0x12ff('0x8a')]['find']({'where':{'id':_0x6252d[_0x12ff('0x71')]}});}return null;})[_0x12ff('0x26')](handleEntityNotFound(_0x97331c,null))[_0x12ff('0x26')](function(_0x18d003){if(_0x18d003){_0x3e5fb9[_0x12ff('0x73')]=_0x18d003[_0x12ff('0x70')]({'plain':!![]});interaction_log[_0x12ff('0x13')](_0x12ff('0x8b'),_0x501bbe[_0x12ff('0x5f')]['id'],_0x501bbe[_0x12ff('0x5f')]['name'],_0x501bbe[_0x12ff('0x5f')][_0x12ff('0x75')],_0x3e5fb9[_0x12ff('0x73')]['id'],_0x501bbe['body']?JSON[_0x12ff('0x18')](_0x501bbe['body']):_0x12ff('0x76'));return respondWithRpcPromise(_0x12ff('0x8c'),_0x12ff('0x8d'),_0x3e5fb9);}return null;})[_0x12ff('0x26')](function(_0x22a435){var _0x1a81a0=_0x12ff('0x78')+_0x22a435['message'][_0x12ff('0x79')];return db[_0x12ff('0x7a')][_0x12ff('0x32')](_0x1a81a0,{'type':db[_0x12ff('0x7b')][_0x12ff('0x7c')][_0x12ff('0x7d')],'raw':!![]})['then'](function(_0x466a40){return _0x466a40;});})['then'](function(_0x519148){if(_0x519148){_0x3e5fb9[_0x12ff('0x1b')]['contact']=_0x519148[0x0];if(!_0x501bbe[_0x12ff('0x49')][_0x12ff('0x6e')])return;return db[_0x12ff('0x8e')][_0x12ff('0x48')]({'where':{'id':_0x501bbe[_0x12ff('0x49')][_0x12ff('0x6e')],'role':_0x12ff('0x6f')},'attributes':['id',_0x12ff('0x2a'),_0x12ff('0x7f'),_0x12ff('0x80'),_0x12ff('0x81')],'raw':!![]});}return null;})['then'](function(_0x131092){if(!_0x131092)return null;_0x3e5fb9[_0x12ff('0x1b')][_0x12ff('0x6f')]=_0x131092;return _0x3e5fb9;})['then'](function(_0x1a3be9){if(_0x1a3be9){_0x1a3be9[_0x12ff('0x1b')]['interface']=util[_0x12ff('0x6d')]('SIP/%s',_0x501bbe[_0x12ff('0x5f')]['name']);_0x1a3be9['message'][_0x12ff('0x85')]=_0x3e5fb9[_0x12ff('0x85')];_0x1a3be9[_0x12ff('0x1b')][_0x12ff('0x8f')]=_0x3e5fb9['channel'];_0x1a3be9[_0x12ff('0x1b')][_0x12ff('0x86')]='reject';_0x1a3be9[_0x12ff('0x1b')]['body']=htmlToText[_0x12ff('0x87')](_0x3e5fb9[_0x12ff('0x1b')][_0x12ff('0x49')]);respondWithRpcPromise(_0x12ff('0x88'),_0x12ff('0x88'),{'event':_0x12ff('0x90'),'message':_0x1a3be9[_0x12ff('0x1b')]},client9002);return _0x3e5fb9;}return null;})[_0x12ff('0x26')](respondWithResult(_0x97331c,null))[_0x12ff('0x1d')](handleError(_0x97331c,null));};exports['download']=function(_0x339e0b,_0xdf5bdc){var _0xfc6908=moment()[_0x12ff('0x91')]()[_0x12ff('0x92')]();var _0x3a0067=path[_0x12ff('0x93')](config[_0x12ff('0x62')],_0x12ff('0x94'),'files',_0x12ff('0x95'));var _0x38ea90=path[_0x12ff('0x93')](config[_0x12ff('0x62')],_0x12ff('0x94'),_0x12ff('0x96'),'attachments');var _0x1ab6c3=util[_0x12ff('0x6d')](_0x12ff('0x97'),_0xfc6908);return db[_0x12ff('0x2d')]['find']({'where':{'id':_0x339e0b['params']['id']},'attributes':['id','body',_0x12ff('0x98'),'to','cc',_0x12ff('0x99'),_0x12ff('0x9a'),_0x12ff('0x9b')],'include':_0x339e0b[_0x12ff('0x32')][_0x12ff('0x61')]?[{'model':db[_0x12ff('0x9c')],'as':'Attachments'}]:undefined})['then'](handleEntityNotFound(_0xdf5bdc,null))[_0x12ff('0x26')](function(_0x4f31cc){if(_0x4f31cc){var _0x4e814a=_0x4f31cc;var _0x1900b={'from':_0x4e814a[_0x12ff('0x98')],'to':_0x4e814a['to'],'subject':_0x4e814a[_0x12ff('0x9a')],'html':htmlEntities[_0x12ff('0x9d')](_0x4e814a['body']),'headers':{'Date':moment(_0x4e814a[_0x12ff('0x9b')])['format'](_0x12ff('0x9e'))},'attachments':[]};if(_0x4f31cc['cc']){_0x1900b[_0x12ff('0x9f')]['Cc']=_0x4f31cc['cc'];}if(_0x4f31cc[_0x12ff('0x99')]){_0x1900b[_0x12ff('0x9f')]['Bcc']=_0x4f31cc[_0x12ff('0x99')];}return new BPromise(function(_0xdc8f9c,_0x492915){if(_0x4f31cc['Attachments']){for(var _0x256cd8=0x0;_0x256cd8<_0x4f31cc['Attachments'][_0x12ff('0x39')];_0x256cd8++){var _0x1ccbf4=_0x4f31cc[_0x12ff('0xa0')][_0x256cd8];var _0x13abe0=path[_0x12ff('0x93')](_0x38ea90,_0x1ccbf4[_0x12ff('0xa1')]);if(fs[_0x12ff('0xa2')](_0x13abe0)){_0x1900b[_0x12ff('0x61')][_0x12ff('0xa3')]({'name':_0x1ccbf4[_0x12ff('0x2a')],'contentType':_0x1ccbf4['type'],'data':fs[_0x12ff('0xa4')](_0x13abe0)});}}}emlformat[_0x12ff('0xa5')](_0x1900b,function(_0x1d3558,_0x310108){if(_0x1d3558)return _0x492915(_0x1d3558);fs[_0x12ff('0xa6')](path[_0x12ff('0x93')](_0x3a0067,_0x1ab6c3),_0x310108);return _0xdc8f9c(_0x310108);});});}})[_0x12ff('0x26')](function(_0x358540){if(_0x358540){return _0xdf5bdc[_0x12ff('0xa7')](path[_0x12ff('0x93')](_0x3a0067,_0x1ab6c3),_0x1ab6c3,function(_0x1179d7){if(!_0x1179d7)fs[_0x12ff('0xa8')](path['join'](_0x3a0067,_0x1ab6c3));});}})[_0x12ff('0x1d')](handleError(_0xdf5bdc,null));};
\ No newline at end of file
+var _0xe912=['query','keys','filters','attributes','fields','length','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','show','params','intersection','find','body','describe','create','direction','out','secret','split','MailAccount','findOne','MailAccountId','List','CmContact','Contacts','updatedAt','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','server/files/attachments','basename','ListId','List\x20not\x20found','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','read','readAt','UserId','agent','get','MailInteraction','MailInteractionId','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','interface','SIP/%s','channel','event','fromString','EventManager','acceptmessage','mail','RejectMessage','Sequelize','fullname','motionChannel','reject','rejectmessage','download','unix','toString','server','tmp','files','message-%s.eml','from','bcc','subject','createdAt','Attachments','headers','Bcc','existsSync','push','build','writeFileSync','eml-format','moment','bluebird','util','path','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./mailMessage.socket','register','client','http','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','name','send','MailMessage','rawAttributes','fieldName','key','model','map'];(function(_0x1a5f87,_0x12583e){var _0x4c7a92=function(_0x416bc4){while(--_0x416bc4){_0x1a5f87['push'](_0x1a5f87['shift']());}};_0x4c7a92(++_0x12583e);}(_0xe912,0x71));var _0x2e91=function(_0x8761e2,_0x4056ed){_0x8761e2=_0x8761e2-0x0;var _0x1ca3d9=_0xe912[_0x8761e2];return _0x1ca3d9;};'use strict';var emlformat=require(_0x2e91('0x0'));var moment=require(_0x2e91('0x1'));var BPromise=require(_0x2e91('0x2'));var util=require(_0x2e91('0x3'));var path=require(_0x2e91('0x4'));var fs=require('fs');var _=require(_0x2e91('0x5'));var Redis=require('ioredis');var htmlToText=require('html-to-text');var qs=require(_0x2e91('0x6'));var logger=require(_0x2e91('0x7'))(_0x2e91('0x8'));var interaction_log=require(_0x2e91('0x7'))('mail-interactions');var config=require('../../config/environment');var db=require(_0x2e91('0x9'))['db'];config['redis']=_[_0x2e91('0xa')](config[_0x2e91('0xb')],{'host':_0x2e91('0xc'),'port':0x18eb});var socket=require(_0x2e91('0xd'))(new Redis(config[_0x2e91('0xb')]));var htmlEntities=require('html-entities');require(_0x2e91('0xe'))[_0x2e91('0xf')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2e91('0x10')][_0x2e91('0x11')]({'port':0x232c});var client9003=jayson[_0x2e91('0x10')][_0x2e91('0x11')]({'port':0x232b});var client9002=jayson[_0x2e91('0x10')][_0x2e91('0x11')]({'port':0x232a});function respondWithRpcPromise(_0x16017b,_0x429155,_0x59b601,_0x38d792){return new BPromise(function(_0xf32ece,_0x4c28b9){var _0xa16178=_0x38d792||client;return _0xa16178['request'](_0x16017b,_0x59b601)['then'](function(_0x2f21e8){logger[_0x2e91('0x12')]('MailMessage,\x20%s,\x20%s',_0x429155,_0x2e91('0x13'));logger[_0x2e91('0x14')](_0x2e91('0x15'),_0x429155,_0x2e91('0x13'),JSON[_0x2e91('0x16')](_0x2f21e8));if(_0x2f21e8[_0x2e91('0x17')]){if(_0x2f21e8[_0x2e91('0x17')][_0x2e91('0x18')]===0x1f4){logger[_0x2e91('0x17')](_0x2e91('0x19'),_0x429155,_0x2f21e8[_0x2e91('0x17')][_0x2e91('0x1a')]);return _0x4c28b9(_0x2f21e8[_0x2e91('0x17')][_0x2e91('0x1a')]);}logger[_0x2e91('0x17')](_0x2e91('0x19'),_0x429155,_0x2f21e8[_0x2e91('0x17')][_0x2e91('0x1a')]);return _0xf32ece(_0x2f21e8[_0x2e91('0x17')][_0x2e91('0x1a')]);}else{logger[_0x2e91('0x12')](_0x2e91('0x19'),_0x429155,'request\x20sent');_0xf32ece(_0x2f21e8[_0x2e91('0x1b')][_0x2e91('0x1a')]);}})[_0x2e91('0x1c')](function(_0x1672ca){logger[_0x2e91('0x17')](_0x2e91('0x19'),_0x429155,_0x1672ca);_0x4c28b9(_0x1672ca);});});}function respondWithResult(_0x4b4f11,_0x675310){_0x675310=_0x675310||0xc8;return function(_0xdddd79){if(_0xdddd79){return _0x4b4f11[_0x2e91('0x1d')](_0x675310)[_0x2e91('0x1e')](_0xdddd79);}};}function respondWithFilteredResult(_0x26e6e0,_0x42ed12){return function(_0x596e0c){if(_0x596e0c){var _0x116e61=typeof _0x42ed12[_0x2e91('0x1f')]===_0x2e91('0x20')&&typeof _0x42ed12[_0x2e91('0x21')]==='undefined';var _0x3d6396=_0x596e0c[_0x2e91('0x22')];var _0x2cf48f=_0x116e61?0x0:_0x42ed12[_0x2e91('0x1f')];var _0xce0d37=_0x116e61?_0x596e0c[_0x2e91('0x22')]:_0x42ed12[_0x2e91('0x1f')]+_0x42ed12['limit'];var _0x26f2f2;if(_0xce0d37>=_0x3d6396){_0xce0d37=_0x3d6396;_0x26f2f2=0xc8;}else{_0x26f2f2=0xce;}_0x26e6e0[_0x2e91('0x1d')](_0x26f2f2);return _0x26e6e0[_0x2e91('0x23')](_0x2e91('0x24'),_0x2cf48f+'-'+_0xce0d37+'/'+_0x3d6396)[_0x2e91('0x1e')](_0x596e0c);}return null;};}function saveUpdates(_0x44d910){return function(_0x500631){if(_0x500631){return _0x500631[_0x2e91('0x25')](_0x44d910)[_0x2e91('0x26')](function(_0x19a66d){return _0x19a66d;});}return null;};}function removeEntity(_0x5a1e1b){return function(_0x2c0faa){if(_0x2c0faa){return _0x2c0faa[_0x2e91('0x27')]()['then'](function(){_0x5a1e1b[_0x2e91('0x1d')](0xcc)[_0x2e91('0x28')]();});}};}function handleEntityNotFound(_0x575387){return function(_0x14525f){if(!_0x14525f){_0x575387[_0x2e91('0x29')](0x194);}return _0x14525f;};}function handleError(_0x45d0b5,_0x4bb34a){_0x4bb34a=_0x4bb34a||0x1f4;return function(_0x199b59){logger[_0x2e91('0x17')](_0x199b59['stack']);if(_0x199b59[_0x2e91('0x2a')]){delete _0x199b59[_0x2e91('0x2a')];}_0x45d0b5[_0x2e91('0x1d')](_0x4bb34a)[_0x2e91('0x2b')](_0x199b59);};}exports['index']=function(_0x348be6,_0x27f8c1){var _0x44e347={},_0x15b6e5={},_0x2607bd={'count':0x0,'rows':[]};var _0x3eb0aa=_['map'](db[_0x2e91('0x2c')][_0x2e91('0x2d')],function(_0x580221){return{'name':_0x580221[_0x2e91('0x2e')],'type':_0x580221['type'][_0x2e91('0x2f')]};});_0x15b6e5[_0x2e91('0x30')]=_[_0x2e91('0x31')](_0x3eb0aa,_0x2e91('0x2a'));_0x15b6e5[_0x2e91('0x32')]=_[_0x2e91('0x33')](_0x348be6[_0x2e91('0x32')]);_0x15b6e5[_0x2e91('0x34')]=_['intersection'](_0x15b6e5[_0x2e91('0x30')],_0x15b6e5['query']);_0x44e347[_0x2e91('0x35')]=_['intersection'](_0x15b6e5[_0x2e91('0x30')],qs[_0x2e91('0x36')](_0x348be6[_0x2e91('0x32')][_0x2e91('0x36')]));_0x44e347[_0x2e91('0x35')]=_0x44e347[_0x2e91('0x35')][_0x2e91('0x37')]?_0x44e347[_0x2e91('0x35')]:_0x15b6e5[_0x2e91('0x30')];if(!_0x348be6[_0x2e91('0x32')]['hasOwnProperty']('nolimit')){_0x44e347['limit']=qs[_0x2e91('0x21')](_0x348be6[_0x2e91('0x32')][_0x2e91('0x21')]);_0x44e347['offset']=qs[_0x2e91('0x1f')](_0x348be6[_0x2e91('0x32')]['offset']);}_0x44e347['order']=qs[_0x2e91('0x38')](_0x348be6[_0x2e91('0x32')][_0x2e91('0x38')]);_0x44e347[_0x2e91('0x39')]=qs['filters'](_[_0x2e91('0x3a')](_0x348be6[_0x2e91('0x32')],_0x15b6e5[_0x2e91('0x34')]),_0x3eb0aa);if(_0x348be6[_0x2e91('0x32')][_0x2e91('0x3b')]){_0x44e347['where']=_[_0x2e91('0x3c')](_0x44e347[_0x2e91('0x39')],{'$or':_[_0x2e91('0x31')](_0x3eb0aa,function(_0x38976b){if(_0x38976b[_0x2e91('0x3d')]!==_0x2e91('0x3e')){var _0x1ef9c5={};_0x1ef9c5[_0x38976b[_0x2e91('0x2a')]]={'$like':'%'+_0x348be6[_0x2e91('0x32')]['filter']+'%'};return _0x1ef9c5;}})});}_0x44e347=_[_0x2e91('0x3c')]({},_0x44e347,_0x348be6[_0x2e91('0x3f')]);var _0x31d360={'where':_0x44e347[_0x2e91('0x39')]};return db[_0x2e91('0x2c')][_0x2e91('0x22')](_0x31d360)[_0x2e91('0x26')](function(_0x2f2f9e){_0x2607bd[_0x2e91('0x22')]=_0x2f2f9e;if(_0x348be6[_0x2e91('0x32')][_0x2e91('0x40')]){_0x44e347[_0x2e91('0x41')]=[{'all':!![]}];}return db[_0x2e91('0x2c')]['findAll'](_0x44e347);})[_0x2e91('0x26')](function(_0x1a35e5){_0x2607bd[_0x2e91('0x42')]=_0x1a35e5;return _0x2607bd;})[_0x2e91('0x26')](respondWithFilteredResult(_0x27f8c1,_0x44e347))[_0x2e91('0x1c')](handleError(_0x27f8c1,null));};exports[_0x2e91('0x43')]=function(_0x3ea52f,_0x5703ea){var _0x23ff80={'raw':!![],'where':{'id':_0x3ea52f[_0x2e91('0x44')]['id']}},_0x1d2cf1={};_0x1d2cf1[_0x2e91('0x30')]=_[_0x2e91('0x33')](db['MailMessage'][_0x2e91('0x2d')]);_0x1d2cf1[_0x2e91('0x32')]=_[_0x2e91('0x33')](_0x3ea52f[_0x2e91('0x32')]);_0x1d2cf1[_0x2e91('0x34')]=_[_0x2e91('0x45')](_0x1d2cf1[_0x2e91('0x30')],_0x1d2cf1['query']);_0x23ff80[_0x2e91('0x35')]=_[_0x2e91('0x45')](_0x1d2cf1['model'],qs[_0x2e91('0x36')](_0x3ea52f[_0x2e91('0x32')][_0x2e91('0x36')]));_0x23ff80[_0x2e91('0x35')]=_0x23ff80[_0x2e91('0x35')][_0x2e91('0x37')]?_0x23ff80[_0x2e91('0x35')]:_0x1d2cf1[_0x2e91('0x30')];if(_0x3ea52f[_0x2e91('0x32')][_0x2e91('0x40')]){_0x23ff80[_0x2e91('0x41')]=[{'all':!![]}];}_0x23ff80=_['merge']({},_0x23ff80,_0x3ea52f[_0x2e91('0x3f')]);return db[_0x2e91('0x2c')][_0x2e91('0x46')](_0x23ff80)[_0x2e91('0x26')](handleEntityNotFound(_0x5703ea,null))['then'](respondWithResult(_0x5703ea,null))[_0x2e91('0x1c')](handleError(_0x5703ea,null));};exports['update']=function(_0x5aef9b,_0x2696ed){if(_0x5aef9b[_0x2e91('0x47')]['id']){delete _0x5aef9b[_0x2e91('0x47')]['id'];}return db['MailMessage'][_0x2e91('0x46')]({'where':{'id':_0x5aef9b[_0x2e91('0x44')]['id']}})[_0x2e91('0x26')](handleEntityNotFound(_0x2696ed,null))[_0x2e91('0x26')](saveUpdates(_0x5aef9b[_0x2e91('0x47')],null))[_0x2e91('0x26')](respondWithResult(_0x2696ed,null))['catch'](handleError(_0x2696ed,null));};exports[_0x2e91('0x27')]=function(_0x6383a9,_0x18e0f6){return db['MailMessage'][_0x2e91('0x46')]({'where':{'id':_0x6383a9[_0x2e91('0x44')]['id']}})[_0x2e91('0x26')](handleEntityNotFound(_0x18e0f6,null))['then'](removeEntity(_0x18e0f6,null))[_0x2e91('0x1c')](handleError(_0x18e0f6,null));};exports[_0x2e91('0x48')]=function(_0x558715,_0x21de2a){return db[_0x2e91('0x2c')][_0x2e91('0x48')]()[_0x2e91('0x26')](respondWithResult(_0x21de2a,null))[_0x2e91('0x1c')](handleError(_0x21de2a,null));};exports[_0x2e91('0x49')]=function(_0x8bd53a,_0x431c74){return db['MailMessage'][_0x2e91('0x49')](_0x8bd53a['body'])[_0x2e91('0x26')](function(_0x169a41){if(_0x169a41){if(_0x169a41[_0x2e91('0x4a')]===_0x2e91('0x4b')&&!_0x169a41[_0x2e91('0x4c')]){var _0x5a1e9a,_0x5b9629,_0x54dc38;if(_0x8bd53a[_0x2e91('0x47')]['to']){_0x5b9629=_0x8bd53a['body']['to'][_0x2e91('0x4d')](',')[0x0];}return db[_0x2e91('0x4e')][_0x2e91('0x4f')]({'where':{'id':_0x169a41[_0x2e91('0x50')]},'include':[{'model':db['CmList'],'as':_0x2e91('0x51'),'include':[{'model':db[_0x2e91('0x52')],'as':_0x2e91('0x53'),'where':{'email':_0x5b9629},'limit':0x1,'order':[[_0x2e91('0x54'),'DESC']]}]},{'model':db[_0x2e91('0x55')],'as':_0x2e91('0x56'),'raw':!![]}]})['then'](function(_0x314e51){_0x5a1e9a=_0x314e51;if(_0x5a1e9a&&_0x5a1e9a[_0x2e91('0x56')]){var _0x2d558b={'tls':{'rejectUnauthorized':![]}};if(_[_0x2e91('0x57')](_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x58')])){_0x2d558b[_0x2e91('0x59')]=_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x59')];_0x2d558b['port']=_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x5a')];_0x2d558b[_0x2e91('0x5b')]=_0x5a1e9a[_0x2e91('0x56')]['secure'];if(_0x5a1e9a['Smtp'][_0x2e91('0x5c')]){_0x2d558b[_0x2e91('0x5d')]={'user':_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x5e')],'pass':_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x5f')]};}}else{_0x2d558b[_0x2e91('0x58')]=_0x5a1e9a['Smtp']['service'];_0x2d558b['auth']={'user':_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x5e')],'pass':_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x5f')]};_0x2d558b[_0x2e91('0x5b')]=_0x5a1e9a[_0x2e91('0x56')][_0x2e91('0x5b')];}if(_0x8bd53a[_0x2e91('0x47')]['attachments']&&_0x8bd53a[_0x2e91('0x47')][_0x2e91('0x60')][_0x2e91('0x37')]){for(var _0x234d2b=0x0;_0x234d2b<_0x8bd53a[_0x2e91('0x47')]['attachments']['length'];_0x234d2b+=0x1){_0x8bd53a[_0x2e91('0x47')][_0x2e91('0x60')][_0x234d2b]={'filename':_0x8bd53a[_0x2e91('0x47')][_0x2e91('0x60')][_0x234d2b][_0x2e91('0x2a')],'path':path[_0x2e91('0x61')](config[_0x2e91('0x62')],_0x2e91('0x63'),_0x8bd53a['body']['attachments'][_0x234d2b][_0x2e91('0x64')])};}}_0x54dc38={'account':_0x2d558b,'message':_0x8bd53a[_0x2e91('0x47')]};return;}})[_0x2e91('0x26')](function(){if(_0x5a1e9a[_0x2e91('0x51')]){if(_0x5a1e9a['List'][_0x2e91('0x53')][_0x2e91('0x37')]){return _0x5a1e9a['List'][_0x2e91('0x53')][0x0];}else{return db[_0x2e91('0x52')]['create'](_[_0x2e91('0xa')](_0x8bd53a[_0x2e91('0x47')],{'firstName':_0x8bd53a[_0x2e91('0x47')]['to'],'email':_0x8bd53a['body']['to'],'phone':_0x8bd53a['body']['to'],'ListId':_0x5a1e9a[_0x2e91('0x65')]}));}}else{throw new Error(_0x2e91('0x66'));}})[_0x2e91('0x26')](function(){if(_0x54dc38){return respondWithRpcPromise('SendMail',_0x2e91('0x67'),_0x54dc38,client9003)[_0x2e91('0x26')](function(_0x47eef1){return _0x169a41[_0x2e91('0x25')]({'read':!![],'messageId':_0x47eef1[_0x2e91('0x68')],'sentAt':moment()[_0x2e91('0x69')](_0x2e91('0x6a'))});})[_0x2e91('0x1c')](function(_0x309453){logger[_0x2e91('0x17')]('%s',JSON[_0x2e91('0x16')](_0x309453));return _0x169a41;});}return _0x169a41;});}return _0x169a41;}})[_0x2e91('0x26')](respondWithResult(_0x431c74,0xc9))['catch'](handleError(_0x431c74,null));};exports[_0x2e91('0x6b')]=function(_0x421f4a,_0x5c6ddb){var _0x5498ad={'agent':{},'channel':'mail'};if(_0x421f4a[_0x2e91('0x47')]['id']){delete _0x421f4a[_0x2e91('0x47')]['id'];}_0x421f4a[_0x2e91('0x47')][_0x2e91('0x6c')]=!![];_0x421f4a['body'][_0x2e91('0x6d')]=moment()['format'](_0x2e91('0x6a'));_0x421f4a[_0x2e91('0x47')][_0x2e91('0x6e')]=_0x421f4a[_0x2e91('0x47')][_0x2e91('0x6e')]||_0x421f4a[_0x2e91('0x5e')]['id'];_0x5498ad[_0x2e91('0x6f')]['id']=_0x421f4a['body'][_0x2e91('0x6e')];return db[_0x2e91('0x2c')][_0x2e91('0x46')]({'where':{'id':_0x421f4a[_0x2e91('0x44')]['id'],'UserId':null}})[_0x2e91('0x26')](handleEntityNotFound(_0x5c6ddb,null))['then'](saveUpdates(_0x421f4a[_0x2e91('0x47')],null))['then'](function(_0x14e1d8){if(_0x14e1d8){_0x5498ad['message']=_0x14e1d8[_0x2e91('0x70')]({'plain':!![]});return db[_0x2e91('0x71')][_0x2e91('0x46')]({'where':{'id':_0x14e1d8[_0x2e91('0x72')]}});}return null;})[_0x2e91('0x26')](handleEntityNotFound(_0x5c6ddb,null))[_0x2e91('0x26')](function(_0x3a1a34){if(_0x3a1a34){return _0x3a1a34[_0x2e91('0x25')]({'UserId':_0x421f4a[_0x2e91('0x47')][_0x2e91('0x6e')],'read1stAt':_[_0x2e91('0x57')](_0x3a1a34['read1stAt'])?moment()[_0x2e91('0x69')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x2e91('0x26')](function(_0x74bcbf){if(_0x74bcbf){_0x5498ad[_0x2e91('0x73')]=_0x74bcbf[_0x2e91('0x70')]({'plain':!![]});interaction_log[_0x2e91('0x12')](_0x2e91('0x74'),_0x421f4a[_0x2e91('0x5e')]['id'],_0x421f4a[_0x2e91('0x5e')][_0x2e91('0x2a')],_0x421f4a['user'][_0x2e91('0x75')],_0x5498ad['interaction']['id'],_0x421f4a[_0x2e91('0x47')]?JSON[_0x2e91('0x16')](_0x421f4a[_0x2e91('0x47')]):_0x2e91('0x76'));return respondWithRpcPromise(_0x2e91('0x77'),_0x2e91('0x78'),_0x5498ad);}return null;})[_0x2e91('0x26')](function(_0x80d3b8){var _0x4b04a0=_0x2e91('0x79')+_0x80d3b8[_0x2e91('0x1a')][_0x2e91('0x7a')];return db[_0x2e91('0x7b')]['query'](_0x4b04a0,{'type':db['Sequelize'][_0x2e91('0x7c')][_0x2e91('0x7d')],'raw':!![]})[_0x2e91('0x26')](function(_0x4e7f6d){return _0x4e7f6d;});})[_0x2e91('0x26')](function(_0x243ceb){if(_0x243ceb){_0x5498ad[_0x2e91('0x1a')][_0x2e91('0x7e')]=_0x243ceb[0x0];if(!_0x421f4a[_0x2e91('0x47')]['UserId'])return;return db[_0x2e91('0x7f')][_0x2e91('0x46')]({'where':{'id':_0x421f4a[_0x2e91('0x47')]['UserId'],'role':'agent'},'attributes':['id',_0x2e91('0x2a'),'fullname',_0x2e91('0x80'),_0x2e91('0x81')],'raw':!![]});}return null;})['then'](function(_0x29e96d){if(!_0x29e96d)return null;_0x5498ad[_0x2e91('0x1a')][_0x2e91('0x6f')]=_0x29e96d;return _0x5498ad;})[_0x2e91('0x26')](function(_0x2e99cf){if(_0x2e99cf){if(_0x421f4a['body'][_0x2e91('0x82')]){_0x5498ad[_0x2e91('0x1a')][_0x2e91('0x83')]=util[_0x2e91('0x69')](_0x2e91('0x84'),_0x421f4a[_0x2e91('0x5e')][_0x2e91('0x2a')]);_0x5498ad[_0x2e91('0x1a')][_0x2e91('0x85')]=_0x5498ad[_0x2e91('0x85')];_0x5498ad[_0x2e91('0x1a')]['motionChannel']=_0x5498ad[_0x2e91('0x85')];_0x5498ad[_0x2e91('0x1a')][_0x2e91('0x86')]='accept';_0x5498ad[_0x2e91('0x1a')][_0x2e91('0x47')]=htmlToText[_0x2e91('0x87')](_0x5498ad['message'][_0x2e91('0x47')]);return respondWithRpcPromise(_0x2e91('0x88'),_0x2e91('0x88'),{'event':_0x2e91('0x89'),'message':_0x5498ad[_0x2e91('0x1a')]},client9002)[_0x2e91('0x26')](function(){return _0x5498ad;});}return _0x5498ad;}return null;})[_0x2e91('0x26')](respondWithResult(_0x5c6ddb,null))['catch'](handleError(_0x5c6ddb,null));};exports['reject']=function(_0x1bfc59,_0x4bca28){var _0x3fb8d2={'agent':{},'channel':_0x2e91('0x8a')};if(_0x1bfc59[_0x2e91('0x47')]['id']){delete _0x1bfc59[_0x2e91('0x47')]['id'];}_0x1bfc59[_0x2e91('0x47')][_0x2e91('0x6e')]=_0x1bfc59[_0x2e91('0x47')][_0x2e91('0x6e')]||_0x1bfc59['user']['id'];_0x3fb8d2['agent']['id']=_0x1bfc59['body']['UserId'];return db[_0x2e91('0x2c')][_0x2e91('0x46')]({'where':{'id':_0x1bfc59['params']['id'],'UserId':null}})[_0x2e91('0x26')](handleEntityNotFound(_0x4bca28,null))[_0x2e91('0x26')](function(_0x29d494){if(_0x29d494){_0x3fb8d2[_0x2e91('0x1a')]=_0x29d494[_0x2e91('0x70')]({'plain':!![]});return db[_0x2e91('0x71')][_0x2e91('0x46')]({'where':{'id':_0x29d494[_0x2e91('0x72')]}});}return null;})[_0x2e91('0x26')](handleEntityNotFound(_0x4bca28,null))[_0x2e91('0x26')](function(_0xd44de4){if(_0xd44de4){_0x3fb8d2[_0x2e91('0x73')]=_0xd44de4[_0x2e91('0x70')]({'plain':!![]});interaction_log[_0x2e91('0x12')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x1bfc59[_0x2e91('0x5e')]['id'],_0x1bfc59[_0x2e91('0x5e')][_0x2e91('0x2a')],_0x1bfc59[_0x2e91('0x5e')][_0x2e91('0x75')],_0x3fb8d2[_0x2e91('0x73')]['id'],_0x1bfc59[_0x2e91('0x47')]?JSON[_0x2e91('0x16')](_0x1bfc59[_0x2e91('0x47')]):_0x2e91('0x76'));return respondWithRpcPromise(_0x2e91('0x8b'),'rejectMessage',_0x3fb8d2);}return null;})[_0x2e91('0x26')](function(_0x3147e7){var _0x71b854=_0x2e91('0x79')+_0x3147e7['message'][_0x2e91('0x7a')];return db['sequelize'][_0x2e91('0x32')](_0x71b854,{'type':db[_0x2e91('0x8c')][_0x2e91('0x7c')][_0x2e91('0x7d')],'raw':!![]})[_0x2e91('0x26')](function(_0x381777){return _0x381777;});})[_0x2e91('0x26')](function(_0xf24f92){if(_0xf24f92){_0x3fb8d2[_0x2e91('0x1a')][_0x2e91('0x7e')]=_0xf24f92[0x0];if(!_0x1bfc59[_0x2e91('0x47')]['UserId'])return;return db[_0x2e91('0x7f')][_0x2e91('0x46')]({'where':{'id':_0x1bfc59[_0x2e91('0x47')]['UserId'],'role':_0x2e91('0x6f')},'attributes':['id',_0x2e91('0x2a'),_0x2e91('0x8d'),_0x2e91('0x80'),_0x2e91('0x81')],'raw':!![]});}return null;})[_0x2e91('0x26')](function(_0x214d11){if(!_0x214d11)return null;_0x3fb8d2[_0x2e91('0x1a')][_0x2e91('0x6f')]=_0x214d11;return _0x3fb8d2;})[_0x2e91('0x26')](function(_0x4e2e90){if(_0x4e2e90){_0x4e2e90[_0x2e91('0x1a')]['interface']=util[_0x2e91('0x69')]('SIP/%s',_0x1bfc59[_0x2e91('0x5e')][_0x2e91('0x2a')]);_0x4e2e90[_0x2e91('0x1a')][_0x2e91('0x85')]=_0x3fb8d2[_0x2e91('0x85')];_0x4e2e90['message'][_0x2e91('0x8e')]=_0x3fb8d2[_0x2e91('0x85')];_0x4e2e90['message']['event']=_0x2e91('0x8f');_0x4e2e90['message'][_0x2e91('0x47')]=htmlToText['fromString'](_0x3fb8d2[_0x2e91('0x1a')][_0x2e91('0x47')]);respondWithRpcPromise('EventManager',_0x2e91('0x88'),{'event':_0x2e91('0x90'),'message':_0x4e2e90[_0x2e91('0x1a')]},client9002);return _0x3fb8d2;}return null;})[_0x2e91('0x26')](respondWithResult(_0x4bca28,null))[_0x2e91('0x1c')](handleError(_0x4bca28,null));};exports[_0x2e91('0x91')]=function(_0x3bb0e3,_0x31647f){var _0x394f40=moment()[_0x2e91('0x92')]()[_0x2e91('0x93')]();var _0x514dc0=path[_0x2e91('0x61')](config[_0x2e91('0x62')],_0x2e91('0x94'),'files',_0x2e91('0x95'));var _0x1deb7e=path[_0x2e91('0x61')](config[_0x2e91('0x62')],_0x2e91('0x94'),_0x2e91('0x96'),_0x2e91('0x60'));var _0x381f0c=util[_0x2e91('0x69')](_0x2e91('0x97'),_0x394f40);return db[_0x2e91('0x2c')]['find']({'where':{'id':_0x3bb0e3[_0x2e91('0x44')]['id']},'attributes':['id',_0x2e91('0x47'),_0x2e91('0x98'),'to','cc',_0x2e91('0x99'),_0x2e91('0x9a'),_0x2e91('0x9b')],'include':_0x3bb0e3[_0x2e91('0x32')][_0x2e91('0x60')]?[{'model':db['Attachment'],'as':_0x2e91('0x9c')}]:undefined})[_0x2e91('0x26')](handleEntityNotFound(_0x31647f,null))[_0x2e91('0x26')](function(_0x3bbdd8){if(_0x3bbdd8){var _0x56ab9f=_0x3bbdd8;var _0x1ff78d={'from':_0x56ab9f[_0x2e91('0x98')],'to':_0x56ab9f['to'],'subject':_0x56ab9f[_0x2e91('0x9a')],'html':htmlEntities['decode'](_0x56ab9f[_0x2e91('0x47')]),'headers':{'Date':moment(_0x56ab9f['createdAt'])[_0x2e91('0x69')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x3bbdd8['cc']){_0x1ff78d[_0x2e91('0x9d')]['Cc']=_0x3bbdd8['cc'];}if(_0x3bbdd8['bcc']){_0x1ff78d['headers'][_0x2e91('0x9e')]=_0x3bbdd8[_0x2e91('0x99')];}return new BPromise(function(_0x43a340,_0x3eea58){if(_0x3bbdd8['Attachments']){for(var _0x2a2916=0x0;_0x2a2916<_0x3bbdd8[_0x2e91('0x9c')]['length'];_0x2a2916++){var _0x4cca17=_0x3bbdd8[_0x2e91('0x9c')][_0x2a2916];var _0x4cdfe1=path['join'](_0x1deb7e,_0x4cca17[_0x2e91('0x64')]);if(fs[_0x2e91('0x9f')](_0x4cdfe1)){_0x1ff78d[_0x2e91('0x60')][_0x2e91('0xa0')]({'name':_0x4cca17['name'],'contentType':_0x4cca17['type'],'data':fs['readFileSync'](_0x4cdfe1)});}}}emlformat[_0x2e91('0xa1')](_0x1ff78d,function(_0x5c6422,_0x4d2de1){if(_0x5c6422)return _0x3eea58(_0x5c6422);fs[_0x2e91('0xa2')](path['join'](_0x514dc0,_0x381f0c),_0x4d2de1);return _0x43a340(_0x4d2de1);});});}})[_0x2e91('0x26')](function(_0xd65287){if(_0xd65287){return _0x31647f[_0x2e91('0x91')](path[_0x2e91('0x61')](_0x514dc0,_0x381f0c),_0x381f0c,function(_0x370d42){if(!_0x370d42)fs['unlinkSync'](path[_0x2e91('0x61')](_0x514dc0,_0x381f0c));});}})[_0x2e91('0x1c')](handleError(_0x31647f,null));};
\ No newline at end of file
index cf10c6b..9ef6e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78b8=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','emit'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x78b8,0x1e0));var _0x878b=function(_0x1cc783,_0x3d2c5d){_0x1cc783=_0x1cc783-0x0;var _0x4e5daf=_0x78b8[_0x1cc783];return _0x4e5daf;};'use strict';var EventEmitter=require(_0x878b('0x0'));var MailMessage=require(_0x878b('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x878b('0x2')](0x0);var events={'afterCreate':_0x878b('0x3'),'afterUpdate':_0x878b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x35569c){return function(_0x4fa2ac,_0x2da3c2,_0x885247){MailMessageEvents[_0x878b('0x5')](_0x35569c+':'+_0x4fa2ac['id'],_0x4fa2ac);MailMessageEvents[_0x878b('0x5')](_0x35569c,_0x4fa2ac);_0x885247(null);};}for(var e in events){if(events[_0x878b('0x6')](e)){var event=events[e];MailMessage[_0x878b('0x7')](e,emitEvent(event));}}module[_0x878b('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0xc040=['emit','hasOwnProperty','exports','events','../../mysqldb','MailMessage','setMaxListeners','remove'];(function(_0x470a01,_0x1ef188){var _0x5df181=function(_0x498b1d){while(--_0x498b1d){_0x470a01['push'](_0x470a01['shift']());}};_0x5df181(++_0x1ef188);}(_0xc040,0x73));var _0x0c04=function(_0x243cf3,_0x588fcb){_0x243cf3=_0x243cf3-0x0;var _0x3bd58a=_0xc040[_0x243cf3];return _0x3bd58a;};'use strict';var EventEmitter=require(_0x0c04('0x0'));var MailMessage=require(_0x0c04('0x1'))['db'][_0x0c04('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x0c04('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x0c04('0x4')};function emitEvent(_0xec5046){return function(_0x240e85,_0x123405,_0x4f3809){MailMessageEvents[_0x0c04('0x5')](_0xec5046+':'+_0x240e85['id'],_0x240e85);MailMessageEvents[_0x0c04('0x5')](_0xec5046,_0x240e85);_0x4f3809(null);};}for(var e in events){if(events[_0x0c04('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x0c04('0x7')]=MailMessageEvents;
\ No newline at end of file
index 80c8b50..1de02df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9d=['lodash','util','../../config/logger','api','moment','request-promise','html-to-text','path','rimraf','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','subject','plainBody','fromString','models','get','direction','toLowerCase','out','secret','isNil','UserId','then','update','createdAt','catch','error'];(function(_0x53cd9f,_0xac8289){var _0x3cab9e=function(_0x47a020){while(--_0x47a020){_0x53cd9f['push'](_0x53cd9f['shift']());}};_0x3cab9e(++_0xac8289);}(_0x1f9d,0x100));var _0xd1f9=function(_0x4dd7bb,_0x409176){_0x4dd7bb=_0x4dd7bb-0x0;var _0xbc91e8=_0x1f9d[_0x4dd7bb];return _0xbc91e8;};'use strict';var _=require(_0xd1f9('0x0'));var util=require(_0xd1f9('0x1'));var logger=require(_0xd1f9('0x2'))(_0xd1f9('0x3'));var moment=require(_0xd1f9('0x4'));var BPromise=require('bluebird');var rp=require(_0xd1f9('0x5'));var htmlToText=require(_0xd1f9('0x6'));var fs=require('fs');var path=require(_0xd1f9('0x7'));var rimraf=require(_0xd1f9('0x8'));var config=require('../../config/environment');var attributes=require(_0xd1f9('0x9'));module[_0xd1f9('0xa')]=function(_0x5e44b0,_0x21330f){return _0x5e44b0[_0xd1f9('0xb')](_0xd1f9('0xc'),attributes,{'tableName':_0xd1f9('0xd'),'paranoid':![],'indexes':[{'name':_0xd1f9('0xe'),'fields':[_0xd1f9('0xe')]},{'name':_0xd1f9('0xf'),'fields':['plainBody',_0xd1f9('0x10')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5d055d,_0x47a84d,_0x453406){if(_0x5d055d['body']){_0x5d055d[_0xd1f9('0x11')]=htmlToText[_0xd1f9('0x12')](_0x5d055d['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x453406(null,_0x47a84d);},'afterCreate':function(_0x58af25,_0x1f8e22,_0x303071){var _0x2faf48=_0x5e44b0[_0xd1f9('0x13')];var _0xa8b2c9=_0x58af25[_0xd1f9('0x14')]({'plain':!![]});if(_0xa8b2c9[_0xd1f9('0x15')][_0xd1f9('0x16')]()==='in'||_0xa8b2c9[_0xd1f9('0x15')]['toLowerCase']()===_0xd1f9('0x17')&&!_0xa8b2c9[_0xd1f9('0x18')]&&!_[_0xd1f9('0x19')](_0xa8b2c9[_0xd1f9('0x1a')])){_0x2faf48['MailInteraction']['findOne']({'where':{'id':_0xa8b2c9['MailInteractionId']}})[_0xd1f9('0x1b')](function(_0x42939d){if(_0x42939d){_0x42939d[_0xd1f9('0x1c')]({'lastMsgAt':_0xa8b2c9[_0xd1f9('0x1d')],'lastMsgDirection':_0xa8b2c9['direction'][_0xd1f9('0x16')]()});}})[_0xd1f9('0x1e')](function(_0x4a498d){console[_0xd1f9('0x1f')](_0x4a498d);});}_0x303071();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3ba3=['isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase','out','secret'];(function(_0x1d128e,_0x2c87de){var _0x3d5236=function(_0x2374ff){while(--_0x2374ff){_0x1d128e['push'](_0x1d128e['shift']());}};_0x3d5236(++_0x2c87de);}(_0x3ba3,0xc5));var _0x33ba=function(_0x4fd761,_0x4149c8){_0x4fd761=_0x4fd761-0x0;var _0x28c00b=_0x3ba3[_0x4fd761];return _0x28c00b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x33ba('0x0'))(_0x33ba('0x1'));var moment=require(_0x33ba('0x2'));var BPromise=require(_0x33ba('0x3'));var rp=require('request-promise');var htmlToText=require(_0x33ba('0x4'));var fs=require('fs');var path=require(_0x33ba('0x5'));var rimraf=require(_0x33ba('0x6'));var config=require(_0x33ba('0x7'));var attributes=require(_0x33ba('0x8'));module[_0x33ba('0x9')]=function(_0x1ccd24,_0x245991){return _0x1ccd24[_0x33ba('0xa')](_0x33ba('0xb'),attributes,{'tableName':_0x33ba('0xc'),'paranoid':![],'indexes':[{'name':_0x33ba('0xd'),'fields':[_0x33ba('0xd')]},{'name':'fti_mail_messages','fields':[_0x33ba('0xe'),_0x33ba('0xf')],'type':_0x33ba('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x48debd,_0x3f62d6,_0x447c30){if(_0x48debd[_0x33ba('0x11')]){_0x48debd[_0x33ba('0xe')]=htmlToText[_0x33ba('0x12')](_0x48debd[_0x33ba('0x11')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x447c30(null,_0x3f62d6);},'afterCreate':function(_0x3d74d3,_0x3e3a6b,_0xea1cef){var _0x470e84=_0x1ccd24[_0x33ba('0x13')];var _0xcc396e=_0x3d74d3[_0x33ba('0x14')]({'plain':!![]});if(_0xcc396e[_0x33ba('0x15')][_0x33ba('0x16')]()==='in'||_0xcc396e[_0x33ba('0x15')][_0x33ba('0x16')]()===_0x33ba('0x17')&&!_0xcc396e[_0x33ba('0x18')]&&!_[_0x33ba('0x19')](_0xcc396e[_0x33ba('0x1a')])){_0x470e84[_0x33ba('0x1b')][_0x33ba('0x1c')]({'where':{'id':_0xcc396e[_0x33ba('0x1d')]}})[_0x33ba('0x1e')](function(_0x3176a9){if(_0x3176a9){_0x3176a9[_0x33ba('0x1f')]({'lastMsgAt':_0xcc396e[_0x33ba('0x20')],'lastMsgDirection':_0xcc396e['direction'][_0x33ba('0x16')]()});}})[_0x33ba('0x21')](function(_0x215273){console[_0x33ba('0x22')](_0x215273);});}_0xea1cef();}},'charset':_0x33ba('0x23'),'collate':_0x33ba('0x24')});};
\ No newline at end of file
index 12092e4..cb6488e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de3=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','localhost','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','CreateMailMessage','MailMessage','create','options','catch','lodash','moment','bluebird'];(function(_0x275e2f,_0x4f4f12){var _0x396fd9=function(_0x398e63){while(--_0x398e63){_0x275e2f['push'](_0x275e2f['shift']());}};_0x396fd9(++_0x4f4f12);}(_0x3de3,0x1ce));var _0x33de=function(_0x4fca35,_0x1407ac){_0x4fca35=_0x4fca35-0x0;var _0x5c5afc=_0x3de3[_0x4fca35];return _0x5c5afc;};'use strict';var _=require(_0x33de('0x0'));var util=require('util');var moment=require(_0x33de('0x1'));var BPromise=require(_0x33de('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x33de('0x3'));var db=require(_0x33de('0x4'))['db'];var utils=require(_0x33de('0x5'));var logger=require(_0x33de('0x6'))('rpc');var config=require(_0x33de('0x7'));var jayson=require(_0x33de('0x8'));var client=jayson['client'][_0x33de('0x9')]({'port':0x232a});config['redis']=_[_0x33de('0xa')](config[_0x33de('0xb')],{'host':_0x33de('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x33de('0xb')]));require(_0x33de('0xd'))[_0x33de('0xe')](socket);function respondWithRpcPromise(_0x5e1be7,_0x2cbf35,_0x348720){return new BPromise(function(_0x8b655d,_0x241211){return client[_0x33de('0xf')](_0x5e1be7,_0x348720)[_0x33de('0x10')](function(_0x8dfa3b){logger[_0x33de('0x11')](_0x33de('0x12'),_0x2cbf35,_0x33de('0x13'));logger[_0x33de('0x14')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x2cbf35,_0x33de('0x13'),JSON[_0x33de('0x15')](_0x8dfa3b));if(_0x8dfa3b['error']){if(_0x8dfa3b['error'][_0x33de('0x16')]===0x1f4){logger[_0x33de('0x17')](_0x33de('0x12'),_0x2cbf35,_0x8dfa3b[_0x33de('0x17')]['message']);return _0x241211(_0x8dfa3b[_0x33de('0x17')][_0x33de('0x18')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x2cbf35,_0x8dfa3b[_0x33de('0x17')][_0x33de('0x18')]);return _0x8b655d(_0x8dfa3b[_0x33de('0x17')]['message']);}else{logger[_0x33de('0x11')](_0x33de('0x12'),_0x2cbf35,'request\x20sent');_0x8b655d(_0x8dfa3b[_0x33de('0x19')][_0x33de('0x18')]);}})['catch'](function(_0x5bb74e){logger[_0x33de('0x17')]('MailMessage,\x20%s,\x20%s',_0x2cbf35,_0x5bb74e);_0x241211(_0x5bb74e);});});}exports[_0x33de('0x1a')]=function(_0x2f0529){var _0x3810b5=this;return new Promise(function(_0x315c9b,_0xc4f1a4){return db[_0x33de('0x1b')][_0x33de('0x1c')](_0x2f0529['body'],{'raw':_0x2f0529['options']?_0x2f0529[_0x33de('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x33de('0x10')](function(_0x4cd8db){logger[_0x33de('0x11')](_0x33de('0x1a'),_0x2f0529);logger['debug'](_0x33de('0x1a'),_0x2f0529,JSON['stringify'](_0x4cd8db));_0x315c9b(_0x4cd8db);})[_0x33de('0x1e')](function(_0x5c602d){logger[_0x33de('0x17')](_0x33de('0x1a'),_0x5c602d[_0x33de('0x18')],_0x2f0529);_0xc4f1a4(_0x3810b5['error'](0x1f4,_0x5c602d[_0x33de('0x18')]));});});};
\ No newline at end of file
+var _0x6343=['jayson/promise','client','redis','defaults','socket.io-emitter','./mailMessage.socket','register','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','create','options','raw','moment','bluebird','../../config/logger','rpc'];(function(_0x4295ee,_0x20d47e){var _0x281076=function(_0x34cbf4){while(--_0x34cbf4){_0x4295ee['push'](_0x4295ee['shift']());}};_0x281076(++_0x20d47e);}(_0x6343,0x168));var _0x3634=function(_0x3c38fd,_0x522eb1){_0x3c38fd=_0x3c38fd-0x0;var _0x555277=_0x6343[_0x3c38fd];return _0x555277;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3634('0x0'));var BPromise=require(_0x3634('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3634('0x2'))(_0x3634('0x3'));var config=require('../../config/environment');var jayson=require(_0x3634('0x4'));var client=jayson[_0x3634('0x5')]['http']({'port':0x232a});config[_0x3634('0x6')]=_[_0x3634('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3634('0x8'))(new Redis(config[_0x3634('0x6')]));require(_0x3634('0x9'))[_0x3634('0xa')](socket);function respondWithRpcPromise(_0x2e8e8b,_0x43f681,_0x5e907a){return new BPromise(function(_0x4b965a,_0x31bcfc){return client[_0x3634('0xb')](_0x2e8e8b,_0x5e907a)['then'](function(_0x2bb4db){logger[_0x3634('0xc')](_0x3634('0xd'),_0x43f681,_0x3634('0xe'));logger[_0x3634('0xf')](_0x3634('0x10'),_0x43f681,_0x3634('0xe'),JSON[_0x3634('0x11')](_0x2bb4db));if(_0x2bb4db[_0x3634('0x12')]){if(_0x2bb4db[_0x3634('0x12')][_0x3634('0x13')]===0x1f4){logger[_0x3634('0x12')](_0x3634('0xd'),_0x43f681,_0x2bb4db[_0x3634('0x12')]['message']);return _0x31bcfc(_0x2bb4db[_0x3634('0x12')]['message']);}logger[_0x3634('0x12')](_0x3634('0xd'),_0x43f681,_0x2bb4db[_0x3634('0x12')][_0x3634('0x14')]);return _0x4b965a(_0x2bb4db[_0x3634('0x12')]['message']);}else{logger[_0x3634('0xc')]('MailMessage,\x20%s,\x20%s',_0x43f681,'request\x20sent');_0x4b965a(_0x2bb4db[_0x3634('0x15')]['message']);}})[_0x3634('0x16')](function(_0x32e3c6){logger[_0x3634('0x12')]('MailMessage,\x20%s,\x20%s',_0x43f681,_0x32e3c6);_0x31bcfc(_0x32e3c6);});});}exports[_0x3634('0x17')]=function(_0x4366bc){var _0x577a6c=this;return new Promise(function(_0xeb9231,_0x506281){return db[_0x3634('0x18')][_0x3634('0x19')](_0x4366bc['body'],{'raw':_0x4366bc[_0x3634('0x1a')]?_0x4366bc[_0x3634('0x1a')][_0x3634('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x22b7ef){logger[_0x3634('0xc')]('CreateMailMessage',_0x4366bc);logger[_0x3634('0xf')]('CreateMailMessage',_0x4366bc,JSON['stringify'](_0x22b7ef));_0xeb9231(_0x22b7ef);})[_0x3634('0x16')](function(_0x862ab5){logger['error'](_0x3634('0x17'),_0x862ab5[_0x3634('0x14')],_0x4366bc);_0x506281(_0x577a6c[_0x3634('0x12')](0x1f4,_0x862ab5[_0x3634('0x14')]));});});};
\ No newline at end of file
index 8c677b5..3517b87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x710e=['mailMessage:','./mailMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x1afe5e,_0x3b5de1){var _0x4b0961=function(_0x21983a){while(--_0x21983a){_0x1afe5e['push'](_0x1afe5e['shift']());}};_0x4b0961(++_0x3b5de1);}(_0x710e,0x1b9));var _0xe710=function(_0x39004d,_0x349a16){_0x39004d=_0x39004d-0x0;var _0x486478=_0x710e[_0x39004d];return _0x486478;};'use strict';var MailMessageEvents=require(_0xe710('0x0'));var events=[_0xe710('0x1'),_0xe710('0x2'),_0xe710('0x3')];function createListener(_0x461cfb,_0x41fcb7){return function(_0x3e040c){_0x41fcb7[_0xe710('0x4')](_0x461cfb,_0x3e040c);};}function removeListener(_0x5401db,_0x42fe87){return function(){MailMessageEvents[_0xe710('0x5')](_0x5401db,_0x42fe87);};}exports[_0xe710('0x6')]=function(_0xc3e016){for(var _0x33db6a=0x0,_0x349f36=events['length'];_0x33db6a<_0x349f36;_0x33db6a++){var _0x1c5e35=events[_0x33db6a];var _0x4c3e88=createListener(_0xe710('0x7')+_0x1c5e35,_0xc3e016);MailMessageEvents['on'](_0x1c5e35,_0x4c3e88);}};
\ No newline at end of file
+var _0xf53f=['update','emit','removeListener','register','mailMessage:','./mailMessage.events','save','remove'];(function(_0x5cf130,_0x10fe9f){var _0x3f7bb1=function(_0xac3ecf){while(--_0xac3ecf){_0x5cf130['push'](_0x5cf130['shift']());}};_0x3f7bb1(++_0x10fe9f);}(_0xf53f,0x8d));var _0xff53=function(_0x123f96,_0x109748){_0x123f96=_0x123f96-0x0;var _0x56e556=_0xf53f[_0x123f96];return _0x56e556;};'use strict';var MailMessageEvents=require(_0xff53('0x0'));var events=[_0xff53('0x1'),_0xff53('0x2'),_0xff53('0x3')];function createListener(_0x3b48fc,_0x4afcd){return function(_0x492e12){_0x4afcd[_0xff53('0x4')](_0x3b48fc,_0x492e12);};}function removeListener(_0x18b504,_0x2077b9){return function(){MailMessageEvents[_0xff53('0x5')](_0x18b504,_0x2077b9);};}exports[_0xff53('0x6')]=function(_0x54d39c){for(var _0x54e637=0x0,_0x27b397=events['length'];_0x54e637<_0x27b397;_0x54e637++){var _0x1c27bb=events[_0x54e637];var _0x122746=createListener(_0xff53('0x7')+_0x1c27bb,_0x54d39c);MailMessageEvents['on'](_0x1c27bb,_0x122746);}};
\ No newline at end of file
index 22de920..79f7012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84c2=['put','delete','destroy','removeTeams','exports','util','path','express','Router','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','/:id/users','addAgents'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x84c2,0x13d));var _0x284c=function(_0x29a72f,_0xd8b4b5){_0x29a72f=_0x29a72f-0x0;var _0x31527d=_0x84c2[_0x29a72f];return _0x31527d;};'use strict';var multer=require('multer');var util=require(_0x284c('0x0'));var path=require(_0x284c('0x1'));var timeout=require('connect-timeout');var express=require(_0x284c('0x2'));var router=express[_0x284c('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x284c('0x4'));var config=require(_0x284c('0x5'));var controller=require(_0x284c('0x6'));router[_0x284c('0x7')]('/',auth[_0x284c('0x8')](),controller[_0x284c('0x9')]);router[_0x284c('0x7')]('/describe',auth[_0x284c('0x8')](),controller['describe']);router['get'](_0x284c('0xa'),auth[_0x284c('0x8')](),controller[_0x284c('0xb')]);router[_0x284c('0x7')](_0x284c('0xc'),auth[_0x284c('0x8')](),controller[_0x284c('0xd')]);router[_0x284c('0x7')](_0x284c('0xe'),auth[_0x284c('0x8')](),controller[_0x284c('0xf')]);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x284c('0x10')]);router['post']('/',auth[_0x284c('0x8')](),controller['create']);router[_0x284c('0x11')]('/:id/teams',auth[_0x284c('0x8')](),controller[_0x284c('0x12')]);router[_0x284c('0x11')](_0x284c('0x13'),auth['isAuthenticated'](),controller[_0x284c('0x14')]);router[_0x284c('0x15')](_0x284c('0xa'),auth[_0x284c('0x8')](),controller['update']);router[_0x284c('0x16')]('/:id',auth[_0x284c('0x8')](),controller[_0x284c('0x17')]);router['delete']('/:id/teams',auth[_0x284c('0x8')](),controller[_0x284c('0x18')]);router[_0x284c('0x16')](_0x284c('0x13'),auth[_0x284c('0x8')](),controller['removeAgents']);module[_0x284c('0x19')]=router;
\ No newline at end of file
+var _0x14c4=['express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','/:id','show','getMembers','/:id/teams','getAgents','post','create','/:id/users','update','delete','destroy','removeTeams','exports','multer','path','connect-timeout'];(function(_0x3896c4,_0x28a010){var _0x5e6676=function(_0x5b06c8){while(--_0x5b06c8){_0x3896c4['push'](_0x3896c4['shift']());}};_0x5e6676(++_0x28a010);}(_0x14c4,0xcc));var _0x414c=function(_0xeefaee,_0x4c8038){_0xeefaee=_0xeefaee-0x0;var _0x225a0e=_0x14c4[_0xeefaee];return _0x225a0e;};'use strict';var multer=require(_0x414c('0x0'));var util=require('util');var path=require(_0x414c('0x1'));var timeout=require(_0x414c('0x2'));var express=require(_0x414c('0x3'));var router=express['Router']();var fs_extra=require(_0x414c('0x4'));var auth=require(_0x414c('0x5'));var interaction=require(_0x414c('0x6'));var config=require('../../config/environment');var controller=require('./mailQueue.controller');router[_0x414c('0x7')]('/',auth[_0x414c('0x8')](),controller['index']);router[_0x414c('0x7')](_0x414c('0x9'),auth[_0x414c('0x8')](),controller['describe']);router[_0x414c('0x7')](_0x414c('0xa'),auth[_0x414c('0x8')](),controller[_0x414c('0xb')]);router[_0x414c('0x7')]('/:id/members',auth[_0x414c('0x8')](),controller[_0x414c('0xc')]);router[_0x414c('0x7')](_0x414c('0xd'),auth[_0x414c('0x8')](),controller['getTeams']);router[_0x414c('0x7')]('/:id/users',auth[_0x414c('0x8')](),controller[_0x414c('0xe')]);router[_0x414c('0xf')]('/',auth[_0x414c('0x8')](),controller[_0x414c('0x10')]);router[_0x414c('0xf')](_0x414c('0xd'),auth[_0x414c('0x8')](),controller['addTeams']);router[_0x414c('0xf')](_0x414c('0x11'),auth[_0x414c('0x8')](),controller['addAgents']);router['put'](_0x414c('0xa'),auth['isAuthenticated'](),controller[_0x414c('0x12')]);router[_0x414c('0x13')](_0x414c('0xa'),auth[_0x414c('0x8')](),controller[_0x414c('0x14')]);router[_0x414c('0x13')]('/:id/teams',auth['isAuthenticated'](),controller[_0x414c('0x15')]);router['delete'](_0x414c('0x11'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x414c('0x16')]=router;
\ No newline at end of file
index 10eb042..e6cd853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4c3=['name','INTEGER','rrmemory','sequelize','exports','STRING'];(function(_0x1062d0,_0x10f55e){var _0x1326e6=function(_0x137404){while(--_0x137404){_0x1062d0['push'](_0x1062d0['shift']());}};_0x1326e6(++_0x10f55e);}(_0xa4c3,0x1cb));var _0x3a4c=function(_0x5a28e6,_0x79acce){_0x5a28e6=_0x5a28e6-0x0;var _0x40fc8e=_0xa4c3[_0x5a28e6];return _0x40fc8e;};'use strict';var Sequelize=require(_0x3a4c('0x0'));module[_0x3a4c('0x1')]={'name':{'type':Sequelize[_0x3a4c('0x2')],'unique':_0x3a4c('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3a4c('0x2')]},'timeout':{'type':Sequelize[_0x3a4c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x3a4c('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0xb976=['rrmemory','beepall','sequelize','exports','STRING','name','INTEGER'];(function(_0x43d16c,_0x2b5447){var _0x208cce=function(_0x371720){while(--_0x371720){_0x43d16c['push'](_0x43d16c['shift']());}};_0x208cce(++_0x2b5447);}(_0xb976,0x1c2));var _0x6b97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb976[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x6b97('0x0'));module[_0x6b97('0x1')]={'name':{'type':Sequelize[_0x6b97('0x2')],'unique':_0x6b97('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6b97('0x2')]},'timeout':{'type':Sequelize[_0x6b97('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x6b97('0x5'),_0x6b97('0x6'),'roundrobin')}};
\ No newline at end of file
index 3f072f2..2c943a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93f1=['spread','userMailQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','update','then','destroy','UserProfileResource','error','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filters','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','order','MailQueueId','UserMailQueue','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','Agents','online','voicePause','sequelize','findOrCreate','forEach','removeTeams','ids','select','tq.TeamId','from','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','removeAgents','emit','userMailQueue:remove','addAgents','omit'];(function(_0x21141c,_0xed9815){var _0x2addaf=function(_0x53dcd6){while(--_0x53dcd6){_0x21141c['push'](_0x21141c['shift']());}};_0x2addaf(++_0xed9815);}(_0x93f1,0x1b1));var _0x193f=function(_0x126818,_0x382b88){_0x126818=_0x126818-0x0;var _0x31df92=_0x93f1[_0x126818];return _0x31df92;};'use strict';var emlformat=require(_0x193f('0x0'));var rimraf=require(_0x193f('0x1'));var zipdir=require(_0x193f('0x2'));var jsonpatch=require(_0x193f('0x3'));var rp=require(_0x193f('0x4'));var moment=require(_0x193f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x193f('0x6'));var util=require('util');var path=require(_0x193f('0x7'));var sox=require('sox');var csv=require(_0x193f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x193f('0x9'));var _=require(_0x193f('0xa'));var squel=require(_0x193f('0xb'));var crypto=require(_0x193f('0xc'));var jsforce=require(_0x193f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x193f('0x8'));var querystring=require(_0x193f('0xe'));var Papa=require(_0x193f('0xf'));var Redis=require(_0x193f('0x10'));var authService=require(_0x193f('0x11'));var qs=require(_0x193f('0x12'));var as=require(_0x193f('0x13'));var hardwareService=require(_0x193f('0x14'));var logger=require(_0x193f('0x15'))(_0x193f('0x16'));var utils=require(_0x193f('0x17'));var config=require(_0x193f('0x18'));var licenseUtil=require(_0x193f('0x19'));var db=require(_0x193f('0x1a'))['db'];config[_0x193f('0x1b')]=_[_0x193f('0x1c')](config[_0x193f('0x1b')],{'host':_0x193f('0x1d'),'port':0x18eb});var socket=require(_0x193f('0x1e'))(new Redis(config[_0x193f('0x1b')]));require('./mailQueue.socket')[_0x193f('0x1f')](socket);function respondWithStatusCode(_0x35ede3,_0x49d492){_0x49d492=_0x49d492||0xcc;return function(_0x2f05dc){if(_0x2f05dc){return _0x35ede3[_0x193f('0x20')](_0x49d492);}return _0x35ede3[_0x193f('0x21')](_0x49d492)[_0x193f('0x22')]();};}function respondWithResult(_0xb0041c,_0x306a36){_0x306a36=_0x306a36||0xc8;return function(_0x3448d9){if(_0x3448d9){return _0xb0041c[_0x193f('0x21')](_0x306a36)[_0x193f('0x23')](_0x3448d9);}};}function respondWithFilteredResult(_0x23d33c,_0x5bc441){return function(_0x477cfb){if(_0x477cfb){var _0x39f103=typeof _0x5bc441[_0x193f('0x24')]===_0x193f('0x25')&&typeof _0x5bc441['limit']===_0x193f('0x25');var _0x4acd3f=_0x477cfb[_0x193f('0x26')];var _0xc15c17=_0x39f103?0x0:_0x5bc441['offset'];var _0x52f903=_0x39f103?_0x477cfb['count']:_0x5bc441[_0x193f('0x24')]+_0x5bc441['limit'];var _0x4ffab9;if(_0x52f903>=_0x4acd3f){_0x52f903=_0x4acd3f;_0x4ffab9=0xc8;}else{_0x4ffab9=0xce;}_0x23d33c[_0x193f('0x21')](_0x4ffab9);return _0x23d33c[_0x193f('0x27')](_0x193f('0x28'),_0xc15c17+'-'+_0x52f903+'/'+_0x4acd3f)['json'](_0x477cfb);}return null;};}function patchUpdates(_0x8da1d0){return function(_0x51cce7){try{jsonpatch[_0x193f('0x29')](_0x51cce7,_0x8da1d0,!![]);}catch(_0x364e05){return BPromise['reject'](_0x364e05);}return _0x51cce7['save']();};}function saveUpdates(_0x34ca1e,_0x3bf179){return function(_0x3e9360){if(_0x3e9360){return _0x3e9360[_0x193f('0x2a')](_0x34ca1e)[_0x193f('0x2b')](function(_0x5b73e7){return _0x5b73e7;});}return null;};}function removeEntity(_0x417abe,_0x546561){return function(_0x8caef0){if(_0x8caef0){return _0x8caef0[_0x193f('0x2c')]()[_0x193f('0x2b')](function(){var _0x4c5e67=_0x8caef0['get']({'plain':!![]});var _0x42fdc1='MailQueues';return db[_0x193f('0x2d')]['destroy']({'where':{'type':_0x42fdc1,'resourceId':_0x4c5e67['id']}})[_0x193f('0x2b')](function(){return _0x8caef0;});})[_0x193f('0x2b')](function(){_0x417abe['status'](0xcc)[_0x193f('0x22')]();});}};}function handleEntityNotFound(_0x9d65bb,_0x2d623d){return function(_0x1d02bf){if(!_0x1d02bf){_0x9d65bb[_0x193f('0x20')](0x194);}return _0x1d02bf;};}function handleError(_0x2190ec,_0x24b5ff){_0x24b5ff=_0x24b5ff||0x1f4;return function(_0x35ae08){logger[_0x193f('0x2e')](_0x35ae08['stack']);if(_0x35ae08[_0x193f('0x2f')]){delete _0x35ae08[_0x193f('0x2f')];}_0x2190ec[_0x193f('0x21')](_0x24b5ff)[_0x193f('0x30')](_0x35ae08);};}exports[_0x193f('0x31')]=function(_0x372063,_0x4484f0){var _0x535d29={},_0x20f7f4={},_0x19b2b7={'count':0x0,'rows':[]};var _0x46fbec=_[_0x193f('0x32')](db[_0x193f('0x33')][_0x193f('0x34')],function(_0x171eb5){return{'name':_0x171eb5[_0x193f('0x35')],'type':_0x171eb5[_0x193f('0x36')][_0x193f('0x37')]};});_0x20f7f4[_0x193f('0x38')]=_[_0x193f('0x32')](_0x46fbec,_0x193f('0x2f'));_0x20f7f4[_0x193f('0x39')]=_[_0x193f('0x3a')](_0x372063[_0x193f('0x39')]);_0x20f7f4['filters']=_[_0x193f('0x3b')](_0x20f7f4[_0x193f('0x38')],_0x20f7f4['query']);_0x535d29['attributes']=_[_0x193f('0x3b')](_0x20f7f4[_0x193f('0x38')],qs[_0x193f('0x3c')](_0x372063[_0x193f('0x39')][_0x193f('0x3c')]));_0x535d29[_0x193f('0x3d')]=_0x535d29[_0x193f('0x3d')][_0x193f('0x3e')]?_0x535d29['attributes']:_0x20f7f4[_0x193f('0x38')];if(!_0x372063[_0x193f('0x39')][_0x193f('0x3f')](_0x193f('0x40'))){_0x535d29[_0x193f('0x41')]=qs[_0x193f('0x41')](_0x372063[_0x193f('0x39')]['limit']);_0x535d29[_0x193f('0x24')]=qs[_0x193f('0x24')](_0x372063[_0x193f('0x39')][_0x193f('0x24')]);}_0x535d29['order']=qs[_0x193f('0x42')](_0x372063[_0x193f('0x39')][_0x193f('0x42')]);_0x535d29[_0x193f('0x43')]=qs['filters'](_[_0x193f('0x44')](_0x372063[_0x193f('0x39')],_0x20f7f4[_0x193f('0x45')]),_0x46fbec);if(_0x372063[_0x193f('0x39')]['filter']){_0x535d29['where']=_[_0x193f('0x46')](_0x535d29[_0x193f('0x43')],{'$or':_[_0x193f('0x32')](_0x46fbec,function(_0x4a8db0){if(_0x4a8db0[_0x193f('0x36')]!=='VIRTUAL'){var _0x5ab2a3={};_0x5ab2a3[_0x4a8db0['name']]={'$like':'%'+_0x372063[_0x193f('0x39')][_0x193f('0x47')]+'%'};return _0x5ab2a3;}})});}_0x535d29=_[_0x193f('0x46')]({},_0x535d29,_0x372063[_0x193f('0x48')]);var _0x3a7cb1={'where':_0x535d29[_0x193f('0x43')]};return db[_0x193f('0x33')][_0x193f('0x26')](_0x3a7cb1)['then'](function(_0x3126ca){_0x19b2b7[_0x193f('0x26')]=_0x3126ca;if(_0x372063['query'][_0x193f('0x49')]){_0x535d29[_0x193f('0x4a')]=[{'all':!![]}];}return db[_0x193f('0x33')][_0x193f('0x4b')](_0x535d29);})['then'](function(_0x52c53c){_0x19b2b7[_0x193f('0x4c')]=_0x52c53c;return _0x19b2b7;})[_0x193f('0x2b')](respondWithFilteredResult(_0x4484f0,_0x535d29))[_0x193f('0x4d')](handleError(_0x4484f0,null));};exports[_0x193f('0x4e')]=function(_0x2d8cf8,_0x14fc5d){var _0x2d50dc={'raw':!![],'where':{'id':_0x2d8cf8[_0x193f('0x4f')]['id']}},_0x5385b6={};_0x5385b6[_0x193f('0x38')]=_[_0x193f('0x3a')](db['MailQueue'][_0x193f('0x34')]);_0x5385b6[_0x193f('0x39')]=_[_0x193f('0x3a')](_0x2d8cf8[_0x193f('0x39')]);_0x5385b6['filters']=_['intersection'](_0x5385b6['model'],_0x5385b6['query']);_0x2d50dc['attributes']=_['intersection'](_0x5385b6['model'],qs[_0x193f('0x3c')](_0x2d8cf8['query'][_0x193f('0x3c')]));_0x2d50dc[_0x193f('0x3d')]=_0x2d50dc[_0x193f('0x3d')]['length']?_0x2d50dc[_0x193f('0x3d')]:_0x5385b6[_0x193f('0x38')];if(_0x2d8cf8[_0x193f('0x39')][_0x193f('0x49')]){_0x2d50dc[_0x193f('0x4a')]=[{'all':!![]}];}_0x2d50dc=_[_0x193f('0x46')]({},_0x2d50dc,_0x2d8cf8[_0x193f('0x48')]);return db[_0x193f('0x33')][_0x193f('0x50')](_0x2d50dc)[_0x193f('0x2b')](handleEntityNotFound(_0x14fc5d,null))['then'](respondWithResult(_0x14fc5d,null))['catch'](handleError(_0x14fc5d,null));};exports[_0x193f('0x51')]=function(_0x36015d,_0x1b75bd){return db['MailQueue'][_0x193f('0x51')](_0x36015d[_0x193f('0x52')],{})['then'](function(_0xf83089){var _0x15170c=_0x36015d[_0x193f('0x53')][_0x193f('0x54')]({'plain':!![]});if(!_0x15170c)throw new Error(_0x193f('0x55'));if(_0x15170c[_0x193f('0x56')]===_0x193f('0x53')){var _0x2bb453=_0xf83089[_0x193f('0x54')]({'plain':!![]});var _0x2f3cf8=_0x193f('0x57');return db[_0x193f('0x58')][_0x193f('0x50')]({'where':{'name':_0x2f3cf8,'userProfileId':_0x15170c[_0x193f('0x59')]},'raw':!![]})['then'](function(_0x5f5ac9){if(_0x5f5ac9&&_0x5f5ac9[_0x193f('0x5a')]===0x0){return db[_0x193f('0x2d')]['create']({'name':_0x2bb453[_0x193f('0x2f')],'resourceId':_0x2bb453['id'],'type':_0x5f5ac9[_0x193f('0x2f')],'sectionId':_0x5f5ac9['id']},{})[_0x193f('0x2b')](function(){return _0xf83089;});}else{return _0xf83089;}})[_0x193f('0x4d')](function(_0x705413){logger['error'](_0x193f('0x5b'),_0x705413);throw _0x705413;});}return _0xf83089;})[_0x193f('0x2b')](respondWithResult(_0x1b75bd,0xc9))[_0x193f('0x4d')](handleError(_0x1b75bd,null));};exports[_0x193f('0x2a')]=function(_0x1a541f,_0xd1541f){if(_0x1a541f['body']['id']){delete _0x1a541f['body']['id'];}return db[_0x193f('0x33')][_0x193f('0x50')]({'where':{'id':_0x1a541f[_0x193f('0x4f')]['id']}})[_0x193f('0x2b')](handleEntityNotFound(_0xd1541f,null))['then'](saveUpdates(_0x1a541f[_0x193f('0x52')],null))[_0x193f('0x2b')](respondWithResult(_0xd1541f,null))[_0x193f('0x4d')](handleError(_0xd1541f,null));};exports[_0x193f('0x2c')]=function(_0x21b40f,_0x22f151){return db['MailQueue'][_0x193f('0x50')]({'where':{'id':_0x21b40f[_0x193f('0x4f')]['id']}})[_0x193f('0x2b')](handleEntityNotFound(_0x22f151,null))[_0x193f('0x2b')](removeEntity(_0x22f151,null))[_0x193f('0x4d')](handleError(_0x22f151,null));};exports[_0x193f('0x5c')]=function(_0x321eb2,_0x36a989){return db[_0x193f('0x33')][_0x193f('0x5c')]()[_0x193f('0x2b')](respondWithResult(_0x36a989,null))[_0x193f('0x4d')](handleError(_0x36a989,null));};exports['getMembers']=function(_0x277a55,_0x4aa0b7,_0x26bc44){var _0x388736={'raw':!![],'where':{}},_0x36ea0b={},_0x449f3d;return db['MailQueue'][_0x193f('0x5d')]({'where':{'id':_0x277a55[_0x193f('0x4f')]['id']}})[_0x193f('0x2b')](handleEntityNotFound(_0x4aa0b7,null))[_0x193f('0x2b')](function(_0x3c2bf8){if(_0x3c2bf8){_0x449f3d=_0x3c2bf8[_0x193f('0x54')]({'plain':!![]});_0x36ea0b[_0x193f('0x38')]=_[_0x193f('0x3a')](db['UserMailQueue'][_0x193f('0x34')]);_0x36ea0b[_0x193f('0x39')]=_[_0x193f('0x3a')](_0x277a55[_0x193f('0x39')]);_0x36ea0b[_0x193f('0x45')]=_[_0x193f('0x3b')](_0x36ea0b['model'],_0x36ea0b[_0x193f('0x39')]);_0x388736['attributes']=_['intersection'](_0x36ea0b[_0x193f('0x38')],qs[_0x193f('0x3c')](_0x277a55[_0x193f('0x39')][_0x193f('0x3c')]));_0x388736[_0x193f('0x3d')]=_0x388736[_0x193f('0x3d')][_0x193f('0x3e')]?_0x388736['attributes']:_0x36ea0b['model'];if(!_0x277a55['query'][_0x193f('0x3f')]('nolimit')){_0x388736[_0x193f('0x41')]=qs[_0x193f('0x41')](_0x277a55[_0x193f('0x39')][_0x193f('0x41')]);_0x388736[_0x193f('0x24')]=qs[_0x193f('0x24')](_0x277a55[_0x193f('0x39')][_0x193f('0x24')]);}_0x388736[_0x193f('0x5e')]=qs[_0x193f('0x42')](_0x277a55[_0x193f('0x39')][_0x193f('0x42')]);_0x388736[_0x193f('0x43')]=qs[_0x193f('0x45')](_[_0x193f('0x44')](_0x277a55[_0x193f('0x39')],_0x36ea0b[_0x193f('0x45')]));_0x388736[_0x193f('0x43')][_0x193f('0x5f')]=_0x3c2bf8['id'];if(_0x277a55['query'][_0x193f('0x47')]){_0x388736[_0x193f('0x43')]=_[_0x193f('0x46')](_0x388736[_0x193f('0x43')],{'$or':_[_0x193f('0x32')](_0x388736[_0x193f('0x3d')],function(_0x1efbb8){var _0x4bf4fb={};_0x4bf4fb[_0x1efbb8]={'$like':'%'+_0x277a55[_0x193f('0x39')][_0x193f('0x47')]+'%'};return _0x4bf4fb;})});}_0x388736=_[_0x193f('0x46')]({},_0x388736,_0x277a55[_0x193f('0x48')]);return db[_0x193f('0x60')][_0x193f('0x4b')](_0x388736);}})[_0x193f('0x2b')](function(_0x5c332d){if(_0x5c332d){return db[_0x193f('0x61')][_0x193f('0x62')]({'where':{'id':_[_0x193f('0x32')](_0x5c332d,_0x193f('0x63')),'role':_0x193f('0x64')},'attributes':['id',_0x193f('0x2f'),_0x193f('0x65'),_0x193f('0x66'),_0x193f('0x67')]});}})[_0x193f('0x2b')](function(_0x2fcc0e){if(_0x2fcc0e){return{'count':_0x2fcc0e['count'],'rows':_[_0x193f('0x32')](_0x2fcc0e[_0x193f('0x4c')],function(_0x43da92){return{'membername':_0x43da92[_0x193f('0x2f')],'UserId':_0x43da92['id'],'queue_name':_0x449f3d[_0x193f('0x2f')],'MailQueueId':_0x449f3d['id'],'interface':util[_0x193f('0x68')](_0x193f('0x69'),_0x193f('0x6a'),_0x43da92[_0x193f('0x2f')]),'penalty':0x0,'paused':_0x43da92['mailPause'],'createdAt':_0x43da92['createdAt'],'updatedAt':_0x43da92[_0x193f('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x193f('0x2b')](respondWithFilteredResult(_0x4aa0b7,_0x388736))[_0x193f('0x4d')](handleError(_0x4aa0b7,null));};exports[_0x193f('0x6b')]=function(_0x3cf829,_0x1a6d6e,_0x56562b){var _0x66074a={};var _0x12fd8d={};var _0x2f5f72;var _0x7c8336;return db[_0x193f('0x33')][_0x193f('0x5d')]({'where':{'id':_0x3cf829['params']['id']}})['then'](handleEntityNotFound(_0x1a6d6e,null))[_0x193f('0x2b')](function(_0x569d56){if(_0x569d56){_0x2f5f72=_0x569d56;_0x12fd8d[_0x193f('0x38')]=_[_0x193f('0x3a')](db[_0x193f('0x6c')][_0x193f('0x34')]);_0x12fd8d[_0x193f('0x39')]=_['keys'](_0x3cf829[_0x193f('0x39')]);_0x12fd8d['filters']=_['intersection'](_0x12fd8d[_0x193f('0x38')],_0x12fd8d[_0x193f('0x39')]);_0x66074a[_0x193f('0x3d')]=_[_0x193f('0x3b')](_0x12fd8d[_0x193f('0x38')],qs[_0x193f('0x3c')](_0x3cf829[_0x193f('0x39')][_0x193f('0x3c')]));_0x66074a['attributes']=_0x66074a[_0x193f('0x3d')][_0x193f('0x3e')]?_0x66074a['attributes']:_0x12fd8d['model'];_0x66074a['order']=qs[_0x193f('0x42')](_0x3cf829[_0x193f('0x39')][_0x193f('0x42')]);_0x66074a[_0x193f('0x43')]=qs[_0x193f('0x45')](_[_0x193f('0x44')](_0x3cf829[_0x193f('0x39')],_0x12fd8d[_0x193f('0x45')]));if(_0x3cf829[_0x193f('0x39')][_0x193f('0x47')]){_0x66074a[_0x193f('0x43')]=_[_0x193f('0x46')](_0x66074a[_0x193f('0x43')],{'$or':_[_0x193f('0x32')](_0x66074a[_0x193f('0x3d')],function(_0x318d39){var _0x14a65c={};_0x14a65c[_0x318d39]={'$like':'%'+_0x3cf829['query'][_0x193f('0x47')]+'%'};return _0x14a65c;})});}_0x66074a=_[_0x193f('0x46')]({},_0x66074a,_0x3cf829[_0x193f('0x48')]);return _0x2f5f72[_0x193f('0x6b')](_0x66074a);}})[_0x193f('0x2b')](function(_0x146e71){if(_0x146e71){_0x7c8336=_0x146e71[_0x193f('0x3e')];if(!_0x3cf829['query'][_0x193f('0x3f')](_0x193f('0x40'))){_0x66074a[_0x193f('0x41')]=qs['limit'](_0x3cf829['query'][_0x193f('0x41')]);_0x66074a[_0x193f('0x24')]=qs[_0x193f('0x24')](_0x3cf829[_0x193f('0x39')][_0x193f('0x24')]);}return _0x2f5f72[_0x193f('0x6b')](_0x66074a);}})['then'](function(_0x3bc6cb){if(_0x3bc6cb){return _0x3bc6cb?{'count':_0x7c8336,'rows':_0x3bc6cb}:null;}})[_0x193f('0x2b')](respondWithResult(_0x1a6d6e,null))[_0x193f('0x4d')](handleError(_0x1a6d6e,null));};exports[_0x193f('0x6d')]=function(_0x45d571,_0x26347,_0x402660){var _0x45320e=_0x45d571['body']['ids'];return db['Team'][_0x193f('0x4b')]({'where':{'id':_0x45320e},'attributes':['id'],'include':[{'model':db['User'],'as':_0x193f('0x6e'),'attributes':['id','name',_0x193f('0x6f'),_0x193f('0x70'),'interface'],'raw':!![]}]})[_0x193f('0x2b')](function(_0xdd162f){if(_0xdd162f){var _0x35478e=_['flatMap'](_0xdd162f,function(_0x157f3e){var _0x47509b=_0x157f3e[_0x193f('0x54')]({'plain':!![]});return _0x47509b[_0x193f('0x6e')];});return db['MailQueue']['find']({'where':{'id':_0x45d571['params']['id']}})[_0x193f('0x2b')](function(_0x2ad604){return db[_0x193f('0x71')]['transaction'](function(_0x5f4541){return _0x2ad604[_0x193f('0x6d')](_0x45320e,{'transaction':_0x5f4541})[_0x193f('0x2b')](function(){return BPromise['each'](_0x35478e,function(_0x2ee2e7){return db['UserMailQueue'][_0x193f('0x72')]({'where':{'UserId':_0x2ee2e7['id'],'MailQueueId':_0x45d571[_0x193f('0x4f')]['id']},'transaction':_0x5f4541});});})['then'](function(){_0x35478e[_0x193f('0x73')](function(_0x165166){socket['emit']('userMailQueue:save',{'UserId':_0x165166['id'],'MailQueueId':_0x2ad604['id']});});});});});}})['then'](respondWithStatusCode(_0x26347,null))[_0x193f('0x4d')](handleError(_0x26347,null));};exports[_0x193f('0x74')]=function(_0x3d7662,_0x1b5ec3,_0x243f80){return db['Team']['findAll']({'where':{'id':_0x3d7662[_0x193f('0x39')][_0x193f('0x75')]},'attributes':['id'],'include':[{'model':db[_0x193f('0x61')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x193f('0x2b')](handleEntityNotFound(_0x1b5ec3,null))[_0x193f('0x2b')](function(_0xea7f63){var _0x14fbb0=_[_0x193f('0x32')](_0xea7f63,'id');var _0x40e72a=[];var _0xba374f=[];var _0x12099a=squel[_0x193f('0x76')]();_0x12099a['field'](_0x193f('0x77'))[_0x193f('0x78')](_0x193f('0x79'),'tq')[_0x193f('0x7a')]('user_has_teams','ut',_0x193f('0x7b'))[_0x193f('0x43')]('MailQueueId\x20=\x20?',_0x3d7662[_0x193f('0x4f')]['id']);for(var _0x48ca4b=0x0;_0x48ca4b<_0xea7f63['length'];_0x48ca4b+=0x1){let _0x3f939c=_0xea7f63[_0x48ca4b];for(var _0x37deec=0x0;_0x37deec<_0x3f939c['Agents'][_0x193f('0x3e')];_0x37deec+=0x1){let _0x5c3711=_0x3f939c[_0x193f('0x6e')][_0x37deec];var _0x547ed6=_0x12099a['clone']();_0x547ed6['where']('ut.UserId\x20=\x20?',_0x5c3711['id']);_0xba374f[_0x193f('0x7c')](db[_0x193f('0x71')]['query'](_0x547ed6[_0x193f('0x7d')](),{'type':db[_0x193f('0x71')][_0x193f('0x7e')][_0x193f('0x7f')]})[_0x193f('0x2b')](function(_0x515242){if(_0x515242[_0x193f('0x3e')]===0x1){return _0x5c3711['id'];}else{var _0x1a44db=_[_0x193f('0x80')](_['map'](_0x515242,_0x193f('0x81')),function(_0x7f812){return _[_0x193f('0x82')](_0x14fbb0,_0x7f812);});if(_0x1a44db){return _0x5c3711['id'];}}}));}}return BPromise[_0x193f('0x83')](_0xba374f)[_0x193f('0x2b')](function(_0x38c28e){_0x40e72a=_(_0x40e72a)['union'](_0x38c28e)[_0x193f('0x84')]()[_0x193f('0x85')]();return db[_0x193f('0x33')][_0x193f('0x50')]({'where':{'id':_0x3d7662[_0x193f('0x4f')]['id']}})['then'](function(_0x39ef48){return db[_0x193f('0x71')]['transaction'](function(_0x56b157){return _0x39ef48[_0x193f('0x74')](_0x3d7662[_0x193f('0x39')][_0x193f('0x75')],{'transaction':_0x56b157})[_0x193f('0x2b')](function(){if(!_['isEmpty'](_0x40e72a)){return _0x39ef48[_0x193f('0x86')](_0x40e72a,{'transaction':_0x56b157});}})['then'](function(){_0x40e72a[_0x193f('0x73')](function(_0x5a52f5){socket[_0x193f('0x87')](_0x193f('0x88'),{'UserId':_0x5a52f5,'MailQueueId':_0x39ef48['id']});});});});});});})['then'](respondWithStatusCode(_0x1b5ec3,null))[_0x193f('0x4d')](handleError(_0x1b5ec3,null));};exports[_0x193f('0x89')]=function(_0x5be67a,_0x2632e1,_0x1189b3){return db[_0x193f('0x33')]['find']({'where':{'id':_0x5be67a[_0x193f('0x4f')]['id']}})[_0x193f('0x2b')](handleEntityNotFound(_0x2632e1,null))[_0x193f('0x2b')](function(_0x1d550e){if(_0x1d550e){return _0x1d550e[_0x193f('0x89')](_0x5be67a[_0x193f('0x52')]['ids'],_[_0x193f('0x8a')](_0x5be67a[_0x193f('0x52')],[_0x193f('0x75'),'id'])||{})[_0x193f('0x8b')](function(_0x1af8ff){for(var _0x4edd93=0x0;_0x4edd93<_0x5be67a['body'][_0x193f('0x75')][_0x193f('0x3e')];_0x4edd93+=0x1){socket[_0x193f('0x87')](_0x193f('0x8c'),{'UserId':Number(_0x5be67a[_0x193f('0x52')]['ids'][_0x4edd93]),'MailQueueId':Number(_0x5be67a[_0x193f('0x4f')]['id'])});}return _0x1af8ff;});}})[_0x193f('0x2b')](respondWithResult(_0x2632e1,null))[_0x193f('0x4d')](handleError(_0x2632e1,null));};exports[_0x193f('0x86')]=function(_0xeef492,_0x20c609,_0x17739e){return db['MailQueue'][_0x193f('0x50')]({'where':{'id':_0xeef492[_0x193f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x20c609,null))[_0x193f('0x2b')](function(_0x2a4f3a){if(_0x2a4f3a){return _0x2a4f3a[_0x193f('0x86')](_0xeef492[_0x193f('0x39')]['ids'])[_0x193f('0x2b')](function(){if(_[_0x193f('0x8d')](_0xeef492[_0x193f('0x39')][_0x193f('0x75')])){for(var _0x3e1a78=0x0;_0x3e1a78<_0xeef492[_0x193f('0x39')][_0x193f('0x75')]['length'];_0x3e1a78+=0x1){socket[_0x193f('0x87')](_0x193f('0x88'),{'UserId':Number(_0xeef492[_0x193f('0x39')]['ids'][_0x3e1a78]),'MailQueueId':Number(_0xeef492[_0x193f('0x4f')]['id'])});}}else{socket[_0x193f('0x87')]('userMailQueue:remove',{'UserId':Number(_0xeef492['query'][_0x193f('0x75')]),'MailQueueId':Number(_0xeef492['params']['id'])});}});}})['then'](respondWithStatusCode(_0x20c609,null))['catch'](handleError(_0x20c609,null));};exports['getAgents']=function(_0x2d0708,_0x3ab67b,_0x4da45a){var _0x42f28={};var _0x463aaa={};var _0x3e7c64;var _0x117edf;return db[_0x193f('0x33')][_0x193f('0x5d')]({'where':{'id':_0x2d0708[_0x193f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3ab67b,null))[_0x193f('0x2b')](function(_0x21b6f9){if(_0x21b6f9){_0x3e7c64=_0x21b6f9;_0x463aaa['model']=_['keys'](db[_0x193f('0x61')][_0x193f('0x34')]);_0x463aaa[_0x193f('0x39')]=_[_0x193f('0x3a')](_0x2d0708['query']);_0x463aaa[_0x193f('0x45')]=_[_0x193f('0x3b')](_0x463aaa['model'],_0x463aaa[_0x193f('0x39')]);_0x42f28[_0x193f('0x3d')]=_['intersection'](_0x463aaa['model'],qs['fields'](_0x2d0708[_0x193f('0x39')][_0x193f('0x3c')]));_0x42f28['attributes']=_0x42f28[_0x193f('0x3d')][_0x193f('0x3e')]?_0x42f28[_0x193f('0x3d')]:_0x463aaa[_0x193f('0x38')];_0x42f28[_0x193f('0x5e')]=qs[_0x193f('0x42')](_0x2d0708[_0x193f('0x39')][_0x193f('0x42')]);_0x42f28[_0x193f('0x43')]=qs[_0x193f('0x45')](_['pick'](_0x2d0708[_0x193f('0x39')],_0x463aaa[_0x193f('0x45')]));if(_0x2d0708[_0x193f('0x39')][_0x193f('0x47')]){_0x42f28[_0x193f('0x43')]=_[_0x193f('0x46')](_0x42f28[_0x193f('0x43')],{'$or':_[_0x193f('0x32')](_0x42f28['attributes'],function(_0x1ebf44){var _0x1b5dc7={};_0x1b5dc7[_0x1ebf44]={'$like':'%'+_0x2d0708[_0x193f('0x39')]['filter']+'%'};return _0x1b5dc7;})});}_0x42f28=_[_0x193f('0x46')]({},_0x42f28,_0x2d0708[_0x193f('0x48')]);return _0x3e7c64[_0x193f('0x8e')](_0x42f28);}})[_0x193f('0x2b')](function(_0x5a0afb){if(_0x5a0afb){_0x117edf=_0x5a0afb[_0x193f('0x3e')];if(!_0x2d0708[_0x193f('0x39')][_0x193f('0x3f')](_0x193f('0x40'))){_0x42f28[_0x193f('0x41')]=qs[_0x193f('0x41')](_0x2d0708['query'][_0x193f('0x41')]);_0x42f28[_0x193f('0x24')]=qs[_0x193f('0x24')](_0x2d0708[_0x193f('0x39')]['offset']);}return _0x3e7c64[_0x193f('0x8e')](_0x42f28);}})[_0x193f('0x2b')](function(_0x11815a){if(_0x11815a){return _0x11815a?{'count':_0x117edf,'rows':_0x11815a}:null;}})[_0x193f('0x2b')](respondWithResult(_0x3ab67b,null))['catch'](handleError(_0x3ab67b,null));};
\ No newline at end of file
+var _0xb95e=['clone','push','sequelize','toString','SELECT','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','getAgents','pick','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','MailQueues','UserProfileResource','status','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','params','MailQueue','keys','include','find','create','body','get','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','length','nolimit','MailQueueId','findAll','User','findAndCountAll','UserId','agent','mailPause','createdAt','format','%s/%s','Team','getTeams','Agents','online','voicePause','flatMap','transaction','addTeams','each','forEach','emit','userMailQueue:save','ids','select','field','tq.TeamId','from','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId'];(function(_0x1cee55,_0xe75188){var _0x4f640a=function(_0x550c43){while(--_0x550c43){_0x1cee55['push'](_0x1cee55['shift']());}};_0x4f640a(++_0xe75188);}(_0xb95e,0x128));var _0xeb95=function(_0x11a2fd,_0x392e13){_0x11a2fd=_0x11a2fd-0x0;var _0x1da33c=_0xb95e[_0x11a2fd];return _0x1da33c;};'use strict';var emlformat=require(_0xeb95('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeb95('0x1'));var jsonpatch=require(_0xeb95('0x2'));var rp=require(_0xeb95('0x3'));var moment=require(_0xeb95('0x4'));var BPromise=require(_0xeb95('0x5'));var Mustache=require('mustache');var util=require(_0xeb95('0x6'));var path=require(_0xeb95('0x7'));var sox=require(_0xeb95('0x8'));var csv=require(_0xeb95('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeb95('0xa'));var _=require(_0xeb95('0xb'));var squel=require(_0xeb95('0xc'));var crypto=require('crypto');var jsforce=require(_0xeb95('0xd'));var deskjs=require(_0xeb95('0xe'));var toCsv=require(_0xeb95('0x9'));var querystring=require(_0xeb95('0xf'));var Papa=require(_0xeb95('0x10'));var Redis=require('ioredis');var authService=require(_0xeb95('0x11'));var qs=require(_0xeb95('0x12'));var as=require(_0xeb95('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xeb95('0x14'));var config=require(_0xeb95('0x15'));var licenseUtil=require(_0xeb95('0x16'));var db=require(_0xeb95('0x17'))['db'];config[_0xeb95('0x18')]=_[_0xeb95('0x19')](config[_0xeb95('0x18')],{'host':_0xeb95('0x1a'),'port':0x18eb});var socket=require(_0xeb95('0x1b'))(new Redis(config[_0xeb95('0x18')]));require('./mailQueue.socket')['register'](socket);function respondWithStatusCode(_0x2a3030,_0x356193){_0x356193=_0x356193||0xcc;return function(_0x474c0e){if(_0x474c0e){return _0x2a3030[_0xeb95('0x1c')](_0x356193);}return _0x2a3030['status'](_0x356193)[_0xeb95('0x1d')]();};}function respondWithResult(_0x5c5492,_0x1f4dd8){_0x1f4dd8=_0x1f4dd8||0xc8;return function(_0x42358e){if(_0x42358e){return _0x5c5492['status'](_0x1f4dd8)[_0xeb95('0x1e')](_0x42358e);}};}function respondWithFilteredResult(_0x346220,_0x319bce){return function(_0x28ec03){if(_0x28ec03){var _0x4f8048=typeof _0x319bce[_0xeb95('0x1f')]==='undefined'&&typeof _0x319bce[_0xeb95('0x20')]==='undefined';var _0x3febe1=_0x28ec03['count'];var _0x1a874c=_0x4f8048?0x0:_0x319bce[_0xeb95('0x1f')];var _0x449238=_0x4f8048?_0x28ec03[_0xeb95('0x21')]:_0x319bce[_0xeb95('0x1f')]+_0x319bce[_0xeb95('0x20')];var _0x412900;if(_0x449238>=_0x3febe1){_0x449238=_0x3febe1;_0x412900=0xc8;}else{_0x412900=0xce;}_0x346220['status'](_0x412900);return _0x346220[_0xeb95('0x22')](_0xeb95('0x23'),_0x1a874c+'-'+_0x449238+'/'+_0x3febe1)[_0xeb95('0x1e')](_0x28ec03);}return null;};}function patchUpdates(_0x41ee85){return function(_0x544e61){try{jsonpatch[_0xeb95('0x24')](_0x544e61,_0x41ee85,!![]);}catch(_0x711619){return BPromise[_0xeb95('0x25')](_0x711619);}return _0x544e61['save']();};}function saveUpdates(_0x2245ac,_0xa50a8d){return function(_0x2f7521){if(_0x2f7521){return _0x2f7521[_0xeb95('0x26')](_0x2245ac)[_0xeb95('0x27')](function(_0x3b2cbc){return _0x3b2cbc;});}return null;};}function removeEntity(_0x144ee0,_0x488379){return function(_0x2056d5){if(_0x2056d5){return _0x2056d5[_0xeb95('0x28')]()[_0xeb95('0x27')](function(){var _0x2230b0=_0x2056d5['get']({'plain':!![]});var _0x25f077=_0xeb95('0x29');return db[_0xeb95('0x2a')][_0xeb95('0x28')]({'where':{'type':_0x25f077,'resourceId':_0x2230b0['id']}})[_0xeb95('0x27')](function(){return _0x2056d5;});})['then'](function(){_0x144ee0[_0xeb95('0x2b')](0xcc)[_0xeb95('0x1d')]();});}};}function handleEntityNotFound(_0x24ac55,_0xe06a58){return function(_0x5d16af){if(!_0x5d16af){_0x24ac55[_0xeb95('0x1c')](0x194);}return _0x5d16af;};}function handleError(_0x96deaa,_0x5d57eb){_0x5d57eb=_0x5d57eb||0x1f4;return function(_0x163114){logger['error'](_0x163114[_0xeb95('0x2c')]);if(_0x163114[_0xeb95('0x2d')]){delete _0x163114['name'];}_0x96deaa[_0xeb95('0x2b')](_0x5d57eb)['send'](_0x163114);};}exports[_0xeb95('0x2e')]=function(_0x5cf992,_0x463ad3){var _0x2a2eb1={},_0x33b537={},_0xc74705={'count':0x0,'rows':[]};var _0x303f8c=_['map'](db['MailQueue'][_0xeb95('0x2f')],function(_0x2719e9){return{'name':_0x2719e9[_0xeb95('0x30')],'type':_0x2719e9[_0xeb95('0x31')][_0xeb95('0x32')]};});_0x33b537[_0xeb95('0x33')]=_[_0xeb95('0x34')](_0x303f8c,'name');_0x33b537[_0xeb95('0x35')]=_['keys'](_0x5cf992[_0xeb95('0x35')]);_0x33b537[_0xeb95('0x36')]=_[_0xeb95('0x37')](_0x33b537[_0xeb95('0x33')],_0x33b537[_0xeb95('0x35')]);_0x2a2eb1[_0xeb95('0x38')]=_[_0xeb95('0x37')](_0x33b537[_0xeb95('0x33')],qs[_0xeb95('0x39')](_0x5cf992[_0xeb95('0x35')]['fields']));_0x2a2eb1[_0xeb95('0x38')]=_0x2a2eb1[_0xeb95('0x38')]['length']?_0x2a2eb1[_0xeb95('0x38')]:_0x33b537[_0xeb95('0x33')];if(!_0x5cf992[_0xeb95('0x35')][_0xeb95('0x3a')]('nolimit')){_0x2a2eb1[_0xeb95('0x20')]=qs[_0xeb95('0x20')](_0x5cf992['query']['limit']);_0x2a2eb1[_0xeb95('0x1f')]=qs['offset'](_0x5cf992[_0xeb95('0x35')][_0xeb95('0x1f')]);}_0x2a2eb1[_0xeb95('0x3b')]=qs['sort'](_0x5cf992[_0xeb95('0x35')][_0xeb95('0x3c')]);_0x2a2eb1[_0xeb95('0x3d')]=qs[_0xeb95('0x36')](_['pick'](_0x5cf992[_0xeb95('0x35')],_0x33b537['filters']),_0x303f8c);if(_0x5cf992[_0xeb95('0x35')][_0xeb95('0x3e')]){_0x2a2eb1[_0xeb95('0x3d')]=_[_0xeb95('0x3f')](_0x2a2eb1[_0xeb95('0x3d')],{'$or':_[_0xeb95('0x34')](_0x303f8c,function(_0x52de99){if(_0x52de99['type']!==_0xeb95('0x40')){var _0x31bea3={};_0x31bea3[_0x52de99[_0xeb95('0x2d')]]={'$like':'%'+_0x5cf992[_0xeb95('0x35')][_0xeb95('0x3e')]+'%'};return _0x31bea3;}})});}_0x2a2eb1=_[_0xeb95('0x3f')]({},_0x2a2eb1,_0x5cf992[_0xeb95('0x41')]);var _0x34125e={'where':_0x2a2eb1[_0xeb95('0x3d')]};return db['MailQueue']['count'](_0x34125e)['then'](function(_0x4c8d2d){_0xc74705[_0xeb95('0x21')]=_0x4c8d2d;if(_0x5cf992['query'][_0xeb95('0x42')]){_0x2a2eb1['include']=[{'all':!![]}];}return db['MailQueue']['findAll'](_0x2a2eb1);})[_0xeb95('0x27')](function(_0xdbe341){_0xc74705[_0xeb95('0x43')]=_0xdbe341;return _0xc74705;})[_0xeb95('0x27')](respondWithFilteredResult(_0x463ad3,_0x2a2eb1))[_0xeb95('0x44')](handleError(_0x463ad3,null));};exports['show']=function(_0x318964,_0x301634){var _0x5ca560={'raw':!![],'where':{'id':_0x318964[_0xeb95('0x45')]['id']}},_0x33efd0={};_0x33efd0[_0xeb95('0x33')]=_['keys'](db[_0xeb95('0x46')]['rawAttributes']);_0x33efd0['query']=_[_0xeb95('0x47')](_0x318964[_0xeb95('0x35')]);_0x33efd0['filters']=_[_0xeb95('0x37')](_0x33efd0['model'],_0x33efd0[_0xeb95('0x35')]);_0x5ca560['attributes']=_[_0xeb95('0x37')](_0x33efd0[_0xeb95('0x33')],qs[_0xeb95('0x39')](_0x318964[_0xeb95('0x35')][_0xeb95('0x39')]));_0x5ca560[_0xeb95('0x38')]=_0x5ca560['attributes']['length']?_0x5ca560[_0xeb95('0x38')]:_0x33efd0[_0xeb95('0x33')];if(_0x318964[_0xeb95('0x35')]['includeAll']){_0x5ca560[_0xeb95('0x48')]=[{'all':!![]}];}_0x5ca560=_['merge']({},_0x5ca560,_0x318964[_0xeb95('0x41')]);return db[_0xeb95('0x46')][_0xeb95('0x49')](_0x5ca560)[_0xeb95('0x27')](handleEntityNotFound(_0x301634,null))[_0xeb95('0x27')](respondWithResult(_0x301634,null))[_0xeb95('0x44')](handleError(_0x301634,null));};exports[_0xeb95('0x4a')]=function(_0x234dd4,_0x1fd717){return db['MailQueue'][_0xeb95('0x4a')](_0x234dd4[_0xeb95('0x4b')],{})[_0xeb95('0x27')](function(_0x29aec0){var _0x110039=_0x234dd4['user'][_0xeb95('0x4c')]({'plain':!![]});if(!_0x110039)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x110039[_0xeb95('0x4d')]==='user'){var _0x57dd53=_0x29aec0[_0xeb95('0x4c')]({'plain':!![]});var _0x1d861d=_0xeb95('0x29');return db[_0xeb95('0x4e')][_0xeb95('0x49')]({'where':{'name':_0x1d861d,'userProfileId':_0x110039['userProfileId']},'raw':!![]})[_0xeb95('0x27')](function(_0x43ee1b){if(_0x43ee1b&&_0x43ee1b[_0xeb95('0x4f')]===0x0){return db[_0xeb95('0x2a')][_0xeb95('0x4a')]({'name':_0x57dd53[_0xeb95('0x2d')],'resourceId':_0x57dd53['id'],'type':_0x43ee1b[_0xeb95('0x2d')],'sectionId':_0x43ee1b['id']},{})[_0xeb95('0x27')](function(){return _0x29aec0;});}else{return _0x29aec0;}})[_0xeb95('0x44')](function(_0x462228){logger[_0xeb95('0x50')](_0xeb95('0x51'),_0x462228);throw _0x462228;});}return _0x29aec0;})['then'](respondWithResult(_0x1fd717,0xc9))[_0xeb95('0x44')](handleError(_0x1fd717,null));};exports[_0xeb95('0x26')]=function(_0x5e4d7f,_0x13527a){if(_0x5e4d7f[_0xeb95('0x4b')]['id']){delete _0x5e4d7f[_0xeb95('0x4b')]['id'];}return db[_0xeb95('0x46')][_0xeb95('0x49')]({'where':{'id':_0x5e4d7f[_0xeb95('0x45')]['id']}})[_0xeb95('0x27')](handleEntityNotFound(_0x13527a,null))[_0xeb95('0x27')](saveUpdates(_0x5e4d7f['body'],null))[_0xeb95('0x27')](respondWithResult(_0x13527a,null))[_0xeb95('0x44')](handleError(_0x13527a,null));};exports[_0xeb95('0x28')]=function(_0x114e30,_0x3c694f){return db[_0xeb95('0x46')]['find']({'where':{'id':_0x114e30[_0xeb95('0x45')]['id']}})[_0xeb95('0x27')](handleEntityNotFound(_0x3c694f,null))[_0xeb95('0x27')](removeEntity(_0x3c694f,null))[_0xeb95('0x44')](handleError(_0x3c694f,null));};exports['describe']=function(_0x36dcc2,_0x51cb70){return db[_0xeb95('0x46')][_0xeb95('0x52')]()[_0xeb95('0x27')](respondWithResult(_0x51cb70,null))['catch'](handleError(_0x51cb70,null));};exports[_0xeb95('0x53')]=function(_0x4388b6,_0x2be3b2,_0xf97fa4){var _0xf082f8={'raw':!![],'where':{}},_0x11adc2={},_0x5c0fd8;return db['MailQueue'][_0xeb95('0x54')]({'where':{'id':_0x4388b6[_0xeb95('0x45')]['id']}})[_0xeb95('0x27')](handleEntityNotFound(_0x2be3b2,null))['then'](function(_0x43c0a6){if(_0x43c0a6){_0x5c0fd8=_0x43c0a6[_0xeb95('0x4c')]({'plain':!![]});_0x11adc2[_0xeb95('0x33')]=_[_0xeb95('0x47')](db[_0xeb95('0x55')][_0xeb95('0x2f')]);_0x11adc2[_0xeb95('0x35')]=_[_0xeb95('0x47')](_0x4388b6['query']);_0x11adc2[_0xeb95('0x36')]=_[_0xeb95('0x37')](_0x11adc2[_0xeb95('0x33')],_0x11adc2[_0xeb95('0x35')]);_0xf082f8[_0xeb95('0x38')]=_[_0xeb95('0x37')](_0x11adc2[_0xeb95('0x33')],qs[_0xeb95('0x39')](_0x4388b6[_0xeb95('0x35')][_0xeb95('0x39')]));_0xf082f8[_0xeb95('0x38')]=_0xf082f8[_0xeb95('0x38')][_0xeb95('0x56')]?_0xf082f8[_0xeb95('0x38')]:_0x11adc2[_0xeb95('0x33')];if(!_0x4388b6[_0xeb95('0x35')][_0xeb95('0x3a')](_0xeb95('0x57'))){_0xf082f8[_0xeb95('0x20')]=qs['limit'](_0x4388b6[_0xeb95('0x35')]['limit']);_0xf082f8['offset']=qs[_0xeb95('0x1f')](_0x4388b6['query'][_0xeb95('0x1f')]);}_0xf082f8[_0xeb95('0x3b')]=qs[_0xeb95('0x3c')](_0x4388b6[_0xeb95('0x35')][_0xeb95('0x3c')]);_0xf082f8['where']=qs['filters'](_['pick'](_0x4388b6[_0xeb95('0x35')],_0x11adc2[_0xeb95('0x36')]));_0xf082f8['where'][_0xeb95('0x58')]=_0x43c0a6['id'];if(_0x4388b6[_0xeb95('0x35')][_0xeb95('0x3e')]){_0xf082f8[_0xeb95('0x3d')]=_[_0xeb95('0x3f')](_0xf082f8[_0xeb95('0x3d')],{'$or':_[_0xeb95('0x34')](_0xf082f8[_0xeb95('0x38')],function(_0x40bd55){var _0x12653e={};_0x12653e[_0x40bd55]={'$like':'%'+_0x4388b6[_0xeb95('0x35')][_0xeb95('0x3e')]+'%'};return _0x12653e;})});}_0xf082f8=_[_0xeb95('0x3f')]({},_0xf082f8,_0x4388b6[_0xeb95('0x41')]);return db['UserMailQueue'][_0xeb95('0x59')](_0xf082f8);}})[_0xeb95('0x27')](function(_0x371761){if(_0x371761){return db[_0xeb95('0x5a')][_0xeb95('0x5b')]({'where':{'id':_[_0xeb95('0x34')](_0x371761,_0xeb95('0x5c')),'role':_0xeb95('0x5d')},'attributes':['id','name',_0xeb95('0x5e'),'updatedAt',_0xeb95('0x5f')]});}})[_0xeb95('0x27')](function(_0x3d5e11){if(_0x3d5e11){return{'count':_0x3d5e11['count'],'rows':_[_0xeb95('0x34')](_0x3d5e11['rows'],function(_0x2b1586){return{'membername':_0x2b1586[_0xeb95('0x2d')],'UserId':_0x2b1586['id'],'queue_name':_0x5c0fd8[_0xeb95('0x2d')],'MailQueueId':_0x5c0fd8['id'],'interface':util[_0xeb95('0x60')](_0xeb95('0x61'),'SIP',_0x2b1586[_0xeb95('0x2d')]),'penalty':0x0,'paused':_0x2b1586[_0xeb95('0x5e')],'createdAt':_0x2b1586[_0xeb95('0x5f')],'updatedAt':_0x2b1586['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xeb95('0x27')](respondWithFilteredResult(_0x2be3b2,_0xf082f8))[_0xeb95('0x44')](handleError(_0x2be3b2,null));};exports['getTeams']=function(_0x2c2049,_0x1392e3,_0x263e45){var _0x327e82={};var _0x42b6fe={};var _0x2d7b09;var _0x2b72cc;return db[_0xeb95('0x46')][_0xeb95('0x54')]({'where':{'id':_0x2c2049['params']['id']}})['then'](handleEntityNotFound(_0x1392e3,null))[_0xeb95('0x27')](function(_0x2f9f29){if(_0x2f9f29){_0x2d7b09=_0x2f9f29;_0x42b6fe[_0xeb95('0x33')]=_[_0xeb95('0x47')](db[_0xeb95('0x62')]['rawAttributes']);_0x42b6fe[_0xeb95('0x35')]=_[_0xeb95('0x47')](_0x2c2049['query']);_0x42b6fe['filters']=_[_0xeb95('0x37')](_0x42b6fe[_0xeb95('0x33')],_0x42b6fe[_0xeb95('0x35')]);_0x327e82[_0xeb95('0x38')]=_[_0xeb95('0x37')](_0x42b6fe['model'],qs['fields'](_0x2c2049['query'][_0xeb95('0x39')]));_0x327e82[_0xeb95('0x38')]=_0x327e82[_0xeb95('0x38')][_0xeb95('0x56')]?_0x327e82[_0xeb95('0x38')]:_0x42b6fe['model'];_0x327e82['order']=qs[_0xeb95('0x3c')](_0x2c2049[_0xeb95('0x35')][_0xeb95('0x3c')]);_0x327e82['where']=qs['filters'](_['pick'](_0x2c2049[_0xeb95('0x35')],_0x42b6fe[_0xeb95('0x36')]));if(_0x2c2049[_0xeb95('0x35')][_0xeb95('0x3e')]){_0x327e82[_0xeb95('0x3d')]=_[_0xeb95('0x3f')](_0x327e82[_0xeb95('0x3d')],{'$or':_[_0xeb95('0x34')](_0x327e82[_0xeb95('0x38')],function(_0x10a4ec){var _0xe4fcfa={};_0xe4fcfa[_0x10a4ec]={'$like':'%'+_0x2c2049[_0xeb95('0x35')][_0xeb95('0x3e')]+'%'};return _0xe4fcfa;})});}_0x327e82=_[_0xeb95('0x3f')]({},_0x327e82,_0x2c2049[_0xeb95('0x41')]);return _0x2d7b09[_0xeb95('0x63')](_0x327e82);}})['then'](function(_0x4a710c){if(_0x4a710c){_0x2b72cc=_0x4a710c['length'];if(!_0x2c2049[_0xeb95('0x35')][_0xeb95('0x3a')]('nolimit')){_0x327e82['limit']=qs[_0xeb95('0x20')](_0x2c2049['query'][_0xeb95('0x20')]);_0x327e82[_0xeb95('0x1f')]=qs[_0xeb95('0x1f')](_0x2c2049[_0xeb95('0x35')]['offset']);}return _0x2d7b09['getTeams'](_0x327e82);}})['then'](function(_0x30f304){if(_0x30f304){return _0x30f304?{'count':_0x2b72cc,'rows':_0x30f304}:null;}})[_0xeb95('0x27')](respondWithResult(_0x1392e3,null))[_0xeb95('0x44')](handleError(_0x1392e3,null));};exports['addTeams']=function(_0x268482,_0x154d51,_0x9fb64){var _0xaeb90e=_0x268482[_0xeb95('0x4b')]['ids'];return db[_0xeb95('0x62')][_0xeb95('0x59')]({'where':{'id':_0xaeb90e},'attributes':['id'],'include':[{'model':db[_0xeb95('0x5a')],'as':_0xeb95('0x64'),'attributes':['id',_0xeb95('0x2d'),_0xeb95('0x65'),_0xeb95('0x66'),'interface'],'raw':!![]}]})[_0xeb95('0x27')](function(_0x2c4dec){if(_0x2c4dec){var _0x1e1d62=_[_0xeb95('0x67')](_0x2c4dec,function(_0x2a7ba4){var _0x1fae98=_0x2a7ba4['get']({'plain':!![]});return _0x1fae98[_0xeb95('0x64')];});return db[_0xeb95('0x46')]['find']({'where':{'id':_0x268482['params']['id']}})[_0xeb95('0x27')](function(_0x3b3e56){return db['sequelize'][_0xeb95('0x68')](function(_0x14d8c0){return _0x3b3e56[_0xeb95('0x69')](_0xaeb90e,{'transaction':_0x14d8c0})['then'](function(){return BPromise[_0xeb95('0x6a')](_0x1e1d62,function(_0x3e0464){return db[_0xeb95('0x55')]['findOrCreate']({'where':{'UserId':_0x3e0464['id'],'MailQueueId':_0x268482[_0xeb95('0x45')]['id']},'transaction':_0x14d8c0});});})['then'](function(){_0x1e1d62[_0xeb95('0x6b')](function(_0x1f0669){socket[_0xeb95('0x6c')](_0xeb95('0x6d'),{'UserId':_0x1f0669['id'],'MailQueueId':_0x3b3e56['id']});});});});});}})['then'](respondWithStatusCode(_0x154d51,null))[_0xeb95('0x44')](handleError(_0x154d51,null));};exports['removeTeams']=function(_0x67a2ba,_0x28fdb9,_0x4d1b33){return db[_0xeb95('0x62')][_0xeb95('0x59')]({'where':{'id':_0x67a2ba[_0xeb95('0x35')][_0xeb95('0x6e')]},'attributes':['id'],'include':[{'model':db[_0xeb95('0x5a')],'as':_0xeb95('0x64'),'attributes':['id'],'raw':!![]}]})[_0xeb95('0x27')](handleEntityNotFound(_0x28fdb9,null))[_0xeb95('0x27')](function(_0x5cdd96){var _0xbdbd59=_[_0xeb95('0x34')](_0x5cdd96,'id');var _0x38c27a=[];var _0x44ee6b=[];var _0x55b548=squel[_0xeb95('0x6f')]();_0x55b548[_0xeb95('0x70')](_0xeb95('0x71'))[_0xeb95('0x72')](_0xeb95('0x73'),'tq')[_0xeb95('0x74')]('user_has_teams','ut',_0xeb95('0x75'))[_0xeb95('0x3d')]('MailQueueId\x20=\x20?',_0x67a2ba[_0xeb95('0x45')]['id']);for(var _0x356940=0x0;_0x356940<_0x5cdd96[_0xeb95('0x56')];_0x356940+=0x1){let _0x9bdb25=_0x5cdd96[_0x356940];for(var _0x11952a=0x0;_0x11952a<_0x9bdb25['Agents'][_0xeb95('0x56')];_0x11952a+=0x1){let _0x18585c=_0x9bdb25[_0xeb95('0x64')][_0x11952a];var _0x50e31c=_0x55b548[_0xeb95('0x76')]();_0x50e31c[_0xeb95('0x3d')]('ut.UserId\x20=\x20?',_0x18585c['id']);_0x44ee6b[_0xeb95('0x77')](db[_0xeb95('0x78')]['query'](_0x50e31c[_0xeb95('0x79')](),{'type':db[_0xeb95('0x78')]['QueryTypes'][_0xeb95('0x7a')]})['then'](function(_0x3be737){if(_0x3be737[_0xeb95('0x56')]===0x1){return _0x18585c['id'];}else{var _0x5ac54e=_['every'](_[_0xeb95('0x34')](_0x3be737,_0xeb95('0x7b')),function(_0x389c38){return _[_0xeb95('0x7c')](_0xbdbd59,_0x389c38);});if(_0x5ac54e){return _0x18585c['id'];}}}));}}return BPromise[_0xeb95('0x7d')](_0x44ee6b)[_0xeb95('0x27')](function(_0x417d44){_0x38c27a=_(_0x38c27a)[_0xeb95('0x7e')](_0x417d44)[_0xeb95('0x7f')]()[_0xeb95('0x80')]();return db[_0xeb95('0x46')]['find']({'where':{'id':_0x67a2ba['params']['id']}})['then'](function(_0x27f033){return db[_0xeb95('0x78')]['transaction'](function(_0x37bd07){return _0x27f033[_0xeb95('0x81')](_0x67a2ba['query'][_0xeb95('0x6e')],{'transaction':_0x37bd07})['then'](function(){if(!_[_0xeb95('0x82')](_0x38c27a)){return _0x27f033[_0xeb95('0x83')](_0x38c27a,{'transaction':_0x37bd07});}})[_0xeb95('0x27')](function(){_0x38c27a[_0xeb95('0x6b')](function(_0x545dea){socket[_0xeb95('0x6c')](_0xeb95('0x84'),{'UserId':_0x545dea,'MailQueueId':_0x27f033['id']});});});});});});})[_0xeb95('0x27')](respondWithStatusCode(_0x28fdb9,null))[_0xeb95('0x44')](handleError(_0x28fdb9,null));};exports['addAgents']=function(_0x5855cb,_0x729cf4,_0x28b79f){return db['MailQueue']['find']({'where':{'id':_0x5855cb[_0xeb95('0x45')]['id']}})[_0xeb95('0x27')](handleEntityNotFound(_0x729cf4,null))['then'](function(_0x19f5e1){if(_0x19f5e1){return _0x19f5e1[_0xeb95('0x85')](_0x5855cb[_0xeb95('0x4b')]['ids'],_[_0xeb95('0x86')](_0x5855cb[_0xeb95('0x4b')],['ids','id'])||{})[_0xeb95('0x87')](function(_0x2aa920){for(var _0x5ec173=0x0;_0x5ec173<_0x5855cb[_0xeb95('0x4b')][_0xeb95('0x6e')]['length'];_0x5ec173+=0x1){socket[_0xeb95('0x6c')]('userMailQueue:save',{'UserId':Number(_0x5855cb[_0xeb95('0x4b')][_0xeb95('0x6e')][_0x5ec173]),'MailQueueId':Number(_0x5855cb[_0xeb95('0x45')]['id'])});}return _0x2aa920;});}})['then'](respondWithResult(_0x729cf4,null))[_0xeb95('0x44')](handleError(_0x729cf4,null));};exports[_0xeb95('0x83')]=function(_0x3f16c2,_0xe91076,_0x33bd9d){return db[_0xeb95('0x46')]['find']({'where':{'id':_0x3f16c2[_0xeb95('0x45')]['id']}})[_0xeb95('0x27')](handleEntityNotFound(_0xe91076,null))['then'](function(_0x3dc83f){if(_0x3dc83f){return _0x3dc83f['removeAgents'](_0x3f16c2['query'][_0xeb95('0x6e')])[_0xeb95('0x27')](function(){if(_['isArray'](_0x3f16c2['query'][_0xeb95('0x6e')])){for(var _0x595c84=0x0;_0x595c84<_0x3f16c2[_0xeb95('0x35')][_0xeb95('0x6e')]['length'];_0x595c84+=0x1){socket[_0xeb95('0x6c')](_0xeb95('0x84'),{'UserId':Number(_0x3f16c2['query'][_0xeb95('0x6e')][_0x595c84]),'MailQueueId':Number(_0x3f16c2[_0xeb95('0x45')]['id'])});}}else{socket[_0xeb95('0x6c')](_0xeb95('0x84'),{'UserId':Number(_0x3f16c2['query'][_0xeb95('0x6e')]),'MailQueueId':Number(_0x3f16c2['params']['id'])});}});}})[_0xeb95('0x27')](respondWithStatusCode(_0xe91076,null))[_0xeb95('0x44')](handleError(_0xe91076,null));};exports[_0xeb95('0x88')]=function(_0x4dfd70,_0x29888c,_0x5a9f27){var _0x2a3d6a={};var _0x5556cf={};var _0x173054;var _0x87cc24;return db[_0xeb95('0x46')]['findOne']({'where':{'id':_0x4dfd70['params']['id']}})[_0xeb95('0x27')](handleEntityNotFound(_0x29888c,null))[_0xeb95('0x27')](function(_0x5a2203){if(_0x5a2203){_0x173054=_0x5a2203;_0x5556cf['model']=_[_0xeb95('0x47')](db['User']['rawAttributes']);_0x5556cf[_0xeb95('0x35')]=_[_0xeb95('0x47')](_0x4dfd70[_0xeb95('0x35')]);_0x5556cf[_0xeb95('0x36')]=_['intersection'](_0x5556cf[_0xeb95('0x33')],_0x5556cf[_0xeb95('0x35')]);_0x2a3d6a['attributes']=_[_0xeb95('0x37')](_0x5556cf['model'],qs[_0xeb95('0x39')](_0x4dfd70['query'][_0xeb95('0x39')]));_0x2a3d6a['attributes']=_0x2a3d6a[_0xeb95('0x38')][_0xeb95('0x56')]?_0x2a3d6a[_0xeb95('0x38')]:_0x5556cf[_0xeb95('0x33')];_0x2a3d6a[_0xeb95('0x3b')]=qs[_0xeb95('0x3c')](_0x4dfd70[_0xeb95('0x35')]['sort']);_0x2a3d6a[_0xeb95('0x3d')]=qs[_0xeb95('0x36')](_[_0xeb95('0x89')](_0x4dfd70[_0xeb95('0x35')],_0x5556cf['filters']));if(_0x4dfd70[_0xeb95('0x35')]['filter']){_0x2a3d6a[_0xeb95('0x3d')]=_[_0xeb95('0x3f')](_0x2a3d6a['where'],{'$or':_[_0xeb95('0x34')](_0x2a3d6a[_0xeb95('0x38')],function(_0x1154b2){var _0x13eab4={};_0x13eab4[_0x1154b2]={'$like':'%'+_0x4dfd70[_0xeb95('0x35')]['filter']+'%'};return _0x13eab4;})});}_0x2a3d6a=_['merge']({},_0x2a3d6a,_0x4dfd70['options']);return _0x173054[_0xeb95('0x88')](_0x2a3d6a);}})['then'](function(_0x36b180){if(_0x36b180){_0x87cc24=_0x36b180[_0xeb95('0x56')];if(!_0x4dfd70[_0xeb95('0x35')][_0xeb95('0x3a')](_0xeb95('0x57'))){_0x2a3d6a['limit']=qs[_0xeb95('0x20')](_0x4dfd70['query']['limit']);_0x2a3d6a[_0xeb95('0x1f')]=qs[_0xeb95('0x1f')](_0x4dfd70[_0xeb95('0x35')][_0xeb95('0x1f')]);}return _0x173054[_0xeb95('0x88')](_0x2a3d6a);}})[_0xeb95('0x27')](function(_0x3fd086){if(_0x3fd086){return _0x3fd086?{'count':_0x87cc24,'rows':_0x3fd086}:null;}})[_0xeb95('0x27')](respondWithResult(_0x29888c,null))[_0xeb95('0x44')](handleError(_0x29888c,null));};
\ No newline at end of file
index 97148e9..8757b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb840=['remove','emit','hasOwnProperty','events','../../mysqldb','MailQueue','setMaxListeners','save'];(function(_0x7c3c7c,_0x19ba64){var _0x5d07e7=function(_0x46f78d){while(--_0x46f78d){_0x7c3c7c['push'](_0x7c3c7c['shift']());}};_0x5d07e7(++_0x19ba64);}(_0xb840,0xbb));var _0x0b84=function(_0x2187ce,_0x23bf9c){_0x2187ce=_0x2187ce-0x0;var _0x27858f=_0xb840[_0x2187ce];return _0x27858f;};'use strict';var EventEmitter=require(_0x0b84('0x0'));var MailQueue=require(_0x0b84('0x1'))['db'][_0x0b84('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x0b84('0x3')](0x0);var events={'afterCreate':_0x0b84('0x4'),'afterUpdate':'update','afterDestroy':_0x0b84('0x5')};function emitEvent(_0x12b517){return function(_0x5e7ace,_0x52992a,_0x6ec682){MailQueueEvents[_0x0b84('0x6')](_0x12b517+':'+_0x5e7ace['id'],_0x5e7ace);MailQueueEvents[_0x0b84('0x6')](_0x12b517,_0x5e7ace);_0x6ec682(null);};}for(var e in events){if(events[_0x0b84('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0x71fe=['update','remove','emit','hasOwnProperty','hook','exports','events','MailQueue','save'];(function(_0xabe65e,_0x455177){var _0x3da843=function(_0x2e8c31){while(--_0x2e8c31){_0xabe65e['push'](_0xabe65e['shift']());}};_0x3da843(++_0x455177);}(_0x71fe,0x84));var _0xe71f=function(_0x3edf4e,_0x26338c){_0x3edf4e=_0x3edf4e-0x0;var _0x49aa48=_0x71fe[_0x3edf4e];return _0x49aa48;};'use strict';var EventEmitter=require(_0xe71f('0x0'));var MailQueue=require('../../mysqldb')['db'][_0xe71f('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe71f('0x2'),'afterUpdate':_0xe71f('0x3'),'afterDestroy':_0xe71f('0x4')};function emitEvent(_0xec3528){return function(_0x5cbe75,_0x3007e3,_0x295505){MailQueueEvents[_0xe71f('0x5')](_0xec3528+':'+_0x5cbe75['id'],_0x5cbe75);MailQueueEvents[_0xe71f('0x5')](_0xec3528,_0x5cbe75);_0x295505(null);};}for(var e in events){if(events[_0xe71f('0x6')](e)){var event=events[e];MailQueue[_0xe71f('0x7')](e,emitEvent(event));}}module[_0xe71f('0x8')]=MailQueueEvents;
\ No newline at end of file
index f98c01a..a29df84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9bf=['rimraf','../../config/environment','define','mail_queues','util','../../config/logger','api','moment','path'];(function(_0x3f92c2,_0x371fe1){var _0x1e964b=function(_0x56c06e){while(--_0x56c06e){_0x3f92c2['push'](_0x3f92c2['shift']());}};_0x1e964b(++_0x371fe1);}(_0xa9bf,0x1c6));var _0xfa9b=function(_0x59e73b,_0x572fab){_0x59e73b=_0x59e73b-0x0;var _0x2ccff4=_0xa9bf[_0x59e73b];return _0x2ccff4;};'use strict';var _=require('lodash');var util=require(_0xfa9b('0x0'));var logger=require(_0xfa9b('0x1'))(_0xfa9b('0x2'));var moment=require(_0xfa9b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfa9b('0x4'));var rimraf=require(_0xfa9b('0x5'));var config=require(_0xfa9b('0x6'));var attributes=require('./mailQueue.attributes');module['exports']=function(_0x89e9fe,_0x5bcbe7){return _0x89e9fe[_0xfa9b('0x7')]('MailQueue',attributes,{'tableName':_0xfa9b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa1e9=['bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util','api','moment'];(function(_0x123505,_0x3fdbda){var _0x2bd9c5=function(_0xb6cc23){while(--_0xb6cc23){_0x123505['push'](_0x123505['shift']());}};_0x2bd9c5(++_0x3fdbda);}(_0xa1e9,0x1a0));var _0x9a1e=function(_0x247e3f,_0x454aec){_0x247e3f=_0x247e3f-0x0;var _0x3e261f=_0xa1e9[_0x247e3f];return _0x3e261f;};'use strict';var _=require(_0x9a1e('0x0'));var util=require(_0x9a1e('0x1'));var logger=require('../../config/logger')(_0x9a1e('0x2'));var moment=require(_0x9a1e('0x3'));var BPromise=require(_0x9a1e('0x4'));var rp=require(_0x9a1e('0x5'));var fs=require('fs');var path=require(_0x9a1e('0x6'));var rimraf=require(_0x9a1e('0x7'));var config=require(_0x9a1e('0x8'));var attributes=require(_0x9a1e('0x9'));module[_0x9a1e('0xa')]=function(_0x1d0ad6,_0x5cb68b){return _0x1d0ad6[_0x9a1e('0xb')](_0x9a1e('0xc'),attributes,{'tableName':_0x9a1e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c866f3..28d60cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4276=['rpc','../../config/environment','jayson/promise','client','http','redis','./mailQueue.socket','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','limit','include','map','model','catch','ShowMailQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x86a5ec,_0x3b4c02){var _0x4fe595=function(_0x4dc377){while(--_0x4dc377){_0x86a5ec['push'](_0x86a5ec['shift']());}};_0x4fe595(++_0x3b4c02);}(_0x4276,0x98));var _0x6427=function(_0x5b243d,_0x44ca4){_0x5b243d=_0x5b243d-0x0;var _0x3aeca1=_0x4276[_0x5b243d];return _0x3aeca1;};'use strict';var _=require(_0x6427('0x0'));var util=require(_0x6427('0x1'));var moment=require(_0x6427('0x2'));var BPromise=require('bluebird');var rs=require(_0x6427('0x3'));var fs=require('fs');var Redis=require(_0x6427('0x4'));var db=require(_0x6427('0x5'))['db'];var utils=require(_0x6427('0x6'));var logger=require(_0x6427('0x7'))(_0x6427('0x8'));var config=require(_0x6427('0x9'));var jayson=require(_0x6427('0xa'));var client=jayson[_0x6427('0xb')][_0x6427('0xc')]({'port':0x232a});config[_0x6427('0xd')]=_['defaults'](config[_0x6427('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6427('0xd')]));require(_0x6427('0xe'))['register'](socket);function respondWithRpcPromise(_0x2cc103,_0x37e422,_0x48e7ef){return new BPromise(function(_0x28132a,_0x1398fd){return client[_0x6427('0xf')](_0x2cc103,_0x48e7ef)[_0x6427('0x10')](function(_0x1ab81f){logger[_0x6427('0x11')](_0x6427('0x12'),_0x37e422,_0x6427('0x13'));logger[_0x6427('0x14')](_0x6427('0x15'),_0x37e422,'request\x20sent',JSON[_0x6427('0x16')](_0x1ab81f));if(_0x1ab81f[_0x6427('0x17')]){if(_0x1ab81f['error']['code']===0x1f4){logger['error'](_0x6427('0x12'),_0x37e422,_0x1ab81f[_0x6427('0x17')][_0x6427('0x18')]);return _0x1398fd(_0x1ab81f[_0x6427('0x17')]['message']);}logger[_0x6427('0x17')](_0x6427('0x12'),_0x37e422,_0x1ab81f[_0x6427('0x17')]['message']);return _0x28132a(_0x1ab81f[_0x6427('0x17')][_0x6427('0x18')]);}else{logger[_0x6427('0x11')]('MailQueue,\x20%s,\x20%s',_0x37e422,_0x6427('0x13'));_0x28132a(_0x1ab81f[_0x6427('0x19')][_0x6427('0x18')]);}})['catch'](function(_0x35d1af){logger[_0x6427('0x17')](_0x6427('0x12'),_0x37e422,_0x35d1af);_0x1398fd(_0x35d1af);});});}exports[_0x6427('0x1a')]=function(_0x5525df){var _0x7f3b42=this;return new Promise(function(_0x1d87d2,_0x1e1df8){return db[_0x6427('0x1b')][_0x6427('0x1c')]({'raw':_0x5525df[_0x6427('0x1d')]?_0x5525df['options'][_0x6427('0x1e')]===undefined?!![]:![]:!![],'where':_0x5525df[_0x6427('0x1d')]?_0x5525df[_0x6427('0x1d')][_0x6427('0x1f')]||null:null,'attributes':_0x5525df[_0x6427('0x1d')]?_0x5525df['options'][_0x6427('0x20')]||null:null,'limit':_0x5525df[_0x6427('0x1d')]?_0x5525df[_0x6427('0x1d')][_0x6427('0x21')]||null:null,'include':_0x5525df[_0x6427('0x1d')]?_0x5525df[_0x6427('0x1d')][_0x6427('0x22')]?_[_0x6427('0x23')](_0x5525df['options'][_0x6427('0x22')],function(_0x5e79e2){return{'model':db[_0x5e79e2['model']],'as':_0x5e79e2['as'],'attributes':_0x5e79e2[_0x6427('0x20')],'include':_0x5e79e2['include']?_[_0x6427('0x23')](_0x5e79e2[_0x6427('0x22')],function(_0x237f46){return{'model':db[_0x237f46['model']],'as':_0x237f46['as'],'attributes':_0x237f46[_0x6427('0x20')],'include':_0x237f46[_0x6427('0x22')]?_[_0x6427('0x23')](_0x237f46[_0x6427('0x22')],function(_0x1e001d){return{'model':db[_0x1e001d[_0x6427('0x24')]],'as':_0x1e001d['as'],'attributes':_0x1e001d[_0x6427('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6427('0x10')](function(_0x2bee2d){logger['info'](_0x6427('0x1a'),_0x5525df);logger[_0x6427('0x14')](_0x6427('0x1a'),_0x5525df,JSON[_0x6427('0x16')](_0x2bee2d));_0x1d87d2(_0x2bee2d);})[_0x6427('0x25')](function(_0x196817){logger['error'](_0x6427('0x1a'),_0x196817[_0x6427('0x18')],_0x5525df);_0x1e1df8(_0x7f3b42[_0x6427('0x17')](0x1f4,_0x196817[_0x6427('0x18')]));});});};exports[_0x6427('0x26')]=function(_0xd85a0c){var _0x25b12b=this;return new Promise(function(_0x709c10,_0x56df49){return db[_0x6427('0x1b')][_0x6427('0x27')]({'raw':_0xd85a0c[_0x6427('0x1d')]?_0xd85a0c['options'][_0x6427('0x1e')]===undefined?!![]:![]:!![],'where':_0xd85a0c[_0x6427('0x1d')]?_0xd85a0c[_0x6427('0x1d')][_0x6427('0x1f')]||null:null,'attributes':_0xd85a0c[_0x6427('0x1d')]?_0xd85a0c[_0x6427('0x1d')][_0x6427('0x20')]||null:null,'include':_0xd85a0c[_0x6427('0x1d')]?_0xd85a0c[_0x6427('0x1d')]['include']?_[_0x6427('0x23')](_0xd85a0c[_0x6427('0x1d')][_0x6427('0x22')],function(_0x424c12){return{'model':db[_0x424c12[_0x6427('0x24')]],'as':_0x424c12['as'],'attributes':_0x424c12[_0x6427('0x20')],'include':_0x424c12[_0x6427('0x22')]?_['map'](_0x424c12[_0x6427('0x22')],function(_0x934d65){return{'model':db[_0x934d65['model']],'as':_0x934d65['as'],'attributes':_0x934d65[_0x6427('0x20')],'include':_0x934d65['include']?_['map'](_0x934d65['include'],function(_0x492b1e){return{'model':db[_0x492b1e[_0x6427('0x24')]],'as':_0x492b1e['as'],'attributes':_0x492b1e[_0x6427('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f0a37){logger['info'](_0x6427('0x26'),_0xd85a0c);logger['debug'](_0x6427('0x26'),_0xd85a0c,JSON['stringify'](_0x1f0a37));_0x709c10(_0x1f0a37);})['catch'](function(_0x499001){logger[_0x6427('0x17')]('ShowMailQueue',_0x499001['message'],_0xd85a0c);_0x56df49(_0x25b12b['error'](0x1f4,_0x499001[_0x6427('0x18')]));});});};
\ No newline at end of file
+var _0x7d89=['../../config/logger','../../config/environment','http','redis','defaults','localhost','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','error','message','result','GetMailQueue','MailQueue','options','raw','where','limit','include','map','attributes','debug','stringify','catch','ShowMailQueue','find','model','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x8c8176,_0x5360a1){var _0x4dc47b=function(_0x1a7f65){while(--_0x1a7f65){_0x8c8176['push'](_0x8c8176['shift']());}};_0x4dc47b(++_0x5360a1);}(_0x7d89,0x158));var _0x97d8=function(_0x5569af,_0x5bed4c){_0x5569af=_0x5569af-0x0;var _0x43a277=_0x7d89[_0x5569af];return _0x43a277;};'use strict';var _=require(_0x97d8('0x0'));var util=require(_0x97d8('0x1'));var moment=require(_0x97d8('0x2'));var BPromise=require(_0x97d8('0x3'));var rs=require(_0x97d8('0x4'));var fs=require('fs');var Redis=require(_0x97d8('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x97d8('0x6'));var logger=require(_0x97d8('0x7'))('rpc');var config=require(_0x97d8('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x97d8('0x9')]({'port':0x232a});config[_0x97d8('0xa')]=_[_0x97d8('0xb')](config[_0x97d8('0xa')],{'host':_0x97d8('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x97d8('0xd'))[_0x97d8('0xe')](socket);function respondWithRpcPromise(_0x2f0897,_0x806552,_0x2015ef){return new BPromise(function(_0x362d3b,_0x1b40e1){return client[_0x97d8('0xf')](_0x2f0897,_0x2015ef)[_0x97d8('0x10')](function(_0x46e825){logger[_0x97d8('0x11')](_0x97d8('0x12'),_0x806552,_0x97d8('0x13'));logger['debug'](_0x97d8('0x14'),_0x806552,'request\x20sent',JSON['stringify'](_0x46e825));if(_0x46e825[_0x97d8('0x15')]){if(_0x46e825[_0x97d8('0x15')]['code']===0x1f4){logger[_0x97d8('0x15')]('MailQueue,\x20%s,\x20%s',_0x806552,_0x46e825[_0x97d8('0x15')]['message']);return _0x1b40e1(_0x46e825[_0x97d8('0x15')][_0x97d8('0x16')]);}logger[_0x97d8('0x15')](_0x97d8('0x12'),_0x806552,_0x46e825[_0x97d8('0x15')][_0x97d8('0x16')]);return _0x362d3b(_0x46e825[_0x97d8('0x15')][_0x97d8('0x16')]);}else{logger[_0x97d8('0x11')](_0x97d8('0x12'),_0x806552,_0x97d8('0x13'));_0x362d3b(_0x46e825[_0x97d8('0x17')][_0x97d8('0x16')]);}})['catch'](function(_0x332e45){logger[_0x97d8('0x15')]('MailQueue,\x20%s,\x20%s',_0x806552,_0x332e45);_0x1b40e1(_0x332e45);});});}exports[_0x97d8('0x18')]=function(_0x260372){var _0x22ee98=this;return new Promise(function(_0xd0a089,_0x1b9ba8){return db[_0x97d8('0x19')]['findAll']({'raw':_0x260372[_0x97d8('0x1a')]?_0x260372['options'][_0x97d8('0x1b')]===undefined?!![]:![]:!![],'where':_0x260372[_0x97d8('0x1a')]?_0x260372[_0x97d8('0x1a')][_0x97d8('0x1c')]||null:null,'attributes':_0x260372[_0x97d8('0x1a')]?_0x260372['options']['attributes']||null:null,'limit':_0x260372['options']?_0x260372[_0x97d8('0x1a')][_0x97d8('0x1d')]||null:null,'include':_0x260372[_0x97d8('0x1a')]?_0x260372[_0x97d8('0x1a')][_0x97d8('0x1e')]?_[_0x97d8('0x1f')](_0x260372['options'][_0x97d8('0x1e')],function(_0x546183){return{'model':db[_0x546183['model']],'as':_0x546183['as'],'attributes':_0x546183[_0x97d8('0x20')],'include':_0x546183['include']?_['map'](_0x546183[_0x97d8('0x1e')],function(_0x4e02cd){return{'model':db[_0x4e02cd['model']],'as':_0x4e02cd['as'],'attributes':_0x4e02cd[_0x97d8('0x20')],'include':_0x4e02cd[_0x97d8('0x1e')]?_[_0x97d8('0x1f')](_0x4e02cd[_0x97d8('0x1e')],function(_0x5c5d09){return{'model':db[_0x5c5d09['model']],'as':_0x5c5d09['as'],'attributes':_0x5c5d09[_0x97d8('0x20')]};}):[]};}):[]};}):[]:[]})[_0x97d8('0x10')](function(_0x4b883d){logger[_0x97d8('0x11')](_0x97d8('0x18'),_0x260372);logger[_0x97d8('0x21')](_0x97d8('0x18'),_0x260372,JSON[_0x97d8('0x22')](_0x4b883d));_0xd0a089(_0x4b883d);})[_0x97d8('0x23')](function(_0x27062e){logger['error'](_0x97d8('0x18'),_0x27062e[_0x97d8('0x16')],_0x260372);_0x1b9ba8(_0x22ee98[_0x97d8('0x15')](0x1f4,_0x27062e['message']));});});};exports[_0x97d8('0x24')]=function(_0x5a3121){var _0x1e1f20=this;return new Promise(function(_0x1506dc,_0x3224e4){return db[_0x97d8('0x19')][_0x97d8('0x25')]({'raw':_0x5a3121[_0x97d8('0x1a')]?_0x5a3121[_0x97d8('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x5a3121[_0x97d8('0x1a')]?_0x5a3121[_0x97d8('0x1a')][_0x97d8('0x1c')]||null:null,'attributes':_0x5a3121['options']?_0x5a3121[_0x97d8('0x1a')][_0x97d8('0x20')]||null:null,'include':_0x5a3121['options']?_0x5a3121[_0x97d8('0x1a')][_0x97d8('0x1e')]?_[_0x97d8('0x1f')](_0x5a3121[_0x97d8('0x1a')][_0x97d8('0x1e')],function(_0x1f79a0){return{'model':db[_0x1f79a0[_0x97d8('0x26')]],'as':_0x1f79a0['as'],'attributes':_0x1f79a0[_0x97d8('0x20')],'include':_0x1f79a0[_0x97d8('0x1e')]?_[_0x97d8('0x1f')](_0x1f79a0['include'],function(_0x4586fc){return{'model':db[_0x4586fc[_0x97d8('0x26')]],'as':_0x4586fc['as'],'attributes':_0x4586fc[_0x97d8('0x20')],'include':_0x4586fc['include']?_[_0x97d8('0x1f')](_0x4586fc[_0x97d8('0x1e')],function(_0x229cfa){return{'model':db[_0x229cfa['model']],'as':_0x229cfa['as'],'attributes':_0x229cfa[_0x97d8('0x20')]};}):[]};}):[]};}):[]:[]})[_0x97d8('0x10')](function(_0x148bd5){logger[_0x97d8('0x11')]('ShowMailQueue',_0x5a3121);logger['debug'](_0x97d8('0x24'),_0x5a3121,JSON[_0x97d8('0x22')](_0x148bd5));_0x1506dc(_0x148bd5);})['catch'](function(_0x1e0542){logger['error'](_0x97d8('0x24'),_0x1e0542[_0x97d8('0x16')],_0x5a3121);_0x3224e4(_0x1e1f20[_0x97d8('0x15')](0x1f4,_0x1e0542[_0x97d8('0x16')]));});});};
\ No newline at end of file
index 7fe1f9f..fb16713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadd7=['removeListener','length','mailQueue:','save','remove','emit'];(function(_0x437150,_0x5c301c){var _0x4006e0=function(_0x26cead){while(--_0x26cead){_0x437150['push'](_0x437150['shift']());}};_0x4006e0(++_0x5c301c);}(_0xadd7,0x1b9));var _0x7add=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xadd7[_0x4565bf];return _0x5610ba;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x7add('0x0'),_0x7add('0x1'),'update'];function createListener(_0x4dbaee,_0xb55b91){return function(_0x80892b){_0xb55b91[_0x7add('0x2')](_0x4dbaee,_0x80892b);};}function removeListener(_0x42b7e7,_0xce978){return function(){MailQueueEvents[_0x7add('0x3')](_0x42b7e7,_0xce978);};}exports['register']=function(_0x1e570c){for(var _0x29a528=0x0,_0x46c75f=events[_0x7add('0x4')];_0x29a528<_0x46c75f;_0x29a528++){var _0x2f295b=events[_0x29a528];var _0x4f03ea=createListener(_0x7add('0x5')+_0x2f295b,_0x1e570c);MailQueueEvents['on'](_0x2f295b,_0x4f03ea);}};
\ No newline at end of file
+var _0x6257=['./mailQueue.events','remove','emit','removeListener','register','mailQueue:'];(function(_0x4a467d,_0x4712c2){var _0x1ef269=function(_0xe69847){while(--_0xe69847){_0x4a467d['push'](_0x4a467d['shift']());}};_0x1ef269(++_0x4712c2);}(_0x6257,0x1d4));var _0x7625=function(_0x22b3e8,_0x2398d6){_0x22b3e8=_0x22b3e8-0x0;var _0x557cbd=_0x6257[_0x22b3e8];return _0x557cbd;};'use strict';var MailQueueEvents=require(_0x7625('0x0'));var events=['save',_0x7625('0x1'),'update'];function createListener(_0x52175a,_0x2078ab){return function(_0x15d0d9){_0x2078ab[_0x7625('0x2')](_0x52175a,_0x15d0d9);};}function removeListener(_0x2eefab,_0x182db5){return function(){MailQueueEvents[_0x7625('0x3')](_0x2eefab,_0x182db5);};}exports[_0x7625('0x4')]=function(_0x2ee215){for(var _0x2340ab=0x0,_0x427050=events['length'];_0x2340ab<_0x427050;_0x2340ab++){var _0x4b790d=events[_0x2340ab];var _0x287434=createListener(_0x7625('0x5')+_0x4b790d,_0x2ee215);MailQueueEvents['on'](_0x4b790d,_0x287434);}};
\ No newline at end of file
index 34e14e0..0952f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4516=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','isAuthenticated','index','describe','/:id','show','create','put','destroy','multer','util'];(function(_0x358806,_0x322b66){var _0x19fdcb=function(_0xe01b8d){while(--_0xe01b8d){_0x358806['push'](_0x358806['shift']());}};_0x19fdcb(++_0x322b66);}(_0x4516,0xec));var _0x6451=function(_0x25e714,_0x2cfff4){_0x25e714=_0x25e714-0x0;var _0x370a3c=_0x4516[_0x25e714];return _0x370a3c;};'use strict';var multer=require(_0x6451('0x0'));var util=require(_0x6451('0x1'));var path=require(_0x6451('0x2'));var timeout=require(_0x6451('0x3'));var express=require('express');var router=express[_0x6451('0x4')]();var fs_extra=require(_0x6451('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6451('0x6'));var config=require(_0x6451('0x7'));var controller=require(_0x6451('0x8'));router['get']('/',auth[_0x6451('0x9')](),controller[_0x6451('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x6451('0xb')]);router['get'](_0x6451('0xc'),auth['isAuthenticated'](),controller[_0x6451('0xd')]);router['post']('/',auth[_0x6451('0x9')](),controller[_0x6451('0xe')]);router[_0x6451('0xf')]('/:id',auth[_0x6451('0x9')](),controller['update']);router['delete']('/:id',auth[_0x6451('0x9')](),controller[_0x6451('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb8b2=['describe','/:id','post','put','update','delete','destroy','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','/describe'];(function(_0x23f50a,_0x1e0fbc){var _0x3d48e2=function(_0x103d6e){while(--_0x103d6e){_0x23f50a['push'](_0x23f50a['shift']());}};_0x3d48e2(++_0x1e0fbc);}(_0xb8b2,0x1b7));var _0x2b8b=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xb8b2[_0x139a3c];return _0x2b375b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2b8b('0x0'));var express=require(_0x2b8b('0x1'));var router=express[_0x2b8b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2b8b('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2b8b('0x4'));var controller=require(_0x2b8b('0x5'));router[_0x2b8b('0x6')]('/',auth[_0x2b8b('0x7')](),controller['index']);router[_0x2b8b('0x6')](_0x2b8b('0x8'),auth['isAuthenticated'](),controller[_0x2b8b('0x9')]);router['get'](_0x2b8b('0xa'),auth[_0x2b8b('0x7')](),controller['show']);router[_0x2b8b('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2b8b('0xc')](_0x2b8b('0xa'),auth[_0x2b8b('0x7')](),controller[_0x2b8b('0xd')]);router[_0x2b8b('0xe')](_0x2b8b('0xa'),auth['isAuthenticated'](),controller[_0x2b8b('0xf')]);module['exports']=router;
\ No newline at end of file
index 7e2a35b..be8109d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb733=['exports','DATE','STRING','moment'];(function(_0x20f2c1,_0x556bd2){var _0x325852=function(_0x5909c2){while(--_0x5909c2){_0x20f2c1['push'](_0x20f2c1['shift']());}};_0x325852(++_0x556bd2);}(_0xb733,0xab));var _0x3b73=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xb733[_0x3947c9];return _0x2e7871;};'use strict';var moment=require(_0x3b73('0x0'));var Sequelize=require('sequelize');module[_0x3b73('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x3b73('0x2')]},'leaveAt':{'type':Sequelize[_0x3b73('0x2')]},'acceptAt':{'type':Sequelize[_0x3b73('0x2')]},'exitAt':{'type':Sequelize[_0x3b73('0x2')]},'reason':{'type':Sequelize[_0x3b73('0x3')]}};
\ No newline at end of file
+var _0x50ee=['STRING','DATE','moment','sequelize'];(function(_0x12254f,_0x100cfe){var _0x3a4fa2=function(_0x1ce891){while(--_0x1ce891){_0x12254f['push'](_0x12254f['shift']());}};_0x3a4fa2(++_0x100cfe);}(_0x50ee,0xe6));var _0xe50e=function(_0xcf5436,_0x4632c3){_0xcf5436=_0xcf5436-0x0;var _0xc4f5c8=_0x50ee[_0xcf5436];return _0xc4f5c8;};'use strict';var moment=require(_0xe50e('0x0'));var Sequelize=require(_0xe50e('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xe50e('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xe50e('0x3')]},'leaveAt':{'type':Sequelize[_0xe50e('0x3')]},'acceptAt':{'type':Sequelize[_0xe50e('0x3')]},'exitAt':{'type':Sequelize[_0xe50e('0x3')]},'reason':{'type':Sequelize[_0xe50e('0x2')]}};
\ No newline at end of file
index 936b2fb..3f9dbde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aad=['sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','MailQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order'];(function(_0x2574cb,_0x5ba27c){var _0x177b81=function(_0x521dfa){while(--_0x521dfa){_0x2574cb['push'](_0x2574cb['shift']());}};_0x177b81(++_0x5ba27c);}(_0x8aad,0x146));var _0xd8aa=function(_0x567f91,_0x353aa0){_0x567f91=_0x567f91-0x0;var _0x2644a8=_0x8aad[_0x567f91];return _0x2644a8;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];function respondWithStatusCode(_0x6ec0eb,_0x549fad){_0x549fad=_0x549fad||0xcc;return function(_0x1e7db8){if(_0x1e7db8){return _0x6ec0eb[_0xd8aa('0x17')](_0x549fad);}return _0x6ec0eb[_0xd8aa('0x18')](_0x549fad)['end']();};}function respondWithResult(_0x5a8c79,_0x275eff){_0x275eff=_0x275eff||0xc8;return function(_0x319ffe){if(_0x319ffe){return _0x5a8c79[_0xd8aa('0x18')](_0x275eff)['json'](_0x319ffe);}};}function respondWithFilteredResult(_0x2678ed,_0x180c56){return function(_0x39b5bc){if(_0x39b5bc){var _0x404ed6=typeof _0x180c56['offset']===_0xd8aa('0x19')&&typeof _0x180c56[_0xd8aa('0x1a')]==='undefined';var _0x16d5c6=_0x39b5bc[_0xd8aa('0x1b')];var _0x32e2cd=_0x404ed6?0x0:_0x180c56[_0xd8aa('0x1c')];var _0x2d34ac=_0x404ed6?_0x39b5bc['count']:_0x180c56[_0xd8aa('0x1c')]+_0x180c56[_0xd8aa('0x1a')];var _0xb156e6;if(_0x2d34ac>=_0x16d5c6){_0x2d34ac=_0x16d5c6;_0xb156e6=0xc8;}else{_0xb156e6=0xce;}_0x2678ed[_0xd8aa('0x18')](_0xb156e6);return _0x2678ed['set'](_0xd8aa('0x1d'),_0x32e2cd+'-'+_0x2d34ac+'/'+_0x16d5c6)[_0xd8aa('0x1e')](_0x39b5bc);}return null;};}function patchUpdates(_0x46d69b){return function(_0x3588ee){try{jsonpatch[_0xd8aa('0x1f')](_0x3588ee,_0x46d69b,!![]);}catch(_0x4fe5d8){return BPromise[_0xd8aa('0x20')](_0x4fe5d8);}return _0x3588ee[_0xd8aa('0x21')]();};}function saveUpdates(_0xc4f55c,_0x5910b3){return function(_0xa7cf85){if(_0xa7cf85){return _0xa7cf85[_0xd8aa('0x22')](_0xc4f55c)[_0xd8aa('0x23')](function(_0x290849){return _0x290849;});}return null;};}function removeEntity(_0x3ef3a9,_0x16758a){return function(_0x1f64f8){if(_0x1f64f8){return _0x1f64f8[_0xd8aa('0x24')]()[_0xd8aa('0x23')](function(){_0x3ef3a9[_0xd8aa('0x18')](0xcc)[_0xd8aa('0x25')]();});}};}function handleEntityNotFound(_0x370d6f,_0x26cc66){return function(_0x5f1027){if(!_0x5f1027){_0x370d6f[_0xd8aa('0x17')](0x194);}return _0x5f1027;};}function handleError(_0x59eb3f,_0xd4d204){_0xd4d204=_0xd4d204||0x1f4;return function(_0x1f6ab2){logger[_0xd8aa('0x26')](_0x1f6ab2[_0xd8aa('0x27')]);if(_0x1f6ab2[_0xd8aa('0x28')]){delete _0x1f6ab2[_0xd8aa('0x28')];}_0x59eb3f[_0xd8aa('0x18')](_0xd4d204)[_0xd8aa('0x29')](_0x1f6ab2);};}exports['index']=function(_0x1f2a28,_0x34b792){var _0x214393={},_0x49a7c8={},_0x19a59d={'count':0x0,'rows':[]};var _0x51c6f4=_[_0xd8aa('0x2a')](db[_0xd8aa('0x2b')][_0xd8aa('0x2c')],function(_0x168a2e){return{'name':_0x168a2e[_0xd8aa('0x2d')],'type':_0x168a2e[_0xd8aa('0x2e')][_0xd8aa('0x2f')]};});_0x49a7c8[_0xd8aa('0x30')]=_['map'](_0x51c6f4,_0xd8aa('0x28'));_0x49a7c8[_0xd8aa('0x31')]=_[_0xd8aa('0x32')](_0x1f2a28[_0xd8aa('0x31')]);_0x49a7c8[_0xd8aa('0x33')]=_[_0xd8aa('0x34')](_0x49a7c8[_0xd8aa('0x30')],_0x49a7c8[_0xd8aa('0x31')]);_0x214393['attributes']=_[_0xd8aa('0x34')](_0x49a7c8[_0xd8aa('0x30')],qs[_0xd8aa('0x35')](_0x1f2a28['query'][_0xd8aa('0x35')]));_0x214393[_0xd8aa('0x36')]=_0x214393[_0xd8aa('0x36')][_0xd8aa('0x37')]?_0x214393[_0xd8aa('0x36')]:_0x49a7c8[_0xd8aa('0x30')];if(!_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x38')](_0xd8aa('0x39'))){_0x214393['limit']=qs[_0xd8aa('0x1a')](_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x1a')]);_0x214393[_0xd8aa('0x1c')]=qs[_0xd8aa('0x1c')](_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x1c')]);}_0x214393[_0xd8aa('0x3a')]=qs[_0xd8aa('0x3b')](_0x1f2a28['query'][_0xd8aa('0x3b')]);_0x214393['where']=qs[_0xd8aa('0x33')](_[_0xd8aa('0x3c')](_0x1f2a28['query'],_0x49a7c8[_0xd8aa('0x33')]),_0x51c6f4);if(_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x3d')]){_0x214393[_0xd8aa('0x3e')]=_[_0xd8aa('0x3f')](_0x214393['where'],{'$or':_['map'](_0x51c6f4,function(_0x25145c){if(_0x25145c['type']!==_0xd8aa('0x40')){var _0x7a6df2={};_0x7a6df2[_0x25145c[_0xd8aa('0x28')]]={'$like':'%'+_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x3d')]+'%'};return _0x7a6df2;}})});}_0x214393=_[_0xd8aa('0x3f')]({},_0x214393,_0x1f2a28[_0xd8aa('0x41')]);var _0x3b0220={'where':_0x214393[_0xd8aa('0x3e')]};return db[_0xd8aa('0x2b')][_0xd8aa('0x1b')](_0x3b0220)['then'](function(_0x17ebb4){_0x19a59d[_0xd8aa('0x1b')]=_0x17ebb4;if(_0x1f2a28[_0xd8aa('0x31')]['includeAll']){_0x214393[_0xd8aa('0x42')]=[{'all':!![]}];}return db[_0xd8aa('0x2b')][_0xd8aa('0x43')](_0x214393);})[_0xd8aa('0x23')](function(_0x3a0284){_0x19a59d[_0xd8aa('0x44')]=_0x3a0284;return _0x19a59d;})[_0xd8aa('0x23')](respondWithFilteredResult(_0x34b792,_0x214393))[_0xd8aa('0x45')](handleError(_0x34b792,null));};exports[_0xd8aa('0x46')]=function(_0x3f5857,_0x20c7a0){var _0x3ec42f={'raw':!![],'where':{'id':_0x3f5857[_0xd8aa('0x47')]['id']}},_0x3b26c9={};_0x3b26c9[_0xd8aa('0x30')]=_[_0xd8aa('0x32')](db[_0xd8aa('0x2b')][_0xd8aa('0x2c')]);_0x3b26c9['query']=_[_0xd8aa('0x32')](_0x3f5857[_0xd8aa('0x31')]);_0x3b26c9[_0xd8aa('0x33')]=_[_0xd8aa('0x34')](_0x3b26c9[_0xd8aa('0x30')],_0x3b26c9[_0xd8aa('0x31')]);_0x3ec42f['attributes']=_[_0xd8aa('0x34')](_0x3b26c9['model'],qs[_0xd8aa('0x35')](_0x3f5857['query'][_0xd8aa('0x35')]));_0x3ec42f['attributes']=_0x3ec42f['attributes'][_0xd8aa('0x37')]?_0x3ec42f[_0xd8aa('0x36')]:_0x3b26c9[_0xd8aa('0x30')];if(_0x3f5857[_0xd8aa('0x31')][_0xd8aa('0x48')]){_0x3ec42f[_0xd8aa('0x42')]=[{'all':!![]}];}_0x3ec42f=_['merge']({},_0x3ec42f,_0x3f5857[_0xd8aa('0x41')]);return db[_0xd8aa('0x2b')][_0xd8aa('0x49')](_0x3ec42f)[_0xd8aa('0x23')](handleEntityNotFound(_0x20c7a0,null))[_0xd8aa('0x23')](respondWithResult(_0x20c7a0,null))['catch'](handleError(_0x20c7a0,null));};exports['create']=function(_0x58cf42,_0x1fd1dc){return db[_0xd8aa('0x2b')][_0xd8aa('0x4a')](_0x58cf42[_0xd8aa('0x4b')],{})[_0xd8aa('0x23')](respondWithResult(_0x1fd1dc,0xc9))[_0xd8aa('0x45')](handleError(_0x1fd1dc,null));};exports['update']=function(_0x221e2b,_0x241e23){if(_0x221e2b['body']['id']){delete _0x221e2b[_0xd8aa('0x4b')]['id'];}return db[_0xd8aa('0x2b')][_0xd8aa('0x49')]({'where':{'id':_0x221e2b['params']['id']}})[_0xd8aa('0x23')](handleEntityNotFound(_0x241e23,null))[_0xd8aa('0x23')](saveUpdates(_0x221e2b[_0xd8aa('0x4b')],null))[_0xd8aa('0x23')](respondWithResult(_0x241e23,null))[_0xd8aa('0x45')](handleError(_0x241e23,null));};exports[_0xd8aa('0x24')]=function(_0x4f494d,_0x566d52){return db[_0xd8aa('0x2b')][_0xd8aa('0x49')]({'where':{'id':_0x4f494d[_0xd8aa('0x47')]['id']}})[_0xd8aa('0x23')](handleEntityNotFound(_0x566d52,null))[_0xd8aa('0x23')](removeEntity(_0x566d52,null))[_0xd8aa('0x45')](handleError(_0x566d52,null));};exports[_0xd8aa('0x4c')]=function(_0x4f9d21,_0x9db7e3){return db[_0xd8aa('0x2b')]['describe']()[_0xd8aa('0x23')](respondWithResult(_0x9db7e3,null))['catch'](handleError(_0x9db7e3,null));};
\ No newline at end of file
+var _0xe3da=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','MailQueueReport','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','order','sort','where','pick','map','VIRTUAL','filter','merge','options','count','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x29022a,_0x4449c5){var _0x303e24=function(_0x5b820a){while(--_0x5b820a){_0x29022a['push'](_0x29022a['shift']());}};_0x303e24(++_0x4449c5);}(_0xe3da,0x1cd));var _0xae3d=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xe3da[_0x40a045];return _0x1a687c;};'use strict';var emlformat=require(_0xae3d('0x0'));var rimraf=require(_0xae3d('0x1'));var zipdir=require(_0xae3d('0x2'));var jsonpatch=require(_0xae3d('0x3'));var rp=require(_0xae3d('0x4'));var moment=require(_0xae3d('0x5'));var BPromise=require(_0xae3d('0x6'));var Mustache=require(_0xae3d('0x7'));var util=require(_0xae3d('0x8'));var path=require(_0xae3d('0x9'));var sox=require(_0xae3d('0xa'));var csv=require(_0xae3d('0xb'));var ejs=require(_0xae3d('0xc'));var fs=require('fs');var fs_extra=require(_0xae3d('0xd'));var _=require(_0xae3d('0xe'));var squel=require(_0xae3d('0xf'));var crypto=require('crypto');var jsforce=require(_0xae3d('0x10'));var deskjs=require(_0xae3d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae3d('0x12'));var Redis=require(_0xae3d('0x13'));var authService=require(_0xae3d('0x14'));var qs=require(_0xae3d('0x15'));var as=require(_0xae3d('0x16'));var hardwareService=require(_0xae3d('0x17'));var logger=require('../../config/logger')(_0xae3d('0x18'));var utils=require('../../config/utils');var config=require(_0xae3d('0x19'));var licenseUtil=require(_0xae3d('0x1a'));var db=require(_0xae3d('0x1b'))['db'];function respondWithStatusCode(_0x172f7a,_0x48aa74){_0x48aa74=_0x48aa74||0xcc;return function(_0xfb7869){if(_0xfb7869){return _0x172f7a[_0xae3d('0x1c')](_0x48aa74);}return _0x172f7a[_0xae3d('0x1d')](_0x48aa74)[_0xae3d('0x1e')]();};}function respondWithResult(_0x2afdd3,_0x430659){_0x430659=_0x430659||0xc8;return function(_0x31498d){if(_0x31498d){return _0x2afdd3['status'](_0x430659)[_0xae3d('0x1f')](_0x31498d);}};}function respondWithFilteredResult(_0x42f4b4,_0x46295b){return function(_0x230afb){if(_0x230afb){var _0x192c13=typeof _0x46295b[_0xae3d('0x20')]==='undefined'&&typeof _0x46295b[_0xae3d('0x21')]===_0xae3d('0x22');var _0x2e31f1=_0x230afb['count'];var _0x3f8cf9=_0x192c13?0x0:_0x46295b[_0xae3d('0x20')];var _0x558e42=_0x192c13?_0x230afb['count']:_0x46295b[_0xae3d('0x20')]+_0x46295b[_0xae3d('0x21')];var _0x19c44d;if(_0x558e42>=_0x2e31f1){_0x558e42=_0x2e31f1;_0x19c44d=0xc8;}else{_0x19c44d=0xce;}_0x42f4b4[_0xae3d('0x1d')](_0x19c44d);return _0x42f4b4[_0xae3d('0x23')]('Content-Range',_0x3f8cf9+'-'+_0x558e42+'/'+_0x2e31f1)[_0xae3d('0x1f')](_0x230afb);}return null;};}function patchUpdates(_0x48f00e){return function(_0x4a09c2){try{jsonpatch[_0xae3d('0x24')](_0x4a09c2,_0x48f00e,!![]);}catch(_0x1415e8){return BPromise[_0xae3d('0x25')](_0x1415e8);}return _0x4a09c2[_0xae3d('0x26')]();};}function saveUpdates(_0x3e7afc,_0x26c419){return function(_0x155099){if(_0x155099){return _0x155099[_0xae3d('0x27')](_0x3e7afc)[_0xae3d('0x28')](function(_0x300be8){return _0x300be8;});}return null;};}function removeEntity(_0x9bf34a,_0x37f5ff){return function(_0x1b2acb){if(_0x1b2acb){return _0x1b2acb[_0xae3d('0x29')]()[_0xae3d('0x28')](function(){_0x9bf34a[_0xae3d('0x1d')](0xcc)[_0xae3d('0x1e')]();});}};}function handleEntityNotFound(_0x2131e9,_0x1b1217){return function(_0x5d45db){if(!_0x5d45db){_0x2131e9[_0xae3d('0x1c')](0x194);}return _0x5d45db;};}function handleError(_0x185e71,_0xb5940){_0xb5940=_0xb5940||0x1f4;return function(_0x52df0f){logger[_0xae3d('0x2a')](_0x52df0f[_0xae3d('0x2b')]);if(_0x52df0f[_0xae3d('0x2c')]){delete _0x52df0f['name'];}_0x185e71['status'](_0xb5940)[_0xae3d('0x2d')](_0x52df0f);};}exports[_0xae3d('0x2e')]=function(_0x3a5840,_0x3114f9){var _0xb69ec9={},_0x561371={},_0x1d1483={'count':0x0,'rows':[]};var _0x3a2434=_['map'](db[_0xae3d('0x2f')][_0xae3d('0x30')],function(_0x2cf750){return{'name':_0x2cf750[_0xae3d('0x31')],'type':_0x2cf750[_0xae3d('0x32')][_0xae3d('0x33')]};});_0x561371['model']=_['map'](_0x3a2434,'name');_0x561371[_0xae3d('0x34')]=_[_0xae3d('0x35')](_0x3a5840[_0xae3d('0x34')]);_0x561371[_0xae3d('0x36')]=_['intersection'](_0x561371[_0xae3d('0x37')],_0x561371[_0xae3d('0x34')]);_0xb69ec9[_0xae3d('0x38')]=_[_0xae3d('0x39')](_0x561371[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0x3a5840[_0xae3d('0x34')]['fields']));_0xb69ec9[_0xae3d('0x38')]=_0xb69ec9['attributes']['length']?_0xb69ec9[_0xae3d('0x38')]:_0x561371['model'];if(!_0x3a5840[_0xae3d('0x34')]['hasOwnProperty']('nolimit')){_0xb69ec9[_0xae3d('0x21')]=qs[_0xae3d('0x21')](_0x3a5840[_0xae3d('0x34')]['limit']);_0xb69ec9[_0xae3d('0x20')]=qs['offset'](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x20')]);}_0xb69ec9[_0xae3d('0x3b')]=qs[_0xae3d('0x3c')](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x3c')]);_0xb69ec9[_0xae3d('0x3d')]=qs[_0xae3d('0x36')](_[_0xae3d('0x3e')](_0x3a5840[_0xae3d('0x34')],_0x561371[_0xae3d('0x36')]),_0x3a2434);if(_0x3a5840['query']['filter']){_0xb69ec9[_0xae3d('0x3d')]=_['merge'](_0xb69ec9[_0xae3d('0x3d')],{'$or':_[_0xae3d('0x3f')](_0x3a2434,function(_0x1db3c1){if(_0x1db3c1[_0xae3d('0x32')]!==_0xae3d('0x40')){var _0x35db44={};_0x35db44[_0x1db3c1[_0xae3d('0x2c')]]={'$like':'%'+_0x3a5840[_0xae3d('0x34')][_0xae3d('0x41')]+'%'};return _0x35db44;}})});}_0xb69ec9=_[_0xae3d('0x42')]({},_0xb69ec9,_0x3a5840[_0xae3d('0x43')]);var _0x549db8={'where':_0xb69ec9[_0xae3d('0x3d')]};return db[_0xae3d('0x2f')][_0xae3d('0x44')](_0x549db8)['then'](function(_0x4df102){_0x1d1483[_0xae3d('0x44')]=_0x4df102;if(_0x3a5840[_0xae3d('0x34')]['includeAll']){_0xb69ec9[_0xae3d('0x45')]=[{'all':!![]}];}return db[_0xae3d('0x2f')][_0xae3d('0x46')](_0xb69ec9);})[_0xae3d('0x28')](function(_0x436a04){_0x1d1483[_0xae3d('0x47')]=_0x436a04;return _0x1d1483;})['then'](respondWithFilteredResult(_0x3114f9,_0xb69ec9))[_0xae3d('0x48')](handleError(_0x3114f9,null));};exports[_0xae3d('0x49')]=function(_0xce7f34,_0x938811){var _0x1fef90={'raw':!![],'where':{'id':_0xce7f34[_0xae3d('0x4a')]['id']}},_0x515220={};_0x515220['model']=_[_0xae3d('0x35')](db[_0xae3d('0x2f')][_0xae3d('0x30')]);_0x515220[_0xae3d('0x34')]=_['keys'](_0xce7f34['query']);_0x515220['filters']=_[_0xae3d('0x39')](_0x515220[_0xae3d('0x37')],_0x515220['query']);_0x1fef90['attributes']=_['intersection'](_0x515220[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0xce7f34[_0xae3d('0x34')][_0xae3d('0x3a')]));_0x1fef90[_0xae3d('0x38')]=_0x1fef90[_0xae3d('0x38')][_0xae3d('0x4b')]?_0x1fef90['attributes']:_0x515220['model'];if(_0xce7f34['query'][_0xae3d('0x4c')]){_0x1fef90['include']=[{'all':!![]}];}_0x1fef90=_[_0xae3d('0x42')]({},_0x1fef90,_0xce7f34[_0xae3d('0x43')]);return db[_0xae3d('0x2f')][_0xae3d('0x4d')](_0x1fef90)[_0xae3d('0x28')](handleEntityNotFound(_0x938811,null))[_0xae3d('0x28')](respondWithResult(_0x938811,null))[_0xae3d('0x48')](handleError(_0x938811,null));};exports[_0xae3d('0x4e')]=function(_0x38f92d,_0x4ed0f9){return db[_0xae3d('0x2f')]['create'](_0x38f92d['body'],{})['then'](respondWithResult(_0x4ed0f9,0xc9))[_0xae3d('0x48')](handleError(_0x4ed0f9,null));};exports[_0xae3d('0x27')]=function(_0x39f213,_0x6fa6c){if(_0x39f213['body']['id']){delete _0x39f213['body']['id'];}return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x39f213[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x6fa6c,null))['then'](saveUpdates(_0x39f213[_0xae3d('0x4f')],null))[_0xae3d('0x28')](respondWithResult(_0x6fa6c,null))[_0xae3d('0x48')](handleError(_0x6fa6c,null));};exports[_0xae3d('0x29')]=function(_0x2a6a24,_0x38ccf1){return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x2a6a24[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x38ccf1,null))[_0xae3d('0x28')](removeEntity(_0x38ccf1,null))[_0xae3d('0x48')](handleError(_0x38ccf1,null));};exports['describe']=function(_0x4f4694,_0x4c6dab){return db[_0xae3d('0x2f')][_0xae3d('0x50')]()['then'](respondWithResult(_0x4c6dab,null))[_0xae3d('0x48')](handleError(_0x4c6dab,null));};
\ No newline at end of file
index 13018b0..588ee0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf9b=['MailQueueReport','uniqueid','api','request-promise','path','rimraf','./mailQueueReport.attributes','define'];(function(_0x49ce01,_0x43026d){var _0x291129=function(_0x324801){while(--_0x324801){_0x49ce01['push'](_0x49ce01['shift']());}};_0x291129(++_0x43026d);}(_0xbf9b,0x172));var _0xbbf9=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xbf9b[_0x2d7f0e];return _0x110b07;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xbbf9('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbbf9('0x1'));var fs=require('fs');var path=require(_0xbbf9('0x2'));var rimraf=require(_0xbbf9('0x3'));var config=require('../../config/environment');var attributes=require(_0xbbf9('0x4'));module['exports']=function(_0x442576,_0x1ca349){return _0x442576[_0xbbf9('0x5')](_0xbbf9('0x6'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xbbf9('0x7')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a3e=['../../config/logger','moment','bluebird','rimraf','../../config/environment','./mailQueueReport.attributes','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util'];(function(_0x590cf8,_0x2d963c){var _0x4c8473=function(_0x489f98){while(--_0x489f98){_0x590cf8['push'](_0x590cf8['shift']());}};_0x4c8473(++_0x2d963c);}(_0x7a3e,0x18a));var _0xe7a3=function(_0x21bd03,_0x5d449b){_0x21bd03=_0x21bd03-0x0;var _0x82b7f4=_0x7a3e[_0x21bd03];return _0x82b7f4;};'use strict';var _=require(_0xe7a3('0x0'));var util=require(_0xe7a3('0x1'));var logger=require(_0xe7a3('0x2'))('api');var moment=require(_0xe7a3('0x3'));var BPromise=require(_0xe7a3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe7a3('0x5'));var config=require(_0xe7a3('0x6'));var attributes=require(_0xe7a3('0x7'));module['exports']=function(_0x401117,_0x45b019){return _0x401117[_0xe7a3('0x8')](_0xe7a3('0x9'),attributes,{'tableName':_0xe7a3('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe7a3('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 661b4a3..8321ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x3415fb,_0x436e9b){var _0x3d7a45=function(_0x9aba72){while(--_0x9aba72){_0x3415fb['push'](_0x3415fb['shift']());}};_0x3d7a45(++_0x436e9b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xc4aa[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
+var _0x2ef3=['options','raw','UpdateMailQueueReport','where','attributes','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailQueueReport,\x20%s,\x20%s','MailQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateMailQueueReport','MailQueueReport','body'];(function(_0x576e35,_0x36fbe4){var _0x2c870c=function(_0x792cdb){while(--_0x792cdb){_0x576e35['push'](_0x576e35['shift']());}};_0x2c870c(++_0x36fbe4);}(_0x2ef3,0xba));var _0x32ef=function(_0x121c70,_0x205095){_0x121c70=_0x121c70-0x0;var _0x455204=_0x2ef3[_0x121c70];return _0x455204;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailQueueReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}exports[_0x32ef('0x15')]=function(_0x1a9476){var _0x286bfb=this;return new Promise(function(_0x57863c,_0xbe37f6){return db[_0x32ef('0x16')]['create'](_0x1a9476[_0x32ef('0x17')],{'raw':_0x1a9476[_0x32ef('0x18')]?_0x1a9476[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![]})[_0x32ef('0xb')](function(_0x3aec05){logger['info'](_0x32ef('0x15'),_0x1a9476);logger['debug'](_0x32ef('0x15'),_0x1a9476,JSON[_0x32ef('0x10')](_0x3aec05));_0x57863c(_0x3aec05);})['catch'](function(_0x1af371){logger[_0x32ef('0x11')](_0x32ef('0x15'),_0x1af371['message'],_0x1a9476);_0xbe37f6(_0x286bfb['error'](0x1f4,_0x1af371[_0x32ef('0x13')]));});});};exports[_0x32ef('0x1a')]=function(_0x225feb){var _0x478bef=this;return new Promise(function(_0x59585f,_0x19ea6){return db['MailQueueReport']['update'](_0x225feb[_0x32ef('0x17')],{'raw':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1b')]||null:null,'attributes':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')][_0x32ef('0x1c')]||null:null,'limit':_0x225feb[_0x32ef('0x18')]?_0x225feb[_0x32ef('0x18')]['limit']||null:null})[_0x32ef('0xb')](function(_0x2f5d06){logger['info'](_0x32ef('0x1a'),_0x225feb);logger[_0x32ef('0x1d')](_0x32ef('0x1a'),_0x225feb,JSON[_0x32ef('0x10')](_0x2f5d06));_0x59585f(_0x2f5d06);})['catch'](function(_0x10e38c){logger[_0x32ef('0x11')](_0x32ef('0x1a'),_0x10e38c[_0x32ef('0x13')],_0x225feb);_0x19ea6(_0x478bef[_0x32ef('0x11')](0x1f4,_0x10e38c[_0x32ef('0x13')]));});});};
\ No newline at end of file
index 4e91766..04da3e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x49ec50,_0x2f90f7){var _0x2c50b6=function(_0x255fb1){while(--_0x255fb1){_0x49ec50['push'](_0x49ec50['shift']());}};_0x2c50b6(++_0x2f90f7);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x34901b,_0xb72e58){var _0x401146=function(_0xd62777){while(--_0xd62777){_0x34901b['push'](_0x34901b['shift']());}};_0x401146(++_0xb72e58);}(_0xedd9,0xfc));var _0x9edd=function(_0x588f58,_0x5e0972){_0x588f58=_0x588f58-0x0;var _0x350e9e=_0xedd9[_0x588f58];return _0x350e9e;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index 5c54a51..2244c9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb6c=['INBOX','sequelize','exports','STRING','BOOLEAN','INTEGER'];(function(_0x30925e,_0x4b989c){var _0x4cfed1=function(_0x44b12f){while(--_0x44b12f){_0x30925e['push'](_0x30925e['shift']());}};_0x4cfed1(++_0x4b989c);}(_0xcb6c,0x1ed));var _0xccb6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xcb6c[_0x57b54c];return _0x59cc19;};'use strict';var Sequelize=require(_0xccb6('0x0'));module[_0xccb6('0x1')]={'description':{'type':Sequelize[_0xccb6('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xccb6('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0xccb6('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xccb6('0x4')]},'tls':{'type':Sequelize[_0xccb6('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xccb6('0x2')],'defaultValue':_0xccb6('0x5')},'connTimeout':{'type':Sequelize[_0xccb6('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xccb6('0x2')]},'modernAuthentication':{'type':Sequelize[_0xccb6('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x61d2=['INTEGER','INBOX','exports','STRING','BOOLEAN'];(function(_0x5d6e30,_0xc21d51){var _0x3d3f3b=function(_0x33597b){while(--_0x33597b){_0x5d6e30['push'](_0x5d6e30['shift']());}};_0x3d3f3b(++_0xc21d51);}(_0x61d2,0xa7));var _0x261d=function(_0x42d0c0,_0x18f86a){_0x42d0c0=_0x42d0c0-0x0;var _0x1730d4=_0x61d2[_0x42d0c0];return _0x1730d4;};'use strict';var Sequelize=require('sequelize');module[_0x261d('0x0')]={'description':{'type':Sequelize[_0x261d('0x1')]},'host':{'type':Sequelize[_0x261d('0x1')]},'authentication':{'type':Sequelize[_0x261d('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x261d('0x1')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x261d('0x3')]},'tls':{'type':Sequelize[_0x261d('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x261d('0x1')],'defaultValue':_0x261d('0x4')},'connTimeout':{'type':Sequelize[_0x261d('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x261d('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x261d('0x1')]},'modernAuthentication':{'type':Sequelize[_0x261d('0x2')],'defaultValue':![]}};
\ No newline at end of file
index b40a38d..733e65e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ce=['define','MailServerIn','mail_servers_in','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x241ada,_0x38127a){var _0x3662b7=function(_0x35e5a0){while(--_0x35e5a0){_0x241ada['push'](_0x241ada['shift']());}};_0x3662b7(++_0x38127a);}(_0xe0ce,0x19a));var _0xee0c=function(_0x1da289,_0x417651){_0x1da289=_0x1da289-0x0;var _0x41c889=_0xe0ce[_0x1da289];return _0x41c889;};'use strict';var _=require(_0xee0c('0x0'));var util=require('util');var logger=require(_0xee0c('0x1'))(_0xee0c('0x2'));var moment=require(_0xee0c('0x3'));var BPromise=require(_0xee0c('0x4'));var rp=require(_0xee0c('0x5'));var fs=require('fs');var path=require(_0xee0c('0x6'));var rimraf=require('rimraf');var config=require(_0xee0c('0x7'));var attributes=require('./mailServerIn.attributes');module['exports']=function(_0x4098ed,_0xc885e0){return _0x4098ed[_0xee0c('0x8')](_0xee0c('0x9'),attributes,{'tableName':_0xee0c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xce58=['path','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x47d6ac,_0x1c3199){var _0x259744=function(_0x591247){while(--_0x591247){_0x47d6ac['push'](_0x47d6ac['shift']());}};_0x259744(++_0x1c3199);}(_0xce58,0x11b));var _0x8ce5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce58[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8ce5('0x0'));var util=require('util');var logger=require(_0x8ce5('0x1'))('api');var moment=require(_0x8ce5('0x2'));var BPromise=require(_0x8ce5('0x3'));var rp=require(_0x8ce5('0x4'));var fs=require('fs');var path=require(_0x8ce5('0x5'));var rimraf=require('rimraf');var config=require(_0x8ce5('0x6'));var attributes=require(_0x8ce5('0x7'));module[_0x8ce5('0x8')]=function(_0x300c94,_0x698476){return _0x300c94[_0x8ce5('0x9')](_0x8ce5('0xa'),attributes,{'tableName':_0x8ce5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 051dbd6..dfe0fcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd33b=['rpc','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailServerIn','findAll','options','raw','attributes','limit','include','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x23062e,_0x1949fd){var _0xa7271a=function(_0x5d3456){while(--_0x5d3456){_0x23062e['push'](_0x23062e['shift']());}};_0xa7271a(++_0x1949fd);}(_0xd33b,0x74));var _0xbd33=function(_0x433839,_0x289900){_0x433839=_0x433839-0x0;var _0x4da247=_0xd33b[_0x433839];return _0x4da247;};'use strict';var _=require(_0xbd33('0x0'));var util=require(_0xbd33('0x1'));var moment=require('moment');var BPromise=require(_0xbd33('0x2'));var rs=require(_0xbd33('0x3'));var fs=require('fs');var Redis=require(_0xbd33('0x4'));var db=require(_0xbd33('0x5'))['db'];var utils=require(_0xbd33('0x6'));var logger=require(_0xbd33('0x7'))(_0xbd33('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xbd33('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x118217,_0x3eb162,_0x373731){return new BPromise(function(_0x183ef0,_0x594d5b){return client[_0xbd33('0xa')](_0x118217,_0x373731)[_0xbd33('0xb')](function(_0x16e65f){logger[_0xbd33('0xc')](_0xbd33('0xd'),_0x3eb162,'request\x20sent');logger[_0xbd33('0xe')](_0xbd33('0xf'),_0x3eb162,_0xbd33('0x10'),JSON[_0xbd33('0x11')](_0x16e65f));if(_0x16e65f[_0xbd33('0x12')]){if(_0x16e65f[_0xbd33('0x12')][_0xbd33('0x13')]===0x1f4){logger[_0xbd33('0x12')](_0xbd33('0xd'),_0x3eb162,_0x16e65f[_0xbd33('0x12')][_0xbd33('0x14')]);return _0x594d5b(_0x16e65f[_0xbd33('0x12')][_0xbd33('0x14')]);}logger[_0xbd33('0x12')](_0xbd33('0xd'),_0x3eb162,_0x16e65f[_0xbd33('0x12')]['message']);return _0x183ef0(_0x16e65f[_0xbd33('0x12')][_0xbd33('0x14')]);}else{logger['info'](_0xbd33('0xd'),_0x3eb162,'request\x20sent');_0x183ef0(_0x16e65f[_0xbd33('0x15')][_0xbd33('0x14')]);}})[_0xbd33('0x16')](function(_0x2b026b){logger[_0xbd33('0x12')](_0xbd33('0xd'),_0x3eb162,_0x2b026b);_0x594d5b(_0x2b026b);});});}exports[_0xbd33('0x17')]=function(_0xd30d7a){var _0x1058a7=this;return new Promise(function(_0x2d78f0,_0x303f05){return db['MailServerIn'][_0xbd33('0x18')]({'raw':_0xd30d7a[_0xbd33('0x19')]?_0xd30d7a[_0xbd33('0x19')][_0xbd33('0x1a')]===undefined?!![]:![]:!![],'where':_0xd30d7a[_0xbd33('0x19')]?_0xd30d7a[_0xbd33('0x19')]['where']||null:null,'attributes':_0xd30d7a[_0xbd33('0x19')]?_0xd30d7a['options'][_0xbd33('0x1b')]||null:null,'limit':_0xd30d7a[_0xbd33('0x19')]?_0xd30d7a['options'][_0xbd33('0x1c')]||null:null,'include':_0xd30d7a[_0xbd33('0x19')]?_0xd30d7a[_0xbd33('0x19')][_0xbd33('0x1d')]?_['map'](_0xd30d7a[_0xbd33('0x19')]['include'],function(_0x650e6d){return{'model':db[_0x650e6d['model']],'as':_0x650e6d['as'],'attributes':_0x650e6d[_0xbd33('0x1b')],'include':_0x650e6d['include']?_['map'](_0x650e6d[_0xbd33('0x1d')],function(_0x39287c){return{'model':db[_0x39287c[_0xbd33('0x1e')]],'as':_0x39287c['as'],'attributes':_0x39287c[_0xbd33('0x1b')],'include':_0x39287c['include']?_['map'](_0x39287c[_0xbd33('0x1d')],function(_0x590f8e){return{'model':db[_0x590f8e[_0xbd33('0x1e')]],'as':_0x590f8e['as'],'attributes':_0x590f8e[_0xbd33('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xbd33('0xb')](function(_0x23dd69){logger[_0xbd33('0xc')]('GetMailServerIn',_0xd30d7a);logger[_0xbd33('0xe')]('GetMailServerIn',_0xd30d7a,JSON[_0xbd33('0x11')](_0x23dd69));_0x2d78f0(_0x23dd69);})[_0xbd33('0x16')](function(_0x27289d){logger[_0xbd33('0x12')]('GetMailServerIn',_0x27289d[_0xbd33('0x14')],_0xd30d7a);_0x303f05(_0x1058a7['error'](0x1f4,_0x27289d[_0xbd33('0x14')]));});});};
\ No newline at end of file
+var _0x5e5b=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','raw','attributes','limit','include','map','model','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x29d091,_0xe2afc){var _0x55daef=function(_0x2ff609){while(--_0x2ff609){_0x29d091['push'](_0x29d091['shift']());}};_0x55daef(++_0xe2afc);}(_0x5e5b,0x113));var _0xb5e5=function(_0x53a1e2,_0x4baf96){_0x53a1e2=_0x53a1e2-0x0;var _0x43e6ed=_0x5e5b[_0x53a1e2];return _0x43e6ed;};'use strict';var _=require(_0xb5e5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb5e5('0x1'));var rs=require(_0xb5e5('0x2'));var fs=require('fs');var Redis=require(_0xb5e5('0x3'));var db=require(_0xb5e5('0x4'))['db'];var utils=require(_0xb5e5('0x5'));var logger=require(_0xb5e5('0x6'))(_0xb5e5('0x7'));var config=require(_0xb5e5('0x8'));var jayson=require(_0xb5e5('0x9'));var client=jayson[_0xb5e5('0xa')][_0xb5e5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x46e847,_0x5b1839,_0x5f1654){return new BPromise(function(_0x2342b4,_0x260df0){return client[_0xb5e5('0xc')](_0x46e847,_0x5f1654)[_0xb5e5('0xd')](function(_0x4ab02b){logger[_0xb5e5('0xe')](_0xb5e5('0xf'),_0x5b1839,'request\x20sent');logger['debug'](_0xb5e5('0x10'),_0x5b1839,_0xb5e5('0x11'),JSON[_0xb5e5('0x12')](_0x4ab02b));if(_0x4ab02b[_0xb5e5('0x13')]){if(_0x4ab02b[_0xb5e5('0x13')][_0xb5e5('0x14')]===0x1f4){logger['error']('MailServerIn,\x20%s,\x20%s',_0x5b1839,_0x4ab02b[_0xb5e5('0x13')][_0xb5e5('0x15')]);return _0x260df0(_0x4ab02b[_0xb5e5('0x13')]['message']);}logger[_0xb5e5('0x13')](_0xb5e5('0xf'),_0x5b1839,_0x4ab02b[_0xb5e5('0x13')]['message']);return _0x2342b4(_0x4ab02b[_0xb5e5('0x13')][_0xb5e5('0x15')]);}else{logger[_0xb5e5('0xe')]('MailServerIn,\x20%s,\x20%s',_0x5b1839,_0xb5e5('0x11'));_0x2342b4(_0x4ab02b[_0xb5e5('0x16')][_0xb5e5('0x15')]);}})[_0xb5e5('0x17')](function(_0xd87c6b){logger[_0xb5e5('0x13')](_0xb5e5('0xf'),_0x5b1839,_0xd87c6b);_0x260df0(_0xd87c6b);});});}exports[_0xb5e5('0x18')]=function(_0x476bfe){var _0x9b5c8c=this;return new Promise(function(_0xd1b200,_0x37c3cd){return db[_0xb5e5('0x19')][_0xb5e5('0x1a')]({'raw':_0x476bfe[_0xb5e5('0x1b')]?_0x476bfe['options'][_0xb5e5('0x1c')]===undefined?!![]:![]:!![],'where':_0x476bfe[_0xb5e5('0x1b')]?_0x476bfe[_0xb5e5('0x1b')]['where']||null:null,'attributes':_0x476bfe[_0xb5e5('0x1b')]?_0x476bfe[_0xb5e5('0x1b')][_0xb5e5('0x1d')]||null:null,'limit':_0x476bfe[_0xb5e5('0x1b')]?_0x476bfe[_0xb5e5('0x1b')][_0xb5e5('0x1e')]||null:null,'include':_0x476bfe[_0xb5e5('0x1b')]?_0x476bfe[_0xb5e5('0x1b')][_0xb5e5('0x1f')]?_[_0xb5e5('0x20')](_0x476bfe[_0xb5e5('0x1b')][_0xb5e5('0x1f')],function(_0x294b83){return{'model':db[_0x294b83['model']],'as':_0x294b83['as'],'attributes':_0x294b83[_0xb5e5('0x1d')],'include':_0x294b83[_0xb5e5('0x1f')]?_[_0xb5e5('0x20')](_0x294b83[_0xb5e5('0x1f')],function(_0x2d9c30){return{'model':db[_0x2d9c30[_0xb5e5('0x21')]],'as':_0x2d9c30['as'],'attributes':_0x2d9c30[_0xb5e5('0x1d')],'include':_0x2d9c30[_0xb5e5('0x1f')]?_[_0xb5e5('0x20')](_0x2d9c30[_0xb5e5('0x1f')],function(_0xa414d3){return{'model':db[_0xa414d3[_0xb5e5('0x21')]],'as':_0xa414d3['as'],'attributes':_0xa414d3[_0xb5e5('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50c185){logger[_0xb5e5('0xe')]('GetMailServerIn',_0x476bfe);logger[_0xb5e5('0x22')]('GetMailServerIn',_0x476bfe,JSON[_0xb5e5('0x12')](_0x50c185));_0xd1b200(_0x50c185);})['catch'](function(_0x569c64){logger[_0xb5e5('0x13')](_0xb5e5('0x18'),_0x569c64[_0xb5e5('0x15')],_0x476bfe);_0x37c3cd(_0x9b5c8c[_0xb5e5('0x13')](0x1f4,_0x569c64['message']));});});};
\ No newline at end of file
index ecbc9e2..9c909f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x7a54,0x106));var _0x47a5=function(_0x4102c8,_0x16abca){_0x4102c8=_0x4102c8-0x0;var _0x2c3511=_0x7a54[_0x4102c8];return _0x2c3511;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
index 6d73cd7..5759227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae60=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x349560,_0xa1cf9b){var _0x59d498=function(_0x6c6d4f){while(--_0x6c6d4f){_0x349560['push'](_0x349560['shift']());}};_0x59d498(++_0xa1cf9b);}(_0xae60,0x1c7));var _0x0ae6=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0xae60[_0x24f31b];return _0x488401;};'use strict';var Sequelize=require(_0x0ae6('0x0'));module[_0x0ae6('0x1')]={'description':{'type':Sequelize[_0x0ae6('0x2')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x0ae6('0x2')]},'pass':{'type':Sequelize[_0x0ae6('0x2')]},'port':{'type':Sequelize[_0x0ae6('0x3')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x0ae6('0x2')]},'authentication':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x2547=['BOOLEAN','exports','STRING','INTEGER'];(function(_0xabfec4,_0x35076e){var _0x7bafa2=function(_0x52d551){while(--_0x52d551){_0xabfec4['push'](_0xabfec4['shift']());}};_0x7bafa2(++_0x35076e);}(_0x2547,0x1cd));var _0x7254=function(_0x39a633,_0x3188e1){_0x39a633=_0x39a633-0x0;var _0x2cca9c=_0x2547[_0x39a633];return _0x2cca9c;};'use strict';var Sequelize=require('sequelize');module[_0x7254('0x0')]={'description':{'type':Sequelize[_0x7254('0x1')]},'host':{'type':Sequelize[_0x7254('0x1')]},'user':{'type':Sequelize[_0x7254('0x1')]},'pass':{'type':Sequelize[_0x7254('0x1')]},'port':{'type':Sequelize[_0x7254('0x2')]},'secure':{'type':Sequelize[_0x7254('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x7254('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x7254('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 67dfc60..ba43d63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66a8=['save','then','destroy','error','stack','name','index','MailServerOut','rawAttributes','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','merge','find','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject'];(function(_0x44e7bf,_0xce6ee3){var _0x4a4de9=function(_0x29919c){while(--_0x29919c){_0x44e7bf['push'](_0x44e7bf['shift']());}};_0x4a4de9(++_0xce6ee3);}(_0x66a8,0x15c));var _0x866a=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x66a8[_0x2dadb9];return _0x2f0097;};'use strict';var emlformat=require(_0x866a('0x0'));var rimraf=require(_0x866a('0x1'));var zipdir=require(_0x866a('0x2'));var jsonpatch=require(_0x866a('0x3'));var rp=require(_0x866a('0x4'));var moment=require('moment');var BPromise=require(_0x866a('0x5'));var Mustache=require('mustache');var util=require(_0x866a('0x6'));var path=require(_0x866a('0x7'));var sox=require(_0x866a('0x8'));var csv=require(_0x866a('0x9'));var ejs=require(_0x866a('0xa'));var fs=require('fs');var fs_extra=require(_0x866a('0xb'));var _=require(_0x866a('0xc'));var squel=require('squel');var crypto=require(_0x866a('0xd'));var jsforce=require(_0x866a('0xe'));var deskjs=require(_0x866a('0xf'));var toCsv=require(_0x866a('0x9'));var querystring=require(_0x866a('0x10'));var Papa=require(_0x866a('0x11'));var Redis=require('ioredis');var authService=require(_0x866a('0x12'));var qs=require(_0x866a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x866a('0x14'));var logger=require(_0x866a('0x15'))(_0x866a('0x16'));var utils=require(_0x866a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x866a('0x18'));var db=require(_0x866a('0x19'))['db'];function respondWithStatusCode(_0x1afe84,_0xee870b){_0xee870b=_0xee870b||0xcc;return function(_0x5a7aa2){if(_0x5a7aa2){return _0x1afe84[_0x866a('0x1a')](_0xee870b);}return _0x1afe84[_0x866a('0x1b')](_0xee870b)[_0x866a('0x1c')]();};}function respondWithResult(_0xcdd8db,_0x2e302c){_0x2e302c=_0x2e302c||0xc8;return function(_0x37eb50){if(_0x37eb50){return _0xcdd8db['status'](_0x2e302c)[_0x866a('0x1d')](_0x37eb50);}};}function respondWithFilteredResult(_0x3b731d,_0x5d9fca){return function(_0x14e2a4){if(_0x14e2a4){var _0x31c933=typeof _0x5d9fca[_0x866a('0x1e')]===_0x866a('0x1f')&&typeof _0x5d9fca[_0x866a('0x20')]==='undefined';var _0x4ba982=_0x14e2a4[_0x866a('0x21')];var _0x2b6e8c=_0x31c933?0x0:_0x5d9fca[_0x866a('0x1e')];var _0x2a6af7=_0x31c933?_0x14e2a4[_0x866a('0x21')]:_0x5d9fca[_0x866a('0x1e')]+_0x5d9fca['limit'];var _0x180b8d;if(_0x2a6af7>=_0x4ba982){_0x2a6af7=_0x4ba982;_0x180b8d=0xc8;}else{_0x180b8d=0xce;}_0x3b731d[_0x866a('0x1b')](_0x180b8d);return _0x3b731d[_0x866a('0x22')](_0x866a('0x23'),_0x2b6e8c+'-'+_0x2a6af7+'/'+_0x4ba982)['json'](_0x14e2a4);}return null;};}function patchUpdates(_0x574eb9){return function(_0x5ad719){try{jsonpatch['apply'](_0x5ad719,_0x574eb9,!![]);}catch(_0x544d12){return BPromise[_0x866a('0x24')](_0x544d12);}return _0x5ad719[_0x866a('0x25')]();};}function saveUpdates(_0x517fbc,_0x9c7edb){return function(_0x234794){if(_0x234794){return _0x234794['update'](_0x517fbc)[_0x866a('0x26')](function(_0x45cece){return _0x45cece;});}return null;};}function removeEntity(_0x20da52,_0xc8bb85){return function(_0x325023){if(_0x325023){return _0x325023[_0x866a('0x27')]()[_0x866a('0x26')](function(){_0x20da52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b56c1,_0x12a43c){return function(_0x2815d1){if(!_0x2815d1){_0x2b56c1[_0x866a('0x1a')](0x194);}return _0x2815d1;};}function handleError(_0x3ca685,_0x4f8802){_0x4f8802=_0x4f8802||0x1f4;return function(_0x10be3a){logger[_0x866a('0x28')](_0x10be3a[_0x866a('0x29')]);if(_0x10be3a[_0x866a('0x2a')]){delete _0x10be3a[_0x866a('0x2a')];}_0x3ca685['status'](_0x4f8802)['send'](_0x10be3a);};}exports[_0x866a('0x2b')]=function(_0x382216,_0x5a8621){var _0x350ce8={},_0x1a6578={},_0x273b34={'count':0x0,'rows':[]};var _0x4de8fa=_['map'](db[_0x866a('0x2c')][_0x866a('0x2d')],function(_0x495ba0){return{'name':_0x495ba0['fieldName'],'type':_0x495ba0['type'][_0x866a('0x2e')]};});_0x1a6578[_0x866a('0x2f')]=_[_0x866a('0x30')](_0x4de8fa,_0x866a('0x2a'));_0x1a6578['query']=_[_0x866a('0x31')](_0x382216[_0x866a('0x32')]);_0x1a6578[_0x866a('0x33')]=_[_0x866a('0x34')](_0x1a6578[_0x866a('0x2f')],_0x1a6578[_0x866a('0x32')]);_0x350ce8[_0x866a('0x35')]=_[_0x866a('0x34')](_0x1a6578['model'],qs[_0x866a('0x36')](_0x382216['query']['fields']));_0x350ce8[_0x866a('0x35')]=_0x350ce8[_0x866a('0x35')]['length']?_0x350ce8[_0x866a('0x35')]:_0x1a6578['model'];if(!_0x382216[_0x866a('0x32')][_0x866a('0x37')](_0x866a('0x38'))){_0x350ce8[_0x866a('0x20')]=qs[_0x866a('0x20')](_0x382216[_0x866a('0x32')]['limit']);_0x350ce8[_0x866a('0x1e')]=qs[_0x866a('0x1e')](_0x382216[_0x866a('0x32')][_0x866a('0x1e')]);}_0x350ce8[_0x866a('0x39')]=qs[_0x866a('0x3a')](_0x382216[_0x866a('0x32')][_0x866a('0x3a')]);_0x350ce8[_0x866a('0x3b')]=qs[_0x866a('0x33')](_['pick'](_0x382216['query'],_0x1a6578[_0x866a('0x33')]),_0x4de8fa);if(_0x382216['query'][_0x866a('0x3c')]){_0x350ce8[_0x866a('0x3b')]=_['merge'](_0x350ce8[_0x866a('0x3b')],{'$or':_[_0x866a('0x30')](_0x4de8fa,function(_0x4534ef){if(_0x4534ef[_0x866a('0x3d')]!==_0x866a('0x3e')){var _0x388949={};_0x388949[_0x4534ef[_0x866a('0x2a')]]={'$like':'%'+_0x382216[_0x866a('0x32')][_0x866a('0x3c')]+'%'};return _0x388949;}})});}_0x350ce8=_['merge']({},_0x350ce8,_0x382216[_0x866a('0x3f')]);var _0x1df681={'where':_0x350ce8['where']};return db[_0x866a('0x2c')][_0x866a('0x21')](_0x1df681)[_0x866a('0x26')](function(_0x2f27c7){_0x273b34[_0x866a('0x21')]=_0x2f27c7;if(_0x382216[_0x866a('0x32')][_0x866a('0x40')]){_0x350ce8[_0x866a('0x41')]=[{'all':!![]}];}return db['MailServerOut'][_0x866a('0x42')](_0x350ce8);})[_0x866a('0x26')](function(_0x5eb190){_0x273b34[_0x866a('0x43')]=_0x5eb190;return _0x273b34;})[_0x866a('0x26')](respondWithFilteredResult(_0x5a8621,_0x350ce8))[_0x866a('0x44')](handleError(_0x5a8621,null));};exports[_0x866a('0x45')]=function(_0x32c173,_0x255b01){var _0x526a12={'raw':!![],'where':{'id':_0x32c173[_0x866a('0x46')]['id']}},_0x5b6865={};_0x5b6865[_0x866a('0x2f')]=_['keys'](db[_0x866a('0x2c')][_0x866a('0x2d')]);_0x5b6865[_0x866a('0x32')]=_[_0x866a('0x31')](_0x32c173[_0x866a('0x32')]);_0x5b6865[_0x866a('0x33')]=_[_0x866a('0x34')](_0x5b6865[_0x866a('0x2f')],_0x5b6865['query']);_0x526a12[_0x866a('0x35')]=_[_0x866a('0x34')](_0x5b6865[_0x866a('0x2f')],qs['fields'](_0x32c173[_0x866a('0x32')][_0x866a('0x36')]));_0x526a12['attributes']=_0x526a12[_0x866a('0x35')][_0x866a('0x47')]?_0x526a12[_0x866a('0x35')]:_0x5b6865[_0x866a('0x2f')];if(_0x32c173[_0x866a('0x32')]['includeAll']){_0x526a12['include']=[{'all':!![]}];}_0x526a12=_[_0x866a('0x48')]({},_0x526a12,_0x32c173['options']);return db[_0x866a('0x2c')][_0x866a('0x49')](_0x526a12)[_0x866a('0x26')](handleEntityNotFound(_0x255b01,null))[_0x866a('0x26')](respondWithResult(_0x255b01,null))[_0x866a('0x44')](handleError(_0x255b01,null));};exports[_0x866a('0x4a')]=function(_0x2030da,_0x2e52ed){return db[_0x866a('0x2c')][_0x866a('0x4a')](_0x2030da['body'],{})[_0x866a('0x26')](respondWithResult(_0x2e52ed,0xc9))['catch'](handleError(_0x2e52ed,null));};exports[_0x866a('0x4b')]=function(_0x580a23,_0x61572b){if(_0x580a23[_0x866a('0x4c')]['id']){delete _0x580a23[_0x866a('0x4c')]['id'];}return db[_0x866a('0x2c')][_0x866a('0x49')]({'where':{'id':_0x580a23[_0x866a('0x46')]['id']}})[_0x866a('0x26')](handleEntityNotFound(_0x61572b,null))[_0x866a('0x26')](saveUpdates(_0x580a23[_0x866a('0x4c')],null))[_0x866a('0x26')](respondWithResult(_0x61572b,null))[_0x866a('0x44')](handleError(_0x61572b,null));};exports[_0x866a('0x27')]=function(_0x5e64a1,_0x349a7a){return db['MailServerOut'][_0x866a('0x49')]({'where':{'id':_0x5e64a1[_0x866a('0x46')]['id']}})[_0x866a('0x26')](handleEntityNotFound(_0x349a7a,null))[_0x866a('0x26')](removeEntity(_0x349a7a,null))[_0x866a('0x44')](handleError(_0x349a7a,null));};
\ No newline at end of file
+var _0x3632=['count','set','Content-Range','json','apply','reject','then','destroy','error','stack','name','send','MailServerOut','rawAttributes','fieldName','type','key','model','map','keys','filters','attributes','fields','length','query','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','params','intersection','options','create','body','update','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit'];(function(_0x24a88e,_0x22a0b8){var _0x232cbb=function(_0x50b7a4){while(--_0x50b7a4){_0x24a88e['push'](_0x24a88e['shift']());}};_0x232cbb(++_0x22a0b8);}(_0x3632,0x1e2));var _0x2363=function(_0x4e4e42,_0x728e0b){_0x4e4e42=_0x4e4e42-0x0;var _0x41e185=_0x3632[_0x4e4e42];return _0x41e185;};'use strict';var emlformat=require(_0x2363('0x0'));var rimraf=require(_0x2363('0x1'));var zipdir=require(_0x2363('0x2'));var jsonpatch=require(_0x2363('0x3'));var rp=require(_0x2363('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2363('0x5'));var util=require('util');var path=require(_0x2363('0x6'));var sox=require(_0x2363('0x7'));var csv=require('to-csv');var ejs=require(_0x2363('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2363('0x9'));var squel=require(_0x2363('0xa'));var crypto=require(_0x2363('0xb'));var jsforce=require(_0x2363('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2363('0xd'));var querystring=require('querystring');var Papa=require(_0x2363('0xe'));var Redis=require(_0x2363('0xf'));var authService=require(_0x2363('0x10'));var qs=require(_0x2363('0x11'));var as=require(_0x2363('0x12'));var hardwareService=require(_0x2363('0x13'));var logger=require('../../config/logger')(_0x2363('0x14'));var utils=require(_0x2363('0x15'));var config=require(_0x2363('0x16'));var licenseUtil=require(_0x2363('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2baaa9,_0x132fdb){_0x132fdb=_0x132fdb||0xcc;return function(_0x160bd0){if(_0x160bd0){return _0x2baaa9[_0x2363('0x18')](_0x132fdb);}return _0x2baaa9[_0x2363('0x19')](_0x132fdb)[_0x2363('0x1a')]();};}function respondWithResult(_0x3ba441,_0x283ad4){_0x283ad4=_0x283ad4||0xc8;return function(_0x45ee2b){if(_0x45ee2b){return _0x3ba441[_0x2363('0x19')](_0x283ad4)['json'](_0x45ee2b);}};}function respondWithFilteredResult(_0x9f385e,_0x28e5c2){return function(_0x208499){if(_0x208499){var _0x189383=typeof _0x28e5c2[_0x2363('0x1b')]==='undefined'&&typeof _0x28e5c2[_0x2363('0x1c')]==='undefined';var _0x476e47=_0x208499[_0x2363('0x1d')];var _0x5beaed=_0x189383?0x0:_0x28e5c2[_0x2363('0x1b')];var _0x37b17e=_0x189383?_0x208499[_0x2363('0x1d')]:_0x28e5c2[_0x2363('0x1b')]+_0x28e5c2[_0x2363('0x1c')];var _0x2de78e;if(_0x37b17e>=_0x476e47){_0x37b17e=_0x476e47;_0x2de78e=0xc8;}else{_0x2de78e=0xce;}_0x9f385e[_0x2363('0x19')](_0x2de78e);return _0x9f385e[_0x2363('0x1e')](_0x2363('0x1f'),_0x5beaed+'-'+_0x37b17e+'/'+_0x476e47)[_0x2363('0x20')](_0x208499);}return null;};}function patchUpdates(_0x5a69df){return function(_0x21c691){try{jsonpatch[_0x2363('0x21')](_0x21c691,_0x5a69df,!![]);}catch(_0x4b2b87){return BPromise[_0x2363('0x22')](_0x4b2b87);}return _0x21c691['save']();};}function saveUpdates(_0x55b4a5,_0x25dde3){return function(_0x3294c9){if(_0x3294c9){return _0x3294c9['update'](_0x55b4a5)[_0x2363('0x23')](function(_0x2252bf){return _0x2252bf;});}return null;};}function removeEntity(_0x36ec4c,_0x37bbea){return function(_0x4055f5){if(_0x4055f5){return _0x4055f5[_0x2363('0x24')]()[_0x2363('0x23')](function(){_0x36ec4c[_0x2363('0x19')](0xcc)[_0x2363('0x1a')]();});}};}function handleEntityNotFound(_0x2c13f9,_0x2d2ad9){return function(_0x26999b){if(!_0x26999b){_0x2c13f9[_0x2363('0x18')](0x194);}return _0x26999b;};}function handleError(_0x434697,_0x3cf337){_0x3cf337=_0x3cf337||0x1f4;return function(_0x4278b2){logger[_0x2363('0x25')](_0x4278b2[_0x2363('0x26')]);if(_0x4278b2[_0x2363('0x27')]){delete _0x4278b2[_0x2363('0x27')];}_0x434697['status'](_0x3cf337)[_0x2363('0x28')](_0x4278b2);};}exports['index']=function(_0x5d9cf1,_0x3a57cc){var _0x309c02={},_0x50644a={},_0x535e3f={'count':0x0,'rows':[]};var _0xa801f3=_['map'](db[_0x2363('0x29')][_0x2363('0x2a')],function(_0x236cbd){return{'name':_0x236cbd[_0x2363('0x2b')],'type':_0x236cbd[_0x2363('0x2c')][_0x2363('0x2d')]};});_0x50644a[_0x2363('0x2e')]=_[_0x2363('0x2f')](_0xa801f3,_0x2363('0x27'));_0x50644a['query']=_[_0x2363('0x30')](_0x5d9cf1['query']);_0x50644a[_0x2363('0x31')]=_['intersection'](_0x50644a[_0x2363('0x2e')],_0x50644a['query']);_0x309c02[_0x2363('0x32')]=_['intersection'](_0x50644a[_0x2363('0x2e')],qs['fields'](_0x5d9cf1['query'][_0x2363('0x33')]));_0x309c02[_0x2363('0x32')]=_0x309c02[_0x2363('0x32')][_0x2363('0x34')]?_0x309c02[_0x2363('0x32')]:_0x50644a['model'];if(!_0x5d9cf1[_0x2363('0x35')][_0x2363('0x36')]('nolimit')){_0x309c02['limit']=qs[_0x2363('0x1c')](_0x5d9cf1['query'][_0x2363('0x1c')]);_0x309c02[_0x2363('0x1b')]=qs[_0x2363('0x1b')](_0x5d9cf1[_0x2363('0x35')]['offset']);}_0x309c02[_0x2363('0x37')]=qs['sort'](_0x5d9cf1[_0x2363('0x35')][_0x2363('0x38')]);_0x309c02[_0x2363('0x39')]=qs[_0x2363('0x31')](_[_0x2363('0x3a')](_0x5d9cf1[_0x2363('0x35')],_0x50644a[_0x2363('0x31')]),_0xa801f3);if(_0x5d9cf1[_0x2363('0x35')]['filter']){_0x309c02[_0x2363('0x39')]=_[_0x2363('0x3b')](_0x309c02[_0x2363('0x39')],{'$or':_[_0x2363('0x2f')](_0xa801f3,function(_0xa7ef34){if(_0xa7ef34[_0x2363('0x2c')]!==_0x2363('0x3c')){var _0x51dce8={};_0x51dce8[_0xa7ef34['name']]={'$like':'%'+_0x5d9cf1['query'][_0x2363('0x3d')]+'%'};return _0x51dce8;}})});}_0x309c02=_[_0x2363('0x3b')]({},_0x309c02,_0x5d9cf1['options']);var _0x62c5aa={'where':_0x309c02[_0x2363('0x39')]};return db['MailServerOut']['count'](_0x62c5aa)[_0x2363('0x23')](function(_0x43d326){_0x535e3f[_0x2363('0x1d')]=_0x43d326;if(_0x5d9cf1[_0x2363('0x35')][_0x2363('0x3e')]){_0x309c02[_0x2363('0x3f')]=[{'all':!![]}];}return db[_0x2363('0x29')][_0x2363('0x40')](_0x309c02);})['then'](function(_0x3e9221){_0x535e3f['rows']=_0x3e9221;return _0x535e3f;})['then'](respondWithFilteredResult(_0x3a57cc,_0x309c02))[_0x2363('0x41')](handleError(_0x3a57cc,null));};exports['show']=function(_0x328199,_0x557077){var _0x2a8615={'raw':!![],'where':{'id':_0x328199[_0x2363('0x42')]['id']}},_0x4da983={};_0x4da983[_0x2363('0x2e')]=_[_0x2363('0x30')](db['MailServerOut']['rawAttributes']);_0x4da983[_0x2363('0x35')]=_[_0x2363('0x30')](_0x328199[_0x2363('0x35')]);_0x4da983[_0x2363('0x31')]=_[_0x2363('0x43')](_0x4da983[_0x2363('0x2e')],_0x4da983[_0x2363('0x35')]);_0x2a8615[_0x2363('0x32')]=_[_0x2363('0x43')](_0x4da983[_0x2363('0x2e')],qs['fields'](_0x328199[_0x2363('0x35')][_0x2363('0x33')]));_0x2a8615[_0x2363('0x32')]=_0x2a8615[_0x2363('0x32')][_0x2363('0x34')]?_0x2a8615[_0x2363('0x32')]:_0x4da983[_0x2363('0x2e')];if(_0x328199['query'][_0x2363('0x3e')]){_0x2a8615[_0x2363('0x3f')]=[{'all':!![]}];}_0x2a8615=_['merge']({},_0x2a8615,_0x328199[_0x2363('0x44')]);return db[_0x2363('0x29')]['find'](_0x2a8615)[_0x2363('0x23')](handleEntityNotFound(_0x557077,null))[_0x2363('0x23')](respondWithResult(_0x557077,null))[_0x2363('0x41')](handleError(_0x557077,null));};exports[_0x2363('0x45')]=function(_0x4da9c9,_0x355b04){return db[_0x2363('0x29')][_0x2363('0x45')](_0x4da9c9[_0x2363('0x46')],{})[_0x2363('0x23')](respondWithResult(_0x355b04,0xc9))['catch'](handleError(_0x355b04,null));};exports[_0x2363('0x47')]=function(_0x8c6ed2,_0x360b94){if(_0x8c6ed2[_0x2363('0x46')]['id']){delete _0x8c6ed2['body']['id'];}return db[_0x2363('0x29')][_0x2363('0x48')]({'where':{'id':_0x8c6ed2[_0x2363('0x42')]['id']}})['then'](handleEntityNotFound(_0x360b94,null))[_0x2363('0x23')](saveUpdates(_0x8c6ed2[_0x2363('0x46')],null))[_0x2363('0x23')](respondWithResult(_0x360b94,null))[_0x2363('0x41')](handleError(_0x360b94,null));};exports[_0x2363('0x24')]=function(_0x1f310,_0xd62379){return db[_0x2363('0x29')][_0x2363('0x48')]({'where':{'id':_0x1f310['params']['id']}})[_0x2363('0x23')](handleEntityNotFound(_0xd62379,null))[_0x2363('0x23')](removeEntity(_0xd62379,null))[_0x2363('0x41')](handleError(_0xd62379,null));};
\ No newline at end of file
index abadabc..ec12743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d4=['define','MailServerOut','mail_servers_out','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./mailServerOut.attributes','exports'];(function(_0x50d7f8,_0x10b533){var _0xee409a=function(_0x701fd2){while(--_0x701fd2){_0x50d7f8['push'](_0x50d7f8['shift']());}};_0xee409a(++_0x10b533);}(_0x93d4,0x1e4));var _0x493d=function(_0x730da2,_0xfec4cf){_0x730da2=_0x730da2-0x0;var _0x4d3f7f=_0x93d4[_0x730da2];return _0x4d3f7f;};'use strict';var _=require(_0x493d('0x0'));var util=require(_0x493d('0x1'));var logger=require(_0x493d('0x2'))(_0x493d('0x3'));var moment=require(_0x493d('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x493d('0x5'));var rimraf=require(_0x493d('0x6'));var config=require(_0x493d('0x7'));var attributes=require(_0x493d('0x8'));module[_0x493d('0x9')]=function(_0x484f74,_0x4beede){return _0x484f74[_0x493d('0xa')](_0x493d('0xb'),attributes,{'tableName':_0x493d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c35=['rimraf','define','MailServerOut','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x4e2ddb,_0x3acde9){var _0x50c277=function(_0x4c5768){while(--_0x4c5768){_0x4e2ddb['push'](_0x4e2ddb['shift']());}};_0x50c277(++_0x3acde9);}(_0x0c35,0x6f));var _0x50c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0c35[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x50c3('0x0'));var util=require(_0x50c3('0x1'));var logger=require(_0x50c3('0x2'))('api');var moment=require(_0x50c3('0x3'));var BPromise=require(_0x50c3('0x4'));var rp=require(_0x50c3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x50c3('0x6'));var config=require('../../config/environment');var attributes=require('./mailServerOut.attributes');module['exports']=function(_0x4210a8,_0x288476){return _0x4210a8[_0x50c3('0x7')](_0x50c3('0x8'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6129e4a..b6142fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x300836,_0x193c1e){var _0x128eae=function(_0x214906){while(--_0x214906){_0x300836['push'](_0x300836['shift']());}};_0x128eae(++_0x193c1e);}(_0xdb28,0x106));var _0x8db2=function(_0x46651c,_0x193cd3){_0x46651c=_0x46651c-0x0;var _0x5e47f0=_0xdb28[_0x46651c];return _0x5e47f0;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0xd84537,_0x4a7fab){var _0x20ed09=function(_0x1d95c9){while(--_0x1d95c9){_0xd84537['push'](_0xd84537['shift']());}};_0x20ed09(++_0x4a7fab);}(_0xc4aa,0x1b7));var _0xac4a=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xc4aa[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 99f009b..8838940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c3c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','describe','/:id','post','create','put','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x55677b,_0x3e5655){var _0x104b88=function(_0x78d34f){while(--_0x78d34f){_0x55677b['push'](_0x55677b['shift']());}};_0x104b88(++_0x3e5655);}(_0x7c3c,0xde));var _0xc7c3=function(_0xf458be,_0x1cf158){_0xf458be=_0xf458be-0x0;var _0x52b318=_0x7c3c[_0xf458be];return _0x52b318;};'use strict';var multer=require(_0xc7c3('0x0'));var util=require(_0xc7c3('0x1'));var path=require(_0xc7c3('0x2'));var timeout=require(_0xc7c3('0x3'));var express=require(_0xc7c3('0x4'));var router=express[_0xc7c3('0x5')]();var fs_extra=require(_0xc7c3('0x6'));var auth=require(_0xc7c3('0x7'));var interaction=require(_0xc7c3('0x8'));var config=require(_0xc7c3('0x9'));var controller=require(_0xc7c3('0xa'));router['get']('/',auth[_0xc7c3('0xb')](),controller[_0xc7c3('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xc7c3('0xd')]);router['get'](_0xc7c3('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xc7c3('0xf')]('/',auth['isAuthenticated'](),controller[_0xc7c3('0x10')]);router[_0xc7c3('0x11')](_0xc7c3('0xe'),auth[_0xc7c3('0xb')](),controller['update']);router['delete'](_0xc7c3('0xe'),auth['isAuthenticated'](),controller[_0xc7c3('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xda69=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','/describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x58ac15,_0x534eb3){var _0x49f222=function(_0x34e55e){while(--_0x34e55e){_0x58ac15['push'](_0x58ac15['shift']());}};_0x49f222(++_0x534eb3);}(_0xda69,0x19a));var _0x9da6=function(_0x4b91c4,_0x23f35f){_0x4b91c4=_0x4b91c4-0x0;var _0x25cb80=_0xda69[_0x4b91c4];return _0x25cb80;};'use strict';var multer=require(_0x9da6('0x0'));var util=require(_0x9da6('0x1'));var path=require(_0x9da6('0x2'));var timeout=require(_0x9da6('0x3'));var express=require(_0x9da6('0x4'));var router=express[_0x9da6('0x5')]();var fs_extra=require(_0x9da6('0x6'));var auth=require(_0x9da6('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x9da6('0x8'));var controller=require(_0x9da6('0x9'));router['get']('/',auth[_0x9da6('0xa')](),controller[_0x9da6('0xb')]);router[_0x9da6('0xc')](_0x9da6('0xd'),auth[_0x9da6('0xa')](),controller['describe']);router[_0x9da6('0xc')]('/:id',auth[_0x9da6('0xa')](),controller[_0x9da6('0xe')]);router[_0x9da6('0xf')]('/',auth[_0x9da6('0xa')](),controller[_0x9da6('0x10')]);router[_0x9da6('0x11')](_0x9da6('0x12'),auth['isAuthenticated'](),controller[_0x9da6('0x13')]);router[_0x9da6('0x14')]('/:id',auth[_0x9da6('0xa')](),controller[_0x9da6('0x15')]);module[_0x9da6('0x16')]=router;
\ No newline at end of file
index a31dd31..4167efb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae8=['sequelize','exports','STRING'];(function(_0x5cbfe8,_0x495b5c){var _0x454369=function(_0x2c0f3a){while(--_0x2c0f3a){_0x5cbfe8['push'](_0x5cbfe8['shift']());}};_0x454369(++_0x495b5c);}(_0xeae8,0x66));var _0x8eae=function(_0x2fcded,_0x54e4f1){_0x2fcded=_0x2fcded-0x0;var _0x5c3d4c=_0xeae8[_0x2fcded];return _0x5c3d4c;};'use strict';var Sequelize=require(_0x8eae('0x0'));module[_0x8eae('0x1')]={'name':{'type':Sequelize[_0x8eae('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8eae('0x2')]}};
\ No newline at end of file
+var _0x4300=['sequelize'];(function(_0x2103ce,_0x3a0948){var _0x546b50=function(_0x1b1c7c){while(--_0x1b1c7c){_0x2103ce['push'](_0x2103ce['shift']());}};_0x546b50(++_0x3a0948);}(_0x4300,0x1a6));var _0x0430=function(_0x5a0354,_0x518edd){_0x5a0354=_0x5a0354-0x0;var _0x211e51=_0x4300[_0x5a0354];return _0x211e51;};'use strict';var Sequelize=require(_0x0430('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 105044c..f623c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752b=['undefined','count','Content-Range','json','apply','reject','save','update','then','error','name','send','index','map','fieldName','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','type','merge','options','MailSubstatus','includeAll','include','findAll','rows','show','params','rawAttributes','create','catch','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset'];(function(_0x2a8675,_0x538c84){var _0x11797a=function(_0x26da9e){while(--_0x26da9e){_0x2a8675['push'](_0x2a8675['shift']());}};_0x11797a(++_0x538c84);}(_0x752b,0x80));var _0xb752=function(_0x4708eb,_0x1d3404){_0x4708eb=_0x4708eb-0x0;var _0x5b8f04=_0x752b[_0x4708eb];return _0x5b8f04;};'use strict';var emlformat=require(_0xb752('0x0'));var rimraf=require(_0xb752('0x1'));var zipdir=require(_0xb752('0x2'));var jsonpatch=require(_0xb752('0x3'));var rp=require(_0xb752('0x4'));var moment=require(_0xb752('0x5'));var BPromise=require(_0xb752('0x6'));var Mustache=require(_0xb752('0x7'));var util=require('util');var path=require(_0xb752('0x8'));var sox=require(_0xb752('0x9'));var csv=require(_0xb752('0xa'));var ejs=require(_0xb752('0xb'));var fs=require('fs');var fs_extra=require(_0xb752('0xc'));var _=require(_0xb752('0xd'));var squel=require(_0xb752('0xe'));var crypto=require(_0xb752('0xf'));var jsforce=require(_0xb752('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xb752('0xa'));var querystring=require(_0xb752('0x11'));var Papa=require(_0xb752('0x12'));var Redis=require(_0xb752('0x13'));var authService=require(_0xb752('0x14'));var qs=require(_0xb752('0x15'));var as=require(_0xb752('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb752('0x17'))('api');var utils=require(_0xb752('0x18'));var config=require(_0xb752('0x19'));var licenseUtil=require(_0xb752('0x1a'));var db=require(_0xb752('0x1b'))['db'];function respondWithStatusCode(_0x460b44,_0x4fdd62){_0x4fdd62=_0x4fdd62||0xcc;return function(_0x1929c2){if(_0x1929c2){return _0x460b44[_0xb752('0x1c')](_0x4fdd62);}return _0x460b44[_0xb752('0x1d')](_0x4fdd62)[_0xb752('0x1e')]();};}function respondWithResult(_0x2dff87,_0x524320){_0x524320=_0x524320||0xc8;return function(_0x1ea98c){if(_0x1ea98c){return _0x2dff87[_0xb752('0x1d')](_0x524320)['json'](_0x1ea98c);}};}function respondWithFilteredResult(_0x4d183b,_0x2568b9){return function(_0x38d88f){if(_0x38d88f){var _0x5d25d6=typeof _0x2568b9[_0xb752('0x1f')]===_0xb752('0x20')&&typeof _0x2568b9['limit']===_0xb752('0x20');var _0x505315=_0x38d88f[_0xb752('0x21')];var _0x23192a=_0x5d25d6?0x0:_0x2568b9[_0xb752('0x1f')];var _0x1754f8=_0x5d25d6?_0x38d88f[_0xb752('0x21')]:_0x2568b9[_0xb752('0x1f')]+_0x2568b9['limit'];var _0x3ab5a2;if(_0x1754f8>=_0x505315){_0x1754f8=_0x505315;_0x3ab5a2=0xc8;}else{_0x3ab5a2=0xce;}_0x4d183b[_0xb752('0x1d')](_0x3ab5a2);return _0x4d183b['set'](_0xb752('0x22'),_0x23192a+'-'+_0x1754f8+'/'+_0x505315)[_0xb752('0x23')](_0x38d88f);}return null;};}function patchUpdates(_0x3262da){return function(_0x4b40f7){try{jsonpatch[_0xb752('0x24')](_0x4b40f7,_0x3262da,!![]);}catch(_0x1d7196){return BPromise[_0xb752('0x25')](_0x1d7196);}return _0x4b40f7[_0xb752('0x26')]();};}function saveUpdates(_0x4e1254,_0x126294){return function(_0x6bc8bd){if(_0x6bc8bd){return _0x6bc8bd[_0xb752('0x27')](_0x4e1254)['then'](function(_0x440460){return _0x440460;});}return null;};}function removeEntity(_0xeec3ae,_0x519926){return function(_0x4e2a27){if(_0x4e2a27){return _0x4e2a27['destroy']()[_0xb752('0x28')](function(){_0xeec3ae[_0xb752('0x1d')](0xcc)[_0xb752('0x1e')]();});}};}function handleEntityNotFound(_0x371adc,_0x2f26c5){return function(_0xb2ce8e){if(!_0xb2ce8e){_0x371adc[_0xb752('0x1c')](0x194);}return _0xb2ce8e;};}function handleError(_0x27c956,_0x1c83bb){_0x1c83bb=_0x1c83bb||0x1f4;return function(_0x43b7e4){logger[_0xb752('0x29')](_0x43b7e4['stack']);if(_0x43b7e4[_0xb752('0x2a')]){delete _0x43b7e4[_0xb752('0x2a')];}_0x27c956[_0xb752('0x1d')](_0x1c83bb)[_0xb752('0x2b')](_0x43b7e4);};}exports[_0xb752('0x2c')]=function(_0x476fb4,_0xba3599){var _0x1076fc={},_0x21d6d8={},_0x5703a0={'count':0x0,'rows':[]};var _0x256c4a=_[_0xb752('0x2d')](db['MailSubstatus']['rawAttributes'],function(_0x53723a){return{'name':_0x53723a[_0xb752('0x2e')],'type':_0x53723a['type'][_0xb752('0x2f')]};});_0x21d6d8['model']=_['map'](_0x256c4a,_0xb752('0x2a'));_0x21d6d8[_0xb752('0x30')]=_[_0xb752('0x31')](_0x476fb4['query']);_0x21d6d8[_0xb752('0x32')]=_[_0xb752('0x33')](_0x21d6d8['model'],_0x21d6d8[_0xb752('0x30')]);_0x1076fc[_0xb752('0x34')]=_['intersection'](_0x21d6d8[_0xb752('0x35')],qs[_0xb752('0x36')](_0x476fb4[_0xb752('0x30')]['fields']));_0x1076fc[_0xb752('0x34')]=_0x1076fc[_0xb752('0x34')][_0xb752('0x37')]?_0x1076fc[_0xb752('0x34')]:_0x21d6d8['model'];if(!_0x476fb4[_0xb752('0x30')][_0xb752('0x38')](_0xb752('0x39'))){_0x1076fc[_0xb752('0x3a')]=qs[_0xb752('0x3a')](_0x476fb4[_0xb752('0x30')][_0xb752('0x3a')]);_0x1076fc[_0xb752('0x1f')]=qs[_0xb752('0x1f')](_0x476fb4[_0xb752('0x30')][_0xb752('0x1f')]);}_0x1076fc[_0xb752('0x3b')]=qs[_0xb752('0x3c')](_0x476fb4[_0xb752('0x30')][_0xb752('0x3c')]);_0x1076fc[_0xb752('0x3d')]=qs['filters'](_['pick'](_0x476fb4[_0xb752('0x30')],_0x21d6d8[_0xb752('0x32')]),_0x256c4a);if(_0x476fb4[_0xb752('0x30')][_0xb752('0x3e')]){_0x1076fc[_0xb752('0x3d')]=_['merge'](_0x1076fc[_0xb752('0x3d')],{'$or':_[_0xb752('0x2d')](_0x256c4a,function(_0x515f94){if(_0x515f94[_0xb752('0x3f')]!=='VIRTUAL'){var _0x2f1766={};_0x2f1766[_0x515f94['name']]={'$like':'%'+_0x476fb4[_0xb752('0x30')]['filter']+'%'};return _0x2f1766;}})});}_0x1076fc=_[_0xb752('0x40')]({},_0x1076fc,_0x476fb4[_0xb752('0x41')]);var _0x59498d={'where':_0x1076fc[_0xb752('0x3d')]};return db[_0xb752('0x42')][_0xb752('0x21')](_0x59498d)['then'](function(_0x578f8e){_0x5703a0[_0xb752('0x21')]=_0x578f8e;if(_0x476fb4[_0xb752('0x30')][_0xb752('0x43')]){_0x1076fc[_0xb752('0x44')]=[{'all':!![]}];}return db['MailSubstatus'][_0xb752('0x45')](_0x1076fc);})[_0xb752('0x28')](function(_0x2a5c73){_0x5703a0[_0xb752('0x46')]=_0x2a5c73;return _0x5703a0;})[_0xb752('0x28')](respondWithFilteredResult(_0xba3599,_0x1076fc))['catch'](handleError(_0xba3599,null));};exports[_0xb752('0x47')]=function(_0x374640,_0x2e9286){var _0x1aae2e={'raw':!![],'where':{'id':_0x374640[_0xb752('0x48')]['id']}},_0x78f31a={};_0x78f31a[_0xb752('0x35')]=_['keys'](db[_0xb752('0x42')][_0xb752('0x49')]);_0x78f31a[_0xb752('0x30')]=_[_0xb752('0x31')](_0x374640[_0xb752('0x30')]);_0x78f31a[_0xb752('0x32')]=_['intersection'](_0x78f31a['model'],_0x78f31a['query']);_0x1aae2e['attributes']=_[_0xb752('0x33')](_0x78f31a[_0xb752('0x35')],qs[_0xb752('0x36')](_0x374640[_0xb752('0x30')][_0xb752('0x36')]));_0x1aae2e[_0xb752('0x34')]=_0x1aae2e[_0xb752('0x34')][_0xb752('0x37')]?_0x1aae2e[_0xb752('0x34')]:_0x78f31a['model'];if(_0x374640[_0xb752('0x30')][_0xb752('0x43')]){_0x1aae2e[_0xb752('0x44')]=[{'all':!![]}];}_0x1aae2e=_['merge']({},_0x1aae2e,_0x374640[_0xb752('0x41')]);return db[_0xb752('0x42')]['find'](_0x1aae2e)[_0xb752('0x28')](handleEntityNotFound(_0x2e9286,null))['then'](respondWithResult(_0x2e9286,null))['catch'](handleError(_0x2e9286,null));};exports['create']=function(_0x8502f1,_0x196125){return db[_0xb752('0x42')][_0xb752('0x4a')](_0x8502f1['body'],{})[_0xb752('0x28')](respondWithResult(_0x196125,0xc9))[_0xb752('0x4b')](handleError(_0x196125,null));};exports[_0xb752('0x27')]=function(_0x24877c,_0xfecf0d){if(_0x24877c[_0xb752('0x4c')]['id']){delete _0x24877c['body']['id'];}return db['MailSubstatus'][_0xb752('0x4d')]({'where':{'id':_0x24877c['params']['id']}})['then'](handleEntityNotFound(_0xfecf0d,null))[_0xb752('0x28')](saveUpdates(_0x24877c[_0xb752('0x4c')],null))[_0xb752('0x28')](respondWithResult(_0xfecf0d,null))[_0xb752('0x4b')](handleError(_0xfecf0d,null));};exports[_0xb752('0x4e')]=function(_0x1d1c8d,_0x31bac0){return db['MailSubstatus'][_0xb752('0x4d')]({'where':{'id':_0x1d1c8d[_0xb752('0x48')]['id']}})[_0xb752('0x28')](handleEntityNotFound(_0x31bac0,null))[_0xb752('0x28')](removeEntity(_0x31bac0,null))['catch'](handleError(_0x31bac0,null));};exports[_0xb752('0x4f')]=function(_0x1be1d9,_0x12ce9f){return db[_0xb752('0x42')][_0xb752('0x4f')]()[_0xb752('0x28')](respondWithResult(_0x12ce9f,null))['catch'](handleError(_0x12ce9f,null));};
\ No newline at end of file
+var _0x5699=['fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','filter','type','VIRTUAL','options','then','includeAll','include','findAll','rows','params','catch','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','undefined','count','offset','limit','status','set','apply','reject','save','update','destroy','end','stack','name','send','index','map','MailSubstatus','rawAttributes'];(function(_0x347ea8,_0x2ac098){var _0x2e83f4=function(_0x430d5f){while(--_0x430d5f){_0x347ea8['push'](_0x347ea8['shift']());}};_0x2e83f4(++_0x2ac098);}(_0x5699,0xaf));var _0x9569=function(_0x3477aa,_0xb32e81){_0x3477aa=_0x3477aa-0x0;var _0x1210f1=_0x5699[_0x3477aa];return _0x1210f1;};'use strict';var emlformat=require(_0x9569('0x0'));var rimraf=require(_0x9569('0x1'));var zipdir=require(_0x9569('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9569('0x3'));var moment=require(_0x9569('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9569('0x5'));var util=require(_0x9569('0x6'));var path=require('path');var sox=require(_0x9569('0x7'));var csv=require(_0x9569('0x8'));var ejs=require(_0x9569('0x9'));var fs=require('fs');var fs_extra=require(_0x9569('0xa'));var _=require('lodash');var squel=require(_0x9569('0xb'));var crypto=require('crypto');var jsforce=require(_0x9569('0xc'));var deskjs=require(_0x9569('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9569('0xe'));var Papa=require(_0x9569('0xf'));var Redis=require(_0x9569('0x10'));var authService=require(_0x9569('0x11'));var qs=require(_0x9569('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9569('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x9569('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9569('0x15'));var db=require(_0x9569('0x16'))['db'];function respondWithStatusCode(_0x1e7f98,_0x53c9c4){_0x53c9c4=_0x53c9c4||0xcc;return function(_0x4ae34a){if(_0x4ae34a){return _0x1e7f98[_0x9569('0x17')](_0x53c9c4);}return _0x1e7f98['status'](_0x53c9c4)['end']();};}function respondWithResult(_0x322315,_0x162019){_0x162019=_0x162019||0xc8;return function(_0x4c1d4b){if(_0x4c1d4b){return _0x322315['status'](_0x162019)[_0x9569('0x18')](_0x4c1d4b);}};}function respondWithFilteredResult(_0x166abc,_0xb35847){return function(_0x125b5e){if(_0x125b5e){var _0x588459=typeof _0xb35847['offset']===_0x9569('0x19')&&typeof _0xb35847['limit']===_0x9569('0x19');var _0x40c989=_0x125b5e[_0x9569('0x1a')];var _0x1da4a2=_0x588459?0x0:_0xb35847['offset'];var _0x364a07=_0x588459?_0x125b5e['count']:_0xb35847[_0x9569('0x1b')]+_0xb35847[_0x9569('0x1c')];var _0x194a13;if(_0x364a07>=_0x40c989){_0x364a07=_0x40c989;_0x194a13=0xc8;}else{_0x194a13=0xce;}_0x166abc[_0x9569('0x1d')](_0x194a13);return _0x166abc[_0x9569('0x1e')]('Content-Range',_0x1da4a2+'-'+_0x364a07+'/'+_0x40c989)[_0x9569('0x18')](_0x125b5e);}return null;};}function patchUpdates(_0xfc0d24){return function(_0x441c17){try{jsonpatch[_0x9569('0x1f')](_0x441c17,_0xfc0d24,!![]);}catch(_0x42a090){return BPromise[_0x9569('0x20')](_0x42a090);}return _0x441c17[_0x9569('0x21')]();};}function saveUpdates(_0x8b0a44,_0x337bd3){return function(_0x4c857e){if(_0x4c857e){return _0x4c857e[_0x9569('0x22')](_0x8b0a44)['then'](function(_0x4244b2){return _0x4244b2;});}return null;};}function removeEntity(_0x6eb655,_0x37c207){return function(_0x28a9cc){if(_0x28a9cc){return _0x28a9cc[_0x9569('0x23')]()['then'](function(){_0x6eb655[_0x9569('0x1d')](0xcc)[_0x9569('0x24')]();});}};}function handleEntityNotFound(_0x3bf2df,_0x330cf6){return function(_0x2dc80e){if(!_0x2dc80e){_0x3bf2df[_0x9569('0x17')](0x194);}return _0x2dc80e;};}function handleError(_0x50f81b,_0x41f47b){_0x41f47b=_0x41f47b||0x1f4;return function(_0x47b1b3){logger['error'](_0x47b1b3[_0x9569('0x25')]);if(_0x47b1b3['name']){delete _0x47b1b3[_0x9569('0x26')];}_0x50f81b[_0x9569('0x1d')](_0x41f47b)[_0x9569('0x27')](_0x47b1b3);};}exports[_0x9569('0x28')]=function(_0x25cc38,_0x28c9de){var _0xdc0968={},_0x1f033a={},_0x1f46f7={'count':0x0,'rows':[]};var _0x1ad1f6=_[_0x9569('0x29')](db[_0x9569('0x2a')][_0x9569('0x2b')],function(_0x4ffca7){return{'name':_0x4ffca7[_0x9569('0x2c')],'type':_0x4ffca7['type'][_0x9569('0x2d')]};});_0x1f033a[_0x9569('0x2e')]=_[_0x9569('0x29')](_0x1ad1f6,'name');_0x1f033a[_0x9569('0x2f')]=_[_0x9569('0x30')](_0x25cc38['query']);_0x1f033a[_0x9569('0x31')]=_['intersection'](_0x1f033a[_0x9569('0x2e')],_0x1f033a[_0x9569('0x2f')]);_0xdc0968[_0x9569('0x32')]=_[_0x9569('0x33')](_0x1f033a[_0x9569('0x2e')],qs[_0x9569('0x34')](_0x25cc38['query'][_0x9569('0x34')]));_0xdc0968['attributes']=_0xdc0968[_0x9569('0x32')][_0x9569('0x35')]?_0xdc0968['attributes']:_0x1f033a['model'];if(!_0x25cc38['query']['hasOwnProperty']('nolimit')){_0xdc0968[_0x9569('0x1c')]=qs[_0x9569('0x1c')](_0x25cc38['query'][_0x9569('0x1c')]);_0xdc0968[_0x9569('0x1b')]=qs[_0x9569('0x1b')](_0x25cc38[_0x9569('0x2f')]['offset']);}_0xdc0968[_0x9569('0x36')]=qs[_0x9569('0x37')](_0x25cc38[_0x9569('0x2f')][_0x9569('0x37')]);_0xdc0968[_0x9569('0x38')]=qs[_0x9569('0x31')](_[_0x9569('0x39')](_0x25cc38[_0x9569('0x2f')],_0x1f033a['filters']),_0x1ad1f6);if(_0x25cc38[_0x9569('0x2f')][_0x9569('0x3a')]){_0xdc0968[_0x9569('0x38')]=_['merge'](_0xdc0968[_0x9569('0x38')],{'$or':_[_0x9569('0x29')](_0x1ad1f6,function(_0xfebf7d){if(_0xfebf7d[_0x9569('0x3b')]!==_0x9569('0x3c')){var _0x1b7bfa={};_0x1b7bfa[_0xfebf7d['name']]={'$like':'%'+_0x25cc38[_0x9569('0x2f')]['filter']+'%'};return _0x1b7bfa;}})});}_0xdc0968=_['merge']({},_0xdc0968,_0x25cc38[_0x9569('0x3d')]);var _0x434292={'where':_0xdc0968[_0x9569('0x38')]};return db[_0x9569('0x2a')][_0x9569('0x1a')](_0x434292)[_0x9569('0x3e')](function(_0x26b077){_0x1f46f7[_0x9569('0x1a')]=_0x26b077;if(_0x25cc38[_0x9569('0x2f')][_0x9569('0x3f')]){_0xdc0968[_0x9569('0x40')]=[{'all':!![]}];}return db[_0x9569('0x2a')][_0x9569('0x41')](_0xdc0968);})[_0x9569('0x3e')](function(_0x152215){_0x1f46f7[_0x9569('0x42')]=_0x152215;return _0x1f46f7;})[_0x9569('0x3e')](respondWithFilteredResult(_0x28c9de,_0xdc0968))['catch'](handleError(_0x28c9de,null));};exports['show']=function(_0x314a8b,_0x1c32b5){var _0xab48be={'raw':!![],'where':{'id':_0x314a8b[_0x9569('0x43')]['id']}},_0xa88e27={};_0xa88e27[_0x9569('0x2e')]=_[_0x9569('0x30')](db[_0x9569('0x2a')][_0x9569('0x2b')]);_0xa88e27[_0x9569('0x2f')]=_[_0x9569('0x30')](_0x314a8b[_0x9569('0x2f')]);_0xa88e27[_0x9569('0x31')]=_[_0x9569('0x33')](_0xa88e27[_0x9569('0x2e')],_0xa88e27[_0x9569('0x2f')]);_0xab48be['attributes']=_[_0x9569('0x33')](_0xa88e27['model'],qs[_0x9569('0x34')](_0x314a8b[_0x9569('0x2f')][_0x9569('0x34')]));_0xab48be[_0x9569('0x32')]=_0xab48be[_0x9569('0x32')]['length']?_0xab48be[_0x9569('0x32')]:_0xa88e27[_0x9569('0x2e')];if(_0x314a8b[_0x9569('0x2f')][_0x9569('0x3f')]){_0xab48be['include']=[{'all':!![]}];}_0xab48be=_['merge']({},_0xab48be,_0x314a8b[_0x9569('0x3d')]);return db['MailSubstatus']['find'](_0xab48be)[_0x9569('0x3e')](handleEntityNotFound(_0x1c32b5,null))[_0x9569('0x3e')](respondWithResult(_0x1c32b5,null))[_0x9569('0x44')](handleError(_0x1c32b5,null));};exports['create']=function(_0x3ac3cb,_0x14d432){return db[_0x9569('0x2a')][_0x9569('0x45')](_0x3ac3cb[_0x9569('0x46')],{})['then'](respondWithResult(_0x14d432,0xc9))['catch'](handleError(_0x14d432,null));};exports['update']=function(_0x54e0d8,_0x175482){if(_0x54e0d8[_0x9569('0x46')]['id']){delete _0x54e0d8[_0x9569('0x46')]['id'];}return db['MailSubstatus'][_0x9569('0x47')]({'where':{'id':_0x54e0d8[_0x9569('0x43')]['id']}})[_0x9569('0x3e')](handleEntityNotFound(_0x175482,null))[_0x9569('0x3e')](saveUpdates(_0x54e0d8[_0x9569('0x46')],null))['then'](respondWithResult(_0x175482,null))[_0x9569('0x44')](handleError(_0x175482,null));};exports[_0x9569('0x23')]=function(_0x4a2983,_0xb45120){return db['MailSubstatus'][_0x9569('0x47')]({'where':{'id':_0x4a2983[_0x9569('0x43')]['id']}})[_0x9569('0x3e')](handleEntityNotFound(_0xb45120,null))[_0x9569('0x3e')](removeEntity(_0xb45120,null))[_0x9569('0x44')](handleError(_0xb45120,null));};exports[_0x9569('0x48')]=function(_0x3ef8b2,_0x46cbbf){return db[_0x9569('0x2a')]['describe']()[_0x9569('0x3e')](respondWithResult(_0x46cbbf,null))['catch'](handleError(_0x46cbbf,null));};
\ No newline at end of file
index 93ff690..9b71900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa04e=['update','emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners'];(function(_0x689b72,_0x150e74){var _0x5381e7=function(_0x244269){while(--_0x244269){_0x689b72['push'](_0x689b72['shift']());}};_0x5381e7(++_0x150e74);}(_0xa04e,0x112));var _0xea04=function(_0x1112b6,_0x24d927){_0x1112b6=_0x1112b6-0x0;var _0x55d0f0=_0xa04e[_0x1112b6];return _0x55d0f0;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0xea04('0x0'))['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xea04('0x1')](0x0);var events={'afterUpdate':_0xea04('0x2')};function emitEvent(_0x3019f1){return function(_0x23d229,_0x276cb0,_0xb2f3a7){MailSubstatusEvents[_0xea04('0x3')](_0x3019f1+':'+_0x23d229['id'],_0x23d229);MailSubstatusEvents[_0xea04('0x3')](_0x3019f1,_0x23d229);_0xb2f3a7(null);};}for(var e in events){if(events[_0xea04('0x4')](e)){var event=events[e];MailSubstatus[_0xea04('0x5')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
+var _0x1d78=['events','MailSubstatus','setMaxListeners','emit','hook'];(function(_0x2a96de,_0x7ac856){var _0x22b36e=function(_0x1ebe00){while(--_0x1ebe00){_0x2a96de['push'](_0x2a96de['shift']());}};_0x22b36e(++_0x7ac856);}(_0x1d78,0x1a9));var _0x81d7=function(_0x2af4a9,_0xe2c6eb){_0x2af4a9=_0x2af4a9-0x0;var _0x3a809d=_0x1d78[_0x2af4a9];return _0x3a809d;};'use strict';var EventEmitter=require(_0x81d7('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x81d7('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x81d7('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x2a5f59){return function(_0x1eb909,_0x5e2b69,_0x27d909){MailSubstatusEvents[_0x81d7('0x3')](_0x2a5f59+':'+_0x1eb909['id'],_0x1eb909);MailSubstatusEvents[_0x81d7('0x3')](_0x2a5f59,_0x1eb909);_0x27d909(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus[_0x81d7('0x4')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
index aefac2d..ebe77b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97df=['catch','./mailSubstatus.attributes','exports','models','define','MailSubstatus','update','_previousDataValues','name'];(function(_0x25d822,_0x25fdca){var _0x33e96d=function(_0x2d2a8a){while(--_0x2d2a8a){_0x25d822['push'](_0x25d822['shift']());}};_0x33e96d(++_0x25fdca);}(_0x97df,0x196));var _0xf97d=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x97df[_0x1cfa0d];return _0xe33279;};'use strict';var attributes=require(_0xf97d('0x0'));module[_0xf97d('0x1')]=function(_0x5aa28f){var _0x3bae13=_0x5aa28f[_0xf97d('0x2')];return _0x5aa28f[_0xf97d('0x3')](_0xf97d('0x4'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x21bd3b,_0x5159d2,_0x4d9712){return _0x3bae13['Condition'][_0xf97d('0x5')]({'value':_0x21bd3b['name']},{'where':{'field':'mailSubstatus','value':_0x21bd3b[_0xf97d('0x6')][_0xf97d('0x7')]}})['then'](function(){_0x4d9712();})[_0xf97d('0x8')](function(_0x2f4c85){_0x4d9712(_0x2f4c85);});}}});};
\ No newline at end of file
+var _0xf760=['catch','./mailSubstatus.attributes','exports','models','MailSubstatus','mail_substatuses','Condition','name','mailSubstatus','_previousDataValues','then'];(function(_0x3394a6,_0x7b1ede){var _0x4a7909=function(_0x20451f){while(--_0x20451f){_0x3394a6['push'](_0x3394a6['shift']());}};_0x4a7909(++_0x7b1ede);}(_0xf760,0x7a));var _0x0f76=function(_0x909676,_0x14728c){_0x909676=_0x909676-0x0;var _0x3e6468=_0xf760[_0x909676];return _0x3e6468;};'use strict';var attributes=require(_0x0f76('0x0'));module[_0x0f76('0x1')]=function(_0xb2735d){var _0x354aef=_0xb2735d[_0x0f76('0x2')];return _0xb2735d['define'](_0x0f76('0x3'),attributes,{'tableName':_0x0f76('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x4d19f2,_0x558590,_0x526989){return _0x354aef[_0x0f76('0x5')]['update']({'value':_0x4d19f2[_0x0f76('0x6')]},{'where':{'field':_0x0f76('0x7'),'value':_0x4d19f2[_0x0f76('0x8')][_0x0f76('0x6')]}})[_0x0f76('0x9')](function(){_0x526989();})[_0x0f76('0xa')](function(_0x1b39ec){_0x526989(_0x1b39ec);});}}});};
\ No newline at end of file
index 8f0f15b..e7c787d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd19=['debug','stringify','error','code','message','MailSubstatus,\x20%s,\x20%s','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent'];(function(_0x5a03fa,_0xcf3275){var _0x29e6c2=function(_0x10638b){while(--_0x10638b){_0x5a03fa['push'](_0x5a03fa['shift']());}};_0x29e6c2(++_0xcf3275);}(_0xdd19,0xc5));var _0x9dd1=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xdd19[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0x9dd1('0x0'));var util=require('util');var moment=require(_0x9dd1('0x1'));var BPromise=require('bluebird');var rs=require(_0x9dd1('0x2'));var fs=require('fs');var Redis=require(_0x9dd1('0x3'));var db=require(_0x9dd1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9dd1('0x5'))(_0x9dd1('0x6'));var config=require(_0x9dd1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9dd1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5eb634,_0x2b41f9,_0x5d72b8){return new BPromise(function(_0x1209cc,_0x1597ae){return client[_0x9dd1('0x9')](_0x5eb634,_0x5d72b8)[_0x9dd1('0xa')](function(_0x50b0ee){logger[_0x9dd1('0xb')]('MailSubstatus,\x20%s,\x20%s',_0x2b41f9,_0x9dd1('0xc'));logger[_0x9dd1('0xd')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x2b41f9,'request\x20sent',JSON[_0x9dd1('0xe')](_0x50b0ee));if(_0x50b0ee[_0x9dd1('0xf')]){if(_0x50b0ee[_0x9dd1('0xf')][_0x9dd1('0x10')]===0x1f4){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x2b41f9,_0x50b0ee[_0x9dd1('0xf')][_0x9dd1('0x11')]);return _0x1597ae(_0x50b0ee[_0x9dd1('0xf')][_0x9dd1('0x11')]);}logger[_0x9dd1('0xf')]('MailSubstatus,\x20%s,\x20%s',_0x2b41f9,_0x50b0ee[_0x9dd1('0xf')]['message']);return _0x1209cc(_0x50b0ee[_0x9dd1('0xf')]['message']);}else{logger[_0x9dd1('0xb')](_0x9dd1('0x12'),_0x2b41f9,_0x9dd1('0xc'));_0x1209cc(_0x50b0ee[_0x9dd1('0x13')][_0x9dd1('0x11')]);}})[_0x9dd1('0x14')](function(_0x53490c){logger['error'](_0x9dd1('0x12'),_0x2b41f9,_0x53490c);_0x1597ae(_0x53490c);});});}
\ No newline at end of file
+var _0x38bd=['request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','MailSubstatus,\x20%s,\x20%s'];(function(_0x3e5119,_0x22fea4){var _0x347d8c=function(_0x2c9de7){while(--_0x2c9de7){_0x3e5119['push'](_0x3e5119['shift']());}};_0x347d8c(++_0x22fea4);}(_0x38bd,0x6b));var _0xd38b=function(_0xfc58b6,_0x44a046){_0xfc58b6=_0xfc58b6-0x0;var _0x229de6=_0x38bd[_0xfc58b6];return _0x229de6;};'use strict';var _=require(_0xd38b('0x0'));var util=require(_0xd38b('0x1'));var moment=require(_0xd38b('0x2'));var BPromise=require(_0xd38b('0x3'));var rs=require(_0xd38b('0x4'));var fs=require('fs');var Redis=require(_0xd38b('0x5'));var db=require(_0xd38b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd38b('0x7'))(_0xd38b('0x8'));var config=require('../../config/environment');var jayson=require(_0xd38b('0x9'));var client=jayson['client'][_0xd38b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x156e12,_0x459c6a,_0x11d601){return new BPromise(function(_0x519581,_0x302ba9){return client[_0xd38b('0xb')](_0x156e12,_0x11d601)['then'](function(_0xc5bc10){logger['info'](_0xd38b('0xc'),_0x459c6a,_0xd38b('0xd'));logger[_0xd38b('0xe')](_0xd38b('0xf'),_0x459c6a,_0xd38b('0xd'),JSON['stringify'](_0xc5bc10));if(_0xc5bc10[_0xd38b('0x10')]){if(_0xc5bc10[_0xd38b('0x10')][_0xd38b('0x11')]===0x1f4){logger[_0xd38b('0x10')](_0xd38b('0xc'),_0x459c6a,_0xc5bc10['error']['message']);return _0x302ba9(_0xc5bc10[_0xd38b('0x10')]['message']);}logger[_0xd38b('0x10')]('MailSubstatus,\x20%s,\x20%s',_0x459c6a,_0xc5bc10[_0xd38b('0x10')][_0xd38b('0x12')]);return _0x519581(_0xc5bc10['error']['message']);}else{logger['info'](_0xd38b('0xc'),_0x459c6a,'request\x20sent');_0x519581(_0xc5bc10['result'][_0xd38b('0x12')]);}})[_0xd38b('0x13')](function(_0x38c655){logger[_0xd38b('0x10')](_0xd38b('0xc'),_0x459c6a,_0x38c655);_0x302ba9(_0x38c655);});});}
\ No newline at end of file
index 17cc929..769f37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74e=['exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','/describe','/:id','show','post','create','put','update','delete','destroy'];(function(_0x4006eb,_0x110020){var _0x2976aa=function(_0x2acb45){while(--_0x2acb45){_0x4006eb['push'](_0x4006eb['shift']());}};_0x2976aa(++_0x110020);}(_0xa74e,0x1b9));var _0xea74=function(_0x29b106,_0x2252e1){_0x29b106=_0x29b106-0x0;var _0x51ce2d=_0xa74e[_0x29b106];return _0x51ce2d;};'use strict';var multer=require('multer');var util=require(_0xea74('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xea74('0x1'));var router=express[_0xea74('0x2')]();var fs_extra=require(_0xea74('0x3'));var auth=require(_0xea74('0x4'));var interaction=require(_0xea74('0x5'));var config=require(_0xea74('0x6'));var controller=require(_0xea74('0x7'));router[_0xea74('0x8')]('/',auth[_0xea74('0x9')](),controller['index']);router[_0xea74('0x8')](_0xea74('0xa'),auth[_0xea74('0x9')](),controller['describe']);router[_0xea74('0x8')](_0xea74('0xb'),auth[_0xea74('0x9')](),controller[_0xea74('0xc')]);router[_0xea74('0xd')]('/',auth[_0xea74('0x9')](),controller[_0xea74('0xe')]);router[_0xea74('0xf')](_0xea74('0xb'),auth[_0xea74('0x9')](),controller[_0xea74('0x10')]);router[_0xea74('0x11')](_0xea74('0xb'),auth[_0xea74('0x9')](),controller[_0xea74('0x12')]);module[_0xea74('0x13')]=router;
\ No newline at end of file
+var _0x234d=['./mailTransferReport.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0x234d,0x160));var _0xd234=function(_0x2f1164,_0x147bae){_0x2f1164=_0x2f1164-0x0;var _0x5d2e25=_0x234d[_0x2f1164];return _0x5d2e25;};'use strict';var multer=require('multer');var util=require(_0xd234('0x0'));var path=require('path');var timeout=require(_0xd234('0x1'));var express=require('express');var router=express[_0xd234('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xd234('0x3'));var interaction=require(_0xd234('0x4'));var config=require('../../config/environment');var controller=require(_0xd234('0x5'));router[_0xd234('0x6')]('/',auth[_0xd234('0x7')](),controller[_0xd234('0x8')]);router[_0xd234('0x6')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd234('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xd234('0x9')]);router[_0xd234('0xa')]('/',auth[_0xd234('0x7')](),controller[_0xd234('0xb')]);router[_0xd234('0xc')](_0xd234('0xd'),auth[_0xd234('0x7')](),controller[_0xd234('0xe')]);router[_0xd234('0xf')](_0xd234('0xd'),auth['isAuthenticated'](),controller[_0xd234('0x10')]);module['exports']=router;
\ No newline at end of file
index 2ee0afa..1a4f4ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x5dde91,_0x3bb66e){var _0x402888=function(_0x3ee674){while(--_0x3ee674){_0x5dde91['push'](_0x5dde91['shift']());}};_0x402888(++_0x3bb66e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xa9e0[_0x4c7fb5];return _0x2e10ac;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5ebc04,_0x14a363){var _0x17845c=function(_0x360850){while(--_0x360850){_0x5ebc04['push'](_0x5ebc04['shift']());}};_0x17845c(++_0x14a363);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2b4999,_0x8ce246){_0x2b4999=_0x2b4999-0x0;var _0x33da46=_0x9bde[_0x2b4999];return _0x33da46;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index e09fa12..f41875d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x841b=['type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','then','includeAll','rows','catch','show','params','rawAttributes','include','options','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','undefined','offset','count','limit','set','json','apply','save','destroy','sendStatus','error','name','index','MailTransferReport'];(function(_0x3c3209,_0x282855){var _0x59f0de=function(_0x49eb64){while(--_0x49eb64){_0x3c3209['push'](_0x3c3209['shift']());}};_0x59f0de(++_0x282855);}(_0x841b,0x1ca));var _0xb841=function(_0x893787,_0x2ecfe4){_0x893787=_0x893787-0x0;var _0x4d2cb0=_0x841b[_0x893787];return _0x4d2cb0;};'use strict';var emlformat=require(_0xb841('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb841('0x1'));var jsonpatch=require(_0xb841('0x2'));var rp=require(_0xb841('0x3'));var moment=require('moment');var BPromise=require(_0xb841('0x4'));var Mustache=require(_0xb841('0x5'));var util=require(_0xb841('0x6'));var path=require(_0xb841('0x7'));var sox=require('sox');var csv=require(_0xb841('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb841('0x9'));var _=require(_0xb841('0xa'));var squel=require('squel');var crypto=require(_0xb841('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb841('0xc'));var toCsv=require(_0xb841('0x8'));var querystring=require(_0xb841('0xd'));var Papa=require(_0xb841('0xe'));var Redis=require('ioredis');var authService=require(_0xb841('0xf'));var qs=require(_0xb841('0x10'));var as=require(_0xb841('0x11'));var hardwareService=require(_0xb841('0x12'));var logger=require(_0xb841('0x13'))('api');var utils=require(_0xb841('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xb841('0x15'));var db=require(_0xb841('0x16'))['db'];function respondWithStatusCode(_0x391852,_0x2fec53){_0x2fec53=_0x2fec53||0xcc;return function(_0x44f2a5){if(_0x44f2a5){return _0x391852['sendStatus'](_0x2fec53);}return _0x391852['status'](_0x2fec53)[_0xb841('0x17')]();};}function respondWithResult(_0x372d7c,_0x237f7f){_0x237f7f=_0x237f7f||0xc8;return function(_0x34a891){if(_0x34a891){return _0x372d7c[_0xb841('0x18')](_0x237f7f)['json'](_0x34a891);}};}function respondWithFilteredResult(_0x2fb705,_0x5994bc){return function(_0x5c1307){if(_0x5c1307){var _0x50a0ad=typeof _0x5994bc['offset']===_0xb841('0x19')&&typeof _0x5994bc['limit']===_0xb841('0x19');var _0x31e71c=_0x5c1307['count'];var _0x1980b5=_0x50a0ad?0x0:_0x5994bc[_0xb841('0x1a')];var _0x444c5d=_0x50a0ad?_0x5c1307[_0xb841('0x1b')]:_0x5994bc[_0xb841('0x1a')]+_0x5994bc[_0xb841('0x1c')];var _0x297784;if(_0x444c5d>=_0x31e71c){_0x444c5d=_0x31e71c;_0x297784=0xc8;}else{_0x297784=0xce;}_0x2fb705[_0xb841('0x18')](_0x297784);return _0x2fb705[_0xb841('0x1d')]('Content-Range',_0x1980b5+'-'+_0x444c5d+'/'+_0x31e71c)[_0xb841('0x1e')](_0x5c1307);}return null;};}function patchUpdates(_0x5e95fd){return function(_0x2a3981){try{jsonpatch[_0xb841('0x1f')](_0x2a3981,_0x5e95fd,!![]);}catch(_0x275d44){return BPromise['reject'](_0x275d44);}return _0x2a3981[_0xb841('0x20')]();};}function saveUpdates(_0x55a61b,_0x24f347){return function(_0xe3df30){if(_0xe3df30){return _0xe3df30['update'](_0x55a61b)['then'](function(_0x2d62d3){return _0x2d62d3;});}return null;};}function removeEntity(_0x5d5ec2,_0x4fedef){return function(_0x3f4ef7){if(_0x3f4ef7){return _0x3f4ef7[_0xb841('0x21')]()['then'](function(){_0x5d5ec2[_0xb841('0x18')](0xcc)[_0xb841('0x17')]();});}};}function handleEntityNotFound(_0xeb78d5,_0x4582d0){return function(_0x25eded){if(!_0x25eded){_0xeb78d5[_0xb841('0x22')](0x194);}return _0x25eded;};}function handleError(_0xaa7edb,_0xdcc6c3){_0xdcc6c3=_0xdcc6c3||0x1f4;return function(_0x5662e2){logger[_0xb841('0x23')](_0x5662e2['stack']);if(_0x5662e2['name']){delete _0x5662e2[_0xb841('0x24')];}_0xaa7edb[_0xb841('0x18')](_0xdcc6c3)['send'](_0x5662e2);};}exports[_0xb841('0x25')]=function(_0x594f8d,_0x5897ba){var _0x176b4e={},_0x47411f={},_0x41d87c={'count':0x0,'rows':[]};var _0x44cec9=_['map'](db[_0xb841('0x26')]['rawAttributes'],function(_0x10ca66){return{'name':_0x10ca66['fieldName'],'type':_0x10ca66[_0xb841('0x27')][_0xb841('0x28')]};});_0x47411f[_0xb841('0x29')]=_[_0xb841('0x2a')](_0x44cec9,_0xb841('0x24'));_0x47411f[_0xb841('0x2b')]=_[_0xb841('0x2c')](_0x594f8d[_0xb841('0x2b')]);_0x47411f[_0xb841('0x2d')]=_[_0xb841('0x2e')](_0x47411f['model'],_0x47411f[_0xb841('0x2b')]);_0x176b4e[_0xb841('0x2f')]=_[_0xb841('0x2e')](_0x47411f['model'],qs[_0xb841('0x30')](_0x594f8d['query'][_0xb841('0x30')]));_0x176b4e['attributes']=_0x176b4e[_0xb841('0x2f')][_0xb841('0x31')]?_0x176b4e[_0xb841('0x2f')]:_0x47411f[_0xb841('0x29')];if(!_0x594f8d[_0xb841('0x2b')][_0xb841('0x32')](_0xb841('0x33'))){_0x176b4e[_0xb841('0x1c')]=qs[_0xb841('0x1c')](_0x594f8d[_0xb841('0x2b')][_0xb841('0x1c')]);_0x176b4e[_0xb841('0x1a')]=qs['offset'](_0x594f8d[_0xb841('0x2b')][_0xb841('0x1a')]);}_0x176b4e['order']=qs[_0xb841('0x34')](_0x594f8d[_0xb841('0x2b')][_0xb841('0x34')]);_0x176b4e[_0xb841('0x35')]=qs[_0xb841('0x2d')](_[_0xb841('0x36')](_0x594f8d[_0xb841('0x2b')],_0x47411f[_0xb841('0x2d')]),_0x44cec9);if(_0x594f8d[_0xb841('0x2b')][_0xb841('0x37')]){_0x176b4e[_0xb841('0x35')]=_[_0xb841('0x38')](_0x176b4e['where'],{'$or':_[_0xb841('0x2a')](_0x44cec9,function(_0x32feff){if(_0x32feff[_0xb841('0x27')]!=='VIRTUAL'){var _0x2a64f6={};_0x2a64f6[_0x32feff[_0xb841('0x24')]]={'$like':'%'+_0x594f8d[_0xb841('0x2b')][_0xb841('0x37')]+'%'};return _0x2a64f6;}})});}_0x176b4e=_['merge']({},_0x176b4e,_0x594f8d['options']);var _0x552ebf={'where':_0x176b4e['where']};return db[_0xb841('0x26')]['count'](_0x552ebf)[_0xb841('0x39')](function(_0x54ea6b){_0x41d87c[_0xb841('0x1b')]=_0x54ea6b;if(_0x594f8d[_0xb841('0x2b')][_0xb841('0x3a')]){_0x176b4e['include']=[{'all':!![]}];}return db[_0xb841('0x26')]['findAll'](_0x176b4e);})[_0xb841('0x39')](function(_0x2b017a){_0x41d87c[_0xb841('0x3b')]=_0x2b017a;return _0x41d87c;})[_0xb841('0x39')](respondWithFilteredResult(_0x5897ba,_0x176b4e))[_0xb841('0x3c')](handleError(_0x5897ba,null));};exports[_0xb841('0x3d')]=function(_0x33c8cd,_0x2166ca){var _0x2f1f9f={'raw':!![],'where':{'id':_0x33c8cd[_0xb841('0x3e')]['id']}},_0xf6c5e7={};_0xf6c5e7[_0xb841('0x29')]=_[_0xb841('0x2c')](db[_0xb841('0x26')][_0xb841('0x3f')]);_0xf6c5e7[_0xb841('0x2b')]=_[_0xb841('0x2c')](_0x33c8cd[_0xb841('0x2b')]);_0xf6c5e7['filters']=_['intersection'](_0xf6c5e7[_0xb841('0x29')],_0xf6c5e7[_0xb841('0x2b')]);_0x2f1f9f['attributes']=_[_0xb841('0x2e')](_0xf6c5e7[_0xb841('0x29')],qs[_0xb841('0x30')](_0x33c8cd[_0xb841('0x2b')][_0xb841('0x30')]));_0x2f1f9f['attributes']=_0x2f1f9f['attributes'][_0xb841('0x31')]?_0x2f1f9f[_0xb841('0x2f')]:_0xf6c5e7[_0xb841('0x29')];if(_0x33c8cd['query'][_0xb841('0x3a')]){_0x2f1f9f[_0xb841('0x40')]=[{'all':!![]}];}_0x2f1f9f=_[_0xb841('0x38')]({},_0x2f1f9f,_0x33c8cd[_0xb841('0x41')]);return db[_0xb841('0x26')][_0xb841('0x42')](_0x2f1f9f)[_0xb841('0x39')](handleEntityNotFound(_0x2166ca,null))[_0xb841('0x39')](respondWithResult(_0x2166ca,null))['catch'](handleError(_0x2166ca,null));};exports[_0xb841('0x43')]=function(_0x551c10,_0x2dd85b){return db[_0xb841('0x26')]['create'](_0x551c10[_0xb841('0x44')],{})[_0xb841('0x39')](respondWithResult(_0x2dd85b,0xc9))['catch'](handleError(_0x2dd85b,null));};exports[_0xb841('0x45')]=function(_0x163b9f,_0x11e88d){if(_0x163b9f[_0xb841('0x44')]['id']){delete _0x163b9f['body']['id'];}return db[_0xb841('0x26')][_0xb841('0x42')]({'where':{'id':_0x163b9f[_0xb841('0x3e')]['id']}})['then'](handleEntityNotFound(_0x11e88d,null))[_0xb841('0x39')](saveUpdates(_0x163b9f[_0xb841('0x44')],null))['then'](respondWithResult(_0x11e88d,null))[_0xb841('0x3c')](handleError(_0x11e88d,null));};exports[_0xb841('0x21')]=function(_0x3bb992,_0x10cf9d){return db[_0xb841('0x26')][_0xb841('0x42')]({'where':{'id':_0x3bb992[_0xb841('0x3e')]['id']}})[_0xb841('0x39')](handleEntityNotFound(_0x10cf9d,null))[_0xb841('0x39')](removeEntity(_0x10cf9d,null))['catch'](handleError(_0x10cf9d,null));};exports['describe']=function(_0x1af5da,_0x3ea001){return db[_0xb841('0x26')][_0xb841('0x46')]()[_0xb841('0x39')](respondWithResult(_0x3ea001,null))[_0xb841('0x3c')](handleError(_0x3ea001,null));};
\ No newline at end of file
+var _0x894c=['Content-Range','reject','save','then','stack','name','send','MailTransferReport','rawAttributes','fieldName','type','key','map','query','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','findAll','rows','catch','params','keys','intersection','includeAll','find','create','body','update','destroy','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set'];(function(_0x107898,_0x57508b){var _0x43dadb=function(_0x513d56){while(--_0x513d56){_0x107898['push'](_0x107898['shift']());}};_0x43dadb(++_0x57508b);}(_0x894c,0x70));var _0xc894=function(_0x119b46,_0x431f5e){_0x119b46=_0x119b46-0x0;var _0x5e17a6=_0x894c[_0x119b46];return _0x5e17a6;};'use strict';var emlformat=require(_0xc894('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc894('0x1'));var jsonpatch=require(_0xc894('0x2'));var rp=require(_0xc894('0x3'));var moment=require('moment');var BPromise=require(_0xc894('0x4'));var Mustache=require('mustache');var util=require(_0xc894('0x5'));var path=require(_0xc894('0x6'));var sox=require(_0xc894('0x7'));var csv=require('to-csv');var ejs=require(_0xc894('0x8'));var fs=require('fs');var fs_extra=require(_0xc894('0x9'));var _=require(_0xc894('0xa'));var squel=require(_0xc894('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc894('0xc'));var toCsv=require(_0xc894('0xd'));var querystring=require(_0xc894('0xe'));var Papa=require(_0xc894('0xf'));var Redis=require('ioredis');var authService=require(_0xc894('0x10'));var qs=require(_0xc894('0x11'));var as=require(_0xc894('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc894('0x13'))('api');var utils=require(_0xc894('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc894('0x15'))['db'];function respondWithStatusCode(_0x1099ef,_0x43d326){_0x43d326=_0x43d326||0xcc;return function(_0x5d9478){if(_0x5d9478){return _0x1099ef[_0xc894('0x16')](_0x43d326);}return _0x1099ef[_0xc894('0x17')](_0x43d326)[_0xc894('0x18')]();};}function respondWithResult(_0x3004d0,_0x3d55e7){_0x3d55e7=_0x3d55e7||0xc8;return function(_0x547b44){if(_0x547b44){return _0x3004d0[_0xc894('0x17')](_0x3d55e7)[_0xc894('0x19')](_0x547b44);}};}function respondWithFilteredResult(_0x3cf92f,_0x54b49e){return function(_0x55ca9f){if(_0x55ca9f){var _0x4f6c62=typeof _0x54b49e[_0xc894('0x1a')]===_0xc894('0x1b')&&typeof _0x54b49e[_0xc894('0x1c')]==='undefined';var _0x34cefa=_0x55ca9f['count'];var _0x5ad404=_0x4f6c62?0x0:_0x54b49e[_0xc894('0x1a')];var _0x27d799=_0x4f6c62?_0x55ca9f['count']:_0x54b49e[_0xc894('0x1a')]+_0x54b49e[_0xc894('0x1c')];var _0x5f44ba;if(_0x27d799>=_0x34cefa){_0x27d799=_0x34cefa;_0x5f44ba=0xc8;}else{_0x5f44ba=0xce;}_0x3cf92f[_0xc894('0x17')](_0x5f44ba);return _0x3cf92f[_0xc894('0x1d')](_0xc894('0x1e'),_0x5ad404+'-'+_0x27d799+'/'+_0x34cefa)[_0xc894('0x19')](_0x55ca9f);}return null;};}function patchUpdates(_0x2367b7){return function(_0x5e8fca){try{jsonpatch['apply'](_0x5e8fca,_0x2367b7,!![]);}catch(_0x4c3fb7){return BPromise[_0xc894('0x1f')](_0x4c3fb7);}return _0x5e8fca[_0xc894('0x20')]();};}function saveUpdates(_0x4feb7a,_0x240f55){return function(_0x47261d){if(_0x47261d){return _0x47261d['update'](_0x4feb7a)['then'](function(_0x344394){return _0x344394;});}return null;};}function removeEntity(_0x178960,_0x392ab9){return function(_0x42ee0d){if(_0x42ee0d){return _0x42ee0d['destroy']()[_0xc894('0x21')](function(){_0x178960['status'](0xcc)[_0xc894('0x18')]();});}};}function handleEntityNotFound(_0x42102c,_0x3a2a88){return function(_0x3215fc){if(!_0x3215fc){_0x42102c[_0xc894('0x16')](0x194);}return _0x3215fc;};}function handleError(_0x4f34bb,_0x313b62){_0x313b62=_0x313b62||0x1f4;return function(_0xa84a95){logger['error'](_0xa84a95[_0xc894('0x22')]);if(_0xa84a95['name']){delete _0xa84a95[_0xc894('0x23')];}_0x4f34bb[_0xc894('0x17')](_0x313b62)[_0xc894('0x24')](_0xa84a95);};}exports['index']=function(_0x184c86,_0x2e8bb9){var _0x481ac7={},_0x14262a={},_0x647433={'count':0x0,'rows':[]};var _0x1f8015=_['map'](db[_0xc894('0x25')][_0xc894('0x26')],function(_0x445729){return{'name':_0x445729[_0xc894('0x27')],'type':_0x445729[_0xc894('0x28')][_0xc894('0x29')]};});_0x14262a['model']=_[_0xc894('0x2a')](_0x1f8015,_0xc894('0x23'));_0x14262a[_0xc894('0x2b')]=_['keys'](_0x184c86[_0xc894('0x2b')]);_0x14262a['filters']=_['intersection'](_0x14262a['model'],_0x14262a[_0xc894('0x2b')]);_0x481ac7['attributes']=_['intersection'](_0x14262a[_0xc894('0x2c')],qs[_0xc894('0x2d')](_0x184c86[_0xc894('0x2b')]['fields']));_0x481ac7[_0xc894('0x2e')]=_0x481ac7['attributes'][_0xc894('0x2f')]?_0x481ac7[_0xc894('0x2e')]:_0x14262a[_0xc894('0x2c')];if(!_0x184c86[_0xc894('0x2b')][_0xc894('0x30')](_0xc894('0x31'))){_0x481ac7[_0xc894('0x1c')]=qs['limit'](_0x184c86['query'][_0xc894('0x1c')]);_0x481ac7[_0xc894('0x1a')]=qs[_0xc894('0x1a')](_0x184c86[_0xc894('0x2b')][_0xc894('0x1a')]);}_0x481ac7[_0xc894('0x32')]=qs[_0xc894('0x33')](_0x184c86[_0xc894('0x2b')]['sort']);_0x481ac7[_0xc894('0x34')]=qs['filters'](_[_0xc894('0x35')](_0x184c86[_0xc894('0x2b')],_0x14262a[_0xc894('0x36')]),_0x1f8015);if(_0x184c86['query'][_0xc894('0x37')]){_0x481ac7[_0xc894('0x34')]=_['merge'](_0x481ac7[_0xc894('0x34')],{'$or':_['map'](_0x1f8015,function(_0x2d2e90){if(_0x2d2e90['type']!==_0xc894('0x38')){var _0x1c55cb={};_0x1c55cb[_0x2d2e90[_0xc894('0x23')]]={'$like':'%'+_0x184c86[_0xc894('0x2b')][_0xc894('0x37')]+'%'};return _0x1c55cb;}})});}_0x481ac7=_[_0xc894('0x39')]({},_0x481ac7,_0x184c86[_0xc894('0x3a')]);var _0x43e093={'where':_0x481ac7['where']};return db['MailTransferReport']['count'](_0x43e093)[_0xc894('0x21')](function(_0x2aeb09){_0x647433['count']=_0x2aeb09;if(_0x184c86[_0xc894('0x2b')]['includeAll']){_0x481ac7['include']=[{'all':!![]}];}return db[_0xc894('0x25')][_0xc894('0x3b')](_0x481ac7);})[_0xc894('0x21')](function(_0x21f4dc){_0x647433[_0xc894('0x3c')]=_0x21f4dc;return _0x647433;})[_0xc894('0x21')](respondWithFilteredResult(_0x2e8bb9,_0x481ac7))[_0xc894('0x3d')](handleError(_0x2e8bb9,null));};exports['show']=function(_0x4507f8,_0x2d4cc7){var _0x2d14dc={'raw':!![],'where':{'id':_0x4507f8[_0xc894('0x3e')]['id']}},_0x3449b2={};_0x3449b2[_0xc894('0x2c')]=_[_0xc894('0x3f')](db['MailTransferReport'][_0xc894('0x26')]);_0x3449b2[_0xc894('0x2b')]=_[_0xc894('0x3f')](_0x4507f8[_0xc894('0x2b')]);_0x3449b2[_0xc894('0x36')]=_[_0xc894('0x40')](_0x3449b2[_0xc894('0x2c')],_0x3449b2[_0xc894('0x2b')]);_0x2d14dc[_0xc894('0x2e')]=_[_0xc894('0x40')](_0x3449b2['model'],qs['fields'](_0x4507f8['query'][_0xc894('0x2d')]));_0x2d14dc[_0xc894('0x2e')]=_0x2d14dc[_0xc894('0x2e')][_0xc894('0x2f')]?_0x2d14dc['attributes']:_0x3449b2[_0xc894('0x2c')];if(_0x4507f8['query'][_0xc894('0x41')]){_0x2d14dc['include']=[{'all':!![]}];}_0x2d14dc=_[_0xc894('0x39')]({},_0x2d14dc,_0x4507f8['options']);return db[_0xc894('0x25')][_0xc894('0x42')](_0x2d14dc)[_0xc894('0x21')](handleEntityNotFound(_0x2d4cc7,null))['then'](respondWithResult(_0x2d4cc7,null))[_0xc894('0x3d')](handleError(_0x2d4cc7,null));};exports[_0xc894('0x43')]=function(_0x31c9c6,_0x39dbcb){return db['MailTransferReport']['create'](_0x31c9c6[_0xc894('0x44')],{})['then'](respondWithResult(_0x39dbcb,0xc9))[_0xc894('0x3d')](handleError(_0x39dbcb,null));};exports[_0xc894('0x45')]=function(_0x4b4ee2,_0x1f9565){if(_0x4b4ee2[_0xc894('0x44')]['id']){delete _0x4b4ee2[_0xc894('0x44')]['id'];}return db[_0xc894('0x25')][_0xc894('0x42')]({'where':{'id':_0x4b4ee2[_0xc894('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1f9565,null))['then'](saveUpdates(_0x4b4ee2[_0xc894('0x44')],null))[_0xc894('0x21')](respondWithResult(_0x1f9565,null))['catch'](handleError(_0x1f9565,null));};exports[_0xc894('0x46')]=function(_0x5aa4b4,_0xf28537){return db[_0xc894('0x25')][_0xc894('0x42')]({'where':{'id':_0x5aa4b4['params']['id']}})[_0xc894('0x21')](handleEntityNotFound(_0xf28537,null))[_0xc894('0x21')](removeEntity(_0xf28537,null))[_0xc894('0x3d')](handleError(_0xf28537,null));};exports['describe']=function(_0x362f59,_0x43396f){return db[_0xc894('0x25')]['describe']()['then'](respondWithResult(_0x43396f,null))['catch'](handleError(_0x43396f,null));};
\ No newline at end of file
index 60844b1..ce06284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8c4=['report_mail_transfer','uniqueid','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport'];(function(_0x24b25f,_0x298a29){var _0x1db2c9=function(_0x4cb593){while(--_0x4cb593){_0x24b25f['push'](_0x24b25f['shift']());}};_0x1db2c9(++_0x298a29);}(_0xa8c4,0x12d));var _0x4a8c=function(_0x371d49,_0x39418d){_0x371d49=_0x371d49-0x0;var _0x4aacc6=_0xa8c4[_0x371d49];return _0x4aacc6;};'use strict';var _=require('lodash');var util=require(_0x4a8c('0x0'));var logger=require(_0x4a8c('0x1'))('api');var moment=require(_0x4a8c('0x2'));var BPromise=require(_0x4a8c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a8c('0x4'));var rimraf=require(_0x4a8c('0x5'));var config=require(_0x4a8c('0x6'));var attributes=require(_0x4a8c('0x7'));module[_0x4a8c('0x8')]=function(_0x392c01,_0x1e8a2d){return _0x392c01[_0x4a8c('0x9')](_0x4a8c('0xa'),attributes,{'tableName':_0x4a8c('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4a8c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f17=['../../config/environment','define','report_mail_transfer','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4f17,0x9e));var _0x74f1=function(_0x1f97e8,_0x445a4a){_0x1f97e8=_0x1f97e8-0x0;var _0x1ed77c=_0x4f17[_0x1f97e8];return _0x1ed77c;};'use strict';var _=require(_0x74f1('0x0'));var util=require('util');var logger=require(_0x74f1('0x1'))(_0x74f1('0x2'));var moment=require('moment');var BPromise=require(_0x74f1('0x3'));var rp=require(_0x74f1('0x4'));var fs=require('fs');var path=require(_0x74f1('0x5'));var rimraf=require(_0x74f1('0x6'));var config=require(_0x74f1('0x7'));var attributes=require('./mailTransferReport.attributes');module['exports']=function(_0x3f65bb,_0x4b894a){return _0x3f65bb[_0x74f1('0x8')]('MailTransferReport',attributes,{'tableName':_0x74f1('0x9'),'paranoid':![],'indexes':[{'name':_0x74f1('0xa'),'fields':[_0x74f1('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index b878fd6..71bdd3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3546=['client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x3546,0x8b));var _0x6354=function(_0x1b4c04,_0x8d961d){_0x1b4c04=_0x1b4c04-0x0;var _0x374f5d=_0x3546[_0x1b4c04];return _0x374f5d;};'use strict';var _=require(_0x6354('0x0'));var util=require(_0x6354('0x1'));var moment=require(_0x6354('0x2'));var BPromise=require('bluebird');var rs=require(_0x6354('0x3'));var fs=require('fs');var Redis=require(_0x6354('0x4'));var db=require(_0x6354('0x5'))['db'];var utils=require(_0x6354('0x6'));var logger=require(_0x6354('0x7'))(_0x6354('0x8'));var config=require(_0x6354('0x9'));var jayson=require(_0x6354('0xa'));var client=jayson[_0x6354('0xb')][_0x6354('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7fadc0,_0xa632f6,_0x1f9e58){return new BPromise(function(_0x1bda31,_0x4c412b){return client[_0x6354('0xd')](_0x7fadc0,_0x1f9e58)[_0x6354('0xe')](function(_0x2099c8){logger[_0x6354('0xf')](_0x6354('0x10'),_0xa632f6,_0x6354('0x11'));logger[_0x6354('0x12')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0xa632f6,_0x6354('0x11'),JSON[_0x6354('0x13')](_0x2099c8));if(_0x2099c8[_0x6354('0x14')]){if(_0x2099c8['error'][_0x6354('0x15')]===0x1f4){logger[_0x6354('0x14')]('MailTransferReport,\x20%s,\x20%s',_0xa632f6,_0x2099c8[_0x6354('0x14')][_0x6354('0x16')]);return _0x4c412b(_0x2099c8[_0x6354('0x14')][_0x6354('0x16')]);}logger['error'](_0x6354('0x10'),_0xa632f6,_0x2099c8[_0x6354('0x14')][_0x6354('0x16')]);return _0x1bda31(_0x2099c8[_0x6354('0x14')]['message']);}else{logger[_0x6354('0xf')]('MailTransferReport,\x20%s,\x20%s',_0xa632f6,_0x6354('0x11'));_0x1bda31(_0x2099c8[_0x6354('0x17')][_0x6354('0x16')]);}})[_0x6354('0x18')](function(_0x5e5c27){logger[_0x6354('0x14')](_0x6354('0x10'),_0xa632f6,_0x5e5c27);_0x4c412b(_0x5e5c27);});});}
\ No newline at end of file
+var _0x8718=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x403880,_0x53c2e3){var _0x2cc9e6=function(_0x21af70){while(--_0x21af70){_0x403880['push'](_0x403880['shift']());}};_0x2cc9e6(++_0x53c2e3);}(_0x8718,0x138));var _0x8871=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x8718[_0x11005e];return _0x29338f;};'use strict';var _=require(_0x8871('0x0'));var util=require('util');var moment=require(_0x8871('0x1'));var BPromise=require(_0x8871('0x2'));var rs=require(_0x8871('0x3'));var fs=require('fs');var Redis=require(_0x8871('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8871('0x5'));var logger=require(_0x8871('0x6'))(_0x8871('0x7'));var config=require(_0x8871('0x8'));var jayson=require(_0x8871('0x9'));var client=jayson[_0x8871('0xa')][_0x8871('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x350fc2,_0xa340af,_0x3bfd27){return new BPromise(function(_0x3505ff,_0x3fe0c9){return client[_0x8871('0xc')](_0x350fc2,_0x3bfd27)[_0x8871('0xd')](function(_0x812513){logger[_0x8871('0xe')](_0x8871('0xf'),_0xa340af,'request\x20sent');logger['debug'](_0x8871('0x10'),_0xa340af,_0x8871('0x11'),JSON[_0x8871('0x12')](_0x812513));if(_0x812513[_0x8871('0x13')]){if(_0x812513['error'][_0x8871('0x14')]===0x1f4){logger[_0x8871('0x13')](_0x8871('0xf'),_0xa340af,_0x812513['error']['message']);return _0x3fe0c9(_0x812513[_0x8871('0x13')][_0x8871('0x15')]);}logger[_0x8871('0x13')]('MailTransferReport,\x20%s,\x20%s',_0xa340af,_0x812513['error'][_0x8871('0x15')]);return _0x3505ff(_0x812513[_0x8871('0x13')]['message']);}else{logger[_0x8871('0xe')](_0x8871('0xf'),_0xa340af,'request\x20sent');_0x3505ff(_0x812513[_0x8871('0x16')]['message']);}})[_0x8871('0x17')](function(_0x5218f6){logger[_0x8871('0x13')](_0x8871('0xf'),_0xa340af,_0x5218f6);_0x3fe0c9(_0x5218f6);});});}
\ No newline at end of file
index a67608d..5708f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9808=['post','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x44c340,_0x575719){var _0x2cd080=function(_0x1109ea){while(--_0x1109ea){_0x44c340['push'](_0x44c340['shift']());}};_0x2cd080(++_0x575719);}(_0x9808,0x146));var _0x8980=function(_0x2eb5bc,_0x4634c6){_0x2eb5bc=_0x2eb5bc-0x0;var _0x51c7b1=_0x9808[_0x2eb5bc];return _0x51c7b1;};'use strict';var multer=require(_0x8980('0x0'));var util=require(_0x8980('0x1'));var path=require(_0x8980('0x2'));var timeout=require('connect-timeout');var express=require(_0x8980('0x3'));var router=express[_0x8980('0x4')]();var fs_extra=require(_0x8980('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8980('0x6'));var config=require(_0x8980('0x7'));var controller=require(_0x8980('0x8'));router[_0x8980('0x9')]('/',auth[_0x8980('0xa')](),controller[_0x8980('0xb')]);router['get'](_0x8980('0xc'),auth[_0x8980('0xa')](),controller[_0x8980('0xd')]);router[_0x8980('0x9')](_0x8980('0xe'),auth[_0x8980('0xa')](),controller[_0x8980('0xf')]);router[_0x8980('0x10')]('/',auth[_0x8980('0xa')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x8980('0x11')](_0x8980('0xe'),auth['isAuthenticated'](),controller[_0x8980('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x22ba=['Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','destroy','exports','util','express'];(function(_0x181062,_0x4daeda){var _0xe41197=function(_0x458d1a){while(--_0x458d1a){_0x181062['push'](_0x181062['shift']());}};_0xe41197(++_0x4daeda);}(_0x22ba,0x6e));var _0xa22b=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x22ba[_0x3c4737];return _0x2bb926;};'use strict';var multer=require('multer');var util=require(_0xa22b('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa22b('0x1'));var router=express[_0xa22b('0x2')]();var fs_extra=require(_0xa22b('0x3'));var auth=require(_0xa22b('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./memberReport.controller');router[_0xa22b('0x5')]('/',auth[_0xa22b('0x6')](),controller[_0xa22b('0x7')]);router[_0xa22b('0x5')](_0xa22b('0x8'),auth[_0xa22b('0x6')](),controller[_0xa22b('0x9')]);router['get'](_0xa22b('0xa'),auth[_0xa22b('0x6')](),controller[_0xa22b('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa22b('0xa'),auth[_0xa22b('0x6')](),controller['update']);router['delete']('/:id',auth[_0xa22b('0x6')](),controller[_0xa22b('0xc')]);module[_0xa22b('0xd')]=router;
\ No newline at end of file
index 0f0b62e..1e891fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1699=['exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[queue]','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue'];(function(_0x539533,_0x59b89b){var _0x3942f3=function(_0x3b386c){while(--_0x3b386c){_0x539533['push'](_0x539533['shift']());}};_0x3942f3(++_0x59b89b);}(_0x1699,0x1e1));var _0x9169=function(_0x9b9c46,_0x3997a8){_0x9b9c46=_0x9b9c46-0x0;var _0x47ee52=_0x1699[_0x9b9c46];return _0x47ee52;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9169('0x0'));module[_0x9169('0x1')]={'channel':{'type':Sequelize[_0x9169('0x2')]},'membername':{'type':Sequelize[_0x9169('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x9169('0x2')],'defaultValue':_0x9169('0x3'),'comment':_0x9169('0x4')},'duration':{'type':Sequelize[_0x9169('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x9169('0x6')],'set':function(_0x3bf617){var _0x115ae4=moment(_0x3bf617);var _0x573cb6=moment(this[_0x9169('0x7')](_0x9169('0x8')));var _0x49e6a2=_0x115ae4[_0x9169('0x9')](_0x573cb6,_0x9169('0xa'));this[_0x9169('0xb')](_0x9169('0xc'),_0x3bf617);this['setDataValue'](_0x9169('0xd'),_0x49e6a2>=0x0?_0x49e6a2:null);}},'data1':{'type':Sequelize[_0x9169('0x2')],'comment':_0x9169('0xe')},'data2':{'type':Sequelize[_0x9169('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0x9169('0x2')],'comment':_0x9169('0xf')},'data4':{'type':Sequelize[_0x9169('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0x9169('0x10')},'role':{'type':Sequelize[_0x9169('0x2')]},'internal':{'type':Sequelize[_0x9169('0x5')]},'uniqueid':{'type':Sequelize[_0x9169('0x2')]}};
\ No newline at end of file
+var _0x7713=['duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','diff','seconds','setDataValue','exitAt'];(function(_0x43b98f,_0x3af694){var _0xcc8bb1=function(_0x4996ba){while(--_0x4996ba){_0x43b98f['push'](_0x43b98f['shift']());}};_0xcc8bb1(++_0x3af694);}(_0x7713,0x1df));var _0x3771=function(_0x14271b,_0x303f86){_0x14271b=_0x14271b-0x0;var _0x2d8f24=_0x7713[_0x14271b];return _0x2d8f24;};'use strict';var Sequelize=require(_0x3771('0x0'));var moment=require(_0x3771('0x1'));module[_0x3771('0x2')]={'channel':{'type':Sequelize[_0x3771('0x3')]},'membername':{'type':Sequelize[_0x3771('0x3')]},'interface':{'type':Sequelize[_0x3771('0x3')]},'type':{'type':Sequelize[_0x3771('0x3')],'defaultValue':_0x3771('0x4'),'comment':_0x3771('0x5')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x3771('0x6')],'set':function(_0xad370e){var _0x3fd1dd=moment(_0xad370e);var _0x250511=moment(this['getDataValue']('enterAt'));var _0x377f2b=_0x3fd1dd[_0x3771('0x7')](_0x250511,_0x3771('0x8'));this[_0x3771('0x9')](_0x3771('0xa'),_0xad370e);this[_0x3771('0x9')](_0x3771('0xb'),_0x377f2b>=0x0?_0x377f2b:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x3771('0xc')},'data2':{'type':Sequelize[_0x3771('0x3')],'comment':_0x3771('0xd')},'data3':{'type':Sequelize[_0x3771('0x3')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x3771('0x3')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x3771('0x3')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x3771('0x3')]}};
\ No newline at end of file
index b5d0a79..20a5a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['catch','params','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x58e441,_0x1fd01a){var _0x57d24c=function(_0x534a1d){while(--_0x534a1d){_0x58e441['push'](_0x58e441['shift']());}};_0x57d24c(++_0x1fd01a);}(_0x9c44,0x178));var _0x49c4=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x9c44[_0x24061a];return _0x82054e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
+var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xedd9,0xfc));var _0x9edd=function(_0x5d2c78,_0x2d5cca){_0x5d2c78=_0x5d2c78-0x0;var _0x58a376=_0xedd9[_0x5d2c78];return _0x58a376;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
index cb076a0..878b4e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3f=['define','report_member','membername_interface','membername','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes'];(function(_0x27c1db,_0x26dbac){var _0x2f902c=function(_0x351bd9){while(--_0x351bd9){_0x27c1db['push'](_0x27c1db['shift']());}};_0x2f902c(++_0x26dbac);}(_0x1a3f,0x100));var _0xf1a3=function(_0x3baaf5,_0x261f2b){_0x3baaf5=_0x3baaf5-0x0;var _0x1931ef=_0x1a3f[_0x3baaf5];return _0x1931ef;};'use strict';var _=require(_0xf1a3('0x0'));var util=require('util');var logger=require(_0xf1a3('0x1'))(_0xf1a3('0x2'));var moment=require(_0xf1a3('0x3'));var BPromise=require(_0xf1a3('0x4'));var rp=require(_0xf1a3('0x5'));var fs=require('fs');var path=require(_0xf1a3('0x6'));var rimraf=require(_0xf1a3('0x7'));var config=require(_0xf1a3('0x8'));var attributes=require(_0xf1a3('0x9'));module['exports']=function(_0x2144f7,_0x2e9b75){return _0x2144f7[_0xf1a3('0xa')]('MemberReport',attributes,{'tableName':_0xf1a3('0xb'),'paranoid':![],'indexes':[{'name':_0xf1a3('0xc'),'fields':[_0xf1a3('0xd'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf3e=['interface','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername'];(function(_0x22d997,_0x285250){var _0x4a9827=function(_0x1bb7bf){while(--_0x1bb7bf){_0x22d997['push'](_0x22d997['shift']());}};_0x4a9827(++_0x285250);}(_0xcf3e,0xc4));var _0xecf3=function(_0x141ea1,_0x285f90){_0x141ea1=_0x141ea1-0x0;var _0x63d53a=_0xcf3e[_0x141ea1];return _0x63d53a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xecf3('0x0'))(_0xecf3('0x1'));var moment=require('moment');var BPromise=require(_0xecf3('0x2'));var rp=require(_0xecf3('0x3'));var fs=require('fs');var path=require(_0xecf3('0x4'));var rimraf=require(_0xecf3('0x5'));var config=require(_0xecf3('0x6'));var attributes=require(_0xecf3('0x7'));module[_0xecf3('0x8')]=function(_0x33e660,_0x479485){return _0x33e660[_0xecf3('0x9')](_0xecf3('0xa'),attributes,{'tableName':_0xecf3('0xb'),'paranoid':![],'indexes':[{'name':_0xecf3('0xc'),'fields':[_0xecf3('0xd'),_0xecf3('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index b8440ec..33439c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d10=['../../config/environment','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetMemberReport','MemberReport','options','where','attributes','limit','include','model','map','CreateMemberReport','create','raw','update','body','UpdateMemberReport','util','moment','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x7d10,0x1ce));var _0x07d1=function(_0x27d481,_0x5683c3){_0x27d481=_0x27d481-0x0;var _0x3399ce=_0x7d10[_0x27d481];return _0x3399ce;};'use strict';var _=require('lodash');var util=require(_0x07d1('0x0'));var moment=require(_0x07d1('0x1'));var BPromise=require('bluebird');var rs=require(_0x07d1('0x2'));var fs=require('fs');var Redis=require(_0x07d1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x07d1('0x4'));var logger=require(_0x07d1('0x5'))('rpc');var config=require(_0x07d1('0x6'));var jayson=require(_0x07d1('0x7'));var client=jayson[_0x07d1('0x8')][_0x07d1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ab5c9,_0x3e5bbe,_0xc20041){return new BPromise(function(_0x65e41c,_0x3fd763){return client[_0x07d1('0xa')](_0x4ab5c9,_0xc20041)[_0x07d1('0xb')](function(_0x21ab00){logger[_0x07d1('0xc')](_0x07d1('0xd'),_0x3e5bbe,_0x07d1('0xe'));logger[_0x07d1('0xf')](_0x07d1('0x10'),_0x3e5bbe,_0x07d1('0xe'),JSON[_0x07d1('0x11')](_0x21ab00));if(_0x21ab00[_0x07d1('0x12')]){if(_0x21ab00['error']['code']===0x1f4){logger[_0x07d1('0x12')](_0x07d1('0xd'),_0x3e5bbe,_0x21ab00[_0x07d1('0x12')][_0x07d1('0x13')]);return _0x3fd763(_0x21ab00[_0x07d1('0x12')][_0x07d1('0x13')]);}logger[_0x07d1('0x12')](_0x07d1('0xd'),_0x3e5bbe,_0x21ab00[_0x07d1('0x12')][_0x07d1('0x13')]);return _0x65e41c(_0x21ab00['error'][_0x07d1('0x13')]);}else{logger[_0x07d1('0xc')](_0x07d1('0xd'),_0x3e5bbe,_0x07d1('0xe'));_0x65e41c(_0x21ab00['result'][_0x07d1('0x13')]);}})[_0x07d1('0x14')](function(_0x32021f){logger['error'](_0x07d1('0xd'),_0x3e5bbe,_0x32021f);_0x3fd763(_0x32021f);});});}exports[_0x07d1('0x15')]=function(_0x1e90dd){var _0x39245a=this;return new Promise(function(_0x2f9a13,_0x40bd3f){return db[_0x07d1('0x16')]['findAll']({'raw':_0x1e90dd['options']?_0x1e90dd[_0x07d1('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x1e90dd[_0x07d1('0x17')]?_0x1e90dd['options'][_0x07d1('0x18')]||null:null,'attributes':_0x1e90dd[_0x07d1('0x17')]?_0x1e90dd[_0x07d1('0x17')][_0x07d1('0x19')]||null:null,'limit':_0x1e90dd[_0x07d1('0x17')]?_0x1e90dd[_0x07d1('0x17')][_0x07d1('0x1a')]||null:null,'include':_0x1e90dd[_0x07d1('0x17')]?_0x1e90dd[_0x07d1('0x17')]['include']?_['map'](_0x1e90dd['options'][_0x07d1('0x1b')],function(_0x4f2e25){return{'model':db[_0x4f2e25[_0x07d1('0x1c')]],'as':_0x4f2e25['as'],'attributes':_0x4f2e25[_0x07d1('0x19')],'include':_0x4f2e25[_0x07d1('0x1b')]?_[_0x07d1('0x1d')](_0x4f2e25[_0x07d1('0x1b')],function(_0x4d8b90){return{'model':db[_0x4d8b90[_0x07d1('0x1c')]],'as':_0x4d8b90['as'],'attributes':_0x4d8b90[_0x07d1('0x19')],'include':_0x4d8b90[_0x07d1('0x1b')]?_[_0x07d1('0x1d')](_0x4d8b90[_0x07d1('0x1b')],function(_0x58e370){return{'model':db[_0x58e370[_0x07d1('0x1c')]],'as':_0x58e370['as'],'attributes':_0x58e370[_0x07d1('0x19')]};}):[]};}):[]};}):[]:[]})[_0x07d1('0xb')](function(_0x2c3302){logger[_0x07d1('0xc')]('GetMemberReport',_0x1e90dd);logger['debug'](_0x07d1('0x15'),_0x1e90dd,JSON[_0x07d1('0x11')](_0x2c3302));_0x2f9a13(_0x2c3302);})['catch'](function(_0x3ba5df){logger[_0x07d1('0x12')]('GetMemberReport',_0x3ba5df['message'],_0x1e90dd);_0x40bd3f(_0x39245a['error'](0x1f4,_0x3ba5df['message']));});});};exports[_0x07d1('0x1e')]=function(_0x5d1d13){var _0x3e8136=this;return new Promise(function(_0x2fbfe6,_0x475036){return db[_0x07d1('0x16')][_0x07d1('0x1f')](_0x5d1d13['body'],{'raw':_0x5d1d13[_0x07d1('0x17')]?_0x5d1d13[_0x07d1('0x17')][_0x07d1('0x20')]===undefined?!![]:![]:!![]})[_0x07d1('0xb')](function(_0x2284e5){logger[_0x07d1('0xc')](_0x07d1('0x1e'),_0x5d1d13);logger[_0x07d1('0xf')](_0x07d1('0x1e'),_0x5d1d13,JSON[_0x07d1('0x11')](_0x2284e5));_0x2fbfe6(_0x2284e5);})['catch'](function(_0x4eed84){logger['error'](_0x07d1('0x1e'),_0x4eed84['message'],_0x5d1d13);_0x475036(_0x3e8136[_0x07d1('0x12')](0x1f4,_0x4eed84['message']));});});};exports['UpdateMemberReport']=function(_0x103ad9){var _0x348074=this;return new Promise(function(_0x422749,_0x33420e){return db[_0x07d1('0x16')][_0x07d1('0x21')](_0x103ad9[_0x07d1('0x22')],{'raw':_0x103ad9['options']?_0x103ad9[_0x07d1('0x17')][_0x07d1('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x103ad9['options']?_0x103ad9[_0x07d1('0x17')][_0x07d1('0x18')]||null:null,'attributes':_0x103ad9[_0x07d1('0x17')]?_0x103ad9[_0x07d1('0x17')][_0x07d1('0x19')]||null:null,'limit':_0x103ad9[_0x07d1('0x17')]?_0x103ad9['options']['limit']||null:null})[_0x07d1('0xb')](function(_0x4bca42){logger['info'](_0x07d1('0x23'),_0x103ad9);logger[_0x07d1('0xf')](_0x07d1('0x23'),_0x103ad9,JSON[_0x07d1('0x11')](_0x4bca42));_0x422749(_0x4bca42);})[_0x07d1('0x14')](function(_0x20b436){logger[_0x07d1('0x12')]('UpdateMemberReport',_0x20b436[_0x07d1('0x13')],_0x103ad9);_0x33420e(_0x348074['error'](0x1f4,_0x20b436['message']));});});};
\ No newline at end of file
+var _0x8ac9=['raw','where','attributes','limit','map','model','include','CreateMemberReport','MemberReport','create','body','UpdateMemberReport','update','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','MemberReport,\x20%s,\x20%s','message','catch','GetMemberReport','findAll','options'];(function(_0x512b8b,_0x330304){var _0x341f63=function(_0xf89707){while(--_0xf89707){_0x512b8b['push'](_0x512b8b['shift']());}};_0x341f63(++_0x330304);}(_0x8ac9,0x199));var _0x98ac=function(_0x439a13,_0x6c4296){_0x439a13=_0x439a13-0x0;var _0x224784=_0x8ac9[_0x439a13];return _0x224784;};'use strict';var _=require(_0x98ac('0x0'));var util=require(_0x98ac('0x1'));var moment=require(_0x98ac('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x98ac('0x3'));var db=require(_0x98ac('0x4'))['db'];var utils=require(_0x98ac('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x98ac('0x6'));var jayson=require(_0x98ac('0x7'));var client=jayson[_0x98ac('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x556d23,_0x3b3780,_0x1702d6){return new BPromise(function(_0x3e025e,_0x146dc1){return client[_0x98ac('0x9')](_0x556d23,_0x1702d6)[_0x98ac('0xa')](function(_0x5bb362){logger[_0x98ac('0xb')]('MemberReport,\x20%s,\x20%s',_0x3b3780,_0x98ac('0xc'));logger[_0x98ac('0xd')](_0x98ac('0xe'),_0x3b3780,_0x98ac('0xc'),JSON[_0x98ac('0xf')](_0x5bb362));if(_0x5bb362[_0x98ac('0x10')]){if(_0x5bb362[_0x98ac('0x10')]['code']===0x1f4){logger['error'](_0x98ac('0x11'),_0x3b3780,_0x5bb362[_0x98ac('0x10')][_0x98ac('0x12')]);return _0x146dc1(_0x5bb362[_0x98ac('0x10')]['message']);}logger[_0x98ac('0x10')](_0x98ac('0x11'),_0x3b3780,_0x5bb362[_0x98ac('0x10')]['message']);return _0x3e025e(_0x5bb362['error'][_0x98ac('0x12')]);}else{logger[_0x98ac('0xb')]('MemberReport,\x20%s,\x20%s',_0x3b3780,'request\x20sent');_0x3e025e(_0x5bb362['result'][_0x98ac('0x12')]);}})[_0x98ac('0x13')](function(_0x5634c4){logger[_0x98ac('0x10')](_0x98ac('0x11'),_0x3b3780,_0x5634c4);_0x146dc1(_0x5634c4);});});}exports[_0x98ac('0x14')]=function(_0x4b907e){var _0x4715c9=this;return new Promise(function(_0x42f64e,_0x225024){return db['MemberReport'][_0x98ac('0x15')]({'raw':_0x4b907e[_0x98ac('0x16')]?_0x4b907e[_0x98ac('0x16')][_0x98ac('0x17')]===undefined?!![]:![]:!![],'where':_0x4b907e['options']?_0x4b907e['options'][_0x98ac('0x18')]||null:null,'attributes':_0x4b907e[_0x98ac('0x16')]?_0x4b907e[_0x98ac('0x16')][_0x98ac('0x19')]||null:null,'limit':_0x4b907e[_0x98ac('0x16')]?_0x4b907e[_0x98ac('0x16')][_0x98ac('0x1a')]||null:null,'include':_0x4b907e[_0x98ac('0x16')]?_0x4b907e[_0x98ac('0x16')]['include']?_[_0x98ac('0x1b')](_0x4b907e[_0x98ac('0x16')]['include'],function(_0x92f4bc){return{'model':db[_0x92f4bc[_0x98ac('0x1c')]],'as':_0x92f4bc['as'],'attributes':_0x92f4bc['attributes'],'include':_0x92f4bc[_0x98ac('0x1d')]?_[_0x98ac('0x1b')](_0x92f4bc[_0x98ac('0x1d')],function(_0x5887ee){return{'model':db[_0x5887ee[_0x98ac('0x1c')]],'as':_0x5887ee['as'],'attributes':_0x5887ee[_0x98ac('0x19')],'include':_0x5887ee[_0x98ac('0x1d')]?_[_0x98ac('0x1b')](_0x5887ee[_0x98ac('0x1d')],function(_0x293c63){return{'model':db[_0x293c63[_0x98ac('0x1c')]],'as':_0x293c63['as'],'attributes':_0x293c63[_0x98ac('0x19')]};}):[]};}):[]};}):[]:[]})[_0x98ac('0xa')](function(_0x1caa3f){logger['info'](_0x98ac('0x14'),_0x4b907e);logger[_0x98ac('0xd')](_0x98ac('0x14'),_0x4b907e,JSON[_0x98ac('0xf')](_0x1caa3f));_0x42f64e(_0x1caa3f);})[_0x98ac('0x13')](function(_0x4305f3){logger[_0x98ac('0x10')]('GetMemberReport',_0x4305f3['message'],_0x4b907e);_0x225024(_0x4715c9[_0x98ac('0x10')](0x1f4,_0x4305f3[_0x98ac('0x12')]));});});};exports[_0x98ac('0x1e')]=function(_0x45c5cb){var _0x2c57b1=this;return new Promise(function(_0x19f4f9,_0x67ca39){return db[_0x98ac('0x1f')][_0x98ac('0x20')](_0x45c5cb[_0x98ac('0x21')],{'raw':_0x45c5cb['options']?_0x45c5cb['options'][_0x98ac('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x42a187){logger['info'](_0x98ac('0x1e'),_0x45c5cb);logger[_0x98ac('0xd')]('CreateMemberReport',_0x45c5cb,JSON[_0x98ac('0xf')](_0x42a187));_0x19f4f9(_0x42a187);})['catch'](function(_0x95cb0b){logger[_0x98ac('0x10')](_0x98ac('0x1e'),_0x95cb0b[_0x98ac('0x12')],_0x45c5cb);_0x67ca39(_0x2c57b1[_0x98ac('0x10')](0x1f4,_0x95cb0b[_0x98ac('0x12')]));});});};exports[_0x98ac('0x22')]=function(_0x550ba6){var _0x4fa284=this;return new Promise(function(_0xe9c537,_0x8dd148){return db[_0x98ac('0x1f')][_0x98ac('0x23')](_0x550ba6[_0x98ac('0x21')],{'raw':_0x550ba6[_0x98ac('0x16')]?_0x550ba6[_0x98ac('0x16')][_0x98ac('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x550ba6[_0x98ac('0x16')]?_0x550ba6[_0x98ac('0x16')][_0x98ac('0x18')]||null:null,'attributes':_0x550ba6[_0x98ac('0x16')]?_0x550ba6[_0x98ac('0x16')][_0x98ac('0x19')]||null:null,'limit':_0x550ba6[_0x98ac('0x16')]?_0x550ba6['options'][_0x98ac('0x1a')]||null:null})[_0x98ac('0xa')](function(_0xb6b6f4){logger[_0x98ac('0xb')](_0x98ac('0x22'),_0x550ba6);logger[_0x98ac('0xd')](_0x98ac('0x22'),_0x550ba6,JSON[_0x98ac('0xf')](_0xb6b6f4));_0xe9c537(_0xb6b6f4);})['catch'](function(_0x30a83d){logger['error'](_0x98ac('0x22'),_0x30a83d['message'],_0x550ba6);_0x8dd148(_0x4fa284[_0x98ac('0x10')](0x1f4,_0x30a83d[_0x98ac('0x12')]));});});};
\ No newline at end of file
index 4a6ecd2..950f4e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5bb=['exports','multer','util','path','express','Router','index'];(function(_0xcec412,_0x233968){var _0x487cc6=function(_0x3dd80f){while(--_0x3dd80f){_0xcec412['push'](_0xcec412['shift']());}};_0x487cc6(++_0x233968);}(_0xb5bb,0x1ba));var _0xbb5b=function(_0x5946bf,_0x2f8cf0){_0x5946bf=_0x5946bf-0x0;var _0x30a911=_0xb5bb[_0x5946bf];return _0x30a911;};'use strict';var multer=require(_0xbb5b('0x0'));var util=require(_0xbb5b('0x1'));var path=require(_0xbb5b('0x2'));var timeout=require('connect-timeout');var express=require(_0xbb5b('0x3'));var router=express[_0xbb5b('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./migration.controller');router['get']('/',controller[_0xbb5b('0x5')]);module[_0xbb5b('0x6')]=router;
\ No newline at end of file
+var _0x0af1=['./migration.controller','get','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0af1,0x135));var _0x10af=function(_0x53c150,_0x49f58d){_0x53c150=_0x53c150-0x0;var _0x97d0a7=_0x0af1[_0x53c150];return _0x97d0a7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x10af('0x0'));var timeout=require(_0x10af('0x1'));var express=require(_0x10af('0x2'));var router=express[_0x10af('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x10af('0x4'));var interaction=require(_0x10af('0x5'));var config=require('../../config/environment');var controller=require(_0x10af('0x6'));router[_0x10af('0x7')]('/',controller['index']);module[_0x10af('0x8')]=router;
\ No newline at end of file
index 3ff996e..216f9e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9062=['STRING','version','sequelize','exports'];(function(_0x1559a5,_0x41924e){var _0x17a783=function(_0x152c63){while(--_0x152c63){_0x1559a5['push'](_0x1559a5['shift']());}};_0x17a783(++_0x41924e);}(_0x9062,0x82));var _0x2906=function(_0x1e05bc,_0x27eae6){_0x1e05bc=_0x1e05bc-0x0;var _0x153f32=_0x9062[_0x1e05bc];return _0x153f32;};'use strict';var Sequelize=require(_0x2906('0x0'));module[_0x2906('0x1')]={'version':{'type':Sequelize[_0x2906('0x2')],'unique':_0x2906('0x3')}};
\ No newline at end of file
+var _0x88db=['version','sequelize','exports'];(function(_0x3aa136,_0xa9ce41){var _0xe4d876=function(_0x1427c3){while(--_0x1427c3){_0x3aa136['push'](_0x3aa136['shift']());}};_0xe4d876(++_0xa9ce41);}(_0x88db,0x139));var _0xb88d=function(_0x371e5c,_0x2c32b5){_0x371e5c=_0x371e5c-0x0;var _0x51f38f=_0x88db[_0x371e5c];return _0x51f38f;};'use strict';var Sequelize=require(_0xb88d('0x0'));module[_0xb88d('0x1')]={'version':{'type':Sequelize['STRING'],'unique':_0xb88d('0x2')}};
\ No newline at end of file
index bc7be2b..63e0e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf084=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','Migration','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x2ee94d,_0x412ba6){var _0x3dd23c=function(_0x4a9d04){while(--_0x4a9d04){_0x2ee94d['push'](_0x2ee94d['shift']());}};_0x3dd23c(++_0x412ba6);}(_0xf084,0x183));var _0x4f08=function(_0x25eacb,_0x1c9667){_0x25eacb=_0x25eacb-0x0;var _0x5811c2=_0xf084[_0x25eacb];return _0x5811c2;};'use strict';var emlformat=require(_0x4f08('0x0'));var rimraf=require(_0x4f08('0x1'));var zipdir=require(_0x4f08('0x2'));var jsonpatch=require(_0x4f08('0x3'));var rp=require('request-promise');var moment=require(_0x4f08('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4f08('0x5'));var util=require(_0x4f08('0x6'));var path=require(_0x4f08('0x7'));var sox=require(_0x4f08('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f08('0x9'));var _=require(_0x4f08('0xa'));var squel=require(_0x4f08('0xb'));var crypto=require('crypto');var jsforce=require(_0x4f08('0xc'));var deskjs=require(_0x4f08('0xd'));var toCsv=require(_0x4f08('0xe'));var querystring=require(_0x4f08('0xf'));var Papa=require(_0x4f08('0x10'));var Redis=require('ioredis');var authService=require(_0x4f08('0x11'));var qs=require(_0x4f08('0x12'));var as=require(_0x4f08('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4f08('0x14'))(_0x4f08('0x15'));var utils=require(_0x4f08('0x16'));var config=require(_0x4f08('0x17'));var licenseUtil=require(_0x4f08('0x18'));var db=require(_0x4f08('0x19'))['db'];function respondWithStatusCode(_0x4f88a1,_0x4b6938){_0x4b6938=_0x4b6938||0xcc;return function(_0x4a0fc7){if(_0x4a0fc7){return _0x4f88a1[_0x4f08('0x1a')](_0x4b6938);}return _0x4f88a1[_0x4f08('0x1b')](_0x4b6938)[_0x4f08('0x1c')]();};}function respondWithResult(_0x54d86a,_0x4a5a7d){_0x4a5a7d=_0x4a5a7d||0xc8;return function(_0x2a7469){if(_0x2a7469){return _0x54d86a[_0x4f08('0x1b')](_0x4a5a7d)['json'](_0x2a7469);}};}function respondWithFilteredResult(_0x43c081,_0x33fc8d){return function(_0x360fba){if(_0x360fba){var _0x1d2446=typeof _0x33fc8d[_0x4f08('0x1d')]===_0x4f08('0x1e')&&typeof _0x33fc8d[_0x4f08('0x1f')]===_0x4f08('0x1e');var _0x15786d=_0x360fba[_0x4f08('0x20')];var _0x1196b1=_0x1d2446?0x0:_0x33fc8d[_0x4f08('0x1d')];var _0x294723=_0x1d2446?_0x360fba[_0x4f08('0x20')]:_0x33fc8d[_0x4f08('0x1d')]+_0x33fc8d[_0x4f08('0x1f')];var _0x29697e;if(_0x294723>=_0x15786d){_0x294723=_0x15786d;_0x29697e=0xc8;}else{_0x29697e=0xce;}_0x43c081[_0x4f08('0x1b')](_0x29697e);return _0x43c081['set'](_0x4f08('0x21'),_0x1196b1+'-'+_0x294723+'/'+_0x15786d)['json'](_0x360fba);}return null;};}function patchUpdates(_0x59f386){return function(_0x286e73){try{jsonpatch[_0x4f08('0x22')](_0x286e73,_0x59f386,!![]);}catch(_0x24f483){return BPromise[_0x4f08('0x23')](_0x24f483);}return _0x286e73['save']();};}function saveUpdates(_0x45446e,_0x288cca){return function(_0x5e5057){if(_0x5e5057){return _0x5e5057[_0x4f08('0x24')](_0x45446e)[_0x4f08('0x25')](function(_0x56a1ae){return _0x56a1ae;});}return null;};}function removeEntity(_0x4efc8d,_0x524073){return function(_0xfe7796){if(_0xfe7796){return _0xfe7796[_0x4f08('0x26')]()['then'](function(){_0x4efc8d[_0x4f08('0x1b')](0xcc)[_0x4f08('0x1c')]();});}};}function handleEntityNotFound(_0x4c92ac,_0x30e5f7){return function(_0x5e8537){if(!_0x5e8537){_0x4c92ac[_0x4f08('0x1a')](0x194);}return _0x5e8537;};}function handleError(_0x24aacd,_0x190b3b){_0x190b3b=_0x190b3b||0x1f4;return function(_0x485ba0){logger[_0x4f08('0x27')](_0x485ba0['stack']);if(_0x485ba0[_0x4f08('0x28')]){delete _0x485ba0['name'];}_0x24aacd[_0x4f08('0x1b')](_0x190b3b)[_0x4f08('0x29')](_0x485ba0);};}exports[_0x4f08('0x2a')]=function(_0x5a5069,_0x202909){var _0x2c39e6={},_0x1ba83e={},_0x3419e6={'count':0x0,'rows':[]};var _0x3038bb=_[_0x4f08('0x2b')](db['Migration'][_0x4f08('0x2c')],function(_0xf7d606){return{'name':_0xf7d606[_0x4f08('0x2d')],'type':_0xf7d606[_0x4f08('0x2e')][_0x4f08('0x2f')]};});_0x1ba83e[_0x4f08('0x30')]=_[_0x4f08('0x2b')](_0x3038bb,_0x4f08('0x28'));_0x1ba83e[_0x4f08('0x31')]=_[_0x4f08('0x32')](_0x5a5069[_0x4f08('0x31')]);_0x1ba83e['filters']=_[_0x4f08('0x33')](_0x1ba83e[_0x4f08('0x30')],_0x1ba83e['query']);_0x2c39e6[_0x4f08('0x34')]=_[_0x4f08('0x33')](_0x1ba83e[_0x4f08('0x30')],qs[_0x4f08('0x35')](_0x5a5069[_0x4f08('0x31')][_0x4f08('0x35')]));_0x2c39e6['attributes']=_0x2c39e6[_0x4f08('0x34')][_0x4f08('0x36')]?_0x2c39e6[_0x4f08('0x34')]:_0x1ba83e['model'];if(!_0x5a5069[_0x4f08('0x31')][_0x4f08('0x37')](_0x4f08('0x38'))){_0x2c39e6[_0x4f08('0x1f')]=qs[_0x4f08('0x1f')](_0x5a5069['query'][_0x4f08('0x1f')]);_0x2c39e6[_0x4f08('0x1d')]=qs[_0x4f08('0x1d')](_0x5a5069['query'][_0x4f08('0x1d')]);}_0x2c39e6[_0x4f08('0x39')]=qs[_0x4f08('0x3a')](_0x5a5069['query'][_0x4f08('0x3a')]);_0x2c39e6[_0x4f08('0x3b')]=qs[_0x4f08('0x3c')](_[_0x4f08('0x3d')](_0x5a5069[_0x4f08('0x31')],_0x1ba83e[_0x4f08('0x3c')]),_0x3038bb);if(_0x5a5069[_0x4f08('0x31')][_0x4f08('0x3e')]){_0x2c39e6[_0x4f08('0x3b')]=_[_0x4f08('0x3f')](_0x2c39e6[_0x4f08('0x3b')],{'$or':_[_0x4f08('0x2b')](_0x3038bb,function(_0x2d2f95){if(_0x2d2f95['type']!=='VIRTUAL'){var _0x4456ba={};_0x4456ba[_0x2d2f95['name']]={'$like':'%'+_0x5a5069[_0x4f08('0x31')][_0x4f08('0x3e')]+'%'};return _0x4456ba;}})});}_0x2c39e6=_[_0x4f08('0x3f')]({},_0x2c39e6,_0x5a5069['options']);var _0x3ed30a={'where':_0x2c39e6[_0x4f08('0x3b')]};return db['Migration'][_0x4f08('0x20')](_0x3ed30a)[_0x4f08('0x25')](function(_0x215f01){_0x3419e6[_0x4f08('0x20')]=_0x215f01;if(_0x5a5069[_0x4f08('0x31')][_0x4f08('0x40')]){_0x2c39e6[_0x4f08('0x41')]=[{'all':!![]}];}return db[_0x4f08('0x42')]['findAll'](_0x2c39e6);})[_0x4f08('0x25')](function(_0x2d4b62){_0x3419e6['rows']=_0x2d4b62;return _0x3419e6;})[_0x4f08('0x25')](respondWithFilteredResult(_0x202909,_0x2c39e6))[_0x4f08('0x43')](handleError(_0x202909,null));};
\ No newline at end of file
+var _0x46f1=['sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','then','end','sendStatus','error','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','rows','catch','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x3be54c,_0x27eb76){var _0x21d6ff=function(_0x4b5e5e){while(--_0x4b5e5e){_0x3be54c['push'](_0x3be54c['shift']());}};_0x21d6ff(++_0x27eb76);}(_0x46f1,0xca));var _0x146f=function(_0x4749a4,_0x4d8a8d){_0x4749a4=_0x4749a4-0x0;var _0x4d1f2c=_0x46f1[_0x4749a4];return _0x4d1f2c;};'use strict';var emlformat=require(_0x146f('0x0'));var rimraf=require(_0x146f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x146f('0x2'));var rp=require(_0x146f('0x3'));var moment=require(_0x146f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x146f('0x5'));var util=require(_0x146f('0x6'));var path=require(_0x146f('0x7'));var sox=require(_0x146f('0x8'));var csv=require(_0x146f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x146f('0xa'));var _=require(_0x146f('0xb'));var squel=require('squel');var crypto=require(_0x146f('0xc'));var jsforce=require(_0x146f('0xd'));var deskjs=require(_0x146f('0xe'));var toCsv=require(_0x146f('0x9'));var querystring=require(_0x146f('0xf'));var Papa=require(_0x146f('0x10'));var Redis=require(_0x146f('0x11'));var authService=require(_0x146f('0x12'));var qs=require(_0x146f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x146f('0x14'));var logger=require(_0x146f('0x15'))(_0x146f('0x16'));var utils=require(_0x146f('0x17'));var config=require(_0x146f('0x18'));var licenseUtil=require(_0x146f('0x19'));var db=require(_0x146f('0x1a'))['db'];function respondWithStatusCode(_0x3f0fdc,_0x37fe07){_0x37fe07=_0x37fe07||0xcc;return function(_0x20143d){if(_0x20143d){return _0x3f0fdc['sendStatus'](_0x37fe07);}return _0x3f0fdc[_0x146f('0x1b')](_0x37fe07)['end']();};}function respondWithResult(_0x227aea,_0x55011f){_0x55011f=_0x55011f||0xc8;return function(_0x5c1820){if(_0x5c1820){return _0x227aea[_0x146f('0x1b')](_0x55011f)[_0x146f('0x1c')](_0x5c1820);}};}function respondWithFilteredResult(_0x5cf7c2,_0x3428f8){return function(_0x19758a){if(_0x19758a){var _0x5e8782=typeof _0x3428f8[_0x146f('0x1d')]===_0x146f('0x1e')&&typeof _0x3428f8[_0x146f('0x1f')]==='undefined';var _0x50095f=_0x19758a[_0x146f('0x20')];var _0x5dda4b=_0x5e8782?0x0:_0x3428f8[_0x146f('0x1d')];var _0x535a88=_0x5e8782?_0x19758a[_0x146f('0x20')]:_0x3428f8[_0x146f('0x1d')]+_0x3428f8['limit'];var _0x435a59;if(_0x535a88>=_0x50095f){_0x535a88=_0x50095f;_0x435a59=0xc8;}else{_0x435a59=0xce;}_0x5cf7c2[_0x146f('0x1b')](_0x435a59);return _0x5cf7c2[_0x146f('0x21')]('Content-Range',_0x5dda4b+'-'+_0x535a88+'/'+_0x50095f)[_0x146f('0x1c')](_0x19758a);}return null;};}function patchUpdates(_0x1783ea){return function(_0x290602){try{jsonpatch[_0x146f('0x22')](_0x290602,_0x1783ea,!![]);}catch(_0x2d8f2c){return BPromise[_0x146f('0x23')](_0x2d8f2c);}return _0x290602['save']();};}function saveUpdates(_0x2c2325,_0x18d7e8){return function(_0x16f776){if(_0x16f776){return _0x16f776['update'](_0x2c2325)[_0x146f('0x24')](function(_0x42f92c){return _0x42f92c;});}return null;};}function removeEntity(_0x5cd262,_0x3811fa){return function(_0x4c0f25){if(_0x4c0f25){return _0x4c0f25['destroy']()['then'](function(){_0x5cd262[_0x146f('0x1b')](0xcc)[_0x146f('0x25')]();});}};}function handleEntityNotFound(_0x228b01,_0x2619fd){return function(_0x260dc2){if(!_0x260dc2){_0x228b01[_0x146f('0x26')](0x194);}return _0x260dc2;};}function handleError(_0xbc3f9,_0x56390b){_0x56390b=_0x56390b||0x1f4;return function(_0x322a55){logger[_0x146f('0x27')](_0x322a55[_0x146f('0x28')]);if(_0x322a55[_0x146f('0x29')]){delete _0x322a55[_0x146f('0x29')];}_0xbc3f9[_0x146f('0x1b')](_0x56390b)[_0x146f('0x2a')](_0x322a55);};}exports[_0x146f('0x2b')]=function(_0x3bc46b,_0x15ec32){var _0x18e22d={},_0xfb3757={},_0x51e5bd={'count':0x0,'rows':[]};var _0x11ad11=_['map'](db[_0x146f('0x2c')][_0x146f('0x2d')],function(_0x55339d){return{'name':_0x55339d[_0x146f('0x2e')],'type':_0x55339d[_0x146f('0x2f')][_0x146f('0x30')]};});_0xfb3757[_0x146f('0x31')]=_[_0x146f('0x32')](_0x11ad11,_0x146f('0x29'));_0xfb3757[_0x146f('0x33')]=_[_0x146f('0x34')](_0x3bc46b[_0x146f('0x33')]);_0xfb3757['filters']=_[_0x146f('0x35')](_0xfb3757[_0x146f('0x31')],_0xfb3757[_0x146f('0x33')]);_0x18e22d[_0x146f('0x36')]=_[_0x146f('0x35')](_0xfb3757[_0x146f('0x31')],qs['fields'](_0x3bc46b[_0x146f('0x33')][_0x146f('0x37')]));_0x18e22d[_0x146f('0x36')]=_0x18e22d['attributes'][_0x146f('0x38')]?_0x18e22d[_0x146f('0x36')]:_0xfb3757[_0x146f('0x31')];if(!_0x3bc46b[_0x146f('0x33')][_0x146f('0x39')](_0x146f('0x3a'))){_0x18e22d[_0x146f('0x1f')]=qs[_0x146f('0x1f')](_0x3bc46b[_0x146f('0x33')]['limit']);_0x18e22d['offset']=qs[_0x146f('0x1d')](_0x3bc46b[_0x146f('0x33')][_0x146f('0x1d')]);}_0x18e22d[_0x146f('0x3b')]=qs[_0x146f('0x3c')](_0x3bc46b[_0x146f('0x33')][_0x146f('0x3c')]);_0x18e22d[_0x146f('0x3d')]=qs[_0x146f('0x3e')](_['pick'](_0x3bc46b[_0x146f('0x33')],_0xfb3757['filters']),_0x11ad11);if(_0x3bc46b[_0x146f('0x33')][_0x146f('0x3f')]){_0x18e22d[_0x146f('0x3d')]=_[_0x146f('0x40')](_0x18e22d[_0x146f('0x3d')],{'$or':_[_0x146f('0x32')](_0x11ad11,function(_0x4fa3e7){if(_0x4fa3e7[_0x146f('0x2f')]!=='VIRTUAL'){var _0x11bec6={};_0x11bec6[_0x4fa3e7[_0x146f('0x29')]]={'$like':'%'+_0x3bc46b[_0x146f('0x33')][_0x146f('0x3f')]+'%'};return _0x11bec6;}})});}_0x18e22d=_[_0x146f('0x40')]({},_0x18e22d,_0x3bc46b[_0x146f('0x41')]);var _0x29a693={'where':_0x18e22d[_0x146f('0x3d')]};return db[_0x146f('0x2c')][_0x146f('0x20')](_0x29a693)[_0x146f('0x24')](function(_0x560989){_0x51e5bd[_0x146f('0x20')]=_0x560989;if(_0x3bc46b['query'][_0x146f('0x42')]){_0x18e22d[_0x146f('0x43')]=[{'all':!![]}];}return db['Migration']['findAll'](_0x18e22d);})[_0x146f('0x24')](function(_0x5a2693){_0x51e5bd[_0x146f('0x44')]=_0x5a2693;return _0x51e5bd;})['then'](respondWithFilteredResult(_0x15ec32,_0x18e22d))[_0x146f('0x45')](handleError(_0x15ec32,null));};
\ No newline at end of file
index c610ff9..cbc0038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cbe=['path','../../config/environment','./migration.attributes','exports','define','migrations','lodash','api','moment'];(function(_0x5976fc,_0x30d5be){var _0x4ed03f=function(_0xe235f9){while(--_0xe235f9){_0x5976fc['push'](_0x5976fc['shift']());}};_0x4ed03f(++_0x30d5be);}(_0x8cbe,0x14a));var _0xe8cb=function(_0x1e8417,_0x5d94a7){_0x1e8417=_0x1e8417-0x0;var _0x408c39=_0x8cbe[_0x1e8417];return _0x408c39;};'use strict';var _=require(_0xe8cb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe8cb('0x1'));var moment=require(_0xe8cb('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe8cb('0x3'));var rimraf=require('rimraf');var config=require(_0xe8cb('0x4'));var attributes=require(_0xe8cb('0x5'));module[_0xe8cb('0x6')]=function(_0x4faded,_0x5602e7){return _0x4faded[_0xe8cb('0x7')]('Migration',attributes,{'tableName':_0xe8cb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8224=['migrations','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes','exports','define'];(function(_0x1bb812,_0x23eacc){var _0x372adb=function(_0x5ad456){while(--_0x5ad456){_0x1bb812['push'](_0x1bb812['shift']());}};_0x372adb(++_0x23eacc);}(_0x8224,0x112));var _0x4822=function(_0x2075ae,_0x19081c){_0x2075ae=_0x2075ae-0x0;var _0x3fa060=_0x8224[_0x2075ae];return _0x3fa060;};'use strict';var _=require(_0x4822('0x0'));var util=require(_0x4822('0x1'));var logger=require('../../config/logger')(_0x4822('0x2'));var moment=require(_0x4822('0x3'));var BPromise=require(_0x4822('0x4'));var rp=require(_0x4822('0x5'));var fs=require('fs');var path=require(_0x4822('0x6'));var rimraf=require(_0x4822('0x7'));var config=require(_0x4822('0x8'));var attributes=require(_0x4822('0x9'));module[_0x4822('0xa')]=function(_0x152ae3,_0x110e25){return _0x152ae3[_0x4822('0xb')]('Migration',attributes,{'tableName':_0x4822('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd606cd..2c4eba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e5e=['Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','http','request','then','info'];(function(_0xc8ad08,_0x22a604){var _0x190c22=function(_0x4dc5f8){while(--_0x4dc5f8){_0xc8ad08['push'](_0xc8ad08['shift']());}};_0x190c22(++_0x22a604);}(_0x9e5e,0x1e2));var _0xe9e5=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0x9e5e[_0x39c734];return _0xb2a2f9;};'use strict';var _=require(_0xe9e5('0x0'));var util=require(_0xe9e5('0x1'));var moment=require('moment');var BPromise=require(_0xe9e5('0x2'));var rs=require(_0xe9e5('0x3'));var fs=require('fs');var Redis=require(_0xe9e5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9e5('0x5'));var logger=require('../../config/logger')(_0xe9e5('0x6'));var config=require(_0xe9e5('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe9e5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2333df,_0x4e0730,_0x3648a5){return new BPromise(function(_0x2533d8,_0x3c5c1b){return client[_0xe9e5('0x9')](_0x2333df,_0x3648a5)[_0xe9e5('0xa')](function(_0x18a551){logger[_0xe9e5('0xb')](_0xe9e5('0xc'),_0x4e0730,_0xe9e5('0xd'));logger['debug'](_0xe9e5('0xe'),_0x4e0730,_0xe9e5('0xd'),JSON['stringify'](_0x18a551));if(_0x18a551['error']){if(_0x18a551['error']['code']===0x1f4){logger[_0xe9e5('0xf')](_0xe9e5('0xc'),_0x4e0730,_0x18a551[_0xe9e5('0xf')][_0xe9e5('0x10')]);return _0x3c5c1b(_0x18a551[_0xe9e5('0xf')][_0xe9e5('0x10')]);}logger[_0xe9e5('0xf')](_0xe9e5('0xc'),_0x4e0730,_0x18a551[_0xe9e5('0xf')][_0xe9e5('0x10')]);return _0x2533d8(_0x18a551['error'][_0xe9e5('0x10')]);}else{logger[_0xe9e5('0xb')](_0xe9e5('0xc'),_0x4e0730,_0xe9e5('0xd'));_0x2533d8(_0x18a551[_0xe9e5('0x11')][_0xe9e5('0x10')]);}})[_0xe9e5('0x12')](function(_0x293c5b){logger[_0xe9e5('0xf')](_0xe9e5('0xc'),_0x4e0730,_0x293c5b);_0x3c5c1b(_0x293c5b);});});}
\ No newline at end of file
+var _0x2c54=['message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2ed436,_0x2dbd04){var _0x8b82dd=function(_0x1ce7e2){while(--_0x1ce7e2){_0x2ed436['push'](_0x2ed436['shift']());}};_0x8b82dd(++_0x2dbd04);}(_0x2c54,0x136));var _0x42c5=function(_0x500bda,_0xc88959){_0x500bda=_0x500bda-0x0;var _0x57d762=_0x2c54[_0x500bda];return _0x57d762;};'use strict';var _=require(_0x42c5('0x0'));var util=require(_0x42c5('0x1'));var moment=require(_0x42c5('0x2'));var BPromise=require('bluebird');var rs=require(_0x42c5('0x3'));var fs=require('fs');var Redis=require(_0x42c5('0x4'));var db=require(_0x42c5('0x5'))['db'];var utils=require(_0x42c5('0x6'));var logger=require(_0x42c5('0x7'))(_0x42c5('0x8'));var config=require('../../config/environment');var jayson=require(_0x42c5('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1959c1,_0x44516e,_0x38d528){return new BPromise(function(_0x134cb6,_0x14538f){return client[_0x42c5('0xa')](_0x1959c1,_0x38d528)[_0x42c5('0xb')](function(_0x3ca4de){logger[_0x42c5('0xc')](_0x42c5('0xd'),_0x44516e,_0x42c5('0xe'));logger[_0x42c5('0xf')](_0x42c5('0x10'),_0x44516e,_0x42c5('0xe'),JSON[_0x42c5('0x11')](_0x3ca4de));if(_0x3ca4de[_0x42c5('0x12')]){if(_0x3ca4de[_0x42c5('0x12')][_0x42c5('0x13')]===0x1f4){logger[_0x42c5('0x12')](_0x42c5('0xd'),_0x44516e,_0x3ca4de[_0x42c5('0x12')][_0x42c5('0x14')]);return _0x14538f(_0x3ca4de['error']['message']);}logger[_0x42c5('0x12')](_0x42c5('0xd'),_0x44516e,_0x3ca4de[_0x42c5('0x12')][_0x42c5('0x14')]);return _0x134cb6(_0x3ca4de['error'][_0x42c5('0x14')]);}else{logger[_0x42c5('0xc')](_0x42c5('0xd'),_0x44516e,'request\x20sent');_0x134cb6(_0x3ca4de[_0x42c5('0x15')]['message']);}})['catch'](function(_0x466b47){logger['error']('Migration,\x20%s,\x20%s',_0x44516e,_0x466b47);_0x14538f(_0x466b47);});});}
\ No newline at end of file
index d408ec3..7bf7cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e44=['index','/:id','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./network.controller','get','isAuthenticated'];(function(_0x29431d,_0x25380c){var _0x1c4aac=function(_0x3a35ab){while(--_0x3a35ab){_0x29431d['push'](_0x29431d['shift']());}};_0x1c4aac(++_0x25380c);}(_0x1e44,0xb3));var _0x41e4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e44[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x41e4('0x0'));var util=require(_0x41e4('0x1'));var path=require(_0x41e4('0x2'));var timeout=require('connect-timeout');var express=require(_0x41e4('0x3'));var router=express[_0x41e4('0x4')]();var fs_extra=require(_0x41e4('0x5'));var auth=require(_0x41e4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x41e4('0x7'));var controller=require(_0x41e4('0x8'));router[_0x41e4('0x9')]('/',auth[_0x41e4('0xa')](),controller[_0x41e4('0xb')]);router[_0x41e4('0x9')](_0x41e4('0xc'),auth[_0x41e4('0xa')](),controller['show']);router[_0x41e4('0xd')]('/',auth[_0x41e4('0xa')](),controller[_0x41e4('0xe')]);router[_0x41e4('0xf')](_0x41e4('0xc'),auth[_0x41e4('0xa')](),controller[_0x41e4('0x10')]);router[_0x41e4('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x41e4('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x7e27=['post','create','put','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./network.controller','isAuthenticated','get','/:id','show'];(function(_0x3d70cc,_0x5579aa){var _0x227f1f=function(_0x1b6178){while(--_0x1b6178){_0x3d70cc['push'](_0x3d70cc['shift']());}};_0x227f1f(++_0x5579aa);}(_0x7e27,0xdd));var _0x77e2=function(_0x25816c,_0x5bf77f){_0x25816c=_0x25816c-0x0;var _0xcac520=_0x7e27[_0x25816c];return _0xcac520;};'use strict';var multer=require(_0x77e2('0x0'));var util=require(_0x77e2('0x1'));var path=require('path');var timeout=require(_0x77e2('0x2'));var express=require(_0x77e2('0x3'));var router=express[_0x77e2('0x4')]();var fs_extra=require(_0x77e2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x77e2('0x6'));var config=require(_0x77e2('0x7'));var controller=require(_0x77e2('0x8'));router['get']('/',auth[_0x77e2('0x9')](),controller['index']);router[_0x77e2('0xa')](_0x77e2('0xb'),auth['isAuthenticated'](),controller[_0x77e2('0xc')]);router[_0x77e2('0xd')]('/',auth[_0x77e2('0x9')](),controller[_0x77e2('0xe')]);router[_0x77e2('0xf')](_0x77e2('0xb'),auth[_0x77e2('0x9')](),controller['update']);router['delete'](_0x77e2('0xb'),auth['isAuthenticated'](),controller[_0x77e2('0x10')]);module[_0x77e2('0x11')]=router;
\ No newline at end of file
index ab97b07..b8ece15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d1=['ENUM','localnet','turn','STRING','sequelize','exports'];(function(_0x2cee5e,_0x62bcf5){var _0x394970=function(_0x16852e){while(--_0x16852e){_0x2cee5e['push'](_0x2cee5e['shift']());}};_0x394970(++_0x62bcf5);}(_0x21d1,0x6a));var _0x121d=function(_0x147e39,_0x1011bb){_0x147e39=_0x147e39-0x0;var _0x470de1=_0x21d1[_0x147e39];return _0x470de1;};'use strict';var Sequelize=require(_0x121d('0x0'));module[_0x121d('0x1')]={'type':{'type':Sequelize[_0x121d('0x2')](_0x121d('0x3'),'externip','stun',_0x121d('0x4'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x121d('0x5')]}};
\ No newline at end of file
+var _0xc602=['externip','stun','turn','STRING','sequelize','exports','ENUM','localnet'];(function(_0x3372c4,_0x4257ea){var _0x233575=function(_0x4671c9){while(--_0x4671c9){_0x3372c4['push'](_0x3372c4['shift']());}};_0x233575(++_0x4257ea);}(_0xc602,0x1f4));var _0x2c60=function(_0x5a7f2c,_0x1d953c){_0x5a7f2c=_0x5a7f2c-0x0;var _0x5cf67d=_0xc602[_0x5a7f2c];return _0x5cf67d;};'use strict';var Sequelize=require(_0x2c60('0x0'));module[_0x2c60('0x1')]={'type':{'type':Sequelize[_0x2c60('0x2')](_0x2c60('0x3'),_0x2c60('0x4'),_0x2c60('0x5'),_0x2c60('0x6'))},'value':{'type':Sequelize[_0x2c60('0x7')]},'username':{'type':Sequelize[_0x2c60('0x7')]},'password':{'type':Sequelize[_0x2c60('0x7')]}};
\ No newline at end of file
index d9cc4da..1a46794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09f4=['moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','status','end','offset','limit','count','Content-Range','json','apply','reject','save','update','destroy','stack','name','index','map','Network','rawAttributes','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','findAll','rows','show','length','includeAll','create','sequelize','transaction','body','STUN','join','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','toUpperCase','readFileSync','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','Reload','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','find','params','chan_sip.so','TURN','rimraf','zip-dir','request-promise'];(function(_0x5be4e3,_0x28e959){var _0x352a18=function(_0x4a87bb){while(--_0x4a87bb){_0x5be4e3['push'](_0x5be4e3['shift']());}};_0x352a18(++_0x28e959);}(_0x09f4,0x1a5));var _0x409f=function(_0x24daa0,_0x55e507){_0x24daa0=_0x24daa0-0x0;var _0x557a6f=_0x09f4[_0x24daa0];return _0x557a6f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x409f('0x0'));var zipdir=require(_0x409f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x409f('0x2'));var moment=require(_0x409f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x409f('0x4'));var util=require(_0x409f('0x5'));var path=require('path');var sox=require(_0x409f('0x6'));var csv=require(_0x409f('0x7'));var ejs=require(_0x409f('0x8'));var fs=require('fs');var fs_extra=require(_0x409f('0x9'));var _=require(_0x409f('0xa'));var squel=require(_0x409f('0xb'));var crypto=require(_0x409f('0xc'));var jsforce=require(_0x409f('0xd'));var deskjs=require(_0x409f('0xe'));var toCsv=require(_0x409f('0x7'));var querystring=require(_0x409f('0xf'));var Papa=require(_0x409f('0x10'));var Redis=require(_0x409f('0x11'));var authService=require(_0x409f('0x12'));var qs=require(_0x409f('0x13'));var as=require(_0x409f('0x14'));var hardwareService=require(_0x409f('0x15'));var logger=require(_0x409f('0x16'))(_0x409f('0x17'));var utils=require(_0x409f('0x18'));var config=require(_0x409f('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0x409f('0x1a'));var client=jayson[_0x409f('0x1b')][_0x409f('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x320a2d,_0x10ac71,_0x4bf55a,_0x521b90){return new BPromise(function(_0x36c95b,_0x1596c1){var _0x565678=_0x521b90||client;return _0x565678[_0x409f('0x1d')](_0x320a2d,_0x4bf55a)[_0x409f('0x1e')](function(_0x1cf64b){logger[_0x409f('0x1f')](_0x409f('0x20'),_0x10ac71,'request\x20sent');logger[_0x409f('0x21')](_0x409f('0x22'),_0x10ac71,_0x409f('0x23'),JSON['stringify'](_0x1cf64b));if(_0x1cf64b[_0x409f('0x24')]){if(_0x1cf64b[_0x409f('0x24')]['code']===0x1f4){logger[_0x409f('0x24')](_0x409f('0x20'),_0x10ac71,_0x1cf64b[_0x409f('0x24')]['message']);return _0x1596c1(_0x1cf64b['error'][_0x409f('0x25')]);}logger[_0x409f('0x24')](_0x409f('0x20'),_0x10ac71,_0x1cf64b[_0x409f('0x24')][_0x409f('0x25')]);return _0x36c95b(_0x1cf64b[_0x409f('0x24')]['message']);}else{logger[_0x409f('0x1f')](_0x409f('0x20'),_0x10ac71,_0x409f('0x23'));_0x36c95b(_0x1cf64b[_0x409f('0x26')]['message']);}})[_0x409f('0x27')](function(_0x403d7e){logger['error'](_0x409f('0x20'),_0x10ac71,_0x403d7e);_0x1596c1(_0x403d7e);});});}function respondWithStatusCode(_0x2cecbe,_0x3849b6){_0x3849b6=_0x3849b6||0xcc;return function(_0x3745c6){if(_0x3745c6){return _0x2cecbe[_0x409f('0x28')](_0x3849b6);}return _0x2cecbe[_0x409f('0x29')](_0x3849b6)[_0x409f('0x2a')]();};}function respondWithResult(_0x24f51d,_0x73c5b7){_0x73c5b7=_0x73c5b7||0xc8;return function(_0x254ad2){if(_0x254ad2){return _0x24f51d['status'](_0x73c5b7)['json'](_0x254ad2);}};}function respondWithFilteredResult(_0x2a5af3,_0x395907){return function(_0x7c033){if(_0x7c033){var _0xf8040b=typeof _0x395907[_0x409f('0x2b')]==='undefined'&&typeof _0x395907[_0x409f('0x2c')]==='undefined';var _0x4b83e2=_0x7c033[_0x409f('0x2d')];var _0x3389fa=_0xf8040b?0x0:_0x395907[_0x409f('0x2b')];var _0x28af20=_0xf8040b?_0x7c033['count']:_0x395907['offset']+_0x395907['limit'];var _0x1cb172;if(_0x28af20>=_0x4b83e2){_0x28af20=_0x4b83e2;_0x1cb172=0xc8;}else{_0x1cb172=0xce;}_0x2a5af3[_0x409f('0x29')](_0x1cb172);return _0x2a5af3['set'](_0x409f('0x2e'),_0x3389fa+'-'+_0x28af20+'/'+_0x4b83e2)[_0x409f('0x2f')](_0x7c033);}return null;};}function patchUpdates(_0x51a40a){return function(_0x37972f){try{jsonpatch[_0x409f('0x30')](_0x37972f,_0x51a40a,!![]);}catch(_0x5d4109){return BPromise[_0x409f('0x31')](_0x5d4109);}return _0x37972f[_0x409f('0x32')]();};}function saveUpdates(_0x50a99d,_0x4031f5){return function(_0x5dcc21){if(_0x5dcc21){return _0x5dcc21[_0x409f('0x33')](_0x50a99d)[_0x409f('0x1e')](function(_0x2ecc26){return _0x2ecc26;});}return null;};}function removeEntity(_0xaeac,_0x44e3f2){return function(_0x10a901){if(_0x10a901){return _0x10a901[_0x409f('0x34')]()['then'](function(){_0xaeac['status'](0xcc)[_0x409f('0x2a')]();});}};}function handleEntityNotFound(_0x211081,_0x2a27c7){return function(_0x94efcb){if(!_0x94efcb){_0x211081[_0x409f('0x28')](0x194);}return _0x94efcb;};}function handleError(_0x22fa88,_0x614db0){_0x614db0=_0x614db0||0x1f4;return function(_0x31800b){logger['error'](_0x31800b[_0x409f('0x35')]);if(_0x31800b['name']){delete _0x31800b[_0x409f('0x36')];}_0x22fa88[_0x409f('0x29')](_0x614db0)['send'](_0x31800b);};}exports[_0x409f('0x37')]=function(_0x2a5e9f,_0x5c0a73){var _0x40c8d3={},_0x2a1f93={},_0x300343={'count':0x0,'rows':[]};var _0x3fcdda=_[_0x409f('0x38')](db[_0x409f('0x39')][_0x409f('0x3a')],function(_0x18c138){return{'name':_0x18c138['fieldName'],'type':_0x18c138['type'][_0x409f('0x3b')]};});_0x2a1f93[_0x409f('0x3c')]=_[_0x409f('0x38')](_0x3fcdda,'name');_0x2a1f93['query']=_[_0x409f('0x3d')](_0x2a5e9f[_0x409f('0x3e')]);_0x2a1f93['filters']=_[_0x409f('0x3f')](_0x2a1f93[_0x409f('0x3c')],_0x2a1f93[_0x409f('0x3e')]);_0x40c8d3['attributes']=_[_0x409f('0x3f')](_0x2a1f93[_0x409f('0x3c')],qs[_0x409f('0x40')](_0x2a5e9f['query'][_0x409f('0x40')]));_0x40c8d3[_0x409f('0x41')]=_0x40c8d3[_0x409f('0x41')]['length']?_0x40c8d3['attributes']:_0x2a1f93[_0x409f('0x3c')];if(!_0x2a5e9f[_0x409f('0x3e')][_0x409f('0x42')](_0x409f('0x43'))){_0x40c8d3[_0x409f('0x2c')]=qs[_0x409f('0x2c')](_0x2a5e9f[_0x409f('0x3e')]['limit']);_0x40c8d3[_0x409f('0x2b')]=qs[_0x409f('0x2b')](_0x2a5e9f[_0x409f('0x3e')][_0x409f('0x2b')]);}_0x40c8d3[_0x409f('0x44')]=qs[_0x409f('0x45')](_0x2a5e9f['query'][_0x409f('0x45')]);_0x40c8d3['where']=qs['filters'](_['pick'](_0x2a5e9f[_0x409f('0x3e')],_0x2a1f93['filters']),_0x3fcdda);if(_0x2a5e9f[_0x409f('0x3e')][_0x409f('0x46')]){_0x40c8d3[_0x409f('0x47')]=_[_0x409f('0x48')](_0x40c8d3['where'],{'$or':_['map'](_0x3fcdda,function(_0x1c3972){if(_0x1c3972[_0x409f('0x49')]!==_0x409f('0x4a')){var _0x24ce23={};_0x24ce23[_0x1c3972['name']]={'$like':'%'+_0x2a5e9f['query'][_0x409f('0x46')]+'%'};return _0x24ce23;}})});}_0x40c8d3=_[_0x409f('0x48')]({},_0x40c8d3,_0x2a5e9f[_0x409f('0x4b')]);var _0x1c0cb9={'where':_0x40c8d3[_0x409f('0x47')]};return db['Network']['count'](_0x1c0cb9)['then'](function(_0x23eb8e){_0x300343[_0x409f('0x2d')]=_0x23eb8e;if(_0x2a5e9f[_0x409f('0x3e')]['includeAll']){_0x40c8d3['include']=[{'all':!![]}];}return db[_0x409f('0x39')][_0x409f('0x4c')](_0x40c8d3);})[_0x409f('0x1e')](function(_0x573eeb){_0x300343[_0x409f('0x4d')]=_0x573eeb;return _0x300343;})[_0x409f('0x1e')](respondWithFilteredResult(_0x5c0a73,_0x40c8d3))[_0x409f('0x27')](handleError(_0x5c0a73,null));};exports[_0x409f('0x4e')]=function(_0x12b598,_0x4d7fea){var _0x563218={'raw':!![],'where':{'id':_0x12b598['params']['id']}},_0x5b7628={};_0x5b7628[_0x409f('0x3c')]=_['keys'](db[_0x409f('0x39')]['rawAttributes']);_0x5b7628[_0x409f('0x3e')]=_[_0x409f('0x3d')](_0x12b598[_0x409f('0x3e')]);_0x5b7628['filters']=_[_0x409f('0x3f')](_0x5b7628[_0x409f('0x3c')],_0x5b7628[_0x409f('0x3e')]);_0x563218[_0x409f('0x41')]=_['intersection'](_0x5b7628[_0x409f('0x3c')],qs[_0x409f('0x40')](_0x12b598[_0x409f('0x3e')]['fields']));_0x563218[_0x409f('0x41')]=_0x563218[_0x409f('0x41')][_0x409f('0x4f')]?_0x563218['attributes']:_0x5b7628[_0x409f('0x3c')];if(_0x12b598[_0x409f('0x3e')][_0x409f('0x50')]){_0x563218['include']=[{'all':!![]}];}_0x563218=_[_0x409f('0x48')]({},_0x563218,_0x12b598['options']);return db[_0x409f('0x39')]['find'](_0x563218)[_0x409f('0x1e')](handleEntityNotFound(_0x4d7fea,null))[_0x409f('0x1e')](respondWithResult(_0x4d7fea,null))[_0x409f('0x27')](handleError(_0x4d7fea,null));};exports[_0x409f('0x51')]=function(_0x69604c,_0x149d69,_0x3c3ebc){var _0x47998a;return db[_0x409f('0x52')][_0x409f('0x53')](function(_0x104a31){return db[_0x409f('0x39')][_0x409f('0x51')](_0x69604c['body'],{'raw':!![]})[_0x409f('0x1e')](function(_0x3db713){_0x47998a=_0x3db713;return db['Network']['findAll']({'where':{'type':_0x69604c[_0x409f('0x54')]['type']},'raw':!![]});})[_0x409f('0x1e')](function(_0x11c632){if(_0x47998a[_0x409f('0x49')]['toUpperCase']()==_0x409f('0x55')){var _0x4a0ddb=fs['readFileSync'](path[_0x409f('0x56')](config['root'],_0x409f('0x57')),_0x409f('0x58'));var _0x21594c=ejs[_0x409f('0x59')](_0x4a0ddb,{'networks':_0x11c632||[]});fs[_0x409f('0x5a')](_0x409f('0x5b'),_0x21594c);return respondWithRpcPromise('Reload',_0x409f('0x51'),{'module':_0x409f('0x5c')});}else if(_0x47998a['type'][_0x409f('0x5d')]()=='TURN'){var _0x4bc2f5=fs[_0x409f('0x5e')](path[_0x409f('0x56')](config[_0x409f('0x5f')],_0x409f('0x60')),_0x409f('0x58'));var _0xf85613=ejs[_0x409f('0x59')](_0x4bc2f5,{'networks':_0x11c632||[]});fs[_0x409f('0x5a')](_0x409f('0x61'),_0xf85613);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x51'),{'module':'res_stun_monitor.so'});}else{var _0x1340f0=fs[_0x409f('0x5e')](path['join'](config['root'],_0x409f('0x63')),_0x409f('0x58'));var _0x28eb12=ejs[_0x409f('0x59')](_0x1340f0,{'networks':_0x11c632||[]});fs[_0x409f('0x5a')](util[_0x409f('0x64')](_0x409f('0x65'),_0x69604c['body'][_0x409f('0x49')]['toLowerCase']()),_0x28eb12);return respondWithRpcPromise(_0x409f('0x62'),'create',{'module':'chan_sip.so'});}return null;})[_0x409f('0x1e')](function(){return _0x47998a;});})['then'](respondWithResult(_0x149d69,0xc9))[_0x409f('0x27')](handleError(_0x149d69,null));};exports['update']=function(_0x1d73a2,_0x364df9,_0x4b326a){var _0x32cc50;return db[_0x409f('0x52')][_0x409f('0x53')](function(_0x245be1){return db[_0x409f('0x39')][_0x409f('0x66')]({'where':{'id':_0x1d73a2[_0x409f('0x67')]['id']}})['then'](handleEntityNotFound(_0x364df9,null))[_0x409f('0x1e')](saveUpdates(_0x1d73a2['body'],null))[_0x409f('0x1e')](function(_0x5b3706){if(_0x5b3706){_0x32cc50=_0x5b3706;return db[_0x409f('0x39')][_0x409f('0x4c')]({'where':{'type':_0x32cc50[_0x409f('0x49')]},'raw':!![]});}return null;})[_0x409f('0x1e')](function(_0x1ede34){if(_0x32cc50[_0x409f('0x49')][_0x409f('0x5d')]()==_0x409f('0x55')){var _0x4eeac6=fs['readFileSync'](path[_0x409f('0x56')](config[_0x409f('0x5f')],_0x409f('0x57')),'utf8');var _0x2bf83c=ejs['render'](_0x4eeac6,{'networks':_0x1ede34||[]});fs[_0x409f('0x5a')](_0x409f('0x5b'),_0x2bf83c);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x33'),{'module':'res_stun_monitor.so'});}else if(_0x32cc50[_0x409f('0x49')][_0x409f('0x5d')]()=='TURN'){var _0xa8a6b3=fs['readFileSync'](path[_0x409f('0x56')](config[_0x409f('0x5f')],_0x409f('0x60')),'utf8');var _0x5ae553=ejs[_0x409f('0x59')](_0xa8a6b3,{'networks':_0x1ede34||[]});fs[_0x409f('0x5a')]('/etc/asterisk/turn_xcally.conf',_0x5ae553);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x33'),{'module':_0x409f('0x5c')});}else{var _0x157fd7=fs['readFileSync'](path[_0x409f('0x56')](config['root'],_0x409f('0x63')),'utf8');var _0x4d4c86=ejs[_0x409f('0x59')](_0x157fd7,{'networks':_0x1ede34||[]});fs['writeFileSync'](util[_0x409f('0x64')]('/etc/asterisk/sip_xcally_%s.conf',_0x1d73a2[_0x409f('0x54')][_0x409f('0x49')]['toLowerCase']()),_0x4d4c86);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x33'),{'module':_0x409f('0x68')});}return null;})['then'](function(_0x20b610){if(_0x20b610){return _0x32cc50;}return null;});})[_0x409f('0x1e')](respondWithResult(_0x364df9,null))[_0x409f('0x27')](handleError(_0x364df9,null));};exports['destroy']=function(_0xbf7317,_0x935641,_0x319219){var _0x184bd7;return db['Network'][_0x409f('0x66')]({'where':{'id':_0xbf7317['params']['id']}})[_0x409f('0x1e')](function(_0x28847a){_0x184bd7=_0x28847a;return _0x28847a;})[_0x409f('0x1e')](handleEntityNotFound(_0x935641,null))[_0x409f('0x1e')](removeEntity(_0x935641,null))[_0x409f('0x1e')](function(){if(_0x184bd7){return db[_0x409f('0x39')][_0x409f('0x4c')]({'where':{'type':_0x184bd7[_0x409f('0x49')]},'raw':!![]});}})[_0x409f('0x1e')](function(_0x497095){if(_0x184bd7[_0x409f('0x49')]['toUpperCase']()==_0x409f('0x55')){var _0x48c8e2=fs[_0x409f('0x5e')](path[_0x409f('0x56')](config[_0x409f('0x5f')],_0x409f('0x57')),_0x409f('0x58'));var _0x2f5416=ejs[_0x409f('0x59')](_0x48c8e2,{'networks':_0x497095||[]});fs[_0x409f('0x5a')](_0x409f('0x5b'),_0x2f5416);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x34'),{'module':_0x409f('0x5c')});}else if(_0x184bd7[_0x409f('0x49')][_0x409f('0x5d')]()==_0x409f('0x69')){var _0x4d58cd=fs[_0x409f('0x5e')](path[_0x409f('0x56')](config[_0x409f('0x5f')],_0x409f('0x60')),_0x409f('0x58'));var _0x160df5=ejs[_0x409f('0x59')](_0x4d58cd,{'networks':_0x497095||[]});fs[_0x409f('0x5a')](_0x409f('0x61'),_0x160df5);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x34'),{'module':'res_stun_monitor.so'});}else{var _0x4e7b7a=fs['readFileSync'](path[_0x409f('0x56')](config[_0x409f('0x5f')],'server/files/templates/network.ejs'),_0x409f('0x58'));var _0x22c208=ejs[_0x409f('0x59')](_0x4e7b7a,{'networks':_0x497095||[]});fs[_0x409f('0x5a')](util[_0x409f('0x64')](_0x409f('0x65'),_0xbf7317['body'][_0x409f('0x49')]['toLowerCase']()),_0x22c208);return respondWithRpcPromise(_0x409f('0x62'),_0x409f('0x34'),{'module':_0x409f('0x68')});}return null;})[_0x409f('0x27')](handleError(_0x935641,null));};
\ No newline at end of file
+var _0x3756=['stack','name','send','index','map','Network','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','find','sequelize','transaction','body','toUpperCase','join','root','server/files/templates/stun_multiple.ejs','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','create','res_stun_monitor.so','TURN','readFileSync','server/files/templates/turn_multiple.ejs','utf8','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','STUN','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','catch','end','json','offset','undefined','count','limit','status','reject','save','update','destroy','sendStatus'];(function(_0x25f931,_0x4c4e1c){var _0x32595e=function(_0xa4b978){while(--_0xa4b978){_0x25f931['push'](_0x25f931['shift']());}};_0x32595e(++_0x4c4e1c);}(_0x3756,0x116));var _0x6375=function(_0x168dbd,_0x458c38){_0x168dbd=_0x168dbd-0x0;var _0x250a16=_0x3756[_0x168dbd];return _0x250a16;};'use strict';var emlformat=require(_0x6375('0x0'));var rimraf=require(_0x6375('0x1'));var zipdir=require(_0x6375('0x2'));var jsonpatch=require(_0x6375('0x3'));var rp=require(_0x6375('0x4'));var moment=require(_0x6375('0x5'));var BPromise=require(_0x6375('0x6'));var Mustache=require(_0x6375('0x7'));var util=require(_0x6375('0x8'));var path=require(_0x6375('0x9'));var sox=require(_0x6375('0xa'));var csv=require(_0x6375('0xb'));var ejs=require(_0x6375('0xc'));var fs=require('fs');var fs_extra=require(_0x6375('0xd'));var _=require(_0x6375('0xe'));var squel=require(_0x6375('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6375('0x10'));var toCsv=require(_0x6375('0xb'));var querystring=require(_0x6375('0x11'));var Papa=require(_0x6375('0x12'));var Redis=require(_0x6375('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6375('0x14'));var hardwareService=require(_0x6375('0x15'));var logger=require(_0x6375('0x16'))(_0x6375('0x17'));var utils=require('../../config/utils');var config=require(_0x6375('0x18'));var licenseUtil=require(_0x6375('0x19'));var db=require(_0x6375('0x1a'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x6375('0x1b')][_0x6375('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x224804,_0xb92285,_0x298407,_0x4d26d7){return new BPromise(function(_0x1eb899,_0x5f2e0f){var _0x462781=_0x4d26d7||client;return _0x462781[_0x6375('0x1d')](_0x224804,_0x298407)[_0x6375('0x1e')](function(_0x185d61){logger[_0x6375('0x1f')](_0x6375('0x20'),_0xb92285,_0x6375('0x21'));logger[_0x6375('0x22')](_0x6375('0x23'),_0xb92285,'request\x20sent',JSON['stringify'](_0x185d61));if(_0x185d61[_0x6375('0x24')]){if(_0x185d61[_0x6375('0x24')][_0x6375('0x25')]===0x1f4){logger['error']('Network,\x20%s,\x20%s',_0xb92285,_0x185d61[_0x6375('0x24')][_0x6375('0x26')]);return _0x5f2e0f(_0x185d61[_0x6375('0x24')][_0x6375('0x26')]);}logger[_0x6375('0x24')](_0x6375('0x20'),_0xb92285,_0x185d61[_0x6375('0x24')][_0x6375('0x26')]);return _0x1eb899(_0x185d61[_0x6375('0x24')][_0x6375('0x26')]);}else{logger['info'](_0x6375('0x20'),_0xb92285,_0x6375('0x21'));_0x1eb899(_0x185d61['result'][_0x6375('0x26')]);}})[_0x6375('0x27')](function(_0x14b0f4){logger[_0x6375('0x24')](_0x6375('0x20'),_0xb92285,_0x14b0f4);_0x5f2e0f(_0x14b0f4);});});}function respondWithStatusCode(_0x35ac80,_0x302bf8){_0x302bf8=_0x302bf8||0xcc;return function(_0x3cbd41){if(_0x3cbd41){return _0x35ac80['sendStatus'](_0x302bf8);}return _0x35ac80['status'](_0x302bf8)[_0x6375('0x28')]();};}function respondWithResult(_0x1354b4,_0x3eb5ab){_0x3eb5ab=_0x3eb5ab||0xc8;return function(_0x246b50){if(_0x246b50){return _0x1354b4['status'](_0x3eb5ab)[_0x6375('0x29')](_0x246b50);}};}function respondWithFilteredResult(_0x16651b,_0xefe789){return function(_0x5247b5){if(_0x5247b5){var _0x37e65e=typeof _0xefe789[_0x6375('0x2a')]===_0x6375('0x2b')&&typeof _0xefe789['limit']===_0x6375('0x2b');var _0x48bdea=_0x5247b5[_0x6375('0x2c')];var _0x207d3e=_0x37e65e?0x0:_0xefe789[_0x6375('0x2a')];var _0x5dcf74=_0x37e65e?_0x5247b5['count']:_0xefe789[_0x6375('0x2a')]+_0xefe789[_0x6375('0x2d')];var _0x3f0038;if(_0x5dcf74>=_0x48bdea){_0x5dcf74=_0x48bdea;_0x3f0038=0xc8;}else{_0x3f0038=0xce;}_0x16651b[_0x6375('0x2e')](_0x3f0038);return _0x16651b['set']('Content-Range',_0x207d3e+'-'+_0x5dcf74+'/'+_0x48bdea)[_0x6375('0x29')](_0x5247b5);}return null;};}function patchUpdates(_0x5bee6b){return function(_0x208966){try{jsonpatch['apply'](_0x208966,_0x5bee6b,!![]);}catch(_0x4f6b5e){return BPromise[_0x6375('0x2f')](_0x4f6b5e);}return _0x208966[_0x6375('0x30')]();};}function saveUpdates(_0x3382b1,_0x4b0fbf){return function(_0x62252c){if(_0x62252c){return _0x62252c[_0x6375('0x31')](_0x3382b1)[_0x6375('0x1e')](function(_0x5d72b8){return _0x5d72b8;});}return null;};}function removeEntity(_0x4a45d7,_0x27ce1b){return function(_0x33ce19){if(_0x33ce19){return _0x33ce19[_0x6375('0x32')]()['then'](function(){_0x4a45d7[_0x6375('0x2e')](0xcc)[_0x6375('0x28')]();});}};}function handleEntityNotFound(_0x43d8f9,_0x5c6d59){return function(_0x1b9983){if(!_0x1b9983){_0x43d8f9[_0x6375('0x33')](0x194);}return _0x1b9983;};}function handleError(_0x5158fd,_0x41c865){_0x41c865=_0x41c865||0x1f4;return function(_0x4797ce){logger[_0x6375('0x24')](_0x4797ce[_0x6375('0x34')]);if(_0x4797ce[_0x6375('0x35')]){delete _0x4797ce[_0x6375('0x35')];}_0x5158fd[_0x6375('0x2e')](_0x41c865)[_0x6375('0x36')](_0x4797ce);};}exports[_0x6375('0x37')]=function(_0x20e81d,_0x34b737){var _0x2f3900={},_0x112285={},_0x37c242={'count':0x0,'rows':[]};var _0x5cabee=_[_0x6375('0x38')](db[_0x6375('0x39')]['rawAttributes'],function(_0x48fe44){return{'name':_0x48fe44[_0x6375('0x3a')],'type':_0x48fe44[_0x6375('0x3b')]['key']};});_0x112285[_0x6375('0x3c')]=_[_0x6375('0x38')](_0x5cabee,_0x6375('0x35'));_0x112285['query']=_[_0x6375('0x3d')](_0x20e81d[_0x6375('0x3e')]);_0x112285[_0x6375('0x3f')]=_[_0x6375('0x40')](_0x112285['model'],_0x112285[_0x6375('0x3e')]);_0x2f3900[_0x6375('0x41')]=_['intersection'](_0x112285[_0x6375('0x3c')],qs[_0x6375('0x42')](_0x20e81d[_0x6375('0x3e')][_0x6375('0x42')]));_0x2f3900[_0x6375('0x41')]=_0x2f3900[_0x6375('0x41')][_0x6375('0x43')]?_0x2f3900['attributes']:_0x112285[_0x6375('0x3c')];if(!_0x20e81d[_0x6375('0x3e')][_0x6375('0x44')](_0x6375('0x45'))){_0x2f3900[_0x6375('0x2d')]=qs[_0x6375('0x2d')](_0x20e81d['query']['limit']);_0x2f3900[_0x6375('0x2a')]=qs['offset'](_0x20e81d[_0x6375('0x3e')][_0x6375('0x2a')]);}_0x2f3900[_0x6375('0x46')]=qs[_0x6375('0x47')](_0x20e81d['query'][_0x6375('0x47')]);_0x2f3900[_0x6375('0x48')]=qs[_0x6375('0x3f')](_[_0x6375('0x49')](_0x20e81d['query'],_0x112285[_0x6375('0x3f')]),_0x5cabee);if(_0x20e81d[_0x6375('0x3e')][_0x6375('0x4a')]){_0x2f3900[_0x6375('0x48')]=_[_0x6375('0x4b')](_0x2f3900[_0x6375('0x48')],{'$or':_[_0x6375('0x38')](_0x5cabee,function(_0x4e1774){if(_0x4e1774[_0x6375('0x3b')]!==_0x6375('0x4c')){var _0xc3522d={};_0xc3522d[_0x4e1774[_0x6375('0x35')]]={'$like':'%'+_0x20e81d[_0x6375('0x3e')][_0x6375('0x4a')]+'%'};return _0xc3522d;}})});}_0x2f3900=_['merge']({},_0x2f3900,_0x20e81d[_0x6375('0x4d')]);var _0x5bf0d6={'where':_0x2f3900[_0x6375('0x48')]};return db[_0x6375('0x39')][_0x6375('0x2c')](_0x5bf0d6)['then'](function(_0x149498){_0x37c242[_0x6375('0x2c')]=_0x149498;if(_0x20e81d[_0x6375('0x3e')][_0x6375('0x4e')]){_0x2f3900[_0x6375('0x4f')]=[{'all':!![]}];}return db[_0x6375('0x39')][_0x6375('0x50')](_0x2f3900);})[_0x6375('0x1e')](function(_0x285a06){_0x37c242[_0x6375('0x51')]=_0x285a06;return _0x37c242;})[_0x6375('0x1e')](respondWithFilteredResult(_0x34b737,_0x2f3900))['catch'](handleError(_0x34b737,null));};exports[_0x6375('0x52')]=function(_0x2e42f7,_0x29bd40){var _0x494be6={'raw':!![],'where':{'id':_0x2e42f7['params']['id']}},_0x4e914c={};_0x4e914c[_0x6375('0x3c')]=_[_0x6375('0x3d')](db[_0x6375('0x39')][_0x6375('0x53')]);_0x4e914c[_0x6375('0x3e')]=_[_0x6375('0x3d')](_0x2e42f7['query']);_0x4e914c[_0x6375('0x3f')]=_[_0x6375('0x40')](_0x4e914c['model'],_0x4e914c['query']);_0x494be6[_0x6375('0x41')]=_[_0x6375('0x40')](_0x4e914c[_0x6375('0x3c')],qs['fields'](_0x2e42f7['query']['fields']));_0x494be6['attributes']=_0x494be6['attributes'][_0x6375('0x43')]?_0x494be6[_0x6375('0x41')]:_0x4e914c[_0x6375('0x3c')];if(_0x2e42f7[_0x6375('0x3e')][_0x6375('0x4e')]){_0x494be6['include']=[{'all':!![]}];}_0x494be6=_[_0x6375('0x4b')]({},_0x494be6,_0x2e42f7[_0x6375('0x4d')]);return db['Network'][_0x6375('0x54')](_0x494be6)[_0x6375('0x1e')](handleEntityNotFound(_0x29bd40,null))[_0x6375('0x1e')](respondWithResult(_0x29bd40,null))['catch'](handleError(_0x29bd40,null));};exports['create']=function(_0xdb31a8,_0x8b98f9,_0x1c2ae3){var _0x1ec496;return db[_0x6375('0x55')][_0x6375('0x56')](function(_0x1897b2){return db[_0x6375('0x39')]['create'](_0xdb31a8[_0x6375('0x57')],{'raw':!![]})['then'](function(_0x186572){_0x1ec496=_0x186572;return db[_0x6375('0x39')]['findAll']({'where':{'type':_0xdb31a8['body'][_0x6375('0x3b')]},'raw':!![]});})[_0x6375('0x1e')](function(_0x23a36c){if(_0x1ec496['type'][_0x6375('0x58')]()=='STUN'){var _0x5d5744=fs['readFileSync'](path[_0x6375('0x59')](config[_0x6375('0x5a')],_0x6375('0x5b')),'utf8');var _0x5afc87=ejs['render'](_0x5d5744,{'networks':_0x23a36c||[]});fs[_0x6375('0x5c')](_0x6375('0x5d'),_0x5afc87);return respondWithRpcPromise(_0x6375('0x5e'),_0x6375('0x5f'),{'module':_0x6375('0x60')});}else if(_0x1ec496['type'][_0x6375('0x58')]()==_0x6375('0x61')){var _0x5d8784=fs[_0x6375('0x62')](path[_0x6375('0x59')](config[_0x6375('0x5a')],_0x6375('0x63')),_0x6375('0x64'));var _0x3c047d=ejs[_0x6375('0x65')](_0x5d8784,{'networks':_0x23a36c||[]});fs[_0x6375('0x5c')](_0x6375('0x66'),_0x3c047d);return respondWithRpcPromise('Reload',_0x6375('0x5f'),{'module':_0x6375('0x60')});}else{var _0x34c539=fs[_0x6375('0x62')](path['join'](config['root'],_0x6375('0x67')),_0x6375('0x64'));var _0x32d4d6=ejs[_0x6375('0x65')](_0x34c539,{'networks':_0x23a36c||[]});fs['writeFileSync'](util[_0x6375('0x68')](_0x6375('0x69'),_0xdb31a8[_0x6375('0x57')][_0x6375('0x3b')][_0x6375('0x6a')]()),_0x32d4d6);return respondWithRpcPromise(_0x6375('0x5e'),_0x6375('0x5f'),{'module':_0x6375('0x6b')});}return null;})['then'](function(){return _0x1ec496;});})[_0x6375('0x1e')](respondWithResult(_0x8b98f9,0xc9))['catch'](handleError(_0x8b98f9,null));};exports['update']=function(_0x4b788d,_0x399e14,_0x18d950){var _0x3a5117;return db[_0x6375('0x55')]['transaction'](function(_0xeb4afb){return db['Network'][_0x6375('0x54')]({'where':{'id':_0x4b788d['params']['id']}})[_0x6375('0x1e')](handleEntityNotFound(_0x399e14,null))[_0x6375('0x1e')](saveUpdates(_0x4b788d[_0x6375('0x57')],null))['then'](function(_0x5ed5fc){if(_0x5ed5fc){_0x3a5117=_0x5ed5fc;return db[_0x6375('0x39')][_0x6375('0x50')]({'where':{'type':_0x3a5117[_0x6375('0x3b')]},'raw':!![]});}return null;})[_0x6375('0x1e')](function(_0x3f68ae){if(_0x3a5117[_0x6375('0x3b')][_0x6375('0x58')]()==_0x6375('0x6c')){var _0x19c78c=fs[_0x6375('0x62')](path[_0x6375('0x59')](config[_0x6375('0x5a')],_0x6375('0x5b')),'utf8');var _0x2ea019=ejs[_0x6375('0x65')](_0x19c78c,{'networks':_0x3f68ae||[]});fs[_0x6375('0x5c')]('/etc/asterisk/stun_xcally.conf',_0x2ea019);return respondWithRpcPromise('Reload',_0x6375('0x31'),{'module':_0x6375('0x60')});}else if(_0x3a5117[_0x6375('0x3b')][_0x6375('0x58')]()==_0x6375('0x61')){var _0x47e9d2=fs[_0x6375('0x62')](path[_0x6375('0x59')](config[_0x6375('0x5a')],_0x6375('0x63')),_0x6375('0x64'));var _0x2cb0c9=ejs[_0x6375('0x65')](_0x47e9d2,{'networks':_0x3f68ae||[]});fs[_0x6375('0x5c')](_0x6375('0x66'),_0x2cb0c9);return respondWithRpcPromise('Reload',_0x6375('0x31'),{'module':'res_stun_monitor.so'});}else{var _0x1f16dc=fs['readFileSync'](path[_0x6375('0x59')](config[_0x6375('0x5a')],_0x6375('0x67')),_0x6375('0x64'));var _0x291b5a=ejs[_0x6375('0x65')](_0x1f16dc,{'networks':_0x3f68ae||[]});fs[_0x6375('0x5c')](util[_0x6375('0x68')](_0x6375('0x69'),_0x4b788d[_0x6375('0x57')][_0x6375('0x3b')][_0x6375('0x6a')]()),_0x291b5a);return respondWithRpcPromise(_0x6375('0x5e'),_0x6375('0x31'),{'module':'chan_sip.so'});}return null;})[_0x6375('0x1e')](function(_0x113c6d){if(_0x113c6d){return _0x3a5117;}return null;});})[_0x6375('0x1e')](respondWithResult(_0x399e14,null))[_0x6375('0x27')](handleError(_0x399e14,null));};exports[_0x6375('0x32')]=function(_0x4a42bc,_0x5e7c18,_0x551e60){var _0x47f7c9;return db[_0x6375('0x39')]['find']({'where':{'id':_0x4a42bc[_0x6375('0x6d')]['id']}})[_0x6375('0x1e')](function(_0x491392){_0x47f7c9=_0x491392;return _0x491392;})['then'](handleEntityNotFound(_0x5e7c18,null))[_0x6375('0x1e')](removeEntity(_0x5e7c18,null))[_0x6375('0x1e')](function(){if(_0x47f7c9){return db[_0x6375('0x39')][_0x6375('0x50')]({'where':{'type':_0x47f7c9[_0x6375('0x3b')]},'raw':!![]});}})[_0x6375('0x1e')](function(_0x21072d){if(_0x47f7c9[_0x6375('0x3b')]['toUpperCase']()==_0x6375('0x6c')){var _0x507a15=fs['readFileSync'](path[_0x6375('0x59')](config[_0x6375('0x5a')],'server/files/templates/stun_multiple.ejs'),_0x6375('0x64'));var _0x3c30ff=ejs[_0x6375('0x65')](_0x507a15,{'networks':_0x21072d||[]});fs[_0x6375('0x5c')](_0x6375('0x5d'),_0x3c30ff);return respondWithRpcPromise(_0x6375('0x5e'),_0x6375('0x32'),{'module':'res_stun_monitor.so'});}else if(_0x47f7c9[_0x6375('0x3b')]['toUpperCase']()==_0x6375('0x61')){var _0x4d5c98=fs[_0x6375('0x62')](path['join'](config[_0x6375('0x5a')],_0x6375('0x63')),_0x6375('0x64'));var _0x46a740=ejs[_0x6375('0x65')](_0x4d5c98,{'networks':_0x21072d||[]});fs['writeFileSync'](_0x6375('0x66'),_0x46a740);return respondWithRpcPromise(_0x6375('0x5e'),_0x6375('0x32'),{'module':'res_stun_monitor.so'});}else{var _0x164f68=fs['readFileSync'](path['join'](config[_0x6375('0x5a')],_0x6375('0x67')),_0x6375('0x64'));var _0x477d14=ejs[_0x6375('0x65')](_0x164f68,{'networks':_0x21072d||[]});fs[_0x6375('0x5c')](util[_0x6375('0x68')](_0x6375('0x69'),_0x4a42bc['body'][_0x6375('0x3b')][_0x6375('0x6a')]()),_0x477d14);return respondWithRpcPromise('Reload',_0x6375('0x32'),{'module':_0x6375('0x6b')});}return null;})[_0x6375('0x27')](handleError(_0x5e7c18,null));};
\ No newline at end of file
index c81738d..ed1dd81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeffd=['request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','Network','network','lodash','../../config/logger','api','moment','bluebird'];(function(_0xb7b878,_0x5c3b92){var _0x3c84b9=function(_0x21d5a2){while(--_0x21d5a2){_0xb7b878['push'](_0xb7b878['shift']());}};_0x3c84b9(++_0x5c3b92);}(_0xeffd,0x6b));var _0xdeff=function(_0x41df17,_0x1bb12f){_0x41df17=_0x41df17-0x0;var _0x2c21b0=_0xeffd[_0x41df17];return _0x2c21b0;};'use strict';var _=require(_0xdeff('0x0'));var util=require('util');var logger=require(_0xdeff('0x1'))(_0xdeff('0x2'));var moment=require(_0xdeff('0x3'));var BPromise=require(_0xdeff('0x4'));var rp=require(_0xdeff('0x5'));var fs=require('fs');var path=require(_0xdeff('0x6'));var rimraf=require(_0xdeff('0x7'));var config=require(_0xdeff('0x8'));var attributes=require(_0xdeff('0x9'));module[_0xdeff('0xa')]=function(_0x1ed641,_0x132631){return _0x1ed641[_0xdeff('0xb')](_0xdeff('0xc'),attributes,{'tableName':_0xdeff('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe739=['Network','lodash','../../config/logger','api','moment','rimraf','../../config/environment','./network.attributes','exports','define'];(function(_0x34c878,_0x1bc03b){var _0x580c5e=function(_0x32e572){while(--_0x32e572){_0x34c878['push'](_0x34c878['shift']());}};_0x580c5e(++_0x1bc03b);}(_0xe739,0x105));var _0x9e73=function(_0x2ccef9,_0x4740de){_0x2ccef9=_0x2ccef9-0x0;var _0xc61035=_0xe739[_0x2ccef9];return _0xc61035;};'use strict';var _=require(_0x9e73('0x0'));var util=require('util');var logger=require(_0x9e73('0x1'))(_0x9e73('0x2'));var moment=require(_0x9e73('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9e73('0x4'));var config=require(_0x9e73('0x5'));var attributes=require(_0x9e73('0x6'));module[_0x9e73('0x7')]=function(_0x4cb2ed,_0x3db8fa){return _0x4cb2ed[_0x9e73('0x8')](_0x9e73('0x9'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f20aa8c..330e4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4d3bf5,_0x48125b){var _0x498fff=function(_0x45a2de){while(--_0x45a2de){_0x4d3bf5['push'](_0x4d3bf5['shift']());}};_0x498fff(++_0x48125b);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0x5896dd,_0x4c5f26){_0x5896dd=_0x5896dd-0x0;var _0x21dd36=_0x7a54[_0x5896dd];return _0x21dd36;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index ee5b366..f84c127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72be=['describe','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','notify','/:id/users','addAgents','/:id/send','send','put','/:id','update','delete','destroy','removeDispositions','removeAnswers','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe'];(function(_0x1729e0,_0x463e45){var _0x38079a=function(_0x30b247){while(--_0x30b247){_0x1729e0['push'](_0x1729e0['shift']());}};_0x38079a(++_0x463e45);}(_0x72be,0x1c8));var _0xe72b=function(_0xeb865d,_0x582289){_0xeb865d=_0xeb865d-0x0;var _0x3ef80a=_0x72be[_0xeb865d];return _0x3ef80a;};'use strict';var multer=require(_0xe72b('0x0'));var util=require(_0xe72b('0x1'));var path=require(_0xe72b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe72b('0x3')]();var fs_extra=require(_0xe72b('0x4'));var auth=require(_0xe72b('0x5'));var interaction=require(_0xe72b('0x6'));var config=require(_0xe72b('0x7'));var controller=require('./openchannelAccount.controller');router['get']('/',auth[_0xe72b('0x8')](),controller[_0xe72b('0x9')]);router[_0xe72b('0xa')](_0xe72b('0xb'),auth[_0xe72b('0x8')](),controller[_0xe72b('0xc')]);router['get']('/:id',auth[_0xe72b('0x8')](),controller[_0xe72b('0xd')]);router[_0xe72b('0xa')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xe72b('0xe')]);router['get'](_0xe72b('0xf'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x10')]);router[_0xe72b('0xa')](_0xe72b('0x11'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x12')]);router[_0xe72b('0xa')](_0xe72b('0x13'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x14')]);router[_0xe72b('0xa')]('/:id/users',auth[_0xe72b('0x8')](),controller['getAgents']);router[_0xe72b('0x15')]('/',auth[_0xe72b('0x8')](),controller[_0xe72b('0x16')]);router[_0xe72b('0x15')](_0xe72b('0x17'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x18')]);router[_0xe72b('0x15')](_0xe72b('0xf'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x19')]);router[_0xe72b('0x15')](_0xe72b('0x1a'),controller[_0xe72b('0x1b')]);router['post'](_0xe72b('0x11'),auth[_0xe72b('0x8')](),controller['addApplications']);router['post'](_0xe72b('0x1c'),auth['isAuthenticated'](),controller[_0xe72b('0x1d')]);router[_0xe72b('0x15')](_0xe72b('0x1e'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x1f')]);router[_0xe72b('0x20')](_0xe72b('0x21'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x22')]);router[_0xe72b('0x23')](_0xe72b('0x21'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x24')]);router[_0xe72b('0x23')](_0xe72b('0x17'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x25')]);router[_0xe72b('0x23')](_0xe72b('0xf'),auth[_0xe72b('0x8')](),controller[_0xe72b('0x26')]);router[_0xe72b('0x23')]('/:id/users',auth[_0xe72b('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xd3d7=['getInteractions','/:id/users','getAgents','addDisposition','post','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','update','delete','destroy','removeAnswers','removeAgents','exports','util','path','Router','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','get','index','describe','/:id','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions'];(function(_0x530d3c,_0x2f723b){var _0x2e84e0=function(_0x275adc){while(--_0x275adc){_0x530d3c['push'](_0x530d3c['shift']());}};_0x2e84e0(++_0x2f723b);}(_0xd3d7,0x132));var _0x7d3d=function(_0x76f87d,_0x30508d){_0x76f87d=_0x76f87d-0x0;var _0xd15a5d=_0xd3d7[_0x76f87d];return _0xd15a5d;};'use strict';var multer=require('multer');var util=require(_0x7d3d('0x0'));var path=require(_0x7d3d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7d3d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x7d3d('0x3'));var interaction=require(_0x7d3d('0x4'));var config=require('../../config/environment');var controller=require(_0x7d3d('0x5'));router[_0x7d3d('0x6')]('/',auth['isAuthenticated'](),controller[_0x7d3d('0x7')]);router[_0x7d3d('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x7d3d('0x8')]);router[_0x7d3d('0x6')](_0x7d3d('0x9'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0xb')]);router[_0x7d3d('0x6')](_0x7d3d('0xc'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0xd')]);router['get'](_0x7d3d('0xe'),auth['isAuthenticated'](),controller[_0x7d3d('0xf')]);router['get'](_0x7d3d('0x10'),auth[_0x7d3d('0xa')](),controller['getApplications']);router[_0x7d3d('0x6')](_0x7d3d('0x11'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x12')]);router['get'](_0x7d3d('0x13'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x14')]);router['post']('/',auth[_0x7d3d('0xa')](),controller['create']);router['post'](_0x7d3d('0xc'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x15')]);router[_0x7d3d('0x16')](_0x7d3d('0xe'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x17')]);router[_0x7d3d('0x16')](_0x7d3d('0x18'),controller[_0x7d3d('0x19')]);router[_0x7d3d('0x16')]('/:id/applications',auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x1a')]);router[_0x7d3d('0x16')](_0x7d3d('0x13'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x1b')]);router[_0x7d3d('0x16')](_0x7d3d('0x1c'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x1d')]);router['put'](_0x7d3d('0x9'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x1e')]);router[_0x7d3d('0x1f')](_0x7d3d('0x9'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x20')]);router[_0x7d3d('0x1f')](_0x7d3d('0xc'),auth[_0x7d3d('0xa')](),controller['removeDispositions']);router[_0x7d3d('0x1f')](_0x7d3d('0xe'),auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x21')]);router[_0x7d3d('0x1f')]('/:id/users',auth[_0x7d3d('0xa')](),controller[_0x7d3d('0x22')]);module[_0x7d3d('0x23')]=router;
\ No newline at end of file
index 6cff046..636f0ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9439=['sequelize','randomstring','exports','STRING','generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x2fd4d8,_0x118245){var _0x4c8d34=function(_0x7849c4){while(--_0x7849c4){_0x2fd4d8['push'](_0x2fd4d8['shift']());}};_0x4c8d34(++_0x118245);}(_0x9439,0xb6));var _0x9943=function(_0x407c70,_0xf9aab8){_0x407c70=_0x407c70-0x0;var _0x460aa9=_0x9439[_0x407c70];return _0x460aa9;};'use strict';var Sequelize=require(_0x9943('0x0'));var rs=require(_0x9943('0x1'));module[_0x9943('0x2')]={'name':{'type':Sequelize[_0x9943('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x9943('0x3')]},'token':{'type':Sequelize[_0x9943('0x3')],'defaultValue':function(){return rs[_0x9943('0x4')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x9943('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9943('0x5');}},'notificationSound':{'type':Sequelize[_0x9943('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9943('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9943('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x9943('0x3')]},'queueTransfer':{'type':Sequelize[_0x9943('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9943('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9943('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9943('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9943('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x9943('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x9943('0x6')],'defaultValue':![],'comment':_0x9943('0x9'),'set':function(_0x58dd93){if(!_0x58dd93)this[_0x9943('0xa')](_0x9943('0xb'),null);this[_0x9943('0xa')](_0x9943('0xc'),_0x58dd93);}}};
\ No newline at end of file
+var _0x7462=['mandatoryDisposition','sequelize','exports','STRING','name','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue'];(function(_0x49f1c3,_0x53b0c1){var _0x53e6e3=function(_0x1f2cea){while(--_0x1f2cea){_0x49f1c3['push'](_0x49f1c3['shift']());}};_0x53e6e3(++_0x53b0c1);}(_0x7462,0x79));var _0x2746=function(_0x5d8018,_0x588592){_0x5d8018=_0x5d8018-0x0;var _0x151ac4=_0x7462[_0x5d8018];return _0x151ac4;};'use strict';var Sequelize=require(_0x2746('0x0'));var rs=require('randomstring');module[_0x2746('0x1')]={'name':{'type':Sequelize[_0x2746('0x2')],'unique':_0x2746('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x2746('0x2')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x2746('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x2746('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x2746('0x4');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x2746('0x2')]},'queueTransfer':{'type':Sequelize[_0x2746('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2746('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2746('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2746('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x2746('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x2746('0x5')],'defaultValue':![],'comment':_0x2746('0x8'),'set':function(_0x318c28){if(!_0x318c28)this['setDataValue'](_0x2746('0x9'),null);this[_0x2746('0xa')](_0x2746('0xb'),_0x318c28);}}};
\ No newline at end of file
index 49844dc..d680ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5c8=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addDisposition','Disposition','findOne','order','OpenchannelAccountId','rows','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','openchannel','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','List','Contacts','Applications','account','applications','list','orderBy','contact','firstName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','lastName','messageId','interaction','created','push','close','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','startRouting','Start','EventManager','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','OpenchannelApplication','json','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','emit','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','DESC','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','end','offset','undefined','limit','count','status','set','apply','reject','save','update','destroy','OpenchannelAccounts','UserProfileResource','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','type','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation'];(function(_0x14947c,_0x8c0f16){var _0x28864b=function(_0x2ac729){while(--_0x2ac729){_0x14947c['push'](_0x14947c['shift']());}};_0x28864b(++_0x8c0f16);}(_0xd5c8,0x118));var _0x8d5c=function(_0x308dcc,_0x2d1178){_0x308dcc=_0x308dcc-0x0;var _0x361717=_0xd5c8[_0x308dcc];return _0x361717;};'use strict';var emlformat=require(_0x8d5c('0x0'));var rimraf=require(_0x8d5c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8d5c('0x2'));var rp=require(_0x8d5c('0x3'));var moment=require(_0x8d5c('0x4'));var BPromise=require(_0x8d5c('0x5'));var Mustache=require('mustache');var util=require(_0x8d5c('0x6'));var path=require(_0x8d5c('0x7'));var sox=require('sox');var csv=require(_0x8d5c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d5c('0x9'));var _=require(_0x8d5c('0xa'));var squel=require(_0x8d5c('0xb'));var crypto=require('crypto');var jsforce=require(_0x8d5c('0xc'));var deskjs=require(_0x8d5c('0xd'));var toCsv=require(_0x8d5c('0x8'));var querystring=require(_0x8d5c('0xe'));var Papa=require(_0x8d5c('0xf'));var Redis=require('ioredis');var authService=require(_0x8d5c('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8d5c('0x11'));var hardwareService=require(_0x8d5c('0x12'));var logger=require(_0x8d5c('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x8d5c('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8d5c('0x15'))['db'];config[_0x8d5c('0x16')]=_[_0x8d5c('0x17')](config[_0x8d5c('0x16')],{'host':_0x8d5c('0x18'),'port':0x18eb});var socket=require(_0x8d5c('0x19'))(new Redis(config[_0x8d5c('0x16')]));require(_0x8d5c('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x8d5c('0x1b')][_0x8d5c('0x1c')]({'port':0x232c});var client9002=jayson[_0x8d5c('0x1b')][_0x8d5c('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x407d0b,_0x19a53d,_0x5d073e,_0x45a65f){return new BPromise(function(_0x5180bb,_0x562537){var _0x588499=_0x45a65f||client;return _0x588499['request'](_0x407d0b,_0x5d073e)[_0x8d5c('0x1d')](function(_0x182901){logger[_0x8d5c('0x1e')](_0x8d5c('0x1f'),_0x19a53d,_0x8d5c('0x20'));logger['debug'](_0x8d5c('0x21'),_0x19a53d,'request\x20sent',JSON[_0x8d5c('0x22')](_0x182901));if(_0x182901[_0x8d5c('0x23')]){if(_0x182901[_0x8d5c('0x23')]['code']===0x1f4){logger[_0x8d5c('0x23')](_0x8d5c('0x1f'),_0x19a53d,_0x182901['error'][_0x8d5c('0x24')]);return _0x562537(_0x182901[_0x8d5c('0x23')][_0x8d5c('0x24')]);}logger[_0x8d5c('0x23')]('OpenchannelAccount,\x20%s,\x20%s',_0x19a53d,_0x182901['error'][_0x8d5c('0x24')]);return _0x5180bb(_0x182901['error']['message']);}else{logger[_0x8d5c('0x1e')]('OpenchannelAccount,\x20%s,\x20%s',_0x19a53d,_0x8d5c('0x20'));_0x5180bb(_0x182901[_0x8d5c('0x25')][_0x8d5c('0x24')]);}})[_0x8d5c('0x26')](function(_0x1ca75d){logger[_0x8d5c('0x23')](_0x8d5c('0x1f'),_0x19a53d,_0x1ca75d);_0x562537(_0x1ca75d);});});}function respondWithStatusCode(_0x59f557,_0x5552e2){_0x5552e2=_0x5552e2||0xcc;return function(_0x464045){if(_0x464045){return _0x59f557['sendStatus'](_0x5552e2);}return _0x59f557['status'](_0x5552e2)[_0x8d5c('0x27')]();};}function respondWithResult(_0xe3408,_0x49b38f){_0x49b38f=_0x49b38f||0xc8;return function(_0x2f168e){if(_0x2f168e){return _0xe3408['status'](_0x49b38f)['json'](_0x2f168e);}};}function respondWithFilteredResult(_0x9ccad1,_0x3f1b81){return function(_0x41e09f){if(_0x41e09f){var _0x57109f=typeof _0x3f1b81[_0x8d5c('0x28')]===_0x8d5c('0x29')&&typeof _0x3f1b81[_0x8d5c('0x2a')]===_0x8d5c('0x29');var _0x2ac85c=_0x41e09f[_0x8d5c('0x2b')];var _0x37d4ba=_0x57109f?0x0:_0x3f1b81['offset'];var _0x1a3309=_0x57109f?_0x41e09f['count']:_0x3f1b81[_0x8d5c('0x28')]+_0x3f1b81[_0x8d5c('0x2a')];var _0x26aba9;if(_0x1a3309>=_0x2ac85c){_0x1a3309=_0x2ac85c;_0x26aba9=0xc8;}else{_0x26aba9=0xce;}_0x9ccad1[_0x8d5c('0x2c')](_0x26aba9);return _0x9ccad1[_0x8d5c('0x2d')]('Content-Range',_0x37d4ba+'-'+_0x1a3309+'/'+_0x2ac85c)['json'](_0x41e09f);}return null;};}function patchUpdates(_0x374350){return function(_0x100b70){try{jsonpatch[_0x8d5c('0x2e')](_0x100b70,_0x374350,!![]);}catch(_0x5808df){return BPromise[_0x8d5c('0x2f')](_0x5808df);}return _0x100b70[_0x8d5c('0x30')]();};}function saveUpdates(_0x3fb72d,_0x5d19fa){return function(_0x9f46f1){if(_0x9f46f1){return _0x9f46f1[_0x8d5c('0x31')](_0x3fb72d)['then'](function(_0x40ffe4){return _0x40ffe4;});}return null;};}function removeEntity(_0x143d8f,_0x3dace0){return function(_0x44f12a){if(_0x44f12a){return _0x44f12a[_0x8d5c('0x32')]()['then'](function(){var _0x2123c2=_0x44f12a['get']({'plain':!![]});var _0x5d0f10=_0x8d5c('0x33');return db[_0x8d5c('0x34')][_0x8d5c('0x32')]({'where':{'type':_0x5d0f10,'resourceId':_0x2123c2['id']}})[_0x8d5c('0x1d')](function(){return _0x44f12a;});})['then'](function(){_0x143d8f['status'](0xcc)[_0x8d5c('0x27')]();});}};}function handleEntityNotFound(_0x510acc,_0x30896e){return function(_0x51f9d3){if(!_0x51f9d3){_0x510acc[_0x8d5c('0x35')](0x194);}return _0x51f9d3;};}function handleError(_0x10e208,_0x3a2778){_0x3a2778=_0x3a2778||0x1f4;return function(_0x37ef0d){logger[_0x8d5c('0x23')](_0x37ef0d[_0x8d5c('0x36')]);if(_0x37ef0d['name']){delete _0x37ef0d[_0x8d5c('0x37')];}_0x10e208[_0x8d5c('0x2c')](_0x3a2778)[_0x8d5c('0x38')](_0x37ef0d);};}exports[_0x8d5c('0x39')]=function(_0x279a62,_0x461691){var _0xbc0fb2={'include':[{'model':db[_0x8d5c('0x3a')],'as':_0x8d5c('0x3b')}]},_0x2b875b={},_0x2454b6={'count':0x0,'rows':[]};var _0x19c180=_['map'](db[_0x8d5c('0x3c')][_0x8d5c('0x3d')],function(_0x231d6b){return{'name':_0x231d6b[_0x8d5c('0x3e')],'type':_0x231d6b[_0x8d5c('0x3f')]['key']};});_0x2b875b[_0x8d5c('0x40')]=_[_0x8d5c('0x41')](_0x19c180,'name');_0x2b875b['query']=_[_0x8d5c('0x42')](_0x279a62['query']);_0x2b875b[_0x8d5c('0x43')]=_[_0x8d5c('0x44')](_0x2b875b['model'],_0x2b875b[_0x8d5c('0x45')]);_0xbc0fb2[_0x8d5c('0x46')]=_[_0x8d5c('0x44')](_0x2b875b[_0x8d5c('0x40')],qs[_0x8d5c('0x47')](_0x279a62[_0x8d5c('0x45')][_0x8d5c('0x47')]));_0xbc0fb2['attributes']=_0xbc0fb2[_0x8d5c('0x46')][_0x8d5c('0x48')]?_0xbc0fb2[_0x8d5c('0x46')]:_0x2b875b[_0x8d5c('0x40')];if(!_0x279a62[_0x8d5c('0x45')][_0x8d5c('0x49')](_0x8d5c('0x4a'))){_0xbc0fb2[_0x8d5c('0x2a')]=qs[_0x8d5c('0x2a')](_0x279a62[_0x8d5c('0x45')][_0x8d5c('0x2a')]);_0xbc0fb2[_0x8d5c('0x28')]=qs['offset'](_0x279a62[_0x8d5c('0x45')][_0x8d5c('0x28')]);}_0xbc0fb2['order']=qs[_0x8d5c('0x4b')](_0x279a62[_0x8d5c('0x45')][_0x8d5c('0x4b')]);_0xbc0fb2[_0x8d5c('0x4c')]=qs['filters'](_[_0x8d5c('0x4d')](_0x279a62[_0x8d5c('0x45')],_0x2b875b[_0x8d5c('0x43')]),_0x19c180);if(_0x279a62[_0x8d5c('0x45')][_0x8d5c('0x4e')]){_0xbc0fb2[_0x8d5c('0x4c')]=_[_0x8d5c('0x4f')](_0xbc0fb2[_0x8d5c('0x4c')],{'$or':_['map'](_0x19c180,function(_0x43f698){if(_0x43f698[_0x8d5c('0x3f')]!=='VIRTUAL'){var _0x17f18e={};_0x17f18e[_0x43f698[_0x8d5c('0x37')]]={'$like':'%'+_0x279a62['query']['filter']+'%'};return _0x17f18e;}})});}_0xbc0fb2=_[_0x8d5c('0x4f')]({},_0xbc0fb2,_0x279a62[_0x8d5c('0x50')]);var _0x64ae68={'where':_0xbc0fb2['where']};return db[_0x8d5c('0x3c')][_0x8d5c('0x2b')](_0x64ae68)[_0x8d5c('0x1d')](function(_0x28c91c){_0x2454b6[_0x8d5c('0x2b')]=_0x28c91c;if(_0x279a62['query'][_0x8d5c('0x51')]){_0xbc0fb2[_0x8d5c('0x52')]=[{'all':!![]}];}return db[_0x8d5c('0x3c')][_0x8d5c('0x53')](_0xbc0fb2);})[_0x8d5c('0x1d')](function(_0x20567f){_0x2454b6['rows']=_0x20567f;return _0x2454b6;})[_0x8d5c('0x1d')](respondWithFilteredResult(_0x461691,_0xbc0fb2))['catch'](handleError(_0x461691,null));};exports[_0x8d5c('0x54')]=function(_0x515cf9,_0x38d072){var _0x25f2ca={'raw':![],'where':{'id':_0x515cf9[_0x8d5c('0x55')]['id']},'include':[{'model':db[_0x8d5c('0x3a')],'as':_0x8d5c('0x3b')}]},_0x24498d={};_0x24498d[_0x8d5c('0x40')]=_[_0x8d5c('0x42')](db['OpenchannelAccount'][_0x8d5c('0x3d')]);_0x24498d[_0x8d5c('0x45')]=_['keys'](_0x515cf9[_0x8d5c('0x45')]);_0x24498d[_0x8d5c('0x43')]=_[_0x8d5c('0x44')](_0x24498d[_0x8d5c('0x40')],_0x24498d[_0x8d5c('0x45')]);_0x25f2ca[_0x8d5c('0x46')]=_[_0x8d5c('0x44')](_0x24498d[_0x8d5c('0x40')],qs[_0x8d5c('0x47')](_0x515cf9[_0x8d5c('0x45')][_0x8d5c('0x47')]));_0x25f2ca[_0x8d5c('0x46')]=_0x25f2ca[_0x8d5c('0x46')][_0x8d5c('0x48')]?_0x25f2ca[_0x8d5c('0x46')]:_0x24498d['model'];if(_0x515cf9[_0x8d5c('0x45')]['includeAll']){_0x25f2ca[_0x8d5c('0x52')]=[{'all':!![]}];}_0x25f2ca=_['merge']({},_0x25f2ca,_0x515cf9['options']);return db[_0x8d5c('0x3c')][_0x8d5c('0x56')](_0x25f2ca)['then'](handleEntityNotFound(_0x38d072,null))[_0x8d5c('0x1d')](respondWithResult(_0x38d072,null))[_0x8d5c('0x26')](handleError(_0x38d072,null));};exports[_0x8d5c('0x57')]=function(_0x529762,_0x507552){return db['OpenchannelAccount'][_0x8d5c('0x57')](_0x529762[_0x8d5c('0x58')],{})[_0x8d5c('0x1d')](function(_0x5904b1){var _0x34b4d2=_0x529762[_0x8d5c('0x59')][_0x8d5c('0x5a')]({'plain':!![]});if(!_0x34b4d2)throw new Error(_0x8d5c('0x5b'));if(_0x34b4d2['role']===_0x8d5c('0x59')){var _0x2ecc22=_0x5904b1[_0x8d5c('0x5a')]({'plain':!![]});var _0x5c40c8=_0x8d5c('0x33');return db[_0x8d5c('0x5c')][_0x8d5c('0x56')]({'where':{'name':_0x5c40c8,'userProfileId':_0x34b4d2['userProfileId']},'raw':!![]})[_0x8d5c('0x1d')](function(_0x1c820c){if(_0x1c820c&&_0x1c820c[_0x8d5c('0x5d')]===0x0){return db[_0x8d5c('0x34')][_0x8d5c('0x57')]({'name':_0x2ecc22[_0x8d5c('0x37')],'resourceId':_0x2ecc22['id'],'type':_0x1c820c[_0x8d5c('0x37')],'sectionId':_0x1c820c['id']},{})[_0x8d5c('0x1d')](function(){return _0x5904b1;});}else{return _0x5904b1;}})[_0x8d5c('0x26')](function(_0x3d7047){logger[_0x8d5c('0x23')](_0x8d5c('0x5e'),_0x3d7047);throw _0x3d7047;});}return _0x5904b1;})['then'](respondWithResult(_0x507552,0xc9))[_0x8d5c('0x26')](handleError(_0x507552,null));};exports[_0x8d5c('0x31')]=function(_0x197494,_0x44b4e8){if(_0x197494[_0x8d5c('0x58')]['id']){delete _0x197494['body']['id'];}return db['OpenchannelAccount'][_0x8d5c('0x56')]({'where':{'id':_0x197494['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x8d5c('0x1d')](handleEntityNotFound(_0x44b4e8,null))[_0x8d5c('0x1d')](saveUpdates(_0x197494['body'],null))[_0x8d5c('0x1d')](respondWithResult(_0x44b4e8,null))[_0x8d5c('0x26')](handleError(_0x44b4e8,null));};exports[_0x8d5c('0x32')]=function(_0x4dbb04,_0x46593c){return db['OpenchannelAccount'][_0x8d5c('0x56')]({'where':{'id':_0x4dbb04[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x46593c,null))[_0x8d5c('0x1d')](removeEntity(_0x46593c,null))[_0x8d5c('0x26')](handleError(_0x46593c,null));};exports['describe']=function(_0x5cdbce,_0x2179f2){return db['OpenchannelAccount']['describe']()['then'](respondWithResult(_0x2179f2,null))[_0x8d5c('0x26')](handleError(_0x2179f2,null));};exports[_0x8d5c('0x5f')]=function(_0x394a80,_0x8f83d7,_0x3f7593){if(_0x394a80[_0x8d5c('0x58')]['id']){delete _0x394a80[_0x8d5c('0x58')]['id'];}return db[_0x8d5c('0x3c')][_0x8d5c('0x56')]({'where':{'id':_0x394a80['params']['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x8f83d7,null))[_0x8d5c('0x1d')](function(_0x10dc7b){if(_0x10dc7b){_0x394a80[_0x8d5c('0x58')]['OpenchannelAccountId']=_0x10dc7b['id'];return db[_0x8d5c('0x60')][_0x8d5c('0x57')](_0x394a80[_0x8d5c('0x58')]);}})[_0x8d5c('0x1d')](respondWithResult(_0x8f83d7,null))[_0x8d5c('0x26')](handleError(_0x8f83d7,null));};exports['getDispositions']=function(_0x5eb607,_0x4d60c8,_0x27e959){var _0x2a27dd={'raw':![],'where':{}};var _0x4c284c={};var _0x128819={'count':0x0,'rows':[]};return db[_0x8d5c('0x3c')][_0x8d5c('0x61')]({'where':{'id':_0x5eb607[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x4d60c8,null))[_0x8d5c('0x1d')](function(_0x5d6d66){if(_0x5d6d66){_0x4c284c[_0x8d5c('0x40')]=_[_0x8d5c('0x42')](db[_0x8d5c('0x60')][_0x8d5c('0x3d')]);_0x4c284c[_0x8d5c('0x45')]=_[_0x8d5c('0x42')](_0x5eb607[_0x8d5c('0x45')]);_0x4c284c[_0x8d5c('0x43')]=_[_0x8d5c('0x44')](_0x4c284c[_0x8d5c('0x40')],_0x4c284c['query']);_0x2a27dd['attributes']=_[_0x8d5c('0x44')](_0x4c284c['model'],qs[_0x8d5c('0x47')](_0x5eb607['query'][_0x8d5c('0x47')]));_0x2a27dd['attributes']=_0x2a27dd[_0x8d5c('0x46')][_0x8d5c('0x48')]?_0x2a27dd[_0x8d5c('0x46')]:_0x4c284c[_0x8d5c('0x40')];if(!_0x5eb607[_0x8d5c('0x45')][_0x8d5c('0x49')](_0x8d5c('0x4a'))){_0x2a27dd[_0x8d5c('0x2a')]=qs['limit'](_0x5eb607[_0x8d5c('0x45')]['limit']);_0x2a27dd[_0x8d5c('0x28')]=qs[_0x8d5c('0x28')](_0x5eb607['query'][_0x8d5c('0x28')]);}_0x2a27dd[_0x8d5c('0x62')]=qs[_0x8d5c('0x4b')](_0x5eb607[_0x8d5c('0x45')]['sort']);_0x2a27dd[_0x8d5c('0x4c')]=qs[_0x8d5c('0x43')](_[_0x8d5c('0x4d')](_0x5eb607[_0x8d5c('0x45')],_0x4c284c[_0x8d5c('0x43')]));_0x2a27dd[_0x8d5c('0x4c')][_0x8d5c('0x63')]=_0x5d6d66['id'];if(_0x5eb607[_0x8d5c('0x45')][_0x8d5c('0x4e')]){_0x2a27dd['where']=_[_0x8d5c('0x4f')](_0x2a27dd[_0x8d5c('0x4c')],{'$or':_['map'](_0x2a27dd['attributes'],function(_0x44fafc){var _0x41d5a7={};_0x41d5a7[_0x44fafc]={'$like':'%'+_0x5eb607[_0x8d5c('0x45')][_0x8d5c('0x4e')]+'%'};return _0x41d5a7;})});}_0x2a27dd=_[_0x8d5c('0x4f')]({},_0x2a27dd,_0x5eb607[_0x8d5c('0x50')]);return db[_0x8d5c('0x60')][_0x8d5c('0x2b')]({'where':_0x2a27dd[_0x8d5c('0x4c')]})['then'](function(_0x38e77c){_0x128819[_0x8d5c('0x2b')]=_0x38e77c;if(_0x5eb607[_0x8d5c('0x45')]['includeAll']){_0x2a27dd[_0x8d5c('0x52')]=[{'all':!![]}];}return db['Disposition'][_0x8d5c('0x53')](_0x2a27dd);})['then'](function(_0xe720c9){_0x128819[_0x8d5c('0x64')]=_0xe720c9;return _0x128819;});}})[_0x8d5c('0x1d')](respondWithFilteredResult(_0x4d60c8,_0x2a27dd))[_0x8d5c('0x26')](handleError(_0x4d60c8,null));};exports['removeDispositions']=function(_0x27781e,_0x434d40,_0x3b11ec){return db[_0x8d5c('0x3c')][_0x8d5c('0x56')]({'where':{'id':_0x27781e[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x434d40,null))[_0x8d5c('0x1d')](function(_0x3b0aba){if(_0x3b0aba){return _0x3b0aba[_0x8d5c('0x65')](_0x27781e['query'][_0x8d5c('0x66')]);}})[_0x8d5c('0x1d')](respondWithStatusCode(_0x434d40,null))[_0x8d5c('0x26')](handleError(_0x434d40,null));};exports[_0x8d5c('0x67')]=function(_0x18ea45,_0x2920ab,_0xf5bc46){if(_0x18ea45[_0x8d5c('0x58')]['id']){delete _0x18ea45[_0x8d5c('0x58')]['id'];}return db[_0x8d5c('0x3c')]['find']({'where':{'id':_0x18ea45['params']['id']}})['then'](handleEntityNotFound(_0x2920ab,null))['then'](function(_0x3ea6bf){if(_0x3ea6bf){_0x18ea45[_0x8d5c('0x58')][_0x8d5c('0x63')]=_0x3ea6bf['id'];return db[_0x8d5c('0x68')][_0x8d5c('0x57')](_0x18ea45['body']);}})[_0x8d5c('0x1d')](respondWithResult(_0x2920ab,null))[_0x8d5c('0x26')](handleError(_0x2920ab,null));};exports['getAnswers']=function(_0x3c101e,_0x13e1ef,_0x51b4e4){var _0x382f80={'raw':![],'where':{}};var _0x132228={};var _0x1b4915={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x3c101e[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x13e1ef,null))['then'](function(_0xc7559e){if(_0xc7559e){_0x132228[_0x8d5c('0x40')]=_['keys'](db['CannedAnswer'][_0x8d5c('0x3d')]);_0x132228[_0x8d5c('0x45')]=_['keys'](_0x3c101e[_0x8d5c('0x45')]);_0x132228[_0x8d5c('0x43')]=_[_0x8d5c('0x44')](_0x132228[_0x8d5c('0x40')],_0x132228['query']);_0x382f80[_0x8d5c('0x46')]=_[_0x8d5c('0x44')](_0x132228[_0x8d5c('0x40')],qs[_0x8d5c('0x47')](_0x3c101e[_0x8d5c('0x45')][_0x8d5c('0x47')]));_0x382f80[_0x8d5c('0x46')]=_0x382f80[_0x8d5c('0x46')][_0x8d5c('0x48')]?_0x382f80[_0x8d5c('0x46')]:_0x132228[_0x8d5c('0x40')];if(!_0x3c101e[_0x8d5c('0x45')]['hasOwnProperty'](_0x8d5c('0x4a'))){_0x382f80['limit']=qs['limit'](_0x3c101e[_0x8d5c('0x45')]['limit']);_0x382f80[_0x8d5c('0x28')]=qs[_0x8d5c('0x28')](_0x3c101e[_0x8d5c('0x45')][_0x8d5c('0x28')]);}_0x382f80['order']=qs[_0x8d5c('0x4b')](_0x3c101e[_0x8d5c('0x45')]['sort']);_0x382f80['where']=qs[_0x8d5c('0x43')](_['pick'](_0x3c101e['query'],_0x132228['filters']));_0x382f80[_0x8d5c('0x4c')][_0x8d5c('0x63')]=_0xc7559e['id'];if(_0x3c101e[_0x8d5c('0x45')][_0x8d5c('0x4e')]){_0x382f80['where']=_['merge'](_0x382f80['where'],{'$or':_[_0x8d5c('0x41')](_0x382f80[_0x8d5c('0x46')],function(_0x1fc05a){var _0x3a7613={};_0x3a7613[_0x1fc05a]={'$like':'%'+_0x3c101e['query'][_0x8d5c('0x4e')]+'%'};return _0x3a7613;})});}_0x382f80=_[_0x8d5c('0x4f')]({},_0x382f80,_0x3c101e['options']);return db[_0x8d5c('0x68')][_0x8d5c('0x2b')]({'where':_0x382f80[_0x8d5c('0x4c')]})[_0x8d5c('0x1d')](function(_0xe0b650){_0x1b4915['count']=_0xe0b650;if(_0x3c101e[_0x8d5c('0x45')][_0x8d5c('0x51')]){_0x382f80['include']=[{'all':!![]}];}return db[_0x8d5c('0x68')][_0x8d5c('0x53')](_0x382f80);})[_0x8d5c('0x1d')](function(_0x237813){_0x1b4915[_0x8d5c('0x64')]=_0x237813;return _0x1b4915;});}})[_0x8d5c('0x1d')](respondWithFilteredResult(_0x13e1ef,_0x382f80))[_0x8d5c('0x26')](handleError(_0x13e1ef,null));};exports[_0x8d5c('0x69')]=function(_0x179779,_0x497487,_0x44e1c0){return db[_0x8d5c('0x3c')][_0x8d5c('0x56')]({'where':{'id':_0x179779[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x497487,null))[_0x8d5c('0x1d')](function(_0x5f4d8a){if(_0x5f4d8a){return _0x5f4d8a[_0x8d5c('0x69')](_0x179779['query'][_0x8d5c('0x66')]);}})[_0x8d5c('0x1d')](respondWithStatusCode(_0x497487,null))[_0x8d5c('0x26')](handleError(_0x497487,null));};exports[_0x8d5c('0x6a')]=function(_0x645767,_0x273efb,_0x161b74){var _0x148a12={'body':_0x645767[_0x8d5c('0x58')],'channel':_0x8d5c('0x6b')};var _0x48c112=[];var _0x469579=[];var _0x5702c9={};var _0x471416=![];return db[_0x8d5c('0x6c')][_0x8d5c('0x6d')]()['then'](function(_0x5c3b75){if(!_0x5c3b75){throw new db[(_0x8d5c('0x6e'))][(_0x8d5c('0x6f'))](_0x8d5c('0x70'));}_0x48c112=_[_0x8d5c('0x71')](_[_0x8d5c('0x42')](_0x5c3b75),[_0x8d5c('0x72'),_0x8d5c('0x73')]);_0x469579=_[_0x8d5c('0x71')](_['keys'](_0x5c3b75),[_0x8d5c('0x72'),'updatedAt',_0x8d5c('0x74'),_0x8d5c('0x75')]);if(_0x645767[_0x8d5c('0x58')]['id']){delete _0x645767[_0x8d5c('0x58')]['id'];}if(_['isNil'](_0x645767[_0x8d5c('0x58')][_0x8d5c('0x76')])){throw new db[(_0x8d5c('0x6e'))][(_0x8d5c('0x6f'))](_0x8d5c('0x77'));}if(_[_0x8d5c('0x78')](_0x645767['body']['body'])||_0x645767[_0x8d5c('0x58')]['body']===''){throw new db[(_0x8d5c('0x6e'))][(_0x8d5c('0x6f'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8d5c('0x78')](_0x645767[_0x8d5c('0x58')][_0x8d5c('0x79')])){throw new db[(_0x8d5c('0x6e'))]['ValidationError'](_0x8d5c('0x7a')+_0x469579);}if(!_[_0x8d5c('0x7b')](_0x469579,_0x645767[_0x8d5c('0x58')][_0x8d5c('0x79')])){throw new db[(_0x8d5c('0x6e'))][(_0x8d5c('0x6f'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x469579);}_0x5702c9[_0x645767[_0x8d5c('0x58')][_0x8d5c('0x79')]]=_0x645767[_0x8d5c('0x58')][_0x8d5c('0x76')];})[_0x8d5c('0x1d')](function(){return db[_0x8d5c('0x3c')]['find']({'where':{'id':_0x645767[_0x8d5c('0x55')]['id']},'include':[{'model':db[_0x8d5c('0x7c')],'as':_0x8d5c('0x7d'),'include':[{'model':db[_0x8d5c('0x6c')],'as':_0x8d5c('0x7e'),'where':_0x5702c9,'limit':0x1,'order':[[_0x8d5c('0x73'),'DESC']]}]},{'model':db['OpenchannelApplication'],'as':_0x8d5c('0x7f')}]});})[_0x8d5c('0x1d')](handleEntityNotFound(_0x273efb,null))['then'](function(_0x19e6af){if(_0x19e6af&&_0x19e6af['List']){_0x148a12[_0x8d5c('0x80')]=_0x19e6af;_0x148a12[_0x8d5c('0x81')]=_0x19e6af[_0x8d5c('0x7f')];_0x148a12[_0x8d5c('0x82')]=_0x19e6af['List'];_0x148a12[_0x8d5c('0x81')]=_[_0x8d5c('0x83')](_0x148a12[_0x8d5c('0x81')],['priority'],['asc']);if(_0x148a12[_0x8d5c('0x80')][_0x8d5c('0x7f')]){delete _0x148a12[_0x8d5c('0x80')]['Applications'];}if(_0x148a12[_0x8d5c('0x80')][_0x8d5c('0x7d')]&&_0x148a12[_0x8d5c('0x80')][_0x8d5c('0x7d')]['Contacts'][_0x8d5c('0x48')]){return _0x148a12['account'][_0x8d5c('0x7d')][_0x8d5c('0x7e')][0x0];}var _0x541ade=_[_0x8d5c('0x17')](_0x645767[_0x8d5c('0x58')],{'firstName':_0x645767[_0x8d5c('0x58')]['from'],'ListId':_0x19e6af['ListId']});_0x541ade[_0x645767[_0x8d5c('0x58')]['mapKey']]=_0x645767['body'][_0x8d5c('0x76')];return db[_0x8d5c('0x6c')][_0x8d5c('0x57')](_0x541ade,{'fields':_0x48c112,'raw':!![]});}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x273efb,null))[_0x8d5c('0x1d')](function(_0x4f35fe){_0x148a12[_0x8d5c('0x84')]=_0x4f35fe;if(_0x4f35fe){var _0x4d2917={'ContactId':_0x4f35fe['id'],'OpenchannelAccountId':_0x645767['params']['id'],'from':(_0x4f35fe[_0x8d5c('0x85')]||'')+'\x20'+(_0x4f35fe['lastName']||'')};var _0x3eb790={'OpenchannelAccountId':_0x645767[_0x8d5c('0x55')]['id'],'closed':![]};if(_0x645767[_0x8d5c('0x58')][_0x8d5c('0x86')]){_0x3eb790[_0x8d5c('0x86')]=_0x645767[_0x8d5c('0x58')][_0x8d5c('0x86')];return db[_0x8d5c('0x87')][_0x8d5c('0x56')]({'where':_0x3eb790})[_0x8d5c('0x1d')](function(_0x47d128){if(_0x47d128){return[_0x47d128,![]];}_0x4d2917[_0x8d5c('0x86')]=_0x645767[_0x8d5c('0x58')][_0x8d5c('0x86')];_0x4d2917[_0x8d5c('0x88')]=_0x645767['body'][_0x8d5c('0x88')];return db[_0x8d5c('0x87')][_0x8d5c('0x57')](_0x4d2917)[_0x8d5c('0x1d')](function(_0x1e79cd){return[_0x1e79cd,!![]];});});}else{_0x3eb790[_0x8d5c('0x86')]=null;}_0x3eb790[_0x8d5c('0x89')]=_0x4f35fe['id'];return db[_0x8d5c('0x87')][_0x8d5c('0x56')]({'where':_0x3eb790})[_0x8d5c('0x1d')](function(_0x34a9b2){if(_0x34a9b2){return[_0x34a9b2,![]];}return db[_0x8d5c('0x87')]['create'](_0x4d2917)[_0x8d5c('0x1d')](function(_0x58151f){return[_0x58151f,!![]];});});}})[_0x8d5c('0x8a')](function(_0x3a27db,_0x28caef){if(_0x3a27db){_0x471416=_0x28caef;if(!_0x28caef){var _0x7c5dd1={'from':(_0x148a12[_0x8d5c('0x84')][_0x8d5c('0x85')]||'')+'\x20'+(_0x148a12['contact'][_0x8d5c('0x8b')]||'')};if(_0x645767[_0x8d5c('0x58')][_0x8d5c('0x86')]&&_0x645767[_0x8d5c('0x58')][_0x8d5c('0x8c')]&&_0x645767[_0x8d5c('0x58')]['threadId']!=_0x645767[_0x8d5c('0x58')][_0x8d5c('0x8c')]){_0x7c5dd1['threadId']=_0x645767[_0x8d5c('0x58')][_0x8d5c('0x8c')];}return _0x3a27db[_0x8d5c('0x31')](_0x7c5dd1);}else{return _0x3a27db;}}})[_0x8d5c('0x1d')](function(_0x3d3bd3){_0x148a12[_0x8d5c('0x8d')]=_0x3d3bd3[_0x8d5c('0x5a')]({'plain':!![]});_0x148a12['interaction']['created']=_0x471416;if(_0x148a12['interaction'][_0x8d5c('0x8e')]){if(_0x148a12[_0x8d5c('0x80')]['autoclose']){_0x148a12[_0x8d5c('0x81')][_0x8d5c('0x8f')]({'id':0x0,'priority':_0x148a12['applications'][_0x8d5c('0x48')]+0x1,'app':_0x8d5c('0x90'),'appdata':'unmanaged','interval':'*,*,*,*'});}}return db[_0x8d5c('0x91')][_0x8d5c('0x57')]({'body':_0x645767[_0x8d5c('0x58')]['body'],'OpenchannelAccountId':_0x645767[_0x8d5c('0x55')]['id'],'OpenchannelInteractionId':_0x3d3bd3['id'],'direction':'in','ContactId':_0x148a12['contact']['id'],'AttachmentId':_0x645767[_0x8d5c('0x58')][_0x8d5c('0x92')]});})[_0x8d5c('0x1d')](function(_0x17196d){_0x148a12['message']=_0x17196d;if(_0x148a12[_0x8d5c('0x8d')][_0x8d5c('0x93')]){return db[_0x8d5c('0x94')][_0x8d5c('0x56')]({'attributes':['id',_0x8d5c('0x37')],'where':{'id':_0x148a12['interaction'][_0x8d5c('0x93')]}})[_0x8d5c('0x1d')](function(_0x535634){if(_0x535634){_0x148a12[_0x8d5c('0x81')][_0x8d5c('0x95')]({'id':0x0,'priority':0x0,'app':_0x8d5c('0x96'),'appdata':_0x535634[_0x8d5c('0x37')]+','+(_0x148a12[_0x8d5c('0x80')][_0x8d5c('0x97')]||0xa),'interval':_0x8d5c('0x98')});_0x148a12[_0x8d5c('0x99')]=![];}return respondWithRpcPromise('Start',_0x8d5c('0x9a'),_0x148a12);});}return respondWithRpcPromise(_0x8d5c('0x9b'),'startRouting',_0x148a12);})[_0x8d5c('0x1d')](function(_0x5c1709){respondWithRpcPromise(_0x8d5c('0x9c'),_0x8d5c('0x9c'),{'event':_0x8d5c('0x6a'),'message':_0x5c1709},client9002);return _0x5c1709;})[_0x8d5c('0x1d')](respondWithResult(_0x273efb,null))[_0x8d5c('0x26')](handleError(_0x273efb,null));};exports['addApplications']=function(_0x800a5d,_0x3dd29c){var _0xacf151=_0x800a5d[_0x8d5c('0x55')]['id'];var _0x39325b=_0x800a5d[_0x8d5c('0x58')];var _0x529e72=0xc8;var _0x36964f=null;return db[_0x8d5c('0x9d')][_0x8d5c('0x9e')]({'isolationLevel':db[_0x8d5c('0x9d')][_0x8d5c('0x9f')][_0x8d5c('0xa0')][_0x8d5c('0xa1')]},function(_0x48686e){return db[_0x8d5c('0x3c')][_0x8d5c('0x61')]({'where':{'id':_0xacf151},'transaction':_0x48686e})[_0x8d5c('0x1d')](function(_0x33132a){if(_0x33132a){return db[_0x8d5c('0xa2')]['destroy']({'where':{'OpenchannelAccountId':_0xacf151},'transaction':_0x48686e})[_0x8d5c('0x1d')](function(){var _0x4d5211=_[_0x8d5c('0x41')](_0x39325b,function(_0x458d69){_0x458d69[_0x8d5c('0x63')]=_0xacf151;return _0x458d69;});return db['OpenchannelApplication']['bulkCreate'](_0x4d5211,{'transaction':_0x48686e});});}else{_0x529e72=0x194;_0x36964f=[];}});})[_0x8d5c('0x1d')](function(){if(_0x529e72!==0x194){return db[_0x8d5c('0xa2')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0xacf151},'order':'priority'})['then'](function(_0x52c9a5){_0x36964f=_0x52c9a5;});}})[_0x8d5c('0x26')](function(_0x3b74e1){_0x529e72=0x1f4;logger[_0x8d5c('0x23')](_0x3b74e1['stack']);if(_0x3b74e1['name']){delete _0x3b74e1[_0x8d5c('0x37')];}_0x36964f=_0x3b74e1;})['finally'](function(){if(_0x36964f===null){_0x3dd29c['sendStatus'](_0x529e72);}else{if(_0x529e72===0x1f4){_0x3dd29c[_0x8d5c('0x2c')](_0x529e72)[_0x8d5c('0x38')](_0x36964f);}else{_0x3dd29c[_0x8d5c('0x2c')](_0x529e72)[_0x8d5c('0xa3')](_0x36964f);}}});};exports[_0x8d5c('0xa4')]=function(_0x7b2582,_0x3b40e9,_0x2e4a77){var _0x2a4a02={};var _0x382115={};var _0x3db74c;var _0x3ceec6;return db['OpenchannelAccount']['findOne']({'where':{'id':_0x7b2582[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x3b40e9,null))['then'](function(_0xea5125){if(_0xea5125){_0x3db74c=_0xea5125;_0x382115[_0x8d5c('0x40')]=_['keys'](db[_0x8d5c('0xa2')][_0x8d5c('0x3d')]);_0x382115['query']=_[_0x8d5c('0x42')](_0x7b2582['query']);_0x382115[_0x8d5c('0x43')]=_['intersection'](_0x382115[_0x8d5c('0x40')],_0x382115[_0x8d5c('0x45')]);_0x2a4a02[_0x8d5c('0x46')]=_[_0x8d5c('0x44')](_0x382115['model'],qs['fields'](_0x7b2582[_0x8d5c('0x45')]['fields']));_0x2a4a02[_0x8d5c('0x46')]=_0x2a4a02['attributes'][_0x8d5c('0x48')]?_0x2a4a02[_0x8d5c('0x46')]:_0x382115[_0x8d5c('0x40')];_0x2a4a02[_0x8d5c('0x62')]=qs[_0x8d5c('0x4b')](_0x7b2582[_0x8d5c('0x45')][_0x8d5c('0x4b')]);_0x2a4a02[_0x8d5c('0x4c')]=qs['filters'](_[_0x8d5c('0x4d')](_0x7b2582[_0x8d5c('0x45')],_0x382115[_0x8d5c('0x43')]));if(_0x7b2582['query']['filter']){_0x2a4a02['where']=_[_0x8d5c('0x4f')](_0x2a4a02[_0x8d5c('0x4c')],{'$or':_[_0x8d5c('0x41')](_0x2a4a02[_0x8d5c('0x46')],function(_0x32006e){var _0x4654d6={};_0x4654d6[_0x32006e]={'$like':'%'+_0x7b2582['query'][_0x8d5c('0x4e')]+'%'};return _0x4654d6;})});}_0x2a4a02=_[_0x8d5c('0x4f')]({},_0x2a4a02,_0x7b2582['options']);return _0x3db74c[_0x8d5c('0xa4')](_0x2a4a02);}})[_0x8d5c('0x1d')](function(_0x4ff791){if(_0x4ff791){_0x3ceec6=_0x4ff791[_0x8d5c('0x48')];if(!_0x7b2582[_0x8d5c('0x45')]['hasOwnProperty'](_0x8d5c('0x4a'))){_0x2a4a02['limit']=qs[_0x8d5c('0x2a')](_0x7b2582['query'][_0x8d5c('0x2a')]);_0x2a4a02[_0x8d5c('0x28')]=qs['offset'](_0x7b2582['query'][_0x8d5c('0x28')]);}return _0x3db74c[_0x8d5c('0xa4')](_0x2a4a02);}})['then'](function(_0x288b0c){if(_0x288b0c){return _0x288b0c?{'count':_0x3ceec6,'rows':_0x288b0c}:null;}})['then'](respondWithResult(_0x3b40e9,null))['catch'](handleError(_0x3b40e9,null));};exports[_0x8d5c('0xa5')]=function(_0x461455,_0x3e7da7,_0x244c7a){var _0xa340e7={'raw':![],'where':{}};var _0x2b5297={};var _0x4967ef={'count':0x0,'rows':[]};return db[_0x8d5c('0x3c')][_0x8d5c('0x61')]({'where':{'id':_0x461455[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x3e7da7,null))['then'](function(_0x1414b1){if(_0x1414b1){_0x2b5297[_0x8d5c('0x40')]=_[_0x8d5c('0x42')](db[_0x8d5c('0x87')][_0x8d5c('0x3d')]);_0x2b5297[_0x8d5c('0x45')]=_['keys'](_0x461455[_0x8d5c('0x45')]);_0x2b5297[_0x8d5c('0x43')]=_[_0x8d5c('0x44')](_0x2b5297[_0x8d5c('0x40')],_0x2b5297[_0x8d5c('0x45')]);_0xa340e7[_0x8d5c('0x46')]=_['intersection'](_0x2b5297[_0x8d5c('0x40')],qs[_0x8d5c('0x47')](_0x461455[_0x8d5c('0x45')][_0x8d5c('0x47')]));_0xa340e7[_0x8d5c('0x46')]=_0xa340e7['attributes'][_0x8d5c('0x48')]?_0xa340e7[_0x8d5c('0x46')]:_0x2b5297[_0x8d5c('0x40')];if(!_0x461455[_0x8d5c('0x45')][_0x8d5c('0x49')](_0x8d5c('0x4a'))){_0xa340e7[_0x8d5c('0x2a')]=qs[_0x8d5c('0x2a')](_0x461455['query'][_0x8d5c('0x2a')]);_0xa340e7[_0x8d5c('0x28')]=qs[_0x8d5c('0x28')](_0x461455[_0x8d5c('0x45')][_0x8d5c('0x28')]);}_0xa340e7[_0x8d5c('0x62')]=qs[_0x8d5c('0x4b')](_0x461455[_0x8d5c('0x45')]['sort']);_0xa340e7['where']=qs['filters'](_[_0x8d5c('0x4d')](_0x461455[_0x8d5c('0x45')],_0x2b5297[_0x8d5c('0x43')]));_0xa340e7[_0x8d5c('0x4c')][_0x8d5c('0x63')]=_0x1414b1['id'];if(_0x461455[_0x8d5c('0x45')][_0x8d5c('0x4e')]){_0xa340e7[_0x8d5c('0x4c')]=_['merge'](_0xa340e7[_0x8d5c('0x4c')],{'$or':_['map'](_0xa340e7[_0x8d5c('0x46')],function(_0x5ada89){var _0x113512={};_0x113512[_0x5ada89]={'$like':'%'+_0x461455[_0x8d5c('0x45')][_0x8d5c('0x4e')]+'%'};return _0x113512;})});}_0xa340e7=_[_0x8d5c('0x4f')]({},_0xa340e7,_0x461455['options']);return db[_0x8d5c('0x87')][_0x8d5c('0x2b')]({'where':_0xa340e7[_0x8d5c('0x4c')]})[_0x8d5c('0x1d')](function(_0x100903){_0x4967ef[_0x8d5c('0x2b')]=_0x100903;if(_0x461455[_0x8d5c('0x45')][_0x8d5c('0x51')]){_0xa340e7[_0x8d5c('0x52')]=[{'model':db[_0x8d5c('0x6c')],'as':_0x8d5c('0xa6'),'required':![]},{'model':db[_0x8d5c('0x94')],'as':_0x8d5c('0xa7'),'attributes':[_0x8d5c('0x37'),_0x8d5c('0xa8'),_0x8d5c('0xa9')],'required':![]},{'model':db[_0x8d5c('0xaa')],'as':_0x8d5c('0xab'),'attributes':['id',_0x8d5c('0x37'),_0x8d5c('0xac')],'where':_0x461455[_0x8d5c('0x45')][_0x8d5c('0xad')]?{'id':_0x461455[_0x8d5c('0x45')][_0x8d5c('0xad')]}:undefined,'required':_0x461455[_0x8d5c('0x45')][_0x8d5c('0xad')]?!![]:![]}];}return db[_0x8d5c('0x87')][_0x8d5c('0x53')](_0xa340e7);})[_0x8d5c('0x1d')](function(_0x417412){_0x4967ef[_0x8d5c('0x64')]=_0x417412;return _0x4967ef;});}})[_0x8d5c('0x1d')](respondWithFilteredResult(_0x3e7da7,_0xa340e7))['catch'](handleError(_0x3e7da7,null));};exports[_0x8d5c('0xae')]=function(_0x2b68e2,_0x30976a,_0x30610d){return db[_0x8d5c('0x3c')][_0x8d5c('0x56')]({'where':{'id':_0x2b68e2[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x30976a,null))[_0x8d5c('0x1d')](function(_0x70a4e){if(_0x70a4e){return _0x70a4e[_0x8d5c('0xae')](_0x2b68e2[_0x8d5c('0x58')]['ids'],_[_0x8d5c('0xaf')](_0x2b68e2[_0x8d5c('0x58')],[_0x8d5c('0x66'),'id'])||{})[_0x8d5c('0x8a')](function(_0x1db107){for(var _0x3af985=0x0;_0x3af985<_0x2b68e2['body'][_0x8d5c('0x66')]['length'];_0x3af985+=0x1){socket['emit'](_0x8d5c('0xb0'),{'UserId':Number(_0x2b68e2[_0x8d5c('0x58')][_0x8d5c('0x66')][_0x3af985]),'OpenchannelAccountId':Number(_0x2b68e2['params']['id'])});}return _0x1db107;});}})[_0x8d5c('0x1d')](respondWithResult(_0x30976a,null))[_0x8d5c('0x26')](handleError(_0x30976a,null));};exports['removeAgents']=function(_0x403752,_0x4a0e95,_0x36aadd){return db[_0x8d5c('0x3c')]['find']({'where':{'id':_0x403752[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0x4a0e95,null))['then'](function(_0x292bee){if(_0x292bee){return _0x292bee[_0x8d5c('0xb1')](_0x403752[_0x8d5c('0x45')][_0x8d5c('0x66')])[_0x8d5c('0x1d')](function(){if(_[_0x8d5c('0xb2')](_0x403752[_0x8d5c('0x45')][_0x8d5c('0x66')])){for(var _0x13a306=0x0;_0x13a306<_0x403752[_0x8d5c('0x45')][_0x8d5c('0x66')]['length'];_0x13a306+=0x1){socket['emit'](_0x8d5c('0xb3'),{'UserId':Number(_0x403752[_0x8d5c('0x45')]['ids'][_0x13a306]),'OpenchannelAccountId':Number(_0x403752[_0x8d5c('0x55')]['id'])});}}else{socket[_0x8d5c('0xb4')](_0x8d5c('0xb3'),{'UserId':Number(_0x403752[_0x8d5c('0x45')][_0x8d5c('0x66')]),'OpenchannelAccountId':Number(_0x403752[_0x8d5c('0x55')]['id'])});}});}})[_0x8d5c('0x1d')](respondWithStatusCode(_0x4a0e95,null))[_0x8d5c('0x26')](handleError(_0x4a0e95,null));};exports[_0x8d5c('0xb5')]=function(_0x47d2df,_0x35e111,_0x5932ee){var _0x257248={};var _0x21fbb8={};var _0x4bde69;var _0x4e021c;return db['OpenchannelAccount'][_0x8d5c('0x61')]({'where':{'id':_0x47d2df[_0x8d5c('0x55')]['id']}})['then'](handleEntityNotFound(_0x35e111,null))['then'](function(_0x5f1fd7){if(_0x5f1fd7){_0x4bde69=_0x5f1fd7;_0x21fbb8[_0x8d5c('0x40')]=_[_0x8d5c('0x42')](db[_0x8d5c('0x94')][_0x8d5c('0x3d')]);_0x21fbb8[_0x8d5c('0x45')]=_['keys'](_0x47d2df[_0x8d5c('0x45')]);_0x21fbb8['filters']=_[_0x8d5c('0x44')](_0x21fbb8[_0x8d5c('0x40')],_0x21fbb8['query']);_0x257248[_0x8d5c('0x46')]=_[_0x8d5c('0x44')](_0x21fbb8[_0x8d5c('0x40')],qs[_0x8d5c('0x47')](_0x47d2df[_0x8d5c('0x45')][_0x8d5c('0x47')]));_0x257248[_0x8d5c('0x46')]=_0x257248[_0x8d5c('0x46')][_0x8d5c('0x48')]?_0x257248['attributes']:_0x21fbb8[_0x8d5c('0x40')];_0x257248[_0x8d5c('0x62')]=qs[_0x8d5c('0x4b')](_0x47d2df[_0x8d5c('0x45')][_0x8d5c('0x4b')]);_0x257248[_0x8d5c('0x4c')]=qs[_0x8d5c('0x43')](_[_0x8d5c('0x4d')](_0x47d2df[_0x8d5c('0x45')],_0x21fbb8['filters']));if(_0x47d2df[_0x8d5c('0x45')][_0x8d5c('0x4e')]){_0x257248[_0x8d5c('0x4c')]=_[_0x8d5c('0x4f')](_0x257248[_0x8d5c('0x4c')],{'$or':_[_0x8d5c('0x41')](_0x257248[_0x8d5c('0x46')],function(_0x2ac8f6){var _0x1ec82b={};_0x1ec82b[_0x2ac8f6]={'$like':'%'+_0x47d2df['query'][_0x8d5c('0x4e')]+'%'};return _0x1ec82b;})});}_0x257248=_['merge']({},_0x257248,_0x47d2df['options']);return _0x4bde69[_0x8d5c('0xb5')](_0x257248);}})['then'](function(_0x294687){if(_0x294687){_0x4e021c=_0x294687[_0x8d5c('0x48')];if(!_0x47d2df['query'][_0x8d5c('0x49')](_0x8d5c('0x4a'))){_0x257248[_0x8d5c('0x2a')]=qs['limit'](_0x47d2df['query'][_0x8d5c('0x2a')]);_0x257248[_0x8d5c('0x28')]=qs[_0x8d5c('0x28')](_0x47d2df[_0x8d5c('0x45')][_0x8d5c('0x28')]);}return _0x4bde69[_0x8d5c('0xb5')](_0x257248);}})['then'](function(_0x14202e){if(_0x14202e){return _0x14202e?{'count':_0x4e021c,'rows':_0x14202e}:null;}})[_0x8d5c('0x1d')](respondWithResult(_0x35e111,null))[_0x8d5c('0x26')](handleError(_0x35e111,null));};exports[_0x8d5c('0x38')]=function(_0x4fc1ce,_0xc0a8f1,_0x5f49e1){var _0x8ced5c,_0x5918f2,_0x5989dd;if(_[_0x8d5c('0x78')](_0x4fc1ce[_0x8d5c('0x58')][_0x8d5c('0x58')])||_0x4fc1ce[_0x8d5c('0x58')][_0x8d5c('0x58')]===''){throw new db['Sequelize']['ValidationError'](_0x8d5c('0xb6'));}if(_['isNil'](_0x4fc1ce[_0x8d5c('0x58')]['to'])){}_0x8ced5c=_0x4fc1ce['body']['to'];return db[_0x8d5c('0x3c')][_0x8d5c('0x61')]({'where':{'id':_0x4fc1ce[_0x8d5c('0x55')]['id']}})[_0x8d5c('0x1d')](handleEntityNotFound(_0xc0a8f1,null))[_0x8d5c('0x1d')](function(_0x74759a){if(_0x74759a){return db[_0x8d5c('0x3c')][_0x8d5c('0x56')]({'where':{'id':_0x74759a['id']},'include':[{'model':db[_0x8d5c('0x7c')],'as':'List','include':[{'model':db[_0x8d5c('0x6c')],'as':_0x8d5c('0x7e'),'where':{[_0x74759a[_0x8d5c('0x79')]]:_0x8ced5c},'limit':0x1,'order':[[_0x8d5c('0x73'),_0x8d5c('0xb7')]]}]}]})['then'](handleEntityNotFound(_0xc0a8f1,null))[_0x8d5c('0x1d')](function(_0x189e3e){if(_0x189e3e&&_0x189e3e['List']){_0x5918f2=_0x189e3e[_0x8d5c('0x5a')]({'plain':!![]});if(_0x5918f2[_0x8d5c('0x7d')]&&_0x5918f2[_0x8d5c('0x7d')][_0x8d5c('0x7e')]['length']){return _0x5918f2[_0x8d5c('0x7d')][_0x8d5c('0x7e')][0x0];}return db[_0x8d5c('0x6c')][_0x8d5c('0x57')](_['defaults'](_0x4fc1ce[_0x8d5c('0x58')],{'firstName':_0x8ced5c,[_0x189e3e[_0x8d5c('0x79')]]:_0x8ced5c,'phone':_0x8ced5c,'ListId':_0x5918f2[_0x8d5c('0x75')]}));}})[_0x8d5c('0x1d')](handleEntityNotFound(_0xc0a8f1,null))['then'](function(_0x230573){if(_0x230573){_0x5989dd=_0x230573;return db['OpenchannelInteraction'][_0x8d5c('0x56')]({'where':{'ContactId':_0x5989dd['id'],'closed':![],'OpenchannelAccountId':_0x5918f2['id']}})['then'](function(_0x247899){if(_0x247899){return[_0x247899,![]];}return db['OpenchannelInteraction'][_0x8d5c('0x57')]({'UserId':_0x4fc1ce[_0x8d5c('0x59')]['id'],'ContactId':_0x5989dd['id'],'OpenchannelAccountId':_0x5918f2['id'],'lastMsgDirection':_0x8d5c('0xb8'),'Messages':[_[_0x8d5c('0x4f')](_0x4fc1ce[_0x8d5c('0x58')],{'read':![],'body':_0x4fc1ce[_0x8d5c('0x58')]['body'],'OpenchannelAccountId':_0x5918f2['id'],'UserId':_0x4fc1ce[_0x8d5c('0x59')]['id'],'ContactId':_0x5989dd['id']})]},{'include':[{'model':db[_0x8d5c('0x91')],'as':_0x8d5c('0xb9')}]})[_0x8d5c('0x1d')](function(_0x1e4a48){return[_0x1e4a48,!![]];});});}})[_0x8d5c('0x8a')](function(_0x3540a5,_0x4407e8){if(_0x4407e8){return _0x3540a5;}return db[_0x8d5c('0x91')][_0x8d5c('0x57')](_['merge'](_0x4fc1ce[_0x8d5c('0x58')],{'read':![],'body':_0x4fc1ce['body'][_0x8d5c('0x58')],'OpenchannelAccountId':_0x5918f2['id'],'OpenchannelInteractionId':_0x3540a5['id'],'UserId':_0x4fc1ce[_0x8d5c('0x59')]['id'],'ContactId':_0x5989dd['id']}))[_0x8d5c('0x1d')](function(_0x3e43a8){_0x3540a5[_0x8d5c('0xba')][_0x8d5c('0xb9')]=[];_0x3540a5[_0x8d5c('0xba')][_0x8d5c('0xb9')][_0x8d5c('0x8f')](_0x3e43a8[_0x8d5c('0xba')]);return _0x3540a5;});});}})[_0x8d5c('0x1d')](respondWithResult(_0xc0a8f1,null))[_0x8d5c('0x26')](handleError(_0xc0a8f1,null));};
\ No newline at end of file
+var _0x8846=['fields','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','length','hasOwnProperty','pick','removeDispositions','ids','CannedAnswer','getAnswers','findAll','removeAnswers','notify','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','Contacts','DESC','OpenchannelApplication','Applications','account','applications','list','List','orderBy','asc','defaults','create','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','priority','stack','finally','json','getApplications','getInteractions','Contact','Owner','fullname','internal','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','push','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','get','OpenchannelAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x8846,0x13a));var _0x6884=function(_0x4b9e10,_0x2a1cc3){_0x4b9e10=_0x4b9e10-0x0;var _0x4f7089=_0x8846[_0x4b9e10];return _0x4f7089;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6884('0x0'));var zipdir=require(_0x6884('0x1'));var jsonpatch=require(_0x6884('0x2'));var rp=require(_0x6884('0x3'));var moment=require('moment');var BPromise=require(_0x6884('0x4'));var Mustache=require(_0x6884('0x5'));var util=require(_0x6884('0x6'));var path=require('path');var sox=require(_0x6884('0x7'));var csv=require(_0x6884('0x8'));var ejs=require(_0x6884('0x9'));var fs=require('fs');var fs_extra=require(_0x6884('0xa'));var _=require(_0x6884('0xb'));var squel=require(_0x6884('0xc'));var crypto=require(_0x6884('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x6884('0xe'));var toCsv=require(_0x6884('0x8'));var querystring=require('querystring');var Papa=require(_0x6884('0xf'));var Redis=require('ioredis');var authService=require(_0x6884('0x10'));var qs=require(_0x6884('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6884('0x12'));var logger=require(_0x6884('0x13'))(_0x6884('0x14'));var utils=require(_0x6884('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x6884('0x16'));var db=require(_0x6884('0x17'))['db'];config[_0x6884('0x18')]=_['defaults'](config[_0x6884('0x18')],{'host':_0x6884('0x19'),'port':0x18eb});var socket=require(_0x6884('0x1a'))(new Redis(config[_0x6884('0x18')]));require(_0x6884('0x1b'))[_0x6884('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x6884('0x1d')][_0x6884('0x1e')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x595a19,_0x2255b8,_0x1d0f51,_0xdf91e7){return new BPromise(function(_0xd28b42,_0x4814f2){var _0x373f5=_0xdf91e7||client;return _0x373f5[_0x6884('0x1f')](_0x595a19,_0x1d0f51)[_0x6884('0x20')](function(_0x5b1e88){logger[_0x6884('0x21')](_0x6884('0x22'),_0x2255b8,_0x6884('0x23'));logger[_0x6884('0x24')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x2255b8,'request\x20sent',JSON['stringify'](_0x5b1e88));if(_0x5b1e88[_0x6884('0x25')]){if(_0x5b1e88[_0x6884('0x25')][_0x6884('0x26')]===0x1f4){logger['error'](_0x6884('0x22'),_0x2255b8,_0x5b1e88[_0x6884('0x25')]['message']);return _0x4814f2(_0x5b1e88[_0x6884('0x25')][_0x6884('0x27')]);}logger[_0x6884('0x25')](_0x6884('0x22'),_0x2255b8,_0x5b1e88[_0x6884('0x25')][_0x6884('0x27')]);return _0xd28b42(_0x5b1e88[_0x6884('0x25')][_0x6884('0x27')]);}else{logger[_0x6884('0x21')]('OpenchannelAccount,\x20%s,\x20%s',_0x2255b8,_0x6884('0x23'));_0xd28b42(_0x5b1e88[_0x6884('0x28')][_0x6884('0x27')]);}})['catch'](function(_0x37087c){logger[_0x6884('0x25')](_0x6884('0x22'),_0x2255b8,_0x37087c);_0x4814f2(_0x37087c);});});}function respondWithStatusCode(_0x5728a2,_0x1677ce){_0x1677ce=_0x1677ce||0xcc;return function(_0x5f43b2){if(_0x5f43b2){return _0x5728a2[_0x6884('0x29')](_0x1677ce);}return _0x5728a2[_0x6884('0x2a')](_0x1677ce)['end']();};}function respondWithResult(_0xcd8926,_0x1f94ad){_0x1f94ad=_0x1f94ad||0xc8;return function(_0x4dc001){if(_0x4dc001){return _0xcd8926[_0x6884('0x2a')](_0x1f94ad)['json'](_0x4dc001);}};}function respondWithFilteredResult(_0x95a65e,_0x20c3a1){return function(_0x4defbe){if(_0x4defbe){var _0x54dc50=typeof _0x20c3a1[_0x6884('0x2b')]===_0x6884('0x2c')&&typeof _0x20c3a1[_0x6884('0x2d')]===_0x6884('0x2c');var _0x3944c3=_0x4defbe['count'];var _0x2a2526=_0x54dc50?0x0:_0x20c3a1['offset'];var _0x1ef87f=_0x54dc50?_0x4defbe[_0x6884('0x2e')]:_0x20c3a1[_0x6884('0x2b')]+_0x20c3a1[_0x6884('0x2d')];var _0x4b6825;if(_0x1ef87f>=_0x3944c3){_0x1ef87f=_0x3944c3;_0x4b6825=0xc8;}else{_0x4b6825=0xce;}_0x95a65e['status'](_0x4b6825);return _0x95a65e[_0x6884('0x2f')](_0x6884('0x30'),_0x2a2526+'-'+_0x1ef87f+'/'+_0x3944c3)['json'](_0x4defbe);}return null;};}function patchUpdates(_0x1e1c2c){return function(_0x2353be){try{jsonpatch['apply'](_0x2353be,_0x1e1c2c,!![]);}catch(_0x5d19d1){return BPromise[_0x6884('0x31')](_0x5d19d1);}return _0x2353be['save']();};}function saveUpdates(_0x57f5fe,_0x26c09d){return function(_0x15a1a7){if(_0x15a1a7){return _0x15a1a7[_0x6884('0x32')](_0x57f5fe)[_0x6884('0x20')](function(_0x1da7fc){return _0x1da7fc;});}return null;};}function removeEntity(_0x9d199c,_0x607342){return function(_0x265d74){if(_0x265d74){return _0x265d74[_0x6884('0x33')]()['then'](function(){var _0x387de4=_0x265d74[_0x6884('0x34')]({'plain':!![]});var _0x2ecc55=_0x6884('0x35');return db[_0x6884('0x36')][_0x6884('0x33')]({'where':{'type':_0x2ecc55,'resourceId':_0x387de4['id']}})[_0x6884('0x20')](function(){return _0x265d74;});})[_0x6884('0x20')](function(){_0x9d199c[_0x6884('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x495a13,_0x302233){return function(_0x354692){if(!_0x354692){_0x495a13[_0x6884('0x29')](0x194);}return _0x354692;};}function handleError(_0x10da18,_0xbbefb0){_0xbbefb0=_0xbbefb0||0x1f4;return function(_0x19af55){logger[_0x6884('0x25')](_0x19af55['stack']);if(_0x19af55[_0x6884('0x37')]){delete _0x19af55[_0x6884('0x37')];}_0x10da18['status'](_0xbbefb0)[_0x6884('0x38')](_0x19af55);};}exports[_0x6884('0x39')]=function(_0x2e4a41,_0x197028){var _0x2a23aa={'include':[{'model':db[_0x6884('0x3a')],'as':_0x6884('0x3b')}]},_0x2e4dcc={},_0x570e89={'count':0x0,'rows':[]};var _0x42992e=_['map'](db[_0x6884('0x3c')][_0x6884('0x3d')],function(_0x543f78){return{'name':_0x543f78[_0x6884('0x3e')],'type':_0x543f78[_0x6884('0x3f')][_0x6884('0x40')]};});_0x2e4dcc[_0x6884('0x41')]=_[_0x6884('0x42')](_0x42992e,_0x6884('0x37'));_0x2e4dcc[_0x6884('0x43')]=_[_0x6884('0x44')](_0x2e4a41[_0x6884('0x43')]);_0x2e4dcc[_0x6884('0x45')]=_[_0x6884('0x46')](_0x2e4dcc[_0x6884('0x41')],_0x2e4dcc[_0x6884('0x43')]);_0x2a23aa[_0x6884('0x47')]=_[_0x6884('0x46')](_0x2e4dcc['model'],qs[_0x6884('0x48')](_0x2e4a41['query'][_0x6884('0x48')]));_0x2a23aa[_0x6884('0x47')]=_0x2a23aa[_0x6884('0x47')]['length']?_0x2a23aa[_0x6884('0x47')]:_0x2e4dcc[_0x6884('0x41')];if(!_0x2e4a41[_0x6884('0x43')]['hasOwnProperty'](_0x6884('0x49'))){_0x2a23aa[_0x6884('0x2d')]=qs[_0x6884('0x2d')](_0x2e4a41[_0x6884('0x43')]['limit']);_0x2a23aa['offset']=qs['offset'](_0x2e4a41[_0x6884('0x43')][_0x6884('0x2b')]);}_0x2a23aa[_0x6884('0x4a')]=qs['sort'](_0x2e4a41[_0x6884('0x43')][_0x6884('0x4b')]);_0x2a23aa[_0x6884('0x4c')]=qs[_0x6884('0x45')](_['pick'](_0x2e4a41[_0x6884('0x43')],_0x2e4dcc[_0x6884('0x45')]),_0x42992e);if(_0x2e4a41[_0x6884('0x43')][_0x6884('0x4d')]){_0x2a23aa['where']=_[_0x6884('0x4e')](_0x2a23aa[_0x6884('0x4c')],{'$or':_['map'](_0x42992e,function(_0x4ab52d){if(_0x4ab52d['type']!==_0x6884('0x4f')){var _0x2063e5={};_0x2063e5[_0x4ab52d[_0x6884('0x37')]]={'$like':'%'+_0x2e4a41['query'][_0x6884('0x4d')]+'%'};return _0x2063e5;}})});}_0x2a23aa=_[_0x6884('0x4e')]({},_0x2a23aa,_0x2e4a41[_0x6884('0x50')]);var _0x411d90={'where':_0x2a23aa[_0x6884('0x4c')]};return db['OpenchannelAccount'][_0x6884('0x2e')](_0x411d90)[_0x6884('0x20')](function(_0x35d858){_0x570e89[_0x6884('0x2e')]=_0x35d858;if(_0x2e4a41['query'][_0x6884('0x51')]){_0x2a23aa[_0x6884('0x52')]=[{'all':!![]}];}return db[_0x6884('0x3c')]['findAll'](_0x2a23aa);})[_0x6884('0x20')](function(_0x522e12){_0x570e89[_0x6884('0x53')]=_0x522e12;return _0x570e89;})[_0x6884('0x20')](respondWithFilteredResult(_0x197028,_0x2a23aa))[_0x6884('0x54')](handleError(_0x197028,null));};exports[_0x6884('0x55')]=function(_0x197aa3,_0x1382ac){var _0x5a3b71={'raw':![],'where':{'id':_0x197aa3[_0x6884('0x56')]['id']},'include':[{'model':db['Pause'],'as':_0x6884('0x3b')}]},_0x16b7f4={};_0x16b7f4[_0x6884('0x41')]=_[_0x6884('0x44')](db[_0x6884('0x3c')][_0x6884('0x3d')]);_0x16b7f4[_0x6884('0x43')]=_[_0x6884('0x44')](_0x197aa3[_0x6884('0x43')]);_0x16b7f4['filters']=_[_0x6884('0x46')](_0x16b7f4['model'],_0x16b7f4[_0x6884('0x43')]);_0x5a3b71['attributes']=_[_0x6884('0x46')](_0x16b7f4[_0x6884('0x41')],qs[_0x6884('0x48')](_0x197aa3[_0x6884('0x43')][_0x6884('0x48')]));_0x5a3b71[_0x6884('0x47')]=_0x5a3b71[_0x6884('0x47')]['length']?_0x5a3b71[_0x6884('0x47')]:_0x16b7f4[_0x6884('0x41')];if(_0x197aa3[_0x6884('0x43')][_0x6884('0x51')]){_0x5a3b71[_0x6884('0x52')]=[{'all':!![]}];}_0x5a3b71=_[_0x6884('0x4e')]({},_0x5a3b71,_0x197aa3[_0x6884('0x50')]);return db['OpenchannelAccount'][_0x6884('0x57')](_0x5a3b71)[_0x6884('0x20')](handleEntityNotFound(_0x1382ac,null))['then'](respondWithResult(_0x1382ac,null))[_0x6884('0x54')](handleError(_0x1382ac,null));};exports['create']=function(_0x2640f6,_0x49703b){return db[_0x6884('0x3c')]['create'](_0x2640f6[_0x6884('0x58')],{})['then'](function(_0xdd5cb1){var _0x35b8ec=_0x2640f6['user']['get']({'plain':!![]});if(!_0x35b8ec)throw new Error(_0x6884('0x59'));if(_0x35b8ec[_0x6884('0x5a')]===_0x6884('0x5b')){var _0x348e50=_0xdd5cb1[_0x6884('0x34')]({'plain':!![]});var _0xb7cef0=_0x6884('0x35');return db[_0x6884('0x5c')][_0x6884('0x57')]({'where':{'name':_0xb7cef0,'userProfileId':_0x35b8ec[_0x6884('0x5d')]},'raw':!![]})[_0x6884('0x20')](function(_0x63b774){if(_0x63b774&&_0x63b774['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x348e50['name'],'resourceId':_0x348e50['id'],'type':_0x63b774[_0x6884('0x37')],'sectionId':_0x63b774['id']},{})[_0x6884('0x20')](function(){return _0xdd5cb1;});}else{return _0xdd5cb1;}})[_0x6884('0x54')](function(_0x4a5ff6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a5ff6);throw _0x4a5ff6;});}return _0xdd5cb1;})[_0x6884('0x20')](respondWithResult(_0x49703b,0xc9))[_0x6884('0x54')](handleError(_0x49703b,null));};exports[_0x6884('0x32')]=function(_0x41d8f5,_0x44b85b){if(_0x41d8f5[_0x6884('0x58')]['id']){delete _0x41d8f5[_0x6884('0x58')]['id'];}return db[_0x6884('0x3c')]['find']({'where':{'id':_0x41d8f5[_0x6884('0x56')]['id']},'include':[{'model':db[_0x6884('0x3a')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x44b85b,null))['then'](saveUpdates(_0x41d8f5[_0x6884('0x58')],null))[_0x6884('0x20')](respondWithResult(_0x44b85b,null))[_0x6884('0x54')](handleError(_0x44b85b,null));};exports[_0x6884('0x33')]=function(_0x4dfb02,_0x46a6b9){return db['OpenchannelAccount'][_0x6884('0x57')]({'where':{'id':_0x4dfb02['params']['id']}})['then'](handleEntityNotFound(_0x46a6b9,null))[_0x6884('0x20')](removeEntity(_0x46a6b9,null))[_0x6884('0x54')](handleError(_0x46a6b9,null));};exports[_0x6884('0x5e')]=function(_0x4d2c62,_0x2c23a4){return db[_0x6884('0x3c')]['describe']()[_0x6884('0x20')](respondWithResult(_0x2c23a4,null))['catch'](handleError(_0x2c23a4,null));};exports[_0x6884('0x5f')]=function(_0x4449ab,_0x4d1a6b,_0x69ef16){if(_0x4449ab[_0x6884('0x58')]['id']){delete _0x4449ab[_0x6884('0x58')]['id'];}return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0x4449ab['params']['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x4d1a6b,null))[_0x6884('0x20')](function(_0x22bc74){if(_0x22bc74){_0x4449ab['body'][_0x6884('0x60')]=_0x22bc74['id'];return db[_0x6884('0x61')]['create'](_0x4449ab[_0x6884('0x58')]);}})[_0x6884('0x20')](respondWithResult(_0x4d1a6b,null))['catch'](handleError(_0x4d1a6b,null));};exports[_0x6884('0x62')]=function(_0x361d48,_0x54a833,_0x31afac){var _0x48723b={'raw':![],'where':{}};var _0x4d8c16={};var _0x15dd55={'count':0x0,'rows':[]};return db[_0x6884('0x3c')][_0x6884('0x63')]({'where':{'id':_0x361d48[_0x6884('0x56')]['id']}})['then'](handleEntityNotFound(_0x54a833,null))[_0x6884('0x20')](function(_0x15654b){if(_0x15654b){_0x4d8c16[_0x6884('0x41')]=_[_0x6884('0x44')](db[_0x6884('0x61')][_0x6884('0x3d')]);_0x4d8c16['query']=_[_0x6884('0x44')](_0x361d48[_0x6884('0x43')]);_0x4d8c16[_0x6884('0x45')]=_[_0x6884('0x46')](_0x4d8c16['model'],_0x4d8c16['query']);_0x48723b[_0x6884('0x47')]=_[_0x6884('0x46')](_0x4d8c16[_0x6884('0x41')],qs[_0x6884('0x48')](_0x361d48[_0x6884('0x43')][_0x6884('0x48')]));_0x48723b[_0x6884('0x47')]=_0x48723b[_0x6884('0x47')][_0x6884('0x64')]?_0x48723b[_0x6884('0x47')]:_0x4d8c16['model'];if(!_0x361d48[_0x6884('0x43')][_0x6884('0x65')](_0x6884('0x49'))){_0x48723b[_0x6884('0x2d')]=qs['limit'](_0x361d48['query'][_0x6884('0x2d')]);_0x48723b[_0x6884('0x2b')]=qs[_0x6884('0x2b')](_0x361d48['query'][_0x6884('0x2b')]);}_0x48723b[_0x6884('0x4a')]=qs[_0x6884('0x4b')](_0x361d48[_0x6884('0x43')][_0x6884('0x4b')]);_0x48723b['where']=qs[_0x6884('0x45')](_[_0x6884('0x66')](_0x361d48[_0x6884('0x43')],_0x4d8c16['filters']));_0x48723b[_0x6884('0x4c')][_0x6884('0x60')]=_0x15654b['id'];if(_0x361d48['query'][_0x6884('0x4d')]){_0x48723b[_0x6884('0x4c')]=_['merge'](_0x48723b[_0x6884('0x4c')],{'$or':_[_0x6884('0x42')](_0x48723b[_0x6884('0x47')],function(_0x3735fc){var _0x7cacbf={};_0x7cacbf[_0x3735fc]={'$like':'%'+_0x361d48[_0x6884('0x43')][_0x6884('0x4d')]+'%'};return _0x7cacbf;})});}_0x48723b=_[_0x6884('0x4e')]({},_0x48723b,_0x361d48[_0x6884('0x50')]);return db[_0x6884('0x61')][_0x6884('0x2e')]({'where':_0x48723b['where']})['then'](function(_0x35ce50){_0x15dd55[_0x6884('0x2e')]=_0x35ce50;if(_0x361d48[_0x6884('0x43')]['includeAll']){_0x48723b[_0x6884('0x52')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x48723b);})['then'](function(_0x44685d){_0x15dd55[_0x6884('0x53')]=_0x44685d;return _0x15dd55;});}})[_0x6884('0x20')](respondWithFilteredResult(_0x54a833,_0x48723b))['catch'](handleError(_0x54a833,null));};exports['removeDispositions']=function(_0x6e7cd7,_0x4aa2ca,_0x5e8e95){return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0x6e7cd7[_0x6884('0x56')]['id']}})['then'](handleEntityNotFound(_0x4aa2ca,null))[_0x6884('0x20')](function(_0x497cf3){if(_0x497cf3){return _0x497cf3[_0x6884('0x67')](_0x6e7cd7[_0x6884('0x43')][_0x6884('0x68')]);}})[_0x6884('0x20')](respondWithStatusCode(_0x4aa2ca,null))[_0x6884('0x54')](handleError(_0x4aa2ca,null));};exports['addAnswer']=function(_0x4efb33,_0x4a2e92,_0x42cc29){if(_0x4efb33['body']['id']){delete _0x4efb33[_0x6884('0x58')]['id'];}return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0x4efb33[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x4a2e92,null))[_0x6884('0x20')](function(_0x185d61){if(_0x185d61){_0x4efb33[_0x6884('0x58')][_0x6884('0x60')]=_0x185d61['id'];return db[_0x6884('0x69')]['create'](_0x4efb33[_0x6884('0x58')]);}})[_0x6884('0x20')](respondWithResult(_0x4a2e92,null))[_0x6884('0x54')](handleError(_0x4a2e92,null));};exports[_0x6884('0x6a')]=function(_0x564ad8,_0x4cdc94,_0xd45bf7){var _0x22fad1={'raw':![],'where':{}};var _0x3067a5={};var _0x210673={'count':0x0,'rows':[]};return db[_0x6884('0x3c')]['findOne']({'where':{'id':_0x564ad8[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x4cdc94,null))[_0x6884('0x20')](function(_0xefb0dc){if(_0xefb0dc){_0x3067a5[_0x6884('0x41')]=_[_0x6884('0x44')](db['CannedAnswer'][_0x6884('0x3d')]);_0x3067a5[_0x6884('0x43')]=_[_0x6884('0x44')](_0x564ad8[_0x6884('0x43')]);_0x3067a5[_0x6884('0x45')]=_['intersection'](_0x3067a5['model'],_0x3067a5[_0x6884('0x43')]);_0x22fad1[_0x6884('0x47')]=_[_0x6884('0x46')](_0x3067a5[_0x6884('0x41')],qs['fields'](_0x564ad8[_0x6884('0x43')][_0x6884('0x48')]));_0x22fad1['attributes']=_0x22fad1[_0x6884('0x47')]['length']?_0x22fad1[_0x6884('0x47')]:_0x3067a5[_0x6884('0x41')];if(!_0x564ad8[_0x6884('0x43')][_0x6884('0x65')](_0x6884('0x49'))){_0x22fad1['limit']=qs['limit'](_0x564ad8['query'][_0x6884('0x2d')]);_0x22fad1[_0x6884('0x2b')]=qs[_0x6884('0x2b')](_0x564ad8[_0x6884('0x43')][_0x6884('0x2b')]);}_0x22fad1['order']=qs[_0x6884('0x4b')](_0x564ad8[_0x6884('0x43')][_0x6884('0x4b')]);_0x22fad1[_0x6884('0x4c')]=qs[_0x6884('0x45')](_[_0x6884('0x66')](_0x564ad8[_0x6884('0x43')],_0x3067a5['filters']));_0x22fad1[_0x6884('0x4c')][_0x6884('0x60')]=_0xefb0dc['id'];if(_0x564ad8[_0x6884('0x43')][_0x6884('0x4d')]){_0x22fad1['where']=_[_0x6884('0x4e')](_0x22fad1[_0x6884('0x4c')],{'$or':_[_0x6884('0x42')](_0x22fad1[_0x6884('0x47')],function(_0x21350e){var _0xc773a4={};_0xc773a4[_0x21350e]={'$like':'%'+_0x564ad8['query'][_0x6884('0x4d')]+'%'};return _0xc773a4;})});}_0x22fad1=_[_0x6884('0x4e')]({},_0x22fad1,_0x564ad8[_0x6884('0x50')]);return db[_0x6884('0x69')]['count']({'where':_0x22fad1[_0x6884('0x4c')]})['then'](function(_0x5e7a2f){_0x210673[_0x6884('0x2e')]=_0x5e7a2f;if(_0x564ad8['query'][_0x6884('0x51')]){_0x22fad1[_0x6884('0x52')]=[{'all':!![]}];}return db[_0x6884('0x69')][_0x6884('0x6b')](_0x22fad1);})[_0x6884('0x20')](function(_0x5d071f){_0x210673['rows']=_0x5d071f;return _0x210673;});}})[_0x6884('0x20')](respondWithFilteredResult(_0x4cdc94,_0x22fad1))[_0x6884('0x54')](handleError(_0x4cdc94,null));};exports[_0x6884('0x6c')]=function(_0x4f1f4b,_0x2f3cd6,_0x379515){return db[_0x6884('0x3c')]['find']({'where':{'id':_0x4f1f4b[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x2f3cd6,null))[_0x6884('0x20')](function(_0xc49881){if(_0xc49881){return _0xc49881['removeAnswers'](_0x4f1f4b[_0x6884('0x43')]['ids']);}})[_0x6884('0x20')](respondWithStatusCode(_0x2f3cd6,null))[_0x6884('0x54')](handleError(_0x2f3cd6,null));};exports[_0x6884('0x6d')]=function(_0x35074c,_0x29319c,_0x2500e2){var _0x10b4d9={'body':_0x35074c[_0x6884('0x58')],'channel':'openchannel'};var _0x2d60eb=[];var _0x1ae8e6=[];var _0x520cac={};var _0x40e863=![];return db[_0x6884('0x6e')][_0x6884('0x5e')]()[_0x6884('0x20')](function(_0x8e97c){if(!_0x8e97c){throw new db[(_0x6884('0x6f'))][(_0x6884('0x70'))](_0x6884('0x71'));}_0x2d60eb=_['difference'](_[_0x6884('0x44')](_0x8e97c),[_0x6884('0x72'),_0x6884('0x73')]);_0x1ae8e6=_[_0x6884('0x74')](_[_0x6884('0x44')](_0x8e97c),[_0x6884('0x72'),_0x6884('0x73'),'CompanyId',_0x6884('0x75')]);if(_0x35074c[_0x6884('0x58')]['id']){delete _0x35074c[_0x6884('0x58')]['id'];}if(_[_0x6884('0x76')](_0x35074c['body'][_0x6884('0x77')])){throw new db['Sequelize'][(_0x6884('0x70'))](_0x6884('0x78'));}if(_[_0x6884('0x76')](_0x35074c[_0x6884('0x58')][_0x6884('0x58')])||_0x35074c['body'][_0x6884('0x58')]===''){throw new db[(_0x6884('0x6f'))]['ValidationError'](_0x6884('0x79'));}if(_['isNil'](_0x35074c[_0x6884('0x58')][_0x6884('0x7a')])){throw new db[(_0x6884('0x6f'))][(_0x6884('0x70'))](_0x6884('0x7b')+_0x1ae8e6);}if(!_[_0x6884('0x7c')](_0x1ae8e6,_0x35074c[_0x6884('0x58')]['mapKey'])){throw new db[(_0x6884('0x6f'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1ae8e6);}_0x520cac[_0x35074c[_0x6884('0x58')][_0x6884('0x7a')]]=_0x35074c['body'][_0x6884('0x77')];})[_0x6884('0x20')](function(){return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0x35074c[_0x6884('0x56')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x6884('0x6e')],'as':_0x6884('0x7d'),'where':_0x520cac,'limit':0x1,'order':[[_0x6884('0x73'),_0x6884('0x7e')]]}]},{'model':db[_0x6884('0x7f')],'as':_0x6884('0x80')}]});})[_0x6884('0x20')](handleEntityNotFound(_0x29319c,null))[_0x6884('0x20')](function(_0x346c6a){if(_0x346c6a&&_0x346c6a['List']){_0x10b4d9[_0x6884('0x81')]=_0x346c6a;_0x10b4d9[_0x6884('0x82')]=_0x346c6a['Applications'];_0x10b4d9[_0x6884('0x83')]=_0x346c6a[_0x6884('0x84')];_0x10b4d9[_0x6884('0x82')]=_[_0x6884('0x85')](_0x10b4d9[_0x6884('0x82')],['priority'],[_0x6884('0x86')]);if(_0x10b4d9[_0x6884('0x81')]['Applications']){delete _0x10b4d9['account'][_0x6884('0x80')];}if(_0x10b4d9['account'][_0x6884('0x84')]&&_0x10b4d9['account'][_0x6884('0x84')][_0x6884('0x7d')][_0x6884('0x64')]){return _0x10b4d9[_0x6884('0x81')]['List'][_0x6884('0x7d')][0x0];}var _0x9dd9f2=_[_0x6884('0x87')](_0x35074c[_0x6884('0x58')],{'firstName':_0x35074c[_0x6884('0x58')]['from'],'ListId':_0x346c6a[_0x6884('0x75')]});_0x9dd9f2[_0x35074c[_0x6884('0x58')][_0x6884('0x7a')]]=_0x35074c[_0x6884('0x58')][_0x6884('0x77')];return db[_0x6884('0x6e')][_0x6884('0x88')](_0x9dd9f2,{'fields':_0x2d60eb,'raw':!![]});}})[_0x6884('0x20')](handleEntityNotFound(_0x29319c,null))[_0x6884('0x20')](function(_0x534656){_0x10b4d9[_0x6884('0x89')]=_0x534656;if(_0x534656){var _0x1e2303={'ContactId':_0x534656['id'],'OpenchannelAccountId':_0x35074c[_0x6884('0x56')]['id'],'from':(_0x534656[_0x6884('0x8a')]||'')+'\x20'+(_0x534656[_0x6884('0x8b')]||'')};var _0x28c632={'OpenchannelAccountId':_0x35074c[_0x6884('0x56')]['id'],'closed':![]};if(_0x35074c[_0x6884('0x58')][_0x6884('0x8c')]){_0x28c632[_0x6884('0x8c')]=_0x35074c[_0x6884('0x58')][_0x6884('0x8c')];return db[_0x6884('0x8d')][_0x6884('0x57')]({'where':_0x28c632})[_0x6884('0x20')](function(_0x16fbb5){if(_0x16fbb5){return[_0x16fbb5,![]];}_0x1e2303['threadId']=_0x35074c[_0x6884('0x58')][_0x6884('0x8c')];_0x1e2303[_0x6884('0x8e')]=_0x35074c[_0x6884('0x58')][_0x6884('0x8e')];return db[_0x6884('0x8d')][_0x6884('0x88')](_0x1e2303)[_0x6884('0x20')](function(_0x1aada6){return[_0x1aada6,!![]];});});}else{_0x28c632[_0x6884('0x8c')]=null;}_0x28c632[_0x6884('0x8f')]=_0x534656['id'];return db['OpenchannelInteraction']['find']({'where':_0x28c632})[_0x6884('0x20')](function(_0x48ad04){if(_0x48ad04){return[_0x48ad04,![]];}return db['OpenchannelInteraction'][_0x6884('0x88')](_0x1e2303)[_0x6884('0x20')](function(_0x232136){return[_0x232136,!![]];});});}})[_0x6884('0x90')](function(_0x1e36f0,_0x34f3b5){if(_0x1e36f0){_0x40e863=_0x34f3b5;if(!_0x34f3b5){var _0x2e07e7={'from':(_0x10b4d9[_0x6884('0x89')][_0x6884('0x8a')]||'')+'\x20'+(_0x10b4d9['contact'][_0x6884('0x8b')]||'')};if(_0x35074c['body'][_0x6884('0x8c')]&&_0x35074c['body'][_0x6884('0x91')]&&_0x35074c[_0x6884('0x58')][_0x6884('0x8c')]!=_0x35074c['body'][_0x6884('0x91')]){_0x2e07e7[_0x6884('0x8c')]=_0x35074c[_0x6884('0x58')][_0x6884('0x91')];}return _0x1e36f0[_0x6884('0x32')](_0x2e07e7);}else{return _0x1e36f0;}}})[_0x6884('0x20')](function(_0xe1205){_0x10b4d9[_0x6884('0x92')]=_0xe1205[_0x6884('0x34')]({'plain':!![]});_0x10b4d9[_0x6884('0x92')][_0x6884('0x93')]=_0x40e863;if(_0x10b4d9[_0x6884('0x92')][_0x6884('0x93')]){if(_0x10b4d9['account']['autoclose']){_0x10b4d9[_0x6884('0x82')]['push']({'id':0x0,'priority':_0x10b4d9[_0x6884('0x82')][_0x6884('0x64')]+0x1,'app':_0x6884('0x94'),'appdata':_0x6884('0x95'),'interval':_0x6884('0x96')});}}return db[_0x6884('0x97')][_0x6884('0x88')]({'body':_0x35074c[_0x6884('0x58')][_0x6884('0x58')],'OpenchannelAccountId':_0x35074c[_0x6884('0x56')]['id'],'OpenchannelInteractionId':_0xe1205['id'],'direction':'in','ContactId':_0x10b4d9[_0x6884('0x89')]['id'],'AttachmentId':_0x35074c[_0x6884('0x58')][_0x6884('0x98')]});})['then'](function(_0x94b8b7){_0x10b4d9[_0x6884('0x27')]=_0x94b8b7;if(_0x10b4d9['interaction']['UserId']){return db[_0x6884('0x99')][_0x6884('0x57')]({'attributes':['id',_0x6884('0x37')],'where':{'id':_0x10b4d9['interaction'][_0x6884('0x9a')]}})[_0x6884('0x20')](function(_0x440045){if(_0x440045){_0x10b4d9['applications'][_0x6884('0x9b')]({'id':0x0,'priority':0x0,'app':_0x6884('0x9c'),'appdata':_0x440045[_0x6884('0x37')]+','+(_0x10b4d9[_0x6884('0x81')][_0x6884('0x9d')]||0xa),'interval':_0x6884('0x96')});_0x10b4d9[_0x6884('0x9e')]=![];}return respondWithRpcPromise(_0x6884('0x9f'),_0x6884('0xa0'),_0x10b4d9);});}return respondWithRpcPromise(_0x6884('0x9f'),_0x6884('0xa0'),_0x10b4d9);})[_0x6884('0x20')](function(_0x571b32){respondWithRpcPromise('EventManager',_0x6884('0xa1'),{'event':_0x6884('0x6d'),'message':_0x571b32},client9002);return _0x571b32;})['then'](respondWithResult(_0x29319c,null))[_0x6884('0x54')](handleError(_0x29319c,null));};exports[_0x6884('0xa2')]=function(_0x34d66b,_0x1d9354){var _0x402b53=_0x34d66b[_0x6884('0x56')]['id'];var _0x3a3e51=_0x34d66b['body'];var _0x385d89=0xc8;var _0x133ac5=null;return db['sequelize'][_0x6884('0xa3')]({'isolationLevel':db[_0x6884('0xa4')][_0x6884('0xa5')][_0x6884('0xa6')][_0x6884('0xa7')]},function(_0x3f0141){return db[_0x6884('0x3c')][_0x6884('0x63')]({'where':{'id':_0x402b53},'transaction':_0x3f0141})[_0x6884('0x20')](function(_0xcf3041){if(_0xcf3041){return db[_0x6884('0x7f')]['destroy']({'where':{'OpenchannelAccountId':_0x402b53},'transaction':_0x3f0141})[_0x6884('0x20')](function(){var _0x37521a=_[_0x6884('0x42')](_0x3a3e51,function(_0x165f25){_0x165f25[_0x6884('0x60')]=_0x402b53;return _0x165f25;});return db['OpenchannelApplication'][_0x6884('0xa8')](_0x37521a,{'transaction':_0x3f0141});});}else{_0x385d89=0x194;_0x133ac5=[];}});})[_0x6884('0x20')](function(){if(_0x385d89!==0x194){return db[_0x6884('0x7f')][_0x6884('0xa9')]({'where':{'OpenchannelAccountId':_0x402b53},'order':_0x6884('0xaa')})[_0x6884('0x20')](function(_0x50442f){_0x133ac5=_0x50442f;});}})[_0x6884('0x54')](function(_0x30e725){_0x385d89=0x1f4;logger[_0x6884('0x25')](_0x30e725[_0x6884('0xab')]);if(_0x30e725[_0x6884('0x37')]){delete _0x30e725[_0x6884('0x37')];}_0x133ac5=_0x30e725;})[_0x6884('0xac')](function(){if(_0x133ac5===null){_0x1d9354['sendStatus'](_0x385d89);}else{if(_0x385d89===0x1f4){_0x1d9354['status'](_0x385d89)[_0x6884('0x38')](_0x133ac5);}else{_0x1d9354[_0x6884('0x2a')](_0x385d89)[_0x6884('0xad')](_0x133ac5);}}});};exports[_0x6884('0xae')]=function(_0x1d9201,_0x373a8c,_0x5f4755){var _0x16db20={};var _0x32efe4={};var _0x522b7c;var _0x323398;return db['OpenchannelAccount'][_0x6884('0x63')]({'where':{'id':_0x1d9201[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x373a8c,null))['then'](function(_0x20c52a){if(_0x20c52a){_0x522b7c=_0x20c52a;_0x32efe4[_0x6884('0x41')]=_[_0x6884('0x44')](db['OpenchannelApplication'][_0x6884('0x3d')]);_0x32efe4['query']=_[_0x6884('0x44')](_0x1d9201[_0x6884('0x43')]);_0x32efe4[_0x6884('0x45')]=_[_0x6884('0x46')](_0x32efe4[_0x6884('0x41')],_0x32efe4[_0x6884('0x43')]);_0x16db20[_0x6884('0x47')]=_[_0x6884('0x46')](_0x32efe4[_0x6884('0x41')],qs['fields'](_0x1d9201[_0x6884('0x43')][_0x6884('0x48')]));_0x16db20['attributes']=_0x16db20['attributes'][_0x6884('0x64')]?_0x16db20['attributes']:_0x32efe4[_0x6884('0x41')];_0x16db20['order']=qs['sort'](_0x1d9201['query'][_0x6884('0x4b')]);_0x16db20[_0x6884('0x4c')]=qs[_0x6884('0x45')](_['pick'](_0x1d9201[_0x6884('0x43')],_0x32efe4[_0x6884('0x45')]));if(_0x1d9201[_0x6884('0x43')][_0x6884('0x4d')]){_0x16db20[_0x6884('0x4c')]=_['merge'](_0x16db20[_0x6884('0x4c')],{'$or':_[_0x6884('0x42')](_0x16db20[_0x6884('0x47')],function(_0x44a669){var _0x41b703={};_0x41b703[_0x44a669]={'$like':'%'+_0x1d9201[_0x6884('0x43')][_0x6884('0x4d')]+'%'};return _0x41b703;})});}_0x16db20=_[_0x6884('0x4e')]({},_0x16db20,_0x1d9201[_0x6884('0x50')]);return _0x522b7c[_0x6884('0xae')](_0x16db20);}})[_0x6884('0x20')](function(_0x4522a7){if(_0x4522a7){_0x323398=_0x4522a7[_0x6884('0x64')];if(!_0x1d9201[_0x6884('0x43')][_0x6884('0x65')](_0x6884('0x49'))){_0x16db20['limit']=qs[_0x6884('0x2d')](_0x1d9201[_0x6884('0x43')][_0x6884('0x2d')]);_0x16db20[_0x6884('0x2b')]=qs[_0x6884('0x2b')](_0x1d9201['query'][_0x6884('0x2b')]);}return _0x522b7c[_0x6884('0xae')](_0x16db20);}})['then'](function(_0x4b8c21){if(_0x4b8c21){return _0x4b8c21?{'count':_0x323398,'rows':_0x4b8c21}:null;}})[_0x6884('0x20')](respondWithResult(_0x373a8c,null))['catch'](handleError(_0x373a8c,null));};exports[_0x6884('0xaf')]=function(_0x26ee6e,_0xfa44bc,_0x12fcd8){var _0x2e9d1d={'raw':![],'where':{}};var _0x509ebd={};var _0x907553={'count':0x0,'rows':[]};return db[_0x6884('0x3c')][_0x6884('0x63')]({'where':{'id':_0x26ee6e[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0xfa44bc,null))[_0x6884('0x20')](function(_0x5860f0){if(_0x5860f0){_0x509ebd['model']=_['keys'](db[_0x6884('0x8d')][_0x6884('0x3d')]);_0x509ebd[_0x6884('0x43')]=_[_0x6884('0x44')](_0x26ee6e['query']);_0x509ebd[_0x6884('0x45')]=_['intersection'](_0x509ebd[_0x6884('0x41')],_0x509ebd[_0x6884('0x43')]);_0x2e9d1d[_0x6884('0x47')]=_[_0x6884('0x46')](_0x509ebd[_0x6884('0x41')],qs[_0x6884('0x48')](_0x26ee6e[_0x6884('0x43')]['fields']));_0x2e9d1d['attributes']=_0x2e9d1d[_0x6884('0x47')][_0x6884('0x64')]?_0x2e9d1d[_0x6884('0x47')]:_0x509ebd['model'];if(!_0x26ee6e[_0x6884('0x43')][_0x6884('0x65')](_0x6884('0x49'))){_0x2e9d1d[_0x6884('0x2d')]=qs[_0x6884('0x2d')](_0x26ee6e[_0x6884('0x43')]['limit']);_0x2e9d1d['offset']=qs['offset'](_0x26ee6e['query'][_0x6884('0x2b')]);}_0x2e9d1d[_0x6884('0x4a')]=qs[_0x6884('0x4b')](_0x26ee6e[_0x6884('0x43')][_0x6884('0x4b')]);_0x2e9d1d[_0x6884('0x4c')]=qs[_0x6884('0x45')](_[_0x6884('0x66')](_0x26ee6e['query'],_0x509ebd[_0x6884('0x45')]));_0x2e9d1d[_0x6884('0x4c')][_0x6884('0x60')]=_0x5860f0['id'];if(_0x26ee6e['query']['filter']){_0x2e9d1d[_0x6884('0x4c')]=_['merge'](_0x2e9d1d[_0x6884('0x4c')],{'$or':_[_0x6884('0x42')](_0x2e9d1d[_0x6884('0x47')],function(_0x5c336b){var _0x123c48={};_0x123c48[_0x5c336b]={'$like':'%'+_0x26ee6e[_0x6884('0x43')][_0x6884('0x4d')]+'%'};return _0x123c48;})});}_0x2e9d1d=_[_0x6884('0x4e')]({},_0x2e9d1d,_0x26ee6e['options']);return db[_0x6884('0x8d')]['count']({'where':_0x2e9d1d[_0x6884('0x4c')]})[_0x6884('0x20')](function(_0x2a59b6){_0x907553[_0x6884('0x2e')]=_0x2a59b6;if(_0x26ee6e[_0x6884('0x43')][_0x6884('0x51')]){_0x2e9d1d['include']=[{'model':db[_0x6884('0x6e')],'as':_0x6884('0xb0'),'required':![]},{'model':db['User'],'as':_0x6884('0xb1'),'attributes':['name',_0x6884('0xb2'),_0x6884('0xb3')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x6884('0x37'),_0x6884('0xb4')],'where':_0x26ee6e['query'][_0x6884('0xb5')]?{'id':_0x26ee6e['query']['tag']}:undefined,'required':_0x26ee6e[_0x6884('0x43')]['tag']?!![]:![]}];}return db[_0x6884('0x8d')][_0x6884('0x6b')](_0x2e9d1d);})['then'](function(_0x1dcd08){_0x907553[_0x6884('0x53')]=_0x1dcd08;return _0x907553;});}})[_0x6884('0x20')](respondWithFilteredResult(_0xfa44bc,_0x2e9d1d))['catch'](handleError(_0xfa44bc,null));};exports['addAgents']=function(_0xd89f1a,_0x17ea0d,_0x32383c){return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0xd89f1a[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x17ea0d,null))[_0x6884('0x20')](function(_0x3f8a1c){if(_0x3f8a1c){return _0x3f8a1c[_0x6884('0xb6')](_0xd89f1a[_0x6884('0x58')]['ids'],_[_0x6884('0xb7')](_0xd89f1a[_0x6884('0x58')],[_0x6884('0x68'),'id'])||{})[_0x6884('0x90')](function(_0x12f69e){for(var _0x151e35=0x0;_0x151e35<_0xd89f1a[_0x6884('0x58')][_0x6884('0x68')][_0x6884('0x64')];_0x151e35+=0x1){socket[_0x6884('0xb8')](_0x6884('0xb9'),{'UserId':Number(_0xd89f1a[_0x6884('0x58')]['ids'][_0x151e35]),'OpenchannelAccountId':Number(_0xd89f1a['params']['id'])});}return _0x12f69e;});}})['then'](respondWithResult(_0x17ea0d,null))[_0x6884('0x54')](handleError(_0x17ea0d,null));};exports[_0x6884('0xba')]=function(_0x1aa831,_0x22c821,_0x224260){return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0x1aa831[_0x6884('0x56')]['id']}})[_0x6884('0x20')](handleEntityNotFound(_0x22c821,null))[_0x6884('0x20')](function(_0x39ebdc){if(_0x39ebdc){return _0x39ebdc[_0x6884('0xba')](_0x1aa831[_0x6884('0x43')][_0x6884('0x68')])[_0x6884('0x20')](function(){if(_[_0x6884('0xbb')](_0x1aa831[_0x6884('0x43')][_0x6884('0x68')])){for(var _0x227a36=0x0;_0x227a36<_0x1aa831[_0x6884('0x43')][_0x6884('0x68')]['length'];_0x227a36+=0x1){socket['emit'](_0x6884('0xbc'),{'UserId':Number(_0x1aa831['query'][_0x6884('0x68')][_0x227a36]),'OpenchannelAccountId':Number(_0x1aa831[_0x6884('0x56')]['id'])});}}else{socket[_0x6884('0xb8')](_0x6884('0xbc'),{'UserId':Number(_0x1aa831[_0x6884('0x43')][_0x6884('0x68')]),'OpenchannelAccountId':Number(_0x1aa831[_0x6884('0x56')]['id'])});}});}})[_0x6884('0x20')](respondWithStatusCode(_0x22c821,null))[_0x6884('0x54')](handleError(_0x22c821,null));};exports[_0x6884('0xbd')]=function(_0x400e8a,_0x7d96f8,_0x21b295){var _0x3d06d9={};var _0x2a629f={};var _0x16781a;var _0x2fde54;return db[_0x6884('0x3c')][_0x6884('0x63')]({'where':{'id':_0x400e8a[_0x6884('0x56')]['id']}})['then'](handleEntityNotFound(_0x7d96f8,null))[_0x6884('0x20')](function(_0xa1e8ee){if(_0xa1e8ee){_0x16781a=_0xa1e8ee;_0x2a629f[_0x6884('0x41')]=_[_0x6884('0x44')](db[_0x6884('0x99')][_0x6884('0x3d')]);_0x2a629f[_0x6884('0x43')]=_['keys'](_0x400e8a[_0x6884('0x43')]);_0x2a629f['filters']=_['intersection'](_0x2a629f['model'],_0x2a629f[_0x6884('0x43')]);_0x3d06d9[_0x6884('0x47')]=_[_0x6884('0x46')](_0x2a629f['model'],qs[_0x6884('0x48')](_0x400e8a[_0x6884('0x43')][_0x6884('0x48')]));_0x3d06d9['attributes']=_0x3d06d9[_0x6884('0x47')][_0x6884('0x64')]?_0x3d06d9['attributes']:_0x2a629f[_0x6884('0x41')];_0x3d06d9[_0x6884('0x4a')]=qs['sort'](_0x400e8a['query'][_0x6884('0x4b')]);_0x3d06d9[_0x6884('0x4c')]=qs[_0x6884('0x45')](_[_0x6884('0x66')](_0x400e8a[_0x6884('0x43')],_0x2a629f[_0x6884('0x45')]));if(_0x400e8a[_0x6884('0x43')][_0x6884('0x4d')]){_0x3d06d9[_0x6884('0x4c')]=_[_0x6884('0x4e')](_0x3d06d9[_0x6884('0x4c')],{'$or':_['map'](_0x3d06d9['attributes'],function(_0x5dd645){var _0x4f743c={};_0x4f743c[_0x5dd645]={'$like':'%'+_0x400e8a[_0x6884('0x43')][_0x6884('0x4d')]+'%'};return _0x4f743c;})});}_0x3d06d9=_[_0x6884('0x4e')]({},_0x3d06d9,_0x400e8a[_0x6884('0x50')]);return _0x16781a[_0x6884('0xbd')](_0x3d06d9);}})[_0x6884('0x20')](function(_0x42eaca){if(_0x42eaca){_0x2fde54=_0x42eaca[_0x6884('0x64')];if(!_0x400e8a[_0x6884('0x43')]['hasOwnProperty'](_0x6884('0x49'))){_0x3d06d9[_0x6884('0x2d')]=qs['limit'](_0x400e8a['query']['limit']);_0x3d06d9[_0x6884('0x2b')]=qs['offset'](_0x400e8a[_0x6884('0x43')][_0x6884('0x2b')]);}return _0x16781a[_0x6884('0xbd')](_0x3d06d9);}})[_0x6884('0x20')](function(_0x361e64){if(_0x361e64){return _0x361e64?{'count':_0x2fde54,'rows':_0x361e64}:null;}})[_0x6884('0x20')](respondWithResult(_0x7d96f8,null))['catch'](handleError(_0x7d96f8,null));};exports['send']=function(_0x301893,_0x48ac7c,_0x286e7e){var _0x4fe1ac,_0x2c627a,_0x4c3538;if(_['isNil'](_0x301893[_0x6884('0x58')][_0x6884('0x58')])||_0x301893[_0x6884('0x58')]['body']===''){throw new db[(_0x6884('0x6f'))][(_0x6884('0x70'))](_0x6884('0x79'));}if(_['isNil'](_0x301893[_0x6884('0x58')]['to'])){}_0x4fe1ac=_0x301893[_0x6884('0x58')]['to'];return db[_0x6884('0x3c')][_0x6884('0x63')]({'where':{'id':_0x301893[_0x6884('0x56')]['id']}})['then'](handleEntityNotFound(_0x48ac7c,null))[_0x6884('0x20')](function(_0x36a500){if(_0x36a500){return db[_0x6884('0x3c')][_0x6884('0x57')]({'where':{'id':_0x36a500['id']},'include':[{'model':db['CmList'],'as':_0x6884('0x84'),'include':[{'model':db['CmContact'],'as':_0x6884('0x7d'),'where':{[_0x36a500[_0x6884('0x7a')]]:_0x4fe1ac},'limit':0x1,'order':[[_0x6884('0x73'),_0x6884('0x7e')]]}]}]})[_0x6884('0x20')](handleEntityNotFound(_0x48ac7c,null))[_0x6884('0x20')](function(_0xac95ec){if(_0xac95ec&&_0xac95ec['List']){_0x2c627a=_0xac95ec[_0x6884('0x34')]({'plain':!![]});if(_0x2c627a['List']&&_0x2c627a['List'][_0x6884('0x7d')][_0x6884('0x64')]){return _0x2c627a['List'][_0x6884('0x7d')][0x0];}return db[_0x6884('0x6e')][_0x6884('0x88')](_[_0x6884('0x87')](_0x301893[_0x6884('0x58')],{'firstName':_0x4fe1ac,[_0xac95ec[_0x6884('0x7a')]]:_0x4fe1ac,'phone':_0x4fe1ac,'ListId':_0x2c627a[_0x6884('0x75')]}));}})[_0x6884('0x20')](handleEntityNotFound(_0x48ac7c,null))[_0x6884('0x20')](function(_0x3af7d6){if(_0x3af7d6){_0x4c3538=_0x3af7d6;return db[_0x6884('0x8d')][_0x6884('0x57')]({'where':{'ContactId':_0x4c3538['id'],'closed':![],'OpenchannelAccountId':_0x2c627a['id']}})[_0x6884('0x20')](function(_0x4b92d3){if(_0x4b92d3){return[_0x4b92d3,![]];}return db[_0x6884('0x8d')]['create']({'UserId':_0x301893[_0x6884('0x5b')]['id'],'ContactId':_0x4c3538['id'],'OpenchannelAccountId':_0x2c627a['id'],'lastMsgDirection':_0x6884('0xbe'),'Messages':[_[_0x6884('0x4e')](_0x301893[_0x6884('0x58')],{'read':![],'body':_0x301893['body']['body'],'OpenchannelAccountId':_0x2c627a['id'],'UserId':_0x301893['user']['id'],'ContactId':_0x4c3538['id']})]},{'include':[{'model':db[_0x6884('0x97')],'as':_0x6884('0xbf')}]})[_0x6884('0x20')](function(_0x709a3d){return[_0x709a3d,!![]];});});}})[_0x6884('0x90')](function(_0x2bc760,_0x4cc6d3){if(_0x4cc6d3){return _0x2bc760;}return db[_0x6884('0x97')]['create'](_['merge'](_0x301893[_0x6884('0x58')],{'read':![],'body':_0x301893[_0x6884('0x58')][_0x6884('0x58')],'OpenchannelAccountId':_0x2c627a['id'],'OpenchannelInteractionId':_0x2bc760['id'],'UserId':_0x301893[_0x6884('0x5b')]['id'],'ContactId':_0x4c3538['id']}))[_0x6884('0x20')](function(_0x39b2c8){_0x2bc760['dataValues']['Messages']=[];_0x2bc760['dataValues'][_0x6884('0xbf')][_0x6884('0xc0')](_0x39b2c8['dataValues']);return _0x2bc760;});});}})[_0x6884('0x20')](respondWithResult(_0x48ac7c,null))[_0x6884('0x54')](handleError(_0x48ac7c,null));};
\ No newline at end of file
index 40ed18e..9d8584f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['../../mysqldb','OpenchannelAccount','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4483,0x1a3));var _0x3448=function(_0x1249d4,_0x407cf1){_0x1249d4=_0x1249d4-0x0;var _0x17d889=_0x4483[_0x1249d4];return _0x17d889;};'use strict';var EventEmitter=require(_0x3448('0x0'));var OpenchannelAccount=require(_0x3448('0x1'))['db'][_0x3448('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3448('0x3'),'afterUpdate':_0x3448('0x4'),'afterDestroy':_0x3448('0x5')};function emitEvent(_0x3a7178){return function(_0xef1a93,_0x5f5163,_0xeb5b8){OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178+':'+_0xef1a93['id'],_0xef1a93);OpenchannelAccountEvents[_0x3448('0x6')](_0x3a7178,_0xef1a93);_0xeb5b8(null);};}for(var e in events){if(events[_0x3448('0x7')](e)){var event=events[e];OpenchannelAccount[_0x3448('0x8')](e,emitEvent(event));}}module[_0x3448('0x9')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x96cc=['remove','emit','hook','exports','events','OpenchannelAccount','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x96cc,0x16c));var _0xc96c=function(_0x431807,_0x187385){_0x431807=_0x431807-0x0;var _0x51d062=_0x96cc[_0x431807];return _0x51d062;};'use strict';var EventEmitter=require(_0xc96c('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xc96c('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc96c('0x2'),'afterUpdate':_0xc96c('0x3'),'afterDestroy':_0xc96c('0x4')};function emitEvent(_0x421701){return function(_0x71140d,_0x29b6f1,_0x377e6c){OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701+':'+_0x71140d['id'],_0x71140d);OpenchannelAccountEvents[_0xc96c('0x5')](_0x421701,_0x71140d);_0x377e6c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xc96c('0x6')](e,emitEvent(event));}}module[_0xc96c('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 18ecf2c..6b3ad68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x5ae76e,_0x1b666d){var _0x27f3de=function(_0x1a24c6){while(--_0x1a24c6){_0x5ae76e['push'](_0x5ae76e['shift']());}};_0x27f3de(++_0x1b666d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0xeb76af,_0x53463a){var _0x643b3b=function(_0x264ab8){while(--_0x264ab8){_0xeb76af['push'](_0xeb76af['shift']());}};_0x643b3b(++_0x53463a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5dfa3ac..52f13f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['redis','defaults','localhost','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x584f2c,_0x24cc50){var _0x26d2d6=function(_0x3441ef){while(--_0x3441ef){_0x584f2c['push'](_0x584f2c['shift']());}};_0x26d2d6(++_0x24cc50);}(_0x0bb5,0x148));var _0x50bb=function(_0x30112c,_0x705d1f){_0x30112c=_0x30112c-0x0;var _0xb68b14=_0x0bb5[_0x30112c];return _0xb68b14;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x50bb('0x2'));var fs=require('fs');var Redis=require(_0x50bb('0x3'));var db=require(_0x50bb('0x4'))['db'];var utils=require(_0x50bb('0x5'));var logger=require(_0x50bb('0x6'))(_0x50bb('0x7'));var config=require(_0x50bb('0x8'));var jayson=require(_0x50bb('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x50bb('0xa')]=_[_0x50bb('0xb')](config[_0x50bb('0xa')],{'host':_0x50bb('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x50bb('0xd'))[_0x50bb('0xe')](socket);function respondWithRpcPromise(_0x3ae598,_0x239a89,_0x5512e1){return new BPromise(function(_0x36f7a1,_0x2edeeb){return client[_0x50bb('0xf')](_0x3ae598,_0x5512e1)[_0x50bb('0x10')](function(_0x346422){logger[_0x50bb('0x11')](_0x50bb('0x12'),_0x239a89,'request\x20sent');logger[_0x50bb('0x13')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x239a89,_0x50bb('0x14'),JSON[_0x50bb('0x15')](_0x346422));if(_0x346422[_0x50bb('0x16')]){if(_0x346422['error'][_0x50bb('0x17')]===0x1f4){logger[_0x50bb('0x16')](_0x50bb('0x12'),_0x239a89,_0x346422['error'][_0x50bb('0x18')]);return _0x2edeeb(_0x346422['error'][_0x50bb('0x18')]);}logger[_0x50bb('0x16')](_0x50bb('0x12'),_0x239a89,_0x346422[_0x50bb('0x16')][_0x50bb('0x18')]);return _0x36f7a1(_0x346422['error'][_0x50bb('0x18')]);}else{logger[_0x50bb('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0x239a89,_0x50bb('0x14'));_0x36f7a1(_0x346422['result'][_0x50bb('0x18')]);}})[_0x50bb('0x19')](function(_0x4b06f5){logger['error'](_0x50bb('0x12'),_0x239a89,_0x4b06f5);_0x2edeeb(_0x4b06f5);});});}
\ No newline at end of file
+var _0x9ffd=['OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','request','then','info'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x4b5f37,_0x4ea768){_0x4b5f37=_0x4b5f37-0x0;var _0x273a3c=_0x9ffd[_0x4b5f37];return _0x273a3c;};'use strict';var _=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var moment=require(_0xd9ff('0x2'));var BPromise=require('bluebird');var rs=require(_0xd9ff('0x3'));var fs=require('fs');var Redis=require(_0xd9ff('0x4'));var db=require(_0xd9ff('0x5'))['db'];var utils=require(_0xd9ff('0x6'));var logger=require('../../config/logger')(_0xd9ff('0x7'));var config=require(_0xd9ff('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd9ff('0x9')][_0xd9ff('0xa')]({'port':0x232a});config[_0xd9ff('0xb')]=_[_0xd9ff('0xc')](config[_0xd9ff('0xb')],{'host':_0xd9ff('0xd'),'port':0x18eb});var socket=require(_0xd9ff('0xe'))(new Redis(config[_0xd9ff('0xb')]));require(_0xd9ff('0xf'))['register'](socket);function respondWithRpcPromise(_0x54a555,_0x567f79,_0x5aa954){return new BPromise(function(_0x2355ab,_0x2fd77a){return client[_0xd9ff('0x10')](_0x54a555,_0x5aa954)[_0xd9ff('0x11')](function(_0x37d2c0){logger[_0xd9ff('0x12')](_0xd9ff('0x13'),_0x567f79,_0xd9ff('0x14'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x567f79,_0xd9ff('0x14'),JSON[_0xd9ff('0x15')](_0x37d2c0));if(_0x37d2c0[_0xd9ff('0x16')]){if(_0x37d2c0[_0xd9ff('0x16')][_0xd9ff('0x17')]===0x1f4){logger['error'](_0xd9ff('0x13'),_0x567f79,_0x37d2c0[_0xd9ff('0x16')]['message']);return _0x2fd77a(_0x37d2c0[_0xd9ff('0x16')]['message']);}logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x567f79,_0x37d2c0['error'][_0xd9ff('0x18')]);return _0x2355ab(_0x37d2c0['error'][_0xd9ff('0x18')]);}else{logger[_0xd9ff('0x12')](_0xd9ff('0x13'),_0x567f79,_0xd9ff('0x14'));_0x2355ab(_0x37d2c0[_0xd9ff('0x19')][_0xd9ff('0x18')]);}})[_0xd9ff('0x1a')](function(_0x128588){logger[_0xd9ff('0x16')](_0xd9ff('0x13'),_0x567f79,_0x128588);_0x2fd77a(_0x128588);});});}
\ No newline at end of file
index f13d766..7bf7ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d53=['./openchannelAccount.events','save','update','emit','removeListener','openchannelAccount:'];(function(_0x51b3ce,_0xf4748c){var _0x3be819=function(_0xf93cf5){while(--_0xf93cf5){_0x51b3ce['push'](_0x51b3ce['shift']());}};_0x3be819(++_0xf4748c);}(_0x8d53,0x1c2));var _0x38d5=function(_0x17abfc,_0x2954ad){_0x17abfc=_0x17abfc-0x0;var _0x5b88be=_0x8d53[_0x17abfc];return _0x5b88be;};'use strict';var OpenchannelAccountEvents=require(_0x38d5('0x0'));var events=[_0x38d5('0x1'),'remove',_0x38d5('0x2')];function createListener(_0x34de32,_0x108137){return function(_0x453bf8){_0x108137[_0x38d5('0x3')](_0x34de32,_0x453bf8);};}function removeListener(_0x19c115,_0x1c8c53){return function(){OpenchannelAccountEvents[_0x38d5('0x4')](_0x19c115,_0x1c8c53);};}exports['register']=function(_0x31ccc0){for(var _0x5c6cc6=0x0,_0xeb7913=events['length'];_0x5c6cc6<_0xeb7913;_0x5c6cc6++){var _0x5ebf9a=events[_0x5c6cc6];var _0x284f7b=createListener(_0x38d5('0x5')+_0x5ebf9a,_0x31ccc0);OpenchannelAccountEvents['on'](_0x5ebf9a,_0x284f7b);}};
\ No newline at end of file
+var _0x5620=['remove','update','emit','register','length','./openchannelAccount.events'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x5620,0xbf));var _0x0562=function(_0x330d1f,_0x47c710){_0x330d1f=_0x330d1f-0x0;var _0x1df784=_0x5620[_0x330d1f];return _0x1df784;};'use strict';var OpenchannelAccountEvents=require(_0x0562('0x0'));var events=['save',_0x0562('0x1'),_0x0562('0x2')];function createListener(_0x517581,_0x57a89e){return function(_0x5d7473){_0x57a89e[_0x0562('0x3')](_0x517581,_0x5d7473);};}function removeListener(_0x4ef07f,_0x18ea87){return function(){OpenchannelAccountEvents['removeListener'](_0x4ef07f,_0x18ea87);};}exports[_0x0562('0x4')]=function(_0x39ab9a){for(var _0x4155b9=0x0,_0x24b8d1=events[_0x0562('0x5')];_0x4155b9<_0x24b8d1;_0x4155b9++){var _0x126c04=events[_0x4155b9];var _0x5f47ba=createListener('openchannelAccount:'+_0x126c04,_0x39ab9a);OpenchannelAccountEvents['on'](_0x126c04,_0x5f47ba);}};
\ No newline at end of file
index 9a30d7b..767927d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x005f=['connect-timeout','express','../../components/auth/service','./openchannelApplication.controller','/:id','isAuthenticated','post','create','put','update','destroy','multer','util','path'];(function(_0x45e98e,_0x169b60){var _0x374dba=function(_0x597612){while(--_0x597612){_0x45e98e['push'](_0x45e98e['shift']());}};_0x374dba(++_0x169b60);}(_0x005f,0x97));var _0xf005=function(_0x2eaff4,_0x4852b7){_0x2eaff4=_0x2eaff4-0x0;var _0x278c7a=_0x005f[_0x2eaff4];return _0x278c7a;};'use strict';var multer=require(_0xf005('0x0'));var util=require(_0xf005('0x1'));var path=require(_0xf005('0x2'));var timeout=require(_0xf005('0x3'));var express=require(_0xf005('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf005('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf005('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xf005('0x7'),auth[_0xf005('0x8')](),controller['show']);router[_0xf005('0x9')]('/',auth[_0xf005('0x8')](),controller[_0xf005('0xa')]);router[_0xf005('0xb')](_0xf005('0x7'),auth[_0xf005('0x8')](),controller[_0xf005('0xc')]);router['delete'](_0xf005('0x7'),auth[_0xf005('0x8')](),controller[_0xf005('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0x929c=['index','/:id','show','post','create','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated'];(function(_0x494965,_0x48ace5){var _0x3e682e=function(_0x463373){while(--_0x463373){_0x494965['push'](_0x494965['shift']());}};_0x3e682e(++_0x48ace5);}(_0x929c,0x1e4));var _0xc929=function(_0x24c029,_0x1d5c59){_0x24c029=_0x24c029-0x0;var _0x9f6a38=_0x929c[_0x24c029];return _0x9f6a38;};'use strict';var multer=require('multer');var util=require(_0xc929('0x0'));var path=require('path');var timeout=require(_0xc929('0x1'));var express=require(_0xc929('0x2'));var router=express[_0xc929('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc929('0x4'));var interaction=require(_0xc929('0x5'));var config=require(_0xc929('0x6'));var controller=require(_0xc929('0x7'));router[_0xc929('0x8')]('/',auth[_0xc929('0x9')](),controller[_0xc929('0xa')]);router[_0xc929('0x8')](_0xc929('0xb'),auth[_0xc929('0x9')](),controller[_0xc929('0xc')]);router[_0xc929('0xd')]('/',auth['isAuthenticated'](),controller[_0xc929('0xe')]);router['put'](_0xc929('0xb'),auth[_0xc929('0x9')](),controller[_0xc929('0xf')]);router[_0xc929('0x10')](_0xc929('0xb'),auth[_0xc929('0x9')](),controller[_0xc929('0x11')]);module[_0xc929('0x12')]=router;
\ No newline at end of file
index 1eeae4a..ddea6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ca3=['TEXT','STRING','sequelize','exports','INTEGER'];(function(_0x34f80e,_0x4b5772){var _0x4db65a=function(_0x1a24c3){while(--_0x1a24c3){_0x34f80e['push'](_0x34f80e['shift']());}};_0x4db65a(++_0x4b5772);}(_0x0ca3,0x1a6));var _0x30ca=function(_0x12a554,_0x3d7ef8){_0x12a554=_0x12a554-0x0;var _0x244ba0=_0x0ca3[_0x12a554];return _0x244ba0;};'use strict';var Sequelize=require(_0x30ca('0x0'));module[_0x30ca('0x1')]={'priority':{'type':Sequelize[_0x30ca('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x30ca('0x3')]()},'description':{'type':Sequelize[_0x30ca('0x4')]},'interval':{'type':Sequelize[_0x30ca('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x6dc2=['INTEGER','STRING','TEXT','*,*,*,*'];(function(_0x280012,_0x4ae242){var _0x4e7ff1=function(_0x2261de){while(--_0x2261de){_0x280012['push'](_0x280012['shift']());}};_0x4e7ff1(++_0x4ae242);}(_0x6dc2,0x1ec));var _0x26dc=function(_0x5edcaf,_0x1335a7){_0x5edcaf=_0x5edcaf-0x0;var _0x524291=_0x6dc2[_0x5edcaf];return _0x524291;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x26dc('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x26dc('0x1')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x26dc('0x2')]()},'description':{'type':Sequelize[_0x26dc('0x1')]},'interval':{'type':Sequelize[_0x26dc('0x1')],'defaultValue':_0x26dc('0x3')}};
\ No newline at end of file
index 6225f79..73a7359 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b4d=['then','sendStatus','stack','name','send','index','map','OpenchannelApplication','rawAttributes','fieldName','type','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','count','rows','show','params','include','create','body','catch','find','destroy','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update'];(function(_0x9e1376,_0x5eaf54){var _0x2e6916=function(_0x24183f){while(--_0x24183f){_0x9e1376['push'](_0x9e1376['shift']());}};_0x2e6916(++_0x5eaf54);}(_0x9b4d,0x184));var _0xd9b4=function(_0x59d12e,_0x1128ff){_0x59d12e=_0x59d12e-0x0;var _0x2f5ee4=_0x9b4d[_0x59d12e];return _0x2f5ee4;};'use strict';var emlformat=require(_0xd9b4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd9b4('0x1'));var jsonpatch=require(_0xd9b4('0x2'));var rp=require(_0xd9b4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd9b4('0x4'));var util=require(_0xd9b4('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xd9b4('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd9b4('0x7'));var _=require(_0xd9b4('0x8'));var squel=require(_0xd9b4('0x9'));var crypto=require(_0xd9b4('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xd9b4('0xb'));var toCsv=require(_0xd9b4('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd9b4('0xc'));var authService=require(_0xd9b4('0xd'));var qs=require(_0xd9b4('0xe'));var as=require(_0xd9b4('0xf'));var hardwareService=require(_0xd9b4('0x10'));var logger=require('../../config/logger')(_0xd9b4('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd9b4('0x12'));var db=require(_0xd9b4('0x13'))['db'];function respondWithStatusCode(_0xa81d2c,_0x408620){_0x408620=_0x408620||0xcc;return function(_0x2d7aec){if(_0x2d7aec){return _0xa81d2c['sendStatus'](_0x408620);}return _0xa81d2c[_0xd9b4('0x14')](_0x408620)[_0xd9b4('0x15')]();};}function respondWithResult(_0x519c49,_0x415fe0){_0x415fe0=_0x415fe0||0xc8;return function(_0x1b6ce2){if(_0x1b6ce2){return _0x519c49[_0xd9b4('0x14')](_0x415fe0)[_0xd9b4('0x16')](_0x1b6ce2);}};}function respondWithFilteredResult(_0x4ff30b,_0xe1d4d9){return function(_0x2f8540){if(_0x2f8540){var _0x30f792=typeof _0xe1d4d9[_0xd9b4('0x17')]===_0xd9b4('0x18')&&typeof _0xe1d4d9['limit']===_0xd9b4('0x18');var _0x508505=_0x2f8540['count'];var _0x21551c=_0x30f792?0x0:_0xe1d4d9[_0xd9b4('0x17')];var _0x434de9=_0x30f792?_0x2f8540['count']:_0xe1d4d9['offset']+_0xe1d4d9[_0xd9b4('0x19')];var _0x3c1038;if(_0x434de9>=_0x508505){_0x434de9=_0x508505;_0x3c1038=0xc8;}else{_0x3c1038=0xce;}_0x4ff30b['status'](_0x3c1038);return _0x4ff30b[_0xd9b4('0x1a')](_0xd9b4('0x1b'),_0x21551c+'-'+_0x434de9+'/'+_0x508505)[_0xd9b4('0x16')](_0x2f8540);}return null;};}function patchUpdates(_0x22a3b5){return function(_0x440187){try{jsonpatch[_0xd9b4('0x1c')](_0x440187,_0x22a3b5,!![]);}catch(_0x3f4e8a){return BPromise[_0xd9b4('0x1d')](_0x3f4e8a);}return _0x440187[_0xd9b4('0x1e')]();};}function saveUpdates(_0x2b5280,_0x3465da){return function(_0x435a6d){if(_0x435a6d){return _0x435a6d[_0xd9b4('0x1f')](_0x2b5280)[_0xd9b4('0x20')](function(_0x1a8a38){return _0x1a8a38;});}return null;};}function removeEntity(_0x46f99b,_0x510fd0){return function(_0x5c3628){if(_0x5c3628){return _0x5c3628['destroy']()[_0xd9b4('0x20')](function(){_0x46f99b[_0xd9b4('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12adc2,_0x446348){return function(_0x205bc9){if(!_0x205bc9){_0x12adc2[_0xd9b4('0x21')](0x194);}return _0x205bc9;};}function handleError(_0x52153d,_0x5eee04){_0x5eee04=_0x5eee04||0x1f4;return function(_0x77d229){logger['error'](_0x77d229[_0xd9b4('0x22')]);if(_0x77d229[_0xd9b4('0x23')]){delete _0x77d229[_0xd9b4('0x23')];}_0x52153d[_0xd9b4('0x14')](_0x5eee04)[_0xd9b4('0x24')](_0x77d229);};}exports[_0xd9b4('0x25')]=function(_0x4170ae,_0xd9dff8){var _0x502e16={},_0x429a86={},_0x5cb203={'count':0x0,'rows':[]};var _0x4abe66=_[_0xd9b4('0x26')](db[_0xd9b4('0x27')][_0xd9b4('0x28')],function(_0x51f0d7){return{'name':_0x51f0d7[_0xd9b4('0x29')],'type':_0x51f0d7[_0xd9b4('0x2a')]['key']};});_0x429a86['model']=_[_0xd9b4('0x26')](_0x4abe66,'name');_0x429a86[_0xd9b4('0x2b')]=_[_0xd9b4('0x2c')](_0x4170ae['query']);_0x429a86['filters']=_['intersection'](_0x429a86[_0xd9b4('0x2d')],_0x429a86[_0xd9b4('0x2b')]);_0x502e16[_0xd9b4('0x2e')]=_[_0xd9b4('0x2f')](_0x429a86[_0xd9b4('0x2d')],qs[_0xd9b4('0x30')](_0x4170ae[_0xd9b4('0x2b')][_0xd9b4('0x30')]));_0x502e16[_0xd9b4('0x2e')]=_0x502e16[_0xd9b4('0x2e')][_0xd9b4('0x31')]?_0x502e16[_0xd9b4('0x2e')]:_0x429a86[_0xd9b4('0x2d')];if(!_0x4170ae[_0xd9b4('0x2b')][_0xd9b4('0x32')](_0xd9b4('0x33'))){_0x502e16[_0xd9b4('0x19')]=qs['limit'](_0x4170ae[_0xd9b4('0x2b')][_0xd9b4('0x19')]);_0x502e16['offset']=qs[_0xd9b4('0x17')](_0x4170ae[_0xd9b4('0x2b')]['offset']);}_0x502e16[_0xd9b4('0x34')]=qs[_0xd9b4('0x35')](_0x4170ae[_0xd9b4('0x2b')]['sort']);_0x502e16[_0xd9b4('0x36')]=qs[_0xd9b4('0x37')](_[_0xd9b4('0x38')](_0x4170ae[_0xd9b4('0x2b')],_0x429a86[_0xd9b4('0x37')]),_0x4abe66);if(_0x4170ae[_0xd9b4('0x2b')][_0xd9b4('0x39')]){_0x502e16[_0xd9b4('0x36')]=_[_0xd9b4('0x3a')](_0x502e16[_0xd9b4('0x36')],{'$or':_['map'](_0x4abe66,function(_0x531152){if(_0x531152[_0xd9b4('0x2a')]!==_0xd9b4('0x3b')){var _0x421877={};_0x421877[_0x531152[_0xd9b4('0x23')]]={'$like':'%'+_0x4170ae[_0xd9b4('0x2b')][_0xd9b4('0x39')]+'%'};return _0x421877;}})});}_0x502e16=_['merge']({},_0x502e16,_0x4170ae['options']);var _0x6976b9={'where':_0x502e16[_0xd9b4('0x36')]};return db['OpenchannelApplication'][_0xd9b4('0x3c')](_0x6976b9)[_0xd9b4('0x20')](function(_0x5e945a){_0x5cb203[_0xd9b4('0x3c')]=_0x5e945a;if(_0x4170ae[_0xd9b4('0x2b')]['includeAll']){_0x502e16['include']=[{'all':!![]}];}return db[_0xd9b4('0x27')]['findAll'](_0x502e16);})[_0xd9b4('0x20')](function(_0x4f2197){_0x5cb203[_0xd9b4('0x3d')]=_0x4f2197;return _0x5cb203;})[_0xd9b4('0x20')](respondWithFilteredResult(_0xd9dff8,_0x502e16))['catch'](handleError(_0xd9dff8,null));};exports[_0xd9b4('0x3e')]=function(_0x50b7bf,_0x548a31){var _0x183f29={'raw':!![],'where':{'id':_0x50b7bf[_0xd9b4('0x3f')]['id']}},_0x2259dd={};_0x2259dd['model']=_[_0xd9b4('0x2c')](db['OpenchannelApplication'][_0xd9b4('0x28')]);_0x2259dd[_0xd9b4('0x2b')]=_[_0xd9b4('0x2c')](_0x50b7bf[_0xd9b4('0x2b')]);_0x2259dd[_0xd9b4('0x37')]=_['intersection'](_0x2259dd[_0xd9b4('0x2d')],_0x2259dd[_0xd9b4('0x2b')]);_0x183f29['attributes']=_[_0xd9b4('0x2f')](_0x2259dd['model'],qs['fields'](_0x50b7bf[_0xd9b4('0x2b')][_0xd9b4('0x30')]));_0x183f29[_0xd9b4('0x2e')]=_0x183f29[_0xd9b4('0x2e')][_0xd9b4('0x31')]?_0x183f29[_0xd9b4('0x2e')]:_0x2259dd['model'];if(_0x50b7bf[_0xd9b4('0x2b')]['includeAll']){_0x183f29[_0xd9b4('0x40')]=[{'all':!![]}];}_0x183f29=_[_0xd9b4('0x3a')]({},_0x183f29,_0x50b7bf['options']);return db[_0xd9b4('0x27')]['find'](_0x183f29)[_0xd9b4('0x20')](handleEntityNotFound(_0x548a31,null))[_0xd9b4('0x20')](respondWithResult(_0x548a31,null))['catch'](handleError(_0x548a31,null));};exports[_0xd9b4('0x41')]=function(_0x30d73d,_0x59867f){return db['OpenchannelApplication'][_0xd9b4('0x41')](_0x30d73d[_0xd9b4('0x42')],{})[_0xd9b4('0x20')](respondWithResult(_0x59867f,0xc9))[_0xd9b4('0x43')](handleError(_0x59867f,null));};exports['update']=function(_0xb63088,_0x557192){if(_0xb63088[_0xd9b4('0x42')]['id']){delete _0xb63088[_0xd9b4('0x42')]['id'];}return db[_0xd9b4('0x27')][_0xd9b4('0x44')]({'where':{'id':_0xb63088['params']['id']}})[_0xd9b4('0x20')](handleEntityNotFound(_0x557192,null))[_0xd9b4('0x20')](saveUpdates(_0xb63088[_0xd9b4('0x42')],null))['then'](respondWithResult(_0x557192,null))[_0xd9b4('0x43')](handleError(_0x557192,null));};exports[_0xd9b4('0x45')]=function(_0x529871,_0x8c667f){return db[_0xd9b4('0x27')][_0xd9b4('0x44')]({'where':{'id':_0x529871[_0xd9b4('0x3f')]['id']}})['then'](handleEntityNotFound(_0x8c667f,null))['then'](removeEntity(_0x8c667f,null))['catch'](handleError(_0x8c667f,null));};
\ No newline at end of file
+var _0xa804=['findAll','catch','show','params','keys','intersection','length','find','body','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','attributes','fields','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include'];(function(_0x13af07,_0x259c48){var _0x8678d9=function(_0x2d82af){while(--_0x2d82af){_0x13af07['push'](_0x13af07['shift']());}};_0x8678d9(++_0x259c48);}(_0xa804,0x195));var _0x4a80=function(_0x1d698b,_0x254238){_0x1d698b=_0x1d698b-0x0;var _0x45dc4c=_0xa804[_0x1d698b];return _0x45dc4c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a80('0x0'));var zipdir=require(_0x4a80('0x1'));var jsonpatch=require(_0x4a80('0x2'));var rp=require(_0x4a80('0x3'));var moment=require(_0x4a80('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4a80('0x5'));var util=require(_0x4a80('0x6'));var path=require(_0x4a80('0x7'));var sox=require(_0x4a80('0x8'));var csv=require(_0x4a80('0x9'));var ejs=require(_0x4a80('0xa'));var fs=require('fs');var fs_extra=require(_0x4a80('0xb'));var _=require(_0x4a80('0xc'));var squel=require(_0x4a80('0xd'));var crypto=require(_0x4a80('0xe'));var jsforce=require(_0x4a80('0xf'));var deskjs=require(_0x4a80('0x10'));var toCsv=require(_0x4a80('0x9'));var querystring=require(_0x4a80('0x11'));var Papa=require(_0x4a80('0x12'));var Redis=require(_0x4a80('0x13'));var authService=require(_0x4a80('0x14'));var qs=require(_0x4a80('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4a80('0x16'));var logger=require(_0x4a80('0x17'))('api');var utils=require(_0x4a80('0x18'));var config=require(_0x4a80('0x19'));var licenseUtil=require(_0x4a80('0x1a'));var db=require(_0x4a80('0x1b'))['db'];function respondWithStatusCode(_0x57e9c0,_0x122092){_0x122092=_0x122092||0xcc;return function(_0x31dd20){if(_0x31dd20){return _0x57e9c0[_0x4a80('0x1c')](_0x122092);}return _0x57e9c0[_0x4a80('0x1d')](_0x122092)[_0x4a80('0x1e')]();};}function respondWithResult(_0x4bacb3,_0x384fd2){_0x384fd2=_0x384fd2||0xc8;return function(_0x205c4d){if(_0x205c4d){return _0x4bacb3[_0x4a80('0x1d')](_0x384fd2)[_0x4a80('0x1f')](_0x205c4d);}};}function respondWithFilteredResult(_0x30b051,_0x3432f2){return function(_0xc215a8){if(_0xc215a8){var _0x2fe12d=typeof _0x3432f2[_0x4a80('0x20')]==='undefined'&&typeof _0x3432f2[_0x4a80('0x21')]===_0x4a80('0x22');var _0x263d33=_0xc215a8[_0x4a80('0x23')];var _0x24a068=_0x2fe12d?0x0:_0x3432f2[_0x4a80('0x20')];var _0x568c82=_0x2fe12d?_0xc215a8[_0x4a80('0x23')]:_0x3432f2[_0x4a80('0x20')]+_0x3432f2['limit'];var _0x31f2fe;if(_0x568c82>=_0x263d33){_0x568c82=_0x263d33;_0x31f2fe=0xc8;}else{_0x31f2fe=0xce;}_0x30b051[_0x4a80('0x1d')](_0x31f2fe);return _0x30b051[_0x4a80('0x24')](_0x4a80('0x25'),_0x24a068+'-'+_0x568c82+'/'+_0x263d33)[_0x4a80('0x1f')](_0xc215a8);}return null;};}function patchUpdates(_0x499925){return function(_0x1f50d0){try{jsonpatch[_0x4a80('0x26')](_0x1f50d0,_0x499925,!![]);}catch(_0x296aab){return BPromise[_0x4a80('0x27')](_0x296aab);}return _0x1f50d0[_0x4a80('0x28')]();};}function saveUpdates(_0x2062d0,_0x5b09e6){return function(_0x4035e3){if(_0x4035e3){return _0x4035e3[_0x4a80('0x29')](_0x2062d0)[_0x4a80('0x2a')](function(_0xefa69a){return _0xefa69a;});}return null;};}function removeEntity(_0x188500,_0x5535b5){return function(_0x56e861){if(_0x56e861){return _0x56e861['destroy']()[_0x4a80('0x2a')](function(){_0x188500['status'](0xcc)[_0x4a80('0x1e')]();});}};}function handleEntityNotFound(_0x488a6f,_0x28f63e){return function(_0x208de1){if(!_0x208de1){_0x488a6f['sendStatus'](0x194);}return _0x208de1;};}function handleError(_0x4f6034,_0x4bd9a2){_0x4bd9a2=_0x4bd9a2||0x1f4;return function(_0x27dc87){logger[_0x4a80('0x2b')](_0x27dc87[_0x4a80('0x2c')]);if(_0x27dc87['name']){delete _0x27dc87[_0x4a80('0x2d')];}_0x4f6034[_0x4a80('0x1d')](_0x4bd9a2)[_0x4a80('0x2e')](_0x27dc87);};}exports['index']=function(_0x1fd3d0,_0x3bb127){var _0x400fe3={},_0x40a381={},_0x51fc17={'count':0x0,'rows':[]};var _0x27d69f=_[_0x4a80('0x2f')](db[_0x4a80('0x30')][_0x4a80('0x31')],function(_0x24898e){return{'name':_0x24898e[_0x4a80('0x32')],'type':_0x24898e[_0x4a80('0x33')][_0x4a80('0x34')]};});_0x40a381[_0x4a80('0x35')]=_[_0x4a80('0x2f')](_0x27d69f,_0x4a80('0x2d'));_0x40a381[_0x4a80('0x36')]=_['keys'](_0x1fd3d0['query']);_0x40a381['filters']=_['intersection'](_0x40a381[_0x4a80('0x35')],_0x40a381['query']);_0x400fe3[_0x4a80('0x37')]=_['intersection'](_0x40a381[_0x4a80('0x35')],qs[_0x4a80('0x38')](_0x1fd3d0['query'][_0x4a80('0x38')]));_0x400fe3[_0x4a80('0x37')]=_0x400fe3[_0x4a80('0x37')]['length']?_0x400fe3[_0x4a80('0x37')]:_0x40a381[_0x4a80('0x35')];if(!_0x1fd3d0['query']['hasOwnProperty'](_0x4a80('0x39'))){_0x400fe3[_0x4a80('0x21')]=qs[_0x4a80('0x21')](_0x1fd3d0[_0x4a80('0x36')]['limit']);_0x400fe3[_0x4a80('0x20')]=qs['offset'](_0x1fd3d0['query'][_0x4a80('0x20')]);}_0x400fe3[_0x4a80('0x3a')]=qs[_0x4a80('0x3b')](_0x1fd3d0[_0x4a80('0x36')]['sort']);_0x400fe3[_0x4a80('0x3c')]=qs[_0x4a80('0x3d')](_[_0x4a80('0x3e')](_0x1fd3d0['query'],_0x40a381[_0x4a80('0x3d')]),_0x27d69f);if(_0x1fd3d0[_0x4a80('0x36')][_0x4a80('0x3f')]){_0x400fe3['where']=_[_0x4a80('0x40')](_0x400fe3[_0x4a80('0x3c')],{'$or':_['map'](_0x27d69f,function(_0x446334){if(_0x446334[_0x4a80('0x33')]!==_0x4a80('0x41')){var _0x504cdd={};_0x504cdd[_0x446334['name']]={'$like':'%'+_0x1fd3d0[_0x4a80('0x36')][_0x4a80('0x3f')]+'%'};return _0x504cdd;}})});}_0x400fe3=_[_0x4a80('0x40')]({},_0x400fe3,_0x1fd3d0[_0x4a80('0x42')]);var _0x4bfcbf={'where':_0x400fe3[_0x4a80('0x3c')]};return db[_0x4a80('0x30')][_0x4a80('0x23')](_0x4bfcbf)[_0x4a80('0x2a')](function(_0x125511){_0x51fc17['count']=_0x125511;if(_0x1fd3d0[_0x4a80('0x36')][_0x4a80('0x43')]){_0x400fe3[_0x4a80('0x44')]=[{'all':!![]}];}return db[_0x4a80('0x30')][_0x4a80('0x45')](_0x400fe3);})[_0x4a80('0x2a')](function(_0x54e23c){_0x51fc17['rows']=_0x54e23c;return _0x51fc17;})['then'](respondWithFilteredResult(_0x3bb127,_0x400fe3))[_0x4a80('0x46')](handleError(_0x3bb127,null));};exports[_0x4a80('0x47')]=function(_0x837aad,_0x1fd579){var _0x3cc300={'raw':!![],'where':{'id':_0x837aad[_0x4a80('0x48')]['id']}},_0x45a47f={};_0x45a47f[_0x4a80('0x35')]=_[_0x4a80('0x49')](db['OpenchannelApplication']['rawAttributes']);_0x45a47f[_0x4a80('0x36')]=_[_0x4a80('0x49')](_0x837aad[_0x4a80('0x36')]);_0x45a47f[_0x4a80('0x3d')]=_[_0x4a80('0x4a')](_0x45a47f[_0x4a80('0x35')],_0x45a47f['query']);_0x3cc300[_0x4a80('0x37')]=_['intersection'](_0x45a47f[_0x4a80('0x35')],qs['fields'](_0x837aad[_0x4a80('0x36')][_0x4a80('0x38')]));_0x3cc300['attributes']=_0x3cc300[_0x4a80('0x37')][_0x4a80('0x4b')]?_0x3cc300[_0x4a80('0x37')]:_0x45a47f[_0x4a80('0x35')];if(_0x837aad[_0x4a80('0x36')][_0x4a80('0x43')]){_0x3cc300['include']=[{'all':!![]}];}_0x3cc300=_['merge']({},_0x3cc300,_0x837aad[_0x4a80('0x42')]);return db['OpenchannelApplication'][_0x4a80('0x4c')](_0x3cc300)[_0x4a80('0x2a')](handleEntityNotFound(_0x1fd579,null))[_0x4a80('0x2a')](respondWithResult(_0x1fd579,null))['catch'](handleError(_0x1fd579,null));};exports['create']=function(_0x5037cc,_0x56dc34){return db[_0x4a80('0x30')]['create'](_0x5037cc[_0x4a80('0x4d')],{})[_0x4a80('0x2a')](respondWithResult(_0x56dc34,0xc9))['catch'](handleError(_0x56dc34,null));};exports['update']=function(_0x520119,_0x577acd){if(_0x520119[_0x4a80('0x4d')]['id']){delete _0x520119[_0x4a80('0x4d')]['id'];}return db[_0x4a80('0x30')][_0x4a80('0x4c')]({'where':{'id':_0x520119[_0x4a80('0x48')]['id']}})[_0x4a80('0x2a')](handleEntityNotFound(_0x577acd,null))[_0x4a80('0x2a')](saveUpdates(_0x520119[_0x4a80('0x4d')],null))[_0x4a80('0x2a')](respondWithResult(_0x577acd,null))['catch'](handleError(_0x577acd,null));};exports[_0x4a80('0x4e')]=function(_0x3c369f,_0x8903f9){return db[_0x4a80('0x30')]['find']({'where':{'id':_0x3c369f['params']['id']}})['then'](handleEntityNotFound(_0x8903f9,null))[_0x4a80('0x2a')](removeEntity(_0x8903f9,null))[_0x4a80('0x46')](handleError(_0x8903f9,null));};
\ No newline at end of file
index ce7dddd..bddc84c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf13=['util','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','lodash'];(function(_0x363c4e,_0x424201){var _0x4bdc7b=function(_0x59ea1a){while(--_0x59ea1a){_0x363c4e['push'](_0x363c4e['shift']());}};_0x4bdc7b(++_0x424201);}(_0xdf13,0x109));var _0x3df1=function(_0x282442,_0x135555){_0x282442=_0x282442-0x0;var _0xf97807=_0xdf13[_0x282442];return _0xf97807;};'use strict';var _=require(_0x3df1('0x0'));var util=require(_0x3df1('0x1'));var logger=require('../../config/logger')(_0x3df1('0x2'));var moment=require(_0x3df1('0x3'));var BPromise=require('bluebird');var rp=require(_0x3df1('0x4'));var fs=require('fs');var path=require(_0x3df1('0x5'));var rimraf=require(_0x3df1('0x6'));var config=require(_0x3df1('0x7'));var attributes=require(_0x3df1('0x8'));module[_0x3df1('0x9')]=function(_0x5cf8d6,_0x5cebfe){return _0x5cf8d6[_0x3df1('0xa')](_0x3df1('0xb'),attributes,{'tableName':_0x3df1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3df1('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xdc5c=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelApplication.attributes','define','OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci'];(function(_0x4b6e32,_0x5a050d){var _0x28d036=function(_0x38dec1){while(--_0x38dec1){_0x4b6e32['push'](_0x4b6e32['shift']());}};_0x28d036(++_0x5a050d);}(_0xdc5c,0x17a));var _0xcdc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdc5c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xcdc5('0x0'));var util=require(_0xcdc5('0x1'));var logger=require(_0xcdc5('0x2'))(_0xcdc5('0x3'));var moment=require(_0xcdc5('0x4'));var BPromise=require(_0xcdc5('0x5'));var rp=require(_0xcdc5('0x6'));var fs=require('fs');var path=require(_0xcdc5('0x7'));var rimraf=require(_0xcdc5('0x8'));var config=require('../../config/environment');var attributes=require(_0xcdc5('0x9'));module['exports']=function(_0x439afd,_0x297352){return _0x439afd[_0xcdc5('0xa')](_0xcdc5('0xb'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcdc5('0xc'),'collate':_0xcdc5('0xd')});};
\ No newline at end of file
index d65b171..fb6a9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f48=['request\x20sent','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','options','raw','where','attributes','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3f993e,_0x2d5757){var _0x39c135=function(_0x39e00b){while(--_0x39e00b){_0x3f993e['push'](_0x3f993e['shift']());}};_0x39c135(++_0x2d5757);}(_0x6f48,0x86));var _0x86f4=function(_0x3daa3f,_0x1b8535){_0x3daa3f=_0x3daa3f-0x0;var _0xd021d5=_0x6f48[_0x3daa3f];return _0xd021d5;};'use strict';var _=require(_0x86f4('0x0'));var util=require(_0x86f4('0x1'));var moment=require('moment');var BPromise=require(_0x86f4('0x2'));var rs=require(_0x86f4('0x3'));var fs=require('fs');var Redis=require(_0x86f4('0x4'));var db=require(_0x86f4('0x5'))['db'];var utils=require(_0x86f4('0x6'));var logger=require(_0x86f4('0x7'))(_0x86f4('0x8'));var config=require(_0x86f4('0x9'));var jayson=require(_0x86f4('0xa'));var client=jayson[_0x86f4('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xad523b,_0x126a03,_0x3260a3){return new BPromise(function(_0x2e07c2,_0x426f8e){return client[_0x86f4('0xc')](_0xad523b,_0x3260a3)['then'](function(_0x388559){logger[_0x86f4('0xd')](_0x86f4('0xe'),_0x126a03,'request\x20sent');logger[_0x86f4('0xf')](_0x86f4('0x10'),_0x126a03,'request\x20sent',JSON[_0x86f4('0x11')](_0x388559));if(_0x388559[_0x86f4('0x12')]){if(_0x388559[_0x86f4('0x12')][_0x86f4('0x13')]===0x1f4){logger[_0x86f4('0x12')](_0x86f4('0xe'),_0x126a03,_0x388559[_0x86f4('0x12')][_0x86f4('0x14')]);return _0x426f8e(_0x388559['error'][_0x86f4('0x14')]);}logger['error'](_0x86f4('0xe'),_0x126a03,_0x388559[_0x86f4('0x12')][_0x86f4('0x14')]);return _0x2e07c2(_0x388559['error'][_0x86f4('0x14')]);}else{logger[_0x86f4('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0x126a03,_0x86f4('0x15'));_0x2e07c2(_0x388559[_0x86f4('0x16')][_0x86f4('0x14')]);}})[_0x86f4('0x17')](function(_0x1f2faf){logger[_0x86f4('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x126a03,_0x1f2faf);_0x426f8e(_0x1f2faf);});});}exports[_0x86f4('0x18')]=function(_0x5244d7){var _0x2bb2ba=this;return new Promise(function(_0x2517d5,_0x48d63f){return db[_0x86f4('0x19')][_0x86f4('0x1a')](_0x5244d7['body'],{'raw':_0x5244d7[_0x86f4('0x1b')]?_0x5244d7[_0x86f4('0x1b')][_0x86f4('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5244d7[_0x86f4('0x1b')]?_0x5244d7[_0x86f4('0x1b')][_0x86f4('0x1d')]||null:null,'attributes':_0x5244d7[_0x86f4('0x1b')]?_0x5244d7['options'][_0x86f4('0x1e')]||null:null,'limit':_0x5244d7['options']?_0x5244d7[_0x86f4('0x1b')]['limit']||null:null})['then'](function(_0x1f2a00){logger[_0x86f4('0xd')](_0x86f4('0x18'),_0x5244d7);logger[_0x86f4('0xf')]('UpdateOpenchannelApplication',_0x5244d7,JSON[_0x86f4('0x11')](_0x1f2a00));_0x2517d5(_0x1f2a00);})[_0x86f4('0x17')](function(_0x457f55){logger[_0x86f4('0x12')](_0x86f4('0x18'),_0x457f55[_0x86f4('0x14')],_0x5244d7);_0x48d63f(_0x2bb2ba[_0x86f4('0x12')](0x1f4,_0x457f55[_0x86f4('0x14')]));});});};
\ No newline at end of file
+var _0x2d46=['rpc','../../config/environment','jayson/promise','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','OpenchannelApplication','update','body','options','where','limit','debug','UpdateOpenchannelApplication','util','bluebird','randomstring','../../config/utils','../../config/logger'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x2d46,0x1d7));var _0x62d4=function(_0x1c285e,_0x2c4178){_0x1c285e=_0x1c285e-0x0;var _0x49b78b=_0x2d46[_0x1c285e];return _0x49b78b;};'use strict';var _=require('lodash');var util=require(_0x62d4('0x0'));var moment=require('moment');var BPromise=require(_0x62d4('0x1'));var rs=require(_0x62d4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x62d4('0x3'));var logger=require(_0x62d4('0x4'))(_0x62d4('0x5'));var config=require(_0x62d4('0x6'));var jayson=require(_0x62d4('0x7'));var client=jayson[_0x62d4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x390bc3,_0x162d90,_0x5cdff3){return new BPromise(function(_0x5cd60d,_0x5f3379){return client[_0x62d4('0x9')](_0x390bc3,_0x5cdff3)[_0x62d4('0xa')](function(_0x51e05a){logger[_0x62d4('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x162d90,'request\x20sent');logger['debug'](_0x62d4('0xc'),_0x162d90,_0x62d4('0xd'),JSON[_0x62d4('0xe')](_0x51e05a));if(_0x51e05a[_0x62d4('0xf')]){if(_0x51e05a['error']['code']===0x1f4){logger[_0x62d4('0xf')](_0x62d4('0x10'),_0x162d90,_0x51e05a['error']['message']);return _0x5f3379(_0x51e05a[_0x62d4('0xf')]['message']);}logger[_0x62d4('0xf')](_0x62d4('0x10'),_0x162d90,_0x51e05a['error'][_0x62d4('0x11')]);return _0x5cd60d(_0x51e05a[_0x62d4('0xf')]['message']);}else{logger['info'](_0x62d4('0x10'),_0x162d90,_0x62d4('0xd'));_0x5cd60d(_0x51e05a[_0x62d4('0x12')][_0x62d4('0x11')]);}})[_0x62d4('0x13')](function(_0x11bf94){logger[_0x62d4('0xf')](_0x62d4('0x10'),_0x162d90,_0x11bf94);_0x5f3379(_0x11bf94);});});}exports['UpdateOpenchannelApplication']=function(_0x1cc111){var _0x14e558=this;return new Promise(function(_0x4ea155,_0x54c592){return db[_0x62d4('0x14')][_0x62d4('0x15')](_0x1cc111[_0x62d4('0x16')],{'raw':_0x1cc111[_0x62d4('0x17')]?_0x1cc111[_0x62d4('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1cc111[_0x62d4('0x17')]?_0x1cc111[_0x62d4('0x17')][_0x62d4('0x18')]||null:null,'attributes':_0x1cc111[_0x62d4('0x17')]?_0x1cc111[_0x62d4('0x17')]['attributes']||null:null,'limit':_0x1cc111[_0x62d4('0x17')]?_0x1cc111[_0x62d4('0x17')][_0x62d4('0x19')]||null:null})['then'](function(_0x2096df){logger[_0x62d4('0xb')]('UpdateOpenchannelApplication',_0x1cc111);logger[_0x62d4('0x1a')](_0x62d4('0x1b'),_0x1cc111,JSON[_0x62d4('0xe')](_0x2096df));_0x4ea155(_0x2096df);})[_0x62d4('0x13')](function(_0x3fb6f4){logger[_0x62d4('0xf')](_0x62d4('0x1b'),_0x3fb6f4['message'],_0x1cc111);_0x54c592(_0x14e558['error'](0x1f4,_0x3fb6f4['message']));});});};
\ No newline at end of file
index 7ff0dba..022a61c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x666d=['/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked','openchannel','addTags','put','openchannelinteraction:update','delete','openchannelinteraction:destroy','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','/describe','describe','get','/:id'];(function(_0x56ba41,_0x45dc22){var _0x1ef66d=function(_0x1a08c4){while(--_0x1a08c4){_0x56ba41['push'](_0x56ba41['shift']());}};_0x1ef66d(++_0x45dc22);}(_0x666d,0x1f0));var _0xd666=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x666d[_0x413feb];return _0x40ee88;};'use strict';var multer=require(_0xd666('0x0'));var util=require(_0xd666('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd666('0x2'));var router=express[_0xd666('0x3')]();var fs_extra=require(_0xd666('0x4'));var auth=require(_0xd666('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd666('0x6'));var controller=require(_0xd666('0x7'));router['get']('/',auth[_0xd666('0x8')](),controller[_0xd666('0x9')]);router['get'](_0xd666('0xa'),auth[_0xd666('0x8')](),controller[_0xd666('0xb')]);router[_0xd666('0xc')](_0xd666('0xd'),auth[_0xd666('0x8')](),controller['show']);router[_0xd666('0xc')](_0xd666('0xe'),auth[_0xd666('0x8')](),controller[_0xd666('0xf')]);router[_0xd666('0xc')](_0xd666('0x10'),auth[_0xd666('0x8')](),controller['download']);router[_0xd666('0x11')]('/',auth[_0xd666('0x8')](),controller[_0xd666('0x12')]);router[_0xd666('0x11')]('/:id/messages',auth['isAuthenticated'](),controller[_0xd666('0x13')]);router[_0xd666('0x11')](_0xd666('0x14'),auth[_0xd666('0x8')](),interaction[_0xd666('0x15')](_0xd666('0x16'),'openchannelinteraction:addtags'),controller[_0xd666('0x17')]);router[_0xd666('0x18')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0xd666('0x16'),_0xd666('0x19')),controller['update']);router[_0xd666('0x1a')]('/:id',auth['isAuthenticated'](),interaction[_0xd666('0x15')](_0xd666('0x16'),_0xd666('0x1b')),controller[_0xd666('0x1c')]);router[_0xd666('0x1a')](_0xd666('0x14'),auth['isAuthenticated'](),controller['removeTags']);module[_0xd666('0x1d')]=router;
\ No newline at end of file
+var _0x4ede=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags','put','openchannel','openchannelinteraction:update','update','delete','destroy','removeTags','util','path','express'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4ede,0xbd));var _0xe4ed=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x4ede[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require('multer');var util=require(_0xe4ed('0x0'));var path=require(_0xe4ed('0x1'));var timeout=require('connect-timeout');var express=require(_0xe4ed('0x2'));var router=express[_0xe4ed('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe4ed('0x4'));var interaction=require(_0xe4ed('0x5'));var config=require(_0xe4ed('0x6'));var controller=require(_0xe4ed('0x7'));router[_0xe4ed('0x8')]('/',auth[_0xe4ed('0x9')](),controller[_0xe4ed('0xa')]);router[_0xe4ed('0x8')](_0xe4ed('0xb'),auth[_0xe4ed('0x9')](),controller['describe']);router[_0xe4ed('0x8')](_0xe4ed('0xc'),auth['isAuthenticated'](),controller[_0xe4ed('0xd')]);router['get'](_0xe4ed('0xe'),auth[_0xe4ed('0x9')](),controller[_0xe4ed('0xf')]);router[_0xe4ed('0x8')](_0xe4ed('0x10'),auth[_0xe4ed('0x9')](),controller[_0xe4ed('0x11')]);router[_0xe4ed('0x12')]('/',auth[_0xe4ed('0x9')](),controller[_0xe4ed('0x13')]);router[_0xe4ed('0x12')](_0xe4ed('0xe'),auth[_0xe4ed('0x9')](),controller[_0xe4ed('0x14')]);router['post'](_0xe4ed('0x15'),auth[_0xe4ed('0x9')](),interaction[_0xe4ed('0x16')]('openchannel',_0xe4ed('0x17')),controller[_0xe4ed('0x18')]);router[_0xe4ed('0x19')](_0xe4ed('0xc'),auth['isAuthenticated'](),interaction[_0xe4ed('0x16')](_0xe4ed('0x1a'),_0xe4ed('0x1b')),controller[_0xe4ed('0x1c')]);router[_0xe4ed('0x1d')](_0xe4ed('0xc'),auth[_0xe4ed('0x9')](),interaction[_0xe4ed('0x16')](_0xe4ed('0x1a'),'openchannelinteraction:destroy'),controller[_0xe4ed('0x1e')]);router[_0xe4ed('0x1d')]('/:id/tags',auth['isAuthenticated'](),controller[_0xe4ed('0x1f')]);module['exports']=router;
\ No newline at end of file
index 404b80b..e1f307f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a25=['sequelize','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x4a25,0x1d4));var _0x54a2=function(_0x549278,_0x450754){_0x549278=_0x549278-0x0;var _0x1ea9a1=_0x4a25[_0x549278];return _0x1ea9a1;};'use strict';var Sequelize=require(_0x54a2('0x0'));module['exports']={'closed':{'type':Sequelize[_0x54a2('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x54a2('0x2')]},'secondDisposition':{'type':Sequelize[_0x54a2('0x2')]},'thirdDisposition':{'type':Sequelize[_0x54a2('0x2')]},'note':{'type':Sequelize[_0x54a2('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x54a2('0x2')]},'externalUrl':{'type':Sequelize[_0x54a2('0x2')]},'lastMsgAt':{'type':Sequelize[_0x54a2('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x54a2('0x4')]('in',_0x54a2('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x54a2('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6658=['sequelize','exports','BOOLEAN','DATE','STRING','out'];(function(_0x1d128e,_0x2c87de){var _0x3d5236=function(_0x2374ff){while(--_0x2374ff){_0x1d128e['push'](_0x1d128e['shift']());}};_0x3d5236(++_0x2c87de);}(_0x6658,0x198));var _0x8665=function(_0xe3f4ea,_0x53aee5){_0xe3f4ea=_0xe3f4ea-0x0;var _0x2fb1c4=_0x6658[_0xe3f4ea];return _0x2fb1c4;};'use strict';var Sequelize=require(_0x8665('0x0'));module[_0x8665('0x1')]={'closed':{'type':Sequelize[_0x8665('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8665('0x3')]},'disposition':{'type':Sequelize[_0x8665('0x4')]},'secondDisposition':{'type':Sequelize[_0x8665('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8665('0x4')]},'note':{'type':Sequelize[_0x8665('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x8665('0x4')]},'externalUrl':{'type':Sequelize[_0x8665('0x4')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x8665('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x8665('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x8665('0x2')],'defaultValue':![]}};
\ No newline at end of file
index f79af28..6f730e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb10=['answered','total','closed','UserId','index','OpenchannelInteraction','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','tools_tags','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','users','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','value','`\x20=\x200','`\x20>\x200','Contact','$substring','split','getFullTextValue','ContactId','buildExpression','text','start','union','User','body','keys','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','having','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.from\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','role','agent','sequelize','toString','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','include','merge','options','find','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','$gte','format','findAll','setTags','spread','color','emit','openchannelInteractionTags:save','removeTags','download','unix','join','tmp','root','server','files','transcript-%d-%s.zip','CmContact','firstName','lastName','attachments','Attachment','direction','OpenchannelAccount','Account','get','Openchannel','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','threadId','Public','basename','createReadStream','pipe','out','System','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','save','update','then','error','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','catch','waiting','talking'];(function(_0x1da224,_0x1dde21){var _0x1342b7=function(_0x469205){while(--_0x469205){_0x1da224['push'](_0x1da224['shift']());}};_0x1342b7(++_0x1dde21);}(_0xeb10,0xb9));var _0x0eb1=function(_0x4f6af5,_0x5aa89b){_0x4f6af5=_0x4f6af5-0x0;var _0x124902=_0xeb10[_0x4f6af5];return _0x124902;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0eb1('0x0'));var moment=require(_0x0eb1('0x1'));var BPromise=require(_0x0eb1('0x2'));var Mustache=require(_0x0eb1('0x3'));var util=require(_0x0eb1('0x4'));var path=require(_0x0eb1('0x5'));var sox=require(_0x0eb1('0x6'));var csv=require(_0x0eb1('0x7'));var ejs=require(_0x0eb1('0x8'));var fs=require('fs');var fs_extra=require(_0x0eb1('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0eb1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x0eb1('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0eb1('0xc'));var Papa=require(_0x0eb1('0xd'));var Redis=require(_0x0eb1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x0eb1('0xf'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x0eb1('0x10'));var logger=require(_0x0eb1('0x11'))(_0x0eb1('0x12'));var utils=require(_0x0eb1('0x13'));var config=require(_0x0eb1('0x14'));var licenseUtil=require(_0x0eb1('0x15'));var db=require('../../mysqldb')['db'];config[_0x0eb1('0x16')]=_[_0x0eb1('0x17')](config[_0x0eb1('0x16')],{'host':_0x0eb1('0x18'),'port':0x18eb});var socket=require(_0x0eb1('0x19'))(new Redis(config[_0x0eb1('0x16')]));require(_0x0eb1('0x1a'))[_0x0eb1('0x1b')](socket);function respondWithStatusCode(_0x1d0366,_0x5f22a5){_0x5f22a5=_0x5f22a5||0xcc;return function(_0x2243c6){if(_0x2243c6){return _0x1d0366[_0x0eb1('0x1c')](_0x5f22a5);}return _0x1d0366['status'](_0x5f22a5)[_0x0eb1('0x1d')]();};}function respondWithResult(_0x229e0e,_0x254476){_0x254476=_0x254476||0xc8;return function(_0x3bf46f){if(_0x3bf46f){return _0x229e0e[_0x0eb1('0x1e')](_0x254476)['json'](_0x3bf46f);}};}function respondWithFilteredResult(_0x111987,_0x641eb0){return function(_0xf2a910){if(_0xf2a910){var _0xcbe2bc=typeof _0x641eb0[_0x0eb1('0x1f')]===_0x0eb1('0x20')&&typeof _0x641eb0[_0x0eb1('0x21')]===_0x0eb1('0x20');var _0x2356db=_0xf2a910['count'];var _0x526028=_0xcbe2bc?0x0:_0x641eb0[_0x0eb1('0x1f')];var _0x13a569=_0xcbe2bc?_0xf2a910[_0x0eb1('0x22')]:_0x641eb0[_0x0eb1('0x1f')]+_0x641eb0[_0x0eb1('0x21')];var _0x345e3f;if(_0x13a569>=_0x2356db){_0x13a569=_0x2356db;_0x345e3f=0xc8;}else{_0x345e3f=0xce;}_0x111987[_0x0eb1('0x1e')](_0x345e3f);return _0x111987['set'](_0x0eb1('0x23'),_0x526028+'-'+_0x13a569+'/'+_0x2356db)[_0x0eb1('0x24')](_0xf2a910);}return null;};}function patchUpdates(_0x1fe19e){return function(_0x21feaf){try{jsonpatch[_0x0eb1('0x25')](_0x21feaf,_0x1fe19e,!![]);}catch(_0x1806c7){return BPromise['reject'](_0x1806c7);}return _0x21feaf[_0x0eb1('0x26')]();};}function saveUpdates(_0x4cde05,_0x194ca9){return function(_0x521b2d){if(_0x521b2d){return _0x521b2d[_0x0eb1('0x27')](_0x4cde05)[_0x0eb1('0x28')](function(_0x3523bf){return _0x3523bf;});}return null;};}function removeEntity(_0x901935,_0xa877d2){return function(_0x2e948d){if(_0x2e948d){return _0x2e948d['destroy']()[_0x0eb1('0x28')](function(){_0x901935[_0x0eb1('0x1e')](0xcc)[_0x0eb1('0x1d')]();});}};}function handleEntityNotFound(_0x12d581,_0x3de17f){return function(_0x22be3c){if(!_0x22be3c){_0x12d581[_0x0eb1('0x1c')](0x194);}return _0x22be3c;};}function handleError(_0xdf6085,_0x11b2d3){_0x11b2d3=_0x11b2d3||0x1f4;return function(_0x362b67){logger[_0x0eb1('0x29')](_0x362b67[_0x0eb1('0x2a')]);if(_0x362b67[_0x0eb1('0x2b')]){delete _0x362b67['name'];}_0xdf6085[_0x0eb1('0x1e')](_0x11b2d3)[_0x0eb1('0x2c')](_0x362b67);};}function getInteractionUsers(_0x126605,_0xac34d9){return new BPromise(function(_0x17e167,_0x25ffe5){try{if(_0xac34d9[_0x126605['id']]){_0x126605[_0x0eb1('0x2d')]=_[_0x0eb1('0x2e')](_0xac34d9[_0x126605['id']],function(_0x3a95c4){return{'id':_0x3a95c4['id'],'fullname':_0x3a95c4[_0x0eb1('0x2f')]};});}}catch(_0x3b4f30){_0x25ffe5(_0x3b4f30);}_0x17e167(_0x126605);});}function getInteractionTags(_0x567518,_0x397b64){return new BPromise(function(_0x10dfe0,_0x3f8897){try{if(_0x567518[_0x0eb1('0x30')]){_0x567518[_0x0eb1('0x31')]=[];_0x567518[_0x0eb1('0x30')]['split'](',')[_0x0eb1('0x32')](function(_0x1699b3){_0x567518['Tags'][_0x0eb1('0x33')](_0x397b64[_0x1699b3]);});}delete _0x567518[_0x0eb1('0x30')];}catch(_0x5786d7){_0x3f8897(_0x5786d7);}_0x10dfe0(_0x567518);});}function updateOpenchannelInteraction(_0x2b77fd,_0x4486df,_0xcaba4b){return new BPromise(function(_0x585153,_0x52b83d){return getInteractionUsers(_0x2b77fd,_0xcaba4b)[_0x0eb1('0x28')](function(_0x449fef){return getInteractionTags(_0x449fef,_0x4486df);})[_0x0eb1('0x28')](function(_0x3b9150){return getStateInteraction(_0x3b9150);})['then'](function(_0x2685b8){_0x585153(_0x2685b8);})[_0x0eb1('0x34')](function(_0x31fc08){_0x52b83d(_0x31fc08);});});}function getStateInteraction(_0x16e5f1){return new BPromise(function(_0x370c96){_0x16e5f1[_0x0eb1('0x35')]=0x0;_0x16e5f1[_0x0eb1('0x36')]=0x0;_0x16e5f1[_0x0eb1('0x37')]=0x0;_0x16e5f1['unmanaged']=0x0;_0x16e5f1[_0x0eb1('0x38')]=0x0;if(!_0x16e5f1[_0x0eb1('0x39')]&&!_0x16e5f1['UserId']){_0x16e5f1[_0x0eb1('0x35')]+=0x1;}if(!_0x16e5f1[_0x0eb1('0x39')]&&_0x16e5f1[_0x0eb1('0x3a')]){_0x16e5f1['talking']+=0x1;if(_0x16e5f1[_0x0eb1('0x35')]){_0x16e5f1['waiting']-=0x1;}}if(_0x16e5f1[_0x0eb1('0x39')]&&_0x16e5f1[_0x0eb1('0x3a')]){_0x16e5f1[_0x0eb1('0x37')]+=0x1;if(_0x16e5f1[_0x0eb1('0x36')]){_0x16e5f1[_0x0eb1('0x36')]-=0x1;}}if(_0x16e5f1['closed']&&!_0x16e5f1['UserId']){_0x16e5f1['unmanaged']+=0x1;if(_0x16e5f1['waiting']){_0x16e5f1['waiting']-=0x1;}}_0x16e5f1[_0x0eb1('0x38')]+=0x1;_0x370c96(_0x16e5f1);});}exports[_0x0eb1('0x3b')]=function(_0x322190,_0x3dfaea){var _0x79d69={},_0x252757={},_0xc3fc8b={'count':0x0,'rows':[]};var _0x1ea319=_[_0x0eb1('0x2e')](db[_0x0eb1('0x3c')][_0x0eb1('0x3d')],function(_0x4eeba5){return{'name':_0x4eeba5['fieldName'],'type':_0x4eeba5[_0x0eb1('0x3e')][_0x0eb1('0x3f')]};});_0x252757[_0x0eb1('0x40')]=_['map'](_0x1ea319,_0x0eb1('0x2b'));_0x252757[_0x0eb1('0x41')]=_['keys'](_0x322190[_0x0eb1('0x41')]);_0x252757[_0x0eb1('0x42')]=_[_0x0eb1('0x43')](_0x252757['model'],_0x252757[_0x0eb1('0x41')]);_0x79d69[_0x0eb1('0x44')]=_[_0x0eb1('0x43')](_0x252757[_0x0eb1('0x40')],qs[_0x0eb1('0x45')](_0x322190['query'][_0x0eb1('0x45')]));_0x79d69[_0x0eb1('0x44')]=_0x79d69[_0x0eb1('0x44')][_0x0eb1('0x46')]?_0x79d69['attributes']:_0x252757[_0x0eb1('0x40')];if(!_0x322190[_0x0eb1('0x41')][_0x0eb1('0x47')](_0x0eb1('0x48'))){_0x79d69[_0x0eb1('0x21')]=qs[_0x0eb1('0x21')](_0x322190[_0x0eb1('0x41')][_0x0eb1('0x21')]);_0x79d69[_0x0eb1('0x1f')]=qs[_0x0eb1('0x1f')](_0x322190[_0x0eb1('0x41')][_0x0eb1('0x1f')]);}_0x79d69[_0x0eb1('0x49')]=qs[_0x0eb1('0x4a')](_0x322190[_0x0eb1('0x41')][_0x0eb1('0x4a')]);_0x79d69[_0x0eb1('0x4b')]=qs['filters'](_[_0x0eb1('0x4c')](_0x322190[_0x0eb1('0x41')],_0x252757[_0x0eb1('0x42')]),_0x1ea319);var _0x4293e7=[];var _0x27dc69=squel[_0x0eb1('0x4d')]()['field']('id')[_0x0eb1('0x4e')](_0x0eb1('0x2b'))[_0x0eb1('0x4e')]('color')[_0x0eb1('0x4f')](_0x0eb1('0x50'));var _0x5e9f46=squel[_0x0eb1('0x4d')]()['field']('u.id')['field'](_0x0eb1('0x51'))[_0x0eb1('0x4e')](_0x0eb1('0x52'))[_0x0eb1('0x4f')](_0x0eb1('0x53'),'ui')[_0x0eb1('0x54')]('users','u',_0x0eb1('0x55'));var _0x261157=squel['select']()[_0x0eb1('0x4f')](_0x0eb1('0x56'),'i')[_0x0eb1('0x54')](_0x0eb1('0x57'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x0eb1('0x54')](_0x0eb1('0x58'),'o','o.id\x20=\x20i.UserId')[_0x0eb1('0x54')]('openchannel_accounts','a','a.id\x20=\x20i.OpenchannelAccountId')[_0x0eb1('0x54')]('openchannel_messages','me',_0x0eb1('0x59'))[_0x0eb1('0x54')](_0x0eb1('0x5a'),'it',_0x0eb1('0x5b'))[_0x0eb1('0x54')](_0x0eb1('0x50'),'t',_0x0eb1('0x5c'));var _0x1e8ed0=squel[_0x0eb1('0x5d')]();var _0x2b8d4d=[];var _0x487d50=squel[_0x0eb1('0x5d')]();var _0x3f0a24;if(_0x322190[_0x0eb1('0x41')][_0x0eb1('0x5e')]){_0x3f0a24=as[_0x0eb1('0x5f')](_0x322190[_0x0eb1('0x41')][_0x0eb1('0x5e')]);var _0x2217d4=_0x3f0a24[_0x0eb1('0x60')];for(var _0x4ba835=0x0;_0x4ba835<_0x3f0a24[_0x0eb1('0x61')]['length'];_0x4ba835++){var _0x27aa2b=_0x3f0a24[_0x0eb1('0x61')][_0x4ba835];var _0x57f21c='i';var _0x2e8194=_['find'](_0x1ea319,[_0x0eb1('0x2b'),_0x27aa2b[_0x0eb1('0x4e')]]);if(!_0x2e8194){switch(_0x27aa2b[_0x0eb1('0x4e')]){case'unreadMessages':if(_0x27aa2b[_0x0eb1('0x62')]==0x1){_0x261157['having']('`'+_0x27aa2b[_0x0eb1('0x4e')]+_0x0eb1('0x63'));}else{_0x261157['having']('`'+_0x27aa2b[_0x0eb1('0x4e')]+_0x0eb1('0x64'));}break;case _0x0eb1('0x65'):if(_0x27aa2b['operator']===_0x0eb1('0x66')){if(_0x27aa2b[_0x0eb1('0x62')][_0x0eb1('0x67')]('\x20')['length']>0x1){_0x1e8ed0[_0x2217d4]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0eb1('0x68')](_0x27aa2b[_0x0eb1('0x62')]),null);}else{var _0x36e8c6='%'+_0x27aa2b[_0x0eb1('0x62')]+'%';_0x1e8ed0[_0x2217d4]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x36e8c6,_0x36e8c6,_0x36e8c6);}}else{_0x2e8194=_['find'](_0x1ea319,[_0x0eb1('0x2b'),_0x0eb1('0x69')]);_0x27aa2b[_0x0eb1('0x4e')]=_0x0eb1('0x69');_0x1f1f59=as[_0x0eb1('0x6a')](_0x57f21c,_0x2e8194[_0x0eb1('0x3e')],_0x27aa2b);_0x1e8ed0[_0x2217d4](_0x1f1f59[_0x0eb1('0x6b')],_0x1f1f59[_0x0eb1('0x62')][_0x0eb1('0x6c')],_0x1f1f59['value'][_0x0eb1('0x1d')]);}break;case'Tag':var _0x4dea3f=_0x27aa2b['value'][_0x0eb1('0x67')](',')[_0x0eb1('0x2e')](function(_0x54186b){return Number(_0x54186b);});_0x4dea3f['forEach'](function(_0x10e535){_0x487d50['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x10e535+',%');});_0x2b8d4d=_[_0x0eb1('0x6d')](_0x2b8d4d,_0x4dea3f);break;case _0x0eb1('0x6e'):if(_0x27aa2b['operator']===_0x0eb1('0x66')){_0x1e8ed0[_0x2217d4]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x27aa2b[_0x0eb1('0x62')]+'%',null);}else{_0x2e8194=_['find'](_0x1ea319,['name','UserId']);_0x27aa2b['field']=_0x0eb1('0x3a');_0x1f1f59=as[_0x0eb1('0x6a')](_0x57f21c,_0x2e8194['type'],_0x27aa2b);_0x1e8ed0[_0x2217d4](_0x1f1f59[_0x0eb1('0x6b')],_0x1f1f59[_0x0eb1('0x62')][_0x0eb1('0x6c')],_0x1f1f59[_0x0eb1('0x62')][_0x0eb1('0x1d')]);}break;case _0x0eb1('0x6f'):_0x1f1f59=as['buildExpression']('me',null,_0x27aa2b);_0x1e8ed0[_0x2217d4](_0x1f1f59[_0x0eb1('0x6b')],_0x1f1f59['value'][_0x0eb1('0x6c')],_0x1f1f59[_0x0eb1('0x62')][_0x0eb1('0x1d')]);break;}}else{var _0x1f1f59=as[_0x0eb1('0x6a')](_0x57f21c,_0x2e8194[_0x0eb1('0x3e')],_0x27aa2b);_0x1e8ed0[_0x2217d4](_0x1f1f59[_0x0eb1('0x6b')],_0x1f1f59['value'][_0x0eb1('0x6c')],_0x1f1f59[_0x0eb1('0x62')][_0x0eb1('0x1d')]);}}}else{var _0x2d6db7=_(_0x322190['query'])[_0x0eb1('0x70')]()[_0x0eb1('0x2e')](function(_0x4f41da){return _[_0x0eb1('0x71')](_0x1ea319,[_0x0eb1('0x2b'),_0x4f41da])?_0x4f41da:undefined;})[_0x0eb1('0x72')]()[_0x0eb1('0x62')]();if(!_[_0x0eb1('0x73')](_0x2d6db7)){_0x2d6db7[_0x0eb1('0x32')](function(_0x10628c){if(_0x10628c===_0x0eb1('0x74')){_0x261157[_0x0eb1('0x4b')](_0x0eb1('0x75'),[][_0x0eb1('0x76')](_0x322190['query'][_0x10628c]));}else if(_0x10628c===_0x0eb1('0x77')){var _0x3600e1=JSON[_0x0eb1('0x78')](_0x322190[_0x0eb1('0x41')][_0x10628c])['$gte'];var _0x463787=JSON['parse'](_0x322190[_0x0eb1('0x41')][_0x10628c])[_0x0eb1('0x79')];_0x261157[_0x0eb1('0x4b')](_0x0eb1('0x7a'),_0x3600e1,_0x463787);}else{if(_0x322190[_0x0eb1('0x41')][_0x10628c]===_0x0eb1('0x7b')){_0x261157['where']('i.'+_0x10628c+_0x0eb1('0x7c'));}else{_0x261157[_0x0eb1('0x4b')]('i.'+_0x10628c+_0x0eb1('0x7d'),_0x322190[_0x0eb1('0x41')][_0x10628c]);}}});}if(_0x322190['query'][_0x0eb1('0x7e')]){if(_0x322190[_0x0eb1('0x41')]['read']==0x1){_0x261157[_0x0eb1('0x7f')]('`unreadMessages`\x20=\x200');}else{_0x261157['having'](_0x0eb1('0x80'));}}if(_0x322190[_0x0eb1('0x41')][_0x0eb1('0x81')]){_0x2b8d4d=_[_0x0eb1('0x82')](_0x322190[_0x0eb1('0x41')][_0x0eb1('0x81')])?_0x322190['query'][_0x0eb1('0x81')]:new Array(_0x322190[_0x0eb1('0x41')][_0x0eb1('0x81')]);_0x2b8d4d['forEach'](function(_0x285879){_0x487d50['or'](_0x0eb1('0x83'),'%,'+_0x285879+',%');});}if(_0x322190[_0x0eb1('0x41')][_0x0eb1('0x84')]){var _0x8aa38b=_0x322190['query'][_0x0eb1('0x84')][_0x0eb1('0x85')]('\x5c','\x5c\x5c')[_0x0eb1('0x85')](/'/g,'\x27\x27');if(qs[_0x0eb1('0x86')](_0x8aa38b)){_0x1e8ed0['or'](_0x0eb1('0x87'),_0x8aa38b+'%');}else{_0x1e8ed0['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0eb1('0x68')](_0x8aa38b))['or'](_0x0eb1('0x88'),_0x8aa38b+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x8aa38b+'%');}}}_0x261157[_0x0eb1('0x4b')](_0x1e8ed0);_0x261157[_0x0eb1('0x89')](_0x0eb1('0x8a'));var _0x2ce42f={'type':db[_0x0eb1('0x8b')]['QueryTypes'][_0x0eb1('0x8c')],'raw':!![]};var _0xbc155=_0x261157[_0x0eb1('0x8d')]();_0xbc155[_0x0eb1('0x4e')](_0x0eb1('0x8a'));_0xbc155['field'](_0x0eb1('0x8e'),_0x0eb1('0x8f'));if(_0x79d69[_0x0eb1('0x49')]){_0x79d69['order'][_0x0eb1('0x32')](function(_0x525703){var _0x4dadd1=_0x525703[0x0]==='contactName'?_0x525703[0x0]:'i.'+_0x525703[0x0];_0x261157[_0x0eb1('0x49')](_0x4dadd1,_0x525703[0x1]==='DESC'?![]:!![]);});}if(!_[_0x0eb1('0x73')](_0x2b8d4d)){_0x261157[_0x0eb1('0x7f')](_0x487d50);_0xbc155[_0x0eb1('0x4b')](_0x0eb1('0x90'),_0x2b8d4d);}BPromise['resolve']()['then'](function(){if(!_0x3f0a24){if(_0x322190[_0x0eb1('0x41')][_0x0eb1('0x74')])return;_0xbc155[_0x0eb1('0x4b')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x261157['where'](_0x0eb1('0x91'));return;}if(_0x322190['user']['role']!=='agent')return;return _0x322190[_0x0eb1('0x92')][_0x0eb1('0x93')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2ab62e){if(_[_0x0eb1('0x73')](_0x2ab62e)){_0xbc155[_0x0eb1('0x4b')](_0x0eb1('0x94'));_0x261157[_0x0eb1('0x4b')](_0x0eb1('0x94'));}else{_0xbc155[_0x0eb1('0x4b')](_0x0eb1('0x75'),_[_0x0eb1('0x2e')](_0x2ab62e,'id'));_0x261157[_0x0eb1('0x4b')](_0x0eb1('0x75'),_[_0x0eb1('0x2e')](_0x2ab62e,'id'));}});})['then'](function(){if(_0x322190[_0x0eb1('0x92')][_0x0eb1('0x95')]===_0x0eb1('0x96')&&!_0x3f0a24&&!_0x322190['query'][_0x0eb1('0x74')])return[];return db[_0x0eb1('0x97')][_0x0eb1('0x41')](_0xbc155[_0x0eb1('0x98')](),_0x2ce42f);})[_0x0eb1('0x28')](function(_0x32acec){_0xc3fc8b[_0x0eb1('0x22')]=_0x32acec[_0x0eb1('0x46')];if(_0xc3fc8b['count']===0x0)return[];return db[_0x0eb1('0x97')][_0x0eb1('0x41')](_0x27dc69['toString'](),_0x2ce42f)[_0x0eb1('0x28')](function(_0x55f3ba){_0x4293e7=_['keyBy'](_0x55f3ba,'id');_0x2ce42f=_['merge'](_0x2ce42f,{'model':db[_0x0eb1('0x3c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x322190['query'][_0x0eb1('0x45')]){_0x79d69['attributes'][_0x0eb1('0x32')](function(_0x54e6a3){_0x261157[_0x0eb1('0x4e')]('i.'+_0x54e6a3);});}else{_0x261157[_0x0eb1('0x4e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x261157[_0x0eb1('0x4e')](_0x0eb1('0x99'),_0x0eb1('0x9a'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0x9b'),_0x0eb1('0x9c'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0x9d'),_0x0eb1('0x9e'));_0x261157['field'](_0x0eb1('0x9f'));_0x261157[_0x0eb1('0x4e')]('c.firstName',_0x0eb1('0xa0'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0xa1'),_0x0eb1('0xa2'));_0x261157['field'](_0x0eb1('0xa3'),_0x0eb1('0xa4'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0xa5'),_0x0eb1('0xa6'));_0x261157['field'](_0x0eb1('0xa7'),_0x0eb1('0xa8'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0xa9'),'Contact.fax');_0x261157['field'](_0x0eb1('0xaa'),_0x0eb1('0xab'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0xac'),_0x0eb1('0xad'));_0x261157[_0x0eb1('0x4e')](_0x0eb1('0xae'),_0x0eb1('0x30'));}if(_0x79d69[_0x0eb1('0x21')])_0x261157['limit'](_0x79d69[_0x0eb1('0x21')]);if(_0x79d69[_0x0eb1('0x1f')])_0x261157[_0x0eb1('0x1f')](_0x79d69[_0x0eb1('0x1f')]);return db[_0x0eb1('0x97')][_0x0eb1('0x41')](_0x261157[_0x0eb1('0x98')](),_0x2ce42f);})['then'](function(_0xb33543){if(_0xb33543[_0x0eb1('0x46')]>0x0)_0x5e9f46[_0x0eb1('0x4b')](_0x0eb1('0xaf'),_[_0x0eb1('0x2e')](_0xb33543,'id'));return db[_0x0eb1('0x97')][_0x0eb1('0x41')](_0x5e9f46['toString'](),_0x2ce42f)['then'](function(_0x176b2e){var _0x378969=_[_0x0eb1('0xb0')](_0x176b2e,_0x0eb1('0xb1'));var _0x424e3d=[];_0xb33543[_0x0eb1('0x32')](function(_0x42131a){_0x424e3d[_0x0eb1('0x33')](updateOpenchannelInteraction(_0x42131a,_0x4293e7,_0x378969));});return BPromise[_0x0eb1('0xb2')](_0x424e3d);});});})[_0x0eb1('0x28')](function(_0x51abc0){_0xc3fc8b[_0x0eb1('0xb3')]=_0x51abc0;return _0xc3fc8b;})[_0x0eb1('0x28')](respondWithFilteredResult(_0x3dfaea,_0x79d69))[_0x0eb1('0x34')](handleError(_0x3dfaea,null));};exports[_0x0eb1('0xb4')]=function(_0x147256,_0x2ed280){var _0x35e5ec={};if(_0x147256[_0x0eb1('0x41')][_0x0eb1('0x3e')]&&_0x147256[_0x0eb1('0x41')]['type']===_0x0eb1('0x4f')){_0x35e5ec[_0x0eb1('0x4f')]=_0x147256[_0x0eb1('0xb5')]['id'];}else{_0x35e5ec['id']=_0x147256[_0x0eb1('0xb5')]['id'];}var _0x1d6bc0={'raw':![],'where':_0x35e5ec},_0x1ca520={};_0x1ca520[_0x0eb1('0x40')]=_[_0x0eb1('0x70')](db[_0x0eb1('0x3c')][_0x0eb1('0x3d')]);_0x1ca520['query']=_[_0x0eb1('0x70')](_0x147256[_0x0eb1('0x41')]);_0x1ca520[_0x0eb1('0x42')]=_[_0x0eb1('0x43')](_0x1ca520['model'],_0x1ca520[_0x0eb1('0x41')]);_0x1d6bc0[_0x0eb1('0x44')]=_[_0x0eb1('0x43')](_0x1ca520[_0x0eb1('0x40')],qs[_0x0eb1('0x45')](_0x147256[_0x0eb1('0x41')]['fields']));_0x1d6bc0['attributes']=_0x1d6bc0[_0x0eb1('0x44')][_0x0eb1('0x46')]?_0x1d6bc0[_0x0eb1('0x44')]:_0x1ca520[_0x0eb1('0x40')];if(_0x147256[_0x0eb1('0x41')][_0x0eb1('0xb6')]){_0x1d6bc0[_0x0eb1('0xb7')]=[{'all':!![]}];}_0x1d6bc0=_[_0x0eb1('0xb8')]({},_0x1d6bc0,_0x147256[_0x0eb1('0xb9')]);return db[_0x0eb1('0x3c')][_0x0eb1('0xba')](_0x1d6bc0)['then'](handleEntityNotFound(_0x2ed280,null))['then'](respondWithResult(_0x2ed280,null))['catch'](handleError(_0x2ed280,null));};exports['create']=function(_0x173b01,_0x3035cb){return db['OpenchannelInteraction'][_0x0eb1('0xbb')](_0x173b01[_0x0eb1('0x6f')],{})[_0x0eb1('0x28')](respondWithResult(_0x3035cb,0xc9))[_0x0eb1('0x34')](handleError(_0x3035cb,null));};exports[_0x0eb1('0x27')]=function(_0x3acc78,_0x57b78b){if(_0x3acc78[_0x0eb1('0x6f')]['id']){delete _0x3acc78['body']['id'];}return db['OpenchannelInteraction'][_0x0eb1('0xba')]({'where':{'id':_0x3acc78['params']['id']}})[_0x0eb1('0x28')](handleEntityNotFound(_0x57b78b,null))[_0x0eb1('0x28')](saveUpdates(_0x3acc78['body'],null))[_0x0eb1('0x28')](respondWithResult(_0x57b78b,null))[_0x0eb1('0x34')](handleError(_0x57b78b,null));};exports[_0x0eb1('0xbc')]=function(_0x36936a,_0x4ae36b){return db[_0x0eb1('0x3c')][_0x0eb1('0xba')]({'where':{'id':_0x36936a['params']['id']}})['then'](handleEntityNotFound(_0x4ae36b,null))[_0x0eb1('0x28')](removeEntity(_0x4ae36b,null))[_0x0eb1('0x34')](handleError(_0x4ae36b,null));};exports[_0x0eb1('0xbd')]=function(_0x26d449,_0x25d593){return db[_0x0eb1('0x3c')][_0x0eb1('0xbd')]()[_0x0eb1('0x28')](respondWithResult(_0x25d593,null))[_0x0eb1('0x34')](handleError(_0x25d593,null));};exports[_0x0eb1('0xbe')]=function(_0x5fc962,_0x18b9b3,_0xd2bc14){return db[_0x0eb1('0xbf')][_0x0eb1('0xba')]({'where':{'id':_0x5fc962['params']['id']}})[_0x0eb1('0x28')](handleEntityNotFound(_0x18b9b3,null))[_0x0eb1('0x28')](function(_0x598e8f){if(_0x598e8f){return _0x598e8f['addMessage'](_0x5fc962[_0x0eb1('0x6f')][_0x0eb1('0xc0')],_[_0x0eb1('0xc1')](_0x5fc962['body'],[_0x0eb1('0xc0'),'id'])||{});}})['then'](respondWithResult(_0x18b9b3,null))[_0x0eb1('0x34')](handleError(_0x18b9b3,null));};exports[_0x0eb1('0xc2')]=function(_0x1c2548,_0x2ed476,_0x3e3975){var _0x10f9dc={'raw':![],'where':{}};var _0xe6917f={};var _0x3243d7={'count':0x0,'rows':[]};return db[_0x0eb1('0x3c')]['findOne']({'where':{'id':_0x1c2548['params']['id']}})[_0x0eb1('0x28')](handleEntityNotFound(_0x2ed476,null))[_0x0eb1('0x28')](function(_0x31ae51){if(_0x31ae51){_0xe6917f[_0x0eb1('0x40')]=_[_0x0eb1('0x70')](db[_0x0eb1('0xbf')][_0x0eb1('0x3d')]);_0xe6917f['query']=_['keys'](_0x1c2548[_0x0eb1('0x41')]);_0xe6917f[_0x0eb1('0x42')]=_[_0x0eb1('0x43')](_0xe6917f[_0x0eb1('0x40')],_0xe6917f[_0x0eb1('0x41')]);_0x10f9dc['attributes']=_[_0x0eb1('0x43')](_0xe6917f[_0x0eb1('0x40')],qs[_0x0eb1('0x45')](_0x1c2548[_0x0eb1('0x41')][_0x0eb1('0x45')]));_0x10f9dc[_0x0eb1('0x44')]=_0x10f9dc[_0x0eb1('0x44')][_0x0eb1('0x46')]?_0x10f9dc[_0x0eb1('0x44')]:_0xe6917f[_0x0eb1('0x40')];if(!_0x1c2548[_0x0eb1('0x41')][_0x0eb1('0x47')](_0x0eb1('0x48'))){_0x10f9dc[_0x0eb1('0x21')]=qs[_0x0eb1('0x21')](_0x1c2548[_0x0eb1('0x41')][_0x0eb1('0x21')]);_0x10f9dc[_0x0eb1('0x1f')]=qs['offset'](_0x1c2548[_0x0eb1('0x41')]['offset']);}_0x10f9dc['order']=qs[_0x0eb1('0x4a')](_0x1c2548[_0x0eb1('0x41')][_0x0eb1('0x4a')]);_0x10f9dc[_0x0eb1('0x4b')]=qs[_0x0eb1('0x42')](_['pick'](_0x1c2548['query'],_0xe6917f[_0x0eb1('0x42')]));_0x10f9dc[_0x0eb1('0x4b')][_0x0eb1('0xb1')]=_0x31ae51['id'];if(_0x1c2548[_0x0eb1('0x41')]['filter']){_0x10f9dc['where']=_[_0x0eb1('0xb8')](_0x10f9dc[_0x0eb1('0x4b')],{'$or':_[_0x0eb1('0x2e')](_0x10f9dc[_0x0eb1('0x44')],function(_0x164a69){var _0x2b4d80={};_0x2b4d80[_0x164a69]={'$like':'%'+_0x1c2548[_0x0eb1('0x41')]['filter']+'%'};return _0x2b4d80;})});}if(_0x1c2548[_0x0eb1('0x41')][_0x0eb1('0xc3')]){var _0x4a8710=_0x1c2548['query'][_0x0eb1('0xc3')][_0x0eb1('0x67')](',');var _0x4b6817={};_0x4b6817[_0x4a8710[0x0]]={'$gte':moment(_0x4a8710[0x1])[_0x0eb1('0xc4')]('YYYY-MM-DD\x20HH:mm:ss')};_0x10f9dc['where']=_[_0x0eb1('0xb8')](_0x10f9dc[_0x0eb1('0x4b')],_0x4b6817);}_0x10f9dc=_[_0x0eb1('0xb8')]({},_0x10f9dc,_0x1c2548[_0x0eb1('0xb9')]);return db[_0x0eb1('0xbf')][_0x0eb1('0x22')]({'where':_0x10f9dc[_0x0eb1('0x4b')]})[_0x0eb1('0x28')](function(_0x592b67){_0x3243d7[_0x0eb1('0x22')]=_0x592b67;if(_0x1c2548['query']['includeAll']){_0x10f9dc['include']=[{'all':!![]}];}return db[_0x0eb1('0xbf')][_0x0eb1('0xc5')](_0x10f9dc);})[_0x0eb1('0x28')](function(_0x9f8ea2){_0x3243d7[_0x0eb1('0xb3')]=_0x9f8ea2;return _0x3243d7;});}})[_0x0eb1('0x28')](respondWithFilteredResult(_0x2ed476,_0x10f9dc))[_0x0eb1('0x34')](handleError(_0x2ed476,null));};exports['addTags']=function(_0xadd8f4,_0x484c7c,_0x4a22b9){return db[_0x0eb1('0x3c')][_0x0eb1('0xba')]({'where':{'id':_0xadd8f4[_0x0eb1('0xb5')]['id']}})['then'](handleEntityNotFound(_0x484c7c,null))[_0x0eb1('0x28')](function(_0x57a9f3){if(_0x57a9f3){return _0x57a9f3[_0x0eb1('0xc6')](_0xadd8f4['body'][_0x0eb1('0xc0')],_[_0x0eb1('0xc1')](_0xadd8f4[_0x0eb1('0x6f')],[_0x0eb1('0xc0'),'id'])||{})[_0x0eb1('0xc7')](function(){return db['Tag'][_0x0eb1('0xc5')]({'attributes':['id',_0x0eb1('0x2b'),_0x0eb1('0xc8')],'where':{'id':_0xadd8f4[_0x0eb1('0x6f')][_0x0eb1('0xc0')]}});})['then'](function(_0x28d907){socket[_0x0eb1('0xc9')](_0x0eb1('0xca'),{'id':Number(_0xadd8f4[_0x0eb1('0xb5')]['id']),'tags':_0x28d907||[]});return{'id':Number(_0xadd8f4[_0x0eb1('0xb5')]['id']),'tags':_0x28d907||[]};});}})[_0x0eb1('0x28')](respondWithResult(_0x484c7c,null))[_0x0eb1('0x34')](handleError(_0x484c7c,null));};exports[_0x0eb1('0xcb')]=function(_0x5cf891,_0x3a663f,_0xe28989){return db[_0x0eb1('0x3c')][_0x0eb1('0xba')]({'where':{'id':_0x5cf891[_0x0eb1('0xb5')]['id']}})[_0x0eb1('0x28')](handleEntityNotFound(_0x3a663f,null))[_0x0eb1('0x28')](function(_0x4bf3b3){if(_0x4bf3b3){return _0x4bf3b3[_0x0eb1('0xcb')](_0x5cf891[_0x0eb1('0x41')]['ids']);}})[_0x0eb1('0x28')](respondWithStatusCode(_0x3a663f,null))[_0x0eb1('0x34')](handleError(_0x3a663f,null));};exports[_0x0eb1('0xcc')]=function(_0x215c83,_0x1b01cd){var _0x556a5e=moment()[_0x0eb1('0xcd')]()[_0x0eb1('0x98')]();var _0x42d993=path[_0x0eb1('0xce')](config['root'],'server','files',_0x0eb1('0xcf'));var _0x170458=path[_0x0eb1('0xce')](config[_0x0eb1('0xd0')],_0x0eb1('0xd1'),_0x0eb1('0xd2'),'attachments');var _0x2ff8d4=path[_0x0eb1('0xce')](_0x42d993,_0x556a5e);var _0x31eed0=util[_0x0eb1('0xc4')](_0x0eb1('0xd3'),_0x215c83[_0x0eb1('0xb5')]['id'],_0x556a5e);var _0xea88da=path['join'](_0x42d993,_0x31eed0);var _0xb27c98=[];_0xb27c98[_0x0eb1('0x33')]({'model':db['User'],'as':_0x0eb1('0x6e'),'attributes':['id',_0x0eb1('0x2f')],'raw':!![]});_0xb27c98[_0x0eb1('0x33')]({'model':db[_0x0eb1('0xd4')],'as':_0x0eb1('0x65'),'attributes':['id',_0x0eb1('0xd5'),_0x0eb1('0xd6')],'raw':!![]});if(_0x215c83[_0x0eb1('0x41')][_0x0eb1('0xd7')]){_0xb27c98[_0x0eb1('0x33')]({'model':db[_0x0eb1('0xd8')],'as':_0x0eb1('0xd8'),'raw':!![]});}var _0x4a5f34=[{'model':db[_0x0eb1('0xbf')],'as':'Messages','attributes':['id',_0x0eb1('0x6f'),_0x0eb1('0x77'),_0x0eb1('0xd9'),'secret',_0x0eb1('0x7e')],'include':_0xb27c98}];_0x4a5f34[_0x0eb1('0x33')]({'model':db[_0x0eb1('0xda')],'as':_0x0eb1('0xdb'),'attributes':['id','name']});_0x4a5f34[_0x0eb1('0x33')]({'model':db['User'],'as':'Owner','attributes':['id','fullname']});return db[_0x0eb1('0x3c')][_0x0eb1('0xba')]({'where':{'id':_0x215c83[_0x0eb1('0xb5')]['id']},'include':_0x4a5f34})['then'](handleEntityNotFound(_0x1b01cd,null))[_0x0eb1('0x28')](function(_0x3c1830){if(_0x3c1830){var _0x5460f1=_0x3c1830[_0x0eb1('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x2ff8d4);var _0x243eeb={'channel':_0x0eb1('0xdd'),'account':_0x5460f1[_0x0eb1('0xdb')][_0x0eb1('0x2b')],'agent':_0x5460f1[_0x0eb1('0xde')]?_0x5460f1['Owner'][_0x0eb1('0x2f')]:_0x0eb1('0xdf'),'createdAt':moment(_0x5460f1[_0x0eb1('0x77')])[_0x0eb1('0xc4')](_0x0eb1('0xe0'))['toString'](),'closedAt':_0x5460f1['closed']?moment(_0x5460f1[_0x0eb1('0xe1')])['format'](_0x0eb1('0xe0'))[_0x0eb1('0x98')]():'','disposition':_0x5460f1[_0x0eb1('0xe2')],'visibility':_0x5460f1[_0x0eb1('0xe3')]?_0x0eb1('0xe4'):'Private','messages':_(_0x5460f1['Messages'])[_0x0eb1('0x84')]({'secret':![]})[_0x0eb1('0x2e')](function(_0x11236e){if(_0x11236e[_0x0eb1('0xd8')]){var _0x2b654e=path['join'](_0x170458,_0x11236e[_0x0eb1('0xd8')][_0x0eb1('0xe5')]);if(fs['existsSync'](_0x2b654e)){fs[_0x0eb1('0xe6')](_0x2b654e)[_0x0eb1('0xe7')](fs['createWriteStream'](path['join'](_0x2ff8d4,_0x11236e[_0x0eb1('0xd8')][_0x0eb1('0xe5')])));}}return{'date':moment(_0x11236e['createdAt'])[_0x0eb1('0xc4')](_0x0eb1('0xe0'))[_0x0eb1('0x98')](),'sender':_0x11236e[_0x0eb1('0xd9')]===_0x0eb1('0xe8')?_0x11236e[_0x0eb1('0x6e')]?_0x11236e[_0x0eb1('0x6e')]['fullname']:_0x0eb1('0xe9'):_0x11236e['Contact'][_0x0eb1('0xd5')]+(_0x11236e[_0x0eb1('0x65')][_0x0eb1('0xd6')]?'\x20'+_0x11236e[_0x0eb1('0x65')][_0x0eb1('0xd6')]:''),'body':_0x11236e[_0x0eb1('0xd8')]?_0x11236e[_0x0eb1('0xd8')]['basename']:_0x11236e[_0x0eb1('0x6f')],'direction':_0x11236e[_0x0eb1('0xd9')]===_0x0eb1('0xe8')?'A':'C','secret':_0x11236e['secret'],'read':_0x11236e[_0x0eb1('0x7e')],'attachment':_0x11236e[_0x0eb1('0xd8')]};})[_0x0eb1('0x62')]()};return ejs['renderFile'](path[_0x0eb1('0xce')](config['root'],'server',_0x0eb1('0xea'),_0x0eb1('0xeb')),{'interaction':_0x243eeb})['then'](function(_0x4241d1){var _0xad5ac6=path[_0x0eb1('0xce')](_0x2ff8d4,_0x0eb1('0xec')+_0x5460f1['id']+'-'+_0x556a5e+_0x0eb1('0xed'));var _0xfd457f={'path':_0xad5ac6,'channel':_0x0eb1('0xdd'),'interactionId':_0x5460f1['id']};return pdf[_0x0eb1('0xee')](_0x4241d1,_0xfd457f);})[_0x0eb1('0x28')](function(){return new BPromise(function(_0x1c0fba,_0x5ca769){zipdir(_0x2ff8d4,{'saveTo':_0xea88da},function(_0x52df69,_0x49421b){if(_0x52df69)return _0x5ca769(_0x52df69);return _0x1c0fba(_0x49421b);});})[_0x0eb1('0x28')](function(){return new BPromise(function(_0x1ed425,_0x1bd24d){rimraf(_0x2ff8d4,function(_0x1cf126){if(_0x1cf126)_0x1bd24d(_0x1cf126);return _0x1ed425();});});})[_0x0eb1('0x28')](function(){return _0x1b01cd['download'](_0xea88da,_0x31eed0,function(_0x12957b){if(_0x12957b){console[_0x0eb1('0xef')]('err',_0x12957b);}else{fs['unlinkSync'](_0xea88da);}});});});}else{return _0x1b01cd[_0x0eb1('0x1c')](0xc8);}})['catch'](handleError(_0x1b01cd,null));};
\ No newline at end of file
+var _0x74b9=['value','`\x20=\x200','`\x20>\x200','Contact','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','keys','some','compact','isEmpty','OpenchannelAccountId','where','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','having','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','role','agent','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','show','params','rawAttributes','intersection','includeAll','include','options','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','nolimit','pick','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','emit','openchannelInteractionTags:save','removeTags','join','root','server','tmp','files','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Attachment','Messages','direction','secret','Account','Owner','get','mkdirSync','Openchannel','closedAt','disposition','threadId','Public','basename','existsSync','createReadStream','createWriteStream','out','System','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','unlinkSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','map','fullname','TagIds','Tags','split','forEach','push','catch','talking','answered','unmanaged','closed','UserId','waiting','OpenchannelInteraction','fieldName','type','key','model','query','fields','attributes','length','hasOwnProperty','sort','filters','select','field','from','tools_tags','u.id','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages'];(function(_0xd97e28,_0x1547a1){var _0x2171c4=function(_0x570e0d){while(--_0x570e0d){_0xd97e28['push'](_0xd97e28['shift']());}};_0x2171c4(++_0x1547a1);}(_0x74b9,0x99));var _0x974b=function(_0x19d713,_0x2b88c6){_0x19d713=_0x19d713-0x0;var _0x4e9b24=_0x74b9[_0x19d713];return _0x4e9b24;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x974b('0x0'));var jsonpatch=require(_0x974b('0x1'));var rp=require(_0x974b('0x2'));var moment=require(_0x974b('0x3'));var BPromise=require(_0x974b('0x4'));var Mustache=require(_0x974b('0x5'));var util=require(_0x974b('0x6'));var path=require(_0x974b('0x7'));var sox=require(_0x974b('0x8'));var csv=require(_0x974b('0x9'));var ejs=require(_0x974b('0xa'));var fs=require('fs');var fs_extra=require(_0x974b('0xb'));var _=require(_0x974b('0xc'));var squel=require(_0x974b('0xd'));var crypto=require('crypto');var jsforce=require(_0x974b('0xe'));var deskjs=require(_0x974b('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x974b('0x10'));var Redis=require(_0x974b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x974b('0x12'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x974b('0x13'));var hardwareService=require(_0x974b('0x14'));var logger=require(_0x974b('0x15'))(_0x974b('0x16'));var utils=require(_0x974b('0x17'));var config=require(_0x974b('0x18'));var licenseUtil=require(_0x974b('0x19'));var db=require('../../mysqldb')['db'];config[_0x974b('0x1a')]=_['defaults'](config[_0x974b('0x1a')],{'host':_0x974b('0x1b'),'port':0x18eb});var socket=require(_0x974b('0x1c'))(new Redis(config[_0x974b('0x1a')]));require(_0x974b('0x1d'))[_0x974b('0x1e')](socket);function respondWithStatusCode(_0x41804e,_0x5ed6f9){_0x5ed6f9=_0x5ed6f9||0xcc;return function(_0x3d60dc){if(_0x3d60dc){return _0x41804e[_0x974b('0x1f')](_0x5ed6f9);}return _0x41804e[_0x974b('0x20')](_0x5ed6f9)[_0x974b('0x21')]();};}function respondWithResult(_0xfc3cd2,_0x1d30a5){_0x1d30a5=_0x1d30a5||0xc8;return function(_0x70ce5c){if(_0x70ce5c){return _0xfc3cd2['status'](_0x1d30a5)[_0x974b('0x22')](_0x70ce5c);}};}function respondWithFilteredResult(_0xbbf35e,_0x2206ae){return function(_0x43e6c1){if(_0x43e6c1){var _0x6d598b=typeof _0x2206ae[_0x974b('0x23')]===_0x974b('0x24')&&typeof _0x2206ae[_0x974b('0x25')]==='undefined';var _0x546d58=_0x43e6c1[_0x974b('0x26')];var _0x4e8a5a=_0x6d598b?0x0:_0x2206ae[_0x974b('0x23')];var _0x5a6839=_0x6d598b?_0x43e6c1[_0x974b('0x26')]:_0x2206ae[_0x974b('0x23')]+_0x2206ae[_0x974b('0x25')];var _0x474579;if(_0x5a6839>=_0x546d58){_0x5a6839=_0x546d58;_0x474579=0xc8;}else{_0x474579=0xce;}_0xbbf35e[_0x974b('0x20')](_0x474579);return _0xbbf35e[_0x974b('0x27')](_0x974b('0x28'),_0x4e8a5a+'-'+_0x5a6839+'/'+_0x546d58)[_0x974b('0x22')](_0x43e6c1);}return null;};}function patchUpdates(_0x45585a){return function(_0x5d2f68){try{jsonpatch[_0x974b('0x29')](_0x5d2f68,_0x45585a,!![]);}catch(_0x1b7b30){return BPromise[_0x974b('0x2a')](_0x1b7b30);}return _0x5d2f68[_0x974b('0x2b')]();};}function saveUpdates(_0x1fb6b1,_0x44306e){return function(_0x4fb9ee){if(_0x4fb9ee){return _0x4fb9ee[_0x974b('0x2c')](_0x1fb6b1)[_0x974b('0x2d')](function(_0xb87123){return _0xb87123;});}return null;};}function removeEntity(_0x39d988,_0x516eba){return function(_0x4389eb){if(_0x4389eb){return _0x4389eb[_0x974b('0x2e')]()[_0x974b('0x2d')](function(){_0x39d988[_0x974b('0x20')](0xcc)[_0x974b('0x21')]();});}};}function handleEntityNotFound(_0x2dabcb,_0x3e1764){return function(_0x53a9f0){if(!_0x53a9f0){_0x2dabcb[_0x974b('0x1f')](0x194);}return _0x53a9f0;};}function handleError(_0x5087e0,_0x530874){_0x530874=_0x530874||0x1f4;return function(_0x519202){logger['error'](_0x519202[_0x974b('0x2f')]);if(_0x519202[_0x974b('0x30')]){delete _0x519202['name'];}_0x5087e0[_0x974b('0x20')](_0x530874)['send'](_0x519202);};}function getInteractionUsers(_0x3d657b,_0xfab0f7){return new BPromise(function(_0x19a752,_0x426d45){try{if(_0xfab0f7[_0x3d657b['id']]){_0x3d657b['Users']=_[_0x974b('0x31')](_0xfab0f7[_0x3d657b['id']],function(_0xc8986b){return{'id':_0xc8986b['id'],'fullname':_0xc8986b[_0x974b('0x32')]};});}}catch(_0x4af396){_0x426d45(_0x4af396);}_0x19a752(_0x3d657b);});}function getInteractionTags(_0x260f7c,_0x2359ac){return new BPromise(function(_0x8d0288,_0x551398){try{if(_0x260f7c[_0x974b('0x33')]){_0x260f7c[_0x974b('0x34')]=[];_0x260f7c[_0x974b('0x33')][_0x974b('0x35')](',')[_0x974b('0x36')](function(_0x81bb61){_0x260f7c['Tags'][_0x974b('0x37')](_0x2359ac[_0x81bb61]);});}delete _0x260f7c[_0x974b('0x33')];}catch(_0x3fa119){_0x551398(_0x3fa119);}_0x8d0288(_0x260f7c);});}function updateOpenchannelInteraction(_0x3b5439,_0x14e0e7,_0x5644f8){return new BPromise(function(_0x5cdb82,_0x1ab295){return getInteractionUsers(_0x3b5439,_0x5644f8)[_0x974b('0x2d')](function(_0xfb5b1a){return getInteractionTags(_0xfb5b1a,_0x14e0e7);})['then'](function(_0x54c696){return getStateInteraction(_0x54c696);})[_0x974b('0x2d')](function(_0x761a96){_0x5cdb82(_0x761a96);})[_0x974b('0x38')](function(_0x523230){_0x1ab295(_0x523230);});});}function getStateInteraction(_0x4f2afc){return new BPromise(function(_0x3a1bf7){_0x4f2afc['waiting']=0x0;_0x4f2afc[_0x974b('0x39')]=0x0;_0x4f2afc[_0x974b('0x3a')]=0x0;_0x4f2afc[_0x974b('0x3b')]=0x0;_0x4f2afc['total']=0x0;if(!_0x4f2afc[_0x974b('0x3c')]&&!_0x4f2afc[_0x974b('0x3d')]){_0x4f2afc['waiting']+=0x1;}if(!_0x4f2afc[_0x974b('0x3c')]&&_0x4f2afc['UserId']){_0x4f2afc[_0x974b('0x39')]+=0x1;if(_0x4f2afc[_0x974b('0x3e')]){_0x4f2afc['waiting']-=0x1;}}if(_0x4f2afc['closed']&&_0x4f2afc[_0x974b('0x3d')]){_0x4f2afc[_0x974b('0x3a')]+=0x1;if(_0x4f2afc['talking']){_0x4f2afc[_0x974b('0x39')]-=0x1;}}if(_0x4f2afc['closed']&&!_0x4f2afc[_0x974b('0x3d')]){_0x4f2afc['unmanaged']+=0x1;if(_0x4f2afc[_0x974b('0x3e')]){_0x4f2afc[_0x974b('0x3e')]-=0x1;}}_0x4f2afc['total']+=0x1;_0x3a1bf7(_0x4f2afc);});}exports['index']=function(_0x334e49,_0xef3c13){var _0xa7ecf6={},_0xc4a8={},_0x599a3f={'count':0x0,'rows':[]};var _0x208fea=_[_0x974b('0x31')](db[_0x974b('0x3f')]['rawAttributes'],function(_0x1e23d5){return{'name':_0x1e23d5[_0x974b('0x40')],'type':_0x1e23d5[_0x974b('0x41')][_0x974b('0x42')]};});_0xc4a8[_0x974b('0x43')]=_[_0x974b('0x31')](_0x208fea,_0x974b('0x30'));_0xc4a8['query']=_['keys'](_0x334e49[_0x974b('0x44')]);_0xc4a8['filters']=_['intersection'](_0xc4a8[_0x974b('0x43')],_0xc4a8[_0x974b('0x44')]);_0xa7ecf6['attributes']=_['intersection'](_0xc4a8[_0x974b('0x43')],qs['fields'](_0x334e49[_0x974b('0x44')][_0x974b('0x45')]));_0xa7ecf6['attributes']=_0xa7ecf6[_0x974b('0x46')][_0x974b('0x47')]?_0xa7ecf6[_0x974b('0x46')]:_0xc4a8[_0x974b('0x43')];if(!_0x334e49[_0x974b('0x44')][_0x974b('0x48')]('nolimit')){_0xa7ecf6['limit']=qs[_0x974b('0x25')](_0x334e49[_0x974b('0x44')]['limit']);_0xa7ecf6['offset']=qs[_0x974b('0x23')](_0x334e49[_0x974b('0x44')][_0x974b('0x23')]);}_0xa7ecf6['order']=qs[_0x974b('0x49')](_0x334e49[_0x974b('0x44')][_0x974b('0x49')]);_0xa7ecf6['where']=qs['filters'](_['pick'](_0x334e49[_0x974b('0x44')],_0xc4a8[_0x974b('0x4a')]),_0x208fea);var _0x59fb0a=[];var _0x330a61=squel[_0x974b('0x4b')]()[_0x974b('0x4c')]('id')[_0x974b('0x4c')](_0x974b('0x30'))[_0x974b('0x4c')]('color')[_0x974b('0x4d')](_0x974b('0x4e'));var _0x11328e=squel[_0x974b('0x4b')]()[_0x974b('0x4c')](_0x974b('0x4f'))[_0x974b('0x4c')]('u.fullname')[_0x974b('0x4c')](_0x974b('0x50'))['from'](_0x974b('0x51'),'ui')[_0x974b('0x52')]('users','u',_0x974b('0x53'));var _0x1e4b51=squel[_0x974b('0x4b')]()[_0x974b('0x4d')]('openchannel_interactions','i')[_0x974b('0x52')](_0x974b('0x54'),'c',_0x974b('0x55'))[_0x974b('0x52')]('users','o','o.id\x20=\x20i.UserId')[_0x974b('0x52')]('openchannel_accounts','a',_0x974b('0x56'))[_0x974b('0x52')](_0x974b('0x57'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x974b('0x52')](_0x974b('0x58'),'it','it.OpenchannelInteractionId\x20=\x20i.id')[_0x974b('0x52')]('tools_tags','t',_0x974b('0x59'));var _0x46ce90=squel['expr']();var _0xe9f3d=[];var _0x35f458=squel[_0x974b('0x5a')]();var _0x15c40c;if(_0x334e49[_0x974b('0x44')][_0x974b('0x5b')]){_0x15c40c=as[_0x974b('0x5c')](_0x334e49[_0x974b('0x44')][_0x974b('0x5b')]);var _0x4b4682=_0x15c40c[_0x974b('0x5d')];for(var _0x169d71=0x0;_0x169d71<_0x15c40c[_0x974b('0x5e')][_0x974b('0x47')];_0x169d71++){var _0x4adda6=_0x15c40c['conditions'][_0x169d71];var _0x5c9c5c='i';var _0x1c4f65=_[_0x974b('0x5f')](_0x208fea,['name',_0x4adda6[_0x974b('0x4c')]]);if(!_0x1c4f65){switch(_0x4adda6['field']){case _0x974b('0x60'):if(_0x4adda6[_0x974b('0x61')]==0x1){_0x1e4b51['having']('`'+_0x4adda6[_0x974b('0x4c')]+_0x974b('0x62'));}else{_0x1e4b51['having']('`'+_0x4adda6[_0x974b('0x4c')]+_0x974b('0x63'));}break;case _0x974b('0x64'):if(_0x4adda6['operator']===_0x974b('0x65')){if(_0x4adda6['value'][_0x974b('0x35')]('\x20')[_0x974b('0x47')]>0x1){_0x46ce90[_0x4b4682](_0x974b('0x66'),qs[_0x974b('0x67')](_0x4adda6[_0x974b('0x61')]),null);}else{var _0x5aa0ac='%'+_0x4adda6['value']+'%';_0x46ce90[_0x4b4682](_0x974b('0x68'),_0x5aa0ac,_0x5aa0ac,_0x5aa0ac);}}else{_0x1c4f65=_[_0x974b('0x5f')](_0x208fea,[_0x974b('0x30'),_0x974b('0x69')]);_0x4adda6[_0x974b('0x4c')]=_0x974b('0x69');_0x4a26b5=as[_0x974b('0x6a')](_0x5c9c5c,_0x1c4f65[_0x974b('0x41')],_0x4adda6);_0x46ce90[_0x4b4682](_0x4a26b5[_0x974b('0x6b')],_0x4a26b5['value'][_0x974b('0x6c')],_0x4a26b5['value']['end']);}break;case _0x974b('0x6d'):var _0xa9cf89=_0x4adda6[_0x974b('0x61')][_0x974b('0x35')](',')[_0x974b('0x31')](function(_0x4cf728){return Number(_0x4cf728);});_0xa9cf89['forEach'](function(_0x2864f8){_0x35f458['or'](_0x974b('0x6e'),'%,'+_0x2864f8+',%');});_0xe9f3d=_[_0x974b('0x6f')](_0xe9f3d,_0xa9cf89);break;case _0x974b('0x70'):if(_0x4adda6['operator']===_0x974b('0x65')){_0x46ce90[_0x4b4682](_0x974b('0x71'),'%'+_0x4adda6['value']+'%',null);}else{_0x1c4f65=_[_0x974b('0x5f')](_0x208fea,[_0x974b('0x30'),_0x974b('0x3d')]);_0x4adda6[_0x974b('0x4c')]=_0x974b('0x3d');_0x4a26b5=as[_0x974b('0x6a')](_0x5c9c5c,_0x1c4f65[_0x974b('0x41')],_0x4adda6);_0x46ce90[_0x4b4682](_0x4a26b5['text'],_0x4a26b5[_0x974b('0x61')]['start'],_0x4a26b5[_0x974b('0x61')]['end']);}break;case _0x974b('0x72'):_0x4a26b5=as[_0x974b('0x6a')]('me',null,_0x4adda6);_0x46ce90[_0x4b4682](_0x4a26b5[_0x974b('0x6b')],_0x4a26b5[_0x974b('0x61')]['start'],_0x4a26b5['value']['end']);break;}}else{var _0x4a26b5=as[_0x974b('0x6a')](_0x5c9c5c,_0x1c4f65['type'],_0x4adda6);_0x46ce90[_0x4b4682](_0x4a26b5[_0x974b('0x6b')],_0x4a26b5[_0x974b('0x61')]['start'],_0x4a26b5[_0x974b('0x61')][_0x974b('0x21')]);}}}else{var _0x407cb3=_(_0x334e49[_0x974b('0x44')])[_0x974b('0x73')]()[_0x974b('0x31')](function(_0xe732ec){return _[_0x974b('0x74')](_0x208fea,[_0x974b('0x30'),_0xe732ec])?_0xe732ec:undefined;})[_0x974b('0x75')]()[_0x974b('0x61')]();if(!_[_0x974b('0x76')](_0x407cb3)){_0x407cb3[_0x974b('0x36')](function(_0x59a2b9){if(_0x59a2b9===_0x974b('0x77')){_0x1e4b51[_0x974b('0x78')]('i.OpenchannelAccountId\x20IN\x20?',[][_0x974b('0x79')](_0x334e49['query'][_0x59a2b9]));}else if(_0x59a2b9===_0x974b('0x7a')){var _0x4bef5f=JSON[_0x974b('0x7b')](_0x334e49[_0x974b('0x44')][_0x59a2b9])[_0x974b('0x7c')];var _0x54f1fd=JSON[_0x974b('0x7b')](_0x334e49[_0x974b('0x44')][_0x59a2b9])[_0x974b('0x7d')];_0x1e4b51[_0x974b('0x78')](_0x974b('0x7e'),_0x4bef5f,_0x54f1fd);}else{if(_0x334e49[_0x974b('0x44')][_0x59a2b9]===_0x974b('0x7f')){_0x1e4b51[_0x974b('0x78')]('i.'+_0x59a2b9+_0x974b('0x80'));}else{_0x1e4b51[_0x974b('0x78')]('i.'+_0x59a2b9+_0x974b('0x81'),_0x334e49[_0x974b('0x44')][_0x59a2b9]);}}});}if(_0x334e49[_0x974b('0x44')][_0x974b('0x82')]){if(_0x334e49['query'][_0x974b('0x82')]==0x1){_0x1e4b51[_0x974b('0x83')](_0x974b('0x84'));}else{_0x1e4b51[_0x974b('0x83')]('`unreadMessages`\x20>\x200');}}if(_0x334e49[_0x974b('0x44')][_0x974b('0x85')]){_0xe9f3d=_[_0x974b('0x86')](_0x334e49[_0x974b('0x44')][_0x974b('0x85')])?_0x334e49[_0x974b('0x44')]['tag']:new Array(_0x334e49[_0x974b('0x44')][_0x974b('0x85')]);_0xe9f3d['forEach'](function(_0x3a9257){_0x35f458['or'](_0x974b('0x6e'),'%,'+_0x3a9257+',%');});}if(_0x334e49[_0x974b('0x44')][_0x974b('0x87')]){var _0x3ff7f0=_0x334e49[_0x974b('0x44')]['filter'][_0x974b('0x88')]('\x5c','\x5c\x5c')[_0x974b('0x88')](/'/g,'\x27\x27');if(qs[_0x974b('0x89')](_0x3ff7f0)){_0x46ce90['or'](_0x974b('0x8a'),_0x3ff7f0+'%');}else{_0x46ce90['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x974b('0x67')](_0x3ff7f0))['or'](_0x974b('0x8b'),_0x3ff7f0+'%')['or'](_0x974b('0x8c'),_0x3ff7f0+'%');}}}_0x1e4b51['where'](_0x46ce90);_0x1e4b51[_0x974b('0x8d')](_0x974b('0x8e'));var _0x134b14={'type':db[_0x974b('0x8f')][_0x974b('0x90')][_0x974b('0x91')],'raw':!![]};var _0x57b950=_0x1e4b51[_0x974b('0x92')]();_0x57b950[_0x974b('0x4c')](_0x974b('0x8e'));_0x57b950['field'](_0x974b('0x93'),'unreadMessages');if(_0xa7ecf6[_0x974b('0x94')]){_0xa7ecf6[_0x974b('0x94')][_0x974b('0x36')](function(_0x230f27){var _0x3f485a=_0x230f27[0x0]===_0x974b('0x95')?_0x230f27[0x0]:'i.'+_0x230f27[0x0];_0x1e4b51[_0x974b('0x94')](_0x3f485a,_0x230f27[0x1]===_0x974b('0x96')?![]:!![]);});}if(!_['isEmpty'](_0xe9f3d)){_0x1e4b51[_0x974b('0x83')](_0x35f458);_0x57b950[_0x974b('0x78')](_0x974b('0x97'),_0xe9f3d);}BPromise['resolve']()[_0x974b('0x2d')](function(){if(!_0x15c40c){if(_0x334e49['query']['OpenchannelAccountId'])return;_0x57b950[_0x974b('0x78')](_0x974b('0x98'));_0x1e4b51[_0x974b('0x78')](_0x974b('0x98'));return;}if(_0x334e49[_0x974b('0x99')]['role']!=='agent')return;return _0x334e49['user'][_0x974b('0x9a')]({'attributes':['id'],'raw':!![]})[_0x974b('0x2d')](function(_0x4274e1){if(_[_0x974b('0x76')](_0x4274e1)){_0x57b950[_0x974b('0x78')](_0x974b('0x9b'));_0x1e4b51[_0x974b('0x78')]('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x57b950[_0x974b('0x78')](_0x974b('0x9c'),_[_0x974b('0x31')](_0x4274e1,'id'));_0x1e4b51[_0x974b('0x78')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x974b('0x31')](_0x4274e1,'id'));}});})[_0x974b('0x2d')](function(){if(_0x334e49[_0x974b('0x99')][_0x974b('0x9d')]===_0x974b('0x9e')&&!_0x15c40c&&!_0x334e49[_0x974b('0x44')]['OpenchannelAccountId'])return[];return db[_0x974b('0x9f')][_0x974b('0x44')](_0x57b950[_0x974b('0xa0')](),_0x134b14);})[_0x974b('0x2d')](function(_0x2329bc){_0x599a3f[_0x974b('0x26')]=_0x2329bc['length'];if(_0x599a3f[_0x974b('0x26')]===0x0)return[];return db[_0x974b('0x9f')][_0x974b('0x44')](_0x330a61['toString'](),_0x134b14)[_0x974b('0x2d')](function(_0x4708cb){_0x59fb0a=_['keyBy'](_0x4708cb,'id');_0x134b14=_[_0x974b('0xa1')](_0x134b14,{'model':db[_0x974b('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x334e49['query'][_0x974b('0x45')]){_0xa7ecf6[_0x974b('0x46')][_0x974b('0x36')](function(_0x1a06cc){_0x1e4b51[_0x974b('0x4c')]('i.'+_0x1a06cc);});}else{_0x1e4b51[_0x974b('0x4c')](_0x974b('0x93'),_0x974b('0x60'));_0x1e4b51['field'](_0x974b('0xa2'),_0x974b('0xa3'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xa4'),_0x974b('0xa5'));_0x1e4b51['field']('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0x974b('0x95'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xa6'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xa7'),_0x974b('0xa8'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xa9'),_0x974b('0xaa'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xab'),_0x974b('0xac'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xad'),_0x974b('0xae'));_0x1e4b51[_0x974b('0x4c')]('c.mobile','Contact.mobile');_0x1e4b51[_0x974b('0x4c')](_0x974b('0xaf'),_0x974b('0xb0'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xb1'),_0x974b('0xb2'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xb3'),_0x974b('0xb4'));_0x1e4b51[_0x974b('0x4c')](_0x974b('0xb5'),'TagIds');}if(_0xa7ecf6[_0x974b('0x25')])_0x1e4b51[_0x974b('0x25')](_0xa7ecf6[_0x974b('0x25')]);if(_0xa7ecf6[_0x974b('0x23')])_0x1e4b51[_0x974b('0x23')](_0xa7ecf6['offset']);return db[_0x974b('0x9f')]['query'](_0x1e4b51[_0x974b('0xa0')](),_0x134b14);})[_0x974b('0x2d')](function(_0x3f3621){if(_0x3f3621[_0x974b('0x47')]>0x0)_0x11328e[_0x974b('0x78')](_0x974b('0xb6'),_[_0x974b('0x31')](_0x3f3621,'id'));return db[_0x974b('0x9f')][_0x974b('0x44')](_0x11328e[_0x974b('0xa0')](),_0x134b14)[_0x974b('0x2d')](function(_0x31e0d2){var _0x5787c7=_[_0x974b('0xb7')](_0x31e0d2,_0x974b('0xb8'));var _0x1e2395=[];_0x3f3621[_0x974b('0x36')](function(_0x9f7fc7){_0x1e2395['push'](updateOpenchannelInteraction(_0x9f7fc7,_0x59fb0a,_0x5787c7));});return BPromise[_0x974b('0xb9')](_0x1e2395);});});})['then'](function(_0x5eee6f){_0x599a3f['rows']=_0x5eee6f;return _0x599a3f;})[_0x974b('0x2d')](respondWithFilteredResult(_0xef3c13,_0xa7ecf6))['catch'](handleError(_0xef3c13,null));};exports[_0x974b('0xba')]=function(_0x4a9165,_0x23dc21){var _0xa0b484={};if(_0x4a9165[_0x974b('0x44')]['type']&&_0x4a9165['query']['type']===_0x974b('0x4d')){_0xa0b484[_0x974b('0x4d')]=_0x4a9165['params']['id'];}else{_0xa0b484['id']=_0x4a9165[_0x974b('0xbb')]['id'];}var _0x367610={'raw':![],'where':_0xa0b484},_0x307a78={};_0x307a78[_0x974b('0x43')]=_[_0x974b('0x73')](db[_0x974b('0x3f')][_0x974b('0xbc')]);_0x307a78[_0x974b('0x44')]=_[_0x974b('0x73')](_0x4a9165[_0x974b('0x44')]);_0x307a78['filters']=_[_0x974b('0xbd')](_0x307a78[_0x974b('0x43')],_0x307a78[_0x974b('0x44')]);_0x367610['attributes']=_[_0x974b('0xbd')](_0x307a78[_0x974b('0x43')],qs[_0x974b('0x45')](_0x4a9165[_0x974b('0x44')][_0x974b('0x45')]));_0x367610[_0x974b('0x46')]=_0x367610[_0x974b('0x46')][_0x974b('0x47')]?_0x367610['attributes']:_0x307a78[_0x974b('0x43')];if(_0x4a9165[_0x974b('0x44')][_0x974b('0xbe')]){_0x367610[_0x974b('0xbf')]=[{'all':!![]}];}_0x367610=_['merge']({},_0x367610,_0x4a9165[_0x974b('0xc0')]);return db[_0x974b('0x3f')][_0x974b('0x5f')](_0x367610)[_0x974b('0x2d')](handleEntityNotFound(_0x23dc21,null))[_0x974b('0x2d')](respondWithResult(_0x23dc21,null))[_0x974b('0x38')](handleError(_0x23dc21,null));};exports[_0x974b('0xc1')]=function(_0x2a3ff3,_0x4a263c){return db['OpenchannelInteraction']['create'](_0x2a3ff3[_0x974b('0x72')],{})[_0x974b('0x2d')](respondWithResult(_0x4a263c,0xc9))[_0x974b('0x38')](handleError(_0x4a263c,null));};exports[_0x974b('0x2c')]=function(_0x25865d,_0xb38e54){if(_0x25865d['body']['id']){delete _0x25865d['body']['id'];}return db['OpenchannelInteraction'][_0x974b('0x5f')]({'where':{'id':_0x25865d[_0x974b('0xbb')]['id']}})[_0x974b('0x2d')](handleEntityNotFound(_0xb38e54,null))[_0x974b('0x2d')](saveUpdates(_0x25865d['body'],null))[_0x974b('0x2d')](respondWithResult(_0xb38e54,null))[_0x974b('0x38')](handleError(_0xb38e54,null));};exports[_0x974b('0x2e')]=function(_0x3bc2bb,_0x26f872){return db[_0x974b('0x3f')][_0x974b('0x5f')]({'where':{'id':_0x3bc2bb[_0x974b('0xbb')]['id']}})[_0x974b('0x2d')](handleEntityNotFound(_0x26f872,null))[_0x974b('0x2d')](removeEntity(_0x26f872,null))[_0x974b('0x38')](handleError(_0x26f872,null));};exports[_0x974b('0xc2')]=function(_0x47d702,_0x4fd496){return db[_0x974b('0x3f')][_0x974b('0xc2')]()[_0x974b('0x2d')](respondWithResult(_0x4fd496,null))[_0x974b('0x38')](handleError(_0x4fd496,null));};exports[_0x974b('0xc3')]=function(_0x22f205,_0x5684b1,_0x5dbf8d){return db[_0x974b('0xc4')]['find']({'where':{'id':_0x22f205[_0x974b('0xbb')]['id']}})['then'](handleEntityNotFound(_0x5684b1,null))[_0x974b('0x2d')](function(_0x4c6521){if(_0x4c6521){return _0x4c6521['addMessage'](_0x22f205[_0x974b('0x72')][_0x974b('0xc5')],_[_0x974b('0xc6')](_0x22f205[_0x974b('0x72')],[_0x974b('0xc5'),'id'])||{});}})['then'](respondWithResult(_0x5684b1,null))[_0x974b('0x38')](handleError(_0x5684b1,null));};exports[_0x974b('0xc7')]=function(_0x125b60,_0x4ff014,_0x58ca99){var _0x26de0b={'raw':![],'where':{}};var _0x41ee37={};var _0x52e4ce={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x974b('0xc8')]({'where':{'id':_0x125b60[_0x974b('0xbb')]['id']}})[_0x974b('0x2d')](handleEntityNotFound(_0x4ff014,null))['then'](function(_0x2fccbc){if(_0x2fccbc){_0x41ee37['model']=_['keys'](db[_0x974b('0xc4')][_0x974b('0xbc')]);_0x41ee37[_0x974b('0x44')]=_[_0x974b('0x73')](_0x125b60['query']);_0x41ee37['filters']=_[_0x974b('0xbd')](_0x41ee37[_0x974b('0x43')],_0x41ee37[_0x974b('0x44')]);_0x26de0b['attributes']=_[_0x974b('0xbd')](_0x41ee37[_0x974b('0x43')],qs[_0x974b('0x45')](_0x125b60[_0x974b('0x44')]['fields']));_0x26de0b[_0x974b('0x46')]=_0x26de0b[_0x974b('0x46')][_0x974b('0x47')]?_0x26de0b[_0x974b('0x46')]:_0x41ee37[_0x974b('0x43')];if(!_0x125b60['query'][_0x974b('0x48')](_0x974b('0xc9'))){_0x26de0b[_0x974b('0x25')]=qs[_0x974b('0x25')](_0x125b60[_0x974b('0x44')][_0x974b('0x25')]);_0x26de0b['offset']=qs[_0x974b('0x23')](_0x125b60[_0x974b('0x44')][_0x974b('0x23')]);}_0x26de0b['order']=qs[_0x974b('0x49')](_0x125b60[_0x974b('0x44')][_0x974b('0x49')]);_0x26de0b['where']=qs[_0x974b('0x4a')](_[_0x974b('0xca')](_0x125b60[_0x974b('0x44')],_0x41ee37[_0x974b('0x4a')]));_0x26de0b[_0x974b('0x78')][_0x974b('0xb8')]=_0x2fccbc['id'];if(_0x125b60[_0x974b('0x44')][_0x974b('0x87')]){_0x26de0b[_0x974b('0x78')]=_[_0x974b('0xa1')](_0x26de0b[_0x974b('0x78')],{'$or':_[_0x974b('0x31')](_0x26de0b[_0x974b('0x46')],function(_0x4c40ee){var _0x168e4c={};_0x168e4c[_0x4c40ee]={'$like':'%'+_0x125b60[_0x974b('0x44')][_0x974b('0x87')]+'%'};return _0x168e4c;})});}if(_0x125b60[_0x974b('0x44')][_0x974b('0x7c')]){var _0x480d68=_0x125b60[_0x974b('0x44')][_0x974b('0x7c')]['split'](',');var _0xcd4a09={};_0xcd4a09[_0x480d68[0x0]]={'$gte':moment(_0x480d68[0x1])[_0x974b('0xcb')](_0x974b('0xcc'))};_0x26de0b[_0x974b('0x78')]=_[_0x974b('0xa1')](_0x26de0b['where'],_0xcd4a09);}_0x26de0b=_[_0x974b('0xa1')]({},_0x26de0b,_0x125b60[_0x974b('0xc0')]);return db[_0x974b('0xc4')][_0x974b('0x26')]({'where':_0x26de0b[_0x974b('0x78')]})[_0x974b('0x2d')](function(_0x1c1af0){_0x52e4ce[_0x974b('0x26')]=_0x1c1af0;if(_0x125b60[_0x974b('0x44')]['includeAll']){_0x26de0b[_0x974b('0xbf')]=[{'all':!![]}];}return db[_0x974b('0xc4')][_0x974b('0xcd')](_0x26de0b);})[_0x974b('0x2d')](function(_0x188bfd){_0x52e4ce['rows']=_0x188bfd;return _0x52e4ce;});}})[_0x974b('0x2d')](respondWithFilteredResult(_0x4ff014,_0x26de0b))[_0x974b('0x38')](handleError(_0x4ff014,null));};exports[_0x974b('0xce')]=function(_0x4ce1d9,_0x36729c,_0x32b7de){return db['OpenchannelInteraction'][_0x974b('0x5f')]({'where':{'id':_0x4ce1d9[_0x974b('0xbb')]['id']}})[_0x974b('0x2d')](handleEntityNotFound(_0x36729c,null))['then'](function(_0x27d9a6){if(_0x27d9a6){return _0x27d9a6[_0x974b('0xcf')](_0x4ce1d9[_0x974b('0x72')][_0x974b('0xc5')],_['omit'](_0x4ce1d9[_0x974b('0x72')],[_0x974b('0xc5'),'id'])||{})['spread'](function(){return db[_0x974b('0x6d')][_0x974b('0xcd')]({'attributes':['id',_0x974b('0x30'),'color'],'where':{'id':_0x4ce1d9[_0x974b('0x72')][_0x974b('0xc5')]}});})[_0x974b('0x2d')](function(_0x2bb935){socket[_0x974b('0xd0')](_0x974b('0xd1'),{'id':Number(_0x4ce1d9['params']['id']),'tags':_0x2bb935||[]});return{'id':Number(_0x4ce1d9[_0x974b('0xbb')]['id']),'tags':_0x2bb935||[]};});}})[_0x974b('0x2d')](respondWithResult(_0x36729c,null))['catch'](handleError(_0x36729c,null));};exports[_0x974b('0xd2')]=function(_0x48fad9,_0x3f9d95,_0x5abc50){return db[_0x974b('0x3f')][_0x974b('0x5f')]({'where':{'id':_0x48fad9[_0x974b('0xbb')]['id']}})[_0x974b('0x2d')](handleEntityNotFound(_0x3f9d95,null))[_0x974b('0x2d')](function(_0x5236f0){if(_0x5236f0){return _0x5236f0[_0x974b('0xd2')](_0x48fad9[_0x974b('0x44')][_0x974b('0xc5')]);}})['then'](respondWithStatusCode(_0x3f9d95,null))[_0x974b('0x38')](handleError(_0x3f9d95,null));};exports['download']=function(_0x6e715d,_0x2f7d11){var _0x52183f=moment()['unix']()[_0x974b('0xa0')]();var _0x2a930e=path[_0x974b('0xd3')](config[_0x974b('0xd4')],_0x974b('0xd5'),'files',_0x974b('0xd6'));var _0x486017=path['join'](config[_0x974b('0xd4')],_0x974b('0xd5'),_0x974b('0xd7'),_0x974b('0xd8'));var _0xd2e4ae=path['join'](_0x2a930e,_0x52183f);var _0x5b012a=util[_0x974b('0xcb')](_0x974b('0xd9'),_0x6e715d[_0x974b('0xbb')]['id'],_0x52183f);var _0x33628b=path[_0x974b('0xd3')](_0x2a930e,_0x5b012a);var _0x40960c=[];_0x40960c[_0x974b('0x37')]({'model':db[_0x974b('0x70')],'as':_0x974b('0x70'),'attributes':['id',_0x974b('0x32')],'raw':!![]});_0x40960c[_0x974b('0x37')]({'model':db[_0x974b('0xda')],'as':_0x974b('0x64'),'attributes':['id',_0x974b('0xdb'),_0x974b('0xdc')],'raw':!![]});if(_0x6e715d['query'][_0x974b('0xd8')]){_0x40960c[_0x974b('0x37')]({'model':db[_0x974b('0xdd')],'as':_0x974b('0xdd'),'raw':!![]});}var _0x1e9ab3=[{'model':db[_0x974b('0xc4')],'as':_0x974b('0xde'),'attributes':['id',_0x974b('0x72'),_0x974b('0x7a'),_0x974b('0xdf'),_0x974b('0xe0'),'read'],'include':_0x40960c}];_0x1e9ab3[_0x974b('0x37')]({'model':db['OpenchannelAccount'],'as':_0x974b('0xe1'),'attributes':['id',_0x974b('0x30')]});_0x1e9ab3[_0x974b('0x37')]({'model':db[_0x974b('0x70')],'as':_0x974b('0xe2'),'attributes':['id','fullname']});return db[_0x974b('0x3f')]['find']({'where':{'id':_0x6e715d[_0x974b('0xbb')]['id']},'include':_0x1e9ab3})[_0x974b('0x2d')](handleEntityNotFound(_0x2f7d11,null))[_0x974b('0x2d')](function(_0x106341){if(_0x106341){var _0x27679d=_0x106341[_0x974b('0xe3')]({'plain':!![]});fs[_0x974b('0xe4')](_0xd2e4ae);var _0x339616={'channel':_0x974b('0xe5'),'account':_0x27679d[_0x974b('0xe1')][_0x974b('0x30')],'agent':_0x27679d['Owner']?_0x27679d[_0x974b('0xe2')][_0x974b('0x32')]:'N.A.','createdAt':moment(_0x27679d[_0x974b('0x7a')])[_0x974b('0xcb')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x27679d[_0x974b('0x3c')]?moment(_0x27679d[_0x974b('0xe6')])[_0x974b('0xcb')]('YYYY-MM-DD\x20HH:mm:ss')[_0x974b('0xa0')]():'','disposition':_0x27679d[_0x974b('0xe7')],'visibility':_0x27679d[_0x974b('0xe8')]?_0x974b('0xe9'):'Private','messages':_(_0x27679d[_0x974b('0xde')])['filter']({'secret':![]})[_0x974b('0x31')](function(_0x489bfb){if(_0x489bfb['Attachment']){var _0x1cacb0=path[_0x974b('0xd3')](_0x486017,_0x489bfb['Attachment'][_0x974b('0xea')]);if(fs[_0x974b('0xeb')](_0x1cacb0)){fs[_0x974b('0xec')](_0x1cacb0)['pipe'](fs[_0x974b('0xed')](path['join'](_0xd2e4ae,_0x489bfb[_0x974b('0xdd')][_0x974b('0xea')])));}}return{'date':moment(_0x489bfb['createdAt'])[_0x974b('0xcb')](_0x974b('0xcc'))['toString'](),'sender':_0x489bfb[_0x974b('0xdf')]===_0x974b('0xee')?_0x489bfb[_0x974b('0x70')]?_0x489bfb[_0x974b('0x70')][_0x974b('0x32')]:_0x974b('0xef'):_0x489bfb[_0x974b('0x64')][_0x974b('0xdb')]+(_0x489bfb[_0x974b('0x64')][_0x974b('0xdc')]?'\x20'+_0x489bfb[_0x974b('0x64')][_0x974b('0xdc')]:''),'body':_0x489bfb[_0x974b('0xdd')]?_0x489bfb[_0x974b('0xdd')][_0x974b('0xea')]:_0x489bfb[_0x974b('0x72')],'direction':_0x489bfb['direction']===_0x974b('0xee')?'A':'C','secret':_0x489bfb[_0x974b('0xe0')],'read':_0x489bfb[_0x974b('0x82')],'attachment':_0x489bfb['Attachment']};})[_0x974b('0x61')]()};return ejs[_0x974b('0xf0')](path['join'](config[_0x974b('0xd4')],_0x974b('0xd5'),_0x974b('0xf1'),_0x974b('0xf2')),{'interaction':_0x339616})[_0x974b('0x2d')](function(_0xe8b338){var _0x3f450b=path[_0x974b('0xd3')](_0xd2e4ae,_0x974b('0xf3')+_0x27679d['id']+'-'+_0x52183f+_0x974b('0xf4'));var _0x5c9377={'path':_0x3f450b,'channel':_0x974b('0xe5'),'interactionId':_0x27679d['id']};return pdf[_0x974b('0xf5')](_0xe8b338,_0x5c9377);})[_0x974b('0x2d')](function(){return new BPromise(function(_0x4ab945,_0x46ed0f){zipdir(_0xd2e4ae,{'saveTo':_0x33628b},function(_0x335f27,_0x38713d){if(_0x335f27)return _0x46ed0f(_0x335f27);return _0x4ab945(_0x38713d);});})['then'](function(){return new BPromise(function(_0x5788d7,_0xb0380){rimraf(_0xd2e4ae,function(_0x8f427d){if(_0x8f427d)_0xb0380(_0x8f427d);return _0x5788d7();});});})[_0x974b('0x2d')](function(){return _0x2f7d11[_0x974b('0xf6')](_0x33628b,_0x5b012a,function(_0x147b40){if(_0x147b40){console[_0x974b('0xf7')](_0x974b('0xf8'),_0x147b40);}else{fs[_0x974b('0xf9')](_0x33628b);}});});});}else{return _0x2f7d11[_0x974b('0x1f')](0xc8);}})[_0x974b('0x38')](handleError(_0x2f7d11,null));};
\ No newline at end of file
index df1e7e0..8b8626c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4df9=['OpenchannelInteraction','setMaxListeners','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x4a7f8e,_0x487433){var _0x38c489=function(_0x4b3a3d){while(--_0x4b3a3d){_0x4a7f8e['push'](_0x4a7f8e['shift']());}};_0x38c489(++_0x487433);}(_0x4df9,0x1da));var _0x94df=function(_0x39d444,_0xebf65a){_0x39d444=_0x39d444-0x0;var _0x21e2e4=_0x4df9[_0x39d444];return _0x21e2e4;};'use strict';var EventEmitter=require(_0x94df('0x0'));var OpenchannelInteraction=require(_0x94df('0x1'))['db'][_0x94df('0x2')];var OpenchannelMessage=require(_0x94df('0x1'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x94df('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x94df('0x4')};function emitEvent(_0x46893a){return function(_0x3f6794,_0x23c0c4,_0x295ea8){_0x3f6794[_0x94df('0x5')]({'attributes':['id'],'raw':!![]})[_0x94df('0x6')](function(_0x4a3782){_0x3f6794[_0x94df('0x7')](_0x94df('0x8'),_0x4a3782[_0x94df('0x9')](function(_0x375d38){return{'id':_0x375d38['id']};}));return OpenchannelMessage[_0x94df('0xa')]({'where':{'OpenchannelInteractionId':_0x3f6794['id'],'direction':'in','read':![]},'raw':!![]});})[_0x94df('0x6')](function(_0x37e3c0){_0x3f6794[_0x94df('0x7')](_0x94df('0xb'),_0x37e3c0[_0x94df('0xc')]);OpenchannelInteractionEvents[_0x94df('0xd')](_0x46893a+':'+_0x3f6794['id'],_0x3f6794);OpenchannelInteractionEvents['emit'](_0x46893a,_0x3f6794);_0x295ea8(null);})[_0x94df('0xe')](_0x295ea8(null));};}for(var e in events){if(events[_0x94df('0xf')](e)){var event=events[e];OpenchannelInteraction[_0x94df('0x10')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xe02c=['events','../../mysqldb','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','emit','exports'];(function(_0x3f8161,_0x517b5f){var _0x23815c=function(_0x54574c){while(--_0x54574c){_0x3f8161['push'](_0x3f8161['shift']());}};_0x23815c(++_0x517b5f);}(_0xe02c,0xb6));var _0xce02=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe02c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xce02('0x0'));var OpenchannelInteraction=require(_0xce02('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0xce02('0x1'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xce02('0x2')](0x0);var events={'afterCreate':_0xce02('0x3'),'afterUpdate':'update','afterDestroy':_0xce02('0x4')};function emitEvent(_0x2a9f8d){return function(_0x4830e8,_0x3f4afe,_0x33d3b7){_0x4830e8[_0xce02('0x5')]({'attributes':['id'],'raw':!![]})[_0xce02('0x6')](function(_0x113141){_0x4830e8[_0xce02('0x7')](_0xce02('0x8'),_0x113141['map'](function(_0x2000c3){return{'id':_0x2000c3['id']};}));return OpenchannelMessage[_0xce02('0x9')]({'where':{'OpenchannelInteractionId':_0x4830e8['id'],'direction':'in','read':![]},'raw':!![]});})[_0xce02('0x6')](function(_0xbe657){_0x4830e8[_0xce02('0x7')](_0xce02('0xa'),_0xbe657['length']);OpenchannelInteractionEvents[_0xce02('0xb')](_0x2a9f8d+':'+_0x4830e8['id'],_0x4830e8);OpenchannelInteractionEvents[_0xce02('0xb')](_0x2a9f8d,_0x4830e8);_0x33d3b7(null);})['catch'](_0x33d3b7(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0xce02('0xc')]=OpenchannelInteractionEvents;
\ No newline at end of file
index c453f91..1ff6d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351b=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','request-promise','rimraf','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed'];(function(_0x4ffcaa,_0x328621){var _0x3ce272=function(_0x29a5e6){while(--_0x29a5e6){_0x4ffcaa['push'](_0x4ffcaa['shift']());}};_0x3ce272(++_0x328621);}(_0x351b,0x112));var _0xb351=function(_0x295ca8,_0xe00d60){_0x295ca8=_0x295ca8-0x0;var _0x4144dd=_0x351b[_0x295ca8];return _0x4144dd;};'use strict';var _=require(_0xb351('0x0'));var util=require(_0xb351('0x1'));var logger=require('../../config/logger')(_0xb351('0x2'));var moment=require(_0xb351('0x3'));var BPromise=require('bluebird');var rp=require(_0xb351('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb351('0x5'));var config=require('../../config/environment');var attributes=require(_0xb351('0x6'));module[_0xb351('0x7')]=function(_0x201409,_0x460fde){return _0x201409[_0xb351('0x8')](_0xb351('0x9'),attributes,{'tableName':_0xb351('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb351('0xb'),'collate':_0xb351('0xc'),'hooks':{'beforeUpdate':function(_0x29438e,_0x125130,_0x3ce56e){if(_0x29438e[_0xb351('0xd')](_0xb351('0xe'))){_0x29438e[_0xb351('0xf')]=moment()[_0xb351('0x10')](_0xb351('0x11'));}_0x3ce56e(null,_0x29438e);}}});};
\ No newline at end of file
+var _0x2f93=['path','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x2f93,0x14f));var _0x32f9=function(_0x1cfe05,_0x187434){_0x1cfe05=_0x1cfe05-0x0;var _0x2778aa=_0x2f93[_0x1cfe05];return _0x2778aa;};'use strict';var _=require(_0x32f9('0x0'));var util=require(_0x32f9('0x1'));var logger=require(_0x32f9('0x2'))(_0x32f9('0x3'));var moment=require(_0x32f9('0x4'));var BPromise=require(_0x32f9('0x5'));var rp=require(_0x32f9('0x6'));var fs=require('fs');var path=require(_0x32f9('0x7'));var rimraf=require('rimraf');var config=require(_0x32f9('0x8'));var attributes=require(_0x32f9('0x9'));module[_0x32f9('0xa')]=function(_0x48ac46,_0x36fd60){return _0x48ac46[_0x32f9('0xb')](_0x32f9('0xc'),attributes,{'tableName':_0x32f9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x32f9('0xe'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x361a09,_0x2f99fc,_0x346026){if(_0x361a09['changed'](_0x32f9('0xf'))){_0x361a09[_0x32f9('0x10')]=moment()[_0x32f9('0x11')](_0x32f9('0x12'));}_0x346026(null,_0x361a09);}}});};
\ No newline at end of file
index ca56ffd..d614747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd50a=['OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','attributes','limit','debug','AddTagsToOpenchannelInteraction','find','where','addTags','ids','spread','AddTags','lodash','util','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','request','then','info'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xd50a,0x1b2));var _0xad50=function(_0x5dbfee,_0x2ec906){_0x5dbfee=_0x5dbfee-0x0;var _0x249914=_0xd50a[_0x5dbfee];return _0x249914;};'use strict';var _=require(_0xad50('0x0'));var util=require(_0xad50('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xad50('0x2'));var db=require(_0xad50('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xad50('0x4'));var config=require(_0xad50('0x5'));var jayson=require(_0xad50('0x6'));var client=jayson[_0xad50('0x7')][_0xad50('0x8')]({'port':0x232a});config[_0xad50('0x9')]=_[_0xad50('0xa')](config['redis'],{'host':_0xad50('0xb'),'port':0x18eb});var socket=require(_0xad50('0xc'))(new Redis(config[_0xad50('0x9')]));require(_0xad50('0xd'))['register'](socket);function respondWithRpcPromise(_0x394831,_0x49e939,_0x2eb903){return new BPromise(function(_0x15ac03,_0x51de81){return client[_0xad50('0xe')](_0x394831,_0x2eb903)[_0xad50('0xf')](function(_0x5a2ed6){logger[_0xad50('0x10')](_0xad50('0x11'),_0x49e939,_0xad50('0x12'));logger['debug'](_0xad50('0x13'),_0x49e939,_0xad50('0x12'),JSON[_0xad50('0x14')](_0x5a2ed6));if(_0x5a2ed6[_0xad50('0x15')]){if(_0x5a2ed6[_0xad50('0x15')][_0xad50('0x16')]===0x1f4){logger['error'](_0xad50('0x11'),_0x49e939,_0x5a2ed6['error']['message']);return _0x51de81(_0x5a2ed6[_0xad50('0x15')]['message']);}logger[_0xad50('0x15')](_0xad50('0x11'),_0x49e939,_0x5a2ed6['error'][_0xad50('0x17')]);return _0x15ac03(_0x5a2ed6[_0xad50('0x15')][_0xad50('0x17')]);}else{logger[_0xad50('0x10')]('OpenchannelInteraction,\x20%s,\x20%s',_0x49e939,_0xad50('0x12'));_0x15ac03(_0x5a2ed6['result'][_0xad50('0x17')]);}})[_0xad50('0x18')](function(_0x516640){logger['error'](_0xad50('0x11'),_0x49e939,_0x516640);_0x51de81(_0x516640);});});}exports[_0xad50('0x19')]=function(_0x1868cd){var _0x4c00b7=this;return new Promise(function(_0x38a936,_0x296941){return db[_0xad50('0x1a')][_0xad50('0x1b')](_0x1868cd[_0xad50('0x1c')],{'raw':_0x1868cd[_0xad50('0x1d')]?_0x1868cd[_0xad50('0x1d')][_0xad50('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1868cd[_0xad50('0x1d')]?_0x1868cd[_0xad50('0x1d')]['where']||null:null,'attributes':_0x1868cd[_0xad50('0x1d')]?_0x1868cd[_0xad50('0x1d')][_0xad50('0x1f')]||null:null,'limit':_0x1868cd[_0xad50('0x1d')]?_0x1868cd['options'][_0xad50('0x20')]||null:null})['then'](function(_0x452de1){logger[_0xad50('0x10')](_0xad50('0x19'),_0x1868cd);logger[_0xad50('0x21')](_0xad50('0x19'),_0x1868cd,JSON[_0xad50('0x14')](_0x452de1));_0x38a936(_0x452de1);})[_0xad50('0x18')](function(_0x30b8ff){logger[_0xad50('0x15')](_0xad50('0x19'),_0x30b8ff['message'],_0x1868cd);_0x296941(_0x4c00b7[_0xad50('0x15')](0x1f4,_0x30b8ff[_0xad50('0x17')]));});});};exports[_0xad50('0x22')]=function(_0x3dd8c7){return new Promise(function(_0x2397ec,_0x4887dc){return db[_0xad50('0x1a')][_0xad50('0x23')]({'where':_0x3dd8c7[_0xad50('0x1d')]?_0x3dd8c7[_0xad50('0x1d')][_0xad50('0x24')]||null:null})['then'](function(_0x2d2739){if(_0x2d2739){return _0x2d2739[_0xad50('0x25')](_0x3dd8c7[_0xad50('0x1c')][_0xad50('0x26')],_['omit'](_0x3dd8c7['body'],[_0xad50('0x26'),'id'])||{});}})[_0xad50('0x27')](function(_0x4ff89d){logger[_0xad50('0x10')]('AddTags',_0x3dd8c7);logger[_0xad50('0x21')]('AddTags',_0x3dd8c7,JSON['stringify'](_0x4ff89d));_0x2397ec(_0x4ff89d);})[_0xad50('0x18')](function(_0x3cccf0){logger[_0xad50('0x15')](_0xad50('0x28'),_0x3cccf0[_0xad50('0x17')],_0x3dd8c7);_0x4887dc(_this['error'](0x1f4,_0x3cccf0['message']));});});};
\ No newline at end of file
+var _0x8a68=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','message','catch','UpdateOpenchannelInteraction','update','body','options','raw','limit','stringify','AddTagsToOpenchannelInteraction','find','where','ids','omit','spread','AddTags','lodash','moment'];(function(_0x333c2f,_0x36a713){var _0x31908f=function(_0x5e1efc){while(--_0x5e1efc){_0x333c2f['push'](_0x333c2f['shift']());}};_0x31908f(++_0x36a713);}(_0x8a68,0x1ae));var _0x88a6=function(_0x19a3ff,_0x433d74){_0x19a3ff=_0x19a3ff-0x0;var _0x94591a=_0x8a68[_0x19a3ff];return _0x94591a;};'use strict';var _=require(_0x88a6('0x0'));var util=require('util');var moment=require(_0x88a6('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x88a6('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x88a6('0x3'))(_0x88a6('0x4'));var config=require(_0x88a6('0x5'));var jayson=require(_0x88a6('0x6'));var client=jayson[_0x88a6('0x7')][_0x88a6('0x8')]({'port':0x232a});config[_0x88a6('0x9')]=_['defaults'](config[_0x88a6('0x9')],{'host':_0x88a6('0xa'),'port':0x18eb});var socket=require(_0x88a6('0xb'))(new Redis(config[_0x88a6('0x9')]));require(_0x88a6('0xc'))[_0x88a6('0xd')](socket);function respondWithRpcPromise(_0x20727a,_0x547f21,_0x244cee){return new BPromise(function(_0x5da32d,_0x135052){return client['request'](_0x20727a,_0x244cee)['then'](function(_0x1e2303){logger[_0x88a6('0xe')](_0x88a6('0xf'),_0x547f21,_0x88a6('0x10'));logger[_0x88a6('0x11')](_0x88a6('0x12'),_0x547f21,_0x88a6('0x10'),JSON['stringify'](_0x1e2303));if(_0x1e2303[_0x88a6('0x13')]){if(_0x1e2303[_0x88a6('0x13')]['code']===0x1f4){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x547f21,_0x1e2303[_0x88a6('0x13')][_0x88a6('0x14')]);return _0x135052(_0x1e2303[_0x88a6('0x13')][_0x88a6('0x14')]);}logger[_0x88a6('0x13')](_0x88a6('0xf'),_0x547f21,_0x1e2303[_0x88a6('0x13')][_0x88a6('0x14')]);return _0x5da32d(_0x1e2303[_0x88a6('0x13')]['message']);}else{logger[_0x88a6('0xe')](_0x88a6('0xf'),_0x547f21,'request\x20sent');_0x5da32d(_0x1e2303['result'][_0x88a6('0x14')]);}})[_0x88a6('0x15')](function(_0x2079ae){logger[_0x88a6('0x13')](_0x88a6('0xf'),_0x547f21,_0x2079ae);_0x135052(_0x2079ae);});});}exports[_0x88a6('0x16')]=function(_0x143b15){var _0x5584dd=this;return new Promise(function(_0x168f08,_0x16990c){return db['OpenchannelInteraction'][_0x88a6('0x17')](_0x143b15[_0x88a6('0x18')],{'raw':_0x143b15[_0x88a6('0x19')]?_0x143b15[_0x88a6('0x19')][_0x88a6('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x143b15[_0x88a6('0x19')]?_0x143b15[_0x88a6('0x19')]['where']||null:null,'attributes':_0x143b15[_0x88a6('0x19')]?_0x143b15['options']['attributes']||null:null,'limit':_0x143b15[_0x88a6('0x19')]?_0x143b15[_0x88a6('0x19')][_0x88a6('0x1b')]||null:null})['then'](function(_0x1a0612){logger[_0x88a6('0xe')]('UpdateOpenchannelInteraction',_0x143b15);logger[_0x88a6('0x11')](_0x88a6('0x16'),_0x143b15,JSON[_0x88a6('0x1c')](_0x1a0612));_0x168f08(_0x1a0612);})[_0x88a6('0x15')](function(_0x371e64){logger['error'](_0x88a6('0x16'),_0x371e64[_0x88a6('0x14')],_0x143b15);_0x16990c(_0x5584dd[_0x88a6('0x13')](0x1f4,_0x371e64[_0x88a6('0x14')]));});});};exports[_0x88a6('0x1d')]=function(_0x3fdc1f){return new Promise(function(_0x44f5cc,_0x333f3e){return db['OpenchannelInteraction'][_0x88a6('0x1e')]({'where':_0x3fdc1f[_0x88a6('0x19')]?_0x3fdc1f[_0x88a6('0x19')][_0x88a6('0x1f')]||null:null})['then'](function(_0x3988e6){if(_0x3988e6){return _0x3988e6['addTags'](_0x3fdc1f['body'][_0x88a6('0x20')],_[_0x88a6('0x21')](_0x3fdc1f[_0x88a6('0x18')],[_0x88a6('0x20'),'id'])||{});}})[_0x88a6('0x22')](function(_0x51ea54){logger[_0x88a6('0xe')](_0x88a6('0x23'),_0x3fdc1f);logger[_0x88a6('0x11')](_0x88a6('0x23'),_0x3fdc1f,JSON[_0x88a6('0x1c')](_0x51ea54));_0x44f5cc(_0x51ea54);})['catch'](function(_0x35f732){logger[_0x88a6('0x13')](_0x88a6('0x23'),_0x35f732[_0x88a6('0x14')],_0x3fdc1f);_0x333f3e(_this['error'](0x1f4,_0x35f732[_0x88a6('0x14')]));});});};
\ No newline at end of file
index 0e615ba..cb2129a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7969=['length','openchannelInteraction:','./openchannelInteraction.events','save','remove','update','emit','removeListener'];(function(_0x279f6d,_0x122316){var _0x5874a5=function(_0x4823ae){while(--_0x4823ae){_0x279f6d['push'](_0x279f6d['shift']());}};_0x5874a5(++_0x122316);}(_0x7969,0xca));var _0x9796=function(_0x263e50,_0xf27f77){_0x263e50=_0x263e50-0x0;var _0x5b3f56=_0x7969[_0x263e50];return _0x5b3f56;};'use strict';var OpenchannelInteractionEvents=require(_0x9796('0x0'));var events=[_0x9796('0x1'),_0x9796('0x2'),_0x9796('0x3')];function createListener(_0x469067,_0x7002b2){return function(_0x4c4fd0){_0x7002b2[_0x9796('0x4')](_0x469067,_0x4c4fd0);};}function removeListener(_0x4ee7ae,_0x34a14b){return function(){OpenchannelInteractionEvents[_0x9796('0x5')](_0x4ee7ae,_0x34a14b);};}exports['register']=function(_0x12c6f7){for(var _0x5e0695=0x0,_0x1a4e97=events[_0x9796('0x6')];_0x5e0695<_0x1a4e97;_0x5e0695++){var _0x52e289=events[_0x5e0695];var _0x5b52b8=createListener(_0x9796('0x7')+_0x52e289,_0x12c6f7);OpenchannelInteractionEvents['on'](_0x52e289,_0x5b52b8);}};
\ No newline at end of file
+var _0x2b59=['openchannelInteraction:','./openchannelInteraction.events','save','remove','update','emit','removeListener','register','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2b59,0x1b1));var _0x92b5=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2b59[_0x3ab51d];return _0x29a04e;};'use strict';var OpenchannelInteractionEvents=require(_0x92b5('0x0'));var events=[_0x92b5('0x1'),_0x92b5('0x2'),_0x92b5('0x3')];function createListener(_0x41a45d,_0x11676a){return function(_0x1c3ba6){_0x11676a[_0x92b5('0x4')](_0x41a45d,_0x1c3ba6);};}function removeListener(_0x4871bd,_0x189e42){return function(){OpenchannelInteractionEvents[_0x92b5('0x5')](_0x4871bd,_0x189e42);};}exports[_0x92b5('0x6')]=function(_0x1363c8){for(var _0x643eab=0x0,_0x45fd59=events[_0x92b5('0x7')];_0x643eab<_0x45fd59;_0x643eab++){var _0x5d3384=events[_0x643eab];var _0x79855c=createListener(_0x92b5('0x8')+_0x5d3384,_0x1363c8);OpenchannelInteractionEvents['on'](_0x5d3384,_0x79855c);}};
\ No newline at end of file
index 3014d97..7766c7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['put','update','/:id/accept','accept','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','isAuthenticated','describe','get','/:id','show','post','openchannel','openchannelmessage:create','create'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x70e0,0x17b));var _0x070e=function(_0x3ece19,_0x40ba25){_0x3ece19=_0x3ece19-0x0;var _0x13ffd7=_0x70e0[_0x3ece19];return _0x13ffd7;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');var controller=require(_0x070e('0x7'));router['get']('/',auth[_0x070e('0x8')](),controller['index']);router['get']('/describe',auth[_0x070e('0x8')](),controller[_0x070e('0x9')]);router[_0x070e('0xa')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0xc')]);router[_0x070e('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x070e('0xe'),_0x070e('0xf')),controller[_0x070e('0x10')]);router[_0x070e('0x11')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0x12')]);router[_0x070e('0x11')](_0x070e('0x13'),auth[_0x070e('0x8')](),controller[_0x070e('0x14')]);router['put']('/:id/reject',auth[_0x070e('0x8')](),controller['reject']);router['delete']('/:id',auth[_0x070e('0x8')](),controller[_0x070e('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util'];(function(_0x523212,_0x437cc3){var _0x38c3b2=function(_0x863e08){while(--_0x863e08){_0x523212['push'](_0x523212['shift']());}};_0x38c3b2(++_0x437cc3);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./openchannelMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),interaction[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x0d8b('0x10')),controller['create']);router[_0x0d8b('0x11')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x12')]);router[_0x0d8b('0x11')](_0x0d8b('0x13'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x14')]);router[_0x0d8b('0x11')](_0x0d8b('0x15'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x16')]);router[_0x0d8b('0x17')](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x18')]);module['exports']=router;
\ No newline at end of file
index 2ea8ddd..a32be4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['DATE','exports','TEXT','ENUM','out'];(function(_0xdaf936,_0x18e5db){var _0x2afcce=function(_0x3be637){while(--_0x3be637){_0xdaf936['push'](_0xdaf936['shift']());}};_0x2afcce(++_0x18e5db);}(_0xda3f,0xec));var _0xfda3=function(_0x28e7bf,_0x4d3249){_0x28e7bf=_0x28e7bf-0x0;var _0x4cbde5=_0xda3f[_0x28e7bf];return _0x4cbde5;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'body':{'type':Sequelize[_0xfda3('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xfda3('0x2')]('in','out'),'defaultValue':_0xfda3('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0xfda3('0x4')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xfda3('0x1')]}};
\ No newline at end of file
+var _0x2ca5=['medium','BOOLEAN','out','DATE','STRING','exports','TEXT'];(function(_0x586855,_0x4a6cdb){var _0x431b58=function(_0x16a2bc){while(--_0x16a2bc){_0x586855['push'](_0x586855['shift']());}};_0x431b58(++_0x4a6cdb);}(_0x2ca5,0x108));var _0x52ca=function(_0x1c4b8d,_0x146a41){_0x1c4b8d=_0x1c4b8d-0x0;var _0x203346=_0x2ca5[_0x1c4b8d];return _0x203346;};'use strict';var Sequelize=require('sequelize');module[_0x52ca('0x0')]={'body':{'type':Sequelize[_0x52ca('0x1')](_0x52ca('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x52ca('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x52ca('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x52ca('0x5')]},'providerName':{'type':Sequelize[_0x52ca('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 1e80063..a30493b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cd2=['zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelMessage.socket','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','destroy','then','name','send','index','OpenchannelMessage','fieldName','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','include','findAll','rows','show','keys','rawAttributes','includeAll','find','update','body','params','describe','../../config/logger','openchannel-interactions','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','SELECT','contact','User','email','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','interaction','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','ContactId','QueryTypes','motionChannel','rejectmessage','eml-format'];(function(_0x4d69be,_0x1174bf){var _0xaa62b3=function(_0x3295ba){while(--_0x3295ba){_0x4d69be['push'](_0x4d69be['shift']());}};_0xaa62b3(++_0x1174bf);}(_0x9cd2,0x85));var _0x29cd=function(_0x5e1e25,_0xdc1421){_0x5e1e25=_0x5e1e25-0x0;var _0x548e5f=_0x9cd2[_0x5e1e25];return _0x548e5f;};'use strict';var emlformat=require(_0x29cd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x29cd('0x1'));var jsonpatch=require(_0x29cd('0x2'));var rp=require(_0x29cd('0x3'));var moment=require(_0x29cd('0x4'));var BPromise=require(_0x29cd('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x29cd('0x6'));var sox=require(_0x29cd('0x7'));var csv=require(_0x29cd('0x8'));var ejs=require(_0x29cd('0x9'));var fs=require('fs');var fs_extra=require(_0x29cd('0xa'));var _=require(_0x29cd('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x29cd('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x29cd('0x8'));var querystring=require(_0x29cd('0xd'));var Papa=require(_0x29cd('0xe'));var Redis=require(_0x29cd('0xf'));var authService=require(_0x29cd('0x10'));var qs=require(_0x29cd('0x11'));var as=require(_0x29cd('0x12'));var hardwareService=require(_0x29cd('0x13'));var logger=require('../../config/logger')(_0x29cd('0x14'));var utils=require(_0x29cd('0x15'));var config=require(_0x29cd('0x16'));var licenseUtil=require(_0x29cd('0x17'));var db=require(_0x29cd('0x18'))['db'];config[_0x29cd('0x19')]=_[_0x29cd('0x1a')](config[_0x29cd('0x19')],{'host':_0x29cd('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x29cd('0x19')]));require(_0x29cd('0x1c'))['register'](socket);var jayson=require(_0x29cd('0x1d'));var client=jayson[_0x29cd('0x1e')][_0x29cd('0x1f')]({'port':0x232c});var client9002=jayson[_0x29cd('0x1e')][_0x29cd('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4e5fc6,_0x1aa65a,_0x1b0d6b,_0x1dd155){return new BPromise(function(_0x3bcc9d,_0x11aa31){var _0x4eec03=_0x1dd155||client;return _0x4eec03[_0x29cd('0x20')](_0x4e5fc6,_0x1b0d6b)['then'](function(_0x262d6e){logger[_0x29cd('0x21')](_0x29cd('0x22'),_0x1aa65a,_0x29cd('0x23'));logger[_0x29cd('0x24')](_0x29cd('0x25'),_0x1aa65a,'request\x20sent',JSON[_0x29cd('0x26')](_0x262d6e));if(_0x262d6e['error']){if(_0x262d6e[_0x29cd('0x27')][_0x29cd('0x28')]===0x1f4){logger[_0x29cd('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x1aa65a,_0x262d6e['error'][_0x29cd('0x29')]);return _0x11aa31(_0x262d6e['error']['message']);}logger['error'](_0x29cd('0x22'),_0x1aa65a,_0x262d6e[_0x29cd('0x27')][_0x29cd('0x29')]);return _0x3bcc9d(_0x262d6e[_0x29cd('0x27')][_0x29cd('0x29')]);}else{logger['info'](_0x29cd('0x22'),_0x1aa65a,_0x29cd('0x23'));_0x3bcc9d(_0x262d6e[_0x29cd('0x2a')][_0x29cd('0x29')]);}})[_0x29cd('0x2b')](function(_0x298799){logger['error'](_0x29cd('0x22'),_0x1aa65a,_0x298799);_0x11aa31(_0x298799);});});}function respondWithStatusCode(_0x18a718,_0x491b56){_0x491b56=_0x491b56||0xcc;return function(_0x4bb8aa){if(_0x4bb8aa){return _0x18a718[_0x29cd('0x2c')](_0x491b56);}return _0x18a718[_0x29cd('0x2d')](_0x491b56)[_0x29cd('0x2e')]();};}function respondWithResult(_0x59973f,_0x8f1349){_0x8f1349=_0x8f1349||0xc8;return function(_0x1174b8){if(_0x1174b8){return _0x59973f['status'](_0x8f1349)[_0x29cd('0x2f')](_0x1174b8);}};}function respondWithFilteredResult(_0x59ce83,_0x3e9aab){return function(_0x1e6071){if(_0x1e6071){var _0x358d45=typeof _0x3e9aab['offset']===_0x29cd('0x30')&&typeof _0x3e9aab[_0x29cd('0x31')]===_0x29cd('0x30');var _0x2fc72d=_0x1e6071[_0x29cd('0x32')];var _0xbf39ad=_0x358d45?0x0:_0x3e9aab['offset'];var _0x655dc9=_0x358d45?_0x1e6071[_0x29cd('0x32')]:_0x3e9aab[_0x29cd('0x33')]+_0x3e9aab[_0x29cd('0x31')];var _0x487fab;if(_0x655dc9>=_0x2fc72d){_0x655dc9=_0x2fc72d;_0x487fab=0xc8;}else{_0x487fab=0xce;}_0x59ce83[_0x29cd('0x2d')](_0x487fab);return _0x59ce83[_0x29cd('0x34')](_0x29cd('0x35'),_0xbf39ad+'-'+_0x655dc9+'/'+_0x2fc72d)[_0x29cd('0x2f')](_0x1e6071);}return null;};}function patchUpdates(_0x4079de){return function(_0x507c76){try{jsonpatch[_0x29cd('0x36')](_0x507c76,_0x4079de,!![]);}catch(_0x262ccc){return BPromise[_0x29cd('0x37')](_0x262ccc);}return _0x507c76[_0x29cd('0x38')]();};}function saveUpdates(_0x26a82f,_0x512d1b){return function(_0x128a7d){if(_0x128a7d){return _0x128a7d['update'](_0x26a82f)['then'](function(_0x3ecc77){return _0x3ecc77;});}return null;};}function removeEntity(_0x4b76c4,_0x2947b9){return function(_0x2c2a75){if(_0x2c2a75){return _0x2c2a75[_0x29cd('0x39')]()[_0x29cd('0x3a')](function(){_0x4b76c4[_0x29cd('0x2d')](0xcc)[_0x29cd('0x2e')]();});}};}function handleEntityNotFound(_0x359ca6,_0x3bebc7){return function(_0x1c528e){if(!_0x1c528e){_0x359ca6[_0x29cd('0x2c')](0x194);}return _0x1c528e;};}function handleError(_0x4901fb,_0x518e23){_0x518e23=_0x518e23||0x1f4;return function(_0x29e2c2){logger[_0x29cd('0x27')](_0x29e2c2['stack']);if(_0x29e2c2[_0x29cd('0x3b')]){delete _0x29e2c2[_0x29cd('0x3b')];}_0x4901fb['status'](_0x518e23)[_0x29cd('0x3c')](_0x29e2c2);};}exports[_0x29cd('0x3d')]=function(_0x2f048e,_0x2929e2){var _0x291d7f={},_0x234908={},_0x51a962={'count':0x0,'rows':[]};var _0xc226cb=_['map'](db[_0x29cd('0x3e')]['rawAttributes'],function(_0x4668d0){return{'name':_0x4668d0[_0x29cd('0x3f')],'type':_0x4668d0['type']['key']};});_0x234908[_0x29cd('0x40')]=_[_0x29cd('0x41')](_0xc226cb,_0x29cd('0x3b'));_0x234908[_0x29cd('0x42')]=_['keys'](_0x2f048e[_0x29cd('0x42')]);_0x234908[_0x29cd('0x43')]=_[_0x29cd('0x44')](_0x234908['model'],_0x234908[_0x29cd('0x42')]);_0x291d7f[_0x29cd('0x45')]=_[_0x29cd('0x44')](_0x234908[_0x29cd('0x40')],qs[_0x29cd('0x46')](_0x2f048e[_0x29cd('0x42')]['fields']));_0x291d7f['attributes']=_0x291d7f[_0x29cd('0x45')][_0x29cd('0x47')]?_0x291d7f[_0x29cd('0x45')]:_0x234908['model'];if(!_0x2f048e[_0x29cd('0x42')][_0x29cd('0x48')](_0x29cd('0x49'))){_0x291d7f[_0x29cd('0x31')]=qs[_0x29cd('0x31')](_0x2f048e['query']['limit']);_0x291d7f[_0x29cd('0x33')]=qs[_0x29cd('0x33')](_0x2f048e['query'][_0x29cd('0x33')]);}_0x291d7f[_0x29cd('0x4a')]=qs[_0x29cd('0x4b')](_0x2f048e[_0x29cd('0x42')][_0x29cd('0x4b')]);_0x291d7f[_0x29cd('0x4c')]=qs[_0x29cd('0x43')](_[_0x29cd('0x4d')](_0x2f048e['query'],_0x234908[_0x29cd('0x43')]),_0xc226cb);if(_0x2f048e['query'][_0x29cd('0x4e')]){_0x291d7f['where']=_['merge'](_0x291d7f[_0x29cd('0x4c')],{'$or':_[_0x29cd('0x41')](_0xc226cb,function(_0x2a959b){if(_0x2a959b[_0x29cd('0x4f')]!=='VIRTUAL'){var _0x13f6ad={};_0x13f6ad[_0x2a959b['name']]={'$like':'%'+_0x2f048e[_0x29cd('0x42')]['filter']+'%'};return _0x13f6ad;}})});}_0x291d7f=_[_0x29cd('0x50')]({},_0x291d7f,_0x2f048e[_0x29cd('0x51')]);var _0x140f4d={'where':_0x291d7f[_0x29cd('0x4c')]};return db[_0x29cd('0x3e')][_0x29cd('0x32')](_0x140f4d)['then'](function(_0xed1e37){_0x51a962[_0x29cd('0x32')]=_0xed1e37;if(_0x2f048e['query']['includeAll']){_0x291d7f[_0x29cd('0x52')]=[{'all':!![]}];}return db[_0x29cd('0x3e')][_0x29cd('0x53')](_0x291d7f);})['then'](function(_0x58a30d){_0x51a962[_0x29cd('0x54')]=_0x58a30d;return _0x51a962;})[_0x29cd('0x3a')](respondWithFilteredResult(_0x2929e2,_0x291d7f))[_0x29cd('0x2b')](handleError(_0x2929e2,null));};exports[_0x29cd('0x55')]=function(_0x2ea7c6,_0x1f74be){var _0x4b3e68={'raw':!![],'where':{'id':_0x2ea7c6['params']['id']}},_0x325316={};_0x325316[_0x29cd('0x40')]=_[_0x29cd('0x56')](db['OpenchannelMessage'][_0x29cd('0x57')]);_0x325316[_0x29cd('0x42')]=_[_0x29cd('0x56')](_0x2ea7c6[_0x29cd('0x42')]);_0x325316[_0x29cd('0x43')]=_[_0x29cd('0x44')](_0x325316[_0x29cd('0x40')],_0x325316[_0x29cd('0x42')]);_0x4b3e68[_0x29cd('0x45')]=_[_0x29cd('0x44')](_0x325316[_0x29cd('0x40')],qs[_0x29cd('0x46')](_0x2ea7c6[_0x29cd('0x42')]['fields']));_0x4b3e68[_0x29cd('0x45')]=_0x4b3e68[_0x29cd('0x45')]['length']?_0x4b3e68['attributes']:_0x325316[_0x29cd('0x40')];if(_0x2ea7c6['query'][_0x29cd('0x58')]){_0x4b3e68['include']=[{'all':!![]}];}_0x4b3e68=_[_0x29cd('0x50')]({},_0x4b3e68,_0x2ea7c6[_0x29cd('0x51')]);return db[_0x29cd('0x3e')][_0x29cd('0x59')](_0x4b3e68)[_0x29cd('0x3a')](handleEntityNotFound(_0x1f74be,null))[_0x29cd('0x3a')](respondWithResult(_0x1f74be,null))['catch'](handleError(_0x1f74be,null));};exports['create']=function(_0x493aa0,_0x2d35a4){return db[_0x29cd('0x3e')]['create'](_0x493aa0['body'],{})['then'](respondWithResult(_0x2d35a4,0xc9))['catch'](handleError(_0x2d35a4,null));};exports[_0x29cd('0x5a')]=function(_0x41529f,_0x1bab69){if(_0x41529f[_0x29cd('0x5b')]['id']){delete _0x41529f[_0x29cd('0x5b')]['id'];}return db[_0x29cd('0x3e')][_0x29cd('0x59')]({'where':{'id':_0x41529f['params']['id']}})[_0x29cd('0x3a')](handleEntityNotFound(_0x1bab69,null))[_0x29cd('0x3a')](saveUpdates(_0x41529f[_0x29cd('0x5b')],null))[_0x29cd('0x3a')](respondWithResult(_0x1bab69,null))['catch'](handleError(_0x1bab69,null));};exports[_0x29cd('0x39')]=function(_0x3cf6e0,_0x1d32f4){return db[_0x29cd('0x3e')][_0x29cd('0x59')]({'where':{'id':_0x3cf6e0[_0x29cd('0x5c')]['id']}})[_0x29cd('0x3a')](handleEntityNotFound(_0x1d32f4,null))[_0x29cd('0x3a')](removeEntity(_0x1d32f4,null))[_0x29cd('0x2b')](handleError(_0x1d32f4,null));};exports[_0x29cd('0x5d')]=function(_0x19c616,_0xc00c2f){return db[_0x29cd('0x3e')][_0x29cd('0x5d')]()['then'](respondWithResult(_0xc00c2f,null))[_0x29cd('0x2b')](handleError(_0xc00c2f,null));};var interaction_log=require(_0x29cd('0x5e'))(_0x29cd('0x5f'));exports['accept']=function(_0x215203,_0x44720a,_0x44e197){var _0xd7d872={'agent':{},'channel':_0x29cd('0x60')};if(_0x215203[_0x29cd('0x5b')]['id']){delete _0x215203[_0x29cd('0x5b')]['id'];}_0x215203[_0x29cd('0x5b')][_0x29cd('0x61')]=!![];_0x215203[_0x29cd('0x5b')][_0x29cd('0x62')]=moment()[_0x29cd('0x63')](_0x29cd('0x64'));_0x215203[_0x29cd('0x5b')][_0x29cd('0x65')]=_0x215203[_0x29cd('0x5b')]['UserId']||_0x215203['user']['id'];_0xd7d872[_0x29cd('0x66')]['id']=_0x215203['body'][_0x29cd('0x65')];return db[_0x29cd('0x3e')]['find']({'where':{'id':_0x215203[_0x29cd('0x5c')]['id'],'UserId':null}})[_0x29cd('0x3a')](handleEntityNotFound(_0x44720a,null))[_0x29cd('0x3a')](saveUpdates(_0x215203[_0x29cd('0x5b')],null))['then'](function(_0x316b0e){if(_0x316b0e){_0xd7d872['message']=_0x316b0e[_0x29cd('0x67')]({'plain':!![]});return db[_0x29cd('0x68')][_0x29cd('0x59')]({'where':{'id':_0x316b0e[_0x29cd('0x69')]}});}return null;})[_0x29cd('0x3a')](handleEntityNotFound(_0x44720a,null))['then'](function(_0x62d29f){if(_0x62d29f){return _0x62d29f[_0x29cd('0x5a')]({'UserId':_0x215203['body'][_0x29cd('0x65')],'read1stAt':_[_0x29cd('0x6a')](_0x62d29f['read1stAt'])?moment()[_0x29cd('0x63')](_0x29cd('0x64')):undefined});}return null;})[_0x29cd('0x3a')](function(_0x290d97){if(_0x290d97){_0xd7d872['interaction']=_0x290d97[_0x29cd('0x67')]({'plain':!![]});interaction_log['info'](_0x29cd('0x6b'),_0x215203[_0x29cd('0x6c')]['id'],_0x215203['user'][_0x29cd('0x3b')],_0x215203[_0x29cd('0x6c')]['role'],_0xd7d872['interaction']['id'],_0x215203[_0x29cd('0x5b')]?JSON[_0x29cd('0x26')](_0x215203['body']):_0x29cd('0x6d'));return respondWithRpcPromise('AcceptMessage',_0x29cd('0x6e'),_0xd7d872);}return null;})[_0x29cd('0x3a')](function(_0x1bfe48){var _0x16410f=_0x29cd('0x6f')+_0x1bfe48[_0x29cd('0x29')]['ContactId'];return db[_0x29cd('0x70')]['query'](_0x16410f,{'type':db['Sequelize']['QueryTypes'][_0x29cd('0x71')],'raw':!![]})[_0x29cd('0x3a')](function(_0x333e31){return _0x333e31;});})['then'](function(_0x28120a){if(_0x28120a){_0xd7d872[_0x29cd('0x29')][_0x29cd('0x72')]=_0x28120a[0x0];if(!_0x215203[_0x29cd('0x5b')][_0x29cd('0x65')])return;return db[_0x29cd('0x73')][_0x29cd('0x59')]({'where':{'id':_0x215203[_0x29cd('0x5b')][_0x29cd('0x65')],'role':_0x29cd('0x66')},'attributes':['id',_0x29cd('0x3b'),'fullname',_0x29cd('0x74'),_0x29cd('0x75')],'raw':!![]});}return null;})[_0x29cd('0x3a')](function(_0x4f7495){if(!_0x4f7495)return null;_0xd7d872[_0x29cd('0x29')][_0x29cd('0x66')]=_0x4f7495;return _0xd7d872;})[_0x29cd('0x3a')](function(_0xc4530c){if(_0xc4530c){if(_0x215203[_0x29cd('0x5b')][_0x29cd('0x76')]){_0xd7d872[_0x29cd('0x29')][_0x29cd('0x77')]=util[_0x29cd('0x63')](_0x29cd('0x78'),_0x215203[_0x29cd('0x6c')][_0x29cd('0x3b')]);_0xd7d872['message'][_0x29cd('0x79')]=_0xd7d872[_0x29cd('0x79')];_0xd7d872[_0x29cd('0x29')]['motionChannel']=_0xd7d872[_0x29cd('0x79')];_0xd7d872[_0x29cd('0x29')][_0x29cd('0x7a')]=_0x29cd('0x7b');return respondWithRpcPromise(_0x29cd('0x7c'),_0x29cd('0x7c'),{'event':_0x29cd('0x7d'),'message':_0xd7d872[_0x29cd('0x29')]},client9002)[_0x29cd('0x3a')](function(){return _0xd7d872;});}return _0xd7d872;}return null;})[_0x29cd('0x3a')](respondWithResult(_0x44720a,null))[_0x29cd('0x2b')](handleError(_0x44720a,null));};var interaction_log=require(_0x29cd('0x5e'))('openchannel-interactions');exports[_0x29cd('0x37')]=function(_0x466247,_0xa30dca,_0x5caeab){var _0x2715a1={'agent':{},'channel':_0x29cd('0x60')};if(_0x466247[_0x29cd('0x5b')]['id']){delete _0x466247['body']['id'];}_0x466247[_0x29cd('0x5b')][_0x29cd('0x65')]=_0x466247[_0x29cd('0x5b')]['UserId']||_0x466247[_0x29cd('0x6c')]['id'];_0x2715a1['agent']['id']=_0x466247['body']['UserId'];return db[_0x29cd('0x3e')][_0x29cd('0x59')]({'where':{'id':_0x466247[_0x29cd('0x5c')]['id'],'UserId':null}})[_0x29cd('0x3a')](handleEntityNotFound(_0xa30dca,null))[_0x29cd('0x3a')](function(_0x44826b){if(_0x44826b){_0x2715a1[_0x29cd('0x29')]=_0x44826b[_0x29cd('0x67')]({'plain':!![]});return db[_0x29cd('0x68')][_0x29cd('0x59')]({'where':{'id':_0x44826b[_0x29cd('0x69')]}});}return null;})['then'](handleEntityNotFound(_0xa30dca,null))[_0x29cd('0x3a')](function(_0x50b56d){if(_0x50b56d){_0x2715a1[_0x29cd('0x7e')]=_0x50b56d[_0x29cd('0x67')]({'plain':!![]});interaction_log['info'](_0x29cd('0x7f'),_0x466247[_0x29cd('0x6c')]['id'],_0x466247['user']['name'],_0x466247[_0x29cd('0x6c')][_0x29cd('0x80')],_0x2715a1[_0x29cd('0x7e')]['id'],_0x466247[_0x29cd('0x5b')]?JSON[_0x29cd('0x26')](_0x466247['body']):_0x29cd('0x6d'));return respondWithRpcPromise('RejectMessage',_0x29cd('0x81'),_0x2715a1);}return null;})[_0x29cd('0x3a')](function(_0x3e766b){var _0x38b0bf=_0x29cd('0x6f')+_0x3e766b[_0x29cd('0x29')][_0x29cd('0x82')];return db[_0x29cd('0x70')][_0x29cd('0x42')](_0x38b0bf,{'type':db['Sequelize'][_0x29cd('0x83')][_0x29cd('0x71')],'raw':!![]})[_0x29cd('0x3a')](function(_0x130336){return _0x130336;});})[_0x29cd('0x3a')](function(_0x2f7be7){if(_0x2f7be7){_0x2715a1[_0x29cd('0x29')]['contact']=_0x2f7be7[0x0];if(!_0x466247[_0x29cd('0x5b')][_0x29cd('0x65')])return;return db[_0x29cd('0x73')]['find']({'where':{'id':_0x466247['body'][_0x29cd('0x65')],'role':_0x29cd('0x66')},'attributes':['id',_0x29cd('0x3b'),'fullname','email',_0x29cd('0x75')],'raw':!![]});}return null;})[_0x29cd('0x3a')](function(_0x490342){if(!_0x490342)return null;_0x2715a1[_0x29cd('0x29')][_0x29cd('0x66')]=_0x490342;return _0x2715a1;})[_0x29cd('0x3a')](function(_0x747130){if(_0x747130){_0x747130['message']['interface']=util[_0x29cd('0x63')](_0x29cd('0x78'),_0x466247['user'][_0x29cd('0x3b')]);_0x747130[_0x29cd('0x29')][_0x29cd('0x79')]=_0x2715a1[_0x29cd('0x79')];_0x747130[_0x29cd('0x29')][_0x29cd('0x84')]=_0x2715a1[_0x29cd('0x79')];_0x747130['message'][_0x29cd('0x7a')]=_0x29cd('0x37');respondWithRpcPromise(_0x29cd('0x7c'),'EventManager',{'event':_0x29cd('0x85'),'message':_0x747130[_0x29cd('0x29')]},client9002);return _0x2715a1;}return null;})[_0x29cd('0x3a')](respondWithResult(_0xa30dca,null))['catch'](handleError(_0xa30dca,null));};
\ No newline at end of file
+var _0xd8a5=['set','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','index','map','OpenchannelMessage','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','destroy','describe','openchannel-interactions','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','info','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','interaction','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','User','fullname','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','RejectMessage','rejectMessage','Sequelize','email','rejectmessage','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','end','status','json','offset','undefined','count'];(function(_0x36cff7,_0x5cb048){var _0x21c697=function(_0x1aab10){while(--_0x1aab10){_0x36cff7['push'](_0x36cff7['shift']());}};_0x21c697(++_0x5cb048);}(_0xd8a5,0x160));var _0x5d8a=function(_0x4fc3cf,_0x27524f){_0x4fc3cf=_0x4fc3cf-0x0;var _0x526d73=_0xd8a5[_0x4fc3cf];return _0x526d73;};'use strict';var emlformat=require(_0x5d8a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5d8a('0x1'));var jsonpatch=require(_0x5d8a('0x2'));var rp=require('request-promise');var moment=require(_0x5d8a('0x3'));var BPromise=require(_0x5d8a('0x4'));var Mustache=require(_0x5d8a('0x5'));var util=require(_0x5d8a('0x6'));var path=require(_0x5d8a('0x7'));var sox=require(_0x5d8a('0x8'));var csv=require(_0x5d8a('0x9'));var ejs=require(_0x5d8a('0xa'));var fs=require('fs');var fs_extra=require(_0x5d8a('0xb'));var _=require(_0x5d8a('0xc'));var squel=require(_0x5d8a('0xd'));var crypto=require(_0x5d8a('0xe'));var jsforce=require(_0x5d8a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5d8a('0x9'));var querystring=require(_0x5d8a('0x10'));var Papa=require(_0x5d8a('0x11'));var Redis=require(_0x5d8a('0x12'));var authService=require(_0x5d8a('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5d8a('0x14'));var hardwareService=require(_0x5d8a('0x15'));var logger=require(_0x5d8a('0x16'))(_0x5d8a('0x17'));var utils=require('../../config/utils');var config=require(_0x5d8a('0x18'));var licenseUtil=require(_0x5d8a('0x19'));var db=require('../../mysqldb')['db'];config[_0x5d8a('0x1a')]=_[_0x5d8a('0x1b')](config[_0x5d8a('0x1a')],{'host':_0x5d8a('0x1c'),'port':0x18eb});var socket=require(_0x5d8a('0x1d'))(new Redis(config[_0x5d8a('0x1a')]));require(_0x5d8a('0x1e'))[_0x5d8a('0x1f')](socket);var jayson=require(_0x5d8a('0x20'));var client=jayson[_0x5d8a('0x21')][_0x5d8a('0x22')]({'port':0x232c});var client9002=jayson[_0x5d8a('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d45e7,_0x39a1b8,_0x1567e0,_0x596ab7){return new BPromise(function(_0x3d3505,_0x119d08){var _0x341262=_0x596ab7||client;return _0x341262[_0x5d8a('0x23')](_0x4d45e7,_0x1567e0)['then'](function(_0x16ff4e){logger['info'](_0x5d8a('0x24'),_0x39a1b8,_0x5d8a('0x25'));logger[_0x5d8a('0x26')](_0x5d8a('0x27'),_0x39a1b8,_0x5d8a('0x25'),JSON[_0x5d8a('0x28')](_0x16ff4e));if(_0x16ff4e[_0x5d8a('0x29')]){if(_0x16ff4e['error'][_0x5d8a('0x2a')]===0x1f4){logger[_0x5d8a('0x29')](_0x5d8a('0x24'),_0x39a1b8,_0x16ff4e[_0x5d8a('0x29')]['message']);return _0x119d08(_0x16ff4e[_0x5d8a('0x29')][_0x5d8a('0x2b')]);}logger[_0x5d8a('0x29')]('OpenchannelMessage,\x20%s,\x20%s',_0x39a1b8,_0x16ff4e[_0x5d8a('0x29')][_0x5d8a('0x2b')]);return _0x3d3505(_0x16ff4e[_0x5d8a('0x29')][_0x5d8a('0x2b')]);}else{logger['info'](_0x5d8a('0x24'),_0x39a1b8,_0x5d8a('0x25'));_0x3d3505(_0x16ff4e['result'][_0x5d8a('0x2b')]);}})['catch'](function(_0x194b9e){logger[_0x5d8a('0x29')](_0x5d8a('0x24'),_0x39a1b8,_0x194b9e);_0x119d08(_0x194b9e);});});}function respondWithStatusCode(_0x564636,_0x3ce436){_0x3ce436=_0x3ce436||0xcc;return function(_0x397b33){if(_0x397b33){return _0x564636['sendStatus'](_0x3ce436);}return _0x564636['status'](_0x3ce436)[_0x5d8a('0x2c')]();};}function respondWithResult(_0x189617,_0x20fae2){_0x20fae2=_0x20fae2||0xc8;return function(_0x50660e){if(_0x50660e){return _0x189617[_0x5d8a('0x2d')](_0x20fae2)[_0x5d8a('0x2e')](_0x50660e);}};}function respondWithFilteredResult(_0x4e4c43,_0x1a4a47){return function(_0x31589e){if(_0x31589e){var _0x1be0ce=typeof _0x1a4a47[_0x5d8a('0x2f')]===_0x5d8a('0x30')&&typeof _0x1a4a47['limit']===_0x5d8a('0x30');var _0x13c112=_0x31589e[_0x5d8a('0x31')];var _0x1b1d4b=_0x1be0ce?0x0:_0x1a4a47[_0x5d8a('0x2f')];var _0x1e6ab5=_0x1be0ce?_0x31589e[_0x5d8a('0x31')]:_0x1a4a47[_0x5d8a('0x2f')]+_0x1a4a47['limit'];var _0x1b06cf;if(_0x1e6ab5>=_0x13c112){_0x1e6ab5=_0x13c112;_0x1b06cf=0xc8;}else{_0x1b06cf=0xce;}_0x4e4c43[_0x5d8a('0x2d')](_0x1b06cf);return _0x4e4c43[_0x5d8a('0x32')](_0x5d8a('0x33'),_0x1b1d4b+'-'+_0x1e6ab5+'/'+_0x13c112)[_0x5d8a('0x2e')](_0x31589e);}return null;};}function patchUpdates(_0x2c0761){return function(_0x143e5d){try{jsonpatch[_0x5d8a('0x34')](_0x143e5d,_0x2c0761,!![]);}catch(_0x310709){return BPromise[_0x5d8a('0x35')](_0x310709);}return _0x143e5d[_0x5d8a('0x36')]();};}function saveUpdates(_0x190ff1,_0x566af4){return function(_0x2cf742){if(_0x2cf742){return _0x2cf742[_0x5d8a('0x37')](_0x190ff1)[_0x5d8a('0x38')](function(_0x527ce2){return _0x527ce2;});}return null;};}function removeEntity(_0x3d6b9c,_0x592743){return function(_0x104138){if(_0x104138){return _0x104138['destroy']()['then'](function(){_0x3d6b9c[_0x5d8a('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x558742,_0x213cd4){return function(_0x3788ad){if(!_0x3788ad){_0x558742[_0x5d8a('0x39')](0x194);}return _0x3788ad;};}function handleError(_0x2cf7a6,_0x119f22){_0x119f22=_0x119f22||0x1f4;return function(_0x2d9a48){logger[_0x5d8a('0x29')](_0x2d9a48[_0x5d8a('0x3a')]);if(_0x2d9a48[_0x5d8a('0x3b')]){delete _0x2d9a48['name'];}_0x2cf7a6['status'](_0x119f22)['send'](_0x2d9a48);};}exports[_0x5d8a('0x3c')]=function(_0x1d1c7a,_0x13b61e){var _0x199558={},_0x4ea826={},_0x54b6cb={'count':0x0,'rows':[]};var _0x219ba7=_[_0x5d8a('0x3d')](db[_0x5d8a('0x3e')][_0x5d8a('0x3f')],function(_0x31771e){return{'name':_0x31771e[_0x5d8a('0x40')],'type':_0x31771e[_0x5d8a('0x41')]['key']};});_0x4ea826['model']=_['map'](_0x219ba7,_0x5d8a('0x3b'));_0x4ea826[_0x5d8a('0x42')]=_[_0x5d8a('0x43')](_0x1d1c7a[_0x5d8a('0x42')]);_0x4ea826[_0x5d8a('0x44')]=_[_0x5d8a('0x45')](_0x4ea826[_0x5d8a('0x46')],_0x4ea826['query']);_0x199558[_0x5d8a('0x47')]=_[_0x5d8a('0x45')](_0x4ea826[_0x5d8a('0x46')],qs['fields'](_0x1d1c7a[_0x5d8a('0x42')][_0x5d8a('0x48')]));_0x199558[_0x5d8a('0x47')]=_0x199558[_0x5d8a('0x47')]['length']?_0x199558['attributes']:_0x4ea826[_0x5d8a('0x46')];if(!_0x1d1c7a[_0x5d8a('0x42')][_0x5d8a('0x49')]('nolimit')){_0x199558[_0x5d8a('0x4a')]=qs['limit'](_0x1d1c7a[_0x5d8a('0x42')][_0x5d8a('0x4a')]);_0x199558['offset']=qs['offset'](_0x1d1c7a[_0x5d8a('0x42')][_0x5d8a('0x2f')]);}_0x199558[_0x5d8a('0x4b')]=qs[_0x5d8a('0x4c')](_0x1d1c7a[_0x5d8a('0x42')][_0x5d8a('0x4c')]);_0x199558[_0x5d8a('0x4d')]=qs[_0x5d8a('0x44')](_[_0x5d8a('0x4e')](_0x1d1c7a[_0x5d8a('0x42')],_0x4ea826[_0x5d8a('0x44')]),_0x219ba7);if(_0x1d1c7a['query'][_0x5d8a('0x4f')]){_0x199558[_0x5d8a('0x4d')]=_[_0x5d8a('0x50')](_0x199558[_0x5d8a('0x4d')],{'$or':_[_0x5d8a('0x3d')](_0x219ba7,function(_0x64717e){if(_0x64717e['type']!=='VIRTUAL'){var _0x1a7fbf={};_0x1a7fbf[_0x64717e[_0x5d8a('0x3b')]]={'$like':'%'+_0x1d1c7a[_0x5d8a('0x42')][_0x5d8a('0x4f')]+'%'};return _0x1a7fbf;}})});}_0x199558=_[_0x5d8a('0x50')]({},_0x199558,_0x1d1c7a[_0x5d8a('0x51')]);var _0x1d1d54={'where':_0x199558[_0x5d8a('0x4d')]};return db['OpenchannelMessage'][_0x5d8a('0x31')](_0x1d1d54)['then'](function(_0x4d4f8c){_0x54b6cb[_0x5d8a('0x31')]=_0x4d4f8c;if(_0x1d1c7a['query'][_0x5d8a('0x52')]){_0x199558[_0x5d8a('0x53')]=[{'all':!![]}];}return db[_0x5d8a('0x3e')][_0x5d8a('0x54')](_0x199558);})['then'](function(_0x49802c){_0x54b6cb[_0x5d8a('0x55')]=_0x49802c;return _0x54b6cb;})[_0x5d8a('0x38')](respondWithFilteredResult(_0x13b61e,_0x199558))['catch'](handleError(_0x13b61e,null));};exports[_0x5d8a('0x56')]=function(_0x5560f3,_0x545417){var _0xac41d5={'raw':!![],'where':{'id':_0x5560f3[_0x5d8a('0x57')]['id']}},_0x228ccd={};_0x228ccd[_0x5d8a('0x46')]=_['keys'](db[_0x5d8a('0x3e')][_0x5d8a('0x3f')]);_0x228ccd[_0x5d8a('0x42')]=_[_0x5d8a('0x43')](_0x5560f3[_0x5d8a('0x42')]);_0x228ccd[_0x5d8a('0x44')]=_[_0x5d8a('0x45')](_0x228ccd[_0x5d8a('0x46')],_0x228ccd['query']);_0xac41d5['attributes']=_[_0x5d8a('0x45')](_0x228ccd['model'],qs['fields'](_0x5560f3[_0x5d8a('0x42')][_0x5d8a('0x48')]));_0xac41d5['attributes']=_0xac41d5['attributes'][_0x5d8a('0x58')]?_0xac41d5['attributes']:_0x228ccd[_0x5d8a('0x46')];if(_0x5560f3['query'][_0x5d8a('0x52')]){_0xac41d5[_0x5d8a('0x53')]=[{'all':!![]}];}_0xac41d5=_[_0x5d8a('0x50')]({},_0xac41d5,_0x5560f3[_0x5d8a('0x51')]);return db[_0x5d8a('0x3e')][_0x5d8a('0x59')](_0xac41d5)[_0x5d8a('0x38')](handleEntityNotFound(_0x545417,null))['then'](respondWithResult(_0x545417,null))[_0x5d8a('0x5a')](handleError(_0x545417,null));};exports[_0x5d8a('0x5b')]=function(_0x3d452f,_0x778ef1){return db[_0x5d8a('0x3e')]['create'](_0x3d452f[_0x5d8a('0x5c')],{})['then'](respondWithResult(_0x778ef1,0xc9))[_0x5d8a('0x5a')](handleError(_0x778ef1,null));};exports['update']=function(_0x1bb079,_0x52af29){if(_0x1bb079[_0x5d8a('0x5c')]['id']){delete _0x1bb079[_0x5d8a('0x5c')]['id'];}return db[_0x5d8a('0x3e')][_0x5d8a('0x59')]({'where':{'id':_0x1bb079[_0x5d8a('0x57')]['id']}})[_0x5d8a('0x38')](handleEntityNotFound(_0x52af29,null))[_0x5d8a('0x38')](saveUpdates(_0x1bb079[_0x5d8a('0x5c')],null))[_0x5d8a('0x38')](respondWithResult(_0x52af29,null))[_0x5d8a('0x5a')](handleError(_0x52af29,null));};exports[_0x5d8a('0x5d')]=function(_0x15ce89,_0x132b8a){return db[_0x5d8a('0x3e')][_0x5d8a('0x59')]({'where':{'id':_0x15ce89['params']['id']}})[_0x5d8a('0x38')](handleEntityNotFound(_0x132b8a,null))[_0x5d8a('0x38')](removeEntity(_0x132b8a,null))[_0x5d8a('0x5a')](handleError(_0x132b8a,null));};exports[_0x5d8a('0x5e')]=function(_0xc0eedc,_0x46f9c9){return db[_0x5d8a('0x3e')]['describe']()['then'](respondWithResult(_0x46f9c9,null))[_0x5d8a('0x5a')](handleError(_0x46f9c9,null));};var interaction_log=require(_0x5d8a('0x16'))(_0x5d8a('0x5f'));exports['accept']=function(_0x2e7331,_0x6d4c0,_0x3a3a35){var _0x441427={'agent':{},'channel':_0x5d8a('0x60')};if(_0x2e7331['body']['id']){delete _0x2e7331[_0x5d8a('0x5c')]['id'];}_0x2e7331['body']['read']=!![];_0x2e7331[_0x5d8a('0x5c')][_0x5d8a('0x61')]=moment()[_0x5d8a('0x62')](_0x5d8a('0x63'));_0x2e7331[_0x5d8a('0x5c')]['UserId']=_0x2e7331[_0x5d8a('0x5c')][_0x5d8a('0x64')]||_0x2e7331['user']['id'];_0x441427[_0x5d8a('0x65')]['id']=_0x2e7331['body']['UserId'];return db['OpenchannelMessage'][_0x5d8a('0x59')]({'where':{'id':_0x2e7331['params']['id'],'UserId':null}})[_0x5d8a('0x38')](handleEntityNotFound(_0x6d4c0,null))[_0x5d8a('0x38')](saveUpdates(_0x2e7331[_0x5d8a('0x5c')],null))[_0x5d8a('0x38')](function(_0x10d0fa){if(_0x10d0fa){_0x441427['message']=_0x10d0fa[_0x5d8a('0x66')]({'plain':!![]});return db[_0x5d8a('0x67')][_0x5d8a('0x59')]({'where':{'id':_0x10d0fa[_0x5d8a('0x68')]}});}return null;})['then'](handleEntityNotFound(_0x6d4c0,null))[_0x5d8a('0x38')](function(_0x342f45){if(_0x342f45){return _0x342f45[_0x5d8a('0x37')]({'UserId':_0x2e7331[_0x5d8a('0x5c')][_0x5d8a('0x64')],'read1stAt':_[_0x5d8a('0x69')](_0x342f45[_0x5d8a('0x6a')])?moment()['format'](_0x5d8a('0x63')):undefined});}return null;})[_0x5d8a('0x38')](function(_0x4fd334){if(_0x4fd334){_0x441427['interaction']=_0x4fd334[_0x5d8a('0x66')]({'plain':!![]});interaction_log[_0x5d8a('0x6b')](_0x5d8a('0x6c'),_0x2e7331[_0x5d8a('0x6d')]['id'],_0x2e7331[_0x5d8a('0x6d')][_0x5d8a('0x3b')],_0x2e7331[_0x5d8a('0x6d')][_0x5d8a('0x6e')],_0x441427[_0x5d8a('0x6f')]['id'],_0x2e7331[_0x5d8a('0x5c')]?JSON[_0x5d8a('0x28')](_0x2e7331[_0x5d8a('0x5c')]):_0x5d8a('0x70'));return respondWithRpcPromise('AcceptMessage',_0x5d8a('0x71'),_0x441427);}return null;})[_0x5d8a('0x38')](function(_0x1845e4){var _0x27aff1=_0x5d8a('0x72')+_0x1845e4['message'][_0x5d8a('0x73')];return db[_0x5d8a('0x74')][_0x5d8a('0x42')](_0x27aff1,{'type':db['Sequelize'][_0x5d8a('0x75')][_0x5d8a('0x76')],'raw':!![]})[_0x5d8a('0x38')](function(_0x413d0f){return _0x413d0f;});})[_0x5d8a('0x38')](function(_0x17adce){if(_0x17adce){_0x441427[_0x5d8a('0x2b')]['contact']=_0x17adce[0x0];if(!_0x2e7331[_0x5d8a('0x5c')][_0x5d8a('0x64')])return;return db[_0x5d8a('0x77')]['find']({'where':{'id':_0x2e7331[_0x5d8a('0x5c')][_0x5d8a('0x64')],'role':_0x5d8a('0x65')},'attributes':['id',_0x5d8a('0x3b'),_0x5d8a('0x78'),'email',_0x5d8a('0x79')],'raw':!![]});}return null;})[_0x5d8a('0x38')](function(_0x1bc626){if(!_0x1bc626)return null;_0x441427[_0x5d8a('0x2b')][_0x5d8a('0x65')]=_0x1bc626;return _0x441427;})[_0x5d8a('0x38')](function(_0x4862a5){if(_0x4862a5){if(_0x2e7331[_0x5d8a('0x5c')]['manual']){_0x441427[_0x5d8a('0x2b')][_0x5d8a('0x7a')]=util['format'](_0x5d8a('0x7b'),_0x2e7331[_0x5d8a('0x6d')]['name']);_0x441427['message'][_0x5d8a('0x7c')]=_0x441427[_0x5d8a('0x7c')];_0x441427['message'][_0x5d8a('0x7d')]=_0x441427[_0x5d8a('0x7c')];_0x441427[_0x5d8a('0x2b')][_0x5d8a('0x7e')]='accept';return respondWithRpcPromise('EventManager',_0x5d8a('0x7f'),{'event':_0x5d8a('0x80'),'message':_0x441427[_0x5d8a('0x2b')]},client9002)[_0x5d8a('0x38')](function(){return _0x441427;});}return _0x441427;}return null;})[_0x5d8a('0x38')](respondWithResult(_0x6d4c0,null))[_0x5d8a('0x5a')](handleError(_0x6d4c0,null));};var interaction_log=require(_0x5d8a('0x16'))(_0x5d8a('0x5f'));exports[_0x5d8a('0x35')]=function(_0x39203b,_0x2033b3,_0xd2f3f3){var _0x1f80ba={'agent':{},'channel':'openchannel'};if(_0x39203b[_0x5d8a('0x5c')]['id']){delete _0x39203b[_0x5d8a('0x5c')]['id'];}_0x39203b[_0x5d8a('0x5c')][_0x5d8a('0x64')]=_0x39203b[_0x5d8a('0x5c')]['UserId']||_0x39203b[_0x5d8a('0x6d')]['id'];_0x1f80ba['agent']['id']=_0x39203b[_0x5d8a('0x5c')][_0x5d8a('0x64')];return db['OpenchannelMessage']['find']({'where':{'id':_0x39203b[_0x5d8a('0x57')]['id'],'UserId':null}})[_0x5d8a('0x38')](handleEntityNotFound(_0x2033b3,null))['then'](function(_0x5ea086){if(_0x5ea086){_0x1f80ba[_0x5d8a('0x2b')]=_0x5ea086['get']({'plain':!![]});return db['OpenchannelInteraction'][_0x5d8a('0x59')]({'where':{'id':_0x5ea086['OpenchannelInteractionId']}});}return null;})[_0x5d8a('0x38')](handleEntityNotFound(_0x2033b3,null))[_0x5d8a('0x38')](function(_0x3fb5f4){if(_0x3fb5f4){_0x1f80ba['interaction']=_0x3fb5f4[_0x5d8a('0x66')]({'plain':!![]});interaction_log[_0x5d8a('0x6b')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x39203b['user']['id'],_0x39203b[_0x5d8a('0x6d')][_0x5d8a('0x3b')],_0x39203b[_0x5d8a('0x6d')][_0x5d8a('0x6e')],_0x1f80ba[_0x5d8a('0x6f')]['id'],_0x39203b['body']?JSON[_0x5d8a('0x28')](_0x39203b[_0x5d8a('0x5c')]):_0x5d8a('0x70'));return respondWithRpcPromise(_0x5d8a('0x81'),_0x5d8a('0x82'),_0x1f80ba);}return null;})['then'](function(_0x2a5df9){var _0x12ed52=_0x5d8a('0x72')+_0x2a5df9[_0x5d8a('0x2b')][_0x5d8a('0x73')];return db['sequelize'][_0x5d8a('0x42')](_0x12ed52,{'type':db[_0x5d8a('0x83')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x36d65c){return _0x36d65c;});})[_0x5d8a('0x38')](function(_0x456a7d){if(_0x456a7d){_0x1f80ba[_0x5d8a('0x2b')]['contact']=_0x456a7d[0x0];if(!_0x39203b[_0x5d8a('0x5c')][_0x5d8a('0x64')])return;return db[_0x5d8a('0x77')]['find']({'where':{'id':_0x39203b[_0x5d8a('0x5c')][_0x5d8a('0x64')],'role':'agent'},'attributes':['id',_0x5d8a('0x3b'),_0x5d8a('0x78'),_0x5d8a('0x84'),_0x5d8a('0x79')],'raw':!![]});}return null;})[_0x5d8a('0x38')](function(_0x48092c){if(!_0x48092c)return null;_0x1f80ba['message'][_0x5d8a('0x65')]=_0x48092c;return _0x1f80ba;})[_0x5d8a('0x38')](function(_0x3a3132){if(_0x3a3132){_0x3a3132[_0x5d8a('0x2b')][_0x5d8a('0x7a')]=util['format'](_0x5d8a('0x7b'),_0x39203b[_0x5d8a('0x6d')][_0x5d8a('0x3b')]);_0x3a3132[_0x5d8a('0x2b')][_0x5d8a('0x7c')]=_0x1f80ba['channel'];_0x3a3132[_0x5d8a('0x2b')][_0x5d8a('0x7d')]=_0x1f80ba[_0x5d8a('0x7c')];_0x3a3132['message'][_0x5d8a('0x7e')]=_0x5d8a('0x35');respondWithRpcPromise(_0x5d8a('0x7f'),_0x5d8a('0x7f'),{'event':_0x5d8a('0x85'),'message':_0x3a3132[_0x5d8a('0x2b')]},client9002);return _0x1f80ba;}return null;})[_0x5d8a('0x38')](respondWithResult(_0x2033b3,null))[_0x5d8a('0x5a')](handleError(_0x2033b3,null));};
\ No newline at end of file
index dffc9da..58294a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc93b=['setMaxListeners','save','update','remove','emit','hasOwnProperty','events','../../mysqldb','OpenchannelMessage'];(function(_0x37beb4,_0x4f207b){var _0x130c12=function(_0x1e8cf1){while(--_0x1e8cf1){_0x37beb4['push'](_0x37beb4['shift']());}};_0x130c12(++_0x4f207b);}(_0xc93b,0x180));var _0xbc93=function(_0x34a161,_0x52a77b){_0x34a161=_0x34a161-0x0;var _0x4412a1=_0xc93b[_0x34a161];return _0x4412a1;};'use strict';var EventEmitter=require(_0xbc93('0x0'));var OpenchannelMessage=require(_0xbc93('0x1'))['db'][_0xbc93('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xbc93('0x3')](0x0);var events={'afterCreate':_0xbc93('0x4'),'afterUpdate':_0xbc93('0x5'),'afterDestroy':_0xbc93('0x6')};function emitEvent(_0x47bd2c){return function(_0x5f50a1,_0x573597,_0xdb67f3){OpenchannelMessageEvents[_0xbc93('0x7')](_0x47bd2c+':'+_0x5f50a1['id'],_0x5f50a1);OpenchannelMessageEvents[_0xbc93('0x7')](_0x47bd2c,_0x5f50a1);_0xdb67f3(null);};}for(var e in events){if(events[_0xbc93('0x8')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xa21f=['exports','events','../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x4d45c1,_0x2beda1){var _0x244478=function(_0x11304c){while(--_0x11304c){_0x4d45c1['push'](_0x4d45c1['shift']());}};_0x244478(++_0x2beda1);}(_0xa21f,0x13c));var _0xfa21=function(_0x546e5a,_0x30e376){_0x546e5a=_0x546e5a-0x0;var _0x37cc90=_0xa21f[_0x546e5a];return _0x37cc90;};'use strict';var EventEmitter=require(_0xfa21('0x0'));var OpenchannelMessage=require(_0xfa21('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xfa21('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfa21('0x3'),'afterDestroy':_0xfa21('0x4')};function emitEvent(_0x503824){return function(_0x3d67cf,_0x522e9b,_0x197fe2){OpenchannelMessageEvents[_0xfa21('0x5')](_0x503824+':'+_0x3d67cf['id'],_0x3d67cf);OpenchannelMessageEvents[_0xfa21('0x5')](_0x503824,_0x3d67cf);_0x197fe2(null);};}for(var e in events){if(events[_0xfa21('0x6')](e)){var event=events[e];OpenchannelMessage[_0xfa21('0x7')](e,emitEvent(event));}}module[_0xfa21('0x8')]=OpenchannelMessageEvents;
\ No newline at end of file
index f91d188..afdf426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c00=['lodash','util','moment','bluebird','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','CmContact','describe','OpenchannelAccountId','Interactions','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','Contact','POST','method','GET','afterCreate','Message\x20%d\x20forwarded\x20to\x20%s','threadId','error','inspect','finally','utf8mb4_unicode_ci'];(function(_0x227f96,_0x310412){var _0x288a23=function(_0x4d42d5){while(--_0x4d42d5){_0x227f96['push'](_0x227f96['shift']());}};_0x288a23(++_0x310412);}(_0x9c00,0x1a0));var _0x09c0=function(_0x4de2e3,_0x7c3e2a){_0x4de2e3=_0x4de2e3-0x0;var _0x5df1c7=_0x9c00[_0x4de2e3];return _0x5df1c7;};'use strict';var _=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x09c0('0x2'));var BPromise=require(_0x09c0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09c0('0x4'));var rimraf=require(_0x09c0('0x5'));var config=require(_0x09c0('0x6'));var attributes=require(_0x09c0('0x7'));module[_0x09c0('0x8')]=function(_0x5914eb,_0x4d5fc3){return _0x5914eb[_0x09c0('0x9')](_0x09c0('0xa'),attributes,{'tableName':_0x09c0('0xb'),'paranoid':![],'indexes':[{'name':_0x09c0('0xc'),'fields':[_0x09c0('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x6558ca,_0x1c1246,_0xa20b5c){var _0x1feb1d=_0x5914eb[_0x09c0('0xe')];var _0x1e16f4=_0x6558ca[_0x09c0('0xf')]({'plain':!![]});if(_0x1e16f4[_0x09c0('0x10')][_0x09c0('0x11')]()==='in'||_0x1e16f4[_0x09c0('0x10')][_0x09c0('0x11')]()===_0x09c0('0x12')&&!_0x1e16f4[_0x09c0('0x13')]&&!_[_0x09c0('0x14')](_0x1e16f4[_0x09c0('0x15')])){_0x1feb1d[_0x09c0('0x16')][_0x09c0('0x17')]({'where':{'id':_0x1e16f4[_0x09c0('0x18')]}})[_0x09c0('0x19')](function(_0x3649d2){if(_0x3649d2){_0x3649d2[_0x09c0('0x1a')]({'lastMsgAt':_0x1e16f4[_0x09c0('0x1b')],'lastMsgDirection':_0x1e16f4[_0x09c0('0x10')][_0x09c0('0x11')]()});}})[_0x09c0('0x1c')](function(_0x2fdf11){console['error'](_0x2fdf11);});}if(_0x1e16f4['direction']==='out'&&!_0x1e16f4[_0x09c0('0x13')]){var _0x11f4b2;_0x1feb1d[_0x09c0('0x1d')][_0x09c0('0x1e')]()['then'](function(_0x2c4440){return _0x1feb1d['OpenchannelAccount']['find']({'where':{'id':_0x1e16f4[_0x09c0('0x1f')]},'include':[{'model':_0x1feb1d['OpenchannelInteraction'],'as':_0x09c0('0x20'),'where':{'id':_0x1e16f4[_0x09c0('0x18')]},'limit':0x1,'include':[{'model':_0x1feb1d[_0x09c0('0x1d')],'as':'Contact','attributes':_[_0x09c0('0x21')](_0x2c4440)}]}]});})[_0x09c0('0x19')](function(_0x8ad645){_0x11f4b2=_0x8ad645[_0x09c0('0xf')]({'plain':!![]});if(_0x11f4b2&&_0x11f4b2[_0x09c0('0x22')]){logger[_0x09c0('0x23')](_0x09c0('0x24'),'afterCreate',util[_0x09c0('0x25')](_0x09c0('0x26'),_0x1e16f4['id'],_0x11f4b2[_0x09c0('0x22')]));if(_0x11f4b2[_0x09c0('0x20')]&&_0x11f4b2['Interactions']['length']){_0x1e16f4[_0x09c0('0x27')]=_[_0x09c0('0x28')](_0x11f4b2[_0x09c0('0x20')][0x0],_0x09c0('0x29'));_0x1e16f4['Contact']=_0x11f4b2[_0x09c0('0x20')][0x0][_0x09c0('0x29')];}var _0x1c1246={'method':_0x09c0('0x2a'),'uri':encodeURI(_0x11f4b2[_0x09c0('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1c1246[_0x09c0('0x2b')]){case _0x09c0('0x2c'):_0x1c1246['qs']=_0x1e16f4;break;case _0x09c0('0x2a'):_0x1c1246[_0x09c0('0xd')]=_0x1e16f4;break;}return rp(_0x1c1246)[_0x09c0('0x19')](function(_0x35b61c){logger[_0x09c0('0x23')](_0x09c0('0x24'),_0x09c0('0x2d'),util['format'](_0x09c0('0x2e'),_0x1e16f4['id'],_0x11f4b2[_0x09c0('0x22')]));if(_0x35b61c['body'][_0x09c0('0x2f')]&&_0x35b61c['body'][_0x09c0('0x2f')]!=_0x1e16f4['Interaction'][_0x09c0('0x2f')]){return _0x1feb1d[_0x09c0('0x16')][_0x09c0('0x1a')]({'threadId':_0x35b61c[_0x09c0('0xd')]['threadId']},{'logging':!![],'where':{'id':_0x1e16f4['Interaction']['id']}});}else{return;}})[_0x09c0('0x19')](function(){return _0x6558ca[_0x09c0('0x1a')]({'read':!![]});})[_0x09c0('0x1c')](function(_0x5c93ca){logger[_0x09c0('0x30')]('OpenchannelMessage,\x20%s,\x20%s',_0x09c0('0x2d'),util[_0x09c0('0x31')](_0x5c93ca,{'showHidden':![],'depth':null}));_0xa20b5c();});}else{_0xa20b5c();}})[_0x09c0('0x32')](function(){_0xa20b5c();});}else{_0xa20b5c();}}},'charset':'utf8mb4','collate':_0x09c0('0x33')});};
\ No newline at end of file
+var _0xbaf0=['out','secret','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','OpenchannelInteractionId','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Contact','POST','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','Interaction','error','inspect','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','body','models','get','direction','toLowerCase','isNil','UserId','OpenchannelInteraction','findOne','then','update','createdAt','catch'];(function(_0x3a70b5,_0x333f9a){var _0x31f734=function(_0x361c8c){while(--_0x361c8c){_0x3a70b5['push'](_0x3a70b5['shift']());}};_0x31f734(++_0x333f9a);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x0baf('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4605c3,_0x2c7442,_0x465528){var _0x2f46e8=_0xe4c3c4[_0x0baf('0xe')];var _0xf4c8ac=_0x4605c3[_0x0baf('0xf')]({'plain':!![]});if(_0xf4c8ac[_0x0baf('0x10')][_0x0baf('0x11')]()==='in'||_0xf4c8ac[_0x0baf('0x10')][_0x0baf('0x11')]()==='out'&&!_0xf4c8ac['secret']&&!_[_0x0baf('0x12')](_0xf4c8ac[_0x0baf('0x13')])){_0x2f46e8[_0x0baf('0x14')][_0x0baf('0x15')]({'where':{'id':_0xf4c8ac['OpenchannelInteractionId']}})[_0x0baf('0x16')](function(_0x49e44b){if(_0x49e44b){_0x49e44b[_0x0baf('0x17')]({'lastMsgAt':_0xf4c8ac[_0x0baf('0x18')],'lastMsgDirection':_0xf4c8ac[_0x0baf('0x10')][_0x0baf('0x11')]()});}})[_0x0baf('0x19')](function(_0x469599){console['error'](_0x469599);});}if(_0xf4c8ac['direction']===_0x0baf('0x1a')&&!_0xf4c8ac[_0x0baf('0x1b')]){var _0x283408;_0x2f46e8[_0x0baf('0x1c')][_0x0baf('0x1d')]()[_0x0baf('0x16')](function(_0x53c338){return _0x2f46e8[_0x0baf('0x1e')][_0x0baf('0x1f')]({'where':{'id':_0xf4c8ac[_0x0baf('0x20')]},'include':[{'model':_0x2f46e8[_0x0baf('0x14')],'as':_0x0baf('0x21'),'where':{'id':_0xf4c8ac[_0x0baf('0x22')]},'limit':0x1,'include':[{'model':_0x2f46e8['CmContact'],'as':'Contact','attributes':_[_0x0baf('0x23')](_0x53c338)}]}]});})[_0x0baf('0x16')](function(_0x32e839){_0x283408=_0x32e839[_0x0baf('0xf')]({'plain':!![]});if(_0x283408&&_0x283408[_0x0baf('0x24')]){logger[_0x0baf('0x25')](_0x0baf('0x26'),_0x0baf('0x27'),util[_0x0baf('0x28')](_0x0baf('0x29'),_0xf4c8ac['id'],_0x283408['replyUri']));if(_0x283408[_0x0baf('0x21')]&&_0x283408['Interactions'][_0x0baf('0x2a')]){_0xf4c8ac['Interaction']=_['omit'](_0x283408[_0x0baf('0x21')][0x0],'Contact');_0xf4c8ac['Contact']=_0x283408[_0x0baf('0x21')][0x0][_0x0baf('0x2b')];}var _0x2c7442={'method':_0x0baf('0x2c'),'uri':encodeURI(_0x283408[_0x0baf('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x2c7442['method']){case _0x0baf('0x2d'):_0x2c7442['qs']=_0xf4c8ac;break;case _0x0baf('0x2c'):_0x2c7442[_0x0baf('0xd')]=_0xf4c8ac;break;}return rp(_0x2c7442)[_0x0baf('0x16')](function(_0x3843b8){logger[_0x0baf('0x25')](_0x0baf('0x26'),'afterCreate',util[_0x0baf('0x28')](_0x0baf('0x2e'),_0xf4c8ac['id'],_0x283408[_0x0baf('0x24')]));if(_0x3843b8[_0x0baf('0xd')]['threadId']&&_0x3843b8[_0x0baf('0xd')][_0x0baf('0x2f')]!=_0xf4c8ac['Interaction'][_0x0baf('0x2f')]){return _0x2f46e8[_0x0baf('0x14')][_0x0baf('0x17')]({'threadId':_0x3843b8[_0x0baf('0xd')][_0x0baf('0x2f')]},{'logging':!![],'where':{'id':_0xf4c8ac[_0x0baf('0x30')]['id']}});}else{return;}})[_0x0baf('0x16')](function(){return _0x4605c3['update']({'read':!![]});})[_0x0baf('0x19')](function(_0x156ed7){logger[_0x0baf('0x31')](_0x0baf('0x26'),_0x0baf('0x27'),util[_0x0baf('0x32')](_0x156ed7,{'showHidden':![],'depth':null}));_0x465528();});}else{_0x465528();}})[_0x0baf('0x33')](function(){_0x465528();});}else{_0x465528();}}},'charset':_0x0baf('0x34'),'collate':_0x0baf('0x35')});};
\ No newline at end of file
index 2c15d99..a1a7f8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x5d865f,_0x550c8a){var _0x37a1a4=function(_0x3b3f61){while(--_0x3b3f61){_0x5d865f['push'](_0x5d865f['shift']());}};_0x37a1a4(++_0x550c8a);}(_0xadb5,0xad));var _0x5adb=function(_0x5123ca,_0x5235b9){_0x5123ca=_0x5123ca-0x0;var _0x4da8c2=_0xadb5[_0x5123ca];return _0x4da8c2;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelMessage','OpenchannelMessage','body','options','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x4366ba,_0x4d95de){var _0x59d60f=function(_0x44a094){while(--_0x44a094){_0x4366ba['push'](_0x4366ba['shift']());}};_0x59d60f(++_0x4d95de);}(_0x7a54,0x106));var _0x47a5=function(_0x4fb86c,_0x64624c){_0x4fb86c=_0x4fb86c-0x0;var _0x51db76=_0x7a54[_0x4fb86c];return _0x51db76;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});config['redis']=_[_0x47a5('0xb')](config[_0x47a5('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x47a5('0xd'))(new Redis(config['redis']));require('./openchannelMessage.socket')['register'](socket);function respondWithRpcPromise(_0x2a0e98,_0x2baee7,_0x5e31dd){return new BPromise(function(_0x2eb0dd,_0x49e844){return client['request'](_0x2a0e98,_0x5e31dd)[_0x47a5('0xe')](function(_0x69e4d4){logger[_0x47a5('0xf')](_0x47a5('0x10'),_0x2baee7,_0x47a5('0x11'));logger[_0x47a5('0x12')](_0x47a5('0x13'),_0x2baee7,'request\x20sent',JSON[_0x47a5('0x14')](_0x69e4d4));if(_0x69e4d4[_0x47a5('0x15')]){if(_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x16')]===0x1f4){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x49e844(_0x69e4d4['error'][_0x47a5('0x17')]);}logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x2eb0dd(_0x69e4d4['error']['message']);}else{logger[_0x47a5('0xf')]('OpenchannelMessage,\x20%s,\x20%s',_0x2baee7,'request\x20sent');_0x2eb0dd(_0x69e4d4[_0x47a5('0x18')][_0x47a5('0x17')]);}})[_0x47a5('0x19')](function(_0x1ef371){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x1ef371);_0x49e844(_0x1ef371);});});}exports[_0x47a5('0x1a')]=function(_0xe3c618){var _0x3aed38=this;return new Promise(function(_0x4a9fcb,_0x1570bc){return db[_0x47a5('0x1b')]['create'](_0xe3c618[_0x47a5('0x1c')],{'raw':_0xe3c618[_0x47a5('0x1d')]?_0xe3c618[_0x47a5('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x47a5('0xe')](function(_0x2f142b){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xe3c618);logger['debug'](_0x47a5('0x1a'),_0xe3c618,JSON[_0x47a5('0x14')](_0x2f142b));_0x4a9fcb(_0x2f142b);})['catch'](function(_0x28747d){logger[_0x47a5('0x15')](_0x47a5('0x1a'),_0x28747d[_0x47a5('0x17')],_0xe3c618);_0x1570bc(_0x3aed38[_0x47a5('0x15')](0x1f4,_0x28747d['message']));});});};
\ No newline at end of file
index f75640e..46b0090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc5d=['save','remove','update','emit','removeListener','length'];(function(_0x4b0ab2,_0x329bed){var _0x41aaa8=function(_0x519034){while(--_0x519034){_0x4b0ab2['push'](_0x4b0ab2['shift']());}};_0x41aaa8(++_0x329bed);}(_0xbc5d,0x19e));var _0xdbc5=function(_0x4bc7c7,_0xd0c61b){_0x4bc7c7=_0x4bc7c7-0x0;var _0x25c212=_0xbc5d[_0x4bc7c7];return _0x25c212;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xdbc5('0x0'),_0xdbc5('0x1'),_0xdbc5('0x2')];function createListener(_0x37391e,_0x2e3562){return function(_0x24034d){_0x2e3562[_0xdbc5('0x3')](_0x37391e,_0x24034d);};}function removeListener(_0x2e6d33,_0x270c3a){return function(){OpenchannelMessageEvents[_0xdbc5('0x4')](_0x2e6d33,_0x270c3a);};}exports['register']=function(_0x3e79ac){for(var _0x55da91=0x0,_0x1c6222=events[_0xdbc5('0x5')];_0x55da91<_0x1c6222;_0x55da91++){var _0x2d7747=events[_0x55da91];var _0x2932b4=createListener('openchannelMessage:'+_0x2d7747,_0x3e79ac);OpenchannelMessageEvents['on'](_0x2d7747,_0x2932b4);}};
\ No newline at end of file
+var _0x5ad6=['length','openchannelMessage:','./openchannelMessage.events','save','remove','update','emit','removeListener'];(function(_0x5203b2,_0x92d27e){var _0x21e1ed=function(_0x2a65a8){while(--_0x2a65a8){_0x5203b2['push'](_0x5203b2['shift']());}};_0x21e1ed(++_0x92d27e);}(_0x5ad6,0xba));var _0x65ad=function(_0x9cbfe0,_0x56aada){_0x9cbfe0=_0x9cbfe0-0x0;var _0x1f1534=_0x5ad6[_0x9cbfe0];return _0x1f1534;};'use strict';var OpenchannelMessageEvents=require(_0x65ad('0x0'));var events=[_0x65ad('0x1'),_0x65ad('0x2'),_0x65ad('0x3')];function createListener(_0x55f59e,_0x20280f){return function(_0x35152e){_0x20280f[_0x65ad('0x4')](_0x55f59e,_0x35152e);};}function removeListener(_0x3b6786,_0x5608ef){return function(){OpenchannelMessageEvents[_0x65ad('0x5')](_0x3b6786,_0x5608ef);};}exports['register']=function(_0x12cef8){for(var _0x4b3308=0x0,_0x24028c=events[_0x65ad('0x6')];_0x4b3308<_0x24028c;_0x4b3308++){var _0x1a3477=events[_0x4b3308];var _0x567d2e=createListener(_0x65ad('0x7')+_0x1a3477,_0x12cef8);OpenchannelMessageEvents['on'](_0x1a3477,_0x567d2e);}};
\ No newline at end of file
index a169bf0..4a80d21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b80=['Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get','/describe','describe','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','/:id','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x6edeea,_0x249e7c){var _0x4c5ef1=function(_0x208396){while(--_0x208396){_0x6edeea['push'](_0x6edeea['shift']());}};_0x4c5ef1(++_0x249e7c);}(_0x5b80,0x1bd));var _0x05b8=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x5b80[_0x4bb66f];return _0xf2772f;};'use strict';var multer=require(_0x05b8('0x0'));var util=require(_0x05b8('0x1'));var path=require(_0x05b8('0x2'));var timeout=require(_0x05b8('0x3'));var express=require(_0x05b8('0x4'));var router=express[_0x05b8('0x5')]();var fs_extra=require(_0x05b8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x05b8('0x7'));var config=require(_0x05b8('0x8'));var controller=require(_0x05b8('0x9'));router['get']('/',auth[_0x05b8('0xa')](),controller[_0x05b8('0xb')]);router[_0x05b8('0xc')](_0x05b8('0xd'),auth[_0x05b8('0xa')](),controller[_0x05b8('0xe')]);router[_0x05b8('0xc')]('/:id',auth[_0x05b8('0xa')](),controller['show']);router[_0x05b8('0xc')]('/:id/members',auth['isAuthenticated'](),controller[_0x05b8('0xf')]);router[_0x05b8('0xc')](_0x05b8('0x10'),auth['isAuthenticated'](),controller[_0x05b8('0x11')]);router[_0x05b8('0xc')](_0x05b8('0x12'),auth[_0x05b8('0xa')](),controller[_0x05b8('0x13')]);router[_0x05b8('0x14')]('/',auth[_0x05b8('0xa')](),controller[_0x05b8('0x15')]);router[_0x05b8('0x14')](_0x05b8('0x10'),auth[_0x05b8('0xa')](),controller[_0x05b8('0x16')]);router[_0x05b8('0x14')]('/:id/users',auth[_0x05b8('0xa')](),controller['addAgents']);router[_0x05b8('0x17')](_0x05b8('0x18'),auth[_0x05b8('0xa')](),controller[_0x05b8('0x19')]);router[_0x05b8('0x1a')](_0x05b8('0x18'),auth['isAuthenticated'](),controller[_0x05b8('0x1b')]);router[_0x05b8('0x1a')]('/:id/teams',auth[_0x05b8('0xa')](),controller['removeTeams']);router['delete'](_0x05b8('0x12'),auth[_0x05b8('0xa')](),controller[_0x05b8('0x1c')]);module[_0x05b8('0x1d')]=router;
\ No newline at end of file
+var _0x593e=['fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelQueue.controller','get','index','isAuthenticated','describe','/:id','getMembers','/:id/teams','getTeams','post','addTeams','/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x4acae2,_0x2d03e4){var _0x3b1e6c=function(_0x2aacf0){while(--_0x2aacf0){_0x4acae2['push'](_0x4acae2['shift']());}};_0x3b1e6c(++_0x2d03e4);}(_0x593e,0xa3));var _0xe593=function(_0x5067c,_0x5a4f4c){_0x5067c=_0x5067c-0x0;var _0x362b1c=_0x593e[_0x5067c];return _0x362b1c;};'use strict';var multer=require(_0xe593('0x0'));var util=require(_0xe593('0x1'));var path=require(_0xe593('0x2'));var timeout=require(_0xe593('0x3'));var express=require(_0xe593('0x4'));var router=express['Router']();var fs_extra=require(_0xe593('0x5'));var auth=require(_0xe593('0x6'));var interaction=require(_0xe593('0x7'));var config=require('../../config/environment');var controller=require(_0xe593('0x8'));router[_0xe593('0x9')]('/',auth['isAuthenticated'](),controller[_0xe593('0xa')]);router[_0xe593('0x9')]('/describe',auth[_0xe593('0xb')](),controller[_0xe593('0xc')]);router['get'](_0xe593('0xd'),auth[_0xe593('0xb')](),controller['show']);router['get']('/:id/members',auth[_0xe593('0xb')](),controller[_0xe593('0xe')]);router['get'](_0xe593('0xf'),auth[_0xe593('0xb')](),controller[_0xe593('0x10')]);router[_0xe593('0x9')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xe593('0x11')]('/',auth[_0xe593('0xb')](),controller['create']);router['post']('/:id/teams',auth[_0xe593('0xb')](),controller[_0xe593('0x12')]);router['post'](_0xe593('0x13'),auth[_0xe593('0xb')](),controller[_0xe593('0x14')]);router[_0xe593('0x15')](_0xe593('0xd'),auth[_0xe593('0xb')](),controller[_0xe593('0x16')]);router[_0xe593('0x17')](_0xe593('0xd'),auth['isAuthenticated'](),controller[_0xe593('0x18')]);router[_0xe593('0x17')]('/:id/teams',auth[_0xe593('0xb')](),controller[_0xe593('0x19')]);router[_0xe593('0x17')](_0xe593('0x13'),auth[_0xe593('0xb')](),controller[_0xe593('0x1a')]);module[_0xe593('0x1b')]=router;
\ No newline at end of file
index 057a4d6..6f32d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9ff=['beepall','roundrobin','exports','name','INTEGER','ENUM','rrmemory'];(function(_0x4c7149,_0x335342){var _0x200122=function(_0x358259){while(--_0x358259){_0x4c7149['push'](_0x4c7149['shift']());}};_0x200122(++_0x335342);}(_0xf9ff,0x1e5));var _0xff9f=function(_0x3e2489,_0x41d9dd){_0x3e2489=_0x3e2489-0x0;var _0x2254ce=_0xf9ff[_0x3e2489];return _0x2254ce;};'use strict';var Sequelize=require('sequelize');module[_0xff9f('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xff9f('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xff9f('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xff9f('0x3')](_0xff9f('0x4'),_0xff9f('0x5'),_0xff9f('0x6'))}};
\ No newline at end of file
+var _0xf14a=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','INTEGER'];(function(_0x5a472a,_0x4f13f9){var _0x4e28b1=function(_0x4ce81c){while(--_0x4ce81c){_0x5a472a['push'](_0x5a472a['shift']());}};_0x4e28b1(++_0x4f13f9);}(_0xf14a,0x10c));var _0xaf14=function(_0x58890e,_0xaec39f){_0x58890e=_0x58890e-0x0;var _0x4e52f8=_0xf14a[_0x58890e];return _0x4e52f8;};'use strict';var Sequelize=require(_0xaf14('0x0'));module[_0xaf14('0x1')]={'name':{'type':Sequelize[_0xaf14('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xaf14('0x2')]},'timeout':{'type':Sequelize[_0xaf14('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xaf14('0x4')](_0xaf14('0x5'),_0xaf14('0x6'),_0xaf14('0x7'))}};
\ No newline at end of file
index 8b7ad47..211d4e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bed=['includes','all','union','compact','value','transaction','isEmpty','userOpenchannelQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','nolimit','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','UserProfileResource','error','stack','name','send','map','OpenchannelQueue','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','sort','filters','where','merge','type','filter','options','includeAll','include','findAll','rows','show','rawAttributes','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','OpenchannelQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','getMembers','findOne','order','pick','UserOpenchannelQueue','User','findAndCountAll','UserId','agent','updatedAt','%s/%s','SIP','openchannelPause','getTeams','addTeams','ids','Team','Agents','voicePause','interface','sequelize','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','tq.TeamId','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','every'];(function(_0x1ca15f,_0x445941){var _0x44217b=function(_0x27d041){while(--_0x27d041){_0x1ca15f['push'](_0x1ca15f['shift']());}};_0x44217b(++_0x445941);}(_0x6bed,0x1ad));var _0xd6be=function(_0xa3182e,_0x1a3465){_0xa3182e=_0xa3182e-0x0;var _0x471003=_0x6bed[_0xa3182e];return _0x471003;};'use strict';var emlformat=require(_0xd6be('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd6be('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd6be('0x2'));var moment=require(_0xd6be('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd6be('0x4'));var util=require(_0xd6be('0x5'));var path=require(_0xd6be('0x6'));var sox=require(_0xd6be('0x7'));var csv=require(_0xd6be('0x8'));var ejs=require(_0xd6be('0x9'));var fs=require('fs');var fs_extra=require(_0xd6be('0xa'));var _=require('lodash');var squel=require(_0xd6be('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd6be('0xc'));var toCsv=require(_0xd6be('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd6be('0xd'));var authService=require(_0xd6be('0xe'));var qs=require(_0xd6be('0xf'));var as=require(_0xd6be('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd6be('0x11'))(_0xd6be('0x12'));var utils=require(_0xd6be('0x13'));var config=require(_0xd6be('0x14'));var licenseUtil=require(_0xd6be('0x15'));var db=require(_0xd6be('0x16'))['db'];config[_0xd6be('0x17')]=_[_0xd6be('0x18')](config[_0xd6be('0x17')],{'host':_0xd6be('0x19'),'port':0x18eb});var socket=require(_0xd6be('0x1a'))(new Redis(config[_0xd6be('0x17')]));require('./openchannelQueue.socket')[_0xd6be('0x1b')](socket);function respondWithStatusCode(_0x549fde,_0x2c5031){_0x2c5031=_0x2c5031||0xcc;return function(_0x4f0a9b){if(_0x4f0a9b){return _0x549fde[_0xd6be('0x1c')](_0x2c5031);}return _0x549fde[_0xd6be('0x1d')](_0x2c5031)[_0xd6be('0x1e')]();};}function respondWithResult(_0x12eda6,_0x5e6391){_0x5e6391=_0x5e6391||0xc8;return function(_0x1c537f){if(_0x1c537f){return _0x12eda6['status'](_0x5e6391)[_0xd6be('0x1f')](_0x1c537f);}};}function respondWithFilteredResult(_0x735f,_0x536614){return function(_0x2aa1f0){if(_0x2aa1f0){var _0x917197=typeof _0x536614[_0xd6be('0x20')]===_0xd6be('0x21')&&typeof _0x536614[_0xd6be('0x22')]===_0xd6be('0x21');var _0x205f7c=_0x2aa1f0['count'];var _0x19198e=_0x917197?0x0:_0x536614[_0xd6be('0x20')];var _0x483b09=_0x917197?_0x2aa1f0[_0xd6be('0x23')]:_0x536614[_0xd6be('0x20')]+_0x536614[_0xd6be('0x22')];var _0x138a5e;if(_0x483b09>=_0x205f7c){_0x483b09=_0x205f7c;_0x138a5e=0xc8;}else{_0x138a5e=0xce;}_0x735f[_0xd6be('0x1d')](_0x138a5e);return _0x735f[_0xd6be('0x24')](_0xd6be('0x25'),_0x19198e+'-'+_0x483b09+'/'+_0x205f7c)[_0xd6be('0x1f')](_0x2aa1f0);}return null;};}function patchUpdates(_0x42c9d0){return function(_0x48a8ff){try{jsonpatch[_0xd6be('0x26')](_0x48a8ff,_0x42c9d0,!![]);}catch(_0x224db1){return BPromise['reject'](_0x224db1);}return _0x48a8ff[_0xd6be('0x27')]();};}function saveUpdates(_0x40c63e,_0x3c4b7a){return function(_0x20aa95){if(_0x20aa95){return _0x20aa95['update'](_0x40c63e)[_0xd6be('0x28')](function(_0x24a4cc){return _0x24a4cc;});}return null;};}function removeEntity(_0xa49c89,_0x4c40cb){return function(_0x41940c){if(_0x41940c){return _0x41940c[_0xd6be('0x29')]()['then'](function(){var _0x246181=_0x41940c[_0xd6be('0x2a')]({'plain':!![]});var _0x372ce7='OpenchannelQueues';return db[_0xd6be('0x2b')]['destroy']({'where':{'type':_0x372ce7,'resourceId':_0x246181['id']}})[_0xd6be('0x28')](function(){return _0x41940c;});})['then'](function(){_0xa49c89[_0xd6be('0x1d')](0xcc)[_0xd6be('0x1e')]();});}};}function handleEntityNotFound(_0x577801,_0x586717){return function(_0x274390){if(!_0x274390){_0x577801['sendStatus'](0x194);}return _0x274390;};}function handleError(_0x9f6616,_0x4bdaba){_0x4bdaba=_0x4bdaba||0x1f4;return function(_0x5b9ebe){logger[_0xd6be('0x2c')](_0x5b9ebe[_0xd6be('0x2d')]);if(_0x5b9ebe['name']){delete _0x5b9ebe[_0xd6be('0x2e')];}_0x9f6616[_0xd6be('0x1d')](_0x4bdaba)[_0xd6be('0x2f')](_0x5b9ebe);};}exports['index']=function(_0x15f24d,_0x5ca650){var _0x9c64ca={},_0x1f908c={},_0x2545b8={'count':0x0,'rows':[]};var _0x1d8c83=_[_0xd6be('0x30')](db[_0xd6be('0x31')]['rawAttributes'],function(_0x5f5448){return{'name':_0x5f5448[_0xd6be('0x32')],'type':_0x5f5448['type'][_0xd6be('0x33')]};});_0x1f908c[_0xd6be('0x34')]=_[_0xd6be('0x30')](_0x1d8c83,_0xd6be('0x2e'));_0x1f908c[_0xd6be('0x35')]=_[_0xd6be('0x36')](_0x15f24d[_0xd6be('0x35')]);_0x1f908c['filters']=_['intersection'](_0x1f908c['model'],_0x1f908c['query']);_0x9c64ca[_0xd6be('0x37')]=_[_0xd6be('0x38')](_0x1f908c[_0xd6be('0x34')],qs['fields'](_0x15f24d[_0xd6be('0x35')][_0xd6be('0x39')]));_0x9c64ca[_0xd6be('0x37')]=_0x9c64ca[_0xd6be('0x37')][_0xd6be('0x3a')]?_0x9c64ca[_0xd6be('0x37')]:_0x1f908c[_0xd6be('0x34')];if(!_0x15f24d[_0xd6be('0x35')][_0xd6be('0x3b')]('nolimit')){_0x9c64ca['limit']=qs['limit'](_0x15f24d[_0xd6be('0x35')][_0xd6be('0x22')]);_0x9c64ca['offset']=qs[_0xd6be('0x20')](_0x15f24d[_0xd6be('0x35')][_0xd6be('0x20')]);}_0x9c64ca['order']=qs[_0xd6be('0x3c')](_0x15f24d[_0xd6be('0x35')][_0xd6be('0x3c')]);_0x9c64ca['where']=qs[_0xd6be('0x3d')](_['pick'](_0x15f24d[_0xd6be('0x35')],_0x1f908c['filters']),_0x1d8c83);if(_0x15f24d[_0xd6be('0x35')]['filter']){_0x9c64ca[_0xd6be('0x3e')]=_[_0xd6be('0x3f')](_0x9c64ca[_0xd6be('0x3e')],{'$or':_['map'](_0x1d8c83,function(_0x67a74b){if(_0x67a74b[_0xd6be('0x40')]!=='VIRTUAL'){var _0x3bdc42={};_0x3bdc42[_0x67a74b[_0xd6be('0x2e')]]={'$like':'%'+_0x15f24d['query'][_0xd6be('0x41')]+'%'};return _0x3bdc42;}})});}_0x9c64ca=_['merge']({},_0x9c64ca,_0x15f24d[_0xd6be('0x42')]);var _0x1db9a1={'where':_0x9c64ca[_0xd6be('0x3e')]};return db[_0xd6be('0x31')][_0xd6be('0x23')](_0x1db9a1)[_0xd6be('0x28')](function(_0x1cb9f3){_0x2545b8[_0xd6be('0x23')]=_0x1cb9f3;if(_0x15f24d['query'][_0xd6be('0x43')]){_0x9c64ca[_0xd6be('0x44')]=[{'all':!![]}];}return db[_0xd6be('0x31')][_0xd6be('0x45')](_0x9c64ca);})[_0xd6be('0x28')](function(_0x6bb537){_0x2545b8[_0xd6be('0x46')]=_0x6bb537;return _0x2545b8;})['then'](respondWithFilteredResult(_0x5ca650,_0x9c64ca))['catch'](handleError(_0x5ca650,null));};exports[_0xd6be('0x47')]=function(_0x3528e5,_0x2b2200){var _0x18eaf9={'raw':!![],'where':{'id':_0x3528e5['params']['id']}},_0x48bc01={};_0x48bc01[_0xd6be('0x34')]=_[_0xd6be('0x36')](db[_0xd6be('0x31')][_0xd6be('0x48')]);_0x48bc01[_0xd6be('0x35')]=_[_0xd6be('0x36')](_0x3528e5['query']);_0x48bc01[_0xd6be('0x3d')]=_[_0xd6be('0x38')](_0x48bc01['model'],_0x48bc01[_0xd6be('0x35')]);_0x18eaf9[_0xd6be('0x37')]=_[_0xd6be('0x38')](_0x48bc01[_0xd6be('0x34')],qs[_0xd6be('0x39')](_0x3528e5[_0xd6be('0x35')][_0xd6be('0x39')]));_0x18eaf9[_0xd6be('0x37')]=_0x18eaf9['attributes']['length']?_0x18eaf9[_0xd6be('0x37')]:_0x48bc01[_0xd6be('0x34')];if(_0x3528e5['query'][_0xd6be('0x43')]){_0x18eaf9[_0xd6be('0x44')]=[{'all':!![]}];}_0x18eaf9=_['merge']({},_0x18eaf9,_0x3528e5[_0xd6be('0x42')]);return db[_0xd6be('0x31')][_0xd6be('0x49')](_0x18eaf9)[_0xd6be('0x28')](handleEntityNotFound(_0x2b2200,null))[_0xd6be('0x28')](respondWithResult(_0x2b2200,null))[_0xd6be('0x4a')](handleError(_0x2b2200,null));};exports[_0xd6be('0x4b')]=function(_0x4ed486,_0x14647d){return db[_0xd6be('0x31')][_0xd6be('0x4b')](_0x4ed486[_0xd6be('0x4c')],{})[_0xd6be('0x28')](function(_0x292c6c){var _0x34b25f=_0x4ed486[_0xd6be('0x4d')][_0xd6be('0x2a')]({'plain':!![]});if(!_0x34b25f)throw new Error(_0xd6be('0x4e'));if(_0x34b25f['role']===_0xd6be('0x4d')){var _0x1564c8=_0x292c6c[_0xd6be('0x2a')]({'plain':!![]});var _0x283c23=_0xd6be('0x4f');return db[_0xd6be('0x50')][_0xd6be('0x49')]({'where':{'name':_0x283c23,'userProfileId':_0x34b25f[_0xd6be('0x51')]},'raw':!![]})[_0xd6be('0x28')](function(_0x4d84bc){if(_0x4d84bc&&_0x4d84bc[_0xd6be('0x52')]===0x0){return db[_0xd6be('0x2b')][_0xd6be('0x4b')]({'name':_0x1564c8[_0xd6be('0x2e')],'resourceId':_0x1564c8['id'],'type':_0x4d84bc[_0xd6be('0x2e')],'sectionId':_0x4d84bc['id']},{})[_0xd6be('0x28')](function(){return _0x292c6c;});}else{return _0x292c6c;}})[_0xd6be('0x4a')](function(_0x3124ce){logger[_0xd6be('0x2c')](_0xd6be('0x53'),_0x3124ce);throw _0x3124ce;});}return _0x292c6c;})[_0xd6be('0x28')](respondWithResult(_0x14647d,0xc9))['catch'](handleError(_0x14647d,null));};exports[_0xd6be('0x54')]=function(_0x199b6a,_0x53a8f6){if(_0x199b6a[_0xd6be('0x4c')]['id']){delete _0x199b6a[_0xd6be('0x4c')]['id'];}return db['OpenchannelQueue'][_0xd6be('0x49')]({'where':{'id':_0x199b6a[_0xd6be('0x55')]['id']}})[_0xd6be('0x28')](handleEntityNotFound(_0x53a8f6,null))[_0xd6be('0x28')](saveUpdates(_0x199b6a[_0xd6be('0x4c')],null))[_0xd6be('0x28')](respondWithResult(_0x53a8f6,null))[_0xd6be('0x4a')](handleError(_0x53a8f6,null));};exports[_0xd6be('0x29')]=function(_0x2e2ca5,_0x4d0c37){return db[_0xd6be('0x31')]['find']({'where':{'id':_0x2e2ca5['params']['id']}})[_0xd6be('0x28')](handleEntityNotFound(_0x4d0c37,null))['then'](removeEntity(_0x4d0c37,null))['catch'](handleError(_0x4d0c37,null));};exports[_0xd6be('0x56')]=function(_0x1263d9,_0x166903){return db['OpenchannelQueue'][_0xd6be('0x56')]()['then'](respondWithResult(_0x166903,null))['catch'](handleError(_0x166903,null));};exports[_0xd6be('0x57')]=function(_0x2a202f,_0x2bf3d3,_0x46f447){var _0x505881={'raw':!![],'where':{}},_0x19a415={},_0x45a082;return db[_0xd6be('0x31')][_0xd6be('0x58')]({'where':{'id':_0x2a202f[_0xd6be('0x55')]['id']}})['then'](handleEntityNotFound(_0x2bf3d3,null))[_0xd6be('0x28')](function(_0x136d6f){if(_0x136d6f){_0x45a082=_0x136d6f['get']({'plain':!![]});_0x19a415[_0xd6be('0x34')]=_[_0xd6be('0x36')](db['UserOpenchannelQueue']['rawAttributes']);_0x19a415[_0xd6be('0x35')]=_[_0xd6be('0x36')](_0x2a202f[_0xd6be('0x35')]);_0x19a415[_0xd6be('0x3d')]=_[_0xd6be('0x38')](_0x19a415[_0xd6be('0x34')],_0x19a415[_0xd6be('0x35')]);_0x505881[_0xd6be('0x37')]=_[_0xd6be('0x38')](_0x19a415['model'],qs[_0xd6be('0x39')](_0x2a202f['query'][_0xd6be('0x39')]));_0x505881[_0xd6be('0x37')]=_0x505881['attributes'][_0xd6be('0x3a')]?_0x505881['attributes']:_0x19a415[_0xd6be('0x34')];if(!_0x2a202f[_0xd6be('0x35')][_0xd6be('0x3b')]('nolimit')){_0x505881[_0xd6be('0x22')]=qs[_0xd6be('0x22')](_0x2a202f[_0xd6be('0x35')][_0xd6be('0x22')]);_0x505881['offset']=qs[_0xd6be('0x20')](_0x2a202f['query'][_0xd6be('0x20')]);}_0x505881[_0xd6be('0x59')]=qs['sort'](_0x2a202f[_0xd6be('0x35')][_0xd6be('0x3c')]);_0x505881[_0xd6be('0x3e')]=qs[_0xd6be('0x3d')](_[_0xd6be('0x5a')](_0x2a202f['query'],_0x19a415[_0xd6be('0x3d')]));_0x505881[_0xd6be('0x3e')]['OpenchannelQueueId']=_0x136d6f['id'];if(_0x2a202f['query'][_0xd6be('0x41')]){_0x505881[_0xd6be('0x3e')]=_['merge'](_0x505881[_0xd6be('0x3e')],{'$or':_['map'](_0x505881[_0xd6be('0x37')],function(_0x292fab){var _0x50f5fc={};_0x50f5fc[_0x292fab]={'$like':'%'+_0x2a202f[_0xd6be('0x35')][_0xd6be('0x41')]+'%'};return _0x50f5fc;})});}_0x505881=_[_0xd6be('0x3f')]({},_0x505881,_0x2a202f[_0xd6be('0x42')]);return db[_0xd6be('0x5b')]['findAll'](_0x505881);}})[_0xd6be('0x28')](function(_0x141f12){if(_0x141f12){return db[_0xd6be('0x5c')][_0xd6be('0x5d')]({'where':{'id':_[_0xd6be('0x30')](_0x141f12,_0xd6be('0x5e')),'role':_0xd6be('0x5f')},'attributes':['id',_0xd6be('0x2e'),'openchannelPause',_0xd6be('0x60'),'createdAt']});}})[_0xd6be('0x28')](function(_0x4d1d95){if(_0x4d1d95){return{'count':_0x4d1d95['count'],'rows':_[_0xd6be('0x30')](_0x4d1d95[_0xd6be('0x46')],function(_0x1b276a){return{'membername':_0x1b276a[_0xd6be('0x2e')],'UserId':_0x1b276a['id'],'queue_name':_0x45a082['name'],'OpenchannelQueueId':_0x45a082['id'],'interface':util['format'](_0xd6be('0x61'),_0xd6be('0x62'),_0x1b276a[_0xd6be('0x2e')]),'penalty':0x0,'paused':_0x1b276a[_0xd6be('0x63')],'createdAt':_0x1b276a['createdAt'],'updatedAt':_0x1b276a[_0xd6be('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2bf3d3,_0x505881))[_0xd6be('0x4a')](handleError(_0x2bf3d3,null));};exports[_0xd6be('0x64')]=function(_0x8074c3,_0x4b9aae,_0x56eeda){var _0x2d0586={};var _0x4df43d={};var _0x532732;var _0x16a780;return db[_0xd6be('0x31')][_0xd6be('0x58')]({'where':{'id':_0x8074c3[_0xd6be('0x55')]['id']}})[_0xd6be('0x28')](handleEntityNotFound(_0x4b9aae,null))[_0xd6be('0x28')](function(_0x2c9a65){if(_0x2c9a65){_0x532732=_0x2c9a65;_0x4df43d[_0xd6be('0x34')]=_['keys'](db['Team'][_0xd6be('0x48')]);_0x4df43d['query']=_[_0xd6be('0x36')](_0x8074c3['query']);_0x4df43d[_0xd6be('0x3d')]=_[_0xd6be('0x38')](_0x4df43d[_0xd6be('0x34')],_0x4df43d[_0xd6be('0x35')]);_0x2d0586[_0xd6be('0x37')]=_[_0xd6be('0x38')](_0x4df43d[_0xd6be('0x34')],qs[_0xd6be('0x39')](_0x8074c3[_0xd6be('0x35')][_0xd6be('0x39')]));_0x2d0586[_0xd6be('0x37')]=_0x2d0586[_0xd6be('0x37')]['length']?_0x2d0586[_0xd6be('0x37')]:_0x4df43d[_0xd6be('0x34')];_0x2d0586[_0xd6be('0x59')]=qs['sort'](_0x8074c3[_0xd6be('0x35')][_0xd6be('0x3c')]);_0x2d0586['where']=qs[_0xd6be('0x3d')](_[_0xd6be('0x5a')](_0x8074c3[_0xd6be('0x35')],_0x4df43d[_0xd6be('0x3d')]));if(_0x8074c3['query'][_0xd6be('0x41')]){_0x2d0586[_0xd6be('0x3e')]=_[_0xd6be('0x3f')](_0x2d0586[_0xd6be('0x3e')],{'$or':_[_0xd6be('0x30')](_0x2d0586['attributes'],function(_0x368675){var _0xd23ea6={};_0xd23ea6[_0x368675]={'$like':'%'+_0x8074c3[_0xd6be('0x35')][_0xd6be('0x41')]+'%'};return _0xd23ea6;})});}_0x2d0586=_[_0xd6be('0x3f')]({},_0x2d0586,_0x8074c3[_0xd6be('0x42')]);return _0x532732[_0xd6be('0x64')](_0x2d0586);}})[_0xd6be('0x28')](function(_0x3d06de){if(_0x3d06de){_0x16a780=_0x3d06de[_0xd6be('0x3a')];if(!_0x8074c3[_0xd6be('0x35')][_0xd6be('0x3b')]('nolimit')){_0x2d0586[_0xd6be('0x22')]=qs[_0xd6be('0x22')](_0x8074c3[_0xd6be('0x35')][_0xd6be('0x22')]);_0x2d0586[_0xd6be('0x20')]=qs[_0xd6be('0x20')](_0x8074c3[_0xd6be('0x35')][_0xd6be('0x20')]);}return _0x532732[_0xd6be('0x64')](_0x2d0586);}})[_0xd6be('0x28')](function(_0x5d02f0){if(_0x5d02f0){return _0x5d02f0?{'count':_0x16a780,'rows':_0x5d02f0}:null;}})[_0xd6be('0x28')](respondWithResult(_0x4b9aae,null))[_0xd6be('0x4a')](handleError(_0x4b9aae,null));};exports[_0xd6be('0x65')]=function(_0x320209,_0x5b5bbc,_0x5dd66f){var _0x327405=_0x320209['body'][_0xd6be('0x66')];return db[_0xd6be('0x67')][_0xd6be('0x45')]({'where':{'id':_0x327405},'attributes':['id'],'include':[{'model':db[_0xd6be('0x5c')],'as':_0xd6be('0x68'),'attributes':['id',_0xd6be('0x2e'),'online',_0xd6be('0x69'),_0xd6be('0x6a')],'raw':!![]}]})[_0xd6be('0x28')](function(_0x3139ee){if(_0x3139ee){var _0x2e446f=_['flatMap'](_0x3139ee,function(_0x2ae9cb){var _0x3659ab=_0x2ae9cb[_0xd6be('0x2a')]({'plain':!![]});return _0x3659ab[_0xd6be('0x68')];});return db[_0xd6be('0x31')][_0xd6be('0x49')]({'where':{'id':_0x320209[_0xd6be('0x55')]['id']}})[_0xd6be('0x28')](function(_0x21b169){return db[_0xd6be('0x6b')]['transaction'](function(_0x453244){return _0x21b169[_0xd6be('0x65')](_0x327405,{'transaction':_0x453244})['then'](function(){return BPromise['each'](_0x2e446f,function(_0x364357){return db[_0xd6be('0x5b')][_0xd6be('0x6c')]({'where':{'UserId':_0x364357['id'],'OpenchannelQueueId':_0x320209['params']['id']},'transaction':_0x453244});});})[_0xd6be('0x28')](function(){_0x2e446f['forEach'](function(_0x473627){socket[_0xd6be('0x6d')](_0xd6be('0x6e'),{'UserId':_0x473627['id'],'OpenchannelQueueId':_0x21b169['id']});});});});});}})[_0xd6be('0x28')](respondWithStatusCode(_0x5b5bbc,null))[_0xd6be('0x4a')](handleError(_0x5b5bbc,null));};exports[_0xd6be('0x6f')]=function(_0x126ab1,_0x3114a9,_0xb07afe){return db[_0xd6be('0x67')][_0xd6be('0x45')]({'where':{'id':_0x126ab1[_0xd6be('0x35')][_0xd6be('0x66')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd6be('0x68'),'attributes':['id'],'raw':!![]}]})[_0xd6be('0x28')](handleEntityNotFound(_0x3114a9,null))[_0xd6be('0x28')](function(_0x229932){var _0x4d9cde=_[_0xd6be('0x30')](_0x229932,'id');var _0x23b59e=[];var _0x4096fe=[];var _0x4b48a2=squel[_0xd6be('0x70')]();_0x4b48a2['field'](_0xd6be('0x71'))['from'](_0xd6be('0x72'),'tq')[_0xd6be('0x73')](_0xd6be('0x74'),'ut',_0xd6be('0x75'))[_0xd6be('0x3e')]('OpenchannelQueueId\x20=\x20?',_0x126ab1['params']['id']);for(var _0x46ce5e=0x0;_0x46ce5e<_0x229932[_0xd6be('0x3a')];_0x46ce5e+=0x1){let _0x394dae=_0x229932[_0x46ce5e];for(var _0x249d03=0x0;_0x249d03<_0x394dae[_0xd6be('0x68')][_0xd6be('0x3a')];_0x249d03+=0x1){let _0x49b2b6=_0x394dae[_0xd6be('0x68')][_0x249d03];var _0x90496a=_0x4b48a2[_0xd6be('0x76')]();_0x90496a[_0xd6be('0x3e')](_0xd6be('0x77'),_0x49b2b6['id']);_0x4096fe[_0xd6be('0x78')](db[_0xd6be('0x6b')][_0xd6be('0x35')](_0x90496a[_0xd6be('0x79')](),{'type':db[_0xd6be('0x6b')]['QueryTypes']['SELECT']})[_0xd6be('0x28')](function(_0x11e21e){if(_0x11e21e[_0xd6be('0x3a')]===0x1){return _0x49b2b6['id'];}else{var _0x1c0c79=_[_0xd6be('0x7a')](_[_0xd6be('0x30')](_0x11e21e,'TeamId'),function(_0x2adf57){return _[_0xd6be('0x7b')](_0x4d9cde,_0x2adf57);});if(_0x1c0c79){return _0x49b2b6['id'];}}}));}}return BPromise[_0xd6be('0x7c')](_0x4096fe)['then'](function(_0x2063e4){_0x23b59e=_(_0x23b59e)[_0xd6be('0x7d')](_0x2063e4)[_0xd6be('0x7e')]()[_0xd6be('0x7f')]();return db[_0xd6be('0x31')]['find']({'where':{'id':_0x126ab1[_0xd6be('0x55')]['id']}})[_0xd6be('0x28')](function(_0x45d942){return db[_0xd6be('0x6b')][_0xd6be('0x80')](function(_0x324ccd){return _0x45d942[_0xd6be('0x6f')](_0x126ab1[_0xd6be('0x35')][_0xd6be('0x66')],{'transaction':_0x324ccd})[_0xd6be('0x28')](function(){if(!_[_0xd6be('0x81')](_0x23b59e)){return _0x45d942['removeAgents'](_0x23b59e,{'transaction':_0x324ccd});}})['then'](function(){_0x23b59e['forEach'](function(_0x27f84b){socket[_0xd6be('0x6d')](_0xd6be('0x82'),{'UserId':_0x27f84b,'OpenchannelQueueId':_0x45d942['id']});});});});});});})['then'](respondWithStatusCode(_0x3114a9,null))[_0xd6be('0x4a')](handleError(_0x3114a9,null));};exports[_0xd6be('0x83')]=function(_0x419225,_0x93640c,_0x27fdb0){return db[_0xd6be('0x31')][_0xd6be('0x49')]({'where':{'id':_0x419225[_0xd6be('0x55')]['id']}})[_0xd6be('0x28')](handleEntityNotFound(_0x93640c,null))[_0xd6be('0x28')](function(_0x23e325){if(_0x23e325){return _0x23e325[_0xd6be('0x83')](_0x419225[_0xd6be('0x4c')][_0xd6be('0x66')],_[_0xd6be('0x84')](_0x419225[_0xd6be('0x4c')],[_0xd6be('0x66'),'id'])||{})[_0xd6be('0x85')](function(_0x19680a){for(var _0x1aedea=0x0;_0x1aedea<_0x419225[_0xd6be('0x4c')][_0xd6be('0x66')][_0xd6be('0x3a')];_0x1aedea+=0x1){socket[_0xd6be('0x6d')](_0xd6be('0x6e'),{'UserId':Number(_0x419225['body'][_0xd6be('0x66')][_0x1aedea]),'OpenchannelQueueId':Number(_0x419225['params']['id'])});}return _0x19680a;});}})[_0xd6be('0x28')](respondWithResult(_0x93640c,null))[_0xd6be('0x4a')](handleError(_0x93640c,null));};exports[_0xd6be('0x86')]=function(_0x172a7a,_0x83369e,_0x20538b){return db[_0xd6be('0x31')]['find']({'where':{'id':_0x172a7a['params']['id']}})[_0xd6be('0x28')](handleEntityNotFound(_0x83369e,null))['then'](function(_0x2158f7){if(_0x2158f7){return _0x2158f7[_0xd6be('0x86')](_0x172a7a[_0xd6be('0x35')][_0xd6be('0x66')])[_0xd6be('0x28')](function(){if(_[_0xd6be('0x87')](_0x172a7a[_0xd6be('0x35')][_0xd6be('0x66')])){for(var _0x5a6138=0x0;_0x5a6138<_0x172a7a['query']['ids']['length'];_0x5a6138+=0x1){socket['emit'](_0xd6be('0x82'),{'UserId':Number(_0x172a7a[_0xd6be('0x35')][_0xd6be('0x66')][_0x5a6138]),'OpenchannelQueueId':Number(_0x172a7a[_0xd6be('0x55')]['id'])});}}else{socket[_0xd6be('0x6d')](_0xd6be('0x82'),{'UserId':Number(_0x172a7a[_0xd6be('0x35')][_0xd6be('0x66')]),'OpenchannelQueueId':Number(_0x172a7a[_0xd6be('0x55')]['id'])});}});}})[_0xd6be('0x28')](respondWithStatusCode(_0x83369e,null))[_0xd6be('0x4a')](handleError(_0x83369e,null));};exports[_0xd6be('0x88')]=function(_0x1a2da0,_0x534baf,_0x5b474a){var _0x577b7e={};var _0x1103db={};var _0x3b4b02;var _0x10aa29;return db[_0xd6be('0x31')][_0xd6be('0x58')]({'where':{'id':_0x1a2da0[_0xd6be('0x55')]['id']}})['then'](handleEntityNotFound(_0x534baf,null))[_0xd6be('0x28')](function(_0x393398){if(_0x393398){_0x3b4b02=_0x393398;_0x1103db['model']=_['keys'](db[_0xd6be('0x5c')][_0xd6be('0x48')]);_0x1103db[_0xd6be('0x35')]=_['keys'](_0x1a2da0[_0xd6be('0x35')]);_0x1103db[_0xd6be('0x3d')]=_['intersection'](_0x1103db[_0xd6be('0x34')],_0x1103db['query']);_0x577b7e[_0xd6be('0x37')]=_[_0xd6be('0x38')](_0x1103db['model'],qs[_0xd6be('0x39')](_0x1a2da0[_0xd6be('0x35')]['fields']));_0x577b7e[_0xd6be('0x37')]=_0x577b7e['attributes'][_0xd6be('0x3a')]?_0x577b7e[_0xd6be('0x37')]:_0x1103db['model'];_0x577b7e[_0xd6be('0x59')]=qs[_0xd6be('0x3c')](_0x1a2da0[_0xd6be('0x35')][_0xd6be('0x3c')]);_0x577b7e['where']=qs[_0xd6be('0x3d')](_['pick'](_0x1a2da0[_0xd6be('0x35')],_0x1103db['filters']));if(_0x1a2da0['query'][_0xd6be('0x41')]){_0x577b7e[_0xd6be('0x3e')]=_[_0xd6be('0x3f')](_0x577b7e[_0xd6be('0x3e')],{'$or':_[_0xd6be('0x30')](_0x577b7e[_0xd6be('0x37')],function(_0x3d9c3a){var _0x16bf73={};_0x16bf73[_0x3d9c3a]={'$like':'%'+_0x1a2da0[_0xd6be('0x35')][_0xd6be('0x41')]+'%'};return _0x16bf73;})});}_0x577b7e=_[_0xd6be('0x3f')]({},_0x577b7e,_0x1a2da0[_0xd6be('0x42')]);return _0x3b4b02[_0xd6be('0x88')](_0x577b7e);}})[_0xd6be('0x28')](function(_0x48c6c8){if(_0x48c6c8){_0x10aa29=_0x48c6c8[_0xd6be('0x3a')];if(!_0x1a2da0[_0xd6be('0x35')][_0xd6be('0x3b')](_0xd6be('0x89'))){_0x577b7e[_0xd6be('0x22')]=qs[_0xd6be('0x22')](_0x1a2da0[_0xd6be('0x35')]['limit']);_0x577b7e[_0xd6be('0x20')]=qs[_0xd6be('0x20')](_0x1a2da0['query']['offset']);}return _0x3b4b02[_0xd6be('0x88')](_0x577b7e);}})[_0xd6be('0x28')](function(_0x203b95){if(_0x203b95){return _0x203b95?{'count':_0x10aa29,'rows':_0x203b95}:null;}})['then'](respondWithResult(_0x534baf,null))[_0xd6be('0x4a')](handleError(_0x534baf,null));};
\ No newline at end of file
+var _0xab1d=['nolimit','pick','OpenchannelQueueId','UserOpenchannelQueue','User','findAndCountAll','updatedAt','createdAt','%s/%s','openchannelPause','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','forEach','emit','userOpenchannelQueue:save','removeTeams','select','field','from','team_has_openchannel_queues','user_has_teams','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','TeamId','union','compact','value','isEmpty','userOpenchannelQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','reject','save','update','destroy','get','OpenchannelQueues','then','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','keys','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne'];(function(_0x53d6b8,_0x2a89de){var _0xa2241d=function(_0x1e715f){while(--_0x1e715f){_0x53d6b8['push'](_0x53d6b8['shift']());}};_0xa2241d(++_0x2a89de);}(_0xab1d,0x14b));var _0xdab1=function(_0x1e1f8c,_0x3ffba3){_0x1e1f8c=_0x1e1f8c-0x0;var _0x2f1763=_0xab1d[_0x1e1f8c];return _0x2f1763;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdab1('0x0'));var zipdir=require(_0xdab1('0x1'));var jsonpatch=require(_0xdab1('0x2'));var rp=require(_0xdab1('0x3'));var moment=require(_0xdab1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdab1('0x5'));var util=require('util');var path=require(_0xdab1('0x6'));var sox=require(_0xdab1('0x7'));var csv=require(_0xdab1('0x8'));var ejs=require(_0xdab1('0x9'));var fs=require('fs');var fs_extra=require(_0xdab1('0xa'));var _=require(_0xdab1('0xb'));var squel=require('squel');var crypto=require(_0xdab1('0xc'));var jsforce=require(_0xdab1('0xd'));var deskjs=require(_0xdab1('0xe'));var toCsv=require(_0xdab1('0x8'));var querystring=require(_0xdab1('0xf'));var Papa=require('papaparse');var Redis=require(_0xdab1('0x10'));var authService=require(_0xdab1('0x11'));var qs=require(_0xdab1('0x12'));var as=require(_0xdab1('0x13'));var hardwareService=require(_0xdab1('0x14'));var logger=require(_0xdab1('0x15'))('api');var utils=require(_0xdab1('0x16'));var config=require(_0xdab1('0x17'));var licenseUtil=require(_0xdab1('0x18'));var db=require('../../mysqldb')['db'];config[_0xdab1('0x19')]=_[_0xdab1('0x1a')](config[_0xdab1('0x19')],{'host':_0xdab1('0x1b'),'port':0x18eb});var socket=require(_0xdab1('0x1c'))(new Redis(config[_0xdab1('0x19')]));require(_0xdab1('0x1d'))[_0xdab1('0x1e')](socket);function respondWithStatusCode(_0x5a421e,_0x5d8d77){_0x5d8d77=_0x5d8d77||0xcc;return function(_0x14130a){if(_0x14130a){return _0x5a421e[_0xdab1('0x1f')](_0x5d8d77);}return _0x5a421e['status'](_0x5d8d77)[_0xdab1('0x20')]();};}function respondWithResult(_0x4cbc60,_0x12b799){_0x12b799=_0x12b799||0xc8;return function(_0x5414e2){if(_0x5414e2){return _0x4cbc60[_0xdab1('0x21')](_0x12b799)['json'](_0x5414e2);}};}function respondWithFilteredResult(_0x5846e2,_0x47b7ac){return function(_0x4b9a74){if(_0x4b9a74){var _0x27856d=typeof _0x47b7ac[_0xdab1('0x22')]===_0xdab1('0x23')&&typeof _0x47b7ac[_0xdab1('0x24')]===_0xdab1('0x23');var _0xa0f2ca=_0x4b9a74[_0xdab1('0x25')];var _0x2b9f00=_0x27856d?0x0:_0x47b7ac[_0xdab1('0x22')];var _0x9a4228=_0x27856d?_0x4b9a74[_0xdab1('0x25')]:_0x47b7ac['offset']+_0x47b7ac[_0xdab1('0x24')];var _0x3d49c2;if(_0x9a4228>=_0xa0f2ca){_0x9a4228=_0xa0f2ca;_0x3d49c2=0xc8;}else{_0x3d49c2=0xce;}_0x5846e2[_0xdab1('0x21')](_0x3d49c2);return _0x5846e2[_0xdab1('0x26')]('Content-Range',_0x2b9f00+'-'+_0x9a4228+'/'+_0xa0f2ca)[_0xdab1('0x27')](_0x4b9a74);}return null;};}function patchUpdates(_0x15cab2){return function(_0x53276e){try{jsonpatch[_0xdab1('0x28')](_0x53276e,_0x15cab2,!![]);}catch(_0x5a4f46){return BPromise[_0xdab1('0x29')](_0x5a4f46);}return _0x53276e[_0xdab1('0x2a')]();};}function saveUpdates(_0x5b08c7,_0x1946cd){return function(_0x55fd6d){if(_0x55fd6d){return _0x55fd6d[_0xdab1('0x2b')](_0x5b08c7)['then'](function(_0x54926f){return _0x54926f;});}return null;};}function removeEntity(_0x5a70f4,_0x4af2f9){return function(_0x2c1270){if(_0x2c1270){return _0x2c1270[_0xdab1('0x2c')]()['then'](function(){var _0xf265fc=_0x2c1270[_0xdab1('0x2d')]({'plain':!![]});var _0xfe1c49=_0xdab1('0x2e');return db['UserProfileResource'][_0xdab1('0x2c')]({'where':{'type':_0xfe1c49,'resourceId':_0xf265fc['id']}})[_0xdab1('0x2f')](function(){return _0x2c1270;});})['then'](function(){_0x5a70f4[_0xdab1('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3012c4,_0xb59bfb){return function(_0x48f57c){if(!_0x48f57c){_0x3012c4[_0xdab1('0x1f')](0x194);}return _0x48f57c;};}function handleError(_0x2020e6,_0x56d02a){_0x56d02a=_0x56d02a||0x1f4;return function(_0x5658d9){logger[_0xdab1('0x30')](_0x5658d9[_0xdab1('0x31')]);if(_0x5658d9[_0xdab1('0x32')]){delete _0x5658d9['name'];}_0x2020e6[_0xdab1('0x21')](_0x56d02a)[_0xdab1('0x33')](_0x5658d9);};}exports[_0xdab1('0x34')]=function(_0x4ce75e,_0x54603d){var _0x192a9d={},_0x39ea4e={},_0x2c869a={'count':0x0,'rows':[]};var _0x24d017=_[_0xdab1('0x35')](db[_0xdab1('0x36')][_0xdab1('0x37')],function(_0x5accc9){return{'name':_0x5accc9[_0xdab1('0x38')],'type':_0x5accc9[_0xdab1('0x39')][_0xdab1('0x3a')]};});_0x39ea4e['model']=_['map'](_0x24d017,_0xdab1('0x32'));_0x39ea4e[_0xdab1('0x3b')]=_['keys'](_0x4ce75e[_0xdab1('0x3b')]);_0x39ea4e[_0xdab1('0x3c')]=_[_0xdab1('0x3d')](_0x39ea4e[_0xdab1('0x3e')],_0x39ea4e[_0xdab1('0x3b')]);_0x192a9d[_0xdab1('0x3f')]=_[_0xdab1('0x3d')](_0x39ea4e['model'],qs[_0xdab1('0x40')](_0x4ce75e[_0xdab1('0x3b')]['fields']));_0x192a9d[_0xdab1('0x3f')]=_0x192a9d[_0xdab1('0x3f')]['length']?_0x192a9d[_0xdab1('0x3f')]:_0x39ea4e[_0xdab1('0x3e')];if(!_0x4ce75e[_0xdab1('0x3b')][_0xdab1('0x41')]('nolimit')){_0x192a9d[_0xdab1('0x24')]=qs[_0xdab1('0x24')](_0x4ce75e[_0xdab1('0x3b')][_0xdab1('0x24')]);_0x192a9d['offset']=qs[_0xdab1('0x22')](_0x4ce75e[_0xdab1('0x3b')]['offset']);}_0x192a9d[_0xdab1('0x42')]=qs[_0xdab1('0x43')](_0x4ce75e[_0xdab1('0x3b')][_0xdab1('0x43')]);_0x192a9d['where']=qs[_0xdab1('0x3c')](_['pick'](_0x4ce75e['query'],_0x39ea4e[_0xdab1('0x3c')]),_0x24d017);if(_0x4ce75e[_0xdab1('0x3b')][_0xdab1('0x44')]){_0x192a9d[_0xdab1('0x45')]=_[_0xdab1('0x46')](_0x192a9d[_0xdab1('0x45')],{'$or':_['map'](_0x24d017,function(_0x3784a5){if(_0x3784a5[_0xdab1('0x39')]!==_0xdab1('0x47')){var _0x44e237={};_0x44e237[_0x3784a5[_0xdab1('0x32')]]={'$like':'%'+_0x4ce75e[_0xdab1('0x3b')]['filter']+'%'};return _0x44e237;}})});}_0x192a9d=_['merge']({},_0x192a9d,_0x4ce75e[_0xdab1('0x48')]);var _0x2eed0c={'where':_0x192a9d[_0xdab1('0x45')]};return db[_0xdab1('0x36')][_0xdab1('0x25')](_0x2eed0c)[_0xdab1('0x2f')](function(_0xffa225){_0x2c869a[_0xdab1('0x25')]=_0xffa225;if(_0x4ce75e[_0xdab1('0x3b')][_0xdab1('0x49')]){_0x192a9d['include']=[{'all':!![]}];}return db['OpenchannelQueue'][_0xdab1('0x4a')](_0x192a9d);})[_0xdab1('0x2f')](function(_0x22ba5e){_0x2c869a[_0xdab1('0x4b')]=_0x22ba5e;return _0x2c869a;})[_0xdab1('0x2f')](respondWithFilteredResult(_0x54603d,_0x192a9d))[_0xdab1('0x4c')](handleError(_0x54603d,null));};exports[_0xdab1('0x4d')]=function(_0xeb072f,_0x57c219){var _0x333a64={'raw':!![],'where':{'id':_0xeb072f['params']['id']}},_0x11b6b3={};_0x11b6b3['model']=_[_0xdab1('0x4e')](db[_0xdab1('0x36')]['rawAttributes']);_0x11b6b3[_0xdab1('0x3b')]=_[_0xdab1('0x4e')](_0xeb072f[_0xdab1('0x3b')]);_0x11b6b3[_0xdab1('0x3c')]=_[_0xdab1('0x3d')](_0x11b6b3['model'],_0x11b6b3[_0xdab1('0x3b')]);_0x333a64[_0xdab1('0x3f')]=_['intersection'](_0x11b6b3['model'],qs[_0xdab1('0x40')](_0xeb072f[_0xdab1('0x3b')][_0xdab1('0x40')]));_0x333a64[_0xdab1('0x3f')]=_0x333a64[_0xdab1('0x3f')][_0xdab1('0x4f')]?_0x333a64[_0xdab1('0x3f')]:_0x11b6b3['model'];if(_0xeb072f[_0xdab1('0x3b')][_0xdab1('0x49')]){_0x333a64['include']=[{'all':!![]}];}_0x333a64=_['merge']({},_0x333a64,_0xeb072f[_0xdab1('0x48')]);return db['OpenchannelQueue'][_0xdab1('0x50')](_0x333a64)[_0xdab1('0x2f')](handleEntityNotFound(_0x57c219,null))[_0xdab1('0x2f')](respondWithResult(_0x57c219,null))['catch'](handleError(_0x57c219,null));};exports['create']=function(_0xc919d8,_0x1c4202){return db[_0xdab1('0x36')][_0xdab1('0x51')](_0xc919d8['body'],{})[_0xdab1('0x2f')](function(_0x7db91){var _0x411581=_0xc919d8[_0xdab1('0x52')][_0xdab1('0x2d')]({'plain':!![]});if(!_0x411581)throw new Error(_0xdab1('0x53'));if(_0x411581[_0xdab1('0x54')]===_0xdab1('0x52')){var _0x4ff565=_0x7db91[_0xdab1('0x2d')]({'plain':!![]});var _0x8e0579=_0xdab1('0x2e');return db[_0xdab1('0x55')][_0xdab1('0x50')]({'where':{'name':_0x8e0579,'userProfileId':_0x411581[_0xdab1('0x56')]},'raw':!![]})['then'](function(_0x5e57b9){if(_0x5e57b9&&_0x5e57b9[_0xdab1('0x57')]===0x0){return db[_0xdab1('0x58')][_0xdab1('0x51')]({'name':_0x4ff565[_0xdab1('0x32')],'resourceId':_0x4ff565['id'],'type':_0x5e57b9[_0xdab1('0x32')],'sectionId':_0x5e57b9['id']},{})[_0xdab1('0x2f')](function(){return _0x7db91;});}else{return _0x7db91;}})[_0xdab1('0x4c')](function(_0x254cde){logger['error'](_0xdab1('0x59'),_0x254cde);throw _0x254cde;});}return _0x7db91;})['then'](respondWithResult(_0x1c4202,0xc9))[_0xdab1('0x4c')](handleError(_0x1c4202,null));};exports['update']=function(_0x4c6aa4,_0x2667ad){if(_0x4c6aa4[_0xdab1('0x5a')]['id']){delete _0x4c6aa4[_0xdab1('0x5a')]['id'];}return db[_0xdab1('0x36')][_0xdab1('0x50')]({'where':{'id':_0x4c6aa4[_0xdab1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2667ad,null))[_0xdab1('0x2f')](saveUpdates(_0x4c6aa4[_0xdab1('0x5a')],null))[_0xdab1('0x2f')](respondWithResult(_0x2667ad,null))[_0xdab1('0x4c')](handleError(_0x2667ad,null));};exports[_0xdab1('0x2c')]=function(_0x5f0135,_0x97e019){return db['OpenchannelQueue'][_0xdab1('0x50')]({'where':{'id':_0x5f0135[_0xdab1('0x5b')]['id']}})[_0xdab1('0x2f')](handleEntityNotFound(_0x97e019,null))['then'](removeEntity(_0x97e019,null))[_0xdab1('0x4c')](handleError(_0x97e019,null));};exports[_0xdab1('0x5c')]=function(_0x28d056,_0x2d383c){return db[_0xdab1('0x36')]['describe']()['then'](respondWithResult(_0x2d383c,null))[_0xdab1('0x4c')](handleError(_0x2d383c,null));};exports[_0xdab1('0x5d')]=function(_0xf53d67,_0xbb7fc1,_0x5f430f){var _0x5abcf1={'raw':!![],'where':{}},_0x516d2c={},_0x1e55a2;return db[_0xdab1('0x36')][_0xdab1('0x5e')]({'where':{'id':_0xf53d67[_0xdab1('0x5b')]['id']}})[_0xdab1('0x2f')](handleEntityNotFound(_0xbb7fc1,null))[_0xdab1('0x2f')](function(_0x4d99cf){if(_0x4d99cf){_0x1e55a2=_0x4d99cf[_0xdab1('0x2d')]({'plain':!![]});_0x516d2c['model']=_[_0xdab1('0x4e')](db['UserOpenchannelQueue'][_0xdab1('0x37')]);_0x516d2c[_0xdab1('0x3b')]=_[_0xdab1('0x4e')](_0xf53d67[_0xdab1('0x3b')]);_0x516d2c[_0xdab1('0x3c')]=_[_0xdab1('0x3d')](_0x516d2c[_0xdab1('0x3e')],_0x516d2c['query']);_0x5abcf1['attributes']=_[_0xdab1('0x3d')](_0x516d2c[_0xdab1('0x3e')],qs[_0xdab1('0x40')](_0xf53d67['query'][_0xdab1('0x40')]));_0x5abcf1[_0xdab1('0x3f')]=_0x5abcf1[_0xdab1('0x3f')][_0xdab1('0x4f')]?_0x5abcf1[_0xdab1('0x3f')]:_0x516d2c['model'];if(!_0xf53d67[_0xdab1('0x3b')][_0xdab1('0x41')](_0xdab1('0x5f'))){_0x5abcf1['limit']=qs[_0xdab1('0x24')](_0xf53d67['query']['limit']);_0x5abcf1[_0xdab1('0x22')]=qs[_0xdab1('0x22')](_0xf53d67[_0xdab1('0x3b')][_0xdab1('0x22')]);}_0x5abcf1['order']=qs[_0xdab1('0x43')](_0xf53d67['query'][_0xdab1('0x43')]);_0x5abcf1[_0xdab1('0x45')]=qs[_0xdab1('0x3c')](_[_0xdab1('0x60')](_0xf53d67[_0xdab1('0x3b')],_0x516d2c[_0xdab1('0x3c')]));_0x5abcf1[_0xdab1('0x45')][_0xdab1('0x61')]=_0x4d99cf['id'];if(_0xf53d67[_0xdab1('0x3b')]['filter']){_0x5abcf1[_0xdab1('0x45')]=_['merge'](_0x5abcf1[_0xdab1('0x45')],{'$or':_[_0xdab1('0x35')](_0x5abcf1[_0xdab1('0x3f')],function(_0x1f7093){var _0x145329={};_0x145329[_0x1f7093]={'$like':'%'+_0xf53d67[_0xdab1('0x3b')]['filter']+'%'};return _0x145329;})});}_0x5abcf1=_[_0xdab1('0x46')]({},_0x5abcf1,_0xf53d67[_0xdab1('0x48')]);return db[_0xdab1('0x62')]['findAll'](_0x5abcf1);}})[_0xdab1('0x2f')](function(_0x140296){if(_0x140296){return db[_0xdab1('0x63')][_0xdab1('0x64')]({'where':{'id':_[_0xdab1('0x35')](_0x140296,'UserId'),'role':'agent'},'attributes':['id',_0xdab1('0x32'),'openchannelPause',_0xdab1('0x65'),_0xdab1('0x66')]});}})['then'](function(_0x5a716b){if(_0x5a716b){return{'count':_0x5a716b[_0xdab1('0x25')],'rows':_['map'](_0x5a716b[_0xdab1('0x4b')],function(_0x908fea){return{'membername':_0x908fea[_0xdab1('0x32')],'UserId':_0x908fea['id'],'queue_name':_0x1e55a2[_0xdab1('0x32')],'OpenchannelQueueId':_0x1e55a2['id'],'interface':util['format'](_0xdab1('0x67'),'SIP',_0x908fea['name']),'penalty':0x0,'paused':_0x908fea[_0xdab1('0x68')],'createdAt':_0x908fea[_0xdab1('0x66')],'updatedAt':_0x908fea[_0xdab1('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xdab1('0x2f')](respondWithFilteredResult(_0xbb7fc1,_0x5abcf1))[_0xdab1('0x4c')](handleError(_0xbb7fc1,null));};exports[_0xdab1('0x69')]=function(_0x50a222,_0x505d39,_0x4932c2){var _0x46e327={};var _0x2ac198={};var _0x4ff773;var _0xfb585;return db[_0xdab1('0x36')][_0xdab1('0x5e')]({'where':{'id':_0x50a222[_0xdab1('0x5b')]['id']}})[_0xdab1('0x2f')](handleEntityNotFound(_0x505d39,null))[_0xdab1('0x2f')](function(_0x3c033b){if(_0x3c033b){_0x4ff773=_0x3c033b;_0x2ac198[_0xdab1('0x3e')]=_[_0xdab1('0x4e')](db[_0xdab1('0x6a')][_0xdab1('0x37')]);_0x2ac198['query']=_[_0xdab1('0x4e')](_0x50a222['query']);_0x2ac198[_0xdab1('0x3c')]=_['intersection'](_0x2ac198['model'],_0x2ac198[_0xdab1('0x3b')]);_0x46e327[_0xdab1('0x3f')]=_[_0xdab1('0x3d')](_0x2ac198[_0xdab1('0x3e')],qs[_0xdab1('0x40')](_0x50a222[_0xdab1('0x3b')][_0xdab1('0x40')]));_0x46e327[_0xdab1('0x3f')]=_0x46e327[_0xdab1('0x3f')][_0xdab1('0x4f')]?_0x46e327[_0xdab1('0x3f')]:_0x2ac198[_0xdab1('0x3e')];_0x46e327[_0xdab1('0x42')]=qs[_0xdab1('0x43')](_0x50a222['query'][_0xdab1('0x43')]);_0x46e327[_0xdab1('0x45')]=qs[_0xdab1('0x3c')](_[_0xdab1('0x60')](_0x50a222['query'],_0x2ac198[_0xdab1('0x3c')]));if(_0x50a222[_0xdab1('0x3b')][_0xdab1('0x44')]){_0x46e327[_0xdab1('0x45')]=_[_0xdab1('0x46')](_0x46e327['where'],{'$or':_['map'](_0x46e327[_0xdab1('0x3f')],function(_0x20a4b6){var _0x2b190d={};_0x2b190d[_0x20a4b6]={'$like':'%'+_0x50a222['query'][_0xdab1('0x44')]+'%'};return _0x2b190d;})});}_0x46e327=_['merge']({},_0x46e327,_0x50a222[_0xdab1('0x48')]);return _0x4ff773[_0xdab1('0x69')](_0x46e327);}})[_0xdab1('0x2f')](function(_0x3cd3a5){if(_0x3cd3a5){_0xfb585=_0x3cd3a5[_0xdab1('0x4f')];if(!_0x50a222['query'][_0xdab1('0x41')](_0xdab1('0x5f'))){_0x46e327[_0xdab1('0x24')]=qs[_0xdab1('0x24')](_0x50a222[_0xdab1('0x3b')][_0xdab1('0x24')]);_0x46e327[_0xdab1('0x22')]=qs['offset'](_0x50a222[_0xdab1('0x3b')]['offset']);}return _0x4ff773[_0xdab1('0x69')](_0x46e327);}})[_0xdab1('0x2f')](function(_0x4869dd){if(_0x4869dd){return _0x4869dd?{'count':_0xfb585,'rows':_0x4869dd}:null;}})[_0xdab1('0x2f')](respondWithResult(_0x505d39,null))['catch'](handleError(_0x505d39,null));};exports[_0xdab1('0x6b')]=function(_0x14032c,_0x1d4eb1,_0x5df0b4){var _0x337252=_0x14032c[_0xdab1('0x5a')][_0xdab1('0x6c')];return db[_0xdab1('0x6a')][_0xdab1('0x4a')]({'where':{'id':_0x337252},'attributes':['id'],'include':[{'model':db['User'],'as':_0xdab1('0x6d'),'attributes':['id',_0xdab1('0x32'),_0xdab1('0x6e'),_0xdab1('0x6f'),_0xdab1('0x70')],'raw':!![]}]})[_0xdab1('0x2f')](function(_0x17b1df){if(_0x17b1df){var _0x4904c6=_[_0xdab1('0x71')](_0x17b1df,function(_0x7512b7){var _0x236ea4=_0x7512b7['get']({'plain':!![]});return _0x236ea4[_0xdab1('0x6d')];});return db['OpenchannelQueue'][_0xdab1('0x50')]({'where':{'id':_0x14032c['params']['id']}})[_0xdab1('0x2f')](function(_0xa5962b){return db['sequelize']['transaction'](function(_0xce61ba){return _0xa5962b[_0xdab1('0x6b')](_0x337252,{'transaction':_0xce61ba})[_0xdab1('0x2f')](function(){return BPromise['each'](_0x4904c6,function(_0x596da9){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0x596da9['id'],'OpenchannelQueueId':_0x14032c[_0xdab1('0x5b')]['id']},'transaction':_0xce61ba});});})[_0xdab1('0x2f')](function(){_0x4904c6[_0xdab1('0x72')](function(_0x10869e){socket[_0xdab1('0x73')](_0xdab1('0x74'),{'UserId':_0x10869e['id'],'OpenchannelQueueId':_0xa5962b['id']});});});});});}})[_0xdab1('0x2f')](respondWithStatusCode(_0x1d4eb1,null))['catch'](handleError(_0x1d4eb1,null));};exports[_0xdab1('0x75')]=function(_0x2b531e,_0x354818,_0x2f3493){return db['Team']['findAll']({'where':{'id':_0x2b531e[_0xdab1('0x3b')][_0xdab1('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xdab1('0x63')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xdab1('0x2f')](handleEntityNotFound(_0x354818,null))[_0xdab1('0x2f')](function(_0x450d18){var _0x24aeda=_['map'](_0x450d18,'id');var _0x320afc=[];var _0x1996c9=[];var _0x1fab20=squel[_0xdab1('0x76')]();_0x1fab20[_0xdab1('0x77')]('tq.TeamId')[_0xdab1('0x78')](_0xdab1('0x79'),'tq')['join'](_0xdab1('0x7a'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xdab1('0x45')](_0xdab1('0x7b'),_0x2b531e[_0xdab1('0x5b')]['id']);for(var _0x399b68=0x0;_0x399b68<_0x450d18[_0xdab1('0x4f')];_0x399b68+=0x1){let _0x5daa58=_0x450d18[_0x399b68];for(var _0x3a7483=0x0;_0x3a7483<_0x5daa58[_0xdab1('0x6d')][_0xdab1('0x4f')];_0x3a7483+=0x1){let _0x419bdc=_0x5daa58['Agents'][_0x3a7483];var _0x2da285=_0x1fab20['clone']();_0x2da285[_0xdab1('0x45')](_0xdab1('0x7c'),_0x419bdc['id']);_0x1996c9['push'](db[_0xdab1('0x7d')][_0xdab1('0x3b')](_0x2da285[_0xdab1('0x7e')](),{'type':db[_0xdab1('0x7d')][_0xdab1('0x7f')][_0xdab1('0x80')]})[_0xdab1('0x2f')](function(_0x3675b6){if(_0x3675b6[_0xdab1('0x4f')]===0x1){return _0x419bdc['id'];}else{var _0x2aee65=_[_0xdab1('0x81')](_['map'](_0x3675b6,_0xdab1('0x82')),function(_0x4d33e3){return _['includes'](_0x24aeda,_0x4d33e3);});if(_0x2aee65){return _0x419bdc['id'];}}}));}}return BPromise['all'](_0x1996c9)[_0xdab1('0x2f')](function(_0x4d6f8e){_0x320afc=_(_0x320afc)[_0xdab1('0x83')](_0x4d6f8e)[_0xdab1('0x84')]()[_0xdab1('0x85')]();return db[_0xdab1('0x36')][_0xdab1('0x50')]({'where':{'id':_0x2b531e[_0xdab1('0x5b')]['id']}})['then'](function(_0x4fda19){return db[_0xdab1('0x7d')]['transaction'](function(_0xa9ca91){return _0x4fda19['removeTeams'](_0x2b531e[_0xdab1('0x3b')][_0xdab1('0x6c')],{'transaction':_0xa9ca91})[_0xdab1('0x2f')](function(){if(!_[_0xdab1('0x86')](_0x320afc)){return _0x4fda19['removeAgents'](_0x320afc,{'transaction':_0xa9ca91});}})[_0xdab1('0x2f')](function(){_0x320afc[_0xdab1('0x72')](function(_0x12b3b0){socket[_0xdab1('0x73')](_0xdab1('0x87'),{'UserId':_0x12b3b0,'OpenchannelQueueId':_0x4fda19['id']});});});});});});})[_0xdab1('0x2f')](respondWithStatusCode(_0x354818,null))['catch'](handleError(_0x354818,null));};exports[_0xdab1('0x88')]=function(_0x38b46b,_0xa2a890,_0x664a78){return db['OpenchannelQueue']['find']({'where':{'id':_0x38b46b[_0xdab1('0x5b')]['id']}})['then'](handleEntityNotFound(_0xa2a890,null))[_0xdab1('0x2f')](function(_0x1c47ae){if(_0x1c47ae){return _0x1c47ae[_0xdab1('0x88')](_0x38b46b[_0xdab1('0x5a')][_0xdab1('0x6c')],_[_0xdab1('0x89')](_0x38b46b['body'],[_0xdab1('0x6c'),'id'])||{})[_0xdab1('0x8a')](function(_0x526cab){for(var _0x490141=0x0;_0x490141<_0x38b46b['body']['ids']['length'];_0x490141+=0x1){socket[_0xdab1('0x73')]('userOpenchannelQueue:save',{'UserId':Number(_0x38b46b[_0xdab1('0x5a')][_0xdab1('0x6c')][_0x490141]),'OpenchannelQueueId':Number(_0x38b46b[_0xdab1('0x5b')]['id'])});}return _0x526cab;});}})[_0xdab1('0x2f')](respondWithResult(_0xa2a890,null))['catch'](handleError(_0xa2a890,null));};exports[_0xdab1('0x8b')]=function(_0x136a2d,_0x2b2313,_0x56fcf0){return db[_0xdab1('0x36')][_0xdab1('0x50')]({'where':{'id':_0x136a2d['params']['id']}})[_0xdab1('0x2f')](handleEntityNotFound(_0x2b2313,null))['then'](function(_0x472453){if(_0x472453){return _0x472453[_0xdab1('0x8b')](_0x136a2d['query']['ids'])[_0xdab1('0x2f')](function(){if(_[_0xdab1('0x8c')](_0x136a2d[_0xdab1('0x3b')]['ids'])){for(var _0x4d05ee=0x0;_0x4d05ee<_0x136a2d[_0xdab1('0x3b')][_0xdab1('0x6c')][_0xdab1('0x4f')];_0x4d05ee+=0x1){socket[_0xdab1('0x73')](_0xdab1('0x87'),{'UserId':Number(_0x136a2d[_0xdab1('0x3b')][_0xdab1('0x6c')][_0x4d05ee]),'OpenchannelQueueId':Number(_0x136a2d['params']['id'])});}}else{socket['emit'](_0xdab1('0x87'),{'UserId':Number(_0x136a2d[_0xdab1('0x3b')][_0xdab1('0x6c')]),'OpenchannelQueueId':Number(_0x136a2d[_0xdab1('0x5b')]['id'])});}});}})[_0xdab1('0x2f')](respondWithStatusCode(_0x2b2313,null))[_0xdab1('0x4c')](handleError(_0x2b2313,null));};exports[_0xdab1('0x8d')]=function(_0x5c425f,_0x16e427,_0x5c26ad){var _0x338f43={};var _0x44b2d8={};var _0x5cb9fc;var _0x512216;return db[_0xdab1('0x36')][_0xdab1('0x5e')]({'where':{'id':_0x5c425f[_0xdab1('0x5b')]['id']}})[_0xdab1('0x2f')](handleEntityNotFound(_0x16e427,null))[_0xdab1('0x2f')](function(_0x17650e){if(_0x17650e){_0x5cb9fc=_0x17650e;_0x44b2d8[_0xdab1('0x3e')]=_[_0xdab1('0x4e')](db[_0xdab1('0x63')][_0xdab1('0x37')]);_0x44b2d8[_0xdab1('0x3b')]=_[_0xdab1('0x4e')](_0x5c425f[_0xdab1('0x3b')]);_0x44b2d8[_0xdab1('0x3c')]=_[_0xdab1('0x3d')](_0x44b2d8[_0xdab1('0x3e')],_0x44b2d8[_0xdab1('0x3b')]);_0x338f43[_0xdab1('0x3f')]=_[_0xdab1('0x3d')](_0x44b2d8[_0xdab1('0x3e')],qs[_0xdab1('0x40')](_0x5c425f[_0xdab1('0x3b')][_0xdab1('0x40')]));_0x338f43[_0xdab1('0x3f')]=_0x338f43[_0xdab1('0x3f')][_0xdab1('0x4f')]?_0x338f43[_0xdab1('0x3f')]:_0x44b2d8[_0xdab1('0x3e')];_0x338f43[_0xdab1('0x42')]=qs[_0xdab1('0x43')](_0x5c425f[_0xdab1('0x3b')][_0xdab1('0x43')]);_0x338f43[_0xdab1('0x45')]=qs[_0xdab1('0x3c')](_[_0xdab1('0x60')](_0x5c425f['query'],_0x44b2d8['filters']));if(_0x5c425f['query'][_0xdab1('0x44')]){_0x338f43[_0xdab1('0x45')]=_[_0xdab1('0x46')](_0x338f43[_0xdab1('0x45')],{'$or':_[_0xdab1('0x35')](_0x338f43['attributes'],function(_0x545108){var _0x2ab568={};_0x2ab568[_0x545108]={'$like':'%'+_0x5c425f[_0xdab1('0x3b')][_0xdab1('0x44')]+'%'};return _0x2ab568;})});}_0x338f43=_[_0xdab1('0x46')]({},_0x338f43,_0x5c425f[_0xdab1('0x48')]);return _0x5cb9fc[_0xdab1('0x8d')](_0x338f43);}})['then'](function(_0x5d1977){if(_0x5d1977){_0x512216=_0x5d1977[_0xdab1('0x4f')];if(!_0x5c425f['query']['hasOwnProperty'](_0xdab1('0x5f'))){_0x338f43['limit']=qs[_0xdab1('0x24')](_0x5c425f['query'][_0xdab1('0x24')]);_0x338f43[_0xdab1('0x22')]=qs[_0xdab1('0x22')](_0x5c425f[_0xdab1('0x3b')][_0xdab1('0x22')]);}return _0x5cb9fc[_0xdab1('0x8d')](_0x338f43);}})['then'](function(_0xdaf6ee){if(_0xdaf6ee){return _0xdaf6ee?{'count':_0x512216,'rows':_0xdaf6ee}:null;}})[_0xdab1('0x2f')](respondWithResult(_0x16e427,null))['catch'](handleError(_0x16e427,null));};
\ No newline at end of file
index 9684c9e..73a8141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc67=['setMaxListeners','remove','hasOwnProperty','exports','events','../../mysqldb','OpenchannelQueue'];(function(_0x2725d8,_0x58c2cb){var _0x46683c=function(_0x1e127a){while(--_0x1e127a){_0x2725d8['push'](_0x2725d8['shift']());}};_0x46683c(++_0x58c2cb);}(_0xfc67,0x82));var _0x7fc6=function(_0x126acb,_0x55ddec){_0x126acb=_0x126acb-0x0;var _0x58853a=_0xfc67[_0x126acb];return _0x58853a;};'use strict';var EventEmitter=require(_0x7fc6('0x0'));var OpenchannelQueue=require(_0x7fc6('0x1'))['db'][_0x7fc6('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x7fc6('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7fc6('0x4')};function emitEvent(_0x26b0d8){return function(_0x1cdbf0,_0x1f38fd,_0x4b9d5c){OpenchannelQueueEvents['emit'](_0x26b0d8+':'+_0x1cdbf0['id'],_0x1cdbf0);OpenchannelQueueEvents['emit'](_0x26b0d8,_0x1cdbf0);_0x4b9d5c(null);};}for(var e in events){if(events[_0x7fc6('0x5')](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x7fc6('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xebf9=['../../mysqldb','OpenchannelQueue','save','update','hasOwnProperty','hook','exports','events'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xebf9,0x17f));var _0x9ebf=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xebf9[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x9ebf('0x0'));var OpenchannelQueue=require(_0x9ebf('0x1'))['db'][_0x9ebf('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9ebf('0x3'),'afterUpdate':_0x9ebf('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3aa97c){return function(_0x10011e,_0x60b34e,_0x45e911){OpenchannelQueueEvents['emit'](_0x3aa97c+':'+_0x10011e['id'],_0x10011e);OpenchannelQueueEvents['emit'](_0x3aa97c,_0x10011e);_0x45e911(null);};}for(var e in events){if(events[_0x9ebf('0x5')](e)){var event=events[e];OpenchannelQueue[_0x9ebf('0x6')](e,emitEvent(event));}}module[_0x9ebf('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index 7f95da2..fcd33f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98eb=['moment','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','OpenchannelQueue','util','../../config/logger','api'];(function(_0x45f2bf,_0x3b805d){var _0x22f0f9=function(_0x59e039){while(--_0x59e039){_0x45f2bf['push'](_0x45f2bf['shift']());}};_0x22f0f9(++_0x3b805d);}(_0x98eb,0x115));var _0xb98e=function(_0xfbdff6,_0x2af690){_0xfbdff6=_0xfbdff6-0x0;var _0x4cb9be=_0x98eb[_0xfbdff6];return _0x4cb9be;};'use strict';var _=require('lodash');var util=require(_0xb98e('0x0'));var logger=require(_0xb98e('0x1'))(_0xb98e('0x2'));var moment=require(_0xb98e('0x3'));var BPromise=require('bluebird');var rp=require(_0xb98e('0x4'));var fs=require('fs');var path=require(_0xb98e('0x5'));var rimraf=require(_0xb98e('0x6'));var config=require(_0xb98e('0x7'));var attributes=require(_0xb98e('0x8'));module['exports']=function(_0x3c8251,_0x1f5854){return _0x3c8251['define'](_0xb98e('0x9'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x72d9=['openchannel_queues','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x72d9,0x14e));var _0x972d=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x72d9[_0x34843e];return _0x598f7f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x972d('0x0'))(_0x972d('0x1'));var moment=require('moment');var BPromise=require(_0x972d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x972d('0x3'));var rimraf=require(_0x972d('0x4'));var config=require(_0x972d('0x5'));var attributes=require(_0x972d('0x6'));module[_0x972d('0x7')]=function(_0x3f40a4,_0x32f9f5){return _0x3f40a4['define']('OpenchannelQueue',attributes,{'tableName':_0x972d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d49a3c6..47311fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7613=['../../config/logger','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x3e0763,_0x3d12be){var _0x351ca2=function(_0x9beae7){while(--_0x9beae7){_0x3e0763['push'](_0x3e0763['shift']());}};_0x351ca2(++_0x3d12be);}(_0x7613,0xc6));var _0x3761=function(_0x4b5f1f,_0x1fee93){_0x4b5f1f=_0x4b5f1f-0x0;var _0x3bb747=_0x7613[_0x4b5f1f];return _0x3bb747;};'use strict';var _=require(_0x3761('0x0'));var util=require(_0x3761('0x1'));var moment=require('moment');var BPromise=require(_0x3761('0x2'));var rs=require(_0x3761('0x3'));var fs=require('fs');var Redis=require(_0x3761('0x4'));var db=require(_0x3761('0x5'))['db'];var utils=require(_0x3761('0x6'));var logger=require(_0x3761('0x7'))('rpc');var config=require(_0x3761('0x8'));var jayson=require(_0x3761('0x9'));var client=jayson['client'][_0x3761('0xa')]({'port':0x232a});config['redis']=_[_0x3761('0xb')](config['redis'],{'host':_0x3761('0xc'),'port':0x18eb});var socket=require(_0x3761('0xd'))(new Redis(config['redis']));require(_0x3761('0xe'))['register'](socket);function respondWithRpcPromise(_0x53b74f,_0x2783ff,_0x967170){return new BPromise(function(_0x3cf1c4,_0x3f7cc1){return client[_0x3761('0xf')](_0x53b74f,_0x967170)[_0x3761('0x10')](function(_0x12452d){logger[_0x3761('0x11')](_0x3761('0x12'),_0x2783ff,_0x3761('0x13'));logger[_0x3761('0x14')](_0x3761('0x15'),_0x2783ff,'request\x20sent',JSON[_0x3761('0x16')](_0x12452d));if(_0x12452d['error']){if(_0x12452d['error'][_0x3761('0x17')]===0x1f4){logger['error'](_0x3761('0x12'),_0x2783ff,_0x12452d[_0x3761('0x18')][_0x3761('0x19')]);return _0x3f7cc1(_0x12452d[_0x3761('0x18')][_0x3761('0x19')]);}logger[_0x3761('0x18')](_0x3761('0x12'),_0x2783ff,_0x12452d[_0x3761('0x18')][_0x3761('0x19')]);return _0x3cf1c4(_0x12452d['error'][_0x3761('0x19')]);}else{logger[_0x3761('0x11')](_0x3761('0x12'),_0x2783ff,_0x3761('0x13'));_0x3cf1c4(_0x12452d[_0x3761('0x1a')]['message']);}})[_0x3761('0x1b')](function(_0x5decb4){logger[_0x3761('0x18')](_0x3761('0x12'),_0x2783ff,_0x5decb4);_0x3f7cc1(_0x5decb4);});});}exports[_0x3761('0x1c')]=function(_0x2c7643){var _0x3fb632=this;return new Promise(function(_0xb3dee5,_0x24db82){return db[_0x3761('0x1d')][_0x3761('0x1e')]({'raw':_0x2c7643[_0x3761('0x1f')]?_0x2c7643[_0x3761('0x1f')][_0x3761('0x20')]===undefined?!![]:![]:!![],'where':_0x2c7643[_0x3761('0x1f')]?_0x2c7643[_0x3761('0x1f')][_0x3761('0x21')]||null:null,'attributes':_0x2c7643[_0x3761('0x1f')]?_0x2c7643['options'][_0x3761('0x22')]||null:null,'limit':_0x2c7643[_0x3761('0x1f')]?_0x2c7643['options'][_0x3761('0x23')]||null:null,'include':_0x2c7643[_0x3761('0x1f')]?_0x2c7643['options'][_0x3761('0x24')]?_[_0x3761('0x25')](_0x2c7643[_0x3761('0x1f')]['include'],function(_0x5df68a){return{'model':db[_0x5df68a[_0x3761('0x26')]],'as':_0x5df68a['as'],'attributes':_0x5df68a[_0x3761('0x22')],'include':_0x5df68a[_0x3761('0x24')]?_['map'](_0x5df68a[_0x3761('0x24')],function(_0x1b7e7f){return{'model':db[_0x1b7e7f[_0x3761('0x26')]],'as':_0x1b7e7f['as'],'attributes':_0x1b7e7f[_0x3761('0x22')],'include':_0x1b7e7f[_0x3761('0x24')]?_[_0x3761('0x25')](_0x1b7e7f[_0x3761('0x24')],function(_0x526ed0){return{'model':db[_0x526ed0['model']],'as':_0x526ed0['as'],'attributes':_0x526ed0[_0x3761('0x22')]};}):[]};}):[]};}):[]:[]})[_0x3761('0x10')](function(_0x3f5942){logger[_0x3761('0x11')]('GetOpenchannelQueue',_0x2c7643);logger['debug']('GetOpenchannelQueue',_0x2c7643,JSON[_0x3761('0x16')](_0x3f5942));_0xb3dee5(_0x3f5942);})[_0x3761('0x1b')](function(_0x198ba0){logger[_0x3761('0x18')]('GetOpenchannelQueue',_0x198ba0['message'],_0x2c7643);_0x24db82(_0x3fb632[_0x3761('0x18')](0x1f4,_0x198ba0[_0x3761('0x19')]));});});};exports[_0x3761('0x27')]=function(_0x3ab5cc){var _0x3a48da=this;return new Promise(function(_0x5816d6,_0x20f548){return db[_0x3761('0x1d')][_0x3761('0x28')]({'raw':_0x3ab5cc['options']?_0x3ab5cc[_0x3761('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x3ab5cc[_0x3761('0x1f')]?_0x3ab5cc[_0x3761('0x1f')]['where']||null:null,'attributes':_0x3ab5cc['options']?_0x3ab5cc['options']['attributes']||null:null,'include':_0x3ab5cc['options']?_0x3ab5cc['options'][_0x3761('0x24')]?_[_0x3761('0x25')](_0x3ab5cc[_0x3761('0x1f')][_0x3761('0x24')],function(_0x274260){return{'model':db[_0x274260[_0x3761('0x26')]],'as':_0x274260['as'],'attributes':_0x274260[_0x3761('0x22')],'include':_0x274260['include']?_[_0x3761('0x25')](_0x274260[_0x3761('0x24')],function(_0x5d177d){return{'model':db[_0x5d177d[_0x3761('0x26')]],'as':_0x5d177d['as'],'attributes':_0x5d177d[_0x3761('0x22')],'include':_0x5d177d[_0x3761('0x24')]?_['map'](_0x5d177d[_0x3761('0x24')],function(_0xe6ce17){return{'model':db[_0xe6ce17[_0x3761('0x26')]],'as':_0xe6ce17['as'],'attributes':_0xe6ce17[_0x3761('0x22')]};}):[]};}):[]};}):[]:[]})[_0x3761('0x10')](function(_0x4fb843){logger[_0x3761('0x11')](_0x3761('0x27'),_0x3ab5cc);logger[_0x3761('0x14')](_0x3761('0x27'),_0x3ab5cc,JSON[_0x3761('0x16')](_0x4fb843));_0x5816d6(_0x4fb843);})[_0x3761('0x1b')](function(_0x14345c){logger['error'](_0x3761('0x27'),_0x14345c[_0x3761('0x19')],_0x3ab5cc);_0x20f548(_0x3a48da[_0x3761('0x18')](0x1f4,_0x14345c['message']));});});};
\ No newline at end of file
+var _0x881a=['attributes','limit','include','map','model','ShowOpenchannelQueue','find','where','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x881a,0xd5));var _0xa881=function(_0x452bed,_0x128e55){_0x452bed=_0x452bed-0x0;var _0x4bb2cf=_0x881a[_0x452bed];return _0x4bb2cf;};'use strict';var _=require(_0xa881('0x0'));var util=require(_0xa881('0x1'));var moment=require(_0xa881('0x2'));var BPromise=require(_0xa881('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa881('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa881('0x5'));var logger=require('../../config/logger')(_0xa881('0x6'));var config=require(_0xa881('0x7'));var jayson=require(_0xa881('0x8'));var client=jayson[_0xa881('0x9')][_0xa881('0xa')]({'port':0x232a});config['redis']=_[_0xa881('0xb')](config[_0xa881('0xc')],{'host':_0xa881('0xd'),'port':0x18eb});var socket=require(_0xa881('0xe'))(new Redis(config[_0xa881('0xc')]));require('./openchannelQueue.socket')[_0xa881('0xf')](socket);function respondWithRpcPromise(_0x129a90,_0x3f1408,_0x38ba3b){return new BPromise(function(_0x1aa8fd,_0x6cdb4d){return client[_0xa881('0x10')](_0x129a90,_0x38ba3b)[_0xa881('0x11')](function(_0xe47565){logger[_0xa881('0x12')](_0xa881('0x13'),_0x3f1408,_0xa881('0x14'));logger[_0xa881('0x15')](_0xa881('0x16'),_0x3f1408,'request\x20sent',JSON[_0xa881('0x17')](_0xe47565));if(_0xe47565[_0xa881('0x18')]){if(_0xe47565[_0xa881('0x18')][_0xa881('0x19')]===0x1f4){logger[_0xa881('0x18')](_0xa881('0x13'),_0x3f1408,_0xe47565['error']['message']);return _0x6cdb4d(_0xe47565[_0xa881('0x18')]['message']);}logger['error'](_0xa881('0x13'),_0x3f1408,_0xe47565[_0xa881('0x18')][_0xa881('0x1a')]);return _0x1aa8fd(_0xe47565[_0xa881('0x18')][_0xa881('0x1a')]);}else{logger[_0xa881('0x12')](_0xa881('0x13'),_0x3f1408,_0xa881('0x14'));_0x1aa8fd(_0xe47565['result'][_0xa881('0x1a')]);}})[_0xa881('0x1b')](function(_0x9f5569){logger['error'](_0xa881('0x13'),_0x3f1408,_0x9f5569);_0x6cdb4d(_0x9f5569);});});}exports[_0xa881('0x1c')]=function(_0x5b7848){var _0x47793d=this;return new Promise(function(_0x5b235b,_0x1694fe){return db[_0xa881('0x1d')][_0xa881('0x1e')]({'raw':_0x5b7848[_0xa881('0x1f')]?_0x5b7848[_0xa881('0x1f')][_0xa881('0x20')]===undefined?!![]:![]:!![],'where':_0x5b7848['options']?_0x5b7848['options']['where']||null:null,'attributes':_0x5b7848[_0xa881('0x1f')]?_0x5b7848['options'][_0xa881('0x21')]||null:null,'limit':_0x5b7848[_0xa881('0x1f')]?_0x5b7848[_0xa881('0x1f')][_0xa881('0x22')]||null:null,'include':_0x5b7848[_0xa881('0x1f')]?_0x5b7848[_0xa881('0x1f')][_0xa881('0x23')]?_[_0xa881('0x24')](_0x5b7848[_0xa881('0x1f')]['include'],function(_0x4e1528){return{'model':db[_0x4e1528[_0xa881('0x25')]],'as':_0x4e1528['as'],'attributes':_0x4e1528['attributes'],'include':_0x4e1528['include']?_[_0xa881('0x24')](_0x4e1528[_0xa881('0x23')],function(_0x3fb5df){return{'model':db[_0x3fb5df[_0xa881('0x25')]],'as':_0x3fb5df['as'],'attributes':_0x3fb5df['attributes'],'include':_0x3fb5df[_0xa881('0x23')]?_['map'](_0x3fb5df[_0xa881('0x23')],function(_0x440636){return{'model':db[_0x440636['model']],'as':_0x440636['as'],'attributes':_0x440636[_0xa881('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa881('0x11')](function(_0xfdb58e){logger[_0xa881('0x12')](_0xa881('0x1c'),_0x5b7848);logger[_0xa881('0x15')](_0xa881('0x1c'),_0x5b7848,JSON[_0xa881('0x17')](_0xfdb58e));_0x5b235b(_0xfdb58e);})[_0xa881('0x1b')](function(_0x5e3181){logger[_0xa881('0x18')]('GetOpenchannelQueue',_0x5e3181[_0xa881('0x1a')],_0x5b7848);_0x1694fe(_0x47793d[_0xa881('0x18')](0x1f4,_0x5e3181[_0xa881('0x1a')]));});});};exports[_0xa881('0x26')]=function(_0xffe8c2){var _0x5ae1ca=this;return new Promise(function(_0x2e0387,_0x2f6bdb){return db['OpenchannelQueue'][_0xa881('0x27')]({'raw':_0xffe8c2[_0xa881('0x1f')]?_0xffe8c2[_0xa881('0x1f')][_0xa881('0x20')]===undefined?!![]:![]:!![],'where':_0xffe8c2['options']?_0xffe8c2[_0xa881('0x1f')][_0xa881('0x28')]||null:null,'attributes':_0xffe8c2[_0xa881('0x1f')]?_0xffe8c2[_0xa881('0x1f')][_0xa881('0x21')]||null:null,'include':_0xffe8c2['options']?_0xffe8c2[_0xa881('0x1f')][_0xa881('0x23')]?_[_0xa881('0x24')](_0xffe8c2[_0xa881('0x1f')]['include'],function(_0x148a21){return{'model':db[_0x148a21[_0xa881('0x25')]],'as':_0x148a21['as'],'attributes':_0x148a21[_0xa881('0x21')],'include':_0x148a21[_0xa881('0x23')]?_[_0xa881('0x24')](_0x148a21['include'],function(_0x5b8bf3){return{'model':db[_0x5b8bf3[_0xa881('0x25')]],'as':_0x5b8bf3['as'],'attributes':_0x5b8bf3[_0xa881('0x21')],'include':_0x5b8bf3['include']?_[_0xa881('0x24')](_0x5b8bf3[_0xa881('0x23')],function(_0x5eb6ff){return{'model':db[_0x5eb6ff[_0xa881('0x25')]],'as':_0x5eb6ff['as'],'attributes':_0x5eb6ff[_0xa881('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa881('0x11')](function(_0x1ed8fe){logger[_0xa881('0x12')]('ShowOpenchannelQueue',_0xffe8c2);logger[_0xa881('0x15')](_0xa881('0x26'),_0xffe8c2,JSON[_0xa881('0x17')](_0x1ed8fe));_0x2e0387(_0x1ed8fe);})[_0xa881('0x1b')](function(_0x25f483){logger[_0xa881('0x18')]('ShowOpenchannelQueue',_0x25f483['message'],_0xffe8c2);_0x2f6bdb(_0x5ae1ca[_0xa881('0x18')](0x1f4,_0x25f483[_0xa881('0x1a')]));});});};
\ No newline at end of file
index 55ceade..c95cb05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3474=['removeListener','length','./openchannelQueue.events','remove','update'];(function(_0x43efb7,_0x3edce9){var _0x42d897=function(_0x3fbd7c){while(--_0x3fbd7c){_0x43efb7['push'](_0x43efb7['shift']());}};_0x42d897(++_0x3edce9);}(_0x3474,0x179));var _0x4347=function(_0x160982,_0x185b76){_0x160982=_0x160982-0x0;var _0x259e05=_0x3474[_0x160982];return _0x259e05;};'use strict';var OpenchannelQueueEvents=require(_0x4347('0x0'));var events=['save',_0x4347('0x1'),_0x4347('0x2')];function createListener(_0x505672,_0x118139){return function(_0x259a03){_0x118139['emit'](_0x505672,_0x259a03);};}function removeListener(_0x2465f5,_0x28f6fa){return function(){OpenchannelQueueEvents[_0x4347('0x3')](_0x2465f5,_0x28f6fa);};}exports['register']=function(_0x5adafe){for(var _0x3d0b5e=0x0,_0x3d3abe=events[_0x4347('0x4')];_0x3d0b5e<_0x3d3abe;_0x3d0b5e++){var _0x1e7599=events[_0x3d0b5e];var _0x3c6a44=createListener('openchannelQueue:'+_0x1e7599,_0x5adafe);OpenchannelQueueEvents['on'](_0x1e7599,_0x3c6a44);}};
\ No newline at end of file
+var _0x6d08=['length','openchannelQueue:','./openchannelQueue.events','remove','update','emit'];(function(_0x554d75,_0x571688){var _0x2b6694=function(_0x2ecf1c){while(--_0x2ecf1c){_0x554d75['push'](_0x554d75['shift']());}};_0x2b6694(++_0x571688);}(_0x6d08,0x12e));var _0x86d0=function(_0x59f7b8,_0x562d4b){_0x59f7b8=_0x59f7b8-0x0;var _0x1ea432=_0x6d08[_0x59f7b8];return _0x1ea432;};'use strict';var OpenchannelQueueEvents=require(_0x86d0('0x0'));var events=['save',_0x86d0('0x1'),_0x86d0('0x2')];function createListener(_0x16126b,_0x44a109){return function(_0x168686){_0x44a109[_0x86d0('0x3')](_0x16126b,_0x168686);};}function removeListener(_0x5f075b,_0x31b7c3){return function(){OpenchannelQueueEvents['removeListener'](_0x5f075b,_0x31b7c3);};}exports['register']=function(_0x24e469){for(var _0x599b2d=0x0,_0x1cd0fe=events[_0x86d0('0x4')];_0x599b2d<_0x1cd0fe;_0x599b2d++){var _0x83c50e=events[_0x599b2d];var _0x35b948=createListener(_0x86d0('0x5')+_0x83c50e,_0x24e469);OpenchannelQueueEvents['on'](_0x83c50e,_0x35b948);}};
\ No newline at end of file
index 45624b9..be5706e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe61f=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','update','delete','destroy','multer','path','connect-timeout','express','fs-extra'];(function(_0x4afe45,_0x1b8013){var _0x2fc331=function(_0x175725){while(--_0x175725){_0x4afe45['push'](_0x4afe45['shift']());}};_0x2fc331(++_0x1b8013);}(_0xe61f,0x72));var _0xfe61=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe61f[_0x4a9fb1];return _0x348672;};'use strict';var multer=require(_0xfe61('0x0'));var util=require('util');var path=require(_0xfe61('0x1'));var timeout=require(_0xfe61('0x2'));var express=require(_0xfe61('0x3'));var router=express['Router']();var fs_extra=require(_0xfe61('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe61('0x5'));var config=require(_0xfe61('0x6'));var controller=require('./openchannelQueueReport.controller');router[_0xfe61('0x7')]('/',auth[_0xfe61('0x8')](),controller[_0xfe61('0x9')]);router[_0xfe61('0x7')](_0xfe61('0xa'),auth[_0xfe61('0x8')](),controller[_0xfe61('0xb')]);router[_0xfe61('0x7')](_0xfe61('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xfe61('0xd')]('/',auth[_0xfe61('0x8')](),controller['create']);router['put'](_0xfe61('0xc'),auth[_0xfe61('0x8')](),controller[_0xfe61('0xe')]);router[_0xfe61('0xf')]('/:id',auth[_0xfe61('0x8')](),controller[_0xfe61('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x4a63=['exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','create','put','update','delete','destroy'];(function(_0x710f32,_0x4dbd37){var _0x29177f=function(_0x2cfec6){while(--_0x2cfec6){_0x710f32['push'](_0x710f32['shift']());}};_0x29177f(++_0x4dbd37);}(_0x4a63,0x145));var _0x34a6=function(_0x302b5e,_0x564a8e){_0x302b5e=_0x302b5e-0x0;var _0x523ab7=_0x4a63[_0x302b5e];return _0x523ab7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x34a6('0x0'));var timeout=require(_0x34a6('0x1'));var express=require(_0x34a6('0x2'));var router=express[_0x34a6('0x3')]();var fs_extra=require(_0x34a6('0x4'));var auth=require(_0x34a6('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelQueueReport.controller');router[_0x34a6('0x6')]('/',auth[_0x34a6('0x7')](),controller[_0x34a6('0x8')]);router[_0x34a6('0x6')](_0x34a6('0x9'),auth[_0x34a6('0x7')](),controller[_0x34a6('0xa')]);router[_0x34a6('0x6')](_0x34a6('0xb'),auth[_0x34a6('0x7')](),controller['show']);router['post']('/',auth[_0x34a6('0x7')](),controller[_0x34a6('0xc')]);router[_0x34a6('0xd')](_0x34a6('0xb'),auth['isAuthenticated'](),controller[_0x34a6('0xe')]);router[_0x34a6('0xf')](_0x34a6('0xb'),auth['isAuthenticated'](),controller[_0x34a6('0x10')]);module[_0x34a6('0x11')]=router;
\ No newline at end of file
index 82e0661..9fd50ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e2=['moment','sequelize','exports','STRING','DATE'];(function(_0x59b9d3,_0x384472){var _0x171163=function(_0x251233){while(--_0x251233){_0x59b9d3['push'](_0x59b9d3['shift']());}};_0x171163(++_0x384472);}(_0x49e2,0x10e));var _0x249e=function(_0x22921d,_0x5a393b){_0x22921d=_0x22921d-0x0;var _0x1ed287=_0x49e2[_0x22921d];return _0x1ed287;};'use strict';var moment=require(_0x249e('0x0'));var Sequelize=require(_0x249e('0x1'));module[_0x249e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x249e('0x3')]},'joinAt':{'type':Sequelize[_0x249e('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x249e('0x4')]},'exitAt':{'type':Sequelize[_0x249e('0x4')]},'reason':{'type':Sequelize[_0x249e('0x3')]}};
\ No newline at end of file
+var _0xcff8=['STRING','DATE','moment','sequelize','exports'];(function(_0x69cf2c,_0x209feb){var _0x5a0817=function(_0x5bec49){while(--_0x5bec49){_0x69cf2c['push'](_0x69cf2c['shift']());}};_0x5a0817(++_0x209feb);}(_0xcff8,0x1ab));var _0x8cff=function(_0x470c47,_0x102f35){_0x470c47=_0x470c47-0x0;var _0x4e0955=_0xcff8[_0x470c47];return _0x4e0955;};'use strict';var moment=require(_0x8cff('0x0'));var Sequelize=require(_0x8cff('0x1'));module[_0x8cff('0x2')]={'uniqueid':{'type':Sequelize[_0x8cff('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x8cff('0x4')]},'leaveAt':{'type':Sequelize[_0x8cff('0x4')]},'acceptAt':{'type':Sequelize[_0x8cff('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x8cff('0x3')]}};
\ No newline at end of file
index cd47506..289e191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7c9=['include','findAll','rows','catch','show','params','keys','includeAll','options','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','stack','name','send','map','OpenchannelQueueReport','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','merge','VIRTUAL','filter'];(function(_0x3d6bd3,_0x1ea55d){var _0x106abe=function(_0x125f4d){while(--_0x125f4d){_0x3d6bd3['push'](_0x3d6bd3['shift']());}};_0x106abe(++_0x1ea55d);}(_0xf7c9,0x185));var _0x9f7c=function(_0x53b3b2,_0x391205){_0x53b3b2=_0x53b3b2-0x0;var _0x4e6f24=_0xf7c9[_0x53b3b2];return _0x4e6f24;};'use strict';var emlformat=require(_0x9f7c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9f7c('0x1'));var jsonpatch=require(_0x9f7c('0x2'));var rp=require(_0x9f7c('0x3'));var moment=require(_0x9f7c('0x4'));var BPromise=require(_0x9f7c('0x5'));var Mustache=require(_0x9f7c('0x6'));var util=require(_0x9f7c('0x7'));var path=require(_0x9f7c('0x8'));var sox=require(_0x9f7c('0x9'));var csv=require(_0x9f7c('0xa'));var ejs=require(_0x9f7c('0xb'));var fs=require('fs');var fs_extra=require(_0x9f7c('0xc'));var _=require(_0x9f7c('0xd'));var squel=require(_0x9f7c('0xe'));var crypto=require(_0x9f7c('0xf'));var jsforce=require(_0x9f7c('0x10'));var deskjs=require(_0x9f7c('0x11'));var toCsv=require(_0x9f7c('0xa'));var querystring=require('querystring');var Papa=require(_0x9f7c('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9f7c('0x13'));var as=require(_0x9f7c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9f7c('0x15'))(_0x9f7c('0x16'));var utils=require('../../config/utils');var config=require(_0x9f7c('0x17'));var licenseUtil=require(_0x9f7c('0x18'));var db=require(_0x9f7c('0x19'))['db'];function respondWithStatusCode(_0x5b1735,_0x44e1cf){_0x44e1cf=_0x44e1cf||0xcc;return function(_0x3a544e){if(_0x3a544e){return _0x5b1735[_0x9f7c('0x1a')](_0x44e1cf);}return _0x5b1735[_0x9f7c('0x1b')](_0x44e1cf)[_0x9f7c('0x1c')]();};}function respondWithResult(_0x29702d,_0x5a039b){_0x5a039b=_0x5a039b||0xc8;return function(_0x4895b1){if(_0x4895b1){return _0x29702d[_0x9f7c('0x1b')](_0x5a039b)[_0x9f7c('0x1d')](_0x4895b1);}};}function respondWithFilteredResult(_0x3b22a0,_0x5e60b4){return function(_0x1269df){if(_0x1269df){var _0x52f125=typeof _0x5e60b4['offset']===_0x9f7c('0x1e')&&typeof _0x5e60b4[_0x9f7c('0x1f')]===_0x9f7c('0x1e');var _0x50feec=_0x1269df[_0x9f7c('0x20')];var _0x3dc332=_0x52f125?0x0:_0x5e60b4[_0x9f7c('0x21')];var _0x22b55b=_0x52f125?_0x1269df[_0x9f7c('0x20')]:_0x5e60b4[_0x9f7c('0x21')]+_0x5e60b4[_0x9f7c('0x1f')];var _0x5a8a51;if(_0x22b55b>=_0x50feec){_0x22b55b=_0x50feec;_0x5a8a51=0xc8;}else{_0x5a8a51=0xce;}_0x3b22a0[_0x9f7c('0x1b')](_0x5a8a51);return _0x3b22a0[_0x9f7c('0x22')](_0x9f7c('0x23'),_0x3dc332+'-'+_0x22b55b+'/'+_0x50feec)[_0x9f7c('0x1d')](_0x1269df);}return null;};}function patchUpdates(_0x6b9186){return function(_0x457a63){try{jsonpatch[_0x9f7c('0x24')](_0x457a63,_0x6b9186,!![]);}catch(_0x24e286){return BPromise['reject'](_0x24e286);}return _0x457a63[_0x9f7c('0x25')]();};}function saveUpdates(_0x115eb3,_0x246ec9){return function(_0x32539c){if(_0x32539c){return _0x32539c[_0x9f7c('0x26')](_0x115eb3)['then'](function(_0x591653){return _0x591653;});}return null;};}function removeEntity(_0xa81532,_0x3243a8){return function(_0x39d610){if(_0x39d610){return _0x39d610['destroy']()[_0x9f7c('0x27')](function(){_0xa81532[_0x9f7c('0x1b')](0xcc)[_0x9f7c('0x1c')]();});}};}function handleEntityNotFound(_0x514543,_0x16b47b){return function(_0x2e0072){if(!_0x2e0072){_0x514543[_0x9f7c('0x1a')](0x194);}return _0x2e0072;};}function handleError(_0x144ae0,_0x172c3e){_0x172c3e=_0x172c3e||0x1f4;return function(_0x2b098a){logger['error'](_0x2b098a[_0x9f7c('0x28')]);if(_0x2b098a[_0x9f7c('0x29')]){delete _0x2b098a[_0x9f7c('0x29')];}_0x144ae0[_0x9f7c('0x1b')](_0x172c3e)[_0x9f7c('0x2a')](_0x2b098a);};}exports['index']=function(_0xf78ea7,_0x1f9fe0){var _0x2a15a0={},_0x22bbd6={},_0x17423f={'count':0x0,'rows':[]};var _0x20baa0=_[_0x9f7c('0x2b')](db[_0x9f7c('0x2c')]['rawAttributes'],function(_0x5cf694){return{'name':_0x5cf694['fieldName'],'type':_0x5cf694[_0x9f7c('0x2d')][_0x9f7c('0x2e')]};});_0x22bbd6[_0x9f7c('0x2f')]=_['map'](_0x20baa0,'name');_0x22bbd6[_0x9f7c('0x30')]=_['keys'](_0xf78ea7[_0x9f7c('0x30')]);_0x22bbd6[_0x9f7c('0x31')]=_[_0x9f7c('0x32')](_0x22bbd6[_0x9f7c('0x2f')],_0x22bbd6[_0x9f7c('0x30')]);_0x2a15a0[_0x9f7c('0x33')]=_['intersection'](_0x22bbd6[_0x9f7c('0x2f')],qs[_0x9f7c('0x34')](_0xf78ea7['query'][_0x9f7c('0x34')]));_0x2a15a0['attributes']=_0x2a15a0[_0x9f7c('0x33')][_0x9f7c('0x35')]?_0x2a15a0[_0x9f7c('0x33')]:_0x22bbd6[_0x9f7c('0x2f')];if(!_0xf78ea7[_0x9f7c('0x30')][_0x9f7c('0x36')](_0x9f7c('0x37'))){_0x2a15a0[_0x9f7c('0x1f')]=qs['limit'](_0xf78ea7[_0x9f7c('0x30')][_0x9f7c('0x1f')]);_0x2a15a0[_0x9f7c('0x21')]=qs[_0x9f7c('0x21')](_0xf78ea7['query']['offset']);}_0x2a15a0['order']=qs['sort'](_0xf78ea7[_0x9f7c('0x30')]['sort']);_0x2a15a0[_0x9f7c('0x38')]=qs[_0x9f7c('0x31')](_[_0x9f7c('0x39')](_0xf78ea7[_0x9f7c('0x30')],_0x22bbd6[_0x9f7c('0x31')]),_0x20baa0);if(_0xf78ea7[_0x9f7c('0x30')]['filter']){_0x2a15a0['where']=_[_0x9f7c('0x3a')](_0x2a15a0['where'],{'$or':_[_0x9f7c('0x2b')](_0x20baa0,function(_0x452198){if(_0x452198[_0x9f7c('0x2d')]!==_0x9f7c('0x3b')){var _0x16ae1b={};_0x16ae1b[_0x452198[_0x9f7c('0x29')]]={'$like':'%'+_0xf78ea7['query'][_0x9f7c('0x3c')]+'%'};return _0x16ae1b;}})});}_0x2a15a0=_[_0x9f7c('0x3a')]({},_0x2a15a0,_0xf78ea7['options']);var _0x2442d3={'where':_0x2a15a0['where']};return db[_0x9f7c('0x2c')]['count'](_0x2442d3)[_0x9f7c('0x27')](function(_0xdaef16){_0x17423f['count']=_0xdaef16;if(_0xf78ea7['query']['includeAll']){_0x2a15a0[_0x9f7c('0x3d')]=[{'all':!![]}];}return db[_0x9f7c('0x2c')][_0x9f7c('0x3e')](_0x2a15a0);})[_0x9f7c('0x27')](function(_0x1f99f3){_0x17423f[_0x9f7c('0x3f')]=_0x1f99f3;return _0x17423f;})[_0x9f7c('0x27')](respondWithFilteredResult(_0x1f9fe0,_0x2a15a0))[_0x9f7c('0x40')](handleError(_0x1f9fe0,null));};exports[_0x9f7c('0x41')]=function(_0x4e6e61,_0x2e8613){var _0x5570c5={'raw':!![],'where':{'id':_0x4e6e61[_0x9f7c('0x42')]['id']}},_0x4fa9ee={};_0x4fa9ee[_0x9f7c('0x2f')]=_[_0x9f7c('0x43')](db['OpenchannelQueueReport']['rawAttributes']);_0x4fa9ee[_0x9f7c('0x30')]=_[_0x9f7c('0x43')](_0x4e6e61[_0x9f7c('0x30')]);_0x4fa9ee[_0x9f7c('0x31')]=_[_0x9f7c('0x32')](_0x4fa9ee[_0x9f7c('0x2f')],_0x4fa9ee['query']);_0x5570c5[_0x9f7c('0x33')]=_[_0x9f7c('0x32')](_0x4fa9ee['model'],qs[_0x9f7c('0x34')](_0x4e6e61[_0x9f7c('0x30')][_0x9f7c('0x34')]));_0x5570c5[_0x9f7c('0x33')]=_0x5570c5[_0x9f7c('0x33')][_0x9f7c('0x35')]?_0x5570c5[_0x9f7c('0x33')]:_0x4fa9ee[_0x9f7c('0x2f')];if(_0x4e6e61[_0x9f7c('0x30')][_0x9f7c('0x44')]){_0x5570c5[_0x9f7c('0x3d')]=[{'all':!![]}];}_0x5570c5=_[_0x9f7c('0x3a')]({},_0x5570c5,_0x4e6e61[_0x9f7c('0x45')]);return db['OpenchannelQueueReport'][_0x9f7c('0x46')](_0x5570c5)[_0x9f7c('0x27')](handleEntityNotFound(_0x2e8613,null))[_0x9f7c('0x27')](respondWithResult(_0x2e8613,null))[_0x9f7c('0x40')](handleError(_0x2e8613,null));};exports['create']=function(_0x5104b9,_0x267654){return db['OpenchannelQueueReport'][_0x9f7c('0x47')](_0x5104b9['body'],{})[_0x9f7c('0x27')](respondWithResult(_0x267654,0xc9))[_0x9f7c('0x40')](handleError(_0x267654,null));};exports[_0x9f7c('0x26')]=function(_0xce7623,_0x5c3366){if(_0xce7623[_0x9f7c('0x48')]['id']){delete _0xce7623['body']['id'];}return db[_0x9f7c('0x2c')][_0x9f7c('0x46')]({'where':{'id':_0xce7623[_0x9f7c('0x42')]['id']}})[_0x9f7c('0x27')](handleEntityNotFound(_0x5c3366,null))[_0x9f7c('0x27')](saveUpdates(_0xce7623[_0x9f7c('0x48')],null))[_0x9f7c('0x27')](respondWithResult(_0x5c3366,null))[_0x9f7c('0x40')](handleError(_0x5c3366,null));};exports[_0x9f7c('0x49')]=function(_0x198c97,_0x2fb188){return db[_0x9f7c('0x2c')]['find']({'where':{'id':_0x198c97['params']['id']}})[_0x9f7c('0x27')](handleEntityNotFound(_0x2fb188,null))[_0x9f7c('0x27')](removeEntity(_0x2fb188,null))[_0x9f7c('0x40')](handleError(_0x2fb188,null));};exports[_0x9f7c('0x4a')]=function(_0x17272d,_0x2735f1){return db[_0x9f7c('0x2c')][_0x9f7c('0x4a')]()['then'](respondWithResult(_0x2735f1,null))[_0x9f7c('0x40')](handleError(_0x2735f1,null));};
\ No newline at end of file
+var _0x707d=['../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','stack','name','status','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','where','includeAll','include','findAll','rows','params','catch','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch'];(function(_0x323f0c,_0x4466ea){var _0x58fda7=function(_0x5e08bf){while(--_0x5e08bf){_0x323f0c['push'](_0x323f0c['shift']());}};_0x58fda7(++_0x4466ea);}(_0x707d,0x1ba));var _0xd707=function(_0x2055e0,_0xa8dbf6){_0x2055e0=_0x2055e0-0x0;var _0x2327e3=_0x707d[_0x2055e0];return _0x2327e3;};'use strict';var emlformat=require(_0xd707('0x0'));var rimraf=require(_0xd707('0x1'));var zipdir=require(_0xd707('0x2'));var jsonpatch=require(_0xd707('0x3'));var rp=require(_0xd707('0x4'));var moment=require(_0xd707('0x5'));var BPromise=require(_0xd707('0x6'));var Mustache=require(_0xd707('0x7'));var util=require(_0xd707('0x8'));var path=require(_0xd707('0x9'));var sox=require(_0xd707('0xa'));var csv=require(_0xd707('0xb'));var ejs=require(_0xd707('0xc'));var fs=require('fs');var fs_extra=require(_0xd707('0xd'));var _=require('lodash');var squel=require(_0xd707('0xe'));var crypto=require(_0xd707('0xf'));var jsforce=require(_0xd707('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd707('0x11'));var Papa=require('papaparse');var Redis=require(_0xd707('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd707('0x13'));var hardwareService=require(_0xd707('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd707('0x15'));var config=require(_0xd707('0x16'));var licenseUtil=require(_0xd707('0x17'));var db=require(_0xd707('0x18'))['db'];function respondWithStatusCode(_0x24919f,_0x40d900){_0x40d900=_0x40d900||0xcc;return function(_0x3bf1cb){if(_0x3bf1cb){return _0x24919f[_0xd707('0x19')](_0x40d900);}return _0x24919f['status'](_0x40d900)[_0xd707('0x1a')]();};}function respondWithResult(_0x385675,_0x4f00f6){_0x4f00f6=_0x4f00f6||0xc8;return function(_0x38a680){if(_0x38a680){return _0x385675['status'](_0x4f00f6)[_0xd707('0x1b')](_0x38a680);}};}function respondWithFilteredResult(_0x4d65a0,_0x12ff52){return function(_0x1cfd40){if(_0x1cfd40){var _0x1588c4=typeof _0x12ff52[_0xd707('0x1c')]===_0xd707('0x1d')&&typeof _0x12ff52[_0xd707('0x1e')]==='undefined';var _0x15ca04=_0x1cfd40[_0xd707('0x1f')];var _0xf7c4f1=_0x1588c4?0x0:_0x12ff52[_0xd707('0x1c')];var _0x248bb8=_0x1588c4?_0x1cfd40[_0xd707('0x1f')]:_0x12ff52['offset']+_0x12ff52[_0xd707('0x1e')];var _0x5bd328;if(_0x248bb8>=_0x15ca04){_0x248bb8=_0x15ca04;_0x5bd328=0xc8;}else{_0x5bd328=0xce;}_0x4d65a0['status'](_0x5bd328);return _0x4d65a0[_0xd707('0x20')](_0xd707('0x21'),_0xf7c4f1+'-'+_0x248bb8+'/'+_0x15ca04)[_0xd707('0x1b')](_0x1cfd40);}return null;};}function patchUpdates(_0x2c1956){return function(_0x39cda9){try{jsonpatch[_0xd707('0x22')](_0x39cda9,_0x2c1956,!![]);}catch(_0x24cd34){return BPromise['reject'](_0x24cd34);}return _0x39cda9[_0xd707('0x23')]();};}function saveUpdates(_0x52d7af,_0x2e4157){return function(_0x4853a0){if(_0x4853a0){return _0x4853a0[_0xd707('0x24')](_0x52d7af)[_0xd707('0x25')](function(_0x1e4554){return _0x1e4554;});}return null;};}function removeEntity(_0x399f14,_0x53b199){return function(_0x17dc83){if(_0x17dc83){return _0x17dc83[_0xd707('0x26')]()[_0xd707('0x25')](function(){_0x399f14['status'](0xcc)[_0xd707('0x1a')]();});}};}function handleEntityNotFound(_0x20c0a9,_0x1c9e23){return function(_0x2c7c07){if(!_0x2c7c07){_0x20c0a9[_0xd707('0x19')](0x194);}return _0x2c7c07;};}function handleError(_0x42db17,_0x573b46){_0x573b46=_0x573b46||0x1f4;return function(_0x2bcec2){logger['error'](_0x2bcec2[_0xd707('0x27')]);if(_0x2bcec2[_0xd707('0x28')]){delete _0x2bcec2[_0xd707('0x28')];}_0x42db17[_0xd707('0x29')](_0x573b46)['send'](_0x2bcec2);};}exports[_0xd707('0x2a')]=function(_0x2feafe,_0x1d464b){var _0x55dbcf={},_0x452665={},_0x147ddc={'count':0x0,'rows':[]};var _0x4c2194=_[_0xd707('0x2b')](db[_0xd707('0x2c')][_0xd707('0x2d')],function(_0x42f87a){return{'name':_0x42f87a[_0xd707('0x2e')],'type':_0x42f87a[_0xd707('0x2f')][_0xd707('0x30')]};});_0x452665[_0xd707('0x31')]=_[_0xd707('0x2b')](_0x4c2194,_0xd707('0x28'));_0x452665['query']=_[_0xd707('0x32')](_0x2feafe[_0xd707('0x33')]);_0x452665[_0xd707('0x34')]=_[_0xd707('0x35')](_0x452665[_0xd707('0x31')],_0x452665['query']);_0x55dbcf[_0xd707('0x36')]=_[_0xd707('0x35')](_0x452665[_0xd707('0x31')],qs[_0xd707('0x37')](_0x2feafe[_0xd707('0x33')]['fields']));_0x55dbcf['attributes']=_0x55dbcf[_0xd707('0x36')][_0xd707('0x38')]?_0x55dbcf[_0xd707('0x36')]:_0x452665[_0xd707('0x31')];if(!_0x2feafe['query'][_0xd707('0x39')](_0xd707('0x3a'))){_0x55dbcf['limit']=qs[_0xd707('0x1e')](_0x2feafe[_0xd707('0x33')]['limit']);_0x55dbcf['offset']=qs['offset'](_0x2feafe['query']['offset']);}_0x55dbcf[_0xd707('0x3b')]=qs[_0xd707('0x3c')](_0x2feafe[_0xd707('0x33')][_0xd707('0x3c')]);_0x55dbcf['where']=qs['filters'](_[_0xd707('0x3d')](_0x2feafe[_0xd707('0x33')],_0x452665[_0xd707('0x34')]),_0x4c2194);if(_0x2feafe[_0xd707('0x33')][_0xd707('0x3e')]){_0x55dbcf['where']=_[_0xd707('0x3f')](_0x55dbcf['where'],{'$or':_[_0xd707('0x2b')](_0x4c2194,function(_0x1bb1e5){if(_0x1bb1e5[_0xd707('0x2f')]!==_0xd707('0x40')){var _0x598745={};_0x598745[_0x1bb1e5[_0xd707('0x28')]]={'$like':'%'+_0x2feafe[_0xd707('0x33')][_0xd707('0x3e')]+'%'};return _0x598745;}})});}_0x55dbcf=_[_0xd707('0x3f')]({},_0x55dbcf,_0x2feafe[_0xd707('0x41')]);var _0x85d3e1={'where':_0x55dbcf[_0xd707('0x42')]};return db[_0xd707('0x2c')][_0xd707('0x1f')](_0x85d3e1)[_0xd707('0x25')](function(_0x491a01){_0x147ddc[_0xd707('0x1f')]=_0x491a01;if(_0x2feafe[_0xd707('0x33')][_0xd707('0x43')]){_0x55dbcf[_0xd707('0x44')]=[{'all':!![]}];}return db[_0xd707('0x2c')][_0xd707('0x45')](_0x55dbcf);})['then'](function(_0x188ddb){_0x147ddc[_0xd707('0x46')]=_0x188ddb;return _0x147ddc;})[_0xd707('0x25')](respondWithFilteredResult(_0x1d464b,_0x55dbcf))['catch'](handleError(_0x1d464b,null));};exports['show']=function(_0x4fbaf1,_0x3e7de0){var _0x3de606={'raw':!![],'where':{'id':_0x4fbaf1[_0xd707('0x47')]['id']}},_0x4fca30={};_0x4fca30[_0xd707('0x31')]=_[_0xd707('0x32')](db[_0xd707('0x2c')][_0xd707('0x2d')]);_0x4fca30[_0xd707('0x33')]=_['keys'](_0x4fbaf1['query']);_0x4fca30[_0xd707('0x34')]=_[_0xd707('0x35')](_0x4fca30[_0xd707('0x31')],_0x4fca30[_0xd707('0x33')]);_0x3de606[_0xd707('0x36')]=_[_0xd707('0x35')](_0x4fca30['model'],qs['fields'](_0x4fbaf1[_0xd707('0x33')]['fields']));_0x3de606[_0xd707('0x36')]=_0x3de606[_0xd707('0x36')][_0xd707('0x38')]?_0x3de606[_0xd707('0x36')]:_0x4fca30[_0xd707('0x31')];if(_0x4fbaf1[_0xd707('0x33')]['includeAll']){_0x3de606[_0xd707('0x44')]=[{'all':!![]}];}_0x3de606=_['merge']({},_0x3de606,_0x4fbaf1[_0xd707('0x41')]);return db[_0xd707('0x2c')]['find'](_0x3de606)[_0xd707('0x25')](handleEntityNotFound(_0x3e7de0,null))[_0xd707('0x25')](respondWithResult(_0x3e7de0,null))[_0xd707('0x48')](handleError(_0x3e7de0,null));};exports[_0xd707('0x49')]=function(_0x5b61f,_0x9dd506){return db[_0xd707('0x2c')][_0xd707('0x49')](_0x5b61f[_0xd707('0x4a')],{})['then'](respondWithResult(_0x9dd506,0xc9))[_0xd707('0x48')](handleError(_0x9dd506,null));};exports[_0xd707('0x24')]=function(_0x1e4548,_0x5c6574){if(_0x1e4548['body']['id']){delete _0x1e4548[_0xd707('0x4a')]['id'];}return db[_0xd707('0x2c')][_0xd707('0x4b')]({'where':{'id':_0x1e4548['params']['id']}})['then'](handleEntityNotFound(_0x5c6574,null))['then'](saveUpdates(_0x1e4548[_0xd707('0x4a')],null))['then'](respondWithResult(_0x5c6574,null))[_0xd707('0x48')](handleError(_0x5c6574,null));};exports[_0xd707('0x26')]=function(_0x22220c,_0x40b195){return db[_0xd707('0x2c')][_0xd707('0x4b')]({'where':{'id':_0x22220c[_0xd707('0x47')]['id']}})[_0xd707('0x25')](handleEntityNotFound(_0x40b195,null))['then'](removeEntity(_0x40b195,null))['catch'](handleError(_0x40b195,null));};exports[_0xd707('0x4c')]=function(_0x377a6d,_0x2d09cc){return db[_0xd707('0x2c')][_0xd707('0x4c')]()[_0xd707('0x25')](respondWithResult(_0x2d09cc,null))['catch'](handleError(_0x2d09cc,null));};
\ No newline at end of file
index d0425df..eb9e17f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x229cd3,_0x5f2524){var _0x3d454f=function(_0x201f24){while(--_0x201f24){_0x229cd3['push'](_0x229cd3['shift']());}};_0x3d454f(++_0x5f2524);}(_0x1261,0x144));var _0x1126=function(_0x9e76d,_0x44e7a0){_0x9e76d=_0x9e76d-0x0;var _0x320985=_0x1261[_0x9e76d];return _0x320985;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x462d69,_0x35720b){var _0x52956e=function(_0x10060d){while(--_0x10060d){_0x462d69['push'](_0x462d69['shift']());}};_0x52956e(++_0x35720b);}(_0x7a54,0x106));var _0x47a5=function(_0x1d767e,_0x2a18c8){_0x1d767e=_0x1d767e-0x0;var _0x238083=_0x7a54[_0x1d767e];return _0x238083;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e89856d..62828b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['body','raw','where','attributes','limit','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','UpdateOpenchannelQueueReport','update'];(function(_0x1463b9,_0x5ac3ae){var _0x13a19b=function(_0xdd0f49){while(--_0xdd0f49){_0x1463b9['push'](_0x1463b9['shift']());}};_0x13a19b(++_0x5ac3ae);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x50ef57,_0x438949){_0x50ef57=_0x50ef57-0x0;var _0x247d9a=_0xfcbb[_0x50ef57];return _0x247d9a;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var moment=require(_0xbfcb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbfcb('0x3'));var db=require(_0xbfcb('0x4'))['db'];var utils=require(_0xbfcb('0x5'));var logger=require(_0xbfcb('0x6'))(_0xbfcb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbfcb('0x8')][_0xbfcb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8d4e6a,_0x2df839,_0x288ee5){return new BPromise(function(_0x2f875c,_0x49717b){return client['request'](_0x8d4e6a,_0x288ee5)[_0xbfcb('0xa')](function(_0x331173){logger[_0xbfcb('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x2df839,_0xbfcb('0xc'));logger[_0xbfcb('0xd')](_0xbfcb('0xe'),_0x2df839,_0xbfcb('0xc'),JSON[_0xbfcb('0xf')](_0x331173));if(_0x331173[_0xbfcb('0x10')]){if(_0x331173['error'][_0xbfcb('0x11')]===0x1f4){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')]['message']);return _0x49717b(_0x331173[_0xbfcb('0x10')]['message']);}logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);return _0x2f875c(_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);}else{logger[_0xbfcb('0xb')](_0xbfcb('0x12'),_0x2df839,_0xbfcb('0xc'));_0x2f875c(_0x331173[_0xbfcb('0x14')][_0xbfcb('0x13')]);}})[_0xbfcb('0x15')](function(_0x26f335){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x26f335);_0x49717b(_0x26f335);});});}exports[_0xbfcb('0x16')]=function(_0xba1d6){var _0x38689e=this;return new Promise(function(_0x3404aa,_0x46b8d2){return db[_0xbfcb('0x17')][_0xbfcb('0x18')](_0xba1d6['body'],{'raw':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xbfcb('0xa')](function(_0x1a7225){logger['info']('CreateOpenchannelQueueReport',_0xba1d6);logger[_0xbfcb('0xd')](_0xbfcb('0x16'),_0xba1d6,JSON[_0xbfcb('0xf')](_0x1a7225));_0x3404aa(_0x1a7225);})[_0xbfcb('0x15')](function(_0x1c5924){logger['error'](_0xbfcb('0x16'),_0x1c5924[_0xbfcb('0x13')],_0xba1d6);_0x46b8d2(_0x38689e[_0xbfcb('0x10')](0x1f4,_0x1c5924[_0xbfcb('0x13')]));});});};exports[_0xbfcb('0x1a')]=function(_0x19616c){var _0x69c8e9=this;return new Promise(function(_0x14e43c,_0x11f6f7){return db[_0xbfcb('0x17')][_0xbfcb('0x1b')](_0x19616c[_0xbfcb('0x1c')],{'raw':_0x19616c[_0xbfcb('0x19')]?_0x19616c[_0xbfcb('0x19')][_0xbfcb('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19616c[_0xbfcb('0x19')]?_0x19616c['options'][_0xbfcb('0x1e')]||null:null,'attributes':_0x19616c[_0xbfcb('0x19')]?_0x19616c['options'][_0xbfcb('0x1f')]||null:null,'limit':_0x19616c[_0xbfcb('0x19')]?_0x19616c[_0xbfcb('0x19')][_0xbfcb('0x20')]||null:null})[_0xbfcb('0xa')](function(_0x3542e9){logger[_0xbfcb('0xb')](_0xbfcb('0x1a'),_0x19616c);logger[_0xbfcb('0xd')](_0xbfcb('0x1a'),_0x19616c,JSON['stringify'](_0x3542e9));_0x14e43c(_0x3542e9);})[_0xbfcb('0x15')](function(_0x3aa3cd){logger[_0xbfcb('0x10')](_0xbfcb('0x1a'),_0x3aa3cd[_0xbfcb('0x13')],_0x19616c);_0x11f6f7(_0x69c8e9[_0xbfcb('0x10')](0x1f4,_0x3aa3cd[_0xbfcb('0x13')]));});});};
\ No newline at end of file
+var _0x1bc6=['catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','stringify','UpdateOpenchannelQueueReport','update','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','message','OpenchannelQueueReport,\x20%s,\x20%s','result'];(function(_0x564f70,_0x168548){var _0x33efd3=function(_0x20e490){while(--_0x20e490){_0x564f70['push'](_0x564f70['shift']());}};_0x33efd3(++_0x168548);}(_0x1bc6,0x94));var _0x61bc=function(_0x2d46a1,_0x3d49bf){_0x2d46a1=_0x2d46a1-0x0;var _0x26f267=_0x1bc6[_0x2d46a1];return _0x26f267;};'use strict';var _=require(_0x61bc('0x0'));var util=require(_0x61bc('0x1'));var moment=require(_0x61bc('0x2'));var BPromise=require(_0x61bc('0x3'));var rs=require(_0x61bc('0x4'));var fs=require('fs');var Redis=require(_0x61bc('0x5'));var db=require(_0x61bc('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x61bc('0x7'))(_0x61bc('0x8'));var config=require(_0x61bc('0x9'));var jayson=require(_0x61bc('0xa'));var client=jayson[_0x61bc('0xb')][_0x61bc('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x410656,_0x1b29e3,_0x151ef4){return new BPromise(function(_0x5ebb87,_0x339305){return client['request'](_0x410656,_0x151ef4)[_0x61bc('0xd')](function(_0x502dc0){logger[_0x61bc('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1b29e3,_0x61bc('0xf'));logger[_0x61bc('0x10')](_0x61bc('0x11'),_0x1b29e3,'request\x20sent',JSON['stringify'](_0x502dc0));if(_0x502dc0['error']){if(_0x502dc0['error']['code']===0x1f4){logger[_0x61bc('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x1b29e3,_0x502dc0[_0x61bc('0x12')][_0x61bc('0x13')]);return _0x339305(_0x502dc0['error']['message']);}logger['error'](_0x61bc('0x14'),_0x1b29e3,_0x502dc0[_0x61bc('0x12')]['message']);return _0x5ebb87(_0x502dc0[_0x61bc('0x12')][_0x61bc('0x13')]);}else{logger[_0x61bc('0xe')](_0x61bc('0x14'),_0x1b29e3,_0x61bc('0xf'));_0x5ebb87(_0x502dc0[_0x61bc('0x15')]['message']);}})[_0x61bc('0x16')](function(_0x21b974){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x1b29e3,_0x21b974);_0x339305(_0x21b974);});});}exports[_0x61bc('0x17')]=function(_0x2a6f35){var _0x96cd3=this;return new Promise(function(_0x4ca1c3,_0x457702){return db[_0x61bc('0x18')][_0x61bc('0x19')](_0x2a6f35[_0x61bc('0x1a')],{'raw':_0x2a6f35['options']?_0x2a6f35[_0x61bc('0x1b')][_0x61bc('0x1c')]===undefined?!![]:![]:!![]})[_0x61bc('0xd')](function(_0x144b07){logger['info'](_0x61bc('0x17'),_0x2a6f35);logger[_0x61bc('0x10')](_0x61bc('0x17'),_0x2a6f35,JSON[_0x61bc('0x1d')](_0x144b07));_0x4ca1c3(_0x144b07);})[_0x61bc('0x16')](function(_0x141db2){logger[_0x61bc('0x12')]('CreateOpenchannelQueueReport',_0x141db2[_0x61bc('0x13')],_0x2a6f35);_0x457702(_0x96cd3[_0x61bc('0x12')](0x1f4,_0x141db2[_0x61bc('0x13')]));});});};exports[_0x61bc('0x1e')]=function(_0x270f1c){var _0x567632=this;return new Promise(function(_0xc25ed5,_0x40cb55){return db[_0x61bc('0x18')][_0x61bc('0x1f')](_0x270f1c[_0x61bc('0x1a')],{'raw':_0x270f1c['options']?_0x270f1c['options'][_0x61bc('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x270f1c['options']?_0x270f1c[_0x61bc('0x1b')][_0x61bc('0x20')]||null:null,'attributes':_0x270f1c[_0x61bc('0x1b')]?_0x270f1c[_0x61bc('0x1b')]['attributes']||null:null,'limit':_0x270f1c[_0x61bc('0x1b')]?_0x270f1c[_0x61bc('0x1b')][_0x61bc('0x21')]||null:null})[_0x61bc('0xd')](function(_0x364600){logger[_0x61bc('0xe')](_0x61bc('0x1e'),_0x270f1c);logger[_0x61bc('0x10')](_0x61bc('0x1e'),_0x270f1c,JSON[_0x61bc('0x1d')](_0x364600));_0xc25ed5(_0x364600);})['catch'](function(_0x173e7b){logger[_0x61bc('0x12')](_0x61bc('0x1e'),_0x173e7b[_0x61bc('0x13')],_0x270f1c);_0x40cb55(_0x567632[_0x61bc('0x12')](0x1f4,_0x173e7b[_0x61bc('0x13')]));});});};
\ No newline at end of file
index 6864c88..b0eeac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4617=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','/describe','isAuthenticated','describe','/:id','show','create','put','update','delete','destroy','exports','multer'];(function(_0x466578,_0x2f5593){var _0x4ad933=function(_0xefea05){while(--_0xefea05){_0x466578['push'](_0x466578['shift']());}};_0x4ad933(++_0x2f5593);}(_0x4617,0x133));var _0x7461=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0x4617[_0x19b3f9];return _0x18c3f6;};'use strict';var multer=require(_0x7461('0x0'));var util=require(_0x7461('0x1'));var path=require(_0x7461('0x2'));var timeout=require('connect-timeout');var express=require(_0x7461('0x3'));var router=express[_0x7461('0x4')]();var fs_extra=require(_0x7461('0x5'));var auth=require(_0x7461('0x6'));var interaction=require(_0x7461('0x7'));var config=require(_0x7461('0x8'));var controller=require(_0x7461('0x9'));router[_0x7461('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7461('0xa')](_0x7461('0xb'),auth[_0x7461('0xc')](),controller[_0x7461('0xd')]);router[_0x7461('0xa')](_0x7461('0xe'),auth[_0x7461('0xc')](),controller[_0x7461('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7461('0x10')]);router[_0x7461('0x11')]('/:id',auth[_0x7461('0xc')](),controller[_0x7461('0x12')]);router[_0x7461('0x13')](_0x7461('0xe'),auth[_0x7461('0xc')](),controller[_0x7461('0x14')]);module[_0x7461('0x15')]=router;
\ No newline at end of file
+var _0x574c=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','describe','create','/:id','update','delete','exports'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x574c,0x1c8));var _0xc574=function(_0x2641c3,_0x3511a2){_0x2641c3=_0x2641c3-0x0;var _0xef0386=_0x574c[_0x2641c3];return _0xef0386;};'use strict';var multer=require(_0xc574('0x0'));var util=require('util');var path=require(_0xc574('0x1'));var timeout=require(_0xc574('0x2'));var express=require(_0xc574('0x3'));var router=express[_0xc574('0x4')]();var fs_extra=require(_0xc574('0x5'));var auth=require(_0xc574('0x6'));var interaction=require(_0xc574('0x7'));var config=require(_0xc574('0x8'));var controller=require(_0xc574('0x9'));router[_0xc574('0xa')]('/',auth[_0xc574('0xb')](),controller[_0xc574('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xc574('0xd')]);router[_0xc574('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xc574('0xb')](),controller[_0xc574('0xe')]);router['put'](_0xc574('0xf'),auth[_0xc574('0xb')](),controller[_0xc574('0x10')]);router[_0xc574('0x11')](_0xc574('0xf'),auth[_0xc574('0xb')](),controller['destroy']);module[_0xc574('0x12')]=router;
\ No newline at end of file
index cd83401..a4181f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x4c1ec2,_0x4f42b7){var _0x3f6f1c=function(_0xc82652){while(--_0xc82652){_0x4c1ec2['push'](_0x4c1ec2['shift']());}};_0x3f6f1c(++_0x4f42b7);}(_0xb43b,0x1b2));var _0xbb43=function(_0x5c6890,_0x39a8be){_0x5c6890=_0x5c6890-0x0;var _0x129514=_0xb43b[_0x5c6890];return _0x129514;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x2b012e,_0x204827){var _0x1d9e14=function(_0xc72a7e){while(--_0xc72a7e){_0x2b012e['push'](_0x2b012e['shift']());}};_0x1d9e14(++_0x204827);}(_0xf4eb,0xec));var _0xbf4e=function(_0x5d46e0,_0x42b8d3){_0x5d46e0=_0x5d46e0-0x0;var _0x279320=_0xf4eb[_0x5d46e0];return _0x279320;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
index 33167a0..6d18a62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x944f=['filter','merge','VIRTUAL','options','OpenchannelTransferReport','includeAll','include','rows','params','keys','rawAttributes','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','send','map','fieldName','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where'];(function(_0x150598,_0xde21f7){var _0x4840e2=function(_0x143af3){while(--_0x143af3){_0x150598['push'](_0x150598['shift']());}};_0x4840e2(++_0xde21f7);}(_0x944f,0x1c0));var _0xf944=function(_0x344357,_0x484651){_0x344357=_0x344357-0x0;var _0x1aaa49=_0x944f[_0x344357];return _0x1aaa49;};'use strict';var emlformat=require(_0xf944('0x0'));var rimraf=require(_0xf944('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf944('0x2'));var rp=require('request-promise');var moment=require(_0xf944('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf944('0x4'));var path=require(_0xf944('0x5'));var sox=require(_0xf944('0x6'));var csv=require(_0xf944('0x7'));var ejs=require(_0xf944('0x8'));var fs=require('fs');var fs_extra=require(_0xf944('0x9'));var _=require(_0xf944('0xa'));var squel=require(_0xf944('0xb'));var crypto=require(_0xf944('0xc'));var jsforce=require(_0xf944('0xd'));var deskjs=require(_0xf944('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf944('0xf'));var Papa=require(_0xf944('0x10'));var Redis=require('ioredis');var authService=require(_0xf944('0x11'));var qs=require(_0xf944('0x12'));var as=require(_0xf944('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xf944('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf944('0x15'));var db=require(_0xf944('0x16'))['db'];function respondWithStatusCode(_0x20887c,_0x459740){_0x459740=_0x459740||0xcc;return function(_0x2398fe){if(_0x2398fe){return _0x20887c[_0xf944('0x17')](_0x459740);}return _0x20887c[_0xf944('0x18')](_0x459740)['end']();};}function respondWithResult(_0x5b2b18,_0x329d1b){_0x329d1b=_0x329d1b||0xc8;return function(_0x25fed9){if(_0x25fed9){return _0x5b2b18[_0xf944('0x18')](_0x329d1b)[_0xf944('0x19')](_0x25fed9);}};}function respondWithFilteredResult(_0x57807e,_0x2d117f){return function(_0x356c3a){if(_0x356c3a){var _0x203a81=typeof _0x2d117f['offset']==='undefined'&&typeof _0x2d117f['limit']===_0xf944('0x1a');var _0x57010a=_0x356c3a[_0xf944('0x1b')];var _0x176bc3=_0x203a81?0x0:_0x2d117f[_0xf944('0x1c')];var _0xc2cb75=_0x203a81?_0x356c3a[_0xf944('0x1b')]:_0x2d117f[_0xf944('0x1c')]+_0x2d117f[_0xf944('0x1d')];var _0x564031;if(_0xc2cb75>=_0x57010a){_0xc2cb75=_0x57010a;_0x564031=0xc8;}else{_0x564031=0xce;}_0x57807e[_0xf944('0x18')](_0x564031);return _0x57807e[_0xf944('0x1e')](_0xf944('0x1f'),_0x176bc3+'-'+_0xc2cb75+'/'+_0x57010a)[_0xf944('0x19')](_0x356c3a);}return null;};}function patchUpdates(_0x16e9a4){return function(_0x24322d){try{jsonpatch[_0xf944('0x20')](_0x24322d,_0x16e9a4,!![]);}catch(_0x37f5d3){return BPromise[_0xf944('0x21')](_0x37f5d3);}return _0x24322d[_0xf944('0x22')]();};}function saveUpdates(_0x406bbc,_0x51672b){return function(_0xdeb95e){if(_0xdeb95e){return _0xdeb95e[_0xf944('0x23')](_0x406bbc)['then'](function(_0x5d1124){return _0x5d1124;});}return null;};}function removeEntity(_0x32225b,_0x14f42a){return function(_0x136b1b){if(_0x136b1b){return _0x136b1b[_0xf944('0x24')]()[_0xf944('0x25')](function(){_0x32225b[_0xf944('0x18')](0xcc)[_0xf944('0x26')]();});}};}function handleEntityNotFound(_0x4ac419,_0x5e623c){return function(_0x2b7e53){if(!_0x2b7e53){_0x4ac419['sendStatus'](0x194);}return _0x2b7e53;};}function handleError(_0x590d77,_0x2a1901){_0x2a1901=_0x2a1901||0x1f4;return function(_0xf02299){logger['error'](_0xf02299[_0xf944('0x27')]);if(_0xf02299[_0xf944('0x28')]){delete _0xf02299[_0xf944('0x28')];}_0x590d77['status'](_0x2a1901)[_0xf944('0x29')](_0xf02299);};}exports['index']=function(_0xb05e97,_0x45878b){var _0x2ae3c1={},_0x19d263={},_0x314268={'count':0x0,'rows':[]};var _0xf6700f=_[_0xf944('0x2a')](db['OpenchannelTransferReport']['rawAttributes'],function(_0x584f22){return{'name':_0x584f22[_0xf944('0x2b')],'type':_0x584f22[_0xf944('0x2c')]['key']};});_0x19d263[_0xf944('0x2d')]=_[_0xf944('0x2a')](_0xf6700f,_0xf944('0x28'));_0x19d263[_0xf944('0x2e')]=_['keys'](_0xb05e97['query']);_0x19d263[_0xf944('0x2f')]=_['intersection'](_0x19d263['model'],_0x19d263[_0xf944('0x2e')]);_0x2ae3c1[_0xf944('0x30')]=_[_0xf944('0x31')](_0x19d263[_0xf944('0x2d')],qs[_0xf944('0x32')](_0xb05e97[_0xf944('0x2e')]['fields']));_0x2ae3c1[_0xf944('0x30')]=_0x2ae3c1[_0xf944('0x30')][_0xf944('0x33')]?_0x2ae3c1[_0xf944('0x30')]:_0x19d263[_0xf944('0x2d')];if(!_0xb05e97[_0xf944('0x2e')][_0xf944('0x34')](_0xf944('0x35'))){_0x2ae3c1[_0xf944('0x1d')]=qs[_0xf944('0x1d')](_0xb05e97[_0xf944('0x2e')]['limit']);_0x2ae3c1['offset']=qs[_0xf944('0x1c')](_0xb05e97[_0xf944('0x2e')]['offset']);}_0x2ae3c1['order']=qs[_0xf944('0x36')](_0xb05e97[_0xf944('0x2e')]['sort']);_0x2ae3c1[_0xf944('0x37')]=qs[_0xf944('0x2f')](_['pick'](_0xb05e97[_0xf944('0x2e')],_0x19d263[_0xf944('0x2f')]),_0xf6700f);if(_0xb05e97[_0xf944('0x2e')][_0xf944('0x38')]){_0x2ae3c1[_0xf944('0x37')]=_[_0xf944('0x39')](_0x2ae3c1[_0xf944('0x37')],{'$or':_[_0xf944('0x2a')](_0xf6700f,function(_0x31e1b0){if(_0x31e1b0[_0xf944('0x2c')]!==_0xf944('0x3a')){var _0xc56646={};_0xc56646[_0x31e1b0['name']]={'$like':'%'+_0xb05e97[_0xf944('0x2e')][_0xf944('0x38')]+'%'};return _0xc56646;}})});}_0x2ae3c1=_[_0xf944('0x39')]({},_0x2ae3c1,_0xb05e97[_0xf944('0x3b')]);var _0x5db081={'where':_0x2ae3c1['where']};return db[_0xf944('0x3c')]['count'](_0x5db081)[_0xf944('0x25')](function(_0x4416d8){_0x314268[_0xf944('0x1b')]=_0x4416d8;if(_0xb05e97[_0xf944('0x2e')][_0xf944('0x3d')]){_0x2ae3c1[_0xf944('0x3e')]=[{'all':!![]}];}return db[_0xf944('0x3c')]['findAll'](_0x2ae3c1);})[_0xf944('0x25')](function(_0x579ad5){_0x314268[_0xf944('0x3f')]=_0x579ad5;return _0x314268;})['then'](respondWithFilteredResult(_0x45878b,_0x2ae3c1))['catch'](handleError(_0x45878b,null));};exports['show']=function(_0x2f7c25,_0x3a549c){var _0x5f0edc={'raw':!![],'where':{'id':_0x2f7c25[_0xf944('0x40')]['id']}},_0x4d4330={};_0x4d4330[_0xf944('0x2d')]=_[_0xf944('0x41')](db[_0xf944('0x3c')][_0xf944('0x42')]);_0x4d4330[_0xf944('0x2e')]=_[_0xf944('0x41')](_0x2f7c25[_0xf944('0x2e')]);_0x4d4330[_0xf944('0x2f')]=_[_0xf944('0x31')](_0x4d4330[_0xf944('0x2d')],_0x4d4330[_0xf944('0x2e')]);_0x5f0edc['attributes']=_[_0xf944('0x31')](_0x4d4330[_0xf944('0x2d')],qs[_0xf944('0x32')](_0x2f7c25['query'][_0xf944('0x32')]));_0x5f0edc[_0xf944('0x30')]=_0x5f0edc[_0xf944('0x30')][_0xf944('0x33')]?_0x5f0edc[_0xf944('0x30')]:_0x4d4330['model'];if(_0x2f7c25['query']['includeAll']){_0x5f0edc[_0xf944('0x3e')]=[{'all':!![]}];}_0x5f0edc=_['merge']({},_0x5f0edc,_0x2f7c25[_0xf944('0x3b')]);return db[_0xf944('0x3c')][_0xf944('0x43')](_0x5f0edc)[_0xf944('0x25')](handleEntityNotFound(_0x3a549c,null))[_0xf944('0x25')](respondWithResult(_0x3a549c,null))[_0xf944('0x44')](handleError(_0x3a549c,null));};exports[_0xf944('0x45')]=function(_0x4390d8,_0x11396e){return db[_0xf944('0x3c')][_0xf944('0x45')](_0x4390d8['body'],{})[_0xf944('0x25')](respondWithResult(_0x11396e,0xc9))[_0xf944('0x44')](handleError(_0x11396e,null));};exports[_0xf944('0x23')]=function(_0x469f98,_0xd9c41c){if(_0x469f98[_0xf944('0x46')]['id']){delete _0x469f98[_0xf944('0x46')]['id'];}return db[_0xf944('0x3c')][_0xf944('0x43')]({'where':{'id':_0x469f98[_0xf944('0x40')]['id']}})[_0xf944('0x25')](handleEntityNotFound(_0xd9c41c,null))[_0xf944('0x25')](saveUpdates(_0x469f98[_0xf944('0x46')],null))[_0xf944('0x25')](respondWithResult(_0xd9c41c,null))['catch'](handleError(_0xd9c41c,null));};exports[_0xf944('0x24')]=function(_0xaac8c3,_0x1a54fa){return db[_0xf944('0x3c')][_0xf944('0x43')]({'where':{'id':_0xaac8c3[_0xf944('0x40')]['id']}})[_0xf944('0x25')](handleEntityNotFound(_0x1a54fa,null))['then'](removeEntity(_0x1a54fa,null))['catch'](handleError(_0x1a54fa,null));};exports[_0xf944('0x47')]=function(_0x15a4c3,_0x5a9655){return db[_0xf944('0x3c')]['describe']()[_0xf944('0x25')](respondWithResult(_0x5a9655,null))['catch'](handleError(_0x5a9655,null));};
\ No newline at end of file
+var _0x0d8d=['squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','limit','count','offset','Content-Range','json','reject','then','end','stack','name','send','index','map','OpenchannelTransferReport','rawAttributes','key','query','keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','findAll','rows','show','include','find','create','body','update','params','destroy','catch','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x220bd0,_0x5d9758){var _0x569d81=function(_0x57478a){while(--_0x57478a){_0x220bd0['push'](_0x220bd0['shift']());}};_0x569d81(++_0x5d9758);}(_0x0d8d,0x10f));var _0xd0d8=function(_0x50e750,_0x385003){_0x50e750=_0x50e750-0x0;var _0x37893d=_0x0d8d[_0x50e750];return _0x37893d;};'use strict';var emlformat=require(_0xd0d8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd0d8('0x1'));var jsonpatch=require(_0xd0d8('0x2'));var rp=require(_0xd0d8('0x3'));var moment=require(_0xd0d8('0x4'));var BPromise=require(_0xd0d8('0x5'));var Mustache=require(_0xd0d8('0x6'));var util=require(_0xd0d8('0x7'));var path=require('path');var sox=require(_0xd0d8('0x8'));var csv=require(_0xd0d8('0x9'));var ejs=require(_0xd0d8('0xa'));var fs=require('fs');var fs_extra=require(_0xd0d8('0xb'));var _=require(_0xd0d8('0xc'));var squel=require(_0xd0d8('0xd'));var crypto=require(_0xd0d8('0xe'));var jsforce=require(_0xd0d8('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xd0d8('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd0d8('0x10'));var authService=require(_0xd0d8('0x11'));var qs=require(_0xd0d8('0x12'));var as=require(_0xd0d8('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd0d8('0x14'))('api');var utils=require(_0xd0d8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd0d8('0x16'))['db'];function respondWithStatusCode(_0x276cfc,_0x5ab984){_0x5ab984=_0x5ab984||0xcc;return function(_0x5ddc05){if(_0x5ddc05){return _0x276cfc[_0xd0d8('0x17')](_0x5ab984);}return _0x276cfc[_0xd0d8('0x18')](_0x5ab984)['end']();};}function respondWithResult(_0x1ff234,_0x4631c9){_0x4631c9=_0x4631c9||0xc8;return function(_0x29aa41){if(_0x29aa41){return _0x1ff234['status'](_0x4631c9)['json'](_0x29aa41);}};}function respondWithFilteredResult(_0x5cac4d,_0xbfc99d){return function(_0x2bf77e){if(_0x2bf77e){var _0x216c57=typeof _0xbfc99d['offset']==='undefined'&&typeof _0xbfc99d[_0xd0d8('0x19')]==='undefined';var _0x1a2860=_0x2bf77e[_0xd0d8('0x1a')];var _0x49521c=_0x216c57?0x0:_0xbfc99d[_0xd0d8('0x1b')];var _0x4034d4=_0x216c57?_0x2bf77e['count']:_0xbfc99d[_0xd0d8('0x1b')]+_0xbfc99d[_0xd0d8('0x19')];var _0x8f0422;if(_0x4034d4>=_0x1a2860){_0x4034d4=_0x1a2860;_0x8f0422=0xc8;}else{_0x8f0422=0xce;}_0x5cac4d[_0xd0d8('0x18')](_0x8f0422);return _0x5cac4d['set'](_0xd0d8('0x1c'),_0x49521c+'-'+_0x4034d4+'/'+_0x1a2860)[_0xd0d8('0x1d')](_0x2bf77e);}return null;};}function patchUpdates(_0xf358b0){return function(_0x376905){try{jsonpatch['apply'](_0x376905,_0xf358b0,!![]);}catch(_0x28e7df){return BPromise[_0xd0d8('0x1e')](_0x28e7df);}return _0x376905['save']();};}function saveUpdates(_0x28fab4,_0x551f79){return function(_0x4ab610){if(_0x4ab610){return _0x4ab610['update'](_0x28fab4)[_0xd0d8('0x1f')](function(_0x5a39b5){return _0x5a39b5;});}return null;};}function removeEntity(_0x2c38f5,_0x5ed9e4){return function(_0x556544){if(_0x556544){return _0x556544['destroy']()[_0xd0d8('0x1f')](function(){_0x2c38f5['status'](0xcc)[_0xd0d8('0x20')]();});}};}function handleEntityNotFound(_0x5c0167,_0x5b1a48){return function(_0x5d1cb9){if(!_0x5d1cb9){_0x5c0167[_0xd0d8('0x17')](0x194);}return _0x5d1cb9;};}function handleError(_0x16f7ae,_0x305c09){_0x305c09=_0x305c09||0x1f4;return function(_0x3dd3a4){logger['error'](_0x3dd3a4[_0xd0d8('0x21')]);if(_0x3dd3a4[_0xd0d8('0x22')]){delete _0x3dd3a4[_0xd0d8('0x22')];}_0x16f7ae['status'](_0x305c09)[_0xd0d8('0x23')](_0x3dd3a4);};}exports[_0xd0d8('0x24')]=function(_0x170577,_0x5dfa9b){var _0x25611d={},_0x11528d={},_0x5aceae={'count':0x0,'rows':[]};var _0x35bf11=_[_0xd0d8('0x25')](db[_0xd0d8('0x26')][_0xd0d8('0x27')],function(_0x564627){return{'name':_0x564627['fieldName'],'type':_0x564627['type'][_0xd0d8('0x28')]};});_0x11528d['model']=_['map'](_0x35bf11,_0xd0d8('0x22'));_0x11528d[_0xd0d8('0x29')]=_[_0xd0d8('0x2a')](_0x170577['query']);_0x11528d[_0xd0d8('0x2b')]=_[_0xd0d8('0x2c')](_0x11528d['model'],_0x11528d[_0xd0d8('0x29')]);_0x25611d[_0xd0d8('0x2d')]=_[_0xd0d8('0x2c')](_0x11528d[_0xd0d8('0x2e')],qs['fields'](_0x170577[_0xd0d8('0x29')][_0xd0d8('0x2f')]));_0x25611d['attributes']=_0x25611d['attributes'][_0xd0d8('0x30')]?_0x25611d[_0xd0d8('0x2d')]:_0x11528d[_0xd0d8('0x2e')];if(!_0x170577[_0xd0d8('0x29')]['hasOwnProperty'](_0xd0d8('0x31'))){_0x25611d[_0xd0d8('0x19')]=qs[_0xd0d8('0x19')](_0x170577[_0xd0d8('0x29')][_0xd0d8('0x19')]);_0x25611d[_0xd0d8('0x1b')]=qs[_0xd0d8('0x1b')](_0x170577[_0xd0d8('0x29')][_0xd0d8('0x1b')]);}_0x25611d[_0xd0d8('0x32')]=qs[_0xd0d8('0x33')](_0x170577[_0xd0d8('0x29')][_0xd0d8('0x33')]);_0x25611d[_0xd0d8('0x34')]=qs[_0xd0d8('0x2b')](_[_0xd0d8('0x35')](_0x170577[_0xd0d8('0x29')],_0x11528d[_0xd0d8('0x2b')]),_0x35bf11);if(_0x170577[_0xd0d8('0x29')][_0xd0d8('0x36')]){_0x25611d[_0xd0d8('0x34')]=_[_0xd0d8('0x37')](_0x25611d['where'],{'$or':_[_0xd0d8('0x25')](_0x35bf11,function(_0xc09a78){if(_0xc09a78[_0xd0d8('0x38')]!=='VIRTUAL'){var _0x200049={};_0x200049[_0xc09a78[_0xd0d8('0x22')]]={'$like':'%'+_0x170577[_0xd0d8('0x29')][_0xd0d8('0x36')]+'%'};return _0x200049;}})});}_0x25611d=_['merge']({},_0x25611d,_0x170577[_0xd0d8('0x39')]);var _0x1e4671={'where':_0x25611d[_0xd0d8('0x34')]};return db['OpenchannelTransferReport'][_0xd0d8('0x1a')](_0x1e4671)['then'](function(_0x1c2401){_0x5aceae['count']=_0x1c2401;if(_0x170577['query'][_0xd0d8('0x3a')]){_0x25611d['include']=[{'all':!![]}];}return db[_0xd0d8('0x26')][_0xd0d8('0x3b')](_0x25611d);})[_0xd0d8('0x1f')](function(_0x38005f){_0x5aceae[_0xd0d8('0x3c')]=_0x38005f;return _0x5aceae;})['then'](respondWithFilteredResult(_0x5dfa9b,_0x25611d))['catch'](handleError(_0x5dfa9b,null));};exports[_0xd0d8('0x3d')]=function(_0x47d251,_0x4f5ed1){var _0x3b1f91={'raw':!![],'where':{'id':_0x47d251['params']['id']}},_0x4527c5={};_0x4527c5[_0xd0d8('0x2e')]=_[_0xd0d8('0x2a')](db['OpenchannelTransferReport'][_0xd0d8('0x27')]);_0x4527c5[_0xd0d8('0x29')]=_[_0xd0d8('0x2a')](_0x47d251[_0xd0d8('0x29')]);_0x4527c5[_0xd0d8('0x2b')]=_['intersection'](_0x4527c5['model'],_0x4527c5[_0xd0d8('0x29')]);_0x3b1f91['attributes']=_['intersection'](_0x4527c5[_0xd0d8('0x2e')],qs[_0xd0d8('0x2f')](_0x47d251[_0xd0d8('0x29')][_0xd0d8('0x2f')]));_0x3b1f91['attributes']=_0x3b1f91[_0xd0d8('0x2d')][_0xd0d8('0x30')]?_0x3b1f91[_0xd0d8('0x2d')]:_0x4527c5[_0xd0d8('0x2e')];if(_0x47d251[_0xd0d8('0x29')]['includeAll']){_0x3b1f91[_0xd0d8('0x3e')]=[{'all':!![]}];}_0x3b1f91=_['merge']({},_0x3b1f91,_0x47d251[_0xd0d8('0x39')]);return db['OpenchannelTransferReport'][_0xd0d8('0x3f')](_0x3b1f91)[_0xd0d8('0x1f')](handleEntityNotFound(_0x4f5ed1,null))[_0xd0d8('0x1f')](respondWithResult(_0x4f5ed1,null))['catch'](handleError(_0x4f5ed1,null));};exports[_0xd0d8('0x40')]=function(_0x227d03,_0x2a11da){return db[_0xd0d8('0x26')][_0xd0d8('0x40')](_0x227d03[_0xd0d8('0x41')],{})[_0xd0d8('0x1f')](respondWithResult(_0x2a11da,0xc9))['catch'](handleError(_0x2a11da,null));};exports[_0xd0d8('0x42')]=function(_0x2652f0,_0x3f22d2){if(_0x2652f0[_0xd0d8('0x41')]['id']){delete _0x2652f0[_0xd0d8('0x41')]['id'];}return db[_0xd0d8('0x26')]['find']({'where':{'id':_0x2652f0[_0xd0d8('0x43')]['id']}})['then'](handleEntityNotFound(_0x3f22d2,null))[_0xd0d8('0x1f')](saveUpdates(_0x2652f0[_0xd0d8('0x41')],null))[_0xd0d8('0x1f')](respondWithResult(_0x3f22d2,null))['catch'](handleError(_0x3f22d2,null));};exports[_0xd0d8('0x44')]=function(_0x2fdcdb,_0x35d8cb){return db[_0xd0d8('0x26')][_0xd0d8('0x3f')]({'where':{'id':_0x2fdcdb['params']['id']}})['then'](handleEntityNotFound(_0x35d8cb,null))[_0xd0d8('0x1f')](removeEntity(_0x35d8cb,null))[_0xd0d8('0x45')](handleError(_0x35d8cb,null));};exports[_0xd0d8('0x46')]=function(_0x7b12dd,_0x32f9d0){return db[_0xd0d8('0x26')][_0xd0d8('0x46')]()[_0xd0d8('0x1f')](respondWithResult(_0x32f9d0,null))[_0xd0d8('0x45')](handleError(_0x32f9d0,null));};
\ No newline at end of file
index c32dafd..f118401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb98d=['lodash','util','api','moment','bluebird','request-promise','../../config/environment','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x54be00,_0xf96a90){var _0x41bd5d=function(_0x3cad7d){while(--_0x3cad7d){_0x54be00['push'](_0x54be00['shift']());}};_0x41bd5d(++_0xf96a90);}(_0xb98d,0x108));var _0xdb98=function(_0x18ce59,_0x124e24){_0x18ce59=_0x18ce59-0x0;var _0x1e0e29=_0xb98d[_0x18ce59];return _0x1e0e29;};'use strict';var _=require(_0xdb98('0x0'));var util=require(_0xdb98('0x1'));var logger=require('../../config/logger')(_0xdb98('0x2'));var moment=require(_0xdb98('0x3'));var BPromise=require(_0xdb98('0x4'));var rp=require(_0xdb98('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdb98('0x6'));var attributes=require('./openchannelTransferReport.attributes');module['exports']=function(_0x15a033,_0x2bddad){return _0x15a033[_0xdb98('0x7')](_0xdb98('0x8'),attributes,{'tableName':_0xdb98('0x9'),'paranoid':![],'indexes':[{'name':_0xdb98('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x60d2=['report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport'];(function(_0x524ddd,_0x77337){var _0x5f26ba=function(_0x3c2ae0){while(--_0x3c2ae0){_0x524ddd['push'](_0x524ddd['shift']());}};_0x5f26ba(++_0x77337);}(_0x60d2,0x1c4));var _0x260d=function(_0x5b8b97,_0x6b4dfa){_0x5b8b97=_0x5b8b97-0x0;var _0x1fdf84=_0x60d2[_0x5b8b97];return _0x1fdf84;};'use strict';var _=require(_0x260d('0x0'));var util=require(_0x260d('0x1'));var logger=require(_0x260d('0x2'))(_0x260d('0x3'));var moment=require(_0x260d('0x4'));var BPromise=require('bluebird');var rp=require(_0x260d('0x5'));var fs=require('fs');var path=require(_0x260d('0x6'));var rimraf=require(_0x260d('0x7'));var config=require(_0x260d('0x8'));var attributes=require(_0x260d('0x9'));module[_0x260d('0xa')]=function(_0x4510ae,_0x532845){return _0x4510ae[_0x260d('0xb')](_0x260d('0xc'),attributes,{'tableName':_0x260d('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x260d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 9f6c9af..04e9b51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x535f=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch'];(function(_0x23f3fe,_0x37a19c){var _0x1b1cb1=function(_0x1a96a7){while(--_0x1a96a7){_0x23f3fe['push'](_0x23f3fe['shift']());}};_0x1b1cb1(++_0x37a19c);}(_0x535f,0x111));var _0xf535=function(_0x1713ad,_0x37548a){_0x1713ad=_0x1713ad-0x0;var _0xc79a4f=_0x535f[_0x1713ad];return _0xc79a4f;};'use strict';var _=require('lodash');var util=require(_0xf535('0x0'));var moment=require(_0xf535('0x1'));var BPromise=require('bluebird');var rs=require(_0xf535('0x2'));var fs=require('fs');var Redis=require(_0xf535('0x3'));var db=require(_0xf535('0x4'))['db'];var utils=require(_0xf535('0x5'));var logger=require('../../config/logger')(_0xf535('0x6'));var config=require(_0xf535('0x7'));var jayson=require(_0xf535('0x8'));var client=jayson[_0xf535('0x9')][_0xf535('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc74104,_0x580328,_0x510b86){return new BPromise(function(_0x17f72e,_0x156c64){return client[_0xf535('0xb')](_0xc74104,_0x510b86)['then'](function(_0x244189){logger[_0xf535('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x580328,'request\x20sent');logger[_0xf535('0xd')](_0xf535('0xe'),_0x580328,'request\x20sent',JSON['stringify'](_0x244189));if(_0x244189[_0xf535('0xf')]){if(_0x244189[_0xf535('0xf')][_0xf535('0x10')]===0x1f4){logger[_0xf535('0xf')](_0xf535('0x11'),_0x580328,_0x244189['error'][_0xf535('0x12')]);return _0x156c64(_0x244189[_0xf535('0xf')][_0xf535('0x12')]);}logger[_0xf535('0xf')](_0xf535('0x11'),_0x580328,_0x244189[_0xf535('0xf')][_0xf535('0x12')]);return _0x17f72e(_0x244189[_0xf535('0xf')][_0xf535('0x12')]);}else{logger[_0xf535('0xc')](_0xf535('0x11'),_0x580328,'request\x20sent');_0x17f72e(_0x244189[_0xf535('0x13')][_0xf535('0x12')]);}})[_0xf535('0x14')](function(_0x3ffb1b){logger[_0xf535('0xf')](_0xf535('0x11'),_0x580328,_0x3ffb1b);_0x156c64(_0x3ffb1b);});});}
\ No newline at end of file
+var _0x0faf=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x41875a,_0x14ad7e){var _0x269efd=function(_0x2fa172){while(--_0x2fa172){_0x41875a['push'](_0x41875a['shift']());}};_0x269efd(++_0x14ad7e);}(_0x0faf,0x132));var _0xf0fa=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x0faf[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0xf0fa('0x0'));var util=require('util');var moment=require(_0xf0fa('0x1'));var BPromise=require(_0xf0fa('0x2'));var rs=require(_0xf0fa('0x3'));var fs=require('fs');var Redis=require(_0xf0fa('0x4'));var db=require(_0xf0fa('0x5'))['db'];var utils=require(_0xf0fa('0x6'));var logger=require(_0xf0fa('0x7'))(_0xf0fa('0x8'));var config=require(_0xf0fa('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf0fa('0xa')][_0xf0fa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25b5c4,_0x3a703b,_0x2db1d9){return new BPromise(function(_0x587865,_0x42f7fd){return client[_0xf0fa('0xc')](_0x25b5c4,_0x2db1d9)['then'](function(_0x4df4d1){logger[_0xf0fa('0xd')](_0xf0fa('0xe'),_0x3a703b,_0xf0fa('0xf'));logger[_0xf0fa('0x10')](_0xf0fa('0x11'),_0x3a703b,_0xf0fa('0xf'),JSON[_0xf0fa('0x12')](_0x4df4d1));if(_0x4df4d1[_0xf0fa('0x13')]){if(_0x4df4d1['error'][_0xf0fa('0x14')]===0x1f4){logger['error'](_0xf0fa('0xe'),_0x3a703b,_0x4df4d1['error'][_0xf0fa('0x15')]);return _0x42f7fd(_0x4df4d1[_0xf0fa('0x13')][_0xf0fa('0x15')]);}logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x3a703b,_0x4df4d1[_0xf0fa('0x13')]['message']);return _0x587865(_0x4df4d1[_0xf0fa('0x13')][_0xf0fa('0x15')]);}else{logger[_0xf0fa('0xd')](_0xf0fa('0xe'),_0x3a703b,_0xf0fa('0xf'));_0x587865(_0x4df4d1[_0xf0fa('0x16')][_0xf0fa('0x15')]);}})[_0xf0fa('0x17')](function(_0x497542){logger[_0xf0fa('0x13')](_0xf0fa('0xe'),_0x3a703b,_0x497542);_0x42f7fd(_0x497542);});});}
\ No newline at end of file
index bce27a1..a4ec48b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcc=['Router','fs-extra','get','isAuthenticated','show','post','put','/:id','update','delete','destroy','exports','multer','connect-timeout','express'];(function(_0x1852ac,_0x4682fc){var _0x7c20fa=function(_0x2f8d6f){while(--_0x2f8d6f){_0x1852ac['push'](_0x1852ac['shift']());}};_0x7c20fa(++_0x4682fc);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x485abd,_0x32c7c1){_0x485abd=_0x485abd-0x0;var _0x3379f1=_0xbfcc[_0x485abd];return _0x3379f1;};'use strict';var multer=require(_0xcbfc('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcbfc('0x1'));var express=require(_0xcbfc('0x2'));var router=express[_0xcbfc('0x3')]();var fs_extra=require(_0xcbfc('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./pause.controller');router[_0xcbfc('0x5')]('/',auth[_0xcbfc('0x6')](),controller['index']);router[_0xcbfc('0x5')]('/:id',auth[_0xcbfc('0x6')](),controller[_0xcbfc('0x7')]);router[_0xcbfc('0x8')]('/',auth[_0xcbfc('0x6')](),controller['create']);router[_0xcbfc('0x9')](_0xcbfc('0xa'),auth[_0xcbfc('0x6')](),controller[_0xcbfc('0xb')]);router[_0xcbfc('0xc')](_0xcbfc('0xa'),auth['isAuthenticated'](),controller[_0xcbfc('0xd')]);module[_0xcbfc('0xe')]=router;
\ No newline at end of file
+var _0x34c8=['exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','isAuthenticated','get','show','post','create','put','/:id','update','destroy'];(function(_0x250089,_0x39b8cd){var _0x2b54bb=function(_0x33b851){while(--_0x33b851){_0x250089['push'](_0x250089['shift']());}};_0x2b54bb(++_0x39b8cd);}(_0x34c8,0xa3));var _0x834c=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x34c8[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0x834c('0x0'));var util=require('util');var path=require(_0x834c('0x1'));var timeout=require('connect-timeout');var express=require(_0x834c('0x2'));var router=express[_0x834c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x834c('0x4'));var interaction=require(_0x834c('0x5'));var config=require(_0x834c('0x6'));var controller=require(_0x834c('0x7'));router['get']('/',auth[_0x834c('0x8')](),controller['index']);router[_0x834c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x834c('0xa')]);router[_0x834c('0xb')]('/',auth[_0x834c('0x8')](),controller[_0x834c('0xc')]);router[_0x834c('0xd')](_0x834c('0xe'),auth[_0x834c('0x8')](),controller[_0x834c('0xf')]);router['delete'](_0x834c('0xe'),auth[_0x834c('0x8')](),controller[_0x834c('0x10')]);module[_0x834c('0x11')]=router;
\ No newline at end of file
index 3832347..081bc1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa954=['STRING','exports'];(function(_0x4164e0,_0x5e71f0){var _0x3efbd0=function(_0x15ad41){while(--_0x15ad41){_0x4164e0['push'](_0x4164e0['shift']());}};_0x3efbd0(++_0x5e71f0);}(_0xa954,0x15b));var _0x4a95=function(_0x219fa0,_0x18b239){_0x219fa0=_0x219fa0-0x0;var _0xc603fb=_0xa954[_0x219fa0];return _0xc603fb;};'use strict';var Sequelize=require('sequelize');module[_0x4a95('0x0')]={'name':{'type':Sequelize[_0x4a95('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x4a95('0x1')]}};
\ No newline at end of file
+var _0xbcd9=['name','sequelize','exports','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbcd9,0x1c9));var _0x9bcd=function(_0x96d708,_0x3d91b2){_0x96d708=_0x96d708-0x0;var _0x57b914=_0xbcd9[_0x96d708];return _0x57b914;};'use strict';var Sequelize=require(_0x9bcd('0x0'));module[_0x9bcd('0x1')]={'name':{'type':Sequelize[_0x9bcd('0x2')],'unique':_0x9bcd('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x9bcd('0x2')]}};
\ No newline at end of file
index 4502e50..0404ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7ae=['count','Content-Range','reject','save','update','get','Pauses','then','sendStatus','error','stack','name','index','map','Pause','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','end','status','json','offset','undefined','limit'];(function(_0x4a64df,_0x2a89b1){var _0x5b3929=function(_0x1c7d82){while(--_0x1c7d82){_0x4a64df['push'](_0x4a64df['shift']());}};_0x5b3929(++_0x2a89b1);}(_0xc7ae,0x82));var _0xec7a=function(_0xce4bc4,_0x13072c){_0xce4bc4=_0xce4bc4-0x0;var _0x849491=_0xc7ae[_0xce4bc4];return _0x849491;};'use strict';var emlformat=require(_0xec7a('0x0'));var rimraf=require(_0xec7a('0x1'));var zipdir=require(_0xec7a('0x2'));var jsonpatch=require(_0xec7a('0x3'));var rp=require(_0xec7a('0x4'));var moment=require(_0xec7a('0x5'));var BPromise=require(_0xec7a('0x6'));var Mustache=require(_0xec7a('0x7'));var util=require(_0xec7a('0x8'));var path=require(_0xec7a('0x9'));var sox=require(_0xec7a('0xa'));var csv=require('to-csv');var ejs=require(_0xec7a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xec7a('0xc'));var squel=require(_0xec7a('0xd'));var crypto=require(_0xec7a('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xec7a('0xf'));var toCsv=require('to-csv');var querystring=require(_0xec7a('0x10'));var Papa=require(_0xec7a('0x11'));var Redis=require('ioredis');var authService=require(_0xec7a('0x12'));var qs=require(_0xec7a('0x13'));var as=require(_0xec7a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xec7a('0x15'))(_0xec7a('0x16'));var utils=require('../../config/utils');var config=require(_0xec7a('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cff98,_0x32508a){_0x32508a=_0x32508a||0xcc;return function(_0xea2c8e){if(_0xea2c8e){return _0x4cff98['sendStatus'](_0x32508a);}return _0x4cff98['status'](_0x32508a)[_0xec7a('0x18')]();};}function respondWithResult(_0x323f8f,_0x57145c){_0x57145c=_0x57145c||0xc8;return function(_0xd53d5d){if(_0xd53d5d){return _0x323f8f[_0xec7a('0x19')](_0x57145c)[_0xec7a('0x1a')](_0xd53d5d);}};}function respondWithFilteredResult(_0x40309b,_0x7d4611){return function(_0x15daf3){if(_0x15daf3){var _0x271841=typeof _0x7d4611[_0xec7a('0x1b')]===_0xec7a('0x1c')&&typeof _0x7d4611[_0xec7a('0x1d')]===_0xec7a('0x1c');var _0x1aee47=_0x15daf3[_0xec7a('0x1e')];var _0x28f6=_0x271841?0x0:_0x7d4611['offset'];var _0x527a0f=_0x271841?_0x15daf3[_0xec7a('0x1e')]:_0x7d4611['offset']+_0x7d4611['limit'];var _0x2e27f;if(_0x527a0f>=_0x1aee47){_0x527a0f=_0x1aee47;_0x2e27f=0xc8;}else{_0x2e27f=0xce;}_0x40309b[_0xec7a('0x19')](_0x2e27f);return _0x40309b['set'](_0xec7a('0x1f'),_0x28f6+'-'+_0x527a0f+'/'+_0x1aee47)[_0xec7a('0x1a')](_0x15daf3);}return null;};}function patchUpdates(_0xc168d1){return function(_0x7e5fdf){try{jsonpatch['apply'](_0x7e5fdf,_0xc168d1,!![]);}catch(_0x18dbbc){return BPromise[_0xec7a('0x20')](_0x18dbbc);}return _0x7e5fdf[_0xec7a('0x21')]();};}function saveUpdates(_0x45335b,_0x407550){return function(_0x51a12a){if(_0x51a12a){return _0x51a12a[_0xec7a('0x22')](_0x45335b)['then'](function(_0x28d0b1){return _0x28d0b1;});}return null;};}function removeEntity(_0x396c1d,_0x408341){return function(_0x228892){if(_0x228892){return _0x228892['destroy']()['then'](function(){var _0x1a8365=_0x228892[_0xec7a('0x23')]({'plain':!![]});var _0x3b8167=_0xec7a('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x3b8167,'resourceId':_0x1a8365['id']}})[_0xec7a('0x25')](function(){return _0x228892;});})[_0xec7a('0x25')](function(){_0x396c1d['status'](0xcc)[_0xec7a('0x18')]();});}};}function handleEntityNotFound(_0x53e6f5,_0x49792a){return function(_0x241943){if(!_0x241943){_0x53e6f5[_0xec7a('0x26')](0x194);}return _0x241943;};}function handleError(_0x55a522,_0x4e0b56){_0x4e0b56=_0x4e0b56||0x1f4;return function(_0x58ca76){logger[_0xec7a('0x27')](_0x58ca76[_0xec7a('0x28')]);if(_0x58ca76[_0xec7a('0x29')]){delete _0x58ca76[_0xec7a('0x29')];}_0x55a522[_0xec7a('0x19')](_0x4e0b56)['send'](_0x58ca76);};}exports[_0xec7a('0x2a')]=function(_0x302fa6,_0x48408d){var _0x7c5f7b={},_0xcd6de1={},_0x12b9fe={'count':0x0,'rows':[]};var _0x390707=_[_0xec7a('0x2b')](db[_0xec7a('0x2c')]['rawAttributes'],function(_0x379f4a){return{'name':_0x379f4a[_0xec7a('0x2d')],'type':_0x379f4a[_0xec7a('0x2e')][_0xec7a('0x2f')]};});_0xcd6de1[_0xec7a('0x30')]=_['map'](_0x390707,_0xec7a('0x29'));_0xcd6de1['query']=_[_0xec7a('0x31')](_0x302fa6['query']);_0xcd6de1[_0xec7a('0x32')]=_[_0xec7a('0x33')](_0xcd6de1[_0xec7a('0x30')],_0xcd6de1[_0xec7a('0x34')]);_0x7c5f7b['attributes']=_['intersection'](_0xcd6de1['model'],qs[_0xec7a('0x35')](_0x302fa6[_0xec7a('0x34')]['fields']));_0x7c5f7b[_0xec7a('0x36')]=_0x7c5f7b[_0xec7a('0x36')][_0xec7a('0x37')]?_0x7c5f7b[_0xec7a('0x36')]:_0xcd6de1[_0xec7a('0x30')];if(!_0x302fa6[_0xec7a('0x34')][_0xec7a('0x38')](_0xec7a('0x39'))){_0x7c5f7b[_0xec7a('0x1d')]=qs['limit'](_0x302fa6[_0xec7a('0x34')]['limit']);_0x7c5f7b[_0xec7a('0x1b')]=qs[_0xec7a('0x1b')](_0x302fa6[_0xec7a('0x34')]['offset']);}_0x7c5f7b[_0xec7a('0x3a')]=qs[_0xec7a('0x3b')](_0x302fa6[_0xec7a('0x34')][_0xec7a('0x3b')]);_0x7c5f7b[_0xec7a('0x3c')]=qs['filters'](_['pick'](_0x302fa6[_0xec7a('0x34')],_0xcd6de1[_0xec7a('0x32')]),_0x390707);if(_0x302fa6[_0xec7a('0x34')][_0xec7a('0x3d')]){_0x7c5f7b[_0xec7a('0x3c')]=_[_0xec7a('0x3e')](_0x7c5f7b[_0xec7a('0x3c')],{'$or':_[_0xec7a('0x2b')](_0x390707,function(_0x586fb9){if(_0x586fb9[_0xec7a('0x2e')]!==_0xec7a('0x3f')){var _0x8c7df8={};_0x8c7df8[_0x586fb9['name']]={'$like':'%'+_0x302fa6[_0xec7a('0x34')]['filter']+'%'};return _0x8c7df8;}})});}_0x7c5f7b=_[_0xec7a('0x3e')]({},_0x7c5f7b,_0x302fa6[_0xec7a('0x40')]);var _0x256fe4={'where':_0x7c5f7b[_0xec7a('0x3c')]};return db[_0xec7a('0x2c')][_0xec7a('0x1e')](_0x256fe4)[_0xec7a('0x25')](function(_0x565445){_0x12b9fe[_0xec7a('0x1e')]=_0x565445;if(_0x302fa6[_0xec7a('0x34')]['includeAll']){_0x7c5f7b[_0xec7a('0x41')]=[{'all':!![]}];}return db[_0xec7a('0x2c')][_0xec7a('0x42')](_0x7c5f7b);})['then'](function(_0x413ac4){_0x12b9fe[_0xec7a('0x43')]=_0x413ac4;return _0x12b9fe;})[_0xec7a('0x25')](respondWithFilteredResult(_0x48408d,_0x7c5f7b))[_0xec7a('0x44')](handleError(_0x48408d,null));};exports['show']=function(_0xd0d400,_0x3f91c2){var _0x12da56={'raw':!![],'where':{'id':_0xd0d400[_0xec7a('0x45')]['id']}},_0xf28a3e={};_0xf28a3e[_0xec7a('0x30')]=_[_0xec7a('0x31')](db[_0xec7a('0x2c')]['rawAttributes']);_0xf28a3e[_0xec7a('0x34')]=_[_0xec7a('0x31')](_0xd0d400[_0xec7a('0x34')]);_0xf28a3e['filters']=_[_0xec7a('0x33')](_0xf28a3e[_0xec7a('0x30')],_0xf28a3e[_0xec7a('0x34')]);_0x12da56[_0xec7a('0x36')]=_[_0xec7a('0x33')](_0xf28a3e[_0xec7a('0x30')],qs[_0xec7a('0x35')](_0xd0d400['query'][_0xec7a('0x35')]));_0x12da56[_0xec7a('0x36')]=_0x12da56[_0xec7a('0x36')][_0xec7a('0x37')]?_0x12da56['attributes']:_0xf28a3e[_0xec7a('0x30')];if(_0xd0d400[_0xec7a('0x34')]['includeAll']){_0x12da56[_0xec7a('0x41')]=[{'all':!![]}];}_0x12da56=_[_0xec7a('0x3e')]({},_0x12da56,_0xd0d400[_0xec7a('0x40')]);return db['Pause'][_0xec7a('0x46')](_0x12da56)[_0xec7a('0x25')](handleEntityNotFound(_0x3f91c2,null))[_0xec7a('0x25')](respondWithResult(_0x3f91c2,null))[_0xec7a('0x44')](handleError(_0x3f91c2,null));};exports[_0xec7a('0x47')]=function(_0x36cf3a,_0x557e3b){return db[_0xec7a('0x2c')][_0xec7a('0x47')](_0x36cf3a[_0xec7a('0x48')],{})[_0xec7a('0x25')](function(_0x4fe77f){var _0x188195=_0x36cf3a[_0xec7a('0x49')]['get']({'plain':!![]});if(!_0x188195)throw new Error(_0xec7a('0x4a'));if(_0x188195[_0xec7a('0x4b')]===_0xec7a('0x49')){var _0x35c974=_0x4fe77f['get']({'plain':!![]});var _0xc7229b='Pauses';return db['UserProfileSection'][_0xec7a('0x46')]({'where':{'name':_0xc7229b,'userProfileId':_0x188195[_0xec7a('0x4c')]},'raw':!![]})['then'](function(_0x5470e3){if(_0x5470e3&&_0x5470e3[_0xec7a('0x4d')]===0x0){return db['UserProfileResource'][_0xec7a('0x47')]({'name':_0x35c974['name'],'resourceId':_0x35c974['id'],'type':_0x5470e3[_0xec7a('0x29')],'sectionId':_0x5470e3['id']},{})[_0xec7a('0x25')](function(){return _0x4fe77f;});}else{return _0x4fe77f;}})[_0xec7a('0x44')](function(_0x5074cc){logger[_0xec7a('0x27')](_0xec7a('0x4e'),_0x5074cc);throw _0x5074cc;});}return _0x4fe77f;})[_0xec7a('0x25')](respondWithResult(_0x557e3b,0xc9))[_0xec7a('0x44')](handleError(_0x557e3b,null));};exports['update']=function(_0x42f15b,_0x261eb6){if(_0x42f15b[_0xec7a('0x48')]['id']){delete _0x42f15b[_0xec7a('0x48')]['id'];}return db[_0xec7a('0x2c')][_0xec7a('0x46')]({'where':{'id':_0x42f15b[_0xec7a('0x45')]['id']}})[_0xec7a('0x25')](handleEntityNotFound(_0x261eb6,null))[_0xec7a('0x25')](saveUpdates(_0x42f15b['body'],null))['then'](respondWithResult(_0x261eb6,null))[_0xec7a('0x44')](handleError(_0x261eb6,null));};exports[_0xec7a('0x4f')]=function(_0x2e9281,_0x2705eb){return db[_0xec7a('0x2c')][_0xec7a('0x46')]({'where':{'id':_0x2e9281['params']['id']}})[_0xec7a('0x25')](handleEntityNotFound(_0x2705eb,null))[_0xec7a('0x25')](removeEntity(_0x2705eb,null))[_0xec7a('0x44')](handleError(_0x2705eb,null));};
\ No newline at end of file
+var _0xa582=['lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','get','Pauses','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','filter','merge','options','Pause','includeAll','include','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra'];(function(_0x4bea6f,_0x3dccb0){var _0x4f3253=function(_0x3f4f8c){while(--_0x3f4f8c){_0x4bea6f['push'](_0x4bea6f['shift']());}};_0x4f3253(++_0x3dccb0);}(_0xa582,0x9f));var _0x2a58=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xa582[_0x599f41];return _0x2e4d58;};'use strict';var emlformat=require(_0x2a58('0x0'));var rimraf=require(_0x2a58('0x1'));var zipdir=require(_0x2a58('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2a58('0x3'));var moment=require(_0x2a58('0x4'));var BPromise=require(_0x2a58('0x5'));var Mustache=require(_0x2a58('0x6'));var util=require(_0x2a58('0x7'));var path=require('path');var sox=require(_0x2a58('0x8'));var csv=require('to-csv');var ejs=require(_0x2a58('0x9'));var fs=require('fs');var fs_extra=require(_0x2a58('0xa'));var _=require(_0x2a58('0xb'));var squel=require(_0x2a58('0xc'));var crypto=require(_0x2a58('0xd'));var jsforce=require(_0x2a58('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x2a58('0xf'));var querystring=require('querystring');var Papa=require(_0x2a58('0x10'));var Redis=require(_0x2a58('0x11'));var authService=require(_0x2a58('0x12'));var qs=require(_0x2a58('0x13'));var as=require(_0x2a58('0x14'));var hardwareService=require(_0x2a58('0x15'));var logger=require(_0x2a58('0x16'))(_0x2a58('0x17'));var utils=require('../../config/utils');var config=require(_0x2a58('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a58('0x19'))['db'];function respondWithStatusCode(_0xc977e1,_0x482534){_0x482534=_0x482534||0xcc;return function(_0x7bf1dc){if(_0x7bf1dc){return _0xc977e1[_0x2a58('0x1a')](_0x482534);}return _0xc977e1['status'](_0x482534)[_0x2a58('0x1b')]();};}function respondWithResult(_0x3ccf56,_0x414e47){_0x414e47=_0x414e47||0xc8;return function(_0x139b86){if(_0x139b86){return _0x3ccf56[_0x2a58('0x1c')](_0x414e47)[_0x2a58('0x1d')](_0x139b86);}};}function respondWithFilteredResult(_0x2055c6,_0x19cc1d){return function(_0x2caa59){if(_0x2caa59){var _0x575a07=typeof _0x19cc1d[_0x2a58('0x1e')]===_0x2a58('0x1f')&&typeof _0x19cc1d[_0x2a58('0x20')]==='undefined';var _0x58ca26=_0x2caa59[_0x2a58('0x21')];var _0x5c1480=_0x575a07?0x0:_0x19cc1d[_0x2a58('0x1e')];var _0x2d8f40=_0x575a07?_0x2caa59[_0x2a58('0x21')]:_0x19cc1d[_0x2a58('0x1e')]+_0x19cc1d[_0x2a58('0x20')];var _0x4707d8;if(_0x2d8f40>=_0x58ca26){_0x2d8f40=_0x58ca26;_0x4707d8=0xc8;}else{_0x4707d8=0xce;}_0x2055c6['status'](_0x4707d8);return _0x2055c6[_0x2a58('0x22')](_0x2a58('0x23'),_0x5c1480+'-'+_0x2d8f40+'/'+_0x58ca26)[_0x2a58('0x1d')](_0x2caa59);}return null;};}function patchUpdates(_0x46c2d0){return function(_0x10643d){try{jsonpatch[_0x2a58('0x24')](_0x10643d,_0x46c2d0,!![]);}catch(_0x14bf61){return BPromise['reject'](_0x14bf61);}return _0x10643d[_0x2a58('0x25')]();};}function saveUpdates(_0x5e12a8,_0x34c1fc){return function(_0x1c4434){if(_0x1c4434){return _0x1c4434[_0x2a58('0x26')](_0x5e12a8)['then'](function(_0x561056){return _0x561056;});}return null;};}function removeEntity(_0x112365,_0x3082f4){return function(_0x482cc9){if(_0x482cc9){return _0x482cc9[_0x2a58('0x27')]()[_0x2a58('0x28')](function(){var _0x3f1bf7=_0x482cc9[_0x2a58('0x29')]({'plain':!![]});var _0x281970=_0x2a58('0x2a');return db[_0x2a58('0x2b')][_0x2a58('0x27')]({'where':{'type':_0x281970,'resourceId':_0x3f1bf7['id']}})[_0x2a58('0x28')](function(){return _0x482cc9;});})[_0x2a58('0x28')](function(){_0x112365[_0x2a58('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11b618,_0x2a4041){return function(_0x17ee08){if(!_0x17ee08){_0x11b618[_0x2a58('0x1a')](0x194);}return _0x17ee08;};}function handleError(_0x124faa,_0x1b0159){_0x1b0159=_0x1b0159||0x1f4;return function(_0x2e164d){logger['error'](_0x2e164d[_0x2a58('0x2c')]);if(_0x2e164d['name']){delete _0x2e164d[_0x2a58('0x2d')];}_0x124faa[_0x2a58('0x1c')](_0x1b0159)[_0x2a58('0x2e')](_0x2e164d);};}exports[_0x2a58('0x2f')]=function(_0x3fdf10,_0x24e6f9){var _0x1ce820={},_0x44cd83={},_0x4da3cf={'count':0x0,'rows':[]};var _0x4e234f=_[_0x2a58('0x30')](db['Pause'][_0x2a58('0x31')],function(_0x3308ee){return{'name':_0x3308ee[_0x2a58('0x32')],'type':_0x3308ee[_0x2a58('0x33')][_0x2a58('0x34')]};});_0x44cd83['model']=_[_0x2a58('0x30')](_0x4e234f,_0x2a58('0x2d'));_0x44cd83[_0x2a58('0x35')]=_[_0x2a58('0x36')](_0x3fdf10['query']);_0x44cd83[_0x2a58('0x37')]=_[_0x2a58('0x38')](_0x44cd83[_0x2a58('0x39')],_0x44cd83[_0x2a58('0x35')]);_0x1ce820['attributes']=_['intersection'](_0x44cd83[_0x2a58('0x39')],qs['fields'](_0x3fdf10['query'][_0x2a58('0x3a')]));_0x1ce820[_0x2a58('0x3b')]=_0x1ce820['attributes'][_0x2a58('0x3c')]?_0x1ce820[_0x2a58('0x3b')]:_0x44cd83[_0x2a58('0x39')];if(!_0x3fdf10['query']['hasOwnProperty'](_0x2a58('0x3d'))){_0x1ce820['limit']=qs[_0x2a58('0x20')](_0x3fdf10[_0x2a58('0x35')]['limit']);_0x1ce820['offset']=qs[_0x2a58('0x1e')](_0x3fdf10['query'][_0x2a58('0x1e')]);}_0x1ce820[_0x2a58('0x3e')]=qs[_0x2a58('0x3f')](_0x3fdf10[_0x2a58('0x35')]['sort']);_0x1ce820[_0x2a58('0x40')]=qs['filters'](_['pick'](_0x3fdf10[_0x2a58('0x35')],_0x44cd83[_0x2a58('0x37')]),_0x4e234f);if(_0x3fdf10[_0x2a58('0x35')][_0x2a58('0x41')]){_0x1ce820['where']=_[_0x2a58('0x42')](_0x1ce820[_0x2a58('0x40')],{'$or':_[_0x2a58('0x30')](_0x4e234f,function(_0x3de9aa){if(_0x3de9aa[_0x2a58('0x33')]!=='VIRTUAL'){var _0x3236c7={};_0x3236c7[_0x3de9aa[_0x2a58('0x2d')]]={'$like':'%'+_0x3fdf10['query'][_0x2a58('0x41')]+'%'};return _0x3236c7;}})});}_0x1ce820=_[_0x2a58('0x42')]({},_0x1ce820,_0x3fdf10[_0x2a58('0x43')]);var _0x79ba85={'where':_0x1ce820[_0x2a58('0x40')]};return db[_0x2a58('0x44')][_0x2a58('0x21')](_0x79ba85)[_0x2a58('0x28')](function(_0x271893){_0x4da3cf[_0x2a58('0x21')]=_0x271893;if(_0x3fdf10['query'][_0x2a58('0x45')]){_0x1ce820[_0x2a58('0x46')]=[{'all':!![]}];}return db[_0x2a58('0x44')][_0x2a58('0x47')](_0x1ce820);})['then'](function(_0xedf1d1){_0x4da3cf[_0x2a58('0x48')]=_0xedf1d1;return _0x4da3cf;})['then'](respondWithFilteredResult(_0x24e6f9,_0x1ce820))[_0x2a58('0x49')](handleError(_0x24e6f9,null));};exports[_0x2a58('0x4a')]=function(_0x531914,_0x20eff5){var _0x20365e={'raw':!![],'where':{'id':_0x531914[_0x2a58('0x4b')]['id']}},_0x1588ad={};_0x1588ad[_0x2a58('0x39')]=_[_0x2a58('0x36')](db['Pause'][_0x2a58('0x31')]);_0x1588ad[_0x2a58('0x35')]=_['keys'](_0x531914[_0x2a58('0x35')]);_0x1588ad[_0x2a58('0x37')]=_[_0x2a58('0x38')](_0x1588ad[_0x2a58('0x39')],_0x1588ad[_0x2a58('0x35')]);_0x20365e['attributes']=_[_0x2a58('0x38')](_0x1588ad['model'],qs[_0x2a58('0x3a')](_0x531914[_0x2a58('0x35')][_0x2a58('0x3a')]));_0x20365e['attributes']=_0x20365e['attributes'][_0x2a58('0x3c')]?_0x20365e[_0x2a58('0x3b')]:_0x1588ad[_0x2a58('0x39')];if(_0x531914[_0x2a58('0x35')]['includeAll']){_0x20365e[_0x2a58('0x46')]=[{'all':!![]}];}_0x20365e=_['merge']({},_0x20365e,_0x531914[_0x2a58('0x43')]);return db[_0x2a58('0x44')]['find'](_0x20365e)[_0x2a58('0x28')](handleEntityNotFound(_0x20eff5,null))[_0x2a58('0x28')](respondWithResult(_0x20eff5,null))[_0x2a58('0x49')](handleError(_0x20eff5,null));};exports[_0x2a58('0x4c')]=function(_0x427c17,_0x2a08b2){return db[_0x2a58('0x44')][_0x2a58('0x4c')](_0x427c17[_0x2a58('0x4d')],{})[_0x2a58('0x28')](function(_0x2b0f51){var _0xdd3d21=_0x427c17[_0x2a58('0x4e')][_0x2a58('0x29')]({'plain':!![]});if(!_0xdd3d21)throw new Error(_0x2a58('0x4f'));if(_0xdd3d21['role']===_0x2a58('0x4e')){var _0x22bb4d=_0x2b0f51[_0x2a58('0x29')]({'plain':!![]});var _0x410390=_0x2a58('0x2a');return db[_0x2a58('0x50')]['find']({'where':{'name':_0x410390,'userProfileId':_0xdd3d21['userProfileId']},'raw':!![]})[_0x2a58('0x28')](function(_0x5761a8){if(_0x5761a8&&_0x5761a8[_0x2a58('0x51')]===0x0){return db[_0x2a58('0x2b')][_0x2a58('0x4c')]({'name':_0x22bb4d[_0x2a58('0x2d')],'resourceId':_0x22bb4d['id'],'type':_0x5761a8[_0x2a58('0x2d')],'sectionId':_0x5761a8['id']},{})['then'](function(){return _0x2b0f51;});}else{return _0x2b0f51;}})[_0x2a58('0x49')](function(_0x4c4662){logger[_0x2a58('0x52')](_0x2a58('0x53'),_0x4c4662);throw _0x4c4662;});}return _0x2b0f51;})['then'](respondWithResult(_0x2a08b2,0xc9))[_0x2a58('0x49')](handleError(_0x2a08b2,null));};exports[_0x2a58('0x26')]=function(_0x184e64,_0x1bbf27){if(_0x184e64[_0x2a58('0x4d')]['id']){delete _0x184e64[_0x2a58('0x4d')]['id'];}return db[_0x2a58('0x44')][_0x2a58('0x54')]({'where':{'id':_0x184e64[_0x2a58('0x4b')]['id']}})[_0x2a58('0x28')](handleEntityNotFound(_0x1bbf27,null))[_0x2a58('0x28')](saveUpdates(_0x184e64['body'],null))[_0x2a58('0x28')](respondWithResult(_0x1bbf27,null))[_0x2a58('0x49')](handleError(_0x1bbf27,null));};exports[_0x2a58('0x27')]=function(_0x32d148,_0x27ca89){return db[_0x2a58('0x44')]['find']({'where':{'id':_0x32d148[_0x2a58('0x4b')]['id']}})[_0x2a58('0x28')](handleEntityNotFound(_0x27ca89,null))[_0x2a58('0x28')](removeEntity(_0x27ca89,null))[_0x2a58('0x49')](handleError(_0x27ca89,null));};
\ No newline at end of file
index 3e34b34..9715909 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['./pause.attributes','exports','define','Pause','lodash','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x12a8df,_0x58f96c){var _0x19e860=function(_0xbbad37){while(--_0xbbad37){_0x12a8df['push'](_0x12a8df['shift']());}};_0x19e860(++_0x58f96c);}(_0x1cb9,0x14e));var _0x91cb=function(_0x139a48,_0x5957c9){_0x139a48=_0x139a48-0x0;var _0x5e8736=_0x1cb9[_0x139a48];return _0x5e8736;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2c4753..0137687 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x32aa80,_0x46b180){var _0x1bde28=function(_0x96ce92){while(--_0x96ce92){_0x32aa80['push'](_0x32aa80['shift']());}};_0x1bde28(++_0x46b180);}(_0xb10b,0x12a));var _0xbb10=function(_0x3feccc,_0x5534c7){_0x3feccc=_0x3feccc-0x0;var _0x2c13b5=_0xb10b[_0x3feccc];return _0x2c13b5;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x110e33,_0xf38476){var _0x4d364e=function(_0x518871){while(--_0x518871){_0x110e33['push'](_0x110e33['shift']());}};_0x4d364e(++_0xf38476);}(_0xb10b,0x12a));var _0xbb10=function(_0x426dd2,_0x4b0012){_0x426dd2=_0x426dd2-0x0;var _0x4bc76c=_0xb10b[_0x426dd2];return _0x4bc76c;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index db6c9e4..8bdac9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['upload','webhookPost','put','delete','multer','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./plugin.controller','get','isAuthenticated','index','/webhook','/:id','show','/:id/download','download','diskStorage','join','root','%s-%s%s','basename','originalname','now','extname','single','file'];(function(_0x237f8b,_0xc5eddb){var _0x423f94=function(_0x1f18f9){while(--_0x1f18f9){_0x237f8b['push'](_0x237f8b['shift']());}};_0x423f94(++_0xc5eddb);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x5975d1,_0x4b1567){_0x5975d1=_0x5975d1-0x0;var _0x4080cd=_0x4d9e[_0x5975d1];return _0x4080cd;};'use strict';var multer=require(_0xe4d9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xe4d9('0x1'));var express=require('express');var router=express[_0xe4d9('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xe4d9('0x3'));var interaction=require(_0xe4d9('0x4'));var config=require('../../config/environment');var controller=require(_0xe4d9('0x5'));router[_0xe4d9('0x6')]('/',auth[_0xe4d9('0x7')](),controller[_0xe4d9('0x8')]);router[_0xe4d9('0x6')](_0xe4d9('0x9'),controller['webhookGet']);router[_0xe4d9('0x6')](_0xe4d9('0xa'),auth[_0xe4d9('0x7')](),controller[_0xe4d9('0xb')]);router[_0xe4d9('0x6')](_0xe4d9('0xc'),auth['isAuthenticated'](),controller[_0xe4d9('0xd')]);var upload=multer({'storage':multer[_0xe4d9('0xe')]({'destination':function(_0x32eb8a,_0x3575ac,_0xddd1fb){_0xddd1fb(null,path[_0xe4d9('0xf')](config[_0xe4d9('0x10')],'server/files/plugins'));},'filename':function(_0x5ee099,_0x580c50,_0x4e0d15){_0x580c50['originalname']=_0x580c50['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4e0d15(null,util['format'](_0xe4d9('0x11'),path[_0xe4d9('0x12')](_0x580c50[_0xe4d9('0x13')],path['extname'](_0x580c50[_0xe4d9('0x13')])),Date[_0xe4d9('0x14')](),path[_0xe4d9('0x15')](_0x580c50[_0xe4d9('0x13')])));}})});router['post']('/',upload[_0xe4d9('0x16')](_0xe4d9('0x17')),controller[_0xe4d9('0x18')]);router['post']('/webhook',controller[_0xe4d9('0x19')]);router[_0xe4d9('0x1a')]('/:id',auth[_0xe4d9('0x7')](),controller['update']);router[_0xe4d9('0x1b')](_0xe4d9('0xa'),auth[_0xe4d9('0x7')](),controller[_0xe4d9('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x2dae=['put','update','delete','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','isAuthenticated','show','download','diskStorage','join','root','originalname','replace','format','%s-%s%s','basename','extname','post','file','upload'];(function(_0x595730,_0x56689f){var _0x193585=function(_0xb4ba68){while(--_0xb4ba68){_0x595730['push'](_0x595730['shift']());}};_0x193585(++_0x56689f);}(_0x2dae,0xc3));var _0xe2da=function(_0x4c2dfc,_0x4814c0){_0x4c2dfc=_0x4c2dfc-0x0;var _0xfd728d=_0x2dae[_0x4c2dfc];return _0xfd728d;};'use strict';var multer=require(_0xe2da('0x0'));var util=require('util');var path=require(_0xe2da('0x1'));var timeout=require(_0xe2da('0x2'));var express=require(_0xe2da('0x3'));var router=express[_0xe2da('0x4')]();var fs_extra=require(_0xe2da('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe2da('0x6'));var config=require(_0xe2da('0x7'));var controller=require(_0xe2da('0x8'));router[_0xe2da('0x9')]('/',auth['isAuthenticated'](),controller[_0xe2da('0xa')]);router[_0xe2da('0x9')](_0xe2da('0xb'),controller[_0xe2da('0xc')]);router[_0xe2da('0x9')](_0xe2da('0xd'),auth[_0xe2da('0xe')](),controller[_0xe2da('0xf')]);router[_0xe2da('0x9')]('/:id/download',auth[_0xe2da('0xe')](),controller[_0xe2da('0x10')]);var upload=multer({'storage':multer[_0xe2da('0x11')]({'destination':function(_0x17086c,_0x3c1309,_0x44ec3e){_0x44ec3e(null,path[_0xe2da('0x12')](config[_0xe2da('0x13')],'server/files/plugins'));},'filename':function(_0xb98909,_0x5200b1,_0x4377c6){_0x5200b1[_0xe2da('0x14')]=_0x5200b1[_0xe2da('0x14')][_0xe2da('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4377c6(null,util[_0xe2da('0x16')](_0xe2da('0x17'),path[_0xe2da('0x18')](_0x5200b1['originalname'],path[_0xe2da('0x19')](_0x5200b1['originalname'])),Date['now'](),path[_0xe2da('0x19')](_0x5200b1[_0xe2da('0x14')])));}})});router[_0xe2da('0x1a')]('/',upload['single'](_0xe2da('0x1b')),controller[_0xe2da('0x1c')]);router[_0xe2da('0x1a')](_0xe2da('0xb'),controller['webhookPost']);router[_0xe2da('0x1d')](_0xe2da('0xd'),auth[_0xe2da('0xe')](),controller[_0xe2da('0x1e')]);router[_0xe2da('0x1f')]('/:id',auth[_0xe2da('0xe')](),controller[_0xe2da('0x1f')]);module['exports']=router;
\ No newline at end of file
index 01a2a91..f91b550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2291=['TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','sequelize','STRING','ENUM','html','script'];(function(_0x5c2c02,_0x451b04){var _0x447777=function(_0x16804a){while(--_0x16804a){_0x5c2c02['push'](_0x5c2c02['shift']());}};_0x447777(++_0x451b04);}(_0x2291,0xcb));var _0x1229=function(_0x1db9be,_0x5bac02){_0x1db9be=_0x1db9be-0x0;var _0x5cb6e8=_0x2291[_0x1db9be];return _0x5cb6e8;};'use strict';var Sequelize=require(_0x1229('0x0'));module['exports']={'name':{'type':Sequelize[_0x1229('0x1')]},'type':{'type':Sequelize[_0x1229('0x2')](_0x1229('0x3'),_0x1229('0x4'))},'description':{'type':Sequelize[_0x1229('0x5')]},'version':{'type':Sequelize[_0x1229('0x5')]},'path':{'type':Sequelize[_0x1229('0x1')],'comment':_0x1229('0x6')},'active':{'type':Sequelize[_0x1229('0x7')],'defaultValue':0x0,'comment':_0x1229('0x8')},'sidebar':{'type':Sequelize['ENUM'](_0x1229('0x9'),_0x1229('0xa'),_0x1229('0xb'),_0x1229('0xc')),'defaultValue':_0x1229('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x1229('0x1')]},'adminUrl':{'type':Sequelize[_0x1229('0x1')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0x1229('0x1')]},'scriptPath':{'type':Sequelize[_0x1229('0x1')]}};
\ No newline at end of file
+var _0x5722=['sequelize','exports','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','STRING'];(function(_0x90a921,_0x58d995){var _0x44b226=function(_0x4859f4){while(--_0x4859f4){_0x90a921['push'](_0x90a921['shift']());}};_0x44b226(++_0x58d995);}(_0x5722,0xe0));var _0x2572=function(_0x509182,_0x38be91){_0x509182=_0x509182-0x0;var _0x408e7f=_0x5722[_0x509182];return _0x408e7f;};'use strict';var Sequelize=require(_0x2572('0x0'));module[_0x2572('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x2572('0x2'),_0x2572('0x3'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0x2572('0x4')]},'path':{'type':Sequelize['STRING'],'comment':_0x2572('0x5')},'active':{'type':Sequelize[_0x2572('0x6')],'defaultValue':0x0,'comment':_0x2572('0x7')},'sidebar':{'type':Sequelize['ENUM'](_0x2572('0x8'),_0x2572('0x9'),_0x2572('0xa'),_0x2572('0xb')),'defaultValue':_0x2572('0xa'),'comment':_0x2572('0xc')},'icon':{'type':Sequelize[_0x2572('0xd')]},'adminUrl':{'type':Sequelize[_0x2572('0xd')]},'agentUrl':{'type':Sequelize[_0x2572('0xd')]},'scriptName':{'type':Sequelize[_0x2572('0xd')]},'scriptPath':{'type':Sequelize[_0x2572('0xd')]}};
\ No newline at end of file
index 35669c3..41d7706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe203=['length','query','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','download','join','root','format','%s.zip','basename','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Temporary\x20file\x20removed','upload','file','filename','extname','server/files/plugins','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','readdirSync','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','html','test','plugins','Warning:\x20agent\x20view\x20not\x20specified','script','create','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','register','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','then','destroy','get','Plugins','UserProfileResource','sendStatus','error','stack','name','send','index','map','Plugin','rawAttributes','model','filters','intersection','fields','attributes'];(function(_0xae01dd,_0xbd8a3c){var _0x8c26df=function(_0x359827){while(--_0x359827){_0xae01dd['push'](_0xae01dd['shift']());}};_0x8c26df(++_0xbd8a3c);}(_0xe203,0x114));var _0x3e20=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe203[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x3e20('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3e20('0x1'));var jsonpatch=require(_0x3e20('0x2'));var rp=require(_0x3e20('0x3'));var moment=require(_0x3e20('0x4'));var BPromise=require(_0x3e20('0x5'));var Mustache=require(_0x3e20('0x6'));var util=require(_0x3e20('0x7'));var path=require(_0x3e20('0x8'));var sox=require(_0x3e20('0x9'));var csv=require('to-csv');var ejs=require(_0x3e20('0xa'));var fs=require('fs');var fs_extra=require(_0x3e20('0xb'));var _=require(_0x3e20('0xc'));var squel=require(_0x3e20('0xd'));var crypto=require(_0x3e20('0xe'));var jsforce=require(_0x3e20('0xf'));var deskjs=require(_0x3e20('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3e20('0x11'));var extract=require(_0x3e20('0x12'));var rimraf=require(_0x3e20('0x13'));var archiver=require(_0x3e20('0x14'));var Redis=require(_0x3e20('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x3e20('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3e20('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x3e20('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x3e20('0x19')],{'host':_0x3e20('0x1a'),'port':0x18eb});var socket=require(_0x3e20('0x1b'))(new Redis(config[_0x3e20('0x19')]));require('./plugin.socket')[_0x3e20('0x1c')](socket);function respondWithStatusCode(_0x3d317f,_0xf0ace9){_0xf0ace9=_0xf0ace9||0xcc;return function(_0x18c3bf){if(_0x18c3bf){return _0x3d317f['sendStatus'](_0xf0ace9);}return _0x3d317f['status'](_0xf0ace9)[_0x3e20('0x1d')]();};}function respondWithResult(_0x3d9bde,_0x17a84e){_0x17a84e=_0x17a84e||0xc8;return function(_0x3a5cf0){if(_0x3a5cf0){return _0x3d9bde['status'](_0x17a84e)['json'](_0x3a5cf0);}};}function respondWithFilteredResult(_0x42ac25,_0x1add71){return function(_0x5200f9){if(_0x5200f9){var _0x419ff5=typeof _0x1add71[_0x3e20('0x1e')]===_0x3e20('0x1f')&&typeof _0x1add71[_0x3e20('0x20')]===_0x3e20('0x1f');var _0x4c6710=_0x5200f9['count'];var _0x3ba5f1=_0x419ff5?0x0:_0x1add71[_0x3e20('0x1e')];var _0x13bc37=_0x419ff5?_0x5200f9[_0x3e20('0x21')]:_0x1add71['offset']+_0x1add71[_0x3e20('0x20')];var _0x2ba444;if(_0x13bc37>=_0x4c6710){_0x13bc37=_0x4c6710;_0x2ba444=0xc8;}else{_0x2ba444=0xce;}_0x42ac25[_0x3e20('0x22')](_0x2ba444);return _0x42ac25[_0x3e20('0x23')](_0x3e20('0x24'),_0x3ba5f1+'-'+_0x13bc37+'/'+_0x4c6710)[_0x3e20('0x25')](_0x5200f9);}return null;};}function patchUpdates(_0x2e6561){return function(_0x32deb1){try{jsonpatch[_0x3e20('0x26')](_0x32deb1,_0x2e6561,!![]);}catch(_0x534e77){return BPromise[_0x3e20('0x27')](_0x534e77);}return _0x32deb1[_0x3e20('0x28')]();};}function saveUpdates(_0x2e701b,_0x137db8){return function(_0x41dd0){if(_0x41dd0){return _0x41dd0['update'](_0x2e701b)[_0x3e20('0x29')](function(_0x4aedb6){return _0x4aedb6;});}return null;};}function removeEntity(_0x51375a,_0xa428d0){return function(_0x243556){if(_0x243556){return _0x243556[_0x3e20('0x2a')]()[_0x3e20('0x29')](function(){var _0x7fcf=_0x243556[_0x3e20('0x2b')]({'plain':!![]});var _0x1f7d5c=_0x3e20('0x2c');return db[_0x3e20('0x2d')]['destroy']({'where':{'type':_0x1f7d5c,'resourceId':_0x7fcf['id']}})['then'](function(){return _0x243556;});})[_0x3e20('0x29')](function(){_0x51375a['status'](0xcc)[_0x3e20('0x1d')]();});}};}function handleEntityNotFound(_0x4b4d58,_0x53acb0){return function(_0x12a748){if(!_0x12a748){_0x4b4d58[_0x3e20('0x2e')](0x194);}return _0x12a748;};}function handleError(_0x4d4692,_0x21f731){_0x21f731=_0x21f731||0x1f4;return function(_0x2f8f9c){logger[_0x3e20('0x2f')](_0x2f8f9c[_0x3e20('0x30')]);if(_0x2f8f9c[_0x3e20('0x31')]){delete _0x2f8f9c[_0x3e20('0x31')];}_0x4d4692[_0x3e20('0x22')](_0x21f731)[_0x3e20('0x32')](_0x2f8f9c);};}exports[_0x3e20('0x33')]=function(_0x2c57a7,_0x3630af){var _0x3dbb38={},_0x15d9f7={},_0x35c5b4={'count':0x0,'rows':[]};var _0x3143c8=_[_0x3e20('0x34')](db[_0x3e20('0x35')][_0x3e20('0x36')],function(_0x133506){return{'name':_0x133506['fieldName'],'type':_0x133506['type']['key']};});_0x15d9f7[_0x3e20('0x37')]=_[_0x3e20('0x34')](_0x3143c8,_0x3e20('0x31'));_0x15d9f7['query']=_['keys'](_0x2c57a7['query']);_0x15d9f7[_0x3e20('0x38')]=_[_0x3e20('0x39')](_0x15d9f7['model'],_0x15d9f7['query']);_0x3dbb38['attributes']=_['intersection'](_0x15d9f7['model'],qs[_0x3e20('0x3a')](_0x2c57a7['query']['fields']));_0x3dbb38[_0x3e20('0x3b')]=_0x3dbb38[_0x3e20('0x3b')][_0x3e20('0x3c')]?_0x3dbb38['attributes']:_0x15d9f7[_0x3e20('0x37')];if(!_0x2c57a7[_0x3e20('0x3d')][_0x3e20('0x3e')](_0x3e20('0x3f'))){_0x3dbb38[_0x3e20('0x20')]=qs[_0x3e20('0x20')](_0x2c57a7['query']['limit']);_0x3dbb38[_0x3e20('0x1e')]=qs['offset'](_0x2c57a7[_0x3e20('0x3d')]['offset']);}_0x3dbb38['order']=qs[_0x3e20('0x40')](_0x2c57a7[_0x3e20('0x3d')][_0x3e20('0x40')]);_0x3dbb38[_0x3e20('0x41')]=qs[_0x3e20('0x38')](_['pick'](_0x2c57a7[_0x3e20('0x3d')],_0x15d9f7[_0x3e20('0x38')]),_0x3143c8);if(_0x2c57a7[_0x3e20('0x3d')][_0x3e20('0x42')]){_0x3dbb38['where']=_['merge'](_0x3dbb38[_0x3e20('0x41')],{'$or':_['map'](_0x3143c8,function(_0x1a3d13){if(_0x1a3d13[_0x3e20('0x43')]!==_0x3e20('0x44')){var _0x66e537={};_0x66e537[_0x1a3d13[_0x3e20('0x31')]]={'$like':'%'+_0x2c57a7[_0x3e20('0x3d')][_0x3e20('0x42')]+'%'};return _0x66e537;}})});}_0x3dbb38=_[_0x3e20('0x45')]({},_0x3dbb38,_0x2c57a7[_0x3e20('0x46')]);var _0x3dd0d3={'where':_0x3dbb38['where']};return db[_0x3e20('0x35')][_0x3e20('0x21')](_0x3dd0d3)['then'](function(_0x5ae3ae){_0x35c5b4[_0x3e20('0x21')]=_0x5ae3ae;if(_0x2c57a7[_0x3e20('0x3d')][_0x3e20('0x47')]){_0x3dbb38[_0x3e20('0x48')]=[{'all':!![]}];}return db[_0x3e20('0x35')][_0x3e20('0x49')](_0x3dbb38);})[_0x3e20('0x29')](function(_0x248c35){_0x35c5b4[_0x3e20('0x4a')]=_0x248c35;return _0x35c5b4;})['then'](respondWithFilteredResult(_0x3630af,_0x3dbb38))[_0x3e20('0x4b')](handleError(_0x3630af,null));};exports[_0x3e20('0x4c')]=function(_0x11d050,_0x7f5cf4){var _0x480238={'raw':!![],'where':{'id':_0x11d050[_0x3e20('0x4d')]['id']}},_0x3dd3e3={};_0x3dd3e3[_0x3e20('0x37')]=_['keys'](db[_0x3e20('0x35')][_0x3e20('0x36')]);_0x3dd3e3[_0x3e20('0x3d')]=_['keys'](_0x11d050[_0x3e20('0x3d')]);_0x3dd3e3['filters']=_[_0x3e20('0x39')](_0x3dd3e3[_0x3e20('0x37')],_0x3dd3e3['query']);_0x480238[_0x3e20('0x3b')]=_[_0x3e20('0x39')](_0x3dd3e3[_0x3e20('0x37')],qs[_0x3e20('0x3a')](_0x11d050[_0x3e20('0x3d')][_0x3e20('0x3a')]));_0x480238['attributes']=_0x480238[_0x3e20('0x3b')][_0x3e20('0x3c')]?_0x480238['attributes']:_0x3dd3e3[_0x3e20('0x37')];if(_0x11d050[_0x3e20('0x3d')]['includeAll']){_0x480238[_0x3e20('0x48')]=[{'all':!![]}];}_0x480238=_[_0x3e20('0x45')]({},_0x480238,_0x11d050[_0x3e20('0x46')]);return db['Plugin'][_0x3e20('0x4e')](_0x480238)['then'](handleEntityNotFound(_0x7f5cf4,null))[_0x3e20('0x29')](respondWithResult(_0x7f5cf4,null))[_0x3e20('0x4b')](handleError(_0x7f5cf4,null));};exports[_0x3e20('0x4f')]=function(_0x1ccbfc,_0x34c79e,_0x20a45c){return db[_0x3e20('0x35')][_0x3e20('0x4e')]({'where':{'id':_0x1ccbfc[_0x3e20('0x4d')]['id']},'attributes':[_0x3e20('0x31'),_0x3e20('0x8')],'raw':!![]})[_0x3e20('0x29')](handleEntityNotFound(_0x34c79e,null))[_0x3e20('0x29')](function(_0x34e119){if(_0x34e119){var _0x5aed34=path[_0x3e20('0x50')](config[_0x3e20('0x51')],'server/files/plugins',util[_0x3e20('0x52')](_0x3e20('0x53'),path[_0x3e20('0x54')](_0x34e119[_0x3e20('0x8')])));var _0x5ab5f0=fs['createWriteStream'](_0x5aed34);var _0x29f5c3=archiver('zip',{'zlib':{'level':0x9}});_0x29f5c3['on'](_0x3e20('0x55'),function(_0x5405c5){if(_0x5405c5[_0x3e20('0x56')]===_0x3e20('0x57')){logger['error'](_0x5405c5);}else{throw new db[(_0x3e20('0x58'))][(_0x3e20('0x59'))](_0x3e20('0x5a'));}});_0x29f5c3['on'](_0x3e20('0x2f'),function(_0x12754f){throw new db[(_0x3e20('0x58'))][(_0x3e20('0x59'))](_0x3e20('0x5a'));});_0x29f5c3[_0x3e20('0x5b')](_0x5ab5f0);_0x29f5c3[_0x3e20('0x5c')](_0x3e20('0x5d'),{'cwd':path[_0x3e20('0x50')](config['root'],'server/files/plugins',path[_0x3e20('0x5e')](_0x34e119['path'])),'ignore':[path[_0x3e20('0x50')](path[_0x3e20('0x54')](_0x34e119[_0x3e20('0x8')]),_0x3e20('0x5f')),path[_0x3e20('0x50')](path['basename'](_0x34e119['path']),_0x3e20('0x60'))],'nodir':!![]})[_0x3e20('0x61')]();_0x5ab5f0['on']('close',function(){if(!fs['existsSync'](_0x5aed34)){throw new db[(_0x3e20('0x58'))][(_0x3e20('0x59'))]('Plugin\x20not\x20found');}return _0x34c79e[_0x3e20('0x4f')](_0x5aed34,util[_0x3e20('0x52')](_0x3e20('0x53'),path[_0x3e20('0x54')](_0x34e119[_0x3e20('0x8')])),function(_0x23ed46){if(_0x23ed46){throw new db[(_0x3e20('0x58'))][(_0x3e20('0x59'))](_0x3e20('0x62'));}fs[_0x3e20('0x63')](_0x5aed34);logger[_0x3e20('0x64')]('Download\x20completed');logger[_0x3e20('0x64')](_0x3e20('0x65'));});});}return null;})[_0x3e20('0x4b')](handleError(_0x34c79e,null));};exports[_0x3e20('0x66')]=function(_0x4a48f8,_0x4f5b81,_0x235b94){var _0x5a9f0b=path['basename'](_0x4a48f8[_0x3e20('0x67')][_0x3e20('0x68')],path[_0x3e20('0x69')](_0x4a48f8[_0x3e20('0x67')][_0x3e20('0x68')]));var _0x2c8fd4=path['join'](config['root'],'server/files/plugins',_0x4a48f8['file'][_0x3e20('0x68')]);var _0xfb0435=path[_0x3e20('0x50')](config[_0x3e20('0x51')],_0x3e20('0x6a'),_0x5a9f0b);logger[_0x3e20('0x64')]('Plugin\x20upload\x20filepath:\x20%s',_0x2c8fd4);logger[_0x3e20('0x64')]('Plugin\x20upload\x20destination:\x20%s',_0xfb0435);try{fs[_0x3e20('0x6b')](_0x2c8fd4,parseInt(_0x3e20('0x6c'),0x8));extract(_0x2c8fd4,{'dir':_0xfb0435},function(_0x28f6f5){if(_0x28f6f5){logger['error'](_0x28f6f5);handleError(_0x28f6f5,!![]);};var _0x57c81e=fs['readdirSync'](_0xfb0435);if(_0x57c81e[_0x3e20('0x3c')]>0x1){removeReferences(_0x2c8fd4,_0xfb0435);logger['error'](_0x3e20('0x6d'));return _0x235b94(new Error(_0x3e20('0x6d')));}var _0x1f45e0=fs[_0x3e20('0x6e')](path[_0x3e20('0x50')](_0xfb0435,_0x57c81e[0x0]));if(_0x1f45e0[_0x3e20('0x6f')]()){removeReferences(_0x2c8fd4,_0xfb0435);logger[_0x3e20('0x2f')](_0x3e20('0x6d'));return _0x235b94(new Error(_0x3e20('0x6d')));}if(_0x1f45e0['isDirectory']()){var _0x312ed0=fs[_0x3e20('0x70')](path['join'](_0xfb0435,_0x57c81e[0x0]));if(_0x312ed0[_0x3e20('0x3c')]===0x0){removeReferences(_0x2c8fd4,_0xfb0435);logger[_0x3e20('0x2f')]('Invalid\x20plugin\x20structure');return _0x235b94(new Error(_0x3e20('0x6d')));}var _0x2c3e83=_0x312ed0[_0x3e20('0x71')](function(_0x1b015b){return _0x1b015b===_0x3e20('0x72');});if(!_0x2c3e83){return _0x235b94(new Error(_0x3e20('0x73')));}var _0x40dea3=fs[_0x3e20('0x74')](path[_0x3e20('0x50')](_0xfb0435,_0x57c81e[0x0],'manifest.json'));var _0x16a6eb=JSON[_0x3e20('0x75')](_0x40dea3);if(_0x3e20('0x1f')==typeof _0x16a6eb['name']){return _0x235b94(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x3e20('0x1f')==typeof _0x16a6eb['type']){return _0x235b94(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0x3e20('0x1f')==typeof _0x16a6eb[_0x3e20('0x76')]){return _0x235b94(new Error(_0x3e20('0x77')));}if(_0x3e20('0x1f')==typeof _0x16a6eb[_0x3e20('0x78')]){return _0x235b94(new Error(_0x3e20('0x79')));}if(_0x16a6eb[_0x3e20('0x43')]==='html'){if(_0x3e20('0x1f')==typeof _0x16a6eb['parameters']['views']){return _0x235b94(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x3e20('0x1f')==typeof _0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7a')][_0x3e20('0x7b')]&&_0x3e20('0x1f')==typeof _0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7a')][_0x3e20('0x7c')]){return _0x235b94(new Error(_0x3e20('0x7d')));}}else if(_0x16a6eb['type']==='script'){if(_0x3e20('0x1f')==typeof _0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7e')]){return _0x235b94(new Error(_0x3e20('0x7f')));}if(_0x3e20('0x1f')==typeof _0x16a6eb[_0x3e20('0x78')][_0x3e20('0x80')]){return _0x235b94(new Error(_0x3e20('0x81')));}}else{return _0x235b94(new Error(_0x3e20('0x82')));}var _0x74decd=_0x16a6eb[_0x3e20('0x31')];var _0x185014=_0x16a6eb[_0x3e20('0x83')];var _0x5759e7=_0x16a6eb['type'];var _0x4ece4f=_0x16a6eb[_0x3e20('0x84')]?_0x16a6eb[_0x3e20('0x84')]:_0x3e20('0x85');var _0xe82c4c=_0x16a6eb[_0x3e20('0x86')]?_0x16a6eb[_0x3e20('0x86')]:_0x3e20('0x87');var _0xe9ab2d='';var _0x57b086='';var _0x505878='';var _0x56424b='';var _0x2de9ba=_0x16a6eb[_0x3e20('0x76')];if(_0x5759e7===_0x3e20('0x88')){if(_0x3e20('0x1f')!=typeof _0x16a6eb[_0x3e20('0x78')]['views'][_0x3e20('0x7b')]){var _0x3d584e=_0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7a')][_0x3e20('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x3e20('0x89')](_0x3d584e)){_0xe9ab2d=path['join'](_0x3e20('0x8a'),_0x5a9f0b,_0x57c81e[0x0],_0x3d584e);}else{_0xe9ab2d=_0x3d584e;}}else{logger['info']('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x3e20('0x1f')!=typeof _0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7a')][_0x3e20('0x7c')]){var _0x3a7d9d=_0x16a6eb[_0x3e20('0x78')]['views'][_0x3e20('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0x3e20('0x89')](_0x3a7d9d)){_0x57b086=path[_0x3e20('0x50')]('plugins',_0x5a9f0b,_0x57c81e[0x0],_0x3a7d9d);}else{_0x57b086=_0x3a7d9d;}}else{logger['info'](_0x3e20('0x8b'));}}else if(_0x5759e7===_0x3e20('0x8c')){_0x505878=_0x16a6eb[_0x3e20('0x78')]['scriptName'];_0x56424b=_0x16a6eb[_0x3e20('0x78')][_0x3e20('0x80')];if(_0x3e20('0x1f')!=typeof _0x16a6eb['parameters'][_0x3e20('0x7a')]){if(_0x3e20('0x1f')!=typeof _0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7a')][_0x3e20('0x7b')]){var _0x3d584e=_0x16a6eb[_0x3e20('0x78')][_0x3e20('0x7a')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x3e20('0x89')](_0x3d584e)){_0xe9ab2d=path['join'](_0x3e20('0x8a'),_0x5a9f0b,_0x57c81e[0x0],_0x3d584e);}else{_0xe9ab2d=_0x3d584e;}}if(_0x3e20('0x1f')!=typeof _0x16a6eb['parameters'][_0x3e20('0x7a')][_0x3e20('0x7c')]){var _0x3a7d9d=_0x16a6eb['parameters'][_0x3e20('0x7a')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x3e20('0x89')](_0x3a7d9d)){_0x57b086=path[_0x3e20('0x50')](_0x3e20('0x8a'),_0x5a9f0b,_0x57c81e[0x0],_0x3a7d9d);}else{_0x57b086=_0x3a7d9d;}}}}var _0x505ee2={'name':_0x74decd,'description':_0x185014,'path':path['join'](_0x5a9f0b,_0x57c81e[0x0]),'type':_0x5759e7,'sidebar':_0x4ece4f,'icon':_0xe82c4c,'adminUrl':_0xe9ab2d,'agentUrl':_0x57b086,'scriptName':_0x505878,'scriptPath':_0x56424b,'version':_0x2de9ba};removeReferences(_0x2c8fd4,null);return db[_0x3e20('0x35')][_0x3e20('0x8d')](_0x505ee2)[_0x3e20('0x29')](function(_0x3e8c6d){var _0x51b941={'role':_0x4a48f8[_0x3e20('0x8e')]['role'],'userProfileId':_0x4a48f8[_0x3e20('0x8e')][_0x3e20('0x8f')]};if(!_0x51b941)throw new Error(_0x3e20('0x90'));if(_0x51b941[_0x3e20('0x91')]===_0x3e20('0x92')){var _0x3a2218=_0x3e8c6d[_0x3e20('0x2b')]({'plain':!![]});return db['UserProfileSection'][_0x3e20('0x4e')]({'where':{'name':_0x3e20('0x2c'),'userProfileId':_0x51b941[_0x3e20('0x8f')]},'raw':!![]})[_0x3e20('0x29')](function(_0x11be3f){if(_0x11be3f&&_0x11be3f[_0x3e20('0x93')]===0x0){return db[_0x3e20('0x2d')]['create']({'name':_0x3a2218[_0x3e20('0x31')],'resourceId':_0x3a2218['id'],'type':_0x11be3f[_0x3e20('0x31')],'sectionId':_0x11be3f['id']},{})[_0x3e20('0x29')](function(){return _0x3e8c6d;});}else{return _0x3e8c6d;}})[_0x3e20('0x4b')](function(_0x3aabe4){logger['error'](_0x3e20('0x94'),_0x3aabe4);throw _0x3aabe4;});}return _0x3e8c6d;})[_0x3e20('0x29')](respondWithResult(_0x4f5b81,null))[_0x3e20('0x4b')](handleError(_0x4f5b81,null));}});}catch(_0x4c17dc){_0x4f5b81['status'](0x1f4)[_0x3e20('0x32')](_0x4c17dc);}};function removeReferences(_0x3116a5,_0x3fe844){try{if(_0x3116a5){fs[_0x3e20('0x63')](_0x3116a5);logger[_0x3e20('0x64')](_0x3e20('0x95'));}if(_0x3fe844){rimraf(_0x3fe844,function(){});logger['info'](_0x3e20('0x96'));}}catch(_0xc8cde1){logger[_0x3e20('0x2f')](_0xc8cde1);}}exports['update']=function(_0x3ade01,_0x48798a,_0x360cc4){return db['Plugin'][_0x3e20('0x4e')]({'where':{'id':_0x3ade01[_0x3e20('0x4d')]['id']}})[_0x3e20('0x29')](handleEntityNotFound(_0x48798a,null))['then'](saveUpdates(_0x3ade01['body'],null))[_0x3e20('0x29')](respondWithResult(_0x48798a,null))[_0x3e20('0x4b')](handleError(_0x48798a,null));};exports[_0x3e20('0x97')]=function(_0x16f865,_0x5d62ac,_0x59c905){return db['Plugin'][_0x3e20('0x4e')]({'where':{'id':_0x16f865[_0x3e20('0x4d')]['id']}})[_0x3e20('0x29')](function(_0x41c336){if(_0x41c336){return _0x41c336[_0x3e20('0x2a')]();}})[_0x3e20('0x29')](function(_0x2a03b0){rimraf(path['join'](config['root'],'server/files/plugins',path[_0x3e20('0x5e')](_0x2a03b0[_0x3e20('0x8')])),function(){});return _0x2a03b0;})['then'](handleEntityNotFound(_0x5d62ac,null))[_0x3e20('0x29')](respondWithStatusCode(_0x5d62ac,null))[_0x3e20('0x4b')](handleError(_0x5d62ac,null));};exports[_0x3e20('0x98')]=function(_0x10d299,_0x50127b,_0x22e1a5){return BPromise[_0x3e20('0x99')]()[_0x3e20('0x29')](function(){if(!_0x10d299[_0x3e20('0x3d')][_0x3e20('0x8')]){throw new Error(_0x3e20('0x9a'));}if(!_0x10d299[_0x3e20('0x3d')][_0x3e20('0x9b')]){throw new Error(_0x3e20('0x9c'));}var _0x3a7709=_0x10d299['query'][_0x3e20('0x9d')]?_0x10d299[_0x3e20('0x3d')]['hostname']+':'+_0x10d299[_0x3e20('0x3d')]['port']:_0x3e20('0x9e')+_0x10d299[_0x3e20('0x3d')][_0x3e20('0x9b')];var _0xd5ccd6=_0x10d299[_0x3e20('0x3d')][_0x3e20('0x25')]?_0x10d299[_0x3e20('0x3d')][_0x3e20('0x25')]:!![];var _0x1e3a84=_0x10d299[_0x3e20('0x3d')]['encoding']?_0x10d299['query'][_0x3e20('0x9f')]:null;var _0x3c04b4={'method':_0x10d299[_0x3e20('0xa0')],'uri':util[_0x3e20('0x52')](_0x3e20('0xa1'),_0x3a7709,_0x10d299['query'][_0x3e20('0x8')]),'json':_0xd5ccd6,'resolveWithFullResponse':!![],'encoding':_0x1e3a84,'qs':_0x10d299[_0x3e20('0x3d')]};if(_0x10d299[_0x3e20('0xa2')]){_0x3c04b4[_0x3e20('0xa2')]=_0x10d299[_0x3e20('0xa2')];if(_0x3c04b4[_0x3e20('0xa2')][_0x3e20('0xa3')]){delete _0x3c04b4['headers'][_0x3e20('0xa3')];}}if(_0x3c04b4[_0x3e20('0xa2')][_0x3e20('0xa4')]){delete _0x3c04b4['headers'][_0x3e20('0xa4')];}return rp(_0x3c04b4);})[_0x3e20('0x29')](function(_0x406c24){if(_0x406c24){_0x50127b[_0x3e20('0x23')](_0x406c24[_0x3e20('0xa2')]);logger[_0x3e20('0x64')](_0x406c24[_0x3e20('0x8e')]);if(_[_0x3e20('0xa5')](_0x10d299[_0x3e20('0x3d')]['path'],_0x3e20('0x4f'))&&_0x406c24[_0x3e20('0xa6')]==0x1f4){return _0x50127b[_0x3e20('0x2e')](_0x406c24[_0x3e20('0xa6')]);}else{return _0x50127b[_0x3e20('0x22')](_0x406c24['statusCode'])[_0x3e20('0x32')](_0x406c24[_0x3e20('0x8e')]);}}else{return _0x50127b[_0x3e20('0x2e')](0xc8);}})[_0x3e20('0x4b')](handleError(_0x50127b,null));};exports[_0x3e20('0xa7')]=function(_0x27ef0d,_0x2eeafa,_0xb760fc){return BPromise[_0x3e20('0x99')]()[_0x3e20('0x29')](function(){if(!_0x27ef0d[_0x3e20('0x3d')][_0x3e20('0x8')]){throw new Error(_0x3e20('0x9a'));}if(!_0x27ef0d[_0x3e20('0x3d')]['port']){throw new Error(_0x3e20('0x9c'));}var _0x27a1a9=_0x27ef0d[_0x3e20('0x3d')][_0x3e20('0x9d')]?_0x27ef0d[_0x3e20('0x3d')]['hostname']+':'+_0x27ef0d['query'][_0x3e20('0x9b')]:_0x3e20('0x9e')+_0x27ef0d[_0x3e20('0x3d')]['port'];var _0x2830aa=_0x27ef0d[_0x3e20('0x3d')][_0x3e20('0x25')]?_0x27ef0d[_0x3e20('0x3d')][_0x3e20('0x25')]:!![];var _0x290d4c=_0x27ef0d[_0x3e20('0x3d')]['encoding']?_0x27ef0d[_0x3e20('0x3d')]['encoding']:null;var _0x46626c={'method':_0x27ef0d[_0x3e20('0xa0')],'uri':util[_0x3e20('0x52')](_0x3e20('0xa1'),_0x27a1a9,_0x27ef0d['query']['path']),'json':_0x2830aa,'resolveWithFullResponse':!![],'encoding':_0x290d4c,'body':_0x27ef0d['body']};if(_0x27ef0d[_0x3e20('0xa2')]){_0x46626c[_0x3e20('0xa2')]=_0x27ef0d[_0x3e20('0xa2')];if(_0x46626c[_0x3e20('0xa2')][_0x3e20('0xa3')]){delete _0x46626c[_0x3e20('0xa2')][_0x3e20('0xa3')];}}if(_0x46626c[_0x3e20('0xa2')][_0x3e20('0xa4')]){delete _0x46626c[_0x3e20('0xa2')][_0x3e20('0xa4')];}return rp(_0x46626c);})[_0x3e20('0x29')](function(_0x138b0b){if(_0x138b0b){_0x2eeafa[_0x3e20('0x23')](_0x138b0b['headers']);logger[_0x3e20('0x64')](_0x138b0b[_0x3e20('0x8e')]);return _0x2eeafa['status'](_0x138b0b[_0x3e20('0xa6')])[_0x3e20('0x32')](_0x138b0b[_0x3e20('0x8e')]);}else{return _0x2eeafa[_0x3e20('0x2e')](0xc8);}})[_0x3e20('0x4b')](handleError(_0x2eeafa,null));};
\ No newline at end of file
+var _0x0a93=['defaults','localhost','socket.io-emitter','register','sendStatus','status','undefined','offset','count','Content-Range','json','apply','update','destroy','then','get','Plugins','end','stack','name','send','index','map','Plugin','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','keys','length','download','find','params','join','server/files/plugins','format','%s.zip','createWriteStream','zip','code','ENOENT','error','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','root','dirname','basename','node_modules/**/*','attachments/**/*','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','html','views','Invalid\x20manifest:\x20views\x20missing','admin','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','plugins','Warning:\x20admin\x20view\x20not\x20specified','agent','test','Warning:\x20agent\x20view\x20not\x20specified','script','scriptPath','body','role','user','UserProfileSection','autoAssociation','unlinkSync','Extracted\x20folder\x20removed','delete','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method','%s%s','headers','content-length','content-type','set','endsWith','statusCode','resolve','http://localhost:','zip-dir','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','rimraf','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0a93,0x134));var _0x30a9=function(_0x565154,_0x46399d){_0x565154=_0x565154-0x0;var _0xd0825d=_0x0a93[_0x565154];return _0xd0825d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x30a9('0x0'));var jsonpatch=require(_0x30a9('0x1'));var rp=require(_0x30a9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x30a9('0x3'));var path=require(_0x30a9('0x4'));var sox=require('sox');var csv=require(_0x30a9('0x5'));var ejs=require(_0x30a9('0x6'));var fs=require('fs');var fs_extra=require(_0x30a9('0x7'));var _=require(_0x30a9('0x8'));var squel=require(_0x30a9('0x9'));var crypto=require(_0x30a9('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var extract=require('extract-zip');var rimraf=require(_0x30a9('0xb'));var archiver=require('archiver');var Redis=require(_0x30a9('0xc'));var authService=require(_0x30a9('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x30a9('0xe'));var hardwareService=require(_0x30a9('0xf'));var logger=require(_0x30a9('0x10'))(_0x30a9('0x11'));var utils=require(_0x30a9('0x12'));var config=require(_0x30a9('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x30a9('0x14'))['db'];config[_0x30a9('0x15')]=_[_0x30a9('0x16')](config['redis'],{'host':_0x30a9('0x17'),'port':0x18eb});var socket=require(_0x30a9('0x18'))(new Redis(config[_0x30a9('0x15')]));require('./plugin.socket')[_0x30a9('0x19')](socket);function respondWithStatusCode(_0x5b3bb7,_0x3351d3){_0x3351d3=_0x3351d3||0xcc;return function(_0x4c709a){if(_0x4c709a){return _0x5b3bb7[_0x30a9('0x1a')](_0x3351d3);}return _0x5b3bb7[_0x30a9('0x1b')](_0x3351d3)['end']();};}function respondWithResult(_0x31de8c,_0x5e7ad8){_0x5e7ad8=_0x5e7ad8||0xc8;return function(_0x3ad404){if(_0x3ad404){return _0x31de8c[_0x30a9('0x1b')](_0x5e7ad8)['json'](_0x3ad404);}};}function respondWithFilteredResult(_0x259666,_0x20b8d7){return function(_0x1343f9){if(_0x1343f9){var _0x2e9156=typeof _0x20b8d7['offset']===_0x30a9('0x1c')&&typeof _0x20b8d7['limit']==='undefined';var _0x1ed723=_0x1343f9['count'];var _0x52d49b=_0x2e9156?0x0:_0x20b8d7[_0x30a9('0x1d')];var _0x36d45b=_0x2e9156?_0x1343f9[_0x30a9('0x1e')]:_0x20b8d7['offset']+_0x20b8d7['limit'];var _0x54d049;if(_0x36d45b>=_0x1ed723){_0x36d45b=_0x1ed723;_0x54d049=0xc8;}else{_0x54d049=0xce;}_0x259666['status'](_0x54d049);return _0x259666['set'](_0x30a9('0x1f'),_0x52d49b+'-'+_0x36d45b+'/'+_0x1ed723)[_0x30a9('0x20')](_0x1343f9);}return null;};}function patchUpdates(_0x546e98){return function(_0x12835d){try{jsonpatch[_0x30a9('0x21')](_0x12835d,_0x546e98,!![]);}catch(_0x11f553){return BPromise['reject'](_0x11f553);}return _0x12835d['save']();};}function saveUpdates(_0x544e46,_0x2b26ed){return function(_0x4dec4c){if(_0x4dec4c){return _0x4dec4c[_0x30a9('0x22')](_0x544e46)['then'](function(_0x12e8b1){return _0x12e8b1;});}return null;};}function removeEntity(_0x47c9ed,_0x4d29bf){return function(_0x28acda){if(_0x28acda){return _0x28acda[_0x30a9('0x23')]()[_0x30a9('0x24')](function(){var _0x5a738e=_0x28acda[_0x30a9('0x25')]({'plain':!![]});var _0x3d6098=_0x30a9('0x26');return db['UserProfileResource'][_0x30a9('0x23')]({'where':{'type':_0x3d6098,'resourceId':_0x5a738e['id']}})['then'](function(){return _0x28acda;});})[_0x30a9('0x24')](function(){_0x47c9ed[_0x30a9('0x1b')](0xcc)[_0x30a9('0x27')]();});}};}function handleEntityNotFound(_0x23b99e,_0x15d819){return function(_0x12ef5a){if(!_0x12ef5a){_0x23b99e[_0x30a9('0x1a')](0x194);}return _0x12ef5a;};}function handleError(_0x521d70,_0x3fcac9){_0x3fcac9=_0x3fcac9||0x1f4;return function(_0xb77c89){logger['error'](_0xb77c89[_0x30a9('0x28')]);if(_0xb77c89[_0x30a9('0x29')]){delete _0xb77c89[_0x30a9('0x29')];}_0x521d70[_0x30a9('0x1b')](_0x3fcac9)[_0x30a9('0x2a')](_0xb77c89);};}exports[_0x30a9('0x2b')]=function(_0x39d794,_0x25ac4f){var _0x39a79c={},_0x31533a={},_0x3d9a9a={'count':0x0,'rows':[]};var _0x589e0e=_[_0x30a9('0x2c')](db[_0x30a9('0x2d')]['rawAttributes'],function(_0x3eb4d5){return{'name':_0x3eb4d5['fieldName'],'type':_0x3eb4d5[_0x30a9('0x2e')][_0x30a9('0x2f')]};});_0x31533a[_0x30a9('0x30')]=_[_0x30a9('0x2c')](_0x589e0e,_0x30a9('0x29'));_0x31533a['query']=_['keys'](_0x39d794[_0x30a9('0x31')]);_0x31533a[_0x30a9('0x32')]=_[_0x30a9('0x33')](_0x31533a[_0x30a9('0x30')],_0x31533a[_0x30a9('0x31')]);_0x39a79c[_0x30a9('0x34')]=_[_0x30a9('0x33')](_0x31533a[_0x30a9('0x30')],qs[_0x30a9('0x35')](_0x39d794['query'][_0x30a9('0x35')]));_0x39a79c['attributes']=_0x39a79c[_0x30a9('0x34')]['length']?_0x39a79c[_0x30a9('0x34')]:_0x31533a['model'];if(!_0x39d794['query'][_0x30a9('0x36')]('nolimit')){_0x39a79c[_0x30a9('0x37')]=qs[_0x30a9('0x37')](_0x39d794['query']['limit']);_0x39a79c[_0x30a9('0x1d')]=qs[_0x30a9('0x1d')](_0x39d794[_0x30a9('0x31')][_0x30a9('0x1d')]);}_0x39a79c[_0x30a9('0x38')]=qs[_0x30a9('0x39')](_0x39d794[_0x30a9('0x31')][_0x30a9('0x39')]);_0x39a79c[_0x30a9('0x3a')]=qs[_0x30a9('0x32')](_[_0x30a9('0x3b')](_0x39d794[_0x30a9('0x31')],_0x31533a[_0x30a9('0x32')]),_0x589e0e);if(_0x39d794[_0x30a9('0x31')][_0x30a9('0x3c')]){_0x39a79c[_0x30a9('0x3a')]=_['merge'](_0x39a79c[_0x30a9('0x3a')],{'$or':_[_0x30a9('0x2c')](_0x589e0e,function(_0x384f21){if(_0x384f21[_0x30a9('0x2e')]!==_0x30a9('0x3d')){var _0x3ea439={};_0x3ea439[_0x384f21[_0x30a9('0x29')]]={'$like':'%'+_0x39d794['query'][_0x30a9('0x3c')]+'%'};return _0x3ea439;}})});}_0x39a79c=_[_0x30a9('0x3e')]({},_0x39a79c,_0x39d794[_0x30a9('0x3f')]);var _0x2c4e04={'where':_0x39a79c[_0x30a9('0x3a')]};return db[_0x30a9('0x2d')]['count'](_0x2c4e04)[_0x30a9('0x24')](function(_0x3502df){_0x3d9a9a[_0x30a9('0x1e')]=_0x3502df;if(_0x39d794[_0x30a9('0x31')][_0x30a9('0x40')]){_0x39a79c[_0x30a9('0x41')]=[{'all':!![]}];}return db[_0x30a9('0x2d')][_0x30a9('0x42')](_0x39a79c);})[_0x30a9('0x24')](function(_0x23a64a){_0x3d9a9a[_0x30a9('0x43')]=_0x23a64a;return _0x3d9a9a;})[_0x30a9('0x24')](respondWithFilteredResult(_0x25ac4f,_0x39a79c))[_0x30a9('0x44')](handleError(_0x25ac4f,null));};exports[_0x30a9('0x45')]=function(_0x26d499,_0x3029a7){var _0x1744e1={'raw':!![],'where':{'id':_0x26d499['params']['id']}},_0x36cc67={};_0x36cc67['model']=_['keys'](db[_0x30a9('0x2d')][_0x30a9('0x46')]);_0x36cc67['query']=_[_0x30a9('0x47')](_0x26d499[_0x30a9('0x31')]);_0x36cc67[_0x30a9('0x32')]=_[_0x30a9('0x33')](_0x36cc67[_0x30a9('0x30')],_0x36cc67[_0x30a9('0x31')]);_0x1744e1['attributes']=_[_0x30a9('0x33')](_0x36cc67['model'],qs[_0x30a9('0x35')](_0x26d499[_0x30a9('0x31')]['fields']));_0x1744e1[_0x30a9('0x34')]=_0x1744e1[_0x30a9('0x34')][_0x30a9('0x48')]?_0x1744e1[_0x30a9('0x34')]:_0x36cc67[_0x30a9('0x30')];if(_0x26d499[_0x30a9('0x31')][_0x30a9('0x40')]){_0x1744e1['include']=[{'all':!![]}];}_0x1744e1=_['merge']({},_0x1744e1,_0x26d499[_0x30a9('0x3f')]);return db[_0x30a9('0x2d')]['find'](_0x1744e1)[_0x30a9('0x24')](handleEntityNotFound(_0x3029a7,null))['then'](respondWithResult(_0x3029a7,null))[_0x30a9('0x44')](handleError(_0x3029a7,null));};exports[_0x30a9('0x49')]=function(_0x214702,_0x130f2e,_0x31fb3b){return db[_0x30a9('0x2d')][_0x30a9('0x4a')]({'where':{'id':_0x214702[_0x30a9('0x4b')]['id']},'attributes':[_0x30a9('0x29'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x130f2e,null))[_0x30a9('0x24')](function(_0x1d010f){if(_0x1d010f){var _0xf67a33=path[_0x30a9('0x4c')](config['root'],_0x30a9('0x4d'),util[_0x30a9('0x4e')](_0x30a9('0x4f'),path['basename'](_0x1d010f[_0x30a9('0x4')])));var _0x52d4ed=fs[_0x30a9('0x50')](_0xf67a33);var _0x4ec76c=archiver(_0x30a9('0x51'),{'zlib':{'level':0x9}});_0x4ec76c['on']('warning',function(_0xe68b36){if(_0xe68b36[_0x30a9('0x52')]===_0x30a9('0x53')){logger[_0x30a9('0x54')](_0xe68b36);}else{throw new db[(_0x30a9('0x55'))][(_0x30a9('0x56'))](_0x30a9('0x57'));}});_0x4ec76c['on'](_0x30a9('0x54'),function(_0x245604){throw new db[(_0x30a9('0x55'))][(_0x30a9('0x56'))](_0x30a9('0x57'));});_0x4ec76c['pipe'](_0x52d4ed);_0x4ec76c[_0x30a9('0x58')](_0x30a9('0x59'),{'cwd':path[_0x30a9('0x4c')](config[_0x30a9('0x5a')],'server/files/plugins',path[_0x30a9('0x5b')](_0x1d010f[_0x30a9('0x4')])),'ignore':[path[_0x30a9('0x4c')](path[_0x30a9('0x5c')](_0x1d010f[_0x30a9('0x4')]),_0x30a9('0x5d')),path[_0x30a9('0x4c')](path['basename'](_0x1d010f['path']),_0x30a9('0x5e'))],'nodir':!![]})['finalize']();_0x52d4ed['on'](_0x30a9('0x5f'),function(){if(!fs[_0x30a9('0x60')](_0xf67a33)){throw new db[(_0x30a9('0x55'))][(_0x30a9('0x56'))](_0x30a9('0x61'));}return _0x130f2e['download'](_0xf67a33,util[_0x30a9('0x4e')](_0x30a9('0x4f'),path[_0x30a9('0x5c')](_0x1d010f[_0x30a9('0x4')])),function(_0x366586){if(_0x366586){throw new db['Sequelize'][(_0x30a9('0x56'))](_0x30a9('0x62'));}fs['unlinkSync'](_0xf67a33);logger[_0x30a9('0x63')](_0x30a9('0x64'));logger['info'](_0x30a9('0x65'));});});}return null;})[_0x30a9('0x44')](handleError(_0x130f2e,null));};exports[_0x30a9('0x66')]=function(_0x1350d9,_0x5468f9,_0x2bac8b){var _0x55e807=path[_0x30a9('0x5c')](_0x1350d9[_0x30a9('0x67')][_0x30a9('0x68')],path[_0x30a9('0x69')](_0x1350d9[_0x30a9('0x67')][_0x30a9('0x68')]));var _0x1d29ec=path[_0x30a9('0x4c')](config[_0x30a9('0x5a')],'server/files/plugins',_0x1350d9[_0x30a9('0x67')]['filename']);var _0x497fc8=path['join'](config[_0x30a9('0x5a')],'server/files/plugins',_0x55e807);logger['info'](_0x30a9('0x6a'),_0x1d29ec);logger[_0x30a9('0x63')](_0x30a9('0x6b'),_0x497fc8);try{fs[_0x30a9('0x6c')](_0x1d29ec,parseInt(_0x30a9('0x6d'),0x8));extract(_0x1d29ec,{'dir':_0x497fc8},function(_0x46f326){if(_0x46f326){logger[_0x30a9('0x54')](_0x46f326);handleError(_0x46f326,!![]);};var _0x3cb889=fs[_0x30a9('0x6e')](_0x497fc8);if(_0x3cb889['length']>0x1){removeReferences(_0x1d29ec,_0x497fc8);logger['error']('Invalid\x20plugin\x20structure');return _0x2bac8b(new Error(_0x30a9('0x6f')));}var _0x5efd5b=fs[_0x30a9('0x70')](path[_0x30a9('0x4c')](_0x497fc8,_0x3cb889[0x0]));if(_0x5efd5b[_0x30a9('0x71')]()){removeReferences(_0x1d29ec,_0x497fc8);logger['error']('Invalid\x20plugin\x20structure');return _0x2bac8b(new Error(_0x30a9('0x6f')));}if(_0x5efd5b[_0x30a9('0x72')]()){var _0xa2de51=fs['readdirSync'](path[_0x30a9('0x4c')](_0x497fc8,_0x3cb889[0x0]));if(_0xa2de51[_0x30a9('0x48')]===0x0){removeReferences(_0x1d29ec,_0x497fc8);logger[_0x30a9('0x54')](_0x30a9('0x6f'));return _0x2bac8b(new Error(_0x30a9('0x6f')));}var _0x18ff90=_0xa2de51[_0x30a9('0x73')](function(_0x28e131){return _0x28e131===_0x30a9('0x74');});if(!_0x18ff90){return _0x2bac8b(new Error(_0x30a9('0x75')));}var _0x240621=fs['readFileSync'](path[_0x30a9('0x4c')](_0x497fc8,_0x3cb889[0x0],_0x30a9('0x74')));var _0x1aa1eb=JSON[_0x30a9('0x76')](_0x240621);if('undefined'==typeof _0x1aa1eb[_0x30a9('0x29')]){return _0x2bac8b(new Error(_0x30a9('0x77')));}if(_0x30a9('0x1c')==typeof _0x1aa1eb['type']){return _0x2bac8b(new Error(_0x30a9('0x78')));}if(_0x30a9('0x1c')==typeof _0x1aa1eb['version']){return _0x2bac8b(new Error(_0x30a9('0x79')));}if(_0x30a9('0x1c')==typeof _0x1aa1eb[_0x30a9('0x7a')]){return _0x2bac8b(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x1aa1eb['type']===_0x30a9('0x7b')){if('undefined'==typeof _0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x7c')]){return _0x2bac8b(new Error(_0x30a9('0x7d')));}if(_0x30a9('0x1c')==typeof _0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x7c')][_0x30a9('0x7e')]&&_0x30a9('0x1c')==typeof _0x1aa1eb[_0x30a9('0x7a')]['views']['agent']){return _0x2bac8b(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x1aa1eb[_0x30a9('0x2e')]==='script'){if(_0x30a9('0x1c')==typeof _0x1aa1eb[_0x30a9('0x7a')]['scriptName']){return _0x2bac8b(new Error(_0x30a9('0x7f')));}if(_0x30a9('0x1c')==typeof _0x1aa1eb[_0x30a9('0x7a')]['scriptPath']){return _0x2bac8b(new Error(_0x30a9('0x80')));}}else{return _0x2bac8b(new Error(_0x30a9('0x81')));}var _0x489346=_0x1aa1eb[_0x30a9('0x29')];var _0x4738ab=_0x1aa1eb[_0x30a9('0x82')];var _0x439144=_0x1aa1eb[_0x30a9('0x2e')];var _0x234908=_0x1aa1eb['sidebar']?_0x1aa1eb[_0x30a9('0x83')]:_0x30a9('0x84');var _0x186c1e=_0x1aa1eb[_0x30a9('0x85')]?_0x1aa1eb['icon']:_0x30a9('0x86');var _0x5f27dc='';var _0x1a6665='';var _0x4ad9a8='';var _0x1c5cf4='';var _0x19203f=_0x1aa1eb['version'];if(_0x439144===_0x30a9('0x7b')){if('undefined'!=typeof _0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x7c')][_0x30a9('0x7e')]){var _0x256ce0=_0x1aa1eb['parameters'][_0x30a9('0x7c')][_0x30a9('0x7e')];if(!/^(f|ht)tps?:\/\//i['test'](_0x256ce0)){_0x5f27dc=path[_0x30a9('0x4c')](_0x30a9('0x87'),_0x55e807,_0x3cb889[0x0],_0x256ce0);}else{_0x5f27dc=_0x256ce0;}}else{logger[_0x30a9('0x63')](_0x30a9('0x88'));}if(_0x30a9('0x1c')!=typeof _0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x7c')][_0x30a9('0x89')]){var _0x529c44=_0x1aa1eb[_0x30a9('0x7a')]['views'][_0x30a9('0x89')];if(!/^(f|ht)tps?:\/\//i[_0x30a9('0x8a')](_0x529c44)){_0x1a6665=path[_0x30a9('0x4c')](_0x30a9('0x87'),_0x55e807,_0x3cb889[0x0],_0x529c44);}else{_0x1a6665=_0x529c44;}}else{logger[_0x30a9('0x63')](_0x30a9('0x8b'));}}else if(_0x439144===_0x30a9('0x8c')){_0x4ad9a8=_0x1aa1eb['parameters']['scriptName'];_0x1c5cf4=_0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x8d')];if(_0x30a9('0x1c')!=typeof _0x1aa1eb['parameters'][_0x30a9('0x7c')]){if('undefined'!=typeof _0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x7c')][_0x30a9('0x7e')]){var _0x256ce0=_0x1aa1eb[_0x30a9('0x7a')][_0x30a9('0x7c')][_0x30a9('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0x30a9('0x8a')](_0x256ce0)){_0x5f27dc=path[_0x30a9('0x4c')](_0x30a9('0x87'),_0x55e807,_0x3cb889[0x0],_0x256ce0);}else{_0x5f27dc=_0x256ce0;}}if(_0x30a9('0x1c')!=typeof _0x1aa1eb['parameters'][_0x30a9('0x7c')]['agent']){var _0x529c44=_0x1aa1eb[_0x30a9('0x7a')]['views'][_0x30a9('0x89')];if(!/^(f|ht)tps?:\/\//i[_0x30a9('0x8a')](_0x529c44)){_0x1a6665=path[_0x30a9('0x4c')](_0x30a9('0x87'),_0x55e807,_0x3cb889[0x0],_0x529c44);}else{_0x1a6665=_0x529c44;}}}}var _0x42c605={'name':_0x489346,'description':_0x4738ab,'path':path[_0x30a9('0x4c')](_0x55e807,_0x3cb889[0x0]),'type':_0x439144,'sidebar':_0x234908,'icon':_0x186c1e,'adminUrl':_0x5f27dc,'agentUrl':_0x1a6665,'scriptName':_0x4ad9a8,'scriptPath':_0x1c5cf4,'version':_0x19203f};removeReferences(_0x1d29ec,null);return db[_0x30a9('0x2d')]['create'](_0x42c605)[_0x30a9('0x24')](function(_0x53360e){var _0x960b97={'role':_0x1350d9[_0x30a9('0x8e')][_0x30a9('0x8f')],'userProfileId':_0x1350d9[_0x30a9('0x8e')]['userProfileId']};if(!_0x960b97)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x960b97['role']===_0x30a9('0x90')){var _0x328144=_0x53360e['get']({'plain':!![]});return db[_0x30a9('0x91')][_0x30a9('0x4a')]({'where':{'name':_0x30a9('0x26'),'userProfileId':_0x960b97['userProfileId']},'raw':!![]})[_0x30a9('0x24')](function(_0x13f8b3){if(_0x13f8b3&&_0x13f8b3[_0x30a9('0x92')]===0x0){return db['UserProfileResource']['create']({'name':_0x328144[_0x30a9('0x29')],'resourceId':_0x328144['id'],'type':_0x13f8b3[_0x30a9('0x29')],'sectionId':_0x13f8b3['id']},{})[_0x30a9('0x24')](function(){return _0x53360e;});}else{return _0x53360e;}})['catch'](function(_0x16d5a9){logger[_0x30a9('0x54')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x16d5a9);throw _0x16d5a9;});}return _0x53360e;})[_0x30a9('0x24')](respondWithResult(_0x5468f9,null))[_0x30a9('0x44')](handleError(_0x5468f9,null));}});}catch(_0x247a39){_0x5468f9['status'](0x1f4)['send'](_0x247a39);}};function removeReferences(_0x3143a8,_0x3e92de){try{if(_0x3143a8){fs[_0x30a9('0x93')](_0x3143a8);logger[_0x30a9('0x63')]('Zip\x20archive\x20removed');}if(_0x3e92de){rimraf(_0x3e92de,function(){});logger[_0x30a9('0x63')](_0x30a9('0x94'));}}catch(_0x5cfa79){logger['error'](_0x5cfa79);}}exports['update']=function(_0x404832,_0x45f5f4,_0x1960c0){return db[_0x30a9('0x2d')]['find']({'where':{'id':_0x404832[_0x30a9('0x4b')]['id']}})[_0x30a9('0x24')](handleEntityNotFound(_0x45f5f4,null))[_0x30a9('0x24')](saveUpdates(_0x404832[_0x30a9('0x8e')],null))[_0x30a9('0x24')](respondWithResult(_0x45f5f4,null))[_0x30a9('0x44')](handleError(_0x45f5f4,null));};exports[_0x30a9('0x95')]=function(_0x138993,_0x22b4e1,_0x277b83){return db['Plugin']['find']({'where':{'id':_0x138993['params']['id']}})[_0x30a9('0x24')](function(_0xe79684){if(_0xe79684){return _0xe79684[_0x30a9('0x23')]();}})[_0x30a9('0x24')](function(_0x4ff7bd){rimraf(path[_0x30a9('0x4c')](config['root'],_0x30a9('0x4d'),path[_0x30a9('0x5b')](_0x4ff7bd[_0x30a9('0x4')])),function(){});return _0x4ff7bd;})['then'](handleEntityNotFound(_0x22b4e1,null))['then'](respondWithStatusCode(_0x22b4e1,null))[_0x30a9('0x44')](handleError(_0x22b4e1,null));};exports['webhookGet']=function(_0x5f11a8,_0x5943e6,_0x1ccc0f){return BPromise['resolve']()[_0x30a9('0x24')](function(){if(!_0x5f11a8['query'][_0x30a9('0x4')]){throw new Error(_0x30a9('0x96'));}if(!_0x5f11a8[_0x30a9('0x31')][_0x30a9('0x97')]){throw new Error(_0x30a9('0x98'));}var _0x4a5aaa=_0x5f11a8[_0x30a9('0x31')][_0x30a9('0x99')]?_0x5f11a8[_0x30a9('0x31')][_0x30a9('0x99')]+':'+_0x5f11a8['query']['port']:'http://localhost:'+_0x5f11a8['query'][_0x30a9('0x97')];var _0x53af26=_0x5f11a8[_0x30a9('0x31')]['json']?_0x5f11a8[_0x30a9('0x31')][_0x30a9('0x20')]:!![];var _0x1b74bd=_0x5f11a8[_0x30a9('0x31')][_0x30a9('0x9a')]?_0x5f11a8['query']['encoding']:null;var _0x3e234e={'method':_0x5f11a8[_0x30a9('0x9b')],'uri':util['format'](_0x30a9('0x9c'),_0x4a5aaa,_0x5f11a8[_0x30a9('0x31')]['path']),'json':_0x53af26,'resolveWithFullResponse':!![],'encoding':_0x1b74bd,'qs':_0x5f11a8[_0x30a9('0x31')]};if(_0x5f11a8['headers']){_0x3e234e['headers']=_0x5f11a8[_0x30a9('0x9d')];if(_0x3e234e[_0x30a9('0x9d')]['content-length']){delete _0x3e234e[_0x30a9('0x9d')][_0x30a9('0x9e')];}}if(_0x3e234e['headers'][_0x30a9('0x9f')]){delete _0x3e234e[_0x30a9('0x9d')][_0x30a9('0x9f')];}return rp(_0x3e234e);})['then'](function(_0x5a0c43){if(_0x5a0c43){_0x5943e6[_0x30a9('0xa0')](_0x5a0c43[_0x30a9('0x9d')]);logger[_0x30a9('0x63')](_0x5a0c43[_0x30a9('0x8e')]);if(_[_0x30a9('0xa1')](_0x5f11a8['query']['path'],_0x30a9('0x49'))&&_0x5a0c43[_0x30a9('0xa2')]==0x1f4){return _0x5943e6['sendStatus'](_0x5a0c43[_0x30a9('0xa2')]);}else{return _0x5943e6[_0x30a9('0x1b')](_0x5a0c43[_0x30a9('0xa2')])[_0x30a9('0x2a')](_0x5a0c43[_0x30a9('0x8e')]);}}else{return _0x5943e6[_0x30a9('0x1a')](0xc8);}})[_0x30a9('0x44')](handleError(_0x5943e6,null));};exports['webhookPost']=function(_0x292478,_0x19bef7,_0xa4c013){return BPromise[_0x30a9('0xa3')]()[_0x30a9('0x24')](function(){if(!_0x292478[_0x30a9('0x31')][_0x30a9('0x4')]){throw new Error(_0x30a9('0x96'));}if(!_0x292478['query']['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0xf09ce1=_0x292478[_0x30a9('0x31')][_0x30a9('0x99')]?_0x292478['query']['hostname']+':'+_0x292478['query'][_0x30a9('0x97')]:_0x30a9('0xa4')+_0x292478['query'][_0x30a9('0x97')];var _0x33e06f=_0x292478[_0x30a9('0x31')][_0x30a9('0x20')]?_0x292478['query'][_0x30a9('0x20')]:!![];var _0xe5f1dc=_0x292478['query']['encoding']?_0x292478['query']['encoding']:null;var _0x48ccce={'method':_0x292478['method'],'uri':util['format'](_0x30a9('0x9c'),_0xf09ce1,_0x292478['query'][_0x30a9('0x4')]),'json':_0x33e06f,'resolveWithFullResponse':!![],'encoding':_0xe5f1dc,'body':_0x292478[_0x30a9('0x8e')]};if(_0x292478['headers']){_0x48ccce[_0x30a9('0x9d')]=_0x292478[_0x30a9('0x9d')];if(_0x48ccce[_0x30a9('0x9d')][_0x30a9('0x9e')]){delete _0x48ccce[_0x30a9('0x9d')][_0x30a9('0x9e')];}}if(_0x48ccce['headers'][_0x30a9('0x9f')]){delete _0x48ccce['headers'][_0x30a9('0x9f')];}return rp(_0x48ccce);})['then'](function(_0xf6f503){if(_0xf6f503){_0x19bef7[_0x30a9('0xa0')](_0xf6f503[_0x30a9('0x9d')]);logger[_0x30a9('0x63')](_0xf6f503['body']);return _0x19bef7[_0x30a9('0x1b')](_0xf6f503[_0x30a9('0xa2')])[_0x30a9('0x2a')](_0xf6f503['body']);}else{return _0x19bef7['sendStatus'](0xc8);}})[_0x30a9('0x44')](handleError(_0x19bef7,null));};
\ No newline at end of file
index 875062d..d5c1b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323f=['save','update','remove','emit','hook','exports','../../mysqldb','setMaxListeners'];(function(_0x2a51ee,_0xa89fed){var _0x27455b=function(_0x46a576){while(--_0x46a576){_0x2a51ee['push'](_0x2a51ee['shift']());}};_0x27455b(++_0xa89fed);}(_0x323f,0x1ee));var _0xf323=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x323f[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require('events');var Plugin=require(_0xf323('0x0'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0xf323('0x1')](0x0);var events={'afterCreate':_0xf323('0x2'),'afterUpdate':_0xf323('0x3'),'afterDestroy':_0xf323('0x4')};function emitEvent(_0x111042){return function(_0x2c9d35,_0xb4caa8,_0x2d4750){PluginEvents[_0xf323('0x5')](_0x111042+':'+_0x2c9d35['id'],_0x2c9d35);PluginEvents[_0xf323('0x5')](_0x111042,_0x2c9d35);_0x2d4750(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xf323('0x6')](e,emitEvent(event));}}module[_0xf323('0x7')]=PluginEvents;
\ No newline at end of file
+var _0x5c1f=['emit','hook','exports','events','Plugin','setMaxListeners','update','remove'];(function(_0x178cdd,_0x244a5d){var _0x2fa3a8=function(_0x4201da){while(--_0x4201da){_0x178cdd['push'](_0x178cdd['shift']());}};_0x2fa3a8(++_0x244a5d);}(_0x5c1f,0x1b3));var _0xf5c1=function(_0x9d1e6b,_0x3bdc22){_0x9d1e6b=_0x9d1e6b-0x0;var _0x2b3070=_0x5c1f[_0x9d1e6b];return _0x2b3070;};'use strict';var EventEmitter=require(_0xf5c1('0x0'));var Plugin=require('../../mysqldb')['db'][_0xf5c1('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0xf5c1('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf5c1('0x3'),'afterDestroy':_0xf5c1('0x4')};function emitEvent(_0x15247f){return function(_0x51ea7a,_0x5c0515,_0x58d6c5){PluginEvents[_0xf5c1('0x5')](_0x15247f+':'+_0x51ea7a['id'],_0x51ea7a);PluginEvents[_0xf5c1('0x5')](_0x15247f,_0x51ea7a);_0x58d6c5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xf5c1('0x6')](e,emitEvent(event));}}module[_0xf5c1('0x7')]=PluginEvents;
\ No newline at end of file
index da9d6b8..c9923d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa4a=['request-promise','path','./plugin.attributes','exports','Plugin','plugins','lodash','../../config/logger','api','moment'];(function(_0xc2be36,_0x5a47fc){var _0x4c177d=function(_0x164ff){while(--_0x164ff){_0xc2be36['push'](_0xc2be36['shift']());}};_0x4c177d(++_0x5a47fc);}(_0xfa4a,0x1be));var _0xafa4=function(_0x1a127a,_0x42f6e6){_0x1a127a=_0x1a127a-0x0;var _0x2a724b=_0xfa4a[_0x1a127a];return _0x2a724b;};'use strict';var _=require(_0xafa4('0x0'));var util=require('util');var logger=require(_0xafa4('0x1'))(_0xafa4('0x2'));var moment=require(_0xafa4('0x3'));var BPromise=require('bluebird');var rp=require(_0xafa4('0x4'));var fs=require('fs');var path=require(_0xafa4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xafa4('0x6'));module[_0xafa4('0x7')]=function(_0x439a02,_0x596b80){return _0x439a02['define'](_0xafa4('0x8'),attributes,{'tableName':_0xafa4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa772=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./plugin.attributes','exports','define','Plugin','plugins','lodash'];(function(_0x2125f0,_0x2f23b9){var _0x12d6eb=function(_0x7a43ea){while(--_0x7a43ea){_0x2125f0['push'](_0x2125f0['shift']());}};_0x12d6eb(++_0x2f23b9);}(_0xa772,0x19f));var _0x2a77=function(_0x336030,_0x4086ea){_0x336030=_0x336030-0x0;var _0x2b203b=_0xa772[_0x336030];return _0x2b203b;};'use strict';var _=require(_0x2a77('0x0'));var util=require(_0x2a77('0x1'));var logger=require(_0x2a77('0x2'))(_0x2a77('0x3'));var moment=require('moment');var BPromise=require(_0x2a77('0x4'));var rp=require(_0x2a77('0x5'));var fs=require('fs');var path=require(_0x2a77('0x6'));var rimraf=require(_0x2a77('0x7'));var config=require('../../config/environment');var attributes=require(_0x2a77('0x8'));module[_0x2a77('0x9')]=function(_0x5c0ab8,_0xb5ff2a){return _0x5c0ab8[_0x2a77('0xa')](_0x2a77('0xb'),attributes,{'tableName':_0x2a77('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2b33de..86a4d63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe1=['lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','Plugin,\x20%s,\x20%s','message','info','catch','CreatePlugin','Plugin','options','raw'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0xabe1,0x1c2));var _0x1abe=function(_0x55aed2,_0xb33353){_0x55aed2=_0x55aed2-0x0;var _0x1a37ad=_0xabe1[_0x55aed2];return _0x1a37ad;};'use strict';var _=require(_0x1abe('0x0'));var util=require(_0x1abe('0x1'));var moment=require(_0x1abe('0x2'));var BPromise=require(_0x1abe('0x3'));var rs=require(_0x1abe('0x4'));var fs=require('fs');var Redis=require(_0x1abe('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1abe('0x6'));var config=require(_0x1abe('0x7'));var jayson=require(_0x1abe('0x8'));var client=jayson[_0x1abe('0x9')][_0x1abe('0xa')]({'port':0x232a});config[_0x1abe('0xb')]=_[_0x1abe('0xc')](config[_0x1abe('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1abe('0xd'))(new Redis(config[_0x1abe('0xb')]));require('./plugin.socket')[_0x1abe('0xe')](socket);function respondWithRpcPromise(_0x2f38f4,_0xfec794,_0x32ca59){return new BPromise(function(_0x270db9,_0x5676b0){return client[_0x1abe('0xf')](_0x2f38f4,_0x32ca59)[_0x1abe('0x10')](function(_0x17fda1){logger['info']('Plugin,\x20%s,\x20%s',_0xfec794,_0x1abe('0x11'));logger['debug'](_0x1abe('0x12'),_0xfec794,_0x1abe('0x11'),JSON[_0x1abe('0x13')](_0x17fda1));if(_0x17fda1['error']){if(_0x17fda1[_0x1abe('0x14')][_0x1abe('0x15')]===0x1f4){logger[_0x1abe('0x14')](_0x1abe('0x16'),_0xfec794,_0x17fda1[_0x1abe('0x14')][_0x1abe('0x17')]);return _0x5676b0(_0x17fda1[_0x1abe('0x14')]['message']);}logger[_0x1abe('0x14')](_0x1abe('0x16'),_0xfec794,_0x17fda1[_0x1abe('0x14')][_0x1abe('0x17')]);return _0x270db9(_0x17fda1[_0x1abe('0x14')]['message']);}else{logger[_0x1abe('0x18')](_0x1abe('0x16'),_0xfec794,_0x1abe('0x11'));_0x270db9(_0x17fda1['result'][_0x1abe('0x17')]);}})[_0x1abe('0x19')](function(_0x35e7ee){logger[_0x1abe('0x14')](_0x1abe('0x16'),_0xfec794,_0x35e7ee);_0x5676b0(_0x35e7ee);});});}exports[_0x1abe('0x1a')]=function(_0x1c4ff0){var _0x1c4d0e=this;return new Promise(function(_0xf1b9e5,_0x19c0e4){return db[_0x1abe('0x1b')]['create'](_0x1c4ff0['body'],{'raw':_0x1c4ff0[_0x1abe('0x1c')]?_0x1c4ff0[_0x1abe('0x1c')][_0x1abe('0x1d')]===undefined?!![]:![]:!![]})[_0x1abe('0x10')](function(_0xedf367){logger[_0x1abe('0x18')](_0x1abe('0x1a'),_0x1c4ff0);logger['debug'](_0x1abe('0x1a'),_0x1c4ff0,JSON[_0x1abe('0x13')](_0xedf367));_0xf1b9e5(_0xedf367);})['catch'](function(_0x1bcaa6){logger[_0x1abe('0x14')](_0x1abe('0x1a'),_0x1bcaa6[_0x1abe('0x17')],_0x1c4ff0);_0x19c0e4(_0x1c4d0e['error'](0x1f4,_0x1bcaa6[_0x1abe('0x17')]));});});};
\ No newline at end of file
+var _0x124c=['client','redis','defaults','localhost','./plugin.socket','register','request','info','Plugin,\x20%s,\x20%s','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreatePlugin','Plugin','create','body','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4e7e4d,_0x29332e){var _0x5f2246=function(_0x29b059){while(--_0x29b059){_0x4e7e4d['push'](_0x4e7e4d['shift']());}};_0x5f2246(++_0x29332e);}(_0x124c,0x18d));var _0xc124=function(_0xce03ef,_0x4a7c66){_0xce03ef=_0xce03ef-0x0;var _0x20a457=_0x124c[_0xce03ef];return _0x20a457;};'use strict';var _=require(_0xc124('0x0'));var util=require(_0xc124('0x1'));var moment=require(_0xc124('0x2'));var BPromise=require(_0xc124('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc124('0x4'));var db=require(_0xc124('0x5'))['db'];var utils=require(_0xc124('0x6'));var logger=require(_0xc124('0x7'))(_0xc124('0x8'));var config=require(_0xc124('0x9'));var jayson=require(_0xc124('0xa'));var client=jayson[_0xc124('0xb')]['http']({'port':0x232a});config[_0xc124('0xc')]=_[_0xc124('0xd')](config[_0xc124('0xc')],{'host':_0xc124('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc124('0xc')]));require(_0xc124('0xf'))[_0xc124('0x10')](socket);function respondWithRpcPromise(_0x30ad7e,_0x5e75b2,_0x2838c4){return new BPromise(function(_0x5cee56,_0x467dc1){return client[_0xc124('0x11')](_0x30ad7e,_0x2838c4)['then'](function(_0x3c075a){logger[_0xc124('0x12')](_0xc124('0x13'),_0x5e75b2,'request\x20sent');logger['debug'](_0xc124('0x14'),_0x5e75b2,_0xc124('0x15'),JSON[_0xc124('0x16')](_0x3c075a));if(_0x3c075a['error']){if(_0x3c075a[_0xc124('0x17')][_0xc124('0x18')]===0x1f4){logger[_0xc124('0x17')](_0xc124('0x13'),_0x5e75b2,_0x3c075a[_0xc124('0x17')][_0xc124('0x19')]);return _0x467dc1(_0x3c075a[_0xc124('0x17')][_0xc124('0x19')]);}logger['error'](_0xc124('0x13'),_0x5e75b2,_0x3c075a[_0xc124('0x17')][_0xc124('0x19')]);return _0x5cee56(_0x3c075a[_0xc124('0x17')]['message']);}else{logger[_0xc124('0x12')](_0xc124('0x13'),_0x5e75b2,_0xc124('0x15'));_0x5cee56(_0x3c075a[_0xc124('0x1a')]['message']);}})[_0xc124('0x1b')](function(_0x2ed492){logger[_0xc124('0x17')](_0xc124('0x13'),_0x5e75b2,_0x2ed492);_0x467dc1(_0x2ed492);});});}exports[_0xc124('0x1c')]=function(_0xaceab9){var _0x44c03e=this;return new Promise(function(_0x5e8864,_0x46e546){return db[_0xc124('0x1d')][_0xc124('0x1e')](_0xaceab9[_0xc124('0x1f')],{'raw':_0xaceab9[_0xc124('0x20')]?_0xaceab9[_0xc124('0x20')][_0xc124('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0xb4492f){logger[_0xc124('0x12')](_0xc124('0x1c'),_0xaceab9);logger['debug']('CreatePlugin',_0xaceab9,JSON[_0xc124('0x16')](_0xb4492f));_0x5e8864(_0xb4492f);})[_0xc124('0x1b')](function(_0xe765b6){logger[_0xc124('0x17')](_0xc124('0x1c'),_0xe765b6[_0xc124('0x19')],_0xaceab9);_0x46e546(_0x44c03e['error'](0x1f4,_0xe765b6[_0xc124('0x19')]));});});};
\ No newline at end of file
index 21a179c..53b1700 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95dd=['removeListener','register','length','./plugin.events','save','emit'];(function(_0x262e91,_0x3d58a3){var _0x257282=function(_0x2baccd){while(--_0x2baccd){_0x262e91['push'](_0x262e91['shift']());}};_0x257282(++_0x3d58a3);}(_0x95dd,0xc9));var _0xd95d=function(_0x42b779,_0x11cb46){_0x42b779=_0x42b779-0x0;var _0x367c0c=_0x95dd[_0x42b779];return _0x367c0c;};'use strict';var PluginEvents=require(_0xd95d('0x0'));var events=[_0xd95d('0x1'),'remove','update'];function createListener(_0x2bd3af,_0x2eef0d){return function(_0x9cdaae){_0x2eef0d[_0xd95d('0x2')](_0x2bd3af,_0x9cdaae);};}function removeListener(_0x845d6c,_0x29c217){return function(){PluginEvents[_0xd95d('0x3')](_0x845d6c,_0x29c217);};}exports[_0xd95d('0x4')]=function(_0x467560){for(var _0x3b3f31=0x0,_0xd5d807=events[_0xd95d('0x5')];_0x3b3f31<_0xd5d807;_0x3b3f31++){var _0x5badda=events[_0x3b3f31];var _0x48fbab=createListener('plugin:'+_0x5badda,_0x467560);PluginEvents['on'](_0x5badda,_0x48fbab);}};
\ No newline at end of file
+var _0x34f9=['./plugin.events','save','emit','removeListener','register','length','plugin:'];(function(_0x3553a9,_0x32c832){var _0x158928=function(_0x4ef804){while(--_0x4ef804){_0x3553a9['push'](_0x3553a9['shift']());}};_0x158928(++_0x32c832);}(_0x34f9,0x17a));var _0x934f=function(_0x2681bb,_0x310e38){_0x2681bb=_0x2681bb-0x0;var _0x5d44d3=_0x34f9[_0x2681bb];return _0x5d44d3;};'use strict';var PluginEvents=require(_0x934f('0x0'));var events=[_0x934f('0x1'),'remove','update'];function createListener(_0xe5feb4,_0xe1d4ab){return function(_0x2521d0){_0xe1d4ab[_0x934f('0x2')](_0xe5feb4,_0x2521d0);};}function removeListener(_0x166cf8,_0x35ee99){return function(){PluginEvents[_0x934f('0x3')](_0x166cf8,_0x35ee99);};}exports[_0x934f('0x4')]=function(_0x3acb29){for(var _0x1212fd=0x0,_0x3f97c8=events[_0x934f('0x5')];_0x1212fd<_0x3f97c8;_0x1212fd++){var _0x8d9522=events[_0x1212fd];var _0x42e00d=createListener(_0x934f('0x6')+_0x8d9522,_0x3acb29);PluginEvents['on'](_0x8d9522,_0x42e00d);}};
\ No newline at end of file
index 3323a8d..a0a0a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x36cc68,_0x5aff8b){var _0x31b3b3=function(_0x3273bd){while(--_0x3273bd){_0x36cc68['push'](_0x36cc68['shift']());}};_0x31b3b3(++_0x5aff8b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x3aea2b,_0x46a729){var _0x530aae=function(_0x5e988d){while(--_0x5e988d){_0x3aea2b['push'](_0x3aea2b['shift']());}};_0x530aae(++_0x46a729);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index eae407f..bf5c5bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7c8=['start','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','json','error','name','send','npm\x20install','info','index','list','reject','express','motion2','length','then','catch','show','describe','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname'];(function(_0x2f6960,_0x28c3a7){var _0x4898e2=function(_0x2f20d8){while(--_0x2f20d8){_0x2f6960['push'](_0x2f6960['shift']());}};_0x4898e2(++_0x28c3a7);}(_0xb7c8,0x119));var _0x8b7c=function(_0x567507,_0x3f21ce){_0x567507=_0x567507-0x0;var _0x4df214=_0xb7c8[_0x567507];return _0x4df214;};'use strict';var _=require('lodash');var pm2=require(_0x8b7c('0x0'));var logger=require(_0x8b7c('0x1'))(_0x8b7c('0x2'));var path=require(_0x8b7c('0x3'));var exec=require(_0x8b7c('0x4'))[_0x8b7c('0x5')];var BPromise=require(_0x8b7c('0x6'));function handleEntityNotFound(_0x50113e,_0x38672b){return function(_0x412f93){if(!_0x412f93){_0x50113e[_0x8b7c('0x7')](0x194);;}return _0x412f93;};}function respondWithResult(_0x440900,_0x107428){_0x107428=_0x107428||0xc8;return function(_0x12665c){if(_0x12665c){return _0x440900[_0x8b7c('0x8')](_0x107428)[_0x8b7c('0x9')](_0x12665c);}return null;};}function handleError(_0x6afb55,_0x30a924){_0x30a924=_0x30a924||0x1f4;return function(_0x187046){logger[_0x8b7c('0xa')](_0x187046['stack']);if(_0x187046[_0x8b7c('0xb')]){delete _0x187046['name'];}_0x6afb55[_0x8b7c('0x8')](_0x30a924)[_0x8b7c('0xc')](_0x187046);};}function execChildProcess(){return new BPromise(function(_0x5868ec,_0x189a25){exec(_0x8b7c('0xd'),function(_0x3594b1,_0x586826,_0x4adbe2){logger[_0x8b7c('0xe')](_0x586826);logger[_0x8b7c('0xe')](_0x4adbe2);if(_0x3594b1){logger[_0x8b7c('0xa')](_0x3594b1);return _0x189a25(_0x3594b1);}return _0x5868ec(_0x586826);});});}exports[_0x8b7c('0xf')]=function(_0x3e3e58,_0x247e3a){return pm2[_0x8b7c('0x10')]()['then'](function(_0x2b60a7){if(_0x2b60a7){var _0x19c63e=_[_0x8b7c('0x11')](_0x2b60a7,function(_0x52cfe7){return _0x52cfe7[_0x8b7c('0xb')]===_0x8b7c('0x12')||_0x52cfe7['name']===_0x8b7c('0x13');});return{'rows':_0x19c63e,'count':_0x19c63e[_0x8b7c('0x14')]};}return null;})[_0x8b7c('0x15')](respondWithResult(_0x247e3a,null))[_0x8b7c('0x16')](handleError(_0x247e3a,null));};exports[_0x8b7c('0x17')]=function(_0x4cc809,_0x402448){return pm2[_0x8b7c('0x18')](_0x4cc809[_0x8b7c('0x19')]['id'])[_0x8b7c('0x15')](respondWithResult(_0x402448,null))[_0x8b7c('0x15')](handleEntityNotFound(_0x402448,null))['catch'](handleError(_0x402448,null));};exports[_0x8b7c('0x1a')]=function(_0x2b0874,_0x450ab7){if(_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0xb')]&&_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0x1c')]){var _0xd0c3e6=path[_0x8b7c('0x1d')](__dirname,_0x8b7c('0x1e'),_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0x1c')]);var _0x53451d=process[_0x8b7c('0x1f')]();process[_0x8b7c('0x20')](path[_0x8b7c('0x21')](_0xd0c3e6));return execChildProcess()[_0x8b7c('0x15')](function(_0x9365e3){process[_0x8b7c('0x20')](_0x53451d);return pm2[_0x8b7c('0x22')]({'name':_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0xb')],'script':_0xd0c3e6});})[_0x8b7c('0x15')](function(_0x5e131c){pm2['dump']();return _0x5e131c[0x0];})[_0x8b7c('0x15')](respondWithResult(_0x450ab7,0xc9))['catch'](handleError(_0x450ab7,null));}else{return _0x450ab7[_0x8b7c('0x8')](0x1f4)[_0x8b7c('0xc')]({'message':_0x8b7c('0x23')});}};exports[_0x8b7c('0x24')]=function(_0x3e35b8,_0x3d2dfa){if(_0x3e35b8['body']['id']){delete _0x3e35b8[_0x8b7c('0x1b')]['id'];}var _0x31390d={'online':_0x8b7c('0x25'),'stopped':_0x8b7c('0x26')};if(_0x31390d[_0x8b7c('0x27')](_0x3e35b8[_0x8b7c('0x1b')][_0x8b7c('0x8')])){return pm2[_0x31390d[_0x3e35b8[_0x8b7c('0x1b')][_0x8b7c('0x8')]]](_0x3e35b8[_0x8b7c('0x19')]['id'])['then'](respondWithResult(_0x3d2dfa,0xc8))['catch'](handleError(_0x3d2dfa,null));}else{return _0x3d2dfa[_0x8b7c('0x8')](0x1f4)[_0x8b7c('0xc')]({'message':_0x8b7c('0x28')});}};exports[_0x8b7c('0x29')]=function(_0x3bfe78,_0x1f373f){if(_0x3bfe78[_0x8b7c('0x1b')]['id']){delete _0x3bfe78[_0x8b7c('0x1b')]['id'];}if(_0x3bfe78[_0x8b7c('0x19')]['id']){return pm2[_0x8b7c('0x2a')](_0x3bfe78['params']['id'])[_0x8b7c('0x15')](function(_0x5906bd){pm2[_0x8b7c('0x2b')]();return _0x5906bd[0x0];})[_0x8b7c('0x15')](respondWithResult(_0x1f373f,null))['catch'](handleError(_0x1f373f,null));}else{return _0x1f373f[_0x8b7c('0x8')](0x1f4)['send']({'message':_0x8b7c('0x2c')});}};
\ No newline at end of file
+var _0x1d2d=['reject','express','motion2','length','catch','show','describe','create','body','script','join','../../files/plugins','cwd','chdir','start','dump','Missing\x20name\x20and/or\x20path','update','stop','hasOwnProperty','params','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','exec','sendStatus','json','error','stack','name','status','send','npm\x20install','info','index','list','then'];(function(_0x566958,_0x21a7f6){var _0x5c755b=function(_0x16a075){while(--_0x16a075){_0x566958['push'](_0x566958['shift']());}};_0x5c755b(++_0x21a7f6);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x53ec2a,_0x1a0daf){_0x53ec2a=_0x53ec2a-0x0;var _0xaf5673=_0x1d2d[_0x53ec2a];return _0xaf5673;};'use strict';var _=require(_0xd1d2('0x0'));var pm2=require(_0xd1d2('0x1'));var logger=require(_0xd1d2('0x2'))(_0xd1d2('0x3'));var path=require(_0xd1d2('0x4'));var exec=require('child_process')[_0xd1d2('0x5')];var BPromise=require('bluebird');function handleEntityNotFound(_0x5d3fac,_0x3caa72){return function(_0x2bfabc){if(!_0x2bfabc){_0x5d3fac[_0xd1d2('0x6')](0x194);;}return _0x2bfabc;};}function respondWithResult(_0x269613,_0x2f930d){_0x2f930d=_0x2f930d||0xc8;return function(_0x353dbd){if(_0x353dbd){return _0x269613['status'](_0x2f930d)[_0xd1d2('0x7')](_0x353dbd);}return null;};}function handleError(_0x21bc28,_0x35735f){_0x35735f=_0x35735f||0x1f4;return function(_0x37ff2a){logger[_0xd1d2('0x8')](_0x37ff2a[_0xd1d2('0x9')]);if(_0x37ff2a[_0xd1d2('0xa')]){delete _0x37ff2a[_0xd1d2('0xa')];}_0x21bc28[_0xd1d2('0xb')](_0x35735f)[_0xd1d2('0xc')](_0x37ff2a);};}function execChildProcess(){return new BPromise(function(_0x900ec,_0x227d7f){exec(_0xd1d2('0xd'),function(_0x5b21f4,_0x41fcb5,_0x1f49ed){logger[_0xd1d2('0xe')](_0x41fcb5);logger[_0xd1d2('0xe')](_0x1f49ed);if(_0x5b21f4){logger[_0xd1d2('0x8')](_0x5b21f4);return _0x227d7f(_0x5b21f4);}return _0x900ec(_0x41fcb5);});});}exports[_0xd1d2('0xf')]=function(_0x2df8a5,_0x31dc84){return pm2[_0xd1d2('0x10')]()[_0xd1d2('0x11')](function(_0x4cf702){if(_0x4cf702){var _0x2e7fec=_[_0xd1d2('0x12')](_0x4cf702,function(_0x3476f8){return _0x3476f8['name']===_0xd1d2('0x13')||_0x3476f8[_0xd1d2('0xa')]===_0xd1d2('0x14');});return{'rows':_0x2e7fec,'count':_0x2e7fec[_0xd1d2('0x15')]};}return null;})[_0xd1d2('0x11')](respondWithResult(_0x31dc84,null))[_0xd1d2('0x16')](handleError(_0x31dc84,null));};exports[_0xd1d2('0x17')]=function(_0x57f2f9,_0x539d5a){return pm2[_0xd1d2('0x18')](_0x57f2f9['params']['id'])[_0xd1d2('0x11')](respondWithResult(_0x539d5a,null))[_0xd1d2('0x11')](handleEntityNotFound(_0x539d5a,null))[_0xd1d2('0x16')](handleError(_0x539d5a,null));};exports[_0xd1d2('0x19')]=function(_0x4ab386,_0x4f1201){if(_0x4ab386[_0xd1d2('0x1a')]['name']&&_0x4ab386['body'][_0xd1d2('0x1b')]){var _0x27e26b=path[_0xd1d2('0x1c')](__dirname,_0xd1d2('0x1d'),_0x4ab386['body'][_0xd1d2('0x1b')]);var _0xbb4d27=process[_0xd1d2('0x1e')]();process['chdir'](path['dirname'](_0x27e26b));return execChildProcess()[_0xd1d2('0x11')](function(_0x3a1078){process[_0xd1d2('0x1f')](_0xbb4d27);return pm2[_0xd1d2('0x20')]({'name':_0x4ab386[_0xd1d2('0x1a')][_0xd1d2('0xa')],'script':_0x27e26b});})[_0xd1d2('0x11')](function(_0x5df4af){pm2[_0xd1d2('0x21')]();return _0x5df4af[0x0];})[_0xd1d2('0x11')](respondWithResult(_0x4f1201,0xc9))[_0xd1d2('0x16')](handleError(_0x4f1201,null));}else{return _0x4f1201[_0xd1d2('0xb')](0x1f4)[_0xd1d2('0xc')]({'message':_0xd1d2('0x22')});}};exports[_0xd1d2('0x23')]=function(_0x34faf7,_0xe6ef3c){if(_0x34faf7[_0xd1d2('0x1a')]['id']){delete _0x34faf7[_0xd1d2('0x1a')]['id'];}var _0x4e1bc2={'online':'restart','stopped':_0xd1d2('0x24')};if(_0x4e1bc2[_0xd1d2('0x25')](_0x34faf7[_0xd1d2('0x1a')][_0xd1d2('0xb')])){return pm2[_0x4e1bc2[_0x34faf7[_0xd1d2('0x1a')]['status']]](_0x34faf7[_0xd1d2('0x26')]['id'])[_0xd1d2('0x11')](respondWithResult(_0xe6ef3c,0xc8))[_0xd1d2('0x16')](handleError(_0xe6ef3c,null));}else{return _0xe6ef3c['status'](0x1f4)[_0xd1d2('0xc')]({'message':_0xd1d2('0x27')});}};exports[_0xd1d2('0x28')]=function(_0x56557d,_0x419db7){if(_0x56557d[_0xd1d2('0x1a')]['id']){delete _0x56557d[_0xd1d2('0x1a')]['id'];}if(_0x56557d[_0xd1d2('0x26')]['id']){return pm2[_0xd1d2('0x29')](_0x56557d[_0xd1d2('0x26')]['id'])[_0xd1d2('0x11')](function(_0x322f50){pm2[_0xd1d2('0x21')]();return _0x322f50[0x0];})[_0xd1d2('0x11')](respondWithResult(_0x419db7,null))[_0xd1d2('0x16')](handleError(_0x419db7,null));}else{return _0x419db7[_0xd1d2('0xb')](0x1f4)[_0xd1d2('0xc')]({'message':_0xd1d2('0x2a')});}};
\ No newline at end of file
index 71f9a55..cd598fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff90=['exports','express','Router','../../components/auth/service','./realtime.controller','get','isAuthenticated','getAgents','/queues','getQueues'];(function(_0xdbd5dc,_0x37e2f0){var _0x734c1=function(_0x2b3459){while(--_0x2b3459){_0xdbd5dc['push'](_0xdbd5dc['shift']());}};_0x734c1(++_0x37e2f0);}(_0xff90,0x137));var _0x0ff9=function(_0x1ba43c,_0x5bd2e8){_0x1ba43c=_0x1ba43c-0x0;var _0x2f60eb=_0xff90[_0x1ba43c];return _0x2f60eb;};'use strict';var express=require(_0x0ff9('0x0'));var router=express[_0x0ff9('0x1')]();var auth=require(_0x0ff9('0x2'));var controller=require(_0x0ff9('0x3'));router[_0x0ff9('0x4')]('/agents',auth[_0x0ff9('0x5')](),controller[_0x0ff9('0x6')]);router[_0x0ff9('0x4')](_0x0ff9('0x7'),auth[_0x0ff9('0x5')](),controller[_0x0ff9('0x8')]);module[_0x0ff9('0x9')]=router;
\ No newline at end of file
+var _0x58a5=['express','../../components/auth/service','/agents','getAgents','get','getQueues'];(function(_0x34bfcb,_0x4c2c85){var _0x24f1f6=function(_0x98748){while(--_0x98748){_0x34bfcb['push'](_0x34bfcb['shift']());}};_0x24f1f6(++_0x4c2c85);}(_0x58a5,0x19e));var _0x558a=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x58a5[_0x565ed7];return _0x183ad7;};'use strict';var express=require(_0x558a('0x0'));var router=express['Router']();var auth=require(_0x558a('0x1'));var controller=require('./realtime.controller');router['get'](_0x558a('0x2'),auth['isAuthenticated'](),controller[_0x558a('0x3')]);router[_0x558a('0x4')]('/queues',auth['isAuthenticated'](),controller[_0x558a('0x5')]);module['exports']=router;
\ No newline at end of file
index 2ec5ddf..80a1c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['chatStatus','faxStatus','smsStatus','whatsappStatus','getAgents','userpic','lastLoginAt','pauseType','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','openchannelStatus','mailStatus','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','phoneBarEnableScreenRecordingByAgent','routealias','map','rawAttributes','fieldName','key','role','agent','query','getOptions','raw','user','userProfileId','nolimit','sort','UserProfile','getResources','findAndCountAll','rows','omit','globalStatus','globalStatusFilter','pauseTypeFilter','getQueues','mail','chat','openchannel','fax','whatsapp','includes','channel','toLowerCase','Invalid\x20channel','Queue','type','count','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','status','set','Content-Range','json','stack','name','send','Agents','then','error','result','request','merge','catch','voice','startCase','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','available','talking','paused','outbound','push','originated','message','dialActive','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','get','loggedInDb','loggedIn','waiting','busy','pTalking','find','pick','queue','length','some','connectedlinenum','toString','getMembers','UserId','accountcode','online','voiceStatus','User','Pause','QueueId','agents','idle','ringing','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','filter','pause','every'];(function(_0x5e3436,_0x2811a7){var _0x4bfe29=function(_0x4781fc){while(--_0x4781fc){_0x5e3436['push'](_0x5e3436['shift']());}};_0x4bfe29(++_0x2811a7);}(_0x4819,0xcd));var _0x9481=function(_0x4f6037,_0x8e0a90){_0x4f6037=_0x4f6037-0x0;var _0x2542e2=_0x4819[_0x4f6037];return _0x2542e2;};'use strict';var util=require('util');var _=require(_0x9481('0x0'));var jayson=require(_0x9481('0x1'));var qs=require(_0x9481('0x2'));var logger=require(_0x9481('0x3'))(_0x9481('0x4'));var db=require(_0x9481('0x5'))['db'];var amiClient=jayson[_0x9481('0x6')][_0x9481('0x7')]({'port':0x232a});var routingClient=jayson[_0x9481('0x6')][_0x9481('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x5ac51c,_0x4d9e3a){return function(_0x5def07){if(_0x5def07){var _0x54cc78=typeof _0x4d9e3a[_0x9481('0x8')]===_0x9481('0x9')&&typeof _0x4d9e3a[_0x9481('0xa')]===_0x9481('0x9');var _0x15d895=_0x5def07['count'];var _0x1818cf=_0x54cc78?0x0:_0x4d9e3a['offset'];var _0x2fabf1=_0x54cc78?_0x5def07['count']:_0x4d9e3a[_0x9481('0x8')]+_0x4d9e3a[_0x9481('0xa')];var _0x2d4d44;if(_0x2fabf1>=_0x15d895){_0x2fabf1=_0x15d895;_0x2d4d44=0xc8;}else{_0x2d4d44=0xce;}_0x5ac51c[_0x9481('0xb')](_0x2d4d44);return _0x5ac51c[_0x9481('0xc')](_0x9481('0xd'),_0x1818cf+'-'+_0x2fabf1+'/'+_0x15d895)[_0x9481('0xe')](_0x5def07);}return null;};}function handleError(_0xe410c3,_0xed8e9){_0xed8e9=_0xed8e9||0x1f4;return function(_0x499b87){logger['error'](_0x499b87[_0x9481('0xf')]);if(_0x499b87[_0x9481('0x10')]){delete _0x499b87[_0x9481('0x10')];}_0xe410c3[_0x9481('0xb')](_0xed8e9)[_0x9481('0x11')](_0x499b87);};}function getRealtimeAgents(){return new Promise(function(_0xc7a0b5,_0x3fb97f){return amiClient['request'](_0x9481('0x12'),{})[_0x9481('0x13')](function(_0x5b1fe6){if(_0x5b1fe6[_0x9481('0x14')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x34108d=_0x5b1fe6[_0x9481('0x15')];return routingClient[_0x9481('0x16')](_0x9481('0x12'),{})['then'](function(_0x5eda66){if(_0x5eda66[_0x9481('0x14')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x4d0da7=_0x5eda66[_0x9481('0x15')];return _0xc7a0b5(_[_0x9481('0x17')]({},_0x34108d,_0x4d0da7));});})[_0x9481('0x18')](function(_0x41051d){_0x3fb97f(_0x41051d);});});}function getRealtimeQueues(_0x7000e7,_0x3dc33f){return new Promise(function(_0x55a1bd,_0x2cf1aa){var _0x272a84=_0x3dc33f===_0x9481('0x19')?amiClient:routingClient;return _0x272a84[_0x9481('0x16')](_[_0x9481('0x1a')](_0x3dc33f)+'Queues',_0x7000e7)[_0x9481('0x13')](function(_0x294908){if(_0x294908['error'])throw new Error(util[_0x9481('0x1b')](_0x9481('0x1c'),_0x3dc33f));return _0x55a1bd(_0x294908[_0x9481('0x15')]);})[_0x9481('0x18')](function(_0x2dc02e){_0x2cf1aa(_0x2dc02e);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x49ecfa,_0x91e3d9){return amiClient[_0x9481('0x16')]('VoiceQueuesChannels',{})['then'](function(_0x12b0c3){if(_0x12b0c3[_0x9481('0x14')])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x49ecfa(_0x12b0c3[_0x9481('0x15')]);})[_0x9481('0x18')](function(_0xeff0a5){_0x91e3d9(_0xeff0a5);});});}function initializeQueues(_0x28ae1b,_0x5a1300,_0x14f03e,_0x3ca064){var _0x3c2585=['loggedIn',_0x9481('0x1d'),'waiting',_0x9481('0x1e'),_0x9481('0x1f')];if(_0x14f03e===_0x9481('0x19')&&_0x3ca064===_0x9481('0x20')){_0x3c2585[_0x9481('0x21')]('pTalking',_0x9481('0x22'),_0x9481('0x23'),_0x9481('0x24'),'dialMethod','Trunk',_0x9481('0x25'),_0x9481('0x26'),_0x9481('0x27'),_0x9481('0x28'),'erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval',_0x9481('0x29'),'dialPredictiveIntervalMinThreshold',_0x9481('0x2a'),'predictiveIntervalTotalCalls',_0x9481('0x2b'),_0x9481('0x2c'),_0x9481('0x2d'),_0x9481('0x2e'),_0x9481('0x2f'));}return _0x28ae1b['map'](function(_0x30ec){var _0x45a1fd=_0x30ec[_0x9481('0x30')]({'plain':!![]});_0x45a1fd['agents']=[];_0x45a1fd[_0x9481('0x1f')]=0x0;_0x45a1fd[_0x9481('0x31')]=0x0;_0x45a1fd[_0x9481('0x32')]=0x0;_0x45a1fd[_0x9481('0x1d')]=0x0;_0x45a1fd[_0x9481('0x33')]=0x0;if(_0x14f03e===_0x9481('0x19')){_0x45a1fd['talking']=0x0;_0x45a1fd[_0x9481('0x34')]=0x0;if(_0x3ca064==='outbound'){_0x45a1fd[_0x9481('0x35')]=0x0;_0x45a1fd[_0x9481('0x22')]=0x0;}}var _0x441b39=_[_0x9481('0x36')](_0x5a1300,['id',_0x45a1fd['id']]);if(_0x441b39)_[_0x9481('0x17')](_0x45a1fd,_[_0x9481('0x37')](_0x441b39,_0x3c2585));return _0x45a1fd;});}function updateAgentVoiceStatus(_0x541d8b,_0x6043a4,_0x15e27f){var _0x4ed991=_['filter'](_0x15e27f,[_0x9481('0x38'),_0x6043a4['name']]);if(_0x4ed991[_0x9481('0x39')]===0x0)return _0x541d8b[_0x9481('0x34')]=!![];if(_[_0x9481('0x3a')](_0x4ed991,[_0x9481('0x3b'),_0x541d8b['internal'][_0x9481('0x3c')]()]))return _0x541d8b['talking']=!![];if(!_0x541d8b[_0x9481('0x1e')])return _0x541d8b['busy']=!![];}function getVoiceQueueAgents(_0x2ce972,_0x4d6a13,_0x315fb9,_0x22e916){var _0x60ee40=_[_0x9481('0x36')](_0x4d6a13,['id',_0x2ce972['id']]);if(!_0x60ee40)return _0x2ce972;return _0x60ee40[_0x9481('0x3d')]({'raw':!![]})[_0x9481('0x13')](function(_0xb6ff1){for(var _0x505591=0x0;_0x505591<_0xb6ff1[_0x9481('0x39')];_0x505591++){var _0x3857e8=_[_0x9481('0x36')](_0x315fb9,['id',_0xb6ff1[_0x505591][_0x9481('0x3e')]]);if(!_0x3857e8){_0x3857e8={'id':_0xb6ff1[_0x505591][_0x9481('0x3e')],'name':_0xb6ff1[_0x505591][_0x9481('0x3e')],'accountcode':'','online':![]};}var _0x2e4241={'id':_0x3857e8['id'],'name':_0x3857e8['name'],'internal':_0x3857e8[_0x9481('0x3f')],'online':Boolean(_0x3857e8[_0x9481('0x40')]),'paused':Boolean(_0xb6ff1[_0x505591]['paused'])};if(_0x3857e8[_0x9481('0x41')]===_0x9481('0x1e'))updateAgentVoiceStatus(_0x2e4241,_0x2ce972,_0x22e916);if(_0x2e4241[_0x9481('0x40')])_0x2ce972[_0x9481('0x31')]++;if(_0x2e4241[_0x9481('0x34')])_0x2ce972['busy']++;if(_0x2e4241[_0x9481('0x1f')]&&!_0x2e4241['busy']&&!_0x2e4241[_0x9481('0x1e')])_0x2ce972[_0x9481('0x1f')]++;_0x2ce972['agents']['push'](_0x2e4241);}return _0x2ce972;});}function getQueueAgents(_0x398d8d,_0x1d0df0,_0x42b19a){var _0x4c4caf=_0x9481('0x42')+_[_0x9481('0x1a')](_0x42b19a)+'Queue';var _0x59fc26=_0x42b19a+_0x9481('0x43');return db[_0x4c4caf]['findAll']({'where':{[_[_0x9481('0x1a')](_0x42b19a)+_0x9481('0x44')]:_0x398d8d['id']},'raw':!![]})[_0x9481('0x13')](function(_0xf0e5e1){for(var _0x68d81d=0x0;_0x68d81d<_0xf0e5e1['length'];_0x68d81d++){var _0xc1fcfc=_[_0x9481('0x36')](_0x1d0df0,['id',_0xf0e5e1[_0x68d81d]['UserId']]);if(!_0xc1fcfc){_0xc1fcfc={'id':_0xf0e5e1[_0x68d81d][_0x9481('0x3e')],'name':_0xf0e5e1[_0x68d81d][_0x9481('0x3e')],'online':![],['pauseField']:![]};}var _0x1e0f4e={'id':_0xc1fcfc['id'],'name':_0xc1fcfc[_0x9481('0x10')],'online':Boolean(_0xc1fcfc[_0x9481('0x40')]),'paused':Boolean(_0xc1fcfc[_0x59fc26])};if(_0x1e0f4e[_0x9481('0x40')])_0x398d8d[_0x9481('0x31')]++;_0x398d8d[_0x9481('0x45')][_0x9481('0x21')](_0x1e0f4e);}return _0x398d8d;});}function isIdle(_0x5ab395){return _0x5ab395===_0x9481('0x46')||_0x5ab395==='unknown'||_0x5ab395==='unavailable'||_0x5ab395===_0x9481('0x47')||_['isNil'](_0x5ab395);}function isAgentPaused(_0x2b174b,_0xd02fd7){var _0x47f8b2=[_0x2b174b[_0x9481('0x48')],_0x2b174b[_0x9481('0x49')],_0x2b174b[_0x9481('0x4a')],_0x2b174b[_0x9481('0x4b')],_0x2b174b[_0x9481('0x4c')],_0x2b174b[_0x9481('0x4d')],_0x2b174b['whatsappPause']];if(!_0xd02fd7)return _['every'](_0x47f8b2);var _0x424b22=_[_0x9481('0x4e')](_0x47f8b2);return _0x424b22[_0x9481('0x39')]>0x0&&_0x424b22[_0x9481('0x39')]<_0x47f8b2[_0x9481('0x39')]?!![]:![];}function isAgentIdle(_0x353aab){if(_0x353aab[_0x9481('0x41')]!==_0x9481('0x46')&&_0x353aab['voicePause']){_0x353aab[_0x9481('0x41')]=_0x9481('0x4f');return![];}return _[_0x9481('0x50')]([_0x353aab[_0x9481('0x51')],_0x353aab[_0x9481('0x52')],_0x353aab['mailStatus'],_0x353aab['openchannelStatus'],_0x353aab[_0x9481('0x53')],_0x353aab[_0x9481('0x41')],_0x353aab[_0x9481('0x54')]],isIdle);}function getAgentStatus(_0x4cd665){var _0x53c51d='unknown';if(isAgentPaused(_0x4cd665))_0x53c51d='pause';else if(isAgentPaused(_0x4cd665,!![]))_0x53c51d='*pause';else if(isAgentIdle(_0x4cd665))_0x53c51d='idle';else _0x53c51d='busy';return _0x53c51d;}exports[_0x9481('0x55')]=function(_0x136bd8,_0x588f7a){var _0xd8351c={'count':0x0,'rows':[]},_0x5f210c={},_0x29e82b,_0x229b69,_0x32efeb=[_0x9481('0x56'),_0x9481('0x40'),_0x9481('0x57'),'lastPauseAt',_0x9481('0x58'),_0x9481('0x59'),'internal',_0x9481('0x5a'),_0x9481('0x48'),_0x9481('0x4b'),_0x9481('0x4a'),_0x9481('0x4c'),'whatsappPause',_0x9481('0x49'),_0x9481('0x4d'),_0x9481('0x5b'),_0x9481('0x5c'),_0x9481('0x5d'),_0x9481('0x5e'),_0x9481('0x5f'),_0x9481('0x60'),_0x9481('0x61'),'openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity',_0x9481('0x62'),_0x9481('0x63'),'chatStatus',_0x9481('0x64'),_0x9481('0x65'),_0x9481('0x53'),_0x9481('0x54'),_0x9481('0x52'),_0x9481('0x41'),'chatStatusTime','openchannelStatusTime',_0x9481('0x66'),_0x9481('0x67'),_0x9481('0x68'),_0x9481('0x69'),_0x9481('0x6a'),_0x9481('0x38'),'destconnectedlinenum','screenrecording',_0x9481('0x6b'),'phoneBarEnableAutomaticScreenRecording',_0x9481('0x6c')],_0x84ab39=['chatPause',_0x9481('0x4b'),_0x9481('0x4a'),_0x9481('0x4c'),'whatsappPause',_0x9481('0x49'),_0x9481('0x4d'),'online'];Promise['resolve']()['then'](function(){var _0x4b8d31=_[_0x9481('0x6d')](db['User'][_0x9481('0x6e')],function(_0x3a3ca5){return{'name':_0x3a3ca5[_0x9481('0x6f')],'type':_0x3a3ca5['type'][_0x9481('0x70')]};});_0x136bd8['query'][_0x9481('0x71')]=_0x9481('0x72');_0x136bd8[_0x9481('0x73')]['online']=!![];_0x5f210c=qs[_0x9481('0x74')](_0x4b8d31,_0x136bd8);_0x5f210c[_0x9481('0x75')]=!![];if(_0x136bd8['user'][_0x9481('0x71')]===_0x9481('0x76')){var _0x221942={'params':{'id':_0x136bd8[_0x9481('0x76')][_0x9481('0x77')]},'query':{'section':_0x9481('0x12'),'role':_0x9481('0x72'),'online':!![],'nolimit':_0x136bd8[_0x9481('0x73')][_0x9481('0x78')],'sort':_0x136bd8[_0x9481('0x73')][_0x9481('0x79')],'filter':_0x136bd8[_0x9481('0x73')][_0x9481('0x4e')],'raw':!![]}};return db[_0x9481('0x7a')][_0x9481('0x7b')](_0x221942);}return db[_0x9481('0x42')][_0x9481('0x7c')](_0x5f210c);})['then'](function(_0x1e05f8){_0xd8351c['count']=_0x1e05f8['count'];_0x29e82b=_0x1e05f8[_0x9481('0x7d')];return getRealtimeAgents();})['then'](function(_0x51133a){_0x229b69=_0x51133a['rows'];return _0x29e82b[_0x9481('0x6d')](function(_0x1b8f9f){var _0x2486a7=_[_0x9481('0x36')](_0x229b69,['id',_0x1b8f9f['id']]);if(_0x2486a7)_['merge'](_0x1b8f9f,_[_0x9481('0x37')](_[_0x9481('0x7e')](_0x2486a7,_0x84ab39),_0x32efeb));_0x1b8f9f[_0x9481('0x7f')]=getAgentStatus(_0x1b8f9f);return _0x1b8f9f;});})[_0x9481('0x13')](function(_0x54323e){if(_0x136bd8['query'][_0x9481('0x80')]){var _0x264c4e=_[_0x9481('0x4e')](_0x54323e,[_0x9481('0x7f'),_0x136bd8[_0x9481('0x73')]['globalStatusFilter']]);if(_0x136bd8[_0x9481('0x73')][_0x9481('0x81')]){_0x264c4e=_[_0x9481('0x4e')](_0x264c4e,[_0x9481('0x58'),_0x136bd8[_0x9481('0x73')][_0x9481('0x81')]]);}}_0xd8351c[_0x9481('0x7d')]=_0x264c4e||_0x54323e;return _0xd8351c;})[_0x9481('0x13')](respondWithFilteredResult(_0x588f7a,_0x5f210c))[_0x9481('0x18')](handleError(_0x588f7a,null));};exports[_0x9481('0x82')]=function(_0x32016d,_0x40d508){var _0x2c18d3=[_0x9481('0x83'),_0x9481('0x84'),'sms',_0x9481('0x85'),_0x9481('0x86'),_0x9481('0x87'),_0x9481('0x19')];var _0x1b5c97={'count':0x0,'rows':[]},_0x317a4e={},_0x38d9b1,_0x5d3694,_0x14070d,_0x386b48,_0x4e7d5a;Promise['resolve']()[_0x9481('0x13')](function(){if(_0x32016d['query']['channel']){if(!_[_0x9481('0x88')](_0x2c18d3,_0x32016d['query'][_0x9481('0x89')][_0x9481('0x8a')]()))throw new Error(_0x9481('0x8b'));_0x38d9b1=_0x32016d[_0x9481('0x73')]['channel'][_0x9481('0x8a')]();}var _0x4981b3=_[_0x9481('0x1a')](_0x38d9b1)+_0x9481('0x8c');var _0x17c6fc=_['map'](db[_0x4981b3]['rawAttributes'],function(_0x55e45c){return{'name':_0x55e45c[_0x9481('0x6f')],'type':_0x55e45c['type']['key']};});_0x317a4e=qs[_0x9481('0x74')](_0x17c6fc,_0x32016d);if(_0x32016d[_0x9481('0x76')][_0x9481('0x71')]==='user'){var _0x905ee6={'params':{'id':_0x32016d[_0x9481('0x76')]['userProfileId']},'query':{'section':_0x38d9b1===_0x9481('0x19')&&_0x32016d[_0x9481('0x73')][_0x9481('0x8d')]===_0x9481('0x20')?'QueueCampaigns':_[_0x9481('0x1a')](_0x38d9b1)+'Queues','type':_0x32016d[_0x9481('0x73')][_0x9481('0x8d')],'nolimit':!![],'sort':'name','filter':_0x32016d[_0x9481('0x73')][_0x9481('0x4e')]}};return db[_0x9481('0x7a')]['getResources'](_0x905ee6);}return db[_0x4981b3]['findAndCountAll'](_0x317a4e);})[_0x9481('0x13')](function(_0x50d75b){_0x1b5c97[_0x9481('0x8e')]=_0x50d75b[_0x9481('0x8e')];_0x5d3694=_0x50d75b[_0x9481('0x7d')];return getRealtimeQueues(_0x32016d,_0x38d9b1);})['then'](function(_0x3f74f1){_0x386b48=_0x3f74f1[_0x9481('0x7d')];return getRealtimeAgents();})[_0x9481('0x13')](function(_0x540e8e){_0x14070d=_0x540e8e[_0x9481('0x7d')];if(_0x38d9b1!=_0x9481('0x19'))return;return getRealtimeVoiceQueueChannels();})[_0x9481('0x13')](function(_0x32b30f){_0x4e7d5a=_0x32b30f?_0x32b30f[_0x9481('0x7d')]:[];return initializeQueues(_0x5d3694,_0x386b48,_0x38d9b1,_0x32016d[_0x9481('0x73')][_0x9481('0x8d')]);})[_0x9481('0x13')](function(_0x22e787){var _0x31b70b=_0x22e787['map'](function(_0x28163e){if(_0x38d9b1==='voice')return getVoiceQueueAgents(_0x28163e,_0x5d3694,_0x14070d,_0x4e7d5a);else return getQueueAgents(_0x28163e,_0x14070d,_0x38d9b1);});return Promise['all'](_0x31b70b);})['then'](function(_0x2d4967){_0x1b5c97[_0x9481('0x7d')]=_0x2d4967;return _0x1b5c97;})[_0x9481('0x13')](respondWithFilteredResult(_0x40d508,_0x317a4e))[_0x9481('0x18')](handleError(_0x40d508,null));};
\ No newline at end of file
+var _0x871d=['Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','voice','Queues','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','talking','paused','outbound','originated','dialActive','dialMethod','Trunk','startPredictive','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveIntervalMinThreshold','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','agents','loggedInDb','waiting','busy','find','length','some','connectedlinenum','internal','toString','getMembers','UserId','accountcode','online','voiceStatus','push','User','startCase','Queue','findAll','QueueId','idle','unknown','unavailable','ringing','faxPause','openchannelPause','smsPause','whatsappPause','every','filter','chatStatus','faxStatus','mailStatus','whatsappStatus','*pause','userpic','lastLoginAt','lastPauseAt','pauseType','chatPause','mailPause','voicePause','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','smsStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','whatsappStatusTime','faxStatusTime','queue','destconnectedlinenum','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','map','rawAttributes','fieldName','type','key','role','agent','query','getOptions','raw','user','userProfileId','nolimit','UserProfile','getResources','findAndCountAll','omit','globalStatusFilter','globalStatus','pauseTypeFilter','globalQueueFilter','rows','getQueues','chat','sms','openchannel','fax','whatsapp','resolve','channel','toLowerCase','QueueCampaigns','all','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','offset','undefined','limit','count','set','json','error','stack','name','send','request','Agents','then','result'];(function(_0x11f73b,_0x261791){var _0x17be8b=function(_0xa09cb){while(--_0xa09cb){_0x11f73b['push'](_0x11f73b['shift']());}};_0x17be8b(++_0x261791);}(_0x871d,0x10a));var _0xd871=function(_0x271c48,_0x1b728c){_0x271c48=_0x271c48-0x0;var _0x18271e=_0x871d[_0x271c48];return _0x18271e;};'use strict';var util=require(_0xd871('0x0'));var _=require(_0xd871('0x1'));var jayson=require('jayson/promise');var qs=require(_0xd871('0x2'));var logger=require(_0xd871('0x3'))(_0xd871('0x4'));var db=require(_0xd871('0x5'))['db'];var amiClient=jayson[_0xd871('0x6')]['http']({'port':0x232a});var routingClient=jayson[_0xd871('0x6')][_0xd871('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x3b7761,_0x368b78){return function(_0x2d3a86){if(_0x2d3a86){var _0x15e356=typeof _0x368b78[_0xd871('0x8')]===_0xd871('0x9')&&typeof _0x368b78[_0xd871('0xa')]===_0xd871('0x9');var _0x494eb3=_0x2d3a86[_0xd871('0xb')];var _0x4c4a66=_0x15e356?0x0:_0x368b78['offset'];var _0xa667f=_0x15e356?_0x2d3a86[_0xd871('0xb')]:_0x368b78[_0xd871('0x8')]+_0x368b78['limit'];var _0x495394;if(_0xa667f>=_0x494eb3){_0xa667f=_0x494eb3;_0x495394=0xc8;}else{_0x495394=0xce;}_0x3b7761['status'](_0x495394);return _0x3b7761[_0xd871('0xc')]('Content-Range',_0x4c4a66+'-'+_0xa667f+'/'+_0x494eb3)[_0xd871('0xd')](_0x2d3a86);}return null;};}function handleError(_0x341472,_0x5b4263){_0x5b4263=_0x5b4263||0x1f4;return function(_0xf153e8){logger[_0xd871('0xe')](_0xf153e8[_0xd871('0xf')]);if(_0xf153e8['name']){delete _0xf153e8[_0xd871('0x10')];}_0x341472['status'](_0x5b4263)[_0xd871('0x11')](_0xf153e8);};}function getRealtimeAgents(){return new Promise(function(_0x5e963f,_0x15f9ca){return amiClient[_0xd871('0x12')](_0xd871('0x13'),{})[_0xd871('0x14')](function(_0x3fbfb0){if(_0x3fbfb0[_0xd871('0xe')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x2062c1=_0x3fbfb0[_0xd871('0x15')];return routingClient[_0xd871('0x12')](_0xd871('0x13'),{})['then'](function(_0x2fde97){if(_0x2fde97[_0xd871('0xe')])throw new Error(_0xd871('0x16'));var _0x500a17=_0x2fde97['result'];return _0x5e963f(_[_0xd871('0x17')]({},_0x2062c1,_0x500a17));});})['catch'](function(_0x47d126){_0x15f9ca(_0x47d126);});});}function getRealtimeQueues(_0x190509,_0x2cf68d){return new Promise(function(_0x181c35,_0x316eb6){var _0x4a378d=_0x2cf68d===_0xd871('0x18')?amiClient:routingClient;return _0x4a378d[_0xd871('0x12')](_['startCase'](_0x2cf68d)+_0xd871('0x19'),_0x190509)['then'](function(_0x476af9){if(_0x476af9[_0xd871('0xe')])throw new Error(util['format'](_0xd871('0x1a'),_0x2cf68d));return _0x181c35(_0x476af9[_0xd871('0x15')]);})[_0xd871('0x1b')](function(_0x2ccc7d){_0x316eb6(_0x2ccc7d);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x66ee2e,_0x1a8197){return amiClient[_0xd871('0x12')](_0xd871('0x1c'),{})[_0xd871('0x14')](function(_0x3272f8){if(_0x3272f8[_0xd871('0xe')])throw new Error(_0xd871('0x1d'));return _0x66ee2e(_0x3272f8[_0xd871('0x15')]);})['catch'](function(_0x453954){_0x1a8197(_0x453954);});});}function initializeQueues(_0x40206b,_0x10e021,_0x525826,_0x4af9e8){var _0x443dd8=[_0xd871('0x1e'),'available','waiting',_0xd871('0x1f'),_0xd871('0x20')];if(_0x525826===_0xd871('0x18')&&_0x4af9e8===_0xd871('0x21')){_0x443dd8['push']('pTalking',_0xd871('0x22'),'message',_0xd871('0x23'),_0xd871('0x24'),_0xd871('0x25'),_0xd871('0x26'),'startProgressive','erlangCalls',_0xd871('0x27'),_0xd871('0x28'),'erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold',_0xd871('0x29'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls',_0xd871('0x2a'),_0xd871('0x2b'),_0xd871('0x2c'),'predictiveIntervalAvgHoldtime',_0xd871('0x2d'));}return _0x40206b['map'](function(_0x246951){var _0x3f85f5=_0x246951['get']({'plain':!![]});_0x3f85f5[_0xd871('0x2e')]=[];_0x3f85f5[_0xd871('0x20')]=0x0;_0x3f85f5[_0xd871('0x2f')]=0x0;_0x3f85f5[_0xd871('0x1e')]=0x0;_0x3f85f5['available']=0x0;_0x3f85f5[_0xd871('0x30')]=0x0;if(_0x525826===_0xd871('0x18')){_0x3f85f5[_0xd871('0x1f')]=0x0;_0x3f85f5[_0xd871('0x31')]=0x0;if(_0x4af9e8===_0xd871('0x21')){_0x3f85f5['pTalking']=0x0;_0x3f85f5[_0xd871('0x22')]=0x0;}}var _0x24e33e=_[_0xd871('0x32')](_0x10e021,['id',_0x3f85f5['id']]);if(_0x24e33e)_[_0xd871('0x17')](_0x3f85f5,_['pick'](_0x24e33e,_0x443dd8));return _0x3f85f5;});}function updateAgentVoiceStatus(_0x202468,_0x3fde2a,_0x84393b){var _0x3fbfca=_['filter'](_0x84393b,['queue',_0x3fde2a[_0xd871('0x10')]]);if(_0x3fbfca[_0xd871('0x33')]===0x0)return _0x202468[_0xd871('0x31')]=!![];if(_[_0xd871('0x34')](_0x3fbfca,[_0xd871('0x35'),_0x202468[_0xd871('0x36')][_0xd871('0x37')]()]))return _0x202468[_0xd871('0x1f')]=!![];if(!_0x202468[_0xd871('0x1f')])return _0x202468[_0xd871('0x31')]=!![];}function getVoiceQueueAgents(_0x5930dc,_0x3091c4,_0x316da0,_0x599703){var _0x4eb1c8=_[_0xd871('0x32')](_0x3091c4,['id',_0x5930dc['id']]);if(!_0x4eb1c8)return _0x5930dc;return _0x4eb1c8[_0xd871('0x38')]({'raw':!![]})[_0xd871('0x14')](function(_0x21f261){for(var _0xfcd21=0x0;_0xfcd21<_0x21f261[_0xd871('0x33')];_0xfcd21++){var _0x5b0727=_[_0xd871('0x32')](_0x316da0,['id',_0x21f261[_0xfcd21][_0xd871('0x39')]]);if(!_0x5b0727){_0x5b0727={'id':_0x21f261[_0xfcd21][_0xd871('0x39')],'name':_0x21f261[_0xfcd21][_0xd871('0x39')],'accountcode':'','online':![]};}var _0x4a0aaa={'id':_0x5b0727['id'],'name':_0x5b0727[_0xd871('0x10')],'internal':_0x5b0727[_0xd871('0x3a')],'online':Boolean(_0x5b0727[_0xd871('0x3b')]),'paused':Boolean(_0x21f261[_0xfcd21][_0xd871('0x20')])};if(_0x5b0727[_0xd871('0x3c')]===_0xd871('0x1f'))updateAgentVoiceStatus(_0x4a0aaa,_0x5930dc,_0x599703);if(_0x4a0aaa[_0xd871('0x3b')])_0x5930dc[_0xd871('0x2f')]++;if(_0x4a0aaa[_0xd871('0x31')])_0x5930dc[_0xd871('0x31')]++;if(_0x4a0aaa[_0xd871('0x20')]&&!_0x4a0aaa[_0xd871('0x31')]&&!_0x4a0aaa[_0xd871('0x1f')])_0x5930dc['paused']++;_0x5930dc[_0xd871('0x2e')][_0xd871('0x3d')](_0x4a0aaa);}return _0x5930dc;});}function getQueueAgents(_0x2ed040,_0x4c7282,_0x12f876){var _0x1cbbcc=_0xd871('0x3e')+_[_0xd871('0x3f')](_0x12f876)+_0xd871('0x40');var _0x52d1be=_0x12f876+'Pause';return db[_0x1cbbcc][_0xd871('0x41')]({'where':{[_['startCase'](_0x12f876)+_0xd871('0x42')]:_0x2ed040['id']},'raw':!![]})[_0xd871('0x14')](function(_0x3af3a6){for(var _0x356a2d=0x0;_0x356a2d<_0x3af3a6[_0xd871('0x33')];_0x356a2d++){var _0x42d8af=_[_0xd871('0x32')](_0x4c7282,['id',_0x3af3a6[_0x356a2d]['UserId']]);if(!_0x42d8af){_0x42d8af={'id':_0x3af3a6[_0x356a2d][_0xd871('0x39')],'name':_0x3af3a6[_0x356a2d]['UserId'],'online':![],['pauseField']:![]};}var _0x2b900a={'id':_0x42d8af['id'],'name':_0x42d8af[_0xd871('0x10')],'online':Boolean(_0x42d8af[_0xd871('0x3b')]),'paused':Boolean(_0x42d8af[_0x52d1be])};if(_0x2b900a[_0xd871('0x3b')])_0x2ed040[_0xd871('0x2f')]++;_0x2ed040[_0xd871('0x2e')][_0xd871('0x3d')](_0x2b900a);}return _0x2ed040;});}function isIdle(_0x52783f){return _0x52783f===_0xd871('0x43')||_0x52783f===_0xd871('0x44')||_0x52783f===_0xd871('0x45')||_0x52783f===_0xd871('0x46')||_['isNil'](_0x52783f);}function isAgentPaused(_0x153a7a,_0x13f34f){var _0x5d3149=[_0x153a7a['chatPause'],_0x153a7a[_0xd871('0x47')],_0x153a7a['mailPause'],_0x153a7a[_0xd871('0x48')],_0x153a7a[_0xd871('0x49')],_0x153a7a['voicePause'],_0x153a7a[_0xd871('0x4a')]];if(!_0x13f34f)return _[_0xd871('0x4b')](_0x5d3149);var _0x413272=_[_0xd871('0x4c')](_0x5d3149);return _0x413272['length']>0x0&&_0x413272[_0xd871('0x33')]<_0x5d3149[_0xd871('0x33')]?!![]:![];}function isAgentIdle(_0x55f7d5){if(_0x55f7d5['voiceStatus']!=='idle'&&_0x55f7d5['voicePause']){_0x55f7d5[_0xd871('0x3c')]='pause';return![];}return _[_0xd871('0x4b')]([_0x55f7d5[_0xd871('0x4d')],_0x55f7d5[_0xd871('0x4e')],_0x55f7d5[_0xd871('0x4f')],_0x55f7d5['openchannelStatus'],_0x55f7d5['smsStatus'],_0x55f7d5[_0xd871('0x3c')],_0x55f7d5[_0xd871('0x50')]],isIdle);}function getAgentStatus(_0x40e4ed){var _0x5cb93e='unknown';if(isAgentPaused(_0x40e4ed))_0x5cb93e='pause';else if(isAgentPaused(_0x40e4ed,!![]))_0x5cb93e=_0xd871('0x51');else if(isAgentIdle(_0x40e4ed))_0x5cb93e=_0xd871('0x43');else _0x5cb93e='busy';return _0x5cb93e;}exports['getAgents']=function(_0x356598,_0x1b0ee7){var _0x3cf8ff={'count':0x0,'rows':[]},_0x181b42={},_0x4921cb,_0x2fda1b,_0xc0f1dd=[_0xd871('0x52'),'online',_0xd871('0x53'),_0xd871('0x54'),_0xd871('0x55'),_0xd871('0x54'),_0xd871('0x36'),'address',_0xd871('0x56'),_0xd871('0x48'),_0xd871('0x57'),_0xd871('0x49'),_0xd871('0x4a'),'faxPause',_0xd871('0x58'),_0xd871('0x59'),_0xd871('0x5a'),_0xd871('0x5b'),_0xd871('0x5c'),_0xd871('0x5d'),'faxCapacity',_0xd871('0x5e'),_0xd871('0x5f'),_0xd871('0x60'),_0xd871('0x61'),_0xd871('0x62'),_0xd871('0x63'),_0xd871('0x4d'),'openchannelStatus',_0xd871('0x4f'),_0xd871('0x64'),_0xd871('0x50'),'faxStatus',_0xd871('0x3c'),_0xd871('0x65'),_0xd871('0x66'),_0xd871('0x67'),'smsStatusTime',_0xd871('0x68'),_0xd871('0x69'),'voiceStatusTime',_0xd871('0x6a'),_0xd871('0x6b'),'screenrecording',_0xd871('0x6c'),_0xd871('0x6d'),_0xd871('0x6e')],_0x32934a=['chatPause',_0xd871('0x48'),_0xd871('0x57'),_0xd871('0x49'),_0xd871('0x4a'),_0xd871('0x47'),_0xd871('0x58'),_0xd871('0x3b')];Promise['resolve']()['then'](function(){var _0x5ada4f=_[_0xd871('0x6f')](db[_0xd871('0x3e')][_0xd871('0x70')],function(_0x58e639){return{'name':_0x58e639[_0xd871('0x71')],'type':_0x58e639[_0xd871('0x72')][_0xd871('0x73')]};});_0x356598['query'][_0xd871('0x74')]=_0xd871('0x75');_0x356598[_0xd871('0x76')][_0xd871('0x3b')]=!![];_0x181b42=qs[_0xd871('0x77')](_0x5ada4f,_0x356598);_0x181b42[_0xd871('0x78')]=!![];if(_0x356598[_0xd871('0x79')][_0xd871('0x74')]===_0xd871('0x79')){var _0x557ab3={'params':{'id':_0x356598[_0xd871('0x79')][_0xd871('0x7a')]},'query':{'section':_0xd871('0x13'),'role':_0xd871('0x75'),'online':!![],'nolimit':_0x356598['query'][_0xd871('0x7b')],'sort':_0x356598[_0xd871('0x76')]['sort'],'filter':_0x356598[_0xd871('0x76')][_0xd871('0x4c')],'raw':!![]}};return db[_0xd871('0x7c')][_0xd871('0x7d')](_0x557ab3);}return db[_0xd871('0x3e')][_0xd871('0x7e')](_0x181b42);})[_0xd871('0x14')](function(_0x1189fa){_0x3cf8ff[_0xd871('0xb')]=_0x1189fa['count'];_0x4921cb=_0x1189fa['rows'];return getRealtimeAgents();})['then'](function(_0x4147b0){_0x2fda1b=_0x4147b0['rows'];return _0x4921cb['map'](function(_0xd8f10a){var _0x6a2bf7=_[_0xd871('0x32')](_0x2fda1b,['id',_0xd8f10a['id']]);if(_0x6a2bf7)_[_0xd871('0x17')](_0xd8f10a,_['pick'](_[_0xd871('0x7f')](_0x6a2bf7,_0x32934a),_0xc0f1dd));_0xd8f10a['globalStatus']=getAgentStatus(_0xd8f10a);return _0xd8f10a;});})[_0xd871('0x14')](function(_0x2addbb){var _0x485274=undefined;if(_0x356598[_0xd871('0x76')][_0xd871('0x80')]||_0x356598[_0xd871('0x76')]['globalQueueFilter']){if(_0x356598[_0xd871('0x76')][_0xd871('0x80')]){_0x485274=_['filter'](_0x2addbb,[_0xd871('0x81'),_0x356598[_0xd871('0x76')]['globalStatusFilter']]);if(_0x356598[_0xd871('0x76')][_0xd871('0x82')]){_0x485274=_['filter'](_0x485274,[_0xd871('0x55'),_0x356598['query']['pauseTypeFilter']]);}}if(_0x356598[_0xd871('0x76')][_0xd871('0x83')]){if(_0x485274){_0x485274=_[_0xd871('0x4c')](_0x485274,['queue',_0x356598[_0xd871('0x76')]['globalQueueFilter']]);}else{_0x485274=_[_0xd871('0x4c')](_0x2addbb,[_0xd871('0x6a'),_0x356598[_0xd871('0x76')][_0xd871('0x83')]]);}}}_0x3cf8ff[_0xd871('0x84')]=_0x485274||_0x2addbb;return _0x3cf8ff;})[_0xd871('0x14')](respondWithFilteredResult(_0x1b0ee7,_0x181b42))['catch'](handleError(_0x1b0ee7,null));};exports[_0xd871('0x85')]=function(_0x2e9b82,_0x420450){var _0x34f408=['mail',_0xd871('0x86'),_0xd871('0x87'),_0xd871('0x88'),_0xd871('0x89'),_0xd871('0x8a'),_0xd871('0x18')];var _0x2952e2={'count':0x0,'rows':[]},_0x3be010={},_0x484ecc,_0x184d40,_0x5bf174,_0x193a28,_0x5cc8c7;Promise[_0xd871('0x8b')]()[_0xd871('0x14')](function(){if(_0x2e9b82[_0xd871('0x76')][_0xd871('0x8c')]){if(!_['includes'](_0x34f408,_0x2e9b82[_0xd871('0x76')][_0xd871('0x8c')][_0xd871('0x8d')]()))throw new Error('Invalid\x20channel');_0x484ecc=_0x2e9b82[_0xd871('0x76')][_0xd871('0x8c')][_0xd871('0x8d')]();}var _0x35f918=_[_0xd871('0x3f')](_0x484ecc)+_0xd871('0x40');var _0x56151c=_[_0xd871('0x6f')](db[_0x35f918][_0xd871('0x70')],function(_0x4c6c69){return{'name':_0x4c6c69[_0xd871('0x71')],'type':_0x4c6c69['type'][_0xd871('0x73')]};});_0x3be010=qs[_0xd871('0x77')](_0x56151c,_0x2e9b82);if(_0x2e9b82[_0xd871('0x79')][_0xd871('0x74')]==='user'){var _0x172b5e={'params':{'id':_0x2e9b82[_0xd871('0x79')][_0xd871('0x7a')]},'query':{'section':_0x484ecc===_0xd871('0x18')&&_0x2e9b82['query']['type']===_0xd871('0x21')?_0xd871('0x8e'):_[_0xd871('0x3f')](_0x484ecc)+_0xd871('0x19'),'type':_0x2e9b82['query'][_0xd871('0x72')],'nolimit':!![],'sort':'name','filter':_0x2e9b82[_0xd871('0x76')][_0xd871('0x4c')]}};return db[_0xd871('0x7c')][_0xd871('0x7d')](_0x172b5e);}return db[_0x35f918][_0xd871('0x7e')](_0x3be010);})[_0xd871('0x14')](function(_0x385996){_0x2952e2[_0xd871('0xb')]=_0x385996[_0xd871('0xb')];_0x184d40=_0x385996[_0xd871('0x84')];return getRealtimeQueues(_0x2e9b82,_0x484ecc);})[_0xd871('0x14')](function(_0x2eea39){_0x193a28=_0x2eea39[_0xd871('0x84')];return getRealtimeAgents();})[_0xd871('0x14')](function(_0x23a510){_0x5bf174=_0x23a510[_0xd871('0x84')];if(_0x484ecc!=_0xd871('0x18'))return;return getRealtimeVoiceQueueChannels();})[_0xd871('0x14')](function(_0x5644b1){_0x5cc8c7=_0x5644b1?_0x5644b1['rows']:[];return initializeQueues(_0x184d40,_0x193a28,_0x484ecc,_0x2e9b82[_0xd871('0x76')]['type']);})[_0xd871('0x14')](function(_0x50fc2d){var _0x53b54c=_0x50fc2d['map'](function(_0x36c0ce){if(_0x484ecc==='voice')return getVoiceQueueAgents(_0x36c0ce,_0x184d40,_0x5bf174,_0x5cc8c7);else return getQueueAgents(_0x36c0ce,_0x5bf174,_0x484ecc);});return Promise[_0xd871('0x8f')](_0x53b54c);})[_0xd871('0x14')](function(_0x53c96e){_0x2952e2[_0xd871('0x84')]=_0x53c96e;return _0x2952e2;})[_0xd871('0x14')](respondWithFilteredResult(_0x420450,_0x3be010))['catch'](handleError(_0x420450,null));};
\ No newline at end of file
index 421857c..667f225 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x362016,_0x26bb9d){var _0x33eace=function(_0x3f55bd){while(--_0x3f55bd){_0x362016['push'](_0x362016['shift']());}};_0x33eace(++_0x26bb9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1357cc,_0x2fbdd6){var _0x1a61f9=function(_0x2dcadd){while(--_0x2dcadd){_0x1357cc['push'](_0x1357cc['shift']());}};_0x1a61f9(++_0x2fbdd6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 4c1ddb0..dd69e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dfd=['sequelize','exports','INTEGER','STRING','DATE'];(function(_0x9cdace,_0x3f9000){var _0x37cf93=function(_0x4d26e4){while(--_0x4d26e4){_0x9cdace['push'](_0x9cdace['shift']());}};_0x37cf93(++_0x3f9000);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd7df('0x0'));module[_0xd7df('0x1')]={'state':{'type':Sequelize[_0xd7df('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xd7df('0x3')]},'scheduledat':{'type':Sequelize[_0xd7df('0x4')]},'uniqueid':{'type':Sequelize[_0xd7df('0x3')]},'starttime':{'type':Sequelize[_0xd7df('0x4')]},'responsetime':{'type':Sequelize[_0xd7df('0x4')]},'ringtime':{'type':Sequelize[_0xd7df('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xd7df('0x3')]},'campaigntype':{'type':Sequelize[_0xd7df('0x3')]},'membername':{'type':Sequelize[_0xd7df('0x3')]}};
\ No newline at end of file
+var _0x2eb2=['INTEGER','STRING','DATE','exports'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x2eb2,0x19f));var _0x22eb=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x2eb2[_0x139a3c];return _0x2b375b;};'use strict';var Sequelize=require('sequelize');module[_0x22eb('0x0')]={'state':{'type':Sequelize[_0x22eb('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x22eb('0x2')]},'scheduledat':{'type':Sequelize[_0x22eb('0x3')]},'uniqueid':{'type':Sequelize[_0x22eb('0x2')]},'starttime':{'type':Sequelize[_0x22eb('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x22eb('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x22eb('0x2')]}};
\ No newline at end of file
index 18faa13..f6d4686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb28c=['path','rimraf','../../config/environment','define','ReportAgentPreview','report_agent_preview','util','api','moment','bluebird'];(function(_0x2fc744,_0x4c10e2){var _0x53c1ac=function(_0x5eee79){while(--_0x5eee79){_0x2fc744['push'](_0x2fc744['shift']());}};_0x53c1ac(++_0x4c10e2);}(_0xb28c,0x6a));var _0xcb28=function(_0xf6a0d9,_0x8522d6){_0xf6a0d9=_0xf6a0d9-0x0;var _0x2c1214=_0xb28c[_0xf6a0d9];return _0x2c1214;};'use strict';var _=require('lodash');var util=require(_0xcb28('0x0'));var logger=require('../../config/logger')(_0xcb28('0x1'));var moment=require(_0xcb28('0x2'));var BPromise=require(_0xcb28('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcb28('0x4'));var rimraf=require(_0xcb28('0x5'));var config=require(_0xcb28('0x6'));var attributes=require('./reportAgentPreview.attributes');module['exports']=function(_0x361549,_0x56aae4){return _0x361549[_0xcb28('0x7')](_0xcb28('0x8'),attributes,{'tableName':_0xcb28('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x92bb=['rimraf','../../config/environment','exports','define','ReportAgentPreview','report_agent_preview','lodash','util','api','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x92bb,0x1a0));var _0xb92b=function(_0x290694,_0x281935){_0x290694=_0x290694-0x0;var _0x5a0f2e=_0x92bb[_0x290694];return _0x5a0f2e;};'use strict';var _=require(_0xb92b('0x0'));var util=require(_0xb92b('0x1'));var logger=require('../../config/logger')(_0xb92b('0x2'));var moment=require(_0xb92b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb92b('0x4'));var config=require(_0xb92b('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0xb92b('0x6')]=function(_0x237331,_0x5c7ecf){return _0x237331[_0xb92b('0x7')](_0xb92b('0x8'),attributes,{'tableName':_0xb92b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5af1866..d740ec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x431d=['message','result','CreateReportAgentPreview','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x431d,0x1db));var _0xd431=function(_0x51652a,_0x5144fc){_0x51652a=_0x51652a-0x0;var _0xae7099=_0x431d[_0x51652a];return _0xae7099;};'use strict';var _=require(_0xd431('0x0'));var util=require(_0xd431('0x1'));var moment=require(_0xd431('0x2'));var BPromise=require(_0xd431('0x3'));var rs=require(_0xd431('0x4'));var fs=require('fs');var Redis=require(_0xd431('0x5'));var db=require(_0xd431('0x6'))['db'];var utils=require(_0xd431('0x7'));var logger=require(_0xd431('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd431('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x217520,_0x4e42ca,_0xface44){return new BPromise(function(_0x6a7b6d,_0x5753d1){return client[_0xd431('0xa')](_0x217520,_0xface44)[_0xd431('0xb')](function(_0x1c6a34){logger[_0xd431('0xc')](_0xd431('0xd'),_0x4e42ca,_0xd431('0xe'));logger[_0xd431('0xf')](_0xd431('0x10'),_0x4e42ca,_0xd431('0xe'),JSON[_0xd431('0x11')](_0x1c6a34));if(_0x1c6a34['error']){if(_0x1c6a34[_0xd431('0x12')]['code']===0x1f4){logger['error'](_0xd431('0xd'),_0x4e42ca,_0x1c6a34[_0xd431('0x12')][_0xd431('0x13')]);return _0x5753d1(_0x1c6a34['error'][_0xd431('0x13')]);}logger['error'](_0xd431('0xd'),_0x4e42ca,_0x1c6a34[_0xd431('0x12')]['message']);return _0x6a7b6d(_0x1c6a34[_0xd431('0x12')][_0xd431('0x13')]);}else{logger[_0xd431('0xc')](_0xd431('0xd'),_0x4e42ca,_0xd431('0xe'));_0x6a7b6d(_0x1c6a34[_0xd431('0x14')][_0xd431('0x13')]);}})['catch'](function(_0x57b3d5){logger[_0xd431('0x12')](_0xd431('0xd'),_0x4e42ca,_0x57b3d5);_0x5753d1(_0x57b3d5);});});}exports[_0xd431('0x15')]=function(_0x40ebd8){var _0x1c4569=this;return new Promise(function(_0x34705f,_0x6f0355){return db['ReportAgentPreview'][_0xd431('0x16')](_0x40ebd8[_0xd431('0x17')],{'raw':_0x40ebd8[_0xd431('0x18')]?_0x40ebd8[_0xd431('0x18')][_0xd431('0x19')]===undefined?!![]:![]:!![]})[_0xd431('0xb')](function(_0x30e42c){logger['info'](_0xd431('0x15'),_0x40ebd8);logger[_0xd431('0xf')]('CreateReportAgentPreview',_0x40ebd8,JSON[_0xd431('0x11')](_0x30e42c));_0x34705f(_0x30e42c);})['catch'](function(_0xe38cf9){logger['error'](_0xd431('0x15'),_0xe38cf9[_0xd431('0x13')],_0x40ebd8);_0x6f0355(_0x1c4569[_0xd431('0x12')](0x1f4,_0xe38cf9[_0xd431('0x13')]));});});};
\ No newline at end of file
+var _0x8a35=['../../config/environment','jayson/promise','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ReportAgentPreview','body','options','raw','CreateReportAgentPreview','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x33ebf5,_0x258ec6){var _0x66957b=function(_0x49739a){while(--_0x49739a){_0x33ebf5['push'](_0x33ebf5['shift']());}};_0x66957b(++_0x258ec6);}(_0x8a35,0x69));var _0x58a3=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8a35[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x58a3('0x0'));var util=require(_0x58a3('0x1'));var moment=require(_0x58a3('0x2'));var BPromise=require(_0x58a3('0x3'));var rs=require(_0x58a3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x58a3('0x5'))['db'];var utils=require(_0x58a3('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x58a3('0x7'));var jayson=require(_0x58a3('0x8'));var client=jayson['client'][_0x58a3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x148f06,_0xf7ed1e,_0x3298f1){return new BPromise(function(_0x121ca2,_0x1523d7){return client[_0x58a3('0xa')](_0x148f06,_0x3298f1)[_0x58a3('0xb')](function(_0x29b7b1){logger[_0x58a3('0xc')](_0x58a3('0xd'),_0xf7ed1e,'request\x20sent');logger[_0x58a3('0xe')](_0x58a3('0xf'),_0xf7ed1e,_0x58a3('0x10'),JSON[_0x58a3('0x11')](_0x29b7b1));if(_0x29b7b1['error']){if(_0x29b7b1[_0x58a3('0x12')][_0x58a3('0x13')]===0x1f4){logger[_0x58a3('0x12')](_0x58a3('0xd'),_0xf7ed1e,_0x29b7b1['error']['message']);return _0x1523d7(_0x29b7b1['error'][_0x58a3('0x14')]);}logger[_0x58a3('0x12')](_0x58a3('0xd'),_0xf7ed1e,_0x29b7b1[_0x58a3('0x12')][_0x58a3('0x14')]);return _0x121ca2(_0x29b7b1[_0x58a3('0x12')][_0x58a3('0x14')]);}else{logger[_0x58a3('0xc')](_0x58a3('0xd'),_0xf7ed1e,_0x58a3('0x10'));_0x121ca2(_0x29b7b1[_0x58a3('0x15')][_0x58a3('0x14')]);}})[_0x58a3('0x16')](function(_0x1e41e8){logger[_0x58a3('0x12')](_0x58a3('0xd'),_0xf7ed1e,_0x1e41e8);_0x1523d7(_0x1e41e8);});});}exports['CreateReportAgentPreview']=function(_0x13aa22){var _0x134c4d=this;return new Promise(function(_0x35953b,_0x11e6d7){return db[_0x58a3('0x17')]['create'](_0x13aa22[_0x58a3('0x18')],{'raw':_0x13aa22[_0x58a3('0x19')]?_0x13aa22['options'][_0x58a3('0x1a')]===undefined?!![]:![]:!![]})[_0x58a3('0xb')](function(_0x45cc25){logger[_0x58a3('0xc')](_0x58a3('0x1b'),_0x13aa22);logger[_0x58a3('0xe')]('CreateReportAgentPreview',_0x13aa22,JSON[_0x58a3('0x11')](_0x45cc25));_0x35953b(_0x45cc25);})[_0x58a3('0x16')](function(_0x5e392b){logger[_0x58a3('0x12')](_0x58a3('0x1b'),_0x5e392b[_0x58a3('0x14')],_0x13aa22);_0x11e6d7(_0x134c4d[_0x58a3('0x12')](0x1f4,_0x5e392b[_0x58a3('0x14')]));});});};
\ No newline at end of file
index 3d1e562..5ef3b8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fd4=['faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','path','Router','../../components/auth/service','/voice/channels','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/queues','/mail/accounts','mailAccounts','openchannelQueues','/sms/queues','/whatsapp/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions'];(function(_0x1481b1,_0x56dea3){var _0x3f900d=function(_0x2a2691){while(--_0x2a2691){_0x1481b1['push'](_0x1481b1['shift']());}};_0x3f900d(++_0x56dea3);}(_0x3fd4,0x165));var _0x43fd=function(_0x2e8036,_0x38ca71){_0x2e8036=_0x2e8036-0x0;var _0x327799=_0x3fd4[_0x2e8036];return _0x327799;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x43fd('0x0'));var express=require('express');var router=express[_0x43fd('0x1')]();var auth=require(_0x43fd('0x2'));var controller=require('./rpc.controller');router['get'](_0x43fd('0x3'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x5')]);router[_0x43fd('0x6')](_0x43fd('0x7'),auth['isAuthenticated'](),controller[_0x43fd('0x8')]);router[_0x43fd('0x6')](_0x43fd('0x9'),auth['isAuthenticated'](),controller[_0x43fd('0xa')]);router[_0x43fd('0x6')](_0x43fd('0xb'),auth['isAuthenticated'](),controller[_0x43fd('0xc')]);router[_0x43fd('0x6')]('/chat/queues',auth[_0x43fd('0x4')](),controller[_0x43fd('0xd')]);router[_0x43fd('0x6')](_0x43fd('0xe'),auth['isAuthenticated'](),controller['mailQueues']);router[_0x43fd('0x6')](_0x43fd('0xf'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x10')]);router['get']('/openchannel/queues',auth[_0x43fd('0x4')](),controller[_0x43fd('0x11')]);router[_0x43fd('0x6')](_0x43fd('0x12'),auth['isAuthenticated'](),controller['smsQueues']);router[_0x43fd('0x6')](_0x43fd('0x13'),auth[_0x43fd('0x4')](),controller['whatsappQueues']);router[_0x43fd('0x6')]('/fax/queues',auth['isAuthenticated'](),controller[_0x43fd('0x14')]);router[_0x43fd('0x6')]('/voice/queues/preview/:id',auth['isAuthenticated'](),controller[_0x43fd('0x15')]);router[_0x43fd('0x6')](_0x43fd('0x16'),auth['isAuthenticated'](),controller[_0x43fd('0x17')]);router[_0x43fd('0x6')](_0x43fd('0x18'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x19')]);router['get'](_0x43fd('0x1a'),auth[_0x43fd('0x4')](),controller['voiceQueuesChannelHangup']);router[_0x43fd('0x6')](_0x43fd('0x1b'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x1c')]);router[_0x43fd('0x6')](_0x43fd('0x1d'),auth['isAuthenticated'](),controller[_0x43fd('0x1e')]);router[_0x43fd('0x1f')](_0x43fd('0x1d'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x20')]);router[_0x43fd('0x6')](_0x43fd('0x21'),auth['isAuthenticated'](),controller[_0x43fd('0x22')]);router[_0x43fd('0x6')](_0x43fd('0x23'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x24')]);router[_0x43fd('0x6')](_0x43fd('0x25'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x26')]);router[_0x43fd('0x1f')](_0x43fd('0x27'),auth['isAuthenticated'](),controller[_0x43fd('0x28')]);router['get'](_0x43fd('0x29'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x2a')]);router[_0x43fd('0x6')](_0x43fd('0x2b'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x2c')]);router[_0x43fd('0x6')](_0x43fd('0x2d'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x2e')]);router['get'](_0x43fd('0x2f'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x30')]);router[_0x43fd('0x6')](_0x43fd('0x31'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x32')]);router[_0x43fd('0x6')]('/mail/queues/waitinginteractions',auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router[_0x43fd('0x6')](_0x43fd('0x33'),auth[_0x43fd('0x4')](),controller['openchannelQueuesWaitingInteractions']);router[_0x43fd('0x6')](_0x43fd('0x34'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x35')]);router[_0x43fd('0x6')](_0x43fd('0x36'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x37')]);router['get']('/whatsapp/queues/waitinginteractions',auth[_0x43fd('0x4')](),controller[_0x43fd('0x38')]);router[_0x43fd('0x6')](_0x43fd('0x39'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3a')]);router[_0x43fd('0x3b')](_0x43fd('0x3c'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3d')]('mail'));router[_0x43fd('0x6')](_0x43fd('0x3e'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3f')]);router['post'](_0x43fd('0x40'),auth[_0x43fd('0x4')](),controller['queueNotify']('chat'));router[_0x43fd('0x6')]('/chat/queues/:id',auth[_0x43fd('0x4')](),controller[_0x43fd('0x41')]);router[_0x43fd('0x3b')](_0x43fd('0x42'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3d')]('fax'));router['get'](_0x43fd('0x43'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x44')]);router[_0x43fd('0x3b')](_0x43fd('0x45'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3d')](_0x43fd('0x46')));router[_0x43fd('0x6')](_0x43fd('0x47'),auth['isAuthenticated'](),controller[_0x43fd('0x48')]);router[_0x43fd('0x3b')](_0x43fd('0x49'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3d')](_0x43fd('0x4a')));router[_0x43fd('0x3b')](_0x43fd('0x4b'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x3d')]('whatsapp'));router[_0x43fd('0x6')](_0x43fd('0x4c'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x4d')]);router[_0x43fd('0x6')](_0x43fd('0x4e'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x4f')]);router[_0x43fd('0x3b')](_0x43fd('0x50'),auth[_0x43fd('0x4')](),controller[_0x43fd('0x51')]);module[_0x43fd('0x52')]=router;
\ No newline at end of file
+var _0x7365=['telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','queueNotify','/mail/queues/:id','showMailQueues','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','exports','multer','util','path','../../components/auth/service','./rpc.controller','get','/voice/channels','voiceChannels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','voiceQueuesChannelHangup','/voice/queues/:id','showVoiceQueues','put','/outbound','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x7365,0x1d4));var _0x5736=function(_0x11309c,_0xe18a74){_0x11309c=_0x11309c-0x0;var _0x3fea9c=_0x7365[_0x11309c];return _0x3fea9c;};'use strict';var multer=require(_0x5736('0x0'));var util=require(_0x5736('0x1'));var path=require(_0x5736('0x2'));var express=require('express');var router=express['Router']();var auth=require(_0x5736('0x3'));var controller=require(_0x5736('0x4'));router[_0x5736('0x5')](_0x5736('0x6'),auth['isAuthenticated'](),controller[_0x5736('0x7')]);router[_0x5736('0x5')](_0x5736('0x8'),auth[_0x5736('0x9')](),controller[_0x5736('0xa')]);router[_0x5736('0x5')](_0x5736('0xb'),auth['isAuthenticated'](),controller['voiceChannelStopMixMonitor']);router[_0x5736('0x5')]('/voice/queues',auth[_0x5736('0x9')](),controller['voiceQueues']);router[_0x5736('0x5')](_0x5736('0xc'),auth[_0x5736('0x9')](),controller[_0x5736('0xd')]);router[_0x5736('0x5')](_0x5736('0xe'),auth[_0x5736('0x9')](),controller[_0x5736('0xf')]);router[_0x5736('0x5')](_0x5736('0x10'),auth['isAuthenticated'](),controller[_0x5736('0x11')]);router[_0x5736('0x5')](_0x5736('0x12'),auth[_0x5736('0x9')](),controller['openchannelQueues']);router[_0x5736('0x5')](_0x5736('0x13'),auth[_0x5736('0x9')](),controller[_0x5736('0x14')]);router[_0x5736('0x5')](_0x5736('0x15'),auth[_0x5736('0x9')](),controller[_0x5736('0x16')]);router[_0x5736('0x5')](_0x5736('0x17'),auth['isAuthenticated'](),controller[_0x5736('0x18')]);router[_0x5736('0x5')](_0x5736('0x19'),auth[_0x5736('0x9')](),controller[_0x5736('0x1a')]);router[_0x5736('0x5')](_0x5736('0x1b'),auth[_0x5736('0x9')](),controller[_0x5736('0x1c')]);router[_0x5736('0x5')](_0x5736('0x1d'),auth[_0x5736('0x9')](),controller[_0x5736('0x1e')]);router['get']('/voice/queues/channels/:uniqueid/hangup',auth[_0x5736('0x9')](),controller[_0x5736('0x1f')]);router[_0x5736('0x5')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x5736('0x9')](),controller['voiceQueuesChannelRedirect']);router[_0x5736('0x5')](_0x5736('0x20'),auth['isAuthenticated'](),controller[_0x5736('0x21')]);router[_0x5736('0x22')]('/voice/queues/:id',auth[_0x5736('0x9')](),controller['updateVoiceQueue']);router[_0x5736('0x5')](_0x5736('0x23'),auth[_0x5736('0x9')](),controller['outbound']);router[_0x5736('0x5')](_0x5736('0x24'),auth['isAuthenticated'](),controller['outboundChannels']);router[_0x5736('0x5')](_0x5736('0x25'),auth[_0x5736('0x9')](),controller[_0x5736('0x26')]);router[_0x5736('0x22')](_0x5736('0x27'),auth['isAuthenticated'](),controller[_0x5736('0x28')]);router[_0x5736('0x5')](_0x5736('0x29'),auth[_0x5736('0x9')](),controller[_0x5736('0x2a')]);router[_0x5736('0x5')](_0x5736('0x2b'),auth['isAuthenticated'](),controller[_0x5736('0x2c')]);router['get'](_0x5736('0x2d'),auth[_0x5736('0x9')](),controller[_0x5736('0x2e')]);router[_0x5736('0x5')](_0x5736('0x2f'),auth[_0x5736('0x9')](),controller[_0x5736('0x30')]);router['get']('/chat/queues/waitinginteractions',auth[_0x5736('0x9')](),controller[_0x5736('0x31')]);router['get'](_0x5736('0x32'),auth['isAuthenticated'](),controller[_0x5736('0x33')]);router['get'](_0x5736('0x34'),auth[_0x5736('0x9')](),controller[_0x5736('0x35')]);router[_0x5736('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0x5736('0x9')](),controller[_0x5736('0x36')]);router[_0x5736('0x5')](_0x5736('0x37'),auth[_0x5736('0x9')](),controller[_0x5736('0x38')]);router[_0x5736('0x5')](_0x5736('0x39'),auth[_0x5736('0x9')](),controller[_0x5736('0x3a')]);router[_0x5736('0x5')](_0x5736('0x3b'),auth[_0x5736('0x9')](),controller[_0x5736('0x3c')]);router[_0x5736('0x3d')]('/mail/queues/:id/notify',auth[_0x5736('0x9')](),controller[_0x5736('0x3e')]('mail'));router[_0x5736('0x5')](_0x5736('0x3f'),auth[_0x5736('0x9')](),controller[_0x5736('0x40')]);router['post']('/chat/queues/:id/notify',auth[_0x5736('0x9')](),controller[_0x5736('0x3e')](_0x5736('0x41')));router['get'](_0x5736('0x42'),auth['isAuthenticated'](),controller[_0x5736('0x43')]);router['post'](_0x5736('0x44'),auth[_0x5736('0x9')](),controller['queueNotify'](_0x5736('0x45')));router[_0x5736('0x5')](_0x5736('0x46'),auth['isAuthenticated'](),controller[_0x5736('0x47')]);router['post'](_0x5736('0x48'),auth[_0x5736('0x9')](),controller[_0x5736('0x3e')](_0x5736('0x49')));router[_0x5736('0x5')](_0x5736('0x4a'),auth[_0x5736('0x9')](),controller[_0x5736('0x4b')]);router[_0x5736('0x3d')]('/sms/queues/:id/notify',auth[_0x5736('0x9')](),controller[_0x5736('0x3e')](_0x5736('0x4c')));router['post'](_0x5736('0x4d'),auth[_0x5736('0x9')](),controller[_0x5736('0x3e')](_0x5736('0x4e')));router[_0x5736('0x5')](_0x5736('0x4f'),auth[_0x5736('0x9')](),controller[_0x5736('0x50')]);router[_0x5736('0x5')](_0x5736('0x51'),auth[_0x5736('0x9')](),controller[_0x5736('0x52')]);router[_0x5736('0x3d')](_0x5736('0x53'),auth[_0x5736('0x9')](),controller['agentNotify']);module[_0x5736('0x54')]=router;
\ No newline at end of file
index 90a6776..56f45a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['client','http','request','then','error','code','message','result','catch','status','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','VoiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','voiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','body','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','interface','SIP/%s','internal','AgentCapacity','capacity','telephones','Telephones','Trunks','campaigns','Campaigns','ChatQueues','mailQueues','showMailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Website','Account','Queue','findOne','Message','Interaction','update','queue','InteractionId','From','QueueId','TransferReport','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','chat','User','agent','Agent\x20not\x20found','messageId','\x20Message\x20not\x20found','MessageId','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api'];(function(_0x38594b,_0xb58faa){var _0x405bf2=function(_0x356e9c){while(--_0x356e9c){_0x38594b['push'](_0x38594b['shift']());}};_0x405bf2(++_0xb58faa);}(_0x81bd,0x7c));var _0xd81b=function(_0x41ba41,_0x145412){_0x41ba41=_0x41ba41-0x0;var _0x22d385=_0x81bd[_0x41ba41];return _0x22d385;};'use strict';var BPromise=require(_0xd81b('0x0'));var moment=require(_0xd81b('0x1'));var _=require(_0xd81b('0x2'));var util=require(_0xd81b('0x3'));var db=require(_0xd81b('0x4'))['db'];var logger=require(_0xd81b('0x5'))(_0xd81b('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0xd81b('0x7')][_0xd81b('0x8')]({'port':0x232a});var mailClient=jayson[_0xd81b('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0xd81b('0x7')][_0xd81b('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x1f3f2c,_0x562084,_0x5e14e8){return new BPromise(function(_0xa4cf97,_0x5468d5){var _0x223515=_0x5e14e8?_0x5e14e8:amiClient;return _0x223515[_0xd81b('0x9')](_0x1f3f2c,_0x562084)[_0xd81b('0xa')](function(_0x86dab6){if(_0x86dab6[_0xd81b('0xb')]){if(_0x86dab6[_0xd81b('0xb')][_0xd81b('0xc')]===0x1f4){return _0x5468d5(_0x86dab6[_0xd81b('0xb')][_0xd81b('0xd')]);}return _0xa4cf97(_0x86dab6[_0xd81b('0xb')][_0xd81b('0xd')]);}else{_0xa4cf97(_0x86dab6[_0xd81b('0xe')]);}})[_0xd81b('0xf')](function(_0x560530){_0x5468d5(_0x560530);});});}function respondWithResult(_0x21dfff,_0x57f71d){_0x57f71d=_0x57f71d||0xc8;return function(_0x3f2405){if(_0x3f2405){return _0x21dfff[_0xd81b('0x10')](_0x57f71d)['json'](_0x3f2405);}return _0x21dfff[_0xd81b('0x11')](0x194);};}function handleError(_0x47dd04,_0x13dd00){_0x13dd00=_0x13dd00||0x1f4;return function(_0x41bf7a){logger[_0xd81b('0xb')](_0x41bf7a[_0xd81b('0x12')]);if(_0x41bf7a[_0xd81b('0x13')]){delete _0x41bf7a['name'];}_0x47dd04[_0xd81b('0x10')](_0x13dd00)[_0xd81b('0x14')](_0x41bf7a);};}function findById(_0x5c2863){return function(_0x2abef4){if(!_[_0xd81b('0x15')](_0x5c2863)&&!_[_0xd81b('0x15')](_0x2abef4)&&!_[_0xd81b('0x15')](_0x2abef4[_0xd81b('0x16')])){return _[_0xd81b('0x17')](_0x2abef4[_0xd81b('0x16')],function(_0x3d4d34){return _0x3d4d34['id']==_0x5c2863;});}return null;};}exports[_0xd81b('0x18')]=function(_0x285164,_0x1ff3c6){return respondWithRpcPromise(_0xd81b('0x19'),_0x285164[_0xd81b('0x1a')])[_0xd81b('0xa')](respondWithResult(_0x1ff3c6,null))[_0xd81b('0xf')](handleError(_0x1ff3c6,null));};exports[_0xd81b('0x1b')]=function(_0x5f101a,_0x4d566e){return respondWithRpcPromise(_0xd81b('0x1c'),_[_0xd81b('0x1d')](_0x5f101a[_0xd81b('0x1a')],_0x5f101a['params']))[_0xd81b('0xa')](respondWithResult(_0x4d566e,null))[_0xd81b('0xf')](handleError(_0x4d566e,null));};exports['voiceChannelStopMixMonitor']=function(_0xcd6474,_0x13d687){return respondWithRpcPromise(_0xd81b('0x1e'),_[_0xd81b('0x1d')](_0xcd6474[_0xd81b('0x1a')],_0xcd6474[_0xd81b('0x1f')]))[_0xd81b('0xa')](respondWithResult(_0x13d687,null))[_0xd81b('0xf')](handleError(_0x13d687,null));};exports[_0xd81b('0x20')]=function(_0x212c4e,_0x2ccedf){return respondWithRpcPromise(_0xd81b('0x21'),_0x212c4e['query'])[_0xd81b('0xa')](respondWithResult(_0x2ccedf,null))[_0xd81b('0xf')](handleError(_0x2ccedf,null));};exports[_0xd81b('0x22')]=function(_0x31b9fd,_0x3266c2){return respondWithRpcPromise(_0xd81b('0x21'),_0x31b9fd[_0xd81b('0x1a')])[_0xd81b('0xa')](findById(_0x31b9fd[_0xd81b('0x1f')]['id']))['then'](respondWithResult(_0x3266c2,null))[_0xd81b('0xf')](handleError(_0x3266c2,null));};exports['updateVoiceQueue']=function(_0x5c8aee,_0xb9ff9f){return respondWithRpcPromise(_0xd81b('0x23'),_['merge'](_0x5c8aee['body'],_0x5c8aee[_0xd81b('0x1f')]))[_0xd81b('0xa')](respondWithResult(_0xb9ff9f,null))[_0xd81b('0xf')](handleError(_0xb9ff9f,null));};exports[_0xd81b('0x24')]=function(_0x1a1572,_0x4654ba){return respondWithRpcPromise('VoiceQueuesPreview',_[_0xd81b('0x1d')](_0x1a1572[_0xd81b('0x1a')],_0x1a1572['params']))['then'](respondWithResult(_0x4654ba,null))[_0xd81b('0xf')](handleError(_0x4654ba,null));};exports[_0xd81b('0x25')]=function(_0x50472a,_0x50ce25){return respondWithRpcPromise('VoiceQueuesChannels',_0x50472a[_0xd81b('0x1a')])[_0xd81b('0xa')](respondWithResult(_0x50ce25,null))[_0xd81b('0xf')](handleError(_0x50ce25,null));};exports[_0xd81b('0x26')]=function(_0xa56339,_0x12ee8f){return respondWithRpcPromise(_0xd81b('0x27'),_['merge'](_0xa56339[_0xd81b('0x1a')],_0xa56339['params']))[_0xd81b('0xa')](respondWithResult(_0x12ee8f,null))[_0xd81b('0xf')](handleError(_0x12ee8f,null));};exports[_0xd81b('0x28')]=function(_0xcd9e86,_0x36c69f){return respondWithRpcPromise(_0xd81b('0x29'),_[_0xd81b('0x1d')](_0xcd9e86[_0xd81b('0x1a')],_0xcd9e86[_0xd81b('0x1f')]))[_0xd81b('0xa')](respondWithResult(_0x36c69f,null))[_0xd81b('0xf')](handleError(_0x36c69f,null));};exports[_0xd81b('0x2a')]=function(_0x346038,_0x57bc0c){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xd81b('0x1d')](_0x346038[_0xd81b('0x1a')],_0x346038[_0xd81b('0x1f')]))['then'](respondWithResult(_0x57bc0c,null))[_0xd81b('0xf')](handleError(_0x57bc0c,null));};exports[_0xd81b('0x2b')]=function(_0x5a236a,_0x46f058){return respondWithRpcPromise(_0xd81b('0x2c'),_0x5a236a['query'])[_0xd81b('0xa')](respondWithResult(_0x46f058,null))['catch'](handleError(_0x46f058,null));};exports[_0xd81b('0x2d')]=function(_0x2502d1,_0x203365){return respondWithRpcPromise(_0xd81b('0x2e'),_0x2502d1['query'])[_0xd81b('0xa')](respondWithResult(_0x203365,null))[_0xd81b('0xf')](handleError(_0x203365,null));};exports[_0xd81b('0x2f')]=function(_0x67fbe5,_0x3abd60){var _0x466e98;return respondWithRpcPromise(_0xd81b('0x30'),_0x67fbe5['query'])[_0xd81b('0xa')](function(_0x35a295){_0x466e98=_0x35a295;return respondWithRpcPromise(_0xd81b('0x30'),_0x67fbe5['query'],routingClient);})[_0xd81b('0xa')](function(_0x3a05f4){return _[_0xd81b('0x1d')]({},_0x3a05f4,_0x466e98);})[_0xd81b('0xa')](respondWithResult(_0x3abd60,null))[_0xd81b('0xf')](handleError(_0x3abd60,null));};exports['agentCapacity']=function(_0x3dfba7,_0x11d617){if(_0x3dfba7[_0xd81b('0x31')]&&_0x3dfba7[_0xd81b('0x31')][_0xd81b('0x32')]&&_0x3dfba7[_0xd81b('0x33')]&&_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x13')]){for(var _0x4405a8 in _0x3dfba7[_0xd81b('0x31')][_0xd81b('0x32')]){if(_0x3dfba7['body'][_0xd81b('0x32')][_0xd81b('0x34')](_0x4405a8)){db[_0xd81b('0x35')][_0xd81b('0x36')]({'where':{'channel':_0x4405a8,'membername':_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x13')],'type':_0xd81b('0x37'),'exitAt':null,'uniqueid':_0x3dfba7[_0xd81b('0x31')]['interaction'][_0x4405a8]&&_0x3dfba7['body'][_0xd81b('0x32')][_0x4405a8][_0xd81b('0x38')]?{'$notIn':_0x3dfba7[_0xd81b('0x31')][_0xd81b('0x32')][_0x4405a8]}:{'$ne':null}}})[_0xd81b('0xa')](function(_0x37031b){var _0x334bd0=moment()[_0xd81b('0x39')](_0xd81b('0x3a'));for(var _0xcfbbc2=0x0,_0x41e2e6=_0x37031b[_0xd81b('0x38')];_0xcfbbc2<_0x41e2e6;_0xcfbbc2+=0x1){_0x37031b[_0xcfbbc2]['updateAttributes']({'exitAt':_0x334bd0});}});for(var _0x27d18a=0x0;_0x27d18a<_0x3dfba7[_0xd81b('0x31')][_0xd81b('0x32')][_0x4405a8][_0xd81b('0x38')];_0x27d18a+=0x1){db[_0xd81b('0x35')][_0xd81b('0x3b')]({'where':{'channel':_0x4405a8,'membername':_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x13')],'type':_0xd81b('0x37'),'uniqueid':_0x3dfba7['body'][_0xd81b('0x32')][_0x4405a8][_0x27d18a],'exitAt':null},'defaults':{'channel':_0x4405a8,'membername':_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x13')],'interface':_[_0xd81b('0x15')](_0x3dfba7['user'][_0xd81b('0x3c')])?util[_0xd81b('0x39')](_0xd81b('0x3d'),_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x13')]):_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x3c')],'type':_0xd81b('0x37'),'enterAt':moment()[_0xd81b('0x39')]('YYYY-MM-DD\x20HH:mm:ss'),'role':'agent','internal':_0x3dfba7[_0xd81b('0x33')][_0xd81b('0x3e')],'uniqueid':_0x3dfba7[_0xd81b('0x31')][_0xd81b('0x32')][_0x4405a8][_0x27d18a]}});}}}}return respondWithRpcPromise(_0xd81b('0x3f'),{'id':_0x3dfba7[_0xd81b('0x1f')]['id'],'capacity':_0x3dfba7[_0xd81b('0x31')][_0xd81b('0x40')]},routingClient)['then'](respondWithResult(_0x11d617,null))[_0xd81b('0xf')](handleError(_0x11d617,null));};exports[_0xd81b('0x41')]=function(_0x1b523c,_0x3d171a){return respondWithRpcPromise(_0xd81b('0x42'),_0x1b523c['query'])[_0xd81b('0xa')](respondWithResult(_0x3d171a,null))[_0xd81b('0xf')](handleError(_0x3d171a,null));};exports['trunks']=function(_0x1f13c3,_0x315bd5){return respondWithRpcPromise(_0xd81b('0x43'),_0x1f13c3[_0xd81b('0x1a')])[_0xd81b('0xa')](respondWithResult(_0x315bd5,null))[_0xd81b('0xf')](handleError(_0x315bd5,null));};exports[_0xd81b('0x44')]=function(_0x22f588,_0x3ed626){return respondWithRpcPromise(_0xd81b('0x45'),_0x22f588[_0xd81b('0x1a')])['then'](respondWithResult(_0x3ed626,null))[_0xd81b('0xf')](handleError(_0x3ed626,null));};exports['chatQueues']=function(_0x1800fa,_0x7b438c){return respondWithRpcPromise(_0xd81b('0x46'),_0x1800fa[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x7b438c,null))[_0xd81b('0xf')](handleError(_0x7b438c,null));};exports['showChatQueues']=function(_0x2d978d,_0xe0c9c6){return respondWithRpcPromise('ChatQueues',_0x2d978d['query'],routingClient)[_0xd81b('0xa')](findById(_0x2d978d['params']['id']))[_0xd81b('0xa')](respondWithResult(_0xe0c9c6,null))['catch'](handleError(_0xe0c9c6,null));};exports[_0xd81b('0x47')]=function(_0x315a66,_0x3d97ba){return respondWithRpcPromise('MailQueues',_0x315a66[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x3d97ba,null))['catch'](handleError(_0x3d97ba,null));};exports[_0xd81b('0x48')]=function(_0x108aaf,_0x5951ec){return respondWithRpcPromise(_0xd81b('0x49'),_0x108aaf['query'],routingClient)[_0xd81b('0xa')](findById(_0x108aaf[_0xd81b('0x1f')]['id']))[_0xd81b('0xa')](respondWithResult(_0x5951ec,null))[_0xd81b('0xf')](handleError(_0x5951ec,null));};exports[_0xd81b('0x4a')]=function(_0x32eab4,_0x2f2afe){return respondWithRpcPromise(_0xd81b('0x4b'),_0x32eab4[_0xd81b('0x1a')],mailClient)[_0xd81b('0xa')](respondWithResult(_0x2f2afe,null))['catch'](handleError(_0x2f2afe,null));};exports[_0xd81b('0x4c')]=function(_0x434434,_0x385841){return respondWithRpcPromise(_0xd81b('0x4d'),_0x434434[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x385841,null))[_0xd81b('0xf')](handleError(_0x385841,null));};exports['showOpenchannelQueues']=function(_0x57f0fb,_0x5de22d){return respondWithRpcPromise(_0xd81b('0x4d'),_0x57f0fb[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](findById(_0x57f0fb[_0xd81b('0x1f')]['id']))[_0xd81b('0xa')](respondWithResult(_0x5de22d,null))[_0xd81b('0xf')](handleError(_0x5de22d,null));};exports[_0xd81b('0x4e')]=function(_0x5afecf,_0x3fcd8c){return respondWithRpcPromise(_0xd81b('0x4f'),_0x5afecf[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x3fcd8c,null))[_0xd81b('0xf')](handleError(_0x3fcd8c,null));};exports[_0xd81b('0x50')]=function(_0xb5fca8,_0x4ed17d){return respondWithRpcPromise(_0xd81b('0x4f'),_0xb5fca8[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](findById(_0xb5fca8[_0xd81b('0x1f')]['id']))[_0xd81b('0xa')](respondWithResult(_0x4ed17d,null))[_0xd81b('0xf')](handleError(_0x4ed17d,null));};exports[_0xd81b('0x51')]=function(_0x19d4f0,_0x8fa8cd){return respondWithRpcPromise(_0xd81b('0x52'),_0x19d4f0[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x8fa8cd,null))['catch'](handleError(_0x8fa8cd,null));};exports[_0xd81b('0x53')]=function(_0x5358a6,_0x2e7141){return respondWithRpcPromise(_0xd81b('0x52'),_0x5358a6[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](findById(_0x5358a6[_0xd81b('0x1f')]['id']))[_0xd81b('0xa')](respondWithResult(_0x2e7141,null))[_0xd81b('0xf')](handleError(_0x2e7141,null));};exports[_0xd81b('0x54')]=function(_0x10d6d2,_0x36fb7a){return respondWithRpcPromise('FaxQueues',_0x10d6d2[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x36fb7a,null))[_0xd81b('0xf')](handleError(_0x36fb7a,null));};exports[_0xd81b('0x55')]=function(_0x7720d3,_0x5abbb4){return respondWithRpcPromise('FaxQueues',_0x7720d3[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](findById(_0x7720d3[_0xd81b('0x1f')]['id']))[_0xd81b('0xa')](respondWithResult(_0x5abbb4,null))[_0xd81b('0xf')](handleError(_0x5abbb4,null));};exports[_0xd81b('0x56')]=function(_0xaee7e3,_0x539132){return respondWithRpcPromise(_0xd81b('0x57'),_0xaee7e3[_0xd81b('0x1a')])[_0xd81b('0xa')](respondWithResult(_0x539132,null))[_0xd81b('0xf')](handleError(_0x539132,null));};exports[_0xd81b('0x58')]=function(_0x21d039,_0x1e0da3){return respondWithRpcPromise(_0xd81b('0x59'),_0x21d039[_0xd81b('0x1a')],routingClient)['then'](respondWithResult(_0x1e0da3,null))[_0xd81b('0xf')](handleError(_0x1e0da3,null));};exports[_0xd81b('0x5a')]=function(_0x3858eb,_0x9c30e7){return respondWithRpcPromise(_0xd81b('0x5b'),_0x3858eb['query'],routingClient)[_0xd81b('0xa')](respondWithResult(_0x9c30e7,null))[_0xd81b('0xf')](handleError(_0x9c30e7,null));};exports['openchannelQueuesWaitingInteractions']=function(_0xa00645,_0x43e593){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0xa00645[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x43e593,null))[_0xd81b('0xf')](handleError(_0x43e593,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x2aff4b,_0x3db4d7){return respondWithRpcPromise(_0xd81b('0x5c'),_0x2aff4b['query'],routingClient)['then'](function(_0xdd970d){if(_0x2aff4b[_0xd81b('0x1a')][_0xd81b('0x5d')]!==undefined){var _0x5d601d=_(_0xdd970d[_0xd81b('0x16')])[_0xd81b('0x5e')]([_0x2aff4b[_0xd81b('0x1a')][_0xd81b('0x5d')],_0x2aff4b['params']['id']])['map'](_0xd81b('0x5f'))[_0xd81b('0x60')]()[_0xd81b('0x61')]();return _0xdd970d[_0xd81b('0x16')]['filter'](function(_0x1b8b17){return _0x5d601d[_0xd81b('0x62')](_0x1b8b17['queue_id'])>-0x1;});}else{return _0xdd970d[_0xd81b('0x16')]['filter'](function(_0x32a8f4){return _0x32a8f4[_0xd81b('0x5f')]===parseInt(_0x2aff4b['params']['id']);});}})[_0xd81b('0xa')](respondWithResult(_0x3db4d7,null))[_0xd81b('0xf')](handleError(_0x3db4d7,null));};exports[_0xd81b('0x63')]=function(_0x2490f1,_0x2b0fe4){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x2490f1[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x2b0fe4,null))[_0xd81b('0xf')](handleError(_0x2b0fe4,null));};exports[_0xd81b('0x64')]=function(_0x1919b2,_0x2b1d96){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x1919b2['query'],routingClient)[_0xd81b('0xa')](respondWithResult(_0x2b1d96,null))[_0xd81b('0xf')](handleError(_0x2b1d96,null));};exports[_0xd81b('0x65')]=function(_0x15aed5,_0x4dd8ac){return respondWithRpcPromise(_0xd81b('0x66'),_0x15aed5[_0xd81b('0x1a')],routingClient)[_0xd81b('0xa')](respondWithResult(_0x4dd8ac,null))[_0xd81b('0xf')](handleError(_0x4dd8ac,null));};exports[_0xd81b('0x67')]=function(_0x589882){return function(_0x3744bf,_0x374ac0){var _0x159b28,_0x40b468;var _0x1d596c=_[_0xd81b('0x68')](_0x589882);var _0x402eb9=_0x589882==='chat'?_0xd81b('0x69'):_0xd81b('0x6a');return db[_0x1d596c+_0xd81b('0x6b')][_0xd81b('0x6c')]({'raw':!![],'where':{'id':_0x3744bf[_0xd81b('0x1f')]['id']}})[_0xd81b('0xa')](function(_0x59bee6){if(_[_0xd81b('0x15')](_0x59bee6)){throw new Error(_0x1d596c+'\x20Queue\x20not\x20found');}_0x159b28=_0x59bee6;return db[_0x1d596c+_0xd81b('0x6d')][_0xd81b('0x6c')]({'where':{'id':_0x3744bf[_0xd81b('0x31')]['messageId']},'include':[{'model':db[_0x1d596c+_0xd81b('0x6e')],'as':_0xd81b('0x6e')},{'model':db[_0x1d596c+_0x402eb9],'as':_0xd81b('0x6a')}]});})[_0xd81b('0xa')](function(_0x254105){if(_[_0xd81b('0x15')](_0x254105)){throw new Error(_0x1d596c+'\x20Message\x20not\x20found');}_0x40b468=_0x254105;return _0x254105[_0xd81b('0x6f')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x5f5514={'uniqueid':_0x589882+'.'+_0x40b468['id']+'.'+_0x40b468[_0xd81b('0x6e')]['id'],'FromUserId':_0x3744bf[_0xd81b('0x33')]['id'],'type':_0xd81b('0x70')};_0x5f5514[_0x1d596c+'MessageId']=_0x40b468['id'];_0x5f5514[_0x1d596c+_0xd81b('0x71')]=_0x40b468[_0xd81b('0x6e')]['id'];_0x5f5514[_0xd81b('0x72')+_0x1d596c+_0x402eb9+'Id']=_0x40b468[_0xd81b('0x6a')]['id'];_0x5f5514['To'+_0x1d596c+_0xd81b('0x73')]=_0x159b28['id'];return db[_0x1d596c+_0xd81b('0x74')]['create'](_0x5f5514);})[_0xd81b('0xa')](function(){return respondWithRpcPromise(_0xd81b('0x75'),{'channel':_0x589882,'interaction':_0x40b468[_0xd81b('0x6e')],'message':_0x40b468,'account':_0x40b468[_0xd81b('0x6a')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd81b('0x70'),'appdata':_0x159b28[_0xd81b('0x13')]+','+(_0x40b468[_0xd81b('0x6a')][_0xd81b('0x76')]||0x12c),'interval':_0xd81b('0x77')}]},routingClient);})[_0xd81b('0xa')](respondWithResult(_0x374ac0,null))[_0xd81b('0xf')](handleError(_0x374ac0,null));};};exports[_0xd81b('0x78')]=function(_0x42eb62,_0x2c19fd){var _0x36d8fd,_0x5adfe4;if(_[_0xd81b('0x15')](_0x42eb62['body'][_0xd81b('0x79')])){throw new Error(_0xd81b('0x7a'));}var _0x1ca94b=_0x42eb62[_0xd81b('0x31')][_0xd81b('0x79')];var _0x115805=_['capitalize'](_0x1ca94b);var _0x3a41e6=_0x1ca94b===_0xd81b('0x7b')?_0xd81b('0x69'):_0xd81b('0x6a');return db[_0xd81b('0x7c')][_0xd81b('0x6c')]({'raw':!![],'where':{'id':_0x42eb62[_0xd81b('0x1f')]['id'],'role':_0xd81b('0x7d')}})[_0xd81b('0xa')](function(_0xfacc8f){if(_[_0xd81b('0x15')](_0xfacc8f)){throw new Error(_0xd81b('0x7e'));}_0x36d8fd=_0xfacc8f;return db[_0x115805+'Message'][_0xd81b('0x6c')]({'where':{'id':_0x42eb62[_0xd81b('0x31')][_0xd81b('0x7f')]},'include':[{'model':db[_0x115805+_0xd81b('0x6e')],'as':_0xd81b('0x6e')},{'model':db[_0x115805+_0x3a41e6],'as':'Account'}]});})[_0xd81b('0xa')](function(_0x1e61d8){if(_[_0xd81b('0x15')](_0x1e61d8)){throw new Error(_0x115805+_0xd81b('0x80'));}_0x5adfe4=_0x1e61d8;return _0x1e61d8[_0xd81b('0x6f')]({'read':0x0,'readAt':null,'UserId':null});})[_0xd81b('0xa')](function(){var _0x4e4919={'uniqueid':_0x1ca94b+'.'+_0x5adfe4['id']+'.'+_0x5adfe4[_0xd81b('0x6e')]['id'],'FromUserId':_0x42eb62['user']['id'],'type':_0xd81b('0x70'),'ToUserId':_0x36d8fd['id']};_0x4e4919[_0x115805+_0xd81b('0x81')]=_0x5adfe4['id'];_0x4e4919[_0x115805+_0xd81b('0x71')]=_0x5adfe4[_0xd81b('0x6e')]['id'];_0x4e4919['From'+_0x115805+_0x3a41e6+'Id']=_0x5adfe4[_0xd81b('0x6a')]['id'];return db[_0x115805+_0xd81b('0x74')]['create'](_0x4e4919);})[_0xd81b('0xa')](function(){return respondWithRpcPromise(_0xd81b('0x75'),{'channel':_0x1ca94b,'interaction':_0x5adfe4[_0xd81b('0x6e')],'message':_0x5adfe4,'account':_0x5adfe4[_0xd81b('0x6a')],'applications':[{'id':0x0,'priority':0x1,'app':_0xd81b('0x7d'),'appdata':_0x36d8fd['name']+','+(_0x5adfe4['Account'][_0xd81b('0x82')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xd81b('0xa')](respondWithResult(_0x2c19fd,null))['catch'](handleError(_0x2c19fd,null));};
\ No newline at end of file
+var _0xf494=['WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','map','queue_id','uniq','value','filter','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','Interaction','Account','\x20Message\x20not\x20found','MessageId','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','Agent\x20not\x20found','messageId','update','InteractionId','From','bluebird','moment','lodash','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','then','error','message','status','json','sendStatus','stack','name','isNil','rows','find','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','catch','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','trunks','campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues'];(function(_0xbe6968,_0x2d5094){var _0x53d936=function(_0x1d4171){while(--_0x1d4171){_0xbe6968['push'](_0xbe6968['shift']());}};_0x53d936(++_0x2d5094);}(_0xf494,0x1c6));var _0x4f49=function(_0x4f8974,_0x16b514){_0x4f8974=_0x4f8974-0x0;var _0x526e9b=_0xf494[_0x4f8974];return _0x526e9b;};'use strict';var BPromise=require(_0x4f49('0x0'));var moment=require(_0x4f49('0x1'));var _=require(_0x4f49('0x2'));var util=require('util');var db=require(_0x4f49('0x3'))['db'];var logger=require(_0x4f49('0x4'))(_0x4f49('0x5'));var jayson=require(_0x4f49('0x6'));var amiClient=jayson[_0x4f49('0x7')][_0x4f49('0x8')]({'port':0x232a});var mailClient=jayson[_0x4f49('0x7')][_0x4f49('0x8')]({'port':0x232b});var routingClient=jayson[_0x4f49('0x7')][_0x4f49('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){var _0x31a725=_0x58e9a0?_0x58e9a0:amiClient;return _0x31a725[_0x4f49('0x9')](_0x42b0e8,_0x5eb186)[_0x4f49('0xa')](function(_0x174d0d){if(_0x174d0d[_0x4f49('0xb')]){if(_0x174d0d[_0x4f49('0xb')]['code']===0x1f4){return _0x327bd5(_0x174d0d[_0x4f49('0xb')][_0x4f49('0xc')]);}return _0x169c95(_0x174d0d['error'][_0x4f49('0xc')]);}else{_0x169c95(_0x174d0d['result']);}})['catch'](function(_0x4b9cd3){_0x327bd5(_0x4b9cd3);});});}function respondWithResult(_0x12527d,_0x4bf89f){_0x4bf89f=_0x4bf89f||0xc8;return function(_0x1e1c37){if(_0x1e1c37){return _0x12527d[_0x4f49('0xd')](_0x4bf89f)[_0x4f49('0xe')](_0x1e1c37);}return _0x12527d[_0x4f49('0xf')](0x194);};}function handleError(_0x1a0f1e,_0x2f0131){_0x2f0131=_0x2f0131||0x1f4;return function(_0xfdb477){logger['error'](_0xfdb477[_0x4f49('0x10')]);if(_0xfdb477[_0x4f49('0x11')]){delete _0xfdb477[_0x4f49('0x11')];}_0x1a0f1e['status'](_0x2f0131)['send'](_0xfdb477);};}function findById(_0x2f0a0d){return function(_0x2ecaaa){if(!_[_0x4f49('0x12')](_0x2f0a0d)&&!_['isNil'](_0x2ecaaa)&&!_[_0x4f49('0x12')](_0x2ecaaa[_0x4f49('0x13')])){return _[_0x4f49('0x14')](_0x2ecaaa['rows'],function(_0x5bb23b){return _0x5bb23b['id']==_0x2f0a0d;});}return null;};}exports['voiceChannels']=function(_0x47f1e8,_0xb2081a){return respondWithRpcPromise(_0x4f49('0x15'),_0x47f1e8[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0xb2081a,null))['catch'](handleError(_0xb2081a,null));};exports[_0x4f49('0x17')]=function(_0x2aed27,_0x197a49){return respondWithRpcPromise(_0x4f49('0x18'),_[_0x4f49('0x19')](_0x2aed27['query'],_0x2aed27[_0x4f49('0x1a')]))[_0x4f49('0xa')](respondWithResult(_0x197a49,null))[_0x4f49('0x1b')](handleError(_0x197a49,null));};exports['voiceChannelStopMixMonitor']=function(_0x40755e,_0x1d70a7){return respondWithRpcPromise(_0x4f49('0x1c'),_[_0x4f49('0x19')](_0x40755e[_0x4f49('0x16')],_0x40755e[_0x4f49('0x1a')]))['then'](respondWithResult(_0x1d70a7,null))['catch'](handleError(_0x1d70a7,null));};exports[_0x4f49('0x1d')]=function(_0x429de7,_0x4fedbb){return respondWithRpcPromise(_0x4f49('0x1e'),_0x429de7[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0x4fedbb,null))['catch'](handleError(_0x4fedbb,null));};exports[_0x4f49('0x1f')]=function(_0x2eed1c,_0x298785){return respondWithRpcPromise(_0x4f49('0x1e'),_0x2eed1c[_0x4f49('0x16')])[_0x4f49('0xa')](findById(_0x2eed1c['params']['id']))['then'](respondWithResult(_0x298785,null))[_0x4f49('0x1b')](handleError(_0x298785,null));};exports[_0x4f49('0x20')]=function(_0x605c91,_0x560050){return respondWithRpcPromise(_0x4f49('0x21'),_[_0x4f49('0x19')](_0x605c91[_0x4f49('0x22')],_0x605c91['params']))['then'](respondWithResult(_0x560050,null))[_0x4f49('0x1b')](handleError(_0x560050,null));};exports[_0x4f49('0x23')]=function(_0x7a6ea0,_0x5e7076){return respondWithRpcPromise(_0x4f49('0x24'),_[_0x4f49('0x19')](_0x7a6ea0[_0x4f49('0x16')],_0x7a6ea0[_0x4f49('0x1a')]))[_0x4f49('0xa')](respondWithResult(_0x5e7076,null))[_0x4f49('0x1b')](handleError(_0x5e7076,null));};exports[_0x4f49('0x25')]=function(_0x45ae19,_0x1f38d3){return respondWithRpcPromise(_0x4f49('0x26'),_0x45ae19[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0x1f38d3,null))[_0x4f49('0x1b')](handleError(_0x1f38d3,null));};exports[_0x4f49('0x27')]=function(_0x135d17,_0x97ef98){return respondWithRpcPromise(_0x4f49('0x28'),_[_0x4f49('0x19')](_0x135d17[_0x4f49('0x16')],_0x135d17['params']))[_0x4f49('0xa')](respondWithResult(_0x97ef98,null))[_0x4f49('0x1b')](handleError(_0x97ef98,null));};exports[_0x4f49('0x29')]=function(_0x1cb3cc,_0x1c3af8){return respondWithRpcPromise(_0x4f49('0x2a'),_[_0x4f49('0x19')](_0x1cb3cc[_0x4f49('0x16')],_0x1cb3cc[_0x4f49('0x1a')]))[_0x4f49('0xa')](respondWithResult(_0x1c3af8,null))[_0x4f49('0x1b')](handleError(_0x1c3af8,null));};exports[_0x4f49('0x2b')]=function(_0x3ec6c4,_0x4d2d57){return respondWithRpcPromise(_0x4f49('0x2c'),_[_0x4f49('0x19')](_0x3ec6c4[_0x4f49('0x16')],_0x3ec6c4[_0x4f49('0x1a')]))[_0x4f49('0xa')](respondWithResult(_0x4d2d57,null))[_0x4f49('0x1b')](handleError(_0x4d2d57,null));};exports[_0x4f49('0x2d')]=function(_0x25fdf8,_0x10bfc4){return respondWithRpcPromise(_0x4f49('0x2e'),_0x25fdf8[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0x10bfc4,null))[_0x4f49('0x1b')](handleError(_0x10bfc4,null));};exports[_0x4f49('0x2f')]=function(_0x4e3f72,_0x802f20){return respondWithRpcPromise(_0x4f49('0x30'),_0x4e3f72['query'])[_0x4f49('0xa')](respondWithResult(_0x802f20,null))[_0x4f49('0x1b')](handleError(_0x802f20,null));};exports['agents']=function(_0x29e762,_0x1dd1a6){var _0x2548ad;return respondWithRpcPromise(_0x4f49('0x31'),_0x29e762[_0x4f49('0x16')])[_0x4f49('0xa')](function(_0x29e910){_0x2548ad=_0x29e910;return respondWithRpcPromise('Agents',_0x29e762['query'],routingClient);})['then'](function(_0x15e4b3){return _[_0x4f49('0x19')]({},_0x15e4b3,_0x2548ad);})[_0x4f49('0xa')](respondWithResult(_0x1dd1a6,null))[_0x4f49('0x1b')](handleError(_0x1dd1a6,null));};exports[_0x4f49('0x32')]=function(_0x1ecf6c,_0x38aff8){if(_0x1ecf6c[_0x4f49('0x22')]&&_0x1ecf6c[_0x4f49('0x22')]['interaction']&&_0x1ecf6c['user']&&_0x1ecf6c[_0x4f49('0x33')][_0x4f49('0x11')]){for(var _0x159642 in _0x1ecf6c['body'][_0x4f49('0x34')]){if(_0x1ecf6c['body']['interaction'][_0x4f49('0x35')](_0x159642)){db[_0x4f49('0x36')][_0x4f49('0x37')]({'where':{'channel':_0x159642,'membername':_0x1ecf6c['user'][_0x4f49('0x11')],'type':_0x4f49('0x38'),'exitAt':null,'uniqueid':_0x1ecf6c['body'][_0x4f49('0x34')][_0x159642]&&_0x1ecf6c['body'][_0x4f49('0x34')][_0x159642][_0x4f49('0x39')]?{'$notIn':_0x1ecf6c[_0x4f49('0x22')]['interaction'][_0x159642]}:{'$ne':null}}})[_0x4f49('0xa')](function(_0x1e5f0b){var _0x33bb04=moment()[_0x4f49('0x3a')](_0x4f49('0x3b'));for(var _0x1c41e4=0x0,_0xe66867=_0x1e5f0b[_0x4f49('0x39')];_0x1c41e4<_0xe66867;_0x1c41e4+=0x1){_0x1e5f0b[_0x1c41e4][_0x4f49('0x3c')]({'exitAt':_0x33bb04});}});for(var _0x157a55=0x0;_0x157a55<_0x1ecf6c['body'][_0x4f49('0x34')][_0x159642][_0x4f49('0x39')];_0x157a55+=0x1){db['MemberReport'][_0x4f49('0x3d')]({'where':{'channel':_0x159642,'membername':_0x1ecf6c['user'][_0x4f49('0x11')],'type':_0x4f49('0x38'),'uniqueid':_0x1ecf6c[_0x4f49('0x22')][_0x4f49('0x34')][_0x159642][_0x157a55],'exitAt':null},'defaults':{'channel':_0x159642,'membername':_0x1ecf6c['user'][_0x4f49('0x11')],'interface':_[_0x4f49('0x12')](_0x1ecf6c[_0x4f49('0x33')][_0x4f49('0x3e')])?util[_0x4f49('0x3a')](_0x4f49('0x3f'),_0x1ecf6c[_0x4f49('0x33')][_0x4f49('0x11')]):_0x1ecf6c[_0x4f49('0x33')][_0x4f49('0x3e')],'type':_0x4f49('0x38'),'enterAt':moment()[_0x4f49('0x3a')](_0x4f49('0x3b')),'role':_0x4f49('0x40'),'internal':_0x1ecf6c[_0x4f49('0x33')][_0x4f49('0x41')],'uniqueid':_0x1ecf6c['body']['interaction'][_0x159642][_0x157a55]}});}}}}return respondWithRpcPromise(_0x4f49('0x42'),{'id':_0x1ecf6c[_0x4f49('0x1a')]['id'],'capacity':_0x1ecf6c[_0x4f49('0x22')][_0x4f49('0x43')]},routingClient)[_0x4f49('0xa')](respondWithResult(_0x38aff8,null))[_0x4f49('0x1b')](handleError(_0x38aff8,null));};exports[_0x4f49('0x44')]=function(_0x51c756,_0x6637f4){return respondWithRpcPromise('Telephones',_0x51c756[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0x6637f4,null))[_0x4f49('0x1b')](handleError(_0x6637f4,null));};exports[_0x4f49('0x45')]=function(_0x586095,_0x342980){return respondWithRpcPromise('Trunks',_0x586095['query'])[_0x4f49('0xa')](respondWithResult(_0x342980,null))[_0x4f49('0x1b')](handleError(_0x342980,null));};exports[_0x4f49('0x46')]=function(_0x26ae33,_0x56375a){return respondWithRpcPromise('Campaigns',_0x26ae33[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0x56375a,null))['catch'](handleError(_0x56375a,null));};exports[_0x4f49('0x47')]=function(_0x5b50bc,_0x5a929a){return respondWithRpcPromise(_0x4f49('0x48'),_0x5b50bc['query'],routingClient)[_0x4f49('0xa')](respondWithResult(_0x5a929a,null))['catch'](handleError(_0x5a929a,null));};exports[_0x4f49('0x49')]=function(_0x38a640,_0x2472c9){return respondWithRpcPromise(_0x4f49('0x48'),_0x38a640[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](findById(_0x38a640[_0x4f49('0x1a')]['id']))[_0x4f49('0xa')](respondWithResult(_0x2472c9,null))['catch'](handleError(_0x2472c9,null));};exports[_0x4f49('0x4a')]=function(_0x51f57e,_0x213608){return respondWithRpcPromise(_0x4f49('0x4b'),_0x51f57e[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x213608,null))[_0x4f49('0x1b')](handleError(_0x213608,null));};exports[_0x4f49('0x4c')]=function(_0x553981,_0x426c50){return respondWithRpcPromise(_0x4f49('0x4b'),_0x553981['query'],routingClient)['then'](findById(_0x553981[_0x4f49('0x1a')]['id']))[_0x4f49('0xa')](respondWithResult(_0x426c50,null))[_0x4f49('0x1b')](handleError(_0x426c50,null));};exports[_0x4f49('0x4d')]=function(_0x19a788,_0x4af08d){return respondWithRpcPromise(_0x4f49('0x4e'),_0x19a788['query'],mailClient)[_0x4f49('0xa')](respondWithResult(_0x4af08d,null))[_0x4f49('0x1b')](handleError(_0x4af08d,null));};exports[_0x4f49('0x4f')]=function(_0x4aae7c,_0x1dade6){return respondWithRpcPromise(_0x4f49('0x50'),_0x4aae7c[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x1dade6,null))['catch'](handleError(_0x1dade6,null));};exports[_0x4f49('0x51')]=function(_0x269564,_0x5e6898){return respondWithRpcPromise(_0x4f49('0x50'),_0x269564[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](findById(_0x269564[_0x4f49('0x1a')]['id']))[_0x4f49('0xa')](respondWithResult(_0x5e6898,null))[_0x4f49('0x1b')](handleError(_0x5e6898,null));};exports[_0x4f49('0x52')]=function(_0x30fc21,_0x519721){return respondWithRpcPromise(_0x4f49('0x53'),_0x30fc21[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x519721,null))[_0x4f49('0x1b')](handleError(_0x519721,null));};exports[_0x4f49('0x54')]=function(_0x26b022,_0x335875){return respondWithRpcPromise('SmsQueues',_0x26b022[_0x4f49('0x16')],routingClient)['then'](findById(_0x26b022[_0x4f49('0x1a')]['id']))[_0x4f49('0xa')](respondWithResult(_0x335875,null))[_0x4f49('0x1b')](handleError(_0x335875,null));};exports[_0x4f49('0x55')]=function(_0xc7743e,_0x3f2f3f){return respondWithRpcPromise(_0x4f49('0x56'),_0xc7743e[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x3f2f3f,null))[_0x4f49('0x1b')](handleError(_0x3f2f3f,null));};exports['showWhatsappQueues']=function(_0x2f9f2e,_0x141554){return respondWithRpcPromise(_0x4f49('0x56'),_0x2f9f2e[_0x4f49('0x16')],routingClient)['then'](findById(_0x2f9f2e['params']['id']))[_0x4f49('0xa')](respondWithResult(_0x141554,null))['catch'](handleError(_0x141554,null));};exports[_0x4f49('0x57')]=function(_0x287705,_0x43bdde){return respondWithRpcPromise(_0x4f49('0x58'),_0x287705[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x43bdde,null))[_0x4f49('0x1b')](handleError(_0x43bdde,null));};exports[_0x4f49('0x59')]=function(_0x3823f0,_0x3e9b47){return respondWithRpcPromise(_0x4f49('0x58'),_0x3823f0[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](findById(_0x3823f0[_0x4f49('0x1a')]['id']))[_0x4f49('0xa')](respondWithResult(_0x3e9b47,null))[_0x4f49('0x1b')](handleError(_0x3e9b47,null));};exports[_0x4f49('0x5a')]=function(_0x753863,_0x1f9161){return respondWithRpcPromise(_0x4f49('0x5b'),_0x753863[_0x4f49('0x16')])[_0x4f49('0xa')](respondWithResult(_0x1f9161,null))[_0x4f49('0x1b')](handleError(_0x1f9161,null));};exports[_0x4f49('0x5c')]=function(_0x2d0990,_0x49a79d){return respondWithRpcPromise(_0x4f49('0x5d'),_0x2d0990['query'],routingClient)[_0x4f49('0xa')](respondWithResult(_0x49a79d,null))[_0x4f49('0x1b')](handleError(_0x49a79d,null));};exports[_0x4f49('0x5e')]=function(_0x3c0f69,_0x26de18){return respondWithRpcPromise(_0x4f49('0x5f'),_0x3c0f69[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x26de18,null))[_0x4f49('0x1b')](handleError(_0x26de18,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x4b6ef4,_0x539e21){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x4b6ef4[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x539e21,null))[_0x4f49('0x1b')](handleError(_0x539e21,null));};exports[_0x4f49('0x60')]=function(_0x1fc88a,_0x5a8b1c){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x1fc88a[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](function(_0x4bdd1b){if(_0x1fc88a[_0x4f49('0x16')][_0x4f49('0x61')]!==undefined){var _0x5c824f=_(_0x4bdd1b[_0x4f49('0x13')])['filter']([_0x1fc88a[_0x4f49('0x16')][_0x4f49('0x61')],_0x1fc88a['params']['id']])[_0x4f49('0x62')](_0x4f49('0x63'))[_0x4f49('0x64')]()[_0x4f49('0x65')]();return _0x4bdd1b[_0x4f49('0x13')][_0x4f49('0x66')](function(_0x5f0dbf){return _0x5c824f[_0x4f49('0x67')](_0x5f0dbf['queue_id'])>-0x1;});}else{return _0x4bdd1b[_0x4f49('0x13')]['filter'](function(_0x50c06e){return _0x50c06e['queue_id']===parseInt(_0x1fc88a[_0x4f49('0x1a')]['id']);});}})[_0x4f49('0xa')](respondWithResult(_0x5a8b1c,null))[_0x4f49('0x1b')](handleError(_0x5a8b1c,null));};exports[_0x4f49('0x68')]=function(_0x47af99,_0x39024d){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x47af99[_0x4f49('0x16')],routingClient)['then'](respondWithResult(_0x39024d,null))[_0x4f49('0x1b')](handleError(_0x39024d,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x4938a6,_0x329a49){return respondWithRpcPromise(_0x4f49('0x69'),_0x4938a6[_0x4f49('0x16')],routingClient)['then'](respondWithResult(_0x329a49,null))[_0x4f49('0x1b')](handleError(_0x329a49,null));};exports[_0x4f49('0x6a')]=function(_0x5c33c9,_0x5d52ae){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x5c33c9[_0x4f49('0x16')],routingClient)[_0x4f49('0xa')](respondWithResult(_0x5d52ae,null))[_0x4f49('0x1b')](handleError(_0x5d52ae,null));};exports[_0x4f49('0x6b')]=function(_0x1643fc){return function(_0x517144,_0x15b7e4){var _0x1b922e,_0x29de92;var _0x58d07e=_[_0x4f49('0x6c')](_0x1643fc);var _0x34843a=_0x1643fc===_0x4f49('0x6d')?_0x4f49('0x6e'):'Account';return db[_0x58d07e+_0x4f49('0x6f')][_0x4f49('0x70')]({'raw':!![],'where':{'id':_0x517144[_0x4f49('0x1a')]['id']}})[_0x4f49('0xa')](function(_0x389679){if(_['isNil'](_0x389679)){throw new Error(_0x58d07e+_0x4f49('0x71'));}_0x1b922e=_0x389679;return db[_0x58d07e+_0x4f49('0x72')]['findOne']({'where':{'id':_0x517144[_0x4f49('0x22')]['messageId']},'include':[{'model':db[_0x58d07e+_0x4f49('0x73')],'as':'Interaction'},{'model':db[_0x58d07e+_0x34843a],'as':_0x4f49('0x74')}]});})[_0x4f49('0xa')](function(_0x2ef19e){if(_[_0x4f49('0x12')](_0x2ef19e)){throw new Error(_0x58d07e+_0x4f49('0x75'));}_0x29de92=_0x2ef19e;return _0x2ef19e['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x4f49('0xa')](function(){var _0x1f3556={'uniqueid':_0x1643fc+'.'+_0x29de92['id']+'.'+_0x29de92[_0x4f49('0x73')]['id'],'FromUserId':_0x517144[_0x4f49('0x33')]['id'],'type':'queue'};_0x1f3556[_0x58d07e+_0x4f49('0x76')]=_0x29de92['id'];_0x1f3556[_0x58d07e+'InteractionId']=_0x29de92[_0x4f49('0x73')]['id'];_0x1f3556['From'+_0x58d07e+_0x34843a+'Id']=_0x29de92[_0x4f49('0x74')]['id'];_0x1f3556['To'+_0x58d07e+_0x4f49('0x77')]=_0x1b922e['id'];return db[_0x58d07e+_0x4f49('0x78')][_0x4f49('0x79')](_0x1f3556);})[_0x4f49('0xa')](function(){return respondWithRpcPromise(_0x4f49('0x7a'),{'channel':_0x1643fc,'interaction':_0x29de92[_0x4f49('0x73')],'message':_0x29de92,'account':_0x29de92[_0x4f49('0x74')],'applications':[{'id':0x0,'priority':0x1,'app':_0x4f49('0x7b'),'appdata':_0x1b922e[_0x4f49('0x11')]+','+(_0x29de92['Account'][_0x4f49('0x7c')]||0x12c),'interval':_0x4f49('0x7d')}]},routingClient);})[_0x4f49('0xa')](respondWithResult(_0x15b7e4,null))[_0x4f49('0x1b')](handleError(_0x15b7e4,null));};};exports[_0x4f49('0x7e')]=function(_0x24b033,_0x55b28b){var _0x2ec42b,_0x20a0d4;if(_[_0x4f49('0x12')](_0x24b033[_0x4f49('0x22')]['channel'])){throw new Error(_0x4f49('0x7f'));}var _0x57567a=_0x24b033[_0x4f49('0x22')][_0x4f49('0x80')];var _0x5c5d2=_[_0x4f49('0x6c')](_0x57567a);var _0x4cfb48=_0x57567a===_0x4f49('0x6d')?_0x4f49('0x6e'):_0x4f49('0x74');return db[_0x4f49('0x81')][_0x4f49('0x70')]({'raw':!![],'where':{'id':_0x24b033[_0x4f49('0x1a')]['id'],'role':_0x4f49('0x40')}})[_0x4f49('0xa')](function(_0x355787){if(_[_0x4f49('0x12')](_0x355787)){throw new Error(_0x4f49('0x82'));}_0x2ec42b=_0x355787;return db[_0x5c5d2+_0x4f49('0x72')][_0x4f49('0x70')]({'where':{'id':_0x24b033[_0x4f49('0x22')][_0x4f49('0x83')]},'include':[{'model':db[_0x5c5d2+_0x4f49('0x73')],'as':_0x4f49('0x73')},{'model':db[_0x5c5d2+_0x4cfb48],'as':_0x4f49('0x74')}]});})['then'](function(_0x1979ef){if(_[_0x4f49('0x12')](_0x1979ef)){throw new Error(_0x5c5d2+_0x4f49('0x75'));}_0x20a0d4=_0x1979ef;return _0x1979ef[_0x4f49('0x84')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x225e63={'uniqueid':_0x57567a+'.'+_0x20a0d4['id']+'.'+_0x20a0d4[_0x4f49('0x73')]['id'],'FromUserId':_0x24b033['user']['id'],'type':_0x4f49('0x7b'),'ToUserId':_0x2ec42b['id']};_0x225e63[_0x5c5d2+'MessageId']=_0x20a0d4['id'];_0x225e63[_0x5c5d2+_0x4f49('0x85')]=_0x20a0d4[_0x4f49('0x73')]['id'];_0x225e63[_0x4f49('0x86')+_0x5c5d2+_0x4cfb48+'Id']=_0x20a0d4[_0x4f49('0x74')]['id'];return db[_0x5c5d2+_0x4f49('0x78')][_0x4f49('0x79')](_0x225e63);})[_0x4f49('0xa')](function(){return respondWithRpcPromise(_0x4f49('0x7a'),{'channel':_0x57567a,'interaction':_0x20a0d4[_0x4f49('0x73')],'message':_0x20a0d4,'account':_0x20a0d4[_0x4f49('0x74')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x2ec42b['name']+','+(_0x20a0d4[_0x4f49('0x74')]['agentTransferTimeout']||0x12c),'interval':_0x4f49('0x7d')}]},routingClient);})[_0x4f49('0xa')](respondWithResult(_0x55b28b,null))['catch'](handleError(_0x55b28b,null));};
\ No newline at end of file
index ea8cb16..81b1fa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7d3=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post','create','put','update','delete','exports','multer'];(function(_0x2cfda2,_0x100e84){var _0x197b93=function(_0x116aac){while(--_0x116aac){_0x2cfda2['push'](_0x2cfda2['shift']());}};_0x197b93(++_0x100e84);}(_0xa7d3,0x10d));var _0x3a7d=function(_0x15195d,_0x1cd73d){_0x15195d=_0x15195d-0x0;var _0x5b4861=_0xa7d3[_0x15195d];return _0x5b4861;};'use strict';var multer=require(_0x3a7d('0x0'));var util=require(_0x3a7d('0x1'));var path=require(_0x3a7d('0x2'));var timeout=require(_0x3a7d('0x3'));var express=require(_0x3a7d('0x4'));var router=express[_0x3a7d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3a7d('0x6'));var interaction=require(_0x3a7d('0x7'));var config=require(_0x3a7d('0x8'));var controller=require('./schedule.controller');router[_0x3a7d('0x9')]('/',auth[_0x3a7d('0xa')](),controller['index']);router[_0x3a7d('0x9')](_0x3a7d('0xb'),auth[_0x3a7d('0xa')](),controller['show']);router['get']('/:id/run',auth[_0x3a7d('0xa')](),controller['run']);router[_0x3a7d('0xc')]('/',auth[_0x3a7d('0xa')](),controller[_0x3a7d('0xd')]);router[_0x3a7d('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x3a7d('0xf')]);router[_0x3a7d('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x3a7d('0x11')]=router;
\ No newline at end of file
+var _0x83e3=['update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','index','/:id','isAuthenticated','show','/:id/run','run','post','create','put'];(function(_0x4c7994,_0x213607){var _0x34d3e3=function(_0x298170){while(--_0x298170){_0x4c7994['push'](_0x4c7994['shift']());}};_0x34d3e3(++_0x213607);}(_0x83e3,0x118));var _0x383e=function(_0xfddf92,_0x4355cb){_0xfddf92=_0xfddf92-0x0;var _0x2030e9=_0x83e3[_0xfddf92];return _0x2030e9;};'use strict';var multer=require(_0x383e('0x0'));var util=require('util');var path=require(_0x383e('0x1'));var timeout=require(_0x383e('0x2'));var express=require(_0x383e('0x3'));var router=express['Router']();var fs_extra=require(_0x383e('0x4'));var auth=require(_0x383e('0x5'));var interaction=require(_0x383e('0x6'));var config=require(_0x383e('0x7'));var controller=require(_0x383e('0x8'));router[_0x383e('0x9')]('/',auth['isAuthenticated'](),controller[_0x383e('0xa')]);router[_0x383e('0x9')](_0x383e('0xb'),auth[_0x383e('0xc')](),controller[_0x383e('0xd')]);router['get'](_0x383e('0xe'),auth[_0x383e('0xc')](),controller[_0x383e('0xf')]);router[_0x383e('0x10')]('/',auth[_0x383e('0xc')](),controller[_0x383e('0x11')]);router[_0x383e('0x12')](_0x383e('0xb'),auth[_0x383e('0xc')](),controller[_0x383e('0x13')]);router[_0x383e('0x14')](_0x383e('0xb'),auth[_0x383e('0xc')](),controller[_0x383e('0x15')]);module[_0x383e('0x16')]=router;
\ No newline at end of file
index e167c21..35acbfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff5c=['minutes','csv','pdf','xlsx','custom','default','TEXT','sequelize','exports','STRING','BOOLEAN','DATE','INTEGER','ENUM','quarters','weeks','days'];(function(_0x201a8c,_0x3aa556){var _0x5331af=function(_0x3ba346){while(--_0x3ba346){_0x201a8c['push'](_0x201a8c['shift']());}};_0x5331af(++_0x3aa556);}(_0xff5c,0xe4));var _0xcff5=function(_0x369584,_0x10e922){_0x369584=_0x369584-0x0;var _0x2fee84=_0xff5c[_0x369584];return _0x2fee84;};'use strict';var Sequelize=require(_0xcff5('0x0'));module[_0xcff5('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xcff5('0x2')]},'active':{'type':Sequelize[_0xcff5('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xcff5('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0xcff5('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xcff5('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xcff5('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xcff5('0x6')]('years',_0xcff5('0x7'),'months',_0xcff5('0x8'),_0xcff5('0x9'),'hours',_0xcff5('0xa')),'allowNull':![],'defaultValue':_0xcff5('0x9')},'output':{'type':Sequelize[_0xcff5('0x6')](_0xcff5('0xb'),_0xcff5('0xc'),_0xcff5('0xd')),'allowNull':![],'defaultValue':_0xcff5('0xb')},'type':{'type':Sequelize[_0xcff5('0x6')](_0xcff5('0xe'),_0xcff5('0xf')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xcff5('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xcff5('0x10')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4fde=['months','weeks','days','minutes','csv','pdf','custom','default','BOOLEAN','TEXT','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4fde,0x1da));var _0xe4fd=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x4fde[_0x288f5e];return _0x476cc9;};'use strict';var Sequelize=require('sequelize');module[_0xe4fd('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xe4fd('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xe4fd('0x1')],'allowNull':![],'defaultValue':_0xe4fd('0x2')},'startAt':{'type':Sequelize[_0xe4fd('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0xe4fd('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xe4fd('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xe4fd('0x5')]('years','quarters',_0xe4fd('0x6'),_0xe4fd('0x7'),_0xe4fd('0x8'),'hours',_0xe4fd('0x9')),'allowNull':![],'defaultValue':_0xe4fd('0x8')},'output':{'type':Sequelize['ENUM'](_0xe4fd('0xa'),_0xe4fd('0xb'),'xlsx'),'allowNull':![],'defaultValue':_0xe4fd('0xa')},'type':{'type':Sequelize['ENUM'](_0xe4fd('0xc'),_0xe4fd('0xd')),'allowNull':![],'defaultValue':_0xe4fd('0xc')},'sendMail':{'type':Sequelize[_0xe4fd('0xe')],'defaultValue':![]},'email':{'type':Sequelize[_0xe4fd('0x1')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0xe4fd('0xf')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 3757a0e..ffa5d66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf673=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','error','stack','name','index','map','Schedule','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','filters','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','merge','create','body'];(function(_0x1c839c,_0x3f80e4){var _0x2a912c=function(_0x256c47){while(--_0x256c47){_0x1c839c['push'](_0x1c839c['shift']());}};_0x2a912c(++_0x3f80e4);}(_0xf673,0x1c3));var _0x3f67=function(_0x56e32e,_0x9eb2f6){_0x56e32e=_0x56e32e-0x0;var _0x2a757b=_0xf673[_0x56e32e];return _0x2a757b;};'use strict';var emlformat=require(_0x3f67('0x0'));var rimraf=require(_0x3f67('0x1'));var zipdir=require(_0x3f67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3f67('0x3'));var moment=require(_0x3f67('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3f67('0x5'));var util=require(_0x3f67('0x6'));var path=require('path');var sox=require(_0x3f67('0x7'));var csv=require(_0x3f67('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3f67('0x9'));var _=require('lodash');var squel=require(_0x3f67('0xa'));var crypto=require('crypto');var jsforce=require(_0x3f67('0xb'));var deskjs=require(_0x3f67('0xc'));var toCsv=require(_0x3f67('0x8'));var querystring=require(_0x3f67('0xd'));var Papa=require(_0x3f67('0xe'));var Redis=require(_0x3f67('0xf'));var authService=require(_0x3f67('0x10'));var qs=require(_0x3f67('0x11'));var as=require(_0x3f67('0x12'));var hardwareService=require(_0x3f67('0x13'));var logger=require(_0x3f67('0x14'))(_0x3f67('0x15'));var utils=require(_0x3f67('0x16'));var config=require(_0x3f67('0x17'));var licenseUtil=require(_0x3f67('0x18'));var db=require(_0x3f67('0x19'))['db'];function respondWithStatusCode(_0x4c899c,_0x41533d){_0x41533d=_0x41533d||0xcc;return function(_0x111aa8){if(_0x111aa8){return _0x4c899c[_0x3f67('0x1a')](_0x41533d);}return _0x4c899c[_0x3f67('0x1b')](_0x41533d)[_0x3f67('0x1c')]();};}function respondWithResult(_0x53ecf8,_0x390a0e){_0x390a0e=_0x390a0e||0xc8;return function(_0x76c86f){if(_0x76c86f){return _0x53ecf8[_0x3f67('0x1b')](_0x390a0e)[_0x3f67('0x1d')](_0x76c86f);}};}function respondWithFilteredResult(_0x24852b,_0x4cf120){return function(_0xf1d646){if(_0xf1d646){var _0x1f7f81=typeof _0x4cf120[_0x3f67('0x1e')]==='undefined'&&typeof _0x4cf120[_0x3f67('0x1f')]==='undefined';var _0x36fff6=_0xf1d646[_0x3f67('0x20')];var _0x417997=_0x1f7f81?0x0:_0x4cf120[_0x3f67('0x1e')];var _0x1df4bf=_0x1f7f81?_0xf1d646[_0x3f67('0x20')]:_0x4cf120[_0x3f67('0x1e')]+_0x4cf120[_0x3f67('0x1f')];var _0x4b6dac;if(_0x1df4bf>=_0x36fff6){_0x1df4bf=_0x36fff6;_0x4b6dac=0xc8;}else{_0x4b6dac=0xce;}_0x24852b[_0x3f67('0x1b')](_0x4b6dac);return _0x24852b['set'](_0x3f67('0x21'),_0x417997+'-'+_0x1df4bf+'/'+_0x36fff6)[_0x3f67('0x1d')](_0xf1d646);}return null;};}function patchUpdates(_0x9339e1){return function(_0x288ccf){try{jsonpatch[_0x3f67('0x22')](_0x288ccf,_0x9339e1,!![]);}catch(_0x183b51){return BPromise['reject'](_0x183b51);}return _0x288ccf[_0x3f67('0x23')]();};}function saveUpdates(_0x423fcc,_0x1ca5d7){return function(_0x2b749a){if(_0x2b749a){return _0x2b749a[_0x3f67('0x24')](_0x423fcc)[_0x3f67('0x25')](function(_0x27659f){return _0x27659f;});}return null;};}function removeEntity(_0x47b216,_0x4fa919){return function(_0x63f1f7){if(_0x63f1f7){return _0x63f1f7[_0x3f67('0x26')]()['then'](function(){var _0x34b8dc=_0x63f1f7[_0x3f67('0x27')]({'plain':!![]});var _0x3d8b43='Scheduler';return db[_0x3f67('0x28')]['destroy']({'where':{'type':_0x3d8b43,'resourceId':_0x34b8dc['id']}})['then'](function(){return _0x63f1f7;});})[_0x3f67('0x25')](function(){_0x47b216['status'](0xcc)[_0x3f67('0x1c')]();});}};}function handleEntityNotFound(_0x15285a,_0x266446){return function(_0x26f34f){if(!_0x26f34f){_0x15285a['sendStatus'](0x194);}return _0x26f34f;};}function handleError(_0x36a1f4,_0x18c2d2){_0x18c2d2=_0x18c2d2||0x1f4;return function(_0x369085){logger[_0x3f67('0x29')](_0x369085[_0x3f67('0x2a')]);if(_0x369085[_0x3f67('0x2b')]){delete _0x369085[_0x3f67('0x2b')];}_0x36a1f4[_0x3f67('0x1b')](_0x18c2d2)['send'](_0x369085);};}exports[_0x3f67('0x2c')]=function(_0x4d178b,_0x4d49b1){var _0x5a9556={},_0x4d295e={},_0x1b1b80={'count':0x0,'rows':[]};var _0xe0ebe5=_[_0x3f67('0x2d')](db[_0x3f67('0x2e')][_0x3f67('0x2f')],function(_0x3b7967){return{'name':_0x3b7967[_0x3f67('0x30')],'type':_0x3b7967[_0x3f67('0x31')][_0x3f67('0x32')]};});_0x4d295e[_0x3f67('0x33')]=_['map'](_0xe0ebe5,_0x3f67('0x2b'));_0x4d295e['query']=_[_0x3f67('0x34')](_0x4d178b[_0x3f67('0x35')]);_0x4d295e['filters']=_['intersection'](_0x4d295e[_0x3f67('0x33')],_0x4d295e['query']);_0x5a9556[_0x3f67('0x36')]=_[_0x3f67('0x37')](_0x4d295e[_0x3f67('0x33')],qs[_0x3f67('0x38')](_0x4d178b[_0x3f67('0x35')][_0x3f67('0x38')]));_0x5a9556[_0x3f67('0x36')]=_0x5a9556['attributes'][_0x3f67('0x39')]?_0x5a9556[_0x3f67('0x36')]:_0x4d295e['model'];if(!_0x4d178b[_0x3f67('0x35')][_0x3f67('0x3a')](_0x3f67('0x3b'))){_0x5a9556[_0x3f67('0x1f')]=qs[_0x3f67('0x1f')](_0x4d178b[_0x3f67('0x35')][_0x3f67('0x1f')]);_0x5a9556[_0x3f67('0x1e')]=qs[_0x3f67('0x1e')](_0x4d178b[_0x3f67('0x35')][_0x3f67('0x1e')]);}_0x5a9556[_0x3f67('0x3c')]=qs['sort'](_0x4d178b[_0x3f67('0x35')]['sort']);_0x5a9556['where']=qs[_0x3f67('0x3d')](_[_0x3f67('0x3e')](_0x4d178b['query'],_0x4d295e['filters']),_0xe0ebe5);if(_0x4d178b[_0x3f67('0x35')][_0x3f67('0x3f')]){_0x5a9556[_0x3f67('0x40')]=_['merge'](_0x5a9556[_0x3f67('0x40')],{'$or':_[_0x3f67('0x2d')](_0xe0ebe5,function(_0x4d35b3){if(_0x4d35b3[_0x3f67('0x31')]!==_0x3f67('0x41')){var _0x2a92be={};_0x2a92be[_0x4d35b3[_0x3f67('0x2b')]]={'$like':'%'+_0x4d178b[_0x3f67('0x35')][_0x3f67('0x3f')]+'%'};return _0x2a92be;}})});}_0x5a9556=_['merge']({},_0x5a9556,_0x4d178b[_0x3f67('0x42')]);var _0x41b44d={'where':_0x5a9556[_0x3f67('0x40')]};return db[_0x3f67('0x2e')][_0x3f67('0x20')](_0x41b44d)[_0x3f67('0x25')](function(_0x3a10dc){_0x1b1b80[_0x3f67('0x20')]=_0x3a10dc;if(_0x4d178b[_0x3f67('0x35')][_0x3f67('0x43')]){_0x5a9556[_0x3f67('0x44')]=[{'all':!![]}];}return db['Schedule'][_0x3f67('0x45')](_0x5a9556);})[_0x3f67('0x25')](function(_0x10440f){_0x1b1b80[_0x3f67('0x46')]=_0x10440f;return _0x1b1b80;})[_0x3f67('0x25')](respondWithFilteredResult(_0x4d49b1,_0x5a9556))[_0x3f67('0x47')](handleError(_0x4d49b1,null));};exports[_0x3f67('0x48')]=function(_0x5ae13d,_0x4181ec){var _0x39bce8={'raw':![],'where':{'id':_0x5ae13d[_0x3f67('0x49')]['id']}},_0xd35076={};_0xd35076[_0x3f67('0x33')]=_['keys'](db[_0x3f67('0x2e')][_0x3f67('0x2f')]);_0xd35076[_0x3f67('0x35')]=_['keys'](_0x5ae13d['query']);_0xd35076[_0x3f67('0x3d')]=_['intersection'](_0xd35076[_0x3f67('0x33')],_0xd35076[_0x3f67('0x35')]);_0x39bce8[_0x3f67('0x36')]=_['intersection'](_0xd35076[_0x3f67('0x33')],qs['fields'](_0x5ae13d[_0x3f67('0x35')]['fields']));_0x39bce8[_0x3f67('0x36')]=_0x39bce8[_0x3f67('0x36')]['length']?_0x39bce8[_0x3f67('0x36')]:_0xd35076[_0x3f67('0x33')];if(_0x5ae13d[_0x3f67('0x35')][_0x3f67('0x43')]){_0x39bce8[_0x3f67('0x44')]=[{'all':!![]}];}_0x39bce8=_[_0x3f67('0x4a')]({},_0x39bce8,_0x5ae13d[_0x3f67('0x42')]);return db['Schedule']['find'](_0x39bce8)[_0x3f67('0x25')](handleEntityNotFound(_0x4181ec,null))[_0x3f67('0x25')](respondWithResult(_0x4181ec,null))[_0x3f67('0x47')](handleError(_0x4181ec,null));};exports[_0x3f67('0x4b')]=function(_0x29784b,_0x343a85){return db[_0x3f67('0x2e')][_0x3f67('0x4b')](_0x29784b[_0x3f67('0x4c')],{})[_0x3f67('0x25')](function(_0x2843ba){var _0x1f4c71=_0x29784b[_0x3f67('0x4d')]['get']({'plain':!![]});if(!_0x1f4c71)throw new Error(_0x3f67('0x4e'));if(_0x1f4c71[_0x3f67('0x4f')]===_0x3f67('0x4d')){var _0x25b9e3=_0x2843ba[_0x3f67('0x27')]({'plain':!![]});var _0x2f0804=_0x3f67('0x50');return db[_0x3f67('0x51')][_0x3f67('0x52')]({'where':{'name':_0x2f0804,'userProfileId':_0x1f4c71[_0x3f67('0x53')]},'raw':!![]})[_0x3f67('0x25')](function(_0x2c242e){if(_0x2c242e&&_0x2c242e[_0x3f67('0x54')]===0x0){return db[_0x3f67('0x28')][_0x3f67('0x4b')]({'name':_0x25b9e3[_0x3f67('0x2b')],'resourceId':_0x25b9e3['id'],'type':_0x2c242e[_0x3f67('0x2b')],'sectionId':_0x2c242e['id']},{})[_0x3f67('0x25')](function(){return _0x2843ba;});}else{return _0x2843ba;}})[_0x3f67('0x47')](function(_0x526fde){logger[_0x3f67('0x29')](_0x3f67('0x55'),_0x526fde);throw _0x526fde;});}return _0x2843ba;})[_0x3f67('0x25')](respondWithResult(_0x343a85,0xc9))[_0x3f67('0x47')](handleError(_0x343a85,null));};exports[_0x3f67('0x24')]=function(_0x6738ab,_0xe546f4){if(_0x6738ab[_0x3f67('0x4c')]['id']){delete _0x6738ab[_0x3f67('0x4c')]['id'];}return db[_0x3f67('0x2e')][_0x3f67('0x52')]({'where':{'id':_0x6738ab[_0x3f67('0x49')]['id']}})[_0x3f67('0x25')](handleEntityNotFound(_0xe546f4,null))[_0x3f67('0x25')](saveUpdates(_0x6738ab[_0x3f67('0x4c')],null))[_0x3f67('0x25')](respondWithResult(_0xe546f4,null))['catch'](handleError(_0xe546f4,null));};exports[_0x3f67('0x26')]=function(_0xd05015,_0x3fa209){return db[_0x3f67('0x2e')][_0x3f67('0x52')]({'where':{'id':_0xd05015['params']['id']}})[_0x3f67('0x25')](handleEntityNotFound(_0x3fa209,null))[_0x3f67('0x25')](removeEntity(_0x3fa209,null))[_0x3f67('0x47')](handleError(_0x3fa209,null));};exports[_0x3f67('0x56')]=function(_0x2ad322,_0x5aa36d,_0x372f95){var _0x2e9d8a=require(_0x3f67('0x57'));return db['Schedule'][_0x3f67('0x52')]({'where':{'id':_0x2ad322[_0x3f67('0x49')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x5aa36d,null))[_0x3f67('0x25')](function(){_0x2e9d8a[_0x3f67('0x56')](_0x2ad322[_0x3f67('0x49')]['id']);})[_0x3f67('0x25')](respondWithStatusCode(_0x5aa36d,null))[_0x3f67('0x47')](handleError(_0x5aa36d,null));};
\ No newline at end of file
+var _0x451d=['set','Content-Range','json','apply','reject','then','destroy','Scheduler','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Schedule','includeAll','findAll','rows','catch','show','params','create','body','user','get','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','run','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x451d,0x130));var _0xd451=function(_0x22d703,_0x59bbb4){_0x22d703=_0x22d703-0x0;var _0x5b9b87=_0x451d[_0x22d703];return _0x5b9b87;};'use strict';var emlformat=require(_0xd451('0x0'));var rimraf=require(_0xd451('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd451('0x2'));var rp=require(_0xd451('0x3'));var moment=require(_0xd451('0x4'));var BPromise=require(_0xd451('0x5'));var Mustache=require(_0xd451('0x6'));var util=require(_0xd451('0x7'));var path=require(_0xd451('0x8'));var sox=require(_0xd451('0x9'));var csv=require(_0xd451('0xa'));var ejs=require(_0xd451('0xb'));var fs=require('fs');var fs_extra=require(_0xd451('0xc'));var _=require('lodash');var squel=require(_0xd451('0xd'));var crypto=require(_0xd451('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd451('0xf'));var Papa=require('papaparse');var Redis=require(_0xd451('0x10'));var authService=require(_0xd451('0x11'));var qs=require(_0xd451('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd451('0x13'));var logger=require(_0xd451('0x14'))(_0xd451('0x15'));var utils=require(_0xd451('0x16'));var config=require(_0xd451('0x17'));var licenseUtil=require(_0xd451('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x118ac4,_0x11fcf6){_0x11fcf6=_0x11fcf6||0xcc;return function(_0x1a0722){if(_0x1a0722){return _0x118ac4[_0xd451('0x19')](_0x11fcf6);}return _0x118ac4[_0xd451('0x1a')](_0x11fcf6)[_0xd451('0x1b')]();};}function respondWithResult(_0x34ffb0,_0x391bd5){_0x391bd5=_0x391bd5||0xc8;return function(_0x56498e){if(_0x56498e){return _0x34ffb0[_0xd451('0x1a')](_0x391bd5)['json'](_0x56498e);}};}function respondWithFilteredResult(_0x3e2e8d,_0x10fdb4){return function(_0x5e2344){if(_0x5e2344){var _0x4892be=typeof _0x10fdb4[_0xd451('0x1c')]===_0xd451('0x1d')&&typeof _0x10fdb4['limit']===_0xd451('0x1d');var _0x4de7a4=_0x5e2344['count'];var _0x3d693b=_0x4892be?0x0:_0x10fdb4[_0xd451('0x1c')];var _0x4ac114=_0x4892be?_0x5e2344[_0xd451('0x1e')]:_0x10fdb4[_0xd451('0x1c')]+_0x10fdb4[_0xd451('0x1f')];var _0x1378a6;if(_0x4ac114>=_0x4de7a4){_0x4ac114=_0x4de7a4;_0x1378a6=0xc8;}else{_0x1378a6=0xce;}_0x3e2e8d[_0xd451('0x1a')](_0x1378a6);return _0x3e2e8d[_0xd451('0x20')](_0xd451('0x21'),_0x3d693b+'-'+_0x4ac114+'/'+_0x4de7a4)[_0xd451('0x22')](_0x5e2344);}return null;};}function patchUpdates(_0x2c0c3c){return function(_0x191d1c){try{jsonpatch[_0xd451('0x23')](_0x191d1c,_0x2c0c3c,!![]);}catch(_0x10521b){return BPromise[_0xd451('0x24')](_0x10521b);}return _0x191d1c['save']();};}function saveUpdates(_0x21f5e8,_0x3c7150){return function(_0x252bb8){if(_0x252bb8){return _0x252bb8['update'](_0x21f5e8)[_0xd451('0x25')](function(_0x21d1df){return _0x21d1df;});}return null;};}function removeEntity(_0x1324a8,_0x1c85cf){return function(_0x1c5b69){if(_0x1c5b69){return _0x1c5b69[_0xd451('0x26')]()[_0xd451('0x25')](function(){var _0x25b503=_0x1c5b69['get']({'plain':!![]});var _0x22c424=_0xd451('0x27');return db[_0xd451('0x28')][_0xd451('0x26')]({'where':{'type':_0x22c424,'resourceId':_0x25b503['id']}})[_0xd451('0x25')](function(){return _0x1c5b69;});})[_0xd451('0x25')](function(){_0x1324a8['status'](0xcc)[_0xd451('0x1b')]();});}};}function handleEntityNotFound(_0x523a67,_0x1c05b9){return function(_0x41d4e3){if(!_0x41d4e3){_0x523a67['sendStatus'](0x194);}return _0x41d4e3;};}function handleError(_0x5bcbcf,_0x147f8a){_0x147f8a=_0x147f8a||0x1f4;return function(_0x3ee8e2){logger[_0xd451('0x29')](_0x3ee8e2[_0xd451('0x2a')]);if(_0x3ee8e2[_0xd451('0x2b')]){delete _0x3ee8e2['name'];}_0x5bcbcf[_0xd451('0x1a')](_0x147f8a)['send'](_0x3ee8e2);};}exports[_0xd451('0x2c')]=function(_0x3a5fe0,_0x186e8b){var _0x1c27d9={},_0x560beb={},_0x503ed3={'count':0x0,'rows':[]};var _0x5bb3d6=_[_0xd451('0x2d')](db['Schedule'][_0xd451('0x2e')],function(_0x1747b5){return{'name':_0x1747b5[_0xd451('0x2f')],'type':_0x1747b5['type'][_0xd451('0x30')]};});_0x560beb[_0xd451('0x31')]=_[_0xd451('0x2d')](_0x5bb3d6,_0xd451('0x2b'));_0x560beb[_0xd451('0x32')]=_[_0xd451('0x33')](_0x3a5fe0['query']);_0x560beb[_0xd451('0x34')]=_[_0xd451('0x35')](_0x560beb[_0xd451('0x31')],_0x560beb[_0xd451('0x32')]);_0x1c27d9[_0xd451('0x36')]=_[_0xd451('0x35')](_0x560beb[_0xd451('0x31')],qs[_0xd451('0x37')](_0x3a5fe0['query']['fields']));_0x1c27d9[_0xd451('0x36')]=_0x1c27d9[_0xd451('0x36')][_0xd451('0x38')]?_0x1c27d9[_0xd451('0x36')]:_0x560beb[_0xd451('0x31')];if(!_0x3a5fe0[_0xd451('0x32')][_0xd451('0x39')]('nolimit')){_0x1c27d9[_0xd451('0x1f')]=qs[_0xd451('0x1f')](_0x3a5fe0['query'][_0xd451('0x1f')]);_0x1c27d9[_0xd451('0x1c')]=qs[_0xd451('0x1c')](_0x3a5fe0['query'][_0xd451('0x1c')]);}_0x1c27d9[_0xd451('0x3a')]=qs[_0xd451('0x3b')](_0x3a5fe0['query'][_0xd451('0x3b')]);_0x1c27d9[_0xd451('0x3c')]=qs[_0xd451('0x34')](_[_0xd451('0x3d')](_0x3a5fe0[_0xd451('0x32')],_0x560beb['filters']),_0x5bb3d6);if(_0x3a5fe0[_0xd451('0x32')][_0xd451('0x3e')]){_0x1c27d9[_0xd451('0x3c')]=_[_0xd451('0x3f')](_0x1c27d9[_0xd451('0x3c')],{'$or':_[_0xd451('0x2d')](_0x5bb3d6,function(_0x34352f){if(_0x34352f[_0xd451('0x40')]!==_0xd451('0x41')){var _0x17ddb7={};_0x17ddb7[_0x34352f['name']]={'$like':'%'+_0x3a5fe0[_0xd451('0x32')][_0xd451('0x3e')]+'%'};return _0x17ddb7;}})});}_0x1c27d9=_['merge']({},_0x1c27d9,_0x3a5fe0[_0xd451('0x42')]);var _0x46ae66={'where':_0x1c27d9[_0xd451('0x3c')]};return db[_0xd451('0x43')][_0xd451('0x1e')](_0x46ae66)['then'](function(_0x3fe7f1){_0x503ed3[_0xd451('0x1e')]=_0x3fe7f1;if(_0x3a5fe0[_0xd451('0x32')][_0xd451('0x44')]){_0x1c27d9['include']=[{'all':!![]}];}return db['Schedule'][_0xd451('0x45')](_0x1c27d9);})[_0xd451('0x25')](function(_0x34b0d0){_0x503ed3[_0xd451('0x46')]=_0x34b0d0;return _0x503ed3;})[_0xd451('0x25')](respondWithFilteredResult(_0x186e8b,_0x1c27d9))[_0xd451('0x47')](handleError(_0x186e8b,null));};exports[_0xd451('0x48')]=function(_0x378d41,_0xfa1d60){var _0x359f39={'raw':![],'where':{'id':_0x378d41[_0xd451('0x49')]['id']}},_0x2e2d40={};_0x2e2d40[_0xd451('0x31')]=_[_0xd451('0x33')](db[_0xd451('0x43')][_0xd451('0x2e')]);_0x2e2d40['query']=_[_0xd451('0x33')](_0x378d41[_0xd451('0x32')]);_0x2e2d40[_0xd451('0x34')]=_[_0xd451('0x35')](_0x2e2d40[_0xd451('0x31')],_0x2e2d40[_0xd451('0x32')]);_0x359f39[_0xd451('0x36')]=_[_0xd451('0x35')](_0x2e2d40['model'],qs[_0xd451('0x37')](_0x378d41[_0xd451('0x32')][_0xd451('0x37')]));_0x359f39[_0xd451('0x36')]=_0x359f39[_0xd451('0x36')]['length']?_0x359f39[_0xd451('0x36')]:_0x2e2d40[_0xd451('0x31')];if(_0x378d41[_0xd451('0x32')][_0xd451('0x44')]){_0x359f39['include']=[{'all':!![]}];}_0x359f39=_[_0xd451('0x3f')]({},_0x359f39,_0x378d41[_0xd451('0x42')]);return db[_0xd451('0x43')]['find'](_0x359f39)['then'](handleEntityNotFound(_0xfa1d60,null))[_0xd451('0x25')](respondWithResult(_0xfa1d60,null))['catch'](handleError(_0xfa1d60,null));};exports['create']=function(_0x4cb1ff,_0x40ffcf){return db[_0xd451('0x43')][_0xd451('0x4a')](_0x4cb1ff[_0xd451('0x4b')],{})[_0xd451('0x25')](function(_0x7b9c29){var _0x4f449e=_0x4cb1ff[_0xd451('0x4c')][_0xd451('0x4d')]({'plain':!![]});if(!_0x4f449e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4f449e['role']==='user'){var _0x1e6bf2=_0x7b9c29[_0xd451('0x4d')]({'plain':!![]});var _0x49a518=_0xd451('0x27');return db[_0xd451('0x4e')][_0xd451('0x4f')]({'where':{'name':_0x49a518,'userProfileId':_0x4f449e['userProfileId']},'raw':!![]})[_0xd451('0x25')](function(_0x1790b4){if(_0x1790b4&&_0x1790b4[_0xd451('0x50')]===0x0){return db[_0xd451('0x28')][_0xd451('0x4a')]({'name':_0x1e6bf2[_0xd451('0x2b')],'resourceId':_0x1e6bf2['id'],'type':_0x1790b4[_0xd451('0x2b')],'sectionId':_0x1790b4['id']},{})[_0xd451('0x25')](function(){return _0x7b9c29;});}else{return _0x7b9c29;}})[_0xd451('0x47')](function(_0x586eee){logger['error'](_0xd451('0x51'),_0x586eee);throw _0x586eee;});}return _0x7b9c29;})[_0xd451('0x25')](respondWithResult(_0x40ffcf,0xc9))[_0xd451('0x47')](handleError(_0x40ffcf,null));};exports[_0xd451('0x52')]=function(_0xaf3c40,_0x20352f){if(_0xaf3c40[_0xd451('0x4b')]['id']){delete _0xaf3c40[_0xd451('0x4b')]['id'];}return db[_0xd451('0x43')][_0xd451('0x4f')]({'where':{'id':_0xaf3c40[_0xd451('0x49')]['id']}})[_0xd451('0x25')](handleEntityNotFound(_0x20352f,null))[_0xd451('0x25')](saveUpdates(_0xaf3c40[_0xd451('0x4b')],null))[_0xd451('0x25')](respondWithResult(_0x20352f,null))['catch'](handleError(_0x20352f,null));};exports[_0xd451('0x26')]=function(_0x14a9ca,_0x1a9be2){return db[_0xd451('0x43')][_0xd451('0x4f')]({'where':{'id':_0x14a9ca['params']['id']}})[_0xd451('0x25')](handleEntityNotFound(_0x1a9be2,null))[_0xd451('0x25')](removeEntity(_0x1a9be2,null))[_0xd451('0x47')](handleError(_0x1a9be2,null));};exports[_0xd451('0x53')]=function(_0x5d6a3b,_0x2d9db9,_0x5f5b7d){var _0xee0cb6=require('../../config/schedule');return db[_0xd451('0x43')]['find']({'where':{'id':_0x5d6a3b[_0xd451('0x49')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x2d9db9,null))['then'](function(){_0xee0cb6[_0xd451('0x53')](_0x5d6a3b['params']['id']);})[_0xd451('0x25')](respondWithStatusCode(_0x2d9db9,null))[_0xd451('0x47')](handleError(_0x2d9db9,null));};
\ No newline at end of file
index e6a14b0..54bdf01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfce9=['bluebird','path','rimraf','./schedule.attributes','exports','define','Schedule','util','api','moment'];(function(_0x583fbb,_0xc6ee91){var _0xc8427e=function(_0x265272){while(--_0x265272){_0x583fbb['push'](_0x583fbb['shift']());}};_0xc8427e(++_0xc6ee91);}(_0xfce9,0x93));var _0x9fce=function(_0x187eb3,_0x5f6fe3){_0x187eb3=_0x187eb3-0x0;var _0x2bcc36=_0xfce9[_0x187eb3];return _0x2bcc36;};'use strict';var _=require('lodash');var util=require(_0x9fce('0x0'));var logger=require('../../config/logger')(_0x9fce('0x1'));var moment=require(_0x9fce('0x2'));var BPromise=require(_0x9fce('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fce('0x4'));var rimraf=require(_0x9fce('0x5'));var config=require('../../config/environment');var attributes=require(_0x9fce('0x6'));module[_0x9fce('0x7')]=function(_0x3c67e2,_0x1fba37){return _0x3c67e2[_0x9fce('0x8')](_0x9fce('0x9'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb445=['moment','request-promise','path','../../config/environment','./schedule.attributes','exports','tools_schedules','util','api'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xb445,0xdf));var _0x5b44=function(_0x29ceb8,_0x4521b3){_0x29ceb8=_0x29ceb8-0x0;var _0x3608c8=_0xb445[_0x29ceb8];return _0x3608c8;};'use strict';var _=require('lodash');var util=require(_0x5b44('0x0'));var logger=require('../../config/logger')(_0x5b44('0x1'));var moment=require(_0x5b44('0x2'));var BPromise=require('bluebird');var rp=require(_0x5b44('0x3'));var fs=require('fs');var path=require(_0x5b44('0x4'));var rimraf=require('rimraf');var config=require(_0x5b44('0x5'));var attributes=require(_0x5b44('0x6'));module[_0x5b44('0x7')]=function(_0x4506f5,_0xf42362){return _0x4506f5['define']('Schedule',attributes,{'tableName':_0x5b44('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c440af..926fe6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c49=['catch','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','client','http','then','info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x45d1fd,_0x463212){var _0xd0e542=function(_0x23ebc9){while(--_0x23ebc9){_0x45d1fd['push'](_0x45d1fd['shift']());}};_0xd0e542(++_0x463212);}(_0x8c49,0x17b));var _0x98c4=function(_0x85ebcb,_0x2a88f0){_0x85ebcb=_0x85ebcb-0x0;var _0x58f55d=_0x8c49[_0x85ebcb];return _0x58f55d;};'use strict';var _=require(_0x98c4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x98c4('0x1'));var fs=require('fs');var Redis=require(_0x98c4('0x2'));var db=require(_0x98c4('0x3'))['db'];var utils=require(_0x98c4('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x98c4('0x5')][_0x98c4('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2380d7,_0x3195d8,_0x46bc51){return new BPromise(function(_0x9f3b3e,_0x28c805){return client['request'](_0x2380d7,_0x46bc51)[_0x98c4('0x7')](function(_0x520873){logger[_0x98c4('0x8')](_0x98c4('0x9'),_0x3195d8,_0x98c4('0xa'));logger['debug'](_0x98c4('0xb'),_0x3195d8,'request\x20sent',JSON[_0x98c4('0xc')](_0x520873));if(_0x520873[_0x98c4('0xd')]){if(_0x520873[_0x98c4('0xd')][_0x98c4('0xe')]===0x1f4){logger['error'](_0x98c4('0x9'),_0x3195d8,_0x520873[_0x98c4('0xd')][_0x98c4('0xf')]);return _0x28c805(_0x520873[_0x98c4('0xd')][_0x98c4('0xf')]);}logger[_0x98c4('0xd')](_0x98c4('0x9'),_0x3195d8,_0x520873['error'][_0x98c4('0xf')]);return _0x9f3b3e(_0x520873['error']['message']);}else{logger['info'](_0x98c4('0x9'),_0x3195d8,_0x98c4('0xa'));_0x9f3b3e(_0x520873[_0x98c4('0x10')][_0x98c4('0xf')]);}})[_0x98c4('0x11')](function(_0x80a41c){logger['error']('Schedule,\x20%s,\x20%s',_0x3195d8,_0x80a41c);_0x28c805(_0x80a41c);});});}
\ No newline at end of file
+var _0xa487=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','Schedule,\x20%s,\x20%s','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x34eb31,_0x8f0f70){var _0x254994=function(_0xbec9a3){while(--_0xbec9a3){_0x34eb31['push'](_0x34eb31['shift']());}};_0x254994(++_0x8f0f70);}(_0xa487,0x1a6));var _0x7a48=function(_0x514000,_0x260aad){_0x514000=_0x514000-0x0;var _0x3359a3=_0xa487[_0x514000];return _0x3359a3;};'use strict';var _=require(_0x7a48('0x0'));var util=require(_0x7a48('0x1'));var moment=require(_0x7a48('0x2'));var BPromise=require(_0x7a48('0x3'));var rs=require(_0x7a48('0x4'));var fs=require('fs');var Redis=require(_0x7a48('0x5'));var db=require(_0x7a48('0x6'))['db'];var utils=require(_0x7a48('0x7'));var logger=require(_0x7a48('0x8'))(_0x7a48('0x9'));var config=require(_0x7a48('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x7a48('0xb')][_0x7a48('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xedaf52,_0x1d7bfb,_0x753cb3){return new BPromise(function(_0x37c10b,_0x5b6556){return client[_0x7a48('0xd')](_0xedaf52,_0x753cb3)[_0x7a48('0xe')](function(_0x509ec8){logger['info'](_0x7a48('0xf'),_0x1d7bfb,'request\x20sent');logger['debug'](_0x7a48('0x10'),_0x1d7bfb,_0x7a48('0x11'),JSON['stringify'](_0x509ec8));if(_0x509ec8[_0x7a48('0x12')]){if(_0x509ec8[_0x7a48('0x12')]['code']===0x1f4){logger[_0x7a48('0x12')]('Schedule,\x20%s,\x20%s',_0x1d7bfb,_0x509ec8['error']['message']);return _0x5b6556(_0x509ec8[_0x7a48('0x12')][_0x7a48('0x13')]);}logger[_0x7a48('0x12')]('Schedule,\x20%s,\x20%s',_0x1d7bfb,_0x509ec8[_0x7a48('0x12')][_0x7a48('0x13')]);return _0x37c10b(_0x509ec8[_0x7a48('0x12')][_0x7a48('0x13')]);}else{logger['info'](_0x7a48('0xf'),_0x1d7bfb,_0x7a48('0x11'));_0x37c10b(_0x509ec8['result']['message']);}})[_0x7a48('0x14')](function(_0x331e56){logger[_0x7a48('0x12')]('Schedule,\x20%s,\x20%s',_0x1d7bfb,_0x331e56);_0x5b6556(_0x331e56);});});}
\ No newline at end of file
index 2d26c90..13d6e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdad=['post','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./screenRecording.controller','index','/describe','isAuthenticated','describe','get','/:id','show','download'];(function(_0x4bf55,_0x2d9339){var _0x29e6bc=function(_0x53c9e7){while(--_0x53c9e7){_0x4bf55['push'](_0x4bf55['shift']());}};_0x29e6bc(++_0x2d9339);}(_0xcdad,0x175));var _0xdcda=function(_0x37ffea,_0x25b006){_0x37ffea=_0x37ffea-0x0;var _0x2e2615=_0xcdad[_0x37ffea];return _0x2e2615;};'use strict';var multer=require(_0xdcda('0x0'));var util=require(_0xdcda('0x1'));var path=require(_0xdcda('0x2'));var timeout=require(_0xdcda('0x3'));var express=require(_0xdcda('0x4'));var router=express[_0xdcda('0x5')]();var fs_extra=require(_0xdcda('0x6'));var auth=require(_0xdcda('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdcda('0x8'));var controller=require(_0xdcda('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xdcda('0xa')]);router['get'](_0xdcda('0xb'),auth[_0xdcda('0xc')](),controller[_0xdcda('0xd')]);router[_0xdcda('0xe')](_0xdcda('0xf'),auth[_0xdcda('0xc')](),controller[_0xdcda('0x10')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xdcda('0x11')]);router[_0xdcda('0x12')]('/',auth['isAuthenticated'](),controller[_0xdcda('0x13')]);router['put'](_0xdcda('0xf'),auth['isAuthenticated'](),controller[_0xdcda('0x14')]);router['delete']('/:id',auth[_0xdcda('0xc')](),controller[_0xdcda('0x15')]);module[_0xdcda('0x16')]=router;
\ No newline at end of file
+var _0xfe24=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','download','post','create','put','update'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xfe24,0x94));var _0x4fe2=function(_0x11042c,_0x9e6161){_0x11042c=_0x11042c-0x0;var _0x492c04=_0xfe24[_0x11042c];return _0x492c04;};'use strict';var multer=require(_0x4fe2('0x0'));var util=require('util');var path=require(_0x4fe2('0x1'));var timeout=require(_0x4fe2('0x2'));var express=require(_0x4fe2('0x3'));var router=express[_0x4fe2('0x4')]();var fs_extra=require(_0x4fe2('0x5'));var auth=require(_0x4fe2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x4fe2('0x7'));var controller=require('./screenRecording.controller');router[_0x4fe2('0x8')]('/',auth[_0x4fe2('0x9')](),controller['index']);router[_0x4fe2('0x8')](_0x4fe2('0xa'),auth['isAuthenticated'](),controller[_0x4fe2('0xb')]);router[_0x4fe2('0x8')](_0x4fe2('0xc'),auth[_0x4fe2('0x9')](),controller[_0x4fe2('0xd')]);router[_0x4fe2('0x8')](_0x4fe2('0xe'),auth[_0x4fe2('0x9')](),controller[_0x4fe2('0xf')]);router[_0x4fe2('0x10')]('/',auth[_0x4fe2('0x9')](),controller[_0x4fe2('0x11')]);router[_0x4fe2('0x12')](_0x4fe2('0xc'),auth[_0x4fe2('0x9')](),controller[_0x4fe2('0x13')]);router['delete'](_0x4fe2('0xc'),auth[_0x4fe2('0x9')](),controller['destroy']);module[_0x4fe2('0x14')]=router;
\ No newline at end of file
index a4781ca..3da6856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82d8=['path','VIRTUAL','value','STRING','replace','INTEGER','setDataValue','startedAt','closedAt','DATE','getDataValue','format','MM-DD-YYYY\x20HH:mm','toString','updatedAt','sequelize'];(function(_0x5e7321,_0x23689b){var _0xd93a73=function(_0xec3806){while(--_0xec3806){_0x5e7321['push'](_0x5e7321['shift']());}};_0xd93a73(++_0x23689b);}(_0x82d8,0xff));var _0x882d=function(_0x1f0a86,_0x403bb2){_0x1f0a86=_0x1f0a86-0x0;var _0xa6abba=_0x82d8[_0x1f0a86];return _0xa6abba;};'use strict';var Sequelize=require(_0x882d('0x0'));var moment=require('moment');var path=require(_0x882d('0x1'));var config=require('../../config/environment');module['exports']={'format':{'type':Sequelize[_0x882d('0x2')],'get':function(){return this['getDataValue'](_0x882d('0x3'))?path['extname'](this['getDataValue'](_0x882d('0x3'))):undefined;}},'interactionid':{'type':Sequelize[_0x882d('0x4')]},'channel':{'type':Sequelize[_0x882d('0x4')]},'value':{'type':Sequelize[_0x882d('0x4')],'set':function(_0xb7539b){var _0x3c8b67=_0xb7539b[_0x882d('0x5')](/\\/g,'/');this['setDataValue'](_0x882d('0x3'),_0x3c8b67);}},'rating':{'type':Sequelize[_0x882d('0x6')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x882d('0x6')],'set':function(_0x4da4aa){this[_0x882d('0x7')](_0x882d('0x8'),moment()['subtract'](_0x4da4aa,'ms'));this[_0x882d('0x7')](_0x882d('0x9'),moment());this[_0x882d('0x7')]('duration',_0x4da4aa);}},'startedAt':{'type':Sequelize[_0x882d('0xa')],'get':function(){return moment(this[_0x882d('0xb')](_0x882d('0x8')))[_0x882d('0xc')](_0x882d('0xd'))[_0x882d('0xe')]();}},'closedAt':{'type':Sequelize[_0x882d('0xa')],'get':function(){return moment(this['getDataValue']('closedAt'))[_0x882d('0xc')](_0x882d('0xd'))[_0x882d('0xe')]();}},'createdAt':{'type':Sequelize[_0x882d('0xa')],'get':function(){return moment(this[_0x882d('0xb')]('createdAt'))[_0x882d('0xc')](_0x882d('0xd'))[_0x882d('0xe')]();}},'updatedAt':{'type':Sequelize[_0x882d('0xa')],'get':function(){return moment(this[_0x882d('0xb')](_0x882d('0xf')))[_0x882d('0xc')](_0x882d('0xd'))[_0x882d('0xe')]();}}};
\ No newline at end of file
+var _0x1c77=['value','extname','getDataValue','STRING','replace','setDataValue','INTEGER','subtract','closedAt','duration','startedAt','format','MM-DD-YYYY\x20HH:mm','DATE','toString','createdAt','updatedAt','moment','path','../../config/environment','exports','VIRTUAL'];(function(_0x448c09,_0x40cacc){var _0x3825cd=function(_0x468612){while(--_0x468612){_0x448c09['push'](_0x448c09['shift']());}};_0x3825cd(++_0x40cacc);}(_0x1c77,0xed));var _0x71c7=function(_0x4b4f24,_0x5654a8){_0x4b4f24=_0x4b4f24-0x0;var _0x1c13d4=_0x1c77[_0x4b4f24];return _0x1c13d4;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x71c7('0x0'));var path=require(_0x71c7('0x1'));var config=require(_0x71c7('0x2'));module[_0x71c7('0x3')]={'format':{'type':Sequelize[_0x71c7('0x4')],'get':function(){return this['getDataValue'](_0x71c7('0x5'))?path[_0x71c7('0x6')](this[_0x71c7('0x7')](_0x71c7('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0x71c7('0x8')]},'channel':{'type':Sequelize[_0x71c7('0x8')]},'value':{'type':Sequelize[_0x71c7('0x8')],'set':function(_0x57fb10){var _0x57bbb6=_0x57fb10[_0x71c7('0x9')](/\\/g,'/');this[_0x71c7('0xa')](_0x71c7('0x5'),_0x57bbb6);}},'rating':{'type':Sequelize[_0x71c7('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x1f5fc9){this['setDataValue']('startedAt',moment()[_0x71c7('0xc')](_0x1f5fc9,'ms'));this[_0x71c7('0xa')](_0x71c7('0xd'),moment());this[_0x71c7('0xa')](_0x71c7('0xe'),_0x1f5fc9);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x71c7('0x7')](_0x71c7('0xf')))[_0x71c7('0x10')](_0x71c7('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0x71c7('0x12')],'get':function(){return moment(this[_0x71c7('0x7')](_0x71c7('0xd')))[_0x71c7('0x10')](_0x71c7('0x11'))[_0x71c7('0x13')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x71c7('0x14')))[_0x71c7('0x10')](_0x71c7('0x11'))[_0x71c7('0x13')]();}},'updatedAt':{'type':Sequelize[_0x71c7('0x12')],'get':function(){return moment(this[_0x71c7('0x7')](_0x71c7('0x15')))[_0x71c7('0x10')]('MM-DD-YYYY\x20HH:mm')[_0x71c7('0x13')]();}}};
\ No newline at end of file
index 8d0b43b..e4d65ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['undefined','count','set','Content-Range','apply','reject','update','then','destroy','end','sendStatus','error','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','differenceBy','format','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','filters','pick','merge','filter','include','rows','catch','keys','includeAll','options','find','create','body','createdAt','closedAt','value','params','describe','download','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','limit'];(function(_0x4e1053,_0x1bfa3c){var _0xce1b03=function(_0x5689f1){while(--_0x5689f1){_0x4e1053['push'](_0x4e1053['shift']());}};_0xce1b03(++_0x1bfa3c);}(_0x5c12,0x188));var _0x25c1=function(_0x2b91c5,_0x3b6db5){_0x2b91c5=_0x2b91c5-0x0;var _0xbd5531=_0x5c12[_0x2b91c5];return _0xbd5531;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x25c1('0x0'));var zipdir=require(_0x25c1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25c1('0x2'));var moment=require(_0x25c1('0x3'));var BPromise=require(_0x25c1('0x4'));var Mustache=require(_0x25c1('0x5'));var util=require(_0x25c1('0x6'));var path=require(_0x25c1('0x7'));var sox=require(_0x25c1('0x8'));var csv=require('to-csv');var ejs=require(_0x25c1('0x9'));var fs=require('fs');var fs_extra=require(_0x25c1('0xa'));var _=require(_0x25c1('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x25c1('0xc'));var deskjs=require(_0x25c1('0xd'));var toCsv=require(_0x25c1('0xe'));var querystring=require(_0x25c1('0xf'));var Papa=require(_0x25c1('0x10'));var Redis=require('ioredis');var authService=require(_0x25c1('0x11'));var qs=require(_0x25c1('0x12'));var as=require(_0x25c1('0x13'));var hardwareService=require(_0x25c1('0x14'));var logger=require(_0x25c1('0x15'))('api');var utils=require(_0x25c1('0x16'));var config=require(_0x25c1('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x25c1('0x18'))['db'];function respondWithStatusCode(_0x209af5,_0x323d3c){_0x323d3c=_0x323d3c||0xcc;return function(_0x329ba9){if(_0x329ba9){return _0x209af5['sendStatus'](_0x323d3c);}return _0x209af5['status'](_0x323d3c)['end']();};}function respondWithResult(_0x54f6f4,_0x3ef429){_0x3ef429=_0x3ef429||0xc8;return function(_0x1412ed){if(_0x1412ed){return _0x54f6f4[_0x25c1('0x19')](_0x3ef429)[_0x25c1('0x1a')](_0x1412ed);}};}function respondWithFilteredResult(_0x17a032,_0x4ea926){return function(_0x4638f0){if(_0x4638f0){var _0x55b62d=typeof _0x4ea926['offset']==='undefined'&&typeof _0x4ea926[_0x25c1('0x1b')]===_0x25c1('0x1c');var _0x4dc64b=_0x4638f0['count'];var _0x61a29f=_0x55b62d?0x0:_0x4ea926['offset'];var _0x7175d4=_0x55b62d?_0x4638f0[_0x25c1('0x1d')]:_0x4ea926['offset']+_0x4ea926['limit'];var _0x542768;if(_0x7175d4>=_0x4dc64b){_0x7175d4=_0x4dc64b;_0x542768=0xc8;}else{_0x542768=0xce;}_0x17a032[_0x25c1('0x19')](_0x542768);return _0x17a032[_0x25c1('0x1e')](_0x25c1('0x1f'),_0x61a29f+'-'+_0x7175d4+'/'+_0x4dc64b)[_0x25c1('0x1a')](_0x4638f0);}return null;};}function patchUpdates(_0x481c12){return function(_0x119639){try{jsonpatch[_0x25c1('0x20')](_0x119639,_0x481c12,!![]);}catch(_0x34454a){return BPromise[_0x25c1('0x21')](_0x34454a);}return _0x119639['save']();};}function saveUpdates(_0x4c3259,_0x2a8a84){return function(_0xac3335){if(_0xac3335){return _0xac3335[_0x25c1('0x22')](_0x4c3259)[_0x25c1('0x23')](function(_0x15cf2f){return _0x15cf2f;});}return null;};}function removeEntity(_0x1a4b89,_0x2ba595){return function(_0x324ea9){if(_0x324ea9){return _0x324ea9[_0x25c1('0x24')]()[_0x25c1('0x23')](function(){_0x1a4b89[_0x25c1('0x19')](0xcc)[_0x25c1('0x25')]();});}};}function handleEntityNotFound(_0x399d72,_0x4915cc){return function(_0x2dadae){if(!_0x2dadae){_0x399d72[_0x25c1('0x26')](0x194);}return _0x2dadae;};}function handleError(_0x1b1c96,_0x1fb59f){_0x1fb59f=_0x1fb59f||0x1f4;return function(_0x21fdb8){logger[_0x25c1('0x27')](_0x21fdb8['stack']);if(_0x21fdb8[_0x25c1('0x28')]){delete _0x21fdb8[_0x25c1('0x28')];}_0x1b1c96[_0x25c1('0x19')](_0x1fb59f)[_0x25c1('0x29')](_0x21fdb8);};}exports[_0x25c1('0x2a')]=function(_0x193a68,_0x5c56ab){var _0x1e498={},_0x478f1e={},_0x76b360={'count':0x0,'rows':[]};var _0x31c153=_[_0x25c1('0x2b')](db[_0x25c1('0x2c')][_0x25c1('0x2d')],function(_0x21069c){return{'name':_0x21069c[_0x25c1('0x2e')],'type':_0x21069c[_0x25c1('0x2f')][_0x25c1('0x30')]};});_0x478f1e['model']=_[_0x25c1('0x31')](_['map'](_0x31c153,'name'),[_0x25c1('0x32')]);_0x478f1e[_0x25c1('0x33')]=_['keys'](_0x193a68[_0x25c1('0x33')]);_0x478f1e['filters']=_[_0x25c1('0x34')](_0x478f1e['model'],_0x478f1e[_0x25c1('0x33')]);_0x1e498[_0x25c1('0x35')]=_[_0x25c1('0x34')](_0x478f1e[_0x25c1('0x36')],qs[_0x25c1('0x37')](_0x193a68[_0x25c1('0x33')][_0x25c1('0x37')]));_0x1e498[_0x25c1('0x35')]=_0x1e498['attributes'][_0x25c1('0x38')]?_0x1e498['attributes']:_0x478f1e[_0x25c1('0x36')];if(!_0x193a68['query'][_0x25c1('0x39')](_0x25c1('0x3a'))){_0x1e498[_0x25c1('0x1b')]=qs[_0x25c1('0x1b')](_0x193a68[_0x25c1('0x33')][_0x25c1('0x1b')]);_0x1e498[_0x25c1('0x3b')]=qs[_0x25c1('0x3b')](_0x193a68[_0x25c1('0x33')][_0x25c1('0x3b')]);}_0x1e498[_0x25c1('0x3c')]=qs[_0x25c1('0x3d')](_0x193a68[_0x25c1('0x33')][_0x25c1('0x3d')]);_0x1e498[_0x25c1('0x3e')]=qs[_0x25c1('0x3f')](_[_0x25c1('0x40')](_0x193a68[_0x25c1('0x33')],_0x478f1e[_0x25c1('0x3f')]),_0x31c153);if(_0x193a68[_0x25c1('0x33')]['filter']){_0x1e498[_0x25c1('0x3e')]=_[_0x25c1('0x41')](_0x1e498['where'],{'$or':_[_0x25c1('0x2b')](_0x31c153,function(_0x5eca99){if(_0x5eca99[_0x25c1('0x2f')]!=='VIRTUAL'){var _0x4326fb={};_0x4326fb[_0x5eca99[_0x25c1('0x28')]]={'$like':'%'+_0x193a68[_0x25c1('0x33')][_0x25c1('0x42')]+'%'};return _0x4326fb;}})});}_0x1e498=_[_0x25c1('0x41')]({},_0x1e498,_0x193a68['options']);var _0x1fe6d7={'where':_0x1e498['where']};return db[_0x25c1('0x2c')][_0x25c1('0x1d')](_0x1fe6d7)[_0x25c1('0x23')](function(_0x17fc23){_0x76b360['count']=_0x17fc23;if(_0x193a68['query']['includeAll']){_0x1e498[_0x25c1('0x43')]=[{'all':!![]}];}return db[_0x25c1('0x2c')]['findAll'](_0x1e498);})[_0x25c1('0x23')](function(_0x58792d){_0x76b360[_0x25c1('0x44')]=_0x58792d;return _0x76b360;})[_0x25c1('0x23')](respondWithFilteredResult(_0x5c56ab,_0x1e498))[_0x25c1('0x45')](handleError(_0x5c56ab,null));};exports['show']=function(_0x5502c1,_0x53f87b){var _0x1b1d17={'raw':![],'where':{'id':_0x5502c1['params']['id']}},_0x3cf9c0={};_0x3cf9c0[_0x25c1('0x36')]=_[_0x25c1('0x46')](db[_0x25c1('0x2c')]['rawAttributes']);_0x3cf9c0['query']=_['keys'](_0x5502c1['query']);_0x3cf9c0[_0x25c1('0x3f')]=_[_0x25c1('0x34')](_0x3cf9c0['model'],_0x3cf9c0[_0x25c1('0x33')]);_0x1b1d17[_0x25c1('0x35')]=_[_0x25c1('0x34')](_0x3cf9c0[_0x25c1('0x36')],qs[_0x25c1('0x37')](_0x5502c1[_0x25c1('0x33')][_0x25c1('0x37')]));_0x1b1d17['attributes']=_0x1b1d17['attributes'][_0x25c1('0x38')]?_0x1b1d17[_0x25c1('0x35')]:_0x3cf9c0[_0x25c1('0x36')];if(_0x5502c1['query'][_0x25c1('0x47')]){_0x1b1d17[_0x25c1('0x43')]=[{'all':!![]}];}_0x1b1d17=_[_0x25c1('0x41')]({},_0x1b1d17,_0x5502c1[_0x25c1('0x48')]);return db['ScreenRecording'][_0x25c1('0x49')](_0x1b1d17)[_0x25c1('0x23')](handleEntityNotFound(_0x53f87b,null))[_0x25c1('0x23')](respondWithResult(_0x53f87b,null))[_0x25c1('0x45')](handleError(_0x53f87b,null));};exports['create']=function(_0x59e96b,_0x13ac06){return db[_0x25c1('0x2c')][_0x25c1('0x4a')](_0x59e96b[_0x25c1('0x4b')],{})['then'](respondWithResult(_0x13ac06,0xc9))[_0x25c1('0x45')](handleError(_0x13ac06,null));};exports[_0x25c1('0x22')]=function(_0x5770dd,_0x102f5){if(_0x5770dd[_0x25c1('0x4b')]['id']){delete _0x5770dd[_0x25c1('0x4b')]['id'];}delete _0x5770dd[_0x25c1('0x4b')]['duration'];delete _0x5770dd['body'][_0x25c1('0x4c')];delete _0x5770dd[_0x25c1('0x4b')][_0x25c1('0x4d')];delete _0x5770dd['body'][_0x25c1('0x4e')];return db[_0x25c1('0x2c')]['find']({'where':{'id':_0x5770dd[_0x25c1('0x4f')]['id']}})[_0x25c1('0x23')](handleEntityNotFound(_0x102f5,null))[_0x25c1('0x23')](saveUpdates(_0x5770dd[_0x25c1('0x4b')],null))[_0x25c1('0x23')](respondWithResult(_0x102f5,null))[_0x25c1('0x45')](handleError(_0x102f5,null));};exports[_0x25c1('0x50')]=function(_0x5102a0,_0x5344da){return db['ScreenRecording'][_0x25c1('0x50')]()['then'](respondWithResult(_0x5344da,null))[_0x25c1('0x45')](handleError(_0x5344da,null));};exports[_0x25c1('0x51')]=function(_0x42fd6e,_0x153603,_0x40fe57){var _0x1b72e5=require('../../components/encryptor');var _0x4a876b=![];var _0x68e295={};if(_0x42fd6e[_0x25c1('0x33')][_0x25c1('0x2f')]&&_0x42fd6e[_0x25c1('0x33')][_0x25c1('0x2f')]==='uniqueid'){_0x68e295[_0x25c1('0x52')]=_0x42fd6e[_0x25c1('0x4f')]['id'];}else{_0x68e295['id']=_0x42fd6e[_0x25c1('0x4f')]['id'];}return db[_0x25c1('0x2c')][_0x25c1('0x49')]({'where':_0x68e295,'attributes':['id','value'],'raw':!![]})[_0x25c1('0x23')](handleEntityNotFound(_0x153603,null))[_0x25c1('0x23')](function(_0x49b192){if(_0x49b192){var _0x1341d2=path[_0x25c1('0x53')](config[_0x25c1('0x54')],_0x25c1('0x55'),_0x49b192[_0x25c1('0x4e')]);var _0x3d051a=util['format'](_0x25c1('0x56'),_0x1341d2);if(fs[_0x25c1('0x57')](_0x3d051a)){_0x4a876b=!![];return _0x1b72e5[_0x25c1('0x58')](_0x3d051a,_0x1341d2,config[_0x25c1('0x59')][_0x25c1('0x5a')])[_0x25c1('0x23')](function(){return _0x49b192;});}return _0x49b192;}})[_0x25c1('0x23')](function(_0x5d54cd){if(_0x5d54cd){var _0x321833=path[_0x25c1('0x53')](config[_0x25c1('0x54')],_0x25c1('0x55'),_0x5d54cd[_0x25c1('0x4e')]);if(!fs[_0x25c1('0x57')](_0x321833)){throw new db['Sequelize'][(_0x25c1('0x5b'))](_0x25c1('0x5c'));}if(_0x5d54cd[_0x25c1('0x5d')]){return _0x153603[_0x25c1('0x51')](_0x321833,_0x5d54cd[_0x25c1('0x5d')]+path[_0x25c1('0x5e')](_0x321833),function(){if(_0x4a876b){fs[_0x25c1('0x5f')](_0x321833);}});}else{return _0x153603['download'](_0x321833,function(_0x44efc9){if(_0x4a876b){fs['unlink'](_0x321833);}});}}})[_0x25c1('0x45')](function(_0x24568c){if(_0x24568c[_0x25c1('0x60')]===_0x25c1('0x5c')){_0x153603[_0x25c1('0x19')](0x194)[_0x25c1('0x29')](_0x25c1('0x61'));}else{return handleError(_0x153603,null);}});};exports[_0x25c1('0x24')]=function(_0x4c435c,_0x7dbbe1){return db[_0x25c1('0x2c')][_0x25c1('0x49')]({'where':{'id':_0x4c435c[_0x25c1('0x4f')]['id']}})[_0x25c1('0x23')](function(_0x338f70){if(_[_0x25c1('0x62')](_0x338f70)){throw new ReferenceError('Entity\x20not\x20found');}return _0x338f70;})[_0x25c1('0x23')](function(_0x51e747){var _0x5e1517=path['join'](config[_0x25c1('0x54')],_0x25c1('0x55'),_0x51e747[_0x25c1('0x4e')]);logger[_0x25c1('0x63')](_0x25c1('0x64'),_0x5e1517);if(!_['isNil'](_0x51e747[_0x25c1('0x4e')])&&fs['existsSync'](_0x5e1517)){logger[_0x25c1('0x63')](_0x25c1('0x65')+_0x5e1517+_0x25c1('0x66'));fs[_0x25c1('0x67')](_0x5e1517);}_0x5e1517=_0x5e1517+_0x25c1('0x68');if(!_[_0x25c1('0x62')](_0x51e747[_0x25c1('0x4e')])&&fs['existsSync'](_0x5e1517)){logger[_0x25c1('0x63')](_0x25c1('0x65')+_0x5e1517+_0x25c1('0x66'));fs[_0x25c1('0x67')](_0x5e1517);}return _0x51e747;})[_0x25c1('0x23')](function(_0x425f3e){if(!_0x425f3e)throw new InternalError();return _0x425f3e['destroy']();})[_0x25c1('0x23')](function(){_0x7dbbe1['status'](0xcc)[_0x25c1('0x25')]();})['catch'](handleError(_0x7dbbe1,null));};
\ No newline at end of file
+var _0x0e85=['duration','createdAt','closedAt','params','describe','download','uniqueid','join','root','value','existsSync','secrets','recording','server/files/screen_recordings','filename','extname','unlink','message','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','map','ScreenRecording','rawAttributes','fieldName','key','model','format','query','filters','intersection','attributes','length','nolimit','sort','filter','where','merge','type','options','include','findAll','rows','catch','keys','fields','find','create','body'];(function(_0x4aa838,_0x4aa14f){var _0x3abff0=function(_0x402d55){while(--_0x402d55){_0x4aa838['push'](_0x4aa838['shift']());}};_0x3abff0(++_0x4aa14f);}(_0x0e85,0x7c));var _0x50e8=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x0e85[_0x1cc8fe];return _0x230054;};'use strict';var emlformat=require(_0x50e8('0x0'));var rimraf=require(_0x50e8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x50e8('0x2'));var rp=require(_0x50e8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x50e8('0x4'));var path=require('path');var sox=require(_0x50e8('0x5'));var csv=require(_0x50e8('0x6'));var ejs=require(_0x50e8('0x7'));var fs=require('fs');var fs_extra=require(_0x50e8('0x8'));var _=require('lodash');var squel=require(_0x50e8('0x9'));var crypto=require(_0x50e8('0xa'));var jsforce=require(_0x50e8('0xb'));var deskjs=require(_0x50e8('0xc'));var toCsv=require(_0x50e8('0x6'));var querystring=require(_0x50e8('0xd'));var Papa=require('papaparse');var Redis=require(_0x50e8('0xe'));var authService=require(_0x50e8('0xf'));var qs=require(_0x50e8('0x10'));var as=require(_0x50e8('0x11'));var hardwareService=require(_0x50e8('0x12'));var logger=require(_0x50e8('0x13'))(_0x50e8('0x14'));var utils=require(_0x50e8('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x50e8('0x16'))['db'];function respondWithStatusCode(_0x24d381,_0x508377){_0x508377=_0x508377||0xcc;return function(_0x49e02f){if(_0x49e02f){return _0x24d381[_0x50e8('0x17')](_0x508377);}return _0x24d381[_0x50e8('0x18')](_0x508377)[_0x50e8('0x19')]();};}function respondWithResult(_0x473aa7,_0x54efd3){_0x54efd3=_0x54efd3||0xc8;return function(_0x18596f){if(_0x18596f){return _0x473aa7[_0x50e8('0x18')](_0x54efd3)[_0x50e8('0x1a')](_0x18596f);}};}function respondWithFilteredResult(_0x5c3baa,_0x5524a3){return function(_0x30a872){if(_0x30a872){var _0xf02b48=typeof _0x5524a3[_0x50e8('0x1b')]===_0x50e8('0x1c')&&typeof _0x5524a3[_0x50e8('0x1d')]===_0x50e8('0x1c');var _0x5642bf=_0x30a872['count'];var _0x441f25=_0xf02b48?0x0:_0x5524a3[_0x50e8('0x1b')];var _0x40d060=_0xf02b48?_0x30a872[_0x50e8('0x1e')]:_0x5524a3[_0x50e8('0x1b')]+_0x5524a3[_0x50e8('0x1d')];var _0x1a451d;if(_0x40d060>=_0x5642bf){_0x40d060=_0x5642bf;_0x1a451d=0xc8;}else{_0x1a451d=0xce;}_0x5c3baa['status'](_0x1a451d);return _0x5c3baa[_0x50e8('0x1f')]('Content-Range',_0x441f25+'-'+_0x40d060+'/'+_0x5642bf)[_0x50e8('0x1a')](_0x30a872);}return null;};}function patchUpdates(_0xe04a5c){return function(_0xd263d){try{jsonpatch[_0x50e8('0x20')](_0xd263d,_0xe04a5c,!![]);}catch(_0x46af8e){return BPromise['reject'](_0x46af8e);}return _0xd263d[_0x50e8('0x21')]();};}function saveUpdates(_0x1e4e0d,_0x58110d){return function(_0x31d23c){if(_0x31d23c){return _0x31d23c[_0x50e8('0x22')](_0x1e4e0d)['then'](function(_0x1ce7fc){return _0x1ce7fc;});}return null;};}function removeEntity(_0xe7e56c,_0x4f56b7){return function(_0x47a3d8){if(_0x47a3d8){return _0x47a3d8['destroy']()[_0x50e8('0x23')](function(){_0xe7e56c[_0x50e8('0x18')](0xcc)[_0x50e8('0x19')]();});}};}function handleEntityNotFound(_0x371a1f,_0xc2f832){return function(_0x13b6e9){if(!_0x13b6e9){_0x371a1f['sendStatus'](0x194);}return _0x13b6e9;};}function handleError(_0x3a6442,_0x396611){_0x396611=_0x396611||0x1f4;return function(_0x4b3a09){logger[_0x50e8('0x24')](_0x4b3a09[_0x50e8('0x25')]);if(_0x4b3a09[_0x50e8('0x26')]){delete _0x4b3a09[_0x50e8('0x26')];}_0x3a6442['status'](_0x396611)[_0x50e8('0x27')](_0x4b3a09);};}exports['index']=function(_0x30fedf,_0x39c0c6){var _0x42bbef={},_0x4f0b88={},_0x1041b9={'count':0x0,'rows':[]};var _0x126c99=_[_0x50e8('0x28')](db[_0x50e8('0x29')][_0x50e8('0x2a')],function(_0x18aa31){return{'name':_0x18aa31[_0x50e8('0x2b')],'type':_0x18aa31['type'][_0x50e8('0x2c')]};});_0x4f0b88[_0x50e8('0x2d')]=_['differenceBy'](_['map'](_0x126c99,_0x50e8('0x26')),[_0x50e8('0x2e')]);_0x4f0b88[_0x50e8('0x2f')]=_['keys'](_0x30fedf['query']);_0x4f0b88[_0x50e8('0x30')]=_[_0x50e8('0x31')](_0x4f0b88['model'],_0x4f0b88[_0x50e8('0x2f')]);_0x42bbef[_0x50e8('0x32')]=_[_0x50e8('0x31')](_0x4f0b88[_0x50e8('0x2d')],qs['fields'](_0x30fedf[_0x50e8('0x2f')]['fields']));_0x42bbef[_0x50e8('0x32')]=_0x42bbef[_0x50e8('0x32')][_0x50e8('0x33')]?_0x42bbef['attributes']:_0x4f0b88[_0x50e8('0x2d')];if(!_0x30fedf[_0x50e8('0x2f')]['hasOwnProperty'](_0x50e8('0x34'))){_0x42bbef[_0x50e8('0x1d')]=qs[_0x50e8('0x1d')](_0x30fedf[_0x50e8('0x2f')]['limit']);_0x42bbef[_0x50e8('0x1b')]=qs[_0x50e8('0x1b')](_0x30fedf[_0x50e8('0x2f')][_0x50e8('0x1b')]);}_0x42bbef['order']=qs[_0x50e8('0x35')](_0x30fedf[_0x50e8('0x2f')][_0x50e8('0x35')]);_0x42bbef['where']=qs['filters'](_['pick'](_0x30fedf[_0x50e8('0x2f')],_0x4f0b88[_0x50e8('0x30')]),_0x126c99);if(_0x30fedf[_0x50e8('0x2f')][_0x50e8('0x36')]){_0x42bbef[_0x50e8('0x37')]=_[_0x50e8('0x38')](_0x42bbef[_0x50e8('0x37')],{'$or':_[_0x50e8('0x28')](_0x126c99,function(_0x35f802){if(_0x35f802[_0x50e8('0x39')]!=='VIRTUAL'){var _0x3371a4={};_0x3371a4[_0x35f802[_0x50e8('0x26')]]={'$like':'%'+_0x30fedf[_0x50e8('0x2f')][_0x50e8('0x36')]+'%'};return _0x3371a4;}})});}_0x42bbef=_['merge']({},_0x42bbef,_0x30fedf[_0x50e8('0x3a')]);var _0x944e46={'where':_0x42bbef[_0x50e8('0x37')]};return db[_0x50e8('0x29')][_0x50e8('0x1e')](_0x944e46)['then'](function(_0x53b198){_0x1041b9[_0x50e8('0x1e')]=_0x53b198;if(_0x30fedf[_0x50e8('0x2f')]['includeAll']){_0x42bbef[_0x50e8('0x3b')]=[{'all':!![]}];}return db[_0x50e8('0x29')][_0x50e8('0x3c')](_0x42bbef);})[_0x50e8('0x23')](function(_0x251e1c){_0x1041b9[_0x50e8('0x3d')]=_0x251e1c;return _0x1041b9;})[_0x50e8('0x23')](respondWithFilteredResult(_0x39c0c6,_0x42bbef))[_0x50e8('0x3e')](handleError(_0x39c0c6,null));};exports['show']=function(_0x3d26bd,_0x44e0ca){var _0x3ea251={'raw':![],'where':{'id':_0x3d26bd['params']['id']}},_0x2adae0={};_0x2adae0[_0x50e8('0x2d')]=_[_0x50e8('0x3f')](db[_0x50e8('0x29')][_0x50e8('0x2a')]);_0x2adae0['query']=_[_0x50e8('0x3f')](_0x3d26bd['query']);_0x2adae0['filters']=_['intersection'](_0x2adae0[_0x50e8('0x2d')],_0x2adae0[_0x50e8('0x2f')]);_0x3ea251['attributes']=_[_0x50e8('0x31')](_0x2adae0[_0x50e8('0x2d')],qs[_0x50e8('0x40')](_0x3d26bd[_0x50e8('0x2f')][_0x50e8('0x40')]));_0x3ea251[_0x50e8('0x32')]=_0x3ea251['attributes'][_0x50e8('0x33')]?_0x3ea251['attributes']:_0x2adae0[_0x50e8('0x2d')];if(_0x3d26bd[_0x50e8('0x2f')]['includeAll']){_0x3ea251[_0x50e8('0x3b')]=[{'all':!![]}];}_0x3ea251=_['merge']({},_0x3ea251,_0x3d26bd[_0x50e8('0x3a')]);return db[_0x50e8('0x29')][_0x50e8('0x41')](_0x3ea251)[_0x50e8('0x23')](handleEntityNotFound(_0x44e0ca,null))[_0x50e8('0x23')](respondWithResult(_0x44e0ca,null))[_0x50e8('0x3e')](handleError(_0x44e0ca,null));};exports[_0x50e8('0x42')]=function(_0x3e52b3,_0x141bd4){return db[_0x50e8('0x29')][_0x50e8('0x42')](_0x3e52b3['body'],{})[_0x50e8('0x23')](respondWithResult(_0x141bd4,0xc9))[_0x50e8('0x3e')](handleError(_0x141bd4,null));};exports['update']=function(_0x3692ba,_0x58f14e){if(_0x3692ba[_0x50e8('0x43')]['id']){delete _0x3692ba['body']['id'];}delete _0x3692ba[_0x50e8('0x43')][_0x50e8('0x44')];delete _0x3692ba[_0x50e8('0x43')][_0x50e8('0x45')];delete _0x3692ba[_0x50e8('0x43')][_0x50e8('0x46')];delete _0x3692ba[_0x50e8('0x43')]['value'];return db[_0x50e8('0x29')][_0x50e8('0x41')]({'where':{'id':_0x3692ba[_0x50e8('0x47')]['id']}})[_0x50e8('0x23')](handleEntityNotFound(_0x58f14e,null))[_0x50e8('0x23')](saveUpdates(_0x3692ba[_0x50e8('0x43')],null))['then'](respondWithResult(_0x58f14e,null))[_0x50e8('0x3e')](handleError(_0x58f14e,null));};exports[_0x50e8('0x48')]=function(_0xff2e24,_0x27c80a){return db['ScreenRecording'][_0x50e8('0x48')]()[_0x50e8('0x23')](respondWithResult(_0x27c80a,null))[_0x50e8('0x3e')](handleError(_0x27c80a,null));};exports[_0x50e8('0x49')]=function(_0x207f06,_0x1372e3,_0x320b00){var _0x5f5220=require('../../components/encryptor');var _0x55083e=![];var _0x2b54ad={};if(_0x207f06[_0x50e8('0x2f')][_0x50e8('0x39')]&&_0x207f06[_0x50e8('0x2f')][_0x50e8('0x39')]===_0x50e8('0x4a')){_0x2b54ad['uniqueid']=_0x207f06[_0x50e8('0x47')]['id'];}else{_0x2b54ad['id']=_0x207f06[_0x50e8('0x47')]['id'];}return db[_0x50e8('0x29')][_0x50e8('0x41')]({'where':_0x2b54ad,'attributes':['id','value'],'raw':!![]})[_0x50e8('0x23')](handleEntityNotFound(_0x1372e3,null))[_0x50e8('0x23')](function(_0x373b41){if(_0x373b41){var _0x1cc5ba=path[_0x50e8('0x4b')](config[_0x50e8('0x4c')],'server/files/screen_recordings',_0x373b41[_0x50e8('0x4d')]);var _0x5d0d54=util['format']('%s.cypher',_0x1cc5ba);if(fs[_0x50e8('0x4e')](_0x5d0d54)){_0x55083e=!![];return _0x5f5220['decryptFile'](_0x5d0d54,_0x1cc5ba,config[_0x50e8('0x4f')][_0x50e8('0x50')])[_0x50e8('0x23')](function(){return _0x373b41;});}return _0x373b41;}})[_0x50e8('0x23')](function(_0x279cf4){if(_0x279cf4){var _0x12224d=path[_0x50e8('0x4b')](config['root'],_0x50e8('0x51'),_0x279cf4[_0x50e8('0x4d')]);if(!fs[_0x50e8('0x4e')](_0x12224d)){throw new db['Sequelize']['ValidationError']('ScreenRecording\x20not\x20found');}if(_0x279cf4[_0x50e8('0x52')]){return _0x1372e3[_0x50e8('0x49')](_0x12224d,_0x279cf4[_0x50e8('0x52')]+path[_0x50e8('0x53')](_0x12224d),function(){if(_0x55083e){fs[_0x50e8('0x54')](_0x12224d);}});}else{return _0x1372e3[_0x50e8('0x49')](_0x12224d,function(_0x583d6a){if(_0x55083e){fs[_0x50e8('0x54')](_0x12224d);}});}}})['catch'](function(_0x255b48){if(_0x255b48[_0x50e8('0x55')]==='ScreenRecording\x20not\x20found'){_0x1372e3['status'](0x194)['send'](_0x50e8('0x56'));}else{return handleError(_0x1372e3,null);}});};exports[_0x50e8('0x57')]=function(_0x5d1fc8,_0x351047){return db[_0x50e8('0x29')][_0x50e8('0x41')]({'where':{'id':_0x5d1fc8[_0x50e8('0x47')]['id']}})[_0x50e8('0x23')](function(_0x47b428){if(_[_0x50e8('0x58')](_0x47b428)){throw new ReferenceError(_0x50e8('0x59'));}return _0x47b428;})[_0x50e8('0x23')](function(_0x4b80ac){var _0x583e58=path[_0x50e8('0x4b')](config[_0x50e8('0x4c')],_0x50e8('0x51'),_0x4b80ac[_0x50e8('0x4d')]);logger[_0x50e8('0x5a')](_0x50e8('0x5b'),_0x583e58);if(!_['isNil'](_0x4b80ac['value'])&&fs[_0x50e8('0x4e')](_0x583e58)){logger['info'](_0x50e8('0x5c')+_0x583e58+_0x50e8('0x5d'));fs['unlinkSync'](_0x583e58);}_0x583e58=_0x583e58+_0x50e8('0x5e');if(!_['isNil'](_0x4b80ac['value'])&&fs['existsSync'](_0x583e58)){logger[_0x50e8('0x5a')](_0x50e8('0x5c')+_0x583e58+_0x50e8('0x5d'));fs[_0x50e8('0x5f')](_0x583e58);}return _0x4b80ac;})['then'](function(_0x480362){if(!_0x480362)throw new InternalError();return _0x480362[_0x50e8('0x57')]();})[_0x50e8('0x23')](function(){_0x351047[_0x50e8('0x18')](0xcc)[_0x50e8('0x19')]();})[_0x50e8('0x3e')](handleError(_0x351047,null));};
\ No newline at end of file
index 11feca9..ae35fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf79=['../../config/environment','./screenRecording.attributes','exports','ScreenRecording','screen_recordings','interactionid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x47f7ec,_0x369f9d){var _0x415101=function(_0x41317a){while(--_0x41317a){_0x47f7ec['push'](_0x47f7ec['shift']());}};_0x415101(++_0x369f9d);}(_0xaf79,0x1b8));var _0x9af7=function(_0x3b6319,_0x445f04){_0x3b6319=_0x3b6319-0x0;var _0xe61b56=_0xaf79[_0x3b6319];return _0xe61b56;};'use strict';var _=require('lodash');var util=require(_0x9af7('0x0'));var logger=require(_0x9af7('0x1'))(_0x9af7('0x2'));var moment=require(_0x9af7('0x3'));var BPromise=require(_0x9af7('0x4'));var rp=require(_0x9af7('0x5'));var fs=require('fs');var path=require(_0x9af7('0x6'));var rimraf=require(_0x9af7('0x7'));var config=require(_0x9af7('0x8'));var attributes=require(_0x9af7('0x9'));module[_0x9af7('0xa')]=function(_0x3c73b5,_0x44ff19){return _0x3c73b5['define'](_0x9af7('0xb'),attributes,{'tableName':_0x9af7('0xc'),'paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x9af7('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa919=['exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x30e9e3,_0x3743a5){var _0x3365d8=function(_0x264ea1){while(--_0x264ea1){_0x30e9e3['push'](_0x30e9e3['shift']());}};_0x3365d8(++_0x3743a5);}(_0xa919,0x1a9));var _0x9a91=function(_0x2baf40,_0x5ebef2){_0x2baf40=_0x2baf40-0x0;var _0x2bb2cb=_0xa919[_0x2baf40];return _0x2bb2cb;};'use strict';var _=require(_0x9a91('0x0'));var util=require(_0x9a91('0x1'));var logger=require('../../config/logger')(_0x9a91('0x2'));var moment=require(_0x9a91('0x3'));var BPromise=require(_0x9a91('0x4'));var rp=require(_0x9a91('0x5'));var fs=require('fs');var path=require(_0x9a91('0x6'));var rimraf=require(_0x9a91('0x7'));var config=require(_0x9a91('0x8'));var attributes=require('./screenRecording.attributes');module[_0x9a91('0x9')]=function(_0x53fd3d,_0x3a6239){return _0x53fd3d[_0x9a91('0xa')](_0x9a91('0xb'),attributes,{'tableName':_0x9a91('0xc'),'paranoid':![],'indexes':[{'name':_0x9a91('0xd'),'fields':[_0x9a91('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 043a112..a55ba6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf8e=['jayson/promise','client','request','then','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3f474b,_0x4b75d4){var _0x39f792=function(_0x7079cc){while(--_0x7079cc){_0x3f474b['push'](_0x3f474b['shift']());}};_0x39f792(++_0x4b75d4);}(_0xaf8e,0x1a7));var _0xeaf8=function(_0x29959f,_0x322fb9){_0x29959f=_0x29959f-0x0;var _0x4ae2b3=_0xaf8e[_0x29959f];return _0x4ae2b3;};'use strict';var _=require(_0xeaf8('0x0'));var util=require(_0xeaf8('0x1'));var moment=require('moment');var BPromise=require(_0xeaf8('0x2'));var rs=require(_0xeaf8('0x3'));var fs=require('fs');var Redis=require(_0xeaf8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xeaf8('0x5'));var logger=require(_0xeaf8('0x6'))(_0xeaf8('0x7'));var config=require(_0xeaf8('0x8'));var jayson=require(_0xeaf8('0x9'));var client=jayson[_0xeaf8('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c5653,_0x54c9e4,_0x1820d1){return new BPromise(function(_0x527a41,_0x5bfa85){return client[_0xeaf8('0xb')](_0x4c5653,_0x1820d1)[_0xeaf8('0xc')](function(_0x6da60d){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x54c9e4,'request\x20sent');logger[_0xeaf8('0xd')](_0xeaf8('0xe'),_0x54c9e4,_0xeaf8('0xf'),JSON[_0xeaf8('0x10')](_0x6da60d));if(_0x6da60d[_0xeaf8('0x11')]){if(_0x6da60d[_0xeaf8('0x11')][_0xeaf8('0x12')]===0x1f4){logger[_0xeaf8('0x11')](_0xeaf8('0x13'),_0x54c9e4,_0x6da60d['error'][_0xeaf8('0x14')]);return _0x5bfa85(_0x6da60d[_0xeaf8('0x11')]['message']);}logger[_0xeaf8('0x11')](_0xeaf8('0x13'),_0x54c9e4,_0x6da60d['error'][_0xeaf8('0x14')]);return _0x527a41(_0x6da60d[_0xeaf8('0x11')][_0xeaf8('0x14')]);}else{logger[_0xeaf8('0x15')](_0xeaf8('0x13'),_0x54c9e4,'request\x20sent');_0x527a41(_0x6da60d[_0xeaf8('0x16')][_0xeaf8('0x14')]);}})[_0xeaf8('0x17')](function(_0x2363c3){logger[_0xeaf8('0x11')](_0xeaf8('0x13'),_0x54c9e4,_0x2363c3);_0x5bfa85(_0x2363c3);});});}
\ No newline at end of file
+var _0x2299=['lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x22ac52,_0x1dd22f){var _0x342254=function(_0x15d064){while(--_0x15d064){_0x22ac52['push'](_0x22ac52['shift']());}};_0x342254(++_0x1dd22f);}(_0x2299,0x154));var _0x9229=function(_0x395db0,_0x4bf0ea){_0x395db0=_0x395db0-0x0;var _0x53c829=_0x2299[_0x395db0];return _0x53c829;};'use strict';var _=require(_0x9229('0x0'));var util=require(_0x9229('0x1'));var moment=require(_0x9229('0x2'));var BPromise=require(_0x9229('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9229('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9229('0x5'))(_0x9229('0x6'));var config=require(_0x9229('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9229('0x8')][_0x9229('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2642b1,_0x2ee859,_0x11f876){return new BPromise(function(_0x4cc8e1,_0x3fc450){return client[_0x9229('0xa')](_0x2642b1,_0x11f876)[_0x9229('0xb')](function(_0x349285){logger[_0x9229('0xc')](_0x9229('0xd'),_0x2ee859,_0x9229('0xe'));logger[_0x9229('0xf')](_0x9229('0x10'),_0x2ee859,_0x9229('0xe'),JSON['stringify'](_0x349285));if(_0x349285['error']){if(_0x349285[_0x9229('0x11')]['code']===0x1f4){logger[_0x9229('0x11')](_0x9229('0xd'),_0x2ee859,_0x349285[_0x9229('0x11')][_0x9229('0x12')]);return _0x3fc450(_0x349285[_0x9229('0x11')][_0x9229('0x12')]);}logger[_0x9229('0x11')](_0x9229('0xd'),_0x2ee859,_0x349285[_0x9229('0x11')][_0x9229('0x12')]);return _0x4cc8e1(_0x349285[_0x9229('0x11')][_0x9229('0x12')]);}else{logger['info'](_0x9229('0xd'),_0x2ee859,'request\x20sent');_0x4cc8e1(_0x349285[_0x9229('0x13')][_0x9229('0x12')]);}})['catch'](function(_0x394f68){logger[_0x9229('0x11')](_0x9229('0xd'),_0x2ee859,_0x394f68);_0x3fc450(_0x394f68);});});}
\ No newline at end of file
index 38c15f3..d4d1113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9916=['addFavicon','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./setting.controller','isAuthenticated','index','get','/:id','show','/:id/logo','getLogo','/:id/gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','logo','extname','originalname','post','single','file','addLogo','format','logologin','addLogoLogin','preferred','/:id/preferred','addPreferred','favicon'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0x9916,0x15c));var _0x6991=function(_0xc7bdf5,_0x2451ec){_0xc7bdf5=_0xc7bdf5-0x0;var _0x4800dc=_0x9916[_0xc7bdf5];return _0x4800dc;};'use strict';var multer=require(_0x6991('0x0'));var util=require(_0x6991('0x1'));var path=require(_0x6991('0x2'));var timeout=require(_0x6991('0x3'));var express=require(_0x6991('0x4'));var router=express[_0x6991('0x5')]();var fs_extra=require(_0x6991('0x6'));var auth=require(_0x6991('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6991('0x8'));router['get']('/',auth[_0x6991('0x9')](),controller[_0x6991('0xa')]);router[_0x6991('0xb')]('/now',controller['getDate']);router[_0x6991('0xb')](_0x6991('0xc'),controller[_0x6991('0xd')]);router[_0x6991('0xb')](_0x6991('0xe'),controller[_0x6991('0xf')]);router[_0x6991('0xb')]('/:id/logo_login',controller['getLogoLogin']);router[_0x6991('0xb')](_0x6991('0x10'),controller['gdpr']);router[_0x6991('0xb')]('/:id/preferred',controller[_0x6991('0x11')]);router['get'](_0x6991('0x12'),controller[_0x6991('0x13')]);var upload=multer({'storage':multer[_0x6991('0x14')]({'destination':function(_0x2ab68c,_0x331c2e,_0x40190e){_0x40190e(null,path[_0x6991('0x15')](config[_0x6991('0x16')],_0x6991('0x17')));},'filename':function(_0x16d3cd,_0x3d8494,_0x390153){_0x390153(null,util['format'](_0x6991('0x18'),_0x6991('0x19'),path[_0x6991('0x1a')](_0x3d8494[_0x6991('0x1b')])));}})});router[_0x6991('0x1c')]('/:id/logo',upload[_0x6991('0x1d')](_0x6991('0x1e')),controller[_0x6991('0x1f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1b2f3a,_0x457dcf,_0x35935b){_0x35935b(null,path['join'](config[_0x6991('0x16')],'server/files/images/logos/'));},'filename':function(_0x128f6a,_0x44137b,_0x2a41c4){_0x2a41c4(null,util[_0x6991('0x20')]('%s%s',_0x6991('0x21'),path[_0x6991('0x1a')](_0x44137b[_0x6991('0x1b')])));}})});router[_0x6991('0x1c')]('/:id/logo_login',upload['single'](_0x6991('0x1e')),controller[_0x6991('0x22')]);var upload=multer({'storage':multer[_0x6991('0x14')]({'destination':function(_0x3a5d0c,_0xe223b7,_0x43228a){_0x43228a(null,path['join'](config['root'],_0x6991('0x17')));},'filename':function(_0xd0dcf3,_0xbfc980,_0x25f437){_0x25f437(null,util[_0x6991('0x20')](_0x6991('0x18'),_0x6991('0x23'),path[_0x6991('0x1a')](_0xbfc980['originalname'])));}})});router[_0x6991('0x1c')](_0x6991('0x24'),upload[_0x6991('0x1d')](_0x6991('0x1e')),controller[_0x6991('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x21a57b,_0x1a1b0f,_0x419579){_0x419579(null,path[_0x6991('0x15')](config[_0x6991('0x16')],_0x6991('0x17')));},'filename':function(_0x37654b,_0x1291ca,_0x5ae04d){_0x5ae04d(null,util[_0x6991('0x20')](_0x6991('0x18'),_0x6991('0x26'),path[_0x6991('0x1a')](_0x1291ca['originalname'])));}})});router[_0x6991('0x1c')](_0x6991('0x12'),upload[_0x6991('0x1d')](_0x6991('0x1e')),controller[_0x6991('0x27')]);router[_0x6991('0x28')](_0x6991('0xc'),auth['isAuthenticated'](),controller[_0x6991('0x29')]);module[_0x6991('0x2a')]=router;
\ No newline at end of file
+var _0x1663=['/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','logo','extname','originalname','post','single','file','addLogo','format','logologin','addLogoLogin','preferred','addPreferred','addFavicon','update','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','isAuthenticated','index','/now','getDate','get','/:id','show'];(function(_0x80e25f,_0x466e8b){var _0x2562b3=function(_0x599768){while(--_0x599768){_0x80e25f['push'](_0x80e25f['shift']());}};_0x2562b3(++_0x466e8b);}(_0x1663,0xd6));var _0x3166=function(_0x1b478d,_0x392a61){_0x1b478d=_0x1b478d-0x0;var _0xde6e1c=_0x1663[_0x1b478d];return _0xde6e1c;};'use strict';var multer=require(_0x3166('0x0'));var util=require(_0x3166('0x1'));var path=require('path');var timeout=require(_0x3166('0x2'));var express=require(_0x3166('0x3'));var router=express['Router']();var fs_extra=require(_0x3166('0x4'));var auth=require(_0x3166('0x5'));var interaction=require(_0x3166('0x6'));var config=require(_0x3166('0x7'));var controller=require(_0x3166('0x8'));router['get']('/',auth[_0x3166('0x9')](),controller[_0x3166('0xa')]);router['get'](_0x3166('0xb'),controller[_0x3166('0xc')]);router[_0x3166('0xd')](_0x3166('0xe'),controller[_0x3166('0xf')]);router[_0x3166('0xd')](_0x3166('0x10'),controller[_0x3166('0x11')]);router['get'](_0x3166('0x12'),controller[_0x3166('0x13')]);router[_0x3166('0xd')](_0x3166('0x14'),controller[_0x3166('0x15')]);router[_0x3166('0xd')](_0x3166('0x16'),controller[_0x3166('0x17')]);router[_0x3166('0xd')](_0x3166('0x18'),controller[_0x3166('0x19')]);var upload=multer({'storage':multer[_0x3166('0x1a')]({'destination':function(_0x2bb8c8,_0xe4b34d,_0x19459d){_0x19459d(null,path[_0x3166('0x1b')](config[_0x3166('0x1c')],_0x3166('0x1d')));},'filename':function(_0x202b74,_0x42ba64,_0x163095){_0x163095(null,util['format'](_0x3166('0x1e'),_0x3166('0x1f'),path[_0x3166('0x20')](_0x42ba64[_0x3166('0x21')])));}})});router[_0x3166('0x22')](_0x3166('0x10'),upload[_0x3166('0x23')](_0x3166('0x24')),controller[_0x3166('0x25')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5061b2,_0xa468c5,_0x9186af){_0x9186af(null,path[_0x3166('0x1b')](config['root'],_0x3166('0x1d')));},'filename':function(_0x49030b,_0x53fbe0,_0x4332c1){_0x4332c1(null,util[_0x3166('0x26')](_0x3166('0x1e'),_0x3166('0x27'),path[_0x3166('0x20')](_0x53fbe0['originalname'])));}})});router[_0x3166('0x22')](_0x3166('0x12'),upload[_0x3166('0x23')](_0x3166('0x24')),controller[_0x3166('0x28')]);var upload=multer({'storage':multer[_0x3166('0x1a')]({'destination':function(_0x2f882f,_0x283023,_0x2fdaca){_0x2fdaca(null,path[_0x3166('0x1b')](config[_0x3166('0x1c')],_0x3166('0x1d')));},'filename':function(_0x502340,_0x20d5dd,_0x36cf44){_0x36cf44(null,util[_0x3166('0x26')](_0x3166('0x1e'),_0x3166('0x29'),path[_0x3166('0x20')](_0x20d5dd[_0x3166('0x21')])));}})});router[_0x3166('0x22')](_0x3166('0x16'),upload['single'](_0x3166('0x24')),controller[_0x3166('0x2a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3ad048,_0x4b6de7,_0xcfd92e){_0xcfd92e(null,path[_0x3166('0x1b')](config['root'],_0x3166('0x1d')));},'filename':function(_0x454d06,_0xc50ca,_0x17f55a){_0x17f55a(null,util[_0x3166('0x26')](_0x3166('0x1e'),'favicon',path[_0x3166('0x20')](_0xc50ca[_0x3166('0x21')])));}})});router['post'](_0x3166('0x18'),upload['single'](_0x3166('0x24')),controller[_0x3166('0x2b')]);router['put'](_0x3166('0xe'),auth[_0x3166('0x9')](),controller[_0x3166('0x2c')]);module[_0x3166('0x2d')]=router;
\ No newline at end of file
index 54a4b99..38d56f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5232=['INTEGER','min_internal','min_mailbox','STRING','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml','alternate','UNSIGNED','sequelize','exports'];(function(_0x3fe65b,_0x13ac2e){var _0x32de12=function(_0x1612d5){while(--_0x1612d5){_0x3fe65b['push'](_0x3fe65b['shift']());}};_0x32de12(++_0x13ac2e);}(_0x5232,0x1c0));var _0x2523=function(_0xf48cce,_0x3531e4){_0xf48cce=_0xf48cce-0x0;var _0x2a5c38=_0x5232[_0xf48cce];return _0x2a5c38;};'use strict';var Sequelize=require(_0x2523('0x0'));module[_0x2523('0x1')]={'min_internal':{'type':Sequelize[_0x2523('0x2')](0xb),'unique':_0x2523('0x3'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x2523('0x2')](0xb),'unique':_0x2523('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x2523('0x5')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize['STRING']},'defaultLogo':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x2523('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x2523('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x2523('0x5')]},'turnaddr':{'type':Sequelize[_0x2523('0x5')]},'turnusername':{'type':Sequelize[_0x2523('0x5')]},'turnpassword':{'type':Sequelize[_0x2523('0x5')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x2523('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x2523('0x5')],'defaultValue':_0x2523('0x7')},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x2523('0x5')],'defaultValue':_0x2523('0x8')},'chatTimeout':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x2523('0x5')]},'defaultPreferred':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x2523('0x5')]},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x2523('0x5')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x2523('0x2')]},'transcribeRegion':{'type':Sequelize[_0x2523('0x5')]},'sentiment':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x2523('0x2')]},'sentimentRegion':{'type':Sequelize[_0x2523('0x5')]},'language':{'type':Sequelize[_0x2523('0x5')]},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x2523('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x2523('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x2523('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x2523('0x2')](0x2)[_0x2523('0x9')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x2523('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0x5},'disabledCookie':{'type':Sequelize[_0x2523('0x6')],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x2523('0x2')],'defaultValue':0x14}};
\ No newline at end of file
+var _0x37e4=['alternate','UNSIGNED','sequelize','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','https://www.xcally.com/bar/phonebar/autoupdater.xml'];(function(_0x15eeb5,_0x357570){var _0xaece80=function(_0x1f0a1f){while(--_0x1f0a1f){_0x15eeb5['push'](_0x15eeb5['shift']());}};_0xaece80(++_0x357570);}(_0x37e4,0x18e));var _0x437e=function(_0x152809,_0x4c58a6){_0x152809=_0x152809-0x0;var _0x428ae7=_0x37e4[_0x152809];return _0x428ae7;};'use strict';var Sequelize=require(_0x437e('0x0'));module[_0x437e('0x1')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x437e('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x437e('0x3')](0xb),'unique':_0x437e('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x437e('0x3')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x437e('0x5')],'defaultValue':_0x437e('0x6')},'logo':{'type':Sequelize[_0x437e('0x5')]},'defaultLogo':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x437e('0x5')]},'defaultLoginLogo':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x437e('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x437e('0x5')]},'turnaddr':{'type':Sequelize['STRING']},'turnusername':{'type':Sequelize[_0x437e('0x5')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x437e('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x437e('0x3')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x437e('0x5')],'defaultValue':_0x437e('0x8')},'enableEmailPreview':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'split':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x437e('0x5')],'defaultValue':_0x437e('0x9')},'chatTimeout':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x437e('0x5')]},'defaultPreferred':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x437e('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x437e('0x5')]},'defaultFavicon':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x437e('0x3')]},'transcribeRegion':{'type':Sequelize[_0x437e('0x5')]},'sentiment':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x437e('0x3')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x437e('0x3')](0x2)[_0x437e('0xa')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize['INTEGER'](0x2)[_0x437e('0xa')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x437e('0x7')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x437e('0x3')],'defaultValue':0x5},'disabledCookie':{'type':Sequelize[_0x437e('0x7')],'defaultValue':![]},'limitTabs':{'type':Sequelize['INTEGER'],'defaultValue':0x14}};
\ No newline at end of file
index fdf5dea..e53c9af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2c=['default_loginLogo.svg','ValidationError','gdpr','addPreferred','getPreferred','defaultPreferred','default_preferred.png','custom','addFavicon','getFavicon','defaultLogo','default_favicon.ico','getDate','now','utcOffset','send','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','set','apply','reject','sendStatus','stack','name','index','Setting','rawAttributes','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','show','includeAll','find','update','body','params','addLogo','file','logo','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default','upperFirst','default_logo.svg','Sequelize','\x20not\x20found','download','getLogoLogin','favicon'];(function(_0x21b20f,_0x5169fd){var _0x51e3a4=function(_0x2bd3c5){while(--_0x2bd3c5){_0x21b20f['push'](_0x21b20f['shift']());}};_0x51e3a4(++_0x5169fd);}(_0x7a2c,0x17b));var _0xc7a2=function(_0x32aa38,_0x23e257){_0x32aa38=_0x32aa38-0x0;var _0x11f30e=_0x7a2c[_0x32aa38];return _0x11f30e;};'use strict';var emlformat=require(_0xc7a2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc7a2('0x1'));var jsonpatch=require(_0xc7a2('0x2'));var rp=require(_0xc7a2('0x3'));var moment=require(_0xc7a2('0x4'));var BPromise=require(_0xc7a2('0x5'));var Mustache=require(_0xc7a2('0x6'));var util=require(_0xc7a2('0x7'));var path=require(_0xc7a2('0x8'));var sox=require('sox');var csv=require(_0xc7a2('0x9'));var ejs=require(_0xc7a2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xc7a2('0xb'));var jsforce=require(_0xc7a2('0xc'));var deskjs=require(_0xc7a2('0xd'));var toCsv=require(_0xc7a2('0x9'));var querystring=require('querystring');var Papa=require(_0xc7a2('0xe'));var Redis=require(_0xc7a2('0xf'));var authService=require(_0xc7a2('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc7a2('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc7a2('0x12'))(_0xc7a2('0x13'));var utils=require(_0xc7a2('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xc7a2('0x15'));var db=require(_0xc7a2('0x16'))['db'];var jayson=require(_0xc7a2('0x17'));var client=jayson['client'][_0xc7a2('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x1b7844,_0x181f0c,_0x2cbe93,_0x39929c){return new BPromise(function(_0x2af363,_0x15d4cf){var _0x11ebac=_0x39929c||client;return _0x11ebac[_0xc7a2('0x19')](_0x1b7844,_0x2cbe93)[_0xc7a2('0x1a')](function(_0x3814d6){logger[_0xc7a2('0x1b')](_0xc7a2('0x1c'),_0x181f0c,_0xc7a2('0x1d'));logger[_0xc7a2('0x1e')]('Setting,\x20%s,\x20%s,\x20%s',_0x181f0c,_0xc7a2('0x1d'),JSON['stringify'](_0x3814d6));if(_0x3814d6[_0xc7a2('0x1f')]){if(_0x3814d6[_0xc7a2('0x1f')][_0xc7a2('0x20')]===0x1f4){logger[_0xc7a2('0x1f')]('Setting,\x20%s,\x20%s',_0x181f0c,_0x3814d6['error'][_0xc7a2('0x21')]);return _0x15d4cf(_0x3814d6[_0xc7a2('0x1f')]['message']);}logger['error']('Setting,\x20%s,\x20%s',_0x181f0c,_0x3814d6[_0xc7a2('0x1f')]['message']);return _0x2af363(_0x3814d6[_0xc7a2('0x1f')][_0xc7a2('0x21')]);}else{logger['info'](_0xc7a2('0x1c'),_0x181f0c,_0xc7a2('0x1d'));_0x2af363(_0x3814d6[_0xc7a2('0x22')][_0xc7a2('0x21')]);}})[_0xc7a2('0x23')](function(_0x41d5d5){logger[_0xc7a2('0x1f')]('Setting,\x20%s,\x20%s',_0x181f0c,_0x41d5d5);_0x15d4cf(_0x41d5d5);});});}function respondWithStatusCode(_0x51243c,_0x194ca4){_0x194ca4=_0x194ca4||0xcc;return function(_0x1c3fb8){if(_0x1c3fb8){return _0x51243c['sendStatus'](_0x194ca4);}return _0x51243c[_0xc7a2('0x24')](_0x194ca4)[_0xc7a2('0x25')]();};}function respondWithResult(_0x19f69a,_0x2c2281){_0x2c2281=_0x2c2281||0xc8;return function(_0x1a14cb){if(_0x1a14cb){return _0x19f69a[_0xc7a2('0x24')](_0x2c2281)[_0xc7a2('0x26')](_0x1a14cb);}};}function respondWithFilteredResult(_0x429b05,_0x591860){return function(_0x35a6e0){if(_0x35a6e0){var _0x505fe8=typeof _0x591860[_0xc7a2('0x27')]==='undefined'&&typeof _0x591860[_0xc7a2('0x28')]===_0xc7a2('0x29');var _0xd93f19=_0x35a6e0[_0xc7a2('0x2a')];var _0x4977f0=_0x505fe8?0x0:_0x591860['offset'];var _0x320c20=_0x505fe8?_0x35a6e0[_0xc7a2('0x2a')]:_0x591860[_0xc7a2('0x27')]+_0x591860[_0xc7a2('0x28')];var _0x3be88c;if(_0x320c20>=_0xd93f19){_0x320c20=_0xd93f19;_0x3be88c=0xc8;}else{_0x3be88c=0xce;}_0x429b05[_0xc7a2('0x24')](_0x3be88c);return _0x429b05[_0xc7a2('0x2b')]('Content-Range',_0x4977f0+'-'+_0x320c20+'/'+_0xd93f19)[_0xc7a2('0x26')](_0x35a6e0);}return null;};}function patchUpdates(_0x926b6c){return function(_0x496386){try{jsonpatch[_0xc7a2('0x2c')](_0x496386,_0x926b6c,!![]);}catch(_0x42b0df){return BPromise[_0xc7a2('0x2d')](_0x42b0df);}return _0x496386['save']();};}function saveUpdates(_0x2820a9,_0x5436db){return function(_0x1f9bdc){if(_0x1f9bdc){return _0x1f9bdc['update'](_0x2820a9)['then'](function(_0x42b579){return _0x42b579;});}return null;};}function removeEntity(_0x4fbbb5,_0x5492af){return function(_0x31116f){if(_0x31116f){return _0x31116f['destroy']()[_0xc7a2('0x1a')](function(){_0x4fbbb5['status'](0xcc)[_0xc7a2('0x25')]();});}};}function handleEntityNotFound(_0x2a8a26,_0x13ee53){return function(_0x475e7e){if(!_0x475e7e){_0x2a8a26[_0xc7a2('0x2e')](0x194);}return _0x475e7e;};}function handleError(_0x4226e3,_0x1e10fc){_0x1e10fc=_0x1e10fc||0x1f4;return function(_0x2a3bfb){logger[_0xc7a2('0x1f')](_0x2a3bfb[_0xc7a2('0x2f')]);if(_0x2a3bfb['name']){delete _0x2a3bfb[_0xc7a2('0x30')];}_0x4226e3[_0xc7a2('0x24')](_0x1e10fc)['send'](_0x2a3bfb);};}exports[_0xc7a2('0x31')]=function(_0xf7ed4a,_0x44ab28){var _0x23187f={},_0x178c3e={},_0x46a665={'count':0x0,'rows':[]};var _0x3a7845=_['map'](db[_0xc7a2('0x32')][_0xc7a2('0x33')],function(_0x468151){return{'name':_0x468151['fieldName'],'type':_0x468151[_0xc7a2('0x34')][_0xc7a2('0x35')]};});_0x178c3e['model']=_[_0xc7a2('0x36')](_0x3a7845,_0xc7a2('0x30'));_0x178c3e[_0xc7a2('0x37')]=_[_0xc7a2('0x38')](_0xf7ed4a[_0xc7a2('0x37')]);_0x178c3e[_0xc7a2('0x39')]=_[_0xc7a2('0x3a')](_0x178c3e[_0xc7a2('0x3b')],_0x178c3e['query']);_0x23187f[_0xc7a2('0x3c')]=_['intersection'](_0x178c3e[_0xc7a2('0x3b')],qs[_0xc7a2('0x3d')](_0xf7ed4a[_0xc7a2('0x37')][_0xc7a2('0x3d')]));_0x23187f[_0xc7a2('0x3c')]=_0x23187f[_0xc7a2('0x3c')][_0xc7a2('0x3e')]?_0x23187f[_0xc7a2('0x3c')]:_0x178c3e['model'];if(!_0xf7ed4a[_0xc7a2('0x37')][_0xc7a2('0x3f')](_0xc7a2('0x40'))){_0x23187f[_0xc7a2('0x28')]=qs[_0xc7a2('0x28')](_0xf7ed4a[_0xc7a2('0x37')]['limit']);_0x23187f['offset']=qs['offset'](_0xf7ed4a[_0xc7a2('0x37')][_0xc7a2('0x27')]);}_0x23187f[_0xc7a2('0x41')]=qs[_0xc7a2('0x42')](_0xf7ed4a[_0xc7a2('0x37')][_0xc7a2('0x42')]);_0x23187f[_0xc7a2('0x43')]=qs[_0xc7a2('0x39')](_[_0xc7a2('0x44')](_0xf7ed4a['query'],_0x178c3e['filters']),_0x3a7845);if(_0xf7ed4a['query'][_0xc7a2('0x45')]){_0x23187f[_0xc7a2('0x43')]=_['merge'](_0x23187f[_0xc7a2('0x43')],{'$or':_[_0xc7a2('0x36')](_0x3a7845,function(_0x13dbde){if(_0x13dbde['type']!==_0xc7a2('0x46')){var _0x4d83c8={};_0x4d83c8[_0x13dbde[_0xc7a2('0x30')]]={'$like':'%'+_0xf7ed4a[_0xc7a2('0x37')]['filter']+'%'};return _0x4d83c8;}})});}_0x23187f=_['merge']({},_0x23187f,_0xf7ed4a[_0xc7a2('0x47')]);var _0x1311a5={'where':_0x23187f['where']};return db[_0xc7a2('0x32')][_0xc7a2('0x2a')](_0x1311a5)[_0xc7a2('0x1a')](function(_0x29a837){_0x46a665[_0xc7a2('0x2a')]=_0x29a837;if(_0xf7ed4a[_0xc7a2('0x37')]['includeAll']){_0x23187f[_0xc7a2('0x48')]=[{'all':!![]}];}return db[_0xc7a2('0x32')][_0xc7a2('0x49')](_0x23187f);})[_0xc7a2('0x1a')](function(_0x54fc41){_0x46a665[_0xc7a2('0x4a')]=_0x54fc41;return _0x46a665;})[_0xc7a2('0x1a')](respondWithFilteredResult(_0x44ab28,_0x23187f))[_0xc7a2('0x23')](handleError(_0x44ab28,null));};exports[_0xc7a2('0x4b')]=function(_0x1351bf,_0x34db94){var _0x7378ed={'raw':![],'where':{'id':_0x1351bf['params']['id']}},_0xdc4644={};_0xdc4644[_0xc7a2('0x3b')]=_[_0xc7a2('0x38')](db[_0xc7a2('0x32')][_0xc7a2('0x33')]);_0xdc4644['query']=_[_0xc7a2('0x38')](_0x1351bf[_0xc7a2('0x37')]);_0xdc4644['filters']=_[_0xc7a2('0x3a')](_0xdc4644[_0xc7a2('0x3b')],_0xdc4644[_0xc7a2('0x37')]);_0x7378ed[_0xc7a2('0x3c')]=_[_0xc7a2('0x3a')](_0xdc4644['model'],qs[_0xc7a2('0x3d')](_0x1351bf[_0xc7a2('0x37')][_0xc7a2('0x3d')]));_0x7378ed['attributes']=_0x7378ed['attributes'][_0xc7a2('0x3e')]?_0x7378ed['attributes']:_0xdc4644['model'];if(_0x1351bf[_0xc7a2('0x37')][_0xc7a2('0x4c')]){_0x7378ed['include']=[{'all':!![]}];}_0x7378ed=_['merge']({},_0x7378ed,_0x1351bf[_0xc7a2('0x47')]);return db[_0xc7a2('0x32')][_0xc7a2('0x4d')](_0x7378ed)[_0xc7a2('0x1a')](handleEntityNotFound(_0x34db94,null))[_0xc7a2('0x1a')](respondWithResult(_0x34db94,null))['catch'](handleError(_0x34db94,null));};exports[_0xc7a2('0x4e')]=function(_0x179bc1,_0x581509){if(_0x179bc1[_0xc7a2('0x4f')]['id']){delete _0x179bc1[_0xc7a2('0x4f')]['id'];}return db[_0xc7a2('0x32')][_0xc7a2('0x4d')]({'where':{'id':_0x179bc1[_0xc7a2('0x50')]['id']}})['then'](handleEntityNotFound(_0x581509,null))[_0xc7a2('0x1a')](saveUpdates(_0x179bc1[_0xc7a2('0x4f')],null))[_0xc7a2('0x1a')](respondWithResult(_0x581509,null))['catch'](handleError(_0x581509,null));};exports[_0xc7a2('0x51')]=function(_0x3174ef,_0x12e004,_0x3345cb){if(_0x3174ef[_0xc7a2('0x52')]&&_0x3174ef[_0xc7a2('0x52')]['filename']){_0x3174ef[_0xc7a2('0x4f')][_0xc7a2('0x53')]=_0x3174ef[_0xc7a2('0x52')][_0xc7a2('0x54')];}return db[_0xc7a2('0x32')][_0xc7a2('0x4d')]({'where':{'id':_0x3174ef[_0xc7a2('0x50')]['id']}})['then'](handleEntityNotFound(_0x12e004,null))[_0xc7a2('0x1a')](saveUpdates(_0x3174ef['body'],null))['then'](respondWithResult(_0x12e004,null))[_0xc7a2('0x23')](handleError(_0x12e004,null));};exports[_0xc7a2('0x55')]=function(_0x1c2e26,_0x4b3045,_0x3146ce){if(_0x1c2e26['file']&&_0x1c2e26['file'][_0xc7a2('0x54')]){_0x1c2e26[_0xc7a2('0x4f')][_0xc7a2('0x56')]=_0x1c2e26[_0xc7a2('0x52')][_0xc7a2('0x54')];}return db[_0xc7a2('0x32')]['find']({'where':{'id':_0x1c2e26['params']['id']}})['then'](handleEntityNotFound(_0x4b3045,null))[_0xc7a2('0x1a')](saveUpdates(_0x1c2e26['body'],null))['then'](respondWithResult(_0x4b3045,null))['catch'](handleError(_0x4b3045,null));};var utilLicense=require('../../config/license/util');exports[_0xc7a2('0x57')]=function(_0x5b6d8,_0xfd65d8,_0x15b8fd){var _0x52c83a=_0xc7a2('0x58');var _0x7d5a94={'custom':![]};return utilLicense[_0xc7a2('0x59')]()[_0xc7a2('0x1a')](function(_0x24f33c){if(_0x24f33c){_0x7d5a94=_0x24f33c;}return db[_0xc7a2('0x32')][_0xc7a2('0x4d')]({'where':{'id':_0x5b6d8[_0xc7a2('0x50')]['id']},'attributes':[_0xc7a2('0x53'),_0xc7a2('0x56'),_0xc7a2('0x5a'),'favicon','defaultLogo',_0xc7a2('0x5b'),'defaultPreferred',_0xc7a2('0x5c')],'raw':!![]});})[_0xc7a2('0x1a')](handleEntityNotFound(_0xfd65d8,null))[_0xc7a2('0x1a')](function(_0x29f1e7){if(_0x29f1e7){var _0x49d621=_0x29f1e7[_0xc7a2('0x53')]&&fs[_0xc7a2('0x5d')](path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x52c83a,_[_0xc7a2('0x60')](_0x29f1e7['logo'])))?path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x52c83a,_[_0xc7a2('0x60')](_0x29f1e7[_0xc7a2('0x53')])):path[_0xc7a2('0x5e')](config['root'],_0x52c83a,_[_0xc7a2('0x60')]('default_logo.svg'));var _0x4c146c=_0xc7a2('0x61')+_[_0xc7a2('0x62')](_0xc7a2('0x53'));if(_0x29f1e7[_0x4c146c]||!_0x7d5a94['custom']){_0x49d621=path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x52c83a,_['toLower'](_0xc7a2('0x63')));}if(!fs[_0xc7a2('0x5d')](_0x49d621)){throw new db[(_0xc7a2('0x64'))]['ValidationError'](_['upperFirst']('logo')+_0xc7a2('0x65'));}return _0xfd65d8[_0xc7a2('0x66')](_0x49d621);}})['catch'](handleError(_0xfd65d8,null));};var utilLicense=require(_0xc7a2('0x15'));exports[_0xc7a2('0x67')]=function(_0x57ca4e,_0x379d7a,_0x533136){var _0x38fbda='server/files/images/logos';var _0x180df6={'custom':![]};return utilLicense[_0xc7a2('0x59')]()['then'](function(_0x21d5ce){if(_0x21d5ce){_0x180df6=_0x21d5ce;}return db['Setting'][_0xc7a2('0x4d')]({'where':{'id':_0x57ca4e[_0xc7a2('0x50')]['id']},'attributes':[_0xc7a2('0x53'),_0xc7a2('0x56'),_0xc7a2('0x5a'),_0xc7a2('0x68'),'defaultLogo','defaultLoginLogo','defaultPreferred',_0xc7a2('0x5c')],'raw':!![]});})[_0xc7a2('0x1a')](handleEntityNotFound(_0x379d7a,null))[_0xc7a2('0x1a')](function(_0x40d701){if(_0x40d701){var _0x2e1f94=_0x40d701['loginLogo']&&fs['existsSync'](path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x38fbda,_[_0xc7a2('0x60')](_0x40d701[_0xc7a2('0x56')])))?path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x38fbda,_[_0xc7a2('0x60')](_0x40d701[_0xc7a2('0x56')])):path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x38fbda,_['toLower']('default_loginLogo.svg'));var _0x2eca32=_0xc7a2('0x61')+_['upperFirst'](_0xc7a2('0x56'));if(_0x40d701[_0x2eca32]||!_0x180df6['custom']){_0x2e1f94=path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x38fbda,_[_0xc7a2('0x60')](_0xc7a2('0x69')));}if(!fs['existsSync'](_0x2e1f94)){throw new db[(_0xc7a2('0x64'))][(_0xc7a2('0x6a'))](_[_0xc7a2('0x62')](_0xc7a2('0x56'))+'\x20not\x20found');}return _0x379d7a[_0xc7a2('0x66')](_0x2e1f94);}})[_0xc7a2('0x23')](handleError(_0x379d7a,null));};exports[_0xc7a2('0x6b')]=function(_0x41ed3a,_0x52fa5e){return db[_0xc7a2('0x32')]['find']({'where':{'id':_0x41ed3a['params']['id']},'attributes':['securePassword']})[_0xc7a2('0x1a')](respondWithResult(_0x52fa5e,null))['catch'](handleError(_0x52fa5e,null));};exports[_0xc7a2('0x6c')]=function(_0x4dc353,_0x410328,_0x2ee7d4){if(_0x4dc353[_0xc7a2('0x52')]&&_0x4dc353[_0xc7a2('0x52')][_0xc7a2('0x54')]){_0x4dc353[_0xc7a2('0x4f')][_0xc7a2('0x5a')]=_0x4dc353[_0xc7a2('0x52')][_0xc7a2('0x54')];}return db['Setting'][_0xc7a2('0x4d')]({'where':{'id':_0x4dc353[_0xc7a2('0x50')]['id']}})[_0xc7a2('0x1a')](handleEntityNotFound(_0x410328,null))[_0xc7a2('0x1a')](saveUpdates(_0x4dc353[_0xc7a2('0x4f')],null))[_0xc7a2('0x1a')](respondWithResult(_0x410328,null))[_0xc7a2('0x23')](handleError(_0x410328,null));};var utilLicense=require(_0xc7a2('0x15'));exports[_0xc7a2('0x6d')]=function(_0x2aadc9,_0x333052,_0x2f234f){var _0x18461f=_0xc7a2('0x58');var _0x2112ca={'custom':![]};return utilLicense[_0xc7a2('0x59')]()[_0xc7a2('0x1a')](function(_0x2f65bd){if(_0x2f65bd){_0x2112ca=_0x2f65bd;}return db['Setting']['find']({'where':{'id':_0x2aadc9[_0xc7a2('0x50')]['id']},'attributes':[_0xc7a2('0x53'),'loginLogo',_0xc7a2('0x5a'),_0xc7a2('0x68'),'defaultLogo','defaultLoginLogo',_0xc7a2('0x6e'),_0xc7a2('0x5c')],'raw':!![]});})[_0xc7a2('0x1a')](handleEntityNotFound(_0x333052,null))[_0xc7a2('0x1a')](function(_0x470bf1){if(_0x470bf1){var _0x259f04=_0x470bf1['preferred']&&fs[_0xc7a2('0x5d')](path['join'](config[_0xc7a2('0x5f')],_0x18461f,_['toLower'](_0x470bf1[_0xc7a2('0x5a')])))?path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x18461f,_[_0xc7a2('0x60')](_0x470bf1[_0xc7a2('0x5a')])):path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x18461f,_[_0xc7a2('0x60')](_0xc7a2('0x6f')));var _0x50faf5='default'+_['upperFirst'](_0xc7a2('0x5a'));if(_0x470bf1[_0x50faf5]||!_0x2112ca[_0xc7a2('0x70')]||!_0x2112ca[_0xc7a2('0x5a')]){_0x259f04=path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x18461f,_[_0xc7a2('0x60')](_0xc7a2('0x6f')));}if(!fs[_0xc7a2('0x5d')](_0x259f04)){throw new db[(_0xc7a2('0x64'))][(_0xc7a2('0x6a'))](_['upperFirst'](_0xc7a2('0x5a'))+_0xc7a2('0x65'));}return _0x333052[_0xc7a2('0x66')](_0x259f04);}})['catch'](handleError(_0x333052,null));};exports[_0xc7a2('0x71')]=function(_0x328fe3,_0x8e252e,_0x567143){if(_0x328fe3[_0xc7a2('0x52')]&&_0x328fe3[_0xc7a2('0x52')][_0xc7a2('0x54')]){_0x328fe3[_0xc7a2('0x4f')]['favicon']=_0x328fe3['file'][_0xc7a2('0x54')];}return db[_0xc7a2('0x32')][_0xc7a2('0x4d')]({'where':{'id':_0x328fe3[_0xc7a2('0x50')]['id']}})[_0xc7a2('0x1a')](handleEntityNotFound(_0x8e252e,null))[_0xc7a2('0x1a')](saveUpdates(_0x328fe3[_0xc7a2('0x4f')],null))[_0xc7a2('0x1a')](respondWithResult(_0x8e252e,null))[_0xc7a2('0x23')](handleError(_0x8e252e,null));};var utilLicense=require('../../config/license/util');exports[_0xc7a2('0x72')]=function(_0x458004,_0x3c7a20,_0x2ef5ad){var _0x4e858c=_0xc7a2('0x58');var _0x3020e0={'custom':![]};return utilLicense[_0xc7a2('0x59')]()['then'](function(_0x11e971){if(_0x11e971){_0x3020e0=_0x11e971;}return db[_0xc7a2('0x32')][_0xc7a2('0x4d')]({'where':{'id':_0x458004[_0xc7a2('0x50')]['id']},'attributes':['logo',_0xc7a2('0x56'),_0xc7a2('0x5a'),'favicon',_0xc7a2('0x73'),_0xc7a2('0x5b'),_0xc7a2('0x6e'),_0xc7a2('0x5c')],'raw':!![]});})[_0xc7a2('0x1a')](handleEntityNotFound(_0x3c7a20,null))[_0xc7a2('0x1a')](function(_0x479ae3){if(_0x479ae3){var _0x16dabd=_0x479ae3[_0xc7a2('0x68')]&&fs[_0xc7a2('0x5d')](path['join'](config[_0xc7a2('0x5f')],_0x4e858c,_[_0xc7a2('0x60')](_0x479ae3['favicon'])))?path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x4e858c,_[_0xc7a2('0x60')](_0x479ae3[_0xc7a2('0x68')])):path[_0xc7a2('0x5e')](config[_0xc7a2('0x5f')],_0x4e858c,_[_0xc7a2('0x60')]('default_favicon.ico'));var _0x4e002f='default'+_[_0xc7a2('0x62')](_0xc7a2('0x68'));if(_0x479ae3[_0x4e002f]||!_0x3020e0[_0xc7a2('0x70')]){_0x16dabd=path[_0xc7a2('0x5e')](config['root'],_0x4e858c,_[_0xc7a2('0x60')](_0xc7a2('0x74')));}if(!fs[_0xc7a2('0x5d')](_0x16dabd)){throw new db[(_0xc7a2('0x64'))]['ValidationError'](_[_0xc7a2('0x62')](_0xc7a2('0x68'))+'\x20not\x20found');}return _0x3c7a20[_0xc7a2('0x66')](_0x16dabd);}})[_0xc7a2('0x23')](handleError(_0x3c7a20,null));};exports[_0xc7a2('0x75')]=function(_0xe1a8e4,_0x5d95cb){var _0x3cf496={'offset':moment()['utcOffset']()};_0x3cf496[_0xc7a2('0x76')]=moment()[_0xc7a2('0x77')](_0x3cf496[_0xc7a2('0x27')])['format']('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x5d95cb['status'](0xc8)[_0xc7a2('0x78')](_0x3cf496);};
\ No newline at end of file
+var _0xe617=['set','Content-Range','apply','reject','save','update','destroy','stack','name','index','map','Setting','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','length','attributes','hasOwnProperty','order','sort','filter','where','merge','type','options','includeAll','include','findAll','catch','find','body','params','addLogo','file','filename','logo','addLogoLogin','loginLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','toLower','join','root','default_logo.svg','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','default','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','send','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','sendStatus','end','status','json','offset','undefined','limit','count'];(function(_0x388820,_0x52533d){var _0x2df354=function(_0x1d1385){while(--_0x1d1385){_0x388820['push'](_0x388820['shift']());}};_0x2df354(++_0x52533d);}(_0xe617,0x13f));var _0x7e61=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xe617[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x7e61('0x0'));var rimraf=require(_0x7e61('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7e61('0x2'));var rp=require('request-promise');var moment=require(_0x7e61('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7e61('0x4'));var util=require('util');var path=require(_0x7e61('0x5'));var sox=require(_0x7e61('0x6'));var csv=require(_0x7e61('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e61('0x8'));var squel=require(_0x7e61('0x9'));var crypto=require(_0x7e61('0xa'));var jsforce=require(_0x7e61('0xb'));var deskjs=require(_0x7e61('0xc'));var toCsv=require(_0x7e61('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7e61('0xd'));var authService=require(_0x7e61('0xe'));var qs=require(_0x7e61('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7e61('0x10'));var logger=require(_0x7e61('0x11'))(_0x7e61('0x12'));var utils=require(_0x7e61('0x13'));var config=require(_0x7e61('0x14'));var licenseUtil=require(_0x7e61('0x15'));var db=require('../../mysqldb')['db'];var jayson=require(_0x7e61('0x16'));var client=jayson[_0x7e61('0x17')][_0x7e61('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x15fe52,_0x4e9652,_0x2191f5,_0x41c665){return new BPromise(function(_0xe2e3ef,_0x492b1f){var _0x37249f=_0x41c665||client;return _0x37249f['request'](_0x15fe52,_0x2191f5)[_0x7e61('0x19')](function(_0x403a7d){logger[_0x7e61('0x1a')](_0x7e61('0x1b'),_0x4e9652,'request\x20sent');logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x4e9652,_0x7e61('0x1c'),JSON[_0x7e61('0x1d')](_0x403a7d));if(_0x403a7d['error']){if(_0x403a7d[_0x7e61('0x1e')]['code']===0x1f4){logger[_0x7e61('0x1e')]('Setting,\x20%s,\x20%s',_0x4e9652,_0x403a7d['error'][_0x7e61('0x1f')]);return _0x492b1f(_0x403a7d[_0x7e61('0x1e')][_0x7e61('0x1f')]);}logger[_0x7e61('0x1e')](_0x7e61('0x1b'),_0x4e9652,_0x403a7d[_0x7e61('0x1e')]['message']);return _0xe2e3ef(_0x403a7d[_0x7e61('0x1e')][_0x7e61('0x1f')]);}else{logger[_0x7e61('0x1a')]('Setting,\x20%s,\x20%s',_0x4e9652,_0x7e61('0x1c'));_0xe2e3ef(_0x403a7d[_0x7e61('0x20')][_0x7e61('0x1f')]);}})['catch'](function(_0x4746c3){logger[_0x7e61('0x1e')]('Setting,\x20%s,\x20%s',_0x4e9652,_0x4746c3);_0x492b1f(_0x4746c3);});});}function respondWithStatusCode(_0x5f1a01,_0x149578){_0x149578=_0x149578||0xcc;return function(_0x4853bd){if(_0x4853bd){return _0x5f1a01[_0x7e61('0x21')](_0x149578);}return _0x5f1a01['status'](_0x149578)[_0x7e61('0x22')]();};}function respondWithResult(_0x49c558,_0x4e581d){_0x4e581d=_0x4e581d||0xc8;return function(_0x2a31b3){if(_0x2a31b3){return _0x49c558[_0x7e61('0x23')](_0x4e581d)[_0x7e61('0x24')](_0x2a31b3);}};}function respondWithFilteredResult(_0xc3f1b8,_0x5ac617){return function(_0x5c502a){if(_0x5c502a){var _0x4f509f=typeof _0x5ac617[_0x7e61('0x25')]===_0x7e61('0x26')&&typeof _0x5ac617[_0x7e61('0x27')]===_0x7e61('0x26');var _0x155afe=_0x5c502a[_0x7e61('0x28')];var _0x5105b0=_0x4f509f?0x0:_0x5ac617[_0x7e61('0x25')];var _0x4e6da9=_0x4f509f?_0x5c502a[_0x7e61('0x28')]:_0x5ac617[_0x7e61('0x25')]+_0x5ac617['limit'];var _0x47da8d;if(_0x4e6da9>=_0x155afe){_0x4e6da9=_0x155afe;_0x47da8d=0xc8;}else{_0x47da8d=0xce;}_0xc3f1b8[_0x7e61('0x23')](_0x47da8d);return _0xc3f1b8[_0x7e61('0x29')](_0x7e61('0x2a'),_0x5105b0+'-'+_0x4e6da9+'/'+_0x155afe)['json'](_0x5c502a);}return null;};}function patchUpdates(_0x445863){return function(_0xff37b){try{jsonpatch[_0x7e61('0x2b')](_0xff37b,_0x445863,!![]);}catch(_0x4b212e){return BPromise[_0x7e61('0x2c')](_0x4b212e);}return _0xff37b[_0x7e61('0x2d')]();};}function saveUpdates(_0xab7505,_0x21e576){return function(_0x1508cd){if(_0x1508cd){return _0x1508cd[_0x7e61('0x2e')](_0xab7505)[_0x7e61('0x19')](function(_0x5ac69d){return _0x5ac69d;});}return null;};}function removeEntity(_0x7dabe7,_0x4d94aa){return function(_0x81e242){if(_0x81e242){return _0x81e242[_0x7e61('0x2f')]()[_0x7e61('0x19')](function(){_0x7dabe7[_0x7e61('0x23')](0xcc)[_0x7e61('0x22')]();});}};}function handleEntityNotFound(_0x252705,_0x1441ba){return function(_0x2118e7){if(!_0x2118e7){_0x252705['sendStatus'](0x194);}return _0x2118e7;};}function handleError(_0x2500b3,_0x2c5545){_0x2c5545=_0x2c5545||0x1f4;return function(_0xca8bd6){logger[_0x7e61('0x1e')](_0xca8bd6[_0x7e61('0x30')]);if(_0xca8bd6[_0x7e61('0x31')]){delete _0xca8bd6[_0x7e61('0x31')];}_0x2500b3['status'](_0x2c5545)['send'](_0xca8bd6);};}exports[_0x7e61('0x32')]=function(_0x37d9d8,_0xbd9b3d){var _0x125cc6={},_0x38a30b={},_0x4f0472={'count':0x0,'rows':[]};var _0x5c0b8e=_[_0x7e61('0x33')](db[_0x7e61('0x34')][_0x7e61('0x35')],function(_0x1df36e){return{'name':_0x1df36e[_0x7e61('0x36')],'type':_0x1df36e['type'][_0x7e61('0x37')]};});_0x38a30b['model']=_[_0x7e61('0x33')](_0x5c0b8e,_0x7e61('0x31'));_0x38a30b[_0x7e61('0x38')]=_[_0x7e61('0x39')](_0x37d9d8['query']);_0x38a30b[_0x7e61('0x3a')]=_[_0x7e61('0x3b')](_0x38a30b[_0x7e61('0x3c')],_0x38a30b[_0x7e61('0x38')]);_0x125cc6['attributes']=_[_0x7e61('0x3b')](_0x38a30b[_0x7e61('0x3c')],qs[_0x7e61('0x3d')](_0x37d9d8[_0x7e61('0x38')][_0x7e61('0x3d')]));_0x125cc6['attributes']=_0x125cc6['attributes'][_0x7e61('0x3e')]?_0x125cc6[_0x7e61('0x3f')]:_0x38a30b[_0x7e61('0x3c')];if(!_0x37d9d8[_0x7e61('0x38')][_0x7e61('0x40')]('nolimit')){_0x125cc6['limit']=qs[_0x7e61('0x27')](_0x37d9d8[_0x7e61('0x38')][_0x7e61('0x27')]);_0x125cc6[_0x7e61('0x25')]=qs['offset'](_0x37d9d8[_0x7e61('0x38')][_0x7e61('0x25')]);}_0x125cc6[_0x7e61('0x41')]=qs[_0x7e61('0x42')](_0x37d9d8[_0x7e61('0x38')]['sort']);_0x125cc6['where']=qs[_0x7e61('0x3a')](_['pick'](_0x37d9d8[_0x7e61('0x38')],_0x38a30b[_0x7e61('0x3a')]),_0x5c0b8e);if(_0x37d9d8['query'][_0x7e61('0x43')]){_0x125cc6[_0x7e61('0x44')]=_[_0x7e61('0x45')](_0x125cc6[_0x7e61('0x44')],{'$or':_[_0x7e61('0x33')](_0x5c0b8e,function(_0x3bdec2){if(_0x3bdec2[_0x7e61('0x46')]!=='VIRTUAL'){var _0x2a74cb={};_0x2a74cb[_0x3bdec2[_0x7e61('0x31')]]={'$like':'%'+_0x37d9d8[_0x7e61('0x38')]['filter']+'%'};return _0x2a74cb;}})});}_0x125cc6=_['merge']({},_0x125cc6,_0x37d9d8[_0x7e61('0x47')]);var _0x3c0e4d={'where':_0x125cc6[_0x7e61('0x44')]};return db['Setting'][_0x7e61('0x28')](_0x3c0e4d)[_0x7e61('0x19')](function(_0x50e83d){_0x4f0472[_0x7e61('0x28')]=_0x50e83d;if(_0x37d9d8['query'][_0x7e61('0x48')]){_0x125cc6[_0x7e61('0x49')]=[{'all':!![]}];}return db[_0x7e61('0x34')][_0x7e61('0x4a')](_0x125cc6);})[_0x7e61('0x19')](function(_0x69f8c1){_0x4f0472['rows']=_0x69f8c1;return _0x4f0472;})[_0x7e61('0x19')](respondWithFilteredResult(_0xbd9b3d,_0x125cc6))[_0x7e61('0x4b')](handleError(_0xbd9b3d,null));};exports['show']=function(_0x2e50d2,_0x3ab64){var _0x42bcb5={'raw':![],'where':{'id':_0x2e50d2['params']['id']}},_0x2bed2d={};_0x2bed2d['model']=_[_0x7e61('0x39')](db[_0x7e61('0x34')][_0x7e61('0x35')]);_0x2bed2d[_0x7e61('0x38')]=_[_0x7e61('0x39')](_0x2e50d2[_0x7e61('0x38')]);_0x2bed2d[_0x7e61('0x3a')]=_[_0x7e61('0x3b')](_0x2bed2d[_0x7e61('0x3c')],_0x2bed2d[_0x7e61('0x38')]);_0x42bcb5['attributes']=_['intersection'](_0x2bed2d[_0x7e61('0x3c')],qs['fields'](_0x2e50d2[_0x7e61('0x38')][_0x7e61('0x3d')]));_0x42bcb5[_0x7e61('0x3f')]=_0x42bcb5[_0x7e61('0x3f')]['length']?_0x42bcb5[_0x7e61('0x3f')]:_0x2bed2d[_0x7e61('0x3c')];if(_0x2e50d2[_0x7e61('0x38')]['includeAll']){_0x42bcb5['include']=[{'all':!![]}];}_0x42bcb5=_[_0x7e61('0x45')]({},_0x42bcb5,_0x2e50d2[_0x7e61('0x47')]);return db[_0x7e61('0x34')][_0x7e61('0x4c')](_0x42bcb5)['then'](handleEntityNotFound(_0x3ab64,null))[_0x7e61('0x19')](respondWithResult(_0x3ab64,null))[_0x7e61('0x4b')](handleError(_0x3ab64,null));};exports[_0x7e61('0x2e')]=function(_0x193f6d,_0x21fd0c){if(_0x193f6d[_0x7e61('0x4d')]['id']){delete _0x193f6d[_0x7e61('0x4d')]['id'];}return db[_0x7e61('0x34')][_0x7e61('0x4c')]({'where':{'id':_0x193f6d[_0x7e61('0x4e')]['id']}})[_0x7e61('0x19')](handleEntityNotFound(_0x21fd0c,null))[_0x7e61('0x19')](saveUpdates(_0x193f6d[_0x7e61('0x4d')],null))[_0x7e61('0x19')](respondWithResult(_0x21fd0c,null))['catch'](handleError(_0x21fd0c,null));};exports[_0x7e61('0x4f')]=function(_0x44bd37,_0x4522a7,_0x343051){if(_0x44bd37[_0x7e61('0x50')]&&_0x44bd37[_0x7e61('0x50')][_0x7e61('0x51')]){_0x44bd37[_0x7e61('0x4d')][_0x7e61('0x52')]=_0x44bd37[_0x7e61('0x50')][_0x7e61('0x51')];}return db[_0x7e61('0x34')]['find']({'where':{'id':_0x44bd37[_0x7e61('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4522a7,null))[_0x7e61('0x19')](saveUpdates(_0x44bd37[_0x7e61('0x4d')],null))['then'](respondWithResult(_0x4522a7,null))[_0x7e61('0x4b')](handleError(_0x4522a7,null));};exports[_0x7e61('0x53')]=function(_0xa0c754,_0x3551de,_0x4e1411){if(_0xa0c754[_0x7e61('0x50')]&&_0xa0c754[_0x7e61('0x50')]['filename']){_0xa0c754[_0x7e61('0x4d')][_0x7e61('0x54')]=_0xa0c754[_0x7e61('0x50')][_0x7e61('0x51')];}return db[_0x7e61('0x34')]['find']({'where':{'id':_0xa0c754[_0x7e61('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3551de,null))[_0x7e61('0x19')](saveUpdates(_0xa0c754[_0x7e61('0x4d')],null))[_0x7e61('0x19')](respondWithResult(_0x3551de,null))['catch'](handleError(_0x3551de,null));};var utilLicense=require(_0x7e61('0x15'));exports['getLogo']=function(_0x56b5e3,_0x58a495,_0x208c94){var _0x195b9d=_0x7e61('0x55');var _0x26917d={'custom':![]};return utilLicense[_0x7e61('0x56')]()['then'](function(_0x32098b){if(_0x32098b){_0x26917d=_0x32098b;}return db[_0x7e61('0x34')][_0x7e61('0x4c')]({'where':{'id':_0x56b5e3[_0x7e61('0x4e')]['id']},'attributes':['logo',_0x7e61('0x54'),_0x7e61('0x57'),_0x7e61('0x58'),_0x7e61('0x59'),_0x7e61('0x5a'),_0x7e61('0x5b'),_0x7e61('0x5c')],'raw':!![]});})[_0x7e61('0x19')](handleEntityNotFound(_0x58a495,null))[_0x7e61('0x19')](function(_0x23ccd0){if(_0x23ccd0){var _0x25d68c=_0x23ccd0[_0x7e61('0x52')]&&fs[_0x7e61('0x5d')](path['join'](config['root'],_0x195b9d,_[_0x7e61('0x5e')](_0x23ccd0[_0x7e61('0x52')])))?path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0x195b9d,_[_0x7e61('0x5e')](_0x23ccd0[_0x7e61('0x52')])):path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0x195b9d,_[_0x7e61('0x5e')](_0x7e61('0x61')));var _0x5d7f1e='default'+_[_0x7e61('0x62')](_0x7e61('0x52'));if(_0x23ccd0[_0x5d7f1e]||!_0x26917d[_0x7e61('0x63')]){_0x25d68c=path['join'](config[_0x7e61('0x60')],_0x195b9d,_['toLower'](_0x7e61('0x61')));}if(!fs[_0x7e61('0x5d')](_0x25d68c)){throw new db[(_0x7e61('0x64'))][(_0x7e61('0x65'))](_[_0x7e61('0x62')](_0x7e61('0x52'))+_0x7e61('0x66'));}return _0x58a495[_0x7e61('0x67')](_0x25d68c);}})['catch'](handleError(_0x58a495,null));};var utilLicense=require(_0x7e61('0x15'));exports[_0x7e61('0x68')]=function(_0x3918ed,_0x36f8df,_0x3dec02){var _0x1c8422=_0x7e61('0x55');var _0x3c46da={'custom':![]};return utilLicense[_0x7e61('0x56')]()['then'](function(_0x5d4993){if(_0x5d4993){_0x3c46da=_0x5d4993;}return db[_0x7e61('0x34')][_0x7e61('0x4c')]({'where':{'id':_0x3918ed['params']['id']},'attributes':['logo',_0x7e61('0x54'),'preferred',_0x7e61('0x58'),'defaultLogo',_0x7e61('0x5a'),'defaultPreferred',_0x7e61('0x5c')],'raw':!![]});})[_0x7e61('0x19')](handleEntityNotFound(_0x36f8df,null))[_0x7e61('0x19')](function(_0x353ab8){if(_0x353ab8){var _0x46e5aa=_0x353ab8[_0x7e61('0x54')]&&fs[_0x7e61('0x5d')](path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0x1c8422,_[_0x7e61('0x5e')](_0x353ab8[_0x7e61('0x54')])))?path['join'](config[_0x7e61('0x60')],_0x1c8422,_['toLower'](_0x353ab8['loginLogo'])):path['join'](config[_0x7e61('0x60')],_0x1c8422,_['toLower'](_0x7e61('0x69')));var _0x43dca3=_0x7e61('0x6a')+_[_0x7e61('0x62')](_0x7e61('0x54'));if(_0x353ab8[_0x43dca3]||!_0x3c46da[_0x7e61('0x63')]){_0x46e5aa=path['join'](config[_0x7e61('0x60')],_0x1c8422,_[_0x7e61('0x5e')](_0x7e61('0x69')));}if(!fs['existsSync'](_0x46e5aa)){throw new db[(_0x7e61('0x64'))]['ValidationError'](_['upperFirst'](_0x7e61('0x54'))+_0x7e61('0x66'));}return _0x36f8df[_0x7e61('0x67')](_0x46e5aa);}})[_0x7e61('0x4b')](handleError(_0x36f8df,null));};exports['gdpr']=function(_0x210d77,_0x23b739){return db[_0x7e61('0x34')]['find']({'where':{'id':_0x210d77[_0x7e61('0x4e')]['id']},'attributes':[_0x7e61('0x6b')]})[_0x7e61('0x19')](respondWithResult(_0x23b739,null))['catch'](handleError(_0x23b739,null));};exports[_0x7e61('0x6c')]=function(_0x302e32,_0xe6e055,_0x5ea9d4){if(_0x302e32[_0x7e61('0x50')]&&_0x302e32['file']['filename']){_0x302e32['body']['preferred']=_0x302e32['file']['filename'];}return db['Setting'][_0x7e61('0x4c')]({'where':{'id':_0x302e32[_0x7e61('0x4e')]['id']}})[_0x7e61('0x19')](handleEntityNotFound(_0xe6e055,null))[_0x7e61('0x19')](saveUpdates(_0x302e32['body'],null))[_0x7e61('0x19')](respondWithResult(_0xe6e055,null))['catch'](handleError(_0xe6e055,null));};var utilLicense=require('../../config/license/util');exports[_0x7e61('0x6d')]=function(_0x20acf,_0x5507e8,_0x3d16b9){var _0xbf58fb=_0x7e61('0x55');var _0x4bb67f={'custom':![]};return utilLicense[_0x7e61('0x56')]()[_0x7e61('0x19')](function(_0x27069c){if(_0x27069c){_0x4bb67f=_0x27069c;}return db['Setting'][_0x7e61('0x4c')]({'where':{'id':_0x20acf[_0x7e61('0x4e')]['id']},'attributes':[_0x7e61('0x52'),'loginLogo','preferred',_0x7e61('0x58'),'defaultLogo',_0x7e61('0x5a'),_0x7e61('0x5b'),_0x7e61('0x5c')],'raw':!![]});})[_0x7e61('0x19')](handleEntityNotFound(_0x5507e8,null))[_0x7e61('0x19')](function(_0x5bf613){if(_0x5bf613){var _0x25dedc=_0x5bf613[_0x7e61('0x57')]&&fs[_0x7e61('0x5d')](path['join'](config['root'],_0xbf58fb,_[_0x7e61('0x5e')](_0x5bf613['preferred'])))?path[_0x7e61('0x5f')](config['root'],_0xbf58fb,_['toLower'](_0x5bf613[_0x7e61('0x57')])):path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0xbf58fb,_[_0x7e61('0x5e')](_0x7e61('0x6e')));var _0x585758=_0x7e61('0x6a')+_['upperFirst']('preferred');if(_0x5bf613[_0x585758]||!_0x4bb67f[_0x7e61('0x63')]||!_0x4bb67f[_0x7e61('0x57')]){_0x25dedc=path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0xbf58fb,_[_0x7e61('0x5e')]('default_preferred.png'));}if(!fs[_0x7e61('0x5d')](_0x25dedc)){throw new db[(_0x7e61('0x64'))]['ValidationError'](_['upperFirst']('preferred')+_0x7e61('0x66'));}return _0x5507e8[_0x7e61('0x67')](_0x25dedc);}})[_0x7e61('0x4b')](handleError(_0x5507e8,null));};exports[_0x7e61('0x6f')]=function(_0x27c74b,_0x4174ff,_0x1c8bac){if(_0x27c74b[_0x7e61('0x50')]&&_0x27c74b['file'][_0x7e61('0x51')]){_0x27c74b[_0x7e61('0x4d')]['favicon']=_0x27c74b[_0x7e61('0x50')][_0x7e61('0x51')];}return db[_0x7e61('0x34')]['find']({'where':{'id':_0x27c74b[_0x7e61('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4174ff,null))[_0x7e61('0x19')](saveUpdates(_0x27c74b[_0x7e61('0x4d')],null))['then'](respondWithResult(_0x4174ff,null))[_0x7e61('0x4b')](handleError(_0x4174ff,null));};var utilLicense=require(_0x7e61('0x15'));exports[_0x7e61('0x70')]=function(_0x4798e8,_0x316b58,_0x2b879d){var _0xe2c451=_0x7e61('0x55');var _0xa95c27={'custom':![]};return utilLicense[_0x7e61('0x56')]()[_0x7e61('0x19')](function(_0x50b6d9){if(_0x50b6d9){_0xa95c27=_0x50b6d9;}return db['Setting'][_0x7e61('0x4c')]({'where':{'id':_0x4798e8[_0x7e61('0x4e')]['id']},'attributes':[_0x7e61('0x52'),'loginLogo',_0x7e61('0x57'),_0x7e61('0x58'),_0x7e61('0x59'),_0x7e61('0x5a'),_0x7e61('0x5b'),_0x7e61('0x5c')],'raw':!![]});})[_0x7e61('0x19')](handleEntityNotFound(_0x316b58,null))['then'](function(_0x5c5237){if(_0x5c5237){var _0x4a62eb=_0x5c5237[_0x7e61('0x58')]&&fs[_0x7e61('0x5d')](path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0xe2c451,_[_0x7e61('0x5e')](_0x5c5237[_0x7e61('0x58')])))?path['join'](config['root'],_0xe2c451,_[_0x7e61('0x5e')](_0x5c5237[_0x7e61('0x58')])):path['join'](config['root'],_0xe2c451,_[_0x7e61('0x5e')](_0x7e61('0x71')));var _0x3b2e54=_0x7e61('0x6a')+_[_0x7e61('0x62')](_0x7e61('0x58'));if(_0x5c5237[_0x3b2e54]||!_0xa95c27[_0x7e61('0x63')]){_0x4a62eb=path[_0x7e61('0x5f')](config[_0x7e61('0x60')],_0xe2c451,_[_0x7e61('0x5e')](_0x7e61('0x71')));}if(!fs[_0x7e61('0x5d')](_0x4a62eb)){throw new db['Sequelize'][(_0x7e61('0x65'))](_[_0x7e61('0x62')](_0x7e61('0x58'))+_0x7e61('0x66'));}return _0x316b58[_0x7e61('0x67')](_0x4a62eb);}})[_0x7e61('0x4b')](handleError(_0x316b58,null));};exports[_0x7e61('0x72')]=function(_0x249ad3,_0x142953){var _0x6f5307={'offset':moment()[_0x7e61('0x73')]()};_0x6f5307[_0x7e61('0x74')]=moment()[_0x7e61('0x73')](_0x6f5307[_0x7e61('0x25')])[_0x7e61('0x75')](_0x7e61('0x76'));return _0x142953['status'](0xc8)[_0x7e61('0x77')](_0x6f5307);};
\ No newline at end of file
index cf626cc..c338f5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x433b93,_0x40db4f){var _0x116edd=function(_0x62fb77){while(--_0x62fb77){_0x433b93['push'](_0x433b93['shift']());}};_0x116edd(++_0x40db4f);}(_0x3e74,0x175));var _0x43e7=function(_0x45391f,_0x2befbc){_0x45391f=_0x45391f-0x0;var _0x434b0f=_0x3e74[_0x45391f];return _0x434b0f;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./setting.attributes','exports','define','settings','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x7a3247,_0x15cb12){var _0x1bfde5=function(_0x62bbef){while(--_0x62bbef){_0x7a3247['push'](_0x7a3247['shift']());}};_0x1bfde5(++_0x15cb12);}(_0x55ca,0x126));var _0xa55c=function(_0x26793a,_0x49cf51){_0x26793a=_0x26793a-0x0;var _0x575efb=_0x55ca[_0x26793a];return _0x575efb;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Setting',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3708f86..9ce03f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa55=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','Setting,\x20%s,\x20%s','message','info','result','catch','ShowSetting','Setting','find','options','raw','where','attributes','include','map','model','lodash'];(function(_0x47312b,_0x443417){var _0xb8d23=function(_0xb16e53){while(--_0xb16e53){_0x47312b['push'](_0x47312b['shift']());}};_0xb8d23(++_0x443417);}(_0xfa55,0x1df));var _0x5fa5=function(_0x5878eb,_0x3ccc27){_0x5878eb=_0x5878eb-0x0;var _0x7b766a=_0xfa55[_0x5878eb];return _0x7b766a;};'use strict';var _=require(_0x5fa5('0x0'));var util=require('util');var moment=require(_0x5fa5('0x1'));var BPromise=require(_0x5fa5('0x2'));var rs=require(_0x5fa5('0x3'));var fs=require('fs');var Redis=require(_0x5fa5('0x4'));var db=require(_0x5fa5('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x5fa5('0x6'))(_0x5fa5('0x7'));var config=require(_0x5fa5('0x8'));var jayson=require(_0x5fa5('0x9'));var client=jayson[_0x5fa5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53e499,_0x41637a,_0x43f02c){return new BPromise(function(_0x3ea4cd,_0xe7d17){return client['request'](_0x53e499,_0x43f02c)[_0x5fa5('0xb')](function(_0x2d7c90){logger['info']('Setting,\x20%s,\x20%s',_0x41637a,_0x5fa5('0xc'));logger[_0x5fa5('0xd')](_0x5fa5('0xe'),_0x41637a,_0x5fa5('0xc'),JSON[_0x5fa5('0xf')](_0x2d7c90));if(_0x2d7c90['error']){if(_0x2d7c90[_0x5fa5('0x10')]['code']===0x1f4){logger[_0x5fa5('0x10')](_0x5fa5('0x11'),_0x41637a,_0x2d7c90['error'][_0x5fa5('0x12')]);return _0xe7d17(_0x2d7c90['error'][_0x5fa5('0x12')]);}logger[_0x5fa5('0x10')](_0x5fa5('0x11'),_0x41637a,_0x2d7c90['error'][_0x5fa5('0x12')]);return _0x3ea4cd(_0x2d7c90[_0x5fa5('0x10')][_0x5fa5('0x12')]);}else{logger[_0x5fa5('0x13')](_0x5fa5('0x11'),_0x41637a,_0x5fa5('0xc'));_0x3ea4cd(_0x2d7c90[_0x5fa5('0x14')][_0x5fa5('0x12')]);}})[_0x5fa5('0x15')](function(_0x75186d){logger['error'](_0x5fa5('0x11'),_0x41637a,_0x75186d);_0xe7d17(_0x75186d);});});}exports[_0x5fa5('0x16')]=function(_0x1834b6){var _0x2a5ec2=this;return new Promise(function(_0x597251,_0x15405c){return db[_0x5fa5('0x17')][_0x5fa5('0x18')]({'raw':_0x1834b6[_0x5fa5('0x19')]?_0x1834b6[_0x5fa5('0x19')][_0x5fa5('0x1a')]===undefined?!![]:![]:!![],'where':_0x1834b6[_0x5fa5('0x19')]?_0x1834b6[_0x5fa5('0x19')][_0x5fa5('0x1b')]||null:null,'attributes':_0x1834b6[_0x5fa5('0x19')]?_0x1834b6['options'][_0x5fa5('0x1c')]||null:null,'include':_0x1834b6['options']?_0x1834b6['options'][_0x5fa5('0x1d')]?_[_0x5fa5('0x1e')](_0x1834b6[_0x5fa5('0x19')][_0x5fa5('0x1d')],function(_0x23f28f){return{'model':db[_0x23f28f[_0x5fa5('0x1f')]],'as':_0x23f28f['as'],'attributes':_0x23f28f[_0x5fa5('0x1c')],'include':_0x23f28f[_0x5fa5('0x1d')]?_[_0x5fa5('0x1e')](_0x23f28f[_0x5fa5('0x1d')],function(_0x3c6b65){return{'model':db[_0x3c6b65[_0x5fa5('0x1f')]],'as':_0x3c6b65['as'],'attributes':_0x3c6b65[_0x5fa5('0x1c')],'include':_0x3c6b65['include']?_[_0x5fa5('0x1e')](_0x3c6b65['include'],function(_0x130104){return{'model':db[_0x130104[_0x5fa5('0x1f')]],'as':_0x130104['as'],'attributes':_0x130104['attributes']};}):[]};}):[]};}):[]:[]})[_0x5fa5('0xb')](function(_0x13c38b){logger[_0x5fa5('0x13')](_0x5fa5('0x16'),_0x1834b6);logger['debug'](_0x5fa5('0x16'),_0x1834b6,JSON[_0x5fa5('0xf')](_0x13c38b));_0x597251(_0x13c38b);})['catch'](function(_0x283095){logger[_0x5fa5('0x10')](_0x5fa5('0x16'),_0x283095[_0x5fa5('0x12')],_0x1834b6);_0x15405c(_0x2a5ec2['error'](0x1f4,_0x283095[_0x5fa5('0x12')]));});});};
\ No newline at end of file
+var _0x9e98=['Setting','find','options','raw','where','attributes','map','include','model','then','stringify','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','info','Setting,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','ShowSetting'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0x9e98,0xb9));var _0x89e9=function(_0x21d0c3,_0x16c71c){_0x21d0c3=_0x21d0c3-0x0;var _0x4df18e=_0x9e98[_0x21d0c3];return _0x4df18e;};'use strict';var _=require('lodash');var util=require(_0x89e9('0x0'));var moment=require('moment');var BPromise=require(_0x89e9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x89e9('0x2'))['db'];var utils=require(_0x89e9('0x3'));var logger=require(_0x89e9('0x4'))(_0x89e9('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x89e9('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54cddd,_0x172fd9,_0x250c7a){return new BPromise(function(_0x2b8e88,_0x2c98c1){return client[_0x89e9('0x7')](_0x54cddd,_0x250c7a)['then'](function(_0x41e650){logger[_0x89e9('0x8')](_0x89e9('0x9'),_0x172fd9,'request\x20sent');logger[_0x89e9('0xa')]('Setting,\x20%s,\x20%s,\x20%s',_0x172fd9,_0x89e9('0xb'),JSON['stringify'](_0x41e650));if(_0x41e650[_0x89e9('0xc')]){if(_0x41e650[_0x89e9('0xc')][_0x89e9('0xd')]===0x1f4){logger[_0x89e9('0xc')]('Setting,\x20%s,\x20%s',_0x172fd9,_0x41e650[_0x89e9('0xc')][_0x89e9('0xe')]);return _0x2c98c1(_0x41e650[_0x89e9('0xc')]['message']);}logger[_0x89e9('0xc')]('Setting,\x20%s,\x20%s',_0x172fd9,_0x41e650[_0x89e9('0xc')]['message']);return _0x2b8e88(_0x41e650[_0x89e9('0xc')][_0x89e9('0xe')]);}else{logger[_0x89e9('0x8')](_0x89e9('0x9'),_0x172fd9,_0x89e9('0xb'));_0x2b8e88(_0x41e650[_0x89e9('0xf')][_0x89e9('0xe')]);}})[_0x89e9('0x10')](function(_0x81259f){logger[_0x89e9('0xc')](_0x89e9('0x9'),_0x172fd9,_0x81259f);_0x2c98c1(_0x81259f);});});}exports[_0x89e9('0x11')]=function(_0x3e7a56){var _0x59ee29=this;return new Promise(function(_0x5e75f0,_0x485e1f){return db[_0x89e9('0x12')][_0x89e9('0x13')]({'raw':_0x3e7a56[_0x89e9('0x14')]?_0x3e7a56[_0x89e9('0x14')][_0x89e9('0x15')]===undefined?!![]:![]:!![],'where':_0x3e7a56[_0x89e9('0x14')]?_0x3e7a56['options'][_0x89e9('0x16')]||null:null,'attributes':_0x3e7a56[_0x89e9('0x14')]?_0x3e7a56['options'][_0x89e9('0x17')]||null:null,'include':_0x3e7a56[_0x89e9('0x14')]?_0x3e7a56[_0x89e9('0x14')]['include']?_[_0x89e9('0x18')](_0x3e7a56[_0x89e9('0x14')][_0x89e9('0x19')],function(_0x16e0c2){return{'model':db[_0x16e0c2[_0x89e9('0x1a')]],'as':_0x16e0c2['as'],'attributes':_0x16e0c2['attributes'],'include':_0x16e0c2[_0x89e9('0x19')]?_[_0x89e9('0x18')](_0x16e0c2[_0x89e9('0x19')],function(_0x126a09){return{'model':db[_0x126a09[_0x89e9('0x1a')]],'as':_0x126a09['as'],'attributes':_0x126a09[_0x89e9('0x17')],'include':_0x126a09[_0x89e9('0x19')]?_[_0x89e9('0x18')](_0x126a09[_0x89e9('0x19')],function(_0x4eec26){return{'model':db[_0x4eec26[_0x89e9('0x1a')]],'as':_0x4eec26['as'],'attributes':_0x4eec26['attributes']};}):[]};}):[]};}):[]:[]})[_0x89e9('0x1b')](function(_0x372c07){logger[_0x89e9('0x8')](_0x89e9('0x11'),_0x3e7a56);logger[_0x89e9('0xa')](_0x89e9('0x11'),_0x3e7a56,JSON[_0x89e9('0x1c')](_0x372c07));_0x5e75f0(_0x372c07);})[_0x89e9('0x10')](function(_0x2967b0){logger[_0x89e9('0xc')](_0x89e9('0x11'),_0x2967b0[_0x89e9('0xe')],_0x3e7a56);_0x485e1f(_0x59ee29[_0x89e9('0xc')](0x1f4,_0x2967b0[_0x89e9('0xe')]));});});};
\ No newline at end of file
index 35e5232..e36b4a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['create','addDisposition','addAnswer','addApplications','/:id/send','send','status','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','/:id/users','getAgents','post'];(function(_0x89c4f1,_0x5c0dd6){var _0x230d3c=function(_0x24992b){while(--_0x24992b){_0x89c4f1['push'](_0x89c4f1['shift']());}};_0x230d3c(++_0x5c0dd6);}(_0x6aa7,0x178));var _0x76aa=function(_0x529c65,_0x363d31){_0x529c65=_0x529c65-0x0;var _0xdb0f3e=_0x6aa7[_0x529c65];return _0xdb0f3e;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0x76aa('0x8')](),controller['index']);router[_0x76aa('0x9')](_0x76aa('0xa'),auth[_0x76aa('0x8')](),controller['describe']);router[_0x76aa('0x9')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller['show']);router[_0x76aa('0x9')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xd')]);router[_0x76aa('0x9')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xf')]);router[_0x76aa('0x9')](_0x76aa('0x10'),auth['isAuthenticated'](),controller[_0x76aa('0x11')]);router['get'](_0x76aa('0x12'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x13')]);router[_0x76aa('0x9')](_0x76aa('0x14'),controller['statusGet']);router['get'](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x16')]);router[_0x76aa('0x17')]('/',auth['isAuthenticated'](),controller[_0x76aa('0x18')]);router['post'](_0x76aa('0xc'),auth['isAuthenticated'](),controller[_0x76aa('0x19')]);router[_0x76aa('0x17')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1a')]);router[_0x76aa('0x17')]('/:id/notify',controller['notify']);router[_0x76aa('0x17')](_0x76aa('0x10'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1b')]);router[_0x76aa('0x17')](_0x76aa('0x1c'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1d')]);router[_0x76aa('0x17')]('/:id/status',controller[_0x76aa('0x1e')]);router[_0x76aa('0x17')](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x1f')]);router[_0x76aa('0x20')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x21')]);router[_0x76aa('0x22')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x23')]);router[_0x76aa('0x22')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x24')]);router['delete'](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x25')]);router[_0x76aa('0x22')](_0x76aa('0x15'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x26')]);module[_0x76aa('0x27')]=router;
\ No newline at end of file
+var _0x5fc3=['/:id','show','getDispositions','/:id/canned_answers','/:id/applications','getInteractions','/:id/status','statusGet','post','create','/:id/dispositions','addAnswer','/:id/notify','/:id/send','send','status','/:id/users','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','describe'];(function(_0x2b3c28,_0x27b6c4){var _0x1a8735=function(_0x4f924f){while(--_0x4f924f){_0x2b3c28['push'](_0x2b3c28['shift']());}};_0x1a8735(++_0x27b6c4);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x5fc3[_0x3511d3];return _0x5d6321;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/dispositions',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getAnswers']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getApplications']);router[_0x35fc('0x9')]('/:id/interactions',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router[_0x35fc('0x9')](_0x35fc('0x12'),controller[_0x35fc('0x13')]);router['get']('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x14')]('/',auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x14')](_0x35fc('0x16'),auth[_0x35fc('0xa')](),controller['addDisposition']);router[_0x35fc('0x14')](_0x35fc('0xf'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x14')](_0x35fc('0x18'),controller['notify']);router[_0x35fc('0x14')](_0x35fc('0x10'),auth[_0x35fc('0xa')](),controller['addApplications']);router[_0x35fc('0x14')](_0x35fc('0x19'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x1a')]);router[_0x35fc('0x14')](_0x35fc('0x12'),controller[_0x35fc('0x1b')]);router[_0x35fc('0x14')](_0x35fc('0x1c'),auth[_0x35fc('0xa')](),controller['addAgents']);router[_0x35fc('0x1d')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x1e')]);router[_0x35fc('0x1f')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x20')]);router['delete'](_0x35fc('0x16'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x21')]);router['delete'](_0x35fc('0xf'),auth['isAuthenticated'](),controller[_0x35fc('0x22')]);router[_0x35fc('0x1f')]('/:id/users',auth['isAuthenticated'](),controller[_0x35fc('0x23')]);module['exports']=router;
\ No newline at end of file
index ba816dc..85543b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ac=['infobip','intelepeer','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','name','generate','ENUM','twilio','connectel','clicksend','plivo','clickatell','csc'];(function(_0x1eb45f,_0x2012c4){var _0x18dc89=function(_0x233539){while(--_0x233539){_0x1eb45f['push'](_0x1eb45f['shift']());}};_0x18dc89(++_0x2012c4);}(_0x99ac,0x10d));var _0xc99a=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x99ac[_0x4b7895];return _0x264180;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xc99a('0x0')]={'name':{'type':Sequelize[_0xc99a('0x1')],'unique':_0xc99a('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0xc99a('0x1')],'allowNull':![]},'remote':{'type':Sequelize[_0xc99a('0x1')],'allowNull':![]},'token':{'type':Sequelize[_0xc99a('0x1')],'defaultValue':function(){return rs[_0xc99a('0x3')]();}},'phone':{'type':Sequelize[_0xc99a('0x1')]},'type':{'type':Sequelize[_0xc99a('0x4')](_0xc99a('0x5'),'skebby',_0xc99a('0x6'),_0xc99a('0x7'),_0xc99a('0x8'),_0xc99a('0x9'),'bandwidth',_0xc99a('0xa'),_0xc99a('0xb'),_0xc99a('0xc'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xc99a('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0xc99a('0x1')]},'password':{'type':Sequelize[_0xc99a('0x1')]},'apiKey':{'type':Sequelize[_0xc99a('0x1')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0xc99a('0x1')]},'senderString':{'type':Sequelize[_0xc99a('0x1')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xc99a('0xd')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xc99a('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc99a('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xc99a('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xc99a('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc99a('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xc99a('0x1')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc99a('0xf')],'comment':_0xc99a('0x10')},'mandatoryDisposition':{'type':Sequelize[_0xc99a('0xe')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xcb0232){if(!_0xcb0232)this[_0xc99a('0x11')](_0xc99a('0x12'),null);this[_0xc99a('0x11')](_0xc99a('0x13'),_0xcb0232);}}};
\ No newline at end of file
+var _0xb172=['intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','twilio','skebby','connectel','plivo','clickatell','bandwidth','csc','infobip'];(function(_0x2bd750,_0x39be0a){var _0xf32aab=function(_0x2c7869){while(--_0x2c7869){_0x2bd750['push'](_0x2bd750['shift']());}};_0xf32aab(++_0x39be0a);}(_0xb172,0x9b));var _0x2b17=function(_0x16b16f,_0x45fe4e){_0x16b16f=_0x16b16f-0x0;var _0x49aced=_0xb172[_0x16b16f];return _0x49aced;};'use strict';var Sequelize=require(_0x2b17('0x0'));var rs=require(_0x2b17('0x1'));module[_0x2b17('0x2')]={'name':{'type':Sequelize[_0x2b17('0x3')],'unique':_0x2b17('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x2b17('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x2b17('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x2b17('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x2b17('0x3')]},'type':{'type':Sequelize['ENUM'](_0x2b17('0x5'),_0x2b17('0x6'),_0x2b17('0x7'),'clicksend',_0x2b17('0x8'),_0x2b17('0x9'),_0x2b17('0xa'),_0x2b17('0xb'),_0x2b17('0xc'),_0x2b17('0xd'))},'accountSid':{'type':Sequelize[_0x2b17('0x3')]},'authId':{'type':Sequelize[_0x2b17('0x3')]},'authToken':{'type':Sequelize[_0x2b17('0x3')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x2b17('0x3')]},'password':{'type':Sequelize[_0x2b17('0x3')]},'apiKey':{'type':Sequelize[_0x2b17('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x2b17('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x2b17('0xe')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x2b17('0xf')],'defaultValue':function(){return _0x2b17('0x10');}},'notificationSound':{'type':Sequelize[_0x2b17('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2b17('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2b17('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2b17('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2b17('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2b17('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x2b17('0x12')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x202f94){if(!_0x202f94)this[_0x2b17('0x13')](_0x2b17('0x14'),null);this['setDataValue']('mandatoryDisposition',_0x202f94);}}};
\ No newline at end of file
index c4714e9..48a934e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d01=['text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','SmsApplication','findAndCountAll','priority','stack','finally','getApplications','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','DESC','out','SmsMessage','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','statusInt','status_code','groupName','DELIVERED','redif','error_code','clickatell','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','omit','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsAccount.socket','jayson/promise','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','sendStatus','status','undefined','count','Content-Range','json','reject','save','update','SmsAccounts','UserProfileResource','destroy','end','name','send','index','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Pause','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','limit','findAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','sms','Applications','orderBy','asc','account','CmContact','ValidationError','updatedAt','difference','createdAt','CompanyId','ListId','twilio','from','From','Body','messageId','MessageSid','skebby','sender','connectel','clicksend','message_id','plivo','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','fromNumber','text','replyMessageId','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','Sequelize','mapKey','CmList','Contacts','list','contact','SmsInteraction','spread','interaction','created','autoclose','applications','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','Start','startRouting','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type'];(function(_0x5c025c,_0x2613f6){var _0x50e688=function(_0x4c2c89){while(--_0x4c2c89){_0x5c025c['push'](_0x5c025c['shift']());}};_0x50e688(++_0x2613f6);}(_0x2d01,0x121));var _0x12d0=function(_0x5ed928,_0x2dbbdc){_0x5ed928=_0x5ed928-0x0;var _0x2effcc=_0x2d01[_0x5ed928];return _0x2effcc;};'use strict';var emlformat=require(_0x12d0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x12d0('0x1'));var jsonpatch=require(_0x12d0('0x2'));var rp=require(_0x12d0('0x3'));var moment=require(_0x12d0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x12d0('0x5'));var util=require(_0x12d0('0x6'));var path=require(_0x12d0('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x12d0('0x8'));var fs=require('fs');var fs_extra=require(_0x12d0('0x9'));var _=require(_0x12d0('0xa'));var squel=require(_0x12d0('0xb'));var crypto=require(_0x12d0('0xc'));var jsforce=require(_0x12d0('0xd'));var deskjs=require(_0x12d0('0xe'));var toCsv=require(_0x12d0('0xf'));var querystring=require(_0x12d0('0x10'));var Papa=require('papaparse');var Redis=require(_0x12d0('0x11'));var authService=require(_0x12d0('0x12'));var qs=require(_0x12d0('0x13'));var as=require(_0x12d0('0x14'));var hardwareService=require(_0x12d0('0x15'));var logger=require(_0x12d0('0x16'))(_0x12d0('0x17'));var utils=require('../../config/utils');var config=require(_0x12d0('0x18'));var licenseUtil=require(_0x12d0('0x19'));var db=require(_0x12d0('0x1a'))['db'];config[_0x12d0('0x1b')]=_[_0x12d0('0x1c')](config[_0x12d0('0x1b')],{'host':_0x12d0('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x12d0('0x1e'))['register'](socket);var jayson=require(_0x12d0('0x1f'));var client=jayson['client'][_0x12d0('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x2b26cf,_0x2562a3,_0xe82f1e,_0x1a3b83){return new BPromise(function(_0x29a9bf,_0x2a4f6f){var _0x19c6cb=_0x1a3b83||client;return _0x19c6cb[_0x12d0('0x21')](_0x2b26cf,_0xe82f1e)[_0x12d0('0x22')](function(_0x599733){logger[_0x12d0('0x23')](_0x12d0('0x24'),_0x2562a3,'request\x20sent');logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2562a3,_0x12d0('0x25'),JSON[_0x12d0('0x26')](_0x599733));if(_0x599733[_0x12d0('0x27')]){if(_0x599733[_0x12d0('0x27')]['code']===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x2562a3,_0x599733[_0x12d0('0x27')][_0x12d0('0x28')]);return _0x2a4f6f(_0x599733[_0x12d0('0x27')][_0x12d0('0x28')]);}logger['error'](_0x12d0('0x24'),_0x2562a3,_0x599733['error'][_0x12d0('0x28')]);return _0x29a9bf(_0x599733[_0x12d0('0x27')][_0x12d0('0x28')]);}else{logger[_0x12d0('0x23')](_0x12d0('0x24'),_0x2562a3,_0x12d0('0x25'));_0x29a9bf(_0x599733[_0x12d0('0x29')][_0x12d0('0x28')]);}})['catch'](function(_0x329398){logger[_0x12d0('0x27')](_0x12d0('0x24'),_0x2562a3,_0x329398);_0x2a4f6f(_0x329398);});});}function respondWithStatusCode(_0x2a3fe7,_0x45fd66){_0x45fd66=_0x45fd66||0xcc;return function(_0x199970){if(_0x199970){return _0x2a3fe7[_0x12d0('0x2a')](_0x45fd66);}return _0x2a3fe7[_0x12d0('0x2b')](_0x45fd66)['end']();};}function respondWithResult(_0x12ed91,_0x425b8b){_0x425b8b=_0x425b8b||0xc8;return function(_0x1079d1){if(_0x1079d1){return _0x12ed91[_0x12d0('0x2b')](_0x425b8b)['json'](_0x1079d1);}};}function respondWithFilteredResult(_0x44219c,_0x479820){return function(_0x1f6104){if(_0x1f6104){var _0x110240=typeof _0x479820['offset']==='undefined'&&typeof _0x479820['limit']===_0x12d0('0x2c');var _0x4b2b90=_0x1f6104[_0x12d0('0x2d')];var _0x5303fb=_0x110240?0x0:_0x479820['offset'];var _0x4869b4=_0x110240?_0x1f6104[_0x12d0('0x2d')]:_0x479820['offset']+_0x479820['limit'];var _0x5af6b9;if(_0x4869b4>=_0x4b2b90){_0x4869b4=_0x4b2b90;_0x5af6b9=0xc8;}else{_0x5af6b9=0xce;}_0x44219c['status'](_0x5af6b9);return _0x44219c['set'](_0x12d0('0x2e'),_0x5303fb+'-'+_0x4869b4+'/'+_0x4b2b90)[_0x12d0('0x2f')](_0x1f6104);}return null;};}function patchUpdates(_0x181de5){return function(_0x4dd5fe){try{jsonpatch['apply'](_0x4dd5fe,_0x181de5,!![]);}catch(_0x318dd9){return BPromise[_0x12d0('0x30')](_0x318dd9);}return _0x4dd5fe[_0x12d0('0x31')]();};}function saveUpdates(_0x2cd29a,_0xd3d173){return function(_0x58baf0){if(_0x58baf0){return _0x58baf0[_0x12d0('0x32')](_0x2cd29a)[_0x12d0('0x22')](function(_0x15c536){return _0x15c536;});}return null;};}function removeEntity(_0x55a015,_0x26bb7b){return function(_0x66e8a3){if(_0x66e8a3){return _0x66e8a3['destroy']()[_0x12d0('0x22')](function(){var _0x286002=_0x66e8a3['get']({'plain':!![]});var _0x2f0a8b=_0x12d0('0x33');return db[_0x12d0('0x34')][_0x12d0('0x35')]({'where':{'type':_0x2f0a8b,'resourceId':_0x286002['id']}})[_0x12d0('0x22')](function(){return _0x66e8a3;});})[_0x12d0('0x22')](function(){_0x55a015[_0x12d0('0x2b')](0xcc)[_0x12d0('0x36')]();});}};}function handleEntityNotFound(_0x4df9b6,_0x5d00fc){return function(_0x4b95b3){if(!_0x4b95b3){_0x4df9b6['sendStatus'](0x194);}return _0x4b95b3;};}function handleError(_0x13df6a,_0x5d2fb3){_0x5d2fb3=_0x5d2fb3||0x1f4;return function(_0x46ac38){logger[_0x12d0('0x27')](_0x46ac38['stack']);if(_0x46ac38[_0x12d0('0x37')]){delete _0x46ac38['name'];}_0x13df6a['status'](_0x5d2fb3)[_0x12d0('0x38')](_0x46ac38);};}exports[_0x12d0('0x39')]=function(_0x4498b,_0x45c500){var _0x37b93e={'include':[{'model':db['Pause'],'as':_0x12d0('0x3a')}]},_0x4a6805={},_0x3f92a6={'count':0x0,'rows':[]};var _0x38e9e0=_[_0x12d0('0x3b')](db[_0x12d0('0x3c')][_0x12d0('0x3d')],function(_0x5455c2){return{'name':_0x5455c2[_0x12d0('0x3e')],'type':_0x5455c2[_0x12d0('0x3f')]['key']};});_0x4a6805[_0x12d0('0x40')]=_[_0x12d0('0x3b')](_0x38e9e0,_0x12d0('0x37'));_0x4a6805['query']=_[_0x12d0('0x41')](_0x4498b[_0x12d0('0x42')]);_0x4a6805['filters']=_[_0x12d0('0x43')](_0x4a6805[_0x12d0('0x40')],_0x4a6805['query']);_0x37b93e[_0x12d0('0x44')]=_['intersection'](_0x4a6805[_0x12d0('0x40')],qs[_0x12d0('0x45')](_0x4498b['query'][_0x12d0('0x45')]));_0x37b93e[_0x12d0('0x44')]=_0x37b93e['attributes'][_0x12d0('0x46')]?_0x37b93e[_0x12d0('0x44')]:_0x4a6805[_0x12d0('0x40')];if(!_0x4498b[_0x12d0('0x42')][_0x12d0('0x47')](_0x12d0('0x48'))){_0x37b93e['limit']=qs['limit'](_0x4498b['query']['limit']);_0x37b93e['offset']=qs[_0x12d0('0x49')](_0x4498b[_0x12d0('0x42')][_0x12d0('0x49')]);}_0x37b93e[_0x12d0('0x4a')]=qs[_0x12d0('0x4b')](_0x4498b['query'][_0x12d0('0x4b')]);_0x37b93e[_0x12d0('0x4c')]=qs[_0x12d0('0x4d')](_[_0x12d0('0x4e')](_0x4498b[_0x12d0('0x42')],_0x4a6805['filters']),_0x38e9e0);if(_0x4498b[_0x12d0('0x42')][_0x12d0('0x4f')]){_0x37b93e[_0x12d0('0x4c')]=_[_0x12d0('0x50')](_0x37b93e['where'],{'$or':_[_0x12d0('0x3b')](_0x38e9e0,function(_0x239a3c){if(_0x239a3c[_0x12d0('0x3f')]!==_0x12d0('0x51')){var _0x2956e7={};_0x2956e7[_0x239a3c[_0x12d0('0x37')]]={'$like':'%'+_0x4498b[_0x12d0('0x42')][_0x12d0('0x4f')]+'%'};return _0x2956e7;}})});}_0x37b93e=_[_0x12d0('0x50')]({},_0x37b93e,_0x4498b[_0x12d0('0x52')]);var _0x343ce9={'where':_0x37b93e['where']};return db[_0x12d0('0x3c')][_0x12d0('0x2d')](_0x343ce9)[_0x12d0('0x22')](function(_0x2530c8){_0x3f92a6[_0x12d0('0x2d')]=_0x2530c8;if(_0x4498b['query'][_0x12d0('0x53')]){_0x37b93e[_0x12d0('0x54')]=[{'all':!![]}];}return db[_0x12d0('0x3c')]['findAll'](_0x37b93e);})[_0x12d0('0x22')](function(_0x3f3d3d){_0x3f92a6[_0x12d0('0x55')]=_0x3f3d3d;return _0x3f92a6;})[_0x12d0('0x22')](respondWithFilteredResult(_0x45c500,_0x37b93e))[_0x12d0('0x56')](handleError(_0x45c500,null));};exports[_0x12d0('0x57')]=function(_0x4e272b,_0x2f591e){var _0xbb69bd={'raw':![],'where':{'id':_0x4e272b[_0x12d0('0x58')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x328957={};_0x328957[_0x12d0('0x40')]=_['keys'](db[_0x12d0('0x3c')][_0x12d0('0x3d')]);_0x328957[_0x12d0('0x42')]=_[_0x12d0('0x41')](_0x4e272b[_0x12d0('0x42')]);_0x328957[_0x12d0('0x4d')]=_[_0x12d0('0x43')](_0x328957[_0x12d0('0x40')],_0x328957[_0x12d0('0x42')]);_0xbb69bd[_0x12d0('0x44')]=_['intersection'](_0x328957['model'],qs[_0x12d0('0x45')](_0x4e272b[_0x12d0('0x42')][_0x12d0('0x45')]));_0xbb69bd[_0x12d0('0x44')]=_0xbb69bd[_0x12d0('0x44')][_0x12d0('0x46')]?_0xbb69bd[_0x12d0('0x44')]:_0x328957[_0x12d0('0x40')];if(_0x4e272b[_0x12d0('0x42')]['includeAll']){_0xbb69bd[_0x12d0('0x54')]=[{'all':!![]}];}_0xbb69bd=_['merge']({},_0xbb69bd,_0x4e272b['options']);return db[_0x12d0('0x3c')]['find'](_0xbb69bd)['then'](handleEntityNotFound(_0x2f591e,null))[_0x12d0('0x22')](respondWithResult(_0x2f591e,null))[_0x12d0('0x56')](handleError(_0x2f591e,null));};exports[_0x12d0('0x59')]=function(_0x4d0ee0,_0x474e93){return db[_0x12d0('0x3c')][_0x12d0('0x59')](_0x4d0ee0[_0x12d0('0x5a')],{})[_0x12d0('0x22')](function(_0x38b944){var _0x1748a1=_0x4d0ee0['user'][_0x12d0('0x5b')]({'plain':!![]});if(!_0x1748a1)throw new Error(_0x12d0('0x5c'));if(_0x1748a1['role']===_0x12d0('0x5d')){var _0x2f2358=_0x38b944[_0x12d0('0x5b')]({'plain':!![]});var _0x48498f=_0x12d0('0x33');return db[_0x12d0('0x5e')][_0x12d0('0x5f')]({'where':{'name':_0x48498f,'userProfileId':_0x1748a1[_0x12d0('0x60')]},'raw':!![]})['then'](function(_0x193ee9){if(_0x193ee9&&_0x193ee9['autoAssociation']===0x0){return db[_0x12d0('0x34')][_0x12d0('0x59')]({'name':_0x2f2358[_0x12d0('0x37')],'resourceId':_0x2f2358['id'],'type':_0x193ee9[_0x12d0('0x37')],'sectionId':_0x193ee9['id']},{})[_0x12d0('0x22')](function(){return _0x38b944;});}else{return _0x38b944;}})['catch'](function(_0x496933){logger[_0x12d0('0x27')](_0x12d0('0x61'),_0x496933);throw _0x496933;});}return _0x38b944;})['then'](respondWithResult(_0x474e93,0xc9))[_0x12d0('0x56')](handleError(_0x474e93,null));};exports[_0x12d0('0x32')]=function(_0x40cba9,_0x3cb4c8){if(_0x40cba9[_0x12d0('0x5a')]['id']){delete _0x40cba9[_0x12d0('0x5a')]['id'];}return db[_0x12d0('0x3c')][_0x12d0('0x5f')]({'where':{'id':_0x40cba9['params']['id']},'include':[{'model':db[_0x12d0('0x62')],'as':_0x12d0('0x3a')}]})[_0x12d0('0x22')](handleEntityNotFound(_0x3cb4c8,null))[_0x12d0('0x22')](saveUpdates(_0x40cba9[_0x12d0('0x5a')],null))[_0x12d0('0x22')](respondWithResult(_0x3cb4c8,null))[_0x12d0('0x56')](handleError(_0x3cb4c8,null));};exports['destroy']=function(_0x5c4b0d,_0x19cbe9){return db['SmsAccount'][_0x12d0('0x5f')]({'where':{'id':_0x5c4b0d['params']['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x19cbe9,null))['then'](removeEntity(_0x19cbe9,null))[_0x12d0('0x56')](handleError(_0x19cbe9,null));};exports[_0x12d0('0x63')]=function(_0x321899,_0xc463e1){return db[_0x12d0('0x3c')][_0x12d0('0x63')]()['then'](respondWithResult(_0xc463e1,null))['catch'](handleError(_0xc463e1,null));};exports[_0x12d0('0x64')]=function(_0x17b60b,_0x28d192,_0xe4ac94){if(_0x17b60b[_0x12d0('0x5a')]['id']){delete _0x17b60b[_0x12d0('0x5a')]['id'];}return db[_0x12d0('0x3c')]['find']({'where':{'id':_0x17b60b[_0x12d0('0x58')]['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x28d192,null))[_0x12d0('0x22')](function(_0x5ec13d){if(_0x5ec13d){_0x17b60b['body'][_0x12d0('0x65')]=_0x5ec13d['id'];return db[_0x12d0('0x66')][_0x12d0('0x59')](_0x17b60b[_0x12d0('0x5a')]);}})[_0x12d0('0x22')](respondWithResult(_0x28d192,null))['catch'](handleError(_0x28d192,null));};exports[_0x12d0('0x67')]=function(_0x52f5ef,_0xcff47e,_0xee4b6b){var _0x3c6563={'raw':![],'where':{}};var _0x49185e={};var _0xdf3e50={'count':0x0,'rows':[]};return db[_0x12d0('0x3c')][_0x12d0('0x68')]({'where':{'id':_0x52f5ef[_0x12d0('0x58')]['id']}})['then'](handleEntityNotFound(_0xcff47e,null))['then'](function(_0x3ef950){if(_0x3ef950){_0x49185e[_0x12d0('0x40')]=_[_0x12d0('0x41')](db['Disposition'][_0x12d0('0x3d')]);_0x49185e[_0x12d0('0x42')]=_[_0x12d0('0x41')](_0x52f5ef['query']);_0x49185e[_0x12d0('0x4d')]=_['intersection'](_0x49185e[_0x12d0('0x40')],_0x49185e[_0x12d0('0x42')]);_0x3c6563[_0x12d0('0x44')]=_[_0x12d0('0x43')](_0x49185e[_0x12d0('0x40')],qs['fields'](_0x52f5ef['query'][_0x12d0('0x45')]));_0x3c6563[_0x12d0('0x44')]=_0x3c6563['attributes']['length']?_0x3c6563[_0x12d0('0x44')]:_0x49185e[_0x12d0('0x40')];if(!_0x52f5ef['query']['hasOwnProperty']('nolimit')){_0x3c6563[_0x12d0('0x69')]=qs[_0x12d0('0x69')](_0x52f5ef[_0x12d0('0x42')][_0x12d0('0x69')]);_0x3c6563['offset']=qs[_0x12d0('0x49')](_0x52f5ef[_0x12d0('0x42')][_0x12d0('0x49')]);}_0x3c6563[_0x12d0('0x4a')]=qs[_0x12d0('0x4b')](_0x52f5ef[_0x12d0('0x42')]['sort']);_0x3c6563[_0x12d0('0x4c')]=qs[_0x12d0('0x4d')](_[_0x12d0('0x4e')](_0x52f5ef[_0x12d0('0x42')],_0x49185e[_0x12d0('0x4d')]));_0x3c6563[_0x12d0('0x4c')]['SmsAccountId']=_0x3ef950['id'];if(_0x52f5ef['query'][_0x12d0('0x4f')]){_0x3c6563['where']=_[_0x12d0('0x50')](_0x3c6563['where'],{'$or':_[_0x12d0('0x3b')](_0x3c6563[_0x12d0('0x44')],function(_0xaa9c7f){var _0x54af19={};_0x54af19[_0xaa9c7f]={'$like':'%'+_0x52f5ef[_0x12d0('0x42')]['filter']+'%'};return _0x54af19;})});}_0x3c6563=_['merge']({},_0x3c6563,_0x52f5ef[_0x12d0('0x52')]);return db[_0x12d0('0x66')][_0x12d0('0x2d')]({'where':_0x3c6563[_0x12d0('0x4c')]})[_0x12d0('0x22')](function(_0x1ba510){_0xdf3e50[_0x12d0('0x2d')]=_0x1ba510;if(_0x52f5ef[_0x12d0('0x42')][_0x12d0('0x53')]){_0x3c6563['include']=[{'all':!![]}];}return db[_0x12d0('0x66')][_0x12d0('0x6a')](_0x3c6563);})[_0x12d0('0x22')](function(_0x10f93a){_0xdf3e50[_0x12d0('0x55')]=_0x10f93a;return _0xdf3e50;});}})[_0x12d0('0x22')](respondWithFilteredResult(_0xcff47e,_0x3c6563))[_0x12d0('0x56')](handleError(_0xcff47e,null));};exports[_0x12d0('0x6b')]=function(_0x5db949,_0x2a46cc,_0x300a03){return db['SmsAccount']['find']({'where':{'id':_0x5db949['params']['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x2a46cc,null))['then'](function(_0x2ed174){if(_0x2ed174){return _0x2ed174['removeDispositions'](_0x5db949[_0x12d0('0x42')][_0x12d0('0x6c')]);}})['then'](respondWithStatusCode(_0x2a46cc,null))['catch'](handleError(_0x2a46cc,null));};exports[_0x12d0('0x6d')]=function(_0x488e21,_0x3df79a,_0x27e778){if(_0x488e21[_0x12d0('0x5a')]['id']){delete _0x488e21[_0x12d0('0x5a')]['id'];}return db[_0x12d0('0x3c')][_0x12d0('0x5f')]({'where':{'id':_0x488e21[_0x12d0('0x58')]['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x3df79a,null))[_0x12d0('0x22')](function(_0x2a2bb3){if(_0x2a2bb3){_0x488e21[_0x12d0('0x5a')][_0x12d0('0x65')]=_0x2a2bb3['id'];return db['CannedAnswer'][_0x12d0('0x59')](_0x488e21[_0x12d0('0x5a')]);}})['then'](respondWithResult(_0x3df79a,null))[_0x12d0('0x56')](handleError(_0x3df79a,null));};exports[_0x12d0('0x6e')]=function(_0x5aa64f,_0xe19a03,_0x54262f){var _0x4074c0={'raw':![],'where':{}};var _0x2c4d8f={};var _0x11001c={'count':0x0,'rows':[]};return db[_0x12d0('0x3c')]['findOne']({'where':{'id':_0x5aa64f[_0x12d0('0x58')]['id']}})['then'](handleEntityNotFound(_0xe19a03,null))[_0x12d0('0x22')](function(_0x2b5467){if(_0x2b5467){_0x2c4d8f[_0x12d0('0x40')]=_[_0x12d0('0x41')](db[_0x12d0('0x6f')][_0x12d0('0x3d')]);_0x2c4d8f[_0x12d0('0x42')]=_[_0x12d0('0x41')](_0x5aa64f[_0x12d0('0x42')]);_0x2c4d8f[_0x12d0('0x4d')]=_[_0x12d0('0x43')](_0x2c4d8f[_0x12d0('0x40')],_0x2c4d8f[_0x12d0('0x42')]);_0x4074c0['attributes']=_[_0x12d0('0x43')](_0x2c4d8f[_0x12d0('0x40')],qs[_0x12d0('0x45')](_0x5aa64f[_0x12d0('0x42')][_0x12d0('0x45')]));_0x4074c0['attributes']=_0x4074c0[_0x12d0('0x44')][_0x12d0('0x46')]?_0x4074c0[_0x12d0('0x44')]:_0x2c4d8f[_0x12d0('0x40')];if(!_0x5aa64f[_0x12d0('0x42')][_0x12d0('0x47')](_0x12d0('0x48'))){_0x4074c0[_0x12d0('0x69')]=qs['limit'](_0x5aa64f['query'][_0x12d0('0x69')]);_0x4074c0[_0x12d0('0x49')]=qs[_0x12d0('0x49')](_0x5aa64f[_0x12d0('0x42')][_0x12d0('0x49')]);}_0x4074c0[_0x12d0('0x4a')]=qs['sort'](_0x5aa64f[_0x12d0('0x42')][_0x12d0('0x4b')]);_0x4074c0[_0x12d0('0x4c')]=qs[_0x12d0('0x4d')](_[_0x12d0('0x4e')](_0x5aa64f['query'],_0x2c4d8f[_0x12d0('0x4d')]));_0x4074c0[_0x12d0('0x4c')][_0x12d0('0x65')]=_0x2b5467['id'];if(_0x5aa64f[_0x12d0('0x42')][_0x12d0('0x4f')]){_0x4074c0[_0x12d0('0x4c')]=_[_0x12d0('0x50')](_0x4074c0[_0x12d0('0x4c')],{'$or':_[_0x12d0('0x3b')](_0x4074c0['attributes'],function(_0x104c0f){var _0x1a8ff2={};_0x1a8ff2[_0x104c0f]={'$like':'%'+_0x5aa64f[_0x12d0('0x42')][_0x12d0('0x4f')]+'%'};return _0x1a8ff2;})});}_0x4074c0=_[_0x12d0('0x50')]({},_0x4074c0,_0x5aa64f[_0x12d0('0x52')]);return db[_0x12d0('0x6f')][_0x12d0('0x2d')]({'where':_0x4074c0[_0x12d0('0x4c')]})[_0x12d0('0x22')](function(_0x2a019c){_0x11001c[_0x12d0('0x2d')]=_0x2a019c;if(_0x5aa64f['query'][_0x12d0('0x53')]){_0x4074c0['include']=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x4074c0);})[_0x12d0('0x22')](function(_0x35e22e){_0x11001c['rows']=_0x35e22e;return _0x11001c;});}})['then'](respondWithFilteredResult(_0xe19a03,_0x4074c0))['catch'](handleError(_0xe19a03,null));};exports[_0x12d0('0x70')]=function(_0x178857,_0x158dce,_0x362479){return db[_0x12d0('0x3c')][_0x12d0('0x5f')]({'where':{'id':_0x178857[_0x12d0('0x58')]['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x158dce,null))['then'](function(_0x15010a){if(_0x15010a){return _0x15010a['removeAnswers'](_0x178857['query']['ids']);}})[_0x12d0('0x22')](respondWithStatusCode(_0x158dce,null))[_0x12d0('0x56')](handleError(_0x158dce,null));};exports['notify']=function(_0x2bb652,_0x2e7a0e,_0x11592f){var _0x563990={'channel':_0x12d0('0x71')};var _0x4c7fdc=[];var _0x5626bb=[];var _0x173c50={};return db[_0x12d0('0x3c')][_0x12d0('0x5f')]({'where':{'id':_0x2bb652[_0x12d0('0x58')]['id']},'include':[{'model':db['SmsApplication'],'as':_0x12d0('0x72')}]})[_0x12d0('0x22')](handleEntityNotFound(_0x2e7a0e,null))[_0x12d0('0x22')](function(_0xcf1557){_0x563990['account']=_0xcf1557;_0x563990['applications']=_[_0x12d0('0x73')](_0xcf1557[_0x12d0('0x72')],['priority'],[_0x12d0('0x74')]);if(_0x563990['account'][_0x12d0('0x72')]){delete _0x563990[_0x12d0('0x75')]['Applications'];}return db[_0x12d0('0x76')]['describe']();})[_0x12d0('0x22')](function(_0x25b019){if(!_0x25b019){throw new db['Sequelize'][(_0x12d0('0x77'))]('no\x20available\x20attributes');}_0x4c7fdc=_['difference'](_[_0x12d0('0x41')](_0x25b019),['createdAt',_0x12d0('0x78')]);_0x5626bb=_[_0x12d0('0x79')](_['keys'](_0x25b019),[_0x12d0('0x7a'),_0x12d0('0x78'),_0x12d0('0x7b'),_0x12d0('0x7c')]);_0x563990[_0x12d0('0x5a')]={'mapKey':'mobile'};if(_0x563990[_0x12d0('0x75')][_0x12d0('0x3f')]){switch(_0x563990[_0x12d0('0x75')][_0x12d0('0x3f')]){case _0x12d0('0x7d'):_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x7f')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x80')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x81')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x82')];break;case _0x12d0('0x83'):_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')]='+'+_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x84')];_0x563990[_0x12d0('0x5a')]['body']=_0x2bb652['body']['text'];break;case _0x12d0('0x85'):_0x563990[_0x12d0('0x5a')]['from']=_0x2bb652['body'][_0x12d0('0x7e')];_0x563990[_0x12d0('0x5a')]['body']=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x28')];break;case _0x12d0('0x86'):_0x563990['body'][_0x12d0('0x7e')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x7e')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x5a')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x81')]=_0x2bb652['body'][_0x12d0('0x87')];break;case _0x12d0('0x88'):_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x7f')];_0x563990[_0x12d0('0x5a')]['body']=_0x2bb652[_0x12d0('0x5a')]['Text'];_0x563990['body'][_0x12d0('0x81')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x89')];break;case _0x12d0('0x8a'):_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')]='+'+_0x2bb652['body']['results'][0x0][_0x12d0('0x7e')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')]=_0x2bb652['body'][_0x12d0('0x8b')][0x0]['text'];_0x563990[_0x12d0('0x5a')]['messageId']=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x8b')][0x0][_0x12d0('0x81')];break;case _0x12d0('0x8c'):_0x563990['body']['from']=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x8d')];_0x563990[_0x12d0('0x5a')]['body']=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x8e')][_0x12d0('0x28')];break;case'clickatell':_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x8f')];_0x563990['body']['body']=_0x2bb652['body'][_0x12d0('0x90')];_0x563990['body'][_0x12d0('0x81')]=_0x2bb652['body'][_0x12d0('0x91')];break;case _0x12d0('0x92'):_0x563990[_0x12d0('0x5a')]['messageId']=_0x2bb652[_0x12d0('0x5a')][0x0][_0x12d0('0x28')]['id'];_0x563990[_0x12d0('0x5a')]['from']=_0x2bb652[_0x12d0('0x5a')][0x0][_0x12d0('0x28')][_0x12d0('0x7e')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')]=_0x2bb652[_0x12d0('0x5a')][0x0][_0x12d0('0x28')][_0x12d0('0x90')];break;case _0x12d0('0x93'):_0x563990[_0x12d0('0x5a')]['from']=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x7e')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')]=_0x2bb652[_0x12d0('0x5a')][_0x12d0('0x28')];_0x563990[_0x12d0('0x5a')][_0x12d0('0x81')]=_0x2bb652['body']['refid'];break;}}if(_0x563990[_0x12d0('0x5a')]['id']){delete _0x563990[_0x12d0('0x5a')]['id'];}if(_[_0x12d0('0x94')](_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')])){throw new db['Sequelize'][(_0x12d0('0x77'))](_0x12d0('0x95'));}if(_[_0x12d0('0x94')](_0x563990[_0x12d0('0x5a')]['body'])||_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')]===''){throw new db['Sequelize'][(_0x12d0('0x77'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x12d0('0x94')](_0x563990[_0x12d0('0x5a')]['mapKey'])){throw new db[(_0x12d0('0x96'))][(_0x12d0('0x77'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5626bb);}if(!_['includes'](_0x5626bb,_0x563990[_0x12d0('0x5a')][_0x12d0('0x97')])){throw new db[(_0x12d0('0x96'))][(_0x12d0('0x77'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5626bb);}_0x173c50[_0x563990[_0x12d0('0x5a')]['mapKey']]=_0x563990['body']['from'];return db[_0x12d0('0x98')][_0x12d0('0x5f')]({'where':{'id':_0x563990[_0x12d0('0x75')]['ListId']},'include':[{'model':db[_0x12d0('0x76')],'as':_0x12d0('0x99'),'where':_0x173c50,'limit':0x1,'order':[[_0x12d0('0x78'),'DESC']]}]});})['then'](handleEntityNotFound(_0x2e7a0e,null))[_0x12d0('0x22')](function(_0xf63ddc){if(_0xf63ddc){_0x563990[_0x12d0('0x9a')]=_['omit'](_0xf63ddc,[_0x12d0('0x99')]);if(_0xf63ddc[_0x12d0('0x99')][_0x12d0('0x46')]){return _0xf63ddc[_0x12d0('0x99')][0x0];}var _0x46584c=_[_0x12d0('0x1c')](_0x563990[_0x12d0('0x5a')],{'firstName':_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')],'ListId':_0xf63ddc['id']});_0x46584c[_0x563990['body'][_0x12d0('0x97')]]=_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')];return db[_0x12d0('0x76')]['create'](_0x46584c,{'fields':_0x4c7fdc,'raw':!![]});}})['then'](handleEntityNotFound(_0x2e7a0e,null))[_0x12d0('0x22')](function(_0x38db8f){if(_0x38db8f){_0x563990[_0x12d0('0x9b')]=_0x38db8f;var _0x2d85d4={'ContactId':_0x38db8f['id'],'phone':_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')],'SmsAccountId':_0x2bb652[_0x12d0('0x58')]['id']};var _0x5d23c1={'ContactId':_0x38db8f['id'],'SmsAccountId':_0x2bb652[_0x12d0('0x58')]['id'],'closed':![]};return db[_0x12d0('0x9c')][_0x12d0('0x5f')]({'where':_0x5d23c1})['then'](function(_0x3fb6a0){if(_0x3fb6a0){return[_0x3fb6a0,![]];}return db[_0x12d0('0x9c')]['create'](_0x2d85d4)['then'](function(_0x19a477){return[_0x19a477,!![]];});});}})[_0x12d0('0x9d')](function(_0x3cd808,_0x4d61fc){_0x563990[_0x12d0('0x9e')]=_0x3cd808[_0x12d0('0x5b')]({'plain':!![]});_0x563990[_0x12d0('0x9e')][_0x12d0('0x9f')]=![];if(_0x4d61fc){if(_0x563990[_0x12d0('0x75')][_0x12d0('0xa0')]){_0x563990[_0x12d0('0xa1')]['push']({'id':0x0,'priority':_0x563990['applications'][_0x12d0('0x46')]+0x1,'app':_0x12d0('0xa2'),'appdata':_0x12d0('0xa3'),'interval':_0x12d0('0xa4')});}_0x563990[_0x12d0('0x9e')][_0x12d0('0x9f')]=!![];}return db['SmsMessage'][_0x12d0('0x59')]({'phone':_0x563990[_0x12d0('0x5a')][_0x12d0('0x7e')],'messageId':_0x563990[_0x12d0('0x5a')][_0x12d0('0x81')],'body':_0x563990[_0x12d0('0x5a')][_0x12d0('0x5a')],'SmsAccountId':_0x2bb652['params']['id'],'SmsInteractionId':_0x3cd808['id'],'direction':'in','ContactId':_0x3cd808[_0x12d0('0xa5')],'AttachmentId':_0x563990[_0x12d0('0x5a')][_0x12d0('0xa6')]});})[_0x12d0('0x22')](function(_0x12bb92){_0x563990[_0x12d0('0x28')]=_0x12bb92;if(_0x563990['interaction'][_0x12d0('0xa7')]){return db[_0x12d0('0xa8')][_0x12d0('0x5f')]({'attributes':['id',_0x12d0('0x37')],'where':{'id':_0x563990[_0x12d0('0x9e')][_0x12d0('0xa7')]}})[_0x12d0('0x22')](function(_0x2f04d0){if(_0x2f04d0){_0x563990[_0x12d0('0xa1')]['unshift']({'id':0x0,'priority':0x0,'app':_0x12d0('0xa9'),'appdata':_0x2f04d0['name']+','+(_0x563990[_0x12d0('0x75')][_0x12d0('0xaa')]||0xa),'interval':_0x12d0('0xa4')});}return respondWithRpcPromise(_0x12d0('0xab'),_0x12d0('0xac'),_0x563990);});}return respondWithRpcPromise(_0x12d0('0xab'),_0x12d0('0xac'),_0x563990);})[_0x12d0('0x22')](function(_0x210df8){if(_0x210df8){var _0x4c0858=0xc8;var _0x24f634='receiveMessage';logger[_0x12d0('0x23')](_0x12d0('0xad'),_0x24f634,_0x4c0858,_0x12d0('0xae'));logger[_0x12d0('0xaf')](_0x12d0('0xb0'),_0x24f634,_0x4c0858,_0x12d0('0xae'),JSON[_0x12d0('0x26')](_0x210df8));if(_0x563990[_0x12d0('0x75')][_0x12d0('0x3f')]===_0x12d0('0x7d')){return _0x2e7a0e[_0x12d0('0x2b')](_0x4c0858)[_0x12d0('0xb1')](_0x12d0('0xb2'),_0x12d0('0xb3'))[_0x12d0('0x38')](_0x12d0('0xb4'));}else{return _0x2e7a0e['status'](_0x4c0858)[_0x12d0('0x2f')](_0x210df8);}}})[_0x12d0('0x56')](handleError(_0x2e7a0e,null));};exports[_0x12d0('0xb5')]=function(_0x560988,_0x361903){var _0x2f73d0=_0x560988[_0x12d0('0x58')]['id'];var _0x718783=_0x560988[_0x12d0('0x5a')];var _0x721d1d=0xc8;var _0xe93991=null;return db[_0x12d0('0xb6')]['transaction']({'isolationLevel':db['sequelize'][_0x12d0('0xb7')][_0x12d0('0xb8')][_0x12d0('0xb9')]},function(_0x37ed60){return db[_0x12d0('0x3c')][_0x12d0('0x68')]({'where':{'id':_0x2f73d0},'transaction':_0x37ed60})[_0x12d0('0x22')](function(_0x3e0545){if(_0x3e0545){return db[_0x12d0('0xba')][_0x12d0('0x35')]({'where':{'SmsAccountId':_0x2f73d0},'transaction':_0x37ed60})[_0x12d0('0x22')](function(){var _0x48356d=_[_0x12d0('0x3b')](_0x718783,function(_0x42c085){_0x42c085[_0x12d0('0x65')]=_0x2f73d0;return _0x42c085;});return db[_0x12d0('0xba')]['bulkCreate'](_0x48356d,{'transaction':_0x37ed60});});}else{_0x721d1d=0x194;_0xe93991=[];}});})[_0x12d0('0x22')](function(){if(_0x721d1d!==0x194){return db[_0x12d0('0xba')][_0x12d0('0xbb')]({'where':{'SmsAccountId':_0x2f73d0},'order':_0x12d0('0xbc')})['then'](function(_0x2754ba){_0xe93991=_0x2754ba;});}})[_0x12d0('0x56')](function(_0x41b7b){_0x721d1d=0x1f4;logger[_0x12d0('0x27')](_0x41b7b[_0x12d0('0xbd')]);if(_0x41b7b[_0x12d0('0x37')]){delete _0x41b7b[_0x12d0('0x37')];}_0xe93991=_0x41b7b;})[_0x12d0('0xbe')](function(){if(_0xe93991===null){_0x361903[_0x12d0('0x2a')](_0x721d1d);}else{if(_0x721d1d===0x1f4){_0x361903['status'](_0x721d1d)[_0x12d0('0x38')](_0xe93991);}else{_0x361903[_0x12d0('0x2b')](_0x721d1d)[_0x12d0('0x2f')](_0xe93991);}}});};exports['getApplications']=function(_0xf6d204,_0x5c6a67,_0x9a0de3){var _0x3e3006={};var _0x4350b3={};var _0x262467;var _0x28470f;return db[_0x12d0('0x3c')][_0x12d0('0x68')]({'where':{'id':_0xf6d204[_0x12d0('0x58')]['id']}})['then'](handleEntityNotFound(_0x5c6a67,null))[_0x12d0('0x22')](function(_0x4b84f7){if(_0x4b84f7){_0x262467=_0x4b84f7;_0x4350b3[_0x12d0('0x40')]=_['keys'](db[_0x12d0('0xba')][_0x12d0('0x3d')]);_0x4350b3[_0x12d0('0x42')]=_[_0x12d0('0x41')](_0xf6d204[_0x12d0('0x42')]);_0x4350b3[_0x12d0('0x4d')]=_['intersection'](_0x4350b3['model'],_0x4350b3[_0x12d0('0x42')]);_0x3e3006[_0x12d0('0x44')]=_[_0x12d0('0x43')](_0x4350b3['model'],qs['fields'](_0xf6d204['query']['fields']));_0x3e3006['attributes']=_0x3e3006[_0x12d0('0x44')][_0x12d0('0x46')]?_0x3e3006[_0x12d0('0x44')]:_0x4350b3[_0x12d0('0x40')];_0x3e3006['order']=qs['sort'](_0xf6d204[_0x12d0('0x42')][_0x12d0('0x4b')]);_0x3e3006[_0x12d0('0x4c')]=qs[_0x12d0('0x4d')](_[_0x12d0('0x4e')](_0xf6d204[_0x12d0('0x42')],_0x4350b3['filters']));if(_0xf6d204['query'][_0x12d0('0x4f')]){_0x3e3006['where']=_[_0x12d0('0x50')](_0x3e3006['where'],{'$or':_[_0x12d0('0x3b')](_0x3e3006[_0x12d0('0x44')],function(_0x2c9b8e){var _0x5844de={};_0x5844de[_0x2c9b8e]={'$like':'%'+_0xf6d204[_0x12d0('0x42')][_0x12d0('0x4f')]+'%'};return _0x5844de;})});}_0x3e3006=_[_0x12d0('0x50')]({},_0x3e3006,_0xf6d204[_0x12d0('0x52')]);return _0x262467[_0x12d0('0xbf')](_0x3e3006);}})[_0x12d0('0x22')](function(_0x4da75){if(_0x4da75){_0x28470f=_0x4da75[_0x12d0('0x46')];if(!_0xf6d204['query'][_0x12d0('0x47')](_0x12d0('0x48'))){_0x3e3006[_0x12d0('0x69')]=qs[_0x12d0('0x69')](_0xf6d204[_0x12d0('0x42')][_0x12d0('0x69')]);_0x3e3006['offset']=qs[_0x12d0('0x49')](_0xf6d204[_0x12d0('0x42')][_0x12d0('0x49')]);}return _0x262467[_0x12d0('0xbf')](_0x3e3006);}})[_0x12d0('0x22')](function(_0xfa7461){if(_0xfa7461){return _0xfa7461?{'count':_0x28470f,'rows':_0xfa7461}:null;}})[_0x12d0('0x22')](respondWithResult(_0x5c6a67,null))[_0x12d0('0x56')](handleError(_0x5c6a67,null));};exports[_0x12d0('0xc0')]=function(_0x2fcdbc,_0x836332,_0x2ae88e){var _0x21da8a={'raw':![],'where':{}};var _0x53e999={};var _0x15b842={'count':0x0,'rows':[]};return db[_0x12d0('0x3c')][_0x12d0('0x68')]({'where':{'id':_0x2fcdbc[_0x12d0('0x58')]['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x836332,null))[_0x12d0('0x22')](function(_0xd910ab){if(_0xd910ab){_0x53e999[_0x12d0('0x40')]=_[_0x12d0('0x41')](db[_0x12d0('0x9c')]['rawAttributes']);_0x53e999[_0x12d0('0x42')]=_['keys'](_0x2fcdbc['query']);_0x53e999[_0x12d0('0x4d')]=_[_0x12d0('0x43')](_0x53e999['model'],_0x53e999[_0x12d0('0x42')]);_0x21da8a[_0x12d0('0x44')]=_['intersection'](_0x53e999[_0x12d0('0x40')],qs['fields'](_0x2fcdbc['query']['fields']));_0x21da8a[_0x12d0('0x44')]=_0x21da8a[_0x12d0('0x44')][_0x12d0('0x46')]?_0x21da8a[_0x12d0('0x44')]:_0x53e999['model'];if(!_0x2fcdbc[_0x12d0('0x42')]['hasOwnProperty'](_0x12d0('0x48'))){_0x21da8a[_0x12d0('0x69')]=qs['limit'](_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0x69')]);_0x21da8a[_0x12d0('0x49')]=qs['offset'](_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0x49')]);}_0x21da8a['order']=qs[_0x12d0('0x4b')](_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0x4b')]);_0x21da8a['where']=qs[_0x12d0('0x4d')](_[_0x12d0('0x4e')](_0x2fcdbc['query'],_0x53e999[_0x12d0('0x4d')]));_0x21da8a[_0x12d0('0x4c')][_0x12d0('0x65')]=_0xd910ab['id'];if(_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0x4f')]){_0x21da8a[_0x12d0('0x4c')]=_[_0x12d0('0x50')](_0x21da8a['where'],{'$or':_[_0x12d0('0x3b')](_0x21da8a[_0x12d0('0x44')],function(_0x15769c){var _0x91dd0f={};_0x91dd0f[_0x15769c]={'$like':'%'+_0x2fcdbc[_0x12d0('0x42')]['filter']+'%'};return _0x91dd0f;})});}_0x21da8a=_[_0x12d0('0x50')]({},_0x21da8a,_0x2fcdbc[_0x12d0('0x52')]);return db[_0x12d0('0x9c')][_0x12d0('0x2d')]({'where':_0x21da8a[_0x12d0('0x4c')]})[_0x12d0('0x22')](function(_0x1636b3){_0x15b842[_0x12d0('0x2d')]=_0x1636b3;if(_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0x53')]){_0x21da8a[_0x12d0('0x54')]=[{'model':db[_0x12d0('0x76')],'as':'Contact','required':![]},{'model':db[_0x12d0('0xa8')],'as':_0x12d0('0xc1'),'attributes':[_0x12d0('0x37'),_0x12d0('0xc2'),_0x12d0('0xc3')],'required':![]},{'model':db[_0x12d0('0xc4')],'as':_0x12d0('0xc5'),'attributes':['id',_0x12d0('0x37'),_0x12d0('0xc6')],'where':_0x2fcdbc['query'][_0x12d0('0xc7')]?{'id':_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0xc7')]}:undefined,'required':_0x2fcdbc[_0x12d0('0x42')][_0x12d0('0xc7')]?!![]:![]}];}return db[_0x12d0('0x9c')][_0x12d0('0x6a')](_0x21da8a);})['then'](function(_0x25f744){_0x15b842['rows']=_0x25f744;return _0x15b842;});}})[_0x12d0('0x22')](respondWithFilteredResult(_0x836332,_0x21da8a))[_0x12d0('0x56')](handleError(_0x836332,null));};exports[_0x12d0('0x38')]=function(_0x2a576a,_0x239033,_0x3e534d){var _0x320de4,_0x2fe450,_0x410f11;if(_[_0x12d0('0x94')](_0x2a576a['body'][_0x12d0('0x5a')])||_0x2a576a[_0x12d0('0x5a')][_0x12d0('0x5a')]===''){throw new db[(_0x12d0('0x96'))]['ValidationError'](_0x12d0('0xc8'));}if(_[_0x12d0('0x94')](_0x2a576a['body']['to'])){throw new db[(_0x12d0('0x96'))]['ValidationError'](_0x12d0('0xc9'));}_0x320de4=_0x2a576a['body']['to'];return db[_0x12d0('0x3c')][_0x12d0('0x5f')]({'where':{'id':_0x2a576a[_0x12d0('0x58')]['id']},'include':[{'model':db[_0x12d0('0x98')],'as':_0x12d0('0xca'),'include':[{'model':db[_0x12d0('0x76')],'as':_0x12d0('0x99'),'where':{'mobile':_0x320de4},'limit':0x1,'order':[[_0x12d0('0x78'),_0x12d0('0xcb')]]}]}]})[_0x12d0('0x22')](handleEntityNotFound(_0x239033,null))[_0x12d0('0x22')](function(_0x4edb9a){if(_0x4edb9a&&_0x4edb9a[_0x12d0('0xca')]){_0x2fe450=_0x4edb9a[_0x12d0('0x5b')]({'plain':!![]});if(_0x2fe450[_0x12d0('0xca')]&&_0x2fe450[_0x12d0('0xca')][_0x12d0('0x99')]['length']){return _0x2fe450[_0x12d0('0xca')][_0x12d0('0x99')][0x0];}return db[_0x12d0('0x76')][_0x12d0('0x59')](_[_0x12d0('0x1c')](_0x2a576a['body'],{'firstName':_0x320de4,'mobile':_0x320de4,'phone':_0x320de4,'ListId':_0x2fe450[_0x12d0('0x7c')]}));}})['then'](handleEntityNotFound(_0x239033,null))[_0x12d0('0x22')](function(_0x49921a){if(_0x49921a){_0x410f11=_0x49921a;return db['SmsInteraction'][_0x12d0('0x5f')]({'where':{'ContactId':_0x410f11['id'],'closed':![],'SmsAccountId':_0x2fe450['id']}})[_0x12d0('0x22')](function(_0x14a9b6){if(_0x14a9b6){return[_0x14a9b6,![]];}return db['SmsInteraction'][_0x12d0('0x59')]({'UserId':_0x2a576a[_0x12d0('0x5d')]['id'],'ContactId':_0x410f11['id'],'SmsAccountId':_0x2fe450['id'],'phone':_0x320de4,'firstMsgDirection':_0x12d0('0xcc'),'Messages':[_[_0x12d0('0x50')](_0x2a576a[_0x12d0('0x5a')],{'read':![],'body':_0x2a576a['body'][_0x12d0('0x5a')],'phone':_0x320de4,'SmsAccountId':_0x2fe450['id'],'UserId':_0x2a576a[_0x12d0('0x5d')]['id'],'ContactId':_0x410f11['id']})]},{'include':[{'model':db[_0x12d0('0xcd')],'as':_0x12d0('0xce')}]})[_0x12d0('0x22')](function(_0x429774){return[_0x429774,!![]];});});}})[_0x12d0('0x9d')](function(_0x10e033,_0x5582fa){if(_0x5582fa){return _0x10e033;}return db[_0x12d0('0xcd')][_0x12d0('0x59')](_[_0x12d0('0x50')](_0x2a576a[_0x12d0('0x5a')],{'read':![],'body':_0x2a576a['body']['body'],'phone':_0x320de4,'SmsAccountId':_0x2fe450['id'],'SmsInteractionId':_0x10e033['id'],'UserId':_0x2a576a[_0x12d0('0x5d')]['id'],'ContactId':_0x410f11['id']}))['then'](function(_0x24e07a){_0x10e033[_0x12d0('0xcf')][_0x12d0('0xce')]=[];_0x10e033[_0x12d0('0xcf')]['Messages'][_0x12d0('0xd0')](_0x24e07a[_0x12d0('0xcf')]);return _0x10e033;});})['then'](respondWithResult(_0x239033,null))[_0x12d0('0x56')](handleError(_0x239033,null));};exports[_0x12d0('0x2b')]=function(_0x3b4240,_0x15e774,_0x40f533){if(_0x3b4240['body']['id']){delete _0x3b4240[_0x12d0('0x5a')]['id'];}var _0x160c81,_0x3b2fb5,_0x5df16b;return db[_0x12d0('0x3c')]['find']({'where':{'id':_0x3b4240[_0x12d0('0x58')]['id']}})['then'](handleEntityNotFound(_0x15e774,null))[_0x12d0('0x22')](function(_0x3cae53){if(_0x3cae53){_0x5df16b=_0x3cae53;logger[_0x12d0('0xaf')](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0xd1'),_0x3cae53['type'],util[_0x12d0('0xd2')](_0x3b4240[_0x12d0('0x5a')],{'showHidden':![],'depth':null}));switch(_0x3cae53['type']){case'skebby':if(_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd3')]&&_0x3b4240['body'][_0x12d0('0x2b')]){_0x3b2fb5=_0x3b4240[_0x12d0('0x5a')]['status'];return db[_0x12d0('0xcd')][_0x12d0('0x5f')]({'where':{'messageId':_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd3')]}});}break;case _0x12d0('0x85'):if(_0x3b4240['body']['requestid']&&_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd4')]){_0x3b2fb5=_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd4')];return db['SmsMessage'][_0x12d0('0x5f')]({'where':{'messageId':_0x3b4240[_0x12d0('0x5a')]['requestid']}});}break;case _0x12d0('0x86'):if(_0x3b4240[_0x12d0('0x5a')][_0x12d0('0x87')]&&_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd5')]){_0x3b2fb5=_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd5')];return db['SmsMessage'][_0x12d0('0x5f')]({'where':{'messageId':_0x3b4240['body'][_0x12d0('0x87')]}});}break;case'infobip':var _0x20b8f0=_0x3b4240[_0x12d0('0x5a')][_0x12d0('0x8b')][0x0];if(_0x20b8f0[_0x12d0('0x81')]&&_0x20b8f0[_0x12d0('0x2b')][_0x12d0('0xd6')]===_0x12d0('0xd7')){_0x3b2fb5=_0x20b8f0[_0x12d0('0x2b')][_0x12d0('0xd6')];return db[_0x12d0('0xcd')][_0x12d0('0x5f')]({'where':{'messageId':_0x20b8f0['messageId']}});}break;case'clickatell':if(_0x3b4240[_0x12d0('0x5a')][_0x12d0('0x81')]&&_0x3b4240[_0x12d0('0x5a')]['status']){_0x3b2fb5=_0x3b4240[_0x12d0('0x5a')][_0x12d0('0x2b')];return db['SmsMessage'][_0x12d0('0x5f')]({'where':{'messageId':_0x3b4240['body'][_0x12d0('0x81')]}});}break;case _0x12d0('0x92'):if(_0x3b4240[_0x12d0('0x5a')][0x0]['message']['id']){_0x3b2fb5=_0x3b4240[_0x12d0('0x5a')][0x0][_0x12d0('0x3f')];return db['SmsMessage'][_0x12d0('0x5f')]({'where':{'messageId':_0x3b4240['body'][0x0][_0x12d0('0x28')]['id']}});}break;case _0x12d0('0x93'):if(_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd8')]&&_0x3b4240[_0x12d0('0x5a')][_0x12d0('0x2b')]){_0x3b2fb5=_0x3b4240[_0x12d0('0x5a')][_0x12d0('0x2b')];return db[_0x12d0('0xcd')][_0x12d0('0x5f')]({'where':{'messageId':_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd8')]}});}break;}}})[_0x12d0('0x22')](handleEntityNotFound(_0x15e774,null))['then'](function(_0x425966){if(_0x425966){_0x160c81=_0x425966;switch(_0x5df16b['type']){case _0x12d0('0x83'):if(_0x3b2fb5==='DELIVERED'){return _0x160c81['update']({'read':!![]});}else{logger['error'](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0x83'),util['inspect'](_0x3b4240['body'],{'showHidden':![],'depth':null}));}break;case _0x12d0('0x85'):if(_0x3b2fb5==='1'){return _0x160c81[_0x12d0('0x32')]({'read':!![]});}else{logger['error'](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0x83'),util['inspect'](_0x3b4240['body'],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x3b4240[_0x12d0('0x5a')][_0x12d0('0xd9')]&&_0x3b2fb5>=0xc8&&_0x3b2fb5<=0xce){return _0x160c81[_0x12d0('0x32')]({'read':!![]});}else{logger['error'](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0x86'),util[_0x12d0('0xd2')](_0x3b4240[_0x12d0('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x12d0('0x8a'):var _0x568238=_0x3b4240[_0x12d0('0x5a')]['results'][0x0];if(_0x568238[_0x12d0('0x2b')][_0x12d0('0xd6')]==='DELIVERED'){return _0x160c81[_0x12d0('0x32')]({'read':!![]});}else{logger[_0x12d0('0x27')](_0x12d0('0xad'),'status',_0x12d0('0x8a'),util['inspect'](_0x3b4240[_0x12d0('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x12d0('0xda'):if(_0x3b2fb5==_0x12d0('0xdb')||_0x3b2fb5==_0x12d0('0xdc')){return _0x160c81[_0x12d0('0x32')]({'read':!![]});}else{logger[_0x12d0('0x27')](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0xda'),util[_0x12d0('0xd2')](_0x3b4240[_0x12d0('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x12d0('0x92'):if(_0x3b2fb5=='message-delivered'){return _0x160c81[_0x12d0('0x32')]({'read':!![]});}else{logger[_0x12d0('0x27')](_0x12d0('0xad'),_0x12d0('0x2b'),'bandwidth',util[_0x12d0('0xd2')](_0x3b4240[_0x12d0('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x12d0('0x93'):if(_0x3b2fb5===_0x12d0('0xdd')||_0x3b2fb5===_0x12d0('0xde')){return _0x160c81['update']({'read':!![]});}else{logger[_0x12d0('0x27')](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0x93'),util[_0x12d0('0xd2')](_0x3b4240['body'],{'showHidden':![],'depth':null}));}break;}return _0x160c81;}})[_0x12d0('0x22')](respondWithResult(_0x15e774,null))[_0x12d0('0x56')](handleError(_0x15e774,null));};exports[_0x12d0('0xdf')]=function(_0x3a3854,_0xb5655a,_0x33813c){var _0x4f4cb2,_0xfd98d9,_0x5cb869;return db[_0x12d0('0x3c')]['find']({'where':{'id':_0x3a3854[_0x12d0('0x58')]['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0xb5655a,null))[_0x12d0('0x22')](function(_0x2e97a8){if(_0x2e97a8){_0x5cb869=_0x2e97a8;logger[_0x12d0('0xaf')](_0x12d0('0xad'),_0x12d0('0x2b'),'received\x20delivery\x20report\x20from',_0x2e97a8[_0x12d0('0x3f')],util['inspect'](_0x3a3854[_0x12d0('0x42')],{'showHidden':![],'depth':null}));switch(_0x2e97a8[_0x12d0('0x3f')]){case _0x12d0('0x8c'):if(_0x3a3854[_0x12d0('0x42')][_0x12d0('0xe0')]&&_0x3a3854[_0x12d0('0x42')]['state']){_0xfd98d9=_0x3a3854[_0x12d0('0x42')][_0x12d0('0xe1')];return db[_0x12d0('0xcd')][_0x12d0('0x5f')]({'where':{'messageId':_0x3a3854[_0x12d0('0x42')]['message-id']}});}break;}}})['then'](handleEntityNotFound(_0xb5655a,null))[_0x12d0('0x22')](function(_0x53f9b2){if(_0x53f9b2){_0x4f4cb2=_0x53f9b2;switch(_0x5cb869['type']){case _0x12d0('0x8c'):if(_0xfd98d9==='2'||_0xfd98d9==='6'){return _0x4f4cb2[_0x12d0('0x32')]({'read':!![]});}else{logger[_0x12d0('0x27')](_0x12d0('0xad'),_0x12d0('0x2b'),_0x12d0('0x8c'),util['inspect'](_0x3a3854[_0x12d0('0x42')],{'showHidden':![],'depth':null}));};break;}return _0x4f4cb2;}})['then'](respondWithResult(_0xb5655a,null))[_0x12d0('0x56')](handleError(_0xb5655a,null));};exports[_0x12d0('0xe2')]=function(_0x53f033,_0x58bc5a,_0x3818a0){return db[_0x12d0('0x3c')][_0x12d0('0x5f')]({'where':{'id':_0x53f033[_0x12d0('0x58')]['id']}})['then'](handleEntityNotFound(_0x58bc5a,null))['then'](function(_0x2fc35a){if(_0x2fc35a){return _0x2fc35a[_0x12d0('0xe2')](_0x53f033[_0x12d0('0x5a')][_0x12d0('0x6c')],_[_0x12d0('0xe3')](_0x53f033[_0x12d0('0x5a')],[_0x12d0('0x6c'),'id'])||{})[_0x12d0('0x9d')](function(_0x164e9e){for(var _0x30f6b4=0x0;_0x30f6b4<_0x53f033[_0x12d0('0x5a')][_0x12d0('0x6c')]['length'];_0x30f6b4+=0x1){socket[_0x12d0('0xe4')](_0x12d0('0xe5'),{'UserId':Number(_0x53f033['body'][_0x12d0('0x6c')][_0x30f6b4]),'SmsAccountId':Number(_0x53f033['params']['id'])});}return _0x164e9e;});}})[_0x12d0('0x22')](respondWithResult(_0x58bc5a,null))[_0x12d0('0x56')](handleError(_0x58bc5a,null));};exports[_0x12d0('0xe6')]=function(_0x29d14f,_0x3add02,_0x299895){return db[_0x12d0('0x3c')]['find']({'where':{'id':_0x29d14f['params']['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0x3add02,null))['then'](function(_0x46ba91){if(_0x46ba91){return _0x46ba91[_0x12d0('0xe6')](_0x29d14f[_0x12d0('0x42')][_0x12d0('0x6c')])[_0x12d0('0x22')](function(){if(_[_0x12d0('0xe7')](_0x29d14f[_0x12d0('0x42')][_0x12d0('0x6c')])){for(var _0x313ffd=0x0;_0x313ffd<_0x29d14f[_0x12d0('0x42')][_0x12d0('0x6c')][_0x12d0('0x46')];_0x313ffd+=0x1){socket[_0x12d0('0xe4')](_0x12d0('0xe8'),{'UserId':Number(_0x29d14f[_0x12d0('0x42')]['ids'][_0x313ffd]),'SmsAccountId':Number(_0x29d14f[_0x12d0('0x58')]['id'])});}}else{socket[_0x12d0('0xe4')](_0x12d0('0xe8'),{'UserId':Number(_0x29d14f[_0x12d0('0x42')][_0x12d0('0x6c')]),'SmsAccountId':Number(_0x29d14f[_0x12d0('0x58')]['id'])});}});}})[_0x12d0('0x22')](respondWithStatusCode(_0x3add02,null))[_0x12d0('0x56')](handleError(_0x3add02,null));};exports[_0x12d0('0xe9')]=function(_0x509146,_0xeb74f6,_0x21a0b5){var _0x4458a9={};var _0x5dc214={};var _0x14d85c;var _0x4351fc;return db[_0x12d0('0x3c')][_0x12d0('0x68')]({'where':{'id':_0x509146[_0x12d0('0x58')]['id']}})[_0x12d0('0x22')](handleEntityNotFound(_0xeb74f6,null))['then'](function(_0x122bd6){if(_0x122bd6){_0x14d85c=_0x122bd6;_0x5dc214[_0x12d0('0x40')]=_[_0x12d0('0x41')](db[_0x12d0('0xa8')]['rawAttributes']);_0x5dc214['query']=_[_0x12d0('0x41')](_0x509146['query']);_0x5dc214[_0x12d0('0x4d')]=_[_0x12d0('0x43')](_0x5dc214[_0x12d0('0x40')],_0x5dc214[_0x12d0('0x42')]);_0x4458a9['attributes']=_[_0x12d0('0x43')](_0x5dc214[_0x12d0('0x40')],qs['fields'](_0x509146[_0x12d0('0x42')]['fields']));_0x4458a9['attributes']=_0x4458a9[_0x12d0('0x44')]['length']?_0x4458a9[_0x12d0('0x44')]:_0x5dc214[_0x12d0('0x40')];_0x4458a9[_0x12d0('0x4a')]=qs[_0x12d0('0x4b')](_0x509146[_0x12d0('0x42')][_0x12d0('0x4b')]);_0x4458a9[_0x12d0('0x4c')]=qs['filters'](_[_0x12d0('0x4e')](_0x509146[_0x12d0('0x42')],_0x5dc214['filters']));if(_0x509146[_0x12d0('0x42')][_0x12d0('0x4f')]){_0x4458a9[_0x12d0('0x4c')]=_[_0x12d0('0x50')](_0x4458a9[_0x12d0('0x4c')],{'$or':_[_0x12d0('0x3b')](_0x4458a9[_0x12d0('0x44')],function(_0x41322d){var _0x2dfc3d={};_0x2dfc3d[_0x41322d]={'$like':'%'+_0x509146[_0x12d0('0x42')][_0x12d0('0x4f')]+'%'};return _0x2dfc3d;})});}_0x4458a9=_['merge']({},_0x4458a9,_0x509146[_0x12d0('0x52')]);return _0x14d85c['getAgents'](_0x4458a9);}})[_0x12d0('0x22')](function(_0x505474){if(_0x505474){_0x4351fc=_0x505474[_0x12d0('0x46')];if(!_0x509146[_0x12d0('0x42')]['hasOwnProperty'](_0x12d0('0x48'))){_0x4458a9['limit']=qs['limit'](_0x509146['query']['limit']);_0x4458a9[_0x12d0('0x49')]=qs[_0x12d0('0x49')](_0x509146[_0x12d0('0x42')][_0x12d0('0x49')]);}return _0x14d85c['getAgents'](_0x4458a9);}})[_0x12d0('0x22')](function(_0x14301e){if(_0x14301e){return _0x14301e?{'count':_0x4351fc,'rows':_0x14301e}:null;}})[_0x12d0('0x22')](respondWithResult(_0xeb74f6,null))[_0x12d0('0x56')](handleError(_0xeb74f6,null));};
\ No newline at end of file
+var _0x66b6=['end','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','get','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','SmsAccountId','Disposition','getDispositions','hasOwnProperty','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','SmsApplication','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','From','Body','MessageSid','sender','text','connectel','from','clicksend','messageId','Text','infobip','results','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','refid','ValidationError','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','contact','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','ContactId','AttachmentId','User','UserId','agent','waitForTheAssignedAgent','Start','startRouting','entity\x20found','Content-Type','text/xml','transaction','sequelize','ISOLATION_LEVELS','findOne','bulkCreate','findAndCountAll','stack','getApplications','getInteractions','Contact','Owner','internal','Tag','Tags','color','tag','CmList','List','out','SmsMessage','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','requestid','statusInt','message_id','status_code','DELIVERED','groupName','intelepeer','redif','error_code','DELIVERED_TO_GATEWAY','DELIVRD','csc','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','SmsAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status'];(function(_0x21dc29,_0x580c4b){var _0x3ae44e=function(_0x2aaa7d){while(--_0x2aaa7d){_0x21dc29['push'](_0x21dc29['shift']());}};_0x3ae44e(++_0x580c4b);}(_0x66b6,0xb9));var _0x666b=function(_0x4d21ff,_0x19d202){_0x4d21ff=_0x4d21ff-0x0;var _0x22b554=_0x66b6[_0x4d21ff];return _0x22b554;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x666b('0x0'));var zipdir=require(_0x666b('0x1'));var jsonpatch=require(_0x666b('0x2'));var rp=require(_0x666b('0x3'));var moment=require(_0x666b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x666b('0x5'));var util=require(_0x666b('0x6'));var path=require(_0x666b('0x7'));var sox=require(_0x666b('0x8'));var csv=require(_0x666b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x666b('0xa'));var _=require(_0x666b('0xb'));var squel=require(_0x666b('0xc'));var crypto=require('crypto');var jsforce=require(_0x666b('0xd'));var deskjs=require(_0x666b('0xe'));var toCsv=require(_0x666b('0x9'));var querystring=require(_0x666b('0xf'));var Papa=require(_0x666b('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x666b('0x11'));var logger=require('../../config/logger')(_0x666b('0x12'));var utils=require(_0x666b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x666b('0x14'));var db=require(_0x666b('0x15'))['db'];config[_0x666b('0x16')]=_[_0x666b('0x17')](config[_0x666b('0x16')],{'host':_0x666b('0x18'),'port':0x18eb});var socket=require(_0x666b('0x19'))(new Redis(config['redis']));require(_0x666b('0x1a'))[_0x666b('0x1b')](socket);var jayson=require(_0x666b('0x1c'));var client=jayson[_0x666b('0x1d')][_0x666b('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x1ddb6d,_0x220363,_0x181486,_0x201464){return new BPromise(function(_0x1c3268,_0x54374c){var _0x2c68ce=_0x201464||client;return _0x2c68ce[_0x666b('0x1f')](_0x1ddb6d,_0x181486)[_0x666b('0x20')](function(_0x11dcbd){logger[_0x666b('0x21')]('SmsAccount,\x20%s,\x20%s',_0x220363,_0x666b('0x22'));logger[_0x666b('0x23')](_0x666b('0x24'),_0x220363,_0x666b('0x22'),JSON[_0x666b('0x25')](_0x11dcbd));if(_0x11dcbd['error']){if(_0x11dcbd['error']['code']===0x1f4){logger[_0x666b('0x26')](_0x666b('0x27'),_0x220363,_0x11dcbd[_0x666b('0x26')][_0x666b('0x28')]);return _0x54374c(_0x11dcbd[_0x666b('0x26')][_0x666b('0x28')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x220363,_0x11dcbd[_0x666b('0x26')][_0x666b('0x28')]);return _0x1c3268(_0x11dcbd[_0x666b('0x26')]['message']);}else{logger[_0x666b('0x21')](_0x666b('0x27'),_0x220363,'request\x20sent');_0x1c3268(_0x11dcbd[_0x666b('0x29')][_0x666b('0x28')]);}})[_0x666b('0x2a')](function(_0x2b2176){logger['error']('SmsAccount,\x20%s,\x20%s',_0x220363,_0x2b2176);_0x54374c(_0x2b2176);});});}function respondWithStatusCode(_0x4422e1,_0x5c7906){_0x5c7906=_0x5c7906||0xcc;return function(_0x3dd749){if(_0x3dd749){return _0x4422e1[_0x666b('0x2b')](_0x5c7906);}return _0x4422e1[_0x666b('0x2c')](_0x5c7906)[_0x666b('0x2d')]();};}function respondWithResult(_0x5c69df,_0x3f3c12){_0x3f3c12=_0x3f3c12||0xc8;return function(_0x578e1d){if(_0x578e1d){return _0x5c69df[_0x666b('0x2c')](_0x3f3c12)[_0x666b('0x2e')](_0x578e1d);}};}function respondWithFilteredResult(_0x4c6974,_0x42ca62){return function(_0x3daa86){if(_0x3daa86){var _0x47e8a6=typeof _0x42ca62[_0x666b('0x2f')]===_0x666b('0x30')&&typeof _0x42ca62[_0x666b('0x31')]===_0x666b('0x30');var _0x4950a4=_0x3daa86[_0x666b('0x32')];var _0x1f47c2=_0x47e8a6?0x0:_0x42ca62[_0x666b('0x2f')];var _0x4eb8d0=_0x47e8a6?_0x3daa86[_0x666b('0x32')]:_0x42ca62['offset']+_0x42ca62[_0x666b('0x31')];var _0x291eab;if(_0x4eb8d0>=_0x4950a4){_0x4eb8d0=_0x4950a4;_0x291eab=0xc8;}else{_0x291eab=0xce;}_0x4c6974[_0x666b('0x2c')](_0x291eab);return _0x4c6974[_0x666b('0x33')](_0x666b('0x34'),_0x1f47c2+'-'+_0x4eb8d0+'/'+_0x4950a4)[_0x666b('0x2e')](_0x3daa86);}return null;};}function patchUpdates(_0x3c3ee0){return function(_0x4a95a0){try{jsonpatch[_0x666b('0x35')](_0x4a95a0,_0x3c3ee0,!![]);}catch(_0x5c1b71){return BPromise['reject'](_0x5c1b71);}return _0x4a95a0[_0x666b('0x36')]();};}function saveUpdates(_0x58940e,_0x54d333){return function(_0x11d504){if(_0x11d504){return _0x11d504['update'](_0x58940e)[_0x666b('0x20')](function(_0x12db7f){return _0x12db7f;});}return null;};}function removeEntity(_0x7698fc,_0x17b24b){return function(_0xc07c68){if(_0xc07c68){return _0xc07c68[_0x666b('0x37')]()[_0x666b('0x20')](function(){var _0x1ffc9f=_0xc07c68[_0x666b('0x38')]({'plain':!![]});var _0x227890='SmsAccounts';return db[_0x666b('0x39')]['destroy']({'where':{'type':_0x227890,'resourceId':_0x1ffc9f['id']}})[_0x666b('0x20')](function(){return _0xc07c68;});})[_0x666b('0x20')](function(){_0x7698fc[_0x666b('0x2c')](0xcc)[_0x666b('0x2d')]();});}};}function handleEntityNotFound(_0x355908,_0x2b1770){return function(_0x388bdf){if(!_0x388bdf){_0x355908['sendStatus'](0x194);}return _0x388bdf;};}function handleError(_0x4a9740,_0x22a3fc){_0x22a3fc=_0x22a3fc||0x1f4;return function(_0x391a56){logger[_0x666b('0x26')](_0x391a56['stack']);if(_0x391a56[_0x666b('0x3a')]){delete _0x391a56[_0x666b('0x3a')];}_0x4a9740[_0x666b('0x2c')](_0x22a3fc)[_0x666b('0x3b')](_0x391a56);};}exports[_0x666b('0x3c')]=function(_0x3073ac,_0xa94850){var _0x468df0={'include':[{'model':db[_0x666b('0x3d')],'as':_0x666b('0x3e')}]},_0x694d6={},_0x48cb5c={'count':0x0,'rows':[]};var _0x1f1d6b=_[_0x666b('0x3f')](db[_0x666b('0x40')][_0x666b('0x41')],function(_0x4d2d8d){return{'name':_0x4d2d8d[_0x666b('0x42')],'type':_0x4d2d8d[_0x666b('0x43')]['key']};});_0x694d6[_0x666b('0x44')]=_[_0x666b('0x3f')](_0x1f1d6b,_0x666b('0x3a'));_0x694d6[_0x666b('0x45')]=_[_0x666b('0x46')](_0x3073ac['query']);_0x694d6[_0x666b('0x47')]=_[_0x666b('0x48')](_0x694d6[_0x666b('0x44')],_0x694d6[_0x666b('0x45')]);_0x468df0[_0x666b('0x49')]=_[_0x666b('0x48')](_0x694d6[_0x666b('0x44')],qs[_0x666b('0x4a')](_0x3073ac[_0x666b('0x45')][_0x666b('0x4a')]));_0x468df0[_0x666b('0x49')]=_0x468df0['attributes'][_0x666b('0x4b')]?_0x468df0['attributes']:_0x694d6[_0x666b('0x44')];if(!_0x3073ac[_0x666b('0x45')]['hasOwnProperty'](_0x666b('0x4c'))){_0x468df0['limit']=qs[_0x666b('0x31')](_0x3073ac[_0x666b('0x45')][_0x666b('0x31')]);_0x468df0[_0x666b('0x2f')]=qs['offset'](_0x3073ac[_0x666b('0x45')][_0x666b('0x2f')]);}_0x468df0[_0x666b('0x4d')]=qs['sort'](_0x3073ac[_0x666b('0x45')][_0x666b('0x4e')]);_0x468df0[_0x666b('0x4f')]=qs['filters'](_[_0x666b('0x50')](_0x3073ac[_0x666b('0x45')],_0x694d6[_0x666b('0x47')]),_0x1f1d6b);if(_0x3073ac[_0x666b('0x45')][_0x666b('0x51')]){_0x468df0['where']=_[_0x666b('0x52')](_0x468df0[_0x666b('0x4f')],{'$or':_[_0x666b('0x3f')](_0x1f1d6b,function(_0x5b6734){if(_0x5b6734['type']!=='VIRTUAL'){var _0x5a05eb={};_0x5a05eb[_0x5b6734['name']]={'$like':'%'+_0x3073ac[_0x666b('0x45')][_0x666b('0x51')]+'%'};return _0x5a05eb;}})});}_0x468df0=_[_0x666b('0x52')]({},_0x468df0,_0x3073ac[_0x666b('0x53')]);var _0x10be7e={'where':_0x468df0[_0x666b('0x4f')]};return db['SmsAccount']['count'](_0x10be7e)[_0x666b('0x20')](function(_0x53e373){_0x48cb5c[_0x666b('0x32')]=_0x53e373;if(_0x3073ac['query'][_0x666b('0x54')]){_0x468df0[_0x666b('0x55')]=[{'all':!![]}];}return db[_0x666b('0x40')][_0x666b('0x56')](_0x468df0);})[_0x666b('0x20')](function(_0x4077de){_0x48cb5c[_0x666b('0x57')]=_0x4077de;return _0x48cb5c;})[_0x666b('0x20')](respondWithFilteredResult(_0xa94850,_0x468df0))[_0x666b('0x2a')](handleError(_0xa94850,null));};exports[_0x666b('0x58')]=function(_0x28b3b7,_0x3ec03e){var _0x193c6e={'raw':![],'where':{'id':_0x28b3b7[_0x666b('0x59')]['id']},'include':[{'model':db[_0x666b('0x3d')],'as':'mandatoryDispositionPause'}]},_0xd4b067={};_0xd4b067[_0x666b('0x44')]=_[_0x666b('0x46')](db[_0x666b('0x40')][_0x666b('0x41')]);_0xd4b067[_0x666b('0x45')]=_['keys'](_0x28b3b7[_0x666b('0x45')]);_0xd4b067[_0x666b('0x47')]=_[_0x666b('0x48')](_0xd4b067['model'],_0xd4b067[_0x666b('0x45')]);_0x193c6e['attributes']=_['intersection'](_0xd4b067['model'],qs[_0x666b('0x4a')](_0x28b3b7[_0x666b('0x45')][_0x666b('0x4a')]));_0x193c6e['attributes']=_0x193c6e[_0x666b('0x49')][_0x666b('0x4b')]?_0x193c6e[_0x666b('0x49')]:_0xd4b067['model'];if(_0x28b3b7[_0x666b('0x45')][_0x666b('0x54')]){_0x193c6e[_0x666b('0x55')]=[{'all':!![]}];}_0x193c6e=_[_0x666b('0x52')]({},_0x193c6e,_0x28b3b7['options']);return db[_0x666b('0x40')][_0x666b('0x5a')](_0x193c6e)[_0x666b('0x20')](handleEntityNotFound(_0x3ec03e,null))[_0x666b('0x20')](respondWithResult(_0x3ec03e,null))['catch'](handleError(_0x3ec03e,null));};exports[_0x666b('0x5b')]=function(_0x974bcf,_0x1818a6){return db['SmsAccount'][_0x666b('0x5b')](_0x974bcf[_0x666b('0x5c')],{})['then'](function(_0x21f6ab){var _0x369511=_0x974bcf[_0x666b('0x5d')]['get']({'plain':!![]});if(!_0x369511)throw new Error(_0x666b('0x5e'));if(_0x369511[_0x666b('0x5f')]===_0x666b('0x5d')){var _0x498173=_0x21f6ab[_0x666b('0x38')]({'plain':!![]});var _0x171420=_0x666b('0x60');return db[_0x666b('0x61')][_0x666b('0x5a')]({'where':{'name':_0x171420,'userProfileId':_0x369511[_0x666b('0x62')]},'raw':!![]})[_0x666b('0x20')](function(_0x41860d){if(_0x41860d&&_0x41860d[_0x666b('0x63')]===0x0){return db['UserProfileResource']['create']({'name':_0x498173['name'],'resourceId':_0x498173['id'],'type':_0x41860d['name'],'sectionId':_0x41860d['id']},{})['then'](function(){return _0x21f6ab;});}else{return _0x21f6ab;}})[_0x666b('0x2a')](function(_0x397adb){logger[_0x666b('0x26')](_0x666b('0x64'),_0x397adb);throw _0x397adb;});}return _0x21f6ab;})[_0x666b('0x20')](respondWithResult(_0x1818a6,0xc9))['catch'](handleError(_0x1818a6,null));};exports[_0x666b('0x65')]=function(_0x58a04c,_0x3adbe6){if(_0x58a04c[_0x666b('0x5c')]['id']){delete _0x58a04c[_0x666b('0x5c')]['id'];}return db['SmsAccount'][_0x666b('0x5a')]({'where':{'id':_0x58a04c['params']['id']},'include':[{'model':db[_0x666b('0x3d')],'as':_0x666b('0x3e')}]})[_0x666b('0x20')](handleEntityNotFound(_0x3adbe6,null))['then'](saveUpdates(_0x58a04c[_0x666b('0x5c')],null))[_0x666b('0x20')](respondWithResult(_0x3adbe6,null))[_0x666b('0x2a')](handleError(_0x3adbe6,null));};exports[_0x666b('0x37')]=function(_0x2df166,_0x10efad){return db[_0x666b('0x40')][_0x666b('0x5a')]({'where':{'id':_0x2df166[_0x666b('0x59')]['id']}})['then'](handleEntityNotFound(_0x10efad,null))[_0x666b('0x20')](removeEntity(_0x10efad,null))[_0x666b('0x2a')](handleError(_0x10efad,null));};exports[_0x666b('0x66')]=function(_0x6c1abb,_0x5c768f){return db[_0x666b('0x40')]['describe']()[_0x666b('0x20')](respondWithResult(_0x5c768f,null))[_0x666b('0x2a')](handleError(_0x5c768f,null));};exports[_0x666b('0x67')]=function(_0x47e9b1,_0x4b3eac,_0x3920f9){if(_0x47e9b1[_0x666b('0x5c')]['id']){delete _0x47e9b1[_0x666b('0x5c')]['id'];}return db[_0x666b('0x40')][_0x666b('0x5a')]({'where':{'id':_0x47e9b1[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x4b3eac,null))[_0x666b('0x20')](function(_0x557545){if(_0x557545){_0x47e9b1[_0x666b('0x5c')][_0x666b('0x68')]=_0x557545['id'];return db[_0x666b('0x69')][_0x666b('0x5b')](_0x47e9b1[_0x666b('0x5c')]);}})[_0x666b('0x20')](respondWithResult(_0x4b3eac,null))[_0x666b('0x2a')](handleError(_0x4b3eac,null));};exports[_0x666b('0x6a')]=function(_0x16d4bc,_0x308293,_0x193d5a){var _0x5bc4ca={'raw':![],'where':{}};var _0x4849e5={};var _0x2aef9a={'count':0x0,'rows':[]};return db[_0x666b('0x40')]['findOne']({'where':{'id':_0x16d4bc[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x308293,null))[_0x666b('0x20')](function(_0x421798){if(_0x421798){_0x4849e5['model']=_[_0x666b('0x46')](db[_0x666b('0x69')][_0x666b('0x41')]);_0x4849e5[_0x666b('0x45')]=_['keys'](_0x16d4bc[_0x666b('0x45')]);_0x4849e5[_0x666b('0x47')]=_['intersection'](_0x4849e5[_0x666b('0x44')],_0x4849e5[_0x666b('0x45')]);_0x5bc4ca[_0x666b('0x49')]=_[_0x666b('0x48')](_0x4849e5[_0x666b('0x44')],qs[_0x666b('0x4a')](_0x16d4bc[_0x666b('0x45')][_0x666b('0x4a')]));_0x5bc4ca[_0x666b('0x49')]=_0x5bc4ca[_0x666b('0x49')][_0x666b('0x4b')]?_0x5bc4ca[_0x666b('0x49')]:_0x4849e5[_0x666b('0x44')];if(!_0x16d4bc['query'][_0x666b('0x6b')](_0x666b('0x4c'))){_0x5bc4ca['limit']=qs[_0x666b('0x31')](_0x16d4bc[_0x666b('0x45')]['limit']);_0x5bc4ca[_0x666b('0x2f')]=qs['offset'](_0x16d4bc['query'][_0x666b('0x2f')]);}_0x5bc4ca[_0x666b('0x4d')]=qs[_0x666b('0x4e')](_0x16d4bc[_0x666b('0x45')][_0x666b('0x4e')]);_0x5bc4ca[_0x666b('0x4f')]=qs[_0x666b('0x47')](_[_0x666b('0x50')](_0x16d4bc['query'],_0x4849e5[_0x666b('0x47')]));_0x5bc4ca[_0x666b('0x4f')][_0x666b('0x68')]=_0x421798['id'];if(_0x16d4bc[_0x666b('0x45')][_0x666b('0x51')]){_0x5bc4ca[_0x666b('0x4f')]=_[_0x666b('0x52')](_0x5bc4ca[_0x666b('0x4f')],{'$or':_[_0x666b('0x3f')](_0x5bc4ca[_0x666b('0x49')],function(_0x3aae3){var _0x3a8c13={};_0x3a8c13[_0x3aae3]={'$like':'%'+_0x16d4bc['query']['filter']+'%'};return _0x3a8c13;})});}_0x5bc4ca=_[_0x666b('0x52')]({},_0x5bc4ca,_0x16d4bc[_0x666b('0x53')]);return db[_0x666b('0x69')][_0x666b('0x32')]({'where':_0x5bc4ca[_0x666b('0x4f')]})[_0x666b('0x20')](function(_0xa26bfd){_0x2aef9a['count']=_0xa26bfd;if(_0x16d4bc['query'][_0x666b('0x54')]){_0x5bc4ca[_0x666b('0x55')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x5bc4ca);})['then'](function(_0x2f80b5){_0x2aef9a[_0x666b('0x57')]=_0x2f80b5;return _0x2aef9a;});}})[_0x666b('0x20')](respondWithFilteredResult(_0x308293,_0x5bc4ca))[_0x666b('0x2a')](handleError(_0x308293,null));};exports[_0x666b('0x6c')]=function(_0x2df659,_0x29f00e,_0xd9b88a){return db['SmsAccount'][_0x666b('0x5a')]({'where':{'id':_0x2df659[_0x666b('0x59')]['id']}})['then'](handleEntityNotFound(_0x29f00e,null))[_0x666b('0x20')](function(_0x4eca59){if(_0x4eca59){return _0x4eca59[_0x666b('0x6c')](_0x2df659['query'][_0x666b('0x6d')]);}})[_0x666b('0x20')](respondWithStatusCode(_0x29f00e,null))['catch'](handleError(_0x29f00e,null));};exports[_0x666b('0x6e')]=function(_0x36a8ca,_0x29fb6c,_0x28e4da){if(_0x36a8ca[_0x666b('0x5c')]['id']){delete _0x36a8ca[_0x666b('0x5c')]['id'];}return db[_0x666b('0x40')]['find']({'where':{'id':_0x36a8ca[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x29fb6c,null))['then'](function(_0x57f595){if(_0x57f595){_0x36a8ca[_0x666b('0x5c')][_0x666b('0x68')]=_0x57f595['id'];return db['CannedAnswer'][_0x666b('0x5b')](_0x36a8ca['body']);}})['then'](respondWithResult(_0x29fb6c,null))['catch'](handleError(_0x29fb6c,null));};exports[_0x666b('0x6f')]=function(_0x138919,_0x1b193b,_0x2694e6){var _0x5816d9={'raw':![],'where':{}};var _0x5708da={};var _0x2d8222={'count':0x0,'rows':[]};return db[_0x666b('0x40')]['findOne']({'where':{'id':_0x138919[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x1b193b,null))['then'](function(_0x305a1c){if(_0x305a1c){_0x5708da[_0x666b('0x44')]=_['keys'](db[_0x666b('0x70')][_0x666b('0x41')]);_0x5708da['query']=_[_0x666b('0x46')](_0x138919[_0x666b('0x45')]);_0x5708da[_0x666b('0x47')]=_[_0x666b('0x48')](_0x5708da[_0x666b('0x44')],_0x5708da['query']);_0x5816d9[_0x666b('0x49')]=_[_0x666b('0x48')](_0x5708da[_0x666b('0x44')],qs[_0x666b('0x4a')](_0x138919[_0x666b('0x45')]['fields']));_0x5816d9[_0x666b('0x49')]=_0x5816d9[_0x666b('0x49')][_0x666b('0x4b')]?_0x5816d9[_0x666b('0x49')]:_0x5708da[_0x666b('0x44')];if(!_0x138919['query'][_0x666b('0x6b')](_0x666b('0x4c'))){_0x5816d9[_0x666b('0x31')]=qs['limit'](_0x138919['query'][_0x666b('0x31')]);_0x5816d9[_0x666b('0x2f')]=qs[_0x666b('0x2f')](_0x138919[_0x666b('0x45')][_0x666b('0x2f')]);}_0x5816d9[_0x666b('0x4d')]=qs[_0x666b('0x4e')](_0x138919['query']['sort']);_0x5816d9['where']=qs[_0x666b('0x47')](_['pick'](_0x138919[_0x666b('0x45')],_0x5708da[_0x666b('0x47')]));_0x5816d9[_0x666b('0x4f')][_0x666b('0x68')]=_0x305a1c['id'];if(_0x138919[_0x666b('0x45')][_0x666b('0x51')]){_0x5816d9['where']=_[_0x666b('0x52')](_0x5816d9[_0x666b('0x4f')],{'$or':_[_0x666b('0x3f')](_0x5816d9[_0x666b('0x49')],function(_0x2c53cc){var _0x19c613={};_0x19c613[_0x2c53cc]={'$like':'%'+_0x138919[_0x666b('0x45')][_0x666b('0x51')]+'%'};return _0x19c613;})});}_0x5816d9=_[_0x666b('0x52')]({},_0x5816d9,_0x138919['options']);return db[_0x666b('0x70')][_0x666b('0x32')]({'where':_0x5816d9[_0x666b('0x4f')]})['then'](function(_0x141342){_0x2d8222[_0x666b('0x32')]=_0x141342;if(_0x138919[_0x666b('0x45')][_0x666b('0x54')]){_0x5816d9[_0x666b('0x55')]=[{'all':!![]}];}return db[_0x666b('0x70')][_0x666b('0x56')](_0x5816d9);})[_0x666b('0x20')](function(_0x44a0b5){_0x2d8222[_0x666b('0x57')]=_0x44a0b5;return _0x2d8222;});}})[_0x666b('0x20')](respondWithFilteredResult(_0x1b193b,_0x5816d9))[_0x666b('0x2a')](handleError(_0x1b193b,null));};exports[_0x666b('0x71')]=function(_0x189571,_0x53967f,_0x364f05){return db[_0x666b('0x40')][_0x666b('0x5a')]({'where':{'id':_0x189571['params']['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x53967f,null))[_0x666b('0x20')](function(_0x26789b){if(_0x26789b){return _0x26789b['removeAnswers'](_0x189571[_0x666b('0x45')][_0x666b('0x6d')]);}})[_0x666b('0x20')](respondWithStatusCode(_0x53967f,null))[_0x666b('0x2a')](handleError(_0x53967f,null));};exports[_0x666b('0x72')]=function(_0x3b938d,_0xd3a775,_0x11e11e){var _0x5de346={'channel':'sms'};var _0x2ae759=[];var _0xfa0b3=[];var _0x211cd8={};return db['SmsAccount']['find']({'where':{'id':_0x3b938d[_0x666b('0x59')]['id']},'include':[{'model':db[_0x666b('0x73')],'as':_0x666b('0x74')}]})[_0x666b('0x20')](handleEntityNotFound(_0xd3a775,null))[_0x666b('0x20')](function(_0x440714){_0x5de346[_0x666b('0x75')]=_0x440714;_0x5de346[_0x666b('0x76')]=_[_0x666b('0x77')](_0x440714[_0x666b('0x74')],[_0x666b('0x78')],[_0x666b('0x79')]);if(_0x5de346[_0x666b('0x75')]['Applications']){delete _0x5de346['account'][_0x666b('0x74')];}return db[_0x666b('0x7a')][_0x666b('0x66')]();})['then'](function(_0x2eeb83){if(!_0x2eeb83){throw new db[(_0x666b('0x7b'))]['ValidationError'](_0x666b('0x7c'));}_0x2ae759=_[_0x666b('0x7d')](_[_0x666b('0x46')](_0x2eeb83),[_0x666b('0x7e'),_0x666b('0x7f')]);_0xfa0b3=_['difference'](_['keys'](_0x2eeb83),[_0x666b('0x7e'),_0x666b('0x7f'),_0x666b('0x80'),_0x666b('0x81')]);_0x5de346[_0x666b('0x5c')]={'mapKey':_0x666b('0x82')};if(_0x5de346[_0x666b('0x75')][_0x666b('0x43')]){switch(_0x5de346[_0x666b('0x75')][_0x666b('0x43')]){case _0x666b('0x83'):_0x5de346[_0x666b('0x5c')]['from']=_0x3b938d[_0x666b('0x5c')][_0x666b('0x84')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x85')];_0x5de346[_0x666b('0x5c')]['messageId']=_0x3b938d[_0x666b('0x5c')][_0x666b('0x86')];break;case'skebby':_0x5de346[_0x666b('0x5c')]['from']='+'+_0x3b938d[_0x666b('0x5c')][_0x666b('0x87')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x88')];break;case _0x666b('0x89'):_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')]=_0x3b938d[_0x666b('0x5c')]['from'];_0x5de346[_0x666b('0x5c')]['body']=_0x3b938d[_0x666b('0x5c')][_0x666b('0x28')];break;case _0x666b('0x8b'):_0x5de346[_0x666b('0x5c')]['from']=_0x3b938d[_0x666b('0x5c')]['from'];_0x5de346[_0x666b('0x5c')]['body']=_0x3b938d[_0x666b('0x5c')][_0x666b('0x5c')];_0x5de346[_0x666b('0x5c')][_0x666b('0x8c')]=_0x3b938d['body']['message_id'];break;case'plivo':_0x5de346[_0x666b('0x5c')]['from']=_0x3b938d[_0x666b('0x5c')][_0x666b('0x84')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x8d')];_0x5de346['body'][_0x666b('0x8c')]=_0x3b938d[_0x666b('0x5c')]['MessageUUID'];break;case _0x666b('0x8e'):_0x5de346[_0x666b('0x5c')]['from']='+'+_0x3b938d[_0x666b('0x5c')]['results'][0x0][_0x666b('0x8a')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x8f')][0x0][_0x666b('0x88')];_0x5de346[_0x666b('0x5c')][_0x666b('0x8c')]=_0x3b938d['body'][_0x666b('0x8f')][0x0][_0x666b('0x8c')];break;case'csc':_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')]=_0x3b938d['body'][_0x666b('0x90')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x91')]['message'];break;case _0x666b('0x92'):_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x93')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x88')];_0x5de346['body'][_0x666b('0x8c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x94')];break;case _0x666b('0x95'):_0x5de346[_0x666b('0x5c')][_0x666b('0x8c')]=_0x3b938d['body'][0x0]['message']['id'];_0x5de346['body'][_0x666b('0x8a')]=_0x3b938d[_0x666b('0x5c')][0x0][_0x666b('0x28')][_0x666b('0x8a')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d[_0x666b('0x5c')][0x0][_0x666b('0x28')][_0x666b('0x88')];break;case'intelepeer':_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x8a')];_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')]=_0x3b938d['body'][_0x666b('0x28')];_0x5de346[_0x666b('0x5c')][_0x666b('0x8c')]=_0x3b938d[_0x666b('0x5c')][_0x666b('0x96')];break;}}if(_0x5de346[_0x666b('0x5c')]['id']){delete _0x5de346[_0x666b('0x5c')]['id'];}if(_['isNil'](_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')])){throw new db[(_0x666b('0x7b'))][(_0x666b('0x97'))](_0x666b('0x98'));}if(_[_0x666b('0x99')](_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')])||_0x5de346[_0x666b('0x5c')]['body']===''){throw new db[(_0x666b('0x7b'))][(_0x666b('0x97'))](_0x666b('0x9a'));}if(_['isNil'](_0x5de346[_0x666b('0x5c')][_0x666b('0x9b')])){throw new db[(_0x666b('0x7b'))][(_0x666b('0x97'))](_0x666b('0x9c')+_0xfa0b3);}if(!_[_0x666b('0x9d')](_0xfa0b3,_0x5de346[_0x666b('0x5c')][_0x666b('0x9b')])){throw new db[(_0x666b('0x7b'))][(_0x666b('0x97'))](_0x666b('0x9e')+_0xfa0b3);}_0x211cd8[_0x5de346[_0x666b('0x5c')][_0x666b('0x9b')]]=_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')];return db['CmList'][_0x666b('0x5a')]({'where':{'id':_0x5de346[_0x666b('0x75')]['ListId']},'include':[{'model':db['CmContact'],'as':_0x666b('0x9f'),'where':_0x211cd8,'limit':0x1,'order':[[_0x666b('0x7f'),_0x666b('0xa0')]]}]});})[_0x666b('0x20')](handleEntityNotFound(_0xd3a775,null))[_0x666b('0x20')](function(_0x3366f4){if(_0x3366f4){_0x5de346[_0x666b('0xa1')]=_['omit'](_0x3366f4,[_0x666b('0x9f')]);if(_0x3366f4[_0x666b('0x9f')][_0x666b('0x4b')]){return _0x3366f4[_0x666b('0x9f')][0x0];}var _0xc6499a=_[_0x666b('0x17')](_0x5de346['body'],{'firstName':_0x5de346['body']['from'],'ListId':_0x3366f4['id']});_0xc6499a[_0x5de346[_0x666b('0x5c')][_0x666b('0x9b')]]=_0x5de346[_0x666b('0x5c')]['from'];return db[_0x666b('0x7a')][_0x666b('0x5b')](_0xc6499a,{'fields':_0x2ae759,'raw':!![]});}})[_0x666b('0x20')](handleEntityNotFound(_0xd3a775,null))[_0x666b('0x20')](function(_0x32a56f){if(_0x32a56f){_0x5de346[_0x666b('0xa2')]=_0x32a56f;var _0x247b2d={'ContactId':_0x32a56f['id'],'phone':_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')],'SmsAccountId':_0x3b938d[_0x666b('0x59')]['id']};var _0x4f7d43={'ContactId':_0x32a56f['id'],'SmsAccountId':_0x3b938d[_0x666b('0x59')]['id'],'closed':![]};return db[_0x666b('0xa3')][_0x666b('0x5a')]({'where':_0x4f7d43})['then'](function(_0x279939){if(_0x279939){return[_0x279939,![]];}return db[_0x666b('0xa3')]['create'](_0x247b2d)[_0x666b('0x20')](function(_0x59cfbd){return[_0x59cfbd,!![]];});});}})[_0x666b('0xa4')](function(_0x559be3,_0x9073d7){_0x5de346[_0x666b('0xa5')]=_0x559be3[_0x666b('0x38')]({'plain':!![]});_0x5de346['interaction'][_0x666b('0xa6')]=![];if(_0x9073d7){if(_0x5de346['account'][_0x666b('0xa7')]){_0x5de346[_0x666b('0x76')]['push']({'id':0x0,'priority':_0x5de346[_0x666b('0x76')]['length']+0x1,'app':_0x666b('0xa8'),'appdata':_0x666b('0xa9'),'interval':_0x666b('0xaa')});}_0x5de346[_0x666b('0xa5')]['created']=!![];}return db['SmsMessage'][_0x666b('0x5b')]({'phone':_0x5de346[_0x666b('0x5c')][_0x666b('0x8a')],'messageId':_0x5de346[_0x666b('0x5c')][_0x666b('0x8c')],'body':_0x5de346[_0x666b('0x5c')][_0x666b('0x5c')],'SmsAccountId':_0x3b938d[_0x666b('0x59')]['id'],'SmsInteractionId':_0x559be3['id'],'direction':'in','ContactId':_0x559be3[_0x666b('0xab')],'AttachmentId':_0x5de346[_0x666b('0x5c')][_0x666b('0xac')]});})[_0x666b('0x20')](function(_0x4e88a3){_0x5de346[_0x666b('0x28')]=_0x4e88a3;if(_0x5de346[_0x666b('0xa5')]['UserId']){return db[_0x666b('0xad')][_0x666b('0x5a')]({'attributes':['id',_0x666b('0x3a')],'where':{'id':_0x5de346['interaction'][_0x666b('0xae')]}})[_0x666b('0x20')](function(_0x42f654){if(_0x42f654){_0x5de346[_0x666b('0x76')]['unshift']({'id':0x0,'priority':0x0,'app':_0x666b('0xaf'),'appdata':_0x42f654[_0x666b('0x3a')]+','+(_0x5de346[_0x666b('0x75')][_0x666b('0xb0')]||0xa),'interval':_0x666b('0xaa')});}return respondWithRpcPromise(_0x666b('0xb1'),_0x666b('0xb2'),_0x5de346);});}return respondWithRpcPromise(_0x666b('0xb1'),_0x666b('0xb2'),_0x5de346);})[_0x666b('0x20')](function(_0x18740c){if(_0x18740c){var _0x2e8957=0xc8;var _0x58ca6f='receiveMessage';logger[_0x666b('0x21')](_0x666b('0x24'),_0x58ca6f,_0x2e8957,_0x666b('0xb3'));logger[_0x666b('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x58ca6f,_0x2e8957,_0x666b('0xb3'),JSON[_0x666b('0x25')](_0x18740c));if(_0x5de346['account'][_0x666b('0x43')]===_0x666b('0x83')){return _0xd3a775['status'](_0x2e8957)[_0x666b('0x33')](_0x666b('0xb4'),_0x666b('0xb5'))[_0x666b('0x3b')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0xd3a775['status'](_0x2e8957)[_0x666b('0x2e')](_0x18740c);}}})[_0x666b('0x2a')](handleError(_0xd3a775,null));};exports['addApplications']=function(_0x24dc74,_0x1ba7db){var _0x2756ba=_0x24dc74[_0x666b('0x59')]['id'];var _0xfaa80b=_0x24dc74[_0x666b('0x5c')];var _0x292b16=0xc8;var _0x1910d2=null;return db['sequelize'][_0x666b('0xb6')]({'isolationLevel':db[_0x666b('0xb7')]['Transaction'][_0x666b('0xb8')]['READ_COMMITTED']},function(_0x549006){return db[_0x666b('0x40')][_0x666b('0xb9')]({'where':{'id':_0x2756ba},'transaction':_0x549006})['then'](function(_0x1f290c){if(_0x1f290c){return db['SmsApplication'][_0x666b('0x37')]({'where':{'SmsAccountId':_0x2756ba},'transaction':_0x549006})['then'](function(){var _0xe2e827=_[_0x666b('0x3f')](_0xfaa80b,function(_0x43c544){_0x43c544['SmsAccountId']=_0x2756ba;return _0x43c544;});return db[_0x666b('0x73')][_0x666b('0xba')](_0xe2e827,{'transaction':_0x549006});});}else{_0x292b16=0x194;_0x1910d2=[];}});})['then'](function(){if(_0x292b16!==0x194){return db[_0x666b('0x73')][_0x666b('0xbb')]({'where':{'SmsAccountId':_0x2756ba},'order':'priority'})[_0x666b('0x20')](function(_0x30b288){_0x1910d2=_0x30b288;});}})[_0x666b('0x2a')](function(_0x1a7aa9){_0x292b16=0x1f4;logger[_0x666b('0x26')](_0x1a7aa9[_0x666b('0xbc')]);if(_0x1a7aa9[_0x666b('0x3a')]){delete _0x1a7aa9[_0x666b('0x3a')];}_0x1910d2=_0x1a7aa9;})['finally'](function(){if(_0x1910d2===null){_0x1ba7db[_0x666b('0x2b')](_0x292b16);}else{if(_0x292b16===0x1f4){_0x1ba7db[_0x666b('0x2c')](_0x292b16)[_0x666b('0x3b')](_0x1910d2);}else{_0x1ba7db[_0x666b('0x2c')](_0x292b16)[_0x666b('0x2e')](_0x1910d2);}}});};exports[_0x666b('0xbd')]=function(_0x2bd4d7,_0x26433d,_0x5dcd97){var _0x4b9e3d={};var _0x5e7454={};var _0x2596d2;var _0x59e661;return db[_0x666b('0x40')][_0x666b('0xb9')]({'where':{'id':_0x2bd4d7['params']['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x26433d,null))[_0x666b('0x20')](function(_0x524350){if(_0x524350){_0x2596d2=_0x524350;_0x5e7454['model']=_[_0x666b('0x46')](db[_0x666b('0x73')][_0x666b('0x41')]);_0x5e7454['query']=_['keys'](_0x2bd4d7['query']);_0x5e7454[_0x666b('0x47')]=_[_0x666b('0x48')](_0x5e7454[_0x666b('0x44')],_0x5e7454[_0x666b('0x45')]);_0x4b9e3d[_0x666b('0x49')]=_[_0x666b('0x48')](_0x5e7454[_0x666b('0x44')],qs[_0x666b('0x4a')](_0x2bd4d7[_0x666b('0x45')][_0x666b('0x4a')]));_0x4b9e3d['attributes']=_0x4b9e3d[_0x666b('0x49')][_0x666b('0x4b')]?_0x4b9e3d[_0x666b('0x49')]:_0x5e7454[_0x666b('0x44')];_0x4b9e3d[_0x666b('0x4d')]=qs[_0x666b('0x4e')](_0x2bd4d7[_0x666b('0x45')][_0x666b('0x4e')]);_0x4b9e3d[_0x666b('0x4f')]=qs[_0x666b('0x47')](_[_0x666b('0x50')](_0x2bd4d7[_0x666b('0x45')],_0x5e7454[_0x666b('0x47')]));if(_0x2bd4d7['query'][_0x666b('0x51')]){_0x4b9e3d[_0x666b('0x4f')]=_[_0x666b('0x52')](_0x4b9e3d[_0x666b('0x4f')],{'$or':_[_0x666b('0x3f')](_0x4b9e3d[_0x666b('0x49')],function(_0x1efba0){var _0xfddae9={};_0xfddae9[_0x1efba0]={'$like':'%'+_0x2bd4d7['query'][_0x666b('0x51')]+'%'};return _0xfddae9;})});}_0x4b9e3d=_[_0x666b('0x52')]({},_0x4b9e3d,_0x2bd4d7['options']);return _0x2596d2['getApplications'](_0x4b9e3d);}})[_0x666b('0x20')](function(_0x42b0cb){if(_0x42b0cb){_0x59e661=_0x42b0cb[_0x666b('0x4b')];if(!_0x2bd4d7['query']['hasOwnProperty'](_0x666b('0x4c'))){_0x4b9e3d[_0x666b('0x31')]=qs[_0x666b('0x31')](_0x2bd4d7[_0x666b('0x45')][_0x666b('0x31')]);_0x4b9e3d[_0x666b('0x2f')]=qs[_0x666b('0x2f')](_0x2bd4d7[_0x666b('0x45')][_0x666b('0x2f')]);}return _0x2596d2[_0x666b('0xbd')](_0x4b9e3d);}})[_0x666b('0x20')](function(_0x104081){if(_0x104081){return _0x104081?{'count':_0x59e661,'rows':_0x104081}:null;}})[_0x666b('0x20')](respondWithResult(_0x26433d,null))[_0x666b('0x2a')](handleError(_0x26433d,null));};exports[_0x666b('0xbe')]=function(_0x50b1cd,_0x202b4d,_0x2cc29a){var _0x16478e={'raw':![],'where':{}};var _0xabb76a={};var _0x20849f={'count':0x0,'rows':[]};return db[_0x666b('0x40')][_0x666b('0xb9')]({'where':{'id':_0x50b1cd[_0x666b('0x59')]['id']}})['then'](handleEntityNotFound(_0x202b4d,null))[_0x666b('0x20')](function(_0xdf53b5){if(_0xdf53b5){_0xabb76a[_0x666b('0x44')]=_[_0x666b('0x46')](db['SmsInteraction'][_0x666b('0x41')]);_0xabb76a[_0x666b('0x45')]=_[_0x666b('0x46')](_0x50b1cd[_0x666b('0x45')]);_0xabb76a['filters']=_[_0x666b('0x48')](_0xabb76a['model'],_0xabb76a[_0x666b('0x45')]);_0x16478e[_0x666b('0x49')]=_[_0x666b('0x48')](_0xabb76a[_0x666b('0x44')],qs['fields'](_0x50b1cd[_0x666b('0x45')][_0x666b('0x4a')]));_0x16478e[_0x666b('0x49')]=_0x16478e[_0x666b('0x49')][_0x666b('0x4b')]?_0x16478e['attributes']:_0xabb76a[_0x666b('0x44')];if(!_0x50b1cd[_0x666b('0x45')][_0x666b('0x6b')](_0x666b('0x4c'))){_0x16478e[_0x666b('0x31')]=qs[_0x666b('0x31')](_0x50b1cd[_0x666b('0x45')][_0x666b('0x31')]);_0x16478e['offset']=qs[_0x666b('0x2f')](_0x50b1cd['query']['offset']);}_0x16478e[_0x666b('0x4d')]=qs['sort'](_0x50b1cd[_0x666b('0x45')][_0x666b('0x4e')]);_0x16478e['where']=qs[_0x666b('0x47')](_['pick'](_0x50b1cd[_0x666b('0x45')],_0xabb76a['filters']));_0x16478e[_0x666b('0x4f')][_0x666b('0x68')]=_0xdf53b5['id'];if(_0x50b1cd[_0x666b('0x45')][_0x666b('0x51')]){_0x16478e[_0x666b('0x4f')]=_[_0x666b('0x52')](_0x16478e[_0x666b('0x4f')],{'$or':_['map'](_0x16478e[_0x666b('0x49')],function(_0x3120cf){var _0x5f4bdf={};_0x5f4bdf[_0x3120cf]={'$like':'%'+_0x50b1cd[_0x666b('0x45')][_0x666b('0x51')]+'%'};return _0x5f4bdf;})});}_0x16478e=_['merge']({},_0x16478e,_0x50b1cd[_0x666b('0x53')]);return db[_0x666b('0xa3')][_0x666b('0x32')]({'where':_0x16478e[_0x666b('0x4f')]})[_0x666b('0x20')](function(_0x2fc38c){_0x20849f[_0x666b('0x32')]=_0x2fc38c;if(_0x50b1cd['query'][_0x666b('0x54')]){_0x16478e[_0x666b('0x55')]=[{'model':db[_0x666b('0x7a')],'as':_0x666b('0xbf'),'required':![]},{'model':db[_0x666b('0xad')],'as':_0x666b('0xc0'),'attributes':['name','fullname',_0x666b('0xc1')],'required':![]},{'model':db[_0x666b('0xc2')],'as':_0x666b('0xc3'),'attributes':['id',_0x666b('0x3a'),_0x666b('0xc4')],'where':_0x50b1cd[_0x666b('0x45')][_0x666b('0xc5')]?{'id':_0x50b1cd[_0x666b('0x45')][_0x666b('0xc5')]}:undefined,'required':_0x50b1cd[_0x666b('0x45')][_0x666b('0xc5')]?!![]:![]}];}return db[_0x666b('0xa3')][_0x666b('0x56')](_0x16478e);})['then'](function(_0x8be5a3){_0x20849f[_0x666b('0x57')]=_0x8be5a3;return _0x20849f;});}})[_0x666b('0x20')](respondWithFilteredResult(_0x202b4d,_0x16478e))['catch'](handleError(_0x202b4d,null));};exports[_0x666b('0x3b')]=function(_0x4dd36c,_0x4a7dba,_0x4b7586){var _0x175c7f,_0x1a9629,_0x46c6b2;if(_[_0x666b('0x99')](_0x4dd36c[_0x666b('0x5c')][_0x666b('0x5c')])||_0x4dd36c['body'][_0x666b('0x5c')]===''){throw new db[(_0x666b('0x7b'))][(_0x666b('0x97'))](_0x666b('0x9a'));}if(_[_0x666b('0x99')](_0x4dd36c[_0x666b('0x5c')]['to'])){throw new db[(_0x666b('0x7b'))][(_0x666b('0x97'))]('to\x20is\x20mandatory');}_0x175c7f=_0x4dd36c['body']['to'];return db[_0x666b('0x40')][_0x666b('0x5a')]({'where':{'id':_0x4dd36c[_0x666b('0x59')]['id']},'include':[{'model':db[_0x666b('0xc6')],'as':_0x666b('0xc7'),'include':[{'model':db[_0x666b('0x7a')],'as':_0x666b('0x9f'),'where':{'mobile':_0x175c7f},'limit':0x1,'order':[[_0x666b('0x7f'),_0x666b('0xa0')]]}]}]})[_0x666b('0x20')](handleEntityNotFound(_0x4a7dba,null))[_0x666b('0x20')](function(_0x10b52c){if(_0x10b52c&&_0x10b52c[_0x666b('0xc7')]){_0x1a9629=_0x10b52c[_0x666b('0x38')]({'plain':!![]});if(_0x1a9629[_0x666b('0xc7')]&&_0x1a9629[_0x666b('0xc7')][_0x666b('0x9f')][_0x666b('0x4b')]){return _0x1a9629['List'][_0x666b('0x9f')][0x0];}return db['CmContact'][_0x666b('0x5b')](_['defaults'](_0x4dd36c[_0x666b('0x5c')],{'firstName':_0x175c7f,'mobile':_0x175c7f,'phone':_0x175c7f,'ListId':_0x1a9629[_0x666b('0x81')]}));}})[_0x666b('0x20')](handleEntityNotFound(_0x4a7dba,null))[_0x666b('0x20')](function(_0x47e828){if(_0x47e828){_0x46c6b2=_0x47e828;return db['SmsInteraction'][_0x666b('0x5a')]({'where':{'ContactId':_0x46c6b2['id'],'closed':![],'SmsAccountId':_0x1a9629['id']}})[_0x666b('0x20')](function(_0x14fe8e){if(_0x14fe8e){return[_0x14fe8e,![]];}return db[_0x666b('0xa3')][_0x666b('0x5b')]({'UserId':_0x4dd36c['user']['id'],'ContactId':_0x46c6b2['id'],'SmsAccountId':_0x1a9629['id'],'phone':_0x175c7f,'firstMsgDirection':_0x666b('0xc8'),'Messages':[_[_0x666b('0x52')](_0x4dd36c['body'],{'read':![],'body':_0x4dd36c[_0x666b('0x5c')][_0x666b('0x5c')],'phone':_0x175c7f,'SmsAccountId':_0x1a9629['id'],'UserId':_0x4dd36c[_0x666b('0x5d')]['id'],'ContactId':_0x46c6b2['id']})]},{'include':[{'model':db[_0x666b('0xc9')],'as':_0x666b('0xca')}]})[_0x666b('0x20')](function(_0x1db585){return[_0x1db585,!![]];});});}})[_0x666b('0xa4')](function(_0x4454e9,_0x14a199){if(_0x14a199){return _0x4454e9;}return db[_0x666b('0xc9')][_0x666b('0x5b')](_['merge'](_0x4dd36c['body'],{'read':![],'body':_0x4dd36c[_0x666b('0x5c')][_0x666b('0x5c')],'phone':_0x175c7f,'SmsAccountId':_0x1a9629['id'],'SmsInteractionId':_0x4454e9['id'],'UserId':_0x4dd36c[_0x666b('0x5d')]['id'],'ContactId':_0x46c6b2['id']}))[_0x666b('0x20')](function(_0x38a151){_0x4454e9[_0x666b('0xcb')][_0x666b('0xca')]=[];_0x4454e9[_0x666b('0xcb')][_0x666b('0xca')][_0x666b('0xcc')](_0x38a151[_0x666b('0xcb')]);return _0x4454e9;});})[_0x666b('0x20')](respondWithResult(_0x4a7dba,null))['catch'](handleError(_0x4a7dba,null));};exports[_0x666b('0x2c')]=function(_0x114282,_0x4c6ce0,_0x46cc1a){if(_0x114282[_0x666b('0x5c')]['id']){delete _0x114282[_0x666b('0x5c')]['id'];}var _0x284e3b,_0x98d0ec,_0x900fff;return db['SmsAccount'][_0x666b('0x5a')]({'where':{'id':_0x114282[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x4c6ce0,null))['then'](function(_0x4ef2bd){if(_0x4ef2bd){_0x900fff=_0x4ef2bd;logger['debug'](_0x666b('0x24'),_0x666b('0x2c'),_0x666b('0xcd'),_0x4ef2bd[_0x666b('0x43')],util[_0x666b('0xce')](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));switch(_0x4ef2bd['type']){case _0x666b('0xcf'):if(_0x114282[_0x666b('0x5c')]['skebby_dispatch_id']&&_0x114282[_0x666b('0x5c')][_0x666b('0x2c')]){_0x98d0ec=_0x114282[_0x666b('0x5c')][_0x666b('0x2c')];return db[_0x666b('0xc9')][_0x666b('0x5a')]({'where':{'messageId':_0x114282[_0x666b('0x5c')][_0x666b('0xd0')]}});}break;case _0x666b('0x89'):if(_0x114282[_0x666b('0x5c')][_0x666b('0xd1')]&&_0x114282[_0x666b('0x5c')][_0x666b('0xd2')]){_0x98d0ec=_0x114282[_0x666b('0x5c')]['statusInt'];return db[_0x666b('0xc9')][_0x666b('0x5a')]({'where':{'messageId':_0x114282[_0x666b('0x5c')][_0x666b('0xd1')]}});}break;case _0x666b('0x8b'):if(_0x114282[_0x666b('0x5c')][_0x666b('0xd3')]&&_0x114282[_0x666b('0x5c')][_0x666b('0xd4')]){_0x98d0ec=_0x114282[_0x666b('0x5c')][_0x666b('0xd4')];return db['SmsMessage'][_0x666b('0x5a')]({'where':{'messageId':_0x114282[_0x666b('0x5c')][_0x666b('0xd3')]}});}break;case _0x666b('0x8e'):var _0x2d5c2f=_0x114282[_0x666b('0x5c')][_0x666b('0x8f')][0x0];if(_0x2d5c2f[_0x666b('0x8c')]&&_0x2d5c2f[_0x666b('0x2c')]['groupName']===_0x666b('0xd5')){_0x98d0ec=_0x2d5c2f[_0x666b('0x2c')][_0x666b('0xd6')];return db[_0x666b('0xc9')]['find']({'where':{'messageId':_0x2d5c2f[_0x666b('0x8c')]}});}break;case _0x666b('0x92'):if(_0x114282[_0x666b('0x5c')]['messageId']&&_0x114282[_0x666b('0x5c')]['status']){_0x98d0ec=_0x114282['body'][_0x666b('0x2c')];return db[_0x666b('0xc9')]['find']({'where':{'messageId':_0x114282[_0x666b('0x5c')][_0x666b('0x8c')]}});}break;case'bandwidth':if(_0x114282[_0x666b('0x5c')][0x0]['message']['id']){_0x98d0ec=_0x114282['body'][0x0][_0x666b('0x43')];return db[_0x666b('0xc9')]['find']({'where':{'messageId':_0x114282[_0x666b('0x5c')][0x0]['message']['id']}});}break;case _0x666b('0xd7'):if(_0x114282[_0x666b('0x5c')][_0x666b('0xd8')]&&_0x114282[_0x666b('0x5c')][_0x666b('0x2c')]){_0x98d0ec=_0x114282[_0x666b('0x5c')][_0x666b('0x2c')];return db[_0x666b('0xc9')][_0x666b('0x5a')]({'where':{'messageId':_0x114282[_0x666b('0x5c')][_0x666b('0xd8')]}});}break;}}})[_0x666b('0x20')](handleEntityNotFound(_0x4c6ce0,null))['then'](function(_0x2c9ba5){if(_0x2c9ba5){_0x284e3b=_0x2c9ba5;switch(_0x900fff[_0x666b('0x43')]){case'skebby':if(_0x98d0ec===_0x666b('0xd5')){return _0x284e3b['update']({'read':!![]});}else{logger[_0x666b('0x26')](_0x666b('0x24'),_0x666b('0x2c'),_0x666b('0xcf'),util['inspect'](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x98d0ec==='1'){return _0x284e3b[_0x666b('0x65')]({'read':!![]});}else{logger[_0x666b('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x666b('0xcf'),util[_0x666b('0xce')](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x666b('0x8b'):if(!_0x114282[_0x666b('0x5c')][_0x666b('0xd9')]&&_0x98d0ec>=0xc8&&_0x98d0ec<=0xce){return _0x284e3b[_0x666b('0x65')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x666b('0x2c'),_0x666b('0x8b'),util[_0x666b('0xce')](_0x114282['body'],{'showHidden':![],'depth':null}));}break;case _0x666b('0x8e'):var _0x32a6e9=_0x114282['body']['results'][0x0];if(_0x32a6e9[_0x666b('0x2c')]['groupName']===_0x666b('0xd5')){return _0x284e3b[_0x666b('0x65')]({'read':!![]});}else{logger[_0x666b('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x666b('0x2c'),_0x666b('0x8e'),util['inspect'](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x666b('0x92'):if(_0x98d0ec==_0x666b('0xda')||_0x98d0ec=='RECEIVED_BY_RECIPIENT'){return _0x284e3b[_0x666b('0x65')]({'read':!![]});}else{logger[_0x666b('0x26')](_0x666b('0x24'),_0x666b('0x2c'),_0x666b('0x92'),util['inspect'](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x666b('0x95'):if(_0x98d0ec=='message-delivered'){return _0x284e3b[_0x666b('0x65')]({'read':!![]});}else{logger[_0x666b('0x26')](_0x666b('0x24'),_0x666b('0x2c'),_0x666b('0x95'),util[_0x666b('0xce')](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));}break;case _0x666b('0xd7'):if(_0x98d0ec===_0x666b('0xdb')||_0x98d0ec==='ACCEPTD'){return _0x284e3b['update']({'read':!![]});}else{logger[_0x666b('0x26')](_0x666b('0x24'),_0x666b('0x2c'),_0x666b('0xd7'),util[_0x666b('0xce')](_0x114282[_0x666b('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x284e3b;}})[_0x666b('0x20')](respondWithResult(_0x4c6ce0,null))[_0x666b('0x2a')](handleError(_0x4c6ce0,null));};exports['statusGet']=function(_0x55a5d0,_0x605f12,_0x9e8f03){var _0xb6daa0,_0x2d2d87,_0x2030fe;return db['SmsAccount'][_0x666b('0x5a')]({'where':{'id':_0x55a5d0[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x605f12,null))[_0x666b('0x20')](function(_0x5960fd){if(_0x5960fd){_0x2030fe=_0x5960fd;logger[_0x666b('0x23')](_0x666b('0x24'),_0x666b('0x2c'),'received\x20delivery\x20report\x20from',_0x5960fd[_0x666b('0x43')],util[_0x666b('0xce')](_0x55a5d0[_0x666b('0x45')],{'showHidden':![],'depth':null}));switch(_0x5960fd[_0x666b('0x43')]){case _0x666b('0xdc'):if(_0x55a5d0[_0x666b('0x45')][_0x666b('0xdd')]&&_0x55a5d0['query'][_0x666b('0xde')]){_0x2d2d87=_0x55a5d0[_0x666b('0x45')][_0x666b('0xde')];return db[_0x666b('0xc9')][_0x666b('0x5a')]({'where':{'messageId':_0x55a5d0[_0x666b('0x45')]['message-id']}});}break;}}})[_0x666b('0x20')](handleEntityNotFound(_0x605f12,null))['then'](function(_0x18fc4b){if(_0x18fc4b){_0xb6daa0=_0x18fc4b;switch(_0x2030fe[_0x666b('0x43')]){case _0x666b('0xdc'):if(_0x2d2d87==='2'||_0x2d2d87==='6'){return _0xb6daa0['update']({'read':!![]});}else{logger[_0x666b('0x26')](_0x666b('0x24'),_0x666b('0x2c'),'csc',util[_0x666b('0xce')](_0x55a5d0[_0x666b('0x45')],{'showHidden':![],'depth':null}));};break;}return _0xb6daa0;}})[_0x666b('0x20')](respondWithResult(_0x605f12,null))['catch'](handleError(_0x605f12,null));};exports['addAgents']=function(_0x2cfbae,_0x385b0e,_0x35638d){return db[_0x666b('0x40')][_0x666b('0x5a')]({'where':{'id':_0x2cfbae['params']['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x385b0e,null))[_0x666b('0x20')](function(_0x504fae){if(_0x504fae){return _0x504fae[_0x666b('0xdf')](_0x2cfbae[_0x666b('0x5c')]['ids'],_['omit'](_0x2cfbae[_0x666b('0x5c')],['ids','id'])||{})['spread'](function(_0x471ac6){for(var _0xae8848=0x0;_0xae8848<_0x2cfbae[_0x666b('0x5c')][_0x666b('0x6d')][_0x666b('0x4b')];_0xae8848+=0x1){socket[_0x666b('0xe0')](_0x666b('0xe1'),{'UserId':Number(_0x2cfbae[_0x666b('0x5c')][_0x666b('0x6d')][_0xae8848]),'SmsAccountId':Number(_0x2cfbae[_0x666b('0x59')]['id'])});}return _0x471ac6;});}})[_0x666b('0x20')](respondWithResult(_0x385b0e,null))['catch'](handleError(_0x385b0e,null));};exports[_0x666b('0xe2')]=function(_0x282620,_0x268ad6,_0x3f4dc7){return db['SmsAccount']['find']({'where':{'id':_0x282620[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0x268ad6,null))[_0x666b('0x20')](function(_0x432151){if(_0x432151){return _0x432151[_0x666b('0xe2')](_0x282620['query']['ids'])[_0x666b('0x20')](function(){if(_[_0x666b('0xe3')](_0x282620['query'][_0x666b('0x6d')])){for(var _0xf8771c=0x0;_0xf8771c<_0x282620[_0x666b('0x45')][_0x666b('0x6d')][_0x666b('0x4b')];_0xf8771c+=0x1){socket[_0x666b('0xe0')](_0x666b('0xe4'),{'UserId':Number(_0x282620[_0x666b('0x45')][_0x666b('0x6d')][_0xf8771c]),'SmsAccountId':Number(_0x282620[_0x666b('0x59')]['id'])});}}else{socket[_0x666b('0xe0')](_0x666b('0xe4'),{'UserId':Number(_0x282620[_0x666b('0x45')][_0x666b('0x6d')]),'SmsAccountId':Number(_0x282620[_0x666b('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x268ad6,null))[_0x666b('0x2a')](handleError(_0x268ad6,null));};exports[_0x666b('0xe5')]=function(_0x27bf54,_0xfe17f,_0x24c418){var _0x49a754={};var _0x2e6214={};var _0x589efb;var _0x301ccc;return db[_0x666b('0x40')][_0x666b('0xb9')]({'where':{'id':_0x27bf54[_0x666b('0x59')]['id']}})[_0x666b('0x20')](handleEntityNotFound(_0xfe17f,null))[_0x666b('0x20')](function(_0x36ed9f){if(_0x36ed9f){_0x589efb=_0x36ed9f;_0x2e6214[_0x666b('0x44')]=_[_0x666b('0x46')](db[_0x666b('0xad')]['rawAttributes']);_0x2e6214[_0x666b('0x45')]=_['keys'](_0x27bf54[_0x666b('0x45')]);_0x2e6214[_0x666b('0x47')]=_[_0x666b('0x48')](_0x2e6214[_0x666b('0x44')],_0x2e6214[_0x666b('0x45')]);_0x49a754[_0x666b('0x49')]=_[_0x666b('0x48')](_0x2e6214[_0x666b('0x44')],qs[_0x666b('0x4a')](_0x27bf54[_0x666b('0x45')][_0x666b('0x4a')]));_0x49a754[_0x666b('0x49')]=_0x49a754[_0x666b('0x49')][_0x666b('0x4b')]?_0x49a754[_0x666b('0x49')]:_0x2e6214[_0x666b('0x44')];_0x49a754[_0x666b('0x4d')]=qs[_0x666b('0x4e')](_0x27bf54['query']['sort']);_0x49a754[_0x666b('0x4f')]=qs[_0x666b('0x47')](_['pick'](_0x27bf54[_0x666b('0x45')],_0x2e6214[_0x666b('0x47')]));if(_0x27bf54[_0x666b('0x45')][_0x666b('0x51')]){_0x49a754['where']=_[_0x666b('0x52')](_0x49a754[_0x666b('0x4f')],{'$or':_[_0x666b('0x3f')](_0x49a754[_0x666b('0x49')],function(_0x2e95ed){var _0x41bb1c={};_0x41bb1c[_0x2e95ed]={'$like':'%'+_0x27bf54[_0x666b('0x45')]['filter']+'%'};return _0x41bb1c;})});}_0x49a754=_[_0x666b('0x52')]({},_0x49a754,_0x27bf54['options']);return _0x589efb[_0x666b('0xe5')](_0x49a754);}})['then'](function(_0x2f65f7){if(_0x2f65f7){_0x301ccc=_0x2f65f7[_0x666b('0x4b')];if(!_0x27bf54['query'][_0x666b('0x6b')](_0x666b('0x4c'))){_0x49a754['limit']=qs[_0x666b('0x31')](_0x27bf54['query'][_0x666b('0x31')]);_0x49a754[_0x666b('0x2f')]=qs['offset'](_0x27bf54[_0x666b('0x45')][_0x666b('0x2f')]);}return _0x589efb[_0x666b('0xe5')](_0x49a754);}})[_0x666b('0x20')](function(_0x39a966){if(_0x39a966){return _0x39a966?{'count':_0x301ccc,'rows':_0x39a966}:null;}})[_0x666b('0x20')](respondWithResult(_0xfe17f,null))[_0x666b('0x2a')](handleError(_0xfe17f,null));};
\ No newline at end of file
index 4c95638..198586f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf5=['SmsAccount','save','hasOwnProperty','../../mysqldb'];(function(_0x200ce0,_0x83667b){var _0x4bf95f=function(_0x6aebe3){while(--_0x6aebe3){_0x200ce0['push'](_0x200ce0['shift']());}};_0x4bf95f(++_0x83667b);}(_0xddf5,0xfb));var _0x5ddf=function(_0x26236d,_0xdc7917){_0x26236d=_0x26236d-0x0;var _0x89903b=_0xddf5[_0x26236d];return _0x89903b;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0x5ddf('0x0'))['db'][_0x5ddf('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5ddf('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x270e91){return function(_0x2df2c0,_0x262b7c,_0x25b380){SmsAccountEvents['emit'](_0x270e91+':'+_0x2df2c0['id'],_0x2df2c0);SmsAccountEvents['emit'](_0x270e91,_0x2df2c0);_0x25b380(null);};}for(var e in events){if(events[_0x5ddf('0x3')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x30e5=['events','SmsAccount','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x42ced7,_0x23ed11){var _0x351ffb=function(_0x238307){while(--_0x238307){_0x42ced7['push'](_0x42ced7['shift']());}};_0x351ffb(++_0x23ed11);}(_0x30e5,0x171));var _0x530e=function(_0xc79d85,_0x1c91f5){_0xc79d85=_0xc79d85-0x0;var _0xaf91f7=_0x30e5[_0xc79d85];return _0xaf91f7;};'use strict';var EventEmitter=require(_0x530e('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x530e('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x530e('0x2'),'afterUpdate':_0x530e('0x3'),'afterDestroy':_0x530e('0x4')};function emitEvent(_0x5c6c09){return function(_0x3cb6b7,_0x537da0,_0x4066bd){SmsAccountEvents[_0x530e('0x5')](_0x5c6c09+':'+_0x3cb6b7['id'],_0x3cb6b7);SmsAccountEvents[_0x530e('0x5')](_0x5c6c09,_0x3cb6b7);_0x4066bd(null);};}for(var e in events){if(events[_0x530e('0x6')](e)){var event=events[e];SmsAccount[_0x530e('0x7')](e,emitEvent(event));}}module[_0x530e('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 2d19a1e..10817fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ba=['../../config/environment','./smsAccount.attributes','define','SmsAccount','sms_accounts','lodash','util','api','moment','bluebird','rimraf'];(function(_0x3142d4,_0x465d13){var _0x84de7b=function(_0x1f1c0c){while(--_0x1f1c0c){_0x3142d4['push'](_0x3142d4['shift']());}};_0x84de7b(++_0x465d13);}(_0x61ba,0x191));var _0xa61b=function(_0x483f00,_0x2d1abb){_0x483f00=_0x483f00-0x0;var _0x2fbe0a=_0x61ba[_0x483f00];return _0x2fbe0a;};'use strict';var _=require(_0xa61b('0x0'));var util=require(_0xa61b('0x1'));var logger=require('../../config/logger')(_0xa61b('0x2'));var moment=require(_0xa61b('0x3'));var BPromise=require(_0xa61b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa61b('0x5'));var config=require(_0xa61b('0x6'));var attributes=require(_0xa61b('0x7'));module['exports']=function(_0x515396,_0x541696){return _0x515396[_0xa61b('0x8')](_0xa61b('0x9'),attributes,{'tableName':_0xa61b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7d4=['bluebird','path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','lodash','../../config/logger','moment'];(function(_0x1c1239,_0x5ae718){var _0x466903=function(_0x23f2b0){while(--_0x23f2b0){_0x1c1239['push'](_0x1c1239['shift']());}};_0x466903(++_0x5ae718);}(_0xb7d4,0x1ec));var _0x4b7d=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0xb7d4[_0x411017];return _0x2adeea;};'use strict';var _=require(_0x4b7d('0x0'));var util=require('util');var logger=require(_0x4b7d('0x1'))('api');var moment=require(_0x4b7d('0x2'));var BPromise=require(_0x4b7d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4b7d('0x4'));var rimraf=require(_0x4b7d('0x5'));var config=require(_0x4b7d('0x6'));var attributes=require(_0x4b7d('0x7'));module[_0x4b7d('0x8')]=function(_0x5c9ad9,_0x47c7c8){return _0x5c9ad9[_0x4b7d('0x9')](_0x4b7d('0xa'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8665631..c8695c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc183=['model','map','debug','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowSmsAccount','SmsAccount','options','raw','where','attributes','include'];(function(_0x10b05f,_0x5d424f){var _0x265ffd=function(_0x5502eb){while(--_0x5502eb){_0x10b05f['push'](_0x10b05f['shift']());}};_0x265ffd(++_0x5d424f);}(_0xc183,0x9c));var _0x3c18=function(_0x2c0653,_0x435499){_0x2c0653=_0x2c0653-0x0;var _0x35d600=_0xc183[_0x2c0653];return _0x35d600;};'use strict';var _=require(_0x3c18('0x0'));var util=require(_0x3c18('0x1'));var moment=require(_0x3c18('0x2'));var BPromise=require(_0x3c18('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3c18('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3c18('0x5'));var logger=require(_0x3c18('0x6'))(_0x3c18('0x7'));var config=require(_0x3c18('0x8'));var jayson=require(_0x3c18('0x9'));var client=jayson[_0x3c18('0xa')][_0x3c18('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x3c18('0xc')],{'host':_0x3c18('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3c18('0xc')]));require(_0x3c18('0xe'))[_0x3c18('0xf')](socket);function respondWithRpcPromise(_0x32fb6a,_0x31885b,_0x642fff){return new BPromise(function(_0x1e19ef,_0x2713d6){return client[_0x3c18('0x10')](_0x32fb6a,_0x642fff)[_0x3c18('0x11')](function(_0x33cea1){logger[_0x3c18('0x12')](_0x3c18('0x13'),_0x31885b,_0x3c18('0x14'));logger['debug'](_0x3c18('0x15'),_0x31885b,_0x3c18('0x14'),JSON[_0x3c18('0x16')](_0x33cea1));if(_0x33cea1['error']){if(_0x33cea1[_0x3c18('0x17')][_0x3c18('0x18')]===0x1f4){logger[_0x3c18('0x17')](_0x3c18('0x13'),_0x31885b,_0x33cea1[_0x3c18('0x17')][_0x3c18('0x19')]);return _0x2713d6(_0x33cea1['error']['message']);}logger[_0x3c18('0x17')](_0x3c18('0x13'),_0x31885b,_0x33cea1[_0x3c18('0x17')][_0x3c18('0x19')]);return _0x1e19ef(_0x33cea1[_0x3c18('0x17')][_0x3c18('0x19')]);}else{logger['info'](_0x3c18('0x13'),_0x31885b,_0x3c18('0x14'));_0x1e19ef(_0x33cea1[_0x3c18('0x1a')]['message']);}})['catch'](function(_0x54f9b6){logger['error'](_0x3c18('0x13'),_0x31885b,_0x54f9b6);_0x2713d6(_0x54f9b6);});});}exports[_0x3c18('0x1b')]=function(_0x13c514){var _0x5bb5f7=this;return new Promise(function(_0x492188,_0x21f835){return db[_0x3c18('0x1c')]['find']({'raw':_0x13c514[_0x3c18('0x1d')]?_0x13c514[_0x3c18('0x1d')][_0x3c18('0x1e')]===undefined?!![]:![]:!![],'where':_0x13c514[_0x3c18('0x1d')]?_0x13c514[_0x3c18('0x1d')][_0x3c18('0x1f')]||null:null,'attributes':_0x13c514['options']?_0x13c514[_0x3c18('0x1d')][_0x3c18('0x20')]||null:null,'include':_0x13c514['options']?_0x13c514[_0x3c18('0x1d')][_0x3c18('0x21')]?_['map'](_0x13c514[_0x3c18('0x1d')][_0x3c18('0x21')],function(_0x12c5b0){return{'model':db[_0x12c5b0[_0x3c18('0x22')]],'as':_0x12c5b0['as'],'attributes':_0x12c5b0[_0x3c18('0x20')],'include':_0x12c5b0[_0x3c18('0x21')]?_[_0x3c18('0x23')](_0x12c5b0[_0x3c18('0x21')],function(_0x14f3cd){return{'model':db[_0x14f3cd[_0x3c18('0x22')]],'as':_0x14f3cd['as'],'attributes':_0x14f3cd['attributes'],'include':_0x14f3cd[_0x3c18('0x21')]?_['map'](_0x14f3cd[_0x3c18('0x21')],function(_0x19329e){return{'model':db[_0x19329e[_0x3c18('0x22')]],'as':_0x19329e['as'],'attributes':_0x19329e[_0x3c18('0x20')]};}):[]};}):[]};}):[]:[]})[_0x3c18('0x11')](function(_0x1ae601){logger[_0x3c18('0x12')]('ShowSmsAccount',_0x13c514);logger[_0x3c18('0x24')]('ShowSmsAccount',_0x13c514,JSON[_0x3c18('0x16')](_0x1ae601));_0x492188(_0x1ae601);})[_0x3c18('0x25')](function(_0x436e18){logger[_0x3c18('0x17')](_0x3c18('0x1b'),_0x436e18['message'],_0x13c514);_0x21f835(_0x5bb5f7['error'](0x1f4,_0x436e18[_0x3c18('0x19')]));});});};
\ No newline at end of file
+var _0xa31b=['result','catch','ShowSmsAccount','find','options','raw','where','attributes','include','map','stringify','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./smsAccount.socket','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0xdd827a,_0x482ad2){var _0x2f46f1=function(_0x221046){while(--_0x221046){_0xdd827a['push'](_0xdd827a['shift']());}};_0x2f46f1(++_0x482ad2);}(_0xa31b,0x1e7));var _0xba31=function(_0x25ef94,_0x224618){_0x25ef94=_0x25ef94-0x0;var _0x27b450=_0xa31b[_0x25ef94];return _0x27b450;};'use strict';var _=require(_0xba31('0x0'));var util=require(_0xba31('0x1'));var moment=require(_0xba31('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba31('0x3'));var db=require(_0xba31('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xba31('0x5'))(_0xba31('0x6'));var config=require('../../config/environment');var jayson=require(_0xba31('0x7'));var client=jayson[_0xba31('0x8')]['http']({'port':0x232a});config[_0xba31('0x9')]=_[_0xba31('0xa')](config[_0xba31('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xba31('0xb'))(new Redis(config[_0xba31('0x9')]));require(_0xba31('0xc'))['register'](socket);function respondWithRpcPromise(_0x224b2b,_0x9beafe,_0x5560a6){return new BPromise(function(_0x4b992b,_0x206768){return client[_0xba31('0xd')](_0x224b2b,_0x5560a6)[_0xba31('0xe')](function(_0x35c528){logger[_0xba31('0xf')](_0xba31('0x10'),_0x9beafe,_0xba31('0x11'));logger[_0xba31('0x12')](_0xba31('0x13'),_0x9beafe,_0xba31('0x11'),JSON['stringify'](_0x35c528));if(_0x35c528[_0xba31('0x14')]){if(_0x35c528[_0xba31('0x14')][_0xba31('0x15')]===0x1f4){logger[_0xba31('0x14')](_0xba31('0x10'),_0x9beafe,_0x35c528[_0xba31('0x14')][_0xba31('0x16')]);return _0x206768(_0x35c528[_0xba31('0x14')][_0xba31('0x16')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x9beafe,_0x35c528[_0xba31('0x14')]['message']);return _0x4b992b(_0x35c528[_0xba31('0x14')]['message']);}else{logger['info']('SmsAccount,\x20%s,\x20%s',_0x9beafe,_0xba31('0x11'));_0x4b992b(_0x35c528[_0xba31('0x17')][_0xba31('0x16')]);}})[_0xba31('0x18')](function(_0x36e069){logger[_0xba31('0x14')](_0xba31('0x10'),_0x9beafe,_0x36e069);_0x206768(_0x36e069);});});}exports[_0xba31('0x19')]=function(_0x3000e0){var _0x4d03b0=this;return new Promise(function(_0xf46d65,_0x5f599e){return db['SmsAccount'][_0xba31('0x1a')]({'raw':_0x3000e0['options']?_0x3000e0[_0xba31('0x1b')][_0xba31('0x1c')]===undefined?!![]:![]:!![],'where':_0x3000e0[_0xba31('0x1b')]?_0x3000e0['options'][_0xba31('0x1d')]||null:null,'attributes':_0x3000e0['options']?_0x3000e0[_0xba31('0x1b')][_0xba31('0x1e')]||null:null,'include':_0x3000e0[_0xba31('0x1b')]?_0x3000e0[_0xba31('0x1b')][_0xba31('0x1f')]?_[_0xba31('0x20')](_0x3000e0[_0xba31('0x1b')][_0xba31('0x1f')],function(_0x2fc40a){return{'model':db[_0x2fc40a['model']],'as':_0x2fc40a['as'],'attributes':_0x2fc40a['attributes'],'include':_0x2fc40a[_0xba31('0x1f')]?_[_0xba31('0x20')](_0x2fc40a[_0xba31('0x1f')],function(_0x184e36){return{'model':db[_0x184e36['model']],'as':_0x184e36['as'],'attributes':_0x184e36['attributes'],'include':_0x184e36[_0xba31('0x1f')]?_['map'](_0x184e36[_0xba31('0x1f')],function(_0x234ebf){return{'model':db[_0x234ebf['model']],'as':_0x234ebf['as'],'attributes':_0x234ebf[_0xba31('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xba31('0xe')](function(_0x59a5c3){logger[_0xba31('0xf')](_0xba31('0x19'),_0x3000e0);logger['debug'](_0xba31('0x19'),_0x3000e0,JSON[_0xba31('0x21')](_0x59a5c3));_0xf46d65(_0x59a5c3);})['catch'](function(_0x57d6c9){logger['error'](_0xba31('0x19'),_0x57d6c9[_0xba31('0x16')],_0x3000e0);_0x5f599e(_0x4d03b0[_0xba31('0x14')](0x1f4,_0x57d6c9[_0xba31('0x16')]));});});};
\ No newline at end of file
index fce7fde..900b140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 3e93e11..fe32ee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x48816d,_0x47d184){var _0x508e37=function(_0x15642b){while(--_0x15642b){_0x48816d['push'](_0x48816d['shift']());}};_0x508e37(++_0x47d184);}(_0x55ca,0x126));var _0xa55c=function(_0x81dcac,_0x8ff7db){_0x81dcac=_0x81dcac-0x0;var _0xc7803b=_0x55ca[_0x81dcac];return _0xc7803b;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
index 338a2b1..14e204b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26fb=['*,*,*,*','sequelize','exports','INTEGER','noop','TEXT','STRING'];(function(_0x4c9d58,_0x1c83f0){var _0x3ad22d=function(_0xd95048){while(--_0xd95048){_0x4c9d58['push'](_0x4c9d58['shift']());}};_0x3ad22d(++_0x1c83f0);}(_0x26fb,0x151));var _0xb26f=function(_0x45bc9d,_0x10e9c6){_0x45bc9d=_0x45bc9d-0x0;var _0x3cec77=_0x26fb[_0x45bc9d];return _0x3cec77;};'use strict';var Sequelize=require(_0xb26f('0x0'));module[_0xb26f('0x1')]={'priority':{'type':Sequelize[_0xb26f('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xb26f('0x3')},'appdata':{'type':Sequelize[_0xb26f('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xb26f('0x5')],'defaultValue':_0xb26f('0x6')}};
\ No newline at end of file
+var _0xeec3=['TEXT','STRING','sequelize','exports','INTEGER'];(function(_0x18c168,_0x34a36c){var _0x3477a2=function(_0x3f5701){while(--_0x3f5701){_0x18c168['push'](_0x18c168['shift']());}};_0x3477a2(++_0x34a36c);}(_0xeec3,0x129));var _0x3eec=function(_0x54df6a,_0x848c6a){_0x54df6a=_0x54df6a-0x0;var _0x30bba8=_0xeec3[_0x54df6a];return _0x30bba8;};'use strict';var Sequelize=require(_0x3eec('0x0'));module[_0x3eec('0x1')]={'priority':{'type':Sequelize[_0x3eec('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x3eec('0x3')]()},'description':{'type':Sequelize[_0x3eec('0x4')]},'interval':{'type':Sequelize[_0x3eec('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 05d33d6..1b1f2ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x880b=['rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','filter','where','options','SmsApplication','includeAll','include','findAll','catch','merge','find','create','body','params','eml-format'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x880b,0xe0));var _0xb880=function(_0x590603,_0x206161){_0x590603=_0x590603-0x0;var _0x55a11d=_0x880b[_0x590603];return _0x55a11d;};'use strict';var emlformat=require(_0xb880('0x0'));var rimraf=require(_0xb880('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb880('0x2'));var rp=require(_0xb880('0x3'));var moment=require(_0xb880('0x4'));var BPromise=require(_0xb880('0x5'));var Mustache=require(_0xb880('0x6'));var util=require(_0xb880('0x7'));var path=require(_0xb880('0x8'));var sox=require(_0xb880('0x9'));var csv=require(_0xb880('0xa'));var ejs=require(_0xb880('0xb'));var fs=require('fs');var fs_extra=require(_0xb880('0xc'));var _=require(_0xb880('0xd'));var squel=require(_0xb880('0xe'));var crypto=require(_0xb880('0xf'));var jsforce=require(_0xb880('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xb880('0xa'));var querystring=require(_0xb880('0x11'));var Papa=require(_0xb880('0x12'));var Redis=require(_0xb880('0x13'));var authService=require(_0xb880('0x14'));var qs=require(_0xb880('0x15'));var as=require(_0xb880('0x16'));var hardwareService=require(_0xb880('0x17'));var logger=require('../../config/logger')(_0xb880('0x18'));var utils=require(_0xb880('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xb880('0x1a'));var db=require(_0xb880('0x1b'))['db'];function respondWithStatusCode(_0x475c42,_0x5809c6){_0x5809c6=_0x5809c6||0xcc;return function(_0x99cc6a){if(_0x99cc6a){return _0x475c42[_0xb880('0x1c')](_0x5809c6);}return _0x475c42[_0xb880('0x1d')](_0x5809c6)[_0xb880('0x1e')]();};}function respondWithResult(_0x19b02d,_0xbe3a43){_0xbe3a43=_0xbe3a43||0xc8;return function(_0xbee3b8){if(_0xbee3b8){return _0x19b02d[_0xb880('0x1d')](_0xbe3a43)[_0xb880('0x1f')](_0xbee3b8);}};}function respondWithFilteredResult(_0x3624aa,_0x476e0f){return function(_0x596564){if(_0x596564){var _0x2d98e7=typeof _0x476e0f[_0xb880('0x20')]===_0xb880('0x21')&&typeof _0x476e0f[_0xb880('0x22')]===_0xb880('0x21');var _0x46b01d=_0x596564['count'];var _0x5bf5e6=_0x2d98e7?0x0:_0x476e0f[_0xb880('0x20')];var _0x341110=_0x2d98e7?_0x596564[_0xb880('0x23')]:_0x476e0f['offset']+_0x476e0f[_0xb880('0x22')];var _0x2b8f65;if(_0x341110>=_0x46b01d){_0x341110=_0x46b01d;_0x2b8f65=0xc8;}else{_0x2b8f65=0xce;}_0x3624aa[_0xb880('0x1d')](_0x2b8f65);return _0x3624aa[_0xb880('0x24')](_0xb880('0x25'),_0x5bf5e6+'-'+_0x341110+'/'+_0x46b01d)[_0xb880('0x1f')](_0x596564);}return null;};}function patchUpdates(_0x71ff42){return function(_0x23a0f4){try{jsonpatch['apply'](_0x23a0f4,_0x71ff42,!![]);}catch(_0x590a4c){return BPromise[_0xb880('0x26')](_0x590a4c);}return _0x23a0f4[_0xb880('0x27')]();};}function saveUpdates(_0x260306,_0x2c6983){return function(_0x2eb7aa){if(_0x2eb7aa){return _0x2eb7aa['update'](_0x260306)['then'](function(_0x220439){return _0x220439;});}return null;};}function removeEntity(_0x1403dc,_0x2eb6bc){return function(_0x49846b){if(_0x49846b){return _0x49846b[_0xb880('0x28')]()[_0xb880('0x29')](function(){_0x1403dc[_0xb880('0x1d')](0xcc)[_0xb880('0x1e')]();});}};}function handleEntityNotFound(_0x5a1e8d,_0x22511a){return function(_0x17dfef){if(!_0x17dfef){_0x5a1e8d[_0xb880('0x1c')](0x194);}return _0x17dfef;};}function handleError(_0x33108d,_0x3ca6a0){_0x3ca6a0=_0x3ca6a0||0x1f4;return function(_0x5c9a12){logger[_0xb880('0x2a')](_0x5c9a12['stack']);if(_0x5c9a12['name']){delete _0x5c9a12[_0xb880('0x2b')];}_0x33108d[_0xb880('0x1d')](_0x3ca6a0)[_0xb880('0x2c')](_0x5c9a12);};}exports[_0xb880('0x2d')]=function(_0x5b2db2,_0x2e3810){var _0x37fa34={},_0x16f7f3={},_0x42658b={'count':0x0,'rows':[]};var _0xc23989=_[_0xb880('0x2e')](db['SmsApplication'][_0xb880('0x2f')],function(_0x1031f4){return{'name':_0x1031f4[_0xb880('0x30')],'type':_0x1031f4[_0xb880('0x31')][_0xb880('0x32')]};});_0x16f7f3[_0xb880('0x33')]=_[_0xb880('0x2e')](_0xc23989,'name');_0x16f7f3[_0xb880('0x34')]=_[_0xb880('0x35')](_0x5b2db2['query']);_0x16f7f3[_0xb880('0x36')]=_['intersection'](_0x16f7f3[_0xb880('0x33')],_0x16f7f3[_0xb880('0x34')]);_0x37fa34['attributes']=_[_0xb880('0x37')](_0x16f7f3[_0xb880('0x33')],qs['fields'](_0x5b2db2['query'][_0xb880('0x38')]));_0x37fa34[_0xb880('0x39')]=_0x37fa34['attributes'][_0xb880('0x3a')]?_0x37fa34[_0xb880('0x39')]:_0x16f7f3[_0xb880('0x33')];if(!_0x5b2db2[_0xb880('0x34')][_0xb880('0x3b')](_0xb880('0x3c'))){_0x37fa34[_0xb880('0x22')]=qs[_0xb880('0x22')](_0x5b2db2['query'][_0xb880('0x22')]);_0x37fa34[_0xb880('0x20')]=qs[_0xb880('0x20')](_0x5b2db2['query'][_0xb880('0x20')]);}_0x37fa34[_0xb880('0x3d')]=qs['sort'](_0x5b2db2[_0xb880('0x34')]['sort']);_0x37fa34['where']=qs[_0xb880('0x36')](_['pick'](_0x5b2db2[_0xb880('0x34')],_0x16f7f3['filters']),_0xc23989);if(_0x5b2db2[_0xb880('0x34')][_0xb880('0x3e')]){_0x37fa34[_0xb880('0x3f')]=_['merge'](_0x37fa34[_0xb880('0x3f')],{'$or':_[_0xb880('0x2e')](_0xc23989,function(_0x3cf614){if(_0x3cf614[_0xb880('0x31')]!=='VIRTUAL'){var _0x4d431={};_0x4d431[_0x3cf614[_0xb880('0x2b')]]={'$like':'%'+_0x5b2db2[_0xb880('0x34')][_0xb880('0x3e')]+'%'};return _0x4d431;}})});}_0x37fa34=_['merge']({},_0x37fa34,_0x5b2db2[_0xb880('0x40')]);var _0x146e30={'where':_0x37fa34[_0xb880('0x3f')]};return db[_0xb880('0x41')][_0xb880('0x23')](_0x146e30)[_0xb880('0x29')](function(_0x1fe1a3){_0x42658b['count']=_0x1fe1a3;if(_0x5b2db2[_0xb880('0x34')][_0xb880('0x42')]){_0x37fa34[_0xb880('0x43')]=[{'all':!![]}];}return db[_0xb880('0x41')][_0xb880('0x44')](_0x37fa34);})[_0xb880('0x29')](function(_0x467a08){_0x42658b['rows']=_0x467a08;return _0x42658b;})['then'](respondWithFilteredResult(_0x2e3810,_0x37fa34))[_0xb880('0x45')](handleError(_0x2e3810,null));};exports['show']=function(_0x5c1b62,_0x4db114){var _0x11b734={'raw':!![],'where':{'id':_0x5c1b62['params']['id']}},_0x185e13={};_0x185e13[_0xb880('0x33')]=_[_0xb880('0x35')](db[_0xb880('0x41')][_0xb880('0x2f')]);_0x185e13[_0xb880('0x34')]=_[_0xb880('0x35')](_0x5c1b62[_0xb880('0x34')]);_0x185e13[_0xb880('0x36')]=_['intersection'](_0x185e13['model'],_0x185e13[_0xb880('0x34')]);_0x11b734[_0xb880('0x39')]=_[_0xb880('0x37')](_0x185e13[_0xb880('0x33')],qs[_0xb880('0x38')](_0x5c1b62[_0xb880('0x34')][_0xb880('0x38')]));_0x11b734[_0xb880('0x39')]=_0x11b734['attributes'][_0xb880('0x3a')]?_0x11b734['attributes']:_0x185e13[_0xb880('0x33')];if(_0x5c1b62['query']['includeAll']){_0x11b734[_0xb880('0x43')]=[{'all':!![]}];}_0x11b734=_[_0xb880('0x46')]({},_0x11b734,_0x5c1b62[_0xb880('0x40')]);return db[_0xb880('0x41')][_0xb880('0x47')](_0x11b734)[_0xb880('0x29')](handleEntityNotFound(_0x4db114,null))[_0xb880('0x29')](respondWithResult(_0x4db114,null))['catch'](handleError(_0x4db114,null));};exports[_0xb880('0x48')]=function(_0x238a0e,_0x552cbc){return db[_0xb880('0x41')][_0xb880('0x48')](_0x238a0e[_0xb880('0x49')],{})['then'](respondWithResult(_0x552cbc,0xc9))[_0xb880('0x45')](handleError(_0x552cbc,null));};exports['update']=function(_0xef1a1d,_0x1481a7){if(_0xef1a1d['body']['id']){delete _0xef1a1d[_0xb880('0x49')]['id'];}return db[_0xb880('0x41')][_0xb880('0x47')]({'where':{'id':_0xef1a1d[_0xb880('0x4a')]['id']}})[_0xb880('0x29')](handleEntityNotFound(_0x1481a7,null))[_0xb880('0x29')](saveUpdates(_0xef1a1d[_0xb880('0x49')],null))[_0xb880('0x29')](respondWithResult(_0x1481a7,null))[_0xb880('0x45')](handleError(_0x1481a7,null));};exports[_0xb880('0x28')]=function(_0x739af8,_0xdf2126){return db[_0xb880('0x41')][_0xb880('0x47')]({'where':{'id':_0x739af8['params']['id']}})[_0xb880('0x29')](handleEntityNotFound(_0xdf2126,null))['then'](removeEntity(_0xdf2126,null))[_0xb880('0x45')](handleError(_0xdf2126,null));};
\ No newline at end of file
+var _0x9979=['includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','save','update','then','destroy','sendStatus','error','stack','name','index','SmsApplication','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','map','VIRTUAL','filter','options'];(function(_0x48a15,_0x40dec1){var _0x60c52d=function(_0x5ab4cc){while(--_0x5ab4cc){_0x48a15['push'](_0x48a15['shift']());}};_0x60c52d(++_0x40dec1);}(_0x9979,0x9f));var _0x9997=function(_0x3f29a1,_0xb9b6b2){_0x3f29a1=_0x3f29a1-0x0;var _0x961f04=_0x9979[_0x3f29a1];return _0x961f04;};'use strict';var emlformat=require(_0x9997('0x0'));var rimraf=require(_0x9997('0x1'));var zipdir=require(_0x9997('0x2'));var jsonpatch=require(_0x9997('0x3'));var rp=require(_0x9997('0x4'));var moment=require('moment');var BPromise=require(_0x9997('0x5'));var Mustache=require(_0x9997('0x6'));var util=require('util');var path=require(_0x9997('0x7'));var sox=require(_0x9997('0x8'));var csv=require(_0x9997('0x9'));var ejs=require(_0x9997('0xa'));var fs=require('fs');var fs_extra=require(_0x9997('0xb'));var _=require('lodash');var squel=require(_0x9997('0xc'));var crypto=require(_0x9997('0xd'));var jsforce=require(_0x9997('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9997('0xf'));var Papa=require(_0x9997('0x10'));var Redis=require(_0x9997('0x11'));var authService=require(_0x9997('0x12'));var qs=require(_0x9997('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9997('0x14'));var logger=require('../../config/logger')(_0x9997('0x15'));var utils=require(_0x9997('0x16'));var config=require(_0x9997('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x9997('0x18'))['db'];function respondWithStatusCode(_0x5220e0,_0x17bf5d){_0x17bf5d=_0x17bf5d||0xcc;return function(_0x4630aa){if(_0x4630aa){return _0x5220e0['sendStatus'](_0x17bf5d);}return _0x5220e0[_0x9997('0x19')](_0x17bf5d)[_0x9997('0x1a')]();};}function respondWithResult(_0x4703f3,_0x4eaf6b){_0x4eaf6b=_0x4eaf6b||0xc8;return function(_0x9a6d1d){if(_0x9a6d1d){return _0x4703f3[_0x9997('0x19')](_0x4eaf6b)[_0x9997('0x1b')](_0x9a6d1d);}};}function respondWithFilteredResult(_0x2e96f8,_0x2dfe18){return function(_0xac13d9){if(_0xac13d9){var _0x26050e=typeof _0x2dfe18[_0x9997('0x1c')]==='undefined'&&typeof _0x2dfe18['limit']===_0x9997('0x1d');var _0x37580c=_0xac13d9[_0x9997('0x1e')];var _0x2d1a8c=_0x26050e?0x0:_0x2dfe18[_0x9997('0x1c')];var _0x218573=_0x26050e?_0xac13d9['count']:_0x2dfe18[_0x9997('0x1c')]+_0x2dfe18[_0x9997('0x1f')];var _0x216979;if(_0x218573>=_0x37580c){_0x218573=_0x37580c;_0x216979=0xc8;}else{_0x216979=0xce;}_0x2e96f8['status'](_0x216979);return _0x2e96f8['set'](_0x9997('0x20'),_0x2d1a8c+'-'+_0x218573+'/'+_0x37580c)[_0x9997('0x1b')](_0xac13d9);}return null;};}function patchUpdates(_0x132708){return function(_0x208f4d){try{jsonpatch['apply'](_0x208f4d,_0x132708,!![]);}catch(_0x2e4781){return BPromise['reject'](_0x2e4781);}return _0x208f4d[_0x9997('0x21')]();};}function saveUpdates(_0x30640c,_0x1c547b){return function(_0x1d2f4d){if(_0x1d2f4d){return _0x1d2f4d[_0x9997('0x22')](_0x30640c)[_0x9997('0x23')](function(_0x54ef4a){return _0x54ef4a;});}return null;};}function removeEntity(_0x441922,_0x945218){return function(_0x1ff051){if(_0x1ff051){return _0x1ff051[_0x9997('0x24')]()['then'](function(){_0x441922['status'](0xcc)[_0x9997('0x1a')]();});}};}function handleEntityNotFound(_0x3a9c72,_0x4c02b8){return function(_0x17c430){if(!_0x17c430){_0x3a9c72[_0x9997('0x25')](0x194);}return _0x17c430;};}function handleError(_0x166f35,_0x4bae7d){_0x4bae7d=_0x4bae7d||0x1f4;return function(_0x15906d){logger[_0x9997('0x26')](_0x15906d[_0x9997('0x27')]);if(_0x15906d['name']){delete _0x15906d[_0x9997('0x28')];}_0x166f35['status'](_0x4bae7d)['send'](_0x15906d);};}exports[_0x9997('0x29')]=function(_0x1a2893,_0x3ed2c8){var _0x12ddfb={},_0x44ab2a={},_0x551768={'count':0x0,'rows':[]};var _0x572310=_['map'](db[_0x9997('0x2a')]['rawAttributes'],function(_0xa4452d){return{'name':_0xa4452d[_0x9997('0x2b')],'type':_0xa4452d[_0x9997('0x2c')]['key']};});_0x44ab2a[_0x9997('0x2d')]=_['map'](_0x572310,'name');_0x44ab2a[_0x9997('0x2e')]=_[_0x9997('0x2f')](_0x1a2893['query']);_0x44ab2a[_0x9997('0x30')]=_[_0x9997('0x31')](_0x44ab2a[_0x9997('0x2d')],_0x44ab2a[_0x9997('0x2e')]);_0x12ddfb['attributes']=_[_0x9997('0x31')](_0x44ab2a[_0x9997('0x2d')],qs[_0x9997('0x32')](_0x1a2893['query'][_0x9997('0x32')]));_0x12ddfb['attributes']=_0x12ddfb[_0x9997('0x33')][_0x9997('0x34')]?_0x12ddfb[_0x9997('0x33')]:_0x44ab2a[_0x9997('0x2d')];if(!_0x1a2893[_0x9997('0x2e')]['hasOwnProperty'](_0x9997('0x35'))){_0x12ddfb['limit']=qs[_0x9997('0x1f')](_0x1a2893[_0x9997('0x2e')][_0x9997('0x1f')]);_0x12ddfb[_0x9997('0x1c')]=qs['offset'](_0x1a2893[_0x9997('0x2e')][_0x9997('0x1c')]);}_0x12ddfb[_0x9997('0x36')]=qs['sort'](_0x1a2893[_0x9997('0x2e')][_0x9997('0x37')]);_0x12ddfb[_0x9997('0x38')]=qs['filters'](_[_0x9997('0x39')](_0x1a2893['query'],_0x44ab2a[_0x9997('0x30')]),_0x572310);if(_0x1a2893['query']['filter']){_0x12ddfb[_0x9997('0x38')]=_[_0x9997('0x3a')](_0x12ddfb['where'],{'$or':_[_0x9997('0x3b')](_0x572310,function(_0x5ec420){if(_0x5ec420[_0x9997('0x2c')]!==_0x9997('0x3c')){var _0x4d5b00={};_0x4d5b00[_0x5ec420[_0x9997('0x28')]]={'$like':'%'+_0x1a2893[_0x9997('0x2e')][_0x9997('0x3d')]+'%'};return _0x4d5b00;}})});}_0x12ddfb=_[_0x9997('0x3a')]({},_0x12ddfb,_0x1a2893[_0x9997('0x3e')]);var _0x3f344c={'where':_0x12ddfb[_0x9997('0x38')]};return db[_0x9997('0x2a')][_0x9997('0x1e')](_0x3f344c)[_0x9997('0x23')](function(_0x31dc4a){_0x551768[_0x9997('0x1e')]=_0x31dc4a;if(_0x1a2893[_0x9997('0x2e')][_0x9997('0x3f')]){_0x12ddfb[_0x9997('0x40')]=[{'all':!![]}];}return db[_0x9997('0x2a')][_0x9997('0x41')](_0x12ddfb);})['then'](function(_0x5519d4){_0x551768[_0x9997('0x42')]=_0x5519d4;return _0x551768;})['then'](respondWithFilteredResult(_0x3ed2c8,_0x12ddfb))[_0x9997('0x43')](handleError(_0x3ed2c8,null));};exports[_0x9997('0x44')]=function(_0x514948,_0x46c97c){var _0x4083cb={'raw':!![],'where':{'id':_0x514948['params']['id']}},_0x1f0906={};_0x1f0906[_0x9997('0x2d')]=_['keys'](db[_0x9997('0x2a')][_0x9997('0x45')]);_0x1f0906['query']=_[_0x9997('0x2f')](_0x514948[_0x9997('0x2e')]);_0x1f0906[_0x9997('0x30')]=_[_0x9997('0x31')](_0x1f0906['model'],_0x1f0906[_0x9997('0x2e')]);_0x4083cb['attributes']=_['intersection'](_0x1f0906[_0x9997('0x2d')],qs['fields'](_0x514948[_0x9997('0x2e')][_0x9997('0x32')]));_0x4083cb[_0x9997('0x33')]=_0x4083cb[_0x9997('0x33')][_0x9997('0x34')]?_0x4083cb[_0x9997('0x33')]:_0x1f0906[_0x9997('0x2d')];if(_0x514948['query'][_0x9997('0x3f')]){_0x4083cb[_0x9997('0x40')]=[{'all':!![]}];}_0x4083cb=_[_0x9997('0x3a')]({},_0x4083cb,_0x514948['options']);return db['SmsApplication']['find'](_0x4083cb)[_0x9997('0x23')](handleEntityNotFound(_0x46c97c,null))['then'](respondWithResult(_0x46c97c,null))[_0x9997('0x43')](handleError(_0x46c97c,null));};exports[_0x9997('0x46')]=function(_0x2022de,_0x4fe857){return db['SmsApplication'][_0x9997('0x46')](_0x2022de[_0x9997('0x47')],{})[_0x9997('0x23')](respondWithResult(_0x4fe857,0xc9))['catch'](handleError(_0x4fe857,null));};exports['update']=function(_0x5d127a,_0x1e78a0){if(_0x5d127a[_0x9997('0x47')]['id']){delete _0x5d127a[_0x9997('0x47')]['id'];}return db[_0x9997('0x2a')][_0x9997('0x48')]({'where':{'id':_0x5d127a[_0x9997('0x49')]['id']}})[_0x9997('0x23')](handleEntityNotFound(_0x1e78a0,null))[_0x9997('0x23')](saveUpdates(_0x5d127a[_0x9997('0x47')],null))[_0x9997('0x23')](respondWithResult(_0x1e78a0,null))[_0x9997('0x43')](handleError(_0x1e78a0,null));};exports['destroy']=function(_0x5ddbf1,_0x394b01){return db[_0x9997('0x2a')]['find']({'where':{'id':_0x5ddbf1[_0x9997('0x49')]['id']}})[_0x9997('0x23')](handleEntityNotFound(_0x394b01,null))['then'](removeEntity(_0x394b01,null))[_0x9997('0x43')](handleError(_0x394b01,null));};
\ No newline at end of file
index a3ec4b0..e373946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1933=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define','SmsApplication','sms_applications','utf8mb4_unicode_ci','util'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0x1933,0xa7));var _0x3193=function(_0x4d4bb1,_0x3bdfa7){_0x4d4bb1=_0x4d4bb1-0x0;var _0x27bdc6=_0x1933[_0x4d4bb1];return _0x27bdc6;};'use strict';var _=require('lodash');var util=require(_0x3193('0x0'));var logger=require(_0x3193('0x1'))(_0x3193('0x2'));var moment=require(_0x3193('0x3'));var BPromise=require(_0x3193('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3193('0x5'));var rimraf=require(_0x3193('0x6'));var config=require(_0x3193('0x7'));var attributes=require('./smsApplication.attributes');module['exports']=function(_0x162d53,_0x3d5078){return _0x162d53[_0x3193('0x8')](_0x3193('0x9'),attributes,{'tableName':_0x3193('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x3193('0xb')});};
\ No newline at end of file
+var _0x2168=['moment','bluebird','request-promise','path','rimraf','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','utf8mb4_unicode_ci','util','../../config/logger','api'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x2168,0x15b));var _0x8216=function(_0x3b3382,_0x286998){_0x3b3382=_0x3b3382-0x0;var _0x13614f=_0x2168[_0x3b3382];return _0x13614f;};'use strict';var _=require('lodash');var util=require(_0x8216('0x0'));var logger=require(_0x8216('0x1'))(_0x8216('0x2'));var moment=require(_0x8216('0x3'));var BPromise=require(_0x8216('0x4'));var rp=require(_0x8216('0x5'));var fs=require('fs');var path=require(_0x8216('0x6'));var rimraf=require(_0x8216('0x7'));var config=require('../../config/environment');var attributes=require(_0x8216('0x8'));module[_0x8216('0x9')]=function(_0x777c10,_0x145f39){return _0x777c10[_0x8216('0xa')](_0x8216('0xb'),attributes,{'tableName':_0x8216('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8216('0xd')});};
\ No newline at end of file
index 7d03ca0..e1beffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x52b6e7,_0x1cbd87){var _0x506eed=function(_0x2e7f1d){while(--_0x2e7f1d){_0x52b6e7['push'](_0x52b6e7['shift']());}};_0x506eed(++_0x1cbd87);}(_0xb016,0x159));var _0x6b01=function(_0x5b3aec,_0x386b85){_0x5b3aec=_0x5b3aec-0x0;var _0x390fe5=_0xb016[_0x5b3aec];return _0x390fe5;};'use strict';var _=require(_0x6b01('0x0'));var util=require(_0x6b01('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6b01('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b01('0x3'))['db'];var utils=require(_0x6b01('0x4'));var logger=require(_0x6b01('0x5'))(_0x6b01('0x6'));var config=require('../../config/environment');var jayson=require(_0x6b01('0x7'));var client=jayson[_0x6b01('0x8')][_0x6b01('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5759a1,_0x5c5bfb,_0x374aab){return new BPromise(function(_0x39f9fa,_0x526a7d){return client['request'](_0x5759a1,_0x374aab)[_0x6b01('0xa')](function(_0x1cb3a6){logger[_0x6b01('0xb')](_0x6b01('0xc'),_0x5c5bfb,_0x6b01('0xd'));logger['debug']('SmsApplication,\x20%s,\x20%s,\x20%s',_0x5c5bfb,_0x6b01('0xd'),JSON[_0x6b01('0xe')](_0x1cb3a6));if(_0x1cb3a6[_0x6b01('0xf')]){if(_0x1cb3a6['error'][_0x6b01('0x10')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x5c5bfb,_0x1cb3a6[_0x6b01('0xf')]['message']);return _0x526a7d(_0x1cb3a6[_0x6b01('0xf')][_0x6b01('0x11')]);}logger['error'](_0x6b01('0xc'),_0x5c5bfb,_0x1cb3a6['error']['message']);return _0x39f9fa(_0x1cb3a6['error'][_0x6b01('0x11')]);}else{logger['info']('SmsApplication,\x20%s,\x20%s',_0x5c5bfb,_0x6b01('0xd'));_0x39f9fa(_0x1cb3a6[_0x6b01('0x12')][_0x6b01('0x11')]);}})[_0x6b01('0x13')](function(_0x3d7045){logger[_0x6b01('0xf')](_0x6b01('0xc'),_0x5c5bfb,_0x3d7045);_0x526a7d(_0x3d7045);});});}
\ No newline at end of file
+var _0x7d8a=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SmsApplication,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info'];(function(_0x3e91a9,_0x53c466){var _0x25c9ad=function(_0x69ee2d){while(--_0x69ee2d){_0x3e91a9['push'](_0x3e91a9['shift']());}};_0x25c9ad(++_0x53c466);}(_0x7d8a,0x1ca));var _0xa7d8=function(_0x5cc8,_0x1faa02){_0x5cc8=_0x5cc8-0x0;var _0x450661=_0x7d8a[_0x5cc8];return _0x450661;};'use strict';var _=require(_0xa7d8('0x0'));var util=require(_0xa7d8('0x1'));var moment=require(_0xa7d8('0x2'));var BPromise=require(_0xa7d8('0x3'));var rs=require(_0xa7d8('0x4'));var fs=require('fs');var Redis=require(_0xa7d8('0x5'));var db=require(_0xa7d8('0x6'))['db'];var utils=require(_0xa7d8('0x7'));var logger=require(_0xa7d8('0x8'))(_0xa7d8('0x9'));var config=require(_0xa7d8('0xa'));var jayson=require(_0xa7d8('0xb'));var client=jayson[_0xa7d8('0xc')][_0xa7d8('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x55bb66,_0x410b09,_0x2e1955){return new BPromise(function(_0x1807cc,_0x455082){return client[_0xa7d8('0xe')](_0x55bb66,_0x2e1955)['then'](function(_0x40f419){logger['info'](_0xa7d8('0xf'),_0x410b09,'request\x20sent');logger[_0xa7d8('0x10')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x410b09,_0xa7d8('0x11'),JSON[_0xa7d8('0x12')](_0x40f419));if(_0x40f419['error']){if(_0x40f419[_0xa7d8('0x13')]['code']===0x1f4){logger[_0xa7d8('0x13')](_0xa7d8('0xf'),_0x410b09,_0x40f419[_0xa7d8('0x13')]['message']);return _0x455082(_0x40f419[_0xa7d8('0x13')][_0xa7d8('0x14')]);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x410b09,_0x40f419['error'][_0xa7d8('0x14')]);return _0x1807cc(_0x40f419[_0xa7d8('0x13')][_0xa7d8('0x14')]);}else{logger[_0xa7d8('0x15')](_0xa7d8('0xf'),_0x410b09,_0xa7d8('0x11'));_0x1807cc(_0x40f419[_0xa7d8('0x16')][_0xa7d8('0x14')]);}})[_0xa7d8('0x17')](function(_0xfc0284){logger[_0xa7d8('0x13')](_0xa7d8('0xf'),_0x410b09,_0xfc0284);_0x455082(_0xfc0284);});});}
\ No newline at end of file
index 5f526e6..52c1be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb4=['./smsInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','getMessages','/:id/download','create','post','/:id/messages','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x107c46,_0x4b7881){var _0x4830f7=function(_0x3067b5){while(--_0x3067b5){_0x107c46['push'](_0x107c46['shift']());}};_0x4830f7(++_0x4b7881);}(_0x6cb4,0xff));var _0x46cb=function(_0x5ea108,_0x2fc08c){_0x5ea108=_0x5ea108-0x0;var _0x5d97aa=_0x6cb4[_0x5ea108];return _0x5d97aa;};'use strict';var multer=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var path=require(_0x46cb('0x2'));var timeout=require(_0x46cb('0x3'));var express=require(_0x46cb('0x4'));var router=express[_0x46cb('0x5')]();var fs_extra=require(_0x46cb('0x6'));var auth=require(_0x46cb('0x7'));var interaction=require(_0x46cb('0x8'));var config=require('../../config/environment');var controller=require(_0x46cb('0x9'));router['get']('/',auth[_0x46cb('0xa')](),controller['index']);router[_0x46cb('0xb')](_0x46cb('0xc'),auth[_0x46cb('0xa')](),controller[_0x46cb('0xd')]);router[_0x46cb('0xb')](_0x46cb('0xe'),auth['isAuthenticated'](),controller[_0x46cb('0xf')]);router[_0x46cb('0xb')]('/:id/messages',auth[_0x46cb('0xa')](),controller[_0x46cb('0x10')]);router['get'](_0x46cb('0x11'),auth[_0x46cb('0xa')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x46cb('0x12')]);router[_0x46cb('0x13')](_0x46cb('0x14'),auth[_0x46cb('0xa')](),controller['addMessage']);router[_0x46cb('0x13')](_0x46cb('0x15'),auth[_0x46cb('0xa')](),interaction[_0x46cb('0x16')](_0x46cb('0x17'),_0x46cb('0x18')),controller[_0x46cb('0x19')]);router[_0x46cb('0x1a')](_0x46cb('0xe'),auth[_0x46cb('0xa')](),interaction[_0x46cb('0x16')]('sms',_0x46cb('0x1b')),controller['update']);router[_0x46cb('0x1c')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x46cb('0x17'),_0x46cb('0x1d')),controller[_0x46cb('0x1e')]);router[_0x46cb('0x1c')](_0x46cb('0x15'),auth[_0x46cb('0xa')](),controller[_0x46cb('0x1f')]);module[_0x46cb('0x20')]=router;
\ No newline at end of file
+var _0x7916=['smsinteraction:update','update','sms','destroy','delete','/:id/tags','removeTags','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','tracked','smsinteraction:addtags','put','/:id'];(function(_0x492f45,_0x4bbf55){var _0x297b67=function(_0x9de251){while(--_0x9de251){_0x492f45['push'](_0x492f45['shift']());}};_0x297b67(++_0x4bbf55);}(_0x7916,0x128));var _0x6791=function(_0x5e01c8,_0x52210f){_0x5e01c8=_0x5e01c8-0x0;var _0x2c10f5=_0x7916[_0x5e01c8];return _0x2c10f5;};'use strict';var multer=require(_0x6791('0x0'));var util=require('util');var path=require(_0x6791('0x1'));var timeout=require(_0x6791('0x2'));var express=require('express');var router=express[_0x6791('0x3')]();var fs_extra=require(_0x6791('0x4'));var auth=require(_0x6791('0x5'));var interaction=require(_0x6791('0x6'));var config=require('../../config/environment');var controller=require(_0x6791('0x7'));router['get']('/',auth[_0x6791('0x8')](),controller[_0x6791('0x9')]);router['get'](_0x6791('0xa'),auth['isAuthenticated'](),controller[_0x6791('0xb')]);router['get']('/:id',auth[_0x6791('0x8')](),controller[_0x6791('0xc')]);router['get'](_0x6791('0xd'),auth[_0x6791('0x8')](),controller[_0x6791('0xe')]);router['get'](_0x6791('0xf'),auth[_0x6791('0x8')](),controller[_0x6791('0x10')]);router[_0x6791('0x11')]('/',auth[_0x6791('0x8')](),controller[_0x6791('0x12')]);router[_0x6791('0x11')](_0x6791('0xd'),auth[_0x6791('0x8')](),controller[_0x6791('0x13')]);router[_0x6791('0x11')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x6791('0x14')]('sms',_0x6791('0x15')),controller['addTags']);router[_0x6791('0x16')](_0x6791('0x17'),auth['isAuthenticated'](),interaction[_0x6791('0x14')]('sms',_0x6791('0x18')),controller[_0x6791('0x19')]);router['delete'](_0x6791('0x17'),auth[_0x6791('0x8')](),interaction['tracked'](_0x6791('0x1a'),'smsinteraction:destroy'),controller[_0x6791('0x1b')]);router[_0x6791('0x1c')](_0x6791('0x1d'),auth[_0x6791('0x8')](),controller[_0x6791('0x1e')]);module[_0x6791('0x1f')]=router;
\ No newline at end of file
index 479e85c..d8c312c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4148=['STRING','ENUM','sequelize','moment','exports','BOOLEAN','DATE'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4148,0xc6));var _0x8414=function(_0x25601e,_0x3bd0f4){_0x25601e=_0x25601e-0x0;var _0x54d208=_0x4148[_0x25601e];return _0x54d208;};'use strict';var Sequelize=require(_0x8414('0x0'));var moment=require(_0x8414('0x1'));module[_0x8414('0x2')]={'closed':{'type':Sequelize[_0x8414('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8414('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x8414('0x5')]},'thirdDisposition':{'type':Sequelize[_0x8414('0x5')]},'note':{'type':Sequelize[_0x8414('0x5')]},'phone':{'type':Sequelize[_0x8414('0x5')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x8414('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8414('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8414('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xab36=['moment','exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x4d1324,_0x3f7b0d){var _0x5e6bf0=function(_0xa0c9e0){while(--_0xa0c9e0){_0x4d1324['push'](_0x4d1324['shift']());}};_0x5e6bf0(++_0x3f7b0d);}(_0xab36,0x1df));var _0x6ab3=function(_0x224739,_0x47e698){_0x224739=_0x224739-0x0;var _0x360517=_0xab36[_0x224739];return _0x360517;};'use strict';var Sequelize=require(_0x6ab3('0x0'));var moment=require(_0x6ab3('0x1'));module[_0x6ab3('0x2')]={'closed':{'type':Sequelize[_0x6ab3('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6ab3('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x6ab3('0x5')]},'thirdDisposition':{'type':Sequelize[_0x6ab3('0x5')]},'note':{'type':Sequelize[_0x6ab3('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x6ab3('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x6ab3('0x6')]('in',_0x6ab3('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x6ab3('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x6ab3('0x6')]('in',_0x6ab3('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index c75feee..c4cfcd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2911=['it.SmsInteractionId\x20=\x20i.id','expr','parseSearch','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','compact','isEmpty','forEach','i.SmsAccountId\x20IN\x20?','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','SmsAccountId','sequelize','toString','keyBy','merge','a.key','Account.key','Account.mandatoryDisposition','contactName','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.fax','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','all','rows','catch','show','intersection','includeAll','create','params','destroy','describe','addMessage','SmsMessage','ids','omit','SmsInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','options','include','findAll','addTags','setTags','spread','color','emit','removeTags','download','root','server','files','join','transcript-%d-%s.zip','User','CmContact','firstName','lastName','Messages','createdAt','direction','secret','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','closedAt','disposition','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','stack','send','fullname','Tags','TagIds','split','push','talking','answered','unmanaged','total','closed','waiting','UserId','index','map','SmsInteraction','rawAttributes','type','key','model','name','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.SmsInteractionId','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags'];(function(_0x2f3a31,_0xa03df5){var _0x326d1a=function(_0x46a35b){while(--_0x46a35b){_0x2f3a31['push'](_0x2f3a31['shift']());}};_0x326d1a(++_0xa03df5);}(_0x2911,0x90));var _0x1291=function(_0x3da533,_0x5b1306){_0x3da533=_0x3da533-0x0;var _0x142a32=_0x2911[_0x3da533];return _0x142a32;};'use strict';var emlformat=require(_0x1291('0x0'));var rimraf=require(_0x1291('0x1'));var zipdir=require(_0x1291('0x2'));var jsonpatch=require(_0x1291('0x3'));var rp=require(_0x1291('0x4'));var moment=require(_0x1291('0x5'));var BPromise=require(_0x1291('0x6'));var Mustache=require(_0x1291('0x7'));var util=require(_0x1291('0x8'));var path=require('path');var sox=require(_0x1291('0x9'));var csv=require(_0x1291('0xa'));var ejs=require(_0x1291('0xb'));var fs=require('fs');var fs_extra=require(_0x1291('0xc'));var _=require(_0x1291('0xd'));var squel=require(_0x1291('0xe'));var crypto=require(_0x1291('0xf'));var jsforce=require(_0x1291('0x10'));var deskjs=require(_0x1291('0x11'));var toCsv=require(_0x1291('0xa'));var querystring=require('querystring');var Papa=require(_0x1291('0x12'));var Redis=require(_0x1291('0x13'));var authService=require(_0x1291('0x14'));var qs=require(_0x1291('0x15'));var as=require(_0x1291('0x16'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x1291('0x17'));var logger=require('../../config/logger')(_0x1291('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1291('0x19'));var db=require(_0x1291('0x1a'))['db'];config[_0x1291('0x1b')]=_[_0x1291('0x1c')](config[_0x1291('0x1b')],{'host':_0x1291('0x1d'),'port':0x18eb});var socket=require(_0x1291('0x1e'))(new Redis(config[_0x1291('0x1b')]));require(_0x1291('0x1f'))[_0x1291('0x20')](socket);function respondWithStatusCode(_0x1ecccb,_0x5746ab){_0x5746ab=_0x5746ab||0xcc;return function(_0x4d9cb1){if(_0x4d9cb1){return _0x1ecccb['sendStatus'](_0x5746ab);}return _0x1ecccb[_0x1291('0x21')](_0x5746ab)[_0x1291('0x22')]();};}function respondWithResult(_0x228538,_0x32d940){_0x32d940=_0x32d940||0xc8;return function(_0x244ef9){if(_0x244ef9){return _0x228538[_0x1291('0x21')](_0x32d940)[_0x1291('0x23')](_0x244ef9);}};}function respondWithFilteredResult(_0x466029,_0x1775a3){return function(_0x53e6bd){if(_0x53e6bd){var _0x2381f6=typeof _0x1775a3[_0x1291('0x24')]===_0x1291('0x25')&&typeof _0x1775a3[_0x1291('0x26')]===_0x1291('0x25');var _0xdbfcb2=_0x53e6bd[_0x1291('0x27')];var _0x561bad=_0x2381f6?0x0:_0x1775a3[_0x1291('0x24')];var _0x5ae619=_0x2381f6?_0x53e6bd['count']:_0x1775a3['offset']+_0x1775a3['limit'];var _0x1cd98b;if(_0x5ae619>=_0xdbfcb2){_0x5ae619=_0xdbfcb2;_0x1cd98b=0xc8;}else{_0x1cd98b=0xce;}_0x466029['status'](_0x1cd98b);return _0x466029[_0x1291('0x28')]('Content-Range',_0x561bad+'-'+_0x5ae619+'/'+_0xdbfcb2)[_0x1291('0x23')](_0x53e6bd);}return null;};}function patchUpdates(_0x149243){return function(_0x4c9b4b){try{jsonpatch[_0x1291('0x29')](_0x4c9b4b,_0x149243,!![]);}catch(_0x512e69){return BPromise[_0x1291('0x2a')](_0x512e69);}return _0x4c9b4b[_0x1291('0x2b')]();};}function saveUpdates(_0x83f1cf,_0x2bd589){return function(_0x553887){if(_0x553887){return _0x553887[_0x1291('0x2c')](_0x83f1cf)[_0x1291('0x2d')](function(_0x18f420){return _0x18f420;});}return null;};}function removeEntity(_0x3a37ea,_0x26a484){return function(_0x5e8746){if(_0x5e8746){return _0x5e8746['destroy']()['then'](function(){_0x3a37ea[_0x1291('0x21')](0xcc)[_0x1291('0x22')]();});}};}function handleEntityNotFound(_0x56201e,_0x54c633){return function(_0x15ab0a){if(!_0x15ab0a){_0x56201e['sendStatus'](0x194);}return _0x15ab0a;};}function handleError(_0x14ca94,_0x563182){_0x563182=_0x563182||0x1f4;return function(_0x5c995d){logger[_0x1291('0x2e')](_0x5c995d[_0x1291('0x2f')]);if(_0x5c995d['name']){delete _0x5c995d['name'];}_0x14ca94['status'](_0x563182)[_0x1291('0x30')](_0x5c995d);};}function getInteractionUsers(_0x305029,_0x20b64f){return new BPromise(function(_0xb5164b,_0x18f9e8){try{if(_0x20b64f[_0x305029['id']]){_0x305029['Users']=_['map'](_0x20b64f[_0x305029['id']],function(_0x6a2a86){return{'id':_0x6a2a86['id'],'fullname':_0x6a2a86[_0x1291('0x31')]};});}}catch(_0xded1e0){_0x18f9e8(_0xded1e0);}_0xb5164b(_0x305029);});}function getInteractionTags(_0x3eb0a8,_0x1abcac){return new BPromise(function(_0x1315f8,_0x500d7d){try{if(_0x3eb0a8['TagIds']){_0x3eb0a8[_0x1291('0x32')]=[];_0x3eb0a8[_0x1291('0x33')][_0x1291('0x34')](',')['forEach'](function(_0x4bf94c){_0x3eb0a8[_0x1291('0x32')][_0x1291('0x35')](_0x1abcac[_0x4bf94c]);});}delete _0x3eb0a8['TagIds'];}catch(_0x1b9377){_0x500d7d(_0x1b9377);}_0x1315f8(_0x3eb0a8);});}function updateSmsInteraction(_0x28a910,_0x5f1e7c,_0x20e809){return new BPromise(function(_0x5d33f1,_0x4ebdb0){return getInteractionUsers(_0x28a910,_0x20e809)['then'](function(_0x4c4976){return getInteractionTags(_0x4c4976,_0x5f1e7c);})[_0x1291('0x2d')](function(_0x6d296f){return getStateInteraction(_0x6d296f);})[_0x1291('0x2d')](function(_0xe768b0){_0x5d33f1(_0xe768b0);})['catch'](function(_0x1ace2f){_0x4ebdb0(_0x1ace2f);});});}function getStateInteraction(_0x119972){return new BPromise(function(_0x24c956){_0x119972['waiting']=0x0;_0x119972[_0x1291('0x36')]=0x0;_0x119972[_0x1291('0x37')]=0x0;_0x119972[_0x1291('0x38')]=0x0;_0x119972[_0x1291('0x39')]=0x0;if(!_0x119972[_0x1291('0x3a')]&&!_0x119972['UserId']){_0x119972[_0x1291('0x3b')]+=0x1;}if(!_0x119972[_0x1291('0x3a')]&&_0x119972[_0x1291('0x3c')]){_0x119972[_0x1291('0x36')]+=0x1;if(_0x119972[_0x1291('0x3b')]){_0x119972[_0x1291('0x3b')]-=0x1;}}if(_0x119972['closed']&&_0x119972[_0x1291('0x3c')]){_0x119972[_0x1291('0x37')]+=0x1;if(_0x119972[_0x1291('0x36')]){_0x119972[_0x1291('0x36')]-=0x1;}}if(_0x119972['closed']&&!_0x119972['UserId']){_0x119972[_0x1291('0x38')]+=0x1;if(_0x119972[_0x1291('0x3b')]){_0x119972['waiting']-=0x1;}}_0x119972['total']+=0x1;_0x24c956(_0x119972);});}exports[_0x1291('0x3d')]=function(_0x9060af,_0x1a372f){var _0x1524b2={},_0xcfbef={},_0x17eda8={'count':0x0,'rows':[]};var _0x2c5092=_[_0x1291('0x3e')](db[_0x1291('0x3f')][_0x1291('0x40')],function(_0x42ed09){return{'name':_0x42ed09['fieldName'],'type':_0x42ed09[_0x1291('0x41')][_0x1291('0x42')]};});_0xcfbef[_0x1291('0x43')]=_[_0x1291('0x3e')](_0x2c5092,_0x1291('0x44'));_0xcfbef[_0x1291('0x45')]=_[_0x1291('0x46')](_0x9060af['query']);_0xcfbef[_0x1291('0x47')]=_['intersection'](_0xcfbef['model'],_0xcfbef[_0x1291('0x45')]);_0x1524b2[_0x1291('0x48')]=_['intersection'](_0xcfbef[_0x1291('0x43')],qs[_0x1291('0x49')](_0x9060af['query'][_0x1291('0x49')]));_0x1524b2[_0x1291('0x48')]=_0x1524b2[_0x1291('0x48')][_0x1291('0x4a')]?_0x1524b2[_0x1291('0x48')]:_0xcfbef['model'];if(!_0x9060af['query'][_0x1291('0x4b')](_0x1291('0x4c'))){_0x1524b2[_0x1291('0x26')]=qs[_0x1291('0x26')](_0x9060af['query'][_0x1291('0x26')]);_0x1524b2[_0x1291('0x24')]=qs[_0x1291('0x24')](_0x9060af[_0x1291('0x45')][_0x1291('0x24')]);}_0x1524b2['order']=qs[_0x1291('0x4d')](_0x9060af[_0x1291('0x45')]['sort']);_0x1524b2[_0x1291('0x4e')]=qs[_0x1291('0x47')](_[_0x1291('0x4f')](_0x9060af['query'],_0xcfbef[_0x1291('0x47')]),_0x2c5092);var _0x271a2a=[];var _0x4c86d8=squel[_0x1291('0x50')]()['field']('id')[_0x1291('0x51')](_0x1291('0x44'))['field']('color')[_0x1291('0x52')](_0x1291('0x53'));var _0x1956de=squel['select']()[_0x1291('0x51')](_0x1291('0x54'))[_0x1291('0x51')](_0x1291('0x55'))[_0x1291('0x51')](_0x1291('0x56'))[_0x1291('0x52')]('user_has_sms_interactions','ui')[_0x1291('0x57')](_0x1291('0x58'),'u',_0x1291('0x59'));var _0x12e9fe=squel['select']()[_0x1291('0x52')](_0x1291('0x5a'),'i')['left_join'](_0x1291('0x5b'),'c',_0x1291('0x5c'))[_0x1291('0x57')]('users','o','o.id\x20=\x20i.UserId')[_0x1291('0x57')](_0x1291('0x5d'),'a','a.id\x20=\x20i.SmsAccountId')[_0x1291('0x57')](_0x1291('0x5e'),'me',_0x1291('0x5f'))[_0x1291('0x57')](_0x1291('0x60'),'it',_0x1291('0x61'))[_0x1291('0x57')](_0x1291('0x53'),'t','t.id\x20=\x20it.TagId');var _0x5c8030=squel[_0x1291('0x62')]();var _0x5cb9c9=[];var _0x3449b1=squel[_0x1291('0x62')]();var _0x20fb79;if(_0x9060af[_0x1291('0x45')]['search']){_0x20fb79=as[_0x1291('0x63')](_0x9060af[_0x1291('0x45')][_0x1291('0x64')]);var _0x51b16f=_0x20fb79[_0x1291('0x65')];for(var _0xab7be9=0x0;_0xab7be9<_0x20fb79['conditions']['length'];_0xab7be9++){var _0x22cfd1=_0x20fb79[_0x1291('0x66')][_0xab7be9];var _0x14fb6b='i';var _0xa1f7dc=_[_0x1291('0x67')](_0x2c5092,[_0x1291('0x44'),_0x22cfd1[_0x1291('0x51')]]);if(!_0xa1f7dc){switch(_0x22cfd1[_0x1291('0x51')]){case _0x1291('0x68'):if(_0x22cfd1[_0x1291('0x69')]==0x1){_0x12e9fe[_0x1291('0x6a')]('`'+_0x22cfd1['field']+_0x1291('0x6b'));}else{_0x12e9fe[_0x1291('0x6a')]('`'+_0x22cfd1[_0x1291('0x51')]+_0x1291('0x6c'));}break;case _0x1291('0x6d'):if(_0x22cfd1[_0x1291('0x6e')]===_0x1291('0x6f')){if(_0x22cfd1['value'][_0x1291('0x34')]('\x20')[_0x1291('0x4a')]>0x1){_0x5c8030[_0x51b16f]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x1291('0x70')](_0x22cfd1[_0x1291('0x69')]),null);}else{var _0x2ae4b6='%'+_0x22cfd1[_0x1291('0x69')]+'%';_0x5c8030[_0x51b16f](_0x1291('0x71'),_0x2ae4b6,_0x2ae4b6,_0x2ae4b6);}}else{_0xa1f7dc=_[_0x1291('0x67')](_0x2c5092,[_0x1291('0x44'),_0x1291('0x72')]);_0x22cfd1[_0x1291('0x51')]='ContactId';_0x3611a1=as[_0x1291('0x73')](_0x14fb6b,_0xa1f7dc[_0x1291('0x41')],_0x22cfd1);_0x5c8030[_0x51b16f](_0x3611a1[_0x1291('0x74')],_0x3611a1[_0x1291('0x69')][_0x1291('0x75')],_0x3611a1['value']['end']);}break;case _0x1291('0x76'):var _0xfbb1d5=_0x22cfd1[_0x1291('0x69')][_0x1291('0x34')](',')['map'](function(_0x5d78f7){return Number(_0x5d78f7);});_0xfbb1d5['forEach'](function(_0x38a2a0){_0x3449b1['or'](_0x1291('0x77'),'%,'+_0x38a2a0+',%');});_0x5cb9c9=_[_0x1291('0x78')](_0x5cb9c9,_0xfbb1d5);break;case'User':if(_0x22cfd1['operator']===_0x1291('0x6f')){_0x5c8030[_0x51b16f](_0x1291('0x79'),'%'+_0x22cfd1[_0x1291('0x69')]+'%',null);}else{_0xa1f7dc=_[_0x1291('0x67')](_0x2c5092,[_0x1291('0x44'),_0x1291('0x3c')]);_0x22cfd1[_0x1291('0x51')]=_0x1291('0x3c');_0x3611a1=as[_0x1291('0x73')](_0x14fb6b,_0xa1f7dc[_0x1291('0x41')],_0x22cfd1);_0x5c8030[_0x51b16f](_0x3611a1[_0x1291('0x74')],_0x3611a1['value']['start'],_0x3611a1[_0x1291('0x69')][_0x1291('0x22')]);}break;case _0x1291('0x7a'):_0x3611a1=as['buildExpression']('me',null,_0x22cfd1);_0x5c8030[_0x51b16f](_0x3611a1[_0x1291('0x74')],_0x3611a1['value'][_0x1291('0x75')],_0x3611a1[_0x1291('0x69')][_0x1291('0x22')]);break;}}else{var _0x3611a1=as['buildExpression'](_0x14fb6b,_0xa1f7dc[_0x1291('0x41')],_0x22cfd1);_0x5c8030[_0x51b16f](_0x3611a1[_0x1291('0x74')],_0x3611a1['value'][_0x1291('0x75')],_0x3611a1['value'][_0x1291('0x22')]);}}}else{var _0x30000c=_(_0x9060af['query'])['keys']()[_0x1291('0x3e')](function(_0x5441fa){return _['some'](_0x2c5092,[_0x1291('0x44'),_0x5441fa])?_0x5441fa:undefined;})[_0x1291('0x7b')]()[_0x1291('0x69')]();if(!_[_0x1291('0x7c')](_0x30000c)){_0x30000c[_0x1291('0x7d')](function(_0x1efcc2){if(_0x1efcc2==='SmsAccountId'){_0x12e9fe['where'](_0x1291('0x7e'),[]['concat'](_0x9060af['query'][_0x1efcc2]));}else if(_0x1efcc2==='createdAt'){var _0x383692=JSON['parse'](_0x9060af[_0x1291('0x45')][_0x1efcc2])[_0x1291('0x7f')];var _0x40176d=JSON['parse'](_0x9060af[_0x1291('0x45')][_0x1efcc2])[_0x1291('0x80')];_0x12e9fe['where'](_0x1291('0x81'),_0x383692,_0x40176d);}else{if(_0x9060af[_0x1291('0x45')][_0x1efcc2]===_0x1291('0x82')){_0x12e9fe[_0x1291('0x4e')]('i.'+_0x1efcc2+_0x1291('0x83'));}else{_0x12e9fe[_0x1291('0x4e')]('i.'+_0x1efcc2+_0x1291('0x84'),_0x9060af[_0x1291('0x45')][_0x1efcc2]);}}});}if(_0x9060af['query'][_0x1291('0x85')]){if(_0x9060af['query']['read']==0x1){_0x12e9fe['having'](_0x1291('0x86'));}else{_0x12e9fe[_0x1291('0x6a')](_0x1291('0x87'));}}if(_0x9060af['query'][_0x1291('0x88')]){_0x5cb9c9=_[_0x1291('0x89')](_0x9060af[_0x1291('0x45')][_0x1291('0x88')])?_0x9060af[_0x1291('0x45')]['tag']:new Array(_0x9060af['query'][_0x1291('0x88')]);_0x5cb9c9['forEach'](function(_0x1ba89e){_0x3449b1['or'](_0x1291('0x77'),'%,'+_0x1ba89e+',%');});}if(_0x9060af[_0x1291('0x45')][_0x1291('0x8a')]){var _0x528028=_0x9060af[_0x1291('0x45')][_0x1291('0x8a')][_0x1291('0x8b')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x1291('0x8c')](_0x528028)){_0x5c8030['or']('i.id\x20LIKE\x20?',_0x528028+'%')['or'](_0x1291('0x8d'),_0x528028+'%');}else{_0x5c8030['or'](_0x1291('0x8e'),qs['getFullTextValue'](_0x528028))['or'](_0x1291('0x8f'),_0x528028+'%');}}}_0x12e9fe[_0x1291('0x4e')](_0x5c8030);_0x12e9fe[_0x1291('0x90')](_0x1291('0x91'));var _0x14d999={'type':db[_0x1291('0x92')][_0x1291('0x93')]['SELECT'],'raw':!![]};var _0xbb17cf=_0x12e9fe[_0x1291('0x94')]();_0xbb17cf[_0x1291('0x51')]('i.id');_0xbb17cf['field'](_0x1291('0x95'),_0x1291('0x68'));if(_0x1524b2[_0x1291('0x96')]){_0x1524b2[_0x1291('0x96')][_0x1291('0x7d')](function(_0x5cf6f8){var _0x337111=_0x5cf6f8[0x0]==='contactName'?_0x5cf6f8[0x0]:'i.'+_0x5cf6f8[0x0];_0x12e9fe[_0x1291('0x96')](_0x337111,_0x5cf6f8[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x5cb9c9)){_0x12e9fe[_0x1291('0x6a')](_0x3449b1);_0xbb17cf['where']('t.id\x20IN\x20?',_0x5cb9c9);}BPromise[_0x1291('0x97')]()[_0x1291('0x2d')](function(){if(!_0x20fb79){if(_0x9060af[_0x1291('0x45')]['SmsAccountId'])return;_0xbb17cf[_0x1291('0x4e')](_0x1291('0x98'));_0x12e9fe[_0x1291('0x4e')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x9060af['user'][_0x1291('0x99')]!==_0x1291('0x9a'))return;return _0x9060af[_0x1291('0x9b')][_0x1291('0x9c')]({'attributes':['id'],'raw':!![]})[_0x1291('0x2d')](function(_0x28d07a){if(_[_0x1291('0x7c')](_0x28d07a)){_0xbb17cf[_0x1291('0x4e')]('i.SmsAccountId\x20IS\x20NULL');_0x12e9fe[_0x1291('0x4e')](_0x1291('0x9d'));}else{_0xbb17cf[_0x1291('0x4e')](_0x1291('0x7e'),_[_0x1291('0x3e')](_0x28d07a,'id'));_0x12e9fe['where'](_0x1291('0x7e'),_['map'](_0x28d07a,'id'));}});})[_0x1291('0x2d')](function(){if(_0x9060af['user'][_0x1291('0x99')]===_0x1291('0x9a')&&!_0x20fb79&&!_0x9060af[_0x1291('0x45')][_0x1291('0x9e')])return[];return db[_0x1291('0x9f')]['query'](_0xbb17cf['toString'](),_0x14d999);})[_0x1291('0x2d')](function(_0x352e5e){_0x17eda8[_0x1291('0x27')]=_0x352e5e[_0x1291('0x4a')];if(_0x17eda8[_0x1291('0x27')]===0x0)return[];return db[_0x1291('0x9f')]['query'](_0x4c86d8[_0x1291('0xa0')](),_0x14d999)['then'](function(_0x259d03){_0x271a2a=_[_0x1291('0xa1')](_0x259d03,'id');_0x14d999=_[_0x1291('0xa2')](_0x14d999,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x9060af[_0x1291('0x45')][_0x1291('0x49')]){_0x1524b2[_0x1291('0x48')][_0x1291('0x7d')](function(_0x1ed532){_0x12e9fe[_0x1291('0x51')]('i.'+_0x1ed532);});}else{_0x12e9fe['field'](_0x1291('0x95'),_0x1291('0x68'));_0x12e9fe[_0x1291('0x51')](_0x1291('0xa3'),_0x1291('0xa4'));_0x12e9fe[_0x1291('0x51')]('a.mandatoryDisposition',_0x1291('0xa5'));_0x12e9fe[_0x1291('0x51')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0x1291('0xa6'));_0x12e9fe[_0x1291('0x51')]('i.*');_0x12e9fe[_0x1291('0x51')](_0x1291('0xa7'),_0x1291('0xa8'));_0x12e9fe[_0x1291('0x51')](_0x1291('0xa9'),_0x1291('0xaa'));_0x12e9fe[_0x1291('0x51')](_0x1291('0xab'),_0x1291('0xac'));_0x12e9fe['field'](_0x1291('0xad'),_0x1291('0xae'));_0x12e9fe[_0x1291('0x51')](_0x1291('0xaf'),'Contact.mobile');_0x12e9fe['field']('c.fax',_0x1291('0xb0'));_0x12e9fe[_0x1291('0x51')]('o.fullname',_0x1291('0xb1'));_0x12e9fe[_0x1291('0x51')]('o.internal',_0x1291('0xb2'));_0x12e9fe[_0x1291('0x51')](_0x1291('0xb3'),_0x1291('0x33'));}if(_0x1524b2['limit'])_0x12e9fe[_0x1291('0x26')](_0x1524b2[_0x1291('0x26')]);if(_0x1524b2[_0x1291('0x24')])_0x12e9fe[_0x1291('0x24')](_0x1524b2['offset']);return db[_0x1291('0x9f')][_0x1291('0x45')](_0x12e9fe['toString'](),_0x14d999);})[_0x1291('0x2d')](function(_0x9ddaac){if(_0x9ddaac[_0x1291('0x4a')]>0x0)_0x1956de['where'](_0x1291('0xb4'),_[_0x1291('0x3e')](_0x9ddaac,'id'));return db[_0x1291('0x9f')][_0x1291('0x45')](_0x1956de['toString'](),_0x14d999)['then'](function(_0x3f1b4d){var _0x5980a2=_[_0x1291('0xb5')](_0x3f1b4d,'SmsInteractionId');var _0x14ee06=[];_0x9ddaac['forEach'](function(_0x150d22){_0x14ee06[_0x1291('0x35')](updateSmsInteraction(_0x150d22,_0x271a2a,_0x5980a2));});return BPromise[_0x1291('0xb6')](_0x14ee06);});});})[_0x1291('0x2d')](function(_0x473c52){_0x17eda8[_0x1291('0xb7')]=_0x473c52;return _0x17eda8;})[_0x1291('0x2d')](respondWithFilteredResult(_0x1a372f,_0x1524b2))[_0x1291('0xb8')](handleError(_0x1a372f,null));};exports[_0x1291('0xb9')]=function(_0x408d7f,_0x52a27e){var _0x39cb05={'raw':![],'where':{'id':_0x408d7f['params']['id']}},_0x319740={};_0x319740[_0x1291('0x43')]=_['keys'](db[_0x1291('0x3f')][_0x1291('0x40')]);_0x319740[_0x1291('0x45')]=_[_0x1291('0x46')](_0x408d7f['query']);_0x319740[_0x1291('0x47')]=_[_0x1291('0xba')](_0x319740[_0x1291('0x43')],_0x319740[_0x1291('0x45')]);_0x39cb05[_0x1291('0x48')]=_['intersection'](_0x319740['model'],qs[_0x1291('0x49')](_0x408d7f['query'][_0x1291('0x49')]));_0x39cb05[_0x1291('0x48')]=_0x39cb05[_0x1291('0x48')][_0x1291('0x4a')]?_0x39cb05[_0x1291('0x48')]:_0x319740[_0x1291('0x43')];if(_0x408d7f['query'][_0x1291('0xbb')]){_0x39cb05['include']=[{'all':!![]}];}_0x39cb05=_[_0x1291('0xa2')]({},_0x39cb05,_0x408d7f['options']);return db['SmsInteraction'][_0x1291('0x67')](_0x39cb05)[_0x1291('0x2d')](handleEntityNotFound(_0x52a27e,null))['then'](respondWithResult(_0x52a27e,null))[_0x1291('0xb8')](handleError(_0x52a27e,null));};exports[_0x1291('0xbc')]=function(_0x66a155,_0x5df6c2){return db[_0x1291('0x3f')][_0x1291('0xbc')](_0x66a155[_0x1291('0x7a')],{})[_0x1291('0x2d')](respondWithResult(_0x5df6c2,0xc9))['catch'](handleError(_0x5df6c2,null));};exports['update']=function(_0x18a1d7,_0x439f50){if(_0x18a1d7[_0x1291('0x7a')]['id']){delete _0x18a1d7[_0x1291('0x7a')]['id'];}return db[_0x1291('0x3f')][_0x1291('0x67')]({'where':{'id':_0x18a1d7[_0x1291('0xbd')]['id']}})[_0x1291('0x2d')](handleEntityNotFound(_0x439f50,null))['then'](saveUpdates(_0x18a1d7[_0x1291('0x7a')],null))[_0x1291('0x2d')](respondWithResult(_0x439f50,null))[_0x1291('0xb8')](handleError(_0x439f50,null));};exports[_0x1291('0xbe')]=function(_0xee169c,_0x37509a){return db[_0x1291('0x3f')][_0x1291('0x67')]({'where':{'id':_0xee169c[_0x1291('0xbd')]['id']}})[_0x1291('0x2d')](handleEntityNotFound(_0x37509a,null))['then'](removeEntity(_0x37509a,null))[_0x1291('0xb8')](handleError(_0x37509a,null));};exports[_0x1291('0xbf')]=function(_0x48b39c,_0x1c8532){return db[_0x1291('0x3f')][_0x1291('0xbf')]()[_0x1291('0x2d')](respondWithResult(_0x1c8532,null))[_0x1291('0xb8')](handleError(_0x1c8532,null));};exports[_0x1291('0xc0')]=function(_0x5aaa2c,_0x16502e,_0x4350b4){return db[_0x1291('0xc1')][_0x1291('0x67')]({'where':{'id':_0x5aaa2c[_0x1291('0xbd')]['id']}})[_0x1291('0x2d')](handleEntityNotFound(_0x16502e,null))[_0x1291('0x2d')](function(_0x1e7a25){if(_0x1e7a25){return _0x1e7a25['addMessage'](_0x5aaa2c[_0x1291('0x7a')][_0x1291('0xc2')],_[_0x1291('0xc3')](_0x5aaa2c[_0x1291('0x7a')],['ids','id'])||{});}})[_0x1291('0x2d')](respondWithResult(_0x16502e,null))[_0x1291('0xb8')](handleError(_0x16502e,null));};exports['getMessages']=function(_0x36ad1f,_0x14e9a6,_0x5501b9){var _0x565976={'raw':![],'where':{}};var _0x2f1fab={};var _0x240637={'count':0x0,'rows':[]};return db[_0x1291('0x3f')]['findOne']({'where':{'id':_0x36ad1f[_0x1291('0xbd')]['id']}})['then'](handleEntityNotFound(_0x14e9a6,null))[_0x1291('0x2d')](function(_0x57d47f){if(_0x57d47f){_0x2f1fab[_0x1291('0x43')]=_[_0x1291('0x46')](db[_0x1291('0xc1')]['rawAttributes']);_0x2f1fab[_0x1291('0x45')]=_['keys'](_0x36ad1f['query']);_0x2f1fab['filters']=_[_0x1291('0xba')](_0x2f1fab[_0x1291('0x43')],_0x2f1fab['query']);_0x565976[_0x1291('0x48')]=_[_0x1291('0xba')](_0x2f1fab['model'],qs[_0x1291('0x49')](_0x36ad1f[_0x1291('0x45')]['fields']));_0x565976[_0x1291('0x48')]=_0x565976[_0x1291('0x48')][_0x1291('0x4a')]?_0x565976[_0x1291('0x48')]:_0x2f1fab['model'];if(!_0x36ad1f[_0x1291('0x45')]['hasOwnProperty'](_0x1291('0x4c'))){_0x565976['limit']=qs[_0x1291('0x26')](_0x36ad1f[_0x1291('0x45')][_0x1291('0x26')]);_0x565976[_0x1291('0x24')]=qs[_0x1291('0x24')](_0x36ad1f[_0x1291('0x45')][_0x1291('0x24')]);}_0x565976[_0x1291('0x96')]=qs[_0x1291('0x4d')](_0x36ad1f[_0x1291('0x45')][_0x1291('0x4d')]);_0x565976[_0x1291('0x4e')]=qs[_0x1291('0x47')](_[_0x1291('0x4f')](_0x36ad1f['query'],_0x2f1fab['filters']));_0x565976[_0x1291('0x4e')][_0x1291('0xc4')]=_0x57d47f['id'];if(_0x36ad1f['query'][_0x1291('0x8a')]){_0x565976[_0x1291('0x4e')]=_['merge'](_0x565976['where'],{'$or':_[_0x1291('0x3e')](_0x565976[_0x1291('0x48')],function(_0xf06792){var _0x2b85f4={};_0x2b85f4[_0xf06792]={'$like':'%'+_0x36ad1f[_0x1291('0x45')][_0x1291('0x8a')]+'%'};return _0x2b85f4;})});}if(_0x36ad1f[_0x1291('0x45')][_0x1291('0x7f')]){var _0x461cf0=_0x36ad1f[_0x1291('0x45')]['$gte'][_0x1291('0x34')](',');var _0x52d438={};_0x52d438[_0x461cf0[0x0]]={'$gte':moment(_0x461cf0[0x1])[_0x1291('0xc5')](_0x1291('0xc6'))};_0x565976[_0x1291('0x4e')]=_['merge'](_0x565976['where'],_0x52d438);}_0x565976=_['merge']({},_0x565976,_0x36ad1f[_0x1291('0xc7')]);return db[_0x1291('0xc1')][_0x1291('0x27')]({'where':_0x565976[_0x1291('0x4e')]})[_0x1291('0x2d')](function(_0x4f758c){_0x240637[_0x1291('0x27')]=_0x4f758c;if(_0x36ad1f['query'][_0x1291('0xbb')]){_0x565976[_0x1291('0xc8')]=[{'all':!![]}];}return db['SmsMessage'][_0x1291('0xc9')](_0x565976);})[_0x1291('0x2d')](function(_0x28e9ba){_0x240637[_0x1291('0xb7')]=_0x28e9ba;return _0x240637;});}})['then'](respondWithFilteredResult(_0x14e9a6,_0x565976))[_0x1291('0xb8')](handleError(_0x14e9a6,null));};exports[_0x1291('0xca')]=function(_0x164450,_0x3e9814,_0x15f64a){return db[_0x1291('0x3f')][_0x1291('0x67')]({'where':{'id':_0x164450[_0x1291('0xbd')]['id']}})[_0x1291('0x2d')](handleEntityNotFound(_0x3e9814,null))['then'](function(_0x3f4c91){if(_0x3f4c91){return _0x3f4c91[_0x1291('0xcb')](_0x164450[_0x1291('0x7a')]['ids'],_[_0x1291('0xc3')](_0x164450['body'],[_0x1291('0xc2'),'id'])||{})[_0x1291('0xcc')](function(){return db[_0x1291('0x76')]['findAll']({'attributes':['id',_0x1291('0x44'),_0x1291('0xcd')],'where':{'id':_0x164450[_0x1291('0x7a')][_0x1291('0xc2')]}});})[_0x1291('0x2d')](function(_0x1ed66c){socket[_0x1291('0xce')]('smsInteractionTags:save',{'id':Number(_0x164450[_0x1291('0xbd')]['id']),'tags':_0x1ed66c||[]});return{'id':Number(_0x164450[_0x1291('0xbd')]['id']),'tags':_0x1ed66c||[]};});}})['then'](respondWithResult(_0x3e9814,null))[_0x1291('0xb8')](handleError(_0x3e9814,null));};exports[_0x1291('0xcf')]=function(_0x265b9e,_0x232f74,_0x37dfe3){return db[_0x1291('0x3f')]['find']({'where':{'id':_0x265b9e[_0x1291('0xbd')]['id']}})['then'](handleEntityNotFound(_0x232f74,null))['then'](function(_0x4a454a){if(_0x4a454a){return _0x4a454a['removeTags'](_0x265b9e[_0x1291('0x45')][_0x1291('0xc2')]);}})['then'](respondWithStatusCode(_0x232f74,null))[_0x1291('0xb8')](handleError(_0x232f74,null));};exports[_0x1291('0xd0')]=function(_0x92453b,_0x2805e6){var _0x403974=moment()['unix']()[_0x1291('0xa0')]();var _0x3bffa1=path['join'](config[_0x1291('0xd1')],_0x1291('0xd2'),_0x1291('0xd3'),'tmp');var _0x136dbf=path[_0x1291('0xd4')](config[_0x1291('0xd1')],'server','files','attachments');var _0x42511c=path[_0x1291('0xd4')](_0x3bffa1,_0x403974);var _0x6783a7=util[_0x1291('0xc5')](_0x1291('0xd5'),_0x92453b[_0x1291('0xbd')]['id'],_0x403974);var _0x4b01f7=path[_0x1291('0xd4')](_0x3bffa1,_0x6783a7);var _0x460c8d=[];_0x460c8d[_0x1291('0x35')]({'model':db[_0x1291('0xd6')],'as':_0x1291('0xd6'),'attributes':['id',_0x1291('0x31')],'raw':!![]});_0x460c8d[_0x1291('0x35')]({'model':db[_0x1291('0xd7')],'as':_0x1291('0x6d'),'attributes':['id',_0x1291('0xd8'),_0x1291('0xd9')],'raw':!![]});var _0x20061a=[{'model':db[_0x1291('0xc1')],'as':_0x1291('0xda'),'attributes':['id','body',_0x1291('0xdb'),_0x1291('0xdc'),_0x1291('0xdd'),_0x1291('0x85')],'include':_0x460c8d}];_0x20061a[_0x1291('0x35')]({'model':db[_0x1291('0xde')],'as':_0x1291('0xdf'),'attributes':['id','name']});_0x20061a[_0x1291('0x35')]({'model':db[_0x1291('0xd6')],'as':_0x1291('0xe0'),'attributes':['id',_0x1291('0x31')]});return db['SmsInteraction'][_0x1291('0x67')]({'where':{'id':_0x92453b[_0x1291('0xbd')]['id']},'include':_0x20061a})[_0x1291('0x2d')](handleEntityNotFound(_0x2805e6,null))[_0x1291('0x2d')](function(_0xef4519){if(_0xef4519){var _0x1c8ed3=_0xef4519[_0x1291('0xe1')]({'plain':!![]});fs[_0x1291('0xe2')](_0x42511c);var _0x1f6349={'channel':_0x1291('0xe3'),'account':_0x1c8ed3['Account'][_0x1291('0x44')],'agent':_0x1c8ed3['Owner']?_0x1c8ed3[_0x1291('0xe0')][_0x1291('0x31')]:_0x1291('0xe4'),'createdAt':moment(_0x1c8ed3['createdAt'])[_0x1291('0xc5')](_0x1291('0xc6'))['toString'](),'closedAt':_0x1c8ed3[_0x1291('0x3a')]?moment(_0x1c8ed3[_0x1291('0xe5')])[_0x1291('0xc5')](_0x1291('0xc6'))['toString']():'','disposition':_0x1c8ed3[_0x1291('0xe6')],'messages':_(_0x1c8ed3['Messages'])[_0x1291('0x8a')]({'secret':![]})['map'](function(_0x52768e){return{'date':moment(_0x52768e[_0x1291('0xdb')])['format'](_0x1291('0xc6'))['toString'](),'sender':_0x52768e['direction']===_0x1291('0xe7')?_0x52768e[_0x1291('0xd6')]?_0x52768e[_0x1291('0xd6')][_0x1291('0x31')]:_0x1291('0xe8'):_0x52768e[_0x1291('0x6d')][_0x1291('0xd8')]+(_0x52768e[_0x1291('0x6d')][_0x1291('0xd9')]?'\x20'+_0x52768e[_0x1291('0x6d')]['lastName']:''),'body':_0x52768e['body'],'direction':_0x52768e[_0x1291('0xdc')]==='out'?'A':'C','secret':_0x52768e['secret'],'read':_0x52768e[_0x1291('0x85')]};})[_0x1291('0x69')]()};return ejs[_0x1291('0xe9')](path['join'](config[_0x1291('0xd1')],_0x1291('0xd2'),_0x1291('0xea'),_0x1291('0xeb')),{'interaction':_0x1f6349})['then'](function(_0x44c8f5){var _0x4d1d56=path['join'](_0x42511c,'transcript-'+_0x1c8ed3['id']+'-'+_0x403974+_0x1291('0xec'));var _0xc00620={'path':_0x4d1d56,'channel':_0x1291('0xe3'),'interactionId':_0x1c8ed3['id']};return pdf[_0x1291('0xed')](_0x44c8f5,_0xc00620);})[_0x1291('0x2d')](function(){return new BPromise(function(_0x448643,_0x30210d){zipdir(_0x42511c,{'saveTo':_0x4b01f7},function(_0x5a8f04,_0x1aaf06){if(_0x5a8f04)return _0x30210d(_0x5a8f04);return _0x448643(_0x1aaf06);});})[_0x1291('0x2d')](function(){return new BPromise(function(_0x21b7af,_0x1b1568){rimraf(_0x42511c,function(_0x222f7e){if(_0x222f7e)_0x1b1568(_0x222f7e);return _0x21b7af();});});})[_0x1291('0x2d')](function(){return _0x2805e6[_0x1291('0xd0')](_0x4b01f7,_0x6783a7,function(_0x457310){if(_0x457310){console[_0x1291('0xee')]('err',_0x457310);}else{fs[_0x1291('0xef')](_0x4b01f7);}});});});}else{return _0x2805e6[_0x1291('0xf0')](0xc8);}})['catch'](handleError(_0x2805e6,null));};
\ No newline at end of file
+var _0x1339=['root','server','files','tmp','join','attachments','transcript-%d-%s.zip','fullname','CmContact','lastName','Messages','SmsAccount','Account','Owner','Sms','N.A.','closedAt','disposition','direction','System','firstName','out','secret','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','err','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./smsInteraction.socket','register','status','end','json','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','map','Tags','TagIds','split','push','catch','waiting','talking','answered','total','closed','UserId','unmanaged','SmsInteraction','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','offset','sort','pick','select','field','color','from','tools_tags','ui.SmsInteractionId','user_has_sms_interactions','users','u.id\x20=\x20ui.UserId','sms_interactions','left_join','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','search','sqlOperator','conditions','find','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','some','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','where','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','clone','unreadMessages','order','contactName','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','length','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','i.*','Contact.firstName','c.lastName','Contact.lastName','Contact.email','Contact.phone','c.mobile','Contact.mobile','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.SmsInteractionId\x20IN\x20?','groupBy','all','rows','show','params','includeAll','include','create','body','describe','SmsMessage','omit','getMessages','findOne','SmsInteractionId','merge','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','ids','spread','emit','smsInteractionTags:save','removeTags','unix'];(function(_0x2fe7cb,_0x133204){var _0x3edb82=function(_0x303cd0){while(--_0x303cd0){_0x2fe7cb['push'](_0x2fe7cb['shift']());}};_0x3edb82(++_0x133204);}(_0x1339,0x1ed));var _0x9133=function(_0x4841fa,_0x36b4dc){_0x4841fa=_0x4841fa-0x0;var _0x323e8=_0x1339[_0x4841fa];return _0x323e8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9133('0x0'));var jsonpatch=require(_0x9133('0x1'));var rp=require(_0x9133('0x2'));var moment=require(_0x9133('0x3'));var BPromise=require(_0x9133('0x4'));var Mustache=require(_0x9133('0x5'));var util=require(_0x9133('0x6'));var path=require(_0x9133('0x7'));var sox=require('sox');var csv=require(_0x9133('0x8'));var ejs=require(_0x9133('0x9'));var fs=require('fs');var fs_extra=require(_0x9133('0xa'));var _=require('lodash');var squel=require(_0x9133('0xb'));var crypto=require(_0x9133('0xc'));var jsforce=require(_0x9133('0xd'));var deskjs=require(_0x9133('0xe'));var toCsv=require(_0x9133('0x8'));var querystring=require(_0x9133('0xf'));var Papa=require(_0x9133('0x10'));var Redis=require(_0x9133('0x11'));var authService=require(_0x9133('0x12'));var qs=require(_0x9133('0x13'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x9133('0x14'));var hardwareService=require(_0x9133('0x15'));var logger=require(_0x9133('0x16'))(_0x9133('0x17'));var utils=require(_0x9133('0x18'));var config=require(_0x9133('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x9133('0x1a'))['db'];config[_0x9133('0x1b')]=_['defaults'](config['redis'],{'host':_0x9133('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9133('0x1b')]));require(_0x9133('0x1d'))[_0x9133('0x1e')](socket);function respondWithStatusCode(_0x464ec5,_0x31847a){_0x31847a=_0x31847a||0xcc;return function(_0x4327b3){if(_0x4327b3){return _0x464ec5['sendStatus'](_0x31847a);}return _0x464ec5[_0x9133('0x1f')](_0x31847a)[_0x9133('0x20')]();};}function respondWithResult(_0x4f4f14,_0x28ffcb){_0x28ffcb=_0x28ffcb||0xc8;return function(_0xa46eb1){if(_0xa46eb1){return _0x4f4f14[_0x9133('0x1f')](_0x28ffcb)[_0x9133('0x21')](_0xa46eb1);}};}function respondWithFilteredResult(_0x4a2c4f,_0x1f3484){return function(_0x573998){if(_0x573998){var _0x3c48ef=typeof _0x1f3484['offset']===_0x9133('0x22')&&typeof _0x1f3484[_0x9133('0x23')]==='undefined';var _0x38dd60=_0x573998['count'];var _0x2f91f8=_0x3c48ef?0x0:_0x1f3484['offset'];var _0x5e4f0c=_0x3c48ef?_0x573998[_0x9133('0x24')]:_0x1f3484['offset']+_0x1f3484[_0x9133('0x23')];var _0x4c1088;if(_0x5e4f0c>=_0x38dd60){_0x5e4f0c=_0x38dd60;_0x4c1088=0xc8;}else{_0x4c1088=0xce;}_0x4a2c4f['status'](_0x4c1088);return _0x4a2c4f['set'](_0x9133('0x25'),_0x2f91f8+'-'+_0x5e4f0c+'/'+_0x38dd60)[_0x9133('0x21')](_0x573998);}return null;};}function patchUpdates(_0x4da09c){return function(_0x448f8b){try{jsonpatch[_0x9133('0x26')](_0x448f8b,_0x4da09c,!![]);}catch(_0xff08d5){return BPromise[_0x9133('0x27')](_0xff08d5);}return _0x448f8b['save']();};}function saveUpdates(_0xdb7a98,_0x5c4614){return function(_0x187e32){if(_0x187e32){return _0x187e32[_0x9133('0x28')](_0xdb7a98)[_0x9133('0x29')](function(_0x14c1cb){return _0x14c1cb;});}return null;};}function removeEntity(_0x4483ef,_0xe829b){return function(_0x294332){if(_0x294332){return _0x294332[_0x9133('0x2a')]()[_0x9133('0x29')](function(){_0x4483ef[_0x9133('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x517e7b,_0x477bf1){return function(_0x3dfdc2){if(!_0x3dfdc2){_0x517e7b[_0x9133('0x2b')](0x194);}return _0x3dfdc2;};}function handleError(_0x348486,_0x4de894){_0x4de894=_0x4de894||0x1f4;return function(_0x4ecd9e){logger[_0x9133('0x2c')](_0x4ecd9e[_0x9133('0x2d')]);if(_0x4ecd9e[_0x9133('0x2e')]){delete _0x4ecd9e[_0x9133('0x2e')];}_0x348486[_0x9133('0x1f')](_0x4de894)[_0x9133('0x2f')](_0x4ecd9e);};}function getInteractionUsers(_0x48c713,_0x58afe0){return new BPromise(function(_0x5a27c1,_0x1ad222){try{if(_0x58afe0[_0x48c713['id']]){_0x48c713['Users']=_[_0x9133('0x30')](_0x58afe0[_0x48c713['id']],function(_0x1bcb19){return{'id':_0x1bcb19['id'],'fullname':_0x1bcb19['fullname']};});}}catch(_0xc9c724){_0x1ad222(_0xc9c724);}_0x5a27c1(_0x48c713);});}function getInteractionTags(_0x5dd90b,_0xf0aec4){return new BPromise(function(_0x26ca56,_0x4020d1){try{if(_0x5dd90b['TagIds']){_0x5dd90b[_0x9133('0x31')]=[];_0x5dd90b[_0x9133('0x32')][_0x9133('0x33')](',')['forEach'](function(_0x10cea6){_0x5dd90b[_0x9133('0x31')][_0x9133('0x34')](_0xf0aec4[_0x10cea6]);});}delete _0x5dd90b['TagIds'];}catch(_0x37667e){_0x4020d1(_0x37667e);}_0x26ca56(_0x5dd90b);});}function updateSmsInteraction(_0x20da68,_0x1b5700,_0x1471bb){return new BPromise(function(_0x5e4d5e,_0x3ccd89){return getInteractionUsers(_0x20da68,_0x1471bb)[_0x9133('0x29')](function(_0x56719e){return getInteractionTags(_0x56719e,_0x1b5700);})[_0x9133('0x29')](function(_0x2d256a){return getStateInteraction(_0x2d256a);})[_0x9133('0x29')](function(_0x2763f3){_0x5e4d5e(_0x2763f3);})[_0x9133('0x35')](function(_0x2db377){_0x3ccd89(_0x2db377);});});}function getStateInteraction(_0x3e02d1){return new BPromise(function(_0x167e45){_0x3e02d1[_0x9133('0x36')]=0x0;_0x3e02d1[_0x9133('0x37')]=0x0;_0x3e02d1[_0x9133('0x38')]=0x0;_0x3e02d1['unmanaged']=0x0;_0x3e02d1[_0x9133('0x39')]=0x0;if(!_0x3e02d1[_0x9133('0x3a')]&&!_0x3e02d1['UserId']){_0x3e02d1[_0x9133('0x36')]+=0x1;}if(!_0x3e02d1[_0x9133('0x3a')]&&_0x3e02d1[_0x9133('0x3b')]){_0x3e02d1[_0x9133('0x37')]+=0x1;if(_0x3e02d1[_0x9133('0x36')]){_0x3e02d1[_0x9133('0x36')]-=0x1;}}if(_0x3e02d1['closed']&&_0x3e02d1['UserId']){_0x3e02d1[_0x9133('0x38')]+=0x1;if(_0x3e02d1[_0x9133('0x37')]){_0x3e02d1[_0x9133('0x37')]-=0x1;}}if(_0x3e02d1[_0x9133('0x3a')]&&!_0x3e02d1[_0x9133('0x3b')]){_0x3e02d1[_0x9133('0x3c')]+=0x1;if(_0x3e02d1[_0x9133('0x36')]){_0x3e02d1[_0x9133('0x36')]-=0x1;}}_0x3e02d1[_0x9133('0x39')]+=0x1;_0x167e45(_0x3e02d1);});}exports['index']=function(_0xafd8f9,_0x2daef9){var _0x39cf46={},_0x199ae9={},_0x3df6ca={'count':0x0,'rows':[]};var _0x4c045e=_[_0x9133('0x30')](db[_0x9133('0x3d')][_0x9133('0x3e')],function(_0xeec7f5){return{'name':_0xeec7f5['fieldName'],'type':_0xeec7f5[_0x9133('0x3f')][_0x9133('0x40')]};});_0x199ae9[_0x9133('0x41')]=_[_0x9133('0x30')](_0x4c045e,_0x9133('0x2e'));_0x199ae9[_0x9133('0x42')]=_[_0x9133('0x43')](_0xafd8f9['query']);_0x199ae9[_0x9133('0x44')]=_['intersection'](_0x199ae9['model'],_0x199ae9[_0x9133('0x42')]);_0x39cf46[_0x9133('0x45')]=_[_0x9133('0x46')](_0x199ae9[_0x9133('0x41')],qs[_0x9133('0x47')](_0xafd8f9[_0x9133('0x42')][_0x9133('0x47')]));_0x39cf46[_0x9133('0x45')]=_0x39cf46[_0x9133('0x45')]['length']?_0x39cf46[_0x9133('0x45')]:_0x199ae9[_0x9133('0x41')];if(!_0xafd8f9[_0x9133('0x42')]['hasOwnProperty']('nolimit')){_0x39cf46[_0x9133('0x23')]=qs[_0x9133('0x23')](_0xafd8f9['query'][_0x9133('0x23')]);_0x39cf46[_0x9133('0x48')]=qs[_0x9133('0x48')](_0xafd8f9[_0x9133('0x42')][_0x9133('0x48')]);}_0x39cf46['order']=qs[_0x9133('0x49')](_0xafd8f9[_0x9133('0x42')][_0x9133('0x49')]);_0x39cf46['where']=qs[_0x9133('0x44')](_[_0x9133('0x4a')](_0xafd8f9['query'],_0x199ae9['filters']),_0x4c045e);var _0x42c188=[];var _0x2cd935=squel[_0x9133('0x4b')]()[_0x9133('0x4c')]('id')[_0x9133('0x4c')](_0x9133('0x2e'))[_0x9133('0x4c')](_0x9133('0x4d'))[_0x9133('0x4e')](_0x9133('0x4f'));var _0x3d6a49=squel[_0x9133('0x4b')]()['field']('u.id')[_0x9133('0x4c')]('u.fullname')[_0x9133('0x4c')](_0x9133('0x50'))[_0x9133('0x4e')](_0x9133('0x51'),'ui')['left_join'](_0x9133('0x52'),'u',_0x9133('0x53'));var _0x799772=squel['select']()[_0x9133('0x4e')](_0x9133('0x54'),'i')[_0x9133('0x55')]('cm_contacts','c',_0x9133('0x56'))['left_join'](_0x9133('0x52'),'o',_0x9133('0x57'))[_0x9133('0x55')](_0x9133('0x58'),'a','a.id\x20=\x20i.SmsAccountId')['left_join'](_0x9133('0x59'),'me',_0x9133('0x5a'))[_0x9133('0x55')](_0x9133('0x5b'),'it',_0x9133('0x5c'))['left_join']('tools_tags','t',_0x9133('0x5d'));var _0x16f889=squel['expr']();var _0x461738=[];var _0x454370=squel['expr']();var _0x508303;if(_0xafd8f9['query'][_0x9133('0x5e')]){_0x508303=as['parseSearch'](_0xafd8f9[_0x9133('0x42')][_0x9133('0x5e')]);var _0x439258=_0x508303[_0x9133('0x5f')];for(var _0x5d98df=0x0;_0x5d98df<_0x508303[_0x9133('0x60')]['length'];_0x5d98df++){var _0xc063f8=_0x508303[_0x9133('0x60')][_0x5d98df];var _0x46d348='i';var _0x3f1584=_[_0x9133('0x61')](_0x4c045e,[_0x9133('0x2e'),_0xc063f8['field']]);if(!_0x3f1584){switch(_0xc063f8['field']){case'unreadMessages':if(_0xc063f8[_0x9133('0x62')]==0x1){_0x799772[_0x9133('0x63')]('`'+_0xc063f8[_0x9133('0x4c')]+'`\x20=\x200');}else{_0x799772[_0x9133('0x63')]('`'+_0xc063f8[_0x9133('0x4c')]+_0x9133('0x64'));}break;case _0x9133('0x65'):if(_0xc063f8[_0x9133('0x66')]===_0x9133('0x67')){if(_0xc063f8[_0x9133('0x62')][_0x9133('0x33')]('\x20')['length']>0x1){_0x16f889[_0x439258](_0x9133('0x68'),qs['getFullTextValue'](_0xc063f8[_0x9133('0x62')]),null);}else{var _0x53d9bd='%'+_0xc063f8[_0x9133('0x62')]+'%';_0x16f889[_0x439258](_0x9133('0x69'),_0x53d9bd,_0x53d9bd,_0x53d9bd);}}else{_0x3f1584=_['find'](_0x4c045e,['name',_0x9133('0x6a')]);_0xc063f8[_0x9133('0x4c')]=_0x9133('0x6a');_0x54ddcd=as[_0x9133('0x6b')](_0x46d348,_0x3f1584[_0x9133('0x3f')],_0xc063f8);_0x16f889[_0x439258](_0x54ddcd[_0x9133('0x6c')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x6d')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x20')]);}break;case _0x9133('0x6e'):var _0x57a689=_0xc063f8[_0x9133('0x62')]['split'](',')[_0x9133('0x30')](function(_0x217dc5){return Number(_0x217dc5);});_0x57a689[_0x9133('0x6f')](function(_0x3ef04a){_0x454370['or'](_0x9133('0x70'),'%,'+_0x3ef04a+',%');});_0x461738=_['union'](_0x461738,_0x57a689);break;case _0x9133('0x71'):if(_0xc063f8[_0x9133('0x66')]===_0x9133('0x67')){_0x16f889[_0x439258](_0x9133('0x72'),'%'+_0xc063f8['value']+'%',null);}else{_0x3f1584=_[_0x9133('0x61')](_0x4c045e,[_0x9133('0x2e'),_0x9133('0x3b')]);_0xc063f8[_0x9133('0x4c')]='UserId';_0x54ddcd=as['buildExpression'](_0x46d348,_0x3f1584[_0x9133('0x3f')],_0xc063f8);_0x16f889[_0x439258](_0x54ddcd[_0x9133('0x6c')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x6d')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x20')]);}break;case'body':_0x54ddcd=as[_0x9133('0x6b')]('me',null,_0xc063f8);_0x16f889[_0x439258](_0x54ddcd[_0x9133('0x6c')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x6d')],_0x54ddcd['value'][_0x9133('0x20')]);break;}}else{var _0x54ddcd=as[_0x9133('0x6b')](_0x46d348,_0x3f1584[_0x9133('0x3f')],_0xc063f8);_0x16f889[_0x439258](_0x54ddcd[_0x9133('0x6c')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x6d')],_0x54ddcd[_0x9133('0x62')][_0x9133('0x20')]);}}}else{var _0x1741c2=_(_0xafd8f9['query'])[_0x9133('0x43')]()[_0x9133('0x30')](function(_0x10afd7){return _[_0x9133('0x73')](_0x4c045e,[_0x9133('0x2e'),_0x10afd7])?_0x10afd7:undefined;})['compact']()['value']();if(!_['isEmpty'](_0x1741c2)){_0x1741c2[_0x9133('0x6f')](function(_0x1ea18c){if(_0x1ea18c===_0x9133('0x74')){_0x799772['where'](_0x9133('0x75'),[][_0x9133('0x76')](_0xafd8f9[_0x9133('0x42')][_0x1ea18c]));}else if(_0x1ea18c===_0x9133('0x77')){var _0x3c8abf=JSON[_0x9133('0x78')](_0xafd8f9[_0x9133('0x42')][_0x1ea18c])[_0x9133('0x79')];var _0x50c174=JSON[_0x9133('0x78')](_0xafd8f9[_0x9133('0x42')][_0x1ea18c])['$lte'];_0x799772[_0x9133('0x7a')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3c8abf,_0x50c174);}else{if(_0xafd8f9[_0x9133('0x42')][_0x1ea18c]===_0x9133('0x7b')){_0x799772[_0x9133('0x7a')]('i.'+_0x1ea18c+_0x9133('0x7c'));}else{_0x799772[_0x9133('0x7a')]('i.'+_0x1ea18c+'\x20=\x20?',_0xafd8f9[_0x9133('0x42')][_0x1ea18c]);}}});}if(_0xafd8f9[_0x9133('0x42')][_0x9133('0x7d')]){if(_0xafd8f9[_0x9133('0x42')]['read']==0x1){_0x799772[_0x9133('0x63')](_0x9133('0x7e'));}else{_0x799772[_0x9133('0x63')](_0x9133('0x7f'));}}if(_0xafd8f9[_0x9133('0x42')][_0x9133('0x80')]){_0x461738=_[_0x9133('0x81')](_0xafd8f9[_0x9133('0x42')][_0x9133('0x80')])?_0xafd8f9[_0x9133('0x42')][_0x9133('0x80')]:new Array(_0xafd8f9['query'][_0x9133('0x80')]);_0x461738[_0x9133('0x6f')](function(_0x242974){_0x454370['or'](_0x9133('0x70'),'%,'+_0x242974+',%');});}if(_0xafd8f9['query'][_0x9133('0x82')]){var _0x4eebb2=_0xafd8f9[_0x9133('0x42')][_0x9133('0x82')][_0x9133('0x83')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x9133('0x84')](_0x4eebb2)){_0x16f889['or'](_0x9133('0x85'),_0x4eebb2+'%')['or'](_0x9133('0x86'),_0x4eebb2+'%');}else{_0x16f889['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x9133('0x87')](_0x4eebb2))['or'](_0x9133('0x88'),_0x4eebb2+'%');}}}_0x799772['where'](_0x16f889);_0x799772[_0x9133('0x89')](_0x9133('0x8a'));var _0x23b627={'type':db['Sequelize'][_0x9133('0x8b')]['SELECT'],'raw':!![]};var _0x401d6c=_0x799772[_0x9133('0x8c')]();_0x401d6c[_0x9133('0x4c')]('i.id');_0x401d6c[_0x9133('0x4c')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9133('0x8d'));if(_0x39cf46[_0x9133('0x8e')]){_0x39cf46[_0x9133('0x8e')][_0x9133('0x6f')](function(_0x48e3c7){var _0x42bc2c=_0x48e3c7[0x0]===_0x9133('0x8f')?_0x48e3c7[0x0]:'i.'+_0x48e3c7[0x0];_0x799772[_0x9133('0x8e')](_0x42bc2c,_0x48e3c7[0x1]==='DESC'?![]:!![]);});}if(!_[_0x9133('0x90')](_0x461738)){_0x799772[_0x9133('0x63')](_0x454370);_0x401d6c[_0x9133('0x7a')](_0x9133('0x91'),_0x461738);}BPromise[_0x9133('0x92')]()['then'](function(){if(!_0x508303){if(_0xafd8f9[_0x9133('0x42')][_0x9133('0x74')])return;_0x401d6c[_0x9133('0x7a')](_0x9133('0x93'));_0x799772['where'](_0x9133('0x93'));return;}if(_0xafd8f9['user'][_0x9133('0x94')]!==_0x9133('0x95'))return;return _0xafd8f9[_0x9133('0x96')][_0x9133('0x97')]({'attributes':['id'],'raw':!![]})['then'](function(_0x6e69f4){if(_[_0x9133('0x90')](_0x6e69f4)){_0x401d6c[_0x9133('0x7a')](_0x9133('0x98'));_0x799772[_0x9133('0x7a')]('i.SmsAccountId\x20IS\x20NULL');}else{_0x401d6c['where']('i.SmsAccountId\x20IN\x20?',_['map'](_0x6e69f4,'id'));_0x799772[_0x9133('0x7a')](_0x9133('0x75'),_[_0x9133('0x30')](_0x6e69f4,'id'));}});})['then'](function(){if(_0xafd8f9[_0x9133('0x96')][_0x9133('0x94')]===_0x9133('0x95')&&!_0x508303&&!_0xafd8f9[_0x9133('0x42')][_0x9133('0x74')])return[];return db['sequelize'][_0x9133('0x42')](_0x401d6c['toString'](),_0x23b627);})[_0x9133('0x29')](function(_0x58858f){_0x3df6ca[_0x9133('0x24')]=_0x58858f[_0x9133('0x99')];if(_0x3df6ca[_0x9133('0x24')]===0x0)return[];return db['sequelize'][_0x9133('0x42')](_0x2cd935[_0x9133('0x9a')](),_0x23b627)[_0x9133('0x29')](function(_0x4e23a4){_0x42c188=_[_0x9133('0x9b')](_0x4e23a4,'id');_0x23b627=_['merge'](_0x23b627,{'model':db[_0x9133('0x3d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xafd8f9[_0x9133('0x42')][_0x9133('0x47')]){_0x39cf46[_0x9133('0x45')][_0x9133('0x6f')](function(_0x30f266){_0x799772['field']('i.'+_0x30f266);});}else{_0x799772[_0x9133('0x4c')](_0x9133('0x9c'),_0x9133('0x8d'));_0x799772[_0x9133('0x4c')](_0x9133('0x9d'),_0x9133('0x9e'));_0x799772['field']('a.mandatoryDisposition',_0x9133('0x9f'));_0x799772[_0x9133('0x4c')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0x9133('0x8f'));_0x799772['field'](_0x9133('0xa0'));_0x799772[_0x9133('0x4c')]('c.firstName',_0x9133('0xa1'));_0x799772[_0x9133('0x4c')](_0x9133('0xa2'),_0x9133('0xa3'));_0x799772[_0x9133('0x4c')]('c.email',_0x9133('0xa4'));_0x799772[_0x9133('0x4c')]('c.phone',_0x9133('0xa5'));_0x799772[_0x9133('0x4c')](_0x9133('0xa6'),_0x9133('0xa7'));_0x799772[_0x9133('0x4c')]('c.fax','Contact.fax');_0x799772[_0x9133('0x4c')](_0x9133('0xa8'),'Owner.fullname');_0x799772[_0x9133('0x4c')](_0x9133('0xa9'),'Owner.internal');_0x799772[_0x9133('0x4c')](_0x9133('0xaa'),_0x9133('0x32'));}if(_0x39cf46[_0x9133('0x23')])_0x799772[_0x9133('0x23')](_0x39cf46[_0x9133('0x23')]);if(_0x39cf46[_0x9133('0x48')])_0x799772[_0x9133('0x48')](_0x39cf46['offset']);return db[_0x9133('0xab')]['query'](_0x799772['toString'](),_0x23b627);})[_0x9133('0x29')](function(_0x251430){if(_0x251430[_0x9133('0x99')]>0x0)_0x3d6a49[_0x9133('0x7a')](_0x9133('0xac'),_[_0x9133('0x30')](_0x251430,'id'));return db[_0x9133('0xab')]['query'](_0x3d6a49[_0x9133('0x9a')](),_0x23b627)[_0x9133('0x29')](function(_0x28eba6){var _0x4f95a7=_[_0x9133('0xad')](_0x28eba6,'SmsInteractionId');var _0x7a926c=[];_0x251430[_0x9133('0x6f')](function(_0x228612){_0x7a926c[_0x9133('0x34')](updateSmsInteraction(_0x228612,_0x42c188,_0x4f95a7));});return BPromise[_0x9133('0xae')](_0x7a926c);});});})[_0x9133('0x29')](function(_0x2b6cd3){_0x3df6ca[_0x9133('0xaf')]=_0x2b6cd3;return _0x3df6ca;})[_0x9133('0x29')](respondWithFilteredResult(_0x2daef9,_0x39cf46))['catch'](handleError(_0x2daef9,null));};exports[_0x9133('0xb0')]=function(_0x42db98,_0x123f35){var _0x192e1f={'raw':![],'where':{'id':_0x42db98[_0x9133('0xb1')]['id']}},_0x496c00={};_0x496c00['model']=_[_0x9133('0x43')](db['SmsInteraction']['rawAttributes']);_0x496c00[_0x9133('0x42')]=_['keys'](_0x42db98[_0x9133('0x42')]);_0x496c00['filters']=_['intersection'](_0x496c00['model'],_0x496c00[_0x9133('0x42')]);_0x192e1f['attributes']=_[_0x9133('0x46')](_0x496c00['model'],qs[_0x9133('0x47')](_0x42db98[_0x9133('0x42')][_0x9133('0x47')]));_0x192e1f[_0x9133('0x45')]=_0x192e1f[_0x9133('0x45')][_0x9133('0x99')]?_0x192e1f[_0x9133('0x45')]:_0x496c00[_0x9133('0x41')];if(_0x42db98[_0x9133('0x42')][_0x9133('0xb2')]){_0x192e1f[_0x9133('0xb3')]=[{'all':!![]}];}_0x192e1f=_['merge']({},_0x192e1f,_0x42db98['options']);return db[_0x9133('0x3d')][_0x9133('0x61')](_0x192e1f)[_0x9133('0x29')](handleEntityNotFound(_0x123f35,null))[_0x9133('0x29')](respondWithResult(_0x123f35,null))[_0x9133('0x35')](handleError(_0x123f35,null));};exports[_0x9133('0xb4')]=function(_0x87133c,_0xe86133){return db[_0x9133('0x3d')][_0x9133('0xb4')](_0x87133c[_0x9133('0xb5')],{})['then'](respondWithResult(_0xe86133,0xc9))[_0x9133('0x35')](handleError(_0xe86133,null));};exports[_0x9133('0x28')]=function(_0x26c4ce,_0x3bf91d){if(_0x26c4ce[_0x9133('0xb5')]['id']){delete _0x26c4ce[_0x9133('0xb5')]['id'];}return db[_0x9133('0x3d')][_0x9133('0x61')]({'where':{'id':_0x26c4ce[_0x9133('0xb1')]['id']}})[_0x9133('0x29')](handleEntityNotFound(_0x3bf91d,null))[_0x9133('0x29')](saveUpdates(_0x26c4ce[_0x9133('0xb5')],null))[_0x9133('0x29')](respondWithResult(_0x3bf91d,null))[_0x9133('0x35')](handleError(_0x3bf91d,null));};exports['destroy']=function(_0x36c27c,_0x158e2d){return db[_0x9133('0x3d')][_0x9133('0x61')]({'where':{'id':_0x36c27c[_0x9133('0xb1')]['id']}})['then'](handleEntityNotFound(_0x158e2d,null))[_0x9133('0x29')](removeEntity(_0x158e2d,null))[_0x9133('0x35')](handleError(_0x158e2d,null));};exports[_0x9133('0xb6')]=function(_0x443134,_0x144a62){return db[_0x9133('0x3d')][_0x9133('0xb6')]()[_0x9133('0x29')](respondWithResult(_0x144a62,null))[_0x9133('0x35')](handleError(_0x144a62,null));};exports['addMessage']=function(_0x6cfd05,_0x229f99,_0x112df1){return db[_0x9133('0xb7')]['find']({'where':{'id':_0x6cfd05[_0x9133('0xb1')]['id']}})[_0x9133('0x29')](handleEntityNotFound(_0x229f99,null))[_0x9133('0x29')](function(_0x43e157){if(_0x43e157){return _0x43e157['addMessage'](_0x6cfd05[_0x9133('0xb5')]['ids'],_[_0x9133('0xb8')](_0x6cfd05['body'],['ids','id'])||{});}})[_0x9133('0x29')](respondWithResult(_0x229f99,null))['catch'](handleError(_0x229f99,null));};exports[_0x9133('0xb9')]=function(_0x1f713d,_0x3f9f8c,_0x1bad51){var _0x70c777={'raw':![],'where':{}};var _0xdbd068={};var _0x2f67a9={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x9133('0xba')]({'where':{'id':_0x1f713d[_0x9133('0xb1')]['id']}})[_0x9133('0x29')](handleEntityNotFound(_0x3f9f8c,null))[_0x9133('0x29')](function(_0x5ae0b7){if(_0x5ae0b7){_0xdbd068[_0x9133('0x41')]=_[_0x9133('0x43')](db['SmsMessage'][_0x9133('0x3e')]);_0xdbd068[_0x9133('0x42')]=_[_0x9133('0x43')](_0x1f713d['query']);_0xdbd068['filters']=_['intersection'](_0xdbd068[_0x9133('0x41')],_0xdbd068[_0x9133('0x42')]);_0x70c777['attributes']=_[_0x9133('0x46')](_0xdbd068[_0x9133('0x41')],qs[_0x9133('0x47')](_0x1f713d[_0x9133('0x42')][_0x9133('0x47')]));_0x70c777['attributes']=_0x70c777['attributes'][_0x9133('0x99')]?_0x70c777[_0x9133('0x45')]:_0xdbd068[_0x9133('0x41')];if(!_0x1f713d[_0x9133('0x42')]['hasOwnProperty']('nolimit')){_0x70c777[_0x9133('0x23')]=qs[_0x9133('0x23')](_0x1f713d['query'][_0x9133('0x23')]);_0x70c777[_0x9133('0x48')]=qs['offset'](_0x1f713d[_0x9133('0x42')][_0x9133('0x48')]);}_0x70c777[_0x9133('0x8e')]=qs[_0x9133('0x49')](_0x1f713d[_0x9133('0x42')][_0x9133('0x49')]);_0x70c777[_0x9133('0x7a')]=qs['filters'](_[_0x9133('0x4a')](_0x1f713d['query'],_0xdbd068['filters']));_0x70c777[_0x9133('0x7a')][_0x9133('0xbb')]=_0x5ae0b7['id'];if(_0x1f713d[_0x9133('0x42')]['filter']){_0x70c777['where']=_[_0x9133('0xbc')](_0x70c777['where'],{'$or':_[_0x9133('0x30')](_0x70c777['attributes'],function(_0x2f11c4){var _0x1e3dd4={};_0x1e3dd4[_0x2f11c4]={'$like':'%'+_0x1f713d[_0x9133('0x42')]['filter']+'%'};return _0x1e3dd4;})});}if(_0x1f713d[_0x9133('0x42')]['$gte']){var _0x57e3ae=_0x1f713d[_0x9133('0x42')][_0x9133('0x79')][_0x9133('0x33')](',');var _0x4e928d={};_0x4e928d[_0x57e3ae[0x0]]={'$gte':moment(_0x57e3ae[0x1])[_0x9133('0xbd')](_0x9133('0xbe'))};_0x70c777[_0x9133('0x7a')]=_[_0x9133('0xbc')](_0x70c777[_0x9133('0x7a')],_0x4e928d);}_0x70c777=_['merge']({},_0x70c777,_0x1f713d['options']);return db['SmsMessage'][_0x9133('0x24')]({'where':_0x70c777[_0x9133('0x7a')]})[_0x9133('0x29')](function(_0x78d2c8){_0x2f67a9[_0x9133('0x24')]=_0x78d2c8;if(_0x1f713d[_0x9133('0x42')][_0x9133('0xb2')]){_0x70c777[_0x9133('0xb3')]=[{'all':!![]}];}return db[_0x9133('0xb7')][_0x9133('0xbf')](_0x70c777);})['then'](function(_0x365502){_0x2f67a9[_0x9133('0xaf')]=_0x365502;return _0x2f67a9;});}})['then'](respondWithFilteredResult(_0x3f9f8c,_0x70c777))['catch'](handleError(_0x3f9f8c,null));};exports[_0x9133('0xc0')]=function(_0x17bc67,_0x7109d0,_0x465d6d){return db[_0x9133('0x3d')]['find']({'where':{'id':_0x17bc67['params']['id']}})[_0x9133('0x29')](handleEntityNotFound(_0x7109d0,null))[_0x9133('0x29')](function(_0x2863fa){if(_0x2863fa){return _0x2863fa[_0x9133('0xc1')](_0x17bc67[_0x9133('0xb5')][_0x9133('0xc2')],_[_0x9133('0xb8')](_0x17bc67[_0x9133('0xb5')],[_0x9133('0xc2'),'id'])||{})[_0x9133('0xc3')](function(){return db['Tag'][_0x9133('0xbf')]({'attributes':['id',_0x9133('0x2e'),_0x9133('0x4d')],'where':{'id':_0x17bc67[_0x9133('0xb5')][_0x9133('0xc2')]}});})[_0x9133('0x29')](function(_0x541235){socket[_0x9133('0xc4')](_0x9133('0xc5'),{'id':Number(_0x17bc67[_0x9133('0xb1')]['id']),'tags':_0x541235||[]});return{'id':Number(_0x17bc67[_0x9133('0xb1')]['id']),'tags':_0x541235||[]};});}})[_0x9133('0x29')](respondWithResult(_0x7109d0,null))[_0x9133('0x35')](handleError(_0x7109d0,null));};exports[_0x9133('0xc6')]=function(_0x4bbe01,_0x583a88,_0x37c881){return db[_0x9133('0x3d')][_0x9133('0x61')]({'where':{'id':_0x4bbe01['params']['id']}})[_0x9133('0x29')](handleEntityNotFound(_0x583a88,null))[_0x9133('0x29')](function(_0x1f39fa){if(_0x1f39fa){return _0x1f39fa['removeTags'](_0x4bbe01[_0x9133('0x42')]['ids']);}})['then'](respondWithStatusCode(_0x583a88,null))['catch'](handleError(_0x583a88,null));};exports['download']=function(_0x44b6ae,_0x448d5c){var _0x54cf51=moment()[_0x9133('0xc7')]()['toString']();var _0x11e48e=path['join'](config[_0x9133('0xc8')],_0x9133('0xc9'),_0x9133('0xca'),_0x9133('0xcb'));var _0xa8ea90=path[_0x9133('0xcc')](config[_0x9133('0xc8')],_0x9133('0xc9'),_0x9133('0xca'),_0x9133('0xcd'));var _0x1571c0=path[_0x9133('0xcc')](_0x11e48e,_0x54cf51);var _0x553263=util[_0x9133('0xbd')](_0x9133('0xce'),_0x44b6ae[_0x9133('0xb1')]['id'],_0x54cf51);var _0x3af7d3=path[_0x9133('0xcc')](_0x11e48e,_0x553263);var _0x51365a=[];_0x51365a[_0x9133('0x34')]({'model':db[_0x9133('0x71')],'as':_0x9133('0x71'),'attributes':['id',_0x9133('0xcf')],'raw':!![]});_0x51365a[_0x9133('0x34')]({'model':db[_0x9133('0xd0')],'as':_0x9133('0x65'),'attributes':['id','firstName',_0x9133('0xd1')],'raw':!![]});var _0x35072a=[{'model':db[_0x9133('0xb7')],'as':_0x9133('0xd2'),'attributes':['id',_0x9133('0xb5'),'createdAt','direction','secret',_0x9133('0x7d')],'include':_0x51365a}];_0x35072a[_0x9133('0x34')]({'model':db[_0x9133('0xd3')],'as':_0x9133('0xd4'),'attributes':['id',_0x9133('0x2e')]});_0x35072a[_0x9133('0x34')]({'model':db[_0x9133('0x71')],'as':_0x9133('0xd5'),'attributes':['id','fullname']});return db[_0x9133('0x3d')][_0x9133('0x61')]({'where':{'id':_0x44b6ae['params']['id']},'include':_0x35072a})['then'](handleEntityNotFound(_0x448d5c,null))[_0x9133('0x29')](function(_0x253702){if(_0x253702){var _0x3a8876=_0x253702['get']({'plain':!![]});fs['mkdirSync'](_0x1571c0);var _0x4d2c66={'channel':_0x9133('0xd6'),'account':_0x3a8876['Account']['name'],'agent':_0x3a8876[_0x9133('0xd5')]?_0x3a8876[_0x9133('0xd5')][_0x9133('0xcf')]:_0x9133('0xd7'),'createdAt':moment(_0x3a8876[_0x9133('0x77')])[_0x9133('0xbd')](_0x9133('0xbe'))[_0x9133('0x9a')](),'closedAt':_0x3a8876['closed']?moment(_0x3a8876[_0x9133('0xd8')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x9133('0x9a')]():'','disposition':_0x3a8876[_0x9133('0xd9')],'messages':_(_0x3a8876[_0x9133('0xd2')])['filter']({'secret':![]})[_0x9133('0x30')](function(_0x3f5616){return{'date':moment(_0x3f5616[_0x9133('0x77')])[_0x9133('0xbd')]('YYYY-MM-DD\x20HH:mm:ss')[_0x9133('0x9a')](),'sender':_0x3f5616[_0x9133('0xda')]==='out'?_0x3f5616['User']?_0x3f5616[_0x9133('0x71')][_0x9133('0xcf')]:_0x9133('0xdb'):_0x3f5616[_0x9133('0x65')][_0x9133('0xdc')]+(_0x3f5616['Contact'][_0x9133('0xd1')]?'\x20'+_0x3f5616['Contact'][_0x9133('0xd1')]:''),'body':_0x3f5616['body'],'direction':_0x3f5616['direction']===_0x9133('0xdd')?'A':'C','secret':_0x3f5616[_0x9133('0xde')],'read':_0x3f5616['read']};})[_0x9133('0x62')]()};return ejs[_0x9133('0xdf')](path['join'](config[_0x9133('0xc8')],_0x9133('0xc9'),_0x9133('0xe0'),_0x9133('0xe1')),{'interaction':_0x4d2c66})[_0x9133('0x29')](function(_0x1e7179){var _0x137ab3=path[_0x9133('0xcc')](_0x1571c0,_0x9133('0xe2')+_0x3a8876['id']+'-'+_0x54cf51+_0x9133('0xe3'));var _0xdd1837={'path':_0x137ab3,'channel':_0x9133('0xd6'),'interactionId':_0x3a8876['id']};return pdf[_0x9133('0xe4')](_0x1e7179,_0xdd1837);})[_0x9133('0x29')](function(){return new BPromise(function(_0x2fc53d,_0xb91c97){zipdir(_0x1571c0,{'saveTo':_0x3af7d3},function(_0x56c897,_0x1ca4ad){if(_0x56c897)return _0xb91c97(_0x56c897);return _0x2fc53d(_0x1ca4ad);});})['then'](function(){return new BPromise(function(_0x386163,_0x9dfc48){rimraf(_0x1571c0,function(_0x2b1fe9){if(_0x2b1fe9)_0x9dfc48(_0x2b1fe9);return _0x386163();});});})[_0x9133('0x29')](function(){return _0x448d5c[_0x9133('0xe5')](_0x3af7d3,_0x553263,function(_0x30eca9){if(_0x30eca9){console['log'](_0x9133('0xe6'),_0x30eca9);}else{fs['unlinkSync'](_0x3af7d3);}});});});}else{return _0x448d5c[_0x9133('0x2b')](0xc8);}})[_0x9133('0x35')](handleError(_0x448d5c,null));};
\ No newline at end of file
index fe233ae..723142c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','SmsInteraction','../../mysqldb','SmsMessage','update','remove','getUsers','setDataValue','map'];(function(_0x300db3,_0x21427e){var _0x55f527=function(_0xf99626){while(--_0xf99626){_0x300db3['push'](_0x300db3['shift']());}};_0x55f527(++_0x21427e);}(_0x1a85,0x178));var _0x51a8=function(_0x29c9eb,_0x3d680b){_0x29c9eb=_0x29c9eb-0x0;var _0x438352=_0x1a85[_0x29c9eb];return _0x438352;};'use strict';var EventEmitter=require('events');var SmsInteraction=require('../../mysqldb')['db'][_0x51a8('0x0')];var SmsMessage=require(_0x51a8('0x1'))['db'][_0x51a8('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x51a8('0x3'),'afterDestroy':_0x51a8('0x4')};function emitEvent(_0x99e371){return function(_0x48a21b,_0xaac0bf,_0x4b76a8){_0x48a21b[_0x51a8('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x331117){_0x48a21b[_0x51a8('0x6')]('Users',_0x331117[_0x51a8('0x7')](function(_0x513685){return{'id':_0x513685['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x48a21b['id'],'direction':'in','read':![]},'raw':!![]});})[_0x51a8('0x8')](function(_0x2f276b){_0x48a21b[_0x51a8('0x6')](_0x51a8('0x9'),_0x2f276b[_0x51a8('0xa')]);SmsInteractionEvents[_0x51a8('0xb')](_0x99e371+':'+_0x48a21b['id'],_0x48a21b);SmsInteractionEvents[_0x51a8('0xb')](_0x99e371,_0x48a21b);_0x4b76a8(null);})[_0x51a8('0xc')](_0x4b76a8(null));};}for(var e in events){if(events[_0x51a8('0xd')](e)){var event=events[e];SmsInteraction[_0x51a8('0xe')](e,emitEvent(event));}}module[_0x51a8('0xf')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x66fa=['remove','getUsers','then','setDataValue','map','findAll','emit','hasOwnProperty','exports','events','../../mysqldb','SmsMessage','setMaxListeners','save','update'];(function(_0x1e342c,_0x47e55f){var _0x3c673e=function(_0x126c89){while(--_0x126c89){_0x1e342c['push'](_0x1e342c['shift']());}};_0x3c673e(++_0x47e55f);}(_0x66fa,0x117));var _0xa66f=function(_0x44db3f,_0xa5417){_0x44db3f=_0x44db3f-0x0;var _0x311f5c=_0x66fa[_0x44db3f];return _0x311f5c;};'use strict';var EventEmitter=require(_0xa66f('0x0'));var SmsInteraction=require(_0xa66f('0x1'))['db']['SmsInteraction'];var SmsMessage=require(_0xa66f('0x1'))['db'][_0xa66f('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xa66f('0x3')](0x0);var events={'afterCreate':_0xa66f('0x4'),'afterUpdate':_0xa66f('0x5'),'afterDestroy':_0xa66f('0x6')};function emitEvent(_0x3f4904){return function(_0x5ebea5,_0x4fd9d0,_0x2239d3){_0x5ebea5[_0xa66f('0x7')]({'attributes':['id'],'raw':!![]})[_0xa66f('0x8')](function(_0x1d02fc){_0x5ebea5[_0xa66f('0x9')]('Users',_0x1d02fc[_0xa66f('0xa')](function(_0x4f6717){return{'id':_0x4f6717['id']};}));return SmsMessage[_0xa66f('0xb')]({'where':{'SmsInteractionId':_0x5ebea5['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x101e10){_0x5ebea5['setDataValue']('unreadMessages',_0x101e10['length']);SmsInteractionEvents[_0xa66f('0xc')](_0x3f4904+':'+_0x5ebea5['id'],_0x5ebea5);SmsInteractionEvents[_0xa66f('0xc')](_0x3f4904,_0x5ebea5);_0x2239d3(null);})['catch'](_0x2239d3(null));};}for(var e in events){if(events[_0xa66f('0xd')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0xa66f('0xe')]=SmsInteractionEvents;
\ No newline at end of file
index 6d20b2b..974021e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c72=['util','../../config/logger','api','moment','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','closedAt','lodash'];(function(_0x5311a1,_0x304912){var _0x2acb9f=function(_0x4803e7){while(--_0x4803e7){_0x5311a1['push'](_0x5311a1['shift']());}};_0x2acb9f(++_0x304912);}(_0x4c72,0x1bb));var _0x24c7=function(_0x540f8e,_0x3d8b69){_0x540f8e=_0x540f8e-0x0;var _0x255f6f=_0x4c72[_0x540f8e];return _0x255f6f;};'use strict';var _=require(_0x24c7('0x0'));var util=require(_0x24c7('0x1'));var logger=require(_0x24c7('0x2'))(_0x24c7('0x3'));var moment=require(_0x24c7('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x24c7('0x5'));var config=require(_0x24c7('0x6'));var attributes=require(_0x24c7('0x7'));module[_0x24c7('0x8')]=function(_0xb4708f,_0x4e6d6d){return _0xb4708f[_0x24c7('0x9')](_0x24c7('0xa'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4a03a3,_0x31bc9e,_0x244d21){if(_0x4a03a3['changed']('closed')){_0x4a03a3[_0x24c7('0xb')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x244d21(null,_0x4a03a3);}}});};
\ No newline at end of file
+var _0x22d8=['SmsInteraction','sms_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x22d8,0x1c0));var _0x822d=function(_0x55f557,_0x4f219f){_0x55f557=_0x55f557-0x0;var _0x290e4d=_0x22d8[_0x55f557];return _0x290e4d;};'use strict';var _=require(_0x822d('0x0'));var util=require(_0x822d('0x1'));var logger=require(_0x822d('0x2'))(_0x822d('0x3'));var moment=require('moment');var BPromise=require(_0x822d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x822d('0x5'));var rimraf=require(_0x822d('0x6'));var config=require(_0x822d('0x7'));var attributes=require(_0x822d('0x8'));module[_0x822d('0x9')]=function(_0x48da45,_0x1a756d){return _0x48da45[_0x822d('0xa')](_0x822d('0xb'),attributes,{'tableName':_0x822d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3d030a,_0xd4c8c9,_0x3d9ece){if(_0x3d030a[_0x822d('0xd')]('closed')){_0x3d030a[_0x822d('0xe')]=moment()[_0x822d('0xf')](_0x822d('0x10'));}_0x3d9ece(null,_0x3d030a);}}});};
\ No newline at end of file
index bedfff5..a7a4cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7780=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','request','request\x20sent','debug','error','message','info','SmsInteraction,\x20%s,\x20%s','result','catch','UpdateSmsInteraction','SmsInteraction','options','where','attributes','limit','then','stringify','AddTagsToSmsInteraction','addTags','body','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x204665,_0x4b7744){var _0x16fa00=function(_0x26f6b8){while(--_0x26f6b8){_0x204665['push'](_0x204665['shift']());}};_0x16fa00(++_0x4b7744);}(_0x7780,0x189));var _0x0778=function(_0x1003da,_0x4865e1){_0x1003da=_0x1003da-0x0;var _0x1bd15f=_0x7780[_0x1003da];return _0x1bd15f;};'use strict';var _=require(_0x0778('0x0'));var util=require(_0x0778('0x1'));var moment=require(_0x0778('0x2'));var BPromise=require(_0x0778('0x3'));var rs=require(_0x0778('0x4'));var fs=require('fs');var Redis=require(_0x0778('0x5'));var db=require(_0x0778('0x6'))['db'];var utils=require(_0x0778('0x7'));var logger=require('../../config/logger')(_0x0778('0x8'));var config=require(_0x0778('0x9'));var jayson=require(_0x0778('0xa'));var client=jayson[_0x0778('0xb')][_0x0778('0xc')]({'port':0x232a});config['redis']=_[_0x0778('0xd')](config['redis'],{'host':_0x0778('0xe'),'port':0x18eb});var socket=require(_0x0778('0xf'))(new Redis(config[_0x0778('0x10')]));require('./smsInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x34a165,_0x394007,_0x4327d7){return new BPromise(function(_0x1e2989,_0x3608c6){return client[_0x0778('0x11')](_0x34a165,_0x4327d7)['then'](function(_0x151fc8){logger['info']('SmsInteraction,\x20%s,\x20%s',_0x394007,_0x0778('0x12'));logger[_0x0778('0x13')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x394007,_0x0778('0x12'),JSON['stringify'](_0x151fc8));if(_0x151fc8['error']){if(_0x151fc8[_0x0778('0x14')]['code']===0x1f4){logger[_0x0778('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x394007,_0x151fc8[_0x0778('0x14')]['message']);return _0x3608c6(_0x151fc8[_0x0778('0x14')][_0x0778('0x15')]);}logger[_0x0778('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x394007,_0x151fc8[_0x0778('0x14')]['message']);return _0x1e2989(_0x151fc8[_0x0778('0x14')][_0x0778('0x15')]);}else{logger[_0x0778('0x16')](_0x0778('0x17'),_0x394007,_0x0778('0x12'));_0x1e2989(_0x151fc8[_0x0778('0x18')][_0x0778('0x15')]);}})[_0x0778('0x19')](function(_0x5ba432){logger[_0x0778('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x394007,_0x5ba432);_0x3608c6(_0x5ba432);});});}exports[_0x0778('0x1a')]=function(_0x177db0){var _0x4aa4e4=this;return new Promise(function(_0x39fb8a,_0x385233){return db[_0x0778('0x1b')]['update'](_0x177db0['body'],{'raw':_0x177db0[_0x0778('0x1c')]?_0x177db0['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x177db0[_0x0778('0x1c')]?_0x177db0[_0x0778('0x1c')][_0x0778('0x1d')]||null:null,'attributes':_0x177db0[_0x0778('0x1c')]?_0x177db0[_0x0778('0x1c')][_0x0778('0x1e')]||null:null,'limit':_0x177db0[_0x0778('0x1c')]?_0x177db0[_0x0778('0x1c')][_0x0778('0x1f')]||null:null})[_0x0778('0x20')](function(_0x33f522){logger[_0x0778('0x16')](_0x0778('0x1a'),_0x177db0);logger[_0x0778('0x13')]('UpdateSmsInteraction',_0x177db0,JSON[_0x0778('0x21')](_0x33f522));_0x39fb8a(_0x33f522);})['catch'](function(_0x96ae1){logger[_0x0778('0x14')](_0x0778('0x1a'),_0x96ae1[_0x0778('0x15')],_0x177db0);_0x385233(_0x4aa4e4['error'](0x1f4,_0x96ae1[_0x0778('0x15')]));});});};exports[_0x0778('0x22')]=function(_0x202f97){return new Promise(function(_0x579a88,_0x1e34a2){return db[_0x0778('0x1b')]['find']({'where':_0x202f97[_0x0778('0x1c')]?_0x202f97['options']['where']||null:null})['then'](function(_0x508189){if(_0x508189){return _0x508189[_0x0778('0x23')](_0x202f97[_0x0778('0x24')][_0x0778('0x25')],_[_0x0778('0x26')](_0x202f97[_0x0778('0x24')],[_0x0778('0x25'),'id'])||{});}})['spread'](function(_0x436fb2){logger[_0x0778('0x16')]('AddTags',_0x202f97);logger[_0x0778('0x13')](_0x0778('0x27'),_0x202f97,JSON[_0x0778('0x21')](_0x436fb2));_0x579a88(_0x436fb2);})[_0x0778('0x19')](function(_0x5b2b34){logger[_0x0778('0x14')](_0x0778('0x27'),_0x5b2b34[_0x0778('0x15')],_0x202f97);_0x1e34a2(_this[_0x0778('0x14')](0x1f4,_0x5b2b34[_0x0778('0x15')]));});});};
\ No newline at end of file
+var _0x4643=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','code','SmsInteraction,\x20%s,\x20%s','message','result','catch','UpdateSmsInteraction','body','options','raw','where','attributes','limit','stringify','SmsInteraction','find','addTags','omit','ids','spread','AddTags','lodash'];(function(_0x5eb3df,_0x2b91f1){var _0x435910=function(_0x1f615e){while(--_0x1f615e){_0x5eb3df['push'](_0x5eb3df['shift']());}};_0x435910(++_0x2b91f1);}(_0x4643,0x12c));var _0x3464=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x4643[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x3464('0x0'));var util=require('util');var moment=require(_0x3464('0x1'));var BPromise=require(_0x3464('0x2'));var rs=require(_0x3464('0x3'));var fs=require('fs');var Redis=require(_0x3464('0x4'));var db=require(_0x3464('0x5'))['db'];var utils=require(_0x3464('0x6'));var logger=require(_0x3464('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3464('0x8'));var client=jayson['client'][_0x3464('0x9')]({'port':0x232a});config[_0x3464('0xa')]=_[_0x3464('0xb')](config['redis'],{'host':_0x3464('0xc'),'port':0x18eb});var socket=require(_0x3464('0xd'))(new Redis(config['redis']));require(_0x3464('0xe'))[_0x3464('0xf')](socket);function respondWithRpcPromise(_0x3de095,_0x7b182f,_0x457669){return new BPromise(function(_0x3dd677,_0x22b31c){return client[_0x3464('0x10')](_0x3de095,_0x457669)[_0x3464('0x11')](function(_0x1c5ac8){logger[_0x3464('0x12')]('SmsInteraction,\x20%s,\x20%s',_0x7b182f,_0x3464('0x13'));logger[_0x3464('0x14')](_0x3464('0x15'),_0x7b182f,'request\x20sent',JSON['stringify'](_0x1c5ac8));if(_0x1c5ac8[_0x3464('0x16')]){if(_0x1c5ac8[_0x3464('0x16')][_0x3464('0x17')]===0x1f4){logger[_0x3464('0x16')](_0x3464('0x18'),_0x7b182f,_0x1c5ac8[_0x3464('0x16')]['message']);return _0x22b31c(_0x1c5ac8[_0x3464('0x16')]['message']);}logger[_0x3464('0x16')](_0x3464('0x18'),_0x7b182f,_0x1c5ac8['error'][_0x3464('0x19')]);return _0x3dd677(_0x1c5ac8[_0x3464('0x16')]['message']);}else{logger['info'](_0x3464('0x18'),_0x7b182f,'request\x20sent');_0x3dd677(_0x1c5ac8[_0x3464('0x1a')][_0x3464('0x19')]);}})[_0x3464('0x1b')](function(_0x3bbec2){logger[_0x3464('0x16')](_0x3464('0x18'),_0x7b182f,_0x3bbec2);_0x22b31c(_0x3bbec2);});});}exports[_0x3464('0x1c')]=function(_0x5a9653){var _0x12cb0d=this;return new Promise(function(_0x2a1824,_0x135a90){return db['SmsInteraction']['update'](_0x5a9653[_0x3464('0x1d')],{'raw':_0x5a9653[_0x3464('0x1e')]?_0x5a9653['options'][_0x3464('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a9653['options']?_0x5a9653[_0x3464('0x1e')][_0x3464('0x20')]||null:null,'attributes':_0x5a9653['options']?_0x5a9653[_0x3464('0x1e')][_0x3464('0x21')]||null:null,'limit':_0x5a9653[_0x3464('0x1e')]?_0x5a9653[_0x3464('0x1e')][_0x3464('0x22')]||null:null})[_0x3464('0x11')](function(_0xe66091){logger[_0x3464('0x12')]('UpdateSmsInteraction',_0x5a9653);logger['debug'](_0x3464('0x1c'),_0x5a9653,JSON[_0x3464('0x23')](_0xe66091));_0x2a1824(_0xe66091);})[_0x3464('0x1b')](function(_0x3332b9){logger['error'](_0x3464('0x1c'),_0x3332b9['message'],_0x5a9653);_0x135a90(_0x12cb0d[_0x3464('0x16')](0x1f4,_0x3332b9['message']));});});};exports['AddTagsToSmsInteraction']=function(_0xe40832){return new Promise(function(_0xaff93,_0x36b3e8){return db[_0x3464('0x24')][_0x3464('0x25')]({'where':_0xe40832[_0x3464('0x1e')]?_0xe40832[_0x3464('0x1e')][_0x3464('0x20')]||null:null})[_0x3464('0x11')](function(_0x429ea3){if(_0x429ea3){return _0x429ea3[_0x3464('0x26')](_0xe40832[_0x3464('0x1d')]['ids'],_[_0x3464('0x27')](_0xe40832[_0x3464('0x1d')],[_0x3464('0x28'),'id'])||{});}})[_0x3464('0x29')](function(_0x19cc6d){logger[_0x3464('0x12')](_0x3464('0x2a'),_0xe40832);logger['debug']('AddTags',_0xe40832,JSON['stringify'](_0x19cc6d));_0xaff93(_0x19cc6d);})[_0x3464('0x1b')](function(_0x566068){logger[_0x3464('0x16')](_0x3464('0x2a'),_0x566068[_0x3464('0x19')],_0xe40832);_0x36b3e8(_this[_0x3464('0x16')](0x1f4,_0x566068[_0x3464('0x19')]));});});};
\ No newline at end of file
index 3ac06c6..510e2e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ed=['removeListener','register','length','smsInteraction:','./smsInteraction.events','save','emit'];(function(_0x5edb0e,_0x30e1fa){var _0x551e43=function(_0x241ce0){while(--_0x241ce0){_0x5edb0e['push'](_0x5edb0e['shift']());}};_0x551e43(++_0x30e1fa);}(_0xf8ed,0x1e0));var _0xdf8e=function(_0x9f39bf,_0x497ac5){_0x9f39bf=_0x9f39bf-0x0;var _0x25f8b5=_0xf8ed[_0x9f39bf];return _0x25f8b5;};'use strict';var SmsInteractionEvents=require(_0xdf8e('0x0'));var events=[_0xdf8e('0x1'),'remove','update'];function createListener(_0x143014,_0x4ee28d){return function(_0x22bed5){_0x4ee28d[_0xdf8e('0x2')](_0x143014,_0x22bed5);};}function removeListener(_0x8004c4,_0x4c16cf){return function(){SmsInteractionEvents[_0xdf8e('0x3')](_0x8004c4,_0x4c16cf);};}exports[_0xdf8e('0x4')]=function(_0x4094fa){for(var _0x1a7b3d=0x0,_0x23d426=events[_0xdf8e('0x5')];_0x1a7b3d<_0x23d426;_0x1a7b3d++){var _0x5f1a46=events[_0x1a7b3d];var _0x2a6573=createListener(_0xdf8e('0x6')+_0x5f1a46,_0x4094fa);SmsInteractionEvents['on'](_0x5f1a46,_0x2a6573);}};
\ No newline at end of file
+var _0x9c62=['length','smsInteraction:','save','remove','update','emit','removeListener','register'];(function(_0x133130,_0x5da155){var _0x160c43=function(_0x111338){while(--_0x111338){_0x133130['push'](_0x133130['shift']());}};_0x160c43(++_0x5da155);}(_0x9c62,0x1aa));var _0x29c6=function(_0x11749b,_0x1104cf){_0x11749b=_0x11749b-0x0;var _0xe6e16f=_0x9c62[_0x11749b];return _0xe6e16f;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x29c6('0x0'),_0x29c6('0x1'),_0x29c6('0x2')];function createListener(_0x7570ca,_0x9cd54){return function(_0x9fc3af){_0x9cd54[_0x29c6('0x3')](_0x7570ca,_0x9fc3af);};}function removeListener(_0x1b1d39,_0x3595a3){return function(){SmsInteractionEvents[_0x29c6('0x4')](_0x1b1d39,_0x3595a3);};}exports[_0x29c6('0x5')]=function(_0x21777e){for(var _0x29211f=0x0,_0x4a2cd0=events[_0x29c6('0x6')];_0x29211f<_0x4a2cd0;_0x29211f++){var _0x245c53=events[_0x29211f];var _0x3bfd04=createListener(_0x29c6('0x7')+_0x245c53,_0x21777e);SmsInteractionEvents['on'](_0x245c53,_0x3bfd04);}};
\ No newline at end of file
index 105f8bf..eb7f081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab95=['../../config/environment','get','isAuthenticated','/describe','describe','/:id','post','tracked','sms','smsmessage:create','/:id/status','status','update','put','/:id/accept','accept','/:id/reject','reject','exports','multer','util','path','express','Router','../../components/interaction/service'];(function(_0x526788,_0x4b26f7){var _0x303d6c=function(_0x3db605){while(--_0x3db605){_0x526788['push'](_0x526788['shift']());}};_0x303d6c(++_0x4b26f7);}(_0xab95,0x1d5));var _0x5ab9=function(_0x4a710c,_0x59dfd1){_0x4a710c=_0x4a710c-0x0;var _0x41c686=_0xab95[_0x4a710c];return _0x41c686;};'use strict';var multer=require(_0x5ab9('0x0'));var util=require(_0x5ab9('0x1'));var path=require(_0x5ab9('0x2'));var timeout=require('connect-timeout');var express=require(_0x5ab9('0x3'));var router=express[_0x5ab9('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5ab9('0x5'));var config=require(_0x5ab9('0x6'));var controller=require('./smsMessage.controller');router[_0x5ab9('0x7')]('/',auth[_0x5ab9('0x8')](),controller['index']);router[_0x5ab9('0x7')](_0x5ab9('0x9'),auth['isAuthenticated'](),controller[_0x5ab9('0xa')]);router[_0x5ab9('0x7')](_0x5ab9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x5ab9('0xc')]('/',auth[_0x5ab9('0x8')](),interaction[_0x5ab9('0xd')](_0x5ab9('0xe'),_0x5ab9('0xf')),controller['create']);router['post'](_0x5ab9('0x10'),controller[_0x5ab9('0x11')]);router['put'](_0x5ab9('0xb'),auth['isAuthenticated'](),controller[_0x5ab9('0x12')]);router[_0x5ab9('0x13')](_0x5ab9('0x14'),auth[_0x5ab9('0x8')](),controller[_0x5ab9('0x15')]);router['put'](_0x5ab9('0x16'),auth[_0x5ab9('0x8')](),controller[_0x5ab9('0x17')]);router['delete'](_0x5ab9('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x5ab9('0x18')]=router;
\ No newline at end of file
+var _0x3c2c=['get','isAuthenticated','index','/describe','/:id','post','sms','smsmessage:create','create','/:id/status','status','put','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4fe39f,_0x35fc47){var _0x52008b=function(_0x1a6b92){while(--_0x1a6b92){_0x4fe39f['push'](_0x4fe39f['shift']());}};_0x52008b(++_0x35fc47);}(_0x3c2c,0x160));var _0xc3c2=function(_0x241c04,_0x321135){_0x241c04=_0x241c04-0x0;var _0x1828ea=_0x3c2c[_0x241c04];return _0x1828ea;};'use strict';var multer=require(_0xc3c2('0x0'));var util=require(_0xc3c2('0x1'));var path=require(_0xc3c2('0x2'));var timeout=require(_0xc3c2('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc3c2('0x4'));var auth=require(_0xc3c2('0x5'));var interaction=require(_0xc3c2('0x6'));var config=require(_0xc3c2('0x7'));var controller=require('./smsMessage.controller');router[_0xc3c2('0x8')]('/',auth[_0xc3c2('0x9')](),controller[_0xc3c2('0xa')]);router[_0xc3c2('0x8')](_0xc3c2('0xb'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xc3c2('0xc'),auth[_0xc3c2('0x9')](),controller['show']);router[_0xc3c2('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0xc3c2('0xe'),_0xc3c2('0xf')),controller[_0xc3c2('0x10')]);router['post'](_0xc3c2('0x11'),controller[_0xc3c2('0x12')]);router[_0xc3c2('0x13')](_0xc3c2('0xc'),auth['isAuthenticated'](),controller[_0xc3c2('0x14')]);router[_0xc3c2('0x13')]('/:id/accept',auth[_0xc3c2('0x9')](),controller['accept']);router[_0xc3c2('0x13')]('/:id/reject',auth[_0xc3c2('0x9')](),controller['reject']);router[_0xc3c2('0x15')](_0xc3c2('0xc'),auth['isAuthenticated'](),controller[_0xc3c2('0x16')]);module[_0xc3c2('0x17')]=router;
\ No newline at end of file
index 223dc06..2c7e1a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b1=['STRING','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x5f4864,_0x48dd66){var _0xa73468=function(_0xcde800){while(--_0xcde800){_0x5f4864['push'](_0x5f4864['shift']());}};_0xa73468(++_0x48dd66);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0x1a9b('0x0')](_0x1a9b('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x1a9b('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1a9b('0x3')]('in',_0x1a9b('0x4')),'defaultValue':_0x1a9b('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x1a9b('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x1a9b('0x5')]},'providerResponse':{'type':Sequelize[_0x1a9b('0x0')]}};
\ No newline at end of file
+var _0x781e=['medium','BOOLEAN','out','STRING','DATE','sequelize','exports','TEXT'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x781e,0x13d));var _0xe781=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x781e[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0xe781('0x0'));module[_0xe781('0x1')]={'body':{'type':Sequelize[_0xe781('0x2')](_0xe781('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe781('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xe781('0x5')),'defaultValue':_0xe781('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe781('0x6')](0xbe)},'phone':{'type':Sequelize[_0xe781('0x6')]},'readAt':{'type':Sequelize[_0xe781('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe781('0x6')]},'providerResponse':{'type':Sequelize[_0xe781('0x2')]}};
\ No newline at end of file
index 03ad471..27afcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0da=['DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','client','http','request','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','SmsMessage,\x20%s,\x20%s','message','catch','sendStatus','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','end','stack','name','status','send','map','SmsMessage','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','include','findAll','params','options','find','create','body','describe','sms-interactions','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId','read1stAt','interaction','get','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','ContactId','contact','rejectmessage','SmsAccountId','debug','received\x20delivery\x20report\x20from','type','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','delivered','Status','plivio','infobip'];(function(_0x13e12e,_0x1db284){var _0x642b5c=function(_0x5e70e8){while(--_0x5e70e8){_0x13e12e['push'](_0x13e12e['shift']());}};_0x642b5c(++_0x1db284);}(_0xd0da,0x1b1));var _0xad0d=function(_0x1daaa9,_0x220393){_0x1daaa9=_0x1daaa9-0x0;var _0x1dd221=_0xd0da[_0x1daaa9];return _0x1dd221;};'use strict';var emlformat=require(_0xad0d('0x0'));var rimraf=require(_0xad0d('0x1'));var zipdir=require(_0xad0d('0x2'));var jsonpatch=require(_0xad0d('0x3'));var rp=require(_0xad0d('0x4'));var moment=require('moment');var BPromise=require(_0xad0d('0x5'));var Mustache=require(_0xad0d('0x6'));var util=require(_0xad0d('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xad0d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xad0d('0x9'));var squel=require(_0xad0d('0xa'));var crypto=require(_0xad0d('0xb'));var jsforce=require(_0xad0d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xad0d('0x8'));var querystring=require(_0xad0d('0xd'));var Papa=require(_0xad0d('0xe'));var Redis=require(_0xad0d('0xf'));var authService=require(_0xad0d('0x10'));var qs=require(_0xad0d('0x11'));var as=require(_0xad0d('0x12'));var hardwareService=require(_0xad0d('0x13'));var logger=require(_0xad0d('0x14'))(_0xad0d('0x15'));var utils=require(_0xad0d('0x16'));var config=require(_0xad0d('0x17'));var licenseUtil=require(_0xad0d('0x18'));var db=require('../../mysqldb')['db'];config[_0xad0d('0x19')]=_[_0xad0d('0x1a')](config['redis'],{'host':_0xad0d('0x1b'),'port':0x18eb});var socket=require(_0xad0d('0x1c'))(new Redis(config['redis']));require(_0xad0d('0x1d'))[_0xad0d('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0xad0d('0x1f')][_0xad0d('0x20')]({'port':0x232c});var client9002=jayson['client'][_0xad0d('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x59811c,_0x56d253,_0x3efaab,_0x3677b5){return new BPromise(function(_0x1cde0d,_0x4ac4a4){var _0x1cac0c=_0x3677b5||client;return _0x1cac0c[_0xad0d('0x21')](_0x59811c,_0x3efaab)['then'](function(_0xb6c032){logger['info']('SmsMessage,\x20%s,\x20%s',_0x56d253,_0xad0d('0x22'));logger['debug'](_0xad0d('0x23'),_0x56d253,_0xad0d('0x22'),JSON[_0xad0d('0x24')](_0xb6c032));if(_0xb6c032['error']){if(_0xb6c032['error'][_0xad0d('0x25')]===0x1f4){logger[_0xad0d('0x26')](_0xad0d('0x27'),_0x56d253,_0xb6c032['error']['message']);return _0x4ac4a4(_0xb6c032[_0xad0d('0x26')]['message']);}logger[_0xad0d('0x26')](_0xad0d('0x27'),_0x56d253,_0xb6c032[_0xad0d('0x26')][_0xad0d('0x28')]);return _0x1cde0d(_0xb6c032[_0xad0d('0x26')][_0xad0d('0x28')]);}else{logger['info'](_0xad0d('0x27'),_0x56d253,_0xad0d('0x22'));_0x1cde0d(_0xb6c032['result']['message']);}})[_0xad0d('0x29')](function(_0x3e510e){logger[_0xad0d('0x26')]('SmsMessage,\x20%s,\x20%s',_0x56d253,_0x3e510e);_0x4ac4a4(_0x3e510e);});});}function respondWithStatusCode(_0x3f70a6,_0x4944f4){_0x4944f4=_0x4944f4||0xcc;return function(_0x394aa2){if(_0x394aa2){return _0x3f70a6[_0xad0d('0x2a')](_0x4944f4);}return _0x3f70a6['status'](_0x4944f4)['end']();};}function respondWithResult(_0x3111fd,_0x434221){_0x434221=_0x434221||0xc8;return function(_0xcf3c2b){if(_0xcf3c2b){return _0x3111fd['status'](_0x434221)[_0xad0d('0x2b')](_0xcf3c2b);}};}function respondWithFilteredResult(_0x62dfed,_0xc2bddb){return function(_0x59792d){if(_0x59792d){var _0x17a8e4=typeof _0xc2bddb[_0xad0d('0x2c')]==='undefined'&&typeof _0xc2bddb[_0xad0d('0x2d')]===_0xad0d('0x2e');var _0x20bb3d=_0x59792d[_0xad0d('0x2f')];var _0x185b9e=_0x17a8e4?0x0:_0xc2bddb[_0xad0d('0x2c')];var _0x299752=_0x17a8e4?_0x59792d[_0xad0d('0x2f')]:_0xc2bddb[_0xad0d('0x2c')]+_0xc2bddb[_0xad0d('0x2d')];var _0x45766c;if(_0x299752>=_0x20bb3d){_0x299752=_0x20bb3d;_0x45766c=0xc8;}else{_0x45766c=0xce;}_0x62dfed['status'](_0x45766c);return _0x62dfed[_0xad0d('0x30')]('Content-Range',_0x185b9e+'-'+_0x299752+'/'+_0x20bb3d)[_0xad0d('0x2b')](_0x59792d);}return null;};}function patchUpdates(_0x27490a){return function(_0xaa1aa){try{jsonpatch[_0xad0d('0x31')](_0xaa1aa,_0x27490a,!![]);}catch(_0x4f1bed){return BPromise[_0xad0d('0x32')](_0x4f1bed);}return _0xaa1aa[_0xad0d('0x33')]();};}function saveUpdates(_0x49bf21,_0x2517d2){return function(_0x1319c0){if(_0x1319c0){return _0x1319c0[_0xad0d('0x34')](_0x49bf21)[_0xad0d('0x35')](function(_0x2dc5b0){return _0x2dc5b0;});}return null;};}function removeEntity(_0x594aad,_0x38b483){return function(_0x1acddf){if(_0x1acddf){return _0x1acddf[_0xad0d('0x36')]()[_0xad0d('0x35')](function(){_0x594aad['status'](0xcc)[_0xad0d('0x37')]();});}};}function handleEntityNotFound(_0x5b2bc0,_0xb52898){return function(_0xf2b22d){if(!_0xf2b22d){_0x5b2bc0[_0xad0d('0x2a')](0x194);}return _0xf2b22d;};}function handleError(_0x58f59b,_0x2ee643){_0x2ee643=_0x2ee643||0x1f4;return function(_0x33dd95){logger[_0xad0d('0x26')](_0x33dd95[_0xad0d('0x38')]);if(_0x33dd95[_0xad0d('0x39')]){delete _0x33dd95[_0xad0d('0x39')];}_0x58f59b[_0xad0d('0x3a')](_0x2ee643)[_0xad0d('0x3b')](_0x33dd95);};}exports['index']=function(_0x351217,_0x1b1b87){var _0x74929e={},_0x53e2a2={},_0x5a1073={'count':0x0,'rows':[]};var _0x397294=_[_0xad0d('0x3c')](db[_0xad0d('0x3d')][_0xad0d('0x3e')],function(_0x18527b){return{'name':_0x18527b['fieldName'],'type':_0x18527b['type'][_0xad0d('0x3f')]};});_0x53e2a2['model']=_[_0xad0d('0x3c')](_0x397294,_0xad0d('0x39'));_0x53e2a2[_0xad0d('0x40')]=_[_0xad0d('0x41')](_0x351217[_0xad0d('0x40')]);_0x53e2a2[_0xad0d('0x42')]=_[_0xad0d('0x43')](_0x53e2a2[_0xad0d('0x44')],_0x53e2a2[_0xad0d('0x40')]);_0x74929e['attributes']=_[_0xad0d('0x43')](_0x53e2a2[_0xad0d('0x44')],qs[_0xad0d('0x45')](_0x351217[_0xad0d('0x40')][_0xad0d('0x45')]));_0x74929e[_0xad0d('0x46')]=_0x74929e[_0xad0d('0x46')][_0xad0d('0x47')]?_0x74929e[_0xad0d('0x46')]:_0x53e2a2[_0xad0d('0x44')];if(!_0x351217[_0xad0d('0x40')][_0xad0d('0x48')](_0xad0d('0x49'))){_0x74929e[_0xad0d('0x2d')]=qs[_0xad0d('0x2d')](_0x351217['query'][_0xad0d('0x2d')]);_0x74929e[_0xad0d('0x2c')]=qs[_0xad0d('0x2c')](_0x351217[_0xad0d('0x40')][_0xad0d('0x2c')]);}_0x74929e[_0xad0d('0x4a')]=qs[_0xad0d('0x4b')](_0x351217[_0xad0d('0x40')][_0xad0d('0x4b')]);_0x74929e[_0xad0d('0x4c')]=qs['filters'](_[_0xad0d('0x4d')](_0x351217[_0xad0d('0x40')],_0x53e2a2[_0xad0d('0x42')]),_0x397294);if(_0x351217['query'][_0xad0d('0x4e')]){_0x74929e[_0xad0d('0x4c')]=_['merge'](_0x74929e[_0xad0d('0x4c')],{'$or':_['map'](_0x397294,function(_0x16e11e){if(_0x16e11e['type']!=='VIRTUAL'){var _0x5696ce={};_0x5696ce[_0x16e11e['name']]={'$like':'%'+_0x351217[_0xad0d('0x40')]['filter']+'%'};return _0x5696ce;}})});}_0x74929e=_['merge']({},_0x74929e,_0x351217['options']);var _0x332c26={'where':_0x74929e['where']};return db['SmsMessage'][_0xad0d('0x2f')](_0x332c26)[_0xad0d('0x35')](function(_0x5bd07e){_0x5a1073[_0xad0d('0x2f')]=_0x5bd07e;if(_0x351217[_0xad0d('0x40')]['includeAll']){_0x74929e[_0xad0d('0x4f')]=[{'all':!![]}];}return db[_0xad0d('0x3d')][_0xad0d('0x50')](_0x74929e);})[_0xad0d('0x35')](function(_0x560cc7){_0x5a1073['rows']=_0x560cc7;return _0x5a1073;})[_0xad0d('0x35')](respondWithFilteredResult(_0x1b1b87,_0x74929e))[_0xad0d('0x29')](handleError(_0x1b1b87,null));};exports['show']=function(_0x5ece67,_0x323b1e){var _0x2ced7c={'raw':!![],'where':{'id':_0x5ece67[_0xad0d('0x51')]['id']}},_0x140eac={};_0x140eac['model']=_[_0xad0d('0x41')](db[_0xad0d('0x3d')][_0xad0d('0x3e')]);_0x140eac['query']=_[_0xad0d('0x41')](_0x5ece67[_0xad0d('0x40')]);_0x140eac[_0xad0d('0x42')]=_[_0xad0d('0x43')](_0x140eac[_0xad0d('0x44')],_0x140eac[_0xad0d('0x40')]);_0x2ced7c[_0xad0d('0x46')]=_[_0xad0d('0x43')](_0x140eac['model'],qs['fields'](_0x5ece67[_0xad0d('0x40')][_0xad0d('0x45')]));_0x2ced7c[_0xad0d('0x46')]=_0x2ced7c[_0xad0d('0x46')][_0xad0d('0x47')]?_0x2ced7c[_0xad0d('0x46')]:_0x140eac[_0xad0d('0x44')];if(_0x5ece67[_0xad0d('0x40')]['includeAll']){_0x2ced7c[_0xad0d('0x4f')]=[{'all':!![]}];}_0x2ced7c=_['merge']({},_0x2ced7c,_0x5ece67[_0xad0d('0x52')]);return db[_0xad0d('0x3d')][_0xad0d('0x53')](_0x2ced7c)[_0xad0d('0x35')](handleEntityNotFound(_0x323b1e,null))['then'](respondWithResult(_0x323b1e,null))[_0xad0d('0x29')](handleError(_0x323b1e,null));};exports[_0xad0d('0x54')]=function(_0x5c58a8,_0x342a61){return db[_0xad0d('0x3d')]['create'](_0x5c58a8[_0xad0d('0x55')],{})[_0xad0d('0x35')](respondWithResult(_0x342a61,0xc9))[_0xad0d('0x29')](handleError(_0x342a61,null));};exports['update']=function(_0x1dd8b3,_0x2a476d){if(_0x1dd8b3['body']['id']){delete _0x1dd8b3[_0xad0d('0x55')]['id'];}return db[_0xad0d('0x3d')]['find']({'where':{'id':_0x1dd8b3[_0xad0d('0x51')]['id']}})[_0xad0d('0x35')](handleEntityNotFound(_0x2a476d,null))[_0xad0d('0x35')](saveUpdates(_0x1dd8b3[_0xad0d('0x55')],null))[_0xad0d('0x35')](respondWithResult(_0x2a476d,null))[_0xad0d('0x29')](handleError(_0x2a476d,null));};exports[_0xad0d('0x36')]=function(_0x43d86e,_0x93b874){return db[_0xad0d('0x3d')][_0xad0d('0x53')]({'where':{'id':_0x43d86e['params']['id']}})[_0xad0d('0x35')](handleEntityNotFound(_0x93b874,null))['then'](removeEntity(_0x93b874,null))[_0xad0d('0x29')](handleError(_0x93b874,null));};exports['describe']=function(_0x503037,_0x5ef2e2){return db[_0xad0d('0x3d')][_0xad0d('0x56')]()[_0xad0d('0x35')](respondWithResult(_0x5ef2e2,null))[_0xad0d('0x29')](handleError(_0x5ef2e2,null));};var interaction_log=require(_0xad0d('0x14'))(_0xad0d('0x57'));exports[_0xad0d('0x58')]=function(_0x11b492,_0x55ce04,_0x4f7cc9){var _0x313b3e={'agent':{},'channel':'sms'};if(_0x11b492['body']['id']){delete _0x11b492[_0xad0d('0x55')]['id'];}_0x11b492['body'][_0xad0d('0x59')]=!![];_0x11b492[_0xad0d('0x55')]['readAt']=moment()[_0xad0d('0x5a')](_0xad0d('0x5b'));_0x11b492[_0xad0d('0x55')][_0xad0d('0x5c')]=_0x11b492[_0xad0d('0x55')][_0xad0d('0x5c')]||_0x11b492[_0xad0d('0x5d')]['id'];_0x313b3e[_0xad0d('0x5e')]['id']=_0x11b492[_0xad0d('0x55')][_0xad0d('0x5c')];return db[_0xad0d('0x3d')][_0xad0d('0x53')]({'where':{'id':_0x11b492[_0xad0d('0x51')]['id'],'UserId':null}})[_0xad0d('0x35')](handleEntityNotFound(_0x55ce04,null))['then'](saveUpdates(_0x11b492[_0xad0d('0x55')],null))[_0xad0d('0x35')](function(_0x184bc1){if(_0x184bc1){_0x313b3e['message']=_0x184bc1['get']({'plain':!![]});return db[_0xad0d('0x5f')]['find']({'where':{'id':_0x184bc1[_0xad0d('0x60')]}});}return null;})[_0xad0d('0x35')](handleEntityNotFound(_0x55ce04,null))[_0xad0d('0x35')](function(_0x1d5024){if(_0x1d5024){return _0x1d5024[_0xad0d('0x34')]({'UserId':_0x11b492[_0xad0d('0x55')]['UserId'],'read1stAt':_['isNil'](_0x1d5024[_0xad0d('0x61')])?moment()['format'](_0xad0d('0x5b')):undefined});}return null;})['then'](function(_0x57be12){if(_0x57be12){_0x313b3e[_0xad0d('0x62')]=_0x57be12[_0xad0d('0x63')]({'plain':!![]});interaction_log[_0xad0d('0x64')](_0xad0d('0x65'),_0x11b492[_0xad0d('0x5d')]['id'],_0x11b492['user'][_0xad0d('0x39')],_0x11b492[_0xad0d('0x5d')][_0xad0d('0x66')],_0x313b3e['interaction']['id'],_0x11b492[_0xad0d('0x55')]?JSON['stringify'](_0x11b492[_0xad0d('0x55')]):_0xad0d('0x67'));return respondWithRpcPromise('AcceptMessage',_0xad0d('0x68'),_0x313b3e);}return null;})[_0xad0d('0x35')](function(_0x450b60){var _0x3cf047=_0xad0d('0x69')+_0x450b60[_0xad0d('0x28')]['ContactId'];return db[_0xad0d('0x6a')]['query'](_0x3cf047,{'type':db[_0xad0d('0x6b')][_0xad0d('0x6c')][_0xad0d('0x6d')],'raw':!![]})[_0xad0d('0x35')](function(_0xeb69b0){return _0xeb69b0;});})[_0xad0d('0x35')](function(_0x2d40a1){if(_0x2d40a1){_0x313b3e[_0xad0d('0x28')]['contact']=_0x2d40a1[0x0];if(!_0x11b492[_0xad0d('0x55')][_0xad0d('0x5c')])return;return db[_0xad0d('0x6e')][_0xad0d('0x53')]({'where':{'id':_0x11b492['body'][_0xad0d('0x5c')],'role':_0xad0d('0x5e')},'attributes':['id',_0xad0d('0x39'),_0xad0d('0x6f'),_0xad0d('0x70'),_0xad0d('0x71')],'raw':!![]});}return null;})[_0xad0d('0x35')](function(_0xc257b4){if(!_0xc257b4)return null;_0x313b3e[_0xad0d('0x28')][_0xad0d('0x5e')]=_0xc257b4;return _0x313b3e;})['then'](function(_0x5007cb){if(_0x5007cb){if(_0x11b492[_0xad0d('0x55')]['manual']){_0x313b3e['message'][_0xad0d('0x72')]=util[_0xad0d('0x5a')](_0xad0d('0x73'),_0x11b492['user'][_0xad0d('0x39')]);_0x313b3e['message'][_0xad0d('0x74')]=_0x313b3e[_0xad0d('0x74')];_0x313b3e[_0xad0d('0x28')][_0xad0d('0x75')]=_0x313b3e[_0xad0d('0x74')];_0x313b3e['message'][_0xad0d('0x76')]=_0xad0d('0x58');return respondWithRpcPromise(_0xad0d('0x77'),_0xad0d('0x77'),{'event':_0xad0d('0x78'),'message':_0x313b3e['message']},client9002)[_0xad0d('0x35')](function(){return _0x313b3e;});}return _0x313b3e;}return null;})[_0xad0d('0x35')](respondWithResult(_0x55ce04,null))['catch'](handleError(_0x55ce04,null));};var interaction_log=require('../../config/logger')(_0xad0d('0x57'));exports['reject']=function(_0x2cac03,_0x52f065,_0x1df5cb){var _0x257eea={'agent':{},'channel':_0xad0d('0x79')};if(_0x2cac03[_0xad0d('0x55')]['id']){delete _0x2cac03[_0xad0d('0x55')]['id'];}_0x2cac03[_0xad0d('0x55')][_0xad0d('0x5c')]=_0x2cac03[_0xad0d('0x55')][_0xad0d('0x5c')]||_0x2cac03[_0xad0d('0x5d')]['id'];_0x257eea[_0xad0d('0x5e')]['id']=_0x2cac03[_0xad0d('0x55')][_0xad0d('0x5c')];return db['SmsMessage'][_0xad0d('0x53')]({'where':{'id':_0x2cac03[_0xad0d('0x51')]['id'],'UserId':null}})[_0xad0d('0x35')](handleEntityNotFound(_0x52f065,null))[_0xad0d('0x35')](function(_0xb96fb9){if(_0xb96fb9){_0x257eea[_0xad0d('0x28')]=_0xb96fb9[_0xad0d('0x63')]({'plain':!![]});return db[_0xad0d('0x5f')][_0xad0d('0x53')]({'where':{'id':_0xb96fb9['SmsInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x52f065,null))[_0xad0d('0x35')](function(_0x481899){if(_0x481899){_0x257eea[_0xad0d('0x62')]=_0x481899['get']({'plain':!![]});interaction_log[_0xad0d('0x64')](_0xad0d('0x7a'),_0x2cac03[_0xad0d('0x5d')]['id'],_0x2cac03[_0xad0d('0x5d')][_0xad0d('0x39')],_0x2cac03[_0xad0d('0x5d')][_0xad0d('0x66')],_0x257eea['interaction']['id'],_0x2cac03[_0xad0d('0x55')]?JSON[_0xad0d('0x24')](_0x2cac03[_0xad0d('0x55')]):_0xad0d('0x67'));return respondWithRpcPromise(_0xad0d('0x7b'),'rejectMessage',_0x257eea);}return null;})['then'](function(_0x59841c){var _0x95a9db='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x59841c[_0xad0d('0x28')][_0xad0d('0x7c')];return db[_0xad0d('0x6a')]['query'](_0x95a9db,{'type':db['Sequelize']['QueryTypes'][_0xad0d('0x6d')],'raw':!![]})['then'](function(_0x2544e5){return _0x2544e5;});})['then'](function(_0x29c307){if(_0x29c307){_0x257eea[_0xad0d('0x28')][_0xad0d('0x7d')]=_0x29c307[0x0];if(!_0x2cac03[_0xad0d('0x55')][_0xad0d('0x5c')])return;return db[_0xad0d('0x6e')]['find']({'where':{'id':_0x2cac03[_0xad0d('0x55')][_0xad0d('0x5c')],'role':'agent'},'attributes':['id',_0xad0d('0x39'),'fullname',_0xad0d('0x70'),_0xad0d('0x71')],'raw':!![]});}return null;})[_0xad0d('0x35')](function(_0x4ae36d){if(!_0x4ae36d)return null;_0x257eea['message'][_0xad0d('0x5e')]=_0x4ae36d;return _0x257eea;})[_0xad0d('0x35')](function(_0x41a462){if(_0x41a462){_0x41a462[_0xad0d('0x28')][_0xad0d('0x72')]=util[_0xad0d('0x5a')](_0xad0d('0x73'),_0x2cac03[_0xad0d('0x5d')][_0xad0d('0x39')]);_0x41a462['message'][_0xad0d('0x74')]=_0x257eea[_0xad0d('0x74')];_0x41a462[_0xad0d('0x28')][_0xad0d('0x75')]=_0x257eea[_0xad0d('0x74')];_0x41a462[_0xad0d('0x28')][_0xad0d('0x76')]=_0xad0d('0x32');respondWithRpcPromise(_0xad0d('0x77'),_0xad0d('0x77'),{'event':_0xad0d('0x7e'),'message':_0x41a462['message']},client9002);return _0x257eea;}return null;})[_0xad0d('0x35')](respondWithResult(_0x52f065,null))[_0xad0d('0x29')](handleError(_0x52f065,null));};exports[_0xad0d('0x3a')]=function(_0x181406,_0x1d2116,_0x4fb50e){if(_0x181406[_0xad0d('0x55')]['id']){delete _0x181406[_0xad0d('0x55')]['id'];}var _0x325a97;return db['SmsMessage']['find']({'where':{'id':_0x181406[_0xad0d('0x51')]['id']}})[_0xad0d('0x35')](handleEntityNotFound(_0x1d2116,null))[_0xad0d('0x35')](function(_0x52b716){if(_0x52b716){_0x325a97=_0x52b716;return db['SmsAccount']['find']({'where':{'id':_0x52b716[_0xad0d('0x7f')]}});}})[_0xad0d('0x35')](handleEntityNotFound(_0x1d2116,null))[_0xad0d('0x35')](function(_0x59fe60){if(_0x59fe60){logger[_0xad0d('0x80')](_0xad0d('0x23'),'status',_0xad0d('0x81'),_0x59fe60[_0xad0d('0x82')],util[_0xad0d('0x83')](_0x181406[_0xad0d('0x55')],{'showHidden':![],'depth':null}));switch(_0x59fe60[_0xad0d('0x82')]){case _0xad0d('0x84'):if(_0x181406[_0xad0d('0x55')][_0xad0d('0x85')]&&_0x181406[_0xad0d('0x55')][_0xad0d('0x85')]===_0x325a97[_0xad0d('0x86')]){return _0x325a97[_0xad0d('0x34')]({'read':!![]});}else{logger['error'](_0xad0d('0x87'),_0xad0d('0x3a'),_0xad0d('0x84'),util[_0xad0d('0x83')](_0x181406[_0xad0d('0x55')],{'showHidden':![],'depth':null}));}break;case _0xad0d('0x88'):if(_0x181406['body'][_0xad0d('0x89')]&&_0x181406[_0xad0d('0x55')][_0xad0d('0x89')]===_0x325a97['messageId']&&_[_0xad0d('0x8a')](['sent',_0xad0d('0x8b')],_0x181406[_0xad0d('0x55')][_0xad0d('0x8c')])>=0x0){return _0x325a97[_0xad0d('0x34')]({'read':!![]});}else{logger['error'](_0xad0d('0x87'),'status',_0xad0d('0x8d'),util[_0xad0d('0x83')](_0x181406[_0xad0d('0x55')],{'showHidden':![],'depth':null}));}break;case _0xad0d('0x8e'):var _0x4583a0=_0x181406['body']['results'][0x0];if(_0x4583a0[_0xad0d('0x3a')]['groupName']===_0xad0d('0x8f')){return _0x325a97[_0xad0d('0x34')]({'read':!![]});}else{logger[_0xad0d('0x26')](_0xad0d('0x87'),_0xad0d('0x3a'),'infobip',util[_0xad0d('0x83')](_0x181406[_0xad0d('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x325a97;}})['then'](respondWithResult(_0x1d2116,null))[_0xad0d('0x29')](handleError(_0x1d2116,null));};
\ No newline at end of file
+var _0x9df6=['sort','where','filters','pick','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','length','includeAll','find','create','body','update','describe','sms-interactions','accept','sms','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId','isNil','read1stAt','format','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','get','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','indexOf','sent','delivered','Status','plivio','inspect','groupName','DELIVERED','infobip','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','socket.io-emitter','redis','register','client','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','sendStatus','stack','name','index','map','SmsMessage','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit'];(function(_0x5253c3,_0x3e4a0a){var _0x3c3917=function(_0x51efd7){while(--_0x51efd7){_0x5253c3['push'](_0x5253c3['shift']());}};_0x3c3917(++_0x3e4a0a);}(_0x9df6,0xe2));var _0x69df=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x9df6[_0x2576d7];return _0x16a08c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x69df('0x0'));var zipdir=require(_0x69df('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x69df('0x2'));var moment=require(_0x69df('0x3'));var BPromise=require(_0x69df('0x4'));var Mustache=require(_0x69df('0x5'));var util=require('util');var path=require(_0x69df('0x6'));var sox=require(_0x69df('0x7'));var csv=require(_0x69df('0x8'));var ejs=require(_0x69df('0x9'));var fs=require('fs');var fs_extra=require(_0x69df('0xa'));var _=require('lodash');var squel=require(_0x69df('0xb'));var crypto=require(_0x69df('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x69df('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x69df('0xe'));var hardwareService=require(_0x69df('0xf'));var logger=require(_0x69df('0x10'))(_0x69df('0x11'));var utils=require(_0x69df('0x12'));var config=require(_0x69df('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x69df('0x14'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x69df('0x15'))(new Redis(config[_0x69df('0x16')]));require('./smsMessage.socket')[_0x69df('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0x69df('0x18')][_0x69df('0x19')]({'port':0x232c});var client9002=jayson['client'][_0x69df('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x3fa4c5,_0x547ba2,_0x4f6cc3,_0x4aaa26){return new BPromise(function(_0x4b43f6,_0x4b303f){var _0x77663c=_0x4aaa26||client;return _0x77663c[_0x69df('0x1a')](_0x3fa4c5,_0x4f6cc3)['then'](function(_0x19a6fb){logger[_0x69df('0x1b')](_0x69df('0x1c'),_0x547ba2,_0x69df('0x1d'));logger[_0x69df('0x1e')](_0x69df('0x1f'),_0x547ba2,_0x69df('0x1d'),JSON['stringify'](_0x19a6fb));if(_0x19a6fb[_0x69df('0x20')]){if(_0x19a6fb['error'][_0x69df('0x21')]===0x1f4){logger['error'](_0x69df('0x1c'),_0x547ba2,_0x19a6fb[_0x69df('0x20')][_0x69df('0x22')]);return _0x4b303f(_0x19a6fb[_0x69df('0x20')][_0x69df('0x22')]);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x547ba2,_0x19a6fb[_0x69df('0x20')][_0x69df('0x22')]);return _0x4b43f6(_0x19a6fb[_0x69df('0x20')][_0x69df('0x22')]);}else{logger[_0x69df('0x1b')](_0x69df('0x1c'),_0x547ba2,_0x69df('0x1d'));_0x4b43f6(_0x19a6fb[_0x69df('0x23')]['message']);}})['catch'](function(_0xa8ad8a){logger[_0x69df('0x20')](_0x69df('0x1c'),_0x547ba2,_0xa8ad8a);_0x4b303f(_0xa8ad8a);});});}function respondWithStatusCode(_0x2761d5,_0x1d9e59){_0x1d9e59=_0x1d9e59||0xcc;return function(_0x5aef46){if(_0x5aef46){return _0x2761d5['sendStatus'](_0x1d9e59);}return _0x2761d5['status'](_0x1d9e59)[_0x69df('0x24')]();};}function respondWithResult(_0x5d57e1,_0x5a1c25){_0x5a1c25=_0x5a1c25||0xc8;return function(_0xee37b3){if(_0xee37b3){return _0x5d57e1[_0x69df('0x25')](_0x5a1c25)[_0x69df('0x26')](_0xee37b3);}};}function respondWithFilteredResult(_0x158543,_0x2b6454){return function(_0x29dcda){if(_0x29dcda){var _0x5d77af=typeof _0x2b6454[_0x69df('0x27')]===_0x69df('0x28')&&typeof _0x2b6454[_0x69df('0x29')]===_0x69df('0x28');var _0x1eccc5=_0x29dcda[_0x69df('0x2a')];var _0x455f88=_0x5d77af?0x0:_0x2b6454[_0x69df('0x27')];var _0x61dbe6=_0x5d77af?_0x29dcda[_0x69df('0x2a')]:_0x2b6454['offset']+_0x2b6454[_0x69df('0x29')];var _0x32c845;if(_0x61dbe6>=_0x1eccc5){_0x61dbe6=_0x1eccc5;_0x32c845=0xc8;}else{_0x32c845=0xce;}_0x158543[_0x69df('0x25')](_0x32c845);return _0x158543[_0x69df('0x2b')](_0x69df('0x2c'),_0x455f88+'-'+_0x61dbe6+'/'+_0x1eccc5)[_0x69df('0x26')](_0x29dcda);}return null;};}function patchUpdates(_0x221812){return function(_0x2ccf7e){try{jsonpatch[_0x69df('0x2d')](_0x2ccf7e,_0x221812,!![]);}catch(_0x128443){return BPromise[_0x69df('0x2e')](_0x128443);}return _0x2ccf7e[_0x69df('0x2f')]();};}function saveUpdates(_0x8ebb8,_0x4a666f){return function(_0x52792e){if(_0x52792e){return _0x52792e['update'](_0x8ebb8)['then'](function(_0xb8bea2){return _0xb8bea2;});}return null;};}function removeEntity(_0x4a0200,_0x1dd11f){return function(_0x2936c0){if(_0x2936c0){return _0x2936c0[_0x69df('0x30')]()[_0x69df('0x31')](function(){_0x4a0200['status'](0xcc)[_0x69df('0x24')]();});}};}function handleEntityNotFound(_0x2a2e7f,_0x5c4164){return function(_0x52f6e2){if(!_0x52f6e2){_0x2a2e7f[_0x69df('0x32')](0x194);}return _0x52f6e2;};}function handleError(_0x477e56,_0x1e08f9){_0x1e08f9=_0x1e08f9||0x1f4;return function(_0x416dd4){logger['error'](_0x416dd4[_0x69df('0x33')]);if(_0x416dd4[_0x69df('0x34')]){delete _0x416dd4['name'];}_0x477e56[_0x69df('0x25')](_0x1e08f9)['send'](_0x416dd4);};}exports[_0x69df('0x35')]=function(_0x2f5a2a,_0x44cbe9){var _0x184de0={},_0x49ecc8={},_0x46972a={'count':0x0,'rows':[]};var _0x24c5a2=_[_0x69df('0x36')](db[_0x69df('0x37')]['rawAttributes'],function(_0x1f9932){return{'name':_0x1f9932[_0x69df('0x38')],'type':_0x1f9932['type'][_0x69df('0x39')]};});_0x49ecc8[_0x69df('0x3a')]=_[_0x69df('0x36')](_0x24c5a2,'name');_0x49ecc8[_0x69df('0x3b')]=_[_0x69df('0x3c')](_0x2f5a2a[_0x69df('0x3b')]);_0x49ecc8['filters']=_[_0x69df('0x3d')](_0x49ecc8[_0x69df('0x3a')],_0x49ecc8[_0x69df('0x3b')]);_0x184de0['attributes']=_['intersection'](_0x49ecc8[_0x69df('0x3a')],qs[_0x69df('0x3e')](_0x2f5a2a[_0x69df('0x3b')][_0x69df('0x3e')]));_0x184de0['attributes']=_0x184de0[_0x69df('0x3f')]['length']?_0x184de0[_0x69df('0x3f')]:_0x49ecc8[_0x69df('0x3a')];if(!_0x2f5a2a[_0x69df('0x3b')][_0x69df('0x40')](_0x69df('0x41'))){_0x184de0['limit']=qs['limit'](_0x2f5a2a[_0x69df('0x3b')]['limit']);_0x184de0[_0x69df('0x27')]=qs['offset'](_0x2f5a2a[_0x69df('0x3b')][_0x69df('0x27')]);}_0x184de0['order']=qs[_0x69df('0x42')](_0x2f5a2a[_0x69df('0x3b')][_0x69df('0x42')]);_0x184de0[_0x69df('0x43')]=qs[_0x69df('0x44')](_[_0x69df('0x45')](_0x2f5a2a['query'],_0x49ecc8[_0x69df('0x44')]),_0x24c5a2);if(_0x2f5a2a[_0x69df('0x3b')]['filter']){_0x184de0[_0x69df('0x43')]=_[_0x69df('0x46')](_0x184de0[_0x69df('0x43')],{'$or':_[_0x69df('0x36')](_0x24c5a2,function(_0x44165f){if(_0x44165f[_0x69df('0x47')]!==_0x69df('0x48')){var _0x553394={};_0x553394[_0x44165f[_0x69df('0x34')]]={'$like':'%'+_0x2f5a2a[_0x69df('0x3b')]['filter']+'%'};return _0x553394;}})});}_0x184de0=_['merge']({},_0x184de0,_0x2f5a2a[_0x69df('0x49')]);var _0x1db044={'where':_0x184de0[_0x69df('0x43')]};return db['SmsMessage'][_0x69df('0x2a')](_0x1db044)[_0x69df('0x31')](function(_0x1331ec){_0x46972a[_0x69df('0x2a')]=_0x1331ec;if(_0x2f5a2a[_0x69df('0x3b')]['includeAll']){_0x184de0[_0x69df('0x4a')]=[{'all':!![]}];}return db[_0x69df('0x37')][_0x69df('0x4b')](_0x184de0);})['then'](function(_0x25cb6f){_0x46972a[_0x69df('0x4c')]=_0x25cb6f;return _0x46972a;})[_0x69df('0x31')](respondWithFilteredResult(_0x44cbe9,_0x184de0))[_0x69df('0x4d')](handleError(_0x44cbe9,null));};exports[_0x69df('0x4e')]=function(_0x33d978,_0x33942a){var _0x4cb457={'raw':!![],'where':{'id':_0x33d978[_0x69df('0x4f')]['id']}},_0xf92ff7={};_0xf92ff7[_0x69df('0x3a')]=_[_0x69df('0x3c')](db[_0x69df('0x37')][_0x69df('0x50')]);_0xf92ff7['query']=_[_0x69df('0x3c')](_0x33d978['query']);_0xf92ff7['filters']=_[_0x69df('0x3d')](_0xf92ff7[_0x69df('0x3a')],_0xf92ff7[_0x69df('0x3b')]);_0x4cb457[_0x69df('0x3f')]=_[_0x69df('0x3d')](_0xf92ff7['model'],qs[_0x69df('0x3e')](_0x33d978[_0x69df('0x3b')][_0x69df('0x3e')]));_0x4cb457[_0x69df('0x3f')]=_0x4cb457[_0x69df('0x3f')][_0x69df('0x51')]?_0x4cb457[_0x69df('0x3f')]:_0xf92ff7['model'];if(_0x33d978[_0x69df('0x3b')][_0x69df('0x52')]){_0x4cb457['include']=[{'all':!![]}];}_0x4cb457=_[_0x69df('0x46')]({},_0x4cb457,_0x33d978[_0x69df('0x49')]);return db['SmsMessage'][_0x69df('0x53')](_0x4cb457)[_0x69df('0x31')](handleEntityNotFound(_0x33942a,null))[_0x69df('0x31')](respondWithResult(_0x33942a,null))['catch'](handleError(_0x33942a,null));};exports[_0x69df('0x54')]=function(_0x82b89d,_0x27f7c2){return db[_0x69df('0x37')][_0x69df('0x54')](_0x82b89d[_0x69df('0x55')],{})[_0x69df('0x31')](respondWithResult(_0x27f7c2,0xc9))['catch'](handleError(_0x27f7c2,null));};exports[_0x69df('0x56')]=function(_0x4217a6,_0x76cbdd){if(_0x4217a6[_0x69df('0x55')]['id']){delete _0x4217a6[_0x69df('0x55')]['id'];}return db[_0x69df('0x37')][_0x69df('0x53')]({'where':{'id':_0x4217a6[_0x69df('0x4f')]['id']}})[_0x69df('0x31')](handleEntityNotFound(_0x76cbdd,null))[_0x69df('0x31')](saveUpdates(_0x4217a6[_0x69df('0x55')],null))[_0x69df('0x31')](respondWithResult(_0x76cbdd,null))[_0x69df('0x4d')](handleError(_0x76cbdd,null));};exports[_0x69df('0x30')]=function(_0x5a8a07,_0x4cec1f){return db[_0x69df('0x37')]['find']({'where':{'id':_0x5a8a07[_0x69df('0x4f')]['id']}})[_0x69df('0x31')](handleEntityNotFound(_0x4cec1f,null))['then'](removeEntity(_0x4cec1f,null))[_0x69df('0x4d')](handleError(_0x4cec1f,null));};exports[_0x69df('0x57')]=function(_0x5f4f3c,_0x55e614){return db['SmsMessage']['describe']()['then'](respondWithResult(_0x55e614,null))[_0x69df('0x4d')](handleError(_0x55e614,null));};var interaction_log=require(_0x69df('0x10'))(_0x69df('0x58'));exports[_0x69df('0x59')]=function(_0x195c1e,_0x28fe38,_0x25c620){var _0x20f93b={'agent':{},'channel':_0x69df('0x5a')};if(_0x195c1e[_0x69df('0x55')]['id']){delete _0x195c1e[_0x69df('0x55')]['id'];}_0x195c1e[_0x69df('0x55')]['read']=!![];_0x195c1e['body'][_0x69df('0x5b')]=moment()['format'](_0x69df('0x5c'));_0x195c1e[_0x69df('0x55')][_0x69df('0x5d')]=_0x195c1e[_0x69df('0x55')][_0x69df('0x5d')]||_0x195c1e[_0x69df('0x5e')]['id'];_0x20f93b[_0x69df('0x5f')]['id']=_0x195c1e['body'][_0x69df('0x5d')];return db[_0x69df('0x37')][_0x69df('0x53')]({'where':{'id':_0x195c1e[_0x69df('0x4f')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x28fe38,null))[_0x69df('0x31')](saveUpdates(_0x195c1e[_0x69df('0x55')],null))[_0x69df('0x31')](function(_0x440548){if(_0x440548){_0x20f93b[_0x69df('0x22')]=_0x440548['get']({'plain':!![]});return db[_0x69df('0x60')][_0x69df('0x53')]({'where':{'id':_0x440548[_0x69df('0x61')]}});}return null;})[_0x69df('0x31')](handleEntityNotFound(_0x28fe38,null))['then'](function(_0x1ec320){if(_0x1ec320){return _0x1ec320['update']({'UserId':_0x195c1e[_0x69df('0x55')][_0x69df('0x5d')],'read1stAt':_[_0x69df('0x62')](_0x1ec320[_0x69df('0x63')])?moment()[_0x69df('0x64')](_0x69df('0x5c')):undefined});}return null;})[_0x69df('0x31')](function(_0x5abfcf){if(_0x5abfcf){_0x20f93b[_0x69df('0x65')]=_0x5abfcf['get']({'plain':!![]});interaction_log[_0x69df('0x1b')](_0x69df('0x66'),_0x195c1e[_0x69df('0x5e')]['id'],_0x195c1e[_0x69df('0x5e')][_0x69df('0x34')],_0x195c1e['user'][_0x69df('0x67')],_0x20f93b[_0x69df('0x65')]['id'],_0x195c1e[_0x69df('0x55')]?JSON[_0x69df('0x68')](_0x195c1e['body']):_0x69df('0x69'));return respondWithRpcPromise(_0x69df('0x6a'),'acceptMessage',_0x20f93b);}return null;})[_0x69df('0x31')](function(_0x9e08f9){var _0x221a52='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x9e08f9['message'][_0x69df('0x6b')];return db[_0x69df('0x6c')][_0x69df('0x3b')](_0x221a52,{'type':db[_0x69df('0x6d')][_0x69df('0x6e')][_0x69df('0x6f')],'raw':!![]})[_0x69df('0x31')](function(_0x381777){return _0x381777;});})[_0x69df('0x31')](function(_0x2cd700){if(_0x2cd700){_0x20f93b[_0x69df('0x22')][_0x69df('0x70')]=_0x2cd700[0x0];if(!_0x195c1e[_0x69df('0x55')]['UserId'])return;return db[_0x69df('0x71')][_0x69df('0x53')]({'where':{'id':_0x195c1e[_0x69df('0x55')]['UserId'],'role':_0x69df('0x5f')},'attributes':['id',_0x69df('0x34'),_0x69df('0x72'),_0x69df('0x73'),_0x69df('0x74')],'raw':!![]});}return null;})['then'](function(_0x40aac0){if(!_0x40aac0)return null;_0x20f93b[_0x69df('0x22')]['agent']=_0x40aac0;return _0x20f93b;})[_0x69df('0x31')](function(_0x477b24){if(_0x477b24){if(_0x195c1e[_0x69df('0x55')][_0x69df('0x75')]){_0x20f93b[_0x69df('0x22')][_0x69df('0x76')]=util['format'](_0x69df('0x77'),_0x195c1e[_0x69df('0x5e')]['name']);_0x20f93b[_0x69df('0x22')][_0x69df('0x78')]=_0x20f93b['channel'];_0x20f93b[_0x69df('0x22')][_0x69df('0x79')]=_0x20f93b[_0x69df('0x78')];_0x20f93b[_0x69df('0x22')][_0x69df('0x7a')]='accept';return respondWithRpcPromise(_0x69df('0x7b'),_0x69df('0x7b'),{'event':'acceptmessage','message':_0x20f93b[_0x69df('0x22')]},client9002)[_0x69df('0x31')](function(){return _0x20f93b;});}return _0x20f93b;}return null;})[_0x69df('0x31')](respondWithResult(_0x28fe38,null))['catch'](handleError(_0x28fe38,null));};var interaction_log=require(_0x69df('0x10'))(_0x69df('0x58'));exports[_0x69df('0x2e')]=function(_0x46e747,_0x30d52f,_0x381266){var _0x58aa35={'agent':{},'channel':'sms'};if(_0x46e747[_0x69df('0x55')]['id']){delete _0x46e747['body']['id'];}_0x46e747[_0x69df('0x55')]['UserId']=_0x46e747['body'][_0x69df('0x5d')]||_0x46e747[_0x69df('0x5e')]['id'];_0x58aa35[_0x69df('0x5f')]['id']=_0x46e747['body'][_0x69df('0x5d')];return db['SmsMessage']['find']({'where':{'id':_0x46e747['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x30d52f,null))[_0x69df('0x31')](function(_0x57ce02){if(_0x57ce02){_0x58aa35[_0x69df('0x22')]=_0x57ce02[_0x69df('0x7c')]({'plain':!![]});return db[_0x69df('0x60')][_0x69df('0x53')]({'where':{'id':_0x57ce02[_0x69df('0x61')]}});}return null;})[_0x69df('0x31')](handleEntityNotFound(_0x30d52f,null))[_0x69df('0x31')](function(_0x1d28b4){if(_0x1d28b4){_0x58aa35['interaction']=_0x1d28b4[_0x69df('0x7c')]({'plain':!![]});interaction_log[_0x69df('0x1b')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x46e747['user']['id'],_0x46e747['user'][_0x69df('0x34')],_0x46e747[_0x69df('0x5e')][_0x69df('0x67')],_0x58aa35[_0x69df('0x65')]['id'],_0x46e747[_0x69df('0x55')]?JSON[_0x69df('0x68')](_0x46e747[_0x69df('0x55')]):_0x69df('0x69'));return respondWithRpcPromise(_0x69df('0x7d'),'rejectMessage',_0x58aa35);}return null;})[_0x69df('0x31')](function(_0x17d95e){var _0x256364=_0x69df('0x7e')+_0x17d95e[_0x69df('0x22')][_0x69df('0x6b')];return db[_0x69df('0x6c')]['query'](_0x256364,{'type':db['Sequelize'][_0x69df('0x6e')][_0x69df('0x6f')],'raw':!![]})[_0x69df('0x31')](function(_0x4adf38){return _0x4adf38;});})['then'](function(_0x273fe6){if(_0x273fe6){_0x58aa35[_0x69df('0x22')][_0x69df('0x70')]=_0x273fe6[0x0];if(!_0x46e747[_0x69df('0x55')][_0x69df('0x5d')])return;return db[_0x69df('0x71')][_0x69df('0x53')]({'where':{'id':_0x46e747['body'][_0x69df('0x5d')],'role':_0x69df('0x5f')},'attributes':['id',_0x69df('0x34'),_0x69df('0x72'),_0x69df('0x73'),_0x69df('0x74')],'raw':!![]});}return null;})[_0x69df('0x31')](function(_0x303520){if(!_0x303520)return null;_0x58aa35[_0x69df('0x22')][_0x69df('0x5f')]=_0x303520;return _0x58aa35;})[_0x69df('0x31')](function(_0x4a6c2c){if(_0x4a6c2c){_0x4a6c2c['message']['interface']=util[_0x69df('0x64')](_0x69df('0x77'),_0x46e747[_0x69df('0x5e')][_0x69df('0x34')]);_0x4a6c2c[_0x69df('0x22')][_0x69df('0x78')]=_0x58aa35['channel'];_0x4a6c2c['message'][_0x69df('0x79')]=_0x58aa35[_0x69df('0x78')];_0x4a6c2c[_0x69df('0x22')][_0x69df('0x7a')]=_0x69df('0x2e');respondWithRpcPromise(_0x69df('0x7b'),_0x69df('0x7b'),{'event':_0x69df('0x7f'),'message':_0x4a6c2c[_0x69df('0x22')]},client9002);return _0x58aa35;}return null;})[_0x69df('0x31')](respondWithResult(_0x30d52f,null))['catch'](handleError(_0x30d52f,null));};exports[_0x69df('0x25')]=function(_0xc78b7e,_0x35b0cc,_0xf57cbd){if(_0xc78b7e[_0x69df('0x55')]['id']){delete _0xc78b7e[_0x69df('0x55')]['id'];}var _0x1a1960;return db[_0x69df('0x37')][_0x69df('0x53')]({'where':{'id':_0xc78b7e[_0x69df('0x4f')]['id']}})[_0x69df('0x31')](handleEntityNotFound(_0x35b0cc,null))[_0x69df('0x31')](function(_0x451ffd){if(_0x451ffd){_0x1a1960=_0x451ffd;return db[_0x69df('0x80')][_0x69df('0x53')]({'where':{'id':_0x451ffd[_0x69df('0x81')]}});}})[_0x69df('0x31')](handleEntityNotFound(_0x35b0cc,null))['then'](function(_0x556a09){if(_0x556a09){logger['debug'](_0x69df('0x1f'),_0x69df('0x25'),_0x69df('0x82'),_0x556a09['type'],util['inspect'](_0xc78b7e[_0x69df('0x55')],{'showHidden':![],'depth':null}));switch(_0x556a09[_0x69df('0x47')]){case _0x69df('0x83'):if(_0xc78b7e['body'][_0x69df('0x84')]&&_0xc78b7e[_0x69df('0x55')][_0x69df('0x84')]===_0x1a1960['messageId']){return _0x1a1960[_0x69df('0x56')]({'read':!![]});}else{logger[_0x69df('0x20')](_0x69df('0x85'),_0x69df('0x25'),_0x69df('0x83'),util['inspect'](_0xc78b7e[_0x69df('0x55')],{'showHidden':![],'depth':null}));}break;case _0x69df('0x86'):if(_0xc78b7e[_0x69df('0x55')]['MessageUUID']&&_0xc78b7e['body'][_0x69df('0x87')]===_0x1a1960[_0x69df('0x88')]&&_[_0x69df('0x89')]([_0x69df('0x8a'),_0x69df('0x8b')],_0xc78b7e[_0x69df('0x55')][_0x69df('0x8c')])>=0x0){return _0x1a1960[_0x69df('0x56')]({'read':!![]});}else{logger[_0x69df('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x69df('0x25'),_0x69df('0x8d'),util[_0x69df('0x8e')](_0xc78b7e[_0x69df('0x55')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x4c639d=_0xc78b7e['body']['results'][0x0];if(_0x4c639d[_0x69df('0x25')][_0x69df('0x8f')]===_0x69df('0x90')){return _0x1a1960['update']({'read':!![]});}else{logger[_0x69df('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x69df('0x25'),_0x69df('0x91'),util['inspect'](_0xc78b7e[_0x69df('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x1a1960;}})[_0x69df('0x31')](respondWithResult(_0x35b0cc,null))['catch'](handleError(_0x35b0cc,null));};
\ No newline at end of file
index 0033a77..0b4eb27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1a9=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage','setMaxListeners','update'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0xf1a9,0x7d));var _0x9f1a=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xf1a9[_0x13b8f3];return _0x1a6d06;};'use strict';var EventEmitter=require(_0x9f1a('0x0'));var SmsMessage=require(_0x9f1a('0x1'))['db'][_0x9f1a('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x9f1a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9f1a('0x4'),'afterDestroy':_0x9f1a('0x5')};function emitEvent(_0x18aa16){return function(_0x51c279,_0x4cb955,_0x3e857c){SmsMessageEvents[_0x9f1a('0x6')](_0x18aa16+':'+_0x51c279['id'],_0x51c279);SmsMessageEvents[_0x9f1a('0x6')](_0x18aa16,_0x51c279);_0x3e857c(null);};}for(var e in events){if(events[_0x9f1a('0x7')](e)){var event=events[e];SmsMessage[_0x9f1a('0x8')](e,emitEvent(event));}}module[_0x9f1a('0x9')]=SmsMessageEvents;
\ No newline at end of file
+var _0x4c70=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SmsMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c70,0x197));var _0x04c7=function(_0x4e6243,_0x37ec06){_0x4e6243=_0x4e6243-0x0;var _0x211fbc=_0x4c70[_0x4e6243];return _0x211fbc;};'use strict';var EventEmitter=require(_0x04c7('0x0'));var SmsMessage=require(_0x04c7('0x1'))['db'][_0x04c7('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x04c7('0x3')](0x0);var events={'afterCreate':_0x04c7('0x4'),'afterUpdate':'update','afterDestroy':_0x04c7('0x5')};function emitEvent(_0x36a2c7){return function(_0x1a37ff,_0x32cf17,_0x594b3e){SmsMessageEvents[_0x04c7('0x6')](_0x36a2c7+':'+_0x1a37ff['id'],_0x1a37ff);SmsMessageEvents[_0x04c7('0x6')](_0x36a2c7,_0x1a37ff);_0x594b3e(null);};}for(var e in events){if(events[_0x04c7('0x7')](e)){var event=events[e];SmsMessage[_0x04c7('0x8')](e,emitEvent(event));}}module[_0x04c7('0x9')]=SmsMessageEvents;
\ No newline at end of file
index 8a2fd13..6e45c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb7=['message','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','../../config/environment','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','direction','toLowerCase','secret','isNil','SmsInteractionId','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','messages','phone','remote','/status?token=','token','then','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','password','sender','GET','split','sms','user_key','total_sent','internal_order_id','smsMethod','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','POST','requestid','deliveryReport','clicksend','format','Basic\x20%s','base64','http_code','data','head','message_id','clickSend','plivo','senderString','%s:%s','authId','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','sort','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','Missing\x20parameters:\x20apiKey','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','Bearer\x20','code'];(function(_0x5bf154,_0x45f98f){var _0x53aa08=function(_0x5da849){while(--_0x5da849){_0x5bf154['push'](_0x5bf154['shift']());}};_0x53aa08(++_0x45f98f);}(_0x8eb7,0xf3));var _0x78eb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8eb7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x78eb('0x0'));var util=require(_0x78eb('0x1'));var logger=require('../../config/logger')(_0x78eb('0x2'));var moment=require(_0x78eb('0x3'));var BPromise=require(_0x78eb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x78eb('0x5'));var attributes=require('./smsMessage.attributes');module[_0x78eb('0x6')]=function(_0x46661a,_0x3898ac){return _0x46661a[_0x78eb('0x7')](_0x78eb('0x8'),attributes,{'tableName':_0x78eb('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x78eb('0xa')]},{'name':_0x78eb('0xb'),'fields':[_0x78eb('0xc')],'type':_0x78eb('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3b6263,_0x5066a6,_0xbfb84){var _0x3b4475=_0x46661a['models'];var _0x158c8b=_0x3b6263['get']({'plain':!![]});if(_0x158c8b[_0x78eb('0xe')][_0x78eb('0xf')]()==='in'||_0x158c8b[_0x78eb('0xe')][_0x78eb('0xf')]()==='out'&&!_0x158c8b[_0x78eb('0x10')]&&!_[_0x78eb('0x11')](_0x158c8b['UserId'])&&!_['isNil'](_0x158c8b[_0x78eb('0x12')])){_0x3b4475['SmsInteraction']['findOne']({'where':{'id':_0x158c8b[_0x78eb('0x12')]}})['then'](function(_0x490d6f){if(_0x490d6f){_0x490d6f['update']({'lastMsgAt':_0x158c8b['createdAt'],'lastMsgDirection':_0x158c8b[_0x78eb('0xe')][_0x78eb('0xf')]()});}})[_0x78eb('0x13')](function(_0x112736){console[_0x78eb('0x14')](_0x112736);});}if(_0x158c8b['direction']===_0x78eb('0x15')&&!_0x158c8b[_0x78eb('0x10')]){var _0x49ff7b;_0x3b4475[_0x78eb('0x16')][_0x78eb('0x17')]({'where':{'id':_0x158c8b[_0x78eb('0x18')]},'raw':!![]})['then'](function(_0x57db5b){_0x49ff7b=_0x57db5b;if(_0x49ff7b&&_0x49ff7b['type']){switch(_0x49ff7b[_0x78eb('0x19')]){case _0x78eb('0x1a'):var _0x3ca71c=require(_0x78eb('0x1a'));if(_0x49ff7b[_0x78eb('0x1b')]&&_0x49ff7b[_0x78eb('0x1c')]&&_0x49ff7b['phone']){var _0x30b9bc=new _0x3ca71c(_0x49ff7b[_0x78eb('0x1b')],_0x49ff7b['authToken']);_0x30b9bc[_0x78eb('0x1d')]['create']({'body':_0x158c8b[_0x78eb('0xc')],'to':_0x158c8b['phone'],'from':_0x49ff7b[_0x78eb('0x1e')],'statusCallback':_0x49ff7b[_0x78eb('0x1f')]+'/api/sms/messages/'+_0x158c8b['id']+_0x78eb('0x20')+_0x49ff7b[_0x78eb('0x21')]})[_0x78eb('0x22')](function(_0x7fa41d){if(_0x7fa41d[_0x78eb('0x23')]){return _0x3b6263[_0x78eb('0x24')]({'messageId':_0x7fa41d[_0x78eb('0x23')]});}})['catch'](function(_0x5c3e3d){logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x1a'),util[_0x78eb('0x27')](_0x5c3e3d,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),'twilio',_0x78eb('0x28'));}break;case'skebby':var _0x31d44d=_0x78eb('0x29');if(_0x49ff7b[_0x78eb('0x2a')]&&_0x49ff7b[_0x78eb('0x2b')]){var _0x275bf5={'recipient':[_0x158c8b[_0x78eb('0x1e')]],'message':_0x158c8b[_0x78eb('0xc')],'message_type':_0x49ff7b['smsMethod']};if(_0x49ff7b['smsMethod']&&_0x49ff7b['smsMethod']!=='SI'){_0x275bf5[_0x78eb('0x2c')]=_0x49ff7b['phone'];}var _0x2539c9={'url':_0x31d44d+'login?username='+_0x49ff7b[_0x78eb('0x2a')]+'&password='+_0x49ff7b[_0x78eb('0x2b')],'method':_0x78eb('0x2d')};rp(_0x2539c9)['then'](function(_0x2d75bf){var _0x27beda=_0x2d75bf[_0x78eb('0x2e')](';');var _0x90d397={'user_key':_0x27beda[0x0],'session_key':_0x27beda[0x1]};_0x2539c9={'url':_0x31d44d+_0x78eb('0x2f'),'method':'POST','headers':{'user_key':_0x90d397[_0x78eb('0x30')],'Session_key':_0x90d397['session_key']},'json':!![],'body':_0x275bf5};return rp(_0x2539c9);})[_0x78eb('0x22')](function(_0x33c723){if(_0x33c723[_0x78eb('0x31')]>=0x1){var _0x91fa02={'messageId':_0x33c723[_0x78eb('0x32')]};if(_0x49ff7b[_0x78eb('0x33')]!=='GP'||!_0x49ff7b['deliveryReport']){_0x91fa02[_0x78eb('0x34')]=!![];}return _0x3b6263[_0x78eb('0x24')](_0x91fa02);}else{return logger['error'](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x35'),util['inspect'](_0x33c723,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2678a2){return logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),'skebby',util[_0x78eb('0x27')](_0x2678a2,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x35'),_0x78eb('0x36'));}break;case _0x78eb('0x37'):if(_0x49ff7b[_0x78eb('0x1c')]){var _0x2e58ce={'recipient':_0x158c8b[_0x78eb('0x1e')],'message':_0x158c8b[_0x78eb('0xc')],'sender':_0x49ff7b['senderString']||_0x49ff7b[_0x78eb('0x1e')],'authorization':_0x49ff7b[_0x78eb('0x1c')]};var _0x5066a6={'method':_0x78eb('0x38'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x2e58ce,'json':!![]};rp(_0x5066a6)[_0x78eb('0x22')](function(_0x33b0a5){var _0x387e1b={'messageId':_0x33b0a5[_0x78eb('0x39')]};if(!_0x49ff7b[_0x78eb('0x3a')]){_0x387e1b[_0x78eb('0x34')]=!![];}return _0x3b6263[_0x78eb('0x24')](_0x387e1b);})[_0x78eb('0x13')](function(_0x3f13b5){logger[_0x78eb('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x78eb('0x26'),_0x78eb('0x37'),util[_0x78eb('0x27')](_0x3f13b5,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x78eb('0x26'),_0x78eb('0x37'),'Missing\x20parameters:\x20authToken');}break;case _0x78eb('0x3b'):if(_0x49ff7b[_0x78eb('0x2a')]&&_0x49ff7b[_0x78eb('0x2b')]){var _0x2e58ce={'messages':[{'source':'xCALLY\x20Motion','to':_0x158c8b[_0x78eb('0x1e')],'body':_0x158c8b[_0x78eb('0xc')],'from':_0x49ff7b['senderString']||_0x49ff7b[_0x78eb('0x1e')]}]};var _0xec28d2=util[_0x78eb('0x3c')]('%s:%s',_0x49ff7b[_0x78eb('0x2a')],_0x49ff7b['password']);var _0x5066a6={'method':_0x78eb('0x38'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x2e58ce,'headers':{'Authorization':util[_0x78eb('0x3c')](_0x78eb('0x3d'),new Buffer(_0xec28d2)['toString'](_0x78eb('0x3e')))},'json':!![]};rp(_0x5066a6)[_0x78eb('0x22')](function(_0x45703a){if(_0x45703a['http_code']>=0xc8&&_0x45703a[_0x78eb('0x3f')]<=0xce){if(_0x45703a[_0x78eb('0x40')]&&_0x45703a['data']['queued_count']>0x0){var _0x4908f2=_[_0x78eb('0x41')](_0x45703a[_0x78eb('0x40')][_0x78eb('0x1d')]);var _0x107bff={'messageId':_0x4908f2[_0x78eb('0x42')]};if(!_0x49ff7b[_0x78eb('0x3a')]){_0x107bff[_0x78eb('0x34')]=!![];}return _0x3b6263[_0x78eb('0x24')](_0x107bff);}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),'afterCreate',_0x78eb('0x43'),util['inspect'](_0x45703a,{'showHidden':![],'depth':null}));}}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x43'),util['inspect'](_0x45703a,{'showHidden':![],'depth':null}));}})[_0x78eb('0x13')](function(_0x58a6e5){logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x43'),util[_0x78eb('0x27')](_0x58a6e5,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x43'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x78eb('0x44'):if(_0x49ff7b['authId']&&_0x49ff7b[_0x78eb('0x1c')]){var _0x2e58ce={'dst':_0x158c8b[_0x78eb('0x1e')],'text':_0x158c8b[_0x78eb('0xc')],'src':_0x49ff7b[_0x78eb('0x45')]||_0x49ff7b['phone'],'url':_0x49ff7b[_0x78eb('0x1f')]+'/api/sms/messages/'+_0x158c8b['id']+_0x78eb('0x20')+_0x49ff7b[_0x78eb('0x21')]};var _0xec28d2=util['format'](_0x78eb('0x46'),_0x49ff7b[_0x78eb('0x47')],_0x49ff7b[_0x78eb('0x1c')]);var _0x5066a6={'method':'POST','uri':util['format'](_0x78eb('0x48'),_0x49ff7b[_0x78eb('0x47')]),'body':_0x2e58ce,'headers':{'Authorization':util[_0x78eb('0x3c')](_0x78eb('0x3d'),new Buffer(_0xec28d2)[_0x78eb('0x49')](_0x78eb('0x3e')))},'json':!![]};rp(_0x5066a6)[_0x78eb('0x22')](function(_0x275ecb){var _0x56c4c4={'messageId':_0x275ecb[_0x78eb('0x4a')][0x0]};return _0x3b6263[_0x78eb('0x24')](_0x56c4c4);})['catch'](function(_0x452b0e){logger[_0x78eb('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x78eb('0x44'),util[_0x78eb('0x27')](_0x452b0e,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),'afterCreate',_0x78eb('0x44'),_0x78eb('0x4b'));}break;case _0x78eb('0x4c'):if(_0x49ff7b[_0x78eb('0x2a')]&&_0x49ff7b[_0x78eb('0x2b')]){if(_0x49ff7b['baseUrl']){var _0x3b7e71={'method':'POST','uri':_0x49ff7b['baseUrl']+'/auth/1/session','body':{'username':_0x49ff7b['username'],'password':_0x49ff7b[_0x78eb('0x2b')]},'json':!![]};return rp(_0x3b7e71)[_0x78eb('0x22')](function(_0x787d48){var _0x9cfd20={'method':_0x78eb('0x38'),'uri':_0x49ff7b[_0x78eb('0x4d')]+_0x78eb('0x4e'),'body':{'messages':[{'from':_0x49ff7b[_0x78eb('0x1e')],'destinations':[{'to':_0x158c8b[_0x78eb('0x1e')]}],'text':_0x158c8b[_0x78eb('0xc')],'notifyUrl':_0x49ff7b['remote']+'/api/sms/messages/'+_0x158c8b['id']+_0x78eb('0x20')+_0x49ff7b[_0x78eb('0x21')],'notifyContentType':_0x78eb('0x4f'),'callbackData':_0x49ff7b[_0x78eb('0x1e')]+';'+_0x158c8b[_0x78eb('0xc')]}]},'headers':{'Authorization':_0x78eb('0x50')+_0x787d48['token']},'json':!![]};return rp(_0x9cfd20)['then'](function(_0x22e2b9){if(_0x22e2b9['messages']){var _0x39ed61={'messageId':_0x22e2b9['messages'][0x0][_0x78eb('0xa')]};if(!_0x49ff7b[_0x78eb('0x3a')]){_0x39ed61[_0x78eb('0x34')]=!![];}return _0x3b6263['update'](_0x39ed61);}else{return logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),'infobip',util[_0x78eb('0x27')](_0x22e2b9,{'showHidden':![],'depth':null}));}});})[_0x78eb('0x13')](function(_0x4444f5){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','infobip',util[_0x78eb('0x27')](_0x4444f5,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x4c'),_0x78eb('0x51'));}}else{logger[_0x78eb('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x78eb('0x26'),_0x78eb('0x4c'),_0x78eb('0x36'));}break;case _0x78eb('0x52'):var _0x89ef91=require(_0x78eb('0x53'));if(_0x49ff7b[_0x78eb('0x54')]){var _0x209303={};_0x209303[_0x78eb('0x55')]=_0x49ff7b[_0x78eb('0x2a')];_0x209303['phone']=_0x158c8b[_0x78eb('0x1e')];_0x209303['sender']=_0x49ff7b['phone'];_0x209303[_0x78eb('0x56')]=_0x158c8b[_0x78eb('0xc')];_0x209303[_0x78eb('0x57')]=+new Date();var _0x382c35='';var _0x1e7c37='';var _0x42a4d7=Object[_0x78eb('0x58')](_0x209303);_0x42a4d7[_0x78eb('0x59')]();for(var _0x3ca229=0x0;_0x3ca229<_0x42a4d7['length'];_0x3ca229++){if(_0x382c35!=''){_0x382c35+='&';}_0x382c35+=_0x42a4d7[_0x3ca229]+'='+encodeURIComponent(_0x209303[_0x42a4d7[_0x3ca229]]);_0x1e7c37+=_0x209303[_0x42a4d7[_0x3ca229]];}_0x1e7c37+=_0x49ff7b[_0x78eb('0x54')];_0x1e7c37=_0x89ef91[_0x78eb('0x5a')](_0x78eb('0x5b'))[_0x78eb('0x24')](_0x1e7c37)[_0x78eb('0x5c')](_0x78eb('0x5d'));if(_0x382c35!==''){_0x382c35+='&';}_0x382c35+=_0x78eb('0x5e')+_0x1e7c37;var _0x2539c9={'method':_0x78eb('0x2d'),'uri':_0x49ff7b[_0x78eb('0x4d')]+_0x78eb('0x5f')+_0x382c35,'json':!![]};return rp(_0x2539c9)[_0x78eb('0x22')](function(_0x1f73c3){var _0x254916=Object['keys'](_0x1f73c3);if(_0x1f73c3[_0x254916[0x0]]['error']&&parseInt(_0x1f73c3[_0x254916[0x0]]['error'])===0x0){var _0x52fc5f={'messageId':_0x1f73c3[_0x254916[0x0]][_0x78eb('0x60')]};if(!_0x49ff7b['deliveryReport']){_0x52fc5f['read']=!![];}return _0x3b6263[_0x78eb('0x24')](_0x52fc5f);}else{return logger[_0x78eb('0x14')](_0x78eb('0x25'),'afterCreate',_0x78eb('0x52'),util[_0x78eb('0x27')](_0x1f73c3[_0x78eb('0x14')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x541b9d){return logger['error'](_0x78eb('0x25'),'afterCreate',_0x78eb('0x52'),util['inspect'](_0x541b9d,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x52'),'Missing\x20parameters:\x20apiKey');}break;case _0x78eb('0x61'):if(_0x49ff7b[_0x78eb('0x54')]){var _0x5f24af={'method':'POST','uri':_0x78eb('0x62'),'headers':{'Authorization':_0x49ff7b[_0x78eb('0x54')]},'body':{'content':_0x158c8b[_0x78eb('0xc')],'to':[_0x158c8b[_0x78eb('0x1e')]],'from':_0x49ff7b[_0x78eb('0x1e')],'binary':![],'clientMessageId':_0x78eb('0x63'),'charset':_0x78eb('0x64')},'json':!![]};rp(_0x5f24af)[_0x78eb('0x22')](function(_0x1f985c){if(!_0x1f985c['error']){var _0x475699={'messageId':_0x1f985c[_0x78eb('0x1d')][0x0][_0x78eb('0x65')]};if(!_0x49ff7b[_0x78eb('0x3a')]){_0x475699[_0x78eb('0x34')]=!![];}return _0x3b6263[_0x78eb('0x24')](_0x475699);}else{return logger[_0x78eb('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x78eb('0x26'),_0x78eb('0x61'),util[_0x78eb('0x27')](_0x1f985c[_0x78eb('0x14')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x373e68){return logger['error'](_0x78eb('0x25'),_0x78eb('0x26'),'clickatell',util['inspect'](_0x373e68,{'showHidden':![],'depth':null}));});}else{logger[_0x78eb('0x14')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x78eb('0x26'),'clickatell',_0x78eb('0x66'));}break;case _0x78eb('0x67'):if(_0x49ff7b[_0x78eb('0x2a')]&&_0x49ff7b[_0x78eb('0x2b')]){var _0xec28d2=util[_0x78eb('0x3c')](_0x78eb('0x46'),_0x49ff7b[_0x78eb('0x2a')],_0x49ff7b[_0x78eb('0x2b')]);var _0x5066a6={'method':_0x78eb('0x38'),'uri':_0x78eb('0x68')+_0x49ff7b[_0x78eb('0x69')]+_0x78eb('0x6a'),'body':{'to':[_0x158c8b[_0x78eb('0x1e')]],'text':_0x158c8b[_0x78eb('0xc')],'from':_0x49ff7b[_0x78eb('0x1e')],'applicationId':_0x49ff7b[_0x78eb('0x6b')]},'headers':{'Authorization':util[_0x78eb('0x3c')](_0x78eb('0x3d'),new Buffer(_0xec28d2)[_0x78eb('0x49')](_0x78eb('0x3e')))},'json':!![]};rp(_0x5066a6)[_0x78eb('0x22')](function(_0x4ade12){if(_0x4ade12['id']){var _0x7713ec={'messageId':_0x4ade12['id']};return _0x3b6263[_0x78eb('0x24')](_0x7713ec);}else{logger[_0x78eb('0x14')](_0x78eb('0x25'),'afterCreate','bandwidth',util[_0x78eb('0x27')](_0x4ade12,{'showHidden':![],'depth':null}));}})[_0x78eb('0x13')](function(_0xf1f0da){logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x67'),util[_0x78eb('0x27')](_0xf1f0da,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x67'),_0x78eb('0x36'));}break;case _0x78eb('0x6c'):if(_0x49ff7b[_0x78eb('0x54')]){var _0x4e7b7c={};var _0x2539c9={'method':_0x78eb('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x78eb('0x6d')+_0x49ff7b['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x49ff7b[_0x78eb('0x1e')],'to':_0x158c8b['phone'],'text':_0x158c8b[_0x78eb('0xc')]},'json':!![]};return rp(_0x2539c9)[_0x78eb('0x22')](function(_0x90e1b2){if(_0x90e1b2[_0x78eb('0x6e')]==0xca){_0x4e7b7c[_0x78eb('0x6f')]=_0x90e1b2;var _0x1d92c7={'method':_0x78eb('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x78eb('0x6d')+_0x49ff7b[_0x78eb('0x54')],'Content-Type':_0x78eb('0x4f')},'body':{'refid':_0x4e7b7c[_0x78eb('0x6f')][_0x78eb('0x70')]},'json':!![]};return rp(_0x1d92c7)[_0x78eb('0x22')](function(_0x12c4ea){_0x4e7b7c[_0x78eb('0x71')]=_0x12c4ea;var _0x6c37d9={'messageId':_0x4e7b7c[_0x78eb('0x6f')][_0x78eb('0x70')],'read':!![]};return _0x3b6263['update'](_0x6c37d9);});}else{return logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x6c'),util['inspect'](_0x90e1b2,{'showHidden':![],'depth':null}));}})[_0x78eb('0x13')](function(_0x54673e){return logger[_0x78eb('0x14')](_0x78eb('0x25'),_0x78eb('0x26'),_0x78eb('0x6c'),util[_0x78eb('0x27')](_0x54673e,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x78eb('0x25'),'afterCreate',_0x78eb('0x6c'),_0x78eb('0x72'));}break;}}})[_0x78eb('0x73')](function(){_0xbfb84();});}else{_0xbfb84();}}},'charset':_0x78eb('0x74'),'collate':_0x78eb('0x75')});};
\ No newline at end of file
+var _0x9810=['sort','length','createHash','md5','digest','hex','signature=','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','secret','isNil','UserId','SmsInteractionId','SmsInteraction','then','createdAt','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','create','remote','/api/sms/messages/','sid','update','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','password','smsMethod','login?username=','username','GET','split','sms','session_key','total_sent','internal_order_id','read','connectel','senderString','POST','https://smsapi.connectel.se/api/v2/send/','requestid','deliveryReport','Missing\x20parameters:\x20authToken','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','base64','data','queued_count','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','/sms/2/text/advanced','token','infobip','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','sender','text','timestamp','keys'];(function(_0x54a2e4,_0x1ff92c){var _0x4742d0=function(_0x147a6f){while(--_0x147a6f){_0x54a2e4['push'](_0x54a2e4['shift']());}};_0x4742d0(++_0x1ff92c);}(_0x9810,0x9c));var _0x0981=function(_0x59dccc,_0x184c1c){_0x59dccc=_0x59dccc-0x0;var _0xc97bcb=_0x9810[_0x59dccc];return _0xc97bcb;};'use strict';var _=require('lodash');var util=require(_0x0981('0x0'));var logger=require(_0x0981('0x1'))(_0x0981('0x2'));var moment=require('moment');var BPromise=require(_0x0981('0x3'));var rp=require(_0x0981('0x4'));var fs=require('fs');var path=require(_0x0981('0x5'));var rimraf=require('rimraf');var config=require(_0x0981('0x6'));var attributes=require(_0x0981('0x7'));module[_0x0981('0x8')]=function(_0x557f7e,_0x42e510){return _0x557f7e['define'](_0x0981('0x9'),attributes,{'tableName':_0x0981('0xa'),'paranoid':![],'indexes':[{'name':_0x0981('0xb'),'fields':['messageId']},{'name':_0x0981('0xc'),'fields':[_0x0981('0xd')],'type':_0x0981('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3facd2,_0x2cb082,_0x364aca){var _0x32680d=_0x557f7e[_0x0981('0xf')];var _0x21870a=_0x3facd2['get']({'plain':!![]});if(_0x21870a[_0x0981('0x10')][_0x0981('0x11')]()==='in'||_0x21870a[_0x0981('0x10')][_0x0981('0x11')]()==='out'&&!_0x21870a[_0x0981('0x12')]&&!_[_0x0981('0x13')](_0x21870a[_0x0981('0x14')])&&!_['isNil'](_0x21870a[_0x0981('0x15')])){_0x32680d[_0x0981('0x16')]['findOne']({'where':{'id':_0x21870a['SmsInteractionId']}})[_0x0981('0x17')](function(_0x540041){if(_0x540041){_0x540041['update']({'lastMsgAt':_0x21870a[_0x0981('0x18')],'lastMsgDirection':_0x21870a[_0x0981('0x10')][_0x0981('0x11')]()});}})[_0x0981('0x19')](function(_0x10fbc7){console[_0x0981('0x1a')](_0x10fbc7);});}if(_0x21870a[_0x0981('0x10')]===_0x0981('0x1b')&&!_0x21870a[_0x0981('0x12')]){var _0x2dbc31;_0x32680d[_0x0981('0x1c')][_0x0981('0x1d')]({'where':{'id':_0x21870a[_0x0981('0x1e')]},'raw':!![]})[_0x0981('0x17')](function(_0x1ca368){_0x2dbc31=_0x1ca368;if(_0x2dbc31&&_0x2dbc31[_0x0981('0x1f')]){switch(_0x2dbc31[_0x0981('0x1f')]){case _0x0981('0x20'):var _0x4a168c=require(_0x0981('0x20'));if(_0x2dbc31[_0x0981('0x21')]&&_0x2dbc31[_0x0981('0x22')]&&_0x2dbc31[_0x0981('0x23')]){var _0x56aec2=new _0x4a168c(_0x2dbc31[_0x0981('0x21')],_0x2dbc31[_0x0981('0x22')]);_0x56aec2[_0x0981('0x24')][_0x0981('0x25')]({'body':_0x21870a[_0x0981('0xd')],'to':_0x21870a[_0x0981('0x23')],'from':_0x2dbc31[_0x0981('0x23')],'statusCallback':_0x2dbc31[_0x0981('0x26')]+_0x0981('0x27')+_0x21870a['id']+'/status?token='+_0x2dbc31['token']})[_0x0981('0x17')](function(_0x135387){if(_0x135387[_0x0981('0x28')]){return _0x3facd2[_0x0981('0x29')]({'messageId':_0x135387[_0x0981('0x28')]});}})['catch'](function(_0x23676d){logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),'twilio',util[_0x0981('0x2c')](_0x23676d,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),'afterCreate','twilio',_0x0981('0x2d'));}break;case _0x0981('0x2e'):var _0x188e1a='https://api.skebby.it/API/v1.0/REST/';if(_0x2dbc31['username']&&_0x2dbc31[_0x0981('0x2f')]){var _0x2257dc={'recipient':[_0x21870a[_0x0981('0x23')]],'message':_0x21870a[_0x0981('0xd')],'message_type':_0x2dbc31['smsMethod']};if(_0x2dbc31[_0x0981('0x30')]&&_0x2dbc31[_0x0981('0x30')]!=='SI'){_0x2257dc['sender']=_0x2dbc31[_0x0981('0x23')];}var _0x13f6cc={'url':_0x188e1a+_0x0981('0x31')+_0x2dbc31[_0x0981('0x32')]+'&password='+_0x2dbc31['password'],'method':_0x0981('0x33')};rp(_0x13f6cc)[_0x0981('0x17')](function(_0x516f82){var _0x184e75=_0x516f82[_0x0981('0x34')](';');var _0x4bd7d7={'user_key':_0x184e75[0x0],'session_key':_0x184e75[0x1]};_0x13f6cc={'url':_0x188e1a+_0x0981('0x35'),'method':'POST','headers':{'user_key':_0x4bd7d7['user_key'],'Session_key':_0x4bd7d7[_0x0981('0x36')]},'json':!![],'body':_0x2257dc};return rp(_0x13f6cc);})[_0x0981('0x17')](function(_0x2f464d){if(_0x2f464d[_0x0981('0x37')]>=0x1){var _0x2e981b={'messageId':_0x2f464d[_0x0981('0x38')]};if(_0x2dbc31['smsMethod']!=='GP'||!_0x2dbc31['deliveryReport']){_0x2e981b[_0x0981('0x39')]=!![];}return _0x3facd2[_0x0981('0x29')](_0x2e981b);}else{return logger[_0x0981('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0981('0x2b'),_0x0981('0x2e'),util[_0x0981('0x2c')](_0x2f464d,{'showHidden':![],'depth':null}));}})['catch'](function(_0x422e46){return logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x2e'),util[_0x0981('0x2c')](_0x422e46,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x2e'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x0981('0x3a'):if(_0x2dbc31[_0x0981('0x22')]){var _0x3cc0ff={'recipient':_0x21870a[_0x0981('0x23')],'message':_0x21870a[_0x0981('0xd')],'sender':_0x2dbc31[_0x0981('0x3b')]||_0x2dbc31['phone'],'authorization':_0x2dbc31[_0x0981('0x22')]};var _0x2cb082={'method':_0x0981('0x3c'),'uri':_0x0981('0x3d'),'body':_0x3cc0ff,'json':!![]};rp(_0x2cb082)[_0x0981('0x17')](function(_0x5a91b8){var _0x222135={'messageId':_0x5a91b8[_0x0981('0x3e')]};if(!_0x2dbc31[_0x0981('0x3f')]){_0x222135[_0x0981('0x39')]=!![];}return _0x3facd2[_0x0981('0x29')](_0x222135);})[_0x0981('0x19')](function(_0x3716be){logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x3a'),util[_0x0981('0x2c')](_0x3716be,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0981('0x2b'),_0x0981('0x3a'),_0x0981('0x40'));}break;case _0x0981('0x41'):if(_0x2dbc31[_0x0981('0x32')]&&_0x2dbc31[_0x0981('0x2f')]){var _0x3cc0ff={'messages':[{'source':'xCALLY\x20Motion','to':_0x21870a[_0x0981('0x23')],'body':_0x21870a['body'],'from':_0x2dbc31[_0x0981('0x3b')]||_0x2dbc31[_0x0981('0x23')]}]};var _0xa96776=util[_0x0981('0x42')](_0x0981('0x43'),_0x2dbc31[_0x0981('0x32')],_0x2dbc31['password']);var _0x2cb082={'method':'POST','uri':_0x0981('0x44'),'body':_0x3cc0ff,'headers':{'Authorization':util[_0x0981('0x42')](_0x0981('0x45'),new Buffer(_0xa96776)['toString'](_0x0981('0x46')))},'json':!![]};rp(_0x2cb082)[_0x0981('0x17')](function(_0x2fa8b4){if(_0x2fa8b4['http_code']>=0xc8&&_0x2fa8b4['http_code']<=0xce){if(_0x2fa8b4[_0x0981('0x47')]&&_0x2fa8b4[_0x0981('0x47')][_0x0981('0x48')]>0x0){var _0x20790d=_['head'](_0x2fa8b4[_0x0981('0x47')][_0x0981('0x24')]);var _0xc78d50={'messageId':_0x20790d['message_id']};if(!_0x2dbc31[_0x0981('0x3f')]){_0xc78d50[_0x0981('0x39')]=!![];}return _0x3facd2[_0x0981('0x29')](_0xc78d50);}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x49'),util[_0x0981('0x2c')](_0x2fa8b4,{'showHidden':![],'depth':null}));}}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','clickSend',util[_0x0981('0x2c')](_0x2fa8b4,{'showHidden':![],'depth':null}));}})[_0x0981('0x19')](function(_0x36d266){logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x49'),util[_0x0981('0x2c')](_0x36d266,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0981('0x2b'),_0x0981('0x49'),_0x0981('0x4a'));}break;case _0x0981('0x4b'):if(_0x2dbc31[_0x0981('0x4c')]&&_0x2dbc31[_0x0981('0x22')]){var _0x3cc0ff={'dst':_0x21870a[_0x0981('0x23')],'text':_0x21870a[_0x0981('0xd')],'src':_0x2dbc31[_0x0981('0x3b')]||_0x2dbc31[_0x0981('0x23')],'url':_0x2dbc31[_0x0981('0x26')]+_0x0981('0x27')+_0x21870a['id']+_0x0981('0x4d')+_0x2dbc31['token']};var _0xa96776=util[_0x0981('0x42')](_0x0981('0x43'),_0x2dbc31[_0x0981('0x4c')],_0x2dbc31['authToken']);var _0x2cb082={'method':_0x0981('0x3c'),'uri':util[_0x0981('0x42')](_0x0981('0x4e'),_0x2dbc31[_0x0981('0x4c')]),'body':_0x3cc0ff,'headers':{'Authorization':util[_0x0981('0x42')](_0x0981('0x45'),new Buffer(_0xa96776)[_0x0981('0x4f')](_0x0981('0x46')))},'json':!![]};rp(_0x2cb082)['then'](function(_0xa605b0){var _0x53b739={'messageId':_0xa605b0[_0x0981('0x50')][0x0]};return _0x3facd2['update'](_0x53b739);})[_0x0981('0x19')](function(_0x19fc92){logger[_0x0981('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0981('0x2b'),'plivo',util['inspect'](_0x19fc92,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x4b'),_0x0981('0x51'));}break;case'infobip':if(_0x2dbc31[_0x0981('0x32')]&&_0x2dbc31[_0x0981('0x2f')]){if(_0x2dbc31[_0x0981('0x52')]){var _0x595a47={'method':_0x0981('0x3c'),'uri':_0x2dbc31['baseUrl']+_0x0981('0x53'),'body':{'username':_0x2dbc31[_0x0981('0x32')],'password':_0x2dbc31[_0x0981('0x2f')]},'json':!![]};return rp(_0x595a47)[_0x0981('0x17')](function(_0x476730){var _0x4b4e3b={'method':_0x0981('0x3c'),'uri':_0x2dbc31[_0x0981('0x52')]+_0x0981('0x54'),'body':{'messages':[{'from':_0x2dbc31[_0x0981('0x23')],'destinations':[{'to':_0x21870a[_0x0981('0x23')]}],'text':_0x21870a['body'],'notifyUrl':_0x2dbc31[_0x0981('0x26')]+_0x0981('0x27')+_0x21870a['id']+_0x0981('0x4d')+_0x2dbc31[_0x0981('0x55')],'notifyContentType':'application/json','callbackData':_0x2dbc31[_0x0981('0x23')]+';'+_0x21870a[_0x0981('0xd')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x476730[_0x0981('0x55')]},'json':!![]};return rp(_0x4b4e3b)[_0x0981('0x17')](function(_0x2818a0){if(_0x2818a0[_0x0981('0x24')]){var _0x26eb71={'messageId':_0x2818a0[_0x0981('0x24')][0x0][_0x0981('0xb')]};if(!_0x2dbc31[_0x0981('0x3f')]){_0x26eb71[_0x0981('0x39')]=!![];}return _0x3facd2[_0x0981('0x29')](_0x26eb71);}else{return logger[_0x0981('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0981('0x2b'),_0x0981('0x56'),util[_0x0981('0x2c')](_0x2818a0,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x1950a9){return logger['error'](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x56'),util[_0x0981('0x2c')](_0x1950a9,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),'afterCreate',_0x0981('0x56'),_0x0981('0x57'));}}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x56'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x0981('0x58'):var _0x43fbfc=require(_0x0981('0x59'));if(_0x2dbc31[_0x0981('0x5a')]){var _0x10ebc4={};_0x10ebc4[_0x0981('0x5b')]=_0x2dbc31['username'];_0x10ebc4[_0x0981('0x23')]=_0x21870a[_0x0981('0x23')];_0x10ebc4[_0x0981('0x5c')]=_0x2dbc31[_0x0981('0x23')];_0x10ebc4[_0x0981('0x5d')]=_0x21870a['body'];_0x10ebc4[_0x0981('0x5e')]=+new Date();var _0x4245e1='';var _0x2f14ab='';var _0x3cc787=Object[_0x0981('0x5f')](_0x10ebc4);_0x3cc787[_0x0981('0x60')]();for(var _0x31370a=0x0;_0x31370a<_0x3cc787[_0x0981('0x61')];_0x31370a++){if(_0x4245e1!=''){_0x4245e1+='&';}_0x4245e1+=_0x3cc787[_0x31370a]+'='+encodeURIComponent(_0x10ebc4[_0x3cc787[_0x31370a]]);_0x2f14ab+=_0x10ebc4[_0x3cc787[_0x31370a]];}_0x2f14ab+=_0x2dbc31[_0x0981('0x5a')];_0x2f14ab=_0x43fbfc[_0x0981('0x62')](_0x0981('0x63'))[_0x0981('0x29')](_0x2f14ab)[_0x0981('0x64')](_0x0981('0x65'));if(_0x4245e1!==''){_0x4245e1+='&';}_0x4245e1+=_0x0981('0x66')+_0x2f14ab;var _0x13f6cc={'method':'GET','uri':_0x2dbc31[_0x0981('0x52')]+_0x0981('0x67')+_0x4245e1,'json':!![]};return rp(_0x13f6cc)[_0x0981('0x17')](function(_0x18b6c5){var _0x109f2f=Object[_0x0981('0x5f')](_0x18b6c5);if(_0x18b6c5[_0x109f2f[0x0]]['error']&&parseInt(_0x18b6c5[_0x109f2f[0x0]][_0x0981('0x1a')])===0x0){var _0x134aed={'messageId':_0x18b6c5[_0x109f2f[0x0]][_0x0981('0x68')]};if(!_0x2dbc31[_0x0981('0x3f')]){_0x134aed[_0x0981('0x39')]=!![];}return _0x3facd2['update'](_0x134aed);}else{return logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x58'),util['inspect'](_0x18b6c5[_0x0981('0x1a')],{'showHidden':![],'depth':null}));}})[_0x0981('0x19')](function(_0x3ae407){return logger['error'](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x58'),util['inspect'](_0x3ae407,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),'csc',_0x0981('0x69'));}break;case _0x0981('0x6a'):if(_0x2dbc31[_0x0981('0x5a')]){var _0x1df485={'method':_0x0981('0x3c'),'uri':_0x0981('0x6b'),'headers':{'Authorization':_0x2dbc31['apiKey']},'body':{'content':_0x21870a[_0x0981('0xd')],'to':[_0x21870a[_0x0981('0x23')]],'from':_0x2dbc31[_0x0981('0x23')],'binary':![],'clientMessageId':_0x0981('0x6c'),'charset':_0x0981('0x6d')},'json':!![]};rp(_0x1df485)['then'](function(_0x4f742d){if(!_0x4f742d['error']){var _0x318d17={'messageId':_0x4f742d[_0x0981('0x24')][0x0][_0x0981('0x6e')]};if(!_0x2dbc31[_0x0981('0x3f')]){_0x318d17[_0x0981('0x39')]=!![];}return _0x3facd2['update'](_0x318d17);}else{return logger[_0x0981('0x1a')](_0x0981('0x2a'),'afterCreate',_0x0981('0x6a'),util[_0x0981('0x2c')](_0x4f742d[_0x0981('0x1a')],{'showHidden':![],'depth':null}));}})[_0x0981('0x19')](function(_0x31abcc){return logger['error'](_0x0981('0x2a'),'afterCreate',_0x0981('0x6a'),util['inspect'](_0x31abcc,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),'afterCreate',_0x0981('0x6a'),'Missing\x20parameters:\x20apiKey');}break;case _0x0981('0x6f'):if(_0x2dbc31[_0x0981('0x32')]&&_0x2dbc31[_0x0981('0x2f')]){var _0xa96776=util[_0x0981('0x42')](_0x0981('0x43'),_0x2dbc31[_0x0981('0x32')],_0x2dbc31['password']);var _0x2cb082={'method':_0x0981('0x3c'),'uri':_0x0981('0x70')+_0x2dbc31['accountId']+'/messages','body':{'to':[_0x21870a[_0x0981('0x23')]],'text':_0x21870a[_0x0981('0xd')],'from':_0x2dbc31[_0x0981('0x23')],'applicationId':_0x2dbc31[_0x0981('0x71')]},'headers':{'Authorization':util[_0x0981('0x42')]('Basic\x20%s',new Buffer(_0xa96776)[_0x0981('0x4f')](_0x0981('0x46')))},'json':!![]};rp(_0x2cb082)[_0x0981('0x17')](function(_0x4e269c){if(_0x4e269c['id']){var _0x1e47a3={'messageId':_0x4e269c['id']};return _0x3facd2[_0x0981('0x29')](_0x1e47a3);}else{logger[_0x0981('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','bandwidth',util['inspect'](_0x4e269c,{'showHidden':![],'depth':null}));}})['catch'](function(_0x39dc32){logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x6f'),util[_0x0981('0x2c')](_0x39dc32,{'showHidden':![],'depth':null}));});}else{logger[_0x0981('0x1a')](_0x0981('0x2a'),'afterCreate',_0x0981('0x6f'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x0981('0x72'):if(_0x2dbc31[_0x0981('0x5a')]){var _0x5fbcfd={};var _0x13f6cc={'method':_0x0981('0x3c'),'uri':_0x0981('0x73'),'headers':{'Authorization':_0x0981('0x74')+_0x2dbc31[_0x0981('0x5a')],'Content-Type':_0x0981('0x75')},'body':{'from':_0x2dbc31['phone'],'to':_0x21870a[_0x0981('0x23')],'text':_0x21870a[_0x0981('0xd')]},'json':!![]};return rp(_0x13f6cc)[_0x0981('0x17')](function(_0x48b95a){if(_0x48b95a[_0x0981('0x76')]==0xca){_0x5fbcfd[_0x0981('0x77')]=_0x48b95a;var _0x428d7c={'method':_0x0981('0x3c'),'uri':_0x0981('0x78'),'headers':{'Authorization':'Bearer\x20'+_0x2dbc31[_0x0981('0x5a')],'Content-Type':_0x0981('0x75')},'body':{'refid':_0x5fbcfd['message'][_0x0981('0x79')]},'json':!![]};return rp(_0x428d7c)[_0x0981('0x17')](function(_0x161e19){_0x5fbcfd[_0x0981('0x7a')]=_0x161e19;var _0x5ecf31={'messageId':_0x5fbcfd[_0x0981('0x77')]['refid'],'read':!![]};return _0x3facd2[_0x0981('0x29')](_0x5ecf31);});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x0981('0x2b'),_0x0981('0x72'),util[_0x0981('0x2c')](_0x48b95a,{'showHidden':![],'depth':null}));}})['catch'](function(_0x1c429d){return logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),_0x0981('0x72'),util[_0x0981('0x2c')](_0x1c429d,{'showHidden':![],'depth':null}));});}else{return logger[_0x0981('0x1a')](_0x0981('0x2a'),_0x0981('0x2b'),'intelepeer',_0x0981('0x7b'));}break;}}})['finally'](function(){_0x364aca();});}else{_0x364aca();}}},'charset':_0x0981('0x7c'),'collate':_0x0981('0x7d')});};
\ No newline at end of file
index 83a0027..5e075d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','defaults','redis','localhost','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateSmsMessage','SmsMessage','create','options','raw','catch','lodash','moment','randomstring','ioredis'];(function(_0x2a9e6f,_0x216211){var _0x1159d1=function(_0x86dcc0){while(--_0x86dcc0){_0x2a9e6f['push'](_0x2a9e6f['shift']());}};_0x1159d1(++_0x216211);}(_0xddf0,0x1cc));var _0x0ddf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xddf0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0ddf('0x0'));var util=require('util');var moment=require(_0x0ddf('0x1'));var BPromise=require('bluebird');var rs=require(_0x0ddf('0x2'));var fs=require('fs');var Redis=require(_0x0ddf('0x3'));var db=require(_0x0ddf('0x4'))['db'];var utils=require(_0x0ddf('0x5'));var logger=require(_0x0ddf('0x6'))(_0x0ddf('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0ddf('0x8')][_0x0ddf('0x9')]({'port':0x232a});config['redis']=_[_0x0ddf('0xa')](config[_0x0ddf('0xb')],{'host':_0x0ddf('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0ddf('0xb')]));require('./smsMessage.socket')['register'](socket);function respondWithRpcPromise(_0x56cf60,_0x4645d9,_0xf417f6){return new BPromise(function(_0x283382,_0x552de2){return client['request'](_0x56cf60,_0xf417f6)[_0x0ddf('0xd')](function(_0xd18d7a){logger[_0x0ddf('0xe')](_0x0ddf('0xf'),_0x4645d9,_0x0ddf('0x10'));logger[_0x0ddf('0x11')](_0x0ddf('0x12'),_0x4645d9,_0x0ddf('0x10'),JSON[_0x0ddf('0x13')](_0xd18d7a));if(_0xd18d7a[_0x0ddf('0x14')]){if(_0xd18d7a[_0x0ddf('0x14')][_0x0ddf('0x15')]===0x1f4){logger[_0x0ddf('0x14')](_0x0ddf('0xf'),_0x4645d9,_0xd18d7a['error']['message']);return _0x552de2(_0xd18d7a[_0x0ddf('0x14')]['message']);}logger[_0x0ddf('0x14')](_0x0ddf('0xf'),_0x4645d9,_0xd18d7a[_0x0ddf('0x14')][_0x0ddf('0x16')]);return _0x283382(_0xd18d7a[_0x0ddf('0x14')][_0x0ddf('0x16')]);}else{logger[_0x0ddf('0xe')](_0x0ddf('0xf'),_0x4645d9,_0x0ddf('0x10'));_0x283382(_0xd18d7a['result'][_0x0ddf('0x16')]);}})['catch'](function(_0x20c2c4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x4645d9,_0x20c2c4);_0x552de2(_0x20c2c4);});});}exports[_0x0ddf('0x17')]=function(_0x35ccc4){var _0xeb746a=this;return new Promise(function(_0x117f5a,_0xf1460e){return db[_0x0ddf('0x18')][_0x0ddf('0x19')](_0x35ccc4['body'],{'raw':_0x35ccc4[_0x0ddf('0x1a')]?_0x35ccc4[_0x0ddf('0x1a')][_0x0ddf('0x1b')]===undefined?!![]:![]:!![]})[_0x0ddf('0xd')](function(_0x3a6b02){logger[_0x0ddf('0xe')](_0x0ddf('0x17'),_0x35ccc4);logger['debug']('CreateSmsMessage',_0x35ccc4,JSON['stringify'](_0x3a6b02));_0x117f5a(_0x3a6b02);})[_0x0ddf('0x1c')](function(_0x1b90d0){logger[_0x0ddf('0x14')](_0x0ddf('0x17'),_0x1b90d0['message'],_0x35ccc4);_0xf1460e(_0xeb746a['error'](0x1f4,_0x1b90d0[_0x0ddf('0x16')]));});});};
\ No newline at end of file
+var _0x4193=['stringify','error','code','message','result','catch','CreateSmsMessage','SmsMessage','create','options','raw','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s'];(function(_0x541fc8,_0x2af9f9){var _0x27fd85=function(_0x537cdf){while(--_0x537cdf){_0x541fc8['push'](_0x541fc8['shift']());}};_0x27fd85(++_0x2af9f9);}(_0x4193,0x16a));var _0x3419=function(_0xd1512,_0x582bb6){_0xd1512=_0xd1512-0x0;var _0x1a2ad0=_0x4193[_0xd1512];return _0x1a2ad0;};'use strict';var _=require(_0x3419('0x0'));var util=require(_0x3419('0x1'));var moment=require(_0x3419('0x2'));var BPromise=require(_0x3419('0x3'));var rs=require(_0x3419('0x4'));var fs=require('fs');var Redis=require(_0x3419('0x5'));var db=require(_0x3419('0x6'))['db'];var utils=require(_0x3419('0x7'));var logger=require(_0x3419('0x8'))(_0x3419('0x9'));var config=require(_0x3419('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x3419('0xb')][_0x3419('0xc')]({'port':0x232a});config[_0x3419('0xd')]=_[_0x3419('0xe')](config[_0x3419('0xd')],{'host':_0x3419('0xf'),'port':0x18eb});var socket=require(_0x3419('0x10'))(new Redis(config[_0x3419('0xd')]));require('./smsMessage.socket')['register'](socket);function respondWithRpcPromise(_0x4828a7,_0x4a86c2,_0x27cc02){return new BPromise(function(_0x2de3fc,_0x37149a){return client[_0x3419('0x11')](_0x4828a7,_0x27cc02)['then'](function(_0x3ef5cb){logger[_0x3419('0x12')](_0x3419('0x13'),_0x4a86c2,_0x3419('0x14'));logger[_0x3419('0x15')](_0x3419('0x16'),_0x4a86c2,_0x3419('0x14'),JSON[_0x3419('0x17')](_0x3ef5cb));if(_0x3ef5cb[_0x3419('0x18')]){if(_0x3ef5cb[_0x3419('0x18')][_0x3419('0x19')]===0x1f4){logger[_0x3419('0x18')]('SmsMessage,\x20%s,\x20%s',_0x4a86c2,_0x3ef5cb[_0x3419('0x18')][_0x3419('0x1a')]);return _0x37149a(_0x3ef5cb['error']['message']);}logger['error'](_0x3419('0x13'),_0x4a86c2,_0x3ef5cb[_0x3419('0x18')][_0x3419('0x1a')]);return _0x2de3fc(_0x3ef5cb['error'][_0x3419('0x1a')]);}else{logger[_0x3419('0x12')](_0x3419('0x13'),_0x4a86c2,'request\x20sent');_0x2de3fc(_0x3ef5cb[_0x3419('0x1b')][_0x3419('0x1a')]);}})[_0x3419('0x1c')](function(_0x2ec28a){logger[_0x3419('0x18')](_0x3419('0x13'),_0x4a86c2,_0x2ec28a);_0x37149a(_0x2ec28a);});});}exports[_0x3419('0x1d')]=function(_0x4f69e4){var _0x305575=this;return new Promise(function(_0x4fbfa9,_0x214afc){return db[_0x3419('0x1e')][_0x3419('0x1f')](_0x4f69e4['body'],{'raw':_0x4f69e4[_0x3419('0x20')]?_0x4f69e4['options'][_0x3419('0x21')]===undefined?!![]:![]:!![]})[_0x3419('0x22')](function(_0x2255c2){logger[_0x3419('0x12')]('CreateSmsMessage',_0x4f69e4);logger[_0x3419('0x15')]('CreateSmsMessage',_0x4f69e4,JSON['stringify'](_0x2255c2));_0x4fbfa9(_0x2255c2);})[_0x3419('0x1c')](function(_0x115bfd){logger[_0x3419('0x18')](_0x3419('0x1d'),_0x115bfd['message'],_0x4f69e4);_0x214afc(_0x305575[_0x3419('0x18')](0x1f4,_0x115bfd[_0x3419('0x1a')]));});});};
\ No newline at end of file
index 8fa76e8..4cf871c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9353=['./smsMessage.events','remove','update','emit','register','length'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x9353,0x168));var _0x3935=function(_0x1bc3b8,_0x362f77){_0x1bc3b8=_0x1bc3b8-0x0;var _0x161527=_0x9353[_0x1bc3b8];return _0x161527;};'use strict';var SmsMessageEvents=require(_0x3935('0x0'));var events=['save',_0x3935('0x1'),_0x3935('0x2')];function createListener(_0x322baa,_0x2a8ba9){return function(_0x3d3f8b){_0x2a8ba9[_0x3935('0x3')](_0x322baa,_0x3d3f8b);};}function removeListener(_0x41b225,_0x1d454f){return function(){SmsMessageEvents['removeListener'](_0x41b225,_0x1d454f);};}exports[_0x3935('0x4')]=function(_0xe3d19b){for(var _0x2cb822=0x0,_0x26fc4a=events[_0x3935('0x5')];_0x2cb822<_0x26fc4a;_0x2cb822++){var _0x2a14b4=events[_0x2cb822];var _0x421d2f=createListener('smsMessage:'+_0x2a14b4,_0xe3d19b);SmsMessageEvents['on'](_0x2a14b4,_0x421d2f);}};
\ No newline at end of file
+var _0x39bf=['register','smsMessage:','./smsMessage.events','save','remove','update','emit','removeListener'];(function(_0x3207aa,_0xe86a72){var _0x51758f=function(_0x9ff790){while(--_0x9ff790){_0x3207aa['push'](_0x3207aa['shift']());}};_0x51758f(++_0xe86a72);}(_0x39bf,0x152));var _0xf39b=function(_0x2fca6e,_0x1c581b){_0x2fca6e=_0x2fca6e-0x0;var _0x1ef128=_0x39bf[_0x2fca6e];return _0x1ef128;};'use strict';var SmsMessageEvents=require(_0xf39b('0x0'));var events=[_0xf39b('0x1'),_0xf39b('0x2'),_0xf39b('0x3')];function createListener(_0x1b8f7d,_0x3d3fdc){return function(_0x1b2b0f){_0x3d3fdc[_0xf39b('0x4')](_0x1b8f7d,_0x1b2b0f);};}function removeListener(_0x1d22e1,_0x16edb3){return function(){SmsMessageEvents[_0xf39b('0x5')](_0x1d22e1,_0x16edb3);};}exports[_0xf39b('0x6')]=function(_0x2e36b5){for(var _0xe171f0=0x0,_0xe7a16a=events['length'];_0xe171f0<_0xe7a16a;_0xe171f0++){var _0x42a16e=events[_0xe171f0];var _0x355efa=createListener(_0xf39b('0x7')+_0x42a16e,_0x2e36b5);SmsMessageEvents['on'](_0x42a16e,_0x355efa);}};
\ No newline at end of file
index 383e1f3..1feae18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4f0=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','util','path'];(function(_0x18379e,_0x59b32f){var _0x123668=function(_0x2b6fad){while(--_0x2b6fad){_0x18379e['push'](_0x18379e['shift']());}};_0x123668(++_0x59b32f);}(_0xc4f0,0x72));var _0x0c4f=function(_0x55d803,_0x16012e){_0x55d803=_0x55d803-0x0;var _0x4fe507=_0xc4f0[_0x55d803];return _0x4fe507;};'use strict';var multer=require('multer');var util=require(_0x0c4f('0x0'));var path=require(_0x0c4f('0x1'));var timeout=require('connect-timeout');var express=require(_0x0c4f('0x2'));var router=express['Router']();var fs_extra=require(_0x0c4f('0x3'));var auth=require(_0x0c4f('0x4'));var interaction=require(_0x0c4f('0x5'));var config=require(_0x0c4f('0x6'));var controller=require(_0x0c4f('0x7'));router[_0x0c4f('0x8')]('/',auth[_0x0c4f('0x9')](),controller['index']);router[_0x0c4f('0x8')]('/describe',auth[_0x0c4f('0x9')](),controller[_0x0c4f('0xa')]);router['get'](_0x0c4f('0xb'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0xc')]);router['get'](_0x0c4f('0xd'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0xe')]);router[_0x0c4f('0x8')](_0x0c4f('0xf'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0x10')]);router[_0x0c4f('0x8')](_0x0c4f('0x11'),auth['isAuthenticated'](),controller[_0x0c4f('0x12')]);router[_0x0c4f('0x13')]('/',auth[_0x0c4f('0x9')](),controller[_0x0c4f('0x14')]);router[_0x0c4f('0x13')](_0x0c4f('0xf'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0x15')]);router[_0x0c4f('0x13')](_0x0c4f('0x11'),auth['isAuthenticated'](),controller[_0x0c4f('0x16')]);router[_0x0c4f('0x17')](_0x0c4f('0xb'),auth[_0x0c4f('0x9')](),controller['update']);router[_0x0c4f('0x18')](_0x0c4f('0xb'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0x19')]);router['delete'](_0x0c4f('0xf'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0x1a')]);router[_0x0c4f('0x18')](_0x0c4f('0x11'),auth[_0x0c4f('0x9')](),controller[_0x0c4f('0x1b')]);module[_0x0c4f('0x1c')]=router;
\ No newline at end of file
+var _0xcb15=['index','/describe','isAuthenticated','describe','/:id','/:id/members','/:id/teams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','../../components/auth/service','./smsQueue.controller','get'];(function(_0x20beae,_0x5eac6d){var _0xf5725=function(_0x926a3b){while(--_0x926a3b){_0x20beae['push'](_0x20beae['shift']());}};_0xf5725(++_0x5eac6d);}(_0xcb15,0x130));var _0x5cb1=function(_0x3303ac,_0x292054){_0x3303ac=_0x3303ac-0x0;var _0x406fb5=_0xcb15[_0x3303ac];return _0x406fb5;};'use strict';var multer=require(_0x5cb1('0x0'));var util=require(_0x5cb1('0x1'));var path=require('path');var timeout=require(_0x5cb1('0x2'));var express=require(_0x5cb1('0x3'));var router=express[_0x5cb1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5cb1('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5cb1('0x6'));router[_0x5cb1('0x7')]('/',auth['isAuthenticated'](),controller[_0x5cb1('0x8')]);router[_0x5cb1('0x7')](_0x5cb1('0x9'),auth[_0x5cb1('0xa')](),controller[_0x5cb1('0xb')]);router[_0x5cb1('0x7')](_0x5cb1('0xc'),auth[_0x5cb1('0xa')](),controller['show']);router[_0x5cb1('0x7')](_0x5cb1('0xd'),auth[_0x5cb1('0xa')](),controller['getMembers']);router['get'](_0x5cb1('0xe'),auth[_0x5cb1('0xa')](),controller['getTeams']);router['get']('/:id/users',auth[_0x5cb1('0xa')](),controller[_0x5cb1('0xf')]);router[_0x5cb1('0x10')]('/',auth[_0x5cb1('0xa')](),controller[_0x5cb1('0x11')]);router['post']('/:id/teams',auth[_0x5cb1('0xa')](),controller[_0x5cb1('0x12')]);router['post'](_0x5cb1('0x13'),auth[_0x5cb1('0xa')](),controller[_0x5cb1('0x14')]);router[_0x5cb1('0x15')](_0x5cb1('0xc'),auth[_0x5cb1('0xa')](),controller[_0x5cb1('0x16')]);router[_0x5cb1('0x17')]('/:id',auth[_0x5cb1('0xa')](),controller['destroy']);router[_0x5cb1('0x17')](_0x5cb1('0xe'),auth[_0x5cb1('0xa')](),controller[_0x5cb1('0x18')]);router[_0x5cb1('0x17')](_0x5cb1('0x13'),auth[_0x5cb1('0xa')](),controller[_0x5cb1('0x19')]);module['exports']=router;
\ No newline at end of file
index 8358188..7978de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1317=['STRING','name','ENUM','rrmemory','sequelize','exports'];(function(_0x2fff83,_0x29d5fe){var _0xa2a722=function(_0x18b6b0){while(--_0x18b6b0){_0x2fff83['push'](_0x2fff83['shift']());}};_0xa2a722(++_0x29d5fe);}(_0x1317,0xd6));var _0x7131=function(_0x31e0e8,_0x5437db){_0x31e0e8=_0x31e0e8-0x0;var _0x5b718e=_0x1317[_0x31e0e8];return _0x5b718e;};'use strict';var Sequelize=require(_0x7131('0x0'));module[_0x7131('0x1')]={'name':{'type':Sequelize[_0x7131('0x2')],'unique':_0x7131('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7131('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7131('0x4')](_0x7131('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0x2d40=['ENUM','rrmemory','beepall','roundrobin','sequelize','STRING','INTEGER'];(function(_0x55d910,_0x14a96e){var _0x57b9d1=function(_0x22bff3){while(--_0x22bff3){_0x55d910['push'](_0x55d910['shift']());}};_0x57b9d1(++_0x14a96e);}(_0x2d40,0x138));var _0x02d4=function(_0x44db0d,_0x200461){_0x44db0d=_0x44db0d-0x0;var _0xb05fb0=_0x2d40[_0x44db0d];return _0xb05fb0;};'use strict';var Sequelize=require(_0x02d4('0x0'));module['exports']={'name':{'type':Sequelize[_0x02d4('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x02d4('0x1')]},'timeout':{'type':Sequelize[_0x02d4('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x02d4('0x3')](_0x02d4('0x4'),_0x02d4('0x5'),_0x02d4('0x6'))}};
\ No newline at end of file
index 61937ae..de18741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9667=['mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','sendStatus','status','end','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','SmsQueues','UserProfileResource','error','stack','name','send','index','map','SmsQueue','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','merge','VIRTUAL','options','rows','catch','show','keys','includeAll','include','find','create','body','user','get','UserProfileSection','autoAssociation','params','describe','findOne','UserSmsQueue','order','sort','pick','SmsQueueId','filter','UserId','agent','smsPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','addTeams','ids','findAll','User','voicePause','interface','Agents','sequelize','each','findOrCreate','forEach','emit','userSmsQueue:save','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','includes','all','union','compact','transaction','removeTeams','isEmpty','addAgents','omit','removeAgents','isArray','userSmsQueue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0xfd9e4e,_0x287c72){var _0x148917=function(_0x88ca6){while(--_0x88ca6){_0xfd9e4e['push'](_0xfd9e4e['shift']());}};_0x148917(++_0x287c72);}(_0x9667,0x10c));var _0x7966=function(_0x1fa205,_0x13b61f){_0x1fa205=_0x1fa205-0x0;var _0x2a30b6=_0x9667[_0x1fa205];return _0x2a30b6;};'use strict';var emlformat=require(_0x7966('0x0'));var rimraf=require(_0x7966('0x1'));var zipdir=require(_0x7966('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7966('0x3'));var moment=require(_0x7966('0x4'));var BPromise=require(_0x7966('0x5'));var Mustache=require(_0x7966('0x6'));var util=require(_0x7966('0x7'));var path=require(_0x7966('0x8'));var sox=require(_0x7966('0x9'));var csv=require(_0x7966('0xa'));var ejs=require(_0x7966('0xb'));var fs=require('fs');var fs_extra=require(_0x7966('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7966('0xd'));var jsforce=require(_0x7966('0xe'));var deskjs=require(_0x7966('0xf'));var toCsv=require(_0x7966('0xa'));var querystring=require(_0x7966('0x10'));var Papa=require(_0x7966('0x11'));var Redis=require(_0x7966('0x12'));var authService=require(_0x7966('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7966('0x14'));var hardwareService=require(_0x7966('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x7966('0x16'));var config=require(_0x7966('0x17'));var licenseUtil=require(_0x7966('0x18'));var db=require(_0x7966('0x19'))['db'];config[_0x7966('0x1a')]=_[_0x7966('0x1b')](config['redis'],{'host':_0x7966('0x1c'),'port':0x18eb});var socket=require(_0x7966('0x1d'))(new Redis(config[_0x7966('0x1a')]));require(_0x7966('0x1e'))['register'](socket);function respondWithStatusCode(_0xfb84ca,_0x18f5c8){_0x18f5c8=_0x18f5c8||0xcc;return function(_0x4868fa){if(_0x4868fa){return _0xfb84ca[_0x7966('0x1f')](_0x18f5c8);}return _0xfb84ca[_0x7966('0x20')](_0x18f5c8)[_0x7966('0x21')]();};}function respondWithResult(_0xba4abe,_0x3bd976){_0x3bd976=_0x3bd976||0xc8;return function(_0x2687eb){if(_0x2687eb){return _0xba4abe['status'](_0x3bd976)['json'](_0x2687eb);}};}function respondWithFilteredResult(_0x301148,_0x55be69){return function(_0x5b556e){if(_0x5b556e){var _0x592715=typeof _0x55be69[_0x7966('0x22')]===_0x7966('0x23')&&typeof _0x55be69['limit']===_0x7966('0x23');var _0x45320d=_0x5b556e[_0x7966('0x24')];var _0x56cb21=_0x592715?0x0:_0x55be69[_0x7966('0x22')];var _0x41e6c4=_0x592715?_0x5b556e[_0x7966('0x24')]:_0x55be69[_0x7966('0x22')]+_0x55be69[_0x7966('0x25')];var _0x3169f1;if(_0x41e6c4>=_0x45320d){_0x41e6c4=_0x45320d;_0x3169f1=0xc8;}else{_0x3169f1=0xce;}_0x301148[_0x7966('0x20')](_0x3169f1);return _0x301148['set'](_0x7966('0x26'),_0x56cb21+'-'+_0x41e6c4+'/'+_0x45320d)['json'](_0x5b556e);}return null;};}function patchUpdates(_0x4394fb){return function(_0x4e9ef9){try{jsonpatch['apply'](_0x4e9ef9,_0x4394fb,!![]);}catch(_0x386598){return BPromise[_0x7966('0x27')](_0x386598);}return _0x4e9ef9[_0x7966('0x28')]();};}function saveUpdates(_0x19897e,_0x2739ca){return function(_0x36ca92){if(_0x36ca92){return _0x36ca92[_0x7966('0x29')](_0x19897e)[_0x7966('0x2a')](function(_0x782af){return _0x782af;});}return null;};}function removeEntity(_0x2948ca,_0x3f0c48){return function(_0x533605){if(_0x533605){return _0x533605[_0x7966('0x2b')]()[_0x7966('0x2a')](function(){var _0x35480f=_0x533605['get']({'plain':!![]});var _0xf978d0=_0x7966('0x2c');return db[_0x7966('0x2d')]['destroy']({'where':{'type':_0xf978d0,'resourceId':_0x35480f['id']}})[_0x7966('0x2a')](function(){return _0x533605;});})['then'](function(){_0x2948ca['status'](0xcc)[_0x7966('0x21')]();});}};}function handleEntityNotFound(_0x1e9553,_0x4c325b){return function(_0x15a691){if(!_0x15a691){_0x1e9553[_0x7966('0x1f')](0x194);}return _0x15a691;};}function handleError(_0xad453a,_0x56d397){_0x56d397=_0x56d397||0x1f4;return function(_0x4f7ad8){logger[_0x7966('0x2e')](_0x4f7ad8[_0x7966('0x2f')]);if(_0x4f7ad8['name']){delete _0x4f7ad8[_0x7966('0x30')];}_0xad453a['status'](_0x56d397)[_0x7966('0x31')](_0x4f7ad8);};}exports[_0x7966('0x32')]=function(_0x7af034,_0x571745){var _0x5b73fa={},_0x2cce13={},_0xe8227e={'count':0x0,'rows':[]};var _0xef21a6=_[_0x7966('0x33')](db[_0x7966('0x34')][_0x7966('0x35')],function(_0x5013c2){return{'name':_0x5013c2['fieldName'],'type':_0x5013c2['type'][_0x7966('0x36')]};});_0x2cce13[_0x7966('0x37')]=_[_0x7966('0x33')](_0xef21a6,_0x7966('0x30'));_0x2cce13['query']=_['keys'](_0x7af034[_0x7966('0x38')]);_0x2cce13[_0x7966('0x39')]=_[_0x7966('0x3a')](_0x2cce13[_0x7966('0x37')],_0x2cce13[_0x7966('0x38')]);_0x5b73fa[_0x7966('0x3b')]=_[_0x7966('0x3a')](_0x2cce13[_0x7966('0x37')],qs[_0x7966('0x3c')](_0x7af034[_0x7966('0x38')][_0x7966('0x3c')]));_0x5b73fa[_0x7966('0x3b')]=_0x5b73fa['attributes'][_0x7966('0x3d')]?_0x5b73fa['attributes']:_0x2cce13['model'];if(!_0x7af034[_0x7966('0x38')][_0x7966('0x3e')](_0x7966('0x3f'))){_0x5b73fa['limit']=qs['limit'](_0x7af034['query'][_0x7966('0x25')]);_0x5b73fa[_0x7966('0x22')]=qs['offset'](_0x7af034['query'][_0x7966('0x22')]);}_0x5b73fa['order']=qs['sort'](_0x7af034[_0x7966('0x38')]['sort']);_0x5b73fa[_0x7966('0x40')]=qs[_0x7966('0x39')](_['pick'](_0x7af034[_0x7966('0x38')],_0x2cce13['filters']),_0xef21a6);if(_0x7af034[_0x7966('0x38')]['filter']){_0x5b73fa[_0x7966('0x40')]=_[_0x7966('0x41')](_0x5b73fa[_0x7966('0x40')],{'$or':_[_0x7966('0x33')](_0xef21a6,function(_0x10b1a1){if(_0x10b1a1['type']!==_0x7966('0x42')){var _0x442666={};_0x442666[_0x10b1a1[_0x7966('0x30')]]={'$like':'%'+_0x7af034[_0x7966('0x38')]['filter']+'%'};return _0x442666;}})});}_0x5b73fa=_[_0x7966('0x41')]({},_0x5b73fa,_0x7af034[_0x7966('0x43')]);var _0x42afb3={'where':_0x5b73fa[_0x7966('0x40')]};return db[_0x7966('0x34')][_0x7966('0x24')](_0x42afb3)['then'](function(_0x18b665){_0xe8227e[_0x7966('0x24')]=_0x18b665;if(_0x7af034[_0x7966('0x38')]['includeAll']){_0x5b73fa['include']=[{'all':!![]}];}return db[_0x7966('0x34')]['findAll'](_0x5b73fa);})['then'](function(_0x234ac0){_0xe8227e[_0x7966('0x44')]=_0x234ac0;return _0xe8227e;})[_0x7966('0x2a')](respondWithFilteredResult(_0x571745,_0x5b73fa))[_0x7966('0x45')](handleError(_0x571745,null));};exports[_0x7966('0x46')]=function(_0x5775ef,_0x3e6121){var _0x35c7e2={'raw':!![],'where':{'id':_0x5775ef['params']['id']}},_0x5cd5f3={};_0x5cd5f3[_0x7966('0x37')]=_[_0x7966('0x47')](db[_0x7966('0x34')][_0x7966('0x35')]);_0x5cd5f3[_0x7966('0x38')]=_['keys'](_0x5775ef['query']);_0x5cd5f3[_0x7966('0x39')]=_[_0x7966('0x3a')](_0x5cd5f3[_0x7966('0x37')],_0x5cd5f3[_0x7966('0x38')]);_0x35c7e2[_0x7966('0x3b')]=_[_0x7966('0x3a')](_0x5cd5f3[_0x7966('0x37')],qs[_0x7966('0x3c')](_0x5775ef['query']['fields']));_0x35c7e2[_0x7966('0x3b')]=_0x35c7e2[_0x7966('0x3b')][_0x7966('0x3d')]?_0x35c7e2[_0x7966('0x3b')]:_0x5cd5f3['model'];if(_0x5775ef[_0x7966('0x38')][_0x7966('0x48')]){_0x35c7e2[_0x7966('0x49')]=[{'all':!![]}];}_0x35c7e2=_[_0x7966('0x41')]({},_0x35c7e2,_0x5775ef['options']);return db[_0x7966('0x34')][_0x7966('0x4a')](_0x35c7e2)['then'](handleEntityNotFound(_0x3e6121,null))['then'](respondWithResult(_0x3e6121,null))[_0x7966('0x45')](handleError(_0x3e6121,null));};exports['create']=function(_0x586510,_0x55fe10){return db['SmsQueue'][_0x7966('0x4b')](_0x586510[_0x7966('0x4c')],{})['then'](function(_0x33e142){var _0x4778c0=_0x586510[_0x7966('0x4d')][_0x7966('0x4e')]({'plain':!![]});if(!_0x4778c0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4778c0['role']===_0x7966('0x4d')){var _0x37aef0=_0x33e142['get']({'plain':!![]});var _0x1f53fd=_0x7966('0x2c');return db[_0x7966('0x4f')][_0x7966('0x4a')]({'where':{'name':_0x1f53fd,'userProfileId':_0x4778c0['userProfileId']},'raw':!![]})[_0x7966('0x2a')](function(_0x2ab88b){if(_0x2ab88b&&_0x2ab88b[_0x7966('0x50')]===0x0){return db[_0x7966('0x2d')][_0x7966('0x4b')]({'name':_0x37aef0[_0x7966('0x30')],'resourceId':_0x37aef0['id'],'type':_0x2ab88b[_0x7966('0x30')],'sectionId':_0x2ab88b['id']},{})[_0x7966('0x2a')](function(){return _0x33e142;});}else{return _0x33e142;}})[_0x7966('0x45')](function(_0x4c4758){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c4758);throw _0x4c4758;});}return _0x33e142;})[_0x7966('0x2a')](respondWithResult(_0x55fe10,0xc9))[_0x7966('0x45')](handleError(_0x55fe10,null));};exports[_0x7966('0x29')]=function(_0x4c96fb,_0xc94e65){if(_0x4c96fb['body']['id']){delete _0x4c96fb[_0x7966('0x4c')]['id'];}return db[_0x7966('0x34')][_0x7966('0x4a')]({'where':{'id':_0x4c96fb[_0x7966('0x51')]['id']}})[_0x7966('0x2a')](handleEntityNotFound(_0xc94e65,null))[_0x7966('0x2a')](saveUpdates(_0x4c96fb[_0x7966('0x4c')],null))[_0x7966('0x2a')](respondWithResult(_0xc94e65,null))[_0x7966('0x45')](handleError(_0xc94e65,null));};exports[_0x7966('0x2b')]=function(_0x20ac69,_0xe8e694){return db[_0x7966('0x34')][_0x7966('0x4a')]({'where':{'id':_0x20ac69[_0x7966('0x51')]['id']}})[_0x7966('0x2a')](handleEntityNotFound(_0xe8e694,null))['then'](removeEntity(_0xe8e694,null))[_0x7966('0x45')](handleError(_0xe8e694,null));};exports[_0x7966('0x52')]=function(_0x1d9c11,_0x30836e){return db[_0x7966('0x34')]['describe']()[_0x7966('0x2a')](respondWithResult(_0x30836e,null))['catch'](handleError(_0x30836e,null));};exports['getMembers']=function(_0x3e8703,_0xd084d4,_0x22aa62){var _0x22fa62={'raw':!![],'where':{}},_0x45b483={},_0x3298b4;return db[_0x7966('0x34')][_0x7966('0x53')]({'where':{'id':_0x3e8703[_0x7966('0x51')]['id']}})['then'](handleEntityNotFound(_0xd084d4,null))[_0x7966('0x2a')](function(_0x5480b3){if(_0x5480b3){_0x3298b4=_0x5480b3[_0x7966('0x4e')]({'plain':!![]});_0x45b483['model']=_[_0x7966('0x47')](db[_0x7966('0x54')][_0x7966('0x35')]);_0x45b483['query']=_['keys'](_0x3e8703['query']);_0x45b483[_0x7966('0x39')]=_[_0x7966('0x3a')](_0x45b483[_0x7966('0x37')],_0x45b483[_0x7966('0x38')]);_0x22fa62[_0x7966('0x3b')]=_[_0x7966('0x3a')](_0x45b483[_0x7966('0x37')],qs['fields'](_0x3e8703[_0x7966('0x38')][_0x7966('0x3c')]));_0x22fa62[_0x7966('0x3b')]=_0x22fa62['attributes']['length']?_0x22fa62['attributes']:_0x45b483[_0x7966('0x37')];if(!_0x3e8703['query'][_0x7966('0x3e')](_0x7966('0x3f'))){_0x22fa62[_0x7966('0x25')]=qs[_0x7966('0x25')](_0x3e8703[_0x7966('0x38')]['limit']);_0x22fa62[_0x7966('0x22')]=qs[_0x7966('0x22')](_0x3e8703[_0x7966('0x38')]['offset']);}_0x22fa62[_0x7966('0x55')]=qs[_0x7966('0x56')](_0x3e8703[_0x7966('0x38')][_0x7966('0x56')]);_0x22fa62[_0x7966('0x40')]=qs[_0x7966('0x39')](_[_0x7966('0x57')](_0x3e8703[_0x7966('0x38')],_0x45b483['filters']));_0x22fa62[_0x7966('0x40')][_0x7966('0x58')]=_0x5480b3['id'];if(_0x3e8703['query'][_0x7966('0x59')]){_0x22fa62['where']=_['merge'](_0x22fa62[_0x7966('0x40')],{'$or':_[_0x7966('0x33')](_0x22fa62[_0x7966('0x3b')],function(_0x8371b0){var _0x182150={};_0x182150[_0x8371b0]={'$like':'%'+_0x3e8703[_0x7966('0x38')][_0x7966('0x59')]+'%'};return _0x182150;})});}_0x22fa62=_[_0x7966('0x41')]({},_0x22fa62,_0x3e8703[_0x7966('0x43')]);return db['UserSmsQueue']['findAll'](_0x22fa62);}})[_0x7966('0x2a')](function(_0x3be0ac){if(_0x3be0ac){return db['User']['findAndCountAll']({'where':{'id':_['map'](_0x3be0ac,_0x7966('0x5a')),'role':_0x7966('0x5b')},'attributes':['id',_0x7966('0x30'),_0x7966('0x5c'),_0x7966('0x5d'),_0x7966('0x5e')]});}})[_0x7966('0x2a')](function(_0x48af33){if(_0x48af33){return{'count':_0x48af33[_0x7966('0x24')],'rows':_[_0x7966('0x33')](_0x48af33[_0x7966('0x44')],function(_0x34c32d){return{'membername':_0x34c32d[_0x7966('0x30')],'UserId':_0x34c32d['id'],'queue_name':_0x3298b4[_0x7966('0x30')],'SmsQueueId':_0x3298b4['id'],'interface':util['format'](_0x7966('0x5f'),_0x7966('0x60'),_0x34c32d['name']),'penalty':0x0,'paused':_0x34c32d['smsPause'],'createdAt':_0x34c32d[_0x7966('0x5e')],'updatedAt':_0x34c32d[_0x7966('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xd084d4,_0x22fa62))[_0x7966('0x45')](handleError(_0xd084d4,null));};exports[_0x7966('0x61')]=function(_0x5d17e6,_0x567e9f,_0x925aa9){var _0x38c6c7={};var _0x5f8cdd={};var _0x45d6eb;var _0x556c9d;return db[_0x7966('0x34')]['findOne']({'where':{'id':_0x5d17e6[_0x7966('0x51')]['id']}})['then'](handleEntityNotFound(_0x567e9f,null))[_0x7966('0x2a')](function(_0x27cc37){if(_0x27cc37){_0x45d6eb=_0x27cc37;_0x5f8cdd[_0x7966('0x37')]=_[_0x7966('0x47')](db[_0x7966('0x62')]['rawAttributes']);_0x5f8cdd[_0x7966('0x38')]=_[_0x7966('0x47')](_0x5d17e6[_0x7966('0x38')]);_0x5f8cdd[_0x7966('0x39')]=_['intersection'](_0x5f8cdd[_0x7966('0x37')],_0x5f8cdd['query']);_0x38c6c7[_0x7966('0x3b')]=_[_0x7966('0x3a')](_0x5f8cdd[_0x7966('0x37')],qs[_0x7966('0x3c')](_0x5d17e6[_0x7966('0x38')][_0x7966('0x3c')]));_0x38c6c7[_0x7966('0x3b')]=_0x38c6c7[_0x7966('0x3b')][_0x7966('0x3d')]?_0x38c6c7['attributes']:_0x5f8cdd['model'];_0x38c6c7[_0x7966('0x55')]=qs[_0x7966('0x56')](_0x5d17e6['query'][_0x7966('0x56')]);_0x38c6c7['where']=qs[_0x7966('0x39')](_[_0x7966('0x57')](_0x5d17e6[_0x7966('0x38')],_0x5f8cdd[_0x7966('0x39')]));if(_0x5d17e6[_0x7966('0x38')][_0x7966('0x59')]){_0x38c6c7[_0x7966('0x40')]=_[_0x7966('0x41')](_0x38c6c7[_0x7966('0x40')],{'$or':_[_0x7966('0x33')](_0x38c6c7[_0x7966('0x3b')],function(_0x2f49d7){var _0x397012={};_0x397012[_0x2f49d7]={'$like':'%'+_0x5d17e6['query']['filter']+'%'};return _0x397012;})});}_0x38c6c7=_['merge']({},_0x38c6c7,_0x5d17e6[_0x7966('0x43')]);return _0x45d6eb['getTeams'](_0x38c6c7);}})['then'](function(_0x221020){if(_0x221020){_0x556c9d=_0x221020[_0x7966('0x3d')];if(!_0x5d17e6[_0x7966('0x38')][_0x7966('0x3e')](_0x7966('0x3f'))){_0x38c6c7[_0x7966('0x25')]=qs[_0x7966('0x25')](_0x5d17e6[_0x7966('0x38')]['limit']);_0x38c6c7[_0x7966('0x22')]=qs['offset'](_0x5d17e6[_0x7966('0x38')][_0x7966('0x22')]);}return _0x45d6eb['getTeams'](_0x38c6c7);}})[_0x7966('0x2a')](function(_0x2339e8){if(_0x2339e8){return _0x2339e8?{'count':_0x556c9d,'rows':_0x2339e8}:null;}})[_0x7966('0x2a')](respondWithResult(_0x567e9f,null))['catch'](handleError(_0x567e9f,null));};exports[_0x7966('0x63')]=function(_0xfc747d,_0x5e22a2,_0x4a1d2a){var _0x467901=_0xfc747d[_0x7966('0x4c')][_0x7966('0x64')];return db[_0x7966('0x62')][_0x7966('0x65')]({'where':{'id':_0x467901},'attributes':['id'],'include':[{'model':db[_0x7966('0x66')],'as':'Agents','attributes':['id',_0x7966('0x30'),'online',_0x7966('0x67'),_0x7966('0x68')],'raw':!![]}]})[_0x7966('0x2a')](function(_0x51d8d9){if(_0x51d8d9){var _0x166bf4=_['flatMap'](_0x51d8d9,function(_0x2aacb8){var _0x5f0f5b=_0x2aacb8[_0x7966('0x4e')]({'plain':!![]});return _0x5f0f5b[_0x7966('0x69')];});return db[_0x7966('0x34')][_0x7966('0x4a')]({'where':{'id':_0xfc747d[_0x7966('0x51')]['id']}})[_0x7966('0x2a')](function(_0x170d27){return db[_0x7966('0x6a')]['transaction'](function(_0x4f347c){return _0x170d27[_0x7966('0x63')](_0x467901,{'transaction':_0x4f347c})['then'](function(){return BPromise[_0x7966('0x6b')](_0x166bf4,function(_0x25851d){return db[_0x7966('0x54')][_0x7966('0x6c')]({'where':{'UserId':_0x25851d['id'],'SmsQueueId':_0xfc747d[_0x7966('0x51')]['id']},'transaction':_0x4f347c});});})[_0x7966('0x2a')](function(){_0x166bf4[_0x7966('0x6d')](function(_0x3ff82f){socket[_0x7966('0x6e')](_0x7966('0x6f'),{'UserId':_0x3ff82f['id'],'SmsQueueId':_0x170d27['id']});});});});});}})[_0x7966('0x2a')](respondWithStatusCode(_0x5e22a2,null))['catch'](handleError(_0x5e22a2,null));};exports['removeTeams']=function(_0x454c50,_0x1cae14,_0x50beae){return db[_0x7966('0x62')][_0x7966('0x65')]({'where':{'id':_0x454c50[_0x7966('0x38')][_0x7966('0x64')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7966('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1cae14,null))['then'](function(_0x11d894){var _0x4cecc7=_[_0x7966('0x33')](_0x11d894,'id');var _0x40eea6=[];var _0x383ec4=[];var _0x526ba8=squel[_0x7966('0x70')]();_0x526ba8[_0x7966('0x71')](_0x7966('0x72'))[_0x7966('0x73')]('team_has_sms_queues','tq')['join'](_0x7966('0x74'),'ut',_0x7966('0x75'))[_0x7966('0x40')](_0x7966('0x76'),_0x454c50[_0x7966('0x51')]['id']);for(var _0x32beda=0x0;_0x32beda<_0x11d894[_0x7966('0x3d')];_0x32beda+=0x1){let _0x4b89b6=_0x11d894[_0x32beda];for(var _0x9ce31b=0x0;_0x9ce31b<_0x4b89b6[_0x7966('0x69')][_0x7966('0x3d')];_0x9ce31b+=0x1){let _0x348f65=_0x4b89b6[_0x7966('0x69')][_0x9ce31b];var _0x503ea1=_0x526ba8['clone']();_0x503ea1[_0x7966('0x40')](_0x7966('0x77'),_0x348f65['id']);_0x383ec4['push'](db[_0x7966('0x6a')][_0x7966('0x38')](_0x503ea1[_0x7966('0x78')](),{'type':db[_0x7966('0x6a')][_0x7966('0x79')][_0x7966('0x7a')]})[_0x7966('0x2a')](function(_0x3a4c25){if(_0x3a4c25[_0x7966('0x3d')]===0x1){return _0x348f65['id'];}else{var _0x1f0bc8=_[_0x7966('0x7b')](_[_0x7966('0x33')](_0x3a4c25,'TeamId'),function(_0x3c2768){return _[_0x7966('0x7c')](_0x4cecc7,_0x3c2768);});if(_0x1f0bc8){return _0x348f65['id'];}}}));}}return BPromise[_0x7966('0x7d')](_0x383ec4)[_0x7966('0x2a')](function(_0x113a3b){_0x40eea6=_(_0x40eea6)[_0x7966('0x7e')](_0x113a3b)[_0x7966('0x7f')]()['value']();return db[_0x7966('0x34')]['find']({'where':{'id':_0x454c50[_0x7966('0x51')]['id']}})[_0x7966('0x2a')](function(_0xdc3e45){return db[_0x7966('0x6a')][_0x7966('0x80')](function(_0x1f12a5){return _0xdc3e45[_0x7966('0x81')](_0x454c50[_0x7966('0x38')][_0x7966('0x64')],{'transaction':_0x1f12a5})['then'](function(){if(!_[_0x7966('0x82')](_0x40eea6)){return _0xdc3e45['removeAgents'](_0x40eea6,{'transaction':_0x1f12a5});}})[_0x7966('0x2a')](function(){_0x40eea6[_0x7966('0x6d')](function(_0x5b51bd){socket['emit']('userSmsQueue:remove',{'UserId':_0x5b51bd,'SmsQueueId':_0xdc3e45['id']});});});});});});})[_0x7966('0x2a')](respondWithStatusCode(_0x1cae14,null))[_0x7966('0x45')](handleError(_0x1cae14,null));};exports[_0x7966('0x83')]=function(_0x337228,_0x39b9fd,_0x2cdc56){return db[_0x7966('0x34')]['find']({'where':{'id':_0x337228[_0x7966('0x51')]['id']}})[_0x7966('0x2a')](handleEntityNotFound(_0x39b9fd,null))['then'](function(_0x48a73e){if(_0x48a73e){return _0x48a73e[_0x7966('0x83')](_0x337228['body']['ids'],_[_0x7966('0x84')](_0x337228[_0x7966('0x4c')],[_0x7966('0x64'),'id'])||{})['spread'](function(_0x416e33){for(var _0xebe6f4=0x0;_0xebe6f4<_0x337228['body'][_0x7966('0x64')][_0x7966('0x3d')];_0xebe6f4+=0x1){socket[_0x7966('0x6e')](_0x7966('0x6f'),{'UserId':Number(_0x337228[_0x7966('0x4c')]['ids'][_0xebe6f4]),'SmsQueueId':Number(_0x337228[_0x7966('0x51')]['id'])});}return _0x416e33;});}})[_0x7966('0x2a')](respondWithResult(_0x39b9fd,null))[_0x7966('0x45')](handleError(_0x39b9fd,null));};exports[_0x7966('0x85')]=function(_0x54caad,_0xa42e22,_0x2095d2){return db[_0x7966('0x34')][_0x7966('0x4a')]({'where':{'id':_0x54caad[_0x7966('0x51')]['id']}})[_0x7966('0x2a')](handleEntityNotFound(_0xa42e22,null))[_0x7966('0x2a')](function(_0x5c075a){if(_0x5c075a){return _0x5c075a[_0x7966('0x85')](_0x54caad[_0x7966('0x38')][_0x7966('0x64')])[_0x7966('0x2a')](function(){if(_[_0x7966('0x86')](_0x54caad[_0x7966('0x38')][_0x7966('0x64')])){for(var _0x1f23d2=0x0;_0x1f23d2<_0x54caad['query'][_0x7966('0x64')][_0x7966('0x3d')];_0x1f23d2+=0x1){socket['emit'](_0x7966('0x87'),{'UserId':Number(_0x54caad['query'][_0x7966('0x64')][_0x1f23d2]),'SmsQueueId':Number(_0x54caad['params']['id'])});}}else{socket[_0x7966('0x6e')](_0x7966('0x87'),{'UserId':Number(_0x54caad[_0x7966('0x38')][_0x7966('0x64')]),'SmsQueueId':Number(_0x54caad[_0x7966('0x51')]['id'])});}});}})[_0x7966('0x2a')](respondWithStatusCode(_0xa42e22,null))['catch'](handleError(_0xa42e22,null));};exports['getAgents']=function(_0x11cb2c,_0x461bd9,_0x2fea63){var _0x35af6a={};var _0x1d4e7d={};var _0x525ea7;var _0x39563d;return db[_0x7966('0x34')][_0x7966('0x53')]({'where':{'id':_0x11cb2c[_0x7966('0x51')]['id']}})['then'](handleEntityNotFound(_0x461bd9,null))[_0x7966('0x2a')](function(_0x500948){if(_0x500948){_0x525ea7=_0x500948;_0x1d4e7d[_0x7966('0x37')]=_['keys'](db['User'][_0x7966('0x35')]);_0x1d4e7d['query']=_[_0x7966('0x47')](_0x11cb2c[_0x7966('0x38')]);_0x1d4e7d[_0x7966('0x39')]=_[_0x7966('0x3a')](_0x1d4e7d[_0x7966('0x37')],_0x1d4e7d[_0x7966('0x38')]);_0x35af6a['attributes']=_[_0x7966('0x3a')](_0x1d4e7d['model'],qs[_0x7966('0x3c')](_0x11cb2c[_0x7966('0x38')][_0x7966('0x3c')]));_0x35af6a[_0x7966('0x3b')]=_0x35af6a['attributes'][_0x7966('0x3d')]?_0x35af6a[_0x7966('0x3b')]:_0x1d4e7d[_0x7966('0x37')];_0x35af6a[_0x7966('0x55')]=qs[_0x7966('0x56')](_0x11cb2c[_0x7966('0x38')][_0x7966('0x56')]);_0x35af6a[_0x7966('0x40')]=qs['filters'](_[_0x7966('0x57')](_0x11cb2c[_0x7966('0x38')],_0x1d4e7d['filters']));if(_0x11cb2c[_0x7966('0x38')]['filter']){_0x35af6a[_0x7966('0x40')]=_[_0x7966('0x41')](_0x35af6a[_0x7966('0x40')],{'$or':_[_0x7966('0x33')](_0x35af6a[_0x7966('0x3b')],function(_0x1f5dc0){var _0x4af56b={};_0x4af56b[_0x1f5dc0]={'$like':'%'+_0x11cb2c[_0x7966('0x38')]['filter']+'%'};return _0x4af56b;})});}_0x35af6a=_[_0x7966('0x41')]({},_0x35af6a,_0x11cb2c['options']);return _0x525ea7[_0x7966('0x88')](_0x35af6a);}})[_0x7966('0x2a')](function(_0x25e175){if(_0x25e175){_0x39563d=_0x25e175[_0x7966('0x3d')];if(!_0x11cb2c[_0x7966('0x38')][_0x7966('0x3e')](_0x7966('0x3f'))){_0x35af6a['limit']=qs[_0x7966('0x25')](_0x11cb2c['query'][_0x7966('0x25')]);_0x35af6a[_0x7966('0x22')]=qs['offset'](_0x11cb2c['query'][_0x7966('0x22')]);}return _0x525ea7[_0x7966('0x88')](_0x35af6a);}})[_0x7966('0x2a')](function(_0x213f5e){if(_0x213f5e){return _0x213f5e?{'count':_0x39563d,'rows':_0x213f5e}:null;}})[_0x7966('0x2a')](respondWithResult(_0x461bd9,null))[_0x7966('0x45')](handleError(_0x461bd9,null));};
\ No newline at end of file
+var _0xf8fb=['count','limit','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','index','map','SmsQueue','rawAttributes','fieldName','type','key','query','keys','model','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','merge','options','findAll','rows','catch','params','includeAll','create','body','user','role','SmsQueues','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserSmsQueue','length','SmsQueueId','filter','User','findAndCountAll','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP','Team','addTeams','ids','online','voicePause','interface','flatMap','sequelize','transaction','each','userSmsQueue:save','Agents','field','tq.TeamId','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','compact','value','removeTeams','isEmpty','forEach','emit','userSmsQueue:remove','addAgents','omit','spread','removeAgents','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined'];(function(_0x53dbf7,_0x4953cc){var _0x543510=function(_0x40eecf){while(--_0x40eecf){_0x53dbf7['push'](_0x53dbf7['shift']());}};_0x543510(++_0x4953cc);}(_0xf8fb,0x184));var _0xbf8f=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xf8fb[_0x3ab51d];return _0x29a04e;};'use strict';var emlformat=require(_0xbf8f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbf8f('0x1'));var jsonpatch=require(_0xbf8f('0x2'));var rp=require(_0xbf8f('0x3'));var moment=require(_0xbf8f('0x4'));var BPromise=require(_0xbf8f('0x5'));var Mustache=require('mustache');var util=require(_0xbf8f('0x6'));var path=require(_0xbf8f('0x7'));var sox=require(_0xbf8f('0x8'));var csv=require(_0xbf8f('0x9'));var ejs=require(_0xbf8f('0xa'));var fs=require('fs');var fs_extra=require(_0xbf8f('0xb'));var _=require(_0xbf8f('0xc'));var squel=require('squel');var crypto=require(_0xbf8f('0xd'));var jsforce=require(_0xbf8f('0xe'));var deskjs=require(_0xbf8f('0xf'));var toCsv=require(_0xbf8f('0x9'));var querystring=require(_0xbf8f('0x10'));var Papa=require(_0xbf8f('0x11'));var Redis=require(_0xbf8f('0x12'));var authService=require(_0xbf8f('0x13'));var qs=require(_0xbf8f('0x14'));var as=require(_0xbf8f('0x15'));var hardwareService=require(_0xbf8f('0x16'));var logger=require(_0xbf8f('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xbf8f('0x18'));var licenseUtil=require(_0xbf8f('0x19'));var db=require(_0xbf8f('0x1a'))['db'];config[_0xbf8f('0x1b')]=_[_0xbf8f('0x1c')](config['redis'],{'host':_0xbf8f('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbf8f('0x1b')]));require(_0xbf8f('0x1e'))[_0xbf8f('0x1f')](socket);function respondWithStatusCode(_0x7ec369,_0x38d770){_0x38d770=_0x38d770||0xcc;return function(_0x1f6e44){if(_0x1f6e44){return _0x7ec369[_0xbf8f('0x20')](_0x38d770);}return _0x7ec369[_0xbf8f('0x21')](_0x38d770)[_0xbf8f('0x22')]();};}function respondWithResult(_0x27d2fd,_0x4d7829){_0x4d7829=_0x4d7829||0xc8;return function(_0x2c37d1){if(_0x2c37d1){return _0x27d2fd[_0xbf8f('0x21')](_0x4d7829)[_0xbf8f('0x23')](_0x2c37d1);}};}function respondWithFilteredResult(_0x46f5ac,_0x4f2c62){return function(_0x1fbe1e){if(_0x1fbe1e){var _0x59e152=typeof _0x4f2c62[_0xbf8f('0x24')]===_0xbf8f('0x25')&&typeof _0x4f2c62['limit']===_0xbf8f('0x25');var _0xa91e60=_0x1fbe1e[_0xbf8f('0x26')];var _0x8e0cfa=_0x59e152?0x0:_0x4f2c62['offset'];var _0x421a6c=_0x59e152?_0x1fbe1e[_0xbf8f('0x26')]:_0x4f2c62[_0xbf8f('0x24')]+_0x4f2c62[_0xbf8f('0x27')];var _0x12ad97;if(_0x421a6c>=_0xa91e60){_0x421a6c=_0xa91e60;_0x12ad97=0xc8;}else{_0x12ad97=0xce;}_0x46f5ac[_0xbf8f('0x21')](_0x12ad97);return _0x46f5ac['set'](_0xbf8f('0x28'),_0x8e0cfa+'-'+_0x421a6c+'/'+_0xa91e60)[_0xbf8f('0x23')](_0x1fbe1e);}return null;};}function patchUpdates(_0x8f79c0){return function(_0x4b1962){try{jsonpatch[_0xbf8f('0x29')](_0x4b1962,_0x8f79c0,!![]);}catch(_0x4ddbdd){return BPromise[_0xbf8f('0x2a')](_0x4ddbdd);}return _0x4b1962[_0xbf8f('0x2b')]();};}function saveUpdates(_0x3b1f35,_0x594ce7){return function(_0x35e4da){if(_0x35e4da){return _0x35e4da['update'](_0x3b1f35)[_0xbf8f('0x2c')](function(_0x1f676f){return _0x1f676f;});}return null;};}function removeEntity(_0x487ee8,_0x35ce5d){return function(_0xaf06ec){if(_0xaf06ec){return _0xaf06ec[_0xbf8f('0x2d')]()[_0xbf8f('0x2c')](function(){var _0x430847=_0xaf06ec[_0xbf8f('0x2e')]({'plain':!![]});var _0x375c18='SmsQueues';return db[_0xbf8f('0x2f')][_0xbf8f('0x2d')]({'where':{'type':_0x375c18,'resourceId':_0x430847['id']}})[_0xbf8f('0x2c')](function(){return _0xaf06ec;});})[_0xbf8f('0x2c')](function(){_0x487ee8['status'](0xcc)[_0xbf8f('0x22')]();});}};}function handleEntityNotFound(_0x464e6a,_0x28202c){return function(_0x1b692c){if(!_0x1b692c){_0x464e6a[_0xbf8f('0x20')](0x194);}return _0x1b692c;};}function handleError(_0x229771,_0x966eb0){_0x966eb0=_0x966eb0||0x1f4;return function(_0x20eb93){logger[_0xbf8f('0x30')](_0x20eb93[_0xbf8f('0x31')]);if(_0x20eb93[_0xbf8f('0x32')]){delete _0x20eb93[_0xbf8f('0x32')];}_0x229771[_0xbf8f('0x21')](_0x966eb0)['send'](_0x20eb93);};}exports[_0xbf8f('0x33')]=function(_0x259128,_0x8e4890){var _0x414fa3={},_0xf3db44={},_0x1e05d3={'count':0x0,'rows':[]};var _0x351ed1=_[_0xbf8f('0x34')](db[_0xbf8f('0x35')][_0xbf8f('0x36')],function(_0x1e5984){return{'name':_0x1e5984[_0xbf8f('0x37')],'type':_0x1e5984[_0xbf8f('0x38')][_0xbf8f('0x39')]};});_0xf3db44['model']=_[_0xbf8f('0x34')](_0x351ed1,_0xbf8f('0x32'));_0xf3db44[_0xbf8f('0x3a')]=_[_0xbf8f('0x3b')](_0x259128[_0xbf8f('0x3a')]);_0xf3db44['filters']=_['intersection'](_0xf3db44[_0xbf8f('0x3c')],_0xf3db44[_0xbf8f('0x3a')]);_0x414fa3['attributes']=_[_0xbf8f('0x3d')](_0xf3db44[_0xbf8f('0x3c')],qs[_0xbf8f('0x3e')](_0x259128[_0xbf8f('0x3a')]['fields']));_0x414fa3['attributes']=_0x414fa3['attributes']['length']?_0x414fa3[_0xbf8f('0x3f')]:_0xf3db44[_0xbf8f('0x3c')];if(!_0x259128[_0xbf8f('0x3a')][_0xbf8f('0x40')](_0xbf8f('0x41'))){_0x414fa3[_0xbf8f('0x27')]=qs[_0xbf8f('0x27')](_0x259128[_0xbf8f('0x3a')][_0xbf8f('0x27')]);_0x414fa3['offset']=qs[_0xbf8f('0x24')](_0x259128[_0xbf8f('0x3a')][_0xbf8f('0x24')]);}_0x414fa3[_0xbf8f('0x42')]=qs['sort'](_0x259128['query'][_0xbf8f('0x43')]);_0x414fa3[_0xbf8f('0x44')]=qs[_0xbf8f('0x45')](_[_0xbf8f('0x46')](_0x259128[_0xbf8f('0x3a')],_0xf3db44['filters']),_0x351ed1);if(_0x259128['query']['filter']){_0x414fa3['where']=_['merge'](_0x414fa3[_0xbf8f('0x44')],{'$or':_[_0xbf8f('0x34')](_0x351ed1,function(_0x2f11dc){if(_0x2f11dc[_0xbf8f('0x38')]!==_0xbf8f('0x47')){var _0x68c76a={};_0x68c76a[_0x2f11dc[_0xbf8f('0x32')]]={'$like':'%'+_0x259128[_0xbf8f('0x3a')]['filter']+'%'};return _0x68c76a;}})});}_0x414fa3=_[_0xbf8f('0x48')]({},_0x414fa3,_0x259128[_0xbf8f('0x49')]);var _0x38de91={'where':_0x414fa3[_0xbf8f('0x44')]};return db['SmsQueue'][_0xbf8f('0x26')](_0x38de91)[_0xbf8f('0x2c')](function(_0x3e112b){_0x1e05d3['count']=_0x3e112b;if(_0x259128[_0xbf8f('0x3a')]['includeAll']){_0x414fa3['include']=[{'all':!![]}];}return db[_0xbf8f('0x35')][_0xbf8f('0x4a')](_0x414fa3);})[_0xbf8f('0x2c')](function(_0xc687e7){_0x1e05d3[_0xbf8f('0x4b')]=_0xc687e7;return _0x1e05d3;})[_0xbf8f('0x2c')](respondWithFilteredResult(_0x8e4890,_0x414fa3))[_0xbf8f('0x4c')](handleError(_0x8e4890,null));};exports['show']=function(_0xdc690f,_0x22971a){var _0x3b7867={'raw':!![],'where':{'id':_0xdc690f[_0xbf8f('0x4d')]['id']}},_0x5ba6d9={};_0x5ba6d9['model']=_['keys'](db[_0xbf8f('0x35')][_0xbf8f('0x36')]);_0x5ba6d9['query']=_['keys'](_0xdc690f['query']);_0x5ba6d9[_0xbf8f('0x45')]=_[_0xbf8f('0x3d')](_0x5ba6d9[_0xbf8f('0x3c')],_0x5ba6d9['query']);_0x3b7867[_0xbf8f('0x3f')]=_[_0xbf8f('0x3d')](_0x5ba6d9['model'],qs['fields'](_0xdc690f['query'][_0xbf8f('0x3e')]));_0x3b7867[_0xbf8f('0x3f')]=_0x3b7867[_0xbf8f('0x3f')]['length']?_0x3b7867[_0xbf8f('0x3f')]:_0x5ba6d9[_0xbf8f('0x3c')];if(_0xdc690f[_0xbf8f('0x3a')][_0xbf8f('0x4e')]){_0x3b7867['include']=[{'all':!![]}];}_0x3b7867=_[_0xbf8f('0x48')]({},_0x3b7867,_0xdc690f[_0xbf8f('0x49')]);return db[_0xbf8f('0x35')]['find'](_0x3b7867)[_0xbf8f('0x2c')](handleEntityNotFound(_0x22971a,null))[_0xbf8f('0x2c')](respondWithResult(_0x22971a,null))[_0xbf8f('0x4c')](handleError(_0x22971a,null));};exports['create']=function(_0xff01cb,_0x30e5fb){return db[_0xbf8f('0x35')][_0xbf8f('0x4f')](_0xff01cb[_0xbf8f('0x50')],{})[_0xbf8f('0x2c')](function(_0x1c9f78){var _0x445beb=_0xff01cb[_0xbf8f('0x51')][_0xbf8f('0x2e')]({'plain':!![]});if(!_0x445beb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x445beb[_0xbf8f('0x52')]==='user'){var _0x1f6dce=_0x1c9f78[_0xbf8f('0x2e')]({'plain':!![]});var _0xb29cd6=_0xbf8f('0x53');return db['UserProfileSection'][_0xbf8f('0x54')]({'where':{'name':_0xb29cd6,'userProfileId':_0x445beb[_0xbf8f('0x55')]},'raw':!![]})[_0xbf8f('0x2c')](function(_0x42c49f){if(_0x42c49f&&_0x42c49f['autoAssociation']===0x0){return db[_0xbf8f('0x2f')][_0xbf8f('0x4f')]({'name':_0x1f6dce['name'],'resourceId':_0x1f6dce['id'],'type':_0x42c49f[_0xbf8f('0x32')],'sectionId':_0x42c49f['id']},{})[_0xbf8f('0x2c')](function(){return _0x1c9f78;});}else{return _0x1c9f78;}})[_0xbf8f('0x4c')](function(_0x1e8650){logger['error'](_0xbf8f('0x56'),_0x1e8650);throw _0x1e8650;});}return _0x1c9f78;})[_0xbf8f('0x2c')](respondWithResult(_0x30e5fb,0xc9))[_0xbf8f('0x4c')](handleError(_0x30e5fb,null));};exports['update']=function(_0x36b6c3,_0x3931e2){if(_0x36b6c3[_0xbf8f('0x50')]['id']){delete _0x36b6c3[_0xbf8f('0x50')]['id'];}return db[_0xbf8f('0x35')][_0xbf8f('0x54')]({'where':{'id':_0x36b6c3[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](handleEntityNotFound(_0x3931e2,null))['then'](saveUpdates(_0x36b6c3[_0xbf8f('0x50')],null))[_0xbf8f('0x2c')](respondWithResult(_0x3931e2,null))['catch'](handleError(_0x3931e2,null));};exports[_0xbf8f('0x2d')]=function(_0x30781e,_0x5d5457){return db[_0xbf8f('0x35')][_0xbf8f('0x54')]({'where':{'id':_0x30781e[_0xbf8f('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5d5457,null))[_0xbf8f('0x2c')](removeEntity(_0x5d5457,null))[_0xbf8f('0x4c')](handleError(_0x5d5457,null));};exports[_0xbf8f('0x57')]=function(_0x52d6be,_0x704b65){return db['SmsQueue'][_0xbf8f('0x57')]()['then'](respondWithResult(_0x704b65,null))[_0xbf8f('0x4c')](handleError(_0x704b65,null));};exports[_0xbf8f('0x58')]=function(_0x494d4e,_0x4b6584,_0x18da3c){var _0x57ef06={'raw':!![],'where':{}},_0x345d43={},_0x4abc36;return db[_0xbf8f('0x35')][_0xbf8f('0x59')]({'where':{'id':_0x494d4e[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](handleEntityNotFound(_0x4b6584,null))['then'](function(_0x34bbad){if(_0x34bbad){_0x4abc36=_0x34bbad['get']({'plain':!![]});_0x345d43['model']=_[_0xbf8f('0x3b')](db[_0xbf8f('0x5a')][_0xbf8f('0x36')]);_0x345d43[_0xbf8f('0x3a')]=_[_0xbf8f('0x3b')](_0x494d4e[_0xbf8f('0x3a')]);_0x345d43[_0xbf8f('0x45')]=_[_0xbf8f('0x3d')](_0x345d43[_0xbf8f('0x3c')],_0x345d43['query']);_0x57ef06[_0xbf8f('0x3f')]=_['intersection'](_0x345d43[_0xbf8f('0x3c')],qs[_0xbf8f('0x3e')](_0x494d4e[_0xbf8f('0x3a')]['fields']));_0x57ef06[_0xbf8f('0x3f')]=_0x57ef06[_0xbf8f('0x3f')][_0xbf8f('0x5b')]?_0x57ef06[_0xbf8f('0x3f')]:_0x345d43[_0xbf8f('0x3c')];if(!_0x494d4e[_0xbf8f('0x3a')][_0xbf8f('0x40')](_0xbf8f('0x41'))){_0x57ef06['limit']=qs['limit'](_0x494d4e[_0xbf8f('0x3a')]['limit']);_0x57ef06['offset']=qs['offset'](_0x494d4e[_0xbf8f('0x3a')][_0xbf8f('0x24')]);}_0x57ef06['order']=qs[_0xbf8f('0x43')](_0x494d4e[_0xbf8f('0x3a')][_0xbf8f('0x43')]);_0x57ef06[_0xbf8f('0x44')]=qs[_0xbf8f('0x45')](_[_0xbf8f('0x46')](_0x494d4e[_0xbf8f('0x3a')],_0x345d43['filters']));_0x57ef06[_0xbf8f('0x44')][_0xbf8f('0x5c')]=_0x34bbad['id'];if(_0x494d4e['query'][_0xbf8f('0x5d')]){_0x57ef06[_0xbf8f('0x44')]=_[_0xbf8f('0x48')](_0x57ef06[_0xbf8f('0x44')],{'$or':_[_0xbf8f('0x34')](_0x57ef06[_0xbf8f('0x3f')],function(_0x294667){var _0x4bf345={};_0x4bf345[_0x294667]={'$like':'%'+_0x494d4e[_0xbf8f('0x3a')]['filter']+'%'};return _0x4bf345;})});}_0x57ef06=_[_0xbf8f('0x48')]({},_0x57ef06,_0x494d4e[_0xbf8f('0x49')]);return db[_0xbf8f('0x5a')][_0xbf8f('0x4a')](_0x57ef06);}})[_0xbf8f('0x2c')](function(_0x4a437c){if(_0x4a437c){return db[_0xbf8f('0x5e')][_0xbf8f('0x5f')]({'where':{'id':_[_0xbf8f('0x34')](_0x4a437c,'UserId'),'role':_0xbf8f('0x60')},'attributes':['id',_0xbf8f('0x32'),_0xbf8f('0x61'),_0xbf8f('0x62'),_0xbf8f('0x63')]});}})[_0xbf8f('0x2c')](function(_0x45d797){if(_0x45d797){return{'count':_0x45d797[_0xbf8f('0x26')],'rows':_[_0xbf8f('0x34')](_0x45d797['rows'],function(_0x5cf497){return{'membername':_0x5cf497[_0xbf8f('0x32')],'UserId':_0x5cf497['id'],'queue_name':_0x4abc36[_0xbf8f('0x32')],'SmsQueueId':_0x4abc36['id'],'interface':util[_0xbf8f('0x64')](_0xbf8f('0x65'),_0xbf8f('0x66'),_0x5cf497[_0xbf8f('0x32')]),'penalty':0x0,'paused':_0x5cf497[_0xbf8f('0x61')],'createdAt':_0x5cf497['createdAt'],'updatedAt':_0x5cf497['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xbf8f('0x2c')](respondWithFilteredResult(_0x4b6584,_0x57ef06))[_0xbf8f('0x4c')](handleError(_0x4b6584,null));};exports['getTeams']=function(_0x2fe411,_0x2b32bc,_0xb27663){var _0xedb27b={};var _0xc5c791={};var _0x2ee796;var _0x396c28;return db['SmsQueue'][_0xbf8f('0x59')]({'where':{'id':_0x2fe411[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](handleEntityNotFound(_0x2b32bc,null))['then'](function(_0x1cc98a){if(_0x1cc98a){_0x2ee796=_0x1cc98a;_0xc5c791[_0xbf8f('0x3c')]=_[_0xbf8f('0x3b')](db[_0xbf8f('0x67')][_0xbf8f('0x36')]);_0xc5c791['query']=_['keys'](_0x2fe411[_0xbf8f('0x3a')]);_0xc5c791[_0xbf8f('0x45')]=_[_0xbf8f('0x3d')](_0xc5c791[_0xbf8f('0x3c')],_0xc5c791[_0xbf8f('0x3a')]);_0xedb27b[_0xbf8f('0x3f')]=_[_0xbf8f('0x3d')](_0xc5c791['model'],qs[_0xbf8f('0x3e')](_0x2fe411['query'][_0xbf8f('0x3e')]));_0xedb27b[_0xbf8f('0x3f')]=_0xedb27b[_0xbf8f('0x3f')][_0xbf8f('0x5b')]?_0xedb27b[_0xbf8f('0x3f')]:_0xc5c791[_0xbf8f('0x3c')];_0xedb27b[_0xbf8f('0x42')]=qs['sort'](_0x2fe411[_0xbf8f('0x3a')]['sort']);_0xedb27b[_0xbf8f('0x44')]=qs[_0xbf8f('0x45')](_['pick'](_0x2fe411[_0xbf8f('0x3a')],_0xc5c791[_0xbf8f('0x45')]));if(_0x2fe411[_0xbf8f('0x3a')][_0xbf8f('0x5d')]){_0xedb27b[_0xbf8f('0x44')]=_[_0xbf8f('0x48')](_0xedb27b['where'],{'$or':_[_0xbf8f('0x34')](_0xedb27b['attributes'],function(_0x61cbae){var _0x32c11d={};_0x32c11d[_0x61cbae]={'$like':'%'+_0x2fe411[_0xbf8f('0x3a')][_0xbf8f('0x5d')]+'%'};return _0x32c11d;})});}_0xedb27b=_[_0xbf8f('0x48')]({},_0xedb27b,_0x2fe411[_0xbf8f('0x49')]);return _0x2ee796['getTeams'](_0xedb27b);}})[_0xbf8f('0x2c')](function(_0x66384a){if(_0x66384a){_0x396c28=_0x66384a['length'];if(!_0x2fe411[_0xbf8f('0x3a')][_0xbf8f('0x40')](_0xbf8f('0x41'))){_0xedb27b[_0xbf8f('0x27')]=qs[_0xbf8f('0x27')](_0x2fe411[_0xbf8f('0x3a')][_0xbf8f('0x27')]);_0xedb27b['offset']=qs['offset'](_0x2fe411[_0xbf8f('0x3a')][_0xbf8f('0x24')]);}return _0x2ee796['getTeams'](_0xedb27b);}})[_0xbf8f('0x2c')](function(_0x2f3250){if(_0x2f3250){return _0x2f3250?{'count':_0x396c28,'rows':_0x2f3250}:null;}})[_0xbf8f('0x2c')](respondWithResult(_0x2b32bc,null))['catch'](handleError(_0x2b32bc,null));};exports[_0xbf8f('0x68')]=function(_0x257e4e,_0x3923ee,_0x1b2e79){var _0x3d2682=_0x257e4e['body'][_0xbf8f('0x69')];return db[_0xbf8f('0x67')][_0xbf8f('0x4a')]({'where':{'id':_0x3d2682},'attributes':['id'],'include':[{'model':db[_0xbf8f('0x5e')],'as':'Agents','attributes':['id',_0xbf8f('0x32'),_0xbf8f('0x6a'),_0xbf8f('0x6b'),_0xbf8f('0x6c')],'raw':!![]}]})[_0xbf8f('0x2c')](function(_0x4de1f6){if(_0x4de1f6){var _0x3b02fb=_[_0xbf8f('0x6d')](_0x4de1f6,function(_0x510cba){var _0x520946=_0x510cba[_0xbf8f('0x2e')]({'plain':!![]});return _0x520946['Agents'];});return db['SmsQueue']['find']({'where':{'id':_0x257e4e[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](function(_0x48fb99){return db[_0xbf8f('0x6e')][_0xbf8f('0x6f')](function(_0xd4db6a){return _0x48fb99[_0xbf8f('0x68')](_0x3d2682,{'transaction':_0xd4db6a})[_0xbf8f('0x2c')](function(){return BPromise[_0xbf8f('0x70')](_0x3b02fb,function(_0x5ec17c){return db[_0xbf8f('0x5a')]['findOrCreate']({'where':{'UserId':_0x5ec17c['id'],'SmsQueueId':_0x257e4e[_0xbf8f('0x4d')]['id']},'transaction':_0xd4db6a});});})['then'](function(){_0x3b02fb['forEach'](function(_0x2eaab7){socket['emit'](_0xbf8f('0x71'),{'UserId':_0x2eaab7['id'],'SmsQueueId':_0x48fb99['id']});});});});});}})['then'](respondWithStatusCode(_0x3923ee,null))[_0xbf8f('0x4c')](handleError(_0x3923ee,null));};exports['removeTeams']=function(_0x399f02,_0x504091,_0x43a017){return db[_0xbf8f('0x67')]['findAll']({'where':{'id':_0x399f02[_0xbf8f('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0xbf8f('0x5e')],'as':_0xbf8f('0x72'),'attributes':['id'],'raw':!![]}]})[_0xbf8f('0x2c')](handleEntityNotFound(_0x504091,null))[_0xbf8f('0x2c')](function(_0x271d62){var _0x4d62ea=_[_0xbf8f('0x34')](_0x271d62,'id');var _0x431c6c=[];var _0x52b8ed=[];var _0x2118db=squel['select']();_0x2118db[_0xbf8f('0x73')](_0xbf8f('0x74'))['from'](_0xbf8f('0x75'),'tq')[_0xbf8f('0x76')]('user_has_teams','ut',_0xbf8f('0x77'))[_0xbf8f('0x44')](_0xbf8f('0x78'),_0x399f02[_0xbf8f('0x4d')]['id']);for(var _0x14c064=0x0;_0x14c064<_0x271d62['length'];_0x14c064+=0x1){let _0x47c404=_0x271d62[_0x14c064];for(var _0x22e9cf=0x0;_0x22e9cf<_0x47c404['Agents'][_0xbf8f('0x5b')];_0x22e9cf+=0x1){let _0x10e7da=_0x47c404[_0xbf8f('0x72')][_0x22e9cf];var _0x1133f5=_0x2118db[_0xbf8f('0x79')]();_0x1133f5[_0xbf8f('0x44')](_0xbf8f('0x7a'),_0x10e7da['id']);_0x52b8ed[_0xbf8f('0x7b')](db[_0xbf8f('0x6e')]['query'](_0x1133f5[_0xbf8f('0x7c')](),{'type':db['sequelize'][_0xbf8f('0x7d')][_0xbf8f('0x7e')]})[_0xbf8f('0x2c')](function(_0x57e226){if(_0x57e226[_0xbf8f('0x5b')]===0x1){return _0x10e7da['id'];}else{var _0x5b6a9e=_[_0xbf8f('0x7f')](_[_0xbf8f('0x34')](_0x57e226,_0xbf8f('0x80')),function(_0x2706bd){return _[_0xbf8f('0x81')](_0x4d62ea,_0x2706bd);});if(_0x5b6a9e){return _0x10e7da['id'];}}}));}}return BPromise['all'](_0x52b8ed)['then'](function(_0x19669c){_0x431c6c=_(_0x431c6c)['union'](_0x19669c)[_0xbf8f('0x82')]()[_0xbf8f('0x83')]();return db[_0xbf8f('0x35')]['find']({'where':{'id':_0x399f02[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](function(_0x39678f){return db[_0xbf8f('0x6e')][_0xbf8f('0x6f')](function(_0x4bd642){return _0x39678f[_0xbf8f('0x84')](_0x399f02[_0xbf8f('0x3a')][_0xbf8f('0x69')],{'transaction':_0x4bd642})[_0xbf8f('0x2c')](function(){if(!_[_0xbf8f('0x85')](_0x431c6c)){return _0x39678f['removeAgents'](_0x431c6c,{'transaction':_0x4bd642});}})[_0xbf8f('0x2c')](function(){_0x431c6c[_0xbf8f('0x86')](function(_0x508c96){socket[_0xbf8f('0x87')](_0xbf8f('0x88'),{'UserId':_0x508c96,'SmsQueueId':_0x39678f['id']});});});});});});})[_0xbf8f('0x2c')](respondWithStatusCode(_0x504091,null))[_0xbf8f('0x4c')](handleError(_0x504091,null));};exports[_0xbf8f('0x89')]=function(_0xe3d3da,_0x35e6ff,_0x256afb){return db['SmsQueue'][_0xbf8f('0x54')]({'where':{'id':_0xe3d3da[_0xbf8f('0x4d')]['id']}})['then'](handleEntityNotFound(_0x35e6ff,null))['then'](function(_0x2ef9b6){if(_0x2ef9b6){return _0x2ef9b6[_0xbf8f('0x89')](_0xe3d3da[_0xbf8f('0x50')][_0xbf8f('0x69')],_[_0xbf8f('0x8a')](_0xe3d3da[_0xbf8f('0x50')],[_0xbf8f('0x69'),'id'])||{})[_0xbf8f('0x8b')](function(_0x5b3072){for(var _0x33773b=0x0;_0x33773b<_0xe3d3da[_0xbf8f('0x50')][_0xbf8f('0x69')]['length'];_0x33773b+=0x1){socket[_0xbf8f('0x87')](_0xbf8f('0x71'),{'UserId':Number(_0xe3d3da[_0xbf8f('0x50')][_0xbf8f('0x69')][_0x33773b]),'SmsQueueId':Number(_0xe3d3da[_0xbf8f('0x4d')]['id'])});}return _0x5b3072;});}})['then'](respondWithResult(_0x35e6ff,null))[_0xbf8f('0x4c')](handleError(_0x35e6ff,null));};exports[_0xbf8f('0x8c')]=function(_0x71d39e,_0x2e22f5,_0x3fc39c){return db['SmsQueue'][_0xbf8f('0x54')]({'where':{'id':_0x71d39e[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](handleEntityNotFound(_0x2e22f5,null))[_0xbf8f('0x2c')](function(_0x557240){if(_0x557240){return _0x557240[_0xbf8f('0x8c')](_0x71d39e[_0xbf8f('0x3a')][_0xbf8f('0x69')])[_0xbf8f('0x2c')](function(){if(_['isArray'](_0x71d39e[_0xbf8f('0x3a')][_0xbf8f('0x69')])){for(var _0x3a63ab=0x0;_0x3a63ab<_0x71d39e['query'][_0xbf8f('0x69')]['length'];_0x3a63ab+=0x1){socket[_0xbf8f('0x87')](_0xbf8f('0x88'),{'UserId':Number(_0x71d39e[_0xbf8f('0x3a')][_0xbf8f('0x69')][_0x3a63ab]),'SmsQueueId':Number(_0x71d39e[_0xbf8f('0x4d')]['id'])});}}else{socket['emit']('userSmsQueue:remove',{'UserId':Number(_0x71d39e['query'][_0xbf8f('0x69')]),'SmsQueueId':Number(_0x71d39e[_0xbf8f('0x4d')]['id'])});}});}})[_0xbf8f('0x2c')](respondWithStatusCode(_0x2e22f5,null))[_0xbf8f('0x4c')](handleError(_0x2e22f5,null));};exports[_0xbf8f('0x8d')]=function(_0x518ea0,_0x4f9f8a,_0x3cdaa4){var _0x431cd0={};var _0x50c467={};var _0x1bb841;var _0xef62cb;return db['SmsQueue']['findOne']({'where':{'id':_0x518ea0[_0xbf8f('0x4d')]['id']}})[_0xbf8f('0x2c')](handleEntityNotFound(_0x4f9f8a,null))[_0xbf8f('0x2c')](function(_0x342911){if(_0x342911){_0x1bb841=_0x342911;_0x50c467[_0xbf8f('0x3c')]=_[_0xbf8f('0x3b')](db['User'][_0xbf8f('0x36')]);_0x50c467[_0xbf8f('0x3a')]=_[_0xbf8f('0x3b')](_0x518ea0[_0xbf8f('0x3a')]);_0x50c467[_0xbf8f('0x45')]=_[_0xbf8f('0x3d')](_0x50c467[_0xbf8f('0x3c')],_0x50c467['query']);_0x431cd0[_0xbf8f('0x3f')]=_['intersection'](_0x50c467[_0xbf8f('0x3c')],qs[_0xbf8f('0x3e')](_0x518ea0['query']['fields']));_0x431cd0[_0xbf8f('0x3f')]=_0x431cd0[_0xbf8f('0x3f')][_0xbf8f('0x5b')]?_0x431cd0[_0xbf8f('0x3f')]:_0x50c467[_0xbf8f('0x3c')];_0x431cd0['order']=qs[_0xbf8f('0x43')](_0x518ea0[_0xbf8f('0x3a')][_0xbf8f('0x43')]);_0x431cd0[_0xbf8f('0x44')]=qs[_0xbf8f('0x45')](_['pick'](_0x518ea0[_0xbf8f('0x3a')],_0x50c467[_0xbf8f('0x45')]));if(_0x518ea0['query'][_0xbf8f('0x5d')]){_0x431cd0[_0xbf8f('0x44')]=_[_0xbf8f('0x48')](_0x431cd0[_0xbf8f('0x44')],{'$or':_[_0xbf8f('0x34')](_0x431cd0[_0xbf8f('0x3f')],function(_0x53f705){var _0x37cbb2={};_0x37cbb2[_0x53f705]={'$like':'%'+_0x518ea0[_0xbf8f('0x3a')][_0xbf8f('0x5d')]+'%'};return _0x37cbb2;})});}_0x431cd0=_['merge']({},_0x431cd0,_0x518ea0[_0xbf8f('0x49')]);return _0x1bb841[_0xbf8f('0x8d')](_0x431cd0);}})[_0xbf8f('0x2c')](function(_0x5b5ff6){if(_0x5b5ff6){_0xef62cb=_0x5b5ff6[_0xbf8f('0x5b')];if(!_0x518ea0[_0xbf8f('0x3a')]['hasOwnProperty']('nolimit')){_0x431cd0['limit']=qs['limit'](_0x518ea0[_0xbf8f('0x3a')][_0xbf8f('0x27')]);_0x431cd0[_0xbf8f('0x24')]=qs[_0xbf8f('0x24')](_0x518ea0['query'][_0xbf8f('0x24')]);}return _0x1bb841[_0xbf8f('0x8d')](_0x431cd0);}})[_0xbf8f('0x2c')](function(_0x11a3ae){if(_0x11a3ae){return _0x11a3ae?{'count':_0xef62cb,'rows':_0x11a3ae}:null;}})[_0xbf8f('0x2c')](respondWithResult(_0x4f9f8a,null))['catch'](handleError(_0x4f9f8a,null));};
\ No newline at end of file
index e3125b4..ed38add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb57=['save','remove','emit','hasOwnProperty','hook','events','../../mysqldb','SmsQueue'];(function(_0x24631d,_0xac2037){var _0x2c13fc=function(_0x5a3089){while(--_0x5a3089){_0x24631d['push'](_0x24631d['shift']());}};_0x2c13fc(++_0xac2037);}(_0xfb57,0x85));var _0x7fb5=function(_0x5440e5,_0x56fac9){_0x5440e5=_0x5440e5-0x0;var _0x6c5beb=_0xfb57[_0x5440e5];return _0x6c5beb;};'use strict';var EventEmitter=require(_0x7fb5('0x0'));var SmsQueue=require(_0x7fb5('0x1'))['db'][_0x7fb5('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7fb5('0x3'),'afterUpdate':'update','afterDestroy':_0x7fb5('0x4')};function emitEvent(_0x291e85){return function(_0x16d89a,_0x222c61,_0x9246f3){SmsQueueEvents['emit'](_0x291e85+':'+_0x16d89a['id'],_0x16d89a);SmsQueueEvents[_0x7fb5('0x5')](_0x291e85,_0x16d89a);_0x9246f3(null);};}for(var e in events){if(events[_0x7fb5('0x6')](e)){var event=events[e];SmsQueue[_0x7fb5('0x7')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x74d6=['SmsQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x41d208,_0x208fb1){var _0x520ce3=function(_0x274028){while(--_0x274028){_0x41d208['push'](_0x41d208['shift']());}};_0x520ce3(++_0x208fb1);}(_0x74d6,0x1b8));var _0x674d=function(_0x18d785,_0x5347b5){_0x18d785=_0x18d785-0x0;var _0x17559a=_0x74d6[_0x18d785];return _0x17559a;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x674d('0x0'))['db'][_0x674d('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x674d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x674d('0x3'),'afterDestroy':_0x674d('0x4')};function emitEvent(_0x33105a){return function(_0x552688,_0x2a04fa,_0xf6fcf){SmsQueueEvents[_0x674d('0x5')](_0x33105a+':'+_0x552688['id'],_0x552688);SmsQueueEvents[_0x674d('0x5')](_0x33105a,_0x552688);_0xf6fcf(null);};}for(var e in events){if(events[_0x674d('0x6')](e)){var event=events[e];SmsQueue[_0x674d('0x7')](e,emitEvent(event));}}module[_0x674d('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 8b0a9cd..6f9d31d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27f3=['../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','lodash','util','api','moment','request-promise','rimraf'];(function(_0x333709,_0x295242){var _0x143bc5=function(_0x1f2e0f){while(--_0x1f2e0f){_0x333709['push'](_0x333709['shift']());}};_0x143bc5(++_0x295242);}(_0x27f3,0x1e9));var _0x327f=function(_0x2f32c4,_0x2597ba){_0x2f32c4=_0x2f32c4-0x0;var _0x95b5dc=_0x27f3[_0x2f32c4];return _0x95b5dc;};'use strict';var _=require(_0x327f('0x0'));var util=require(_0x327f('0x1'));var logger=require('../../config/logger')(_0x327f('0x2'));var moment=require(_0x327f('0x3'));var BPromise=require('bluebird');var rp=require(_0x327f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x327f('0x5'));var config=require(_0x327f('0x6'));var attributes=require(_0x327f('0x7'));module[_0x327f('0x8')]=function(_0x1eada5,_0x358ab7){return _0x1eada5[_0x327f('0x9')](_0x327f('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd397=['lodash','util','api','moment','bluebird','request-promise','rimraf','./smsQueue.attributes','exports','SmsQueue','sms_queues'];(function(_0x49c653,_0x390195){var _0x31e169=function(_0x3684ac){while(--_0x3684ac){_0x49c653['push'](_0x49c653['shift']());}};_0x31e169(++_0x390195);}(_0xd397,0x113));var _0x7d39=function(_0x313806,_0x3deffe){_0x313806=_0x313806-0x0;var _0x19dc96=_0xd397[_0x313806];return _0x19dc96;};'use strict';var _=require(_0x7d39('0x0'));var util=require(_0x7d39('0x1'));var logger=require('../../config/logger')(_0x7d39('0x2'));var moment=require(_0x7d39('0x3'));var BPromise=require(_0x7d39('0x4'));var rp=require(_0x7d39('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7d39('0x6'));var config=require('../../config/environment');var attributes=require(_0x7d39('0x7'));module[_0x7d39('0x8')]=function(_0x2a7a8f,_0x362001){return _0x2a7a8f['define'](_0x7d39('0x9'),attributes,{'tableName':_0x7d39('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b42bd77..5cbc74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a44=['request','then','info','SmsQueue,\x20%s,\x20%s','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','SmsQueue','findAll','options','raw','include','attributes','map','model','debug','GetSmsQueue','catch','ShowSmsQueue','find','where','lodash','util','randomstring','../../config/utils','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./smsQueue.socket','register'];(function(_0x4c149f,_0x2b44a2){var _0x1e59b7=function(_0xa1d3b9){while(--_0xa1d3b9){_0x4c149f['push'](_0x4c149f['shift']());}};_0x1e59b7(++_0x2b44a2);}(_0x4a44,0x67));var _0x44a4=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4a44[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x44a4('0x0'));var util=require(_0x44a4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44a4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44a4('0x3'));var logger=require('../../config/logger')(_0x44a4('0x4'));var config=require('../../config/environment');var jayson=require(_0x44a4('0x5'));var client=jayson[_0x44a4('0x6')][_0x44a4('0x7')]({'port':0x232a});config['redis']=_[_0x44a4('0x8')](config['redis'],{'host':_0x44a4('0x9'),'port':0x18eb});var socket=require(_0x44a4('0xa'))(new Redis(config[_0x44a4('0xb')]));require(_0x44a4('0xc'))[_0x44a4('0xd')](socket);function respondWithRpcPromise(_0x97854a,_0x5b60a4,_0x4c6ca7){return new BPromise(function(_0x4a89ba,_0x3af001){return client[_0x44a4('0xe')](_0x97854a,_0x4c6ca7)[_0x44a4('0xf')](function(_0x14e3b3){logger[_0x44a4('0x10')](_0x44a4('0x11'),_0x5b60a4,'request\x20sent');logger['debug'](_0x44a4('0x12'),_0x5b60a4,_0x44a4('0x13'),JSON[_0x44a4('0x14')](_0x14e3b3));if(_0x14e3b3[_0x44a4('0x15')]){if(_0x14e3b3[_0x44a4('0x15')][_0x44a4('0x16')]===0x1f4){logger[_0x44a4('0x15')](_0x44a4('0x11'),_0x5b60a4,_0x14e3b3[_0x44a4('0x15')]['message']);return _0x3af001(_0x14e3b3['error'][_0x44a4('0x17')]);}logger['error'](_0x44a4('0x11'),_0x5b60a4,_0x14e3b3['error']['message']);return _0x4a89ba(_0x14e3b3['error']['message']);}else{logger[_0x44a4('0x10')](_0x44a4('0x11'),_0x5b60a4,_0x44a4('0x13'));_0x4a89ba(_0x14e3b3[_0x44a4('0x18')][_0x44a4('0x17')]);}})['catch'](function(_0x274ac5){logger[_0x44a4('0x15')](_0x44a4('0x11'),_0x5b60a4,_0x274ac5);_0x3af001(_0x274ac5);});});}exports['GetSmsQueue']=function(_0x5ae4b7){var _0x51f746=this;return new Promise(function(_0x34f73c,_0x3cbcf9){return db[_0x44a4('0x19')][_0x44a4('0x1a')]({'raw':_0x5ae4b7[_0x44a4('0x1b')]?_0x5ae4b7[_0x44a4('0x1b')][_0x44a4('0x1c')]===undefined?!![]:![]:!![],'where':_0x5ae4b7[_0x44a4('0x1b')]?_0x5ae4b7[_0x44a4('0x1b')]['where']||null:null,'attributes':_0x5ae4b7[_0x44a4('0x1b')]?_0x5ae4b7[_0x44a4('0x1b')]['attributes']||null:null,'limit':_0x5ae4b7[_0x44a4('0x1b')]?_0x5ae4b7[_0x44a4('0x1b')]['limit']||null:null,'include':_0x5ae4b7[_0x44a4('0x1b')]?_0x5ae4b7[_0x44a4('0x1b')][_0x44a4('0x1d')]?_['map'](_0x5ae4b7[_0x44a4('0x1b')]['include'],function(_0x144a25){return{'model':db[_0x144a25['model']],'as':_0x144a25['as'],'attributes':_0x144a25[_0x44a4('0x1e')],'include':_0x144a25[_0x44a4('0x1d')]?_[_0x44a4('0x1f')](_0x144a25[_0x44a4('0x1d')],function(_0x23a539){return{'model':db[_0x23a539[_0x44a4('0x20')]],'as':_0x23a539['as'],'attributes':_0x23a539['attributes'],'include':_0x23a539[_0x44a4('0x1d')]?_[_0x44a4('0x1f')](_0x23a539[_0x44a4('0x1d')],function(_0x392456){return{'model':db[_0x392456['model']],'as':_0x392456['as'],'attributes':_0x392456['attributes']};}):[]};}):[]};}):[]:[]})[_0x44a4('0xf')](function(_0x2a559f){logger[_0x44a4('0x10')]('GetSmsQueue',_0x5ae4b7);logger[_0x44a4('0x21')](_0x44a4('0x22'),_0x5ae4b7,JSON[_0x44a4('0x14')](_0x2a559f));_0x34f73c(_0x2a559f);})[_0x44a4('0x23')](function(_0x322a69){logger[_0x44a4('0x15')](_0x44a4('0x22'),_0x322a69[_0x44a4('0x17')],_0x5ae4b7);_0x3cbcf9(_0x51f746[_0x44a4('0x15')](0x1f4,_0x322a69[_0x44a4('0x17')]));});});};exports[_0x44a4('0x24')]=function(_0x32ad8a){var _0x69251f=this;return new Promise(function(_0x189834,_0x3aabff){return db[_0x44a4('0x19')][_0x44a4('0x25')]({'raw':_0x32ad8a[_0x44a4('0x1b')]?_0x32ad8a[_0x44a4('0x1b')][_0x44a4('0x1c')]===undefined?!![]:![]:!![],'where':_0x32ad8a[_0x44a4('0x1b')]?_0x32ad8a[_0x44a4('0x1b')][_0x44a4('0x26')]||null:null,'attributes':_0x32ad8a[_0x44a4('0x1b')]?_0x32ad8a[_0x44a4('0x1b')][_0x44a4('0x1e')]||null:null,'include':_0x32ad8a[_0x44a4('0x1b')]?_0x32ad8a[_0x44a4('0x1b')][_0x44a4('0x1d')]?_[_0x44a4('0x1f')](_0x32ad8a[_0x44a4('0x1b')]['include'],function(_0x4bf56f){return{'model':db[_0x4bf56f[_0x44a4('0x20')]],'as':_0x4bf56f['as'],'attributes':_0x4bf56f[_0x44a4('0x1e')],'include':_0x4bf56f['include']?_[_0x44a4('0x1f')](_0x4bf56f['include'],function(_0x1ebe4a){return{'model':db[_0x1ebe4a['model']],'as':_0x1ebe4a['as'],'attributes':_0x1ebe4a[_0x44a4('0x1e')],'include':_0x1ebe4a['include']?_[_0x44a4('0x1f')](_0x1ebe4a[_0x44a4('0x1d')],function(_0xa7322e){return{'model':db[_0xa7322e[_0x44a4('0x20')]],'as':_0xa7322e['as'],'attributes':_0xa7322e[_0x44a4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x44a4('0xf')](function(_0xb844ce){logger[_0x44a4('0x10')](_0x44a4('0x24'),_0x32ad8a);logger[_0x44a4('0x21')](_0x44a4('0x24'),_0x32ad8a,JSON[_0x44a4('0x14')](_0xb844ce));_0x189834(_0xb844ce);})[_0x44a4('0x23')](function(_0x12636d){logger[_0x44a4('0x15')](_0x44a4('0x24'),_0x12636d['message'],_0x32ad8a);_0x3aabff(_0x69251f[_0x44a4('0x15')](0x1f4,_0x12636d[_0x44a4('0x17')]));});});};
\ No newline at end of file
+var _0x5116=['findAll','options','attributes','limit','map','include','model','GetSmsQueue','ShowSmsQueue','raw','where','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','catch','SmsQueue'];(function(_0x53b55f,_0x7980d0){var _0x71d9fa=function(_0x1c30c2){while(--_0x1c30c2){_0x53b55f['push'](_0x53b55f['shift']());}};_0x71d9fa(++_0x7980d0);}(_0x5116,0x187));var _0x6511=function(_0x187325,_0x29c4d7){_0x187325=_0x187325-0x0;var _0x585451=_0x5116[_0x187325];return _0x585451;};'use strict';var _=require(_0x6511('0x0'));var util=require(_0x6511('0x1'));var moment=require(_0x6511('0x2'));var BPromise=require('bluebird');var rs=require(_0x6511('0x3'));var fs=require('fs');var Redis=require(_0x6511('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6511('0x5'));var logger=require(_0x6511('0x6'))(_0x6511('0x7'));var config=require('../../config/environment');var jayson=require(_0x6511('0x8'));var client=jayson[_0x6511('0x9')][_0x6511('0xa')]({'port':0x232a});config[_0x6511('0xb')]=_['defaults'](config[_0x6511('0xb')],{'host':_0x6511('0xc'),'port':0x18eb});var socket=require(_0x6511('0xd'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x6511('0xe')](socket);function respondWithRpcPromise(_0x3cd06c,_0x2355e9,_0x541b39){return new BPromise(function(_0xf52488,_0x161f93){return client[_0x6511('0xf')](_0x3cd06c,_0x541b39)[_0x6511('0x10')](function(_0x4c7d2a){logger[_0x6511('0x11')](_0x6511('0x12'),_0x2355e9,_0x6511('0x13'));logger[_0x6511('0x14')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0x2355e9,_0x6511('0x13'),JSON[_0x6511('0x15')](_0x4c7d2a));if(_0x4c7d2a['error']){if(_0x4c7d2a['error'][_0x6511('0x16')]===0x1f4){logger[_0x6511('0x17')]('SmsQueue,\x20%s,\x20%s',_0x2355e9,_0x4c7d2a[_0x6511('0x17')][_0x6511('0x18')]);return _0x161f93(_0x4c7d2a['error'][_0x6511('0x18')]);}logger[_0x6511('0x17')](_0x6511('0x12'),_0x2355e9,_0x4c7d2a['error'][_0x6511('0x18')]);return _0xf52488(_0x4c7d2a[_0x6511('0x17')]['message']);}else{logger[_0x6511('0x11')](_0x6511('0x12'),_0x2355e9,_0x6511('0x13'));_0xf52488(_0x4c7d2a['result']['message']);}})[_0x6511('0x19')](function(_0x215f3f){logger['error'](_0x6511('0x12'),_0x2355e9,_0x215f3f);_0x161f93(_0x215f3f);});});}exports['GetSmsQueue']=function(_0x58bb2f){var _0xd23132=this;return new Promise(function(_0x7d0045,_0x299727){return db[_0x6511('0x1a')][_0x6511('0x1b')]({'raw':_0x58bb2f[_0x6511('0x1c')]?_0x58bb2f['options']['raw']===undefined?!![]:![]:!![],'where':_0x58bb2f['options']?_0x58bb2f[_0x6511('0x1c')]['where']||null:null,'attributes':_0x58bb2f[_0x6511('0x1c')]?_0x58bb2f[_0x6511('0x1c')][_0x6511('0x1d')]||null:null,'limit':_0x58bb2f[_0x6511('0x1c')]?_0x58bb2f[_0x6511('0x1c')][_0x6511('0x1e')]||null:null,'include':_0x58bb2f['options']?_0x58bb2f[_0x6511('0x1c')]['include']?_[_0x6511('0x1f')](_0x58bb2f[_0x6511('0x1c')][_0x6511('0x20')],function(_0x3a432d){return{'model':db[_0x3a432d[_0x6511('0x21')]],'as':_0x3a432d['as'],'attributes':_0x3a432d[_0x6511('0x1d')],'include':_0x3a432d[_0x6511('0x20')]?_['map'](_0x3a432d[_0x6511('0x20')],function(_0x22147c){return{'model':db[_0x22147c[_0x6511('0x21')]],'as':_0x22147c['as'],'attributes':_0x22147c['attributes'],'include':_0x22147c[_0x6511('0x20')]?_[_0x6511('0x1f')](_0x22147c['include'],function(_0x5eff7a){return{'model':db[_0x5eff7a[_0x6511('0x21')]],'as':_0x5eff7a['as'],'attributes':_0x5eff7a[_0x6511('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6511('0x10')](function(_0x331f35){logger['info']('GetSmsQueue',_0x58bb2f);logger[_0x6511('0x14')](_0x6511('0x22'),_0x58bb2f,JSON[_0x6511('0x15')](_0x331f35));_0x7d0045(_0x331f35);})[_0x6511('0x19')](function(_0x37daf4){logger[_0x6511('0x17')](_0x6511('0x22'),_0x37daf4[_0x6511('0x18')],_0x58bb2f);_0x299727(_0xd23132['error'](0x1f4,_0x37daf4[_0x6511('0x18')]));});});};exports[_0x6511('0x23')]=function(_0xe4459){var _0x359cbf=this;return new Promise(function(_0x5e1777,_0x1d69f3){return db[_0x6511('0x1a')]['find']({'raw':_0xe4459[_0x6511('0x1c')]?_0xe4459[_0x6511('0x1c')][_0x6511('0x24')]===undefined?!![]:![]:!![],'where':_0xe4459[_0x6511('0x1c')]?_0xe4459[_0x6511('0x1c')][_0x6511('0x25')]||null:null,'attributes':_0xe4459[_0x6511('0x1c')]?_0xe4459[_0x6511('0x1c')][_0x6511('0x1d')]||null:null,'include':_0xe4459[_0x6511('0x1c')]?_0xe4459[_0x6511('0x1c')]['include']?_[_0x6511('0x1f')](_0xe4459[_0x6511('0x1c')][_0x6511('0x20')],function(_0x38f6f1){return{'model':db[_0x38f6f1[_0x6511('0x21')]],'as':_0x38f6f1['as'],'attributes':_0x38f6f1[_0x6511('0x1d')],'include':_0x38f6f1['include']?_[_0x6511('0x1f')](_0x38f6f1[_0x6511('0x20')],function(_0x289909){return{'model':db[_0x289909[_0x6511('0x21')]],'as':_0x289909['as'],'attributes':_0x289909[_0x6511('0x1d')],'include':_0x289909['include']?_[_0x6511('0x1f')](_0x289909[_0x6511('0x20')],function(_0x1d2b67){return{'model':db[_0x1d2b67[_0x6511('0x21')]],'as':_0x1d2b67['as'],'attributes':_0x1d2b67['attributes']};}):[]};}):[]};}):[]:[]})[_0x6511('0x10')](function(_0x1beb14){logger[_0x6511('0x11')]('ShowSmsQueue',_0xe4459);logger['debug'](_0x6511('0x23'),_0xe4459,JSON[_0x6511('0x15')](_0x1beb14));_0x5e1777(_0x1beb14);})['catch'](function(_0x4cc968){logger[_0x6511('0x17')](_0x6511('0x23'),_0x4cc968[_0x6511('0x18')],_0xe4459);_0x1d69f3(_0x359cbf[_0x6511('0x17')](0x1f4,_0x4cc968['message']));});});};
\ No newline at end of file
index 246b522..5c969d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe16c=['emit','removeListener','register','length','smsQueue:','./smsQueue.events','save','remove','update'];(function(_0x1395e6,_0x46c77c){var _0x41adaa=function(_0x4c9424){while(--_0x4c9424){_0x1395e6['push'](_0x1395e6['shift']());}};_0x41adaa(++_0x46c77c);}(_0xe16c,0x149));var _0xce16=function(_0x1afa7b,_0x1f90e0){_0x1afa7b=_0x1afa7b-0x0;var _0x5dbe60=_0xe16c[_0x1afa7b];return _0x5dbe60;};'use strict';var SmsQueueEvents=require(_0xce16('0x0'));var events=[_0xce16('0x1'),_0xce16('0x2'),_0xce16('0x3')];function createListener(_0x510a38,_0x397d9e){return function(_0x135486){_0x397d9e[_0xce16('0x4')](_0x510a38,_0x135486);};}function removeListener(_0x13bfe9,_0x1412f1){return function(){SmsQueueEvents[_0xce16('0x5')](_0x13bfe9,_0x1412f1);};}exports[_0xce16('0x6')]=function(_0x4a9e8f){for(var _0x13094d=0x0,_0x18cbde=events[_0xce16('0x7')];_0x13094d<_0x18cbde;_0x13094d++){var _0x221518=events[_0x13094d];var _0x1e4568=createListener(_0xce16('0x8')+_0x221518,_0x4a9e8f);SmsQueueEvents['on'](_0x221518,_0x1e4568);}};
\ No newline at end of file
+var _0x247c=['update','emit','removeListener','smsQueue:','./smsQueue.events','remove'];(function(_0x2a9bf8,_0x4daca3){var _0x33073f=function(_0x443e09){while(--_0x443e09){_0x2a9bf8['push'](_0x2a9bf8['shift']());}};_0x33073f(++_0x4daca3);}(_0x247c,0x13c));var _0xc247=function(_0xb543f5,_0xa94ed1){_0xb543f5=_0xb543f5-0x0;var _0x131047=_0x247c[_0xb543f5];return _0x131047;};'use strict';var SmsQueueEvents=require(_0xc247('0x0'));var events=['save',_0xc247('0x1'),_0xc247('0x2')];function createListener(_0x47a793,_0x43e54e){return function(_0x8beed3){_0x43e54e[_0xc247('0x3')](_0x47a793,_0x8beed3);};}function removeListener(_0x19d552,_0x52e8f0){return function(){SmsQueueEvents[_0xc247('0x4')](_0x19d552,_0x52e8f0);};}exports['register']=function(_0x1256fc){for(var _0x2a2e37=0x0,_0xf8290d=events['length'];_0x2a2e37<_0xf8290d;_0x2a2e37++){var _0x13de3f=events[_0x2a2e37];var _0xa670d=createListener(_0xc247('0x5')+_0x13de3f,_0x1256fc);SmsQueueEvents['on'](_0x13de3f,_0xa670d);}};
\ No newline at end of file
index ba5771c..f9782bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e4=['post','put','delete','/:id','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./smsQueueReport.controller','get','isAuthenticated','index','/describe','show'];(function(_0x500812,_0x296a3c){var _0x4add02=function(_0x33c252){while(--_0x33c252){_0x500812['push'](_0x500812['shift']());}};_0x4add02(++_0x296a3c);}(_0x38e4,0x9e));var _0x438e=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x38e4[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require(_0x438e('0x0'));var util=require(_0x438e('0x1'));var path=require('path');var timeout=require(_0x438e('0x2'));var express=require(_0x438e('0x3'));var router=express['Router']();var fs_extra=require(_0x438e('0x4'));var auth=require(_0x438e('0x5'));var interaction=require(_0x438e('0x6'));var config=require('../../config/environment');var controller=require(_0x438e('0x7'));router[_0x438e('0x8')]('/',auth[_0x438e('0x9')](),controller[_0x438e('0xa')]);router[_0x438e('0x8')](_0x438e('0xb'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x438e('0x9')](),controller[_0x438e('0xc')]);router[_0x438e('0xd')]('/',auth[_0x438e('0x9')](),controller['create']);router[_0x438e('0xe')]('/:id',auth[_0x438e('0x9')](),controller['update']);router[_0x438e('0xf')](_0x438e('0x10'),auth[_0x438e('0x9')](),controller[_0x438e('0x11')]);module[_0x438e('0x12')]=router;
\ No newline at end of file
+var _0xf15b=['../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','describe','isAuthenticated','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x56a86a,_0x3e78d4){var _0x4c91b7=function(_0x3099b8){while(--_0x3099b8){_0x56a86a['push'](_0x56a86a['shift']());}};_0x4c91b7(++_0x3e78d4);}(_0xf15b,0x7f));var _0xbf15=function(_0xf9a7fe,_0x338e1f){_0xf9a7fe=_0xf9a7fe-0x0;var _0x312a7b=_0xf15b[_0xf9a7fe];return _0x312a7b;};'use strict';var multer=require(_0xbf15('0x0'));var util=require('util');var path=require(_0xbf15('0x1'));var timeout=require(_0xbf15('0x2'));var express=require(_0xbf15('0x3'));var router=express[_0xbf15('0x4')]();var fs_extra=require(_0xbf15('0x5'));var auth=require(_0xbf15('0x6'));var interaction=require(_0xbf15('0x7'));var config=require(_0xbf15('0x8'));var controller=require(_0xbf15('0x9'));router[_0xbf15('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0xbf15('0xb')]);router[_0xbf15('0xa')]('/:id',auth[_0xbf15('0xc')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xbf15('0xd')]);router[_0xbf15('0xe')](_0xbf15('0xf'),auth['isAuthenticated'](),controller[_0xbf15('0x10')]);router['delete']('/:id',auth[_0xbf15('0xc')](),controller[_0xbf15('0x11')]);module[_0xbf15('0x12')]=router;
\ No newline at end of file
index 79cdf36..950608d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6960=['moment','exports','STRING','DATE'];(function(_0xb468fc,_0x348a61){var _0x553cb6=function(_0x105f4a){while(--_0x105f4a){_0xb468fc['push'](_0xb468fc['shift']());}};_0x553cb6(++_0x348a61);}(_0x6960,0x148));var _0x0696=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x6960[_0x27af45];return _0x18df21;};'use strict';var moment=require(_0x0696('0x0'));var Sequelize=require('sequelize');module[_0x0696('0x1')]={'uniqueid':{'type':Sequelize[_0x0696('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x0696('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x0696('0x3')]},'acceptAt':{'type':Sequelize[_0x0696('0x3')]},'exitAt':{'type':Sequelize[_0x0696('0x3')]},'reason':{'type':Sequelize[_0x0696('0x2')]}};
\ No newline at end of file
+var _0xfe45=['DATE','moment','exports','STRING'];(function(_0x59659b,_0x38a9a7){var _0x5db166=function(_0x2f6c4c){while(--_0x2f6c4c){_0x59659b['push'](_0x59659b['shift']());}};_0x5db166(++_0x38a9a7);}(_0xfe45,0xe1));var _0x5fe4=function(_0x54c6c7,_0x12e4b8){_0x54c6c7=_0x54c6c7-0x0;var _0x446a44=_0xfe45[_0x54c6c7];return _0x446a44;};'use strict';var moment=require(_0x5fe4('0x0'));var Sequelize=require('sequelize');module[_0x5fe4('0x1')]={'uniqueid':{'type':Sequelize[_0x5fe4('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x5fe4('0x2')]},'joinAt':{'type':Sequelize[_0x5fe4('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x5fe4('0x3')]},'exitAt':{'type':Sequelize[_0x5fe4('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b897e55..3d3c1e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207d=['name','send','SmsQueueReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','apply','save','update','then','destroy','error','stack'];(function(_0x3dc538,_0x4f7702){var _0x72c2fd=function(_0x5a7260){while(--_0x5a7260){_0x3dc538['push'](_0x3dc538['shift']());}};_0x72c2fd(++_0x4f7702);}(_0x207d,0x132));var _0xd207=function(_0x22aca0,_0x303769){_0x22aca0=_0x22aca0-0x0;var _0x316386=_0x207d[_0x22aca0];return _0x316386;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd207('0x0'));var zipdir=require(_0xd207('0x1'));var jsonpatch=require(_0xd207('0x2'));var rp=require(_0xd207('0x3'));var moment=require(_0xd207('0x4'));var BPromise=require(_0xd207('0x5'));var Mustache=require(_0xd207('0x6'));var util=require(_0xd207('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd207('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd207('0x9'));var jsforce=require(_0xd207('0xa'));var deskjs=require(_0xd207('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd207('0xc'));var Redis=require(_0xd207('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd207('0xe'));var logger=require(_0xd207('0xf'))('api');var utils=require(_0xd207('0x10'));var config=require(_0xd207('0x11'));var licenseUtil=require(_0xd207('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x509040,_0x5d216d){_0x5d216d=_0x5d216d||0xcc;return function(_0x197556){if(_0x197556){return _0x509040[_0xd207('0x13')](_0x5d216d);}return _0x509040['status'](_0x5d216d)[_0xd207('0x14')]();};}function respondWithResult(_0x1cc6b4,_0x41d7e8){_0x41d7e8=_0x41d7e8||0xc8;return function(_0x5c17ea){if(_0x5c17ea){return _0x1cc6b4[_0xd207('0x15')](_0x41d7e8)[_0xd207('0x16')](_0x5c17ea);}};}function respondWithFilteredResult(_0x4a8f1e,_0x1a190b){return function(_0x3995d9){if(_0x3995d9){var _0x5539a0=typeof _0x1a190b[_0xd207('0x17')]==='undefined'&&typeof _0x1a190b['limit']===_0xd207('0x18');var _0x43dd11=_0x3995d9['count'];var _0x13f024=_0x5539a0?0x0:_0x1a190b[_0xd207('0x17')];var _0x13dd30=_0x5539a0?_0x3995d9[_0xd207('0x19')]:_0x1a190b['offset']+_0x1a190b[_0xd207('0x1a')];var _0x42fb55;if(_0x13dd30>=_0x43dd11){_0x13dd30=_0x43dd11;_0x42fb55=0xc8;}else{_0x42fb55=0xce;}_0x4a8f1e['status'](_0x42fb55);return _0x4a8f1e['set']('Content-Range',_0x13f024+'-'+_0x13dd30+'/'+_0x43dd11)[_0xd207('0x16')](_0x3995d9);}return null;};}function patchUpdates(_0x14a3d4){return function(_0x45eee8){try{jsonpatch[_0xd207('0x1b')](_0x45eee8,_0x14a3d4,!![]);}catch(_0x114c57){return BPromise['reject'](_0x114c57);}return _0x45eee8[_0xd207('0x1c')]();};}function saveUpdates(_0x3f5b52,_0x407405){return function(_0x54b5bb){if(_0x54b5bb){return _0x54b5bb[_0xd207('0x1d')](_0x3f5b52)[_0xd207('0x1e')](function(_0x22b415){return _0x22b415;});}return null;};}function removeEntity(_0x3e0733,_0x1905dd){return function(_0x30cdf6){if(_0x30cdf6){return _0x30cdf6[_0xd207('0x1f')]()[_0xd207('0x1e')](function(){_0x3e0733[_0xd207('0x15')](0xcc)[_0xd207('0x14')]();});}};}function handleEntityNotFound(_0x322003,_0x51a5db){return function(_0x1b5ebf){if(!_0x1b5ebf){_0x322003[_0xd207('0x13')](0x194);}return _0x1b5ebf;};}function handleError(_0x17fa53,_0x4ba45e){_0x4ba45e=_0x4ba45e||0x1f4;return function(_0x421121){logger[_0xd207('0x20')](_0x421121[_0xd207('0x21')]);if(_0x421121[_0xd207('0x22')]){delete _0x421121['name'];}_0x17fa53[_0xd207('0x15')](_0x4ba45e)[_0xd207('0x23')](_0x421121);};}exports['index']=function(_0x41665f,_0x1da66a){var _0xb5ccae={},_0x58be11={},_0x508928={'count':0x0,'rows':[]};var _0x49aa81=_['map'](db[_0xd207('0x24')][_0xd207('0x25')],function(_0x2ea2fa){return{'name':_0x2ea2fa[_0xd207('0x26')],'type':_0x2ea2fa[_0xd207('0x27')][_0xd207('0x28')]};});_0x58be11[_0xd207('0x29')]=_[_0xd207('0x2a')](_0x49aa81,_0xd207('0x22'));_0x58be11[_0xd207('0x2b')]=_[_0xd207('0x2c')](_0x41665f[_0xd207('0x2b')]);_0x58be11[_0xd207('0x2d')]=_[_0xd207('0x2e')](_0x58be11[_0xd207('0x29')],_0x58be11['query']);_0xb5ccae['attributes']=_['intersection'](_0x58be11['model'],qs[_0xd207('0x2f')](_0x41665f[_0xd207('0x2b')][_0xd207('0x2f')]));_0xb5ccae[_0xd207('0x30')]=_0xb5ccae[_0xd207('0x30')][_0xd207('0x31')]?_0xb5ccae['attributes']:_0x58be11[_0xd207('0x29')];if(!_0x41665f[_0xd207('0x2b')]['hasOwnProperty'](_0xd207('0x32'))){_0xb5ccae[_0xd207('0x1a')]=qs[_0xd207('0x1a')](_0x41665f[_0xd207('0x2b')][_0xd207('0x1a')]);_0xb5ccae['offset']=qs[_0xd207('0x17')](_0x41665f['query'][_0xd207('0x17')]);}_0xb5ccae[_0xd207('0x33')]=qs[_0xd207('0x34')](_0x41665f[_0xd207('0x2b')][_0xd207('0x34')]);_0xb5ccae[_0xd207('0x35')]=qs['filters'](_['pick'](_0x41665f['query'],_0x58be11[_0xd207('0x2d')]),_0x49aa81);if(_0x41665f[_0xd207('0x2b')][_0xd207('0x36')]){_0xb5ccae[_0xd207('0x35')]=_[_0xd207('0x37')](_0xb5ccae[_0xd207('0x35')],{'$or':_['map'](_0x49aa81,function(_0x280625){if(_0x280625[_0xd207('0x27')]!=='VIRTUAL'){var _0x2b7e69={};_0x2b7e69[_0x280625['name']]={'$like':'%'+_0x41665f['query']['filter']+'%'};return _0x2b7e69;}})});}_0xb5ccae=_['merge']({},_0xb5ccae,_0x41665f[_0xd207('0x38')]);var _0x249591={'where':_0xb5ccae[_0xd207('0x35')]};return db['SmsQueueReport']['count'](_0x249591)[_0xd207('0x1e')](function(_0x104197){_0x508928[_0xd207('0x19')]=_0x104197;if(_0x41665f[_0xd207('0x2b')][_0xd207('0x39')]){_0xb5ccae[_0xd207('0x3a')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xd207('0x3b')](_0xb5ccae);})[_0xd207('0x1e')](function(_0x47c5f1){_0x508928[_0xd207('0x3c')]=_0x47c5f1;return _0x508928;})[_0xd207('0x1e')](respondWithFilteredResult(_0x1da66a,_0xb5ccae))[_0xd207('0x3d')](handleError(_0x1da66a,null));};exports[_0xd207('0x3e')]=function(_0x2fe698,_0x4dcf82){var _0x36d043={'raw':!![],'where':{'id':_0x2fe698['params']['id']}},_0x54a541={};_0x54a541['model']=_[_0xd207('0x2c')](db[_0xd207('0x24')][_0xd207('0x25')]);_0x54a541['query']=_[_0xd207('0x2c')](_0x2fe698['query']);_0x54a541[_0xd207('0x2d')]=_[_0xd207('0x2e')](_0x54a541[_0xd207('0x29')],_0x54a541[_0xd207('0x2b')]);_0x36d043['attributes']=_[_0xd207('0x2e')](_0x54a541[_0xd207('0x29')],qs[_0xd207('0x2f')](_0x2fe698[_0xd207('0x2b')][_0xd207('0x2f')]));_0x36d043[_0xd207('0x30')]=_0x36d043[_0xd207('0x30')][_0xd207('0x31')]?_0x36d043['attributes']:_0x54a541['model'];if(_0x2fe698['query']['includeAll']){_0x36d043[_0xd207('0x3a')]=[{'all':!![]}];}_0x36d043=_['merge']({},_0x36d043,_0x2fe698[_0xd207('0x38')]);return db[_0xd207('0x24')][_0xd207('0x3f')](_0x36d043)['then'](handleEntityNotFound(_0x4dcf82,null))['then'](respondWithResult(_0x4dcf82,null))[_0xd207('0x3d')](handleError(_0x4dcf82,null));};exports[_0xd207('0x40')]=function(_0x190f11,_0x160c87){return db['SmsQueueReport'][_0xd207('0x40')](_0x190f11[_0xd207('0x41')],{})['then'](respondWithResult(_0x160c87,0xc9))[_0xd207('0x3d')](handleError(_0x160c87,null));};exports[_0xd207('0x1d')]=function(_0x5a6951,_0x23665b){if(_0x5a6951[_0xd207('0x41')]['id']){delete _0x5a6951[_0xd207('0x41')]['id'];}return db[_0xd207('0x24')]['find']({'where':{'id':_0x5a6951[_0xd207('0x42')]['id']}})['then'](handleEntityNotFound(_0x23665b,null))['then'](saveUpdates(_0x5a6951[_0xd207('0x41')],null))['then'](respondWithResult(_0x23665b,null))[_0xd207('0x3d')](handleError(_0x23665b,null));};exports['destroy']=function(_0x1b6011,_0x1f7444){return db[_0xd207('0x24')]['find']({'where':{'id':_0x1b6011[_0xd207('0x42')]['id']}})[_0xd207('0x1e')](handleEntityNotFound(_0x1f7444,null))[_0xd207('0x1e')](removeEntity(_0x1f7444,null))['catch'](handleError(_0x1f7444,null));};exports[_0xd207('0x43')]=function(_0xfdf1de,_0x3098b9){return db['SmsQueueReport'][_0xd207('0x43')]()[_0xd207('0x1e')](respondWithResult(_0x3098b9,null))['catch'](handleError(_0x3098b9,null));};
\ No newline at end of file
+var _0x6e0a=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','error','name','map','SmsQueueReport','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','then','includeAll','include','findAll','catch','keys','options','find','body','params'];(function(_0x3c62ef,_0x4bb6ab){var _0x4d44f1=function(_0x12b12c){while(--_0x12b12c){_0x3c62ef['push'](_0x3c62ef['shift']());}};_0x4d44f1(++_0x4bb6ab);}(_0x6e0a,0x17d));var _0xa6e0=function(_0x47794f,_0x12c9b3){_0x47794f=_0x47794f-0x0;var _0x2ca51d=_0x6e0a[_0x47794f];return _0x2ca51d;};'use strict';var emlformat=require(_0xa6e0('0x0'));var rimraf=require(_0xa6e0('0x1'));var zipdir=require(_0xa6e0('0x2'));var jsonpatch=require(_0xa6e0('0x3'));var rp=require(_0xa6e0('0x4'));var moment=require('moment');var BPromise=require(_0xa6e0('0x5'));var Mustache=require(_0xa6e0('0x6'));var util=require('util');var path=require(_0xa6e0('0x7'));var sox=require(_0xa6e0('0x8'));var csv=require(_0xa6e0('0x9'));var ejs=require(_0xa6e0('0xa'));var fs=require('fs');var fs_extra=require(_0xa6e0('0xb'));var _=require('lodash');var squel=require(_0xa6e0('0xc'));var crypto=require(_0xa6e0('0xd'));var jsforce=require(_0xa6e0('0xe'));var deskjs=require(_0xa6e0('0xf'));var toCsv=require(_0xa6e0('0x9'));var querystring=require(_0xa6e0('0x10'));var Papa=require(_0xa6e0('0x11'));var Redis=require(_0xa6e0('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa6e0('0x13'));var as=require(_0xa6e0('0x14'));var hardwareService=require(_0xa6e0('0x15'));var logger=require(_0xa6e0('0x16'))(_0xa6e0('0x17'));var utils=require(_0xa6e0('0x18'));var config=require(_0xa6e0('0x19'));var licenseUtil=require(_0xa6e0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21139a,_0x176698){_0x176698=_0x176698||0xcc;return function(_0x306fec){if(_0x306fec){return _0x21139a[_0xa6e0('0x1b')](_0x176698);}return _0x21139a[_0xa6e0('0x1c')](_0x176698)[_0xa6e0('0x1d')]();};}function respondWithResult(_0x425734,_0x365f05){_0x365f05=_0x365f05||0xc8;return function(_0x2e374c){if(_0x2e374c){return _0x425734[_0xa6e0('0x1c')](_0x365f05)[_0xa6e0('0x1e')](_0x2e374c);}};}function respondWithFilteredResult(_0x2cab2c,_0x5944f8){return function(_0xfd8f58){if(_0xfd8f58){var _0x4d7895=typeof _0x5944f8[_0xa6e0('0x1f')]===_0xa6e0('0x20')&&typeof _0x5944f8['limit']===_0xa6e0('0x20');var _0x2bab50=_0xfd8f58['count'];var _0xc8da4c=_0x4d7895?0x0:_0x5944f8['offset'];var _0x154769=_0x4d7895?_0xfd8f58[_0xa6e0('0x21')]:_0x5944f8[_0xa6e0('0x1f')]+_0x5944f8[_0xa6e0('0x22')];var _0x428335;if(_0x154769>=_0x2bab50){_0x154769=_0x2bab50;_0x428335=0xc8;}else{_0x428335=0xce;}_0x2cab2c['status'](_0x428335);return _0x2cab2c['set'](_0xa6e0('0x23'),_0xc8da4c+'-'+_0x154769+'/'+_0x2bab50)[_0xa6e0('0x1e')](_0xfd8f58);}return null;};}function patchUpdates(_0x3ba81a){return function(_0xb2fce){try{jsonpatch[_0xa6e0('0x24')](_0xb2fce,_0x3ba81a,!![]);}catch(_0x16e561){return BPromise[_0xa6e0('0x25')](_0x16e561);}return _0xb2fce[_0xa6e0('0x26')]();};}function saveUpdates(_0x12722d,_0x430df4){return function(_0x3bab26){if(_0x3bab26){return _0x3bab26[_0xa6e0('0x27')](_0x12722d)['then'](function(_0x2f6f8e){return _0x2f6f8e;});}return null;};}function removeEntity(_0x37289d,_0x17494f){return function(_0x2dd937){if(_0x2dd937){return _0x2dd937[_0xa6e0('0x28')]()['then'](function(){_0x37289d[_0xa6e0('0x1c')](0xcc)[_0xa6e0('0x1d')]();});}};}function handleEntityNotFound(_0x6901c4,_0x5e2c78){return function(_0x3897cb){if(!_0x3897cb){_0x6901c4[_0xa6e0('0x1b')](0x194);}return _0x3897cb;};}function handleError(_0x995289,_0x14e361){_0x14e361=_0x14e361||0x1f4;return function(_0x4800e5){logger[_0xa6e0('0x29')](_0x4800e5['stack']);if(_0x4800e5[_0xa6e0('0x2a')]){delete _0x4800e5[_0xa6e0('0x2a')];}_0x995289[_0xa6e0('0x1c')](_0x14e361)['send'](_0x4800e5);};}exports['index']=function(_0x4d8aee,_0x37c471){var _0x5665a6={},_0xc927e8={},_0x15cf8e={'count':0x0,'rows':[]};var _0x1af2fb=_[_0xa6e0('0x2b')](db[_0xa6e0('0x2c')][_0xa6e0('0x2d')],function(_0x3b990d){return{'name':_0x3b990d[_0xa6e0('0x2e')],'type':_0x3b990d['type'][_0xa6e0('0x2f')]};});_0xc927e8[_0xa6e0('0x30')]=_[_0xa6e0('0x2b')](_0x1af2fb,'name');_0xc927e8[_0xa6e0('0x31')]=_['keys'](_0x4d8aee[_0xa6e0('0x31')]);_0xc927e8[_0xa6e0('0x32')]=_['intersection'](_0xc927e8[_0xa6e0('0x30')],_0xc927e8[_0xa6e0('0x31')]);_0x5665a6[_0xa6e0('0x33')]=_[_0xa6e0('0x34')](_0xc927e8[_0xa6e0('0x30')],qs[_0xa6e0('0x35')](_0x4d8aee[_0xa6e0('0x31')]['fields']));_0x5665a6[_0xa6e0('0x33')]=_0x5665a6[_0xa6e0('0x33')][_0xa6e0('0x36')]?_0x5665a6['attributes']:_0xc927e8['model'];if(!_0x4d8aee[_0xa6e0('0x31')][_0xa6e0('0x37')](_0xa6e0('0x38'))){_0x5665a6[_0xa6e0('0x22')]=qs[_0xa6e0('0x22')](_0x4d8aee[_0xa6e0('0x31')][_0xa6e0('0x22')]);_0x5665a6['offset']=qs[_0xa6e0('0x1f')](_0x4d8aee['query'][_0xa6e0('0x1f')]);}_0x5665a6[_0xa6e0('0x39')]=qs[_0xa6e0('0x3a')](_0x4d8aee[_0xa6e0('0x31')]['sort']);_0x5665a6[_0xa6e0('0x3b')]=qs[_0xa6e0('0x32')](_[_0xa6e0('0x3c')](_0x4d8aee['query'],_0xc927e8['filters']),_0x1af2fb);if(_0x4d8aee[_0xa6e0('0x31')][_0xa6e0('0x3d')]){_0x5665a6[_0xa6e0('0x3b')]=_['merge'](_0x5665a6['where'],{'$or':_[_0xa6e0('0x2b')](_0x1af2fb,function(_0x51ec2d){if(_0x51ec2d[_0xa6e0('0x3e')]!==_0xa6e0('0x3f')){var _0x4ae139={};_0x4ae139[_0x51ec2d[_0xa6e0('0x2a')]]={'$like':'%'+_0x4d8aee[_0xa6e0('0x31')][_0xa6e0('0x3d')]+'%'};return _0x4ae139;}})});}_0x5665a6=_[_0xa6e0('0x40')]({},_0x5665a6,_0x4d8aee['options']);var _0x475863={'where':_0x5665a6['where']};return db[_0xa6e0('0x2c')][_0xa6e0('0x21')](_0x475863)[_0xa6e0('0x41')](function(_0x330b2d){_0x15cf8e[_0xa6e0('0x21')]=_0x330b2d;if(_0x4d8aee[_0xa6e0('0x31')][_0xa6e0('0x42')]){_0x5665a6[_0xa6e0('0x43')]=[{'all':!![]}];}return db[_0xa6e0('0x2c')][_0xa6e0('0x44')](_0x5665a6);})['then'](function(_0xcaa860){_0x15cf8e['rows']=_0xcaa860;return _0x15cf8e;})[_0xa6e0('0x41')](respondWithFilteredResult(_0x37c471,_0x5665a6))[_0xa6e0('0x45')](handleError(_0x37c471,null));};exports['show']=function(_0x5d2b8e,_0x1d045f){var _0x4bf29c={'raw':!![],'where':{'id':_0x5d2b8e['params']['id']}},_0x4a1cb4={};_0x4a1cb4['model']=_['keys'](db[_0xa6e0('0x2c')]['rawAttributes']);_0x4a1cb4[_0xa6e0('0x31')]=_[_0xa6e0('0x46')](_0x5d2b8e[_0xa6e0('0x31')]);_0x4a1cb4[_0xa6e0('0x32')]=_[_0xa6e0('0x34')](_0x4a1cb4[_0xa6e0('0x30')],_0x4a1cb4[_0xa6e0('0x31')]);_0x4bf29c['attributes']=_['intersection'](_0x4a1cb4['model'],qs[_0xa6e0('0x35')](_0x5d2b8e['query']['fields']));_0x4bf29c[_0xa6e0('0x33')]=_0x4bf29c[_0xa6e0('0x33')][_0xa6e0('0x36')]?_0x4bf29c['attributes']:_0x4a1cb4[_0xa6e0('0x30')];if(_0x5d2b8e[_0xa6e0('0x31')][_0xa6e0('0x42')]){_0x4bf29c[_0xa6e0('0x43')]=[{'all':!![]}];}_0x4bf29c=_[_0xa6e0('0x40')]({},_0x4bf29c,_0x5d2b8e[_0xa6e0('0x47')]);return db[_0xa6e0('0x2c')][_0xa6e0('0x48')](_0x4bf29c)['then'](handleEntityNotFound(_0x1d045f,null))[_0xa6e0('0x41')](respondWithResult(_0x1d045f,null))[_0xa6e0('0x45')](handleError(_0x1d045f,null));};exports['create']=function(_0x57bde0,_0x30fed1){return db[_0xa6e0('0x2c')]['create'](_0x57bde0['body'],{})[_0xa6e0('0x41')](respondWithResult(_0x30fed1,0xc9))[_0xa6e0('0x45')](handleError(_0x30fed1,null));};exports['update']=function(_0x34a467,_0x2c8a83){if(_0x34a467[_0xa6e0('0x49')]['id']){delete _0x34a467[_0xa6e0('0x49')]['id'];}return db[_0xa6e0('0x2c')][_0xa6e0('0x48')]({'where':{'id':_0x34a467[_0xa6e0('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c8a83,null))[_0xa6e0('0x41')](saveUpdates(_0x34a467[_0xa6e0('0x49')],null))[_0xa6e0('0x41')](respondWithResult(_0x2c8a83,null))[_0xa6e0('0x45')](handleError(_0x2c8a83,null));};exports[_0xa6e0('0x28')]=function(_0x5f89dd,_0x4991a3){return db[_0xa6e0('0x2c')][_0xa6e0('0x48')]({'where':{'id':_0x5f89dd['params']['id']}})[_0xa6e0('0x41')](handleEntityNotFound(_0x4991a3,null))[_0xa6e0('0x41')](removeEntity(_0x4991a3,null))[_0xa6e0('0x45')](handleError(_0x4991a3,null));};exports[_0xa6e0('0x4b')]=function(_0xc7b69b,_0x59baf5){return db['SmsQueueReport'][_0xa6e0('0x4b')]()[_0xa6e0('0x41')](respondWithResult(_0x59baf5,null))[_0xa6e0('0x45')](handleError(_0x59baf5,null));};
\ No newline at end of file
index b231b3d..d1a10b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x69cf2c,_0x209feb){var _0x5a0817=function(_0x5bec49){while(--_0x5bec49){_0x69cf2c['push'](_0x69cf2c['shift']());}};_0x5a0817(++_0x209feb);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3f94f9,_0x42774b){_0x3f94f9=_0x3f94f9-0x0;var _0x46f84f=_0xcb91[_0x3f94f9];return _0x46f84f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x39de96,_0x456f61){var _0x23d31e=function(_0x13871f){while(--_0x13871f){_0x39de96['push'](_0x39de96['shift']());}};_0x23d31e(++_0x456f61);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5ee3015..1dc94bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3240=['http','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','update','body','raw','where','attributes','limit','UpdateSmsQueueReport','debug','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x57eed1,_0x23d4f4){var _0x4c8ab6=function(_0x550536){while(--_0x550536){_0x57eed1['push'](_0x57eed1['shift']());}};_0x4c8ab6(++_0x23d4f4);}(_0x3240,0xbc));var _0x0324=function(_0x31d7af,_0x1af9c6){_0x31d7af=_0x31d7af-0x0;var _0x32da1e=_0x3240[_0x31d7af];return _0x32da1e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0324('0x0'));var BPromise=require(_0x0324('0x1'));var rs=require(_0x0324('0x2'));var fs=require('fs');var Redis=require(_0x0324('0x3'));var db=require(_0x0324('0x4'))['db'];var utils=require(_0x0324('0x5'));var logger=require(_0x0324('0x6'))(_0x0324('0x7'));var config=require(_0x0324('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0324('0x9')][_0x0324('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ee606,_0x5d959b,_0x236bc4){return new BPromise(function(_0x31a244,_0x2d4646){return client['request'](_0x4ee606,_0x236bc4)[_0x0324('0xb')](function(_0x455516){logger[_0x0324('0xc')](_0x0324('0xd'),_0x5d959b,_0x0324('0xe'));logger['debug']('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x5d959b,_0x0324('0xe'),JSON[_0x0324('0xf')](_0x455516));if(_0x455516['error']){if(_0x455516[_0x0324('0x10')][_0x0324('0x11')]===0x1f4){logger[_0x0324('0x10')](_0x0324('0xd'),_0x5d959b,_0x455516[_0x0324('0x10')][_0x0324('0x12')]);return _0x2d4646(_0x455516['error'][_0x0324('0x12')]);}logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x5d959b,_0x455516[_0x0324('0x10')][_0x0324('0x12')]);return _0x31a244(_0x455516[_0x0324('0x10')][_0x0324('0x12')]);}else{logger[_0x0324('0xc')](_0x0324('0xd'),_0x5d959b,_0x0324('0xe'));_0x31a244(_0x455516[_0x0324('0x13')][_0x0324('0x12')]);}})[_0x0324('0x14')](function(_0x22e705){logger[_0x0324('0x10')](_0x0324('0xd'),_0x5d959b,_0x22e705);_0x2d4646(_0x22e705);});});}exports[_0x0324('0x15')]=function(_0x35a92d){var _0x26a2e3=this;return new Promise(function(_0x3d4de3,_0x1ab649){return db[_0x0324('0x16')][_0x0324('0x17')](_0x35a92d['body'],{'raw':_0x35a92d[_0x0324('0x18')]?_0x35a92d['options']['raw']===undefined?!![]:![]:!![]})[_0x0324('0xb')](function(_0x427a09){logger[_0x0324('0xc')]('CreateSmsQueueReport',_0x35a92d);logger['debug']('CreateSmsQueueReport',_0x35a92d,JSON[_0x0324('0xf')](_0x427a09));_0x3d4de3(_0x427a09);})[_0x0324('0x14')](function(_0x1d317f){logger[_0x0324('0x10')](_0x0324('0x15'),_0x1d317f['message'],_0x35a92d);_0x1ab649(_0x26a2e3['error'](0x1f4,_0x1d317f[_0x0324('0x12')]));});});};exports['UpdateSmsQueueReport']=function(_0x4abdf4){var _0x54733c=this;return new Promise(function(_0x4d87f4,_0x5caf17){return db[_0x0324('0x16')][_0x0324('0x19')](_0x4abdf4[_0x0324('0x1a')],{'raw':_0x4abdf4['options']?_0x4abdf4[_0x0324('0x18')][_0x0324('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4abdf4[_0x0324('0x18')]?_0x4abdf4[_0x0324('0x18')][_0x0324('0x1c')]||null:null,'attributes':_0x4abdf4['options']?_0x4abdf4[_0x0324('0x18')][_0x0324('0x1d')]||null:null,'limit':_0x4abdf4[_0x0324('0x18')]?_0x4abdf4[_0x0324('0x18')][_0x0324('0x1e')]||null:null})[_0x0324('0xb')](function(_0x17352c){logger[_0x0324('0xc')](_0x0324('0x1f'),_0x4abdf4);logger[_0x0324('0x20')]('UpdateSmsQueueReport',_0x4abdf4,JSON[_0x0324('0xf')](_0x17352c));_0x4d87f4(_0x17352c);})[_0x0324('0x14')](function(_0x2aed3c){logger[_0x0324('0x10')]('UpdateSmsQueueReport',_0x2aed3c['message'],_0x4abdf4);_0x5caf17(_0x54733c[_0x0324('0x10')](0x1f4,_0x2aed3c[_0x0324('0x12')]));});});};
\ No newline at end of file
+var _0x53f0=['attributes','limit','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','then','debug','UpdateSmsQueueReport','update','where'];(function(_0x46fea1,_0xad4438){var _0x4b57ef=function(_0x2ca7e2){while(--_0x2ca7e2){_0x46fea1['push'](_0x46fea1['shift']());}};_0x4b57ef(++_0xad4438);}(_0x53f0,0x1d0));var _0x053f=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x53f0[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x053f('0x0'));var util=require(_0x053f('0x1'));var moment=require(_0x053f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x053f('0x3'));var db=require(_0x053f('0x4'))['db'];var utils=require(_0x053f('0x5'));var logger=require(_0x053f('0x6'))(_0x053f('0x7'));var config=require(_0x053f('0x8'));var jayson=require(_0x053f('0x9'));var client=jayson[_0x053f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x565c7d,_0x1da7c1,_0x269f45){return new BPromise(function(_0x11a16c,_0x3bd95b){return client['request'](_0x565c7d,_0x269f45)['then'](function(_0x568a93){logger[_0x053f('0xb')](_0x053f('0xc'),_0x1da7c1,_0x053f('0xd'));logger['debug']('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x1da7c1,'request\x20sent',JSON[_0x053f('0xe')](_0x568a93));if(_0x568a93[_0x053f('0xf')]){if(_0x568a93[_0x053f('0xf')][_0x053f('0x10')]===0x1f4){logger[_0x053f('0xf')]('SmsQueueReport,\x20%s,\x20%s',_0x1da7c1,_0x568a93[_0x053f('0xf')]['message']);return _0x3bd95b(_0x568a93[_0x053f('0xf')][_0x053f('0x11')]);}logger[_0x053f('0xf')](_0x053f('0xc'),_0x1da7c1,_0x568a93[_0x053f('0xf')][_0x053f('0x11')]);return _0x11a16c(_0x568a93['error']['message']);}else{logger[_0x053f('0xb')]('SmsQueueReport,\x20%s,\x20%s',_0x1da7c1,_0x053f('0xd'));_0x11a16c(_0x568a93[_0x053f('0x12')]['message']);}})[_0x053f('0x13')](function(_0x3ec2a4){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x1da7c1,_0x3ec2a4);_0x3bd95b(_0x3ec2a4);});});}exports[_0x053f('0x14')]=function(_0x57af54){var _0x155d17=this;return new Promise(function(_0x22b47d,_0x47963a){return db[_0x053f('0x15')][_0x053f('0x16')](_0x57af54[_0x053f('0x17')],{'raw':_0x57af54[_0x053f('0x18')]?_0x57af54[_0x053f('0x18')][_0x053f('0x19')]===undefined?!![]:![]:!![]})[_0x053f('0x1a')](function(_0x299343){logger[_0x053f('0xb')](_0x053f('0x14'),_0x57af54);logger[_0x053f('0x1b')](_0x053f('0x14'),_0x57af54,JSON[_0x053f('0xe')](_0x299343));_0x22b47d(_0x299343);})[_0x053f('0x13')](function(_0x3760d7){logger[_0x053f('0xf')](_0x053f('0x14'),_0x3760d7['message'],_0x57af54);_0x47963a(_0x155d17['error'](0x1f4,_0x3760d7['message']));});});};exports[_0x053f('0x1c')]=function(_0x166e49){var _0x207639=this;return new Promise(function(_0x435a9e,_0x510fc9){return db[_0x053f('0x15')][_0x053f('0x1d')](_0x166e49[_0x053f('0x17')],{'raw':_0x166e49[_0x053f('0x18')]?_0x166e49[_0x053f('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x166e49[_0x053f('0x18')]?_0x166e49[_0x053f('0x18')][_0x053f('0x1e')]||null:null,'attributes':_0x166e49[_0x053f('0x18')]?_0x166e49[_0x053f('0x18')][_0x053f('0x1f')]||null:null,'limit':_0x166e49[_0x053f('0x18')]?_0x166e49[_0x053f('0x18')][_0x053f('0x20')]||null:null})[_0x053f('0x1a')](function(_0xed1414){logger[_0x053f('0xb')](_0x053f('0x1c'),_0x166e49);logger['debug'](_0x053f('0x1c'),_0x166e49,JSON['stringify'](_0xed1414));_0x435a9e(_0xed1414);})[_0x053f('0x13')](function(_0x7a6136){logger[_0x053f('0xf')]('UpdateSmsQueueReport',_0x7a6136[_0x053f('0x11')],_0x166e49);_0x510fc9(_0x207639[_0x053f('0xf')](0x1f4,_0x7a6136[_0x053f('0x11')]));});});};
\ No newline at end of file
index 432b081..31f0aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f5a=['delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','post','put'];(function(_0x25ce4d,_0x16f37f){var _0x74aec9=function(_0x299947){while(--_0x299947){_0x25ce4d['push'](_0x25ce4d['shift']());}};_0x74aec9(++_0x16f37f);}(_0x9f5a,0xbd));var _0xa9f5=function(_0x3961de,_0x37d939){_0x3961de=_0x3961de-0x0;var _0x1ed722=_0x9f5a[_0x3961de];return _0x1ed722;};'use strict';var multer=require(_0xa9f5('0x0'));var util=require(_0xa9f5('0x1'));var path=require(_0xa9f5('0x2'));var timeout=require(_0xa9f5('0x3'));var express=require('express');var router=express[_0xa9f5('0x4')]();var fs_extra=require(_0xa9f5('0x5'));var auth=require(_0xa9f5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa9f5('0x7'));var controller=require('./smsTransferReport.controller');router[_0xa9f5('0x8')]('/',auth[_0xa9f5('0x9')](),controller['index']);router[_0xa9f5('0x8')](_0xa9f5('0xa'),auth[_0xa9f5('0x9')](),controller[_0xa9f5('0xb')]);router[_0xa9f5('0x8')](_0xa9f5('0xc'),auth[_0xa9f5('0x9')](),controller['show']);router[_0xa9f5('0xd')]('/',auth[_0xa9f5('0x9')](),controller['create']);router[_0xa9f5('0xe')](_0xa9f5('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xa9f5('0xf')](_0xa9f5('0xc'),auth[_0xa9f5('0x9')](),controller[_0xa9f5('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xf006=['post','create','put','update','destroy','exports','path','connect-timeout','Router','../../components/auth/service','./smsTransferReport.controller','get','isAuthenticated','describe','/:id','show'];(function(_0x12e073,_0x2a6387){var _0x17e67b=function(_0x61b780){while(--_0x61b780){_0x12e073['push'](_0x12e073['shift']());}};_0x17e67b(++_0x2a6387);}(_0xf006,0x146));var _0x6f00=function(_0x39835b,_0x345db0){_0x39835b=_0x39835b-0x0;var _0x5b0c34=_0xf006[_0x39835b];return _0x5b0c34;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6f00('0x0'));var timeout=require(_0x6f00('0x1'));var express=require('express');var router=express[_0x6f00('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6f00('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6f00('0x4'));router[_0x6f00('0x5')]('/',auth[_0x6f00('0x6')](),controller['index']);router[_0x6f00('0x5')]('/describe',auth[_0x6f00('0x6')](),controller[_0x6f00('0x7')]);router[_0x6f00('0x5')](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0x9')]);router[_0x6f00('0xa')]('/',auth[_0x6f00('0x6')](),controller[_0x6f00('0xb')]);router[_0x6f00('0xc')](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xd')]);router['delete'](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xe')]);module[_0x6f00('0xf')]=router;
\ No newline at end of file
index bdd8235..e98289d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x53f6c1,_0x3d52a8){var _0x3e3374=function(_0x1fde56){while(--_0x1fde56){_0x53f6c1['push'](_0x53f6c1['shift']());}};_0x3e3374(++_0x3d52a8);}(_0x00bb,0x1d8));var _0xb00b=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x00bb[_0x4709c0];return _0x13348b;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x21e71a,_0xf0b818){var _0x174f46=function(_0x2dd53e){while(--_0x2dd53e){_0x21e71a['push'](_0x21e71a['shift']());}};_0x174f46(++_0xf0b818);}(_0x4b84,0x1cc));var _0x44b8=function(_0x52f1e6,_0xf70489){_0x52f1e6=_0x52f1e6-0x0;var _0x21f104=_0x4b84[_0x52f1e6];return _0x21f104;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index a036692..e1b37ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53dd=['fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','sendStatus','end','offset','undefined','limit','count','status','Content-Range','json','apply','reject','save','update','then','destroy','error','name','index','map','SmsTransferReport','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','describe','eml-format','moment','bluebird','util','path','ejs'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x53dd,0xd2));var _0xd53d=function(_0x2466c8,_0x5da60f){_0x2466c8=_0x2466c8-0x0;var _0x56316d=_0x53dd[_0x2466c8];return _0x56316d;};'use strict';var emlformat=require(_0xd53d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd53d('0x1'));var BPromise=require(_0xd53d('0x2'));var Mustache=require('mustache');var util=require(_0xd53d('0x3'));var path=require(_0xd53d('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd53d('0x5'));var fs=require('fs');var fs_extra=require(_0xd53d('0x6'));var _=require(_0xd53d('0x7'));var squel=require(_0xd53d('0x8'));var crypto=require(_0xd53d('0x9'));var jsforce=require(_0xd53d('0xa'));var deskjs=require(_0xd53d('0xb'));var toCsv=require(_0xd53d('0xc'));var querystring=require(_0xd53d('0xd'));var Papa=require(_0xd53d('0xe'));var Redis=require('ioredis');var authService=require(_0xd53d('0xf'));var qs=require(_0xd53d('0x10'));var as=require(_0xd53d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd53d('0x12'));var utils=require('../../config/utils');var config=require(_0xd53d('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x246bde,_0x197174){_0x197174=_0x197174||0xcc;return function(_0x57b80a){if(_0x57b80a){return _0x246bde[_0xd53d('0x14')](_0x197174);}return _0x246bde['status'](_0x197174)[_0xd53d('0x15')]();};}function respondWithResult(_0x203724,_0x528cc0){_0x528cc0=_0x528cc0||0xc8;return function(_0x2df558){if(_0x2df558){return _0x203724['status'](_0x528cc0)['json'](_0x2df558);}};}function respondWithFilteredResult(_0x2bb6d8,_0x6acf52){return function(_0x2779bc){if(_0x2779bc){var _0x4da634=typeof _0x6acf52[_0xd53d('0x16')]===_0xd53d('0x17')&&typeof _0x6acf52[_0xd53d('0x18')]===_0xd53d('0x17');var _0x40a619=_0x2779bc[_0xd53d('0x19')];var _0x1e43cc=_0x4da634?0x0:_0x6acf52[_0xd53d('0x16')];var _0x28675d=_0x4da634?_0x2779bc[_0xd53d('0x19')]:_0x6acf52[_0xd53d('0x16')]+_0x6acf52[_0xd53d('0x18')];var _0x629864;if(_0x28675d>=_0x40a619){_0x28675d=_0x40a619;_0x629864=0xc8;}else{_0x629864=0xce;}_0x2bb6d8[_0xd53d('0x1a')](_0x629864);return _0x2bb6d8['set'](_0xd53d('0x1b'),_0x1e43cc+'-'+_0x28675d+'/'+_0x40a619)[_0xd53d('0x1c')](_0x2779bc);}return null;};}function patchUpdates(_0xc212c0){return function(_0x5c7da4){try{jsonpatch[_0xd53d('0x1d')](_0x5c7da4,_0xc212c0,!![]);}catch(_0x81e14b){return BPromise[_0xd53d('0x1e')](_0x81e14b);}return _0x5c7da4[_0xd53d('0x1f')]();};}function saveUpdates(_0x568d61,_0x1fcb57){return function(_0x3836ca){if(_0x3836ca){return _0x3836ca[_0xd53d('0x20')](_0x568d61)[_0xd53d('0x21')](function(_0xd1d4dc){return _0xd1d4dc;});}return null;};}function removeEntity(_0x298ba5,_0x320c06){return function(_0x52c2bd){if(_0x52c2bd){return _0x52c2bd[_0xd53d('0x22')]()['then'](function(){_0x298ba5[_0xd53d('0x1a')](0xcc)[_0xd53d('0x15')]();});}};}function handleEntityNotFound(_0x5b6c5f,_0x14aefb){return function(_0x37061f){if(!_0x37061f){_0x5b6c5f[_0xd53d('0x14')](0x194);}return _0x37061f;};}function handleError(_0x4443e7,_0x5b873e){_0x5b873e=_0x5b873e||0x1f4;return function(_0xa7065a){logger[_0xd53d('0x23')](_0xa7065a['stack']);if(_0xa7065a['name']){delete _0xa7065a[_0xd53d('0x24')];}_0x4443e7['status'](_0x5b873e)['send'](_0xa7065a);};}exports[_0xd53d('0x25')]=function(_0xe51b46,_0x16cb76){var _0x26e154={},_0x500a2f={},_0x26cbdb={'count':0x0,'rows':[]};var _0x316692=_[_0xd53d('0x26')](db[_0xd53d('0x27')]['rawAttributes'],function(_0x16c37e){return{'name':_0x16c37e[_0xd53d('0x28')],'type':_0x16c37e[_0xd53d('0x29')][_0xd53d('0x2a')]};});_0x500a2f[_0xd53d('0x2b')]=_[_0xd53d('0x26')](_0x316692,'name');_0x500a2f[_0xd53d('0x2c')]=_[_0xd53d('0x2d')](_0xe51b46[_0xd53d('0x2c')]);_0x500a2f[_0xd53d('0x2e')]=_['intersection'](_0x500a2f[_0xd53d('0x2b')],_0x500a2f[_0xd53d('0x2c')]);_0x26e154[_0xd53d('0x2f')]=_[_0xd53d('0x30')](_0x500a2f[_0xd53d('0x2b')],qs[_0xd53d('0x31')](_0xe51b46[_0xd53d('0x2c')][_0xd53d('0x31')]));_0x26e154[_0xd53d('0x2f')]=_0x26e154[_0xd53d('0x2f')][_0xd53d('0x32')]?_0x26e154[_0xd53d('0x2f')]:_0x500a2f[_0xd53d('0x2b')];if(!_0xe51b46[_0xd53d('0x2c')][_0xd53d('0x33')](_0xd53d('0x34'))){_0x26e154['limit']=qs[_0xd53d('0x18')](_0xe51b46['query'][_0xd53d('0x18')]);_0x26e154['offset']=qs[_0xd53d('0x16')](_0xe51b46['query'][_0xd53d('0x16')]);}_0x26e154[_0xd53d('0x35')]=qs['sort'](_0xe51b46['query'][_0xd53d('0x36')]);_0x26e154[_0xd53d('0x37')]=qs[_0xd53d('0x2e')](_[_0xd53d('0x38')](_0xe51b46[_0xd53d('0x2c')],_0x500a2f[_0xd53d('0x2e')]),_0x316692);if(_0xe51b46[_0xd53d('0x2c')]['filter']){_0x26e154['where']=_[_0xd53d('0x39')](_0x26e154[_0xd53d('0x37')],{'$or':_[_0xd53d('0x26')](_0x316692,function(_0x3e3479){if(_0x3e3479['type']!==_0xd53d('0x3a')){var _0x55230a={};_0x55230a[_0x3e3479[_0xd53d('0x24')]]={'$like':'%'+_0xe51b46[_0xd53d('0x2c')][_0xd53d('0x3b')]+'%'};return _0x55230a;}})});}_0x26e154=_[_0xd53d('0x39')]({},_0x26e154,_0xe51b46[_0xd53d('0x3c')]);var _0xb83459={'where':_0x26e154[_0xd53d('0x37')]};return db[_0xd53d('0x27')]['count'](_0xb83459)[_0xd53d('0x21')](function(_0x147340){_0x26cbdb[_0xd53d('0x19')]=_0x147340;if(_0xe51b46[_0xd53d('0x2c')]['includeAll']){_0x26e154[_0xd53d('0x3d')]=[{'all':!![]}];}return db[_0xd53d('0x27')][_0xd53d('0x3e')](_0x26e154);})['then'](function(_0x584cb6){_0x26cbdb[_0xd53d('0x3f')]=_0x584cb6;return _0x26cbdb;})[_0xd53d('0x21')](respondWithFilteredResult(_0x16cb76,_0x26e154))[_0xd53d('0x40')](handleError(_0x16cb76,null));};exports[_0xd53d('0x41')]=function(_0x163610,_0xa53c6a){var _0x1dc6fc={'raw':!![],'where':{'id':_0x163610[_0xd53d('0x42')]['id']}},_0x5b929a={};_0x5b929a['model']=_[_0xd53d('0x2d')](db['SmsTransferReport'][_0xd53d('0x43')]);_0x5b929a[_0xd53d('0x2c')]=_['keys'](_0x163610[_0xd53d('0x2c')]);_0x5b929a[_0xd53d('0x2e')]=_[_0xd53d('0x30')](_0x5b929a[_0xd53d('0x2b')],_0x5b929a[_0xd53d('0x2c')]);_0x1dc6fc[_0xd53d('0x2f')]=_['intersection'](_0x5b929a[_0xd53d('0x2b')],qs[_0xd53d('0x31')](_0x163610[_0xd53d('0x2c')]['fields']));_0x1dc6fc['attributes']=_0x1dc6fc['attributes'][_0xd53d('0x32')]?_0x1dc6fc[_0xd53d('0x2f')]:_0x5b929a['model'];if(_0x163610[_0xd53d('0x2c')]['includeAll']){_0x1dc6fc[_0xd53d('0x3d')]=[{'all':!![]}];}_0x1dc6fc=_[_0xd53d('0x39')]({},_0x1dc6fc,_0x163610[_0xd53d('0x3c')]);return db[_0xd53d('0x27')]['find'](_0x1dc6fc)['then'](handleEntityNotFound(_0xa53c6a,null))['then'](respondWithResult(_0xa53c6a,null))[_0xd53d('0x40')](handleError(_0xa53c6a,null));};exports[_0xd53d('0x44')]=function(_0x389459,_0x219b73){return db[_0xd53d('0x27')][_0xd53d('0x44')](_0x389459[_0xd53d('0x45')],{})[_0xd53d('0x21')](respondWithResult(_0x219b73,0xc9))['catch'](handleError(_0x219b73,null));};exports[_0xd53d('0x20')]=function(_0x27590d,_0x3901f3){if(_0x27590d[_0xd53d('0x45')]['id']){delete _0x27590d['body']['id'];}return db[_0xd53d('0x27')]['find']({'where':{'id':_0x27590d['params']['id']}})['then'](handleEntityNotFound(_0x3901f3,null))[_0xd53d('0x21')](saveUpdates(_0x27590d[_0xd53d('0x45')],null))[_0xd53d('0x21')](respondWithResult(_0x3901f3,null))[_0xd53d('0x40')](handleError(_0x3901f3,null));};exports[_0xd53d('0x22')]=function(_0x390afc,_0x2cf625){return db[_0xd53d('0x27')][_0xd53d('0x46')]({'where':{'id':_0x390afc[_0xd53d('0x42')]['id']}})[_0xd53d('0x21')](handleEntityNotFound(_0x2cf625,null))[_0xd53d('0x21')](removeEntity(_0x2cf625,null))[_0xd53d('0x40')](handleError(_0x2cf625,null));};exports[_0xd53d('0x47')]=function(_0x1aa9d2,_0x180423){return db[_0xd53d('0x27')][_0xd53d('0x47')]()['then'](respondWithResult(_0x180423,null))[_0xd53d('0x40')](handleError(_0x180423,null));};
\ No newline at end of file
+var _0x747e=['zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','params','find','catch','create','body','update','describe','rimraf'];(function(_0x6048e7,_0x485f4f){var _0x576f4c=function(_0x20893f){while(--_0x20893f){_0x6048e7['push'](_0x6048e7['shift']());}};_0x576f4c(++_0x485f4f);}(_0x747e,0x17b));var _0xe747=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x747e[_0x220f3f];return _0x1f170e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe747('0x0'));var zipdir=require(_0xe747('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe747('0x2'));var moment=require(_0xe747('0x3'));var BPromise=require(_0xe747('0x4'));var Mustache=require(_0xe747('0x5'));var util=require(_0xe747('0x6'));var path=require(_0xe747('0x7'));var sox=require(_0xe747('0x8'));var csv=require(_0xe747('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe747('0xa'));var _=require(_0xe747('0xb'));var squel=require(_0xe747('0xc'));var crypto=require(_0xe747('0xd'));var jsforce=require(_0xe747('0xe'));var deskjs=require(_0xe747('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe747('0x10'));var Papa=require(_0xe747('0x11'));var Redis=require(_0xe747('0x12'));var authService=require(_0xe747('0x13'));var qs=require(_0xe747('0x14'));var as=require(_0xe747('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe747('0x16'))('api');var utils=require(_0xe747('0x17'));var config=require(_0xe747('0x18'));var licenseUtil=require(_0xe747('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d7f12,_0x422f8f){_0x422f8f=_0x422f8f||0xcc;return function(_0x4a5cd4){if(_0x4a5cd4){return _0x4d7f12[_0xe747('0x1a')](_0x422f8f);}return _0x4d7f12[_0xe747('0x1b')](_0x422f8f)['end']();};}function respondWithResult(_0x3f2291,_0x441949){_0x441949=_0x441949||0xc8;return function(_0x3d1de9){if(_0x3d1de9){return _0x3f2291[_0xe747('0x1b')](_0x441949)[_0xe747('0x1c')](_0x3d1de9);}};}function respondWithFilteredResult(_0x41fe2f,_0x942362){return function(_0x4901af){if(_0x4901af){var _0x28b08e=typeof _0x942362[_0xe747('0x1d')]===_0xe747('0x1e')&&typeof _0x942362[_0xe747('0x1f')]===_0xe747('0x1e');var _0x397560=_0x4901af['count'];var _0x228d43=_0x28b08e?0x0:_0x942362[_0xe747('0x1d')];var _0x4cbe4c=_0x28b08e?_0x4901af[_0xe747('0x20')]:_0x942362[_0xe747('0x1d')]+_0x942362[_0xe747('0x1f')];var _0x499374;if(_0x4cbe4c>=_0x397560){_0x4cbe4c=_0x397560;_0x499374=0xc8;}else{_0x499374=0xce;}_0x41fe2f[_0xe747('0x1b')](_0x499374);return _0x41fe2f['set'](_0xe747('0x21'),_0x228d43+'-'+_0x4cbe4c+'/'+_0x397560)[_0xe747('0x1c')](_0x4901af);}return null;};}function patchUpdates(_0x513739){return function(_0x5017ae){try{jsonpatch[_0xe747('0x22')](_0x5017ae,_0x513739,!![]);}catch(_0x75eea6){return BPromise['reject'](_0x75eea6);}return _0x5017ae[_0xe747('0x23')]();};}function saveUpdates(_0x298e96,_0x21c505){return function(_0x3a29b4){if(_0x3a29b4){return _0x3a29b4['update'](_0x298e96)[_0xe747('0x24')](function(_0x3c1dc5){return _0x3c1dc5;});}return null;};}function removeEntity(_0x45c899,_0x8b5d){return function(_0x24f47f){if(_0x24f47f){return _0x24f47f[_0xe747('0x25')]()['then'](function(){_0x45c899[_0xe747('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c8d8d,_0x10392d){return function(_0x46b338){if(!_0x46b338){_0x4c8d8d['sendStatus'](0x194);}return _0x46b338;};}function handleError(_0x56b0f0,_0x5aacd2){_0x5aacd2=_0x5aacd2||0x1f4;return function(_0x206825){logger[_0xe747('0x26')](_0x206825[_0xe747('0x27')]);if(_0x206825[_0xe747('0x28')]){delete _0x206825[_0xe747('0x28')];}_0x56b0f0[_0xe747('0x1b')](_0x5aacd2)[_0xe747('0x29')](_0x206825);};}exports[_0xe747('0x2a')]=function(_0x459000,_0x8455a3){var _0x253472={},_0x125054={},_0x19ac94={'count':0x0,'rows':[]};var _0x122007=_[_0xe747('0x2b')](db[_0xe747('0x2c')][_0xe747('0x2d')],function(_0x2a1497){return{'name':_0x2a1497[_0xe747('0x2e')],'type':_0x2a1497[_0xe747('0x2f')][_0xe747('0x30')]};});_0x125054[_0xe747('0x31')]=_[_0xe747('0x2b')](_0x122007,_0xe747('0x28'));_0x125054['query']=_[_0xe747('0x32')](_0x459000[_0xe747('0x33')]);_0x125054['filters']=_[_0xe747('0x34')](_0x125054[_0xe747('0x31')],_0x125054[_0xe747('0x33')]);_0x253472['attributes']=_['intersection'](_0x125054[_0xe747('0x31')],qs[_0xe747('0x35')](_0x459000[_0xe747('0x33')][_0xe747('0x35')]));_0x253472['attributes']=_0x253472[_0xe747('0x36')]['length']?_0x253472['attributes']:_0x125054[_0xe747('0x31')];if(!_0x459000['query'][_0xe747('0x37')](_0xe747('0x38'))){_0x253472['limit']=qs[_0xe747('0x1f')](_0x459000['query']['limit']);_0x253472[_0xe747('0x1d')]=qs[_0xe747('0x1d')](_0x459000[_0xe747('0x33')]['offset']);}_0x253472[_0xe747('0x39')]=qs[_0xe747('0x3a')](_0x459000['query']['sort']);_0x253472[_0xe747('0x3b')]=qs[_0xe747('0x3c')](_[_0xe747('0x3d')](_0x459000['query'],_0x125054[_0xe747('0x3c')]),_0x122007);if(_0x459000['query'][_0xe747('0x3e')]){_0x253472['where']=_[_0xe747('0x3f')](_0x253472['where'],{'$or':_[_0xe747('0x2b')](_0x122007,function(_0x14f69b){if(_0x14f69b[_0xe747('0x2f')]!=='VIRTUAL'){var _0x1cd40d={};_0x1cd40d[_0x14f69b[_0xe747('0x28')]]={'$like':'%'+_0x459000[_0xe747('0x33')][_0xe747('0x3e')]+'%'};return _0x1cd40d;}})});}_0x253472=_[_0xe747('0x3f')]({},_0x253472,_0x459000[_0xe747('0x40')]);var _0x14e5d1={'where':_0x253472[_0xe747('0x3b')]};return db[_0xe747('0x2c')][_0xe747('0x20')](_0x14e5d1)[_0xe747('0x24')](function(_0x57616c){_0x19ac94[_0xe747('0x20')]=_0x57616c;if(_0x459000[_0xe747('0x33')][_0xe747('0x41')]){_0x253472[_0xe747('0x42')]=[{'all':!![]}];}return db[_0xe747('0x2c')][_0xe747('0x43')](_0x253472);})[_0xe747('0x24')](function(_0x1b5dcb){_0x19ac94[_0xe747('0x44')]=_0x1b5dcb;return _0x19ac94;})['then'](respondWithFilteredResult(_0x8455a3,_0x253472))['catch'](handleError(_0x8455a3,null));};exports['show']=function(_0x3687b5,_0x30ddc7){var _0x33cf72={'raw':!![],'where':{'id':_0x3687b5[_0xe747('0x45')]['id']}},_0x75e689={};_0x75e689[_0xe747('0x31')]=_[_0xe747('0x32')](db['SmsTransferReport'][_0xe747('0x2d')]);_0x75e689[_0xe747('0x33')]=_[_0xe747('0x32')](_0x3687b5[_0xe747('0x33')]);_0x75e689['filters']=_['intersection'](_0x75e689[_0xe747('0x31')],_0x75e689[_0xe747('0x33')]);_0x33cf72[_0xe747('0x36')]=_[_0xe747('0x34')](_0x75e689[_0xe747('0x31')],qs[_0xe747('0x35')](_0x3687b5[_0xe747('0x33')]['fields']));_0x33cf72['attributes']=_0x33cf72['attributes']['length']?_0x33cf72[_0xe747('0x36')]:_0x75e689[_0xe747('0x31')];if(_0x3687b5[_0xe747('0x33')][_0xe747('0x41')]){_0x33cf72[_0xe747('0x42')]=[{'all':!![]}];}_0x33cf72=_[_0xe747('0x3f')]({},_0x33cf72,_0x3687b5['options']);return db[_0xe747('0x2c')][_0xe747('0x46')](_0x33cf72)[_0xe747('0x24')](handleEntityNotFound(_0x30ddc7,null))[_0xe747('0x24')](respondWithResult(_0x30ddc7,null))[_0xe747('0x47')](handleError(_0x30ddc7,null));};exports['create']=function(_0x49d9ba,_0x44fded){return db[_0xe747('0x2c')][_0xe747('0x48')](_0x49d9ba[_0xe747('0x49')],{})[_0xe747('0x24')](respondWithResult(_0x44fded,0xc9))[_0xe747('0x47')](handleError(_0x44fded,null));};exports[_0xe747('0x4a')]=function(_0x35f057,_0x3b9386){if(_0x35f057[_0xe747('0x49')]['id']){delete _0x35f057[_0xe747('0x49')]['id'];}return db[_0xe747('0x2c')][_0xe747('0x46')]({'where':{'id':_0x35f057[_0xe747('0x45')]['id']}})[_0xe747('0x24')](handleEntityNotFound(_0x3b9386,null))[_0xe747('0x24')](saveUpdates(_0x35f057[_0xe747('0x49')],null))[_0xe747('0x24')](respondWithResult(_0x3b9386,null))[_0xe747('0x47')](handleError(_0x3b9386,null));};exports[_0xe747('0x25')]=function(_0x2d875e,_0xb85352){return db['SmsTransferReport'][_0xe747('0x46')]({'where':{'id':_0x2d875e['params']['id']}})[_0xe747('0x24')](handleEntityNotFound(_0xb85352,null))[_0xe747('0x24')](removeEntity(_0xb85352,null))[_0xe747('0x47')](handleError(_0xb85352,null));};exports[_0xe747('0x4b')]=function(_0x586e6a,_0x26818b){return db[_0xe747('0x2c')]['describe']()[_0xe747('0x24')](respondWithResult(_0x26818b,null))[_0xe747('0x47')](handleError(_0x26818b,null));};
\ No newline at end of file
index 638ef14..ee8850c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaba=['SmsTransferReport','uniqueid','lodash','util','../../config/logger','api','bluebird','rimraf','./smsTransferReport.attributes','define'];(function(_0x15d1c4,_0x5a032e){var _0x481032=function(_0x19f55e){while(--_0x19f55e){_0x15d1c4['push'](_0x15d1c4['shift']());}};_0x481032(++_0x5a032e);}(_0xfaba,0xa2));var _0xafab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfaba[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xafab('0x0'));var util=require(_0xafab('0x1'));var logger=require(_0xafab('0x2'))(_0xafab('0x3'));var moment=require('moment');var BPromise=require(_0xafab('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xafab('0x5'));var config=require('../../config/environment');var attributes=require(_0xafab('0x6'));module['exports']=function(_0x180e83,_0x5154e0){return _0x180e83[_0xafab('0x7')](_0xafab('0x8'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xafab('0x9'),'fields':[_0xafab('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcea5=['request-promise','path','rimraf','../../config/environment','exports','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x5bb5d2,_0x2ae3fc){var _0x527b03=function(_0xf5c348){while(--_0xf5c348){_0x5bb5d2['push'](_0x5bb5d2['shift']());}};_0x527b03(++_0x2ae3fc);}(_0xcea5,0xed));var _0x5cea=function(_0x1a6c52,_0x5119de){_0x1a6c52=_0x1a6c52-0x0;var _0x137640=_0xcea5[_0x1a6c52];return _0x137640;};'use strict';var _=require(_0x5cea('0x0'));var util=require(_0x5cea('0x1'));var logger=require(_0x5cea('0x2'))(_0x5cea('0x3'));var moment=require(_0x5cea('0x4'));var BPromise=require('bluebird');var rp=require(_0x5cea('0x5'));var fs=require('fs');var path=require(_0x5cea('0x6'));var rimraf=require(_0x5cea('0x7'));var config=require(_0x5cea('0x8'));var attributes=require('./smsTransferReport.attributes');module[_0x5cea('0x9')]=function(_0x31e6f3,_0x599bc5){return _0x31e6f3['define']('SmsTransferReport',attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x5cea('0xa'),'fields':[_0x5cea('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 9dbea01..9a6974e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff98=['../../mysqldb','../../config/logger','../../config/environment','client','http','request','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','util','moment','bluebird','randomstring'];(function(_0x59e695,_0x410a67){var _0x1025a5=function(_0x175c3f){while(--_0x175c3f){_0x59e695['push'](_0x59e695['shift']());}};_0x1025a5(++_0x410a67);}(_0xff98,0x9c));var _0x8ff9=function(_0x1901df,_0xe7cc45){_0x1901df=_0x1901df-0x0;var _0x3878b3=_0xff98[_0x1901df];return _0x3878b3;};'use strict';var _=require('lodash');var util=require(_0x8ff9('0x0'));var moment=require(_0x8ff9('0x1'));var BPromise=require(_0x8ff9('0x2'));var rs=require(_0x8ff9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ff9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8ff9('0x5'))('rpc');var config=require(_0x8ff9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8ff9('0x7')][_0x8ff9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4122b2,_0x3e6002,_0x280acf){return new BPromise(function(_0x428b0f,_0x32d672){return client[_0x8ff9('0x9')](_0x4122b2,_0x280acf)['then'](function(_0x36de34){logger[_0x8ff9('0xa')](_0x8ff9('0xb'),_0x3e6002,_0x8ff9('0xc'));logger[_0x8ff9('0xd')](_0x8ff9('0xe'),_0x3e6002,_0x8ff9('0xc'),JSON['stringify'](_0x36de34));if(_0x36de34['error']){if(_0x36de34['error'][_0x8ff9('0xf')]===0x1f4){logger[_0x8ff9('0x10')](_0x8ff9('0xb'),_0x3e6002,_0x36de34['error'][_0x8ff9('0x11')]);return _0x32d672(_0x36de34[_0x8ff9('0x10')][_0x8ff9('0x11')]);}logger[_0x8ff9('0x10')](_0x8ff9('0xb'),_0x3e6002,_0x36de34[_0x8ff9('0x10')][_0x8ff9('0x11')]);return _0x428b0f(_0x36de34['error'][_0x8ff9('0x11')]);}else{logger[_0x8ff9('0xa')](_0x8ff9('0xb'),_0x3e6002,'request\x20sent');_0x428b0f(_0x36de34[_0x8ff9('0x12')]['message']);}})[_0x8ff9('0x13')](function(_0x578fe3){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x3e6002,_0x578fe3);_0x32d672(_0x578fe3);});});}
\ No newline at end of file
+var _0x1061=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','randomstring','ioredis'];(function(_0x3c1d04,_0x512afa){var _0x3a780c=function(_0x164c58){while(--_0x164c58){_0x3c1d04['push'](_0x3c1d04['shift']());}};_0x3a780c(++_0x512afa);}(_0x1061,0x1b5));var _0x1106=function(_0x499134,_0x543725){_0x499134=_0x499134-0x0;var _0x54a45a=_0x1061[_0x499134];return _0x54a45a;};'use strict';var _=require(_0x1106('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1106('0x1'));var fs=require('fs');var Redis=require(_0x1106('0x2'));var db=require(_0x1106('0x3'))['db'];var utils=require(_0x1106('0x4'));var logger=require(_0x1106('0x5'))(_0x1106('0x6'));var config=require(_0x1106('0x7'));var jayson=require(_0x1106('0x8'));var client=jayson['client'][_0x1106('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36bfb3,_0x54d2d5,_0x523f0f){return new BPromise(function(_0x287336,_0x3056e0){return client['request'](_0x36bfb3,_0x523f0f)['then'](function(_0x223c85){logger[_0x1106('0xa')](_0x1106('0xb'),_0x54d2d5,_0x1106('0xc'));logger[_0x1106('0xd')](_0x1106('0xe'),_0x54d2d5,_0x1106('0xc'),JSON[_0x1106('0xf')](_0x223c85));if(_0x223c85[_0x1106('0x10')]){if(_0x223c85[_0x1106('0x10')]['code']===0x1f4){logger[_0x1106('0x10')](_0x1106('0xb'),_0x54d2d5,_0x223c85[_0x1106('0x10')][_0x1106('0x11')]);return _0x3056e0(_0x223c85[_0x1106('0x10')][_0x1106('0x11')]);}logger[_0x1106('0x10')](_0x1106('0xb'),_0x54d2d5,_0x223c85[_0x1106('0x10')][_0x1106('0x11')]);return _0x287336(_0x223c85[_0x1106('0x10')][_0x1106('0x11')]);}else{logger[_0x1106('0xa')](_0x1106('0xb'),_0x54d2d5,_0x1106('0xc'));_0x287336(_0x223c85[_0x1106('0x12')][_0x1106('0x11')]);}})[_0x1106('0x13')](function(_0x547ca3){logger['error'](_0x1106('0xb'),_0x54d2d5,_0x547ca3);_0x3056e0(_0x547ca3);});});}
\ No newline at end of file
index 60ddb54..4e574f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc56=['index','get','/:id','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','format','%s-%s%s','basename','now','extname','file','create','put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated'];(function(_0x568039,_0x570f8e){var _0x1595fc=function(_0x50ac8f){while(--_0x50ac8f){_0x568039['push'](_0x568039['shift']());}};_0x1595fc(++_0x570f8e);}(_0xdc56,0x18a));var _0x6dc5=function(_0x229d7e,_0x5bc489){_0x229d7e=_0x229d7e-0x0;var _0xa78280=_0xdc56[_0x229d7e];return _0xa78280;};'use strict';var multer=require('multer');var util=require(_0x6dc5('0x0'));var path=require(_0x6dc5('0x1'));var timeout=require(_0x6dc5('0x2'));var express=require(_0x6dc5('0x3'));var router=express['Router']();var fs_extra=require(_0x6dc5('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6dc5('0x5'));var config=require(_0x6dc5('0x6'));var controller=require(_0x6dc5('0x7'));router['get']('/',auth[_0x6dc5('0x8')](),controller[_0x6dc5('0x9')]);router[_0x6dc5('0xa')](_0x6dc5('0xb'),auth[_0x6dc5('0x8')](),controller[_0x6dc5('0xc')]);router[_0x6dc5('0xa')](_0x6dc5('0xd'),auth['isAuthenticated'](),controller[_0x6dc5('0xe')]);var upload=multer({'storage':multer[_0x6dc5('0xf')]({'destination':function(_0x123bbb,_0x1ce619,_0x102ac9){_0x102ac9(null,path[_0x6dc5('0x10')](config[_0x6dc5('0x11')],_0x6dc5('0x12')));},'filename':function(_0x2a0c94,_0x32aee6,_0x30d710){_0x32aee6[_0x6dc5('0x13')]=_0x32aee6[_0x6dc5('0x13')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x30d710(null,util[_0x6dc5('0x14')](_0x6dc5('0x15'),path[_0x6dc5('0x16')](_0x32aee6['originalname'],path['extname'](_0x32aee6['originalname'])),Date[_0x6dc5('0x17')](),path[_0x6dc5('0x18')](_0x32aee6[_0x6dc5('0x13')])));}})});router['post']('/',upload['single'](_0x6dc5('0x19')),controller[_0x6dc5('0x1a')]);router[_0x6dc5('0x1b')](_0x6dc5('0xb'),auth[_0x6dc5('0x8')](),controller[_0x6dc5('0x1c')]);router[_0x6dc5('0x1d')](_0x6dc5('0xb'),auth[_0x6dc5('0x8')](),controller[_0x6dc5('0x1d')]);module[_0x6dc5('0x1e')]=router;
\ No newline at end of file
+var _0xb030=['update','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','diskStorage','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single'];(function(_0x326805,_0x4327f5){var _0x31bc7c=function(_0x71cd86){while(--_0x71cd86){_0x326805['push'](_0x326805['shift']());}};_0x31bc7c(++_0x4327f5);}(_0xb030,0xe7));var _0x0b03=function(_0x1bc41f,_0x2e6cd7){_0x1bc41f=_0x1bc41f-0x0;var _0x1f7025=_0xb030[_0x1bc41f];return _0x1f7025;};'use strict';var multer=require(_0x0b03('0x0'));var util=require(_0x0b03('0x1'));var path=require(_0x0b03('0x2'));var timeout=require('connect-timeout');var express=require(_0x0b03('0x3'));var router=express['Router']();var fs_extra=require(_0x0b03('0x4'));var auth=require(_0x0b03('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0b03('0x6'));var controller=require('./sound.controller');router[_0x0b03('0x7')]('/',auth[_0x0b03('0x8')](),controller[_0x0b03('0x9')]);router[_0x0b03('0x7')](_0x0b03('0xa'),auth[_0x0b03('0x8')](),controller[_0x0b03('0xb')]);router[_0x0b03('0x7')]('/:id/download',auth[_0x0b03('0x8')](),controller['download']);var upload=multer({'storage':multer[_0x0b03('0xc')]({'destination':function(_0x3df203,_0x30bec2,_0x5f4c45){_0x5f4c45(null,path['join'](config['root'],_0x0b03('0xd')));},'filename':function(_0xcdaf20,_0x269e82,_0x9b2fe3){_0x269e82[_0x0b03('0xe')]=_0x269e82[_0x0b03('0xe')][_0x0b03('0xf')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x9b2fe3(null,util[_0x0b03('0x10')](_0x0b03('0x11'),path['basename'](_0x269e82[_0x0b03('0xe')],path[_0x0b03('0x12')](_0x269e82[_0x0b03('0xe')])),Date[_0x0b03('0x13')](),path[_0x0b03('0x12')](_0x269e82[_0x0b03('0xe')])));}})});router[_0x0b03('0x14')]('/',upload[_0x0b03('0x15')]('file'),controller['create']);router['put'](_0x0b03('0xa'),auth['isAuthenticated'](),controller[_0x0b03('0x16')]);router['delete'](_0x0b03('0xa'),auth[_0x0b03('0x8')](),controller['delete']);module['exports']=router;
\ No newline at end of file
index 1f437eb..243053b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6125=['STRING','name','BIGINT','INTEGER','FLOAT','sequelize','exports'];(function(_0x413bdf,_0x1834bc){var _0x229799=function(_0x570c2e){while(--_0x570c2e){_0x413bdf['push'](_0x413bdf['shift']());}};_0x229799(++_0x1834bc);}(_0x6125,0x1e8));var _0x5612=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6125[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5612('0x0'));module[_0x5612('0x1')]={'name':{'type':Sequelize[_0x5612('0x2')],'unique':_0x5612('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0x5612('0x2')]},'display_name':{'type':Sequelize[_0x5612('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0x5612('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x5612('0x4')]},'original_channelCount':{'type':Sequelize[_0x5612('0x5')]},'original_bitRate':{'type':Sequelize[_0x5612('0x4')]},'original_sampleRate':{'type':Sequelize[_0x5612('0x5')]},'converted_format':{'type':Sequelize[_0x5612('0x2')]},'converted_duration':{'type':Sequelize[_0x5612('0x6')]},'converted_sampleCount':{'type':Sequelize[_0x5612('0x4')]},'converted_channelCount':{'type':Sequelize[_0x5612('0x5')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x5612('0x5')]}};
\ No newline at end of file
+var _0x9d3e=['STRING','name','FLOAT','BIGINT','INTEGER','sequelize','exports'];(function(_0x15ec35,_0x5b9972){var _0x937cce=function(_0x59326b){while(--_0x59326b){_0x15ec35['push'](_0x15ec35['shift']());}};_0x937cce(++_0x5b9972);}(_0x9d3e,0x11d));var _0xe9d3=function(_0x5594c0,_0x33f036){_0x5594c0=_0x5594c0-0x0;var _0x1d9e4b=_0x9d3e[_0x5594c0];return _0x1d9e4b;};'use strict';var Sequelize=require(_0xe9d3('0x0'));module[_0xe9d3('0x1')]={'name':{'type':Sequelize[_0xe9d3('0x2')],'unique':_0xe9d3('0x3'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0xe9d3('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xe9d3('0x2')]},'original_format':{'type':Sequelize[_0xe9d3('0x2')]},'original_duration':{'type':Sequelize[_0xe9d3('0x4')]},'original_sampleCount':{'type':Sequelize[_0xe9d3('0x5')]},'original_channelCount':{'type':Sequelize[_0xe9d3('0x6')]},'original_bitRate':{'type':Sequelize[_0xe9d3('0x5')]},'original_sampleRate':{'type':Sequelize[_0xe9d3('0x6')]},'converted_format':{'type':Sequelize[_0xe9d3('0x2')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0xe9d3('0x5')]},'converted_channelCount':{'type':Sequelize[_0xe9d3('0x6')]},'converted_bitRate':{'type':Sequelize[_0xe9d3('0x5')]},'converted_sampleRate':{'type':Sequelize[_0xe9d3('0x6')]}};
\ No newline at end of file
index 98394a6..2d8536d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc676=['save','update','then','destroy','get','Sounds','UserProfileResource','end','error','stack','name','send','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','params','options','find','download','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','0777','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','chmodSync','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','pick','description','delete','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x3441e2,_0x57b820){var _0x1a129b=function(_0x4864bb){while(--_0x4864bb){_0x3441e2['push'](_0x3441e2['shift']());}};_0x1a129b(++_0x57b820);}(_0xc676,0x1d2));var _0x6c67=function(_0x54fbe5,_0x59c83d){_0x54fbe5=_0x54fbe5-0x0;var _0x3c0058=_0xc676[_0x54fbe5];return _0x3c0058;};'use strict';var emlformat=require(_0x6c67('0x0'));var rimraf=require(_0x6c67('0x1'));var zipdir=require(_0x6c67('0x2'));var jsonpatch=require(_0x6c67('0x3'));var rp=require(_0x6c67('0x4'));var moment=require(_0x6c67('0x5'));var BPromise=require(_0x6c67('0x6'));var Mustache=require(_0x6c67('0x7'));var util=require('util');var path=require(_0x6c67('0x8'));var sox=require(_0x6c67('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c67('0xa'));var _=require(_0x6c67('0xb'));var squel=require('squel');var crypto=require(_0x6c67('0xc'));var jsforce=require(_0x6c67('0xd'));var deskjs=require(_0x6c67('0xe'));var toCsv=require(_0x6c67('0xf'));var querystring=require('querystring');var Papa=require(_0x6c67('0x10'));var Redis=require(_0x6c67('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6c67('0x12'));var as=require(_0x6c67('0x13'));var hardwareService=require(_0x6c67('0x14'));var logger=require(_0x6c67('0x15'))(_0x6c67('0x16'));var utils=require(_0x6c67('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5309d6,_0x388723){_0x388723=_0x388723||0xcc;return function(_0x5416c5){if(_0x5416c5){return _0x5309d6[_0x6c67('0x18')](_0x388723);}return _0x5309d6['status'](_0x388723)['end']();};}function respondWithResult(_0x59fdf7,_0x17ca66){_0x17ca66=_0x17ca66||0xc8;return function(_0x23ff9){if(_0x23ff9){return _0x59fdf7[_0x6c67('0x19')](_0x17ca66)[_0x6c67('0x1a')](_0x23ff9);}};}function respondWithFilteredResult(_0x1f1452,_0x487b08){return function(_0x2b5acd){if(_0x2b5acd){var _0x10836f=typeof _0x487b08[_0x6c67('0x1b')]===_0x6c67('0x1c')&&typeof _0x487b08[_0x6c67('0x1d')]==='undefined';var _0x438a8b=_0x2b5acd[_0x6c67('0x1e')];var _0x7a4c8b=_0x10836f?0x0:_0x487b08[_0x6c67('0x1b')];var _0x39163a=_0x10836f?_0x2b5acd[_0x6c67('0x1e')]:_0x487b08[_0x6c67('0x1b')]+_0x487b08[_0x6c67('0x1d')];var _0x3d0068;if(_0x39163a>=_0x438a8b){_0x39163a=_0x438a8b;_0x3d0068=0xc8;}else{_0x3d0068=0xce;}_0x1f1452['status'](_0x3d0068);return _0x1f1452[_0x6c67('0x1f')](_0x6c67('0x20'),_0x7a4c8b+'-'+_0x39163a+'/'+_0x438a8b)['json'](_0x2b5acd);}return null;};}function patchUpdates(_0x53c2cb){return function(_0x5f008a){try{jsonpatch[_0x6c67('0x21')](_0x5f008a,_0x53c2cb,!![]);}catch(_0x9d841f){return BPromise['reject'](_0x9d841f);}return _0x5f008a[_0x6c67('0x22')]();};}function saveUpdates(_0x20b63e,_0x3db9ea){return function(_0xc6c588){if(_0xc6c588){return _0xc6c588[_0x6c67('0x23')](_0x20b63e)[_0x6c67('0x24')](function(_0x45f661){return _0x45f661;});}return null;};}function removeEntity(_0x59c9ca,_0x1ece81){return function(_0x1a643e){if(_0x1a643e){return _0x1a643e[_0x6c67('0x25')]()['then'](function(){var _0x3a3f8e=_0x1a643e[_0x6c67('0x26')]({'plain':!![]});var _0x46c2f7=_0x6c67('0x27');return db[_0x6c67('0x28')][_0x6c67('0x25')]({'where':{'type':_0x46c2f7,'resourceId':_0x3a3f8e['id']}})[_0x6c67('0x24')](function(){return _0x1a643e;});})[_0x6c67('0x24')](function(){_0x59c9ca[_0x6c67('0x19')](0xcc)[_0x6c67('0x29')]();});}};}function handleEntityNotFound(_0x55ef91,_0x10c8d7){return function(_0x21a559){if(!_0x21a559){_0x55ef91[_0x6c67('0x18')](0x194);}return _0x21a559;};}function handleError(_0x112e32,_0x1c0cf4){_0x1c0cf4=_0x1c0cf4||0x1f4;return function(_0x2f4b53){logger[_0x6c67('0x2a')](_0x2f4b53[_0x6c67('0x2b')]);if(_0x2f4b53['name']){delete _0x2f4b53[_0x6c67('0x2c')];}_0x112e32[_0x6c67('0x19')](_0x1c0cf4)[_0x6c67('0x2d')](_0x2f4b53);};}exports['index']=function(_0xa921a4,_0x5c838f){var _0x48ddd0={},_0x5fc63c={},_0xdbe885={'count':0x0,'rows':[]};var _0x4809a9=_[_0x6c67('0x2e')](db[_0x6c67('0x2f')][_0x6c67('0x30')],function(_0x79c760){return{'name':_0x79c760[_0x6c67('0x31')],'type':_0x79c760[_0x6c67('0x32')][_0x6c67('0x33')]};});_0x5fc63c[_0x6c67('0x34')]=_[_0x6c67('0x2e')](_0x4809a9,_0x6c67('0x2c'));_0x5fc63c[_0x6c67('0x35')]=_[_0x6c67('0x36')](_0xa921a4[_0x6c67('0x35')]);_0x5fc63c[_0x6c67('0x37')]=_[_0x6c67('0x38')](_0x5fc63c[_0x6c67('0x34')],_0x5fc63c['query']);_0x48ddd0['attributes']=_['intersection'](_0x5fc63c[_0x6c67('0x34')],qs[_0x6c67('0x39')](_0xa921a4[_0x6c67('0x35')][_0x6c67('0x39')]));_0x48ddd0[_0x6c67('0x3a')]=_0x48ddd0[_0x6c67('0x3a')][_0x6c67('0x3b')]?_0x48ddd0['attributes']:_0x5fc63c[_0x6c67('0x34')];if(!_0xa921a4[_0x6c67('0x35')][_0x6c67('0x3c')](_0x6c67('0x3d'))){_0x48ddd0[_0x6c67('0x1d')]=qs[_0x6c67('0x1d')](_0xa921a4[_0x6c67('0x35')]['limit']);_0x48ddd0[_0x6c67('0x1b')]=qs['offset'](_0xa921a4[_0x6c67('0x35')][_0x6c67('0x1b')]);}_0x48ddd0['order']=qs[_0x6c67('0x3e')](_0xa921a4[_0x6c67('0x35')][_0x6c67('0x3e')]);_0x48ddd0[_0x6c67('0x3f')]=qs['filters'](_['pick'](_0xa921a4[_0x6c67('0x35')],_0x5fc63c[_0x6c67('0x37')]),_0x4809a9);if(_0xa921a4[_0x6c67('0x35')]['filter']){_0x48ddd0[_0x6c67('0x3f')]=_[_0x6c67('0x40')](_0x48ddd0[_0x6c67('0x3f')],{'$or':_[_0x6c67('0x2e')](_0x4809a9,function(_0x5e6bc9){if(_0x5e6bc9[_0x6c67('0x32')]!==_0x6c67('0x41')){var _0x3532c3={};_0x3532c3[_0x5e6bc9[_0x6c67('0x2c')]]={'$like':'%'+_0xa921a4['query'][_0x6c67('0x42')]+'%'};return _0x3532c3;}})});}_0x48ddd0=_['merge']({},_0x48ddd0,_0xa921a4['options']);var _0xcc4be1={'where':_0x48ddd0[_0x6c67('0x3f')]};return db[_0x6c67('0x2f')][_0x6c67('0x1e')](_0xcc4be1)['then'](function(_0x52d382){_0xdbe885[_0x6c67('0x1e')]=_0x52d382;if(_0xa921a4[_0x6c67('0x35')][_0x6c67('0x43')]){_0x48ddd0[_0x6c67('0x44')]=[{'all':!![]}];}return db[_0x6c67('0x2f')][_0x6c67('0x45')](_0x48ddd0);})[_0x6c67('0x24')](function(_0x127ab4){_0xdbe885[_0x6c67('0x46')]=_0x127ab4;return _0xdbe885;})['then'](respondWithFilteredResult(_0x5c838f,_0x48ddd0))[_0x6c67('0x47')](handleError(_0x5c838f,null));};exports['show']=function(_0x295eef,_0x2698de){var _0x45db18={'raw':!![],'where':{'id':_0x295eef[_0x6c67('0x48')]['id']}},_0x204375={};_0x204375[_0x6c67('0x34')]=_[_0x6c67('0x36')](db['Sound'][_0x6c67('0x30')]);_0x204375[_0x6c67('0x35')]=_['keys'](_0x295eef['query']);_0x204375['filters']=_[_0x6c67('0x38')](_0x204375[_0x6c67('0x34')],_0x204375[_0x6c67('0x35')]);_0x45db18[_0x6c67('0x3a')]=_[_0x6c67('0x38')](_0x204375[_0x6c67('0x34')],qs[_0x6c67('0x39')](_0x295eef[_0x6c67('0x35')]['fields']));_0x45db18[_0x6c67('0x3a')]=_0x45db18[_0x6c67('0x3a')][_0x6c67('0x3b')]?_0x45db18[_0x6c67('0x3a')]:_0x204375['model'];if(_0x295eef[_0x6c67('0x35')][_0x6c67('0x43')]){_0x45db18[_0x6c67('0x44')]=[{'all':!![]}];}_0x45db18=_['merge']({},_0x45db18,_0x295eef[_0x6c67('0x49')]);return db[_0x6c67('0x2f')][_0x6c67('0x4a')](_0x45db18)['then'](handleEntityNotFound(_0x2698de,null))[_0x6c67('0x24')](respondWithResult(_0x2698de,null))['catch'](handleError(_0x2698de,null));};exports[_0x6c67('0x4b')]=function(_0xa61a5f,_0x40d7f7,_0x5e45f0){return db[_0x6c67('0x2f')][_0x6c67('0x4a')]({'where':{'id':_0xa61a5f[_0x6c67('0x48')]['id']},'attributes':[_0x6c67('0x2c'),_0x6c67('0x4c'),_0x6c67('0x4d')],'raw':!![]})[_0x6c67('0x24')](handleEntityNotFound(_0x40d7f7,null))[_0x6c67('0x24')](function(_0x4a2869){if(_0x4a2869){if(!fs['existsSync'](path[_0x6c67('0x4e')](config[_0x6c67('0x4f')],_0x6c67('0x50'),_0x4a2869[_0x6c67('0x4c')]+'.'+_0x4a2869[_0x6c67('0x4d')]))){throw new db['Sequelize'][(_0x6c67('0x51'))](_0x6c67('0x52'));}return _0x40d7f7[_0x6c67('0x4b')](path['join'](config[_0x6c67('0x4f')],_0x6c67('0x50'),util[_0x6c67('0x53')](_0x6c67('0x54'),_0x4a2869[_0x6c67('0x4c')],_0x4a2869[_0x6c67('0x4d')])),util[_0x6c67('0x53')](_0x6c67('0x54'),_0x4a2869[_0x6c67('0x2c')],_0x4a2869[_0x6c67('0x4d')]));}return null;})[_0x6c67('0x47')](handleError(_0x40d7f7,null));};exports[_0x6c67('0x55')]=function(_0x384c94,_0x3d32cb,_0x1707db){var _0x1850ad={'name':path[_0x6c67('0x56')](_0x384c94[_0x6c67('0x57')][_0x6c67('0x58')],path[_0x6c67('0x59')](_0x384c94[_0x6c67('0x57')][_0x6c67('0x58')])),'save_name':path[_0x6c67('0x56')](_0x384c94['file'][_0x6c67('0x5a')],path[_0x6c67('0x59')](_0x384c94[_0x6c67('0x57')]['filename'])),'original_format':path[_0x6c67('0x59')](_0x384c94[_0x6c67('0x57')][_0x6c67('0x58')])[_0x6c67('0x5b')](0x1),'converted_format':_0x6c67('0x5c')};var _0x48dd7c=path[_0x6c67('0x4e')](config[_0x6c67('0x4f')],_0x6c67('0x5d'),_0x384c94[_0x6c67('0x57')][_0x6c67('0x5a')]);var _0x5a535c=path[_0x6c67('0x4e')](config[_0x6c67('0x4f')],_0x6c67('0x50'),util[_0x6c67('0x53')](_0x6c67('0x54'),path[_0x6c67('0x56')](_0x384c94[_0x6c67('0x57')][_0x6c67('0x5a')],path[_0x6c67('0x59')](_0x384c94[_0x6c67('0x57')]['filename'])),_0x1850ad[_0x6c67('0x4d')]));logger[_0x6c67('0x5e')]('Sound\x20upload\x20filepath:\x20%s',_0x48dd7c);logger['info'](_0x6c67('0x5f'),_0x5a535c);try{fs['chmodSync'](_0x48dd7c,parseInt(_0x6c67('0x60'),0x8));var _0x24d695=sox['transcode'](_0x48dd7c,_0x5a535c,{'sampleRate':0x1f40,'format':_0x6c67('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x24d695['on'](_0x6c67('0x2a'),function(_0x56ffbf){fs['unlinkSync'](_0x48dd7c);_0x3d32cb[_0x6c67('0x19')](0x1f4)['send'](_0x56ffbf);});_0x24d695['on']('src',function(_0x2c8e71){_0x1850ad[_0x6c67('0x61')]=isNaN(_0x2c8e71['duration'])?null:_0x2c8e71[_0x6c67('0x62')]*0x3e8;_0x1850ad[_0x6c67('0x63')]=isNaN(_0x2c8e71[_0x6c67('0x64')])?null:_0x2c8e71[_0x6c67('0x64')];_0x1850ad[_0x6c67('0x65')]=isNaN(_0x2c8e71[_0x6c67('0x66')])?null:_0x2c8e71[_0x6c67('0x66')];_0x1850ad[_0x6c67('0x67')]=isNaN(_0x2c8e71['bitRate'])?null:_0x2c8e71[_0x6c67('0x68')];_0x1850ad['original_sampleRate']=isNaN(_0x2c8e71['sampleRate'])?null:_0x2c8e71[_0x6c67('0x69')];});_0x24d695['on'](_0x6c67('0x6a'),function(_0x79dd5d){_0x1850ad[_0x6c67('0x6b')]=isNaN(_0x79dd5d[_0x6c67('0x62')])?null:_0x79dd5d[_0x6c67('0x62')]*0x3e8;_0x1850ad[_0x6c67('0x6c')]=isNaN(_0x79dd5d[_0x6c67('0x64')])?null:_0x79dd5d[_0x6c67('0x64')];_0x1850ad[_0x6c67('0x6d')]=isNaN(_0x79dd5d['channelCount'])?null:_0x79dd5d[_0x6c67('0x66')];_0x1850ad[_0x6c67('0x6e')]=isNaN(_0x79dd5d[_0x6c67('0x68')])?null:_0x79dd5d[_0x6c67('0x68')];_0x1850ad[_0x6c67('0x6f')]=isNaN(_0x79dd5d['sampleRate'])?null:_0x79dd5d[_0x6c67('0x69')];});_0x24d695['on'](_0x6c67('0x29'),function(){fs[_0x6c67('0x70')](_0x5a535c,parseInt(_0x6c67('0x60'),0x8));return db[_0x6c67('0x2f')][_0x6c67('0x55')](_0x1850ad)[_0x6c67('0x24')](function(_0x594ea0){var _0x44793c={'role':_0x384c94[_0x6c67('0x71')]['role'],'userProfileId':_0x384c94[_0x6c67('0x71')][_0x6c67('0x72')]};if(!_0x44793c)throw new Error(_0x6c67('0x73'));if(_0x44793c['role']===_0x6c67('0x74')){var _0x30bf6d=_0x594ea0[_0x6c67('0x26')]({'plain':!![]});return db[_0x6c67('0x75')][_0x6c67('0x4a')]({'where':{'name':'Sounds','userProfileId':_0x44793c[_0x6c67('0x72')]},'raw':!![]})[_0x6c67('0x24')](function(_0x2107d9){if(_0x2107d9&&_0x2107d9[_0x6c67('0x76')]===0x0){return db['UserProfileResource'][_0x6c67('0x55')]({'name':_0x30bf6d[_0x6c67('0x2c')],'resourceId':_0x30bf6d['id'],'type':_0x2107d9[_0x6c67('0x2c')],'sectionId':_0x2107d9['id']},{})[_0x6c67('0x24')](function(){return _0x594ea0;});}else{return _0x594ea0;}})[_0x6c67('0x47')](function(_0x4882d4){logger[_0x6c67('0x2a')](_0x6c67('0x77'),_0x4882d4);throw _0x4882d4;});}return _0x594ea0;})[_0x6c67('0x24')](respondWithResult(_0x3d32cb,null))[_0x6c67('0x47')](handleError(_0x3d32cb,null));});_0x24d695[_0x6c67('0x78')]();}catch(_0x2e3e2f){_0x3d32cb[_0x6c67('0x19')](0x1f4)['send'](_0x2e3e2f);}};exports[_0x6c67('0x23')]=function(_0x54d5f4,_0x5b5441,_0x45920d){return db['Sound'][_0x6c67('0x4a')]({'where':{'id':_0x54d5f4[_0x6c67('0x48')]['id']}})[_0x6c67('0x24')](handleEntityNotFound(_0x5b5441,null))['then'](saveUpdates(_[_0x6c67('0x79')](_0x54d5f4[_0x6c67('0x71')],[_0x6c67('0x2c'),_0x6c67('0x7a')]),null))['then'](respondWithResult(_0x5b5441,null))[_0x6c67('0x47')](handleError(_0x5b5441,null));};exports[_0x6c67('0x7b')]=function(_0x2767b3,_0x146d6a,_0x5bd96a){return db[_0x6c67('0x2f')]['find']({'where':{'id':_0x2767b3['params']['id']}})['then'](function(_0x5b87a9){if(_0x5b87a9){return _0x5b87a9[_0x6c67('0x25')]();}})[_0x6c67('0x24')](function(_0x29bfd2){var _0x3ea805=path[_0x6c67('0x4e')](config[_0x6c67('0x4f')],_0x6c67('0x5d'),util['format'](_0x6c67('0x54'),_0x29bfd2[_0x6c67('0x4c')],_0x29bfd2['original_format']));var _0x314893=path[_0x6c67('0x4e')](config[_0x6c67('0x4f')],_0x6c67('0x50'),util['format']('%s.%s',_0x29bfd2[_0x6c67('0x4c')],_0x29bfd2[_0x6c67('0x4d')]));fs[_0x6c67('0x7c')](_0x3ea805);fs['unlinkSync'](_0x314893);return _0x29bfd2;})[_0x6c67('0x24')](function(_0x3ec246){if(_0x3ec246){return _0x146d6a[_0x6c67('0x19')](0xcc)[_0x6c67('0x29')]();}})[_0x6c67('0x24')](handleEntityNotFound(_0x146d6a,null))['catch'](handleError(_0x146d6a,null));};
\ No newline at end of file
+var _0x70c1=['original_duration','duration','original_sampleCount','sampleCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_bitRate','converted_sampleRate','chmodSync','role','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','Sounds','autoAssociation','start','update','params','description','delete','original_format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','name','index','map','Sound','rawAttributes','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','findAll','rows','catch','show','include','options','download','find','save_name','converted_format','existsSync','join','root','server/files/sounds/converted','Sequelize','ValidationError','format','%s.%s','create','file','extname','originalname','basename','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','0777','unlinkSync','send'];(function(_0x3bd139,_0x52a505){var _0xa9342a=function(_0xb2a913){while(--_0xb2a913){_0x3bd139['push'](_0x3bd139['shift']());}};_0xa9342a(++_0x52a505);}(_0x70c1,0x98));var _0x170c=function(_0x1e1d08,_0x4af1e2){_0x1e1d08=_0x1e1d08-0x0;var _0x5b5676=_0x70c1[_0x1e1d08];return _0x5b5676;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x170c('0x0'));var zipdir=require(_0x170c('0x1'));var jsonpatch=require(_0x170c('0x2'));var rp=require(_0x170c('0x3'));var moment=require('moment');var BPromise=require(_0x170c('0x4'));var Mustache=require(_0x170c('0x5'));var util=require(_0x170c('0x6'));var path=require(_0x170c('0x7'));var sox=require('sox');var csv=require(_0x170c('0x8'));var ejs=require(_0x170c('0x9'));var fs=require('fs');var fs_extra=require(_0x170c('0xa'));var _=require('lodash');var squel=require(_0x170c('0xb'));var crypto=require(_0x170c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x170c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x170c('0xe'));var Papa=require(_0x170c('0xf'));var Redis=require(_0x170c('0x10'));var authService=require(_0x170c('0x11'));var qs=require(_0x170c('0x12'));var as=require(_0x170c('0x13'));var hardwareService=require(_0x170c('0x14'));var logger=require(_0x170c('0x15'))(_0x170c('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x170c('0x17'));var db=require(_0x170c('0x18'))['db'];function respondWithStatusCode(_0x28af17,_0x16a0fa){_0x16a0fa=_0x16a0fa||0xcc;return function(_0xccd75f){if(_0xccd75f){return _0x28af17[_0x170c('0x19')](_0x16a0fa);}return _0x28af17[_0x170c('0x1a')](_0x16a0fa)[_0x170c('0x1b')]();};}function respondWithResult(_0x4b86b1,_0x4130dc){_0x4130dc=_0x4130dc||0xc8;return function(_0x555593){if(_0x555593){return _0x4b86b1[_0x170c('0x1a')](_0x4130dc)[_0x170c('0x1c')](_0x555593);}};}function respondWithFilteredResult(_0x34a792,_0x5c0639){return function(_0x57a3ab){if(_0x57a3ab){var _0x42a1a1=typeof _0x5c0639['offset']===_0x170c('0x1d')&&typeof _0x5c0639['limit']===_0x170c('0x1d');var _0xbae91c=_0x57a3ab[_0x170c('0x1e')];var _0xdef82c=_0x42a1a1?0x0:_0x5c0639['offset'];var _0x4f1cd0=_0x42a1a1?_0x57a3ab[_0x170c('0x1e')]:_0x5c0639[_0x170c('0x1f')]+_0x5c0639[_0x170c('0x20')];var _0x476a5;if(_0x4f1cd0>=_0xbae91c){_0x4f1cd0=_0xbae91c;_0x476a5=0xc8;}else{_0x476a5=0xce;}_0x34a792['status'](_0x476a5);return _0x34a792[_0x170c('0x21')](_0x170c('0x22'),_0xdef82c+'-'+_0x4f1cd0+'/'+_0xbae91c)[_0x170c('0x1c')](_0x57a3ab);}return null;};}function patchUpdates(_0x51e917){return function(_0x1d1dce){try{jsonpatch[_0x170c('0x23')](_0x1d1dce,_0x51e917,!![]);}catch(_0x6e401d){return BPromise[_0x170c('0x24')](_0x6e401d);}return _0x1d1dce[_0x170c('0x25')]();};}function saveUpdates(_0x2ef015,_0x599abf){return function(_0x59f0f4){if(_0x59f0f4){return _0x59f0f4['update'](_0x2ef015)[_0x170c('0x26')](function(_0x358894){return _0x358894;});}return null;};}function removeEntity(_0x4f206c,_0x21a313){return function(_0x310b67){if(_0x310b67){return _0x310b67[_0x170c('0x27')]()[_0x170c('0x26')](function(){var _0x437321=_0x310b67[_0x170c('0x28')]({'plain':!![]});var _0x9eece4='Sounds';return db[_0x170c('0x29')][_0x170c('0x27')]({'where':{'type':_0x9eece4,'resourceId':_0x437321['id']}})[_0x170c('0x26')](function(){return _0x310b67;});})[_0x170c('0x26')](function(){_0x4f206c[_0x170c('0x1a')](0xcc)[_0x170c('0x1b')]();});}};}function handleEntityNotFound(_0x19223e,_0x4aaf32){return function(_0x3c8185){if(!_0x3c8185){_0x19223e[_0x170c('0x19')](0x194);}return _0x3c8185;};}function handleError(_0x4094bc,_0x3e2db8){_0x3e2db8=_0x3e2db8||0x1f4;return function(_0x5972fd){logger[_0x170c('0x2a')](_0x5972fd['stack']);if(_0x5972fd[_0x170c('0x2b')]){delete _0x5972fd[_0x170c('0x2b')];}_0x4094bc[_0x170c('0x1a')](_0x3e2db8)['send'](_0x5972fd);};}exports[_0x170c('0x2c')]=function(_0x3d10c1,_0x3c2b79){var _0x184a03={},_0x19c617={},_0x36a10d={'count':0x0,'rows':[]};var _0x5971f0=_[_0x170c('0x2d')](db[_0x170c('0x2e')][_0x170c('0x2f')],function(_0x3e45ac){return{'name':_0x3e45ac['fieldName'],'type':_0x3e45ac['type'][_0x170c('0x30')]};});_0x19c617[_0x170c('0x31')]=_['map'](_0x5971f0,'name');_0x19c617['query']=_[_0x170c('0x32')](_0x3d10c1[_0x170c('0x33')]);_0x19c617[_0x170c('0x34')]=_['intersection'](_0x19c617['model'],_0x19c617[_0x170c('0x33')]);_0x184a03[_0x170c('0x35')]=_[_0x170c('0x36')](_0x19c617[_0x170c('0x31')],qs[_0x170c('0x37')](_0x3d10c1['query'][_0x170c('0x37')]));_0x184a03['attributes']=_0x184a03['attributes'][_0x170c('0x38')]?_0x184a03[_0x170c('0x35')]:_0x19c617['model'];if(!_0x3d10c1[_0x170c('0x33')][_0x170c('0x39')](_0x170c('0x3a'))){_0x184a03['limit']=qs[_0x170c('0x20')](_0x3d10c1[_0x170c('0x33')][_0x170c('0x20')]);_0x184a03[_0x170c('0x1f')]=qs[_0x170c('0x1f')](_0x3d10c1[_0x170c('0x33')][_0x170c('0x1f')]);}_0x184a03[_0x170c('0x3b')]=qs['sort'](_0x3d10c1[_0x170c('0x33')][_0x170c('0x3c')]);_0x184a03[_0x170c('0x3d')]=qs[_0x170c('0x34')](_[_0x170c('0x3e')](_0x3d10c1[_0x170c('0x33')],_0x19c617[_0x170c('0x34')]),_0x5971f0);if(_0x3d10c1[_0x170c('0x33')][_0x170c('0x3f')]){_0x184a03[_0x170c('0x3d')]=_['merge'](_0x184a03['where'],{'$or':_[_0x170c('0x2d')](_0x5971f0,function(_0x186bc6){if(_0x186bc6[_0x170c('0x40')]!==_0x170c('0x41')){var _0x52bf34={};_0x52bf34[_0x186bc6[_0x170c('0x2b')]]={'$like':'%'+_0x3d10c1['query']['filter']+'%'};return _0x52bf34;}})});}_0x184a03=_[_0x170c('0x42')]({},_0x184a03,_0x3d10c1['options']);var _0x1657a9={'where':_0x184a03[_0x170c('0x3d')]};return db[_0x170c('0x2e')][_0x170c('0x1e')](_0x1657a9)[_0x170c('0x26')](function(_0x60bb80){_0x36a10d[_0x170c('0x1e')]=_0x60bb80;if(_0x3d10c1[_0x170c('0x33')][_0x170c('0x43')]){_0x184a03['include']=[{'all':!![]}];}return db[_0x170c('0x2e')][_0x170c('0x44')](_0x184a03);})['then'](function(_0xc3d3f6){_0x36a10d[_0x170c('0x45')]=_0xc3d3f6;return _0x36a10d;})[_0x170c('0x26')](respondWithFilteredResult(_0x3c2b79,_0x184a03))[_0x170c('0x46')](handleError(_0x3c2b79,null));};exports[_0x170c('0x47')]=function(_0x5a5db7,_0xf12f31){var _0x639d58={'raw':!![],'where':{'id':_0x5a5db7['params']['id']}},_0x1fc89b={};_0x1fc89b[_0x170c('0x31')]=_[_0x170c('0x32')](db[_0x170c('0x2e')][_0x170c('0x2f')]);_0x1fc89b[_0x170c('0x33')]=_[_0x170c('0x32')](_0x5a5db7[_0x170c('0x33')]);_0x1fc89b[_0x170c('0x34')]=_[_0x170c('0x36')](_0x1fc89b[_0x170c('0x31')],_0x1fc89b['query']);_0x639d58['attributes']=_[_0x170c('0x36')](_0x1fc89b['model'],qs[_0x170c('0x37')](_0x5a5db7[_0x170c('0x33')][_0x170c('0x37')]));_0x639d58[_0x170c('0x35')]=_0x639d58[_0x170c('0x35')][_0x170c('0x38')]?_0x639d58['attributes']:_0x1fc89b[_0x170c('0x31')];if(_0x5a5db7[_0x170c('0x33')][_0x170c('0x43')]){_0x639d58[_0x170c('0x48')]=[{'all':!![]}];}_0x639d58=_[_0x170c('0x42')]({},_0x639d58,_0x5a5db7[_0x170c('0x49')]);return db[_0x170c('0x2e')]['find'](_0x639d58)[_0x170c('0x26')](handleEntityNotFound(_0xf12f31,null))[_0x170c('0x26')](respondWithResult(_0xf12f31,null))['catch'](handleError(_0xf12f31,null));};exports[_0x170c('0x4a')]=function(_0x296979,_0x24d315,_0x42541b){return db[_0x170c('0x2e')][_0x170c('0x4b')]({'where':{'id':_0x296979['params']['id']},'attributes':[_0x170c('0x2b'),_0x170c('0x4c'),_0x170c('0x4d')],'raw':!![]})['then'](handleEntityNotFound(_0x24d315,null))[_0x170c('0x26')](function(_0xafb49a){if(_0xafb49a){if(!fs[_0x170c('0x4e')](path[_0x170c('0x4f')](config[_0x170c('0x50')],_0x170c('0x51'),_0xafb49a[_0x170c('0x4c')]+'.'+_0xafb49a[_0x170c('0x4d')]))){throw new db[(_0x170c('0x52'))][(_0x170c('0x53'))]('Sound\x20not\x20found');}return _0x24d315[_0x170c('0x4a')](path[_0x170c('0x4f')](config['root'],_0x170c('0x51'),util[_0x170c('0x54')](_0x170c('0x55'),_0xafb49a[_0x170c('0x4c')],_0xafb49a['converted_format'])),util[_0x170c('0x54')](_0x170c('0x55'),_0xafb49a[_0x170c('0x2b')],_0xafb49a['converted_format']));}return null;})[_0x170c('0x46')](handleError(_0x24d315,null));};exports[_0x170c('0x56')]=function(_0x540ef3,_0x58a39a,_0x4c6ab9){var _0x182f76={'name':path['basename'](_0x540ef3[_0x170c('0x57')]['originalname'],path[_0x170c('0x58')](_0x540ef3[_0x170c('0x57')][_0x170c('0x59')])),'save_name':path[_0x170c('0x5a')](_0x540ef3[_0x170c('0x57')][_0x170c('0x5b')],path['extname'](_0x540ef3[_0x170c('0x57')][_0x170c('0x5b')])),'original_format':path['extname'](_0x540ef3['file'][_0x170c('0x59')])[_0x170c('0x5c')](0x1),'converted_format':_0x170c('0x5d')};var _0x30fa69=path[_0x170c('0x4f')](config['root'],_0x170c('0x5e'),_0x540ef3[_0x170c('0x57')][_0x170c('0x5b')]);var _0x4ad35a=path['join'](config[_0x170c('0x50')],_0x170c('0x51'),util[_0x170c('0x54')](_0x170c('0x55'),path[_0x170c('0x5a')](_0x540ef3[_0x170c('0x57')][_0x170c('0x5b')],path[_0x170c('0x58')](_0x540ef3[_0x170c('0x57')][_0x170c('0x5b')])),_0x182f76[_0x170c('0x4d')]));logger[_0x170c('0x5f')]('Sound\x20upload\x20filepath:\x20%s',_0x30fa69);logger[_0x170c('0x5f')](_0x170c('0x60'),_0x4ad35a);try{fs['chmodSync'](_0x30fa69,parseInt(_0x170c('0x61'),0x8));var _0x1ac82b=sox['transcode'](_0x30fa69,_0x4ad35a,{'sampleRate':0x1f40,'format':_0x170c('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1ac82b['on'](_0x170c('0x2a'),function(_0xb0966b){fs[_0x170c('0x62')](_0x30fa69);_0x58a39a[_0x170c('0x1a')](0x1f4)[_0x170c('0x63')](_0xb0966b);});_0x1ac82b['on']('src',function(_0x1cf89d){_0x182f76[_0x170c('0x64')]=isNaN(_0x1cf89d[_0x170c('0x65')])?null:_0x1cf89d[_0x170c('0x65')]*0x3e8;_0x182f76[_0x170c('0x66')]=isNaN(_0x1cf89d[_0x170c('0x67')])?null:_0x1cf89d[_0x170c('0x67')];_0x182f76['original_channelCount']=isNaN(_0x1cf89d[_0x170c('0x68')])?null:_0x1cf89d[_0x170c('0x68')];_0x182f76['original_bitRate']=isNaN(_0x1cf89d[_0x170c('0x69')])?null:_0x1cf89d[_0x170c('0x69')];_0x182f76[_0x170c('0x6a')]=isNaN(_0x1cf89d['sampleRate'])?null:_0x1cf89d[_0x170c('0x6b')];});_0x1ac82b['on'](_0x170c('0x6c'),function(_0x4777c5){_0x182f76[_0x170c('0x6d')]=isNaN(_0x4777c5[_0x170c('0x65')])?null:_0x4777c5['duration']*0x3e8;_0x182f76[_0x170c('0x6e')]=isNaN(_0x4777c5[_0x170c('0x67')])?null:_0x4777c5[_0x170c('0x67')];_0x182f76['converted_channelCount']=isNaN(_0x4777c5[_0x170c('0x68')])?null:_0x4777c5[_0x170c('0x68')];_0x182f76[_0x170c('0x6f')]=isNaN(_0x4777c5[_0x170c('0x69')])?null:_0x4777c5[_0x170c('0x69')];_0x182f76[_0x170c('0x70')]=isNaN(_0x4777c5[_0x170c('0x6b')])?null:_0x4777c5[_0x170c('0x6b')];});_0x1ac82b['on'](_0x170c('0x1b'),function(){fs[_0x170c('0x71')](_0x4ad35a,parseInt(_0x170c('0x61'),0x8));return db['Sound'][_0x170c('0x56')](_0x182f76)[_0x170c('0x26')](function(_0x24fe4a){var _0x394424={'role':_0x540ef3['body'][_0x170c('0x72')],'userProfileId':_0x540ef3[_0x170c('0x73')][_0x170c('0x74')]};if(!_0x394424)throw new Error(_0x170c('0x75'));if(_0x394424[_0x170c('0x72')]==='user'){var _0x496005=_0x24fe4a['get']({'plain':!![]});return db['UserProfileSection'][_0x170c('0x4b')]({'where':{'name':_0x170c('0x76'),'userProfileId':_0x394424[_0x170c('0x74')]},'raw':!![]})['then'](function(_0x1e06a4){if(_0x1e06a4&&_0x1e06a4[_0x170c('0x77')]===0x0){return db[_0x170c('0x29')][_0x170c('0x56')]({'name':_0x496005[_0x170c('0x2b')],'resourceId':_0x496005['id'],'type':_0x1e06a4['name'],'sectionId':_0x1e06a4['id']},{})[_0x170c('0x26')](function(){return _0x24fe4a;});}else{return _0x24fe4a;}})[_0x170c('0x46')](function(_0x41b632){logger[_0x170c('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x41b632);throw _0x41b632;});}return _0x24fe4a;})[_0x170c('0x26')](respondWithResult(_0x58a39a,null))[_0x170c('0x46')](handleError(_0x58a39a,null));});_0x1ac82b[_0x170c('0x78')]();}catch(_0x35cfea){_0x58a39a[_0x170c('0x1a')](0x1f4)[_0x170c('0x63')](_0x35cfea);}};exports[_0x170c('0x79')]=function(_0x1904bc,_0x1c8ec0,_0x241b92){return db[_0x170c('0x2e')]['find']({'where':{'id':_0x1904bc[_0x170c('0x7a')]['id']}})[_0x170c('0x26')](handleEntityNotFound(_0x1c8ec0,null))['then'](saveUpdates(_[_0x170c('0x3e')](_0x1904bc['body'],[_0x170c('0x2b'),_0x170c('0x7b')]),null))[_0x170c('0x26')](respondWithResult(_0x1c8ec0,null))[_0x170c('0x46')](handleError(_0x1c8ec0,null));};exports[_0x170c('0x7c')]=function(_0x37dd9d,_0x21cba2,_0x554f58){return db[_0x170c('0x2e')][_0x170c('0x4b')]({'where':{'id':_0x37dd9d['params']['id']}})['then'](function(_0x27f01f){if(_0x27f01f){return _0x27f01f[_0x170c('0x27')]();}})[_0x170c('0x26')](function(_0x450c4c){var _0x4b823e=path[_0x170c('0x4f')](config['root'],'server/files/sounds/original',util['format']('%s.%s',_0x450c4c[_0x170c('0x4c')],_0x450c4c[_0x170c('0x7d')]));var _0x360457=path[_0x170c('0x4f')](config[_0x170c('0x50')],_0x170c('0x51'),util[_0x170c('0x54')](_0x170c('0x55'),_0x450c4c[_0x170c('0x4c')],_0x450c4c[_0x170c('0x4d')]));fs['unlinkSync'](_0x4b823e);fs['unlinkSync'](_0x360457);return _0x450c4c;})[_0x170c('0x26')](function(_0x338271){if(_0x338271){return _0x21cba2[_0x170c('0x1a')](0xcc)[_0x170c('0x1b')]();}})['then'](handleEntityNotFound(_0x21cba2,null))[_0x170c('0x46')](handleError(_0x21cba2,null));};
\ No newline at end of file
index dc31b80..3e07f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f0e=['bluebird','request-promise','../../config/environment','exports','define','Sound','tools_sounds','util','../../config/logger','api','moment'];(function(_0x365bb6,_0xd303fb){var _0x3d57fd=function(_0x1532fd){while(--_0x1532fd){_0x365bb6['push'](_0x365bb6['shift']());}};_0x3d57fd(++_0xd303fb);}(_0x5f0e,0x80));var _0xe5f0=function(_0x553206,_0x30d2b3){_0x553206=_0x553206-0x0;var _0x2a629f=_0x5f0e[_0x553206];return _0x2a629f;};'use strict';var _=require('lodash');var util=require(_0xe5f0('0x0'));var logger=require(_0xe5f0('0x1'))(_0xe5f0('0x2'));var moment=require(_0xe5f0('0x3'));var BPromise=require(_0xe5f0('0x4'));var rp=require(_0xe5f0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe5f0('0x6'));var attributes=require('./sound.attributes');module[_0xe5f0('0x7')]=function(_0x38dccd,_0x3d2e24){return _0x38dccd[_0xe5f0('0x8')](_0xe5f0('0x9'),attributes,{'tableName':_0xe5f0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd74d=['path','rimraf','../../config/environment','./sound.attributes','exports','define','lodash','util','api','moment','bluebird','request-promise'];(function(_0x4db9ec,_0x350111){var _0x4e31f6=function(_0x57a086){while(--_0x57a086){_0x4db9ec['push'](_0x4db9ec['shift']());}};_0x4e31f6(++_0x350111);}(_0xd74d,0x14a));var _0xdd74=function(_0x178baa,_0x3f72a5){_0x178baa=_0x178baa-0x0;var _0x25a85e=_0xd74d[_0x178baa];return _0x25a85e;};'use strict';var _=require(_0xdd74('0x0'));var util=require(_0xdd74('0x1'));var logger=require('../../config/logger')(_0xdd74('0x2'));var moment=require(_0xdd74('0x3'));var BPromise=require(_0xdd74('0x4'));var rp=require(_0xdd74('0x5'));var fs=require('fs');var path=require(_0xdd74('0x6'));var rimraf=require(_0xdd74('0x7'));var config=require(_0xdd74('0x8'));var attributes=require(_0xdd74('0x9'));module[_0xdd74('0xa')]=function(_0x8567a1,_0x28039c){return _0x8567a1[_0xdd74('0xb')]('Sound',attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fcdff21..9c11a77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa93f=['request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','Sound','find','options','where','include','attributes','model','map','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Sound,\x20%s,\x20%s'];(function(_0x578406,_0x284f93){var _0x298d95=function(_0x16b82d){while(--_0x16b82d){_0x578406['push'](_0x578406['shift']());}};_0x298d95(++_0x284f93);}(_0xa93f,0x129));var _0xfa93=function(_0x1611b1,_0x1154c6){_0x1611b1=_0x1611b1-0x0;var _0x391089=_0xa93f[_0x1611b1];return _0x391089;};'use strict';var _=require(_0xfa93('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfa93('0x1'));var rs=require(_0xfa93('0x2'));var fs=require('fs');var Redis=require(_0xfa93('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfa93('0x4'));var logger=require(_0xfa93('0x5'))(_0xfa93('0x6'));var config=require(_0xfa93('0x7'));var jayson=require(_0xfa93('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x12620e,_0x1c00b9,_0x2d4da1){return new BPromise(function(_0x16d465,_0x3a9f6b){return client[_0xfa93('0x9')](_0x12620e,_0x2d4da1)[_0xfa93('0xa')](function(_0x261735){logger[_0xfa93('0xb')](_0xfa93('0xc'),_0x1c00b9,_0xfa93('0xd'));logger[_0xfa93('0xe')](_0xfa93('0xf'),_0x1c00b9,_0xfa93('0xd'),JSON[_0xfa93('0x10')](_0x261735));if(_0x261735[_0xfa93('0x11')]){if(_0x261735[_0xfa93('0x11')][_0xfa93('0x12')]===0x1f4){logger['error']('Sound,\x20%s,\x20%s',_0x1c00b9,_0x261735['error']['message']);return _0x3a9f6b(_0x261735[_0xfa93('0x11')][_0xfa93('0x13')]);}logger[_0xfa93('0x11')](_0xfa93('0xc'),_0x1c00b9,_0x261735[_0xfa93('0x11')]['message']);return _0x16d465(_0x261735[_0xfa93('0x11')][_0xfa93('0x13')]);}else{logger['info'](_0xfa93('0xc'),_0x1c00b9,_0xfa93('0xd'));_0x16d465(_0x261735[_0xfa93('0x14')][_0xfa93('0x13')]);}})[_0xfa93('0x15')](function(_0x5f02c8){logger[_0xfa93('0x11')](_0xfa93('0xc'),_0x1c00b9,_0x5f02c8);_0x3a9f6b(_0x5f02c8);});});}exports[_0xfa93('0x16')]=function(_0x111241){var _0x5decae=this;return new Promise(function(_0x14a228,_0xc04135){return db[_0xfa93('0x17')][_0xfa93('0x18')]({'raw':_0x111241['options']?_0x111241['options']['raw']===undefined?!![]:![]:!![],'where':_0x111241[_0xfa93('0x19')]?_0x111241[_0xfa93('0x19')][_0xfa93('0x1a')]||null:null,'attributes':_0x111241[_0xfa93('0x19')]?_0x111241[_0xfa93('0x19')]['attributes']||null:null,'include':_0x111241[_0xfa93('0x19')]?_0x111241[_0xfa93('0x19')][_0xfa93('0x1b')]?_['map'](_0x111241[_0xfa93('0x19')]['include'],function(_0x9eb466){return{'model':db[_0x9eb466['model']],'as':_0x9eb466['as'],'attributes':_0x9eb466[_0xfa93('0x1c')],'include':_0x9eb466[_0xfa93('0x1b')]?_['map'](_0x9eb466[_0xfa93('0x1b')],function(_0x305ff5){return{'model':db[_0x305ff5[_0xfa93('0x1d')]],'as':_0x305ff5['as'],'attributes':_0x305ff5[_0xfa93('0x1c')],'include':_0x305ff5[_0xfa93('0x1b')]?_[_0xfa93('0x1e')](_0x305ff5[_0xfa93('0x1b')],function(_0x2b846c){return{'model':db[_0x2b846c[_0xfa93('0x1d')]],'as':_0x2b846c['as'],'attributes':_0x2b846c[_0xfa93('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x553a72){logger[_0xfa93('0xb')](_0xfa93('0x16'),_0x111241);logger['debug']('ShowSound',_0x111241,JSON[_0xfa93('0x10')](_0x553a72));_0x14a228(_0x553a72);})[_0xfa93('0x15')](function(_0x1b3c55){logger[_0xfa93('0x11')]('ShowSound',_0x1b3c55[_0xfa93('0x13')],_0x111241);_0xc04135(_0x5decae['error'](0x1f4,_0x1b3c55[_0xfa93('0x13')]));});});};
\ No newline at end of file
+var _0x46bf=['map','ShowSound','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','Sound,\x20%s,\x20%s','message','result','catch','Sound','find','options','raw','where','attributes','include','model'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x46bf,0x160));var _0xf46b=function(_0x5e5b5e,_0x1d4bde){_0x5e5b5e=_0x5e5b5e-0x0;var _0x296489=_0x46bf[_0x5e5b5e];return _0x296489;};'use strict';var _=require(_0xf46b('0x0'));var util=require(_0xf46b('0x1'));var moment=require('moment');var BPromise=require(_0xf46b('0x2'));var rs=require(_0xf46b('0x3'));var fs=require('fs');var Redis=require(_0xf46b('0x4'));var db=require(_0xf46b('0x5'))['db'];var utils=require(_0xf46b('0x6'));var logger=require(_0xf46b('0x7'))(_0xf46b('0x8'));var config=require(_0xf46b('0x9'));var jayson=require(_0xf46b('0xa'));var client=jayson[_0xf46b('0xb')][_0xf46b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3ead53,_0x153ea7,_0x32ab39){return new BPromise(function(_0x1642dd,_0xf6ce34){return client['request'](_0x3ead53,_0x32ab39)[_0xf46b('0xd')](function(_0x56907b){logger[_0xf46b('0xe')]('Sound,\x20%s,\x20%s',_0x153ea7,_0xf46b('0xf'));logger[_0xf46b('0x10')](_0xf46b('0x11'),_0x153ea7,'request\x20sent',JSON[_0xf46b('0x12')](_0x56907b));if(_0x56907b[_0xf46b('0x13')]){if(_0x56907b[_0xf46b('0x13')][_0xf46b('0x14')]===0x1f4){logger[_0xf46b('0x13')](_0xf46b('0x15'),_0x153ea7,_0x56907b['error'][_0xf46b('0x16')]);return _0xf6ce34(_0x56907b[_0xf46b('0x13')][_0xf46b('0x16')]);}logger['error'](_0xf46b('0x15'),_0x153ea7,_0x56907b['error'][_0xf46b('0x16')]);return _0x1642dd(_0x56907b[_0xf46b('0x13')][_0xf46b('0x16')]);}else{logger[_0xf46b('0xe')](_0xf46b('0x15'),_0x153ea7,_0xf46b('0xf'));_0x1642dd(_0x56907b[_0xf46b('0x17')][_0xf46b('0x16')]);}})[_0xf46b('0x18')](function(_0x5e3140){logger[_0xf46b('0x13')]('Sound,\x20%s,\x20%s',_0x153ea7,_0x5e3140);_0xf6ce34(_0x5e3140);});});}exports['ShowSound']=function(_0x4fa08f){var _0xe70336=this;return new Promise(function(_0x4e8f1b,_0x4afa92){return db[_0xf46b('0x19')][_0xf46b('0x1a')]({'raw':_0x4fa08f[_0xf46b('0x1b')]?_0x4fa08f[_0xf46b('0x1b')][_0xf46b('0x1c')]===undefined?!![]:![]:!![],'where':_0x4fa08f['options']?_0x4fa08f[_0xf46b('0x1b')][_0xf46b('0x1d')]||null:null,'attributes':_0x4fa08f[_0xf46b('0x1b')]?_0x4fa08f[_0xf46b('0x1b')][_0xf46b('0x1e')]||null:null,'include':_0x4fa08f[_0xf46b('0x1b')]?_0x4fa08f['options'][_0xf46b('0x1f')]?_['map'](_0x4fa08f[_0xf46b('0x1b')][_0xf46b('0x1f')],function(_0x3143ed){return{'model':db[_0x3143ed[_0xf46b('0x20')]],'as':_0x3143ed['as'],'attributes':_0x3143ed[_0xf46b('0x1e')],'include':_0x3143ed[_0xf46b('0x1f')]?_[_0xf46b('0x21')](_0x3143ed[_0xf46b('0x1f')],function(_0x19852c){return{'model':db[_0x19852c['model']],'as':_0x19852c['as'],'attributes':_0x19852c['attributes'],'include':_0x19852c[_0xf46b('0x1f')]?_[_0xf46b('0x21')](_0x19852c['include'],function(_0x561d1b){return{'model':db[_0x561d1b['model']],'as':_0x561d1b['as'],'attributes':_0x561d1b[_0xf46b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf46b('0xd')](function(_0x112d00){logger[_0xf46b('0xe')](_0xf46b('0x22'),_0x4fa08f);logger[_0xf46b('0x10')]('ShowSound',_0x4fa08f,JSON['stringify'](_0x112d00));_0x4e8f1b(_0x112d00);})[_0xf46b('0x18')](function(_0x5bb29e){logger['error'](_0xf46b('0x22'),_0x5bb29e[_0xf46b('0x16')],_0x4fa08f);_0x4afa92(_0xe70336[_0xf46b('0x13')](0x1f4,_0x5bb29e[_0xf46b('0x16')]));});});};
\ No newline at end of file
index 5752dc3..7dd99eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x3e3221,_0x392851){var _0x190da4=function(_0x13d601){while(--_0x13d601){_0x3e3221['push'](_0x3e3221['shift']());}};_0x190da4(++_0x392851);}(_0x4fc2,0x111));var _0x24fc=function(_0x432286,_0xc7f906){_0x432286=_0x432286-0x0;var _0x475b6e=_0x4fc2[_0x432286];return _0x475b6e;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
+var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x564615,_0x51000c){var _0x3e5c3c=function(_0x35b777){while(--_0x35b777){_0x564615['push'](_0x564615['shift']());}};_0x3e5c3c(++_0x51000c);}(_0x4fc2,0x111));var _0x24fc=function(_0x53056a,_0x304edc){_0x53056a=_0x53056a-0x0;var _0x3f1e16=_0x4fc2[_0x53056a];return _0x3f1e16;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
index 3026b43..a501133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac8=['TEXT','ENUM','out','sequelize','exports','STRING'];(function(_0x1588b1,_0x532953){var _0x14310c=function(_0x3df1c4){while(--_0x3df1c4){_0x1588b1['push'](_0x1588b1['shift']());}};_0x14310c(++_0x532953);}(_0x1ac8,0x1e3));var _0x81ac=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x1ac8[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x81ac('0x0'));module[_0x81ac('0x1')]={'uniqueid':{'type':Sequelize[_0x81ac('0x2')]},'body':{'type':Sequelize[_0x81ac('0x3')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x81ac('0x4')]('in',_0x81ac('0x5')),'defaultValue':_0x81ac('0x5'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x81ac('0x3')]}};
\ No newline at end of file
+var _0xfa4a=['exports','STRING','TEXT','medium','out','sequelize'];(function(_0x5d8084,_0x1947e9){var _0x4c0147=function(_0x20c7f0){while(--_0x20c7f0){_0x5d8084['push'](_0x5d8084['shift']());}};_0x4c0147(++_0x1947e9);}(_0xfa4a,0x12b));var _0xafa4=function(_0xd8face,_0x4ef518){_0xd8face=_0xd8face-0x0;var _0x38d98d=_0xfa4a[_0xd8face];return _0x38d98d;};'use strict';var Sequelize=require(_0xafa4('0x0'));module[_0xafa4('0x1')]={'uniqueid':{'type':Sequelize[_0xafa4('0x2')]},'body':{'type':Sequelize[_0xafa4('0x3')](_0xafa4('0x4')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0xafa4('0x5')),'defaultValue':_0xafa4('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0xafa4('0x2')]},'providerResponse':{'type':Sequelize[_0xafa4('0x3')]}};
\ No newline at end of file
index e164387..19d3e22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa817=['count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','merge','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit'];(function(_0x15c38e,_0x1a8382){var _0x5c05a5=function(_0x937488){while(--_0x937488){_0x15c38e['push'](_0x15c38e['shift']());}};_0x5c05a5(++_0x1a8382);}(_0xa817,0x7b));var _0x7a81=function(_0x2f625f,_0x5367bd){_0x2f625f=_0x2f625f-0x0;var _0x533355=_0xa817[_0x2f625f];return _0x533355;};'use strict';var emlformat=require(_0x7a81('0x0'));var rimraf=require(_0x7a81('0x1'));var zipdir=require(_0x7a81('0x2'));var jsonpatch=require(_0x7a81('0x3'));var rp=require(_0x7a81('0x4'));var moment=require(_0x7a81('0x5'));var BPromise=require(_0x7a81('0x6'));var Mustache=require(_0x7a81('0x7'));var util=require(_0x7a81('0x8'));var path=require('path');var sox=require(_0x7a81('0x9'));var csv=require(_0x7a81('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a81('0xb'));var _=require(_0x7a81('0xc'));var squel=require(_0x7a81('0xd'));var crypto=require(_0x7a81('0xe'));var jsforce=require(_0x7a81('0xf'));var deskjs=require(_0x7a81('0x10'));var toCsv=require('to-csv');var querystring=require(_0x7a81('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7a81('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x7a81('0x13'));var hardwareService=require(_0x7a81('0x14'));var logger=require(_0x7a81('0x15'))(_0x7a81('0x16'));var utils=require(_0x7a81('0x17'));var config=require(_0x7a81('0x18'));var licenseUtil=require(_0x7a81('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12a089,_0x32c90e){_0x32c90e=_0x32c90e||0xcc;return function(_0xc5cdf2){if(_0xc5cdf2){return _0x12a089['sendStatus'](_0x32c90e);}return _0x12a089[_0x7a81('0x1a')](_0x32c90e)[_0x7a81('0x1b')]();};}function respondWithResult(_0x2977a9,_0x4ca2d3){_0x4ca2d3=_0x4ca2d3||0xc8;return function(_0x43141a){if(_0x43141a){return _0x2977a9[_0x7a81('0x1a')](_0x4ca2d3)['json'](_0x43141a);}};}function respondWithFilteredResult(_0x4aef24,_0x1ce514){return function(_0x208a7b){if(_0x208a7b){var _0x584c0c=typeof _0x1ce514[_0x7a81('0x1c')]===_0x7a81('0x1d')&&typeof _0x1ce514[_0x7a81('0x1e')]===_0x7a81('0x1d');var _0xed69fc=_0x208a7b[_0x7a81('0x1f')];var _0x114cfa=_0x584c0c?0x0:_0x1ce514[_0x7a81('0x1c')];var _0x2b5720=_0x584c0c?_0x208a7b[_0x7a81('0x1f')]:_0x1ce514[_0x7a81('0x1c')]+_0x1ce514[_0x7a81('0x1e')];var _0x1aefdf;if(_0x2b5720>=_0xed69fc){_0x2b5720=_0xed69fc;_0x1aefdf=0xc8;}else{_0x1aefdf=0xce;}_0x4aef24['status'](_0x1aefdf);return _0x4aef24[_0x7a81('0x20')](_0x7a81('0x21'),_0x114cfa+'-'+_0x2b5720+'/'+_0xed69fc)[_0x7a81('0x22')](_0x208a7b);}return null;};}function patchUpdates(_0x3087c0){return function(_0x3b0786){try{jsonpatch[_0x7a81('0x23')](_0x3b0786,_0x3087c0,!![]);}catch(_0x34dd0b){return BPromise[_0x7a81('0x24')](_0x34dd0b);}return _0x3b0786[_0x7a81('0x25')]();};}function saveUpdates(_0x596a8c,_0x3c0c41){return function(_0x26b384){if(_0x26b384){return _0x26b384[_0x7a81('0x26')](_0x596a8c)[_0x7a81('0x27')](function(_0x26556b){return _0x26556b;});}return null;};}function removeEntity(_0x15a1cd,_0x249ae1){return function(_0x21c45a){if(_0x21c45a){return _0x21c45a['destroy']()[_0x7a81('0x27')](function(){_0x15a1cd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e2476,_0x41ea68){return function(_0x13d2ae){if(!_0x13d2ae){_0x1e2476['sendStatus'](0x194);}return _0x13d2ae;};}function handleError(_0x2abcf4,_0x35f521){_0x35f521=_0x35f521||0x1f4;return function(_0x87e708){logger[_0x7a81('0x28')](_0x87e708[_0x7a81('0x29')]);if(_0x87e708['name']){delete _0x87e708[_0x7a81('0x2a')];}_0x2abcf4[_0x7a81('0x1a')](_0x35f521)[_0x7a81('0x2b')](_0x87e708);};}exports[_0x7a81('0x2c')]=function(_0x29655a,_0x3295df){var _0x31fe26={},_0x551c14={},_0x1a0232={'count':0x0,'rows':[]};var _0x5b79ea=_[_0x7a81('0x2d')](db[_0x7a81('0x2e')][_0x7a81('0x2f')],function(_0x523d39){return{'name':_0x523d39[_0x7a81('0x30')],'type':_0x523d39['type']['key']};});_0x551c14[_0x7a81('0x31')]=_[_0x7a81('0x2d')](_0x5b79ea,_0x7a81('0x2a'));_0x551c14[_0x7a81('0x32')]=_[_0x7a81('0x33')](_0x29655a['query']);_0x551c14[_0x7a81('0x34')]=_[_0x7a81('0x35')](_0x551c14[_0x7a81('0x31')],_0x551c14[_0x7a81('0x32')]);_0x31fe26[_0x7a81('0x36')]=_[_0x7a81('0x35')](_0x551c14[_0x7a81('0x31')],qs['fields'](_0x29655a[_0x7a81('0x32')][_0x7a81('0x37')]));_0x31fe26[_0x7a81('0x36')]=_0x31fe26['attributes'][_0x7a81('0x38')]?_0x31fe26[_0x7a81('0x36')]:_0x551c14[_0x7a81('0x31')];if(!_0x29655a[_0x7a81('0x32')]['hasOwnProperty'](_0x7a81('0x39'))){_0x31fe26[_0x7a81('0x1e')]=qs[_0x7a81('0x1e')](_0x29655a[_0x7a81('0x32')][_0x7a81('0x1e')]);_0x31fe26['offset']=qs[_0x7a81('0x1c')](_0x29655a[_0x7a81('0x32')][_0x7a81('0x1c')]);}_0x31fe26[_0x7a81('0x3a')]=qs[_0x7a81('0x3b')](_0x29655a[_0x7a81('0x32')][_0x7a81('0x3b')]);_0x31fe26['where']=qs['filters'](_[_0x7a81('0x3c')](_0x29655a[_0x7a81('0x32')],_0x551c14['filters']),_0x5b79ea);if(_0x29655a[_0x7a81('0x32')][_0x7a81('0x3d')]){_0x31fe26[_0x7a81('0x3e')]=_['merge'](_0x31fe26[_0x7a81('0x3e')],{'$or':_[_0x7a81('0x2d')](_0x5b79ea,function(_0x4be82f){if(_0x4be82f[_0x7a81('0x3f')]!==_0x7a81('0x40')){var _0x475aac={};_0x475aac[_0x4be82f['name']]={'$like':'%'+_0x29655a[_0x7a81('0x32')][_0x7a81('0x3d')]+'%'};return _0x475aac;}})});}_0x31fe26=_['merge']({},_0x31fe26,_0x29655a[_0x7a81('0x41')]);var _0x315db1={'where':_0x31fe26[_0x7a81('0x3e')]};return db[_0x7a81('0x2e')][_0x7a81('0x1f')](_0x315db1)[_0x7a81('0x27')](function(_0x4723ea){_0x1a0232['count']=_0x4723ea;if(_0x29655a['query'][_0x7a81('0x42')]){_0x31fe26[_0x7a81('0x43')]=[{'all':!![]}];}return db[_0x7a81('0x2e')][_0x7a81('0x44')](_0x31fe26);})[_0x7a81('0x27')](function(_0x25ef87){_0x1a0232[_0x7a81('0x45')]=_0x25ef87;return _0x1a0232;})[_0x7a81('0x27')](respondWithFilteredResult(_0x3295df,_0x31fe26))[_0x7a81('0x46')](handleError(_0x3295df,null));};exports['show']=function(_0x28f628,_0x58777a){var _0x4f9bb7={'raw':!![],'where':{'id':_0x28f628['params']['id']}},_0x611df={};_0x611df['model']=_[_0x7a81('0x33')](db[_0x7a81('0x2e')][_0x7a81('0x2f')]);_0x611df[_0x7a81('0x32')]=_[_0x7a81('0x33')](_0x28f628[_0x7a81('0x32')]);_0x611df[_0x7a81('0x34')]=_[_0x7a81('0x35')](_0x611df[_0x7a81('0x31')],_0x611df[_0x7a81('0x32')]);_0x4f9bb7[_0x7a81('0x36')]=_[_0x7a81('0x35')](_0x611df[_0x7a81('0x31')],qs['fields'](_0x28f628[_0x7a81('0x32')][_0x7a81('0x37')]));_0x4f9bb7[_0x7a81('0x36')]=_0x4f9bb7[_0x7a81('0x36')][_0x7a81('0x38')]?_0x4f9bb7['attributes']:_0x611df[_0x7a81('0x31')];if(_0x28f628[_0x7a81('0x32')][_0x7a81('0x42')]){_0x4f9bb7['include']=[{'all':!![]}];}_0x4f9bb7=_[_0x7a81('0x47')]({},_0x4f9bb7,_0x28f628[_0x7a81('0x41')]);return db[_0x7a81('0x2e')][_0x7a81('0x48')](_0x4f9bb7)[_0x7a81('0x27')](handleEntityNotFound(_0x58777a,null))[_0x7a81('0x27')](respondWithResult(_0x58777a,null))[_0x7a81('0x46')](handleError(_0x58777a,null));};exports['create']=function(_0x40c17c,_0x473e42){return db[_0x7a81('0x2e')][_0x7a81('0x49')](_0x40c17c[_0x7a81('0x4a')],{})[_0x7a81('0x27')](respondWithResult(_0x473e42,0xc9))['catch'](handleError(_0x473e42,null));};exports['update']=function(_0x31a0aa,_0x7fb80){if(_0x31a0aa[_0x7a81('0x4a')]['id']){delete _0x31a0aa[_0x7a81('0x4a')]['id'];}return db['SquareMessage'][_0x7a81('0x48')]({'where':{'id':_0x31a0aa[_0x7a81('0x4b')]['id']}})[_0x7a81('0x27')](handleEntityNotFound(_0x7fb80,null))[_0x7a81('0x27')](saveUpdates(_0x31a0aa[_0x7a81('0x4a')],null))['then'](respondWithResult(_0x7fb80,null))['catch'](handleError(_0x7fb80,null));};exports[_0x7a81('0x4c')]=function(_0x450f67,_0x1ed652){return db['SquareMessage'][_0x7a81('0x48')]({'where':{'id':_0x450f67[_0x7a81('0x4b')]['id']}})[_0x7a81('0x27')](handleEntityNotFound(_0x1ed652,null))[_0x7a81('0x27')](removeEntity(_0x1ed652,null))['catch'](handleError(_0x1ed652,null));};
\ No newline at end of file
+var _0x6ad3=['length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','path','to-csv','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','keys','query','attributes','fields'];(function(_0x2a406c,_0x3cec41){var _0x3bb206=function(_0x5333df){while(--_0x5333df){_0x2a406c['push'](_0x2a406c['shift']());}};_0x3bb206(++_0x3cec41);}(_0x6ad3,0xa4));var _0x36ad=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x6ad3[_0x2f45ea];return _0x485a84;};'use strict';var emlformat=require(_0x36ad('0x0'));var rimraf=require(_0x36ad('0x1'));var zipdir=require(_0x36ad('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x36ad('0x3'));var moment=require('moment');var BPromise=require(_0x36ad('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x36ad('0x5'));var sox=require('sox');var csv=require(_0x36ad('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x36ad('0x7'));var squel=require(_0x36ad('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x36ad('0x9'));var toCsv=require('to-csv');var querystring=require(_0x36ad('0xa'));var Papa=require(_0x36ad('0xb'));var Redis=require(_0x36ad('0xc'));var authService=require(_0x36ad('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x36ad('0xe'));var hardwareService=require(_0x36ad('0xf'));var logger=require(_0x36ad('0x10'))(_0x36ad('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x36ad('0x12'));var db=require(_0x36ad('0x13'))['db'];function respondWithStatusCode(_0x57324a,_0x292a4f){_0x292a4f=_0x292a4f||0xcc;return function(_0xe685e6){if(_0xe685e6){return _0x57324a['sendStatus'](_0x292a4f);}return _0x57324a[_0x36ad('0x14')](_0x292a4f)[_0x36ad('0x15')]();};}function respondWithResult(_0x3c1d37,_0x7e49cb){_0x7e49cb=_0x7e49cb||0xc8;return function(_0x147a1b){if(_0x147a1b){return _0x3c1d37[_0x36ad('0x14')](_0x7e49cb)[_0x36ad('0x16')](_0x147a1b);}};}function respondWithFilteredResult(_0x31263f,_0x2646da){return function(_0x42ba4e){if(_0x42ba4e){var _0xe7b6d=typeof _0x2646da[_0x36ad('0x17')]===_0x36ad('0x18')&&typeof _0x2646da[_0x36ad('0x19')]===_0x36ad('0x18');var _0x224244=_0x42ba4e[_0x36ad('0x1a')];var _0x218446=_0xe7b6d?0x0:_0x2646da[_0x36ad('0x17')];var _0x44f106=_0xe7b6d?_0x42ba4e[_0x36ad('0x1a')]:_0x2646da[_0x36ad('0x17')]+_0x2646da[_0x36ad('0x19')];var _0x26b143;if(_0x44f106>=_0x224244){_0x44f106=_0x224244;_0x26b143=0xc8;}else{_0x26b143=0xce;}_0x31263f[_0x36ad('0x14')](_0x26b143);return _0x31263f[_0x36ad('0x1b')](_0x36ad('0x1c'),_0x218446+'-'+_0x44f106+'/'+_0x224244)['json'](_0x42ba4e);}return null;};}function patchUpdates(_0x15bc2d){return function(_0x5eba96){try{jsonpatch['apply'](_0x5eba96,_0x15bc2d,!![]);}catch(_0x19db2d){return BPromise[_0x36ad('0x1d')](_0x19db2d);}return _0x5eba96[_0x36ad('0x1e')]();};}function saveUpdates(_0x4fec48,_0x52387f){return function(_0xac43c9){if(_0xac43c9){return _0xac43c9[_0x36ad('0x1f')](_0x4fec48)[_0x36ad('0x20')](function(_0x3b9ee4){return _0x3b9ee4;});}return null;};}function removeEntity(_0x55292b,_0x53eeb0){return function(_0x5d1328){if(_0x5d1328){return _0x5d1328[_0x36ad('0x21')]()['then'](function(){_0x55292b['status'](0xcc)[_0x36ad('0x15')]();});}};}function handleEntityNotFound(_0x2facdf,_0x176001){return function(_0x401a86){if(!_0x401a86){_0x2facdf[_0x36ad('0x22')](0x194);}return _0x401a86;};}function handleError(_0x1b7f6b,_0x1bbde1){_0x1bbde1=_0x1bbde1||0x1f4;return function(_0x4a5798){logger['error'](_0x4a5798['stack']);if(_0x4a5798['name']){delete _0x4a5798[_0x36ad('0x23')];}_0x1b7f6b['status'](_0x1bbde1)[_0x36ad('0x24')](_0x4a5798);};}exports[_0x36ad('0x25')]=function(_0x46ad4a,_0x539b48){var _0x571e00={},_0x1bee84={},_0x53d06f={'count':0x0,'rows':[]};var _0x5405e3=_[_0x36ad('0x26')](db[_0x36ad('0x27')][_0x36ad('0x28')],function(_0x26b8c5){return{'name':_0x26b8c5[_0x36ad('0x29')],'type':_0x26b8c5[_0x36ad('0x2a')][_0x36ad('0x2b')]};});_0x1bee84[_0x36ad('0x2c')]=_[_0x36ad('0x26')](_0x5405e3,_0x36ad('0x23'));_0x1bee84['query']=_[_0x36ad('0x2d')](_0x46ad4a[_0x36ad('0x2e')]);_0x1bee84['filters']=_['intersection'](_0x1bee84[_0x36ad('0x2c')],_0x1bee84[_0x36ad('0x2e')]);_0x571e00[_0x36ad('0x2f')]=_['intersection'](_0x1bee84['model'],qs['fields'](_0x46ad4a[_0x36ad('0x2e')][_0x36ad('0x30')]));_0x571e00[_0x36ad('0x2f')]=_0x571e00[_0x36ad('0x2f')][_0x36ad('0x31')]?_0x571e00['attributes']:_0x1bee84[_0x36ad('0x2c')];if(!_0x46ad4a[_0x36ad('0x2e')][_0x36ad('0x32')](_0x36ad('0x33'))){_0x571e00[_0x36ad('0x19')]=qs['limit'](_0x46ad4a[_0x36ad('0x2e')][_0x36ad('0x19')]);_0x571e00[_0x36ad('0x17')]=qs[_0x36ad('0x17')](_0x46ad4a[_0x36ad('0x2e')][_0x36ad('0x17')]);}_0x571e00[_0x36ad('0x34')]=qs['sort'](_0x46ad4a['query'][_0x36ad('0x35')]);_0x571e00[_0x36ad('0x36')]=qs[_0x36ad('0x37')](_[_0x36ad('0x38')](_0x46ad4a['query'],_0x1bee84[_0x36ad('0x37')]),_0x5405e3);if(_0x46ad4a[_0x36ad('0x2e')][_0x36ad('0x39')]){_0x571e00[_0x36ad('0x36')]=_[_0x36ad('0x3a')](_0x571e00[_0x36ad('0x36')],{'$or':_['map'](_0x5405e3,function(_0x23edd0){if(_0x23edd0[_0x36ad('0x2a')]!=='VIRTUAL'){var _0x160062={};_0x160062[_0x23edd0[_0x36ad('0x23')]]={'$like':'%'+_0x46ad4a[_0x36ad('0x2e')][_0x36ad('0x39')]+'%'};return _0x160062;}})});}_0x571e00=_[_0x36ad('0x3a')]({},_0x571e00,_0x46ad4a[_0x36ad('0x3b')]);var _0x45a213={'where':_0x571e00[_0x36ad('0x36')]};return db['SquareMessage'][_0x36ad('0x1a')](_0x45a213)[_0x36ad('0x20')](function(_0x3b0d60){_0x53d06f[_0x36ad('0x1a')]=_0x3b0d60;if(_0x46ad4a['query'][_0x36ad('0x3c')]){_0x571e00[_0x36ad('0x3d')]=[{'all':!![]}];}return db[_0x36ad('0x27')][_0x36ad('0x3e')](_0x571e00);})[_0x36ad('0x20')](function(_0x2c3357){_0x53d06f[_0x36ad('0x3f')]=_0x2c3357;return _0x53d06f;})['then'](respondWithFilteredResult(_0x539b48,_0x571e00))[_0x36ad('0x40')](handleError(_0x539b48,null));};exports[_0x36ad('0x41')]=function(_0x25e3b1,_0x56fced){var _0x640158={'raw':!![],'where':{'id':_0x25e3b1[_0x36ad('0x42')]['id']}},_0x27bb1c={};_0x27bb1c[_0x36ad('0x2c')]=_['keys'](db[_0x36ad('0x27')][_0x36ad('0x28')]);_0x27bb1c[_0x36ad('0x2e')]=_[_0x36ad('0x2d')](_0x25e3b1[_0x36ad('0x2e')]);_0x27bb1c[_0x36ad('0x37')]=_[_0x36ad('0x43')](_0x27bb1c[_0x36ad('0x2c')],_0x27bb1c['query']);_0x640158[_0x36ad('0x2f')]=_[_0x36ad('0x43')](_0x27bb1c['model'],qs['fields'](_0x25e3b1['query'][_0x36ad('0x30')]));_0x640158[_0x36ad('0x2f')]=_0x640158[_0x36ad('0x2f')][_0x36ad('0x31')]?_0x640158[_0x36ad('0x2f')]:_0x27bb1c[_0x36ad('0x2c')];if(_0x25e3b1[_0x36ad('0x2e')][_0x36ad('0x3c')]){_0x640158[_0x36ad('0x3d')]=[{'all':!![]}];}_0x640158=_[_0x36ad('0x3a')]({},_0x640158,_0x25e3b1[_0x36ad('0x3b')]);return db['SquareMessage'][_0x36ad('0x44')](_0x640158)['then'](handleEntityNotFound(_0x56fced,null))[_0x36ad('0x20')](respondWithResult(_0x56fced,null))[_0x36ad('0x40')](handleError(_0x56fced,null));};exports[_0x36ad('0x45')]=function(_0x293ccd,_0x5eb08f){return db['SquareMessage']['create'](_0x293ccd[_0x36ad('0x46')],{})[_0x36ad('0x20')](respondWithResult(_0x5eb08f,0xc9))['catch'](handleError(_0x5eb08f,null));};exports[_0x36ad('0x1f')]=function(_0x596e1f,_0x331a21){if(_0x596e1f['body']['id']){delete _0x596e1f['body']['id'];}return db['SquareMessage'][_0x36ad('0x44')]({'where':{'id':_0x596e1f[_0x36ad('0x42')]['id']}})[_0x36ad('0x20')](handleEntityNotFound(_0x331a21,null))[_0x36ad('0x20')](saveUpdates(_0x596e1f[_0x36ad('0x46')],null))['then'](respondWithResult(_0x331a21,null))['catch'](handleError(_0x331a21,null));};exports[_0x36ad('0x21')]=function(_0x263e07,_0x149329){return db[_0x36ad('0x27')]['find']({'where':{'id':_0x263e07['params']['id']}})[_0x36ad('0x20')](handleEntityNotFound(_0x149329,null))[_0x36ad('0x20')](removeEntity(_0x149329,null))['catch'](handleError(_0x149329,null));};
\ No newline at end of file
index 779e678..335324e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6850=['moment','rimraf','../../config/environment','./squareMessage.attributes','exports','define','square_messages','../../config/logger','api'];(function(_0x299fb9,_0x22e68e){var _0x1393b6=function(_0x13c320){while(--_0x13c320){_0x299fb9['push'](_0x299fb9['shift']());}};_0x1393b6(++_0x22e68e);}(_0x6850,0x103));var _0x0685=function(_0x46a372,_0x19c179){_0x46a372=_0x46a372-0x0;var _0x5a7f7d=_0x6850[_0x46a372];return _0x5a7f7d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0685('0x0'))(_0x0685('0x1'));var moment=require(_0x0685('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0685('0x3'));var config=require(_0x0685('0x4'));var attributes=require(_0x0685('0x5'));module[_0x0685('0x6')]=function(_0x33a4a6,_0x4b3749){return _0x33a4a6[_0x0685('0x7')]('SquareMessage',attributes,{'tableName':_0x0685('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67dd=['SquareMessage','square_messages','util','../../config/logger','api','moment','bluebird','path','rimraf','./squareMessage.attributes','define'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x67dd,0x136));var _0xd67d=function(_0x50e7a4,_0x557dff){_0x50e7a4=_0x50e7a4-0x0;var _0x140891=_0x67dd[_0x50e7a4];return _0x140891;};'use strict';var _=require('lodash');var util=require(_0xd67d('0x0'));var logger=require(_0xd67d('0x1'))(_0xd67d('0x2'));var moment=require(_0xd67d('0x3'));var BPromise=require(_0xd67d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd67d('0x5'));var rimraf=require(_0xd67d('0x6'));var config=require('../../config/environment');var attributes=require(_0xd67d('0x7'));module['exports']=function(_0xd1bc52,_0x3c9f90){return _0xd1bc52[_0xd67d('0x8')](_0xd67d('0x9'),attributes,{'tableName':_0xd67d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 160a90c..998679d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd95b=['code','message','result','catch','create','options','raw','debug','CreateSquareMessage','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3d6f64,_0x29e8b8){var _0xec3d87=function(_0xc4f310){while(--_0xc4f310){_0x3d6f64['push'](_0x3d6f64['shift']());}};_0xec3d87(++_0x29e8b8);}(_0xd95b,0x105));var _0xbd95=function(_0x85b901,_0x29f63e){_0x85b901=_0x85b901-0x0;var _0x311f8b=_0xd95b[_0x85b901];return _0x311f8b;};'use strict';var _=require(_0xbd95('0x0'));var util=require(_0xbd95('0x1'));var moment=require(_0xbd95('0x2'));var BPromise=require(_0xbd95('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbd95('0x4'));var logger=require(_0xbd95('0x5'))(_0xbd95('0x6'));var config=require(_0xbd95('0x7'));var jayson=require(_0xbd95('0x8'));var client=jayson[_0xbd95('0x9')][_0xbd95('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33e0dc,_0x584b24,_0x57c688){return new BPromise(function(_0x379a67,_0xe5f048){return client[_0xbd95('0xb')](_0x33e0dc,_0x57c688)[_0xbd95('0xc')](function(_0x65ae03){logger[_0xbd95('0xd')](_0xbd95('0xe'),_0x584b24,_0xbd95('0xf'));logger['debug'](_0xbd95('0x10'),_0x584b24,'request\x20sent',JSON[_0xbd95('0x11')](_0x65ae03));if(_0x65ae03[_0xbd95('0x12')]){if(_0x65ae03[_0xbd95('0x12')][_0xbd95('0x13')]===0x1f4){logger[_0xbd95('0x12')](_0xbd95('0xe'),_0x584b24,_0x65ae03['error'][_0xbd95('0x14')]);return _0xe5f048(_0x65ae03[_0xbd95('0x12')][_0xbd95('0x14')]);}logger[_0xbd95('0x12')](_0xbd95('0xe'),_0x584b24,_0x65ae03[_0xbd95('0x12')]['message']);return _0x379a67(_0x65ae03[_0xbd95('0x12')][_0xbd95('0x14')]);}else{logger[_0xbd95('0xd')](_0xbd95('0xe'),_0x584b24,_0xbd95('0xf'));_0x379a67(_0x65ae03[_0xbd95('0x15')][_0xbd95('0x14')]);}})[_0xbd95('0x16')](function(_0x36cd80){logger[_0xbd95('0x12')](_0xbd95('0xe'),_0x584b24,_0x36cd80);_0xe5f048(_0x36cd80);});});}exports['CreateSquareMessage']=function(_0x2e9c68){var _0x2fc438=this;return new Promise(function(_0x225a58,_0xe072e4){return db['SquareMessage'][_0xbd95('0x17')](_0x2e9c68['body'],{'raw':_0x2e9c68['options']?_0x2e9c68[_0xbd95('0x18')][_0xbd95('0x19')]===undefined?!![]:![]:!![]})[_0xbd95('0xc')](function(_0x320846){logger[_0xbd95('0xd')]('CreateSquareMessage',_0x2e9c68);logger[_0xbd95('0x1a')]('CreateSquareMessage',_0x2e9c68,JSON[_0xbd95('0x11')](_0x320846));_0x225a58(_0x320846);})[_0xbd95('0x16')](function(_0x990d75){logger['error'](_0xbd95('0x1b'),_0x990d75['message'],_0x2e9c68);_0xe072e4(_0x2fc438[_0xbd95('0x12')](0x1f4,_0x990d75[_0xbd95('0x14')]));});});};
\ No newline at end of file
+var _0x811e=['SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateSquareMessage','SquareMessage','options','raw','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x811e,0xa0));var _0xe811=function(_0x312940,_0x27d5aa){_0x312940=_0x312940-0x0;var _0x4c2cc5=_0x811e[_0x312940];return _0x4c2cc5;};'use strict';var _=require(_0xe811('0x0'));var util=require('util');var moment=require(_0xe811('0x1'));var BPromise=require(_0xe811('0x2'));var rs=require(_0xe811('0x3'));var fs=require('fs');var Redis=require(_0xe811('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe811('0x5'));var logger=require(_0xe811('0x6'))(_0xe811('0x7'));var config=require(_0xe811('0x8'));var jayson=require(_0xe811('0x9'));var client=jayson[_0xe811('0xa')][_0xe811('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x525fde,_0x3fbf86,_0x3ecb39){return new BPromise(function(_0x4b9f05,_0x3fae1a){return client[_0xe811('0xc')](_0x525fde,_0x3ecb39)[_0xe811('0xd')](function(_0x21a6c4){logger['info'](_0xe811('0xe'),_0x3fbf86,_0xe811('0xf'));logger[_0xe811('0x10')](_0xe811('0x11'),_0x3fbf86,_0xe811('0xf'),JSON[_0xe811('0x12')](_0x21a6c4));if(_0x21a6c4['error']){if(_0x21a6c4[_0xe811('0x13')][_0xe811('0x14')]===0x1f4){logger[_0xe811('0x13')](_0xe811('0xe'),_0x3fbf86,_0x21a6c4[_0xe811('0x13')][_0xe811('0x15')]);return _0x3fae1a(_0x21a6c4[_0xe811('0x13')][_0xe811('0x15')]);}logger[_0xe811('0x13')](_0xe811('0xe'),_0x3fbf86,_0x21a6c4['error'][_0xe811('0x15')]);return _0x4b9f05(_0x21a6c4['error']['message']);}else{logger[_0xe811('0x16')]('SquareMessage,\x20%s,\x20%s',_0x3fbf86,'request\x20sent');_0x4b9f05(_0x21a6c4[_0xe811('0x17')][_0xe811('0x15')]);}})[_0xe811('0x18')](function(_0x7c5162){logger[_0xe811('0x13')](_0xe811('0xe'),_0x3fbf86,_0x7c5162);_0x3fae1a(_0x7c5162);});});}exports[_0xe811('0x19')]=function(_0x134a4b){var _0x2fc94e=this;return new Promise(function(_0x5cb3a0,_0x5cb0ab){return db[_0xe811('0x1a')]['create'](_0x134a4b['body'],{'raw':_0x134a4b[_0xe811('0x1b')]?_0x134a4b['options'][_0xe811('0x1c')]===undefined?!![]:![]:!![]})[_0xe811('0xd')](function(_0x5d80b6){logger[_0xe811('0x16')](_0xe811('0x19'),_0x134a4b);logger['debug'](_0xe811('0x19'),_0x134a4b,JSON[_0xe811('0x12')](_0x5d80b6));_0x5cb3a0(_0x5d80b6);})[_0xe811('0x18')](function(_0x2740db){logger[_0xe811('0x13')](_0xe811('0x19'),_0x2740db['message'],_0x134a4b);_0x5cb0ab(_0x2fc94e['error'](0x1f4,_0x2740db['message']));});});};
\ No newline at end of file
index 09b87f7..60506eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe642=['get','isAuthenticated','index','/:id','show','15s','test','post','create','put','update','delete','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x397d2f,_0x45ec26){var _0x441fcc=function(_0x403e2e){while(--_0x403e2e){_0x397d2f['push'](_0x397d2f['shift']());}};_0x441fcc(++_0x45ec26);}(_0xe642,0xcb));var _0x2e64=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe642[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x2e64('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2e64('0x1'));var express=require(_0x2e64('0x2'));var router=express[_0x2e64('0x3')]();var fs_extra=require(_0x2e64('0x4'));var auth=require(_0x2e64('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router[_0x2e64('0x6')]('/',auth[_0x2e64('0x7')](),controller[_0x2e64('0x8')]);router['get'](_0x2e64('0x9'),auth['isAuthenticated'](),controller[_0x2e64('0xa')]);router['get']('/:id/test',auth[_0x2e64('0x7')](),timeout(_0x2e64('0xb')),controller[_0x2e64('0xc')]);router[_0x2e64('0xd')]('/',auth[_0x2e64('0x7')](),controller[_0x2e64('0xe')]);router[_0x2e64('0xf')]('/:id',auth[_0x2e64('0x7')](),controller[_0x2e64('0x10')]);router[_0x2e64('0x11')](_0x2e64('0x9'),auth[_0x2e64('0x7')](),controller['destroy']);module[_0x2e64('0x12')]=router;
\ No newline at end of file
+var _0x80f5=['multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','15s','test','post','put','update','delete','exports'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x80f5,0xb4));var _0x580f=function(_0x1937c8,_0x5a1f28){_0x1937c8=_0x1937c8-0x0;var _0x48bedf=_0x80f5[_0x1937c8];return _0x48bedf;};'use strict';var multer=require(_0x580f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x580f('0x1'));var express=require(_0x580f('0x2'));var router=express[_0x580f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x580f('0x4'));var interaction=require(_0x580f('0x5'));var config=require(_0x580f('0x6'));var controller=require(_0x580f('0x7'));router[_0x580f('0x8')]('/',auth[_0x580f('0x9')](),controller[_0x580f('0xa')]);router[_0x580f('0x8')](_0x580f('0xb'),auth['isAuthenticated'](),controller[_0x580f('0xc')]);router[_0x580f('0x8')]('/:id/test',auth['isAuthenticated'](),timeout(_0x580f('0xd')),controller[_0x580f('0xe')]);router[_0x580f('0xf')]('/',auth[_0x580f('0x9')](),controller['create']);router[_0x580f('0x10')](_0x580f('0xb'),auth[_0x580f('0x9')](),controller[_0x580f('0x11')]);router[_0x580f('0x12')](_0x580f('0xb'),auth[_0x580f('0x9')](),controller['destroy']);module[_0x580f('0x13')]=router;
\ No newline at end of file
index 9a5d58b..4342a7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf232=['name','sequelize','exports','STRING'];(function(_0x495cd4,_0xd98f23){var _0x41bc01=function(_0x2d1732){while(--_0x2d1732){_0x495cd4['push'](_0x495cd4['shift']());}};_0x41bc01(++_0xd98f23);}(_0xf232,0x8d));var _0x2f23=function(_0x20f0ce,_0x4ee684){_0x20f0ce=_0x20f0ce-0x0;var _0x26239a=_0xf232[_0x20f0ce];return _0x26239a;};'use strict';var Sequelize=require(_0x2f23('0x0'));module[_0x2f23('0x1')]={'name':{'type':Sequelize[_0x2f23('0x2')],'unique':_0x2f23('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x2f23('0x2')]},'description':{'type':Sequelize[_0x2f23('0x2')]}};
\ No newline at end of file
+var _0xa224=['name','sequelize','exports','STRING'];(function(_0x2ee51e,_0x601da8){var _0x3c636a=function(_0x4f323f){while(--_0x4f323f){_0x2ee51e['push'](_0x2ee51e['shift']());}};_0x3c636a(++_0x601da8);}(_0xa224,0x161));var _0x4a22=function(_0x3ce848,_0x23b599){_0x3ce848=_0x3ce848-0x0;var _0x50edba=_0xa224[_0x3ce848];return _0x50edba;};'use strict';var Sequelize=require(_0x4a22('0x0'));module[_0x4a22('0x1')]={'name':{'type':Sequelize[_0x4a22('0x2')],'unique':_0x4a22('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x4a22('0x2')]},'description':{'type':Sequelize[_0x4a22('0x2')]}};
\ No newline at end of file
index 3809953..8d9a72c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3d6=['where','pick','VIRTUAL','filter','merge','options','includeAll','include','catch','show','params','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','test','dsn','odbc','openSync','closeSync','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','json','apply','reject','update','then','destroy','UserProfileResource','stack','name','send','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort'];(function(_0xf2f332,_0x299fbf){var _0x56cce3=function(_0x5f37e0){while(--_0x5f37e0){_0xf2f332['push'](_0xf2f332['shift']());}};_0x56cce3(++_0x299fbf);}(_0xc3d6,0xcd));var _0x6c3d=function(_0x1d7e4c,_0x3d9216){_0x1d7e4c=_0x1d7e4c-0x0;var _0xd35127=_0xc3d6[_0x1d7e4c];return _0xd35127;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6c3d('0x0'));var jsonpatch=require(_0x6c3d('0x1'));var rp=require(_0x6c3d('0x2'));var moment=require(_0x6c3d('0x3'));var BPromise=require(_0x6c3d('0x4'));var Mustache=require(_0x6c3d('0x5'));var util=require('util');var path=require(_0x6c3d('0x6'));var sox=require(_0x6c3d('0x7'));var csv=require('to-csv');var ejs=require(_0x6c3d('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6c3d('0x9'));var crypto=require(_0x6c3d('0xa'));var jsforce=require(_0x6c3d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x6c3d('0xc'));var querystring=require(_0x6c3d('0xd'));var Papa=require(_0x6c3d('0xe'));var Redis=require(_0x6c3d('0xf'));var authService=require(_0x6c3d('0x10'));var qs=require(_0x6c3d('0x11'));var as=require(_0x6c3d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6c3d('0x13'))(_0x6c3d('0x14'));var utils=require('../../config/utils');var config=require(_0x6c3d('0x15'));var licenseUtil=require(_0x6c3d('0x16'));var db=require(_0x6c3d('0x17'))['db'];function respondWithStatusCode(_0x3e8877,_0x265b2c){_0x265b2c=_0x265b2c||0xcc;return function(_0x28863c){if(_0x28863c){return _0x3e8877[_0x6c3d('0x18')](_0x265b2c);}return _0x3e8877[_0x6c3d('0x19')](_0x265b2c)[_0x6c3d('0x1a')]();};}function respondWithResult(_0x160536,_0x4349d9){_0x4349d9=_0x4349d9||0xc8;return function(_0x4a2ef7){if(_0x4a2ef7){return _0x160536[_0x6c3d('0x19')](_0x4349d9)['json'](_0x4a2ef7);}};}function respondWithFilteredResult(_0x43865a,_0x296875){return function(_0x4783b0){if(_0x4783b0){var _0x8283f4=typeof _0x296875[_0x6c3d('0x1b')]===_0x6c3d('0x1c')&&typeof _0x296875['limit']==='undefined';var _0x494a3d=_0x4783b0[_0x6c3d('0x1d')];var _0x24266e=_0x8283f4?0x0:_0x296875['offset'];var _0x1c8a0b=_0x8283f4?_0x4783b0[_0x6c3d('0x1d')]:_0x296875['offset']+_0x296875['limit'];var _0x27bf83;if(_0x1c8a0b>=_0x494a3d){_0x1c8a0b=_0x494a3d;_0x27bf83=0xc8;}else{_0x27bf83=0xce;}_0x43865a[_0x6c3d('0x19')](_0x27bf83);return _0x43865a[_0x6c3d('0x1e')]('Content-Range',_0x24266e+'-'+_0x1c8a0b+'/'+_0x494a3d)[_0x6c3d('0x1f')](_0x4783b0);}return null;};}function patchUpdates(_0x18774a){return function(_0x143afd){try{jsonpatch[_0x6c3d('0x20')](_0x143afd,_0x18774a,!![]);}catch(_0x5655a4){return BPromise[_0x6c3d('0x21')](_0x5655a4);}return _0x143afd['save']();};}function saveUpdates(_0x58017a,_0x389cb2){return function(_0x9612ee){if(_0x9612ee){return _0x9612ee[_0x6c3d('0x22')](_0x58017a)[_0x6c3d('0x23')](function(_0x338b17){return _0x338b17;});}return null;};}function removeEntity(_0x282462,_0x52fefc){return function(_0x38f313){if(_0x38f313){return _0x38f313[_0x6c3d('0x24')]()[_0x6c3d('0x23')](function(){var _0x22e85d=_0x38f313['get']({'plain':!![]});var _0x3bba14='ODBC';return db[_0x6c3d('0x25')][_0x6c3d('0x24')]({'where':{'type':_0x3bba14,'resourceId':_0x22e85d['id']}})['then'](function(){return _0x38f313;});})[_0x6c3d('0x23')](function(){_0x282462[_0x6c3d('0x19')](0xcc)[_0x6c3d('0x1a')]();});}};}function handleEntityNotFound(_0x1a5549,_0x19a180){return function(_0x4fa042){if(!_0x4fa042){_0x1a5549['sendStatus'](0x194);}return _0x4fa042;};}function handleError(_0x3708fb,_0x278fbf){_0x278fbf=_0x278fbf||0x1f4;return function(_0x525b45){logger['error'](_0x525b45[_0x6c3d('0x26')]);if(_0x525b45[_0x6c3d('0x27')]){delete _0x525b45[_0x6c3d('0x27')];}_0x3708fb[_0x6c3d('0x19')](_0x278fbf)[_0x6c3d('0x28')](_0x525b45);};}exports['index']=function(_0x59e739,_0x47743){var _0x472545={},_0xbbf11a={},_0x29bb53={'count':0x0,'rows':[]};var _0x161865=_[_0x6c3d('0x29')](db[_0x6c3d('0x2a')][_0x6c3d('0x2b')],function(_0x31d93c){return{'name':_0x31d93c[_0x6c3d('0x2c')],'type':_0x31d93c[_0x6c3d('0x2d')][_0x6c3d('0x2e')]};});_0xbbf11a[_0x6c3d('0x2f')]=_[_0x6c3d('0x29')](_0x161865,_0x6c3d('0x27'));_0xbbf11a[_0x6c3d('0x30')]=_[_0x6c3d('0x31')](_0x59e739[_0x6c3d('0x30')]);_0xbbf11a[_0x6c3d('0x32')]=_[_0x6c3d('0x33')](_0xbbf11a['model'],_0xbbf11a['query']);_0x472545[_0x6c3d('0x34')]=_[_0x6c3d('0x33')](_0xbbf11a[_0x6c3d('0x2f')],qs['fields'](_0x59e739[_0x6c3d('0x30')][_0x6c3d('0x35')]));_0x472545[_0x6c3d('0x34')]=_0x472545[_0x6c3d('0x34')]['length']?_0x472545['attributes']:_0xbbf11a['model'];if(!_0x59e739[_0x6c3d('0x30')][_0x6c3d('0x36')](_0x6c3d('0x37'))){_0x472545['limit']=qs[_0x6c3d('0x38')](_0x59e739['query'][_0x6c3d('0x38')]);_0x472545[_0x6c3d('0x1b')]=qs[_0x6c3d('0x1b')](_0x59e739[_0x6c3d('0x30')][_0x6c3d('0x1b')]);}_0x472545[_0x6c3d('0x39')]=qs['sort'](_0x59e739[_0x6c3d('0x30')][_0x6c3d('0x3a')]);_0x472545[_0x6c3d('0x3b')]=qs[_0x6c3d('0x32')](_[_0x6c3d('0x3c')](_0x59e739[_0x6c3d('0x30')],_0xbbf11a[_0x6c3d('0x32')]),_0x161865);if(_0x59e739[_0x6c3d('0x30')]['filter']){_0x472545['where']=_['merge'](_0x472545[_0x6c3d('0x3b')],{'$or':_[_0x6c3d('0x29')](_0x161865,function(_0x23b5bf){if(_0x23b5bf[_0x6c3d('0x2d')]!==_0x6c3d('0x3d')){var _0x5d286f={};_0x5d286f[_0x23b5bf[_0x6c3d('0x27')]]={'$like':'%'+_0x59e739[_0x6c3d('0x30')][_0x6c3d('0x3e')]+'%'};return _0x5d286f;}})});}_0x472545=_[_0x6c3d('0x3f')]({},_0x472545,_0x59e739[_0x6c3d('0x40')]);var _0x8d74fd={'where':_0x472545['where']};return db[_0x6c3d('0x2a')]['count'](_0x8d74fd)[_0x6c3d('0x23')](function(_0x4d711c){_0x29bb53[_0x6c3d('0x1d')]=_0x4d711c;if(_0x59e739['query'][_0x6c3d('0x41')]){_0x472545[_0x6c3d('0x42')]=[{'all':!![]}];}return db[_0x6c3d('0x2a')]['findAll'](_0x472545);})[_0x6c3d('0x23')](function(_0x193db3){_0x29bb53['rows']=_0x193db3;return _0x29bb53;})[_0x6c3d('0x23')](respondWithFilteredResult(_0x47743,_0x472545))[_0x6c3d('0x43')](handleError(_0x47743,null));};exports[_0x6c3d('0x44')]=function(_0x56cf18,_0x265d54){var _0x3186ce={'raw':!![],'where':{'id':_0x56cf18[_0x6c3d('0x45')]['id']}},_0x5a38c5={};_0x5a38c5[_0x6c3d('0x2f')]=_[_0x6c3d('0x31')](db[_0x6c3d('0x2a')][_0x6c3d('0x2b')]);_0x5a38c5['query']=_[_0x6c3d('0x31')](_0x56cf18[_0x6c3d('0x30')]);_0x5a38c5[_0x6c3d('0x32')]=_[_0x6c3d('0x33')](_0x5a38c5['model'],_0x5a38c5[_0x6c3d('0x30')]);_0x3186ce[_0x6c3d('0x34')]=_[_0x6c3d('0x33')](_0x5a38c5[_0x6c3d('0x2f')],qs[_0x6c3d('0x35')](_0x56cf18[_0x6c3d('0x30')][_0x6c3d('0x35')]));_0x3186ce['attributes']=_0x3186ce['attributes']['length']?_0x3186ce[_0x6c3d('0x34')]:_0x5a38c5[_0x6c3d('0x2f')];if(_0x56cf18[_0x6c3d('0x30')]['includeAll']){_0x3186ce[_0x6c3d('0x42')]=[{'all':!![]}];}_0x3186ce=_[_0x6c3d('0x3f')]({},_0x3186ce,_0x56cf18[_0x6c3d('0x40')]);return db['SquareOdbc']['find'](_0x3186ce)[_0x6c3d('0x23')](handleEntityNotFound(_0x265d54,null))['then'](respondWithResult(_0x265d54,null))[_0x6c3d('0x43')](handleError(_0x265d54,null));};exports[_0x6c3d('0x46')]=function(_0x3530e5,_0x3a21a3){return db[_0x6c3d('0x2a')][_0x6c3d('0x46')](_0x3530e5['body'],{})[_0x6c3d('0x23')](function(_0x2b9a1b){var _0x1c6cb0=_0x3530e5[_0x6c3d('0x47')][_0x6c3d('0x48')]({'plain':!![]});if(!_0x1c6cb0)throw new Error(_0x6c3d('0x49'));if(_0x1c6cb0[_0x6c3d('0x4a')]===_0x6c3d('0x47')){var _0x364837=_0x2b9a1b[_0x6c3d('0x48')]({'plain':!![]});var _0x7fb06e=_0x6c3d('0x4b');return db[_0x6c3d('0x4c')][_0x6c3d('0x4d')]({'where':{'name':_0x7fb06e,'userProfileId':_0x1c6cb0[_0x6c3d('0x4e')]},'raw':!![]})[_0x6c3d('0x23')](function(_0x69966){if(_0x69966&&_0x69966[_0x6c3d('0x4f')]===0x0){return db[_0x6c3d('0x25')]['create']({'name':_0x364837[_0x6c3d('0x27')],'resourceId':_0x364837['id'],'type':_0x69966[_0x6c3d('0x27')],'sectionId':_0x69966['id']},{})[_0x6c3d('0x23')](function(){return _0x2b9a1b;});}else{return _0x2b9a1b;}})[_0x6c3d('0x43')](function(_0x31b9f3){logger[_0x6c3d('0x50')](_0x6c3d('0x51'),_0x31b9f3);throw _0x31b9f3;});}return _0x2b9a1b;})[_0x6c3d('0x23')](respondWithResult(_0x3a21a3,0xc9))[_0x6c3d('0x43')](handleError(_0x3a21a3,null));};exports['update']=function(_0x1f814d,_0xa8530a){if(_0x1f814d['body']['id']){delete _0x1f814d[_0x6c3d('0x52')]['id'];}return db[_0x6c3d('0x2a')][_0x6c3d('0x4d')]({'where':{'id':_0x1f814d[_0x6c3d('0x45')]['id']}})[_0x6c3d('0x23')](handleEntityNotFound(_0xa8530a,null))[_0x6c3d('0x23')](saveUpdates(_0x1f814d[_0x6c3d('0x52')],null))[_0x6c3d('0x23')](respondWithResult(_0xa8530a,null))[_0x6c3d('0x43')](handleError(_0xa8530a,null));};exports[_0x6c3d('0x24')]=function(_0x49093b,_0x270615){return db[_0x6c3d('0x2a')][_0x6c3d('0x4d')]({'where':{'id':_0x49093b[_0x6c3d('0x45')]['id']}})['then'](handleEntityNotFound(_0x270615,null))[_0x6c3d('0x23')](removeEntity(_0x270615,null))[_0x6c3d('0x43')](handleError(_0x270615,null));};exports[_0x6c3d('0x53')]=function(_0x4c4475,_0xb2f405,_0x359614){var _0x4575c2;return db[_0x6c3d('0x2a')][_0x6c3d('0x4d')]({'where':{'id':_0x4c4475[_0x6c3d('0x45')]['id']},'attributes':['id',_0x6c3d('0x54')]})[_0x6c3d('0x23')](handleEntityNotFound(_0xb2f405,null))['then'](function(_0x50b6c3){if(_0x50b6c3){var _0x4b9723=require(_0x6c3d('0x55'))();_0x4b9723[_0x6c3d('0x56')](_0x50b6c3[_0x6c3d('0x54')]);_0x4b9723[_0x6c3d('0x57')]();return _0x50b6c3;}})[_0x6c3d('0x23')](respondWithResult(_0xb2f405,null))['catch'](handleError(_0xb2f405,null));};
\ No newline at end of file
+var _0xf4de=['SquareOdbc','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','update','test','dsn','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','then','get','ODBC','UserProfileResource','destroy','error','stack','name','send','index','map'];(function(_0x530444,_0x5c8492){var _0x55f707=function(_0x5153f8){while(--_0x5153f8){_0x530444['push'](_0x530444['shift']());}};_0x55f707(++_0x5c8492);}(_0xf4de,0x129));var _0xef4d=function(_0x150c6d,_0x4db516){_0x150c6d=_0x150c6d-0x0;var _0x26fd7a=_0xf4de[_0x150c6d];return _0x26fd7a;};'use strict';var emlformat=require(_0xef4d('0x0'));var rimraf=require(_0xef4d('0x1'));var zipdir=require(_0xef4d('0x2'));var jsonpatch=require(_0xef4d('0x3'));var rp=require(_0xef4d('0x4'));var moment=require(_0xef4d('0x5'));var BPromise=require(_0xef4d('0x6'));var Mustache=require(_0xef4d('0x7'));var util=require('util');var path=require('path');var sox=require(_0xef4d('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef4d('0x9'));var _=require(_0xef4d('0xa'));var squel=require(_0xef4d('0xb'));var crypto=require('crypto');var jsforce=require(_0xef4d('0xc'));var deskjs=require(_0xef4d('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef4d('0xe'));var Redis=require(_0xef4d('0xf'));var authService=require(_0xef4d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xef4d('0x11'));var hardwareService=require(_0xef4d('0x12'));var logger=require(_0xef4d('0x13'))(_0xef4d('0x14'));var utils=require(_0xef4d('0x15'));var config=require(_0xef4d('0x16'));var licenseUtil=require(_0xef4d('0x17'));var db=require(_0xef4d('0x18'))['db'];function respondWithStatusCode(_0x692ed0,_0x25b181){_0x25b181=_0x25b181||0xcc;return function(_0xba0bd0){if(_0xba0bd0){return _0x692ed0[_0xef4d('0x19')](_0x25b181);}return _0x692ed0[_0xef4d('0x1a')](_0x25b181)[_0xef4d('0x1b')]();};}function respondWithResult(_0x53481d,_0xa629a3){_0xa629a3=_0xa629a3||0xc8;return function(_0x1f28be){if(_0x1f28be){return _0x53481d['status'](_0xa629a3)[_0xef4d('0x1c')](_0x1f28be);}};}function respondWithFilteredResult(_0x124e11,_0x48233a){return function(_0x15d70a){if(_0x15d70a){var _0x41f6d9=typeof _0x48233a[_0xef4d('0x1d')]==='undefined'&&typeof _0x48233a[_0xef4d('0x1e')]===_0xef4d('0x1f');var _0x2be067=_0x15d70a[_0xef4d('0x20')];var _0x383bf3=_0x41f6d9?0x0:_0x48233a[_0xef4d('0x1d')];var _0xb3aef3=_0x41f6d9?_0x15d70a[_0xef4d('0x20')]:_0x48233a[_0xef4d('0x1d')]+_0x48233a[_0xef4d('0x1e')];var _0x3f6d0d;if(_0xb3aef3>=_0x2be067){_0xb3aef3=_0x2be067;_0x3f6d0d=0xc8;}else{_0x3f6d0d=0xce;}_0x124e11[_0xef4d('0x1a')](_0x3f6d0d);return _0x124e11['set']('Content-Range',_0x383bf3+'-'+_0xb3aef3+'/'+_0x2be067)['json'](_0x15d70a);}return null;};}function patchUpdates(_0x3d8ca0){return function(_0x269d66){try{jsonpatch[_0xef4d('0x21')](_0x269d66,_0x3d8ca0,!![]);}catch(_0x44e0f8){return BPromise[_0xef4d('0x22')](_0x44e0f8);}return _0x269d66[_0xef4d('0x23')]();};}function saveUpdates(_0x8d0421,_0x5a49e2){return function(_0xedf7f6){if(_0xedf7f6){return _0xedf7f6['update'](_0x8d0421)[_0xef4d('0x24')](function(_0x308c45){return _0x308c45;});}return null;};}function removeEntity(_0x32ab88,_0x2adfc6){return function(_0x3b03e2){if(_0x3b03e2){return _0x3b03e2['destroy']()['then'](function(){var _0x590e9f=_0x3b03e2[_0xef4d('0x25')]({'plain':!![]});var _0x2b5ea5=_0xef4d('0x26');return db[_0xef4d('0x27')][_0xef4d('0x28')]({'where':{'type':_0x2b5ea5,'resourceId':_0x590e9f['id']}})[_0xef4d('0x24')](function(){return _0x3b03e2;});})[_0xef4d('0x24')](function(){_0x32ab88['status'](0xcc)[_0xef4d('0x1b')]();});}};}function handleEntityNotFound(_0x4cae57,_0x4dfdcf){return function(_0x10decf){if(!_0x10decf){_0x4cae57[_0xef4d('0x19')](0x194);}return _0x10decf;};}function handleError(_0x59fd7d,_0x12375b){_0x12375b=_0x12375b||0x1f4;return function(_0xf2839){logger[_0xef4d('0x29')](_0xf2839[_0xef4d('0x2a')]);if(_0xf2839[_0xef4d('0x2b')]){delete _0xf2839[_0xef4d('0x2b')];}_0x59fd7d['status'](_0x12375b)[_0xef4d('0x2c')](_0xf2839);};}exports[_0xef4d('0x2d')]=function(_0x94020c,_0x5419ec){var _0x59f8c1={},_0x499b02={},_0x451c05={'count':0x0,'rows':[]};var _0x3b94c4=_[_0xef4d('0x2e')](db[_0xef4d('0x2f')][_0xef4d('0x30')],function(_0x38bb62){return{'name':_0x38bb62[_0xef4d('0x31')],'type':_0x38bb62[_0xef4d('0x32')][_0xef4d('0x33')]};});_0x499b02[_0xef4d('0x34')]=_[_0xef4d('0x2e')](_0x3b94c4,_0xef4d('0x2b'));_0x499b02['query']=_['keys'](_0x94020c[_0xef4d('0x35')]);_0x499b02['filters']=_[_0xef4d('0x36')](_0x499b02[_0xef4d('0x34')],_0x499b02[_0xef4d('0x35')]);_0x59f8c1[_0xef4d('0x37')]=_['intersection'](_0x499b02[_0xef4d('0x34')],qs[_0xef4d('0x38')](_0x94020c['query'][_0xef4d('0x38')]));_0x59f8c1[_0xef4d('0x37')]=_0x59f8c1[_0xef4d('0x37')][_0xef4d('0x39')]?_0x59f8c1['attributes']:_0x499b02['model'];if(!_0x94020c['query']['hasOwnProperty'](_0xef4d('0x3a'))){_0x59f8c1[_0xef4d('0x1e')]=qs[_0xef4d('0x1e')](_0x94020c[_0xef4d('0x35')][_0xef4d('0x1e')]);_0x59f8c1['offset']=qs[_0xef4d('0x1d')](_0x94020c[_0xef4d('0x35')][_0xef4d('0x1d')]);}_0x59f8c1['order']=qs[_0xef4d('0x3b')](_0x94020c[_0xef4d('0x35')]['sort']);_0x59f8c1[_0xef4d('0x3c')]=qs['filters'](_[_0xef4d('0x3d')](_0x94020c[_0xef4d('0x35')],_0x499b02[_0xef4d('0x3e')]),_0x3b94c4);if(_0x94020c[_0xef4d('0x35')][_0xef4d('0x3f')]){_0x59f8c1[_0xef4d('0x3c')]=_[_0xef4d('0x40')](_0x59f8c1[_0xef4d('0x3c')],{'$or':_[_0xef4d('0x2e')](_0x3b94c4,function(_0x4cb446){if(_0x4cb446['type']!==_0xef4d('0x41')){var _0x39443d={};_0x39443d[_0x4cb446[_0xef4d('0x2b')]]={'$like':'%'+_0x94020c[_0xef4d('0x35')][_0xef4d('0x3f')]+'%'};return _0x39443d;}})});}_0x59f8c1=_[_0xef4d('0x40')]({},_0x59f8c1,_0x94020c[_0xef4d('0x42')]);var _0x1371ab={'where':_0x59f8c1[_0xef4d('0x3c')]};return db[_0xef4d('0x2f')][_0xef4d('0x20')](_0x1371ab)[_0xef4d('0x24')](function(_0x24a29d){_0x451c05['count']=_0x24a29d;if(_0x94020c[_0xef4d('0x35')][_0xef4d('0x43')]){_0x59f8c1[_0xef4d('0x44')]=[{'all':!![]}];}return db['SquareOdbc'][_0xef4d('0x45')](_0x59f8c1);})[_0xef4d('0x24')](function(_0x59a9c7){_0x451c05[_0xef4d('0x46')]=_0x59a9c7;return _0x451c05;})[_0xef4d('0x24')](respondWithFilteredResult(_0x5419ec,_0x59f8c1))[_0xef4d('0x47')](handleError(_0x5419ec,null));};exports[_0xef4d('0x48')]=function(_0x303c1a,_0x705975){var _0x104a94={'raw':!![],'where':{'id':_0x303c1a[_0xef4d('0x49')]['id']}},_0x435cf9={};_0x435cf9[_0xef4d('0x34')]=_[_0xef4d('0x4a')](db[_0xef4d('0x2f')][_0xef4d('0x30')]);_0x435cf9[_0xef4d('0x35')]=_[_0xef4d('0x4a')](_0x303c1a[_0xef4d('0x35')]);_0x435cf9[_0xef4d('0x3e')]=_[_0xef4d('0x36')](_0x435cf9[_0xef4d('0x34')],_0x435cf9[_0xef4d('0x35')]);_0x104a94[_0xef4d('0x37')]=_['intersection'](_0x435cf9['model'],qs[_0xef4d('0x38')](_0x303c1a[_0xef4d('0x35')][_0xef4d('0x38')]));_0x104a94['attributes']=_0x104a94[_0xef4d('0x37')][_0xef4d('0x39')]?_0x104a94[_0xef4d('0x37')]:_0x435cf9[_0xef4d('0x34')];if(_0x303c1a[_0xef4d('0x35')][_0xef4d('0x43')]){_0x104a94[_0xef4d('0x44')]=[{'all':!![]}];}_0x104a94=_[_0xef4d('0x40')]({},_0x104a94,_0x303c1a[_0xef4d('0x42')]);return db[_0xef4d('0x2f')][_0xef4d('0x4b')](_0x104a94)['then'](handleEntityNotFound(_0x705975,null))[_0xef4d('0x24')](respondWithResult(_0x705975,null))[_0xef4d('0x47')](handleError(_0x705975,null));};exports['create']=function(_0x50fc45,_0xb6383d){return db[_0xef4d('0x2f')][_0xef4d('0x4c')](_0x50fc45[_0xef4d('0x4d')],{})[_0xef4d('0x24')](function(_0x4bac9a){var _0x5218d5=_0x50fc45[_0xef4d('0x4e')][_0xef4d('0x25')]({'plain':!![]});if(!_0x5218d5)throw new Error(_0xef4d('0x4f'));if(_0x5218d5['role']===_0xef4d('0x4e')){var _0x16e1d0=_0x4bac9a['get']({'plain':!![]});var _0x776f44=_0xef4d('0x26');return db['UserProfileSection'][_0xef4d('0x4b')]({'where':{'name':_0x776f44,'userProfileId':_0x5218d5[_0xef4d('0x50')]},'raw':!![]})['then'](function(_0xd9c89a){if(_0xd9c89a&&_0xd9c89a['autoAssociation']===0x0){return db[_0xef4d('0x27')][_0xef4d('0x4c')]({'name':_0x16e1d0['name'],'resourceId':_0x16e1d0['id'],'type':_0xd9c89a[_0xef4d('0x2b')],'sectionId':_0xd9c89a['id']},{})[_0xef4d('0x24')](function(){return _0x4bac9a;});}else{return _0x4bac9a;}})[_0xef4d('0x47')](function(_0x166808){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x166808);throw _0x166808;});}return _0x4bac9a;})[_0xef4d('0x24')](respondWithResult(_0xb6383d,0xc9))[_0xef4d('0x47')](handleError(_0xb6383d,null));};exports[_0xef4d('0x51')]=function(_0x2adfce,_0x56ba87){if(_0x2adfce[_0xef4d('0x4d')]['id']){delete _0x2adfce[_0xef4d('0x4d')]['id'];}return db[_0xef4d('0x2f')][_0xef4d('0x4b')]({'where':{'id':_0x2adfce['params']['id']}})[_0xef4d('0x24')](handleEntityNotFound(_0x56ba87,null))[_0xef4d('0x24')](saveUpdates(_0x2adfce[_0xef4d('0x4d')],null))[_0xef4d('0x24')](respondWithResult(_0x56ba87,null))[_0xef4d('0x47')](handleError(_0x56ba87,null));};exports['destroy']=function(_0x3e29d6,_0x3d408e){return db[_0xef4d('0x2f')][_0xef4d('0x4b')]({'where':{'id':_0x3e29d6['params']['id']}})[_0xef4d('0x24')](handleEntityNotFound(_0x3d408e,null))[_0xef4d('0x24')](removeEntity(_0x3d408e,null))[_0xef4d('0x47')](handleError(_0x3d408e,null));};exports[_0xef4d('0x52')]=function(_0x2ab93b,_0x24fcb7,_0x254b59){var _0x5eb8fc;return db[_0xef4d('0x2f')][_0xef4d('0x4b')]({'where':{'id':_0x2ab93b[_0xef4d('0x49')]['id']},'attributes':['id',_0xef4d('0x53')]})[_0xef4d('0x24')](handleEntityNotFound(_0x24fcb7,null))[_0xef4d('0x24')](function(_0x121ca2){if(_0x121ca2){var _0x56cbc5=require('odbc')();_0x56cbc5[_0xef4d('0x54')](_0x121ca2['dsn']);_0x56cbc5[_0xef4d('0x55')]();return _0x121ca2;}})[_0xef4d('0x24')](respondWithResult(_0x24fcb7,null))[_0xef4d('0x47')](handleError(_0x24fcb7,null));};
\ No newline at end of file
index 0881fa1..8935f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa706=['../../config/logger','bluebird','request-promise','path','rimraf','./squareOdbc.attributes','square_odbc'];(function(_0x2ecb67,_0x8ec62d){var _0x168079=function(_0x56c365){while(--_0x56c365){_0x2ecb67['push'](_0x2ecb67['shift']());}};_0x168079(++_0x8ec62d);}(_0xa706,0x103));var _0x6a70=function(_0x1f2a63,_0x150f3c){_0x1f2a63=_0x1f2a63-0x0;var _0x5a1e53=_0xa706[_0x1f2a63];return _0x5a1e53;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6a70('0x0'))('api');var moment=require('moment');var BPromise=require(_0x6a70('0x1'));var rp=require(_0x6a70('0x2'));var fs=require('fs');var path=require(_0x6a70('0x3'));var rimraf=require(_0x6a70('0x4'));var config=require('../../config/environment');var attributes=require(_0x6a70('0x5'));module['exports']=function(_0x205714,_0x4fee6c){return _0x205714['define']('SquareOdbc',attributes,{'tableName':_0x6a70('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd0da=['square_odbc','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','define','SquareOdbc'];(function(_0x45513e,_0x433f83){var _0x59331f=function(_0x3d2c8c){while(--_0x3d2c8c){_0x45513e['push'](_0x45513e['shift']());}};_0x59331f(++_0x433f83);}(_0xd0da,0x1b1));var _0xad0d=function(_0x1c7f48,_0x255687){_0x1c7f48=_0x1c7f48-0x0;var _0x274c31=_0xd0da[_0x1c7f48];return _0x274c31;};'use strict';var _=require(_0xad0d('0x0'));var util=require(_0xad0d('0x1'));var logger=require(_0xad0d('0x2'))(_0xad0d('0x3'));var moment=require(_0xad0d('0x4'));var BPromise=require('bluebird');var rp=require(_0xad0d('0x5'));var fs=require('fs');var path=require(_0xad0d('0x6'));var rimraf=require(_0xad0d('0x7'));var config=require('../../config/environment');var attributes=require('./squareOdbc.attributes');module[_0xad0d('0x8')]=function(_0x5ddb42,_0x5cfc7d){return _0x5ddb42[_0xad0d('0x9')](_0xad0d('0xa'),attributes,{'tableName':_0xad0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4437d4b..d701cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x394a=['request\x20sent','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','attributes','include','model','map','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s'];(function(_0x3a63f1,_0x2a3b1a){var _0x357aca=function(_0x23de9a){while(--_0x23de9a){_0x3a63f1['push'](_0x3a63f1['shift']());}};_0x357aca(++_0x2a3b1a);}(_0x394a,0x184));var _0xa394=function(_0x5a7168,_0x201440){_0x5a7168=_0x5a7168-0x0;var _0x5bf5c9=_0x394a[_0x5a7168];return _0x5bf5c9;};'use strict';var _=require('lodash');var util=require(_0xa394('0x0'));var moment=require(_0xa394('0x1'));var BPromise=require(_0xa394('0x2'));var rs=require(_0xa394('0x3'));var fs=require('fs');var Redis=require(_0xa394('0x4'));var db=require(_0xa394('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa394('0x6'))(_0xa394('0x7'));var config=require('../../config/environment');var jayson=require(_0xa394('0x8'));var client=jayson[_0xa394('0x9')][_0xa394('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x485558,_0x3a5a3e,_0x235a49){return new BPromise(function(_0xd117f1,_0x422bfe){return client[_0xa394('0xb')](_0x485558,_0x235a49)[_0xa394('0xc')](function(_0x4a7742){logger[_0xa394('0xd')](_0xa394('0xe'),_0x3a5a3e,_0xa394('0xf'));logger['debug'](_0xa394('0x10'),_0x3a5a3e,_0xa394('0xf'),JSON['stringify'](_0x4a7742));if(_0x4a7742['error']){if(_0x4a7742[_0xa394('0x11')][_0xa394('0x12')]===0x1f4){logger[_0xa394('0x11')](_0xa394('0xe'),_0x3a5a3e,_0x4a7742['error'][_0xa394('0x13')]);return _0x422bfe(_0x4a7742[_0xa394('0x11')]['message']);}logger[_0xa394('0x11')](_0xa394('0xe'),_0x3a5a3e,_0x4a7742[_0xa394('0x11')][_0xa394('0x13')]);return _0xd117f1(_0x4a7742[_0xa394('0x11')]['message']);}else{logger[_0xa394('0xd')](_0xa394('0xe'),_0x3a5a3e,_0xa394('0xf'));_0xd117f1(_0x4a7742[_0xa394('0x14')][_0xa394('0x13')]);}})['catch'](function(_0x13cb76){logger[_0xa394('0x11')](_0xa394('0xe'),_0x3a5a3e,_0x13cb76);_0x422bfe(_0x13cb76);});});}exports[_0xa394('0x15')]=function(_0x1b80c1){var _0x289e32=this;return new Promise(function(_0x4f1f2a,_0x450d25){return db[_0xa394('0x16')][_0xa394('0x17')]({'raw':_0x1b80c1[_0xa394('0x18')]?_0x1b80c1[_0xa394('0x18')][_0xa394('0x19')]===undefined?!![]:![]:!![],'where':_0x1b80c1['options']?_0x1b80c1[_0xa394('0x18')]['where']||null:null,'attributes':_0x1b80c1[_0xa394('0x18')]?_0x1b80c1[_0xa394('0x18')][_0xa394('0x1a')]||null:null,'include':_0x1b80c1['options']?_0x1b80c1[_0xa394('0x18')]['include']?_['map'](_0x1b80c1['options'][_0xa394('0x1b')],function(_0x11670c){return{'model':db[_0x11670c[_0xa394('0x1c')]],'as':_0x11670c['as'],'attributes':_0x11670c[_0xa394('0x1a')],'include':_0x11670c[_0xa394('0x1b')]?_[_0xa394('0x1d')](_0x11670c[_0xa394('0x1b')],function(_0x5739dd){return{'model':db[_0x5739dd[_0xa394('0x1c')]],'as':_0x5739dd['as'],'attributes':_0x5739dd[_0xa394('0x1a')],'include':_0x5739dd[_0xa394('0x1b')]?_[_0xa394('0x1d')](_0x5739dd[_0xa394('0x1b')],function(_0x3e2f1){return{'model':db[_0x3e2f1[_0xa394('0x1c')]],'as':_0x3e2f1['as'],'attributes':_0x3e2f1['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xe04c5d){logger['info'](_0xa394('0x15'),_0x1b80c1);logger['debug'](_0xa394('0x15'),_0x1b80c1,JSON[_0xa394('0x1e')](_0xe04c5d));_0x4f1f2a(_0xe04c5d);})['catch'](function(_0xd9d4c2){logger['error'](_0xa394('0x15'),_0xd9d4c2[_0xa394('0x13')],_0x1b80c1);_0x450d25(_0x289e32[_0xa394('0x11')](0x1f4,_0xd9d4c2['message']));});});};
\ No newline at end of file
+var _0x8979=['SquareOdbc','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','ShowSquareOdbc'];(function(_0x589dac,_0x1efd20){var _0x26775f=function(_0x233d50){while(--_0x233d50){_0x589dac['push'](_0x589dac['shift']());}};_0x26775f(++_0x1efd20);}(_0x8979,0x18e));var _0x9897=function(_0x585822,_0x245114){_0x585822=_0x585822-0x0;var _0xe9bf8d=_0x8979[_0x585822];return _0xe9bf8d;};'use strict';var _=require(_0x9897('0x0'));var util=require(_0x9897('0x1'));var moment=require(_0x9897('0x2'));var BPromise=require(_0x9897('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9897('0x4'));var db=require(_0x9897('0x5'))['db'];var utils=require(_0x9897('0x6'));var logger=require('../../config/logger')(_0x9897('0x7'));var config=require('../../config/environment');var jayson=require(_0x9897('0x8'));var client=jayson[_0x9897('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5dcd9b,_0x201536,_0x540aef){return new BPromise(function(_0x38271d,_0xda8146){return client['request'](_0x5dcd9b,_0x540aef)[_0x9897('0xa')](function(_0x3a834f){logger[_0x9897('0xb')](_0x9897('0xc'),_0x201536,_0x9897('0xd'));logger[_0x9897('0xe')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x201536,_0x9897('0xd'),JSON[_0x9897('0xf')](_0x3a834f));if(_0x3a834f['error']){if(_0x3a834f[_0x9897('0x10')][_0x9897('0x11')]===0x1f4){logger[_0x9897('0x10')](_0x9897('0xc'),_0x201536,_0x3a834f[_0x9897('0x10')][_0x9897('0x12')]);return _0xda8146(_0x3a834f['error'][_0x9897('0x12')]);}logger[_0x9897('0x10')](_0x9897('0xc'),_0x201536,_0x3a834f[_0x9897('0x10')][_0x9897('0x12')]);return _0x38271d(_0x3a834f[_0x9897('0x10')][_0x9897('0x12')]);}else{logger[_0x9897('0xb')](_0x9897('0xc'),_0x201536,_0x9897('0xd'));_0x38271d(_0x3a834f[_0x9897('0x13')]['message']);}})[_0x9897('0x14')](function(_0x58f794){logger['error'](_0x9897('0xc'),_0x201536,_0x58f794);_0xda8146(_0x58f794);});});}exports[_0x9897('0x15')]=function(_0x1adbae){var _0x4128f5=this;return new Promise(function(_0x18f4ee,_0x3d74a7){return db[_0x9897('0x16')]['find']({'raw':_0x1adbae['options']?_0x1adbae[_0x9897('0x17')][_0x9897('0x18')]===undefined?!![]:![]:!![],'where':_0x1adbae[_0x9897('0x17')]?_0x1adbae[_0x9897('0x17')][_0x9897('0x19')]||null:null,'attributes':_0x1adbae[_0x9897('0x17')]?_0x1adbae['options'][_0x9897('0x1a')]||null:null,'include':_0x1adbae[_0x9897('0x17')]?_0x1adbae[_0x9897('0x17')][_0x9897('0x1b')]?_[_0x9897('0x1c')](_0x1adbae[_0x9897('0x17')][_0x9897('0x1b')],function(_0x57fe95){return{'model':db[_0x57fe95[_0x9897('0x1d')]],'as':_0x57fe95['as'],'attributes':_0x57fe95[_0x9897('0x1a')],'include':_0x57fe95['include']?_[_0x9897('0x1c')](_0x57fe95[_0x9897('0x1b')],function(_0x29482f){return{'model':db[_0x29482f[_0x9897('0x1d')]],'as':_0x29482f['as'],'attributes':_0x29482f[_0x9897('0x1a')],'include':_0x29482f['include']?_[_0x9897('0x1c')](_0x29482f['include'],function(_0x4d58f4){return{'model':db[_0x4d58f4[_0x9897('0x1d')]],'as':_0x4d58f4['as'],'attributes':_0x4d58f4[_0x9897('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9897('0xa')](function(_0x168aa1){logger[_0x9897('0xb')](_0x9897('0x15'),_0x1adbae);logger[_0x9897('0xe')]('ShowSquareOdbc',_0x1adbae,JSON[_0x9897('0xf')](_0x168aa1));_0x18f4ee(_0x168aa1);})[_0x9897('0x14')](function(_0x130935){logger[_0x9897('0x10')](_0x9897('0x15'),_0x130935['message'],_0x1adbae);_0x3d74a7(_0x4128f5[_0x9897('0x10')](0x1f4,_0x130935['message']));});});};
\ No newline at end of file
index 8f2620a..ceca4aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x110f=['removeUsers','exports','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/users','getUsers','create','post','addUsers','put','update','delete','destroy'];(function(_0x44b16b,_0x481f28){var _0x27cc24=function(_0x305c23){while(--_0x305c23){_0x44b16b['push'](_0x44b16b['shift']());}};_0x27cc24(++_0x481f28);}(_0x110f,0x1e6));var _0xf110=function(_0x338623,_0x209b78){_0x338623=_0x338623-0x0;var _0x28c74d=_0x110f[_0x338623];return _0x28c74d;};'use strict';var multer=require(_0xf110('0x0'));var util=require(_0xf110('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf110('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xf110('0x3'));var interaction=require(_0xf110('0x4'));var config=require(_0xf110('0x5'));var controller=require('./squareProject.controller');router[_0xf110('0x6')]('/',auth[_0xf110('0x7')](),controller[_0xf110('0x8')]);router['get'](_0xf110('0x9'),auth[_0xf110('0x7')](),controller[_0xf110('0xa')]);router['get'](_0xf110('0xb'),auth[_0xf110('0x7')](),controller[_0xf110('0xc')]);router['post']('/',auth[_0xf110('0x7')](),controller[_0xf110('0xd')]);router[_0xf110('0xe')](_0xf110('0xb'),auth['isAuthenticated'](),controller[_0xf110('0xf')]);router[_0xf110('0x10')]('/:id',auth[_0xf110('0x7')](),controller[_0xf110('0x11')]);router[_0xf110('0x12')](_0xf110('0x9'),auth['isAuthenticated'](),controller[_0xf110('0x13')]);router[_0xf110('0x12')](_0xf110('0xb'),auth['isAuthenticated'](),controller[_0xf110('0x14')]);module[_0xf110('0x15')]=router;
\ No newline at end of file
+var _0x7269=['create','/:id/users','addUsers','put','update','destroy','removeUsers','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id','getUsers','post'];(function(_0x11c9f7,_0x5e5fff){var _0x5a4c20=function(_0x13895f){while(--_0x13895f){_0x11c9f7['push'](_0x11c9f7['shift']());}};_0x5a4c20(++_0x5e5fff);}(_0x7269,0x76));var _0x9726=function(_0x3654fd,_0x2668ac){_0x3654fd=_0x3654fd-0x0;var _0x32816d=_0x7269[_0x3654fd];return _0x32816d;};'use strict';var multer=require(_0x9726('0x0'));var util=require(_0x9726('0x1'));var path=require(_0x9726('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9726('0x3')]();var fs_extra=require(_0x9726('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9726('0x5'));var config=require(_0x9726('0x6'));var controller=require(_0x9726('0x7'));router[_0x9726('0x8')]('/',auth[_0x9726('0x9')](),controller[_0x9726('0xa')]);router[_0x9726('0x8')](_0x9726('0xb'),auth[_0x9726('0x9')](),controller['show']);router[_0x9726('0x8')]('/:id/users',auth[_0x9726('0x9')](),controller[_0x9726('0xc')]);router[_0x9726('0xd')]('/',auth['isAuthenticated'](),controller[_0x9726('0xe')]);router[_0x9726('0xd')](_0x9726('0xf'),auth['isAuthenticated'](),controller[_0x9726('0x10')]);router[_0x9726('0x11')](_0x9726('0xb'),auth[_0x9726('0x9')](),controller[_0x9726('0x12')]);router['delete']('/:id',auth[_0x9726('0x9')](),controller[_0x9726('0x13')]);router['delete'](_0x9726('0xf'),auth[_0x9726('0x9')](),controller[_0x9726('0x14')]);module[_0x9726('0x15')]=router;
\ No newline at end of file
index 372e89e..2d0b826 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf354=['utf8','BLOB','production','DATE','exports','STRING','TEXT','long','preproduction','getDataValue','toString'];(function(_0x3630f3,_0x2f70a5){var _0x3c8139=function(_0x20f13f){while(--_0x20f13f){_0x3630f3['push'](_0x3630f3['shift']());}};_0x3c8139(++_0x2f70a5);}(_0xf354,0x9e));var _0x4f35=function(_0x354e19,_0x8ed305){_0x354e19=_0x354e19-0x0;var _0xec2764=_0xf354[_0x354e19];return _0xec2764;};'use strict';var Sequelize=require('sequelize');module[_0x4f35('0x0')]={'name':{'type':Sequelize[_0x4f35('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x4f35('0x1')]},'notes':{'type':Sequelize[_0x4f35('0x2')]},'preproduction':{'type':Sequelize['BLOB'](_0x4f35('0x3')),'get':function(){if(this['getDataValue'](_0x4f35('0x4'))){return this[_0x4f35('0x5')](_0x4f35('0x4'))[_0x4f35('0x6')](_0x4f35('0x7'));}}},'production':{'type':Sequelize[_0x4f35('0x8')](_0x4f35('0x3')),'get':function(){if(this[_0x4f35('0x5')](_0x4f35('0x9'))){return this[_0x4f35('0x5')](_0x4f35('0x9'))[_0x4f35('0x6')]('utf8');}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x4f35('0xa')]}};
\ No newline at end of file
+var _0xe1fc=['utf8','production','DATE','sequelize','STRING','name','TEXT','BLOB','long','preproduction','getDataValue','toString'];(function(_0x564f78,_0x3af95c){var _0x3d4799=function(_0xa636b0){while(--_0xa636b0){_0x564f78['push'](_0x564f78['shift']());}};_0x3d4799(++_0x3af95c);}(_0xe1fc,0x1e3));var _0xce1f=function(_0x1269c6,_0x1c8942){_0x1269c6=_0x1269c6-0x0;var _0x4868c7=_0xe1fc[_0x1269c6];return _0x4868c7;};'use strict';var Sequelize=require(_0xce1f('0x0'));module['exports']={'name':{'type':Sequelize[_0xce1f('0x1')],'unique':_0xce1f('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0xce1f('0x3')]},'preproduction':{'type':Sequelize[_0xce1f('0x4')](_0xce1f('0x5')),'get':function(){if(this['getDataValue'](_0xce1f('0x6'))){return this[_0xce1f('0x7')](_0xce1f('0x6'))[_0xce1f('0x8')](_0xce1f('0x9'));}}},'production':{'type':Sequelize[_0xce1f('0x4')]('long'),'get':function(){if(this['getDataValue']('production')){return this[_0xce1f('0x7')](_0xce1f('0xa'))[_0xce1f('0x8')](_0xce1f('0x9'));}}},'savedAt':{'type':Sequelize[_0xce1f('0xb')]},'publishedAt':{'type':Sequelize[_0xce1f('0xb')]}};
\ No newline at end of file
index 0a8681d..463ad25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfd5=['then','get','SquareProjects','UserProfileResource','stack','name','send','index','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SquareProject','includeAll','include','findAll','rows','catch','show','length','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids','removeUsers','isArray','userSquareProject:remove','emit','getUsers','User','pick','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','defaults','./squareProject.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy'];(function(_0x14b50d,_0x59b9ee){var _0x28c7f1=function(_0x13de96){while(--_0x13de96){_0x14b50d['push'](_0x14b50d['shift']());}};_0x28c7f1(++_0x59b9ee);}(_0xdfd5,0x1c3));var _0x5dfd=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xdfd5[_0x10004e];return _0x5af990;};'use strict';var emlformat=require(_0x5dfd('0x0'));var rimraf=require(_0x5dfd('0x1'));var zipdir=require(_0x5dfd('0x2'));var jsonpatch=require(_0x5dfd('0x3'));var rp=require(_0x5dfd('0x4'));var moment=require(_0x5dfd('0x5'));var BPromise=require(_0x5dfd('0x6'));var Mustache=require(_0x5dfd('0x7'));var util=require(_0x5dfd('0x8'));var path=require(_0x5dfd('0x9'));var sox=require(_0x5dfd('0xa'));var csv=require(_0x5dfd('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5dfd('0xc'));var _=require(_0x5dfd('0xd'));var squel=require('squel');var crypto=require(_0x5dfd('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5dfd('0xf'));var toCsv=require(_0x5dfd('0xb'));var querystring=require(_0x5dfd('0x10'));var Papa=require(_0x5dfd('0x11'));var Redis=require(_0x5dfd('0x12'));var authService=require(_0x5dfd('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5dfd('0x14'));var hardwareService=require(_0x5dfd('0x15'));var logger=require(_0x5dfd('0x16'))(_0x5dfd('0x17'));var utils=require('../../config/utils');var config=require(_0x5dfd('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x5dfd('0x19')]=_[_0x5dfd('0x1a')](config[_0x5dfd('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5dfd('0x19')]));require(_0x5dfd('0x1b'))[_0x5dfd('0x1c')](socket);function respondWithStatusCode(_0x44a808,_0x2eb926){_0x2eb926=_0x2eb926||0xcc;return function(_0x2fcd6){if(_0x2fcd6){return _0x44a808[_0x5dfd('0x1d')](_0x2eb926);}return _0x44a808[_0x5dfd('0x1e')](_0x2eb926)[_0x5dfd('0x1f')]();};}function respondWithResult(_0x1f9f86,_0x45b9fe){_0x45b9fe=_0x45b9fe||0xc8;return function(_0x31e5dd){if(_0x31e5dd){return _0x1f9f86[_0x5dfd('0x1e')](_0x45b9fe)[_0x5dfd('0x20')](_0x31e5dd);}};}function respondWithFilteredResult(_0x1b4fe3,_0x2a3ba1){return function(_0xdee86d){if(_0xdee86d){var _0x50a8b7=typeof _0x2a3ba1['offset']===_0x5dfd('0x21')&&typeof _0x2a3ba1[_0x5dfd('0x22')]===_0x5dfd('0x21');var _0x3a2148=_0xdee86d['count'];var _0x4ceec3=_0x50a8b7?0x0:_0x2a3ba1[_0x5dfd('0x23')];var _0x112946=_0x50a8b7?_0xdee86d[_0x5dfd('0x24')]:_0x2a3ba1['offset']+_0x2a3ba1[_0x5dfd('0x22')];var _0x35d949;if(_0x112946>=_0x3a2148){_0x112946=_0x3a2148;_0x35d949=0xc8;}else{_0x35d949=0xce;}_0x1b4fe3[_0x5dfd('0x1e')](_0x35d949);return _0x1b4fe3[_0x5dfd('0x25')](_0x5dfd('0x26'),_0x4ceec3+'-'+_0x112946+'/'+_0x3a2148)[_0x5dfd('0x20')](_0xdee86d);}return null;};}function patchUpdates(_0x11de10){return function(_0x1fe62a){try{jsonpatch[_0x5dfd('0x27')](_0x1fe62a,_0x11de10,!![]);}catch(_0x443c62){return BPromise[_0x5dfd('0x28')](_0x443c62);}return _0x1fe62a[_0x5dfd('0x29')]();};}function saveUpdates(_0x1ee99f,_0x149c22){return function(_0x226411){if(_0x226411){return _0x226411[_0x5dfd('0x2a')](_0x1ee99f)['then'](function(_0x5ee86b){return _0x5ee86b;});}return null;};}function removeEntity(_0x1a2f90,_0x96e0aa){return function(_0x3fe37d){if(_0x3fe37d){return _0x3fe37d[_0x5dfd('0x2b')]()[_0x5dfd('0x2c')](function(){var _0x1c877a=_0x3fe37d[_0x5dfd('0x2d')]({'plain':!![]});var _0x35adc0=_0x5dfd('0x2e');return db[_0x5dfd('0x2f')][_0x5dfd('0x2b')]({'where':{'type':_0x35adc0,'resourceId':_0x1c877a['id']}})[_0x5dfd('0x2c')](function(){return _0x3fe37d;});})[_0x5dfd('0x2c')](function(){_0x1a2f90[_0x5dfd('0x1e')](0xcc)[_0x5dfd('0x1f')]();});}};}function handleEntityNotFound(_0x26246b,_0x1d60fe){return function(_0x3d72f1){if(!_0x3d72f1){_0x26246b['sendStatus'](0x194);}return _0x3d72f1;};}function handleError(_0x13bc15,_0x3c3b30){_0x3c3b30=_0x3c3b30||0x1f4;return function(_0x59ff63){logger['error'](_0x59ff63[_0x5dfd('0x30')]);if(_0x59ff63['name']){delete _0x59ff63[_0x5dfd('0x31')];}_0x13bc15[_0x5dfd('0x1e')](_0x3c3b30)[_0x5dfd('0x32')](_0x59ff63);};}exports[_0x5dfd('0x33')]=function(_0x1ee716,_0x296624){var _0x40dff6={},_0x50e0ee={},_0x26416b={'count':0x0,'rows':[]};var _0x11b367=_['map'](db['SquareProject'][_0x5dfd('0x34')],function(_0x22fbd4){return{'name':_0x22fbd4[_0x5dfd('0x35')],'type':_0x22fbd4[_0x5dfd('0x36')]['key']};});_0x50e0ee[_0x5dfd('0x37')]=_['map'](_0x11b367,_0x5dfd('0x31'));_0x50e0ee[_0x5dfd('0x38')]=_[_0x5dfd('0x39')](_0x1ee716[_0x5dfd('0x38')]);_0x50e0ee[_0x5dfd('0x3a')]=_[_0x5dfd('0x3b')](_0x50e0ee[_0x5dfd('0x37')],_0x50e0ee['query']);_0x40dff6['attributes']=_[_0x5dfd('0x3b')](_0x50e0ee[_0x5dfd('0x37')],qs['fields'](_0x1ee716[_0x5dfd('0x38')][_0x5dfd('0x3c')]));_0x40dff6['attributes']=_0x40dff6[_0x5dfd('0x3d')]['length']?_0x40dff6[_0x5dfd('0x3d')]:_0x50e0ee[_0x5dfd('0x37')];if(!_0x1ee716[_0x5dfd('0x38')]['hasOwnProperty'](_0x5dfd('0x3e'))){_0x40dff6[_0x5dfd('0x22')]=qs[_0x5dfd('0x22')](_0x1ee716[_0x5dfd('0x38')][_0x5dfd('0x22')]);_0x40dff6['offset']=qs[_0x5dfd('0x23')](_0x1ee716[_0x5dfd('0x38')][_0x5dfd('0x23')]);}_0x40dff6[_0x5dfd('0x3f')]=qs['sort'](_0x1ee716[_0x5dfd('0x38')][_0x5dfd('0x40')]);_0x40dff6[_0x5dfd('0x41')]=qs[_0x5dfd('0x3a')](_['pick'](_0x1ee716[_0x5dfd('0x38')],_0x50e0ee['filters']),_0x11b367);if(_0x1ee716[_0x5dfd('0x38')][_0x5dfd('0x42')]){_0x40dff6[_0x5dfd('0x41')]=_[_0x5dfd('0x43')](_0x40dff6[_0x5dfd('0x41')],{'$or':_['map'](_0x11b367,function(_0xf9844d){if(_0xf9844d[_0x5dfd('0x36')]!==_0x5dfd('0x44')){var _0x168e1d={};_0x168e1d[_0xf9844d[_0x5dfd('0x31')]]={'$like':'%'+_0x1ee716[_0x5dfd('0x38')][_0x5dfd('0x42')]+'%'};return _0x168e1d;}})});}_0x40dff6=_['merge']({},_0x40dff6,_0x1ee716[_0x5dfd('0x45')]);var _0x349714={'where':_0x40dff6[_0x5dfd('0x41')]};return db[_0x5dfd('0x46')][_0x5dfd('0x24')](_0x349714)[_0x5dfd('0x2c')](function(_0xf57630){_0x26416b[_0x5dfd('0x24')]=_0xf57630;if(_0x1ee716['query'][_0x5dfd('0x47')]){_0x40dff6[_0x5dfd('0x48')]=[{'all':!![]}];}return db[_0x5dfd('0x46')][_0x5dfd('0x49')](_0x40dff6);})[_0x5dfd('0x2c')](function(_0x136f15){_0x26416b[_0x5dfd('0x4a')]=_0x136f15;return _0x26416b;})[_0x5dfd('0x2c')](respondWithFilteredResult(_0x296624,_0x40dff6))[_0x5dfd('0x4b')](handleError(_0x296624,null));};exports[_0x5dfd('0x4c')]=function(_0x4948b3,_0x33839f){var _0x3ce5fd={'raw':![],'where':{'id':_0x4948b3['params']['id']}},_0x24361d={};_0x24361d[_0x5dfd('0x37')]=_['keys'](db[_0x5dfd('0x46')]['rawAttributes']);_0x24361d[_0x5dfd('0x38')]=_[_0x5dfd('0x39')](_0x4948b3[_0x5dfd('0x38')]);_0x24361d[_0x5dfd('0x3a')]=_[_0x5dfd('0x3b')](_0x24361d[_0x5dfd('0x37')],_0x24361d['query']);_0x3ce5fd[_0x5dfd('0x3d')]=_[_0x5dfd('0x3b')](_0x24361d[_0x5dfd('0x37')],qs[_0x5dfd('0x3c')](_0x4948b3[_0x5dfd('0x38')][_0x5dfd('0x3c')]));_0x3ce5fd[_0x5dfd('0x3d')]=_0x3ce5fd[_0x5dfd('0x3d')][_0x5dfd('0x4d')]?_0x3ce5fd[_0x5dfd('0x3d')]:_0x24361d['model'];if(_0x4948b3[_0x5dfd('0x38')][_0x5dfd('0x47')]){_0x3ce5fd[_0x5dfd('0x48')]=[{'all':!![]}];}_0x3ce5fd=_['merge']({},_0x3ce5fd,_0x4948b3[_0x5dfd('0x45')]);return db[_0x5dfd('0x46')][_0x5dfd('0x4e')](_0x3ce5fd)[_0x5dfd('0x2c')](handleEntityNotFound(_0x33839f,null))[_0x5dfd('0x2c')](respondWithResult(_0x33839f,null))[_0x5dfd('0x4b')](handleError(_0x33839f,null));};exports[_0x5dfd('0x4f')]=function(_0x396670,_0x145147){return db['SquareProject'][_0x5dfd('0x4f')](_0x396670[_0x5dfd('0x50')],{})['then'](function(_0x46c770){var _0x54da3b=_0x396670[_0x5dfd('0x51')]['get']({'plain':!![]});if(!_0x54da3b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x54da3b[_0x5dfd('0x52')]===_0x5dfd('0x51')){var _0x4f3af6=_0x46c770[_0x5dfd('0x2d')]({'plain':!![]});var _0x2d51df=_0x5dfd('0x2e');return db[_0x5dfd('0x53')][_0x5dfd('0x4e')]({'where':{'name':_0x2d51df,'userProfileId':_0x54da3b[_0x5dfd('0x54')]},'raw':!![]})[_0x5dfd('0x2c')](function(_0x177791){if(_0x177791&&_0x177791[_0x5dfd('0x55')]===0x0){return db[_0x5dfd('0x2f')]['create']({'name':_0x4f3af6[_0x5dfd('0x31')],'resourceId':_0x4f3af6['id'],'type':_0x177791[_0x5dfd('0x31')],'sectionId':_0x177791['id']},{})[_0x5dfd('0x2c')](function(){return _0x46c770;});}else{return _0x46c770;}})[_0x5dfd('0x4b')](function(_0x36f59e){logger[_0x5dfd('0x56')](_0x5dfd('0x57'),_0x36f59e);throw _0x36f59e;});}return _0x46c770;})[_0x5dfd('0x2c')](respondWithResult(_0x145147,0xc9))[_0x5dfd('0x4b')](handleError(_0x145147,null));};exports[_0x5dfd('0x2a')]=function(_0x321705,_0xedc9f7){if(_0x321705[_0x5dfd('0x50')]['id']){delete _0x321705['body']['id'];}return db[_0x5dfd('0x46')][_0x5dfd('0x4e')]({'where':{'id':_0x321705[_0x5dfd('0x58')]['id']}})[_0x5dfd('0x2c')](handleEntityNotFound(_0xedc9f7,null))['then'](saveUpdates(_0x321705['body'],null))[_0x5dfd('0x2c')](respondWithResult(_0xedc9f7,null))[_0x5dfd('0x4b')](handleError(_0xedc9f7,null));};exports[_0x5dfd('0x2b')]=function(_0x2441c8,_0x3ddc05){return db['SquareProject'][_0x5dfd('0x4e')]({'where':{'id':_0x2441c8[_0x5dfd('0x58')]['id']}})[_0x5dfd('0x2c')](handleEntityNotFound(_0x3ddc05,null))['then'](removeEntity(_0x3ddc05,null))[_0x5dfd('0x4b')](handleError(_0x3ddc05,null));};exports['addUsers']=function(_0x4d8327,_0x448e7f,_0x4ab449){return db[_0x5dfd('0x46')]['find']({'where':{'id':_0x4d8327['params']['id']}})[_0x5dfd('0x2c')](handleEntityNotFound(_0x448e7f,null))[_0x5dfd('0x2c')](function(_0x2e171a){if(_0x2e171a){return _0x2e171a[_0x5dfd('0x59')](_0x4d8327[_0x5dfd('0x50')]['ids'],_['omit'](_0x4d8327[_0x5dfd('0x50')],[_0x5dfd('0x5a'),'id'])||{});}})[_0x5dfd('0x2c')](respondWithResult(_0x448e7f,null))['catch'](handleError(_0x448e7f,null));};exports[_0x5dfd('0x5b')]=function(_0x5d5dc8,_0x19f61b,_0xa553fb){return db[_0x5dfd('0x46')][_0x5dfd('0x4e')]({'where':{'id':_0x5d5dc8['params']['id']}})[_0x5dfd('0x2c')](handleEntityNotFound(_0x19f61b,null))[_0x5dfd('0x2c')](function(_0x48258b){if(_0x48258b){return _0x48258b['removeUsers'](_0x5d5dc8[_0x5dfd('0x38')][_0x5dfd('0x5a')])[_0x5dfd('0x2c')](function(){if(_[_0x5dfd('0x5c')](_0x5d5dc8[_0x5dfd('0x38')]['ids'])){for(var _0x5ae05b=0x0;_0x5ae05b<_0x5d5dc8[_0x5dfd('0x38')][_0x5dfd('0x5a')][_0x5dfd('0x4d')];_0x5ae05b+=0x1){socket['emit'](_0x5dfd('0x5d'),{'UserId':Number(_0x5d5dc8[_0x5dfd('0x38')][_0x5dfd('0x5a')][_0x5ae05b]),'SquareProjectId':Number(_0x5d5dc8[_0x5dfd('0x58')]['id'])});}}else{socket[_0x5dfd('0x5e')](_0x5dfd('0x5d'),{'UserId':Number(_0x5d5dc8[_0x5dfd('0x38')][_0x5dfd('0x5a')]),'SquareProjectId':Number(_0x5d5dc8['params']['id'])});}});}})[_0x5dfd('0x2c')](respondWithStatusCode(_0x19f61b,null))[_0x5dfd('0x4b')](handleError(_0x19f61b,null));};exports[_0x5dfd('0x5f')]=function(_0x129b72,_0x1aaec9,_0x9da810){var _0x3de061={};var _0x7ae52e={};var _0x42a767;var _0x1154ad;return db[_0x5dfd('0x46')]['findOne']({'where':{'id':_0x129b72['params']['id']}})[_0x5dfd('0x2c')](handleEntityNotFound(_0x1aaec9,null))[_0x5dfd('0x2c')](function(_0x2ae1fe){if(_0x2ae1fe){_0x42a767=_0x2ae1fe;_0x7ae52e[_0x5dfd('0x37')]=_[_0x5dfd('0x39')](db[_0x5dfd('0x60')][_0x5dfd('0x34')]);_0x7ae52e[_0x5dfd('0x38')]=_[_0x5dfd('0x39')](_0x129b72[_0x5dfd('0x38')]);_0x7ae52e[_0x5dfd('0x3a')]=_[_0x5dfd('0x3b')](_0x7ae52e[_0x5dfd('0x37')],_0x7ae52e[_0x5dfd('0x38')]);_0x3de061[_0x5dfd('0x3d')]=_[_0x5dfd('0x3b')](_0x7ae52e['model'],qs['fields'](_0x129b72[_0x5dfd('0x38')][_0x5dfd('0x3c')]));_0x3de061['attributes']=_0x3de061[_0x5dfd('0x3d')]['length']?_0x3de061[_0x5dfd('0x3d')]:_0x7ae52e[_0x5dfd('0x37')];_0x3de061[_0x5dfd('0x3f')]=qs[_0x5dfd('0x40')](_0x129b72[_0x5dfd('0x38')][_0x5dfd('0x40')]);_0x3de061[_0x5dfd('0x41')]=qs[_0x5dfd('0x3a')](_[_0x5dfd('0x61')](_0x129b72[_0x5dfd('0x38')],_0x7ae52e['filters']));if(_0x129b72[_0x5dfd('0x38')]['filter']){_0x3de061[_0x5dfd('0x41')]=_[_0x5dfd('0x43')](_0x3de061['where'],{'$or':_[_0x5dfd('0x62')](_0x3de061[_0x5dfd('0x3d')],function(_0x4cf8af){var _0x522d2e={};_0x522d2e[_0x4cf8af]={'$like':'%'+_0x129b72[_0x5dfd('0x38')][_0x5dfd('0x42')]+'%'};return _0x522d2e;})});}_0x3de061=_[_0x5dfd('0x43')]({},_0x3de061,_0x129b72[_0x5dfd('0x45')]);return _0x42a767['getUsers'](_0x3de061);}})[_0x5dfd('0x2c')](function(_0x53bce0){if(_0x53bce0){_0x1154ad=_0x53bce0[_0x5dfd('0x4d')];if(!_0x129b72['query']['hasOwnProperty']('nolimit')){_0x3de061[_0x5dfd('0x22')]=qs[_0x5dfd('0x22')](_0x129b72[_0x5dfd('0x38')][_0x5dfd('0x22')]);_0x3de061['offset']=qs[_0x5dfd('0x23')](_0x129b72['query']['offset']);}return _0x42a767[_0x5dfd('0x5f')](_0x3de061);}})[_0x5dfd('0x2c')](function(_0x1a2d9f){if(_0x1a2d9f){return _0x1a2d9f?{'count':_0x1154ad,'rows':_0x1a2d9f}:null;}})[_0x5dfd('0x2c')](respondWithResult(_0x1aaec9,null))[_0x5dfd('0x4b')](handleError(_0x1aaec9,null));};
\ No newline at end of file
+var _0xc5a4=['ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','then','get','UserProfileResource','destroy','end','error','stack','name','send','index','SquareProject','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','rows','catch','show','params','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','SquareProjects','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','ids','isArray','emit','userSquareProject:remove','getUsers','findOne','User','nolimit','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv'];(function(_0xd3e02f,_0x4054cf){var _0x381d4e=function(_0x2442a9){while(--_0x2442a9){_0xd3e02f['push'](_0xd3e02f['shift']());}};_0x381d4e(++_0x4054cf);}(_0xc5a4,0xb7));var _0x4c5a=function(_0x346175,_0x39a3a1){_0x346175=_0x346175-0x0;var _0x5eb8f5=_0xc5a4[_0x346175];return _0x5eb8f5;};'use strict';var emlformat=require(_0x4c5a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4c5a('0x1'));var jsonpatch=require(_0x4c5a('0x2'));var rp=require(_0x4c5a('0x3'));var moment=require(_0x4c5a('0x4'));var BPromise=require(_0x4c5a('0x5'));var Mustache=require(_0x4c5a('0x6'));var util=require('util');var path=require(_0x4c5a('0x7'));var sox=require('sox');var csv=require(_0x4c5a('0x8'));var ejs=require(_0x4c5a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4c5a('0xa'));var squel=require(_0x4c5a('0xb'));var crypto=require(_0x4c5a('0xc'));var jsforce=require(_0x4c5a('0xd'));var deskjs=require(_0x4c5a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4c5a('0xf'));var Papa=require(_0x4c5a('0x10'));var Redis=require(_0x4c5a('0x11'));var authService=require(_0x4c5a('0x12'));var qs=require(_0x4c5a('0x13'));var as=require(_0x4c5a('0x14'));var hardwareService=require(_0x4c5a('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x4c5a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x4c5a('0x17'));var db=require(_0x4c5a('0x18'))['db'];config['redis']=_['defaults'](config[_0x4c5a('0x19')],{'host':_0x4c5a('0x1a'),'port':0x18eb});var socket=require(_0x4c5a('0x1b'))(new Redis(config[_0x4c5a('0x19')]));require(_0x4c5a('0x1c'))[_0x4c5a('0x1d')](socket);function respondWithStatusCode(_0x2a3064,_0x284947){_0x284947=_0x284947||0xcc;return function(_0x434fd){if(_0x434fd){return _0x2a3064[_0x4c5a('0x1e')](_0x284947);}return _0x2a3064['status'](_0x284947)['end']();};}function respondWithResult(_0x576c1b,_0x2f7620){_0x2f7620=_0x2f7620||0xc8;return function(_0x3c014c){if(_0x3c014c){return _0x576c1b[_0x4c5a('0x1f')](_0x2f7620)['json'](_0x3c014c);}};}function respondWithFilteredResult(_0x4bb8cb,_0x5ad303){return function(_0x47e289){if(_0x47e289){var _0x36ed33=typeof _0x5ad303[_0x4c5a('0x20')]===_0x4c5a('0x21')&&typeof _0x5ad303[_0x4c5a('0x22')]===_0x4c5a('0x21');var _0x51d77c=_0x47e289[_0x4c5a('0x23')];var _0x55ae97=_0x36ed33?0x0:_0x5ad303[_0x4c5a('0x20')];var _0x35fc06=_0x36ed33?_0x47e289[_0x4c5a('0x23')]:_0x5ad303[_0x4c5a('0x20')]+_0x5ad303[_0x4c5a('0x22')];var _0xe55edf;if(_0x35fc06>=_0x51d77c){_0x35fc06=_0x51d77c;_0xe55edf=0xc8;}else{_0xe55edf=0xce;}_0x4bb8cb['status'](_0xe55edf);return _0x4bb8cb['set'](_0x4c5a('0x24'),_0x55ae97+'-'+_0x35fc06+'/'+_0x51d77c)[_0x4c5a('0x25')](_0x47e289);}return null;};}function patchUpdates(_0x347a58){return function(_0x192f7d){try{jsonpatch[_0x4c5a('0x26')](_0x192f7d,_0x347a58,!![]);}catch(_0x26986e){return BPromise[_0x4c5a('0x27')](_0x26986e);}return _0x192f7d['save']();};}function saveUpdates(_0x3ca834,_0x5f38da){return function(_0x50b680){if(_0x50b680){return _0x50b680['update'](_0x3ca834)['then'](function(_0x10df9d){return _0x10df9d;});}return null;};}function removeEntity(_0x56c0ef,_0x86a643){return function(_0x2cb6f0){if(_0x2cb6f0){return _0x2cb6f0['destroy']()[_0x4c5a('0x28')](function(){var _0x215cf9=_0x2cb6f0[_0x4c5a('0x29')]({'plain':!![]});var _0x4196fb='SquareProjects';return db[_0x4c5a('0x2a')][_0x4c5a('0x2b')]({'where':{'type':_0x4196fb,'resourceId':_0x215cf9['id']}})[_0x4c5a('0x28')](function(){return _0x2cb6f0;});})['then'](function(){_0x56c0ef[_0x4c5a('0x1f')](0xcc)[_0x4c5a('0x2c')]();});}};}function handleEntityNotFound(_0x4f906d,_0x3e5b72){return function(_0x2bd80b){if(!_0x2bd80b){_0x4f906d[_0x4c5a('0x1e')](0x194);}return _0x2bd80b;};}function handleError(_0x59c8b3,_0x20ecf5){_0x20ecf5=_0x20ecf5||0x1f4;return function(_0x565c3c){logger[_0x4c5a('0x2d')](_0x565c3c[_0x4c5a('0x2e')]);if(_0x565c3c[_0x4c5a('0x2f')]){delete _0x565c3c[_0x4c5a('0x2f')];}_0x59c8b3[_0x4c5a('0x1f')](_0x20ecf5)[_0x4c5a('0x30')](_0x565c3c);};}exports[_0x4c5a('0x31')]=function(_0x3590c3,_0x324365){var _0x3435a0={},_0x44180e={},_0x5775d8={'count':0x0,'rows':[]};var _0x193140=_['map'](db[_0x4c5a('0x32')][_0x4c5a('0x33')],function(_0x19298d){return{'name':_0x19298d[_0x4c5a('0x34')],'type':_0x19298d[_0x4c5a('0x35')][_0x4c5a('0x36')]};});_0x44180e['model']=_[_0x4c5a('0x37')](_0x193140,_0x4c5a('0x2f'));_0x44180e[_0x4c5a('0x38')]=_[_0x4c5a('0x39')](_0x3590c3[_0x4c5a('0x38')]);_0x44180e[_0x4c5a('0x3a')]=_[_0x4c5a('0x3b')](_0x44180e[_0x4c5a('0x3c')],_0x44180e[_0x4c5a('0x38')]);_0x3435a0[_0x4c5a('0x3d')]=_[_0x4c5a('0x3b')](_0x44180e[_0x4c5a('0x3c')],qs[_0x4c5a('0x3e')](_0x3590c3['query']['fields']));_0x3435a0[_0x4c5a('0x3d')]=_0x3435a0[_0x4c5a('0x3d')]['length']?_0x3435a0[_0x4c5a('0x3d')]:_0x44180e[_0x4c5a('0x3c')];if(!_0x3590c3['query'][_0x4c5a('0x3f')]('nolimit')){_0x3435a0[_0x4c5a('0x22')]=qs['limit'](_0x3590c3[_0x4c5a('0x38')]['limit']);_0x3435a0[_0x4c5a('0x20')]=qs[_0x4c5a('0x20')](_0x3590c3[_0x4c5a('0x38')]['offset']);}_0x3435a0[_0x4c5a('0x40')]=qs[_0x4c5a('0x41')](_0x3590c3[_0x4c5a('0x38')]['sort']);_0x3435a0['where']=qs[_0x4c5a('0x3a')](_[_0x4c5a('0x42')](_0x3590c3['query'],_0x44180e[_0x4c5a('0x3a')]),_0x193140);if(_0x3590c3['query']['filter']){_0x3435a0[_0x4c5a('0x43')]=_[_0x4c5a('0x44')](_0x3435a0['where'],{'$or':_[_0x4c5a('0x37')](_0x193140,function(_0x3d7791){if(_0x3d7791['type']!==_0x4c5a('0x45')){var _0xd11714={};_0xd11714[_0x3d7791[_0x4c5a('0x2f')]]={'$like':'%'+_0x3590c3['query'][_0x4c5a('0x46')]+'%'};return _0xd11714;}})});}_0x3435a0=_[_0x4c5a('0x44')]({},_0x3435a0,_0x3590c3[_0x4c5a('0x47')]);var _0x46950e={'where':_0x3435a0['where']};return db[_0x4c5a('0x32')][_0x4c5a('0x23')](_0x46950e)[_0x4c5a('0x28')](function(_0x1e54ea){_0x5775d8[_0x4c5a('0x23')]=_0x1e54ea;if(_0x3590c3[_0x4c5a('0x38')][_0x4c5a('0x48')]){_0x3435a0['include']=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x3435a0);})[_0x4c5a('0x28')](function(_0x3f7801){_0x5775d8[_0x4c5a('0x49')]=_0x3f7801;return _0x5775d8;})['then'](respondWithFilteredResult(_0x324365,_0x3435a0))[_0x4c5a('0x4a')](handleError(_0x324365,null));};exports[_0x4c5a('0x4b')]=function(_0x53a4d0,_0x449010){var _0x56fd62={'raw':![],'where':{'id':_0x53a4d0[_0x4c5a('0x4c')]['id']}},_0x4ffafa={};_0x4ffafa[_0x4c5a('0x3c')]=_[_0x4c5a('0x39')](db[_0x4c5a('0x32')]['rawAttributes']);_0x4ffafa[_0x4c5a('0x38')]=_[_0x4c5a('0x39')](_0x53a4d0[_0x4c5a('0x38')]);_0x4ffafa['filters']=_['intersection'](_0x4ffafa[_0x4c5a('0x3c')],_0x4ffafa[_0x4c5a('0x38')]);_0x56fd62[_0x4c5a('0x3d')]=_['intersection'](_0x4ffafa['model'],qs['fields'](_0x53a4d0[_0x4c5a('0x38')][_0x4c5a('0x3e')]));_0x56fd62[_0x4c5a('0x3d')]=_0x56fd62[_0x4c5a('0x3d')][_0x4c5a('0x4d')]?_0x56fd62[_0x4c5a('0x3d')]:_0x4ffafa[_0x4c5a('0x3c')];if(_0x53a4d0[_0x4c5a('0x38')][_0x4c5a('0x48')]){_0x56fd62['include']=[{'all':!![]}];}_0x56fd62=_[_0x4c5a('0x44')]({},_0x56fd62,_0x53a4d0[_0x4c5a('0x47')]);return db['SquareProject'][_0x4c5a('0x4e')](_0x56fd62)[_0x4c5a('0x28')](handleEntityNotFound(_0x449010,null))[_0x4c5a('0x28')](respondWithResult(_0x449010,null))[_0x4c5a('0x4a')](handleError(_0x449010,null));};exports[_0x4c5a('0x4f')]=function(_0x4dc7e5,_0x270dfc){return db[_0x4c5a('0x32')]['create'](_0x4dc7e5[_0x4c5a('0x50')],{})[_0x4c5a('0x28')](function(_0x5942b0){var _0x109220=_0x4dc7e5['user'][_0x4c5a('0x29')]({'plain':!![]});if(!_0x109220)throw new Error(_0x4c5a('0x51'));if(_0x109220[_0x4c5a('0x52')]===_0x4c5a('0x53')){var _0x5f3f0d=_0x5942b0[_0x4c5a('0x29')]({'plain':!![]});var _0x2c7857=_0x4c5a('0x54');return db['UserProfileSection']['find']({'where':{'name':_0x2c7857,'userProfileId':_0x109220['userProfileId']},'raw':!![]})[_0x4c5a('0x28')](function(_0x4324ce){if(_0x4324ce&&_0x4324ce[_0x4c5a('0x55')]===0x0){return db[_0x4c5a('0x2a')][_0x4c5a('0x4f')]({'name':_0x5f3f0d[_0x4c5a('0x2f')],'resourceId':_0x5f3f0d['id'],'type':_0x4324ce[_0x4c5a('0x2f')],'sectionId':_0x4324ce['id']},{})[_0x4c5a('0x28')](function(){return _0x5942b0;});}else{return _0x5942b0;}})[_0x4c5a('0x4a')](function(_0x44e9ad){logger[_0x4c5a('0x2d')](_0x4c5a('0x56'),_0x44e9ad);throw _0x44e9ad;});}return _0x5942b0;})[_0x4c5a('0x28')](respondWithResult(_0x270dfc,0xc9))['catch'](handleError(_0x270dfc,null));};exports[_0x4c5a('0x57')]=function(_0x24a84b,_0x151bca){if(_0x24a84b[_0x4c5a('0x50')]['id']){delete _0x24a84b[_0x4c5a('0x50')]['id'];}return db['SquareProject'][_0x4c5a('0x4e')]({'where':{'id':_0x24a84b[_0x4c5a('0x4c')]['id']}})[_0x4c5a('0x28')](handleEntityNotFound(_0x151bca,null))[_0x4c5a('0x28')](saveUpdates(_0x24a84b[_0x4c5a('0x50')],null))[_0x4c5a('0x28')](respondWithResult(_0x151bca,null))[_0x4c5a('0x4a')](handleError(_0x151bca,null));};exports[_0x4c5a('0x2b')]=function(_0x325f5d,_0x57cc22){return db['SquareProject'][_0x4c5a('0x4e')]({'where':{'id':_0x325f5d[_0x4c5a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x57cc22,null))['then'](removeEntity(_0x57cc22,null))['catch'](handleError(_0x57cc22,null));};exports['addUsers']=function(_0x21c92d,_0x42ec6e,_0x518956){return db[_0x4c5a('0x32')][_0x4c5a('0x4e')]({'where':{'id':_0x21c92d[_0x4c5a('0x4c')]['id']}})['then'](handleEntityNotFound(_0x42ec6e,null))['then'](function(_0x529b9b){if(_0x529b9b){return _0x529b9b['addUsers'](_0x21c92d['body'][_0x4c5a('0x58')],_['omit'](_0x21c92d['body'],[_0x4c5a('0x58'),'id'])||{});}})[_0x4c5a('0x28')](respondWithResult(_0x42ec6e,null))[_0x4c5a('0x4a')](handleError(_0x42ec6e,null));};exports['removeUsers']=function(_0x29cac1,_0x48dbc0,_0x2710c5){return db[_0x4c5a('0x32')][_0x4c5a('0x4e')]({'where':{'id':_0x29cac1['params']['id']}})[_0x4c5a('0x28')](handleEntityNotFound(_0x48dbc0,null))[_0x4c5a('0x28')](function(_0x453d84){if(_0x453d84){return _0x453d84['removeUsers'](_0x29cac1[_0x4c5a('0x38')][_0x4c5a('0x58')])[_0x4c5a('0x28')](function(){if(_[_0x4c5a('0x59')](_0x29cac1[_0x4c5a('0x38')][_0x4c5a('0x58')])){for(var _0x2fcdfe=0x0;_0x2fcdfe<_0x29cac1[_0x4c5a('0x38')][_0x4c5a('0x58')][_0x4c5a('0x4d')];_0x2fcdfe+=0x1){socket[_0x4c5a('0x5a')](_0x4c5a('0x5b'),{'UserId':Number(_0x29cac1['query'][_0x4c5a('0x58')][_0x2fcdfe]),'SquareProjectId':Number(_0x29cac1['params']['id'])});}}else{socket[_0x4c5a('0x5a')]('userSquareProject:remove',{'UserId':Number(_0x29cac1[_0x4c5a('0x38')][_0x4c5a('0x58')]),'SquareProjectId':Number(_0x29cac1[_0x4c5a('0x4c')]['id'])});}});}})[_0x4c5a('0x28')](respondWithStatusCode(_0x48dbc0,null))[_0x4c5a('0x4a')](handleError(_0x48dbc0,null));};exports[_0x4c5a('0x5c')]=function(_0x102d5f,_0x49ae9a,_0x2cf4da){var _0x124037={};var _0x41a3c8={};var _0x3b55c5;var _0x299705;return db[_0x4c5a('0x32')][_0x4c5a('0x5d')]({'where':{'id':_0x102d5f['params']['id']}})['then'](handleEntityNotFound(_0x49ae9a,null))[_0x4c5a('0x28')](function(_0x862ccf){if(_0x862ccf){_0x3b55c5=_0x862ccf;_0x41a3c8[_0x4c5a('0x3c')]=_[_0x4c5a('0x39')](db[_0x4c5a('0x5e')][_0x4c5a('0x33')]);_0x41a3c8[_0x4c5a('0x38')]=_['keys'](_0x102d5f[_0x4c5a('0x38')]);_0x41a3c8[_0x4c5a('0x3a')]=_[_0x4c5a('0x3b')](_0x41a3c8['model'],_0x41a3c8[_0x4c5a('0x38')]);_0x124037[_0x4c5a('0x3d')]=_[_0x4c5a('0x3b')](_0x41a3c8[_0x4c5a('0x3c')],qs[_0x4c5a('0x3e')](_0x102d5f[_0x4c5a('0x38')][_0x4c5a('0x3e')]));_0x124037[_0x4c5a('0x3d')]=_0x124037[_0x4c5a('0x3d')]['length']?_0x124037[_0x4c5a('0x3d')]:_0x41a3c8[_0x4c5a('0x3c')];_0x124037['order']=qs[_0x4c5a('0x41')](_0x102d5f[_0x4c5a('0x38')][_0x4c5a('0x41')]);_0x124037[_0x4c5a('0x43')]=qs[_0x4c5a('0x3a')](_[_0x4c5a('0x42')](_0x102d5f['query'],_0x41a3c8['filters']));if(_0x102d5f['query']['filter']){_0x124037[_0x4c5a('0x43')]=_['merge'](_0x124037[_0x4c5a('0x43')],{'$or':_[_0x4c5a('0x37')](_0x124037[_0x4c5a('0x3d')],function(_0x241e15){var _0x4e7663={};_0x4e7663[_0x241e15]={'$like':'%'+_0x102d5f[_0x4c5a('0x38')][_0x4c5a('0x46')]+'%'};return _0x4e7663;})});}_0x124037=_['merge']({},_0x124037,_0x102d5f[_0x4c5a('0x47')]);return _0x3b55c5[_0x4c5a('0x5c')](_0x124037);}})[_0x4c5a('0x28')](function(_0x4029b4){if(_0x4029b4){_0x299705=_0x4029b4[_0x4c5a('0x4d')];if(!_0x102d5f[_0x4c5a('0x38')][_0x4c5a('0x3f')](_0x4c5a('0x5f'))){_0x124037[_0x4c5a('0x22')]=qs['limit'](_0x102d5f[_0x4c5a('0x38')][_0x4c5a('0x22')]);_0x124037[_0x4c5a('0x20')]=qs[_0x4c5a('0x20')](_0x102d5f[_0x4c5a('0x38')]['offset']);}return _0x3b55c5[_0x4c5a('0x5c')](_0x124037);}})[_0x4c5a('0x28')](function(_0x4dfdca){if(_0x4dfdca){return _0x4dfdca?{'count':_0x299705,'rows':_0x4dfdca}:null;}})[_0x4c5a('0x28')](respondWithResult(_0x49ae9a,null))[_0x4c5a('0x4a')](handleError(_0x49ae9a,null));};
\ No newline at end of file
index d2e538f..fa1d050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19dc=['events','../../mysqldb','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0xbf30d9,_0x53e776){var _0xef9d67=function(_0x55475e){while(--_0x55475e){_0xbf30d9['push'](_0xbf30d9['shift']());}};_0xef9d67(++_0x53e776);}(_0x19dc,0x1b8));var _0xc19d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x19dc[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xc19d('0x0'));var SquareProject=require(_0xc19d('0x1'))['db'][_0xc19d('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xc19d('0x3')](0x0);var events={'afterCreate':_0xc19d('0x4'),'afterUpdate':_0xc19d('0x5'),'afterDestroy':_0xc19d('0x6')};function emitEvent(_0xda4e65){return function(_0x579bea,_0x5e4c15,_0x25152d){SquareProjectEvents['emit'](_0xda4e65+':'+_0x579bea['id'],_0x579bea);SquareProjectEvents[_0xc19d('0x7')](_0xda4e65,_0x579bea);_0x25152d(null);};}for(var e in events){if(events[_0xc19d('0x8')](e)){var event=events[e];SquareProject[_0xc19d('0x9')](e,emitEvent(event));}}module[_0xc19d('0xa')]=SquareProjectEvents;
\ No newline at end of file
+var _0x8c85=['events','SquareProject','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x342700,_0x569f75){var _0x53406f=function(_0x3b3c32){while(--_0x3b3c32){_0x342700['push'](_0x342700['shift']());}};_0x53406f(++_0x569f75);}(_0x8c85,0x78));var _0x58c8=function(_0x40ffcc,_0x429031){_0x40ffcc=_0x40ffcc-0x0;var _0x2625df=_0x8c85[_0x40ffcc];return _0x2625df;};'use strict';var EventEmitter=require(_0x58c8('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x58c8('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x58c8('0x2'),'afterUpdate':_0x58c8('0x3'),'afterDestroy':_0x58c8('0x4')};function emitEvent(_0x55c7b5){return function(_0x4e3bbf,_0x2de20e,_0x4fedac){SquareProjectEvents[_0x58c8('0x5')](_0x55c7b5+':'+_0x4e3bbf['id'],_0x4e3bbf);SquareProjectEvents[_0x58c8('0x5')](_0x55c7b5,_0x4e3bbf);_0x4fedac(null);};}for(var e in events){if(events[_0x58c8('0x6')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x58c8('0x7')]=SquareProjectEvents;
\ No newline at end of file
index 32c9609..b244591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca86=['path','./squareProject.attributes','exports','define','SquareProject','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','publishedAt','lodash','util','moment','request-promise'];(function(_0x1d760b,_0x47f9fe){var _0x18fb17=function(_0x312def){while(--_0x312def){_0x1d760b['push'](_0x1d760b['shift']());}};_0x18fb17(++_0x47f9fe);}(_0xca86,0x191));var _0x6ca8=function(_0x194a9f,_0x2fdc0b){_0x194a9f=_0x194a9f-0x0;var _0x35487c=_0xca86[_0x194a9f];return _0x35487c;};'use strict';var _=require(_0x6ca8('0x0'));var util=require(_0x6ca8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6ca8('0x2'));var BPromise=require('bluebird');var rp=require(_0x6ca8('0x3'));var fs=require('fs');var path=require(_0x6ca8('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6ca8('0x5'));module[_0x6ca8('0x6')]=function(_0x32bc8f,_0x25de26){return _0x32bc8f[_0x6ca8('0x7')](_0x6ca8('0x8'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1a6bed,_0x9aff9a,_0x35881d){if(_0x1a6bed[_0x6ca8('0x9')](_0x6ca8('0xa'))){_0x1a6bed[_0x6ca8('0xb')]=moment()[_0x6ca8('0xc')](_0x6ca8('0xd'));}if(_0x1a6bed[_0x6ca8('0x9')]('production')){_0x1a6bed[_0x6ca8('0xe')]=moment()[_0x6ca8('0xc')](_0x6ca8('0xd'));}_0x35881d(null,_0x1a6bed);}}});};
\ No newline at end of file
+var _0xcb36=['moment','bluebird','path','../../config/environment','./squareProject.attributes','exports','define','SquareProject','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','publishedAt','util'];(function(_0xaf4c41,_0x587eeb){var _0x220643=function(_0x1e35d1){while(--_0x1e35d1){_0xaf4c41['push'](_0xaf4c41['shift']());}};_0x220643(++_0x587eeb);}(_0xcb36,0x11c));var _0x6cb3=function(_0x32a56c,_0x384231){_0x32a56c=_0x32a56c-0x0;var _0x497748=_0xcb36[_0x32a56c];return _0x497748;};'use strict';var _=require('lodash');var util=require(_0x6cb3('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x6cb3('0x1'));var BPromise=require(_0x6cb3('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6cb3('0x3'));var rimraf=require('rimraf');var config=require(_0x6cb3('0x4'));var attributes=require(_0x6cb3('0x5'));module[_0x6cb3('0x6')]=function(_0xb8eab,_0x55a7a0){return _0xb8eab[_0x6cb3('0x7')](_0x6cb3('0x8'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1e427a,_0x2c5ea3,_0x3514ce){if(_0x1e427a[_0x6cb3('0x9')](_0x6cb3('0xa'))){_0x1e427a[_0x6cb3('0xb')]=moment()[_0x6cb3('0xc')](_0x6cb3('0xd'));}if(_0x1e427a[_0x6cb3('0x9')]('production')){_0x1e427a[_0x6cb3('0xe')]=moment()[_0x6cb3('0xc')](_0x6cb3('0xd'));}_0x3514ce(null,_0x1e427a);}}});};
\ No newline at end of file
index 0537c82..adf8caa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32fe=['stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','message','ShowSquareProject','SquareProject','find','options','raw','attributes','map','model','include'];(function(_0x231a47,_0x46a963){var _0x48d7c9=function(_0x1e69b1){while(--_0x1e69b1){_0x231a47['push'](_0x231a47['shift']());}};_0x48d7c9(++_0x46a963);}(_0x32fe,0x14f));var _0xe32f=function(_0x1a0ef3,_0x535bbf){_0x1a0ef3=_0x1a0ef3-0x0;var _0x2b86da=_0x32fe[_0x1a0ef3];return _0x2b86da;};'use strict';var _=require(_0xe32f('0x0'));var util=require(_0xe32f('0x1'));var moment=require(_0xe32f('0x2'));var BPromise=require(_0xe32f('0x3'));var rs=require(_0xe32f('0x4'));var fs=require('fs');var Redis=require(_0xe32f('0x5'));var db=require(_0xe32f('0x6'))['db'];var utils=require(_0xe32f('0x7'));var logger=require(_0xe32f('0x8'))('rpc');var config=require(_0xe32f('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe32f('0xa')]({'port':0x232a});config[_0xe32f('0xb')]=_['defaults'](config[_0xe32f('0xb')],{'host':_0xe32f('0xc'),'port':0x18eb});var socket=require(_0xe32f('0xd'))(new Redis(config[_0xe32f('0xb')]));require(_0xe32f('0xe'))[_0xe32f('0xf')](socket);function respondWithRpcPromise(_0x55c357,_0x176768,_0x32aba0){return new BPromise(function(_0x32c5c4,_0x1ecf3e){return client[_0xe32f('0x10')](_0x55c357,_0x32aba0)[_0xe32f('0x11')](function(_0x14b7f5){logger[_0xe32f('0x12')](_0xe32f('0x13'),_0x176768,_0xe32f('0x14'));logger[_0xe32f('0x15')](_0xe32f('0x16'),_0x176768,'request\x20sent',JSON['stringify'](_0x14b7f5));if(_0x14b7f5[_0xe32f('0x17')]){if(_0x14b7f5['error'][_0xe32f('0x18')]===0x1f4){logger[_0xe32f('0x17')](_0xe32f('0x13'),_0x176768,_0x14b7f5[_0xe32f('0x17')][_0xe32f('0x19')]);return _0x1ecf3e(_0x14b7f5['error']['message']);}logger[_0xe32f('0x17')](_0xe32f('0x13'),_0x176768,_0x14b7f5[_0xe32f('0x17')][_0xe32f('0x19')]);return _0x32c5c4(_0x14b7f5[_0xe32f('0x17')][_0xe32f('0x19')]);}else{logger[_0xe32f('0x12')](_0xe32f('0x13'),_0x176768,_0xe32f('0x14'));_0x32c5c4(_0x14b7f5['result'][_0xe32f('0x19')]);}})['catch'](function(_0x303bbb){logger[_0xe32f('0x17')](_0xe32f('0x13'),_0x176768,_0x303bbb);_0x1ecf3e(_0x303bbb);});});}exports[_0xe32f('0x1a')]=function(_0x11fc03){var _0xe85b0f=this;return new Promise(function(_0x100106,_0x4d5e9b){return db[_0xe32f('0x1b')][_0xe32f('0x1c')]({'raw':_0x11fc03[_0xe32f('0x1d')]?_0x11fc03[_0xe32f('0x1d')][_0xe32f('0x1e')]===undefined?!![]:![]:!![],'where':_0x11fc03[_0xe32f('0x1d')]?_0x11fc03[_0xe32f('0x1d')]['where']||null:null,'attributes':_0x11fc03[_0xe32f('0x1d')]?_0x11fc03[_0xe32f('0x1d')][_0xe32f('0x1f')]||null:null,'include':_0x11fc03[_0xe32f('0x1d')]?_0x11fc03[_0xe32f('0x1d')]['include']?_[_0xe32f('0x20')](_0x11fc03[_0xe32f('0x1d')]['include'],function(_0x54e701){return{'model':db[_0x54e701[_0xe32f('0x21')]],'as':_0x54e701['as'],'attributes':_0x54e701[_0xe32f('0x1f')],'include':_0x54e701[_0xe32f('0x22')]?_[_0xe32f('0x20')](_0x54e701[_0xe32f('0x22')],function(_0x4d1708){return{'model':db[_0x4d1708[_0xe32f('0x21')]],'as':_0x4d1708['as'],'attributes':_0x4d1708[_0xe32f('0x1f')],'include':_0x4d1708[_0xe32f('0x22')]?_[_0xe32f('0x20')](_0x4d1708[_0xe32f('0x22')],function(_0x2f87c7){return{'model':db[_0x2f87c7[_0xe32f('0x21')]],'as':_0x2f87c7['as'],'attributes':_0x2f87c7[_0xe32f('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3c45e9){logger[_0xe32f('0x12')](_0xe32f('0x1a'),_0x11fc03);logger[_0xe32f('0x15')]('ShowSquareProject',_0x11fc03,JSON[_0xe32f('0x23')](_0x3c45e9));_0x100106(_0x3c45e9);})[_0xe32f('0x24')](function(_0x5bf568){logger[_0xe32f('0x17')](_0xe32f('0x1a'),_0x5bf568[_0xe32f('0x19')],_0x11fc03);_0x4d5e9b(_0xe85b0f['error'](0x1f4,_0x5bf568[_0xe32f('0x19')]));});});};
\ No newline at end of file
+var _0x88ff=['../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','ShowSquareProject','options','where','attributes','map','include','model','util','moment','bluebird','randomstring','ioredis'];(function(_0x441ce4,_0x14565e){var _0x4e5e64=function(_0x128b67){while(--_0x128b67){_0x441ce4['push'](_0x441ce4['shift']());}};_0x4e5e64(++_0x14565e);}(_0x88ff,0x1a8));var _0xf88f=function(_0x2014d7,_0x478f39){_0x2014d7=_0x2014d7-0x0;var _0x4c7f9a=_0x88ff[_0x2014d7];return _0x4c7f9a;};'use strict';var _=require('lodash');var util=require(_0xf88f('0x0'));var moment=require(_0xf88f('0x1'));var BPromise=require(_0xf88f('0x2'));var rs=require(_0xf88f('0x3'));var fs=require('fs');var Redis=require(_0xf88f('0x4'));var db=require(_0xf88f('0x5'))['db'];var utils=require(_0xf88f('0x6'));var logger=require('../../config/logger')(_0xf88f('0x7'));var config=require(_0xf88f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf88f('0x9')][_0xf88f('0xa')]({'port':0x232a});config[_0xf88f('0xb')]=_[_0xf88f('0xc')](config['redis'],{'host':_0xf88f('0xd'),'port':0x18eb});var socket=require(_0xf88f('0xe'))(new Redis(config[_0xf88f('0xb')]));require(_0xf88f('0xf'))[_0xf88f('0x10')](socket);function respondWithRpcPromise(_0x55bbe9,_0x10f3bc,_0x49943f){return new BPromise(function(_0x46a5b8,_0x5483a2){return client['request'](_0x55bbe9,_0x49943f)[_0xf88f('0x11')](function(_0x9895b4){logger[_0xf88f('0x12')](_0xf88f('0x13'),_0x10f3bc,_0xf88f('0x14'));logger['debug']('SquareProject,\x20%s,\x20%s,\x20%s',_0x10f3bc,_0xf88f('0x14'),JSON[_0xf88f('0x15')](_0x9895b4));if(_0x9895b4[_0xf88f('0x16')]){if(_0x9895b4[_0xf88f('0x16')][_0xf88f('0x17')]===0x1f4){logger['error'](_0xf88f('0x13'),_0x10f3bc,_0x9895b4[_0xf88f('0x16')]['message']);return _0x5483a2(_0x9895b4['error'][_0xf88f('0x18')]);}logger[_0xf88f('0x16')](_0xf88f('0x13'),_0x10f3bc,_0x9895b4['error'][_0xf88f('0x18')]);return _0x46a5b8(_0x9895b4[_0xf88f('0x16')][_0xf88f('0x18')]);}else{logger[_0xf88f('0x12')](_0xf88f('0x13'),_0x10f3bc,_0xf88f('0x14'));_0x46a5b8(_0x9895b4['result']['message']);}})[_0xf88f('0x19')](function(_0xd801c2){logger['error'](_0xf88f('0x13'),_0x10f3bc,_0xd801c2);_0x5483a2(_0xd801c2);});});}exports[_0xf88f('0x1a')]=function(_0x3e40ff){var _0x37b46d=this;return new Promise(function(_0x8a7878,_0x1632ff){return db['SquareProject']['find']({'raw':_0x3e40ff['options']?_0x3e40ff['options']['raw']===undefined?!![]:![]:!![],'where':_0x3e40ff[_0xf88f('0x1b')]?_0x3e40ff[_0xf88f('0x1b')][_0xf88f('0x1c')]||null:null,'attributes':_0x3e40ff[_0xf88f('0x1b')]?_0x3e40ff['options'][_0xf88f('0x1d')]||null:null,'include':_0x3e40ff[_0xf88f('0x1b')]?_0x3e40ff[_0xf88f('0x1b')]['include']?_[_0xf88f('0x1e')](_0x3e40ff[_0xf88f('0x1b')]['include'],function(_0x503bec){return{'model':db[_0x503bec['model']],'as':_0x503bec['as'],'attributes':_0x503bec['attributes'],'include':_0x503bec[_0xf88f('0x1f')]?_[_0xf88f('0x1e')](_0x503bec['include'],function(_0x1fe6e5){return{'model':db[_0x1fe6e5[_0xf88f('0x20')]],'as':_0x1fe6e5['as'],'attributes':_0x1fe6e5['attributes'],'include':_0x1fe6e5[_0xf88f('0x1f')]?_[_0xf88f('0x1e')](_0x1fe6e5[_0xf88f('0x1f')],function(_0x2c3b26){return{'model':db[_0x2c3b26[_0xf88f('0x20')]],'as':_0x2c3b26['as'],'attributes':_0x2c3b26[_0xf88f('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf88f('0x11')](function(_0x49020f){logger['info'](_0xf88f('0x1a'),_0x3e40ff);logger['debug'](_0xf88f('0x1a'),_0x3e40ff,JSON['stringify'](_0x49020f));_0x8a7878(_0x49020f);})[_0xf88f('0x19')](function(_0x7a62e8){logger['error'](_0xf88f('0x1a'),_0x7a62e8[_0xf88f('0x18')],_0x3e40ff);_0x1632ff(_0x37b46d[_0xf88f('0x16')](0x1f4,_0x7a62e8['message']));});});};
\ No newline at end of file
index 460ee92..1866cc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae05=['./squareProject.events','save','remove','update','removeListener','length','squareProject:'];(function(_0x4b1ef6,_0x4788a8){var _0x1b5eef=function(_0x32f969){while(--_0x32f969){_0x4b1ef6['push'](_0x4b1ef6['shift']());}};_0x1b5eef(++_0x4788a8);}(_0xae05,0x118));var _0x5ae0=function(_0x7c9fba,_0x10b015){_0x7c9fba=_0x7c9fba-0x0;var _0x5cceed=_0xae05[_0x7c9fba];return _0x5cceed;};'use strict';var SquareProjectEvents=require(_0x5ae0('0x0'));var events=[_0x5ae0('0x1'),_0x5ae0('0x2'),_0x5ae0('0x3')];function createListener(_0x4442b9,_0x52d116){return function(_0x6dabf2){_0x52d116['emit'](_0x4442b9,_0x6dabf2);};}function removeListener(_0xaf51f0,_0x267f22){return function(){SquareProjectEvents[_0x5ae0('0x4')](_0xaf51f0,_0x267f22);};}exports['register']=function(_0x3da5d1){for(var _0x3fe2da=0x0,_0x2de969=events[_0x5ae0('0x5')];_0x3fe2da<_0x2de969;_0x3fe2da++){var _0x6be691=events[_0x3fe2da];var _0x3b625e=createListener(_0x5ae0('0x6')+_0x6be691,_0x3da5d1);SquareProjectEvents['on'](_0x6be691,_0x3b625e);}};
\ No newline at end of file
+var _0x497b=['remove','emit','removeListener','register','length','./squareProject.events','save'];(function(_0x3959c7,_0x1f4737){var _0x34e8da=function(_0x154c35){while(--_0x154c35){_0x3959c7['push'](_0x3959c7['shift']());}};_0x34e8da(++_0x1f4737);}(_0x497b,0x1ef));var _0xb497=function(_0x4d6a83,_0x5bfcb8){_0x4d6a83=_0x4d6a83-0x0;var _0x234aac=_0x497b[_0x4d6a83];return _0x234aac;};'use strict';var SquareProjectEvents=require(_0xb497('0x0'));var events=[_0xb497('0x1'),_0xb497('0x2'),'update'];function createListener(_0x1ff7f9,_0x4f019a){return function(_0x425c7e){_0x4f019a[_0xb497('0x3')](_0x1ff7f9,_0x425c7e);};}function removeListener(_0x5ed7cf,_0x4b0667){return function(){SquareProjectEvents[_0xb497('0x4')](_0x5ed7cf,_0x4b0667);};}exports[_0xb497('0x5')]=function(_0x3f6b5b){for(var _0x27c82f=0x0,_0x1911ff=events[_0xb497('0x6')];_0x27c82f<_0x1911ff;_0x27c82f++){var _0x28a435=events[_0x27c82f];var _0x591ab5=createListener('squareProject:'+_0x28a435,_0x3f6b5b);SquareProjectEvents['on'](_0x28a435,_0x591ab5);}};
\ No newline at end of file
index 94dd26a..c572a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0xfea2d9,_0x2c5be6){var _0x32f84b=function(_0x1f5ec7){while(--_0x1f5ec7){_0xfea2d9['push'](_0xfea2d9['shift']());}};_0x32f84b(++_0x2c5be6);}(_0x5fab,0x177));var _0xb5fa=function(_0x311f44,_0x1d7f5b){_0x311f44=_0x311f44-0x0;var _0x46f1e6=_0x5fab[_0x311f44];return _0x46f1e6;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0x11')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0x13')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xabce=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','download','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x49cc61,_0x416a32){var _0x5f9488=function(_0x444892){while(--_0x444892){_0x49cc61['push'](_0x49cc61['shift']());}};_0x5f9488(++_0x416a32);}(_0xabce,0x103));var _0xeabc=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xabce[_0xb0f7c3];return _0x28ea68;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./squareRecording.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id/download',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0xc')]('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0xe')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x10')]);router[_0xeabc('0x11')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x12')]);module[_0xeabc('0x13')]=router;
\ No newline at end of file
index 33a9d0f..341413c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['VIRTUAL','savePath','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x540a65,_0x1b75e2){var _0x14dc3e=function(_0x349ab4){while(--_0x349ab4){_0x540a65['push'](_0x540a65['shift']());}};_0x14dc3e(++_0x1b75e2);}(_0x8ef6,0xf2));var _0x68ef=function(_0x3543f2,_0x3ee1f4){_0x3543f2=_0x3543f2-0x0;var _0x51744a=_0x8ef6[_0x3543f2];return _0x51744a;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'callerid':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize[_0x68ef('0x2')]},'extension':{'type':Sequelize[_0x68ef('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'dnid':{'type':Sequelize[_0x68ef('0x2')]},'projectName':{'type':Sequelize[_0x68ef('0x2')]},'saveName':{'type':Sequelize[_0x68ef('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x68ef('0x3')],'get':function(){var _0x4740e8='';var _0x2de776=this['getDataValue'](_0x68ef('0x4'));if(_0x2de776){_0x4740e8=_0x2de776[_0x68ef('0x5')](_0x2de776[_0x68ef('0x6')]('.'));}return _0x4740e8;}}};
\ No newline at end of file
+var _0x5fd1=['STRING','VIRTUAL','getDataValue','savePath','substring','sequelize'];(function(_0x2cd632,_0x53963b){var _0x42ef06=function(_0x4eaa71){while(--_0x4eaa71){_0x2cd632['push'](_0x2cd632['shift']());}};_0x42ef06(++_0x53963b);}(_0x5fd1,0x155));var _0x15fd=function(_0x5081eb,_0x305597){_0x5081eb=_0x5081eb-0x0;var _0x163cf1=_0x5fd1[_0x5081eb];return _0x163cf1;};'use strict';var Sequelize=require(_0x15fd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x15fd('0x1')]},'callerid':{'type':Sequelize[_0x15fd('0x1')]},'calleridname':{'type':Sequelize[_0x15fd('0x1')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x15fd('0x1')]},'accountcode':{'type':Sequelize[_0x15fd('0x1')]},'dnid':{'type':Sequelize[_0x15fd('0x1')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0x15fd('0x1')]},'filename':{'type':Sequelize[_0x15fd('0x1')]},'savePath':{'type':Sequelize[_0x15fd('0x1')]},'format':{'type':Sequelize[_0x15fd('0x2')],'get':function(){var _0x225728='';var _0x534e63=this[_0x15fd('0x3')](_0x15fd('0x4'));if(_0x534e63){_0x225728=_0x534e63[_0x15fd('0x5')](_0x534e63['lastIndexOf']('.'));}return _0x225728;}}};
\ No newline at end of file
index 22b11ba..8bb6083 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f48=['keys','includeAll','find','body','update','download','../../components/encryptor','uniqueid','savePath','filename','format','existsSync','decryptFile','secrets','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','destroy','then','stack','name','send','index','rawAttributes','key','map','query','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','pick','filter','merge','where','type','VIRTUAL','options','SquareRecording','include','findAll','catch','show','params'];(function(_0x469e5a,_0x52b3e2){var _0x21d21e=function(_0x4aec59){while(--_0x4aec59){_0x469e5a['push'](_0x469e5a['shift']());}};_0x21d21e(++_0x52b3e2);}(_0x4f48,0x135));var _0x84f4=function(_0x413302,_0x1f71eb){_0x413302=_0x413302-0x0;var _0x3d665c=_0x4f48[_0x413302];return _0x3d665c;};'use strict';var emlformat=require(_0x84f4('0x0'));var rimraf=require(_0x84f4('0x1'));var zipdir=require(_0x84f4('0x2'));var jsonpatch=require(_0x84f4('0x3'));var rp=require(_0x84f4('0x4'));var moment=require('moment');var BPromise=require(_0x84f4('0x5'));var Mustache=require(_0x84f4('0x6'));var util=require('util');var path=require(_0x84f4('0x7'));var sox=require(_0x84f4('0x8'));var csv=require(_0x84f4('0x9'));var ejs=require(_0x84f4('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x84f4('0xb'));var deskjs=require(_0x84f4('0xc'));var toCsv=require('to-csv');var querystring=require(_0x84f4('0xd'));var Papa=require(_0x84f4('0xe'));var Redis=require(_0x84f4('0xf'));var authService=require(_0x84f4('0x10'));var qs=require(_0x84f4('0x11'));var as=require(_0x84f4('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x84f4('0x13'));var utils=require(_0x84f4('0x14'));var config=require(_0x84f4('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x544e34,_0xd3a653){_0xd3a653=_0xd3a653||0xcc;return function(_0xff5565){if(_0xff5565){return _0x544e34[_0x84f4('0x16')](_0xd3a653);}return _0x544e34[_0x84f4('0x17')](_0xd3a653)[_0x84f4('0x18')]();};}function respondWithResult(_0x499472,_0x15b77d){_0x15b77d=_0x15b77d||0xc8;return function(_0x6977e2){if(_0x6977e2){return _0x499472[_0x84f4('0x17')](_0x15b77d)['json'](_0x6977e2);}};}function respondWithFilteredResult(_0x30a246,_0x58e93b){return function(_0x2d51a2){if(_0x2d51a2){var _0x43f641=typeof _0x58e93b[_0x84f4('0x19')]===_0x84f4('0x1a')&&typeof _0x58e93b[_0x84f4('0x1b')]===_0x84f4('0x1a');var _0xf15491=_0x2d51a2[_0x84f4('0x1c')];var _0x2bb66e=_0x43f641?0x0:_0x58e93b[_0x84f4('0x19')];var _0x87a62e=_0x43f641?_0x2d51a2[_0x84f4('0x1c')]:_0x58e93b[_0x84f4('0x19')]+_0x58e93b[_0x84f4('0x1b')];var _0x1c71f3;if(_0x87a62e>=_0xf15491){_0x87a62e=_0xf15491;_0x1c71f3=0xc8;}else{_0x1c71f3=0xce;}_0x30a246[_0x84f4('0x17')](_0x1c71f3);return _0x30a246[_0x84f4('0x1d')](_0x84f4('0x1e'),_0x2bb66e+'-'+_0x87a62e+'/'+_0xf15491)[_0x84f4('0x1f')](_0x2d51a2);}return null;};}function patchUpdates(_0x58c886){return function(_0x186c10){try{jsonpatch[_0x84f4('0x20')](_0x186c10,_0x58c886,!![]);}catch(_0x34c144){return BPromise[_0x84f4('0x21')](_0x34c144);}return _0x186c10[_0x84f4('0x22')]();};}function saveUpdates(_0x5e0728,_0x2c81b5){return function(_0x55209b){if(_0x55209b){return _0x55209b['update'](_0x5e0728)['then'](function(_0x2d6b5d){return _0x2d6b5d;});}return null;};}function removeEntity(_0x23f751,_0x4ccd25){return function(_0x6a600e){if(_0x6a600e){return _0x6a600e[_0x84f4('0x23')]()[_0x84f4('0x24')](function(){_0x23f751[_0x84f4('0x17')](0xcc)[_0x84f4('0x18')]();});}};}function handleEntityNotFound(_0x279bbf,_0x16b692){return function(_0x45900f){if(!_0x45900f){_0x279bbf['sendStatus'](0x194);}return _0x45900f;};}function handleError(_0x37ffb0,_0x573ccd){_0x573ccd=_0x573ccd||0x1f4;return function(_0x5f2f9b){logger['error'](_0x5f2f9b[_0x84f4('0x25')]);if(_0x5f2f9b[_0x84f4('0x26')]){delete _0x5f2f9b[_0x84f4('0x26')];}_0x37ffb0[_0x84f4('0x17')](_0x573ccd)[_0x84f4('0x27')](_0x5f2f9b);};}exports[_0x84f4('0x28')]=function(_0x119650,_0x1130f8){var _0x183f05={},_0xf3e1d8={},_0x4de557={'count':0x0,'rows':[]};var _0x429615=_['map'](db['SquareRecording'][_0x84f4('0x29')],function(_0x4c0fbe){return{'name':_0x4c0fbe['fieldName'],'type':_0x4c0fbe['type'][_0x84f4('0x2a')]};});_0xf3e1d8['model']=_[_0x84f4('0x2b')](_0x429615,_0x84f4('0x26'));_0xf3e1d8[_0x84f4('0x2c')]=_['keys'](_0x119650[_0x84f4('0x2c')]);_0xf3e1d8['filters']=_['intersection'](_0xf3e1d8[_0x84f4('0x2d')],_0xf3e1d8[_0x84f4('0x2c')]);_0x183f05[_0x84f4('0x2e')]=_[_0x84f4('0x2f')](_0xf3e1d8[_0x84f4('0x2d')],qs[_0x84f4('0x30')](_0x119650[_0x84f4('0x2c')][_0x84f4('0x30')]));_0x183f05[_0x84f4('0x2e')]=_0x183f05['attributes'][_0x84f4('0x31')]?_0x183f05[_0x84f4('0x2e')]:_0xf3e1d8[_0x84f4('0x2d')];if(!_0x119650[_0x84f4('0x2c')][_0x84f4('0x32')]('nolimit')){_0x183f05[_0x84f4('0x1b')]=qs[_0x84f4('0x1b')](_0x119650['query']['limit']);_0x183f05['offset']=qs[_0x84f4('0x19')](_0x119650[_0x84f4('0x2c')][_0x84f4('0x19')]);}_0x183f05[_0x84f4('0x33')]=qs[_0x84f4('0x34')](_0x119650['query'][_0x84f4('0x34')]);_0x183f05['where']=qs[_0x84f4('0x35')](_[_0x84f4('0x36')](_0x119650['query'],_0xf3e1d8['filters']),_0x429615);if(_0x119650[_0x84f4('0x2c')][_0x84f4('0x37')]){_0x183f05['where']=_[_0x84f4('0x38')](_0x183f05[_0x84f4('0x39')],{'$or':_['map'](_0x429615,function(_0x3244cf){if(_0x3244cf[_0x84f4('0x3a')]!==_0x84f4('0x3b')){var _0x1fd643={};_0x1fd643[_0x3244cf[_0x84f4('0x26')]]={'$like':'%'+_0x119650[_0x84f4('0x2c')][_0x84f4('0x37')]+'%'};return _0x1fd643;}})});}_0x183f05=_['merge']({},_0x183f05,_0x119650[_0x84f4('0x3c')]);var _0x264ee5={'where':_0x183f05[_0x84f4('0x39')]};return db[_0x84f4('0x3d')]['count'](_0x264ee5)['then'](function(_0x28f866){_0x4de557[_0x84f4('0x1c')]=_0x28f866;if(_0x119650['query']['includeAll']){_0x183f05[_0x84f4('0x3e')]=[{'all':!![]}];}return db[_0x84f4('0x3d')][_0x84f4('0x3f')](_0x183f05);})[_0x84f4('0x24')](function(_0x465ce1){_0x4de557['rows']=_0x465ce1;return _0x4de557;})[_0x84f4('0x24')](respondWithFilteredResult(_0x1130f8,_0x183f05))[_0x84f4('0x40')](handleError(_0x1130f8,null));};exports[_0x84f4('0x41')]=function(_0x1bde0d,_0x496bad){var _0x20dc2b={'raw':!![],'where':{'id':_0x1bde0d[_0x84f4('0x42')]['id']}},_0x2adef7={};_0x2adef7[_0x84f4('0x2d')]=_[_0x84f4('0x43')](db[_0x84f4('0x3d')][_0x84f4('0x29')]);_0x2adef7['query']=_[_0x84f4('0x43')](_0x1bde0d['query']);_0x2adef7[_0x84f4('0x35')]=_[_0x84f4('0x2f')](_0x2adef7[_0x84f4('0x2d')],_0x2adef7[_0x84f4('0x2c')]);_0x20dc2b[_0x84f4('0x2e')]=_[_0x84f4('0x2f')](_0x2adef7[_0x84f4('0x2d')],qs[_0x84f4('0x30')](_0x1bde0d[_0x84f4('0x2c')][_0x84f4('0x30')]));_0x20dc2b[_0x84f4('0x2e')]=_0x20dc2b[_0x84f4('0x2e')][_0x84f4('0x31')]?_0x20dc2b[_0x84f4('0x2e')]:_0x2adef7[_0x84f4('0x2d')];if(_0x1bde0d[_0x84f4('0x2c')][_0x84f4('0x44')]){_0x20dc2b[_0x84f4('0x3e')]=[{'all':!![]}];}_0x20dc2b=_[_0x84f4('0x38')]({},_0x20dc2b,_0x1bde0d[_0x84f4('0x3c')]);return db[_0x84f4('0x3d')][_0x84f4('0x45')](_0x20dc2b)[_0x84f4('0x24')](handleEntityNotFound(_0x496bad,null))[_0x84f4('0x24')](respondWithResult(_0x496bad,null))[_0x84f4('0x40')](handleError(_0x496bad,null));};exports['create']=function(_0x254ec0,_0x526a90){return db['SquareRecording']['create'](_0x254ec0[_0x84f4('0x46')],{})[_0x84f4('0x24')](respondWithResult(_0x526a90,0xc9))[_0x84f4('0x40')](handleError(_0x526a90,null));};exports[_0x84f4('0x47')]=function(_0x5eb38a,_0x370e71){if(_0x5eb38a[_0x84f4('0x46')]['id']){delete _0x5eb38a[_0x84f4('0x46')]['id'];}return db[_0x84f4('0x3d')]['find']({'where':{'id':_0x5eb38a[_0x84f4('0x42')]['id']}})[_0x84f4('0x24')](handleEntityNotFound(_0x370e71,null))[_0x84f4('0x24')](saveUpdates(_0x5eb38a[_0x84f4('0x46')],null))[_0x84f4('0x24')](respondWithResult(_0x370e71,null))['catch'](handleError(_0x370e71,null));};exports[_0x84f4('0x48')]=function(_0x5e0524,_0x42af7d,_0x1b861c){var _0x23b23e=require(_0x84f4('0x49'));var _0x5c32e4=![];var _0xcdd519={};if(_0x5e0524['query'][_0x84f4('0x3a')]&&_0x5e0524[_0x84f4('0x2c')][_0x84f4('0x3a')]===_0x84f4('0x4a')){_0xcdd519['uniqueid']=_0x5e0524[_0x84f4('0x42')]['id'];}else{_0xcdd519['id']=_0x5e0524[_0x84f4('0x42')]['id'];}return db['SquareRecording'][_0x84f4('0x45')]({'where':_0xcdd519,'attributes':['id',_0x84f4('0x4b'),_0x84f4('0x4c')],'raw':!![]})[_0x84f4('0x24')](handleEntityNotFound(_0x42af7d,null))[_0x84f4('0x24')](function(_0x2c46ee){if(_0x2c46ee){var _0x4e802d=_0x2c46ee[_0x84f4('0x4b')];var _0x4b8122=util[_0x84f4('0x4d')]('%s.cypher',_0x4e802d);if(fs[_0x84f4('0x4e')](_0x4b8122)){_0x5c32e4=!![];return _0x23b23e[_0x84f4('0x4f')](_0x4b8122,_0x4e802d,config[_0x84f4('0x50')]['recording'])[_0x84f4('0x24')](function(){return _0x2c46ee;});}return _0x2c46ee;}})['then'](function(_0x27af78){if(_0x27af78){var _0x570e90=_0x27af78[_0x84f4('0x4b')];if(!fs[_0x84f4('0x4e')](_0x570e90)){throw new db[(_0x84f4('0x51'))]['ValidationError'](_0x84f4('0x52'));}if(_0x27af78[_0x84f4('0x4c')]){return _0x42af7d[_0x84f4('0x48')](_0x570e90,_0x27af78[_0x84f4('0x4c')]+path[_0x84f4('0x53')](_0x570e90),function(){if(_0x5c32e4){fs[_0x84f4('0x54')](_0x570e90);}});}else{return _0x42af7d[_0x84f4('0x48')](_0x570e90,function(_0x98636){if(_0x5c32e4){fs['unlink'](_0x570e90);}});}}})[_0x84f4('0x40')](function(_0x294dfa){if(_0x294dfa[_0x84f4('0x55')]===_0x84f4('0x52')){_0x42af7d[_0x84f4('0x17')](0x194)[_0x84f4('0x27')]('Not\x20found');}else{return handleError(_0x42af7d,null);}});};exports[_0x84f4('0x23')]=function(_0x5ded63,_0x1cf4c2){return db[_0x84f4('0x3d')][_0x84f4('0x45')]({'where':{'id':_0x5ded63[_0x84f4('0x42')]['id']}})[_0x84f4('0x24')](function(_0xf42791){if(_[_0x84f4('0x56')](_0xf42791)){throw new ReferenceError(_0x84f4('0x57'));}return _0xf42791;})[_0x84f4('0x24')](function(_0x2e437d){var _0x4620b3=_0x2e437d[_0x84f4('0x4b')];logger['info'](_0x84f4('0x58'),_0x4620b3);if(!_[_0x84f4('0x56')](_0x2e437d[_0x84f4('0x4b')])&&fs[_0x84f4('0x4e')](_0x4620b3)){logger[_0x84f4('0x59')](_0x84f4('0x5a')+_0x4620b3+_0x84f4('0x5b'));fs[_0x84f4('0x5c')](_0x4620b3);}_0x4620b3=_0x4620b3+_0x84f4('0x5d');if(!_['isNil'](_0x2e437d[_0x84f4('0x4b')])&&fs[_0x84f4('0x4e')](_0x4620b3)){logger[_0x84f4('0x59')](_0x84f4('0x5a')+_0x4620b3+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x84f4('0x5c')](_0x4620b3);}return _0x2e437d;})[_0x84f4('0x24')](function(_0x13a708){if(!_0x13a708)throw new InternalError();return _0x13a708[_0x84f4('0x23')]();})[_0x84f4('0x24')](function(){_0x1cf4c2[_0x84f4('0x17')](0xcc)[_0x84f4('0x18')]();})['catch'](handleError(_0x1cf4c2,null));};
\ No newline at end of file
+var _0x6d36=['where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','show','find','catch','create','params','../../components/encryptor','uniqueid','savePath','filename','%s.cypher','existsSync','recording','ValidationError','SquareRecording\x20not\x20found','download','message','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','stack','name','send','index','map','SquareRecording','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort'];(function(_0x5d308d,_0x3e1c4d){var _0x28dc2f=function(_0x5c656d){while(--_0x5c656d){_0x5d308d['push'](_0x5d308d['shift']());}};_0x28dc2f(++_0x3e1c4d);}(_0x6d36,0x1e9));var _0x66d3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6d36[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x66d3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x66d3('0x1'));var jsonpatch=require(_0x66d3('0x2'));var rp=require(_0x66d3('0x3'));var moment=require(_0x66d3('0x4'));var BPromise=require(_0x66d3('0x5'));var Mustache=require(_0x66d3('0x6'));var util=require(_0x66d3('0x7'));var path=require(_0x66d3('0x8'));var sox=require(_0x66d3('0x9'));var csv=require(_0x66d3('0xa'));var ejs=require(_0x66d3('0xb'));var fs=require('fs');var fs_extra=require(_0x66d3('0xc'));var _=require(_0x66d3('0xd'));var squel=require('squel');var crypto=require(_0x66d3('0xe'));var jsforce=require(_0x66d3('0xf'));var deskjs=require(_0x66d3('0x10'));var toCsv=require('to-csv');var querystring=require(_0x66d3('0x11'));var Papa=require('papaparse');var Redis=require(_0x66d3('0x12'));var authService=require(_0x66d3('0x13'));var qs=require(_0x66d3('0x14'));var as=require(_0x66d3('0x15'));var hardwareService=require(_0x66d3('0x16'));var logger=require(_0x66d3('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x66d3('0x18'));var licenseUtil=require(_0x66d3('0x19'));var db=require(_0x66d3('0x1a'))['db'];function respondWithStatusCode(_0x2e392e,_0x548eb0){_0x548eb0=_0x548eb0||0xcc;return function(_0x21f21d){if(_0x21f21d){return _0x2e392e[_0x66d3('0x1b')](_0x548eb0);}return _0x2e392e[_0x66d3('0x1c')](_0x548eb0)[_0x66d3('0x1d')]();};}function respondWithResult(_0x27ce60,_0x6132af){_0x6132af=_0x6132af||0xc8;return function(_0x5465a4){if(_0x5465a4){return _0x27ce60[_0x66d3('0x1c')](_0x6132af)[_0x66d3('0x1e')](_0x5465a4);}};}function respondWithFilteredResult(_0x3e9693,_0x46524b){return function(_0x5028e6){if(_0x5028e6){var _0x493516=typeof _0x46524b[_0x66d3('0x1f')]===_0x66d3('0x20')&&typeof _0x46524b[_0x66d3('0x21')]===_0x66d3('0x20');var _0x3272cb=_0x5028e6[_0x66d3('0x22')];var _0x5d4f3a=_0x493516?0x0:_0x46524b['offset'];var _0x10ab5e=_0x493516?_0x5028e6[_0x66d3('0x22')]:_0x46524b[_0x66d3('0x1f')]+_0x46524b['limit'];var _0x55110d;if(_0x10ab5e>=_0x3272cb){_0x10ab5e=_0x3272cb;_0x55110d=0xc8;}else{_0x55110d=0xce;}_0x3e9693['status'](_0x55110d);return _0x3e9693['set'](_0x66d3('0x23'),_0x5d4f3a+'-'+_0x10ab5e+'/'+_0x3272cb)[_0x66d3('0x1e')](_0x5028e6);}return null;};}function patchUpdates(_0x53de9d){return function(_0x5d8826){try{jsonpatch[_0x66d3('0x24')](_0x5d8826,_0x53de9d,!![]);}catch(_0x3f34c0){return BPromise['reject'](_0x3f34c0);}return _0x5d8826[_0x66d3('0x25')]();};}function saveUpdates(_0x26d5b4,_0x37fcd5){return function(_0x4570e3){if(_0x4570e3){return _0x4570e3[_0x66d3('0x26')](_0x26d5b4)[_0x66d3('0x27')](function(_0x5e937a){return _0x5e937a;});}return null;};}function removeEntity(_0x396756,_0x1caef1){return function(_0x77ae56){if(_0x77ae56){return _0x77ae56['destroy']()['then'](function(){_0x396756[_0x66d3('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb1f2ee,_0x16d0bb){return function(_0x248f4a){if(!_0x248f4a){_0xb1f2ee['sendStatus'](0x194);}return _0x248f4a;};}function handleError(_0xcce44d,_0x238e47){_0x238e47=_0x238e47||0x1f4;return function(_0x22f704){logger['error'](_0x22f704[_0x66d3('0x28')]);if(_0x22f704[_0x66d3('0x29')]){delete _0x22f704[_0x66d3('0x29')];}_0xcce44d['status'](_0x238e47)[_0x66d3('0x2a')](_0x22f704);};}exports[_0x66d3('0x2b')]=function(_0x5451e4,_0x40eeeb){var _0x59731b={},_0x10192d={},_0x445b09={'count':0x0,'rows':[]};var _0x18e49b=_[_0x66d3('0x2c')](db[_0x66d3('0x2d')][_0x66d3('0x2e')],function(_0x356898){return{'name':_0x356898['fieldName'],'type':_0x356898['type']['key']};});_0x10192d[_0x66d3('0x2f')]=_[_0x66d3('0x2c')](_0x18e49b,_0x66d3('0x29'));_0x10192d[_0x66d3('0x30')]=_[_0x66d3('0x31')](_0x5451e4[_0x66d3('0x30')]);_0x10192d[_0x66d3('0x32')]=_[_0x66d3('0x33')](_0x10192d['model'],_0x10192d['query']);_0x59731b[_0x66d3('0x34')]=_['intersection'](_0x10192d[_0x66d3('0x2f')],qs[_0x66d3('0x35')](_0x5451e4[_0x66d3('0x30')][_0x66d3('0x35')]));_0x59731b[_0x66d3('0x34')]=_0x59731b[_0x66d3('0x34')][_0x66d3('0x36')]?_0x59731b[_0x66d3('0x34')]:_0x10192d[_0x66d3('0x2f')];if(!_0x5451e4['query']['hasOwnProperty'](_0x66d3('0x37'))){_0x59731b[_0x66d3('0x21')]=qs['limit'](_0x5451e4[_0x66d3('0x30')][_0x66d3('0x21')]);_0x59731b[_0x66d3('0x1f')]=qs[_0x66d3('0x1f')](_0x5451e4[_0x66d3('0x30')]['offset']);}_0x59731b['order']=qs[_0x66d3('0x38')](_0x5451e4['query']['sort']);_0x59731b[_0x66d3('0x39')]=qs[_0x66d3('0x32')](_[_0x66d3('0x3a')](_0x5451e4['query'],_0x10192d['filters']),_0x18e49b);if(_0x5451e4[_0x66d3('0x30')][_0x66d3('0x3b')]){_0x59731b[_0x66d3('0x39')]=_[_0x66d3('0x3c')](_0x59731b[_0x66d3('0x39')],{'$or':_[_0x66d3('0x2c')](_0x18e49b,function(_0x48d76b){if(_0x48d76b[_0x66d3('0x3d')]!==_0x66d3('0x3e')){var _0x274517={};_0x274517[_0x48d76b['name']]={'$like':'%'+_0x5451e4[_0x66d3('0x30')][_0x66d3('0x3b')]+'%'};return _0x274517;}})});}_0x59731b=_[_0x66d3('0x3c')]({},_0x59731b,_0x5451e4[_0x66d3('0x3f')]);var _0x46581e={'where':_0x59731b['where']};return db[_0x66d3('0x2d')][_0x66d3('0x22')](_0x46581e)['then'](function(_0x151b0c){_0x445b09['count']=_0x151b0c;if(_0x5451e4[_0x66d3('0x30')][_0x66d3('0x40')]){_0x59731b['include']=[{'all':!![]}];}return db[_0x66d3('0x2d')][_0x66d3('0x41')](_0x59731b);})[_0x66d3('0x27')](function(_0x447ef4){_0x445b09[_0x66d3('0x42')]=_0x447ef4;return _0x445b09;})[_0x66d3('0x27')](respondWithFilteredResult(_0x40eeeb,_0x59731b))['catch'](handleError(_0x40eeeb,null));};exports[_0x66d3('0x43')]=function(_0x4bb31e,_0x504d2f){var _0x727afc={'raw':!![],'where':{'id':_0x4bb31e['params']['id']}},_0x3380a1={};_0x3380a1[_0x66d3('0x2f')]=_['keys'](db[_0x66d3('0x2d')]['rawAttributes']);_0x3380a1['query']=_[_0x66d3('0x31')](_0x4bb31e[_0x66d3('0x30')]);_0x3380a1[_0x66d3('0x32')]=_[_0x66d3('0x33')](_0x3380a1[_0x66d3('0x2f')],_0x3380a1[_0x66d3('0x30')]);_0x727afc[_0x66d3('0x34')]=_[_0x66d3('0x33')](_0x3380a1[_0x66d3('0x2f')],qs[_0x66d3('0x35')](_0x4bb31e[_0x66d3('0x30')]['fields']));_0x727afc['attributes']=_0x727afc[_0x66d3('0x34')][_0x66d3('0x36')]?_0x727afc[_0x66d3('0x34')]:_0x3380a1[_0x66d3('0x2f')];if(_0x4bb31e['query'][_0x66d3('0x40')]){_0x727afc['include']=[{'all':!![]}];}_0x727afc=_[_0x66d3('0x3c')]({},_0x727afc,_0x4bb31e[_0x66d3('0x3f')]);return db[_0x66d3('0x2d')][_0x66d3('0x44')](_0x727afc)[_0x66d3('0x27')](handleEntityNotFound(_0x504d2f,null))[_0x66d3('0x27')](respondWithResult(_0x504d2f,null))[_0x66d3('0x45')](handleError(_0x504d2f,null));};exports[_0x66d3('0x46')]=function(_0x235fec,_0x352dde){return db['SquareRecording'][_0x66d3('0x46')](_0x235fec['body'],{})[_0x66d3('0x27')](respondWithResult(_0x352dde,0xc9))[_0x66d3('0x45')](handleError(_0x352dde,null));};exports[_0x66d3('0x26')]=function(_0x11b7fe,_0x4c4f63){if(_0x11b7fe['body']['id']){delete _0x11b7fe['body']['id'];}return db[_0x66d3('0x2d')][_0x66d3('0x44')]({'where':{'id':_0x11b7fe[_0x66d3('0x47')]['id']}})[_0x66d3('0x27')](handleEntityNotFound(_0x4c4f63,null))['then'](saveUpdates(_0x11b7fe['body'],null))[_0x66d3('0x27')](respondWithResult(_0x4c4f63,null))['catch'](handleError(_0x4c4f63,null));};exports['download']=function(_0x3a6d48,_0x5248a8,_0x3bfa0d){var _0x40a0e2=require(_0x66d3('0x48'));var _0x5a5190=![];var _0x336942={};if(_0x3a6d48['query'][_0x66d3('0x3d')]&&_0x3a6d48[_0x66d3('0x30')][_0x66d3('0x3d')]===_0x66d3('0x49')){_0x336942['uniqueid']=_0x3a6d48[_0x66d3('0x47')]['id'];}else{_0x336942['id']=_0x3a6d48[_0x66d3('0x47')]['id'];}return db[_0x66d3('0x2d')][_0x66d3('0x44')]({'where':_0x336942,'attributes':['id',_0x66d3('0x4a'),_0x66d3('0x4b')],'raw':!![]})[_0x66d3('0x27')](handleEntityNotFound(_0x5248a8,null))['then'](function(_0x29a323){if(_0x29a323){var _0x5d710b=_0x29a323[_0x66d3('0x4a')];var _0x58bc9c=util['format'](_0x66d3('0x4c'),_0x5d710b);if(fs[_0x66d3('0x4d')](_0x58bc9c)){_0x5a5190=!![];return _0x40a0e2['decryptFile'](_0x58bc9c,_0x5d710b,config['secrets'][_0x66d3('0x4e')])[_0x66d3('0x27')](function(){return _0x29a323;});}return _0x29a323;}})[_0x66d3('0x27')](function(_0x63cf51){if(_0x63cf51){var _0x5ee899=_0x63cf51[_0x66d3('0x4a')];if(!fs['existsSync'](_0x5ee899)){throw new db['Sequelize'][(_0x66d3('0x4f'))](_0x66d3('0x50'));}if(_0x63cf51[_0x66d3('0x4b')]){return _0x5248a8['download'](_0x5ee899,_0x63cf51[_0x66d3('0x4b')]+path['extname'](_0x5ee899),function(){if(_0x5a5190){fs['unlink'](_0x5ee899);}});}else{return _0x5248a8[_0x66d3('0x51')](_0x5ee899,function(_0x56e437){if(_0x5a5190){fs['unlink'](_0x5ee899);}});}}})[_0x66d3('0x45')](function(_0x2b8f73){if(_0x2b8f73[_0x66d3('0x52')]===_0x66d3('0x50')){_0x5248a8[_0x66d3('0x1c')](0x194)['send']('Not\x20found');}else{return handleError(_0x5248a8,null);}});};exports[_0x66d3('0x53')]=function(_0x91b55,_0x3b198c){return db[_0x66d3('0x2d')][_0x66d3('0x44')]({'where':{'id':_0x91b55['params']['id']}})[_0x66d3('0x27')](function(_0x10d1ea){if(_[_0x66d3('0x54')](_0x10d1ea)){throw new ReferenceError(_0x66d3('0x55'));}return _0x10d1ea;})[_0x66d3('0x27')](function(_0x55929f){var _0x1684f5=_0x55929f[_0x66d3('0x4a')];logger[_0x66d3('0x56')](_0x66d3('0x57'),_0x1684f5);if(!_[_0x66d3('0x54')](_0x55929f[_0x66d3('0x4a')])&&fs[_0x66d3('0x4d')](_0x1684f5)){logger[_0x66d3('0x56')](_0x66d3('0x58')+_0x1684f5+_0x66d3('0x59'));fs['unlinkSync'](_0x1684f5);}_0x1684f5=_0x1684f5+'.cypher';if(!_[_0x66d3('0x54')](_0x55929f[_0x66d3('0x4a')])&&fs[_0x66d3('0x4d')](_0x1684f5)){logger['info'](_0x66d3('0x58')+_0x1684f5+_0x66d3('0x59'));fs[_0x66d3('0x5a')](_0x1684f5);}return _0x55929f;})[_0x66d3('0x27')](function(_0xa959a9){if(!_0xa959a9)throw new InternalError();return _0xa959a9[_0x66d3('0x53')]();})[_0x66d3('0x27')](function(){_0x3b198c[_0x66d3('0x1c')](0xcc)['end']();})[_0x66d3('0x45')](handleError(_0x3b198c,null));};
\ No newline at end of file
index c47ca64..ea46774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4a=['define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x1cb51c,_0x49ae8c){var _0x27086b=function(_0x5b4a69){while(--_0x5b4a69){_0x1cb51c['push'](_0x1cb51c['shift']());}};_0x27086b(++_0x49ae8c);}(_0x2f4a,0x8f));var _0xa2f4=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x2f4a[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0xa2f4('0x0'));var util=require(_0xa2f4('0x1'));var logger=require(_0xa2f4('0x2'))(_0xa2f4('0x3'));var moment=require(_0xa2f4('0x4'));var BPromise=require(_0xa2f4('0x5'));var rp=require(_0xa2f4('0x6'));var fs=require('fs');var path=require(_0xa2f4('0x7'));var rimraf=require(_0xa2f4('0x8'));var config=require(_0xa2f4('0x9'));var attributes=require('./squareRecording.attributes');module[_0xa2f4('0xa')]=function(_0x3d4545,_0x37ccfa){return _0x3d4545[_0xa2f4('0xb')](_0xa2f4('0xc'),attributes,{'tableName':_0xa2f4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd9ce=['square_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./squareRecording.attributes','exports','define'];(function(_0x41074d,_0x19b20f){var _0x1f61b9=function(_0x34458c){while(--_0x34458c){_0x41074d['push'](_0x41074d['shift']());}};_0x1f61b9(++_0x19b20f);}(_0xd9ce,0xeb));var _0xed9c=function(_0x25ad30,_0x4d9cb8){_0x25ad30=_0x25ad30-0x0;var _0x97c45e=_0xd9ce[_0x25ad30];return _0x97c45e;};'use strict';var _=require(_0xed9c('0x0'));var util=require(_0xed9c('0x1'));var logger=require(_0xed9c('0x2'))(_0xed9c('0x3'));var moment=require(_0xed9c('0x4'));var BPromise=require(_0xed9c('0x5'));var rp=require(_0xed9c('0x6'));var fs=require('fs');var path=require(_0xed9c('0x7'));var rimraf=require('rimraf');var config=require(_0xed9c('0x8'));var attributes=require(_0xed9c('0x9'));module[_0xed9c('0xa')]=function(_0x154e9d,_0x3043a6){return _0x154e9d[_0xed9c('0xb')]('SquareRecording',attributes,{'tableName':_0xed9c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93f0d96..3bed524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ec1=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','request','info','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareRecording,\x20%s,\x20%s','message','catch','CreateSquareRecording','SquareRecording','create','options','raw','then','debug'];(function(_0x39e164,_0x2cb93b){var _0x13fa6b=function(_0x511cb2){while(--_0x511cb2){_0x39e164['push'](_0x39e164['shift']());}};_0x13fa6b(++_0x2cb93b);}(_0x8ec1,0x15e));var _0x18ec=function(_0x542e14,_0x5dfd4b){_0x542e14=_0x542e14-0x0;var _0xe3bbb=_0x8ec1[_0x542e14];return _0xe3bbb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x18ec('0x0'));var BPromise=require(_0x18ec('0x1'));var rs=require(_0x18ec('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x18ec('0x3'))['db'];var utils=require(_0x18ec('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x18ec('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x18ec('0x6')][_0x18ec('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4c5864,_0x4ea00b,_0x4c485a){return new BPromise(function(_0x100e9c,_0x281e1f){return client[_0x18ec('0x8')](_0x4c5864,_0x4c485a)['then'](function(_0x1259f2){logger[_0x18ec('0x9')]('SquareRecording,\x20%s,\x20%s',_0x4ea00b,_0x18ec('0xa'));logger['debug'](_0x18ec('0xb'),_0x4ea00b,'request\x20sent',JSON[_0x18ec('0xc')](_0x1259f2));if(_0x1259f2['error']){if(_0x1259f2[_0x18ec('0xd')][_0x18ec('0xe')]===0x1f4){logger[_0x18ec('0xd')](_0x18ec('0xf'),_0x4ea00b,_0x1259f2['error'][_0x18ec('0x10')]);return _0x281e1f(_0x1259f2['error']['message']);}logger['error'](_0x18ec('0xf'),_0x4ea00b,_0x1259f2[_0x18ec('0xd')][_0x18ec('0x10')]);return _0x100e9c(_0x1259f2['error']['message']);}else{logger[_0x18ec('0x9')](_0x18ec('0xf'),_0x4ea00b,_0x18ec('0xa'));_0x100e9c(_0x1259f2['result']['message']);}})[_0x18ec('0x11')](function(_0x5be0eb){logger[_0x18ec('0xd')](_0x18ec('0xf'),_0x4ea00b,_0x5be0eb);_0x281e1f(_0x5be0eb);});});}exports[_0x18ec('0x12')]=function(_0x3866b9){var _0x3e58dd=this;return new Promise(function(_0xbc2a57,_0x528cef){return db[_0x18ec('0x13')][_0x18ec('0x14')](_0x3866b9['body'],{'raw':_0x3866b9['options']?_0x3866b9[_0x18ec('0x15')][_0x18ec('0x16')]===undefined?!![]:![]:!![]})[_0x18ec('0x17')](function(_0x377eb3){logger['info'](_0x18ec('0x12'),_0x3866b9);logger[_0x18ec('0x18')](_0x18ec('0x12'),_0x3866b9,JSON[_0x18ec('0xc')](_0x377eb3));_0xbc2a57(_0x377eb3);})['catch'](function(_0x5e9819){logger[_0x18ec('0xd')](_0x18ec('0x12'),_0x5e9819['message'],_0x3866b9);_0x528cef(_0x3e58dd['error'](0x1f4,_0x5e9819[_0x18ec('0x10')]));});});};
\ No newline at end of file
+var _0x88de=['client','http','request','then','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','SquareRecording,\x20%s,\x20%s','CreateSquareRecording','SquareRecording','create','body','options','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x4fb10b,_0x5d2494){var _0x45f109=function(_0x2217d8){while(--_0x2217d8){_0x4fb10b['push'](_0x4fb10b['shift']());}};_0x45f109(++_0x5d2494);}(_0x88de,0x18e));var _0xe88d=function(_0x337eae,_0x53096d){_0x337eae=_0x337eae-0x0;var _0x41cd19=_0x88de[_0x337eae];return _0x41cd19;};'use strict';var _=require(_0xe88d('0x0'));var util=require('util');var moment=require(_0xe88d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe88d('0x2'));var db=require(_0xe88d('0x3'))['db'];var utils=require(_0xe88d('0x4'));var logger=require(_0xe88d('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe88d('0x6'));var client=jayson[_0xe88d('0x7')][_0xe88d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53f9ea,_0x98e845,_0x4c6d26){return new BPromise(function(_0xf11279,_0x2ca92e){return client[_0xe88d('0x9')](_0x53f9ea,_0x4c6d26)[_0xe88d('0xa')](function(_0x2960){logger['info']('SquareRecording,\x20%s,\x20%s',_0x98e845,'request\x20sent');logger[_0xe88d('0xb')](_0xe88d('0xc'),_0x98e845,_0xe88d('0xd'),JSON[_0xe88d('0xe')](_0x2960));if(_0x2960[_0xe88d('0xf')]){if(_0x2960[_0xe88d('0xf')][_0xe88d('0x10')]===0x1f4){logger['error']('SquareRecording,\x20%s,\x20%s',_0x98e845,_0x2960[_0xe88d('0xf')]['message']);return _0x2ca92e(_0x2960[_0xe88d('0xf')][_0xe88d('0x11')]);}logger['error']('SquareRecording,\x20%s,\x20%s',_0x98e845,_0x2960[_0xe88d('0xf')][_0xe88d('0x11')]);return _0xf11279(_0x2960[_0xe88d('0xf')][_0xe88d('0x11')]);}else{logger[_0xe88d('0x12')]('SquareRecording,\x20%s,\x20%s',_0x98e845,_0xe88d('0xd'));_0xf11279(_0x2960[_0xe88d('0x13')][_0xe88d('0x11')]);}})[_0xe88d('0x14')](function(_0x20dad4){logger[_0xe88d('0xf')](_0xe88d('0x15'),_0x98e845,_0x20dad4);_0x2ca92e(_0x20dad4);});});}exports[_0xe88d('0x16')]=function(_0x3fc1a1){var _0x3bbe6d=this;return new Promise(function(_0x2d1e22,_0x4ea0b2){return db[_0xe88d('0x17')][_0xe88d('0x18')](_0x3fc1a1[_0xe88d('0x19')],{'raw':_0x3fc1a1[_0xe88d('0x1a')]?_0x3fc1a1[_0xe88d('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xe88d('0xa')](function(_0x585504){logger[_0xe88d('0x12')](_0xe88d('0x16'),_0x3fc1a1);logger[_0xe88d('0xb')](_0xe88d('0x16'),_0x3fc1a1,JSON[_0xe88d('0xe')](_0x585504));_0x2d1e22(_0x585504);})['catch'](function(_0x3989d2){logger[_0xe88d('0xf')]('CreateSquareRecording',_0x3989d2[_0xe88d('0x11')],_0x3fc1a1);_0x4ea0b2(_0x3bbe6d['error'](0x1f4,_0x3989d2[_0xe88d('0x11')]));});});};
\ No newline at end of file
index 49987cc..1eacb16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x575584,_0x1ad023){var _0x5155de=function(_0x373cf6){while(--_0x373cf6){_0x575584['push'](_0x575584['shift']());}};_0x5155de(++_0x1ad023);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x24572a,_0x3a73fc){var _0x22788f=function(_0x1622e0){while(--_0x1622e0){_0x24572a['push'](_0x24572a['shift']());}};_0x22788f(++_0x3a73fc);}(_0xe706,0xa3));var _0x6e70=function(_0x4d3a2b,_0x32a224){_0x4d3a2b=_0x4d3a2b-0x0;var _0xdd32c8=_0xe706[_0x4d3a2b];return _0xdd32c8;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index 58f7f3a..e666fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b5e=['BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x4dc20f,_0xcd0e35){var _0x3cf77d=function(_0x4ef817){while(--_0x4ef817){_0x4dc20f['push'](_0x4dc20f['shift']());}};_0x3cf77d(++_0xcd0e35);}(_0x2b5e,0xfb));var _0xe2b5=function(_0x2d08c5,_0x2b19f1){_0x2d08c5=_0x2d08c5-0x0;var _0x5c71b1=_0x2b5e[_0x2d08c5];return _0x5c71b1;};'use strict';var Sequelize=require(_0xe2b5('0x0'));module[_0xe2b5('0x1')]={'network':{'type':Sequelize[_0xe2b5('0x2')]},'network_script':{'type':Sequelize[_0xe2b5('0x2')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xe2b5('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xe2b5('0x2')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xe2b5('0x2')]},'callingpres':{'type':Sequelize[_0xe2b5('0x2')]},'callingani2':{'type':Sequelize[_0xe2b5('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xe2b5('0x2')]},'dnid':{'type':Sequelize[_0xe2b5('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xe2b5('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xe2b5('0x2')]},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xe2b5('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xe2b5('0x3')]},'leaveAt':{'type':Sequelize[_0xe2b5('0x3')]},'bot':{'type':Sequelize[_0xe2b5('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x2b5e=['STRING','DATE','exports'];(function(_0x52a862,_0x474c09){var _0x544829=function(_0x3188d7){while(--_0x3188d7){_0x52a862['push'](_0x52a862['shift']());}};_0x544829(++_0x474c09);}(_0x2b5e,0x131));var _0xe2b5=function(_0x5dea52,_0x95e1b8){_0x5dea52=_0x5dea52-0x0;var _0x4e07ad=_0x2b5e[_0x5dea52];return _0x4e07ad;};'use strict';var Sequelize=require('sequelize');module[_0xe2b5('0x0')]={'network':{'type':Sequelize[_0xe2b5('0x1')]},'network_script':{'type':Sequelize[_0xe2b5('0x1')]},'request':{'type':Sequelize[_0xe2b5('0x1')]},'channel':{'type':Sequelize[_0xe2b5('0x1')]},'language':{'type':Sequelize[_0xe2b5('0x1')]},'type':{'type':Sequelize[_0xe2b5('0x1')]},'uniqueid':{'type':Sequelize[_0xe2b5('0x1')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xe2b5('0x1')]},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize[_0xe2b5('0x1')]},'callingani2':{'type':Sequelize[_0xe2b5('0x1')]},'callington':{'type':Sequelize[_0xe2b5('0x1')]},'callingtns':{'type':Sequelize[_0xe2b5('0x1')]},'dnid':{'type':Sequelize[_0xe2b5('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xe2b5('0x1')]},'extension':{'type':Sequelize[_0xe2b5('0x1')]},'priority':{'type':Sequelize[_0xe2b5('0x1')]},'enhanced':{'type':Sequelize[_0xe2b5('0x1')]},'accountcode':{'type':Sequelize[_0xe2b5('0x1')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0xe2b5('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xe2b5('0x2')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 2cc2396..275dcb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bb1=['error','name','SquareReport','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','count','limit','status','set','Content-Range','json','save','update','then'];(function(_0x2aa4e8,_0x1209f8){var _0x4dfde8=function(_0x4bcbeb){while(--_0x4bcbeb){_0x2aa4e8['push'](_0x2aa4e8['shift']());}};_0x4dfde8(++_0x1209f8);}(_0x7bb1,0xfe));var _0x17bb=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x7bb1[_0x278e3c];return _0x3e2d9b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x17bb('0x0'));var zipdir=require(_0x17bb('0x1'));var jsonpatch=require(_0x17bb('0x2'));var rp=require(_0x17bb('0x3'));var moment=require(_0x17bb('0x4'));var BPromise=require(_0x17bb('0x5'));var Mustache=require(_0x17bb('0x6'));var util=require(_0x17bb('0x7'));var path=require(_0x17bb('0x8'));var sox=require(_0x17bb('0x9'));var csv=require(_0x17bb('0xa'));var ejs=require(_0x17bb('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x17bb('0xc'));var squel=require(_0x17bb('0xd'));var crypto=require(_0x17bb('0xe'));var jsforce=require(_0x17bb('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x17bb('0xa'));var querystring=require(_0x17bb('0x10'));var Papa=require(_0x17bb('0x11'));var Redis=require(_0x17bb('0x12'));var authService=require(_0x17bb('0x13'));var qs=require(_0x17bb('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x17bb('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x17bb('0x16'));var config=require(_0x17bb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x17bb('0x18'))['db'];function respondWithStatusCode(_0x23e4a8,_0xf46d0d){_0xf46d0d=_0xf46d0d||0xcc;return function(_0x52b009){if(_0x52b009){return _0x23e4a8[_0x17bb('0x19')](_0xf46d0d);}return _0x23e4a8['status'](_0xf46d0d)[_0x17bb('0x1a')]();};}function respondWithResult(_0x2e3315,_0x39bc12){_0x39bc12=_0x39bc12||0xc8;return function(_0x3092dd){if(_0x3092dd){return _0x2e3315['status'](_0x39bc12)['json'](_0x3092dd);}};}function respondWithFilteredResult(_0x2acb11,_0xcc822d){return function(_0x361bfb){if(_0x361bfb){var _0x509a26=typeof _0xcc822d[_0x17bb('0x1b')]==='undefined'&&typeof _0xcc822d['limit']===_0x17bb('0x1c');var _0x12c4f6=_0x361bfb[_0x17bb('0x1d')];var _0x3b2904=_0x509a26?0x0:_0xcc822d['offset'];var _0x521488=_0x509a26?_0x361bfb['count']:_0xcc822d[_0x17bb('0x1b')]+_0xcc822d[_0x17bb('0x1e')];var _0x570c20;if(_0x521488>=_0x12c4f6){_0x521488=_0x12c4f6;_0x570c20=0xc8;}else{_0x570c20=0xce;}_0x2acb11[_0x17bb('0x1f')](_0x570c20);return _0x2acb11[_0x17bb('0x20')](_0x17bb('0x21'),_0x3b2904+'-'+_0x521488+'/'+_0x12c4f6)[_0x17bb('0x22')](_0x361bfb);}return null;};}function patchUpdates(_0x3a9da1){return function(_0x2b6321){try{jsonpatch['apply'](_0x2b6321,_0x3a9da1,!![]);}catch(_0x4e9860){return BPromise['reject'](_0x4e9860);}return _0x2b6321[_0x17bb('0x23')]();};}function saveUpdates(_0x4be3d3,_0x59bfe7){return function(_0x583950){if(_0x583950){return _0x583950[_0x17bb('0x24')](_0x4be3d3)[_0x17bb('0x25')](function(_0x3e18c1){return _0x3e18c1;});}return null;};}function removeEntity(_0x597289,_0x48448a){return function(_0x53618e){if(_0x53618e){return _0x53618e['destroy']()[_0x17bb('0x25')](function(){_0x597289[_0x17bb('0x1f')](0xcc)[_0x17bb('0x1a')]();});}};}function handleEntityNotFound(_0x20c735,_0x326f08){return function(_0x5736cb){if(!_0x5736cb){_0x20c735[_0x17bb('0x19')](0x194);}return _0x5736cb;};}function handleError(_0x5ae26e,_0x2c84e1){_0x2c84e1=_0x2c84e1||0x1f4;return function(_0x25bd5b){logger[_0x17bb('0x26')](_0x25bd5b['stack']);if(_0x25bd5b['name']){delete _0x25bd5b[_0x17bb('0x27')];}_0x5ae26e[_0x17bb('0x1f')](_0x2c84e1)['send'](_0x25bd5b);};}exports['index']=function(_0x13623b,_0x5bf488){var _0x545f60={},_0xaab34a={},_0x48bc7f={'count':0x0,'rows':[]};var _0x488cf6=_['map'](db[_0x17bb('0x28')]['rawAttributes'],function(_0x2e37a6){return{'name':_0x2e37a6[_0x17bb('0x29')],'type':_0x2e37a6[_0x17bb('0x2a')][_0x17bb('0x2b')]};});_0xaab34a[_0x17bb('0x2c')]=_[_0x17bb('0x2d')](_0x488cf6,_0x17bb('0x27'));_0xaab34a[_0x17bb('0x2e')]=_[_0x17bb('0x2f')](_0x13623b[_0x17bb('0x2e')]);_0xaab34a[_0x17bb('0x30')]=_[_0x17bb('0x31')](_0xaab34a[_0x17bb('0x2c')],_0xaab34a[_0x17bb('0x2e')]);_0x545f60['attributes']=_[_0x17bb('0x31')](_0xaab34a[_0x17bb('0x2c')],qs['fields'](_0x13623b[_0x17bb('0x2e')][_0x17bb('0x32')]));_0x545f60[_0x17bb('0x33')]=_0x545f60[_0x17bb('0x33')][_0x17bb('0x34')]?_0x545f60['attributes']:_0xaab34a['model'];if(!_0x13623b[_0x17bb('0x2e')][_0x17bb('0x35')](_0x17bb('0x36'))){_0x545f60['limit']=qs[_0x17bb('0x1e')](_0x13623b['query']['limit']);_0x545f60[_0x17bb('0x1b')]=qs[_0x17bb('0x1b')](_0x13623b[_0x17bb('0x2e')][_0x17bb('0x1b')]);}_0x545f60['order']=qs[_0x17bb('0x37')](_0x13623b[_0x17bb('0x2e')][_0x17bb('0x37')]);_0x545f60[_0x17bb('0x38')]=qs['filters'](_[_0x17bb('0x39')](_0x13623b['query'],_0xaab34a[_0x17bb('0x30')]),_0x488cf6);if(_0x13623b[_0x17bb('0x2e')][_0x17bb('0x3a')]){_0x545f60[_0x17bb('0x38')]=_[_0x17bb('0x3b')](_0x545f60[_0x17bb('0x38')],{'$or':_[_0x17bb('0x2d')](_0x488cf6,function(_0x1705fa){if(_0x1705fa[_0x17bb('0x2a')]!==_0x17bb('0x3c')){var _0x57b90b={};_0x57b90b[_0x1705fa[_0x17bb('0x27')]]={'$like':'%'+_0x13623b[_0x17bb('0x2e')][_0x17bb('0x3a')]+'%'};return _0x57b90b;}})});}_0x545f60=_[_0x17bb('0x3b')]({},_0x545f60,_0x13623b[_0x17bb('0x3d')]);var _0xd75789={'where':_0x545f60[_0x17bb('0x38')]};return db[_0x17bb('0x28')][_0x17bb('0x1d')](_0xd75789)[_0x17bb('0x25')](function(_0x12466c){_0x48bc7f[_0x17bb('0x1d')]=_0x12466c;if(_0x13623b[_0x17bb('0x2e')][_0x17bb('0x3e')]){_0x545f60[_0x17bb('0x3f')]=[{'all':!![]}];}return db[_0x17bb('0x28')][_0x17bb('0x40')](_0x545f60);})['then'](function(_0x218bbf){_0x48bc7f[_0x17bb('0x41')]=_0x218bbf;return _0x48bc7f;})['then'](respondWithFilteredResult(_0x5bf488,_0x545f60))[_0x17bb('0x42')](handleError(_0x5bf488,null));};exports['show']=function(_0x4882d2,_0xcd7c54){var _0x5a48d4={'raw':!![],'where':{'id':_0x4882d2[_0x17bb('0x43')]['id']}},_0xb375c1={};_0xb375c1[_0x17bb('0x2c')]=_[_0x17bb('0x2f')](db[_0x17bb('0x28')]['rawAttributes']);_0xb375c1[_0x17bb('0x2e')]=_[_0x17bb('0x2f')](_0x4882d2[_0x17bb('0x2e')]);_0xb375c1[_0x17bb('0x30')]=_[_0x17bb('0x31')](_0xb375c1['model'],_0xb375c1[_0x17bb('0x2e')]);_0x5a48d4[_0x17bb('0x33')]=_[_0x17bb('0x31')](_0xb375c1['model'],qs[_0x17bb('0x32')](_0x4882d2[_0x17bb('0x2e')]['fields']));_0x5a48d4[_0x17bb('0x33')]=_0x5a48d4[_0x17bb('0x33')][_0x17bb('0x34')]?_0x5a48d4[_0x17bb('0x33')]:_0xb375c1[_0x17bb('0x2c')];if(_0x4882d2[_0x17bb('0x2e')][_0x17bb('0x3e')]){_0x5a48d4['include']=[{'all':!![]}];}_0x5a48d4=_[_0x17bb('0x3b')]({},_0x5a48d4,_0x4882d2['options']);return db['SquareReport'][_0x17bb('0x44')](_0x5a48d4)['then'](handleEntityNotFound(_0xcd7c54,null))[_0x17bb('0x25')](respondWithResult(_0xcd7c54,null))[_0x17bb('0x42')](handleError(_0xcd7c54,null));};exports[_0x17bb('0x45')]=function(_0x3685ee,_0x375540){return db[_0x17bb('0x28')][_0x17bb('0x45')](_0x3685ee[_0x17bb('0x46')],{})[_0x17bb('0x25')](respondWithResult(_0x375540,0xc9))[_0x17bb('0x42')](handleError(_0x375540,null));};exports[_0x17bb('0x24')]=function(_0x262542,_0x53c2be){if(_0x262542['body']['id']){delete _0x262542['body']['id'];}return db[_0x17bb('0x28')]['find']({'where':{'id':_0x262542[_0x17bb('0x43')]['id']}})['then'](handleEntityNotFound(_0x53c2be,null))[_0x17bb('0x25')](saveUpdates(_0x262542[_0x17bb('0x46')],null))[_0x17bb('0x25')](respondWithResult(_0x53c2be,null))[_0x17bb('0x42')](handleError(_0x53c2be,null));};exports[_0x17bb('0x47')]=function(_0x5c49b4,_0x6044bf){return db[_0x17bb('0x28')][_0x17bb('0x44')]({'where':{'id':_0x5c49b4[_0x17bb('0x43')]['id']}})[_0x17bb('0x25')](handleEntityNotFound(_0x6044bf,null))[_0x17bb('0x25')](removeEntity(_0x6044bf,null))['catch'](handleError(_0x6044bf,null));};exports['describe']=function(_0x4cd747,_0x19969f){return db[_0x17bb('0x28')][_0x17bb('0x48')]()['then'](respondWithResult(_0x19969f,null))[_0x17bb('0x42')](handleError(_0x19969f,null));};
\ No newline at end of file
+var _0x581c=['update','destroy','then','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','filter','where','merge','include','rows','catch','show','params','includeAll','options','find','create','body','describe','eml-format','zip-dir','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','count','offset','set','Content-Range','json','reject','save'];(function(_0x5a0e2f,_0x9292dd){var _0xc7c197=function(_0xb57e91){while(--_0xb57e91){_0x5a0e2f['push'](_0x5a0e2f['shift']());}};_0xc7c197(++_0x9292dd);}(_0x581c,0xb6));var _0xc581=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x581c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc581('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc581('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc581('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc581('0x3'));var sox=require(_0xc581('0x4'));var csv=require(_0xc581('0x5'));var ejs=require(_0xc581('0x6'));var fs=require('fs');var fs_extra=require(_0xc581('0x7'));var _=require(_0xc581('0x8'));var squel=require(_0xc581('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc581('0xa'));var toCsv=require(_0xc581('0x5'));var querystring=require(_0xc581('0xb'));var Papa=require(_0xc581('0xc'));var Redis=require(_0xc581('0xd'));var authService=require(_0xc581('0xe'));var qs=require(_0xc581('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc581('0x10'));var logger=require(_0xc581('0x11'))('api');var utils=require(_0xc581('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xc581('0x13'));var db=require(_0xc581('0x14'))['db'];function respondWithStatusCode(_0xe29695,_0x12d138){_0x12d138=_0x12d138||0xcc;return function(_0x5534e2){if(_0x5534e2){return _0xe29695[_0xc581('0x15')](_0x12d138);}return _0xe29695[_0xc581('0x16')](_0x12d138)[_0xc581('0x17')]();};}function respondWithResult(_0x77f23f,_0x40c8a6){_0x40c8a6=_0x40c8a6||0xc8;return function(_0x5f1bd9){if(_0x5f1bd9){return _0x77f23f[_0xc581('0x16')](_0x40c8a6)['json'](_0x5f1bd9);}};}function respondWithFilteredResult(_0x1e3961,_0x24bd9e){return function(_0x348618){if(_0x348618){var _0x5bb3a8=typeof _0x24bd9e['offset']==='undefined'&&typeof _0x24bd9e['limit']==='undefined';var _0x18f8fb=_0x348618['count'];var _0x4c9056=_0x5bb3a8?0x0:_0x24bd9e['offset'];var _0x420ef5=_0x5bb3a8?_0x348618[_0xc581('0x18')]:_0x24bd9e[_0xc581('0x19')]+_0x24bd9e['limit'];var _0x5cc872;if(_0x420ef5>=_0x18f8fb){_0x420ef5=_0x18f8fb;_0x5cc872=0xc8;}else{_0x5cc872=0xce;}_0x1e3961[_0xc581('0x16')](_0x5cc872);return _0x1e3961[_0xc581('0x1a')](_0xc581('0x1b'),_0x4c9056+'-'+_0x420ef5+'/'+_0x18f8fb)[_0xc581('0x1c')](_0x348618);}return null;};}function patchUpdates(_0x9c452c){return function(_0xc3f5e6){try{jsonpatch['apply'](_0xc3f5e6,_0x9c452c,!![]);}catch(_0x1d69e6){return BPromise[_0xc581('0x1d')](_0x1d69e6);}return _0xc3f5e6[_0xc581('0x1e')]();};}function saveUpdates(_0x2091b5,_0x5b768a){return function(_0x1c757e){if(_0x1c757e){return _0x1c757e[_0xc581('0x1f')](_0x2091b5)['then'](function(_0x41c2f8){return _0x41c2f8;});}return null;};}function removeEntity(_0x501bbd,_0x37f2c0){return function(_0x538037){if(_0x538037){return _0x538037[_0xc581('0x20')]()[_0xc581('0x21')](function(){_0x501bbd[_0xc581('0x16')](0xcc)[_0xc581('0x17')]();});}};}function handleEntityNotFound(_0x205794,_0x3aced5){return function(_0x4f8849){if(!_0x4f8849){_0x205794[_0xc581('0x15')](0x194);}return _0x4f8849;};}function handleError(_0xb99486,_0x1c76f4){_0x1c76f4=_0x1c76f4||0x1f4;return function(_0x544d8e){logger['error'](_0x544d8e[_0xc581('0x22')]);if(_0x544d8e[_0xc581('0x23')]){delete _0x544d8e[_0xc581('0x23')];}_0xb99486['status'](_0x1c76f4)[_0xc581('0x24')](_0x544d8e);};}exports[_0xc581('0x25')]=function(_0x33677e,_0x39658b){var _0x2565cf={},_0x5600aa={},_0x1a80cd={'count':0x0,'rows':[]};var _0x1e9877=_[_0xc581('0x26')](db[_0xc581('0x27')][_0xc581('0x28')],function(_0x461027){return{'name':_0x461027[_0xc581('0x29')],'type':_0x461027[_0xc581('0x2a')][_0xc581('0x2b')]};});_0x5600aa[_0xc581('0x2c')]=_[_0xc581('0x26')](_0x1e9877,_0xc581('0x23'));_0x5600aa['query']=_[_0xc581('0x2d')](_0x33677e[_0xc581('0x2e')]);_0x5600aa[_0xc581('0x2f')]=_['intersection'](_0x5600aa['model'],_0x5600aa[_0xc581('0x2e')]);_0x2565cf[_0xc581('0x30')]=_[_0xc581('0x31')](_0x5600aa['model'],qs[_0xc581('0x32')](_0x33677e['query'][_0xc581('0x32')]));_0x2565cf['attributes']=_0x2565cf['attributes'][_0xc581('0x33')]?_0x2565cf[_0xc581('0x30')]:_0x5600aa['model'];if(!_0x33677e[_0xc581('0x2e')][_0xc581('0x34')](_0xc581('0x35'))){_0x2565cf[_0xc581('0x36')]=qs[_0xc581('0x36')](_0x33677e[_0xc581('0x2e')]['limit']);_0x2565cf[_0xc581('0x19')]=qs[_0xc581('0x19')](_0x33677e[_0xc581('0x2e')]['offset']);}_0x2565cf[_0xc581('0x37')]=qs['sort'](_0x33677e['query'][_0xc581('0x38')]);_0x2565cf['where']=qs[_0xc581('0x2f')](_['pick'](_0x33677e['query'],_0x5600aa[_0xc581('0x2f')]),_0x1e9877);if(_0x33677e[_0xc581('0x2e')][_0xc581('0x39')]){_0x2565cf[_0xc581('0x3a')]=_[_0xc581('0x3b')](_0x2565cf[_0xc581('0x3a')],{'$or':_[_0xc581('0x26')](_0x1e9877,function(_0x1cdd7f){if(_0x1cdd7f[_0xc581('0x2a')]!=='VIRTUAL'){var _0x1a4d0d={};_0x1a4d0d[_0x1cdd7f['name']]={'$like':'%'+_0x33677e['query']['filter']+'%'};return _0x1a4d0d;}})});}_0x2565cf=_[_0xc581('0x3b')]({},_0x2565cf,_0x33677e['options']);var _0x2784ce={'where':_0x2565cf[_0xc581('0x3a')]};return db[_0xc581('0x27')][_0xc581('0x18')](_0x2784ce)[_0xc581('0x21')](function(_0x57571a){_0x1a80cd['count']=_0x57571a;if(_0x33677e[_0xc581('0x2e')]['includeAll']){_0x2565cf[_0xc581('0x3c')]=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x2565cf);})['then'](function(_0x453203){_0x1a80cd[_0xc581('0x3d')]=_0x453203;return _0x1a80cd;})[_0xc581('0x21')](respondWithFilteredResult(_0x39658b,_0x2565cf))[_0xc581('0x3e')](handleError(_0x39658b,null));};exports[_0xc581('0x3f')]=function(_0xc91369,_0x409a34){var _0x58e1ae={'raw':!![],'where':{'id':_0xc91369[_0xc581('0x40')]['id']}},_0x14bcb7={};_0x14bcb7[_0xc581('0x2c')]=_['keys'](db['SquareReport'][_0xc581('0x28')]);_0x14bcb7[_0xc581('0x2e')]=_[_0xc581('0x2d')](_0xc91369[_0xc581('0x2e')]);_0x14bcb7[_0xc581('0x2f')]=_[_0xc581('0x31')](_0x14bcb7[_0xc581('0x2c')],_0x14bcb7['query']);_0x58e1ae['attributes']=_['intersection'](_0x14bcb7[_0xc581('0x2c')],qs['fields'](_0xc91369[_0xc581('0x2e')]['fields']));_0x58e1ae['attributes']=_0x58e1ae[_0xc581('0x30')][_0xc581('0x33')]?_0x58e1ae[_0xc581('0x30')]:_0x14bcb7[_0xc581('0x2c')];if(_0xc91369['query'][_0xc581('0x41')]){_0x58e1ae['include']=[{'all':!![]}];}_0x58e1ae=_[_0xc581('0x3b')]({},_0x58e1ae,_0xc91369[_0xc581('0x42')]);return db[_0xc581('0x27')][_0xc581('0x43')](_0x58e1ae)['then'](handleEntityNotFound(_0x409a34,null))['then'](respondWithResult(_0x409a34,null))['catch'](handleError(_0x409a34,null));};exports[_0xc581('0x44')]=function(_0x3e8cf2,_0x12679c){return db[_0xc581('0x27')][_0xc581('0x44')](_0x3e8cf2[_0xc581('0x45')],{})['then'](respondWithResult(_0x12679c,0xc9))[_0xc581('0x3e')](handleError(_0x12679c,null));};exports[_0xc581('0x1f')]=function(_0x40c200,_0x47af72){if(_0x40c200[_0xc581('0x45')]['id']){delete _0x40c200[_0xc581('0x45')]['id'];}return db[_0xc581('0x27')]['find']({'where':{'id':_0x40c200[_0xc581('0x40')]['id']}})[_0xc581('0x21')](handleEntityNotFound(_0x47af72,null))[_0xc581('0x21')](saveUpdates(_0x40c200['body'],null))['then'](respondWithResult(_0x47af72,null))[_0xc581('0x3e')](handleError(_0x47af72,null));};exports['destroy']=function(_0x3a6607,_0x1496c9){return db[_0xc581('0x27')][_0xc581('0x43')]({'where':{'id':_0x3a6607['params']['id']}})[_0xc581('0x21')](handleEntityNotFound(_0x1496c9,null))[_0xc581('0x21')](removeEntity(_0x1496c9,null))['catch'](handleError(_0x1496c9,null));};exports['describe']=function(_0x35a514,_0x37374c){return db['SquareReport'][_0xc581('0x46')]()[_0xc581('0x21')](respondWithResult(_0x37374c,null))[_0xc581('0x3e')](handleError(_0x37374c,null));};
\ No newline at end of file
index cdd8277..3770e6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1943=['define','uid_pname','uniqueid','project_name','leaveAt','lodash','util','api','moment','bluebird','path','rimraf','./squareReport.attributes','exports'];(function(_0x534b78,_0x452072){var _0x5661f7=function(_0x34aacb){while(--_0x34aacb){_0x534b78['push'](_0x534b78['shift']());}};_0x5661f7(++_0x452072);}(_0x1943,0x10f));var _0x3194=function(_0x346daa,_0x4d997e){_0x346daa=_0x346daa-0x0;var _0x32be85=_0x1943[_0x346daa];return _0x32be85;};'use strict';var _=require(_0x3194('0x0'));var util=require(_0x3194('0x1'));var logger=require('../../config/logger')(_0x3194('0x2'));var moment=require(_0x3194('0x3'));var BPromise=require(_0x3194('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3194('0x5'));var rimraf=require(_0x3194('0x6'));var config=require('../../config/environment');var attributes=require(_0x3194('0x7'));module[_0x3194('0x8')]=function(_0x5306c4,_0x224fbc){return _0x5306c4[_0x3194('0x9')]('SquareReport',attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x3194('0xa'),'fields':[_0x3194('0xb'),_0x3194('0xc')]},{'name':_0x3194('0xd'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x186b=['util','bluebird','path','../../config/environment','exports','define','report_square','project_name','leaveAt'];(function(_0x305c31,_0x466b17){var _0x17f39f=function(_0x53ae03){while(--_0x53ae03){_0x305c31['push'](_0x305c31['shift']());}};_0x17f39f(++_0x466b17);}(_0x186b,0xea));var _0xb186=function(_0x28b7ab,_0x16a764){_0x28b7ab=_0x28b7ab-0x0;var _0x56791b=_0x186b[_0x28b7ab];return _0x56791b;};'use strict';var _=require('lodash');var util=require(_0xb186('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xb186('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb186('0x2'));var rimraf=require('rimraf');var config=require(_0xb186('0x3'));var attributes=require('./squareReport.attributes');module[_0xb186('0x4')]=function(_0x2cd17b,_0x200fe9){return _0x2cd17b[_0xb186('0x5')]('SquareReport',attributes,{'tableName':_0xb186('0x6'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':['uniqueid',_0xb186('0x7')]},{'name':'leaveAt','fields':[_0xb186('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 37fa3de..a1a440d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5367=['request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','SquareReport,\x20%s,\x20%s','message','catch','SquareReport','body','options','CreateSquareReport','UpdateSquareReport','update','raw','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info'];(function(_0x25248b,_0x3c8491){var _0x509939=function(_0x457a27){while(--_0x457a27){_0x25248b['push'](_0x25248b['shift']());}};_0x509939(++_0x3c8491);}(_0x5367,0x13c));var _0x7536=function(_0x4a3d7b,_0x2d022b){_0x4a3d7b=_0x4a3d7b-0x0;var _0x38c5b2=_0x5367[_0x4a3d7b];return _0x38c5b2;};'use strict';var _=require(_0x7536('0x0'));var util=require(_0x7536('0x1'));var moment=require(_0x7536('0x2'));var BPromise=require(_0x7536('0x3'));var rs=require(_0x7536('0x4'));var fs=require('fs');var Redis=require(_0x7536('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7536('0x6'));var logger=require(_0x7536('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7536('0x8'));var client=jayson[_0x7536('0x9')][_0x7536('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x58f4b4,_0x4cd7f8,_0x3644a6){return new BPromise(function(_0x85fade,_0x4a8a73){return client[_0x7536('0xb')](_0x58f4b4,_0x3644a6)[_0x7536('0xc')](function(_0x313c89){logger[_0x7536('0xd')]('SquareReport,\x20%s,\x20%s',_0x4cd7f8,_0x7536('0xe'));logger[_0x7536('0xf')](_0x7536('0x10'),_0x4cd7f8,_0x7536('0xe'),JSON[_0x7536('0x11')](_0x313c89));if(_0x313c89[_0x7536('0x12')]){if(_0x313c89['error']['code']===0x1f4){logger[_0x7536('0x12')](_0x7536('0x13'),_0x4cd7f8,_0x313c89[_0x7536('0x12')][_0x7536('0x14')]);return _0x4a8a73(_0x313c89['error'][_0x7536('0x14')]);}logger['error'](_0x7536('0x13'),_0x4cd7f8,_0x313c89[_0x7536('0x12')]['message']);return _0x85fade(_0x313c89[_0x7536('0x12')][_0x7536('0x14')]);}else{logger['info'](_0x7536('0x13'),_0x4cd7f8,_0x7536('0xe'));_0x85fade(_0x313c89['result'][_0x7536('0x14')]);}})[_0x7536('0x15')](function(_0x7abf6e){logger[_0x7536('0x12')](_0x7536('0x13'),_0x4cd7f8,_0x7abf6e);_0x4a8a73(_0x7abf6e);});});}exports['CreateSquareReport']=function(_0x6eb789){var _0x599b9b=this;return new Promise(function(_0x2593af,_0x4b0156){return db[_0x7536('0x16')]['create'](_0x6eb789[_0x7536('0x17')],{'raw':_0x6eb789[_0x7536('0x18')]?_0x6eb789['options']['raw']===undefined?!![]:![]:!![]})[_0x7536('0xc')](function(_0x3765f6){logger['info'](_0x7536('0x19'),_0x6eb789);logger[_0x7536('0xf')](_0x7536('0x19'),_0x6eb789,JSON[_0x7536('0x11')](_0x3765f6));_0x2593af(_0x3765f6);})[_0x7536('0x15')](function(_0x2bc76e){logger['error']('CreateSquareReport',_0x2bc76e[_0x7536('0x14')],_0x6eb789);_0x4b0156(_0x599b9b[_0x7536('0x12')](0x1f4,_0x2bc76e[_0x7536('0x14')]));});});};exports[_0x7536('0x1a')]=function(_0x4eb270){var _0x26482b=this;return new Promise(function(_0x52df0,_0x1c87e3){return db[_0x7536('0x16')][_0x7536('0x1b')](_0x4eb270[_0x7536('0x17')],{'raw':_0x4eb270[_0x7536('0x18')]?_0x4eb270['options'][_0x7536('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eb270['options']?_0x4eb270[_0x7536('0x18')]['where']||null:null,'attributes':_0x4eb270[_0x7536('0x18')]?_0x4eb270[_0x7536('0x18')]['attributes']||null:null,'limit':_0x4eb270[_0x7536('0x18')]?_0x4eb270[_0x7536('0x18')][_0x7536('0x1d')]||null:null})[_0x7536('0xc')](function(_0x218cbb){logger[_0x7536('0xd')](_0x7536('0x1a'),_0x4eb270);logger[_0x7536('0xf')](_0x7536('0x1a'),_0x4eb270,JSON[_0x7536('0x11')](_0x218cbb));_0x52df0(_0x218cbb);})[_0x7536('0x15')](function(_0xd90f87){logger[_0x7536('0x12')](_0x7536('0x1a'),_0xd90f87['message'],_0x4eb270);_0x1c87e3(_0x26482b[_0x7536('0x12')](0x1f4,_0xd90f87[_0x7536('0x14')]));});});};
\ No newline at end of file
+var _0x602e=['raw','CreateSquareReport','debug','UpdateSquareReport','where','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareReport','create','options'];(function(_0x277919,_0x170416){var _0x5f0cce=function(_0xe59e31){while(--_0xe59e31){_0x277919['push'](_0x277919['shift']());}};_0x5f0cce(++_0x170416);}(_0x602e,0x10e));var _0xe602=function(_0xb1b616,_0x3b9023){_0xb1b616=_0xb1b616-0x0;var _0x1259b0=_0x602e[_0xb1b616];return _0x1259b0;};'use strict';var _=require(_0xe602('0x0'));var util=require('util');var moment=require(_0xe602('0x1'));var BPromise=require(_0xe602('0x2'));var rs=require(_0xe602('0x3'));var fs=require('fs');var Redis=require(_0xe602('0x4'));var db=require(_0xe602('0x5'))['db'];var utils=require(_0xe602('0x6'));var logger=require('../../config/logger')(_0xe602('0x7'));var config=require(_0xe602('0x8'));var jayson=require(_0xe602('0x9'));var client=jayson[_0xe602('0xa')][_0xe602('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xad0edc,_0x2df9dd,_0x3db314){return new BPromise(function(_0x20d0fa,_0x2a4b35){return client[_0xe602('0xc')](_0xad0edc,_0x3db314)[_0xe602('0xd')](function(_0x8e793d){logger[_0xe602('0xe')](_0xe602('0xf'),_0x2df9dd,_0xe602('0x10'));logger['debug'](_0xe602('0x11'),_0x2df9dd,_0xe602('0x10'),JSON[_0xe602('0x12')](_0x8e793d));if(_0x8e793d[_0xe602('0x13')]){if(_0x8e793d['error'][_0xe602('0x14')]===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x2df9dd,_0x8e793d[_0xe602('0x13')][_0xe602('0x15')]);return _0x2a4b35(_0x8e793d[_0xe602('0x13')]['message']);}logger[_0xe602('0x13')](_0xe602('0xf'),_0x2df9dd,_0x8e793d['error']['message']);return _0x20d0fa(_0x8e793d['error'][_0xe602('0x15')]);}else{logger[_0xe602('0xe')]('SquareReport,\x20%s,\x20%s',_0x2df9dd,'request\x20sent');_0x20d0fa(_0x8e793d[_0xe602('0x16')][_0xe602('0x15')]);}})[_0xe602('0x17')](function(_0x1184e3){logger[_0xe602('0x13')]('SquareReport,\x20%s,\x20%s',_0x2df9dd,_0x1184e3);_0x2a4b35(_0x1184e3);});});}exports['CreateSquareReport']=function(_0x39c054){var _0x174096=this;return new Promise(function(_0x12b850,_0x358117){return db[_0xe602('0x18')][_0xe602('0x19')](_0x39c054['body'],{'raw':_0x39c054['options']?_0x39c054[_0xe602('0x1a')][_0xe602('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x5dda0c){logger['info'](_0xe602('0x1c'),_0x39c054);logger[_0xe602('0x1d')](_0xe602('0x1c'),_0x39c054,JSON['stringify'](_0x5dda0c));_0x12b850(_0x5dda0c);})[_0xe602('0x17')](function(_0x3f98b0){logger['error'](_0xe602('0x1c'),_0x3f98b0[_0xe602('0x15')],_0x39c054);_0x358117(_0x174096[_0xe602('0x13')](0x1f4,_0x3f98b0[_0xe602('0x15')]));});});};exports[_0xe602('0x1e')]=function(_0x89821d){var _0x5bb72d=this;return new Promise(function(_0x23b1f1,_0x173d93){return db['SquareReport']['update'](_0x89821d['body'],{'raw':_0x89821d[_0xe602('0x1a')]?_0x89821d[_0xe602('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x89821d[_0xe602('0x1a')]?_0x89821d[_0xe602('0x1a')][_0xe602('0x1f')]||null:null,'attributes':_0x89821d[_0xe602('0x1a')]?_0x89821d[_0xe602('0x1a')]['attributes']||null:null,'limit':_0x89821d[_0xe602('0x1a')]?_0x89821d[_0xe602('0x1a')][_0xe602('0x20')]||null:null})[_0xe602('0xd')](function(_0x44c037){logger[_0xe602('0xe')](_0xe602('0x1e'),_0x89821d);logger[_0xe602('0x1d')](_0xe602('0x1e'),_0x89821d,JSON['stringify'](_0x44c037));_0x23b1f1(_0x44c037);})['catch'](function(_0x3e9647){logger[_0xe602('0x13')](_0xe602('0x1e'),_0x3e9647[_0xe602('0x15')],_0x89821d);_0x173d93(_0x5bb72d[_0xe602('0x13')](0x1f4,_0x3e9647['message']));});});};
\ No newline at end of file
index 37991f7..e7d47cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39dc=['../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service'];(function(_0xa3c06b,_0x490f99){var _0x33aa1d=function(_0x23a88e){while(--_0x23a88e){_0xa3c06b['push'](_0xa3c06b['shift']());}};_0x33aa1d(++_0x490f99);}(_0x39dc,0x18a));var _0xc39d=function(_0x1bd51d,_0x222d0b){_0x1bd51d=_0x1bd51d-0x0;var _0x4e9e1d=_0x39dc[_0x1bd51d];return _0x4e9e1d;};'use strict';var multer=require('multer');var util=require(_0xc39d('0x0'));var path=require(_0xc39d('0x1'));var timeout=require(_0xc39d('0x2'));var express=require('express');var router=express[_0xc39d('0x3')]();var fs_extra=require(_0xc39d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc39d('0x5'));var config=require(_0xc39d('0x6'));var controller=require(_0xc39d('0x7'));router[_0xc39d('0x8')]('/',auth[_0xc39d('0x9')](),controller[_0xc39d('0xa')]);router[_0xc39d('0x8')](_0xc39d('0xb'),auth[_0xc39d('0x9')](),controller[_0xc39d('0xc')]);router[_0xc39d('0x8')](_0xc39d('0xd'),auth[_0xc39d('0x9')](),controller['show']);router[_0xc39d('0xe')]('/',auth[_0xc39d('0x9')](),controller[_0xc39d('0xf')]);router[_0xc39d('0x10')](_0xc39d('0xd'),auth[_0xc39d('0x9')](),controller[_0xc39d('0x11')]);router['delete']('/:id',auth[_0xc39d('0x9')](),controller[_0xc39d('0x12')]);module[_0xc39d('0x13')]=router;
\ No newline at end of file
+var _0x7248=['connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','update','destroy','exports','multer','path'];(function(_0x32d261,_0x62e439){var _0x43c9e3=function(_0x55b63d){while(--_0x55b63d){_0x32d261['push'](_0x32d261['shift']());}};_0x43c9e3(++_0x62e439);}(_0x7248,0x83));var _0x8724=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x7248[_0x9df060];return _0x338dfe;};'use strict';var multer=require(_0x8724('0x0'));var util=require('util');var path=require(_0x8724('0x1'));var timeout=require(_0x8724('0x2'));var express=require(_0x8724('0x3'));var router=express['Router']();var fs_extra=require(_0x8724('0x4'));var auth=require(_0x8724('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8724('0x6'));var controller=require(_0x8724('0x7'));router[_0x8724('0x8')]('/',auth[_0x8724('0x9')](),controller[_0x8724('0xa')]);router[_0x8724('0x8')](_0x8724('0xb'),auth[_0x8724('0x9')](),controller[_0x8724('0xc')]);router[_0x8724('0x8')](_0x8724('0xd'),auth[_0x8724('0x9')](),controller[_0x8724('0xe')]);router['post']('/',auth[_0x8724('0x9')](),controller[_0x8724('0xf')]);router['put'](_0x8724('0xd'),auth[_0x8724('0x9')](),controller[_0x8724('0x10')]);router['delete'](_0x8724('0xd'),auth[_0x8724('0x9')](),controller[_0x8724('0x11')]);module[_0x8724('0x12')]=router;
\ No newline at end of file
index 44d80b5..e590a5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59e5=['TEXT','STRING'];(function(_0x55da0c,_0x23780f){var _0x4fc256=function(_0x703fd5){while(--_0x703fd5){_0x55da0c['push'](_0x55da0c['shift']());}};_0x4fc256(++_0x23780f);}(_0x59e5,0x123));var _0x559e=function(_0x58b1b2,_0x58cdc2){_0x58b1b2=_0x58b1b2-0x0;var _0x230201=_0x59e5[_0x58b1b2];return _0x230201;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x559e('0x0')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x559e('0x0')]},'data':{'type':Sequelize[_0x559e('0x1')]},'project_name':{'type':Sequelize[_0x559e('0x0')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7fe8=['sequelize','exports','STRING','TEXT'];(function(_0x4ec13d,_0x358a8f){var _0x3c3fa7=function(_0x2615f6){while(--_0x2615f6){_0x4ec13d['push'](_0x4ec13d['shift']());}};_0x3c3fa7(++_0x358a8f);}(_0x7fe8,0xd8));var _0x87fe=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0x7fe8[_0x28aea5];return _0x6a55f9;};'use strict';var Sequelize=require(_0x87fe('0x0'));module[_0x87fe('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x87fe('0x2')]},'application':{'type':Sequelize[_0x87fe('0x2')]},'data':{'type':Sequelize[_0x87fe('0x3')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x87fe('0x2')]}};
\ No newline at end of file
index b77c334..21f146d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa16f=['jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','SquareDetailsReport','rawAttributes','fieldName','type','key','model','map','query','keys','fields','attributes','length','nolimit','limit','order','filters','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','body','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x1ede79,_0x4b3011){var _0x32da1f=function(_0x9e8bc6){while(--_0x9e8bc6){_0x1ede79['push'](_0x1ede79['shift']());}};_0x32da1f(++_0x4b3011);}(_0xa16f,0xd9));var _0xfa16=function(_0x4d3423,_0x159d30){_0x4d3423=_0x4d3423-0x0;var _0x2481e5=_0xa16f[_0x4d3423];return _0x2481e5;};'use strict';var emlformat=require(_0xfa16('0x0'));var rimraf=require(_0xfa16('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfa16('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfa16('0x3'));var Mustache=require(_0xfa16('0x4'));var util=require(_0xfa16('0x5'));var path=require(_0xfa16('0x6'));var sox=require(_0xfa16('0x7'));var csv=require(_0xfa16('0x8'));var ejs=require(_0xfa16('0x9'));var fs=require('fs');var fs_extra=require(_0xfa16('0xa'));var _=require(_0xfa16('0xb'));var squel=require(_0xfa16('0xc'));var crypto=require(_0xfa16('0xd'));var jsforce=require(_0xfa16('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xfa16('0x8'));var querystring=require(_0xfa16('0xf'));var Papa=require(_0xfa16('0x10'));var Redis=require('ioredis');var authService=require(_0xfa16('0x11'));var qs=require(_0xfa16('0x12'));var as=require(_0xfa16('0x13'));var hardwareService=require(_0xfa16('0x14'));var logger=require(_0xfa16('0x15'))(_0xfa16('0x16'));var utils=require(_0xfa16('0x17'));var config=require(_0xfa16('0x18'));var licenseUtil=require(_0xfa16('0x19'));var db=require(_0xfa16('0x1a'))['db'];function respondWithStatusCode(_0x25cc14,_0x51fc58){_0x51fc58=_0x51fc58||0xcc;return function(_0x3519d1){if(_0x3519d1){return _0x25cc14[_0xfa16('0x1b')](_0x51fc58);}return _0x25cc14[_0xfa16('0x1c')](_0x51fc58)[_0xfa16('0x1d')]();};}function respondWithResult(_0x3e94d4,_0x1a1b41){_0x1a1b41=_0x1a1b41||0xc8;return function(_0x580a23){if(_0x580a23){return _0x3e94d4[_0xfa16('0x1c')](_0x1a1b41)[_0xfa16('0x1e')](_0x580a23);}};}function respondWithFilteredResult(_0x29c30b,_0x7a0927){return function(_0x58a347){if(_0x58a347){var _0x2cee64=typeof _0x7a0927[_0xfa16('0x1f')]===_0xfa16('0x20')&&typeof _0x7a0927['limit']===_0xfa16('0x20');var _0x53fdb5=_0x58a347[_0xfa16('0x21')];var _0x3232dd=_0x2cee64?0x0:_0x7a0927[_0xfa16('0x1f')];var _0x546857=_0x2cee64?_0x58a347[_0xfa16('0x21')]:_0x7a0927['offset']+_0x7a0927['limit'];var _0x496bb4;if(_0x546857>=_0x53fdb5){_0x546857=_0x53fdb5;_0x496bb4=0xc8;}else{_0x496bb4=0xce;}_0x29c30b[_0xfa16('0x1c')](_0x496bb4);return _0x29c30b[_0xfa16('0x22')](_0xfa16('0x23'),_0x3232dd+'-'+_0x546857+'/'+_0x53fdb5)[_0xfa16('0x1e')](_0x58a347);}return null;};}function patchUpdates(_0x9570){return function(_0x2fcb7a){try{jsonpatch[_0xfa16('0x24')](_0x2fcb7a,_0x9570,!![]);}catch(_0x57db81){return BPromise[_0xfa16('0x25')](_0x57db81);}return _0x2fcb7a[_0xfa16('0x26')]();};}function saveUpdates(_0x112457,_0x4fc732){return function(_0x272d10){if(_0x272d10){return _0x272d10[_0xfa16('0x27')](_0x112457)[_0xfa16('0x28')](function(_0x5b557f){return _0x5b557f;});}return null;};}function removeEntity(_0xa502ab,_0x380a49){return function(_0x4479de){if(_0x4479de){return _0x4479de[_0xfa16('0x29')]()['then'](function(){_0xa502ab[_0xfa16('0x1c')](0xcc)[_0xfa16('0x1d')]();});}};}function handleEntityNotFound(_0x4b40d5,_0x3ba842){return function(_0xb75d07){if(!_0xb75d07){_0x4b40d5[_0xfa16('0x1b')](0x194);}return _0xb75d07;};}function handleError(_0x5bf9e0,_0x5d030d){_0x5d030d=_0x5d030d||0x1f4;return function(_0x3c54f2){logger[_0xfa16('0x2a')](_0x3c54f2[_0xfa16('0x2b')]);if(_0x3c54f2[_0xfa16('0x2c')]){delete _0x3c54f2[_0xfa16('0x2c')];}_0x5bf9e0[_0xfa16('0x1c')](_0x5d030d)['send'](_0x3c54f2);};}exports['index']=function(_0x323fb3,_0x2d1136){var _0x4a2ce3={},_0x433ca7={},_0x152e3e={'count':0x0,'rows':[]};var _0x50abde=_['map'](db[_0xfa16('0x2d')][_0xfa16('0x2e')],function(_0x1df9f7){return{'name':_0x1df9f7[_0xfa16('0x2f')],'type':_0x1df9f7[_0xfa16('0x30')][_0xfa16('0x31')]};});_0x433ca7[_0xfa16('0x32')]=_[_0xfa16('0x33')](_0x50abde,_0xfa16('0x2c'));_0x433ca7[_0xfa16('0x34')]=_[_0xfa16('0x35')](_0x323fb3['query']);_0x433ca7['filters']=_['intersection'](_0x433ca7[_0xfa16('0x32')],_0x433ca7[_0xfa16('0x34')]);_0x4a2ce3['attributes']=_['intersection'](_0x433ca7[_0xfa16('0x32')],qs['fields'](_0x323fb3[_0xfa16('0x34')][_0xfa16('0x36')]));_0x4a2ce3['attributes']=_0x4a2ce3[_0xfa16('0x37')][_0xfa16('0x38')]?_0x4a2ce3[_0xfa16('0x37')]:_0x433ca7['model'];if(!_0x323fb3[_0xfa16('0x34')]['hasOwnProperty'](_0xfa16('0x39'))){_0x4a2ce3['limit']=qs[_0xfa16('0x3a')](_0x323fb3[_0xfa16('0x34')][_0xfa16('0x3a')]);_0x4a2ce3['offset']=qs[_0xfa16('0x1f')](_0x323fb3[_0xfa16('0x34')]['offset']);}_0x4a2ce3[_0xfa16('0x3b')]=qs['sort'](_0x323fb3[_0xfa16('0x34')]['sort']);_0x4a2ce3['where']=qs[_0xfa16('0x3c')](_['pick'](_0x323fb3[_0xfa16('0x34')],_0x433ca7[_0xfa16('0x3c')]),_0x50abde);if(_0x323fb3[_0xfa16('0x34')][_0xfa16('0x3d')]){_0x4a2ce3[_0xfa16('0x3e')]=_[_0xfa16('0x3f')](_0x4a2ce3[_0xfa16('0x3e')],{'$or':_[_0xfa16('0x33')](_0x50abde,function(_0x256387){if(_0x256387['type']!==_0xfa16('0x40')){var _0x3fabf7={};_0x3fabf7[_0x256387[_0xfa16('0x2c')]]={'$like':'%'+_0x323fb3[_0xfa16('0x34')]['filter']+'%'};return _0x3fabf7;}})});}_0x4a2ce3=_['merge']({},_0x4a2ce3,_0x323fb3[_0xfa16('0x41')]);var _0x5aaf0a={'where':_0x4a2ce3[_0xfa16('0x3e')]};return db[_0xfa16('0x2d')]['count'](_0x5aaf0a)[_0xfa16('0x28')](function(_0x1f2602){_0x152e3e[_0xfa16('0x21')]=_0x1f2602;if(_0x323fb3[_0xfa16('0x34')][_0xfa16('0x42')]){_0x4a2ce3[_0xfa16('0x43')]=[{'all':!![]}];}return db[_0xfa16('0x2d')][_0xfa16('0x44')](_0x4a2ce3);})[_0xfa16('0x28')](function(_0xc48f12){_0x152e3e[_0xfa16('0x45')]=_0xc48f12;return _0x152e3e;})[_0xfa16('0x28')](respondWithFilteredResult(_0x2d1136,_0x4a2ce3))[_0xfa16('0x46')](handleError(_0x2d1136,null));};exports[_0xfa16('0x47')]=function(_0x37ca45,_0x30e67b){var _0x51f834={'raw':!![],'where':{'id':_0x37ca45[_0xfa16('0x48')]['id']}},_0x744bf5={};_0x744bf5['model']=_[_0xfa16('0x35')](db[_0xfa16('0x2d')][_0xfa16('0x2e')]);_0x744bf5['query']=_[_0xfa16('0x35')](_0x37ca45[_0xfa16('0x34')]);_0x744bf5[_0xfa16('0x3c')]=_[_0xfa16('0x49')](_0x744bf5['model'],_0x744bf5[_0xfa16('0x34')]);_0x51f834[_0xfa16('0x37')]=_['intersection'](_0x744bf5[_0xfa16('0x32')],qs[_0xfa16('0x36')](_0x37ca45['query'][_0xfa16('0x36')]));_0x51f834[_0xfa16('0x37')]=_0x51f834[_0xfa16('0x37')][_0xfa16('0x38')]?_0x51f834[_0xfa16('0x37')]:_0x744bf5[_0xfa16('0x32')];if(_0x37ca45[_0xfa16('0x34')][_0xfa16('0x42')]){_0x51f834[_0xfa16('0x43')]=[{'all':!![]}];}_0x51f834=_[_0xfa16('0x3f')]({},_0x51f834,_0x37ca45[_0xfa16('0x41')]);return db[_0xfa16('0x2d')][_0xfa16('0x4a')](_0x51f834)[_0xfa16('0x28')](handleEntityNotFound(_0x30e67b,null))[_0xfa16('0x28')](respondWithResult(_0x30e67b,null))['catch'](handleError(_0x30e67b,null));};exports[_0xfa16('0x4b')]=function(_0x32483c,_0x2659a9){return db[_0xfa16('0x2d')][_0xfa16('0x4b')](_0x32483c[_0xfa16('0x4c')],{})['then'](respondWithResult(_0x2659a9,0xc9))[_0xfa16('0x46')](handleError(_0x2659a9,null));};exports[_0xfa16('0x27')]=function(_0x55bd93,_0x477b20){if(_0x55bd93['body']['id']){delete _0x55bd93[_0xfa16('0x4c')]['id'];}return db[_0xfa16('0x2d')]['find']({'where':{'id':_0x55bd93[_0xfa16('0x48')]['id']}})['then'](handleEntityNotFound(_0x477b20,null))[_0xfa16('0x28')](saveUpdates(_0x55bd93[_0xfa16('0x4c')],null))['then'](respondWithResult(_0x477b20,null))[_0xfa16('0x46')](handleError(_0x477b20,null));};exports['destroy']=function(_0x1f88bf,_0x12bb29){return db[_0xfa16('0x2d')][_0xfa16('0x4a')]({'where':{'id':_0x1f88bf[_0xfa16('0x48')]['id']}})[_0xfa16('0x28')](handleEntityNotFound(_0x12bb29,null))[_0xfa16('0x28')](removeEntity(_0x12bb29,null))[_0xfa16('0x46')](handleError(_0x12bb29,null));};exports['describe']=function(_0x258727,_0x8c7a2c){return db[_0xfa16('0x2d')]['describe']()[_0xfa16('0x28')](respondWithResult(_0x8c7a2c,null))[_0xfa16('0x46')](handleError(_0x8c7a2c,null));};
\ No newline at end of file
+var _0x4d42=['where','merge','options','includeAll','include','findAll','rows','catch','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','type','model','keys','query','intersection','attributes','fields','nolimit','sort','filters','pick','filter'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0x4d42,0x1b8));var _0x24d4=function(_0x5db864,_0x204795){_0x5db864=_0x5db864-0x0;var _0x4333f6=_0x4d42[_0x5db864];return _0x4333f6;};'use strict';var emlformat=require(_0x24d4('0x0'));var rimraf=require(_0x24d4('0x1'));var zipdir=require(_0x24d4('0x2'));var jsonpatch=require(_0x24d4('0x3'));var rp=require(_0x24d4('0x4'));var moment=require(_0x24d4('0x5'));var BPromise=require(_0x24d4('0x6'));var Mustache=require(_0x24d4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x24d4('0x8'));var csv=require(_0x24d4('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x24d4('0xa'));var squel=require(_0x24d4('0xb'));var crypto=require(_0x24d4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x24d4('0xd'));var toCsv=require(_0x24d4('0x9'));var querystring=require(_0x24d4('0xe'));var Papa=require('papaparse');var Redis=require(_0x24d4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x24d4('0x10'));var as=require(_0x24d4('0x11'));var hardwareService=require(_0x24d4('0x12'));var logger=require(_0x24d4('0x13'))(_0x24d4('0x14'));var utils=require('../../config/utils');var config=require(_0x24d4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x24d4('0x16'))['db'];function respondWithStatusCode(_0x2fb5c4,_0x117127){_0x117127=_0x117127||0xcc;return function(_0x4cd60e){if(_0x4cd60e){return _0x2fb5c4['sendStatus'](_0x117127);}return _0x2fb5c4['status'](_0x117127)[_0x24d4('0x17')]();};}function respondWithResult(_0x9e728a,_0x391f82){_0x391f82=_0x391f82||0xc8;return function(_0x2e38cc){if(_0x2e38cc){return _0x9e728a[_0x24d4('0x18')](_0x391f82)[_0x24d4('0x19')](_0x2e38cc);}};}function respondWithFilteredResult(_0x2aea6d,_0x325627){return function(_0x57ef0d){if(_0x57ef0d){var _0x3dfb11=typeof _0x325627[_0x24d4('0x1a')]===_0x24d4('0x1b')&&typeof _0x325627['limit']===_0x24d4('0x1b');var _0xa6b255=_0x57ef0d[_0x24d4('0x1c')];var _0x5d45c9=_0x3dfb11?0x0:_0x325627[_0x24d4('0x1a')];var _0x2d2f17=_0x3dfb11?_0x57ef0d[_0x24d4('0x1c')]:_0x325627[_0x24d4('0x1a')]+_0x325627[_0x24d4('0x1d')];var _0x5d6bb8;if(_0x2d2f17>=_0xa6b255){_0x2d2f17=_0xa6b255;_0x5d6bb8=0xc8;}else{_0x5d6bb8=0xce;}_0x2aea6d['status'](_0x5d6bb8);return _0x2aea6d['set'](_0x24d4('0x1e'),_0x5d45c9+'-'+_0x2d2f17+'/'+_0xa6b255)[_0x24d4('0x19')](_0x57ef0d);}return null;};}function patchUpdates(_0x4ae71b){return function(_0x538898){try{jsonpatch[_0x24d4('0x1f')](_0x538898,_0x4ae71b,!![]);}catch(_0x5baa93){return BPromise[_0x24d4('0x20')](_0x5baa93);}return _0x538898[_0x24d4('0x21')]();};}function saveUpdates(_0x446494,_0x2442da){return function(_0x5ae63a){if(_0x5ae63a){return _0x5ae63a['update'](_0x446494)[_0x24d4('0x22')](function(_0x595c86){return _0x595c86;});}return null;};}function removeEntity(_0x135917,_0x4501fc){return function(_0x38d9a4){if(_0x38d9a4){return _0x38d9a4[_0x24d4('0x23')]()[_0x24d4('0x22')](function(){_0x135917['status'](0xcc)[_0x24d4('0x17')]();});}};}function handleEntityNotFound(_0x5827b4,_0x45331a){return function(_0x56a775){if(!_0x56a775){_0x5827b4[_0x24d4('0x24')](0x194);}return _0x56a775;};}function handleError(_0xadd22b,_0x372b5e){_0x372b5e=_0x372b5e||0x1f4;return function(_0x3a262e){logger[_0x24d4('0x25')](_0x3a262e[_0x24d4('0x26')]);if(_0x3a262e['name']){delete _0x3a262e[_0x24d4('0x27')];}_0xadd22b[_0x24d4('0x18')](_0x372b5e)[_0x24d4('0x28')](_0x3a262e);};}exports[_0x24d4('0x29')]=function(_0x32bde6,_0x5b3632){var _0x421134={},_0x21e383={},_0x591f49={'count':0x0,'rows':[]};var _0x1134d0=_[_0x24d4('0x2a')](db[_0x24d4('0x2b')][_0x24d4('0x2c')],function(_0x11ecc7){return{'name':_0x11ecc7['fieldName'],'type':_0x11ecc7[_0x24d4('0x2d')]['key']};});_0x21e383[_0x24d4('0x2e')]=_[_0x24d4('0x2a')](_0x1134d0,'name');_0x21e383['query']=_[_0x24d4('0x2f')](_0x32bde6[_0x24d4('0x30')]);_0x21e383['filters']=_[_0x24d4('0x31')](_0x21e383[_0x24d4('0x2e')],_0x21e383[_0x24d4('0x30')]);_0x421134[_0x24d4('0x32')]=_[_0x24d4('0x31')](_0x21e383[_0x24d4('0x2e')],qs['fields'](_0x32bde6[_0x24d4('0x30')][_0x24d4('0x33')]));_0x421134[_0x24d4('0x32')]=_0x421134[_0x24d4('0x32')]['length']?_0x421134[_0x24d4('0x32')]:_0x21e383[_0x24d4('0x2e')];if(!_0x32bde6[_0x24d4('0x30')]['hasOwnProperty'](_0x24d4('0x34'))){_0x421134[_0x24d4('0x1d')]=qs['limit'](_0x32bde6[_0x24d4('0x30')][_0x24d4('0x1d')]);_0x421134[_0x24d4('0x1a')]=qs[_0x24d4('0x1a')](_0x32bde6['query'][_0x24d4('0x1a')]);}_0x421134['order']=qs[_0x24d4('0x35')](_0x32bde6[_0x24d4('0x30')][_0x24d4('0x35')]);_0x421134['where']=qs[_0x24d4('0x36')](_[_0x24d4('0x37')](_0x32bde6[_0x24d4('0x30')],_0x21e383[_0x24d4('0x36')]),_0x1134d0);if(_0x32bde6[_0x24d4('0x30')][_0x24d4('0x38')]){_0x421134[_0x24d4('0x39')]=_['merge'](_0x421134[_0x24d4('0x39')],{'$or':_[_0x24d4('0x2a')](_0x1134d0,function(_0x1c53c1){if(_0x1c53c1[_0x24d4('0x2d')]!=='VIRTUAL'){var _0x3712d0={};_0x3712d0[_0x1c53c1[_0x24d4('0x27')]]={'$like':'%'+_0x32bde6[_0x24d4('0x30')][_0x24d4('0x38')]+'%'};return _0x3712d0;}})});}_0x421134=_[_0x24d4('0x3a')]({},_0x421134,_0x32bde6[_0x24d4('0x3b')]);var _0x362ad8={'where':_0x421134[_0x24d4('0x39')]};return db[_0x24d4('0x2b')][_0x24d4('0x1c')](_0x362ad8)[_0x24d4('0x22')](function(_0x3e7812){_0x591f49['count']=_0x3e7812;if(_0x32bde6['query'][_0x24d4('0x3c')]){_0x421134[_0x24d4('0x3d')]=[{'all':!![]}];}return db[_0x24d4('0x2b')][_0x24d4('0x3e')](_0x421134);})[_0x24d4('0x22')](function(_0x593ba8){_0x591f49[_0x24d4('0x3f')]=_0x593ba8;return _0x591f49;})['then'](respondWithFilteredResult(_0x5b3632,_0x421134))[_0x24d4('0x40')](handleError(_0x5b3632,null));};exports['show']=function(_0xfba641,_0x5b9424){var _0x24ca7c={'raw':!![],'where':{'id':_0xfba641['params']['id']}},_0x1c1029={};_0x1c1029[_0x24d4('0x2e')]=_[_0x24d4('0x2f')](db[_0x24d4('0x2b')][_0x24d4('0x2c')]);_0x1c1029[_0x24d4('0x30')]=_[_0x24d4('0x2f')](_0xfba641[_0x24d4('0x30')]);_0x1c1029[_0x24d4('0x36')]=_[_0x24d4('0x31')](_0x1c1029['model'],_0x1c1029[_0x24d4('0x30')]);_0x24ca7c[_0x24d4('0x32')]=_[_0x24d4('0x31')](_0x1c1029['model'],qs[_0x24d4('0x33')](_0xfba641['query']['fields']));_0x24ca7c[_0x24d4('0x32')]=_0x24ca7c[_0x24d4('0x32')][_0x24d4('0x41')]?_0x24ca7c[_0x24d4('0x32')]:_0x1c1029[_0x24d4('0x2e')];if(_0xfba641[_0x24d4('0x30')][_0x24d4('0x3c')]){_0x24ca7c[_0x24d4('0x3d')]=[{'all':!![]}];}_0x24ca7c=_[_0x24d4('0x3a')]({},_0x24ca7c,_0xfba641[_0x24d4('0x3b')]);return db['SquareDetailsReport'][_0x24d4('0x42')](_0x24ca7c)[_0x24d4('0x22')](handleEntityNotFound(_0x5b9424,null))['then'](respondWithResult(_0x5b9424,null))[_0x24d4('0x40')](handleError(_0x5b9424,null));};exports[_0x24d4('0x43')]=function(_0x29e853,_0x3f7c97){return db[_0x24d4('0x2b')]['create'](_0x29e853[_0x24d4('0x44')],{})[_0x24d4('0x22')](respondWithResult(_0x3f7c97,0xc9))['catch'](handleError(_0x3f7c97,null));};exports['update']=function(_0x3e0cec,_0x2c7426){if(_0x3e0cec[_0x24d4('0x44')]['id']){delete _0x3e0cec[_0x24d4('0x44')]['id'];}return db['SquareDetailsReport'][_0x24d4('0x42')]({'where':{'id':_0x3e0cec[_0x24d4('0x45')]['id']}})[_0x24d4('0x22')](handleEntityNotFound(_0x2c7426,null))[_0x24d4('0x22')](saveUpdates(_0x3e0cec[_0x24d4('0x44')],null))[_0x24d4('0x22')](respondWithResult(_0x2c7426,null))['catch'](handleError(_0x2c7426,null));};exports['destroy']=function(_0x5d6b9b,_0x58bd9d){return db[_0x24d4('0x2b')][_0x24d4('0x42')]({'where':{'id':_0x5d6b9b[_0x24d4('0x45')]['id']}})[_0x24d4('0x22')](handleEntityNotFound(_0x58bd9d,null))[_0x24d4('0x22')](removeEntity(_0x58bd9d,null))['catch'](handleError(_0x58bd9d,null));};exports[_0x24d4('0x46')]=function(_0x156ecd,_0x29d77a){return db[_0x24d4('0x2b')][_0x24d4('0x46')]()['then'](respondWithResult(_0x29d77a,null))['catch'](handleError(_0x29d77a,null));};
\ No newline at end of file
index 9a0263b..e9cac7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f86=['report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./squareReportDetail.attributes','define','SquareDetailsReport'];(function(_0x39adb2,_0x540b96){var _0x1df693=function(_0x13fb10){while(--_0x13fb10){_0x39adb2['push'](_0x39adb2['shift']());}};_0x1df693(++_0x540b96);}(_0x6f86,0x181));var _0x66f8=function(_0x4ade33,_0x103537){_0x4ade33=_0x4ade33-0x0;var _0x162cc1=_0x6f86[_0x4ade33];return _0x162cc1;};'use strict';var _=require(_0x66f8('0x0'));var util=require(_0x66f8('0x1'));var logger=require(_0x66f8('0x2'))(_0x66f8('0x3'));var moment=require(_0x66f8('0x4'));var BPromise=require(_0x66f8('0x5'));var rp=require(_0x66f8('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x66f8('0x7'));var config=require('../../config/environment');var attributes=require(_0x66f8('0x8'));module['exports']=function(_0x56a873,_0x2061ef){return _0x56a873[_0x66f8('0x9')](_0x66f8('0xa'),attributes,{'tableName':_0x66f8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d17=['SquareDetailsReport','report_square_details','../../config/logger','api','bluebird','request-promise','rimraf','./squareReportDetail.attributes','exports','define'];(function(_0x286e40,_0x51f3e4){var _0x27dc5b=function(_0x3f2aeb){while(--_0x3f2aeb){_0x286e40['push'](_0x286e40['shift']());}};_0x27dc5b(++_0x51f3e4);}(_0x8d17,0xde));var _0x78d1=function(_0x485dd0,_0x2f86da){_0x485dd0=_0x485dd0-0x0;var _0x340632=_0x8d17[_0x485dd0];return _0x340632;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x78d1('0x0'))(_0x78d1('0x1'));var moment=require('moment');var BPromise=require(_0x78d1('0x2'));var rp=require(_0x78d1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x78d1('0x4'));var config=require('../../config/environment');var attributes=require(_0x78d1('0x5'));module[_0x78d1('0x6')]=function(_0x3f2620,_0x1264ac){return _0x3f2620[_0x78d1('0x7')](_0x78d1('0x8'),attributes,{'tableName':_0x78d1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7818444..2c1033a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a7=['http','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','result','catch','CreateSquareDetailsReport','create','body','options','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x02a7,0x1a6));var _0x702a=function(_0x4db6d5,_0x5a5954){_0x4db6d5=_0x4db6d5-0x0;var _0xfb9f58=_0x02a7[_0x4db6d5];return _0xfb9f58;};'use strict';var _=require('lodash');var util=require(_0x702a('0x0'));var moment=require(_0x702a('0x1'));var BPromise=require(_0x702a('0x2'));var rs=require(_0x702a('0x3'));var fs=require('fs');var Redis=require(_0x702a('0x4'));var db=require(_0x702a('0x5'))['db'];var utils=require(_0x702a('0x6'));var logger=require(_0x702a('0x7'))(_0x702a('0x8'));var config=require(_0x702a('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x702a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b6736,_0x27bfc7,_0x3f5ff8){return new BPromise(function(_0x51bf52,_0x562fdb){return client['request'](_0x4b6736,_0x3f5ff8)['then'](function(_0x3cb569){logger[_0x702a('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0x27bfc7,_0x702a('0xc'));logger[_0x702a('0xd')](_0x702a('0xe'),_0x27bfc7,_0x702a('0xc'),JSON[_0x702a('0xf')](_0x3cb569));if(_0x3cb569[_0x702a('0x10')]){if(_0x3cb569[_0x702a('0x10')][_0x702a('0x11')]===0x1f4){logger['error'](_0x702a('0x12'),_0x27bfc7,_0x3cb569[_0x702a('0x10')][_0x702a('0x13')]);return _0x562fdb(_0x3cb569[_0x702a('0x10')]['message']);}logger[_0x702a('0x10')](_0x702a('0x12'),_0x27bfc7,_0x3cb569[_0x702a('0x10')][_0x702a('0x13')]);return _0x51bf52(_0x3cb569[_0x702a('0x10')]['message']);}else{logger[_0x702a('0xb')](_0x702a('0x12'),_0x27bfc7,_0x702a('0xc'));_0x51bf52(_0x3cb569[_0x702a('0x14')][_0x702a('0x13')]);}})[_0x702a('0x15')](function(_0x451881){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x27bfc7,_0x451881);_0x562fdb(_0x451881);});});}exports[_0x702a('0x16')]=function(_0x340dc2){var _0x2071ad=this;return new Promise(function(_0x3d1550,_0x1885eb){return db['SquareDetailsReport'][_0x702a('0x17')](_0x340dc2[_0x702a('0x18')],{'raw':_0x340dc2[_0x702a('0x19')]?_0x340dc2[_0x702a('0x19')][_0x702a('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x5b2998){logger['info'](_0x702a('0x16'),_0x340dc2);logger['debug'](_0x702a('0x16'),_0x340dc2,JSON[_0x702a('0xf')](_0x5b2998));_0x3d1550(_0x5b2998);})['catch'](function(_0x2ca064){logger[_0x702a('0x10')](_0x702a('0x16'),_0x2ca064[_0x702a('0x13')],_0x340dc2);_0x1885eb(_0x2071ad[_0x702a('0x10')](0x1f4,_0x2ca064['message']));});});};
\ No newline at end of file
+var _0x4fad=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','SquareDetailsReport','create','body','options','raw','CreateSquareDetailsReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4fad,0xcb));var _0xd4fa=function(_0x712f9,_0x520fff){_0x712f9=_0x712f9-0x0;var _0xfda5db=_0x4fad[_0x712f9];return _0xfda5db;};'use strict';var _=require(_0xd4fa('0x0'));var util=require(_0xd4fa('0x1'));var moment=require(_0xd4fa('0x2'));var BPromise=require('bluebird');var rs=require(_0xd4fa('0x3'));var fs=require('fs');var Redis=require(_0xd4fa('0x4'));var db=require(_0xd4fa('0x5'))['db'];var utils=require(_0xd4fa('0x6'));var logger=require(_0xd4fa('0x7'))(_0xd4fa('0x8'));var config=require(_0xd4fa('0x9'));var jayson=require(_0xd4fa('0xa'));var client=jayson['client'][_0xd4fa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52b426,_0x2b9f6a,_0x19a910){return new BPromise(function(_0x155c09,_0x3fff99){return client[_0xd4fa('0xc')](_0x52b426,_0x19a910)['then'](function(_0x26a894){logger[_0xd4fa('0xd')](_0xd4fa('0xe'),_0x2b9f6a,'request\x20sent');logger[_0xd4fa('0xf')](_0xd4fa('0x10'),_0x2b9f6a,_0xd4fa('0x11'),JSON[_0xd4fa('0x12')](_0x26a894));if(_0x26a894['error']){if(_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x14')]===0x1f4){logger[_0xd4fa('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x2b9f6a,_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x15')]);return _0x3fff99(_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x15')]);}logger[_0xd4fa('0x13')](_0xd4fa('0xe'),_0x2b9f6a,_0x26a894['error'][_0xd4fa('0x15')]);return _0x155c09(_0x26a894[_0xd4fa('0x13')][_0xd4fa('0x15')]);}else{logger[_0xd4fa('0xd')](_0xd4fa('0xe'),_0x2b9f6a,_0xd4fa('0x11'));_0x155c09(_0x26a894[_0xd4fa('0x16')]['message']);}})[_0xd4fa('0x17')](function(_0x3a3b8c){logger[_0xd4fa('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x2b9f6a,_0x3a3b8c);_0x3fff99(_0x3a3b8c);});});}exports['CreateSquareDetailsReport']=function(_0x1faa0b){var _0x5601d6=this;return new Promise(function(_0x5df190,_0x1f9be1){return db[_0xd4fa('0x18')][_0xd4fa('0x19')](_0x1faa0b[_0xd4fa('0x1a')],{'raw':_0x1faa0b['options']?_0x1faa0b[_0xd4fa('0x1b')][_0xd4fa('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0xbf7dcf){logger['info']('CreateSquareDetailsReport',_0x1faa0b);logger[_0xd4fa('0xf')](_0xd4fa('0x1d'),_0x1faa0b,JSON[_0xd4fa('0x12')](_0xbf7dcf));_0x5df190(_0xbf7dcf);})[_0xd4fa('0x17')](function(_0x586af0){logger[_0xd4fa('0x13')](_0xd4fa('0x1d'),_0x586af0[_0xd4fa('0x15')],_0x1faa0b);_0x1f9be1(_0x5601d6[_0xd4fa('0x13')](0x1f4,_0x586af0[_0xd4fa('0x15')]));});});};
\ No newline at end of file
index 6e3439e..aacc240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5d0=['get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','Router','./system.controller'];(function(_0x13463f,_0x3c0a05){var _0x319f38=function(_0x3d4546){while(--_0x3d4546){_0x13463f['push'](_0x13463f['shift']());}};_0x319f38(++_0x3c0a05);}(_0xc5d0,0x1de));var _0x0c5d=function(_0xd511d,_0x3546b9){_0xd511d=_0xd511d-0x0;var _0x3f148e=_0xc5d0[_0xd511d];return _0x3f148e;};'use strict';var express=require('express');var router=express[_0x0c5d('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x0c5d('0x1'));router[_0x0c5d('0x2')]('/',auth[_0x0c5d('0x3')](),controller[_0x0c5d('0x4')]);router['get'](_0x0c5d('0x5'),auth['isAuthenticated'](),controller[_0x0c5d('0x6')]);module[_0x0c5d('0x7')]=router;
\ No newline at end of file
+var _0x2bd4=['Router','../../components/auth/service','./system.controller','isAuthenticated','index','get','/process/:pid/kill','exports','express'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2bd4,0xc5));var _0x42bd=function(_0xc4f13,_0xce5ecb){_0xc4f13=_0xc4f13-0x0;var _0x566e64=_0x2bd4[_0xc4f13];return _0x566e64;};'use strict';var express=require(_0x42bd('0x0'));var router=express[_0x42bd('0x1')]();var auth=require(_0x42bd('0x2'));var controller=require(_0x42bd('0x3'));router['get']('/',auth[_0x42bd('0x4')](),controller[_0x42bd('0x5')]);router[_0x42bd('0x6')](_0x42bd('0x7'),auth[_0x42bd('0x4')](),controller['killProcess']);module[_0x42bd('0x8')]=router;
\ No newline at end of file
index ae39155..d17ec08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bd9=['api','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','index','getAllData','then','json','killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation','child_process','exec','../../config/logger'];(function(_0x401411,_0x480ece){var _0x5e0c1d=function(_0x43a560){while(--_0x43a560){_0x401411['push'](_0x401411['shift']());}};_0x5e0c1d(++_0x480ece);}(_0x6bd9,0x9e));var _0x96bd=function(_0x35c571,_0x218a72){_0x35c571=_0x35c571-0x0;var _0x17f302=_0x6bd9[_0x35c571];return _0x17f302;};'use strict';var info=require(_0x96bd('0x0'));var exec=require(_0x96bd('0x1'))[_0x96bd('0x2')];var logger=require(_0x96bd('0x3'))(_0x96bd('0x4'));var util=require('util');var BPromise=require('bluebird');var _=require(_0x96bd('0x5'));function handleError(_0x3c3949,_0x400cb2,_0x1eb850){_0x400cb2=_0x400cb2||0x1f4;return function(_0x444a56){logger[_0x96bd('0x6')](_0x96bd('0x7'),_0x1eb850,_0x400cb2,util['inspect'](_0x444a56,{'showHidden':![],'depth':null}));delete _0x444a56[_0x96bd('0x8')];_0x3c3949[_0x96bd('0x9')](_0x400cb2)['send'](_0x444a56);};}exports[_0x96bd('0xa')]=function(_0x24d43c,_0x27e4c1){return info[_0x96bd('0xb')]()[_0x96bd('0xc')](function(_0x52aa46){return _0x27e4c1[_0x96bd('0x9')](0xc8)[_0x96bd('0xd')](_0x52aa46);})['catch'](function(_0x253108){return _0x27e4c1[_0x96bd('0x9')](0x1f4)[_0x96bd('0xd')](_0x253108);});};exports[_0x96bd('0xe')]=function(_0x302e63,_0x2a4281){var _0x1ae7a5=['components/import/cm'];return new BPromise(function(_0xc5b3f6,_0x2c3bb3){return exec(util[_0x96bd('0xf')](_0x96bd('0x10'),_0x302e63[_0x96bd('0x11')][_0x96bd('0x12')]),function(_0x54d1e6,_0x3912fa,_0x2de70f){if(_0x54d1e6){return _0x2c3bb3(_0x54d1e6);}return _0xc5b3f6(_0x3912fa);});})[_0x96bd('0xc')](function(_0x711fef){var _0x3a1b9=![];var _0x380391=_0x711fef[_0x96bd('0x13')](/\n/);for(var _0x5d97d6=0x0,_0x17e66b=_0x1ae7a5[_0x96bd('0x14')];_0x5d97d6<_0x17e66b,_0x3a1b9===![];_0x5d97d6+=0x1){if(_0x711fef[_0x96bd('0x15')](_0x1ae7a5[_0x5d97d6])>=0x0){_0x3a1b9=!![];}}if(!_0x3a1b9){throw new Error(util['format'](_0x96bd('0x16'),_0x302e63[_0x96bd('0x11')][_0x96bd('0x12')]));}process[_0x96bd('0x17')](_0x302e63[_0x96bd('0x11')][_0x96bd('0x12')],_0x96bd('0x18'));return _0x2a4281[_0x96bd('0x9')](0xc8)[_0x96bd('0xd')]({'message':util[_0x96bd('0xf')](_0x96bd('0x19'),_0x302e63[_0x96bd('0x11')][_0x96bd('0x12')])});})[_0x96bd('0x1a')](handleError(_0x2a4281,null,_0x96bd('0xe')));};
\ No newline at end of file
+var _0xcf24=['pid','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','api','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','getAllData','then','json','catch','killProcess','components/import/cm','format'];(function(_0x9fdb4b,_0x3b9ae9){var _0x36a1ed=function(_0x6c8c5e){while(--_0x6c8c5e){_0x9fdb4b['push'](_0x9fdb4b['shift']());}};_0x36a1ed(++_0x3b9ae9);}(_0xcf24,0x13e));var _0x4cf2=function(_0x3fd3b3,_0x12172a){_0x3fd3b3=_0x3fd3b3-0x0;var _0xd261a7=_0xcf24[_0x3fd3b3];return _0xd261a7;};'use strict';var info=require('systeminformation');var exec=require(_0x4cf2('0x0'))[_0x4cf2('0x1')];var logger=require('../../config/logger')(_0x4cf2('0x2'));var util=require('util');var BPromise=require(_0x4cf2('0x3'));var _=require(_0x4cf2('0x4'));function handleError(_0x75e441,_0x338423,_0x4aef54){_0x338423=_0x338423||0x1f4;return function(_0xdc1079){logger[_0x4cf2('0x5')](_0x4cf2('0x6'),_0x4aef54,_0x338423,util[_0x4cf2('0x7')](_0xdc1079,{'showHidden':![],'depth':null}));delete _0xdc1079[_0x4cf2('0x8')];_0x75e441[_0x4cf2('0x9')](_0x338423)[_0x4cf2('0xa')](_0xdc1079);};}exports['index']=function(_0x3cc76f,_0x3edd75){return info[_0x4cf2('0xb')]()[_0x4cf2('0xc')](function(_0x1129e4){return _0x3edd75[_0x4cf2('0x9')](0xc8)[_0x4cf2('0xd')](_0x1129e4);})[_0x4cf2('0xe')](function(_0x1e1510){return _0x3edd75['status'](0x1f4)[_0x4cf2('0xd')](_0x1e1510);});};exports[_0x4cf2('0xf')]=function(_0x1fedf1,_0x519079){var _0x1536b8=[_0x4cf2('0x10')];return new BPromise(function(_0x4f9217,_0x3fb269){return exec(util[_0x4cf2('0x11')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x1fedf1['params'][_0x4cf2('0x12')]),function(_0x2bffe3,_0x14995a,_0x5952db){if(_0x2bffe3){return _0x3fb269(_0x2bffe3);}return _0x4f9217(_0x14995a);});})['then'](function(_0x1b9106){var _0x29e079=![];var _0x7587a7=_0x1b9106[_0x4cf2('0x13')](/\n/);for(var _0x24fc72=0x0,_0x4d6be2=_0x1536b8['length'];_0x24fc72<_0x4d6be2,_0x29e079===![];_0x24fc72+=0x1){if(_0x1b9106[_0x4cf2('0x14')](_0x1536b8[_0x24fc72])>=0x0){_0x29e079=!![];}}if(!_0x29e079){throw new Error(util[_0x4cf2('0x11')](_0x4cf2('0x15'),_0x1fedf1[_0x4cf2('0x16')][_0x4cf2('0x12')]));}process['kill'](_0x1fedf1['params'][_0x4cf2('0x12')],'SIGINT');return _0x519079['status'](0xc8)['json']({'message':util[_0x4cf2('0x11')](_0x4cf2('0x17'),_0x1fedf1[_0x4cf2('0x16')][_0x4cf2('0x12')])});})['catch'](handleError(_0x519079,null,_0x4cf2('0xf')));};
\ No newline at end of file
index 757e899..e6a25db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a0f=['update','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','index','isAuthenticated','show','post','create','/:id'];(function(_0x4d95d9,_0x278833){var _0x4685e6=function(_0x283fe7){while(--_0x283fe7){_0x4d95d9['push'](_0x4d95d9['shift']());}};_0x4685e6(++_0x278833);}(_0x5a0f,0x18f));var _0xf5a0=function(_0xd399f2,_0x4c01b7){_0xd399f2=_0xd399f2-0x0;var _0x550c64=_0x5a0f[_0xd399f2];return _0x550c64;};'use strict';var multer=require('multer');var util=require(_0xf5a0('0x0'));var path=require(_0xf5a0('0x1'));var timeout=require(_0xf5a0('0x2'));var express=require(_0xf5a0('0x3'));var router=express['Router']();var fs_extra=require(_0xf5a0('0x4'));var auth=require(_0xf5a0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf5a0('0x6'));var controller=require(_0xf5a0('0x7'));router[_0xf5a0('0x8')]('/',auth['isAuthenticated'](),controller[_0xf5a0('0x9')]);router[_0xf5a0('0x8')]('/:id',auth[_0xf5a0('0xa')](),controller[_0xf5a0('0xb')]);router[_0xf5a0('0xc')]('/',auth[_0xf5a0('0xa')](),controller[_0xf5a0('0xd')]);router['put'](_0xf5a0('0xe'),auth['isAuthenticated'](),controller[_0xf5a0('0xf')]);router['delete'](_0xf5a0('0xe'),auth[_0xf5a0('0xa')](),controller[_0xf5a0('0x10')]);module[_0xf5a0('0x11')]=router;
\ No newline at end of file
+var _0xc582=['index','get','/:id','show','create','put','delete','exports','util','path','express','fs-extra','./tag.controller','isAuthenticated'];(function(_0x47ab21,_0x3907b6){var _0x1104e3=function(_0x49bfda){while(--_0x49bfda){_0x47ab21['push'](_0x47ab21['shift']());}};_0x1104e3(++_0x3907b6);}(_0xc582,0x182));var _0x2c58=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xc582[_0x1da527];return _0x40fc7c;};'use strict';var multer=require('multer');var util=require(_0x2c58('0x0'));var path=require(_0x2c58('0x1'));var timeout=require('connect-timeout');var express=require(_0x2c58('0x2'));var router=express['Router']();var fs_extra=require(_0x2c58('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2c58('0x4'));router['get']('/',auth[_0x2c58('0x5')](),controller[_0x2c58('0x6')]);router[_0x2c58('0x7')](_0x2c58('0x8'),auth[_0x2c58('0x5')](),controller[_0x2c58('0x9')]);router['post']('/',auth[_0x2c58('0x5')](),controller[_0x2c58('0xa')]);router[_0x2c58('0xb')](_0x2c58('0x8'),auth[_0x2c58('0x5')](),controller['update']);router[_0x2c58('0xc')]('/:id',auth[_0x2c58('0x5')](),controller['destroy']);module[_0x2c58('0xd')]=router;
\ No newline at end of file
index 55bb1f1..9b0d8a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b65=['sequelize','exports','STRING','name','#0091EA'];(function(_0x114b7c,_0xc4b93b){var _0x47185f=function(_0x5b4cfa){while(--_0x5b4cfa){_0x114b7c['push'](_0x114b7c['shift']());}};_0x47185f(++_0xc4b93b);}(_0x2b65,0x131));var _0x52b6=function(_0x51380e,_0x55b897){_0x51380e=_0x51380e-0x0;var _0x2ed390=_0x2b65[_0x51380e];return _0x2ed390;};'use strict';var Sequelize=require(_0x52b6('0x0'));module[_0x52b6('0x1')]={'name':{'type':Sequelize[_0x52b6('0x2')],'unique':_0x52b6('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x52b6('0x2')],'defaultValue':_0x52b6('0x4')},'description':{'type':Sequelize[_0x52b6('0x2')]}};
\ No newline at end of file
+var _0x87d9=['STRING','name','#0091EA','sequelize'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0x87d9,0x143));var _0x987d=function(_0x401676,_0x3f1436){_0x401676=_0x401676-0x0;var _0x4f13fe=_0x87d9[_0x401676];return _0x4f13fe;};'use strict';var Sequelize=require(_0x987d('0x0'));module['exports']={'name':{'type':Sequelize[_0x987d('0x1')],'unique':_0x987d('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x987d('0x1')],'defaultValue':_0x987d('0x3')},'description':{'type':Sequelize[_0x987d('0x1')]}};
\ No newline at end of file
index bc116ba..28f747a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','Tags','UserProfileResource','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','Tag','includeAll','include','findAll','rows','catch','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','eml-format','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x564b86,_0x556384){_0x564b86=_0x564b86-0x0;var _0x2fa378=_0x4d9e[_0x564b86];return _0x2fa378;};'use strict';var emlformat=require(_0xe4d9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe4d9('0x1'));var rp=require('request-promise');var moment=require(_0xe4d9('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe4d9('0x3'));var util=require(_0xe4d9('0x4'));var path=require('path');var sox=require(_0xe4d9('0x5'));var csv=require(_0xe4d9('0x6'));var ejs=require(_0xe4d9('0x7'));var fs=require('fs');var fs_extra=require(_0xe4d9('0x8'));var _=require(_0xe4d9('0x9'));var squel=require(_0xe4d9('0xa'));var crypto=require('crypto');var jsforce=require(_0xe4d9('0xb'));var deskjs=require(_0xe4d9('0xc'));var toCsv=require(_0xe4d9('0x6'));var querystring=require(_0xe4d9('0xd'));var Papa=require(_0xe4d9('0xe'));var Redis=require(_0xe4d9('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe4d9('0x10'));var as=require(_0xe4d9('0x11'));var hardwareService=require(_0xe4d9('0x12'));var logger=require(_0xe4d9('0x13'))(_0xe4d9('0x14'));var utils=require(_0xe4d9('0x15'));var config=require(_0xe4d9('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x580c50,_0x4e0d15){_0x4e0d15=_0x4e0d15||0xcc;return function(_0x564383){if(_0x564383){return _0x580c50['sendStatus'](_0x4e0d15);}return _0x580c50['status'](_0x4e0d15)['end']();};}function respondWithResult(_0x15c0eb,_0x3238d4){_0x3238d4=_0x3238d4||0xc8;return function(_0x3f884c){if(_0x3f884c){return _0x15c0eb['status'](_0x3238d4)[_0xe4d9('0x17')](_0x3f884c);}};}function respondWithFilteredResult(_0x3f6ce4,_0xe4f133){return function(_0x4283f7){if(_0x4283f7){var _0x58d0cf=typeof _0xe4f133[_0xe4d9('0x18')]===_0xe4d9('0x19')&&typeof _0xe4f133[_0xe4d9('0x1a')]==='undefined';var _0x4d2afd=_0x4283f7[_0xe4d9('0x1b')];var _0x112315=_0x58d0cf?0x0:_0xe4f133['offset'];var _0x2e1490=_0x58d0cf?_0x4283f7['count']:_0xe4f133[_0xe4d9('0x18')]+_0xe4f133[_0xe4d9('0x1a')];var _0x1ea096;if(_0x2e1490>=_0x4d2afd){_0x2e1490=_0x4d2afd;_0x1ea096=0xc8;}else{_0x1ea096=0xce;}_0x3f6ce4[_0xe4d9('0x1c')](_0x1ea096);return _0x3f6ce4['set'](_0xe4d9('0x1d'),_0x112315+'-'+_0x2e1490+'/'+_0x4d2afd)[_0xe4d9('0x17')](_0x4283f7);}return null;};}function patchUpdates(_0x151220){return function(_0x171224){try{jsonpatch[_0xe4d9('0x1e')](_0x171224,_0x151220,!![]);}catch(_0x1146fc){return BPromise[_0xe4d9('0x1f')](_0x1146fc);}return _0x171224[_0xe4d9('0x20')]();};}function saveUpdates(_0x562bab,_0x4fed7f){return function(_0x44f1aa){if(_0x44f1aa){return _0x44f1aa[_0xe4d9('0x21')](_0x562bab)['then'](function(_0x189dad){return _0x189dad;});}return null;};}function removeEntity(_0x50d377,_0x14f3d7){return function(_0x125320){if(_0x125320){return _0x125320['destroy']()[_0xe4d9('0x22')](function(){var _0x32e7da=_0x125320['get']({'plain':!![]});var _0xc5be1b=_0xe4d9('0x23');return db[_0xe4d9('0x24')]['destroy']({'where':{'type':_0xc5be1b,'resourceId':_0x32e7da['id']}})['then'](function(){return _0x125320;});})[_0xe4d9('0x22')](function(){_0x50d377[_0xe4d9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dddd2,_0x4954b5){return function(_0x529e2b){if(!_0x529e2b){_0x5dddd2[_0xe4d9('0x25')](0x194);}return _0x529e2b;};}function handleError(_0x48d481,_0x40ffd0){_0x40ffd0=_0x40ffd0||0x1f4;return function(_0x1f3d90){logger[_0xe4d9('0x26')](_0x1f3d90['stack']);if(_0x1f3d90[_0xe4d9('0x27')]){delete _0x1f3d90[_0xe4d9('0x27')];}_0x48d481[_0xe4d9('0x1c')](_0x40ffd0)[_0xe4d9('0x28')](_0x1f3d90);};}exports[_0xe4d9('0x29')]=function(_0x1904d1,_0x21b7a9){var _0x449cb8={},_0x1fb637={},_0x3e6ea7={'count':0x0,'rows':[]};var _0x519c18=_[_0xe4d9('0x2a')](db['Tag'][_0xe4d9('0x2b')],function(_0x349be3){return{'name':_0x349be3[_0xe4d9('0x2c')],'type':_0x349be3[_0xe4d9('0x2d')][_0xe4d9('0x2e')]};});_0x1fb637[_0xe4d9('0x2f')]=_['map'](_0x519c18,'name');_0x1fb637['query']=_[_0xe4d9('0x30')](_0x1904d1[_0xe4d9('0x31')]);_0x1fb637[_0xe4d9('0x32')]=_['intersection'](_0x1fb637['model'],_0x1fb637['query']);_0x449cb8['attributes']=_[_0xe4d9('0x33')](_0x1fb637[_0xe4d9('0x2f')],qs['fields'](_0x1904d1[_0xe4d9('0x31')][_0xe4d9('0x34')]));_0x449cb8['attributes']=_0x449cb8[_0xe4d9('0x35')][_0xe4d9('0x36')]?_0x449cb8[_0xe4d9('0x35')]:_0x1fb637[_0xe4d9('0x2f')];if(!_0x1904d1[_0xe4d9('0x31')][_0xe4d9('0x37')](_0xe4d9('0x38'))){_0x449cb8[_0xe4d9('0x1a')]=qs[_0xe4d9('0x1a')](_0x1904d1[_0xe4d9('0x31')][_0xe4d9('0x1a')]);_0x449cb8[_0xe4d9('0x18')]=qs[_0xe4d9('0x18')](_0x1904d1[_0xe4d9('0x31')]['offset']);}_0x449cb8[_0xe4d9('0x39')]=qs[_0xe4d9('0x3a')](_0x1904d1[_0xe4d9('0x31')][_0xe4d9('0x3a')]);_0x449cb8[_0xe4d9('0x3b')]=qs[_0xe4d9('0x32')](_[_0xe4d9('0x3c')](_0x1904d1[_0xe4d9('0x31')],_0x1fb637[_0xe4d9('0x32')]),_0x519c18);if(_0x1904d1['query']['filter']){_0x449cb8['where']=_[_0xe4d9('0x3d')](_0x449cb8[_0xe4d9('0x3b')],{'$or':_[_0xe4d9('0x2a')](_0x519c18,function(_0x2770a2){if(_0x2770a2[_0xe4d9('0x2d')]!==_0xe4d9('0x3e')){var _0x392cdd={};_0x392cdd[_0x2770a2['name']]={'$like':'%'+_0x1904d1['query']['filter']+'%'};return _0x392cdd;}})});}_0x449cb8=_[_0xe4d9('0x3d')]({},_0x449cb8,_0x1904d1[_0xe4d9('0x3f')]);var _0x5a908b={'where':_0x449cb8[_0xe4d9('0x3b')]};return db[_0xe4d9('0x40')][_0xe4d9('0x1b')](_0x5a908b)[_0xe4d9('0x22')](function(_0x5d0476){_0x3e6ea7[_0xe4d9('0x1b')]=_0x5d0476;if(_0x1904d1[_0xe4d9('0x31')][_0xe4d9('0x41')]){_0x449cb8[_0xe4d9('0x42')]=[{'all':!![]}];}return db[_0xe4d9('0x40')][_0xe4d9('0x43')](_0x449cb8);})[_0xe4d9('0x22')](function(_0x3e9653){_0x3e6ea7[_0xe4d9('0x44')]=_0x3e9653;return _0x3e6ea7;})[_0xe4d9('0x22')](respondWithFilteredResult(_0x21b7a9,_0x449cb8))[_0xe4d9('0x45')](handleError(_0x21b7a9,null));};exports['show']=function(_0x429be,_0x449230){var _0x4857fe={'raw':!![],'where':{'id':_0x429be[_0xe4d9('0x46')]['id']}},_0x2b7e25={};_0x2b7e25['model']=_[_0xe4d9('0x30')](db[_0xe4d9('0x40')][_0xe4d9('0x2b')]);_0x2b7e25[_0xe4d9('0x31')]=_[_0xe4d9('0x30')](_0x429be[_0xe4d9('0x31')]);_0x2b7e25[_0xe4d9('0x32')]=_[_0xe4d9('0x33')](_0x2b7e25[_0xe4d9('0x2f')],_0x2b7e25[_0xe4d9('0x31')]);_0x4857fe['attributes']=_[_0xe4d9('0x33')](_0x2b7e25[_0xe4d9('0x2f')],qs[_0xe4d9('0x34')](_0x429be['query'][_0xe4d9('0x34')]));_0x4857fe[_0xe4d9('0x35')]=_0x4857fe[_0xe4d9('0x35')][_0xe4d9('0x36')]?_0x4857fe[_0xe4d9('0x35')]:_0x2b7e25[_0xe4d9('0x2f')];if(_0x429be[_0xe4d9('0x31')]['includeAll']){_0x4857fe[_0xe4d9('0x42')]=[{'all':!![]}];}_0x4857fe=_[_0xe4d9('0x3d')]({},_0x4857fe,_0x429be[_0xe4d9('0x3f')]);return db[_0xe4d9('0x40')][_0xe4d9('0x47')](_0x4857fe)[_0xe4d9('0x22')](handleEntityNotFound(_0x449230,null))['then'](respondWithResult(_0x449230,null))[_0xe4d9('0x45')](handleError(_0x449230,null));};exports[_0xe4d9('0x48')]=function(_0x87f230,_0x38468c){return db[_0xe4d9('0x40')][_0xe4d9('0x48')](_0x87f230['body'],{})[_0xe4d9('0x22')](function(_0x29e038){var _0x53e7c4=_0x87f230[_0xe4d9('0x49')]['get']({'plain':!![]});if(!_0x53e7c4)throw new Error(_0xe4d9('0x4a'));if(_0x53e7c4[_0xe4d9('0x4b')]==='user'){var _0x657961=_0x29e038['get']({'plain':!![]});var _0x27a5e4=_0xe4d9('0x23');return db[_0xe4d9('0x4c')]['find']({'where':{'name':_0x27a5e4,'userProfileId':_0x53e7c4[_0xe4d9('0x4d')]},'raw':!![]})[_0xe4d9('0x22')](function(_0x4d5ff9){if(_0x4d5ff9&&_0x4d5ff9[_0xe4d9('0x4e')]===0x0){return db[_0xe4d9('0x24')][_0xe4d9('0x48')]({'name':_0x657961[_0xe4d9('0x27')],'resourceId':_0x657961['id'],'type':_0x4d5ff9['name'],'sectionId':_0x4d5ff9['id']},{})['then'](function(){return _0x29e038;});}else{return _0x29e038;}})[_0xe4d9('0x45')](function(_0x40674d){logger[_0xe4d9('0x26')](_0xe4d9('0x4f'),_0x40674d);throw _0x40674d;});}return _0x29e038;})[_0xe4d9('0x22')](respondWithResult(_0x38468c,0xc9))[_0xe4d9('0x45')](handleError(_0x38468c,null));};exports['update']=function(_0x5a57ad,_0x2c5500){if(_0x5a57ad[_0xe4d9('0x50')]['id']){delete _0x5a57ad[_0xe4d9('0x50')]['id'];}return db[_0xe4d9('0x40')][_0xe4d9('0x47')]({'where':{'id':_0x5a57ad[_0xe4d9('0x46')]['id']}})['then'](handleEntityNotFound(_0x2c5500,null))[_0xe4d9('0x22')](saveUpdates(_0x5a57ad[_0xe4d9('0x50')],null))[_0xe4d9('0x22')](respondWithResult(_0x2c5500,null))['catch'](handleError(_0x2c5500,null));};exports[_0xe4d9('0x51')]=function(_0x2b6d70,_0x281fda){return db['Tag'][_0xe4d9('0x47')]({'where':{'id':_0x2b6d70['params']['id']}})[_0xe4d9('0x22')](handleEntityNotFound(_0x281fda,null))[_0xe4d9('0x22')](removeEntity(_0x281fda,null))[_0xe4d9('0x45')](handleError(_0x281fda,null));};
\ No newline at end of file
+var _0xc3fe=['eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','status','error','stack','name','send','index','map','Tag','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','autoAssociation','body','params'];(function(_0x1ae919,_0x31966d){var _0x47698a=function(_0x1f3774){while(--_0x1f3774){_0x1ae919['push'](_0x1ae919['shift']());}};_0x47698a(++_0x31966d);}(_0xc3fe,0xff));var _0xec3f=function(_0x47853a,_0x4f8be4){_0x47853a=_0x47853a-0x0;var _0x30d5ac=_0xc3fe[_0x47853a];return _0x30d5ac;};'use strict';var emlformat=require(_0xec3f('0x0'));var rimraf=require(_0xec3f('0x1'));var zipdir=require(_0xec3f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xec3f('0x3'));var moment=require(_0xec3f('0x4'));var BPromise=require(_0xec3f('0x5'));var Mustache=require('mustache');var util=require(_0xec3f('0x6'));var path=require(_0xec3f('0x7'));var sox=require(_0xec3f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xec3f('0x9'));var _=require(_0xec3f('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xec3f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xec3f('0xc'));var querystring=require(_0xec3f('0xd'));var Papa=require(_0xec3f('0xe'));var Redis=require(_0xec3f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xec3f('0x10'));var as=require(_0xec3f('0x11'));var hardwareService=require(_0xec3f('0x12'));var logger=require(_0xec3f('0x13'))(_0xec3f('0x14'));var utils=require(_0xec3f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xec3f('0x16'));var db=require(_0xec3f('0x17'))['db'];function respondWithStatusCode(_0x367c5e,_0x57891d){_0x57891d=_0x57891d||0xcc;return function(_0x5367df){if(_0x5367df){return _0x367c5e[_0xec3f('0x18')](_0x57891d);}return _0x367c5e['status'](_0x57891d)['end']();};}function respondWithResult(_0x209ffa,_0x4318bd){_0x4318bd=_0x4318bd||0xc8;return function(_0x113d16){if(_0x113d16){return _0x209ffa['status'](_0x4318bd)['json'](_0x113d16);}};}function respondWithFilteredResult(_0x5509ec,_0x5ad65a){return function(_0x37d688){if(_0x37d688){var _0x10ff81=typeof _0x5ad65a['offset']===_0xec3f('0x19')&&typeof _0x5ad65a[_0xec3f('0x1a')]===_0xec3f('0x19');var _0x3b7393=_0x37d688['count'];var _0x7805c=_0x10ff81?0x0:_0x5ad65a[_0xec3f('0x1b')];var _0x2d338=_0x10ff81?_0x37d688[_0xec3f('0x1c')]:_0x5ad65a[_0xec3f('0x1b')]+_0x5ad65a['limit'];var _0x2f8bc8;if(_0x2d338>=_0x3b7393){_0x2d338=_0x3b7393;_0x2f8bc8=0xc8;}else{_0x2f8bc8=0xce;}_0x5509ec['status'](_0x2f8bc8);return _0x5509ec[_0xec3f('0x1d')](_0xec3f('0x1e'),_0x7805c+'-'+_0x2d338+'/'+_0x3b7393)[_0xec3f('0x1f')](_0x37d688);}return null;};}function patchUpdates(_0x47b6f9){return function(_0x526ff){try{jsonpatch[_0xec3f('0x20')](_0x526ff,_0x47b6f9,!![]);}catch(_0x4fdfc3){return BPromise[_0xec3f('0x21')](_0x4fdfc3);}return _0x526ff[_0xec3f('0x22')]();};}function saveUpdates(_0x1f173f,_0x395b9a){return function(_0x4d9598){if(_0x4d9598){return _0x4d9598[_0xec3f('0x23')](_0x1f173f)[_0xec3f('0x24')](function(_0x2f45bb){return _0x2f45bb;});}return null;};}function removeEntity(_0x4e4770,_0xfc9c0d){return function(_0x4b5932){if(_0x4b5932){return _0x4b5932[_0xec3f('0x25')]()['then'](function(){var _0x56ecc3=_0x4b5932[_0xec3f('0x26')]({'plain':!![]});var _0x482bf2=_0xec3f('0x27');return db[_0xec3f('0x28')][_0xec3f('0x25')]({'where':{'type':_0x482bf2,'resourceId':_0x56ecc3['id']}})['then'](function(){return _0x4b5932;});})[_0xec3f('0x24')](function(){_0x4e4770[_0xec3f('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53cc0d,_0x3e5244){return function(_0x48e166){if(!_0x48e166){_0x53cc0d[_0xec3f('0x18')](0x194);}return _0x48e166;};}function handleError(_0x1b3155,_0x358fcd){_0x358fcd=_0x358fcd||0x1f4;return function(_0x2eac8d){logger[_0xec3f('0x2a')](_0x2eac8d[_0xec3f('0x2b')]);if(_0x2eac8d[_0xec3f('0x2c')]){delete _0x2eac8d[_0xec3f('0x2c')];}_0x1b3155['status'](_0x358fcd)[_0xec3f('0x2d')](_0x2eac8d);};}exports[_0xec3f('0x2e')]=function(_0x4bfff2,_0x91c11a){var _0xb6da0={},_0x328284={},_0x185b20={'count':0x0,'rows':[]};var _0x26fb2a=_[_0xec3f('0x2f')](db[_0xec3f('0x30')][_0xec3f('0x31')],function(_0x32a522){return{'name':_0x32a522[_0xec3f('0x32')],'type':_0x32a522[_0xec3f('0x33')][_0xec3f('0x34')]};});_0x328284[_0xec3f('0x35')]=_[_0xec3f('0x2f')](_0x26fb2a,_0xec3f('0x2c'));_0x328284['query']=_[_0xec3f('0x36')](_0x4bfff2[_0xec3f('0x37')]);_0x328284[_0xec3f('0x38')]=_[_0xec3f('0x39')](_0x328284[_0xec3f('0x35')],_0x328284['query']);_0xb6da0[_0xec3f('0x3a')]=_[_0xec3f('0x39')](_0x328284[_0xec3f('0x35')],qs['fields'](_0x4bfff2['query'][_0xec3f('0x3b')]));_0xb6da0['attributes']=_0xb6da0[_0xec3f('0x3a')]['length']?_0xb6da0[_0xec3f('0x3a')]:_0x328284['model'];if(!_0x4bfff2['query'][_0xec3f('0x3c')](_0xec3f('0x3d'))){_0xb6da0[_0xec3f('0x1a')]=qs[_0xec3f('0x1a')](_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x1a')]);_0xb6da0['offset']=qs['offset'](_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x1b')]);}_0xb6da0[_0xec3f('0x3e')]=qs[_0xec3f('0x3f')](_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x3f')]);_0xb6da0[_0xec3f('0x40')]=qs['filters'](_[_0xec3f('0x41')](_0x4bfff2['query'],_0x328284[_0xec3f('0x38')]),_0x26fb2a);if(_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x42')]){_0xb6da0[_0xec3f('0x40')]=_[_0xec3f('0x43')](_0xb6da0[_0xec3f('0x40')],{'$or':_[_0xec3f('0x2f')](_0x26fb2a,function(_0x17722c){if(_0x17722c[_0xec3f('0x33')]!==_0xec3f('0x44')){var _0x38a9e3={};_0x38a9e3[_0x17722c[_0xec3f('0x2c')]]={'$like':'%'+_0x4bfff2[_0xec3f('0x37')]['filter']+'%'};return _0x38a9e3;}})});}_0xb6da0=_[_0xec3f('0x43')]({},_0xb6da0,_0x4bfff2[_0xec3f('0x45')]);var _0x4b416d={'where':_0xb6da0[_0xec3f('0x40')]};return db[_0xec3f('0x30')]['count'](_0x4b416d)[_0xec3f('0x24')](function(_0xae1b8a){_0x185b20[_0xec3f('0x1c')]=_0xae1b8a;if(_0x4bfff2[_0xec3f('0x37')][_0xec3f('0x46')]){_0xb6da0[_0xec3f('0x47')]=[{'all':!![]}];}return db['Tag'][_0xec3f('0x48')](_0xb6da0);})[_0xec3f('0x24')](function(_0x1c6494){_0x185b20[_0xec3f('0x49')]=_0x1c6494;return _0x185b20;})[_0xec3f('0x24')](respondWithFilteredResult(_0x91c11a,_0xb6da0))[_0xec3f('0x4a')](handleError(_0x91c11a,null));};exports[_0xec3f('0x4b')]=function(_0x18c560,_0x42d1ae){var _0x5f4033={'raw':!![],'where':{'id':_0x18c560['params']['id']}},_0x8d0f18={};_0x8d0f18[_0xec3f('0x35')]=_[_0xec3f('0x36')](db[_0xec3f('0x30')][_0xec3f('0x31')]);_0x8d0f18[_0xec3f('0x37')]=_[_0xec3f('0x36')](_0x18c560[_0xec3f('0x37')]);_0x8d0f18[_0xec3f('0x38')]=_[_0xec3f('0x39')](_0x8d0f18[_0xec3f('0x35')],_0x8d0f18[_0xec3f('0x37')]);_0x5f4033[_0xec3f('0x3a')]=_['intersection'](_0x8d0f18[_0xec3f('0x35')],qs[_0xec3f('0x3b')](_0x18c560['query'][_0xec3f('0x3b')]));_0x5f4033[_0xec3f('0x3a')]=_0x5f4033[_0xec3f('0x3a')][_0xec3f('0x4c')]?_0x5f4033['attributes']:_0x8d0f18['model'];if(_0x18c560[_0xec3f('0x37')][_0xec3f('0x46')]){_0x5f4033['include']=[{'all':!![]}];}_0x5f4033=_[_0xec3f('0x43')]({},_0x5f4033,_0x18c560[_0xec3f('0x45')]);return db[_0xec3f('0x30')]['find'](_0x5f4033)[_0xec3f('0x24')](handleEntityNotFound(_0x42d1ae,null))['then'](respondWithResult(_0x42d1ae,null))['catch'](handleError(_0x42d1ae,null));};exports['create']=function(_0x97c57d,_0x1b7cf6){return db[_0xec3f('0x30')][_0xec3f('0x4d')](_0x97c57d['body'],{})[_0xec3f('0x24')](function(_0x54673e){var _0x5af435=_0x97c57d[_0xec3f('0x4e')][_0xec3f('0x26')]({'plain':!![]});if(!_0x5af435)throw new Error(_0xec3f('0x4f'));if(_0x5af435[_0xec3f('0x50')]===_0xec3f('0x4e')){var _0x515bf2=_0x54673e[_0xec3f('0x26')]({'plain':!![]});var _0x56e5c2=_0xec3f('0x27');return db['UserProfileSection'][_0xec3f('0x51')]({'where':{'name':_0x56e5c2,'userProfileId':_0x5af435['userProfileId']},'raw':!![]})[_0xec3f('0x24')](function(_0x370660){if(_0x370660&&_0x370660[_0xec3f('0x52')]===0x0){return db[_0xec3f('0x28')][_0xec3f('0x4d')]({'name':_0x515bf2[_0xec3f('0x2c')],'resourceId':_0x515bf2['id'],'type':_0x370660[_0xec3f('0x2c')],'sectionId':_0x370660['id']},{})[_0xec3f('0x24')](function(){return _0x54673e;});}else{return _0x54673e;}})['catch'](function(_0x230aad){logger[_0xec3f('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x230aad);throw _0x230aad;});}return _0x54673e;})[_0xec3f('0x24')](respondWithResult(_0x1b7cf6,0xc9))['catch'](handleError(_0x1b7cf6,null));};exports[_0xec3f('0x23')]=function(_0x4cc474,_0x3d1767){if(_0x4cc474['body']['id']){delete _0x4cc474[_0xec3f('0x53')]['id'];}return db['Tag'][_0xec3f('0x51')]({'where':{'id':_0x4cc474[_0xec3f('0x54')]['id']}})[_0xec3f('0x24')](handleEntityNotFound(_0x3d1767,null))[_0xec3f('0x24')](saveUpdates(_0x4cc474[_0xec3f('0x53')],null))[_0xec3f('0x24')](respondWithResult(_0x3d1767,null))['catch'](handleError(_0x3d1767,null));};exports[_0xec3f('0x25')]=function(_0x584c68,_0x13825e){return db[_0xec3f('0x30')][_0xec3f('0x51')]({'where':{'id':_0x584c68[_0xec3f('0x54')]['id']}})[_0xec3f('0x24')](handleEntityNotFound(_0x13825e,null))[_0xec3f('0x24')](removeEntity(_0x13825e,null))[_0xec3f('0x4a')](handleError(_0x13825e,null));};
\ No newline at end of file
index 5868993..38d656c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b80=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','Tag'];(function(_0x33a10e,_0x23fa41){var _0xe03a43=function(_0x3d8c7a){while(--_0x3d8c7a){_0x33a10e['push'](_0x33a10e['shift']());}};_0xe03a43(++_0x23fa41);}(_0x8b80,0xbb));var _0x08b8=function(_0x3e6b2f,_0x1ffa07){_0x3e6b2f=_0x3e6b2f-0x0;var _0x323215=_0x8b80[_0x3e6b2f];return _0x323215;};'use strict';var _=require(_0x08b8('0x0'));var util=require(_0x08b8('0x1'));var logger=require(_0x08b8('0x2'))('api');var moment=require(_0x08b8('0x3'));var BPromise=require(_0x08b8('0x4'));var rp=require(_0x08b8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x08b8('0x6'));var config=require(_0x08b8('0x7'));var attributes=require('./tag.attributes');module[_0x08b8('0x8')]=function(_0x43a809,_0x1abcfa){return _0x43a809[_0x08b8('0x9')](_0x08b8('0xa'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5df9=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','Tag','tools_tags'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5df9,0x152));var _0x95df=function(_0x4686c2,_0x255d04){_0x4686c2=_0x4686c2-0x0;var _0xd2b422=_0x5df9[_0x4686c2];return _0xd2b422;};'use strict';var _=require(_0x95df('0x0'));var util=require(_0x95df('0x1'));var logger=require(_0x95df('0x2'))(_0x95df('0x3'));var moment=require(_0x95df('0x4'));var BPromise=require('bluebird');var rp=require(_0x95df('0x5'));var fs=require('fs');var path=require(_0x95df('0x6'));var rimraf=require(_0x95df('0x7'));var config=require(_0x95df('0x8'));var attributes=require(_0x95df('0x9'));module[_0x95df('0xa')]=function(_0x5dd502,_0x1f30c0){return _0x5dd502['define'](_0x95df('0xb'),attributes,{'tableName':_0x95df('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 17d0616..9e30a36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7341=['debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Tag,\x20%s,\x20%s','request\x20sent'];(function(_0x102c49,_0x2f1e2b){var _0x26354b=function(_0x591f1d){while(--_0x591f1d){_0x102c49['push'](_0x102c49['shift']());}};_0x26354b(++_0x2f1e2b);}(_0x7341,0xe4));var _0x1734=function(_0x28767f,_0x9dd508){_0x28767f=_0x28767f-0x0;var _0x1eff3b=_0x7341[_0x28767f];return _0x1eff3b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1734('0x0'));var BPromise=require('bluebird');var rs=require(_0x1734('0x1'));var fs=require('fs');var Redis=require(_0x1734('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x1734('0x3'));var logger=require(_0x1734('0x4'))(_0x1734('0x5'));var config=require(_0x1734('0x6'));var jayson=require(_0x1734('0x7'));var client=jayson[_0x1734('0x8')][_0x1734('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c7349,_0x1ca30b,_0x2c223d){return new BPromise(function(_0x45c529,_0x5b8977){return client[_0x1734('0xa')](_0x4c7349,_0x2c223d)['then'](function(_0x56f0d5){logger[_0x1734('0xb')](_0x1734('0xc'),_0x1ca30b,_0x1734('0xd'));logger[_0x1734('0xe')](_0x1734('0xf'),_0x1ca30b,_0x1734('0xd'),JSON[_0x1734('0x10')](_0x56f0d5));if(_0x56f0d5[_0x1734('0x11')]){if(_0x56f0d5[_0x1734('0x11')][_0x1734('0x12')]===0x1f4){logger['error'](_0x1734('0xc'),_0x1ca30b,_0x56f0d5[_0x1734('0x11')][_0x1734('0x13')]);return _0x5b8977(_0x56f0d5[_0x1734('0x11')][_0x1734('0x13')]);}logger[_0x1734('0x11')](_0x1734('0xc'),_0x1ca30b,_0x56f0d5[_0x1734('0x11')][_0x1734('0x13')]);return _0x45c529(_0x56f0d5[_0x1734('0x11')][_0x1734('0x13')]);}else{logger[_0x1734('0xb')](_0x1734('0xc'),_0x1ca30b,_0x1734('0xd'));_0x45c529(_0x56f0d5[_0x1734('0x14')][_0x1734('0x13')]);}})[_0x1734('0x15')](function(_0x1ea188){logger[_0x1734('0x11')]('Tag,\x20%s,\x20%s',_0x1ca30b,_0x1ea188);_0x5b8977(_0x1ea188);});});}
\ No newline at end of file
+var _0xd58c=['jayson/promise','client','request','info','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','Tag,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x1bae8b,_0x87c842){var _0x33d115=function(_0x4dea4f){while(--_0x4dea4f){_0x1bae8b['push'](_0x1bae8b['shift']());}};_0x33d115(++_0x87c842);}(_0xd58c,0xb6));var _0xcd58=function(_0x48e292,_0x5701b8){_0x48e292=_0x48e292-0x0;var _0x5cb85d=_0xd58c[_0x48e292];return _0x5cb85d;};'use strict';var _=require(_0xcd58('0x0'));var util=require(_0xcd58('0x1'));var moment=require(_0xcd58('0x2'));var BPromise=require('bluebird');var rs=require(_0xcd58('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcd58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcd58('0x5'))(_0xcd58('0x6'));var config=require(_0xcd58('0x7'));var jayson=require(_0xcd58('0x8'));var client=jayson[_0xcd58('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x546187,_0x3f2c97,_0x31bf4e){return new BPromise(function(_0x43a501,_0x1ff4e9){return client[_0xcd58('0xa')](_0x546187,_0x31bf4e)['then'](function(_0x1ad5a1){logger[_0xcd58('0xb')]('Tag,\x20%s,\x20%s',_0x3f2c97,_0xcd58('0xc'));logger['debug'](_0xcd58('0xd'),_0x3f2c97,_0xcd58('0xc'),JSON[_0xcd58('0xe')](_0x1ad5a1));if(_0x1ad5a1['error']){if(_0x1ad5a1[_0xcd58('0xf')]['code']===0x1f4){logger[_0xcd58('0xf')]('Tag,\x20%s,\x20%s',_0x3f2c97,_0x1ad5a1[_0xcd58('0xf')][_0xcd58('0x10')]);return _0x1ff4e9(_0x1ad5a1[_0xcd58('0xf')][_0xcd58('0x10')]);}logger[_0xcd58('0xf')](_0xcd58('0x11'),_0x3f2c97,_0x1ad5a1[_0xcd58('0xf')][_0xcd58('0x10')]);return _0x43a501(_0x1ad5a1['error']['message']);}else{logger[_0xcd58('0xb')](_0xcd58('0x11'),_0x3f2c97,_0xcd58('0xc'));_0x43a501(_0x1ad5a1['result']['message']);}})[_0xcd58('0x12')](function(_0xeaee1f){logger[_0xcd58('0xf')]('Tag,\x20%s,\x20%s',_0x3f2c97,_0xeaee1f);_0x1ff4e9(_0xeaee1f);});});}
\ No newline at end of file
index 0a89d6f..5a7cf2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index d436691..37bcbcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x13a08a,_0x52da1c){var _0x152014=function(_0x18d227){while(--_0x18d227){_0x13a08a['push'](_0x13a08a['shift']());}};_0x152014(++_0x52da1c);}(_0x757a,0xde));var _0xa757=function(_0x11b3d4,_0x24a2a5){_0x11b3d4=_0x11b3d4-0x0;var _0x44148a=_0x757a[_0x11b3d4];return _0x44148a;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x7ccee9,_0x441c69){var _0x31afad=function(_0x53860d){while(--_0x53860d){_0x7ccee9['push'](_0x7ccee9['shift']());}};_0x31afad(++_0x441c69);}(_0x2032,0xd9));var _0x2203=function(_0x25bace,_0x3ea88d){_0x25bace=_0x25bace-0x0;var _0x4b9a46=_0x2032[_0x25bace];return _0x4b9a46;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7535456..b4c1700 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8356=['SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','UserProfileResource','send','findOne','channel','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','ValidationError','add','ids','removeQueues','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','through','QueueId','TeamVoiceQueue','penalty','User','findOrCreate','Queue:save','online','voicePause','interface','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','spread','isArray','transaction','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','map','Team','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','create','body','user','get','Teams','UserProfileSection','autoAssociation','find','destroy','params','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','sequelize','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId'];(function(_0x1b7230,_0x90b5e2){var _0x577253=function(_0x52c03f){while(--_0x52c03f){_0x1b7230['push'](_0x1b7230['shift']());}};_0x577253(++_0x90b5e2);}(_0x8356,0xd1));var _0x6835=function(_0x38dbd6,_0x15a82d){_0x38dbd6=_0x38dbd6-0x0;var _0x2e9afd=_0x8356[_0x38dbd6];return _0x2e9afd;};'use strict';var emlformat=require(_0x6835('0x0'));var rimraf=require(_0x6835('0x1'));var zipdir=require(_0x6835('0x2'));var jsonpatch=require(_0x6835('0x3'));var rp=require(_0x6835('0x4'));var moment=require(_0x6835('0x5'));var BPromise=require(_0x6835('0x6'));var Mustache=require(_0x6835('0x7'));var util=require(_0x6835('0x8'));var path=require(_0x6835('0x9'));var sox=require(_0x6835('0xa'));var csv=require(_0x6835('0xb'));var ejs=require(_0x6835('0xc'));var fs=require('fs');var fs_extra=require(_0x6835('0xd'));var _=require('lodash');var squel=require(_0x6835('0xe'));var crypto=require(_0x6835('0xf'));var jsforce=require(_0x6835('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6835('0x11'));var Redis=require(_0x6835('0x12'));var authService=require(_0x6835('0x13'));var qs=require(_0x6835('0x14'));var as=require(_0x6835('0x15'));var hardwareService=require(_0x6835('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x6835('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x6835('0x18'));var db=require(_0x6835('0x19'))['db'];config[_0x6835('0x1a')]=_[_0x6835('0x1b')](config[_0x6835('0x1a')],{'host':_0x6835('0x1c'),'port':0x18eb});var socket=require(_0x6835('0x1d'))(new Redis(config[_0x6835('0x1a')]));require(_0x6835('0x1e'))[_0x6835('0x1f')](socket);function respondWithStatusCode(_0x6dc7f0,_0x1966f1){_0x1966f1=_0x1966f1||0xcc;return function(_0x32f13d){if(_0x32f13d){return _0x6dc7f0[_0x6835('0x20')](_0x1966f1);}return _0x6dc7f0[_0x6835('0x21')](_0x1966f1)[_0x6835('0x22')]();};}function respondWithResult(_0x563c9c,_0x3ea92e){_0x3ea92e=_0x3ea92e||0xc8;return function(_0x2b6a6d){if(_0x2b6a6d){return _0x563c9c[_0x6835('0x21')](_0x3ea92e)[_0x6835('0x23')](_0x2b6a6d);}};}function respondWithFilteredResult(_0x5978e4,_0x270d2b){return function(_0x1812d6){if(_0x1812d6){var _0x38d24d=typeof _0x270d2b[_0x6835('0x24')]===_0x6835('0x25')&&typeof _0x270d2b['limit']===_0x6835('0x25');var _0x3747d3=_0x1812d6[_0x6835('0x26')];var _0x1c287f=_0x38d24d?0x0:_0x270d2b[_0x6835('0x24')];var _0x17a0ac=_0x38d24d?_0x1812d6[_0x6835('0x26')]:_0x270d2b[_0x6835('0x24')]+_0x270d2b['limit'];var _0x468580;if(_0x17a0ac>=_0x3747d3){_0x17a0ac=_0x3747d3;_0x468580=0xc8;}else{_0x468580=0xce;}_0x5978e4[_0x6835('0x21')](_0x468580);return _0x5978e4[_0x6835('0x27')](_0x6835('0x28'),_0x1c287f+'-'+_0x17a0ac+'/'+_0x3747d3)[_0x6835('0x23')](_0x1812d6);}return null;};}function patchUpdates(_0x32acae){return function(_0x45676e){try{jsonpatch[_0x6835('0x29')](_0x45676e,_0x32acae,!![]);}catch(_0x2f2a97){return BPromise[_0x6835('0x2a')](_0x2f2a97);}return _0x45676e[_0x6835('0x2b')]();};}function saveUpdates(_0x58388b,_0x412a95){return function(_0x510450){if(_0x510450){return _0x510450[_0x6835('0x2c')](_0x58388b)[_0x6835('0x2d')](function(_0x2a37bc){return _0x2a37bc;});}return null;};}function handleEntityNotFound(_0x89c3ff,_0x1911f2){return function(_0x2ce9b3){if(!_0x2ce9b3){_0x89c3ff[_0x6835('0x20')](0x194);}return _0x2ce9b3;};}function handleError(_0x4f37fd,_0x1f95ea){_0x1f95ea=_0x1f95ea||0x1f4;return function(_0x2d2711){logger[_0x6835('0x2e')](_0x2d2711[_0x6835('0x2f')]);if(_0x2d2711[_0x6835('0x30')]){delete _0x2d2711[_0x6835('0x30')];}_0x4f37fd[_0x6835('0x21')](_0x1f95ea)['send'](_0x2d2711);};}exports['index']=function(_0x2a1cda,_0x5dad8c){var _0x2a5570={},_0x22ea5b={},_0x363d2c={'count':0x0,'rows':[]};var _0x30f132=_[_0x6835('0x31')](db[_0x6835('0x32')][_0x6835('0x33')],function(_0x5ce76a){return{'name':_0x5ce76a[_0x6835('0x34')],'type':_0x5ce76a['type'][_0x6835('0x35')]};});_0x22ea5b[_0x6835('0x36')]=_['map'](_0x30f132,'name');_0x22ea5b[_0x6835('0x37')]=_[_0x6835('0x38')](_0x2a1cda[_0x6835('0x37')]);_0x22ea5b[_0x6835('0x39')]=_[_0x6835('0x3a')](_0x22ea5b[_0x6835('0x36')],_0x22ea5b[_0x6835('0x37')]);_0x2a5570[_0x6835('0x3b')]=_[_0x6835('0x3a')](_0x22ea5b[_0x6835('0x36')],qs[_0x6835('0x3c')](_0x2a1cda[_0x6835('0x37')]['fields']));_0x2a5570[_0x6835('0x3b')]=_0x2a5570[_0x6835('0x3b')][_0x6835('0x3d')]?_0x2a5570[_0x6835('0x3b')]:_0x22ea5b[_0x6835('0x36')];if(!_0x2a1cda['query'][_0x6835('0x3e')](_0x6835('0x3f'))){_0x2a5570['limit']=qs[_0x6835('0x40')](_0x2a1cda[_0x6835('0x37')][_0x6835('0x40')]);_0x2a5570[_0x6835('0x24')]=qs[_0x6835('0x24')](_0x2a1cda[_0x6835('0x37')]['offset']);}_0x2a5570[_0x6835('0x41')]=qs[_0x6835('0x42')](_0x2a1cda[_0x6835('0x37')][_0x6835('0x42')]);_0x2a5570[_0x6835('0x43')]=qs[_0x6835('0x39')](_[_0x6835('0x44')](_0x2a1cda['query'],_0x22ea5b[_0x6835('0x39')]),_0x30f132);if(_0x2a1cda['query'][_0x6835('0x45')]){_0x2a5570[_0x6835('0x43')]=_[_0x6835('0x46')](_0x2a5570[_0x6835('0x43')],{'$or':_[_0x6835('0x31')](_0x30f132,function(_0x59b352){if(_0x59b352['type']!==_0x6835('0x47')){var _0x18e812={};_0x18e812[_0x59b352['name']]={'$like':'%'+_0x2a1cda['query']['filter']+'%'};return _0x18e812;}})});}_0x2a5570=_[_0x6835('0x46')]({},_0x2a5570,_0x2a1cda[_0x6835('0x48')]);var _0x539963={'where':_0x2a5570[_0x6835('0x43')]};return db[_0x6835('0x32')]['count'](_0x539963)['then'](function(_0xd04f88){_0x363d2c[_0x6835('0x26')]=_0xd04f88;if(_0x2a1cda['query'][_0x6835('0x49')]){_0x2a5570[_0x6835('0x4a')]=[{'all':!![]}];}return db[_0x6835('0x32')][_0x6835('0x4b')](_0x2a5570);})['then'](function(_0xc34022){_0x363d2c[_0x6835('0x4c')]=_0xc34022;return _0x363d2c;})[_0x6835('0x2d')](respondWithFilteredResult(_0x5dad8c,_0x2a5570))[_0x6835('0x4d')](handleError(_0x5dad8c,null));};exports[_0x6835('0x4e')]=function(_0x515b4a,_0x208397){var _0x560980={'raw':![],'where':{'id':_0x515b4a['params']['id']}},_0x313e5d={};_0x313e5d['model']=_[_0x6835('0x38')](db[_0x6835('0x32')][_0x6835('0x33')]);_0x313e5d[_0x6835('0x37')]=_['keys'](_0x515b4a['query']);_0x313e5d[_0x6835('0x39')]=_[_0x6835('0x3a')](_0x313e5d[_0x6835('0x36')],_0x313e5d['query']);_0x560980[_0x6835('0x3b')]=_[_0x6835('0x3a')](_0x313e5d[_0x6835('0x36')],qs[_0x6835('0x3c')](_0x515b4a[_0x6835('0x37')]['fields']));_0x560980[_0x6835('0x3b')]=_0x560980[_0x6835('0x3b')][_0x6835('0x3d')]?_0x560980[_0x6835('0x3b')]:_0x313e5d[_0x6835('0x36')];if(_0x515b4a[_0x6835('0x37')][_0x6835('0x49')]){_0x560980[_0x6835('0x4a')]=[{'all':!![]}];}_0x560980=_[_0x6835('0x46')]({},_0x560980,_0x515b4a['options']);return db[_0x6835('0x32')]['find'](_0x560980)[_0x6835('0x2d')](handleEntityNotFound(_0x208397,null))[_0x6835('0x2d')](respondWithResult(_0x208397,null))[_0x6835('0x4d')](handleError(_0x208397,null));};exports[_0x6835('0x4f')]=function(_0x431c57,_0x388332){return db[_0x6835('0x32')][_0x6835('0x4f')](_0x431c57[_0x6835('0x50')],{})['then'](function(_0x2b277d){var _0x3ca7b4=_0x431c57[_0x6835('0x51')][_0x6835('0x52')]({'plain':!![]});if(!_0x3ca7b4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ca7b4['role']==='user'){var _0x5e84ca=_0x2b277d[_0x6835('0x52')]({'plain':!![]});var _0x3d5878=_0x6835('0x53');return db[_0x6835('0x54')]['find']({'where':{'name':_0x3d5878,'userProfileId':_0x3ca7b4['userProfileId']},'raw':!![]})['then'](function(_0x574368){if(_0x574368&&_0x574368[_0x6835('0x55')]===0x0){return db['UserProfileResource'][_0x6835('0x4f')]({'name':_0x5e84ca[_0x6835('0x30')],'resourceId':_0x5e84ca['id'],'type':_0x574368['name'],'sectionId':_0x574368['id']},{})[_0x6835('0x2d')](function(){return _0x2b277d;});}else{return _0x2b277d;}})[_0x6835('0x4d')](function(_0x4478de){logger[_0x6835('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4478de);throw _0x4478de;});}return _0x2b277d;})[_0x6835('0x2d')](respondWithResult(_0x388332,0xc9))[_0x6835('0x4d')](handleError(_0x388332,null));};exports['update']=function(_0x684d1,_0x22067c){if(_0x684d1['body']['id']){delete _0x684d1['body']['id'];}return db[_0x6835('0x32')][_0x6835('0x56')]({'where':{'id':_0x684d1['params']['id']}})['then'](handleEntityNotFound(_0x22067c,null))[_0x6835('0x2d')](saveUpdates(_0x684d1['body'],null))[_0x6835('0x2d')](respondWithResult(_0x22067c,null))[_0x6835('0x4d')](handleError(_0x22067c,null));};exports[_0x6835('0x57')]=function(_0x3cf082,_0x47ebf3){var _0x1935fa=_0x3cf082[_0x6835('0x58')]['id'];var _0x350b4e=[];return db['sequelize']['transaction'](function(_0x528bb0){var _0x3c42c7=_0x6835('0x59')+_0x1935fa;return db[_0x6835('0x5a')][_0x6835('0x37')](_0x3c42c7,{'type':db['Sequelize']['QueryTypes'][_0x6835('0x5b')],'raw':!![],'transaction':_0x528bb0})[_0x6835('0x2d')](function(_0x821703){_0x350b4e=_[_0x6835('0x31')](_0x821703,function(_0x398d9a){return Number(_0x398d9a[_0x6835('0x5c')]);});})[_0x6835('0x2d')](function(){var _0x30bd10=_0x6835('0x5d')+_0x1935fa;return db[_0x6835('0x5a')][_0x6835('0x37')](_0x30bd10,{'type':db[_0x6835('0x5e')][_0x6835('0x5f')][_0x6835('0x5b')],'raw':!![],'transaction':_0x528bb0});})[_0x6835('0x2d')](function(_0x5bfa80){var _0x225018=_[_0x6835('0x31')](_0x5bfa80,function(_0xb7a353){return Number(_0xb7a353[_0x6835('0x60')]);});return db[_0x6835('0x61')]['destroy']({'where':{'UserId':{'$in':_0x350b4e},'VoiceQueueId':{'$in':_0x225018}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){var _0xc06286=_0x6835('0x62')+_0x1935fa;return db['sequelize']['query'](_0xc06286,{'type':db['Sequelize'][_0x6835('0x5f')]['SELECT'],'raw':!![],'transaction':_0x528bb0});})[_0x6835('0x2d')](function(_0x143744){var _0x573d5f=_[_0x6835('0x31')](_0x143744,function(_0x46513c){return Number(_0x46513c[_0x6835('0x63')]);});return db['UserMailQueue']['destroy']({'where':{'UserId':{'$in':_0x350b4e},'MailQueueId':{'$in':_0x573d5f}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){var _0x2fd6c7=_0x6835('0x64')+_0x1935fa;return db[_0x6835('0x5a')]['query'](_0x2fd6c7,{'type':db[_0x6835('0x5e')][_0x6835('0x5f')]['SELECT'],'raw':!![],'transaction':_0x528bb0});})[_0x6835('0x2d')](function(_0xb19685){var _0xf4ce93=_[_0x6835('0x31')](_0xb19685,function(_0x506e7b){return Number(_0x506e7b[_0x6835('0x65')]);});return db[_0x6835('0x66')][_0x6835('0x57')]({'where':{'UserId':{'$in':_0x350b4e},'SmsQueueId':{'$in':_0xf4ce93}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){var _0xe69d79=_0x6835('0x67')+_0x1935fa;return db[_0x6835('0x5a')][_0x6835('0x37')](_0xe69d79,{'type':db['Sequelize']['QueryTypes'][_0x6835('0x5b')],'raw':!![],'transaction':_0x528bb0});})['then'](function(_0x38d403){var _0x58c411=_[_0x6835('0x31')](_0x38d403,function(_0x548c0d){return Number(_0x548c0d[_0x6835('0x68')]);});return db[_0x6835('0x69')][_0x6835('0x57')]({'where':{'UserId':{'$in':_0x350b4e},'ChatQueueId':{'$in':_0x58c411}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){var _0x3c433b=_0x6835('0x6a')+_0x1935fa;return db[_0x6835('0x5a')][_0x6835('0x37')](_0x3c433b,{'type':db[_0x6835('0x5e')]['QueryTypes'][_0x6835('0x5b')],'raw':!![],'transaction':_0x528bb0});})[_0x6835('0x2d')](function(_0x16e3ee){var _0x5a7c19=_['map'](_0x16e3ee,function(_0x17339c){return Number(_0x17339c[_0x6835('0x6b')]);});return db[_0x6835('0x6c')][_0x6835('0x57')]({'where':{'UserId':{'$in':_0x350b4e},'FaxQueueId':{'$in':_0x5a7c19}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){var _0x736bb=_0x6835('0x6d')+_0x1935fa;return db[_0x6835('0x5a')][_0x6835('0x37')](_0x736bb,{'type':db[_0x6835('0x5e')][_0x6835('0x5f')][_0x6835('0x5b')],'raw':!![],'transaction':_0x528bb0});})['then'](function(_0x2ed5af){var _0x3456f4=_['map'](_0x2ed5af,function(_0x27d4d1){return Number(_0x27d4d1[_0x6835('0x6e')]);});return db['UserOpenchannelQueue']['destroy']({'where':{'UserId':{'$in':_0x350b4e},'OpenchannelQueueId':{'$in':_0x3456f4}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){var _0x55b89b=_0x6835('0x6f')+_0x1935fa;return db[_0x6835('0x5a')][_0x6835('0x37')](_0x55b89b,{'type':db[_0x6835('0x5e')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x528bb0});})[_0x6835('0x2d')](function(_0x3dbfe1){var _0x5924c7=_[_0x6835('0x31')](_0x3dbfe1,function(_0x381879){return Number(_0x381879[_0x6835('0x70')]);});return db[_0x6835('0x71')][_0x6835('0x57')]({'where':{'UserId':{'$in':_0x350b4e},'WhatsappQueueId':{'$in':_0x5924c7}},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){return db[_0x6835('0x72')]['find']({'where':{'TeamId':_0x1935fa}});})['then'](function(_0x4c65a4){if(_0x4c65a4===null){return;}return db[_0x6835('0x73')]['destroy']({'where':{'UserId':{'$in':_0x350b4e},'VoicePrefixId':_0x4c65a4[_0x6835('0x74')]},'transaction':_0x528bb0});})[_0x6835('0x2d')](function(){return db[_0x6835('0x32')]['destroy']({'where':{'id':_0x1935fa},'cascade':!![],'transaction':_0x528bb0});})[_0x6835('0x2d')](function(_0x278a43){if(_0x278a43===0x0){_0x47ebf3['sendStatus'](0x194);}else{return db[_0x6835('0x75')]['destroy']({'where':{'type':_0x6835('0x53'),'resourceId':_0x1935fa},'cascade':!![],'transaction':_0x528bb0})[_0x6835('0x2d')](function(){_0x47ebf3[_0x6835('0x21')](0xcc)[_0x6835('0x22')]();});}})['catch'](function(_0x3754d7){_0x47ebf3['status'](0x1f4)[_0x6835('0x76')](_0x3754d7);});});};exports['getQueues']=function(_0x52645d,_0x2745f7,_0x15d051){return db['Team'][_0x6835('0x77')]({'where':{'id':_0x52645d[_0x6835('0x58')]['id']}})[_0x6835('0x2d')](handleEntityNotFound(_0x2745f7,null))[_0x6835('0x2d')](function(_0x557ef6){if(!_0x52645d['query'][_0x6835('0x78')]||!utils[_0x6835('0x79')](_0x52645d[_0x6835('0x37')]['channel'])){throw new db[(_0x6835('0x5e'))]['ValidationError'](_0x6835('0x7a'));}var _0xb9da9c={};var _0x934de1={};_0x934de1[_0x6835('0x36')]=_[_0x6835('0x38')](db[_[_0x6835('0x7b')](_0x52645d['query'][_0x6835('0x78')][_0x6835('0x7c')]())+_0x6835('0x7d')][_0x6835('0x33')]);_0x934de1[_0x6835('0x37')]=_[_0x6835('0x38')](_0x52645d[_0x6835('0x37')]);_0x934de1[_0x6835('0x39')]=_[_0x6835('0x3a')](_0x934de1['model'],_0x934de1[_0x6835('0x37')]);_0xb9da9c[_0x6835('0x3b')]=_[_0x6835('0x3a')](_0x934de1[_0x6835('0x36')],qs[_0x6835('0x3c')](_0x52645d[_0x6835('0x37')][_0x6835('0x3c')]));_0xb9da9c['attributes']=_0xb9da9c['attributes'][_0x6835('0x3d')]?_0xb9da9c['attributes']:_0x934de1[_0x6835('0x36')];_0xb9da9c[_0x6835('0x40')]=qs[_0x6835('0x40')](_0x52645d['query'][_0x6835('0x40')]);_0xb9da9c[_0x6835('0x24')]=qs[_0x6835('0x24')](_0x52645d[_0x6835('0x37')][_0x6835('0x24')]);_0xb9da9c[_0x6835('0x41')]=qs[_0x6835('0x42')](_0x52645d[_0x6835('0x37')]['sort']);_0xb9da9c[_0x6835('0x43')]=qs[_0x6835('0x39')](_['pick'](_0x52645d[_0x6835('0x37')],_0x934de1[_0x6835('0x39')]));_0xb9da9c=_[_0x6835('0x46')]({},_0xb9da9c,_0x52645d[_0x6835('0x48')]);return _0x557ef6[_0x6835('0x52')+_['capitalize'](_0x52645d[_0x6835('0x37')]['channel']['toLowerCase']())+_0x6835('0x7e')](_0xb9da9c);})['then'](respondWithResult(_0x2745f7,null))[_0x6835('0x4d')](handleError(_0x2745f7,null));};exports['addQueues']=function(_0x40bdee,_0x3f0700,_0x244d00){return db['Team']['findOne']({'where':{'id':_0x40bdee['params']['id']}})[_0x6835('0x2d')](function(_0x19d527){if(_0x19d527){if(!_0x40bdee['body'][_0x6835('0x78')]||!utils[_0x6835('0x79')](_0x40bdee[_0x6835('0x50')][_0x6835('0x78')])){throw new db[(_0x6835('0x5e'))][(_0x6835('0x7f'))](_0x6835('0x7a'));}return _0x19d527[_0x6835('0x80')+_[_0x6835('0x7b')](_0x40bdee[_0x6835('0x50')][_0x6835('0x78')]['toLowerCase']())+_0x6835('0x7e')](_0x40bdee['body'][_0x6835('0x81')]);}return null;})['then'](handleEntityNotFound(_0x3f0700,null))[_0x6835('0x2d')](respondWithStatusCode(_0x3f0700,null))[_0x6835('0x4d')](handleError(_0x3f0700,null));};exports[_0x6835('0x82')]=function(_0x47429d,_0x468ce4,_0xd862){return db[_0x6835('0x32')][_0x6835('0x77')]({'where':{'id':_0x47429d['params']['id']}})[_0x6835('0x2d')](function(_0x37ddf){if(_0x37ddf){if(!_0x47429d[_0x6835('0x37')][_0x6835('0x78')]||!utils[_0x6835('0x79')](_0x47429d[_0x6835('0x37')][_0x6835('0x78')])){throw new db[(_0x6835('0x5e'))][(_0x6835('0x7f'))](_0x6835('0x7a'));}return _0x37ddf['remove'+_['capitalize'](_0x47429d[_0x6835('0x37')][_0x6835('0x78')]['toLowerCase']())+_0x6835('0x7e')](_0x47429d['query'][_0x6835('0x81')]);}return null;})['then'](handleEntityNotFound(_0x468ce4,null))[_0x6835('0x2d')](respondWithStatusCode(_0x468ce4,null))[_0x6835('0x4d')](handleError(_0x468ce4,null));};exports[_0x6835('0x83')]=function(_0x5d944e,_0x381dd3){var _0x351cf9=_['isArray'](_0x5d944e['body'][_0x6835('0x81')])?_0x5d944e['body']['ids']:[_0x5d944e[_0x6835('0x50')]['ids']];var _0x5b4128=_0x5d944e[_0x6835('0x58')]['id'];return db[_0x6835('0x32')][_0x6835('0x56')]({'where':{'id':_0x5b4128}})[_0x6835('0x2d')](handleEntityNotFound(_0x381dd3,null))[_0x6835('0x2d')](function(_0x5d9746){if(_0x5d9746){var _0x160357=[_0x6835('0x84'),_0x6835('0x85'),_0x6835('0x86'),_0x6835('0x87'),_0x6835('0x88'),_0x6835('0x89'),_0x6835('0x8a')];return db['sequelize']['transaction'](function(_0xf0a571){var _0x85faea=_[_0x6835('0x31')](_0x160357,function(_0x3c5064){var _0x4a3b68={'attributes':['id',_0x6835('0x30')]};if(_0x3c5064==='Voice'){_0x4a3b68[_0x6835('0x8b')]={'attributes':['penalty']};}return _0x5d9746[_0x6835('0x52')+_0x3c5064+_0x6835('0x7e')](_0x4a3b68)['then'](function(_0x3488c9){var _0x1d40ad=_[_0x6835('0x31')](_0x3488c9,function(_0x3928a2){var _0x20b041=_[_0x6835('0x31')](_0x351cf9,function(_0x54a5de){var _0x447976={'where':{'UserId':_0x54a5de,[_0x3c5064+_0x6835('0x8c')]:_0x3928a2['id']},'transaction':_0xf0a571};if(_0x3c5064===_0x6835('0x84')){_0x447976[_0x6835('0x1b')]={'penalty':_0x3928a2[_0x6835('0x8d')][_0x6835('0x8e')]};}return db[_0x6835('0x8f')+_0x3c5064+_0x6835('0x7d')][_0x6835('0x90')](_0x447976)['then'](function(){socket['emit'](_0x6835('0x51')+_0x3c5064+_0x6835('0x91'),{'UserId':_0x54a5de,[_0x3c5064+_0x6835('0x8c')]:_0x3928a2['id']});if(_0x3c5064!==_0x6835('0x84')){return;}return db[_0x6835('0x8f')][_0x6835('0x4b')]({'where':{'id':_0x351cf9,'online':0x1},'attributes':['id',_0x6835('0x30'),_0x6835('0x92'),_0x6835('0x93'),_0x6835('0x94')],'raw':!![]})[_0x6835('0x2d')](function(_0x568e0b){var _0x39afb3=_['map'](_0x568e0b,function(_0x2f981b){return db[_0x6835('0x95')][_0x6835('0x96')]({'membername':_0x2f981b[_0x6835('0x30')],'UserId':_0x2f981b['id'],'queue_name':_0x3928a2['name'],'VoiceQueueId':_0x3928a2['id'],'interface':_[_0x6835('0x97')](_0x2f981b[_0x6835('0x94')])?util[_0x6835('0x98')](_0x6835('0x99'),_0x2f981b[_0x6835('0x30')]):_0x2f981b['interface'],'paused':_0x2f981b[_0x6835('0x93')]||![],'penalty':_0x3928a2['TeamVoiceQueue'][_0x6835('0x8e')]},{'transaction':_0xf0a571});});return Promise['all'](_0x39afb3);});});});return Promise[_0x6835('0x9a')](_0x20b041);});return Promise[_0x6835('0x9a')](_0x1d40ad);})[_0x6835('0x2d')](function(){return db[_0x6835('0x72')][_0x6835('0x77')]({'where':{'teamId':_0x5b4128}})[_0x6835('0x2d')](function(_0x3973b9){if(_0x3973b9){var _0x42450e=_['map'](_0x351cf9,function(_0x2a04e9){db[_0x6835('0x73')]['upsert']({'UserId':_0x2a04e9,'VoicePrefixId':_0x3973b9[_0x6835('0x74')]});});return Promise[_0x6835('0x9a')](_0x42450e);}});});});return Promise[_0x6835('0x9a')](_0x85faea)[_0x6835('0x2d')](function(){return _0x5d9746[_0x6835('0x83')](_0x351cf9,{'transaction':_0xf0a571})[_0x6835('0x9b')](function(_0x61030){return _0x61030;});});});}})[_0x6835('0x2d')](respondWithResult(_0x381dd3,null))['catch'](handleError(_0x381dd3,null));};exports['removeAgents']=function(_0x123076,_0x3ece8e){var _0x8ab31e=_[_0x6835('0x9c')](_0x123076[_0x6835('0x37')]['ids'])?_0x123076[_0x6835('0x37')][_0x6835('0x81')]:[_0x123076[_0x6835('0x37')]['ids']];var _0x3c333f=_0x123076[_0x6835('0x58')]['id'];return db[_0x6835('0x32')][_0x6835('0x56')]({'where':{'id':_0x3c333f}})[_0x6835('0x2d')](handleEntityNotFound(_0x3ece8e,null))[_0x6835('0x2d')](function(_0x5c8235){if(_0x5c8235){var _0x2a19ac=[_0x6835('0x84'),_0x6835('0x85'),'Mail',_0x6835('0x87'),_0x6835('0x88'),'Openchannel',_0x6835('0x8a')];return db[_0x6835('0x5a')][_0x6835('0x9d')](function(_0x3a035a){var _0x214bd2=_[_0x6835('0x31')](_0x2a19ac,function(_0x544d3d){var _0x342470={'attributes':['id',_0x6835('0x30')]};return _0x5c8235[_0x6835('0x52')+_0x544d3d+_0x6835('0x7e')](_0x342470)[_0x6835('0x2d')](function(_0x2d4277){var _0x18f564=_[_0x6835('0x31')](_0x2d4277,function(_0x3e051){return _0x3e051[_0x6835('0x9e')](_0x8ab31e,{'transaction':_0x3a035a})['then'](function(){var _0x468a4f=_['map'](_0x8ab31e,function(_0x12c28f){socket['emit'](_0x6835('0x51')+_0x544d3d+'Queue:remove',{'UserId':Number(_0x12c28f),[_0x544d3d+'QueueId']:_0x3e051['id']});if(_0x544d3d!==_0x6835('0x84')){return;}return db[_0x6835('0x95')][_0x6835('0x57')]({'where':{'VoiceQueueId':_0x3e051['id'],'UserId':_0x12c28f},'transaction':_0x3a035a});});return Promise[_0x6835('0x9a')](_0x468a4f);});});return Promise['all'](_0x18f564);});});return Promise['all'](_0x214bd2)['then'](function(){return _0x5c8235['removeAgents'](_0x8ab31e,{'transaction':_0x3a035a});})[_0x6835('0x2d')](function(){return db[_0x6835('0x72')][_0x6835('0x77')]({'where':{'teamId':_0x3c333f}})[_0x6835('0x2d')](function(_0x481a65){if(_0x481a65){var _0x1dd20a=_[_0x6835('0x31')](_0x8ab31e,function(_0x599bd7){db[_0x6835('0x73')][_0x6835('0x57')]({'where':{'UserId':_0x599bd7,'VoicePrefixId':_0x481a65['VoicePrefixId']}});});return Promise[_0x6835('0x9a')](_0x1dd20a);}});});});}})[_0x6835('0x2d')](respondWithStatusCode(_0x3ece8e,null))[_0x6835('0x4d')](handleError(_0x3ece8e,null));};exports['getAgents']=function(_0x50f06d,_0x29fca0,_0x7d14dd){var _0x5d2921={};var _0x4ddec6={};var _0x4d0bdc;var _0x3e9bab;return db[_0x6835('0x32')][_0x6835('0x77')]({'where':{'id':_0x50f06d[_0x6835('0x58')]['id']}})[_0x6835('0x2d')](handleEntityNotFound(_0x29fca0,null))[_0x6835('0x2d')](function(_0x142600){if(_0x142600){_0x4d0bdc=_0x142600;_0x4ddec6[_0x6835('0x36')]=_[_0x6835('0x38')](db[_0x6835('0x8f')][_0x6835('0x33')]);_0x4ddec6[_0x6835('0x37')]=_[_0x6835('0x38')](_0x50f06d[_0x6835('0x37')]);_0x4ddec6[_0x6835('0x39')]=_[_0x6835('0x3a')](_0x4ddec6[_0x6835('0x36')],_0x4ddec6[_0x6835('0x37')]);_0x5d2921[_0x6835('0x3b')]=_[_0x6835('0x3a')](_0x4ddec6[_0x6835('0x36')],qs[_0x6835('0x3c')](_0x50f06d[_0x6835('0x37')][_0x6835('0x3c')]));_0x5d2921[_0x6835('0x3b')]=_0x5d2921['attributes']['length']?_0x5d2921[_0x6835('0x3b')]:_0x4ddec6[_0x6835('0x36')];_0x5d2921[_0x6835('0x41')]=qs['sort'](_0x50f06d[_0x6835('0x37')][_0x6835('0x42')]);_0x5d2921[_0x6835('0x43')]=qs[_0x6835('0x39')](_['pick'](_0x50f06d[_0x6835('0x37')],_0x4ddec6[_0x6835('0x39')]));if(_0x50f06d['query'][_0x6835('0x45')]){_0x5d2921[_0x6835('0x43')]=_[_0x6835('0x46')](_0x5d2921['where'],{'$or':_[_0x6835('0x31')](_0x5d2921['attributes'],function(_0x14ccaf){var _0x3eec8c={};_0x3eec8c[_0x14ccaf]={'$like':'%'+_0x50f06d[_0x6835('0x37')][_0x6835('0x45')]+'%'};return _0x3eec8c;})});}_0x5d2921=_[_0x6835('0x46')]({},_0x5d2921,_0x50f06d['options']);return _0x4d0bdc[_0x6835('0x9f')](_0x5d2921);}})[_0x6835('0x2d')](function(_0xeb8e1b){if(_0xeb8e1b){_0x3e9bab=_0xeb8e1b[_0x6835('0x3d')];if(!_0x50f06d[_0x6835('0x37')][_0x6835('0x3e')](_0x6835('0x3f'))){_0x5d2921['limit']=qs[_0x6835('0x40')](_0x50f06d['query'][_0x6835('0x40')]);_0x5d2921[_0x6835('0x24')]=qs[_0x6835('0x24')](_0x50f06d['query'][_0x6835('0x24')]);}return _0x4d0bdc[_0x6835('0x9f')](_0x5d2921);}})[_0x6835('0x2d')](function(_0x1a17cc){if(_0x1a17cc){return _0x1a17cc?{'count':_0x3e9bab,'rows':_0x1a17cc}:null;}})[_0x6835('0x2d')](respondWithResult(_0x29fca0,null))['catch'](handleError(_0x29fca0,null));};
\ No newline at end of file
+var _0x8d16=['fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./team.socket','register','status','end','json','offset','undefined','count','limit','set','save','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','Team','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','transaction','Sequelize','QueryTypes','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','TeamVoicePrefix','UserVoicePrefix','getQueues','findOne','channel','Unknown\x20channel','capitalize','toLowerCase','Queue','addQueues','ids','removeQueues','isValidChannel','remove','addAgents','isArray','Chat','Mail','Openchannel','Whatsapp','Voice','through','penalty','Queues','TeamVoiceQueue','User','findOrCreate','emit','QueueId','online','voicePause','UserVoiceQueueRt','upsert','isNil','format','SIP/%s','all','spread','Sms','Fax','removeAgents','Queue:remove','VoicePrefixId','getAgents','zip-dir'];(function(_0x557dec,_0x397865){var _0x39ef20=function(_0x525571){while(--_0x525571){_0x557dec['push'](_0x557dec['shift']());}};_0x39ef20(++_0x397865);}(_0x8d16,0x131));var _0x68d1=function(_0x5dbe34,_0x17081c){_0x5dbe34=_0x5dbe34-0x0;var _0xd9592b=_0x8d16[_0x5dbe34];return _0xd9592b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x68d1('0x0'));var jsonpatch=require(_0x68d1('0x1'));var rp=require(_0x68d1('0x2'));var moment=require('moment');var BPromise=require(_0x68d1('0x3'));var Mustache=require(_0x68d1('0x4'));var util=require('util');var path=require(_0x68d1('0x5'));var sox=require(_0x68d1('0x6'));var csv=require(_0x68d1('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x68d1('0x8'));var jsforce=require(_0x68d1('0x9'));var deskjs=require(_0x68d1('0xa'));var toCsv=require(_0x68d1('0x7'));var querystring=require(_0x68d1('0xb'));var Papa=require(_0x68d1('0xc'));var Redis=require(_0x68d1('0xd'));var authService=require(_0x68d1('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68d1('0xf'));var logger=require(_0x68d1('0x10'))('api');var utils=require(_0x68d1('0x11'));var config=require(_0x68d1('0x12'));var licenseUtil=require(_0x68d1('0x13'));var db=require(_0x68d1('0x14'))['db'];config[_0x68d1('0x15')]=_[_0x68d1('0x16')](config[_0x68d1('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x68d1('0x17'))(new Redis(config[_0x68d1('0x15')]));require(_0x68d1('0x18'))[_0x68d1('0x19')](socket);function respondWithStatusCode(_0x826460,_0x3a2b99){_0x3a2b99=_0x3a2b99||0xcc;return function(_0x56e036){if(_0x56e036){return _0x826460['sendStatus'](_0x3a2b99);}return _0x826460[_0x68d1('0x1a')](_0x3a2b99)[_0x68d1('0x1b')]();};}function respondWithResult(_0x211022,_0x463e62){_0x463e62=_0x463e62||0xc8;return function(_0x5e4022){if(_0x5e4022){return _0x211022[_0x68d1('0x1a')](_0x463e62)[_0x68d1('0x1c')](_0x5e4022);}};}function respondWithFilteredResult(_0x4db2b5,_0x208424){return function(_0x23c4ea){if(_0x23c4ea){var _0x3b15e3=typeof _0x208424[_0x68d1('0x1d')]==='undefined'&&typeof _0x208424['limit']===_0x68d1('0x1e');var _0x2622ed=_0x23c4ea[_0x68d1('0x1f')];var _0x6ab73d=_0x3b15e3?0x0:_0x208424[_0x68d1('0x1d')];var _0x28e0dd=_0x3b15e3?_0x23c4ea[_0x68d1('0x1f')]:_0x208424[_0x68d1('0x1d')]+_0x208424[_0x68d1('0x20')];var _0xfff4e8;if(_0x28e0dd>=_0x2622ed){_0x28e0dd=_0x2622ed;_0xfff4e8=0xc8;}else{_0xfff4e8=0xce;}_0x4db2b5[_0x68d1('0x1a')](_0xfff4e8);return _0x4db2b5[_0x68d1('0x21')]('Content-Range',_0x6ab73d+'-'+_0x28e0dd+'/'+_0x2622ed)[_0x68d1('0x1c')](_0x23c4ea);}return null;};}function patchUpdates(_0x9a6531){return function(_0x5c4225){try{jsonpatch['apply'](_0x5c4225,_0x9a6531,!![]);}catch(_0x3ef49a){return BPromise['reject'](_0x3ef49a);}return _0x5c4225[_0x68d1('0x22')]();};}function saveUpdates(_0x213213,_0x41f2b8){return function(_0xf6e74f){if(_0xf6e74f){return _0xf6e74f[_0x68d1('0x23')](_0x213213)[_0x68d1('0x24')](function(_0x352ba3){return _0x352ba3;});}return null;};}function handleEntityNotFound(_0x416e7c,_0x5530f2){return function(_0x3949ef){if(!_0x3949ef){_0x416e7c[_0x68d1('0x25')](0x194);}return _0x3949ef;};}function handleError(_0x13b36e,_0x561fdc){_0x561fdc=_0x561fdc||0x1f4;return function(_0x2c9295){logger[_0x68d1('0x26')](_0x2c9295[_0x68d1('0x27')]);if(_0x2c9295[_0x68d1('0x28')]){delete _0x2c9295[_0x68d1('0x28')];}_0x13b36e[_0x68d1('0x1a')](_0x561fdc)[_0x68d1('0x29')](_0x2c9295);};}exports[_0x68d1('0x2a')]=function(_0x279f23,_0x9a6a07){var _0x40c795={},_0x428200={},_0x1faa9a={'count':0x0,'rows':[]};var _0x109b73=_[_0x68d1('0x2b')](db['Team'][_0x68d1('0x2c')],function(_0x1a17d5){return{'name':_0x1a17d5[_0x68d1('0x2d')],'type':_0x1a17d5['type'][_0x68d1('0x2e')]};});_0x428200[_0x68d1('0x2f')]=_[_0x68d1('0x2b')](_0x109b73,_0x68d1('0x28'));_0x428200[_0x68d1('0x30')]=_[_0x68d1('0x31')](_0x279f23[_0x68d1('0x30')]);_0x428200['filters']=_[_0x68d1('0x32')](_0x428200[_0x68d1('0x2f')],_0x428200[_0x68d1('0x30')]);_0x40c795[_0x68d1('0x33')]=_[_0x68d1('0x32')](_0x428200[_0x68d1('0x2f')],qs[_0x68d1('0x34')](_0x279f23[_0x68d1('0x30')][_0x68d1('0x34')]));_0x40c795['attributes']=_0x40c795['attributes'][_0x68d1('0x35')]?_0x40c795[_0x68d1('0x33')]:_0x428200['model'];if(!_0x279f23[_0x68d1('0x30')][_0x68d1('0x36')](_0x68d1('0x37'))){_0x40c795[_0x68d1('0x20')]=qs[_0x68d1('0x20')](_0x279f23['query'][_0x68d1('0x20')]);_0x40c795['offset']=qs[_0x68d1('0x1d')](_0x279f23[_0x68d1('0x30')][_0x68d1('0x1d')]);}_0x40c795[_0x68d1('0x38')]=qs[_0x68d1('0x39')](_0x279f23[_0x68d1('0x30')][_0x68d1('0x39')]);_0x40c795['where']=qs[_0x68d1('0x3a')](_[_0x68d1('0x3b')](_0x279f23[_0x68d1('0x30')],_0x428200[_0x68d1('0x3a')]),_0x109b73);if(_0x279f23[_0x68d1('0x30')][_0x68d1('0x3c')]){_0x40c795[_0x68d1('0x3d')]=_[_0x68d1('0x3e')](_0x40c795['where'],{'$or':_[_0x68d1('0x2b')](_0x109b73,function(_0x2ebe98){if(_0x2ebe98[_0x68d1('0x3f')]!==_0x68d1('0x40')){var _0x21d38f={};_0x21d38f[_0x2ebe98[_0x68d1('0x28')]]={'$like':'%'+_0x279f23[_0x68d1('0x30')][_0x68d1('0x3c')]+'%'};return _0x21d38f;}})});}_0x40c795=_['merge']({},_0x40c795,_0x279f23[_0x68d1('0x41')]);var _0x3e1ff0={'where':_0x40c795[_0x68d1('0x3d')]};return db[_0x68d1('0x42')][_0x68d1('0x1f')](_0x3e1ff0)[_0x68d1('0x24')](function(_0x517323){_0x1faa9a['count']=_0x517323;if(_0x279f23[_0x68d1('0x30')][_0x68d1('0x43')]){_0x40c795[_0x68d1('0x44')]=[{'all':!![]}];}return db[_0x68d1('0x42')][_0x68d1('0x45')](_0x40c795);})[_0x68d1('0x24')](function(_0x5446a0){_0x1faa9a[_0x68d1('0x46')]=_0x5446a0;return _0x1faa9a;})['then'](respondWithFilteredResult(_0x9a6a07,_0x40c795))[_0x68d1('0x47')](handleError(_0x9a6a07,null));};exports[_0x68d1('0x48')]=function(_0xef0189,_0x59fd07){var _0x5a74d4={'raw':![],'where':{'id':_0xef0189[_0x68d1('0x49')]['id']}},_0x466d18={};_0x466d18['model']=_[_0x68d1('0x31')](db['Team'][_0x68d1('0x2c')]);_0x466d18['query']=_[_0x68d1('0x31')](_0xef0189[_0x68d1('0x30')]);_0x466d18[_0x68d1('0x3a')]=_[_0x68d1('0x32')](_0x466d18[_0x68d1('0x2f')],_0x466d18['query']);_0x5a74d4['attributes']=_[_0x68d1('0x32')](_0x466d18[_0x68d1('0x2f')],qs[_0x68d1('0x34')](_0xef0189[_0x68d1('0x30')][_0x68d1('0x34')]));_0x5a74d4['attributes']=_0x5a74d4[_0x68d1('0x33')][_0x68d1('0x35')]?_0x5a74d4[_0x68d1('0x33')]:_0x466d18[_0x68d1('0x2f')];if(_0xef0189['query']['includeAll']){_0x5a74d4['include']=[{'all':!![]}];}_0x5a74d4=_[_0x68d1('0x3e')]({},_0x5a74d4,_0xef0189['options']);return db[_0x68d1('0x42')][_0x68d1('0x4a')](_0x5a74d4)[_0x68d1('0x24')](handleEntityNotFound(_0x59fd07,null))[_0x68d1('0x24')](respondWithResult(_0x59fd07,null))[_0x68d1('0x47')](handleError(_0x59fd07,null));};exports[_0x68d1('0x4b')]=function(_0x2e55ff,_0x4e02e9){return db['Team'][_0x68d1('0x4b')](_0x2e55ff[_0x68d1('0x4c')],{})[_0x68d1('0x24')](function(_0x5b28c0){var _0x5e68b3=_0x2e55ff[_0x68d1('0x4d')][_0x68d1('0x4e')]({'plain':!![]});if(!_0x5e68b3)throw new Error(_0x68d1('0x4f'));if(_0x5e68b3['role']==='user'){var _0x55ff39=_0x5b28c0['get']({'plain':!![]});var _0x307db0=_0x68d1('0x50');return db[_0x68d1('0x51')][_0x68d1('0x4a')]({'where':{'name':_0x307db0,'userProfileId':_0x5e68b3['userProfileId']},'raw':!![]})['then'](function(_0x493680){if(_0x493680&&_0x493680['autoAssociation']===0x0){return db[_0x68d1('0x52')]['create']({'name':_0x55ff39[_0x68d1('0x28')],'resourceId':_0x55ff39['id'],'type':_0x493680[_0x68d1('0x28')],'sectionId':_0x493680['id']},{})[_0x68d1('0x24')](function(){return _0x5b28c0;});}else{return _0x5b28c0;}})[_0x68d1('0x47')](function(_0x4333ab){logger[_0x68d1('0x26')](_0x68d1('0x53'),_0x4333ab);throw _0x4333ab;});}return _0x5b28c0;})[_0x68d1('0x24')](respondWithResult(_0x4e02e9,0xc9))[_0x68d1('0x47')](handleError(_0x4e02e9,null));};exports[_0x68d1('0x23')]=function(_0x6dae96,_0x33261c){if(_0x6dae96['body']['id']){delete _0x6dae96['body']['id'];}return db[_0x68d1('0x42')]['find']({'where':{'id':_0x6dae96[_0x68d1('0x49')]['id']}})['then'](handleEntityNotFound(_0x33261c,null))[_0x68d1('0x24')](saveUpdates(_0x6dae96[_0x68d1('0x4c')],null))[_0x68d1('0x24')](respondWithResult(_0x33261c,null))[_0x68d1('0x47')](handleError(_0x33261c,null));};exports[_0x68d1('0x54')]=function(_0x1fcd3c,_0x254dc0){var _0x1e4247=_0x1fcd3c['params']['id'];var _0x3992a1=[];return db[_0x68d1('0x55')][_0x68d1('0x56')](function(_0x31df5c){var _0x2ae424='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x1e4247;return db['sequelize'][_0x68d1('0x30')](_0x2ae424,{'type':db[_0x68d1('0x57')][_0x68d1('0x58')]['SELECT'],'raw':!![],'transaction':_0x31df5c})[_0x68d1('0x24')](function(_0x39c582){_0x3992a1=_['map'](_0x39c582,function(_0x3dc196){return Number(_0x3dc196[_0x68d1('0x59')]);});})['then'](function(){var _0x185e7b=_0x68d1('0x5a')+_0x1e4247;return db[_0x68d1('0x55')][_0x68d1('0x30')](_0x185e7b,{'type':db['Sequelize'][_0x68d1('0x58')][_0x68d1('0x5b')],'raw':!![],'transaction':_0x31df5c});})[_0x68d1('0x24')](function(_0x37286f){var _0x390006=_[_0x68d1('0x2b')](_0x37286f,function(_0x5a3435){return Number(_0x5a3435[_0x68d1('0x5c')]);});return db[_0x68d1('0x5d')]['destroy']({'where':{'UserId':{'$in':_0x3992a1},'VoiceQueueId':{'$in':_0x390006}},'transaction':_0x31df5c});})['then'](function(){var _0x2476d3=_0x68d1('0x5e')+_0x1e4247;return db[_0x68d1('0x55')]['query'](_0x2476d3,{'type':db[_0x68d1('0x57')]['QueryTypes'][_0x68d1('0x5b')],'raw':!![],'transaction':_0x31df5c});})[_0x68d1('0x24')](function(_0xcd8fcc){var _0x22ea05=_['map'](_0xcd8fcc,function(_0x5b8ada){return Number(_0x5b8ada[_0x68d1('0x5f')]);});return db[_0x68d1('0x60')][_0x68d1('0x54')]({'where':{'UserId':{'$in':_0x3992a1},'MailQueueId':{'$in':_0x22ea05}},'transaction':_0x31df5c});})[_0x68d1('0x24')](function(){var _0x4ad922=_0x68d1('0x61')+_0x1e4247;return db['sequelize'][_0x68d1('0x30')](_0x4ad922,{'type':db['Sequelize'][_0x68d1('0x58')][_0x68d1('0x5b')],'raw':!![],'transaction':_0x31df5c});})['then'](function(_0x47c5d5){var _0x3e04e3=_[_0x68d1('0x2b')](_0x47c5d5,function(_0x2a3a1c){return Number(_0x2a3a1c[_0x68d1('0x62')]);});return db[_0x68d1('0x63')]['destroy']({'where':{'UserId':{'$in':_0x3992a1},'SmsQueueId':{'$in':_0x3e04e3}},'transaction':_0x31df5c});})[_0x68d1('0x24')](function(){var _0x5ccf96=_0x68d1('0x64')+_0x1e4247;return db[_0x68d1('0x55')][_0x68d1('0x30')](_0x5ccf96,{'type':db['Sequelize'][_0x68d1('0x58')]['SELECT'],'raw':!![],'transaction':_0x31df5c});})[_0x68d1('0x24')](function(_0x56ed1b){var _0x2a7f35=_[_0x68d1('0x2b')](_0x56ed1b,function(_0x4c5d27){return Number(_0x4c5d27['ChatQueueId']);});return db[_0x68d1('0x65')][_0x68d1('0x54')]({'where':{'UserId':{'$in':_0x3992a1},'ChatQueueId':{'$in':_0x2a7f35}},'transaction':_0x31df5c});})[_0x68d1('0x24')](function(){var _0x4abaa4=_0x68d1('0x66')+_0x1e4247;return db[_0x68d1('0x55')]['query'](_0x4abaa4,{'type':db[_0x68d1('0x57')][_0x68d1('0x58')][_0x68d1('0x5b')],'raw':!![],'transaction':_0x31df5c});})[_0x68d1('0x24')](function(_0x5b3f43){var _0x3654c4=_[_0x68d1('0x2b')](_0x5b3f43,function(_0x16eb77){return Number(_0x16eb77[_0x68d1('0x67')]);});return db['UserFaxQueue'][_0x68d1('0x54')]({'where':{'UserId':{'$in':_0x3992a1},'FaxQueueId':{'$in':_0x3654c4}},'transaction':_0x31df5c});})['then'](function(){var _0xd3716d=_0x68d1('0x68')+_0x1e4247;return db[_0x68d1('0x55')][_0x68d1('0x30')](_0xd3716d,{'type':db[_0x68d1('0x57')]['QueryTypes'][_0x68d1('0x5b')],'raw':!![],'transaction':_0x31df5c});})[_0x68d1('0x24')](function(_0x41839a){var _0x1defc7=_[_0x68d1('0x2b')](_0x41839a,function(_0x56067c){return Number(_0x56067c[_0x68d1('0x69')]);});return db[_0x68d1('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x3992a1},'OpenchannelQueueId':{'$in':_0x1defc7}},'transaction':_0x31df5c});})[_0x68d1('0x24')](function(){var _0x4c6a8b=_0x68d1('0x6b')+_0x1e4247;return db[_0x68d1('0x55')][_0x68d1('0x30')](_0x4c6a8b,{'type':db[_0x68d1('0x57')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x31df5c});})[_0x68d1('0x24')](function(_0x1969e7){var _0x591e11=_[_0x68d1('0x2b')](_0x1969e7,function(_0x5943f1){return Number(_0x5943f1[_0x68d1('0x6c')]);});return db['UserWhatsappQueue'][_0x68d1('0x54')]({'where':{'UserId':{'$in':_0x3992a1},'WhatsappQueueId':{'$in':_0x591e11}},'transaction':_0x31df5c});})[_0x68d1('0x24')](function(){return db[_0x68d1('0x6d')][_0x68d1('0x4a')]({'where':{'TeamId':_0x1e4247}});})[_0x68d1('0x24')](function(_0x16ff22){if(_0x16ff22===null){return;}return db[_0x68d1('0x6e')]['destroy']({'where':{'UserId':{'$in':_0x3992a1},'VoicePrefixId':_0x16ff22['VoicePrefixId']},'transaction':_0x31df5c});})[_0x68d1('0x24')](function(){return db[_0x68d1('0x42')][_0x68d1('0x54')]({'where':{'id':_0x1e4247},'cascade':!![],'transaction':_0x31df5c});})['then'](function(_0x1c89c9){if(_0x1c89c9===0x0){_0x254dc0[_0x68d1('0x25')](0x194);}else{return db[_0x68d1('0x52')][_0x68d1('0x54')]({'where':{'type':_0x68d1('0x50'),'resourceId':_0x1e4247},'cascade':!![],'transaction':_0x31df5c})[_0x68d1('0x24')](function(){_0x254dc0[_0x68d1('0x1a')](0xcc)[_0x68d1('0x1b')]();});}})[_0x68d1('0x47')](function(_0xeafa34){_0x254dc0[_0x68d1('0x1a')](0x1f4)['send'](_0xeafa34);});});};exports[_0x68d1('0x6f')]=function(_0x54d341,_0x36b84b,_0x521c86){return db[_0x68d1('0x42')][_0x68d1('0x70')]({'where':{'id':_0x54d341[_0x68d1('0x49')]['id']}})['then'](handleEntityNotFound(_0x36b84b,null))[_0x68d1('0x24')](function(_0x4238c6){if(!_0x54d341[_0x68d1('0x30')][_0x68d1('0x71')]||!utils['isValidChannel'](_0x54d341[_0x68d1('0x30')][_0x68d1('0x71')])){throw new db[(_0x68d1('0x57'))]['ValidationError'](_0x68d1('0x72'));}var _0x385f79={};var _0x2f0c55={};_0x2f0c55['model']=_[_0x68d1('0x31')](db[_[_0x68d1('0x73')](_0x54d341['query'][_0x68d1('0x71')][_0x68d1('0x74')]())+_0x68d1('0x75')]['rawAttributes']);_0x2f0c55[_0x68d1('0x30')]=_[_0x68d1('0x31')](_0x54d341['query']);_0x2f0c55[_0x68d1('0x3a')]=_['intersection'](_0x2f0c55[_0x68d1('0x2f')],_0x2f0c55[_0x68d1('0x30')]);_0x385f79['attributes']=_[_0x68d1('0x32')](_0x2f0c55['model'],qs[_0x68d1('0x34')](_0x54d341[_0x68d1('0x30')][_0x68d1('0x34')]));_0x385f79[_0x68d1('0x33')]=_0x385f79['attributes'][_0x68d1('0x35')]?_0x385f79[_0x68d1('0x33')]:_0x2f0c55[_0x68d1('0x2f')];_0x385f79[_0x68d1('0x20')]=qs[_0x68d1('0x20')](_0x54d341[_0x68d1('0x30')][_0x68d1('0x20')]);_0x385f79['offset']=qs[_0x68d1('0x1d')](_0x54d341['query'][_0x68d1('0x1d')]);_0x385f79[_0x68d1('0x38')]=qs[_0x68d1('0x39')](_0x54d341[_0x68d1('0x30')]['sort']);_0x385f79['where']=qs[_0x68d1('0x3a')](_[_0x68d1('0x3b')](_0x54d341[_0x68d1('0x30')],_0x2f0c55[_0x68d1('0x3a')]));_0x385f79=_[_0x68d1('0x3e')]({},_0x385f79,_0x54d341[_0x68d1('0x41')]);return _0x4238c6['get'+_[_0x68d1('0x73')](_0x54d341[_0x68d1('0x30')]['channel'][_0x68d1('0x74')]())+'Queues'](_0x385f79);})['then'](respondWithResult(_0x36b84b,null))[_0x68d1('0x47')](handleError(_0x36b84b,null));};exports[_0x68d1('0x76')]=function(_0x2bce78,_0x5aa3df,_0x42c41d){return db[_0x68d1('0x42')]['findOne']({'where':{'id':_0x2bce78[_0x68d1('0x49')]['id']}})[_0x68d1('0x24')](function(_0x249654){if(_0x249654){if(!_0x2bce78['body'][_0x68d1('0x71')]||!utils['isValidChannel'](_0x2bce78['body']['channel'])){throw new db[(_0x68d1('0x57'))]['ValidationError'](_0x68d1('0x72'));}return _0x249654['add'+_[_0x68d1('0x73')](_0x2bce78['body'][_0x68d1('0x71')]['toLowerCase']())+'Queues'](_0x2bce78['body'][_0x68d1('0x77')]);}return null;})[_0x68d1('0x24')](handleEntityNotFound(_0x5aa3df,null))['then'](respondWithStatusCode(_0x5aa3df,null))['catch'](handleError(_0x5aa3df,null));};exports[_0x68d1('0x78')]=function(_0x304e24,_0x54297a,_0x43e480){return db['Team'][_0x68d1('0x70')]({'where':{'id':_0x304e24[_0x68d1('0x49')]['id']}})[_0x68d1('0x24')](function(_0x483227){if(_0x483227){if(!_0x304e24[_0x68d1('0x30')][_0x68d1('0x71')]||!utils[_0x68d1('0x79')](_0x304e24[_0x68d1('0x30')][_0x68d1('0x71')])){throw new db[(_0x68d1('0x57'))]['ValidationError'](_0x68d1('0x72'));}return _0x483227[_0x68d1('0x7a')+_['capitalize'](_0x304e24[_0x68d1('0x30')]['channel']['toLowerCase']())+'Queues'](_0x304e24['query']['ids']);}return null;})[_0x68d1('0x24')](handleEntityNotFound(_0x54297a,null))[_0x68d1('0x24')](respondWithStatusCode(_0x54297a,null))[_0x68d1('0x47')](handleError(_0x54297a,null));};exports[_0x68d1('0x7b')]=function(_0x1b1c99,_0x30a815){var _0x4bc7c9=_[_0x68d1('0x7c')](_0x1b1c99[_0x68d1('0x4c')]['ids'])?_0x1b1c99[_0x68d1('0x4c')][_0x68d1('0x77')]:[_0x1b1c99[_0x68d1('0x4c')][_0x68d1('0x77')]];var _0x45c080=_0x1b1c99[_0x68d1('0x49')]['id'];return db[_0x68d1('0x42')][_0x68d1('0x4a')]({'where':{'id':_0x45c080}})[_0x68d1('0x24')](handleEntityNotFound(_0x30a815,null))[_0x68d1('0x24')](function(_0x1152ff){if(_0x1152ff){var _0x380da9=['Voice',_0x68d1('0x7d'),_0x68d1('0x7e'),'Sms','Fax',_0x68d1('0x7f'),_0x68d1('0x80')];return db[_0x68d1('0x55')][_0x68d1('0x56')](function(_0x877925){var _0x4723d4=_[_0x68d1('0x2b')](_0x380da9,function(_0x5cf60b){var _0x54816d={'attributes':['id',_0x68d1('0x28')]};if(_0x5cf60b===_0x68d1('0x81')){_0x54816d[_0x68d1('0x82')]={'attributes':[_0x68d1('0x83')]};}return _0x1152ff[_0x68d1('0x4e')+_0x5cf60b+_0x68d1('0x84')](_0x54816d)[_0x68d1('0x24')](function(_0xeba6c5){var _0x2ff362=_['map'](_0xeba6c5,function(_0xa78792){var _0x453173=_[_0x68d1('0x2b')](_0x4bc7c9,function(_0x2dead8){var _0x2bcc16={'where':{'UserId':_0x2dead8,[_0x5cf60b+'QueueId']:_0xa78792['id']},'transaction':_0x877925};if(_0x5cf60b===_0x68d1('0x81')){_0x2bcc16[_0x68d1('0x16')]={'penalty':_0xa78792[_0x68d1('0x85')]['penalty']};}return db[_0x68d1('0x86')+_0x5cf60b+_0x68d1('0x75')][_0x68d1('0x87')](_0x2bcc16)[_0x68d1('0x24')](function(){socket[_0x68d1('0x88')](_0x68d1('0x4d')+_0x5cf60b+'Queue:save',{'UserId':_0x2dead8,[_0x5cf60b+_0x68d1('0x89')]:_0xa78792['id']});if(_0x5cf60b!==_0x68d1('0x81')){return;}return db[_0x68d1('0x86')][_0x68d1('0x45')]({'where':{'id':_0x4bc7c9,'online':0x1},'attributes':['id',_0x68d1('0x28'),_0x68d1('0x8a'),_0x68d1('0x8b'),'interface'],'raw':!![]})['then'](function(_0x53637e){var _0x4ce0a5=_[_0x68d1('0x2b')](_0x53637e,function(_0xd21dfe){return db[_0x68d1('0x8c')][_0x68d1('0x8d')]({'membername':_0xd21dfe[_0x68d1('0x28')],'UserId':_0xd21dfe['id'],'queue_name':_0xa78792[_0x68d1('0x28')],'VoiceQueueId':_0xa78792['id'],'interface':_[_0x68d1('0x8e')](_0xd21dfe['interface'])?util[_0x68d1('0x8f')](_0x68d1('0x90'),_0xd21dfe['name']):_0xd21dfe['interface'],'paused':_0xd21dfe['voicePause']||![],'penalty':_0xa78792[_0x68d1('0x85')][_0x68d1('0x83')]},{'transaction':_0x877925});});return Promise[_0x68d1('0x91')](_0x4ce0a5);});});});return Promise['all'](_0x453173);});return Promise[_0x68d1('0x91')](_0x2ff362);})[_0x68d1('0x24')](function(){return db[_0x68d1('0x6d')][_0x68d1('0x70')]({'where':{'teamId':_0x45c080}})[_0x68d1('0x24')](function(_0x4367e6){if(_0x4367e6){var _0x5ba444=_[_0x68d1('0x2b')](_0x4bc7c9,function(_0x247950){db[_0x68d1('0x6e')]['upsert']({'UserId':_0x247950,'VoicePrefixId':_0x4367e6['VoicePrefixId']});});return Promise[_0x68d1('0x91')](_0x5ba444);}});});});return Promise[_0x68d1('0x91')](_0x4723d4)[_0x68d1('0x24')](function(){return _0x1152ff[_0x68d1('0x7b')](_0x4bc7c9,{'transaction':_0x877925})[_0x68d1('0x92')](function(_0x50f85a){return _0x50f85a;});});});}})[_0x68d1('0x24')](respondWithResult(_0x30a815,null))[_0x68d1('0x47')](handleError(_0x30a815,null));};exports['removeAgents']=function(_0x1f6646,_0x531c04){var _0x1edba9=_[_0x68d1('0x7c')](_0x1f6646[_0x68d1('0x30')]['ids'])?_0x1f6646[_0x68d1('0x30')]['ids']:[_0x1f6646[_0x68d1('0x30')][_0x68d1('0x77')]];var _0x527fc7=_0x1f6646[_0x68d1('0x49')]['id'];return db[_0x68d1('0x42')][_0x68d1('0x4a')]({'where':{'id':_0x527fc7}})[_0x68d1('0x24')](handleEntityNotFound(_0x531c04,null))[_0x68d1('0x24')](function(_0x2e0f0d){if(_0x2e0f0d){var _0x4be970=[_0x68d1('0x81'),_0x68d1('0x7d'),_0x68d1('0x7e'),_0x68d1('0x93'),_0x68d1('0x94'),_0x68d1('0x7f'),_0x68d1('0x80')];return db[_0x68d1('0x55')][_0x68d1('0x56')](function(_0x21e9ec){var _0x432f1d=_[_0x68d1('0x2b')](_0x4be970,function(_0x56d8a6){var _0x54d5f9={'attributes':['id',_0x68d1('0x28')]};return _0x2e0f0d[_0x68d1('0x4e')+_0x56d8a6+_0x68d1('0x84')](_0x54d5f9)[_0x68d1('0x24')](function(_0x5e733d){var _0x1c2535=_[_0x68d1('0x2b')](_0x5e733d,function(_0x10c728){return _0x10c728[_0x68d1('0x95')](_0x1edba9,{'transaction':_0x21e9ec})[_0x68d1('0x24')](function(){var _0x281b0b=_[_0x68d1('0x2b')](_0x1edba9,function(_0x17b09b){socket[_0x68d1('0x88')](_0x68d1('0x4d')+_0x56d8a6+_0x68d1('0x96'),{'UserId':Number(_0x17b09b),[_0x56d8a6+'QueueId']:_0x10c728['id']});if(_0x56d8a6!=='Voice'){return;}return db[_0x68d1('0x8c')]['destroy']({'where':{'VoiceQueueId':_0x10c728['id'],'UserId':_0x17b09b},'transaction':_0x21e9ec});});return Promise[_0x68d1('0x91')](_0x281b0b);});});return Promise[_0x68d1('0x91')](_0x1c2535);});});return Promise['all'](_0x432f1d)[_0x68d1('0x24')](function(){return _0x2e0f0d[_0x68d1('0x95')](_0x1edba9,{'transaction':_0x21e9ec});})[_0x68d1('0x24')](function(){return db[_0x68d1('0x6d')][_0x68d1('0x70')]({'where':{'teamId':_0x527fc7}})['then'](function(_0x1f5112){if(_0x1f5112){var _0x2f87b0=_['map'](_0x1edba9,function(_0x25f246){db[_0x68d1('0x6e')][_0x68d1('0x54')]({'where':{'UserId':_0x25f246,'VoicePrefixId':_0x1f5112[_0x68d1('0x97')]}});});return Promise[_0x68d1('0x91')](_0x2f87b0);}});});});}})[_0x68d1('0x24')](respondWithStatusCode(_0x531c04,null))[_0x68d1('0x47')](handleError(_0x531c04,null));};exports[_0x68d1('0x98')]=function(_0x58292e,_0x5ddac7,_0x13b66f){var _0x50b844={};var _0x3dba03={};var _0x5ace5c;var _0x4336fe;return db[_0x68d1('0x42')]['findOne']({'where':{'id':_0x58292e[_0x68d1('0x49')]['id']}})[_0x68d1('0x24')](handleEntityNotFound(_0x5ddac7,null))[_0x68d1('0x24')](function(_0x2ac99f){if(_0x2ac99f){_0x5ace5c=_0x2ac99f;_0x3dba03[_0x68d1('0x2f')]=_['keys'](db[_0x68d1('0x86')][_0x68d1('0x2c')]);_0x3dba03[_0x68d1('0x30')]=_[_0x68d1('0x31')](_0x58292e[_0x68d1('0x30')]);_0x3dba03[_0x68d1('0x3a')]=_[_0x68d1('0x32')](_0x3dba03[_0x68d1('0x2f')],_0x3dba03[_0x68d1('0x30')]);_0x50b844['attributes']=_[_0x68d1('0x32')](_0x3dba03['model'],qs[_0x68d1('0x34')](_0x58292e[_0x68d1('0x30')]['fields']));_0x50b844[_0x68d1('0x33')]=_0x50b844[_0x68d1('0x33')][_0x68d1('0x35')]?_0x50b844[_0x68d1('0x33')]:_0x3dba03[_0x68d1('0x2f')];_0x50b844['order']=qs[_0x68d1('0x39')](_0x58292e[_0x68d1('0x30')][_0x68d1('0x39')]);_0x50b844['where']=qs[_0x68d1('0x3a')](_['pick'](_0x58292e[_0x68d1('0x30')],_0x3dba03[_0x68d1('0x3a')]));if(_0x58292e['query']['filter']){_0x50b844[_0x68d1('0x3d')]=_[_0x68d1('0x3e')](_0x50b844['where'],{'$or':_[_0x68d1('0x2b')](_0x50b844[_0x68d1('0x33')],function(_0x53b574){var _0x10f098={};_0x10f098[_0x53b574]={'$like':'%'+_0x58292e['query'][_0x68d1('0x3c')]+'%'};return _0x10f098;})});}_0x50b844=_[_0x68d1('0x3e')]({},_0x50b844,_0x58292e[_0x68d1('0x41')]);return _0x5ace5c[_0x68d1('0x98')](_0x50b844);}})[_0x68d1('0x24')](function(_0x22d10f){if(_0x22d10f){_0x4336fe=_0x22d10f['length'];if(!_0x58292e[_0x68d1('0x30')][_0x68d1('0x36')](_0x68d1('0x37'))){_0x50b844[_0x68d1('0x20')]=qs[_0x68d1('0x20')](_0x58292e[_0x68d1('0x30')][_0x68d1('0x20')]);_0x50b844['offset']=qs[_0x68d1('0x1d')](_0x58292e[_0x68d1('0x30')][_0x68d1('0x1d')]);}return _0x5ace5c[_0x68d1('0x98')](_0x50b844);}})['then'](function(_0x2b895c){if(_0x2b895c){return _0x2b895c?{'count':_0x4336fe,'rows':_0x2b895c}:null;}})[_0x68d1('0x24')](respondWithResult(_0x5ddac7,null))[_0x68d1('0x47')](handleError(_0x5ddac7,null));};
\ No newline at end of file
index b4a0f63..ba20378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe88f=['setMaxListeners','save','update','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x16f577,_0x356572){var _0x1241bd=function(_0x5aaad3){while(--_0x5aaad3){_0x16f577['push'](_0x16f577['shift']());}};_0x1241bd(++_0x356572);}(_0xe88f,0x186));var _0xfe88=function(_0x28c939,_0x110e29){_0x28c939=_0x28c939-0x0;var _0x527fe9=_0xe88f[_0x28c939];return _0x527fe9;};'use strict';var EventEmitter=require(_0xfe88('0x0'));var Team=require(_0xfe88('0x1'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0xfe88('0x2')](0x0);var events={'afterCreate':_0xfe88('0x3'),'afterUpdate':_0xfe88('0x4'),'afterDestroy':'remove'};function emitEvent(_0xcabb4f){return function(_0x28029d,_0x1f8d32,_0x2dee94){TeamEvents['emit'](_0xcabb4f+':'+_0x28029d['id'],_0x28029d);TeamEvents['emit'](_0xcabb4f,_0x28029d);_0x2dee94(null);};}for(var e in events){if(events[_0xfe88('0x5')](e)){var event=events[e];Team[_0xfe88('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x9e07=['Team','setMaxListeners','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x5a2358,_0x16bfff){var _0x2be9f1=function(_0x953797){while(--_0x953797){_0x5a2358['push'](_0x5a2358['shift']());}};_0x2be9f1(++_0x16bfff);}(_0x9e07,0x103));var _0x79e0=function(_0x394ecf,_0x408d3d){_0x394ecf=_0x394ecf-0x0;var _0x28592e=_0x9e07[_0x394ecf];return _0x28592e;};'use strict';var EventEmitter=require(_0x79e0('0x0'));var Team=require(_0x79e0('0x1'))['db'][_0x79e0('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x79e0('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x79e0('0x4'),'afterDestroy':_0x79e0('0x5')};function emitEvent(_0x9e7d0b){return function(_0x54c4ae,_0x217d13,_0x3f41ee){TeamEvents[_0x79e0('0x6')](_0x9e7d0b+':'+_0x54c4ae['id'],_0x54c4ae);TeamEvents['emit'](_0x9e7d0b,_0x54c4ae);_0x3f41ee(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x79e0('0x7')](e,emitEvent(event));}}module[_0x79e0('0x8')]=TeamEvents;
\ No newline at end of file
index 7fd7508..4475647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf74=['../../config/logger','moment','path','rimraf','../../config/environment','exports','define','Team','teams','lodash'];(function(_0x4176a5,_0x1cb19b){var _0x503d63=function(_0x2fefe8){while(--_0x2fefe8){_0x4176a5['push'](_0x4176a5['shift']());}};_0x503d63(++_0x1cb19b);}(_0xcf74,0xbd));var _0x4cf7=function(_0xb49fd0,_0x39f702){_0xb49fd0=_0xb49fd0-0x0;var _0x152288=_0xcf74[_0xb49fd0];return _0x152288;};'use strict';var _=require(_0x4cf7('0x0'));var util=require('util');var logger=require(_0x4cf7('0x1'))('api');var moment=require(_0x4cf7('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4cf7('0x3'));var rimraf=require(_0x4cf7('0x4'));var config=require(_0x4cf7('0x5'));var attributes=require('./team.attributes');module[_0x4cf7('0x6')]=function(_0x483246,_0x588d5a){return _0x483246[_0x4cf7('0x7')](_0x4cf7('0x8'),attributes,{'tableName':_0x4cf7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x886c=['./team.attributes','exports','define','Team','teams','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3279a9,_0x3a966c){var _0x48bd4d=function(_0x59b3f6){while(--_0x59b3f6){_0x3279a9['push'](_0x3279a9['shift']());}};_0x48bd4d(++_0x3a966c);}(_0x886c,0x9f));var _0xc886=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x886c[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xc886('0x0'));var util=require('util');var logger=require(_0xc886('0x1'))(_0xc886('0x2'));var moment=require(_0xc886('0x3'));var BPromise=require(_0xc886('0x4'));var rp=require(_0xc886('0x5'));var fs=require('fs');var path=require(_0xc886('0x6'));var rimraf=require(_0xc886('0x7'));var config=require(_0xc886('0x8'));var attributes=require(_0xc886('0x9'));module[_0xc886('0xa')]=function(_0x1f81ef,_0x205953){return _0x1f81ef[_0xc886('0xb')](_0xc886('0xc'),attributes,{'tableName':_0xc886('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cbf68e..0635cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ca8=['code','message','result','catch','lodash','util','moment','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./team.socket','register','request','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','error'];(function(_0x351b5a,_0xd7292){var _0x993a09=function(_0x54b317){while(--_0x54b317){_0x351b5a['push'](_0x351b5a['shift']());}};_0x993a09(++_0xd7292);}(_0x2ca8,0x1df));var _0x82ca=function(_0x119b79,_0x4b0875){_0x119b79=_0x119b79-0x0;var _0x3da1f8=_0x2ca8[_0x119b79];return _0x3da1f8;};'use strict';var _=require(_0x82ca('0x0'));var util=require(_0x82ca('0x1'));var moment=require(_0x82ca('0x2'));var BPromise=require('bluebird');var rs=require(_0x82ca('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x82ca('0x4'));var logger=require('../../config/logger')(_0x82ca('0x5'));var config=require(_0x82ca('0x6'));var jayson=require(_0x82ca('0x7'));var client=jayson['client'][_0x82ca('0x8')]({'port':0x232a});config[_0x82ca('0x9')]=_[_0x82ca('0xa')](config[_0x82ca('0x9')],{'host':_0x82ca('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x82ca('0xc'))[_0x82ca('0xd')](socket);function respondWithRpcPromise(_0x3b9661,_0x1c85e0,_0x1dc420){return new BPromise(function(_0x92d389,_0x22f0b2){return client[_0x82ca('0xe')](_0x3b9661,_0x1dc420)['then'](function(_0x1b5313){logger[_0x82ca('0xf')](_0x82ca('0x10'),_0x1c85e0,_0x82ca('0x11'));logger[_0x82ca('0x12')](_0x82ca('0x13'),_0x1c85e0,'request\x20sent',JSON['stringify'](_0x1b5313));if(_0x1b5313[_0x82ca('0x14')]){if(_0x1b5313[_0x82ca('0x14')][_0x82ca('0x15')]===0x1f4){logger[_0x82ca('0x14')]('Team,\x20%s,\x20%s',_0x1c85e0,_0x1b5313[_0x82ca('0x14')][_0x82ca('0x16')]);return _0x22f0b2(_0x1b5313[_0x82ca('0x14')]['message']);}logger[_0x82ca('0x14')](_0x82ca('0x10'),_0x1c85e0,_0x1b5313[_0x82ca('0x14')][_0x82ca('0x16')]);return _0x92d389(_0x1b5313[_0x82ca('0x14')][_0x82ca('0x16')]);}else{logger[_0x82ca('0xf')](_0x82ca('0x10'),_0x1c85e0,_0x82ca('0x11'));_0x92d389(_0x1b5313[_0x82ca('0x17')][_0x82ca('0x16')]);}})[_0x82ca('0x18')](function(_0x16f63e){logger[_0x82ca('0x14')](_0x82ca('0x10'),_0x1c85e0,_0x16f63e);_0x22f0b2(_0x16f63e);});});}
\ No newline at end of file
+var _0xc80e=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','register','request','then','Team,\x20%s,\x20%s','stringify','error','message','info','result'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0xc80e,0xe7));var _0xec80=function(_0x363150,_0x1d1aac){_0x363150=_0x363150-0x0;var _0x546cef=_0xc80e[_0x363150];return _0x546cef;};'use strict';var _=require(_0xec80('0x0'));var util=require(_0xec80('0x1'));var moment=require(_0xec80('0x2'));var BPromise=require(_0xec80('0x3'));var rs=require(_0xec80('0x4'));var fs=require('fs');var Redis=require(_0xec80('0x5'));var db=require(_0xec80('0x6'))['db'];var utils=require(_0xec80('0x7'));var logger=require(_0xec80('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xec80('0x9')][_0xec80('0xa')]({'port':0x232a});config[_0xec80('0xb')]=_[_0xec80('0xc')](config[_0xec80('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./team.socket')[_0xec80('0xd')](socket);function respondWithRpcPromise(_0x378c9e,_0x590137,_0xad551c){return new BPromise(function(_0x553b72,_0x160991){return client[_0xec80('0xe')](_0x378c9e,_0xad551c)[_0xec80('0xf')](function(_0x2e265d){logger['info'](_0xec80('0x10'),_0x590137,'request\x20sent');logger['debug']('Team,\x20%s,\x20%s,\x20%s',_0x590137,'request\x20sent',JSON[_0xec80('0x11')](_0x2e265d));if(_0x2e265d[_0xec80('0x12')]){if(_0x2e265d['error']['code']===0x1f4){logger['error'](_0xec80('0x10'),_0x590137,_0x2e265d[_0xec80('0x12')]['message']);return _0x160991(_0x2e265d['error'][_0xec80('0x13')]);}logger['error'](_0xec80('0x10'),_0x590137,_0x2e265d[_0xec80('0x12')][_0xec80('0x13')]);return _0x553b72(_0x2e265d[_0xec80('0x12')][_0xec80('0x13')]);}else{logger[_0xec80('0x14')](_0xec80('0x10'),_0x590137,'request\x20sent');_0x553b72(_0x2e265d[_0xec80('0x15')][_0xec80('0x13')]);}})[_0xec80('0x16')](function(_0x50626c){logger[_0xec80('0x12')](_0xec80('0x10'),_0x590137,_0x50626c);_0x160991(_0x50626c);});});}
\ No newline at end of file
index 8047349..9efe100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09be=['register','length','team:','./team.events','save','update','removeListener'];(function(_0x29e3b6,_0x40b0b4){var _0x55d4b0=function(_0x55c58e){while(--_0x55c58e){_0x29e3b6['push'](_0x29e3b6['shift']());}};_0x55d4b0(++_0x40b0b4);}(_0x09be,0xc0));var _0xe09b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x09be[_0x3dd15e];return _0x231fd0;};'use strict';var TeamEvents=require(_0xe09b('0x0'));var events=[_0xe09b('0x1'),'remove',_0xe09b('0x2')];function createListener(_0x557a0f,_0x5f47c5){return function(_0x10d93c){_0x5f47c5['emit'](_0x557a0f,_0x10d93c);};}function removeListener(_0x4c9805,_0x29aa19){return function(){TeamEvents[_0xe09b('0x3')](_0x4c9805,_0x29aa19);};}exports[_0xe09b('0x4')]=function(_0x212fc7){for(var _0x1bb05c=0x0,_0x327596=events[_0xe09b('0x5')];_0x1bb05c<_0x327596;_0x1bb05c++){var _0x4e50f3=events[_0x1bb05c];var _0x51ae77=createListener(_0xe09b('0x6')+_0x4e50f3,_0x212fc7);TeamEvents['on'](_0x4e50f3,_0x51ae77);}};
\ No newline at end of file
+var _0x8d84=['./team.events','save','removeListener','team:'];(function(_0xb4f2f0,_0x4962a3){var _0x2de91e=function(_0x52fb8c){while(--_0x52fb8c){_0xb4f2f0['push'](_0xb4f2f0['shift']());}};_0x2de91e(++_0x4962a3);}(_0x8d84,0x114));var _0x48d8=function(_0x38f022,_0x2c89bc){_0x38f022=_0x38f022-0x0;var _0x55d6d4=_0x8d84[_0x38f022];return _0x55d6d4;};'use strict';var TeamEvents=require(_0x48d8('0x0'));var events=[_0x48d8('0x1'),'remove','update'];function createListener(_0x16b247,_0x273f5f){return function(_0x5822df){_0x273f5f['emit'](_0x16b247,_0x5822df);};}function removeListener(_0x1db98d,_0x801d1){return function(){TeamEvents[_0x48d8('0x2')](_0x1db98d,_0x801d1);};}exports['register']=function(_0x530d3e){for(var _0x57bfe1=0x0,_0x275219=events['length'];_0x57bfe1<_0x275219;_0x57bfe1++){var _0x19d311=events[_0x57bfe1];var _0x149bdf=createListener(_0x48d8('0x3')+_0x19d311,_0x530d3e);TeamEvents['on'](_0x19d311,_0x149bdf);}};
\ No newline at end of file
index d2123aa..5eb4ba3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4d=['INTEGER','exports'];(function(_0x3b10ec,_0x4064ff){var _0x379cb1=function(_0x12ebc8){while(--_0x12ebc8){_0x3b10ec['push'](_0x3b10ec['shift']());}};_0x379cb1(++_0x4064ff);}(_0x1c4d,0x1d7));var _0xd1c4=function(_0x3cccfb,_0x4eac2d){_0x3cccfb=_0x3cccfb-0x0;var _0x16110f=_0x1c4d[_0x3cccfb];return _0x16110f;};'use strict';var Sequelize=require('sequelize');module[_0xd1c4('0x0')]={'TeamId':{'type':Sequelize[_0xd1c4('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xd1c4('0x1')]}};
\ No newline at end of file
+var _0x5bbd=['exports','INTEGER','sequelize'];(function(_0x23eb8c,_0x5618e8){var _0x4978ba=function(_0x1512ed){while(--_0x1512ed){_0x23eb8c['push'](_0x23eb8c['shift']());}};_0x4978ba(++_0x5618e8);}(_0x5bbd,0x12b));var _0xd5bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5bbd[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd5bb('0x0'));module[_0xd5bb('0x1')]={'TeamId':{'type':Sequelize[_0xd5bb('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xd5bb('0x2')]}};
\ No newline at end of file
index e3acc82..51976cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ad3=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash'];(function(_0x4dbb73,_0x318daf){var _0x16c20b=function(_0x45706f){while(--_0x45706f){_0x4dbb73['push'](_0x4dbb73['shift']());}};_0x16c20b(++_0x318daf);}(_0x4ad3,0x1b1));var _0x34ad=function(_0x2d96f1,_0xa647e4){_0x2d96f1=_0x2d96f1-0x0;var _0x41a5b0=_0x4ad3[_0x2d96f1];return _0x41a5b0;};'use strict';var _=require(_0x34ad('0x0'));var util=require(_0x34ad('0x1'));var logger=require(_0x34ad('0x2'))(_0x34ad('0x3'));var moment=require(_0x34ad('0x4'));var BPromise=require(_0x34ad('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x34ad('0x6'));var rimraf=require(_0x34ad('0x7'));var config=require(_0x34ad('0x8'));var attributes=require(_0x34ad('0x9'));module[_0x34ad('0xa')]=function(_0x42c532,_0x2d438f){return _0x42c532[_0x34ad('0xb')](_0x34ad('0xc'),attributes,{'tableName':_0x34ad('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7497=['util','../../config/logger','request-promise','path','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','lodash'];(function(_0x5122df,_0x1b6de0){var _0x31650a=function(_0x227c67){while(--_0x227c67){_0x5122df['push'](_0x5122df['shift']());}};_0x31650a(++_0x1b6de0);}(_0x7497,0xd0));var _0x7749=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7497[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7749('0x0'));var util=require(_0x7749('0x1'));var logger=require(_0x7749('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7749('0x3'));var fs=require('fs');var path=require(_0x7749('0x4'));var rimraf=require('rimraf');var config=require(_0x7749('0x5'));var attributes=require(_0x7749('0x6'));module[_0x7749('0x7')]=function(_0x455d05,_0x289268){return _0x455d05[_0x7749('0x8')](_0x7749('0x9'),attributes,{'tableName':_0x7749('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 681e0ad..defdb86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x44dd36,_0x51a11b){var _0x3025de=function(_0x495902){while(--_0x495902){_0x44dd36['push'](_0x44dd36['shift']());}};_0x3025de(++_0x51a11b);}(_0xedd9,0xfc));var _0x9edd=function(_0x2d7bb0,_0x123536){_0x2d7bb0=_0x2d7bb0-0x0;var _0x5bf934=_0xedd9[_0x2d7bb0];return _0x5bf934;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x1b9903,_0x8c7342){var _0x1a2fc6=function(_0x254d6a){while(--_0x254d6a){_0x1b9903['push'](_0x1b9903['shift']());}};_0x1a2fc6(++_0x8c7342);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 95d6ce7..2adac0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6c8=['sequelize','INTEGER'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0xb6c8,0x180));var _0x8b6c=function(_0x2e4434,_0x52af5b){_0x2e4434=_0x2e4434-0x0;var _0x115118=_0xb6c8[_0x2e4434];return _0x115118;};'use strict';var Sequelize=require(_0x8b6c('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x8b6c('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfc8e=['sequelize','INTEGER'];(function(_0x55f344,_0x139d99){var _0x3ca754=function(_0x551805){while(--_0x551805){_0x55f344['push'](_0x55f344['shift']());}};_0x3ca754(++_0x139d99);}(_0xfc8e,0x1ec));var _0xefc8=function(_0x505e08,_0x103f78){_0x505e08=_0x505e08-0x0;var _0x37d565=_0xfc8e[_0x505e08];return _0x37d565;};'use strict';var Sequelize=require(_0xefc8('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xefc8('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 399f18a..776ce4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ddc=['util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','define','TeamVoiceQueue'];(function(_0x2f27fc,_0x20b90a){var _0x2dc087=function(_0x330013){while(--_0x330013){_0x2f27fc['push'](_0x2f27fc['shift']());}};_0x2dc087(++_0x20b90a);}(_0x1ddc,0x6e));var _0xc1dd=function(_0x3506eb,_0x4f3557){_0x3506eb=_0x3506eb-0x0;var _0xc60c48=_0x1ddc[_0x3506eb];return _0xc60c48;};'use strict';var _=require('lodash');var util=require(_0xc1dd('0x0'));var logger=require(_0xc1dd('0x1'))(_0xc1dd('0x2'));var moment=require('moment');var BPromise=require(_0xc1dd('0x3'));var rp=require(_0xc1dd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc1dd('0x5'));var config=require(_0xc1dd('0x6'));var attributes=require('./teamVoiceQueue.attributes');module[_0xc1dd('0x7')]=function(_0x36f10b,_0x5cef88){return _0x36f10b[_0xc1dd('0x8')](_0xc1dd('0x9'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f17=['api','bluebird','request-promise','path','rimraf','../../config/environment','define','team_has_voice_queues','lodash','../../config/logger'];(function(_0x3e7b59,_0x14a4cd){var _0x4bd64a=function(_0x144656){while(--_0x144656){_0x3e7b59['push'](_0x3e7b59['shift']());}};_0x4bd64a(++_0x14a4cd);}(_0x4f17,0x9e));var _0x74f1=function(_0x57b432,_0x1589a0){_0x57b432=_0x57b432-0x0;var _0x2edf2a=_0x4f17[_0x57b432];return _0x2edf2a;};'use strict';var _=require(_0x74f1('0x0'));var util=require('util');var logger=require(_0x74f1('0x1'))(_0x74f1('0x2'));var moment=require('moment');var BPromise=require(_0x74f1('0x3'));var rp=require(_0x74f1('0x4'));var fs=require('fs');var path=require(_0x74f1('0x5'));var rimraf=require(_0x74f1('0x6'));var config=require(_0x74f1('0x7'));var attributes=require('./teamVoiceQueue.attributes');module['exports']=function(_0x3f65bb,_0x4b894a){return _0x3f65bb[_0x74f1('0x8')]('TeamVoiceQueue',attributes,{'tableName':_0x74f1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index baca81d..0122d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a3=['info','TeamVoiceQueue,\x20%s,\x20%s','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then'];(function(_0x2b1290,_0x2b0bff){var _0x175d97=function(_0x5859fb){while(--_0x5859fb){_0x2b1290['push'](_0x2b1290['shift']());}};_0x175d97(++_0x2b0bff);}(_0x77a3,0xfc));var _0x377a=function(_0x5631ab,_0x3193b6){_0x5631ab=_0x5631ab-0x0;var _0x3d5a2c=_0x77a3[_0x5631ab];return _0x3d5a2c;};'use strict';var _=require(_0x377a('0x0'));var util=require(_0x377a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x377a('0x2'));var fs=require('fs');var Redis=require(_0x377a('0x3'));var db=require(_0x377a('0x4'))['db'];var utils=require(_0x377a('0x5'));var logger=require(_0x377a('0x6'))(_0x377a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x377a('0x8')][_0x377a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x26177f,_0x2f13b2,_0x1cc8d8){return new BPromise(function(_0x56202b,_0x4af2fb){return client[_0x377a('0xa')](_0x26177f,_0x1cc8d8)[_0x377a('0xb')](function(_0x296855){logger[_0x377a('0xc')](_0x377a('0xd'),_0x2f13b2,'request\x20sent');logger[_0x377a('0xe')](_0x377a('0xf'),_0x2f13b2,_0x377a('0x10'),JSON[_0x377a('0x11')](_0x296855));if(_0x296855['error']){if(_0x296855['error']['code']===0x1f4){logger[_0x377a('0x12')](_0x377a('0xd'),_0x2f13b2,_0x296855[_0x377a('0x12')][_0x377a('0x13')]);return _0x4af2fb(_0x296855[_0x377a('0x12')]['message']);}logger[_0x377a('0x12')](_0x377a('0xd'),_0x2f13b2,_0x296855[_0x377a('0x12')][_0x377a('0x13')]);return _0x56202b(_0x296855[_0x377a('0x12')][_0x377a('0x13')]);}else{logger[_0x377a('0xc')]('TeamVoiceQueue,\x20%s,\x20%s',_0x2f13b2,_0x377a('0x10'));_0x56202b(_0x296855[_0x377a('0x14')][_0x377a('0x13')]);}})[_0x377a('0x15')](function(_0x3d609c){logger[_0x377a('0x12')](_0x377a('0xd'),_0x2f13b2,_0x3d609c);_0x4af2fb(_0x3d609c);});});}
\ No newline at end of file
+var _0xffaf=['client','http','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x2f1bd5,_0x3f0719){var _0x52111a=function(_0x32381b){while(--_0x32381b){_0x2f1bd5['push'](_0x2f1bd5['shift']());}};_0x52111a(++_0x3f0719);}(_0xffaf,0x1c6));var _0xfffa=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xffaf[_0x1b828b];return _0x98da1a;};'use strict';var _=require(_0xfffa('0x0'));var util=require(_0xfffa('0x1'));var moment=require(_0xfffa('0x2'));var BPromise=require('bluebird');var rs=require(_0xfffa('0x3'));var fs=require('fs');var Redis=require(_0xfffa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfffa('0x5'));var logger=require(_0xfffa('0x6'))(_0xfffa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xfffa('0x8')][_0xfffa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2e336e,_0xce83ae,_0x5da5f1){return new BPromise(function(_0x4d5f11,_0x3fda14){return client['request'](_0x2e336e,_0x5da5f1)[_0xfffa('0xa')](function(_0x3e1fbc){logger['info'](_0xfffa('0xb'),_0xce83ae,_0xfffa('0xc'));logger[_0xfffa('0xd')](_0xfffa('0xe'),_0xce83ae,_0xfffa('0xc'),JSON[_0xfffa('0xf')](_0x3e1fbc));if(_0x3e1fbc['error']){if(_0x3e1fbc[_0xfffa('0x10')][_0xfffa('0x11')]===0x1f4){logger[_0xfffa('0x10')](_0xfffa('0xb'),_0xce83ae,_0x3e1fbc[_0xfffa('0x10')][_0xfffa('0x12')]);return _0x3fda14(_0x3e1fbc[_0xfffa('0x10')]['message']);}logger['error'](_0xfffa('0xb'),_0xce83ae,_0x3e1fbc[_0xfffa('0x10')]['message']);return _0x4d5f11(_0x3e1fbc[_0xfffa('0x10')][_0xfffa('0x12')]);}else{logger[_0xfffa('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0xce83ae,_0xfffa('0xc'));_0x4d5f11(_0x3e1fbc[_0xfffa('0x14')][_0xfffa('0x12')]);}})[_0xfffa('0x15')](function(_0x114483){logger['error'](_0xfffa('0xb'),_0xce83ae,_0x114483);_0x3fda14(_0x114483);});});}
\ No newline at end of file
index acb367b..2050695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3014=['update','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','create','put'];(function(_0x5a1a51,_0x144c79){var _0x47edd7=function(_0x2259bb){while(--_0x2259bb){_0x5a1a51['push'](_0x5a1a51['shift']());}};_0x47edd7(++_0x144c79);}(_0x3014,0x1d7));var _0x4301=function(_0x30a545,_0x32ffa1){_0x30a545=_0x30a545-0x0;var _0x1a5554=_0x3014[_0x30a545];return _0x1a5554;};'use strict';var multer=require(_0x4301('0x0'));var util=require(_0x4301('0x1'));var path=require('path');var timeout=require(_0x4301('0x2'));var express=require(_0x4301('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4301('0x4'));var interaction=require(_0x4301('0x5'));var config=require(_0x4301('0x6'));var controller=require(_0x4301('0x7'));router[_0x4301('0x8')]('/',auth[_0x4301('0x9')](),controller[_0x4301('0xa')]);router[_0x4301('0x8')](_0x4301('0xb'),auth[_0x4301('0x9')](),controller[_0x4301('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4301('0xd')]);router[_0x4301('0xe')]('/:id',auth[_0x4301('0x9')](),controller[_0x4301('0xf')]);router[_0x4301('0x10')](_0x4301('0xb'),auth['isAuthenticated'](),controller[_0x4301('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x5eed=['show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x558dad,_0x1a9b5a){var _0x1921ea=function(_0x2d44d6){while(--_0x2d44d6){_0x558dad['push'](_0x558dad['shift']());}};_0x1921ea(++_0x1a9b5a);}(_0x5eed,0x10a));var _0xd5ee=function(_0x9b0505,_0x3fe193){_0x9b0505=_0x9b0505-0x0;var _0x5a0e9d=_0x5eed[_0x9b0505];return _0x5a0e9d;};'use strict';var multer=require(_0xd5ee('0x0'));var util=require(_0xd5ee('0x1'));var path=require(_0xd5ee('0x2'));var timeout=require(_0xd5ee('0x3'));var express=require(_0xd5ee('0x4'));var router=express[_0xd5ee('0x5')]();var fs_extra=require(_0xd5ee('0x6'));var auth=require(_0xd5ee('0x7'));var interaction=require(_0xd5ee('0x8'));var config=require(_0xd5ee('0x9'));var controller=require('./template.controller');router[_0xd5ee('0xa')]('/',auth[_0xd5ee('0xb')](),controller[_0xd5ee('0xc')]);router[_0xd5ee('0xa')](_0xd5ee('0xd'),auth[_0xd5ee('0xb')](),controller[_0xd5ee('0xe')]);router[_0xd5ee('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xd5ee('0xd'),auth[_0xd5ee('0xb')](),controller[_0xd5ee('0x10')]);router[_0xd5ee('0x11')](_0xd5ee('0xd'),auth[_0xd5ee('0xb')](),controller[_0xd5ee('0x12')]);module[_0xd5ee('0x13')]=router;
\ No newline at end of file
index 8c08f9e..6e54d6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ec=['exports','STRING','sequelize'];(function(_0x33ebf5,_0x258ec6){var _0x66957b=function(_0x49739a){while(--_0x49739a){_0x33ebf5['push'](_0x33ebf5['shift']());}};_0x66957b(++_0x258ec6);}(_0xb2ec,0x15e));var _0xcb2e=function(_0x296361,_0x58f814){_0x296361=_0x296361-0x0;var _0xa4a458=_0xb2ec[_0x296361];return _0xa4a458;};'use strict';var Sequelize=require(_0xcb2e('0x0'));module[_0xcb2e('0x1')]={'name':{'type':Sequelize[_0xcb2e('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x51d7=['exports','STRING','TEXT','sequelize'];(function(_0x2936e0,_0xcdeb81){var _0x4b8b54=function(_0x5ec9dc){while(--_0x5ec9dc){_0x2936e0['push'](_0x2936e0['shift']());}};_0x4b8b54(++_0xcdeb81);}(_0x51d7,0x133));var _0x751d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x51d7[_0x19950b];return _0x3c6b41;};'use strict';var Sequelize=require(_0x751d('0x0'));module[_0x751d('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x751d('0x2')]},'html':{'type':Sequelize[_0x751d('0x3')]}};
\ No newline at end of file
index 11b6d07..872800d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd36f=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','find','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','undefined','count','offset','limit','set','apply','reject','update','destroy','then','Templates','sendStatus','error','name','send','map','Template','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','create','body','user'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd36f,0xff));var _0xfd36=function(_0x2818b5,_0x3f3bf3){_0x2818b5=_0x2818b5-0x0;var _0x4cf792=_0xd36f[_0x2818b5];return _0x4cf792;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfd36('0x0'));var zipdir=require(_0xfd36('0x1'));var jsonpatch=require(_0xfd36('0x2'));var rp=require(_0xfd36('0x3'));var moment=require(_0xfd36('0x4'));var BPromise=require(_0xfd36('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xfd36('0x6'));var csv=require(_0xfd36('0x7'));var ejs=require(_0xfd36('0x8'));var fs=require('fs');var fs_extra=require(_0xfd36('0x9'));var _=require(_0xfd36('0xa'));var squel=require(_0xfd36('0xb'));var crypto=require(_0xfd36('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xfd36('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfd36('0xe'));var Redis=require('ioredis');var authService=require(_0xfd36('0xf'));var qs=require(_0xfd36('0x10'));var as=require(_0xfd36('0x11'));var hardwareService=require(_0xfd36('0x12'));var logger=require(_0xfd36('0x13'))(_0xfd36('0x14'));var utils=require(_0xfd36('0x15'));var config=require(_0xfd36('0x16'));var licenseUtil=require(_0xfd36('0x17'));var db=require(_0xfd36('0x18'))['db'];function respondWithStatusCode(_0x433f38,_0x49643d){_0x49643d=_0x49643d||0xcc;return function(_0x25b60b){if(_0x25b60b){return _0x433f38['sendStatus'](_0x49643d);}return _0x433f38['status'](_0x49643d)[_0xfd36('0x19')]();};}function respondWithResult(_0x5c97fb,_0x4aed95){_0x4aed95=_0x4aed95||0xc8;return function(_0x252482){if(_0x252482){return _0x5c97fb[_0xfd36('0x1a')](_0x4aed95)[_0xfd36('0x1b')](_0x252482);}};}function respondWithFilteredResult(_0x5022cb,_0x3ee46e){return function(_0x4433ea){if(_0x4433ea){var _0x2b8e32=typeof _0x3ee46e['offset']===_0xfd36('0x1c')&&typeof _0x3ee46e['limit']==='undefined';var _0x5796aa=_0x4433ea[_0xfd36('0x1d')];var _0x344d9a=_0x2b8e32?0x0:_0x3ee46e[_0xfd36('0x1e')];var _0x320b1c=_0x2b8e32?_0x4433ea[_0xfd36('0x1d')]:_0x3ee46e[_0xfd36('0x1e')]+_0x3ee46e[_0xfd36('0x1f')];var _0x404c0e;if(_0x320b1c>=_0x5796aa){_0x320b1c=_0x5796aa;_0x404c0e=0xc8;}else{_0x404c0e=0xce;}_0x5022cb[_0xfd36('0x1a')](_0x404c0e);return _0x5022cb[_0xfd36('0x20')]('Content-Range',_0x344d9a+'-'+_0x320b1c+'/'+_0x5796aa)[_0xfd36('0x1b')](_0x4433ea);}return null;};}function patchUpdates(_0x47eb16){return function(_0x51d862){try{jsonpatch[_0xfd36('0x21')](_0x51d862,_0x47eb16,!![]);}catch(_0x562a77){return BPromise[_0xfd36('0x22')](_0x562a77);}return _0x51d862['save']();};}function saveUpdates(_0x4a0555,_0x229f12){return function(_0x387167){if(_0x387167){return _0x387167[_0xfd36('0x23')](_0x4a0555)['then'](function(_0xdad219){return _0xdad219;});}return null;};}function removeEntity(_0x3ee9d7,_0x1a95bb){return function(_0x37aa7){if(_0x37aa7){return _0x37aa7[_0xfd36('0x24')]()[_0xfd36('0x25')](function(){var _0x22d4d6=_0x37aa7['get']({'plain':!![]});var _0x43c203=_0xfd36('0x26');return db['UserProfileResource'][_0xfd36('0x24')]({'where':{'type':_0x43c203,'resourceId':_0x22d4d6['id']}})[_0xfd36('0x25')](function(){return _0x37aa7;});})[_0xfd36('0x25')](function(){_0x3ee9d7['status'](0xcc)[_0xfd36('0x19')]();});}};}function handleEntityNotFound(_0x1be497,_0x14eba9){return function(_0x16de25){if(!_0x16de25){_0x1be497[_0xfd36('0x27')](0x194);}return _0x16de25;};}function handleError(_0x2a01f4,_0x4978f8){_0x4978f8=_0x4978f8||0x1f4;return function(_0x4b762b){logger[_0xfd36('0x28')](_0x4b762b['stack']);if(_0x4b762b[_0xfd36('0x29')]){delete _0x4b762b[_0xfd36('0x29')];}_0x2a01f4[_0xfd36('0x1a')](_0x4978f8)[_0xfd36('0x2a')](_0x4b762b);};}exports['index']=function(_0x175446,_0x1433a7){var _0x4b1ce9={},_0xab0546={},_0x5a0450={'count':0x0,'rows':[]};var _0x44a73d=_[_0xfd36('0x2b')](db[_0xfd36('0x2c')][_0xfd36('0x2d')],function(_0x199db1){return{'name':_0x199db1['fieldName'],'type':_0x199db1[_0xfd36('0x2e')][_0xfd36('0x2f')]};});_0xab0546[_0xfd36('0x30')]=_['map'](_0x44a73d,_0xfd36('0x29'));_0xab0546[_0xfd36('0x31')]=_[_0xfd36('0x32')](_0x175446[_0xfd36('0x31')]);_0xab0546[_0xfd36('0x33')]=_['intersection'](_0xab0546[_0xfd36('0x30')],_0xab0546[_0xfd36('0x31')]);_0x4b1ce9[_0xfd36('0x34')]=_[_0xfd36('0x35')](_0xab0546[_0xfd36('0x30')],qs[_0xfd36('0x36')](_0x175446[_0xfd36('0x31')][_0xfd36('0x36')]));_0x4b1ce9['attributes']=_0x4b1ce9['attributes'][_0xfd36('0x37')]?_0x4b1ce9[_0xfd36('0x34')]:_0xab0546['model'];if(!_0x175446[_0xfd36('0x31')][_0xfd36('0x38')]('nolimit')){_0x4b1ce9['limit']=qs[_0xfd36('0x1f')](_0x175446['query'][_0xfd36('0x1f')]);_0x4b1ce9[_0xfd36('0x1e')]=qs[_0xfd36('0x1e')](_0x175446[_0xfd36('0x31')][_0xfd36('0x1e')]);}_0x4b1ce9[_0xfd36('0x39')]=qs[_0xfd36('0x3a')](_0x175446['query'][_0xfd36('0x3a')]);_0x4b1ce9[_0xfd36('0x3b')]=qs[_0xfd36('0x33')](_[_0xfd36('0x3c')](_0x175446['query'],_0xab0546[_0xfd36('0x33')]),_0x44a73d);if(_0x175446['query'][_0xfd36('0x3d')]){_0x4b1ce9[_0xfd36('0x3b')]=_[_0xfd36('0x3e')](_0x4b1ce9[_0xfd36('0x3b')],{'$or':_[_0xfd36('0x2b')](_0x44a73d,function(_0x291a82){if(_0x291a82[_0xfd36('0x2e')]!==_0xfd36('0x3f')){var _0x35ac6b={};_0x35ac6b[_0x291a82['name']]={'$like':'%'+_0x175446[_0xfd36('0x31')]['filter']+'%'};return _0x35ac6b;}})});}_0x4b1ce9=_[_0xfd36('0x3e')]({},_0x4b1ce9,_0x175446[_0xfd36('0x40')]);var _0x30ee64={'where':_0x4b1ce9[_0xfd36('0x3b')]};return db['Template'][_0xfd36('0x1d')](_0x30ee64)[_0xfd36('0x25')](function(_0x23f67f){_0x5a0450['count']=_0x23f67f;if(_0x175446[_0xfd36('0x31')][_0xfd36('0x41')]){_0x4b1ce9[_0xfd36('0x42')]=[{'all':!![]}];}return db[_0xfd36('0x2c')][_0xfd36('0x43')](_0x4b1ce9);})['then'](function(_0x2d4f76){_0x5a0450[_0xfd36('0x44')]=_0x2d4f76;return _0x5a0450;})[_0xfd36('0x25')](respondWithFilteredResult(_0x1433a7,_0x4b1ce9))[_0xfd36('0x45')](handleError(_0x1433a7,null));};exports['show']=function(_0x4c0fc8,_0x306c1a){var _0x3fdd57={'raw':!![],'where':{'id':_0x4c0fc8['params']['id']}},_0x3771ad={};_0x3771ad['model']=_['keys'](db[_0xfd36('0x2c')][_0xfd36('0x2d')]);_0x3771ad[_0xfd36('0x31')]=_['keys'](_0x4c0fc8['query']);_0x3771ad['filters']=_[_0xfd36('0x35')](_0x3771ad[_0xfd36('0x30')],_0x3771ad['query']);_0x3fdd57[_0xfd36('0x34')]=_[_0xfd36('0x35')](_0x3771ad[_0xfd36('0x30')],qs[_0xfd36('0x36')](_0x4c0fc8[_0xfd36('0x31')][_0xfd36('0x36')]));_0x3fdd57[_0xfd36('0x34')]=_0x3fdd57[_0xfd36('0x34')][_0xfd36('0x37')]?_0x3fdd57[_0xfd36('0x34')]:_0x3771ad[_0xfd36('0x30')];if(_0x4c0fc8[_0xfd36('0x31')][_0xfd36('0x41')]){_0x3fdd57[_0xfd36('0x42')]=[{'all':!![]}];}_0x3fdd57=_[_0xfd36('0x3e')]({},_0x3fdd57,_0x4c0fc8[_0xfd36('0x40')]);return db[_0xfd36('0x2c')]['find'](_0x3fdd57)[_0xfd36('0x25')](handleEntityNotFound(_0x306c1a,null))[_0xfd36('0x25')](respondWithResult(_0x306c1a,null))[_0xfd36('0x45')](handleError(_0x306c1a,null));};exports[_0xfd36('0x46')]=function(_0x32bb02,_0x45b06d){return db['Template']['create'](_0x32bb02[_0xfd36('0x47')],{})[_0xfd36('0x25')](function(_0x5a397d){var _0x1e3ae1=_0x32bb02[_0xfd36('0x48')][_0xfd36('0x49')]({'plain':!![]});if(!_0x1e3ae1)throw new Error(_0xfd36('0x4a'));if(_0x1e3ae1[_0xfd36('0x4b')]==='user'){var _0x3f4119=_0x5a397d[_0xfd36('0x49')]({'plain':!![]});var _0xb828b1='Templates';return db[_0xfd36('0x4c')]['find']({'where':{'name':_0xb828b1,'userProfileId':_0x1e3ae1[_0xfd36('0x4d')]},'raw':!![]})[_0xfd36('0x25')](function(_0x22f599){if(_0x22f599&&_0x22f599[_0xfd36('0x4e')]===0x0){return db[_0xfd36('0x4f')]['create']({'name':_0x3f4119['name'],'resourceId':_0x3f4119['id'],'type':_0x22f599[_0xfd36('0x29')],'sectionId':_0x22f599['id']},{})[_0xfd36('0x25')](function(){return _0x5a397d;});}else{return _0x5a397d;}})[_0xfd36('0x45')](function(_0x4a289a){logger[_0xfd36('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a289a);throw _0x4a289a;});}return _0x5a397d;})[_0xfd36('0x25')](respondWithResult(_0x45b06d,0xc9))[_0xfd36('0x45')](handleError(_0x45b06d,null));};exports[_0xfd36('0x23')]=function(_0x34f2e8,_0x466749){if(_0x34f2e8['body']['id']){delete _0x34f2e8[_0xfd36('0x47')]['id'];}return db[_0xfd36('0x2c')][_0xfd36('0x50')]({'where':{'id':_0x34f2e8[_0xfd36('0x51')]['id']}})[_0xfd36('0x25')](handleEntityNotFound(_0x466749,null))['then'](saveUpdates(_0x34f2e8[_0xfd36('0x47')],null))['then'](respondWithResult(_0x466749,null))['catch'](handleError(_0x466749,null));};exports[_0xfd36('0x24')]=function(_0x454995,_0x3ba98e){return db[_0xfd36('0x2c')][_0xfd36('0x50')]({'where':{'id':_0x454995[_0xfd36('0x51')]['id']}})[_0xfd36('0x25')](handleEntityNotFound(_0x3ba98e,null))[_0xfd36('0x25')](removeEntity(_0x3ba98e,null))[_0xfd36('0x45')](handleError(_0x3ba98e,null));};
\ No newline at end of file
+var _0x55a0=['body','params','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','UserProfileResource','end','stack','name','index','map','Template','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','options','rawAttributes','keys','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch'];(function(_0x451735,_0x391a76){var _0x41d1e2=function(_0x3566d7){while(--_0x3566d7){_0x451735['push'](_0x451735['shift']());}};_0x41d1e2(++_0x391a76);}(_0x55a0,0xe3));var _0x055a=function(_0x3ff431,_0x36cdec){_0x3ff431=_0x3ff431-0x0;var _0x298422=_0x55a0[_0x3ff431];return _0x298422;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x055a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x055a('0x1'));var rp=require('request-promise');var moment=require(_0x055a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x055a('0x3'));var util=require(_0x055a('0x4'));var path=require(_0x055a('0x5'));var sox=require(_0x055a('0x6'));var csv=require(_0x055a('0x7'));var ejs=require(_0x055a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x055a('0x9'));var squel=require(_0x055a('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x055a('0xb'));var toCsv=require(_0x055a('0x7'));var querystring=require(_0x055a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x055a('0xd'));var qs=require(_0x055a('0xe'));var as=require(_0x055a('0xf'));var hardwareService=require(_0x055a('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x055a('0x11'));var config=require(_0x055a('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x055a('0x13'))['db'];function respondWithStatusCode(_0x1f3401,_0xddd7ee){_0xddd7ee=_0xddd7ee||0xcc;return function(_0x346c92){if(_0x346c92){return _0x1f3401['sendStatus'](_0xddd7ee);}return _0x1f3401[_0x055a('0x14')](_0xddd7ee)['end']();};}function respondWithResult(_0x58f7f0,_0x4fdac6){_0x4fdac6=_0x4fdac6||0xc8;return function(_0x2f7ab6){if(_0x2f7ab6){return _0x58f7f0[_0x055a('0x14')](_0x4fdac6)[_0x055a('0x15')](_0x2f7ab6);}};}function respondWithFilteredResult(_0x33850d,_0x38e2f4){return function(_0x4d9354){if(_0x4d9354){var _0xda4d79=typeof _0x38e2f4[_0x055a('0x16')]===_0x055a('0x17')&&typeof _0x38e2f4[_0x055a('0x18')]===_0x055a('0x17');var _0x351fa2=_0x4d9354[_0x055a('0x19')];var _0x2f1891=_0xda4d79?0x0:_0x38e2f4[_0x055a('0x16')];var _0x5437d1=_0xda4d79?_0x4d9354[_0x055a('0x19')]:_0x38e2f4[_0x055a('0x16')]+_0x38e2f4[_0x055a('0x18')];var _0xa32a05;if(_0x5437d1>=_0x351fa2){_0x5437d1=_0x351fa2;_0xa32a05=0xc8;}else{_0xa32a05=0xce;}_0x33850d[_0x055a('0x14')](_0xa32a05);return _0x33850d[_0x055a('0x1a')](_0x055a('0x1b'),_0x2f1891+'-'+_0x5437d1+'/'+_0x351fa2)[_0x055a('0x15')](_0x4d9354);}return null;};}function patchUpdates(_0x1906a3){return function(_0x5c0b87){try{jsonpatch[_0x055a('0x1c')](_0x5c0b87,_0x1906a3,!![]);}catch(_0x10ff9f){return BPromise[_0x055a('0x1d')](_0x10ff9f);}return _0x5c0b87['save']();};}function saveUpdates(_0x5ba646,_0x3d0b54){return function(_0x1ad895){if(_0x1ad895){return _0x1ad895[_0x055a('0x1e')](_0x5ba646)[_0x055a('0x1f')](function(_0x3d4734){return _0x3d4734;});}return null;};}function removeEntity(_0x46ddc9,_0x2851e4){return function(_0x510668){if(_0x510668){return _0x510668[_0x055a('0x20')]()[_0x055a('0x1f')](function(){var _0x2f4ec1=_0x510668[_0x055a('0x21')]({'plain':!![]});var _0x3425fd='Templates';return db[_0x055a('0x22')]['destroy']({'where':{'type':_0x3425fd,'resourceId':_0x2f4ec1['id']}})['then'](function(){return _0x510668;});})[_0x055a('0x1f')](function(){_0x46ddc9[_0x055a('0x14')](0xcc)[_0x055a('0x23')]();});}};}function handleEntityNotFound(_0x51cd8e,_0x25ba4d){return function(_0x425902){if(!_0x425902){_0x51cd8e['sendStatus'](0x194);}return _0x425902;};}function handleError(_0x525887,_0x1c7795){_0x1c7795=_0x1c7795||0x1f4;return function(_0x3279c2){logger['error'](_0x3279c2[_0x055a('0x24')]);if(_0x3279c2[_0x055a('0x25')]){delete _0x3279c2[_0x055a('0x25')];}_0x525887['status'](_0x1c7795)['send'](_0x3279c2);};}exports[_0x055a('0x26')]=function(_0x1b5edf,_0x5e7c4b){var _0x4c32be={},_0x5a5e41={},_0x1772d6={'count':0x0,'rows':[]};var _0xd97e5b=_[_0x055a('0x27')](db[_0x055a('0x28')]['rawAttributes'],function(_0x15eead){return{'name':_0x15eead[_0x055a('0x29')],'type':_0x15eead[_0x055a('0x2a')][_0x055a('0x2b')]};});_0x5a5e41[_0x055a('0x2c')]=_[_0x055a('0x27')](_0xd97e5b,_0x055a('0x25'));_0x5a5e41[_0x055a('0x2d')]=_['keys'](_0x1b5edf[_0x055a('0x2d')]);_0x5a5e41[_0x055a('0x2e')]=_['intersection'](_0x5a5e41[_0x055a('0x2c')],_0x5a5e41[_0x055a('0x2d')]);_0x4c32be[_0x055a('0x2f')]=_[_0x055a('0x30')](_0x5a5e41[_0x055a('0x2c')],qs['fields'](_0x1b5edf['query'][_0x055a('0x31')]));_0x4c32be[_0x055a('0x2f')]=_0x4c32be['attributes'][_0x055a('0x32')]?_0x4c32be['attributes']:_0x5a5e41[_0x055a('0x2c')];if(!_0x1b5edf[_0x055a('0x2d')]['hasOwnProperty'](_0x055a('0x33'))){_0x4c32be[_0x055a('0x18')]=qs['limit'](_0x1b5edf[_0x055a('0x2d')][_0x055a('0x18')]);_0x4c32be[_0x055a('0x16')]=qs[_0x055a('0x16')](_0x1b5edf[_0x055a('0x2d')][_0x055a('0x16')]);}_0x4c32be[_0x055a('0x34')]=qs[_0x055a('0x35')](_0x1b5edf[_0x055a('0x2d')]['sort']);_0x4c32be[_0x055a('0x36')]=qs[_0x055a('0x2e')](_[_0x055a('0x37')](_0x1b5edf[_0x055a('0x2d')],_0x5a5e41['filters']),_0xd97e5b);if(_0x1b5edf[_0x055a('0x2d')][_0x055a('0x38')]){_0x4c32be[_0x055a('0x36')]=_['merge'](_0x4c32be[_0x055a('0x36')],{'$or':_['map'](_0xd97e5b,function(_0x1c3585){if(_0x1c3585[_0x055a('0x2a')]!=='VIRTUAL'){var _0x36ee10={};_0x36ee10[_0x1c3585[_0x055a('0x25')]]={'$like':'%'+_0x1b5edf['query'][_0x055a('0x38')]+'%'};return _0x36ee10;}})});}_0x4c32be=_[_0x055a('0x39')]({},_0x4c32be,_0x1b5edf[_0x055a('0x3a')]);var _0x561d8a={'where':_0x4c32be[_0x055a('0x36')]};return db[_0x055a('0x28')]['count'](_0x561d8a)['then'](function(_0x15f95e){_0x1772d6[_0x055a('0x19')]=_0x15f95e;if(_0x1b5edf['query']['includeAll']){_0x4c32be['include']=[{'all':!![]}];}return db[_0x055a('0x28')]['findAll'](_0x4c32be);})['then'](function(_0x2c9a05){_0x1772d6['rows']=_0x2c9a05;return _0x1772d6;})[_0x055a('0x1f')](respondWithFilteredResult(_0x5e7c4b,_0x4c32be))['catch'](handleError(_0x5e7c4b,null));};exports['show']=function(_0x319567,_0x2ecb6f){var _0x444585={'raw':!![],'where':{'id':_0x319567['params']['id']}},_0x3a472f={};_0x3a472f[_0x055a('0x2c')]=_['keys'](db[_0x055a('0x28')][_0x055a('0x3b')]);_0x3a472f['query']=_[_0x055a('0x3c')](_0x319567[_0x055a('0x2d')]);_0x3a472f[_0x055a('0x2e')]=_[_0x055a('0x30')](_0x3a472f[_0x055a('0x2c')],_0x3a472f[_0x055a('0x2d')]);_0x444585[_0x055a('0x2f')]=_['intersection'](_0x3a472f[_0x055a('0x2c')],qs[_0x055a('0x31')](_0x319567[_0x055a('0x2d')][_0x055a('0x31')]));_0x444585[_0x055a('0x2f')]=_0x444585[_0x055a('0x2f')][_0x055a('0x32')]?_0x444585[_0x055a('0x2f')]:_0x3a472f['model'];if(_0x319567[_0x055a('0x2d')][_0x055a('0x3d')]){_0x444585['include']=[{'all':!![]}];}_0x444585=_[_0x055a('0x39')]({},_0x444585,_0x319567[_0x055a('0x3a')]);return db[_0x055a('0x28')]['find'](_0x444585)['then'](handleEntityNotFound(_0x2ecb6f,null))[_0x055a('0x1f')](respondWithResult(_0x2ecb6f,null))['catch'](handleError(_0x2ecb6f,null));};exports[_0x055a('0x3e')]=function(_0x1efdf4,_0x28d710){return db[_0x055a('0x28')][_0x055a('0x3e')](_0x1efdf4['body'],{})[_0x055a('0x1f')](function(_0x2304e0){var _0x2a1a1b=_0x1efdf4[_0x055a('0x3f')][_0x055a('0x21')]({'plain':!![]});if(!_0x2a1a1b)throw new Error(_0x055a('0x40'));if(_0x2a1a1b[_0x055a('0x41')]==='user'){var _0x5cbb2e=_0x2304e0[_0x055a('0x21')]({'plain':!![]});var _0x41efda='Templates';return db[_0x055a('0x42')][_0x055a('0x43')]({'where':{'name':_0x41efda,'userProfileId':_0x2a1a1b[_0x055a('0x44')]},'raw':!![]})[_0x055a('0x1f')](function(_0x503006){if(_0x503006&&_0x503006[_0x055a('0x45')]===0x0){return db[_0x055a('0x22')][_0x055a('0x3e')]({'name':_0x5cbb2e['name'],'resourceId':_0x5cbb2e['id'],'type':_0x503006['name'],'sectionId':_0x503006['id']},{})[_0x055a('0x1f')](function(){return _0x2304e0;});}else{return _0x2304e0;}})['catch'](function(_0x1de2fc){logger[_0x055a('0x46')](_0x055a('0x47'),_0x1de2fc);throw _0x1de2fc;});}return _0x2304e0;})[_0x055a('0x1f')](respondWithResult(_0x28d710,0xc9))[_0x055a('0x48')](handleError(_0x28d710,null));};exports[_0x055a('0x1e')]=function(_0x5ae7d1,_0xeabae7){if(_0x5ae7d1['body']['id']){delete _0x5ae7d1[_0x055a('0x49')]['id'];}return db[_0x055a('0x28')][_0x055a('0x43')]({'where':{'id':_0x5ae7d1[_0x055a('0x4a')]['id']}})[_0x055a('0x1f')](handleEntityNotFound(_0xeabae7,null))[_0x055a('0x1f')](saveUpdates(_0x5ae7d1[_0x055a('0x49')],null))['then'](respondWithResult(_0xeabae7,null))[_0x055a('0x48')](handleError(_0xeabae7,null));};exports[_0x055a('0x20')]=function(_0x7135bb,_0x361f61){return db[_0x055a('0x28')][_0x055a('0x43')]({'where':{'id':_0x7135bb[_0x055a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x361f61,null))[_0x055a('0x1f')](removeEntity(_0x361f61,null))['catch'](handleError(_0x361f61,null));};
\ No newline at end of file
index b7bfb7b..7309a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb691=['./template.attributes','define','Template','tools_templates','lodash','../../config/logger','request-promise','rimraf','../../config/environment'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xb691,0xca));var _0x1b69=function(_0x323591,_0x518650){_0x323591=_0x323591-0x0;var _0x423982=_0xb691[_0x323591];return _0x423982;};'use strict';var _=require(_0x1b69('0x0'));var util=require('util');var logger=require(_0x1b69('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1b69('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1b69('0x3'));var config=require(_0x1b69('0x4'));var attributes=require(_0x1b69('0x5'));module['exports']=function(_0x5090c8,_0x229b1a){return _0x5090c8[_0x1b69('0x6')](_0x1b69('0x7'),attributes,{'tableName':_0x1b69('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9b9=['moment','../../config/environment','exports','define','Template','tools_templates','lodash','util','api'];(function(_0x19346b,_0x5afe6d){var _0x3677d4=function(_0x42cb1f){while(--_0x42cb1f){_0x19346b['push'](_0x19346b['shift']());}};_0x3677d4(++_0x5afe6d);}(_0xc9b9,0xf9));var _0x9c9b=function(_0x128bef,_0xc7a0af){_0x128bef=_0x128bef-0x0;var _0x1ba862=_0xc9b9[_0x128bef];return _0x1ba862;};'use strict';var _=require(_0x9c9b('0x0'));var util=require(_0x9c9b('0x1'));var logger=require('../../config/logger')(_0x9c9b('0x2'));var moment=require(_0x9c9b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9c9b('0x4'));var attributes=require('./template.attributes');module[_0x9c9b('0x5')]=function(_0x9c7a73,_0xcca0b){return _0x9c7a73[_0x9c9b('0x6')](_0x9c9b('0x7'),attributes,{'tableName':_0x9c9b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4bde2d..e4fe5cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3715=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','Template,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetTemplate','Template','options','raw','where','attributes','include','map','model','lodash','util','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x3715,0xc3));var _0x5371=function(_0x546356,_0x2867d9){_0x546356=_0x546356-0x0;var _0x386f23=_0x3715[_0x546356];return _0x386f23;};'use strict';var _=require(_0x5371('0x0'));var util=require(_0x5371('0x1'));var moment=require(_0x5371('0x2'));var BPromise=require(_0x5371('0x3'));var rs=require(_0x5371('0x4'));var fs=require('fs');var Redis=require(_0x5371('0x5'));var db=require(_0x5371('0x6'))['db'];var utils=require(_0x5371('0x7'));var logger=require(_0x5371('0x8'))(_0x5371('0x9'));var config=require(_0x5371('0xa'));var jayson=require(_0x5371('0xb'));var client=jayson['client'][_0x5371('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x340e44,_0x5edddc,_0x426a2a){return new BPromise(function(_0x16c64a,_0x41d142){return client['request'](_0x340e44,_0x426a2a)[_0x5371('0xd')](function(_0x48b76c){logger['info'](_0x5371('0xe'),_0x5edddc,_0x5371('0xf'));logger[_0x5371('0x10')]('Template,\x20%s,\x20%s,\x20%s',_0x5edddc,_0x5371('0xf'),JSON[_0x5371('0x11')](_0x48b76c));if(_0x48b76c[_0x5371('0x12')]){if(_0x48b76c['error'][_0x5371('0x13')]===0x1f4){logger[_0x5371('0x12')](_0x5371('0xe'),_0x5edddc,_0x48b76c[_0x5371('0x12')]['message']);return _0x41d142(_0x48b76c[_0x5371('0x12')]['message']);}logger[_0x5371('0x12')](_0x5371('0xe'),_0x5edddc,_0x48b76c['error'][_0x5371('0x14')]);return _0x16c64a(_0x48b76c[_0x5371('0x12')][_0x5371('0x14')]);}else{logger[_0x5371('0x15')](_0x5371('0xe'),_0x5edddc,_0x5371('0xf'));_0x16c64a(_0x48b76c[_0x5371('0x16')]['message']);}})[_0x5371('0x17')](function(_0x3e7169){logger[_0x5371('0x12')](_0x5371('0xe'),_0x5edddc,_0x3e7169);_0x41d142(_0x3e7169);});});}exports[_0x5371('0x18')]=function(_0x32f469){var _0x21af6c=this;return new Promise(function(_0x4855b3,_0x4db4e7){return db[_0x5371('0x19')]['findAll']({'raw':_0x32f469[_0x5371('0x1a')]?_0x32f469['options'][_0x5371('0x1b')]===undefined?!![]:![]:!![],'where':_0x32f469[_0x5371('0x1a')]?_0x32f469['options'][_0x5371('0x1c')]||null:null,'attributes':_0x32f469[_0x5371('0x1a')]?_0x32f469['options'][_0x5371('0x1d')]||null:null,'limit':_0x32f469[_0x5371('0x1a')]?_0x32f469[_0x5371('0x1a')]['limit']||null:null,'include':_0x32f469['options']?_0x32f469['options'][_0x5371('0x1e')]?_[_0x5371('0x1f')](_0x32f469[_0x5371('0x1a')][_0x5371('0x1e')],function(_0x1f0998){return{'model':db[_0x1f0998[_0x5371('0x20')]],'as':_0x1f0998['as'],'attributes':_0x1f0998['attributes'],'include':_0x1f0998[_0x5371('0x1e')]?_['map'](_0x1f0998[_0x5371('0x1e')],function(_0x522a53){return{'model':db[_0x522a53[_0x5371('0x20')]],'as':_0x522a53['as'],'attributes':_0x522a53[_0x5371('0x1d')],'include':_0x522a53['include']?_[_0x5371('0x1f')](_0x522a53[_0x5371('0x1e')],function(_0x30d3c2){return{'model':db[_0x30d3c2[_0x5371('0x20')]],'as':_0x30d3c2['as'],'attributes':_0x30d3c2[_0x5371('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4972e2){logger[_0x5371('0x15')]('GetTemplate',_0x32f469);logger['debug'](_0x5371('0x18'),_0x32f469,JSON[_0x5371('0x11')](_0x4972e2));_0x4855b3(_0x4972e2);})['catch'](function(_0x311021){logger[_0x5371('0x12')](_0x5371('0x18'),_0x311021[_0x5371('0x14')],_0x32f469);_0x4db4e7(_0x21af6c[_0x5371('0x12')](0x1f4,_0x311021[_0x5371('0x14')]));});});};
\ No newline at end of file
+var _0x2567=['../../config/environment','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','Template,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTemplate','Template','options','raw','where','include','model','attributes','map','debug','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x1b5a05,_0x2c80de){var _0x347931=function(_0xd39454){while(--_0xd39454){_0x1b5a05['push'](_0x1b5a05['shift']());}};_0x347931(++_0x2c80de);}(_0x2567,0x1c7));var _0x7256=function(_0x127a9f,_0x5f0e6a){_0x127a9f=_0x127a9f-0x0;var _0x3aaa5f=_0x2567[_0x127a9f];return _0x3aaa5f;};'use strict';var _=require(_0x7256('0x0'));var util=require(_0x7256('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7256('0x2'));var fs=require('fs');var Redis=require(_0x7256('0x3'));var db=require(_0x7256('0x4'))['db'];var utils=require(_0x7256('0x5'));var logger=require('../../config/logger')(_0x7256('0x6'));var config=require(_0x7256('0x7'));var jayson=require(_0x7256('0x8'));var client=jayson[_0x7256('0x9')][_0x7256('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ce5c9,_0x383bf7,_0x15e913){return new BPromise(function(_0x3c3104,_0x31c458){return client[_0x7256('0xb')](_0x5ce5c9,_0x15e913)[_0x7256('0xc')](function(_0x22d1f1){logger[_0x7256('0xd')](_0x7256('0xe'),_0x383bf7,_0x7256('0xf'));logger['debug'](_0x7256('0x10'),_0x383bf7,_0x7256('0xf'),JSON['stringify'](_0x22d1f1));if(_0x22d1f1['error']){if(_0x22d1f1[_0x7256('0x11')][_0x7256('0x12')]===0x1f4){logger['error'](_0x7256('0xe'),_0x383bf7,_0x22d1f1[_0x7256('0x11')]['message']);return _0x31c458(_0x22d1f1['error'][_0x7256('0x13')]);}logger[_0x7256('0x11')](_0x7256('0xe'),_0x383bf7,_0x22d1f1[_0x7256('0x11')]['message']);return _0x3c3104(_0x22d1f1[_0x7256('0x11')][_0x7256('0x13')]);}else{logger['info']('Template,\x20%s,\x20%s',_0x383bf7,_0x7256('0xf'));_0x3c3104(_0x22d1f1[_0x7256('0x14')][_0x7256('0x13')]);}})[_0x7256('0x15')](function(_0x4dd220){logger['error']('Template,\x20%s,\x20%s',_0x383bf7,_0x4dd220);_0x31c458(_0x4dd220);});});}exports[_0x7256('0x16')]=function(_0x4b9933){var _0x20422a=this;return new Promise(function(_0x3ba265,_0x559a2f){return db[_0x7256('0x17')]['findAll']({'raw':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')][_0x7256('0x19')]===undefined?!![]:![]:!![],'where':_0x4b9933['options']?_0x4b9933[_0x7256('0x18')][_0x7256('0x1a')]||null:null,'attributes':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')]['attributes']||null:null,'limit':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')]['limit']||null:null,'include':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')]['include']?_['map'](_0x4b9933[_0x7256('0x18')][_0x7256('0x1b')],function(_0x539c32){return{'model':db[_0x539c32[_0x7256('0x1c')]],'as':_0x539c32['as'],'attributes':_0x539c32[_0x7256('0x1d')],'include':_0x539c32[_0x7256('0x1b')]?_[_0x7256('0x1e')](_0x539c32[_0x7256('0x1b')],function(_0x9ae1c){return{'model':db[_0x9ae1c[_0x7256('0x1c')]],'as':_0x9ae1c['as'],'attributes':_0x9ae1c[_0x7256('0x1d')],'include':_0x9ae1c[_0x7256('0x1b')]?_[_0x7256('0x1e')](_0x9ae1c[_0x7256('0x1b')],function(_0x343e32){return{'model':db[_0x343e32[_0x7256('0x1c')]],'as':_0x343e32['as'],'attributes':_0x343e32[_0x7256('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7256('0xc')](function(_0x165b4f){logger['info']('GetTemplate',_0x4b9933);logger[_0x7256('0x1f')]('GetTemplate',_0x4b9933,JSON[_0x7256('0x20')](_0x165b4f));_0x3ba265(_0x165b4f);})[_0x7256('0x15')](function(_0xae099f){logger[_0x7256('0x11')](_0x7256('0x16'),_0xae099f[_0x7256('0x13')],_0x4b9933);_0x559a2f(_0x20422a['error'](0x1f4,_0xae099f[_0x7256('0x13')]));});});};
\ No newline at end of file
index ffeb0e4..95afb2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd1=['../../components/interaction/service','../../config/environment','./trigger.controller','isAuthenticated','get','/:id','show','/:id/all_conditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAllCondition','addAnyCondition','addAction','put','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x8b8564,_0x162976){var _0x360c61=function(_0x164cc9){while(--_0x164cc9){_0x8b8564['push'](_0x8b8564['shift']());}};_0x360c61(++_0x162976);}(_0x2dd1,0x11a));var _0x12dd=function(_0x3bf3d0,_0x509187){_0x3bf3d0=_0x3bf3d0-0x0;var _0x39bd61=_0x2dd1[_0x3bf3d0];return _0x39bd61;};'use strict';var multer=require(_0x12dd('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x12dd('0x1'));var express=require(_0x12dd('0x2'));var router=express[_0x12dd('0x3')]();var fs_extra=require(_0x12dd('0x4'));var auth=require(_0x12dd('0x5'));var interaction=require(_0x12dd('0x6'));var config=require(_0x12dd('0x7'));var controller=require(_0x12dd('0x8'));router['get']('/',auth[_0x12dd('0x9')](),controller['index']);router[_0x12dd('0xa')](_0x12dd('0xb'),auth['isAuthenticated'](),controller[_0x12dd('0xc')]);router[_0x12dd('0xa')](_0x12dd('0xd'),auth[_0x12dd('0x9')](),controller['getAllConditions']);router['get'](_0x12dd('0xe'),auth[_0x12dd('0x9')](),controller[_0x12dd('0xf')]);router[_0x12dd('0xa')](_0x12dd('0x10'),auth['isAuthenticated'](),controller[_0x12dd('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x12dd('0x12')]('/:id/all_conditions',auth[_0x12dd('0x9')](),controller[_0x12dd('0x13')]);router['post'](_0x12dd('0xe'),auth['isAuthenticated'](),controller[_0x12dd('0x14')]);router[_0x12dd('0x12')](_0x12dd('0x10'),auth[_0x12dd('0x9')](),controller[_0x12dd('0x15')]);router[_0x12dd('0x16')](_0x12dd('0xb'),auth[_0x12dd('0x9')](),controller['update']);router['delete'](_0x12dd('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x12dd('0x17')]=router;
\ No newline at end of file
+var _0x9c3c=['post','create','addAllCondition','/:id/actions','put','delete','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','isAuthenticated','index','get','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','getActions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c3c,0x1c1));var _0xc9c3=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x9c3c[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0xc9c3('0x0'));var util=require('util');var path=require(_0xc9c3('0x1'));var timeout=require('connect-timeout');var express=require(_0xc9c3('0x2'));var router=express[_0xc9c3('0x3')]();var fs_extra=require(_0xc9c3('0x4'));var auth=require(_0xc9c3('0x5'));var interaction=require(_0xc9c3('0x6'));var config=require(_0xc9c3('0x7'));var controller=require(_0xc9c3('0x8'));router['get']('/',auth[_0xc9c3('0x9')](),controller[_0xc9c3('0xa')]);router[_0xc9c3('0xb')](_0xc9c3('0xc'),auth[_0xc9c3('0x9')](),controller[_0xc9c3('0xd')]);router[_0xc9c3('0xb')](_0xc9c3('0xe'),auth['isAuthenticated'](),controller[_0xc9c3('0xf')]);router['get'](_0xc9c3('0x10'),auth[_0xc9c3('0x9')](),controller[_0xc9c3('0x11')]);router[_0xc9c3('0xb')]('/:id/actions',auth['isAuthenticated'](),controller[_0xc9c3('0x12')]);router[_0xc9c3('0x13')]('/',auth[_0xc9c3('0x9')](),controller[_0xc9c3('0x14')]);router[_0xc9c3('0x13')](_0xc9c3('0xe'),auth['isAuthenticated'](),controller[_0xc9c3('0x15')]);router[_0xc9c3('0x13')]('/:id/any_conditions',auth[_0xc9c3('0x9')](),controller['addAnyCondition']);router[_0xc9c3('0x13')](_0xc9c3('0x16'),auth[_0xc9c3('0x9')](),controller['addAction']);router[_0xc9c3('0x17')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc9c3('0x18')](_0xc9c3('0xc'),auth[_0xc9c3('0x9')](),controller['destroy']);module[_0xc9c3('0x19')]=router;
\ No newline at end of file
index e86d1d3..c81cfd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf595=['exports','STRING'];(function(_0x872b02,_0x4f4458){var _0x1a6b24=function(_0x1dfb4e){while(--_0x1dfb4e){_0x872b02['push'](_0x872b02['shift']());}};_0x1a6b24(++_0x4f4458);}(_0xf595,0x128));var _0x5f59=function(_0x160bbf,_0x3c84cb){_0x160bbf=_0x160bbf-0x0;var _0x48aa61=_0xf595[_0x160bbf];return _0x48aa61;};'use strict';var Sequelize=require('sequelize');module[_0x5f59('0x0')]={'name':{'type':Sequelize[_0x5f59('0x1')]},'channel':{'type':Sequelize[_0x5f59('0x1')]},'description':{'type':Sequelize[_0x5f59('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xbc85=['STRING','BOOLEAN','exports'];(function(_0x44cc71,_0x360c14){var _0x88eed=function(_0x3ced8c){while(--_0x3ced8c){_0x44cc71['push'](_0x44cc71['shift']());}};_0x88eed(++_0x360c14);}(_0xbc85,0x7d));var _0x5bc8=function(_0x42598d,_0xfcca35){_0x42598d=_0x42598d-0x0;var _0x31da07=_0xbc85[_0x42598d];return _0x31da07;};'use strict';var Sequelize=require('sequelize');module[_0x5bc8('0x0')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5bc8('0x1')]},'description':{'type':Sequelize[_0x5bc8('0x1')]},'status':{'type':Sequelize[_0x5bc8('0x2')],'defaultValue':![]}};
\ No newline at end of file
index e707550..55234da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a9c=['reject','then','destroy','get','Triggers','UserProfileResource','error','stack','name','Trigger','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','keys','length','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAnyId','Condition','getAllConditions','findOne','nolimit','getAnyConditions','addAction','getActions','Action','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','apply'];(function(_0x344128,_0x9b9e88){var _0x693fae=function(_0x3e2b2e){while(--_0x3e2b2e){_0x344128['push'](_0x344128['shift']());}};_0x693fae(++_0x9b9e88);}(_0x3a9c,0xf6));var _0xc3a9=function(_0x330e1c,_0x4f01bd){_0x330e1c=_0x330e1c-0x0;var _0x4111c6=_0x3a9c[_0x330e1c];return _0x4111c6;};'use strict';var emlformat=require(_0xc3a9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc3a9('0x1'));var jsonpatch=require(_0xc3a9('0x2'));var rp=require(_0xc3a9('0x3'));var moment=require(_0xc3a9('0x4'));var BPromise=require(_0xc3a9('0x5'));var Mustache=require(_0xc3a9('0x6'));var util=require(_0xc3a9('0x7'));var path=require('path');var sox=require(_0xc3a9('0x8'));var csv=require(_0xc3a9('0x9'));var ejs=require(_0xc3a9('0xa'));var fs=require('fs');var fs_extra=require(_0xc3a9('0xb'));var _=require(_0xc3a9('0xc'));var squel=require(_0xc3a9('0xd'));var crypto=require(_0xc3a9('0xe'));var jsforce=require(_0xc3a9('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc3a9('0x10'));var Papa=require(_0xc3a9('0x11'));var Redis=require(_0xc3a9('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc3a9('0x13'));var hardwareService=require(_0xc3a9('0x14'));var logger=require(_0xc3a9('0x15'))(_0xc3a9('0x16'));var utils=require(_0xc3a9('0x17'));var config=require(_0xc3a9('0x18'));var licenseUtil=require(_0xc3a9('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x173eab,_0x74be17){_0x74be17=_0x74be17||0xcc;return function(_0x188fc1){if(_0x188fc1){return _0x173eab[_0xc3a9('0x1a')](_0x74be17);}return _0x173eab[_0xc3a9('0x1b')](_0x74be17)[_0xc3a9('0x1c')]();};}function respondWithResult(_0x54d16f,_0x5dad5a){_0x5dad5a=_0x5dad5a||0xc8;return function(_0x566518){if(_0x566518){return _0x54d16f['status'](_0x5dad5a)[_0xc3a9('0x1d')](_0x566518);}};}function respondWithFilteredResult(_0x4f88b2,_0x20addb){return function(_0x13b050){if(_0x13b050){var _0x513fc2=typeof _0x20addb['offset']===_0xc3a9('0x1e')&&typeof _0x20addb['limit']==='undefined';var _0x345740=_0x13b050['count'];var _0x42e385=_0x513fc2?0x0:_0x20addb['offset'];var _0x4515f6=_0x513fc2?_0x13b050[_0xc3a9('0x1f')]:_0x20addb[_0xc3a9('0x20')]+_0x20addb[_0xc3a9('0x21')];var _0x362968;if(_0x4515f6>=_0x345740){_0x4515f6=_0x345740;_0x362968=0xc8;}else{_0x362968=0xce;}_0x4f88b2['status'](_0x362968);return _0x4f88b2[_0xc3a9('0x22')]('Content-Range',_0x42e385+'-'+_0x4515f6+'/'+_0x345740)[_0xc3a9('0x1d')](_0x13b050);}return null;};}function patchUpdates(_0x55b40a){return function(_0x5c7eb4){try{jsonpatch[_0xc3a9('0x23')](_0x5c7eb4,_0x55b40a,!![]);}catch(_0x4e424d){return BPromise[_0xc3a9('0x24')](_0x4e424d);}return _0x5c7eb4['save']();};}function saveUpdates(_0x5a9f57,_0x4d3b11){return function(_0x2560e5){if(_0x2560e5){return _0x2560e5['update'](_0x5a9f57)[_0xc3a9('0x25')](function(_0x38f775){return _0x38f775;});}return null;};}function removeEntity(_0x27f626,_0x213d25){return function(_0x23d4a3){if(_0x23d4a3){return _0x23d4a3[_0xc3a9('0x26')]()[_0xc3a9('0x25')](function(){var _0x334b05=_0x23d4a3[_0xc3a9('0x27')]({'plain':!![]});var _0x31608f=_0xc3a9('0x28');return db[_0xc3a9('0x29')][_0xc3a9('0x26')]({'where':{'type':_0x31608f,'resourceId':_0x334b05['id']}})[_0xc3a9('0x25')](function(){return _0x23d4a3;});})[_0xc3a9('0x25')](function(){_0x27f626['status'](0xcc)[_0xc3a9('0x1c')]();});}};}function handleEntityNotFound(_0x5b51de,_0x4a89cb){return function(_0x25c118){if(!_0x25c118){_0x5b51de[_0xc3a9('0x1a')](0x194);}return _0x25c118;};}function handleError(_0x35f135,_0x516a5a){_0x516a5a=_0x516a5a||0x1f4;return function(_0x15e883){logger[_0xc3a9('0x2a')](_0x15e883[_0xc3a9('0x2b')]);if(_0x15e883[_0xc3a9('0x2c')]){delete _0x15e883['name'];}_0x35f135[_0xc3a9('0x1b')](_0x516a5a)['send'](_0x15e883);};}exports['index']=function(_0x20b5a7,_0x991c21){var _0x1df45e={},_0xc4751d={},_0x431d14={'count':0x0,'rows':[]};var _0x31d75b=_['map'](db[_0xc3a9('0x2d')][_0xc3a9('0x2e')],function(_0x48ed88){return{'name':_0x48ed88[_0xc3a9('0x2f')],'type':_0x48ed88[_0xc3a9('0x30')]['key']};});_0xc4751d[_0xc3a9('0x31')]=_[_0xc3a9('0x32')](_0x31d75b,_0xc3a9('0x2c'));_0xc4751d[_0xc3a9('0x33')]=_['keys'](_0x20b5a7[_0xc3a9('0x33')]);_0xc4751d[_0xc3a9('0x34')]=_[_0xc3a9('0x35')](_0xc4751d[_0xc3a9('0x31')],_0xc4751d[_0xc3a9('0x33')]);_0x1df45e[_0xc3a9('0x36')]=_[_0xc3a9('0x35')](_0xc4751d[_0xc3a9('0x31')],qs[_0xc3a9('0x37')](_0x20b5a7[_0xc3a9('0x33')][_0xc3a9('0x37')]));_0x1df45e[_0xc3a9('0x36')]=_0x1df45e[_0xc3a9('0x36')]['length']?_0x1df45e[_0xc3a9('0x36')]:_0xc4751d[_0xc3a9('0x31')];if(!_0x20b5a7[_0xc3a9('0x33')][_0xc3a9('0x38')]('nolimit')){_0x1df45e[_0xc3a9('0x21')]=qs[_0xc3a9('0x21')](_0x20b5a7['query'][_0xc3a9('0x21')]);_0x1df45e['offset']=qs['offset'](_0x20b5a7[_0xc3a9('0x33')][_0xc3a9('0x20')]);}_0x1df45e[_0xc3a9('0x39')]=qs[_0xc3a9('0x3a')](_0x20b5a7['query']['sort']);_0x1df45e['where']=qs[_0xc3a9('0x34')](_[_0xc3a9('0x3b')](_0x20b5a7[_0xc3a9('0x33')],_0xc4751d[_0xc3a9('0x34')]),_0x31d75b);if(_0x20b5a7['query'][_0xc3a9('0x3c')]){_0x1df45e[_0xc3a9('0x3d')]=_[_0xc3a9('0x3e')](_0x1df45e['where'],{'$or':_['map'](_0x31d75b,function(_0x50ba81){if(_0x50ba81[_0xc3a9('0x30')]!==_0xc3a9('0x3f')){var _0x2edbec={};_0x2edbec[_0x50ba81[_0xc3a9('0x2c')]]={'$like':'%'+_0x20b5a7[_0xc3a9('0x33')][_0xc3a9('0x3c')]+'%'};return _0x2edbec;}})});}_0x1df45e=_[_0xc3a9('0x3e')]({},_0x1df45e,_0x20b5a7['options']);var _0x33b181={'where':_0x1df45e[_0xc3a9('0x3d')]};return db['Trigger'][_0xc3a9('0x1f')](_0x33b181)[_0xc3a9('0x25')](function(_0xe6316a){_0x431d14['count']=_0xe6316a;if(_0x20b5a7[_0xc3a9('0x33')][_0xc3a9('0x40')]){_0x1df45e[_0xc3a9('0x41')]=[{'all':!![]}];}return db[_0xc3a9('0x2d')][_0xc3a9('0x42')](_0x1df45e);})[_0xc3a9('0x25')](function(_0x21b997){_0x431d14[_0xc3a9('0x43')]=_0x21b997;return _0x431d14;})['then'](respondWithFilteredResult(_0x991c21,_0x1df45e))['catch'](handleError(_0x991c21,null));};exports[_0xc3a9('0x44')]=function(_0x35db08,_0x30bbe4){var _0x3b8653={'raw':![],'where':{'id':_0x35db08[_0xc3a9('0x45')]['id']}},_0x29f3e9={};_0x29f3e9[_0xc3a9('0x31')]=_[_0xc3a9('0x46')](db[_0xc3a9('0x2d')][_0xc3a9('0x2e')]);_0x29f3e9[_0xc3a9('0x33')]=_[_0xc3a9('0x46')](_0x35db08[_0xc3a9('0x33')]);_0x29f3e9[_0xc3a9('0x34')]=_[_0xc3a9('0x35')](_0x29f3e9[_0xc3a9('0x31')],_0x29f3e9[_0xc3a9('0x33')]);_0x3b8653[_0xc3a9('0x36')]=_[_0xc3a9('0x35')](_0x29f3e9[_0xc3a9('0x31')],qs[_0xc3a9('0x37')](_0x35db08[_0xc3a9('0x33')][_0xc3a9('0x37')]));_0x3b8653['attributes']=_0x3b8653['attributes'][_0xc3a9('0x47')]?_0x3b8653[_0xc3a9('0x36')]:_0x29f3e9[_0xc3a9('0x31')];if(_0x35db08[_0xc3a9('0x33')][_0xc3a9('0x40')]){_0x3b8653[_0xc3a9('0x41')]=[{'all':!![]}];}_0x3b8653=_[_0xc3a9('0x3e')]({},_0x3b8653,_0x35db08[_0xc3a9('0x48')]);return db[_0xc3a9('0x2d')][_0xc3a9('0x49')](_0x3b8653)['then'](handleEntityNotFound(_0x30bbe4,null))[_0xc3a9('0x25')](respondWithResult(_0x30bbe4,null))[_0xc3a9('0x4a')](handleError(_0x30bbe4,null));};exports[_0xc3a9('0x4b')]=function(_0x4bc84b,_0x4d103e){return db[_0xc3a9('0x2d')][_0xc3a9('0x4b')](_0x4bc84b[_0xc3a9('0x4c')],{})['then'](function(_0x631fb2){var _0x5252fd=_0x4bc84b[_0xc3a9('0x4d')][_0xc3a9('0x27')]({'plain':!![]});if(!_0x5252fd)throw new Error(_0xc3a9('0x4e'));if(_0x5252fd[_0xc3a9('0x4f')]==='user'){var _0x1767fd=_0x631fb2['get']({'plain':!![]});var _0x2fe396=_0xc3a9('0x28');return db[_0xc3a9('0x50')][_0xc3a9('0x49')]({'where':{'name':_0x2fe396,'userProfileId':_0x5252fd[_0xc3a9('0x51')]},'raw':!![]})[_0xc3a9('0x25')](function(_0x540bd5){if(_0x540bd5&&_0x540bd5['autoAssociation']===0x0){return db['UserProfileResource'][_0xc3a9('0x4b')]({'name':_0x1767fd[_0xc3a9('0x2c')],'resourceId':_0x1767fd['id'],'type':_0x540bd5[_0xc3a9('0x2c')],'sectionId':_0x540bd5['id']},{})[_0xc3a9('0x25')](function(){return _0x631fb2;});}else{return _0x631fb2;}})['catch'](function(_0x5758fd){logger['error'](_0xc3a9('0x52'),_0x5758fd);throw _0x5758fd;});}return _0x631fb2;})['then'](respondWithResult(_0x4d103e,0xc9))[_0xc3a9('0x4a')](handleError(_0x4d103e,null));};exports[_0xc3a9('0x53')]=function(_0x12c691,_0x450109){if(_0x12c691[_0xc3a9('0x4c')]['id']){delete _0x12c691[_0xc3a9('0x4c')]['id'];}return db[_0xc3a9('0x2d')]['find']({'where':{'id':_0x12c691[_0xc3a9('0x45')]['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x450109,null))[_0xc3a9('0x25')](saveUpdates(_0x12c691['body'],null))[_0xc3a9('0x25')](respondWithResult(_0x450109,null))[_0xc3a9('0x4a')](handleError(_0x450109,null));};exports[_0xc3a9('0x26')]=function(_0x4cb96f,_0x3b6283){return db[_0xc3a9('0x2d')][_0xc3a9('0x49')]({'where':{'id':_0x4cb96f['params']['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x3b6283,null))['then'](removeEntity(_0x3b6283,null))[_0xc3a9('0x4a')](handleError(_0x3b6283,null));};exports[_0xc3a9('0x54')]=function(_0x4fcb31,_0x3fa9c2,_0x524a18){if(_0x4fcb31['body']['id']){delete _0x4fcb31['body']['id'];}return db[_0xc3a9('0x2d')][_0xc3a9('0x49')]({'where':{'id':_0x4fcb31[_0xc3a9('0x45')]['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x3fa9c2,null))[_0xc3a9('0x25')](function(_0x3a9ba3){if(_0x3a9ba3){_0x4fcb31[_0xc3a9('0x4c')]['TriggerAllId']=_0x3a9ba3['id'];return db['Condition']['create'](_0x4fcb31[_0xc3a9('0x4c')]);}})['then'](respondWithResult(_0x3fa9c2,null))[_0xc3a9('0x4a')](handleError(_0x3fa9c2,null));};exports['addAnyCondition']=function(_0x1828d7,_0x124452,_0x3e717b){if(_0x1828d7[_0xc3a9('0x4c')]['id']){delete _0x1828d7['body']['id'];}return db['Trigger'][_0xc3a9('0x49')]({'where':{'id':_0x1828d7[_0xc3a9('0x45')]['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x124452,null))['then'](function(_0x5ac19f){if(_0x5ac19f){_0x1828d7['body'][_0xc3a9('0x55')]=_0x5ac19f['id'];return db[_0xc3a9('0x56')][_0xc3a9('0x4b')](_0x1828d7[_0xc3a9('0x4c')]);}})[_0xc3a9('0x25')](respondWithResult(_0x124452,null))['catch'](handleError(_0x124452,null));};exports[_0xc3a9('0x57')]=function(_0x205f4a,_0x1c4f2a,_0x210c0e){var _0x12c49c={};var _0x51aded={};var _0x370b36;var _0x153ffb;return db[_0xc3a9('0x2d')][_0xc3a9('0x58')]({'where':{'id':_0x205f4a[_0xc3a9('0x45')]['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x1c4f2a,null))[_0xc3a9('0x25')](function(_0x234d1){if(_0x234d1){_0x370b36=_0x234d1;_0x51aded[_0xc3a9('0x31')]=_['keys'](db['Condition'][_0xc3a9('0x2e')]);_0x51aded[_0xc3a9('0x33')]=_['keys'](_0x205f4a[_0xc3a9('0x33')]);_0x51aded['filters']=_['intersection'](_0x51aded[_0xc3a9('0x31')],_0x51aded[_0xc3a9('0x33')]);_0x12c49c['attributes']=_[_0xc3a9('0x35')](_0x51aded[_0xc3a9('0x31')],qs[_0xc3a9('0x37')](_0x205f4a[_0xc3a9('0x33')]['fields']));_0x12c49c['attributes']=_0x12c49c['attributes'][_0xc3a9('0x47')]?_0x12c49c[_0xc3a9('0x36')]:_0x51aded[_0xc3a9('0x31')];_0x12c49c['order']=qs[_0xc3a9('0x3a')](_0x205f4a[_0xc3a9('0x33')]['sort']);_0x12c49c[_0xc3a9('0x3d')]=qs[_0xc3a9('0x34')](_[_0xc3a9('0x3b')](_0x205f4a[_0xc3a9('0x33')],_0x51aded['filters']));if(_0x205f4a['query'][_0xc3a9('0x3c')]){_0x12c49c[_0xc3a9('0x3d')]=_[_0xc3a9('0x3e')](_0x12c49c[_0xc3a9('0x3d')],{'$or':_[_0xc3a9('0x32')](_0x12c49c[_0xc3a9('0x36')],function(_0x50b575){var _0x5720b8={};_0x5720b8[_0x50b575]={'$like':'%'+_0x205f4a[_0xc3a9('0x33')][_0xc3a9('0x3c')]+'%'};return _0x5720b8;})});}_0x12c49c=_['merge']({},_0x12c49c,_0x205f4a[_0xc3a9('0x48')]);return _0x370b36[_0xc3a9('0x57')](_0x12c49c);}})[_0xc3a9('0x25')](function(_0x551b7a){if(_0x551b7a){_0x153ffb=_0x551b7a['length'];if(!_0x205f4a[_0xc3a9('0x33')]['hasOwnProperty'](_0xc3a9('0x59'))){_0x12c49c['limit']=qs[_0xc3a9('0x21')](_0x205f4a[_0xc3a9('0x33')][_0xc3a9('0x21')]);_0x12c49c[_0xc3a9('0x20')]=qs[_0xc3a9('0x20')](_0x205f4a[_0xc3a9('0x33')][_0xc3a9('0x20')]);}return _0x370b36[_0xc3a9('0x57')](_0x12c49c);}})['then'](function(_0x3e48f2){if(_0x3e48f2){return _0x3e48f2?{'count':_0x153ffb,'rows':_0x3e48f2}:null;}})['then'](respondWithResult(_0x1c4f2a,null))['catch'](handleError(_0x1c4f2a,null));};exports[_0xc3a9('0x5a')]=function(_0x1758c9,_0x50e1bf,_0x2aeb21){var _0x513148={};var _0x508402={};var _0x270565;var _0x3ca3d5;return db[_0xc3a9('0x2d')][_0xc3a9('0x58')]({'where':{'id':_0x1758c9['params']['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x50e1bf,null))[_0xc3a9('0x25')](function(_0x45b248){if(_0x45b248){_0x270565=_0x45b248;_0x508402[_0xc3a9('0x31')]=_[_0xc3a9('0x46')](db[_0xc3a9('0x56')][_0xc3a9('0x2e')]);_0x508402[_0xc3a9('0x33')]=_[_0xc3a9('0x46')](_0x1758c9[_0xc3a9('0x33')]);_0x508402[_0xc3a9('0x34')]=_[_0xc3a9('0x35')](_0x508402[_0xc3a9('0x31')],_0x508402[_0xc3a9('0x33')]);_0x513148[_0xc3a9('0x36')]=_[_0xc3a9('0x35')](_0x508402[_0xc3a9('0x31')],qs[_0xc3a9('0x37')](_0x1758c9[_0xc3a9('0x33')][_0xc3a9('0x37')]));_0x513148['attributes']=_0x513148[_0xc3a9('0x36')][_0xc3a9('0x47')]?_0x513148[_0xc3a9('0x36')]:_0x508402[_0xc3a9('0x31')];_0x513148[_0xc3a9('0x39')]=qs[_0xc3a9('0x3a')](_0x1758c9['query'][_0xc3a9('0x3a')]);_0x513148[_0xc3a9('0x3d')]=qs[_0xc3a9('0x34')](_[_0xc3a9('0x3b')](_0x1758c9['query'],_0x508402[_0xc3a9('0x34')]));if(_0x1758c9[_0xc3a9('0x33')][_0xc3a9('0x3c')]){_0x513148[_0xc3a9('0x3d')]=_[_0xc3a9('0x3e')](_0x513148[_0xc3a9('0x3d')],{'$or':_[_0xc3a9('0x32')](_0x513148['attributes'],function(_0x5017fe){var _0x1240a2={};_0x1240a2[_0x5017fe]={'$like':'%'+_0x1758c9[_0xc3a9('0x33')][_0xc3a9('0x3c')]+'%'};return _0x1240a2;})});}_0x513148=_[_0xc3a9('0x3e')]({},_0x513148,_0x1758c9[_0xc3a9('0x48')]);return _0x270565[_0xc3a9('0x5a')](_0x513148);}})[_0xc3a9('0x25')](function(_0x26e485){if(_0x26e485){_0x3ca3d5=_0x26e485[_0xc3a9('0x47')];if(!_0x1758c9[_0xc3a9('0x33')][_0xc3a9('0x38')]('nolimit')){_0x513148[_0xc3a9('0x21')]=qs[_0xc3a9('0x21')](_0x1758c9[_0xc3a9('0x33')][_0xc3a9('0x21')]);_0x513148[_0xc3a9('0x20')]=qs['offset'](_0x1758c9[_0xc3a9('0x33')][_0xc3a9('0x20')]);}return _0x270565[_0xc3a9('0x5a')](_0x513148);}})[_0xc3a9('0x25')](function(_0x5b7a99){if(_0x5b7a99){return _0x5b7a99?{'count':_0x3ca3d5,'rows':_0x5b7a99}:null;}})[_0xc3a9('0x25')](respondWithResult(_0x50e1bf,null))[_0xc3a9('0x4a')](handleError(_0x50e1bf,null));};exports[_0xc3a9('0x5b')]=function(_0xae34b7,_0x4d995d,_0x2a1b0a){if(_0xae34b7[_0xc3a9('0x4c')]['id']){delete _0xae34b7[_0xc3a9('0x4c')]['id'];}return db[_0xc3a9('0x2d')][_0xc3a9('0x49')]({'where':{'id':_0xae34b7[_0xc3a9('0x45')]['id']}})['then'](handleEntityNotFound(_0x4d995d,null))[_0xc3a9('0x25')](function(_0x5de7a6){if(_0x5de7a6){_0xae34b7['body']['TriggerId']=_0x5de7a6['id'];return db['Action']['create'](_0xae34b7[_0xc3a9('0x4c')]);}})['then'](respondWithResult(_0x4d995d,null))[_0xc3a9('0x4a')](handleError(_0x4d995d,null));};exports[_0xc3a9('0x5c')]=function(_0xf92b1,_0x2feba7,_0x3adb3d){var _0x53afad={};var _0x37ca0a={};var _0x5e12e8;var _0x219c8d;return db[_0xc3a9('0x2d')][_0xc3a9('0x58')]({'where':{'id':_0xf92b1[_0xc3a9('0x45')]['id']}})[_0xc3a9('0x25')](handleEntityNotFound(_0x2feba7,null))[_0xc3a9('0x25')](function(_0x397829){if(_0x397829){_0x5e12e8=_0x397829;_0x37ca0a['model']=_[_0xc3a9('0x46')](db[_0xc3a9('0x5d')]['rawAttributes']);_0x37ca0a[_0xc3a9('0x33')]=_['keys'](_0xf92b1[_0xc3a9('0x33')]);_0x37ca0a[_0xc3a9('0x34')]=_['intersection'](_0x37ca0a['model'],_0x37ca0a[_0xc3a9('0x33')]);_0x53afad['attributes']=_[_0xc3a9('0x35')](_0x37ca0a[_0xc3a9('0x31')],qs[_0xc3a9('0x37')](_0xf92b1[_0xc3a9('0x33')][_0xc3a9('0x37')]));_0x53afad[_0xc3a9('0x36')]=_0x53afad['attributes'][_0xc3a9('0x47')]?_0x53afad['attributes']:_0x37ca0a[_0xc3a9('0x31')];_0x53afad['order']=qs[_0xc3a9('0x3a')](_0xf92b1[_0xc3a9('0x33')][_0xc3a9('0x3a')]);_0x53afad[_0xc3a9('0x3d')]=qs[_0xc3a9('0x34')](_[_0xc3a9('0x3b')](_0xf92b1[_0xc3a9('0x33')],_0x37ca0a[_0xc3a9('0x34')]));if(_0xf92b1[_0xc3a9('0x33')][_0xc3a9('0x3c')]){_0x53afad[_0xc3a9('0x3d')]=_[_0xc3a9('0x3e')](_0x53afad[_0xc3a9('0x3d')],{'$or':_['map'](_0x53afad[_0xc3a9('0x36')],function(_0x29064f){var _0x41b415={};_0x41b415[_0x29064f]={'$like':'%'+_0xf92b1[_0xc3a9('0x33')][_0xc3a9('0x3c')]+'%'};return _0x41b415;})});}_0x53afad=_['merge']({},_0x53afad,_0xf92b1['options']);return _0x5e12e8[_0xc3a9('0x5c')](_0x53afad);}})[_0xc3a9('0x25')](function(_0x403f6a){if(_0x403f6a){_0x219c8d=_0x403f6a[_0xc3a9('0x47')];if(!_0xf92b1[_0xc3a9('0x33')][_0xc3a9('0x38')](_0xc3a9('0x59'))){_0x53afad[_0xc3a9('0x21')]=qs['limit'](_0xf92b1[_0xc3a9('0x33')][_0xc3a9('0x21')]);_0x53afad[_0xc3a9('0x20')]=qs[_0xc3a9('0x20')](_0xf92b1['query'][_0xc3a9('0x20')]);}return _0x5e12e8['getActions'](_0x53afad);}})[_0xc3a9('0x25')](function(_0xf991d9){if(_0xf991d9){return _0xf991d9?{'count':_0x219c8d,'rows':_0xf991d9}:null;}})['then'](respondWithResult(_0x2feba7,null))[_0xc3a9('0x4a')](handleError(_0x2feba7,null));};
\ No newline at end of file
+var _0x81ad=['update','then','destroy','get','Triggers','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','Trigger','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','find','addAllCondition','TriggerAllId','Condition','addAnyCondition','findOne','length','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x81ad,0x97));var _0xd81a=function(_0x1558ab,_0x39d1de){_0x1558ab=_0x1558ab-0x0;var _0x53b64a=_0x81ad[_0x1558ab];return _0x53b64a;};'use strict';var emlformat=require(_0xd81a('0x0'));var rimraf=require(_0xd81a('0x1'));var zipdir=require(_0xd81a('0x2'));var jsonpatch=require(_0xd81a('0x3'));var rp=require(_0xd81a('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd81a('0x5'));var path=require('path');var sox=require(_0xd81a('0x6'));var csv=require('to-csv');var ejs=require(_0xd81a('0x7'));var fs=require('fs');var fs_extra=require(_0xd81a('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd81a('0x9'));var jsforce=require(_0xd81a('0xa'));var deskjs=require(_0xd81a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xd81a('0xc'));var Papa=require('papaparse');var Redis=require(_0xd81a('0xd'));var authService=require(_0xd81a('0xe'));var qs=require(_0xd81a('0xf'));var as=require(_0xd81a('0x10'));var hardwareService=require(_0xd81a('0x11'));var logger=require(_0xd81a('0x12'))(_0xd81a('0x13'));var utils=require(_0xd81a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd81a('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e01bd,_0x2e5c63){_0x2e5c63=_0x2e5c63||0xcc;return function(_0x6243c5){if(_0x6243c5){return _0x5e01bd[_0xd81a('0x16')](_0x2e5c63);}return _0x5e01bd[_0xd81a('0x17')](_0x2e5c63)[_0xd81a('0x18')]();};}function respondWithResult(_0x3e8c23,_0x3468be){_0x3468be=_0x3468be||0xc8;return function(_0x2a28ce){if(_0x2a28ce){return _0x3e8c23[_0xd81a('0x17')](_0x3468be)[_0xd81a('0x19')](_0x2a28ce);}};}function respondWithFilteredResult(_0x454bc9,_0x14f0b4){return function(_0x3745bc){if(_0x3745bc){var _0x4ca6c4=typeof _0x14f0b4['offset']===_0xd81a('0x1a')&&typeof _0x14f0b4[_0xd81a('0x1b')]===_0xd81a('0x1a');var _0x4b6452=_0x3745bc[_0xd81a('0x1c')];var _0x4e929e=_0x4ca6c4?0x0:_0x14f0b4[_0xd81a('0x1d')];var _0x460b24=_0x4ca6c4?_0x3745bc['count']:_0x14f0b4['offset']+_0x14f0b4['limit'];var _0x55fbe8;if(_0x460b24>=_0x4b6452){_0x460b24=_0x4b6452;_0x55fbe8=0xc8;}else{_0x55fbe8=0xce;}_0x454bc9[_0xd81a('0x17')](_0x55fbe8);return _0x454bc9[_0xd81a('0x1e')]('Content-Range',_0x4e929e+'-'+_0x460b24+'/'+_0x4b6452)['json'](_0x3745bc);}return null;};}function patchUpdates(_0x31455e){return function(_0x485e79){try{jsonpatch[_0xd81a('0x1f')](_0x485e79,_0x31455e,!![]);}catch(_0x5984f7){return BPromise['reject'](_0x5984f7);}return _0x485e79[_0xd81a('0x20')]();};}function saveUpdates(_0x5bcf40,_0x3d69b7){return function(_0x5ae5ce){if(_0x5ae5ce){return _0x5ae5ce[_0xd81a('0x21')](_0x5bcf40)[_0xd81a('0x22')](function(_0x3d38be){return _0x3d38be;});}return null;};}function removeEntity(_0x47ea8e,_0x1debfb){return function(_0x7250e8){if(_0x7250e8){return _0x7250e8[_0xd81a('0x23')]()[_0xd81a('0x22')](function(){var _0x30ada8=_0x7250e8[_0xd81a('0x24')]({'plain':!![]});var _0xbfb2d7=_0xd81a('0x25');return db['UserProfileResource'][_0xd81a('0x23')]({'where':{'type':_0xbfb2d7,'resourceId':_0x30ada8['id']}})[_0xd81a('0x22')](function(){return _0x7250e8;});})[_0xd81a('0x22')](function(){_0x47ea8e[_0xd81a('0x17')](0xcc)[_0xd81a('0x18')]();});}};}function handleEntityNotFound(_0x43f448,_0x407305){return function(_0x1b868c){if(!_0x1b868c){_0x43f448['sendStatus'](0x194);}return _0x1b868c;};}function handleError(_0x329f4d,_0x5ebefc){_0x5ebefc=_0x5ebefc||0x1f4;return function(_0x2d2365){logger[_0xd81a('0x26')](_0x2d2365[_0xd81a('0x27')]);if(_0x2d2365[_0xd81a('0x28')]){delete _0x2d2365['name'];}_0x329f4d[_0xd81a('0x17')](_0x5ebefc)[_0xd81a('0x29')](_0x2d2365);};}exports[_0xd81a('0x2a')]=function(_0x4baa33,_0x4868a0){var _0x267901={},_0x3721b8={},_0x141076={'count':0x0,'rows':[]};var _0x4d2da1=_['map'](db['Trigger'][_0xd81a('0x2b')],function(_0x355090){return{'name':_0x355090[_0xd81a('0x2c')],'type':_0x355090[_0xd81a('0x2d')][_0xd81a('0x2e')]};});_0x3721b8['model']=_[_0xd81a('0x2f')](_0x4d2da1,_0xd81a('0x28'));_0x3721b8[_0xd81a('0x30')]=_[_0xd81a('0x31')](_0x4baa33[_0xd81a('0x30')]);_0x3721b8[_0xd81a('0x32')]=_[_0xd81a('0x33')](_0x3721b8[_0xd81a('0x34')],_0x3721b8[_0xd81a('0x30')]);_0x267901[_0xd81a('0x35')]=_[_0xd81a('0x33')](_0x3721b8[_0xd81a('0x34')],qs[_0xd81a('0x36')](_0x4baa33[_0xd81a('0x30')]['fields']));_0x267901['attributes']=_0x267901['attributes']['length']?_0x267901[_0xd81a('0x35')]:_0x3721b8[_0xd81a('0x34')];if(!_0x4baa33['query'][_0xd81a('0x37')](_0xd81a('0x38'))){_0x267901[_0xd81a('0x1b')]=qs[_0xd81a('0x1b')](_0x4baa33['query']['limit']);_0x267901[_0xd81a('0x1d')]=qs[_0xd81a('0x1d')](_0x4baa33[_0xd81a('0x30')][_0xd81a('0x1d')]);}_0x267901[_0xd81a('0x39')]=qs[_0xd81a('0x3a')](_0x4baa33[_0xd81a('0x30')][_0xd81a('0x3a')]);_0x267901[_0xd81a('0x3b')]=qs[_0xd81a('0x32')](_[_0xd81a('0x3c')](_0x4baa33[_0xd81a('0x30')],_0x3721b8[_0xd81a('0x32')]),_0x4d2da1);if(_0x4baa33[_0xd81a('0x30')][_0xd81a('0x3d')]){_0x267901[_0xd81a('0x3b')]=_['merge'](_0x267901[_0xd81a('0x3b')],{'$or':_['map'](_0x4d2da1,function(_0xd9fb8d){if(_0xd9fb8d['type']!=='VIRTUAL'){var _0x57c80a={};_0x57c80a[_0xd9fb8d[_0xd81a('0x28')]]={'$like':'%'+_0x4baa33[_0xd81a('0x30')][_0xd81a('0x3d')]+'%'};return _0x57c80a;}})});}_0x267901=_[_0xd81a('0x3e')]({},_0x267901,_0x4baa33[_0xd81a('0x3f')]);var _0x413155={'where':_0x267901['where']};return db['Trigger'][_0xd81a('0x1c')](_0x413155)[_0xd81a('0x22')](function(_0x3c2c25){_0x141076[_0xd81a('0x1c')]=_0x3c2c25;if(_0x4baa33[_0xd81a('0x30')][_0xd81a('0x40')]){_0x267901[_0xd81a('0x41')]=[{'all':!![]}];}return db['Trigger'][_0xd81a('0x42')](_0x267901);})[_0xd81a('0x22')](function(_0x500e3f){_0x141076[_0xd81a('0x43')]=_0x500e3f;return _0x141076;})[_0xd81a('0x22')](respondWithFilteredResult(_0x4868a0,_0x267901))['catch'](handleError(_0x4868a0,null));};exports['show']=function(_0x251d15,_0x5dfb0b){var _0x5a5c0a={'raw':![],'where':{'id':_0x251d15[_0xd81a('0x44')]['id']}},_0x4f3d28={};_0x4f3d28[_0xd81a('0x34')]=_[_0xd81a('0x31')](db[_0xd81a('0x45')][_0xd81a('0x2b')]);_0x4f3d28[_0xd81a('0x30')]=_[_0xd81a('0x31')](_0x251d15[_0xd81a('0x30')]);_0x4f3d28[_0xd81a('0x32')]=_[_0xd81a('0x33')](_0x4f3d28[_0xd81a('0x34')],_0x4f3d28[_0xd81a('0x30')]);_0x5a5c0a[_0xd81a('0x35')]=_['intersection'](_0x4f3d28[_0xd81a('0x34')],qs[_0xd81a('0x36')](_0x251d15['query'][_0xd81a('0x36')]));_0x5a5c0a[_0xd81a('0x35')]=_0x5a5c0a[_0xd81a('0x35')]['length']?_0x5a5c0a['attributes']:_0x4f3d28['model'];if(_0x251d15[_0xd81a('0x30')]['includeAll']){_0x5a5c0a[_0xd81a('0x41')]=[{'all':!![]}];}_0x5a5c0a=_[_0xd81a('0x3e')]({},_0x5a5c0a,_0x251d15[_0xd81a('0x3f')]);return db[_0xd81a('0x45')]['find'](_0x5a5c0a)[_0xd81a('0x22')](handleEntityNotFound(_0x5dfb0b,null))[_0xd81a('0x22')](respondWithResult(_0x5dfb0b,null))[_0xd81a('0x46')](handleError(_0x5dfb0b,null));};exports[_0xd81a('0x47')]=function(_0x2b9376,_0x1dc623){return db[_0xd81a('0x45')][_0xd81a('0x47')](_0x2b9376[_0xd81a('0x48')],{})['then'](function(_0x1abcec){var _0x271393=_0x2b9376[_0xd81a('0x49')][_0xd81a('0x24')]({'plain':!![]});if(!_0x271393)throw new Error(_0xd81a('0x4a'));if(_0x271393[_0xd81a('0x4b')]==='user'){var _0x16563a=_0x1abcec['get']({'plain':!![]});var _0x1bcf36=_0xd81a('0x25');return db[_0xd81a('0x4c')]['find']({'where':{'name':_0x1bcf36,'userProfileId':_0x271393[_0xd81a('0x4d')]},'raw':!![]})['then'](function(_0x3e5c8c){if(_0x3e5c8c&&_0x3e5c8c[_0xd81a('0x4e')]===0x0){return db[_0xd81a('0x4f')][_0xd81a('0x47')]({'name':_0x16563a[_0xd81a('0x28')],'resourceId':_0x16563a['id'],'type':_0x3e5c8c[_0xd81a('0x28')],'sectionId':_0x3e5c8c['id']},{})[_0xd81a('0x22')](function(){return _0x1abcec;});}else{return _0x1abcec;}})['catch'](function(_0x31d34c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31d34c);throw _0x31d34c;});}return _0x1abcec;})[_0xd81a('0x22')](respondWithResult(_0x1dc623,0xc9))[_0xd81a('0x46')](handleError(_0x1dc623,null));};exports[_0xd81a('0x21')]=function(_0x1f1aab,_0x440951){if(_0x1f1aab['body']['id']){delete _0x1f1aab[_0xd81a('0x48')]['id'];}return db[_0xd81a('0x45')]['find']({'where':{'id':_0x1f1aab['params']['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x440951,null))[_0xd81a('0x22')](saveUpdates(_0x1f1aab[_0xd81a('0x48')],null))['then'](respondWithResult(_0x440951,null))[_0xd81a('0x46')](handleError(_0x440951,null));};exports[_0xd81a('0x23')]=function(_0x58ab47,_0x1ce42e){return db[_0xd81a('0x45')][_0xd81a('0x50')]({'where':{'id':_0x58ab47['params']['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x1ce42e,null))[_0xd81a('0x22')](removeEntity(_0x1ce42e,null))[_0xd81a('0x46')](handleError(_0x1ce42e,null));};exports[_0xd81a('0x51')]=function(_0x1cc405,_0x2b040b,_0x438b9b){if(_0x1cc405['body']['id']){delete _0x1cc405[_0xd81a('0x48')]['id'];}return db['Trigger'][_0xd81a('0x50')]({'where':{'id':_0x1cc405[_0xd81a('0x44')]['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x2b040b,null))[_0xd81a('0x22')](function(_0x567f9d){if(_0x567f9d){_0x1cc405[_0xd81a('0x48')][_0xd81a('0x52')]=_0x567f9d['id'];return db[_0xd81a('0x53')][_0xd81a('0x47')](_0x1cc405[_0xd81a('0x48')]);}})[_0xd81a('0x22')](respondWithResult(_0x2b040b,null))[_0xd81a('0x46')](handleError(_0x2b040b,null));};exports[_0xd81a('0x54')]=function(_0xb44b9d,_0x4438ab,_0x4ee70e){if(_0xb44b9d['body']['id']){delete _0xb44b9d[_0xd81a('0x48')]['id'];}return db[_0xd81a('0x45')]['find']({'where':{'id':_0xb44b9d[_0xd81a('0x44')]['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x4438ab,null))[_0xd81a('0x22')](function(_0x155b1e){if(_0x155b1e){_0xb44b9d[_0xd81a('0x48')]['TriggerAnyId']=_0x155b1e['id'];return db[_0xd81a('0x53')][_0xd81a('0x47')](_0xb44b9d['body']);}})[_0xd81a('0x22')](respondWithResult(_0x4438ab,null))['catch'](handleError(_0x4438ab,null));};exports['getAllConditions']=function(_0x5e34aa,_0x37f300,_0x24056d){var _0x3c8b13={};var _0x33978b={};var _0x445ff5;var _0xcf1086;return db['Trigger'][_0xd81a('0x55')]({'where':{'id':_0x5e34aa[_0xd81a('0x44')]['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x37f300,null))[_0xd81a('0x22')](function(_0x20b891){if(_0x20b891){_0x445ff5=_0x20b891;_0x33978b['model']=_['keys'](db[_0xd81a('0x53')][_0xd81a('0x2b')]);_0x33978b[_0xd81a('0x30')]=_[_0xd81a('0x31')](_0x5e34aa[_0xd81a('0x30')]);_0x33978b[_0xd81a('0x32')]=_['intersection'](_0x33978b[_0xd81a('0x34')],_0x33978b[_0xd81a('0x30')]);_0x3c8b13[_0xd81a('0x35')]=_[_0xd81a('0x33')](_0x33978b[_0xd81a('0x34')],qs[_0xd81a('0x36')](_0x5e34aa[_0xd81a('0x30')][_0xd81a('0x36')]));_0x3c8b13[_0xd81a('0x35')]=_0x3c8b13['attributes'][_0xd81a('0x56')]?_0x3c8b13[_0xd81a('0x35')]:_0x33978b['model'];_0x3c8b13[_0xd81a('0x39')]=qs[_0xd81a('0x3a')](_0x5e34aa[_0xd81a('0x30')][_0xd81a('0x3a')]);_0x3c8b13['where']=qs['filters'](_[_0xd81a('0x3c')](_0x5e34aa[_0xd81a('0x30')],_0x33978b[_0xd81a('0x32')]));if(_0x5e34aa[_0xd81a('0x30')][_0xd81a('0x3d')]){_0x3c8b13[_0xd81a('0x3b')]=_['merge'](_0x3c8b13['where'],{'$or':_[_0xd81a('0x2f')](_0x3c8b13['attributes'],function(_0xd63e90){var _0x1191ec={};_0x1191ec[_0xd63e90]={'$like':'%'+_0x5e34aa[_0xd81a('0x30')]['filter']+'%'};return _0x1191ec;})});}_0x3c8b13=_[_0xd81a('0x3e')]({},_0x3c8b13,_0x5e34aa[_0xd81a('0x3f')]);return _0x445ff5['getAllConditions'](_0x3c8b13);}})['then'](function(_0x550de0){if(_0x550de0){_0xcf1086=_0x550de0['length'];if(!_0x5e34aa['query'][_0xd81a('0x37')](_0xd81a('0x38'))){_0x3c8b13[_0xd81a('0x1b')]=qs['limit'](_0x5e34aa[_0xd81a('0x30')][_0xd81a('0x1b')]);_0x3c8b13[_0xd81a('0x1d')]=qs[_0xd81a('0x1d')](_0x5e34aa['query'][_0xd81a('0x1d')]);}return _0x445ff5['getAllConditions'](_0x3c8b13);}})['then'](function(_0x2365e1){if(_0x2365e1){return _0x2365e1?{'count':_0xcf1086,'rows':_0x2365e1}:null;}})[_0xd81a('0x22')](respondWithResult(_0x37f300,null))[_0xd81a('0x46')](handleError(_0x37f300,null));};exports[_0xd81a('0x57')]=function(_0x5ce16d,_0x17f2f5,_0x23f1b8){var _0x2ddfbb={};var _0xe82e9b={};var _0xbbf023;var _0x19c0a6;return db[_0xd81a('0x45')]['findOne']({'where':{'id':_0x5ce16d[_0xd81a('0x44')]['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x17f2f5,null))['then'](function(_0x4941cc){if(_0x4941cc){_0xbbf023=_0x4941cc;_0xe82e9b[_0xd81a('0x34')]=_['keys'](db[_0xd81a('0x53')][_0xd81a('0x2b')]);_0xe82e9b[_0xd81a('0x30')]=_['keys'](_0x5ce16d[_0xd81a('0x30')]);_0xe82e9b[_0xd81a('0x32')]=_['intersection'](_0xe82e9b[_0xd81a('0x34')],_0xe82e9b[_0xd81a('0x30')]);_0x2ddfbb[_0xd81a('0x35')]=_[_0xd81a('0x33')](_0xe82e9b[_0xd81a('0x34')],qs[_0xd81a('0x36')](_0x5ce16d[_0xd81a('0x30')][_0xd81a('0x36')]));_0x2ddfbb[_0xd81a('0x35')]=_0x2ddfbb[_0xd81a('0x35')][_0xd81a('0x56')]?_0x2ddfbb['attributes']:_0xe82e9b[_0xd81a('0x34')];_0x2ddfbb['order']=qs[_0xd81a('0x3a')](_0x5ce16d[_0xd81a('0x30')][_0xd81a('0x3a')]);_0x2ddfbb[_0xd81a('0x3b')]=qs[_0xd81a('0x32')](_['pick'](_0x5ce16d['query'],_0xe82e9b[_0xd81a('0x32')]));if(_0x5ce16d['query'][_0xd81a('0x3d')]){_0x2ddfbb['where']=_[_0xd81a('0x3e')](_0x2ddfbb[_0xd81a('0x3b')],{'$or':_[_0xd81a('0x2f')](_0x2ddfbb[_0xd81a('0x35')],function(_0x5c5baf){var _0x441a8e={};_0x441a8e[_0x5c5baf]={'$like':'%'+_0x5ce16d['query']['filter']+'%'};return _0x441a8e;})});}_0x2ddfbb=_[_0xd81a('0x3e')]({},_0x2ddfbb,_0x5ce16d[_0xd81a('0x3f')]);return _0xbbf023[_0xd81a('0x57')](_0x2ddfbb);}})[_0xd81a('0x22')](function(_0x115ce8){if(_0x115ce8){_0x19c0a6=_0x115ce8[_0xd81a('0x56')];if(!_0x5ce16d[_0xd81a('0x30')][_0xd81a('0x37')](_0xd81a('0x38'))){_0x2ddfbb[_0xd81a('0x1b')]=qs[_0xd81a('0x1b')](_0x5ce16d[_0xd81a('0x30')][_0xd81a('0x1b')]);_0x2ddfbb[_0xd81a('0x1d')]=qs[_0xd81a('0x1d')](_0x5ce16d[_0xd81a('0x30')][_0xd81a('0x1d')]);}return _0xbbf023[_0xd81a('0x57')](_0x2ddfbb);}})[_0xd81a('0x22')](function(_0x4d6e4d){if(_0x4d6e4d){return _0x4d6e4d?{'count':_0x19c0a6,'rows':_0x4d6e4d}:null;}})[_0xd81a('0x22')](respondWithResult(_0x17f2f5,null))['catch'](handleError(_0x17f2f5,null));};exports[_0xd81a('0x58')]=function(_0x52b683,_0x48bbcf,_0x2b2b66){if(_0x52b683[_0xd81a('0x48')]['id']){delete _0x52b683[_0xd81a('0x48')]['id'];}return db['Trigger'][_0xd81a('0x50')]({'where':{'id':_0x52b683[_0xd81a('0x44')]['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x48bbcf,null))['then'](function(_0x449a6b){if(_0x449a6b){_0x52b683[_0xd81a('0x48')][_0xd81a('0x59')]=_0x449a6b['id'];return db['Action'][_0xd81a('0x47')](_0x52b683[_0xd81a('0x48')]);}})[_0xd81a('0x22')](respondWithResult(_0x48bbcf,null))[_0xd81a('0x46')](handleError(_0x48bbcf,null));};exports['getActions']=function(_0x2604f6,_0x302c5b,_0xcf368c){var _0x2aeb00={};var _0x95a37b={};var _0x41009b;var _0x1caf65;return db['Trigger'][_0xd81a('0x55')]({'where':{'id':_0x2604f6[_0xd81a('0x44')]['id']}})[_0xd81a('0x22')](handleEntityNotFound(_0x302c5b,null))[_0xd81a('0x22')](function(_0x1e5bbf){if(_0x1e5bbf){_0x41009b=_0x1e5bbf;_0x95a37b[_0xd81a('0x34')]=_[_0xd81a('0x31')](db[_0xd81a('0x5a')][_0xd81a('0x2b')]);_0x95a37b[_0xd81a('0x30')]=_[_0xd81a('0x31')](_0x2604f6[_0xd81a('0x30')]);_0x95a37b['filters']=_[_0xd81a('0x33')](_0x95a37b[_0xd81a('0x34')],_0x95a37b['query']);_0x2aeb00[_0xd81a('0x35')]=_[_0xd81a('0x33')](_0x95a37b['model'],qs['fields'](_0x2604f6[_0xd81a('0x30')][_0xd81a('0x36')]));_0x2aeb00[_0xd81a('0x35')]=_0x2aeb00[_0xd81a('0x35')][_0xd81a('0x56')]?_0x2aeb00[_0xd81a('0x35')]:_0x95a37b[_0xd81a('0x34')];_0x2aeb00[_0xd81a('0x39')]=qs['sort'](_0x2604f6[_0xd81a('0x30')][_0xd81a('0x3a')]);_0x2aeb00[_0xd81a('0x3b')]=qs[_0xd81a('0x32')](_[_0xd81a('0x3c')](_0x2604f6[_0xd81a('0x30')],_0x95a37b[_0xd81a('0x32')]));if(_0x2604f6[_0xd81a('0x30')][_0xd81a('0x3d')]){_0x2aeb00[_0xd81a('0x3b')]=_['merge'](_0x2aeb00[_0xd81a('0x3b')],{'$or':_[_0xd81a('0x2f')](_0x2aeb00[_0xd81a('0x35')],function(_0x463da7){var _0x3d298b={};_0x3d298b[_0x463da7]={'$like':'%'+_0x2604f6['query'][_0xd81a('0x3d')]+'%'};return _0x3d298b;})});}_0x2aeb00=_['merge']({},_0x2aeb00,_0x2604f6[_0xd81a('0x3f')]);return _0x41009b[_0xd81a('0x5b')](_0x2aeb00);}})[_0xd81a('0x22')](function(_0xe9bd19){if(_0xe9bd19){_0x1caf65=_0xe9bd19[_0xd81a('0x56')];if(!_0x2604f6[_0xd81a('0x30')][_0xd81a('0x37')](_0xd81a('0x38'))){_0x2aeb00[_0xd81a('0x1b')]=qs['limit'](_0x2604f6[_0xd81a('0x30')]['limit']);_0x2aeb00[_0xd81a('0x1d')]=qs[_0xd81a('0x1d')](_0x2604f6[_0xd81a('0x30')][_0xd81a('0x1d')]);}return _0x41009b[_0xd81a('0x5b')](_0x2aeb00);}})['then'](function(_0x1d1783){if(_0x1d1783){return _0x1d1783?{'count':_0x1caf65,'rows':_0x1d1783}:null;}})['then'](respondWithResult(_0x302c5b,null))[_0xd81a('0x46')](handleError(_0x302c5b,null));};
\ No newline at end of file
index 2bb952c..be14968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['exports','define','tools_triggers','lodash','util','../../config/logger','api','bluebird','request-promise','path','./trigger.attributes'];(function(_0x53a46e,_0x365f03){var _0x4c83e4=function(_0x22187c){while(--_0x22187c){_0x53a46e['push'](_0x53a46e['shift']());}};_0x4c83e4(++_0x365f03);}(_0x524a,0xf5));var _0xa524=function(_0x5b5f4c,_0x51ceff){_0x5b5f4c=_0x5b5f4c-0x0;var _0x2bcfd9=_0x524a[_0x5b5f4c];return _0x2bcfd9;};'use strict';var _=require(_0xa524('0x0'));var util=require(_0xa524('0x1'));var logger=require(_0xa524('0x2'))(_0xa524('0x3'));var moment=require('moment');var BPromise=require(_0xa524('0x4'));var rp=require(_0xa524('0x5'));var fs=require('fs');var path=require(_0xa524('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa524('0x7'));module[_0xa524('0x8')]=function(_0x16227b,_0x5f472f){return _0x16227b[_0xa524('0x9')]('Trigger',attributes,{'tableName':_0xa524('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c6d=['rimraf','../../config/environment','./trigger.attributes','define','Trigger','tools_triggers','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0xb219f7,_0x409757){var _0x217023=function(_0x26036b){while(--_0x26036b){_0xb219f7['push'](_0xb219f7['shift']());}};_0x217023(++_0x409757);}(_0x3c6d,0x199));var _0xd3c6=function(_0x29a233,_0x38d86e){_0x29a233=_0x29a233-0x0;var _0x5aea8b=_0x3c6d[_0x29a233];return _0x5aea8b;};'use strict';var _=require(_0xd3c6('0x0'));var util=require(_0xd3c6('0x1'));var logger=require(_0xd3c6('0x2'))(_0xd3c6('0x3'));var moment=require('moment');var BPromise=require(_0xd3c6('0x4'));var rp=require(_0xd3c6('0x5'));var fs=require('fs');var path=require(_0xd3c6('0x6'));var rimraf=require(_0xd3c6('0x7'));var config=require(_0xd3c6('0x8'));var attributes=require(_0xd3c6('0x9'));module['exports']=function(_0x11fb61,_0xe7c405){return _0x11fb61[_0xd3c6('0xa')](_0xd3c6('0xb'),attributes,{'tableName':_0xd3c6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c67265e..1bd1aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3778=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','code','error','Trigger,\x20%s,\x20%s','message','catch','GetTrigger','Trigger','options','raw','where','attributes','include','map','model','ShowTrigger','find'];(function(_0xdd827a,_0x482ad2){var _0x2f46f1=function(_0x221046){while(--_0x221046){_0xdd827a['push'](_0xdd827a['shift']());}};_0x2f46f1(++_0x482ad2);}(_0x3778,0xe7));var _0x8377=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3778[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8377('0x0'));var BPromise=require(_0x8377('0x1'));var rs=require(_0x8377('0x2'));var fs=require('fs');var Redis=require(_0x8377('0x3'));var db=require(_0x8377('0x4'))['db'];var utils=require(_0x8377('0x5'));var logger=require('../../config/logger')(_0x8377('0x6'));var config=require(_0x8377('0x7'));var jayson=require(_0x8377('0x8'));var client=jayson[_0x8377('0x9')][_0x8377('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32a8f8,_0x41ea11,_0x42aba0){return new BPromise(function(_0x27d9e2,_0x4782d6){return client[_0x8377('0xb')](_0x32a8f8,_0x42aba0)[_0x8377('0xc')](function(_0x369078){logger[_0x8377('0xd')]('Trigger,\x20%s,\x20%s',_0x41ea11,'request\x20sent');logger[_0x8377('0xe')](_0x8377('0xf'),_0x41ea11,'request\x20sent',JSON[_0x8377('0x10')](_0x369078));if(_0x369078['error']){if(_0x369078['error'][_0x8377('0x11')]===0x1f4){logger[_0x8377('0x12')](_0x8377('0x13'),_0x41ea11,_0x369078[_0x8377('0x12')]['message']);return _0x4782d6(_0x369078[_0x8377('0x12')][_0x8377('0x14')]);}logger[_0x8377('0x12')](_0x8377('0x13'),_0x41ea11,_0x369078[_0x8377('0x12')][_0x8377('0x14')]);return _0x27d9e2(_0x369078[_0x8377('0x12')][_0x8377('0x14')]);}else{logger[_0x8377('0xd')]('Trigger,\x20%s,\x20%s',_0x41ea11,'request\x20sent');_0x27d9e2(_0x369078['result'][_0x8377('0x14')]);}})[_0x8377('0x15')](function(_0x7cfdd8){logger['error']('Trigger,\x20%s,\x20%s',_0x41ea11,_0x7cfdd8);_0x4782d6(_0x7cfdd8);});});}exports[_0x8377('0x16')]=function(_0x55acb4){var _0x235af4=this;return new Promise(function(_0x3e456e,_0x31cee6){return db[_0x8377('0x17')]['findAll']({'raw':_0x55acb4[_0x8377('0x18')]?_0x55acb4[_0x8377('0x18')][_0x8377('0x19')]===undefined?!![]:![]:!![],'where':_0x55acb4['options']?_0x55acb4[_0x8377('0x18')][_0x8377('0x1a')]||null:null,'attributes':_0x55acb4['options']?_0x55acb4[_0x8377('0x18')][_0x8377('0x1b')]||null:null,'limit':_0x55acb4['options']?_0x55acb4['options']['limit']||null:null,'include':_0x55acb4['options']?_0x55acb4[_0x8377('0x18')][_0x8377('0x1c')]?_['map'](_0x55acb4[_0x8377('0x18')][_0x8377('0x1c')],function(_0x28c7dc){return{'model':db[_0x28c7dc['model']],'as':_0x28c7dc['as'],'attributes':_0x28c7dc[_0x8377('0x1b')],'include':_0x28c7dc[_0x8377('0x1c')]?_[_0x8377('0x1d')](_0x28c7dc['include'],function(_0x531ac6){return{'model':db[_0x531ac6[_0x8377('0x1e')]],'as':_0x531ac6['as'],'attributes':_0x531ac6['attributes'],'include':_0x531ac6[_0x8377('0x1c')]?_['map'](_0x531ac6[_0x8377('0x1c')],function(_0x59c7a4){return{'model':db[_0x59c7a4['model']],'as':_0x59c7a4['as'],'attributes':_0x59c7a4[_0x8377('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d922f){logger[_0x8377('0xd')](_0x8377('0x16'),_0x55acb4);logger[_0x8377('0xe')](_0x8377('0x16'),_0x55acb4,JSON[_0x8377('0x10')](_0x2d922f));_0x3e456e(_0x2d922f);})[_0x8377('0x15')](function(_0x1d8047){logger['error']('GetTrigger',_0x1d8047[_0x8377('0x14')],_0x55acb4);_0x31cee6(_0x235af4['error'](0x1f4,_0x1d8047[_0x8377('0x14')]));});});};exports[_0x8377('0x1f')]=function(_0x2d1667){var _0x3e7a26=this;return new Promise(function(_0x5a6e7e,_0x2deeb4){return db['Trigger'][_0x8377('0x20')]({'raw':_0x2d1667[_0x8377('0x18')]?_0x2d1667[_0x8377('0x18')][_0x8377('0x19')]===undefined?!![]:![]:!![],'where':_0x2d1667[_0x8377('0x18')]?_0x2d1667[_0x8377('0x18')]['where']||null:null,'attributes':_0x2d1667[_0x8377('0x18')]?_0x2d1667['options'][_0x8377('0x1b')]||null:null,'include':_0x2d1667['options']?_0x2d1667[_0x8377('0x18')][_0x8377('0x1c')]?_[_0x8377('0x1d')](_0x2d1667[_0x8377('0x18')][_0x8377('0x1c')],function(_0x347b88){return{'model':db[_0x347b88[_0x8377('0x1e')]],'as':_0x347b88['as'],'attributes':_0x347b88[_0x8377('0x1b')],'include':_0x347b88[_0x8377('0x1c')]?_[_0x8377('0x1d')](_0x347b88['include'],function(_0x17c194){return{'model':db[_0x17c194[_0x8377('0x1e')]],'as':_0x17c194['as'],'attributes':_0x17c194[_0x8377('0x1b')],'include':_0x17c194[_0x8377('0x1c')]?_[_0x8377('0x1d')](_0x17c194[_0x8377('0x1c')],function(_0x2c7cc6){return{'model':db[_0x2c7cc6['model']],'as':_0x2c7cc6['as'],'attributes':_0x2c7cc6[_0x8377('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x8377('0xc')](function(_0x417ab6){logger[_0x8377('0xd')](_0x8377('0x1f'),_0x2d1667);logger[_0x8377('0xe')]('ShowTrigger',_0x2d1667,JSON[_0x8377('0x10')](_0x417ab6));_0x5a6e7e(_0x417ab6);})[_0x8377('0x15')](function(_0x24bbed){logger[_0x8377('0x12')]('ShowTrigger',_0x24bbed['message'],_0x2d1667);_0x2deeb4(_0x3e7a26[_0x8377('0x12')](0x1f4,_0x24bbed[_0x8377('0x14')]));});});};
\ No newline at end of file
+var _0xfb1c=['../../config/environment','jayson/promise','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTrigger','Trigger','findAll','options','where','attributes','limit','include','model','map','ShowTrigger','find','raw','stringify','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x591e16,_0x5aefc1){var _0x543b35=function(_0x81e3be){while(--_0x81e3be){_0x591e16['push'](_0x591e16['shift']());}};_0x543b35(++_0x5aefc1);}(_0xfb1c,0xd1));var _0xcfb1=function(_0x6c823,_0x3f5e35){_0x6c823=_0x6c823-0x0;var _0x1fda1b=_0xfb1c[_0x6c823];return _0x1fda1b;};'use strict';var _=require('lodash');var util=require(_0xcfb1('0x0'));var moment=require(_0xcfb1('0x1'));var BPromise=require(_0xcfb1('0x2'));var rs=require(_0xcfb1('0x3'));var fs=require('fs');var Redis=require(_0xcfb1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcfb1('0x5'));var logger=require(_0xcfb1('0x6'))('rpc');var config=require(_0xcfb1('0x7'));var jayson=require(_0xcfb1('0x8'));var client=jayson['client'][_0xcfb1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4de66b,_0x52f49b,_0x2c4a56){return new BPromise(function(_0x5e2a6c,_0x48525b){return client[_0xcfb1('0xa')](_0x4de66b,_0x2c4a56)[_0xcfb1('0xb')](function(_0x531446){logger[_0xcfb1('0xc')](_0xcfb1('0xd'),_0x52f49b,_0xcfb1('0xe'));logger[_0xcfb1('0xf')](_0xcfb1('0x10'),_0x52f49b,_0xcfb1('0xe'),JSON['stringify'](_0x531446));if(_0x531446[_0xcfb1('0x11')]){if(_0x531446[_0xcfb1('0x11')][_0xcfb1('0x12')]===0x1f4){logger['error'](_0xcfb1('0xd'),_0x52f49b,_0x531446[_0xcfb1('0x11')][_0xcfb1('0x13')]);return _0x48525b(_0x531446[_0xcfb1('0x11')][_0xcfb1('0x13')]);}logger[_0xcfb1('0x11')](_0xcfb1('0xd'),_0x52f49b,_0x531446[_0xcfb1('0x11')][_0xcfb1('0x13')]);return _0x5e2a6c(_0x531446[_0xcfb1('0x11')][_0xcfb1('0x13')]);}else{logger[_0xcfb1('0xc')](_0xcfb1('0xd'),_0x52f49b,_0xcfb1('0xe'));_0x5e2a6c(_0x531446[_0xcfb1('0x14')][_0xcfb1('0x13')]);}})[_0xcfb1('0x15')](function(_0x5454d3){logger['error']('Trigger,\x20%s,\x20%s',_0x52f49b,_0x5454d3);_0x48525b(_0x5454d3);});});}exports[_0xcfb1('0x16')]=function(_0x4945f8){var _0x3c1fb7=this;return new Promise(function(_0x198d70,_0x55316d){return db[_0xcfb1('0x17')][_0xcfb1('0x18')]({'raw':_0x4945f8[_0xcfb1('0x19')]?_0x4945f8[_0xcfb1('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4945f8[_0xcfb1('0x19')]?_0x4945f8[_0xcfb1('0x19')][_0xcfb1('0x1a')]||null:null,'attributes':_0x4945f8[_0xcfb1('0x19')]?_0x4945f8[_0xcfb1('0x19')][_0xcfb1('0x1b')]||null:null,'limit':_0x4945f8[_0xcfb1('0x19')]?_0x4945f8[_0xcfb1('0x19')][_0xcfb1('0x1c')]||null:null,'include':_0x4945f8[_0xcfb1('0x19')]?_0x4945f8[_0xcfb1('0x19')][_0xcfb1('0x1d')]?_['map'](_0x4945f8[_0xcfb1('0x19')][_0xcfb1('0x1d')],function(_0x22b853){return{'model':db[_0x22b853[_0xcfb1('0x1e')]],'as':_0x22b853['as'],'attributes':_0x22b853[_0xcfb1('0x1b')],'include':_0x22b853['include']?_[_0xcfb1('0x1f')](_0x22b853[_0xcfb1('0x1d')],function(_0x43e11c){return{'model':db[_0x43e11c['model']],'as':_0x43e11c['as'],'attributes':_0x43e11c['attributes'],'include':_0x43e11c[_0xcfb1('0x1d')]?_[_0xcfb1('0x1f')](_0x43e11c[_0xcfb1('0x1d')],function(_0x2e0394){return{'model':db[_0x2e0394['model']],'as':_0x2e0394['as'],'attributes':_0x2e0394['attributes']};}):[]};}):[]};}):[]:[]})[_0xcfb1('0xb')](function(_0x6b108b){logger[_0xcfb1('0xc')](_0xcfb1('0x16'),_0x4945f8);logger[_0xcfb1('0xf')](_0xcfb1('0x16'),_0x4945f8,JSON['stringify'](_0x6b108b));_0x198d70(_0x6b108b);})['catch'](function(_0x493c6){logger['error'](_0xcfb1('0x16'),_0x493c6['message'],_0x4945f8);_0x55316d(_0x3c1fb7['error'](0x1f4,_0x493c6[_0xcfb1('0x13')]));});});};exports[_0xcfb1('0x20')]=function(_0x4f5370){var _0x5b0d76=this;return new Promise(function(_0x20e578,_0xeb378b){return db[_0xcfb1('0x17')][_0xcfb1('0x21')]({'raw':_0x4f5370[_0xcfb1('0x19')]?_0x4f5370[_0xcfb1('0x19')][_0xcfb1('0x22')]===undefined?!![]:![]:!![],'where':_0x4f5370[_0xcfb1('0x19')]?_0x4f5370[_0xcfb1('0x19')][_0xcfb1('0x1a')]||null:null,'attributes':_0x4f5370['options']?_0x4f5370[_0xcfb1('0x19')][_0xcfb1('0x1b')]||null:null,'include':_0x4f5370['options']?_0x4f5370[_0xcfb1('0x19')][_0xcfb1('0x1d')]?_[_0xcfb1('0x1f')](_0x4f5370[_0xcfb1('0x19')][_0xcfb1('0x1d')],function(_0x69818a){return{'model':db[_0x69818a['model']],'as':_0x69818a['as'],'attributes':_0x69818a[_0xcfb1('0x1b')],'include':_0x69818a['include']?_[_0xcfb1('0x1f')](_0x69818a[_0xcfb1('0x1d')],function(_0x42d024){return{'model':db[_0x42d024[_0xcfb1('0x1e')]],'as':_0x42d024['as'],'attributes':_0x42d024[_0xcfb1('0x1b')],'include':_0x42d024['include']?_[_0xcfb1('0x1f')](_0x42d024[_0xcfb1('0x1d')],function(_0x29749e){return{'model':db[_0x29749e['model']],'as':_0x29749e['as'],'attributes':_0x29749e[_0xcfb1('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcfb1('0xb')](function(_0x5d40ef){logger['info'](_0xcfb1('0x20'),_0x4f5370);logger[_0xcfb1('0xf')](_0xcfb1('0x20'),_0x4f5370,JSON[_0xcfb1('0x23')](_0x5d40ef));_0x20e578(_0x5d40ef);})[_0xcfb1('0x15')](function(_0x56d897){logger[_0xcfb1('0x11')](_0xcfb1('0x20'),_0x56d897[_0xcfb1('0x13')],_0x4f5370);_0xeb378b(_0x5b0d76[_0xcfb1('0x11')](0x1f4,_0x56d897[_0xcfb1('0x13')]));});});};
\ No newline at end of file
index 4e0940a..8cb777c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5c3=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','clone','create','put','/:id','update','delete','destroy','multer','util','path','express'];(function(_0x17a126,_0x710187){var _0x1c7320=function(_0x5e1626){while(--_0x5e1626){_0x17a126['push'](_0x17a126['shift']());}};_0x1c7320(++_0x710187);}(_0xb5c3,0xb0));var _0x3b5c=function(_0x4e562c,_0x579d43){_0x4e562c=_0x4e562c-0x0;var _0x2e2d24=_0xb5c3[_0x4e562c];return _0x2e2d24;};'use strict';var multer=require(_0x3b5c('0x0'));var util=require(_0x3b5c('0x1'));var path=require(_0x3b5c('0x2'));var timeout=require('connect-timeout');var express=require(_0x3b5c('0x3'));var router=express['Router']();var fs_extra=require(_0x3b5c('0x4'));var auth=require(_0x3b5c('0x5'));var interaction=require(_0x3b5c('0x6'));var config=require(_0x3b5c('0x7'));var controller=require('./trunk.controller');router[_0x3b5c('0x8')]('/',auth[_0x3b5c('0x9')](),controller[_0x3b5c('0xa')]);router[_0x3b5c('0x8')]('/:id',auth[_0x3b5c('0x9')](),controller[_0x3b5c('0xb')]);router[_0x3b5c('0xc')]('/:id/clone',auth[_0x3b5c('0x9')](),controller[_0x3b5c('0xd')]);router[_0x3b5c('0xc')]('/',auth[_0x3b5c('0x9')](),controller[_0x3b5c('0xe')]);router[_0x3b5c('0xf')](_0x3b5c('0x10'),auth['isAuthenticated'](),controller[_0x3b5c('0x11')]);router[_0x3b5c('0x12')]('/:id',auth[_0x3b5c('0x9')](),controller[_0x3b5c('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x343f=['get','/:id','isAuthenticated','post','/:id/clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./trunk.controller'];(function(_0x22589f,_0x3f33b7){var _0x4b1e54=function(_0x301401){while(--_0x301401){_0x22589f['push'](_0x22589f['shift']());}};_0x4b1e54(++_0x3f33b7);}(_0x343f,0x172));var _0xf343=function(_0x1bbd6a,_0x5eb890){_0x1bbd6a=_0x1bbd6a-0x0;var _0x2e8fd0=_0x343f[_0x1bbd6a];return _0x2e8fd0;};'use strict';var multer=require(_0xf343('0x0'));var util=require(_0xf343('0x1'));var path=require(_0xf343('0x2'));var timeout=require(_0xf343('0x3'));var express=require('express');var router=express[_0xf343('0x4')]();var fs_extra=require(_0xf343('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf343('0x6'));var controller=require(_0xf343('0x7'));router[_0xf343('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf343('0x8')](_0xf343('0x9'),auth[_0xf343('0xa')](),controller['show']);router[_0xf343('0xb')](_0xf343('0xc'),auth[_0xf343('0xa')](),controller['clone']);router[_0xf343('0xb')]('/',auth[_0xf343('0xa')](),controller['create']);router[_0xf343('0xd')](_0xf343('0x9'),auth['isAuthenticated'](),controller[_0xf343('0xe')]);router[_0xf343('0xf')](_0xf343('0x9'),auth['isAuthenticated'](),controller[_0xf343('0x10')]);module[_0xf343('0x11')]=router;
\ No newline at end of file
index 3e9faaa..81022c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7054=['force_rport,comedia','setDataValue','nat','split','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','pai','actpass','dynamic','update,nonat','BOOLEAN','name','friend','user','peer','STRING','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','ENUM','rfc2833','info','inband','auto','yes','nonat','update'];(function(_0x2ea4f0,_0x420118){var _0x5c5877=function(_0x16f450){while(--_0x16f450){_0x2ea4f0['push'](_0x2ea4f0['shift']());}};_0x5c5877(++_0x420118);}(_0x7054,0x1e4));var _0x4705=function(_0xe78202,_0x200dd0){_0xe78202=_0xe78202-0x0;var _0xd44ff5=_0x7054[_0xe78202];return _0xd44ff5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4705('0x0'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x4705('0x1'),_0x4705('0x2'),_0x4705('0x3')),'allowNull':![],'defaultValue':_0x4705('0x1')},'context':{'type':Sequelize[_0x4705('0x4')],'allowNull':![],'defaultValue':_0x4705('0x5')},'callingpres':{'type':Sequelize['ENUM'](_0x4705('0x6'),_0x4705('0x7'),_0x4705('0x8'),_0x4705('0x9'),_0x4705('0xa'),'PROHIB_PASSED_SCREEN',_0x4705('0xb'),_0x4705('0xc'))},'deny':{'type':Sequelize[_0x4705('0x4')]},'permit':{'type':Sequelize[_0x4705('0x4')]},'secret':{'type':Sequelize[_0x4705('0x4')]},'md5secret':{'type':Sequelize[_0x4705('0x4')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize['STRING'],'defaultValue':_0x4705('0xd'),'set':function(_0x2f14eb){this['setDataValue'](_0x4705('0xe'),_0x2f14eb?_0x2f14eb[_0x4705('0xf')](','):null);},'get':function(){return this['getDataValue'](_0x4705('0xe'))?this[_0x4705('0x10')]('transport')['split'](','):null;},'comment':_0x4705('0x11')},'dtmfmode':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x13'),_0x4705('0x14'),'shortinfo',_0x4705('0x15'),_0x4705('0x16')),'defaultValue':_0x4705('0x13')},'directmedia':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no',_0x4705('0x18'),_0x4705('0x19'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x4705('0x4')]},'nat':{'type':Sequelize[_0x4705('0x4')],'defaultValue':_0x4705('0x1a'),'set':function(_0x8fe78c){this[_0x4705('0x1b')](_0x4705('0x1c'),_0x8fe78c?_0x8fe78c[_0x4705('0xf')](','):null);},'get':function(){return this[_0x4705('0x10')](_0x4705('0x1c'))?this[_0x4705('0x10')](_0x4705('0x1c'))[_0x4705('0x1d')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x4705('0x4')]},'namedcallgroup':{'type':Sequelize[_0x4705('0x4')]},'pickupgroup':{'type':Sequelize[_0x4705('0x4')]},'namedpickupgroup':{'type':Sequelize[_0x4705('0x4')]},'language':{'type':Sequelize[_0x4705('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x4705('0x4')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x4705('0x4')],'defaultValue':_0x4705('0x1e')},'allow':{'type':Sequelize[_0x4705('0x4')],'allowNull':![],'defaultValue':_0x4705('0x1f'),'set':function(_0x2b9d99){this[_0x4705('0x1b')](_0x4705('0x20'),_0x2b9d99?_0x2b9d99[_0x4705('0xf')](';'):_0x4705('0x1f'));},'get':function(){return this[_0x4705('0x10')](_0x4705('0x20'))?this[_0x4705('0x10')](_0x4705('0x20'))['split'](';'):null;},'comment':_0x4705('0x21')},'autoframing':{'type':Sequelize[_0x4705('0x12')]('yes','no')},'insecure':{'type':Sequelize[_0x4705('0x4')],'defaultValue':_0x4705('0x22'),'set':function(_0x456816){this['setDataValue']('insecure',_0x456816?_0x456816['join'](','):null);},'get':function(){return this[_0x4705('0x10')](_0x4705('0x23'))?this[_0x4705('0x10')]('insecure')[_0x4705('0x1d')](','):null;},'comment':_0x4705('0x24')},'trustrpid':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x4705('0x17'),'no',_0x4705('0x25'))},'promiscredir':{'type':Sequelize['ENUM'](_0x4705('0x17'),'no')},'useclientcode':{'type':Sequelize['ENUM']('yes','no')},'accountcode':{'type':Sequelize[_0x4705('0x26')](0xb)},'setvar':{'type':Sequelize[_0x4705('0x4')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0x4705('0x27')},'amaflags':{'type':Sequelize[_0x4705('0x4')]},'callcounter':{'type':Sequelize[_0x4705('0x12')]('yes','no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x4705('0x26')](0xb)},'allowoverlap':{'type':Sequelize['ENUM']('yes','no')},'allowsubscribe':{'type':Sequelize[_0x4705('0x12')]('yes','no')},'allowtransfer':{'type':Sequelize['ENUM']('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no')},'subscribecontext':{'type':Sequelize[_0x4705('0x4')]},'template':{'type':Sequelize[_0x4705('0x4')]},'videosupport':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no',_0x4705('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x4705('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no')},'mailbox':{'type':Sequelize[_0x4705('0x4')]},'session_timers':{'type':Sequelize['ENUM'](_0x4705('0x29'),_0x4705('0x2a'),_0x4705('0x2b'))},'session_expires':{'type':Sequelize[_0x4705('0x26')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x2c'),_0x4705('0x2d')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x4705('0x4')]},'regexten':{'type':Sequelize[_0x4705('0x4')]},'fromdomain':{'type':Sequelize[_0x4705('0x4')]},'fromuser':{'type':Sequelize[_0x4705('0x4')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x4705('0x17'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0x4705('0x4')]},'defaultuser':{'type':Sequelize[_0x4705('0x4')]},'rtptimeout':{'type':Sequelize[_0x4705('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x4705('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x4705('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no',_0x4705('0x2e')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x4705('0x4')]},'callbackextension':{'type':Sequelize[_0x4705('0x4')]},'timert1':{'type':Sequelize[_0x4705('0x26')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x4705('0x26')](0xb)},'contactpermit':{'type':Sequelize[_0x4705('0x4')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x4705('0x4')]},'unsolicited_mailbox':{'type':Sequelize[_0x4705('0x4')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x4705('0x26')](0xb)},'encryption':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no')},'force_avp':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no')},'icesupport':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no')},'dtlsenable':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no','fingerprint','certificate')},'dtlsrekey':{'type':Sequelize[_0x4705('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0x4705('0x4')]},'dtlsprivatekey':{'type':Sequelize[_0x4705('0x4')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x4705('0x4')]},'dtlscapath':{'type':Sequelize[_0x4705('0x4')]},'dtlssetup':{'type':Sequelize[_0x4705('0x12')]('active','passive',_0x4705('0x2f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x4705('0x4')]},'usereqphone':{'type':Sequelize[_0x4705('0x12')](_0x4705('0x17'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x4705('0x4')]},'recordofffeature':{'type':Sequelize[_0x4705('0x4')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x4705('0x12')]('yes','no')},'subscribemwi':{'type':Sequelize[_0x4705('0x12')]('yes','no')},'vmexten':{'type':Sequelize[_0x4705('0x4')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x4705('0x4')]},'parkinglot':{'type':Sequelize[_0x4705('0x4')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING'],'defaultValue':_0x4705('0x30')},'canreinvite':{'type':Sequelize[_0x4705('0x12')]('yes','no',_0x4705('0x18'),_0x4705('0x19'),_0x4705('0x31')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x4705('0x4')]},'otherFields':{'type':Sequelize[_0x4705('0x4')]},'active':{'type':Sequelize[_0x4705('0x32')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x4705('0x4')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x9aef=['BOOLEAN','exports','STRING','name','ENUM','user','peer','friend','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','nonat','update','outgoing','yes','force_rport,comedia','setDataValue','nat','join','all','ulaw;alaw;gsm','allow','port,invite','insecure','never','INTEGER','always','refuse','originate','uac','uas','pai','fingerprint','certificate','active','passive','actpass','update,nonat'];(function(_0x13c304,_0x4791de){var _0x12696e=function(_0x2070d4){while(--_0x2070d4){_0x13c304['push'](_0x13c304['shift']());}};_0x12696e(++_0x4791de);}(_0x9aef,0x69));var _0xf9ae=function(_0x3b60d7,_0x5ea279){_0x3b60d7=_0x3b60d7-0x0;var _0x163a86=_0x9aef[_0x3b60d7];return _0x163a86;};'use strict';var Sequelize=require('sequelize');module[_0xf9ae('0x0')]={'name':{'type':Sequelize[_0xf9ae('0x1')],'allowNull':![],'unique':_0xf9ae('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xf9ae('0x3')]('friend',_0xf9ae('0x4'),_0xf9ae('0x5')),'allowNull':![],'defaultValue':_0xf9ae('0x6')},'context':{'type':Sequelize[_0xf9ae('0x1')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x7'),_0xf9ae('0x8'),_0xf9ae('0x9'),_0xf9ae('0xa'),_0xf9ae('0xb'),_0xf9ae('0xc'),_0xf9ae('0xd'),'PROHIB')},'deny':{'type':Sequelize[_0xf9ae('0x1')]},'permit':{'type':Sequelize[_0xf9ae('0x1')]},'secret':{'type':Sequelize[_0xf9ae('0x1')]},'md5secret':{'type':Sequelize[_0xf9ae('0x1')]},'remotesecret':{'type':Sequelize[_0xf9ae('0x1')]},'transport':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':_0xf9ae('0xe'),'set':function(_0x157dab){this['setDataValue'](_0xf9ae('0xf'),_0x157dab?_0x157dab['join'](','):null);},'get':function(){return this[_0xf9ae('0x10')](_0xf9ae('0xf'))?this[_0xf9ae('0x10')]('transport')[_0xf9ae('0x11')](','):null;},'comment':_0xf9ae('0x12')},'dtmfmode':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x13'),_0xf9ae('0x14'),_0xf9ae('0x15'),_0xf9ae('0x16'),_0xf9ae('0x17')),'defaultValue':_0xf9ae('0x13')},'directmedia':{'type':Sequelize[_0xf9ae('0x3')]('yes','no',_0xf9ae('0x18'),_0xf9ae('0x19'),_0xf9ae('0x1a')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xf9ae('0x1')]},'directmediadeny':{'type':Sequelize[_0xf9ae('0x1')]},'nat':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':_0xf9ae('0x1c'),'set':function(_0x3602d0){this[_0xf9ae('0x1d')](_0xf9ae('0x1e'),_0x3602d0?_0x3602d0[_0xf9ae('0x1f')](','):null);},'get':function(){return this[_0xf9ae('0x10')](_0xf9ae('0x1e'))?this[_0xf9ae('0x10')]('nat')[_0xf9ae('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xf9ae('0x1')]},'pickupgroup':{'type':Sequelize[_0xf9ae('0x1')]},'namedpickupgroup':{'type':Sequelize[_0xf9ae('0x1')]},'language':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':_0xf9ae('0x20')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf9ae('0x21'),'set':function(_0x20ce29){this['setDataValue'](_0xf9ae('0x22'),_0x20ce29?_0x20ce29[_0xf9ae('0x1f')](';'):_0xf9ae('0x21'));},'get':function(){return this['getDataValue'](_0xf9ae('0x22'))?this[_0xf9ae('0x10')](_0xf9ae('0x22'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'insecure':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':_0xf9ae('0x23'),'set':function(_0x52ccca){this[_0xf9ae('0x1d')]('insecure',_0x52ccca?_0x52ccca[_0xf9ae('0x1f')](','):null);},'get':function(){return this[_0xf9ae('0x10')](_0xf9ae('0x24'))?this['getDataValue'](_0xf9ae('0x24'))[_0xf9ae('0x11')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0xf9ae('0x1b'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xf9ae('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no',_0xf9ae('0x25'))},'promiscredir':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'useclientcode':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'accountcode':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'setvar':{'type':Sequelize[_0xf9ae('0x1')]},'callerid':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xf9ae('0x1')]},'callcounter':{'type':Sequelize[_0xf9ae('0x3')]('yes','no'),'defaultValue':_0xf9ae('0x1b')},'busylevel':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'allowsubscribe':{'type':Sequelize[_0xf9ae('0x3')]('yes','no')},'allowtransfer':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'ignoresdpversion':{'type':Sequelize[_0xf9ae('0x3')]('yes','no')},'subscribecontext':{'type':Sequelize[_0xf9ae('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no',_0xf9ae('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM']('accept',_0xf9ae('0x28'),_0xf9ae('0x29'))},'session_expires':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'session_minse':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'session_refresher':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x2a'),_0xf9ae('0x2b')),'defaultValue':_0xf9ae('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0xf9ae('0x1')]},'regexten':{'type':Sequelize[_0xf9ae('0x1')]},'fromdomain':{'type':Sequelize[_0xf9ae('0x1')]},'fromuser':{'type':Sequelize[_0xf9ae('0x1')]},'port':{'type':Sequelize[_0xf9ae('0x26')](0x5)},'qualify':{'type':Sequelize[_0xf9ae('0x3')]('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'defaultip':{'type':Sequelize[_0xf9ae('0x1')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'sendrpid':{'type':Sequelize['ENUM']('yes','no',_0xf9ae('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xf9ae('0x1')]},'callbackextension':{'type':Sequelize[_0xf9ae('0x1')]},'timert1':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'timerb':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'qualifyfreq':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xf9ae('0x1')]},'contactacl':{'type':Sequelize[_0xf9ae('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0xf9ae('0x1')]},'use_q850_reason':{'type':Sequelize[_0xf9ae('0x1')]},'maxforwards':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'encryption':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'force_avp':{'type':Sequelize['ENUM']('yes','no')},'icesupport':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xf9ae('0x1b'),'no')},'dtlsverify':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no',_0xf9ae('0x2d'),_0xf9ae('0x2e'))},'dtlsrekey':{'type':Sequelize[_0xf9ae('0x26')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0xf9ae('0x1')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xf9ae('0x1')]},'dtlscapath':{'type':Sequelize[_0xf9ae('0x1')]},'dtlssetup':{'type':Sequelize['ENUM'](_0xf9ae('0x2f'),_0xf9ae('0x30'),_0xf9ae('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xf9ae('0x1')]},'usereqphone':{'type':Sequelize[_0xf9ae('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xf9ae('0x1')]},'recordofffeature':{'type':Sequelize[_0xf9ae('0x1')]},'call_limit':{'type':Sequelize[_0xf9ae('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xf9ae('0x3')]('yes','no')},'subscribemwi':{'type':Sequelize[_0xf9ae('0x3')](_0xf9ae('0x1b'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xf9ae('0x1')]},'description':{'type':Sequelize[_0xf9ae('0x1')]},'host':{'type':Sequelize[_0xf9ae('0x1')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize['ENUM'](_0xf9ae('0x1b'),'no',_0xf9ae('0x18'),'update',_0xf9ae('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xf9ae('0x1')]},'otherFields':{'type':Sequelize[_0xf9ae('0x1')]},'active':{'type':Sequelize[_0xf9ae('0x33')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 5ec25f4..c2cde89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81bd=['/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','update','server/files/templates/trunk.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','UserProfileResource','name','index','Trunk','rawAttributes','fieldName','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','clone','find','get','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/registry.ejs','utf8','writeFileSync'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x81bd,0x7c));var _0xd81b=function(_0x126a46,_0x2fcfcd){_0x126a46=_0x126a46-0x0;var _0xbe5786=_0x81bd[_0x126a46];return _0xbe5786;};'use strict';var emlformat=require(_0xd81b('0x0'));var rimraf=require(_0xd81b('0x1'));var zipdir=require(_0xd81b('0x2'));var jsonpatch=require(_0xd81b('0x3'));var rp=require(_0xd81b('0x4'));var moment=require(_0xd81b('0x5'));var BPromise=require(_0xd81b('0x6'));var Mustache=require('mustache');var util=require(_0xd81b('0x7'));var path=require(_0xd81b('0x8'));var sox=require(_0xd81b('0x9'));var csv=require('to-csv');var ejs=require(_0xd81b('0xa'));var fs=require('fs');var fs_extra=require(_0xd81b('0xb'));var _=require(_0xd81b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd81b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd81b('0xe'));var querystring=require(_0xd81b('0xf'));var Papa=require(_0xd81b('0x10'));var Redis=require(_0xd81b('0x11'));var authService=require(_0xd81b('0x12'));var qs=require(_0xd81b('0x13'));var as=require(_0xd81b('0x14'));var hardwareService=require(_0xd81b('0x15'));var logger=require(_0xd81b('0x16'))(_0xd81b('0x17'));var utils=require(_0xd81b('0x18'));var config=require(_0xd81b('0x19'));var licenseUtil=require(_0xd81b('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require(_0xd81b('0x1b'));var client=jayson['client'][_0xd81b('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xe75568,_0x5f0b6b,_0x35a053,_0x47dd04){return new BPromise(function(_0x13dd00,_0x41bf7a){var _0x6c6041=_0x47dd04||client;return _0x6c6041[_0xd81b('0x1d')](_0xe75568,_0x35a053)[_0xd81b('0x1e')](function(_0x552215){logger[_0xd81b('0x1f')](_0xd81b('0x20'),_0x5f0b6b,'request\x20sent');logger[_0xd81b('0x21')](_0xd81b('0x22'),_0x5f0b6b,_0xd81b('0x23'),JSON[_0xd81b('0x24')](_0x552215));if(_0x552215[_0xd81b('0x25')]){if(_0x552215[_0xd81b('0x25')][_0xd81b('0x26')]===0x1f4){logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0x552215[_0xd81b('0x25')][_0xd81b('0x27')]);return _0x41bf7a(_0x552215[_0xd81b('0x25')][_0xd81b('0x27')]);}logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0x552215[_0xd81b('0x25')]['message']);return _0x13dd00(_0x552215['error'][_0xd81b('0x27')]);}else{logger[_0xd81b('0x1f')](_0xd81b('0x20'),_0x5f0b6b,'request\x20sent');_0x13dd00(_0x552215[_0xd81b('0x28')][_0xd81b('0x27')]);}})['catch'](function(_0xcd6474){logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0xcd6474);_0x41bf7a(_0xcd6474);});});}function respondWithStatusCode(_0x1ad65c,_0x279176){_0x279176=_0x279176||0xcc;return function(_0xcb4f91){if(_0xcb4f91){return _0x1ad65c[_0xd81b('0x29')](_0x279176);}return _0x1ad65c[_0xd81b('0x2a')](_0x279176)[_0xd81b('0x2b')]();};}function respondWithResult(_0x212c4e,_0x2ccedf){_0x2ccedf=_0x2ccedf||0xc8;return function(_0x1bf351){if(_0x1bf351){return _0x212c4e['status'](_0x2ccedf)[_0xd81b('0x2c')](_0x1bf351);}};}function respondWithFilteredResult(_0x99dbc9,_0xe3637a){return function(_0x31b9fd){if(_0x31b9fd){var _0x3266c2=typeof _0xe3637a[_0xd81b('0x2d')]===_0xd81b('0x2e')&&typeof _0xe3637a[_0xd81b('0x2f')]===_0xd81b('0x2e');var _0x483a3d=_0x31b9fd[_0xd81b('0x30')];var _0x4e2eff=_0x3266c2?0x0:_0xe3637a['offset'];var _0xb9ff9f=_0x3266c2?_0x31b9fd[_0xd81b('0x30')]:_0xe3637a['offset']+_0xe3637a['limit'];var _0x4093c8;if(_0xb9ff9f>=_0x483a3d){_0xb9ff9f=_0x483a3d;_0x4093c8=0xc8;}else{_0x4093c8=0xce;}_0x99dbc9[_0xd81b('0x2a')](_0x4093c8);return _0x99dbc9[_0xd81b('0x31')](_0xd81b('0x32'),_0x4e2eff+'-'+_0xb9ff9f+'/'+_0x483a3d)[_0xd81b('0x2c')](_0x31b9fd);}return null;};}function patchUpdates(_0x4654ba){return function(_0x5527ed){try{jsonpatch[_0xd81b('0x33')](_0x5527ed,_0x4654ba,!![]);}catch(_0x26f629){return BPromise['reject'](_0x26f629);}return _0x5527ed['save']();};}function saveUpdates(_0x165892,_0x1966b1){return function(_0x50472a){if(_0x50472a){return _0x50472a['update'](_0x165892)['then'](function(_0x322991){return _0x322991;});}return null;};}function removeEntity(_0x3ead68,_0x1d2f46){return function(_0x1c4cf7){if(_0x1c4cf7){return _0x1c4cf7[_0xd81b('0x34')]()[_0xd81b('0x1e')](function(){var _0x29aabf=_0x1c4cf7['get']({'plain':!![]});var _0x28782f='Trunks';return db[_0xd81b('0x35')][_0xd81b('0x34')]({'where':{'type':_0x28782f,'resourceId':_0x29aabf['id']}})[_0xd81b('0x1e')](function(){return _0x1c4cf7;});})[_0xd81b('0x1e')](function(){_0x3ead68[_0xd81b('0x2a')](0xcc)[_0xd81b('0x2b')]();});}};}function handleEntityNotFound(_0x1c20d3,_0x2d23b9){return function(_0xf9d1a5){if(!_0xf9d1a5){_0x1c20d3[_0xd81b('0x29')](0x194);}return _0xf9d1a5;};}function handleError(_0x1be4e2,_0x3c8371){_0x3c8371=_0x3c8371||0x1f4;return function(_0x346038){logger['error'](_0x346038['stack']);if(_0x346038[_0xd81b('0x36')]){delete _0x346038[_0xd81b('0x36')];}_0x1be4e2[_0xd81b('0x2a')](_0x3c8371)['send'](_0x346038);};}exports[_0xd81b('0x37')]=function(_0x37ba34,_0x5a236a){var _0x46f058={},_0xaa9e97={},_0x512e39={'count':0x0,'rows':[]};var _0xed5272=_['map'](db[_0xd81b('0x38')][_0xd81b('0x39')],function(_0x203365){return{'name':_0x203365[_0xd81b('0x3a')],'type':_0x203365['type'][_0xd81b('0x3b')]};});_0xaa9e97[_0xd81b('0x3c')]=_[_0xd81b('0x3d')](_0xed5272,_0xd81b('0x36'));_0xaa9e97[_0xd81b('0x3e')]=_[_0xd81b('0x3f')](_0x37ba34[_0xd81b('0x3e')]);_0xaa9e97['filters']=_[_0xd81b('0x40')](_0xaa9e97[_0xd81b('0x3c')],_0xaa9e97[_0xd81b('0x3e')]);_0x46f058['attributes']=_[_0xd81b('0x40')](_0xaa9e97[_0xd81b('0x3c')],qs[_0xd81b('0x41')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x41')]));_0x46f058['attributes']=_0x46f058[_0xd81b('0x42')][_0xd81b('0x43')]?_0x46f058[_0xd81b('0x42')]:_0xaa9e97[_0xd81b('0x3c')];if(!_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x44')](_0xd81b('0x45'))){_0x46f058[_0xd81b('0x2f')]=qs[_0xd81b('0x2f')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x2f')]);_0x46f058['offset']=qs[_0xd81b('0x2d')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x2d')]);}_0x46f058[_0xd81b('0x46')]=qs[_0xd81b('0x47')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x47')]);_0x46f058[_0xd81b('0x48')]=qs['filters'](_['pick'](_0x37ba34[_0xd81b('0x3e')],_0xaa9e97[_0xd81b('0x49')]),_0xed5272);if(_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4a')]){_0x46f058[_0xd81b('0x48')]=_[_0xd81b('0x4b')](_0x46f058[_0xd81b('0x48')],{'$or':_[_0xd81b('0x3d')](_0xed5272,function(_0x2fa588){if(_0x2fa588[_0xd81b('0x4c')]!==_0xd81b('0x4d')){var _0x38e436={};_0x38e436[_0x2fa588['name']]={'$like':'%'+_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4a')]+'%'};return _0x38e436;}})});}_0x46f058=_[_0xd81b('0x4b')]({},_0x46f058,_0x37ba34[_0xd81b('0x4e')]);var _0x105a48={'where':_0x46f058[_0xd81b('0x48')]};return db[_0xd81b('0x38')][_0xd81b('0x30')](_0x105a48)[_0xd81b('0x1e')](function(_0x53ea36){_0x512e39[_0xd81b('0x30')]=_0x53ea36;if(_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x46f058[_0xd81b('0x50')]=[{'all':!![]}];}return db['Trunk'][_0xd81b('0x51')](_0x46f058);})[_0xd81b('0x1e')](function(_0x15030b){_0x512e39[_0xd81b('0x52')]=_0x15030b;return _0x512e39;})[_0xd81b('0x1e')](respondWithFilteredResult(_0x5a236a,_0x46f058))[_0xd81b('0x53')](handleError(_0x5a236a,null));};exports[_0xd81b('0x54')]=function(_0x43d7ce,_0x133a76){var _0x49cba6={'raw':![],'where':{'id':_0x43d7ce[_0xd81b('0x55')]['id']}},_0x534d10={};_0x534d10[_0xd81b('0x3c')]=_[_0xd81b('0x3f')](db[_0xd81b('0x38')][_0xd81b('0x39')]);_0x534d10[_0xd81b('0x3e')]=_[_0xd81b('0x3f')](_0x43d7ce[_0xd81b('0x3e')]);_0x534d10['filters']=_[_0xd81b('0x40')](_0x534d10[_0xd81b('0x3c')],_0x534d10[_0xd81b('0x3e')]);_0x49cba6[_0xd81b('0x42')]=_[_0xd81b('0x40')](_0x534d10['model'],qs[_0xd81b('0x41')](_0x43d7ce[_0xd81b('0x3e')]['fields']));_0x49cba6[_0xd81b('0x42')]=_0x49cba6[_0xd81b('0x42')][_0xd81b('0x43')]?_0x49cba6[_0xd81b('0x42')]:_0x534d10[_0xd81b('0x3c')];if(_0x43d7ce[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x49cba6[_0xd81b('0x50')]=[{'all':!![]}];}_0x49cba6=_[_0xd81b('0x4b')]({},_0x49cba6,_0x43d7ce[_0xd81b('0x4e')]);return db[_0xd81b('0x38')]['find'](_0x49cba6)[_0xd81b('0x1e')](handleEntityNotFound(_0x133a76,null))['then'](respondWithResult(_0x133a76,null))[_0xd81b('0x53')](handleError(_0x133a76,null));};exports[_0xd81b('0x56')]=function(_0x390db6,_0x3c2a9f){var _0x34d2a2={'where':{'id':_0x390db6['params']['id']}},_0x1e9f73={};_0x1e9f73[_0xd81b('0x3c')]=_[_0xd81b('0x3f')](db['Trunk']['rawAttributes']);_0x34d2a2[_0xd81b('0x42')]=_['intersection'](_0x1e9f73[_0xd81b('0x3c')],qs['fields'](_0x390db6[_0xd81b('0x3e')][_0xd81b('0x41')]));_0x34d2a2[_0xd81b('0x42')]=_0x34d2a2['attributes'][_0xd81b('0x43')]?_0x34d2a2[_0xd81b('0x42')]:_0x1e9f73['model'];if(_0x390db6[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x34d2a2['include']=[{'all':!![]}];}_0x34d2a2=_[_0xd81b('0x4b')]({},_0x34d2a2,_0x390db6['options']);return db[_0xd81b('0x38')][_0xd81b('0x57')](_0x34d2a2)[_0xd81b('0x1e')](handleEntityNotFound(_0x3c2a9f,null))[_0xd81b('0x1e')](function(_0x4add79){if(_0x4add79){var _0x32eab4=_0x4add79[_0xd81b('0x58')]({'plain':!![]});_0x32eab4=qs[_0xd81b('0x59')](_0x32eab4,['id',_0xd81b('0x5a'),_0xd81b('0x5b')]);_0x390db6['body']=_[_0xd81b('0x59')](_0x390db6[_0xd81b('0x5c')],['id',_0xd81b('0x5a'),_0xd81b('0x5b')]);return db[_0xd81b('0x38')][_0xd81b('0x5d')](_[_0xd81b('0x4b')](_0x32eab4,_0x390db6['body']),{'include':_0x390db6['query']['includeAll']?[{'all':!![]}]:undefined})[_0xd81b('0x1e')](function(_0x12b0bf){var _0x37507e=_0x390db6[_0xd81b('0x5e')][_0xd81b('0x58')]({'plain':!![]});if(!_0x37507e)throw new Error(_0xd81b('0x5f'));if(_0x37507e[_0xd81b('0x60')]==='user'){var _0x3fcd8c=_0x12b0bf[_0xd81b('0x58')]({'plain':!![]});var _0x35c9cf=_0xd81b('0x61');return db[_0xd81b('0x62')][_0xd81b('0x57')]({'where':{'name':_0x35c9cf,'userProfileId':_0x37507e[_0xd81b('0x63')]},'raw':!![]})['then'](function(_0x14b187){if(_0x14b187&&_0x14b187[_0xd81b('0x64')]===0x0){return db[_0xd81b('0x35')][_0xd81b('0x5d')]({'name':_0x3fcd8c[_0xd81b('0x36')],'resourceId':_0x3fcd8c['id'],'type':_0x14b187[_0xd81b('0x36')],'sectionId':_0x14b187['id']},{})[_0xd81b('0x1e')](function(){return _0x12b0bf;});}else{return _0x12b0bf;}})[_0xd81b('0x53')](function(_0x8fa8cd){logger[_0xd81b('0x25')](_0xd81b('0x65'),_0x8fa8cd);throw _0x8fa8cd;});}return _0x12b0bf;});}})[_0xd81b('0x1e')](respondWithResult(_0x3c2a9f,0xc9))['catch'](handleError(_0x3c2a9f,null));};exports[_0xd81b('0x5d')]=function(_0x5358a6,_0x2e7141,_0x6fa974){var _0x414f40;return db[_0xd81b('0x38')][_0xd81b('0x5d')](_0x5358a6[_0xd81b('0x5c')],{'raw':!![]})[_0xd81b('0x1e')](function(_0x18f2ac){_0x414f40=_0x18f2ac;return db[_0xd81b('0x38')][_0xd81b('0x51')]({'raw':!![]});})['then'](function(_0xfa2a13){var _0x344c32=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],'server/files/templates/trunk.ejs'),'utf8');var _0x3274d2=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],_0xd81b('0x69')),_0xd81b('0x6a'));var _0xaee7e3=ejs['render'](_0x344c32,{'trunks':_0xfa2a13||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6c'),_0xaee7e3);if(_0x414f40[_0xd81b('0x6d')]){var _0x1c6ec8=ejs[_0xd81b('0x6e')](_0x3274d2,{'trunks':_0xfa2a13||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x1c6ec8);}})[_0xd81b('0x1e')](function(){return respondWithRpcPromise(_0xd81b('0x70'),'create',{'module':_0xd81b('0x71')});})[_0xd81b('0x1e')](function(){var _0x3858eb=_0x5358a6[_0xd81b('0x5e')][_0xd81b('0x58')]({'plain':!![]});if(!_0x3858eb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3858eb[_0xd81b('0x60')]===_0xd81b('0x5e')){var _0x4cc440=_0x414f40[_0xd81b('0x58')]({'plain':!![]});return db[_0xd81b('0x62')]['find']({'where':{'name':_0xd81b('0x61'),'userProfileId':_0x3858eb[_0xd81b('0x63')]},'raw':!![]})[_0xd81b('0x1e')](function(_0x483026){if(_0x483026&&_0x483026[_0xd81b('0x64')]===0x0){return db[_0xd81b('0x35')][_0xd81b('0x5d')]({'name':_0x4cc440['name'],'resourceId':_0x4cc440['id'],'type':_0x483026['name'],'sectionId':_0x483026['id']},{})[_0xd81b('0x1e')](function(){return _0x414f40;});}else{return _0x414f40;}})[_0xd81b('0x53')](function(_0x36c694){logger['error'](_0xd81b('0x65'),_0x36c694);throw _0x36c694;});}return _0x414f40;})[_0xd81b('0x1e')](respondWithResult(_0x2e7141,0xc9))[_0xd81b('0x53')](handleError(_0x2e7141,null));};exports[_0xd81b('0x72')]=function(_0x524196,_0x4f69a7,_0x42ae01){var _0x256696;return db[_0xd81b('0x38')][_0xd81b('0x57')]({'where':{'id':_0x524196['params']['id']}})[_0xd81b('0x1e')](handleEntityNotFound(_0x4f69a7,null))[_0xd81b('0x1e')](saveUpdates(_0x524196['body'],null))[_0xd81b('0x1e')](function(_0x4e5bf4){if(_0x4e5bf4){_0x256696=_0x4e5bf4;return db[_0xd81b('0x38')][_0xd81b('0x51')]({'raw':!![]});}})['then'](function(_0x1be0e6){if(_0x1be0e6){var _0x9a9634=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],'server/files/templates/trunk.ejs'),_0xd81b('0x6a'));var _0xc0e137=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],_0xd81b('0x69')),'utf8');var _0x5c8ea0=ejs[_0xd81b('0x6e')](_0x9a9634,{'trunks':_0x1be0e6||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6c'),_0x5c8ea0);var _0x15aed5=ejs['render'](_0xc0e137,{'trunks':_0x1be0e6||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x15aed5);return respondWithRpcPromise(_0xd81b('0x70'),_0xd81b('0x72'),{'module':_0xd81b('0x71')});}return null;})['then'](function(_0x3744bf){if(_0x3744bf){return _0x256696;}})[_0xd81b('0x1e')](respondWithResult(_0x4f69a7,null))[_0xd81b('0x53')](handleError(_0x4f69a7,null));};exports[_0xd81b('0x34')]=function(_0x1d596c,_0x288124,_0x402eb9){var _0x57179a;return db[_0xd81b('0x38')][_0xd81b('0x57')]({'where':{'id':_0x1d596c[_0xd81b('0x55')]['id']}})[_0xd81b('0x1e')](handleEntityNotFound(_0x288124,null))[_0xd81b('0x1e')](removeEntity(_0x288124,null))[_0xd81b('0x1e')](function(){return db['Trunk'][_0xd81b('0x51')]({'raw':!![]});})['then'](function(_0x11e590){var _0x9e6e05=fs[_0xd81b('0x66')](path['join'](config[_0xd81b('0x68')],_0xd81b('0x73')),_0xd81b('0x6a'));var _0x5060dc=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config['root'],_0xd81b('0x69')),'utf8');var _0x5f5514=ejs[_0xd81b('0x6e')](_0x9e6e05,{'trunks':_0x11e590});var _0x428317=ejs[_0xd81b('0x6e')](_0x5060dc,{'trunks':_0x11e590});fs['writeFileSync'](_0xd81b('0x6c'),_0x5f5514);fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x428317);return respondWithRpcPromise(_0xd81b('0x70'),_0xd81b('0x34'),{'module':_0xd81b('0x71')});})['catch'](handleError(_0x288124,null));};
\ No newline at end of file
+var _0x00bb=['includeAll','findAll','rows','params','find','clone','rawAttributes','include','omit','createdAt','body','updatedAt','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','chan_sip.so','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','jayson/promise','client','http','request','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','Trunk,\x20%s,\x20%s','result','catch','sendStatus','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Trunks','UserProfileResource','status','stack','name','index','map','Trunk','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options'];(function(_0x330bcd,_0x15b506){var _0x4501a0=function(_0x42a7dc){while(--_0x42a7dc){_0x330bcd['push'](_0x330bcd['shift']());}};_0x4501a0(++_0x15b506);}(_0x00bb,0x1d8));var _0xb00b=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x00bb[_0x134c2e];return _0x2825db;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];var jayson=require(_0xb00b('0x15'));var client=jayson[_0xb00b('0x16')][_0xb00b('0x17')]({'port':0x232a});function respondWithRpcPromise(_0xef5d52,_0x1f1c1d,_0x4ada81,_0x218de2){return new BPromise(function(_0xb0d42e,_0x482fe6){var _0x88d95e=_0x218de2||client;return _0x88d95e[_0xb00b('0x18')](_0xef5d52,_0x4ada81)['then'](function(_0x5da36b){logger[_0xb00b('0x19')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,'request\x20sent');logger[_0xb00b('0x1a')](_0xb00b('0x1b'),_0x1f1c1d,_0xb00b('0x1c'),JSON[_0xb00b('0x1d')](_0x5da36b));if(_0x5da36b['error']){if(_0x5da36b[_0xb00b('0x1e')]['code']===0x1f4){logger[_0xb00b('0x1e')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0x482fe6(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0xb0d42e(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}else{logger[_0xb00b('0x19')](_0xb00b('0x20'),_0x1f1c1d,'request\x20sent');_0xb0d42e(_0x5da36b[_0xb00b('0x21')]['message']);}})[_0xb00b('0x22')](function(_0x121ec7){logger['error'](_0xb00b('0x20'),_0x1f1c1d,_0x121ec7);_0x482fe6(_0x121ec7);});});}function respondWithStatusCode(_0x2896d1,_0x520444){_0x520444=_0x520444||0xcc;return function(_0x3ab3cc){if(_0x3ab3cc){return _0x2896d1[_0xb00b('0x23')](_0x520444);}return _0x2896d1['status'](_0x520444)[_0xb00b('0x24')]();};}function respondWithResult(_0x243fdb,_0x3c9500){_0x3c9500=_0x3c9500||0xc8;return function(_0x8caadf){if(_0x8caadf){return _0x243fdb['status'](_0x3c9500)['json'](_0x8caadf);}};}function respondWithFilteredResult(_0x3785e9,_0x490380){return function(_0x550587){if(_0x550587){var _0x4a635e=typeof _0x490380[_0xb00b('0x25')]===_0xb00b('0x26')&&typeof _0x490380[_0xb00b('0x27')]===_0xb00b('0x26');var _0x1f14fa=_0x550587[_0xb00b('0x28')];var _0x15d3b9=_0x4a635e?0x0:_0x490380['offset'];var _0x22c22d=_0x4a635e?_0x550587['count']:_0x490380[_0xb00b('0x25')]+_0x490380[_0xb00b('0x27')];var _0x5424ca;if(_0x22c22d>=_0x1f14fa){_0x22c22d=_0x1f14fa;_0x5424ca=0xc8;}else{_0x5424ca=0xce;}_0x3785e9['status'](_0x5424ca);return _0x3785e9[_0xb00b('0x29')](_0xb00b('0x2a'),_0x15d3b9+'-'+_0x22c22d+'/'+_0x1f14fa)[_0xb00b('0x2b')](_0x550587);}return null;};}function patchUpdates(_0x183233){return function(_0x303625){try{jsonpatch[_0xb00b('0x2c')](_0x303625,_0x183233,!![]);}catch(_0x2e160a){return BPromise[_0xb00b('0x2d')](_0x2e160a);}return _0x303625[_0xb00b('0x2e')]();};}function saveUpdates(_0x54e247,_0x2b5f41){return function(_0x44918d){if(_0x44918d){return _0x44918d['update'](_0x54e247)[_0xb00b('0x2f')](function(_0x2f3b37){return _0x2f3b37;});}return null;};}function removeEntity(_0x5a5e5a,_0x456241){return function(_0x4d2ee5){if(_0x4d2ee5){return _0x4d2ee5[_0xb00b('0x30')]()[_0xb00b('0x2f')](function(){var _0x322879=_0x4d2ee5[_0xb00b('0x31')]({'plain':!![]});var _0x338864=_0xb00b('0x32');return db[_0xb00b('0x33')]['destroy']({'where':{'type':_0x338864,'resourceId':_0x322879['id']}})['then'](function(){return _0x4d2ee5;});})['then'](function(){_0x5a5e5a[_0xb00b('0x34')](0xcc)[_0xb00b('0x24')]();});}};}function handleEntityNotFound(_0x45dcda,_0x2589cb){return function(_0x5cfa60){if(!_0x5cfa60){_0x45dcda[_0xb00b('0x23')](0x194);}return _0x5cfa60;};}function handleError(_0x266f8e,_0x341f46){_0x341f46=_0x341f46||0x1f4;return function(_0x1c7a9f){logger[_0xb00b('0x1e')](_0x1c7a9f[_0xb00b('0x35')]);if(_0x1c7a9f[_0xb00b('0x36')]){delete _0x1c7a9f[_0xb00b('0x36')];}_0x266f8e['status'](_0x341f46)['send'](_0x1c7a9f);};}exports[_0xb00b('0x37')]=function(_0x56022e,_0x1c8258){var _0x1c5400={},_0x29579b={},_0x45ca74={'count':0x0,'rows':[]};var _0x37c017=_[_0xb00b('0x38')](db[_0xb00b('0x39')]['rawAttributes'],function(_0x35f1ca){return{'name':_0x35f1ca[_0xb00b('0x3a')],'type':_0x35f1ca[_0xb00b('0x3b')][_0xb00b('0x3c')]};});_0x29579b[_0xb00b('0x3d')]=_[_0xb00b('0x38')](_0x37c017,'name');_0x29579b[_0xb00b('0x3e')]=_[_0xb00b('0x3f')](_0x56022e['query']);_0x29579b[_0xb00b('0x40')]=_[_0xb00b('0x41')](_0x29579b[_0xb00b('0x3d')],_0x29579b[_0xb00b('0x3e')]);_0x1c5400[_0xb00b('0x42')]=_['intersection'](_0x29579b[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x1c5400['attributes']=_0x1c5400['attributes'][_0xb00b('0x44')]?_0x1c5400[_0xb00b('0x42')]:_0x29579b[_0xb00b('0x3d')];if(!_0x56022e[_0xb00b('0x3e')][_0xb00b('0x45')](_0xb00b('0x46'))){_0x1c5400[_0xb00b('0x27')]=qs['limit'](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x27')]);_0x1c5400[_0xb00b('0x25')]=qs[_0xb00b('0x25')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x25')]);}_0x1c5400[_0xb00b('0x47')]=qs[_0xb00b('0x48')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x48')]);_0x1c5400[_0xb00b('0x49')]=qs[_0xb00b('0x40')](_['pick'](_0x56022e[_0xb00b('0x3e')],_0x29579b[_0xb00b('0x40')]),_0x37c017);if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4a')]){_0x1c5400[_0xb00b('0x49')]=_[_0xb00b('0x4b')](_0x1c5400[_0xb00b('0x49')],{'$or':_[_0xb00b('0x38')](_0x37c017,function(_0x10ba60){if(_0x10ba60[_0xb00b('0x3b')]!==_0xb00b('0x4c')){var _0x3b3031={};_0x3b3031[_0x10ba60['name']]={'$like':'%'+_0x56022e['query']['filter']+'%'};return _0x3b3031;}})});}_0x1c5400=_[_0xb00b('0x4b')]({},_0x1c5400,_0x56022e[_0xb00b('0x4d')]);var _0x481154={'where':_0x1c5400[_0xb00b('0x49')]};return db[_0xb00b('0x39')][_0xb00b('0x28')](_0x481154)[_0xb00b('0x2f')](function(_0x4b62b3){_0x45ca74['count']=_0x4b62b3;if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x1c5400['include']=[{'all':!![]}];}return db['Trunk'][_0xb00b('0x4f')](_0x1c5400);})[_0xb00b('0x2f')](function(_0x4e0be4){_0x45ca74[_0xb00b('0x50')]=_0x4e0be4;return _0x45ca74;})['then'](respondWithFilteredResult(_0x1c8258,_0x1c5400))['catch'](handleError(_0x1c8258,null));};exports['show']=function(_0x465d90,_0x481515){var _0x1f7b86={'raw':![],'where':{'id':_0x465d90[_0xb00b('0x51')]['id']}},_0x3178aa={};_0x3178aa[_0xb00b('0x3d')]=_[_0xb00b('0x3f')](db[_0xb00b('0x39')]['rawAttributes']);_0x3178aa['query']=_[_0xb00b('0x3f')](_0x465d90[_0xb00b('0x3e')]);_0x3178aa['filters']=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],_0x3178aa['query']);_0x1f7b86[_0xb00b('0x42')]=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],qs['fields'](_0x465d90['query'][_0xb00b('0x43')]));_0x1f7b86[_0xb00b('0x42')]=_0x1f7b86[_0xb00b('0x42')][_0xb00b('0x44')]?_0x1f7b86['attributes']:_0x3178aa[_0xb00b('0x3d')];if(_0x465d90[_0xb00b('0x3e')]['includeAll']){_0x1f7b86['include']=[{'all':!![]}];}_0x1f7b86=_[_0xb00b('0x4b')]({},_0x1f7b86,_0x465d90['options']);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x1f7b86)[_0xb00b('0x2f')](handleEntityNotFound(_0x481515,null))[_0xb00b('0x2f')](respondWithResult(_0x481515,null))[_0xb00b('0x22')](handleError(_0x481515,null));};exports[_0xb00b('0x53')]=function(_0x5a3b85,_0x5d52a5){var _0x51c9e3={'where':{'id':_0x5a3b85[_0xb00b('0x51')]['id']}},_0x37d4d2={};_0x37d4d2[_0xb00b('0x3d')]=_['keys'](db[_0xb00b('0x39')][_0xb00b('0x54')]);_0x51c9e3[_0xb00b('0x42')]=_['intersection'](_0x37d4d2[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x51c9e3[_0xb00b('0x42')]=_0x51c9e3[_0xb00b('0x42')][_0xb00b('0x44')]?_0x51c9e3[_0xb00b('0x42')]:_0x37d4d2['model'];if(_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x51c9e3[_0xb00b('0x55')]=[{'all':!![]}];}_0x51c9e3=_['merge']({},_0x51c9e3,_0x5a3b85[_0xb00b('0x4d')]);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x51c9e3)[_0xb00b('0x2f')](handleEntityNotFound(_0x5d52a5,null))[_0xb00b('0x2f')](function(_0x4bfe0b){if(_0x4bfe0b){var _0xfd4ecc=_0x4bfe0b[_0xb00b('0x31')]({'plain':!![]});_0xfd4ecc=qs[_0xb00b('0x56')](_0xfd4ecc,['id',_0xb00b('0x57'),'updatedAt']);_0x5a3b85[_0xb00b('0x58')]=_[_0xb00b('0x56')](_0x5a3b85[_0xb00b('0x58')],['id',_0xb00b('0x57'),_0xb00b('0x59')]);return db[_0xb00b('0x39')][_0xb00b('0x5a')](_['merge'](_0xfd4ecc,_0x5a3b85[_0xb00b('0x58')]),{'include':_0x5a3b85['query'][_0xb00b('0x4e')]?[{'all':!![]}]:undefined})['then'](function(_0x3b3272){var _0x530d4a=_0x5a3b85[_0xb00b('0x5b')]['get']({'plain':!![]});if(!_0x530d4a)throw new Error(_0xb00b('0x5c'));if(_0x530d4a[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x4d1cec=_0x3b3272['get']({'plain':!![]});var _0x4f7a59=_0xb00b('0x32');return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0x4f7a59,'userProfileId':_0x530d4a['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37ae88){if(_0x37ae88&&_0x37ae88[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x4d1cec['name'],'resourceId':_0x4d1cec['id'],'type':_0x37ae88[_0xb00b('0x36')],'sectionId':_0x37ae88['id']},{})[_0xb00b('0x2f')](function(){return _0x3b3272;});}else{return _0x3b3272;}})['catch'](function(_0xe1316d){logger[_0xb00b('0x1e')](_0xb00b('0x60'),_0xe1316d);throw _0xe1316d;});}return _0x3b3272;});}})['then'](respondWithResult(_0x5d52a5,0xc9))['catch'](handleError(_0x5d52a5,null));};exports[_0xb00b('0x5a')]=function(_0x188da7,_0x23762e,_0x49f0a2){var _0x5aac5f;return db['Trunk']['create'](_0x188da7[_0xb00b('0x58')],{'raw':!![]})['then'](function(_0x2434a0){_0x5aac5f=_0x2434a0;return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x1e7f3a){var _0x2d21ec=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0x3d4482=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config[_0xb00b('0x65')],_0xb00b('0x66')),'utf8');var _0x27b3ae=ejs[_0xb00b('0x67')](_0x2d21ec,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x27b3ae);if(_0x5aac5f[_0xb00b('0x6a')]){var _0x432b68=ejs[_0xb00b('0x67')](_0x3d4482,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x432b68);}})[_0xb00b('0x2f')](function(){return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x5a'),{'module':_0xb00b('0x6c')});})[_0xb00b('0x2f')](function(){var _0xfb2b68=_0x188da7[_0xb00b('0x5b')][_0xb00b('0x31')]({'plain':!![]});if(!_0xfb2b68)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfb2b68[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x7803a0=_0x5aac5f[_0xb00b('0x31')]({'plain':!![]});return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0xb00b('0x32'),'userProfileId':_0xfb2b68['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37a4c0){if(_0x37a4c0&&_0x37a4c0[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x7803a0[_0xb00b('0x36')],'resourceId':_0x7803a0['id'],'type':_0x37a4c0['name'],'sectionId':_0x37a4c0['id']},{})[_0xb00b('0x2f')](function(){return _0x5aac5f;});}else{return _0x5aac5f;}})['catch'](function(_0x135cbf){logger['error'](_0xb00b('0x60'),_0x135cbf);throw _0x135cbf;});}return _0x5aac5f;})[_0xb00b('0x2f')](respondWithResult(_0x23762e,0xc9))[_0xb00b('0x22')](handleError(_0x23762e,null));};exports['update']=function(_0x5287cc,_0x9ad1c6,_0x3c4850){var _0x33a483;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0x5287cc[_0xb00b('0x51')]['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x9ad1c6,null))[_0xb00b('0x2f')](saveUpdates(_0x5287cc[_0xb00b('0x58')],null))[_0xb00b('0x2f')](function(_0x257430){if(_0x257430){_0x33a483=_0x257430;return db[_0xb00b('0x39')][_0xb00b('0x4f')]({'raw':!![]});}})[_0xb00b('0x2f')](function(_0x4eb17d){if(_0x4eb17d){var _0x59503c=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],'server/files/templates/trunk.ejs'),_0xb00b('0x64'));var _0x391e98=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],_0xb00b('0x66')),_0xb00b('0x64'));var _0x45c9cd=ejs[_0xb00b('0x67')](_0x59503c,{'trunks':_0x4eb17d||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x45c9cd);var _0x4a9125=ejs[_0xb00b('0x67')](_0x391e98,{'trunks':_0x4eb17d||[]});fs['writeFileSync'](_0xb00b('0x6d'),_0x4a9125);return respondWithRpcPromise(_0xb00b('0x6b'),'update',{'module':_0xb00b('0x6c')});}return null;})[_0xb00b('0x2f')](function(_0xe80a21){if(_0xe80a21){return _0x33a483;}})[_0xb00b('0x2f')](respondWithResult(_0x9ad1c6,null))[_0xb00b('0x22')](handleError(_0x9ad1c6,null));};exports[_0xb00b('0x30')]=function(_0xc41c1f,_0x2423b2,_0x36ba5c){var _0x383d16;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0xc41c1f['params']['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x2423b2,null))[_0xb00b('0x2f')](removeEntity(_0x2423b2,null))[_0xb00b('0x2f')](function(){return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x17503d){var _0x32508b=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0xa4fe1e=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],'server/files/templates/registry.ejs'),_0xb00b('0x64'));var _0x202d5f=ejs[_0xb00b('0x67')](_0x32508b,{'trunks':_0x17503d});var _0x165442=ejs[_0xb00b('0x67')](_0xa4fe1e,{'trunks':_0x17503d});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x202d5f);fs[_0xb00b('0x68')](_0xb00b('0x6d'),_0x165442);return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x30'),{'module':'chan_sip.so'});})[_0xb00b('0x22')](handleError(_0x2423b2,null));};
\ No newline at end of file
index 1ea71fb..0b6d76d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0abb=['tools_trunks','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./trunk.attributes','exports','define','Trunk'];(function(_0x4e0cd5,_0x279c6f){var _0x2e3203=function(_0x1e8017){while(--_0x1e8017){_0x4e0cd5['push'](_0x4e0cd5['shift']());}};_0x2e3203(++_0x279c6f);}(_0x0abb,0xb7));var _0xb0ab=function(_0x1a4509,_0x1f29ba){_0x1a4509=_0x1a4509-0x0;var _0x58acbd=_0x0abb[_0x1a4509];return _0x58acbd;};'use strict';var _=require(_0xb0ab('0x0'));var util=require(_0xb0ab('0x1'));var logger=require(_0xb0ab('0x2'))(_0xb0ab('0x3'));var moment=require(_0xb0ab('0x4'));var BPromise=require(_0xb0ab('0x5'));var rp=require(_0xb0ab('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb0ab('0x7'));var attributes=require(_0xb0ab('0x8'));module[_0xb0ab('0x9')]=function(_0x2ea3fe,_0x594170){return _0x2ea3fe[_0xb0ab('0xa')](_0xb0ab('0xb'),attributes,{'tableName':_0xb0ab('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc493=['tools_trunks','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./trunk.attributes','exports','define','Trunk'];(function(_0x3a2a33,_0x29372a){var _0x10d6d2=function(_0x2c63b7){while(--_0x2c63b7){_0x3a2a33['push'](_0x3a2a33['shift']());}};_0x10d6d2(++_0x29372a);}(_0xc493,0x187));var _0x3c49=function(_0x488fd2,_0x2a2b42){_0x488fd2=_0x488fd2-0x0;var _0x4dc6d3=_0xc493[_0x488fd2];return _0x4dc6d3;};'use strict';var _=require('lodash');var util=require(_0x3c49('0x0'));var logger=require(_0x3c49('0x1'))(_0x3c49('0x2'));var moment=require(_0x3c49('0x3'));var BPromise=require(_0x3c49('0x4'));var rp=require(_0x3c49('0x5'));var fs=require('fs');var path=require(_0x3c49('0x6'));var rimraf=require(_0x3c49('0x7'));var config=require('../../config/environment');var attributes=require(_0x3c49('0x8'));module[_0x3c49('0x9')]=function(_0x3dc432,_0x35d1a1){return _0x3dc432[_0x3c49('0xa')](_0x3c49('0xb'),attributes,{'tableName':_0x3c49('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3311f0e..33700f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf04a=['request','then','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','catch','Trunk','findAll','options','where','attributes','limit','map','model','include','info','GetTrunk','find','raw','ShowTrunk','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x178856,_0x41f045){var _0x3c7fe7=function(_0x4d9ce4){while(--_0x4d9ce4){_0x178856['push'](_0x178856['shift']());}};_0x3c7fe7(++_0x41f045);}(_0xf04a,0xa9));var _0xaf04=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xf04a[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0xaf04('0x0'));var moment=require(_0xaf04('0x1'));var BPromise=require(_0xaf04('0x2'));var rs=require(_0xaf04('0x3'));var fs=require('fs');var Redis=require(_0xaf04('0x4'));var db=require(_0xaf04('0x5'))['db'];var utils=require(_0xaf04('0x6'));var logger=require(_0xaf04('0x7'))(_0xaf04('0x8'));var config=require('../../config/environment');var jayson=require(_0xaf04('0x9'));var client=jayson[_0xaf04('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32f9f0,_0x328dc1,_0x55b398){return new BPromise(function(_0xfbd7b2,_0x4506ba){return client[_0xaf04('0xb')](_0x32f9f0,_0x55b398)[_0xaf04('0xc')](function(_0x285396){logger['info']('Trunk,\x20%s,\x20%s',_0x328dc1,_0xaf04('0xd'));logger['debug'](_0xaf04('0xe'),_0x328dc1,_0xaf04('0xd'),JSON[_0xaf04('0xf')](_0x285396));if(_0x285396[_0xaf04('0x10')]){if(_0x285396[_0xaf04('0x10')][_0xaf04('0x11')]===0x1f4){logger[_0xaf04('0x10')]('Trunk,\x20%s,\x20%s',_0x328dc1,_0x285396[_0xaf04('0x10')]['message']);return _0x4506ba(_0x285396[_0xaf04('0x10')]['message']);}logger[_0xaf04('0x10')](_0xaf04('0x12'),_0x328dc1,_0x285396['error'][_0xaf04('0x13')]);return _0xfbd7b2(_0x285396[_0xaf04('0x10')][_0xaf04('0x13')]);}else{logger['info']('Trunk,\x20%s,\x20%s',_0x328dc1,'request\x20sent');_0xfbd7b2(_0x285396['result'][_0xaf04('0x13')]);}})[_0xaf04('0x14')](function(_0x5aedce){logger[_0xaf04('0x10')](_0xaf04('0x12'),_0x328dc1,_0x5aedce);_0x4506ba(_0x5aedce);});});}exports['GetTrunk']=function(_0x7973d2){var _0x776368=this;return new Promise(function(_0x29275a,_0x46597b){return db[_0xaf04('0x15')][_0xaf04('0x16')]({'raw':_0x7973d2[_0xaf04('0x17')]?_0x7973d2['options']['raw']===undefined?!![]:![]:!![],'where':_0x7973d2[_0xaf04('0x17')]?_0x7973d2[_0xaf04('0x17')][_0xaf04('0x18')]||null:null,'attributes':_0x7973d2[_0xaf04('0x17')]?_0x7973d2[_0xaf04('0x17')][_0xaf04('0x19')]||null:null,'limit':_0x7973d2[_0xaf04('0x17')]?_0x7973d2[_0xaf04('0x17')][_0xaf04('0x1a')]||null:null,'include':_0x7973d2[_0xaf04('0x17')]?_0x7973d2[_0xaf04('0x17')]['include']?_[_0xaf04('0x1b')](_0x7973d2[_0xaf04('0x17')]['include'],function(_0x5a4f28){return{'model':db[_0x5a4f28[_0xaf04('0x1c')]],'as':_0x5a4f28['as'],'attributes':_0x5a4f28[_0xaf04('0x19')],'include':_0x5a4f28['include']?_['map'](_0x5a4f28[_0xaf04('0x1d')],function(_0x55f263){return{'model':db[_0x55f263[_0xaf04('0x1c')]],'as':_0x55f263['as'],'attributes':_0x55f263[_0xaf04('0x19')],'include':_0x55f263['include']?_['map'](_0x55f263[_0xaf04('0x1d')],function(_0x391cfa){return{'model':db[_0x391cfa[_0xaf04('0x1c')]],'as':_0x391cfa['as'],'attributes':_0x391cfa[_0xaf04('0x19')]};}):[]};}):[]};}):[]:[]})[_0xaf04('0xc')](function(_0x4909e0){logger[_0xaf04('0x1e')](_0xaf04('0x1f'),_0x7973d2);logger['debug'](_0xaf04('0x1f'),_0x7973d2,JSON[_0xaf04('0xf')](_0x4909e0));_0x29275a(_0x4909e0);})[_0xaf04('0x14')](function(_0x3840e4){logger[_0xaf04('0x10')](_0xaf04('0x1f'),_0x3840e4[_0xaf04('0x13')],_0x7973d2);_0x46597b(_0x776368[_0xaf04('0x10')](0x1f4,_0x3840e4[_0xaf04('0x13')]));});});};exports['ShowTrunk']=function(_0x13265a){var _0x1bc7cb=this;return new Promise(function(_0x3e3415,_0xe6ba12){return db['Trunk'][_0xaf04('0x20')]({'raw':_0x13265a[_0xaf04('0x17')]?_0x13265a['options'][_0xaf04('0x21')]===undefined?!![]:![]:!![],'where':_0x13265a[_0xaf04('0x17')]?_0x13265a['options']['where']||null:null,'attributes':_0x13265a[_0xaf04('0x17')]?_0x13265a[_0xaf04('0x17')][_0xaf04('0x19')]||null:null,'include':_0x13265a[_0xaf04('0x17')]?_0x13265a['options'][_0xaf04('0x1d')]?_[_0xaf04('0x1b')](_0x13265a[_0xaf04('0x17')][_0xaf04('0x1d')],function(_0x5479a2){return{'model':db[_0x5479a2[_0xaf04('0x1c')]],'as':_0x5479a2['as'],'attributes':_0x5479a2[_0xaf04('0x19')],'include':_0x5479a2[_0xaf04('0x1d')]?_[_0xaf04('0x1b')](_0x5479a2[_0xaf04('0x1d')],function(_0x2668b8){return{'model':db[_0x2668b8['model']],'as':_0x2668b8['as'],'attributes':_0x2668b8[_0xaf04('0x19')],'include':_0x2668b8[_0xaf04('0x1d')]?_[_0xaf04('0x1b')](_0x2668b8[_0xaf04('0x1d')],function(_0x51298c){return{'model':db[_0x51298c[_0xaf04('0x1c')]],'as':_0x51298c['as'],'attributes':_0x51298c[_0xaf04('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50e39f){logger[_0xaf04('0x1e')](_0xaf04('0x22'),_0x13265a);logger[_0xaf04('0x23')](_0xaf04('0x22'),_0x13265a,JSON[_0xaf04('0xf')](_0x50e39f));_0x3e3415(_0x50e39f);})[_0xaf04('0x14')](function(_0x4e212a){logger['error'](_0xaf04('0x22'),_0x4e212a[_0xaf04('0x13')],_0x13265a);_0xe6ba12(_0x1bc7cb[_0xaf04('0x10')](0x1f4,_0x4e212a[_0xaf04('0x13')]));});});};
\ No newline at end of file
+var _0x37b7=['options','where','limit','include','map','model','attributes','GetTrunk','find','ShowTrunk','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','Trunk','raw'];(function(_0x45c1b7,_0x136e78){var _0x2ae433=function(_0x139954){while(--_0x139954){_0x45c1b7['push'](_0x45c1b7['shift']());}};_0x2ae433(++_0x136e78);}(_0x37b7,0x9a));var _0x737b=function(_0x1fcaf1,_0x21c3c2){_0x1fcaf1=_0x1fcaf1-0x0;var _0x55f464=_0x37b7[_0x1fcaf1];return _0x55f464;};'use strict';var _=require(_0x737b('0x0'));var util=require(_0x737b('0x1'));var moment=require(_0x737b('0x2'));var BPromise=require(_0x737b('0x3'));var rs=require(_0x737b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x737b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x737b('0x6'))(_0x737b('0x7'));var config=require(_0x737b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x737b('0x9')][_0x737b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x51e554,_0xdddbb9,_0x19ffab){return new BPromise(function(_0x9ed538,_0x42e0db){return client[_0x737b('0xb')](_0x51e554,_0x19ffab)[_0x737b('0xc')](function(_0x5e12db){logger[_0x737b('0xd')]('Trunk,\x20%s,\x20%s',_0xdddbb9,_0x737b('0xe'));logger[_0x737b('0xf')](_0x737b('0x10'),_0xdddbb9,_0x737b('0xe'),JSON[_0x737b('0x11')](_0x5e12db));if(_0x5e12db[_0x737b('0x12')]){if(_0x5e12db[_0x737b('0x12')][_0x737b('0x13')]===0x1f4){logger[_0x737b('0x12')](_0x737b('0x14'),_0xdddbb9,_0x5e12db['error'][_0x737b('0x15')]);return _0x42e0db(_0x5e12db[_0x737b('0x12')][_0x737b('0x15')]);}logger[_0x737b('0x12')](_0x737b('0x14'),_0xdddbb9,_0x5e12db[_0x737b('0x12')]['message']);return _0x9ed538(_0x5e12db[_0x737b('0x12')][_0x737b('0x15')]);}else{logger[_0x737b('0xd')]('Trunk,\x20%s,\x20%s',_0xdddbb9,_0x737b('0xe'));_0x9ed538(_0x5e12db[_0x737b('0x16')]['message']);}})[_0x737b('0x17')](function(_0x15931d){logger[_0x737b('0x12')](_0x737b('0x14'),_0xdddbb9,_0x15931d);_0x42e0db(_0x15931d);});});}exports['GetTrunk']=function(_0x36ede5){var _0x24d988=this;return new Promise(function(_0x1aa6a5,_0x2d3932){return db[_0x737b('0x18')]['findAll']({'raw':_0x36ede5['options']?_0x36ede5['options'][_0x737b('0x19')]===undefined?!![]:![]:!![],'where':_0x36ede5[_0x737b('0x1a')]?_0x36ede5[_0x737b('0x1a')][_0x737b('0x1b')]||null:null,'attributes':_0x36ede5[_0x737b('0x1a')]?_0x36ede5[_0x737b('0x1a')]['attributes']||null:null,'limit':_0x36ede5['options']?_0x36ede5['options'][_0x737b('0x1c')]||null:null,'include':_0x36ede5[_0x737b('0x1a')]?_0x36ede5[_0x737b('0x1a')][_0x737b('0x1d')]?_[_0x737b('0x1e')](_0x36ede5[_0x737b('0x1a')]['include'],function(_0x16a363){return{'model':db[_0x16a363[_0x737b('0x1f')]],'as':_0x16a363['as'],'attributes':_0x16a363['attributes'],'include':_0x16a363[_0x737b('0x1d')]?_[_0x737b('0x1e')](_0x16a363['include'],function(_0x38e2be){return{'model':db[_0x38e2be['model']],'as':_0x38e2be['as'],'attributes':_0x38e2be[_0x737b('0x20')],'include':_0x38e2be['include']?_[_0x737b('0x1e')](_0x38e2be[_0x737b('0x1d')],function(_0x4b28a3){return{'model':db[_0x4b28a3[_0x737b('0x1f')]],'as':_0x4b28a3['as'],'attributes':_0x4b28a3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x120616){logger[_0x737b('0xd')](_0x737b('0x21'),_0x36ede5);logger[_0x737b('0xf')](_0x737b('0x21'),_0x36ede5,JSON[_0x737b('0x11')](_0x120616));_0x1aa6a5(_0x120616);})['catch'](function(_0x452c12){logger[_0x737b('0x12')](_0x737b('0x21'),_0x452c12[_0x737b('0x15')],_0x36ede5);_0x2d3932(_0x24d988[_0x737b('0x12')](0x1f4,_0x452c12[_0x737b('0x15')]));});});};exports['ShowTrunk']=function(_0x1bc8b3){var _0xe08454=this;return new Promise(function(_0x5acbf2,_0x3555ac){return db[_0x737b('0x18')][_0x737b('0x22')]({'raw':_0x1bc8b3[_0x737b('0x1a')]?_0x1bc8b3[_0x737b('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1bc8b3[_0x737b('0x1a')]?_0x1bc8b3[_0x737b('0x1a')][_0x737b('0x1b')]||null:null,'attributes':_0x1bc8b3[_0x737b('0x1a')]?_0x1bc8b3[_0x737b('0x1a')][_0x737b('0x20')]||null:null,'include':_0x1bc8b3[_0x737b('0x1a')]?_0x1bc8b3['options'][_0x737b('0x1d')]?_[_0x737b('0x1e')](_0x1bc8b3[_0x737b('0x1a')][_0x737b('0x1d')],function(_0x1a6289){return{'model':db[_0x1a6289[_0x737b('0x1f')]],'as':_0x1a6289['as'],'attributes':_0x1a6289[_0x737b('0x20')],'include':_0x1a6289[_0x737b('0x1d')]?_['map'](_0x1a6289[_0x737b('0x1d')],function(_0x3dec0f){return{'model':db[_0x3dec0f['model']],'as':_0x3dec0f['as'],'attributes':_0x3dec0f[_0x737b('0x20')],'include':_0x3dec0f[_0x737b('0x1d')]?_[_0x737b('0x1e')](_0x3dec0f[_0x737b('0x1d')],function(_0x1a7b83){return{'model':db[_0x1a7b83[_0x737b('0x1f')]],'as':_0x1a7b83['as'],'attributes':_0x1a7b83[_0x737b('0x20')]};}):[]};}):[]};}):[]:[]})[_0x737b('0xc')](function(_0x1edc55){logger[_0x737b('0xd')](_0x737b('0x23'),_0x1bc8b3);logger[_0x737b('0xf')](_0x737b('0x23'),_0x1bc8b3,JSON[_0x737b('0x11')](_0x1edc55));_0x5acbf2(_0x1edc55);})[_0x737b('0x17')](function(_0x34d585){logger[_0x737b('0x12')](_0x737b('0x23'),_0x34d585['message'],_0x1bc8b3);_0x3555ac(_0xe08454[_0x737b('0x12')](0x1f4,_0x34d585[_0x737b('0x15')]));});});};
\ No newline at end of file
index a5cd8a3..715eb42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf789=['/:id/api_key','getApiKey','post','addContacts','create','/create_many','bulkCreate','diskStorage','join','server/files/images/','format','%s-%s','now','originalname','file','/:id/login','login','/:id/logout','pause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addSquareProjects','createApiKey','put','/:id','update','/:id/password','changePassword','removeQueues','delete','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeSmsAccounts','/:id/chat_websites','removeSquareProjects','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','index','/describe','describe','/whoami','isAuthenticated','whoami','/presence','getPresence','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','/:id/queues','getQueues','getVoiceQueuesRt','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','/:id/sms_accounts','getSmsAccounts','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls'];(function(_0xc67f70,_0x1118c0){var _0x44a038=function(_0x13dd6d){while(--_0x13dd6d){_0xc67f70['push'](_0xc67f70['shift']());}};_0x44a038(++_0x1118c0);}(_0xf789,0xb2));var _0x9f78=function(_0x444a86,_0x530534){_0x444a86=_0x444a86-0x0;var _0x4aab3f=_0xf789[_0x444a86];return _0x4aab3f;};'use strict';var multer=require(_0x9f78('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9f78('0x1'));var express=require(_0x9f78('0x2'));var router=express['Router']();var fs_extra=require(_0x9f78('0x3'));var auth=require(_0x9f78('0x4'));var interaction=require(_0x9f78('0x5'));var config=require(_0x9f78('0x6'));var controller=require(_0x9f78('0x7'));router[_0x9f78('0x8')]('/',auth['isAuthenticated'](),controller[_0x9f78('0x9')]);router[_0x9f78('0x8')](_0x9f78('0xa'),auth['isAuthenticated'](),controller[_0x9f78('0xb')]);router[_0x9f78('0x8')](_0x9f78('0xc'),auth[_0x9f78('0xd')](),controller[_0x9f78('0xe')]);router['get'](_0x9f78('0xf'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x10')]);router['get']('/:id',auth[_0x9f78('0xd')](),controller['show']);router[_0x9f78('0x8')](_0x9f78('0x11'),controller[_0x9f78('0x12')]);router[_0x9f78('0x8')](_0x9f78('0x13'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x14')]);router[_0x9f78('0x8')](_0x9f78('0x15'),auth['isAuthenticated'](),controller['getContacts']);router[_0x9f78('0x8')](_0x9f78('0x16'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x17')]);router[_0x9f78('0x8')]('/:id/queues_rt',auth[_0x9f78('0xd')](),controller[_0x9f78('0x18')]);router[_0x9f78('0x8')]('/:id/groups',auth[_0x9f78('0xd')](),controller[_0x9f78('0x19')]);router['get'](_0x9f78('0x1a'),auth['isAuthenticated'](),controller[_0x9f78('0x1b')]);router['get'](_0x9f78('0x1c'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x1d')]);router[_0x9f78('0x8')](_0x9f78('0x1e'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x1f')]);router[_0x9f78('0x8')](_0x9f78('0x20'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x21')]);router[_0x9f78('0x8')](_0x9f78('0x22'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x23')]);router[_0x9f78('0x8')](_0x9f78('0x24'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x25')]);router['get'](_0x9f78('0x26'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x27')]);router[_0x9f78('0x8')](_0x9f78('0x28'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x29')]);router[_0x9f78('0x8')](_0x9f78('0x2a'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x2b')]);router[_0x9f78('0x8')](_0x9f78('0x2c'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x2d')]);router[_0x9f78('0x8')]('/:id/agents',auth[_0x9f78('0xd')](),controller[_0x9f78('0x2e')]);router[_0x9f78('0x8')](_0x9f78('0x2f'),auth[_0x9f78('0xd')](),controller['getVoicePrefixes']);router[_0x9f78('0x8')](_0x9f78('0x30'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x31')]);router[_0x9f78('0x8')](_0x9f78('0x32'),auth[_0x9f78('0xd')](),controller['getMailAccounts']);router[_0x9f78('0x8')](_0x9f78('0x33'),auth[_0x9f78('0xd')](),controller['getOpenchannelAccounts']);router['get'](_0x9f78('0x34'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x35')]);router[_0x9f78('0x8')]('/:id/chat_websites',auth[_0x9f78('0xd')](),controller['getChatWebsites']);router['get'](_0x9f78('0x36'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x37')]);router[_0x9f78('0x8')](_0x9f78('0x38'),auth['isAuthenticated'](),controller[_0x9f78('0x39')]);router[_0x9f78('0x8')](_0x9f78('0x3a'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x3b')]);router[_0x9f78('0x8')](_0x9f78('0x3c'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x3d')]);router[_0x9f78('0x3e')]('/:id/contacts',auth[_0x9f78('0xd')](),controller[_0x9f78('0x3f')]);router[_0x9f78('0x3e')]('/',auth[_0x9f78('0xd')](),controller[_0x9f78('0x40')]);router[_0x9f78('0x3e')](_0x9f78('0x41'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x42')]);router[_0x9f78('0x3e')](_0x9f78('0x16'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0x9f78('0x43')]({'destination':function(_0x2cb27b,_0x477ab1,_0x35ba59){_0x35ba59(null,path[_0x9f78('0x44')](config['root'],_0x9f78('0x45')));},'filename':function(_0x27399b,_0x24a16f,_0x17160e){_0x17160e(null,util[_0x9f78('0x46')](_0x9f78('0x47'),Date[_0x9f78('0x48')](),_0x24a16f[_0x9f78('0x49')]));}})});router['post'](_0x9f78('0x11'),upload['single'](_0x9f78('0x4a')),controller['addAvatar']);router[_0x9f78('0x3e')](_0x9f78('0x4b'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x4c')]);router[_0x9f78('0x3e')](_0x9f78('0x4d'),auth['isAuthenticated'](),controller['logout']);router[_0x9f78('0x3e')]('/:id/pause',auth[_0x9f78('0xd')](),controller[_0x9f78('0x4e')]);router[_0x9f78('0x3e')]('/:id/unpause',auth[_0x9f78('0xd')](),controller['unpause']);router[_0x9f78('0x3e')](_0x9f78('0x2a'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x4f')]);router['post'](_0x9f78('0x50'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x51')]);router[_0x9f78('0x3e')](_0x9f78('0x52'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x53')]);router[_0x9f78('0x3e')](_0x9f78('0x54'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x55')]);router[_0x9f78('0x3e')](_0x9f78('0x56'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x57')]);router['post'](_0x9f78('0x58'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x59')]);router[_0x9f78('0x3e')](_0x9f78('0x5a'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x5b')]);router['post']('/:id/fax_accounts',auth[_0x9f78('0xd')](),controller[_0x9f78('0x5c')]);router[_0x9f78('0x3e')](_0x9f78('0x32'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x5d')]);router[_0x9f78('0x3e')](_0x9f78('0x33'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x5e')]);router[_0x9f78('0x3e')](_0x9f78('0x34'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x5f')]);router[_0x9f78('0x3e')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x9f78('0x60')]);router['post'](_0x9f78('0x36'),auth[_0x9f78('0xd')](),controller['addWhatsappAccounts']);router[_0x9f78('0x3e')](_0x9f78('0x38'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x61')]);router[_0x9f78('0x3e')](_0x9f78('0x3c'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x62')]);router[_0x9f78('0x63')](_0x9f78('0x64'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x65')]);router['put'](_0x9f78('0x66'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x67')]);router['delete'](_0x9f78('0x16'),auth['isAuthenticated'](),controller[_0x9f78('0x68')]);router[_0x9f78('0x69')](_0x9f78('0x2a'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x6a')]);router['delete']('/:id',auth[_0x9f78('0xd')](),controller[_0x9f78('0x6b')]);router[_0x9f78('0x69')](_0x9f78('0x50'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x6c')]);router[_0x9f78('0x69')](_0x9f78('0x52'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x6d')]);router[_0x9f78('0x69')](_0x9f78('0x54'),auth['isAuthenticated'](),controller[_0x9f78('0x6e')]);router[_0x9f78('0x69')](_0x9f78('0x56'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x6f')]);router['delete']('/:id/openchannel_interactions',auth[_0x9f78('0xd')](),controller[_0x9f78('0x70')]);router[_0x9f78('0x69')](_0x9f78('0x5a'),auth['isAuthenticated'](),controller[_0x9f78('0x71')]);router['delete']('/:id/fax_accounts',auth['isAuthenticated'](),controller[_0x9f78('0x72')]);router['delete'](_0x9f78('0x32'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x73')]);router[_0x9f78('0x69')](_0x9f78('0x33'),auth['isAuthenticated'](),controller['removeOpenchannelAccounts']);router[_0x9f78('0x69')](_0x9f78('0x34'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x74')]);router[_0x9f78('0x69')](_0x9f78('0x75'),auth[_0x9f78('0xd')](),controller['removeChatWebsites']);router[_0x9f78('0x69')](_0x9f78('0x36'),auth[_0x9f78('0xd')](),controller['removeWhatsappAccounts']);router['delete'](_0x9f78('0x38'),auth[_0x9f78('0xd')](),controller[_0x9f78('0x76')]);router[_0x9f78('0x69')](_0x9f78('0x3c'),auth['isAuthenticated'](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
+var _0x51f8=['describe','/whoami','whoami','getPresence','/:id','show','getAvatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','/:id/square_projects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','/:id/contacts','addContacts','create','bulkCreate','/:id/queues','addQueues','diskStorage','join','root','server/files/images/','now','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addFaxAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','addSquareProjects','createApiKey','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeWhatsappInteractions','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','multer','util','path','connect-timeout','fs-extra','../../config/environment','./user.controller','get','/describe','isAuthenticated'];(function(_0x2197b6,_0x41e4ff){var _0x2a14f1=function(_0x1d06a0){while(--_0x1d06a0){_0x2197b6['push'](_0x2197b6['shift']());}};_0x2a14f1(++_0x41e4ff);}(_0x51f8,0x1d6));var _0x851f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x51f8[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x851f('0x0'));var util=require(_0x851f('0x1'));var path=require(_0x851f('0x2'));var timeout=require(_0x851f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x851f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x851f('0x5'));var controller=require(_0x851f('0x6'));router[_0x851f('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x851f('0x8'),auth[_0x851f('0x9')](),controller[_0x851f('0xa')]);router[_0x851f('0x7')](_0x851f('0xb'),auth['isAuthenticated'](),controller[_0x851f('0xc')]);router[_0x851f('0x7')]('/presence',auth[_0x851f('0x9')](),controller[_0x851f('0xd')]);router[_0x851f('0x7')](_0x851f('0xe'),auth['isAuthenticated'](),controller[_0x851f('0xf')]);router[_0x851f('0x7')]('/:id/avatar',controller[_0x851f('0x10')]);router[_0x851f('0x7')](_0x851f('0x11'),auth[_0x851f('0x9')](),controller[_0x851f('0x12')]);router[_0x851f('0x7')]('/:id/contacts',auth[_0x851f('0x9')](),controller[_0x851f('0x13')]);router[_0x851f('0x7')]('/:id/queues',auth[_0x851f('0x9')](),controller['getQueues']);router[_0x851f('0x7')](_0x851f('0x14'),auth[_0x851f('0x9')](),controller[_0x851f('0x15')]);router[_0x851f('0x7')](_0x851f('0x16'),auth[_0x851f('0x9')](),controller[_0x851f('0x17')]);router['get']('/:id/recordings',auth[_0x851f('0x9')](),controller[_0x851f('0x18')]);router['get'](_0x851f('0x19'),auth[_0x851f('0x9')](),controller[_0x851f('0x1a')]);router[_0x851f('0x7')](_0x851f('0x1b'),auth[_0x851f('0x9')](),controller[_0x851f('0x1c')]);router[_0x851f('0x7')](_0x851f('0x1d'),auth[_0x851f('0x9')](),controller[_0x851f('0x1e')]);router['get'](_0x851f('0x1f'),auth[_0x851f('0x9')](),controller[_0x851f('0x20')]);router[_0x851f('0x7')](_0x851f('0x21'),auth[_0x851f('0x9')](),controller[_0x851f('0x22')]);router['get'](_0x851f('0x23'),auth[_0x851f('0x9')](),controller[_0x851f('0x24')]);router[_0x851f('0x7')](_0x851f('0x25'),auth[_0x851f('0x9')](),controller['getWhatsappInteractions']);router[_0x851f('0x7')](_0x851f('0x26'),auth[_0x851f('0x9')](),controller[_0x851f('0x27')]);router[_0x851f('0x7')](_0x851f('0x28'),auth[_0x851f('0x9')](),controller[_0x851f('0x29')]);router['get'](_0x851f('0x2a'),auth[_0x851f('0x9')](),controller[_0x851f('0x2b')]);router[_0x851f('0x7')]('/:id/prefixes',auth[_0x851f('0x9')](),controller['getVoicePrefixes']);router[_0x851f('0x7')](_0x851f('0x2c'),auth[_0x851f('0x9')](),controller[_0x851f('0x2d')]);router[_0x851f('0x7')](_0x851f('0x2e'),auth[_0x851f('0x9')](),controller[_0x851f('0x2f')]);router[_0x851f('0x7')](_0x851f('0x30'),auth[_0x851f('0x9')](),controller[_0x851f('0x31')]);router[_0x851f('0x7')](_0x851f('0x32'),auth[_0x851f('0x9')](),controller['getSmsAccounts']);router['get'](_0x851f('0x33'),auth['isAuthenticated'](),controller[_0x851f('0x34')]);router[_0x851f('0x7')]('/:id/whatsapp_accounts',auth[_0x851f('0x9')](),controller[_0x851f('0x35')]);router[_0x851f('0x7')](_0x851f('0x36'),auth[_0x851f('0x9')](),controller['getSquareProjects']);router[_0x851f('0x7')](_0x851f('0x37'),auth[_0x851f('0x9')](),controller[_0x851f('0x38')]);router[_0x851f('0x7')](_0x851f('0x39'),auth[_0x851f('0x9')](),controller[_0x851f('0x3a')]);router[_0x851f('0x3b')](_0x851f('0x3c'),auth['isAuthenticated'](),controller[_0x851f('0x3d')]);router['post']('/',auth[_0x851f('0x9')](),controller[_0x851f('0x3e')]);router[_0x851f('0x3b')]('/create_many',auth[_0x851f('0x9')](),controller[_0x851f('0x3f')]);router['post'](_0x851f('0x40'),auth['isAuthenticated'](),controller[_0x851f('0x41')]);var upload=multer({'storage':multer[_0x851f('0x42')]({'destination':function(_0x4c5662,_0x356036,_0x109d66){_0x109d66(null,path[_0x851f('0x43')](config[_0x851f('0x44')],_0x851f('0x45')));},'filename':function(_0x2fd5a2,_0x265912,_0x2f4570){_0x2f4570(null,util['format']('%s-%s',Date[_0x851f('0x46')](),_0x265912[_0x851f('0x47')]));}})});router[_0x851f('0x3b')]('/:id/avatar',upload[_0x851f('0x48')](_0x851f('0x49')),controller[_0x851f('0x4a')]);router[_0x851f('0x3b')](_0x851f('0x4b'),auth[_0x851f('0x9')](),controller[_0x851f('0x4c')]);router[_0x851f('0x3b')](_0x851f('0x4d'),auth[_0x851f('0x9')](),controller[_0x851f('0x4e')]);router[_0x851f('0x3b')](_0x851f('0x4f'),auth[_0x851f('0x9')](),controller[_0x851f('0x50')]);router[_0x851f('0x3b')]('/:id/unpause',auth[_0x851f('0x9')](),controller[_0x851f('0x51')]);router[_0x851f('0x3b')]('/:id/teams',auth[_0x851f('0x9')](),controller[_0x851f('0x52')]);router[_0x851f('0x3b')](_0x851f('0x53'),auth[_0x851f('0x9')](),controller[_0x851f('0x54')]);router['post'](_0x851f('0x55'),auth['isAuthenticated'](),controller[_0x851f('0x56')]);router[_0x851f('0x3b')](_0x851f('0x57'),auth[_0x851f('0x9')](),controller[_0x851f('0x58')]);router[_0x851f('0x3b')](_0x851f('0x59'),auth[_0x851f('0x9')](),controller[_0x851f('0x5a')]);router['post'](_0x851f('0x5b'),auth[_0x851f('0x9')](),controller[_0x851f('0x5c')]);router['post'](_0x851f('0x5d'),auth[_0x851f('0x9')](),controller['addWhatsappInteractions']);router[_0x851f('0x3b')](_0x851f('0x2c'),auth['isAuthenticated'](),controller[_0x851f('0x5e')]);router['post'](_0x851f('0x2e'),auth[_0x851f('0x9')](),controller['addMailAccounts']);router[_0x851f('0x3b')](_0x851f('0x30'),auth[_0x851f('0x9')](),controller[_0x851f('0x5f')]);router[_0x851f('0x3b')](_0x851f('0x32'),auth[_0x851f('0x9')](),controller[_0x851f('0x60')]);router[_0x851f('0x3b')](_0x851f('0x33'),auth['isAuthenticated'](),controller[_0x851f('0x61')]);router[_0x851f('0x3b')](_0x851f('0x62'),auth[_0x851f('0x9')](),controller[_0x851f('0x63')]);router[_0x851f('0x3b')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0x851f('0x64')]);router[_0x851f('0x3b')](_0x851f('0x39'),auth[_0x851f('0x9')](),controller[_0x851f('0x65')]);router[_0x851f('0x66')](_0x851f('0xe'),auth[_0x851f('0x9')](),controller[_0x851f('0x67')]);router[_0x851f('0x66')](_0x851f('0x68'),auth['isAuthenticated'](),controller[_0x851f('0x69')]);router[_0x851f('0x6a')](_0x851f('0x40'),auth['isAuthenticated'](),controller[_0x851f('0x6b')]);router['delete'](_0x851f('0x26'),auth[_0x851f('0x9')](),controller[_0x851f('0x6c')]);router[_0x851f('0x6a')](_0x851f('0xe'),auth['isAuthenticated'](),controller[_0x851f('0x6d')]);router[_0x851f('0x6a')](_0x851f('0x53'),auth[_0x851f('0x9')](),controller[_0x851f('0x6e')]);router[_0x851f('0x6a')](_0x851f('0x55'),auth[_0x851f('0x9')](),controller[_0x851f('0x6f')]);router['delete'](_0x851f('0x57'),auth[_0x851f('0x9')](),controller[_0x851f('0x70')]);router[_0x851f('0x6a')](_0x851f('0x59'),auth[_0x851f('0x9')](),controller['removeSmsInteractions']);router[_0x851f('0x6a')](_0x851f('0x5b'),auth[_0x851f('0x9')](),controller['removeOpenchannelInteractions']);router[_0x851f('0x6a')](_0x851f('0x5d'),auth[_0x851f('0x9')](),controller[_0x851f('0x71')]);router[_0x851f('0x6a')](_0x851f('0x2c'),auth[_0x851f('0x9')](),controller['removeFaxAccounts']);router['delete'](_0x851f('0x2e'),auth[_0x851f('0x9')](),controller[_0x851f('0x72')]);router[_0x851f('0x6a')](_0x851f('0x30'),auth[_0x851f('0x9')](),controller[_0x851f('0x73')]);router['delete'](_0x851f('0x32'),auth[_0x851f('0x9')](),controller['removeSmsAccounts']);router[_0x851f('0x6a')](_0x851f('0x33'),auth['isAuthenticated'](),controller[_0x851f('0x74')]);router[_0x851f('0x6a')](_0x851f('0x62'),auth[_0x851f('0x9')](),controller[_0x851f('0x75')]);router['delete'](_0x851f('0x36'),auth[_0x851f('0x9')](),controller[_0x851f('0x76')]);router[_0x851f('0x6a')](_0x851f('0x39'),auth[_0x851f('0x9')](),controller[_0x851f('0x77')]);module['exports']=router;
\ No newline at end of file
index ff4a0eb..aacbed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b77=['String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','showWebBar','isArray','udp','wss','encryption','avpf','force_avp','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','icesupport','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','phoneBarEnableScreenRecordingByAgent','true','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','name','setDataValue','The\x20name\x20of\x20the\x20user','STRING','fullname','format','getDataValue','internal','email','toLowerCase','ENUM','admin','telephone','local','accountcode','\x22%s\x22\x20<%s>','BOOLEAN','DATE','DEFAULT\x20PAUSE','INTEGER','dynamic','user','peer','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','insecure'];(function(_0x5a79a1,_0x239054){var _0x172029=function(_0x1cb85f){while(--_0x1cb85f){_0x5a79a1['push'](_0x5a79a1['shift']());}};_0x172029(++_0x239054);}(_0x7b77,0x85));var _0x77b7=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x7b77[_0x7e2eb0];return _0xd92de4;};'use strict';var Sequelize=require(_0x77b7('0x0'));var moment=require(_0x77b7('0x1'));var util=require(_0x77b7('0x2'));var _=require(_0x77b7('0x3'));module[_0x77b7('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x77b7('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x699f6c){this[_0x77b7('0x6')](_0x77b7('0x5'),_0x699f6c);this[_0x77b7('0x6')]('defaultuser',_0x699f6c);},'comment':_0x77b7('0x7')},'fullname':{'type':Sequelize[_0x77b7('0x8')],'allowNull':![],'set':function(_0x50f9cc){this[_0x77b7('0x6')](_0x77b7('0x9'),_0x50f9cc);this[_0x77b7('0x6')]('callerid',util[_0x77b7('0xa')]('\x22%s\x22\x20<%s>',_0x50f9cc,this[_0x77b7('0xb')](_0x77b7('0xc'))));}},'alias':{'type':Sequelize[_0x77b7('0x8')]},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x77b7('0xd'),'validate':{'isEmail':!![]},'set':function(_0x2a14b0){if(_0x2a14b0){this['setDataValue'](_0x77b7('0xd'),_0x2a14b0[_0x77b7('0xe')]());}}},'role':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x10'),'user','agent',_0x77b7('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x77b7('0x8')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x77b7('0x8')],'defaultValue':_0x77b7('0x12')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x77b7('0xc'),'set':function(_0x20a68d){this['setDataValue'](_0x77b7('0xc'),_0x20a68d);this['setDataValue'](_0x77b7('0x13'),_0x20a68d);this['setDataValue']('callerid',util[_0x77b7('0xa')](_0x77b7('0x14'),this[_0x77b7('0xb')]('fullname'),_0x20a68d));}},'salt':{'type':Sequelize[_0x77b7('0x8')]},'phone':{'type':Sequelize[_0x77b7('0x8')]},'mobile':{'type':Sequelize[_0x77b7('0x8')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0x77b7('0x8')]},'userpic':{'type':Sequelize[_0x77b7('0x8')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x77b7('0x16')]},'voicePause':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x77b7('0x17')},'lastPauseAt':{'type':Sequelize[_0x77b7('0x16')]},'chatCapacity':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'host':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![],'defaultValue':_0x77b7('0x19')},'ipaddr':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'port':{'type':Sequelize[_0x77b7('0x18')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x77b7('0xf')]('friend',_0x77b7('0x1a'),_0x77b7('0x1b')),'allowNull':!![],'defaultValue':_0x77b7('0x1c')},'context':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![],'defaultValue':_0x77b7('0x1d')},'callingpres':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x1e'),_0x77b7('0x1f'),_0x77b7('0x20'),_0x77b7('0x21'),_0x77b7('0x22'),'PROHIB_PASSED_SCREEN',_0x77b7('0x23'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'udp','set':function(_0x35dacc){this[_0x77b7('0x6')](_0x77b7('0x24'),_0x35dacc?_0x35dacc['join'](','):null);},'get':function(){return this[_0x77b7('0xb')]('transport')?this[_0x77b7('0xb')](_0x77b7('0x24'))['split'](','):null;},'comment':_0x77b7('0x25')},'dtmfmode':{'type':Sequelize['ENUM'](_0x77b7('0x26'),_0x77b7('0x27'),_0x77b7('0x28'),_0x77b7('0x29'),'auto'),'allowNull':!![],'defaultValue':_0x77b7('0x26')},'directmedia':{'type':Sequelize['ENUM'](_0x77b7('0x2a'),'no',_0x77b7('0x2b'),_0x77b7('0x2c'),_0x77b7('0x2d')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'nat':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![],'defaultValue':_0x77b7('0x2e'),'set':function(_0x15fa2e){this[_0x77b7('0x6')](_0x77b7('0x2f'),_0x15fa2e?_0x15fa2e[_0x77b7('0x30')](','):null);},'get':function(){return this[_0x77b7('0xb')](_0x77b7('0x2f'))?this[_0x77b7('0xb')](_0x77b7('0x2f'))[_0x77b7('0x31')](','):null;},'comment':_0x77b7('0x32')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x77b7('0x8')]},'pickupgroup':{'type':Sequelize[_0x77b7('0x8')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x77b7('0x8')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0x77b7('0x8')],'allowNull':![],'defaultValue':_0x77b7('0x33')},'allow':{'type':Sequelize[_0x77b7('0x8')],'allowNull':![],'defaultValue':_0x77b7('0x34'),'set':function(_0x49f83e){this[_0x77b7('0x6')](_0x77b7('0x35'),_0x49f83e?_0x49f83e[_0x77b7('0x30')](';'):_0x77b7('0x34'));},'get':function(){return this[_0x77b7('0xb')]('allow')?this[_0x77b7('0xb')]('allow')[_0x77b7('0x31')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![],'set':function(_0x47b8e4){this[_0x77b7('0x6')]('insecure',_0x47b8e4?_0x47b8e4[_0x77b7('0x30')](','):null);},'get':function(){return this[_0x77b7('0xb')](_0x77b7('0x36'))?this[_0x77b7('0xb')](_0x77b7('0x36'))[_0x77b7('0x31')](','):null;},'comment':_0x77b7('0x37')},'trustrpid':{'type':Sequelize['ENUM'](_0x77b7('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x77b7('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x77b7('0xf')]('yes','no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x77b7('0x2a'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x77b7('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x77b7('0xf')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no',_0x77b7('0x38')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x77b7('0x39'),_0x77b7('0x3a'),_0x77b7('0x3b')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x3c'),_0x77b7('0x3d')),'allowNull':!![],'defaultValue':_0x77b7('0x3d')},'t38pt_usertpsource':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x77b7('0xf')]('yes','no'),'allowNull':!![],'defaultValue':_0x77b7('0x2a')},'keepalive':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x77b7('0x2a'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x77b7('0xf')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no',_0x77b7('0x3e'),_0x77b7('0x3f')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x40'),_0x77b7('0x41'),_0x77b7('0x42')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x77b7('0x18')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x77b7('0xf')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no',_0x77b7('0x2b'),_0x77b7('0x2c'),_0x77b7('0x43')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x77b7('0x8')]},'resetPasswordExpires':{'type':Sequelize[_0x77b7('0x16')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0,'set':function(_0x456b51){this[_0x77b7('0x6')](_0x77b7('0x44'),_0x456b51);var _0x513ffd=this['get']({'plain':!![]});switch(_0x456b51){case 0x0:case 0x1:var _0x163358=_0x513ffd[_0x77b7('0x24')]?_[_0x77b7('0x45')](_0x513ffd['transport'])?_0x513ffd[_0x77b7('0x24')]['join']():_0x513ffd[_0x77b7('0x24')]:_0x77b7('0x46');if(_0x163358===_0x77b7('0x47')){_0x163358=_0x77b7('0x46');}this[_0x77b7('0x6')]('transport',_0x163358);this[_0x77b7('0x6')](_0x77b7('0x48'),'no');this['setDataValue'](_0x77b7('0x49'),null);this[_0x77b7('0x6')](_0x77b7('0x4a'),null);this[_0x77b7('0x6')]('icesupport',null);this[_0x77b7('0x6')](_0x77b7('0x4b'),null);this[_0x77b7('0x6')](_0x77b7('0x4c'),null);this['setDataValue'](_0x77b7('0x4d'),null);this[_0x77b7('0x6')](_0x77b7('0x4e'),null);this[_0x77b7('0x6')](_0x77b7('0x4f'),null);this[_0x77b7('0x6')](_0x77b7('0x50'),'no');break;case 0x2:this[_0x77b7('0x6')](_0x77b7('0x24'),_0x77b7('0x47'));this[_0x77b7('0x6')](_0x77b7('0x48'),_0x77b7('0x2a'));this[_0x77b7('0x6')]('avpf',_0x77b7('0x2a'));this['setDataValue'](_0x77b7('0x4a'),_0x77b7('0x2a'));this['setDataValue'](_0x77b7('0x51'),_0x77b7('0x2a'));this[_0x77b7('0x6')](_0x77b7('0x4b'),_0x77b7('0x2a'));this['setDataValue']('dtlsverify','no');this[_0x77b7('0x6')](_0x77b7('0x4d'),'actpass');this[_0x77b7('0x6')](_0x77b7('0x4e'),_0x513ffd[_0x77b7('0x4e')]||_0x77b7('0x52'));this[_0x77b7('0x6')](_0x77b7('0x4f'),_0x513ffd[_0x77b7('0x4f')]||_0x77b7('0x53'));this[_0x77b7('0x6')](_0x77b7('0x50'),_0x77b7('0x2a'));break;default:}}},'permissions':{'type':Sequelize[_0x77b7('0x54')],'set':function(_0x1b4766){this[_0x77b7('0x6')](_0x77b7('0x55'),_0x1b4766?_0x1b4766[_0x77b7('0x30')](','):[]);},'get':function(){return this[_0x77b7('0xb')]('permissions')?_[_0x77b7('0x56')](this[_0x77b7('0xb')](_0x77b7('0x55'))[_0x77b7('0x31')](','),function(_0xa3ff07){return parseInt(_0xa3ff07,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x77b7('0x8')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x77b7('0x8')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x77b7('0x8')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x77b7('0xf')](_0x77b7('0x2a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x77b7('0x8')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x77b7('0xb')](_0x77b7('0x57'))?this[_0x77b7('0xb')](_0x77b7('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x77b7('0x8')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![],'set':function(_0x4c7bef){if(typeof _0x4c7bef==='string'){var _0x1196cb=_0x4c7bef==='1'?!![]:_0x4c7bef==='0'?![]:_0x4c7bef===_0x77b7('0x58')?!![]:_0x4c7bef==='false'?![]:![];this[_0x77b7('0x6')](_0x77b7('0x59'),_0x1196cb);}else{this[_0x77b7('0x6')](_0x77b7('0x59'),_0x4c7bef);}}},'blocked':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![],'set':function(_0x313813){this[_0x77b7('0x6')](_0x77b7('0x5a'),_0x313813);if(_0x313813===!![]){this[_0x77b7('0x6')](_0x77b7('0x5b'),moment());this[_0x77b7('0x6')](_0x77b7('0x5c'),0x0);}else{this[_0x77b7('0x6')](_0x77b7('0x5b'),null);}}},'blockedAt':{'type':Sequelize[_0x77b7('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x77b7('0x18')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x77b7('0x18')](0x5)[_0x77b7('0x5d')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x77b7('0x15')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0e86=['udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','inband','auto','rfc2833','yes','nonat','update','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','uac','uas','fingerprint','certificate','passive','actpass','update,nonat','TEXT','showWebBar','get','isArray','wss','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','encryption','force_avp','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','false','screenrecording','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','fullname','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB'];(function(_0x42becc,_0x103ef2){var _0x237c1f=function(_0x353b80){while(--_0x353b80){_0x42becc['push'](_0x42becc['shift']());}};_0x237c1f(++_0x103ef2);}(_0x0e86,0xee));var _0x60e8=function(_0x5630db,_0x176962){_0x5630db=_0x5630db-0x0;var _0x2c40a6=_0x0e86[_0x5630db];return _0x2c40a6;};'use strict';var Sequelize=require(_0x60e8('0x0'));var moment=require(_0x60e8('0x1'));var util=require(_0x60e8('0x2'));var _=require(_0x60e8('0x3'));module[_0x60e8('0x4')]={'name':{'type':Sequelize[_0x60e8('0x5')],'allowNull':![],'unique':_0x60e8('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x296eff){this[_0x60e8('0x7')]('name',_0x296eff);this['setDataValue'](_0x60e8('0x8'),_0x296eff);},'comment':_0x60e8('0x9')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1de02d){this[_0x60e8('0x7')]('fullname',_0x1de02d);this['setDataValue'](_0x60e8('0xa'),util[_0x60e8('0xb')](_0x60e8('0xc'),_0x1de02d,this[_0x60e8('0xd')](_0x60e8('0xe'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x60e8('0xf'),'validate':{'isEmail':!![]},'set':function(_0x283b0b){if(_0x283b0b){this[_0x60e8('0x7')](_0x60e8('0xf'),_0x283b0b['toLowerCase']());}}},'role':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x11'),_0x60e8('0x12'),_0x60e8('0x13'),_0x60e8('0x14')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x60e8('0x5')],'defaultValue':_0x60e8('0x15')},'internal':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':![],'unique':'internal','set':function(_0x5d9a97){this[_0x60e8('0x7')](_0x60e8('0xe'),_0x5d9a97);this[_0x60e8('0x7')](_0x60e8('0x17'),_0x5d9a97);this[_0x60e8('0x7')](_0x60e8('0xa'),util[_0x60e8('0xb')](_0x60e8('0xc'),this[_0x60e8('0xd')](_0x60e8('0x18')),_0x5d9a97));}},'salt':{'type':Sequelize[_0x60e8('0x5')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x60e8('0x5')]},'address':{'type':Sequelize[_0x60e8('0x5')]},'zipcode':{'type':Sequelize[_0x60e8('0x5')]},'userpic':{'type':Sequelize[_0x60e8('0x5')]},'city':{'type':Sequelize[_0x60e8('0x5')]},'country':{'type':Sequelize[_0x60e8('0x5')]},'online':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x60e8('0x1a')]},'voicePause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x60e8('0x5')],'defaultValue':_0x60e8('0x1b')},'lastPauseAt':{'type':Sequelize[_0x60e8('0x1a')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x60e8('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x60e8('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x60e8('0x1c')},'ipaddr':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'port':{'type':Sequelize[_0x60e8('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x1d'),_0x60e8('0x12'),'peer'),'allowNull':!![],'defaultValue':_0x60e8('0x1d')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x60e8('0x1e')},'callingpres':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x1f'),'ALLOWED_PASSED_SCREEN',_0x60e8('0x20'),_0x60e8('0x21'),_0x60e8('0x22'),_0x60e8('0x23'),_0x60e8('0x24'),_0x60e8('0x25')),'allowNull':!![]},'deny':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'permit':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'secret':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'transport':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![],'defaultValue':_0x60e8('0x26'),'set':function(_0x24e227){this['setDataValue'](_0x60e8('0x27'),_0x24e227?_0x24e227[_0x60e8('0x28')](','):null);},'get':function(){return this[_0x60e8('0xd')](_0x60e8('0x27'))?this[_0x60e8('0xd')](_0x60e8('0x27'))[_0x60e8('0x29')](','):null;},'comment':_0x60e8('0x2a')},'dtmfmode':{'type':Sequelize[_0x60e8('0x10')]('rfc2833',_0x60e8('0x2b'),'shortinfo',_0x60e8('0x2c'),_0x60e8('0x2d')),'allowNull':!![],'defaultValue':_0x60e8('0x2e')},'directmedia':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no',_0x60e8('0x30'),_0x60e8('0x31'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![],'defaultValue':_0x60e8('0x32'),'set':function(_0x37e447){this[_0x60e8('0x7')](_0x60e8('0x33'),_0x37e447?_0x37e447[_0x60e8('0x28')](','):null);},'get':function(){return this[_0x60e8('0xd')](_0x60e8('0x33'))?this[_0x60e8('0xd')]('nat')[_0x60e8('0x29')](','):null;},'comment':_0x60e8('0x34')},'callgroup':{'type':Sequelize[_0x60e8('0x5')]},'namedcallgroup':{'type':Sequelize[_0x60e8('0x5')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x60e8('0x5')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x60e8('0x5')]},'disallow':{'type':Sequelize[_0x60e8('0x5')],'allowNull':![],'defaultValue':_0x60e8('0x35')},'allow':{'type':Sequelize[_0x60e8('0x5')],'allowNull':![],'defaultValue':_0x60e8('0x36'),'set':function(_0x153fe1){this[_0x60e8('0x7')]('allow',_0x153fe1?_0x153fe1[_0x60e8('0x28')](';'):_0x60e8('0x36'));},'get':function(){return this['getDataValue']('allow')?this[_0x60e8('0xd')]('allow')[_0x60e8('0x29')](';'):null;},'comment':_0x60e8('0x37')},'autoframing':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![],'set':function(_0x508e97){this[_0x60e8('0x7')](_0x60e8('0x38'),_0x508e97?_0x508e97[_0x60e8('0x28')](','):null);},'get':function(){return this[_0x60e8('0xd')]('insecure')?this[_0x60e8('0xd')]('insecure')[_0x60e8('0x29')](','):null;},'comment':_0x60e8('0x39')},'trustrpid':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no',_0x60e8('0x3a')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x60e8('0x10')]('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![],'defaultValue':_0x60e8('0x3b')},'amaflags':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x60e8('0x2f')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x60e8('0x10')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no',_0x60e8('0x3c')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x3d'),_0x60e8('0x3e'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x3f'),_0x60e8('0x40')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x60e8('0x2f')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no',_0x60e8('0x41'),_0x60e8('0x42')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0x60e8('0x43'),_0x60e8('0x44')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x60e8('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x60e8('0x10')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x60e8('0x2f'),'no','nonat','update',_0x60e8('0x45')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x60e8('0x5')]},'resetPasswordExpires':{'type':Sequelize[_0x60e8('0x1a')]},'passwordResetAt':{'type':Sequelize[_0x60e8('0x1a')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x60e8('0x46')]},'showWebBar':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0,'set':function(_0x11a247){this[_0x60e8('0x7')](_0x60e8('0x47'),_0x11a247);var _0x412409=this[_0x60e8('0x48')]({'plain':!![]});switch(_0x11a247){case 0x0:case 0x1:var _0x1a5a2e=_0x412409[_0x60e8('0x27')]?_[_0x60e8('0x49')](_0x412409[_0x60e8('0x27')])?_0x412409[_0x60e8('0x27')]['join']():_0x412409[_0x60e8('0x27')]:_0x60e8('0x26');if(_0x1a5a2e===_0x60e8('0x4a')){_0x1a5a2e=_0x60e8('0x26');}this['setDataValue'](_0x60e8('0x27'),_0x1a5a2e);this[_0x60e8('0x7')]('encryption','no');this[_0x60e8('0x7')]('avpf',null);this['setDataValue']('force_avp',null);this['setDataValue'](_0x60e8('0x4b'),null);this[_0x60e8('0x7')](_0x60e8('0x4c'),null);this[_0x60e8('0x7')](_0x60e8('0x4d'),null);this['setDataValue'](_0x60e8('0x4e'),null);this[_0x60e8('0x7')](_0x60e8('0x4f'),null);this[_0x60e8('0x7')]('dtlsprivatekey',null);this[_0x60e8('0x7')](_0x60e8('0x50'),'no');break;case 0x2:this[_0x60e8('0x7')](_0x60e8('0x27'),_0x60e8('0x4a'));this[_0x60e8('0x7')](_0x60e8('0x51'),'yes');this[_0x60e8('0x7')]('avpf',_0x60e8('0x2f'));this[_0x60e8('0x7')](_0x60e8('0x52'),_0x60e8('0x2f'));this[_0x60e8('0x7')](_0x60e8('0x4b'),_0x60e8('0x2f'));this[_0x60e8('0x7')](_0x60e8('0x4c'),_0x60e8('0x2f'));this[_0x60e8('0x7')](_0x60e8('0x4d'),'no');this[_0x60e8('0x7')](_0x60e8('0x4e'),_0x60e8('0x44'));this[_0x60e8('0x7')](_0x60e8('0x4f'),_0x412409[_0x60e8('0x4f')]||'/etc/pki/tls/certs/motion.crt');this['setDataValue'](_0x60e8('0x53'),_0x412409[_0x60e8('0x53')]||_0x60e8('0x54'));this[_0x60e8('0x7')](_0x60e8('0x50'),'yes');break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x6d66e3){this[_0x60e8('0x7')](_0x60e8('0x55'),_0x6d66e3?_0x6d66e3[_0x60e8('0x28')](','):[]);},'get':function(){return this[_0x60e8('0xd')](_0x60e8('0x55'))?_['map'](this['getDataValue']('permissions')['split'](','),function(_0x40179a){return parseInt(_0x40179a,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x60e8('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x60e8('0x5')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x60e8('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x60e8('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x60e8('0x10')](_0x60e8('0x2f'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x60e8('0x5')]},'phoneBarEnableJaws':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x60e8('0x56')],'get':function(){return this[_0x60e8('0xd')](_0x60e8('0x57'))?this[_0x60e8('0xd')](_0x60e8('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'interface':{'type':Sequelize[_0x60e8('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x60e8('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![],'set':function(_0x11eb09){if(typeof _0x11eb09==='string'){var _0x51d823=_0x11eb09==='1'?!![]:_0x11eb09==='0'?![]:_0x11eb09==='true'?!![]:_0x11eb09===_0x60e8('0x58')?![]:![];this[_0x60e8('0x7')](_0x60e8('0x59'),_0x51d823);}else{this['setDataValue'](_0x60e8('0x59'),_0x11eb09);}}},'blocked':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![],'set':function(_0x3bab67){this[_0x60e8('0x7')]('blocked',_0x3bab67);if(_0x3bab67===!![]){this[_0x60e8('0x7')]('blockedAt',moment());this[_0x60e8('0x7')](_0x60e8('0x5a'),0x0);}else{this[_0x60e8('0x7')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x60e8('0x16')](0x5)[_0x60e8('0x5b')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x60e8('0x19')],'defaultValue':![]}};
\ No newline at end of file
index ab57a9b..be056c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['attributes','findAll','rows','true','length','chat','dataValues','push','fax','mail','openchannel','all','model','keys','filters','intersection','fields','options','openTabs','sms','whatsapp','body','params','describe','addContacts','omit','ids','internal','Setting','findById','securePassword','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','voicemail','mailbox','VoiceMail','fullname','email','agent','permissions','101','102','103','106','100','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','settingsEnabled','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','checkUserLimits','each','autoAssociation','compact','changePassword','oldPassword','Sequelize','authenticate','ValidationError','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','previousPasswords','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','spread','QueueId','voice','VoiceQueue','format','SIP/%s','removeQueues','remove','isArray','emit','Queue:remove','UserVoiceQueueRt','userpic','file','filename','join','root','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','createdAt','MailOpenTabs','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','CmContact','sort','pick','merge','hasOwnProperty','CmList','Tags','color','tag','nolimit','getContacts','order','Queue','Queues','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','OpenchannelInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','WhatsappInteraction','getWhatsappInteractions','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','socket','remoteAddress','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','device','PAUSE','LOGININPAUSE','bulkCreate','resolve','logout','pause','QueuePause','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','whatsapppause','pauseType','lastPauseAt','manual','%s%s','getTeams','Team','addTeams','setDataValue','Voice','Chat','getMailQueues','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','getDataValue','penalty','Queue:save','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','getChatQueues','Sms','Fax','removeAgent','getLists','getAgents','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','concat','$and','$or','$gt','$gte','$lt','$ne','$eq','$not','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','removeApiKey','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','isEmpty','lower','col','toString','asc','desc','substring','uniqBy','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','select','ui.','InteractionId','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','lodash','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','socket.io-emitter','redis','defaults','localhost','client','then','info','User,\x20%s,\x20%s','debug','error','message','request\x20sent','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','get','admin','Users','user','Agents','Telephones','telephone','map','value','includes','role','find','UserProfileResource','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','filter','password','where','User','query','includeAll','include'];(function(_0x5d01d1,_0x511ae8){var _0x1526dd=function(_0x5b6ba7){while(--_0x5b6ba7){_0x5d01d1['push'](_0x5d01d1['shift']());}};_0x1526dd(++_0x511ae8);}(_0xb016,0x159));var _0x6b01=function(_0x15acda,_0x11dce7){_0x15acda=_0x15acda-0x0;var _0x5b5c7f=_0xb016[_0x15acda];return _0x5b5c7f;};'use strict';var moment=require(_0x6b01('0x0'));var BPromise=require(_0x6b01('0x1'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x6b01('0x2'));var squel=require('squel');var jayson=require(_0x6b01('0x3'));var Redis=require(_0x6b01('0x4'));var authService=require(_0x6b01('0x5'));var qs=require(_0x6b01('0x6'));var logger=require('../../config/logger')(_0x6b01('0x7'));var utils=require(_0x6b01('0x8'));var config=require(_0x6b01('0x9'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var socket=require(_0x6b01('0xa'))(new Redis(config[_0x6b01('0xb')]));require('./user.socket')['register'](socket);config[_0x6b01('0xb')]=_[_0x6b01('0xc')](config[_0x6b01('0xb')],{'host':_0x6b01('0xd'),'port':0x18eb});var client=jayson[_0x6b01('0xe')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x4b4a4d,_0x4627ef,_0x24049f,_0x2660c7){return new BPromise(function(_0x5a8817,_0x200614){var _0x5c54e4=_0x2660c7||client;return _0x5c54e4['request'](_0x4b4a4d,_0x24049f)[_0x6b01('0xf')](function(_0x4fa826){logger[_0x6b01('0x10')](_0x6b01('0x11'),_0x4627ef,'request\x20sent');logger[_0x6b01('0x12')]('User,\x20%s,\x20%s,\x20%s',_0x4627ef,'request\x20sent',JSON['stringify'](_0x4fa826));if(_0x4fa826[_0x6b01('0x13')]){if(_0x4fa826['error']['code']===0x1f4){logger[_0x6b01('0x13')](_0x6b01('0x11'),_0x4627ef,_0x4fa826[_0x6b01('0x13')][_0x6b01('0x14')]);return _0x200614(_0x4fa826[_0x6b01('0x13')][_0x6b01('0x14')]);}logger[_0x6b01('0x13')](_0x6b01('0x11'),_0x4627ef,_0x4fa826[_0x6b01('0x13')][_0x6b01('0x14')]);return _0x5a8817(_0x4fa826[_0x6b01('0x13')]['message']);}else{logger[_0x6b01('0x10')](_0x6b01('0x11'),_0x4627ef,_0x6b01('0x15'));_0x5a8817(_0x4fa826[_0x6b01('0x16')][_0x6b01('0x14')]);}})[_0x6b01('0x17')](function(_0x33753f){logger[_0x6b01('0x13')]('User,\x20%s,\x20%s',_0x4627ef,_0x33753f);_0x200614(_0x33753f);});});}function respondWithStatusCode(_0x3029e2,_0xc1f453){_0xc1f453=_0xc1f453||0xcc;return function(_0x424cd3){if(_0x424cd3){return _0x3029e2[_0x6b01('0x18')](_0xc1f453);}return _0x3029e2[_0x6b01('0x19')](_0xc1f453)[_0x6b01('0x1a')]();};}function respondWithResult(_0x2cea6e,_0x542fab){_0x542fab=_0x542fab||0xc8;return function(_0x7caa07){if(_0x7caa07){return _0x2cea6e[_0x6b01('0x19')](_0x542fab)[_0x6b01('0x1b')](_0x7caa07);}};}function respondWithFilteredResult(_0x51243c,_0x399808){return function(_0x70a1c0){if(_0x70a1c0){var _0x304393=typeof _0x399808[_0x6b01('0x1c')]===_0x6b01('0x1d')&&typeof _0x399808[_0x6b01('0x1e')]===_0x6b01('0x1d');var _0x136452=_0x70a1c0[_0x6b01('0x1f')];var _0x152dda=_0x304393?0x0:_0x399808[_0x6b01('0x1c')];var _0xa846d8=_0x304393?_0x70a1c0[_0x6b01('0x1f')]:_0x399808['offset']+_0x399808[_0x6b01('0x1e')];var _0x220efb;if(_0xa846d8>=_0x136452){_0xa846d8=_0x136452;_0x220efb=0xc8;}else{_0x220efb=0xce;}_0x51243c[_0x6b01('0x19')](_0x220efb);return _0x51243c[_0x6b01('0x20')](_0x6b01('0x21'),_0x152dda+'-'+_0xa846d8+'/'+_0x136452)['json'](_0x70a1c0);}return null;};}function saveUpdates(_0x54f030){return function(_0x3fae61){if(_0x3fae61){return _0x3fae61[_0x6b01('0x22')](_0x54f030)[_0x6b01('0xf')](function(_0x8883d1){return _0x8883d1;});}return null;};}function removeEntity(_0x2a894e){return function(_0x25d38d){if(_0x25d38d){return _0x25d38d['destroy']()[_0x6b01('0xf')](function(){var _0x5482a8=_0x25d38d[_0x6b01('0x23')]({'plain':!![]});if(_0x5482a8['role']===_0x6b01('0x24'))return;var _0xa6b2b6=[{'name':_0x6b01('0x25'),'value':_0x6b01('0x26'),'ignore':!![]},{'name':_0x6b01('0x27'),'value':'agent','ignore':![]},{'name':_0x6b01('0x28'),'value':_0x6b01('0x29'),'ignore':![]}];var _0x3bb4b1=_(_0xa6b2b6)['filter']('ignore')[_0x6b01('0x2a')]('value')[_0x6b01('0x2b')]();if(_[_0x6b01('0x2c')](_0x3bb4b1,_0x5482a8[_0x6b01('0x2d')])){return;}var _0x536641=_[_0x6b01('0x2e')](_0xa6b2b6,[_0x6b01('0x2b'),_0x5482a8[_0x6b01('0x2d')]])['name'];return db[_0x6b01('0x2f')][_0x6b01('0x30')]({'where':{'type':_0x536641,'resourceId':_0x5482a8['id']}})[_0x6b01('0xf')](function(){return _0x25d38d;});})[_0x6b01('0xf')](function(){_0x2a894e[_0x6b01('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa041ea){return function(_0x20ee6d){if(!_0x20ee6d){_0xa041ea[_0x6b01('0x18')](0x194);}return _0x20ee6d;};}function handleError(_0x5269c7,_0xce4545){_0xce4545=_0xce4545||0x1f4;return function(_0xc644f2){logger[_0x6b01('0x13')](_0xc644f2[_0x6b01('0x31')]);if(_0xc644f2['name']){delete _0xc644f2[_0x6b01('0x32')];}_0x5269c7['status'](_0xce4545)[_0x6b01('0x33')](_0xc644f2);};}exports[_0x6b01('0x34')]=function(_0x1baac5,_0x318b8b){var _0x167d08={},_0x457c93={'count':0x0,'rows':[]};var _0x3df1d8=_(db['User'][_0x6b01('0x35')])[_0x6b01('0x2a')](function(_0x2c3385){return{'name':_0x2c3385[_0x6b01('0x36')],'type':_0x2c3385[_0x6b01('0x37')][_0x6b01('0x38')]};})[_0x6b01('0x39')](function(_0x44bf46){return!_['includes']([_0x6b01('0x3a'),'salt'],_0x44bf46[_0x6b01('0x32')]);})[_0x6b01('0x2b')]();_0x167d08=qs['getOptions'](_0x3df1d8,_0x1baac5);var _0x37ae5d={'where':_0x167d08[_0x6b01('0x3b')]};return db[_0x6b01('0x3c')][_0x6b01('0x1f')](_0x37ae5d)[_0x6b01('0xf')](function(_0x33a9ea){_0x457c93[_0x6b01('0x1f')]=_0x33a9ea;if(_0x1baac5[_0x6b01('0x3d')][_0x6b01('0x3e')]){_0x167d08[_0x6b01('0x3f')]=[{'all':!![]}];}if(!_['includes'](_0x167d08[_0x6b01('0x40')],'id')){_0x167d08[_0x6b01('0x40')]['push']('id');}return db['User'][_0x6b01('0x41')](_0x167d08);})[_0x6b01('0xf')](function(_0x558ec1){_0x457c93[_0x6b01('0x42')]=_0x558ec1;if(_0x1baac5[_0x6b01('0x3d')]['openTabs']===_0x6b01('0x43')){var _0x5e6f28=[];for(var _0x2ab117=0x0;_0x2ab117<_0x457c93[_0x6b01('0x42')][_0x6b01('0x44')];_0x2ab117++){_0x5e6f28['push'](get_open_tabs(_0x6b01('0x45'),_0x457c93[_0x6b01('0x42')][_0x2ab117]['dataValues']));_0x5e6f28['push'](get_open_tabs('sms',_0x457c93[_0x6b01('0x42')][_0x2ab117][_0x6b01('0x46')]));_0x5e6f28[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x48'),_0x457c93[_0x6b01('0x42')][_0x2ab117][_0x6b01('0x46')]));_0x5e6f28['push'](get_open_tabs(_0x6b01('0x49'),_0x457c93[_0x6b01('0x42')][_0x2ab117][_0x6b01('0x46')]));_0x5e6f28[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x4a'),_0x457c93[_0x6b01('0x42')][_0x2ab117]['dataValues']));_0x5e6f28[_0x6b01('0x47')](get_open_tabs('whatsapp',_0x457c93['rows'][_0x2ab117][_0x6b01('0x46')]));}return BPromise[_0x6b01('0x4b')](_0x5e6f28)['then'](function(_0x408bb0){return _0x457c93;});}else{return _0x457c93;}})[_0x6b01('0xf')](respondWithFilteredResult(_0x318b8b,_0x167d08))[_0x6b01('0x17')](handleError(_0x318b8b,null));};exports['show']=function(_0x51eec0,_0x5545f6){var _0x24b860={'raw':![],'where':{'id':_0x51eec0['params']['id']}},_0x12160f={};_0x12160f[_0x6b01('0x4c')]=_['differenceBy'](_['keys'](db['User'][_0x6b01('0x35')]),[_0x6b01('0x3a'),'salt']);_0x12160f['query']=_[_0x6b01('0x4d')](_0x51eec0['query']);_0x12160f[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x12160f[_0x6b01('0x4c')],_0x12160f[_0x6b01('0x3d')]);_0x24b860[_0x6b01('0x40')]=_['intersection'](_0x12160f[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x51eec0[_0x6b01('0x3d')]['fields']));_0x24b860[_0x6b01('0x40')]=_0x24b860[_0x6b01('0x40')]['length']?_0x24b860[_0x6b01('0x40')]:_0x12160f[_0x6b01('0x4c')];if(_0x51eec0[_0x6b01('0x3d')][_0x6b01('0x3e')]){_0x24b860['include']=[{'all':!![]}];}_0x24b860=_['merge']({},_0x24b860,_0x51eec0[_0x6b01('0x51')]);if(!_['includes'](_0x24b860['attributes'],'id')){_0x24b860[_0x6b01('0x40')][_0x6b01('0x47')]('id');}return db['User'][_0x6b01('0x2e')](_0x24b860)[_0x6b01('0xf')](handleEntityNotFound(_0x5545f6,null))['then'](function(_0x1bd851){var _0x1ce46d=[];values=_0x1bd851;if(_0x51eec0[_0x6b01('0x3d')][_0x6b01('0x52')]===_0x6b01('0x43')){_0x1ce46d['push'](get_open_tabs(_0x6b01('0x45'),_0x1bd851['dataValues']));_0x1ce46d[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x53'),_0x1bd851[_0x6b01('0x46')]));_0x1ce46d['push'](get_open_tabs(_0x6b01('0x4a'),_0x1bd851[_0x6b01('0x46')]));_0x1ce46d[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x54'),_0x1bd851['dataValues']));_0x1ce46d[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x48'),_0x1bd851[_0x6b01('0x46')]));_0x1ce46d['push'](get_open_tabs('mail',_0x1bd851[_0x6b01('0x46')]));return BPromise[_0x6b01('0x4b')](_0x1ce46d);}else{return values;}})[_0x6b01('0xf')](function(_0x4e1702){return values;})[_0x6b01('0xf')](respondWithResult(_0x5545f6,null))[_0x6b01('0x17')](handleError(_0x5545f6,null));};exports[_0x6b01('0x22')]=function(_0x5459d5,_0x54b3ae){if(_0x5459d5[_0x6b01('0x55')]['id']){delete _0x5459d5[_0x6b01('0x55')]['id'];}delete _0x5459d5['body'][_0x6b01('0x2d')];return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x5459d5[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x54b3ae,null))[_0x6b01('0xf')](saveUpdates(_0x5459d5[_0x6b01('0x55')],null))[_0x6b01('0xf')](respondWithResult(_0x54b3ae,null))[_0x6b01('0x17')](handleError(_0x54b3ae,null));};exports['describe']=function(_0x2aa892,_0x204a9a){return db[_0x6b01('0x3c')][_0x6b01('0x57')]()[_0x6b01('0xf')](respondWithResult(_0x204a9a,null))[_0x6b01('0x17')](handleError(_0x204a9a,null));};exports[_0x6b01('0x58')]=function(_0x289294,_0x281e55){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x289294[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x281e55,null))[_0x6b01('0xf')](function(_0xef971f){if(_0xef971f){return _0xef971f[_0x6b01('0x58')](_0x289294['body']['ids'],_[_0x6b01('0x59')](_0x289294[_0x6b01('0x55')],[_0x6b01('0x5a'),'id'])||{});}})[_0x6b01('0xf')](respondWithResult(_0x281e55,null))[_0x6b01('0x17')](handleError(_0x281e55,null));};function validateUser(_0x41e8dc){return new BPromise(function(_0x59bf90,_0x2bd87d){if(_0x41e8dc[_0x6b01('0x5b')])return _0x59bf90(_0x41e8dc);return db[_0x6b01('0x5c')][_0x6b01('0x5d')](0x1)[_0x6b01('0xf')](function(_0xf31bfa){if(_0xf31bfa[_0x6b01('0x5e')])authService['validatePasswordPattern'](_0x41e8dc[_0x6b01('0x3a')]);db['User'][_0x6b01('0x5f')](_0x6b01('0x5b'))[_0x6b01('0xf')](function(_0x48bfcd){if(_[_0x6b01('0x60')](_0x48bfcd)){_0x41e8dc[_0x6b01('0x5b')]=_0xf31bfa[_0x6b01('0x61')]||0x1;return;}if(_[_0x6b01('0x60')](_0xf31bfa[_0x6b01('0x61')])||_0xf31bfa[_0x6b01('0x61')]===_0x48bfcd){_0x41e8dc[_0x6b01('0x5b')]=_0x48bfcd+0x1;return;}if(_0xf31bfa[_0x6b01('0x61')]>_0x48bfcd){_0x41e8dc[_0x6b01('0x5b')]=_0xf31bfa[_0x6b01('0x61')];return;}return db[_0x6b01('0x62')][_0x6b01('0x3d')](_0x6b01('0x63'),{'type':db[_0x6b01('0x62')][_0x6b01('0x64')][_0x6b01('0x65')]})[_0x6b01('0xf')](function(_0x3f077f){if(_0x3f077f&&_0x3f077f[_0x6b01('0x44')]){for(var _0x4a8fcb=0x0,_0x27526f=_0x3f077f[_0x6b01('0x44')];_0x4a8fcb<_0x27526f&&_[_0x6b01('0x60')](_0x41e8dc[_0x6b01('0x5b')]);_0x4a8fcb++){if(_0xf31bfa[_0x6b01('0x61')]<=_0x3f077f[_0x4a8fcb][_0x6b01('0x66')]){_0x41e8dc[_0x6b01('0x5b')]=_0x3f077f[_0x4a8fcb][_0x6b01('0x66')];}else if(_0xf31bfa[_0x6b01('0x61')]>_0x3f077f[_0x4a8fcb][_0x6b01('0x66')]&&_0xf31bfa[_0x6b01('0x61')]<=_0x3f077f[_0x4a8fcb]['to']){_0x41e8dc[_0x6b01('0x5b')]=_0xf31bfa[_0x6b01('0x61')];}}}if(_[_0x6b01('0x60')](_0x41e8dc[_0x6b01('0x5b')])){_0x41e8dc['internal']=_0x48bfcd+0x1;}return _0x59bf90(_0x41e8dc);});});})[_0x6b01('0x17')](function(_0x2d42ec){_0x2bd87d(_0x2d42ec);});});}function updateUser(_0x19a6d9){return new BPromise(function(_0x3ec668,_0x191348){try{if(_0x19a6d9[_0x6b01('0x67')]){_0x19a6d9[_0x6b01('0x68')]=_0x19a6d9[_0x6b01('0x5b')];_0x19a6d9[_0x6b01('0x69')]={'mailbox':_0x19a6d9[_0x6b01('0x5b')],'password':_0x19a6d9[_0x6b01('0x3a')],'fullname':_0x19a6d9[_0x6b01('0x6a')],'email':_0x19a6d9[_0x6b01('0x6b')]};}if(_0x19a6d9[_0x6b01('0x2d')]===_0x6b01('0x6c')){if(!_0x19a6d9[_0x6b01('0x6d')])_0x19a6d9[_0x6b01('0x6d')]=[_0x6b01('0x6e'),_0x6b01('0x6f'),_0x6b01('0x70'),'113','110','104','105',_0x6b01('0x71'),'107','108','109',_0x6b01('0x72'),'111',_0x6b01('0x73'),_0x6b01('0x74')];}_0x3ec668(_0x19a6d9);}catch(_0x44ac98){_0x191348(_0x44ac98);}});}exports[_0x6b01('0x75')]=function(_0x3bd5d3,_0x59f807){if(_0x3bd5d3['user'][_0x6b01('0x2d')]===_0x6b01('0x6c'))throw new Error(_0x6b01('0x76'));if(_0x3bd5d3['body'][_0x6b01('0x2d')]===_0x6b01('0x26')&&_0x3bd5d3[_0x6b01('0x26')][_0x6b01('0x2d')]!==_0x6b01('0x24')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x3bd5d3[_0x6b01('0x55')]['role']===_0x6b01('0x24')&&_0x3bd5d3[_0x6b01('0x26')][_0x6b01('0x2d')]!==_0x6b01('0x24')){throw new Error(_0x6b01('0x77'));}return licenseUtil['checkUserLimits']([_0x3bd5d3[_0x6b01('0x55')]])[_0x6b01('0xf')](function(){return validateUser(_0x3bd5d3[_0x6b01('0x55')]);})[_0x6b01('0xf')](function(_0x4dbd69){return updateUser(_0x4dbd69)[_0x6b01('0xf')](function(_0x27c738){if(_0x27c738[_0x6b01('0x2d')]===_0x6b01('0x24')){_0x27c738[_0x6b01('0x78')]=_0x3bd5d3[_0x6b01('0x26')]['settingsEnabled'];delete _0x27c738['userProfileId'];}return _0x27c738;});})['then'](function(_0x16fa3b){return db[_0x6b01('0x3c')]['create'](_0x16fa3b,{'include':[{'model':db[_0x6b01('0x69')],'as':_0x6b01('0x69')}]});})[_0x6b01('0xf')](function(_0x2c2c1c){if(_0x3bd5d3['body'][_0x6b01('0x2d')]==='user')return _0x2c2c1c;if(_0x3bd5d3[_0x6b01('0x26')]['role']!==_0x6b01('0x26'))return _0x2c2c1c;return db['UserProfileSection'][_0x6b01('0x2e')]({'where':{'name':_0x2c2c1c[_0x6b01('0x2d')]===_0x6b01('0x6c')?_0x6b01('0x27'):_0x6b01('0x28'),'userProfileId':_0x3bd5d3[_0x6b01('0x26')][_0x6b01('0x79')]},'raw':!![]})['then'](function(_0xc8f10){if(!_0xc8f10||_0xc8f10['autoAssociation']!=0x0)return _0x2c2c1c;return db[_0x6b01('0x2f')][_0x6b01('0x75')]({'name':_0x2c2c1c[_0x6b01('0x32')],'resourceId':_0x2c2c1c['id'],'type':_0xc8f10[_0x6b01('0x32')],'sectionId':_0xc8f10['id']},{})[_0x6b01('0xf')](function(){return _0x2c2c1c;});})[_0x6b01('0x17')](function(_0x30ac0c){logger[_0x6b01('0x13')](_0x6b01('0x7a'),_0x30ac0c);throw _0x30ac0c;});})[_0x6b01('0xf')](respondWithResult(_0x59f807,0xc9))[_0x6b01('0x17')](handleError(_0x59f807,null));};exports['bulkCreate']=function(_0x1e9300,_0x4091a8){var _0x197c8d=_0x1e9300[_0x6b01('0x55')];var _0x5ac0b6=[];if(_0x1e9300[_0x6b01('0x26')][_0x6b01('0x2d')]===_0x6b01('0x6c'))throw new Error(_0x6b01('0x76'));if(_[_0x6b01('0x7b')](_0x197c8d,['role',_0x6b01('0x26')])&&_0x1e9300['user'][_0x6b01('0x2d')]!==_0x6b01('0x24')){throw new Error(_0x6b01('0x7c'));}if(_[_0x6b01('0x7b')](_0x197c8d,[_0x6b01('0x2d'),_0x6b01('0x24')])&&_0x1e9300[_0x6b01('0x26')][_0x6b01('0x2d')]!==_0x6b01('0x24')){throw new Error(_0x6b01('0x7d'));}return licenseUtil[_0x6b01('0x7e')](_0x197c8d)[_0x6b01('0xf')](function(){return validateUser(_0x197c8d[0x0]);})[_0x6b01('0xf')](function(){for(var _0x748219=0x1;_0x748219<_0x197c8d['length'];_0x748219++){var _0x2f180=_0x197c8d[_0x748219-0x1]['internal'];if(!_0x197c8d[_0x748219]['internal'])_0x197c8d[_0x748219][_0x6b01('0x5b')]=_0x2f180+0x1;_0x5ac0b6[_0x6b01('0x47')](validateUser(_0x197c8d[_0x748219]));}return BPromise[_0x6b01('0x4b')](_0x5ac0b6);})[_0x6b01('0xf')](function(){_0x5ac0b6=[];for(var _0x5dc77c=0x0;_0x5dc77c<_0x197c8d[_0x6b01('0x44')];_0x5dc77c++){_0x5ac0b6[_0x6b01('0x47')](updateUser(_0x197c8d[_0x5dc77c]));}return BPromise[_0x6b01('0x4b')](_0x5ac0b6);})['then'](function(){return BPromise[_0x6b01('0x7f')](_0x197c8d,function(_0x327f31){return db[_0x6b01('0x3c')][_0x6b01('0x75')](_0x327f31,{'include':[{'model':db[_0x6b01('0x69')],'as':_0x6b01('0x69')}]})[_0x6b01('0xf')](function(_0x21b294){_0x327f31['id']=_0x21b294['id'];return _0x327f31;});});})['then'](function(_0x135aeb){if(_0x1e9300[_0x6b01('0x55')][_0x6b01('0x2d')]===_0x6b01('0x26'))return _0x135aeb;if(_0x1e9300['user']['role']!==_0x6b01('0x26'))return _0x135aeb;var _0x191fc0=_[_0x6b01('0x7b')](_0x135aeb,function(_0xcd8de3){return _0xcd8de3[_0x6b01('0x2d')]===_0x6b01('0x6c')||_0xcd8de3[_0x6b01('0x2d')]===_0x6b01('0x29');});if(!_0x191fc0)return _0x135aeb;return db['UserProfileSection'][_0x6b01('0x41')]({'where':{'name':{'$or':[_0x6b01('0x27'),_0x6b01('0x28')]},'userProfileId':_0x1e9300[_0x6b01('0x26')][_0x6b01('0x79')]},'raw':!![]})[_0x6b01('0xf')](function(_0x188010){if(_['isEmpty'](_0x188010)||!_[_0x6b01('0x7b')](_0x188010,['autoAssociation',0x0]))return _0x135aeb;_0x5ac0b6=[];var _0xe9de3b=_(_0x188010)[_0x6b01('0x2a')](function(_0x16f234){if(_0x16f234[_0x6b01('0x80')]===0x1)return;return _0x16f234[_0x6b01('0x32')]==='Agents'?_0x6b01('0x6c'):'telephone';})[_0x6b01('0x81')]()[_0x6b01('0x2b')]();for(var _0x59141e=0x0;_0x59141e<_0x135aeb[_0x6b01('0x44')];_0x59141e++){if(!_[_0x6b01('0x2c')](_0xe9de3b,_0x135aeb[_0x59141e][_0x6b01('0x2d')]))return;var _0x2cc3eb=_0x135aeb[_0x59141e][_0x6b01('0x2d')]==='agent'?'Agents':_0x6b01('0x28');_0x5ac0b6[_0x6b01('0x47')](db[_0x6b01('0x2f')][_0x6b01('0x75')]({'name':_0x135aeb[_0x59141e][_0x6b01('0x32')],'resourceId':_0x135aeb[_0x59141e]['id'],'type':_0x2cc3eb,'sectionId':_[_0x6b01('0x2e')](_0x188010,[_0x6b01('0x32'),_0x2cc3eb])['id']},{}));}return BPromise[_0x6b01('0x4b')](_0x5ac0b6);});})[_0x6b01('0xf')](respondWithResult(_0x4091a8,0xc9))['catch'](handleError(_0x4091a8,null));};exports[_0x6b01('0x82')]=function(_0x5ee5ed,_0x7ac756){if(_0x5ee5ed['body']['id']){delete _0x5ee5ed[_0x6b01('0x55')]['id'];}return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x5ee5ed['params']['id']}})[_0x6b01('0xf')](function(_0xa9cd5f){if(!_0xa9cd5f)return null;if(_0xa9cd5f['id']===_0x5ee5ed[_0x6b01('0x26')]['id']){if(!_0x5ee5ed['body'][_0x6b01('0x83')]||!_0x5ee5ed[_0x6b01('0x55')]['newPassword']){throw new db[(_0x6b01('0x84'))]['ValidationError']('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0xa9cd5f[_0x6b01('0x85')](_0x5ee5ed[_0x6b01('0x55')]['oldPassword'])){throw new db['Sequelize'][(_0x6b01('0x86'))]('Wrong\x20credentials');}if(_0x5ee5ed['body'][_0x6b01('0x83')]===_0x5ee5ed['body'][_0x6b01('0x87')]){throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x88'));}}else if(_0x5ee5ed[_0x6b01('0x26')][_0x6b01('0x2d')]===_0x6b01('0x24')){if(!_0x5ee5ed[_0x6b01('0x55')][_0x6b01('0x87')]){throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x89'));}}else if(_0x5ee5ed[_0x6b01('0x26')][_0x6b01('0x2d')]===_0x6b01('0x26')){if(!_0x5ee5ed[_0x6b01('0x55')][_0x6b01('0x87')]){throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x89'));}if(_0xa9cd5f[_0x6b01('0x2d')]!=='agent'){throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x76'));}}else{throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x76'));}return _0xa9cd5f;})[_0x6b01('0xf')](handleEntityNotFound(_0x7ac756,null))[_0x6b01('0xf')](function(_0x5736fe){return db[_0x6b01('0x5c')][_0x6b01('0x8a')]({'attributes':['id','securePassword',_0x6b01('0x8b'),_0x6b01('0x8c')]})[_0x6b01('0xf')](function(_0x51f42e){if(_0x51f42e[_0x6b01('0x5e')])authService[_0x6b01('0x8d')](_0x5ee5ed[_0x6b01('0x55')][_0x6b01('0x87')]);if(!_0x51f42e['enforcePasswordHistory']||!_0x5736fe['previousPasswords'])return _0x5736fe;authService[_0x6b01('0x8e')](_0x5ee5ed[_0x6b01('0x55')]['newPassword'],_0x5736fe[_0x6b01('0x8f')],_0x51f42e[_0x6b01('0x8c')]);return _0x5736fe;})[_0x6b01('0xf')](saveUpdates({'password':_0x5ee5ed[_0x6b01('0x55')][_0x6b01('0x87')],'passwordResetAt':_0x5ee5ed[_0x6b01('0x26')]['id']==_0x5ee5ed['params']['id']?moment():null,'previousPasswords':authService[_0x6b01('0x90')](_0x5ee5ed[_0x6b01('0x55')][_0x6b01('0x87')],_0x5736fe[_0x6b01('0x8f')])},null));})[_0x6b01('0xf')](respondWithResult(_0x7ac756,null))[_0x6b01('0x17')](handleError(_0x7ac756,null));};exports['addQueues']=function(_0x471015,_0x3db037){var _0x59cdd1=_0x471015[_0x6b01('0x55')][_0x6b01('0x91')];return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x471015[_0x6b01('0x56')]['id']},'attributes':['id','name',_0x6b01('0x2d'),_0x6b01('0x92'),_0x6b01('0x93'),_0x6b01('0x94'),_0x6b01('0x95')]})[_0x6b01('0xf')](handleEntityNotFound(_0x3db037,null))[_0x6b01('0xf')](function(_0x19167c){if(_0x19167c){if(!utils[_0x6b01('0x96')](_0x59cdd1)){throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x97'));}return _0x19167c[_0x6b01('0x98')+_[_0x6b01('0x99')](_0x59cdd1[_0x6b01('0x9a')]())+'Queues'](_0x471015[_0x6b01('0x55')][_0x6b01('0x5a')],{'penalty':_0x471015[_0x6b01('0x55')]['penalty']||0x0})[_0x6b01('0x9b')](function(_0x2877ea){for(var _0x424865=0x0;_0x424865<_0x471015[_0x6b01('0x55')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x424865+=0x1){var _0x4ade00={'UserId':Number(_0x471015['params']['id'])};_0x4ade00[_['capitalize'](_0x59cdd1['toLowerCase']())+_0x6b01('0x9c')]=Number(_0x471015[_0x6b01('0x55')][_0x6b01('0x5a')][_0x424865]);socket['emit'](_0x6b01('0x26')+_['capitalize'](_0x59cdd1[_0x6b01('0x9a')]())+'Queue:save',_0x4ade00);}return _0x2877ea;})[_0x6b01('0xf')](function(){if(_0x59cdd1===_0x6b01('0x9d')){return db[_0x6b01('0x9e')][_0x6b01('0x41')]({'where':{'id':_0x471015[_0x6b01('0x55')][_0x6b01('0x5a')]||[]},'raw':!![],'attributes':['id',_0x6b01('0x32')]});}})[_0x6b01('0xf')](function(_0x353f84){var _0x4ad87a=_0x19167c['get']({'plain':!![]});var _0x40aaaa=[];if(_0x59cdd1===_0x6b01('0x9d')&&_0x4ad87a[_0x6b01('0x2d')]==='agent'&&_0x4ad87a['online']){for(var _0x446b91=0x0;_0x446b91<_0x353f84['length'];_0x446b91+=0x1){_0x40aaaa[_0x6b01('0x47')]({'membername':_0x4ad87a[_0x6b01('0x32')],'UserId':_0x4ad87a['id'],'queue_name':_0x353f84[_0x446b91][_0x6b01('0x32')],'VoiceQueueId':_0x353f84[_0x446b91]['id'],'interface':_[_0x6b01('0x60')](_0x4ad87a[_0x6b01('0x95')])?util[_0x6b01('0x9f')](_0x6b01('0xa0'),_0x4ad87a[_0x6b01('0x32')]):_0x4ad87a[_0x6b01('0x95')],'paused':_0x4ad87a[_0x6b01('0x94')]||![],'penalty':_0x471015[_0x6b01('0x55')]['penalty']||0x0});}return BPromise[_0x6b01('0x7f')](_0x40aaaa,function(_0x52d6b4){return db['UserVoiceQueueRt']['upsert'](_0x52d6b4);});}return _0x19167c;});}})[_0x6b01('0xf')](respondWithStatusCode(_0x3db037,null))['catch'](handleError(_0x3db037,null));};exports[_0x6b01('0xa1')]=function(_0x33b13f,_0x3a8609){var _0x26aa9b;return db[_0x6b01('0x3c')]['find']({'where':{'id':_0x33b13f[_0x6b01('0x56')]['id']},'attributes':['id',_0x6b01('0x32'),_0x6b01('0x2d')]})[_0x6b01('0xf')](handleEntityNotFound(_0x3a8609,null))[_0x6b01('0xf')](function(_0x14df77){if(_0x14df77){_0x26aa9b=_0x14df77;if(!_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x91')]||!utils[_0x6b01('0x96')](_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x91')])){throw new db['Sequelize'][(_0x6b01('0x86'))]('Unknown\x20channel');}return _0x14df77[_0x6b01('0xa2')+_['capitalize'](_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x91')]['toLowerCase']())+'Queues'](_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})['then'](function(_0x34adde){if(_[_0x6b01('0xa3')](_0x33b13f[_0x6b01('0x3d')]['ids'])){for(var _0x5a7af0=0x0;_0x5a7af0<_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x5a7af0+=0x1){var _0x293fc0={'UserId':Number(_0x33b13f['params']['id'])};_0x293fc0[_[_0x6b01('0x99')](_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x91')][_0x6b01('0x9a')]())+'QueueId']=Number(_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x5a')][_0x5a7af0]);socket[_0x6b01('0xa4')](_0x6b01('0x26')+_[_0x6b01('0x99')](_0x33b13f[_0x6b01('0x3d')]['channel']['toLowerCase']())+'Queue:remove',_0x293fc0);}}else{var _0x293fc0={'UserId':Number(_0x33b13f['params']['id'])};_0x293fc0[_[_0x6b01('0x99')](_0x33b13f[_0x6b01('0x3d')]['channel'][_0x6b01('0x9a')]())+_0x6b01('0x9c')]=Number(_0x33b13f['query'][_0x6b01('0x5a')]);socket['emit']('user'+_['capitalize'](_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x91')][_0x6b01('0x9a')]())+_0x6b01('0xa5'),_0x293fc0);}return _0x34adde;})['then'](function(){if(_0x33b13f['query'][_0x6b01('0x91')]===_0x6b01('0x9d')){return db[_0x6b01('0xa6')][_0x6b01('0x30')]({'where':{'UserId':_0x33b13f['params']['id'],'VoiceQueueId':_0x33b13f[_0x6b01('0x3d')][_0x6b01('0x5a')]},'individualHooks':!![]})[_0x6b01('0xf')](function(){return _0x26aa9b;});}return _0x26aa9b;})[_0x6b01('0xf')](respondWithStatusCode(_0x3a8609,null))[_0x6b01('0x17')](handleError(_0x3a8609,null));};exports['addAvatar']=function(_0x5175a7,_0x490a27){_0x5175a7['body'][_0x6b01('0xa7')]=_0x5175a7[_0x6b01('0xa8')][_0x6b01('0xa9')];return db[_0x6b01('0x3c')]['find']({'where':{'id':_0x5175a7[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x490a27,null))[_0x6b01('0xf')](saveUpdates(_0x5175a7[_0x6b01('0x55')],null))[_0x6b01('0xf')](respondWithResult(_0x490a27,null))[_0x6b01('0x17')](handleError(_0x490a27,null));};exports['getAvatar']=function(_0x1b8867,_0x7e66c2){var _0x141cfc=path[_0x6b01('0xaa')](config[_0x6b01('0xab')],'server/files/images/logos/default_profile.png');return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x1b8867[_0x6b01('0x56')]['id']},'attributes':['id',_0x6b01('0xa7')],'raw':!![]})[_0x6b01('0xf')](handleEntityNotFound(_0x7e66c2,null))['then'](function(_0x34b8b4){if(_0x34b8b4){if(_[_0x6b01('0x60')](_0x34b8b4[_0x6b01('0xa7')])){return _0x7e66c2[_0x6b01('0xac')](_0x141cfc);}else{if(!fs[_0x6b01('0xad')](path['join'](config[_0x6b01('0xab')],'server/files/images/',_0x34b8b4[_0x6b01('0xa7')]))){return _0x7e66c2[_0x6b01('0xac')](_0x141cfc);}return _0x7e66c2['download'](path[_0x6b01('0xaa')](config[_0x6b01('0xab')],_0x6b01('0xae'),_0x34b8b4[_0x6b01('0xa7')]));}}})['catch'](handleError(_0x7e66c2,null));};exports[_0x6b01('0xaf')]=function(_0x2dcae8,_0x5bab46){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x2dcae8[_0x6b01('0x56')]['id']},'attributes':['id']})[_0x6b01('0xf')](handleEntityNotFound(_0x5bab46,null))[_0x6b01('0xf')](function(_0x45f78f){var _0x463454=[];values=_0x45f78f[_0x6b01('0x46')];_0x463454[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x45'),_0x45f78f[_0x6b01('0x46')]));_0x463454[_0x6b01('0x47')](get_open_tabs('sms',_0x45f78f[_0x6b01('0x46')]));_0x463454[_0x6b01('0x47')](get_open_tabs('openchannel',_0x45f78f[_0x6b01('0x46')]));_0x463454['push'](get_open_tabs('whatsapp',_0x45f78f[_0x6b01('0x46')]));_0x463454[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x48'),_0x45f78f[_0x6b01('0x46')]));_0x463454[_0x6b01('0x47')](get_open_tabs(_0x6b01('0x49'),_0x45f78f['dataValues']));return BPromise[_0x6b01('0x4b')](_0x463454);})['then'](function(_0x1b2744){var _0x24d53f=[];if(_0x1b2744){for(var _0x3f782a=0x0;_0x3f782a<values[_0x6b01('0xb0')][_0x6b01('0x44')];_0x3f782a++){var _0x3ebed7=values[_0x6b01('0xb0')][_0x3f782a];_0x24d53f[_0x6b01('0x47')]({'channel':_0x6b01('0xb1'),'id':_0x3ebed7['id'],'createdAt':_0x3ebed7['createdAt']});}for(var _0x3f782a=0x0;_0x3f782a<values['FaxOpenTabs'][_0x6b01('0x44')];_0x3f782a++){var _0x3ebed7=values[_0x6b01('0xb2')][_0x3f782a];_0x24d53f[_0x6b01('0x47')]({'channel':_0x6b01('0xb3'),'id':_0x3ebed7['id'],'createdAt':_0x3ebed7['createdAt']});}for(var _0x3f782a=0x0;_0x3f782a<values[_0x6b01('0xb4')][_0x6b01('0x44')];_0x3f782a++){var _0x3ebed7=values[_0x6b01('0xb4')][_0x3f782a];_0x24d53f[_0x6b01('0x47')]({'channel':_0x6b01('0xb5'),'id':_0x3ebed7['id'],'createdAt':_0x3ebed7[_0x6b01('0xb6')]});}for(var _0x3f782a=0x0;_0x3f782a<values[_0x6b01('0xb7')][_0x6b01('0x44')];_0x3f782a++){var _0x3ebed7=values[_0x6b01('0xb7')][_0x3f782a];_0x24d53f[_0x6b01('0x47')]({'channel':'MAIL','id':_0x3ebed7['id'],'createdAt':_0x3ebed7[_0x6b01('0xb6')]});}for(var _0x3f782a=0x0;_0x3f782a<values[_0x6b01('0xb8')][_0x6b01('0x44')];_0x3f782a++){var _0x3ebed7=values[_0x6b01('0xb8')][_0x3f782a];_0x24d53f[_0x6b01('0x47')]({'channel':_0x6b01('0xb9'),'id':_0x3ebed7['id'],'createdAt':_0x3ebed7[_0x6b01('0xb6')]});}for(var _0x3f782a=0x0;_0x3f782a<values['WhatsappOpenTabs'][_0x6b01('0x44')];_0x3f782a++){var _0x3ebed7=values[_0x6b01('0xba')][_0x3f782a];_0x24d53f[_0x6b01('0x47')]({'channel':_0x6b01('0xbb'),'id':_0x3ebed7['id'],'createdAt':_0x3ebed7[_0x6b01('0xb6')]});}var _0x4c8fa2={'count':_0x24d53f['length'],'rows':_0x24d53f};return _0x4c8fa2;}else return null;})[_0x6b01('0xf')](respondWithResult(_0x5bab46,null))['catch'](handleError(_0x5bab46,null));};exports['getContacts']=function(_0x33af83,_0x16f282){var _0x50e989={};var _0x4fb4b0={};var _0x116fe2;var _0x50dfe8;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x33af83['params']['id']}})['then'](handleEntityNotFound(_0x16f282,null))[_0x6b01('0xf')](function(_0x429a72){if(_0x429a72){_0x116fe2=_0x429a72;_0x4fb4b0['model']=_[_0x6b01('0x4d')](db[_0x6b01('0xbc')]['rawAttributes']);_0x4fb4b0['query']=_[_0x6b01('0x4d')](_0x33af83['query']);_0x4fb4b0[_0x6b01('0x4e')]=_['intersection'](_0x4fb4b0[_0x6b01('0x4c')],_0x4fb4b0[_0x6b01('0x3d')]);_0x50e989[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x4fb4b0[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x33af83['query'][_0x6b01('0x50')]));_0x50e989[_0x6b01('0x40')]=_0x50e989[_0x6b01('0x40')][_0x6b01('0x44')]?_0x50e989['attributes']:_0x4fb4b0['model'];_0x50e989['order']=qs[_0x6b01('0xbd')](_0x33af83[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x50e989['where']=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x33af83[_0x6b01('0x3d')],_0x4fb4b0[_0x6b01('0x4e')]));if(_0x33af83[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x50e989[_0x6b01('0x3b')]=_['merge'](_0x50e989[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x50e989['attributes'],function(_0x40d4b1){var _0x4ff689={};_0x4ff689[_0x40d4b1]={'$like':'%'+_0x33af83[_0x6b01('0x3d')]['filter']+'%'};return _0x4ff689;})});}_0x50e989=_[_0x6b01('0xbf')]({},_0x50e989,_0x33af83[_0x6b01('0x51')]);return _0x116fe2['getContacts'](_0x50e989);}})['then'](function(_0x5315e5){if(_0x5315e5){_0x50dfe8=_0x5315e5['length'];if(_0x33af83[_0x6b01('0x3d')][_0x6b01('0xc0')](_0x6b01('0x3e'))){_0x50e989['include']=[{'model':db[_0x6b01('0xc1')],'as':'List','required':![]},{'model':db['Tag'],'as':_0x6b01('0xc2'),'attributes':['id',_0x6b01('0x32'),_0x6b01('0xc3')],'where':_0x33af83[_0x6b01('0x3d')][_0x6b01('0xc4')]?{'id':_0x33af83[_0x6b01('0x3d')]['tag']}:undefined,'required':_0x33af83[_0x6b01('0x3d')][_0x6b01('0xc4')]?!![]:![]}];}if(!_0x33af83[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x50e989[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x33af83[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x50e989['offset']=qs[_0x6b01('0x1c')](_0x33af83[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x116fe2[_0x6b01('0xc6')](_0x50e989);}})[_0x6b01('0xf')](function(_0x2ac926){if(_0x2ac926){return _0x2ac926?{'count':_0x50dfe8,'rows':_0x2ac926}:null;}})['then'](respondWithResult(_0x16f282,null))[_0x6b01('0x17')](handleError(_0x16f282,null));};exports['getQueues']=function(_0x190fe0,_0xf3f67f){var _0x208578;var _0x372e33;var _0x2ab981={};var _0x13d3a1;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x190fe0['params']['id']},'attributes':['id',_0x6b01('0x32'),_0x6b01('0x2d')]})['then'](handleEntityNotFound(_0xf3f67f,null))[_0x6b01('0xf')](function(_0x3a8afa){if(!utils[_0x6b01('0x96')](_0x190fe0['query'][_0x6b01('0x91')])){throw new db[(_0x6b01('0x84'))]['ValidationError'](_0x6b01('0x97'));}_0x208578=_0x3a8afa;var _0x268688={};_0x268688[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_[_0x6b01('0x99')](_0x190fe0['query'][_0x6b01('0x91')])+'Queue']['rawAttributes']);_0x268688['query']=_[_0x6b01('0x4d')](_0x190fe0['query']);_0x268688[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x268688[_0x6b01('0x4c')],_0x268688[_0x6b01('0x3d')]);_0x2ab981[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x268688[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x190fe0[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x2ab981[_0x6b01('0x40')]=_0x2ab981[_0x6b01('0x40')][_0x6b01('0x44')]?_0x2ab981[_0x6b01('0x40')]:_0x268688[_0x6b01('0x4c')];_0x2ab981[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x190fe0[_0x6b01('0x3d')]['sort']);_0x2ab981[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x190fe0[_0x6b01('0x3d')],_0x268688[_0x6b01('0x4e')]));if(_0x190fe0[_0x6b01('0x3d')]['filter']){_0x2ab981['where']=_['merge'](_0x2ab981[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x2ab981['attributes'],function(_0x2f8fff){var _0x47d66d={};_0x47d66d[_0x2f8fff]={'$like':'%'+_0x190fe0[_0x6b01('0x3d')]['filter']+'%'};return _0x47d66d;})});}_0x2ab981=_['merge']({},_0x2ab981,_0x190fe0['options']);switch(_0x208578[_0x6b01('0x2d')]){case _0x6b01('0x24'):return db[_['capitalize'](_0x190fe0['query'][_0x6b01('0x91')])+_0x6b01('0xc8')][_0x6b01('0x41')](_0x2ab981);case _0x6b01('0x26'):case'agent':return _0x208578[_0x6b01('0x23')+_[_0x6b01('0x99')](_0x190fe0[_0x6b01('0x3d')][_0x6b01('0x91')])+_0x6b01('0xc9')](_0x2ab981);default:throw new db['Sequelize'][(_0x6b01('0x86'))](_0x6b01('0xca'));}})[_0x6b01('0xf')](function(_0x44ca62){_0x13d3a1=_0x44ca62[_0x6b01('0x44')];if(!_0x190fe0[_0x6b01('0x3d')][_0x6b01('0xc0')](_0x6b01('0xc5'))){_0x2ab981[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x190fe0[_0x6b01('0x3d')]['limit']);_0x2ab981['offset']=qs[_0x6b01('0x1c')](_0x190fe0['query'][_0x6b01('0x1c')]);}switch(_0x208578[_0x6b01('0x2d')]){case _0x6b01('0x24'):return db[_[_0x6b01('0x99')](_0x190fe0[_0x6b01('0x3d')][_0x6b01('0x91')])+_0x6b01('0xc8')]['findAll'](_0x2ab981);case _0x6b01('0x26'):case _0x6b01('0x6c'):return _0x208578[_0x6b01('0x23')+_[_0x6b01('0x99')](_0x190fe0[_0x6b01('0x3d')][_0x6b01('0x91')])+_0x6b01('0xc9')](_0x2ab981);}})[_0x6b01('0xf')](function(_0x51df93){return{'count':_0x13d3a1,'rows':_0x51df93};})[_0x6b01('0xf')](respondWithResult(_0xf3f67f,null))['catch'](handleError(_0xf3f67f,null));};exports['getVoiceQueuesRt']=function(_0x42f5b2,_0xc2d596){var _0x579eef={};var _0x48ccea={};var _0x1fae57;var _0x1f446d;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x42f5b2[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0xc2d596,null))[_0x6b01('0xf')](function(_0x71796b){if(_0x71796b){_0x1fae57=_0x71796b;_0x48ccea[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db['UserVoiceQueueRt'][_0x6b01('0x35')]);_0x48ccea[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x42f5b2[_0x6b01('0x3d')]);_0x48ccea[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x48ccea[_0x6b01('0x4c')],_0x48ccea[_0x6b01('0x3d')]);_0x579eef[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x48ccea['model'],qs[_0x6b01('0x50')](_0x42f5b2[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x579eef['attributes']=_0x579eef[_0x6b01('0x40')][_0x6b01('0x44')]?_0x579eef[_0x6b01('0x40')]:_0x48ccea['model'];_0x579eef[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x42f5b2['query'][_0x6b01('0xbd')]);_0x579eef[_0x6b01('0x3b')]=qs['filters'](_[_0x6b01('0xbe')](_0x42f5b2[_0x6b01('0x3d')],_0x48ccea[_0x6b01('0x4e')]));if(_0x42f5b2[_0x6b01('0x3d')]['filter']){_0x579eef['where']=_['merge'](_0x579eef[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x579eef[_0x6b01('0x40')],function(_0x27e22f){var _0x32d70b={};_0x32d70b[_0x27e22f]={'$like':'%'+_0x42f5b2[_0x6b01('0x3d')]['filter']+'%'};return _0x32d70b;})});}_0x579eef=_[_0x6b01('0xbf')]({},_0x579eef,_0x42f5b2[_0x6b01('0x51')]);return _0x1fae57[_0x6b01('0xcb')](_0x579eef);}})[_0x6b01('0xf')](function(_0x40a8cd){if(_0x40a8cd){_0x1f446d=_0x40a8cd['length'];if(!_0x42f5b2[_0x6b01('0x3d')][_0x6b01('0xc0')](_0x6b01('0xc5'))){_0x579eef['limit']=qs['limit'](_0x42f5b2[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x579eef[_0x6b01('0x1c')]=qs['offset'](_0x42f5b2['query'][_0x6b01('0x1c')]);}return _0x1fae57[_0x6b01('0xcb')](_0x579eef);}})[_0x6b01('0xf')](function(_0x101150){if(_0x101150){return _0x101150?{'count':_0x1f446d,'rows':_0x101150}:null;}})[_0x6b01('0xf')](respondWithResult(_0xc2d596,null))[_0x6b01('0x17')](handleError(_0xc2d596,null));};exports[_0x6b01('0xcc')]=function(_0x32bf17,_0x5dc56b){var _0x25654a={};var _0x4922ba={};var _0x475e73;var _0x53e745;return db['User']['findOne']({'where':{'id':_0x32bf17['params']['id']}})['then'](handleEntityNotFound(_0x5dc56b,null))['then'](function(_0x1fb150){if(_0x1fb150){_0x475e73=_0x1fb150;_0x4922ba[_0x6b01('0x4c')]=_['keys'](db[_0x6b01('0xcd')][_0x6b01('0x35')]);_0x4922ba[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x32bf17[_0x6b01('0x3d')]);_0x4922ba[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x4922ba[_0x6b01('0x4c')],_0x4922ba[_0x6b01('0x3d')]);_0x25654a[_0x6b01('0x40')]=_['intersection'](_0x4922ba[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x32bf17[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x25654a[_0x6b01('0x40')]=_0x25654a[_0x6b01('0x40')][_0x6b01('0x44')]?_0x25654a[_0x6b01('0x40')]:_0x4922ba['model'];_0x25654a['order']=qs[_0x6b01('0xbd')](_0x32bf17[_0x6b01('0x3d')]['sort']);_0x25654a[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x32bf17[_0x6b01('0x3d')],_0x4922ba[_0x6b01('0x4e')]));if(_0x32bf17['query'][_0x6b01('0x39')]){_0x25654a[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x25654a[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x25654a['attributes'],function(_0x3d555e){var _0xffba5d={};_0xffba5d[_0x3d555e]={'$like':'%'+_0x32bf17['query']['filter']+'%'};return _0xffba5d;})});}_0x25654a=_[_0x6b01('0xbf')]({},_0x25654a,_0x32bf17[_0x6b01('0x51')]);return _0x475e73[_0x6b01('0xcc')](_0x25654a);}})[_0x6b01('0xf')](function(_0x5a6b33){if(_0x5a6b33){_0x53e745=_0x5a6b33['length'];if(!_0x32bf17[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x25654a['limit']=qs['limit'](_0x32bf17['query'][_0x6b01('0x1e')]);_0x25654a['offset']=qs[_0x6b01('0x1c')](_0x32bf17[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x475e73[_0x6b01('0xcc')](_0x25654a);}})[_0x6b01('0xf')](function(_0x8984ca){if(_0x8984ca){return _0x8984ca?{'count':_0x53e745,'rows':_0x8984ca}:null;}})[_0x6b01('0xf')](respondWithResult(_0x5dc56b,null))[_0x6b01('0x17')](handleError(_0x5dc56b,null));};exports[_0x6b01('0xce')]=function(_0x32dd85,_0x70740f){var _0x5076ba={'raw':!![],'where':{}};var _0x2a67ac={};var _0x43be16={'count':0x0,'rows':[]};return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x32dd85['params']['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x70740f,null))[_0x6b01('0xf')](function(_0x43dcdd){if(_0x43dcdd){_0x2a67ac['model']=_[_0x6b01('0x4d')](db[_0x6b01('0xcf')][_0x6b01('0x35')]);_0x2a67ac[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x32dd85[_0x6b01('0x3d')]);_0x2a67ac['filters']=_['intersection'](_0x2a67ac[_0x6b01('0x4c')],_0x2a67ac[_0x6b01('0x3d')]);_0x5076ba[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x2a67ac[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x32dd85[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x5076ba['attributes']=_0x5076ba[_0x6b01('0x40')][_0x6b01('0x44')]?_0x5076ba[_0x6b01('0x40')]:_0x2a67ac[_0x6b01('0x4c')];if(!_0x32dd85[_0x6b01('0x3d')][_0x6b01('0xc0')](_0x6b01('0xc5'))){_0x5076ba[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x32dd85['query'][_0x6b01('0x1e')]);_0x5076ba[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x32dd85[_0x6b01('0x3d')][_0x6b01('0x1c')]);}_0x5076ba[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x32dd85['query'][_0x6b01('0xbd')]);_0x5076ba[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x32dd85['query'],_0x2a67ac[_0x6b01('0x4e')]));_0x5076ba[_0x6b01('0x3b')][_0x6b01('0xd0')]=_0x43dcdd['id'];if(_0x32dd85[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x5076ba[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x5076ba[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x5076ba[_0x6b01('0x40')],function(_0x1f4aa9){var _0x2e1205={};_0x2e1205[_0x1f4aa9]={'$like':'%'+_0x32dd85['query']['filter']+'%'};return _0x2e1205;})});}_0x5076ba=_[_0x6b01('0xbf')]({},_0x5076ba,_0x32dd85[_0x6b01('0x51')]);return db[_0x6b01('0xcf')][_0x6b01('0x1f')]({'where':_0x5076ba[_0x6b01('0x3b')]})['then'](function(_0x3120dc){_0x43be16[_0x6b01('0x1f')]=_0x3120dc;if(_0x32dd85['query']['includeAll']){_0x5076ba[_0x6b01('0x3f')]=[{'all':!![]}];}return db[_0x6b01('0xcf')][_0x6b01('0x41')](_0x5076ba);})[_0x6b01('0xf')](function(_0x2fe71e){_0x43be16[_0x6b01('0x42')]=_0x2fe71e;return _0x43be16;});}})[_0x6b01('0xf')](respondWithFilteredResult(_0x70740f,_0x5076ba))[_0x6b01('0x17')](handleError(_0x70740f,null));};exports[_0x6b01('0xd1')]=function(_0x34fbcf,_0x196121){var _0x442c1a={'raw':!![],'where':{}};var _0x3db8c7={};var _0x267d16={'count':0x0,'rows':[]};return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x34fbcf[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x196121,null))[_0x6b01('0xf')](function(_0x1f6d59){if(_0x1f6d59){_0x3db8c7[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_0x6b01('0xd2')][_0x6b01('0x35')]);_0x3db8c7['query']=_['keys'](_0x34fbcf[_0x6b01('0x3d')]);_0x3db8c7[_0x6b01('0x4e')]=_['intersection'](_0x3db8c7['model'],_0x3db8c7[_0x6b01('0x3d')]);_0x442c1a[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x3db8c7['model'],qs[_0x6b01('0x50')](_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x442c1a[_0x6b01('0x40')]=_0x442c1a['attributes'][_0x6b01('0x44')]?_0x442c1a[_0x6b01('0x40')]:_0x3db8c7['model'];if(!_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0xc0')](_0x6b01('0xc5'))){_0x442c1a[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x442c1a[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0x1c')]);}_0x442c1a[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x34fbcf['query'][_0x6b01('0xbd')]);_0x442c1a['where']=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x34fbcf[_0x6b01('0x3d')],_0x3db8c7[_0x6b01('0x4e')]));_0x442c1a[_0x6b01('0x3b')][_0x6b01('0xd0')]=_0x1f6d59['id'];if(_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x442c1a[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x442c1a['where'],{'$or':_[_0x6b01('0x2a')](_0x442c1a[_0x6b01('0x40')],function(_0x5edbe7){var _0x14f5fb={};_0x14f5fb[_0x5edbe7]={'$like':'%'+_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x14f5fb;})});}_0x442c1a=_[_0x6b01('0xbf')]({},_0x442c1a,_0x34fbcf[_0x6b01('0x51')]);return db[_0x6b01('0xd2')][_0x6b01('0x1f')]({'where':_0x442c1a[_0x6b01('0x3b')]})['then'](function(_0x4795ce){_0x267d16[_0x6b01('0x1f')]=_0x4795ce;if(_0x34fbcf[_0x6b01('0x3d')][_0x6b01('0x3e')]){_0x442c1a[_0x6b01('0x3f')]=[{'all':!![]}];}return db[_0x6b01('0xd2')][_0x6b01('0x41')](_0x442c1a);})[_0x6b01('0xf')](function(_0x10b5d9){_0x267d16[_0x6b01('0x42')]=_0x10b5d9;return _0x267d16;});}})[_0x6b01('0xf')](respondWithFilteredResult(_0x196121,_0x442c1a))['catch'](handleError(_0x196121,null));};exports[_0x6b01('0xd3')]=function(_0x40d03a,_0x365441){var _0x405825={};var _0x53549c={};var _0x5db0f3;var _0xa03302;return db['User']['findOne']({'where':{'id':_0x40d03a[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x365441,null))[_0x6b01('0xf')](function(_0x1f037c){if(_0x1f037c){_0x5db0f3=_0x1f037c;_0x53549c[_0x6b01('0x4c')]=_['keys'](db['ChatInteraction']['rawAttributes']);_0x53549c['query']=_[_0x6b01('0x4d')](_0x40d03a[_0x6b01('0x3d')]);_0x53549c['filters']=_[_0x6b01('0x4f')](_0x53549c[_0x6b01('0x4c')],_0x53549c['query']);_0x405825[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x53549c[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x40d03a['query']['fields']));_0x405825[_0x6b01('0x40')]=_0x405825[_0x6b01('0x40')][_0x6b01('0x44')]?_0x405825[_0x6b01('0x40')]:_0x53549c[_0x6b01('0x4c')];_0x405825[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x40d03a[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x405825[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x40d03a[_0x6b01('0x3d')],_0x53549c[_0x6b01('0x4e')]));if(_0x40d03a[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x405825[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x405825[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x405825['attributes'],function(_0x1a7590){var _0x4a70a4={};_0x4a70a4[_0x1a7590]={'$like':'%'+_0x40d03a['query'][_0x6b01('0x39')]+'%'};return _0x4a70a4;})});}_0x405825=_[_0x6b01('0xbf')]({},_0x405825,_0x40d03a['options']);return _0x5db0f3['getChatInteractions'](_0x405825);}})[_0x6b01('0xf')](function(_0x50d732){if(_0x50d732){_0xa03302=_0x50d732['length'];if(!_0x40d03a['query'][_0x6b01('0xc0')]('nolimit')){_0x405825[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x40d03a[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x405825[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x40d03a[_0x6b01('0x3d')]['offset']);}return _0x5db0f3['getChatInteractions'](_0x405825);}})['then'](function(_0x237ed2){if(_0x237ed2){return _0x237ed2?{'count':_0xa03302,'rows':_0x237ed2}:null;}})[_0x6b01('0xf')](respondWithResult(_0x365441,null))['catch'](handleError(_0x365441,null));};exports['getOpenchannelInteractions']=function(_0x24e3f1,_0xb5df82){var _0x231e29={};var _0x36e2f6={};var _0x1d1434;var _0x585516;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x24e3f1[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0xb5df82,null))[_0x6b01('0xf')](function(_0x7c1bc){if(_0x7c1bc){_0x1d1434=_0x7c1bc;_0x36e2f6['model']=_[_0x6b01('0x4d')](db[_0x6b01('0xd4')]['rawAttributes']);_0x36e2f6['query']=_[_0x6b01('0x4d')](_0x24e3f1['query']);_0x36e2f6[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x36e2f6['model'],_0x36e2f6[_0x6b01('0x3d')]);_0x231e29[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x36e2f6[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x231e29[_0x6b01('0x40')]=_0x231e29['attributes'][_0x6b01('0x44')]?_0x231e29['attributes']:_0x36e2f6[_0x6b01('0x4c')];_0x231e29['order']=qs[_0x6b01('0xbd')](_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x231e29[_0x6b01('0x3b')]=qs['filters'](_[_0x6b01('0xbe')](_0x24e3f1[_0x6b01('0x3d')],_0x36e2f6['filters']));if(_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x231e29['where']=_[_0x6b01('0xbf')](_0x231e29[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x231e29[_0x6b01('0x40')],function(_0x3c5483){var _0x3d9891={};_0x3d9891[_0x3c5483]={'$like':'%'+_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x3d9891;})});}_0x231e29=_[_0x6b01('0xbf')]({},_0x231e29,_0x24e3f1[_0x6b01('0x51')]);return _0x1d1434[_0x6b01('0xd5')](_0x231e29);}})[_0x6b01('0xf')](function(_0x705e47){if(_0x705e47){_0x585516=_0x705e47[_0x6b01('0x44')];if(!_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0xc0')](_0x6b01('0xc5'))){_0x231e29[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x231e29[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x24e3f1[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x1d1434[_0x6b01('0xd5')](_0x231e29);}})['then'](function(_0x85328e){if(_0x85328e){return _0x85328e?{'count':_0x585516,'rows':_0x85328e}:null;}})[_0x6b01('0xf')](respondWithResult(_0xb5df82,null))['catch'](handleError(_0xb5df82,null));};exports[_0x6b01('0xd6')]=function(_0x113e6a,_0x1cbf86){var _0x7ea009={'raw':!![],'where':{}};var _0x363004={};var _0x254046={'count':0x0,'rows':[]};return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x113e6a[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x1cbf86,null))[_0x6b01('0xf')](function(_0x11f3d7){if(_0x11f3d7){_0x363004[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_0x6b01('0xd7')]['rawAttributes']);_0x363004[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x113e6a['query']);_0x363004[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x363004['model'],_0x363004['query']);_0x7ea009[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x363004['model'],qs[_0x6b01('0x50')](_0x113e6a[_0x6b01('0x3d')]['fields']));_0x7ea009[_0x6b01('0x40')]=_0x7ea009[_0x6b01('0x40')][_0x6b01('0x44')]?_0x7ea009[_0x6b01('0x40')]:_0x363004[_0x6b01('0x4c')];if(!_0x113e6a['query'][_0x6b01('0xc0')]('nolimit')){_0x7ea009['limit']=qs['limit'](_0x113e6a[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x7ea009[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x113e6a[_0x6b01('0x3d')][_0x6b01('0x1c')]);}_0x7ea009[_0x6b01('0xc7')]=qs['sort'](_0x113e6a[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x7ea009[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_['pick'](_0x113e6a[_0x6b01('0x3d')],_0x363004[_0x6b01('0x4e')]));_0x7ea009[_0x6b01('0x3b')]['UserId']=_0x11f3d7['id'];if(_0x113e6a[_0x6b01('0x3d')]['filter']){_0x7ea009[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x7ea009[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x7ea009[_0x6b01('0x40')],function(_0xc092ee){var _0x1a8ac5={};_0x1a8ac5[_0xc092ee]={'$like':'%'+_0x113e6a[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x1a8ac5;})});}_0x7ea009=_[_0x6b01('0xbf')]({},_0x7ea009,_0x113e6a['options']);return db[_0x6b01('0xd7')][_0x6b01('0x1f')]({'where':_0x7ea009[_0x6b01('0x3b')]})[_0x6b01('0xf')](function(_0x2f7caf){_0x254046[_0x6b01('0x1f')]=_0x2f7caf;if(_0x113e6a[_0x6b01('0x3d')][_0x6b01('0x3e')]){_0x7ea009[_0x6b01('0x3f')]=[{'all':!![]}];}return db[_0x6b01('0xd7')][_0x6b01('0x41')](_0x7ea009);})[_0x6b01('0xf')](function(_0x22b5e7){_0x254046['rows']=_0x22b5e7;return _0x254046;});}})[_0x6b01('0xf')](respondWithFilteredResult(_0x1cbf86,_0x7ea009))[_0x6b01('0x17')](handleError(_0x1cbf86,null));};exports[_0x6b01('0xd8')]=function(_0x4c442e,_0x406047){var _0xbd0475={};var _0x201523={};var _0x74ab81;var _0x5d6d8b;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x4c442e[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x406047,null))['then'](function(_0x351ca9){if(_0x351ca9){_0x74ab81=_0x351ca9;_0x201523['model']=_[_0x6b01('0x4d')](db[_0x6b01('0xd9')][_0x6b01('0x35')]);_0x201523[_0x6b01('0x3d')]=_['keys'](_0x4c442e['query']);_0x201523['filters']=_['intersection'](_0x201523[_0x6b01('0x4c')],_0x201523['query']);_0xbd0475[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x201523['model'],qs['fields'](_0x4c442e[_0x6b01('0x3d')][_0x6b01('0x50')]));_0xbd0475[_0x6b01('0x40')]=_0xbd0475[_0x6b01('0x40')][_0x6b01('0x44')]?_0xbd0475[_0x6b01('0x40')]:_0x201523[_0x6b01('0x4c')];_0xbd0475[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x4c442e['query'][_0x6b01('0xbd')]);_0xbd0475[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x4c442e[_0x6b01('0x3d')],_0x201523[_0x6b01('0x4e')]));if(_0x4c442e['query'][_0x6b01('0x39')]){_0xbd0475[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0xbd0475['where'],{'$or':_[_0x6b01('0x2a')](_0xbd0475[_0x6b01('0x40')],function(_0xa5405e){var _0x4d9e87={};_0x4d9e87[_0xa5405e]={'$like':'%'+_0x4c442e[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x4d9e87;})});}_0xbd0475=_[_0x6b01('0xbf')]({},_0xbd0475,_0x4c442e[_0x6b01('0x51')]);return _0x74ab81['getSmsInteractions'](_0xbd0475);}})['then'](function(_0x36dff4){if(_0x36dff4){_0x5d6d8b=_0x36dff4[_0x6b01('0x44')];if(!_0x4c442e['query']['hasOwnProperty'](_0x6b01('0xc5'))){_0xbd0475[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x4c442e['query'][_0x6b01('0x1e')]);_0xbd0475[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x4c442e[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x74ab81[_0x6b01('0xd8')](_0xbd0475);}})[_0x6b01('0xf')](function(_0x5eda2c){if(_0x5eda2c){return _0x5eda2c?{'count':_0x5d6d8b,'rows':_0x5eda2c}:null;}})['then'](respondWithResult(_0x406047,null))['catch'](handleError(_0x406047,null));};exports[_0x6b01('0xda')]=function(_0x292da0,_0x4a76cf){var _0x4e65f6={};var _0x109aa6={};var _0x449656;var _0x2be26b;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x292da0[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x4a76cf,null))[_0x6b01('0xf')](function(_0x59d1da){if(_0x59d1da){_0x449656=_0x59d1da;_0x109aa6['model']=_[_0x6b01('0x4d')](db['FaxInteraction'][_0x6b01('0x35')]);_0x109aa6['query']=_['keys'](_0x292da0['query']);_0x109aa6[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x109aa6[_0x6b01('0x4c')],_0x109aa6[_0x6b01('0x3d')]);_0x4e65f6[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x109aa6[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x292da0[_0x6b01('0x3d')]['fields']));_0x4e65f6[_0x6b01('0x40')]=_0x4e65f6['attributes'][_0x6b01('0x44')]?_0x4e65f6[_0x6b01('0x40')]:_0x109aa6[_0x6b01('0x4c')];_0x4e65f6[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x292da0[_0x6b01('0x3d')]['sort']);_0x4e65f6[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x292da0[_0x6b01('0x3d')],_0x109aa6[_0x6b01('0x4e')]));if(_0x292da0[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x4e65f6[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x4e65f6['where'],{'$or':_[_0x6b01('0x2a')](_0x4e65f6['attributes'],function(_0x54c715){var _0x5f29ec={};_0x5f29ec[_0x54c715]={'$like':'%'+_0x292da0[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x5f29ec;})});}_0x4e65f6=_[_0x6b01('0xbf')]({},_0x4e65f6,_0x292da0[_0x6b01('0x51')]);return _0x449656[_0x6b01('0xda')](_0x4e65f6);}})[_0x6b01('0xf')](function(_0xa336c4){if(_0xa336c4){_0x2be26b=_0xa336c4['length'];if(!_0x292da0[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x4e65f6['limit']=qs[_0x6b01('0x1e')](_0x292da0['query']['limit']);_0x4e65f6[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x292da0['query'][_0x6b01('0x1c')]);}return _0x449656[_0x6b01('0xda')](_0x4e65f6);}})[_0x6b01('0xf')](function(_0x3b2c83){if(_0x3b2c83){return _0x3b2c83?{'count':_0x2be26b,'rows':_0x3b2c83}:null;}})['then'](respondWithResult(_0x4a76cf,null))[_0x6b01('0x17')](handleError(_0x4a76cf,null));};exports['getWhatsappInteractions']=function(_0xdfebea,_0xcf34ce){var _0x485f21={};var _0x312f51={};var _0x483409;var _0x114ca3;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0xdfebea[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0xcf34ce,null))[_0x6b01('0xf')](function(_0x36dcb9){if(_0x36dcb9){_0x483409=_0x36dcb9;_0x312f51[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_0x6b01('0xdb')][_0x6b01('0x35')]);_0x312f51[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0xdfebea[_0x6b01('0x3d')]);_0x312f51[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x312f51[_0x6b01('0x4c')],_0x312f51['query']);_0x485f21[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x312f51[_0x6b01('0x4c')],qs['fields'](_0xdfebea[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x485f21['attributes']=_0x485f21[_0x6b01('0x40')][_0x6b01('0x44')]?_0x485f21['attributes']:_0x312f51[_0x6b01('0x4c')];_0x485f21[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0xdfebea[_0x6b01('0x3d')]['sort']);_0x485f21[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_['pick'](_0xdfebea[_0x6b01('0x3d')],_0x312f51[_0x6b01('0x4e')]));if(_0xdfebea[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x485f21['where']=_[_0x6b01('0xbf')](_0x485f21['where'],{'$or':_['map'](_0x485f21[_0x6b01('0x40')],function(_0x4e9460){var _0x2d50c2={};_0x2d50c2[_0x4e9460]={'$like':'%'+_0xdfebea[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x2d50c2;})});}_0x485f21=_[_0x6b01('0xbf')]({},_0x485f21,_0xdfebea['options']);return _0x483409['getWhatsappInteractions'](_0x485f21);}})[_0x6b01('0xf')](function(_0x386c8a){if(_0x386c8a){_0x114ca3=_0x386c8a[_0x6b01('0x44')];if(!_0xdfebea[_0x6b01('0x3d')][_0x6b01('0xc0')]('nolimit')){_0x485f21[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0xdfebea[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x485f21['offset']=qs[_0x6b01('0x1c')](_0xdfebea['query'][_0x6b01('0x1c')]);}return _0x483409[_0x6b01('0xdc')](_0x485f21);}})[_0x6b01('0xf')](function(_0x122c3b){if(_0x122c3b){return _0x122c3b?{'count':_0x114ca3,'rows':_0x122c3b}:null;}})[_0x6b01('0xf')](respondWithResult(_0xcf34ce,null))[_0x6b01('0x17')](handleError(_0xcf34ce,null));};exports[_0x6b01('0xdd')]=function(_0x5caca6,_0x12f88d,_0x3d87e9){var _0xb812af;var _0x1717f9;var _0x773fb5;var _0x5966be=!_[_0x6b01('0x60')](_0x5caca6[_0x6b01('0x56')]['id'])?_0x5caca6[_0x6b01('0x56')]['id']:!_[_0x6b01('0x60')](_0x5caca6[_0x6b01('0x26')]['id'])?_0x5caca6[_0x6b01('0x26')]['id']:null;return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x5966be,'role':{'$or':['admin',_0x6b01('0x26'),_0x6b01('0x6c')]}},'attributes':['id','name',_0x6b01('0xde'),_0x6b01('0xdf'),_0x6b01('0x2d'),_0x6b01('0x5b'),_0x6b01('0x93')]})['then'](function(_0x426a26){if(_0x426a26){if(_0x426a26[_0x6b01('0x2d')]===_0x6b01('0x6c')){_0xb812af=_0x426a26;if(_0x5caca6[_0x6b01('0x55')]['interface']){_0x773fb5=util[_0x6b01('0x9f')](_0x6b01('0xe0'),_0xb812af[_0x5caca6[_0x6b01('0x55')]['interface']]);}else if(_0x5caca6[_0x6b01('0x55')][_0x6b01('0xe1')]){_0x773fb5=util['format'](_0x6b01('0xa0'),_0x5caca6[_0x6b01('0x55')]['intrf']);}else{_0x773fb5=util[_0x6b01('0x9f')](_0x6b01('0xa0'),_0xb812af[_0x6b01('0x32')]);}socket['to'](util[_0x6b01('0x9f')](_0x6b01('0xe2'),_0xb812af[_0x6b01('0x32')]))[_0x6b01('0xa4')](_0x6b01('0xe3'),{'user':{'id':_0xb812af['id'],'name':_0xb812af['name']},'ip':_0x5caca6[_0x6b01('0xe4')][_0x6b01('0xe5')]||_0x5caca6[_0x6b01('0xe6')]['remoteAddress']||_0x5caca6[_0x6b01('0xe7')][_0x6b01('0xe8')]||_0x5caca6['connection'][_0x6b01('0xe7')]['remoteAddress']});return db['UserVoiceQueueRt'][_0x6b01('0x30')]({'where':{'membername':_0xb812af['name']},'individualHooks':!![]});}}else{throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x6b01('0xf')](function(){if(_0xb812af){return _0xb812af[_0x6b01('0xe9')]({'raw':!![]});}})['then'](function(_0xd38583){if(_0xb812af){var _0x3540e8=[];if(_0xd38583){_0x1717f9=_0xd38583;if(_0x1717f9[_0x6b01('0x44')]){for(var _0x584247=0x0;_0x584247<_0x1717f9[_0x6b01('0x44')];_0x584247++){_0x3540e8[_0x6b01('0x47')]({'membername':_0xb812af[_0x6b01('0x32')],'UserId':_0xb812af['id'],'queue_name':_0x1717f9[_0x584247]['name'],'VoiceQueueId':_0x1717f9[_0x584247]['id'],'interface':_0x773fb5,'paused':_0xb812af['loginInPause']||![],'penalty':_0x1717f9[_0x584247][_0x6b01('0xea')]||0x0});}return BPromise['each'](_0x3540e8,function(_0x247d88){return db[_0x6b01('0xa6')][_0x6b01('0xeb')](_0x247d88);});}}}})[_0x6b01('0xf')](function(){if(_0xb812af){return db[_0x6b01('0xec')]['findAll']({'where':{'membername':_0xb812af[_0x6b01('0x32')],'exitAt':null}});}})['then'](function(_0x5acecb){if(_0xb812af){var _0x20d4a2=[];_0x5acecb[_0x6b01('0xed')](function(_0xe42a25){_0x20d4a2['push'](_0xe42a25[_0x6b01('0x22')]({'exitAt':moment()[_0x6b01('0x9f')](_0x6b01('0xee'))}));});return BPromise[_0x6b01('0x4b')](_0x20d4a2);}})[_0x6b01('0xf')](function(){if(_0xb812af){var _0x523b2e=[];var _0x47faa8=[];var _0x4fab2f=utils[_0x6b01('0xef')]();var _0x4bae02={'membername':_0xb812af[_0x6b01('0x32')],'interface':_0x773fb5,'enterAt':moment()[_0x6b01('0x9f')](_0x6b01('0xee')),'role':_0xb812af[_0x6b01('0x2d')],'internal':_0xb812af[_0x6b01('0x5b')]};_0x4fab2f[_0x6b01('0xed')](function(_0x278246){_0x523b2e[_0x6b01('0x47')](_[_0x6b01('0xbf')]({'channel':_0x278246,'type':'LOGIN','data1':_0x5caca6[_0x6b01('0x55')][_0x6b01('0xf0')],'data2':_0x773fb5},_0x4bae02));if(_0xb812af[_0x6b01('0x93')]){_0x47faa8[_0x6b01('0x47')](_[_0x6b01('0xbf')]({'channel':_0x278246,'type':_0x6b01('0xf1'),'data1':_0x6b01('0xf2')},_0x4bae02));}});return db[_0x6b01('0xec')][_0x6b01('0xf3')](_0x523b2e['concat'](_0x47faa8),{'individualHooks':!![]});}})[_0x6b01('0xf')](function(){if(_0xb812af){return _0xb812af[_0x6b01('0x22')]({'online':!![],'lastLoginAt':moment()['format'](_0x6b01('0xee')),'voicePause':_0xb812af['loginInPause']||![],'mailPause':_0xb812af[_0x6b01('0x93')]||![],'chatPause':_0xb812af['loginInPause']||![],'faxPause':_0xb812af[_0x6b01('0x93')]||![],'smsPause':_0xb812af[_0x6b01('0x93')]||![],'openchannelPause':_0xb812af[_0x6b01('0x93')]||![],'whatsappPause':_0xb812af['loginInPause']||![],'pauseType':_0xb812af['loginInPause']?_0x6b01('0xf2'):null,'interface':_0x773fb5,'lastPauseAt':moment()[_0x6b01('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x6b01('0xf')](function(_0x258da4){if(_0x5caca6['isMiddleware']){return _0x3d87e9();}else{return BPromise[_0x6b01('0xf4')](_0x258da4)[_0x6b01('0xf')](respondWithResult(_0x12f88d,null));}})[_0x6b01('0x17')](handleError(_0x12f88d,null));};exports[_0x6b01('0xf5')]=function(_0x138694,_0x47cb88){var _0x372c35;return db[_0x6b01('0x3c')]['find']({'where':{'id':_0x138694[_0x6b01('0x56')]['id'],'role':_0x6b01('0x6c')},'attributes':['id',_0x6b01('0x32'),_0x6b01('0x2d')]})[_0x6b01('0xf')](handleEntityNotFound(_0x47cb88,null))[_0x6b01('0xf')](function(_0x31548d){if(_0x31548d){_0x372c35=_0x31548d;return db[_0x6b01('0xa6')][_0x6b01('0x30')]({'where':{'membername':_0x372c35['name']},'individualHooks':!![]});}})[_0x6b01('0xf')](function(){return db[_0x6b01('0xec')][_0x6b01('0x41')]({'where':{'membername':_0x372c35[_0x6b01('0x32')],'exitAt':null}});})[_0x6b01('0xf')](function(_0x46a924){var _0x10c2ed=[];_0x46a924[_0x6b01('0xed')](function(_0x3a6cfb){_0x10c2ed[_0x6b01('0x47')](_0x3a6cfb[_0x6b01('0x22')]({'exitAt':moment()[_0x6b01('0x9f')](_0x6b01('0xee'))}));});return BPromise[_0x6b01('0x4b')](_0x10c2ed);})[_0x6b01('0xf')](function(){return _0x372c35[_0x6b01('0x22')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x6b01('0xf')](respondWithResult(_0x47cb88,null))[_0x6b01('0x17')](handleError(_0x47cb88,null));};exports[_0x6b01('0xf6')]=function(_0x41de48,_0x3f6bfe){var _0x14c05b;return db[_0x6b01('0xa6')][_0x6b01('0x22')]({'paused':0x1},{'where':{'UserId':_0x41de48['params']['id']},'individualHooks':!![]})[_0x6b01('0xf')](function(){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x41de48[_0x6b01('0x56')]['id'],'role':_0x6b01('0x6c')},'attributes':['id',_0x6b01('0x32'),_0x6b01('0x2d'),_0x6b01('0x5b'),'interface']});})[_0x6b01('0xf')](handleEntityNotFound(_0x3f6bfe,null))[_0x6b01('0xf')](function(_0x1fadac){if(_0x1fadac){_0x14c05b=_0x1fadac;return respondWithRpcPromise(_0x6b01('0xf7'),_0x6b01('0xf6'),{'id':_0x14c05b['id'],'name':_0x14c05b[_0x6b01('0x32')],'pause':!![]});}})['then'](function(){if(_0x14c05b){return db[_0x6b01('0xec')]['findAll']({'where':{'membername':_0x14c05b[_0x6b01('0x32')],'type':_0x6b01('0xf1'),'exitAt':null}});}})['then'](function(_0xd491a){if(_0xd491a[_0x6b01('0x44')]){var _0x286ab4=moment()['format'](_0x6b01('0xee'));for(var _0x4f747b=0x0,_0xa5274=_0xd491a[_0x6b01('0x44')];_0x4f747b<_0xa5274;_0x4f747b++){_0xd491a[_0x4f747b]['updateAttributes']({'exitAt':_0x286ab4});}}})[_0x6b01('0xf')](function(){var _0x4eab36=[];var _0x32e360=utils[_0x6b01('0xef')]();_0x32e360[_0x6b01('0xed')](function(_0x548a55){_0x4eab36[_0x6b01('0x47')]({'channel':_0x548a55,'membername':_0x14c05b['name'],'interface':_[_0x6b01('0x60')](_0x14c05b['interface'])?util['format']('SIP/%s',_0x14c05b['name']):_0x14c05b[_0x6b01('0x95')],'type':'PAUSE','enterAt':moment()[_0x6b01('0x9f')](_0x6b01('0xee')),'data1':_0x41de48[_0x6b01('0x55')][_0x6b01('0x37')]||_0x6b01('0xf8'),'role':_0x14c05b[_0x6b01('0x2d')],'internal':_0x14c05b[_0x6b01('0x5b')]});});return db[_0x6b01('0xec')][_0x6b01('0xf3')](_0x4eab36,{'individualHooks':!![]});})['then'](function(){return _0x14c05b[_0x6b01('0x22')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x41de48[_0x6b01('0x55')][_0x6b01('0x37')]||_0x6b01('0xf8'),'lastPauseAt':moment()[_0x6b01('0x9f')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0x6b01('0xf')](respondWithResult(_0x3f6bfe,null))['catch'](handleError(_0x3f6bfe,null));};exports[_0x6b01('0xf9')]=function(_0x1ef856,_0x174130){var _0x3f6ac7;return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x1ef856[_0x6b01('0x56')]['id']},'attributes':['id','name','role',_0x6b01('0x94'),_0x6b01('0xfa'),_0x6b01('0xfb'),_0x6b01('0xfc'),_0x6b01('0xfd'),'smsPause',_0x6b01('0xfe'),_0x6b01('0xff'),_0x6b01('0x100')]})['then'](handleEntityNotFound(_0x174130,null))[_0x6b01('0xf')](function(_0x1f6202){if(_0x1f6202){_0x3f6ac7=_0x1f6202;if(_0x1ef856[_0x6b01('0x55')][_0x6b01('0x91')]&&!utils[_0x6b01('0x96')](_0x1ef856[_0x6b01('0x55')][_0x6b01('0x91')])){throw new db[(_0x6b01('0x84'))][(_0x6b01('0x86'))](_0x6b01('0x97'));}switch(_0x1ef856[_0x6b01('0x55')][_0x6b01('0x91')]){case _0x6b01('0x9d'):return respondWithRpcPromise(_0x6b01('0xf7'),_0x6b01('0xf9'),{'id':_0x3f6ac7['id'],'name':_0x3f6ac7[_0x6b01('0x32')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x6b01('0x22')]({'paused':0x0},{'where':{'UserId':_0x3f6ac7['id']},'individualHooks':!![]});})['then'](function(){return db[_0x6b01('0xec')][_0x6b01('0x2e')]({'where':{'channel':_0x1ef856[_0x6b01('0x55')]['channel'],'membername':_0x3f6ac7['name'],'type':_0x6b01('0xf1'),'exitAt':null}});})[_0x6b01('0xf')](function(_0x34e103){if(_0x34e103){return _0x34e103[_0x6b01('0x22')]({'exitAt':moment()['format'](_0x6b01('0xee')),'data2':_0x6b01('0x101')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x3f6ac7['update']({'voicePause':![]});});case _0x6b01('0x49'):case _0x6b01('0x45'):case _0x6b01('0x48'):case _0x6b01('0x53'):case'whatsapp':case'openchannel':return db['MemberReport'][_0x6b01('0x2e')]({'where':{'channel':_0x1ef856[_0x6b01('0x55')][_0x6b01('0x91')],'membername':_0x3f6ac7[_0x6b01('0x32')],'type':_0x6b01('0xf1'),'exitAt':null}})[_0x6b01('0xf')](function(_0x56687e){if(_0x56687e){return _0x56687e['update']({'exitAt':moment()[_0x6b01('0x9f')](_0x6b01('0xee')),'data2':_0x6b01('0x101')},{'individualHooks':!![]});}return null;})[_0x6b01('0xf')](function(){var _0x283900={};_[_0x6b01('0x20')](_0x283900,util[_0x6b01('0x9f')](_0x6b01('0x102'),_0x1ef856[_0x6b01('0x55')]['channel'],'Pause'),![]);return _0x3f6ac7[_0x6b01('0x22')](_0x283900);});default:return respondWithRpcPromise(_0x6b01('0xf7'),_0x6b01('0xf9'),{'id':_0x3f6ac7['id'],'name':_0x3f6ac7[_0x6b01('0x32')],'pause':![]})[_0x6b01('0xf')](function(){return db[_0x6b01('0xa6')]['update']({'paused':0x0},{'where':{'UserId':_0x3f6ac7['id']}});})['then'](function(){return db['MemberReport'][_0x6b01('0x41')]({'where':{'membername':_0x3f6ac7[_0x6b01('0x32')],'type':_0x6b01('0xf1'),'exitAt':null}});})[_0x6b01('0xf')](function(_0x38a069){var _0x3b83b0=[];_0x38a069[_0x6b01('0xed')](function(_0x45f6e1){_0x3b83b0[_0x6b01('0x47')](_0x45f6e1[_0x6b01('0x22')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x6b01('0x101')}));});return BPromise[_0x6b01('0x4b')](_0x3b83b0);})[_0x6b01('0xf')](function(){return _0x3f6ac7[_0x6b01('0x22')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x6b01('0xf')](respondWithResult(_0x174130,null))['catch'](handleError(_0x174130,null));};exports[_0x6b01('0x103')]=function(_0x3db9dd,_0x41fee4){var _0x39c796={};var _0x12b7e8={};var _0x41029d;var _0x47d960;return db['User']['findOne']({'where':{'id':_0x3db9dd[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x41fee4,null))[_0x6b01('0xf')](function(_0x1b633e){if(_0x1b633e){_0x41029d=_0x1b633e;_0x12b7e8[_0x6b01('0x4c')]=_['keys'](db[_0x6b01('0x104')][_0x6b01('0x35')]);_0x12b7e8[_0x6b01('0x3d')]=_['keys'](_0x3db9dd[_0x6b01('0x3d')]);_0x12b7e8['filters']=_[_0x6b01('0x4f')](_0x12b7e8[_0x6b01('0x4c')],_0x12b7e8[_0x6b01('0x3d')]);_0x39c796[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x12b7e8[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x3db9dd['query'][_0x6b01('0x50')]));_0x39c796[_0x6b01('0x40')]=_0x39c796[_0x6b01('0x40')][_0x6b01('0x44')]?_0x39c796[_0x6b01('0x40')]:_0x12b7e8['model'];_0x39c796[_0x6b01('0xc7')]=qs['sort'](_0x3db9dd[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x39c796[_0x6b01('0x3b')]=qs['filters'](_[_0x6b01('0xbe')](_0x3db9dd[_0x6b01('0x3d')],_0x12b7e8[_0x6b01('0x4e')]));if(_0x3db9dd[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x39c796[_0x6b01('0x3b')]=_['merge'](_0x39c796['where'],{'$or':_[_0x6b01('0x2a')](_0x39c796[_0x6b01('0x40')],function(_0x126168){var _0x1ea4d7={};_0x1ea4d7[_0x126168]={'$like':'%'+_0x3db9dd[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x1ea4d7;})});}_0x39c796=_[_0x6b01('0xbf')]({},_0x39c796,_0x3db9dd[_0x6b01('0x51')]);return _0x41029d[_0x6b01('0x103')](_0x39c796);}})[_0x6b01('0xf')](function(_0x5d0aa8){if(_0x5d0aa8){_0x47d960=_0x5d0aa8[_0x6b01('0x44')];if(!_0x3db9dd['query']['hasOwnProperty'](_0x6b01('0xc5'))){_0x39c796[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x3db9dd[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x39c796[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x3db9dd[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x41029d[_0x6b01('0x103')](_0x39c796);}})[_0x6b01('0xf')](function(_0x1ea6a0){if(_0x1ea6a0){return _0x1ea6a0?{'count':_0x47d960,'rows':_0x1ea6a0}:null;}})[_0x6b01('0xf')](respondWithResult(_0x41fee4,null))[_0x6b01('0x17')](handleError(_0x41fee4,null));};exports[_0x6b01('0x105')]=function(_0x332030,_0x2dc0d8){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x332030['params']['id']}})['then'](handleEntityNotFound(_0x2dc0d8,null))['then'](function(_0x60e63f){if(_0x60e63f){var _0x336fa2=_0x60e63f[_0x6b01('0x23')]({'plain':!![]});return _0x60e63f[_0x6b01('0x105')](_0x332030[_0x6b01('0x55')]['ids'],_[_0x6b01('0x59')](_0x332030['body'],[_0x6b01('0x5a'),'id'])||{})[_0x6b01('0xf')](function(){for(var _0x743e53=0x0;_0x743e53<_0x332030[_0x6b01('0x55')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x743e53++){var _0x24c54a=[];var _0x2538c9={};db['Team'][_0x6b01('0x8a')]({'where':{'id':_0x332030[_0x6b01('0x55')][_0x6b01('0x5a')][_0x743e53]}})[_0x6b01('0xf')](function(_0x198323){_0x2538c9=_0x198323[_0x6b01('0x46')];_0x24c54a[_0x6b01('0x47')](_0x198323[_0x6b01('0xe9')]()[_0x6b01('0xf')](function(_0x332748){for(var _0x2c1df7=0x0;_0x2c1df7<_0x332748[_0x6b01('0x44')];_0x2c1df7++){_0x332748[_0x2c1df7][_0x6b01('0x106')]('channel',_0x6b01('0x107'));}return _0x332748;}));_0x24c54a['push'](_0x198323['getChatQueues']()[_0x6b01('0xf')](function(_0x1135ca){for(var _0x1ccc3b=0x0;_0x1ccc3b<_0x1135ca[_0x6b01('0x44')];_0x1ccc3b++){_0x1135ca[_0x1ccc3b]['setDataValue'](_0x6b01('0x91'),_0x6b01('0x108'));}return _0x1135ca;}));_0x24c54a[_0x6b01('0x47')](_0x198323[_0x6b01('0x109')]()[_0x6b01('0xf')](function(_0x1a72ee){for(var _0x55ea59=0x0;_0x55ea59<_0x1a72ee['length'];_0x55ea59++){_0x1a72ee[_0x55ea59][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x10a'));}return _0x1a72ee;}));_0x24c54a[_0x6b01('0x47')](_0x198323[_0x6b01('0x10b')]()[_0x6b01('0xf')](function(_0x557477){for(var _0x576d05=0x0;_0x576d05<_0x557477[_0x6b01('0x44')];_0x576d05++){_0x557477[_0x576d05][_0x6b01('0x106')](_0x6b01('0x91'),'Sms');}return _0x557477;}));_0x24c54a[_0x6b01('0x47')](_0x198323[_0x6b01('0x10c')]()[_0x6b01('0xf')](function(_0x175825){for(var _0x3977a1=0x0;_0x3977a1<_0x175825['length'];_0x3977a1++){_0x175825[_0x3977a1][_0x6b01('0x106')]('channel',_0x6b01('0x10d'));}return _0x175825;}));_0x24c54a['push'](_0x198323['getFaxQueues']()[_0x6b01('0xf')](function(_0x3a44d7){for(var _0x1bce10=0x0;_0x1bce10<_0x3a44d7[_0x6b01('0x44')];_0x1bce10++){_0x3a44d7[_0x1bce10][_0x6b01('0x106')]('channel','Fax');}return _0x3a44d7;}));_0x24c54a['push'](_0x198323[_0x6b01('0x10e')]()[_0x6b01('0xf')](function(_0x42b16a){for(var _0x17fa24=0x0;_0x17fa24<_0x42b16a[_0x6b01('0x44')];_0x17fa24++){_0x42b16a[_0x17fa24][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x10f'));}return _0x42b16a;}));return BPromise['all'](_0x24c54a);})[_0x6b01('0xf')](function(_0x4ddd28){var _0x1de2c7=_[_0x6b01('0x110')](_0x4ddd28);_0x24c54a=[];return db[_0x6b01('0x62')][_0x6b01('0x111')](function(_0x2e77a3){for(var _0x227435=0x0;_0x227435<_0x1de2c7['length'];_0x227435++){_0x24c54a['push'](_0x1de2c7[_0x227435][_0x6b01('0x112')](_0x336fa2['id']),{'transaction':_0x2e77a3});}return BPromise[_0x6b01('0x4b')](_0x24c54a)['then'](function(){if(_0x336fa2[_0x6b01('0x92')]){return BPromise['each'](_[_0x6b01('0x39')](_0x1de2c7,function(_0x392e8e){return _0x392e8e[_0x6b01('0x113')](_0x6b01('0x91'))===_0x6b01('0x107');}),function(_0x459fbf){return db[_0x6b01('0xa6')][_0x6b01('0xeb')]({'membername':_0x336fa2['name'],'UserId':_0x336fa2['id'],'queue_name':_0x459fbf[_0x6b01('0x32')],'VoiceQueueId':_0x459fbf['id'],'interface':_['isNil'](_0x336fa2[_0x6b01('0x95')])?util[_0x6b01('0x9f')](_0x6b01('0xa0'),_0x336fa2[_0x6b01('0x32')]):_0x336fa2[_0x6b01('0x95')],'paused':_0x336fa2['voicePause']||![],'penalty':_0x336fa2[_0x6b01('0x114')]},{'transaction':_0x2e77a3});});}else{return;}})[_0x6b01('0xf')](function(){for(var _0x2df36a=0x0;_0x2df36a<_0x1de2c7[_0x6b01('0x44')];_0x2df36a++){var _0x263dcf=_0x1de2c7[_0x2df36a][_0x6b01('0x113')](_0x6b01('0x91'));var _0x18841e=_0x263dcf+'QueueId';socket[_0x6b01('0xa4')](_0x6b01('0x26')+_0x263dcf+_0x6b01('0x115'),{'UserId':_0x336fa2['id'],['queueField']:_0x1de2c7[_0x2df36a]['id']});}});});})[_0x6b01('0xf')](function(){db[_0x6b01('0x116')][_0x6b01('0x8a')]({'where':{'teamId':_0x2538c9['id']}})[_0x6b01('0xf')](function(_0xb8a717){if(_0xb8a717){db[_0x6b01('0x117')][_0x6b01('0x75')]({'UserId':_0x332030[_0x6b01('0x56')]['id'],'VoicePrefixId':_0xb8a717[_0x6b01('0x118')]});}});});}});}})[_0x6b01('0xf')](respondWithStatusCode(_0x2dc0d8,null))[_0x6b01('0x17')](handleError(_0x2dc0d8,null));};exports['removeTeams']=function(_0x27c681,_0x3f405f){return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x27c681['params']['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x3f405f,null))[_0x6b01('0xf')](function(_0x31d65c){if(_0x31d65c){var _0x4175d6=_0x31d65c[_0x6b01('0x23')]({'plain':!![]});var _0x1fd628=_0x27c681[_0x6b01('0x3d')][_0x6b01('0x5a')];return _0x31d65c[_0x6b01('0x119')](_0x1fd628)['then'](function(){for(var _0x3e850f=0x0;_0x3e850f<_0x1fd628[_0x6b01('0x44')];_0x3e850f++){var _0x5a985d=[];var _0x1a7b5d={};db[_0x6b01('0x104')][_0x6b01('0x8a')]({'where':{'id':_0x1fd628[_0x3e850f]}})[_0x6b01('0xf')](function(_0x4c00d8){_0x1a7b5d=_0x4c00d8['dataValues'];_0x5a985d[_0x6b01('0x47')](_0x4c00d8[_0x6b01('0xe9')]()[_0x6b01('0xf')](function(_0x4296b){for(var _0x4885b1=0x0;_0x4885b1<_0x4296b[_0x6b01('0x44')];_0x4885b1++){_0x4296b[_0x4885b1]['setDataValue'](_0x6b01('0x91'),_0x6b01('0x107'));}return _0x4296b;}));_0x5a985d[_0x6b01('0x47')](_0x4c00d8[_0x6b01('0x11a')]()[_0x6b01('0xf')](function(_0x4bce89){for(var _0x4fbad0=0x0;_0x4fbad0<_0x4bce89[_0x6b01('0x44')];_0x4fbad0++){_0x4bce89[_0x4fbad0][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x108'));}return _0x4bce89;}));_0x5a985d[_0x6b01('0x47')](_0x4c00d8[_0x6b01('0x109')]()[_0x6b01('0xf')](function(_0x4e74de){for(var _0x269276=0x0;_0x269276<_0x4e74de[_0x6b01('0x44')];_0x269276++){_0x4e74de[_0x269276][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x10a'));}return _0x4e74de;}));_0x5a985d['push'](_0x4c00d8[_0x6b01('0x10b')]()[_0x6b01('0xf')](function(_0x54047b){for(var _0x5a73eb=0x0;_0x5a73eb<_0x54047b[_0x6b01('0x44')];_0x5a73eb++){_0x54047b[_0x5a73eb]['setDataValue'](_0x6b01('0x91'),_0x6b01('0x11b'));}return _0x54047b;}));_0x5a985d['push'](_0x4c00d8['getWhatsappQueues']()[_0x6b01('0xf')](function(_0x324352){for(var _0x384ff5=0x0;_0x384ff5<_0x324352[_0x6b01('0x44')];_0x384ff5++){_0x324352[_0x384ff5][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x10d'));}return _0x324352;}));_0x5a985d[_0x6b01('0x47')](_0x4c00d8['getFaxQueues']()['then'](function(_0x3dd6fb){for(var _0x1f39f0=0x0;_0x1f39f0<_0x3dd6fb[_0x6b01('0x44')];_0x1f39f0++){_0x3dd6fb[_0x1f39f0][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x11c'));}return _0x3dd6fb;}));_0x5a985d[_0x6b01('0x47')](_0x4c00d8[_0x6b01('0x10e')]()['then'](function(_0x2673fc){for(var _0x41bc19=0x0;_0x41bc19<_0x2673fc[_0x6b01('0x44')];_0x41bc19++){_0x2673fc[_0x41bc19][_0x6b01('0x106')](_0x6b01('0x91'),_0x6b01('0x10f'));}return _0x2673fc;}));return BPromise[_0x6b01('0x4b')](_0x5a985d);})[_0x6b01('0xf')](function(_0x5e98e9){var _0x516d02=_[_0x6b01('0x110')](_0x5e98e9);_0x5a985d=[];return db[_0x6b01('0x62')][_0x6b01('0x111')](function(_0x15b2a8){for(var _0x51aca6=0x0;_0x51aca6<_0x516d02[_0x6b01('0x44')];_0x51aca6++){_0x5a985d[_0x6b01('0x47')](_0x516d02[_0x51aca6][_0x6b01('0x11d')](_0x4175d6['id']),{'transaction':_0x15b2a8});}return BPromise[_0x6b01('0x4b')](_0x5a985d)['then'](function(){if(_0x4175d6['online']){return BPromise[_0x6b01('0x7f')](_[_0x6b01('0x39')](_0x516d02,function(_0x51034a){return _0x51034a['getDataValue'](_0x6b01('0x91'))===_0x6b01('0x107');}),function(_0x549251){return db[_0x6b01('0xa6')]['destroy']({'where':{'VoiceQueueId':_0x549251['id'],'UserId':_0x4175d6['id']},'transaction':_0x15b2a8});});}else{return;}})['then'](function(){db[_0x6b01('0x116')][_0x6b01('0x8a')]({'where':{'teamId':_0x1a7b5d['id']}})['then'](function(_0x418c24){if(_0x418c24){return db[_0x6b01('0x117')][_0x6b01('0x30')]({'where':{'UserId':_0x4175d6['id'],'VoicePrefixId':_0x418c24[_0x6b01('0x46')][_0x6b01('0x118')]}});}});})['then'](function(){for(var _0xe41cdd=0x0;_0xe41cdd<_0x516d02[_0x6b01('0x44')];_0xe41cdd++){var _0x487a1f=_0x516d02[_0xe41cdd][_0x6b01('0x113')](_0x6b01('0x91'));var _0x18b76c=_0x487a1f+'QueueId';socket['emit'](_0x6b01('0x26')+_0x487a1f+_0x6b01('0xa5'),{'UserId':_0x4175d6['id'],['queueField']:_0x516d02[_0xe41cdd]['id']});}});});});}});}})[_0x6b01('0xf')](respondWithStatusCode(_0x3f405f,null))['catch'](handleError(_0x3f405f,null));};exports[_0x6b01('0x11e')]=function(_0x1954f6,_0x34b307){var _0x31f592={};var _0x105973={};var _0x5d9402;var _0x4a3fb5;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x1954f6['params']['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x34b307,null))[_0x6b01('0xf')](function(_0xbc554c){if(_0xbc554c){_0x5d9402=_0xbc554c;_0x105973['model']=_[_0x6b01('0x4d')](db[_0x6b01('0xc1')][_0x6b01('0x35')]);_0x105973['query']=_['keys'](_0x1954f6[_0x6b01('0x3d')]);_0x105973[_0x6b01('0x4e')]=_['intersection'](_0x105973['model'],_0x105973[_0x6b01('0x3d')]);_0x31f592[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x105973[_0x6b01('0x4c')],qs['fields'](_0x1954f6[_0x6b01('0x3d')]['fields']));_0x31f592[_0x6b01('0x40')]=_0x31f592[_0x6b01('0x40')][_0x6b01('0x44')]?_0x31f592[_0x6b01('0x40')]:_0x105973[_0x6b01('0x4c')];_0x31f592[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x1954f6[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x31f592[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x1954f6[_0x6b01('0x3d')],_0x105973['filters']));if(_0x1954f6[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x31f592[_0x6b01('0x3b')]=_['merge'](_0x31f592[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x31f592['attributes'],function(_0x17f0c1){var _0x4b7d87={};_0x4b7d87[_0x17f0c1]={'$like':'%'+_0x1954f6['query'][_0x6b01('0x39')]+'%'};return _0x4b7d87;})});}_0x31f592=_[_0x6b01('0xbf')]({},_0x31f592,_0x1954f6['options']);return _0x5d9402[_0x6b01('0x11e')](_0x31f592);}})[_0x6b01('0xf')](function(_0x24f78d){if(_0x24f78d){_0x4a3fb5=_0x24f78d['length'];if(!_0x1954f6['query']['hasOwnProperty'](_0x6b01('0xc5'))){_0x31f592[_0x6b01('0x1e')]=qs['limit'](_0x1954f6[_0x6b01('0x3d')]['limit']);_0x31f592[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x1954f6[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x5d9402['getLists'](_0x31f592);}})[_0x6b01('0xf')](function(_0x57fe8c){if(_0x57fe8c){return _0x57fe8c?{'count':_0x4a3fb5,'rows':_0x57fe8c}:null;}})[_0x6b01('0xf')](respondWithResult(_0x34b307,null))['catch'](handleError(_0x34b307,null));};exports[_0x6b01('0x11f')]=function(_0x2217aa,_0x57c71a){var _0x43e8d1={};var _0xdb77f8={};var _0x199b56;var _0x4d430b;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x2217aa[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x57c71a,null))[_0x6b01('0xf')](function(_0x1f7c3a){if(_0x1f7c3a){_0x199b56=_0x1f7c3a;_0xdb77f8[_0x6b01('0x4c')]=_['keys'](db['User']['rawAttributes']);_0xdb77f8[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x2217aa[_0x6b01('0x3d')]);_0xdb77f8[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0xdb77f8[_0x6b01('0x4c')],_0xdb77f8[_0x6b01('0x3d')]);_0x43e8d1[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0xdb77f8[_0x6b01('0x4c')],qs['fields'](_0x2217aa[_0x6b01('0x3d')]['fields']));_0x43e8d1[_0x6b01('0x40')]=_0x43e8d1[_0x6b01('0x40')][_0x6b01('0x44')]?_0x43e8d1['attributes']:_0xdb77f8[_0x6b01('0x4c')];_0x43e8d1[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x2217aa[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x43e8d1[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x2217aa['query'],_0xdb77f8[_0x6b01('0x4e')]));if(_0x2217aa[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x43e8d1['where']=_[_0x6b01('0xbf')](_0x43e8d1[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x43e8d1[_0x6b01('0x40')],function(_0x30a49b){var _0x53526e={};_0x53526e[_0x30a49b]={'$like':'%'+_0x2217aa[_0x6b01('0x3d')]['filter']+'%'};return _0x53526e;})});}_0x43e8d1[_0x6b01('0x4c')]=db[_0x6b01('0x3c')];_0x43e8d1['as']=_0x6b01('0x27');_0x43e8d1=_[_0x6b01('0xbf')]({},_0x43e8d1,_0x2217aa[_0x6b01('0x51')]);return _0x199b56[_0x6b01('0xe9')]({'include':[_0x43e8d1]});}})[_0x6b01('0xf')](function(_0x3cdd4f){if(_0x3cdd4f){var _0x585135={},_0x15c158=[],_0x4a72b6=0x0;for(var _0x4a1659=0x0;_0x4a1659<_0x3cdd4f[_0x6b01('0x44')];_0x4a1659+=0x1){for(var _0x21628e=0x0,_0x24709b;_0x21628e<_0x3cdd4f[_0x4a1659][_0x6b01('0x27')][_0x6b01('0x44')];_0x21628e+=0x1){_0x24709b=_0x3cdd4f[_0x4a1659]['Agents'][_0x21628e][_0x6b01('0x23')]({'plain':!![]});_0x585135[_0x24709b['id']]=_0x24709b;}}_0x585135=_['values'](_0x585135);for(var _0x52814b=qs['offset'](_0x2217aa['query'][_0x6b01('0x1c')]);_0x52814b<_0x585135[_0x6b01('0x44')]&&_0x15c158[_0x6b01('0x44')]<qs['limit'](_0x2217aa['query'][_0x6b01('0x1e')]);_0x52814b+=0x1){if(_0x585135[_0x52814b]){_0x15c158[_0x6b01('0x47')](_0x585135[_0x52814b]);}}return{'count':_0x585135[_0x6b01('0x44')],'rows':_0x15c158};}})['then'](respondWithResult(_0x57c71a,null))[_0x6b01('0x17')](handleError(_0x57c71a,null));};exports[_0x6b01('0x30')]=function(_0x3817fb,_0x27de60){if(_0x3817fb['user']['id']==_0x3817fb['params']['id']){return _0x27de60['status'](0x1f4)[_0x6b01('0x33')]({'message':_0x6b01('0x120')});}return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x3817fb[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x27de60,null))['then'](removeEntity(_0x27de60,null))['catch'](handleError(_0x27de60,null));};exports[_0x6b01('0x121')]=function(_0x7f2440,_0x19adb6){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x7f2440[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0x19adb6,null))[_0x6b01('0xf')](function(_0x4cab66){if(_0x4cab66){return _0x4cab66[_0x6b01('0x121')](_0x7f2440['body'][_0x6b01('0x5a')],_['omit'](_0x7f2440[_0x6b01('0x55')],['ids','id'])||{})[_0x6b01('0x9b')](function(){for(var _0x5db868=0x0;_0x5db868<_0x7f2440[_0x6b01('0x55')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x5db868+=0x1){socket['emit'](_0x6b01('0x122'),{'ChatInteractionId':Number(_0x7f2440[_0x6b01('0x55')][_0x6b01('0x5a')][_0x5db868]),'UserId':Number(_0x7f2440['params']['id'])});}return _0x7f2440['body'][_0x6b01('0x5a')];});}})[_0x6b01('0xf')](respondWithResult(_0x19adb6,null))[_0x6b01('0x17')](handleError(_0x19adb6,null));};exports[_0x6b01('0x123')]=function(_0x41b92e,_0x124db5){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x41b92e[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0x124db5,null))[_0x6b01('0xf')](function(_0x411074){if(_0x411074){return _0x411074[_0x6b01('0x123')](_0x41b92e['query']['ids'])[_0x6b01('0xf')](function(){if(_['isArray'](_0x41b92e[_0x6b01('0x3d')][_0x6b01('0x5a')])){for(var _0x48a902=0x0;_0x48a902<_0x41b92e[_0x6b01('0x3d')]['ids'][_0x6b01('0x44')];_0x48a902+=0x1){socket[_0x6b01('0xa4')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x41b92e['query']['ids'][_0x48a902]),'UserId':Number(_0x41b92e[_0x6b01('0x56')]['id'])});}}else{socket['emit'](_0x6b01('0x124'),{'ChatInteractionId':Number(_0x41b92e[_0x6b01('0x3d')][_0x6b01('0x5a')]),'UserId':Number(_0x41b92e[_0x6b01('0x56')]['id'])});}});}})[_0x6b01('0xf')](respondWithStatusCode(_0x124db5,null))[_0x6b01('0x17')](handleError(_0x124db5,null));};exports[_0x6b01('0x125')]=function(_0x4bd0a3,_0x59f12){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x4bd0a3['params']['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x59f12,null))[_0x6b01('0xf')](function(_0x3832d1){if(_0x3832d1){return _0x3832d1[_0x6b01('0x125')](_0x4bd0a3['body'][_0x6b01('0x5a')],_['omit'](_0x4bd0a3[_0x6b01('0x55')],['ids','id'])||{})['spread'](function(){for(var _0x513965=0x0;_0x513965<_0x4bd0a3[_0x6b01('0x55')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x513965+=0x1){socket[_0x6b01('0xa4')](_0x6b01('0x126'),{'MailInteractionId':Number(_0x4bd0a3['body']['ids'][_0x513965]),'UserId':Number(_0x4bd0a3[_0x6b01('0x56')]['id'])});}return _0x4bd0a3[_0x6b01('0x55')][_0x6b01('0x5a')];});}})[_0x6b01('0xf')](respondWithResult(_0x59f12,null))['catch'](handleError(_0x59f12,null));};exports[_0x6b01('0x127')]=function(_0x2b1223,_0x263ad1){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x2b1223['params']['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x263ad1,null))[_0x6b01('0xf')](function(_0x1b7932){if(_0x1b7932){return _0x1b7932[_0x6b01('0x127')](_0x2b1223['query']['ids'])['then'](function(){if(_[_0x6b01('0xa3')](_0x2b1223[_0x6b01('0x3d')]['ids'])){for(var _0x131ef2=0x0;_0x131ef2<_0x2b1223[_0x6b01('0x3d')]['ids'][_0x6b01('0x44')];_0x131ef2+=0x1){socket[_0x6b01('0xa4')](_0x6b01('0x128'),{'MailInteractionId':Number(_0x2b1223['query'][_0x6b01('0x5a')][_0x131ef2]),'UserId':Number(_0x2b1223[_0x6b01('0x56')]['id'])});}}else{socket[_0x6b01('0xa4')](_0x6b01('0x128'),{'MailInteractionId':Number(_0x2b1223[_0x6b01('0x3d')][_0x6b01('0x5a')]),'UserId':Number(_0x2b1223[_0x6b01('0x56')]['id'])});}});}})[_0x6b01('0xf')](respondWithStatusCode(_0x263ad1,null))[_0x6b01('0x17')](handleError(_0x263ad1,null));};exports[_0x6b01('0x129')]=function(_0x3ce9cf,_0x43aea4){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x3ce9cf[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0x43aea4,null))[_0x6b01('0xf')](function(_0x12e991){if(_0x12e991){return _0x12e991['addFaxInteractions'](_0x3ce9cf['body'][_0x6b01('0x5a')],_[_0x6b01('0x59')](_0x3ce9cf[_0x6b01('0x55')],['ids','id'])||{})[_0x6b01('0x9b')](function(){for(var _0x4e17b1=0x0;_0x4e17b1<_0x3ce9cf['body'][_0x6b01('0x5a')]['length'];_0x4e17b1+=0x1){socket['emit'](_0x6b01('0x12a'),{'FaxInteractionId':Number(_0x3ce9cf[_0x6b01('0x55')][_0x6b01('0x5a')][_0x4e17b1]),'UserId':Number(_0x3ce9cf[_0x6b01('0x56')]['id'])});}return _0x3ce9cf['body']['ids'];});}})[_0x6b01('0xf')](respondWithResult(_0x43aea4,null))[_0x6b01('0x17')](handleError(_0x43aea4,null));};exports['removeFaxInteractions']=function(_0x3bb2d1,_0x28b9d1){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x3bb2d1[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x28b9d1,null))[_0x6b01('0xf')](function(_0x20941f){if(_0x20941f){return _0x20941f['removeFaxInteractions'](_0x3bb2d1[_0x6b01('0x3d')][_0x6b01('0x5a')])['then'](function(){if(_[_0x6b01('0xa3')](_0x3bb2d1[_0x6b01('0x3d')][_0x6b01('0x5a')])){for(var _0x84587f=0x0;_0x84587f<_0x3bb2d1['query'][_0x6b01('0x5a')]['length'];_0x84587f+=0x1){socket[_0x6b01('0xa4')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3bb2d1[_0x6b01('0x3d')]['ids'][_0x84587f]),'UserId':Number(_0x3bb2d1[_0x6b01('0x56')]['id'])});}}else{socket['emit'](_0x6b01('0x12b'),{'FaxInteractionId':Number(_0x3bb2d1[_0x6b01('0x3d')][_0x6b01('0x5a')]),'UserId':Number(_0x3bb2d1[_0x6b01('0x56')]['id'])});}});}})['then'](respondWithStatusCode(_0x28b9d1,null))[_0x6b01('0x17')](handleError(_0x28b9d1,null));};exports[_0x6b01('0x12c')]=function(_0x8e9750,_0x5847e5){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x8e9750[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0x5847e5,null))[_0x6b01('0xf')](function(_0x18e0f4){if(_0x18e0f4){return _0x18e0f4[_0x6b01('0x12c')](_0x8e9750[_0x6b01('0x55')][_0x6b01('0x5a')],_[_0x6b01('0x59')](_0x8e9750['body'],[_0x6b01('0x5a'),'id'])||{})[_0x6b01('0x9b')](function(){for(var _0x2aee23=0x0;_0x2aee23<_0x8e9750[_0x6b01('0x55')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x2aee23+=0x1){socket[_0x6b01('0xa4')]('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x8e9750[_0x6b01('0x55')][_0x6b01('0x5a')][_0x2aee23]),'UserId':Number(_0x8e9750[_0x6b01('0x56')]['id'])});}return _0x8e9750[_0x6b01('0x55')][_0x6b01('0x5a')];});}})[_0x6b01('0xf')](respondWithResult(_0x5847e5,null))['catch'](handleError(_0x5847e5,null));};exports[_0x6b01('0x12d')]=function(_0x357943,_0x57b659){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x357943['params']['id']}})['then'](handleEntityNotFound(_0x57b659,null))['then'](function(_0xc05b2d){if(_0xc05b2d){return _0xc05b2d[_0x6b01('0x12d')](_0x357943[_0x6b01('0x3d')][_0x6b01('0x5a')])[_0x6b01('0xf')](function(){if(_[_0x6b01('0xa3')](_0x357943[_0x6b01('0x3d')]['ids'])){for(var _0x101555=0x0;_0x101555<_0x357943[_0x6b01('0x3d')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x101555+=0x1){socket[_0x6b01('0xa4')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x357943[_0x6b01('0x3d')][_0x6b01('0x5a')][_0x101555]),'UserId':Number(_0x357943[_0x6b01('0x56')]['id'])});}}else{socket[_0x6b01('0xa4')](_0x6b01('0x12e'),{'SmsInteractionId':Number(_0x357943['query'][_0x6b01('0x5a')]),'UserId':Number(_0x357943['params']['id'])});}});}})['then'](respondWithStatusCode(_0x57b659,null))[_0x6b01('0x17')](handleError(_0x57b659,null));};exports[_0x6b01('0x12f')]=function(_0x574489,_0x4a08b5){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x574489[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0x4a08b5,null))[_0x6b01('0xf')](function(_0x53d7be){if(_0x53d7be){return _0x53d7be[_0x6b01('0x12f')](_0x574489[_0x6b01('0x55')]['ids'],_[_0x6b01('0x59')](_0x574489['body'],[_0x6b01('0x5a'),'id'])||{})['spread'](function(){for(var _0x4b2b00=0x0;_0x4b2b00<_0x574489[_0x6b01('0x55')]['ids'][_0x6b01('0x44')];_0x4b2b00+=0x1){socket[_0x6b01('0xa4')](_0x6b01('0x130'),{'OpenchannelInteractionId':Number(_0x574489[_0x6b01('0x55')][_0x6b01('0x5a')][_0x4b2b00]),'UserId':Number(_0x574489[_0x6b01('0x56')]['id'])});}return _0x574489[_0x6b01('0x55')][_0x6b01('0x5a')];});}})['then'](respondWithResult(_0x4a08b5,null))['catch'](handleError(_0x4a08b5,null));};exports[_0x6b01('0x131')]=function(_0x4c632d,_0x1de2cf){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x4c632d[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x1de2cf,null))['then'](function(_0x6603bc){if(_0x6603bc){return _0x6603bc[_0x6b01('0x131')](_0x4c632d['query']['ids'])[_0x6b01('0xf')](function(){if(_[_0x6b01('0xa3')](_0x4c632d[_0x6b01('0x3d')][_0x6b01('0x5a')])){for(var _0x24cc30=0x0;_0x24cc30<_0x4c632d['query'][_0x6b01('0x5a')][_0x6b01('0x44')];_0x24cc30+=0x1){socket[_0x6b01('0xa4')](_0x6b01('0x132'),{'OpenchannelInteractionId':Number(_0x4c632d[_0x6b01('0x3d')][_0x6b01('0x5a')][_0x24cc30]),'UserId':Number(_0x4c632d[_0x6b01('0x56')]['id'])});}}else{socket[_0x6b01('0xa4')](_0x6b01('0x132'),{'OpenchannelInteractionId':Number(_0x4c632d[_0x6b01('0x3d')][_0x6b01('0x5a')]),'UserId':Number(_0x4c632d[_0x6b01('0x56')]['id'])});}});}})[_0x6b01('0xf')](respondWithStatusCode(_0x1de2cf,null))[_0x6b01('0x17')](handleError(_0x1de2cf,null));};exports['addWhatsappInteractions']=function(_0x2343d,_0x27faca){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x2343d[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x27faca,null))[_0x6b01('0xf')](function(_0x1c9a30){if(_0x1c9a30){return _0x1c9a30[_0x6b01('0x133')](_0x2343d[_0x6b01('0x55')]['ids'],_[_0x6b01('0x59')](_0x2343d[_0x6b01('0x55')],[_0x6b01('0x5a'),'id'])||{})['spread'](function(){for(var _0x3e8cf8=0x0;_0x3e8cf8<_0x2343d[_0x6b01('0x55')][_0x6b01('0x5a')][_0x6b01('0x44')];_0x3e8cf8+=0x1){socket['emit'](_0x6b01('0x134'),{'WhatsappInteractionId':Number(_0x2343d[_0x6b01('0x55')][_0x6b01('0x5a')][_0x3e8cf8]),'UserId':Number(_0x2343d[_0x6b01('0x56')]['id'])});}return _0x2343d['body'][_0x6b01('0x5a')];});}})['then'](respondWithResult(_0x27faca,null))[_0x6b01('0x17')](handleError(_0x27faca,null));};exports[_0x6b01('0x135')]=function(_0x48821a,_0x21b4b6){return db['User']['find']({'where':{'id':_0x48821a[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x21b4b6,null))['then'](function(_0x3c2f3e){if(_0x3c2f3e){return _0x3c2f3e[_0x6b01('0x135')](_0x48821a[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})[_0x6b01('0xf')](respondWithStatusCode(_0x21b4b6,null))[_0x6b01('0x17')](handleError(_0x21b4b6,null));};exports[_0x6b01('0x136')]=function(_0x4b0781,_0x4062d2){var _0x29a46d={};var _0x58828d={};var _0x2341e9;var _0x116ef9;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x4b0781[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x4062d2,null))[_0x6b01('0xf')](function(_0x1450d6){if(_0x1450d6){_0x2341e9=_0x1450d6;_0x58828d[_0x6b01('0x4c')]=_['keys'](db[_0x6b01('0x137')]['rawAttributes']);_0x58828d[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x4b0781[_0x6b01('0x3d')]);_0x58828d['filters']=_['intersection'](_0x58828d[_0x6b01('0x4c')],_0x58828d['query']);_0x29a46d[_0x6b01('0x40')]=_['intersection'](_0x58828d[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x4b0781[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x29a46d[_0x6b01('0x40')]=_0x29a46d[_0x6b01('0x40')]['length']?_0x29a46d[_0x6b01('0x40')]:_0x58828d[_0x6b01('0x4c')];_0x29a46d['order']=qs[_0x6b01('0xbd')](_0x4b0781[_0x6b01('0x3d')]['sort']);_0x29a46d[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x4b0781[_0x6b01('0x3d')],_0x58828d[_0x6b01('0x4e')]));if(_0x4b0781[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x29a46d['where']=_[_0x6b01('0xbf')](_0x29a46d['where'],{'$or':_[_0x6b01('0x2a')](_0x29a46d[_0x6b01('0x40')],function(_0x5b8d50){var _0x456bdd={};_0x456bdd[_0x5b8d50]={'$like':'%'+_0x4b0781['query'][_0x6b01('0x39')]+'%'};return _0x456bdd;})});}_0x29a46d=_[_0x6b01('0xbf')]({},_0x29a46d,_0x4b0781['options']);return _0x2341e9[_0x6b01('0x136')](_0x29a46d);}})[_0x6b01('0xf')](function(_0x75ac8b){if(_0x75ac8b){_0x116ef9=_0x75ac8b[_0x6b01('0x44')];if(!_0x4b0781[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x29a46d[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x4b0781[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x29a46d[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x4b0781[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x2341e9[_0x6b01('0x136')](_0x29a46d);}})['then'](function(_0x8e1654){if(_0x8e1654){return _0x8e1654?{'count':_0x116ef9,'rows':_0x8e1654}:null;}})[_0x6b01('0xf')](respondWithResult(_0x4062d2,null))['catch'](handleError(_0x4062d2,null));};exports[_0x6b01('0x138')]=function(_0x100837,_0xa38112){var _0x5959e9={};var _0x237f09={};var _0x4efbaa;var _0x462499;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x100837['params']['id']}})['then'](handleEntityNotFound(_0xa38112,null))['then'](function(_0xd6313a){if(_0xd6313a){_0x4efbaa=_0xd6313a;_0x237f09[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_0x6b01('0x139')][_0x6b01('0x35')]);_0x237f09['query']=_['keys'](_0x100837['query']);_0x237f09[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x237f09[_0x6b01('0x4c')],_0x237f09['query']);_0x5959e9[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x237f09[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x100837[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x5959e9[_0x6b01('0x40')]=_0x5959e9['attributes'][_0x6b01('0x44')]?_0x5959e9['attributes']:_0x237f09['model'];_0x5959e9[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x100837['query'][_0x6b01('0xbd')]);_0x5959e9[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x100837[_0x6b01('0x3d')],_0x237f09['filters']));if(_0x100837['query'][_0x6b01('0x39')]){_0x5959e9[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x5959e9[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x5959e9[_0x6b01('0x40')],function(_0x27fb79){var _0x36f2ec={};_0x36f2ec[_0x27fb79]={'$like':'%'+_0x100837[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x36f2ec;})});}_0x5959e9=_[_0x6b01('0xbf')]({},_0x5959e9,_0x100837[_0x6b01('0x51')]);return _0x4efbaa[_0x6b01('0x138')](_0x5959e9);}})[_0x6b01('0xf')](function(_0x440453){if(_0x440453){_0x462499=_0x440453['length'];if(!_0x100837['query']['hasOwnProperty'](_0x6b01('0xc5'))){_0x5959e9[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x100837[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x5959e9[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x100837[_0x6b01('0x3d')]['offset']);}return _0x4efbaa['getFaxAccounts'](_0x5959e9);}})[_0x6b01('0xf')](function(_0x308852){if(_0x308852){return _0x308852?{'count':_0x462499,'rows':_0x308852}:null;}})[_0x6b01('0xf')](respondWithResult(_0xa38112,null))[_0x6b01('0x17')](handleError(_0xa38112,null));};exports[_0x6b01('0x13a')]=function(_0x1d4b06,_0x2eb9a4){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x1d4b06[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x2eb9a4,null))[_0x6b01('0xf')](function(_0x4d3714){if(_0x4d3714){return _0x4d3714[_0x6b01('0x13a')](_0x1d4b06[_0x6b01('0x55')]['ids'],_['omit'](_0x1d4b06[_0x6b01('0x55')],[_0x6b01('0x5a'),'id'])||{});}})['then'](respondWithResult(_0x2eb9a4,null))[_0x6b01('0x17')](handleError(_0x2eb9a4,null));};exports['removeFaxAccounts']=function(_0x211710,_0x4cf51b){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x211710[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x4cf51b,null))[_0x6b01('0xf')](function(_0x84cd2b){if(_0x84cd2b){return _0x84cd2b[_0x6b01('0x13b')](_0x211710[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})[_0x6b01('0xf')](respondWithStatusCode(_0x4cf51b,null))['catch'](handleError(_0x4cf51b,null));};exports['getMailAccounts']=function(_0x11884f,_0x35fbf7){var _0x5cd08c={};var _0x26fbab={};var _0x42093a;var _0x55b3f4;return db['User']['findOne']({'where':{'id':_0x11884f[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x35fbf7,null))[_0x6b01('0xf')](function(_0xd4c3aa){if(_0xd4c3aa){_0x42093a=_0xd4c3aa;_0x26fbab[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_0x6b01('0x13c')][_0x6b01('0x35')]);_0x26fbab[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x11884f[_0x6b01('0x3d')]);_0x26fbab[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x26fbab[_0x6b01('0x4c')],_0x26fbab['query']);_0x5cd08c[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x26fbab[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x11884f[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x5cd08c['attributes']=_0x5cd08c['attributes'][_0x6b01('0x44')]?_0x5cd08c[_0x6b01('0x40')]:_0x26fbab['model'];_0x5cd08c[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x11884f[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x5cd08c[_0x6b01('0x3b')]=qs['filters'](_[_0x6b01('0xbe')](_0x11884f['query'],_0x26fbab[_0x6b01('0x4e')]));if(_0x11884f[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x5cd08c['where']=_[_0x6b01('0xbf')](_0x5cd08c[_0x6b01('0x3b')],{'$or':_['map'](_0x5cd08c['attributes'],function(_0x5e2413){var _0x110884={};_0x110884[_0x5e2413]={'$like':'%'+_0x11884f['query'][_0x6b01('0x39')]+'%'};return _0x110884;})});}_0x5cd08c=_[_0x6b01('0xbf')]({},_0x5cd08c,_0x11884f[_0x6b01('0x51')]);return _0x42093a[_0x6b01('0x13d')](_0x5cd08c);}})[_0x6b01('0xf')](function(_0x573716){if(_0x573716){_0x55b3f4=_0x573716[_0x6b01('0x44')];if(!_0x11884f[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x5cd08c[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x11884f[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x5cd08c['offset']=qs[_0x6b01('0x1c')](_0x11884f['query'][_0x6b01('0x1c')]);}return _0x42093a[_0x6b01('0x13d')](_0x5cd08c);}})['then'](function(_0x5624d4){if(_0x5624d4){return _0x5624d4?{'count':_0x55b3f4,'rows':_0x5624d4}:null;}})[_0x6b01('0xf')](respondWithResult(_0x35fbf7,null))['catch'](handleError(_0x35fbf7,null));};exports[_0x6b01('0x13e')]=function(_0x5bdc0f,_0x501ceb){return db[_0x6b01('0x3c')]['find']({'where':{'id':_0x5bdc0f[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x501ceb,null))[_0x6b01('0xf')](function(_0xe4969c){if(_0xe4969c){return _0xe4969c[_0x6b01('0x13e')](_0x5bdc0f[_0x6b01('0x55')][_0x6b01('0x5a')],_[_0x6b01('0x59')](_0x5bdc0f[_0x6b01('0x55')],[_0x6b01('0x5a'),'id'])||{});}})['then'](respondWithResult(_0x501ceb,null))[_0x6b01('0x17')](handleError(_0x501ceb,null));};exports[_0x6b01('0x13f')]=function(_0x33bcdd,_0x3c2a46){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x33bcdd[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x3c2a46,null))[_0x6b01('0xf')](function(_0x24ec41){if(_0x24ec41){return _0x24ec41[_0x6b01('0x13f')](_0x33bcdd[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})[_0x6b01('0xf')](respondWithStatusCode(_0x3c2a46,null))[_0x6b01('0x17')](handleError(_0x3c2a46,null));};exports[_0x6b01('0x140')]=function(_0x3eaa98,_0x1cd5a4){var _0x452646={};var _0x2b40e6={};var _0x47ef48;var _0xe7bffb;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x3eaa98[_0x6b01('0x56')]['id']}})['then'](handleEntityNotFound(_0x1cd5a4,null))[_0x6b01('0xf')](function(_0x4d31ba){if(_0x4d31ba){_0x47ef48=_0x4d31ba;_0x2b40e6['model']=_['keys'](db[_0x6b01('0x141')][_0x6b01('0x35')]);_0x2b40e6[_0x6b01('0x3d')]=_['keys'](_0x3eaa98[_0x6b01('0x3d')]);_0x2b40e6[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x2b40e6[_0x6b01('0x4c')],_0x2b40e6[_0x6b01('0x3d')]);_0x452646[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x2b40e6[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x3eaa98['query'][_0x6b01('0x50')]));_0x452646[_0x6b01('0x40')]=_0x452646[_0x6b01('0x40')]['length']?_0x452646[_0x6b01('0x40')]:_0x2b40e6[_0x6b01('0x4c')];_0x452646[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x3eaa98[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x452646[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x3eaa98['query'],_0x2b40e6[_0x6b01('0x4e')]));if(_0x3eaa98[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x452646['where']=_[_0x6b01('0xbf')](_0x452646[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x452646[_0x6b01('0x40')],function(_0x1dfd5e){var _0x4065cb={};_0x4065cb[_0x1dfd5e]={'$like':'%'+_0x3eaa98[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x4065cb;})});}_0x452646=_[_0x6b01('0xbf')]({},_0x452646,_0x3eaa98[_0x6b01('0x51')]);return _0x47ef48['getOpenchannelAccounts'](_0x452646);}})[_0x6b01('0xf')](function(_0x5509c8){if(_0x5509c8){_0xe7bffb=_0x5509c8[_0x6b01('0x44')];if(!_0x3eaa98[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x452646[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x3eaa98['query']['limit']);_0x452646[_0x6b01('0x1c')]=qs['offset'](_0x3eaa98[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x47ef48[_0x6b01('0x140')](_0x452646);}})['then'](function(_0x3603f3){if(_0x3603f3){return _0x3603f3?{'count':_0xe7bffb,'rows':_0x3603f3}:null;}})[_0x6b01('0xf')](respondWithResult(_0x1cd5a4,null))[_0x6b01('0x17')](handleError(_0x1cd5a4,null));};exports[_0x6b01('0x142')]=function(_0x334af1,_0x494477){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x334af1[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x494477,null))[_0x6b01('0xf')](function(_0x1e4cf2){if(_0x1e4cf2){return _0x1e4cf2['addOpenchannelAccounts'](_0x334af1['body'][_0x6b01('0x5a')],_['omit'](_0x334af1['body'],[_0x6b01('0x5a'),'id'])||{});}})[_0x6b01('0xf')](respondWithResult(_0x494477,null))[_0x6b01('0x17')](handleError(_0x494477,null));};exports[_0x6b01('0x143')]=function(_0x21c6a3,_0x4d710b){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x21c6a3['params']['id']}})['then'](handleEntityNotFound(_0x4d710b,null))[_0x6b01('0xf')](function(_0x1aea40){if(_0x1aea40){return _0x1aea40[_0x6b01('0x143')](_0x21c6a3[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})[_0x6b01('0xf')](respondWithStatusCode(_0x4d710b,null))['catch'](handleError(_0x4d710b,null));};exports[_0x6b01('0x144')]=function(_0x1d1744,_0x33a502){var _0x4bb2b5={};var _0x53d6a6={};var _0x98e2f9;var _0x3a9c9d;return db[_0x6b01('0x3c')][_0x6b01('0x8a')]({'where':{'id':_0x1d1744[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x33a502,null))[_0x6b01('0xf')](function(_0x54e17d){if(_0x54e17d){_0x98e2f9=_0x54e17d;_0x53d6a6['model']=_[_0x6b01('0x4d')](db[_0x6b01('0x145')]['rawAttributes']);_0x53d6a6['query']=_[_0x6b01('0x4d')](_0x1d1744[_0x6b01('0x3d')]);_0x53d6a6[_0x6b01('0x4e')]=_['intersection'](_0x53d6a6[_0x6b01('0x4c')],_0x53d6a6['query']);_0x4bb2b5[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x53d6a6['model'],qs[_0x6b01('0x50')](_0x1d1744[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x4bb2b5[_0x6b01('0x40')]=_0x4bb2b5[_0x6b01('0x40')][_0x6b01('0x44')]?_0x4bb2b5[_0x6b01('0x40')]:_0x53d6a6[_0x6b01('0x4c')];_0x4bb2b5['order']=qs['sort'](_0x1d1744[_0x6b01('0x3d')]['sort']);_0x4bb2b5[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x1d1744[_0x6b01('0x3d')],_0x53d6a6[_0x6b01('0x4e')]));if(_0x1d1744[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x4bb2b5[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x4bb2b5['where'],{'$or':_['map'](_0x4bb2b5[_0x6b01('0x40')],function(_0x18a11d){var _0x4e14c9={};_0x4e14c9[_0x18a11d]={'$like':'%'+_0x1d1744[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x4e14c9;})});}_0x4bb2b5=_[_0x6b01('0xbf')]({},_0x4bb2b5,_0x1d1744[_0x6b01('0x51')]);return _0x98e2f9['getSmsAccounts'](_0x4bb2b5);}})[_0x6b01('0xf')](function(_0x4c0df3){if(_0x4c0df3){_0x3a9c9d=_0x4c0df3[_0x6b01('0x44')];if(!_0x1d1744[_0x6b01('0x3d')]['hasOwnProperty']('nolimit')){_0x4bb2b5[_0x6b01('0x1e')]=qs['limit'](_0x1d1744['query'][_0x6b01('0x1e')]);_0x4bb2b5['offset']=qs[_0x6b01('0x1c')](_0x1d1744[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x98e2f9[_0x6b01('0x144')](_0x4bb2b5);}})[_0x6b01('0xf')](function(_0x53d1a7){if(_0x53d1a7){return _0x53d1a7?{'count':_0x3a9c9d,'rows':_0x53d1a7}:null;}})['then'](respondWithResult(_0x33a502,null))[_0x6b01('0x17')](handleError(_0x33a502,null));};exports[_0x6b01('0x146')]=function(_0x34a141,_0x2c2b28){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x34a141[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x2c2b28,null))[_0x6b01('0xf')](function(_0x57e772){if(_0x57e772){return _0x57e772[_0x6b01('0x146')](_0x34a141[_0x6b01('0x55')][_0x6b01('0x5a')],_[_0x6b01('0x59')](_0x34a141[_0x6b01('0x55')],[_0x6b01('0x5a'),'id'])||{});}})[_0x6b01('0xf')](respondWithResult(_0x2c2b28,null))['catch'](handleError(_0x2c2b28,null));};exports['removeSmsAccounts']=function(_0x553890,_0x577e2d){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x553890['params']['id']}})['then'](handleEntityNotFound(_0x577e2d,null))['then'](function(_0x76a222){if(_0x76a222){return _0x76a222[_0x6b01('0x147')](_0x553890[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})['then'](respondWithStatusCode(_0x577e2d,null))[_0x6b01('0x17')](handleError(_0x577e2d,null));};exports['getChatWebsites']=function(_0x29f6f7,_0x1681d7){var _0x50f95f={};var _0x540951={};var _0x5df840;var _0x5ba7d6;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x29f6f7[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x1681d7,null))[_0x6b01('0xf')](function(_0x12fdd0){if(_0x12fdd0){_0x5df840=_0x12fdd0;_0x540951[_0x6b01('0x4c')]=_['keys'](db[_0x6b01('0x148')]['rawAttributes']);_0x540951[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x29f6f7[_0x6b01('0x3d')]);_0x540951[_0x6b01('0x4e')]=_['intersection'](_0x540951[_0x6b01('0x4c')],_0x540951[_0x6b01('0x3d')]);_0x50f95f['attributes']=_[_0x6b01('0x4f')](_0x540951['model'],qs[_0x6b01('0x50')](_0x29f6f7[_0x6b01('0x3d')]['fields']));_0x50f95f['attributes']=_0x50f95f[_0x6b01('0x40')]['length']?_0x50f95f['attributes']:_0x540951[_0x6b01('0x4c')];_0x50f95f[_0x6b01('0xc7')]=qs['sort'](_0x29f6f7[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x50f95f[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x29f6f7[_0x6b01('0x3d')],_0x540951[_0x6b01('0x4e')]));if(_0x29f6f7[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x50f95f[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x50f95f['where'],{'$or':_['map'](_0x50f95f[_0x6b01('0x40')],function(_0xebda43){var _0x552d6b={};_0x552d6b[_0xebda43]={'$like':'%'+_0x29f6f7[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x552d6b;})});}_0x50f95f=_['merge']({},_0x50f95f,_0x29f6f7[_0x6b01('0x51')]);return _0x5df840[_0x6b01('0x149')](_0x50f95f);}})[_0x6b01('0xf')](function(_0x275acf){if(_0x275acf){_0x5ba7d6=_0x275acf[_0x6b01('0x44')];if(!_0x29f6f7['query'][_0x6b01('0xc0')](_0x6b01('0xc5'))){_0x50f95f[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x29f6f7[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x50f95f[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0x29f6f7['query'][_0x6b01('0x1c')]);}return _0x5df840['getChatWebsites'](_0x50f95f);}})[_0x6b01('0xf')](function(_0x40ecd9){if(_0x40ecd9){return _0x40ecd9?{'count':_0x5ba7d6,'rows':_0x40ecd9}:null;}})[_0x6b01('0xf')](respondWithResult(_0x1681d7,null))[_0x6b01('0x17')](handleError(_0x1681d7,null));};exports[_0x6b01('0x14a')]=function(_0x4b069b,_0xe588a6){return db[_0x6b01('0x3c')]['find']({'where':{'id':_0x4b069b[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0xe588a6,null))[_0x6b01('0xf')](function(_0x44d963){if(_0x44d963){return _0x44d963[_0x6b01('0x14a')](_0x4b069b[_0x6b01('0x55')][_0x6b01('0x5a')],_[_0x6b01('0x59')](_0x4b069b['body'],[_0x6b01('0x5a'),'id'])||{});}})[_0x6b01('0xf')](respondWithResult(_0xe588a6,null))[_0x6b01('0x17')](handleError(_0xe588a6,null));};exports[_0x6b01('0x14b')]=function(_0x48b34e,_0xc1fa99){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x48b34e[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0xc1fa99,null))[_0x6b01('0xf')](function(_0x547d9a){if(_0x547d9a){return _0x547d9a[_0x6b01('0x14b')](_0x48b34e['query'][_0x6b01('0x5a')]);}})['then'](respondWithStatusCode(_0xc1fa99,null))[_0x6b01('0x17')](handleError(_0xc1fa99,null));};exports[_0x6b01('0x14c')]=function(_0xa37626,_0x13df04){var _0x2d94d5={};var _0x1feb70={};var _0x3b9d4b;var _0x5c26bb;return db['User'][_0x6b01('0x8a')]({'where':{'id':_0xa37626[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x13df04,null))[_0x6b01('0xf')](function(_0x22bb5c){if(_0x22bb5c){_0x3b9d4b=_0x22bb5c;_0x1feb70[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db['WhatsappAccount'][_0x6b01('0x35')]);_0x1feb70[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0xa37626[_0x6b01('0x3d')]);_0x1feb70[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0x1feb70[_0x6b01('0x4c')],_0x1feb70[_0x6b01('0x3d')]);_0x2d94d5[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x1feb70['model'],qs['fields'](_0xa37626[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x2d94d5['attributes']=_0x2d94d5['attributes'][_0x6b01('0x44')]?_0x2d94d5[_0x6b01('0x40')]:_0x1feb70[_0x6b01('0x4c')];_0x2d94d5[_0x6b01('0xc7')]=qs['sort'](_0xa37626[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x2d94d5['where']=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0xa37626[_0x6b01('0x3d')],_0x1feb70['filters']));if(_0xa37626[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x2d94d5[_0x6b01('0x3b')]=_['merge'](_0x2d94d5['where'],{'$or':_['map'](_0x2d94d5[_0x6b01('0x40')],function(_0x1244e9){var _0x1551fc={};_0x1551fc[_0x1244e9]={'$like':'%'+_0xa37626['query']['filter']+'%'};return _0x1551fc;})});}_0x2d94d5=_[_0x6b01('0xbf')]({},_0x2d94d5,_0xa37626[_0x6b01('0x51')]);return _0x3b9d4b['getWhatsappAccounts'](_0x2d94d5);}})[_0x6b01('0xf')](function(_0x35c0c2){if(_0x35c0c2){_0x5c26bb=_0x35c0c2[_0x6b01('0x44')];if(!_0xa37626[_0x6b01('0x3d')]['hasOwnProperty'](_0x6b01('0xc5'))){_0x2d94d5[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0xa37626[_0x6b01('0x3d')][_0x6b01('0x1e')]);_0x2d94d5[_0x6b01('0x1c')]=qs[_0x6b01('0x1c')](_0xa37626[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x3b9d4b['getWhatsappAccounts'](_0x2d94d5);}})[_0x6b01('0xf')](function(_0x25dff9){if(_0x25dff9){return _0x25dff9?{'count':_0x5c26bb,'rows':_0x25dff9}:null;}})[_0x6b01('0xf')](respondWithResult(_0x13df04,null))[_0x6b01('0x17')](handleError(_0x13df04,null));};exports[_0x6b01('0x14d')]=function(_0x57605a,_0x17911c){return db['User'][_0x6b01('0x2e')]({'where':{'id':_0x57605a[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x17911c,null))[_0x6b01('0xf')](function(_0x502939){if(_0x502939){return _0x502939[_0x6b01('0x14d')](_0x57605a['body'][_0x6b01('0x5a')],_['omit'](_0x57605a['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x17911c,null))[_0x6b01('0x17')](handleError(_0x17911c,null));};exports[_0x6b01('0x14e')]=function(_0x623999,_0xccb3d6){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x623999[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0xccb3d6,null))[_0x6b01('0xf')](function(_0x245451){if(_0x245451){return _0x245451['removeWhatsappAccounts'](_0x623999[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})['then'](respondWithStatusCode(_0xccb3d6,null))[_0x6b01('0x17')](handleError(_0xccb3d6,null));};exports[_0x6b01('0x14f')]=function(_0x4dbf3a,_0x12da57){var _0x3555b8={};var _0xba0e91={};var _0x529483;var _0x120ec3;return db[_0x6b01('0x3c')]['findOne']({'where':{'id':_0x4dbf3a[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x12da57,null))[_0x6b01('0xf')](function(_0x29f074){if(_0x29f074){_0x529483=_0x29f074;_0xba0e91[_0x6b01('0x4c')]=_[_0x6b01('0x4d')](db[_0x6b01('0x150')][_0x6b01('0x35')]);_0xba0e91['query']=_[_0x6b01('0x4d')](_0x4dbf3a[_0x6b01('0x3d')]);_0xba0e91[_0x6b01('0x4e')]=_[_0x6b01('0x4f')](_0xba0e91['model'],_0xba0e91[_0x6b01('0x3d')]);_0x3555b8[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0xba0e91[_0x6b01('0x4c')],qs[_0x6b01('0x50')](_0x4dbf3a['query'][_0x6b01('0x50')]));_0x3555b8[_0x6b01('0x40')]=_0x3555b8[_0x6b01('0x40')]['length']?_0x3555b8[_0x6b01('0x40')]:_0xba0e91[_0x6b01('0x4c')];_0x3555b8[_0x6b01('0xc7')]=qs[_0x6b01('0xbd')](_0x4dbf3a[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x3555b8[_0x6b01('0x3b')]=qs[_0x6b01('0x4e')](_[_0x6b01('0xbe')](_0x4dbf3a[_0x6b01('0x3d')],_0xba0e91[_0x6b01('0x4e')]));if(_0x4dbf3a['query'][_0x6b01('0x39')]){_0x3555b8['where']=_[_0x6b01('0xbf')](_0x3555b8['where'],{'$or':_[_0x6b01('0x2a')](_0x3555b8[_0x6b01('0x40')],function(_0x52da34){var _0x2604f4={};_0x2604f4[_0x52da34]={'$like':'%'+_0x4dbf3a['query'][_0x6b01('0x39')]+'%'};return _0x2604f4;})});}_0x3555b8=_['merge']({},_0x3555b8,_0x4dbf3a['options']);return _0x529483[_0x6b01('0x14f')](_0x3555b8);}})[_0x6b01('0xf')](function(_0x1453aa){if(_0x1453aa){_0x120ec3=_0x1453aa[_0x6b01('0x44')];if(!_0x4dbf3a[_0x6b01('0x3d')][_0x6b01('0xc0')]('nolimit')){_0x3555b8[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x4dbf3a['query'][_0x6b01('0x1e')]);_0x3555b8['offset']=qs[_0x6b01('0x1c')](_0x4dbf3a[_0x6b01('0x3d')][_0x6b01('0x1c')]);}return _0x529483[_0x6b01('0x14f')](_0x3555b8);}})['then'](function(_0x33bfff){if(_0x33bfff){return _0x33bfff?{'count':_0x120ec3,'rows':_0x33bfff}:null;}})[_0x6b01('0xf')](respondWithResult(_0x12da57,null))[_0x6b01('0x17')](handleError(_0x12da57,null));};exports[_0x6b01('0x151')]=function(_0x5c1960,_0x350356){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x5c1960[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x350356,null))[_0x6b01('0xf')](function(_0x545d98){if(_0x545d98){return _0x545d98[_0x6b01('0x151')](_0x5c1960[_0x6b01('0x55')]['ids'],_[_0x6b01('0x59')](_0x5c1960[_0x6b01('0x55')],[_0x6b01('0x5a'),'id'])||{});}})[_0x6b01('0xf')](respondWithResult(_0x350356,null))[_0x6b01('0x17')](handleError(_0x350356,null));};exports[_0x6b01('0x152')]=function(_0x1e1e5d,_0x19957b){return db[_0x6b01('0x3c')]['find']({'where':{'id':_0x1e1e5d[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x19957b,null))[_0x6b01('0xf')](function(_0x5b9323){if(_0x5b9323){return _0x5b9323[_0x6b01('0x152')](_0x1e1e5d[_0x6b01('0x3d')][_0x6b01('0x5a')]);}})[_0x6b01('0xf')](respondWithStatusCode(_0x19957b,null))[_0x6b01('0x17')](handleError(_0x19957b,null));};exports[_0x6b01('0x153')]=function(_0x151854,_0x12646f){var _0x4f10dd={},_0x1b6d76={},_0x284798={'count':0x0,'rows':[]};var _0x2fd617=db[_0x6b01('0x154')]['rawAttributes'];_0x1b6d76[_0x6b01('0x4c')]=_['keys'](_0x2fd617);_0x1b6d76[_0x6b01('0x3d')]=_[_0x6b01('0x4d')](_0x151854[_0x6b01('0x3d')]);_0x1b6d76[_0x6b01('0x4e')]=_['intersection'](_0x1b6d76[_0x6b01('0x4c')],_0x1b6d76['query']);_0x1b6d76[_0x6b01('0x4e')]=_[_0x6b01('0x155')](_0x1b6d76['filters'],[_0x6b01('0x156'),_0x6b01('0x157'),_0x6b01('0x158'),_0x6b01('0x159'),_0x6b01('0x15a'),'$lte',_0x6b01('0x15b'),_0x6b01('0x15c'),_0x6b01('0x15d'),_0x6b01('0x15e'),_0x6b01('0x15f'),_0x6b01('0x160'),'$notIn',_0x6b01('0x161'),_0x6b01('0x162'),_0x6b01('0x163'),_0x6b01('0x164'),_0x6b01('0x161'),'$overlap',_0x6b01('0x165'),_0x6b01('0x166'),_0x6b01('0x167')]);_0x4f10dd[_0x6b01('0x40')]=_[_0x6b01('0x4f')](_0x1b6d76[_0x6b01('0x4c')],qs['fields'](_0x151854[_0x6b01('0x3d')][_0x6b01('0x50')]));_0x4f10dd[_0x6b01('0x40')]=_0x4f10dd[_0x6b01('0x40')][_0x6b01('0x44')]?_0x4f10dd[_0x6b01('0x40')]:_0x1b6d76[_0x6b01('0x4c')];if(!_0x151854[_0x6b01('0x3d')][_0x6b01('0xc0')]('nolimit')){_0x4f10dd[_0x6b01('0x1e')]=qs['limit'](_0x151854[_0x6b01('0x3d')]['limit']);_0x4f10dd['offset']=qs['offset'](_0x151854[_0x6b01('0x3d')][_0x6b01('0x1c')]);}_0x4f10dd[_0x6b01('0xc7')]=qs['sort'](_0x151854[_0x6b01('0x3d')][_0x6b01('0xbd')]);_0x4f10dd['where']=qs[_0x6b01('0x4e')](_['pick'](_0x151854['query'],_0x1b6d76['filters']));if(_0x151854[_0x6b01('0x3d')][_0x6b01('0x39')]){_0x4f10dd[_0x6b01('0x3b')]=_[_0x6b01('0xbf')](_0x4f10dd[_0x6b01('0x3b')],{'$or':_[_0x6b01('0x2a')](_0x4f10dd[_0x6b01('0x40')],function(_0x3ce04e){var _0x17f8db={};_0x17f8db[_0x3ce04e]={'$like':'%'+_0x151854[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'};return _0x17f8db;})});}_0x4f10dd[_0x6b01('0x3b')]={'$and':[_0x4f10dd[_0x6b01('0x3b')],{'$or':[{'UserId':_0x151854['params']['id']},{'OwnerId':_0x151854['params']['id']}]}]};_0x4f10dd=_[_0x6b01('0xbf')]({},_0x4f10dd,_0x151854['options']);var _0x501894={'where':_0x4f10dd[_0x6b01('0x3b')]};return db['CmHopper']['count'](_0x501894)[_0x6b01('0xf')](function(_0x13877c){_0x284798[_0x6b01('0x1f')]=_0x13877c;if(_0x151854['query'][_0x6b01('0x3e')]){_0x4f10dd[_0x6b01('0x3f')]=[{'attributes':['id',_0x6b01('0x168'),_0x6b01('0x169'),'phone'],'model':db['CmContact'],'as':_0x6b01('0x16a')},{'attributes':['id',_0x6b01('0x32'),_0x6b01('0x16b')],'model':db['VoiceQueue'],'as':_0x6b01('0xc8')}];}return db['CmHopper'][_0x6b01('0x41')](_0x4f10dd);})[_0x6b01('0xf')](function(_0x31c7c5){_0x284798[_0x6b01('0x42')]=_0x31c7c5;return _0x284798;})['then'](respondWithFilteredResult(_0x12646f,_0x4f10dd))[_0x6b01('0x17')](handleError(_0x12646f,null));};exports[_0x6b01('0x16c')]=function(_0x4a162e,_0x3b98bf){if(!_[_0x6b01('0x60')](_0x4a162e['user']['id'])&&(_0x4a162e[_0x6b01('0x26')][_0x6b01('0x2d')]==_0x6b01('0x24')||_0x4a162e[_0x6b01('0x26')]['role']=='user')){return db['User'][_0x6b01('0x8a')]({'where':{'id':_0x4a162e[_0x6b01('0x56')]['id']},'raw':!![]})[_0x6b01('0xf')](function(_0x278825){return authService[_0x6b01('0x16d')](_0x278825);})['then'](function(_0x7b78bf){if(_0x7b78bf){return _0x3b98bf[_0x6b01('0x19')](0xc8)['json']({'api_key':_0x7b78bf[_0x6b01('0x16e')]});}else{return _0x3b98bf[_0x6b01('0x19')](0xcc)[_0x6b01('0x1b')]({'message':_0x6b01('0x16f')});}})[_0x6b01('0x17')](handleError(_0x3b98bf,0x193));}else{return _0x3b98bf[_0x6b01('0x19')](0x191)[_0x6b01('0x1b')]({'message':_0x6b01('0x170')});}};exports[_0x6b01('0x171')]=function(_0x4d761b,_0x4e940d){if(!_[_0x6b01('0x60')](_0x4d761b['user']['id'])&&(_0x4d761b[_0x6b01('0x26')][_0x6b01('0x2d')]=='admin'||_0x4d761b['user'][_0x6b01('0x2d')]==_0x6b01('0x26'))){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x4d761b[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](function(_0x423044){return authService['generateApiKey'](_0x423044);})[_0x6b01('0xf')](function(_0x12623c){return db[_0x6b01('0x3c')][_0x6b01('0x22')]({'apiKeyIat':_0x12623c[_0x6b01('0x172')],'apiKeyNonce':_0x12623c[_0x6b01('0x173')]},{'where':{'id':_0x4d761b[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](function(){return _0x4e940d[_0x6b01('0x19')](0xc8)['json']({'api_key':_0x12623c[_0x6b01('0x16e')]});});})['catch'](handleError(_0x4e940d,0x193));}else{return _0x4e940d[_0x6b01('0x19')](0x191)[_0x6b01('0x1b')]({'message':_0x6b01('0x170')});}};exports[_0x6b01('0x174')]=function(_0x233eab,_0x5e48ea){if(!_[_0x6b01('0x60')](_0x233eab[_0x6b01('0x26')]['id'])&&(_0x233eab[_0x6b01('0x26')][_0x6b01('0x2d')]==_0x6b01('0x24')||_0x233eab['user'][_0x6b01('0x2d')]==_0x6b01('0x26'))){return db[_0x6b01('0x3c')][_0x6b01('0x2e')]({'where':{'id':_0x233eab[_0x6b01('0x56')]['id']}})[_0x6b01('0xf')](handleEntityNotFound(_0x5e48ea,null))[_0x6b01('0xf')](function(_0xb5ca9b){if(_0xb5ca9b&&_0xb5ca9b['apiKeyNonce']&&_0xb5ca9b[_0x6b01('0x175')])return _0xb5ca9b;else throw{'message':'API\x20key\x20not\x20available'};})[_0x6b01('0xf')](function(_0x427632){return db[_0x6b01('0x3c')][_0x6b01('0x22')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x233eab['params']['id']}});})['then'](respondWithStatusCode(_0x5e48ea,0xc8))[_0x6b01('0x17')](handleError(_0x5e48ea,0x193));}else{return _0x5e48ea['status'](0x191)[_0x6b01('0x1b')]({'message':_0x6b01('0x170')});}};exports[_0x6b01('0x176')]=function(_0x3ae15d,_0x4b4e24){var _0x47f644=_0x3ae15d[_0x6b01('0x26')][_0x6b01('0x23')]({'plain':!![]});if(!_0x47f644){return _0x4b4e24[_0x6b01('0x19')](0x191)[_0x6b01('0x33')](_0x6b01('0x177'));}else{return _0x4b4e24[_0x6b01('0x19')](0xc8)[_0x6b01('0x1b')](_0x47f644);}};exports[_0x6b01('0x178')]=function(_0x32073b,_0x2011d2){var _0x572666={'offset':0x0},_0x1586f9={'count':0x0,'rows':[]};Promise[_0x6b01('0xf4')]()[_0x6b01('0xf')](function(){if(!_0x32073b[_0x6b01('0x3d')][_0x6b01('0x39')]&&!_0x32073b[_0x6b01('0x3d')][_0x6b01('0x179')]&&!_0x32073b[_0x6b01('0x3d')][_0x6b01('0x17a')])return[];return Promise[_0x6b01('0xf4')]()[_0x6b01('0xf')](function(){var _0x206603=[];if(!_[_0x6b01('0x17b')](_0x32073b[_0x6b01('0x3d')][_0x6b01('0x179')])){_0x206603[_0x6b01('0x47')](db[_0x6b01('0x104')][_0x6b01('0x41')]({'attributes':['id','name'],'where':{'id':_0x32073b[_0x6b01('0x3d')][_0x6b01('0x179')]}}));}if(!_[_0x6b01('0x17b')](_0x32073b['query'][_0x6b01('0x17a')])){_0x206603[_0x6b01('0x47')](db['VoiceQueue'][_0x6b01('0x41')]({'attributes':['id',_0x6b01('0x32')],'type':'inbound','where':{'id':_0x32073b[_0x6b01('0x3d')][_0x6b01('0x17a')]}}));}return Promise[_0x6b01('0x4b')](_0x206603);})[_0x6b01('0xf')](function(_0x144708){var _0x22aa5f=_[_0x6b01('0x110')](_0x144708)[_0x6b01('0x2a')](function(_0xcf9f4d){return _0xcf9f4d['getAgents']({'attributes':['id',_0x6b01('0x32'),_0x6b01('0x5b'),_0x6b01('0x92')],'raw':!![]});});return Promise[_0x6b01('0x4b')](_0x22aa5f);})[_0x6b01('0xf')](function(_0x1ff1ad){var _0x502e30=_[_0x6b01('0x110')](_0x1ff1ad);if(!_0x32073b[_0x6b01('0x3d')][_0x6b01('0x39')])return _0x502e30;if(_[_0x6b01('0x17b')](_0x502e30)){return db[_0x6b01('0x3c')]['findAll']({'attributes':['id',_0x6b01('0x32'),_0x6b01('0x5b'),'online'],'where':{'role':_0x6b01('0x6c'),'$or':[db[_0x6b01('0x62')][_0x6b01('0x3b')](db['sequelize']['fn'](_0x6b01('0x17c'),db['sequelize'][_0x6b01('0x17d')](_0x6b01('0x32'))),{'$like':'%'+_0x32073b[_0x6b01('0x3d')][_0x6b01('0x39')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x32073b[_0x6b01('0x3d')][_0x6b01('0x39')]+'%'}}]},'raw':!![]});}else{return _(_0x502e30)['flatten']()['filter'](function(_0x342374){return _0x342374[_0x6b01('0x32')]['toLowerCase']()[_0x6b01('0x2c')](_0x32073b[_0x6b01('0x3d')][_0x6b01('0x39')][_0x6b01('0x9a')]())||_0x342374['internal'][_0x6b01('0x17e')]()['includes'](_0x32073b[_0x6b01('0x3d')][_0x6b01('0x39')]);})[_0x6b01('0x2b')]();}})[_0x6b01('0xf')](function(_0x3d8dcf){var _0x59f418='name';var _0x3f1d05=_0x6b01('0x17f');if(_0x32073b[_0x6b01('0x3d')]['sort']){var _0x3f1d05=_0x32073b[_0x6b01('0x3d')]['sort'][0x0]==='-'?_0x6b01('0x180'):'asc';var _0x59f418=_0x3f1d05===_0x6b01('0x17f')?_0x32073b[_0x6b01('0x3d')]['sort']:_0x32073b[_0x6b01('0x3d')][_0x6b01('0xbd')][_0x6b01('0x181')](0x1);}return _(_0x3d8dcf)[_0x6b01('0x182')]('id')[_0x6b01('0x183')]([function(_0x23ffa8){return _0x59f418===_0x6b01('0x32')?_0x23ffa8[_0x59f418][_0x6b01('0x9a')]():_0x23ffa8[_0x59f418];}],[_0x3f1d05])[_0x6b01('0x2a')](function(_0xff2fae){return _[_0x6b01('0xbe')](_0xff2fae,['id','name','internal',_0x6b01('0x92')]);})[_0x6b01('0x2b')]();})[_0x6b01('0xf')](function(_0x1f8608){return client[_0x6b01('0x184')]('Agents',_0x32073b)[_0x6b01('0xf')](function(_0x8cc12e){if(_0x8cc12e[_0x6b01('0x13')])throw new Error(_0x6b01('0x185'));var _0x310dee=_0x8cc12e['result'];var _0xabd5c3=jayson[_0x6b01('0xe')][_0x6b01('0x186')]({'port':0x232c});return _0xabd5c3[_0x6b01('0x184')](_0x6b01('0x27'),_0x32073b)[_0x6b01('0xf')](function(_0x138833){if(_0x138833[_0x6b01('0x13')])throw new Error(_0x6b01('0x187'));var _0x4f9505=_0x138833['result'];return _[_0x6b01('0xbf')]({},_0x4f9505,_0x310dee);});})[_0x6b01('0xf')](function(_0x820a53){return _[_0x6b01('0x2a')](_0x1f8608,function(_0x39e851){var _0x27655d=_[_0x6b01('0x2e')](_0x820a53[_0x6b01('0x42')],['id',_0x39e851['id']]);if(!_0x27655d||!_0x39e851[_0x6b01('0x92')]){_0x39e851[_0x6b01('0x19')]=_0x6b01('0x188');}else if(_0x27655d['voicePause']){_0x39e851[_0x6b01('0x19')]=_0x6b01('0xf6');}else{_0x39e851['status']=_['includes']([_0x6b01('0x189'),_0x6b01('0x18a'),_0x6b01('0x18b'),_0x6b01('0x18c'),null,undefined],_0x27655d[_0x6b01('0x18d')])?_0x6b01('0x92'):_0x6b01('0x18e');}return _0x39e851;});});});})[_0x6b01('0xf')](function(_0x43af22){if(!_0x32073b['query']['hasOwnProperty']('nolimit')){_0x572666[_0x6b01('0x1e')]=qs[_0x6b01('0x1e')](_0x32073b['query'][_0x6b01('0x1e')]||0xa);_0x572666['offset']=qs[_0x6b01('0x1c')](_0x32073b[_0x6b01('0x3d')][_0x6b01('0x1c')]);}_0x1586f9[_0x6b01('0x1f')]=_0x43af22['length'];_0x1586f9[_0x6b01('0x42')]=_0x572666[_0x6b01('0x1e')]?_0x43af22['slice'](_0x572666[_0x6b01('0x1c')],_0x572666[_0x6b01('0x1c')]+_0x572666[_0x6b01('0x1e')]):_0x43af22;return _0x1586f9;})[_0x6b01('0xf')](respondWithFilteredResult(_0x2011d2,_0x572666))[_0x6b01('0x17')](handleError(_0x2011d2,null));};function get_open_tabs(_0x11fa92,_0x55f646){var _0x1b8401=_0x11fa92['charAt'](0x0)['toUpperCase']()+_0x11fa92[_0x6b01('0x18f')](0x1);var _0x305d99={'type':db[_0x6b01('0x84')][_0x6b01('0x64')][_0x6b01('0x65')],'raw':!![]};return new BPromise(function(_0x371a7d,_0x1e4346){var _0x3498b2=squel[_0x6b01('0x190')]()['field'](_0x6b01('0x191')+_0x1b8401+_0x6b01('0x192'),'id')[_0x6b01('0x193')](_0x6b01('0x194'))[_0x6b01('0x66')](_0x6b01('0x195')+_0x11fa92+_0x6b01('0x196'),'ui')[_0x6b01('0x3b')](_0x6b01('0x197'),_0x55f646['id']);return db[_0x6b01('0x62')][_0x6b01('0x3d')](_0x3498b2[_0x6b01('0x17e')](),_0x305d99)[_0x6b01('0xf')](function(_0x22123f){_0x55f646[_0x1b8401+_0x6b01('0x198')]=_0x22123f;_0x371a7d(_0x22123f);})['catch'](function(_0x5f1dbe){_0x1e4346(_0x5f1dbe);});});};
\ No newline at end of file
+var _0x524e=['fieldName','type','key','filter','password','salt','getOptions','query','includeAll','include','attributes','push','findAll','openTabs','true','chat','dataValues','sms','rows','fax','openchannel','whatsapp','all','catch','model','differenceBy','keys','intersection','fields','length','merge','body','params','describe','addContacts','omit','ids','internal','Setting','findById','securePassword','validatePasswordPattern','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','from','voicemail','mailbox','email','agent','permissions','101','103','113','110','104','105','106','107','108','109','100','111','114','115','create','user','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','VoiceMail','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','UserProfileSection','isEmpty','compact','changePassword','oldPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','toLowerCase','Queues','QueueId','emit','capitalize','voice','VoiceQueue','online','format','SIP/%s','penalty','upsert','remove','isArray','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','filename','getAvatar','download','root','server/files/images/','getOpenTabs','mail','ChatOpenTabs','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','CmContact','filters','order','sort','where','CmList','Tag','tag','hasOwnProperty','nolimit','getContacts','pick','options','Queue','get','getVoiceQueuesRt','ChatGroup','getGroups','getRecordings','VoiceRecording','getScreenRecordings','ScreenRecording','UserId','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','mobile','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','LOGIN','PAUSE','LOGININPAUSE','bulkCreate','concat','isMiddleware','resolve','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','openchannelPause','smsPause','lastPauseAt','QueuePause','manual','%s%s','Pause','getTeams','Team','setDataValue','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','getWhatsappQueues','Whatsapp','getFaxQueues','Fax','Openchannel','flatten','transaction','addAgent','Voice','getDataValue','Queue:save','TeamVoicePrefix','UserVoicePrefix','removeTeams','getOpenchannelQueues','removeAgent','getLists','getAgents','values','addChatInteractions','spread','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$overlap','$contains','$contained','firstName','Contact','dialActive','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','generateApiKey','iat','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','lower','desc','asc','substring','uniqBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','charAt','toUpperCase','slice','select','field','ui.','InteractionId','ui.createdAt','ui.UserId\x20=\x20?','toString','OpenTabs','util','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','localhost','client','http','info','User,\x20%s,\x20%s','request\x20sent','debug','error','message','result','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','role','admin','Users','Agents','Telephones','telephone','ignore','value','includes','find','name','UserProfileResource','send','User','rawAttributes','map'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x524e,0x15e));var _0xe524=function(_0x4c2d67,_0x3ba83d){_0x4c2d67=_0x4c2d67-0x0;var _0x21e4ba=_0x524e[_0x4c2d67];return _0x21e4ba;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xe524('0x0'));var path=require(_0xe524('0x1'));var fs=require('fs');var _=require(_0xe524('0x2'));var squel=require(_0xe524('0x3'));var jayson=require(_0xe524('0x4'));var Redis=require(_0xe524('0x5'));var authService=require(_0xe524('0x6'));var qs=require(_0xe524('0x7'));var logger=require(_0xe524('0x8'))(_0xe524('0x9'));var utils=require('../../config/utils');var config=require(_0xe524('0xa'));var licenseUtil=require(_0xe524('0xb'));var db=require(_0xe524('0xc'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xe524('0xd')]));require(_0xe524('0xe'))[_0xe524('0xf')](socket);config[_0xe524('0xd')]=_[_0xe524('0x10')](config[_0xe524('0xd')],{'host':_0xe524('0x11'),'port':0x18eb});var client=jayson[_0xe524('0x12')][_0xe524('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x1641ec,_0x1e4459,_0x2b6cbd,_0x1184df){return new BPromise(function(_0x2f0e86,_0x1bdcee){var _0x26cc77=_0x1184df||client;return _0x26cc77['request'](_0x1641ec,_0x2b6cbd)['then'](function(_0xfdc2a5){logger[_0xe524('0x14')](_0xe524('0x15'),_0x1e4459,_0xe524('0x16'));logger[_0xe524('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x1e4459,_0xe524('0x16'),JSON['stringify'](_0xfdc2a5));if(_0xfdc2a5[_0xe524('0x18')]){if(_0xfdc2a5[_0xe524('0x18')]['code']===0x1f4){logger[_0xe524('0x18')]('User,\x20%s,\x20%s',_0x1e4459,_0xfdc2a5[_0xe524('0x18')]['message']);return _0x1bdcee(_0xfdc2a5[_0xe524('0x18')]['message']);}logger['error']('User,\x20%s,\x20%s',_0x1e4459,_0xfdc2a5[_0xe524('0x18')]['message']);return _0x2f0e86(_0xfdc2a5[_0xe524('0x18')][_0xe524('0x19')]);}else{logger[_0xe524('0x14')](_0xe524('0x15'),_0x1e4459,'request\x20sent');_0x2f0e86(_0xfdc2a5[_0xe524('0x1a')][_0xe524('0x19')]);}})['catch'](function(_0x467c2a){logger[_0xe524('0x18')](_0xe524('0x15'),_0x1e4459,_0x467c2a);_0x1bdcee(_0x467c2a);});});}function respondWithStatusCode(_0x1dcc0f,_0x1c4194){_0x1c4194=_0x1c4194||0xcc;return function(_0x1cab6c){if(_0x1cab6c){return _0x1dcc0f[_0xe524('0x1b')](_0x1c4194);}return _0x1dcc0f[_0xe524('0x1c')](_0x1c4194)[_0xe524('0x1d')]();};}function respondWithResult(_0x5c4d21,_0x7d1f92){_0x7d1f92=_0x7d1f92||0xc8;return function(_0x5bb00b){if(_0x5bb00b){return _0x5c4d21['status'](_0x7d1f92)[_0xe524('0x1e')](_0x5bb00b);}};}function respondWithFilteredResult(_0x23df5e,_0x1ad106){return function(_0x85fc51){if(_0x85fc51){var _0x599d5d=typeof _0x1ad106[_0xe524('0x1f')]==='undefined'&&typeof _0x1ad106[_0xe524('0x20')]===_0xe524('0x21');var _0xd62772=_0x85fc51[_0xe524('0x22')];var _0x4102d9=_0x599d5d?0x0:_0x1ad106[_0xe524('0x1f')];var _0x2141db=_0x599d5d?_0x85fc51['count']:_0x1ad106['offset']+_0x1ad106[_0xe524('0x20')];var _0x45abad;if(_0x2141db>=_0xd62772){_0x2141db=_0xd62772;_0x45abad=0xc8;}else{_0x45abad=0xce;}_0x23df5e[_0xe524('0x1c')](_0x45abad);return _0x23df5e[_0xe524('0x23')](_0xe524('0x24'),_0x4102d9+'-'+_0x2141db+'/'+_0xd62772)['json'](_0x85fc51);}return null;};}function saveUpdates(_0x52f140){return function(_0x4b1ff){if(_0x4b1ff){return _0x4b1ff[_0xe524('0x25')](_0x52f140)[_0xe524('0x26')](function(_0x8070e4){return _0x8070e4;});}return null;};}function removeEntity(_0x25c0a1){return function(_0x517fa0){if(_0x517fa0){return _0x517fa0[_0xe524('0x27')]()[_0xe524('0x26')](function(){var _0x4a4e15=_0x517fa0['get']({'plain':!![]});if(_0x4a4e15[_0xe524('0x28')]===_0xe524('0x29'))return;var _0x5b2fc3=[{'name':_0xe524('0x2a'),'value':'user','ignore':!![]},{'name':_0xe524('0x2b'),'value':'agent','ignore':![]},{'name':_0xe524('0x2c'),'value':_0xe524('0x2d'),'ignore':![]}];var _0x403809=_(_0x5b2fc3)['filter'](_0xe524('0x2e'))['map'](_0xe524('0x2f'))[_0xe524('0x2f')]();if(_[_0xe524('0x30')](_0x403809,_0x4a4e15['role'])){return;}var _0x16e124=_[_0xe524('0x31')](_0x5b2fc3,['value',_0x4a4e15[_0xe524('0x28')]])[_0xe524('0x32')];return db[_0xe524('0x33')][_0xe524('0x27')]({'where':{'type':_0x16e124,'resourceId':_0x4a4e15['id']}})['then'](function(){return _0x517fa0;});})[_0xe524('0x26')](function(){_0x25c0a1[_0xe524('0x1c')](0xcc)[_0xe524('0x1d')]();});}};}function handleEntityNotFound(_0x13cda8){return function(_0x2522cd){if(!_0x2522cd){_0x13cda8[_0xe524('0x1b')](0x194);}return _0x2522cd;};}function handleError(_0x2741e8,_0x2bc477){_0x2bc477=_0x2bc477||0x1f4;return function(_0x4db4b7){logger[_0xe524('0x18')](_0x4db4b7['stack']);if(_0x4db4b7[_0xe524('0x32')]){delete _0x4db4b7[_0xe524('0x32')];}_0x2741e8['status'](_0x2bc477)[_0xe524('0x34')](_0x4db4b7);};}exports['index']=function(_0x1c3aae,_0x41af26){var _0x38758e={},_0x3103e9={'count':0x0,'rows':[]};var _0x82a87b=_(db[_0xe524('0x35')][_0xe524('0x36')])[_0xe524('0x37')](function(_0x5e8e64){return{'name':_0x5e8e64[_0xe524('0x38')],'type':_0x5e8e64[_0xe524('0x39')][_0xe524('0x3a')]};})[_0xe524('0x3b')](function(_0xbd4ae3){return!_[_0xe524('0x30')]([_0xe524('0x3c'),_0xe524('0x3d')],_0xbd4ae3['name']);})[_0xe524('0x2f')]();_0x38758e=qs[_0xe524('0x3e')](_0x82a87b,_0x1c3aae);var _0x2e4a13={'where':_0x38758e['where']};return db[_0xe524('0x35')]['count'](_0x2e4a13)[_0xe524('0x26')](function(_0x217e85){_0x3103e9[_0xe524('0x22')]=_0x217e85;if(_0x1c3aae[_0xe524('0x3f')][_0xe524('0x40')]){_0x38758e[_0xe524('0x41')]=[{'all':!![]}];}if(!_[_0xe524('0x30')](_0x38758e['attributes'],'id')){_0x38758e[_0xe524('0x42')][_0xe524('0x43')]('id');}return db[_0xe524('0x35')][_0xe524('0x44')](_0x38758e);})[_0xe524('0x26')](function(_0x1ae283){_0x3103e9['rows']=_0x1ae283;if(_0x1c3aae[_0xe524('0x3f')][_0xe524('0x45')]===_0xe524('0x46')){var _0x52da41=[];for(var _0x21ea32=0x0;_0x21ea32<_0x3103e9['rows']['length'];_0x21ea32++){_0x52da41[_0xe524('0x43')](get_open_tabs(_0xe524('0x47'),_0x3103e9['rows'][_0x21ea32][_0xe524('0x48')]));_0x52da41[_0xe524('0x43')](get_open_tabs(_0xe524('0x49'),_0x3103e9[_0xe524('0x4a')][_0x21ea32]['dataValues']));_0x52da41['push'](get_open_tabs(_0xe524('0x4b'),_0x3103e9[_0xe524('0x4a')][_0x21ea32]['dataValues']));_0x52da41[_0xe524('0x43')](get_open_tabs('mail',_0x3103e9[_0xe524('0x4a')][_0x21ea32][_0xe524('0x48')]));_0x52da41[_0xe524('0x43')](get_open_tabs(_0xe524('0x4c'),_0x3103e9[_0xe524('0x4a')][_0x21ea32][_0xe524('0x48')]));_0x52da41[_0xe524('0x43')](get_open_tabs(_0xe524('0x4d'),_0x3103e9[_0xe524('0x4a')][_0x21ea32][_0xe524('0x48')]));}return BPromise[_0xe524('0x4e')](_0x52da41)[_0xe524('0x26')](function(_0x3d7ab7){return _0x3103e9;});}else{return _0x3103e9;}})[_0xe524('0x26')](respondWithFilteredResult(_0x41af26,_0x38758e))[_0xe524('0x4f')](handleError(_0x41af26,null));};exports['show']=function(_0x53be1f,_0x4c06f0){var _0x539f90={'raw':![],'where':{'id':_0x53be1f['params']['id']}},_0x24f313={};_0x24f313[_0xe524('0x50')]=_[_0xe524('0x51')](_['keys'](db[_0xe524('0x35')]['rawAttributes']),['password',_0xe524('0x3d')]);_0x24f313[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x53be1f['query']);_0x24f313['filters']=_['intersection'](_0x24f313['model'],_0x24f313['query']);_0x539f90['attributes']=_[_0xe524('0x53')](_0x24f313[_0xe524('0x50')],qs['fields'](_0x53be1f[_0xe524('0x3f')][_0xe524('0x54')]));_0x539f90[_0xe524('0x42')]=_0x539f90[_0xe524('0x42')][_0xe524('0x55')]?_0x539f90['attributes']:_0x24f313[_0xe524('0x50')];if(_0x53be1f[_0xe524('0x3f')][_0xe524('0x40')]){_0x539f90['include']=[{'all':!![]}];}_0x539f90=_[_0xe524('0x56')]({},_0x539f90,_0x53be1f['options']);if(!_[_0xe524('0x30')](_0x539f90[_0xe524('0x42')],'id')){_0x539f90[_0xe524('0x42')][_0xe524('0x43')]('id');}return db[_0xe524('0x35')][_0xe524('0x31')](_0x539f90)[_0xe524('0x26')](handleEntityNotFound(_0x4c06f0,null))[_0xe524('0x26')](function(_0x20bff3){var _0x110f2c=[];values=_0x20bff3;if(_0x53be1f[_0xe524('0x3f')][_0xe524('0x45')]==='true'){_0x110f2c['push'](get_open_tabs('chat',_0x20bff3[_0xe524('0x48')]));_0x110f2c[_0xe524('0x43')](get_open_tabs(_0xe524('0x49'),_0x20bff3[_0xe524('0x48')]));_0x110f2c[_0xe524('0x43')](get_open_tabs(_0xe524('0x4c'),_0x20bff3[_0xe524('0x48')]));_0x110f2c[_0xe524('0x43')](get_open_tabs(_0xe524('0x4d'),_0x20bff3[_0xe524('0x48')]));_0x110f2c[_0xe524('0x43')](get_open_tabs('fax',_0x20bff3[_0xe524('0x48')]));_0x110f2c[_0xe524('0x43')](get_open_tabs('mail',_0x20bff3['dataValues']));return BPromise['all'](_0x110f2c);}else{return values;}})['then'](function(_0x31b1db){return values;})[_0xe524('0x26')](respondWithResult(_0x4c06f0,null))[_0xe524('0x4f')](handleError(_0x4c06f0,null));};exports[_0xe524('0x25')]=function(_0x4ac09e,_0x4773b4){if(_0x4ac09e[_0xe524('0x57')]['id']){delete _0x4ac09e[_0xe524('0x57')]['id'];}delete _0x4ac09e[_0xe524('0x57')]['role'];return db['User']['find']({'where':{'id':_0x4ac09e[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x4773b4,null))[_0xe524('0x26')](saveUpdates(_0x4ac09e[_0xe524('0x57')],null))[_0xe524('0x26')](respondWithResult(_0x4773b4,null))[_0xe524('0x4f')](handleError(_0x4773b4,null));};exports[_0xe524('0x59')]=function(_0x4f58ff,_0x5d0507){return db[_0xe524('0x35')][_0xe524('0x59')]()[_0xe524('0x26')](respondWithResult(_0x5d0507,null))[_0xe524('0x4f')](handleError(_0x5d0507,null));};exports[_0xe524('0x5a')]=function(_0x474ed4,_0x5135f0){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x474ed4[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x5135f0,null))[_0xe524('0x26')](function(_0x3ef67e){if(_0x3ef67e){return _0x3ef67e[_0xe524('0x5a')](_0x474ed4['body']['ids'],_[_0xe524('0x5b')](_0x474ed4[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x5135f0,null))[_0xe524('0x4f')](handleError(_0x5135f0,null));};function validateUser(_0x4c6869){return new BPromise(function(_0xe102a0,_0x137228){if(_0x4c6869[_0xe524('0x5d')])return _0xe102a0(_0x4c6869);return db[_0xe524('0x5e')][_0xe524('0x5f')](0x1)[_0xe524('0x26')](function(_0x35e6b2){if(_0x35e6b2[_0xe524('0x60')])authService[_0xe524('0x61')](_0x4c6869[_0xe524('0x3c')]);db[_0xe524('0x35')]['max'](_0xe524('0x5d'))[_0xe524('0x26')](function(_0x13a97e){if(_[_0xe524('0x62')](_0x13a97e)){_0x4c6869[_0xe524('0x5d')]=_0x35e6b2['min_internal']||0x1;return;}if(_[_0xe524('0x62')](_0x35e6b2[_0xe524('0x63')])||_0x35e6b2[_0xe524('0x63')]===_0x13a97e){_0x4c6869[_0xe524('0x5d')]=_0x13a97e+0x1;return;}if(_0x35e6b2[_0xe524('0x63')]>_0x13a97e){_0x4c6869[_0xe524('0x5d')]=_0x35e6b2[_0xe524('0x63')];return;}return db['sequelize'][_0xe524('0x3f')](_0xe524('0x64'),{'type':db[_0xe524('0x65')][_0xe524('0x66')]['SELECT']})[_0xe524('0x26')](function(_0x5e19f9){if(_0x5e19f9&&_0x5e19f9[_0xe524('0x55')]){for(var _0x2a88e2=0x0,_0x52e84e=_0x5e19f9['length'];_0x2a88e2<_0x52e84e&&_[_0xe524('0x62')](_0x4c6869[_0xe524('0x5d')]);_0x2a88e2++){if(_0x35e6b2[_0xe524('0x63')]<=_0x5e19f9[_0x2a88e2][_0xe524('0x67')]){_0x4c6869[_0xe524('0x5d')]=_0x5e19f9[_0x2a88e2]['from'];}else if(_0x35e6b2[_0xe524('0x63')]>_0x5e19f9[_0x2a88e2][_0xe524('0x67')]&&_0x35e6b2[_0xe524('0x63')]<=_0x5e19f9[_0x2a88e2]['to']){_0x4c6869[_0xe524('0x5d')]=_0x35e6b2[_0xe524('0x63')];}}}if(_['isNil'](_0x4c6869[_0xe524('0x5d')])){_0x4c6869[_0xe524('0x5d')]=_0x13a97e+0x1;}return _0xe102a0(_0x4c6869);});});})[_0xe524('0x4f')](function(_0x7be00c){_0x137228(_0x7be00c);});});}function updateUser(_0x60cc2){return new BPromise(function(_0x1bde09,_0x54a1e1){try{if(_0x60cc2[_0xe524('0x68')]){_0x60cc2[_0xe524('0x69')]=_0x60cc2[_0xe524('0x5d')];_0x60cc2['VoiceMail']={'mailbox':_0x60cc2[_0xe524('0x5d')],'password':_0x60cc2[_0xe524('0x3c')],'fullname':_0x60cc2['fullname'],'email':_0x60cc2[_0xe524('0x6a')]};}if(_0x60cc2[_0xe524('0x28')]===_0xe524('0x6b')){if(!_0x60cc2[_0xe524('0x6c')])_0x60cc2[_0xe524('0x6c')]=[_0xe524('0x6d'),'102',_0xe524('0x6e'),_0xe524('0x6f'),_0xe524('0x70'),_0xe524('0x71'),_0xe524('0x72'),_0xe524('0x73'),_0xe524('0x74'),_0xe524('0x75'),_0xe524('0x76'),_0xe524('0x77'),_0xe524('0x78'),_0xe524('0x79'),_0xe524('0x7a')];}_0x1bde09(_0x60cc2);}catch(_0x373504){_0x54a1e1(_0x373504);}});}exports[_0xe524('0x7b')]=function(_0x576ffa,_0x933c2a){if(_0x576ffa[_0xe524('0x7c')][_0xe524('0x28')]==='agent')throw new Error(_0xe524('0x7d'));if(_0x576ffa[_0xe524('0x57')]['role']==='user'&&_0x576ffa[_0xe524('0x7c')]['role']!==_0xe524('0x29')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x576ffa[_0xe524('0x57')][_0xe524('0x28')]===_0xe524('0x29')&&_0x576ffa[_0xe524('0x7c')]['role']!=='admin'){throw new Error(_0xe524('0x7e'));}return licenseUtil[_0xe524('0x7f')]([_0x576ffa['body']])[_0xe524('0x26')](function(){return validateUser(_0x576ffa[_0xe524('0x57')]);})[_0xe524('0x26')](function(_0x53b32b){return updateUser(_0x53b32b)[_0xe524('0x26')](function(_0x140a4e){if(_0x140a4e[_0xe524('0x28')]===_0xe524('0x29')){_0x140a4e[_0xe524('0x80')]=_0x576ffa[_0xe524('0x7c')]['settingsEnabled'];delete _0x140a4e['userProfileId'];}return _0x140a4e;});})[_0xe524('0x26')](function(_0x47e678){return db[_0xe524('0x35')][_0xe524('0x7b')](_0x47e678,{'include':[{'model':db[_0xe524('0x81')],'as':'VoiceMail'}]});})[_0xe524('0x26')](function(_0x48d5a0){if(_0x576ffa[_0xe524('0x57')][_0xe524('0x28')]===_0xe524('0x7c'))return _0x48d5a0;if(_0x576ffa[_0xe524('0x7c')][_0xe524('0x28')]!==_0xe524('0x7c'))return _0x48d5a0;return db['UserProfileSection'][_0xe524('0x31')]({'where':{'name':_0x48d5a0[_0xe524('0x28')]===_0xe524('0x6b')?'Agents':_0xe524('0x2c'),'userProfileId':_0x576ffa[_0xe524('0x7c')]['userProfileId']},'raw':!![]})[_0xe524('0x26')](function(_0x3c7ecd){if(!_0x3c7ecd||_0x3c7ecd[_0xe524('0x82')]!=0x0)return _0x48d5a0;return db[_0xe524('0x33')]['create']({'name':_0x48d5a0[_0xe524('0x32')],'resourceId':_0x48d5a0['id'],'type':_0x3c7ecd[_0xe524('0x32')],'sectionId':_0x3c7ecd['id']},{})[_0xe524('0x26')](function(){return _0x48d5a0;});})['catch'](function(_0x1a40ac){logger['error'](_0xe524('0x83'),_0x1a40ac);throw _0x1a40ac;});})[_0xe524('0x26')](respondWithResult(_0x933c2a,0xc9))[_0xe524('0x4f')](handleError(_0x933c2a,null));};exports['bulkCreate']=function(_0x1efbe4,_0x125219){var _0x44a1f8=_0x1efbe4['body'];var _0x4aaf00=[];if(_0x1efbe4[_0xe524('0x7c')]['role']===_0xe524('0x6b'))throw new Error('Unauthorized');if(_[_0xe524('0x84')](_0x44a1f8,[_0xe524('0x28'),'user'])&&_0x1efbe4[_0xe524('0x7c')][_0xe524('0x28')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0xe524('0x84')](_0x44a1f8,[_0xe524('0x28'),_0xe524('0x29')])&&_0x1efbe4['user'][_0xe524('0x28')]!==_0xe524('0x29')){throw new Error(_0xe524('0x85'));}return licenseUtil[_0xe524('0x7f')](_0x44a1f8)[_0xe524('0x26')](function(){return validateUser(_0x44a1f8[0x0]);})[_0xe524('0x26')](function(){for(var _0x57501c=0x1;_0x57501c<_0x44a1f8[_0xe524('0x55')];_0x57501c++){var _0x3a2834=_0x44a1f8[_0x57501c-0x1]['internal'];if(!_0x44a1f8[_0x57501c]['internal'])_0x44a1f8[_0x57501c][_0xe524('0x5d')]=_0x3a2834+0x1;_0x4aaf00[_0xe524('0x43')](validateUser(_0x44a1f8[_0x57501c]));}return BPromise[_0xe524('0x4e')](_0x4aaf00);})[_0xe524('0x26')](function(){_0x4aaf00=[];for(var _0x59c2f9=0x0;_0x59c2f9<_0x44a1f8[_0xe524('0x55')];_0x59c2f9++){_0x4aaf00[_0xe524('0x43')](updateUser(_0x44a1f8[_0x59c2f9]));}return BPromise['all'](_0x4aaf00);})['then'](function(){return BPromise[_0xe524('0x86')](_0x44a1f8,function(_0x269e79){return db[_0xe524('0x35')][_0xe524('0x7b')](_0x269e79,{'include':[{'model':db[_0xe524('0x81')],'as':_0xe524('0x81')}]})['then'](function(_0x4e1efa){_0x269e79['id']=_0x4e1efa['id'];return _0x269e79;});});})[_0xe524('0x26')](function(_0x3f8b77){if(_0x1efbe4['body']['role']===_0xe524('0x7c'))return _0x3f8b77;if(_0x1efbe4[_0xe524('0x7c')][_0xe524('0x28')]!==_0xe524('0x7c'))return _0x3f8b77;var _0x276e88=_[_0xe524('0x84')](_0x3f8b77,function(_0x49e092){return _0x49e092['role']===_0xe524('0x6b')||_0x49e092[_0xe524('0x28')]===_0xe524('0x2d');});if(!_0x276e88)return _0x3f8b77;return db[_0xe524('0x87')][_0xe524('0x44')]({'where':{'name':{'$or':[_0xe524('0x2b'),_0xe524('0x2c')]},'userProfileId':_0x1efbe4[_0xe524('0x7c')]['userProfileId']},'raw':!![]})[_0xe524('0x26')](function(_0x589e5b){if(_[_0xe524('0x88')](_0x589e5b)||!_['some'](_0x589e5b,['autoAssociation',0x0]))return _0x3f8b77;_0x4aaf00=[];var _0x401a94=_(_0x589e5b)[_0xe524('0x37')](function(_0x1a9982){if(_0x1a9982[_0xe524('0x82')]===0x1)return;return _0x1a9982['name']===_0xe524('0x2b')?_0xe524('0x6b'):_0xe524('0x2d');})[_0xe524('0x89')]()[_0xe524('0x2f')]();for(var _0x5d5870=0x0;_0x5d5870<_0x3f8b77[_0xe524('0x55')];_0x5d5870++){if(!_['includes'](_0x401a94,_0x3f8b77[_0x5d5870][_0xe524('0x28')]))return;var _0x37f754=_0x3f8b77[_0x5d5870]['role']===_0xe524('0x6b')?_0xe524('0x2b'):'Telephones';_0x4aaf00[_0xe524('0x43')](db['UserProfileResource'][_0xe524('0x7b')]({'name':_0x3f8b77[_0x5d5870][_0xe524('0x32')],'resourceId':_0x3f8b77[_0x5d5870]['id'],'type':_0x37f754,'sectionId':_[_0xe524('0x31')](_0x589e5b,[_0xe524('0x32'),_0x37f754])['id']},{}));}return BPromise[_0xe524('0x4e')](_0x4aaf00);});})[_0xe524('0x26')](respondWithResult(_0x125219,0xc9))[_0xe524('0x4f')](handleError(_0x125219,null));};exports[_0xe524('0x8a')]=function(_0x56d64d,_0xc068df){if(_0x56d64d['body']['id']){delete _0x56d64d['body']['id'];}return db[_0xe524('0x35')]['find']({'where':{'id':_0x56d64d[_0xe524('0x58')]['id']}})[_0xe524('0x26')](function(_0x2c85dc){if(!_0x2c85dc)return null;if(_0x2c85dc['id']===_0x56d64d[_0xe524('0x7c')]['id']){if(!_0x56d64d[_0xe524('0x57')][_0xe524('0x8b')]||!_0x56d64d['body']['newPassword']){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))](_0xe524('0x8e'));}if(!_0x2c85dc[_0xe524('0x8f')](_0x56d64d[_0xe524('0x57')][_0xe524('0x8b')])){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))](_0xe524('0x90'));}if(_0x56d64d[_0xe524('0x57')]['oldPassword']===_0x56d64d[_0xe524('0x57')][_0xe524('0x91')]){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))](_0xe524('0x92'));}}else if(_0x56d64d[_0xe524('0x7c')]['role']===_0xe524('0x29')){if(!_0x56d64d[_0xe524('0x57')][_0xe524('0x91')]){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))](_0xe524('0x93'));}}else if(_0x56d64d[_0xe524('0x7c')][_0xe524('0x28')]==='user'){if(!_0x56d64d['body']['newPassword']){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x2c85dc[_0xe524('0x28')]!==_0xe524('0x6b')){throw new db['Sequelize'][(_0xe524('0x8d'))](_0xe524('0x7d'));}}else{throw new db['Sequelize'][(_0xe524('0x8d'))](_0xe524('0x7d'));}return _0x2c85dc;})[_0xe524('0x26')](handleEntityNotFound(_0xc068df,null))['then'](function(_0x45b683){return db[_0xe524('0x5e')][_0xe524('0x94')]({'attributes':['id','securePassword',_0xe524('0x95'),_0xe524('0x96')]})[_0xe524('0x26')](function(_0x397b5d){if(_0x397b5d['securePassword'])authService['validatePasswordPattern'](_0x56d64d[_0xe524('0x57')][_0xe524('0x91')]);if(!_0x397b5d[_0xe524('0x95')]||!_0x45b683[_0xe524('0x97')])return _0x45b683;authService[_0xe524('0x98')](_0x56d64d[_0xe524('0x57')][_0xe524('0x91')],_0x45b683[_0xe524('0x97')],_0x397b5d[_0xe524('0x96')]);return _0x45b683;})[_0xe524('0x26')](saveUpdates({'password':_0x56d64d[_0xe524('0x57')][_0xe524('0x91')],'passwordResetAt':_0x56d64d[_0xe524('0x7c')]['id']==_0x56d64d['params']['id']?moment():null,'previousPasswords':authService[_0xe524('0x99')](_0x56d64d[_0xe524('0x57')][_0xe524('0x91')],_0x45b683[_0xe524('0x97')])},null));})[_0xe524('0x26')](respondWithResult(_0xc068df,null))[_0xe524('0x4f')](handleError(_0xc068df,null));};exports['addQueues']=function(_0x56c649,_0x3241b9){var _0x5b7913=_0x56c649[_0xe524('0x57')][_0xe524('0x9a')];return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x56c649[_0xe524('0x58')]['id']},'attributes':['id',_0xe524('0x32'),_0xe524('0x28'),'online',_0xe524('0x9b'),_0xe524('0x9c'),_0xe524('0x9d')]})[_0xe524('0x26')](handleEntityNotFound(_0x3241b9,null))['then'](function(_0x1428f6){if(_0x1428f6){if(!utils[_0xe524('0x9e')](_0x5b7913)){throw new db['Sequelize'][(_0xe524('0x8d'))](_0xe524('0x9f'));}return _0x1428f6['add'+_['capitalize'](_0x5b7913[_0xe524('0xa0')]())+_0xe524('0xa1')](_0x56c649[_0xe524('0x57')]['ids'],{'penalty':_0x56c649[_0xe524('0x57')]['penalty']||0x0})['spread'](function(_0x47fa59){for(var _0x337e25=0x0;_0x337e25<_0x56c649[_0xe524('0x57')][_0xe524('0x5c')][_0xe524('0x55')];_0x337e25+=0x1){var _0x5718a6={'UserId':Number(_0x56c649['params']['id'])};_0x5718a6[_['capitalize'](_0x5b7913[_0xe524('0xa0')]())+_0xe524('0xa2')]=Number(_0x56c649[_0xe524('0x57')][_0xe524('0x5c')][_0x337e25]);socket[_0xe524('0xa3')](_0xe524('0x7c')+_[_0xe524('0xa4')](_0x5b7913[_0xe524('0xa0')]())+'Queue:save',_0x5718a6);}return _0x47fa59;})[_0xe524('0x26')](function(){if(_0x5b7913===_0xe524('0xa5')){return db[_0xe524('0xa6')][_0xe524('0x44')]({'where':{'id':_0x56c649[_0xe524('0x57')][_0xe524('0x5c')]||[]},'raw':!![],'attributes':['id',_0xe524('0x32')]});}})[_0xe524('0x26')](function(_0x117120){var _0x8e8087=_0x1428f6['get']({'plain':!![]});var _0x19c143=[];if(_0x5b7913===_0xe524('0xa5')&&_0x8e8087[_0xe524('0x28')]===_0xe524('0x6b')&&_0x8e8087[_0xe524('0xa7')]){for(var _0x2a8d17=0x0;_0x2a8d17<_0x117120[_0xe524('0x55')];_0x2a8d17+=0x1){_0x19c143[_0xe524('0x43')]({'membername':_0x8e8087['name'],'UserId':_0x8e8087['id'],'queue_name':_0x117120[_0x2a8d17][_0xe524('0x32')],'VoiceQueueId':_0x117120[_0x2a8d17]['id'],'interface':_[_0xe524('0x62')](_0x8e8087[_0xe524('0x9d')])?util[_0xe524('0xa8')](_0xe524('0xa9'),_0x8e8087[_0xe524('0x32')]):_0x8e8087[_0xe524('0x9d')],'paused':_0x8e8087[_0xe524('0x9c')]||![],'penalty':_0x56c649[_0xe524('0x57')][_0xe524('0xaa')]||0x0});}return BPromise[_0xe524('0x86')](_0x19c143,function(_0x32b088){return db['UserVoiceQueueRt'][_0xe524('0xab')](_0x32b088);});}return _0x1428f6;});}})[_0xe524('0x26')](respondWithStatusCode(_0x3241b9,null))[_0xe524('0x4f')](handleError(_0x3241b9,null));};exports['removeQueues']=function(_0x47bc4b,_0x3cdb80){var _0x2afba3;return db[_0xe524('0x35')]['find']({'where':{'id':_0x47bc4b[_0xe524('0x58')]['id']},'attributes':['id',_0xe524('0x32'),_0xe524('0x28')]})['then'](handleEntityNotFound(_0x3cdb80,null))['then'](function(_0x19b2c5){if(_0x19b2c5){_0x2afba3=_0x19b2c5;if(!_0x47bc4b[_0xe524('0x3f')][_0xe524('0x9a')]||!utils['isValidChannel'](_0x47bc4b[_0xe524('0x3f')][_0xe524('0x9a')])){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))](_0xe524('0x9f'));}return _0x19b2c5[_0xe524('0xac')+_[_0xe524('0xa4')](_0x47bc4b['query'][_0xe524('0x9a')][_0xe524('0xa0')]())+_0xe524('0xa1')](_0x47bc4b[_0xe524('0x3f')][_0xe524('0x5c')]);}})['then'](function(_0x15c781){if(_[_0xe524('0xad')](_0x47bc4b['query'][_0xe524('0x5c')])){for(var _0x451818=0x0;_0x451818<_0x47bc4b[_0xe524('0x3f')][_0xe524('0x5c')][_0xe524('0x55')];_0x451818+=0x1){var _0x51b2f9={'UserId':Number(_0x47bc4b[_0xe524('0x58')]['id'])};_0x51b2f9[_[_0xe524('0xa4')](_0x47bc4b[_0xe524('0x3f')]['channel']['toLowerCase']())+_0xe524('0xa2')]=Number(_0x47bc4b[_0xe524('0x3f')][_0xe524('0x5c')][_0x451818]);socket[_0xe524('0xa3')](_0xe524('0x7c')+_[_0xe524('0xa4')](_0x47bc4b[_0xe524('0x3f')]['channel']['toLowerCase']())+_0xe524('0xae'),_0x51b2f9);}}else{var _0x51b2f9={'UserId':Number(_0x47bc4b['params']['id'])};_0x51b2f9[_[_0xe524('0xa4')](_0x47bc4b[_0xe524('0x3f')][_0xe524('0x9a')][_0xe524('0xa0')]())+_0xe524('0xa2')]=Number(_0x47bc4b[_0xe524('0x3f')]['ids']);socket['emit'](_0xe524('0x7c')+_[_0xe524('0xa4')](_0x47bc4b[_0xe524('0x3f')]['channel'][_0xe524('0xa0')]())+_0xe524('0xae'),_0x51b2f9);}return _0x15c781;})[_0xe524('0x26')](function(){if(_0x47bc4b[_0xe524('0x3f')]['channel']==='voice'){return db[_0xe524('0xaf')]['destroy']({'where':{'UserId':_0x47bc4b[_0xe524('0x58')]['id'],'VoiceQueueId':_0x47bc4b[_0xe524('0x3f')][_0xe524('0x5c')]},'individualHooks':!![]})[_0xe524('0x26')](function(){return _0x2afba3;});}return _0x2afba3;})[_0xe524('0x26')](respondWithStatusCode(_0x3cdb80,null))[_0xe524('0x4f')](handleError(_0x3cdb80,null));};exports[_0xe524('0xb0')]=function(_0x4530e7,_0x370798){_0x4530e7[_0xe524('0x57')][_0xe524('0xb1')]=_0x4530e7[_0xe524('0xb2')][_0xe524('0xb3')];return db[_0xe524('0x35')]['find']({'where':{'id':_0x4530e7[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x370798,null))[_0xe524('0x26')](saveUpdates(_0x4530e7['body'],null))[_0xe524('0x26')](respondWithResult(_0x370798,null))['catch'](handleError(_0x370798,null));};exports[_0xe524('0xb4')]=function(_0x5e255f,_0x32edd6){var _0x5600f7=path['join'](config['root'],'server/files/images/logos/default_profile.png');return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x5e255f[_0xe524('0x58')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0xe524('0x26')](handleEntityNotFound(_0x32edd6,null))['then'](function(_0x376631){if(_0x376631){if(_[_0xe524('0x62')](_0x376631[_0xe524('0xb1')])){return _0x32edd6[_0xe524('0xb5')](_0x5600f7);}else{if(!fs['existsSync'](path['join'](config[_0xe524('0xb6')],_0xe524('0xb7'),_0x376631[_0xe524('0xb1')]))){return _0x32edd6[_0xe524('0xb5')](_0x5600f7);}return _0x32edd6[_0xe524('0xb5')](path['join'](config[_0xe524('0xb6')],_0xe524('0xb7'),_0x376631['userpic']));}}})[_0xe524('0x4f')](handleError(_0x32edd6,null));};exports[_0xe524('0xb8')]=function(_0x11614f,_0x2cd10a){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x11614f[_0xe524('0x58')]['id']},'attributes':['id']})[_0xe524('0x26')](handleEntityNotFound(_0x2cd10a,null))[_0xe524('0x26')](function(_0x102be9){var _0x64f2e6=[];values=_0x102be9[_0xe524('0x48')];_0x64f2e6[_0xe524('0x43')](get_open_tabs(_0xe524('0x47'),_0x102be9['dataValues']));_0x64f2e6[_0xe524('0x43')](get_open_tabs(_0xe524('0x49'),_0x102be9['dataValues']));_0x64f2e6[_0xe524('0x43')](get_open_tabs(_0xe524('0x4c'),_0x102be9[_0xe524('0x48')]));_0x64f2e6[_0xe524('0x43')](get_open_tabs(_0xe524('0x4d'),_0x102be9[_0xe524('0x48')]));_0x64f2e6[_0xe524('0x43')](get_open_tabs(_0xe524('0x4b'),_0x102be9['dataValues']));_0x64f2e6['push'](get_open_tabs(_0xe524('0xb9'),_0x102be9[_0xe524('0x48')]));return BPromise['all'](_0x64f2e6);})[_0xe524('0x26')](function(_0x43d891){var _0x349bfc=[];if(_0x43d891){for(var _0x40fee1=0x0;_0x40fee1<values['ChatOpenTabs']['length'];_0x40fee1++){var _0x113461=values[_0xe524('0xba')][_0x40fee1];_0x349bfc[_0xe524('0x43')]({'channel':'CHAT','id':_0x113461['id'],'createdAt':_0x113461[_0xe524('0xbb')]});}for(var _0x40fee1=0x0;_0x40fee1<values[_0xe524('0xbc')][_0xe524('0x55')];_0x40fee1++){var _0x113461=values[_0xe524('0xbc')][_0x40fee1];_0x349bfc[_0xe524('0x43')]({'channel':_0xe524('0xbd'),'id':_0x113461['id'],'createdAt':_0x113461[_0xe524('0xbb')]});}for(var _0x40fee1=0x0;_0x40fee1<values[_0xe524('0xbe')][_0xe524('0x55')];_0x40fee1++){var _0x113461=values['OpenchannelOpenTabs'][_0x40fee1];_0x349bfc[_0xe524('0x43')]({'channel':'OPENCHANNEL','id':_0x113461['id'],'createdAt':_0x113461[_0xe524('0xbb')]});}for(var _0x40fee1=0x0;_0x40fee1<values[_0xe524('0xbf')][_0xe524('0x55')];_0x40fee1++){var _0x113461=values[_0xe524('0xbf')][_0x40fee1];_0x349bfc['push']({'channel':_0xe524('0xc0'),'id':_0x113461['id'],'createdAt':_0x113461['createdAt']});}for(var _0x40fee1=0x0;_0x40fee1<values[_0xe524('0xc1')][_0xe524('0x55')];_0x40fee1++){var _0x113461=values[_0xe524('0xc1')][_0x40fee1];_0x349bfc[_0xe524('0x43')]({'channel':_0xe524('0xc2'),'id':_0x113461['id'],'createdAt':_0x113461[_0xe524('0xbb')]});}for(var _0x40fee1=0x0;_0x40fee1<values[_0xe524('0xc3')][_0xe524('0x55')];_0x40fee1++){var _0x113461=values['WhatsappOpenTabs'][_0x40fee1];_0x349bfc['push']({'channel':_0xe524('0xc4'),'id':_0x113461['id'],'createdAt':_0x113461[_0xe524('0xbb')]});}var _0x286628={'count':_0x349bfc[_0xe524('0x55')],'rows':_0x349bfc};return _0x286628;}else return null;})['then'](respondWithResult(_0x2cd10a,null))[_0xe524('0x4f')](handleError(_0x2cd10a,null));};exports['getContacts']=function(_0x1e389c,_0x21688a){var _0x51cd92={};var _0x2bfbcc={};var _0x51a152;var _0xebac03;return db[_0xe524('0x35')]['findOne']({'where':{'id':_0x1e389c[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x21688a,null))['then'](function(_0x40504a){if(_0x40504a){_0x51a152=_0x40504a;_0x2bfbcc[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xc5')]['rawAttributes']);_0x2bfbcc[_0xe524('0x3f')]=_['keys'](_0x1e389c[_0xe524('0x3f')]);_0x2bfbcc[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x2bfbcc[_0xe524('0x50')],_0x2bfbcc[_0xe524('0x3f')]);_0x51cd92[_0xe524('0x42')]=_['intersection'](_0x2bfbcc['model'],qs[_0xe524('0x54')](_0x1e389c[_0xe524('0x3f')]['fields']));_0x51cd92['attributes']=_0x51cd92['attributes'][_0xe524('0x55')]?_0x51cd92[_0xe524('0x42')]:_0x2bfbcc[_0xe524('0x50')];_0x51cd92[_0xe524('0xc7')]=qs['sort'](_0x1e389c[_0xe524('0x3f')][_0xe524('0xc8')]);_0x51cd92[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_['pick'](_0x1e389c[_0xe524('0x3f')],_0x2bfbcc[_0xe524('0xc6')]));if(_0x1e389c['query'][_0xe524('0x3b')]){_0x51cd92['where']=_[_0xe524('0x56')](_0x51cd92[_0xe524('0xc9')],{'$or':_['map'](_0x51cd92['attributes'],function(_0x57c47b){var _0x416d64={};_0x416d64[_0x57c47b]={'$like':'%'+_0x1e389c[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x416d64;})});}_0x51cd92=_[_0xe524('0x56')]({},_0x51cd92,_0x1e389c['options']);return _0x51a152['getContacts'](_0x51cd92);}})[_0xe524('0x26')](function(_0x3906de){if(_0x3906de){_0xebac03=_0x3906de['length'];if(_0x1e389c[_0xe524('0x3f')]['hasOwnProperty']('includeAll')){_0x51cd92[_0xe524('0x41')]=[{'model':db[_0xe524('0xca')],'as':'List','required':![]},{'model':db[_0xe524('0xcb')],'as':'Tags','attributes':['id','name','color'],'where':_0x1e389c['query'][_0xe524('0xcc')]?{'id':_0x1e389c[_0xe524('0x3f')][_0xe524('0xcc')]}:undefined,'required':_0x1e389c[_0xe524('0x3f')]['tag']?!![]:![]}];}if(!_0x1e389c[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x51cd92['limit']=qs[_0xe524('0x20')](_0x1e389c[_0xe524('0x3f')][_0xe524('0x20')]);_0x51cd92['offset']=qs[_0xe524('0x1f')](_0x1e389c[_0xe524('0x3f')]['offset']);}return _0x51a152[_0xe524('0xcf')](_0x51cd92);}})[_0xe524('0x26')](function(_0x4a4869){if(_0x4a4869){return _0x4a4869?{'count':_0xebac03,'rows':_0x4a4869}:null;}})['then'](respondWithResult(_0x21688a,null))['catch'](handleError(_0x21688a,null));};exports['getQueues']=function(_0x1f2121,_0x149ce2){var _0x35ccd4;var _0x36ba07;var _0x2f745c={};var _0x5bcae1;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x1f2121[_0xe524('0x58')]['id']},'attributes':['id',_0xe524('0x32'),_0xe524('0x28')]})[_0xe524('0x26')](handleEntityNotFound(_0x149ce2,null))[_0xe524('0x26')](function(_0x3ce36f){if(!utils[_0xe524('0x9e')](_0x1f2121['query']['channel'])){throw new db['Sequelize']['ValidationError'](_0xe524('0x9f'));}_0x35ccd4=_0x3ce36f;var _0x32668f={};_0x32668f[_0xe524('0x50')]=_['keys'](db[_['capitalize'](_0x1f2121[_0xe524('0x3f')][_0xe524('0x9a')])+'Queue']['rawAttributes']);_0x32668f[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x1f2121['query']);_0x32668f[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x32668f[_0xe524('0x50')],_0x32668f[_0xe524('0x3f')]);_0x2f745c[_0xe524('0x42')]=_[_0xe524('0x53')](_0x32668f[_0xe524('0x50')],qs['fields'](_0x1f2121[_0xe524('0x3f')][_0xe524('0x54')]));_0x2f745c[_0xe524('0x42')]=_0x2f745c[_0xe524('0x42')][_0xe524('0x55')]?_0x2f745c[_0xe524('0x42')]:_0x32668f[_0xe524('0x50')];_0x2f745c[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x1f2121[_0xe524('0x3f')][_0xe524('0xc8')]);_0x2f745c['where']=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x1f2121[_0xe524('0x3f')],_0x32668f[_0xe524('0xc6')]));if(_0x1f2121[_0xe524('0x3f')][_0xe524('0x3b')]){_0x2f745c[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x2f745c[_0xe524('0xc9')],{'$or':_['map'](_0x2f745c[_0xe524('0x42')],function(_0x4c8199){var _0x11e4f0={};_0x11e4f0[_0x4c8199]={'$like':'%'+_0x1f2121[_0xe524('0x3f')]['filter']+'%'};return _0x11e4f0;})});}_0x2f745c=_[_0xe524('0x56')]({},_0x2f745c,_0x1f2121[_0xe524('0xd1')]);switch(_0x35ccd4[_0xe524('0x28')]){case _0xe524('0x29'):return db[_[_0xe524('0xa4')](_0x1f2121[_0xe524('0x3f')][_0xe524('0x9a')])+_0xe524('0xd2')][_0xe524('0x44')](_0x2f745c);case _0xe524('0x7c'):case _0xe524('0x6b'):return _0x35ccd4[_0xe524('0xd3')+_['capitalize'](_0x1f2121[_0xe524('0x3f')][_0xe524('0x9a')])+_0xe524('0xa1')](_0x2f745c);default:throw new db[(_0xe524('0x8c'))]['ValidationError']('Unknown\x20role');}})['then'](function(_0x8a103f){_0x5bcae1=_0x8a103f[_0xe524('0x55')];if(!_0x1f2121[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x2f745c[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x1f2121[_0xe524('0x3f')]['limit']);_0x2f745c[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x1f2121[_0xe524('0x3f')][_0xe524('0x1f')]);}switch(_0x35ccd4[_0xe524('0x28')]){case _0xe524('0x29'):return db[_[_0xe524('0xa4')](_0x1f2121[_0xe524('0x3f')]['channel'])+_0xe524('0xd2')][_0xe524('0x44')](_0x2f745c);case _0xe524('0x7c'):case _0xe524('0x6b'):return _0x35ccd4[_0xe524('0xd3')+_[_0xe524('0xa4')](_0x1f2121['query'][_0xe524('0x9a')])+'Queues'](_0x2f745c);}})[_0xe524('0x26')](function(_0x44df6a){return{'count':_0x5bcae1,'rows':_0x44df6a};})[_0xe524('0x26')](respondWithResult(_0x149ce2,null))[_0xe524('0x4f')](handleError(_0x149ce2,null));};exports[_0xe524('0xd4')]=function(_0x3dbc54,_0x4f56b8){var _0x353add={};var _0x4b3ef1={};var _0x108c5e;var _0x5d32ff;return db[_0xe524('0x35')]['findOne']({'where':{'id':_0x3dbc54[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x4f56b8,null))[_0xe524('0x26')](function(_0xc0ffc9){if(_0xc0ffc9){_0x108c5e=_0xc0ffc9;_0x4b3ef1[_0xe524('0x50')]=_['keys'](db[_0xe524('0xaf')][_0xe524('0x36')]);_0x4b3ef1['query']=_[_0xe524('0x52')](_0x3dbc54[_0xe524('0x3f')]);_0x4b3ef1[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x4b3ef1[_0xe524('0x50')],_0x4b3ef1[_0xe524('0x3f')]);_0x353add[_0xe524('0x42')]=_[_0xe524('0x53')](_0x4b3ef1['model'],qs[_0xe524('0x54')](_0x3dbc54[_0xe524('0x3f')][_0xe524('0x54')]));_0x353add[_0xe524('0x42')]=_0x353add[_0xe524('0x42')]['length']?_0x353add['attributes']:_0x4b3ef1[_0xe524('0x50')];_0x353add['order']=qs['sort'](_0x3dbc54['query'][_0xe524('0xc8')]);_0x353add['where']=qs['filters'](_[_0xe524('0xd0')](_0x3dbc54[_0xe524('0x3f')],_0x4b3ef1[_0xe524('0xc6')]));if(_0x3dbc54[_0xe524('0x3f')][_0xe524('0x3b')]){_0x353add[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x353add['where'],{'$or':_[_0xe524('0x37')](_0x353add[_0xe524('0x42')],function(_0x263c42){var _0x1b50a8={};_0x1b50a8[_0x263c42]={'$like':'%'+_0x3dbc54['query'][_0xe524('0x3b')]+'%'};return _0x1b50a8;})});}_0x353add=_['merge']({},_0x353add,_0x3dbc54[_0xe524('0xd1')]);return _0x108c5e['getVoiceQueuesRt'](_0x353add);}})[_0xe524('0x26')](function(_0x4a41c7){if(_0x4a41c7){_0x5d32ff=_0x4a41c7['length'];if(!_0x3dbc54[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x353add[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x3dbc54[_0xe524('0x3f')][_0xe524('0x20')]);_0x353add[_0xe524('0x1f')]=qs['offset'](_0x3dbc54[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x108c5e[_0xe524('0xd4')](_0x353add);}})[_0xe524('0x26')](function(_0x1e7218){if(_0x1e7218){return _0x1e7218?{'count':_0x5d32ff,'rows':_0x1e7218}:null;}})['then'](respondWithResult(_0x4f56b8,null))[_0xe524('0x4f')](handleError(_0x4f56b8,null));};exports['getGroups']=function(_0x1a0a75,_0x345149){var _0x4cee00={};var _0x778b15={};var _0x36aa5f;var _0x495fa1;return db['User'][_0xe524('0x94')]({'where':{'id':_0x1a0a75[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x345149,null))[_0xe524('0x26')](function(_0x272457){if(_0x272457){_0x36aa5f=_0x272457;_0x778b15[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xd5')]['rawAttributes']);_0x778b15[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x1a0a75[_0xe524('0x3f')]);_0x778b15['filters']=_[_0xe524('0x53')](_0x778b15[_0xe524('0x50')],_0x778b15['query']);_0x4cee00[_0xe524('0x42')]=_[_0xe524('0x53')](_0x778b15[_0xe524('0x50')],qs[_0xe524('0x54')](_0x1a0a75[_0xe524('0x3f')][_0xe524('0x54')]));_0x4cee00[_0xe524('0x42')]=_0x4cee00[_0xe524('0x42')][_0xe524('0x55')]?_0x4cee00[_0xe524('0x42')]:_0x778b15[_0xe524('0x50')];_0x4cee00[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x1a0a75[_0xe524('0x3f')]['sort']);_0x4cee00['where']=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x1a0a75[_0xe524('0x3f')],_0x778b15['filters']));if(_0x1a0a75[_0xe524('0x3f')][_0xe524('0x3b')]){_0x4cee00[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x4cee00[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x4cee00['attributes'],function(_0x37fee2){var _0x3e665c={};_0x3e665c[_0x37fee2]={'$like':'%'+_0x1a0a75[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x3e665c;})});}_0x4cee00=_[_0xe524('0x56')]({},_0x4cee00,_0x1a0a75[_0xe524('0xd1')]);return _0x36aa5f[_0xe524('0xd6')](_0x4cee00);}})[_0xe524('0x26')](function(_0x3f2b43){if(_0x3f2b43){_0x495fa1=_0x3f2b43[_0xe524('0x55')];if(!_0x1a0a75[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x4cee00[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x1a0a75[_0xe524('0x3f')][_0xe524('0x20')]);_0x4cee00[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x1a0a75['query']['offset']);}return _0x36aa5f[_0xe524('0xd6')](_0x4cee00);}})['then'](function(_0x5ea899){if(_0x5ea899){return _0x5ea899?{'count':_0x495fa1,'rows':_0x5ea899}:null;}})['then'](respondWithResult(_0x345149,null))[_0xe524('0x4f')](handleError(_0x345149,null));};exports[_0xe524('0xd7')]=function(_0xc42028,_0x7d2190){var _0x15e6e6={'raw':!![],'where':{}};var _0x532b40={};var _0xa93a88={'count':0x0,'rows':[]};return db['User'][_0xe524('0x94')]({'where':{'id':_0xc42028['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x7d2190,null))['then'](function(_0x45e903){if(_0x45e903){_0x532b40[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xd8')][_0xe524('0x36')]);_0x532b40[_0xe524('0x3f')]=_[_0xe524('0x52')](_0xc42028['query']);_0x532b40[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x532b40['model'],_0x532b40[_0xe524('0x3f')]);_0x15e6e6[_0xe524('0x42')]=_['intersection'](_0x532b40[_0xe524('0x50')],qs[_0xe524('0x54')](_0xc42028[_0xe524('0x3f')][_0xe524('0x54')]));_0x15e6e6[_0xe524('0x42')]=_0x15e6e6[_0xe524('0x42')][_0xe524('0x55')]?_0x15e6e6[_0xe524('0x42')]:_0x532b40[_0xe524('0x50')];if(!_0xc42028['query']['hasOwnProperty']('nolimit')){_0x15e6e6[_0xe524('0x20')]=qs[_0xe524('0x20')](_0xc42028[_0xe524('0x3f')]['limit']);_0x15e6e6[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0xc42028[_0xe524('0x3f')][_0xe524('0x1f')]);}_0x15e6e6[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0xc42028[_0xe524('0x3f')][_0xe524('0xc8')]);_0x15e6e6['where']=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0xc42028[_0xe524('0x3f')],_0x532b40['filters']));_0x15e6e6[_0xe524('0xc9')]['UserId']=_0x45e903['id'];if(_0xc42028[_0xe524('0x3f')][_0xe524('0x3b')]){_0x15e6e6['where']=_[_0xe524('0x56')](_0x15e6e6[_0xe524('0xc9')],{'$or':_['map'](_0x15e6e6['attributes'],function(_0x3313c6){var _0x327349={};_0x327349[_0x3313c6]={'$like':'%'+_0xc42028[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x327349;})});}_0x15e6e6=_[_0xe524('0x56')]({},_0x15e6e6,_0xc42028[_0xe524('0xd1')]);return db[_0xe524('0xd8')][_0xe524('0x22')]({'where':_0x15e6e6['where']})['then'](function(_0x932927){_0xa93a88[_0xe524('0x22')]=_0x932927;if(_0xc42028['query']['includeAll']){_0x15e6e6[_0xe524('0x41')]=[{'all':!![]}];}return db[_0xe524('0xd8')][_0xe524('0x44')](_0x15e6e6);})[_0xe524('0x26')](function(_0x42d624){_0xa93a88['rows']=_0x42d624;return _0xa93a88;});}})[_0xe524('0x26')](respondWithFilteredResult(_0x7d2190,_0x15e6e6))['catch'](handleError(_0x7d2190,null));};exports[_0xe524('0xd9')]=function(_0x31df11,_0x1de054){var _0x46a467={'raw':!![],'where':{}};var _0x400292={};var _0x69d73={'count':0x0,'rows':[]};return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x31df11[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x1de054,null))['then'](function(_0x23e240){if(_0x23e240){_0x400292['model']=_[_0xe524('0x52')](db[_0xe524('0xda')][_0xe524('0x36')]);_0x400292['query']=_[_0xe524('0x52')](_0x31df11[_0xe524('0x3f')]);_0x400292[_0xe524('0xc6')]=_['intersection'](_0x400292[_0xe524('0x50')],_0x400292[_0xe524('0x3f')]);_0x46a467['attributes']=_[_0xe524('0x53')](_0x400292[_0xe524('0x50')],qs[_0xe524('0x54')](_0x31df11[_0xe524('0x3f')][_0xe524('0x54')]));_0x46a467[_0xe524('0x42')]=_0x46a467[_0xe524('0x42')][_0xe524('0x55')]?_0x46a467['attributes']:_0x400292['model'];if(!_0x31df11[_0xe524('0x3f')]['hasOwnProperty'](_0xe524('0xce'))){_0x46a467[_0xe524('0x20')]=qs['limit'](_0x31df11[_0xe524('0x3f')][_0xe524('0x20')]);_0x46a467['offset']=qs[_0xe524('0x1f')](_0x31df11[_0xe524('0x3f')][_0xe524('0x1f')]);}_0x46a467[_0xe524('0xc7')]=qs['sort'](_0x31df11['query']['sort']);_0x46a467['where']=qs['filters'](_[_0xe524('0xd0')](_0x31df11[_0xe524('0x3f')],_0x400292['filters']));_0x46a467[_0xe524('0xc9')][_0xe524('0xdb')]=_0x23e240['id'];if(_0x31df11[_0xe524('0x3f')][_0xe524('0x3b')]){_0x46a467[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x46a467['where'],{'$or':_[_0xe524('0x37')](_0x46a467[_0xe524('0x42')],function(_0x1f5994){var _0x56adc3={};_0x56adc3[_0x1f5994]={'$like':'%'+_0x31df11[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x56adc3;})});}_0x46a467=_[_0xe524('0x56')]({},_0x46a467,_0x31df11[_0xe524('0xd1')]);return db[_0xe524('0xda')][_0xe524('0x22')]({'where':_0x46a467['where']})[_0xe524('0x26')](function(_0x210020){_0x69d73[_0xe524('0x22')]=_0x210020;if(_0x31df11[_0xe524('0x3f')][_0xe524('0x40')]){_0x46a467['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xe524('0x44')](_0x46a467);})[_0xe524('0x26')](function(_0x44957c){_0x69d73[_0xe524('0x4a')]=_0x44957c;return _0x69d73;});}})[_0xe524('0x26')](respondWithFilteredResult(_0x1de054,_0x46a467))[_0xe524('0x4f')](handleError(_0x1de054,null));};exports[_0xe524('0xdc')]=function(_0x1e35b4,_0x3356fd){var _0x52d173={};var _0x13fd41={};var _0x3e5bc9;var _0x1e6dde;return db['User'][_0xe524('0x94')]({'where':{'id':_0x1e35b4['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x3356fd,null))[_0xe524('0x26')](function(_0x236f3f){if(_0x236f3f){_0x3e5bc9=_0x236f3f;_0x13fd41[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xdd')][_0xe524('0x36')]);_0x13fd41[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x1e35b4['query']);_0x13fd41[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x13fd41[_0xe524('0x50')],_0x13fd41[_0xe524('0x3f')]);_0x52d173['attributes']=_[_0xe524('0x53')](_0x13fd41[_0xe524('0x50')],qs[_0xe524('0x54')](_0x1e35b4[_0xe524('0x3f')][_0xe524('0x54')]));_0x52d173['attributes']=_0x52d173[_0xe524('0x42')][_0xe524('0x55')]?_0x52d173[_0xe524('0x42')]:_0x13fd41[_0xe524('0x50')];_0x52d173[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x1e35b4[_0xe524('0x3f')][_0xe524('0xc8')]);_0x52d173[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_['pick'](_0x1e35b4[_0xe524('0x3f')],_0x13fd41[_0xe524('0xc6')]));if(_0x1e35b4[_0xe524('0x3f')][_0xe524('0x3b')]){_0x52d173['where']=_[_0xe524('0x56')](_0x52d173['where'],{'$or':_[_0xe524('0x37')](_0x52d173['attributes'],function(_0x555ca5){var _0x35fa88={};_0x35fa88[_0x555ca5]={'$like':'%'+_0x1e35b4[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x35fa88;})});}_0x52d173=_[_0xe524('0x56')]({},_0x52d173,_0x1e35b4[_0xe524('0xd1')]);return _0x3e5bc9[_0xe524('0xdc')](_0x52d173);}})['then'](function(_0x57026b){if(_0x57026b){_0x1e6dde=_0x57026b['length'];if(!_0x1e35b4['query']['hasOwnProperty'](_0xe524('0xce'))){_0x52d173['limit']=qs[_0xe524('0x20')](_0x1e35b4[_0xe524('0x3f')][_0xe524('0x20')]);_0x52d173['offset']=qs['offset'](_0x1e35b4[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x3e5bc9[_0xe524('0xdc')](_0x52d173);}})[_0xe524('0x26')](function(_0x334fe1){if(_0x334fe1){return _0x334fe1?{'count':_0x1e6dde,'rows':_0x334fe1}:null;}})['then'](respondWithResult(_0x3356fd,null))['catch'](handleError(_0x3356fd,null));};exports[_0xe524('0xde')]=function(_0xc1e6cc,_0x3f2b71){var _0x3e0536={};var _0x2d9b87={};var _0xfb2d08;var _0x5d23a6;return db['User'][_0xe524('0x94')]({'where':{'id':_0xc1e6cc['params']['id']}})['then'](handleEntityNotFound(_0x3f2b71,null))[_0xe524('0x26')](function(_0x5506e3){if(_0x5506e3){_0xfb2d08=_0x5506e3;_0x2d9b87[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xdf')][_0xe524('0x36')]);_0x2d9b87[_0xe524('0x3f')]=_[_0xe524('0x52')](_0xc1e6cc['query']);_0x2d9b87[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x2d9b87['model'],_0x2d9b87[_0xe524('0x3f')]);_0x3e0536[_0xe524('0x42')]=_[_0xe524('0x53')](_0x2d9b87[_0xe524('0x50')],qs['fields'](_0xc1e6cc[_0xe524('0x3f')][_0xe524('0x54')]));_0x3e0536['attributes']=_0x3e0536[_0xe524('0x42')][_0xe524('0x55')]?_0x3e0536[_0xe524('0x42')]:_0x2d9b87[_0xe524('0x50')];_0x3e0536[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0xc1e6cc[_0xe524('0x3f')]['sort']);_0x3e0536[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0xc1e6cc[_0xe524('0x3f')],_0x2d9b87[_0xe524('0xc6')]));if(_0xc1e6cc[_0xe524('0x3f')][_0xe524('0x3b')]){_0x3e0536[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x3e0536[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x3e0536[_0xe524('0x42')],function(_0x24a86d){var _0x1098a4={};_0x1098a4[_0x24a86d]={'$like':'%'+_0xc1e6cc['query'][_0xe524('0x3b')]+'%'};return _0x1098a4;})});}_0x3e0536=_[_0xe524('0x56')]({},_0x3e0536,_0xc1e6cc[_0xe524('0xd1')]);return _0xfb2d08[_0xe524('0xde')](_0x3e0536);}})[_0xe524('0x26')](function(_0x5654f5){if(_0x5654f5){_0x5d23a6=_0x5654f5['length'];if(!_0xc1e6cc[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x3e0536[_0xe524('0x20')]=qs[_0xe524('0x20')](_0xc1e6cc['query'][_0xe524('0x20')]);_0x3e0536[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0xc1e6cc[_0xe524('0x3f')]['offset']);}return _0xfb2d08[_0xe524('0xde')](_0x3e0536);}})[_0xe524('0x26')](function(_0xc835e8){if(_0xc835e8){return _0xc835e8?{'count':_0x5d23a6,'rows':_0xc835e8}:null;}})[_0xe524('0x26')](respondWithResult(_0x3f2b71,null))['catch'](handleError(_0x3f2b71,null));};exports[_0xe524('0xe0')]=function(_0xcf21ed,_0x29a084){var _0xade539={'raw':!![],'where':{}};var _0x2bce61={};var _0xf53556={'count':0x0,'rows':[]};return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0xcf21ed['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x29a084,null))[_0xe524('0x26')](function(_0x26b179){if(_0x26b179){_0x2bce61[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xe1')][_0xe524('0x36')]);_0x2bce61['query']=_[_0xe524('0x52')](_0xcf21ed[_0xe524('0x3f')]);_0x2bce61[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x2bce61[_0xe524('0x50')],_0x2bce61['query']);_0xade539['attributes']=_[_0xe524('0x53')](_0x2bce61[_0xe524('0x50')],qs['fields'](_0xcf21ed[_0xe524('0x3f')][_0xe524('0x54')]));_0xade539['attributes']=_0xade539[_0xe524('0x42')]['length']?_0xade539[_0xe524('0x42')]:_0x2bce61[_0xe524('0x50')];if(!_0xcf21ed[_0xe524('0x3f')][_0xe524('0xcd')]('nolimit')){_0xade539[_0xe524('0x20')]=qs[_0xe524('0x20')](_0xcf21ed[_0xe524('0x3f')]['limit']);_0xade539[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0xcf21ed[_0xe524('0x3f')][_0xe524('0x1f')]);}_0xade539['order']=qs[_0xe524('0xc8')](_0xcf21ed['query'][_0xe524('0xc8')]);_0xade539[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0xcf21ed[_0xe524('0x3f')],_0x2bce61['filters']));_0xade539[_0xe524('0xc9')][_0xe524('0xdb')]=_0x26b179['id'];if(_0xcf21ed[_0xe524('0x3f')][_0xe524('0x3b')]){_0xade539['where']=_['merge'](_0xade539[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0xade539[_0xe524('0x42')],function(_0x563078){var _0x27af7a={};_0x27af7a[_0x563078]={'$like':'%'+_0xcf21ed[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x27af7a;})});}_0xade539=_['merge']({},_0xade539,_0xcf21ed[_0xe524('0xd1')]);return db[_0xe524('0xe1')]['count']({'where':_0xade539['where']})[_0xe524('0x26')](function(_0x2af74b){_0xf53556['count']=_0x2af74b;if(_0xcf21ed[_0xe524('0x3f')][_0xe524('0x40')]){_0xade539[_0xe524('0x41')]=[{'all':!![]}];}return db[_0xe524('0xe1')][_0xe524('0x44')](_0xade539);})[_0xe524('0x26')](function(_0x15866e){_0xf53556[_0xe524('0x4a')]=_0x15866e;return _0xf53556;});}})[_0xe524('0x26')](respondWithFilteredResult(_0x29a084,_0xade539))['catch'](handleError(_0x29a084,null));};exports[_0xe524('0xe2')]=function(_0x25d936,_0x43de47){var _0xd1f1aa={};var _0x3d1809={};var _0x851d90;var _0x48a6cb;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x25d936['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x43de47,null))['then'](function(_0x1fc012){if(_0x1fc012){_0x851d90=_0x1fc012;_0x3d1809[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xe3')]['rawAttributes']);_0x3d1809[_0xe524('0x3f')]=_['keys'](_0x25d936[_0xe524('0x3f')]);_0x3d1809[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x3d1809[_0xe524('0x50')],_0x3d1809[_0xe524('0x3f')]);_0xd1f1aa['attributes']=_[_0xe524('0x53')](_0x3d1809['model'],qs['fields'](_0x25d936['query']['fields']));_0xd1f1aa[_0xe524('0x42')]=_0xd1f1aa['attributes'][_0xe524('0x55')]?_0xd1f1aa[_0xe524('0x42')]:_0x3d1809[_0xe524('0x50')];_0xd1f1aa['order']=qs[_0xe524('0xc8')](_0x25d936['query']['sort']);_0xd1f1aa[_0xe524('0xc9')]=qs['filters'](_[_0xe524('0xd0')](_0x25d936['query'],_0x3d1809[_0xe524('0xc6')]));if(_0x25d936['query'][_0xe524('0x3b')]){_0xd1f1aa[_0xe524('0xc9')]=_[_0xe524('0x56')](_0xd1f1aa[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0xd1f1aa[_0xe524('0x42')],function(_0x3d3e45){var _0x3da20d={};_0x3da20d[_0x3d3e45]={'$like':'%'+_0x25d936[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x3da20d;})});}_0xd1f1aa=_[_0xe524('0x56')]({},_0xd1f1aa,_0x25d936[_0xe524('0xd1')]);return _0x851d90[_0xe524('0xe2')](_0xd1f1aa);}})[_0xe524('0x26')](function(_0x350269){if(_0x350269){_0x48a6cb=_0x350269['length'];if(!_0x25d936[_0xe524('0x3f')][_0xe524('0xcd')]('nolimit')){_0xd1f1aa['limit']=qs[_0xe524('0x20')](_0x25d936[_0xe524('0x3f')]['limit']);_0xd1f1aa[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x25d936[_0xe524('0x3f')]['offset']);}return _0x851d90[_0xe524('0xe2')](_0xd1f1aa);}})['then'](function(_0xd8bc62){if(_0xd8bc62){return _0xd8bc62?{'count':_0x48a6cb,'rows':_0xd8bc62}:null;}})[_0xe524('0x26')](respondWithResult(_0x43de47,null))[_0xe524('0x4f')](handleError(_0x43de47,null));};exports[_0xe524('0xe4')]=function(_0x113bd7,_0x4558ce){var _0x4900e0={};var _0x396ba2={};var _0x445649;var _0x120292;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x113bd7[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x4558ce,null))[_0xe524('0x26')](function(_0x1a8a2c){if(_0x1a8a2c){_0x445649=_0x1a8a2c;_0x396ba2[_0xe524('0x50')]=_['keys'](db['FaxInteraction']['rawAttributes']);_0x396ba2[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x113bd7[_0xe524('0x3f')]);_0x396ba2[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x396ba2[_0xe524('0x50')],_0x396ba2['query']);_0x4900e0[_0xe524('0x42')]=_['intersection'](_0x396ba2['model'],qs['fields'](_0x113bd7[_0xe524('0x3f')][_0xe524('0x54')]));_0x4900e0['attributes']=_0x4900e0['attributes']['length']?_0x4900e0[_0xe524('0x42')]:_0x396ba2[_0xe524('0x50')];_0x4900e0[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x113bd7['query'][_0xe524('0xc8')]);_0x4900e0['where']=qs['filters'](_['pick'](_0x113bd7[_0xe524('0x3f')],_0x396ba2[_0xe524('0xc6')]));if(_0x113bd7[_0xe524('0x3f')]['filter']){_0x4900e0[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x4900e0[_0xe524('0xc9')],{'$or':_['map'](_0x4900e0[_0xe524('0x42')],function(_0x3da1f2){var _0x324b82={};_0x324b82[_0x3da1f2]={'$like':'%'+_0x113bd7[_0xe524('0x3f')]['filter']+'%'};return _0x324b82;})});}_0x4900e0=_[_0xe524('0x56')]({},_0x4900e0,_0x113bd7[_0xe524('0xd1')]);return _0x445649[_0xe524('0xe4')](_0x4900e0);}})[_0xe524('0x26')](function(_0x14104e){if(_0x14104e){_0x120292=_0x14104e['length'];if(!_0x113bd7[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x4900e0[_0xe524('0x20')]=qs['limit'](_0x113bd7[_0xe524('0x3f')][_0xe524('0x20')]);_0x4900e0[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x113bd7[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x445649[_0xe524('0xe4')](_0x4900e0);}})['then'](function(_0x6eafb3){if(_0x6eafb3){return _0x6eafb3?{'count':_0x120292,'rows':_0x6eafb3}:null;}})[_0xe524('0x26')](respondWithResult(_0x4558ce,null))[_0xe524('0x4f')](handleError(_0x4558ce,null));};exports[_0xe524('0xe5')]=function(_0x5b88f6,_0x56daf8){var _0x4d0c8f={};var _0x450eb3={};var _0x3e49b9;var _0x4e4e81;return db['User'][_0xe524('0x94')]({'where':{'id':_0x5b88f6[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x56daf8,null))[_0xe524('0x26')](function(_0x25c68){if(_0x25c68){_0x3e49b9=_0x25c68;_0x450eb3[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xe6')][_0xe524('0x36')]);_0x450eb3['query']=_[_0xe524('0x52')](_0x5b88f6[_0xe524('0x3f')]);_0x450eb3[_0xe524('0xc6')]=_['intersection'](_0x450eb3[_0xe524('0x50')],_0x450eb3[_0xe524('0x3f')]);_0x4d0c8f['attributes']=_[_0xe524('0x53')](_0x450eb3[_0xe524('0x50')],qs['fields'](_0x5b88f6[_0xe524('0x3f')][_0xe524('0x54')]));_0x4d0c8f[_0xe524('0x42')]=_0x4d0c8f[_0xe524('0x42')][_0xe524('0x55')]?_0x4d0c8f['attributes']:_0x450eb3['model'];_0x4d0c8f['order']=qs['sort'](_0x5b88f6[_0xe524('0x3f')][_0xe524('0xc8')]);_0x4d0c8f[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_['pick'](_0x5b88f6[_0xe524('0x3f')],_0x450eb3[_0xe524('0xc6')]));if(_0x5b88f6[_0xe524('0x3f')]['filter']){_0x4d0c8f['where']=_[_0xe524('0x56')](_0x4d0c8f[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x4d0c8f['attributes'],function(_0x33f17b){var _0x27a910={};_0x27a910[_0x33f17b]={'$like':'%'+_0x5b88f6[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x27a910;})});}_0x4d0c8f=_[_0xe524('0x56')]({},_0x4d0c8f,_0x5b88f6['options']);return _0x3e49b9[_0xe524('0xe5')](_0x4d0c8f);}})[_0xe524('0x26')](function(_0xaaedcd){if(_0xaaedcd){_0x4e4e81=_0xaaedcd[_0xe524('0x55')];if(!_0x5b88f6[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x4d0c8f[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x5b88f6[_0xe524('0x3f')][_0xe524('0x20')]);_0x4d0c8f['offset']=qs[_0xe524('0x1f')](_0x5b88f6[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x3e49b9[_0xe524('0xe5')](_0x4d0c8f);}})['then'](function(_0x41ef55){if(_0x41ef55){return _0x41ef55?{'count':_0x4e4e81,'rows':_0x41ef55}:null;}})[_0xe524('0x26')](respondWithResult(_0x56daf8,null))['catch'](handleError(_0x56daf8,null));};exports[_0xe524('0xe7')]=function(_0x21aa6e,_0x30843d,_0x969856){var _0x461713;var _0x543465;var _0x3de82d;var _0x2f502b=!_['isNil'](_0x21aa6e[_0xe524('0x58')]['id'])?_0x21aa6e[_0xe524('0x58')]['id']:!_[_0xe524('0x62')](_0x21aa6e[_0xe524('0x7c')]['id'])?_0x21aa6e[_0xe524('0x7c')]['id']:null;return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x2f502b,'role':{'$or':[_0xe524('0x29'),_0xe524('0x7c'),_0xe524('0x6b')]}},'attributes':['id','name','phone',_0xe524('0xe8'),_0xe524('0x28'),_0xe524('0x5d'),'loginInPause']})['then'](function(_0x255c75){if(_0x255c75){if(_0x255c75['role']==='agent'){_0x461713=_0x255c75;if(_0x21aa6e[_0xe524('0x57')][_0xe524('0x9d')]){_0x3de82d=util[_0xe524('0xa8')](_0xe524('0xe9'),_0x461713[_0x21aa6e[_0xe524('0x57')][_0xe524('0x9d')]]);}else if(_0x21aa6e[_0xe524('0x57')][_0xe524('0xea')]){_0x3de82d=util[_0xe524('0xa8')]('SIP/%s',_0x21aa6e[_0xe524('0x57')][_0xe524('0xea')]);}else{_0x3de82d=util[_0xe524('0xa8')](_0xe524('0xa9'),_0x461713[_0xe524('0x32')]);}socket['to'](util[_0xe524('0xa8')]('user:%s',_0x461713[_0xe524('0x32')]))[_0xe524('0xa3')](_0xe524('0xeb'),{'user':{'id':_0x461713['id'],'name':_0x461713[_0xe524('0x32')]},'ip':_0x21aa6e[_0xe524('0xec')][_0xe524('0xed')]||_0x21aa6e[_0xe524('0xee')][_0xe524('0xef')]||_0x21aa6e['socket'][_0xe524('0xef')]||_0x21aa6e[_0xe524('0xee')][_0xe524('0xf0')][_0xe524('0xef')]});return db[_0xe524('0xaf')][_0xe524('0x27')]({'where':{'membername':_0x461713[_0xe524('0x32')]},'individualHooks':!![]});}}else{throw new db[(_0xe524('0x8c'))]['ValidationError'](_0xe524('0xf1'));}})[_0xe524('0x26')](function(){if(_0x461713){return _0x461713[_0xe524('0xf2')]({'raw':!![]});}})[_0xe524('0x26')](function(_0x5d5724){if(_0x461713){var _0x51991f=[];if(_0x5d5724){_0x543465=_0x5d5724;if(_0x543465[_0xe524('0x55')]){for(var _0x1994a5=0x0;_0x1994a5<_0x543465[_0xe524('0x55')];_0x1994a5++){_0x51991f[_0xe524('0x43')]({'membername':_0x461713[_0xe524('0x32')],'UserId':_0x461713['id'],'queue_name':_0x543465[_0x1994a5][_0xe524('0x32')],'VoiceQueueId':_0x543465[_0x1994a5]['id'],'interface':_0x3de82d,'paused':_0x461713[_0xe524('0x9b')]||![],'penalty':_0x543465[_0x1994a5][_0xe524('0xf3')]||0x0});}return BPromise[_0xe524('0x86')](_0x51991f,function(_0x4fd854){return db[_0xe524('0xaf')][_0xe524('0xab')](_0x4fd854);});}}}})['then'](function(){if(_0x461713){return db[_0xe524('0xf4')][_0xe524('0x44')]({'where':{'membername':_0x461713[_0xe524('0x32')],'exitAt':null}});}})[_0xe524('0x26')](function(_0x4c8bfc){if(_0x461713){var _0x1017e1=[];_0x4c8bfc['forEach'](function(_0x2e29e0){_0x1017e1[_0xe524('0x43')](_0x2e29e0[_0xe524('0x25')]({'exitAt':moment()[_0xe524('0xa8')](_0xe524('0xf5'))}));});return BPromise['all'](_0x1017e1);}})[_0xe524('0x26')](function(){if(_0x461713){var _0x380de3=[];var _0x299882=[];var _0x5c4c31=utils[_0xe524('0xf6')]();var _0x3427a1={'membername':_0x461713['name'],'interface':_0x3de82d,'enterAt':moment()[_0xe524('0xa8')](_0xe524('0xf5')),'role':_0x461713[_0xe524('0x28')],'internal':_0x461713[_0xe524('0x5d')]};_0x5c4c31[_0xe524('0xf7')](function(_0x552269){_0x380de3[_0xe524('0x43')](_[_0xe524('0x56')]({'channel':_0x552269,'type':_0xe524('0xf8'),'data1':_0x21aa6e[_0xe524('0x57')]['device'],'data2':_0x3de82d},_0x3427a1));if(_0x461713[_0xe524('0x9b')]){_0x299882[_0xe524('0x43')](_[_0xe524('0x56')]({'channel':_0x552269,'type':_0xe524('0xf9'),'data1':_0xe524('0xfa')},_0x3427a1));}});return db['MemberReport'][_0xe524('0xfb')](_0x380de3[_0xe524('0xfc')](_0x299882),{'individualHooks':!![]});}})[_0xe524('0x26')](function(){if(_0x461713){return _0x461713[_0xe524('0x25')]({'online':!![],'lastLoginAt':moment()[_0xe524('0xa8')](_0xe524('0xf5')),'voicePause':_0x461713[_0xe524('0x9b')]||![],'mailPause':_0x461713[_0xe524('0x9b')]||![],'chatPause':_0x461713[_0xe524('0x9b')]||![],'faxPause':_0x461713['loginInPause']||![],'smsPause':_0x461713[_0xe524('0x9b')]||![],'openchannelPause':_0x461713[_0xe524('0x9b')]||![],'whatsappPause':_0x461713['loginInPause']||![],'pauseType':_0x461713[_0xe524('0x9b')]?'LOGININPAUSE':null,'interface':_0x3de82d,'lastPauseAt':moment()[_0xe524('0xa8')]('YYYY-MM-DD\x20HH:mm:ss')});}})['then'](function(_0x5c475e){if(_0x21aa6e[_0xe524('0xfd')]){return _0x969856();}else{return BPromise[_0xe524('0xfe')](_0x5c475e)[_0xe524('0x26')](respondWithResult(_0x30843d,null));}})[_0xe524('0x4f')](handleError(_0x30843d,null));};exports[_0xe524('0xff')]=function(_0x5aa04f,_0x53ea06){var _0x14d0a0;return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x5aa04f[_0xe524('0x58')]['id'],'role':_0xe524('0x6b')},'attributes':['id',_0xe524('0x32'),'role']})[_0xe524('0x26')](handleEntityNotFound(_0x53ea06,null))[_0xe524('0x26')](function(_0x1594b0){if(_0x1594b0){_0x14d0a0=_0x1594b0;return db[_0xe524('0xaf')]['destroy']({'where':{'membername':_0x14d0a0[_0xe524('0x32')]},'individualHooks':!![]});}})[_0xe524('0x26')](function(){return db[_0xe524('0xf4')][_0xe524('0x44')]({'where':{'membername':_0x14d0a0[_0xe524('0x32')],'exitAt':null}});})[_0xe524('0x26')](function(_0x233b15){var _0x27224a=[];_0x233b15['forEach'](function(_0x2316a8){_0x27224a[_0xe524('0x43')](_0x2316a8[_0xe524('0x25')]({'exitAt':moment()[_0xe524('0xa8')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe524('0x4e')](_0x27224a);})[_0xe524('0x26')](function(){return _0x14d0a0['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xe524('0x26')](respondWithResult(_0x53ea06,null))[_0xe524('0x4f')](handleError(_0x53ea06,null));};exports[_0xe524('0x100')]=function(_0x259f4c,_0x239692){var _0x3d559e;return db[_0xe524('0xaf')]['update']({'paused':0x1},{'where':{'UserId':_0x259f4c[_0xe524('0x58')]['id']},'individualHooks':!![]})[_0xe524('0x26')](function(){return db[_0xe524('0x35')]['find']({'where':{'id':_0x259f4c['params']['id'],'role':'agent'},'attributes':['id',_0xe524('0x32'),_0xe524('0x28'),_0xe524('0x5d'),_0xe524('0x9d')]});})[_0xe524('0x26')](handleEntityNotFound(_0x239692,null))['then'](function(_0x43b73b){if(_0x43b73b){_0x3d559e=_0x43b73b;return respondWithRpcPromise('QueuePause',_0xe524('0x100'),{'id':_0x3d559e['id'],'name':_0x3d559e[_0xe524('0x32')],'pause':!![]});}})[_0xe524('0x26')](function(){if(_0x3d559e){return db['MemberReport']['findAll']({'where':{'membername':_0x3d559e[_0xe524('0x32')],'type':_0xe524('0xf9'),'exitAt':null}});}})[_0xe524('0x26')](function(_0x353f42){if(_0x353f42[_0xe524('0x55')]){var _0x1bbf53=moment()['format'](_0xe524('0xf5'));for(var _0x6797c8=0x0,_0x21f7d5=_0x353f42[_0xe524('0x55')];_0x6797c8<_0x21f7d5;_0x6797c8++){_0x353f42[_0x6797c8][_0xe524('0x101')]({'exitAt':_0x1bbf53});}}})['then'](function(){var _0x22c1a9=[];var _0x5e3c8b=utils[_0xe524('0xf6')]();_0x5e3c8b[_0xe524('0xf7')](function(_0x2c5130){_0x22c1a9[_0xe524('0x43')]({'channel':_0x2c5130,'membername':_0x3d559e[_0xe524('0x32')],'interface':_[_0xe524('0x62')](_0x3d559e['interface'])?util[_0xe524('0xa8')](_0xe524('0xa9'),_0x3d559e[_0xe524('0x32')]):_0x3d559e[_0xe524('0x9d')],'type':_0xe524('0xf9'),'enterAt':moment()[_0xe524('0xa8')](_0xe524('0xf5')),'data1':_0x259f4c[_0xe524('0x57')][_0xe524('0x39')]||'DEFAULT\x20PAUSE','role':_0x3d559e[_0xe524('0x28')],'internal':_0x3d559e[_0xe524('0x5d')]});});return db['MemberReport'][_0xe524('0xfb')](_0x22c1a9,{'individualHooks':!![]});})['then'](function(){return _0x3d559e[_0xe524('0x25')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x259f4c[_0xe524('0x57')]['type']||_0xe524('0x102'),'lastPauseAt':moment()[_0xe524('0xa8')](_0xe524('0xf5'))});})[_0xe524('0x26')](respondWithResult(_0x239692,null))[_0xe524('0x4f')](handleError(_0x239692,null));};exports[_0xe524('0x103')]=function(_0x3917dc,_0xe6bab3){var _0x4e5c0e;return db['User'][_0xe524('0x31')]({'where':{'id':_0x3917dc[_0xe524('0x58')]['id']},'attributes':['id',_0xe524('0x32'),'role',_0xe524('0x9c'),_0xe524('0x104'),'chatPause','faxPause',_0xe524('0x105'),_0xe524('0x106'),'whatsapppause','pauseType',_0xe524('0x107')]})[_0xe524('0x26')](handleEntityNotFound(_0xe6bab3,null))[_0xe524('0x26')](function(_0x48fdbe){if(_0x48fdbe){_0x4e5c0e=_0x48fdbe;if(_0x3917dc[_0xe524('0x57')][_0xe524('0x9a')]&&!utils[_0xe524('0x9e')](_0x3917dc[_0xe524('0x57')][_0xe524('0x9a')])){throw new db[(_0xe524('0x8c'))][(_0xe524('0x8d'))](_0xe524('0x9f'));}switch(_0x3917dc['body'][_0xe524('0x9a')]){case _0xe524('0xa5'):return respondWithRpcPromise(_0xe524('0x108'),_0xe524('0x103'),{'id':_0x4e5c0e['id'],'name':_0x4e5c0e[_0xe524('0x32')],'pause':![]})['then'](function(){return db[_0xe524('0xaf')][_0xe524('0x25')]({'paused':0x0},{'where':{'UserId':_0x4e5c0e['id']},'individualHooks':!![]});})[_0xe524('0x26')](function(){return db[_0xe524('0xf4')]['find']({'where':{'channel':_0x3917dc[_0xe524('0x57')][_0xe524('0x9a')],'membername':_0x4e5c0e[_0xe524('0x32')],'type':'PAUSE','exitAt':null}});})[_0xe524('0x26')](function(_0x418c4b){if(_0x418c4b){return _0x418c4b[_0xe524('0x25')]({'exitAt':moment()[_0xe524('0xa8')](_0xe524('0xf5')),'data2':_0xe524('0x109')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x4e5c0e[_0xe524('0x25')]({'voicePause':![]});});case _0xe524('0xb9'):case _0xe524('0x47'):case _0xe524('0x4b'):case'sms':case'whatsapp':case _0xe524('0x4c'):return db['MemberReport'][_0xe524('0x31')]({'where':{'channel':_0x3917dc[_0xe524('0x57')]['channel'],'membername':_0x4e5c0e[_0xe524('0x32')],'type':'PAUSE','exitAt':null}})[_0xe524('0x26')](function(_0x26c5b7){if(_0x26c5b7){return _0x26c5b7[_0xe524('0x25')]({'exitAt':moment()[_0xe524('0xa8')](_0xe524('0xf5')),'data2':_0xe524('0x109')},{'individualHooks':!![]});}return null;})[_0xe524('0x26')](function(){var _0x41b29a={};_[_0xe524('0x23')](_0x41b29a,util[_0xe524('0xa8')](_0xe524('0x10a'),_0x3917dc['body'][_0xe524('0x9a')],_0xe524('0x10b')),![]);return _0x4e5c0e['update'](_0x41b29a);});default:return respondWithRpcPromise(_0xe524('0x108'),_0xe524('0x103'),{'id':_0x4e5c0e['id'],'name':_0x4e5c0e[_0xe524('0x32')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0xe524('0x25')]({'paused':0x0},{'where':{'UserId':_0x4e5c0e['id']}});})['then'](function(){return db[_0xe524('0xf4')][_0xe524('0x44')]({'where':{'membername':_0x4e5c0e['name'],'type':_0xe524('0xf9'),'exitAt':null}});})[_0xe524('0x26')](function(_0x49527e){var _0x29f0ef=[];_0x49527e[_0xe524('0xf7')](function(_0x4e9e05){_0x29f0ef['push'](_0x4e9e05[_0xe524('0x25')]({'exitAt':moment()[_0xe524('0xa8')](_0xe524('0xf5')),'data2':_0xe524('0x109')}));});return BPromise[_0xe524('0x4e')](_0x29f0ef);})[_0xe524('0x26')](function(){return _0x4e5c0e[_0xe524('0x25')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xe524('0x26')](respondWithResult(_0xe6bab3,null))[_0xe524('0x4f')](handleError(_0xe6bab3,null));};exports[_0xe524('0x10c')]=function(_0x22895f,_0x195f4d){var _0x5f4f3c={};var _0x51cd7b={};var _0xcd10d1;var _0x4167ef;return db['User']['findOne']({'where':{'id':_0x22895f['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x195f4d,null))[_0xe524('0x26')](function(_0xd7d10a){if(_0xd7d10a){_0xcd10d1=_0xd7d10a;_0x51cd7b[_0xe524('0x50')]=_[_0xe524('0x52')](db['Team'][_0xe524('0x36')]);_0x51cd7b[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x22895f[_0xe524('0x3f')]);_0x51cd7b[_0xe524('0xc6')]=_['intersection'](_0x51cd7b['model'],_0x51cd7b[_0xe524('0x3f')]);_0x5f4f3c[_0xe524('0x42')]=_[_0xe524('0x53')](_0x51cd7b[_0xe524('0x50')],qs[_0xe524('0x54')](_0x22895f[_0xe524('0x3f')][_0xe524('0x54')]));_0x5f4f3c['attributes']=_0x5f4f3c[_0xe524('0x42')][_0xe524('0x55')]?_0x5f4f3c['attributes']:_0x51cd7b['model'];_0x5f4f3c['order']=qs[_0xe524('0xc8')](_0x22895f['query'][_0xe524('0xc8')]);_0x5f4f3c[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x22895f[_0xe524('0x3f')],_0x51cd7b['filters']));if(_0x22895f['query']['filter']){_0x5f4f3c['where']=_[_0xe524('0x56')](_0x5f4f3c['where'],{'$or':_['map'](_0x5f4f3c[_0xe524('0x42')],function(_0x5a2969){var _0x28f5bb={};_0x28f5bb[_0x5a2969]={'$like':'%'+_0x22895f[_0xe524('0x3f')]['filter']+'%'};return _0x28f5bb;})});}_0x5f4f3c=_[_0xe524('0x56')]({},_0x5f4f3c,_0x22895f['options']);return _0xcd10d1['getTeams'](_0x5f4f3c);}})[_0xe524('0x26')](function(_0x5ab633){if(_0x5ab633){_0x4167ef=_0x5ab633[_0xe524('0x55')];if(!_0x22895f[_0xe524('0x3f')]['hasOwnProperty']('nolimit')){_0x5f4f3c[_0xe524('0x20')]=qs['limit'](_0x22895f[_0xe524('0x3f')][_0xe524('0x20')]);_0x5f4f3c[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x22895f[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0xcd10d1[_0xe524('0x10c')](_0x5f4f3c);}})[_0xe524('0x26')](function(_0x2a08df){if(_0x2a08df){return _0x2a08df?{'count':_0x4167ef,'rows':_0x2a08df}:null;}})[_0xe524('0x26')](respondWithResult(_0x195f4d,null))[_0xe524('0x4f')](handleError(_0x195f4d,null));};exports['addTeams']=function(_0x24d08d,_0x2d543c){return db['User'][_0xe524('0x31')]({'where':{'id':_0x24d08d[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x2d543c,null))[_0xe524('0x26')](function(_0x31726f){if(_0x31726f){var _0x339195=_0x31726f[_0xe524('0xd3')]({'plain':!![]});return _0x31726f['addTeams'](_0x24d08d[_0xe524('0x57')][_0xe524('0x5c')],_[_0xe524('0x5b')](_0x24d08d[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{})[_0xe524('0x26')](function(){for(var _0x41ff09=0x0;_0x41ff09<_0x24d08d['body'][_0xe524('0x5c')][_0xe524('0x55')];_0x41ff09++){var _0x348b44=[];var _0x5b1268={};db[_0xe524('0x10d')][_0xe524('0x94')]({'where':{'id':_0x24d08d['body'][_0xe524('0x5c')][_0x41ff09]}})[_0xe524('0x26')](function(_0x260cb1){_0x5b1268=_0x260cb1[_0xe524('0x48')];_0x348b44[_0xe524('0x43')](_0x260cb1[_0xe524('0xf2')]()[_0xe524('0x26')](function(_0x8a457f){for(var _0x2fd0f7=0x0;_0x2fd0f7<_0x8a457f[_0xe524('0x55')];_0x2fd0f7++){_0x8a457f[_0x2fd0f7][_0xe524('0x10e')](_0xe524('0x9a'),'Voice');}return _0x8a457f;}));_0x348b44[_0xe524('0x43')](_0x260cb1[_0xe524('0x10f')]()[_0xe524('0x26')](function(_0x4d0118){for(var _0x59cc46=0x0;_0x59cc46<_0x4d0118[_0xe524('0x55')];_0x59cc46++){_0x4d0118[_0x59cc46][_0xe524('0x10e')](_0xe524('0x9a'),_0xe524('0x110'));}return _0x4d0118;}));_0x348b44['push'](_0x260cb1[_0xe524('0x111')]()['then'](function(_0x2c34e4){for(var _0x4cd98f=0x0;_0x4cd98f<_0x2c34e4[_0xe524('0x55')];_0x4cd98f++){_0x2c34e4[_0x4cd98f]['setDataValue'](_0xe524('0x9a'),_0xe524('0x112'));}return _0x2c34e4;}));_0x348b44['push'](_0x260cb1[_0xe524('0x113')]()['then'](function(_0x10b7d2){for(var _0x1abe08=0x0;_0x1abe08<_0x10b7d2['length'];_0x1abe08++){_0x10b7d2[_0x1abe08][_0xe524('0x10e')](_0xe524('0x9a'),'Sms');}return _0x10b7d2;}));_0x348b44[_0xe524('0x43')](_0x260cb1[_0xe524('0x114')]()['then'](function(_0x3e0bc6){for(var _0x421d3a=0x0;_0x421d3a<_0x3e0bc6[_0xe524('0x55')];_0x421d3a++){_0x3e0bc6[_0x421d3a][_0xe524('0x10e')](_0xe524('0x9a'),_0xe524('0x115'));}return _0x3e0bc6;}));_0x348b44[_0xe524('0x43')](_0x260cb1[_0xe524('0x116')]()[_0xe524('0x26')](function(_0x12ddbe){for(var _0x587d72=0x0;_0x587d72<_0x12ddbe[_0xe524('0x55')];_0x587d72++){_0x12ddbe[_0x587d72]['setDataValue']('channel',_0xe524('0x117'));}return _0x12ddbe;}));_0x348b44[_0xe524('0x43')](_0x260cb1['getOpenchannelQueues']()[_0xe524('0x26')](function(_0x422a1a){for(var _0x127983=0x0;_0x127983<_0x422a1a[_0xe524('0x55')];_0x127983++){_0x422a1a[_0x127983]['setDataValue'](_0xe524('0x9a'),_0xe524('0x118'));}return _0x422a1a;}));return BPromise[_0xe524('0x4e')](_0x348b44);})[_0xe524('0x26')](function(_0x660430){var _0x498606=_[_0xe524('0x119')](_0x660430);_0x348b44=[];return db['sequelize'][_0xe524('0x11a')](function(_0x3b033d){for(var _0x117892=0x0;_0x117892<_0x498606[_0xe524('0x55')];_0x117892++){_0x348b44['push'](_0x498606[_0x117892][_0xe524('0x11b')](_0x339195['id']),{'transaction':_0x3b033d});}return BPromise[_0xe524('0x4e')](_0x348b44)[_0xe524('0x26')](function(){if(_0x339195[_0xe524('0xa7')]){return BPromise[_0xe524('0x86')](_[_0xe524('0x3b')](_0x498606,function(_0x584a94){return _0x584a94['getDataValue'](_0xe524('0x9a'))===_0xe524('0x11c');}),function(_0x281891){return db[_0xe524('0xaf')]['upsert']({'membername':_0x339195[_0xe524('0x32')],'UserId':_0x339195['id'],'queue_name':_0x281891['name'],'VoiceQueueId':_0x281891['id'],'interface':_[_0xe524('0x62')](_0x339195['interface'])?util[_0xe524('0xa8')]('SIP/%s',_0x339195[_0xe524('0x32')]):_0x339195[_0xe524('0x9d')],'paused':_0x339195[_0xe524('0x9c')]||![],'penalty':_0x339195[_0xe524('0xaa')]},{'transaction':_0x3b033d});});}else{return;}})[_0xe524('0x26')](function(){for(var _0x307680=0x0;_0x307680<_0x498606[_0xe524('0x55')];_0x307680++){var _0x115c68=_0x498606[_0x307680][_0xe524('0x11d')](_0xe524('0x9a'));var _0x38cb2b=_0x115c68+'QueueId';socket[_0xe524('0xa3')]('user'+_0x115c68+_0xe524('0x11e'),{'UserId':_0x339195['id'],['queueField']:_0x498606[_0x307680]['id']});}});});})['then'](function(){db[_0xe524('0x11f')]['findOne']({'where':{'teamId':_0x5b1268['id']}})[_0xe524('0x26')](function(_0x1d1ffa){if(_0x1d1ffa){db[_0xe524('0x120')][_0xe524('0x7b')]({'UserId':_0x24d08d[_0xe524('0x58')]['id'],'VoicePrefixId':_0x1d1ffa['VoicePrefixId']});}});});}});}})[_0xe524('0x26')](respondWithStatusCode(_0x2d543c,null))[_0xe524('0x4f')](handleError(_0x2d543c,null));};exports[_0xe524('0x121')]=function(_0x424c45,_0x1508d6){return db['User'][_0xe524('0x94')]({'where':{'id':_0x424c45[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x1508d6,null))[_0xe524('0x26')](function(_0x1e415a){if(_0x1e415a){var _0x50eeb5=_0x1e415a['get']({'plain':!![]});var _0x55a0dc=_0x424c45[_0xe524('0x3f')][_0xe524('0x5c')];return _0x1e415a[_0xe524('0x121')](_0x55a0dc)[_0xe524('0x26')](function(){for(var _0x2bd1b2=0x0;_0x2bd1b2<_0x55a0dc[_0xe524('0x55')];_0x2bd1b2++){var _0x2d3c44=[];var _0x352247={};db[_0xe524('0x10d')][_0xe524('0x94')]({'where':{'id':_0x55a0dc[_0x2bd1b2]}})['then'](function(_0x411502){_0x352247=_0x411502['dataValues'];_0x2d3c44[_0xe524('0x43')](_0x411502[_0xe524('0xf2')]()[_0xe524('0x26')](function(_0x47b2a1){for(var _0x4ff9ce=0x0;_0x4ff9ce<_0x47b2a1[_0xe524('0x55')];_0x4ff9ce++){_0x47b2a1[_0x4ff9ce][_0xe524('0x10e')](_0xe524('0x9a'),'Voice');}return _0x47b2a1;}));_0x2d3c44['push'](_0x411502[_0xe524('0x10f')]()['then'](function(_0x5bb553){for(var _0x14a7bb=0x0;_0x14a7bb<_0x5bb553[_0xe524('0x55')];_0x14a7bb++){_0x5bb553[_0x14a7bb][_0xe524('0x10e')](_0xe524('0x9a'),_0xe524('0x110'));}return _0x5bb553;}));_0x2d3c44['push'](_0x411502['getMailQueues']()[_0xe524('0x26')](function(_0x514452){for(var _0x1bd8bd=0x0;_0x1bd8bd<_0x514452[_0xe524('0x55')];_0x1bd8bd++){_0x514452[_0x1bd8bd][_0xe524('0x10e')](_0xe524('0x9a'),_0xe524('0x112'));}return _0x514452;}));_0x2d3c44[_0xe524('0x43')](_0x411502[_0xe524('0x113')]()[_0xe524('0x26')](function(_0x1901cd){for(var _0x3111d5=0x0;_0x3111d5<_0x1901cd[_0xe524('0x55')];_0x3111d5++){_0x1901cd[_0x3111d5][_0xe524('0x10e')](_0xe524('0x9a'),'Sms');}return _0x1901cd;}));_0x2d3c44[_0xe524('0x43')](_0x411502[_0xe524('0x114')]()[_0xe524('0x26')](function(_0x14fc9a){for(var _0x30722d=0x0;_0x30722d<_0x14fc9a[_0xe524('0x55')];_0x30722d++){_0x14fc9a[_0x30722d][_0xe524('0x10e')](_0xe524('0x9a'),_0xe524('0x115'));}return _0x14fc9a;}));_0x2d3c44['push'](_0x411502[_0xe524('0x116')]()['then'](function(_0x262eb4){for(var _0x419d96=0x0;_0x419d96<_0x262eb4[_0xe524('0x55')];_0x419d96++){_0x262eb4[_0x419d96]['setDataValue'](_0xe524('0x9a'),_0xe524('0x117'));}return _0x262eb4;}));_0x2d3c44[_0xe524('0x43')](_0x411502[_0xe524('0x122')]()['then'](function(_0x573679){for(var _0xbfffc4=0x0;_0xbfffc4<_0x573679[_0xe524('0x55')];_0xbfffc4++){_0x573679[_0xbfffc4]['setDataValue'](_0xe524('0x9a'),_0xe524('0x118'));}return _0x573679;}));return BPromise[_0xe524('0x4e')](_0x2d3c44);})[_0xe524('0x26')](function(_0x189956){var _0x418a41=_[_0xe524('0x119')](_0x189956);_0x2d3c44=[];return db['sequelize'][_0xe524('0x11a')](function(_0x13f0a9){for(var _0x39da81=0x0;_0x39da81<_0x418a41['length'];_0x39da81++){_0x2d3c44['push'](_0x418a41[_0x39da81][_0xe524('0x123')](_0x50eeb5['id']),{'transaction':_0x13f0a9});}return BPromise['all'](_0x2d3c44)[_0xe524('0x26')](function(){if(_0x50eeb5[_0xe524('0xa7')]){return BPromise['each'](_[_0xe524('0x3b')](_0x418a41,function(_0x1f8810){return _0x1f8810[_0xe524('0x11d')](_0xe524('0x9a'))===_0xe524('0x11c');}),function(_0x4a2cc7){return db[_0xe524('0xaf')][_0xe524('0x27')]({'where':{'VoiceQueueId':_0x4a2cc7['id'],'UserId':_0x50eeb5['id']},'transaction':_0x13f0a9});});}else{return;}})[_0xe524('0x26')](function(){db[_0xe524('0x11f')]['findOne']({'where':{'teamId':_0x352247['id']}})[_0xe524('0x26')](function(_0x48cbb7){if(_0x48cbb7){return db['UserVoicePrefix'][_0xe524('0x27')]({'where':{'UserId':_0x50eeb5['id'],'VoicePrefixId':_0x48cbb7[_0xe524('0x48')]['VoicePrefixId']}});}});})[_0xe524('0x26')](function(){for(var _0x53fb1c=0x0;_0x53fb1c<_0x418a41[_0xe524('0x55')];_0x53fb1c++){var _0x28d0ba=_0x418a41[_0x53fb1c][_0xe524('0x11d')]('channel');var _0x1c442f=_0x28d0ba+_0xe524('0xa2');socket[_0xe524('0xa3')]('user'+_0x28d0ba+'Queue:remove',{'UserId':_0x50eeb5['id'],['queueField']:_0x418a41[_0x53fb1c]['id']});}});});});}});}})[_0xe524('0x26')](respondWithStatusCode(_0x1508d6,null))[_0xe524('0x4f')](handleError(_0x1508d6,null));};exports[_0xe524('0x124')]=function(_0xb37b42,_0x1dfea2){var _0x2111c1={};var _0x365e7a={};var _0x4ec991;var _0x48332a;return db['User'][_0xe524('0x94')]({'where':{'id':_0xb37b42[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x1dfea2,null))[_0xe524('0x26')](function(_0x17bcfe){if(_0x17bcfe){_0x4ec991=_0x17bcfe;_0x365e7a[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0xca')][_0xe524('0x36')]);_0x365e7a[_0xe524('0x3f')]=_[_0xe524('0x52')](_0xb37b42[_0xe524('0x3f')]);_0x365e7a['filters']=_[_0xe524('0x53')](_0x365e7a['model'],_0x365e7a[_0xe524('0x3f')]);_0x2111c1[_0xe524('0x42')]=_[_0xe524('0x53')](_0x365e7a[_0xe524('0x50')],qs['fields'](_0xb37b42['query'][_0xe524('0x54')]));_0x2111c1['attributes']=_0x2111c1[_0xe524('0x42')][_0xe524('0x55')]?_0x2111c1['attributes']:_0x365e7a[_0xe524('0x50')];_0x2111c1[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0xb37b42[_0xe524('0x3f')][_0xe524('0xc8')]);_0x2111c1['where']=qs['filters'](_[_0xe524('0xd0')](_0xb37b42[_0xe524('0x3f')],_0x365e7a['filters']));if(_0xb37b42[_0xe524('0x3f')]['filter']){_0x2111c1['where']=_['merge'](_0x2111c1[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x2111c1[_0xe524('0x42')],function(_0x4be18c){var _0x182b94={};_0x182b94[_0x4be18c]={'$like':'%'+_0xb37b42[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x182b94;})});}_0x2111c1=_[_0xe524('0x56')]({},_0x2111c1,_0xb37b42[_0xe524('0xd1')]);return _0x4ec991[_0xe524('0x124')](_0x2111c1);}})[_0xe524('0x26')](function(_0x448b97){if(_0x448b97){_0x48332a=_0x448b97[_0xe524('0x55')];if(!_0xb37b42[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x2111c1['limit']=qs[_0xe524('0x20')](_0xb37b42[_0xe524('0x3f')][_0xe524('0x20')]);_0x2111c1[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0xb37b42['query'][_0xe524('0x1f')]);}return _0x4ec991[_0xe524('0x124')](_0x2111c1);}})['then'](function(_0x1e49c8){if(_0x1e49c8){return _0x1e49c8?{'count':_0x48332a,'rows':_0x1e49c8}:null;}})['then'](respondWithResult(_0x1dfea2,null))[_0xe524('0x4f')](handleError(_0x1dfea2,null));};exports[_0xe524('0x125')]=function(_0x2e035a,_0xc47475){var _0x12aea8={};var _0xa49dfb={};var _0x2ffc59;var _0x2105e5;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x2e035a[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0xc47475,null))[_0xe524('0x26')](function(_0x2f8302){if(_0x2f8302){_0x2ffc59=_0x2f8302;_0xa49dfb[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0x35')][_0xe524('0x36')]);_0xa49dfb[_0xe524('0x3f')]=_['keys'](_0x2e035a[_0xe524('0x3f')]);_0xa49dfb[_0xe524('0xc6')]=_['intersection'](_0xa49dfb['model'],_0xa49dfb[_0xe524('0x3f')]);_0x12aea8[_0xe524('0x42')]=_[_0xe524('0x53')](_0xa49dfb[_0xe524('0x50')],qs[_0xe524('0x54')](_0x2e035a[_0xe524('0x3f')][_0xe524('0x54')]));_0x12aea8[_0xe524('0x42')]=_0x12aea8[_0xe524('0x42')]['length']?_0x12aea8['attributes']:_0xa49dfb[_0xe524('0x50')];_0x12aea8[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x2e035a[_0xe524('0x3f')][_0xe524('0xc8')]);_0x12aea8[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x2e035a[_0xe524('0x3f')],_0xa49dfb[_0xe524('0xc6')]));if(_0x2e035a['query']['filter']){_0x12aea8[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x12aea8[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x12aea8['attributes'],function(_0x325955){var _0x48bdca={};_0x48bdca[_0x325955]={'$like':'%'+_0x2e035a[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x48bdca;})});}_0x12aea8[_0xe524('0x50')]=db[_0xe524('0x35')];_0x12aea8['as']='Agents';_0x12aea8=_[_0xe524('0x56')]({},_0x12aea8,_0x2e035a[_0xe524('0xd1')]);return _0x2ffc59[_0xe524('0xf2')]({'include':[_0x12aea8]});}})[_0xe524('0x26')](function(_0x2601d3){if(_0x2601d3){var _0x41dab5={},_0x29c72e=[],_0x1d52bf=0x0;for(var _0x2ced45=0x0;_0x2ced45<_0x2601d3['length'];_0x2ced45+=0x1){for(var _0x9dff5=0x0,_0x256089;_0x9dff5<_0x2601d3[_0x2ced45][_0xe524('0x2b')][_0xe524('0x55')];_0x9dff5+=0x1){_0x256089=_0x2601d3[_0x2ced45][_0xe524('0x2b')][_0x9dff5][_0xe524('0xd3')]({'plain':!![]});_0x41dab5[_0x256089['id']]=_0x256089;}}_0x41dab5=_[_0xe524('0x126')](_0x41dab5);for(var _0x24b64d=qs['offset'](_0x2e035a['query'][_0xe524('0x1f')]);_0x24b64d<_0x41dab5[_0xe524('0x55')]&&_0x29c72e[_0xe524('0x55')]<qs[_0xe524('0x20')](_0x2e035a[_0xe524('0x3f')][_0xe524('0x20')]);_0x24b64d+=0x1){if(_0x41dab5[_0x24b64d]){_0x29c72e[_0xe524('0x43')](_0x41dab5[_0x24b64d]);}}return{'count':_0x41dab5[_0xe524('0x55')],'rows':_0x29c72e};}})['then'](respondWithResult(_0xc47475,null))[_0xe524('0x4f')](handleError(_0xc47475,null));};exports['destroy']=function(_0x1c7476,_0x5dc7d6){if(_0x1c7476['user']['id']==_0x1c7476[_0xe524('0x58')]['id']){return _0x5dc7d6[_0xe524('0x1c')](0x1f4)[_0xe524('0x34')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xe524('0x35')]['find']({'where':{'id':_0x1c7476[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x5dc7d6,null))['then'](removeEntity(_0x5dc7d6,null))[_0xe524('0x4f')](handleError(_0x5dc7d6,null));};exports[_0xe524('0x127')]=function(_0x1a063d,_0x483778){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x1a063d[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x483778,null))[_0xe524('0x26')](function(_0x2f6fba){if(_0x2f6fba){return _0x2f6fba[_0xe524('0x127')](_0x1a063d['body'][_0xe524('0x5c')],_['omit'](_0x1a063d[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{})[_0xe524('0x128')](function(){for(var _0x41c105=0x0;_0x41c105<_0x1a063d[_0xe524('0x57')][_0xe524('0x5c')][_0xe524('0x55')];_0x41c105+=0x1){socket[_0xe524('0xa3')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x1a063d[_0xe524('0x57')]['ids'][_0x41c105]),'UserId':Number(_0x1a063d[_0xe524('0x58')]['id'])});}return _0x1a063d[_0xe524('0x57')]['ids'];});}})[_0xe524('0x26')](respondWithResult(_0x483778,null))[_0xe524('0x4f')](handleError(_0x483778,null));};exports[_0xe524('0x129')]=function(_0x30db9b,_0x58f0f6){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x30db9b[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x58f0f6,null))[_0xe524('0x26')](function(_0x256f69){if(_0x256f69){return _0x256f69[_0xe524('0x129')](_0x30db9b[_0xe524('0x3f')][_0xe524('0x5c')])[_0xe524('0x26')](function(){if(_[_0xe524('0xad')](_0x30db9b[_0xe524('0x3f')][_0xe524('0x5c')])){for(var _0x202227=0x0;_0x202227<_0x30db9b[_0xe524('0x3f')][_0xe524('0x5c')][_0xe524('0x55')];_0x202227+=0x1){socket[_0xe524('0xa3')](_0xe524('0x12a'),{'ChatInteractionId':Number(_0x30db9b[_0xe524('0x3f')]['ids'][_0x202227]),'UserId':Number(_0x30db9b[_0xe524('0x58')]['id'])});}}else{socket[_0xe524('0xa3')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x30db9b['query'][_0xe524('0x5c')]),'UserId':Number(_0x30db9b[_0xe524('0x58')]['id'])});}});}})[_0xe524('0x26')](respondWithStatusCode(_0x58f0f6,null))['catch'](handleError(_0x58f0f6,null));};exports[_0xe524('0x12b')]=function(_0x1fb018,_0x269f15){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x1fb018[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x269f15,null))[_0xe524('0x26')](function(_0x213f6f){if(_0x213f6f){return _0x213f6f[_0xe524('0x12b')](_0x1fb018[_0xe524('0x57')][_0xe524('0x5c')],_['omit'](_0x1fb018[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{})[_0xe524('0x128')](function(){for(var _0x130df4=0x0;_0x130df4<_0x1fb018['body']['ids'][_0xe524('0x55')];_0x130df4+=0x1){socket[_0xe524('0xa3')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x1fb018[_0xe524('0x57')][_0xe524('0x5c')][_0x130df4]),'UserId':Number(_0x1fb018['params']['id'])});}return _0x1fb018[_0xe524('0x57')][_0xe524('0x5c')];});}})[_0xe524('0x26')](respondWithResult(_0x269f15,null))[_0xe524('0x4f')](handleError(_0x269f15,null));};exports[_0xe524('0x12c')]=function(_0x2cf1f7,_0x412f61){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x2cf1f7[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x412f61,null))[_0xe524('0x26')](function(_0x5b37b0){if(_0x5b37b0){return _0x5b37b0[_0xe524('0x12c')](_0x2cf1f7[_0xe524('0x3f')]['ids'])[_0xe524('0x26')](function(){if(_[_0xe524('0xad')](_0x2cf1f7[_0xe524('0x3f')][_0xe524('0x5c')])){for(var _0x26bae6=0x0;_0x26bae6<_0x2cf1f7[_0xe524('0x3f')][_0xe524('0x5c')][_0xe524('0x55')];_0x26bae6+=0x1){socket[_0xe524('0xa3')](_0xe524('0x12d'),{'MailInteractionId':Number(_0x2cf1f7[_0xe524('0x3f')][_0xe524('0x5c')][_0x26bae6]),'UserId':Number(_0x2cf1f7[_0xe524('0x58')]['id'])});}}else{socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x2cf1f7[_0xe524('0x3f')][_0xe524('0x5c')]),'UserId':Number(_0x2cf1f7[_0xe524('0x58')]['id'])});}});}})[_0xe524('0x26')](respondWithStatusCode(_0x412f61,null))[_0xe524('0x4f')](handleError(_0x412f61,null));};exports[_0xe524('0x12e')]=function(_0x1e56d8,_0x4d774e){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x1e56d8[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x4d774e,null))[_0xe524('0x26')](function(_0x525547){if(_0x525547){return _0x525547[_0xe524('0x12e')](_0x1e56d8['body'][_0xe524('0x5c')],_['omit'](_0x1e56d8[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{})[_0xe524('0x128')](function(){for(var _0x532e79=0x0;_0x532e79<_0x1e56d8[_0xe524('0x57')][_0xe524('0x5c')][_0xe524('0x55')];_0x532e79+=0x1){socket[_0xe524('0xa3')](_0xe524('0x12f'),{'FaxInteractionId':Number(_0x1e56d8[_0xe524('0x57')][_0xe524('0x5c')][_0x532e79]),'UserId':Number(_0x1e56d8[_0xe524('0x58')]['id'])});}return _0x1e56d8[_0xe524('0x57')]['ids'];});}})['then'](respondWithResult(_0x4d774e,null))[_0xe524('0x4f')](handleError(_0x4d774e,null));};exports[_0xe524('0x130')]=function(_0x23a6c6,_0x423623){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x23a6c6['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x423623,null))[_0xe524('0x26')](function(_0x488f5f){if(_0x488f5f){return _0x488f5f[_0xe524('0x130')](_0x23a6c6[_0xe524('0x3f')]['ids'])[_0xe524('0x26')](function(){if(_[_0xe524('0xad')](_0x23a6c6[_0xe524('0x3f')][_0xe524('0x5c')])){for(var _0x295945=0x0;_0x295945<_0x23a6c6[_0xe524('0x3f')][_0xe524('0x5c')][_0xe524('0x55')];_0x295945+=0x1){socket['emit'](_0xe524('0x131'),{'FaxInteractionId':Number(_0x23a6c6['query'][_0xe524('0x5c')][_0x295945]),'UserId':Number(_0x23a6c6[_0xe524('0x58')]['id'])});}}else{socket[_0xe524('0xa3')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x23a6c6[_0xe524('0x3f')][_0xe524('0x5c')]),'UserId':Number(_0x23a6c6[_0xe524('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0x423623,null))[_0xe524('0x4f')](handleError(_0x423623,null));};exports[_0xe524('0x132')]=function(_0x4b1a0a,_0x107721){return db['User'][_0xe524('0x31')]({'where':{'id':_0x4b1a0a[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x107721,null))['then'](function(_0xa0df50){if(_0xa0df50){return _0xa0df50[_0xe524('0x132')](_0x4b1a0a['body']['ids'],_['omit'](_0x4b1a0a[_0xe524('0x57')],['ids','id'])||{})[_0xe524('0x128')](function(){for(var _0x578fc7=0x0;_0x578fc7<_0x4b1a0a[_0xe524('0x57')][_0xe524('0x5c')][_0xe524('0x55')];_0x578fc7+=0x1){socket[_0xe524('0xa3')](_0xe524('0x133'),{'SmsInteractionId':Number(_0x4b1a0a[_0xe524('0x57')][_0xe524('0x5c')][_0x578fc7]),'UserId':Number(_0x4b1a0a[_0xe524('0x58')]['id'])});}return _0x4b1a0a[_0xe524('0x57')]['ids'];});}})[_0xe524('0x26')](respondWithResult(_0x107721,null))[_0xe524('0x4f')](handleError(_0x107721,null));};exports[_0xe524('0x134')]=function(_0x342382,_0x3caf5d){return db['User'][_0xe524('0x31')]({'where':{'id':_0x342382['params']['id']}})['then'](handleEntityNotFound(_0x3caf5d,null))[_0xe524('0x26')](function(_0x175146){if(_0x175146){return _0x175146[_0xe524('0x134')](_0x342382[_0xe524('0x3f')][_0xe524('0x5c')])[_0xe524('0x26')](function(){if(_[_0xe524('0xad')](_0x342382[_0xe524('0x3f')][_0xe524('0x5c')])){for(var _0x2d2f9b=0x0;_0x2d2f9b<_0x342382['query'][_0xe524('0x5c')][_0xe524('0x55')];_0x2d2f9b+=0x1){socket[_0xe524('0xa3')](_0xe524('0x135'),{'SmsInteractionId':Number(_0x342382['query'][_0xe524('0x5c')][_0x2d2f9b]),'UserId':Number(_0x342382[_0xe524('0x58')]['id'])});}}else{socket[_0xe524('0xa3')](_0xe524('0x135'),{'SmsInteractionId':Number(_0x342382[_0xe524('0x3f')][_0xe524('0x5c')]),'UserId':Number(_0x342382[_0xe524('0x58')]['id'])});}});}})[_0xe524('0x26')](respondWithStatusCode(_0x3caf5d,null))[_0xe524('0x4f')](handleError(_0x3caf5d,null));};exports[_0xe524('0x136')]=function(_0x384014,_0x508661){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x384014[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x508661,null))[_0xe524('0x26')](function(_0x1b666e){if(_0x1b666e){return _0x1b666e[_0xe524('0x136')](_0x384014[_0xe524('0x57')][_0xe524('0x5c')],_['omit'](_0x384014[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{})['spread'](function(){for(var _0x2e6d14=0x0;_0x2e6d14<_0x384014[_0xe524('0x57')][_0xe524('0x5c')][_0xe524('0x55')];_0x2e6d14+=0x1){socket['emit'](_0xe524('0x137'),{'OpenchannelInteractionId':Number(_0x384014[_0xe524('0x57')]['ids'][_0x2e6d14]),'UserId':Number(_0x384014[_0xe524('0x58')]['id'])});}return _0x384014[_0xe524('0x57')][_0xe524('0x5c')];});}})[_0xe524('0x26')](respondWithResult(_0x508661,null))[_0xe524('0x4f')](handleError(_0x508661,null));};exports[_0xe524('0x138')]=function(_0x52894e,_0x3607b0){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x52894e[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x3607b0,null))[_0xe524('0x26')](function(_0x1a97fa){if(_0x1a97fa){return _0x1a97fa[_0xe524('0x138')](_0x52894e['query'][_0xe524('0x5c')])[_0xe524('0x26')](function(){if(_[_0xe524('0xad')](_0x52894e['query'][_0xe524('0x5c')])){for(var _0x71e983=0x0;_0x71e983<_0x52894e[_0xe524('0x3f')][_0xe524('0x5c')][_0xe524('0x55')];_0x71e983+=0x1){socket[_0xe524('0xa3')](_0xe524('0x139'),{'OpenchannelInteractionId':Number(_0x52894e[_0xe524('0x3f')][_0xe524('0x5c')][_0x71e983]),'UserId':Number(_0x52894e[_0xe524('0x58')]['id'])});}}else{socket[_0xe524('0xa3')](_0xe524('0x139'),{'OpenchannelInteractionId':Number(_0x52894e[_0xe524('0x3f')]['ids']),'UserId':Number(_0x52894e['params']['id'])});}});}})['then'](respondWithStatusCode(_0x3607b0,null))['catch'](handleError(_0x3607b0,null));};exports[_0xe524('0x13a')]=function(_0x40f88c,_0x2dc323){return db['User'][_0xe524('0x31')]({'where':{'id':_0x40f88c[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x2dc323,null))[_0xe524('0x26')](function(_0x3f6f7c){if(_0x3f6f7c){return _0x3f6f7c['addWhatsappInteractions'](_0x40f88c[_0xe524('0x57')][_0xe524('0x5c')],_[_0xe524('0x5b')](_0x40f88c[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{})[_0xe524('0x128')](function(){for(var _0x5a2643=0x0;_0x5a2643<_0x40f88c[_0xe524('0x57')][_0xe524('0x5c')]['length'];_0x5a2643+=0x1){socket[_0xe524('0xa3')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x40f88c[_0xe524('0x57')][_0xe524('0x5c')][_0x5a2643]),'UserId':Number(_0x40f88c[_0xe524('0x58')]['id'])});}return _0x40f88c['body'][_0xe524('0x5c')];});}})[_0xe524('0x26')](respondWithResult(_0x2dc323,null))[_0xe524('0x4f')](handleError(_0x2dc323,null));};exports[_0xe524('0x13b')]=function(_0xe6d558,_0x3434b1){return db[_0xe524('0x35')]['find']({'where':{'id':_0xe6d558[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x3434b1,null))[_0xe524('0x26')](function(_0x3735bf){if(_0x3735bf){return _0x3735bf['removeWhatsappInteractions'](_0xe6d558['query'][_0xe524('0x5c')]);}})[_0xe524('0x26')](respondWithStatusCode(_0x3434b1,null))[_0xe524('0x4f')](handleError(_0x3434b1,null));};exports[_0xe524('0x13c')]=function(_0x460f64,_0x1dd348){var _0x3d7017={};var _0x136242={};var _0x411a32;var _0x404ace;return db[_0xe524('0x35')]['findOne']({'where':{'id':_0x460f64['params']['id']}})['then'](handleEntityNotFound(_0x1dd348,null))[_0xe524('0x26')](function(_0x57f264){if(_0x57f264){_0x411a32=_0x57f264;_0x136242[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0x13d')][_0xe524('0x36')]);_0x136242[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x460f64[_0xe524('0x3f')]);_0x136242[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x136242['model'],_0x136242[_0xe524('0x3f')]);_0x3d7017[_0xe524('0x42')]=_[_0xe524('0x53')](_0x136242[_0xe524('0x50')],qs[_0xe524('0x54')](_0x460f64['query'][_0xe524('0x54')]));_0x3d7017[_0xe524('0x42')]=_0x3d7017[_0xe524('0x42')]['length']?_0x3d7017[_0xe524('0x42')]:_0x136242[_0xe524('0x50')];_0x3d7017[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x460f64[_0xe524('0x3f')][_0xe524('0xc8')]);_0x3d7017['where']=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x460f64['query'],_0x136242[_0xe524('0xc6')]));if(_0x460f64['query'][_0xe524('0x3b')]){_0x3d7017['where']=_[_0xe524('0x56')](_0x3d7017[_0xe524('0xc9')],{'$or':_['map'](_0x3d7017[_0xe524('0x42')],function(_0x132004){var _0x2e4ac6={};_0x2e4ac6[_0x132004]={'$like':'%'+_0x460f64[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x2e4ac6;})});}_0x3d7017=_['merge']({},_0x3d7017,_0x460f64['options']);return _0x411a32['getVoicePrefixes'](_0x3d7017);}})['then'](function(_0x1cfe29){if(_0x1cfe29){_0x404ace=_0x1cfe29[_0xe524('0x55')];if(!_0x460f64['query'][_0xe524('0xcd')]('nolimit')){_0x3d7017[_0xe524('0x20')]=qs['limit'](_0x460f64[_0xe524('0x3f')][_0xe524('0x20')]);_0x3d7017[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x460f64[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x411a32[_0xe524('0x13c')](_0x3d7017);}})[_0xe524('0x26')](function(_0x2492c4){if(_0x2492c4){return _0x2492c4?{'count':_0x404ace,'rows':_0x2492c4}:null;}})[_0xe524('0x26')](respondWithResult(_0x1dd348,null))[_0xe524('0x4f')](handleError(_0x1dd348,null));};exports['getFaxAccounts']=function(_0x468713,_0x397138){var _0x129f3d={};var _0x436d40={};var _0x52e343;var _0x545be2;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x468713['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x397138,null))[_0xe524('0x26')](function(_0x5793ce){if(_0x5793ce){_0x52e343=_0x5793ce;_0x436d40[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0x13e')][_0xe524('0x36')]);_0x436d40[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x468713[_0xe524('0x3f')]);_0x436d40[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x436d40[_0xe524('0x50')],_0x436d40[_0xe524('0x3f')]);_0x129f3d[_0xe524('0x42')]=_[_0xe524('0x53')](_0x436d40[_0xe524('0x50')],qs[_0xe524('0x54')](_0x468713[_0xe524('0x3f')][_0xe524('0x54')]));_0x129f3d['attributes']=_0x129f3d[_0xe524('0x42')][_0xe524('0x55')]?_0x129f3d[_0xe524('0x42')]:_0x436d40[_0xe524('0x50')];_0x129f3d['order']=qs[_0xe524('0xc8')](_0x468713[_0xe524('0x3f')][_0xe524('0xc8')]);_0x129f3d[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_['pick'](_0x468713[_0xe524('0x3f')],_0x436d40[_0xe524('0xc6')]));if(_0x468713[_0xe524('0x3f')][_0xe524('0x3b')]){_0x129f3d[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x129f3d[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x129f3d[_0xe524('0x42')],function(_0x172444){var _0x4d9722={};_0x4d9722[_0x172444]={'$like':'%'+_0x468713['query'][_0xe524('0x3b')]+'%'};return _0x4d9722;})});}_0x129f3d=_[_0xe524('0x56')]({},_0x129f3d,_0x468713[_0xe524('0xd1')]);return _0x52e343[_0xe524('0x13f')](_0x129f3d);}})[_0xe524('0x26')](function(_0x13d091){if(_0x13d091){_0x545be2=_0x13d091[_0xe524('0x55')];if(!_0x468713[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x129f3d[_0xe524('0x20')]=qs['limit'](_0x468713[_0xe524('0x3f')][_0xe524('0x20')]);_0x129f3d[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x468713[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x52e343['getFaxAccounts'](_0x129f3d);}})[_0xe524('0x26')](function(_0x403f87){if(_0x403f87){return _0x403f87?{'count':_0x545be2,'rows':_0x403f87}:null;}})[_0xe524('0x26')](respondWithResult(_0x397138,null))[_0xe524('0x4f')](handleError(_0x397138,null));};exports[_0xe524('0x140')]=function(_0x169d4d,_0x2ef16a){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x169d4d['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x2ef16a,null))[_0xe524('0x26')](function(_0x182fd2){if(_0x182fd2){return _0x182fd2['addFaxAccounts'](_0x169d4d[_0xe524('0x57')][_0xe524('0x5c')],_[_0xe524('0x5b')](_0x169d4d[_0xe524('0x57')],['ids','id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x2ef16a,null))[_0xe524('0x4f')](handleError(_0x2ef16a,null));};exports[_0xe524('0x141')]=function(_0xaff45d,_0x38442e){return db['User'][_0xe524('0x31')]({'where':{'id':_0xaff45d[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x38442e,null))[_0xe524('0x26')](function(_0x24ebcf){if(_0x24ebcf){return _0x24ebcf[_0xe524('0x141')](_0xaff45d[_0xe524('0x3f')]['ids']);}})[_0xe524('0x26')](respondWithStatusCode(_0x38442e,null))[_0xe524('0x4f')](handleError(_0x38442e,null));};exports['getMailAccounts']=function(_0x250edb,_0x3d864f){var _0x15c9b0={};var _0x42f7f5={};var _0x408c8e;var _0x3589cc;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x250edb[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x3d864f,null))[_0xe524('0x26')](function(_0x39962e){if(_0x39962e){_0x408c8e=_0x39962e;_0x42f7f5[_0xe524('0x50')]=_['keys'](db['MailAccount']['rawAttributes']);_0x42f7f5[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x250edb['query']);_0x42f7f5['filters']=_[_0xe524('0x53')](_0x42f7f5[_0xe524('0x50')],_0x42f7f5[_0xe524('0x3f')]);_0x15c9b0[_0xe524('0x42')]=_[_0xe524('0x53')](_0x42f7f5['model'],qs[_0xe524('0x54')](_0x250edb[_0xe524('0x3f')]['fields']));_0x15c9b0[_0xe524('0x42')]=_0x15c9b0[_0xe524('0x42')][_0xe524('0x55')]?_0x15c9b0[_0xe524('0x42')]:_0x42f7f5[_0xe524('0x50')];_0x15c9b0[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x250edb[_0xe524('0x3f')][_0xe524('0xc8')]);_0x15c9b0['where']=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x250edb[_0xe524('0x3f')],_0x42f7f5[_0xe524('0xc6')]));if(_0x250edb[_0xe524('0x3f')][_0xe524('0x3b')]){_0x15c9b0[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x15c9b0[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x15c9b0[_0xe524('0x42')],function(_0x2fa4c5){var _0x5249b9={};_0x5249b9[_0x2fa4c5]={'$like':'%'+_0x250edb['query'][_0xe524('0x3b')]+'%'};return _0x5249b9;})});}_0x15c9b0=_['merge']({},_0x15c9b0,_0x250edb[_0xe524('0xd1')]);return _0x408c8e[_0xe524('0x142')](_0x15c9b0);}})[_0xe524('0x26')](function(_0x325f6f){if(_0x325f6f){_0x3589cc=_0x325f6f[_0xe524('0x55')];if(!_0x250edb[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x15c9b0[_0xe524('0x20')]=qs['limit'](_0x250edb[_0xe524('0x3f')][_0xe524('0x20')]);_0x15c9b0[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x250edb[_0xe524('0x3f')]['offset']);}return _0x408c8e['getMailAccounts'](_0x15c9b0);}})[_0xe524('0x26')](function(_0xb3e04d){if(_0xb3e04d){return _0xb3e04d?{'count':_0x3589cc,'rows':_0xb3e04d}:null;}})[_0xe524('0x26')](respondWithResult(_0x3d864f,null))[_0xe524('0x4f')](handleError(_0x3d864f,null));};exports['addMailAccounts']=function(_0x8feb1,_0x341ea3){return db['User'][_0xe524('0x31')]({'where':{'id':_0x8feb1[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x341ea3,null))[_0xe524('0x26')](function(_0x599910){if(_0x599910){return _0x599910['addMailAccounts'](_0x8feb1['body']['ids'],_[_0xe524('0x5b')](_0x8feb1['body'],[_0xe524('0x5c'),'id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x341ea3,null))[_0xe524('0x4f')](handleError(_0x341ea3,null));};exports[_0xe524('0x143')]=function(_0x50761d,_0x3dc953){return db[_0xe524('0x35')]['find']({'where':{'id':_0x50761d[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x3dc953,null))['then'](function(_0x474094){if(_0x474094){return _0x474094[_0xe524('0x143')](_0x50761d[_0xe524('0x3f')][_0xe524('0x5c')]);}})[_0xe524('0x26')](respondWithStatusCode(_0x3dc953,null))[_0xe524('0x4f')](handleError(_0x3dc953,null));};exports[_0xe524('0x144')]=function(_0x330689,_0x29eb3d){var _0x3fbc40={};var _0x36341b={};var _0x337405;var _0x73b305;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x330689[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x29eb3d,null))[_0xe524('0x26')](function(_0x74da3f){if(_0x74da3f){_0x337405=_0x74da3f;_0x36341b['model']=_[_0xe524('0x52')](db[_0xe524('0x145')][_0xe524('0x36')]);_0x36341b[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x330689[_0xe524('0x3f')]);_0x36341b['filters']=_['intersection'](_0x36341b['model'],_0x36341b[_0xe524('0x3f')]);_0x3fbc40['attributes']=_[_0xe524('0x53')](_0x36341b[_0xe524('0x50')],qs[_0xe524('0x54')](_0x330689['query'][_0xe524('0x54')]));_0x3fbc40[_0xe524('0x42')]=_0x3fbc40[_0xe524('0x42')][_0xe524('0x55')]?_0x3fbc40[_0xe524('0x42')]:_0x36341b[_0xe524('0x50')];_0x3fbc40['order']=qs[_0xe524('0xc8')](_0x330689[_0xe524('0x3f')][_0xe524('0xc8')]);_0x3fbc40[_0xe524('0xc9')]=qs['filters'](_[_0xe524('0xd0')](_0x330689['query'],_0x36341b[_0xe524('0xc6')]));if(_0x330689[_0xe524('0x3f')][_0xe524('0x3b')]){_0x3fbc40[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x3fbc40['where'],{'$or':_[_0xe524('0x37')](_0x3fbc40[_0xe524('0x42')],function(_0x27169a){var _0x47d98f={};_0x47d98f[_0x27169a]={'$like':'%'+_0x330689['query'][_0xe524('0x3b')]+'%'};return _0x47d98f;})});}_0x3fbc40=_[_0xe524('0x56')]({},_0x3fbc40,_0x330689['options']);return _0x337405[_0xe524('0x144')](_0x3fbc40);}})['then'](function(_0x701461){if(_0x701461){_0x73b305=_0x701461[_0xe524('0x55')];if(!_0x330689['query'][_0xe524('0xcd')](_0xe524('0xce'))){_0x3fbc40['limit']=qs['limit'](_0x330689[_0xe524('0x3f')][_0xe524('0x20')]);_0x3fbc40['offset']=qs[_0xe524('0x1f')](_0x330689[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x337405[_0xe524('0x144')](_0x3fbc40);}})['then'](function(_0x36fa31){if(_0x36fa31){return _0x36fa31?{'count':_0x73b305,'rows':_0x36fa31}:null;}})[_0xe524('0x26')](respondWithResult(_0x29eb3d,null))[_0xe524('0x4f')](handleError(_0x29eb3d,null));};exports[_0xe524('0x146')]=function(_0x146e98,_0x4b982f){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x146e98[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x4b982f,null))[_0xe524('0x26')](function(_0xa82e8a){if(_0xa82e8a){return _0xa82e8a['addOpenchannelAccounts'](_0x146e98[_0xe524('0x57')][_0xe524('0x5c')],_[_0xe524('0x5b')](_0x146e98[_0xe524('0x57')],['ids','id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x4b982f,null))[_0xe524('0x4f')](handleError(_0x4b982f,null));};exports[_0xe524('0x147')]=function(_0xe27cf7,_0x15eb61){return db[_0xe524('0x35')]['find']({'where':{'id':_0xe27cf7[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x15eb61,null))[_0xe524('0x26')](function(_0x4daef1){if(_0x4daef1){return _0x4daef1[_0xe524('0x147')](_0xe27cf7['query'][_0xe524('0x5c')]);}})['then'](respondWithStatusCode(_0x15eb61,null))[_0xe524('0x4f')](handleError(_0x15eb61,null));};exports['getSmsAccounts']=function(_0x1df2d6,_0x515318){var _0x1bc7a2={};var _0x5c2b55={};var _0x4604f1;var _0x5e667e;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x1df2d6[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x515318,null))[_0xe524('0x26')](function(_0x3615d0){if(_0x3615d0){_0x4604f1=_0x3615d0;_0x5c2b55['model']=_['keys'](db['SmsAccount']['rawAttributes']);_0x5c2b55[_0xe524('0x3f')]=_['keys'](_0x1df2d6[_0xe524('0x3f')]);_0x5c2b55[_0xe524('0xc6')]=_['intersection'](_0x5c2b55[_0xe524('0x50')],_0x5c2b55['query']);_0x1bc7a2[_0xe524('0x42')]=_[_0xe524('0x53')](_0x5c2b55[_0xe524('0x50')],qs['fields'](_0x1df2d6[_0xe524('0x3f')]['fields']));_0x1bc7a2[_0xe524('0x42')]=_0x1bc7a2['attributes'][_0xe524('0x55')]?_0x1bc7a2[_0xe524('0x42')]:_0x5c2b55[_0xe524('0x50')];_0x1bc7a2[_0xe524('0xc7')]=qs['sort'](_0x1df2d6[_0xe524('0x3f')]['sort']);_0x1bc7a2[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x1df2d6[_0xe524('0x3f')],_0x5c2b55[_0xe524('0xc6')]));if(_0x1df2d6['query']['filter']){_0x1bc7a2[_0xe524('0xc9')]=_['merge'](_0x1bc7a2['where'],{'$or':_['map'](_0x1bc7a2[_0xe524('0x42')],function(_0xea01ac){var _0x14065b={};_0x14065b[_0xea01ac]={'$like':'%'+_0x1df2d6[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x14065b;})});}_0x1bc7a2=_['merge']({},_0x1bc7a2,_0x1df2d6[_0xe524('0xd1')]);return _0x4604f1[_0xe524('0x148')](_0x1bc7a2);}})[_0xe524('0x26')](function(_0x4da492){if(_0x4da492){_0x5e667e=_0x4da492[_0xe524('0x55')];if(!_0x1df2d6[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x1bc7a2[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x1df2d6[_0xe524('0x3f')]['limit']);_0x1bc7a2['offset']=qs['offset'](_0x1df2d6[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x4604f1[_0xe524('0x148')](_0x1bc7a2);}})['then'](function(_0x2374cd){if(_0x2374cd){return _0x2374cd?{'count':_0x5e667e,'rows':_0x2374cd}:null;}})[_0xe524('0x26')](respondWithResult(_0x515318,null))['catch'](handleError(_0x515318,null));};exports[_0xe524('0x149')]=function(_0x50ca38,_0x4e79ee){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x50ca38[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x4e79ee,null))[_0xe524('0x26')](function(_0x2f926c){if(_0x2f926c){return _0x2f926c[_0xe524('0x149')](_0x50ca38[_0xe524('0x57')][_0xe524('0x5c')],_['omit'](_0x50ca38[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x4e79ee,null))[_0xe524('0x4f')](handleError(_0x4e79ee,null));};exports[_0xe524('0x14a')]=function(_0x4631b2,_0x5ac70e){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x4631b2[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x5ac70e,null))[_0xe524('0x26')](function(_0x427658){if(_0x427658){return _0x427658[_0xe524('0x14a')](_0x4631b2['query']['ids']);}})[_0xe524('0x26')](respondWithStatusCode(_0x5ac70e,null))[_0xe524('0x4f')](handleError(_0x5ac70e,null));};exports[_0xe524('0x14b')]=function(_0x43ca7b,_0x232740){var _0x267997={};var _0x546d17={};var _0x5b0b53;var _0x3473da;return db[_0xe524('0x35')]['findOne']({'where':{'id':_0x43ca7b['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x232740,null))[_0xe524('0x26')](function(_0x5d2fab){if(_0x5d2fab){_0x5b0b53=_0x5d2fab;_0x546d17[_0xe524('0x50')]=_['keys'](db[_0xe524('0x14c')][_0xe524('0x36')]);_0x546d17[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x43ca7b[_0xe524('0x3f')]);_0x546d17[_0xe524('0xc6')]=_['intersection'](_0x546d17[_0xe524('0x50')],_0x546d17[_0xe524('0x3f')]);_0x267997['attributes']=_[_0xe524('0x53')](_0x546d17['model'],qs[_0xe524('0x54')](_0x43ca7b[_0xe524('0x3f')][_0xe524('0x54')]));_0x267997['attributes']=_0x267997[_0xe524('0x42')][_0xe524('0x55')]?_0x267997[_0xe524('0x42')]:_0x546d17[_0xe524('0x50')];_0x267997['order']=qs[_0xe524('0xc8')](_0x43ca7b['query']['sort']);_0x267997[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_['pick'](_0x43ca7b[_0xe524('0x3f')],_0x546d17[_0xe524('0xc6')]));if(_0x43ca7b[_0xe524('0x3f')][_0xe524('0x3b')]){_0x267997[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x267997[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x267997[_0xe524('0x42')],function(_0x624c97){var _0xe06096={};_0xe06096[_0x624c97]={'$like':'%'+_0x43ca7b[_0xe524('0x3f')]['filter']+'%'};return _0xe06096;})});}_0x267997=_['merge']({},_0x267997,_0x43ca7b['options']);return _0x5b0b53[_0xe524('0x14b')](_0x267997);}})[_0xe524('0x26')](function(_0x341824){if(_0x341824){_0x3473da=_0x341824[_0xe524('0x55')];if(!_0x43ca7b[_0xe524('0x3f')][_0xe524('0xcd')]('nolimit')){_0x267997['limit']=qs[_0xe524('0x20')](_0x43ca7b[_0xe524('0x3f')][_0xe524('0x20')]);_0x267997[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x43ca7b['query']['offset']);}return _0x5b0b53['getChatWebsites'](_0x267997);}})[_0xe524('0x26')](function(_0x4687f1){if(_0x4687f1){return _0x4687f1?{'count':_0x3473da,'rows':_0x4687f1}:null;}})[_0xe524('0x26')](respondWithResult(_0x232740,null))[_0xe524('0x4f')](handleError(_0x232740,null));};exports['addChatWebsites']=function(_0x5e4e9f,_0x382bcb){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x5e4e9f[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x382bcb,null))[_0xe524('0x26')](function(_0xebe442){if(_0xebe442){return _0xebe442['addChatWebsites'](_0x5e4e9f['body']['ids'],_[_0xe524('0x5b')](_0x5e4e9f[_0xe524('0x57')],['ids','id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x382bcb,null))[_0xe524('0x4f')](handleError(_0x382bcb,null));};exports[_0xe524('0x14d')]=function(_0xea52dd,_0x4f8606){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0xea52dd[_0xe524('0x58')]['id']}})['then'](handleEntityNotFound(_0x4f8606,null))[_0xe524('0x26')](function(_0x51f4cf){if(_0x51f4cf){return _0x51f4cf[_0xe524('0x14d')](_0xea52dd[_0xe524('0x3f')][_0xe524('0x5c')]);}})[_0xe524('0x26')](respondWithStatusCode(_0x4f8606,null))[_0xe524('0x4f')](handleError(_0x4f8606,null));};exports[_0xe524('0x14e')]=function(_0x29abb5,_0x3a7332){var _0x41cd14={};var _0x412453={};var _0x3c53d1;var _0x2b93df;return db['User']['findOne']({'where':{'id':_0x29abb5[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x3a7332,null))['then'](function(_0x329027){if(_0x329027){_0x3c53d1=_0x329027;_0x412453[_0xe524('0x50')]=_[_0xe524('0x52')](db[_0xe524('0x14f')][_0xe524('0x36')]);_0x412453['query']=_[_0xe524('0x52')](_0x29abb5[_0xe524('0x3f')]);_0x412453[_0xe524('0xc6')]=_[_0xe524('0x53')](_0x412453[_0xe524('0x50')],_0x412453[_0xe524('0x3f')]);_0x41cd14[_0xe524('0x42')]=_[_0xe524('0x53')](_0x412453['model'],qs[_0xe524('0x54')](_0x29abb5[_0xe524('0x3f')]['fields']));_0x41cd14[_0xe524('0x42')]=_0x41cd14['attributes'][_0xe524('0x55')]?_0x41cd14[_0xe524('0x42')]:_0x412453['model'];_0x41cd14[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x29abb5[_0xe524('0x3f')][_0xe524('0xc8')]);_0x41cd14[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_['pick'](_0x29abb5[_0xe524('0x3f')],_0x412453[_0xe524('0xc6')]));if(_0x29abb5[_0xe524('0x3f')][_0xe524('0x3b')]){_0x41cd14['where']=_['merge'](_0x41cd14[_0xe524('0xc9')],{'$or':_[_0xe524('0x37')](_0x41cd14[_0xe524('0x42')],function(_0x40cfa1){var _0x22cccc={};_0x22cccc[_0x40cfa1]={'$like':'%'+_0x29abb5[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x22cccc;})});}_0x41cd14=_['merge']({},_0x41cd14,_0x29abb5['options']);return _0x3c53d1[_0xe524('0x14e')](_0x41cd14);}})[_0xe524('0x26')](function(_0x30d9d2){if(_0x30d9d2){_0x2b93df=_0x30d9d2['length'];if(!_0x29abb5[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x41cd14['limit']=qs[_0xe524('0x20')](_0x29abb5['query'][_0xe524('0x20')]);_0x41cd14['offset']=qs[_0xe524('0x1f')](_0x29abb5[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x3c53d1['getWhatsappAccounts'](_0x41cd14);}})[_0xe524('0x26')](function(_0x40185e){if(_0x40185e){return _0x40185e?{'count':_0x2b93df,'rows':_0x40185e}:null;}})['then'](respondWithResult(_0x3a7332,null))[_0xe524('0x4f')](handleError(_0x3a7332,null));};exports[_0xe524('0x150')]=function(_0x4ba54f,_0x361580){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x4ba54f[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x361580,null))['then'](function(_0x32a5bb){if(_0x32a5bb){return _0x32a5bb[_0xe524('0x150')](_0x4ba54f['body']['ids'],_['omit'](_0x4ba54f[_0xe524('0x57')],[_0xe524('0x5c'),'id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x361580,null))[_0xe524('0x4f')](handleError(_0x361580,null));};exports['removeWhatsappAccounts']=function(_0x1ce606,_0x2c19cf){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x1ce606[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x2c19cf,null))[_0xe524('0x26')](function(_0x342027){if(_0x342027){return _0x342027['removeWhatsappAccounts'](_0x1ce606[_0xe524('0x3f')][_0xe524('0x5c')]);}})[_0xe524('0x26')](respondWithStatusCode(_0x2c19cf,null))[_0xe524('0x4f')](handleError(_0x2c19cf,null));};exports[_0xe524('0x151')]=function(_0x1e44a4,_0x255186){var _0x533c8e={};var _0x8fae6={};var _0x1cd14b;var _0x376d08;return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x1e44a4['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x255186,null))[_0xe524('0x26')](function(_0x2b870d){if(_0x2b870d){_0x1cd14b=_0x2b870d;_0x8fae6[_0xe524('0x50')]=_['keys'](db['SquareProject'][_0xe524('0x36')]);_0x8fae6[_0xe524('0x3f')]=_[_0xe524('0x52')](_0x1e44a4[_0xe524('0x3f')]);_0x8fae6['filters']=_['intersection'](_0x8fae6[_0xe524('0x50')],_0x8fae6[_0xe524('0x3f')]);_0x533c8e[_0xe524('0x42')]=_[_0xe524('0x53')](_0x8fae6[_0xe524('0x50')],qs['fields'](_0x1e44a4[_0xe524('0x3f')][_0xe524('0x54')]));_0x533c8e[_0xe524('0x42')]=_0x533c8e['attributes'][_0xe524('0x55')]?_0x533c8e[_0xe524('0x42')]:_0x8fae6['model'];_0x533c8e[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x1e44a4[_0xe524('0x3f')][_0xe524('0xc8')]);_0x533c8e[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x1e44a4[_0xe524('0x3f')],_0x8fae6[_0xe524('0xc6')]));if(_0x1e44a4['query'][_0xe524('0x3b')]){_0x533c8e[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x533c8e['where'],{'$or':_['map'](_0x533c8e[_0xe524('0x42')],function(_0x42cd70){var _0x3ebd1d={};_0x3ebd1d[_0x42cd70]={'$like':'%'+_0x1e44a4[_0xe524('0x3f')]['filter']+'%'};return _0x3ebd1d;})});}_0x533c8e=_[_0xe524('0x56')]({},_0x533c8e,_0x1e44a4['options']);return _0x1cd14b[_0xe524('0x151')](_0x533c8e);}})[_0xe524('0x26')](function(_0x4bdd45){if(_0x4bdd45){_0x376d08=_0x4bdd45[_0xe524('0x55')];if(!_0x1e44a4[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x533c8e[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x1e44a4[_0xe524('0x3f')][_0xe524('0x20')]);_0x533c8e['offset']=qs[_0xe524('0x1f')](_0x1e44a4[_0xe524('0x3f')][_0xe524('0x1f')]);}return _0x1cd14b[_0xe524('0x151')](_0x533c8e);}})['then'](function(_0x974c26){if(_0x974c26){return _0x974c26?{'count':_0x376d08,'rows':_0x974c26}:null;}})['then'](respondWithResult(_0x255186,null))[_0xe524('0x4f')](handleError(_0x255186,null));};exports[_0xe524('0x152')]=function(_0x5a843f,_0x1ed902){return db[_0xe524('0x35')]['find']({'where':{'id':_0x5a843f[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x1ed902,null))[_0xe524('0x26')](function(_0x55c2cf){if(_0x55c2cf){return _0x55c2cf[_0xe524('0x152')](_0x5a843f['body'][_0xe524('0x5c')],_['omit'](_0x5a843f[_0xe524('0x57')],['ids','id'])||{});}})[_0xe524('0x26')](respondWithResult(_0x1ed902,null))[_0xe524('0x4f')](handleError(_0x1ed902,null));};exports[_0xe524('0x153')]=function(_0x80f01f,_0x35ded4){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x80f01f[_0xe524('0x58')]['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x35ded4,null))[_0xe524('0x26')](function(_0x30026c){if(_0x30026c){return _0x30026c[_0xe524('0x153')](_0x80f01f[_0xe524('0x3f')]['ids']);}})[_0xe524('0x26')](respondWithStatusCode(_0x35ded4,null))[_0xe524('0x4f')](handleError(_0x35ded4,null));};exports[_0xe524('0x154')]=function(_0x593f5d,_0x39c6b8){var _0x37319a={},_0x25a9fe={},_0x4199e3={'count':0x0,'rows':[]};var _0x2a5a8b=db[_0xe524('0x155')][_0xe524('0x36')];_0x25a9fe['model']=_[_0xe524('0x52')](_0x2a5a8b);_0x25a9fe['query']=_[_0xe524('0x52')](_0x593f5d['query']);_0x25a9fe['filters']=_['intersection'](_0x25a9fe['model'],_0x25a9fe[_0xe524('0x3f')]);_0x25a9fe['filters']=_[_0xe524('0xfc')](_0x25a9fe[_0xe524('0xc6')],[_0xe524('0x156'),_0xe524('0x157'),_0xe524('0x158'),_0xe524('0x159'),_0xe524('0x15a'),_0xe524('0x15b'),_0xe524('0x15c'),_0xe524('0x15d'),_0xe524('0x15e'),_0xe524('0x15f'),_0xe524('0x160'),_0xe524('0x161'),_0xe524('0x162'),_0xe524('0x163'),_0xe524('0x164'),_0xe524('0x165'),'$notILike',_0xe524('0x163'),_0xe524('0x166'),_0xe524('0x167'),_0xe524('0x168'),'$any']);_0x37319a['attributes']=_[_0xe524('0x53')](_0x25a9fe[_0xe524('0x50')],qs[_0xe524('0x54')](_0x593f5d[_0xe524('0x3f')][_0xe524('0x54')]));_0x37319a['attributes']=_0x37319a[_0xe524('0x42')][_0xe524('0x55')]?_0x37319a[_0xe524('0x42')]:_0x25a9fe[_0xe524('0x50')];if(!_0x593f5d[_0xe524('0x3f')][_0xe524('0xcd')](_0xe524('0xce'))){_0x37319a[_0xe524('0x20')]=qs[_0xe524('0x20')](_0x593f5d[_0xe524('0x3f')]['limit']);_0x37319a['offset']=qs[_0xe524('0x1f')](_0x593f5d[_0xe524('0x3f')]['offset']);}_0x37319a[_0xe524('0xc7')]=qs[_0xe524('0xc8')](_0x593f5d[_0xe524('0x3f')][_0xe524('0xc8')]);_0x37319a[_0xe524('0xc9')]=qs[_0xe524('0xc6')](_[_0xe524('0xd0')](_0x593f5d[_0xe524('0x3f')],_0x25a9fe[_0xe524('0xc6')]));if(_0x593f5d[_0xe524('0x3f')][_0xe524('0x3b')]){_0x37319a[_0xe524('0xc9')]=_[_0xe524('0x56')](_0x37319a['where'],{'$or':_[_0xe524('0x37')](_0x37319a['attributes'],function(_0x477307){var _0x270aa0={};_0x270aa0[_0x477307]={'$like':'%'+_0x593f5d[_0xe524('0x3f')][_0xe524('0x3b')]+'%'};return _0x270aa0;})});}_0x37319a[_0xe524('0xc9')]={'$and':[_0x37319a['where'],{'$or':[{'UserId':_0x593f5d[_0xe524('0x58')]['id']},{'OwnerId':_0x593f5d['params']['id']}]}]};_0x37319a=_[_0xe524('0x56')]({},_0x37319a,_0x593f5d['options']);var _0x2e25be={'where':_0x37319a[_0xe524('0xc9')]};return db[_0xe524('0x155')][_0xe524('0x22')](_0x2e25be)[_0xe524('0x26')](function(_0x2458f9){_0x4199e3[_0xe524('0x22')]=_0x2458f9;if(_0x593f5d['query'][_0xe524('0x40')]){_0x37319a[_0xe524('0x41')]=[{'attributes':['id',_0xe524('0x169'),'lastName','phone'],'model':db[_0xe524('0xc5')],'as':_0xe524('0x16a')},{'attributes':['id','name',_0xe524('0x16b')],'model':db[_0xe524('0xa6')],'as':'Queue'}];}return db[_0xe524('0x155')]['findAll'](_0x37319a);})[_0xe524('0x26')](function(_0x3a581c){_0x4199e3[_0xe524('0x4a')]=_0x3a581c;return _0x4199e3;})[_0xe524('0x26')](respondWithFilteredResult(_0x39c6b8,_0x37319a))[_0xe524('0x4f')](handleError(_0x39c6b8,null));};exports['getApiKey']=function(_0x6015c2,_0x1b567e){if(!_[_0xe524('0x62')](_0x6015c2['user']['id'])&&(_0x6015c2[_0xe524('0x7c')][_0xe524('0x28')]==_0xe524('0x29')||_0x6015c2[_0xe524('0x7c')][_0xe524('0x28')]==_0xe524('0x7c'))){return db[_0xe524('0x35')][_0xe524('0x94')]({'where':{'id':_0x6015c2[_0xe524('0x58')]['id']},'raw':!![]})[_0xe524('0x26')](function(_0x3709d6){return authService[_0xe524('0x16c')](_0x3709d6);})[_0xe524('0x26')](function(_0x226d14){if(_0x226d14){return _0x1b567e[_0xe524('0x1c')](0xc8)[_0xe524('0x1e')]({'api_key':_0x226d14[_0xe524('0x16d')]});}else{return _0x1b567e['status'](0xcc)['json']({'message':_0xe524('0x16e')});}})[_0xe524('0x4f')](handleError(_0x1b567e,0x193));}else{return _0x1b567e['status'](0x191)[_0xe524('0x1e')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xe524('0x16f')]=function(_0x33f655,_0x55c042){if(!_[_0xe524('0x62')](_0x33f655['user']['id'])&&(_0x33f655[_0xe524('0x7c')]['role']==_0xe524('0x29')||_0x33f655[_0xe524('0x7c')][_0xe524('0x28')]==_0xe524('0x7c'))){return db[_0xe524('0x35')][_0xe524('0x31')]({'where':{'id':_0x33f655['params']['id']}})['then'](function(_0x10680a){return authService[_0xe524('0x170')](_0x10680a);})[_0xe524('0x26')](function(_0x445976){return db[_0xe524('0x35')]['update']({'apiKeyIat':_0x445976[_0xe524('0x171')],'apiKeyNonce':_0x445976[_0xe524('0x172')]},{'where':{'id':_0x33f655[_0xe524('0x58')]['id']}})[_0xe524('0x26')](function(){return _0x55c042['status'](0xc8)[_0xe524('0x1e')]({'api_key':_0x445976[_0xe524('0x16d')]});});})[_0xe524('0x4f')](handleError(_0x55c042,0x193));}else{return _0x55c042[_0xe524('0x1c')](0x191)[_0xe524('0x1e')]({'message':_0xe524('0x173')});}};exports[_0xe524('0x174')]=function(_0xe0f546,_0x4f158b){if(!_[_0xe524('0x62')](_0xe0f546['user']['id'])&&(_0xe0f546[_0xe524('0x7c')][_0xe524('0x28')]==_0xe524('0x29')||_0xe0f546['user'][_0xe524('0x28')]==_0xe524('0x7c'))){return db['User'][_0xe524('0x31')]({'where':{'id':_0xe0f546['params']['id']}})[_0xe524('0x26')](handleEntityNotFound(_0x4f158b,null))['then'](function(_0x5c5814){if(_0x5c5814&&_0x5c5814['apiKeyNonce']&&_0x5c5814[_0xe524('0x175')])return _0x5c5814;else throw{'message':_0xe524('0x176')};})[_0xe524('0x26')](function(_0x125264){return db[_0xe524('0x35')][_0xe524('0x25')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0xe0f546[_0xe524('0x58')]['id']}});})[_0xe524('0x26')](respondWithStatusCode(_0x4f158b,0xc8))['catch'](handleError(_0x4f158b,0x193));}else{return _0x4f158b[_0xe524('0x1c')](0x191)[_0xe524('0x1e')]({'message':_0xe524('0x173')});}};exports[_0xe524('0x177')]=function(_0x18e809,_0x216ad9){var _0x331c45=_0x18e809[_0xe524('0x7c')][_0xe524('0xd3')]({'plain':!![]});if(!_0x331c45){return _0x216ad9[_0xe524('0x1c')](0x191)['send'](_0xe524('0x178'));}else{return _0x216ad9[_0xe524('0x1c')](0xc8)['json'](_0x331c45);}};exports[_0xe524('0x179')]=function(_0x53882b,_0x22897c){var _0x3e8775={'offset':0x0},_0x4eeada={'count':0x0,'rows':[]};Promise['resolve']()[_0xe524('0x26')](function(){if(!_0x53882b['query'][_0xe524('0x3b')]&&!_0x53882b[_0xe524('0x3f')][_0xe524('0x17a')]&&!_0x53882b[_0xe524('0x3f')][_0xe524('0x17b')])return[];return Promise['resolve']()['then'](function(){var _0x41525f=[];if(!_['isEmpty'](_0x53882b[_0xe524('0x3f')]['teams'])){_0x41525f[_0xe524('0x43')](db[_0xe524('0x10d')][_0xe524('0x44')]({'attributes':['id','name'],'where':{'id':_0x53882b[_0xe524('0x3f')]['teams']}}));}if(!_[_0xe524('0x88')](_0x53882b[_0xe524('0x3f')][_0xe524('0x17b')])){_0x41525f[_0xe524('0x43')](db[_0xe524('0xa6')][_0xe524('0x44')]({'attributes':['id',_0xe524('0x32')],'type':_0xe524('0x17c'),'where':{'id':_0x53882b[_0xe524('0x3f')]['queues']}}));}return Promise[_0xe524('0x4e')](_0x41525f);})[_0xe524('0x26')](function(_0x27a487){var _0x5a89fe=_['flatten'](_0x27a487)[_0xe524('0x37')](function(_0x914518){return _0x914518['getAgents']({'attributes':['id',_0xe524('0x32'),'internal',_0xe524('0xa7')],'raw':!![]});});return Promise[_0xe524('0x4e')](_0x5a89fe);})[_0xe524('0x26')](function(_0x4e6198){var _0x2fdc2a=_[_0xe524('0x119')](_0x4e6198);if(!_0x53882b[_0xe524('0x3f')][_0xe524('0x3b')])return _0x2fdc2a;if(_[_0xe524('0x88')](_0x2fdc2a)){return db[_0xe524('0x35')]['findAll']({'attributes':['id','name','internal','online'],'where':{'role':_0xe524('0x6b'),'$or':[db[_0xe524('0x65')][_0xe524('0xc9')](db['sequelize']['fn'](_0xe524('0x17d'),db[_0xe524('0x65')]['col']('name')),{'$like':'%'+_0x53882b[_0xe524('0x3f')][_0xe524('0x3b')][_0xe524('0xa0')]()+'%'}),{'internal':{'$like':'%'+_0x53882b[_0xe524('0x3f')][_0xe524('0x3b')]+'%'}}]},'raw':!![]});}else{return _(_0x2fdc2a)[_0xe524('0x119')]()[_0xe524('0x3b')](function(_0x5cbcda){return _0x5cbcda['name'][_0xe524('0xa0')]()[_0xe524('0x30')](_0x53882b[_0xe524('0x3f')][_0xe524('0x3b')][_0xe524('0xa0')]())||_0x5cbcda[_0xe524('0x5d')]['toString']()['includes'](_0x53882b[_0xe524('0x3f')][_0xe524('0x3b')]);})[_0xe524('0x2f')]();}})[_0xe524('0x26')](function(_0x4fc25d){var _0x3232a4='name';var _0x52fdb9='asc';if(_0x53882b[_0xe524('0x3f')]['sort']){var _0x52fdb9=_0x53882b[_0xe524('0x3f')][_0xe524('0xc8')][0x0]==='-'?_0xe524('0x17e'):_0xe524('0x17f');var _0x3232a4=_0x52fdb9===_0xe524('0x17f')?_0x53882b['query']['sort']:_0x53882b['query'][_0xe524('0xc8')][_0xe524('0x180')](0x1);}return _(_0x4fc25d)[_0xe524('0x181')]('id')['orderBy']([function(_0x5d4b87){return _0x3232a4===_0xe524('0x32')?_0x5d4b87[_0x3232a4][_0xe524('0xa0')]():_0x5d4b87[_0x3232a4];}],[_0x52fdb9])[_0xe524('0x37')](function(_0x579e54){return _['pick'](_0x579e54,['id','name',_0xe524('0x5d'),'online']);})[_0xe524('0x2f')]();})[_0xe524('0x26')](function(_0x34b6c4){return client[_0xe524('0x182')](_0xe524('0x2b'),_0x53882b)['then'](function(_0x1bab51){if(_0x1bab51[_0xe524('0x18')])throw new Error(_0xe524('0x183'));var _0x47529f=_0x1bab51[_0xe524('0x1a')];var _0x445aea=jayson[_0xe524('0x12')][_0xe524('0x13')]({'port':0x232c});return _0x445aea[_0xe524('0x182')](_0xe524('0x2b'),_0x53882b)[_0xe524('0x26')](function(_0x5c07fd){if(_0x5c07fd[_0xe524('0x18')])throw new Error(_0xe524('0x184'));var _0x236b38=_0x5c07fd[_0xe524('0x1a')];return _[_0xe524('0x56')]({},_0x236b38,_0x47529f);});})[_0xe524('0x26')](function(_0x4a191d){return _[_0xe524('0x37')](_0x34b6c4,function(_0x532cfe){var _0x331278=_['find'](_0x4a191d[_0xe524('0x4a')],['id',_0x532cfe['id']]);if(!_0x331278||!_0x532cfe[_0xe524('0xa7')]){_0x532cfe[_0xe524('0x1c')]=_0xe524('0x185');}else if(_0x331278['voicePause']){_0x532cfe['status']=_0xe524('0x100');}else{_0x532cfe[_0xe524('0x1c')]=_[_0xe524('0x30')]([_0xe524('0x186'),_0xe524('0x187'),_0xe524('0x188'),_0xe524('0x189'),null,undefined],_0x331278[_0xe524('0x18a')])?_0xe524('0xa7'):'busy';}return _0x532cfe;});});});})[_0xe524('0x26')](function(_0xa23af){if(!_0x53882b['query']['hasOwnProperty']('nolimit')){_0x3e8775[_0xe524('0x20')]=qs['limit'](_0x53882b[_0xe524('0x3f')][_0xe524('0x20')]||0xa);_0x3e8775[_0xe524('0x1f')]=qs[_0xe524('0x1f')](_0x53882b[_0xe524('0x3f')][_0xe524('0x1f')]);}_0x4eeada[_0xe524('0x22')]=_0xa23af[_0xe524('0x55')];_0x4eeada[_0xe524('0x4a')]=_0x3e8775[_0xe524('0x20')]?_0xa23af['slice'](_0x3e8775[_0xe524('0x1f')],_0x3e8775['offset']+_0x3e8775['limit']):_0xa23af;return _0x4eeada;})['then'](respondWithFilteredResult(_0x22897c,_0x3e8775))['catch'](handleError(_0x22897c,null));};function get_open_tabs(_0x429e2b,_0x34419e){var _0xd37da5=_0x429e2b[_0xe524('0x18b')](0x0)[_0xe524('0x18c')]()+_0x429e2b[_0xe524('0x18d')](0x1);var _0x34ed0f={'type':db['Sequelize'][_0xe524('0x66')]['SELECT'],'raw':!![]};return new BPromise(function(_0x144853,_0x778e1c){var _0x5d678a=squel[_0xe524('0x18e')]()[_0xe524('0x18f')](_0xe524('0x190')+_0xd37da5+_0xe524('0x191'),'id')['field'](_0xe524('0x192'))[_0xe524('0x67')]('user_has_'+_0x429e2b+'_interactions','ui')['where'](_0xe524('0x193'),_0x34419e['id']);return db[_0xe524('0x65')][_0xe524('0x3f')](_0x5d678a[_0xe524('0x194')](),_0x34ed0f)[_0xe524('0x26')](function(_0x351f81){_0x34419e[_0xd37da5+_0xe524('0x195')]=_0x351f81;_0x144853(_0x351f81);})[_0xe524('0x4f')](function(_0x5281e4){_0x778e1c(_0x5281e4);});});};
\ No newline at end of file
index 2785c02..4e28bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cce=['hook','User','save','update','remove','emit','hasOwnProperty'];(function(_0x4e89e4,_0x101dd7){var _0x3c685d=function(_0x220a29){while(--_0x220a29){_0x4e89e4['push'](_0x4e89e4['shift']());}};_0x3c685d(++_0x101dd7);}(_0x0cce,0x112));var _0xe0cc=function(_0x3af68e,_0x384315){_0x3af68e=_0x3af68e-0x0;var _0x3e6d5b=_0x0cce[_0x3af68e];return _0x3e6d5b;};'use strict';var EventEmitter=require('events');var User=require('../../mysqldb')['db'][_0xe0cc('0x0')];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe0cc('0x1'),'afterUpdate':_0xe0cc('0x2'),'afterDestroy':_0xe0cc('0x3')};function emitEvent(_0x13bef9){return function(_0x34947b,_0x42e9d5,_0x221aa1){UserEvents[_0xe0cc('0x4')](_0x13bef9+':'+_0x34947b['id'],_0x34947b);UserEvents['emit'](_0x13bef9,_0x34947b);_0x221aa1(null);};}for(var e in events){if(events[_0xe0cc('0x5')](e)){var event=events[e];User[_0xe0cc('0x6')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0x612e=['exports','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x7303c,_0x2d7803){var _0x367cc7=function(_0x333990){while(--_0x333990){_0x7303c['push'](_0x7303c['shift']());}};_0x367cc7(++_0x2d7803);}(_0x612e,0xb5));var _0xe612=function(_0x447ac2,_0x231f7c){_0x447ac2=_0x447ac2-0x0;var _0x106fd6=_0x612e[_0x447ac2];return _0x106fd6;};'use strict';var EventEmitter=require('events');var User=require(_0xe612('0x0'))['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0xe612('0x1')](0x0);var events={'afterCreate':_0xe612('0x2'),'afterUpdate':_0xe612('0x3'),'afterDestroy':_0xe612('0x4')};function emitEvent(_0x106c83){return function(_0x336e24,_0x5615a3,_0x4ba825){UserEvents[_0xe612('0x5')](_0x106c83+':'+_0x336e24['id'],_0x336e24);UserEvents[_0xe612('0x5')](_0x106c83,_0x336e24);_0x4ba825(null);};}for(var e in events){if(events[_0xe612('0x6')](e)){var event=events[e];User[_0xe612('0x7')](e,emitEvent(event));}}module[_0xe612('0x8')]=UserEvents;
\ No newline at end of file
index a8860c1..8d1fb28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd504=['StopMixMonitor','WAV','Set','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','catch','exports','models','define','User','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','concat','VoiceExtension','bulkCreate','destroy','encryptPassword','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','length','context','from-sip','system','format','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password','SIP/%s,%s','name','options','join'];(function(_0x1a4a06,_0x36a5c2){var _0x49ec08=function(_0x497f24){while(--_0x497f24){_0x1a4a06['push'](_0x1a4a06['shift']());}};_0x49ec08(++_0x36a5c2);}(_0xd504,0xca));var _0x4d50=function(_0x44afa4,_0x5be27b){_0x44afa4=_0x44afa4-0x0;var _0xcad289=_0xd504[_0x44afa4];return _0xcad289;};'use strict';var BPromise=require(_0x4d50('0x0'));var crypto=require(_0x4d50('0x1'));var util=require(_0x4d50('0x2'));var md5=require(_0x4d50('0x3'));var _=require(_0x4d50('0x4'));var attributes=require(_0x4d50('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x4b143d){return _0x4b143d&&_0x4b143d[_0x4d50('0x6')];};var getChanSpyApplications=function(_0x89cee0,_0x14904c,_0xff476c){var _0x24fc56={'context':_0x89cee0[_0x4d50('0x7')]||_0x4d50('0x8'),'type':_0x4d50('0x9'),'isApp':![],'UserId':_0x89cee0['id']};var _0x30b6e1=[];for(var _0x2cdc8f=0x0,_0x5c2914=0x1;_0x2cdc8f<_0xff476c[_0x4d50('0x6')];_0x2cdc8f++,_0x5c2914=0x1){var _0x7436a6={'exten':util[_0x4d50('0xa')]('%s%s',_0xff476c[_0x2cdc8f][_0x4d50('0xb')],_0x14904c),'ChanSpyId':_0xff476c[_0x2cdc8f]['id']};_0x30b6e1[_0x4d50('0xc')](_[_0x4d50('0xd')]({'app':'Set','appdata':util[_0x4d50('0xa')](_0x4d50('0xe'),_0x4d50('0xf')),'priority':_0x5c2914++},_0x24fc56,_0x7436a6));if(_0xff476c[_0x2cdc8f][_0x4d50('0x10')]){_0x30b6e1[_0x4d50('0xc')](_[_0x4d50('0xd')]({'app':_0x4d50('0x11'),'appdata':util[_0x4d50('0xa')](_0x4d50('0x12'),_0xff476c[_0x2cdc8f][_0x4d50('0x13')]),'priority':_0x5c2914++},_0x24fc56,_0x7436a6));}if(_0xff476c[_0x2cdc8f][_0x4d50('0x14')]){_0x30b6e1[_0x4d50('0xc')](_[_0x4d50('0xd')]({'app':'Authenticate','appdata':_0xff476c[_0x2cdc8f][_0x4d50('0x15')],'priority':_0x5c2914++},_0x24fc56,_0x7436a6));}_0x30b6e1['push'](_[_0x4d50('0xd')]({'app':'ChanSpy','appdata':util[_0x4d50('0xa')](_0x4d50('0x16'),_0x89cee0[_0x4d50('0x17')],_0xff476c[_0x2cdc8f][_0x4d50('0x18')]?_0xff476c[_0x2cdc8f]['options'][_0x4d50('0x19')](''):''),'priority':_0x5c2914++},_0x24fc56,_0x7436a6));if(_0xff476c[_0x2cdc8f]['record']){_0x30b6e1[_0x4d50('0xc')](_[_0x4d50('0xd')]({'app':_0x4d50('0x1a'),'priority':_0x5c2914++},_0x24fc56,_0x7436a6));}}return _0x30b6e1;};var getUserApplications=function(_0x5c48e0,_0x4c2e07){var _0x4e1d17=['wav',_0x4d50('0x1b'),'gsm'];var _0x1151fd={'context':_0x5c48e0[_0x4d50('0x7')]||_0x4d50('0x8'),'exten':_0x4c2e07,'type':'system','isApp':![],'UserId':_0x5c48e0['id']};var _0x13c8c2=[{'app':_0x4d50('0x1c'),'appdata':_0x4d50('0x1d')}];if(_0x5c48e0[_0x4d50('0x1e')]&&_['includes'](_0x4e1d17,_0x5c48e0[_0x4d50('0x1e')])){_0x13c8c2[_0x4d50('0xc')]({'app':_0x4d50('0x1c'),'appdata':_0x4d50('0x1f')});_0x13c8c2[_0x4d50('0xc')]({'app':_0x4d50('0x1c'),'appdata':util[_0x4d50('0xa')](_0x4d50('0x20'),_0x5c48e0['extensionMonitor'])});_0x13c8c2[_0x4d50('0xc')]({'app':_0x4d50('0x21'),'appdata':util[_0x4d50('0xa')](_0x4d50('0x22'),_0x5c48e0[_0x4d50('0x17')])});}else{_0x13c8c2[_0x4d50('0xc')]({'app':_0x4d50('0x21'),'appdata':util[_0x4d50('0xa')](_0x4d50('0x23'),_0x5c48e0['name'])});}_0x13c8c2[_0x4d50('0xc')]({'app':_0x4d50('0x24')});for(var _0xc2e4cb=0x0;_0xc2e4cb<_0x13c8c2['length'];_0xc2e4cb++){_0x13c8c2[_0xc2e4cb][_0x4d50('0x25')]=_0xc2e4cb+0x1;_0x13c8c2[_0xc2e4cb]=_[_0x4d50('0x26')](_0x13c8c2[_0xc2e4cb],_0x1151fd);}return _0x13c8c2;};var getChanSpyPromise=function(_0x33d95c,_0x3cc981){return new BPromise(function(_0x1e8b7e,_0x545625){return _0x33d95c[_0x4d50('0x27')][_0x4d50('0x28')]()[_0x4d50('0x29')](function(_0x1321af){if(_0x1321af){var _0x2dd963=getChanSpyApplications(_0x3cc981,_0x3cc981[_0x4d50('0x2a')],_0x1321af);if(_0x3cc981[_0x4d50('0x2a')]!=_0x3cc981['name']){_0x2dd963=_0x2dd963['concat'](getChanSpyApplications(_0x3cc981,_0x3cc981[_0x4d50('0x17')],_0x1321af));}return _0x1e8b7e(_0x2dd963);}return _0x1e8b7e([]);})[_0x4d50('0x2b')](function(_0x10c827){_0x545625(_0x10c827);});});};module[_0x4d50('0x2c')]=function(_0x177de6,_0x2cf296){var _0x1b1566=_0x177de6[_0x4d50('0x2d')];return _0x177de6[_0x4d50('0x2e')](_0x4d50('0x2f'),attributes,{'tableName':'users','charset':'utf8','collate':'utf8_bin','hooks':{'beforeCreate':function(_0x2d1e10,_0x491637,_0x1ffa21){var _0x4aa055=typeof _0x2d1e10[_0x4d50('0x30')]===_0x4d50('0x31')?BPromise[_0x4d50('0x32')](null):_0x1b1566[_0x4d50('0x33')][_0x4d50('0x34')]({'where':{'id':_0x2d1e10[_0x4d50('0x30')]}});_0x4aa055['then'](function(_0x14994f){if(_0x14994f){_0x2d1e10[_0x4d50('0x35')]=_0x14994f[_0x4d50('0x35')];}})[_0x4d50('0x29')](function(){_0x2d1e10[_0x4d50('0x36')]();_0x2d1e10[_0x4d50('0x37')](_0x1ffa21);})[_0x4d50('0x2b')](function(_0x3ff86d){_0x1ffa21(_0x3ff86d);});},'beforeUpdate':function(_0xaa151d,_0x346b66,_0x432511){Promise[_0x4d50('0x32')]()[_0x4d50('0x29')](function(){if(_0xaa151d[_0x4d50('0x38')](_0x4d50('0x30'))===![])return;return _0x1b1566['UserProfile'][_0x4d50('0x34')]({'where':{'id':_0xaa151d[_0x4d50('0x30')]}})['then'](function(_0x3ca58e){if(_0x3ca58e)_0xaa151d[_0x4d50('0x35')]=_0x3ca58e['privacyEnabled'];return;});})['then'](function(){if(_0xaa151d['changed'](_0x4d50('0x15'))){_0xaa151d[_0x4d50('0x36')]();return _0xaa151d[_0x4d50('0x37')](_0x432511);}_0x432511();})[_0x4d50('0x2b')](function(_0x5d221f){_0x432511(_0x5d221f);});},'afterCreate':function(_0x148cb5,_0x109db2,_0x13f8e1){var _0x3464ff=getUserApplications(_0x148cb5,_0x148cb5[_0x4d50('0x2a')]);if(_0x148cb5['internal']!=_0x148cb5[_0x4d50('0x17')]){_0x3464ff=_0x3464ff[_0x4d50('0x39')](getUserApplications(_0x148cb5,_0x148cb5[_0x4d50('0x17')]));}return _0x1b1566[_0x4d50('0x3a')][_0x4d50('0x3b')](_0x3464ff)[_0x4d50('0x29')](function(){if(_0x148cb5[_0x4d50('0xf')]){return getChanSpyPromise(_0x1b1566,_0x148cb5);}})[_0x4d50('0x29')](function(_0x429c79){if(_0x429c79&&_0x429c79[_0x4d50('0x6')]){return _0x1b1566[_0x4d50('0x3a')]['bulkCreate'](_0x429c79);}})['then'](function(){_0x13f8e1();})['catch'](function(_0x5162d9){_0x13f8e1(_0x5162d9);});},'afterUpdate':function(_0x385baf,_0x3c51ff,_0x564e4f){return BPromise[_0x4d50('0x32')]()[_0x4d50('0x29')](function(){if(_0x385baf[_0x4d50('0x38')](_0x4d50('0xf'))||_0x385baf[_0x4d50('0x38')]('context')){return _0x1b1566[_0x4d50('0x3a')]['destroy']({'where':{'UserId':_0x385baf['id'],'type':_0x4d50('0x9'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x385baf[_0x4d50('0xf')]){return getChanSpyPromise(_0x1b1566,_0x385baf)[_0x4d50('0x29')](function(_0x2ea4e1){if(_0x2ea4e1&&_0x2ea4e1[_0x4d50('0x6')]){return _0x1b1566['VoiceExtension']['bulkCreate'](_0x2ea4e1);}});}});}})[_0x4d50('0x29')](function(){if(_0x385baf[_0x4d50('0x38')](_0x4d50('0x1e'))||_0x385baf['changed'](_0x4d50('0x7'))){return _0x1b1566['VoiceExtension'][_0x4d50('0x3c')]({'where':{'UserId':_0x385baf['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x3d355b=getUserApplications(_0x385baf,_0x385baf[_0x4d50('0x2a')]);if(_0x385baf['internal']!=_0x385baf[_0x4d50('0x17')]){_0x3d355b=_0x3d355b[_0x4d50('0x39')](getUserApplications(_0x385baf,_0x385baf['name']));}return _0x1b1566[_0x4d50('0x3a')][_0x4d50('0x3b')](_0x3d355b);});}})['then'](function(){_0x564e4f();})['catch'](function(_0x1f1ed0){_0x564e4f(_0x1f1ed0);});},'afterDestroy':function(_0x255059,_0x473a9c){return _0x1b1566[_0x4d50('0x3a')][_0x4d50('0x3c')]({'where':{'UserId':_0x255059['id'],'type':_0x4d50('0x9')}});}},'instanceMethods':{'authenticate':function(_0x839737,_0x2843a4){if(!_0x2843a4){return this[_0x4d50('0x15')]===this[_0x4d50('0x3d')](_0x839737);}var _0xcc6879=this;this[_0x4d50('0x3d')](_0x839737,function(_0x343212,_0x98cfe1){if(_0x343212){_0x2843a4(_0x343212);}if(_0xcc6879[_0x4d50('0x15')]===_0x98cfe1){_0x2843a4(null,!![]);}else{_0x2843a4(null,![]);}});},'makeSalt':function(_0x570d26,_0x533e6d){var _0x45e472=0x10;if(typeof arguments[0x0]==='function'){_0x533e6d=arguments[0x0];_0x570d26=_0x45e472;}else if(typeof arguments[0x1]==='function'){_0x533e6d=arguments[0x1];}else{throw new Error(_0x4d50('0x3e'));}if(!_0x570d26){_0x570d26=_0x45e472;}return crypto[_0x4d50('0x3f')](_0x570d26,function(_0x2ffb61,_0x22768d){if(_0x2ffb61){_0x533e6d(_0x2ffb61);}return _0x533e6d(null,_0x22768d[_0x4d50('0x40')](_0x4d50('0x41')));});},'encryptPassword':function(_0x14c28b,_0x1220c5){if(!_0x14c28b||!this[_0x4d50('0x42')]){return _0x1220c5?_0x1220c5(null):null;}var _0x368283=0x2710;var _0x4f759f=0x40;var _0x3c6fd2=new Buffer(this[_0x4d50('0x42')],_0x4d50('0x41'));if(!_0x1220c5){return crypto[_0x4d50('0x43')](_0x14c28b,_0x3c6fd2,_0x368283,_0x4f759f,_0x4d50('0x44'))[_0x4d50('0x40')](_0x4d50('0x41'));}return crypto[_0x4d50('0x45')](_0x14c28b,_0x3c6fd2,_0x368283,_0x4f759f,_0x4d50('0x44'),function(_0x2790df,_0x176acd){if(_0x2790df){_0x1220c5(_0x2790df);}return _0x1220c5(null,_0x176acd['toString'](_0x4d50('0x41')));});},'updatePassword':function(_0x3158e4){if(!this[_0x4d50('0x15')]){return _0x3158e4(null);}if(!validatePresenceOf(this[_0x4d50('0x15')])&&authTypes[_0x4d50('0x46')](this[_0x4d50('0x47')])===-0x1){_0x3158e4(new Error(_0x4d50('0x48')));}var _0x5cbb63=this;this[_0x4d50('0x49')](function(_0x5147c4,_0x2727ce){if(_0x5147c4){return _0x3158e4(_0x5147c4);}_0x5cbb63[_0x4d50('0x42')]=_0x2727ce;_0x5cbb63[_0x4d50('0x3d')](_0x5cbb63['password'],function(_0x1c2ce8,_0x53e36e){if(_0x1c2ce8){_0x3158e4(_0x1c2ce8);}_0x5cbb63['password']=_0x53e36e;_0x3158e4(null);});});},'updateMd5Password':function(){this[_0x4d50('0x4a')]=md5(this[_0x4d50('0x17')]+_0x4d50('0x4b')+this[_0x4d50('0x15')]);return this[_0x4d50('0x4a')];}}});};
\ No newline at end of file
+var _0x0829=['password','ChanSpy','SIP/%s,%s','name','options','join','record','wav','WAV','gsm','from-sip','Set','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','VoiceExtension','bulkCreate','chanspy','destroy','encryptPassword','function','randomBytes','base64','salt','pbkdf2Sync','sha1','toString','pbkdf2','provider','md5secret','bluebird','crypto','util','md5','lodash','google','length','context','system','format','%s%s','prefix','push','merge','Authenticate'];(function(_0x1bb7e3,_0x2d3cd9){var _0x576cd8=function(_0x5e4d23){while(--_0x5e4d23){_0x1bb7e3['push'](_0x1bb7e3['shift']());}};_0x576cd8(++_0x2d3cd9);}(_0x0829,0x111));var _0x9082=function(_0x3a3b8b,_0x2cabf0){_0x3a3b8b=_0x3a3b8b-0x0;var _0x878113=_0x0829[_0x3a3b8b];return _0x878113;};'use strict';var BPromise=require(_0x9082('0x0'));var crypto=require(_0x9082('0x1'));var util=require(_0x9082('0x2'));var md5=require(_0x9082('0x3'));var _=require(_0x9082('0x4'));var attributes=require('./user.attributes');var authTypes=[_0x9082('0x5')];var validatePresenceOf=function(_0x592c24){return _0x592c24&&_0x592c24[_0x9082('0x6')];};var getChanSpyApplications=function(_0x3479ce,_0x4847c2,_0x3c0a2c){var _0x148b9e={'context':_0x3479ce[_0x9082('0x7')]||'from-sip','type':_0x9082('0x8'),'isApp':![],'UserId':_0x3479ce['id']};var _0x57279e=[];for(var _0x514778=0x0,_0x4488b1=0x1;_0x514778<_0x3c0a2c['length'];_0x514778++,_0x4488b1=0x1){var _0x399d61={'exten':util[_0x9082('0x9')](_0x9082('0xa'),_0x3c0a2c[_0x514778][_0x9082('0xb')],_0x4847c2),'ChanSpyId':_0x3c0a2c[_0x514778]['id']};_0x57279e[_0x9082('0xc')](_[_0x9082('0xd')]({'app':'Set','appdata':util[_0x9082('0x9')]('CDR(type)=%s','chanspy'),'priority':_0x4488b1++},_0x148b9e,_0x399d61));if(_0x3c0a2c[_0x514778]['record']){_0x57279e[_0x9082('0xc')](_['merge']({'app':'MixMonitor','appdata':util[_0x9082('0x9')]('${UNIQUEID}.%s,a',_0x3c0a2c[_0x514778]['recordingFormat']),'priority':_0x4488b1++},_0x148b9e,_0x399d61));}if(_0x3c0a2c[_0x514778]['auth']){_0x57279e[_0x9082('0xc')](_['merge']({'app':_0x9082('0xe'),'appdata':_0x3c0a2c[_0x514778][_0x9082('0xf')],'priority':_0x4488b1++},_0x148b9e,_0x399d61));}_0x57279e[_0x9082('0xc')](_[_0x9082('0xd')]({'app':_0x9082('0x10'),'appdata':util['format'](_0x9082('0x11'),_0x3479ce[_0x9082('0x12')],_0x3c0a2c[_0x514778][_0x9082('0x13')]?_0x3c0a2c[_0x514778][_0x9082('0x13')][_0x9082('0x14')](''):''),'priority':_0x4488b1++},_0x148b9e,_0x399d61));if(_0x3c0a2c[_0x514778][_0x9082('0x15')]){_0x57279e['push'](_[_0x9082('0xd')]({'app':'StopMixMonitor','priority':_0x4488b1++},_0x148b9e,_0x399d61));}}return _0x57279e;};var getUserApplications=function(_0x507c87,_0x50b8e2){var _0x364767=[_0x9082('0x16'),_0x9082('0x17'),_0x9082('0x18')];var _0x3e1ea8={'context':_0x507c87['context']||_0x9082('0x19'),'exten':_0x50b8e2,'type':'system','isApp':![],'UserId':_0x507c87['id']};var _0x2fb5bf=[{'app':_0x9082('0x1a'),'appdata':'CDR(type)=internal'}];if(_0x507c87[_0x9082('0x1b')]&&_[_0x9082('0x1c')](_0x364767,_0x507c87['extensionMonitor'])){_0x2fb5bf['push']({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x2fb5bf['push']({'app':_0x9082('0x1a'),'appdata':util[_0x9082('0x9')](_0x9082('0x1d'),_0x507c87[_0x9082('0x1b')])});_0x2fb5bf[_0x9082('0xc')]({'app':_0x9082('0x1e'),'appdata':util['format'](_0x9082('0x1f'),_0x507c87[_0x9082('0x12')])});}else{_0x2fb5bf[_0x9082('0xc')]({'app':_0x9082('0x1e'),'appdata':util[_0x9082('0x9')](_0x9082('0x20'),_0x507c87[_0x9082('0x12')])});}_0x2fb5bf[_0x9082('0xc')]({'app':_0x9082('0x21')});for(var _0x47b98d=0x0;_0x47b98d<_0x2fb5bf[_0x9082('0x6')];_0x47b98d++){_0x2fb5bf[_0x47b98d][_0x9082('0x22')]=_0x47b98d+0x1;_0x2fb5bf[_0x47b98d]=_[_0x9082('0x23')](_0x2fb5bf[_0x47b98d],_0x3e1ea8);}return _0x2fb5bf;};var getChanSpyPromise=function(_0x456442,_0x5487c1){return new BPromise(function(_0x583c65,_0x48b721){return _0x456442[_0x9082('0x24')][_0x9082('0x25')]()[_0x9082('0x26')](function(_0x3a2410){if(_0x3a2410){var _0x5a35e8=getChanSpyApplications(_0x5487c1,_0x5487c1[_0x9082('0x27')],_0x3a2410);if(_0x5487c1[_0x9082('0x27')]!=_0x5487c1[_0x9082('0x12')]){_0x5a35e8=_0x5a35e8[_0x9082('0x28')](getChanSpyApplications(_0x5487c1,_0x5487c1[_0x9082('0x12')],_0x3a2410));}return _0x583c65(_0x5a35e8);}return _0x583c65([]);})[_0x9082('0x29')](function(_0x321fee){_0x48b721(_0x321fee);});});};module[_0x9082('0x2a')]=function(_0x21613d,_0x170a33){var _0x366912=_0x21613d[_0x9082('0x2b')];return _0x21613d[_0x9082('0x2c')](_0x9082('0x2d'),attributes,{'tableName':_0x9082('0x2e'),'charset':_0x9082('0x2f'),'collate':_0x9082('0x30'),'hooks':{'beforeCreate':function(_0x524045,_0x231d7,_0x391dd2){var _0x2b46cb=typeof _0x524045[_0x9082('0x31')]==='undefined'?BPromise[_0x9082('0x32')](null):_0x366912['UserProfile'][_0x9082('0x33')]({'where':{'id':_0x524045['userProfileId']}});_0x2b46cb['then'](function(_0x5034be){if(_0x5034be){_0x524045[_0x9082('0x34')]=_0x5034be[_0x9082('0x34')];}})[_0x9082('0x26')](function(){_0x524045[_0x9082('0x35')]();_0x524045[_0x9082('0x36')](_0x391dd2);})[_0x9082('0x29')](function(_0xd3179a){_0x391dd2(_0xd3179a);});},'beforeUpdate':function(_0x6dcafe,_0x590b5f,_0x5b5e56){Promise[_0x9082('0x32')]()[_0x9082('0x26')](function(){if(_0x6dcafe[_0x9082('0x37')](_0x9082('0x31'))===![])return;return _0x366912[_0x9082('0x38')][_0x9082('0x33')]({'where':{'id':_0x6dcafe[_0x9082('0x31')]}})[_0x9082('0x26')](function(_0x37e99d){if(_0x37e99d)_0x6dcafe[_0x9082('0x34')]=_0x37e99d[_0x9082('0x34')];return;});})[_0x9082('0x26')](function(){if(_0x6dcafe['changed'](_0x9082('0xf'))){_0x6dcafe[_0x9082('0x35')]();return _0x6dcafe[_0x9082('0x36')](_0x5b5e56);}_0x5b5e56();})[_0x9082('0x29')](function(_0x5610e6){_0x5b5e56(_0x5610e6);});},'afterCreate':function(_0x43b0aa,_0x45b546,_0x18f085){var _0x60094c=getUserApplications(_0x43b0aa,_0x43b0aa[_0x9082('0x27')]);if(_0x43b0aa['internal']!=_0x43b0aa[_0x9082('0x12')]){_0x60094c=_0x60094c[_0x9082('0x28')](getUserApplications(_0x43b0aa,_0x43b0aa['name']));}return _0x366912[_0x9082('0x39')][_0x9082('0x3a')](_0x60094c)[_0x9082('0x26')](function(){if(_0x43b0aa[_0x9082('0x3b')]){return getChanSpyPromise(_0x366912,_0x43b0aa);}})[_0x9082('0x26')](function(_0x7f3589){if(_0x7f3589&&_0x7f3589[_0x9082('0x6')]){return _0x366912[_0x9082('0x39')][_0x9082('0x3a')](_0x7f3589);}})[_0x9082('0x26')](function(){_0x18f085();})[_0x9082('0x29')](function(_0x14dee4){_0x18f085(_0x14dee4);});},'afterUpdate':function(_0x21aefe,_0x43df08,_0x2b72ec){return BPromise[_0x9082('0x32')]()[_0x9082('0x26')](function(){if(_0x21aefe[_0x9082('0x37')]('chanspy')||_0x21aefe[_0x9082('0x37')](_0x9082('0x7'))){return _0x366912[_0x9082('0x39')][_0x9082('0x3c')]({'where':{'UserId':_0x21aefe['id'],'type':_0x9082('0x8'),'ChanSpyId':{'$ne':null}}})[_0x9082('0x26')](function(){if(_0x21aefe[_0x9082('0x3b')]){return getChanSpyPromise(_0x366912,_0x21aefe)[_0x9082('0x26')](function(_0x50d8d1){if(_0x50d8d1&&_0x50d8d1['length']){return _0x366912['VoiceExtension'][_0x9082('0x3a')](_0x50d8d1);}});}});}})[_0x9082('0x26')](function(){if(_0x21aefe['changed'](_0x9082('0x1b'))||_0x21aefe[_0x9082('0x37')]('context')){return _0x366912[_0x9082('0x39')]['destroy']({'where':{'UserId':_0x21aefe['id'],'type':_0x9082('0x8'),'ChanSpyId':null}})[_0x9082('0x26')](function(){var _0x106e69=getUserApplications(_0x21aefe,_0x21aefe[_0x9082('0x27')]);if(_0x21aefe[_0x9082('0x27')]!=_0x21aefe[_0x9082('0x12')]){_0x106e69=_0x106e69[_0x9082('0x28')](getUserApplications(_0x21aefe,_0x21aefe[_0x9082('0x12')]));}return _0x366912['VoiceExtension'][_0x9082('0x3a')](_0x106e69);});}})[_0x9082('0x26')](function(){_0x2b72ec();})[_0x9082('0x29')](function(_0x273560){_0x2b72ec(_0x273560);});},'afterDestroy':function(_0x4ef064,_0x4b3c06){return _0x366912[_0x9082('0x39')][_0x9082('0x3c')]({'where':{'UserId':_0x4ef064['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x51b073,_0x55ee59){if(!_0x55ee59){return this['password']===this[_0x9082('0x3d')](_0x51b073);}var _0x59d490=this;this[_0x9082('0x3d')](_0x51b073,function(_0x255904,_0x4e8f65){if(_0x255904){_0x55ee59(_0x255904);}if(_0x59d490[_0x9082('0xf')]===_0x4e8f65){_0x55ee59(null,!![]);}else{_0x55ee59(null,![]);}});},'makeSalt':function(_0x5523dc,_0x13050b){var _0x25f9e0=0x10;if(typeof arguments[0x0]===_0x9082('0x3e')){_0x13050b=arguments[0x0];_0x5523dc=_0x25f9e0;}else if(typeof arguments[0x1]===_0x9082('0x3e')){_0x13050b=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x5523dc){_0x5523dc=_0x25f9e0;}return crypto[_0x9082('0x3f')](_0x5523dc,function(_0x5c5ea5,_0x49a314){if(_0x5c5ea5){_0x13050b(_0x5c5ea5);}return _0x13050b(null,_0x49a314['toString'](_0x9082('0x40')));});},'encryptPassword':function(_0x35c532,_0x44af31){if(!_0x35c532||!this[_0x9082('0x41')]){return _0x44af31?_0x44af31(null):null;}var _0x41584e=0x2710;var _0x2669ef=0x40;var _0x59ffa7=new Buffer(this[_0x9082('0x41')],'base64');if(!_0x44af31){return crypto[_0x9082('0x42')](_0x35c532,_0x59ffa7,_0x41584e,_0x2669ef,_0x9082('0x43'))[_0x9082('0x44')]('base64');}return crypto[_0x9082('0x45')](_0x35c532,_0x59ffa7,_0x41584e,_0x2669ef,'sha1',function(_0x5e1296,_0x1aad42){if(_0x5e1296){_0x44af31(_0x5e1296);}return _0x44af31(null,_0x1aad42[_0x9082('0x44')]('base64'));});},'updatePassword':function(_0x100e7e){if(!this[_0x9082('0xf')]){return _0x100e7e(null);}if(!validatePresenceOf(this[_0x9082('0xf')])&&authTypes['indexOf'](this[_0x9082('0x46')])===-0x1){_0x100e7e(new Error('Invalid\x20password'));}var _0x296b46=this;this['makeSalt'](function(_0x3e02ef,_0x14a1c){if(_0x3e02ef){return _0x100e7e(_0x3e02ef);}_0x296b46[_0x9082('0x41')]=_0x14a1c;_0x296b46['encryptPassword'](_0x296b46[_0x9082('0xf')],function(_0x2e9699,_0xbcbdf){if(_0x2e9699){_0x100e7e(_0x2e9699);}_0x296b46['password']=_0xbcbdf;_0x100e7e(null);});});},'updateMd5Password':function(){this[_0x9082('0x47')]=md5(this['name']+':asterisk:'+this[_0x9082('0xf')]);return this[_0x9082('0x47')];}}});};
\ No newline at end of file
index 382b738..65c7a1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4697=['loginInPause','SIP/%s','count','agent','../../config/license/util','agents','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','LOGIN','callysquare','merge','LOGININPAUSE','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','catch','GetUser','User','options','where','limit','include','model','attributes','map','then','find','raw','ShowUser','name','role','internal','interface','UserVoiceQueueRt','MemberReport','findAll','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','forEach','push','isNil','body','type','DEFAULT\x20PAUSE','bulkCreate','update','findOne','channel','isValidChannel','Unknown\x20channel','voice','system','mail','chat','sms','whatsapp','set','%s%s','all','LogoutUser','destroy','LoginUser','mobile'];(function(_0x2873a2,_0x8167ab){var _0x4f3191=function(_0x31156b){while(--_0x31156b){_0x2873a2['push'](_0x2873a2['shift']());}};_0x4f3191(++_0x8167ab);}(_0x4697,0x11c));var _0x7469=function(_0xfc7436,_0x259904){_0xfc7436=_0xfc7436-0x0;var _0x217b03=_0x4697[_0xfc7436];return _0x217b03;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7469('0x0'));var BPromise=require('bluebird');var rs=require(_0x7469('0x1'));var fs=require('fs');var Redis=require(_0x7469('0x2'));var db=require(_0x7469('0x3'))['db'];var utils=require(_0x7469('0x4'));var logger=require(_0x7469('0x5'))('rpc');var config=require(_0x7469('0x6'));var jayson=require(_0x7469('0x7'));var client=jayson[_0x7469('0x8')][_0x7469('0x9')]({'port':0x232a});config[_0x7469('0xa')]=_[_0x7469('0xb')](config['redis'],{'host':_0x7469('0xc'),'port':0x18eb});var socket=require(_0x7469('0xd'))(new Redis(config[_0x7469('0xa')]));require(_0x7469('0xe'))[_0x7469('0xf')](socket);function respondWithRpcPromise(_0x402661,_0x4699ac,_0x594d16){return new BPromise(function(_0x3f473e,_0x48c51a){return client['request'](_0x402661,_0x594d16)['then'](function(_0x55c914){logger[_0x7469('0x10')]('User,\x20%s,\x20%s',_0x4699ac,_0x7469('0x11'));logger[_0x7469('0x12')](_0x7469('0x13'),_0x4699ac,_0x7469('0x11'),JSON[_0x7469('0x14')](_0x55c914));if(_0x55c914[_0x7469('0x15')]){if(_0x55c914[_0x7469('0x15')][_0x7469('0x16')]===0x1f4){logger[_0x7469('0x15')](_0x7469('0x17'),_0x4699ac,_0x55c914[_0x7469('0x15')][_0x7469('0x18')]);return _0x48c51a(_0x55c914['error'][_0x7469('0x18')]);}logger['error'](_0x7469('0x17'),_0x4699ac,_0x55c914[_0x7469('0x15')][_0x7469('0x18')]);return _0x3f473e(_0x55c914['error'][_0x7469('0x18')]);}else{logger[_0x7469('0x10')](_0x7469('0x17'),_0x4699ac,_0x7469('0x11'));_0x3f473e(_0x55c914['result'][_0x7469('0x18')]);}})[_0x7469('0x19')](function(_0x90f479){logger[_0x7469('0x15')](_0x7469('0x17'),_0x4699ac,_0x90f479);_0x48c51a(_0x90f479);});});}exports[_0x7469('0x1a')]=function(_0x434aed){var _0x182b01=this;return new Promise(function(_0x7f38f5,_0xf7050f){return db[_0x7469('0x1b')]['findAll']({'raw':_0x434aed[_0x7469('0x1c')]?_0x434aed[_0x7469('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x434aed[_0x7469('0x1c')]?_0x434aed[_0x7469('0x1c')][_0x7469('0x1d')]||null:null,'attributes':_0x434aed[_0x7469('0x1c')]?_0x434aed['options']['attributes']||null:null,'limit':_0x434aed[_0x7469('0x1c')]?_0x434aed[_0x7469('0x1c')][_0x7469('0x1e')]||null:null,'include':_0x434aed[_0x7469('0x1c')]?_0x434aed[_0x7469('0x1c')][_0x7469('0x1f')]?_['map'](_0x434aed[_0x7469('0x1c')][_0x7469('0x1f')],function(_0x2d3f85){return{'model':db[_0x2d3f85[_0x7469('0x20')]],'as':_0x2d3f85['as'],'attributes':_0x2d3f85[_0x7469('0x21')],'include':_0x2d3f85['include']?_[_0x7469('0x22')](_0x2d3f85['include'],function(_0x2b953f){return{'model':db[_0x2b953f['model']],'as':_0x2b953f['as'],'attributes':_0x2b953f[_0x7469('0x21')],'include':_0x2b953f[_0x7469('0x1f')]?_[_0x7469('0x22')](_0x2b953f['include'],function(_0x12ec8a){return{'model':db[_0x12ec8a[_0x7469('0x20')]],'as':_0x12ec8a['as'],'attributes':_0x12ec8a[_0x7469('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7469('0x23')](function(_0x1afe10){logger['info'](_0x7469('0x1a'),_0x434aed);logger[_0x7469('0x12')](_0x7469('0x1a'),_0x434aed,JSON[_0x7469('0x14')](_0x1afe10));_0x7f38f5(_0x1afe10);})[_0x7469('0x19')](function(_0x3eaec7){logger['error']('GetUser',_0x3eaec7[_0x7469('0x18')],_0x434aed);_0xf7050f(_0x182b01['error'](0x1f4,_0x3eaec7[_0x7469('0x18')]));});});};exports['ShowUser']=function(_0xb60593){var _0x56915d=this;return new Promise(function(_0x5a1936,_0x2f5dd0){return db[_0x7469('0x1b')][_0x7469('0x24')]({'raw':_0xb60593[_0x7469('0x1c')]?_0xb60593[_0x7469('0x1c')][_0x7469('0x25')]===undefined?!![]:![]:!![],'where':_0xb60593[_0x7469('0x1c')]?_0xb60593[_0x7469('0x1c')]['where']||null:null,'attributes':_0xb60593['options']?_0xb60593[_0x7469('0x1c')][_0x7469('0x21')]||null:null,'include':_0xb60593[_0x7469('0x1c')]?_0xb60593[_0x7469('0x1c')][_0x7469('0x1f')]?_[_0x7469('0x22')](_0xb60593['options'][_0x7469('0x1f')],function(_0x4b9cc1){return{'model':db[_0x4b9cc1[_0x7469('0x20')]],'as':_0x4b9cc1['as'],'attributes':_0x4b9cc1['attributes'],'include':_0x4b9cc1[_0x7469('0x1f')]?_[_0x7469('0x22')](_0x4b9cc1['include'],function(_0x2ff123){return{'model':db[_0x2ff123[_0x7469('0x20')]],'as':_0x2ff123['as'],'attributes':_0x2ff123[_0x7469('0x21')],'include':_0x2ff123['include']?_[_0x7469('0x22')](_0x2ff123[_0x7469('0x1f')],function(_0x9a6e00){return{'model':db[_0x9a6e00[_0x7469('0x20')]],'as':_0x9a6e00['as'],'attributes':_0x9a6e00[_0x7469('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7469('0x23')](function(_0x1ac00c){logger[_0x7469('0x10')]('ShowUser',_0xb60593);logger[_0x7469('0x12')](_0x7469('0x26'),_0xb60593,JSON[_0x7469('0x14')](_0x1ac00c));_0x5a1936(_0x1ac00c);})[_0x7469('0x19')](function(_0x1384a9){logger[_0x7469('0x15')]('ShowUser',_0x1384a9['message'],_0xb60593);_0x2f5dd0(_0x56915d[_0x7469('0x15')](0x1f4,_0x1384a9[_0x7469('0x18')]));});});};exports['PauseUser']=function(_0x477497){var _0x2e9b9a=this;return new Promise(function(_0x599d80,_0x20196c){var _0x2a1fd1;return db['User'][_0x7469('0x24')]({'where':_0x477497[_0x7469('0x1c')][_0x7469('0x1d')]||{},'attributes':['id',_0x7469('0x27'),_0x7469('0x28'),_0x7469('0x29'),_0x7469('0x2a')]})[_0x7469('0x23')](function(_0x1d6c87){if(_0x1d6c87){_0x2a1fd1=_0x1d6c87;return db[_0x7469('0x2b')]['update']({'paused':0x1},{'where':{'UserId':_0x2a1fd1['id']},'individualHooks':!![]});}})['then'](function(){if(_0x2a1fd1){return db[_0x7469('0x2c')][_0x7469('0x2d')]({'where':{'membername':_0x2a1fd1['name'],'type':_0x7469('0x2e'),'exitAt':null}});}})[_0x7469('0x23')](function(_0x3e9f20){if(_0x2a1fd1){if(_0x3e9f20&&_0x3e9f20['length']){var _0x3e9b04=moment()[_0x7469('0x2f')](_0x7469('0x30'));for(var _0x20349d=0x0,_0x25ecb1=_0x3e9f20[_0x7469('0x31')];_0x20349d<_0x25ecb1;_0x20349d++){_0x3e9f20[_0x20349d][_0x7469('0x32')]({'exitAt':_0x3e9b04});}}}})[_0x7469('0x23')](function(){if(_0x2a1fd1){var _0x4270a4=[];var _0x12845b=utils['getChannels']();_0x12845b[_0x7469('0x33')](function(_0x463ac6){_0x4270a4[_0x7469('0x34')]({'channel':_0x463ac6,'membername':_0x2a1fd1[_0x7469('0x27')],'interface':_[_0x7469('0x35')](_0x2a1fd1[_0x7469('0x2a')])?util[_0x7469('0x2f')]('SIP/%s',_0x2a1fd1[_0x7469('0x27')]):_0x2a1fd1[_0x7469('0x2a')],'type':_0x7469('0x2e'),'enterAt':moment()['format'](_0x7469('0x30')),'data1':_0x477497[_0x7469('0x36')][_0x7469('0x37')]||_0x7469('0x38'),'role':_0x2a1fd1[_0x7469('0x28')],'internal':_0x2a1fd1[_0x7469('0x29')],'uniqueid':_0x477497[_0x7469('0x36')]['uniqueid']||null});});return db[_0x7469('0x2c')][_0x7469('0x39')](_0x4270a4,{'individualHooks':!![]});}})[_0x7469('0x23')](function(){if(_0x2a1fd1){return _0x2a1fd1[_0x7469('0x3a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x477497[_0x7469('0x36')][_0x7469('0x37')]||_0x7469('0x38'),'lastPauseAt':moment()[_0x7469('0x2f')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x7469('0x23')](function(_0x197a31){_0x599d80(_0x197a31);})[_0x7469('0x19')](function(_0x1af3c0){_0x20196c(_0x2e9b9a[_0x7469('0x15')](0x1f4,_0x1af3c0['message']));});});};exports['UnpauseUser']=function(_0x9dcf5d){var _0x1a4891=this;return new Promise(function(_0x5e685c,_0x1a540c){var _0x48f727;return db[_0x7469('0x1b')][_0x7469('0x3b')]({'where':_0x9dcf5d[_0x7469('0x1c')]['where']||{},'attributes':['id',_0x7469('0x27')]})[_0x7469('0x23')](function(_0x15bf16){if(_0x15bf16){_0x48f727=_0x15bf16;if(_0x9dcf5d[_0x7469('0x36')][_0x7469('0x3c')]&&!utils[_0x7469('0x3d')](_0x9dcf5d[_0x7469('0x36')]['channel'])){throw new Error(_0x7469('0x3e'));}switch(_0x9dcf5d[_0x7469('0x36')][_0x7469('0x3c')]){case _0x7469('0x3f'):return db[_0x7469('0x2b')][_0x7469('0x3a')]({'paused':0x0},{'where':{'UserId':_0x48f727['id']}})[_0x7469('0x23')](function(){return db[_0x7469('0x2c')][_0x7469('0x24')]({'where':{'channel':_0x9dcf5d['body'][_0x7469('0x3c')],'membername':_0x48f727[_0x7469('0x27')],'type':_0x7469('0x2e'),'exitAt':null}});})[_0x7469('0x23')](function(_0x3e1a6a){if(_0x3e1a6a){return _0x3e1a6a['update']({'exitAt':moment()[_0x7469('0x2f')](_0x7469('0x30')),'data2':_0x7469('0x40')},{'individualHooks':!![]});}return null;})[_0x7469('0x23')](function(){return _0x48f727[_0x7469('0x3a')]({'voicePause':![]});});case _0x7469('0x41'):case _0x7469('0x42'):case'fax':case _0x7469('0x43'):case'openchannel':case _0x7469('0x44'):return db[_0x7469('0x2c')][_0x7469('0x24')]({'where':{'channel':_0x9dcf5d['body'][_0x7469('0x3c')],'membername':_0x48f727[_0x7469('0x27')],'type':_0x7469('0x2e'),'exitAt':null}})['then'](function(_0x495b39){return _0x495b39[_0x7469('0x3a')]({'exitAt':moment()[_0x7469('0x2f')](_0x7469('0x30')),'data2':_0x7469('0x40')},{'individualHooks':!![]});})[_0x7469('0x23')](function(){var _0x547e72={};_[_0x7469('0x45')](_0x547e72,util[_0x7469('0x2f')](_0x7469('0x46'),_0x9dcf5d[_0x7469('0x36')][_0x7469('0x3c')],'Pause'),![]);return _0x48f727[_0x7469('0x3a')](_0x547e72);});default:return db[_0x7469('0x2b')][_0x7469('0x3a')]({'paused':0x0},{'where':{'UserId':_0x48f727['id']}})[_0x7469('0x23')](function(){return db['MemberReport'][_0x7469('0x2d')]({'where':{'membername':_0x48f727[_0x7469('0x27')],'type':'PAUSE','exitAt':null}});})[_0x7469('0x23')](function(_0x31c4b6){var _0x5e318a=[];_0x31c4b6[_0x7469('0x33')](function(_0x2947bf){_0x5e318a[_0x7469('0x34')](_0x2947bf['update']({'exitAt':moment()[_0x7469('0x2f')](_0x7469('0x30')),'data2':_0x7469('0x40')}));});return BPromise[_0x7469('0x47')](_0x5e318a);})[_0x7469('0x23')](function(){return _0x48f727[_0x7469('0x3a')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x4a5b6d){_0x5e685c(_0x4a5b6d);})[_0x7469('0x19')](function(_0x1ac3b8){_0x1a540c(_0x1a4891[_0x7469('0x15')](0x1f4,_0x1ac3b8['message']));});});};exports[_0x7469('0x48')]=function(_0x33bb89){var _0x55a0a5=this;return new Promise(function(_0x119629,_0x325d96){var _0x1edfd0;return db[_0x7469('0x1b')][_0x7469('0x3b')]({'where':_0x33bb89[_0x7469('0x1c')][_0x7469('0x1d')]||{},'attributes':['id',_0x7469('0x27')]})['then'](function(_0x57ff2d){if(_0x57ff2d){_0x1edfd0=_0x57ff2d;return db[_0x7469('0x2b')][_0x7469('0x49')]({'where':{'membername':_0x1edfd0[_0x7469('0x27')]},'individualHooks':!![]});}})[_0x7469('0x23')](function(){if(_0x1edfd0){return db[_0x7469('0x2c')][_0x7469('0x2d')]({'where':{'membername':_0x1edfd0[_0x7469('0x27')],'exitAt':null}});}})['then'](function(_0x4b56ed){if(_0x1edfd0){if(_0x4b56ed&&_0x4b56ed['length']){var _0x2d49a6=[];_0x4b56ed[_0x7469('0x33')](function(_0x57e6db){_0x2d49a6[_0x7469('0x34')](_0x57e6db['update']({'exitAt':moment()[_0x7469('0x2f')](_0x7469('0x30'))}));});return BPromise['all'](_0x2d49a6);}}})[_0x7469('0x23')](function(){if(_0x1edfd0){return _0x1edfd0[_0x7469('0x3a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x7469('0x23')](function(_0x949a95){_0x119629(_0x949a95);})[_0x7469('0x19')](function(_0x163167){_0x325d96(_0x55a0a5['error'](0x1f4,_0x163167[_0x7469('0x18')]));});});};exports[_0x7469('0x4a')]=function(_0x1e71f0){var _0x51face=this;return new Promise(function(_0x4b5b63,_0x570ed8){var _0x16abfa;var _0x323f15;var _0x2d1cf3;var _0x54f892;return db[_0x7469('0x1b')][_0x7469('0x3b')]({'where':_0x1e71f0['options'][_0x7469('0x1d')]||{},'attributes':['id',_0x7469('0x27'),'role',_0x7469('0x4b'),'phone',_0x7469('0x29'),_0x7469('0x4c'),'interface']})[_0x7469('0x23')](function(_0x4ac8a1){if(_0x4ac8a1){_0x16abfa=_0x4ac8a1;_0x54f892=_0x1e71f0[_0x7469('0x36')][_0x7469('0x2a')]?_0x1e71f0[_0x7469('0x36')][_0x7469('0x2a')]:util[_0x7469('0x2f')](_0x7469('0x4d'),_0x16abfa['name']);return db[_0x7469('0x1b')][_0x7469('0x4e')]({'where':{'role':_0x7469('0x4f'),'online':!![],'id':{'$ne':_0x16abfa['id']}}});}})[_0x7469('0x23')](function(_0x330b05){if(_0x330b05){_0x2d1cf3=_0x330b05;return require(_0x7469('0x50'))['getLicense']();}})[_0x7469('0x23')](function(_0x1d9e92){if(_0x1d9e92&&_0x1d9e92['agents']&&_0x2d1cf3>=_0x1d9e92[_0x7469('0x51')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x7469('0x23')](function(){if(_0x16abfa){return db[_0x7469('0x2b')][_0x7469('0x49')]({'where':{'membername':_0x16abfa[_0x7469('0x27')]},'individualHooks':!![]});}})[_0x7469('0x23')](function(){if(_0x16abfa){return _0x16abfa[_0x7469('0x52')]({'raw':!![]});}})[_0x7469('0x23')](function(_0x8f8a5){if(_0x16abfa){if(_0x8f8a5){var _0x555a8e=[];_0x323f15=_0x8f8a5;if(_0x323f15['length']){for(var _0x4a6d8b=0x0;_0x4a6d8b<_0x323f15['length'];_0x4a6d8b++){_0x555a8e[_0x7469('0x34')](db['UserVoiceQueueRt'][_0x7469('0x53')]({'membername':_0x16abfa[_0x7469('0x27')],'UserId':_0x16abfa['id'],'queue_name':_0x323f15[_0x4a6d8b][_0x7469('0x27')],'VoiceQueueId':_0x323f15[_0x4a6d8b]['id'],'interface':_0x54f892,'paused':_0x16abfa[_0x7469('0x4c')]||![],'penalty':_0x323f15[_0x4a6d8b][_0x7469('0x54')]||0x0}));}return BPromise['all'](_0x555a8e);}}}})['then'](function(){if(_0x16abfa){return db[_0x7469('0x2c')][_0x7469('0x2d')]({'where':{'membername':_0x16abfa[_0x7469('0x27')],'exitAt':null}});}})[_0x7469('0x23')](function(_0x5a9b6a){if(_0x16abfa){if(_0x5a9b6a&&_0x5a9b6a[_0x7469('0x31')]){var _0xf7f9a8=[];_0x5a9b6a[_0x7469('0x33')](function(_0x50c5f0){_0xf7f9a8[_0x7469('0x34')](_0x50c5f0[_0x7469('0x3a')]({'exitAt':moment()[_0x7469('0x2f')](_0x7469('0x30'))}));});return BPromise[_0x7469('0x47')](_0xf7f9a8);}}})[_0x7469('0x23')](function(_0x1867e3){if(_0x16abfa){var _0x324569=[];var _0x573f63=[];var _0x24c8de=utils[_0x7469('0x55')]();var _0xbef274={'membername':_0x16abfa[_0x7469('0x27')],'interface':_0x54f892,'enterAt':moment()[_0x7469('0x2f')](_0x7469('0x30')),'role':_0x16abfa[_0x7469('0x28')],'internal':_0x16abfa[_0x7469('0x29')]};_0x24c8de[_0x7469('0x33')](function(_0x490917){_0x324569[_0x7469('0x34')](_['merge']({'channel':_0x490917,'type':_0x7469('0x56'),'data1':_0x7469('0x57'),'data2':_0x54f892},_0xbef274));if(_0x16abfa['loginInPause']){_0x573f63[_0x7469('0x34')](_[_0x7469('0x58')]({'channel':_0x490917,'type':_0x7469('0x2e'),'data1':'LOGININPAUSE'},_0xbef274));}});return db['MemberReport'][_0x7469('0x39')](_0x324569['concat'](_0x573f63),{'individualHooks':!![]});}})[_0x7469('0x23')](function(){if(_0x16abfa){return _0x16abfa[_0x7469('0x3a')]({'online':!![],'lastLoginAt':moment()['format'](_0x7469('0x30')),'voicePause':_0x16abfa['loginInPause']||![],'mailPause':_0x16abfa[_0x7469('0x4c')]||![],'chatPause':_0x16abfa[_0x7469('0x4c')]||![],'faxPause':_0x16abfa[_0x7469('0x4c')]||![],'smsPause':_0x16abfa[_0x7469('0x4c')]||![],'openchannelPause':_0x16abfa[_0x7469('0x4c')]||![],'pauseType':_0x16abfa[_0x7469('0x4c')]?_0x7469('0x59'):null,'lastPauseAt':moment()[_0x7469('0x2f')](_0x7469('0x30')),'interface':_0x54f892});}})[_0x7469('0x23')](function(_0xc8198f){_0x4b5b63(_0xc8198f);})[_0x7469('0x19')](function(_0x473718){_0x570ed8(_0x51face['error'](0x1f4,_0x473718[_0x7469('0x18')]));});});};
\ No newline at end of file
+var _0x992e=['getChannels','forEach','isNil','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','type','DEFAULT\x20PAUSE','body','uniqueid','UnpauseUser','findOne','channel','isValidChannel','chat','fax','sms','openchannel','whatsapp','system','set','%s%s','Pause','push','all','LogoutUser','length','LoginUser','mobile','phone','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','loginInPause','UserVoiceQueue.penalty','merge','LOGIN','callysquare','LOGININPAUSE','bulkCreate','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./user.socket','register','request','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','GetUser','User','options','raw','attributes','limit','include','model','map','then','debug','ShowUser','find','where','info','PauseUser','name','role','internal','interface','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE','format'];(function(_0xea8d59,_0xf24193){var _0x2b8570=function(_0x5d89b7){while(--_0x5d89b7){_0xea8d59['push'](_0xea8d59['shift']());}};_0x2b8570(++_0xf24193);}(_0x992e,0x1af));var _0xe992=function(_0x5d4f12,_0x11e67c){_0x5d4f12=_0x5d4f12-0x0;var _0x4eb577=_0x992e[_0x5d4f12];return _0x4eb577;};'use strict';var _=require(_0xe992('0x0'));var util=require(_0xe992('0x1'));var moment=require(_0xe992('0x2'));var BPromise=require(_0xe992('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe992('0x4'));var db=require(_0xe992('0x5'))['db'];var utils=require(_0xe992('0x6'));var logger=require(_0xe992('0x7'))(_0xe992('0x8'));var config=require(_0xe992('0x9'));var jayson=require(_0xe992('0xa'));var client=jayson[_0xe992('0xb')][_0xe992('0xc')]({'port':0x232a});config[_0xe992('0xd')]=_[_0xe992('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe992('0xf'))(new Redis(config[_0xe992('0xd')]));require(_0xe992('0x10'))[_0xe992('0x11')](socket);function respondWithRpcPromise(_0x230a84,_0x2c8e1d,_0x444843){return new BPromise(function(_0x3b83f9,_0x485e9b){return client[_0xe992('0x12')](_0x230a84,_0x444843)['then'](function(_0x57f8d1){logger['info']('User,\x20%s,\x20%s',_0x2c8e1d,'request\x20sent');logger['debug'](_0xe992('0x13'),_0x2c8e1d,_0xe992('0x14'),JSON[_0xe992('0x15')](_0x57f8d1));if(_0x57f8d1[_0xe992('0x16')]){if(_0x57f8d1[_0xe992('0x16')][_0xe992('0x17')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x2c8e1d,_0x57f8d1[_0xe992('0x16')]['message']);return _0x485e9b(_0x57f8d1[_0xe992('0x16')][_0xe992('0x18')]);}logger[_0xe992('0x16')](_0xe992('0x19'),_0x2c8e1d,_0x57f8d1[_0xe992('0x16')][_0xe992('0x18')]);return _0x3b83f9(_0x57f8d1[_0xe992('0x16')][_0xe992('0x18')]);}else{logger['info'](_0xe992('0x19'),_0x2c8e1d,_0xe992('0x14'));_0x3b83f9(_0x57f8d1[_0xe992('0x1a')]['message']);}})[_0xe992('0x1b')](function(_0x30e086){logger[_0xe992('0x16')](_0xe992('0x19'),_0x2c8e1d,_0x30e086);_0x485e9b(_0x30e086);});});}exports[_0xe992('0x1c')]=function(_0x2551f2){var _0x437456=this;return new Promise(function(_0x243a3c,_0x2ea9a9){return db[_0xe992('0x1d')]['findAll']({'raw':_0x2551f2[_0xe992('0x1e')]?_0x2551f2[_0xe992('0x1e')][_0xe992('0x1f')]===undefined?!![]:![]:!![],'where':_0x2551f2[_0xe992('0x1e')]?_0x2551f2[_0xe992('0x1e')]['where']||null:null,'attributes':_0x2551f2[_0xe992('0x1e')]?_0x2551f2[_0xe992('0x1e')][_0xe992('0x20')]||null:null,'limit':_0x2551f2[_0xe992('0x1e')]?_0x2551f2[_0xe992('0x1e')][_0xe992('0x21')]||null:null,'include':_0x2551f2[_0xe992('0x1e')]?_0x2551f2[_0xe992('0x1e')][_0xe992('0x22')]?_['map'](_0x2551f2['options'][_0xe992('0x22')],function(_0x2a0130){return{'model':db[_0x2a0130[_0xe992('0x23')]],'as':_0x2a0130['as'],'attributes':_0x2a0130[_0xe992('0x20')],'include':_0x2a0130[_0xe992('0x22')]?_[_0xe992('0x24')](_0x2a0130['include'],function(_0x3a20ff){return{'model':db[_0x3a20ff[_0xe992('0x23')]],'as':_0x3a20ff['as'],'attributes':_0x3a20ff['attributes'],'include':_0x3a20ff[_0xe992('0x22')]?_[_0xe992('0x24')](_0x3a20ff['include'],function(_0x46445e){return{'model':db[_0x46445e['model']],'as':_0x46445e['as'],'attributes':_0x46445e[_0xe992('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe992('0x25')](function(_0x367d53){logger['info']('GetUser',_0x2551f2);logger[_0xe992('0x26')](_0xe992('0x1c'),_0x2551f2,JSON[_0xe992('0x15')](_0x367d53));_0x243a3c(_0x367d53);})[_0xe992('0x1b')](function(_0x4caf73){logger['error']('GetUser',_0x4caf73[_0xe992('0x18')],_0x2551f2);_0x2ea9a9(_0x437456[_0xe992('0x16')](0x1f4,_0x4caf73['message']));});});};exports[_0xe992('0x27')]=function(_0x326ddb){var _0x16ec36=this;return new Promise(function(_0x185228,_0x8f9c7b){return db['User'][_0xe992('0x28')]({'raw':_0x326ddb['options']?_0x326ddb['options']['raw']===undefined?!![]:![]:!![],'where':_0x326ddb['options']?_0x326ddb[_0xe992('0x1e')][_0xe992('0x29')]||null:null,'attributes':_0x326ddb[_0xe992('0x1e')]?_0x326ddb['options'][_0xe992('0x20')]||null:null,'include':_0x326ddb[_0xe992('0x1e')]?_0x326ddb['options'][_0xe992('0x22')]?_[_0xe992('0x24')](_0x326ddb[_0xe992('0x1e')][_0xe992('0x22')],function(_0xeaf568){return{'model':db[_0xeaf568[_0xe992('0x23')]],'as':_0xeaf568['as'],'attributes':_0xeaf568[_0xe992('0x20')],'include':_0xeaf568[_0xe992('0x22')]?_[_0xe992('0x24')](_0xeaf568[_0xe992('0x22')],function(_0x552139){return{'model':db[_0x552139[_0xe992('0x23')]],'as':_0x552139['as'],'attributes':_0x552139[_0xe992('0x20')],'include':_0x552139[_0xe992('0x22')]?_[_0xe992('0x24')](_0x552139['include'],function(_0x40ca6a){return{'model':db[_0x40ca6a[_0xe992('0x23')]],'as':_0x40ca6a['as'],'attributes':_0x40ca6a[_0xe992('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe992('0x25')](function(_0x1a2bc6){logger[_0xe992('0x2a')](_0xe992('0x27'),_0x326ddb);logger[_0xe992('0x26')](_0xe992('0x27'),_0x326ddb,JSON[_0xe992('0x15')](_0x1a2bc6));_0x185228(_0x1a2bc6);})[_0xe992('0x1b')](function(_0x57b91e){logger[_0xe992('0x16')](_0xe992('0x27'),_0x57b91e['message'],_0x326ddb);_0x8f9c7b(_0x16ec36['error'](0x1f4,_0x57b91e[_0xe992('0x18')]));});});};exports[_0xe992('0x2b')]=function(_0x2bf269){var _0x224e09=this;return new Promise(function(_0xc26f4a,_0x2c3ea7){var _0x2058ab;return db['User'][_0xe992('0x28')]({'where':_0x2bf269['options'][_0xe992('0x29')]||{},'attributes':['id',_0xe992('0x2c'),_0xe992('0x2d'),_0xe992('0x2e'),_0xe992('0x2f')]})[_0xe992('0x25')](function(_0x22caf4){if(_0x22caf4){_0x2058ab=_0x22caf4;return db[_0xe992('0x30')][_0xe992('0x31')]({'paused':0x1},{'where':{'UserId':_0x2058ab['id']},'individualHooks':!![]});}})[_0xe992('0x25')](function(){if(_0x2058ab){return db[_0xe992('0x32')][_0xe992('0x33')]({'where':{'membername':_0x2058ab[_0xe992('0x2c')],'type':_0xe992('0x34'),'exitAt':null}});}})['then'](function(_0x10b5ed){if(_0x2058ab){if(_0x10b5ed&&_0x10b5ed['length']){var _0x1a76cc=moment()[_0xe992('0x35')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3c7c4e=0x0,_0x5dea0f=_0x10b5ed['length'];_0x3c7c4e<_0x5dea0f;_0x3c7c4e++){_0x10b5ed[_0x3c7c4e]['updateAttributes']({'exitAt':_0x1a76cc});}}}})['then'](function(){if(_0x2058ab){var _0x48c4a9=[];var _0x3ab695=utils[_0xe992('0x36')]();_0x3ab695[_0xe992('0x37')](function(_0x2b2649){_0x48c4a9['push']({'channel':_0x2b2649,'membername':_0x2058ab['name'],'interface':_[_0xe992('0x38')](_0x2058ab[_0xe992('0x2f')])?util[_0xe992('0x35')](_0xe992('0x39'),_0x2058ab[_0xe992('0x2c')]):_0x2058ab[_0xe992('0x2f')],'type':'PAUSE','enterAt':moment()[_0xe992('0x35')](_0xe992('0x3a')),'data1':_0x2bf269['body'][_0xe992('0x3b')]||_0xe992('0x3c'),'role':_0x2058ab['role'],'internal':_0x2058ab[_0xe992('0x2e')],'uniqueid':_0x2bf269[_0xe992('0x3d')][_0xe992('0x3e')]||null});});return db['MemberReport']['bulkCreate'](_0x48c4a9,{'individualHooks':!![]});}})[_0xe992('0x25')](function(){if(_0x2058ab){return _0x2058ab['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2bf269[_0xe992('0x3d')]['type']||_0xe992('0x3c'),'lastPauseAt':moment()[_0xe992('0x35')](_0xe992('0x3a'))});}})[_0xe992('0x25')](function(_0x33f2db){_0xc26f4a(_0x33f2db);})[_0xe992('0x1b')](function(_0x2d040f){_0x2c3ea7(_0x224e09[_0xe992('0x16')](0x1f4,_0x2d040f['message']));});});};exports[_0xe992('0x3f')]=function(_0x233dd5){var _0x42b6bc=this;return new Promise(function(_0x48573d,_0x79f138){var _0x51089b;return db['User'][_0xe992('0x40')]({'where':_0x233dd5[_0xe992('0x1e')][_0xe992('0x29')]||{},'attributes':['id',_0xe992('0x2c')]})[_0xe992('0x25')](function(_0x465304){if(_0x465304){_0x51089b=_0x465304;if(_0x233dd5['body'][_0xe992('0x41')]&&!utils[_0xe992('0x42')](_0x233dd5[_0xe992('0x3d')]['channel'])){throw new Error('Unknown\x20channel');}switch(_0x233dd5['body'][_0xe992('0x41')]){case'voice':return db[_0xe992('0x30')]['update']({'paused':0x0},{'where':{'UserId':_0x51089b['id']}})[_0xe992('0x25')](function(){return db[_0xe992('0x32')][_0xe992('0x28')]({'where':{'channel':_0x233dd5[_0xe992('0x3d')][_0xe992('0x41')],'membername':_0x51089b[_0xe992('0x2c')],'type':_0xe992('0x34'),'exitAt':null}});})['then'](function(_0x2baffc){if(_0x2baffc){return _0x2baffc[_0xe992('0x31')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});}return null;})[_0xe992('0x25')](function(){return _0x51089b['update']({'voicePause':![]});});case'mail':case _0xe992('0x43'):case _0xe992('0x44'):case _0xe992('0x45'):case _0xe992('0x46'):case _0xe992('0x47'):return db[_0xe992('0x32')][_0xe992('0x28')]({'where':{'channel':_0x233dd5[_0xe992('0x3d')][_0xe992('0x41')],'membername':_0x51089b[_0xe992('0x2c')],'type':_0xe992('0x34'),'exitAt':null}})[_0xe992('0x25')](function(_0x2b57f7){return _0x2b57f7['update']({'exitAt':moment()[_0xe992('0x35')](_0xe992('0x3a')),'data2':_0xe992('0x48')},{'individualHooks':!![]});})[_0xe992('0x25')](function(){var _0x2e44be={};_[_0xe992('0x49')](_0x2e44be,util[_0xe992('0x35')](_0xe992('0x4a'),_0x233dd5[_0xe992('0x3d')][_0xe992('0x41')],_0xe992('0x4b')),![]);return _0x51089b[_0xe992('0x31')](_0x2e44be);});default:return db[_0xe992('0x30')][_0xe992('0x31')]({'paused':0x0},{'where':{'UserId':_0x51089b['id']}})[_0xe992('0x25')](function(){return db['MemberReport'][_0xe992('0x33')]({'where':{'membername':_0x51089b['name'],'type':_0xe992('0x34'),'exitAt':null}});})[_0xe992('0x25')](function(_0x4a6f16){var _0x130448=[];_0x4a6f16[_0xe992('0x37')](function(_0x565317){_0x130448[_0xe992('0x4c')](_0x565317['update']({'exitAt':moment()['format'](_0xe992('0x3a')),'data2':_0xe992('0x48')}));});return BPromise[_0xe992('0x4d')](_0x130448);})[_0xe992('0x25')](function(){return _0x51089b[_0xe992('0x31')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xe992('0x25')](function(_0x357f28){_0x48573d(_0x357f28);})[_0xe992('0x1b')](function(_0x4240fb){_0x79f138(_0x42b6bc[_0xe992('0x16')](0x1f4,_0x4240fb['message']));});});};exports[_0xe992('0x4e')]=function(_0x39d16f){var _0x2829b5=this;return new Promise(function(_0x5b0b1d,_0x2b8a36){var _0x427b9c;return db[_0xe992('0x1d')][_0xe992('0x40')]({'where':_0x39d16f['options'][_0xe992('0x29')]||{},'attributes':['id','name']})['then'](function(_0x5c5bb8){if(_0x5c5bb8){_0x427b9c=_0x5c5bb8;return db[_0xe992('0x30')]['destroy']({'where':{'membername':_0x427b9c[_0xe992('0x2c')]},'individualHooks':!![]});}})[_0xe992('0x25')](function(){if(_0x427b9c){return db[_0xe992('0x32')]['findAll']({'where':{'membername':_0x427b9c[_0xe992('0x2c')],'exitAt':null}});}})[_0xe992('0x25')](function(_0x59e9a3){if(_0x427b9c){if(_0x59e9a3&&_0x59e9a3[_0xe992('0x4f')]){var _0x213717=[];_0x59e9a3[_0xe992('0x37')](function(_0x5c38f8){_0x213717[_0xe992('0x4c')](_0x5c38f8['update']({'exitAt':moment()[_0xe992('0x35')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe992('0x4d')](_0x213717);}}})['then'](function(){if(_0x427b9c){return _0x427b9c[_0xe992('0x31')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xe992('0x25')](function(_0x26131c){_0x5b0b1d(_0x26131c);})[_0xe992('0x1b')](function(_0x242ec4){_0x2b8a36(_0x2829b5[_0xe992('0x16')](0x1f4,_0x242ec4[_0xe992('0x18')]));});});};exports[_0xe992('0x50')]=function(_0x40097c){var _0x46e482=this;return new Promise(function(_0x4aab26,_0x3552f9){var _0x436f14;var _0x2bec9b;var _0x2e0e51;var _0x53740f;return db[_0xe992('0x1d')][_0xe992('0x40')]({'where':_0x40097c['options'][_0xe992('0x29')]||{},'attributes':['id',_0xe992('0x2c'),_0xe992('0x2d'),_0xe992('0x51'),_0xe992('0x52'),_0xe992('0x2e'),'loginInPause','interface']})[_0xe992('0x25')](function(_0x162bd8){if(_0x162bd8){_0x436f14=_0x162bd8;_0x53740f=_0x40097c['body']['interface']?_0x40097c[_0xe992('0x3d')][_0xe992('0x2f')]:util[_0xe992('0x35')](_0xe992('0x39'),_0x436f14[_0xe992('0x2c')]);return db[_0xe992('0x1d')]['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x436f14['id']}}});}})[_0xe992('0x25')](function(_0x3dc10c){if(_0x3dc10c){_0x2e0e51=_0x3dc10c;return require(_0xe992('0x53'))['getLicense']();}})['then'](function(_0x29ae7c){if(_0x29ae7c&&_0x29ae7c[_0xe992('0x54')]&&_0x2e0e51>=_0x29ae7c['agents']){throw new Error(_0xe992('0x55'));}})[_0xe992('0x25')](function(){if(_0x436f14){return db[_0xe992('0x30')][_0xe992('0x56')]({'where':{'membername':_0x436f14[_0xe992('0x2c')]},'individualHooks':!![]});}})['then'](function(){if(_0x436f14){return _0x436f14[_0xe992('0x57')]({'raw':!![]});}})[_0xe992('0x25')](function(_0x47807b){if(_0x436f14){if(_0x47807b){var _0x517bd8=[];_0x2bec9b=_0x47807b;if(_0x2bec9b['length']){for(var _0x3d73f8=0x0;_0x3d73f8<_0x2bec9b[_0xe992('0x4f')];_0x3d73f8++){_0x517bd8[_0xe992('0x4c')](db[_0xe992('0x30')][_0xe992('0x58')]({'membername':_0x436f14[_0xe992('0x2c')],'UserId':_0x436f14['id'],'queue_name':_0x2bec9b[_0x3d73f8][_0xe992('0x2c')],'VoiceQueueId':_0x2bec9b[_0x3d73f8]['id'],'interface':_0x53740f,'paused':_0x436f14[_0xe992('0x59')]||![],'penalty':_0x2bec9b[_0x3d73f8][_0xe992('0x5a')]||0x0}));}return BPromise[_0xe992('0x4d')](_0x517bd8);}}}})[_0xe992('0x25')](function(){if(_0x436f14){return db[_0xe992('0x32')][_0xe992('0x33')]({'where':{'membername':_0x436f14[_0xe992('0x2c')],'exitAt':null}});}})[_0xe992('0x25')](function(_0xe76a6e){if(_0x436f14){if(_0xe76a6e&&_0xe76a6e['length']){var _0x279335=[];_0xe76a6e[_0xe992('0x37')](function(_0x3fc88e){_0x279335['push'](_0x3fc88e[_0xe992('0x31')]({'exitAt':moment()[_0xe992('0x35')](_0xe992('0x3a'))}));});return BPromise[_0xe992('0x4d')](_0x279335);}}})[_0xe992('0x25')](function(_0x19d0e3){if(_0x436f14){var _0x127eb3=[];var _0x47571d=[];var _0x735627=utils[_0xe992('0x36')]();var _0x55f2d1={'membername':_0x436f14[_0xe992('0x2c')],'interface':_0x53740f,'enterAt':moment()[_0xe992('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x436f14['role'],'internal':_0x436f14[_0xe992('0x2e')]};_0x735627['forEach'](function(_0x3733bb){_0x127eb3[_0xe992('0x4c')](_[_0xe992('0x5b')]({'channel':_0x3733bb,'type':_0xe992('0x5c'),'data1':_0xe992('0x5d'),'data2':_0x53740f},_0x55f2d1));if(_0x436f14[_0xe992('0x59')]){_0x47571d[_0xe992('0x4c')](_[_0xe992('0x5b')]({'channel':_0x3733bb,'type':_0xe992('0x34'),'data1':_0xe992('0x5e')},_0x55f2d1));}});return db[_0xe992('0x32')][_0xe992('0x5f')](_0x127eb3[_0xe992('0x60')](_0x47571d),{'individualHooks':!![]});}})[_0xe992('0x25')](function(){if(_0x436f14){return _0x436f14[_0xe992('0x31')]({'online':!![],'lastLoginAt':moment()[_0xe992('0x35')](_0xe992('0x3a')),'voicePause':_0x436f14[_0xe992('0x59')]||![],'mailPause':_0x436f14[_0xe992('0x59')]||![],'chatPause':_0x436f14['loginInPause']||![],'faxPause':_0x436f14[_0xe992('0x59')]||![],'smsPause':_0x436f14[_0xe992('0x59')]||![],'openchannelPause':_0x436f14[_0xe992('0x59')]||![],'pauseType':_0x436f14['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xe992('0x35')](_0xe992('0x3a')),'interface':_0x53740f});}})['then'](function(_0x2adfbc){_0x4aab26(_0x2adfbc);})[_0xe992('0x1b')](function(_0x123d25){_0x3552f9(_0x46e482['error'](0x1f4,_0x123d25[_0xe992('0x18')]));});});};
\ No newline at end of file
index 451662c..83052dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4515=['register','length','user:','./user.events','save','remove','update','removeListener'];(function(_0x15fb79,_0x1cf1e7){var _0x4bc21a=function(_0x14c2df){while(--_0x14c2df){_0x15fb79['push'](_0x15fb79['shift']());}};_0x4bc21a(++_0x1cf1e7);}(_0x4515,0x143));var _0x5451=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x4515[_0x4565bf];return _0x5610ba;};'use strict';var UserEvents=require(_0x5451('0x0'));var events=[_0x5451('0x1'),_0x5451('0x2'),_0x5451('0x3')];function createListener(_0x1ec07f,_0xd197ac){return function(_0x23b759){_0xd197ac['emit'](_0x1ec07f,_0x23b759);};}function removeListener(_0x3fd0db,_0x55e0dd){return function(){UserEvents[_0x5451('0x4')](_0x3fd0db,_0x55e0dd);};}exports[_0x5451('0x5')]=function(_0x5a6b96){for(var _0x169b5c=0x0,_0x442723=events[_0x5451('0x6')];_0x169b5c<_0x442723;_0x169b5c++){var _0x3473fa=events[_0x169b5c];var _0x13c104=createListener(_0x5451('0x7')+_0x3473fa,_0x5a6b96);UserEvents['on'](_0x3473fa,_0x13c104);}};
\ No newline at end of file
+var _0x467d=['./user.events','save','update','emit','register','length','user:'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x467d,0xfc));var _0xd467=function(_0x2b458f,_0x317d03){_0x2b458f=_0x2b458f-0x0;var _0x4af1e6=_0x467d[_0x2b458f];return _0x4af1e6;};'use strict';var UserEvents=require(_0xd467('0x0'));var events=[_0xd467('0x1'),'remove',_0xd467('0x2')];function createListener(_0x31584d,_0x37820e){return function(_0x2ad7d6){_0x37820e[_0xd467('0x3')](_0x31584d,_0x2ad7d6);};}function removeListener(_0xfef188,_0x256ee1){return function(){UserEvents['removeListener'](_0xfef188,_0x256ee1);};}exports[_0xd467('0x4')]=function(_0x203db9){for(var _0x51bb79=0x0,_0x316da0=events[_0xd467('0x5')];_0x51bb79<_0x316da0;_0x51bb79++){var _0x1b3a92=events[_0x51bb79];var _0x57947c=createListener(_0xd467('0x6')+_0x1b3a92,_0x203db9);UserEvents['on'](_0x1b3a92,_0x57947c);}};
\ No newline at end of file
index c83c22e..6586bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x10a169,_0x5cc213){var _0x24925d=function(_0x1a53bb){while(--_0x1a53bb){_0x10a169['push'](_0x10a169['shift']());}};_0x24925d(++_0x5cc213);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x310a54,_0x212d9a){var _0x4e4caa=function(_0x6baec9){while(--_0x6baec9){_0x310a54['push'](_0x310a54['shift']());}};_0x4e4caa(++_0x212d9a);}(_0x9c44,0x178));var _0x49c4=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x9c44[_0x5f1391];return _0x50ebe3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index 0707f51..d07b404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x138c=['exports','INTEGER'];(function(_0x1cc375,_0x21715b){var _0x32a34f=function(_0x37a6d9){while(--_0x37a6d9){_0x1cc375['push'](_0x1cc375['shift']());}};_0x32a34f(++_0x21715b);}(_0x138c,0x13c));var _0xc138=function(_0x3ab7ae,_0x114dbc){_0x3ab7ae=_0x3ab7ae-0x0;var _0x81935a=_0x138c[_0x3ab7ae];return _0x81935a;};'use strict';var Sequelize=require('sequelize');module[_0xc138('0x0')]={'penalty':{'type':Sequelize[_0xc138('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0d17=['INTEGER','sequelize'];(function(_0xdc420e,_0x10a4d2){var _0x29f8f1=function(_0x5e4a7f){while(--_0x5e4a7f){_0xdc420e['push'](_0xdc420e['shift']());}};_0x29f8f1(++_0x10a4d2);}(_0x0d17,0x1a5));var _0x70d1=function(_0xaf643b,_0x3e6332){_0xaf643b=_0xaf643b-0x0;var _0x175ebc=_0x0d17[_0xaf643b];return _0x175ebc;};'use strict';var Sequelize=require(_0x70d1('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x70d1('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 368551e..83885a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe896=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','UserChatQueue','user_has_chat_queues'];(function(_0x576e35,_0x36fbe4){var _0x2c870c=function(_0x792cdb){while(--_0x792cdb){_0x576e35['push'](_0x576e35['shift']());}};_0x2c870c(++_0x36fbe4);}(_0xe896,0xf2));var _0x6e89=function(_0x3941f7,_0x44cd47){_0x3941f7=_0x3941f7-0x0;var _0x58d03b=_0xe896[_0x3941f7];return _0x58d03b;};'use strict';var _=require('lodash');var util=require(_0x6e89('0x0'));var logger=require(_0x6e89('0x1'))('api');var moment=require(_0x6e89('0x2'));var BPromise=require(_0x6e89('0x3'));var rp=require(_0x6e89('0x4'));var fs=require('fs');var path=require(_0x6e89('0x5'));var rimraf=require(_0x6e89('0x6'));var config=require(_0x6e89('0x7'));var attributes=require('./userChatQueue.attributes');module['exports']=function(_0x51ea49,_0x42fe33){return _0x51ea49[_0x6e89('0x8')](_0x6e89('0x9'),attributes,{'tableName':_0x6e89('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4adf=['./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x4adf,0x139));var _0xf4ad=function(_0x329e3e,_0x119ad2){_0x329e3e=_0x329e3e-0x0;var _0xfa3b5d=_0x4adf[_0x329e3e];return _0xfa3b5d;};'use strict';var _=require(_0xf4ad('0x0'));var util=require(_0xf4ad('0x1'));var logger=require(_0xf4ad('0x2'))(_0xf4ad('0x3'));var moment=require(_0xf4ad('0x4'));var BPromise=require('bluebird');var rp=require(_0xf4ad('0x5'));var fs=require('fs');var path=require(_0xf4ad('0x6'));var rimraf=require(_0xf4ad('0x7'));var config=require(_0xf4ad('0x8'));var attributes=require(_0xf4ad('0x9'));module[_0xf4ad('0xa')]=function(_0x3fa35a,_0x15f312){return _0x3fa35a[_0xf4ad('0xb')](_0xf4ad('0xc'),attributes,{'tableName':_0xf4ad('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 298a59a..d039da8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdf2=['client','http','request','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','jayson/promise'];(function(_0x3da311,_0x2d6e0c){var _0x29f3e8=function(_0x510209){while(--_0x510209){_0x3da311['push'](_0x3da311['shift']());}};_0x29f3e8(++_0x2d6e0c);}(_0xbdf2,0x101));var _0x2bdf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbdf2[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x2bdf('0x0'));var util=require(_0x2bdf('0x1'));var moment=require('moment');var BPromise=require(_0x2bdf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2bdf('0x3'));var db=require(_0x2bdf('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2bdf('0x5'));var config=require('../../config/environment');var jayson=require(_0x2bdf('0x6'));var client=jayson[_0x2bdf('0x7')][_0x2bdf('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x23bfa2,_0x2cc84f,_0x1cd1b6){return new BPromise(function(_0x4d35ec,_0x4dcba8){return client[_0x2bdf('0x9')](_0x23bfa2,_0x1cd1b6)[_0x2bdf('0xa')](function(_0x41fd9b){logger[_0x2bdf('0xb')]('UserChatQueue,\x20%s,\x20%s',_0x2cc84f,_0x2bdf('0xc'));logger[_0x2bdf('0xd')](_0x2bdf('0xe'),_0x2cc84f,_0x2bdf('0xc'),JSON[_0x2bdf('0xf')](_0x41fd9b));if(_0x41fd9b[_0x2bdf('0x10')]){if(_0x41fd9b[_0x2bdf('0x10')][_0x2bdf('0x11')]===0x1f4){logger[_0x2bdf('0x10')](_0x2bdf('0x12'),_0x2cc84f,_0x41fd9b[_0x2bdf('0x10')][_0x2bdf('0x13')]);return _0x4dcba8(_0x41fd9b[_0x2bdf('0x10')]['message']);}logger[_0x2bdf('0x10')](_0x2bdf('0x12'),_0x2cc84f,_0x41fd9b[_0x2bdf('0x10')][_0x2bdf('0x13')]);return _0x4d35ec(_0x41fd9b['error'][_0x2bdf('0x13')]);}else{logger[_0x2bdf('0xb')]('UserChatQueue,\x20%s,\x20%s',_0x2cc84f,_0x2bdf('0xc'));_0x4d35ec(_0x41fd9b[_0x2bdf('0x14')][_0x2bdf('0x13')]);}})[_0x2bdf('0x15')](function(_0x117cf8){logger[_0x2bdf('0x10')](_0x2bdf('0x12'),_0x2cc84f,_0x117cf8);_0x4dcba8(_0x117cf8);});});}
\ No newline at end of file
+var _0xe720=['error','UserChatQueue,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x36ebaa,_0x42802c){var _0x3ea0f1=function(_0x3424ce){while(--_0x3424ce){_0x36ebaa['push'](_0x36ebaa['shift']());}};_0x3ea0f1(++_0x42802c);}(_0xe720,0x7c));var _0x0e72=function(_0x5641db,_0x5d5470){_0x5641db=_0x5641db-0x0;var _0x58a38f=_0xe720[_0x5641db];return _0x58a38f;};'use strict';var _=require('lodash');var util=require(_0x0e72('0x0'));var moment=require(_0x0e72('0x1'));var BPromise=require(_0x0e72('0x2'));var rs=require(_0x0e72('0x3'));var fs=require('fs');var Redis=require(_0x0e72('0x4'));var db=require(_0x0e72('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0e72('0x6'));var config=require(_0x0e72('0x7'));var jayson=require(_0x0e72('0x8'));var client=jayson['client'][_0x0e72('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x52296e,_0x29fd4e,_0x39ded7){return new BPromise(function(_0x2828a9,_0x147e21){return client[_0x0e72('0xa')](_0x52296e,_0x39ded7)['then'](function(_0x29db88){logger[_0x0e72('0xb')]('UserChatQueue,\x20%s,\x20%s',_0x29fd4e,_0x0e72('0xc'));logger[_0x0e72('0xd')](_0x0e72('0xe'),_0x29fd4e,_0x0e72('0xc'),JSON[_0x0e72('0xf')](_0x29db88));if(_0x29db88['error']){if(_0x29db88[_0x0e72('0x10')]['code']===0x1f4){logger[_0x0e72('0x10')](_0x0e72('0x11'),_0x29fd4e,_0x29db88[_0x0e72('0x10')][_0x0e72('0x12')]);return _0x147e21(_0x29db88[_0x0e72('0x10')][_0x0e72('0x12')]);}logger[_0x0e72('0x10')](_0x0e72('0x11'),_0x29fd4e,_0x29db88[_0x0e72('0x10')][_0x0e72('0x12')]);return _0x2828a9(_0x29db88[_0x0e72('0x10')][_0x0e72('0x12')]);}else{logger[_0x0e72('0xb')]('UserChatQueue,\x20%s,\x20%s',_0x29fd4e,_0x0e72('0xc'));_0x2828a9(_0x29db88[_0x0e72('0x13')]['message']);}})['catch'](function(_0x14793a){logger[_0x0e72('0x10')](_0x0e72('0x11'),_0x29fd4e,_0x14793a);_0x147e21(_0x14793a);});});}
\ No newline at end of file
index 21c70d0..2d03a18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x10778c,_0x461571){var _0x38d5f2=function(_0x3afba0){while(--_0x3afba0){_0x10778c['push'](_0x10778c['shift']());}};_0x38d5f2(++_0x461571);}(_0x9c44,0x178));var _0x49c4=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x9c44[_0x13e741];return _0x3f8bb3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x454e6d,_0x1e1f38){var _0x4bc294=function(_0x2c803a){while(--_0x2c803a){_0x454e6d['push'](_0x454e6d['shift']());}};_0x4bc294(++_0x1e1f38);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 3aaae36..5bf5662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c56=['exports','INTEGER','sequelize'];(function(_0x15cf29,_0x4cf567){var _0x16d6e8=function(_0x2cf5e7){while(--_0x2cf5e7){_0x15cf29['push'](_0x15cf29['shift']());}};_0x16d6e8(++_0x4cf567);}(_0x7c56,0xdd));var _0x67c5=function(_0x1b0b47,_0x3d5ccf){_0x1b0b47=_0x1b0b47-0x0;var _0x184706=_0x7c56[_0x1b0b47];return _0x184706;};'use strict';var Sequelize=require(_0x67c5('0x0'));module[_0x67c5('0x1')]={'penalty':{'type':Sequelize[_0x67c5('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x67c5('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5f36=['exports','INTEGER','STRING'];(function(_0x254081,_0x20731a){var _0x5d1e2a=function(_0x597854){while(--_0x597854){_0x254081['push'](_0x254081['shift']());}};_0x5d1e2a(++_0x20731a);}(_0x5f36,0x11d));var _0x65f3=function(_0x3091ca,_0x33e358){_0x3091ca=_0x3091ca-0x0;var _0x3fd7cf=_0x5f36[_0x3091ca];return _0x3fd7cf;};'use strict';var Sequelize=require('sequelize');module[_0x65f3('0x0')]={'penalty':{'type':Sequelize[_0x65f3('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x65f3('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x65f3('0x2')]}};
\ No newline at end of file
index f2ea860..4da3d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcebf=['user_has_fax_queues','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./userFaxQueue.attributes','define','UserFaxQueue'];(function(_0x1fc122,_0x5e2c17){var _0xa2cb13=function(_0x263b13){while(--_0x263b13){_0x1fc122['push'](_0x1fc122['shift']());}};_0xa2cb13(++_0x5e2c17);}(_0xcebf,0xcd));var _0xfceb=function(_0x332c9d,_0x134f06){_0x332c9d=_0x332c9d-0x0;var _0x27d7a7=_0xcebf[_0x332c9d];return _0x27d7a7;};'use strict';var _=require(_0xfceb('0x0'));var util=require(_0xfceb('0x1'));var logger=require(_0xfceb('0x2'))(_0xfceb('0x3'));var moment=require(_0xfceb('0x4'));var BPromise=require(_0xfceb('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfceb('0x6'));var config=require(_0xfceb('0x7'));var attributes=require(_0xfceb('0x8'));module['exports']=function(_0x51c078,_0xdb60fd){return _0x51c078[_0xfceb('0x9')](_0xfceb('0xa'),attributes,{'tableName':_0xfceb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed35=['path','./userFaxQueue.attributes','exports','user_has_fax_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x110e52,_0x329b08){var _0xf70fd4=function(_0x1553d4){while(--_0x1553d4){_0x110e52['push'](_0x110e52['shift']());}};_0xf70fd4(++_0x329b08);}(_0xed35,0x126));var _0x5ed3=function(_0x5cef4d,_0x11d5bf){_0x5cef4d=_0x5cef4d-0x0;var _0x278779=_0xed35[_0x5cef4d];return _0x278779;};'use strict';var _=require(_0x5ed3('0x0'));var util=require(_0x5ed3('0x1'));var logger=require(_0x5ed3('0x2'))(_0x5ed3('0x3'));var moment=require(_0x5ed3('0x4'));var BPromise=require(_0x5ed3('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5ed3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5ed3('0x7'));module[_0x5ed3('0x8')]=function(_0x46e770,_0x4073ac){return _0x46e770['define']('UserFaxQueue',attributes,{'tableName':_0x5ed3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fdb7895..55f86d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd8e=['error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x294008,_0x488934){var _0x45bd12=function(_0x3baf57){while(--_0x3baf57){_0x294008['push'](_0x294008['shift']());}};_0x45bd12(++_0x488934);}(_0xbd8e,0x82));var _0xebd8=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xbd8e[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0xebd8('0x0'));var util=require(_0xebd8('0x1'));var moment=require('moment');var BPromise=require(_0xebd8('0x2'));var rs=require(_0xebd8('0x3'));var fs=require('fs');var Redis=require(_0xebd8('0x4'));var db=require(_0xebd8('0x5'))['db'];var utils=require(_0xebd8('0x6'));var logger=require(_0xebd8('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xebd8('0x8'));var client=jayson[_0xebd8('0x9')][_0xebd8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5225b0,_0x43961e,_0x3c8c06){return new BPromise(function(_0x417ee3,_0x448bbe){return client[_0xebd8('0xb')](_0x5225b0,_0x3c8c06)[_0xebd8('0xc')](function(_0x39caf9){logger[_0xebd8('0xd')](_0xebd8('0xe'),_0x43961e,'request\x20sent');logger['debug']('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x43961e,_0xebd8('0xf'),JSON[_0xebd8('0x10')](_0x39caf9));if(_0x39caf9[_0xebd8('0x11')]){if(_0x39caf9['error'][_0xebd8('0x12')]===0x1f4){logger[_0xebd8('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x43961e,_0x39caf9[_0xebd8('0x11')][_0xebd8('0x13')]);return _0x448bbe(_0x39caf9['error'][_0xebd8('0x13')]);}logger[_0xebd8('0x11')](_0xebd8('0xe'),_0x43961e,_0x39caf9[_0xebd8('0x11')][_0xebd8('0x13')]);return _0x417ee3(_0x39caf9[_0xebd8('0x11')][_0xebd8('0x13')]);}else{logger[_0xebd8('0xd')](_0xebd8('0xe'),_0x43961e,'request\x20sent');_0x417ee3(_0x39caf9['result'][_0xebd8('0x13')]);}})[_0xebd8('0x14')](function(_0x4cd9de){logger[_0xebd8('0x11')]('UserFaxQueue,\x20%s,\x20%s',_0x43961e,_0x4cd9de);_0x448bbe(_0x4cd9de);});});}
\ No newline at end of file
+var _0xadea=['../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','UserFaxQueue,\x20%s,\x20%s','result','catch','lodash','bluebird','randomstring'];(function(_0x513155,_0x170bd9){var _0x8cde82=function(_0xe425eb){while(--_0xe425eb){_0x513155['push'](_0x513155['shift']());}};_0x8cde82(++_0x170bd9);}(_0xadea,0x1b6));var _0xaade=function(_0x43fda2,_0x1c5662){_0x43fda2=_0x43fda2-0x0;var _0xa492a2=_0xadea[_0x43fda2];return _0xa492a2;};'use strict';var _=require(_0xaade('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xaade('0x1'));var rs=require(_0xaade('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xaade('0x3'));var logger=require('../../config/logger')(_0xaade('0x4'));var config=require(_0xaade('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xaade('0x6')][_0xaade('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x577845,_0x100a63,_0x1b0ec1){return new BPromise(function(_0x5ebb1b,_0x593e99){return client[_0xaade('0x8')](_0x577845,_0x1b0ec1)[_0xaade('0x9')](function(_0x2dc688){logger[_0xaade('0xa')]('UserFaxQueue,\x20%s,\x20%s',_0x100a63,_0xaade('0xb'));logger[_0xaade('0xc')](_0xaade('0xd'),_0x100a63,_0xaade('0xb'),JSON[_0xaade('0xe')](_0x2dc688));if(_0x2dc688['error']){if(_0x2dc688['error'][_0xaade('0xf')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x100a63,_0x2dc688[_0xaade('0x10')][_0xaade('0x11')]);return _0x593e99(_0x2dc688[_0xaade('0x10')]['message']);}logger['error'](_0xaade('0x12'),_0x100a63,_0x2dc688[_0xaade('0x10')]['message']);return _0x5ebb1b(_0x2dc688[_0xaade('0x10')][_0xaade('0x11')]);}else{logger[_0xaade('0xa')]('UserFaxQueue,\x20%s,\x20%s',_0x100a63,_0xaade('0xb'));_0x5ebb1b(_0x2dc688[_0xaade('0x13')][_0xaade('0x11')]);}})[_0xaade('0x14')](function(_0x358cdd){logger[_0xaade('0x10')](_0xaade('0x12'),_0x100a63,_0x358cdd);_0x593e99(_0x358cdd);});});}
\ No newline at end of file
index be2c6cc..c4799f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x28ad8c,_0x4f8487){var _0xeb0141=function(_0x102540){while(--_0x102540){_0x28ad8c['push'](_0x28ad8c['shift']());}};_0xeb0141(++_0x4f8487);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x561b57,_0x133d14){var _0x51dc65=function(_0x27b672){while(--_0x27b672){_0x561b57['push'](_0x561b57['shift']());}};_0x51dc65(++_0x133d14);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 48e5641..0a56108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ed3=['INTEGER','sequelize','exports'];(function(_0x12fd49,_0x368a8a){var _0x50e5c7=function(_0x2b273e){while(--_0x2b273e){_0x12fd49['push'](_0x12fd49['shift']());}};_0x50e5c7(++_0x368a8a);}(_0x0ed3,0x91));var _0x30ed=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0ed3[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x30ed('0x0'));module[_0x30ed('0x1')]={'penalty':{'type':Sequelize[_0x30ed('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1529=['exports','INTEGER'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x1529,0x1d4));var _0x9152=function(_0x1e1f17,_0x4bd574){_0x1e1f17=_0x1e1f17-0x0;var _0x465b52=_0x1529[_0x1e1f17];return _0x465b52;};'use strict';var Sequelize=require('sequelize');module[_0x9152('0x0')]={'penalty':{'type':Sequelize[_0x9152('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 7593e9f..afc1bfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ee1=['exports','define','user_has_mail_queues','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./userMailQueue.attributes'];(function(_0x53d2d1,_0x498ec5){var _0x3ff79e=function(_0x3b328c){while(--_0x3b328c){_0x53d2d1['push'](_0x53d2d1['shift']());}};_0x3ff79e(++_0x498ec5);}(_0x6ee1,0xdf));var _0x16ee=function(_0xf84870,_0x4dc38f){_0xf84870=_0xf84870-0x0;var _0x4541a4=_0x6ee1[_0xf84870];return _0x4541a4;};'use strict';var _=require('lodash');var util=require(_0x16ee('0x0'));var logger=require('../../config/logger')(_0x16ee('0x1'));var moment=require(_0x16ee('0x2'));var BPromise=require(_0x16ee('0x3'));var rp=require(_0x16ee('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x16ee('0x5'));var config=require(_0x16ee('0x6'));var attributes=require(_0x16ee('0x7'));module[_0x16ee('0x8')]=function(_0x4ff10e,_0x579614){return _0x4ff10e[_0x16ee('0x9')]('UserMailQueue',attributes,{'tableName':_0x16ee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x73de=['../../config/logger','api','bluebird','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','lodash','util'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x73de,0x19e));var _0xe73d=function(_0x200661,_0x2a73b7){_0x200661=_0x200661-0x0;var _0x3a51a5=_0x73de[_0x200661];return _0x3a51a5;};'use strict';var _=require(_0xe73d('0x0'));var util=require(_0xe73d('0x1'));var logger=require(_0xe73d('0x2'))(_0xe73d('0x3'));var moment=require('moment');var BPromise=require(_0xe73d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe73d('0x5'));var rimraf=require(_0xe73d('0x6'));var config=require(_0xe73d('0x7'));var attributes=require(_0xe73d('0x8'));module[_0xe73d('0x9')]=function(_0xbe333d,_0x338e2e){return _0xbe333d[_0xe73d('0xa')](_0xe73d('0xb'),attributes,{'tableName':_0xe73d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e80c4b8..eb1b15d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserMailQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x008c,0x188));var _0xc008=function(_0x21f19a,_0x12adef){_0x21f19a=_0x21f19a-0x0;var _0x14edb2=_0x008c[_0x21f19a];return _0x14edb2;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
+var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x338a26,_0xb9ef20){var _0x25cfc8=function(_0x267c3f){while(--_0x267c3f){_0x338a26['push'](_0x338a26['shift']());}};_0x25cfc8(++_0xb9ef20);}(_0x00bb,0x1d8));var _0xb00b=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x00bb[_0x24237f];return _0x48298e;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});}
\ No newline at end of file
index 65f83de..99ce19a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e4a=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','sendUserNotification'];(function(_0x2e0c15,_0xffc033){var _0x3f2e0c=function(_0x1e6563){while(--_0x1e6563){_0x2e0c15['push'](_0x2e0c15['shift']());}};_0x3f2e0c(++_0xffc033);}(_0x1e4a,0x1a5));var _0xa1e4=function(_0x4cae4a,_0x25396a){_0x4cae4a=_0x4cae4a-0x0;var _0x5c7e62=_0x1e4a[_0x4cae4a];return _0x5c7e62;};'use strict';var multer=require(_0xa1e4('0x0'));var util=require(_0xa1e4('0x1'));var path=require(_0xa1e4('0x2'));var timeout=require(_0xa1e4('0x3'));var express=require(_0xa1e4('0x4'));var router=express['Router']();var fs_extra=require(_0xa1e4('0x5'));var auth=require(_0xa1e4('0x6'));var interaction=require(_0xa1e4('0x7'));var config=require(_0xa1e4('0x8'));var controller=require(_0xa1e4('0x9'));router['post']('/',auth['isAuthenticated'](),controller[_0xa1e4('0xa')]);module[_0xa1e4('0xb')]=router;
\ No newline at end of file
+var _0x242b=['multer','util','connect-timeout','Router','fs-extra','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports'];(function(_0x4f1e33,_0x4c71fd){var _0xbe7ca5=function(_0x34bd4b){while(--_0x34bd4b){_0x4f1e33['push'](_0x4f1e33['shift']());}};_0xbe7ca5(++_0x4c71fd);}(_0x242b,0x13f));var _0xb242=function(_0x3bfe5e,_0x27c1d7){_0x3bfe5e=_0x3bfe5e-0x0;var _0x55273e=_0x242b[_0x3bfe5e];return _0x55273e;};'use strict';var multer=require(_0xb242('0x0'));var util=require(_0xb242('0x1'));var path=require('path');var timeout=require(_0xb242('0x2'));var express=require('express');var router=express[_0xb242('0x3')]();var fs_extra=require(_0xb242('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb242('0x5'));var controller=require(_0xb242('0x6'));router[_0xb242('0x7')]('/',auth[_0xb242('0x8')](),controller[_0xb242('0x9')]);module[_0xb242('0xa')]=router;
\ No newline at end of file
index 65b36fe..57a5e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x494c=['sequelize','exports','STRING','TEXT','BOOLEAN'];(function(_0x594ece,_0x2a1f27){var _0x471bc4=function(_0x31941c){while(--_0x31941c){_0x594ece['push'](_0x594ece['shift']());}};_0x471bc4(++_0x2a1f27);}(_0x494c,0x13b));var _0xc494=function(_0x428ebf,_0x266140){_0x428ebf=_0x428ebf-0x0;var _0x7e0910=_0x494c[_0x428ebf];return _0x7e0910;};'use strict';var Sequelize=require(_0xc494('0x0'));module[_0xc494('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0xc494('0x2')]},'recipientsId':{'type':Sequelize[_0xc494('0x3')]},'recipientsDescription':{'type':Sequelize[_0xc494('0x2')]},'beep':{'type':Sequelize[_0xc494('0x4')]}};
\ No newline at end of file
+var _0x8365=['STRING','TEXT','BOOLEAN','sequelize','exports'];(function(_0x5a41cc,_0x3a3ca2){var _0x5c7785=function(_0x239e89){while(--_0x239e89){_0x5a41cc['push'](_0x5a41cc['shift']());}};_0x5c7785(++_0x3a3ca2);}(_0x8365,0x1a7));var _0x5836=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0x8365[_0x456fb1];return _0x4083d6;};'use strict';var Sequelize=require(_0x5836('0x0'));module[_0x5836('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x5836('0x2')]},'recipientsId':{'type':Sequelize[_0x5836('0x3')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0x5836('0x4')]}};
\ No newline at end of file
index 1a33654..9a67a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c3=['user','recipientsId','join','transaction','UserNotification','forEach','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','startCase','toLowerCase','User','union','ids','queue','Queue','all','flatten','getAgents','map','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','status','end','json','offset','undefined','limit','count','set','apply','reject','then','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','voicequeue','whatsappqueue','team','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep'];(function(_0x5f7d79,_0x546143){var _0x577319=function(_0x217aac){while(--_0x217aac){_0x5f7d79['push'](_0x5f7d79['shift']());}};_0x577319(++_0x546143);}(_0xd1c3,0xd9));var _0x3d1c=function(_0x281d4e,_0x19eafb){_0x281d4e=_0x281d4e-0x0;var _0x36d53b=_0xd1c3[_0x281d4e];return _0x36d53b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d1c('0x0'));var zipdir=require(_0x3d1c('0x1'));var jsonpatch=require(_0x3d1c('0x2'));var rp=require('request-promise');var moment=require(_0x3d1c('0x3'));var BPromise=require(_0x3d1c('0x4'));var Mustache=require(_0x3d1c('0x5'));var util=require(_0x3d1c('0x6'));var path=require(_0x3d1c('0x7'));var sox=require('sox');var csv=require(_0x3d1c('0x8'));var ejs=require(_0x3d1c('0x9'));var fs=require('fs');var fs_extra=require(_0x3d1c('0xa'));var _=require('lodash');var squel=require(_0x3d1c('0xb'));var crypto=require(_0x3d1c('0xc'));var jsforce=require(_0x3d1c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3d1c('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3d1c('0xf'));var qs=require(_0x3d1c('0x10'));var as=require(_0x3d1c('0x11'));var hardwareService=require(_0x3d1c('0x12'));var logger=require(_0x3d1c('0x13'))(_0x3d1c('0x14'));var utils=require(_0x3d1c('0x15'));var config=require(_0x3d1c('0x16'));var licenseUtil=require(_0x3d1c('0x17'));var db=require(_0x3d1c('0x18'))['db'];config[_0x3d1c('0x19')]=_[_0x3d1c('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3d1c('0x1b'))(new Redis(config[_0x3d1c('0x19')]));require('./userNotification.socket')['register'](socket);function respondWithStatusCode(_0x5d5312,_0x581282){_0x581282=_0x581282||0xcc;return function(_0x21f9ab){if(_0x21f9ab){return _0x5d5312['sendStatus'](_0x581282);}return _0x5d5312[_0x3d1c('0x1c')](_0x581282)[_0x3d1c('0x1d')]();};}function respondWithResult(_0x264ffb,_0x5a7e4c){_0x5a7e4c=_0x5a7e4c||0xc8;return function(_0x234fab){if(_0x234fab){return _0x264ffb[_0x3d1c('0x1c')](_0x5a7e4c)[_0x3d1c('0x1e')](_0x234fab);}};}function respondWithFilteredResult(_0x459df1,_0x2e6510){return function(_0x275971){if(_0x275971){var _0x4daaf1=typeof _0x2e6510[_0x3d1c('0x1f')]===_0x3d1c('0x20')&&typeof _0x2e6510[_0x3d1c('0x21')]==='undefined';var _0x254d92=_0x275971[_0x3d1c('0x22')];var _0x1989eb=_0x4daaf1?0x0:_0x2e6510[_0x3d1c('0x1f')];var _0x2cb3a3=_0x4daaf1?_0x275971['count']:_0x2e6510[_0x3d1c('0x1f')]+_0x2e6510[_0x3d1c('0x21')];var _0x348a23;if(_0x2cb3a3>=_0x254d92){_0x2cb3a3=_0x254d92;_0x348a23=0xc8;}else{_0x348a23=0xce;}_0x459df1[_0x3d1c('0x1c')](_0x348a23);return _0x459df1[_0x3d1c('0x23')]('Content-Range',_0x1989eb+'-'+_0x2cb3a3+'/'+_0x254d92)[_0x3d1c('0x1e')](_0x275971);}return null;};}function patchUpdates(_0x2286e6){return function(_0x1242c8){try{jsonpatch[_0x3d1c('0x24')](_0x1242c8,_0x2286e6,!![]);}catch(_0x383dee){return BPromise[_0x3d1c('0x25')](_0x383dee);}return _0x1242c8['save']();};}function saveUpdates(_0x440a90,_0x52e616){return function(_0x207fad){if(_0x207fad){return _0x207fad['update'](_0x440a90)[_0x3d1c('0x26')](function(_0x5735e1){return _0x5735e1;});}return null;};}function removeEntity(_0x1937db,_0xd1bca1){return function(_0x5e9bba){if(_0x5e9bba){return _0x5e9bba['destroy']()[_0x3d1c('0x26')](function(){_0x1937db['status'](0xcc)[_0x3d1c('0x1d')]();});}};}function handleEntityNotFound(_0x1779fa,_0x287d17){return function(_0x4a8121){if(!_0x4a8121){_0x1779fa['sendStatus'](0x194);}return _0x4a8121;};}function handleError(_0x5f5b53,_0x496d83){_0x496d83=_0x496d83||0x1f4;return function(_0x1d4a76){logger[_0x3d1c('0x27')](_0x1d4a76[_0x3d1c('0x28')]);if(_0x1d4a76[_0x3d1c('0x29')]){delete _0x1d4a76[_0x3d1c('0x29')];}_0x5f5b53['status'](_0x496d83)[_0x3d1c('0x2a')](_0x1d4a76);};}exports[_0x3d1c('0x2b')]=function(_0xc7a4a8,_0x24c877,_0x9677e){if(!_0xc7a4a8[_0x3d1c('0x2c')][_0x3d1c('0x2d')](_0x3d1c('0x2e'))&&!_0xc7a4a8[_0x3d1c('0x2c')][_0x3d1c('0x2d')](_0x3d1c('0x2f'))){throw new db[(_0x3d1c('0x30'))][(_0x3d1c('0x31'))](_0x3d1c('0x32'));}else{if(_0xc7a4a8[_0x3d1c('0x2c')]['hasOwnProperty']('TemplateId')&&!_0xc7a4a8['body'][_0x3d1c('0x2d')](_0x3d1c('0x33'))){throw new db[(_0x3d1c('0x30'))][(_0x3d1c('0x31'))](_0x3d1c('0x34'));}if(!_0xc7a4a8[_0x3d1c('0x2c')][_0x3d1c('0x2d')](_0x3d1c('0x35'))){throw new db['Sequelize']['ValidationError']('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x5b0d4c=JSON[_0x3d1c('0x36')](_0xc7a4a8[_0x3d1c('0x2c')]['recipients']);}catch(_0x5bd2a5){logger['error'](_0x5bd2a5);throw new db['Sequelize'][(_0x3d1c('0x31'))](_0x3d1c('0x37'));}var _0x29d451=[_0x3d1c('0x38'),_0x3d1c('0x39'),_0x3d1c('0x3a'),_0x3d1c('0x3b'),'smsqueue',_0x3d1c('0x3c'),_0x3d1c('0x3d'),_0x3d1c('0x3e'),'user'];if(_['some'](_0x5b0d4c,function(_0x3b51b1){return!_[_0x3d1c('0x3f')](_0x29d451,_0x3b51b1[_0x3d1c('0x40')]['toLowerCase']());})){throw new db[(_0x3d1c('0x30'))]['ValidationError'](_0x3d1c('0x41'));}}}var _0x4ab4d4={};_0x4ab4d4['senderName']=_0xc7a4a8[_0x3d1c('0x2c')]['hasOwnProperty']('senderName')?_0xc7a4a8[_0x3d1c('0x2c')][_0x3d1c('0x42')]:_0xc7a4a8['user'][_0x3d1c('0x43')];_0x4ab4d4[_0x3d1c('0x44')]=_[_0x3d1c('0x45')](_0xc7a4a8[_0x3d1c('0x2c')][_0x3d1c('0x44')])?null:_0xc7a4a8[_0x3d1c('0x2c')][_0x3d1c('0x44')];_0x4ab4d4['beep']=_0xc7a4a8['body'][_0x3d1c('0x46')]||![];_0x4ab4d4['SenderId']=_0xc7a4a8[_0x3d1c('0x47')]['id'];return getContent(_0xc7a4a8[_0x3d1c('0x2c')])['then'](function(_0x39beb3){_0x4ab4d4[_0x3d1c('0x2c')]=_0x39beb3;return getRecipients(_0x5b0d4c);})[_0x3d1c('0x26')](function(_0xde7148){_0x4ab4d4[_0x3d1c('0x48')]=_['sortBy'](_0xde7148)[_0x3d1c('0x49')](',');return db['sequelize'][_0x3d1c('0x4a')](function(_0x44a9fe){return db[_0x3d1c('0x4b')]['create'](_0x4ab4d4,{'raw':!![],'transaction':_0x44a9fe})[_0x3d1c('0x26')](function(_0x1a7434){var _0x4b4742={'sender':_0x4ab4d4[_0x3d1c('0x42')],'description':_0x4ab4d4[_0x3d1c('0x44')],'content':_0x4ab4d4[_0x3d1c('0x2c')],'beep':_0x4ab4d4[_0x3d1c('0x46')]};_0xde7148[_0x3d1c('0x4c')](function(_0xd50350){_0x4b4742['recipient']=_0xd50350;socket[_0x3d1c('0x4d')](_0x3d1c('0x4e'),_0x4b4742);});return _0x1a7434;});});})[_0x3d1c('0x26')](respondWithResult(_0x24c877,0xc9))[_0x3d1c('0x4f')](handleError(_0x24c877,null));};function getContent(_0x240087){return new BPromise(function(_0x51c336,_0x4adb0e){if(_0x240087[_0x3d1c('0x2e')]){_0x51c336(_0x240087['text']);return;}return db[_0x3d1c('0x50')][_0x3d1c('0x51')]({'attributes':[_0x3d1c('0x52')],'where':{'id':_0x240087['TemplateId']},'raw':!![]})[_0x3d1c('0x26')](function(_0x466420){if(!_0x466420)throw new db[(_0x3d1c('0x30'))][(_0x3d1c('0x31'))](_0x3d1c('0x53'));var _0x305fab=Mustache[_0x3d1c('0x54')](_0x466420[_0x3d1c('0x52')],_0x240087[_0x3d1c('0x33')]);_0x51c336(_0x305fab);})[_0x3d1c('0x4f')](function(_0x16daab){_0x4adb0e(_0x16daab);});});}function getRecipients(_0x595eb5){return new BPromise(function(_0x4a33d6,_0xc6ef63){var _0x3d69fb=[];var _0x16f0ad=[];_0x595eb5['forEach'](function(_0x815f2a){var _0x3e16bc=_[_0x3d1c('0x55')](_0x815f2a['model'][_0x3d1c('0x56')]());if(_0x3e16bc===_0x3d1c('0x57')){_0x3d69fb=_[_0x3d1c('0x58')](_0x3d69fb,_0x815f2a[_0x3d1c('0x59')]);}else{if(_['includes'](_0x3e16bc,'queue'))_0x3e16bc=_0x3e16bc['replace'](_0x3d1c('0x5a'),_0x3d1c('0x5b'));_0x815f2a[_0x3d1c('0x59')][_0x3d1c('0x4c')](function(_0x46b380){_0x16f0ad['push'](getAgents(_0x3e16bc,_0x46b380));});}});return BPromise[_0x3d1c('0x5c')](_0x16f0ad)[_0x3d1c('0x26')](function(_0x90b110){_0x3d69fb=_[_0x3d1c('0x58')](_0x3d69fb,_[_0x3d1c('0x5d')](_0x90b110));_0x4a33d6(_0x3d69fb);})['catch'](function(_0x362e53){_0xc6ef63(_0x362e53);});});}function getAgents(_0x3776bf,_0x3fd822){return new BPromise(function(_0x44324f,_0x45353f){return db[_0x3776bf][_0x3d1c('0x51')]({'where':{'id':_0x3fd822}})[_0x3d1c('0x26')](function(_0x181200){return _0x181200[_0x3d1c('0x5e')]({'attributes':['id'],'raw':!![]})['then'](function(_0x3d653c){var _0x578042=_[_0x3d1c('0x5f')](_0x3d653c,'id');_0x44324f(_0x578042);});})[_0x3d1c('0x4f')](function(_0x8180da){_0x45353f(_0x8180da);});});}
\ No newline at end of file
+var _0x2a08=['getAgents','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./userNotification.socket','sendStatus','end','status','undefined','limit','count','offset','Content-Range','apply','save','update','then','error','stack','name','send','sendUserNotification','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','body','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','recipientsDescription','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create','forEach','recipient','emit','userNotification:send','catch','text','Template','render','html','view','startCase','model','User','union','ids','queue','replace','Queue','push','flatten'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2a08,0x18d));var _0x82a0=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x2a08[_0x5d4607];return _0x5e4a86;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x82a0('0x0'));var zipdir=require(_0x82a0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x82a0('0x2'));var moment=require('moment');var BPromise=require(_0x82a0('0x3'));var Mustache=require(_0x82a0('0x4'));var util=require('util');var path=require(_0x82a0('0x5'));var sox=require(_0x82a0('0x6'));var csv=require(_0x82a0('0x7'));var ejs=require(_0x82a0('0x8'));var fs=require('fs');var fs_extra=require(_0x82a0('0x9'));var _=require(_0x82a0('0xa'));var squel=require(_0x82a0('0xb'));var crypto=require('crypto');var jsforce=require(_0x82a0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x82a0('0x7'));var querystring=require(_0x82a0('0xd'));var Papa=require(_0x82a0('0xe'));var Redis=require('ioredis');var authService=require(_0x82a0('0xf'));var qs=require(_0x82a0('0x10'));var as=require(_0x82a0('0x11'));var hardwareService=require(_0x82a0('0x12'));var logger=require(_0x82a0('0x13'))(_0x82a0('0x14'));var utils=require(_0x82a0('0x15'));var config=require(_0x82a0('0x16'));var licenseUtil=require(_0x82a0('0x17'));var db=require(_0x82a0('0x18'))['db'];config[_0x82a0('0x19')]=_['defaults'](config[_0x82a0('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x82a0('0x1a'))(new Redis(config[_0x82a0('0x19')]));require(_0x82a0('0x1b'))['register'](socket);function respondWithStatusCode(_0x28b4fb,_0x5c92ae){_0x5c92ae=_0x5c92ae||0xcc;return function(_0x47d1fb){if(_0x47d1fb){return _0x28b4fb[_0x82a0('0x1c')](_0x5c92ae);}return _0x28b4fb['status'](_0x5c92ae)[_0x82a0('0x1d')]();};}function respondWithResult(_0x4a4842,_0x42b971){_0x42b971=_0x42b971||0xc8;return function(_0x4d4df2){if(_0x4d4df2){return _0x4a4842[_0x82a0('0x1e')](_0x42b971)['json'](_0x4d4df2);}};}function respondWithFilteredResult(_0x138d9f,_0x4163fd){return function(_0x5727dd){if(_0x5727dd){var _0x283061=typeof _0x4163fd['offset']===_0x82a0('0x1f')&&typeof _0x4163fd[_0x82a0('0x20')]===_0x82a0('0x1f');var _0x25b938=_0x5727dd[_0x82a0('0x21')];var _0x4e2383=_0x283061?0x0:_0x4163fd[_0x82a0('0x22')];var _0x318da2=_0x283061?_0x5727dd[_0x82a0('0x21')]:_0x4163fd[_0x82a0('0x22')]+_0x4163fd[_0x82a0('0x20')];var _0x4da353;if(_0x318da2>=_0x25b938){_0x318da2=_0x25b938;_0x4da353=0xc8;}else{_0x4da353=0xce;}_0x138d9f[_0x82a0('0x1e')](_0x4da353);return _0x138d9f['set'](_0x82a0('0x23'),_0x4e2383+'-'+_0x318da2+'/'+_0x25b938)['json'](_0x5727dd);}return null;};}function patchUpdates(_0x37ff42){return function(_0x2e17b3){try{jsonpatch[_0x82a0('0x24')](_0x2e17b3,_0x37ff42,!![]);}catch(_0x10d7f4){return BPromise['reject'](_0x10d7f4);}return _0x2e17b3[_0x82a0('0x25')]();};}function saveUpdates(_0x1a1c83,_0x5ade0d){return function(_0x3b2c8b){if(_0x3b2c8b){return _0x3b2c8b[_0x82a0('0x26')](_0x1a1c83)['then'](function(_0x30a3a2){return _0x30a3a2;});}return null;};}function removeEntity(_0x342896,_0x340090){return function(_0x37188f){if(_0x37188f){return _0x37188f['destroy']()[_0x82a0('0x27')](function(){_0x342896[_0x82a0('0x1e')](0xcc)[_0x82a0('0x1d')]();});}};}function handleEntityNotFound(_0x408c0a,_0x4bdf1c){return function(_0x5c6c0a){if(!_0x5c6c0a){_0x408c0a[_0x82a0('0x1c')](0x194);}return _0x5c6c0a;};}function handleError(_0x47cdc5,_0x26ccc4){_0x26ccc4=_0x26ccc4||0x1f4;return function(_0x2c4a17){logger[_0x82a0('0x28')](_0x2c4a17[_0x82a0('0x29')]);if(_0x2c4a17['name']){delete _0x2c4a17[_0x82a0('0x2a')];}_0x47cdc5[_0x82a0('0x1e')](_0x26ccc4)[_0x82a0('0x2b')](_0x2c4a17);};}exports[_0x82a0('0x2c')]=function(_0x4ee493,_0x448a77,_0xd268df){if(!_0x4ee493['body'][_0x82a0('0x2d')]('text')&&!_0x4ee493['body'][_0x82a0('0x2d')](_0x82a0('0x2e'))){throw new db[(_0x82a0('0x2f'))][(_0x82a0('0x30'))](_0x82a0('0x31'));}else{if(_0x4ee493['body'][_0x82a0('0x2d')](_0x82a0('0x2e'))&&!_0x4ee493[_0x82a0('0x32')]['hasOwnProperty']('view')){throw new db[(_0x82a0('0x2f'))][(_0x82a0('0x30'))](_0x82a0('0x33'));}if(!_0x4ee493['body']['hasOwnProperty'](_0x82a0('0x34'))){throw new db[(_0x82a0('0x2f'))][(_0x82a0('0x30'))](_0x82a0('0x35'));}else{try{var _0x3b75d6=JSON[_0x82a0('0x36')](_0x4ee493[_0x82a0('0x32')][_0x82a0('0x34')]);}catch(_0x4620a7){logger[_0x82a0('0x28')](_0x4620a7);throw new db['Sequelize'][(_0x82a0('0x30'))](_0x82a0('0x37'));}var _0x3b173e=[_0x82a0('0x38'),_0x82a0('0x39'),_0x82a0('0x3a'),_0x82a0('0x3b'),_0x82a0('0x3c'),_0x82a0('0x3d'),_0x82a0('0x3e'),_0x82a0('0x3f'),_0x82a0('0x40')];if(_[_0x82a0('0x41')](_0x3b75d6,function(_0x30ab1a){return!_['includes'](_0x3b173e,_0x30ab1a['model'][_0x82a0('0x42')]());})){throw new db['Sequelize'][(_0x82a0('0x30'))](_0x82a0('0x43'));}}}var _0x3da486={};_0x3da486[_0x82a0('0x44')]=_0x4ee493[_0x82a0('0x32')][_0x82a0('0x2d')]('senderName')?_0x4ee493[_0x82a0('0x32')][_0x82a0('0x44')]:_0x4ee493[_0x82a0('0x40')]['fullname'];_0x3da486['recipientsDescription']=_['isEmpty'](_0x4ee493[_0x82a0('0x32')][_0x82a0('0x45')])?null:_0x4ee493[_0x82a0('0x32')][_0x82a0('0x45')];_0x3da486[_0x82a0('0x46')]=_0x4ee493[_0x82a0('0x32')]['beep']||![];_0x3da486[_0x82a0('0x47')]=_0x4ee493['user']['id'];return getContent(_0x4ee493[_0x82a0('0x32')])[_0x82a0('0x27')](function(_0x4d0079){_0x3da486[_0x82a0('0x32')]=_0x4d0079;return getRecipients(_0x3b75d6);})['then'](function(_0x84e5e0){_0x3da486[_0x82a0('0x48')]=_[_0x82a0('0x49')](_0x84e5e0)[_0x82a0('0x4a')](',');return db['sequelize'][_0x82a0('0x4b')](function(_0x28f9ac){return db[_0x82a0('0x4c')][_0x82a0('0x4d')](_0x3da486,{'raw':!![],'transaction':_0x28f9ac})[_0x82a0('0x27')](function(_0x341ece){var _0x4398c2={'sender':_0x3da486['senderName'],'description':_0x3da486[_0x82a0('0x45')],'content':_0x3da486['body'],'beep':_0x3da486['beep']};_0x84e5e0[_0x82a0('0x4e')](function(_0x57f38d){_0x4398c2[_0x82a0('0x4f')]=_0x57f38d;socket[_0x82a0('0x50')](_0x82a0('0x51'),_0x4398c2);});return _0x341ece;});});})[_0x82a0('0x27')](respondWithResult(_0x448a77,0xc9))[_0x82a0('0x52')](handleError(_0x448a77,null));};function getContent(_0x3592ae){return new BPromise(function(_0x25dc2a,_0x27b985){if(_0x3592ae[_0x82a0('0x53')]){_0x25dc2a(_0x3592ae[_0x82a0('0x53')]);return;}return db[_0x82a0('0x54')]['findOne']({'attributes':['html'],'where':{'id':_0x3592ae[_0x82a0('0x2e')]},'raw':!![]})[_0x82a0('0x27')](function(_0x31d498){if(!_0x31d498)throw new db[(_0x82a0('0x2f'))][(_0x82a0('0x30'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x377736=Mustache[_0x82a0('0x55')](_0x31d498[_0x82a0('0x56')],_0x3592ae[_0x82a0('0x57')]);_0x25dc2a(_0x377736);})[_0x82a0('0x52')](function(_0x4c04df){_0x27b985(_0x4c04df);});});}function getRecipients(_0x1c95b7){return new BPromise(function(_0x59a1a8,_0x478a8b){var _0x51ac8e=[];var _0x1cea43=[];_0x1c95b7[_0x82a0('0x4e')](function(_0x3f1a56){var _0x1cb8be=_[_0x82a0('0x58')](_0x3f1a56[_0x82a0('0x59')]['toLowerCase']());if(_0x1cb8be===_0x82a0('0x5a')){_0x51ac8e=_[_0x82a0('0x5b')](_0x51ac8e,_0x3f1a56[_0x82a0('0x5c')]);}else{if(_['includes'](_0x1cb8be,_0x82a0('0x5d')))_0x1cb8be=_0x1cb8be[_0x82a0('0x5e')](_0x82a0('0x5d'),_0x82a0('0x5f'));_0x3f1a56['ids'][_0x82a0('0x4e')](function(_0x309fd8){_0x1cea43[_0x82a0('0x60')](getAgents(_0x1cb8be,_0x309fd8));});}});return BPromise['all'](_0x1cea43)[_0x82a0('0x27')](function(_0x291442){_0x51ac8e=_[_0x82a0('0x5b')](_0x51ac8e,_[_0x82a0('0x61')](_0x291442));_0x59a1a8(_0x51ac8e);})[_0x82a0('0x52')](function(_0x50bf85){_0x478a8b(_0x50bf85);});});}function getAgents(_0x5dd404,_0xb49dc7){return new BPromise(function(_0x520f5f,_0x463e60){return db[_0x5dd404]['findOne']({'where':{'id':_0xb49dc7}})['then'](function(_0x8dab5e){return _0x8dab5e[_0x82a0('0x62')]({'attributes':['id'],'raw':!![]})[_0x82a0('0x27')](function(_0x59ca1e){var _0x173a71=_['map'](_0x59ca1e,'id');_0x520f5f(_0x173a71);});})[_0x82a0('0x52')](function(_0x16f059){_0x463e60(_0x16f059);});});}
\ No newline at end of file
index f5770ee..5043fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcabe=['update','remove','emit','hasOwnProperty','hook','exports','events','setMaxListeners','save'];(function(_0x4443d2,_0x3290b0){var _0x31d0b6=function(_0x1aa6ce){while(--_0x1aa6ce){_0x4443d2['push'](_0x4443d2['shift']());}};_0x31d0b6(++_0x3290b0);}(_0xcabe,0x84));var _0xecab=function(_0x20cf7f,_0x3fdbea){_0x20cf7f=_0x20cf7f-0x0;var _0xb9d71e=_0xcabe[_0x20cf7f];return _0xb9d71e;};'use strict';var EventEmitter=require(_0xecab('0x0'));var UserNotification=require('../../mysqldb')['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xecab('0x1')](0x0);var events={'afterCreate':_0xecab('0x2'),'afterUpdate':_0xecab('0x3'),'afterDestroy':_0xecab('0x4')};function emitEvent(_0x37d3a5){return function(_0x2c2683,_0x5410ab,_0x8a35a2){UserNotificationEvents[_0xecab('0x5')](_0x37d3a5+':'+_0x2c2683['id'],_0x2c2683);UserNotificationEvents[_0xecab('0x5')](_0x37d3a5,_0x2c2683);_0x8a35a2(null);};}for(var e in events){if(events[_0xecab('0x6')](e)){var event=events[e];UserNotification[_0xecab('0x7')](e,emitEvent(event));}}module[_0xecab('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x66ac=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','UserNotification','setMaxListeners','save'];(function(_0x78a8f4,_0x259809){var _0x2b3291=function(_0x5e64ca){while(--_0x5e64ca){_0x78a8f4['push'](_0x78a8f4['shift']());}};_0x2b3291(++_0x259809);}(_0x66ac,0x92));var _0xc66a=function(_0x219cd0,_0x34900a){_0x219cd0=_0x219cd0-0x0;var _0x734579=_0x66ac[_0x219cd0];return _0x734579;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xc66a('0x0'))['db'][_0xc66a('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xc66a('0x2')](0x0);var events={'afterCreate':_0xc66a('0x3'),'afterUpdate':_0xc66a('0x4'),'afterDestroy':_0xc66a('0x5')};function emitEvent(_0x1d6ecc){return function(_0x49e1f9,_0x274a81,_0x4f96cf){UserNotificationEvents[_0xc66a('0x6')](_0x1d6ecc+':'+_0x49e1f9['id'],_0x49e1f9);UserNotificationEvents[_0xc66a('0x6')](_0x1d6ecc,_0x49e1f9);_0x4f96cf(null);};}for(var e in events){if(events[_0xc66a('0x7')](e)){var event=events[e];UserNotification[_0xc66a('0x8')](e,emitEvent(event));}}module[_0xc66a('0x9')]=UserNotificationEvents;
\ No newline at end of file
index 607f7de..3b02b4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ad5=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userNotification.attributes','exports','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x2ad5,0x8b));var _0x52ad=function(_0x38f662,_0xb03a5f){_0x38f662=_0x38f662-0x0;var _0x557757=_0x2ad5[_0x38f662];return _0x557757;};'use strict';var _=require('lodash');var util=require(_0x52ad('0x0'));var logger=require(_0x52ad('0x1'))(_0x52ad('0x2'));var moment=require(_0x52ad('0x3'));var BPromise=require(_0x52ad('0x4'));var rp=require(_0x52ad('0x5'));var fs=require('fs');var path=require(_0x52ad('0x6'));var rimraf=require('rimraf');var config=require(_0x52ad('0x7'));var attributes=require(_0x52ad('0x8'));module[_0x52ad('0x9')]=function(_0x424864,_0x3fb4dc){return _0x424864['define'](_0x52ad('0xa'),attributes,{'tableName':_0x52ad('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x52ad('0xc'),'collate':_0x52ad('0xd')});};
\ No newline at end of file
+var _0xd7d0=['request-promise','path','rimraf','../../config/environment','exports','UserNotification','userNotifications','utf8mb4','lodash','util','api','bluebird'];(function(_0x442f7d,_0x4b819e){var _0xfc3b18=function(_0x4bfcf8){while(--_0x4bfcf8){_0x442f7d['push'](_0x442f7d['shift']());}};_0xfc3b18(++_0x4b819e);}(_0xd7d0,0x1a0));var _0x0d7d=function(_0x47ec98,_0x27d17c){_0x47ec98=_0x47ec98-0x0;var _0x9535af=_0xd7d0[_0x47ec98];return _0x9535af;};'use strict';var _=require(_0x0d7d('0x0'));var util=require(_0x0d7d('0x1'));var logger=require('../../config/logger')(_0x0d7d('0x2'));var moment=require('moment');var BPromise=require(_0x0d7d('0x3'));var rp=require(_0x0d7d('0x4'));var fs=require('fs');var path=require(_0x0d7d('0x5'));var rimraf=require(_0x0d7d('0x6'));var config=require(_0x0d7d('0x7'));var attributes=require('./userNotification.attributes');module[_0x0d7d('0x8')]=function(_0xcf3b07,_0x46a4f2){return _0xcf3b07['define'](_0x0d7d('0x9'),attributes,{'tableName':_0x0d7d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0d7d('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 893ff7f..3f20438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd328=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x399276,_0x1f2567){var _0x2b49d4=function(_0x1886d9){while(--_0x1886d9){_0x399276['push'](_0x399276['shift']());}};_0x2b49d4(++_0x1f2567);}(_0xd328,0x119));var _0x8d32=function(_0x4226a4,_0x58819f){_0x4226a4=_0x4226a4-0x0;var _0x261a24=_0xd328[_0x4226a4];return _0x261a24;};'use strict';var _=require(_0x8d32('0x0'));var util=require(_0x8d32('0x1'));var moment=require(_0x8d32('0x2'));var BPromise=require(_0x8d32('0x3'));var rs=require(_0x8d32('0x4'));var fs=require('fs');var Redis=require(_0x8d32('0x5'));var db=require(_0x8d32('0x6'))['db'];var utils=require(_0x8d32('0x7'));var logger=require(_0x8d32('0x8'))(_0x8d32('0x9'));var config=require(_0x8d32('0xa'));var jayson=require(_0x8d32('0xb'));var client=jayson['client'][_0x8d32('0xc')]({'port':0x232a});config[_0x8d32('0xd')]=_[_0x8d32('0xe')](config[_0x8d32('0xd')],{'host':_0x8d32('0xf'),'port':0x18eb});var socket=require(_0x8d32('0x10'))(new Redis(config[_0x8d32('0xd')]));require('./userNotification.socket')['register'](socket);function respondWithRpcPromise(_0x4b2f90,_0x50462c,_0x355a53){return new BPromise(function(_0x2f7c48,_0x344716){return client[_0x8d32('0x11')](_0x4b2f90,_0x355a53)[_0x8d32('0x12')](function(_0x3a8c34){logger[_0x8d32('0x13')](_0x8d32('0x14'),_0x50462c,_0x8d32('0x15'));logger[_0x8d32('0x16')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x50462c,_0x8d32('0x15'),JSON[_0x8d32('0x17')](_0x3a8c34));if(_0x3a8c34[_0x8d32('0x18')]){if(_0x3a8c34[_0x8d32('0x18')][_0x8d32('0x19')]===0x1f4){logger[_0x8d32('0x18')](_0x8d32('0x14'),_0x50462c,_0x3a8c34['error'][_0x8d32('0x1a')]);return _0x344716(_0x3a8c34[_0x8d32('0x18')][_0x8d32('0x1a')]);}logger[_0x8d32('0x18')](_0x8d32('0x14'),_0x50462c,_0x3a8c34[_0x8d32('0x18')]['message']);return _0x2f7c48(_0x3a8c34['error'][_0x8d32('0x1a')]);}else{logger[_0x8d32('0x13')](_0x8d32('0x14'),_0x50462c,_0x8d32('0x15'));_0x2f7c48(_0x3a8c34['result']['message']);}})[_0x8d32('0x1b')](function(_0xce8afb){logger[_0x8d32('0x18')]('UserNotification,\x20%s,\x20%s',_0x50462c,_0xce8afb);_0x344716(_0xce8afb);});});}
\ No newline at end of file
+var _0xd36f=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x212bf5,_0x165cbd){var _0xfcad21=function(_0x4a4e6e){while(--_0x4a4e6e){_0x212bf5['push'](_0x212bf5['shift']());}};_0xfcad21(++_0x165cbd);}(_0xd36f,0x127));var _0xfd36=function(_0x279e1d,_0x180d13){_0x279e1d=_0x279e1d-0x0;var _0x42999d=_0xd36f[_0x279e1d];return _0x42999d;};'use strict';var _=require(_0xfd36('0x0'));var util=require(_0xfd36('0x1'));var moment=require(_0xfd36('0x2'));var BPromise=require(_0xfd36('0x3'));var rs=require(_0xfd36('0x4'));var fs=require('fs');var Redis=require(_0xfd36('0x5'));var db=require(_0xfd36('0x6'))['db'];var utils=require(_0xfd36('0x7'));var logger=require(_0xfd36('0x8'))(_0xfd36('0x9'));var config=require(_0xfd36('0xa'));var jayson=require(_0xfd36('0xb'));var client=jayson[_0xfd36('0xc')]['http']({'port':0x232a});config[_0xfd36('0xd')]=_[_0xfd36('0xe')](config[_0xfd36('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfd36('0xf'))[_0xfd36('0x10')](socket);function respondWithRpcPromise(_0x3ecefd,_0x516442,_0x1f43de){return new BPromise(function(_0x1bd229,_0x4a6643){return client[_0xfd36('0x11')](_0x3ecefd,_0x1f43de)[_0xfd36('0x12')](function(_0x422747){logger[_0xfd36('0x13')](_0xfd36('0x14'),_0x516442,_0xfd36('0x15'));logger[_0xfd36('0x16')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x516442,_0xfd36('0x15'),JSON[_0xfd36('0x17')](_0x422747));if(_0x422747['error']){if(_0x422747[_0xfd36('0x18')][_0xfd36('0x19')]===0x1f4){logger[_0xfd36('0x18')](_0xfd36('0x14'),_0x516442,_0x422747[_0xfd36('0x18')][_0xfd36('0x1a')]);return _0x4a6643(_0x422747[_0xfd36('0x18')]['message']);}logger[_0xfd36('0x18')](_0xfd36('0x14'),_0x516442,_0x422747[_0xfd36('0x18')][_0xfd36('0x1a')]);return _0x1bd229(_0x422747['error'][_0xfd36('0x1a')]);}else{logger[_0xfd36('0x13')](_0xfd36('0x14'),_0x516442,_0xfd36('0x15'));_0x1bd229(_0x422747[_0xfd36('0x1b')][_0xfd36('0x1a')]);}})[_0xfd36('0x1c')](function(_0x28a312){logger[_0xfd36('0x18')](_0xfd36('0x14'),_0x516442,_0x28a312);_0x4a6643(_0x28a312);});});}
\ No newline at end of file
index 9537b08..350a574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7b=['update','emit','register','userNotification:','./userNotification.events','save','remove'];(function(_0x34c063,_0x11d3d7){var _0x2c63a3=function(_0x5983d0){while(--_0x5983d0){_0x34c063['push'](_0x34c063['shift']());}};_0x2c63a3(++_0x11d3d7);}(_0xaa7b,0x131));var _0xbaa7=function(_0x7805cd,_0x2946a6){_0x7805cd=_0x7805cd-0x0;var _0x4d4875=_0xaa7b[_0x7805cd];return _0x4d4875;};'use strict';var UserNotificationEvents=require(_0xbaa7('0x0'));var events=[_0xbaa7('0x1'),_0xbaa7('0x2'),_0xbaa7('0x3')];function createListener(_0x24b19a,_0x546a3b){return function(_0x3deca0){_0x546a3b[_0xbaa7('0x4')](_0x24b19a,_0x3deca0);};}function removeListener(_0x35e484,_0x13c41f){return function(){UserNotificationEvents['removeListener'](_0x35e484,_0x13c41f);};}exports[_0xbaa7('0x5')]=function(_0x51293e){for(var _0x42f045=0x0,_0x53ba03=events['length'];_0x42f045<_0x53ba03;_0x42f045++){var _0x527c18=events[_0x42f045];var _0x39886a=createListener(_0xbaa7('0x6')+_0x527c18,_0x51293e);UserNotificationEvents['on'](_0x527c18,_0x39886a);}};
\ No newline at end of file
+var _0xd067=['register','length','./userNotification.events','save','remove','update','emit','removeListener'];(function(_0x2ec7f2,_0xe24da3){var _0x29de00=function(_0x383338){while(--_0x383338){_0x2ec7f2['push'](_0x2ec7f2['shift']());}};_0x29de00(++_0xe24da3);}(_0xd067,0x1ba));var _0x7d06=function(_0x1353cd,_0x436f11){_0x1353cd=_0x1353cd-0x0;var _0x11d490=_0xd067[_0x1353cd];return _0x11d490;};'use strict';var UserNotificationEvents=require(_0x7d06('0x0'));var events=[_0x7d06('0x1'),_0x7d06('0x2'),_0x7d06('0x3')];function createListener(_0x31f93b,_0x4ac8c4){return function(_0x333fae){_0x4ac8c4[_0x7d06('0x4')](_0x31f93b,_0x333fae);};}function removeListener(_0x38d264,_0x4682c2){return function(){UserNotificationEvents[_0x7d06('0x5')](_0x38d264,_0x4682c2);};}exports[_0x7d06('0x6')]=function(_0x3386c8){for(var _0x4c0831=0x0,_0x20679d=events[_0x7d06('0x7')];_0x4c0831<_0x20679d;_0x4c0831++){var _0x15c1fb=events[_0x4c0831];var _0x1ac2df=createListener('userNotification:'+_0x15c1fb,_0x3386c8);UserNotificationEvents['on'](_0x15c1fb,_0x1ac2df);}};
\ No newline at end of file
index 7b7131f..a8b8c54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x3d3c7b,_0x4c3a7b){var _0x3dd92f=function(_0x50e16e){while(--_0x50e16e){_0x3d3c7b['push'](_0x3d3c7b['shift']());}};_0x3dd92f(++_0x4c3a7b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x3861f7,_0x995b22){var _0x50879f=function(_0x3003f1){while(--_0x3003f1){_0x3861f7['push'](_0x3861f7['shift']());}};_0x50879f(++_0x995b22);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 8d052be..6d7ac66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b1=['sequelize','INTEGER'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0xa8b1,0xae));var _0x1a8b=function(_0x34a1c2,_0x16b406){_0x34a1c2=_0x34a1c2-0x0;var _0x378e4d=_0xa8b1[_0x34a1c2];return _0x378e4d;};'use strict';var Sequelize=require(_0x1a8b('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x1a8b('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0309=['INTEGER','sequelize'];(function(_0x148f76,_0x588854){var _0x28e848=function(_0x13752e){while(--_0x13752e){_0x148f76['push'](_0x148f76['shift']());}};_0x28e848(++_0x588854);}(_0x0309,0x165));var _0x9030=function(_0x13ed2b,_0x52a6d5){_0x13ed2b=_0x13ed2b-0x0;var _0x3ba18b=_0x0309[_0x13ed2b];return _0x3ba18b;};'use strict';var Sequelize=require(_0x9030('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x9030('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 92e8594..8872814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804c=['path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x804c,0x192));var _0xc804=function(_0xc649c1,_0x281a0c){_0xc649c1=_0xc649c1-0x0;var _0x2ea33e=_0x804c[_0xc649c1];return _0x2ea33e;};'use strict';var _=require(_0xc804('0x0'));var util=require(_0xc804('0x1'));var logger=require(_0xc804('0x2'))('api');var moment=require(_0xc804('0x3'));var BPromise=require(_0xc804('0x4'));var rp=require(_0xc804('0x5'));var fs=require('fs');var path=require(_0xc804('0x6'));var rimraf=require(_0xc804('0x7'));var config=require(_0xc804('0x8'));var attributes=require(_0xc804('0x9'));module['exports']=function(_0xb4d960,_0x47b92b){return _0xb4d960['define'](_0xc804('0xa'),attributes,{'tableName':_0xc804('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x66c6=['path','rimraf','./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','api','request-promise'];(function(_0x2a058e,_0x500cfc){var _0x186f07=function(_0x349e9e){while(--_0x349e9e){_0x2a058e['push'](_0x2a058e['shift']());}};_0x186f07(++_0x500cfc);}(_0x66c6,0x1aa));var _0x666c=function(_0x4dd78f,_0x1a0d42){_0x4dd78f=_0x4dd78f-0x0;var _0x315d15=_0x66c6[_0x4dd78f];return _0x315d15;};'use strict';var _=require(_0x666c('0x0'));var util=require(_0x666c('0x1'));var logger=require('../../config/logger')(_0x666c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x666c('0x3'));var fs=require('fs');var path=require(_0x666c('0x4'));var rimraf=require(_0x666c('0x5'));var config=require('../../config/environment');var attributes=require(_0x666c('0x6'));module[_0x666c('0x7')]=function(_0x4bf00b,_0x4770f1){return _0x4bf00b['define'](_0x666c('0x8'),attributes,{'tableName':_0x666c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20afeda..d6929e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfb7=['randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','lodash','util','moment','bluebird'];(function(_0x12c97a,_0x121eb9){var _0x24eea2=function(_0xa62d21){while(--_0xa62d21){_0x12c97a['push'](_0x12c97a['shift']());}};_0x24eea2(++_0x121eb9);}(_0xcfb7,0x6a));var _0x7cfb=function(_0x18afca,_0x4219d9){_0x18afca=_0x18afca-0x0;var _0x11603f=_0xcfb7[_0x18afca];return _0x11603f;};'use strict';var _=require(_0x7cfb('0x0'));var util=require(_0x7cfb('0x1'));var moment=require(_0x7cfb('0x2'));var BPromise=require(_0x7cfb('0x3'));var rs=require(_0x7cfb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7cfb('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7cfb('0x6'));var config=require(_0x7cfb('0x7'));var jayson=require(_0x7cfb('0x8'));var client=jayson[_0x7cfb('0x9')][_0x7cfb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x486572,_0x2f6fd7,_0x22f4da){return new BPromise(function(_0x4bcd93,_0x17cefc){return client[_0x7cfb('0xb')](_0x486572,_0x22f4da)[_0x7cfb('0xc')](function(_0x2e18e5){logger['info'](_0x7cfb('0xd'),_0x2f6fd7,'request\x20sent');logger[_0x7cfb('0xe')](_0x7cfb('0xf'),_0x2f6fd7,'request\x20sent',JSON[_0x7cfb('0x10')](_0x2e18e5));if(_0x2e18e5[_0x7cfb('0x11')]){if(_0x2e18e5['error'][_0x7cfb('0x12')]===0x1f4){logger[_0x7cfb('0x11')](_0x7cfb('0xd'),_0x2f6fd7,_0x2e18e5['error'][_0x7cfb('0x13')]);return _0x17cefc(_0x2e18e5[_0x7cfb('0x11')][_0x7cfb('0x13')]);}logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x2f6fd7,_0x2e18e5[_0x7cfb('0x11')][_0x7cfb('0x13')]);return _0x4bcd93(_0x2e18e5[_0x7cfb('0x11')][_0x7cfb('0x13')]);}else{logger[_0x7cfb('0x14')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2f6fd7,_0x7cfb('0x15'));_0x4bcd93(_0x2e18e5['result'][_0x7cfb('0x13')]);}})['catch'](function(_0x29695e){logger[_0x7cfb('0x11')](_0x7cfb('0xd'),_0x2f6fd7,_0x29695e);_0x17cefc(_0x29695e);});});}
\ No newline at end of file
+var _0x5ad7=['info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x5cd497,_0x1f3d69){var _0x141a92=function(_0x29c43f){while(--_0x29c43f){_0x5cd497['push'](_0x5cd497['shift']());}};_0x141a92(++_0x1f3d69);}(_0x5ad7,0x1b8));var _0x75ad=function(_0xf432e0,_0x2cd7af){_0xf432e0=_0xf432e0-0x0;var _0x16fa21=_0x5ad7[_0xf432e0];return _0x16fa21;};'use strict';var _=require(_0x75ad('0x0'));var util=require(_0x75ad('0x1'));var moment=require('moment');var BPromise=require(_0x75ad('0x2'));var rs=require(_0x75ad('0x3'));var fs=require('fs');var Redis=require(_0x75ad('0x4'));var db=require(_0x75ad('0x5'))['db'];var utils=require(_0x75ad('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x75ad('0x7'));var client=jayson[_0x75ad('0x8')][_0x75ad('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3cfe1e,_0x5ea8cf,_0x2c3a6e){return new BPromise(function(_0x419a14,_0x2ea5db){return client[_0x75ad('0xa')](_0x3cfe1e,_0x2c3a6e)[_0x75ad('0xb')](function(_0x19c61d){logger['info'](_0x75ad('0xc'),_0x5ea8cf,'request\x20sent');logger[_0x75ad('0xd')](_0x75ad('0xe'),_0x5ea8cf,_0x75ad('0xf'),JSON[_0x75ad('0x10')](_0x19c61d));if(_0x19c61d[_0x75ad('0x11')]){if(_0x19c61d[_0x75ad('0x11')][_0x75ad('0x12')]===0x1f4){logger[_0x75ad('0x11')](_0x75ad('0xc'),_0x5ea8cf,_0x19c61d[_0x75ad('0x11')][_0x75ad('0x13')]);return _0x2ea5db(_0x19c61d[_0x75ad('0x11')][_0x75ad('0x13')]);}logger[_0x75ad('0x11')](_0x75ad('0xc'),_0x5ea8cf,_0x19c61d[_0x75ad('0x11')]['message']);return _0x419a14(_0x19c61d[_0x75ad('0x11')][_0x75ad('0x13')]);}else{logger[_0x75ad('0x14')](_0x75ad('0xc'),_0x5ea8cf,_0x75ad('0xf'));_0x419a14(_0x19c61d[_0x75ad('0x15')][_0x75ad('0x13')]);}})[_0x75ad('0x16')](function(_0x2fc902){logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x5ea8cf,_0x2fc902);_0x2ea5db(_0x2fc902);});});}
\ No newline at end of file
index 570ca7e..6c337e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f5d=['/:id/clone','clone','addSections','addResources','/:id','update','delete','destroy','removeResources','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','/:id/sections','getSections','/:id/resources','getResources','post','create'];(function(_0x485e26,_0x27fb35){var _0xdd2992=function(_0x5dcdda){while(--_0x5dcdda){_0x485e26['push'](_0x485e26['shift']());}};_0xdd2992(++_0x27fb35);}(_0x2f5d,0x7a));var _0xd2f5=function(_0xa62ced,_0x5e3689){_0xa62ced=_0xa62ced-0x0;var _0x45b4c0=_0x2f5d[_0xa62ced];return _0x45b4c0;};'use strict';var multer=require(_0xd2f5('0x0'));var util=require(_0xd2f5('0x1'));var path=require(_0xd2f5('0x2'));var timeout=require(_0xd2f5('0x3'));var express=require(_0xd2f5('0x4'));var router=express['Router']();var fs_extra=require(_0xd2f5('0x5'));var auth=require(_0xd2f5('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd2f5('0x7'));var controller=require('./userProfile.controller');router[_0xd2f5('0x8')]('/',auth[_0xd2f5('0x9')](),controller[_0xd2f5('0xa')]);router['get'](_0xd2f5('0xb'),auth[_0xd2f5('0x9')](),controller['describe']);router[_0xd2f5('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0xd2f5('0xc'),auth['isAuthenticated'](),controller[_0xd2f5('0xd')]);router[_0xd2f5('0x8')](_0xd2f5('0xe'),auth[_0xd2f5('0x9')](),controller[_0xd2f5('0xf')]);router[_0xd2f5('0x10')]('/',auth['isAuthenticated'](),controller[_0xd2f5('0x11')]);router[_0xd2f5('0x10')](_0xd2f5('0x12'),auth[_0xd2f5('0x9')](),controller[_0xd2f5('0x13')]);router['post'](_0xd2f5('0xc'),auth[_0xd2f5('0x9')](),controller[_0xd2f5('0x14')]);router[_0xd2f5('0x10')]('/:id/resources',auth[_0xd2f5('0x9')](),controller[_0xd2f5('0x15')]);router['put'](_0xd2f5('0x16'),auth[_0xd2f5('0x9')](),controller[_0xd2f5('0x17')]);router[_0xd2f5('0x18')](_0xd2f5('0x16'),auth[_0xd2f5('0x9')](),controller[_0xd2f5('0x19')]);router[_0xd2f5('0x18')](_0xd2f5('0xc'),auth[_0xd2f5('0x9')](),controller['removeSections']);router[_0xd2f5('0x18')](_0xd2f5('0xe'),auth[_0xd2f5('0x9')](),controller[_0xd2f5('0x1a')]);module[_0xd2f5('0x1b')]=router;
\ No newline at end of file
+var _0xe492=['removeResources','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','isAuthenticated','index','get','/describe','describe','show','/:id/sections','getSections','/:id/resources','post','create','/:id/clone','clone','addSections','update','/:id','destroy','delete'];(function(_0x264d4d,_0x118fb5){var _0xc917e2=function(_0x21b9dc){while(--_0x21b9dc){_0x264d4d['push'](_0x264d4d['shift']());}};_0xc917e2(++_0x118fb5);}(_0xe492,0x1c2));var _0x2e49=function(_0x512c02,_0x84d10a){_0x512c02=_0x512c02-0x0;var _0x328a0b=_0xe492[_0x512c02];return _0x328a0b;};'use strict';var multer=require(_0x2e49('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2e49('0x1'));var router=express[_0x2e49('0x2')]();var fs_extra=require(_0x2e49('0x3'));var auth=require(_0x2e49('0x4'));var interaction=require(_0x2e49('0x5'));var config=require(_0x2e49('0x6'));var controller=require(_0x2e49('0x7'));router['get']('/',auth[_0x2e49('0x8')](),controller[_0x2e49('0x9')]);router[_0x2e49('0xa')](_0x2e49('0xb'),auth[_0x2e49('0x8')](),controller[_0x2e49('0xc')]);router[_0x2e49('0xa')]('/:id',auth[_0x2e49('0x8')](),controller[_0x2e49('0xd')]);router['get'](_0x2e49('0xe'),auth['isAuthenticated'](),controller[_0x2e49('0xf')]);router['get'](_0x2e49('0x10'),auth[_0x2e49('0x8')](),controller['getResources']);router[_0x2e49('0x11')]('/',auth[_0x2e49('0x8')](),controller[_0x2e49('0x12')]);router['post'](_0x2e49('0x13'),auth[_0x2e49('0x8')](),controller[_0x2e49('0x14')]);router[_0x2e49('0x11')](_0x2e49('0xe'),auth[_0x2e49('0x8')](),controller[_0x2e49('0x15')]);router['post'](_0x2e49('0x10'),auth[_0x2e49('0x8')](),controller['addResources']);router['put']('/:id',auth[_0x2e49('0x8')](),controller[_0x2e49('0x16')]);router['delete'](_0x2e49('0x17'),auth[_0x2e49('0x8')](),controller[_0x2e49('0x18')]);router['delete'](_0x2e49('0xe'),auth[_0x2e49('0x8')](),controller['removeSections']);router[_0x2e49('0x19')](_0x2e49('0x10'),auth[_0x2e49('0x8')](),controller[_0x2e49('0x1a')]);module[_0x2e49('0x1b')]=router;
\ No newline at end of file
index 0fa596c..499fb80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3e0=['exports','STRING','setDataValue','crudPermissions','getDataValue','split','BOOLEAN','sequelize'];(function(_0x3fd603,_0x5f5b06){var _0x5026af=function(_0x5f199d){while(--_0x5f199d){_0x3fd603['push'](_0x3fd603['shift']());}};_0x5026af(++_0x5f5b06);}(_0xf3e0,0x87));var _0x0f3e=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xf3e0[_0x12f688];return _0x59c3de;};'use strict';var Sequelize=require(_0x0f3e('0x0'));module[_0x0f3e('0x1')]={'name':{'type':Sequelize[_0x0f3e('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x0f3e('0x2')],'set':function(_0x4997b5){this[_0x0f3e('0x3')](_0x0f3e('0x4'),_0x4997b5?_0x4997b5['join'](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x0f3e('0x5')](_0x0f3e('0x4'))[_0x0f3e('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x0f3e('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x0f3e('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xfe87=['getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue','crudPermissions'];(function(_0x68d8f8,_0x426682){var _0xf47345=function(_0x471a1a){while(--_0x471a1a){_0x68d8f8['push'](_0x68d8f8['shift']());}};_0xf47345(++_0x426682);}(_0xfe87,0x111));var _0x7fe8=function(_0xca78f1,_0x2c90c8){_0xca78f1=_0xca78f1-0x0;var _0xda435e=_0xfe87[_0xca78f1];return _0xda435e;};'use strict';var Sequelize=require(_0x7fe8('0x0'));module[_0x7fe8('0x1')]={'name':{'type':Sequelize[_0x7fe8('0x2')],'allowNull':![],'unique':_0x7fe8('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x468ad7){this[_0x7fe8('0x4')](_0x7fe8('0x5'),_0x468ad7?_0x468ad7['join'](''):[]);},'get':function(){return this[_0x7fe8('0x6')](_0x7fe8('0x5'))?this[_0x7fe8('0x6')](_0x7fe8('0x5'))[_0x7fe8('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x7fe8('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x7fe8('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 990e9cf..609a60c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d5e=['catch','show','params','include','create','body','find','get','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','destroy','push','ids','findAll','enabled','isEmpty','subsections','includes','findOne','Dashboard','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./userProfile.socket','register','sendStatus','status','end','undefined','offset','limit','set','Content-Range','reject','save','update','then','error','name','send','index','map','rawAttributes','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','UserProfile','count','rows'];(function(_0xcb52a,_0x14561c){var _0xda22b3=function(_0x143020){while(--_0x143020){_0xcb52a['push'](_0xcb52a['shift']());}};_0xda22b3(++_0x14561c);}(_0x6d5e,0x103));var _0xe6d5=function(_0x470e14,_0x132680){_0x470e14=_0x470e14-0x0;var _0x402ce7=_0x6d5e[_0x470e14];return _0x402ce7;};'use strict';var emlformat=require(_0xe6d5('0x0'));var rimraf=require(_0xe6d5('0x1'));var zipdir=require(_0xe6d5('0x2'));var jsonpatch=require(_0xe6d5('0x3'));var rp=require('request-promise');var moment=require(_0xe6d5('0x4'));var BPromise=require(_0xe6d5('0x5'));var Mustache=require(_0xe6d5('0x6'));var util=require(_0xe6d5('0x7'));var path=require(_0xe6d5('0x8'));var sox=require(_0xe6d5('0x9'));var csv=require(_0xe6d5('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe6d5('0xb'));var _=require('lodash');var squel=require(_0xe6d5('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe6d5('0xd'));var Papa=require(_0xe6d5('0xe'));var Redis=require(_0xe6d5('0xf'));var authService=require(_0xe6d5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe6d5('0x11'));var hardwareService=require(_0xe6d5('0x12'));var logger=require(_0xe6d5('0x13'))('api');var utils=require('../../config/utils');var config=require(_0xe6d5('0x14'));var licenseUtil=require(_0xe6d5('0x15'));var db=require(_0xe6d5('0x16'))['db'];config[_0xe6d5('0x17')]=_[_0xe6d5('0x18')](config[_0xe6d5('0x17')],{'host':_0xe6d5('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe6d5('0x17')]));require(_0xe6d5('0x1a'))[_0xe6d5('0x1b')](socket);function respondWithStatusCode(_0x32dbdb,_0x88b75e){_0x88b75e=_0x88b75e||0xcc;return function(_0x42f2ba){if(_0x42f2ba){return _0x32dbdb[_0xe6d5('0x1c')](_0x88b75e);}return _0x32dbdb[_0xe6d5('0x1d')](_0x88b75e)[_0xe6d5('0x1e')]();};}function respondWithResult(_0x49adf8,_0x2a8aa7){_0x2a8aa7=_0x2a8aa7||0xc8;return function(_0x2adb34){if(_0x2adb34){return _0x49adf8[_0xe6d5('0x1d')](_0x2a8aa7)['json'](_0x2adb34);}};}function respondWithFilteredResult(_0x3847d1,_0xf0a8bf){return function(_0x5f5d7a){if(_0x5f5d7a){var _0x1f4ce6=typeof _0xf0a8bf['offset']===_0xe6d5('0x1f')&&typeof _0xf0a8bf['limit']==='undefined';var _0x3d9ccb=_0x5f5d7a['count'];var _0x35c3ee=_0x1f4ce6?0x0:_0xf0a8bf[_0xe6d5('0x20')];var _0x1b06e0=_0x1f4ce6?_0x5f5d7a['count']:_0xf0a8bf['offset']+_0xf0a8bf[_0xe6d5('0x21')];var _0x1c458a;if(_0x1b06e0>=_0x3d9ccb){_0x1b06e0=_0x3d9ccb;_0x1c458a=0xc8;}else{_0x1c458a=0xce;}_0x3847d1[_0xe6d5('0x1d')](_0x1c458a);return _0x3847d1[_0xe6d5('0x22')](_0xe6d5('0x23'),_0x35c3ee+'-'+_0x1b06e0+'/'+_0x3d9ccb)['json'](_0x5f5d7a);}return null;};}function patchUpdates(_0x19e2b4){return function(_0xeac707){try{jsonpatch['apply'](_0xeac707,_0x19e2b4,!![]);}catch(_0x344ed5){return BPromise[_0xe6d5('0x24')](_0x344ed5);}return _0xeac707[_0xe6d5('0x25')]();};}function saveUpdates(_0x49bd97,_0x1fdacf){return function(_0xb5d87d){if(_0xb5d87d){return _0xb5d87d[_0xe6d5('0x26')](_0x49bd97)[_0xe6d5('0x27')](function(_0x1be7b0){return _0x1be7b0;});}return null;};}function removeEntity(_0x26a768,_0x1e6a36){return function(_0x7f7bcd){if(_0x7f7bcd){return _0x7f7bcd['destroy']()[_0xe6d5('0x27')](function(){_0x26a768[_0xe6d5('0x1d')](0xcc)[_0xe6d5('0x1e')]();});}};}function handleEntityNotFound(_0x2e4bde,_0x543934){return function(_0x3c90dc){if(!_0x3c90dc){_0x2e4bde['sendStatus'](0x194);}return _0x3c90dc;};}function handleError(_0x21ba91,_0x20e1b4){_0x20e1b4=_0x20e1b4||0x1f4;return function(_0x4d8a35){logger[_0xe6d5('0x28')](_0x4d8a35['stack']);if(_0x4d8a35[_0xe6d5('0x29')]){delete _0x4d8a35[_0xe6d5('0x29')];}_0x21ba91[_0xe6d5('0x1d')](_0x20e1b4)[_0xe6d5('0x2a')](_0x4d8a35);};}exports[_0xe6d5('0x2b')]=function(_0x4754a8,_0x1b5d3f){var _0x53da30={},_0x392551={},_0x2973b6={'count':0x0,'rows':[]};var _0x2f780d=_[_0xe6d5('0x2c')](db['UserProfile'][_0xe6d5('0x2d')],function(_0x2dbf1b){return{'name':_0x2dbf1b['fieldName'],'type':_0x2dbf1b[_0xe6d5('0x2e')]['key']};});_0x392551[_0xe6d5('0x2f')]=_['map'](_0x2f780d,_0xe6d5('0x29'));_0x392551['query']=_[_0xe6d5('0x30')](_0x4754a8[_0xe6d5('0x31')]);_0x392551[_0xe6d5('0x32')]=_[_0xe6d5('0x33')](_0x392551['model'],_0x392551[_0xe6d5('0x31')]);_0x53da30[_0xe6d5('0x34')]=_['intersection'](_0x392551[_0xe6d5('0x2f')],qs[_0xe6d5('0x35')](_0x4754a8['query'][_0xe6d5('0x35')]));_0x53da30[_0xe6d5('0x34')]=_0x53da30['attributes'][_0xe6d5('0x36')]?_0x53da30[_0xe6d5('0x34')]:_0x392551[_0xe6d5('0x2f')];if(!_0x4754a8[_0xe6d5('0x31')][_0xe6d5('0x37')](_0xe6d5('0x38'))){_0x53da30[_0xe6d5('0x21')]=qs[_0xe6d5('0x21')](_0x4754a8['query']['limit']);_0x53da30[_0xe6d5('0x20')]=qs[_0xe6d5('0x20')](_0x4754a8[_0xe6d5('0x31')][_0xe6d5('0x20')]);}_0x53da30[_0xe6d5('0x39')]=qs[_0xe6d5('0x3a')](_0x4754a8[_0xe6d5('0x31')][_0xe6d5('0x3a')]);_0x53da30[_0xe6d5('0x3b')]=qs[_0xe6d5('0x32')](_[_0xe6d5('0x3c')](_0x4754a8[_0xe6d5('0x31')],_0x392551[_0xe6d5('0x32')]),_0x2f780d);if(_0x4754a8[_0xe6d5('0x31')][_0xe6d5('0x3d')]){_0x53da30[_0xe6d5('0x3b')]=_[_0xe6d5('0x3e')](_0x53da30[_0xe6d5('0x3b')],{'$or':_[_0xe6d5('0x2c')](_0x2f780d,function(_0xc90dfc){if(_0xc90dfc[_0xe6d5('0x2e')]!==_0xe6d5('0x3f')){var _0x9872ad={};_0x9872ad[_0xc90dfc[_0xe6d5('0x29')]]={'$like':'%'+_0x4754a8[_0xe6d5('0x31')]['filter']+'%'};return _0x9872ad;}})});}_0x53da30=_[_0xe6d5('0x3e')]({},_0x53da30,_0x4754a8[_0xe6d5('0x40')]);var _0x2ea4bc={'where':_0x53da30[_0xe6d5('0x3b')]};return db[_0xe6d5('0x41')][_0xe6d5('0x42')](_0x2ea4bc)[_0xe6d5('0x27')](function(_0x31ff1a){_0x2973b6[_0xe6d5('0x42')]=_0x31ff1a;if(_0x4754a8[_0xe6d5('0x31')]['includeAll']){_0x53da30['include']=[{'all':!![]}];}return db[_0xe6d5('0x41')]['findAll'](_0x53da30);})['then'](function(_0x456682){_0x2973b6[_0xe6d5('0x43')]=_0x456682;return _0x2973b6;})[_0xe6d5('0x27')](respondWithFilteredResult(_0x1b5d3f,_0x53da30))[_0xe6d5('0x44')](handleError(_0x1b5d3f,null));};exports[_0xe6d5('0x45')]=function(_0x29c5b8,_0x4edf2d){var _0x6e19d6={'raw':![],'where':{'id':_0x29c5b8[_0xe6d5('0x46')]['id']}},_0x491c78={};_0x491c78[_0xe6d5('0x2f')]=_['keys'](db[_0xe6d5('0x41')]['rawAttributes']);_0x491c78['query']=_[_0xe6d5('0x30')](_0x29c5b8['query']);_0x491c78[_0xe6d5('0x32')]=_[_0xe6d5('0x33')](_0x491c78[_0xe6d5('0x2f')],_0x491c78['query']);_0x6e19d6[_0xe6d5('0x34')]=_[_0xe6d5('0x33')](_0x491c78[_0xe6d5('0x2f')],qs[_0xe6d5('0x35')](_0x29c5b8[_0xe6d5('0x31')]['fields']));_0x6e19d6[_0xe6d5('0x34')]=_0x6e19d6[_0xe6d5('0x34')][_0xe6d5('0x36')]?_0x6e19d6['attributes']:_0x491c78[_0xe6d5('0x2f')];if(_0x29c5b8[_0xe6d5('0x31')]['includeAll']){_0x6e19d6[_0xe6d5('0x47')]=[{'all':!![]}];}_0x6e19d6=_[_0xe6d5('0x3e')]({},_0x6e19d6,_0x29c5b8[_0xe6d5('0x40')]);return db[_0xe6d5('0x41')]['find'](_0x6e19d6)['then'](handleEntityNotFound(_0x4edf2d,null))['then'](respondWithResult(_0x4edf2d,null))[_0xe6d5('0x44')](handleError(_0x4edf2d,null));};exports[_0xe6d5('0x48')]=function(_0x1a26da,_0x2bcd6e){return db[_0xe6d5('0x41')]['create'](_0x1a26da[_0xe6d5('0x49')],{})[_0xe6d5('0x27')](respondWithResult(_0x2bcd6e,0xc9))[_0xe6d5('0x44')](handleError(_0x2bcd6e,null));};exports['clone']=function(_0x1d5281,_0x16b3f5){var _0xed04ac={'where':{'id':_0x1d5281[_0xe6d5('0x46')]['id']}},_0x2e5062={};_0x2e5062['model']=_[_0xe6d5('0x30')](db[_0xe6d5('0x41')]['rawAttributes']);_0xed04ac[_0xe6d5('0x34')]=_[_0xe6d5('0x33')](_0x2e5062[_0xe6d5('0x2f')],qs[_0xe6d5('0x35')](_0x1d5281[_0xe6d5('0x31')][_0xe6d5('0x35')]));_0xed04ac[_0xe6d5('0x34')]=_0xed04ac['attributes'][_0xe6d5('0x36')]?_0xed04ac['attributes']:_0x2e5062[_0xe6d5('0x2f')];if(_0x1d5281[_0xe6d5('0x31')]['includeAll']){_0xed04ac[_0xe6d5('0x47')]=[{'all':!![]}];}_0xed04ac=_['merge']({},_0xed04ac,_0x1d5281[_0xe6d5('0x40')]);return db[_0xe6d5('0x41')][_0xe6d5('0x4a')](_0xed04ac)['then'](handleEntityNotFound(_0x16b3f5,null))[_0xe6d5('0x27')](function(_0x595913){if(_0x595913){var _0x163c7c=_0x595913[_0xe6d5('0x4b')]({'plain':!![]});_0x163c7c=qs[_0xe6d5('0x4c')](_0x163c7c,['id','createdAt',_0xe6d5('0x4d'),_0xe6d5('0x4e')]);_0x1d5281[_0xe6d5('0x49')]=_[_0xe6d5('0x4c')](_0x1d5281[_0xe6d5('0x49')],['id',_0xe6d5('0x4f'),_0xe6d5('0x4d')]);return db[_0xe6d5('0x50')][_0xe6d5('0x51')](function(_0x5718f2){return db[_0xe6d5('0x41')]['create'](_[_0xe6d5('0x3e')](_0x163c7c,_0x1d5281[_0xe6d5('0x49')]),{'include':_0x1d5281[_0xe6d5('0x31')]['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x5718f2})[_0xe6d5('0x27')](function(_0x59fcbc){var _0x105f4=_0x59fcbc[_0xe6d5('0x4b')]({'plain':!![]});return db[_0xe6d5('0x52')]['findAll']({'where':{'userProfileId':_0x1d5281['params']['id']},'raw':!![]})[_0xe6d5('0x27')](function(_0x226dfa){if(_0x226dfa){return BPromise[_0xe6d5('0x53')](_0x226dfa,function(_0x177c30){return new BPromise(function(_0x271c5f,_0x45c0da){if(_0x177c30[_0xe6d5('0x54')]===null||_0x177c30['autoAssociation']===0x1)_0x271c5f(null);return db[_0xe6d5('0x55')]['findAll']({'where':{'sectionId':_0x177c30['id']},'raw':!![]})['then'](function(_0x4b716b){var _0x4f9e28=_[_0xe6d5('0x2c')](_0x4b716b,function(_0x1397fc){return qs['omit'](_0x1397fc,['id',_0xe6d5('0x4f'),_0xe6d5('0x4d'),_0xe6d5('0x56')]);});_0x271c5f(_0x4f9e28);})['catch'](function(_0x74e59d){_0x45c0da(_0x74e59d);});})[_0xe6d5('0x27')](function(_0x5f4b18){var _0x367f54=qs[_0xe6d5('0x4c')](_0x177c30,['id',_0xe6d5('0x4f'),'updatedAt']);_0x367f54[_0xe6d5('0x57')]=_0x105f4['id'];if(_0x5f4b18)_0x367f54['Resources']=_0x5f4b18;return _0x367f54;})[_0xe6d5('0x27')](function(_0x2d34b9){return db[_0xe6d5('0x52')][_0xe6d5('0x48')](_0x2d34b9,{'include':[{'model':db[_0xe6d5('0x55')],'as':_0xe6d5('0x58')}],'raw':!![],'transaction':_0x5718f2});});})[_0xe6d5('0x27')](function(){return _0x105f4;});}});});});}})[_0xe6d5('0x27')](respondWithResult(_0x16b3f5,0xc9))[_0xe6d5('0x44')](handleError(_0x16b3f5,null));};exports[_0xe6d5('0x26')]=function(_0x42bc86,_0x44ddc5){if(_0x42bc86['body']['id']){delete _0x42bc86[_0xe6d5('0x49')]['id'];}return db['UserProfile'][_0xe6d5('0x4a')]({'where':{'id':_0x42bc86[_0xe6d5('0x46')]['id']}})[_0xe6d5('0x27')](handleEntityNotFound(_0x44ddc5,null))['then'](saveUpdates(_0x42bc86['body'],null))['then'](respondWithResult(_0x44ddc5,null))['catch'](handleError(_0x44ddc5,null));};exports['destroy']=function(_0x35a8cd,_0x3be5eb){return db[_0xe6d5('0x41')][_0xe6d5('0x4a')]({'where':{'id':_0x35a8cd[_0xe6d5('0x46')]['id']}})[_0xe6d5('0x27')](handleEntityNotFound(_0x3be5eb,null))[_0xe6d5('0x27')](removeEntity(_0x3be5eb,null))[_0xe6d5('0x44')](handleError(_0x3be5eb,null));};exports['describe']=function(_0x21378b,_0x2243cf){return db[_0xe6d5('0x41')][_0xe6d5('0x59')]()['then'](respondWithResult(_0x2243cf,null))[_0xe6d5('0x44')](handleError(_0x2243cf,null));};exports['addSections']=function(_0x3cacac,_0x2cd56c){var _0x5834af=_0x3cacac[_0xe6d5('0x49')];return db['UserProfile'][_0xe6d5('0x4a')]({'where':{'id':_0x3cacac[_0xe6d5('0x46')]['id']}})[_0xe6d5('0x27')](handleEntityNotFound(_0x2cd56c,null))[_0xe6d5('0x27')](function(_0x538971){if(_0x538971){return db[_0xe6d5('0x50')][_0xe6d5('0x51')](function(_0x47deff){return db[_0xe6d5('0x52')][_0xe6d5('0x5a')]({'where':{'userProfileId':_0x3cacac[_0xe6d5('0x46')]['id'],'sectionId':_[_0xe6d5('0x2c')](_0x5834af,function(_0x12c219){return _0x12c219['sectionId'];})},'transaction':_0x47deff})[_0xe6d5('0x27')](function(){var _0x2f00b4=_[_0xe6d5('0x2c')](_0x5834af,function(_0x1dca2a){_0x1dca2a[_0xe6d5('0x57')]=_0x3cacac[_0xe6d5('0x46')]['id'];return _0x1dca2a;});var _0xfa9e20=[];return BPromise[_0xe6d5('0x53')](_0x2f00b4,function(_0x2823de){return db[_0xe6d5('0x52')]['create'](_0x2823de,{'include':[{'model':db['UserProfileResource'],'as':_0xe6d5('0x58')}],'raw':!![],'transaction':_0x47deff})['then'](function(_0x2ed3dc){_0xfa9e20[_0xe6d5('0x5b')](_0x2ed3dc[_0xe6d5('0x4b')]({'plain':!![]}));});})[_0xe6d5('0x27')](function(){return _0xfa9e20;});});});}})[_0xe6d5('0x27')](function(_0x711d2e){return _0x711d2e;})[_0xe6d5('0x27')](respondWithResult(_0x2cd56c,null))[_0xe6d5('0x44')](handleError(_0x2cd56c,null));};exports['removeSections']=function(_0x4760a1,_0x547cf8){var _0xcf6dd;return db[_0xe6d5('0x41')][_0xe6d5('0x4a')]({'where':{'id':_0x4760a1['params']['id']},'attributes':['id','name']})[_0xe6d5('0x27')](handleEntityNotFound(_0x547cf8,null))[_0xe6d5('0x27')](function(_0x2f29c8){if(_0x2f29c8){_0xcf6dd=_0x2f29c8;return db['UserProfileSection'][_0xe6d5('0x5a')]({'where':{'userProfileId':_0x4760a1[_0xe6d5('0x46')]['id'],'sectionId':_0x4760a1['query'][_0xe6d5('0x5c')]}});}})[_0xe6d5('0x27')](function(){return _0xcf6dd;})[_0xe6d5('0x27')](respondWithStatusCode(_0x547cf8,null))[_0xe6d5('0x44')](handleError(_0x547cf8,null));};exports['getSections']=function(_0x2f9ce7,_0x37aabb){var _0x3420d1=[];var _0x1ab2f0=[];return db['UserProfileSection'][_0xe6d5('0x5d')]({'where':{'userProfileId':_0x2f9ce7[_0xe6d5('0x46')]['id']},'raw':!![]})[_0xe6d5('0x27')](function(_0x3d8dca){_0x3420d1=_[_0xe6d5('0x3d')](_0x3d8dca,function(_0x528e2b){return _0x528e2b[_0xe6d5('0x5e')]===0x1||_['includes']([0x3eb,0x709],_0x528e2b[_0xe6d5('0x56')]);});if(!_[_0xe6d5('0x5f')](_0x3420d1)){return _['map'](_0x3420d1,function(_0x3e5f20){return _0x3e5f20[_0xe6d5('0x56')];});}else{return;}})[_0xe6d5('0x27')](function(_0x4ebabf){if(_0x4ebabf)_0x1ab2f0=_0x4ebabf;if(_['includes'](_0x1ab2f0,0x64)){var _0x2d8d1c=_[_0xe6d5('0x4a')](_0x3420d1,{'sectionId':0x64});return hasDefaultDashboard(_0x2d8d1c)[_0xe6d5('0x27')](function(_0x48b90e){return _['map'](_0x3420d1,function(_0x248c22){if(_0x248c22[_0xe6d5('0x56')]===0x64){_0x248c22[_0xe6d5('0x60')]=_0x48b90e;}return _0x248c22;});});}else{return;}})[_0xe6d5('0x27')](function(_0x5b0f9d){if(_0x5b0f9d)_0x3420d1=_0x5b0f9d;if(_['includes'](_0x1ab2f0,0x3eb)){var _0x5a5c0a=_[_0xe6d5('0x4a')](_0x3420d1,{'sectionId':0x3eb});return getCustomDashboards(_0x5a5c0a)[_0xe6d5('0x27')](function(_0x23c62c){return _['map'](_0x3420d1,function(_0x1646f9){if(_0x5a5c0a[_0xe6d5('0x5e')]){if(_0x1646f9[_0xe6d5('0x56')]===0x3eb){_0x1646f9[_0xe6d5('0x60')]=_0x23c62c;}}else{if(_0x1646f9[_0xe6d5('0x56')]===0x64){_0x1646f9[_0xe6d5('0x60')]=_0x23c62c;}}return _0x1646f9;});});}else{return;}})['then'](function(_0x9302b9){if(_0x9302b9)_0x3420d1=_0x9302b9;if(_[_0xe6d5('0x61')](_0x1ab2f0,0x709)){var _0x291332=_[_0xe6d5('0x4a')](_0x3420d1,{'sectionId':0x709});return getPlugins(_0x291332)['then'](function(_0xb8ee1f){if(_0x291332[_0xe6d5('0x5e')]){return _['map'](_0x3420d1,function(_0x2270fc){if(_0x2270fc[_0xe6d5('0x56')]===0x709){_0x2270fc[_0xe6d5('0x60')]=_0xb8ee1f;}return _0x2270fc;});}else{var _0x21c418={'sectionId':0x76c,'enabled':0x1,'subsections':_0xb8ee1f};var _0x5f23aa=_['map'](_0x3420d1);_0x5f23aa[_0xe6d5('0x5b')](_0x21c418);return _0x5f23aa;}});}else{return;}})[_0xe6d5('0x27')](function(_0x42e035){if(_0x42e035)_0x3420d1=_0x42e035;return _['filter'](_0x3420d1,[_0xe6d5('0x5e'),0x1]);})['then'](respondWithResult(_0x37aabb,null))['catch'](handleError(_0x37aabb,null));};function hasDefaultDashboard(_0x5bbbc){var _0x4adba3=[0x65];return new BPromise(function(_0x4717ef,_0x122c66){try{if(_0x5bbbc[_0xe6d5('0x54')]){_0x4717ef(_0x4adba3);}else{return db['UserProfileResource'][_0xe6d5('0x62')]({'where':{'sectionId':_0x5bbbc['id']},'raw':!![]})[_0xe6d5('0x27')](function(_0x89ab06){_0x89ab06?_0x4717ef(_0x4adba3):_0x4717ef();});}}catch(_0x580b40){_0x122c66(_0x580b40);}});}function getCustomDashboards(_0x1ea392){var _0x33dc89=[];return new BPromise(function(_0x5c33f8,_0x32b9fe){try{if(_0x1ea392[_0xe6d5('0x54')]){return db[_0xe6d5('0x63')][_0xe6d5('0x5d')]({'raw':!![]})['then'](function(_0x453ce8){_0x453ce8[_0xe6d5('0x64')](function(_0x33b5c9){_0x33dc89[_0xe6d5('0x5b')](_0x33b5c9['id']+0x1869f);});_0x5c33f8(_0x33dc89);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x1ea392['id']},'raw':!![]})['then'](function(_0x3f8086){_0x3f8086[_0xe6d5('0x64')](function(_0x61fd21){_0x33dc89[_0xe6d5('0x5b')](_0x61fd21['resourceId']+0x1869f);});_0x5c33f8(_0x33dc89);});}}catch(_0x20ae7a){_0x32b9fe(_0x20ae7a);}});}function getPlugins(_0x1fedd6){var _0x4669e1=[];return new BPromise(function(_0x4c8cb3,_0x4013de){try{if(_0x1fedd6[_0xe6d5('0x54')]){return db['Plugin']['findAll']({'raw':!![]})[_0xe6d5('0x27')](function(_0x5a5712){_0x5a5712[_0xe6d5('0x64')](function(_0x22782d){_0x4669e1[_0xe6d5('0x5b')](_0x22782d['id']+0x15b38);});_0x4c8cb3(_0x4669e1);});}else{return db[_0xe6d5('0x55')][_0xe6d5('0x5d')]({'where':{'sectionId':_0x1fedd6['id']},'raw':!![]})[_0xe6d5('0x27')](function(_0x10ae18){_0x10ae18[_0xe6d5('0x64')](function(_0x44ce37){_0x4669e1['push'](_0x44ce37[_0xe6d5('0x65')]+0x15b38);});_0x4c8cb3(_0x4669e1);});}}catch(_0x454e60){_0x4013de(_0x454e60);}});}exports[_0xe6d5('0x66')]=function(_0x380f34,_0x5662fd){return db[_0xe6d5('0x41')]['find']({'where':{'id':_0x380f34[_0xe6d5('0x46')]['id']}})[_0xe6d5('0x27')](handleEntityNotFound(_0x5662fd,null))[_0xe6d5('0x27')](function(_0x58d7c5){if(_0x58d7c5){return db[_0xe6d5('0x50')][_0xe6d5('0x51')](function(_0x3d4002){return db[_0xe6d5('0x52')][_0xe6d5('0x5d')]({'where':{'userProfileId':_0x380f34[_0xe6d5('0x46')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x372d15){if(_0x372d15){return db[_0xe6d5('0x52')][_0xe6d5('0x5a')]({'where':{'userProfileId':_0x380f34[_0xe6d5('0x46')]['id'],'id':_[_0xe6d5('0x2c')](_0x372d15,function(_0x4df734){return _0x4df734['id'];})},'transaction':_0x3d4002});}})[_0xe6d5('0x27')](function(_0x56845e){var _0x320525=_['map'](_0x380f34[_0xe6d5('0x49')],function(_0x1e5012){_0x1e5012[_0xe6d5('0x57')]=_0x380f34[_0xe6d5('0x46')]['id'];return _0x1e5012;});return db[_0xe6d5('0x52')][_0xe6d5('0x67')](_0x320525,{'raw':!![],'transaction':_0x3d4002});})[_0xe6d5('0x27')](function(_0x3d99aa){var _0x263c7b=_['filter'](_[_0xe6d5('0x2c')](_0x3d99aa,function(_0x59a37e){return _0x59a37e[_0xe6d5('0x4b')]({'plain':!![]});}),{'includeAll':![]});if(_0x263c7b){return db[_0xe6d5('0x52')][_0xe6d5('0x5d')]({'where':{'userProfileId':_0x380f34[_0xe6d5('0x46')]['id'],'sectionId':_[_0xe6d5('0x2c')](_0x263c7b,function(_0x4fba10){return _0x4fba10[_0xe6d5('0x56')];})},'attributes':['id',_0xe6d5('0x56')],'raw':!![]})[_0xe6d5('0x27')](function(_0x1b0671){var _0x1cdad2=_[_0xe6d5('0x2c')](_0x380f34[_0xe6d5('0x49')],function(_0x2a9349){_0x2a9349[_0xe6d5('0x57')]=_0x380f34[_0xe6d5('0x46')]['id'];return _0x2a9349;});return db[_0xe6d5('0x55')][_0xe6d5('0x67')](_0x1cdad2,{'raw':!![],'transaction':_0x3d4002});});}})[_0xe6d5('0x44')](handleError(_0x5662fd,null));});}})[_0xe6d5('0x27')](function(_0x49d58f){var _0x2ad7db=_[_0xe6d5('0x2c')](_0x49d58f,function(_0x5b10a9){return _0x5b10a9[_0xe6d5('0x4b')]({'plain':!![]});});})[_0xe6d5('0x27')](respondWithResult(_0x5662fd,null))[_0xe6d5('0x44')](handleError(_0x5662fd,null));};exports[_0xe6d5('0x68')]=function(_0x1813f1,_0x2b433a,_0x272410){return db[_0xe6d5('0x41')]['find']({'where':{'id':_0x1813f1['params']['id']}})[_0xe6d5('0x27')](handleEntityNotFound(_0x2b433a,null))['then'](function(_0x5dbc82){if(_0x5dbc82){return _0x5dbc82['removeResources'](_0x1813f1[_0xe6d5('0x31')][_0xe6d5('0x5c')]);}})[_0xe6d5('0x27')](respondWithStatusCode(_0x2b433a,null))[_0xe6d5('0x44')](handleError(_0x2b433a,null));};exports[_0xe6d5('0x69')]=function(_0x28d660,_0x5b8b9e){var _0x6acfb4={};if(!_0x28d660['query'][_0xe6d5('0x6a')])throw new Error(_0xe6d5('0x6b'));if(!_0x28d660[_0xe6d5('0x31')][_0xe6d5('0x37')](_0xe6d5('0x38'))){_0x6acfb4[_0xe6d5('0x21')]=qs[_0xe6d5('0x21')](_0x28d660['query'][_0xe6d5('0x21')]);_0x6acfb4[_0xe6d5('0x20')]=qs[_0xe6d5('0x20')](_0x28d660['query']['offset']);}return db[_0xe6d5('0x41')]['find']({'where':{'id':_0x28d660[_0xe6d5('0x46')]['id']}})[_0xe6d5('0x27')](function(_0x209b68){if(!_0x209b68)throw new Error(_0xe6d5('0x6c')+_0x28d660[_0xe6d5('0x46')]['id']);return db[_0xe6d5('0x41')][_0xe6d5('0x69')](_0x28d660);})[_0xe6d5('0x27')](respondWithFilteredResult(_0x5b8b9e,_0x6acfb4))[_0xe6d5('0x44')](handleError(_0x5b8b9e,null));};
\ No newline at end of file
+var _0xc00b=['sort','where','filter','merge','options','include','findAll','show','find','catch','create','body','clone','params','includeAll','get','omit','createdAt','crudPermissions','updatedAt','sequelize','transaction','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','UserProfileSection','each','removeSections','getSections','includes','isEmpty','subsections','enabled','push','findOne','forEach','resourceId','addResources','bulkCreate','removeResources','ids','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','undefined','limit','offset','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','UserProfile','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x14be19,_0x3067bb){var _0x240fb4=function(_0x58a3b9){while(--_0x58a3b9){_0x14be19['push'](_0x14be19['shift']());}};_0x240fb4(++_0x3067bb);}(_0xc00b,0x1e5));var _0xbc00=function(_0x1d5714,_0x2fa5f4){_0x1d5714=_0x1d5714-0x0;var _0x1b620e=_0xc00b[_0x1d5714];return _0x1b620e;};'use strict';var emlformat=require(_0xbc00('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbc00('0x1'));var moment=require('moment');var BPromise=require(_0xbc00('0x2'));var Mustache=require(_0xbc00('0x3'));var util=require(_0xbc00('0x4'));var path=require(_0xbc00('0x5'));var sox=require('sox');var csv=require(_0xbc00('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc00('0x7'));var _=require('lodash');var squel=require(_0xbc00('0x8'));var crypto=require(_0xbc00('0x9'));var jsforce=require(_0xbc00('0xa'));var deskjs=require(_0xbc00('0xb'));var toCsv=require(_0xbc00('0x6'));var querystring=require(_0xbc00('0xc'));var Papa=require('papaparse');var Redis=require(_0xbc00('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xbc00('0xe'));var as=require(_0xbc00('0xf'));var hardwareService=require(_0xbc00('0x10'));var logger=require('../../config/logger')(_0xbc00('0x11'));var utils=require('../../config/utils');var config=require(_0xbc00('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xbc00('0x13'))['db'];config[_0xbc00('0x14')]=_[_0xbc00('0x15')](config['redis'],{'host':_0xbc00('0x16'),'port':0x18eb});var socket=require(_0xbc00('0x17'))(new Redis(config[_0xbc00('0x14')]));require('./userProfile.socket')[_0xbc00('0x18')](socket);function respondWithStatusCode(_0xd05e85,_0x573cf4){_0x573cf4=_0x573cf4||0xcc;return function(_0x33ce58){if(_0x33ce58){return _0xd05e85[_0xbc00('0x19')](_0x573cf4);}return _0xd05e85[_0xbc00('0x1a')](_0x573cf4)[_0xbc00('0x1b')]();};}function respondWithResult(_0x46ae64,_0x132011){_0x132011=_0x132011||0xc8;return function(_0x432a0d){if(_0x432a0d){return _0x46ae64['status'](_0x132011)['json'](_0x432a0d);}};}function respondWithFilteredResult(_0x53b0cd,_0x2d12f2){return function(_0x4e529d){if(_0x4e529d){var _0xdfc990=typeof _0x2d12f2['offset']===_0xbc00('0x1c')&&typeof _0x2d12f2[_0xbc00('0x1d')]==='undefined';var _0x3820c5=_0x4e529d['count'];var _0x44590e=_0xdfc990?0x0:_0x2d12f2[_0xbc00('0x1e')];var _0x48b39b=_0xdfc990?_0x4e529d[_0xbc00('0x1f')]:_0x2d12f2[_0xbc00('0x1e')]+_0x2d12f2[_0xbc00('0x1d')];var _0x13abd5;if(_0x48b39b>=_0x3820c5){_0x48b39b=_0x3820c5;_0x13abd5=0xc8;}else{_0x13abd5=0xce;}_0x53b0cd[_0xbc00('0x1a')](_0x13abd5);return _0x53b0cd[_0xbc00('0x20')]('Content-Range',_0x44590e+'-'+_0x48b39b+'/'+_0x3820c5)['json'](_0x4e529d);}return null;};}function patchUpdates(_0x39afdf){return function(_0x30c72a){try{jsonpatch[_0xbc00('0x21')](_0x30c72a,_0x39afdf,!![]);}catch(_0x5286eb){return BPromise[_0xbc00('0x22')](_0x5286eb);}return _0x30c72a[_0xbc00('0x23')]();};}function saveUpdates(_0x593289,_0x5f05c7){return function(_0x3c5623){if(_0x3c5623){return _0x3c5623[_0xbc00('0x24')](_0x593289)[_0xbc00('0x25')](function(_0x532f0d){return _0x532f0d;});}return null;};}function removeEntity(_0x5f21c5,_0x1a969f){return function(_0x510a0a){if(_0x510a0a){return _0x510a0a[_0xbc00('0x26')]()[_0xbc00('0x25')](function(){_0x5f21c5['status'](0xcc)[_0xbc00('0x1b')]();});}};}function handleEntityNotFound(_0x1aa791,_0x18fb72){return function(_0x1ef0cc){if(!_0x1ef0cc){_0x1aa791['sendStatus'](0x194);}return _0x1ef0cc;};}function handleError(_0x34ba27,_0x290557){_0x290557=_0x290557||0x1f4;return function(_0x15724a){logger[_0xbc00('0x27')](_0x15724a[_0xbc00('0x28')]);if(_0x15724a[_0xbc00('0x29')]){delete _0x15724a[_0xbc00('0x29')];}_0x34ba27['status'](_0x290557)[_0xbc00('0x2a')](_0x15724a);};}exports[_0xbc00('0x2b')]=function(_0x5dc5d9,_0x2c0cb3){var _0x2d4fad={},_0x3cfc78={},_0x39cfd0={'count':0x0,'rows':[]};var _0x215c71=_[_0xbc00('0x2c')](db[_0xbc00('0x2d')][_0xbc00('0x2e')],function(_0x3d361b){return{'name':_0x3d361b[_0xbc00('0x2f')],'type':_0x3d361b['type'][_0xbc00('0x30')]};});_0x3cfc78[_0xbc00('0x31')]=_[_0xbc00('0x2c')](_0x215c71,_0xbc00('0x29'));_0x3cfc78['query']=_[_0xbc00('0x32')](_0x5dc5d9[_0xbc00('0x33')]);_0x3cfc78[_0xbc00('0x34')]=_[_0xbc00('0x35')](_0x3cfc78[_0xbc00('0x31')],_0x3cfc78['query']);_0x2d4fad[_0xbc00('0x36')]=_[_0xbc00('0x35')](_0x3cfc78[_0xbc00('0x31')],qs['fields'](_0x5dc5d9[_0xbc00('0x33')][_0xbc00('0x37')]));_0x2d4fad[_0xbc00('0x36')]=_0x2d4fad[_0xbc00('0x36')][_0xbc00('0x38')]?_0x2d4fad['attributes']:_0x3cfc78[_0xbc00('0x31')];if(!_0x5dc5d9[_0xbc00('0x33')][_0xbc00('0x39')](_0xbc00('0x3a'))){_0x2d4fad[_0xbc00('0x1d')]=qs[_0xbc00('0x1d')](_0x5dc5d9['query']['limit']);_0x2d4fad[_0xbc00('0x1e')]=qs[_0xbc00('0x1e')](_0x5dc5d9[_0xbc00('0x33')][_0xbc00('0x1e')]);}_0x2d4fad[_0xbc00('0x3b')]=qs['sort'](_0x5dc5d9['query'][_0xbc00('0x3c')]);_0x2d4fad[_0xbc00('0x3d')]=qs[_0xbc00('0x34')](_['pick'](_0x5dc5d9[_0xbc00('0x33')],_0x3cfc78[_0xbc00('0x34')]),_0x215c71);if(_0x5dc5d9[_0xbc00('0x33')][_0xbc00('0x3e')]){_0x2d4fad['where']=_[_0xbc00('0x3f')](_0x2d4fad['where'],{'$or':_[_0xbc00('0x2c')](_0x215c71,function(_0xf0964f){if(_0xf0964f['type']!=='VIRTUAL'){var _0x9f979d={};_0x9f979d[_0xf0964f[_0xbc00('0x29')]]={'$like':'%'+_0x5dc5d9[_0xbc00('0x33')][_0xbc00('0x3e')]+'%'};return _0x9f979d;}})});}_0x2d4fad=_[_0xbc00('0x3f')]({},_0x2d4fad,_0x5dc5d9[_0xbc00('0x40')]);var _0x18dea0={'where':_0x2d4fad[_0xbc00('0x3d')]};return db[_0xbc00('0x2d')]['count'](_0x18dea0)[_0xbc00('0x25')](function(_0x51c4d8){_0x39cfd0[_0xbc00('0x1f')]=_0x51c4d8;if(_0x5dc5d9[_0xbc00('0x33')]['includeAll']){_0x2d4fad[_0xbc00('0x41')]=[{'all':!![]}];}return db['UserProfile'][_0xbc00('0x42')](_0x2d4fad);})[_0xbc00('0x25')](function(_0x25b82a){_0x39cfd0['rows']=_0x25b82a;return _0x39cfd0;})[_0xbc00('0x25')](respondWithFilteredResult(_0x2c0cb3,_0x2d4fad))['catch'](handleError(_0x2c0cb3,null));};exports[_0xbc00('0x43')]=function(_0x119ec6,_0x3d0eb3){var _0x2fa581={'raw':![],'where':{'id':_0x119ec6['params']['id']}},_0x3b4d6f={};_0x3b4d6f['model']=_['keys'](db['UserProfile'][_0xbc00('0x2e')]);_0x3b4d6f[_0xbc00('0x33')]=_['keys'](_0x119ec6[_0xbc00('0x33')]);_0x3b4d6f[_0xbc00('0x34')]=_[_0xbc00('0x35')](_0x3b4d6f['model'],_0x3b4d6f[_0xbc00('0x33')]);_0x2fa581[_0xbc00('0x36')]=_['intersection'](_0x3b4d6f['model'],qs['fields'](_0x119ec6[_0xbc00('0x33')][_0xbc00('0x37')]));_0x2fa581[_0xbc00('0x36')]=_0x2fa581[_0xbc00('0x36')][_0xbc00('0x38')]?_0x2fa581[_0xbc00('0x36')]:_0x3b4d6f[_0xbc00('0x31')];if(_0x119ec6['query']['includeAll']){_0x2fa581[_0xbc00('0x41')]=[{'all':!![]}];}_0x2fa581=_['merge']({},_0x2fa581,_0x119ec6[_0xbc00('0x40')]);return db['UserProfile'][_0xbc00('0x44')](_0x2fa581)[_0xbc00('0x25')](handleEntityNotFound(_0x3d0eb3,null))['then'](respondWithResult(_0x3d0eb3,null))[_0xbc00('0x45')](handleError(_0x3d0eb3,null));};exports[_0xbc00('0x46')]=function(_0x5ec178,_0x3fa95f){return db['UserProfile'][_0xbc00('0x46')](_0x5ec178[_0xbc00('0x47')],{})['then'](respondWithResult(_0x3fa95f,0xc9))[_0xbc00('0x45')](handleError(_0x3fa95f,null));};exports[_0xbc00('0x48')]=function(_0x59bd30,_0x2c3b5d){var _0x45a5a9={'where':{'id':_0x59bd30[_0xbc00('0x49')]['id']}},_0x56d70b={};_0x56d70b[_0xbc00('0x31')]=_[_0xbc00('0x32')](db[_0xbc00('0x2d')][_0xbc00('0x2e')]);_0x45a5a9[_0xbc00('0x36')]=_[_0xbc00('0x35')](_0x56d70b[_0xbc00('0x31')],qs['fields'](_0x59bd30[_0xbc00('0x33')][_0xbc00('0x37')]));_0x45a5a9['attributes']=_0x45a5a9[_0xbc00('0x36')][_0xbc00('0x38')]?_0x45a5a9[_0xbc00('0x36')]:_0x56d70b[_0xbc00('0x31')];if(_0x59bd30[_0xbc00('0x33')][_0xbc00('0x4a')]){_0x45a5a9[_0xbc00('0x41')]=[{'all':!![]}];}_0x45a5a9=_[_0xbc00('0x3f')]({},_0x45a5a9,_0x59bd30[_0xbc00('0x40')]);return db[_0xbc00('0x2d')][_0xbc00('0x44')](_0x45a5a9)[_0xbc00('0x25')](handleEntityNotFound(_0x2c3b5d,null))[_0xbc00('0x25')](function(_0x6aeba8){if(_0x6aeba8){var _0x4da05c=_0x6aeba8[_0xbc00('0x4b')]({'plain':!![]});_0x4da05c=qs[_0xbc00('0x4c')](_0x4da05c,['id',_0xbc00('0x4d'),'updatedAt',_0xbc00('0x4e')]);_0x59bd30[_0xbc00('0x47')]=_[_0xbc00('0x4c')](_0x59bd30[_0xbc00('0x47')],['id',_0xbc00('0x4d'),_0xbc00('0x4f')]);return db[_0xbc00('0x50')][_0xbc00('0x51')](function(_0x110be7){return db[_0xbc00('0x2d')][_0xbc00('0x46')](_[_0xbc00('0x3f')](_0x4da05c,_0x59bd30['body']),{'include':_0x59bd30[_0xbc00('0x33')][_0xbc00('0x4a')]?[{'all':!![]}]:undefined,'transaction':_0x110be7})[_0xbc00('0x25')](function(_0x5715b3){var _0x4040d0=_0x5715b3['get']({'plain':!![]});return db['UserProfileSection'][_0xbc00('0x42')]({'where':{'userProfileId':_0x59bd30[_0xbc00('0x49')]['id']},'raw':!![]})[_0xbc00('0x25')](function(_0xb2c0ec){if(_0xb2c0ec){return BPromise['each'](_0xb2c0ec,function(_0x981fb6){return new BPromise(function(_0x3c0003,_0x82d5fb){if(_0x981fb6['autoAssociation']===null||_0x981fb6[_0xbc00('0x52')]===0x1)_0x3c0003(null);return db[_0xbc00('0x53')][_0xbc00('0x42')]({'where':{'sectionId':_0x981fb6['id']},'raw':!![]})[_0xbc00('0x25')](function(_0x517dbf){var _0x142d2f=_[_0xbc00('0x2c')](_0x517dbf,function(_0x33b40f){return qs['omit'](_0x33b40f,['id',_0xbc00('0x4d'),_0xbc00('0x4f'),_0xbc00('0x54')]);});_0x3c0003(_0x142d2f);})['catch'](function(_0x563ad8){_0x82d5fb(_0x563ad8);});})[_0xbc00('0x25')](function(_0x458546){var _0x2c0640=qs['omit'](_0x981fb6,['id',_0xbc00('0x4d'),_0xbc00('0x4f')]);_0x2c0640[_0xbc00('0x55')]=_0x4040d0['id'];if(_0x458546)_0x2c0640[_0xbc00('0x56')]=_0x458546;return _0x2c0640;})[_0xbc00('0x25')](function(_0x1aa548){return db['UserProfileSection']['create'](_0x1aa548,{'include':[{'model':db[_0xbc00('0x53')],'as':_0xbc00('0x56')}],'raw':!![],'transaction':_0x110be7});});})[_0xbc00('0x25')](function(){return _0x4040d0;});}});});});}})[_0xbc00('0x25')](respondWithResult(_0x2c3b5d,0xc9))['catch'](handleError(_0x2c3b5d,null));};exports['update']=function(_0xf734e0,_0x12a1dc){if(_0xf734e0[_0xbc00('0x47')]['id']){delete _0xf734e0[_0xbc00('0x47')]['id'];}return db['UserProfile'][_0xbc00('0x44')]({'where':{'id':_0xf734e0[_0xbc00('0x49')]['id']}})[_0xbc00('0x25')](handleEntityNotFound(_0x12a1dc,null))[_0xbc00('0x25')](saveUpdates(_0xf734e0[_0xbc00('0x47')],null))[_0xbc00('0x25')](respondWithResult(_0x12a1dc,null))[_0xbc00('0x45')](handleError(_0x12a1dc,null));};exports[_0xbc00('0x26')]=function(_0x26f6ae,_0x558a32){return db[_0xbc00('0x2d')][_0xbc00('0x44')]({'where':{'id':_0x26f6ae[_0xbc00('0x49')]['id']}})['then'](handleEntityNotFound(_0x558a32,null))[_0xbc00('0x25')](removeEntity(_0x558a32,null))[_0xbc00('0x45')](handleError(_0x558a32,null));};exports[_0xbc00('0x57')]=function(_0x1b14da,_0x14a06e){return db['UserProfile']['describe']()[_0xbc00('0x25')](respondWithResult(_0x14a06e,null))[_0xbc00('0x45')](handleError(_0x14a06e,null));};exports[_0xbc00('0x58')]=function(_0x55f2ac,_0x2efabc){var _0x1c0535=_0x55f2ac[_0xbc00('0x47')];return db[_0xbc00('0x2d')][_0xbc00('0x44')]({'where':{'id':_0x55f2ac[_0xbc00('0x49')]['id']}})['then'](handleEntityNotFound(_0x2efabc,null))['then'](function(_0x3d4cf9){if(_0x3d4cf9){return db[_0xbc00('0x50')][_0xbc00('0x51')](function(_0x30d70d){return db[_0xbc00('0x59')]['destroy']({'where':{'userProfileId':_0x55f2ac['params']['id'],'sectionId':_[_0xbc00('0x2c')](_0x1c0535,function(_0x16cbc5){return _0x16cbc5[_0xbc00('0x54')];})},'transaction':_0x30d70d})['then'](function(){var _0x168c39=_[_0xbc00('0x2c')](_0x1c0535,function(_0x2bd90a){_0x2bd90a[_0xbc00('0x55')]=_0x55f2ac['params']['id'];return _0x2bd90a;});var _0x49a96b=[];return BPromise[_0xbc00('0x5a')](_0x168c39,function(_0x480e92){return db[_0xbc00('0x59')][_0xbc00('0x46')](_0x480e92,{'include':[{'model':db[_0xbc00('0x53')],'as':_0xbc00('0x56')}],'raw':!![],'transaction':_0x30d70d})['then'](function(_0x5acdda){_0x49a96b['push'](_0x5acdda[_0xbc00('0x4b')]({'plain':!![]}));});})[_0xbc00('0x25')](function(){return _0x49a96b;});});});}})[_0xbc00('0x25')](function(_0x37ce97){return _0x37ce97;})['then'](respondWithResult(_0x2efabc,null))[_0xbc00('0x45')](handleError(_0x2efabc,null));};exports[_0xbc00('0x5b')]=function(_0x13dd66,_0x280854){var _0x136ae8;return db[_0xbc00('0x2d')][_0xbc00('0x44')]({'where':{'id':_0x13dd66['params']['id']},'attributes':['id','name']})['then'](handleEntityNotFound(_0x280854,null))[_0xbc00('0x25')](function(_0x3473c3){if(_0x3473c3){_0x136ae8=_0x3473c3;return db[_0xbc00('0x59')][_0xbc00('0x26')]({'where':{'userProfileId':_0x13dd66['params']['id'],'sectionId':_0x13dd66['query']['ids']}});}})['then'](function(){return _0x136ae8;})[_0xbc00('0x25')](respondWithStatusCode(_0x280854,null))[_0xbc00('0x45')](handleError(_0x280854,null));};exports[_0xbc00('0x5c')]=function(_0x24ff43,_0x14ec73){var _0x79cba4=[];var _0x13f1e5=[];return db[_0xbc00('0x59')][_0xbc00('0x42')]({'where':{'userProfileId':_0x24ff43[_0xbc00('0x49')]['id']},'raw':!![]})[_0xbc00('0x25')](function(_0x529e39){_0x79cba4=_['filter'](_0x529e39,function(_0x902eda){return _0x902eda['enabled']===0x1||_[_0xbc00('0x5d')]([0x3eb,0x709],_0x902eda[_0xbc00('0x54')]);});if(!_[_0xbc00('0x5e')](_0x79cba4)){return _[_0xbc00('0x2c')](_0x79cba4,function(_0xd38050){return _0xd38050[_0xbc00('0x54')];});}else{return;}})[_0xbc00('0x25')](function(_0x4bfb40){if(_0x4bfb40)_0x13f1e5=_0x4bfb40;if(_[_0xbc00('0x5d')](_0x13f1e5,0x64)){var _0x182923=_[_0xbc00('0x44')](_0x79cba4,{'sectionId':0x64});return hasDefaultDashboard(_0x182923)[_0xbc00('0x25')](function(_0x3bda4c){return _[_0xbc00('0x2c')](_0x79cba4,function(_0x3d63cd){if(_0x3d63cd['sectionId']===0x64){_0x3d63cd[_0xbc00('0x5f')]=_0x3bda4c;}return _0x3d63cd;});});}else{return;}})['then'](function(_0x3e1847){if(_0x3e1847)_0x79cba4=_0x3e1847;if(_[_0xbc00('0x5d')](_0x13f1e5,0x3eb)){var _0x293758=_[_0xbc00('0x44')](_0x79cba4,{'sectionId':0x3eb});return getCustomDashboards(_0x293758)[_0xbc00('0x25')](function(_0x42bcc9){return _[_0xbc00('0x2c')](_0x79cba4,function(_0x13372c){if(_0x293758['enabled']){if(_0x13372c[_0xbc00('0x54')]===0x3eb){_0x13372c['subsections']=_0x42bcc9;}}else{if(_0x13372c[_0xbc00('0x54')]===0x64){_0x13372c[_0xbc00('0x5f')]=_0x42bcc9;}}return _0x13372c;});});}else{return;}})[_0xbc00('0x25')](function(_0x33179d){if(_0x33179d)_0x79cba4=_0x33179d;if(_['includes'](_0x13f1e5,0x709)){var _0x446e30=_[_0xbc00('0x44')](_0x79cba4,{'sectionId':0x709});return getPlugins(_0x446e30)[_0xbc00('0x25')](function(_0x4f1631){if(_0x446e30[_0xbc00('0x60')]){return _['map'](_0x79cba4,function(_0x41e4e2){if(_0x41e4e2[_0xbc00('0x54')]===0x709){_0x41e4e2[_0xbc00('0x5f')]=_0x4f1631;}return _0x41e4e2;});}else{var _0x3308a0={'sectionId':0x76c,'enabled':0x1,'subsections':_0x4f1631};var _0x571dcc=_[_0xbc00('0x2c')](_0x79cba4);_0x571dcc[_0xbc00('0x61')](_0x3308a0);return _0x571dcc;}});}else{return;}})['then'](function(_0x5db44c){if(_0x5db44c)_0x79cba4=_0x5db44c;return _[_0xbc00('0x3e')](_0x79cba4,['enabled',0x1]);})['then'](respondWithResult(_0x14ec73,null))[_0xbc00('0x45')](handleError(_0x14ec73,null));};function hasDefaultDashboard(_0x562065){var _0x1e2bcd=[0x65];return new BPromise(function(_0x41b8be,_0x2bc867){try{if(_0x562065[_0xbc00('0x52')]){_0x41b8be(_0x1e2bcd);}else{return db[_0xbc00('0x53')][_0xbc00('0x62')]({'where':{'sectionId':_0x562065['id']},'raw':!![]})[_0xbc00('0x25')](function(_0x2e070d){_0x2e070d?_0x41b8be(_0x1e2bcd):_0x41b8be();});}}catch(_0x407729){_0x2bc867(_0x407729);}});}function getCustomDashboards(_0x4e7c43){var _0x1c05ae=[];return new BPromise(function(_0x2ec539,_0xc995e5){try{if(_0x4e7c43['autoAssociation']){return db['Dashboard']['findAll']({'raw':!![]})[_0xbc00('0x25')](function(_0x28c5c0){_0x28c5c0[_0xbc00('0x63')](function(_0x16b2c8){_0x1c05ae[_0xbc00('0x61')](_0x16b2c8['id']+0x1869f);});_0x2ec539(_0x1c05ae);});}else{return db[_0xbc00('0x53')][_0xbc00('0x42')]({'where':{'sectionId':_0x4e7c43['id']},'raw':!![]})['then'](function(_0x18462e){_0x18462e[_0xbc00('0x63')](function(_0x2aee94){_0x1c05ae[_0xbc00('0x61')](_0x2aee94[_0xbc00('0x64')]+0x1869f);});_0x2ec539(_0x1c05ae);});}}catch(_0x173fc7){_0xc995e5(_0x173fc7);}});}function getPlugins(_0x1ab7c4){var _0x2ec258=[];return new BPromise(function(_0xbfc36,_0x307156){try{if(_0x1ab7c4[_0xbc00('0x52')]){return db['Plugin'][_0xbc00('0x42')]({'raw':!![]})[_0xbc00('0x25')](function(_0x1b3d30){_0x1b3d30[_0xbc00('0x63')](function(_0x29b4cb){_0x2ec258['push'](_0x29b4cb['id']+0x15b38);});_0xbfc36(_0x2ec258);});}else{return db['UserProfileResource'][_0xbc00('0x42')]({'where':{'sectionId':_0x1ab7c4['id']},'raw':!![]})[_0xbc00('0x25')](function(_0x4bf685){_0x4bf685['forEach'](function(_0x417a6d){_0x2ec258[_0xbc00('0x61')](_0x417a6d['resourceId']+0x15b38);});_0xbfc36(_0x2ec258);});}}catch(_0x127fbc){_0x307156(_0x127fbc);}});}exports[_0xbc00('0x65')]=function(_0x1b5098,_0xb1dbdc){return db[_0xbc00('0x2d')][_0xbc00('0x44')]({'where':{'id':_0x1b5098['params']['id']}})[_0xbc00('0x25')](handleEntityNotFound(_0xb1dbdc,null))[_0xbc00('0x25')](function(_0x1f087a){if(_0x1f087a){return db[_0xbc00('0x50')][_0xbc00('0x51')](function(_0x3bfd42){return db[_0xbc00('0x59')][_0xbc00('0x42')]({'where':{'userProfileId':_0x1b5098['params']['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x28b843){if(_0x28b843){return db[_0xbc00('0x59')][_0xbc00('0x26')]({'where':{'userProfileId':_0x1b5098[_0xbc00('0x49')]['id'],'id':_[_0xbc00('0x2c')](_0x28b843,function(_0x2ab2e0){return _0x2ab2e0['id'];})},'transaction':_0x3bfd42});}})[_0xbc00('0x25')](function(_0x165ead){var _0x15a732=_[_0xbc00('0x2c')](_0x1b5098[_0xbc00('0x47')],function(_0x327059){_0x327059[_0xbc00('0x55')]=_0x1b5098[_0xbc00('0x49')]['id'];return _0x327059;});return db[_0xbc00('0x59')]['bulkCreate'](_0x15a732,{'raw':!![],'transaction':_0x3bfd42});})[_0xbc00('0x25')](function(_0x3f3eca){var _0x5315bc=_['filter'](_[_0xbc00('0x2c')](_0x3f3eca,function(_0xdc922d){return _0xdc922d['get']({'plain':!![]});}),{'includeAll':![]});if(_0x5315bc){return db['UserProfileSection'][_0xbc00('0x42')]({'where':{'userProfileId':_0x1b5098[_0xbc00('0x49')]['id'],'sectionId':_[_0xbc00('0x2c')](_0x5315bc,function(_0x2471a9){return _0x2471a9[_0xbc00('0x54')];})},'attributes':['id',_0xbc00('0x54')],'raw':!![]})[_0xbc00('0x25')](function(_0x2647fe){var _0x231437=_[_0xbc00('0x2c')](_0x1b5098[_0xbc00('0x47')],function(_0x24cbb0){_0x24cbb0[_0xbc00('0x55')]=_0x1b5098[_0xbc00('0x49')]['id'];return _0x24cbb0;});return db[_0xbc00('0x53')][_0xbc00('0x66')](_0x231437,{'raw':!![],'transaction':_0x3bfd42});});}})[_0xbc00('0x45')](handleError(_0xb1dbdc,null));});}})[_0xbc00('0x25')](function(_0x4055f2){var _0x432672=_['map'](_0x4055f2,function(_0x1e8ea7){return _0x1e8ea7[_0xbc00('0x4b')]({'plain':!![]});});})['then'](respondWithResult(_0xb1dbdc,null))['catch'](handleError(_0xb1dbdc,null));};exports[_0xbc00('0x67')]=function(_0x5befd5,_0x3d2f12,_0x1b6fb3){return db['UserProfile']['find']({'where':{'id':_0x5befd5[_0xbc00('0x49')]['id']}})[_0xbc00('0x25')](handleEntityNotFound(_0x3d2f12,null))[_0xbc00('0x25')](function(_0x3346f7){if(_0x3346f7){return _0x3346f7[_0xbc00('0x67')](_0x5befd5[_0xbc00('0x33')][_0xbc00('0x68')]);}})['then'](respondWithStatusCode(_0x3d2f12,null))[_0xbc00('0x45')](handleError(_0x3d2f12,null));};exports[_0xbc00('0x69')]=function(_0xb4d995,_0x7ec97f){var _0x37ee17={};if(!_0xb4d995[_0xbc00('0x33')][_0xbc00('0x6a')])throw new Error(_0xbc00('0x6b'));if(!_0xb4d995[_0xbc00('0x33')][_0xbc00('0x39')](_0xbc00('0x3a'))){_0x37ee17[_0xbc00('0x1d')]=qs[_0xbc00('0x1d')](_0xb4d995[_0xbc00('0x33')][_0xbc00('0x1d')]);_0x37ee17[_0xbc00('0x1e')]=qs[_0xbc00('0x1e')](_0xb4d995[_0xbc00('0x33')][_0xbc00('0x1e')]);}return db[_0xbc00('0x2d')][_0xbc00('0x44')]({'where':{'id':_0xb4d995['params']['id']}})[_0xbc00('0x25')](function(_0x1a20a1){if(!_0x1a20a1)throw new Error(_0xbc00('0x6c')+_0xb4d995['params']['id']);return db['UserProfile'][_0xbc00('0x69')](_0xb4d995);})[_0xbc00('0x25')](respondWithFilteredResult(_0x7ec97f,_0x37ee17))[_0xbc00('0x45')](handleError(_0x7ec97f,null));};
\ No newline at end of file
index 07afb9a..e1a7cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6d=['save','remove','emit','exports','events','UserProfile','setMaxListeners'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x9e6d,0x1d2));var _0xd9e6=function(_0x57f334,_0x1cb1d1){_0x57f334=_0x57f334-0x0;var _0x5a2614=_0x9e6d[_0x57f334];return _0x5a2614;};'use strict';var EventEmitter=require(_0xd9e6('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xd9e6('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xd9e6('0x2')](0x0);var events={'afterCreate':_0xd9e6('0x3'),'afterUpdate':'update','afterDestroy':_0xd9e6('0x4')};function emitEvent(_0x1d5756){return function(_0x2f1c0,_0x3b2951,_0x5e363d){UserProfileEvents[_0xd9e6('0x5')](_0x1d5756+':'+_0x2f1c0['id'],_0x2f1c0);UserProfileEvents[_0xd9e6('0x5')](_0x1d5756,_0x2f1c0);_0x5e363d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xd9e6('0x6')]=UserProfileEvents;
\ No newline at end of file
+var _0x3e24=['../../mysqldb','UserProfile','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x2f88d1,_0x3a071a){var _0x3b1085=function(_0xe2ae79){while(--_0xe2ae79){_0x2f88d1['push'](_0x2f88d1['shift']());}};_0x3b1085(++_0x3a071a);}(_0x3e24,0x167));var _0x43e2=function(_0x12ab53,_0x10a416){_0x12ab53=_0x12ab53-0x0;var _0x2b2a46=_0x3e24[_0x12ab53];return _0x2b2a46;};'use strict';var EventEmitter=require(_0x43e2('0x0'));var UserProfile=require(_0x43e2('0x1'))['db'][_0x43e2('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x43e2('0x3')](0x0);var events={'afterCreate':_0x43e2('0x4'),'afterUpdate':'update','afterDestroy':_0x43e2('0x5')};function emitEvent(_0x1ff04b){return function(_0x5d2806,_0x1dd127,_0x18629c){UserProfileEvents[_0x43e2('0x6')](_0x1ff04b+':'+_0x5d2806['id'],_0x5d2806);UserProfileEvents[_0x43e2('0x6')](_0x1ff04b,_0x5d2806);_0x18629c(null);};}for(var e in events){if(events[_0x43e2('0x7')](e)){var event=events[e];UserProfile[_0x43e2('0x8')](e,emitEvent(event));}}module[_0x43e2('0x9')]=UserProfileEvents;
\ No newline at end of file
index a0addef..0c1c37d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21f4=['ivrcampaigns','mailqueues','mailaccounts','mailsubstatuses','MailSubstatus','OpenchannelQueue','smsqueues','SmsQueue','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','users','telephones','Users','admin','user','zendeskaccounts','ZendeskAccount','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','tags','Tag','templates','Template','triggers','trunks','Trunk','variables','plugins','Plugin','extractedreports','AnalyticExtractedReport','reportId','metrics','AnalyticMetric','charAt','slice','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','sequelize','query','toString','define','raw','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','all','ignore','length','autoAssociation','filters','intersection','attributes','fields','hasOwnProperty','limit','offset','order','sort','where','pick','merge','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','tag','color','openTabs','dataValues','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','models','filter','value','then','map','catch','field','model','findAll','associatedResources','name','UserProfileResource','resourceId','type','childModel','SquareProject','odbc','squarerecordings','SquareRecording','projectName','projects','JscriptyProject','contacts','CmContact','parentSections','ListId','lists','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','VoiceExtension','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','Agents','membername','role','Telephones','User','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','VoiceChanSpy'];(function(_0x120c33,_0x1c9f44){var _0x543b6a=function(_0x17c7ed){while(--_0x17c7ed){_0x120c33['push'](_0x120c33['shift']());}};_0x543b6a(++_0x1c9f44);}(_0x21f4,0x129));var _0x421f=function(_0xf1b2d,_0x170043){_0xf1b2d=_0xf1b2d-0x0;var _0x333b30=_0x21f4[_0xf1b2d];return _0x333b30;};'use strict';var _=require(_0x421f('0x0'));var attributes=require(_0x421f('0x1'));var qs=require(_0x421f('0x2'));var squel=require('squel');module['exports']=function(_0x457ec1){var _0x4c5155=_0x457ec1[_0x421f('0x3')];function _0xc9436(_0x52be45,_0x44ab67){return new Promise(function(_0x2a1111,_0xfa0e8a){if(!_0x44ab67)return _0x2a1111(null);var _0x14e1af=_0x44ab67['filter']?{[_0x44ab67['filter']['field']]:_0x44ab67[_0x421f('0x4')][_0x421f('0x5')]}:undefined;return _0x4c5155[_0x52be45]['findAll']({'where':_0x14e1af,'raw':!![]})[_0x421f('0x6')](function(_0x2abed6){_0x44ab67['associatedResources']=_[_0x421f('0x7')](_0x2abed6,'id');_0x2a1111(_0x44ab67);})[_0x421f('0x8')](function(_0x511cf4){_0xfa0e8a(_0x511cf4);});});}function _0x21480c(_0x4fe893,_0x4a7206){return new Promise(function(_0x5814e2,_0x46aee5){var _0x3242a8=_0x4fe893[_0x421f('0x4')]?{[_0x4fe893[_0x421f('0x4')][_0x421f('0x9')]]:_0x4fe893[_0x421f('0x4')][_0x421f('0x5')]}:undefined;return _0x4c5155[_0x4fe893[_0x421f('0xa')]][_0x421f('0xb')]({'where':_0x3242a8,'raw':!![]})[_0x421f('0x6')](function(_0xa40ea0){_0x4a7206[_0x421f('0xc')]=_[_0x421f('0x7')](_0xa40ea0,function(_0x5b9686){return _0x5b9686[_0x421f('0xd')];});_0x5814e2(_0x4a7206);})[_0x421f('0x8')](function(_0x5e7969){_0x46aee5(_0x5e7969);});});}function _0x1b74c1(_0x33d162,_0x24898d,_0x46a074){if(!_0x24898d)return Promise['resolve'](null);return new Promise(function(_0x1a3cc8,_0x1b4434){return _0x4c5155[_0x421f('0xe')][_0x421f('0xb')]({'where':{'sectionId':_0x24898d['id']},'raw':!![]})[_0x421f('0x6')](function(_0xe0d552){if(_0x33d162[_0x421f('0x9')]&&_0x33d162[_0x421f('0x9')]!=='id'){_0x24898d['associatedResources']=_[_0x421f('0x7')](_0xe0d552,function(_0x4ce6da){return _0x4ce6da[_0x33d162[_0x421f('0x9')]];});}else{if(_0x46a074==='AnalyticExtractedReport'){_0x24898d[_0x421f('0xc')]=_['map'](_0xe0d552,function(_0x47a29d){return{'id':_0x47a29d[_0x421f('0xf')],'type':_0x47a29d[_0x421f('0x10')]};});}else{_0x24898d[_0x421f('0xc')]=_[_0x421f('0x7')](_0xe0d552,function(_0x4ad646){return _0x4ad646[_0x421f('0xf')];});}}_0x1a3cc8(_0x24898d);})[_0x421f('0x8')](function(_0xcc8a01){_0x1b4434(_0xcc8a01);});});}function _0x183a5b(_0x241e44,_0xbeeac7){var _0x44c9d6={'parentSections':[]};switch(_0x241e44['toLowerCase']()){case'squareprojects':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x12');break;case _0x421f('0x13'):_0x44c9d6['childModel']='SquareOdbc';break;case _0x421f('0x14'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x15');_0x44c9d6['parentSections']=[{'name':'SquareProjects','field':'name','foreignKey':_0x421f('0x16')}];break;case _0x421f('0x17'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x18');break;case _0x421f('0x19'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x1a');_0x44c9d6[_0x421f('0x1b')]=[{'name':'Lists','field':'id','foreignKey':_0x421f('0x1c')}];break;case _0x421f('0x1d'):_0x44c9d6[_0x421f('0x11')]='CmList';break;case _0x421f('0x1e'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x1f');break;case _0x421f('0x20'):_0x44c9d6['childModel']=_0x421f('0x21');break;case _0x421f('0x22'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x23');break;case _0x421f('0x24'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x25');break;case _0x421f('0x26'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x27');break;case _0x421f('0x28'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x29');break;case _0x421f('0x2a'):case _0x421f('0x2b'):case'outboundroutes':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x2c');break;case _0x421f('0x2d'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x2e');break;case _0x421f('0x2f'):_0x44c9d6[_0x421f('0x11')]='VoiceMail';break;case _0x421f('0x30'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x31');_0x44c9d6['parentSections']=[{'name':_0x421f('0x32'),'field':_0x421f('0xd'),'foreignKey':_0x421f('0x33'),'model':'User','filter':{'field':_0x421f('0x34'),'value':['agent']}},{'name':_0x421f('0x35'),'field':'name','foreignKey':_0x421f('0x33'),'model':_0x421f('0x36'),'filter':{'field':_0x421f('0x34'),'value':[_0x421f('0x37')]}},{'name':_0x421f('0x38'),'field':'name','foreignKey':'queue','model':_0x421f('0x39'),'filter':{'field':_0x421f('0x10'),'value':[_0x421f('0x3a')]}},{'name':_0x421f('0x3b'),'field':_0x421f('0xd'),'foreignKey':_0x421f('0x3c'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x421f('0x3d')]}}];break;case _0x421f('0x3e'):_0x44c9d6['childModel']=_0x421f('0x3f');break;case'chanspies':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x40');break;case'voiceprefixes':_0x44c9d6[_0x421f('0x11')]='VoicePrefix';break;case _0x421f('0x41'):_0x44c9d6[_0x421f('0x11')]='Campaign';break;case _0x421f('0x42'):_0x44c9d6[_0x421f('0x11')]='MailQueue';break;case _0x421f('0x43'):_0x44c9d6['childModel']='MailAccount';break;case _0x421f('0x44'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x45');break;case'openchannelqueues':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x46');break;case'openchannelaccounts':_0x44c9d6['childModel']='OpenchannelAccount';break;case _0x421f('0x47'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x48');break;case'smsaccounts':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x49');break;case _0x421f('0x4a'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x4b');break;case _0x421f('0x4c'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x4d');break;case _0x421f('0x4e'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x4f');break;case _0x421f('0x50'):case _0x421f('0x51'):_0x44c9d6[_0x421f('0x11')]='VoiceQueue';if(_0xbeeac7){_0x44c9d6['parentSections']=[{'name':_0x421f('0x38')},{'name':_0x421f('0x3b')}];}break;case _0x421f('0x52'):case'agents':case _0x421f('0x53'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x36');if(_0xbeeac7){_0x44c9d6[_0x421f('0x1b')]=[{'name':_0x421f('0x54'),'filter':{'field':_0x421f('0x34'),'value':[_0x421f('0x55'),_0x421f('0x56')]},'ignore':!![]},{'name':'Agents'},{'name':_0x421f('0x35')}];}break;case _0x421f('0x57'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x58');break;case'salesforceaccounts':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x59');break;case'freshdeskaccounts':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x5a');break;case _0x421f('0x5b'):_0x44c9d6[_0x421f('0x11')]='SugarcrmAccount';break;case'deskaccounts':_0x44c9d6[_0x421f('0x11')]='DeskAccount';break;case'zohoaccounts':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x5c');break;case _0x421f('0x5d'):_0x44c9d6['childModel']=_0x421f('0x36');break;case'cannedanswers':_0x44c9d6[_0x421f('0x11')]=_0x421f('0x5e');break;case _0x421f('0x5f'):_0x44c9d6['childModel']=_0x421f('0x60');break;case _0x421f('0x61'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x62');break;case _0x421f('0x63'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x64');break;case _0x421f('0x65'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x66');break;case _0x421f('0x67'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x68');break;case'sounds':_0x44c9d6['childModel']='Sound';break;case _0x421f('0x69'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x6a');break;case _0x421f('0x6b'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x6c');break;case _0x421f('0x6d'):_0x44c9d6[_0x421f('0x11')]='Trigger';break;case _0x421f('0x6e'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x6f');break;case _0x421f('0x70'):_0x44c9d6[_0x421f('0x11')]='Variable';break;case _0x421f('0x71'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x72');break;case _0x421f('0x73'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x74');_0x44c9d6[_0x421f('0x1b')]=[{'name':'Reports','field':'id','foreignKey':_0x421f('0x75')}];break;case _0x421f('0x76'):_0x44c9d6[_0x421f('0x11')]=_0x421f('0x77');break;}return _0x44c9d6;}function _0xa327d6(_0x45aa59,_0x40651a){var _0x5008b4=_0x45aa59[_0x421f('0x78')](0x0)['toUpperCase']()+_0x45aa59[_0x421f('0x79')](0x1);var _0x5bcd13={'type':_0x4c5155[_0x421f('0x7a')][_0x421f('0x7b')][_0x421f('0x7c')],'raw':!![]};return new Promise(function(_0x37eb28,_0x396838){var _0x75b40=squel[_0x421f('0x7d')]()[_0x421f('0x9')](_0x421f('0x7e')+_0x5008b4+_0x421f('0x7f'),'id')[_0x421f('0x9')](_0x421f('0x80'))[_0x421f('0x81')](_0x421f('0x82')+_0x45aa59+_0x421f('0x83'),'ui')['where'](_0x421f('0x84'),_0x40651a['id']);return _0x4c5155[_0x421f('0x85')][_0x421f('0x86')](_0x75b40[_0x421f('0x87')](),_0x5bcd13)[_0x421f('0x6')](function(_0x5353df){_0x40651a[_0x5008b4+'OpenTabs']=_0x5353df;_0x37eb28(_0x5353df);})[_0x421f('0x8')](function(_0x16cbfe){_0x396838(_0x16cbfe);});});}return _0x457ec1[_0x421f('0x88')]('UserProfile',attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x27e42e){var _0x839124={'raw':_0x27e42e[_0x421f('0x86')][_0x421f('0x89')],'where':{}};var _0x2dd49e={};var _0xd536b8={'count':0x0,'rows':[]};var _0x2b76a6=_0x27e42e[_0x421f('0x86')]['section'];var _0x98c19c=_0x27e42e[_0x421f('0x86')]['mergeResources']||![];var _0x431c84=_0x183a5b(_0x2b76a6,_0x98c19c);if(!_0x431c84[_0x421f('0x11')])throw new Error(_0x421f('0x8a')+_0x2b76a6+'\x27');var _0x44d804=[{'name':_0x2b76a6}];if(!_[_0x421f('0x8b')](_0x431c84[_0x421f('0x1b')]))_0x44d804=_0x431c84['parentSections'];var _0x2aaca8=[];for(var _0x5b5b3b=0x0;_0x5b5b3b<_0x44d804['length'];_0x5b5b3b++){_0x2aaca8[_0x421f('0x8c')](_0x4c5155[_0x421f('0x8d')][_0x421f('0x8e')]({'where':{'userProfileId':_0x27e42e[_0x421f('0x8f')]['id'],'name':_0x44d804[_0x5b5b3b]['name']},'raw':!![]}));}return Promise[_0x421f('0x90')](_0x2aaca8)[_0x421f('0x6')](function(_0x2fad7e){var _0x1a9933=_['filter'](_0x2fad7e,function(_0x32fd69){return _0x32fd69?_0x32fd69:undefined;});var _0x51b6e9=_[_0x421f('0x4')](_0x44d804,[_0x421f('0x91'),!![]]);var _0x111ec6=_[_0x421f('0x8b')](_0x1a9933)&&_[_0x421f('0x8b')](_0x51b6e9)?null:_['union'](_0x51b6e9,_0x1a9933);if(!_0x111ec6)return null;var _0x245289=[];for(var _0x2b582b=0x0;_0x2b582b<_0x111ec6[_0x421f('0x92')];_0x2b582b++){var _0x21528d=_[_0x421f('0x8e')](_0x44d804,function(_0x3d4137){return _0x111ec6[_0x2b582b]?_0x3d4137[_0x421f('0xd')]===_0x111ec6[_0x2b582b][_0x421f('0xd')]:null;});if(_0x21528d){if(_0x111ec6[_0x2b582b]['ignore']){_0x245289[_0x421f('0x8c')](_0xc9436(_0x431c84[_0x421f('0x11')],_0x111ec6[_0x2b582b]));}else{if(!_0x111ec6[_0x2b582b][_0x421f('0x93')]){_0x245289[_0x421f('0x8c')](_0x1b74c1(_0x21528d,_0x111ec6[_0x2b582b],_0x431c84[_0x421f('0x11')]));}else{if(_0x21528d[_0x421f('0xa')]){_0x245289[_0x421f('0x8c')](_0x21480c(_0x21528d,_0x111ec6[_0x2b582b]));}}}}}return Promise[_0x421f('0x90')](_0x245289);})[_0x421f('0x6')](function(_0x367830){var _0x45ee9a=_0x367830;var _0x494856=null;if(_0x45ee9a){_0x494856=_0x45ee9a[_0x421f('0x92')]===0x1?_0x45ee9a[0x0]:null;}if(!_0x494856&&!_0x45ee9a)return _0xd536b8;var _0x15584d=_0x4c5155[_0x431c84[_0x421f('0x11')]]['rawAttributes'];_0x2dd49e[_0x421f('0xa')]=_['keys'](_0x15584d);_0x2dd49e[_0x421f('0x86')]=_['keys'](_0x27e42e[_0x421f('0x86')]);_0x2dd49e[_0x421f('0x94')]=_[_0x421f('0x95')](_0x2dd49e[_0x421f('0xa')],_0x2dd49e[_0x421f('0x86')]);_0x839124[_0x421f('0x96')]=_[_0x421f('0x95')](_0x2dd49e[_0x421f('0xa')],qs['fields'](_0x27e42e[_0x421f('0x86')][_0x421f('0x97')]));_0x839124[_0x421f('0x96')]=_0x839124[_0x421f('0x96')][_0x421f('0x92')]?_0x839124[_0x421f('0x96')]:_0x2dd49e[_0x421f('0xa')];if(!_0x27e42e[_0x421f('0x86')][_0x421f('0x98')]('nolimit')){_0x839124[_0x421f('0x99')]=qs[_0x421f('0x99')](_0x27e42e['query'][_0x421f('0x99')]);_0x839124[_0x421f('0x9a')]=qs['offset'](_0x27e42e['query'][_0x421f('0x9a')]);}_0x839124[_0x421f('0x9b')]=qs[_0x421f('0x9c')](_0x27e42e[_0x421f('0x86')][_0x421f('0x9c')]);_0x839124[_0x421f('0x9d')]=qs[_0x421f('0x94')](_[_0x421f('0x9e')](_0x27e42e[_0x421f('0x86')],_0x2dd49e[_0x421f('0x94')]));if(_0x27e42e[_0x421f('0x86')]['filter']){_0x839124[_0x421f('0x9d')]=_[_0x421f('0x9f')](_0x839124[_0x421f('0x9d')],{'$or':_[_0x421f('0x7')](_0x15584d,function(_0x2d5fec){if(_0x2d5fec['type']['key']!==_0x421f('0xa0')){var _0x4460bc={};_0x4460bc[_0x2d5fec[_0x421f('0x9')]]={'$like':'%'+_0x27e42e['query']['filter']+'%'};return _0x4460bc;}})});}var _0x2ebd19=[];var _0x176ebe=null;var _0x4064a9={};if(_0x494856){_0x176ebe=_[_0x421f('0x8e')](_0x44d804,[_0x421f('0xd'),_0x494856['name']]);if(_0x176ebe['field']){_0x4064a9={};if(_0x431c84[_0x421f('0x11')]===_0x421f('0x74')){_0x4064a9[_0x176ebe[_0x421f('0xa1')]]=_[_0x421f('0x7')](_0x494856[_0x421f('0xc')],'id');}else{_0x4064a9[_0x176ebe[_0x421f('0xa1')]]=_0x494856[_0x421f('0xc')];}_0x2ebd19[_0x421f('0x8c')](_0x4064a9);}else{_0x839124[_0x421f('0x9d')]['id']=_0x494856[_0x421f('0xc')];}}else{for(var _0x1ab8e6=0x0;_0x1ab8e6<_0x45ee9a[_0x421f('0x92')];_0x1ab8e6++){_0x176ebe=_['find'](_0x44d804,['name',_0x45ee9a[_0x1ab8e6][_0x421f('0xd')]]);if(_0x176ebe[_0x421f('0x9')]){_0x4064a9={};_0x4064a9[_0x176ebe[_0x421f('0xa1')]]=_0x45ee9a[_0x1ab8e6][_0x421f('0xc')];_0x2ebd19[_0x421f('0x8c')](_0x4064a9);}else{if(!_0x839124[_0x421f('0x9d')]['id'])_0x839124[_0x421f('0x9d')]['id']=[];_0x45ee9a[_0x1ab8e6][_0x421f('0xc')][_0x421f('0xa2')](function(_0x31ddc8){_0x839124[_0x421f('0x9d')]['id'][_0x421f('0x8c')](_0x31ddc8);});}}}if(!_['isEmpty'](_0x2ebd19)){_0x839124[_0x421f('0x9d')]=_[_0x421f('0x9f')](_0x839124[_0x421f('0x9d')],{'$and':{'$or':_0x2ebd19}});}_0x839124=_[_0x421f('0x9f')]({},_0x839124,_0x27e42e[_0x421f('0xa3')]);if(_0x494856&&!_0x494856['autoAssociation']&&_0x431c84['childModel']===_0x421f('0x74')){if(_0x27e42e[_0x421f('0x86')][_0x421f('0xa4')]){_0x839124[_0x421f('0xa5')]=[{'all':!![]}];}return _0x4c5155[_0x431c84[_0x421f('0x11')]][_0x421f('0xb')](_0x839124)['then'](function(_0x3a760d){var _0x3b7e57=[];_0x3a760d['forEach'](function(_0xc3a448){var _0x57ce6e;switch(_0xc3a448[_0x421f('0xa6')]){case _0x421f('0xa7'):_0x57ce6e=_[_0x421f('0x8e')](_0x494856[_0x421f('0xc')],function(_0x350b89){return _0x350b89['id']===_0xc3a448[_0x421f('0x75')]&&_0x350b89[_0x421f('0x10')]===_0x421f('0xa8');});break;case _0x421f('0xa9'):_0x57ce6e=_[_0x421f('0x8e')](_0x494856[_0x421f('0xc')],function(_0x333e1c){return _0x333e1c['id']===_0xc3a448[_0x421f('0x75')]&&_0x333e1c['type']===_0x421f('0xaa');});break;}if(_0x57ce6e)_0x3b7e57[_0x421f('0x8c')](_0xc3a448);});_0xd536b8[_0x421f('0xab')]=_0x3b7e57[_0x421f('0x92')];_0xd536b8[_0x421f('0xac')]=_0x3b7e57;return _0xd536b8;});}else{return _0x4c5155[_0x431c84[_0x421f('0x11')]][_0x421f('0xab')]({'where':_0x839124[_0x421f('0x9d')]})[_0x421f('0x6')](function(_0x3f06ea){_0xd536b8[_0x421f('0xab')]=_0x3f06ea;if(_0x27e42e[_0x421f('0x86')][_0x421f('0xa4')]){if(_0x431c84[_0x421f('0x11')]===_0x421f('0x1a')){_0x839124[_0x421f('0xa5')]=[{'model':_0x4c5155[_0x421f('0x6a')],'as':'Tags','attributes':['id',_0x421f('0xd'),'color'],'required':_0x27e42e[_0x421f('0x86')][_0x421f('0xad')]?!![]:![]},{'model':_0x4c5155[_0x421f('0x6a')],'as':'ThroughTags','attributes':['id',_0x421f('0xd'),_0x421f('0xae')],'through':_0x27e42e[_0x421f('0x86')][_0x421f('0xad')]?{'attributes':[],'where':{'TagId':_0x27e42e['query']['tag']||undefined}}:{},'required':_0x27e42e[_0x421f('0x86')][_0x421f('0xad')]?!![]:![]}];}else{_0x839124[_0x421f('0xa5')]=[{'all':!![]}];}}return _0x4c5155[_0x431c84[_0x421f('0x11')]][_0x421f('0xb')](_0x839124);})[_0x421f('0x6')](function(_0x171021){_0xd536b8[_0x421f('0xac')]=_0x171021;if(_0x2b76a6===_0x421f('0x32')&&_0x27e42e[_0x421f('0x86')][_0x421f('0xaf')]==='true'){var _0x17656d=[];for(var _0x3ba7d0=0x0;_0x3ba7d0<_0xd536b8[_0x421f('0xac')][_0x421f('0x92')];_0x3ba7d0++){_0x17656d['push'](_0xa327d6('chat',_0xd536b8['rows'][_0x3ba7d0][_0x421f('0xb0')]));_0x17656d['push'](_0xa327d6('sms',_0xd536b8[_0x421f('0xac')][_0x3ba7d0][_0x421f('0xb0')]));_0x17656d[_0x421f('0x8c')](_0xa327d6(_0x421f('0xb1'),_0xd536b8[_0x421f('0xac')][_0x3ba7d0][_0x421f('0xb0')]));_0x17656d[_0x421f('0x8c')](_0xa327d6(_0x421f('0xb2'),_0xd536b8[_0x421f('0xac')][_0x3ba7d0][_0x421f('0xb0')]));_0x17656d[_0x421f('0x8c')](_0xa327d6(_0x421f('0xb3'),_0xd536b8['rows'][_0x3ba7d0][_0x421f('0xb0')]));_0x17656d[_0x421f('0x8c')](_0xa327d6(_0x421f('0xb4'),_0xd536b8['rows'][_0x3ba7d0][_0x421f('0xb0')]));}return Promise[_0x421f('0x90')](_0x17656d)[_0x421f('0x6')](function(){return _0xd536b8;});}return _0xd536b8;});}});}}});};
\ No newline at end of file
+var _0xc554=['triggers','Trunk','variables','plugins','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','slice','Sequelize','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','query','toString','OpenTabs','define','user_profiles','raw','section','Invalid\x20section\x20\x27','isEmpty','UserProfileSection','find','params','all','ignore','union','push','length','rawAttributes','keys','filters','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','pick','merge','key','VIRTUAL','foreignKey','options','autoAssociation','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','rows','CmContact','color','tag','ThroughTags','openTabs','true','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','value','findAll','then','map','catch','model','associatedResources','UserProfileResource','field','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','squarerecordings','SquareProjects','projectName','projects','JscriptyProject','contacts','parentSections','Lists','ListId','lists','CmList','companies','globalcustomfields','CmCustomField','chatqueues','ChatQueue','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','Telephones','name','telephone','VoiceQueues','VoiceQueue','inbound','queue','musiconholds','VoiceChanSpy','voiceprefixes','VoicePrefix','Campaign','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','voicequeues','queuecampaigns','QueueCampaigns','agents','telephones','Users','admin','user','ZendeskAccount','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','CannedAnswer','dispositions','customdashboards','Dashboard','Interval','pauses','Pause','scheduler','Sound','Tag','templates','Template'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xc554,0x1d1));var _0x4c55=function(_0x2eac4f,_0x5173f9){_0x2eac4f=_0x2eac4f-0x0;var _0x58f73b=_0xc554[_0x2eac4f];return _0x58f73b;};'use strict';var _=require(_0x4c55('0x0'));var attributes=require(_0x4c55('0x1'));var qs=require(_0x4c55('0x2'));var squel=require(_0x4c55('0x3'));module[_0x4c55('0x4')]=function(_0x313024){var _0x36af47=_0x313024[_0x4c55('0x5')];function _0x859eb8(_0xf95b7a,_0x139cdf){return new Promise(function(_0x1551e8,_0x5517ce){if(!_0x139cdf)return _0x1551e8(null);var _0x3d114a=_0x139cdf[_0x4c55('0x6')]?{[_0x139cdf['filter']['field']]:_0x139cdf[_0x4c55('0x6')][_0x4c55('0x7')]}:undefined;return _0x36af47[_0xf95b7a][_0x4c55('0x8')]({'where':_0x3d114a,'raw':!![]})[_0x4c55('0x9')](function(_0x1dd899){_0x139cdf['associatedResources']=_[_0x4c55('0xa')](_0x1dd899,'id');_0x1551e8(_0x139cdf);})[_0x4c55('0xb')](function(_0x376fc4){_0x5517ce(_0x376fc4);});});}function _0x1a6d3c(_0x89e6c6,_0x4fa8b5){return new Promise(function(_0x4b4d6e,_0x5a56bb){var _0x182fc8=_0x89e6c6['filter']?{[_0x89e6c6['filter']['field']]:_0x89e6c6['filter'][_0x4c55('0x7')]}:undefined;return _0x36af47[_0x89e6c6[_0x4c55('0xc')]]['findAll']({'where':_0x182fc8,'raw':!![]})[_0x4c55('0x9')](function(_0x5ddc31){_0x4fa8b5[_0x4c55('0xd')]=_['map'](_0x5ddc31,function(_0x1c5da4){return _0x1c5da4['name'];});_0x4b4d6e(_0x4fa8b5);})[_0x4c55('0xb')](function(_0x1ab51e){_0x5a56bb(_0x1ab51e);});});}function _0x2f3db5(_0x138fca,_0x16d5fa,_0x4cedef){if(!_0x16d5fa)return Promise['resolve'](null);return new Promise(function(_0x179f65,_0x471ebe){return _0x36af47[_0x4c55('0xe')]['findAll']({'where':{'sectionId':_0x16d5fa['id']},'raw':!![]})[_0x4c55('0x9')](function(_0x282f09){if(_0x138fca[_0x4c55('0xf')]&&_0x138fca['field']!=='id'){_0x16d5fa[_0x4c55('0xd')]=_[_0x4c55('0xa')](_0x282f09,function(_0x56d0fd){return _0x56d0fd[_0x138fca[_0x4c55('0xf')]];});}else{if(_0x4cedef===_0x4c55('0x10')){_0x16d5fa['associatedResources']=_[_0x4c55('0xa')](_0x282f09,function(_0x194fe5){return{'id':_0x194fe5[_0x4c55('0x11')],'type':_0x194fe5[_0x4c55('0x12')]};});}else{_0x16d5fa[_0x4c55('0xd')]=_[_0x4c55('0xa')](_0x282f09,function(_0xc1e520){return _0xc1e520[_0x4c55('0x11')];});}}_0x179f65(_0x16d5fa);})[_0x4c55('0xb')](function(_0x5e6051){_0x471ebe(_0x5e6051);});});}function _0x1d593f(_0x270a8,_0xad42d4){var _0x18454d={'parentSections':[]};switch(_0x270a8[_0x4c55('0x13')]()){case _0x4c55('0x14'):_0x18454d[_0x4c55('0x15')]='SquareProject';break;case'odbc':_0x18454d[_0x4c55('0x15')]='SquareOdbc';break;case _0x4c55('0x16'):_0x18454d['childModel']='SquareRecording';_0x18454d['parentSections']=[{'name':_0x4c55('0x17'),'field':'name','foreignKey':_0x4c55('0x18')}];break;case _0x4c55('0x19'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x1a');break;case _0x4c55('0x1b'):_0x18454d[_0x4c55('0x15')]='CmContact';_0x18454d[_0x4c55('0x1c')]=[{'name':_0x4c55('0x1d'),'field':'id','foreignKey':_0x4c55('0x1e')}];break;case _0x4c55('0x1f'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x20');break;case _0x4c55('0x21'):_0x18454d[_0x4c55('0x15')]='CmCompany';break;case _0x4c55('0x22'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x23');break;case _0x4c55('0x24'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x25');break;case'chatwebsites':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x26');break;case _0x4c55('0x27'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x28');break;case _0x4c55('0x29'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x2a');break;case'inboundroutes':case _0x4c55('0x2b'):case _0x4c55('0x2c'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x2d');break;case _0x4c55('0x2e'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x2f');break;case _0x4c55('0x30'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x31');break;case _0x4c55('0x32'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x33');_0x18454d[_0x4c55('0x1c')]=[{'name':_0x4c55('0x34'),'field':'name','foreignKey':_0x4c55('0x35'),'model':_0x4c55('0x36'),'filter':{'field':_0x4c55('0x37'),'value':[_0x4c55('0x38')]}},{'name':_0x4c55('0x39'),'field':_0x4c55('0x3a'),'foreignKey':_0x4c55('0x35'),'model':'User','filter':{'field':_0x4c55('0x37'),'value':[_0x4c55('0x3b')]}},{'name':_0x4c55('0x3c'),'field':_0x4c55('0x3a'),'foreignKey':'queue','model':_0x4c55('0x3d'),'filter':{'field':_0x4c55('0x12'),'value':[_0x4c55('0x3e')]}},{'name':'QueueCampaigns','field':_0x4c55('0x3a'),'foreignKey':_0x4c55('0x3f'),'model':_0x4c55('0x3d'),'filter':{'field':_0x4c55('0x12'),'value':['outbound']}}];break;case _0x4c55('0x40'):_0x18454d[_0x4c55('0x15')]='VoiceMusicOnHold';break;case'chanspies':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x41');break;case _0x4c55('0x42'):_0x18454d['childModel']=_0x4c55('0x43');break;case'ivrcampaigns':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x44');break;case _0x4c55('0x45'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x46');break;case _0x4c55('0x47'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x48');break;case _0x4c55('0x49'):_0x18454d['childModel']=_0x4c55('0x4a');break;case _0x4c55('0x4b'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x4c');break;case _0x4c55('0x4d'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x4e');break;case _0x4c55('0x4f'):_0x18454d['childModel']=_0x4c55('0x50');break;case _0x4c55('0x51'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x52');break;case _0x4c55('0x53'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x54');break;case _0x4c55('0x55'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x56');break;case'teams':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x57');break;case _0x4c55('0x58'):case _0x4c55('0x59'):_0x18454d['childModel']=_0x4c55('0x3d');if(_0xad42d4){_0x18454d[_0x4c55('0x1c')]=[{'name':_0x4c55('0x3c')},{'name':_0x4c55('0x5a')}];}break;case'users':case _0x4c55('0x5b'):case _0x4c55('0x5c'):_0x18454d[_0x4c55('0x15')]='User';if(_0xad42d4){_0x18454d[_0x4c55('0x1c')]=[{'name':_0x4c55('0x5d'),'filter':{'field':'role','value':[_0x4c55('0x5e'),_0x4c55('0x5f')]},'ignore':!![]},{'name':'Agents'},{'name':_0x4c55('0x39')}];}break;case'zendeskaccounts':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x60');break;case'salesforceaccounts':_0x18454d['childModel']=_0x4c55('0x61');break;case _0x4c55('0x62'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x63');break;case _0x4c55('0x64'):_0x18454d[_0x4c55('0x15')]='SugarcrmAccount';break;case _0x4c55('0x65'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x66');break;case _0x4c55('0x67'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x68');break;case'vtigeraccounts':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x36');break;case'cannedanswers':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x69');break;case _0x4c55('0x6a'):_0x18454d[_0x4c55('0x15')]='Disposition';break;case _0x4c55('0x6b'):_0x18454d['childModel']=_0x4c55('0x6c');break;case'intervals':_0x18454d['childModel']=_0x4c55('0x6d');break;case _0x4c55('0x6e'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x6f');break;case _0x4c55('0x70'):_0x18454d[_0x4c55('0x15')]='Schedule';break;case'sounds':_0x18454d['childModel']=_0x4c55('0x71');break;case'tags':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x72');break;case _0x4c55('0x73'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x74');break;case _0x4c55('0x75'):_0x18454d[_0x4c55('0x15')]='Trigger';break;case'trunks':_0x18454d[_0x4c55('0x15')]=_0x4c55('0x76');break;case _0x4c55('0x77'):_0x18454d[_0x4c55('0x15')]='Variable';break;case _0x4c55('0x78'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x79');break;case _0x4c55('0x7a'):_0x18454d[_0x4c55('0x15')]='AnalyticExtractedReport';_0x18454d['parentSections']=[{'name':_0x4c55('0x7b'),'field':'id','foreignKey':_0x4c55('0x7c')}];break;case _0x4c55('0x7d'):_0x18454d[_0x4c55('0x15')]=_0x4c55('0x7e');break;}return _0x18454d;}function _0x2e5c67(_0x29e6df,_0x54cf58){var _0x3cfac4=_0x29e6df['charAt'](0x0)['toUpperCase']()+_0x29e6df[_0x4c55('0x7f')](0x1);var _0x31fce6={'type':_0x36af47[_0x4c55('0x80')]['QueryTypes'][_0x4c55('0x81')],'raw':!![]};return new Promise(function(_0x46df5c,_0x5efd6c){var _0x224c1c=squel[_0x4c55('0x82')]()[_0x4c55('0xf')](_0x4c55('0x83')+_0x3cfac4+_0x4c55('0x84'),'id')['field'](_0x4c55('0x85'))[_0x4c55('0x86')](_0x4c55('0x87')+_0x29e6df+_0x4c55('0x88'),'ui')[_0x4c55('0x89')](_0x4c55('0x8a'),_0x54cf58['id']);return _0x36af47['sequelize'][_0x4c55('0x8b')](_0x224c1c[_0x4c55('0x8c')](),_0x31fce6)['then'](function(_0x1e3ff0){_0x54cf58[_0x3cfac4+_0x4c55('0x8d')]=_0x1e3ff0;_0x46df5c(_0x1e3ff0);})['catch'](function(_0x26e69b){_0x5efd6c(_0x26e69b);});});}return _0x313024[_0x4c55('0x8e')]('UserProfile',attributes,{'tableName':_0x4c55('0x8f'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x5815da){var _0x36b0f0={'raw':_0x5815da[_0x4c55('0x8b')][_0x4c55('0x90')],'where':{}};var _0x403e74={};var _0x1c4428={'count':0x0,'rows':[]};var _0x5823e4=_0x5815da[_0x4c55('0x8b')][_0x4c55('0x91')];var _0x5b082e=_0x5815da[_0x4c55('0x8b')]['mergeResources']||![];var _0x5cb9f2=_0x1d593f(_0x5823e4,_0x5b082e);if(!_0x5cb9f2['childModel'])throw new Error(_0x4c55('0x92')+_0x5823e4+'\x27');var _0x36c68e=[{'name':_0x5823e4}];if(!_[_0x4c55('0x93')](_0x5cb9f2[_0x4c55('0x1c')]))_0x36c68e=_0x5cb9f2[_0x4c55('0x1c')];var _0x1fd874=[];for(var _0x2f49be=0x0;_0x2f49be<_0x36c68e['length'];_0x2f49be++){_0x1fd874['push'](_0x36af47[_0x4c55('0x94')][_0x4c55('0x95')]({'where':{'userProfileId':_0x5815da[_0x4c55('0x96')]['id'],'name':_0x36c68e[_0x2f49be]['name']},'raw':!![]}));}return Promise[_0x4c55('0x97')](_0x1fd874)[_0x4c55('0x9')](function(_0x5e2ed7){var _0x2355b3=_['filter'](_0x5e2ed7,function(_0x4c8e34){return _0x4c8e34?_0x4c8e34:undefined;});var _0x5d6c4d=_[_0x4c55('0x6')](_0x36c68e,[_0x4c55('0x98'),!![]]);var _0x2d7c70=_[_0x4c55('0x93')](_0x2355b3)&&_[_0x4c55('0x93')](_0x5d6c4d)?null:_[_0x4c55('0x99')](_0x5d6c4d,_0x2355b3);if(!_0x2d7c70)return null;var _0x44e1b5=[];for(var _0x4921dc=0x0;_0x4921dc<_0x2d7c70['length'];_0x4921dc++){var _0x2e3551=_[_0x4c55('0x95')](_0x36c68e,function(_0x4c36b1){return _0x2d7c70[_0x4921dc]?_0x4c36b1['name']===_0x2d7c70[_0x4921dc]['name']:null;});if(_0x2e3551){if(_0x2d7c70[_0x4921dc][_0x4c55('0x98')]){_0x44e1b5[_0x4c55('0x9a')](_0x859eb8(_0x5cb9f2[_0x4c55('0x15')],_0x2d7c70[_0x4921dc]));}else{if(!_0x2d7c70[_0x4921dc]['autoAssociation']){_0x44e1b5[_0x4c55('0x9a')](_0x2f3db5(_0x2e3551,_0x2d7c70[_0x4921dc],_0x5cb9f2[_0x4c55('0x15')]));}else{if(_0x2e3551['model']){_0x44e1b5[_0x4c55('0x9a')](_0x1a6d3c(_0x2e3551,_0x2d7c70[_0x4921dc]));}}}}}return Promise[_0x4c55('0x97')](_0x44e1b5);})[_0x4c55('0x9')](function(_0x1d7b52){var _0x2c5bda=_0x1d7b52;var _0x40ab95=null;if(_0x2c5bda){_0x40ab95=_0x2c5bda[_0x4c55('0x9b')]===0x1?_0x2c5bda[0x0]:null;}if(!_0x40ab95&&!_0x2c5bda)return _0x1c4428;var _0x5ed889=_0x36af47[_0x5cb9f2[_0x4c55('0x15')]][_0x4c55('0x9c')];_0x403e74[_0x4c55('0xc')]=_[_0x4c55('0x9d')](_0x5ed889);_0x403e74[_0x4c55('0x8b')]=_[_0x4c55('0x9d')](_0x5815da[_0x4c55('0x8b')]);_0x403e74[_0x4c55('0x9e')]=_['intersection'](_0x403e74[_0x4c55('0xc')],_0x403e74['query']);_0x36b0f0[_0x4c55('0x9f')]=_['intersection'](_0x403e74[_0x4c55('0xc')],qs['fields'](_0x5815da['query'][_0x4c55('0xa0')]));_0x36b0f0['attributes']=_0x36b0f0[_0x4c55('0x9f')]['length']?_0x36b0f0[_0x4c55('0x9f')]:_0x403e74[_0x4c55('0xc')];if(!_0x5815da[_0x4c55('0x8b')][_0x4c55('0xa1')](_0x4c55('0xa2'))){_0x36b0f0[_0x4c55('0xa3')]=qs[_0x4c55('0xa3')](_0x5815da[_0x4c55('0x8b')][_0x4c55('0xa3')]);_0x36b0f0['offset']=qs['offset'](_0x5815da[_0x4c55('0x8b')][_0x4c55('0xa4')]);}_0x36b0f0['order']=qs[_0x4c55('0xa5')](_0x5815da[_0x4c55('0x8b')][_0x4c55('0xa5')]);_0x36b0f0[_0x4c55('0x89')]=qs[_0x4c55('0x9e')](_[_0x4c55('0xa6')](_0x5815da[_0x4c55('0x8b')],_0x403e74[_0x4c55('0x9e')]));if(_0x5815da[_0x4c55('0x8b')][_0x4c55('0x6')]){_0x36b0f0[_0x4c55('0x89')]=_[_0x4c55('0xa7')](_0x36b0f0[_0x4c55('0x89')],{'$or':_[_0x4c55('0xa')](_0x5ed889,function(_0x35ad16){if(_0x35ad16[_0x4c55('0x12')][_0x4c55('0xa8')]!==_0x4c55('0xa9')){var _0x2d15ec={};_0x2d15ec[_0x35ad16[_0x4c55('0xf')]]={'$like':'%'+_0x5815da['query'][_0x4c55('0x6')]+'%'};return _0x2d15ec;}})});}var _0x5b3547=[];var _0x196cc1=null;var _0x4b049f={};if(_0x40ab95){_0x196cc1=_[_0x4c55('0x95')](_0x36c68e,[_0x4c55('0x3a'),_0x40ab95['name']]);if(_0x196cc1[_0x4c55('0xf')]){_0x4b049f={};if(_0x5cb9f2[_0x4c55('0x15')]===_0x4c55('0x10')){_0x4b049f[_0x196cc1['foreignKey']]=_[_0x4c55('0xa')](_0x40ab95[_0x4c55('0xd')],'id');}else{_0x4b049f[_0x196cc1[_0x4c55('0xaa')]]=_0x40ab95['associatedResources'];}_0x5b3547[_0x4c55('0x9a')](_0x4b049f);}else{_0x36b0f0['where']['id']=_0x40ab95[_0x4c55('0xd')];}}else{for(var _0x4688b8=0x0;_0x4688b8<_0x2c5bda[_0x4c55('0x9b')];_0x4688b8++){_0x196cc1=_[_0x4c55('0x95')](_0x36c68e,[_0x4c55('0x3a'),_0x2c5bda[_0x4688b8][_0x4c55('0x3a')]]);if(_0x196cc1['field']){_0x4b049f={};_0x4b049f[_0x196cc1[_0x4c55('0xaa')]]=_0x2c5bda[_0x4688b8]['associatedResources'];_0x5b3547[_0x4c55('0x9a')](_0x4b049f);}else{if(!_0x36b0f0[_0x4c55('0x89')]['id'])_0x36b0f0[_0x4c55('0x89')]['id']=[];_0x2c5bda[_0x4688b8][_0x4c55('0xd')]['forEach'](function(_0x44ec21){_0x36b0f0[_0x4c55('0x89')]['id'][_0x4c55('0x9a')](_0x44ec21);});}}}if(!_['isEmpty'](_0x5b3547)){_0x36b0f0['where']=_[_0x4c55('0xa7')](_0x36b0f0['where'],{'$and':{'$or':_0x5b3547}});}_0x36b0f0=_[_0x4c55('0xa7')]({},_0x36b0f0,_0x5815da[_0x4c55('0xab')]);if(_0x40ab95&&!_0x40ab95[_0x4c55('0xac')]&&_0x5cb9f2[_0x4c55('0x15')]==='AnalyticExtractedReport'){if(_0x5815da[_0x4c55('0x8b')][_0x4c55('0xad')]){_0x36b0f0[_0x4c55('0xae')]=[{'all':!![]}];}return _0x36af47[_0x5cb9f2[_0x4c55('0x15')]][_0x4c55('0x8')](_0x36b0f0)[_0x4c55('0x9')](function(_0x5159a8){var _0x5b794a=[];_0x5159a8['forEach'](function(_0x548e8f){var _0x37aeec;switch(_0x548e8f[_0x4c55('0xaf')]){case _0x4c55('0xb0'):_0x37aeec=_[_0x4c55('0x95')](_0x40ab95[_0x4c55('0xd')],function(_0x3b6741){return _0x3b6741['id']===_0x548e8f[_0x4c55('0x7c')]&&_0x3b6741['type']===_0x4c55('0xb1');});break;case _0x4c55('0xb2'):_0x37aeec=_['find'](_0x40ab95['associatedResources'],function(_0x5c5f7c){return _0x5c5f7c['id']===_0x548e8f[_0x4c55('0x7c')]&&_0x5c5f7c['type']===_0x4c55('0xb3');});break;}if(_0x37aeec)_0x5b794a[_0x4c55('0x9a')](_0x548e8f);});_0x1c4428[_0x4c55('0xb4')]=_0x5b794a[_0x4c55('0x9b')];_0x1c4428[_0x4c55('0xb5')]=_0x5b794a;return _0x1c4428;});}else{return _0x36af47[_0x5cb9f2[_0x4c55('0x15')]][_0x4c55('0xb4')]({'where':_0x36b0f0[_0x4c55('0x89')]})[_0x4c55('0x9')](function(_0x20e597){_0x1c4428[_0x4c55('0xb4')]=_0x20e597;if(_0x5815da[_0x4c55('0x8b')][_0x4c55('0xad')]){if(_0x5cb9f2['childModel']===_0x4c55('0xb6')){_0x36b0f0[_0x4c55('0xae')]=[{'model':_0x36af47['Tag'],'as':'Tags','attributes':['id','name',_0x4c55('0xb7')],'required':_0x5815da['query'][_0x4c55('0xb8')]?!![]:![]},{'model':_0x36af47[_0x4c55('0x72')],'as':_0x4c55('0xb9'),'attributes':['id',_0x4c55('0x3a'),'color'],'through':_0x5815da[_0x4c55('0x8b')][_0x4c55('0xb8')]?{'attributes':[],'where':{'TagId':_0x5815da[_0x4c55('0x8b')][_0x4c55('0xb8')]||undefined}}:{},'required':_0x5815da[_0x4c55('0x8b')][_0x4c55('0xb8')]?!![]:![]}];}else{_0x36b0f0[_0x4c55('0xae')]=[{'all':!![]}];}}return _0x36af47[_0x5cb9f2[_0x4c55('0x15')]][_0x4c55('0x8')](_0x36b0f0);})['then'](function(_0x539e6d){_0x1c4428['rows']=_0x539e6d;if(_0x5823e4===_0x4c55('0x34')&&_0x5815da['query'][_0x4c55('0xba')]===_0x4c55('0xbb')){var _0x33b5ef=[];for(var _0x2f0cb2=0x0;_0x2f0cb2<_0x1c4428[_0x4c55('0xb5')]['length'];_0x2f0cb2++){_0x33b5ef[_0x4c55('0x9a')](_0x2e5c67('chat',_0x1c4428[_0x4c55('0xb5')][_0x2f0cb2][_0x4c55('0xbc')]));_0x33b5ef['push'](_0x2e5c67(_0x4c55('0xbd'),_0x1c4428[_0x4c55('0xb5')][_0x2f0cb2][_0x4c55('0xbc')]));_0x33b5ef['push'](_0x2e5c67(_0x4c55('0xbe'),_0x1c4428[_0x4c55('0xb5')][_0x2f0cb2][_0x4c55('0xbc')]));_0x33b5ef[_0x4c55('0x9a')](_0x2e5c67(_0x4c55('0xbf'),_0x1c4428['rows'][_0x2f0cb2][_0x4c55('0xbc')]));_0x33b5ef['push'](_0x2e5c67(_0x4c55('0xc0'),_0x1c4428['rows'][_0x2f0cb2][_0x4c55('0xbc')]));_0x33b5ef[_0x4c55('0x9a')](_0x2e5c67(_0x4c55('0xc1'),_0x1c4428['rows'][_0x2f0cb2][_0x4c55('0xbc')]));}return Promise[_0x4c55('0x97')](_0x33b5ef)[_0x4c55('0x9')](function(){return _0x1c4428;});}return _0x1c4428;});}});}}});};
\ No newline at end of file
index 12e2362..e6450cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f94=['socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost'];(function(_0x37fa2b,_0x3adbf7){var _0x44efee=function(_0x5bf7ce){while(--_0x5bf7ce){_0x37fa2b['push'](_0x37fa2b['shift']());}};_0x44efee(++_0x3adbf7);}(_0x7f94,0x65));var _0x47f9=function(_0x164345,_0x3a487b){_0x164345=_0x164345-0x0;var _0x6c8fef=_0x7f94[_0x164345];return _0x6c8fef;};'use strict';var _=require(_0x47f9('0x0'));var util=require('util');var moment=require(_0x47f9('0x1'));var BPromise=require(_0x47f9('0x2'));var rs=require(_0x47f9('0x3'));var fs=require('fs');var Redis=require(_0x47f9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47f9('0x5'));var logger=require(_0x47f9('0x6'))(_0x47f9('0x7'));var config=require(_0x47f9('0x8'));var jayson=require(_0x47f9('0x9'));var client=jayson[_0x47f9('0xa')][_0x47f9('0xb')]({'port':0x232a});config['redis']=_[_0x47f9('0xc')](config[_0x47f9('0xd')],{'host':_0x47f9('0xe'),'port':0x18eb});var socket=require(_0x47f9('0xf'))(new Redis(config[_0x47f9('0xd')]));require(_0x47f9('0x10'))[_0x47f9('0x11')](socket);function respondWithRpcPromise(_0x5228e5,_0x4ea32d,_0x56ebcf){return new BPromise(function(_0x578fbe,_0x2f4e9d){return client[_0x47f9('0x12')](_0x5228e5,_0x56ebcf)[_0x47f9('0x13')](function(_0x32cb8f){logger[_0x47f9('0x14')](_0x47f9('0x15'),_0x4ea32d,'request\x20sent');logger['debug'](_0x47f9('0x16'),_0x4ea32d,'request\x20sent',JSON['stringify'](_0x32cb8f));if(_0x32cb8f['error']){if(_0x32cb8f[_0x47f9('0x17')][_0x47f9('0x18')]===0x1f4){logger['error'](_0x47f9('0x15'),_0x4ea32d,_0x32cb8f[_0x47f9('0x17')][_0x47f9('0x19')]);return _0x2f4e9d(_0x32cb8f[_0x47f9('0x17')]['message']);}logger[_0x47f9('0x17')](_0x47f9('0x15'),_0x4ea32d,_0x32cb8f[_0x47f9('0x17')][_0x47f9('0x19')]);return _0x578fbe(_0x32cb8f[_0x47f9('0x17')]['message']);}else{logger['info']('UserProfile,\x20%s,\x20%s',_0x4ea32d,_0x47f9('0x1a'));_0x578fbe(_0x32cb8f[_0x47f9('0x1b')][_0x47f9('0x19')]);}})[_0x47f9('0x1c')](function(_0x16b44f){logger[_0x47f9('0x17')](_0x47f9('0x15'),_0x4ea32d,_0x16b44f);_0x2f4e9d(_0x16b44f);});});}
\ No newline at end of file
+var _0x4e83=['bluebird','randomstring','ioredis','../../mysqldb','jayson/promise','client','redis','defaults','socket.io-emitter','./userProfile.socket','request','then','info','request\x20sent','debug','stringify','error','code','UserProfile,\x20%s,\x20%s','message','result','catch','lodash','moment'];(function(_0x42aac8,_0x300df5){var _0x5a8f4e=function(_0x4c730b){while(--_0x4c730b){_0x42aac8['push'](_0x42aac8['shift']());}};_0x5a8f4e(++_0x300df5);}(_0x4e83,0x1ae));var _0x34e8=function(_0xf8ef4a,_0x34a9d5){_0xf8ef4a=_0xf8ef4a-0x0;var _0x1869c9=_0x4e83[_0xf8ef4a];return _0x1869c9;};'use strict';var _=require(_0x34e8('0x0'));var util=require('util');var moment=require(_0x34e8('0x1'));var BPromise=require(_0x34e8('0x2'));var rs=require(_0x34e8('0x3'));var fs=require('fs');var Redis=require(_0x34e8('0x4'));var db=require(_0x34e8('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x34e8('0x6'));var client=jayson[_0x34e8('0x7')]['http']({'port':0x232a});config[_0x34e8('0x8')]=_[_0x34e8('0x9')](config[_0x34e8('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x34e8('0xa'))(new Redis(config[_0x34e8('0x8')]));require(_0x34e8('0xb'))['register'](socket);function respondWithRpcPromise(_0x8ad56d,_0x1e3038,_0x42bb8d){return new BPromise(function(_0x46fe66,_0x316e99){return client[_0x34e8('0xc')](_0x8ad56d,_0x42bb8d)[_0x34e8('0xd')](function(_0x6827a3){logger[_0x34e8('0xe')]('UserProfile,\x20%s,\x20%s',_0x1e3038,_0x34e8('0xf'));logger[_0x34e8('0x10')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x1e3038,_0x34e8('0xf'),JSON[_0x34e8('0x11')](_0x6827a3));if(_0x6827a3[_0x34e8('0x12')]){if(_0x6827a3[_0x34e8('0x12')][_0x34e8('0x13')]===0x1f4){logger[_0x34e8('0x12')](_0x34e8('0x14'),_0x1e3038,_0x6827a3[_0x34e8('0x12')][_0x34e8('0x15')]);return _0x316e99(_0x6827a3['error'][_0x34e8('0x15')]);}logger[_0x34e8('0x12')](_0x34e8('0x14'),_0x1e3038,_0x6827a3[_0x34e8('0x12')][_0x34e8('0x15')]);return _0x46fe66(_0x6827a3['error'][_0x34e8('0x15')]);}else{logger[_0x34e8('0xe')](_0x34e8('0x14'),_0x1e3038,_0x34e8('0xf'));_0x46fe66(_0x6827a3[_0x34e8('0x16')][_0x34e8('0x15')]);}})[_0x34e8('0x17')](function(_0x3eb461){logger[_0x34e8('0x12')](_0x34e8('0x14'),_0x1e3038,_0x3eb461);_0x316e99(_0x3eb461);});});}
\ No newline at end of file
index 7ac4eb2..4e6f9a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa01b=['./userProfile.events','save','remove','update','emit','register','length','userProfile:'];(function(_0x81dcac,_0x8ff7db){var _0xc7803b=function(_0x499b29){while(--_0x499b29){_0x81dcac['push'](_0x81dcac['shift']());}};_0xc7803b(++_0x8ff7db);}(_0xa01b,0x118));var _0xba01=function(_0x2a30a4,_0x3d2331){_0x2a30a4=_0x2a30a4-0x0;var _0x2a6e79=_0xa01b[_0x2a30a4];return _0x2a6e79;};'use strict';var UserProfileEvents=require(_0xba01('0x0'));var events=[_0xba01('0x1'),_0xba01('0x2'),_0xba01('0x3')];function createListener(_0x2eff2a,_0xf9c5d3){return function(_0x1d2ed7){_0xf9c5d3[_0xba01('0x4')](_0x2eff2a,_0x1d2ed7);};}function removeListener(_0x12f5ef,_0x55ff38){return function(){UserProfileEvents['removeListener'](_0x12f5ef,_0x55ff38);};}exports[_0xba01('0x5')]=function(_0x517094){for(var _0x3ec66b=0x0,_0x116821=events[_0xba01('0x6')];_0x3ec66b<_0x116821;_0x3ec66b++){var _0x357175=events[_0x3ec66b];var _0x50a399=createListener(_0xba01('0x7')+_0x357175,_0x517094);UserProfileEvents['on'](_0x357175,_0x50a399);}};
\ No newline at end of file
+var _0x9b4a=['removeListener','register','length','userProfile:','save','remove','update'];(function(_0x561771,_0x554760){var _0x54d16e=function(_0x381c1f){while(--_0x381c1f){_0x561771['push'](_0x561771['shift']());}};_0x54d16e(++_0x554760);}(_0x9b4a,0xba));var _0xa9b4=function(_0x236c4f,_0x1887fe){_0x236c4f=_0x236c4f-0x0;var _0x1d9404=_0x9b4a[_0x236c4f];return _0x1d9404;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xa9b4('0x0'),_0xa9b4('0x1'),_0xa9b4('0x2')];function createListener(_0x33b2a7,_0x550b85){return function(_0x39f1ff){_0x550b85['emit'](_0x33b2a7,_0x39f1ff);};}function removeListener(_0xc1eb57,_0x529450){return function(){UserProfileEvents[_0xa9b4('0x3')](_0xc1eb57,_0x529450);};}exports[_0xa9b4('0x4')]=function(_0x38817c){for(var _0x21aee0=0x0,_0x49c046=events[_0xa9b4('0x5')];_0x21aee0<_0x49c046;_0x21aee0++){var _0x46dadf=events[_0x21aee0];var _0x2c922d=createListener(_0xa9b4('0x6')+_0x46dadf,_0x38817c);UserProfileEvents['on'](_0x46dadf,_0x2c922d);}};
\ No newline at end of file
index c52a347..7fac1ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbb4=['isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./userProfileResource.controller','get'];(function(_0x2fe919,_0x94f60a){var _0x1595bb=function(_0x577fc2){while(--_0x577fc2){_0x2fe919['push'](_0x2fe919['shift']());}};_0x1595bb(++_0x94f60a);}(_0xfbb4,0x186));var _0x4fbb=function(_0x2a0cec,_0x52ff2d){_0x2a0cec=_0x2a0cec-0x0;var _0x43e848=_0xfbb4[_0x2a0cec];return _0x43e848;};'use strict';var multer=require(_0x4fbb('0x0'));var util=require(_0x4fbb('0x1'));var path=require(_0x4fbb('0x2'));var timeout=require(_0x4fbb('0x3'));var express=require(_0x4fbb('0x4'));var router=express[_0x4fbb('0x5')]();var fs_extra=require(_0x4fbb('0x6'));var auth=require(_0x4fbb('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4fbb('0x8'));router[_0x4fbb('0x9')]('/',auth[_0x4fbb('0xa')](),controller[_0x4fbb('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x4fbb('0x9')](_0x4fbb('0xc'),auth['isAuthenticated'](),controller[_0x4fbb('0xd')]);router[_0x4fbb('0xe')]('/',auth['isAuthenticated'](),controller[_0x4fbb('0xf')]);router[_0x4fbb('0x10')](_0x4fbb('0xc'),auth[_0x4fbb('0xa')](),controller[_0x4fbb('0x11')]);router['delete'](_0x4fbb('0xc'),auth[_0x4fbb('0xa')](),controller[_0x4fbb('0x12')]);module[_0x4fbb('0x13')]=router;
\ No newline at end of file
+var _0xd225=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','create','put','update','exports','util','path','Router'];(function(_0x2c6b1f,_0x1aa447){var _0xe45989=function(_0x404b2a){while(--_0x404b2a){_0x2c6b1f['push'](_0x2c6b1f['shift']());}};_0xe45989(++_0x1aa447);}(_0xd225,0x1f1));var _0x5d22=function(_0x4f27ed,_0x5eb832){_0x4f27ed=_0x4f27ed-0x0;var _0x54bacc=_0xd225[_0x4f27ed];return _0x54bacc;};'use strict';var multer=require('multer');var util=require(_0x5d22('0x0'));var path=require(_0x5d22('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5d22('0x2')]();var fs_extra=require(_0x5d22('0x3'));var auth=require(_0x5d22('0x4'));var interaction=require(_0x5d22('0x5'));var config=require(_0x5d22('0x6'));var controller=require(_0x5d22('0x7'));router['get']('/',auth[_0x5d22('0x8')](),controller[_0x5d22('0x9')]);router['get'](_0x5d22('0xa'),auth[_0x5d22('0x8')](),controller[_0x5d22('0xb')]);router[_0x5d22('0xc')](_0x5d22('0xd'),auth[_0x5d22('0x8')](),controller[_0x5d22('0xe')]);router[_0x5d22('0xf')]('/',auth[_0x5d22('0x8')](),controller[_0x5d22('0x10')]);router[_0x5d22('0x11')](_0x5d22('0xd'),auth['isAuthenticated'](),controller[_0x5d22('0x12')]);router['delete'](_0x5d22('0xd'),auth[_0x5d22('0x8')](),controller['destroy']);module[_0x5d22('0x13')]=router;
\ No newline at end of file
index a16c133..bcdba72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5bb=['INTEGER','sequelize','exports','STRING'];(function(_0x11af50,_0x2b783c){var _0x13e5ff=function(_0x4f4fb6){while(--_0x4f4fb6){_0x11af50['push'](_0x11af50['shift']());}};_0x13e5ff(++_0x2b783c);}(_0xf5bb,0x1d9));var _0xbf5b=function(_0x575599,_0x3fa713){_0x575599=_0x575599-0x0;var _0x3e0c99=_0xf5bb[_0x575599];return _0x3e0c99;};'use strict';var Sequelize=require(_0xbf5b('0x0'));module[_0xbf5b('0x1')]={'name':{'type':Sequelize[_0xbf5b('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xbf5b('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xbf5b('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xf088=['exports','STRING','INTEGER','sequelize'];(function(_0x3519ed,_0x4ff3ef){var _0x1939bf=function(_0x1c3e62){while(--_0x1c3e62){_0x3519ed['push'](_0x3519ed['shift']());}};_0x1939bf(++_0x4ff3ef);}(_0xf088,0xb3));var _0x8f08=function(_0x40821f,_0x480930){_0x40821f=_0x40821f-0x0;var _0x382663=_0xf088[_0x40821f];return _0x382663;};'use strict';var Sequelize=require(_0x8f08('0x0'));module[_0x8f08('0x1')]={'name':{'type':Sequelize[_0x8f08('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x8f08('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x8f08('0x2')],'allowNull':![]}};
\ No newline at end of file
index aaf9603..809d00d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','end','sendStatus','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','includeAll','include','findAll','then','rows','show','params','intersection','fields','options','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x5fab,0x177));var _0xb5fa=function(_0x235d85,_0x2db080){_0x235d85=_0x235d85-0x0;var _0x559ead=_0x5fab[_0x235d85];return _0x559ead;};'use strict';var emlformat=require(_0xb5fa('0x0'));var rimraf=require(_0xb5fa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5fa('0x2'));var rp=require(_0xb5fa('0x3'));var moment=require(_0xb5fa('0x4'));var BPromise=require(_0xb5fa('0x5'));var Mustache=require(_0xb5fa('0x6'));var util=require(_0xb5fa('0x7'));var path=require(_0xb5fa('0x8'));var sox=require(_0xb5fa('0x9'));var csv=require(_0xb5fa('0xa'));var ejs=require(_0xb5fa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xa'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb5fa('0x11'));var as=require(_0xb5fa('0x12'));var hardwareService=require(_0xb5fa('0x13'));var logger=require(_0xb5fa('0x14'))(_0xb5fa('0x15'));var utils=require(_0xb5fa('0x16'));var config=require(_0xb5fa('0x17'));var licenseUtil=require(_0xb5fa('0x18'));var db=require(_0xb5fa('0x19'))['db'];function respondWithStatusCode(_0x4d3576,_0x2ad830){_0x2ad830=_0x2ad830||0xcc;return function(_0x3dad4d){if(_0x3dad4d){return _0x4d3576['sendStatus'](_0x2ad830);}return _0x4d3576[_0xb5fa('0x1a')](_0x2ad830)['end']();};}function respondWithResult(_0x265992,_0x3fc372){_0x3fc372=_0x3fc372||0xc8;return function(_0x40c914){if(_0x40c914){return _0x265992[_0xb5fa('0x1a')](_0x3fc372)[_0xb5fa('0x1b')](_0x40c914);}};}function respondWithFilteredResult(_0x5371cf,_0x567f31){return function(_0x38e964){if(_0x38e964){var _0x587043=typeof _0x567f31[_0xb5fa('0x1c')]===_0xb5fa('0x1d')&&typeof _0x567f31['limit']==='undefined';var _0x451a55=_0x38e964[_0xb5fa('0x1e')];var _0x32e9e5=_0x587043?0x0:_0x567f31[_0xb5fa('0x1c')];var _0x324ba5=_0x587043?_0x38e964[_0xb5fa('0x1e')]:_0x567f31[_0xb5fa('0x1c')]+_0x567f31[_0xb5fa('0x1f')];var _0xc14dc4;if(_0x324ba5>=_0x451a55){_0x324ba5=_0x451a55;_0xc14dc4=0xc8;}else{_0xc14dc4=0xce;}_0x5371cf[_0xb5fa('0x1a')](_0xc14dc4);return _0x5371cf[_0xb5fa('0x20')](_0xb5fa('0x21'),_0x32e9e5+'-'+_0x324ba5+'/'+_0x451a55)['json'](_0x38e964);}return null;};}function patchUpdates(_0x432bfa){return function(_0x519e20){try{jsonpatch[_0xb5fa('0x22')](_0x519e20,_0x432bfa,!![]);}catch(_0x4a6c04){return BPromise[_0xb5fa('0x23')](_0x4a6c04);}return _0x519e20[_0xb5fa('0x24')]();};}function saveUpdates(_0x4e05c0,_0x40dfdf){return function(_0x3a2ab9){if(_0x3a2ab9){return _0x3a2ab9[_0xb5fa('0x25')](_0x4e05c0)['then'](function(_0x32a85c){return _0x32a85c;});}return null;};}function removeEntity(_0xec108f,_0x444237){return function(_0x542348){if(_0x542348){return _0x542348[_0xb5fa('0x26')]()['then'](function(){_0xec108f[_0xb5fa('0x1a')](0xcc)[_0xb5fa('0x27')]();});}};}function handleEntityNotFound(_0x11053a,_0x543edf){return function(_0x2dbd22){if(!_0x2dbd22){_0x11053a[_0xb5fa('0x28')](0x194);}return _0x2dbd22;};}function handleError(_0x6a455c,_0x20d649){_0x20d649=_0x20d649||0x1f4;return function(_0x568870){logger['error'](_0x568870['stack']);if(_0x568870['name']){delete _0x568870[_0xb5fa('0x29')];}_0x6a455c[_0xb5fa('0x1a')](_0x20d649)[_0xb5fa('0x2a')](_0x568870);};}exports[_0xb5fa('0x2b')]=function(_0x534884,_0x3506a4){var _0x358549={},_0x353314={},_0x409af9={'count':0x0,'rows':[]};var _0x2a5690=_[_0xb5fa('0x2c')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')],function(_0x1f4380){return{'name':_0x1f4380[_0xb5fa('0x2f')],'type':_0x1f4380[_0xb5fa('0x30')][_0xb5fa('0x31')]};});_0x353314[_0xb5fa('0x32')]=_[_0xb5fa('0x2c')](_0x2a5690,_0xb5fa('0x29'));_0x353314[_0xb5fa('0x33')]=_[_0xb5fa('0x34')](_0x534884[_0xb5fa('0x33')]);_0x353314[_0xb5fa('0x35')]=_['intersection'](_0x353314[_0xb5fa('0x32')],_0x353314['query']);_0x358549['attributes']=_['intersection'](_0x353314[_0xb5fa('0x32')],qs['fields'](_0x534884[_0xb5fa('0x33')]['fields']));_0x358549['attributes']=_0x358549[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x358549['attributes']:_0x353314['model'];if(!_0x534884[_0xb5fa('0x33')][_0xb5fa('0x38')](_0xb5fa('0x39'))){_0x358549['limit']=qs[_0xb5fa('0x1f')](_0x534884[_0xb5fa('0x33')]['limit']);_0x358549[_0xb5fa('0x1c')]=qs[_0xb5fa('0x1c')](_0x534884[_0xb5fa('0x33')]['offset']);}_0x358549[_0xb5fa('0x3a')]=qs[_0xb5fa('0x3b')](_0x534884[_0xb5fa('0x33')]['sort']);_0x358549[_0xb5fa('0x3c')]=qs[_0xb5fa('0x35')](_[_0xb5fa('0x3d')](_0x534884[_0xb5fa('0x33')],_0x353314['filters']),_0x2a5690);if(_0x534884['query']['filter']){_0x358549['where']=_['merge'](_0x358549['where'],{'$or':_[_0xb5fa('0x2c')](_0x2a5690,function(_0x4c0a4d){if(_0x4c0a4d[_0xb5fa('0x30')]!==_0xb5fa('0x3e')){var _0x36db1a={};_0x36db1a[_0x4c0a4d[_0xb5fa('0x29')]]={'$like':'%'+_0x534884[_0xb5fa('0x33')][_0xb5fa('0x3f')]+'%'};return _0x36db1a;}})});}_0x358549=_['merge']({},_0x358549,_0x534884['options']);var _0x4c4bf0={'where':_0x358549[_0xb5fa('0x3c')]};return db['UserProfileResource'][_0xb5fa('0x1e')](_0x4c4bf0)['then'](function(_0x58aa97){_0x409af9[_0xb5fa('0x1e')]=_0x58aa97;if(_0x534884[_0xb5fa('0x33')][_0xb5fa('0x40')]){_0x358549[_0xb5fa('0x41')]=[{'all':!![]}];}return db[_0xb5fa('0x2d')][_0xb5fa('0x42')](_0x358549);})[_0xb5fa('0x43')](function(_0x83df0b){_0x409af9[_0xb5fa('0x44')]=_0x83df0b;return _0x409af9;})[_0xb5fa('0x43')](respondWithFilteredResult(_0x3506a4,_0x358549))['catch'](handleError(_0x3506a4,null));};exports[_0xb5fa('0x45')]=function(_0x4bc9df,_0x233f90){var _0x39aac3={'raw':![],'where':{'id':_0x4bc9df[_0xb5fa('0x46')]['id']}},_0x2c7c5f={};_0x2c7c5f[_0xb5fa('0x32')]=_[_0xb5fa('0x34')](db[_0xb5fa('0x2d')][_0xb5fa('0x2e')]);_0x2c7c5f['query']=_[_0xb5fa('0x34')](_0x4bc9df[_0xb5fa('0x33')]);_0x2c7c5f['filters']=_[_0xb5fa('0x47')](_0x2c7c5f['model'],_0x2c7c5f[_0xb5fa('0x33')]);_0x39aac3[_0xb5fa('0x36')]=_['intersection'](_0x2c7c5f['model'],qs[_0xb5fa('0x48')](_0x4bc9df[_0xb5fa('0x33')][_0xb5fa('0x48')]));_0x39aac3[_0xb5fa('0x36')]=_0x39aac3[_0xb5fa('0x36')][_0xb5fa('0x37')]?_0x39aac3[_0xb5fa('0x36')]:_0x2c7c5f[_0xb5fa('0x32')];if(_0x4bc9df['query'][_0xb5fa('0x40')]){_0x39aac3[_0xb5fa('0x41')]=[{'all':!![]}];}_0x39aac3=_['merge']({},_0x39aac3,_0x4bc9df[_0xb5fa('0x49')]);return db[_0xb5fa('0x2d')][_0xb5fa('0x4a')](_0x39aac3)[_0xb5fa('0x43')](handleEntityNotFound(_0x233f90,null))[_0xb5fa('0x43')](respondWithResult(_0x233f90,null))[_0xb5fa('0x4b')](handleError(_0x233f90,null));};exports[_0xb5fa('0x4c')]=function(_0x33eb2c,_0x20f5f5){return db[_0xb5fa('0x2d')][_0xb5fa('0x4c')](_0x33eb2c[_0xb5fa('0x4d')],{})[_0xb5fa('0x43')](respondWithResult(_0x20f5f5,0xc9))[_0xb5fa('0x4b')](handleError(_0x20f5f5,null));};exports[_0xb5fa('0x25')]=function(_0x3a39f2,_0x52f5d8){if(_0x3a39f2['body']['id']){delete _0x3a39f2[_0xb5fa('0x4d')]['id'];}return db['UserProfileResource'][_0xb5fa('0x4a')]({'where':{'id':_0x3a39f2[_0xb5fa('0x46')]['id']}})['then'](handleEntityNotFound(_0x52f5d8,null))[_0xb5fa('0x43')](saveUpdates(_0x3a39f2[_0xb5fa('0x4d')],null))[_0xb5fa('0x43')](respondWithResult(_0x52f5d8,null))[_0xb5fa('0x4b')](handleError(_0x52f5d8,null));};exports[_0xb5fa('0x26')]=function(_0x3ffee0,_0x51d5f7){return db[_0xb5fa('0x2d')]['find']({'where':{'id':_0x3ffee0[_0xb5fa('0x46')]['id']}})[_0xb5fa('0x43')](handleEntityNotFound(_0x51d5f7,null))[_0xb5fa('0x43')](removeEntity(_0x51d5f7,null))['catch'](handleError(_0x51d5f7,null));};exports[_0xb5fa('0x4e')]=function(_0x130a0d,_0x4dea87){return db['UserProfileResource'][_0xb5fa('0x4e')]()[_0xb5fa('0x43')](respondWithResult(_0x4dea87,null))[_0xb5fa('0x4b')](handleError(_0x4dea87,null));};
\ No newline at end of file
+var _0x430c=['status','end','json','limit','undefined','offset','count','set','Content-Range','then','destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','update','find','describe','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus'];(function(_0x27a3cb,_0x4af597){var _0x54ff38=function(_0x3a82d2){while(--_0x3a82d2){_0x27a3cb['push'](_0x27a3cb['shift']());}};_0x54ff38(++_0x4af597);}(_0x430c,0x1a1));var _0xc430=function(_0x4c2f17,_0x5c6821){_0x4c2f17=_0x4c2f17-0x0;var _0x20919e=_0x430c[_0x4c2f17];return _0x20919e;};'use strict';var emlformat=require(_0xc430('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc430('0x1'));var rp=require(_0xc430('0x2'));var moment=require(_0xc430('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc430('0x4'));var csv=require(_0xc430('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc430('0x6'));var _=require('lodash');var squel=require(_0xc430('0x7'));var crypto=require(_0xc430('0x8'));var jsforce=require(_0xc430('0x9'));var deskjs=require(_0xc430('0xa'));var toCsv=require(_0xc430('0x5'));var querystring=require(_0xc430('0xb'));var Papa=require(_0xc430('0xc'));var Redis=require(_0xc430('0xd'));var authService=require(_0xc430('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xc430('0xf'));var hardwareService=require(_0xc430('0x10'));var logger=require('../../config/logger')(_0xc430('0x11'));var utils=require('../../config/utils');var config=require(_0xc430('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xc430('0x13'))['db'];function respondWithStatusCode(_0x8aa2e6,_0xc5f92){_0xc5f92=_0xc5f92||0xcc;return function(_0x1fb8ce){if(_0x1fb8ce){return _0x8aa2e6[_0xc430('0x14')](_0xc5f92);}return _0x8aa2e6[_0xc430('0x15')](_0xc5f92)[_0xc430('0x16')]();};}function respondWithResult(_0x54d851,_0x4e9134){_0x4e9134=_0x4e9134||0xc8;return function(_0x3f359c){if(_0x3f359c){return _0x54d851[_0xc430('0x15')](_0x4e9134)[_0xc430('0x17')](_0x3f359c);}};}function respondWithFilteredResult(_0x2ef538,_0x31d3b7){return function(_0x55cc6c){if(_0x55cc6c){var _0x111598=typeof _0x31d3b7['offset']==='undefined'&&typeof _0x31d3b7[_0xc430('0x18')]===_0xc430('0x19');var _0x2327c5=_0x55cc6c['count'];var _0x5d3acc=_0x111598?0x0:_0x31d3b7[_0xc430('0x1a')];var _0x4c1937=_0x111598?_0x55cc6c[_0xc430('0x1b')]:_0x31d3b7['offset']+_0x31d3b7['limit'];var _0x2f3203;if(_0x4c1937>=_0x2327c5){_0x4c1937=_0x2327c5;_0x2f3203=0xc8;}else{_0x2f3203=0xce;}_0x2ef538['status'](_0x2f3203);return _0x2ef538[_0xc430('0x1c')](_0xc430('0x1d'),_0x5d3acc+'-'+_0x4c1937+'/'+_0x2327c5)[_0xc430('0x17')](_0x55cc6c);}return null;};}function patchUpdates(_0x1f90bb){return function(_0x2a1ea1){try{jsonpatch['apply'](_0x2a1ea1,_0x1f90bb,!![]);}catch(_0x388a2f){return BPromise['reject'](_0x388a2f);}return _0x2a1ea1['save']();};}function saveUpdates(_0x3b7c3d,_0x2ea352){return function(_0x3c7afa){if(_0x3c7afa){return _0x3c7afa['update'](_0x3b7c3d)[_0xc430('0x1e')](function(_0x57d26e){return _0x57d26e;});}return null;};}function removeEntity(_0x23425d,_0x22ebfb){return function(_0x4efecd){if(_0x4efecd){return _0x4efecd[_0xc430('0x1f')]()[_0xc430('0x1e')](function(){_0x23425d['status'](0xcc)[_0xc430('0x16')]();});}};}function handleEntityNotFound(_0x59c498,_0x3aa85e){return function(_0x4b5280){if(!_0x4b5280){_0x59c498[_0xc430('0x14')](0x194);}return _0x4b5280;};}function handleError(_0x21e28a,_0x50110b){_0x50110b=_0x50110b||0x1f4;return function(_0x33433f){logger[_0xc430('0x20')](_0x33433f[_0xc430('0x21')]);if(_0x33433f[_0xc430('0x22')]){delete _0x33433f[_0xc430('0x22')];}_0x21e28a['status'](_0x50110b)[_0xc430('0x23')](_0x33433f);};}exports[_0xc430('0x24')]=function(_0x1c1da9,_0x1591e3){var _0x542cba={},_0x1f8086={},_0x4cf56c={'count':0x0,'rows':[]};var _0x1d65ee=_['map'](db[_0xc430('0x25')][_0xc430('0x26')],function(_0xfc8767){return{'name':_0xfc8767[_0xc430('0x27')],'type':_0xfc8767['type'][_0xc430('0x28')]};});_0x1f8086[_0xc430('0x29')]=_[_0xc430('0x2a')](_0x1d65ee,_0xc430('0x22'));_0x1f8086['query']=_[_0xc430('0x2b')](_0x1c1da9[_0xc430('0x2c')]);_0x1f8086['filters']=_[_0xc430('0x2d')](_0x1f8086['model'],_0x1f8086['query']);_0x542cba[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x1f8086[_0xc430('0x29')],qs[_0xc430('0x2f')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x2f')]));_0x542cba[_0xc430('0x2e')]=_0x542cba[_0xc430('0x2e')]['length']?_0x542cba[_0xc430('0x2e')]:_0x1f8086['model'];if(!_0x1c1da9[_0xc430('0x2c')][_0xc430('0x30')](_0xc430('0x31'))){_0x542cba[_0xc430('0x18')]=qs['limit'](_0x1c1da9[_0xc430('0x2c')]['limit']);_0x542cba['offset']=qs[_0xc430('0x1a')](_0x1c1da9[_0xc430('0x2c')]['offset']);}_0x542cba[_0xc430('0x32')]=qs[_0xc430('0x33')](_0x1c1da9[_0xc430('0x2c')][_0xc430('0x33')]);_0x542cba[_0xc430('0x34')]=qs[_0xc430('0x35')](_[_0xc430('0x36')](_0x1c1da9[_0xc430('0x2c')],_0x1f8086[_0xc430('0x35')]),_0x1d65ee);if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x37')]){_0x542cba[_0xc430('0x34')]=_[_0xc430('0x38')](_0x542cba[_0xc430('0x34')],{'$or':_[_0xc430('0x2a')](_0x1d65ee,function(_0x537e4c){if(_0x537e4c[_0xc430('0x39')]!==_0xc430('0x3a')){var _0x24363b={};_0x24363b[_0x537e4c[_0xc430('0x22')]]={'$like':'%'+_0x1c1da9['query'][_0xc430('0x37')]+'%'};return _0x24363b;}})});}_0x542cba=_[_0xc430('0x38')]({},_0x542cba,_0x1c1da9[_0xc430('0x3b')]);var _0x45b3dc={'where':_0x542cba[_0xc430('0x34')]};return db[_0xc430('0x25')]['count'](_0x45b3dc)[_0xc430('0x1e')](function(_0x348f2f){_0x4cf56c[_0xc430('0x1b')]=_0x348f2f;if(_0x1c1da9[_0xc430('0x2c')][_0xc430('0x3c')]){_0x542cba[_0xc430('0x3d')]=[{'all':!![]}];}return db[_0xc430('0x25')][_0xc430('0x3e')](_0x542cba);})[_0xc430('0x1e')](function(_0x4174d2){_0x4cf56c[_0xc430('0x3f')]=_0x4174d2;return _0x4cf56c;})[_0xc430('0x1e')](respondWithFilteredResult(_0x1591e3,_0x542cba))[_0xc430('0x40')](handleError(_0x1591e3,null));};exports[_0xc430('0x41')]=function(_0x5a9c4b,_0x47edb0){var _0x4983e0={'raw':![],'where':{'id':_0x5a9c4b[_0xc430('0x42')]['id']}},_0x262063={};_0x262063[_0xc430('0x29')]=_[_0xc430('0x2b')](db[_0xc430('0x25')][_0xc430('0x26')]);_0x262063[_0xc430('0x2c')]=_[_0xc430('0x2b')](_0x5a9c4b[_0xc430('0x2c')]);_0x262063[_0xc430('0x35')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],_0x262063[_0xc430('0x2c')]);_0x4983e0[_0xc430('0x2e')]=_[_0xc430('0x2d')](_0x262063[_0xc430('0x29')],qs['fields'](_0x5a9c4b[_0xc430('0x2c')][_0xc430('0x2f')]));_0x4983e0[_0xc430('0x2e')]=_0x4983e0[_0xc430('0x2e')][_0xc430('0x43')]?_0x4983e0[_0xc430('0x2e')]:_0x262063[_0xc430('0x29')];if(_0x5a9c4b[_0xc430('0x2c')]['includeAll']){_0x4983e0[_0xc430('0x3d')]=[{'all':!![]}];}_0x4983e0=_['merge']({},_0x4983e0,_0x5a9c4b[_0xc430('0x3b')]);return db[_0xc430('0x25')]['find'](_0x4983e0)['then'](handleEntityNotFound(_0x47edb0,null))[_0xc430('0x1e')](respondWithResult(_0x47edb0,null))['catch'](handleError(_0x47edb0,null));};exports['create']=function(_0x10db27,_0x4eafae){return db[_0xc430('0x25')][_0xc430('0x44')](_0x10db27[_0xc430('0x45')],{})['then'](respondWithResult(_0x4eafae,0xc9))[_0xc430('0x40')](handleError(_0x4eafae,null));};exports[_0xc430('0x46')]=function(_0x19e563,_0x549400){if(_0x19e563[_0xc430('0x45')]['id']){delete _0x19e563[_0xc430('0x45')]['id'];}return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x19e563[_0xc430('0x42')]['id']}})[_0xc430('0x1e')](handleEntityNotFound(_0x549400,null))[_0xc430('0x1e')](saveUpdates(_0x19e563['body'],null))[_0xc430('0x1e')](respondWithResult(_0x549400,null))[_0xc430('0x40')](handleError(_0x549400,null));};exports[_0xc430('0x1f')]=function(_0x4e9aff,_0x23cb41){return db[_0xc430('0x25')][_0xc430('0x47')]({'where':{'id':_0x4e9aff[_0xc430('0x42')]['id']}})['then'](handleEntityNotFound(_0x23cb41,null))[_0xc430('0x1e')](removeEntity(_0x23cb41,null))['catch'](handleError(_0x23cb41,null));};exports[_0xc430('0x48')]=function(_0x214954,_0x2a5143){return db[_0xc430('0x25')][_0xc430('0x48')]()[_0xc430('0x1e')](respondWithResult(_0x2a5143,null))['catch'](handleError(_0x2a5143,null));};
\ No newline at end of file
index bbd8900..58830a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0623=['api','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes','exports','UserProfileResource','resourceId','sectionId','lodash','util','../../config/logger'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x0623,0x15c));var _0x3062=function(_0x221c3f,_0x149aeb){_0x221c3f=_0x221c3f-0x0;var _0x3a8624=_0x0623[_0x221c3f];return _0x3a8624;};'use strict';var _=require(_0x3062('0x0'));var util=require(_0x3062('0x1'));var logger=require(_0x3062('0x2'))(_0x3062('0x3'));var moment=require('moment');var BPromise=require(_0x3062('0x4'));var rp=require(_0x3062('0x5'));var fs=require('fs');var path=require(_0x3062('0x6'));var rimraf=require('rimraf');var config=require(_0x3062('0x7'));var attributes=require(_0x3062('0x8'));module[_0x3062('0x9')]=function(_0x56202b,_0x4b5ff5){return _0x56202b['define'](_0x3062('0xa'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x3062('0xb'),_0x3062('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x18dc=['bluebird','request-promise','rimraf','../../config/environment','./userProfileResource.attributes','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment'];(function(_0x1dd9a9,_0x4fe31d){var _0x122b7d=function(_0x2d2b77){while(--_0x2d2b77){_0x1dd9a9['push'](_0x1dd9a9['shift']());}};_0x122b7d(++_0x4fe31d);}(_0x18dc,0xb0));var _0xc18d=function(_0x3bdde7,_0x5949fd){_0x3bdde7=_0x3bdde7-0x0;var _0xf94a37=_0x18dc[_0x3bdde7];return _0xf94a37;};'use strict';var _=require(_0xc18d('0x0'));var util=require('util');var logger=require(_0xc18d('0x1'))(_0xc18d('0x2'));var moment=require(_0xc18d('0x3'));var BPromise=require(_0xc18d('0x4'));var rp=require(_0xc18d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc18d('0x6'));var config=require(_0xc18d('0x7'));var attributes=require(_0xc18d('0x8'));module['exports']=function(_0x58610f,_0x54c0a2){return _0x58610f[_0xc18d('0x9')](_0xc18d('0xa'),attributes,{'tableName':_0xc18d('0xb'),'paranoid':![],'indexes':[{'name':_0xc18d('0xc'),'fields':[_0xc18d('0xd'),_0xc18d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 580a75e..c94509a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ace=['UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x7f067a,_0x483183){var _0x4ae9b2=function(_0x2116a3){while(--_0x2116a3){_0x7f067a['push'](_0x7f067a['shift']());}};_0x4ae9b2(++_0x483183);}(_0x3ace,0x17b));var _0xe3ac=function(_0x2e46d1,_0x518c83){_0x2e46d1=_0x2e46d1-0x0;var _0x772645=_0x3ace[_0x2e46d1];return _0x772645;};'use strict';var _=require(_0xe3ac('0x0'));var util=require(_0xe3ac('0x1'));var moment=require(_0xe3ac('0x2'));var BPromise=require(_0xe3ac('0x3'));var rs=require(_0xe3ac('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe3ac('0x5'))['db'];var utils=require(_0xe3ac('0x6'));var logger=require('../../config/logger')(_0xe3ac('0x7'));var config=require(_0xe3ac('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe3ac('0x9')][_0xe3ac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5cbe96,_0x178af7,_0x171a53){return new BPromise(function(_0x737edf,_0x104d9d){return client[_0xe3ac('0xb')](_0x5cbe96,_0x171a53)[_0xe3ac('0xc')](function(_0x292822){logger[_0xe3ac('0xd')](_0xe3ac('0xe'),_0x178af7,_0xe3ac('0xf'));logger[_0xe3ac('0x10')](_0xe3ac('0x11'),_0x178af7,_0xe3ac('0xf'),JSON['stringify'](_0x292822));if(_0x292822[_0xe3ac('0x12')]){if(_0x292822[_0xe3ac('0x12')][_0xe3ac('0x13')]===0x1f4){logger[_0xe3ac('0x12')](_0xe3ac('0xe'),_0x178af7,_0x292822[_0xe3ac('0x12')][_0xe3ac('0x14')]);return _0x104d9d(_0x292822[_0xe3ac('0x12')]['message']);}logger['error']('UserProfileResource,\x20%s,\x20%s',_0x178af7,_0x292822['error'][_0xe3ac('0x14')]);return _0x737edf(_0x292822[_0xe3ac('0x12')][_0xe3ac('0x14')]);}else{logger['info'](_0xe3ac('0xe'),_0x178af7,_0xe3ac('0xf'));_0x737edf(_0x292822[_0xe3ac('0x15')]['message']);}})['catch'](function(_0x322407){logger[_0xe3ac('0x12')](_0xe3ac('0xe'),_0x178af7,_0x322407);_0x104d9d(_0x322407);});});}
\ No newline at end of file
+var _0x316a=['error','code','message','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent'];(function(_0x50fb35,_0x51fa95){var _0x232398=function(_0x5685f1){while(--_0x5685f1){_0x50fb35['push'](_0x50fb35['shift']());}};_0x232398(++_0x51fa95);}(_0x316a,0x104));var _0xa316=function(_0x587b28,_0x2d23b6){_0x587b28=_0x587b28-0x0;var _0x462aa0=_0x316a[_0x587b28];return _0x462aa0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa316('0x0'));var BPromise=require(_0xa316('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa316('0x2'))['db'];var utils=require(_0xa316('0x3'));var logger=require(_0xa316('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa316('0x5'));var client=jayson[_0xa316('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x294480,_0x19ced2,_0x3deb0d){return new BPromise(function(_0x1df458,_0x4bf63c){return client[_0xa316('0x7')](_0x294480,_0x3deb0d)[_0xa316('0x8')](function(_0xaf149d){logger[_0xa316('0x9')](_0xa316('0xa'),_0x19ced2,_0xa316('0xb'));logger['debug']('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x19ced2,_0xa316('0xb'),JSON['stringify'](_0xaf149d));if(_0xaf149d[_0xa316('0xc')]){if(_0xaf149d['error'][_0xa316('0xd')]===0x1f4){logger[_0xa316('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x19ced2,_0xaf149d[_0xa316('0xc')][_0xa316('0xe')]);return _0x4bf63c(_0xaf149d[_0xa316('0xc')][_0xa316('0xe')]);}logger['error']('UserProfileResource,\x20%s,\x20%s',_0x19ced2,_0xaf149d[_0xa316('0xc')][_0xa316('0xe')]);return _0x1df458(_0xaf149d['error'][_0xa316('0xe')]);}else{logger[_0xa316('0x9')]('UserProfileResource,\x20%s,\x20%s',_0x19ced2,'request\x20sent');_0x1df458(_0xaf149d[_0xa316('0xf')][_0xa316('0xe')]);}})[_0xa316('0x10')](function(_0x7790ea){logger['error']('UserProfileResource,\x20%s,\x20%s',_0x19ced2,_0x7790ea);_0x4bf63c(_0x7790ea);});});}
\ No newline at end of file
index 2228400..0ed84f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8648=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put'];(function(_0x2f92a9,_0x3d835a){var _0x3d22ef=function(_0x274613){while(--_0x274613){_0x2f92a9['push'](_0x2f92a9['shift']());}};_0x3d22ef(++_0x3d835a);}(_0x8648,0x17a));var _0x8864=function(_0xec0013,_0x2d89b6){_0xec0013=_0xec0013-0x0;var _0x581ac6=_0x8648[_0xec0013];return _0x581ac6;};'use strict';var multer=require(_0x8864('0x0'));var util=require(_0x8864('0x1'));var path=require(_0x8864('0x2'));var timeout=require(_0x8864('0x3'));var express=require(_0x8864('0x4'));var router=express['Router']();var fs_extra=require(_0x8864('0x5'));var auth=require(_0x8864('0x6'));var interaction=require(_0x8864('0x7'));var config=require('../../config/environment');var controller=require(_0x8864('0x8'));router[_0x8864('0x9')]('/',auth[_0x8864('0xa')](),controller[_0x8864('0xb')]);router[_0x8864('0x9')](_0x8864('0xc'),auth['isAuthenticated'](),controller[_0x8864('0xd')]);router[_0x8864('0x9')](_0x8864('0xe'),auth[_0x8864('0xa')](),controller['show']);router[_0x8864('0xf')]('/',auth[_0x8864('0xa')](),controller[_0x8864('0x10')]);router[_0x8864('0x11')](_0x8864('0xe'),auth[_0x8864('0xa')](),controller[_0x8864('0x12')]);router[_0x8864('0x13')](_0x8864('0xe'),auth[_0x8864('0xa')](),controller[_0x8864('0x14')]);module[_0x8864('0x15')]=router;
\ No newline at end of file
+var _0xd8d7=['put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','index','get','/describe','/:id','show','post','create'];(function(_0x2f0c1a,_0x259a11){var _0x254a78=function(_0x44addb){while(--_0x44addb){_0x2f0c1a['push'](_0x2f0c1a['shift']());}};_0x254a78(++_0x259a11);}(_0xd8d7,0xb4));var _0x7d8d=function(_0x315aea,_0x318a80){_0x315aea=_0x315aea-0x0;var _0x4a4bdb=_0xd8d7[_0x315aea];return _0x4a4bdb;};'use strict';var multer=require(_0x7d8d('0x0'));var util=require(_0x7d8d('0x1'));var path=require(_0x7d8d('0x2'));var timeout=require(_0x7d8d('0x3'));var express=require(_0x7d8d('0x4'));var router=express['Router']();var fs_extra=require(_0x7d8d('0x5'));var auth=require(_0x7d8d('0x6'));var interaction=require(_0x7d8d('0x7'));var config=require(_0x7d8d('0x8'));var controller=require(_0x7d8d('0x9'));router['get']('/',auth[_0x7d8d('0xa')](),controller[_0x7d8d('0xb')]);router[_0x7d8d('0xc')](_0x7d8d('0xd'),auth[_0x7d8d('0xa')](),controller['describe']);router[_0x7d8d('0xc')](_0x7d8d('0xe'),auth[_0x7d8d('0xa')](),controller[_0x7d8d('0xf')]);router[_0x7d8d('0x10')]('/',auth[_0x7d8d('0xa')](),controller[_0x7d8d('0x11')]);router[_0x7d8d('0x12')]('/:id',auth[_0x7d8d('0xa')](),controller[_0x7d8d('0x13')]);router['delete'](_0x7d8d('0xe'),auth[_0x7d8d('0xa')](),controller[_0x7d8d('0x14')]);module[_0x7d8d('0x15')]=router;
\ No newline at end of file
index 324ddaa..3396952 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['STRING','INTEGER','BOOLEAN','setDataValue','getDataValue','crudPermissions','sequelize'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x373d,0x1e2));var _0xd373=function(_0x26313b,_0xba671e){_0x26313b=_0x26313b-0x0;var _0xc88161=_0x373d[_0x26313b];return _0xc88161;};'use strict';var Sequelize=require(_0xd373('0x0'));module['exports']={'name':{'type':Sequelize[_0xd373('0x1')],'allowNull':![]},'category':{'type':Sequelize[_0xd373('0x1')],'allowNull':![]},'sectionId':{'type':Sequelize[_0xd373('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0xd373('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xd373('0x1')],'set':function(_0x547fca){this[_0xd373('0x4')]('crudPermissions',_0x547fca?_0x547fca['join'](''):[]);},'get':function(){return this[_0xd373('0x5')](_0xd373('0x6'))?this[_0xd373('0x5')](_0xd373('0x6'))['split'](''):[];}}};
\ No newline at end of file
+var _0xb9a7=['getDataValue','split','exports','BOOLEAN','STRING','setDataValue','crudPermissions','join'];(function(_0x5f0cb1,_0x259c54){var _0x1ed444=function(_0x130fd0){while(--_0x130fd0){_0x5f0cb1['push'](_0x5f0cb1['shift']());}};_0x1ed444(++_0x259c54);}(_0xb9a7,0x112));var _0x7b9a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xb9a7[_0x36c5b0];return _0xf19333;};'use strict';var Sequelize=require('sequelize');module[_0x7b9a('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x7b9a('0x1')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x7b9a('0x2')],'set':function(_0x40ef7d){this[_0x7b9a('0x3')](_0x7b9a('0x4'),_0x40ef7d?_0x40ef7d[_0x7b9a('0x5')](''):[]);},'get':function(){return this[_0x7b9a('0x6')](_0x7b9a('0x4'))?this[_0x7b9a('0x6')](_0x7b9a('0x4'))[_0x7b9a('0x7')](''):[];}}};
\ No newline at end of file
index 3add6f2..722dd75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d1b=['order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','include','create','body','find','eml-format','rimraf','zip-dir','request-promise','moment','util','sox','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','error','stack','name','index','map','UserProfileSection','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x4af605,_0x14247b){var _0x592cca=function(_0x377d20){while(--_0x377d20){_0x4af605['push'](_0x4af605['shift']());}};_0x592cca(++_0x14247b);}(_0x0d1b,0x1bb));var _0xb0d1=function(_0x673d54,_0x18fa86){_0x673d54=_0x673d54-0x0;var _0x12b68a=_0x0d1b[_0x673d54];return _0x12b68a;};'use strict';var emlformat=require(_0xb0d1('0x0'));var rimraf=require(_0xb0d1('0x1'));var zipdir=require(_0xb0d1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb0d1('0x3'));var moment=require(_0xb0d1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb0d1('0x5'));var path=require('path');var sox=require(_0xb0d1('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb0d1('0x7'));var _=require('lodash');var squel=require(_0xb0d1('0x8'));var crypto=require(_0xb0d1('0x9'));var jsforce=require(_0xb0d1('0xa'));var deskjs=require(_0xb0d1('0xb'));var toCsv=require('to-csv');var querystring=require(_0xb0d1('0xc'));var Papa=require(_0xb0d1('0xd'));var Redis=require('ioredis');var authService=require(_0xb0d1('0xe'));var qs=require(_0xb0d1('0xf'));var as=require(_0xb0d1('0x10'));var hardwareService=require(_0xb0d1('0x11'));var logger=require(_0xb0d1('0x12'))(_0xb0d1('0x13'));var utils=require('../../config/utils');var config=require(_0xb0d1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xb0d1('0x15'))['db'];function respondWithStatusCode(_0x2e3af9,_0x23b8aa){_0x23b8aa=_0x23b8aa||0xcc;return function(_0x2c8f11){if(_0x2c8f11){return _0x2e3af9[_0xb0d1('0x16')](_0x23b8aa);}return _0x2e3af9[_0xb0d1('0x17')](_0x23b8aa)[_0xb0d1('0x18')]();};}function respondWithResult(_0xb7d6aa,_0x139030){_0x139030=_0x139030||0xc8;return function(_0x167dd1){if(_0x167dd1){return _0xb7d6aa[_0xb0d1('0x17')](_0x139030)[_0xb0d1('0x19')](_0x167dd1);}};}function respondWithFilteredResult(_0xd570bc,_0x3dacb4){return function(_0x98578){if(_0x98578){var _0x391637=typeof _0x3dacb4[_0xb0d1('0x1a')]===_0xb0d1('0x1b')&&typeof _0x3dacb4[_0xb0d1('0x1c')]===_0xb0d1('0x1b');var _0x230636=_0x98578[_0xb0d1('0x1d')];var _0x3e15b6=_0x391637?0x0:_0x3dacb4[_0xb0d1('0x1a')];var _0x2d409e=_0x391637?_0x98578[_0xb0d1('0x1d')]:_0x3dacb4[_0xb0d1('0x1a')]+_0x3dacb4['limit'];var _0x5362f4;if(_0x2d409e>=_0x230636){_0x2d409e=_0x230636;_0x5362f4=0xc8;}else{_0x5362f4=0xce;}_0xd570bc[_0xb0d1('0x17')](_0x5362f4);return _0xd570bc[_0xb0d1('0x1e')](_0xb0d1('0x1f'),_0x3e15b6+'-'+_0x2d409e+'/'+_0x230636)['json'](_0x98578);}return null;};}function patchUpdates(_0x1a0319){return function(_0x48772e){try{jsonpatch['apply'](_0x48772e,_0x1a0319,!![]);}catch(_0x88710a){return BPromise[_0xb0d1('0x20')](_0x88710a);}return _0x48772e['save']();};}function saveUpdates(_0x1891c8,_0x702f67){return function(_0x398c5c){if(_0x398c5c){return _0x398c5c[_0xb0d1('0x21')](_0x1891c8)[_0xb0d1('0x22')](function(_0x49d0ed){return _0x49d0ed;});}return null;};}function removeEntity(_0x216dce,_0x1fe727){return function(_0x1824c7){if(_0x1824c7){return _0x1824c7[_0xb0d1('0x23')]()[_0xb0d1('0x22')](function(){_0x216dce[_0xb0d1('0x17')](0xcc)[_0xb0d1('0x18')]();});}};}function handleEntityNotFound(_0x570943,_0x51904e){return function(_0xeaf90f){if(!_0xeaf90f){_0x570943[_0xb0d1('0x16')](0x194);}return _0xeaf90f;};}function handleError(_0x27a75a,_0x5c3dc1){_0x5c3dc1=_0x5c3dc1||0x1f4;return function(_0x505590){logger[_0xb0d1('0x24')](_0x505590[_0xb0d1('0x25')]);if(_0x505590['name']){delete _0x505590[_0xb0d1('0x26')];}_0x27a75a[_0xb0d1('0x17')](_0x5c3dc1)['send'](_0x505590);};}exports[_0xb0d1('0x27')]=function(_0x1c8f39,_0x534cdf){var _0x500977={},_0x2b28a3={},_0x54772f={'count':0x0,'rows':[]};var _0x307e02=_[_0xb0d1('0x28')](db[_0xb0d1('0x29')][_0xb0d1('0x2a')],function(_0x3ff3c3){return{'name':_0x3ff3c3[_0xb0d1('0x2b')],'type':_0x3ff3c3['type']['key']};});_0x2b28a3['model']=_['map'](_0x307e02,_0xb0d1('0x26'));_0x2b28a3[_0xb0d1('0x2c')]=_[_0xb0d1('0x2d')](_0x1c8f39[_0xb0d1('0x2c')]);_0x2b28a3[_0xb0d1('0x2e')]=_[_0xb0d1('0x2f')](_0x2b28a3[_0xb0d1('0x30')],_0x2b28a3[_0xb0d1('0x2c')]);_0x500977[_0xb0d1('0x31')]=_[_0xb0d1('0x2f')](_0x2b28a3[_0xb0d1('0x30')],qs[_0xb0d1('0x32')](_0x1c8f39[_0xb0d1('0x2c')][_0xb0d1('0x32')]));_0x500977[_0xb0d1('0x31')]=_0x500977[_0xb0d1('0x31')][_0xb0d1('0x33')]?_0x500977[_0xb0d1('0x31')]:_0x2b28a3[_0xb0d1('0x30')];if(!_0x1c8f39[_0xb0d1('0x2c')][_0xb0d1('0x34')](_0xb0d1('0x35'))){_0x500977['limit']=qs[_0xb0d1('0x1c')](_0x1c8f39[_0xb0d1('0x2c')][_0xb0d1('0x1c')]);_0x500977['offset']=qs[_0xb0d1('0x1a')](_0x1c8f39['query'][_0xb0d1('0x1a')]);}_0x500977[_0xb0d1('0x36')]=qs[_0xb0d1('0x37')](_0x1c8f39['query'][_0xb0d1('0x37')]);_0x500977[_0xb0d1('0x38')]=qs['filters'](_[_0xb0d1('0x39')](_0x1c8f39[_0xb0d1('0x2c')],_0x2b28a3[_0xb0d1('0x2e')]),_0x307e02);if(_0x1c8f39[_0xb0d1('0x2c')][_0xb0d1('0x3a')]){_0x500977[_0xb0d1('0x38')]=_[_0xb0d1('0x3b')](_0x500977[_0xb0d1('0x38')],{'$or':_['map'](_0x307e02,function(_0x122e02){if(_0x122e02['type']!==_0xb0d1('0x3c')){var _0x3c6d52={};_0x3c6d52[_0x122e02[_0xb0d1('0x26')]]={'$like':'%'+_0x1c8f39[_0xb0d1('0x2c')][_0xb0d1('0x3a')]+'%'};return _0x3c6d52;}})});}_0x500977=_['merge']({},_0x500977,_0x1c8f39[_0xb0d1('0x3d')]);var _0x2ee9e7={'where':_0x500977[_0xb0d1('0x38')]};return db[_0xb0d1('0x29')][_0xb0d1('0x1d')](_0x2ee9e7)[_0xb0d1('0x22')](function(_0x42d58b){_0x54772f['count']=_0x42d58b;if(_0x1c8f39[_0xb0d1('0x2c')][_0xb0d1('0x3e')]){_0x500977['include']=[{'all':!![]}];}return db[_0xb0d1('0x29')]['findAll'](_0x500977);})[_0xb0d1('0x22')](function(_0x4b4ca1){_0x54772f[_0xb0d1('0x3f')]=_0x4b4ca1;return _0x54772f;})['then'](respondWithFilteredResult(_0x534cdf,_0x500977))[_0xb0d1('0x40')](handleError(_0x534cdf,null));};exports[_0xb0d1('0x41')]=function(_0x37d750,_0x5db046){var _0x33cae4={'raw':![],'where':{'id':_0x37d750[_0xb0d1('0x42')]['id']}},_0x1510ef={};_0x1510ef[_0xb0d1('0x30')]=_[_0xb0d1('0x2d')](db[_0xb0d1('0x29')][_0xb0d1('0x2a')]);_0x1510ef['query']=_[_0xb0d1('0x2d')](_0x37d750[_0xb0d1('0x2c')]);_0x1510ef[_0xb0d1('0x2e')]=_['intersection'](_0x1510ef[_0xb0d1('0x30')],_0x1510ef[_0xb0d1('0x2c')]);_0x33cae4[_0xb0d1('0x31')]=_['intersection'](_0x1510ef['model'],qs[_0xb0d1('0x32')](_0x37d750[_0xb0d1('0x2c')]['fields']));_0x33cae4[_0xb0d1('0x31')]=_0x33cae4[_0xb0d1('0x31')][_0xb0d1('0x33')]?_0x33cae4['attributes']:_0x1510ef[_0xb0d1('0x30')];if(_0x37d750[_0xb0d1('0x2c')]['includeAll']){_0x33cae4[_0xb0d1('0x43')]=[{'all':!![]}];}_0x33cae4=_[_0xb0d1('0x3b')]({},_0x33cae4,_0x37d750[_0xb0d1('0x3d')]);return db[_0xb0d1('0x29')]['find'](_0x33cae4)[_0xb0d1('0x22')](handleEntityNotFound(_0x5db046,null))[_0xb0d1('0x22')](respondWithResult(_0x5db046,null))[_0xb0d1('0x40')](handleError(_0x5db046,null));};exports[_0xb0d1('0x44')]=function(_0x420965,_0x3f4d09){return db[_0xb0d1('0x29')]['create'](_0x420965[_0xb0d1('0x45')],{})[_0xb0d1('0x22')](respondWithResult(_0x3f4d09,0xc9))['catch'](handleError(_0x3f4d09,null));};exports[_0xb0d1('0x21')]=function(_0x216f66,_0x306158){if(_0x216f66[_0xb0d1('0x45')]['id']){delete _0x216f66[_0xb0d1('0x45')]['id'];}return db[_0xb0d1('0x29')][_0xb0d1('0x46')]({'where':{'id':_0x216f66['params']['id']}})['then'](handleEntityNotFound(_0x306158,null))['then'](saveUpdates(_0x216f66[_0xb0d1('0x45')],null))[_0xb0d1('0x22')](respondWithResult(_0x306158,null))[_0xb0d1('0x40')](handleError(_0x306158,null));};exports['destroy']=function(_0x3c9ae5,_0x5953f2){return db['UserProfileSection'][_0xb0d1('0x46')]({'where':{'id':_0x3c9ae5[_0xb0d1('0x42')]['id']}})[_0xb0d1('0x22')](handleEntityNotFound(_0x5953f2,null))[_0xb0d1('0x22')](removeEntity(_0x5953f2,null))['catch'](handleError(_0x5953f2,null));};exports['describe']=function(_0x175f35,_0x3f19d9){return db['UserProfileSection']['describe']()[_0xb0d1('0x22')](respondWithResult(_0x3f19d9,null))[_0xb0d1('0x40')](handleError(_0x3f19d9,null));};
\ No newline at end of file
+var _0x5af0=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','describe','eml-format','zip-dir','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','index','map','UserProfileSection','fieldName','type','key','model','query','keys','filters','intersection','attributes'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5af0,0x1e5));var _0x05af=function(_0x47469e,_0x133ae8){_0x47469e=_0x47469e-0x0;var _0x3f5baa=_0x5af0[_0x47469e];return _0x3f5baa;};'use strict';var emlformat=require(_0x05af('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x05af('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x05af('0x2'));var BPromise=require(_0x05af('0x3'));var Mustache=require('mustache');var util=require(_0x05af('0x4'));var path=require(_0x05af('0x5'));var sox=require(_0x05af('0x6'));var csv=require('to-csv');var ejs=require(_0x05af('0x7'));var fs=require('fs');var fs_extra=require(_0x05af('0x8'));var _=require(_0x05af('0x9'));var squel=require('squel');var crypto=require(_0x05af('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x05af('0xb'));var toCsv=require('to-csv');var querystring=require(_0x05af('0xc'));var Papa=require(_0x05af('0xd'));var Redis=require('ioredis');var authService=require(_0x05af('0xe'));var qs=require(_0x05af('0xf'));var as=require(_0x05af('0x10'));var hardwareService=require(_0x05af('0x11'));var logger=require(_0x05af('0x12'))(_0x05af('0x13'));var utils=require(_0x05af('0x14'));var config=require(_0x05af('0x15'));var licenseUtil=require(_0x05af('0x16'));var db=require(_0x05af('0x17'))['db'];function respondWithStatusCode(_0x5e7ee0,_0x1e8795){_0x1e8795=_0x1e8795||0xcc;return function(_0x781047){if(_0x781047){return _0x5e7ee0[_0x05af('0x18')](_0x1e8795);}return _0x5e7ee0['status'](_0x1e8795)[_0x05af('0x19')]();};}function respondWithResult(_0x11b1ae,_0x51df5b){_0x51df5b=_0x51df5b||0xc8;return function(_0x1064b3){if(_0x1064b3){return _0x11b1ae[_0x05af('0x1a')](_0x51df5b)['json'](_0x1064b3);}};}function respondWithFilteredResult(_0x497619,_0x2be079){return function(_0x29dac3){if(_0x29dac3){var _0x2c9ac5=typeof _0x2be079[_0x05af('0x1b')]===_0x05af('0x1c')&&typeof _0x2be079[_0x05af('0x1d')]===_0x05af('0x1c');var _0x1a51a4=_0x29dac3[_0x05af('0x1e')];var _0x3ec9bc=_0x2c9ac5?0x0:_0x2be079[_0x05af('0x1b')];var _0x3be81a=_0x2c9ac5?_0x29dac3[_0x05af('0x1e')]:_0x2be079['offset']+_0x2be079[_0x05af('0x1d')];var _0x374b7c;if(_0x3be81a>=_0x1a51a4){_0x3be81a=_0x1a51a4;_0x374b7c=0xc8;}else{_0x374b7c=0xce;}_0x497619[_0x05af('0x1a')](_0x374b7c);return _0x497619[_0x05af('0x1f')](_0x05af('0x20'),_0x3ec9bc+'-'+_0x3be81a+'/'+_0x1a51a4)[_0x05af('0x21')](_0x29dac3);}return null;};}function patchUpdates(_0xc1d0a8){return function(_0x1a689d){try{jsonpatch['apply'](_0x1a689d,_0xc1d0a8,!![]);}catch(_0xc4496e){return BPromise[_0x05af('0x22')](_0xc4496e);}return _0x1a689d[_0x05af('0x23')]();};}function saveUpdates(_0x29eaea,_0xdb88f3){return function(_0x502971){if(_0x502971){return _0x502971[_0x05af('0x24')](_0x29eaea)[_0x05af('0x25')](function(_0x23956b){return _0x23956b;});}return null;};}function removeEntity(_0x40f1df,_0x144c7a){return function(_0x4b6ce0){if(_0x4b6ce0){return _0x4b6ce0[_0x05af('0x26')]()[_0x05af('0x25')](function(){_0x40f1df['status'](0xcc)[_0x05af('0x19')]();});}};}function handleEntityNotFound(_0x20f368,_0x27bac6){return function(_0x40ee43){if(!_0x40ee43){_0x20f368['sendStatus'](0x194);}return _0x40ee43;};}function handleError(_0x58fbe7,_0x1de53a){_0x1de53a=_0x1de53a||0x1f4;return function(_0x4300a4){logger[_0x05af('0x27')](_0x4300a4[_0x05af('0x28')]);if(_0x4300a4[_0x05af('0x29')]){delete _0x4300a4[_0x05af('0x29')];}_0x58fbe7['status'](_0x1de53a)['send'](_0x4300a4);};}exports[_0x05af('0x2a')]=function(_0x330417,_0x1a39bc){var _0x4dd70a={},_0x2291b5={},_0x25f718={'count':0x0,'rows':[]};var _0x2e78a7=_[_0x05af('0x2b')](db[_0x05af('0x2c')]['rawAttributes'],function(_0x3ca9df){return{'name':_0x3ca9df[_0x05af('0x2d')],'type':_0x3ca9df[_0x05af('0x2e')][_0x05af('0x2f')]};});_0x2291b5[_0x05af('0x30')]=_[_0x05af('0x2b')](_0x2e78a7,'name');_0x2291b5[_0x05af('0x31')]=_[_0x05af('0x32')](_0x330417[_0x05af('0x31')]);_0x2291b5[_0x05af('0x33')]=_[_0x05af('0x34')](_0x2291b5[_0x05af('0x30')],_0x2291b5['query']);_0x4dd70a[_0x05af('0x35')]=_[_0x05af('0x34')](_0x2291b5[_0x05af('0x30')],qs[_0x05af('0x36')](_0x330417[_0x05af('0x31')][_0x05af('0x36')]));_0x4dd70a[_0x05af('0x35')]=_0x4dd70a[_0x05af('0x35')][_0x05af('0x37')]?_0x4dd70a[_0x05af('0x35')]:_0x2291b5[_0x05af('0x30')];if(!_0x330417[_0x05af('0x31')][_0x05af('0x38')](_0x05af('0x39'))){_0x4dd70a[_0x05af('0x1d')]=qs['limit'](_0x330417[_0x05af('0x31')]['limit']);_0x4dd70a[_0x05af('0x1b')]=qs[_0x05af('0x1b')](_0x330417[_0x05af('0x31')][_0x05af('0x1b')]);}_0x4dd70a[_0x05af('0x3a')]=qs['sort'](_0x330417['query'][_0x05af('0x3b')]);_0x4dd70a[_0x05af('0x3c')]=qs['filters'](_[_0x05af('0x3d')](_0x330417[_0x05af('0x31')],_0x2291b5[_0x05af('0x33')]),_0x2e78a7);if(_0x330417[_0x05af('0x31')]['filter']){_0x4dd70a[_0x05af('0x3c')]=_[_0x05af('0x3e')](_0x4dd70a[_0x05af('0x3c')],{'$or':_[_0x05af('0x2b')](_0x2e78a7,function(_0x51d5a8){if(_0x51d5a8['type']!==_0x05af('0x3f')){var _0x54ae77={};_0x54ae77[_0x51d5a8[_0x05af('0x29')]]={'$like':'%'+_0x330417[_0x05af('0x31')][_0x05af('0x40')]+'%'};return _0x54ae77;}})});}_0x4dd70a=_['merge']({},_0x4dd70a,_0x330417[_0x05af('0x41')]);var _0x4c3324={'where':_0x4dd70a[_0x05af('0x3c')]};return db[_0x05af('0x2c')][_0x05af('0x1e')](_0x4c3324)[_0x05af('0x25')](function(_0x15b08f){_0x25f718['count']=_0x15b08f;if(_0x330417[_0x05af('0x31')][_0x05af('0x42')]){_0x4dd70a[_0x05af('0x43')]=[{'all':!![]}];}return db[_0x05af('0x2c')]['findAll'](_0x4dd70a);})['then'](function(_0x107e5f){_0x25f718[_0x05af('0x44')]=_0x107e5f;return _0x25f718;})[_0x05af('0x25')](respondWithFilteredResult(_0x1a39bc,_0x4dd70a))[_0x05af('0x45')](handleError(_0x1a39bc,null));};exports[_0x05af('0x46')]=function(_0x32fd26,_0x2bc5cc){var _0x922e6f={'raw':![],'where':{'id':_0x32fd26[_0x05af('0x47')]['id']}},_0x60031f={};_0x60031f[_0x05af('0x30')]=_[_0x05af('0x32')](db['UserProfileSection'][_0x05af('0x48')]);_0x60031f[_0x05af('0x31')]=_[_0x05af('0x32')](_0x32fd26['query']);_0x60031f['filters']=_['intersection'](_0x60031f['model'],_0x60031f['query']);_0x922e6f['attributes']=_['intersection'](_0x60031f[_0x05af('0x30')],qs[_0x05af('0x36')](_0x32fd26[_0x05af('0x31')][_0x05af('0x36')]));_0x922e6f[_0x05af('0x35')]=_0x922e6f[_0x05af('0x35')]['length']?_0x922e6f[_0x05af('0x35')]:_0x60031f['model'];if(_0x32fd26[_0x05af('0x31')][_0x05af('0x42')]){_0x922e6f['include']=[{'all':!![]}];}_0x922e6f=_['merge']({},_0x922e6f,_0x32fd26[_0x05af('0x41')]);return db[_0x05af('0x2c')][_0x05af('0x49')](_0x922e6f)[_0x05af('0x25')](handleEntityNotFound(_0x2bc5cc,null))[_0x05af('0x25')](respondWithResult(_0x2bc5cc,null))[_0x05af('0x45')](handleError(_0x2bc5cc,null));};exports[_0x05af('0x4a')]=function(_0x278b3b,_0x4d980d){return db[_0x05af('0x2c')][_0x05af('0x4a')](_0x278b3b[_0x05af('0x4b')],{})[_0x05af('0x25')](respondWithResult(_0x4d980d,0xc9))['catch'](handleError(_0x4d980d,null));};exports[_0x05af('0x24')]=function(_0x90950,_0x49b3e1){if(_0x90950[_0x05af('0x4b')]['id']){delete _0x90950[_0x05af('0x4b')]['id'];}return db[_0x05af('0x2c')][_0x05af('0x49')]({'where':{'id':_0x90950['params']['id']}})[_0x05af('0x25')](handleEntityNotFound(_0x49b3e1,null))[_0x05af('0x25')](saveUpdates(_0x90950[_0x05af('0x4b')],null))[_0x05af('0x25')](respondWithResult(_0x49b3e1,null))[_0x05af('0x45')](handleError(_0x49b3e1,null));};exports[_0x05af('0x26')]=function(_0x2f203d,_0x3d0d96){return db['UserProfileSection'][_0x05af('0x49')]({'where':{'id':_0x2f203d[_0x05af('0x47')]['id']}})[_0x05af('0x25')](handleEntityNotFound(_0x3d0d96,null))[_0x05af('0x25')](removeEntity(_0x3d0d96,null))[_0x05af('0x45')](handleError(_0x3d0d96,null));};exports['describe']=function(_0x47b0d5,_0x5e96c6){return db[_0x05af('0x2c')][_0x05af('0x4c')]()[_0x05af('0x25')](respondWithResult(_0x5e96c6,null))[_0x05af('0x45')](handleError(_0x5e96c6,null));};
\ No newline at end of file
index e8040d9..aca1fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0a0=['UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x1beb25,_0x52432e){var _0x4ce3c8=function(_0x2296e4){while(--_0x2296e4){_0x1beb25['push'](_0x1beb25['shift']());}};_0x4ce3c8(++_0x52432e);}(_0xc0a0,0x14f));var _0x0c0a=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xc0a0[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x0c0a('0x0'));var util=require(_0x0c0a('0x1'));var logger=require('../../config/logger')(_0x0c0a('0x2'));var moment=require('moment');var BPromise=require(_0x0c0a('0x3'));var rp=require(_0x0c0a('0x4'));var fs=require('fs');var path=require(_0x0c0a('0x5'));var rimraf=require(_0x0c0a('0x6'));var config=require(_0x0c0a('0x7'));var attributes=require('./userProfileSection.attributes');module[_0x0c0a('0x8')]=function(_0x442048,_0x25386f){return _0x442048[_0x0c0a('0x9')](_0x0c0a('0xa'),attributes,{'tableName':_0x0c0a('0xb'),'paranoid':![],'indexes':[{'name':_0x0c0a('0xc'),'fields':[_0x0c0a('0xd'),_0x0c0a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x84dd=['../../config/environment','./userProfileSection.attributes','user_profile_has_sections','userProfileId','lodash','util','api','moment','request-promise','rimraf'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x84dd,0x1bc));var _0xd84d=function(_0x47d5ce,_0x3cbd5d){_0x47d5ce=_0x47d5ce-0x0;var _0x203449=_0x84dd[_0x47d5ce];return _0x203449;};'use strict';var _=require(_0xd84d('0x0'));var util=require(_0xd84d('0x1'));var logger=require('../../config/logger')(_0xd84d('0x2'));var moment=require(_0xd84d('0x3'));var BPromise=require('bluebird');var rp=require(_0xd84d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd84d('0x5'));var config=require(_0xd84d('0x6'));var attributes=require(_0xd84d('0x7'));module['exports']=function(_0x5a8755,_0x994be9){return _0x5a8755['define']('UserProfileSection',attributes,{'tableName':_0xd84d('0x8'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId',_0xd84d('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 42a0e66..23e7232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f8c=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x4458be,_0xb942a3){var _0x158d26=function(_0x379bb2){while(--_0x379bb2){_0x4458be['push'](_0x4458be['shift']());}};_0x158d26(++_0xb942a3);}(_0x9f8c,0x16a));var _0xc9f8=function(_0x513d20,_0x2f2e08){_0x513d20=_0x513d20-0x0;var _0x501d6a=_0x9f8c[_0x513d20];return _0x501d6a;};'use strict';var _=require(_0xc9f8('0x0'));var util=require(_0xc9f8('0x1'));var moment=require(_0xc9f8('0x2'));var BPromise=require(_0xc9f8('0x3'));var rs=require(_0xc9f8('0x4'));var fs=require('fs');var Redis=require(_0xc9f8('0x5'));var db=require(_0xc9f8('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc9f8('0x7'))(_0xc9f8('0x8'));var config=require(_0xc9f8('0x9'));var jayson=require(_0xc9f8('0xa'));var client=jayson[_0xc9f8('0xb')][_0xc9f8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x183021,_0x4780ba,_0x2269a1){return new BPromise(function(_0x38b816,_0x552570){return client[_0xc9f8('0xd')](_0x183021,_0x2269a1)[_0xc9f8('0xe')](function(_0x243b3f){logger['info'](_0xc9f8('0xf'),_0x4780ba,_0xc9f8('0x10'));logger['debug'](_0xc9f8('0x11'),_0x4780ba,_0xc9f8('0x10'),JSON['stringify'](_0x243b3f));if(_0x243b3f[_0xc9f8('0x12')]){if(_0x243b3f[_0xc9f8('0x12')][_0xc9f8('0x13')]===0x1f4){logger['error'](_0xc9f8('0xf'),_0x4780ba,_0x243b3f['error'][_0xc9f8('0x14')]);return _0x552570(_0x243b3f[_0xc9f8('0x12')]['message']);}logger[_0xc9f8('0x12')](_0xc9f8('0xf'),_0x4780ba,_0x243b3f[_0xc9f8('0x12')][_0xc9f8('0x14')]);return _0x38b816(_0x243b3f[_0xc9f8('0x12')][_0xc9f8('0x14')]);}else{logger[_0xc9f8('0x15')](_0xc9f8('0xf'),_0x4780ba,_0xc9f8('0x10'));_0x38b816(_0x243b3f['result']['message']);}})[_0xc9f8('0x16')](function(_0xaf994e){logger[_0xc9f8('0x12')](_0xc9f8('0xf'),_0x4780ba,_0xaf994e);_0x552570(_0xaf994e);});});}
\ No newline at end of file
+var _0x2f71=['rpc','jayson/promise','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','ioredis','../../config/logger'];(function(_0x1f7413,_0x3388c3){var _0x2d2775=function(_0x5e5b4){while(--_0x5e5b4){_0x1f7413['push'](_0x1f7413['shift']());}};_0x2d2775(++_0x3388c3);}(_0x2f71,0x1cf));var _0x12f7=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x2f71[_0x13e741];return _0x3f8bb3;};'use strict';var _=require(_0x12f7('0x0'));var util=require(_0x12f7('0x1'));var moment=require(_0x12f7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x12f7('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x12f7('0x4'))(_0x12f7('0x5'));var config=require('../../config/environment');var jayson=require(_0x12f7('0x6'));var client=jayson[_0x12f7('0x7')][_0x12f7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x464c4a,_0x95b924,_0x9f0b9c){return new BPromise(function(_0x554617,_0x47468c){return client['request'](_0x464c4a,_0x9f0b9c)[_0x12f7('0x9')](function(_0x579f5a){logger[_0x12f7('0xa')](_0x12f7('0xb'),_0x95b924,_0x12f7('0xc'));logger['debug']('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x95b924,_0x12f7('0xc'),JSON[_0x12f7('0xd')](_0x579f5a));if(_0x579f5a[_0x12f7('0xe')]){if(_0x579f5a[_0x12f7('0xe')][_0x12f7('0xf')]===0x1f4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x95b924,_0x579f5a[_0x12f7('0xe')][_0x12f7('0x10')]);return _0x47468c(_0x579f5a[_0x12f7('0xe')]['message']);}logger[_0x12f7('0xe')]('UserProfileSection,\x20%s,\x20%s',_0x95b924,_0x579f5a[_0x12f7('0xe')][_0x12f7('0x10')]);return _0x554617(_0x579f5a[_0x12f7('0xe')]['message']);}else{logger[_0x12f7('0xa')](_0x12f7('0xb'),_0x95b924,_0x12f7('0xc'));_0x554617(_0x579f5a[_0x12f7('0x11')][_0x12f7('0x10')]);}})['catch'](function(_0x3acf12){logger[_0x12f7('0xe')](_0x12f7('0xb'),_0x95b924,_0x3acf12);_0x47468c(_0x3acf12);});});}
\ No newline at end of file
index 4d2cee0..bbfe6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x448ac4,_0xfdf51b){var _0x557c82=function(_0x276554){while(--_0x276554){_0x448ac4['push'](_0x448ac4['shift']());}};_0x557c82(++_0xfdf51b);}(_0xe706,0xa3));var _0x6e70=function(_0x414806,_0x12a8c2){_0x414806=_0x414806-0x0;var _0x14e039=_0xe706[_0x414806];return _0x14e039;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1a9af8,_0xdd65f4){var _0x261eec=function(_0x5dd429){while(--_0x5dd429){_0x1a9af8['push'](_0x1a9af8['shift']());}};_0x261eec(++_0xdd65f4);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 5665691..96c3805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf65f=['exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf65f,0xe0));var _0xff65=function(_0x26658e,_0x1bb1a9){_0x26658e=_0x26658e-0x0;var _0x572802=_0xf65f[_0x26658e];return _0x572802;};'use strict';var Sequelize=require('sequelize');module[_0xff65('0x0')]={'penalty':{'type':Sequelize[_0xff65('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbde1=['INTEGER','exports'];(function(_0x2fde15,_0x457695){var _0x3c48be=function(_0x5662f0){while(--_0x5662f0){_0x2fde15['push'](_0x2fde15['shift']());}};_0x3c48be(++_0x457695);}(_0xbde1,0x6f));var _0x1bde=function(_0x25f60b,_0x55758f){_0x25f60b=_0x25f60b-0x0;var _0x4492a9=_0xbde1[_0x25f60b];return _0x4492a9;};'use strict';var Sequelize=require('sequelize');module[_0x1bde('0x0')]={'penalty':{'type':Sequelize[_0x1bde('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index ba87d1e..9ecabef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde7=['define','user_has_sms_queues','../../config/logger','api','moment','path','../../config/environment','./userSmsQueue.attributes','exports'];(function(_0x5ecd3b,_0x4bb6c1){var _0x110f7f=function(_0x3d4e2d){while(--_0x3d4e2d){_0x5ecd3b['push'](_0x5ecd3b['shift']());}};_0x110f7f(++_0x4bb6c1);}(_0xcde7,0x65));var _0x7cde=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xcde7[_0x4e676e];return _0x336a3c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7cde('0x0'))(_0x7cde('0x1'));var moment=require(_0x7cde('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7cde('0x3'));var rimraf=require('rimraf');var config=require(_0x7cde('0x4'));var attributes=require(_0x7cde('0x5'));module[_0x7cde('0x6')]=function(_0x293f70,_0xbaa4b3){return _0x293f70[_0x7cde('0x7')]('UserSmsQueue',attributes,{'tableName':_0x7cde('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6691=['define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x425540,_0x97a491){var _0x117693=function(_0x1f7699){while(--_0x1f7699){_0x425540['push'](_0x425540['shift']());}};_0x117693(++_0x97a491);}(_0x6691,0x12d));var _0x1669=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x6691[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x1669('0x0'));var util=require(_0x1669('0x1'));var logger=require(_0x1669('0x2'))(_0x1669('0x3'));var moment=require(_0x1669('0x4'));var BPromise=require(_0x1669('0x5'));var rp=require(_0x1669('0x6'));var fs=require('fs');var path=require(_0x1669('0x7'));var rimraf=require(_0x1669('0x8'));var config=require(_0x1669('0x9'));var attributes=require('./userSmsQueue.attributes');module[_0x1669('0xa')]=function(_0x1bf2c8,_0x30f92c){return _0x1bf2c8[_0x1669('0xb')]('UserSmsQueue',attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e343a63..46bdfce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb02e=['UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x4d34ef,_0x379517){var _0xff56f0=function(_0x2b83eb){while(--_0x2b83eb){_0x4d34ef['push'](_0x4d34ef['shift']());}};_0xff56f0(++_0x379517);}(_0xb02e,0x1eb));var _0xeb02=function(_0x2f9159,_0x3d7cf8){_0x2f9159=_0x2f9159-0x0;var _0x43c856=_0xb02e[_0x2f9159];return _0x43c856;};'use strict';var _=require(_0xeb02('0x0'));var util=require(_0xeb02('0x1'));var moment=require(_0xeb02('0x2'));var BPromise=require(_0xeb02('0x3'));var rs=require(_0xeb02('0x4'));var fs=require('fs');var Redis=require(_0xeb02('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xeb02('0x6'));var logger=require(_0xeb02('0x7'))(_0xeb02('0x8'));var config=require(_0xeb02('0x9'));var jayson=require(_0xeb02('0xa'));var client=jayson[_0xeb02('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51e2f1,_0x5a74a9,_0x36dc28){return new BPromise(function(_0x3dba68,_0x3c0507){return client[_0xeb02('0xc')](_0x51e2f1,_0x36dc28)[_0xeb02('0xd')](function(_0x4ccb21){logger[_0xeb02('0xe')](_0xeb02('0xf'),_0x5a74a9,'request\x20sent');logger[_0xeb02('0x10')](_0xeb02('0x11'),_0x5a74a9,_0xeb02('0x12'),JSON['stringify'](_0x4ccb21));if(_0x4ccb21[_0xeb02('0x13')]){if(_0x4ccb21[_0xeb02('0x13')][_0xeb02('0x14')]===0x1f4){logger[_0xeb02('0x13')](_0xeb02('0xf'),_0x5a74a9,_0x4ccb21[_0xeb02('0x13')][_0xeb02('0x15')]);return _0x3c0507(_0x4ccb21['error'][_0xeb02('0x15')]);}logger[_0xeb02('0x13')](_0xeb02('0xf'),_0x5a74a9,_0x4ccb21[_0xeb02('0x13')][_0xeb02('0x15')]);return _0x3dba68(_0x4ccb21[_0xeb02('0x13')][_0xeb02('0x15')]);}else{logger[_0xeb02('0xe')](_0xeb02('0xf'),_0x5a74a9,_0xeb02('0x12'));_0x3dba68(_0x4ccb21[_0xeb02('0x16')]['message']);}})['catch'](function(_0x463e98){logger[_0xeb02('0x13')](_0xeb02('0xf'),_0x5a74a9,_0x463e98);_0x3c0507(_0x463e98);});});}
\ No newline at end of file
+var _0x44da=['ioredis','../../config/utils','jayson/promise','client','http','request','then','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserSmsQueue,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x44da,0x1b4));var _0xa44d=function(_0x283fed,_0x5be839){_0x283fed=_0x283fed-0x0;var _0x3f7ec1=_0x44da[_0x283fed];return _0x3f7ec1;};'use strict';var _=require(_0xa44d('0x0'));var util=require(_0xa44d('0x1'));var moment=require('moment');var BPromise=require(_0xa44d('0x2'));var rs=require(_0xa44d('0x3'));var fs=require('fs');var Redis=require(_0xa44d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa44d('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xa44d('0x6'));var client=jayson[_0xa44d('0x7')][_0xa44d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1fc08c,_0x1ec910,_0x1b9ded){return new BPromise(function(_0x5d050a,_0x109799){return client[_0xa44d('0x9')](_0x1fc08c,_0x1b9ded)[_0xa44d('0xa')](function(_0x37c296){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x1ec910,_0xa44d('0xb'));logger[_0xa44d('0xc')](_0xa44d('0xd'),_0x1ec910,_0xa44d('0xb'),JSON[_0xa44d('0xe')](_0x37c296));if(_0x37c296[_0xa44d('0xf')]){if(_0x37c296[_0xa44d('0xf')][_0xa44d('0x10')]===0x1f4){logger[_0xa44d('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x1ec910,_0x37c296[_0xa44d('0xf')]['message']);return _0x109799(_0x37c296[_0xa44d('0xf')][_0xa44d('0x11')]);}logger['error'](_0xa44d('0x12'),_0x1ec910,_0x37c296['error']['message']);return _0x5d050a(_0x37c296[_0xa44d('0xf')]['message']);}else{logger[_0xa44d('0x13')](_0xa44d('0x12'),_0x1ec910,_0xa44d('0xb'));_0x5d050a(_0x37c296[_0xa44d('0x14')][_0xa44d('0x11')]);}})[_0xa44d('0x15')](function(_0x8de1ca){logger[_0xa44d('0xf')](_0xa44d('0x12'),_0x1ec910,_0x8de1ca);_0x109799(_0x8de1ca);});});}
\ No newline at end of file
index 50ffda3..a2d9474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5029=['INTEGER','sequelize','exports'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0x5029,0x67));var _0x9502=function(_0x28ca00,_0x423b54){_0x28ca00=_0x28ca00-0x0;var _0x191aeb=_0x5029[_0x28ca00];return _0x191aeb;};'use strict';var Sequelize=require(_0x9502('0x0'));module[_0x9502('0x1')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x9502('0x2')]}};
\ No newline at end of file
+var _0x1345=['sequelize','INTEGER'];(function(_0x470f63,_0x48d80b){var _0x4f09e2=function(_0x3aa3a4){while(--_0x3aa3a4){_0x470f63['push'](_0x470f63['shift']());}};_0x4f09e2(++_0x48d80b);}(_0x1345,0x76));var _0x5134=function(_0x23884b,_0x50c307){_0x23884b=_0x23884b-0x0;var _0x28113b=_0x1345[_0x23884b];return _0x28113b;};'use strict';var Sequelize=require(_0x5134('0x0'));module['exports']={'UserId':{'type':Sequelize[_0x5134('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x5134('0x1')]}};
\ No newline at end of file
index 3853fdf..4238b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x1acaa4,_0x248f16){var _0x294396=function(_0x17b9aa){while(--_0x17b9aa){_0x1acaa4['push'](_0x1acaa4['shift']());}};_0x294396(++_0x248f16);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x14f97f,_0x4c0db5){var _0x37dcf7=function(_0x366682){while(--_0x366682){_0x14f97f['push'](_0x14f97f['shift']());}};_0x37dcf7(++_0x4c0db5);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b22c646..d059d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x17de98,_0xd9d551){var _0x4aed94=function(_0x1e24d1){while(--_0x1e24d1){_0x17de98['push'](_0x17de98['shift']());}};_0x4aed94(++_0xd9d551);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xec094b,_0x51ac3a){var _0x33384c=function(_0x276c25){while(--_0x276c25){_0xec094b['push'](_0xec094b['shift']());}};_0x33384c(++_0x51ac3a);}(_0xe706,0xa3));var _0x6e70=function(_0x1e24f8,_0x52070f){_0x1e24f8=_0x1e24f8-0x0;var _0x5c4446=_0xe706[_0x1e24f8];return _0x5c4446;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 9c23f44..f6c4d51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1323=['INTEGER','sequelize'];(function(_0x469748,_0x1fb2be){var _0x3aef2a=function(_0x345b11){while(--_0x345b11){_0x469748['push'](_0x469748['shift']());}};_0x3aef2a(++_0x1fb2be);}(_0x1323,0x1f3));var _0x3132=function(_0x191f5a,_0x8b8637){_0x191f5a=_0x191f5a-0x0;var _0x5d7117=_0x1323[_0x191f5a];return _0x5d7117;};'use strict';var Sequelize=require(_0x3132('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x3132('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfd8f=['sequelize','exports'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0xfd8f,0xae));var _0xffd8=function(_0x24e69c,_0x5636a7){_0x24e69c=_0x24e69c-0x0;var _0x2e8683=_0xfd8f[_0x24e69c];return _0x2e8683;};'use strict';var Sequelize=require(_0xffd8('0x0'));module[_0xffd8('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 3fcf323..dce7f19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe09a=['UserVoiceQueue','user_has_voice_queues','util','moment','bluebird','request-promise','path','rimraf','./userVoiceQueue.attributes','define'];(function(_0x35e92e,_0x21581b){var _0x1205a8=function(_0x4325d8){while(--_0x4325d8){_0x35e92e['push'](_0x35e92e['shift']());}};_0x1205a8(++_0x21581b);}(_0xe09a,0x156));var _0xae09=function(_0x260b48,_0x117977){_0x260b48=_0x260b48-0x0;var _0x3f730b=_0xe09a[_0x260b48];return _0x3f730b;};'use strict';var _=require('lodash');var util=require(_0xae09('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xae09('0x1'));var BPromise=require(_0xae09('0x2'));var rp=require(_0xae09('0x3'));var fs=require('fs');var path=require(_0xae09('0x4'));var rimraf=require(_0xae09('0x5'));var config=require('../../config/environment');var attributes=require(_0xae09('0x6'));module['exports']=function(_0x3fd418,_0x42341c){return _0x3fd418[_0xae09('0x7')](_0xae09('0x8'),attributes,{'tableName':_0xae09('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbbda=['define','UserVoiceQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','exports'];(function(_0x110fe2,_0x2a0335){var _0xe546c1=function(_0x54a1fd){while(--_0x54a1fd){_0x110fe2['push'](_0x110fe2['shift']());}};_0xe546c1(++_0x2a0335);}(_0xbbda,0x173));var _0xabbd=function(_0x30c513,_0x12f2de){_0x30c513=_0x30c513-0x0;var _0x484a9c=_0xbbda[_0x30c513];return _0x484a9c;};'use strict';var _=require(_0xabbd('0x0'));var util=require('util');var logger=require(_0xabbd('0x1'))(_0xabbd('0x2'));var moment=require(_0xabbd('0x3'));var BPromise=require(_0xabbd('0x4'));var rp=require(_0xabbd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module[_0xabbd('0x6')]=function(_0x1f3927,_0x49a927){return _0x1f3927[_0xabbd('0x7')](_0xabbd('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 262fdb4..c706776 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097f=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x110469,_0x2aa286){var _0x54ee2e=function(_0x3157a6){while(--_0x3157a6){_0x110469['push'](_0x110469['shift']());}};_0x54ee2e(++_0x2aa286);}(_0x097f,0x90));var _0xf097=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x097f[_0x13e741];return _0x3f8bb3;};'use strict';var _=require(_0xf097('0x0'));var util=require(_0xf097('0x1'));var moment=require('moment');var BPromise=require(_0xf097('0x2'));var rs=require(_0xf097('0x3'));var fs=require('fs');var Redis=require(_0xf097('0x4'));var db=require(_0xf097('0x5'))['db'];var utils=require(_0xf097('0x6'));var logger=require('../../config/logger')(_0xf097('0x7'));var config=require(_0xf097('0x8'));var jayson=require(_0xf097('0x9'));var client=jayson[_0xf097('0xa')][_0xf097('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cdbeb,_0x221518,_0x4cbc29){return new BPromise(function(_0x121b39,_0x18a7f8){return client[_0xf097('0xc')](_0x1cdbeb,_0x4cbc29)[_0xf097('0xd')](function(_0x5dabf1){logger[_0xf097('0xe')](_0xf097('0xf'),_0x221518,_0xf097('0x10'));logger[_0xf097('0x11')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x221518,'request\x20sent',JSON[_0xf097('0x12')](_0x5dabf1));if(_0x5dabf1[_0xf097('0x13')]){if(_0x5dabf1[_0xf097('0x13')][_0xf097('0x14')]===0x1f4){logger[_0xf097('0x13')](_0xf097('0xf'),_0x221518,_0x5dabf1[_0xf097('0x13')]['message']);return _0x18a7f8(_0x5dabf1['error'][_0xf097('0x15')]);}logger[_0xf097('0x13')](_0xf097('0xf'),_0x221518,_0x5dabf1['error']['message']);return _0x121b39(_0x5dabf1[_0xf097('0x13')][_0xf097('0x15')]);}else{logger[_0xf097('0xe')](_0xf097('0xf'),_0x221518,'request\x20sent');_0x121b39(_0x5dabf1[_0xf097('0x16')][_0xf097('0x15')]);}})[_0xf097('0x17')](function(_0x3cd53b){logger[_0xf097('0x13')](_0xf097('0xf'),_0x221518,_0x3cd53b);_0x18a7f8(_0x3cd53b);});});}
\ No newline at end of file
+var _0x5ff0=['UserVoiceQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','http','then'];(function(_0x21b170,_0x46afd3){var _0x1c1fe3=function(_0x31731d){while(--_0x31731d){_0x21b170['push'](_0x21b170['shift']());}};_0x1c1fe3(++_0x46afd3);}(_0x5ff0,0x1dd));var _0x05ff=function(_0x199bda,_0x15f792){_0x199bda=_0x199bda-0x0;var _0x3dd296=_0x5ff0[_0x199bda];return _0x3dd296;};'use strict';var _=require(_0x05ff('0x0'));var util=require(_0x05ff('0x1'));var moment=require('moment');var BPromise=require(_0x05ff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05ff('0x3'));var db=require(_0x05ff('0x4'))['db'];var utils=require(_0x05ff('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x05ff('0x6'));var client=jayson['client'][_0x05ff('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5598b1,_0x5aab4d,_0x5a3c15){return new BPromise(function(_0xc56107,_0x27e7a2){return client['request'](_0x5598b1,_0x5a3c15)[_0x05ff('0x8')](function(_0x6c032c){logger['info'](_0x05ff('0x9'),_0x5aab4d,'request\x20sent');logger[_0x05ff('0xa')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x5aab4d,_0x05ff('0xb'),JSON[_0x05ff('0xc')](_0x6c032c));if(_0x6c032c['error']){if(_0x6c032c[_0x05ff('0xd')]['code']===0x1f4){logger[_0x05ff('0xd')](_0x05ff('0x9'),_0x5aab4d,_0x6c032c['error']['message']);return _0x27e7a2(_0x6c032c[_0x05ff('0xd')]['message']);}logger[_0x05ff('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x5aab4d,_0x6c032c[_0x05ff('0xd')][_0x05ff('0xe')]);return _0xc56107(_0x6c032c[_0x05ff('0xd')][_0x05ff('0xe')]);}else{logger[_0x05ff('0xf')](_0x05ff('0x9'),_0x5aab4d,_0x05ff('0xb'));_0xc56107(_0x6c032c[_0x05ff('0x10')][_0x05ff('0xe')]);}})[_0x05ff('0x11')](function(_0x444bbb){logger['error'](_0x05ff('0x9'),_0x5aab4d,_0x444bbb);_0x27e7a2(_0x444bbb);});});}
\ No newline at end of file
index d6934e2..5e6e95b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4feedd,_0x5b9e1c){var _0x28887d=function(_0x25a41e){while(--_0x25a41e){_0x4feedd['push'](_0x4feedd['shift']());}};_0x28887d(++_0x5b9e1c);}(_0xedd9,0xfc));var _0x9edd=function(_0x139813,_0x39cf08){_0x139813=_0x139813-0x0;var _0x1bf59c=_0xedd9[_0x139813];return _0x1bf59c;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3c5fc3,_0x1f763b){var _0x30d0ec=function(_0x50b884){while(--_0x50b884){_0x3c5fc3['push'](_0x3c5fc3['shift']());}};_0x30d0ec(++_0x1f763b);}(_0xedd9,0xfc));var _0x9edd=function(_0xc6f3ab,_0x37a040){_0xc6f3ab=_0xc6f3ab-0x0;var _0x6df7b9=_0xedd9[_0xc6f3ab];return _0x6df7b9;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index 51e0fb7..939046e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb4=['exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x4fb4,0x190));var _0x44fb=function(_0x559c51,_0x18acbc){_0x559c51=_0x559c51-0x0;var _0x5d267a=_0x4fb4[_0x559c51];return _0x5d267a;};'use strict';var Sequelize=require('sequelize');module[_0x44fb('0x0')]={'uniqueid':{'type':Sequelize[_0x44fb('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x44fb('0x2')},'membername':{'type':Sequelize[_0x44fb('0x3')],'allowNull':![],'comment':_0x44fb('0x2')},'UserId':{'type':Sequelize[_0x44fb('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x44fb('0x4'),'comment':_0x44fb('0x2')},'VoiceQueueId':{'type':Sequelize[_0x44fb('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x44fb('0x3')],'allowNull':![],'unique':_0x44fb('0x4'),'comment':_0x44fb('0x2')},'penalty':{'type':Sequelize[_0x44fb('0x1')](0xb),'defaultValue':0x0,'comment':_0x44fb('0x2')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x44fb('0x2')}};
\ No newline at end of file
+var _0x6960=['Required\x20by\x20Asterisk','STRING','queue_interface','sequelize','INTEGER'];(function(_0x5cf229,_0x208baf){var _0x4d7424=function(_0xa01cfc){while(--_0xa01cfc){_0x5cf229['push'](_0x5cf229['shift']());}};_0x4d7424(++_0x208baf);}(_0x6960,0x148));var _0x0696=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x6960[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0x0696('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x0696('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x0696('0x2')},'membername':{'type':Sequelize[_0x0696('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0x0696('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x0696('0x3')],'allowNull':![],'unique':_0x0696('0x4'),'comment':_0x0696('0x2')},'VoiceQueueId':{'type':Sequelize[_0x0696('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x0696('0x3')],'allowNull':![],'unique':_0x0696('0x4'),'comment':_0x0696('0x2')},'penalty':{'type':Sequelize[_0x0696('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x0696('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index 44b2941..21aa695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7085=['UserVoiceQueueRt','setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0xbd8d2f,_0xfd8bb3){var _0xc926bb=function(_0x24d9a7){while(--_0x24d9a7){_0xbd8d2f['push'](_0xbd8d2f['shift']());}};_0xc926bb(++_0xfd8bb3);}(_0x7085,0x120));var _0x5708=function(_0x3767ef,_0x29c168){_0x3767ef=_0x3767ef-0x0;var _0x14c673=_0x7085[_0x3767ef];return _0x14c673;};'use strict';var EventEmitter=require(_0x5708('0x0'));var UserVoiceQueueRt=require(_0x5708('0x1'))['db'][_0x5708('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x5708('0x3')](0x0);var events={'afterCreate':_0x5708('0x4'),'afterUpdate':_0x5708('0x5'),'afterDestroy':_0x5708('0x6')};function emitEvent(_0x266480){return function(_0x43574a,_0x26ba4b,_0x3bfb9b){UserVoiceQueueRtEvents[_0x5708('0x7')](_0x266480+':'+_0x43574a['id'],_0x43574a);UserVoiceQueueRtEvents['emit'](_0x266480,_0x43574a);_0x3bfb9b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x5708('0x8')](e,emitEvent(event));}}module[_0x5708('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x357f=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','remove'];(function(_0x50ddc4,_0x3a33f0){var _0x2d3971=function(_0x5f2b35){while(--_0x5f2b35){_0x50ddc4['push'](_0x50ddc4['shift']());}};_0x2d3971(++_0x3a33f0);}(_0x357f,0x9a));var _0xf357=function(_0x13776e,_0x5ad3f5){_0x13776e=_0x13776e-0x0;var _0x4775db=_0x357f[_0x13776e];return _0x4775db;};'use strict';var EventEmitter=require(_0xf357('0x0'));var UserVoiceQueueRt=require(_0xf357('0x1'))['db'][_0xf357('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xf357('0x3')](0x0);var events={'afterCreate':_0xf357('0x4'),'afterUpdate':'update','afterDestroy':_0xf357('0x5')};function emitEvent(_0x48fb9a){return function(_0x1b3546,_0x4d15ab,_0x450949){UserVoiceQueueRtEvents[_0xf357('0x6')](_0x48fb9a+':'+_0x1b3546['id'],_0x1b3546);UserVoiceQueueRtEvents['emit'](_0x48fb9a,_0x1b3546);_0x450949(null);};}for(var e in events){if(events[_0xf357('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0xf357('0x8')](e,emitEvent(event));}}module[_0xf357('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 8239a4e..b1c5582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa503=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt'];(function(_0x196967,_0x42720a){var _0x24b193=function(_0x545a1a){while(--_0x545a1a){_0x196967['push'](_0x196967['shift']());}};_0x24b193(++_0x42720a);}(_0xa503,0x15f));var _0x3a50=function(_0x21df9b,_0x1aff37){_0x21df9b=_0x21df9b-0x0;var _0x48d878=_0xa503[_0x21df9b];return _0x48d878;};'use strict';var _=require(_0x3a50('0x0'));var util=require(_0x3a50('0x1'));var logger=require(_0x3a50('0x2'))(_0x3a50('0x3'));var moment=require(_0x3a50('0x4'));var BPromise=require(_0x3a50('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3a50('0x6'));var rimraf=require(_0x3a50('0x7'));var config=require(_0x3a50('0x8'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x3a50('0x9')]=function(_0x41eab2,_0x2f2c81){return _0x41eab2[_0x3a50('0xa')](_0x3a50('0xb'),attributes,{'tableName':_0x3a50('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x89f2=['./userVoiceQueueRt.attributes','exports','define','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4651a4,_0x3ebc9e){var _0x5a50f5=function(_0x57eb6d){while(--_0x57eb6d){_0x4651a4['push'](_0x4651a4['shift']());}};_0x5a50f5(++_0x3ebc9e);}(_0x89f2,0x8f));var _0x289f=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x89f2[_0x138f59];return _0x3d114d;};'use strict';var _=require('lodash');var util=require(_0x289f('0x0'));var logger=require(_0x289f('0x1'))(_0x289f('0x2'));var moment=require(_0x289f('0x3'));var BPromise=require(_0x289f('0x4'));var rp=require(_0x289f('0x5'));var fs=require('fs');var path=require(_0x289f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x289f('0x7'));module[_0x289f('0x8')]=function(_0x679644,_0x4b80d3){return _0x679644[_0x289f('0x9')]('UserVoiceQueueRt',attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43efe2c..b7dda1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe666=['literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetVoiceQueueRtPauses','findAll','options','raw','sequelize'];(function(_0x272d7b,_0x1a8cc6){var _0x4abadb=function(_0xf040e){while(--_0xf040e){_0x272d7b['push'](_0x272d7b['shift']());}};_0x4abadb(++_0x1a8cc6);}(_0xe666,0xbc));var _0x6e66=function(_0x7f74be,_0x4bb101){_0x7f74be=_0x7f74be-0x0;var _0x18cbf5=_0xe666[_0x7f74be];return _0x18cbf5;};'use strict';var _=require(_0x6e66('0x0'));var util=require(_0x6e66('0x1'));var moment=require(_0x6e66('0x2'));var BPromise=require(_0x6e66('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6e66('0x4'));var db=require(_0x6e66('0x5'))['db'];var utils=require(_0x6e66('0x6'));var logger=require(_0x6e66('0x7'))(_0x6e66('0x8'));var config=require('../../config/environment');var jayson=require(_0x6e66('0x9'));var client=jayson[_0x6e66('0xa')]['http']({'port':0x232a});config[_0x6e66('0xb')]=_[_0x6e66('0xc')](config[_0x6e66('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x6e66('0xd'))(new Redis(config['redis']));require(_0x6e66('0xe'))[_0x6e66('0xf')](socket);function respondWithRpcPromise(_0x45767b,_0x23c080,_0x104f7f){return new BPromise(function(_0x4c05f4,_0x873f65){return client[_0x6e66('0x10')](_0x45767b,_0x104f7f)[_0x6e66('0x11')](function(_0x197a3c){logger[_0x6e66('0x12')](_0x6e66('0x13'),_0x23c080,'request\x20sent');logger[_0x6e66('0x14')](_0x6e66('0x15'),_0x23c080,'request\x20sent',JSON[_0x6e66('0x16')](_0x197a3c));if(_0x197a3c[_0x6e66('0x17')]){if(_0x197a3c[_0x6e66('0x17')][_0x6e66('0x18')]===0x1f4){logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x23c080,_0x197a3c[_0x6e66('0x17')][_0x6e66('0x19')]);return _0x873f65(_0x197a3c[_0x6e66('0x17')][_0x6e66('0x19')]);}logger['error'](_0x6e66('0x13'),_0x23c080,_0x197a3c[_0x6e66('0x17')][_0x6e66('0x19')]);return _0x4c05f4(_0x197a3c[_0x6e66('0x17')][_0x6e66('0x19')]);}else{logger[_0x6e66('0x12')](_0x6e66('0x13'),_0x23c080,_0x6e66('0x1a'));_0x4c05f4(_0x197a3c[_0x6e66('0x1b')][_0x6e66('0x19')]);}})[_0x6e66('0x1c')](function(_0x31d0c5){logger[_0x6e66('0x17')](_0x6e66('0x13'),_0x23c080,_0x31d0c5);_0x873f65(_0x31d0c5);});});}exports[_0x6e66('0x1d')]=function(_0x4d810c){var _0x4d9e43=this;return new Promise(function(_0x14b018,_0x1af1c1){return db['UserVoiceQueueRt'][_0x6e66('0x1e')]({'raw':_0x4d810c[_0x6e66('0x1f')]?_0x4d810c[_0x6e66('0x1f')][_0x6e66('0x20')]===undefined?!![]:![]:!![],'where':_0x4d810c[_0x6e66('0x1f')]?_0x4d810c[_0x6e66('0x1f')]['where']||null:null,'attributes':[[db[_0x6e66('0x21')]['fn']('COUNT',db[_0x6e66('0x21')]['fn']('IF',db[_0x6e66('0x21')][_0x6e66('0x22')](_0x6e66('0x23')))),_0x6e66('0x24')]]})[_0x6e66('0x11')](function(_0x244b8b){logger['info'](_0x6e66('0x1d'),_0x4d810c);logger[_0x6e66('0x14')](_0x6e66('0x1d'),_0x4d810c,JSON['stringify'](_0x244b8b));_0x14b018(_0x244b8b);})['catch'](function(_0x4ae144){logger[_0x6e66('0x17')](_0x6e66('0x1d'),_0x4ae144[_0x6e66('0x19')],_0x4d810c);_0x1af1c1(_0x4d9e43['error'](0x1f4,_0x4ae144[_0x6e66('0x19')]));});});};
\ No newline at end of file
+var _0xb69f=['bluebird','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','debug','lodash','util','moment'];(function(_0x284acc,_0x5d1917){var _0xbc724d=function(_0x3ac571){while(--_0x3ac571){_0x284acc['push'](_0x284acc['shift']());}};_0xbc724d(++_0x5d1917);}(_0xb69f,0x6f));var _0xfb69=function(_0xc5c9e9,_0x561d21){_0xc5c9e9=_0xc5c9e9-0x0;var _0x117507=_0xb69f[_0xc5c9e9];return _0x117507;};'use strict';var _=require(_0xfb69('0x0'));var util=require(_0xfb69('0x1'));var moment=require(_0xfb69('0x2'));var BPromise=require(_0xfb69('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfb69('0x4'));var db=require(_0xfb69('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xfb69('0x6'));var config=require(_0xfb69('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfb69('0x8')][_0xfb69('0x9')]({'port':0x232a});config[_0xfb69('0xa')]=_[_0xfb69('0xb')](config[_0xfb69('0xa')],{'host':_0xfb69('0xc'),'port':0x18eb});var socket=require(_0xfb69('0xd'))(new Redis(config['redis']));require(_0xfb69('0xe'))[_0xfb69('0xf')](socket);function respondWithRpcPromise(_0x2697d0,_0x162076,_0x4acf8c){return new BPromise(function(_0x1e099a,_0x545af9){return client[_0xfb69('0x10')](_0x2697d0,_0x4acf8c)[_0xfb69('0x11')](function(_0x25a884){logger[_0xfb69('0x12')](_0xfb69('0x13'),_0x162076,_0xfb69('0x14'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x162076,_0xfb69('0x14'),JSON['stringify'](_0x25a884));if(_0x25a884[_0xfb69('0x15')]){if(_0x25a884[_0xfb69('0x15')][_0xfb69('0x16')]===0x1f4){logger[_0xfb69('0x15')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x162076,_0x25a884['error']['message']);return _0x545af9(_0x25a884['error'][_0xfb69('0x17')]);}logger['error'](_0xfb69('0x13'),_0x162076,_0x25a884[_0xfb69('0x15')][_0xfb69('0x17')]);return _0x1e099a(_0x25a884[_0xfb69('0x15')][_0xfb69('0x17')]);}else{logger[_0xfb69('0x12')](_0xfb69('0x13'),_0x162076,_0xfb69('0x14'));_0x1e099a(_0x25a884[_0xfb69('0x18')][_0xfb69('0x17')]);}})[_0xfb69('0x19')](function(_0x3f818b){logger['error'](_0xfb69('0x13'),_0x162076,_0x3f818b);_0x545af9(_0x3f818b);});});}exports[_0xfb69('0x1a')]=function(_0x6b0213){var _0xa52baa=this;return new Promise(function(_0x40dbb8,_0x48cd45){return db[_0xfb69('0x1b')][_0xfb69('0x1c')]({'raw':_0x6b0213[_0xfb69('0x1d')]?_0x6b0213[_0xfb69('0x1d')][_0xfb69('0x1e')]===undefined?!![]:![]:!![],'where':_0x6b0213[_0xfb69('0x1d')]?_0x6b0213[_0xfb69('0x1d')][_0xfb69('0x1f')]||null:null,'attributes':[[db[_0xfb69('0x20')]['fn'](_0xfb69('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0xfb69('0x22')](_0xfb69('0x23')))),_0xfb69('0x24')]]})[_0xfb69('0x11')](function(_0x5da22e){logger[_0xfb69('0x12')](_0xfb69('0x1a'),_0x6b0213);logger[_0xfb69('0x25')](_0xfb69('0x1a'),_0x6b0213,JSON['stringify'](_0x5da22e));_0x40dbb8(_0x5da22e);})[_0xfb69('0x19')](function(_0x51a9fe){logger['error'](_0xfb69('0x1a'),_0x51a9fe[_0xfb69('0x17')],_0x6b0213);_0x48cd45(_0xa52baa[_0xfb69('0x15')](0x1f4,_0x51a9fe[_0xfb69('0x17')]));});});};
\ No newline at end of file
index 2fdf053..32687b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd6=['length','userVoiceQueueRt:','update','emit','removeListener'];(function(_0x3747ae,_0x408e61){var _0x339035=function(_0x83be87){while(--_0x83be87){_0x3747ae['push'](_0x3747ae['shift']());}};_0x339035(++_0x408e61);}(_0x3dd6,0xcf));var _0x63dd=function(_0x1cc211,_0x4856f1){_0x1cc211=_0x1cc211-0x0;var _0x5df05a=_0x3dd6[_0x1cc211];return _0x5df05a;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save','remove',_0x63dd('0x0')];function createListener(_0x1a3a0b,_0x342ea5){return function(_0x34068f){_0x342ea5[_0x63dd('0x1')](_0x1a3a0b,_0x34068f);};}function removeListener(_0x3f5da2,_0x5b482d){return function(){UserVoiceQueueRtEvents[_0x63dd('0x2')](_0x3f5da2,_0x5b482d);};}exports['register']=function(_0x32bad9){for(var _0xf7e03e=0x0,_0x368feb=events[_0x63dd('0x3')];_0xf7e03e<_0x368feb;_0xf7e03e++){var _0x9a744a=events[_0xf7e03e];var _0x495703=createListener(_0x63dd('0x4')+_0x9a744a,_0x32bad9);UserVoiceQueueRtEvents['on'](_0x9a744a,_0x495703);}};
\ No newline at end of file
+var _0x0650=['remove','update','emit','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x0650,0xed));var _0x0065=function(_0x40fcda,_0x2e8598){_0x40fcda=_0x40fcda-0x0;var _0x38e739=_0x0650[_0x40fcda];return _0x38e739;};'use strict';var UserVoiceQueueRtEvents=require(_0x0065('0x0'));var events=['save',_0x0065('0x1'),_0x0065('0x2')];function createListener(_0x5e6e6c,_0x16f9eb){return function(_0x594d1c){_0x16f9eb[_0x0065('0x3')](_0x5e6e6c,_0x594d1c);};}function removeListener(_0x8260ba,_0x3dd8c6){return function(){UserVoiceQueueRtEvents['removeListener'](_0x8260ba,_0x3dd8c6);};}exports[_0x0065('0x4')]=function(_0x507ed3){for(var _0x5cf16e=0x0,_0x59f241=events[_0x0065('0x5')];_0x5cf16e<_0x59f241;_0x5cf16e++){var _0x415835=events[_0x5cf16e];var _0xefa3cb=createListener(_0x0065('0x6')+_0x415835,_0x507ed3);UserVoiceQueueRtEvents['on'](_0x415835,_0xefa3cb);}};
\ No newline at end of file
index 37d5294..76aeb40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x4f4820,_0x388676){var _0x37585c=function(_0x4d5b0f){while(--_0x4d5b0f){_0x4f4820['push'](_0x4f4820['shift']());}};_0x37585c(++_0x388676);}(_0x70e0,0x17b));var _0x070e=function(_0x3a130a,_0x4c52fe){_0x3a130a=_0x3a130a-0x0;var _0x161fc2=_0x70e0[_0x3a130a];return _0x161fc2;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x49d2b9,_0x3b1d99){var _0x2a7c6c=function(_0x593beb){while(--_0x593beb){_0x49d2b9['push'](_0x49d2b9['shift']());}};_0x2a7c6c(++_0x3b1d99);}(_0x70e0,0x17b));var _0x070e=function(_0x474c9d,_0x254801){_0x474c9d=_0x474c9d-0x0;var _0x2a8b25=_0x70e0[_0x474c9d];return _0x2a8b25;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index c801cd4..d54968d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f75=['sequelize','exports','INTEGER'];(function(_0x43ba5e,_0x42eb2f){var _0x235593=function(_0xc5299){while(--_0xc5299){_0x43ba5e['push'](_0x43ba5e['shift']());}};_0x235593(++_0x42eb2f);}(_0x1f75,0x12c));var _0x51f7=function(_0x485b5a,_0x2b289b){_0x485b5a=_0x485b5a-0x0;var _0xd2b34d=_0x1f75[_0x485b5a];return _0xd2b34d;};'use strict';var Sequelize=require(_0x51f7('0x0'));module[_0x51f7('0x1')]={'penalty':{'type':Sequelize[_0x51f7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x90a9=['exports','sequelize'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x90a9,0x1d3));var _0x990a=function(_0x1d9fb6,_0x163129){_0x1d9fb6=_0x1d9fb6-0x0;var _0x594932=_0x90a9[_0x1d9fb6];return _0x594932;};'use strict';var Sequelize=require(_0x990a('0x0'));module[_0x990a('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9a90318..cff80fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ab=['path','rimraf','../../config/environment','./userWhatsappQueue.attributes','UserWhatsappQueue','lodash','../../config/logger','moment'];(function(_0x40e4b3,_0x5ba8ac){var _0x2225f3=function(_0x59234d){while(--_0x59234d){_0x40e4b3['push'](_0x40e4b3['shift']());}};_0x2225f3(++_0x5ba8ac);}(_0x04ab,0xbd));var _0xb04a=function(_0x1f9a90,_0x99494a){_0x1f9a90=_0x1f9a90-0x0;var _0x2e9c87=_0x04ab[_0x1f9a90];return _0x2e9c87;};'use strict';var _=require(_0xb04a('0x0'));var util=require('util');var logger=require(_0xb04a('0x1'))('api');var moment=require(_0xb04a('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb04a('0x3'));var rimraf=require(_0xb04a('0x4'));var config=require(_0xb04a('0x5'));var attributes=require(_0xb04a('0x6'));module['exports']=function(_0x51739b,_0x3a163c){return _0x51739b['define'](_0xb04a('0x7'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6acf=['user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define'];(function(_0x982ca0,_0x421444){var _0x1a94b9=function(_0x40b6fb){while(--_0x40b6fb){_0x982ca0['push'](_0x982ca0['shift']());}};_0x1a94b9(++_0x421444);}(_0x6acf,0x79));var _0xf6ac=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6acf[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf6ac('0x0'));var util=require(_0xf6ac('0x1'));var logger=require(_0xf6ac('0x2'))(_0xf6ac('0x3'));var moment=require(_0xf6ac('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf6ac('0x5'));var rimraf=require(_0xf6ac('0x6'));var config=require(_0xf6ac('0x7'));var attributes=require(_0xf6ac('0x8'));module[_0xf6ac('0x9')]=function(_0x263b50,_0x3ee27e){return _0x263b50[_0xf6ac('0xa')]('UserWhatsappQueue',attributes,{'tableName':_0xf6ac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 813eed3..ef64e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c79=['UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','http','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x0c79,0xe4));var _0x90c7=function(_0x11f0e1,_0x5423f3){_0x11f0e1=_0x11f0e1-0x0;var _0x519e0d=_0x0c79[_0x11f0e1];return _0x519e0d;};'use strict';var _=require('lodash');var util=require(_0x90c7('0x0'));var moment=require(_0x90c7('0x1'));var BPromise=require(_0x90c7('0x2'));var rs=require(_0x90c7('0x3'));var fs=require('fs');var Redis=require(_0x90c7('0x4'));var db=require(_0x90c7('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x90c7('0x6'));var config=require('../../config/environment');var jayson=require(_0x90c7('0x7'));var client=jayson[_0x90c7('0x8')][_0x90c7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x20e01b,_0x3f6549,_0x12a903){return new BPromise(function(_0x47a5b7,_0x1be880){return client['request'](_0x20e01b,_0x12a903)[_0x90c7('0xa')](function(_0x570fc9){logger[_0x90c7('0xb')](_0x90c7('0xc'),_0x3f6549,'request\x20sent');logger[_0x90c7('0xd')](_0x90c7('0xe'),_0x3f6549,_0x90c7('0xf'),JSON[_0x90c7('0x10')](_0x570fc9));if(_0x570fc9[_0x90c7('0x11')]){if(_0x570fc9['error'][_0x90c7('0x12')]===0x1f4){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x3f6549,_0x570fc9[_0x90c7('0x11')][_0x90c7('0x13')]);return _0x1be880(_0x570fc9[_0x90c7('0x11')]['message']);}logger[_0x90c7('0x11')](_0x90c7('0xc'),_0x3f6549,_0x570fc9['error']['message']);return _0x47a5b7(_0x570fc9[_0x90c7('0x11')][_0x90c7('0x13')]);}else{logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x3f6549,_0x90c7('0xf'));_0x47a5b7(_0x570fc9[_0x90c7('0x14')]['message']);}})[_0x90c7('0x15')](function(_0x25013a){logger[_0x90c7('0x11')](_0x90c7('0xc'),_0x3f6549,_0x25013a);_0x1be880(_0x25013a);});});}
\ No newline at end of file
+var _0xfb3f=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','moment'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xfb3f,0x10f));var _0xffb3=function(_0x3da795,_0x39ed37){_0x3da795=_0x3da795-0x0;var _0x12ea46=_0xfb3f[_0x3da795];return _0x12ea46;};'use strict';var _=require('lodash');var util=require(_0xffb3('0x0'));var moment=require(_0xffb3('0x1'));var BPromise=require('bluebird');var rs=require(_0xffb3('0x2'));var fs=require('fs');var Redis=require(_0xffb3('0x3'));var db=require(_0xffb3('0x4'))['db'];var utils=require(_0xffb3('0x5'));var logger=require(_0xffb3('0x6'))(_0xffb3('0x7'));var config=require('../../config/environment');var jayson=require(_0xffb3('0x8'));var client=jayson['client'][_0xffb3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3dd257,_0x476e9b,_0xbb2d81){return new BPromise(function(_0x3bfd04,_0x273d23){return client[_0xffb3('0xa')](_0x3dd257,_0xbb2d81)[_0xffb3('0xb')](function(_0x341fe9){logger[_0xffb3('0xc')](_0xffb3('0xd'),_0x476e9b,_0xffb3('0xe'));logger[_0xffb3('0xf')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x476e9b,_0xffb3('0xe'),JSON['stringify'](_0x341fe9));if(_0x341fe9['error']){if(_0x341fe9[_0xffb3('0x10')][_0xffb3('0x11')]===0x1f4){logger[_0xffb3('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x476e9b,_0x341fe9[_0xffb3('0x10')][_0xffb3('0x12')]);return _0x273d23(_0x341fe9[_0xffb3('0x10')][_0xffb3('0x12')]);}logger[_0xffb3('0x10')](_0xffb3('0xd'),_0x476e9b,_0x341fe9[_0xffb3('0x10')][_0xffb3('0x12')]);return _0x3bfd04(_0x341fe9[_0xffb3('0x10')][_0xffb3('0x12')]);}else{logger[_0xffb3('0xc')](_0xffb3('0xd'),_0x476e9b,_0xffb3('0xe'));_0x3bfd04(_0x341fe9[_0xffb3('0x13')][_0xffb3('0x12')]);}})[_0xffb3('0x14')](function(_0x72459a){logger[_0xffb3('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x476e9b,_0x72459a);_0x273d23(_0x72459a);});});}
\ No newline at end of file
index 3f2fdc1..2af8c45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf53f=['get','isAuthenticated','show','post','put','update','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller'];(function(_0x161f59,_0x42e9ff){var _0x3ffa0e=function(_0x3aef14){while(--_0x3aef14){_0x161f59['push'](_0x161f59['shift']());}};_0x3ffa0e(++_0x42e9ff);}(_0xf53f,0x8d));var _0xff53=function(_0x351af6,_0x36e78b){_0x351af6=_0x351af6-0x0;var _0x35b46b=_0xf53f[_0x351af6];return _0x35b46b;};'use strict';var multer=require(_0xff53('0x0'));var util=require(_0xff53('0x1'));var path=require(_0xff53('0x2'));var timeout=require(_0xff53('0x3'));var express=require(_0xff53('0x4'));var router=express[_0xff53('0x5')]();var fs_extra=require(_0xff53('0x6'));var auth=require(_0xff53('0x7'));var interaction=require(_0xff53('0x8'));var config=require(_0xff53('0x9'));var controller=require(_0xff53('0xa'));router[_0xff53('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0xff53('0xb')]('/:id',auth[_0xff53('0xc')](),controller[_0xff53('0xd')]);router[_0xff53('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xff53('0xf')]('/:id',auth[_0xff53('0xc')](),controller[_0xff53('0x10')]);router['delete'](_0xff53('0x11'),auth[_0xff53('0xc')](),controller['destroy']);module[_0xff53('0x12')]=router;
\ No newline at end of file
+var _0x3b75=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./variable.controller','get','isAuthenticated','index','show','post','create','/:id','update','delete'];(function(_0x188b7f,_0x52719b){var _0x23c810=function(_0x138a55){while(--_0x138a55){_0x188b7f['push'](_0x188b7f['shift']());}};_0x23c810(++_0x52719b);}(_0x3b75,0x144));var _0x53b7=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0x3b75[_0x209ec9];return _0x129b1b;};'use strict';var multer=require(_0x53b7('0x0'));var util=require(_0x53b7('0x1'));var path=require(_0x53b7('0x2'));var timeout=require(_0x53b7('0x3'));var express=require(_0x53b7('0x4'));var router=express[_0x53b7('0x5')]();var fs_extra=require(_0x53b7('0x6'));var auth=require(_0x53b7('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x53b7('0x8'));router[_0x53b7('0x9')]('/',auth[_0x53b7('0xa')](),controller[_0x53b7('0xb')]);router['get']('/:id',auth[_0x53b7('0xa')](),controller[_0x53b7('0xc')]);router[_0x53b7('0xd')]('/',auth[_0x53b7('0xa')](),controller[_0x53b7('0xe')]);router['put'](_0x53b7('0xf'),auth[_0x53b7('0xa')](),controller[_0x53b7('0x10')]);router[_0x53b7('0x11')](_0x53b7('0xf'),auth[_0x53b7('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index f5e68cc..d0b3854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1294=['sequelize','STRING'];(function(_0x54e1dc,_0x537977){var _0x4c7358=function(_0x3c4109){while(--_0x3c4109){_0x54e1dc['push'](_0x54e1dc['shift']());}};_0x4c7358(++_0x537977);}(_0x1294,0xb8));var _0x4129=function(_0x336264,_0x32e1d9){_0x336264=_0x336264-0x0;var _0x53cf91=_0x1294[_0x336264];return _0x53cf91;};'use strict';var Sequelize=require(_0x4129('0x0'));module['exports']={'name':{'type':Sequelize[_0x4129('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4129('0x1')]}};
\ No newline at end of file
+var _0xee15=['STRING','sequelize'];(function(_0x4b0c1a,_0x193866){var _0x2d4acd=function(_0x587bb){while(--_0x587bb){_0x4b0c1a['push'](_0x4b0c1a['shift']());}};_0x2d4acd(++_0x193866);}(_0xee15,0x13d));var _0x5ee1=function(_0x1d80be,_0x3a60ff){_0x1d80be=_0x1d80be-0x0;var _0xf9a4f3=_0xee15[_0x1d80be];return _0xf9a4f3;};'use strict';var Sequelize=require(_0x5ee1('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5ee1('0x1')]}};
\ No newline at end of file
index 960dd41..810c7cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaad=['limit','count','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','error','name','send','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','Variable','includeAll','include','rows','catch','show','rawAttributes','length','options','find','body','user','role','UserProfileSection','userProfileId','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xeaad,0x184));var _0xdeaa=function(_0x144fe9,_0x382f61){_0x144fe9=_0x144fe9-0x0;var _0x1508ff=_0xeaad[_0x144fe9];return _0x1508ff;};'use strict';var emlformat=require(_0xdeaa('0x0'));var rimraf=require(_0xdeaa('0x1'));var zipdir=require(_0xdeaa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdeaa('0x3'));var moment=require(_0xdeaa('0x4'));var BPromise=require(_0xdeaa('0x5'));var Mustache=require(_0xdeaa('0x6'));var util=require('util');var path=require(_0xdeaa('0x7'));var sox=require(_0xdeaa('0x8'));var csv=require('to-csv');var ejs=require(_0xdeaa('0x9'));var fs=require('fs');var fs_extra=require(_0xdeaa('0xa'));var _=require('lodash');var squel=require(_0xdeaa('0xb'));var crypto=require(_0xdeaa('0xc'));var jsforce=require(_0xdeaa('0xd'));var deskjs=require(_0xdeaa('0xe'));var toCsv=require(_0xdeaa('0xf'));var querystring=require(_0xdeaa('0x10'));var Papa=require('papaparse');var Redis=require(_0xdeaa('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdeaa('0x12'));var as=require(_0xdeaa('0x13'));var hardwareService=require(_0xdeaa('0x14'));var logger=require(_0xdeaa('0x15'))(_0xdeaa('0x16'));var utils=require(_0xdeaa('0x17'));var config=require(_0xdeaa('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xdeaa('0x19'))['db'];function respondWithStatusCode(_0x388eae,_0x386ffe){_0x386ffe=_0x386ffe||0xcc;return function(_0x312a85){if(_0x312a85){return _0x388eae[_0xdeaa('0x1a')](_0x386ffe);}return _0x388eae[_0xdeaa('0x1b')](_0x386ffe)[_0xdeaa('0x1c')]();};}function respondWithResult(_0x502b3a,_0xe0e04e){_0xe0e04e=_0xe0e04e||0xc8;return function(_0x3a019c){if(_0x3a019c){return _0x502b3a[_0xdeaa('0x1b')](_0xe0e04e)[_0xdeaa('0x1d')](_0x3a019c);}};}function respondWithFilteredResult(_0x26af94,_0x53dc99){return function(_0x23e9cf){if(_0x23e9cf){var _0x4b3fd8=typeof _0x53dc99[_0xdeaa('0x1e')]===_0xdeaa('0x1f')&&typeof _0x53dc99[_0xdeaa('0x20')]===_0xdeaa('0x1f');var _0x40ecb0=_0x23e9cf[_0xdeaa('0x21')];var _0x21e44a=_0x4b3fd8?0x0:_0x53dc99['offset'];var _0x27e5aa=_0x4b3fd8?_0x23e9cf[_0xdeaa('0x21')]:_0x53dc99[_0xdeaa('0x1e')]+_0x53dc99[_0xdeaa('0x20')];var _0x4c198b;if(_0x27e5aa>=_0x40ecb0){_0x27e5aa=_0x40ecb0;_0x4c198b=0xc8;}else{_0x4c198b=0xce;}_0x26af94[_0xdeaa('0x1b')](_0x4c198b);return _0x26af94[_0xdeaa('0x22')](_0xdeaa('0x23'),_0x21e44a+'-'+_0x27e5aa+'/'+_0x40ecb0)[_0xdeaa('0x1d')](_0x23e9cf);}return null;};}function patchUpdates(_0x1631e7){return function(_0x83239e){try{jsonpatch['apply'](_0x83239e,_0x1631e7,!![]);}catch(_0x5a7c3a){return BPromise[_0xdeaa('0x24')](_0x5a7c3a);}return _0x83239e[_0xdeaa('0x25')]();};}function saveUpdates(_0x77a558,_0x418852){return function(_0x42d4f1){if(_0x42d4f1){return _0x42d4f1[_0xdeaa('0x26')](_0x77a558)[_0xdeaa('0x27')](function(_0x2a4a6f){return _0x2a4a6f;});}return null;};}function removeEntity(_0x5a3581,_0x2c4b64){return function(_0x255347){if(_0x255347){return _0x255347[_0xdeaa('0x28')]()[_0xdeaa('0x27')](function(){var _0x2dbec3=_0x255347[_0xdeaa('0x29')]({'plain':!![]});var _0x4fb7a9='Variables';return db[_0xdeaa('0x2a')][_0xdeaa('0x28')]({'where':{'type':_0x4fb7a9,'resourceId':_0x2dbec3['id']}})['then'](function(){return _0x255347;});})[_0xdeaa('0x27')](function(){_0x5a3581[_0xdeaa('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53e23d,_0x454500){return function(_0x3dccd5){if(!_0x3dccd5){_0x53e23d[_0xdeaa('0x1a')](0x194);}return _0x3dccd5;};}function handleError(_0x5398b5,_0x52d4e2){_0x52d4e2=_0x52d4e2||0x1f4;return function(_0x1992a6){logger[_0xdeaa('0x2b')](_0x1992a6['stack']);if(_0x1992a6['name']){delete _0x1992a6[_0xdeaa('0x2c')];}_0x5398b5['status'](_0x52d4e2)[_0xdeaa('0x2d')](_0x1992a6);};}exports[_0xdeaa('0x2e')]=function(_0x242f50,_0xb5d9be){var _0x31f113={},_0x47d765={},_0x557171={'count':0x0,'rows':[]};var _0x532f18=_[_0xdeaa('0x2f')](db['Variable']['rawAttributes'],function(_0x493cc5){return{'name':_0x493cc5[_0xdeaa('0x30')],'type':_0x493cc5['type'][_0xdeaa('0x31')]};});_0x47d765[_0xdeaa('0x32')]=_['map'](_0x532f18,_0xdeaa('0x2c'));_0x47d765[_0xdeaa('0x33')]=_[_0xdeaa('0x34')](_0x242f50[_0xdeaa('0x33')]);_0x47d765[_0xdeaa('0x35')]=_[_0xdeaa('0x36')](_0x47d765['model'],_0x47d765[_0xdeaa('0x33')]);_0x31f113[_0xdeaa('0x37')]=_[_0xdeaa('0x36')](_0x47d765[_0xdeaa('0x32')],qs[_0xdeaa('0x38')](_0x242f50[_0xdeaa('0x33')]['fields']));_0x31f113[_0xdeaa('0x37')]=_0x31f113[_0xdeaa('0x37')]['length']?_0x31f113['attributes']:_0x47d765[_0xdeaa('0x32')];if(!_0x242f50['query'][_0xdeaa('0x39')](_0xdeaa('0x3a'))){_0x31f113[_0xdeaa('0x20')]=qs['limit'](_0x242f50[_0xdeaa('0x33')][_0xdeaa('0x20')]);_0x31f113[_0xdeaa('0x1e')]=qs[_0xdeaa('0x1e')](_0x242f50[_0xdeaa('0x33')][_0xdeaa('0x1e')]);}_0x31f113[_0xdeaa('0x3b')]=qs[_0xdeaa('0x3c')](_0x242f50[_0xdeaa('0x33')][_0xdeaa('0x3c')]);_0x31f113['where']=qs[_0xdeaa('0x35')](_[_0xdeaa('0x3d')](_0x242f50[_0xdeaa('0x33')],_0x47d765['filters']),_0x532f18);if(_0x242f50['query'][_0xdeaa('0x3e')]){_0x31f113[_0xdeaa('0x3f')]=_[_0xdeaa('0x40')](_0x31f113[_0xdeaa('0x3f')],{'$or':_[_0xdeaa('0x2f')](_0x532f18,function(_0x5e1b7c){if(_0x5e1b7c['type']!==_0xdeaa('0x41')){var _0x5d1010={};_0x5d1010[_0x5e1b7c[_0xdeaa('0x2c')]]={'$like':'%'+_0x242f50[_0xdeaa('0x33')][_0xdeaa('0x3e')]+'%'};return _0x5d1010;}})});}_0x31f113=_[_0xdeaa('0x40')]({},_0x31f113,_0x242f50['options']);var _0x30914c={'where':_0x31f113[_0xdeaa('0x3f')]};return db[_0xdeaa('0x42')][_0xdeaa('0x21')](_0x30914c)[_0xdeaa('0x27')](function(_0x2a6b4d){_0x557171[_0xdeaa('0x21')]=_0x2a6b4d;if(_0x242f50['query'][_0xdeaa('0x43')]){_0x31f113[_0xdeaa('0x44')]=[{'all':!![]}];}return db[_0xdeaa('0x42')]['findAll'](_0x31f113);})[_0xdeaa('0x27')](function(_0x51e1a3){_0x557171[_0xdeaa('0x45')]=_0x51e1a3;return _0x557171;})[_0xdeaa('0x27')](respondWithFilteredResult(_0xb5d9be,_0x31f113))[_0xdeaa('0x46')](handleError(_0xb5d9be,null));};exports[_0xdeaa('0x47')]=function(_0x31ec28,_0x40674b){var _0x58571b={'raw':!![],'where':{'id':_0x31ec28['params']['id']}},_0x3d529c={};_0x3d529c[_0xdeaa('0x32')]=_[_0xdeaa('0x34')](db[_0xdeaa('0x42')][_0xdeaa('0x48')]);_0x3d529c[_0xdeaa('0x33')]=_[_0xdeaa('0x34')](_0x31ec28['query']);_0x3d529c[_0xdeaa('0x35')]=_[_0xdeaa('0x36')](_0x3d529c[_0xdeaa('0x32')],_0x3d529c[_0xdeaa('0x33')]);_0x58571b[_0xdeaa('0x37')]=_[_0xdeaa('0x36')](_0x3d529c[_0xdeaa('0x32')],qs[_0xdeaa('0x38')](_0x31ec28[_0xdeaa('0x33')][_0xdeaa('0x38')]));_0x58571b['attributes']=_0x58571b[_0xdeaa('0x37')][_0xdeaa('0x49')]?_0x58571b[_0xdeaa('0x37')]:_0x3d529c['model'];if(_0x31ec28[_0xdeaa('0x33')][_0xdeaa('0x43')]){_0x58571b[_0xdeaa('0x44')]=[{'all':!![]}];}_0x58571b=_[_0xdeaa('0x40')]({},_0x58571b,_0x31ec28[_0xdeaa('0x4a')]);return db['Variable'][_0xdeaa('0x4b')](_0x58571b)[_0xdeaa('0x27')](handleEntityNotFound(_0x40674b,null))[_0xdeaa('0x27')](respondWithResult(_0x40674b,null))['catch'](handleError(_0x40674b,null));};exports['create']=function(_0x507f2e,_0x3fd8eb){return db['Variable']['create'](_0x507f2e[_0xdeaa('0x4c')],{})[_0xdeaa('0x27')](function(_0x92d17d){var _0x398f3e=_0x507f2e[_0xdeaa('0x4d')]['get']({'plain':!![]});if(!_0x398f3e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x398f3e[_0xdeaa('0x4e')]===_0xdeaa('0x4d')){var _0x31361c=_0x92d17d[_0xdeaa('0x29')]({'plain':!![]});var _0x4cb421='Variables';return db[_0xdeaa('0x4f')][_0xdeaa('0x4b')]({'where':{'name':_0x4cb421,'userProfileId':_0x398f3e[_0xdeaa('0x50')]},'raw':!![]})['then'](function(_0x28da95){if(_0x28da95&&_0x28da95['autoAssociation']===0x0){return db[_0xdeaa('0x2a')][_0xdeaa('0x51')]({'name':_0x31361c[_0xdeaa('0x2c')],'resourceId':_0x31361c['id'],'type':_0x28da95[_0xdeaa('0x2c')],'sectionId':_0x28da95['id']},{})['then'](function(){return _0x92d17d;});}else{return _0x92d17d;}})['catch'](function(_0x1ed9c5){logger[_0xdeaa('0x2b')](_0xdeaa('0x52'),_0x1ed9c5);throw _0x1ed9c5;});}return _0x92d17d;})[_0xdeaa('0x27')](respondWithResult(_0x3fd8eb,0xc9))[_0xdeaa('0x46')](handleError(_0x3fd8eb,null));};exports[_0xdeaa('0x26')]=function(_0x325ec5,_0x113906){if(_0x325ec5[_0xdeaa('0x4c')]['id']){delete _0x325ec5['body']['id'];}return db[_0xdeaa('0x42')][_0xdeaa('0x4b')]({'where':{'id':_0x325ec5[_0xdeaa('0x53')]['id']}})[_0xdeaa('0x27')](handleEntityNotFound(_0x113906,null))['then'](saveUpdates(_0x325ec5[_0xdeaa('0x4c')],null))[_0xdeaa('0x27')](respondWithResult(_0x113906,null))[_0xdeaa('0x46')](handleError(_0x113906,null));};exports[_0xdeaa('0x28')]=function(_0xef5a05,_0x58b7bb){return db[_0xdeaa('0x42')][_0xdeaa('0x4b')]({'where':{'id':_0xef5a05[_0xdeaa('0x53')]['id']}})['then'](handleEntityNotFound(_0x58b7bb,null))[_0xdeaa('0x27')](removeEntity(_0x58b7bb,null))[_0xdeaa('0x46')](handleError(_0x58b7bb,null));};
\ No newline at end of file
+var _0xc516=['rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','get','UserProfileResource','error','stack','name','send','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','map','type','VIRTUAL','options','Variable','includeAll','include','findAll','show','params','length','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Variables','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format'];(function(_0x229764,_0x3687f1){var _0x143dea=function(_0x473a68){while(--_0x473a68){_0x229764['push'](_0x229764['shift']());}};_0x143dea(++_0x3687f1);}(_0xc516,0x1ad));var _0x6c51=function(_0x58d8d7,_0x108377){_0x58d8d7=_0x58d8d7-0x0;var _0x339d20=_0xc516[_0x58d8d7];return _0x339d20;};'use strict';var emlformat=require(_0x6c51('0x0'));var rimraf=require(_0x6c51('0x1'));var zipdir=require(_0x6c51('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6c51('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6c51('0x4'));var util=require(_0x6c51('0x5'));var path=require(_0x6c51('0x6'));var sox=require(_0x6c51('0x7'));var csv=require(_0x6c51('0x8'));var ejs=require(_0x6c51('0x9'));var fs=require('fs');var fs_extra=require(_0x6c51('0xa'));var _=require('lodash');var squel=require(_0x6c51('0xb'));var crypto=require('crypto');var jsforce=require(_0x6c51('0xc'));var deskjs=require(_0x6c51('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6c51('0xe'));var Redis=require(_0x6c51('0xf'));var authService=require(_0x6c51('0x10'));var qs=require(_0x6c51('0x11'));var as=require(_0x6c51('0x12'));var hardwareService=require(_0x6c51('0x13'));var logger=require(_0x6c51('0x14'))(_0x6c51('0x15'));var utils=require(_0x6c51('0x16'));var config=require(_0x6c51('0x17'));var licenseUtil=require(_0x6c51('0x18'));var db=require(_0x6c51('0x19'))['db'];function respondWithStatusCode(_0x538d5e,_0x5e9dd7){_0x5e9dd7=_0x5e9dd7||0xcc;return function(_0x14d3e6){if(_0x14d3e6){return _0x538d5e[_0x6c51('0x1a')](_0x5e9dd7);}return _0x538d5e[_0x6c51('0x1b')](_0x5e9dd7)[_0x6c51('0x1c')]();};}function respondWithResult(_0x53fdce,_0x4fc587){_0x4fc587=_0x4fc587||0xc8;return function(_0x150b56){if(_0x150b56){return _0x53fdce[_0x6c51('0x1b')](_0x4fc587)[_0x6c51('0x1d')](_0x150b56);}};}function respondWithFilteredResult(_0x28c877,_0x38a8bc){return function(_0x4e3af6){if(_0x4e3af6){var _0x4c668e=typeof _0x38a8bc[_0x6c51('0x1e')]===_0x6c51('0x1f')&&typeof _0x38a8bc[_0x6c51('0x20')]===_0x6c51('0x1f');var _0x17aae9=_0x4e3af6[_0x6c51('0x21')];var _0x3ba3cc=_0x4c668e?0x0:_0x38a8bc['offset'];var _0x26fdc9=_0x4c668e?_0x4e3af6[_0x6c51('0x21')]:_0x38a8bc[_0x6c51('0x1e')]+_0x38a8bc[_0x6c51('0x20')];var _0x1c0ebb;if(_0x26fdc9>=_0x17aae9){_0x26fdc9=_0x17aae9;_0x1c0ebb=0xc8;}else{_0x1c0ebb=0xce;}_0x28c877[_0x6c51('0x1b')](_0x1c0ebb);return _0x28c877[_0x6c51('0x22')](_0x6c51('0x23'),_0x3ba3cc+'-'+_0x26fdc9+'/'+_0x17aae9)['json'](_0x4e3af6);}return null;};}function patchUpdates(_0x58b113){return function(_0x2117de){try{jsonpatch['apply'](_0x2117de,_0x58b113,!![]);}catch(_0x5682d7){return BPromise[_0x6c51('0x24')](_0x5682d7);}return _0x2117de[_0x6c51('0x25')]();};}function saveUpdates(_0x21f4d6,_0x37e30b){return function(_0x5370d4){if(_0x5370d4){return _0x5370d4[_0x6c51('0x26')](_0x21f4d6)[_0x6c51('0x27')](function(_0x18665d){return _0x18665d;});}return null;};}function removeEntity(_0x38b1d9,_0x5df94e){return function(_0x4fa030){if(_0x4fa030){return _0x4fa030['destroy']()[_0x6c51('0x27')](function(){var _0x328d0e=_0x4fa030[_0x6c51('0x28')]({'plain':!![]});var _0x92fe15='Variables';return db[_0x6c51('0x29')]['destroy']({'where':{'type':_0x92fe15,'resourceId':_0x328d0e['id']}})['then'](function(){return _0x4fa030;});})[_0x6c51('0x27')](function(){_0x38b1d9['status'](0xcc)[_0x6c51('0x1c')]();});}};}function handleEntityNotFound(_0x4904ce,_0xbe09c7){return function(_0x34d8ef){if(!_0x34d8ef){_0x4904ce['sendStatus'](0x194);}return _0x34d8ef;};}function handleError(_0x79012,_0x12ff03){_0x12ff03=_0x12ff03||0x1f4;return function(_0x1e635f){logger[_0x6c51('0x2a')](_0x1e635f[_0x6c51('0x2b')]);if(_0x1e635f[_0x6c51('0x2c')]){delete _0x1e635f['name'];}_0x79012[_0x6c51('0x1b')](_0x12ff03)[_0x6c51('0x2d')](_0x1e635f);};}exports['index']=function(_0x104309,_0x570fb5){var _0x4e4ebe={},_0x547870={},_0x4d9294={'count':0x0,'rows':[]};var _0x5a3a40=_['map'](db['Variable'][_0x6c51('0x2e')],function(_0x5a1ccf){return{'name':_0x5a1ccf[_0x6c51('0x2f')],'type':_0x5a1ccf['type'][_0x6c51('0x30')]};});_0x547870[_0x6c51('0x31')]=_['map'](_0x5a3a40,'name');_0x547870[_0x6c51('0x32')]=_[_0x6c51('0x33')](_0x104309[_0x6c51('0x32')]);_0x547870['filters']=_[_0x6c51('0x34')](_0x547870[_0x6c51('0x31')],_0x547870['query']);_0x4e4ebe[_0x6c51('0x35')]=_[_0x6c51('0x34')](_0x547870[_0x6c51('0x31')],qs[_0x6c51('0x36')](_0x104309[_0x6c51('0x32')][_0x6c51('0x36')]));_0x4e4ebe[_0x6c51('0x35')]=_0x4e4ebe[_0x6c51('0x35')]['length']?_0x4e4ebe['attributes']:_0x547870[_0x6c51('0x31')];if(!_0x104309[_0x6c51('0x32')][_0x6c51('0x37')]('nolimit')){_0x4e4ebe[_0x6c51('0x20')]=qs[_0x6c51('0x20')](_0x104309[_0x6c51('0x32')][_0x6c51('0x20')]);_0x4e4ebe['offset']=qs[_0x6c51('0x1e')](_0x104309[_0x6c51('0x32')]['offset']);}_0x4e4ebe[_0x6c51('0x38')]=qs[_0x6c51('0x39')](_0x104309[_0x6c51('0x32')]['sort']);_0x4e4ebe[_0x6c51('0x3a')]=qs[_0x6c51('0x3b')](_[_0x6c51('0x3c')](_0x104309['query'],_0x547870[_0x6c51('0x3b')]),_0x5a3a40);if(_0x104309['query'][_0x6c51('0x3d')]){_0x4e4ebe[_0x6c51('0x3a')]=_[_0x6c51('0x3e')](_0x4e4ebe[_0x6c51('0x3a')],{'$or':_[_0x6c51('0x3f')](_0x5a3a40,function(_0x442be7){if(_0x442be7[_0x6c51('0x40')]!==_0x6c51('0x41')){var _0x1443f4={};_0x1443f4[_0x442be7[_0x6c51('0x2c')]]={'$like':'%'+_0x104309['query']['filter']+'%'};return _0x1443f4;}})});}_0x4e4ebe=_['merge']({},_0x4e4ebe,_0x104309[_0x6c51('0x42')]);var _0x5243ef={'where':_0x4e4ebe[_0x6c51('0x3a')]};return db[_0x6c51('0x43')][_0x6c51('0x21')](_0x5243ef)[_0x6c51('0x27')](function(_0x2f905d){_0x4d9294[_0x6c51('0x21')]=_0x2f905d;if(_0x104309['query'][_0x6c51('0x44')]){_0x4e4ebe[_0x6c51('0x45')]=[{'all':!![]}];}return db[_0x6c51('0x43')][_0x6c51('0x46')](_0x4e4ebe);})[_0x6c51('0x27')](function(_0x198e0b){_0x4d9294['rows']=_0x198e0b;return _0x4d9294;})[_0x6c51('0x27')](respondWithFilteredResult(_0x570fb5,_0x4e4ebe))['catch'](handleError(_0x570fb5,null));};exports[_0x6c51('0x47')]=function(_0x4aeb2d,_0x119ed3){var _0x40a463={'raw':!![],'where':{'id':_0x4aeb2d[_0x6c51('0x48')]['id']}},_0x4a2639={};_0x4a2639[_0x6c51('0x31')]=_[_0x6c51('0x33')](db[_0x6c51('0x43')]['rawAttributes']);_0x4a2639[_0x6c51('0x32')]=_['keys'](_0x4aeb2d[_0x6c51('0x32')]);_0x4a2639[_0x6c51('0x3b')]=_[_0x6c51('0x34')](_0x4a2639['model'],_0x4a2639[_0x6c51('0x32')]);_0x40a463['attributes']=_[_0x6c51('0x34')](_0x4a2639[_0x6c51('0x31')],qs['fields'](_0x4aeb2d[_0x6c51('0x32')][_0x6c51('0x36')]));_0x40a463[_0x6c51('0x35')]=_0x40a463['attributes'][_0x6c51('0x49')]?_0x40a463[_0x6c51('0x35')]:_0x4a2639[_0x6c51('0x31')];if(_0x4aeb2d[_0x6c51('0x32')]['includeAll']){_0x40a463[_0x6c51('0x45')]=[{'all':!![]}];}_0x40a463=_[_0x6c51('0x3e')]({},_0x40a463,_0x4aeb2d['options']);return db[_0x6c51('0x43')][_0x6c51('0x4a')](_0x40a463)[_0x6c51('0x27')](handleEntityNotFound(_0x119ed3,null))[_0x6c51('0x27')](respondWithResult(_0x119ed3,null))[_0x6c51('0x4b')](handleError(_0x119ed3,null));};exports[_0x6c51('0x4c')]=function(_0x392f82,_0x4ee21d){return db[_0x6c51('0x43')][_0x6c51('0x4c')](_0x392f82[_0x6c51('0x4d')],{})[_0x6c51('0x27')](function(_0xae6c2d){var _0x14d691=_0x392f82[_0x6c51('0x4e')][_0x6c51('0x28')]({'plain':!![]});if(!_0x14d691)throw new Error(_0x6c51('0x4f'));if(_0x14d691['role']===_0x6c51('0x4e')){var _0x230273=_0xae6c2d[_0x6c51('0x28')]({'plain':!![]});var _0x2bff49=_0x6c51('0x50');return db[_0x6c51('0x51')]['find']({'where':{'name':_0x2bff49,'userProfileId':_0x14d691[_0x6c51('0x52')]},'raw':!![]})[_0x6c51('0x27')](function(_0x2e0342){if(_0x2e0342&&_0x2e0342[_0x6c51('0x53')]===0x0){return db[_0x6c51('0x29')][_0x6c51('0x4c')]({'name':_0x230273[_0x6c51('0x2c')],'resourceId':_0x230273['id'],'type':_0x2e0342[_0x6c51('0x2c')],'sectionId':_0x2e0342['id']},{})[_0x6c51('0x27')](function(){return _0xae6c2d;});}else{return _0xae6c2d;}})[_0x6c51('0x4b')](function(_0x4013e0){logger['error'](_0x6c51('0x54'),_0x4013e0);throw _0x4013e0;});}return _0xae6c2d;})[_0x6c51('0x27')](respondWithResult(_0x4ee21d,0xc9))[_0x6c51('0x4b')](handleError(_0x4ee21d,null));};exports[_0x6c51('0x26')]=function(_0x55be5d,_0x46f518){if(_0x55be5d[_0x6c51('0x4d')]['id']){delete _0x55be5d[_0x6c51('0x4d')]['id'];}return db['Variable'][_0x6c51('0x4a')]({'where':{'id':_0x55be5d['params']['id']}})[_0x6c51('0x27')](handleEntityNotFound(_0x46f518,null))[_0x6c51('0x27')](saveUpdates(_0x55be5d[_0x6c51('0x4d')],null))[_0x6c51('0x27')](respondWithResult(_0x46f518,null))[_0x6c51('0x4b')](handleError(_0x46f518,null));};exports[_0x6c51('0x55')]=function(_0x3ba596,_0x4b40bb){return db['Variable'][_0x6c51('0x4a')]({'where':{'id':_0x3ba596[_0x6c51('0x48')]['id']}})[_0x6c51('0x27')](handleEntityNotFound(_0x4b40bb,null))[_0x6c51('0x27')](removeEntity(_0x4b40bb,null))[_0x6c51('0x4b')](handleError(_0x4b40bb,null));};
\ No newline at end of file
index 637bcdb..af2bb44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b4=['Variable','tools_variables','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x35cc99,_0x5bb972){var _0x14373c=function(_0xb3feeb){while(--_0xb3feeb){_0x35cc99['push'](_0x35cc99['shift']());}};_0x14373c(++_0x5bb972);}(_0x42b4,0x161));var _0x442b=function(_0x5b19a0,_0x3a8653){_0x5b19a0=_0x5b19a0-0x0;var _0x59a39b=_0x42b4[_0x5b19a0];return _0x59a39b;};'use strict';var _=require(_0x442b('0x0'));var util=require(_0x442b('0x1'));var logger=require(_0x442b('0x2'))(_0x442b('0x3'));var moment=require(_0x442b('0x4'));var BPromise=require(_0x442b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x442b('0x6'));var rimraf=require(_0x442b('0x7'));var config=require(_0x442b('0x8'));var attributes=require('./variable.attributes');module[_0x442b('0x9')]=function(_0x45b436,_0x119e57){return _0x45b436[_0x442b('0xa')](_0x442b('0xb'),attributes,{'tableName':_0x442b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2eab=['request-promise','../../config/environment','./variable.attributes','exports','define','Variable','tools_variables','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3bf925,_0x4dd8e4){var _0x2128a1=function(_0x4d2049){while(--_0x4d2049){_0x3bf925['push'](_0x3bf925['shift']());}};_0x2128a1(++_0x4dd8e4);}(_0x2eab,0x96));var _0xb2ea=function(_0x23a462,_0x36fcca){_0x23a462=_0x23a462-0x0;var _0x50ecc1=_0x2eab[_0x23a462];return _0x50ecc1;};'use strict';var _=require(_0xb2ea('0x0'));var util=require(_0xb2ea('0x1'));var logger=require(_0xb2ea('0x2'))(_0xb2ea('0x3'));var moment=require(_0xb2ea('0x4'));var BPromise=require(_0xb2ea('0x5'));var rp=require(_0xb2ea('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb2ea('0x7'));var attributes=require(_0xb2ea('0x8'));module[_0xb2ea('0x9')]=function(_0x10f305,_0x4904e6){return _0x10f305[_0xb2ea('0xa')](_0xb2ea('0xb'),attributes,{'tableName':_0xb2ea('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 73a1503..f3e17d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','Variable','find','options','raw','include','model','attributes','map','ShowVariable','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x16d793,_0x22f0f7){var _0x444f4f=function(_0x425556){while(--_0x425556){_0x16d793['push'](_0x16d793['shift']());}};_0x444f4f(++_0x22f0f7);}(_0x8ef6,0xf2));var _0x68ef=function(_0x26a5e8,_0x1f17cc){_0x26a5e8=_0x26a5e8-0x0;var _0x10b200=_0x8ef6[_0x26a5e8];return _0x10b200;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('Variable,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}exports['ShowVariable']=function(_0x2633c1){var _0x404870=this;return new Promise(function(_0x4ade0d,_0x527870){return db[_0x68ef('0x18')][_0x68ef('0x19')]({'raw':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1['options'][_0x68ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['where']||null:null,'attributes':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')]['attributes']||null:null,'include':_0x2633c1[_0x68ef('0x1a')]?_0x2633c1[_0x68ef('0x1a')][_0x68ef('0x1c')]?_['map'](_0x2633c1['options']['include'],function(_0x26018d){return{'model':db[_0x26018d[_0x68ef('0x1d')]],'as':_0x26018d['as'],'attributes':_0x26018d[_0x68ef('0x1e')],'include':_0x26018d[_0x68ef('0x1c')]?_[_0x68ef('0x1f')](_0x26018d[_0x68ef('0x1c')],function(_0x258cd5){return{'model':db[_0x258cd5[_0x68ef('0x1d')]],'as':_0x258cd5['as'],'attributes':_0x258cd5[_0x68ef('0x1e')],'include':_0x258cd5[_0x68ef('0x1c')]?_['map'](_0x258cd5[_0x68ef('0x1c')],function(_0x57f9ee){return{'model':db[_0x57f9ee['model']],'as':_0x57f9ee['as'],'attributes':_0x57f9ee['attributes']};}):[]};}):[]};}):[]:[]})[_0x68ef('0xc')](function(_0x268f32){logger[_0x68ef('0xd')](_0x68ef('0x20'),_0x2633c1);logger['debug']('ShowVariable',_0x2633c1,JSON[_0x68ef('0x12')](_0x268f32));_0x4ade0d(_0x268f32);})[_0x68ef('0x17')](function(_0x7bf96){logger[_0x68ef('0x13')](_0x68ef('0x20'),_0x7bf96[_0x68ef('0x15')],_0x2633c1);_0x527870(_0x404870[_0x68ef('0x13')](0x1f4,_0x7bf96[_0x68ef('0x15')]));});});};
\ No newline at end of file
+var _0x55ca=['options','where','attributes','include','map','model','lodash','util','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowVariable','Variable','find'];(function(_0xd3fb91,_0xfc54c0){var _0x33438c=function(_0x924998){while(--_0x924998){_0xd3fb91['push'](_0xd3fb91['shift']());}};_0x33438c(++_0xfc54c0);}(_0x55ca,0x126));var _0xa55c=function(_0x425d5e,_0x3b9040){_0x425d5e=_0x425d5e-0x0;var _0x3cc67b=_0x55ca[_0x425d5e];return _0x3cc67b;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('Variable,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('Variable,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}exports[_0xa55c('0x17')]=function(_0x24783b){var _0x4cee3c=this;return new Promise(function(_0x3d4c9e,_0x104a99){return db[_0xa55c('0x18')][_0xa55c('0x19')]({'raw':_0x24783b[_0xa55c('0x1a')]?_0x24783b[_0xa55c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x24783b['options']?_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1b')]||null:null,'attributes':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1c')]||null:null,'include':_0x24783b[_0xa55c('0x1a')]?_0x24783b['options'][_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x24783b[_0xa55c('0x1a')][_0xa55c('0x1d')],function(_0x234372){return{'model':db[_0x234372['model']],'as':_0x234372['as'],'attributes':_0x234372[_0xa55c('0x1c')],'include':_0x234372['include']?_['map'](_0x234372['include'],function(_0x19ae88){return{'model':db[_0x19ae88['model']],'as':_0x19ae88['as'],'attributes':_0x19ae88[_0xa55c('0x1c')],'include':_0x19ae88[_0xa55c('0x1d')]?_[_0xa55c('0x1e')](_0x19ae88[_0xa55c('0x1d')],function(_0x2313a9){return{'model':db[_0x2313a9[_0xa55c('0x1f')]],'as':_0x2313a9['as'],'attributes':_0x2313a9[_0xa55c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa55c('0xb')](function(_0x192df2){logger[_0xa55c('0x14')](_0xa55c('0x17'),_0x24783b);logger['debug'](_0xa55c('0x17'),_0x24783b,JSON[_0xa55c('0x10')](_0x192df2));_0x3d4c9e(_0x192df2);})[_0xa55c('0x16')](function(_0x906caa){logger['error'](_0xa55c('0x17'),_0x906caa[_0xa55c('0x13')],_0x24783b);_0x104a99(_0x4cee3c[_0xa55c('0x11')](0x1f4,_0x906caa[_0xa55c('0x13')]));});});};
\ No newline at end of file
index 976738d..46d1b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96d4=['/restart','restart','migrations','exports','express','../../components/auth/service','./version.controller','index','get','/fetch','fetch','isAuthenticated','canUpdate','/pull','pull'];(function(_0x29e050,_0x1ddadd){var _0x761cf=function(_0x5f3099){while(--_0x5f3099){_0x29e050['push'](_0x29e050['shift']());}};_0x761cf(++_0x1ddadd);}(_0x96d4,0x1b7));var _0x496d=function(_0x37c9b3,_0x3f94c1){_0x37c9b3=_0x37c9b3-0x0;var _0x5cbee5=_0x96d4[_0x37c9b3];return _0x5cbee5;};'use strict';var express=require(_0x496d('0x0'));var router=express['Router']();var auth=require(_0x496d('0x1'));var controller=require(_0x496d('0x2'));router['get']('/',controller[_0x496d('0x3')]);router[_0x496d('0x4')](_0x496d('0x5'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x496d('0x6')]);router['get']('/reset',auth[_0x496d('0x7')](),auth[_0x496d('0x8')](),controller['reset']);router[_0x496d('0x4')](_0x496d('0x9'),auth[_0x496d('0x7')](),auth[_0x496d('0x8')](),controller[_0x496d('0xa')]);router[_0x496d('0x4')](_0x496d('0xb'),auth[_0x496d('0x7')](),controller[_0x496d('0xc')]);router[_0x496d('0x4')]('/migrations',controller[_0x496d('0xd')]);module[_0x496d('0xe')]=router;
\ No newline at end of file
+var _0xb9b9=['canUpdate','fetch','reset','/pull','/restart','restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','isAuthenticated'];(function(_0x57fae6,_0x23c6dc){var _0x2975ec=function(_0x5b32e5){while(--_0x5b32e5){_0x57fae6['push'](_0x57fae6['shift']());}};_0x2975ec(++_0x23c6dc);}(_0xb9b9,0x1ad));var _0x9b9b=function(_0x5d507c,_0x1e5009){_0x5d507c=_0x5d507c-0x0;var _0x4bd2a3=_0xb9b9[_0x5d507c];return _0x4bd2a3;};'use strict';var express=require(_0x9b9b('0x0'));var router=express[_0x9b9b('0x1')]();var auth=require(_0x9b9b('0x2'));var controller=require(_0x9b9b('0x3'));router[_0x9b9b('0x4')]('/',controller['index']);router['get']('/fetch',auth[_0x9b9b('0x5')](),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x7')]);router[_0x9b9b('0x4')]('/reset',auth[_0x9b9b('0x5')](),auth[_0x9b9b('0x6')](),controller[_0x9b9b('0x8')]);router[_0x9b9b('0x4')](_0x9b9b('0x9'),auth[_0x9b9b('0x5')](),auth[_0x9b9b('0x6')](),controller['pull']);router[_0x9b9b('0x4')](_0x9b9b('0xa'),auth['isAuthenticated'](),controller[_0x9b9b('0xb')]);router[_0x9b9b('0x4')](_0x9b9b('0xc'),controller[_0x9b9b('0xd')]);module[_0x9b9b('0xe')]=router;
\ No newline at end of file
index 9ad3294..33199ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dd0=['../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','origin','master','git\x20fetch','reset','FETCH_HEAD','error','pull','restart','motion2','pm2\x20restart\x20motion\x20%s','catch','migrations','readdirSync','server','length','push','sort','sequelize','Migration','getQueryInterface','constructor','join','map','.js','then','\x20to\x20','UniqueConstraintError','Database\x20already\x20up-to-date','path','pkginfo','version','compare-versions','child_process','../../mysqldb','../../config/environment','../../config/pm2'];(function(_0x388a7f,_0xfd0240){var _0x236ea7=function(_0x2d80f1){while(--_0x2d80f1){_0x388a7f['push'](_0x388a7f['shift']());}};_0x236ea7(++_0xfd0240);}(_0x9dd0,0x180));var _0x09dd=function(_0x23b707,_0x1e0c38){_0x23b707=_0x23b707-0x0;var _0x3974fb=_0x9dd0[_0x23b707];return _0x3974fb;};'use strict';var Umzug=require('umzug');var path=require(_0x09dd('0x0'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x09dd('0x1'))(module,_0x09dd('0x2'));var compareVersions=require(_0x09dd('0x3'));var exec=require(_0x09dd('0x4'))['exec'];var db=require(_0x09dd('0x5'))['db'];var config=require(_0x09dd('0x6'));var pm2=require(_0x09dd('0x7'));var logger=require(_0x09dd('0x8'))(_0x09dd('0x9'));var git=require(_0x09dd('0xa'))(config[_0x09dd('0xb')]);exports[_0x09dd('0xc')]=function(_0x33b1be,_0x43d529){var _0x57e2c4={'current':module[_0x09dd('0xd')][_0x09dd('0x2')],'phonebar':0x2};if(_0x33b1be[_0x09dd('0xe')]&&_0x33b1be[_0x09dd('0xe')][_0x09dd('0xf')]){return git[_0x09dd('0x10')]()[_0x09dd('0x11')](function(_0x1ac67,_0x36f43d){_0x57e2c4[_0x09dd('0xf')]=(_0x1ac67?module['exports'][_0x09dd('0x2')]:_0x36f43d[_0x09dd('0xf')])||_0x09dd('0x12');return _0x43d529[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')](_0x57e2c4);});}else{return _0x43d529['status'](0xc8)[_0x09dd('0x14')](_0x57e2c4);}};exports[_0x09dd('0x10')]=function(_0x20bf57,_0x24db53){return git['fetch']([_0x09dd('0x15'),_0x09dd('0x16')],function(_0x4b69e1){if(_0x4b69e1){logger['error'](_0x4b69e1);return _0x24db53['status'](0x1f4)[_0x09dd('0x14')](_0x4b69e1);}logger['info'](_0x09dd('0x17'));return _0x24db53[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')]({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x09dd('0x18')]=function(_0x5cf4d3,_0x244b6a){return git[_0x09dd('0x18')](['--hard',_0x09dd('0x19')],function(_0x3e7f70){if(_0x3e7f70){logger[_0x09dd('0x1a')](_0x3e7f70);return _0x244b6a[_0x09dd('0x13')](0x1f4)[_0x09dd('0x14')](_0x3e7f70);}logger['info']('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x244b6a[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')]({'output':'git\x20reset\x20--hard'});});};exports[_0x09dd('0x1b')]=function(_0x10eef4,_0x1d2abe){exec('npm\x20install\x20--production',function(_0x760ad0,_0x54dc37,_0x5a001d){logger['info'](_0x54dc37);logger['info'](_0x5a001d);if(_0x760ad0){logger['error'](_0x760ad0);return _0x1d2abe[_0x09dd('0x13')](0x1f4)[_0x09dd('0x14')](_0x760ad0);}return _0x1d2abe[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')]({'output':_0x54dc37});});};exports[_0x09dd('0x1c')]=function(_0x4dc65a,_0x4ab2de){return pm2[_0x09dd('0x1c')](_0x09dd('0x1d'))['then'](function(_0x18e4e6){logger['info'](_0x09dd('0x1e'),_0x18e4e6);return _0x4ab2de[_0x09dd('0x13')](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x09dd('0x1f')](function(_0x544f80){logger[_0x09dd('0x1a')](_0x544f80);return _0x4ab2de[_0x09dd('0x13')](0x1f4)['json'](_0x544f80);});};exports[_0x09dd('0x20')]=function(_0x102570,_0x4503df){var _0x259246=fs[_0x09dd('0x21')](path['join'](config[_0x09dd('0xb')],_0x09dd('0x22'),'migrations'));var _0x9aa8d5=[];for(var _0xcb8da4=0x0;_0xcb8da4<_0x259246[_0x09dd('0x23')];_0xcb8da4++){var _0x16f404=_0x259246[_0xcb8da4]['replace']('.js','');if(compareVersions(module[_0x09dd('0xd')]['version'],_0x16f404)===-0x1){_0x9aa8d5[_0x09dd('0x24')](_0x16f404);}}if(_0x9aa8d5[_0x09dd('0x23')]){var _0x2c36a6=_0x9aa8d5[_0x09dd('0x25')](compareVersions);var _0x319639=new Umzug({'storage':_0x09dd('0x26'),'storageOptions':{'model':db[_0x09dd('0x27')],'modelName':'Migration','columnName':_0x09dd('0x2')},'migrations':{'params':[db[_0x09dd('0x26')][_0x09dd('0x28')](),db['sequelize'][_0x09dd('0x29')],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0x09dd('0x2a')](config[_0x09dd('0xb')],_0x09dd('0x22'),_0x09dd('0x20')),'pattern':/\.js$/}});_0x319639['up']({'migrations':_[_0x09dd('0x2b')](_0x2c36a6,function(_0x394ec3){return _0x394ec3+_0x09dd('0x2c');})})[_0x09dd('0x2d')](function(){return _0x4503df[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module[_0x09dd('0xd')][_0x09dd('0x2')]+_0x09dd('0x2e')+_['last'](_0x2c36a6),'migrations':_[_0x09dd('0x2a')](_0x2c36a6)});})[_0x09dd('0x1f')](function(_0x44661f){if(_0x44661f instanceof db[_0x09dd('0x26')][_0x09dd('0x2f')]){return _0x4503df[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x4503df[_0x09dd('0x13')](0x1f4)['json'](_0x44661f);}});}else{return _0x4503df[_0x09dd('0x13')](0xc8)[_0x09dd('0x14')]({'output':_0x09dd('0x30')});}};
\ No newline at end of file
+var _0xe337=['compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','simple-git','root','index','exports','query','latest','fetch','version','2.0.0','status','json','master','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','error','restart','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','join','server','migrations','replace','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash'];(function(_0x5c9efc,_0x3a9366){var _0x14e1cd=function(_0x478928){while(--_0x478928){_0x5c9efc['push'](_0x5c9efc['shift']());}};_0x14e1cd(++_0x3a9366);}(_0xe337,0xa2));var _0x7e33=function(_0x58f363,_0x135c64){_0x58f363=_0x58f363-0x0;var _0xcb2c83=_0xe337[_0x58f363];return _0xcb2c83;};'use strict';var Umzug=require(_0x7e33('0x0'));var path=require(_0x7e33('0x1'));var fs=require('fs');var _=require(_0x7e33('0x2'));var pkginfo=require('pkginfo')(module,'version');var compareVersions=require(_0x7e33('0x3'));var exec=require(_0x7e33('0x4'))[_0x7e33('0x5')];var db=require(_0x7e33('0x6'))['db'];var config=require(_0x7e33('0x7'));var pm2=require(_0x7e33('0x8'));var logger=require('../../config/logger')('update');var git=require(_0x7e33('0x9'))(config[_0x7e33('0xa')]);exports[_0x7e33('0xb')]=function(_0x7b2269,_0x370e7b){var _0x2ed6cd={'current':module[_0x7e33('0xc')]['version'],'phonebar':0x2};if(_0x7b2269[_0x7e33('0xd')]&&_0x7b2269['query'][_0x7e33('0xe')]){return git[_0x7e33('0xf')]()['tags'](function(_0x315333,_0x30dcbc){_0x2ed6cd[_0x7e33('0xe')]=(_0x315333?module['exports'][_0x7e33('0x10')]:_0x30dcbc[_0x7e33('0xe')])||_0x7e33('0x11');return _0x370e7b[_0x7e33('0x12')](0xc8)[_0x7e33('0x13')](_0x2ed6cd);});}else{return _0x370e7b['status'](0xc8)['json'](_0x2ed6cd);}};exports[_0x7e33('0xf')]=function(_0x51ed9c,_0x397006){return git[_0x7e33('0xf')](['origin',_0x7e33('0x14')],function(_0x4952f8){if(_0x4952f8){logger['error'](_0x4952f8);return _0x397006[_0x7e33('0x12')](0x1f4)[_0x7e33('0x13')](_0x4952f8);}logger['info'](_0x7e33('0x15'));return _0x397006[_0x7e33('0x12')](0xc8)[_0x7e33('0x13')]({'output':_0x7e33('0x16')});});};exports[_0x7e33('0x17')]=function(_0x16ea17,_0x98252d){return git[_0x7e33('0x17')]([_0x7e33('0x18'),'FETCH_HEAD'],function(_0x5d91af){if(_0x5d91af){logger['error'](_0x5d91af);return _0x98252d[_0x7e33('0x12')](0x1f4)[_0x7e33('0x13')](_0x5d91af);}logger[_0x7e33('0x19')](_0x7e33('0x1a'));return _0x98252d[_0x7e33('0x12')](0xc8)['json']({'output':_0x7e33('0x1b')});});};exports[_0x7e33('0x1c')]=function(_0x5df4e6,_0x1a71ee){exec(_0x7e33('0x1d'),function(_0x49063b,_0x19a810,_0x4d4b03){logger[_0x7e33('0x19')](_0x19a810);logger[_0x7e33('0x19')](_0x4d4b03);if(_0x49063b){logger[_0x7e33('0x1e')](_0x49063b);return _0x1a71ee[_0x7e33('0x12')](0x1f4)[_0x7e33('0x13')](_0x49063b);}return _0x1a71ee['status'](0xc8)[_0x7e33('0x13')]({'output':_0x19a810});});};exports[_0x7e33('0x1f')]=function(_0x439027,_0x5d930d){return pm2[_0x7e33('0x1f')]('motion2')[_0x7e33('0x20')](function(_0x2fa208){logger['info'](_0x7e33('0x21'),_0x2fa208);return _0x5d930d['status'](0xc8)[_0x7e33('0x13')]({'output':_0x7e33('0x22')});})[_0x7e33('0x23')](function(_0x44f840){logger[_0x7e33('0x1e')](_0x44f840);return _0x5d930d[_0x7e33('0x12')](0x1f4)[_0x7e33('0x13')](_0x44f840);});};exports['migrations']=function(_0x489b70,_0x562e0c){var _0x1b23c7=fs[_0x7e33('0x24')](path[_0x7e33('0x25')](config[_0x7e33('0xa')],_0x7e33('0x26'),_0x7e33('0x27')));var _0xaf0a49=[];for(var _0x5b7345=0x0;_0x5b7345<_0x1b23c7['length'];_0x5b7345++){var _0x2cdf44=_0x1b23c7[_0x5b7345][_0x7e33('0x28')]('.js','');if(compareVersions(module[_0x7e33('0xc')]['version'],_0x2cdf44)===-0x1){_0xaf0a49[_0x7e33('0x29')](_0x2cdf44);}}if(_0xaf0a49['length']){var _0x3a09e9=_0xaf0a49[_0x7e33('0x2a')](compareVersions);var _0xa87025=new Umzug({'storage':_0x7e33('0x2b'),'storageOptions':{'model':db[_0x7e33('0x2c')],'modelName':_0x7e33('0x2c'),'columnName':_0x7e33('0x10')},'migrations':{'params':[db[_0x7e33('0x2b')][_0x7e33('0x2d')](),db[_0x7e33('0x2b')][_0x7e33('0x2e')],function(){throw new Error(_0x7e33('0x2f'));}],'path':path[_0x7e33('0x25')](config['root'],_0x7e33('0x26'),_0x7e33('0x27')),'pattern':/\.js$/}});_0xa87025['up']({'migrations':_[_0x7e33('0x30')](_0x3a09e9,function(_0x450021){return _0x450021+_0x7e33('0x31');})})['then'](function(){return _0x562e0c[_0x7e33('0x12')](0xc8)['json']({'output':_0x7e33('0x32')+module[_0x7e33('0xc')][_0x7e33('0x10')]+_0x7e33('0x33')+_[_0x7e33('0x34')](_0x3a09e9),'migrations':_['join'](_0x3a09e9)});})[_0x7e33('0x23')](function(_0x4d202b){if(_0x4d202b instanceof db['sequelize'][_0x7e33('0x35')]){return _0x562e0c[_0x7e33('0x12')](0xc8)['json']({'output':_0x7e33('0x36')});}else{return _0x562e0c['status'](0x1f4)[_0x7e33('0x13')](_0x4d202b);}});}else{return _0x562e0c['status'](0xc8)[_0x7e33('0x13')]({'output':_0x7e33('0x36')});}};
\ No newline at end of file
index d16dc38..dcb289c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe62d=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','isAuthenticated','/describe','get','/:id','show','post','create','put','update','delete','path'];(function(_0x33154d,_0x854047){var _0x3b2f03=function(_0x35f7a6){while(--_0x35f7a6){_0x33154d['push'](_0x33154d['shift']());}};_0x3b2f03(++_0x854047);}(_0xe62d,0xe3));var _0xde62=function(_0x1d58f0,_0x1a82db){_0x1d58f0=_0x1d58f0-0x0;var _0x2105a4=_0xe62d[_0x1d58f0];return _0x2105a4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xde62('0x0'));var timeout=require(_0xde62('0x1'));var express=require(_0xde62('0x2'));var router=express[_0xde62('0x3')]();var fs_extra=require(_0xde62('0x4'));var auth=require(_0xde62('0x5'));var interaction=require(_0xde62('0x6'));var config=require(_0xde62('0x7'));var controller=require(_0xde62('0x8'));router['get']('/',auth[_0xde62('0x9')](),controller['index']);router['get'](_0xde62('0xa'),auth[_0xde62('0x9')](),controller['describe']);router[_0xde62('0xb')](_0xde62('0xc'),auth['isAuthenticated'](),controller[_0xde62('0xd')]);router[_0xde62('0xe')]('/',auth[_0xde62('0x9')](),controller[_0xde62('0xf')]);router[_0xde62('0x10')](_0xde62('0xc'),auth[_0xde62('0x9')](),controller[_0xde62('0x11')]);router[_0xde62('0x12')](_0xde62('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xcd5a=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','isAuthenticated','get','/describe','describe','show','post','create','put','/:id','update','destroy','multer'];(function(_0x3f6d2d,_0x53a680){var _0x30e278=function(_0x22ab8e){while(--_0x22ab8e){_0x3f6d2d['push'](_0x3f6d2d['shift']());}};_0x30e278(++_0x53a680);}(_0xcd5a,0x1b8));var _0xacd5=function(_0x1a2815,_0x3721cb){_0x1a2815=_0x1a2815-0x0;var _0x585b38=_0xcd5a[_0x1a2815];return _0x585b38;};'use strict';var multer=require(_0xacd5('0x0'));var util=require(_0xacd5('0x1'));var path=require(_0xacd5('0x2'));var timeout=require(_0xacd5('0x3'));var express=require(_0xacd5('0x4'));var router=express[_0xacd5('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xacd5('0x6'));var interaction=require(_0xacd5('0x7'));var config=require(_0xacd5('0x8'));var controller=require(_0xacd5('0x9'));router['get']('/',auth[_0xacd5('0xa')](),controller['index']);router[_0xacd5('0xb')](_0xacd5('0xc'),auth[_0xacd5('0xa')](),controller[_0xacd5('0xd')]);router[_0xacd5('0xb')]('/:id',auth[_0xacd5('0xa')](),controller[_0xacd5('0xe')]);router[_0xacd5('0xf')]('/',auth[_0xacd5('0xa')](),controller[_0xacd5('0x10')]);router[_0xacd5('0x11')](_0xacd5('0x12'),auth[_0xacd5('0xa')](),controller[_0xacd5('0x13')]);router['delete'](_0xacd5('0x12'),auth[_0xacd5('0xa')](),controller[_0xacd5('0x14')]);module['exports']=router;
\ No newline at end of file
index 86a9045..6c2ad89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ba3=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','INTEGER'];(function(_0x3bdf16,_0x568d88){var _0x29a448=function(_0x3bbd0e){while(--_0x3bbd0e){_0x3bdf16['push'](_0x3bdf16['shift']());}};_0x29a448(++_0x568d88);}(_0x5ba3,0x140));var _0x35ba=function(_0x254e81,_0x59da2a){_0x254e81=_0x254e81-0x0;var _0x54d423=_0x5ba3[_0x254e81];return _0x54d423;};'use strict';var Sequelize=require(_0x35ba('0x0'));module['exports']={'type':{'type':Sequelize[_0x35ba('0x1')]},'uniqueid':{'type':Sequelize[_0x35ba('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x35ba('0x1')]},'queue':{'type':Sequelize[_0x35ba('0x1')]},'interface':{'type':Sequelize[_0x35ba('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x35ba('0x2')]},'agentconnectAt':{'type':Sequelize[_0x35ba('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x35ba('0x2')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x35ba('0x3')]},'agentcomplete':{'type':Sequelize[_0x35ba('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x35ba('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x35ba('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x35ba('0x3')]},'reason':{'type':Sequelize[_0x35ba('0x1')]},'lastevent':{'type':Sequelize[_0x35ba('0x1')]},'channel':{'type':Sequelize[_0x35ba('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x35ba('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x35ba('0x1')]},'context':{'type':Sequelize[_0x35ba('0x1')]},'exten':{'type':Sequelize[_0x35ba('0x1')]},'priority':{'type':Sequelize[_0x35ba('0x1')]},'destchannel':{'type':Sequelize[_0x35ba('0x1')]},'destchannelstate':{'type':Sequelize[_0x35ba('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x35ba('0x1')]},'destcalleridnum':{'type':Sequelize[_0x35ba('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x35ba('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x35ba('0x1')]},'destlanguage':{'type':Sequelize[_0x35ba('0x1')]},'destaccountcode':{'type':Sequelize[_0x35ba('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x35ba('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x35ba('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x35ba('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x35ba('0x1')],'comment':_0x35ba('0x5')},'transferexten':{'type':Sequelize[_0x35ba('0x1')]},'transferuniqueid':{'type':Sequelize[_0x35ba('0x1')]},'agententerreason':{'type':Sequelize[_0x35ba('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3c66=['DATE','INTEGER','BOOLEAN','STRING'];(function(_0x4f288e,_0x37f8f1){var _0x27aa32=function(_0x4ab0fe){while(--_0x4ab0fe){_0x4f288e['push'](_0x4f288e['shift']());}};_0x27aa32(++_0x37f8f1);}(_0x3c66,0x8b));var _0x63c6=function(_0x2a9d95,_0x4b110a){_0x2a9d95=_0x2a9d95-0x0;var _0x37354f=_0x3c66[_0x2a9d95];return _0x37354f;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x63c6('0x0')]},'calleridnum':{'type':Sequelize[_0x63c6('0x0')]},'calleridname':{'type':Sequelize[_0x63c6('0x0')]},'queue':{'type':Sequelize[_0x63c6('0x0')]},'interface':{'type':Sequelize[_0x63c6('0x0')]},'membername':{'type':Sequelize[_0x63c6('0x0')]},'agentcalledAt':{'type':Sequelize[_0x63c6('0x1')]},'agentconnectAt':{'type':Sequelize[_0x63c6('0x1')]},'agentcompleteAt':{'type':Sequelize[_0x63c6('0x1')]},'agentringnoanswerAt':{'type':Sequelize[_0x63c6('0x1')]},'agentdumpAt':{'type':Sequelize[_0x63c6('0x1')]},'holdtime':{'type':Sequelize[_0x63c6('0x2')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x63c6('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x63c6('0x2')]},'agentacw':{'type':Sequelize[_0x63c6('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x63c6('0x0')]},'lastevent':{'type':Sequelize[_0x63c6('0x0')]},'channel':{'type':Sequelize[_0x63c6('0x0')]},'channelstate':{'type':Sequelize[_0x63c6('0x2')]},'channelstatedesc':{'type':Sequelize[_0x63c6('0x0')]},'connectedlinenum':{'type':Sequelize[_0x63c6('0x0')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x63c6('0x0')]},'accountcode':{'type':Sequelize[_0x63c6('0x0')]},'context':{'type':Sequelize[_0x63c6('0x0')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x63c6('0x0')]},'destconnectedlinenum':{'type':Sequelize[_0x63c6('0x0')]},'destconnectedlinename':{'type':Sequelize[_0x63c6('0x0')]},'destlanguage':{'type':Sequelize[_0x63c6('0x0')]},'destaccountcode':{'type':Sequelize[_0x63c6('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x63c6('0x0')]},'destpriority':{'type':Sequelize[_0x63c6('0x0')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x63c6('0x0')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x63c6('0x0')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x63c6('0x0')]},'transferuniqueid':{'type':Sequelize[_0x63c6('0x0')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 73a864d..bdc8e0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x22b68a,_0x2bffc3){var _0x1ac67a=function(_0x25f9d5){while(--_0x25f9d5){_0x22b68a['push'](_0x22b68a['shift']());}};_0x1ac67a(++_0x2bffc3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index 532b255..c918a08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6bb=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xa6bb,0x12c));var _0xba6b=function(_0x244c27,_0x1e5a79){_0x244c27=_0x244c27-0x0;var _0x1c158a=_0xa6bb[_0x244c27];return _0x1c158a;};'use strict';var _=require('lodash');var util=require(_0xba6b('0x0'));var logger=require(_0xba6b('0x1'))(_0xba6b('0x2'));var moment=require(_0xba6b('0x3'));var BPromise=require(_0xba6b('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xba6b('0x5'));var config=require(_0xba6b('0x6'));var attributes=require(_0xba6b('0x7'));module[_0xba6b('0x8')]=function(_0x517d10,_0x4cc381){return _0x517d10[_0xba6b('0x9')](_0xba6b('0xa'),attributes,{'tableName':_0xba6b('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid','destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a61=['define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','moment','bluebird','request-promise','path','./voiceAgentReport.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1a61,0x1e6));var _0x11a6=function(_0x16b696,_0x114f8c){_0x16b696=_0x16b696-0x0;var _0x85b7c=_0x1a61[_0x16b696];return _0x85b7c;};'use strict';var _=require(_0x11a6('0x0'));var util=require('util');var logger=require(_0x11a6('0x1'))('api');var moment=require(_0x11a6('0x2'));var BPromise=require(_0x11a6('0x3'));var rp=require(_0x11a6('0x4'));var fs=require('fs');var path=require(_0x11a6('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x11a6('0x6'));module[_0x11a6('0x7')]=function(_0x5b72a1,_0x41e03d){return _0x5b72a1[_0x11a6('0x8')](_0x11a6('0x9'),attributes,{'tableName':_0x11a6('0xa'),'paranoid':![],'indexes':[{'fields':[_0x11a6('0xb'),_0x11a6('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f57b062..5397725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0524=['then','info','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CreateVoiceAgentReport','VoiceAgentReport','body','options','raw','catch','UpdateVoiceAgentReport','update','where','attributes','util','moment','bluebird','ioredis','../../config/logger','client','request'];(function(_0x27ab58,_0x48c638){var _0x3daff0=function(_0x7e2522){while(--_0x7e2522){_0x27ab58['push'](_0x27ab58['shift']());}};_0x3daff0(++_0x48c638);}(_0x0524,0x1a9));var _0x4052=function(_0x4629ee,_0x5802d8){_0x4629ee=_0x4629ee-0x0;var _0x47fb5b=_0x0524[_0x4629ee];return _0x47fb5b;};'use strict';var _=require('lodash');var util=require(_0x4052('0x0'));var moment=require(_0x4052('0x1'));var BPromise=require(_0x4052('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4052('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4052('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4052('0x5')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b4158,_0x49a063,_0x230ae0){return new BPromise(function(_0x51d557,_0x2074ef){return client[_0x4052('0x6')](_0x4b4158,_0x230ae0)[_0x4052('0x7')](function(_0x3127f3){logger[_0x4052('0x8')](_0x4052('0x9'),_0x49a063,'request\x20sent');logger[_0x4052('0xa')](_0x4052('0xb'),_0x49a063,_0x4052('0xc'),JSON[_0x4052('0xd')](_0x3127f3));if(_0x3127f3[_0x4052('0xe')]){if(_0x3127f3[_0x4052('0xe')][_0x4052('0xf')]===0x1f4){logger[_0x4052('0xe')](_0x4052('0x9'),_0x49a063,_0x3127f3['error'][_0x4052('0x10')]);return _0x2074ef(_0x3127f3['error'][_0x4052('0x10')]);}logger['error'](_0x4052('0x9'),_0x49a063,_0x3127f3[_0x4052('0xe')][_0x4052('0x10')]);return _0x51d557(_0x3127f3[_0x4052('0xe')]['message']);}else{logger[_0x4052('0x8')]('VoiceAgentReport,\x20%s,\x20%s',_0x49a063,'request\x20sent');_0x51d557(_0x3127f3['result'][_0x4052('0x10')]);}})['catch'](function(_0x48301a){logger[_0x4052('0xe')](_0x4052('0x9'),_0x49a063,_0x48301a);_0x2074ef(_0x48301a);});});}exports[_0x4052('0x11')]=function(_0xa6409c){var _0x415d3a=this;return new Promise(function(_0x121b05,_0x190cd1){return db[_0x4052('0x12')]['create'](_0xa6409c[_0x4052('0x13')],{'raw':_0xa6409c[_0x4052('0x14')]?_0xa6409c[_0x4052('0x14')][_0x4052('0x15')]===undefined?!![]:![]:!![]})[_0x4052('0x7')](function(_0x3235b9){logger[_0x4052('0x8')](_0x4052('0x11'),_0xa6409c);logger[_0x4052('0xa')](_0x4052('0x11'),_0xa6409c,JSON[_0x4052('0xd')](_0x3235b9));_0x121b05(_0x3235b9);})[_0x4052('0x16')](function(_0x13aa32){logger[_0x4052('0xe')]('CreateVoiceAgentReport',_0x13aa32[_0x4052('0x10')],_0xa6409c);_0x190cd1(_0x415d3a[_0x4052('0xe')](0x1f4,_0x13aa32[_0x4052('0x10')]));});});};exports[_0x4052('0x17')]=function(_0x5e4f0d){var _0x3d31e1=this;return new Promise(function(_0x5e9acc,_0x56a3c9){return db[_0x4052('0x12')][_0x4052('0x18')](_0x5e4f0d[_0x4052('0x13')],{'raw':_0x5e4f0d[_0x4052('0x14')]?_0x5e4f0d[_0x4052('0x14')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e4f0d['options']?_0x5e4f0d[_0x4052('0x14')][_0x4052('0x19')]||null:null,'attributes':_0x5e4f0d[_0x4052('0x14')]?_0x5e4f0d[_0x4052('0x14')][_0x4052('0x1a')]||null:null,'limit':_0x5e4f0d[_0x4052('0x14')]?_0x5e4f0d[_0x4052('0x14')]['limit']||null:null})['then'](function(_0x6280c){logger[_0x4052('0x8')]('UpdateVoiceAgentReport',_0x5e4f0d);logger[_0x4052('0xa')](_0x4052('0x17'),_0x5e4f0d,JSON['stringify'](_0x6280c));_0x5e9acc(_0x6280c);})['catch'](function(_0x5c558f){logger['error']('UpdateVoiceAgentReport',_0x5c558f[_0x4052('0x10')],_0x5e4f0d);_0x56a3c9(_0x3d31e1[_0x4052('0xe')](0x1f4,_0x5c558f[_0x4052('0x10')]));});});};
\ No newline at end of file
+var _0x8fb2=['create','options','raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','VoiceAgentReport','body','attributes','limit','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x338f73,_0x1945c8){var _0x163fdf=function(_0x4cd033){while(--_0x4cd033){_0x338f73['push'](_0x338f73['shift']());}};_0x163fdf(++_0x1945c8);}(_0x8fb2,0xdc));var _0x28fb=function(_0x31637e,_0x1142e4){_0x31637e=_0x31637e-0x0;var _0x3be315=_0x8fb2[_0x31637e];return _0x3be315;};'use strict';var _=require(_0x28fb('0x0'));var util=require('util');var moment=require(_0x28fb('0x1'));var BPromise=require(_0x28fb('0x2'));var rs=require(_0x28fb('0x3'));var fs=require('fs');var Redis=require(_0x28fb('0x4'));var db=require(_0x28fb('0x5'))['db'];var utils=require(_0x28fb('0x6'));var logger=require(_0x28fb('0x7'))(_0x28fb('0x8'));var config=require(_0x28fb('0x9'));var jayson=require(_0x28fb('0xa'));var client=jayson[_0x28fb('0xb')][_0x28fb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x435e09,_0x1b368d,_0x9466a5){return new BPromise(function(_0x15fa13,_0x451d98){return client[_0x28fb('0xd')](_0x435e09,_0x9466a5)[_0x28fb('0xe')](function(_0x10dbe2){logger['info'](_0x28fb('0xf'),_0x1b368d,_0x28fb('0x10'));logger[_0x28fb('0x11')](_0x28fb('0x12'),_0x1b368d,_0x28fb('0x10'),JSON[_0x28fb('0x13')](_0x10dbe2));if(_0x10dbe2[_0x28fb('0x14')]){if(_0x10dbe2['error'][_0x28fb('0x15')]===0x1f4){logger[_0x28fb('0x14')]('VoiceAgentReport,\x20%s,\x20%s',_0x1b368d,_0x10dbe2[_0x28fb('0x14')][_0x28fb('0x16')]);return _0x451d98(_0x10dbe2['error']['message']);}logger[_0x28fb('0x14')](_0x28fb('0xf'),_0x1b368d,_0x10dbe2['error'][_0x28fb('0x16')]);return _0x15fa13(_0x10dbe2[_0x28fb('0x14')][_0x28fb('0x16')]);}else{logger[_0x28fb('0x17')]('VoiceAgentReport,\x20%s,\x20%s',_0x1b368d,_0x28fb('0x10'));_0x15fa13(_0x10dbe2[_0x28fb('0x18')][_0x28fb('0x16')]);}})['catch'](function(_0x4d3a35){logger[_0x28fb('0x14')](_0x28fb('0xf'),_0x1b368d,_0x4d3a35);_0x451d98(_0x4d3a35);});});}exports['CreateVoiceAgentReport']=function(_0x4199e0){var _0x3aa238=this;return new Promise(function(_0x3d2021,_0x2a3e8b){return db['VoiceAgentReport'][_0x28fb('0x19')](_0x4199e0['body'],{'raw':_0x4199e0[_0x28fb('0x1a')]?_0x4199e0[_0x28fb('0x1a')][_0x28fb('0x1b')]===undefined?!![]:![]:!![]})[_0x28fb('0xe')](function(_0x4cdf52){logger[_0x28fb('0x17')](_0x28fb('0x1c'),_0x4199e0);logger[_0x28fb('0x11')](_0x28fb('0x1c'),_0x4199e0,JSON[_0x28fb('0x13')](_0x4cdf52));_0x3d2021(_0x4cdf52);})['catch'](function(_0x5ee1b9){logger[_0x28fb('0x14')](_0x28fb('0x1c'),_0x5ee1b9[_0x28fb('0x16')],_0x4199e0);_0x2a3e8b(_0x3aa238[_0x28fb('0x14')](0x1f4,_0x5ee1b9[_0x28fb('0x16')]));});});};exports[_0x28fb('0x1d')]=function(_0x2d824d){var _0x3e06cf=this;return new Promise(function(_0x455e97,_0x5ae4e9){return db[_0x28fb('0x1e')]['update'](_0x2d824d[_0x28fb('0x1f')],{'raw':_0x2d824d[_0x28fb('0x1a')]?_0x2d824d[_0x28fb('0x1a')][_0x28fb('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d824d[_0x28fb('0x1a')]?_0x2d824d['options']['where']||null:null,'attributes':_0x2d824d[_0x28fb('0x1a')]?_0x2d824d[_0x28fb('0x1a')][_0x28fb('0x20')]||null:null,'limit':_0x2d824d[_0x28fb('0x1a')]?_0x2d824d[_0x28fb('0x1a')][_0x28fb('0x21')]||null:null})[_0x28fb('0xe')](function(_0x267203){logger[_0x28fb('0x17')](_0x28fb('0x1d'),_0x2d824d);logger[_0x28fb('0x11')](_0x28fb('0x1d'),_0x2d824d,JSON[_0x28fb('0x13')](_0x267203));_0x455e97(_0x267203);})[_0x28fb('0x22')](function(_0x4fefda){logger['error']('UpdateVoiceAgentReport',_0x4fefda[_0x28fb('0x16')],_0x2d824d);_0x5ae4e9(_0x3e06cf[_0x28fb('0x14')](0x1f4,_0x4fefda[_0x28fb('0x16')]));});});};
\ No newline at end of file
index e5ce9d4..03f6598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update'];(function(_0x3ccd9f,_0x1b2b46){var _0x273cb8=function(_0x2fa6b8){while(--_0x2fa6b8){_0x3ccd9f['push'](_0x3ccd9f['shift']());}};_0x273cb8(++_0x1b2b46);}(_0xed1f,0x6a));var _0xfed1=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0xed1f[_0x25d386];return _0x857f4a;};'use strict';var multer=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var path=require(_0xfed1('0x2'));var timeout=require(_0xfed1('0x3'));var express=require(_0xfed1('0x4'));var router=express[_0xfed1('0x5')]();var fs_extra=require(_0xfed1('0x6'));var auth=require(_0xfed1('0x7'));var interaction=require(_0xfed1('0x8'));var config=require(_0xfed1('0x9'));var controller=require(_0xfed1('0xa'));router[_0xfed1('0xb')]('/',auth[_0xfed1('0xc')](),controller[_0xfed1('0xd')]);router[_0xfed1('0xb')](_0xfed1('0xe'),auth[_0xfed1('0xc')](),controller[_0xfed1('0xf')]);router['get'](_0xfed1('0x10'),auth[_0xfed1('0xc')](),controller['show']);router[_0xfed1('0x11')]('/',auth[_0xfed1('0xc')](),controller['create']);router[_0xfed1('0x12')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x13')]);router['delete']('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xd0bb=['express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','destroy','exports','multer','util','path'];(function(_0x19c0b7,_0x33758a){var _0xe18c07=function(_0x5e237d){while(--_0x5e237d){_0x19c0b7['push'](_0x19c0b7['shift']());}};_0xe18c07(++_0x33758a);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x62a56f,_0x4cedeb){_0x62a56f=_0x62a56f-0x0;var _0x156be0=_0xd0bb[_0x62a56f];return _0x156be0;};'use strict';var multer=require(_0xbd0b('0x0'));var util=require(_0xbd0b('0x1'));var path=require(_0xbd0b('0x2'));var timeout=require('connect-timeout');var express=require(_0xbd0b('0x3'));var router=express['Router']();var fs_extra=require(_0xbd0b('0x4'));var auth=require(_0xbd0b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbd0b('0x6'));var controller=require('./voiceCallReport.controller');router[_0xbd0b('0x7')]('/',auth[_0xbd0b('0x8')](),controller[_0xbd0b('0x9')]);router[_0xbd0b('0x7')](_0xbd0b('0xa'),auth['isAuthenticated'](),controller[_0xbd0b('0xb')]);router[_0xbd0b('0x7')](_0xbd0b('0xc'),auth[_0xbd0b('0x8')](),controller[_0xbd0b('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xbd0b('0xe')]);router[_0xbd0b('0xf')]('/:id',auth[_0xbd0b('0x8')](),controller[_0xbd0b('0x10')]);router['delete'](_0xbd0b('0xc'),auth[_0xbd0b('0x8')](),controller[_0xbd0b('0x11')]);module[_0xbd0b('0x12')]=router;
\ No newline at end of file
index 423ce7a..710cfe0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48ae=['inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','internal'];(function(_0x1a08ad,_0x21d209){var _0x521649=function(_0x1794e7){while(--_0x1794e7){_0x1a08ad['push'](_0x1a08ad['shift']());}};_0x521649(++_0x21d209);}(_0x48ae,0xd2));var _0xe48a=function(_0x1cf937,_0x56f226){_0x1cf937=_0x1cf937-0x0;var _0x1b4a66=_0x48ae[_0x1cf937];return _0x1b4a66;};'use strict';var Sequelize=require(_0xe48a('0x0'));module[_0xe48a('0x1')]={'uniqueid':{'type':Sequelize[_0xe48a('0x2')]},'type':{'type':Sequelize[_0xe48a('0x3')](_0xe48a('0x4'),_0xe48a('0x5'),'outbound',_0xe48a('0x6'),_0xe48a('0x7'),_0xe48a('0x8'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xe48a('0x2')]},'source':{'type':Sequelize[_0xe48a('0x2')]},'destination':{'type':Sequelize[_0xe48a('0x2')]},'destinationcontext':{'type':Sequelize[_0xe48a('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0xe48a('0x2')]},'lastapplication':{'type':Sequelize[_0xe48a('0x2')]},'lastdata':{'type':Sequelize[_0xe48a('0x9')]},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0xe48a('0xa')]},'answertime':{'type':Sequelize[_0xe48a('0xa')]},'endtime':{'type':Sequelize[_0xe48a('0xa')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xe48a('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xe48a('0x2')]},'amaflags':{'type':Sequelize[_0xe48a('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0xe48a('0x2')]},'userSecondDisposition':{'type':Sequelize[_0xe48a('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xe48a('0x2')]},'note':{'type':Sequelize[_0xe48a('0x2')]},'prefix':{'type':Sequelize[_0xe48a('0x2')]},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0xe48a('0x2')]}};
\ No newline at end of file
+var _0x5080=['sequelize','exports','STRING','inbound','outbound-fax','TEXT','DATE','INTEGER'];(function(_0x534e9a,_0x5bd217){var _0x4628fc=function(_0x21f5f3){while(--_0x21f5f3){_0x534e9a['push'](_0x534e9a['shift']());}};_0x4628fc(++_0x5bd217);}(_0x5080,0x158));var _0x0508=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5080[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0508('0x0'));module[_0x0508('0x1')]={'uniqueid':{'type':Sequelize[_0x0508('0x2')]},'type':{'type':Sequelize['ENUM'](_0x0508('0x3'),'internal','outbound','inbound-fax',_0x0508('0x4'),'dialer')},'tag':{'type':Sequelize[_0x0508('0x2')]},'accountcode':{'type':Sequelize[_0x0508('0x2')]},'source':{'type':Sequelize[_0x0508('0x2')]},'destination':{'type':Sequelize[_0x0508('0x2')]},'destinationcontext':{'type':Sequelize[_0x0508('0x2')]},'callerid':{'type':Sequelize[_0x0508('0x2')]},'channel':{'type':Sequelize[_0x0508('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x0508('0x2')]},'lastdata':{'type':Sequelize[_0x0508('0x5')]},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x0508('0x6')]},'endtime':{'type':Sequelize[_0x0508('0x6')]},'duration':{'type':Sequelize[_0x0508('0x7')]},'billableseconds':{'type':Sequelize[_0x0508('0x7')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x0508('0x2')]},'amaflags':{'type':Sequelize[_0x0508('0x2')]},'userfield':{'type':Sequelize[_0x0508('0x2')]},'userDisposition':{'type':Sequelize[_0x0508('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x0508('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x0508('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x0508('0x2')]},'routeid':{'type':Sequelize[_0x0508('0x7')]},'sipcallid':{'type':Sequelize[_0x0508('0x2')]}};
\ No newline at end of file
index a23e25e..ca1ea32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filters','filter','merge','where','options','alias','User','rows','catch','show','params','keys','rawAttributes','includeAll','include','create','body','find','describe','uniqueid','user','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2032,0xd9));var _0x2203=function(_0x3699f2,_0x6f0d6){_0x3699f2=_0x3699f2-0x0;var _0x37a0e5=_0x2032[_0x3699f2];return _0x37a0e5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2203('0x0'));var zipdir=require(_0x2203('0x1'));var jsonpatch=require(_0x2203('0x2'));var rp=require('request-promise');var moment=require(_0x2203('0x3'));var BPromise=require(_0x2203('0x4'));var Mustache=require('mustache');var util=require(_0x2203('0x5'));var path=require(_0x2203('0x6'));var sox=require(_0x2203('0x7'));var csv=require(_0x2203('0x8'));var ejs=require(_0x2203('0x9'));var fs=require('fs');var fs_extra=require(_0x2203('0xa'));var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2203('0x16'));var db=require(_0x2203('0x17'))['db'];function respondWithStatusCode(_0x4b9376,_0x583bc7){_0x583bc7=_0x583bc7||0xcc;return function(_0x585c76){if(_0x585c76){return _0x4b9376['sendStatus'](_0x583bc7);}return _0x4b9376['status'](_0x583bc7)[_0x2203('0x18')]();};}function respondWithResult(_0x538b30,_0x592e47){_0x592e47=_0x592e47||0xc8;return function(_0x21a3af){if(_0x21a3af){return _0x538b30[_0x2203('0x19')](_0x592e47)[_0x2203('0x1a')](_0x21a3af);}};}function respondWithFilteredResult(_0x41af85,_0x226209){return function(_0x3fe0a8){if(_0x3fe0a8){var _0x2c36e6=typeof _0x226209[_0x2203('0x1b')]===_0x2203('0x1c')&&typeof _0x226209[_0x2203('0x1d')]==='undefined';var _0x280eda=_0x3fe0a8[_0x2203('0x1e')];var _0x4893ff=_0x2c36e6?0x0:_0x226209[_0x2203('0x1b')];var _0x8906e1=_0x2c36e6?_0x3fe0a8['count']:_0x226209[_0x2203('0x1b')]+_0x226209['limit'];var _0x2904ba;if(_0x8906e1>=_0x280eda){_0x8906e1=_0x280eda;_0x2904ba=0xc8;}else{_0x2904ba=0xce;}_0x41af85[_0x2203('0x19')](_0x2904ba);return _0x41af85[_0x2203('0x1f')](_0x2203('0x20'),_0x4893ff+'-'+_0x8906e1+'/'+_0x280eda)[_0x2203('0x1a')](_0x3fe0a8);}return null;};}function patchUpdates(_0x449039){return function(_0x538c23){try{jsonpatch[_0x2203('0x21')](_0x538c23,_0x449039,!![]);}catch(_0x50822b){return BPromise['reject'](_0x50822b);}return _0x538c23[_0x2203('0x22')]();};}function saveUpdates(_0x496d82,_0x3b8ef9){return function(_0x5bfe61){if(_0x5bfe61){return _0x5bfe61['update'](_0x496d82)[_0x2203('0x23')](function(_0x5e29cd){return _0x5e29cd;});}return null;};}function removeEntity(_0x5c8da9,_0x226374){return function(_0x2718f5){if(_0x2718f5){return _0x2718f5[_0x2203('0x24')]()[_0x2203('0x23')](function(){_0x5c8da9[_0x2203('0x19')](0xcc)[_0x2203('0x18')]();});}};}function handleEntityNotFound(_0x49c12,_0x250349){return function(_0x576378){if(!_0x576378){_0x49c12[_0x2203('0x25')](0x194);}return _0x576378;};}function handleError(_0x36b958,_0x39a11a){_0x39a11a=_0x39a11a||0x1f4;return function(_0x5f11bf){logger[_0x2203('0x26')](_0x5f11bf[_0x2203('0x27')]);if(_0x5f11bf['name']){delete _0x5f11bf[_0x2203('0x28')];}_0x36b958[_0x2203('0x19')](_0x39a11a)[_0x2203('0x29')](_0x5f11bf);};}exports[_0x2203('0x2a')]=function(_0x28ae02,_0x1df508){var _0x9c53f={},_0x5a95c1={},_0x34b8ba={'count':0x0,'rows':[]};var _0x616ed8=_[_0x2203('0x2b')](db[_0x2203('0x2c')]['rawAttributes'],function(_0x3a8e23){return{'name':_0x3a8e23[_0x2203('0x2d')],'type':_0x3a8e23[_0x2203('0x2e')][_0x2203('0x2f')]};});_0x5a95c1['model']=_[_0x2203('0x2b')](_0x616ed8,_0x2203('0x28'));_0x5a95c1['query']=_['keys'](_0x28ae02[_0x2203('0x30')]);_0x5a95c1['filters']=_['intersection'](_0x5a95c1[_0x2203('0x31')],_0x5a95c1[_0x2203('0x30')]);_0x9c53f[_0x2203('0x32')]=_[_0x2203('0x33')](_0x5a95c1[_0x2203('0x31')],qs['fields'](_0x28ae02[_0x2203('0x30')][_0x2203('0x34')]));_0x9c53f['attributes']=_0x9c53f[_0x2203('0x32')][_0x2203('0x35')]?_0x9c53f[_0x2203('0x32')]:_0x5a95c1[_0x2203('0x31')];if(!_0x28ae02[_0x2203('0x30')][_0x2203('0x36')](_0x2203('0x37'))){_0x9c53f[_0x2203('0x1d')]=qs[_0x2203('0x1d')](_0x28ae02['query'][_0x2203('0x1d')]);_0x9c53f[_0x2203('0x1b')]=qs['offset'](_0x28ae02['query'][_0x2203('0x1b')]);}_0x9c53f['order']=qs[_0x2203('0x38')](_0x28ae02[_0x2203('0x30')][_0x2203('0x38')]);_0x9c53f['where']=qs['filters'](_[_0x2203('0x39')](_0x28ae02['query'],_0x5a95c1[_0x2203('0x3a')]),_0x616ed8);if(_0x28ae02['query'][_0x2203('0x3b')]){_0x9c53f['where']=_[_0x2203('0x3c')](_0x9c53f[_0x2203('0x3d')],{'$or':_[_0x2203('0x2b')](_0x616ed8,function(_0x40a793){if(_0x40a793[_0x2203('0x2e')]!=='VIRTUAL'){var _0x5f1561={};_0x5f1561[_0x40a793['name']]={'$like':'%'+_0x28ae02[_0x2203('0x30')][_0x2203('0x3b')]+'%'};return _0x5f1561;}})});}_0x9c53f=_[_0x2203('0x3c')]({},_0x9c53f,_0x28ae02[_0x2203('0x3e')]);var _0x3283fb={'where':_0x9c53f[_0x2203('0x3d')]};return db[_0x2203('0x2c')]['count'](_0x3283fb)[_0x2203('0x23')](function(_0x1b12c3){_0x34b8ba[_0x2203('0x1e')]=_0x1b12c3;if(_0x28ae02[_0x2203('0x30')]['includeAll']){_0x9c53f['include']=[{'attributes':['id',_0x2203('0x28'),'fullname',_0x2203('0x3f')],'model':db[_0x2203('0x40')],'as':_0x2203('0x40')}];}return db['VoiceCallReport']['findAll'](_0x9c53f);})[_0x2203('0x23')](function(_0x3739f6){_0x34b8ba[_0x2203('0x41')]=_0x3739f6;return _0x34b8ba;})[_0x2203('0x23')](respondWithFilteredResult(_0x1df508,_0x9c53f))[_0x2203('0x42')](handleError(_0x1df508,null));};exports[_0x2203('0x43')]=function(_0x5cd573,_0x15d3b6){var _0x165a3f={'raw':!![],'where':{'id':_0x5cd573[_0x2203('0x44')]['id']}},_0x3a866c={};_0x3a866c[_0x2203('0x31')]=_[_0x2203('0x45')](db[_0x2203('0x2c')][_0x2203('0x46')]);_0x3a866c[_0x2203('0x30')]=_[_0x2203('0x45')](_0x5cd573['query']);_0x3a866c[_0x2203('0x3a')]=_[_0x2203('0x33')](_0x3a866c[_0x2203('0x31')],_0x3a866c[_0x2203('0x30')]);_0x165a3f['attributes']=_['intersection'](_0x3a866c[_0x2203('0x31')],qs['fields'](_0x5cd573[_0x2203('0x30')][_0x2203('0x34')]));_0x165a3f[_0x2203('0x32')]=_0x165a3f[_0x2203('0x32')]['length']?_0x165a3f[_0x2203('0x32')]:_0x3a866c[_0x2203('0x31')];if(_0x5cd573['query'][_0x2203('0x47')]){_0x165a3f[_0x2203('0x48')]=[{'all':!![]}];}_0x165a3f=_[_0x2203('0x3c')]({},_0x165a3f,_0x5cd573[_0x2203('0x3e')]);return db['VoiceCallReport']['find'](_0x165a3f)[_0x2203('0x23')](handleEntityNotFound(_0x15d3b6,null))['then'](respondWithResult(_0x15d3b6,null))['catch'](handleError(_0x15d3b6,null));};exports[_0x2203('0x49')]=function(_0x33b7b5,_0x1a2665){return db['VoiceCallReport']['create'](_0x33b7b5[_0x2203('0x4a')],{})[_0x2203('0x23')](respondWithResult(_0x1a2665,0xc9))[_0x2203('0x42')](handleError(_0x1a2665,null));};exports[_0x2203('0x24')]=function(_0x225b0e,_0x21fd78){return db['VoiceCallReport'][_0x2203('0x4b')]({'where':{'id':_0x225b0e['params']['id']}})[_0x2203('0x23')](handleEntityNotFound(_0x21fd78,null))[_0x2203('0x23')](removeEntity(_0x21fd78,null))[_0x2203('0x42')](handleError(_0x21fd78,null));};exports[_0x2203('0x4c')]=function(_0x58b9bb,_0x506795){return db[_0x2203('0x2c')][_0x2203('0x4c')]()[_0x2203('0x23')](respondWithResult(_0x506795,null))[_0x2203('0x42')](handleError(_0x506795,null));};exports['update']=function(_0x4de47a,_0x49999a){if(_0x4de47a[_0x2203('0x4a')][_0x2203('0x4d')]){delete _0x4de47a['body'][_0x2203('0x4d')];}return db[_0x2203('0x2c')]['find']({'where':{'uniqueid':_0x4de47a[_0x2203('0x44')]['id'],'UserId':{'$or':[null,_0x4de47a[_0x2203('0x4e')]['id']]}}})[_0x2203('0x23')](handleEntityNotFound(_0x49999a,null))[_0x2203('0x23')](saveUpdates(_0x4de47a['body'],null))[_0x2203('0x23')](respondWithResult(_0x49999a,null))['catch'](handleError(_0x49999a,null));};
\ No newline at end of file
+var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x3005d5,_0xf588c7){var _0x547c7e=function(_0x4514dc){while(--_0x4514dc){_0x3005d5['push'](_0x3005d5['shift']());}};_0x547c7e(++_0xf588c7);}(_0x5f2f,0x73));var _0xf5f2=function(_0x31d34b,_0x4fef97){_0x31d34b=_0x31d34b-0x0;var _0x314175=_0x5f2f[_0x31d34b];return _0x314175;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
index 869dbea..78bd99c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dd3=['uniqueid','util','api','moment','path','rimraf','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call'];(function(_0x45cbe8,_0x384306){var _0x2c71e9=function(_0x500f8c){while(--_0x500f8c){_0x45cbe8['push'](_0x45cbe8['shift']());}};_0x2c71e9(++_0x384306);}(_0x1dd3,0x1f0));var _0x31dd=function(_0x15fa00,_0x2c50a7){_0x15fa00=_0x15fa00-0x0;var _0x48237e=_0x1dd3[_0x15fa00];return _0x48237e;};'use strict';var _=require('lodash');var util=require(_0x31dd('0x0'));var logger=require('../../config/logger')(_0x31dd('0x1'));var moment=require(_0x31dd('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x31dd('0x3'));var rimraf=require(_0x31dd('0x4'));var config=require('../../config/environment');var attributes=require(_0x31dd('0x5'));module[_0x31dd('0x6')]=function(_0x3f9f22,_0x38e7ab){return _0x3f9f22[_0x31dd('0x7')](_0x31dd('0x8'),attributes,{'tableName':_0x31dd('0x9'),'paranoid':![],'indexes':[{'fields':[_0x31dd('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa331=['report_call','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','VoiceCallReport'];(function(_0x505437,_0x5b1c72){var _0xc06812=function(_0x385b21){while(--_0x385b21){_0x505437['push'](_0x505437['shift']());}};_0xc06812(++_0x5b1c72);}(_0xa331,0x1cf));var _0x1a33=function(_0x5c8bdc,_0x47e562){_0x5c8bdc=_0x5c8bdc-0x0;var _0x1e3b74=_0xa331[_0x5c8bdc];return _0x1e3b74;};'use strict';var _=require('lodash');var util=require(_0x1a33('0x0'));var logger=require(_0x1a33('0x1'))(_0x1a33('0x2'));var moment=require(_0x1a33('0x3'));var BPromise=require(_0x1a33('0x4'));var rp=require(_0x1a33('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1a33('0x6'));var config=require(_0x1a33('0x7'));var attributes=require('./voiceCallReport.attributes');module[_0x1a33('0x8')]=function(_0x1575d3,_0x581d84){return _0x1575d3['define'](_0x1a33('0x9'),attributes,{'tableName':_0x1a33('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ffb5e77..44c82a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d5a=['message','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','include','map','model','catch','CreateVoiceCallReport','create','body','then','UpdateVoiceCallReport','update','stringify','lodash','util','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x2c81c2,_0x4608da){var _0x45abab=function(_0x218ac7){while(--_0x218ac7){_0x2c81c2['push'](_0x2c81c2['shift']());}};_0x45abab(++_0x4608da);}(_0x7d5a,0x7c));var _0xa7d5=function(_0x2b558b,_0x296c0f){_0x2b558b=_0x2b558b-0x0;var _0x1f3d78=_0x7d5a[_0x2b558b];return _0x1f3d78;};'use strict';var _=require(_0xa7d5('0x0'));var util=require(_0xa7d5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa7d5('0x2'));var logger=require(_0xa7d5('0x3'))(_0xa7d5('0x4'));var config=require(_0xa7d5('0x5'));var jayson=require(_0xa7d5('0x6'));var client=jayson[_0xa7d5('0x7')][_0xa7d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d2069,_0x5cc197,_0x461e6d){return new BPromise(function(_0x557e78,_0x3794b9){return client[_0xa7d5('0x9')](_0x1d2069,_0x461e6d)['then'](function(_0x4b7525){logger[_0xa7d5('0xa')](_0xa7d5('0xb'),_0x5cc197,'request\x20sent');logger[_0xa7d5('0xc')](_0xa7d5('0xd'),_0x5cc197,_0xa7d5('0xe'),JSON['stringify'](_0x4b7525));if(_0x4b7525[_0xa7d5('0xf')]){if(_0x4b7525[_0xa7d5('0xf')]['code']===0x1f4){logger[_0xa7d5('0xf')](_0xa7d5('0xb'),_0x5cc197,_0x4b7525[_0xa7d5('0xf')][_0xa7d5('0x10')]);return _0x3794b9(_0x4b7525[_0xa7d5('0xf')]['message']);}logger[_0xa7d5('0xf')](_0xa7d5('0xb'),_0x5cc197,_0x4b7525[_0xa7d5('0xf')]['message']);return _0x557e78(_0x4b7525[_0xa7d5('0xf')]['message']);}else{logger[_0xa7d5('0xa')](_0xa7d5('0xb'),_0x5cc197,_0xa7d5('0xe'));_0x557e78(_0x4b7525['result'][_0xa7d5('0x10')]);}})['catch'](function(_0x44a88a){logger['error'](_0xa7d5('0xb'),_0x5cc197,_0x44a88a);_0x3794b9(_0x44a88a);});});}exports[_0xa7d5('0x11')]=function(_0x5ca5ed){var _0x4c918c=this;return new Promise(function(_0x4d549f,_0x8a852c){return db[_0xa7d5('0x12')][_0xa7d5('0x13')]({'raw':_0x5ca5ed['options']?_0x5ca5ed[_0xa7d5('0x14')][_0xa7d5('0x15')]===undefined?!![]:![]:!![],'where':_0x5ca5ed[_0xa7d5('0x14')]?_0x5ca5ed[_0xa7d5('0x14')][_0xa7d5('0x16')]||null:null,'attributes':_0x5ca5ed['options']?_0x5ca5ed[_0xa7d5('0x14')][_0xa7d5('0x17')]||null:null,'limit':_0x5ca5ed['options']?_0x5ca5ed[_0xa7d5('0x14')]['limit']||null:null,'include':_0x5ca5ed['options']?_0x5ca5ed[_0xa7d5('0x14')][_0xa7d5('0x18')]?_[_0xa7d5('0x19')](_0x5ca5ed[_0xa7d5('0x14')][_0xa7d5('0x18')],function(_0x25f490){return{'model':db[_0x25f490[_0xa7d5('0x1a')]],'as':_0x25f490['as'],'attributes':_0x25f490[_0xa7d5('0x17')],'include':_0x25f490['include']?_['map'](_0x25f490[_0xa7d5('0x18')],function(_0x180c2c){return{'model':db[_0x180c2c[_0xa7d5('0x1a')]],'as':_0x180c2c['as'],'attributes':_0x180c2c['attributes'],'include':_0x180c2c['include']?_[_0xa7d5('0x19')](_0x180c2c[_0xa7d5('0x18')],function(_0x1c1520){return{'model':db[_0x1c1520[_0xa7d5('0x1a')]],'as':_0x1c1520['as'],'attributes':_0x1c1520[_0xa7d5('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x474504){logger[_0xa7d5('0xa')]('GetVoiceCallReport',_0x5ca5ed);logger[_0xa7d5('0xc')](_0xa7d5('0x11'),_0x5ca5ed,JSON['stringify'](_0x474504));_0x4d549f(_0x474504);})[_0xa7d5('0x1b')](function(_0x17312b){logger[_0xa7d5('0xf')]('GetVoiceCallReport',_0x17312b[_0xa7d5('0x10')],_0x5ca5ed);_0x8a852c(_0x4c918c['error'](0x1f4,_0x17312b[_0xa7d5('0x10')]));});});};exports[_0xa7d5('0x1c')]=function(_0x314252){var _0xeaf74=this;return new Promise(function(_0x45adba,_0x56dbbd){return db[_0xa7d5('0x12')][_0xa7d5('0x1d')](_0x314252[_0xa7d5('0x1e')],{'raw':_0x314252[_0xa7d5('0x14')]?_0x314252['options'][_0xa7d5('0x15')]===undefined?!![]:![]:!![]})[_0xa7d5('0x1f')](function(_0x4487d3){logger[_0xa7d5('0xa')](_0xa7d5('0x1c'),_0x314252);logger['debug'](_0xa7d5('0x1c'),_0x314252,JSON['stringify'](_0x4487d3));_0x45adba(_0x4487d3);})['catch'](function(_0xc24b71){logger['error'](_0xa7d5('0x1c'),_0xc24b71[_0xa7d5('0x10')],_0x314252);_0x56dbbd(_0xeaf74[_0xa7d5('0xf')](0x1f4,_0xc24b71[_0xa7d5('0x10')]));});});};exports[_0xa7d5('0x20')]=function(_0x530cb5){var _0xfb38ab=this;return new Promise(function(_0x2829d8,_0x20f20c){return db['VoiceCallReport'][_0xa7d5('0x21')](_0x530cb5['body'],{'raw':_0x530cb5[_0xa7d5('0x14')]?_0x530cb5[_0xa7d5('0x14')][_0xa7d5('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x530cb5[_0xa7d5('0x14')]?_0x530cb5['options']['where']||null:null,'attributes':_0x530cb5['options']?_0x530cb5['options'][_0xa7d5('0x17')]||null:null,'limit':_0x530cb5[_0xa7d5('0x14')]?_0x530cb5[_0xa7d5('0x14')]['limit']||null:null})[_0xa7d5('0x1f')](function(_0x584360){logger[_0xa7d5('0xa')](_0xa7d5('0x20'),_0x530cb5);logger['debug'](_0xa7d5('0x20'),_0x530cb5,JSON[_0xa7d5('0x22')](_0x584360));_0x2829d8(_0x584360);})[_0xa7d5('0x1b')](function(_0x1f24dd){logger[_0xa7d5('0xf')]('UpdateVoiceCallReport',_0x1f24dd[_0xa7d5('0x10')],_0x530cb5);_0x20f20c(_0xfb38ab[_0xa7d5('0xf')](0x1f4,_0x1f24dd[_0xa7d5('0x10')]));});});};
\ No newline at end of file
+var _0xfe96=['debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','limit','include','map','model','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent'];(function(_0x11f0e3,_0x5170bc){var _0x2892e8=function(_0x3292b2){while(--_0x3292b2){_0x11f0e3['push'](_0x11f0e3['shift']());}};_0x2892e8(++_0x5170bc);}(_0xfe96,0x107));var _0x6fe9=function(_0x56adb5,_0x1c8c0f){_0x56adb5=_0x56adb5-0x0;var _0x39abb1=_0xfe96[_0x56adb5];return _0x39abb1;};'use strict';var _=require(_0x6fe9('0x0'));var util=require(_0x6fe9('0x1'));var moment=require(_0x6fe9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6fe9('0x3'));var db=require(_0x6fe9('0x4'))['db'];var utils=require(_0x6fe9('0x5'));var logger=require(_0x6fe9('0x6'))(_0x6fe9('0x7'));var config=require(_0x6fe9('0x8'));var jayson=require(_0x6fe9('0x9'));var client=jayson[_0x6fe9('0xa')][_0x6fe9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ada71,_0x339ec6,_0x33ef48){return new BPromise(function(_0x4027b1,_0x5f8f8d){return client[_0x6fe9('0xc')](_0x3ada71,_0x33ef48)[_0x6fe9('0xd')](function(_0x3765be){logger[_0x6fe9('0xe')](_0x6fe9('0xf'),_0x339ec6,_0x6fe9('0x10'));logger[_0x6fe9('0x11')](_0x6fe9('0x12'),_0x339ec6,_0x6fe9('0x10'),JSON[_0x6fe9('0x13')](_0x3765be));if(_0x3765be[_0x6fe9('0x14')]){if(_0x3765be[_0x6fe9('0x14')][_0x6fe9('0x15')]===0x1f4){logger[_0x6fe9('0x14')]('VoiceCallReport,\x20%s,\x20%s',_0x339ec6,_0x3765be[_0x6fe9('0x14')][_0x6fe9('0x16')]);return _0x5f8f8d(_0x3765be[_0x6fe9('0x14')][_0x6fe9('0x16')]);}logger[_0x6fe9('0x14')](_0x6fe9('0xf'),_0x339ec6,_0x3765be[_0x6fe9('0x14')][_0x6fe9('0x16')]);return _0x4027b1(_0x3765be[_0x6fe9('0x14')][_0x6fe9('0x16')]);}else{logger['info'](_0x6fe9('0xf'),_0x339ec6,_0x6fe9('0x10'));_0x4027b1(_0x3765be['result'][_0x6fe9('0x16')]);}})[_0x6fe9('0x17')](function(_0x4946c4){logger[_0x6fe9('0x14')](_0x6fe9('0xf'),_0x339ec6,_0x4946c4);_0x5f8f8d(_0x4946c4);});});}exports[_0x6fe9('0x18')]=function(_0x297667){var _0x535c4a=this;return new Promise(function(_0x2f3d78,_0x37ccab){return db[_0x6fe9('0x19')][_0x6fe9('0x1a')]({'raw':_0x297667[_0x6fe9('0x1b')]?_0x297667['options'][_0x6fe9('0x1c')]===undefined?!![]:![]:!![],'where':_0x297667[_0x6fe9('0x1b')]?_0x297667[_0x6fe9('0x1b')][_0x6fe9('0x1d')]||null:null,'attributes':_0x297667['options']?_0x297667[_0x6fe9('0x1b')][_0x6fe9('0x1e')]||null:null,'limit':_0x297667['options']?_0x297667[_0x6fe9('0x1b')][_0x6fe9('0x1f')]||null:null,'include':_0x297667[_0x6fe9('0x1b')]?_0x297667[_0x6fe9('0x1b')][_0x6fe9('0x20')]?_[_0x6fe9('0x21')](_0x297667[_0x6fe9('0x1b')][_0x6fe9('0x20')],function(_0x39e883){return{'model':db[_0x39e883[_0x6fe9('0x22')]],'as':_0x39e883['as'],'attributes':_0x39e883[_0x6fe9('0x1e')],'include':_0x39e883[_0x6fe9('0x20')]?_[_0x6fe9('0x21')](_0x39e883[_0x6fe9('0x20')],function(_0x4ee501){return{'model':db[_0x4ee501['model']],'as':_0x4ee501['as'],'attributes':_0x4ee501[_0x6fe9('0x1e')],'include':_0x4ee501['include']?_[_0x6fe9('0x21')](_0x4ee501[_0x6fe9('0x20')],function(_0x46824b){return{'model':db[_0x46824b[_0x6fe9('0x22')]],'as':_0x46824b['as'],'attributes':_0x46824b[_0x6fe9('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6fe9('0xd')](function(_0x5802b3){logger[_0x6fe9('0xe')](_0x6fe9('0x18'),_0x297667);logger[_0x6fe9('0x11')](_0x6fe9('0x18'),_0x297667,JSON['stringify'](_0x5802b3));_0x2f3d78(_0x5802b3);})[_0x6fe9('0x17')](function(_0x142972){logger[_0x6fe9('0x14')]('GetVoiceCallReport',_0x142972[_0x6fe9('0x16')],_0x297667);_0x37ccab(_0x535c4a[_0x6fe9('0x14')](0x1f4,_0x142972[_0x6fe9('0x16')]));});});};exports[_0x6fe9('0x23')]=function(_0x166335){var _0x1c5a3e=this;return new Promise(function(_0x5f34d9,_0x1403e2){return db[_0x6fe9('0x19')][_0x6fe9('0x24')](_0x166335[_0x6fe9('0x25')],{'raw':_0x166335[_0x6fe9('0x1b')]?_0x166335[_0x6fe9('0x1b')][_0x6fe9('0x1c')]===undefined?!![]:![]:!![]})[_0x6fe9('0xd')](function(_0x213da3){logger[_0x6fe9('0xe')]('CreateVoiceCallReport',_0x166335);logger[_0x6fe9('0x11')]('CreateVoiceCallReport',_0x166335,JSON[_0x6fe9('0x13')](_0x213da3));_0x5f34d9(_0x213da3);})['catch'](function(_0x555f6a){logger[_0x6fe9('0x14')](_0x6fe9('0x23'),_0x555f6a[_0x6fe9('0x16')],_0x166335);_0x1403e2(_0x1c5a3e['error'](0x1f4,_0x555f6a[_0x6fe9('0x16')]));});});};exports[_0x6fe9('0x26')]=function(_0x3fa239){var _0x4534c1=this;return new Promise(function(_0x31d529,_0x2ea2b0){return db[_0x6fe9('0x19')][_0x6fe9('0x27')](_0x3fa239[_0x6fe9('0x25')],{'raw':_0x3fa239[_0x6fe9('0x1b')]?_0x3fa239[_0x6fe9('0x1b')][_0x6fe9('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fa239[_0x6fe9('0x1b')]?_0x3fa239['options'][_0x6fe9('0x1d')]||null:null,'attributes':_0x3fa239[_0x6fe9('0x1b')]?_0x3fa239['options']['attributes']||null:null,'limit':_0x3fa239[_0x6fe9('0x1b')]?_0x3fa239[_0x6fe9('0x1b')][_0x6fe9('0x1f')]||null:null})[_0x6fe9('0xd')](function(_0x42fa1b){logger[_0x6fe9('0xe')](_0x6fe9('0x26'),_0x3fa239);logger[_0x6fe9('0x11')](_0x6fe9('0x26'),_0x3fa239,JSON[_0x6fe9('0x13')](_0x42fa1b));_0x31d529(_0x42fa1b);})[_0x6fe9('0x17')](function(_0x57185){logger[_0x6fe9('0x14')]('UpdateVoiceCallReport',_0x57185[_0x6fe9('0x16')],_0x3fa239);_0x2ea2b0(_0x4534c1['error'](0x1f4,_0x57185['message']));});});};
\ No newline at end of file
index d2643eb..12ca46e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c37=['update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','isAuthenticated','get','/:id','show','post','create','put'];(function(_0x523212,_0x437cc3){var _0x38c3b2=function(_0x863e08){while(--_0x863e08){_0x523212['push'](_0x523212['shift']());}};_0x38c3b2(++_0x437cc3);}(_0x5c37,0x1cc));var _0x75c3=function(_0x1d128e,_0x2c87de){_0x1d128e=_0x1d128e-0x0;var _0x3d5236=_0x5c37[_0x1d128e];return _0x3d5236;};'use strict';var multer=require(_0x75c3('0x0'));var util=require(_0x75c3('0x1'));var path=require('path');var timeout=require(_0x75c3('0x2'));var express=require(_0x75c3('0x3'));var router=express[_0x75c3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x75c3('0x5'));var interaction=require(_0x75c3('0x6'));var config=require('../../config/environment');var controller=require(_0x75c3('0x7'));router['get']('/',auth[_0x75c3('0x8')](),controller['index']);router[_0x75c3('0x9')](_0x75c3('0xa'),auth[_0x75c3('0x8')](),controller[_0x75c3('0xb')]);router[_0x75c3('0xc')]('/',auth[_0x75c3('0x8')](),controller[_0x75c3('0xd')]);router[_0x75c3('0xe')](_0x75c3('0xa'),auth[_0x75c3('0x8')](),controller[_0x75c3('0xf')]);router[_0x75c3('0x10')](_0x75c3('0xa'),auth[_0x75c3('0x8')](),controller[_0x75c3('0x11')]);module[_0x75c3('0x12')]=router;
\ No newline at end of file
+var _0x6f89=['get','isAuthenticated','index','/:id','show','create','put','delete','destroy','exports','multer','util','connect-timeout','express','../../components/interaction/service','./voiceChanSpy.controller'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x6f89,0x8a));var _0x96f8=function(_0x1619f5,_0x26c997){_0x1619f5=_0x1619f5-0x0;var _0x475572=_0x6f89[_0x1619f5];return _0x475572;};'use strict';var multer=require(_0x96f8('0x0'));var util=require(_0x96f8('0x1'));var path=require('path');var timeout=require(_0x96f8('0x2'));var express=require(_0x96f8('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x96f8('0x4'));var config=require('../../config/environment');var controller=require(_0x96f8('0x5'));router[_0x96f8('0x6')]('/',auth[_0x96f8('0x7')](),controller[_0x96f8('0x8')]);router['get'](_0x96f8('0x9'),auth['isAuthenticated'](),controller[_0x96f8('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x96f8('0xb')]);router[_0x96f8('0xc')](_0x96f8('0x9'),auth[_0x96f8('0x7')](),controller['update']);router[_0x96f8('0xd')](_0x96f8('0x9'),auth[_0x96f8('0x7')](),controller[_0x96f8('0xe')]);module[_0x96f8('0xf')]=router;
\ No newline at end of file
index 9c33ea5..f8db3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e87=['options','join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue'];(function(_0x38a167,_0x17534b){var _0x423fe6=function(_0x15d674){while(--_0x15d674){_0x38a167['push'](_0x38a167['shift']());}};_0x423fe6(++_0x17534b);}(_0x6e87,0x1bd));var _0x76e8=function(_0x35461f,_0x299002){_0x35461f=_0x35461f-0x0;var _0x59a5ed=_0x6e87[_0x35461f];return _0x59a5ed;};'use strict';var Sequelize=require(_0x76e8('0x0'));module[_0x76e8('0x1')]={'name':{'type':Sequelize[_0x76e8('0x2')]},'prefix':{'type':Sequelize[_0x76e8('0x2')],'unique':_0x76e8('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x344e81){this[_0x76e8('0x4')](_0x76e8('0x5'),_0x344e81?_0x344e81[_0x76e8('0x6')](''):[]);},'get':function(){return this[_0x76e8('0x7')](_0x76e8('0x5'))?this[_0x76e8('0x7')]('options')[_0x76e8('0x8')](''):[];}},'auth':{'type':Sequelize[_0x76e8('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x76e8('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x76e8('0x2')]}};
\ No newline at end of file
+var _0x2f0f=['setDataValue','options','join','getDataValue','split','BOOLEAN','exports','STRING'];(function(_0x1d24a4,_0x10f5b6){var _0x4e233b=function(_0x3d1f2d){while(--_0x3d1f2d){_0x1d24a4['push'](_0x1d24a4['shift']());}};_0x4e233b(++_0x10f5b6);}(_0x2f0f,0x1de));var _0xf2f0=function(_0x2d9da8,_0x5d5072){_0x2d9da8=_0x2d9da8-0x0;var _0x57a29c=_0x2f0f[_0x2d9da8];return _0x57a29c;};'use strict';var Sequelize=require('sequelize');module[_0xf2f0('0x0')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0xf2f0('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0xf2f0('0x1')],'set':function(_0x548251){this[_0xf2f0('0x2')](_0xf2f0('0x3'),_0x548251?_0x548251[_0xf2f0('0x4')](''):[]);},'get':function(){return this[_0xf2f0('0x5')]('options')?this['getDataValue'](_0xf2f0('0x3'))[_0xf2f0('0x6')](''):[];}},'auth':{'type':Sequelize[_0xf2f0('0x7')],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf2f0('0x1')]}};
\ No newline at end of file
index 68ba3bf..3769588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca2b=['body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','ChanSpies','UserProfileResource','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','order','sort','where','filters','pick','VIRTUAL','options','VoiceChanSpy','includeAll','include','findAll','rows','find','catch','create'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0xca2b,0x156));var _0xbca2=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xca2b[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0xbca2('0x0'));var rimraf=require(_0xbca2('0x1'));var zipdir=require(_0xbca2('0x2'));var jsonpatch=require(_0xbca2('0x3'));var rp=require(_0xbca2('0x4'));var moment=require(_0xbca2('0x5'));var BPromise=require(_0xbca2('0x6'));var Mustache=require(_0xbca2('0x7'));var util=require('util');var path=require(_0xbca2('0x8'));var sox=require(_0xbca2('0x9'));var csv=require('to-csv');var ejs=require(_0xbca2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbca2('0xb'));var squel=require(_0xbca2('0xc'));var crypto=require(_0xbca2('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbca2('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbca2('0xf'));var authService=require(_0xbca2('0x10'));var qs=require(_0xbca2('0x11'));var as=require(_0xbca2('0x12'));var hardwareService=require(_0xbca2('0x13'));var logger=require(_0xbca2('0x14'))(_0xbca2('0x15'));var utils=require(_0xbca2('0x16'));var config=require(_0xbca2('0x17'));var licenseUtil=require(_0xbca2('0x18'));var db=require(_0xbca2('0x19'))['db'];function respondWithStatusCode(_0x9f02bf,_0x26bca0){_0x26bca0=_0x26bca0||0xcc;return function(_0x562689){if(_0x562689){return _0x9f02bf[_0xbca2('0x1a')](_0x26bca0);}return _0x9f02bf[_0xbca2('0x1b')](_0x26bca0)[_0xbca2('0x1c')]();};}function respondWithResult(_0xbf283,_0x1e84d5){_0x1e84d5=_0x1e84d5||0xc8;return function(_0x170913){if(_0x170913){return _0xbf283[_0xbca2('0x1b')](_0x1e84d5)[_0xbca2('0x1d')](_0x170913);}};}function respondWithFilteredResult(_0x124085,_0x5f2a39){return function(_0x4dadaf){if(_0x4dadaf){var _0x11e7c6=typeof _0x5f2a39[_0xbca2('0x1e')]==='undefined'&&typeof _0x5f2a39[_0xbca2('0x1f')]===_0xbca2('0x20');var _0x158361=_0x4dadaf['count'];var _0x390095=_0x11e7c6?0x0:_0x5f2a39[_0xbca2('0x1e')];var _0x298b00=_0x11e7c6?_0x4dadaf[_0xbca2('0x21')]:_0x5f2a39[_0xbca2('0x1e')]+_0x5f2a39['limit'];var _0x595030;if(_0x298b00>=_0x158361){_0x298b00=_0x158361;_0x595030=0xc8;}else{_0x595030=0xce;}_0x124085[_0xbca2('0x1b')](_0x595030);return _0x124085[_0xbca2('0x22')]('Content-Range',_0x390095+'-'+_0x298b00+'/'+_0x158361)[_0xbca2('0x1d')](_0x4dadaf);}return null;};}function patchUpdates(_0x109b44){return function(_0x434699){try{jsonpatch[_0xbca2('0x23')](_0x434699,_0x109b44,!![]);}catch(_0x3977eb){return BPromise[_0xbca2('0x24')](_0x3977eb);}return _0x434699['save']();};}function saveUpdates(_0x1dceb2,_0x20b65d){return function(_0x37c911){if(_0x37c911){return _0x37c911[_0xbca2('0x25')](_0x1dceb2)[_0xbca2('0x26')](function(_0x1155f9){return _0x1155f9;});}return null;};}function removeEntity(_0x1e0756,_0x204c89){return function(_0x8cdb5d){if(_0x8cdb5d){return _0x8cdb5d[_0xbca2('0x27')]()[_0xbca2('0x26')](function(){var _0x25d134=_0x8cdb5d['get']({'plain':!![]});var _0x331260=_0xbca2('0x28');return db[_0xbca2('0x29')][_0xbca2('0x27')]({'where':{'type':_0x331260,'resourceId':_0x25d134['id']}})[_0xbca2('0x26')](function(){return _0x8cdb5d;});})[_0xbca2('0x26')](function(){_0x1e0756[_0xbca2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2810b0,_0x20b7a0){return function(_0x1bf878){if(!_0x1bf878){_0x2810b0[_0xbca2('0x1a')](0x194);}return _0x1bf878;};}function handleError(_0x1e7e75,_0x1e2372){_0x1e2372=_0x1e2372||0x1f4;return function(_0xc7d89f){logger[_0xbca2('0x2a')](_0xc7d89f[_0xbca2('0x2b')]);if(_0xc7d89f[_0xbca2('0x2c')]){delete _0xc7d89f['name'];}_0x1e7e75[_0xbca2('0x1b')](_0x1e2372)['send'](_0xc7d89f);};}exports[_0xbca2('0x2d')]=function(_0x5b6cf6,_0x5dc11a){var _0x2fa44e={},_0x5de820={},_0x19fe86={'count':0x0,'rows':[]};var _0x12d026=_['map'](db['VoiceChanSpy'][_0xbca2('0x2e')],function(_0x660d78){return{'name':_0x660d78[_0xbca2('0x2f')],'type':_0x660d78[_0xbca2('0x30')][_0xbca2('0x31')]};});_0x5de820[_0xbca2('0x32')]=_[_0xbca2('0x33')](_0x12d026,_0xbca2('0x2c'));_0x5de820[_0xbca2('0x34')]=_[_0xbca2('0x35')](_0x5b6cf6[_0xbca2('0x34')]);_0x5de820['filters']=_[_0xbca2('0x36')](_0x5de820[_0xbca2('0x32')],_0x5de820[_0xbca2('0x34')]);_0x2fa44e['attributes']=_[_0xbca2('0x36')](_0x5de820[_0xbca2('0x32')],qs[_0xbca2('0x37')](_0x5b6cf6[_0xbca2('0x34')][_0xbca2('0x37')]));_0x2fa44e[_0xbca2('0x38')]=_0x2fa44e[_0xbca2('0x38')][_0xbca2('0x39')]?_0x2fa44e[_0xbca2('0x38')]:_0x5de820[_0xbca2('0x32')];if(!_0x5b6cf6[_0xbca2('0x34')]['hasOwnProperty']('nolimit')){_0x2fa44e[_0xbca2('0x1f')]=qs[_0xbca2('0x1f')](_0x5b6cf6[_0xbca2('0x34')][_0xbca2('0x1f')]);_0x2fa44e[_0xbca2('0x1e')]=qs['offset'](_0x5b6cf6[_0xbca2('0x34')][_0xbca2('0x1e')]);}_0x2fa44e[_0xbca2('0x3a')]=qs[_0xbca2('0x3b')](_0x5b6cf6[_0xbca2('0x34')][_0xbca2('0x3b')]);_0x2fa44e[_0xbca2('0x3c')]=qs[_0xbca2('0x3d')](_[_0xbca2('0x3e')](_0x5b6cf6[_0xbca2('0x34')],_0x5de820[_0xbca2('0x3d')]),_0x12d026);if(_0x5b6cf6[_0xbca2('0x34')]['filter']){_0x2fa44e[_0xbca2('0x3c')]=_['merge'](_0x2fa44e[_0xbca2('0x3c')],{'$or':_[_0xbca2('0x33')](_0x12d026,function(_0x113504){if(_0x113504[_0xbca2('0x30')]!==_0xbca2('0x3f')){var _0x48f0b1={};_0x48f0b1[_0x113504['name']]={'$like':'%'+_0x5b6cf6['query']['filter']+'%'};return _0x48f0b1;}})});}_0x2fa44e=_['merge']({},_0x2fa44e,_0x5b6cf6[_0xbca2('0x40')]);var _0x5b3208={'where':_0x2fa44e[_0xbca2('0x3c')]};return db[_0xbca2('0x41')]['count'](_0x5b3208)['then'](function(_0xef5723){_0x19fe86[_0xbca2('0x21')]=_0xef5723;if(_0x5b6cf6[_0xbca2('0x34')][_0xbca2('0x42')]){_0x2fa44e[_0xbca2('0x43')]=[{'all':!![]}];}return db[_0xbca2('0x41')][_0xbca2('0x44')](_0x2fa44e);})['then'](function(_0xd2622c){_0x19fe86[_0xbca2('0x45')]=_0xd2622c;return _0x19fe86;})[_0xbca2('0x26')](respondWithFilteredResult(_0x5dc11a,_0x2fa44e))['catch'](handleError(_0x5dc11a,null));};exports['show']=function(_0x22021f,_0x15822f){var _0x8d5630={'raw':![],'where':{'id':_0x22021f['params']['id']}},_0x5c7f8c={};_0x5c7f8c[_0xbca2('0x32')]=_['keys'](db['VoiceChanSpy']['rawAttributes']);_0x5c7f8c['query']=_[_0xbca2('0x35')](_0x22021f[_0xbca2('0x34')]);_0x5c7f8c[_0xbca2('0x3d')]=_['intersection'](_0x5c7f8c[_0xbca2('0x32')],_0x5c7f8c[_0xbca2('0x34')]);_0x8d5630[_0xbca2('0x38')]=_[_0xbca2('0x36')](_0x5c7f8c[_0xbca2('0x32')],qs[_0xbca2('0x37')](_0x22021f[_0xbca2('0x34')]['fields']));_0x8d5630[_0xbca2('0x38')]=_0x8d5630[_0xbca2('0x38')][_0xbca2('0x39')]?_0x8d5630['attributes']:_0x5c7f8c[_0xbca2('0x32')];if(_0x22021f[_0xbca2('0x34')]['includeAll']){_0x8d5630[_0xbca2('0x43')]=[{'all':!![]}];}_0x8d5630=_['merge']({},_0x8d5630,_0x22021f[_0xbca2('0x40')]);return db[_0xbca2('0x41')][_0xbca2('0x46')](_0x8d5630)[_0xbca2('0x26')](handleEntityNotFound(_0x15822f,null))[_0xbca2('0x26')](respondWithResult(_0x15822f,null))[_0xbca2('0x47')](handleError(_0x15822f,null));};exports[_0xbca2('0x48')]=function(_0x15fe81,_0x25ae6e){return db[_0xbca2('0x41')][_0xbca2('0x48')](_0x15fe81[_0xbca2('0x49')],{})[_0xbca2('0x26')](function(_0x38a1f7){var _0x144723=_0x15fe81[_0xbca2('0x4a')][_0xbca2('0x4b')]({'plain':!![]});if(!_0x144723)throw new Error(_0xbca2('0x4c'));if(_0x144723[_0xbca2('0x4d')]==='user'){var _0x2dc116=_0x38a1f7[_0xbca2('0x4b')]({'plain':!![]});var _0x5464c9=_0xbca2('0x28');return db[_0xbca2('0x4e')][_0xbca2('0x46')]({'where':{'name':_0x5464c9,'userProfileId':_0x144723[_0xbca2('0x4f')]},'raw':!![]})[_0xbca2('0x26')](function(_0x40becb){if(_0x40becb&&_0x40becb[_0xbca2('0x50')]===0x0){return db[_0xbca2('0x29')][_0xbca2('0x48')]({'name':_0x2dc116[_0xbca2('0x2c')],'resourceId':_0x2dc116['id'],'type':_0x40becb[_0xbca2('0x2c')],'sectionId':_0x40becb['id']},{})['then'](function(){return _0x38a1f7;});}else{return _0x38a1f7;}})[_0xbca2('0x47')](function(_0x472f39){logger[_0xbca2('0x2a')](_0xbca2('0x51'),_0x472f39);throw _0x472f39;});}return _0x38a1f7;})[_0xbca2('0x26')](respondWithResult(_0x25ae6e,0xc9))[_0xbca2('0x47')](handleError(_0x25ae6e,null));};exports[_0xbca2('0x25')]=function(_0x55df1e,_0x47ea84){if(_0x55df1e[_0xbca2('0x49')]['id']){delete _0x55df1e[_0xbca2('0x49')]['id'];}return db[_0xbca2('0x41')]['find']({'where':{'id':_0x55df1e[_0xbca2('0x52')]['id']}})[_0xbca2('0x26')](handleEntityNotFound(_0x47ea84,null))[_0xbca2('0x26')](saveUpdates(_0x55df1e[_0xbca2('0x49')],null))[_0xbca2('0x26')](respondWithResult(_0x47ea84,null))[_0xbca2('0x47')](handleError(_0x47ea84,null));};exports[_0xbca2('0x27')]=function(_0x564017,_0x4da95d){return db[_0xbca2('0x41')][_0xbca2('0x46')]({'where':{'id':_0x564017[_0xbca2('0x52')]['id']}})[_0xbca2('0x26')](handleEntityNotFound(_0x4da95d,null))[_0xbca2('0x26')](removeEntity(_0x4da95d,null))[_0xbca2('0x47')](handleError(_0x4da95d,null));};
\ No newline at end of file
+var _0x3e5c=['crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','VoiceChanSpy','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','rows','catch','show','params','includeAll','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel'];(function(_0x2aeb40,_0x4c4dd5){var _0x10a3be=function(_0x3663af){while(--_0x3663af){_0x2aeb40['push'](_0x2aeb40['shift']());}};_0x10a3be(++_0x4c4dd5);}(_0x3e5c,0x9a));var _0xc3e5=function(_0x440c8c,_0x76789f){_0x440c8c=_0x440c8c-0x0;var _0x20cd4d=_0x3e5c[_0x440c8c];return _0x20cd4d;};'use strict';var emlformat=require(_0xc3e5('0x0'));var rimraf=require(_0xc3e5('0x1'));var zipdir=require(_0xc3e5('0x2'));var jsonpatch=require(_0xc3e5('0x3'));var rp=require('request-promise');var moment=require(_0xc3e5('0x4'));var BPromise=require(_0xc3e5('0x5'));var Mustache=require(_0xc3e5('0x6'));var util=require(_0xc3e5('0x7'));var path=require(_0xc3e5('0x8'));var sox=require(_0xc3e5('0x9'));var csv=require('to-csv');var ejs=require(_0xc3e5('0xa'));var fs=require('fs');var fs_extra=require(_0xc3e5('0xb'));var _=require(_0xc3e5('0xc'));var squel=require(_0xc3e5('0xd'));var crypto=require(_0xc3e5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc3e5('0xf'));var toCsv=require(_0xc3e5('0x10'));var querystring=require(_0xc3e5('0x11'));var Papa=require(_0xc3e5('0x12'));var Redis=require(_0xc3e5('0x13'));var authService=require(_0xc3e5('0x14'));var qs=require(_0xc3e5('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3e5('0x16'));var logger=require(_0xc3e5('0x17'))(_0xc3e5('0x18'));var utils=require(_0xc3e5('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc3e5('0x1a'));var db=require(_0xc3e5('0x1b'))['db'];function respondWithStatusCode(_0x36193e,_0x3f0395){_0x3f0395=_0x3f0395||0xcc;return function(_0x3b7441){if(_0x3b7441){return _0x36193e[_0xc3e5('0x1c')](_0x3f0395);}return _0x36193e['status'](_0x3f0395)['end']();};}function respondWithResult(_0x52cca7,_0x27c226){_0x27c226=_0x27c226||0xc8;return function(_0x5a52f1){if(_0x5a52f1){return _0x52cca7[_0xc3e5('0x1d')](_0x27c226)[_0xc3e5('0x1e')](_0x5a52f1);}};}function respondWithFilteredResult(_0x4d1ad9,_0x353dc0){return function(_0x3e3eaa){if(_0x3e3eaa){var _0x2cc476=typeof _0x353dc0[_0xc3e5('0x1f')]===_0xc3e5('0x20')&&typeof _0x353dc0['limit']===_0xc3e5('0x20');var _0x277063=_0x3e3eaa[_0xc3e5('0x21')];var _0xa33d84=_0x2cc476?0x0:_0x353dc0[_0xc3e5('0x1f')];var _0x1e1eea=_0x2cc476?_0x3e3eaa['count']:_0x353dc0[_0xc3e5('0x1f')]+_0x353dc0[_0xc3e5('0x22')];var _0x4a1d86;if(_0x1e1eea>=_0x277063){_0x1e1eea=_0x277063;_0x4a1d86=0xc8;}else{_0x4a1d86=0xce;}_0x4d1ad9[_0xc3e5('0x1d')](_0x4a1d86);return _0x4d1ad9['set'](_0xc3e5('0x23'),_0xa33d84+'-'+_0x1e1eea+'/'+_0x277063)[_0xc3e5('0x1e')](_0x3e3eaa);}return null;};}function patchUpdates(_0x2d551b){return function(_0xebf6dc){try{jsonpatch[_0xc3e5('0x24')](_0xebf6dc,_0x2d551b,!![]);}catch(_0x4a7806){return BPromise[_0xc3e5('0x25')](_0x4a7806);}return _0xebf6dc[_0xc3e5('0x26')]();};}function saveUpdates(_0x2d8c6f,_0x3eb513){return function(_0x414ba9){if(_0x414ba9){return _0x414ba9[_0xc3e5('0x27')](_0x2d8c6f)[_0xc3e5('0x28')](function(_0x47f344){return _0x47f344;});}return null;};}function removeEntity(_0x3a2800,_0x430cb4){return function(_0x43d01e){if(_0x43d01e){return _0x43d01e[_0xc3e5('0x29')]()[_0xc3e5('0x28')](function(){var _0x28b858=_0x43d01e[_0xc3e5('0x2a')]({'plain':!![]});var _0x45556e='ChanSpies';return db[_0xc3e5('0x2b')]['destroy']({'where':{'type':_0x45556e,'resourceId':_0x28b858['id']}})['then'](function(){return _0x43d01e;});})[_0xc3e5('0x28')](function(){_0x3a2800[_0xc3e5('0x1d')](0xcc)[_0xc3e5('0x2c')]();});}};}function handleEntityNotFound(_0x59dcff,_0x31f49b){return function(_0x38a961){if(!_0x38a961){_0x59dcff[_0xc3e5('0x1c')](0x194);}return _0x38a961;};}function handleError(_0x3ad580,_0x591262){_0x591262=_0x591262||0x1f4;return function(_0xa6766d){logger['error'](_0xa6766d[_0xc3e5('0x2d')]);if(_0xa6766d[_0xc3e5('0x2e')]){delete _0xa6766d[_0xc3e5('0x2e')];}_0x3ad580['status'](_0x591262)['send'](_0xa6766d);};}exports['index']=function(_0x1dcc51,_0x45cd9c){var _0x144172={},_0x2f023e={},_0xeea535={'count':0x0,'rows':[]};var _0x65bb96=_['map'](db[_0xc3e5('0x2f')][_0xc3e5('0x30')],function(_0x440617){return{'name':_0x440617[_0xc3e5('0x31')],'type':_0x440617[_0xc3e5('0x32')][_0xc3e5('0x33')]};});_0x2f023e[_0xc3e5('0x34')]=_[_0xc3e5('0x35')](_0x65bb96,_0xc3e5('0x2e'));_0x2f023e[_0xc3e5('0x36')]=_[_0xc3e5('0x37')](_0x1dcc51['query']);_0x2f023e[_0xc3e5('0x38')]=_['intersection'](_0x2f023e[_0xc3e5('0x34')],_0x2f023e[_0xc3e5('0x36')]);_0x144172[_0xc3e5('0x39')]=_[_0xc3e5('0x3a')](_0x2f023e['model'],qs[_0xc3e5('0x3b')](_0x1dcc51['query']['fields']));_0x144172[_0xc3e5('0x39')]=_0x144172['attributes'][_0xc3e5('0x3c')]?_0x144172[_0xc3e5('0x39')]:_0x2f023e[_0xc3e5('0x34')];if(!_0x1dcc51[_0xc3e5('0x36')][_0xc3e5('0x3d')]('nolimit')){_0x144172[_0xc3e5('0x22')]=qs[_0xc3e5('0x22')](_0x1dcc51[_0xc3e5('0x36')][_0xc3e5('0x22')]);_0x144172[_0xc3e5('0x1f')]=qs['offset'](_0x1dcc51[_0xc3e5('0x36')]['offset']);}_0x144172[_0xc3e5('0x3e')]=qs[_0xc3e5('0x3f')](_0x1dcc51['query'][_0xc3e5('0x3f')]);_0x144172['where']=qs[_0xc3e5('0x38')](_[_0xc3e5('0x40')](_0x1dcc51[_0xc3e5('0x36')],_0x2f023e['filters']),_0x65bb96);if(_0x1dcc51[_0xc3e5('0x36')][_0xc3e5('0x41')]){_0x144172[_0xc3e5('0x42')]=_[_0xc3e5('0x43')](_0x144172[_0xc3e5('0x42')],{'$or':_['map'](_0x65bb96,function(_0x4bf98e){if(_0x4bf98e['type']!==_0xc3e5('0x44')){var _0x383ced={};_0x383ced[_0x4bf98e['name']]={'$like':'%'+_0x1dcc51[_0xc3e5('0x36')]['filter']+'%'};return _0x383ced;}})});}_0x144172=_[_0xc3e5('0x43')]({},_0x144172,_0x1dcc51['options']);var _0x239c7f={'where':_0x144172['where']};return db[_0xc3e5('0x2f')][_0xc3e5('0x21')](_0x239c7f)[_0xc3e5('0x28')](function(_0x1c5177){_0xeea535[_0xc3e5('0x21')]=_0x1c5177;if(_0x1dcc51[_0xc3e5('0x36')]['includeAll']){_0x144172['include']=[{'all':!![]}];}return db[_0xc3e5('0x2f')]['findAll'](_0x144172);})[_0xc3e5('0x28')](function(_0x27354c){_0xeea535[_0xc3e5('0x45')]=_0x27354c;return _0xeea535;})[_0xc3e5('0x28')](respondWithFilteredResult(_0x45cd9c,_0x144172))[_0xc3e5('0x46')](handleError(_0x45cd9c,null));};exports[_0xc3e5('0x47')]=function(_0x49b123,_0x1bed92){var _0x2433d6={'raw':![],'where':{'id':_0x49b123[_0xc3e5('0x48')]['id']}},_0xbbfcad={};_0xbbfcad[_0xc3e5('0x34')]=_[_0xc3e5('0x37')](db[_0xc3e5('0x2f')][_0xc3e5('0x30')]);_0xbbfcad[_0xc3e5('0x36')]=_[_0xc3e5('0x37')](_0x49b123['query']);_0xbbfcad['filters']=_['intersection'](_0xbbfcad[_0xc3e5('0x34')],_0xbbfcad['query']);_0x2433d6[_0xc3e5('0x39')]=_[_0xc3e5('0x3a')](_0xbbfcad[_0xc3e5('0x34')],qs[_0xc3e5('0x3b')](_0x49b123['query'][_0xc3e5('0x3b')]));_0x2433d6[_0xc3e5('0x39')]=_0x2433d6[_0xc3e5('0x39')][_0xc3e5('0x3c')]?_0x2433d6['attributes']:_0xbbfcad['model'];if(_0x49b123[_0xc3e5('0x36')][_0xc3e5('0x49')]){_0x2433d6['include']=[{'all':!![]}];}_0x2433d6=_[_0xc3e5('0x43')]({},_0x2433d6,_0x49b123['options']);return db[_0xc3e5('0x2f')]['find'](_0x2433d6)[_0xc3e5('0x28')](handleEntityNotFound(_0x1bed92,null))['then'](respondWithResult(_0x1bed92,null))['catch'](handleError(_0x1bed92,null));};exports['create']=function(_0x87855d,_0x11da7e){return db[_0xc3e5('0x2f')]['create'](_0x87855d['body'],{})[_0xc3e5('0x28')](function(_0x512ed8){var _0x1e585b=_0x87855d[_0xc3e5('0x4a')][_0xc3e5('0x2a')]({'plain':!![]});if(!_0x1e585b)throw new Error(_0xc3e5('0x4b'));if(_0x1e585b[_0xc3e5('0x4c')]===_0xc3e5('0x4a')){var _0x5cd31c=_0x512ed8[_0xc3e5('0x2a')]({'plain':!![]});var _0x4c1e8c='ChanSpies';return db[_0xc3e5('0x4d')]['find']({'where':{'name':_0x4c1e8c,'userProfileId':_0x1e585b[_0xc3e5('0x4e')]},'raw':!![]})['then'](function(_0x4eb2e1){if(_0x4eb2e1&&_0x4eb2e1[_0xc3e5('0x4f')]===0x0){return db[_0xc3e5('0x2b')]['create']({'name':_0x5cd31c['name'],'resourceId':_0x5cd31c['id'],'type':_0x4eb2e1[_0xc3e5('0x2e')],'sectionId':_0x4eb2e1['id']},{})[_0xc3e5('0x28')](function(){return _0x512ed8;});}else{return _0x512ed8;}})['catch'](function(_0x45687f){logger[_0xc3e5('0x50')](_0xc3e5('0x51'),_0x45687f);throw _0x45687f;});}return _0x512ed8;})[_0xc3e5('0x28')](respondWithResult(_0x11da7e,0xc9))[_0xc3e5('0x46')](handleError(_0x11da7e,null));};exports[_0xc3e5('0x27')]=function(_0x10a04c,_0x4abeb5){if(_0x10a04c[_0xc3e5('0x52')]['id']){delete _0x10a04c[_0xc3e5('0x52')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0x10a04c[_0xc3e5('0x48')]['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x4abeb5,null))['then'](saveUpdates(_0x10a04c['body'],null))['then'](respondWithResult(_0x4abeb5,null))['catch'](handleError(_0x4abeb5,null));};exports[_0xc3e5('0x29')]=function(_0x232e57,_0x474891){return db[_0xc3e5('0x2f')][_0xc3e5('0x53')]({'where':{'id':_0x232e57['params']['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x474891,null))[_0xc3e5('0x28')](removeEntity(_0x474891,null))[_0xc3e5('0x46')](handleError(_0x474891,null));};
\ No newline at end of file
index 485b8e7..d5abe37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca27=['join','StopMixMonitor','internal','concat','User','findAll','agent','catch','exports','models','define','VoiceChanSpy','then','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system','push','merge','Set','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','password','ChanSpy','name','options'];(function(_0x7e188d,_0xe404a2){var _0x1df4b8=function(_0x1c34d4){while(--_0x1c34d4){_0x7e188d['push'](_0x7e188d['shift']());}};_0x1df4b8(++_0xe404a2);}(_0xca27,0x122));var _0x7ca2=function(_0x4ec2e1,_0x1ce68d){_0x4ec2e1=_0x4ec2e1-0x0;var _0x232e97=_0xca27[_0x4ec2e1];return _0x232e97;};'use strict';var _=require(_0x7ca2('0x0'));var util=require(_0x7ca2('0x1'));var BPromise=require(_0x7ca2('0x2'));var attributes=require(_0x7ca2('0x3'));var getUserApplications=function(_0x4c777d,_0x434612,_0x2dee41){var _0x35d4b0=0x1;var _0x254622=[];var _0x1a7d8e={'context':_0x434612[_0x7ca2('0x4')]||_0x7ca2('0x5'),'exten':util[_0x7ca2('0x6')](_0x7ca2('0x7'),_0x4c777d[_0x7ca2('0x8')],_0x2dee41),'type':_0x7ca2('0x9'),'isApp':![],'ChanSpyId':_0x4c777d['id'],'UserId':_0x434612['id']};_0x254622[_0x7ca2('0xa')](_[_0x7ca2('0xb')]({'app':_0x7ca2('0xc'),'appdata':util['format'](_0x7ca2('0xd'),_0x7ca2('0xe')),'priority':_0x35d4b0++},_0x1a7d8e));if(_0x4c777d[_0x7ca2('0xf')]){_0x254622['push'](_[_0x7ca2('0xb')]({'app':'MixMonitor','appdata':util['format'](_0x7ca2('0x10'),_0x4c777d[_0x7ca2('0x11')]),'priority':_0x35d4b0++},_0x1a7d8e));}if(_0x4c777d['auth']){_0x254622[_0x7ca2('0xa')](_[_0x7ca2('0xb')]({'app':'Authenticate','appdata':_0x4c777d[_0x7ca2('0x12')],'priority':_0x35d4b0++},_0x1a7d8e));}_0x254622['push'](_['merge']({'app':_0x7ca2('0x13'),'appdata':util[_0x7ca2('0x6')]('SIP/%s,%s',_0x434612[_0x7ca2('0x14')],_0x4c777d[_0x7ca2('0x15')]?_0x4c777d[_0x7ca2('0x15')][_0x7ca2('0x16')](''):''),'priority':_0x35d4b0++},_0x1a7d8e));if(_0x4c777d[_0x7ca2('0xf')]){_0x254622[_0x7ca2('0xa')](_['merge']({'app':_0x7ca2('0x17'),'priority':_0x35d4b0++},_0x1a7d8e));}return _0x254622;};var getChanSpyApplications=function(_0x2d9dbc,_0x4251d6){var _0x2711aa=[];for(var _0xb02400=0x0,_0x5adc2f=0x1;_0xb02400<_0x4251d6['length'];_0xb02400++,_0x5adc2f=0x1){_0x2711aa=_0x2711aa['concat'](getUserApplications(_0x2d9dbc,_0x4251d6[_0xb02400],_0x4251d6[_0xb02400][_0x7ca2('0x18')]));if(_0x4251d6[_0xb02400][_0x7ca2('0x18')]!=_0x4251d6[_0xb02400][_0x7ca2('0x14')]){_0x2711aa=_0x2711aa[_0x7ca2('0x19')](getUserApplications(_0x2d9dbc,_0x4251d6[_0xb02400],_0x4251d6[_0xb02400][_0x7ca2('0x14')]));}}return _0x2711aa;};var getChanSpyPromise=function(_0x150676,_0xd4ed1d){return new BPromise(function(_0x1cf15d,_0x5d778d){return _0x150676[_0x7ca2('0x1a')][_0x7ca2('0x1b')]({'attributes':['id',_0x7ca2('0x14'),_0x7ca2('0x18')],'where':{'role':_0x7ca2('0x1c'),'chanspy':!![]},'raw':!![]})['then'](function(_0x18348e){if(_0x18348e){return _0x1cf15d(getChanSpyApplications(_0xd4ed1d,_0x18348e));}return _0x1cf15d([]);})[_0x7ca2('0x1d')](function(_0x4bfc4e){_0x5d778d(_0x4bfc4e);});});};module[_0x7ca2('0x1e')]=function(_0x4008fd,_0x543617){var _0x1d938b=_0x4008fd[_0x7ca2('0x1f')];return _0x4008fd[_0x7ca2('0x20')](_0x7ca2('0x21'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x43687d,_0x54b476,_0x3bbff7){return getChanSpyPromise(_0x1d938b,_0x43687d)[_0x7ca2('0x22')](function(_0x2a78c3){if(_0x2a78c3&&_0x2a78c3[_0x7ca2('0x23')]){return _0x1d938b[_0x7ca2('0x24')][_0x7ca2('0x25')](_0x2a78c3);}})[_0x7ca2('0x22')](function(){_0x3bbff7();})[_0x7ca2('0x1d')](function(_0x100f4e){_0x3bbff7(_0x100f4e);});},'afterUpdate':function(_0x814f97,_0x33e535,_0x2c4cd3){return _0x1d938b[_0x7ca2('0x24')][_0x7ca2('0x26')]({'where':{'ChanSpyId':_0x814f97['id']}})[_0x7ca2('0x22')](function(){return getChanSpyPromise(_0x1d938b,_0x814f97);})[_0x7ca2('0x22')](function(_0x68a51a){if(_0x68a51a&&_0x68a51a[_0x7ca2('0x23')]){return _0x1d938b['VoiceExtension']['bulkCreate'](_0x68a51a);}})[_0x7ca2('0x22')](function(){_0x2c4cd3();})[_0x7ca2('0x1d')](function(_0x57b116){_0x2c4cd3(_0x57b116);});},'afterDestroy':function(_0x24047c,_0x5e217c,_0x1d267e){return _0x1d938b[_0x7ca2('0x24')][_0x7ca2('0x26')]({'where':{'ChanSpyId':_0x24047c['id']}})[_0x7ca2('0x22')](function(){_0x1d267e();})[_0x7ca2('0x1d')](function(_0x5098ec){_0x1d267e(_0x5098ec);});}}});};
\ No newline at end of file
+var _0xceff=['destroy','lodash','util','bluebird','./voiceChanSpy.attributes','from-sip','format','system','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','SIP/%s,%s','name','options','join','StopMixMonitor','length','concat','internal','then','catch','exports','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate'];(function(_0x39d8d7,_0xfb2694){var _0x358dc7=function(_0x591c6a){while(--_0x591c6a){_0x39d8d7['push'](_0x39d8d7['shift']());}};_0x358dc7(++_0xfb2694);}(_0xceff,0x1eb));var _0xfcef=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xceff[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0xfcef('0x0'));var util=require(_0xfcef('0x1'));var BPromise=require(_0xfcef('0x2'));var attributes=require(_0xfcef('0x3'));var getUserApplications=function(_0x107abd,_0x2caeb4,_0xc0c3b2){var _0x5ac655=0x1;var _0x4f582b=[];var _0x1e1fad={'context':_0x2caeb4['context']||_0xfcef('0x4'),'exten':util[_0xfcef('0x5')]('%s%s',_0x107abd['prefix'],_0xc0c3b2),'type':_0xfcef('0x6'),'isApp':![],'ChanSpyId':_0x107abd['id'],'UserId':_0x2caeb4['id']};_0x4f582b[_0xfcef('0x7')](_[_0xfcef('0x8')]({'app':'Set','appdata':util[_0xfcef('0x5')](_0xfcef('0x9'),_0xfcef('0xa')),'priority':_0x5ac655++},_0x1e1fad));if(_0x107abd[_0xfcef('0xb')]){_0x4f582b[_0xfcef('0x7')](_[_0xfcef('0x8')]({'app':_0xfcef('0xc'),'appdata':util[_0xfcef('0x5')](_0xfcef('0xd'),_0x107abd[_0xfcef('0xe')]),'priority':_0x5ac655++},_0x1e1fad));}if(_0x107abd[_0xfcef('0xf')]){_0x4f582b[_0xfcef('0x7')](_[_0xfcef('0x8')]({'app':_0xfcef('0x10'),'appdata':_0x107abd['password'],'priority':_0x5ac655++},_0x1e1fad));}_0x4f582b[_0xfcef('0x7')](_[_0xfcef('0x8')]({'app':'ChanSpy','appdata':util[_0xfcef('0x5')](_0xfcef('0x11'),_0x2caeb4[_0xfcef('0x12')],_0x107abd['options']?_0x107abd[_0xfcef('0x13')][_0xfcef('0x14')](''):''),'priority':_0x5ac655++},_0x1e1fad));if(_0x107abd[_0xfcef('0xb')]){_0x4f582b[_0xfcef('0x7')](_['merge']({'app':_0xfcef('0x15'),'priority':_0x5ac655++},_0x1e1fad));}return _0x4f582b;};var getChanSpyApplications=function(_0x46ebb2,_0x38da78){var _0x5c272d=[];for(var _0x24c995=0x0,_0x42a9cc=0x1;_0x24c995<_0x38da78[_0xfcef('0x16')];_0x24c995++,_0x42a9cc=0x1){_0x5c272d=_0x5c272d[_0xfcef('0x17')](getUserApplications(_0x46ebb2,_0x38da78[_0x24c995],_0x38da78[_0x24c995][_0xfcef('0x18')]));if(_0x38da78[_0x24c995]['internal']!=_0x38da78[_0x24c995]['name']){_0x5c272d=_0x5c272d[_0xfcef('0x17')](getUserApplications(_0x46ebb2,_0x38da78[_0x24c995],_0x38da78[_0x24c995][_0xfcef('0x12')]));}}return _0x5c272d;};var getChanSpyPromise=function(_0x220bf3,_0x142071){return new BPromise(function(_0x4e226f,_0x2cffa1){return _0x220bf3['User']['findAll']({'attributes':['id',_0xfcef('0x12'),_0xfcef('0x18')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0xfcef('0x19')](function(_0x46a0ee){if(_0x46a0ee){return _0x4e226f(getChanSpyApplications(_0x142071,_0x46a0ee));}return _0x4e226f([]);})[_0xfcef('0x1a')](function(_0x295820){_0x2cffa1(_0x295820);});});};module[_0xfcef('0x1b')]=function(_0x58c3a5,_0x5ae9a3){var _0x1a0f24=_0x58c3a5[_0xfcef('0x1c')];return _0x58c3a5[_0xfcef('0x1d')](_0xfcef('0x1e'),attributes,{'tableName':_0xfcef('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x359b63,_0x51c62a,_0x2af3cb){return getChanSpyPromise(_0x1a0f24,_0x359b63)[_0xfcef('0x19')](function(_0xef7754){if(_0xef7754&&_0xef7754[_0xfcef('0x16')]){return _0x1a0f24[_0xfcef('0x20')][_0xfcef('0x21')](_0xef7754);}})[_0xfcef('0x19')](function(){_0x2af3cb();})[_0xfcef('0x1a')](function(_0x149619){_0x2af3cb(_0x149619);});},'afterUpdate':function(_0x158985,_0x17f67f,_0x1d98a7){return _0x1a0f24[_0xfcef('0x20')][_0xfcef('0x22')]({'where':{'ChanSpyId':_0x158985['id']}})[_0xfcef('0x19')](function(){return getChanSpyPromise(_0x1a0f24,_0x158985);})['then'](function(_0x58bde5){if(_0x58bde5&&_0x58bde5['length']){return _0x1a0f24[_0xfcef('0x20')][_0xfcef('0x21')](_0x58bde5);}})[_0xfcef('0x19')](function(){_0x1d98a7();})[_0xfcef('0x1a')](function(_0x233530){_0x1d98a7(_0x233530);});},'afterDestroy':function(_0xaf5ee4,_0x53d463,_0x2bdf69){return _0x1a0f24[_0xfcef('0x20')][_0xfcef('0x22')]({'where':{'ChanSpyId':_0xaf5ee4['id']}})[_0xfcef('0x19')](function(){_0x2bdf69();})[_0xfcef('0x1a')](function(_0x414e0d){_0x2bdf69(_0x414e0d);});}}});};
\ No newline at end of file
index ad19a8a..f1f8fd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85b5=['catch','lodash','util','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','request','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x9f74cb,_0x2beef6){var _0x4c2fb3=function(_0x1fe091){while(--_0x1fe091){_0x9f74cb['push'](_0x9f74cb['shift']());}};_0x4c2fb3(++_0x2beef6);}(_0x85b5,0x7f));var _0x585b=function(_0x4c8bf4,_0x2df97d){_0x4c8bf4=_0x4c8bf4-0x0;var _0x3d29ad=_0x85b5[_0x4c8bf4];return _0x3d29ad;};'use strict';var _=require(_0x585b('0x0'));var util=require(_0x585b('0x1'));var moment=require('moment');var BPromise=require(_0x585b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x585b('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x585b('0x4'))('rpc');var config=require(_0x585b('0x5'));var jayson=require(_0x585b('0x6'));var client=jayson[_0x585b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1605b5,_0x55ffb3,_0x432e2d){return new BPromise(function(_0x2f8895,_0x3c3c0b){return client[_0x585b('0x8')](_0x1605b5,_0x432e2d)['then'](function(_0x8b5f63){logger[_0x585b('0x9')](_0x585b('0xa'),_0x55ffb3,_0x585b('0xb'));logger[_0x585b('0xc')](_0x585b('0xd'),_0x55ffb3,_0x585b('0xb'),JSON['stringify'](_0x8b5f63));if(_0x8b5f63[_0x585b('0xe')]){if(_0x8b5f63['error'][_0x585b('0xf')]===0x1f4){logger['error'](_0x585b('0xa'),_0x55ffb3,_0x8b5f63[_0x585b('0xe')][_0x585b('0x10')]);return _0x3c3c0b(_0x8b5f63['error'][_0x585b('0x10')]);}logger[_0x585b('0xe')](_0x585b('0xa'),_0x55ffb3,_0x8b5f63[_0x585b('0xe')][_0x585b('0x10')]);return _0x2f8895(_0x8b5f63[_0x585b('0xe')][_0x585b('0x10')]);}else{logger['info'](_0x585b('0xa'),_0x55ffb3,_0x585b('0xb'));_0x2f8895(_0x8b5f63['result']['message']);}})[_0x585b('0x11')](function(_0x4f2224){logger['error'](_0x585b('0xa'),_0x55ffb3,_0x4f2224);_0x3c3c0b(_0x4f2224);});});}
\ No newline at end of file
+var _0x073e=['debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','http','then','info','VoiceChanSpy,\x20%s,\x20%s'];(function(_0xc44eaf,_0x4e84e0){var _0x2447a0=function(_0x305b27){while(--_0x305b27){_0xc44eaf['push'](_0xc44eaf['shift']());}};_0x2447a0(++_0x4e84e0);}(_0x073e,0x181));var _0xe073=function(_0x31d8ae,_0x41eb1f){_0x31d8ae=_0x31d8ae-0x0;var _0x4ec705=_0x073e[_0x31d8ae];return _0x4ec705;};'use strict';var _=require(_0xe073('0x0'));var util=require(_0xe073('0x1'));var moment=require(_0xe073('0x2'));var BPromise=require(_0xe073('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe073('0x4'));var logger=require(_0xe073('0x5'))(_0xe073('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xe073('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x44092d,_0x1bcaae,_0x3b4fc7){return new BPromise(function(_0x373bf6,_0x1a93da){return client['request'](_0x44092d,_0x3b4fc7)[_0xe073('0x8')](function(_0x7a1f21){logger[_0xe073('0x9')](_0xe073('0xa'),_0x1bcaae,'request\x20sent');logger[_0xe073('0xb')](_0xe073('0xc'),_0x1bcaae,_0xe073('0xd'),JSON[_0xe073('0xe')](_0x7a1f21));if(_0x7a1f21[_0xe073('0xf')]){if(_0x7a1f21[_0xe073('0xf')]['code']===0x1f4){logger[_0xe073('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x1bcaae,_0x7a1f21[_0xe073('0xf')]['message']);return _0x1a93da(_0x7a1f21[_0xe073('0xf')]['message']);}logger[_0xe073('0xf')](_0xe073('0xa'),_0x1bcaae,_0x7a1f21[_0xe073('0xf')][_0xe073('0x10')]);return _0x373bf6(_0x7a1f21[_0xe073('0xf')][_0xe073('0x10')]);}else{logger[_0xe073('0x9')](_0xe073('0xa'),_0x1bcaae,_0xe073('0xd'));_0x373bf6(_0x7a1f21[_0xe073('0x11')][_0xe073('0x10')]);}})['catch'](function(_0x511ab2){logger['error'](_0xe073('0xa'),_0x1bcaae,_0x511ab2);_0x1a93da(_0x511ab2);});});}
\ No newline at end of file
index 1ad00f9..cce9de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96bf=['exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','index','/:id','isAuthenticated','put','destroy'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x96bf,0x1f1));var _0xf96b=function(_0x575b72,_0x1a7eb1){_0x575b72=_0x575b72-0x0;var _0x561c57=_0x96bf[_0x575b72];return _0x561c57;};'use strict';var multer=require(_0xf96b('0x0'));var util=require(_0xf96b('0x1'));var path=require('path');var timeout=require(_0xf96b('0x2'));var express=require(_0xf96b('0x3'));var router=express[_0xf96b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf96b('0x5'));var interaction=require(_0xf96b('0x6'));var config=require(_0xf96b('0x7'));var controller=require(_0xf96b('0x8'));router[_0xf96b('0x9')]('/',auth['isAuthenticated'](),controller[_0xf96b('0xa')]);router[_0xf96b('0x9')](_0xf96b('0xb'),auth[_0xf96b('0xc')](),controller['show']);router['post']('/',auth[_0xf96b('0xc')](),controller['create']);router[_0xf96b('0xd')](_0xf96b('0xb'),auth[_0xf96b('0xc')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf96b('0xe')]);module[_0xf96b('0xf')]=router;
\ No newline at end of file
+var _0x12a6=['multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','get','/:id','post','create','update','destroy','exports'];(function(_0x1296ff,_0x10c5f0){var _0x3a46ba=function(_0x35f458){while(--_0x35f458){_0x1296ff['push'](_0x1296ff['shift']());}};_0x3a46ba(++_0x10c5f0);}(_0x12a6,0x1f0));var _0x612a=function(_0x71b765,_0x3053f8){_0x71b765=_0x71b765-0x0;var _0x34cb24=_0x12a6[_0x71b765];return _0x34cb24;};'use strict';var multer=require(_0x612a('0x0'));var util=require(_0x612a('0x1'));var path=require(_0x612a('0x2'));var timeout=require(_0x612a('0x3'));var express=require('express');var router=express[_0x612a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x612a('0x5'));var config=require(_0x612a('0x6'));var controller=require(_0x612a('0x7'));router['get']('/',auth[_0x612a('0x8')](),controller['index']);router[_0x612a('0x9')](_0x612a('0xa'),auth[_0x612a('0x8')](),controller['show']);router[_0x612a('0xb')]('/',auth[_0x612a('0x8')](),controller[_0x612a('0xc')]);router['put'](_0x612a('0xa'),auth[_0x612a('0x8')](),controller[_0x612a('0xd')]);router['delete'](_0x612a('0xa'),auth[_0x612a('0x8')](),controller[_0x612a('0xe')]);module[_0x612a('0xf')]=router;
\ No newline at end of file
index dcc6f06..6c2faca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ec=['STRING','name','BOOLEAN','sequelize'];(function(_0x2341c6,_0x3af092){var _0x54c34d=function(_0x3091f9){while(--_0x3091f9){_0x2341c6['push'](_0x2341c6['shift']());}};_0x54c34d(++_0x3af092);}(_0xa9ec,0x13b));var _0xca9e=function(_0x4b1f9c,_0x422fc9){_0x4b1f9c=_0x4b1f9c-0x0;var _0x3e0632=_0xa9ec[_0x4b1f9c];return _0x3e0632;};'use strict';var Sequelize=require(_0xca9e('0x0'));module['exports']={'name':{'type':Sequelize[_0xca9e('0x1')],'unique':_0xca9e('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xca9e('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x178c=['sequelize','STRING','BOOLEAN'];(function(_0x343a83,_0x218650){var _0x19aa04=function(_0xddd7e6){while(--_0xddd7e6){_0x343a83['push'](_0x343a83['shift']());}};_0x19aa04(++_0x218650);}(_0x178c,0x1ef));var _0xc178=function(_0x2bcc99,_0x32d887){_0x2bcc99=_0x2bcc99-0x0;var _0x24e08e=_0x178c[_0x2bcc99];return _0x24e08e;};'use strict';var Sequelize=require(_0xc178('0x0'));module['exports']={'name':{'type':Sequelize[_0xc178('0x1')],'unique':'name'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xc178('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 7cf050f..d9957e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e9=['code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','reject','update','destroy','get','Contexts','UserProfileResource','name','send','index','VoiceContext','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','readFileSync','join','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','root','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x40ebff,_0x1dd15e){var _0x40122a=function(_0xae6174){while(--_0xae6174){_0x40ebff['push'](_0x40ebff['shift']());}};_0x40122a(++_0x1dd15e);}(_0x12e9,0x119));var _0x912e=function(_0x18c910,_0x350649){_0x18c910=_0x18c910-0x0;var _0xfa5d73=_0x12e9[_0x18c910];return _0xfa5d73;};'use strict';var emlformat=require(_0x912e('0x0'));var rimraf=require(_0x912e('0x1'));var zipdir=require(_0x912e('0x2'));var jsonpatch=require(_0x912e('0x3'));var rp=require(_0x912e('0x4'));var moment=require(_0x912e('0x5'));var BPromise=require(_0x912e('0x6'));var Mustache=require(_0x912e('0x7'));var util=require(_0x912e('0x8'));var path=require(_0x912e('0x9'));var sox=require(_0x912e('0xa'));var csv=require(_0x912e('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x912e('0xc'));var _=require(_0x912e('0xd'));var squel=require(_0x912e('0xe'));var crypto=require(_0x912e('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x912e('0x10'));var toCsv=require(_0x912e('0xb'));var querystring=require(_0x912e('0x11'));var Papa=require(_0x912e('0x12'));var Redis=require(_0x912e('0x13'));var authService=require(_0x912e('0x14'));var qs=require(_0x912e('0x15'));var as=require(_0x912e('0x16'));var hardwareService=require(_0x912e('0x17'));var logger=require(_0x912e('0x18'))('api');var utils=require(_0x912e('0x19'));var config=require(_0x912e('0x1a'));var licenseUtil=require(_0x912e('0x1b'));var db=require(_0x912e('0x1c'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x912e('0x1d')][_0x912e('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x19ab45,_0x1b0d47,_0xea5363,_0x1145dd){return new BPromise(function(_0xe4d45f,_0x2a7d38){var _0x53ba06=_0x1145dd||client;return _0x53ba06[_0x912e('0x1f')](_0x19ab45,_0xea5363)[_0x912e('0x20')](function(_0x523c22){logger[_0x912e('0x21')](_0x912e('0x22'),_0x1b0d47,_0x912e('0x23'));logger[_0x912e('0x24')](_0x912e('0x25'),_0x1b0d47,_0x912e('0x23'),JSON[_0x912e('0x26')](_0x523c22));if(_0x523c22[_0x912e('0x27')]){if(_0x523c22[_0x912e('0x27')][_0x912e('0x28')]===0x1f4){logger[_0x912e('0x27')](_0x912e('0x22'),_0x1b0d47,_0x523c22[_0x912e('0x27')]['message']);return _0x2a7d38(_0x523c22[_0x912e('0x27')][_0x912e('0x29')]);}logger[_0x912e('0x27')](_0x912e('0x22'),_0x1b0d47,_0x523c22['error']['message']);return _0xe4d45f(_0x523c22[_0x912e('0x27')][_0x912e('0x29')]);}else{logger['info'](_0x912e('0x22'),_0x1b0d47,_0x912e('0x23'));_0xe4d45f(_0x523c22[_0x912e('0x2a')][_0x912e('0x29')]);}})[_0x912e('0x2b')](function(_0x493d57){logger[_0x912e('0x27')](_0x912e('0x22'),_0x1b0d47,_0x493d57);_0x2a7d38(_0x493d57);});});}function respondWithStatusCode(_0x515af,_0x58dc46){_0x58dc46=_0x58dc46||0xcc;return function(_0x3cefe4){if(_0x3cefe4){return _0x515af[_0x912e('0x2c')](_0x58dc46);}return _0x515af['status'](_0x58dc46)[_0x912e('0x2d')]();};}function respondWithResult(_0x354a0a,_0x2382d7){_0x2382d7=_0x2382d7||0xc8;return function(_0x2df0cc){if(_0x2df0cc){return _0x354a0a[_0x912e('0x2e')](_0x2382d7)['json'](_0x2df0cc);}};}function respondWithFilteredResult(_0x4e60b5,_0x2175b6){return function(_0x4bb72f){if(_0x4bb72f){var _0x1cee27=typeof _0x2175b6[_0x912e('0x2f')]===_0x912e('0x30')&&typeof _0x2175b6[_0x912e('0x31')]===_0x912e('0x30');var _0x110a26=_0x4bb72f[_0x912e('0x32')];var _0x497da6=_0x1cee27?0x0:_0x2175b6[_0x912e('0x2f')];var _0x3c7472=_0x1cee27?_0x4bb72f[_0x912e('0x32')]:_0x2175b6['offset']+_0x2175b6['limit'];var _0x5e8120;if(_0x3c7472>=_0x110a26){_0x3c7472=_0x110a26;_0x5e8120=0xc8;}else{_0x5e8120=0xce;}_0x4e60b5[_0x912e('0x2e')](_0x5e8120);return _0x4e60b5['set']('Content-Range',_0x497da6+'-'+_0x3c7472+'/'+_0x110a26)['json'](_0x4bb72f);}return null;};}function patchUpdates(_0x4a0883){return function(_0x5b5745){try{jsonpatch['apply'](_0x5b5745,_0x4a0883,!![]);}catch(_0x321404){return BPromise[_0x912e('0x33')](_0x321404);}return _0x5b5745['save']();};}function saveUpdates(_0x39c1c4,_0x1a5773){return function(_0x32b233){if(_0x32b233){return _0x32b233[_0x912e('0x34')](_0x39c1c4)[_0x912e('0x20')](function(_0xca88bf){return _0xca88bf;});}return null;};}function removeEntity(_0x4da9de,_0xf594fd){return function(_0x415810){if(_0x415810){return _0x415810[_0x912e('0x35')]()[_0x912e('0x20')](function(){var _0x3e6d28=_0x415810[_0x912e('0x36')]({'plain':!![]});var _0x59893b=_0x912e('0x37');return db[_0x912e('0x38')][_0x912e('0x35')]({'where':{'type':_0x59893b,'resourceId':_0x3e6d28['id']}})[_0x912e('0x20')](function(){return _0x415810;});})[_0x912e('0x20')](function(){_0x4da9de[_0x912e('0x2e')](0xcc)[_0x912e('0x2d')]();});}};}function handleEntityNotFound(_0x41ef6d,_0x257a7c){return function(_0x10afd){if(!_0x10afd){_0x41ef6d[_0x912e('0x2c')](0x194);}return _0x10afd;};}function handleError(_0x15f3ff,_0x24a965){_0x24a965=_0x24a965||0x1f4;return function(_0x2663b8){logger[_0x912e('0x27')](_0x2663b8['stack']);if(_0x2663b8[_0x912e('0x39')]){delete _0x2663b8[_0x912e('0x39')];}_0x15f3ff['status'](_0x24a965)[_0x912e('0x3a')](_0x2663b8);};}exports[_0x912e('0x3b')]=function(_0x220963,_0x3b952e){var _0x29f5cf={},_0x30bff2={},_0x5425db={'count':0x0,'rows':[]};var _0x57109f=_['map'](db[_0x912e('0x3c')][_0x912e('0x3d')],function(_0x4e0144){return{'name':_0x4e0144[_0x912e('0x3e')],'type':_0x4e0144['type'][_0x912e('0x3f')]};});_0x30bff2[_0x912e('0x40')]=_[_0x912e('0x41')](_0x57109f,_0x912e('0x39'));_0x30bff2[_0x912e('0x42')]=_['keys'](_0x220963[_0x912e('0x42')]);_0x30bff2['filters']=_[_0x912e('0x43')](_0x30bff2[_0x912e('0x40')],_0x30bff2[_0x912e('0x42')]);_0x29f5cf[_0x912e('0x44')]=_[_0x912e('0x43')](_0x30bff2[_0x912e('0x40')],qs[_0x912e('0x45')](_0x220963['query']['fields']));_0x29f5cf[_0x912e('0x44')]=_0x29f5cf['attributes'][_0x912e('0x46')]?_0x29f5cf[_0x912e('0x44')]:_0x30bff2[_0x912e('0x40')];if(!_0x220963[_0x912e('0x42')][_0x912e('0x47')](_0x912e('0x48'))){_0x29f5cf[_0x912e('0x31')]=qs[_0x912e('0x31')](_0x220963['query']['limit']);_0x29f5cf[_0x912e('0x2f')]=qs[_0x912e('0x2f')](_0x220963[_0x912e('0x42')][_0x912e('0x2f')]);}_0x29f5cf['order']=qs[_0x912e('0x49')](_0x220963[_0x912e('0x42')][_0x912e('0x49')]);_0x29f5cf['where']=qs['filters'](_[_0x912e('0x4a')](_0x220963['query'],_0x30bff2[_0x912e('0x4b')]),_0x57109f);if(_0x220963['query']['filter']){_0x29f5cf[_0x912e('0x4c')]=_[_0x912e('0x4d')](_0x29f5cf[_0x912e('0x4c')],{'$or':_[_0x912e('0x41')](_0x57109f,function(_0x4452cf){if(_0x4452cf['type']!==_0x912e('0x4e')){var _0x1afe0f={};_0x1afe0f[_0x4452cf[_0x912e('0x39')]]={'$like':'%'+_0x220963['query'][_0x912e('0x4f')]+'%'};return _0x1afe0f;}})});}_0x29f5cf=_['merge']({},_0x29f5cf,_0x220963[_0x912e('0x50')]);var _0x577bdd={'where':_0x29f5cf[_0x912e('0x4c')]};return db['VoiceContext'][_0x912e('0x32')](_0x577bdd)[_0x912e('0x20')](function(_0x34fff7){_0x5425db['count']=_0x34fff7;if(_0x220963[_0x912e('0x42')][_0x912e('0x51')]){_0x29f5cf[_0x912e('0x52')]=[{'all':!![]}];}return db['VoiceContext'][_0x912e('0x53')](_0x29f5cf);})[_0x912e('0x20')](function(_0x2b0df7){_0x5425db[_0x912e('0x54')]=_0x2b0df7;return _0x5425db;})[_0x912e('0x20')](respondWithFilteredResult(_0x3b952e,_0x29f5cf))[_0x912e('0x2b')](handleError(_0x3b952e,null));};exports[_0x912e('0x55')]=function(_0x11a88b,_0x478859){var _0x1b70df={'raw':![],'where':{'id':_0x11a88b[_0x912e('0x56')]['id']}},_0x2c96db={};_0x2c96db['model']=_['keys'](db['VoiceContext'][_0x912e('0x3d')]);_0x2c96db['query']=_[_0x912e('0x57')](_0x11a88b['query']);_0x2c96db[_0x912e('0x4b')]=_[_0x912e('0x43')](_0x2c96db[_0x912e('0x40')],_0x2c96db[_0x912e('0x42')]);_0x1b70df[_0x912e('0x44')]=_[_0x912e('0x43')](_0x2c96db[_0x912e('0x40')],qs[_0x912e('0x45')](_0x11a88b[_0x912e('0x42')][_0x912e('0x45')]));_0x1b70df[_0x912e('0x44')]=_0x1b70df[_0x912e('0x44')][_0x912e('0x46')]?_0x1b70df[_0x912e('0x44')]:_0x2c96db[_0x912e('0x40')];if(_0x11a88b[_0x912e('0x42')][_0x912e('0x51')]){_0x1b70df['include']=[{'all':!![]}];}_0x1b70df=_['merge']({},_0x1b70df,_0x11a88b[_0x912e('0x50')]);return db['VoiceContext'][_0x912e('0x58')](_0x1b70df)['then'](handleEntityNotFound(_0x478859,null))[_0x912e('0x20')](respondWithResult(_0x478859,null))[_0x912e('0x2b')](handleError(_0x478859,null));};exports[_0x912e('0x59')]=function(_0x48a2e1,_0x1ef70a,_0x1cd2b9){var _0x450ebc;return db[_0x912e('0x3c')][_0x912e('0x59')](_0x48a2e1[_0x912e('0x5a')],{'raw':!![]})[_0x912e('0x20')](function(_0x2cffe1){_0x450ebc=_0x2cffe1;return db[_0x912e('0x3c')]['findAll']({'raw':!![]});})['then'](function(_0x254703){var _0x4f41f7=fs[_0x912e('0x5b')](path[_0x912e('0x5c')](config['root'],_0x912e('0x5d')),_0x912e('0x5e'));var _0x100d76=ejs[_0x912e('0x5f')](_0x4f41f7,{'contexts':_0x254703||[]});fs[_0x912e('0x60')](_0x912e('0x61'),_0x100d76);})[_0x912e('0x20')](function(){return respondWithRpcPromise(_0x912e('0x62'),'create',{'module':_0x912e('0x63')});})['then'](function(){var _0x463830=_0x48a2e1['user'][_0x912e('0x36')]({'plain':!![]});if(!_0x463830)throw new Error(_0x912e('0x64'));if(_0x463830[_0x912e('0x65')]==='user'){var _0x7c407=_0x450ebc[_0x912e('0x36')]({'plain':!![]});return db[_0x912e('0x66')][_0x912e('0x58')]({'where':{'name':_0x912e('0x37'),'userProfileId':_0x463830[_0x912e('0x67')]},'raw':!![]})[_0x912e('0x20')](function(_0x1095f8){if(_0x1095f8&&_0x1095f8[_0x912e('0x68')]===0x0){return db[_0x912e('0x38')]['create']({'name':_0x7c407[_0x912e('0x39')],'resourceId':_0x7c407['id'],'type':_0x1095f8[_0x912e('0x39')],'sectionId':_0x1095f8['id']},{})[_0x912e('0x20')](function(){return _0x450ebc;});}else{return _0x450ebc;}})[_0x912e('0x2b')](function(_0x472289){logger[_0x912e('0x27')](_0x912e('0x69'),_0x472289);throw _0x472289;});}return _0x450ebc;})[_0x912e('0x20')](respondWithResult(_0x1ef70a,0xc9))[_0x912e('0x2b')](handleError(_0x1ef70a,null));};exports[_0x912e('0x34')]=function(_0x5d750c,_0x13123e,_0x4d2e66){var _0xa9eb2b;return db[_0x912e('0x3c')][_0x912e('0x58')]({'where':{'id':_0x5d750c['params']['id']}})[_0x912e('0x20')](handleEntityNotFound(_0x13123e,null))[_0x912e('0x20')](saveUpdates(_0x5d750c[_0x912e('0x5a')],null))[_0x912e('0x20')](function(_0x258ee9){if(_0x258ee9){_0xa9eb2b=_0x258ee9;return db[_0x912e('0x3c')][_0x912e('0x53')]({'raw':!![]});}})['then'](function(_0xc6f374){var _0x30dffd=fs[_0x912e('0x5b')](path[_0x912e('0x5c')](config[_0x912e('0x6a')],_0x912e('0x5d')),'utf8');var _0x3f1f7f=ejs[_0x912e('0x5f')](_0x30dffd,{'contexts':_0xc6f374||[]});fs[_0x912e('0x60')](_0x912e('0x61'),_0x3f1f7f);})['then'](function(){return respondWithRpcPromise(_0x912e('0x62'),_0x912e('0x34'),{'module':'chan_sip.so'});})[_0x912e('0x20')](function(){return _0xa9eb2b;})['then'](respondWithResult(_0x13123e,null))[_0x912e('0x2b')](handleError(_0x13123e,null));};exports[_0x912e('0x35')]=function(_0x4b53b5,_0x1120ee,_0x229f96){var _0x3db355;return db['VoiceContext']['find']({'where':{'id':_0x4b53b5[_0x912e('0x56')]['id']}})['then'](handleEntityNotFound(_0x1120ee,null))[_0x912e('0x20')](removeEntity(_0x1120ee,null))[_0x912e('0x20')](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0x912e('0x20')](function(_0x116931){var _0x5917b8=fs['readFileSync'](path[_0x912e('0x5c')](config[_0x912e('0x6a')],_0x912e('0x5d')),_0x912e('0x5e'));var _0x2ff8fa=ejs['render'](_0x5917b8,{'contexts':_0x116931});fs[_0x912e('0x60')](_0x912e('0x61'),_0x2ff8fa);return respondWithRpcPromise(_0x912e('0x62'),'destroy',{'module':_0x912e('0x63')});})[_0x912e('0x2b')](handleError(_0x1120ee,null));};
\ No newline at end of file
+var _0xccad=['findAll','rows','catch','show','params','keys','includeAll','options','find','create','body','readFileSync','join','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','root','server/files/templates/context.ejs','render','Reload','chan_sip.so','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','get','Contexts','UserProfileResource','destroy','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','include'];(function(_0x25eee5,_0x397933){var _0x49a41f=function(_0x135a66){while(--_0x135a66){_0x25eee5['push'](_0x25eee5['shift']());}};_0x49a41f(++_0x397933);}(_0xccad,0xf1));var _0xdcca=function(_0x5cbf0e,_0x4cd140){_0x5cbf0e=_0x5cbf0e-0x0;var _0x1c76f8=_0xccad[_0x5cbf0e];return _0x1c76f8;};'use strict';var emlformat=require(_0xdcca('0x0'));var rimraf=require(_0xdcca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdcca('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdcca('0x3'));var Mustache=require(_0xdcca('0x4'));var util=require(_0xdcca('0x5'));var path=require(_0xdcca('0x6'));var sox=require('sox');var csv=require(_0xdcca('0x7'));var ejs=require(_0xdcca('0x8'));var fs=require('fs');var fs_extra=require(_0xdcca('0x9'));var _=require(_0xdcca('0xa'));var squel=require(_0xdcca('0xb'));var crypto=require(_0xdcca('0xc'));var jsforce=require(_0xdcca('0xd'));var deskjs=require(_0xdcca('0xe'));var toCsv=require(_0xdcca('0x7'));var querystring=require(_0xdcca('0xf'));var Papa=require(_0xdcca('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xdcca('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdcca('0x12'));var logger=require(_0xdcca('0x13'))(_0xdcca('0x14'));var utils=require('../../config/utils');var config=require(_0xdcca('0x15'));var licenseUtil=require(_0xdcca('0x16'));var db=require(_0xdcca('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xdcca('0x18')][_0xdcca('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x3f3c97,_0x5ec682,_0x1289f9,_0x31b901){return new BPromise(function(_0x44014d,_0x14a78d){var _0x5c4e40=_0x31b901||client;return _0x5c4e40[_0xdcca('0x1a')](_0x3f3c97,_0x1289f9)[_0xdcca('0x1b')](function(_0x1a524e){logger[_0xdcca('0x1c')](_0xdcca('0x1d'),_0x5ec682,'request\x20sent');logger[_0xdcca('0x1e')](_0xdcca('0x1f'),_0x5ec682,'request\x20sent',JSON[_0xdcca('0x20')](_0x1a524e));if(_0x1a524e['error']){if(_0x1a524e[_0xdcca('0x21')][_0xdcca('0x22')]===0x1f4){logger[_0xdcca('0x21')](_0xdcca('0x1d'),_0x5ec682,_0x1a524e[_0xdcca('0x21')][_0xdcca('0x23')]);return _0x14a78d(_0x1a524e[_0xdcca('0x21')]['message']);}logger[_0xdcca('0x21')](_0xdcca('0x1d'),_0x5ec682,_0x1a524e[_0xdcca('0x21')]['message']);return _0x44014d(_0x1a524e[_0xdcca('0x21')][_0xdcca('0x23')]);}else{logger[_0xdcca('0x1c')](_0xdcca('0x1d'),_0x5ec682,'request\x20sent');_0x44014d(_0x1a524e[_0xdcca('0x24')][_0xdcca('0x23')]);}})['catch'](function(_0x1f90b4){logger[_0xdcca('0x21')](_0xdcca('0x1d'),_0x5ec682,_0x1f90b4);_0x14a78d(_0x1f90b4);});});}function respondWithStatusCode(_0x4e045d,_0x1865a1){_0x1865a1=_0x1865a1||0xcc;return function(_0x13d8d9){if(_0x13d8d9){return _0x4e045d[_0xdcca('0x25')](_0x1865a1);}return _0x4e045d[_0xdcca('0x26')](_0x1865a1)[_0xdcca('0x27')]();};}function respondWithResult(_0x578816,_0x292300){_0x292300=_0x292300||0xc8;return function(_0x7e22e4){if(_0x7e22e4){return _0x578816[_0xdcca('0x26')](_0x292300)[_0xdcca('0x28')](_0x7e22e4);}};}function respondWithFilteredResult(_0xe8e63b,_0x4fca5f){return function(_0x2ce6f7){if(_0x2ce6f7){var _0x3a20cb=typeof _0x4fca5f[_0xdcca('0x29')]===_0xdcca('0x2a')&&typeof _0x4fca5f[_0xdcca('0x2b')]==='undefined';var _0x31396b=_0x2ce6f7[_0xdcca('0x2c')];var _0x18427f=_0x3a20cb?0x0:_0x4fca5f[_0xdcca('0x29')];var _0x4fada2=_0x3a20cb?_0x2ce6f7[_0xdcca('0x2c')]:_0x4fca5f['offset']+_0x4fca5f[_0xdcca('0x2b')];var _0x436a8b;if(_0x4fada2>=_0x31396b){_0x4fada2=_0x31396b;_0x436a8b=0xc8;}else{_0x436a8b=0xce;}_0xe8e63b[_0xdcca('0x26')](_0x436a8b);return _0xe8e63b['set'](_0xdcca('0x2d'),_0x18427f+'-'+_0x4fada2+'/'+_0x31396b)[_0xdcca('0x28')](_0x2ce6f7);}return null;};}function patchUpdates(_0x2cc10d){return function(_0x1973b6){try{jsonpatch[_0xdcca('0x2e')](_0x1973b6,_0x2cc10d,!![]);}catch(_0x4b2d23){return BPromise[_0xdcca('0x2f')](_0x4b2d23);}return _0x1973b6[_0xdcca('0x30')]();};}function saveUpdates(_0x1ce30c,_0x834f00){return function(_0x2c8a95){if(_0x2c8a95){return _0x2c8a95[_0xdcca('0x31')](_0x1ce30c)[_0xdcca('0x1b')](function(_0x15870a){return _0x15870a;});}return null;};}function removeEntity(_0x1c82c6,_0x5489ad){return function(_0x120920){if(_0x120920){return _0x120920['destroy']()['then'](function(){var _0xbba99b=_0x120920[_0xdcca('0x32')]({'plain':!![]});var _0x19dde9=_0xdcca('0x33');return db[_0xdcca('0x34')][_0xdcca('0x35')]({'where':{'type':_0x19dde9,'resourceId':_0xbba99b['id']}})['then'](function(){return _0x120920;});})['then'](function(){_0x1c82c6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f6f39,_0x590aa9){return function(_0x3b60d1){if(!_0x3b60d1){_0x3f6f39[_0xdcca('0x25')](0x194);}return _0x3b60d1;};}function handleError(_0x260e3f,_0x7b0901){_0x7b0901=_0x7b0901||0x1f4;return function(_0x33de58){logger['error'](_0x33de58[_0xdcca('0x36')]);if(_0x33de58[_0xdcca('0x37')]){delete _0x33de58[_0xdcca('0x37')];}_0x260e3f['status'](_0x7b0901)[_0xdcca('0x38')](_0x33de58);};}exports[_0xdcca('0x39')]=function(_0x326d06,_0x55d0e9){var _0xb525be={},_0x2efe42={},_0x158514={'count':0x0,'rows':[]};var _0x584905=_[_0xdcca('0x3a')](db[_0xdcca('0x3b')][_0xdcca('0x3c')],function(_0x838aad){return{'name':_0x838aad[_0xdcca('0x3d')],'type':_0x838aad[_0xdcca('0x3e')][_0xdcca('0x3f')]};});_0x2efe42[_0xdcca('0x40')]=_[_0xdcca('0x3a')](_0x584905,_0xdcca('0x37'));_0x2efe42[_0xdcca('0x41')]=_['keys'](_0x326d06[_0xdcca('0x41')]);_0x2efe42[_0xdcca('0x42')]=_[_0xdcca('0x43')](_0x2efe42[_0xdcca('0x40')],_0x2efe42[_0xdcca('0x41')]);_0xb525be[_0xdcca('0x44')]=_[_0xdcca('0x43')](_0x2efe42['model'],qs[_0xdcca('0x45')](_0x326d06[_0xdcca('0x41')]['fields']));_0xb525be['attributes']=_0xb525be[_0xdcca('0x44')][_0xdcca('0x46')]?_0xb525be[_0xdcca('0x44')]:_0x2efe42['model'];if(!_0x326d06['query'][_0xdcca('0x47')](_0xdcca('0x48'))){_0xb525be['limit']=qs[_0xdcca('0x2b')](_0x326d06[_0xdcca('0x41')][_0xdcca('0x2b')]);_0xb525be[_0xdcca('0x29')]=qs[_0xdcca('0x29')](_0x326d06[_0xdcca('0x41')][_0xdcca('0x29')]);}_0xb525be[_0xdcca('0x49')]=qs[_0xdcca('0x4a')](_0x326d06[_0xdcca('0x41')]['sort']);_0xb525be[_0xdcca('0x4b')]=qs[_0xdcca('0x42')](_[_0xdcca('0x4c')](_0x326d06['query'],_0x2efe42[_0xdcca('0x42')]),_0x584905);if(_0x326d06[_0xdcca('0x41')][_0xdcca('0x4d')]){_0xb525be[_0xdcca('0x4b')]=_[_0xdcca('0x4e')](_0xb525be[_0xdcca('0x4b')],{'$or':_[_0xdcca('0x3a')](_0x584905,function(_0x4bec2b){if(_0x4bec2b['type']!=='VIRTUAL'){var _0x494246={};_0x494246[_0x4bec2b['name']]={'$like':'%'+_0x326d06[_0xdcca('0x41')][_0xdcca('0x4d')]+'%'};return _0x494246;}})});}_0xb525be=_['merge']({},_0xb525be,_0x326d06['options']);var _0x5ca8c7={'where':_0xb525be[_0xdcca('0x4b')]};return db[_0xdcca('0x3b')][_0xdcca('0x2c')](_0x5ca8c7)[_0xdcca('0x1b')](function(_0x113a99){_0x158514[_0xdcca('0x2c')]=_0x113a99;if(_0x326d06[_0xdcca('0x41')]['includeAll']){_0xb525be[_0xdcca('0x4f')]=[{'all':!![]}];}return db[_0xdcca('0x3b')][_0xdcca('0x50')](_0xb525be);})[_0xdcca('0x1b')](function(_0xac8d02){_0x158514[_0xdcca('0x51')]=_0xac8d02;return _0x158514;})['then'](respondWithFilteredResult(_0x55d0e9,_0xb525be))[_0xdcca('0x52')](handleError(_0x55d0e9,null));};exports[_0xdcca('0x53')]=function(_0x4002f5,_0x32b444){var _0x16ee4e={'raw':![],'where':{'id':_0x4002f5[_0xdcca('0x54')]['id']}},_0x687668={};_0x687668[_0xdcca('0x40')]=_[_0xdcca('0x55')](db[_0xdcca('0x3b')][_0xdcca('0x3c')]);_0x687668[_0xdcca('0x41')]=_[_0xdcca('0x55')](_0x4002f5['query']);_0x687668[_0xdcca('0x42')]=_[_0xdcca('0x43')](_0x687668[_0xdcca('0x40')],_0x687668[_0xdcca('0x41')]);_0x16ee4e[_0xdcca('0x44')]=_[_0xdcca('0x43')](_0x687668[_0xdcca('0x40')],qs[_0xdcca('0x45')](_0x4002f5[_0xdcca('0x41')][_0xdcca('0x45')]));_0x16ee4e[_0xdcca('0x44')]=_0x16ee4e[_0xdcca('0x44')]['length']?_0x16ee4e['attributes']:_0x687668['model'];if(_0x4002f5[_0xdcca('0x41')][_0xdcca('0x56')]){_0x16ee4e[_0xdcca('0x4f')]=[{'all':!![]}];}_0x16ee4e=_[_0xdcca('0x4e')]({},_0x16ee4e,_0x4002f5[_0xdcca('0x57')]);return db['VoiceContext'][_0xdcca('0x58')](_0x16ee4e)[_0xdcca('0x1b')](handleEntityNotFound(_0x32b444,null))[_0xdcca('0x1b')](respondWithResult(_0x32b444,null))[_0xdcca('0x52')](handleError(_0x32b444,null));};exports['create']=function(_0x5ec256,_0x44b744,_0x3f29c9){var _0xc7e765;return db[_0xdcca('0x3b')][_0xdcca('0x59')](_0x5ec256[_0xdcca('0x5a')],{'raw':!![]})['then'](function(_0xd0e659){_0xc7e765=_0xd0e659;return db['VoiceContext']['findAll']({'raw':!![]});})[_0xdcca('0x1b')](function(_0x5bc4f0){var _0xe355b2=fs[_0xdcca('0x5b')](path[_0xdcca('0x5c')](config['root'],'server/files/templates/context.ejs'),_0xdcca('0x5d'));var _0xd1e69f=ejs['render'](_0xe355b2,{'contexts':_0x5bc4f0||[]});fs[_0xdcca('0x5e')](_0xdcca('0x5f'),_0xd1e69f);})['then'](function(){return respondWithRpcPromise('Reload',_0xdcca('0x59'),{'module':'chan_sip.so'});})[_0xdcca('0x1b')](function(){var _0x54eb34=_0x5ec256['user'][_0xdcca('0x32')]({'plain':!![]});if(!_0x54eb34)throw new Error(_0xdcca('0x60'));if(_0x54eb34[_0xdcca('0x61')]===_0xdcca('0x62')){var _0x52e34c=_0xc7e765['get']({'plain':!![]});return db[_0xdcca('0x63')][_0xdcca('0x58')]({'where':{'name':_0xdcca('0x33'),'userProfileId':_0x54eb34[_0xdcca('0x64')]},'raw':!![]})[_0xdcca('0x1b')](function(_0x498e6b){if(_0x498e6b&&_0x498e6b['autoAssociation']===0x0){return db['UserProfileResource'][_0xdcca('0x59')]({'name':_0x52e34c[_0xdcca('0x37')],'resourceId':_0x52e34c['id'],'type':_0x498e6b['name'],'sectionId':_0x498e6b['id']},{})[_0xdcca('0x1b')](function(){return _0xc7e765;});}else{return _0xc7e765;}})[_0xdcca('0x52')](function(_0x176220){logger[_0xdcca('0x21')](_0xdcca('0x65'),_0x176220);throw _0x176220;});}return _0xc7e765;})[_0xdcca('0x1b')](respondWithResult(_0x44b744,0xc9))[_0xdcca('0x52')](handleError(_0x44b744,null));};exports[_0xdcca('0x31')]=function(_0x52dd34,_0x3a2902,_0x120136){var _0x35d7f9;return db[_0xdcca('0x3b')]['find']({'where':{'id':_0x52dd34[_0xdcca('0x54')]['id']}})['then'](handleEntityNotFound(_0x3a2902,null))[_0xdcca('0x1b')](saveUpdates(_0x52dd34[_0xdcca('0x5a')],null))[_0xdcca('0x1b')](function(_0x454a51){if(_0x454a51){_0x35d7f9=_0x454a51;return db['VoiceContext'][_0xdcca('0x50')]({'raw':!![]});}})['then'](function(_0x5a9356){var _0x58ac8d=fs['readFileSync'](path[_0xdcca('0x5c')](config[_0xdcca('0x66')],_0xdcca('0x67')),_0xdcca('0x5d'));var _0x3dca06=ejs[_0xdcca('0x68')](_0x58ac8d,{'contexts':_0x5a9356||[]});fs[_0xdcca('0x5e')](_0xdcca('0x5f'),_0x3dca06);})[_0xdcca('0x1b')](function(){return respondWithRpcPromise(_0xdcca('0x69'),'update',{'module':_0xdcca('0x6a')});})[_0xdcca('0x1b')](function(){return _0x35d7f9;})['then'](respondWithResult(_0x3a2902,null))[_0xdcca('0x52')](handleError(_0x3a2902,null));};exports[_0xdcca('0x35')]=function(_0xd46164,_0x187579,_0x2370a1){var _0x286449;return db[_0xdcca('0x3b')][_0xdcca('0x58')]({'where':{'id':_0xd46164['params']['id']}})[_0xdcca('0x1b')](handleEntityNotFound(_0x187579,null))['then'](removeEntity(_0x187579,null))[_0xdcca('0x1b')](function(){return db['VoiceContext'][_0xdcca('0x50')]({'raw':!![]});})[_0xdcca('0x1b')](function(_0x18c39c){var _0x231716=fs[_0xdcca('0x5b')](path[_0xdcca('0x5c')](config[_0xdcca('0x66')],_0xdcca('0x67')),'utf8');var _0x4b4b50=ejs[_0xdcca('0x68')](_0x231716,{'contexts':_0x18c39c});fs[_0xdcca('0x5e')](_0xdcca('0x5f'),_0x4b4b50);return respondWithRpcPromise(_0xdcca('0x69'),_0xdcca('0x35'),{'module':_0xdcca('0x6a')});})[_0xdcca('0x52')](handleError(_0x187579,null));};
\ No newline at end of file
index 5dba0ed..92310cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ceb=['voice_contexts','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext'];(function(_0x48d643,_0x151855){var _0x5b07ce=function(_0x34762b){while(--_0x34762b){_0x48d643['push'](_0x48d643['shift']());}};_0x5b07ce(++_0x151855);}(_0x6ceb,0x91));var _0xb6ce=function(_0x3248fc,_0x2beea2){_0x3248fc=_0x3248fc-0x0;var _0x5ed1b9=_0x6ceb[_0x3248fc];return _0x5ed1b9;};'use strict';var _=require(_0xb6ce('0x0'));var util=require(_0xb6ce('0x1'));var logger=require(_0xb6ce('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb6ce('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb6ce('0x4'));var rimraf=require(_0xb6ce('0x5'));var config=require(_0xb6ce('0x6'));var attributes=require(_0xb6ce('0x7'));module[_0xb6ce('0x8')]=function(_0x3ab110,_0x546a63){return _0x3ab110[_0xb6ce('0x9')](_0xb6ce('0xa'),attributes,{'tableName':_0xb6ce('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a6f=['moment','bluebird','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','lodash','../../config/logger','api'];(function(_0xfe01cf,_0x34cbcd){var _0x2b5cd8=function(_0x454368){while(--_0x454368){_0xfe01cf['push'](_0xfe01cf['shift']());}};_0x2b5cd8(++_0x34cbcd);}(_0x6a6f,0x97));var _0xf6a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6a6f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf6a6('0x0'));var util=require('util');var logger=require(_0xf6a6('0x1'))(_0xf6a6('0x2'));var moment=require(_0xf6a6('0x3'));var BPromise=require(_0xf6a6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf6a6('0x5'));var attributes=require(_0xf6a6('0x6'));module[_0xf6a6('0x7')]=function(_0x14361c,_0xf00f02){return _0x14361c[_0xf6a6('0x8')](_0xf6a6('0x9'),attributes,{'tableName':_0xf6a6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8816913..d343d9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fe3=['message','result','lodash','util','randomstring','../../mysqldb','rpc','../../config/environment','client','http','request','then','info','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','VoiceContext,\x20%s,\x20%s'];(function(_0x4f8434,_0x562ed5){var _0x5bd5e4=function(_0x3adab6){while(--_0x3adab6){_0x4f8434['push'](_0x4f8434['shift']());}};_0x5bd5e4(++_0x562ed5);}(_0x2fe3,0x87));var _0x32fe=function(_0x571262,_0x5b7d11){_0x571262=_0x571262-0x0;var _0x230918=_0x2fe3[_0x571262];return _0x230918;};'use strict';var _=require(_0x32fe('0x0'));var util=require(_0x32fe('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x32fe('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x32fe('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x32fe('0x4'));var config=require(_0x32fe('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x32fe('0x6')][_0x32fe('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x314bc1,_0x23f6c0,_0x5bfbca){return new BPromise(function(_0x20171a,_0x51a26d){return client[_0x32fe('0x8')](_0x314bc1,_0x5bfbca)[_0x32fe('0x9')](function(_0x274136){logger[_0x32fe('0xa')]('VoiceContext,\x20%s,\x20%s',_0x23f6c0,'request\x20sent');logger[_0x32fe('0xb')](_0x32fe('0xc'),_0x23f6c0,_0x32fe('0xd'),JSON[_0x32fe('0xe')](_0x274136));if(_0x274136['error']){if(_0x274136[_0x32fe('0xf')]['code']===0x1f4){logger['error'](_0x32fe('0x10'),_0x23f6c0,_0x274136[_0x32fe('0xf')][_0x32fe('0x11')]);return _0x51a26d(_0x274136[_0x32fe('0xf')][_0x32fe('0x11')]);}logger[_0x32fe('0xf')](_0x32fe('0x10'),_0x23f6c0,_0x274136[_0x32fe('0xf')][_0x32fe('0x11')]);return _0x20171a(_0x274136[_0x32fe('0xf')][_0x32fe('0x11')]);}else{logger[_0x32fe('0xa')](_0x32fe('0x10'),_0x23f6c0,_0x32fe('0xd'));_0x20171a(_0x274136[_0x32fe('0x12')]['message']);}})['catch'](function(_0x1e9d18){logger[_0x32fe('0xf')]('VoiceContext,\x20%s,\x20%s',_0x23f6c0,_0x1e9d18);_0x51a26d(_0x1e9d18);});});}
\ No newline at end of file
+var _0xe6e4=['VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info'];(function(_0x3ce505,_0x4794fe){var _0x11ac3f=function(_0x421b13){while(--_0x421b13){_0x3ce505['push'](_0x3ce505['shift']());}};_0x11ac3f(++_0x4794fe);}(_0xe6e4,0xc1));var _0x4e6e=function(_0x1d7523,_0x32045c){_0x1d7523=_0x1d7523-0x0;var _0x1adb81=_0xe6e4[_0x1d7523];return _0x1adb81;};'use strict';var _=require(_0x4e6e('0x0'));var util=require(_0x4e6e('0x1'));var moment=require(_0x4e6e('0x2'));var BPromise=require(_0x4e6e('0x3'));var rs=require(_0x4e6e('0x4'));var fs=require('fs');var Redis=require(_0x4e6e('0x5'));var db=require(_0x4e6e('0x6'))['db'];var utils=require(_0x4e6e('0x7'));var logger=require(_0x4e6e('0x8'))('rpc');var config=require(_0x4e6e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4e6e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x474042,_0x491cdc,_0x19d9e9){return new BPromise(function(_0x324547,_0x35523c){return client[_0x4e6e('0xb')](_0x474042,_0x19d9e9)[_0x4e6e('0xc')](function(_0x48ac3f){logger[_0x4e6e('0xd')](_0x4e6e('0xe'),_0x491cdc,_0x4e6e('0xf'));logger[_0x4e6e('0x10')](_0x4e6e('0x11'),_0x491cdc,'request\x20sent',JSON[_0x4e6e('0x12')](_0x48ac3f));if(_0x48ac3f[_0x4e6e('0x13')]){if(_0x48ac3f['error'][_0x4e6e('0x14')]===0x1f4){logger[_0x4e6e('0x13')](_0x4e6e('0xe'),_0x491cdc,_0x48ac3f[_0x4e6e('0x13')][_0x4e6e('0x15')]);return _0x35523c(_0x48ac3f[_0x4e6e('0x13')][_0x4e6e('0x15')]);}logger['error'](_0x4e6e('0xe'),_0x491cdc,_0x48ac3f[_0x4e6e('0x13')][_0x4e6e('0x15')]);return _0x324547(_0x48ac3f[_0x4e6e('0x13')][_0x4e6e('0x15')]);}else{logger[_0x4e6e('0xd')]('VoiceContext,\x20%s,\x20%s',_0x491cdc,'request\x20sent');_0x324547(_0x48ac3f[_0x4e6e('0x16')][_0x4e6e('0x15')]);}})['catch'](function(_0x48a899){logger[_0x4e6e('0x13')](_0x4e6e('0xe'),_0x491cdc,_0x48a899);_0x35523c(_0x48a899);});});}
\ No newline at end of file
index bfa4d0b..7316a3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d6b=['../../components/auth/service','get','isAuthenticated','index','/describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x11f481,_0x50bdd5){var _0x104f3a=function(_0x55a008){while(--_0x55a008){_0x11f481['push'](_0x11f481['shift']());}};_0x104f3a(++_0x50bdd5);}(_0x5d6b,0xc1));var _0xb5d6=function(_0x4bafac,_0x4ab088){_0x4bafac=_0x4bafac-0x0;var _0x2f706b=_0x5d6b[_0x4bafac];return _0x2f706b;};'use strict';var multer=require(_0xb5d6('0x0'));var util=require(_0xb5d6('0x1'));var path=require(_0xb5d6('0x2'));var timeout=require(_0xb5d6('0x3'));var express=require(_0xb5d6('0x4'));var router=express[_0xb5d6('0x5')]();var fs_extra=require(_0xb5d6('0x6'));var auth=require(_0xb5d6('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceDialReport.controller');router[_0xb5d6('0x8')]('/',auth[_0xb5d6('0x9')](),controller[_0xb5d6('0xa')]);router[_0xb5d6('0x8')](_0xb5d6('0xb'),auth[_0xb5d6('0x9')](),controller['describe']);router['get'](_0xb5d6('0xc'),auth[_0xb5d6('0x9')](),controller[_0xb5d6('0xd')]);router[_0xb5d6('0xe')]('/',auth[_0xb5d6('0x9')](),controller[_0xb5d6('0xf')]);router[_0xb5d6('0x10')](_0xb5d6('0xc'),auth[_0xb5d6('0x9')](),controller[_0xb5d6('0x11')]);router['delete'](_0xb5d6('0xc'),auth[_0xb5d6('0x9')](),controller[_0xb5d6('0x12')]);module[_0xb5d6('0x13')]=router;
\ No newline at end of file
+var _0x3eb3=['isAuthenticated','describe','/:id','show','post','put','update','delete','exports','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','index'];(function(_0x27a3cb,_0x4af597){var _0x54ff38=function(_0x3a82d2){while(--_0x3a82d2){_0x27a3cb['push'](_0x27a3cb['shift']());}};_0x54ff38(++_0x4af597);}(_0x3eb3,0xf9));var _0x33eb=function(_0x547a62,_0x1f19f5){_0x547a62=_0x547a62-0x0;var _0x21e119=_0x3eb3[_0x547a62];return _0x21e119;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x33eb('0x0')]();var fs_extra=require('fs-extra');var auth=require(_0x33eb('0x1'));var interaction=require(_0x33eb('0x2'));var config=require(_0x33eb('0x3'));var controller=require(_0x33eb('0x4'));router[_0x33eb('0x5')]('/',auth['isAuthenticated'](),controller[_0x33eb('0x6')]);router[_0x33eb('0x5')]('/describe',auth[_0x33eb('0x7')](),controller[_0x33eb('0x8')]);router[_0x33eb('0x5')](_0x33eb('0x9'),auth['isAuthenticated'](),controller[_0x33eb('0xa')]);router[_0x33eb('0xb')]('/',auth[_0x33eb('0x7')](),controller['create']);router[_0x33eb('0xc')](_0x33eb('0x9'),auth[_0x33eb('0x7')](),controller[_0x33eb('0xd')]);router[_0x33eb('0xe')]('/:id',auth[_0x33eb('0x7')](),controller['destroy']);module[_0x33eb('0xf')]=router;
\ No newline at end of file
index 9d53a49..6fc7c27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x3085b6,_0x515fcc){var _0x5758c0=function(_0x1fa7e0){while(--_0x1fa7e0){_0x3085b6['push'](_0x3085b6['shift']());}};_0x5758c0(++_0x515fcc);}(_0x9bde,0xe1));var _0xe9bd=function(_0x2b7847,_0xe597ac){_0x2b7847=_0x2b7847-0x0;var _0x141be5=_0x9bde[_0x2b7847];return _0x141be5;};'use strict';var Sequelize=require('sequelize');module[_0xe9bd('0x0')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe9bd('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xe9bd('0x1')]},'calleridnum':{'type':Sequelize[_0xe9bd('0x1')]},'calleridname':{'type':Sequelize[_0xe9bd('0x1')]},'connectedlinenum':{'type':Sequelize[_0xe9bd('0x1')]},'connectedlinename':{'type':Sequelize[_0xe9bd('0x1')]},'language':{'type':Sequelize[_0xe9bd('0x1')]},'accountcode':{'type':Sequelize[_0xe9bd('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xe9bd('0x1')]},'priority':{'type':Sequelize[_0xe9bd('0x2')]},'uniqueid':{'type':Sequelize[_0xe9bd('0x1')]},'linkedid':{'type':Sequelize[_0xe9bd('0x1')]},'destchannel':{'type':Sequelize[_0xe9bd('0x1')]},'destchannelstate':{'type':Sequelize[_0xe9bd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xe9bd('0x1')]},'destcalleridnum':{'type':Sequelize[_0xe9bd('0x1')]},'destcalleridname':{'type':Sequelize[_0xe9bd('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xe9bd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xe9bd('0x1')]},'destcontext':{'type':Sequelize[_0xe9bd('0x1')]},'destexten':{'type':Sequelize[_0xe9bd('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0xe9bd('0x1')]},'destlinkedid':{'type':Sequelize[_0xe9bd('0x1')]},'dialstring':{'type':Sequelize[_0xe9bd('0x1')]},'dialstatus':{'type':Sequelize[_0xe9bd('0x1')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe9bd('0x3')]},'endtime':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xe9bd('0x1')],'comment':_0xe9bd('0x4')},'routeId':{'type':Sequelize[_0xe9bd('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xe9bd('0x2')]}};
\ No newline at end of file
+var _0x6aa7=['called,connect,complete','sequelize','STRING','INTEGER','DATE'];(function(_0x399f6d,_0x14e8b6){var _0x271f23=function(_0x55b768){while(--_0x55b768){_0x399f6d['push'](_0x399f6d['shift']());}};_0x271f23(++_0x14e8b6);}(_0x6aa7,0x178));var _0x76aa=function(_0x3138a9,_0x884ce4){_0x3138a9=_0x3138a9-0x0;var _0x25ef72=_0x6aa7[_0x3138a9];return _0x25ef72;};'use strict';var Sequelize=require(_0x76aa('0x0'));module['exports']={'privilege':{'type':Sequelize[_0x76aa('0x1')]},'channel':{'type':Sequelize[_0x76aa('0x1')]},'channelstate':{'type':Sequelize[_0x76aa('0x2')]},'channelstatedesc':{'type':Sequelize[_0x76aa('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x76aa('0x1')]},'connectedlinenum':{'type':Sequelize[_0x76aa('0x1')]},'connectedlinename':{'type':Sequelize[_0x76aa('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x76aa('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x76aa('0x2')]},'uniqueid':{'type':Sequelize[_0x76aa('0x1')]},'linkedid':{'type':Sequelize[_0x76aa('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x76aa('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x76aa('0x1')]},'destcalleridnum':{'type':Sequelize[_0x76aa('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x76aa('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x76aa('0x1')]},'destlanguage':{'type':Sequelize[_0x76aa('0x1')]},'destaccountcode':{'type':Sequelize[_0x76aa('0x1')]},'destcontext':{'type':Sequelize[_0x76aa('0x1')]},'destexten':{'type':Sequelize[_0x76aa('0x1')]},'destpriority':{'type':Sequelize[_0x76aa('0x2')]},'destuniqueid':{'type':Sequelize[_0x76aa('0x1')]},'destlinkedid':{'type':Sequelize[_0x76aa('0x1')]},'dialstring':{'type':Sequelize[_0x76aa('0x1')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x76aa('0x3')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x76aa('0x3')]},'lastevent':{'type':Sequelize[_0x76aa('0x1')],'comment':_0x76aa('0x4')},'routeId':{'type':Sequelize[_0x76aa('0x2')]},'duration':{'type':Sequelize[_0x76aa('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index fc1e01f..1d8ed83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x779a=['squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','reject','then','error','stack','name','send','index','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','VoiceDialReport','rows','catch','show','params','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x779a,0x161));var _0xa779=function(_0x444cfb,_0x414b9e){_0x444cfb=_0x444cfb-0x0;var _0xa61697=_0x779a[_0x444cfb];return _0xa61697;};'use strict';var emlformat=require(_0xa779('0x0'));var rimraf=require(_0xa779('0x1'));var zipdir=require(_0xa779('0x2'));var jsonpatch=require(_0xa779('0x3'));var rp=require(_0xa779('0x4'));var moment=require(_0xa779('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa779('0x6'));var path=require(_0xa779('0x7'));var sox=require(_0xa779('0x8'));var csv=require(_0xa779('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa779('0xa'));var _=require(_0xa779('0xb'));var squel=require(_0xa779('0xc'));var crypto=require('crypto');var jsforce=require(_0xa779('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa779('0x9'));var querystring=require(_0xa779('0xe'));var Papa=require(_0xa779('0xf'));var Redis=require(_0xa779('0x10'));var authService=require(_0xa779('0x11'));var qs=require(_0xa779('0x12'));var as=require(_0xa779('0x13'));var hardwareService=require(_0xa779('0x14'));var logger=require(_0xa779('0x15'))(_0xa779('0x16'));var utils=require(_0xa779('0x17'));var config=require(_0xa779('0x18'));var licenseUtil=require(_0xa779('0x19'));var db=require(_0xa779('0x1a'))['db'];function respondWithStatusCode(_0x1ef37c,_0x319ffa){_0x319ffa=_0x319ffa||0xcc;return function(_0x1016e9){if(_0x1016e9){return _0x1ef37c[_0xa779('0x1b')](_0x319ffa);}return _0x1ef37c[_0xa779('0x1c')](_0x319ffa)['end']();};}function respondWithResult(_0x48b169,_0x240e97){_0x240e97=_0x240e97||0xc8;return function(_0x524559){if(_0x524559){return _0x48b169['status'](_0x240e97)['json'](_0x524559);}};}function respondWithFilteredResult(_0x26a1af,_0x4d2aa3){return function(_0x2a86de){if(_0x2a86de){var _0x19628a=typeof _0x4d2aa3[_0xa779('0x1d')]===_0xa779('0x1e')&&typeof _0x4d2aa3[_0xa779('0x1f')]==='undefined';var _0x1a703c=_0x2a86de[_0xa779('0x20')];var _0x39d88f=_0x19628a?0x0:_0x4d2aa3[_0xa779('0x1d')];var _0x21e590=_0x19628a?_0x2a86de[_0xa779('0x20')]:_0x4d2aa3[_0xa779('0x1d')]+_0x4d2aa3['limit'];var _0x2439f5;if(_0x21e590>=_0x1a703c){_0x21e590=_0x1a703c;_0x2439f5=0xc8;}else{_0x2439f5=0xce;}_0x26a1af[_0xa779('0x1c')](_0x2439f5);return _0x26a1af[_0xa779('0x21')]('Content-Range',_0x39d88f+'-'+_0x21e590+'/'+_0x1a703c)[_0xa779('0x22')](_0x2a86de);}return null;};}function patchUpdates(_0x24f53f){return function(_0x3dc0ab){try{jsonpatch['apply'](_0x3dc0ab,_0x24f53f,!![]);}catch(_0x2e88ae){return BPromise[_0xa779('0x23')](_0x2e88ae);}return _0x3dc0ab['save']();};}function saveUpdates(_0x35960f,_0x2865b4){return function(_0x1245b8){if(_0x1245b8){return _0x1245b8['update'](_0x35960f)[_0xa779('0x24')](function(_0x4081c9){return _0x4081c9;});}return null;};}function removeEntity(_0x39d479,_0x473307){return function(_0x130d40){if(_0x130d40){return _0x130d40['destroy']()[_0xa779('0x24')](function(){_0x39d479[_0xa779('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3379f7,_0x74e6dd){return function(_0x42f8b5){if(!_0x42f8b5){_0x3379f7[_0xa779('0x1b')](0x194);}return _0x42f8b5;};}function handleError(_0x40c0f5,_0x1c5613){_0x1c5613=_0x1c5613||0x1f4;return function(_0x147dd3){logger[_0xa779('0x25')](_0x147dd3[_0xa779('0x26')]);if(_0x147dd3[_0xa779('0x27')]){delete _0x147dd3[_0xa779('0x27')];}_0x40c0f5[_0xa779('0x1c')](_0x1c5613)[_0xa779('0x28')](_0x147dd3);};}exports[_0xa779('0x29')]=function(_0x55b541,_0x37954a){var _0x2c2a20={},_0x313e55={},_0x32b99b={'count':0x0,'rows':[]};var _0x264470=_[_0xa779('0x2a')](db['VoiceDialReport'][_0xa779('0x2b')],function(_0x2e96da){return{'name':_0x2e96da['fieldName'],'type':_0x2e96da['type'][_0xa779('0x2c')]};});_0x313e55[_0xa779('0x2d')]=_[_0xa779('0x2a')](_0x264470,_0xa779('0x27'));_0x313e55['query']=_['keys'](_0x55b541[_0xa779('0x2e')]);_0x313e55[_0xa779('0x2f')]=_[_0xa779('0x30')](_0x313e55[_0xa779('0x2d')],_0x313e55[_0xa779('0x2e')]);_0x2c2a20[_0xa779('0x31')]=_[_0xa779('0x30')](_0x313e55['model'],qs[_0xa779('0x32')](_0x55b541['query'][_0xa779('0x32')]));_0x2c2a20['attributes']=_0x2c2a20[_0xa779('0x31')][_0xa779('0x33')]?_0x2c2a20['attributes']:_0x313e55[_0xa779('0x2d')];if(!_0x55b541[_0xa779('0x2e')][_0xa779('0x34')]('nolimit')){_0x2c2a20[_0xa779('0x1f')]=qs['limit'](_0x55b541['query']['limit']);_0x2c2a20[_0xa779('0x1d')]=qs[_0xa779('0x1d')](_0x55b541[_0xa779('0x2e')]['offset']);}_0x2c2a20[_0xa779('0x35')]=qs[_0xa779('0x36')](_0x55b541['query'][_0xa779('0x36')]);_0x2c2a20[_0xa779('0x37')]=qs[_0xa779('0x2f')](_[_0xa779('0x38')](_0x55b541['query'],_0x313e55[_0xa779('0x2f')]),_0x264470);if(_0x55b541['query']['filter']){_0x2c2a20[_0xa779('0x37')]=_[_0xa779('0x39')](_0x2c2a20[_0xa779('0x37')],{'$or':_[_0xa779('0x2a')](_0x264470,function(_0x418c86){if(_0x418c86[_0xa779('0x3a')]!==_0xa779('0x3b')){var _0x5a0a43={};_0x5a0a43[_0x418c86[_0xa779('0x27')]]={'$like':'%'+_0x55b541[_0xa779('0x2e')][_0xa779('0x3c')]+'%'};return _0x5a0a43;}})});}_0x2c2a20=_['merge']({},_0x2c2a20,_0x55b541['options']);var _0x23c54b={'where':_0x2c2a20['where']};return db['VoiceDialReport'][_0xa779('0x20')](_0x23c54b)[_0xa779('0x24')](function(_0x370a0f){_0x32b99b[_0xa779('0x20')]=_0x370a0f;if(_0x55b541[_0xa779('0x2e')][_0xa779('0x3d')]){_0x2c2a20['include']=[{'all':!![]}];}return db[_0xa779('0x3e')]['findAll'](_0x2c2a20);})[_0xa779('0x24')](function(_0x1dbc03){_0x32b99b[_0xa779('0x3f')]=_0x1dbc03;return _0x32b99b;})[_0xa779('0x24')](respondWithFilteredResult(_0x37954a,_0x2c2a20))[_0xa779('0x40')](handleError(_0x37954a,null));};exports[_0xa779('0x41')]=function(_0x5e1d6d,_0x5a7c69){var _0x5c1f58={'raw':!![],'where':{'id':_0x5e1d6d[_0xa779('0x42')]['id']}},_0x3531f0={};_0x3531f0[_0xa779('0x2d')]=_['keys'](db[_0xa779('0x3e')][_0xa779('0x2b')]);_0x3531f0[_0xa779('0x2e')]=_['keys'](_0x5e1d6d[_0xa779('0x2e')]);_0x3531f0[_0xa779('0x2f')]=_['intersection'](_0x3531f0[_0xa779('0x2d')],_0x3531f0[_0xa779('0x2e')]);_0x5c1f58['attributes']=_[_0xa779('0x30')](_0x3531f0[_0xa779('0x2d')],qs[_0xa779('0x32')](_0x5e1d6d[_0xa779('0x2e')][_0xa779('0x32')]));_0x5c1f58['attributes']=_0x5c1f58[_0xa779('0x31')][_0xa779('0x33')]?_0x5c1f58[_0xa779('0x31')]:_0x3531f0[_0xa779('0x2d')];if(_0x5e1d6d[_0xa779('0x2e')][_0xa779('0x3d')]){_0x5c1f58['include']=[{'all':!![]}];}_0x5c1f58=_[_0xa779('0x39')]({},_0x5c1f58,_0x5e1d6d['options']);return db[_0xa779('0x3e')][_0xa779('0x43')](_0x5c1f58)[_0xa779('0x24')](handleEntityNotFound(_0x5a7c69,null))[_0xa779('0x24')](respondWithResult(_0x5a7c69,null))[_0xa779('0x40')](handleError(_0x5a7c69,null));};exports[_0xa779('0x44')]=function(_0x5cd895,_0x285a57){return db['VoiceDialReport'][_0xa779('0x44')](_0x5cd895[_0xa779('0x45')],{})[_0xa779('0x24')](respondWithResult(_0x285a57,0xc9))[_0xa779('0x40')](handleError(_0x285a57,null));};exports[_0xa779('0x46')]=function(_0x356a7b,_0x489111){if(_0x356a7b[_0xa779('0x45')]['id']){delete _0x356a7b[_0xa779('0x45')]['id'];}return db['VoiceDialReport'][_0xa779('0x43')]({'where':{'id':_0x356a7b[_0xa779('0x42')]['id']}})['then'](handleEntityNotFound(_0x489111,null))[_0xa779('0x24')](saveUpdates(_0x356a7b['body'],null))[_0xa779('0x24')](respondWithResult(_0x489111,null))[_0xa779('0x40')](handleError(_0x489111,null));};exports[_0xa779('0x47')]=function(_0x5eac09,_0x2531f5){return db[_0xa779('0x3e')][_0xa779('0x43')]({'where':{'id':_0x5eac09[_0xa779('0x42')]['id']}})[_0xa779('0x24')](handleEntityNotFound(_0x2531f5,null))[_0xa779('0x24')](removeEntity(_0x2531f5,null))[_0xa779('0x40')](handleError(_0x2531f5,null));};exports[_0xa779('0x48')]=function(_0x3d973a,_0x2ae290){return db[_0xa779('0x3e')][_0xa779('0x48')]()[_0xa779('0x24')](respondWithResult(_0x2ae290,null))[_0xa779('0x40')](handleError(_0x2ae290,null));};
\ No newline at end of file
+var _0x460b=['key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','catch','rawAttributes','options','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','name','index','map','VoiceDialReport','type'];(function(_0x5eca50,_0xc1e3f8){var _0x41fb84=function(_0x4ce3f3){while(--_0x4ce3f3){_0x5eca50['push'](_0x5eca50['shift']());}};_0x41fb84(++_0xc1e3f8);}(_0x460b,0xab));var _0xb460=function(_0x1f4f14,_0x570d4b){_0x1f4f14=_0x1f4f14-0x0;var _0x3135b1=_0x460b[_0x1f4f14];return _0x3135b1;};'use strict';var emlformat=require(_0xb460('0x0'));var rimraf=require(_0xb460('0x1'));var zipdir=require(_0xb460('0x2'));var jsonpatch=require(_0xb460('0x3'));var rp=require('request-promise');var moment=require(_0xb460('0x4'));var BPromise=require(_0xb460('0x5'));var Mustache=require('mustache');var util=require(_0xb460('0x6'));var path=require(_0xb460('0x7'));var sox=require(_0xb460('0x8'));var csv=require(_0xb460('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb460('0xa'));var crypto=require('crypto');var jsforce=require(_0xb460('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb460('0x9'));var querystring=require('querystring');var Papa=require(_0xb460('0xc'));var Redis=require(_0xb460('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xb460('0xe'));var as=require(_0xb460('0xf'));var hardwareService=require(_0xb460('0x10'));var logger=require(_0xb460('0x11'))('api');var utils=require(_0xb460('0x12'));var config=require(_0xb460('0x13'));var licenseUtil=require(_0xb460('0x14'));var db=require(_0xb460('0x15'))['db'];function respondWithStatusCode(_0x1397cd,_0x5d485f){_0x5d485f=_0x5d485f||0xcc;return function(_0x1ba9c1){if(_0x1ba9c1){return _0x1397cd[_0xb460('0x16')](_0x5d485f);}return _0x1397cd[_0xb460('0x17')](_0x5d485f)['end']();};}function respondWithResult(_0x2bcd12,_0x119920){_0x119920=_0x119920||0xc8;return function(_0xbff476){if(_0xbff476){return _0x2bcd12[_0xb460('0x17')](_0x119920)[_0xb460('0x18')](_0xbff476);}};}function respondWithFilteredResult(_0x552834,_0x4d3dd7){return function(_0xd821ae){if(_0xd821ae){var _0x23b4c4=typeof _0x4d3dd7[_0xb460('0x19')]===_0xb460('0x1a')&&typeof _0x4d3dd7[_0xb460('0x1b')]===_0xb460('0x1a');var _0x1aecec=_0xd821ae[_0xb460('0x1c')];var _0x55d2e4=_0x23b4c4?0x0:_0x4d3dd7['offset'];var _0x282f52=_0x23b4c4?_0xd821ae['count']:_0x4d3dd7[_0xb460('0x19')]+_0x4d3dd7[_0xb460('0x1b')];var _0x2a8ed9;if(_0x282f52>=_0x1aecec){_0x282f52=_0x1aecec;_0x2a8ed9=0xc8;}else{_0x2a8ed9=0xce;}_0x552834['status'](_0x2a8ed9);return _0x552834[_0xb460('0x1d')](_0xb460('0x1e'),_0x55d2e4+'-'+_0x282f52+'/'+_0x1aecec)[_0xb460('0x18')](_0xd821ae);}return null;};}function patchUpdates(_0x1cc3ba){return function(_0x2faa9b){try{jsonpatch[_0xb460('0x1f')](_0x2faa9b,_0x1cc3ba,!![]);}catch(_0x357efd){return BPromise[_0xb460('0x20')](_0x357efd);}return _0x2faa9b['save']();};}function saveUpdates(_0x1470fc,_0x193fe8){return function(_0x498db6){if(_0x498db6){return _0x498db6[_0xb460('0x21')](_0x1470fc)[_0xb460('0x22')](function(_0x44abe4){return _0x44abe4;});}return null;};}function removeEntity(_0xe711b6,_0x4f49ee){return function(_0x5209df){if(_0x5209df){return _0x5209df['destroy']()[_0xb460('0x22')](function(){_0xe711b6[_0xb460('0x17')](0xcc)[_0xb460('0x23')]();});}};}function handleEntityNotFound(_0x13cd46,_0x1e83e0){return function(_0x36c379){if(!_0x36c379){_0x13cd46[_0xb460('0x16')](0x194);}return _0x36c379;};}function handleError(_0x4b90de,_0xf069ee){_0xf069ee=_0xf069ee||0x1f4;return function(_0x4a85ef){logger[_0xb460('0x24')](_0x4a85ef['stack']);if(_0x4a85ef[_0xb460('0x25')]){delete _0x4a85ef['name'];}_0x4b90de[_0xb460('0x17')](_0xf069ee)['send'](_0x4a85ef);};}exports[_0xb460('0x26')]=function(_0x30ea4c,_0xdc26a5){var _0x387c2b={},_0x3da0a4={},_0x398daa={'count':0x0,'rows':[]};var _0x30f2a1=_[_0xb460('0x27')](db[_0xb460('0x28')]['rawAttributes'],function(_0x1ad7f4){return{'name':_0x1ad7f4['fieldName'],'type':_0x1ad7f4[_0xb460('0x29')][_0xb460('0x2a')]};});_0x3da0a4['model']=_[_0xb460('0x27')](_0x30f2a1,_0xb460('0x25'));_0x3da0a4[_0xb460('0x2b')]=_[_0xb460('0x2c')](_0x30ea4c[_0xb460('0x2b')]);_0x3da0a4[_0xb460('0x2d')]=_['intersection'](_0x3da0a4[_0xb460('0x2e')],_0x3da0a4[_0xb460('0x2b')]);_0x387c2b[_0xb460('0x2f')]=_[_0xb460('0x30')](_0x3da0a4[_0xb460('0x2e')],qs[_0xb460('0x31')](_0x30ea4c[_0xb460('0x2b')][_0xb460('0x31')]));_0x387c2b[_0xb460('0x2f')]=_0x387c2b['attributes'][_0xb460('0x32')]?_0x387c2b['attributes']:_0x3da0a4[_0xb460('0x2e')];if(!_0x30ea4c[_0xb460('0x2b')][_0xb460('0x33')](_0xb460('0x34'))){_0x387c2b[_0xb460('0x1b')]=qs[_0xb460('0x1b')](_0x30ea4c[_0xb460('0x2b')][_0xb460('0x1b')]);_0x387c2b[_0xb460('0x19')]=qs[_0xb460('0x19')](_0x30ea4c[_0xb460('0x2b')][_0xb460('0x19')]);}_0x387c2b[_0xb460('0x35')]=qs[_0xb460('0x36')](_0x30ea4c[_0xb460('0x2b')][_0xb460('0x36')]);_0x387c2b[_0xb460('0x37')]=qs[_0xb460('0x2d')](_[_0xb460('0x38')](_0x30ea4c[_0xb460('0x2b')],_0x3da0a4[_0xb460('0x2d')]),_0x30f2a1);if(_0x30ea4c[_0xb460('0x2b')][_0xb460('0x39')]){_0x387c2b[_0xb460('0x37')]=_[_0xb460('0x3a')](_0x387c2b[_0xb460('0x37')],{'$or':_[_0xb460('0x27')](_0x30f2a1,function(_0x5cf08f){if(_0x5cf08f['type']!=='VIRTUAL'){var _0x141822={};_0x141822[_0x5cf08f[_0xb460('0x25')]]={'$like':'%'+_0x30ea4c[_0xb460('0x2b')][_0xb460('0x39')]+'%'};return _0x141822;}})});}_0x387c2b=_[_0xb460('0x3a')]({},_0x387c2b,_0x30ea4c['options']);var _0x3633f4={'where':_0x387c2b[_0xb460('0x37')]};return db[_0xb460('0x28')][_0xb460('0x1c')](_0x3633f4)[_0xb460('0x22')](function(_0x3766f1){_0x398daa[_0xb460('0x1c')]=_0x3766f1;if(_0x30ea4c[_0xb460('0x2b')][_0xb460('0x3b')]){_0x387c2b[_0xb460('0x3c')]=[{'all':!![]}];}return db[_0xb460('0x28')]['findAll'](_0x387c2b);})['then'](function(_0x227007){_0x398daa[_0xb460('0x3d')]=_0x227007;return _0x398daa;})[_0xb460('0x22')](respondWithFilteredResult(_0xdc26a5,_0x387c2b))[_0xb460('0x3e')](handleError(_0xdc26a5,null));};exports['show']=function(_0x4082a,_0x1e612f){var _0x44c6d4={'raw':!![],'where':{'id':_0x4082a['params']['id']}},_0x493d6b={};_0x493d6b[_0xb460('0x2e')]=_[_0xb460('0x2c')](db[_0xb460('0x28')][_0xb460('0x3f')]);_0x493d6b['query']=_[_0xb460('0x2c')](_0x4082a[_0xb460('0x2b')]);_0x493d6b[_0xb460('0x2d')]=_['intersection'](_0x493d6b[_0xb460('0x2e')],_0x493d6b['query']);_0x44c6d4[_0xb460('0x2f')]=_['intersection'](_0x493d6b[_0xb460('0x2e')],qs[_0xb460('0x31')](_0x4082a[_0xb460('0x2b')][_0xb460('0x31')]));_0x44c6d4[_0xb460('0x2f')]=_0x44c6d4[_0xb460('0x2f')][_0xb460('0x32')]?_0x44c6d4[_0xb460('0x2f')]:_0x493d6b['model'];if(_0x4082a['query'][_0xb460('0x3b')]){_0x44c6d4[_0xb460('0x3c')]=[{'all':!![]}];}_0x44c6d4=_[_0xb460('0x3a')]({},_0x44c6d4,_0x4082a[_0xb460('0x40')]);return db['VoiceDialReport'][_0xb460('0x41')](_0x44c6d4)[_0xb460('0x22')](handleEntityNotFound(_0x1e612f,null))[_0xb460('0x22')](respondWithResult(_0x1e612f,null))[_0xb460('0x3e')](handleError(_0x1e612f,null));};exports[_0xb460('0x42')]=function(_0x4e39cd,_0x2a3302){return db[_0xb460('0x28')][_0xb460('0x42')](_0x4e39cd[_0xb460('0x43')],{})[_0xb460('0x22')](respondWithResult(_0x2a3302,0xc9))['catch'](handleError(_0x2a3302,null));};exports[_0xb460('0x21')]=function(_0xac6311,_0x2467eb){if(_0xac6311[_0xb460('0x43')]['id']){delete _0xac6311['body']['id'];}return db[_0xb460('0x28')][_0xb460('0x41')]({'where':{'id':_0xac6311[_0xb460('0x44')]['id']}})['then'](handleEntityNotFound(_0x2467eb,null))[_0xb460('0x22')](saveUpdates(_0xac6311[_0xb460('0x43')],null))[_0xb460('0x22')](respondWithResult(_0x2467eb,null))['catch'](handleError(_0x2467eb,null));};exports[_0xb460('0x45')]=function(_0x2be2cc,_0x35b168){return db['VoiceDialReport']['find']({'where':{'id':_0x2be2cc['params']['id']}})[_0xb460('0x22')](handleEntityNotFound(_0x35b168,null))['then'](removeEntity(_0x35b168,null))[_0xb460('0x3e')](handleError(_0x35b168,null));};exports[_0xb460('0x46')]=function(_0x3650fe,_0xfa9bb2){return db[_0xb460('0x28')][_0xb460('0x46')]()[_0xb460('0x22')](respondWithResult(_0xfa9bb2,null))[_0xb460('0x3e')](handleError(_0xfa9bb2,null));};
\ No newline at end of file
index 4b12a77..ecced5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d05=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x54e663,_0x14ad06){var _0x288437=function(_0x1be42b){while(--_0x1be42b){_0x54e663['push'](_0x54e663['shift']());}};_0x288437(++_0x14ad06);}(_0x2d05,0x144));var _0x52d0=function(_0x51e1ac,_0x3234df){_0x51e1ac=_0x51e1ac-0x0;var _0x3f3377=_0x2d05[_0x51e1ac];return _0x3f3377;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x52d0('0x0'))(_0x52d0('0x1'));var moment=require(_0x52d0('0x2'));var BPromise=require(_0x52d0('0x3'));var rp=require(_0x52d0('0x4'));var fs=require('fs');var path=require(_0x52d0('0x5'));var rimraf=require(_0x52d0('0x6'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0x52d0('0x7')]=function(_0x20e4b7,_0x44d4e0){return _0x20e4b7[_0x52d0('0x8')]('VoiceDialReport',attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a2d=['api','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','../../config/logger'];(function(_0x11c3c6,_0x8b6c5f){var _0x5415de=function(_0x2f38ad){while(--_0x2f38ad){_0x11c3c6['push'](_0x11c3c6['shift']());}};_0x5415de(++_0x8b6c5f);}(_0x4a2d,0x195));var _0xd4a2=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0x4a2d[_0x2afbb0];return _0x411ff2;};'use strict';var _=require(_0xd4a2('0x0'));var util=require('util');var logger=require(_0xd4a2('0x1'))(_0xd4a2('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd4a2('0x3'));var config=require(_0xd4a2('0x4'));var attributes=require(_0xd4a2('0x5'));module[_0xd4a2('0x6')]=function(_0x47221b,_0x1e472a){return _0x47221b[_0xd4a2('0x7')](_0xd4a2('0x8'),attributes,{'tableName':_0xd4a2('0x9'),'paranoid':![],'indexes':[{'fields':[_0xd4a2('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 951f51e..4aafefa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad89=['debug','VoiceDialReport','update','raw','where','attributes','UpdateVoiceDialReport','stringify','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','error','code','VoiceDialReport,\x20%s,\x20%s','message','info','result','catch','create','options','CreateVoiceDialReport'];(function(_0x54db32,_0x3f8da4){var _0x234da5=function(_0x53a688){while(--_0x53a688){_0x54db32['push'](_0x54db32['shift']());}};_0x234da5(++_0x3f8da4);}(_0xad89,0xc2));var _0x9ad8=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xad89[_0x34bf97];return _0x292719;};'use strict';var _=require(_0x9ad8('0x0'));var util=require('util');var moment=require(_0x9ad8('0x1'));var BPromise=require(_0x9ad8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ad8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9ad8('0x4'));var logger=require(_0x9ad8('0x5'))(_0x9ad8('0x6'));var config=require(_0x9ad8('0x7'));var jayson=require(_0x9ad8('0x8'));var client=jayson[_0x9ad8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3ef878,_0x1add3b,_0x1a24b6){return new BPromise(function(_0x1550bd,_0x20593d){return client[_0x9ad8('0xa')](_0x3ef878,_0x1a24b6)[_0x9ad8('0xb')](function(_0x7d9f67){logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x1add3b,_0x9ad8('0xc'));logger['debug']('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x1add3b,_0x9ad8('0xc'),JSON['stringify'](_0x7d9f67));if(_0x7d9f67[_0x9ad8('0xd')]){if(_0x7d9f67[_0x9ad8('0xd')][_0x9ad8('0xe')]===0x1f4){logger[_0x9ad8('0xd')](_0x9ad8('0xf'),_0x1add3b,_0x7d9f67['error'][_0x9ad8('0x10')]);return _0x20593d(_0x7d9f67[_0x9ad8('0xd')][_0x9ad8('0x10')]);}logger['error'](_0x9ad8('0xf'),_0x1add3b,_0x7d9f67[_0x9ad8('0xd')][_0x9ad8('0x10')]);return _0x1550bd(_0x7d9f67['error'][_0x9ad8('0x10')]);}else{logger[_0x9ad8('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x1add3b,'request\x20sent');_0x1550bd(_0x7d9f67[_0x9ad8('0x12')][_0x9ad8('0x10')]);}})[_0x9ad8('0x13')](function(_0x13a298){logger[_0x9ad8('0xd')](_0x9ad8('0xf'),_0x1add3b,_0x13a298);_0x20593d(_0x13a298);});});}exports['CreateVoiceDialReport']=function(_0x19d27d){var _0x1f0df5=this;return new Promise(function(_0x36111a,_0x10c57f){return db['VoiceDialReport'][_0x9ad8('0x14')](_0x19d27d['body'],{'raw':_0x19d27d[_0x9ad8('0x15')]?_0x19d27d[_0x9ad8('0x15')]['raw']===undefined?!![]:![]:!![]})[_0x9ad8('0xb')](function(_0x4af659){logger[_0x9ad8('0x11')](_0x9ad8('0x16'),_0x19d27d);logger[_0x9ad8('0x17')](_0x9ad8('0x16'),_0x19d27d,JSON['stringify'](_0x4af659));_0x36111a(_0x4af659);})[_0x9ad8('0x13')](function(_0x2ff393){logger[_0x9ad8('0xd')]('CreateVoiceDialReport',_0x2ff393[_0x9ad8('0x10')],_0x19d27d);_0x10c57f(_0x1f0df5[_0x9ad8('0xd')](0x1f4,_0x2ff393[_0x9ad8('0x10')]));});});};exports['UpdateVoiceDialReport']=function(_0x574972){var _0x46086d=this;return new Promise(function(_0x294016,_0xd1b848){return db[_0x9ad8('0x18')][_0x9ad8('0x19')](_0x574972['body'],{'raw':_0x574972[_0x9ad8('0x15')]?_0x574972[_0x9ad8('0x15')][_0x9ad8('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x574972[_0x9ad8('0x15')]?_0x574972[_0x9ad8('0x15')][_0x9ad8('0x1b')]||null:null,'attributes':_0x574972[_0x9ad8('0x15')]?_0x574972[_0x9ad8('0x15')][_0x9ad8('0x1c')]||null:null,'limit':_0x574972[_0x9ad8('0x15')]?_0x574972['options']['limit']||null:null})[_0x9ad8('0xb')](function(_0x1948c7){logger[_0x9ad8('0x11')](_0x9ad8('0x1d'),_0x574972);logger[_0x9ad8('0x17')](_0x9ad8('0x1d'),_0x574972,JSON[_0x9ad8('0x1e')](_0x1948c7));_0x294016(_0x1948c7);})[_0x9ad8('0x13')](function(_0x35e339){logger[_0x9ad8('0xd')](_0x9ad8('0x1d'),_0x35e339['message'],_0x574972);_0xd1b848(_0x46086d[_0x9ad8('0xd')](0x1f4,_0x35e339[_0x9ad8('0x10')]));});});};
\ No newline at end of file
+var _0xc02a=['code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','options','UpdateVoiceDialReport','update','body','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xc02a,0xab));var _0xac02=function(_0x2e53e1,_0x12aed1){_0x2e53e1=_0x2e53e1-0x0;var _0x3a23de=_0xc02a[_0x2e53e1];return _0x3a23de;};'use strict';var _=require(_0xac02('0x0'));var util=require(_0xac02('0x1'));var moment=require(_0xac02('0x2'));var BPromise=require(_0xac02('0x3'));var rs=require(_0xac02('0x4'));var fs=require('fs');var Redis=require(_0xac02('0x5'));var db=require(_0xac02('0x6'))['db'];var utils=require(_0xac02('0x7'));var logger=require(_0xac02('0x8'))(_0xac02('0x9'));var config=require(_0xac02('0xa'));var jayson=require(_0xac02('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x303c42,_0x2c165a,_0x22cf92){return new BPromise(function(_0x3e3e91,_0x2105e6){return client[_0xac02('0xc')](_0x303c42,_0x22cf92)[_0xac02('0xd')](function(_0x51c00b){logger[_0xac02('0xe')](_0xac02('0xf'),_0x2c165a,_0xac02('0x10'));logger[_0xac02('0x11')](_0xac02('0x12'),_0x2c165a,'request\x20sent',JSON[_0xac02('0x13')](_0x51c00b));if(_0x51c00b[_0xac02('0x14')]){if(_0x51c00b[_0xac02('0x14')][_0xac02('0x15')]===0x1f4){logger[_0xac02('0x14')]('VoiceDialReport,\x20%s,\x20%s',_0x2c165a,_0x51c00b[_0xac02('0x14')][_0xac02('0x16')]);return _0x2105e6(_0x51c00b[_0xac02('0x14')][_0xac02('0x16')]);}logger[_0xac02('0x14')](_0xac02('0xf'),_0x2c165a,_0x51c00b[_0xac02('0x14')][_0xac02('0x16')]);return _0x3e3e91(_0x51c00b[_0xac02('0x14')][_0xac02('0x16')]);}else{logger[_0xac02('0xe')](_0xac02('0xf'),_0x2c165a,_0xac02('0x10'));_0x3e3e91(_0x51c00b[_0xac02('0x17')][_0xac02('0x16')]);}})[_0xac02('0x18')](function(_0x27c07d){logger[_0xac02('0x14')](_0xac02('0xf'),_0x2c165a,_0x27c07d);_0x2105e6(_0x27c07d);});});}exports[_0xac02('0x19')]=function(_0x2f9279){var _0x5616df=this;return new Promise(function(_0x36be63,_0x2127a2){return db[_0xac02('0x1a')]['create'](_0x2f9279['body'],{'raw':_0x2f9279[_0xac02('0x1b')]?_0x2f9279[_0xac02('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x110bd2){logger[_0xac02('0xe')]('CreateVoiceDialReport',_0x2f9279);logger['debug'](_0xac02('0x19'),_0x2f9279,JSON[_0xac02('0x13')](_0x110bd2));_0x36be63(_0x110bd2);})[_0xac02('0x18')](function(_0x315ff8){logger[_0xac02('0x14')](_0xac02('0x19'),_0x315ff8[_0xac02('0x16')],_0x2f9279);_0x2127a2(_0x5616df[_0xac02('0x14')](0x1f4,_0x315ff8[_0xac02('0x16')]));});});};exports[_0xac02('0x1c')]=function(_0x1c842b){var _0xbad157=this;return new Promise(function(_0x1066e5,_0x241be4){return db[_0xac02('0x1a')][_0xac02('0x1d')](_0x1c842b[_0xac02('0x1e')],{'raw':_0x1c842b[_0xac02('0x1b')]?_0x1c842b[_0xac02('0x1b')][_0xac02('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c842b['options']?_0x1c842b[_0xac02('0x1b')]['where']||null:null,'attributes':_0x1c842b[_0xac02('0x1b')]?_0x1c842b['options']['attributes']||null:null,'limit':_0x1c842b[_0xac02('0x1b')]?_0x1c842b['options']['limit']||null:null})['then'](function(_0x1d38ae){logger[_0xac02('0xe')]('UpdateVoiceDialReport',_0x1c842b);logger['debug']('UpdateVoiceDialReport',_0x1c842b,JSON['stringify'](_0x1d38ae));_0x1066e5(_0x1d38ae);})[_0xac02('0x18')](function(_0x5a7649){logger[_0xac02('0x14')](_0xac02('0x1c'),_0x5a7649[_0xac02('0x16')],_0x1c842b);_0x241be4(_0xbad157['error'](0x1f4,_0x5a7649[_0xac02('0x16')]));});});};
\ No newline at end of file
index 717d32f..8280a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0853=['/:id/applications','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','create','post'];(function(_0x5036e4,_0x34f782){var _0x151bb9=function(_0x46e904){while(--_0x46e904){_0x5036e4['push'](_0x5036e4['shift']());}};_0x151bb9(++_0x34f782);}(_0x0853,0x15b));var _0x3085=function(_0x594fc6,_0x485a6b){_0x594fc6=_0x594fc6-0x0;var _0x2c7396=_0x0853[_0x594fc6];return _0x2c7396;};'use strict';var multer=require(_0x3085('0x0'));var util=require(_0x3085('0x1'));var path=require('path');var timeout=require(_0x3085('0x2'));var express=require('express');var router=express[_0x3085('0x3')]();var fs_extra=require(_0x3085('0x4'));var auth=require(_0x3085('0x5'));var interaction=require(_0x3085('0x6'));var config=require(_0x3085('0x7'));var controller=require('./voiceExtension.controller');router[_0x3085('0x8')]('/',auth[_0x3085('0x9')](),controller['index']);router[_0x3085('0x8')](_0x3085('0xa'),auth[_0x3085('0x9')](),controller[_0x3085('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3085('0xc')]);router[_0x3085('0xd')](_0x3085('0xe'),auth[_0x3085('0x9')](),controller['addApplications']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x3085('0xf')]);router[_0x3085('0x10')](_0x3085('0xa'),auth['isAuthenticated'](),controller[_0x3085('0x11')]);module[_0x3085('0x12')]=router;
\ No newline at end of file
+var _0xb095=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','index','get','/:id','isAuthenticated','show','post','create','addApplications','put','delete','exports','multer'];(function(_0x461f4c,_0x4c293d){var _0x299260=function(_0x4c4252){while(--_0x4c4252){_0x461f4c['push'](_0x461f4c['shift']());}};_0x299260(++_0x4c293d);}(_0xb095,0x179));var _0x5b09=function(_0x2678cb,_0x1bef63){_0x2678cb=_0x2678cb-0x0;var _0x386967=_0xb095[_0x2678cb];return _0x386967;};'use strict';var multer=require(_0x5b09('0x0'));var util=require(_0x5b09('0x1'));var path=require(_0x5b09('0x2'));var timeout=require(_0x5b09('0x3'));var express=require(_0x5b09('0x4'));var router=express['Router']();var fs_extra=require(_0x5b09('0x5'));var auth=require(_0x5b09('0x6'));var interaction=require(_0x5b09('0x7'));var config=require(_0x5b09('0x8'));var controller=require(_0x5b09('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x5b09('0xa')]);router[_0x5b09('0xb')](_0x5b09('0xc'),auth[_0x5b09('0xd')](),controller[_0x5b09('0xe')]);router[_0x5b09('0xf')]('/',auth[_0x5b09('0xd')](),controller[_0x5b09('0x10')]);router[_0x5b09('0xf')]('/:id/applications',auth[_0x5b09('0xd')](),controller[_0x5b09('0x11')]);router[_0x5b09('0x12')](_0x5b09('0xc'),auth[_0x5b09('0xd')](),controller['update']);router[_0x5b09('0x13')](_0x5b09('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x5b09('0x14')]=router;
\ No newline at end of file
index fe02a78..52b342a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ad=['VIRTUAL','getDataValue','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav'];(function(_0x555d87,_0x207a9c){var _0x47a78e=function(_0x20691b){while(--_0x20691b){_0x555d87['push'](_0x555d87['shift']());}};_0x47a78e(++_0x207a9c);}(_0x81ad,0xce));var _0xd81a=function(_0x3b96cf,_0x1592f2){_0x3b96cf=_0x3b96cf-0x0;var _0x2e315a=_0x81ad[_0x3b96cf];return _0x2e315a;};'use strict';var Sequelize=require(_0xd81a('0x0'));module[_0xd81a('0x1')]={'context':{'type':Sequelize[_0xd81a('0x2')],'allowNull':![],'unique':_0xd81a('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xd81a('0x2')],'allowNull':![],'unique':_0xd81a('0x3')},'priority':{'type':Sequelize[_0xd81a('0x2')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0xd81a('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xd81a('0x2')],'allowNull':![],'defaultValue':_0xd81a('0x4')},'appdata':{'type':Sequelize[_0xd81a('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xd81a('0x5')]('inbound',_0xd81a('0x6'),'internal',_0xd81a('0x7'),_0xd81a('0x8'),_0xd81a('0x9'),_0xd81a('0xa')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xd81a('0xb')},'IntervalId':{'type':Sequelize[_0xd81a('0xc')]},'isApp':{'type':Sequelize[_0xd81a('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xd81a('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xd81a('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xd81a('0xc')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xd81a('0xe')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0xd81a('0xf')],'get':function(_0x47cc85){return this[_0xd81a('0x10')]('exten');}},'alias':{'type':Sequelize[_0xd81a('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x18ed=['outbound-fax','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','sequelize','exports','STRING','compositeIndex','NoOp','outbound','inbound-fax'];(function(_0x27d1ae,_0x2e03dd){var _0x49e658=function(_0x4361ef){while(--_0x4361ef){_0x27d1ae['push'](_0x27d1ae['shift']());}};_0x49e658(++_0x2e03dd);}(_0x18ed,0xa2));var _0xd18e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x18ed[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0xd18e('0x0'));module[_0xd18e('0x1')]={'context':{'type':Sequelize[_0xd18e('0x2')],'allowNull':![],'unique':_0xd18e('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xd18e('0x2')],'allowNull':![],'unique':_0xd18e('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0xd18e('0x3')},'tag':{'type':Sequelize[_0xd18e('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xd18e('0x2')],'allowNull':![],'defaultValue':_0xd18e('0x4')},'appdata':{'type':Sequelize[_0xd18e('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM']('inbound',_0xd18e('0x5'),'internal',_0xd18e('0x6'),_0xd18e('0x7'),'system','any'),'allowNull':![]},'description':{'type':Sequelize[_0xd18e('0x2')]},'interval':{'type':Sequelize[_0xd18e('0x2')],'allowNull':![],'defaultValue':_0xd18e('0x8')},'IntervalId':{'type':Sequelize[_0xd18e('0x9')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xd18e('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xd18e('0xa')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xd18e('0x9')]},'recordingFormat':{'type':Sequelize[_0xd18e('0x2')],'defaultValue':_0xd18e('0xb')},'answer':{'type':Sequelize[_0xd18e('0xa')],'defaultValue':!![]},'name':{'type':Sequelize[_0xd18e('0xc')],'get':function(_0x2396de){return this['getDataValue']('exten');}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index b6fcc87..eff97eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf96c=['send','index','VoiceExtension','fieldName','query','keys','intersection','attributes','model','fields','length','order','where','filters','pick','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','create','body','startsWith','exten','concat','user','get','role','InboundRoutes','internal','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','alias','addApplications','sequelize','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','stack','finally','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','end','status','json','undefined','count','offset','limit','Content-Range','destroy','inbound','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','includes','type','find','name','UserProfileResource','then','error'];(function(_0x4fe416,_0x5a310a){var _0x252725=function(_0x1d67db){while(--_0x1d67db){_0x4fe416['push'](_0x4fe416['shift']());}};_0x252725(++_0x5a310a);}(_0xf96c,0x140));var _0xcf96=function(_0x1a870f,_0x533f35){_0x1a870f=_0x1a870f-0x0;var _0x587ffb=_0xf96c[_0x1a870f];return _0x587ffb;};'use strict';var _=require(_0xcf96('0x0'));var Redis=require(_0xcf96('0x1'));var qs=require(_0xcf96('0x2'));var logger=require('../../config/logger')(_0xcf96('0x3'));var config=require(_0xcf96('0x4'));var db=require(_0xcf96('0x5'))['db'];config[_0xcf96('0x6')]=_[_0xcf96('0x7')](config[_0xcf96('0x6')],{'host':_0xcf96('0x8'),'port':0x18eb});var socket=require(_0xcf96('0x9'))(new Redis(config[_0xcf96('0x6')]));require(_0xcf96('0xa'))['register'](socket);function respondWithStatusCode(_0x547c1e,_0x1df9ed){_0x1df9ed=_0x1df9ed||0xcc;return function(_0x1da87a){if(_0x1da87a){return _0x547c1e[_0xcf96('0xb')](_0x1df9ed);}return _0x547c1e['status'](_0x1df9ed)[_0xcf96('0xc')]();};}function respondWithResult(_0x32e2dd,_0x505487){_0x505487=_0x505487||0xc8;return function(_0x4f70be){if(_0x4f70be){return _0x32e2dd[_0xcf96('0xd')](_0x505487)[_0xcf96('0xe')](_0x4f70be);}};}function respondWithFilteredResult(_0x4d04a2,_0x2d2fd1){return function(_0x10480c){if(_0x10480c){var _0x78ff55=typeof _0x2d2fd1['offset']===_0xcf96('0xf')&&typeof _0x2d2fd1['limit']==='undefined';var _0x44b391=_0x10480c[_0xcf96('0x10')];var _0x50f044=_0x78ff55?0x0:_0x2d2fd1[_0xcf96('0x11')];var _0x12cc3c=_0x78ff55?_0x10480c['count']:_0x2d2fd1[_0xcf96('0x11')]+_0x2d2fd1[_0xcf96('0x12')];var _0x28c99f;if(_0x12cc3c>=_0x44b391){_0x12cc3c=_0x44b391;_0x28c99f=0xc8;}else{_0x28c99f=0xce;}_0x4d04a2[_0xcf96('0xd')](_0x28c99f);return _0x4d04a2['set'](_0xcf96('0x13'),_0x50f044+'-'+_0x12cc3c+'/'+_0x44b391)[_0xcf96('0xe')](_0x10480c);}return null;};}function removeEntity(_0x277510){return function(_0x57fd07){if(_0x57fd07){return _0x57fd07[_0xcf96('0x14')]()['then'](function(){var _0x4576f4=_0x57fd07['get']({'plain':!![]});var _0x4cc81f=[{'name':'InboundRoutes','value':_0xcf96('0x15'),'ignore':![]},{'name':_0xcf96('0x16'),'value':_0xcf96('0x17'),'ignore':![]},{'name':_0xcf96('0x18'),'value':'internal','ignore':![]}];var _0x451da9=_(_0x4cc81f)[_0xcf96('0x19')](_0xcf96('0x1a'))[_0xcf96('0x1b')]('value')[_0xcf96('0x1c')]();if(_[_0xcf96('0x1d')](_0x451da9,_0x4576f4[_0xcf96('0x1e')])){return;}var _0x3f957a=_[_0xcf96('0x1f')](_0x4cc81f,[_0xcf96('0x1c'),_0x4576f4['type']])[_0xcf96('0x20')];return db[_0xcf96('0x21')][_0xcf96('0x14')]({'where':{'type':_0x3f957a,'resourceId':_0x4576f4['id']}})[_0xcf96('0x22')](function(){return _0x57fd07;});})[_0xcf96('0x22')](function(){_0x277510[_0xcf96('0xd')](0xcc)['end']();});}};}function handleEntityNotFound(_0x129cba){return function(_0x1bacf7){if(!_0x1bacf7){_0x129cba[_0xcf96('0xb')](0x194);}return _0x1bacf7;};}function handleError(_0x17f327,_0x49e103){_0x49e103=_0x49e103||0x1f4;return function(_0x4cf823){logger[_0xcf96('0x23')](_0x4cf823['stack']);if(_0x4cf823[_0xcf96('0x20')]){delete _0x4cf823[_0xcf96('0x20')];}_0x17f327[_0xcf96('0xd')](_0x49e103)[_0xcf96('0x24')](_0x4cf823);};}exports[_0xcf96('0x25')]=function(_0x31c14b,_0x49064d){var _0x3220a1={},_0x2a614a={},_0x3eee65={'count':0x0,'rows':[]};var _0x225351=_[_0xcf96('0x1b')](db[_0xcf96('0x26')]['rawAttributes'],function(_0xac76b7){return{'name':_0xac76b7[_0xcf96('0x27')],'type':_0xac76b7['type']['key']};});_0x2a614a['model']=_[_0xcf96('0x1b')](_0x225351,'name');_0x2a614a[_0xcf96('0x28')]=_[_0xcf96('0x29')](_0x31c14b[_0xcf96('0x28')]);_0x2a614a['filters']=_[_0xcf96('0x2a')](_0x2a614a['model'],_0x2a614a[_0xcf96('0x28')]);_0x3220a1[_0xcf96('0x2b')]=_[_0xcf96('0x2a')](_0x2a614a[_0xcf96('0x2c')],qs[_0xcf96('0x2d')](_0x31c14b[_0xcf96('0x28')]['fields']));_0x3220a1[_0xcf96('0x2b')]=_0x3220a1[_0xcf96('0x2b')][_0xcf96('0x2e')]?_0x3220a1['attributes']:_0x2a614a[_0xcf96('0x2c')];if(!_0x31c14b[_0xcf96('0x28')]['hasOwnProperty']('nolimit')){_0x3220a1[_0xcf96('0x12')]=qs[_0xcf96('0x12')](_0x31c14b[_0xcf96('0x28')][_0xcf96('0x12')]);_0x3220a1[_0xcf96('0x11')]=qs['offset'](_0x31c14b[_0xcf96('0x28')]['offset']);}_0x3220a1[_0xcf96('0x2f')]=qs['sort'](_0x31c14b[_0xcf96('0x28')]['sort']);_0x3220a1[_0xcf96('0x30')]=qs[_0xcf96('0x31')](_[_0xcf96('0x32')](_0x31c14b[_0xcf96('0x28')],_0x2a614a[_0xcf96('0x31')]),_0x225351);if(_0x31c14b[_0xcf96('0x28')]['filter']){_0x3220a1[_0xcf96('0x30')]=_[_0xcf96('0x33')](_0x3220a1['where'],{'$or':_[_0xcf96('0x1b')](_0x225351,function(_0x24ac51){if(_0x24ac51[_0xcf96('0x1e')]!==_0xcf96('0x34')){var _0x1074d9={};_0x1074d9[_0x24ac51[_0xcf96('0x20')]]={'$like':'%'+_0x31c14b[_0xcf96('0x28')][_0xcf96('0x19')]+'%'};return _0x1074d9;}})});}_0x3220a1=_[_0xcf96('0x33')]({},_0x3220a1,_0x31c14b['options']);var _0x52351a={'where':_0x3220a1[_0xcf96('0x30')]};return db['VoiceExtension'][_0xcf96('0x10')](_0x52351a)[_0xcf96('0x22')](function(_0x577750){_0x3eee65[_0xcf96('0x10')]=_0x577750;if(_0x31c14b['query'][_0xcf96('0x35')]){_0x3220a1[_0xcf96('0x36')]=[{'all':!![]}];}return db['VoiceExtension'][_0xcf96('0x37')](_0x3220a1);})[_0xcf96('0x22')](function(_0x3d0391){_0x3eee65['rows']=_0x3d0391;return _0x3eee65;})[_0xcf96('0x22')](respondWithFilteredResult(_0x49064d,_0x3220a1))[_0xcf96('0x38')](handleError(_0x49064d,null));};exports[_0xcf96('0x39')]=function(_0x253c2d,_0x55bc6b){var _0x314f84={'raw':![],'where':{'id':_0x253c2d[_0xcf96('0x3a')]['id']}},_0x103892={};_0x103892[_0xcf96('0x2c')]=_['keys'](db[_0xcf96('0x26')]['rawAttributes']);_0x103892[_0xcf96('0x28')]=_[_0xcf96('0x29')](_0x253c2d['query']);_0x103892[_0xcf96('0x31')]=_[_0xcf96('0x2a')](_0x103892['model'],_0x103892['query']);_0x314f84[_0xcf96('0x2b')]=_['intersection'](_0x103892[_0xcf96('0x2c')],qs[_0xcf96('0x2d')](_0x253c2d['query']['fields']));_0x314f84[_0xcf96('0x2b')]=_0x314f84[_0xcf96('0x2b')][_0xcf96('0x2e')]?_0x314f84['attributes']:_0x103892[_0xcf96('0x2c')];if(_0x253c2d[_0xcf96('0x28')][_0xcf96('0x35')]){_0x314f84[_0xcf96('0x36')]=[{'all':!![]}];}_0x314f84=_[_0xcf96('0x33')]({},_0x314f84,_0x253c2d[_0xcf96('0x3b')]);return db[_0xcf96('0x26')][_0xcf96('0x1f')](_0x314f84)['then'](handleEntityNotFound(_0x55bc6b,null))['then'](respondWithResult(_0x55bc6b,null))[_0xcf96('0x38')](handleError(_0x55bc6b,null));};exports[_0xcf96('0x14')]=function(_0x276ae3,_0xcb2079){return db['VoiceExtension'][_0xcf96('0x1f')]({'where':{'id':_0x276ae3[_0xcf96('0x3a')]['id']}})['then'](handleEntityNotFound(_0xcb2079,null))[_0xcf96('0x22')](removeEntity(_0xcb2079,null))[_0xcf96('0x38')](handleError(_0xcb2079,null));};exports[_0xcf96('0x3c')]=function(_0x53ae33,_0x1760a3){if(_0x53ae33[_0xcf96('0x3d')][_0xcf96('0x1e')]===_0xcf96('0x17')&&!_[_0xcf96('0x3e')](_0x53ae33[_0xcf96('0x3d')][_0xcf96('0x3f')],'_')){_0x53ae33[_0xcf96('0x3d')][_0xcf96('0x3f')]='_'[_0xcf96('0x40')](_0x53ae33[_0xcf96('0x3d')][_0xcf96('0x3f')]);}return db[_0xcf96('0x26')][_0xcf96('0x3c')](_0x53ae33[_0xcf96('0x3d')],{'raw':![]})['then'](function(_0x3207da){var _0x15fc41=_0x53ae33[_0xcf96('0x41')][_0xcf96('0x42')]({'plain':!![]});if(!_0x15fc41)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15fc41[_0xcf96('0x43')]===_0xcf96('0x41')){var _0x54957a=_0x3207da[_0xcf96('0x42')]({'plain':!![]});var _0x2c89cb=[{'name':_0xcf96('0x44'),'value':'inbound'},{'name':_0xcf96('0x16'),'value':_0xcf96('0x17')},{'name':_0xcf96('0x18'),'value':_0xcf96('0x45')}];var _0x1aba88=_[_0xcf96('0x1f')](_0x2c89cb,[_0xcf96('0x1c'),_0x54957a[_0xcf96('0x1e')]])['name'];return db[_0xcf96('0x46')]['find']({'where':{'name':_0x1aba88,'userProfileId':_0x15fc41[_0xcf96('0x47')]},'raw':!![]})[_0xcf96('0x22')](function(_0x3af6e2){if(_0x3af6e2&&_0x3af6e2[_0xcf96('0x48')]===0x0){return db[_0xcf96('0x21')]['create']({'name':_0x54957a[_0xcf96('0x20')],'resourceId':_0x54957a['id'],'type':_0x3af6e2[_0xcf96('0x20')],'sectionId':_0x3af6e2['id']},{})[_0xcf96('0x22')](function(){return _0x3207da;});}else{return _0x3207da;}})[_0xcf96('0x38')](function(_0x1f3188){logger[_0xcf96('0x23')](_0xcf96('0x49'),_0x1f3188);throw _0x1f3188;});}return _0x3207da;})[_0xcf96('0x22')](respondWithResult(_0x1760a3,0xc9))['catch'](handleError(_0x1760a3,null));};exports[_0xcf96('0x4a')]=function(_0x4882be,_0x73e6f3){if(_0x4882be[_0xcf96('0x3d')]['id']){delete _0x4882be[_0xcf96('0x3d')]['id'];}return db[_0xcf96('0x26')][_0xcf96('0x1f')]({'where':{'id':_0x4882be[_0xcf96('0x3a')]['id']}})[_0xcf96('0x22')](handleEntityNotFound(_0x73e6f3,null))[_0xcf96('0x22')](function(_0x2a1fe7){if(_0x2a1fe7){return db[_0xcf96('0x26')][_0xcf96('0x4a')](_[_0xcf96('0x32')](_0x4882be[_0xcf96('0x3d')],[_0xcf96('0x3f'),_0xcf96('0x4b'),'description','recordingFormat','cutdigits','mandatoryDisposition',_0xcf96('0x4c')]),{'where':{'context':_0x2a1fe7['context'],'exten':_0x2a1fe7['exten']},'individualHooks':!![]})[_0xcf96('0x22')](function(_0x5a318){return _0x5a318;});}return null;})[_0xcf96('0x22')](respondWithStatusCode(_0x73e6f3,null))[_0xcf96('0x38')](handleError(_0x73e6f3,null));};exports[_0xcf96('0x4d')]=function(_0x38f885,_0x4f7c46){var _0x47197f=_0x38f885[_0xcf96('0x3a')]['id'];var _0x34593a=_0x38f885[_0xcf96('0x3d')];var _0x32aa05=0xc8;var _0x183b7f=null;return db[_0xcf96('0x4e')]['transaction']({'isolationLevel':db['sequelize']['Transaction'][_0xcf96('0x4f')][_0xcf96('0x50')]},function(_0x291994){return db[_0xcf96('0x26')][_0xcf96('0x51')]({'where':{'id':_0x47197f},'transaction':_0x291994})[_0xcf96('0x22')](function(_0x319089){if(_0x319089){return db[_0xcf96('0x26')][_0xcf96('0x14')]({'where':{'VoiceExtensionId':_0x47197f},'transaction':_0x291994})[_0xcf96('0x22')](function(){var _0x49a9e8=_[_0xcf96('0x1b')](_0x34593a,function(_0x248d9a){_0x248d9a[_0xcf96('0x52')]=_0x47197f;_0x248d9a['isApp']=!![];return _0x248d9a;});return _0x319089[_0xcf96('0x53')](_0x49a9e8);})[_0xcf96('0x22')](function(_0x1c61b4){return db[_0xcf96('0x26')][_0xcf96('0x54')](_0x1c61b4,{'transaction':_0x291994});});}else{_0x32aa05=0x194;_0x183b7f=[];}});})[_0xcf96('0x22')](function(){if(_0x32aa05!==0x194){return db['VoiceExtension'][_0xcf96('0x55')]({'where':{'isApp':!![],'VoiceExtensionId':_0x47197f},'order':_0xcf96('0x56')})[_0xcf96('0x22')](function(_0x4dfed7){_0x183b7f=_0x4dfed7;});}})['catch'](function(_0x24a518){_0x32aa05=0x1f4;logger[_0xcf96('0x23')](_0x24a518[_0xcf96('0x57')]);if(_0x24a518[_0xcf96('0x20')]){delete _0x24a518[_0xcf96('0x20')];}_0x183b7f=_0x24a518;})[_0xcf96('0x58')](function(){if(_0x183b7f===null){_0x4f7c46['sendStatus'](_0x32aa05);}else{if(_0x32aa05===0x1f4){_0x4f7c46[_0xcf96('0xd')](_0x32aa05)[_0xcf96('0x24')](_0x183b7f);}else{_0x4f7c46[_0xcf96('0xd')](_0x32aa05)['json'](_0x183b7f);}}});};
\ No newline at end of file
+var _0x105d=['exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./voiceExtension.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','filter','value','type','find','name','end','sendStatus','error','stack','send','map','VoiceExtension','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','options','findAll','catch','params','rawAttributes','includeAll','include','destroy','create','body','outbound','startsWith'];(function(_0xf4772b,_0x1936a5){var _0x500857=function(_0x1492e5){while(--_0x1492e5){_0xf4772b['push'](_0xf4772b['shift']());}};_0x500857(++_0x1936a5);}(_0x105d,0x136));var _0xd105=function(_0x88f8ca,_0x1e419a){_0x88f8ca=_0x88f8ca-0x0;var _0x46f4b1=_0x105d[_0x88f8ca];return _0x46f4b1;};'use strict';var _=require(_0xd105('0x0'));var Redis=require(_0xd105('0x1'));var qs=require(_0xd105('0x2'));var logger=require(_0xd105('0x3'))(_0xd105('0x4'));var config=require(_0xd105('0x5'));var db=require(_0xd105('0x6'))['db'];config[_0xd105('0x7')]=_['defaults'](config[_0xd105('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0xd105('0x8'))(new Redis(config[_0xd105('0x7')]));require(_0xd105('0x9'))[_0xd105('0xa')](socket);function respondWithStatusCode(_0x348350,_0x69845f){_0x69845f=_0x69845f||0xcc;return function(_0x128f17){if(_0x128f17){return _0x348350['sendStatus'](_0x69845f);}return _0x348350[_0xd105('0xb')](_0x69845f)['end']();};}function respondWithResult(_0x3a14f8,_0x5439dc){_0x5439dc=_0x5439dc||0xc8;return function(_0x446d44){if(_0x446d44){return _0x3a14f8[_0xd105('0xb')](_0x5439dc)[_0xd105('0xc')](_0x446d44);}};}function respondWithFilteredResult(_0x15f0cc,_0x5f0b5c){return function(_0x23bc02){if(_0x23bc02){var _0x2aba78=typeof _0x5f0b5c[_0xd105('0xd')]===_0xd105('0xe')&&typeof _0x5f0b5c['limit']===_0xd105('0xe');var _0x50ee07=_0x23bc02['count'];var _0x2b3c8c=_0x2aba78?0x0:_0x5f0b5c[_0xd105('0xd')];var _0x53134d=_0x2aba78?_0x23bc02[_0xd105('0xf')]:_0x5f0b5c['offset']+_0x5f0b5c[_0xd105('0x10')];var _0x5802a8;if(_0x53134d>=_0x50ee07){_0x53134d=_0x50ee07;_0x5802a8=0xc8;}else{_0x5802a8=0xce;}_0x15f0cc['status'](_0x5802a8);return _0x15f0cc[_0xd105('0x11')](_0xd105('0x12'),_0x2b3c8c+'-'+_0x53134d+'/'+_0x50ee07)['json'](_0x23bc02);}return null;};}function removeEntity(_0x2812af){return function(_0x1e38bc){if(_0x1e38bc){return _0x1e38bc['destroy']()[_0xd105('0x13')](function(){var _0x4291ce=_0x1e38bc[_0xd105('0x14')]({'plain':!![]});var _0x2ad36f=[{'name':_0xd105('0x15'),'value':_0xd105('0x16'),'ignore':![]},{'name':_0xd105('0x17'),'value':'outbound','ignore':![]},{'name':_0xd105('0x18'),'value':_0xd105('0x19'),'ignore':![]}];var _0x4d856c=_(_0x2ad36f)[_0xd105('0x1a')]('ignore')['map'](_0xd105('0x1b'))[_0xd105('0x1b')]();if(_['includes'](_0x4d856c,_0x4291ce[_0xd105('0x1c')])){return;}var _0x177138=_[_0xd105('0x1d')](_0x2ad36f,[_0xd105('0x1b'),_0x4291ce[_0xd105('0x1c')]])[_0xd105('0x1e')];return db['UserProfileResource']['destroy']({'where':{'type':_0x177138,'resourceId':_0x4291ce['id']}})['then'](function(){return _0x1e38bc;});})[_0xd105('0x13')](function(){_0x2812af[_0xd105('0xb')](0xcc)[_0xd105('0x1f')]();});}};}function handleEntityNotFound(_0x540865){return function(_0xd84d8e){if(!_0xd84d8e){_0x540865[_0xd105('0x20')](0x194);}return _0xd84d8e;};}function handleError(_0x66129f,_0x5c91eb){_0x5c91eb=_0x5c91eb||0x1f4;return function(_0x665aac){logger[_0xd105('0x21')](_0x665aac[_0xd105('0x22')]);if(_0x665aac[_0xd105('0x1e')]){delete _0x665aac[_0xd105('0x1e')];}_0x66129f[_0xd105('0xb')](_0x5c91eb)[_0xd105('0x23')](_0x665aac);};}exports['index']=function(_0x14757d,_0x3b2339){var _0x42086c={},_0xfadda6={},_0x58d607={'count':0x0,'rows':[]};var _0x4d354e=_[_0xd105('0x24')](db[_0xd105('0x25')]['rawAttributes'],function(_0x5351d3){return{'name':_0x5351d3['fieldName'],'type':_0x5351d3[_0xd105('0x1c')][_0xd105('0x26')]};});_0xfadda6[_0xd105('0x27')]=_['map'](_0x4d354e,_0xd105('0x1e'));_0xfadda6['query']=_[_0xd105('0x28')](_0x14757d[_0xd105('0x29')]);_0xfadda6[_0xd105('0x2a')]=_[_0xd105('0x2b')](_0xfadda6['model'],_0xfadda6['query']);_0x42086c['attributes']=_['intersection'](_0xfadda6['model'],qs[_0xd105('0x2c')](_0x14757d[_0xd105('0x29')][_0xd105('0x2c')]));_0x42086c['attributes']=_0x42086c[_0xd105('0x2d')][_0xd105('0x2e')]?_0x42086c[_0xd105('0x2d')]:_0xfadda6[_0xd105('0x27')];if(!_0x14757d[_0xd105('0x29')][_0xd105('0x2f')](_0xd105('0x30'))){_0x42086c[_0xd105('0x10')]=qs[_0xd105('0x10')](_0x14757d['query'][_0xd105('0x10')]);_0x42086c['offset']=qs['offset'](_0x14757d['query'][_0xd105('0xd')]);}_0x42086c[_0xd105('0x31')]=qs['sort'](_0x14757d['query'][_0xd105('0x32')]);_0x42086c['where']=qs[_0xd105('0x2a')](_[_0xd105('0x33')](_0x14757d[_0xd105('0x29')],_0xfadda6[_0xd105('0x2a')]),_0x4d354e);if(_0x14757d[_0xd105('0x29')][_0xd105('0x1a')]){_0x42086c[_0xd105('0x34')]=_[_0xd105('0x35')](_0x42086c[_0xd105('0x34')],{'$or':_[_0xd105('0x24')](_0x4d354e,function(_0x137755){if(_0x137755[_0xd105('0x1c')]!=='VIRTUAL'){var _0x2fdfed={};_0x2fdfed[_0x137755[_0xd105('0x1e')]]={'$like':'%'+_0x14757d['query'][_0xd105('0x1a')]+'%'};return _0x2fdfed;}})});}_0x42086c=_[_0xd105('0x35')]({},_0x42086c,_0x14757d[_0xd105('0x36')]);var _0x2830ff={'where':_0x42086c[_0xd105('0x34')]};return db['VoiceExtension'][_0xd105('0xf')](_0x2830ff)[_0xd105('0x13')](function(_0x284023){_0x58d607[_0xd105('0xf')]=_0x284023;if(_0x14757d['query']['includeAll']){_0x42086c['include']=[{'all':!![]}];}return db[_0xd105('0x25')][_0xd105('0x37')](_0x42086c);})[_0xd105('0x13')](function(_0x20e383){_0x58d607['rows']=_0x20e383;return _0x58d607;})[_0xd105('0x13')](respondWithFilteredResult(_0x3b2339,_0x42086c))[_0xd105('0x38')](handleError(_0x3b2339,null));};exports['show']=function(_0x534982,_0x3bbdd8){var _0x449b94={'raw':![],'where':{'id':_0x534982[_0xd105('0x39')]['id']}},_0x258d25={};_0x258d25['model']=_[_0xd105('0x28')](db[_0xd105('0x25')][_0xd105('0x3a')]);_0x258d25['query']=_['keys'](_0x534982[_0xd105('0x29')]);_0x258d25[_0xd105('0x2a')]=_[_0xd105('0x2b')](_0x258d25[_0xd105('0x27')],_0x258d25[_0xd105('0x29')]);_0x449b94[_0xd105('0x2d')]=_[_0xd105('0x2b')](_0x258d25['model'],qs[_0xd105('0x2c')](_0x534982[_0xd105('0x29')][_0xd105('0x2c')]));_0x449b94[_0xd105('0x2d')]=_0x449b94[_0xd105('0x2d')][_0xd105('0x2e')]?_0x449b94[_0xd105('0x2d')]:_0x258d25[_0xd105('0x27')];if(_0x534982[_0xd105('0x29')][_0xd105('0x3b')]){_0x449b94[_0xd105('0x3c')]=[{'all':!![]}];}_0x449b94=_[_0xd105('0x35')]({},_0x449b94,_0x534982[_0xd105('0x36')]);return db[_0xd105('0x25')][_0xd105('0x1d')](_0x449b94)['then'](handleEntityNotFound(_0x3bbdd8,null))['then'](respondWithResult(_0x3bbdd8,null))[_0xd105('0x38')](handleError(_0x3bbdd8,null));};exports[_0xd105('0x3d')]=function(_0x4cd1e1,_0x136126){return db[_0xd105('0x25')][_0xd105('0x1d')]({'where':{'id':_0x4cd1e1[_0xd105('0x39')]['id']}})[_0xd105('0x13')](handleEntityNotFound(_0x136126,null))[_0xd105('0x13')](removeEntity(_0x136126,null))['catch'](handleError(_0x136126,null));};exports[_0xd105('0x3e')]=function(_0x8750a6,_0x80de74){if(_0x8750a6[_0xd105('0x3f')]['type']===_0xd105('0x40')&&!_[_0xd105('0x41')](_0x8750a6['body'][_0xd105('0x42')],'_')){_0x8750a6[_0xd105('0x3f')][_0xd105('0x42')]='_'[_0xd105('0x43')](_0x8750a6['body']['exten']);}return db[_0xd105('0x25')][_0xd105('0x3e')](_0x8750a6[_0xd105('0x3f')],{'raw':![]})[_0xd105('0x13')](function(_0x6f0149){var _0x2c046=_0x8750a6[_0xd105('0x44')][_0xd105('0x14')]({'plain':!![]});if(!_0x2c046)throw new Error(_0xd105('0x45'));if(_0x2c046[_0xd105('0x46')]===_0xd105('0x44')){var _0x55640a=_0x6f0149[_0xd105('0x14')]({'plain':!![]});var _0xd2b574=[{'name':'InboundRoutes','value':_0xd105('0x16')},{'name':_0xd105('0x17'),'value':_0xd105('0x40')},{'name':_0xd105('0x18'),'value':_0xd105('0x19')}];var _0x4f6b5f=_[_0xd105('0x1d')](_0xd2b574,['value',_0x55640a['type']])[_0xd105('0x1e')];return db[_0xd105('0x47')][_0xd105('0x1d')]({'where':{'name':_0x4f6b5f,'userProfileId':_0x2c046[_0xd105('0x48')]},'raw':!![]})[_0xd105('0x13')](function(_0x417968){if(_0x417968&&_0x417968[_0xd105('0x49')]===0x0){return db[_0xd105('0x4a')]['create']({'name':_0x55640a[_0xd105('0x1e')],'resourceId':_0x55640a['id'],'type':_0x417968['name'],'sectionId':_0x417968['id']},{})[_0xd105('0x13')](function(){return _0x6f0149;});}else{return _0x6f0149;}})['catch'](function(_0x281a26){logger[_0xd105('0x21')](_0xd105('0x4b'),_0x281a26);throw _0x281a26;});}return _0x6f0149;})['then'](respondWithResult(_0x80de74,0xc9))[_0xd105('0x38')](handleError(_0x80de74,null));};exports[_0xd105('0x4c')]=function(_0x4b7094,_0x35128f){if(_0x4b7094[_0xd105('0x3f')]['id']){delete _0x4b7094[_0xd105('0x3f')]['id'];}return db[_0xd105('0x25')][_0xd105('0x1d')]({'where':{'id':_0x4b7094['params']['id']}})[_0xd105('0x13')](handleEntityNotFound(_0x35128f,null))[_0xd105('0x13')](function(_0x561850){if(_0x561850){return db[_0xd105('0x25')]['update'](_[_0xd105('0x33')](_0x4b7094[_0xd105('0x3f')],[_0xd105('0x42'),_0xd105('0x4d'),_0xd105('0x4e'),'recordingFormat','cutdigits',_0xd105('0x4f'),_0xd105('0x50')]),{'where':{'context':_0x561850[_0xd105('0x4d')],'exten':_0x561850[_0xd105('0x42')]},'individualHooks':!![]})[_0xd105('0x13')](function(_0x5dfcca){return _0x5dfcca;});}return null;})[_0xd105('0x13')](respondWithStatusCode(_0x35128f,null))[_0xd105('0x38')](handleError(_0x35128f,null));};exports[_0xd105('0x51')]=function(_0x4a4995,_0x13ddad){var _0x2c10f8=_0x4a4995[_0xd105('0x39')]['id'];var _0x2d66e8=_0x4a4995[_0xd105('0x3f')];var _0x26acb1=0xc8;var _0x5c2238=null;return db[_0xd105('0x52')][_0xd105('0x53')]({'isolationLevel':db[_0xd105('0x52')][_0xd105('0x54')][_0xd105('0x55')][_0xd105('0x56')]},function(_0x1ee995){return db[_0xd105('0x25')][_0xd105('0x57')]({'where':{'id':_0x2c10f8},'transaction':_0x1ee995})['then'](function(_0x475fc6){if(_0x475fc6){return db[_0xd105('0x25')][_0xd105('0x3d')]({'where':{'VoiceExtensionId':_0x2c10f8},'transaction':_0x1ee995})['then'](function(){var _0x8ab336=_['map'](_0x2d66e8,function(_0x36e844){_0x36e844[_0xd105('0x58')]=_0x2c10f8;_0x36e844[_0xd105('0x59')]=!![];return _0x36e844;});return _0x475fc6['createRouting'](_0x8ab336);})['then'](function(_0xde57d5){return db[_0xd105('0x25')][_0xd105('0x5a')](_0xde57d5,{'transaction':_0x1ee995});});}else{_0x26acb1=0x194;_0x5c2238=[];}});})[_0xd105('0x13')](function(){if(_0x26acb1!==0x194){return db['VoiceExtension'][_0xd105('0x5b')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2c10f8},'order':_0xd105('0x5c')})[_0xd105('0x13')](function(_0x426871){_0x5c2238=_0x426871;});}})[_0xd105('0x38')](function(_0x2bc379){_0x26acb1=0x1f4;logger[_0xd105('0x21')](_0x2bc379['stack']);if(_0x2bc379['name']){delete _0x2bc379[_0xd105('0x1e')];}_0x5c2238=_0x2bc379;})[_0xd105('0x5d')](function(){if(_0x5c2238===null){_0x13ddad['sendStatus'](_0x26acb1);}else{if(_0x26acb1===0x1f4){_0x13ddad['status'](_0x26acb1)[_0xd105('0x23')](_0x5c2238);}else{_0x13ddad[_0xd105('0xb')](_0x26acb1)['json'](_0x5c2238);}}});};
\ No newline at end of file
index 3fbb2cd..9673325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58cf=['hook','exports','events','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x421a32,_0x12ed63){var _0x206738=function(_0x284ea6){while(--_0x284ea6){_0x421a32['push'](_0x421a32['shift']());}};_0x206738(++_0x12ed63);}(_0x58cf,0x192));var _0xf58c=function(_0x471448,_0x1c0e9e){_0x471448=_0x471448-0x0;var _0x38190b=_0x58cf[_0x471448];return _0x38190b;};'use strict';var EventEmitter=require(_0xf58c('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0xf58c('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xf58c('0x2')](0x0);var events={'afterCreate':_0xf58c('0x3'),'afterUpdate':_0xf58c('0x4'),'afterDestroy':_0xf58c('0x5')};function emitEvent(_0x371561){return function(_0x17b3b7,_0x13a718,_0x240acd){VoiceExtensionEvents[_0xf58c('0x6')](_0x371561+':'+_0x17b3b7['id'],_0x17b3b7);VoiceExtensionEvents['emit'](_0x371561,_0x17b3b7);_0x240acd(null);};}for(var e in events){if(events[_0xf58c('0x7')](e)){var event=events[e];VoiceExtension[_0xf58c('0x8')](e,emitEvent(event));}}module[_0xf58c('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x9f05=['hook','exports','events','VoiceExtension','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x409106,_0x22e9a0){var _0x62019b=function(_0x582747){while(--_0x582747){_0x409106['push'](_0x409106['shift']());}};_0x62019b(++_0x22e9a0);}(_0x9f05,0x14c));var _0x59f0=function(_0x515c69,_0x2ee801){_0x515c69=_0x515c69-0x0;var _0x5e7919=_0x9f05[_0x515c69];return _0x5e7919;};'use strict';var EventEmitter=require(_0x59f0('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x59f0('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x59f0('0x2')](0x0);var events={'afterCreate':_0x59f0('0x3'),'afterUpdate':_0x59f0('0x4'),'afterDestroy':_0x59f0('0x5')};function emitEvent(_0x15cbaa){return function(_0x4bc64e,_0xe5ce46,_0x575c7a){VoiceExtensionEvents[_0x59f0('0x6')](_0x15cbaa+':'+_0x4bc64e['id'],_0x4bc64e);VoiceExtensionEvents['emit'](_0x15cbaa,_0x4bc64e);_0x575c7a(null);};}for(var e in events){if(events[_0x59f0('0x7')](e)){var event=events[e];VoiceExtension[_0x59f0('0x8')](e,emitEvent(event));}}module[_0x59f0('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
index 56062fd..bb346af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fa6=['cutdigits','${EXTEN:','${EXTEN}','CDR(routeid)=','ExecIf','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_FORMAT=','trunk','timeout','options','url','split','length','name','phone','param','prefix','SIP','join','U(xcally-mixmonitor-context)','isEmpty','Interval','interval','then','intervals','IntervalId','map','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','playback','includes','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','outboundDial','appdata','last','priority','catch','define','VoiceExtension','concat','Hangup','lodash','./voiceExtension.attributes','exports','models','CDR(type)=','context','exten','type','alias','Set','NoOp','CDR(routeAlias)=','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','No\x20alias\x20set','CDR(destination)='];(function(_0x379d88,_0x1d118f){var _0x35d316=function(_0x356155){while(--_0x356155){_0x379d88['push'](_0x379d88['shift']());}};_0x35d316(++_0x1d118f);}(_0x8fa6,0x1c0));var _0x68fa=function(_0x34a54e,_0x32ed01){_0x34a54e=_0x34a54e-0x0;var _0x3b1aee=_0x8fa6[_0x34a54e];return _0x3b1aee;};'use strict';var _=require(_0x68fa('0x0'));var attributes=require(_0x68fa('0x1'));module[_0x68fa('0x2')]=function(_0x55876d){var _0x2b4fd0=_0x55876d[_0x68fa('0x3')];function _0x38e9d9(_0x42aec9){var _0x54705b=0x2;var _0x1fd915=[{'type':_0x42aec9['type'],'app':'Set','appdata':_0x68fa('0x4')+_0x42aec9['type'],'context':_0x42aec9[_0x68fa('0x5')],'exten':_0x42aec9[_0x68fa('0x6')],'priority':_0x54705b++,'VoiceExtensionId':_0x42aec9['id']},{'type':_0x42aec9[_0x68fa('0x7')],'app':_0x42aec9[_0x68fa('0x8')]?_0x68fa('0x9'):_0x68fa('0xa'),'appdata':_0x42aec9['alias']?_0x68fa('0xb')+_0x42aec9[_0x68fa('0x8')]:'No\x20alias\x20set','context':_0x42aec9[_0x68fa('0x5')],'exten':_0x42aec9[_0x68fa('0x6')],'priority':_0x54705b++,'VoiceExtensionId':_0x42aec9['id']}];if(_0x42aec9[_0x68fa('0x7')]===_0x68fa('0xc')){_0x1fd915['push']({'type':'inbound','app':_0x68fa('0x9'),'appdata':'CDR(routeid)='+_0x42aec9['id'],'context':_0x42aec9['context'],'exten':_0x42aec9['exten'],'priority':_0x54705b++,'VoiceExtensionId':_0x42aec9['id']});}_0x1fd915[_0x68fa('0xd')]({'type':_0x42aec9[_0x68fa('0x7')],'app':_0x68fa('0x9'),'appdata':_0x68fa('0xe'),'context':_0x42aec9[_0x68fa('0x5')],'exten':_0x42aec9[_0x68fa('0x6')],'priority':_0x54705b++,'VoiceExtensionId':_0x42aec9['id']},{'type':_0x42aec9[_0x68fa('0x7')],'app':'Set','appdata':_0x68fa('0xf'),'context':_0x42aec9['context'],'exten':_0x42aec9[_0x68fa('0x6')],'priority':_0x54705b++,'VoiceExtensionId':_0x42aec9['id']},{'type':_0x42aec9[_0x68fa('0x7')],'app':_0x68fa('0x9'),'appdata':'MONITOR_OPTIONS=ab','context':_0x42aec9[_0x68fa('0x5')],'exten':_0x42aec9[_0x68fa('0x6')],'priority':_0x54705b++,'VoiceExtensionId':_0x42aec9['id']});return _0x1fd915;}function _0x55b7f5(_0x59e9b2){var _0x5a9ef5=0x2;var _0x58071b=[{'type':_0x68fa('0x10'),'app':_0x68fa('0x9'),'appdata':_0x68fa('0x11'),'context':_0x59e9b2['context'],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':_0x68fa('0x10'),'app':_0x59e9b2[_0x68fa('0x8')]?_0x68fa('0x9'):_0x68fa('0xa'),'appdata':_0x59e9b2[_0x68fa('0x8')]?_0x68fa('0xb')+_0x59e9b2[_0x68fa('0x8')]:_0x68fa('0x12'),'context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2['exten'],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':_0x68fa('0x10'),'app':_0x68fa('0x9'),'appdata':_0x68fa('0x13')+(_0x59e9b2[_0x68fa('0x14')]?_0x68fa('0x15')+_0x59e9b2['cutdigits']+'}':_0x68fa('0x16')),'context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2['exten'],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':'outbound','app':'Set','appdata':_0x68fa('0x17')+_0x59e9b2['id'],'context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':'outbound','app':_0x68fa('0x18'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x5a9ef5+0x2)+'):Goto('+(_0x5a9ef5+0x1)+')','context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':_0x68fa('0x10'),'app':'Set','appdata':_0x59e9b2[_0x68fa('0x14')]?_0x68fa('0x19')+_0x59e9b2['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':'outbound','app':_0x68fa('0x9'),'appdata':_0x68fa('0xe'),'context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':'outbound','app':_0x68fa('0x9'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x59e9b2['context'],'exten':_0x59e9b2['exten'],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':_0x68fa('0x10'),'app':_0x68fa('0x9'),'appdata':'MONITOR_OPTIONS=ab','context':_0x59e9b2['context'],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':'outbound','app':_0x68fa('0x9'),'appdata':_0x68fa('0x1a')+_0x59e9b2['id'],'context':_0x59e9b2['context'],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']}];if(_0x59e9b2[_0x68fa('0x1b')](_0x68fa('0x1c'))&&_0x59e9b2['recordingFormat']!==_0x68fa('0x1d')){_0x58071b['push']({'type':_0x68fa('0x10'),'app':_0x68fa('0x9'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x59e9b2[_0x68fa('0x5')],'exten':_0x59e9b2[_0x68fa('0x6')],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']},{'type':_0x68fa('0x10'),'app':_0x68fa('0x9'),'appdata':_0x68fa('0x1e')+_0x59e9b2[_0x68fa('0x1c')]||'wav','context':_0x59e9b2['context'],'exten':_0x59e9b2['exten'],'priority':_0x5a9ef5++,'VoiceExtensionId':_0x59e9b2['id']});}return _0x58071b;}function _0x2e9dd1(_0x49e846,_0x2b6b5f){var _0x2c4eb8=[{'name':_0x68fa('0x1f'),'param':0x0},{'name':_0x68fa('0x20'),'param':0x1},{'name':_0x68fa('0x21'),'param':0x2},{'name':_0x68fa('0x22'),'param':0x3}];var _0x43e70e={};var _0x1a0e7e=_0x2b6b5f[_0x68fa('0x23')](',');var _0x5ae807=[];for(var _0x4fa0e9=0x0;_0x4fa0e9<_0x2c4eb8[_0x68fa('0x24')];_0x4fa0e9++){switch(_0x2c4eb8[_0x4fa0e9][_0x68fa('0x25')]){case _0x68fa('0x1f'):_0x43e70e['trunk']=_0x1a0e7e[_0x2c4eb8[_0x4fa0e9]['param']][_0x68fa('0x23')]('/')[0x1];_0x43e70e[_0x68fa('0x26')]=_0x1a0e7e[_0x2c4eb8[_0x4fa0e9][_0x68fa('0x27')]][_0x68fa('0x23')]('/')[0x2];_0x43e70e[_0x68fa('0x28')]=_0x43e70e[_0x68fa('0x26')]?_0x43e70e[_0x68fa('0x26')][_0x68fa('0x23')]('$')[0x0]:undefined;_0x43e70e['phone']=_0x49e846[_0x68fa('0x14')]?(_0x43e70e[_0x68fa('0x28')]||'')+'${EXTEN:'+_0x49e846[_0x68fa('0x14')]+'}':(_0x43e70e[_0x68fa('0x28')]||'')+_0x68fa('0x16');_0x5ae807[_0x2c4eb8[_0x4fa0e9]['param']]=[_0x68fa('0x29'),_0x43e70e['trunk'],_0x43e70e[_0x68fa('0x26')]][_0x68fa('0x2a')]('/');break;case _0x68fa('0x21'):_0x43e70e['options']=_0x1a0e7e[_0x2c4eb8[_0x4fa0e9][_0x68fa('0x27')]];if(_0x49e846[_0x68fa('0x1c')]!=='none'){if(_0x43e70e[_0x68fa('0x21')]['indexOf'](_0x68fa('0x2b'))<0x0){_0x43e70e[_0x68fa('0x21')]+='U(xcally-mixmonitor-context)';}}else{_0x43e70e[_0x68fa('0x21')]=_0x43e70e[_0x68fa('0x21')]['replace'](_0x68fa('0x2b'),'');}_0x5ae807[_0x2c4eb8[_0x4fa0e9][_0x68fa('0x27')]]=_0x43e70e[_0x68fa('0x21')];break;default:_0x5ae807[_0x2c4eb8[_0x4fa0e9]['param']]=_0x1a0e7e[_0x2c4eb8[_0x4fa0e9]['param']];}}return _0x5ae807['join'](',');}function _0x2eef9c(_0x63e0d7,_0x3b46a1,_0x341346){return new Promise(function(_0x391f9d,_0x15743e){var _0x225c29=[];if(_[_0x68fa('0x2c')](_0x3b46a1))return _0x391f9d(_0x225c29);_0x2b4fd0[_0x68fa('0x2d')]['findAll']({'attributes':['id',_0x68fa('0x2e'),'IntervalId'],'raw':!![]})[_0x68fa('0x2f')](function(_0x19bf4d){for(var _0x5c1e35=0x0,_0x4c4b27=0x0;_0x5c1e35<_0x3b46a1[_0x68fa('0x24')];_0x5c1e35++,_0x4c4b27=0x0){var _0x27179e=_0x3b46a1[_0x5c1e35];var _0xdf5178=[];var _0x4a9be6=[];delete _0x27179e['id'];if(_0x27179e[_0x68fa('0x2e')]!=='*,*,*,*'){_0x27179e[_0x68fa('0x30')]=[_0x27179e[_0x68fa('0x2e')]];}else{_0x27179e[_0x68fa('0x30')]=_0x27179e[_0x68fa('0x31')]?_[_0x68fa('0x32')](_['filter'](_0x19bf4d,{'IntervalId':_0x27179e[_0x68fa('0x31')]}),'interval'):[];}_0x27179e['context']=_0x63e0d7[_0x68fa('0x5')];_0x27179e['exten']=_0x63e0d7[_0x68fa('0x6')];if(_0x27179e[_0x68fa('0x7')])_0x27179e[_0x68fa('0x7')]=_0x27179e[_0x68fa('0x7')][_0x68fa('0x33')]();if(_0x63e0d7[_0x68fa('0x7')]===_0x68fa('0x10')){if(_0x27179e['hasOwnProperty'](_0x68fa('0x34'))&&_0x27179e[_0x68fa('0x34')]&&_0x27179e[_0x68fa('0x34')]!=='--'){_0xdf5178[_0x68fa('0xd')]({'type':_0x27179e['type'][_0x68fa('0x33')](),'app':_0x68fa('0x9'),'appdata':_0x68fa('0x35')+_0x27179e[_0x68fa('0x34')],'context':_0x63e0d7[_0x68fa('0x5')],'exten':_0x63e0d7['exten'],'priority':_0x27179e['intervals'][_0x68fa('0x24')]+_0x341346+_0x4c4b27++,'VoiceExtensionId':_0x63e0d7['id']});}_0xdf5178[_0x68fa('0xd')]({'type':_0x27179e[_0x68fa('0x7')]['toLowerCase'](),'app':_0x68fa('0x18'),'appdata':_0x68fa('0x36')+(_0x27179e[_0x68fa('0x37')]?_0x68fa('0x38')+_0x27179e['callerID']+')':'NoOp(No\x20number\x20available)'),'context':_0x63e0d7['context'],'exten':_0x63e0d7[_0x68fa('0x6')],'priority':_0x27179e['intervals'][_0x68fa('0x24')]+_0x341346+_0x4c4b27++,'VoiceExtensionId':_0x63e0d7['id']});}else{if(_0x27179e['hasOwnProperty'](_0x68fa('0x39'))){if([_0x68fa('0x3a'),_0x68fa('0x3b')][_0x68fa('0x3c')](_0x27179e['app']['toLowerCase']())&&_0x27179e[_0x68fa('0x3d')]!==_0x68fa('0x3e')){if(_0x27179e[_0x68fa('0x39')]){_0xdf5178[_0x68fa('0xd')]({'type':_0x27179e[_0x68fa('0x7')][_0x68fa('0x33')](),'app':_0x68fa('0x18'),'appdata':_0x68fa('0x3f'),'context':_0x63e0d7[_0x68fa('0x5')],'exten':_0x63e0d7[_0x68fa('0x6')],'priority':_0x27179e['intervals'][_0x68fa('0x24')]+_0x341346+_0x4c4b27++,'VoiceExtensionId':_0x63e0d7['id']});_0xdf5178[_0x68fa('0xd')]({'type':_0x27179e[_0x68fa('0x7')][_0x68fa('0x33')](),'app':'Set','appdata':_0x68fa('0x40'),'context':_0x63e0d7['context'],'exten':_0x63e0d7['exten'],'priority':_0x27179e[_0x68fa('0x30')][_0x68fa('0x24')]+_0x341346+_0x4c4b27++,'VoiceExtensionId':_0x63e0d7['id']});}else{_0xdf5178['push']({'type':_0x27179e[_0x68fa('0x7')]['toLowerCase'](),'app':_0x68fa('0x18'),'appdata':_0x68fa('0x41'),'context':_0x63e0d7['context'],'exten':_0x63e0d7['exten'],'priority':_0x27179e[_0x68fa('0x30')][_0x68fa('0x24')]+_0x341346+_0x4c4b27++,'VoiceExtensionId':_0x63e0d7['id']});_0xdf5178[_0x68fa('0xd')]({'type':_0x27179e[_0x68fa('0x7')][_0x68fa('0x33')](),'app':'Set','appdata':_0x68fa('0x42'),'context':_0x63e0d7['context'],'exten':_0x63e0d7[_0x68fa('0x6')],'priority':_0x27179e['intervals'][_0x68fa('0x24')]+_0x341346+_0x4c4b27++,'VoiceExtensionId':_0x63e0d7['id']});}}}}for(var _0x341245=0x0;_0x341245<_0x27179e['intervals']['length'];_0x341245++){var _0x1fb06f=_0x341346+_0x27179e['intervals'][_0x68fa('0x24')];var _0x11d87c=_0x341245===_0x27179e[_0x68fa('0x30')][_0x68fa('0x24')]-0x1?_0x341346+_0xdf5178['length']+_0x4a9be6[_0x68fa('0x24')]+0x2:_0x341346+_0x341245+0x1;_0xdf5178[_0x68fa('0x43')](_0x341245,0x0,{'type':_0x63e0d7[_0x68fa('0x7')],'app':'GotoIfTime','appdata':_0x27179e['intervals'][_0x341245]+'?'+_0x63e0d7[_0x68fa('0x5')]+',${EXTEN},'+_0x1fb06f+':'+_0x63e0d7[_0x68fa('0x5')]+_0x68fa('0x44')+_0x11d87c,'exten':_0x63e0d7[_0x68fa('0x6')],'context':_0x63e0d7[_0x68fa('0x5')],'priority':_0x341346+_0x341245,'VoiceExtensionId':_0x63e0d7['id']});}if(_0x27179e[_0x68fa('0x3d')]===_0x68fa('0x45'))_0x27179e['appdata']=_0x2e9dd1(_0x63e0d7,_0x27179e[_0x68fa('0x46')]);_0x27179e['priority']=_0xdf5178['length']?_[_0x68fa('0x47')](_0xdf5178)[_0x68fa('0x48')]+0x1:_0x341346;_0x225c29=_['concat'](_0x225c29,_0xdf5178,[_0x27179e],_0x4a9be6);_0x341346=_[_0x68fa('0x47')](_0x225c29)[_0x68fa('0x48')]+0x1;}return _0x391f9d(_0x225c29);})[_0x68fa('0x49')](function(_0x44a424){_0x15743e(_0x44a424);});});}return _0x55876d[_0x68fa('0x4a')](_0x68fa('0x4b'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x5d466c){var _0x224be2=this['get']({'plain':!![]});var _0x9062e6=_0x224be2[_0x68fa('0x7')]==='outbound'?_0x55b7f5(_0x224be2):_0x38e9d9(_0x224be2);return _0x2eef9c(_0x224be2,_0x5d466c,_['last'](_0x9062e6)[_0x68fa('0x48')]+0x1)[_0x68fa('0x2f')](function(_0x529914){var _0x3bece5=_[_0x68fa('0x4c')](_0x9062e6,_0x529914);_0x3bece5[_0x68fa('0xd')]({'type':_0x224be2[_0x68fa('0x7')],'app':_0x68fa('0x4d'),'exten':_0x224be2['exten'],'context':_0x224be2['context'],'priority':_[_0x68fa('0x47')](_0x3bece5)['priority']+0x1,'VoiceExtensionId':_0x224be2['id']});return _0x3bece5;});}}});};
\ No newline at end of file
+var _0x097c=['ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','options','url','split','length','name','trunk','param','phone','prefix','SIP','indexOf','U(xcally-mixmonitor-context)','join','Interval','findAll','IntervalId','then','interval','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','NoOp(No\x20number\x20available)','answer','queue','playback','includes','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice',',${EXTEN},','outboundDial','appdata','last','priority','concat','catch','define','VoiceExtension','voice_extensions','get','lodash','./voiceExtension.attributes','exports','models','Set','CDR(type)=','type','context','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','exten','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}'];(function(_0x10004e,_0xd701e6){var _0x5af990=function(_0x4bab6a){while(--_0x4bab6a){_0x10004e['push'](_0x10004e['shift']());}};_0x5af990(++_0xd701e6);}(_0x097c,0x1d5));var _0xc097=function(_0x266c36,_0xca9730){_0x266c36=_0x266c36-0x0;var _0x2448c7=_0x097c[_0x266c36];return _0x2448c7;};'use strict';var _=require(_0xc097('0x0'));var attributes=require(_0xc097('0x1'));module[_0xc097('0x2')]=function(_0x4b26f6){var _0x1eb862=_0x4b26f6[_0xc097('0x3')];function _0x23e66a(_0x1b9efd){var _0x5aa3c1=0x2;var _0x265284=[{'type':_0x1b9efd['type'],'app':_0xc097('0x4'),'appdata':_0xc097('0x5')+_0x1b9efd[_0xc097('0x6')],'context':_0x1b9efd[_0xc097('0x7')],'exten':_0x1b9efd['exten'],'priority':_0x5aa3c1++,'VoiceExtensionId':_0x1b9efd['id']},{'type':_0x1b9efd[_0xc097('0x6')],'app':_0x1b9efd['alias']?'Set':_0xc097('0x8'),'appdata':_0x1b9efd[_0xc097('0x9')]?_0xc097('0xa')+_0x1b9efd[_0xc097('0x9')]:_0xc097('0xb'),'context':_0x1b9efd[_0xc097('0x7')],'exten':_0x1b9efd[_0xc097('0xc')],'priority':_0x5aa3c1++,'VoiceExtensionId':_0x1b9efd['id']}];if(_0x1b9efd[_0xc097('0x6')]===_0xc097('0xd')){_0x265284['push']({'type':_0xc097('0xd'),'app':_0xc097('0x4'),'appdata':'CDR(routeid)='+_0x1b9efd['id'],'context':_0x1b9efd[_0xc097('0x7')],'exten':_0x1b9efd[_0xc097('0xc')],'priority':_0x5aa3c1++,'VoiceExtensionId':_0x1b9efd['id']});}_0x265284[_0xc097('0xe')]({'type':_0x1b9efd[_0xc097('0x6')],'app':_0xc097('0x4'),'appdata':_0xc097('0xf'),'context':_0x1b9efd['context'],'exten':_0x1b9efd['exten'],'priority':_0x5aa3c1++,'VoiceExtensionId':_0x1b9efd['id']},{'type':_0x1b9efd[_0xc097('0x6')],'app':_0xc097('0x4'),'appdata':_0xc097('0x10'),'context':_0x1b9efd[_0xc097('0x7')],'exten':_0x1b9efd[_0xc097('0xc')],'priority':_0x5aa3c1++,'VoiceExtensionId':_0x1b9efd['id']},{'type':_0x1b9efd['type'],'app':_0xc097('0x4'),'appdata':'MONITOR_OPTIONS=ab','context':_0x1b9efd[_0xc097('0x7')],'exten':_0x1b9efd['exten'],'priority':_0x5aa3c1++,'VoiceExtensionId':_0x1b9efd['id']});return _0x265284;}function _0x1a2a3a(_0x25f4a7){var _0x35170e=0x2;var _0x1d8ae4=[{'type':_0xc097('0x11'),'app':'Set','appdata':_0xc097('0x12'),'context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':_0x25f4a7['alias']?_0xc097('0x4'):'NoOp','appdata':_0x25f4a7['alias']?'CDR(routeAlias)='+_0x25f4a7[_0xc097('0x9')]:'No\x20alias\x20set','context':_0x25f4a7['context'],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':_0xc097('0x4'),'appdata':_0xc097('0x13')+(_0x25f4a7[_0xc097('0x14')]?_0xc097('0x15')+_0x25f4a7[_0xc097('0x14')]+'}':_0xc097('0x16')),'context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7['exten'],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':'outbound','app':'Set','appdata':'CDR(routeid)='+_0x25f4a7['id'],'context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':_0xc097('0x17'),'appdata':_0xc097('0x18')+(_0x35170e+0x2)+_0xc097('0x19')+(_0x35170e+0x1)+')','context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':_0xc097('0x4'),'appdata':_0x25f4a7[_0xc097('0x14')]?_0xc097('0x1a')+_0x25f4a7[_0xc097('0x14')]+'}':_0xc097('0x1b'),'context':_0x25f4a7['context'],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':'Set','appdata':_0xc097('0x10'),'context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':'outbound','app':'Set','appdata':_0xc097('0x1c'),'context':_0x25f4a7['context'],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':'outbound','app':'Set','appdata':_0xc097('0x1d')+_0x25f4a7['id'],'context':_0x25f4a7['context'],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']}];if(_0x25f4a7[_0xc097('0x1e')](_0xc097('0x1f'))&&_0x25f4a7[_0xc097('0x1f')]!=='none'){_0x1d8ae4['push']({'type':_0xc097('0x11'),'app':_0xc097('0x4'),'appdata':_0xc097('0x20'),'context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']},{'type':_0xc097('0x11'),'app':'Set','appdata':_0xc097('0x21')+_0x25f4a7[_0xc097('0x1f')]||_0xc097('0x22'),'context':_0x25f4a7[_0xc097('0x7')],'exten':_0x25f4a7[_0xc097('0xc')],'priority':_0x35170e++,'VoiceExtensionId':_0x25f4a7['id']});}return _0x1d8ae4;}function _0xf13569(_0x165cca,_0x2ab647){var _0xd4fcd0=[{'name':'trunk','param':0x0},{'name':'timeout','param':0x1},{'name':_0xc097('0x23'),'param':0x2},{'name':_0xc097('0x24'),'param':0x3}];var _0x447db6={};var _0x1f2fa0=_0x2ab647[_0xc097('0x25')](',');var _0x574986=[];for(var _0x3e3cfa=0x0;_0x3e3cfa<_0xd4fcd0[_0xc097('0x26')];_0x3e3cfa++){switch(_0xd4fcd0[_0x3e3cfa][_0xc097('0x27')]){case _0xc097('0x28'):_0x447db6[_0xc097('0x28')]=_0x1f2fa0[_0xd4fcd0[_0x3e3cfa][_0xc097('0x29')]][_0xc097('0x25')]('/')[0x1];_0x447db6[_0xc097('0x2a')]=_0x1f2fa0[_0xd4fcd0[_0x3e3cfa][_0xc097('0x29')]][_0xc097('0x25')]('/')[0x2];_0x447db6['prefix']=_0x447db6['phone']?_0x447db6[_0xc097('0x2a')][_0xc097('0x25')]('$')[0x0]:undefined;_0x447db6[_0xc097('0x2a')]=_0x165cca[_0xc097('0x14')]?(_0x447db6[_0xc097('0x2b')]||'')+_0xc097('0x15')+_0x165cca[_0xc097('0x14')]+'}':(_0x447db6[_0xc097('0x2b')]||'')+'${EXTEN}';_0x574986[_0xd4fcd0[_0x3e3cfa]['param']]=[_0xc097('0x2c'),_0x447db6['trunk'],_0x447db6[_0xc097('0x2a')]]['join']('/');break;case _0xc097('0x23'):_0x447db6['options']=_0x1f2fa0[_0xd4fcd0[_0x3e3cfa]['param']];if(_0x165cca[_0xc097('0x1f')]!=='none'){if(_0x447db6[_0xc097('0x23')][_0xc097('0x2d')](_0xc097('0x2e'))<0x0){_0x447db6[_0xc097('0x23')]+='U(xcally-mixmonitor-context)';}}else{_0x447db6[_0xc097('0x23')]=_0x447db6[_0xc097('0x23')]['replace']('U(xcally-mixmonitor-context)','');}_0x574986[_0xd4fcd0[_0x3e3cfa]['param']]=_0x447db6[_0xc097('0x23')];break;default:_0x574986[_0xd4fcd0[_0x3e3cfa][_0xc097('0x29')]]=_0x1f2fa0[_0xd4fcd0[_0x3e3cfa]['param']];}}return _0x574986[_0xc097('0x2f')](',');}function _0x1d1c5b(_0x436f88,_0x2d260b,_0x607f30){return new Promise(function(_0x3bfdc5,_0x126ef1){var _0x5da400=[];if(_['isEmpty'](_0x2d260b))return _0x3bfdc5(_0x5da400);_0x1eb862[_0xc097('0x30')][_0xc097('0x31')]({'attributes':['id','interval',_0xc097('0x32')],'raw':!![]})[_0xc097('0x33')](function(_0x311942){for(var _0x50ef71=0x0,_0x161207=0x0;_0x50ef71<_0x2d260b['length'];_0x50ef71++,_0x161207=0x0){var _0x14ef9b=_0x2d260b[_0x50ef71];var _0x51d80f=[];var _0x3c31d6=[];delete _0x14ef9b['id'];if(_0x14ef9b[_0xc097('0x34')]!=='*,*,*,*'){_0x14ef9b['intervals']=[_0x14ef9b[_0xc097('0x34')]];}else{_0x14ef9b[_0xc097('0x35')]=_0x14ef9b[_0xc097('0x32')]?_[_0xc097('0x36')](_[_0xc097('0x37')](_0x311942,{'IntervalId':_0x14ef9b[_0xc097('0x32')]}),_0xc097('0x34')):[];}_0x14ef9b['context']=_0x436f88[_0xc097('0x7')];_0x14ef9b[_0xc097('0xc')]=_0x436f88[_0xc097('0xc')];if(_0x14ef9b[_0xc097('0x6')])_0x14ef9b[_0xc097('0x6')]=_0x14ef9b[_0xc097('0x6')][_0xc097('0x38')]();if(_0x436f88[_0xc097('0x6')]===_0xc097('0x11')){if(_0x14ef9b[_0xc097('0x1e')]('tag')&&_0x14ef9b[_0xc097('0x39')]&&_0x14ef9b['tag']!=='--'){_0x51d80f['push']({'type':_0x14ef9b[_0xc097('0x6')][_0xc097('0x38')](),'app':_0xc097('0x4'),'appdata':_0xc097('0x3a')+_0x14ef9b[_0xc097('0x39')],'context':_0x436f88['context'],'exten':_0x436f88[_0xc097('0xc')],'priority':_0x14ef9b[_0xc097('0x35')]['length']+_0x607f30+_0x161207++,'VoiceExtensionId':_0x436f88['id']});}_0x51d80f[_0xc097('0xe')]({'type':_0x14ef9b[_0xc097('0x6')][_0xc097('0x38')](),'app':_0xc097('0x17'),'appdata':_0xc097('0x3b')+(_0x14ef9b['callerID']?'Set(CALLERID(all)='+_0x14ef9b['callerID']+')':_0xc097('0x3c')),'context':_0x436f88[_0xc097('0x7')],'exten':_0x436f88[_0xc097('0xc')],'priority':_0x14ef9b[_0xc097('0x35')]['length']+_0x607f30+_0x161207++,'VoiceExtensionId':_0x436f88['id']});}else{if(_0x14ef9b[_0xc097('0x1e')](_0xc097('0x3d'))){if([_0xc097('0x3e'),_0xc097('0x3f')][_0xc097('0x40')](_0x14ef9b['app']['toLowerCase']())&&_0x14ef9b[_0xc097('0x41')]!==_0xc097('0x42')){if(_0x14ef9b[_0xc097('0x3d')]){_0x51d80f[_0xc097('0xe')]({'type':_0x14ef9b['type'][_0xc097('0x38')](),'app':_0xc097('0x17'),'appdata':_0xc097('0x43'),'context':_0x436f88[_0xc097('0x7')],'exten':_0x436f88['exten'],'priority':_0x14ef9b[_0xc097('0x35')][_0xc097('0x26')]+_0x607f30+_0x161207++,'VoiceExtensionId':_0x436f88['id']});_0x51d80f['push']({'type':_0x14ef9b[_0xc097('0x6')]['toLowerCase'](),'app':'Set','appdata':_0xc097('0x44'),'context':_0x436f88[_0xc097('0x7')],'exten':_0x436f88['exten'],'priority':_0x14ef9b[_0xc097('0x35')][_0xc097('0x26')]+_0x607f30+_0x161207++,'VoiceExtensionId':_0x436f88['id']});}else{_0x51d80f[_0xc097('0xe')]({'type':_0x14ef9b['type'][_0xc097('0x38')](),'app':_0xc097('0x17'),'appdata':_0xc097('0x45'),'context':_0x436f88[_0xc097('0x7')],'exten':_0x436f88[_0xc097('0xc')],'priority':_0x14ef9b[_0xc097('0x35')][_0xc097('0x26')]+_0x607f30+_0x161207++,'VoiceExtensionId':_0x436f88['id']});_0x51d80f[_0xc097('0xe')]({'type':_0x14ef9b[_0xc097('0x6')][_0xc097('0x38')](),'app':_0xc097('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x436f88[_0xc097('0x7')],'exten':_0x436f88[_0xc097('0xc')],'priority':_0x14ef9b[_0xc097('0x35')][_0xc097('0x26')]+_0x607f30+_0x161207++,'VoiceExtensionId':_0x436f88['id']});}}}}for(var _0x19071c=0x0;_0x19071c<_0x14ef9b['intervals'][_0xc097('0x26')];_0x19071c++){var _0x49a9be=_0x607f30+_0x14ef9b[_0xc097('0x35')][_0xc097('0x26')];var _0x103120=_0x19071c===_0x14ef9b['intervals'][_0xc097('0x26')]-0x1?_0x607f30+_0x51d80f[_0xc097('0x26')]+_0x3c31d6[_0xc097('0x26')]+0x2:_0x607f30+_0x19071c+0x1;_0x51d80f[_0xc097('0x46')](_0x19071c,0x0,{'type':_0x436f88[_0xc097('0x6')],'app':'GotoIfTime','appdata':_0x14ef9b['intervals'][_0x19071c]+'?'+_0x436f88[_0xc097('0x7')]+_0xc097('0x47')+_0x49a9be+':'+_0x436f88[_0xc097('0x7')]+_0xc097('0x47')+_0x103120,'exten':_0x436f88[_0xc097('0xc')],'context':_0x436f88[_0xc097('0x7')],'priority':_0x607f30+_0x19071c,'VoiceExtensionId':_0x436f88['id']});}if(_0x14ef9b[_0xc097('0x41')]===_0xc097('0x48'))_0x14ef9b['appdata']=_0xf13569(_0x436f88,_0x14ef9b[_0xc097('0x49')]);_0x14ef9b['priority']=_0x51d80f[_0xc097('0x26')]?_[_0xc097('0x4a')](_0x51d80f)[_0xc097('0x4b')]+0x1:_0x607f30;_0x5da400=_[_0xc097('0x4c')](_0x5da400,_0x51d80f,[_0x14ef9b],_0x3c31d6);_0x607f30=_[_0xc097('0x4a')](_0x5da400)['priority']+0x1;}return _0x3bfdc5(_0x5da400);})[_0xc097('0x4d')](function(_0x5d48e2){_0x126ef1(_0x5d48e2);});});}return _0x4b26f6[_0xc097('0x4e')](_0xc097('0x4f'),attributes,{'tableName':_0xc097('0x50'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x5e5be4){var _0x507129=this[_0xc097('0x51')]({'plain':!![]});var _0x16e740=_0x507129[_0xc097('0x6')]===_0xc097('0x11')?_0x1a2a3a(_0x507129):_0x23e66a(_0x507129);return _0x1d1c5b(_0x507129,_0x5e5be4,_[_0xc097('0x4a')](_0x16e740)[_0xc097('0x4b')]+0x1)[_0xc097('0x33')](function(_0x1c823c){var _0x4baa41=_[_0xc097('0x4c')](_0x16e740,_0x1c823c);_0x4baa41[_0xc097('0xe')]({'type':_0x507129[_0xc097('0x6')],'app':'Hangup','exten':_0x507129[_0xc097('0xc')],'context':_0x507129['context'],'priority':_['last'](_0x4baa41)[_0xc097('0x4b')]+0x1,'VoiceExtensionId':_0x507129['id']});return _0x4baa41;});}}});};
\ No newline at end of file
index 16bedd8..1e65337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5e0=['model','GetVoiceExtension','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','then','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','catch','findAll','options','raw','where','attributes','limit','include','map'];(function(_0x54c1d1,_0x132aa1){var _0x55a06b=function(_0x1dd23e){while(--_0x1dd23e){_0x54c1d1['push'](_0x54c1d1['shift']());}};_0x55a06b(++_0x132aa1);}(_0xe5e0,0x1be));var _0x0e5e=function(_0x7244e0,_0xe4ec84){_0x7244e0=_0x7244e0-0x0;var _0x339599=_0xe5e0[_0x7244e0];return _0x339599;};'use strict';var _=require(_0x0e5e('0x0'));var util=require(_0x0e5e('0x1'));var moment=require(_0x0e5e('0x2'));var BPromise=require(_0x0e5e('0x3'));var rs=require(_0x0e5e('0x4'));var fs=require('fs');var Redis=require(_0x0e5e('0x5'));var db=require(_0x0e5e('0x6'))['db'];var utils=require(_0x0e5e('0x7'));var logger=require(_0x0e5e('0x8'))('rpc');var config=require(_0x0e5e('0x9'));var jayson=require(_0x0e5e('0xa'));var client=jayson[_0x0e5e('0xb')]['http']({'port':0x232a});config[_0x0e5e('0xc')]=_[_0x0e5e('0xd')](config[_0x0e5e('0xc')],{'host':_0x0e5e('0xe'),'port':0x18eb});var socket=require(_0x0e5e('0xf'))(new Redis(config[_0x0e5e('0xc')]));require(_0x0e5e('0x10'))['register'](socket);function respondWithRpcPromise(_0x5d5366,_0x531bf8,_0x4241ea){return new BPromise(function(_0x17a208,_0x5a88de){return client['request'](_0x5d5366,_0x4241ea)[_0x0e5e('0x11')](function(_0x3ee826){logger[_0x0e5e('0x12')](_0x0e5e('0x13'),_0x531bf8,'request\x20sent');logger[_0x0e5e('0x14')](_0x0e5e('0x15'),_0x531bf8,'request\x20sent',JSON[_0x0e5e('0x16')](_0x3ee826));if(_0x3ee826[_0x0e5e('0x17')]){if(_0x3ee826[_0x0e5e('0x17')]['code']===0x1f4){logger[_0x0e5e('0x17')](_0x0e5e('0x13'),_0x531bf8,_0x3ee826[_0x0e5e('0x17')][_0x0e5e('0x18')]);return _0x5a88de(_0x3ee826[_0x0e5e('0x17')][_0x0e5e('0x18')]);}logger['error'](_0x0e5e('0x13'),_0x531bf8,_0x3ee826[_0x0e5e('0x17')][_0x0e5e('0x18')]);return _0x17a208(_0x3ee826[_0x0e5e('0x17')][_0x0e5e('0x18')]);}else{logger['info'](_0x0e5e('0x13'),_0x531bf8,_0x0e5e('0x19'));_0x17a208(_0x3ee826['result'][_0x0e5e('0x18')]);}})[_0x0e5e('0x1a')](function(_0x56cc12){logger[_0x0e5e('0x17')](_0x0e5e('0x13'),_0x531bf8,_0x56cc12);_0x5a88de(_0x56cc12);});});}exports['GetVoiceExtension']=function(_0x422c08){var _0x485b97=this;return new Promise(function(_0x3659d9,_0x56dcc9){return db['VoiceExtension'][_0x0e5e('0x1b')]({'raw':_0x422c08[_0x0e5e('0x1c')]?_0x422c08[_0x0e5e('0x1c')][_0x0e5e('0x1d')]===undefined?!![]:![]:!![],'where':_0x422c08[_0x0e5e('0x1c')]?_0x422c08[_0x0e5e('0x1c')][_0x0e5e('0x1e')]||null:null,'attributes':_0x422c08[_0x0e5e('0x1c')]?_0x422c08[_0x0e5e('0x1c')][_0x0e5e('0x1f')]||null:null,'limit':_0x422c08['options']?_0x422c08[_0x0e5e('0x1c')][_0x0e5e('0x20')]||null:null,'include':_0x422c08[_0x0e5e('0x1c')]?_0x422c08[_0x0e5e('0x1c')][_0x0e5e('0x21')]?_[_0x0e5e('0x22')](_0x422c08[_0x0e5e('0x1c')]['include'],function(_0x1b19f0){return{'model':db[_0x1b19f0['model']],'as':_0x1b19f0['as'],'attributes':_0x1b19f0[_0x0e5e('0x1f')],'include':_0x1b19f0[_0x0e5e('0x21')]?_['map'](_0x1b19f0[_0x0e5e('0x21')],function(_0x471834){return{'model':db[_0x471834[_0x0e5e('0x23')]],'as':_0x471834['as'],'attributes':_0x471834['attributes'],'include':_0x471834[_0x0e5e('0x21')]?_['map'](_0x471834[_0x0e5e('0x21')],function(_0x2d5cc0){return{'model':db[_0x2d5cc0[_0x0e5e('0x23')]],'as':_0x2d5cc0['as'],'attributes':_0x2d5cc0['attributes']};}):[]};}):[]};}):[]:[]})[_0x0e5e('0x11')](function(_0x7a118){logger[_0x0e5e('0x12')](_0x0e5e('0x24'),_0x422c08);logger[_0x0e5e('0x14')](_0x0e5e('0x24'),_0x422c08,JSON[_0x0e5e('0x16')](_0x7a118));_0x3659d9(_0x7a118);})['catch'](function(_0x34455b){logger[_0x0e5e('0x17')](_0x0e5e('0x24'),_0x34455b[_0x0e5e('0x18')],_0x422c08);_0x56dcc9(_0x485b97['error'](0x1f4,_0x34455b['message']));});});};
\ No newline at end of file
+var _0x5e0e=['redis','defaults','socket.io-emitter','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetVoiceExtension','VoiceExtension','findAll','options','raw','attributes','limit','map','include','model','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e0e,0x89));var _0xe5e0=function(_0x3fa933,_0x190a6d){_0x3fa933=_0x3fa933-0x0;var _0x52846d=_0x5e0e[_0x3fa933];return _0x52846d;};'use strict';var _=require(_0xe5e0('0x0'));var util=require(_0xe5e0('0x1'));var moment=require('moment');var BPromise=require(_0xe5e0('0x2'));var rs=require(_0xe5e0('0x3'));var fs=require('fs');var Redis=require(_0xe5e0('0x4'));var db=require(_0xe5e0('0x5'))['db'];var utils=require(_0xe5e0('0x6'));var logger=require('../../config/logger')(_0xe5e0('0x7'));var config=require('../../config/environment');var jayson=require(_0xe5e0('0x8'));var client=jayson[_0xe5e0('0x9')][_0xe5e0('0xa')]({'port':0x232a});config[_0xe5e0('0xb')]=_[_0xe5e0('0xc')](config[_0xe5e0('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xe5e0('0xd'))(new Redis(config[_0xe5e0('0xb')]));require('./voiceExtension.socket')[_0xe5e0('0xe')](socket);function respondWithRpcPromise(_0x2c98d0,_0x189f5c,_0xea7e01){return new BPromise(function(_0x29639f,_0xa949c1){return client[_0xe5e0('0xf')](_0x2c98d0,_0xea7e01)[_0xe5e0('0x10')](function(_0x11cf09){logger[_0xe5e0('0x11')](_0xe5e0('0x12'),_0x189f5c,_0xe5e0('0x13'));logger[_0xe5e0('0x14')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x189f5c,'request\x20sent',JSON[_0xe5e0('0x15')](_0x11cf09));if(_0x11cf09[_0xe5e0('0x16')]){if(_0x11cf09[_0xe5e0('0x16')][_0xe5e0('0x17')]===0x1f4){logger['error'](_0xe5e0('0x12'),_0x189f5c,_0x11cf09[_0xe5e0('0x16')][_0xe5e0('0x18')]);return _0xa949c1(_0x11cf09[_0xe5e0('0x16')][_0xe5e0('0x18')]);}logger[_0xe5e0('0x16')](_0xe5e0('0x12'),_0x189f5c,_0x11cf09[_0xe5e0('0x16')][_0xe5e0('0x18')]);return _0x29639f(_0x11cf09['error'][_0xe5e0('0x18')]);}else{logger['info'](_0xe5e0('0x12'),_0x189f5c,'request\x20sent');_0x29639f(_0x11cf09[_0xe5e0('0x19')][_0xe5e0('0x18')]);}})['catch'](function(_0x2263a1){logger['error'](_0xe5e0('0x12'),_0x189f5c,_0x2263a1);_0xa949c1(_0x2263a1);});});}exports[_0xe5e0('0x1a')]=function(_0x3a2480){var _0x285caa=this;return new Promise(function(_0x43d79a,_0x10d6aa){return db[_0xe5e0('0x1b')][_0xe5e0('0x1c')]({'raw':_0x3a2480[_0xe5e0('0x1d')]?_0x3a2480[_0xe5e0('0x1d')][_0xe5e0('0x1e')]===undefined?!![]:![]:!![],'where':_0x3a2480[_0xe5e0('0x1d')]?_0x3a2480[_0xe5e0('0x1d')]['where']||null:null,'attributes':_0x3a2480['options']?_0x3a2480[_0xe5e0('0x1d')][_0xe5e0('0x1f')]||null:null,'limit':_0x3a2480[_0xe5e0('0x1d')]?_0x3a2480[_0xe5e0('0x1d')][_0xe5e0('0x20')]||null:null,'include':_0x3a2480[_0xe5e0('0x1d')]?_0x3a2480[_0xe5e0('0x1d')]['include']?_[_0xe5e0('0x21')](_0x3a2480['options'][_0xe5e0('0x22')],function(_0x6f21de){return{'model':db[_0x6f21de[_0xe5e0('0x23')]],'as':_0x6f21de['as'],'attributes':_0x6f21de[_0xe5e0('0x1f')],'include':_0x6f21de[_0xe5e0('0x22')]?_['map'](_0x6f21de['include'],function(_0x25fe90){return{'model':db[_0x25fe90['model']],'as':_0x25fe90['as'],'attributes':_0x25fe90[_0xe5e0('0x1f')],'include':_0x25fe90[_0xe5e0('0x22')]?_[_0xe5e0('0x21')](_0x25fe90[_0xe5e0('0x22')],function(_0x462b3b){return{'model':db[_0x462b3b[_0xe5e0('0x23')]],'as':_0x462b3b['as'],'attributes':_0x462b3b['attributes']};}):[]};}):[]};}):[]:[]})[_0xe5e0('0x10')](function(_0x57a362){logger[_0xe5e0('0x11')](_0xe5e0('0x1a'),_0x3a2480);logger[_0xe5e0('0x14')]('GetVoiceExtension',_0x3a2480,JSON[_0xe5e0('0x15')](_0x57a362));_0x43d79a(_0x57a362);})[_0xe5e0('0x24')](function(_0x3675e6){logger[_0xe5e0('0x16')](_0xe5e0('0x1a'),_0x3675e6['message'],_0x3a2480);_0x10d6aa(_0x285caa[_0xe5e0('0x16')](0x1f4,_0x3675e6[_0xe5e0('0x18')]));});});};
\ No newline at end of file
index bae6ba9..ce5846d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['save','remove','emit','removeListener','register','voiceExtension:','./voiceExtension.events'];(function(_0x2be30f,_0x51cd6c){var _0x3c92b2=function(_0x21a97f){while(--_0x21a97f){_0x2be30f['push'](_0x2be30f['shift']());}};_0x3c92b2(++_0x51cd6c);}(_0xf494,0x1c6));var _0x4f49=function(_0x51afa0,_0x40fde4){_0x51afa0=_0x51afa0-0x0;var _0x17315a=_0xf494[_0x51afa0];return _0x17315a;};'use strict';var VoiceExtensionEvents=require(_0x4f49('0x0'));var events=[_0x4f49('0x1'),_0x4f49('0x2'),'update'];function createListener(_0x3aeeb8,_0x1d54cc){return function(_0x423b25){_0x1d54cc[_0x4f49('0x3')](_0x3aeeb8,_0x423b25);};}function removeListener(_0x20c0d7,_0x2a15fb){return function(){VoiceExtensionEvents[_0x4f49('0x4')](_0x20c0d7,_0x2a15fb);};}exports[_0x4f49('0x5')]=function(_0xc5e778){for(var _0x413530=0x0,_0x42b0e8=events['length'];_0x413530<_0x42b0e8;_0x413530++){var _0x58e9a0=events[_0x413530];var _0x169c95=createListener(_0x4f49('0x6')+_0x58e9a0,_0xc5e778);VoiceExtensionEvents['on'](_0x58e9a0,_0x169c95);}};
\ No newline at end of file
+var _0x5fab=['emit','removeListener','register','length','./voiceExtension.events','save','update'];(function(_0x273e3d,_0x1e1c44){var _0x5ae6c7=function(_0x1754ac){while(--_0x1754ac){_0x273e3d['push'](_0x273e3d['shift']());}};_0x5ae6c7(++_0x1e1c44);}(_0x5fab,0x177));var _0xb5fa=function(_0x4b8968,_0x5c9b44){_0x4b8968=_0x4b8968-0x0;var _0x3a0ab7=_0x5fab[_0x4b8968];return _0x3a0ab7;};'use strict';var VoiceExtensionEvents=require(_0xb5fa('0x0'));var events=[_0xb5fa('0x1'),'remove',_0xb5fa('0x2')];function createListener(_0x2e2a50,_0x3fc227){return function(_0x316ad0){_0x3fc227[_0xb5fa('0x3')](_0x2e2a50,_0x316ad0);};}function removeListener(_0x595d8b,_0x29390a){return function(){VoiceExtensionEvents[_0xb5fa('0x4')](_0x595d8b,_0x29390a);};}exports[_0xb5fa('0x5')]=function(_0x44df89){for(var _0x4a0249=0x0,_0x5d70f6=events[_0xb5fa('0x6')];_0x4a0249<_0x5d70f6;_0x4a0249++){var _0x1aec3e=events[_0x4a0249];var _0x9c7bce=createListener('voiceExtension:'+_0x1aec3e,_0x44df89);VoiceExtensionEvents['on'](_0x1aec3e,_0x9c7bce);}};
\ No newline at end of file
index eab9017..34fedb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4137=['getMessages','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','index','/:id','isAuthenticated','/:id/messages'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x4137,0xf8));var _0x7413=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4137[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var path=require(_0x7413('0x2'));var timeout=require(_0x7413('0x3'));var express=require(_0x7413('0x4'));var router=express[_0x7413('0x5')]();var fs_extra=require(_0x7413('0x6'));var auth=require(_0x7413('0x7'));var interaction=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var controller=require(_0x7413('0xa'));router[_0x7413('0xb')]('/',auth['isAuthenticated'](),controller[_0x7413('0xc')]);router[_0x7413('0xb')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['show']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0x11')]('/',auth['isAuthenticated'](),controller[_0x7413('0x12')]);router[_0x7413('0x13')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller[_0x7413('0x14')]);router['delete'](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['destroy']);module[_0x7413('0x15')]=router;
\ No newline at end of file
+var _0x8f9d=['/:id/messages','getMessages','create','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','isAuthenticated','index','get','/:id'];(function(_0x30f07a,_0x98341){var _0xb38461=function(_0x7b287a){while(--_0x7b287a){_0x30f07a['push'](_0x30f07a['shift']());}};_0xb38461(++_0x98341);}(_0x8f9d,0x93));var _0xd8f9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x8f9d[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xd8f9('0x0'));var util=require('util');var path=require(_0xd8f9('0x1'));var timeout=require('connect-timeout');var express=require(_0xd8f9('0x2'));var router=express[_0xd8f9('0x3')]();var fs_extra=require(_0xd8f9('0x4'));var auth=require(_0xd8f9('0x5'));var interaction=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var controller=require(_0xd8f9('0x8'));router['get']('/',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xa')]);router[_0xd8f9('0xb')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller['show']);router[_0xd8f9('0xb')](_0xd8f9('0xd'),auth['isAuthenticated'](),controller[_0xd8f9('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd8f9('0xf')]);router[_0xd8f9('0x10')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller[_0xd8f9('0x11')]);router[_0xd8f9('0x12')](_0xd8f9('0xc'),auth['isAuthenticated'](),controller[_0xd8f9('0x13')]);module['exports']=router;
\ No newline at end of file
index 13ff3fb..6cadc6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b90=['TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','exports','STRING','contest_mailbox','setDataValue','email','string','trim','central','yes','ENUM'];(function(_0xe90f8e,_0x49a566){var _0x33279a=function(_0x2834f9){while(--_0x2834f9){_0xe90f8e['push'](_0xe90f8e['shift']());}};_0x33279a(++_0x49a566);}(_0x6b90,0x1e3));var _0x06b9=function(_0x42bb6d,_0x412255){_0x42bb6d=_0x42bb6d-0x0;var _0x1db89b=_0x6b90[_0x42bb6d];return _0x1db89b;};'use strict';var Sequelize=require('sequelize');module[_0x06b9('0x0')]={'customer_id':{'type':Sequelize[_0x06b9('0x1')]},'context':{'type':Sequelize[_0x06b9('0x1')],'defaultValue':'from-voicemail','unique':_0x06b9('0x2')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x06b9('0x2')},'password':{'type':Sequelize[_0x06b9('0x1')]},'fullname':{'type':Sequelize[_0x06b9('0x1')]},'email':{'type':Sequelize[_0x06b9('0x1')],'validate':{'isEmail':!![]},'set':function(_0x24a0cb){this[_0x06b9('0x3')](_0x06b9('0x4'),typeof _0x24a0cb===_0x06b9('0x5')&&_0x24a0cb['trim']()?_0x24a0cb[_0x06b9('0x6')]():null);}},'pager':{'type':Sequelize[_0x06b9('0x1')]},'tz':{'type':Sequelize[_0x06b9('0x1')],'defaultValue':_0x06b9('0x7')},'attach':{'type':Sequelize['ENUM'](_0x06b9('0x8'),'no'),'defaultValue':_0x06b9('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0x06b9('0x9')]('yes','no'),'defaultValue':_0x06b9('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x06b9('0x1')]},'callback':{'type':Sequelize[_0x06b9('0x1')]},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x06b9('0x9')](_0x06b9('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x06b9('0x9')](_0x06b9('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x06b9('0x9')](_0x06b9('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x06b9('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x06b9('0x9')](_0x06b9('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x06b9('0x9')]('yes','no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x06b9('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x06b9('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x06b9('0x8'),'no'),'defaultValue':_0x06b9('0x8'),'allowNull':![]},'stamp':{'type':_0x06b9('0xa')},'emailsubject':{'type':Sequelize[_0x06b9('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x06b9('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x06b9('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x06b9('0xc')],'get':function(){return this[_0x06b9('0xd')](_0x06b9('0xe'))+_0x06b9('0xf')+this[_0x06b9('0xd')](_0x06b9('0x10'));}}};
\ No newline at end of file
+var _0x2840=['central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','email','string','trim'];(function(_0x3203a1,_0x46c498){var _0x24215e=function(_0x4ffab0){while(--_0x4ffab0){_0x3203a1['push'](_0x3203a1['shift']());}};_0x24215e(++_0x46c498);}(_0x2840,0x7d));var _0x0284=function(_0x52ae40,_0x23c2bf){_0x52ae40=_0x52ae40-0x0;var _0xab6ed1=_0x2840[_0x52ae40];return _0xab6ed1;};'use strict';var Sequelize=require(_0x0284('0x0'));module[_0x0284('0x1')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x0284('0x2')],'defaultValue':_0x0284('0x3'),'unique':_0x0284('0x4')},'mailbox':{'type':Sequelize[_0x0284('0x2')],'defaultValue':'','allowNull':![],'unique':_0x0284('0x4')},'password':{'type':Sequelize[_0x0284('0x2')]},'fullname':{'type':Sequelize[_0x0284('0x2')]},'email':{'type':Sequelize[_0x0284('0x2')],'validate':{'isEmail':!![]},'set':function(_0x352b53){this['setDataValue'](_0x0284('0x5'),typeof _0x352b53===_0x0284('0x6')&&_0x352b53[_0x0284('0x7')]()?_0x352b53[_0x0284('0x7')]():null);}},'pager':{'type':Sequelize[_0x0284('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x0284('0x8')},'attach':{'type':Sequelize[_0x0284('0x9')]('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x0284('0x9')](_0x0284('0xa'),'no'),'defaultValue':_0x0284('0xa'),'allowNull':![]},'dialout':{'type':Sequelize[_0x0284('0x2')]},'callback':{'type':Sequelize[_0x0284('0x2')]},'review':{'type':Sequelize[_0x0284('0x9')](_0x0284('0xa'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x0284('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x0284('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x0284('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x0284('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x0284('0x9')](_0x0284('0xa'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x0284('0x9')]('yes','no'),'defaultValue':_0x0284('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x0284('0x9')](_0x0284('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x0284('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x0284('0x9')](_0x0284('0xa'),'no'),'defaultValue':_0x0284('0xa'),'allowNull':![]},'stamp':{'type':_0x0284('0xc')},'emailsubject':{'type':Sequelize[_0x0284('0x2')]},'emailbody':{'type':Sequelize[_0x0284('0x2')]},'maxsecs':{'type':Sequelize[_0x0284('0xd')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x0284('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x0284('0xe')],'get':function(){return this[_0x0284('0xf')](_0x0284('0x10'))+_0x0284('0x11')+this[_0x0284('0xf')](_0x0284('0x12'));}}};
\ No newline at end of file
index 41c5e52..f6a9a5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa902=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Voicemails','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','nolimit','where','pick','filter','merge','type','VIRTUAL','options','VoiceMail','includeAll','findAll','rows','catch','show','include','find','create','role','UserProfileSection','error','body','params','getMessages','findOne','hasOwnProperty','sort','mailbox','VoiceMailMessage','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x48e292,_0x5701b8){var _0x5cb85d=function(_0xd9c3b3){while(--_0xd9c3b3){_0x48e292['push'](_0x48e292['shift']());}};_0x5cb85d(++_0x5701b8);}(_0xa902,0x8d));var _0x2a90=function(_0x377c08,_0x4414a2){_0x377c08=_0x377c08-0x0;var _0x2be04f=_0xa902[_0x377c08];return _0x2be04f;};'use strict';var emlformat=require(_0x2a90('0x0'));var rimraf=require(_0x2a90('0x1'));var zipdir=require(_0x2a90('0x2'));var jsonpatch=require(_0x2a90('0x3'));var rp=require(_0x2a90('0x4'));var moment=require('moment');var BPromise=require(_0x2a90('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2a90('0x6'));var sox=require(_0x2a90('0x7'));var csv=require(_0x2a90('0x8'));var ejs=require(_0x2a90('0x9'));var fs=require('fs');var fs_extra=require(_0x2a90('0xa'));var _=require(_0x2a90('0xb'));var squel=require('squel');var crypto=require(_0x2a90('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2a90('0x8'));var querystring=require(_0x2a90('0xd'));var Papa=require(_0x2a90('0xe'));var Redis=require(_0x2a90('0xf'));var authService=require(_0x2a90('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2a90('0x11'));var hardwareService=require(_0x2a90('0x12'));var logger=require(_0x2a90('0x13'))(_0x2a90('0x14'));var utils=require('../../config/utils');var config=require(_0x2a90('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a90('0x16'))['db'];function respondWithStatusCode(_0x57458a,_0x1f6953){_0x1f6953=_0x1f6953||0xcc;return function(_0x57aee3){if(_0x57aee3){return _0x57458a[_0x2a90('0x17')](_0x1f6953);}return _0x57458a[_0x2a90('0x18')](_0x1f6953)[_0x2a90('0x19')]();};}function respondWithResult(_0x4c328b,_0x56d1b8){_0x56d1b8=_0x56d1b8||0xc8;return function(_0x57227c){if(_0x57227c){return _0x4c328b[_0x2a90('0x18')](_0x56d1b8)[_0x2a90('0x1a')](_0x57227c);}};}function respondWithFilteredResult(_0x5a2682,_0x1ff63d){return function(_0x21c648){if(_0x21c648){var _0x312782=typeof _0x1ff63d[_0x2a90('0x1b')]===_0x2a90('0x1c')&&typeof _0x1ff63d[_0x2a90('0x1d')]===_0x2a90('0x1c');var _0x10cf94=_0x21c648[_0x2a90('0x1e')];var _0x5c3e4b=_0x312782?0x0:_0x1ff63d[_0x2a90('0x1b')];var _0x1d9a28=_0x312782?_0x21c648[_0x2a90('0x1e')]:_0x1ff63d['offset']+_0x1ff63d[_0x2a90('0x1d')];var _0x1f51a6;if(_0x1d9a28>=_0x10cf94){_0x1d9a28=_0x10cf94;_0x1f51a6=0xc8;}else{_0x1f51a6=0xce;}_0x5a2682[_0x2a90('0x18')](_0x1f51a6);return _0x5a2682[_0x2a90('0x1f')](_0x2a90('0x20'),_0x5c3e4b+'-'+_0x1d9a28+'/'+_0x10cf94)[_0x2a90('0x1a')](_0x21c648);}return null;};}function patchUpdates(_0x312cd5){return function(_0x114d42){try{jsonpatch[_0x2a90('0x21')](_0x114d42,_0x312cd5,!![]);}catch(_0x465284){return BPromise[_0x2a90('0x22')](_0x465284);}return _0x114d42[_0x2a90('0x23')]();};}function saveUpdates(_0x4fdd62,_0x3da7d0){return function(_0x217873){if(_0x217873){return _0x217873[_0x2a90('0x24')](_0x4fdd62)[_0x2a90('0x25')](function(_0x5912fd){return _0x5912fd;});}return null;};}function removeEntity(_0x180485,_0xd033d){return function(_0x4ed9e6){if(_0x4ed9e6){return _0x4ed9e6[_0x2a90('0x26')]()[_0x2a90('0x25')](function(){var _0x10a6dd=_0x4ed9e6[_0x2a90('0x27')]({'plain':!![]});var _0x2a212c=_0x2a90('0x28');return db[_0x2a90('0x29')][_0x2a90('0x26')]({'where':{'type':_0x2a212c,'resourceId':_0x10a6dd['id']}})['then'](function(){return _0x4ed9e6;});})[_0x2a90('0x25')](function(){_0x180485[_0x2a90('0x18')](0xcc)[_0x2a90('0x19')]();});}};}function handleEntityNotFound(_0x40c61a,_0x8544e5){return function(_0x5208d8){if(!_0x5208d8){_0x40c61a['sendStatus'](0x194);}return _0x5208d8;};}function handleError(_0x293765,_0x4ed64a){_0x4ed64a=_0x4ed64a||0x1f4;return function(_0x53391e){logger['error'](_0x53391e[_0x2a90('0x2a')]);if(_0x53391e[_0x2a90('0x2b')]){delete _0x53391e['name'];}_0x293765['status'](_0x4ed64a)[_0x2a90('0x2c')](_0x53391e);};}exports['index']=function(_0x35570e,_0x6892e1){var _0x3b580f={},_0x27b6b6={},_0xf18d11={'count':0x0,'rows':[]};var _0x11586c=_[_0x2a90('0x2d')](db['VoiceMail'][_0x2a90('0x2e')],function(_0x22b1f3){return{'name':_0x22b1f3[_0x2a90('0x2f')],'type':_0x22b1f3['type'][_0x2a90('0x30')]};});_0x27b6b6[_0x2a90('0x31')]=_[_0x2a90('0x2d')](_0x11586c,_0x2a90('0x2b'));_0x27b6b6['query']=_[_0x2a90('0x32')](_0x35570e[_0x2a90('0x33')]);_0x27b6b6[_0x2a90('0x34')]=_[_0x2a90('0x35')](_0x27b6b6[_0x2a90('0x31')],_0x27b6b6[_0x2a90('0x33')]);_0x3b580f['attributes']=_[_0x2a90('0x35')](_0x27b6b6[_0x2a90('0x31')],qs[_0x2a90('0x36')](_0x35570e[_0x2a90('0x33')]['fields']));_0x3b580f[_0x2a90('0x37')]=_0x3b580f[_0x2a90('0x37')]['length']?_0x3b580f[_0x2a90('0x37')]:_0x27b6b6[_0x2a90('0x31')];if(!_0x35570e['query']['hasOwnProperty'](_0x2a90('0x38'))){_0x3b580f[_0x2a90('0x1d')]=qs[_0x2a90('0x1d')](_0x35570e['query'][_0x2a90('0x1d')]);_0x3b580f['offset']=qs[_0x2a90('0x1b')](_0x35570e['query'][_0x2a90('0x1b')]);}_0x3b580f['order']=qs['sort'](_0x35570e[_0x2a90('0x33')]['sort']);_0x3b580f[_0x2a90('0x39')]=qs[_0x2a90('0x34')](_[_0x2a90('0x3a')](_0x35570e['query'],_0x27b6b6[_0x2a90('0x34')]),_0x11586c);if(_0x35570e[_0x2a90('0x33')][_0x2a90('0x3b')]){_0x3b580f['where']=_[_0x2a90('0x3c')](_0x3b580f[_0x2a90('0x39')],{'$or':_[_0x2a90('0x2d')](_0x11586c,function(_0x580667){if(_0x580667[_0x2a90('0x3d')]!==_0x2a90('0x3e')){var _0x504643={};_0x504643[_0x580667[_0x2a90('0x2b')]]={'$like':'%'+_0x35570e[_0x2a90('0x33')][_0x2a90('0x3b')]+'%'};return _0x504643;}})});}_0x3b580f=_[_0x2a90('0x3c')]({},_0x3b580f,_0x35570e[_0x2a90('0x3f')]);var _0x3f2685={'where':_0x3b580f[_0x2a90('0x39')]};return db[_0x2a90('0x40')][_0x2a90('0x1e')](_0x3f2685)[_0x2a90('0x25')](function(_0x45b41c){_0xf18d11[_0x2a90('0x1e')]=_0x45b41c;if(_0x35570e[_0x2a90('0x33')][_0x2a90('0x41')]){_0x3b580f['include']=[{'all':!![]}];}return db[_0x2a90('0x40')][_0x2a90('0x42')](_0x3b580f);})['then'](function(_0x1045bb){_0xf18d11[_0x2a90('0x43')]=_0x1045bb;return _0xf18d11;})[_0x2a90('0x25')](respondWithFilteredResult(_0x6892e1,_0x3b580f))[_0x2a90('0x44')](handleError(_0x6892e1,null));};exports[_0x2a90('0x45')]=function(_0x54b290,_0x145925){var _0x5c6d21={'raw':!![],'where':{'id':_0x54b290['params']['id']}},_0x4566a6={};_0x4566a6[_0x2a90('0x31')]=_[_0x2a90('0x32')](db[_0x2a90('0x40')][_0x2a90('0x2e')]);_0x4566a6[_0x2a90('0x33')]=_[_0x2a90('0x32')](_0x54b290[_0x2a90('0x33')]);_0x4566a6['filters']=_['intersection'](_0x4566a6[_0x2a90('0x31')],_0x4566a6[_0x2a90('0x33')]);_0x5c6d21[_0x2a90('0x37')]=_[_0x2a90('0x35')](_0x4566a6[_0x2a90('0x31')],qs[_0x2a90('0x36')](_0x54b290[_0x2a90('0x33')][_0x2a90('0x36')]));_0x5c6d21['attributes']=_0x5c6d21[_0x2a90('0x37')]['length']?_0x5c6d21[_0x2a90('0x37')]:_0x4566a6[_0x2a90('0x31')];if(_0x54b290['query'][_0x2a90('0x41')]){_0x5c6d21[_0x2a90('0x46')]=[{'all':!![]}];}_0x5c6d21=_[_0x2a90('0x3c')]({},_0x5c6d21,_0x54b290[_0x2a90('0x3f')]);return db[_0x2a90('0x40')][_0x2a90('0x47')](_0x5c6d21)[_0x2a90('0x25')](handleEntityNotFound(_0x145925,null))['then'](respondWithResult(_0x145925,null))['catch'](handleError(_0x145925,null));};exports[_0x2a90('0x48')]=function(_0x2611d0,_0x42c890){return db[_0x2a90('0x40')][_0x2a90('0x48')](_0x2611d0['body'],{})['then'](function(_0x10505c){var _0x386e75=_0x2611d0['user']['get']({'plain':!![]});if(!_0x386e75)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x386e75[_0x2a90('0x49')]==='user'){var _0x370da3=_0x10505c[_0x2a90('0x27')]({'plain':!![]});var _0x272d07=_0x2a90('0x28');return db[_0x2a90('0x4a')][_0x2a90('0x47')]({'where':{'name':_0x272d07,'userProfileId':_0x386e75['userProfileId']},'raw':!![]})[_0x2a90('0x25')](function(_0x46115e){if(_0x46115e&&_0x46115e['autoAssociation']===0x0){return db[_0x2a90('0x29')]['create']({'name':_0x370da3['name'],'resourceId':_0x370da3['id'],'type':_0x46115e[_0x2a90('0x2b')],'sectionId':_0x46115e['id']},{})[_0x2a90('0x25')](function(){return _0x10505c;});}else{return _0x10505c;}})['catch'](function(_0x4c0cb2){logger[_0x2a90('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c0cb2);throw _0x4c0cb2;});}return _0x10505c;})[_0x2a90('0x25')](respondWithResult(_0x42c890,0xc9))[_0x2a90('0x44')](handleError(_0x42c890,null));};exports['update']=function(_0x366429,_0x29bb7d){if(_0x366429[_0x2a90('0x4c')]['id']){delete _0x366429['body']['id'];}return db[_0x2a90('0x40')][_0x2a90('0x47')]({'where':{'id':_0x366429['params']['id']}})['then'](handleEntityNotFound(_0x29bb7d,null))[_0x2a90('0x25')](saveUpdates(_0x366429[_0x2a90('0x4c')],null))['then'](respondWithResult(_0x29bb7d,null))[_0x2a90('0x44')](handleError(_0x29bb7d,null));};exports['destroy']=function(_0x1302b9,_0x5ab061){return db[_0x2a90('0x40')][_0x2a90('0x47')]({'where':{'id':_0x1302b9[_0x2a90('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5ab061,null))['then'](removeEntity(_0x5ab061,null))['catch'](handleError(_0x5ab061,null));};exports[_0x2a90('0x4e')]=function(_0x37adad,_0x3793e5,_0x469d3c){return db[_0x2a90('0x40')][_0x2a90('0x4f')]({'where':{'id':_0x37adad[_0x2a90('0x4d')]['id']}})[_0x2a90('0x25')](handleEntityNotFound(_0x3793e5,null))[_0x2a90('0x25')](function(_0x4f4dc6){var _0x18bb86;var _0x2442e1={},_0xb816a8={};_0xb816a8['model']=_['keys'](db['VoiceMailMessage'][_0x2a90('0x2e')]);_0xb816a8[_0x2a90('0x33')]=_[_0x2a90('0x32')](_0x37adad[_0x2a90('0x33')]);_0xb816a8[_0x2a90('0x34')]=_[_0x2a90('0x35')](_0xb816a8[_0x2a90('0x31')],_0xb816a8[_0x2a90('0x33')]);_0x2442e1[_0x2a90('0x37')]=_[_0x2a90('0x35')](_0xb816a8[_0x2a90('0x31')],qs[_0x2a90('0x36')](_0x37adad[_0x2a90('0x33')][_0x2a90('0x36')]));_0x2442e1[_0x2a90('0x37')]=_0x2442e1[_0x2a90('0x37')]['length']?_0x2442e1[_0x2a90('0x37')]:_0xb816a8['model'];if(!_0x37adad[_0x2a90('0x33')][_0x2a90('0x50')](_0x2a90('0x38'))){_0x2442e1[_0x2a90('0x1d')]=qs[_0x2a90('0x1d')](_0x37adad[_0x2a90('0x33')][_0x2a90('0x1d')]);_0x2442e1['offset']=qs[_0x2a90('0x1b')](_0x37adad[_0x2a90('0x33')][_0x2a90('0x1b')]);}_0x2442e1['order']=qs[_0x2a90('0x51')](_0x37adad[_0x2a90('0x33')][_0x2a90('0x51')]);_0x2442e1[_0x2a90('0x39')]=qs['filters'](_[_0x2a90('0x3a')](_0x37adad['query'],_0xb816a8[_0x2a90('0x34')]));if(_0x37adad[_0x2a90('0x33')][_0x2a90('0x3b')]){_0x2442e1[_0x2a90('0x39')]=_[_0x2a90('0x3c')](_0x2442e1[_0x2a90('0x39')],{'$or':_['map'](_0x2442e1[_0x2a90('0x37')],function(_0x2347b6){var _0x120c17={};_0x120c17[_0x2347b6]={'$like':'%'+_0x37adad[_0x2a90('0x33')][_0x2a90('0x3b')]+'%'};return _0x120c17;})});}_0x2442e1[_0x2a90('0x39')]=_[_0x2a90('0x3c')](_0x2442e1[_0x2a90('0x39')],{'mailboxuser':_0x4f4dc6[_0x2a90('0x52')]});_0x2442e1=_['merge']({},_0x2442e1,_0x37adad[_0x2a90('0x3f')]);return db[_0x2a90('0x53')][_0x2a90('0x54')](_0x2442e1)['then'](respondWithFilteredResult(_0x3793e5,_0x2442e1));})[_0x2a90('0x44')](handleError(_0x3793e5,null));};
\ No newline at end of file
+var _0xbdb7=['map','query','filters','intersection','model','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','keys','fields','include','find','create','body','role','user','get','Voicemails','UserProfileSection','userProfileId','autoAssociation','destroy','getMessages','findOne','nolimit','mailbox','VoiceMailMessage','findAndCountAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','UserProfileResource','then','sendStatus','error','stack','name','send','index','VoiceMail','rawAttributes','fieldName'];(function(_0x53149c,_0x1ee7fe){var _0x41d906=function(_0x16e270){while(--_0x16e270){_0x53149c['push'](_0x53149c['shift']());}};_0x41d906(++_0x1ee7fe);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x9844c2,_0x4a6e0a){_0x9844c2=_0x9844c2-0x0;var _0x425407=_0xbdb7[_0x9844c2];return _0x425407;};'use strict';var emlformat=require(_0x7bdb('0x0'));var rimraf=require(_0x7bdb('0x1'));var zipdir=require(_0x7bdb('0x2'));var jsonpatch=require(_0x7bdb('0x3'));var rp=require(_0x7bdb('0x4'));var moment=require(_0x7bdb('0x5'));var BPromise=require(_0x7bdb('0x6'));var Mustache=require(_0x7bdb('0x7'));var util=require(_0x7bdb('0x8'));var path=require('path');var sox=require(_0x7bdb('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7bdb('0xa'));var _=require(_0x7bdb('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7bdb('0xc'));var deskjs=require(_0x7bdb('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7bdb('0xe'));var Redis=require(_0x7bdb('0xf'));var authService=require(_0x7bdb('0x10'));var qs=require(_0x7bdb('0x11'));var as=require(_0x7bdb('0x12'));var hardwareService=require(_0x7bdb('0x13'));var logger=require(_0x7bdb('0x14'))(_0x7bdb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7bdb('0x16'))['db'];function respondWithStatusCode(_0x25e3cb,_0x496613){_0x496613=_0x496613||0xcc;return function(_0x8d74ff){if(_0x8d74ff){return _0x25e3cb['sendStatus'](_0x496613);}return _0x25e3cb['status'](_0x496613)[_0x7bdb('0x17')]();};}function respondWithResult(_0x46dd4a,_0x4fd91a){_0x4fd91a=_0x4fd91a||0xc8;return function(_0x50eeca){if(_0x50eeca){return _0x46dd4a['status'](_0x4fd91a)[_0x7bdb('0x18')](_0x50eeca);}};}function respondWithFilteredResult(_0x195b2e,_0xe9919f){return function(_0x25d417){if(_0x25d417){var _0x31c909=typeof _0xe9919f[_0x7bdb('0x19')]===_0x7bdb('0x1a')&&typeof _0xe9919f[_0x7bdb('0x1b')]==='undefined';var _0x1c5750=_0x25d417[_0x7bdb('0x1c')];var _0x5723f4=_0x31c909?0x0:_0xe9919f[_0x7bdb('0x19')];var _0x4ffd4b=_0x31c909?_0x25d417[_0x7bdb('0x1c')]:_0xe9919f[_0x7bdb('0x19')]+_0xe9919f['limit'];var _0x3e5f8e;if(_0x4ffd4b>=_0x1c5750){_0x4ffd4b=_0x1c5750;_0x3e5f8e=0xc8;}else{_0x3e5f8e=0xce;}_0x195b2e[_0x7bdb('0x1d')](_0x3e5f8e);return _0x195b2e[_0x7bdb('0x1e')](_0x7bdb('0x1f'),_0x5723f4+'-'+_0x4ffd4b+'/'+_0x1c5750)[_0x7bdb('0x18')](_0x25d417);}return null;};}function patchUpdates(_0x5bfc35){return function(_0x49f353){try{jsonpatch[_0x7bdb('0x20')](_0x49f353,_0x5bfc35,!![]);}catch(_0xcb25f2){return BPromise['reject'](_0xcb25f2);}return _0x49f353[_0x7bdb('0x21')]();};}function saveUpdates(_0x118ea1,_0x346c72){return function(_0x3f53e7){if(_0x3f53e7){return _0x3f53e7[_0x7bdb('0x22')](_0x118ea1)['then'](function(_0x1d37ac){return _0x1d37ac;});}return null;};}function removeEntity(_0xdad53d,_0x40c447){return function(_0x3a456f){if(_0x3a456f){return _0x3a456f['destroy']()['then'](function(){var _0x3c423f=_0x3a456f['get']({'plain':!![]});var _0x47abaf='Voicemails';return db[_0x7bdb('0x23')]['destroy']({'where':{'type':_0x47abaf,'resourceId':_0x3c423f['id']}})[_0x7bdb('0x24')](function(){return _0x3a456f;});})[_0x7bdb('0x24')](function(){_0xdad53d[_0x7bdb('0x1d')](0xcc)[_0x7bdb('0x17')]();});}};}function handleEntityNotFound(_0x2a494e,_0x523869){return function(_0x10e818){if(!_0x10e818){_0x2a494e[_0x7bdb('0x25')](0x194);}return _0x10e818;};}function handleError(_0x399b62,_0xe1141d){_0xe1141d=_0xe1141d||0x1f4;return function(_0x371e8a){logger[_0x7bdb('0x26')](_0x371e8a[_0x7bdb('0x27')]);if(_0x371e8a[_0x7bdb('0x28')]){delete _0x371e8a[_0x7bdb('0x28')];}_0x399b62[_0x7bdb('0x1d')](_0xe1141d)[_0x7bdb('0x29')](_0x371e8a);};}exports[_0x7bdb('0x2a')]=function(_0x5b386d,_0x388a45){var _0x23fc3a={},_0x8f7672={},_0x9f5c1={'count':0x0,'rows':[]};var _0x29eac5=_['map'](db[_0x7bdb('0x2b')][_0x7bdb('0x2c')],function(_0x9ac56){return{'name':_0x9ac56[_0x7bdb('0x2d')],'type':_0x9ac56['type']['key']};});_0x8f7672['model']=_[_0x7bdb('0x2e')](_0x29eac5,'name');_0x8f7672[_0x7bdb('0x2f')]=_['keys'](_0x5b386d[_0x7bdb('0x2f')]);_0x8f7672[_0x7bdb('0x30')]=_[_0x7bdb('0x31')](_0x8f7672['model'],_0x8f7672[_0x7bdb('0x2f')]);_0x23fc3a['attributes']=_['intersection'](_0x8f7672[_0x7bdb('0x32')],qs['fields'](_0x5b386d[_0x7bdb('0x2f')]['fields']));_0x23fc3a['attributes']=_0x23fc3a[_0x7bdb('0x33')][_0x7bdb('0x34')]?_0x23fc3a[_0x7bdb('0x33')]:_0x8f7672[_0x7bdb('0x32')];if(!_0x5b386d[_0x7bdb('0x2f')][_0x7bdb('0x35')]('nolimit')){_0x23fc3a[_0x7bdb('0x1b')]=qs[_0x7bdb('0x1b')](_0x5b386d[_0x7bdb('0x2f')][_0x7bdb('0x1b')]);_0x23fc3a[_0x7bdb('0x19')]=qs[_0x7bdb('0x19')](_0x5b386d[_0x7bdb('0x2f')][_0x7bdb('0x19')]);}_0x23fc3a[_0x7bdb('0x36')]=qs['sort'](_0x5b386d['query'][_0x7bdb('0x37')]);_0x23fc3a[_0x7bdb('0x38')]=qs[_0x7bdb('0x30')](_[_0x7bdb('0x39')](_0x5b386d[_0x7bdb('0x2f')],_0x8f7672['filters']),_0x29eac5);if(_0x5b386d['query'][_0x7bdb('0x3a')]){_0x23fc3a['where']=_[_0x7bdb('0x3b')](_0x23fc3a['where'],{'$or':_[_0x7bdb('0x2e')](_0x29eac5,function(_0x5d1826){if(_0x5d1826['type']!==_0x7bdb('0x3c')){var _0x2d578e={};_0x2d578e[_0x5d1826[_0x7bdb('0x28')]]={'$like':'%'+_0x5b386d[_0x7bdb('0x2f')][_0x7bdb('0x3a')]+'%'};return _0x2d578e;}})});}_0x23fc3a=_[_0x7bdb('0x3b')]({},_0x23fc3a,_0x5b386d[_0x7bdb('0x3d')]);var _0x501aff={'where':_0x23fc3a['where']};return db[_0x7bdb('0x2b')][_0x7bdb('0x1c')](_0x501aff)[_0x7bdb('0x24')](function(_0x3509e4){_0x9f5c1[_0x7bdb('0x1c')]=_0x3509e4;if(_0x5b386d[_0x7bdb('0x2f')][_0x7bdb('0x3e')]){_0x23fc3a['include']=[{'all':!![]}];}return db['VoiceMail'][_0x7bdb('0x3f')](_0x23fc3a);})[_0x7bdb('0x24')](function(_0x4636f8){_0x9f5c1[_0x7bdb('0x40')]=_0x4636f8;return _0x9f5c1;})['then'](respondWithFilteredResult(_0x388a45,_0x23fc3a))[_0x7bdb('0x41')](handleError(_0x388a45,null));};exports['show']=function(_0x37029b,_0x27de25){var _0x218361={'raw':!![],'where':{'id':_0x37029b[_0x7bdb('0x42')]['id']}},_0x264f3a={};_0x264f3a[_0x7bdb('0x32')]=_[_0x7bdb('0x43')](db[_0x7bdb('0x2b')][_0x7bdb('0x2c')]);_0x264f3a['query']=_[_0x7bdb('0x43')](_0x37029b[_0x7bdb('0x2f')]);_0x264f3a['filters']=_[_0x7bdb('0x31')](_0x264f3a['model'],_0x264f3a[_0x7bdb('0x2f')]);_0x218361[_0x7bdb('0x33')]=_[_0x7bdb('0x31')](_0x264f3a[_0x7bdb('0x32')],qs[_0x7bdb('0x44')](_0x37029b['query'][_0x7bdb('0x44')]));_0x218361[_0x7bdb('0x33')]=_0x218361[_0x7bdb('0x33')][_0x7bdb('0x34')]?_0x218361[_0x7bdb('0x33')]:_0x264f3a['model'];if(_0x37029b[_0x7bdb('0x2f')][_0x7bdb('0x3e')]){_0x218361[_0x7bdb('0x45')]=[{'all':!![]}];}_0x218361=_[_0x7bdb('0x3b')]({},_0x218361,_0x37029b[_0x7bdb('0x3d')]);return db[_0x7bdb('0x2b')][_0x7bdb('0x46')](_0x218361)[_0x7bdb('0x24')](handleEntityNotFound(_0x27de25,null))[_0x7bdb('0x24')](respondWithResult(_0x27de25,null))[_0x7bdb('0x41')](handleError(_0x27de25,null));};exports['create']=function(_0x189cf8,_0x58c4bc){return db['VoiceMail'][_0x7bdb('0x47')](_0x189cf8[_0x7bdb('0x48')],{})['then'](function(_0x37780a){var _0x186809=_0x189cf8['user']['get']({'plain':!![]});if(!_0x186809)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x186809[_0x7bdb('0x49')]===_0x7bdb('0x4a')){var _0x2fab74=_0x37780a[_0x7bdb('0x4b')]({'plain':!![]});var _0x33687b=_0x7bdb('0x4c');return db[_0x7bdb('0x4d')][_0x7bdb('0x46')]({'where':{'name':_0x33687b,'userProfileId':_0x186809[_0x7bdb('0x4e')]},'raw':!![]})[_0x7bdb('0x24')](function(_0x5a8d4a){if(_0x5a8d4a&&_0x5a8d4a[_0x7bdb('0x4f')]===0x0){return db['UserProfileResource'][_0x7bdb('0x47')]({'name':_0x2fab74[_0x7bdb('0x28')],'resourceId':_0x2fab74['id'],'type':_0x5a8d4a[_0x7bdb('0x28')],'sectionId':_0x5a8d4a['id']},{})[_0x7bdb('0x24')](function(){return _0x37780a;});}else{return _0x37780a;}})['catch'](function(_0x258f29){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x258f29);throw _0x258f29;});}return _0x37780a;})[_0x7bdb('0x24')](respondWithResult(_0x58c4bc,0xc9))[_0x7bdb('0x41')](handleError(_0x58c4bc,null));};exports['update']=function(_0x4e17f3,_0x49bb3f){if(_0x4e17f3[_0x7bdb('0x48')]['id']){delete _0x4e17f3['body']['id'];}return db['VoiceMail'][_0x7bdb('0x46')]({'where':{'id':_0x4e17f3[_0x7bdb('0x42')]['id']}})[_0x7bdb('0x24')](handleEntityNotFound(_0x49bb3f,null))[_0x7bdb('0x24')](saveUpdates(_0x4e17f3['body'],null))[_0x7bdb('0x24')](respondWithResult(_0x49bb3f,null))['catch'](handleError(_0x49bb3f,null));};exports[_0x7bdb('0x50')]=function(_0x7f2d89,_0x82f990){return db[_0x7bdb('0x2b')][_0x7bdb('0x46')]({'where':{'id':_0x7f2d89[_0x7bdb('0x42')]['id']}})['then'](handleEntityNotFound(_0x82f990,null))[_0x7bdb('0x24')](removeEntity(_0x82f990,null))[_0x7bdb('0x41')](handleError(_0x82f990,null));};exports[_0x7bdb('0x51')]=function(_0x58658e,_0x2b5493,_0x1d9927){return db['VoiceMail'][_0x7bdb('0x52')]({'where':{'id':_0x58658e['params']['id']}})[_0x7bdb('0x24')](handleEntityNotFound(_0x2b5493,null))[_0x7bdb('0x24')](function(_0x4f3f8c){var _0x478bbd;var _0x21a54f={},_0x2a6c5b={};_0x2a6c5b['model']=_[_0x7bdb('0x43')](db['VoiceMailMessage'][_0x7bdb('0x2c')]);_0x2a6c5b['query']=_['keys'](_0x58658e[_0x7bdb('0x2f')]);_0x2a6c5b[_0x7bdb('0x30')]=_[_0x7bdb('0x31')](_0x2a6c5b[_0x7bdb('0x32')],_0x2a6c5b[_0x7bdb('0x2f')]);_0x21a54f[_0x7bdb('0x33')]=_[_0x7bdb('0x31')](_0x2a6c5b[_0x7bdb('0x32')],qs[_0x7bdb('0x44')](_0x58658e[_0x7bdb('0x2f')][_0x7bdb('0x44')]));_0x21a54f[_0x7bdb('0x33')]=_0x21a54f['attributes'][_0x7bdb('0x34')]?_0x21a54f[_0x7bdb('0x33')]:_0x2a6c5b['model'];if(!_0x58658e[_0x7bdb('0x2f')][_0x7bdb('0x35')](_0x7bdb('0x53'))){_0x21a54f[_0x7bdb('0x1b')]=qs[_0x7bdb('0x1b')](_0x58658e['query'][_0x7bdb('0x1b')]);_0x21a54f[_0x7bdb('0x19')]=qs[_0x7bdb('0x19')](_0x58658e['query'][_0x7bdb('0x19')]);}_0x21a54f[_0x7bdb('0x36')]=qs[_0x7bdb('0x37')](_0x58658e[_0x7bdb('0x2f')][_0x7bdb('0x37')]);_0x21a54f[_0x7bdb('0x38')]=qs[_0x7bdb('0x30')](_[_0x7bdb('0x39')](_0x58658e[_0x7bdb('0x2f')],_0x2a6c5b['filters']));if(_0x58658e[_0x7bdb('0x2f')][_0x7bdb('0x3a')]){_0x21a54f[_0x7bdb('0x38')]=_[_0x7bdb('0x3b')](_0x21a54f[_0x7bdb('0x38')],{'$or':_[_0x7bdb('0x2e')](_0x21a54f[_0x7bdb('0x33')],function(_0x86c6ed){var _0x4565c2={};_0x4565c2[_0x86c6ed]={'$like':'%'+_0x58658e[_0x7bdb('0x2f')][_0x7bdb('0x3a')]+'%'};return _0x4565c2;})});}_0x21a54f[_0x7bdb('0x38')]=_[_0x7bdb('0x3b')](_0x21a54f['where'],{'mailboxuser':_0x4f3f8c[_0x7bdb('0x54')]});_0x21a54f=_['merge']({},_0x21a54f,_0x58658e[_0x7bdb('0x3d')]);return db[_0x7bdb('0x55')][_0x7bdb('0x56')](_0x21a54f)['then'](respondWithFilteredResult(_0x2b5493,_0x21a54f));})[_0x7bdb('0x41')](handleError(_0x2b5493,null));};
\ No newline at end of file
index 7d3cd25..2faee89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d51=['mailbox_context','mailbox','context','util','moment','bluebird','path','rimraf','./voiceMail.attributes','define','VoiceMail','voice_voicemail'];(function(_0x2620d1,_0x15a6ca){var _0x5bfeb6=function(_0x3aecbe){while(--_0x3aecbe){_0x2620d1['push'](_0x2620d1['shift']());}};_0x5bfeb6(++_0x15a6ca);}(_0x0d51,0x1b3));var _0x10d5=function(_0xd22d95,_0xc59f8f){_0xd22d95=_0xd22d95-0x0;var _0x15d7a3=_0x0d51[_0xd22d95];return _0x15d7a3;};'use strict';var _=require('lodash');var util=require(_0x10d5('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x10d5('0x1'));var BPromise=require(_0x10d5('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x10d5('0x3'));var rimraf=require(_0x10d5('0x4'));var config=require('../../config/environment');var attributes=require(_0x10d5('0x5'));module['exports']=function(_0x9bfd97,_0x9cb38){return _0x9bfd97[_0x10d5('0x6')](_0x10d5('0x7'),attributes,{'tableName':_0x10d5('0x8'),'paranoid':![],'indexes':[{'name':_0x10d5('0x9'),'fields':[_0x10d5('0xa'),_0x10d5('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0de3=['voice_voicemail','mailbox','context','util','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','VoiceMail'];(function(_0xca759b,_0x4c4002){var _0x7c3683=function(_0x3d2fb8){while(--_0x3d2fb8){_0xca759b['push'](_0xca759b['shift']());}};_0x7c3683(++_0x4c4002);}(_0x0de3,0x6b));var _0x30de=function(_0x539b39,_0x1ed7ed){_0x539b39=_0x539b39-0x0;var _0x5e9155=_0x0de3[_0x539b39];return _0x5e9155;};'use strict';var _=require('lodash');var util=require(_0x30de('0x0'));var logger=require(_0x30de('0x1'))(_0x30de('0x2'));var moment=require(_0x30de('0x3'));var BPromise=require(_0x30de('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x30de('0x5'));var rimraf=require('rimraf');var config=require(_0x30de('0x6'));var attributes=require('./voiceMail.attributes');module[_0x30de('0x7')]=function(_0x258e58,_0x3bf2be){return _0x258e58[_0x30de('0x8')](_0x30de('0x9'),attributes,{'tableName':_0x30de('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0x30de('0xb'),_0x30de('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4376cda..e69df6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7557=['catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','message','VoiceMail,\x20%s,\x20%s','result'];(function(_0x20ab41,_0x20cb38){var _0x45cc26=function(_0x1dda38){while(--_0x1dda38){_0x20ab41['push'](_0x20ab41['shift']());}};_0x45cc26(++_0x20cb38);}(_0x7557,0xc7));var _0x7755=function(_0x36f7b7,_0x5445ba){_0x36f7b7=_0x36f7b7-0x0;var _0x15a1b3=_0x7557[_0x36f7b7];return _0x15a1b3;};'use strict';var _=require(_0x7755('0x0'));var util=require(_0x7755('0x1'));var moment=require(_0x7755('0x2'));var BPromise=require('bluebird');var rs=require(_0x7755('0x3'));var fs=require('fs');var Redis=require(_0x7755('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7755('0x5'));var logger=require(_0x7755('0x6'))(_0x7755('0x7'));var config=require(_0x7755('0x8'));var jayson=require(_0x7755('0x9'));var client=jayson[_0x7755('0xa')][_0x7755('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1634ca,_0x49af54,_0x563d0b){return new BPromise(function(_0x1eb7bd,_0x43bf0c){return client['request'](_0x1634ca,_0x563d0b)[_0x7755('0xc')](function(_0x25c90f){logger[_0x7755('0xd')]('VoiceMail,\x20%s,\x20%s',_0x49af54,_0x7755('0xe'));logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x49af54,_0x7755('0xe'),JSON[_0x7755('0xf')](_0x25c90f));if(_0x25c90f[_0x7755('0x10')]){if(_0x25c90f['error'][_0x7755('0x11')]===0x1f4){logger[_0x7755('0x10')]('VoiceMail,\x20%s,\x20%s',_0x49af54,_0x25c90f['error']['message']);return _0x43bf0c(_0x25c90f[_0x7755('0x10')][_0x7755('0x12')]);}logger[_0x7755('0x10')](_0x7755('0x13'),_0x49af54,_0x25c90f['error'][_0x7755('0x12')]);return _0x1eb7bd(_0x25c90f[_0x7755('0x10')][_0x7755('0x12')]);}else{logger[_0x7755('0xd')](_0x7755('0x13'),_0x49af54,'request\x20sent');_0x1eb7bd(_0x25c90f[_0x7755('0x14')][_0x7755('0x12')]);}})[_0x7755('0x15')](function(_0x345f99){logger[_0x7755('0x10')](_0x7755('0x13'),_0x49af54,_0x345f99);_0x43bf0c(_0x345f99);});});}
\ No newline at end of file
+var _0x684a=['client','http','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x684a,0x1db));var _0xa684=function(_0x2e7fb8,_0x1ba6b1){_0x2e7fb8=_0x2e7fb8-0x0;var _0x2055db=_0x684a[_0x2e7fb8];return _0x2055db;};'use strict';var _=require(_0xa684('0x0'));var util=require(_0xa684('0x1'));var moment=require('moment');var BPromise=require(_0xa684('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa684('0x3'))['db'];var utils=require(_0xa684('0x4'));var logger=require(_0xa684('0x5'))(_0xa684('0x6'));var config=require(_0xa684('0x7'));var jayson=require(_0xa684('0x8'));var client=jayson[_0xa684('0x9')][_0xa684('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x388ce5,_0x5eca2a,_0x7485a8){return new BPromise(function(_0x5df516,_0x496ece){return client[_0xa684('0xb')](_0x388ce5,_0x7485a8)[_0xa684('0xc')](function(_0x539a7c){logger[_0xa684('0xd')](_0xa684('0xe'),_0x5eca2a,_0xa684('0xf'));logger['debug'](_0xa684('0x10'),_0x5eca2a,_0xa684('0xf'),JSON[_0xa684('0x11')](_0x539a7c));if(_0x539a7c['error']){if(_0x539a7c['error'][_0xa684('0x12')]===0x1f4){logger[_0xa684('0x13')](_0xa684('0xe'),_0x5eca2a,_0x539a7c[_0xa684('0x13')][_0xa684('0x14')]);return _0x496ece(_0x539a7c[_0xa684('0x13')]['message']);}logger[_0xa684('0x13')](_0xa684('0xe'),_0x5eca2a,_0x539a7c[_0xa684('0x13')][_0xa684('0x14')]);return _0x5df516(_0x539a7c['error'][_0xa684('0x14')]);}else{logger[_0xa684('0xd')](_0xa684('0xe'),_0x5eca2a,_0xa684('0xf'));_0x5df516(_0x539a7c['result']['message']);}})[_0xa684('0x15')](function(_0x2df246){logger[_0xa684('0x13')](_0xa684('0xe'),_0x5eca2a,_0x2df246);_0x496ece(_0x2df246);});});}
\ No newline at end of file
index 4de6a92..175ca2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf5b=['index','get','/:id','show','/:id/download','isAuthenticated','download','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller'];(function(_0x2f3d73,_0x2e35ac){var _0x2b5fb7=function(_0x427d46){while(--_0x427d46){_0x2f3d73['push'](_0x2f3d73['shift']());}};_0x2b5fb7(++_0x2e35ac);}(_0xcf5b,0x80));var _0xbcf5=function(_0x3f0b30,_0x159bc8){_0x3f0b30=_0x3f0b30-0x0;var _0x2748a5=_0xcf5b[_0x3f0b30];return _0x2748a5;};'use strict';var multer=require(_0xbcf5('0x0'));var util=require('util');var path=require(_0xbcf5('0x1'));var timeout=require(_0xbcf5('0x2'));var express=require(_0xbcf5('0x3'));var router=express[_0xbcf5('0x4')]();var fs_extra=require(_0xbcf5('0x5'));var auth=require(_0xbcf5('0x6'));var interaction=require(_0xbcf5('0x7'));var config=require(_0xbcf5('0x8'));var controller=require(_0xbcf5('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xbcf5('0xa')]);router[_0xbcf5('0xb')](_0xbcf5('0xc'),auth['isAuthenticated'](),controller[_0xbcf5('0xd')]);router[_0xbcf5('0xb')](_0xbcf5('0xe'),auth[_0xbcf5('0xf')](),controller[_0xbcf5('0x10')]);router['post']('/',auth[_0xbcf5('0xf')](),controller[_0xbcf5('0x11')]);router[_0xbcf5('0x12')](_0xbcf5('0xc'),auth[_0xbcf5('0xf')](),controller[_0xbcf5('0x13')]);router[_0xbcf5('0x14')](_0xbcf5('0xc'),auth['isAuthenticated'](),controller[_0xbcf5('0x15')]);module[_0xbcf5('0x16')]=router;
\ No newline at end of file
+var _0x1a53=['path','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','index','show','get','/:id/download','isAuthenticated','post','update','delete','/:id','exports','util'];(function(_0x13a304,_0x2bb9df){var _0x3a18ea=function(_0x2e3439){while(--_0x2e3439){_0x13a304['push'](_0x13a304['shift']());}};_0x3a18ea(++_0x2bb9df);}(_0x1a53,0x1ec));var _0x31a5=function(_0x547c04,_0xe570c4){_0x547c04=_0x547c04-0x0;var _0x27245c=_0x1a53[_0x547c04];return _0x27245c;};'use strict';var multer=require('multer');var util=require(_0x31a5('0x0'));var path=require(_0x31a5('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x31a5('0x2')]();var fs_extra=require(_0x31a5('0x3'));var auth=require(_0x31a5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x31a5('0x5'));var controller=require(_0x31a5('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x31a5('0x7')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x31a5('0x8')]);router[_0x31a5('0x9')](_0x31a5('0xa'),auth[_0x31a5('0xb')](),controller['download']);router[_0x31a5('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x31a5('0xb')](),controller[_0x31a5('0xd')]);router[_0x31a5('0xe')](_0x31a5('0xf'),auth[_0x31a5('0xb')](),controller['destroy']);module[_0x31a5('0x10')]=router;
\ No newline at end of file
index 225af06..51a3910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaddb=['getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL'];(function(_0x4cb2a9,_0x169939){var _0x520645=function(_0x37a903){while(--_0x37a903){_0x4cb2a9['push'](_0x4cb2a9['shift']());}};_0x520645(++_0x169939);}(_0xaddb,0x103));var _0xbadd=function(_0x56a27a,_0xc92bb6){_0x56a27a=_0x56a27a-0x0;var _0x576c6e=_0xaddb[_0x56a27a];return _0x576c6e;};'use strict';var Sequelize=require(_0xbadd('0x0'));module['exports']={'name':{'type':Sequelize[_0xbadd('0x1')],'get':function(_0x506d41){return this[_0xbadd('0x2')]('id');}},'msgnum':{'type':Sequelize[_0xbadd('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xbadd('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xbadd('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize['STRING'],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0xbadd('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xbadd('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xbadd('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xbadd('0x5')](_0xbadd('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xbadd('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xbadd('0x7'),'defaultValue':Sequelize['literal'](_0xbadd('0x8'))}};
\ No newline at end of file
+var _0xd9c4=['long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','STRING','BLOB'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0xd9c4,0x6f));var _0x4d9c=function(_0x46361e,_0x243aaf){_0x46361e=_0x46361e-0x0;var _0x14e302=_0xd9c4[_0x46361e];return _0x14e302;};'use strict';var Sequelize=require(_0x4d9c('0x0'));module[_0x4d9c('0x1')]={'name':{'type':Sequelize[_0x4d9c('0x2')],'get':function(_0xebfe47){return this[_0x4d9c('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x4d9c('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x4d9c('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x4d9c('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x4d9c('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x4d9c('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x4d9c('0x5')](_0x4d9c('0x6')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x4d9c('0x4')],'defaultValue':''},'stamp':{'type':_0x4d9c('0x7'),'defaultValue':Sequelize['literal'](_0x4d9c('0x8'))}};
\ No newline at end of file
index b4603c6..9d2ce5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x145e=['differenceBy','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','download','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','eml-format','zip-dir','fast-json-patch','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','destroy','error','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','key','model'];(function(_0x2c1fad,_0x2c2d51){var _0x249153=function(_0x594bf3){while(--_0x594bf3){_0x2c1fad['push'](_0x2c1fad['shift']());}};_0x249153(++_0x2c2d51);}(_0x145e,0xc3));var _0xe145=function(_0x5c6efe,_0x4126d6){_0x5c6efe=_0x5c6efe-0x0;var _0x181a12=_0x145e[_0x5c6efe];return _0x181a12;};'use strict';var emlformat=require(_0xe145('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe145('0x1'));var jsonpatch=require(_0xe145('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe145('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe145('0x4'));var sox=require(_0xe145('0x5'));var csv=require(_0xe145('0x6'));var ejs=require(_0xe145('0x7'));var fs=require('fs');var fs_extra=require(_0xe145('0x8'));var _=require(_0xe145('0x9'));var squel=require(_0xe145('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe145('0xb'));var toCsv=require(_0xe145('0x6'));var querystring=require('querystring');var Papa=require(_0xe145('0xc'));var Redis=require(_0xe145('0xd'));var authService=require(_0xe145('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xe145('0xf'));var hardwareService=require(_0xe145('0x10'));var logger=require('../../config/logger')(_0xe145('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe145('0x12'));var db=require(_0xe145('0x13'))['db'];function respondWithStatusCode(_0x22134a,_0x55b98b){_0x55b98b=_0x55b98b||0xcc;return function(_0x5a7d1e){if(_0x5a7d1e){return _0x22134a[_0xe145('0x14')](_0x55b98b);}return _0x22134a['status'](_0x55b98b)[_0xe145('0x15')]();};}function respondWithResult(_0x3c2d75,_0x331ac3){_0x331ac3=_0x331ac3||0xc8;return function(_0x43502c){if(_0x43502c){return _0x3c2d75[_0xe145('0x16')](_0x331ac3)[_0xe145('0x17')](_0x43502c);}};}function respondWithFilteredResult(_0x58d319,_0x5aee78){return function(_0x204532){if(_0x204532){var _0x6bef55=typeof _0x5aee78['offset']===_0xe145('0x18')&&typeof _0x5aee78[_0xe145('0x19')]===_0xe145('0x18');var _0x1b4e9e=_0x204532[_0xe145('0x1a')];var _0x116859=_0x6bef55?0x0:_0x5aee78[_0xe145('0x1b')];var _0x57b908=_0x6bef55?_0x204532[_0xe145('0x1a')]:_0x5aee78['offset']+_0x5aee78[_0xe145('0x19')];var _0x34dd81;if(_0x57b908>=_0x1b4e9e){_0x57b908=_0x1b4e9e;_0x34dd81=0xc8;}else{_0x34dd81=0xce;}_0x58d319[_0xe145('0x16')](_0x34dd81);return _0x58d319[_0xe145('0x1c')](_0xe145('0x1d'),_0x116859+'-'+_0x57b908+'/'+_0x1b4e9e)[_0xe145('0x17')](_0x204532);}return null;};}function patchUpdates(_0x1cec7f){return function(_0x6a6328){try{jsonpatch['apply'](_0x6a6328,_0x1cec7f,!![]);}catch(_0x1518ca){return BPromise[_0xe145('0x1e')](_0x1518ca);}return _0x6a6328['save']();};}function saveUpdates(_0x4ee4a8,_0x197eee){return function(_0x571057){if(_0x571057){return _0x571057[_0xe145('0x1f')](_0x4ee4a8)[_0xe145('0x20')](function(_0x653a6){return _0x653a6;});}return null;};}function removeEntity(_0x537689,_0x44f2fc){return function(_0x45de13){if(_0x45de13){return _0x45de13[_0xe145('0x21')]()[_0xe145('0x20')](function(){_0x537689[_0xe145('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55313c,_0x2e9e2f){return function(_0x498eb0){if(!_0x498eb0){_0x55313c[_0xe145('0x14')](0x194);}return _0x498eb0;};}function handleError(_0x13a7ec,_0x3a92d1){_0x3a92d1=_0x3a92d1||0x1f4;return function(_0x533485){logger[_0xe145('0x22')](_0x533485['stack']);if(_0x533485[_0xe145('0x23')]){delete _0x533485[_0xe145('0x23')];}_0x13a7ec[_0xe145('0x16')](_0x3a92d1)[_0xe145('0x24')](_0x533485);};}exports[_0xe145('0x25')]=function(_0x3a51a1,_0x18c52a){var _0x226807={},_0x22bb07={},_0x1fb6a8={'count':0x0,'rows':[]};var _0x14895c=_[_0xe145('0x26')](db[_0xe145('0x27')][_0xe145('0x28')],function(_0x15eb02){return{'name':_0x15eb02[_0xe145('0x29')],'type':_0x15eb02[_0xe145('0x2a')][_0xe145('0x2b')]};});_0x22bb07[_0xe145('0x2c')]=_[_0xe145('0x2d')](_['map'](_0x14895c,_0xe145('0x23')),[_0xe145('0x23')]);_0x22bb07[_0xe145('0x2e')]=_[_0xe145('0x2f')](_0x3a51a1['query']);_0x22bb07[_0xe145('0x30')]=_[_0xe145('0x31')](_0x22bb07['model'],_0x22bb07['query']);_0x226807[_0xe145('0x32')]=_['intersection'](_0x22bb07[_0xe145('0x2c')],qs[_0xe145('0x33')](_0x3a51a1[_0xe145('0x2e')][_0xe145('0x33')]));_0x226807[_0xe145('0x32')]=_0x226807['attributes']['length']?_0x226807[_0xe145('0x32')]:_0x22bb07[_0xe145('0x2c')];if(!_0x3a51a1['query'][_0xe145('0x34')](_0xe145('0x35'))){_0x226807['limit']=qs[_0xe145('0x19')](_0x3a51a1[_0xe145('0x2e')][_0xe145('0x19')]);_0x226807[_0xe145('0x1b')]=qs['offset'](_0x3a51a1[_0xe145('0x2e')][_0xe145('0x1b')]);}_0x226807['order']=qs[_0xe145('0x36')](_0x3a51a1[_0xe145('0x2e')][_0xe145('0x36')]);_0x226807[_0xe145('0x37')]=qs[_0xe145('0x30')](_[_0xe145('0x38')](_0x3a51a1[_0xe145('0x2e')],_0x22bb07[_0xe145('0x30')]),_0x14895c);if(_0x3a51a1[_0xe145('0x2e')][_0xe145('0x39')]){_0x226807[_0xe145('0x37')]=_[_0xe145('0x3a')](_0x226807[_0xe145('0x37')],{'$or':_[_0xe145('0x26')](_0x14895c,function(_0xe26c01){if(_0xe26c01[_0xe145('0x2a')]!==_0xe145('0x3b')){var _0x464657={};_0x464657[_0xe26c01[_0xe145('0x23')]]={'$like':'%'+_0x3a51a1['query'][_0xe145('0x39')]+'%'};return _0x464657;}})});}_0x226807=_[_0xe145('0x3a')]({},_0x226807,_0x3a51a1[_0xe145('0x3c')]);var _0x37e2f9={'where':_0x226807[_0xe145('0x37')]};return db['VoiceMailMessage']['count'](_0x37e2f9)[_0xe145('0x20')](function(_0x23190f){_0x1fb6a8[_0xe145('0x1a')]=_0x23190f;if(_0x3a51a1[_0xe145('0x2e')][_0xe145('0x3d')]){_0x226807[_0xe145('0x3e')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0xe145('0x3f')](_0x226807);})[_0xe145('0x20')](function(_0x20d9b2){_0x1fb6a8[_0xe145('0x40')]=_0x20d9b2;return _0x1fb6a8;})[_0xe145('0x20')](respondWithFilteredResult(_0x18c52a,_0x226807))[_0xe145('0x41')](handleError(_0x18c52a,null));};exports['show']=function(_0x2ead55,_0x3b932b){var _0x54ff88={'raw':!![],'where':{'id':_0x2ead55[_0xe145('0x42')]['id']}},_0x5edfa2={};_0x5edfa2['model']=_['keys'](db[_0xe145('0x27')][_0xe145('0x28')]);_0x5edfa2[_0xe145('0x2e')]=_['keys'](_0x2ead55[_0xe145('0x2e')]);_0x5edfa2[_0xe145('0x30')]=_[_0xe145('0x31')](_0x5edfa2['model'],_0x5edfa2['query']);_0x54ff88['attributes']=_['intersection'](_0x5edfa2[_0xe145('0x2c')],qs[_0xe145('0x33')](_0x2ead55[_0xe145('0x2e')]['fields']));_0x54ff88[_0xe145('0x32')]=_0x54ff88[_0xe145('0x32')][_0xe145('0x43')]?_0x54ff88[_0xe145('0x32')]:_0x5edfa2[_0xe145('0x2c')];if(_0x2ead55[_0xe145('0x2e')]['includeAll']){_0x54ff88['include']=[{'all':!![]}];}_0x54ff88=_[_0xe145('0x3a')]({},_0x54ff88,_0x2ead55[_0xe145('0x3c')]);return db[_0xe145('0x27')][_0xe145('0x44')](_0x54ff88)[_0xe145('0x20')](handleEntityNotFound(_0x3b932b,null))['then'](respondWithResult(_0x3b932b,null))[_0xe145('0x41')](handleError(_0x3b932b,null));};exports['create']=function(_0x47133e,_0x3c0a69){return db[_0xe145('0x27')][_0xe145('0x45')](_0x47133e[_0xe145('0x46')],{})[_0xe145('0x20')](respondWithResult(_0x3c0a69,0xc9))[_0xe145('0x41')](handleError(_0x3c0a69,null));};exports['update']=function(_0x55306a,_0x5e690d){if(_0x55306a[_0xe145('0x46')]['id']){delete _0x55306a['body']['id'];}return db[_0xe145('0x27')]['find']({'where':{'id':_0x55306a['params']['id']}})[_0xe145('0x20')](handleEntityNotFound(_0x5e690d,null))[_0xe145('0x20')](saveUpdates(_0x55306a['body'],null))[_0xe145('0x20')](respondWithResult(_0x5e690d,null))[_0xe145('0x41')](handleError(_0x5e690d,null));};exports[_0xe145('0x21')]=function(_0x13bbb2,_0x4c8cd6){return db[_0xe145('0x27')]['find']({'where':{'id':_0x13bbb2[_0xe145('0x42')]['id']}})[_0xe145('0x20')](handleEntityNotFound(_0x4c8cd6,null))['then'](removeEntity(_0x4c8cd6,null))['catch'](handleError(_0x4c8cd6,null));};exports[_0xe145('0x47')]=function(_0x49c19a,_0x5df5fd,_0xf2fc2){return db[_0xe145('0x27')][_0xe145('0x44')]({'where':{'id':_0x49c19a[_0xe145('0x42')]['id']},'attributes':['id','recording','msg_id']})[_0xe145('0x20')](handleEntityNotFound(_0x5df5fd,null))[_0xe145('0x20')](function(_0x3480e6){if(_0x3480e6){if(!_0x3480e6[_0xe145('0x48')]){throw new db[(_0xe145('0x49'))][(_0xe145('0x4a'))](_0xe145('0x4b'));}var _0x4ecfd8={'Content-Type':_0xe145('0x4c'),'Content-Disposition':_0xe145('0x4d')};if(_0x3480e6[_0xe145('0x4e')]){_0x4ecfd8[_0xe145('0x4f')]='attachment;\x20filename=\x22'+_0x3480e6[_0xe145('0x4e')]+'.wav\x22';}_0x5df5fd[_0xe145('0x1c')](_0x4ecfd8);return _0x5df5fd[_0xe145('0x24')](new Buffer(_0x3480e6[_0xe145('0x48')]));}})[_0xe145('0x41')](handleError(_0x5df5fd,null));};
\ No newline at end of file
+var _0x607e=['create','body','update','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','.wav\x22','set','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','keys','VoiceMailMessage','find'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x607e,0xb8));var _0xe607=function(_0x511a29,_0x53ab3b){_0x511a29=_0x511a29-0x0;var _0x4faa79=_0x607e[_0x511a29];return _0x4faa79;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe607('0x0'));var zipdir=require(_0xe607('0x1'));var jsonpatch=require(_0xe607('0x2'));var rp=require(_0xe607('0x3'));var moment=require(_0xe607('0x4'));var BPromise=require(_0xe607('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xe607('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe607('0x7'));var squel=require(_0xe607('0x8'));var crypto=require(_0xe607('0x9'));var jsforce=require(_0xe607('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xe607('0xb'));var querystring=require(_0xe607('0xc'));var Papa=require(_0xe607('0xd'));var Redis=require(_0xe607('0xe'));var authService=require(_0xe607('0xf'));var qs=require(_0xe607('0x10'));var as=require(_0xe607('0x11'));var hardwareService=require(_0xe607('0x12'));var logger=require(_0xe607('0x13'))('api');var utils=require(_0xe607('0x14'));var config=require(_0xe607('0x15'));var licenseUtil=require(_0xe607('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x508dcc,_0x154d86){_0x154d86=_0x154d86||0xcc;return function(_0x22bf3b){if(_0x22bf3b){return _0x508dcc[_0xe607('0x17')](_0x154d86);}return _0x508dcc[_0xe607('0x18')](_0x154d86)[_0xe607('0x19')]();};}function respondWithResult(_0x33b91c,_0x391d8e){_0x391d8e=_0x391d8e||0xc8;return function(_0x2da60b){if(_0x2da60b){return _0x33b91c[_0xe607('0x18')](_0x391d8e)[_0xe607('0x1a')](_0x2da60b);}};}function respondWithFilteredResult(_0x5ad78e,_0x320dc9){return function(_0x5042a2){if(_0x5042a2){var _0x5f177e=typeof _0x320dc9['offset']===_0xe607('0x1b')&&typeof _0x320dc9[_0xe607('0x1c')]===_0xe607('0x1b');var _0x2f865a=_0x5042a2[_0xe607('0x1d')];var _0x5e846d=_0x5f177e?0x0:_0x320dc9[_0xe607('0x1e')];var _0x3a1bcd=_0x5f177e?_0x5042a2[_0xe607('0x1d')]:_0x320dc9[_0xe607('0x1e')]+_0x320dc9['limit'];var _0x283727;if(_0x3a1bcd>=_0x2f865a){_0x3a1bcd=_0x2f865a;_0x283727=0xc8;}else{_0x283727=0xce;}_0x5ad78e['status'](_0x283727);return _0x5ad78e['set'](_0xe607('0x1f'),_0x5e846d+'-'+_0x3a1bcd+'/'+_0x2f865a)[_0xe607('0x1a')](_0x5042a2);}return null;};}function patchUpdates(_0x27f239){return function(_0x394b25){try{jsonpatch[_0xe607('0x20')](_0x394b25,_0x27f239,!![]);}catch(_0x2ba14a){return BPromise[_0xe607('0x21')](_0x2ba14a);}return _0x394b25[_0xe607('0x22')]();};}function saveUpdates(_0x28eb77,_0x259e8e){return function(_0x1cae3a){if(_0x1cae3a){return _0x1cae3a['update'](_0x28eb77)[_0xe607('0x23')](function(_0x2d5d72){return _0x2d5d72;});}return null;};}function removeEntity(_0x23e215,_0x5d5da0){return function(_0xa3de3e){if(_0xa3de3e){return _0xa3de3e[_0xe607('0x24')]()['then'](function(){_0x23e215[_0xe607('0x18')](0xcc)[_0xe607('0x19')]();});}};}function handleEntityNotFound(_0x282a35,_0x3fdfea){return function(_0x18ce6e){if(!_0x18ce6e){_0x282a35[_0xe607('0x17')](0x194);}return _0x18ce6e;};}function handleError(_0x4a3037,_0x81a344){_0x81a344=_0x81a344||0x1f4;return function(_0x34df53){logger[_0xe607('0x25')](_0x34df53[_0xe607('0x26')]);if(_0x34df53['name']){delete _0x34df53[_0xe607('0x27')];}_0x4a3037[_0xe607('0x18')](_0x81a344)[_0xe607('0x28')](_0x34df53);};}exports[_0xe607('0x29')]=function(_0x112130,_0x43c187){var _0x36fb54={},_0xeab4a5={},_0x5484cc={'count':0x0,'rows':[]};var _0x34edd7=_[_0xe607('0x2a')](db['VoiceMailMessage'][_0xe607('0x2b')],function(_0x40d45a){return{'name':_0x40d45a[_0xe607('0x2c')],'type':_0x40d45a[_0xe607('0x2d')][_0xe607('0x2e')]};});_0xeab4a5[_0xe607('0x2f')]=_['differenceBy'](_[_0xe607('0x2a')](_0x34edd7,_0xe607('0x27')),[_0xe607('0x27')]);_0xeab4a5[_0xe607('0x30')]=_['keys'](_0x112130[_0xe607('0x30')]);_0xeab4a5[_0xe607('0x31')]=_['intersection'](_0xeab4a5[_0xe607('0x2f')],_0xeab4a5['query']);_0x36fb54['attributes']=_[_0xe607('0x32')](_0xeab4a5[_0xe607('0x2f')],qs[_0xe607('0x33')](_0x112130[_0xe607('0x30')][_0xe607('0x33')]));_0x36fb54[_0xe607('0x34')]=_0x36fb54[_0xe607('0x34')][_0xe607('0x35')]?_0x36fb54['attributes']:_0xeab4a5['model'];if(!_0x112130[_0xe607('0x30')][_0xe607('0x36')](_0xe607('0x37'))){_0x36fb54[_0xe607('0x1c')]=qs[_0xe607('0x1c')](_0x112130['query'][_0xe607('0x1c')]);_0x36fb54['offset']=qs[_0xe607('0x1e')](_0x112130[_0xe607('0x30')][_0xe607('0x1e')]);}_0x36fb54['order']=qs[_0xe607('0x38')](_0x112130['query'][_0xe607('0x38')]);_0x36fb54[_0xe607('0x39')]=qs['filters'](_[_0xe607('0x3a')](_0x112130[_0xe607('0x30')],_0xeab4a5[_0xe607('0x31')]),_0x34edd7);if(_0x112130[_0xe607('0x30')][_0xe607('0x3b')]){_0x36fb54[_0xe607('0x39')]=_[_0xe607('0x3c')](_0x36fb54[_0xe607('0x39')],{'$or':_[_0xe607('0x2a')](_0x34edd7,function(_0x32e240){if(_0x32e240[_0xe607('0x2d')]!==_0xe607('0x3d')){var _0x4fa4bf={};_0x4fa4bf[_0x32e240[_0xe607('0x27')]]={'$like':'%'+_0x112130[_0xe607('0x30')][_0xe607('0x3b')]+'%'};return _0x4fa4bf;}})});}_0x36fb54=_[_0xe607('0x3c')]({},_0x36fb54,_0x112130[_0xe607('0x3e')]);var _0xd9ba20={'where':_0x36fb54['where']};return db['VoiceMailMessage'][_0xe607('0x1d')](_0xd9ba20)[_0xe607('0x23')](function(_0x2f1ac1){_0x5484cc[_0xe607('0x1d')]=_0x2f1ac1;if(_0x112130[_0xe607('0x30')][_0xe607('0x3f')]){_0x36fb54[_0xe607('0x40')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x36fb54);})[_0xe607('0x23')](function(_0x3300e5){_0x5484cc[_0xe607('0x41')]=_0x3300e5;return _0x5484cc;})[_0xe607('0x23')](respondWithFilteredResult(_0x43c187,_0x36fb54))[_0xe607('0x42')](handleError(_0x43c187,null));};exports['show']=function(_0x460d7d,_0x3a3738){var _0x265b2e={'raw':!![],'where':{'id':_0x460d7d[_0xe607('0x43')]['id']}},_0x3b1dc5={};_0x3b1dc5[_0xe607('0x2f')]=_[_0xe607('0x44')](db[_0xe607('0x45')][_0xe607('0x2b')]);_0x3b1dc5[_0xe607('0x30')]=_['keys'](_0x460d7d[_0xe607('0x30')]);_0x3b1dc5[_0xe607('0x31')]=_[_0xe607('0x32')](_0x3b1dc5[_0xe607('0x2f')],_0x3b1dc5[_0xe607('0x30')]);_0x265b2e[_0xe607('0x34')]=_[_0xe607('0x32')](_0x3b1dc5[_0xe607('0x2f')],qs['fields'](_0x460d7d['query'][_0xe607('0x33')]));_0x265b2e[_0xe607('0x34')]=_0x265b2e['attributes'][_0xe607('0x35')]?_0x265b2e[_0xe607('0x34')]:_0x3b1dc5[_0xe607('0x2f')];if(_0x460d7d['query'][_0xe607('0x3f')]){_0x265b2e['include']=[{'all':!![]}];}_0x265b2e=_[_0xe607('0x3c')]({},_0x265b2e,_0x460d7d['options']);return db[_0xe607('0x45')][_0xe607('0x46')](_0x265b2e)[_0xe607('0x23')](handleEntityNotFound(_0x3a3738,null))['then'](respondWithResult(_0x3a3738,null))[_0xe607('0x42')](handleError(_0x3a3738,null));};exports[_0xe607('0x47')]=function(_0x5a5c85,_0x3b6641){return db['VoiceMailMessage'][_0xe607('0x47')](_0x5a5c85[_0xe607('0x48')],{})[_0xe607('0x23')](respondWithResult(_0x3b6641,0xc9))[_0xe607('0x42')](handleError(_0x3b6641,null));};exports[_0xe607('0x49')]=function(_0x178f37,_0x1c1677){if(_0x178f37[_0xe607('0x48')]['id']){delete _0x178f37[_0xe607('0x48')]['id'];}return db[_0xe607('0x45')]['find']({'where':{'id':_0x178f37['params']['id']}})[_0xe607('0x23')](handleEntityNotFound(_0x1c1677,null))['then'](saveUpdates(_0x178f37[_0xe607('0x48')],null))['then'](respondWithResult(_0x1c1677,null))[_0xe607('0x42')](handleError(_0x1c1677,null));};exports[_0xe607('0x24')]=function(_0x2cee6d,_0x441d25){return db[_0xe607('0x45')][_0xe607('0x46')]({'where':{'id':_0x2cee6d[_0xe607('0x43')]['id']}})[_0xe607('0x23')](handleEntityNotFound(_0x441d25,null))[_0xe607('0x23')](removeEntity(_0x441d25,null))[_0xe607('0x42')](handleError(_0x441d25,null));};exports[_0xe607('0x4a')]=function(_0x54e2a2,_0x1d6980,_0x210ef6){return db[_0xe607('0x45')][_0xe607('0x46')]({'where':{'id':_0x54e2a2[_0xe607('0x43')]['id']},'attributes':['id',_0xe607('0x4b'),_0xe607('0x4c')]})[_0xe607('0x23')](handleEntityNotFound(_0x1d6980,null))[_0xe607('0x23')](function(_0x496d98){if(_0x496d98){if(!_0x496d98[_0xe607('0x4b')]){throw new db[(_0xe607('0x4d'))][(_0xe607('0x4e'))](_0xe607('0x4f'));}var _0x4056d8={'Content-Type':_0xe607('0x50'),'Content-Disposition':_0xe607('0x51')};if(_0x496d98[_0xe607('0x4c')]){_0x4056d8[_0xe607('0x52')]='attachment;\x20filename=\x22'+_0x496d98[_0xe607('0x4c')]+_0xe607('0x53');}_0x1d6980[_0xe607('0x54')](_0x4056d8);return _0x1d6980[_0xe607('0x28')](new Buffer(_0x496d98[_0xe607('0x4b')]));}})['catch'](handleError(_0x1d6980,null));};
\ No newline at end of file
index ef94bae..d9c04ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff5a=['VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./voiceMailMessage.attributes','exports','define'];(function(_0x4cc280,_0x3b77f3){var _0x16ed24=function(_0x473e10){while(--_0x473e10){_0x4cc280['push'](_0x4cc280['shift']());}};_0x16ed24(++_0x3b77f3);}(_0xff5a,0x13b));var _0xaff5=function(_0x17378c,_0xeb4e71){_0x17378c=_0x17378c-0x0;var _0x3e0fe2=_0xff5a[_0x17378c];return _0x3e0fe2;};'use strict';var _=require(_0xaff5('0x0'));var util=require(_0xaff5('0x1'));var logger=require(_0xaff5('0x2'))('api');var moment=require(_0xaff5('0x3'));var BPromise=require(_0xaff5('0x4'));var rp=require(_0xaff5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xaff5('0x6'));var attributes=require(_0xaff5('0x7'));module[_0xaff5('0x8')]=function(_0x1a9773,_0x24a7a5){return _0x1a9773[_0xaff5('0x9')](_0xaff5('0xa'),attributes,{'tableName':_0xaff5('0xb'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xaff5('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x7cdc=['api','moment','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','voice_voicemail_messages','dir','lodash','util','../../config/logger'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7cdc,0x115));var _0xc7cd=function(_0x59a538,_0x20ace2){_0x59a538=_0x59a538-0x0;var _0x27b0a5=_0x7cdc[_0x59a538];return _0x27b0a5;};'use strict';var _=require(_0xc7cd('0x0'));var util=require(_0xc7cd('0x1'));var logger=require(_0xc7cd('0x2'))(_0xc7cd('0x3'));var moment=require(_0xc7cd('0x4'));var BPromise=require('bluebird');var rp=require(_0xc7cd('0x5'));var fs=require('fs');var path=require(_0xc7cd('0x6'));var rimraf=require(_0xc7cd('0x7'));var config=require(_0xc7cd('0x8'));var attributes=require(_0xc7cd('0x9'));module[_0xc7cd('0xa')]=function(_0x130ba7,_0x47d070){return _0x130ba7[_0xc7cd('0xb')]('VoiceMailMessage',attributes,{'tableName':_0xc7cd('0xc'),'paranoid':![],'indexes':[{'name':_0xc7cd('0xd'),'fields':[_0xc7cd('0xd')]}],'timestamps':![]});};
\ No newline at end of file
index 60605ce..b36cd4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa889=['VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','catch','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x2183f1,_0x7927cc){var _0x443988=function(_0x2c2656){while(--_0x2c2656){_0x2183f1['push'](_0x2183f1['shift']());}};_0x443988(++_0x7927cc);}(_0xa889,0x105));var _0x9a88=function(_0x562213,_0x2e74c0){_0x562213=_0x562213-0x0;var _0x4a9293=_0xa889[_0x562213];return _0x4a9293;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x9a88('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9a88('0x1'));var db=require(_0x9a88('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x9a88('0x3'))(_0x9a88('0x4'));var config=require(_0x9a88('0x5'));var jayson=require(_0x9a88('0x6'));var client=jayson[_0x9a88('0x7')][_0x9a88('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4a2b13,_0x3b7ccb,_0x4d1e81){return new BPromise(function(_0x5487e8,_0x23cd14){return client['request'](_0x4a2b13,_0x4d1e81)[_0x9a88('0x9')](function(_0x91e5e4){logger[_0x9a88('0xa')](_0x9a88('0xb'),_0x3b7ccb,_0x9a88('0xc'));logger[_0x9a88('0xd')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x3b7ccb,_0x9a88('0xc'),JSON['stringify'](_0x91e5e4));if(_0x91e5e4['error']){if(_0x91e5e4[_0x9a88('0xe')]['code']===0x1f4){logger[_0x9a88('0xe')](_0x9a88('0xb'),_0x3b7ccb,_0x91e5e4['error']['message']);return _0x23cd14(_0x91e5e4['error'][_0x9a88('0xf')]);}logger[_0x9a88('0xe')](_0x9a88('0xb'),_0x3b7ccb,_0x91e5e4[_0x9a88('0xe')]['message']);return _0x5487e8(_0x91e5e4[_0x9a88('0xe')]['message']);}else{logger[_0x9a88('0xa')](_0x9a88('0xb'),_0x3b7ccb,_0x9a88('0xc'));_0x5487e8(_0x91e5e4['result'][_0x9a88('0xf')]);}})[_0x9a88('0x10')](function(_0x2db5e6){logger['error'](_0x9a88('0xb'),_0x3b7ccb,_0x2db5e6);_0x23cd14(_0x2db5e6);});});}
\ No newline at end of file
+var _0xed97=['jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2d5008,_0x20de54){var _0x58f8dd=function(_0x5e7716){while(--_0x5e7716){_0x2d5008['push'](_0x2d5008['shift']());}};_0x58f8dd(++_0x20de54);}(_0xed97,0x122));var _0x7ed9=function(_0x4f5d79,_0x483bd7){_0x4f5d79=_0x4f5d79-0x0;var _0x1eb68a=_0xed97[_0x4f5d79];return _0x1eb68a;};'use strict';var _=require(_0x7ed9('0x0'));var util=require('util');var moment=require(_0x7ed9('0x1'));var BPromise=require('bluebird');var rs=require(_0x7ed9('0x2'));var fs=require('fs');var Redis=require(_0x7ed9('0x3'));var db=require(_0x7ed9('0x4'))['db'];var utils=require(_0x7ed9('0x5'));var logger=require(_0x7ed9('0x6'))(_0x7ed9('0x7'));var config=require(_0x7ed9('0x8'));var jayson=require(_0x7ed9('0x9'));var client=jayson[_0x7ed9('0xa')][_0x7ed9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe24a65,_0x596db0,_0x1593f7){return new BPromise(function(_0x139077,_0x4c1b11){return client[_0x7ed9('0xc')](_0xe24a65,_0x1593f7)[_0x7ed9('0xd')](function(_0x13695e){logger[_0x7ed9('0xe')](_0x7ed9('0xf'),_0x596db0,_0x7ed9('0x10'));logger[_0x7ed9('0x11')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x596db0,'request\x20sent',JSON[_0x7ed9('0x12')](_0x13695e));if(_0x13695e[_0x7ed9('0x13')]){if(_0x13695e[_0x7ed9('0x13')][_0x7ed9('0x14')]===0x1f4){logger[_0x7ed9('0x13')](_0x7ed9('0xf'),_0x596db0,_0x13695e[_0x7ed9('0x13')][_0x7ed9('0x15')]);return _0x4c1b11(_0x13695e[_0x7ed9('0x13')][_0x7ed9('0x15')]);}logger[_0x7ed9('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x596db0,_0x13695e[_0x7ed9('0x13')][_0x7ed9('0x15')]);return _0x139077(_0x13695e[_0x7ed9('0x13')]['message']);}else{logger[_0x7ed9('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x596db0,_0x7ed9('0x10'));_0x139077(_0x13695e['result']['message']);}})[_0x7ed9('0x16')](function(_0x5f01ea){logger[_0x7ed9('0x13')](_0x7ed9('0xf'),_0x596db0,_0x5f01ea);_0x4c1b11(_0x5f01ea);});});}
\ No newline at end of file
index 64e4fe2..9a886f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ba=['post','create','put','destroy','/:id/sounds/:id2','multer','path','connect-timeout','Router','../../components/auth/service','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds'];(function(_0x4ea55f,_0x161bc4){var _0x52d49b=function(_0x4ec3b6){while(--_0x4ec3b6){_0x4ea55f['push'](_0x4ea55f['shift']());}};_0x52d49b(++_0x161bc4);}(_0xb1ba,0x15b));var _0xab1b=function(_0x2f647e,_0x16ddf9){_0x2f647e=_0x2f647e-0x0;var _0x45d8e5=_0xb1ba[_0x2f647e];return _0x45d8e5;};'use strict';var multer=require(_0xab1b('0x0'));var util=require('util');var path=require(_0xab1b('0x1'));var timeout=require(_0xab1b('0x2'));var express=require('express');var router=express[_0xab1b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xab1b('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xab1b('0x5'));router[_0xab1b('0x6')]('/',auth[_0xab1b('0x7')](),controller[_0xab1b('0x8')]);router[_0xab1b('0x6')](_0xab1b('0x9'),auth['isAuthenticated'](),controller[_0xab1b('0xa')]);router[_0xab1b('0x6')](_0xab1b('0xb'),auth['isAuthenticated'](),controller[_0xab1b('0xc')]);router[_0xab1b('0xd')]('/',auth[_0xab1b('0x7')](),controller[_0xab1b('0xe')]);router[_0xab1b('0xd')](_0xab1b('0xb'),auth[_0xab1b('0x7')](),controller['addSound']);router[_0xab1b('0xf')](_0xab1b('0x9'),auth[_0xab1b('0x7')](),controller['update']);router['delete'](_0xab1b('0x9'),auth['isAuthenticated'](),controller[_0xab1b('0x10')]);router['delete'](_0xab1b('0x11'),auth['isAuthenticated'](),controller['removeSound']);module['exports']=router;
\ No newline at end of file
+var _0x4690=['destroy','delete','/:id/sounds/:id2','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','show','getSounds','post','create','/:id/sounds','addSound','update'];(function(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0x4690,0x122));var _0x0469=function(_0x50e7d9,_0x4c2491){_0x50e7d9=_0x50e7d9-0x0;var _0x207c7d=_0x4690[_0x50e7d9];return _0x207c7d;};'use strict';var multer=require(_0x0469('0x0'));var util=require(_0x0469('0x1'));var path=require(_0x0469('0x2'));var timeout=require(_0x0469('0x3'));var express=require(_0x0469('0x4'));var router=express[_0x0469('0x5')]();var fs_extra=require(_0x0469('0x6'));var auth=require(_0x0469('0x7'));var interaction=require(_0x0469('0x8'));var config=require(_0x0469('0x9'));var controller=require(_0x0469('0xa'));router[_0x0469('0xb')]('/',auth[_0x0469('0xc')](),controller[_0x0469('0xd')]);router[_0x0469('0xb')](_0x0469('0xe'),auth[_0x0469('0xc')](),controller[_0x0469('0xf')]);router['get']('/:id/sounds',auth[_0x0469('0xc')](),controller[_0x0469('0x10')]);router[_0x0469('0x11')]('/',auth[_0x0469('0xc')](),controller[_0x0469('0x12')]);router[_0x0469('0x11')](_0x0469('0x13'),auth[_0x0469('0xc')](),controller[_0x0469('0x14')]);router['put']('/:id',auth[_0x0469('0xc')](),controller[_0x0469('0x15')]);router['delete'](_0x0469('0xe'),auth[_0x0469('0xc')](),controller[_0x0469('0x16')]);router[_0x0469('0x17')](_0x0469('0x18'),auth['isAuthenticated'](),controller['removeSound']);module[_0x0469('0x19')]=router;
\ No newline at end of file
index f635811..24306df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7da=['STRING','name','ENUM','custom','files','mp3nb','quietmp3','mp3','alpha','sequelize','exports'];(function(_0x833bc,_0x257292){var _0x2cc80f=function(_0x449232){while(--_0x449232){_0x833bc['push'](_0x833bc['shift']());}};_0x2cc80f(++_0x257292);}(_0xb7da,0x127));var _0xab7d=function(_0x5bfb78,_0x22e3ff){_0x5bfb78=_0x5bfb78-0x0;var _0x4efd00=_0xb7da[_0x5bfb78];return _0x4efd00;};'use strict';var Sequelize=require(_0xab7d('0x0'));module[_0xab7d('0x1')]={'name':{'type':Sequelize[_0xab7d('0x2')],'allowNull':![],'unique':_0xab7d('0x3')},'mode':{'type':Sequelize[_0xab7d('0x4')](_0xab7d('0x5'),_0xab7d('0x6'),_0xab7d('0x7'),'quietmp3nb',_0xab7d('0x8'),_0xab7d('0x9')),'allowNull':!![],'defaultValue':_0xab7d('0x6')},'directory':{'type':Sequelize[_0xab7d('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0xab7d('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0xab7d('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0xab7d('0x2')],'allowNull':!![],'defaultValue':_0xab7d('0xa')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcebb=['TIMESTAMP','sequelize','exports','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','STRING','alpha'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xcebb,0xf1));var _0xbceb=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0xcebb[_0x178e48];return _0x440d7e;};'use strict';var Sequelize=require(_0xbceb('0x0'));module[_0xbceb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0xbceb('0x2')](_0xbceb('0x3'),_0xbceb('0x4'),_0xbceb('0x5'),_0xbceb('0x6'),_0xbceb('0x7'),_0xbceb('0x8')),'allowNull':!![],'defaultValue':_0xbceb('0x4')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0xbceb('0x9')],'allowNull':!![]},'digit':{'type':Sequelize[_0xbceb('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0xbceb('0x9')],'allowNull':!![],'defaultValue':_0xbceb('0xa')},'format':{'type':Sequelize[_0xbceb('0x9')],'allowNull':!![]},'stamp':{'type':_0xbceb('0xb')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 05b526d..c790d2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5db8=['%s.%s','basename','extname','symlinkSync','removeSound','id2','unlinkSync','getSounds','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','MusicOnHolds','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','findAll','rows','catch','show','include','merge','options','body','find','params','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','0777','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format'];(function(_0x3efa98,_0xd442bb){var _0x771948=function(_0x519b78){while(--_0x519b78){_0x3efa98['push'](_0x3efa98['shift']());}};_0x771948(++_0xd442bb);}(_0x5db8,0xee));var _0x85db=function(_0x1c9c24,_0x2a517b){_0x1c9c24=_0x1c9c24-0x0;var _0x349c69=_0x5db8[_0x1c9c24];return _0x349c69;};'use strict';var emlformat=require(_0x85db('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x85db('0x1'));var jsonpatch=require(_0x85db('0x2'));var rp=require(_0x85db('0x3'));var moment=require(_0x85db('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x85db('0x5'));var util=require(_0x85db('0x6'));var path=require('path');var sox=require(_0x85db('0x7'));var csv=require(_0x85db('0x8'));var ejs=require(_0x85db('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x85db('0xa'));var squel=require(_0x85db('0xb'));var crypto=require(_0x85db('0xc'));var jsforce=require(_0x85db('0xd'));var deskjs=require(_0x85db('0xe'));var toCsv=require(_0x85db('0x8'));var querystring=require(_0x85db('0xf'));var Papa=require(_0x85db('0x10'));var Redis=require('ioredis');var authService=require(_0x85db('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x85db('0x12'));var hardwareService=require(_0x85db('0x13'));var logger=require('../../config/logger')(_0x85db('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x85db('0x15'));var db=require(_0x85db('0x16'))['db'];function respondWithStatusCode(_0x42c7e5,_0x5df536){_0x5df536=_0x5df536||0xcc;return function(_0x106acf){if(_0x106acf){return _0x42c7e5['sendStatus'](_0x5df536);}return _0x42c7e5[_0x85db('0x17')](_0x5df536)[_0x85db('0x18')]();};}function respondWithResult(_0x54551b,_0x572692){_0x572692=_0x572692||0xc8;return function(_0x15e6ee){if(_0x15e6ee){return _0x54551b[_0x85db('0x17')](_0x572692)[_0x85db('0x19')](_0x15e6ee);}};}function respondWithFilteredResult(_0x4cd8fb,_0x195c74){return function(_0x1cb40d){if(_0x1cb40d){var _0x470ff2=typeof _0x195c74[_0x85db('0x1a')]===_0x85db('0x1b')&&typeof _0x195c74[_0x85db('0x1c')]===_0x85db('0x1b');var _0x478f62=_0x1cb40d[_0x85db('0x1d')];var _0x2c3934=_0x470ff2?0x0:_0x195c74[_0x85db('0x1a')];var _0x230bee=_0x470ff2?_0x1cb40d[_0x85db('0x1d')]:_0x195c74[_0x85db('0x1a')]+_0x195c74[_0x85db('0x1c')];var _0x415f39;if(_0x230bee>=_0x478f62){_0x230bee=_0x478f62;_0x415f39=0xc8;}else{_0x415f39=0xce;}_0x4cd8fb[_0x85db('0x17')](_0x415f39);return _0x4cd8fb[_0x85db('0x1e')](_0x85db('0x1f'),_0x2c3934+'-'+_0x230bee+'/'+_0x478f62)[_0x85db('0x19')](_0x1cb40d);}return null;};}function patchUpdates(_0xdef8ed){return function(_0x289b35){try{jsonpatch[_0x85db('0x20')](_0x289b35,_0xdef8ed,!![]);}catch(_0x3a100f){return BPromise[_0x85db('0x21')](_0x3a100f);}return _0x289b35[_0x85db('0x22')]();};}function saveUpdates(_0x981d6,_0x238c02){return function(_0x471fdc){if(_0x471fdc){return _0x471fdc[_0x85db('0x23')](_0x981d6)['then'](function(_0x3ec077){return _0x3ec077;});}return null;};}function removeEntity(_0x25e7af,_0x5f3d34){return function(_0x3a0a36){if(_0x3a0a36){return _0x3a0a36[_0x85db('0x24')]()[_0x85db('0x25')](function(){var _0x5372c6=_0x3a0a36[_0x85db('0x26')]({'plain':!![]});var _0x322392=_0x85db('0x27');return db[_0x85db('0x28')][_0x85db('0x24')]({'where':{'type':_0x322392,'resourceId':_0x5372c6['id']}})['then'](function(){return _0x3a0a36;});})[_0x85db('0x25')](function(){_0x25e7af['status'](0xcc)[_0x85db('0x18')]();});}};}function handleEntityNotFound(_0x3c2d67,_0xf45e7a){return function(_0x2d41b0){if(!_0x2d41b0){_0x3c2d67['sendStatus'](0x194);}return _0x2d41b0;};}function handleError(_0x47a9cd,_0x5683f9){_0x5683f9=_0x5683f9||0x1f4;return function(_0x555073){logger[_0x85db('0x29')](_0x555073[_0x85db('0x2a')]);if(_0x555073[_0x85db('0x2b')]){delete _0x555073[_0x85db('0x2b')];}_0x47a9cd['status'](_0x5683f9)[_0x85db('0x2c')](_0x555073);};}exports[_0x85db('0x2d')]=function(_0x52a465,_0x2e1620){var _0x551b41={},_0x3b8c02={},_0xd289f8={'count':0x0,'rows':[]};var _0x501878=_[_0x85db('0x2e')](db[_0x85db('0x2f')][_0x85db('0x30')],function(_0x18ee77){return{'name':_0x18ee77['fieldName'],'type':_0x18ee77[_0x85db('0x31')]['key']};});_0x3b8c02[_0x85db('0x32')]=_['map'](_0x501878,_0x85db('0x2b'));_0x3b8c02[_0x85db('0x33')]=_[_0x85db('0x34')](_0x52a465[_0x85db('0x33')]);_0x3b8c02[_0x85db('0x35')]=_[_0x85db('0x36')](_0x3b8c02[_0x85db('0x32')],_0x3b8c02[_0x85db('0x33')]);_0x551b41[_0x85db('0x37')]=_[_0x85db('0x36')](_0x3b8c02['model'],qs['fields'](_0x52a465[_0x85db('0x33')][_0x85db('0x38')]));_0x551b41[_0x85db('0x37')]=_0x551b41[_0x85db('0x37')][_0x85db('0x39')]?_0x551b41[_0x85db('0x37')]:_0x3b8c02[_0x85db('0x32')];if(!_0x52a465[_0x85db('0x33')][_0x85db('0x3a')](_0x85db('0x3b'))){_0x551b41[_0x85db('0x1c')]=qs['limit'](_0x52a465['query'][_0x85db('0x1c')]);_0x551b41[_0x85db('0x1a')]=qs['offset'](_0x52a465[_0x85db('0x33')][_0x85db('0x1a')]);}_0x551b41[_0x85db('0x3c')]=qs[_0x85db('0x3d')](_0x52a465[_0x85db('0x33')][_0x85db('0x3d')]);delete _0x52a465['query'][_0x85db('0x3d')];_0x551b41[_0x85db('0x3e')]=qs[_0x85db('0x35')](_[_0x85db('0x3f')](_0x52a465[_0x85db('0x33')],_0x3b8c02['filters']),_0x501878);if(_0x52a465[_0x85db('0x33')][_0x85db('0x40')]){_0x551b41[_0x85db('0x3e')]=_['merge'](_0x551b41['where'],{'$or':_[_0x85db('0x2e')](_0x501878,function(_0x1f0ad9){if(_0x1f0ad9[_0x85db('0x31')]!==_0x85db('0x41')){var _0x3068cc={};_0x3068cc[_0x1f0ad9[_0x85db('0x2b')]]={'$like':'%'+_0x52a465['query'][_0x85db('0x40')]+'%'};return _0x3068cc;}})});}_0x551b41=_['merge']({},_0x551b41,_0x52a465['options']);var _0x2f09c7={'where':_0x551b41[_0x85db('0x3e')]};return db[_0x85db('0x2f')]['count'](_0x2f09c7)[_0x85db('0x25')](function(_0x477959){_0xd289f8[_0x85db('0x1d')]=_0x477959;if(_0x52a465[_0x85db('0x33')][_0x85db('0x42')]){_0x551b41['include']=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x85db('0x43')](_0x551b41);})['then'](function(_0x22a8f6){_0xd289f8[_0x85db('0x44')]=_0x22a8f6;return _0xd289f8;})[_0x85db('0x25')](respondWithFilteredResult(_0x2e1620,_0x551b41))[_0x85db('0x45')](handleError(_0x2e1620,null));};exports[_0x85db('0x46')]=function(_0x276be7,_0x29c6b8){var _0x3165ff={'raw':![],'where':{'id':_0x276be7['params']['id']}},_0x4b24a3={};_0x4b24a3[_0x85db('0x32')]=_[_0x85db('0x34')](db[_0x85db('0x2f')]['rawAttributes']);_0x4b24a3['query']=_[_0x85db('0x34')](_0x276be7['query']);_0x4b24a3[_0x85db('0x35')]=_['intersection'](_0x4b24a3[_0x85db('0x32')],_0x4b24a3[_0x85db('0x33')]);_0x3165ff[_0x85db('0x37')]=_[_0x85db('0x36')](_0x4b24a3[_0x85db('0x32')],qs[_0x85db('0x38')](_0x276be7[_0x85db('0x33')][_0x85db('0x38')]));_0x3165ff[_0x85db('0x37')]=_0x3165ff[_0x85db('0x37')][_0x85db('0x39')]?_0x3165ff[_0x85db('0x37')]:_0x4b24a3['model'];if(_0x276be7[_0x85db('0x33')][_0x85db('0x42')]){_0x3165ff[_0x85db('0x47')]=[{'all':!![]}];}_0x3165ff=_[_0x85db('0x48')]({},_0x3165ff,_0x276be7[_0x85db('0x49')]);return db['VoiceMusicOnHold']['find'](_0x3165ff)[_0x85db('0x25')](handleEntityNotFound(_0x29c6b8,null))[_0x85db('0x25')](respondWithResult(_0x29c6b8,null))[_0x85db('0x45')](handleError(_0x29c6b8,null));};exports['update']=function(_0x43b79b,_0x5a7bd0){if(_0x43b79b[_0x85db('0x4a')]['id']){delete _0x43b79b['body']['id'];}return db['VoiceMusicOnHold'][_0x85db('0x4b')]({'where':{'id':_0x43b79b[_0x85db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5a7bd0,null))[_0x85db('0x25')](saveUpdates(_0x43b79b[_0x85db('0x4a')],null))[_0x85db('0x25')](respondWithResult(_0x5a7bd0,null))[_0x85db('0x45')](handleError(_0x5a7bd0,null));};exports[_0x85db('0x4d')]=function(_0x42dcef,_0x491030,_0x1af4b8){return db[_0x85db('0x4e')][_0x85db('0x4f')](function(_0xe4c3cc){if(_0x42dcef[_0x85db('0x4a')][_0x85db('0x50')]===_0x85db('0x51')){_0x42dcef[_0x85db('0x4a')][_0x85db('0x52')]=path[_0x85db('0x53')](config[_0x85db('0x54')],_0x85db('0x55'),_0x42dcef[_0x85db('0x4a')][_0x85db('0x2b')]);}return db['VoiceMusicOnHold']['create'](_0x42dcef[_0x85db('0x4a')],{'transaction':_0xe4c3cc})[_0x85db('0x25')](function(_0x2399f9){if(_0x42dcef['body'][_0x85db('0x50')]==='files'){fs['mkdirSync'](_0x2399f9[_0x85db('0x52')],parseInt(_0x85db('0x56'),0x8));}var _0x1ffdc2=_0x42dcef[_0x85db('0x57')][_0x85db('0x26')]({'plain':!![]});if(!_0x1ffdc2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1ffdc2[_0x85db('0x58')]===_0x85db('0x57')){var _0xc50c3=_0x2399f9[_0x85db('0x26')]({'plain':!![]});return db[_0x85db('0x59')][_0x85db('0x4b')]({'where':{'name':'MusicOnHolds','userProfileId':_0x1ffdc2[_0x85db('0x5a')]},'raw':!![]})[_0x85db('0x25')](function(_0x1f4e16){if(_0x1f4e16&&_0x1f4e16[_0x85db('0x5b')]===0x0){return db[_0x85db('0x28')]['create']({'name':_0xc50c3[_0x85db('0x2b')],'resourceId':_0xc50c3['id'],'type':_0x1f4e16['name'],'sectionId':_0x1f4e16['id']},{})[_0x85db('0x25')](function(){return _0x2399f9;});}else{return _0x2399f9;}})[_0x85db('0x45')](function(_0x40f691){logger[_0x85db('0x29')](_0x85db('0x5c'),_0x40f691);});}return _0x2399f9;});})[_0x85db('0x25')](respondWithResult(_0x491030,0xc9))[_0x85db('0x45')](handleError(_0x491030,null));};exports[_0x85db('0x24')]=function(_0x8ebc03,_0x2b6bba,_0x151d13){var _0x2539ea;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x8ebc03[_0x85db('0x4c')]['id']}})[_0x85db('0x25')](function(_0x53648b){if(_0x53648b){return db[_0x85db('0x4e')][_0x85db('0x4f')](function(_0x9bce63){return _0x53648b[_0x85db('0x24')]({'transaction':_0x9bce63,'raw':!![]})[_0x85db('0x25')](function(_0x374a65){if(_0x374a65[_0x85db('0x52')]){fs[_0x85db('0x5d')](_0x374a65['directory'])[_0x85db('0x5e')](function(_0x3ad026){fs['unlinkSync'](path['join'](_0x374a65[_0x85db('0x52')],_0x3ad026));});fs[_0x85db('0x5f')](_0x374a65[_0x85db('0x52')]);}return _0x374a65;});})[_0x85db('0x45')](function(_0x41d8ea){throw new db[(_0x85db('0x60'))][(_0x85db('0x61'))](_0x41d8ea[_0x85db('0x62')]);});}})[_0x85db('0x25')](handleEntityNotFound(_0x2b6bba,null))[_0x85db('0x25')](removeEntity(_0x2b6bba,null))[_0x85db('0x45')](handleError(_0x2b6bba,null));};exports[_0x85db('0x63')]=function(_0x466a55,_0x2f2923,_0x124d95){return db[_0x85db('0x4e')][_0x85db('0x4f')](function(_0x4f5f31){var _0x1a2322;return db[_0x85db('0x2f')][_0x85db('0x4b')]({'where':{'id':_0x466a55[_0x85db('0x4c')]['id']}})['then'](function(_0x5efbf8){if(_0x5efbf8){_0x1a2322=_0x5efbf8;return _0x5efbf8[_0x85db('0x63')](_0x466a55[_0x85db('0x4a')]['id'],{'transaction':_0x4f5f31});}})[_0x85db('0x25')](function(_0x4dbb76){if(_0x4dbb76){return db[_0x85db('0x64')][_0x85db('0x65')]({'where':{'id':_0x466a55[_0x85db('0x4a')]['id']},'attributes':['id',_0x85db('0x2b'),_0x85db('0x66'),_0x85db('0x67'),_0x85db('0x68')],'raw':!![]});}})['then'](function(_0x9ad6ca){if(_0x9ad6ca){var _0x3a1606=path[_0x85db('0x53')](config['root'],_0x85db('0x69'),util[_0x85db('0x6a')](_0x85db('0x6b'),path[_0x85db('0x6c')](_0x9ad6ca[_0x85db('0x66')],path[_0x85db('0x6d')](_0x9ad6ca[_0x85db('0x66')])),_0x9ad6ca[_0x85db('0x67')]));var _0x350bc3=path[_0x85db('0x53')](config['root'],_0x85db('0x55'),_0x1a2322[_0x85db('0x2b')],util[_0x85db('0x6a')]('%s.%s',_0x9ad6ca[_0x85db('0x2b')],_0x9ad6ca['converted_format']));fs[_0x85db('0x6e')](_0x3a1606,_0x350bc3);return _0x9ad6ca;}})[_0x85db('0x45')](function(_0x375e20){throw new db[(_0x85db('0x60'))][(_0x85db('0x61'))](_0x375e20[_0x85db('0x62')]);});})['then'](handleEntityNotFound(_0x2f2923,null))[_0x85db('0x25')](respondWithResult(_0x2f2923,0xc9))[_0x85db('0x45')](handleError(_0x2f2923,null));};exports[_0x85db('0x6f')]=function(_0x4ea8f9,_0x11fa2e,_0x316b10){return db['sequelize']['transaction'](function(_0xbf04a0){var _0x2476ab;return db[_0x85db('0x2f')][_0x85db('0x65')]({'where':{'id':_0x4ea8f9[_0x85db('0x4c')]['id']}})[_0x85db('0x25')](handleEntityNotFound(_0x11fa2e,null))[_0x85db('0x25')](function(_0x1b4802){if(_0x1b4802){_0x2476ab=_0x1b4802;return _0x1b4802[_0x85db('0x6f')](_0x4ea8f9['params'][_0x85db('0x70')]);}})['then'](function(_0x37afcf){if(_0x37afcf){return db[_0x85db('0x64')][_0x85db('0x65')]({'where':{'id':_0x4ea8f9[_0x85db('0x4c')][_0x85db('0x70')]},'attributes':['id',_0x85db('0x2b'),_0x85db('0x66'),'converted_format',_0x85db('0x68')],'raw':!![]});}})[_0x85db('0x25')](function(_0x526954){if(_0x526954){fs[_0x85db('0x71')](path[_0x85db('0x53')](_0x2476ab[_0x85db('0x52')],util[_0x85db('0x6a')](_0x85db('0x6b'),_0x526954['name'],_0x526954['converted_format'])));return _0x526954;}})['catch'](function(_0x53c24a){throw new db['Sequelize'][(_0x85db('0x61'))](_0x53c24a[_0x85db('0x62')]);});})['then'](handleEntityNotFound(_0x11fa2e,null))[_0x85db('0x25')](respondWithStatusCode(_0x11fa2e,0xcc))[_0x85db('0x45')](handleError(_0x11fa2e,null));};exports[_0x85db('0x72')]=function(_0x38d11e,_0x4b3664,_0x14b1ba){var _0x50806d={};var _0x244fd1={};var _0x1375e4;var _0x3205d2;return db[_0x85db('0x2f')][_0x85db('0x65')]({'where':{'id':_0x38d11e['params']['id']}})[_0x85db('0x25')](handleEntityNotFound(_0x4b3664,null))['then'](function(_0x272a10){if(_0x272a10){_0x1375e4=_0x272a10;_0x244fd1[_0x85db('0x32')]=_['keys'](db[_0x85db('0x64')][_0x85db('0x30')]);_0x244fd1[_0x85db('0x33')]=_[_0x85db('0x34')](_0x38d11e[_0x85db('0x33')]);_0x244fd1[_0x85db('0x35')]=_[_0x85db('0x36')](_0x244fd1[_0x85db('0x32')],_0x244fd1[_0x85db('0x33')]);_0x50806d[_0x85db('0x37')]=_['intersection'](_0x244fd1[_0x85db('0x32')],qs[_0x85db('0x38')](_0x38d11e[_0x85db('0x33')][_0x85db('0x38')]));_0x50806d['attributes']=_0x50806d[_0x85db('0x37')]['length']?_0x50806d['attributes']:_0x244fd1[_0x85db('0x32')];_0x50806d[_0x85db('0x3c')]=qs[_0x85db('0x3d')](_0x38d11e[_0x85db('0x33')][_0x85db('0x3d')]);_0x50806d[_0x85db('0x3e')]=qs[_0x85db('0x35')](_[_0x85db('0x3f')](_0x38d11e[_0x85db('0x33')],_0x244fd1[_0x85db('0x35')]));if(_0x38d11e['query'][_0x85db('0x40')]){_0x50806d[_0x85db('0x3e')]=_[_0x85db('0x48')](_0x50806d[_0x85db('0x3e')],{'$or':_['map'](_0x50806d[_0x85db('0x37')],function(_0x488faa){var _0x1aad58={};_0x1aad58[_0x488faa]={'$like':'%'+_0x38d11e[_0x85db('0x33')]['filter']+'%'};return _0x1aad58;})});}_0x50806d=_[_0x85db('0x48')]({},_0x50806d,_0x38d11e['options']);return _0x1375e4[_0x85db('0x72')](_0x50806d);}})[_0x85db('0x25')](function(_0x5c099d){if(_0x5c099d){_0x3205d2=_0x5c099d[_0x85db('0x39')];if(!_0x38d11e[_0x85db('0x33')]['hasOwnProperty'](_0x85db('0x3b'))){_0x50806d[_0x85db('0x1c')]=qs['limit'](_0x38d11e[_0x85db('0x33')]['limit']);_0x50806d[_0x85db('0x1a')]=qs[_0x85db('0x1a')](_0x38d11e[_0x85db('0x33')][_0x85db('0x1a')]);}return _0x1375e4['getSounds'](_0x50806d);}})['then'](function(_0x39425e){if(_0x39425e){return _0x39425e?{'count':_0x3205d2,'rows':_0x39425e}:null;}})[_0x85db('0x25')](respondWithResult(_0x4b3664,null))['catch'](handleError(_0x4b3664,null));};
\ No newline at end of file
+var _0x247b=['options','body','find','params','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','readdirSync','unlinkSync','rmdirSync','ValidationError','message','addSound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','Sequelize','removeSound','id2','Sound','getSounds','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','save','update','then','get','MusicOnHolds','UserProfileResource','stack','name','index','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','filter','VoiceMusicOnHold','includeAll','findAll','catch','show','rawAttributes','include'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x247b,0x175));var _0xb247=function(_0x266908,_0x55d579){_0x266908=_0x266908-0x0;var _0x5e508a=_0x247b[_0x266908];return _0x5e508a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb247('0x0'));var zipdir=require(_0xb247('0x1'));var jsonpatch=require(_0xb247('0x2'));var rp=require(_0xb247('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb247('0x4'));var util=require('util');var path=require(_0xb247('0x5'));var sox=require(_0xb247('0x6'));var csv=require(_0xb247('0x7'));var ejs=require(_0xb247('0x8'));var fs=require('fs');var fs_extra=require(_0xb247('0x9'));var _=require('lodash');var squel=require(_0xb247('0xa'));var crypto=require(_0xb247('0xb'));var jsforce=require(_0xb247('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xb247('0x7'));var querystring=require('querystring');var Papa=require(_0xb247('0xd'));var Redis=require(_0xb247('0xe'));var authService=require(_0xb247('0xf'));var qs=require(_0xb247('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb247('0x11'))(_0xb247('0x12'));var utils=require(_0xb247('0x13'));var config=require(_0xb247('0x14'));var licenseUtil=require(_0xb247('0x15'));var db=require(_0xb247('0x16'))['db'];function respondWithStatusCode(_0x53c65f,_0x3da21f){_0x3da21f=_0x3da21f||0xcc;return function(_0x116bcc){if(_0x116bcc){return _0x53c65f[_0xb247('0x17')](_0x3da21f);}return _0x53c65f['status'](_0x3da21f)[_0xb247('0x18')]();};}function respondWithResult(_0x178270,_0x541df7){_0x541df7=_0x541df7||0xc8;return function(_0x4286be){if(_0x4286be){return _0x178270['status'](_0x541df7)[_0xb247('0x19')](_0x4286be);}};}function respondWithFilteredResult(_0xe8e188,_0x346e35){return function(_0x328a92){if(_0x328a92){var _0x494e58=typeof _0x346e35[_0xb247('0x1a')]==='undefined'&&typeof _0x346e35[_0xb247('0x1b')]===_0xb247('0x1c');var _0x17c3c2=_0x328a92['count'];var _0x5a01d7=_0x494e58?0x0:_0x346e35['offset'];var _0x5ad217=_0x494e58?_0x328a92[_0xb247('0x1d')]:_0x346e35[_0xb247('0x1a')]+_0x346e35[_0xb247('0x1b')];var _0x5883ac;if(_0x5ad217>=_0x17c3c2){_0x5ad217=_0x17c3c2;_0x5883ac=0xc8;}else{_0x5883ac=0xce;}_0xe8e188[_0xb247('0x1e')](_0x5883ac);return _0xe8e188[_0xb247('0x1f')]('Content-Range',_0x5a01d7+'-'+_0x5ad217+'/'+_0x17c3c2)[_0xb247('0x19')](_0x328a92);}return null;};}function patchUpdates(_0x27f0fc){return function(_0x22d294){try{jsonpatch['apply'](_0x22d294,_0x27f0fc,!![]);}catch(_0x262eb4){return BPromise['reject'](_0x262eb4);}return _0x22d294[_0xb247('0x20')]();};}function saveUpdates(_0x3b97ab,_0x2e131e){return function(_0xc9bf10){if(_0xc9bf10){return _0xc9bf10[_0xb247('0x21')](_0x3b97ab)[_0xb247('0x22')](function(_0x148afd){return _0x148afd;});}return null;};}function removeEntity(_0x332fd6,_0x11b1c3){return function(_0xbd1833){if(_0xbd1833){return _0xbd1833['destroy']()[_0xb247('0x22')](function(){var _0x2ac596=_0xbd1833[_0xb247('0x23')]({'plain':!![]});var _0x2f81ec=_0xb247('0x24');return db[_0xb247('0x25')]['destroy']({'where':{'type':_0x2f81ec,'resourceId':_0x2ac596['id']}})[_0xb247('0x22')](function(){return _0xbd1833;});})[_0xb247('0x22')](function(){_0x332fd6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xe71bf7,_0x3c3175){return function(_0x430afd){if(!_0x430afd){_0xe71bf7[_0xb247('0x17')](0x194);}return _0x430afd;};}function handleError(_0x51c75a,_0x39737b){_0x39737b=_0x39737b||0x1f4;return function(_0x3f83d0){logger['error'](_0x3f83d0[_0xb247('0x26')]);if(_0x3f83d0['name']){delete _0x3f83d0[_0xb247('0x27')];}_0x51c75a[_0xb247('0x1e')](_0x39737b)['send'](_0x3f83d0);};}exports[_0xb247('0x28')]=function(_0x496cee,_0x50b2f6){var _0x17ccb8={},_0x4ec21d={},_0x352517={'count':0x0,'rows':[]};var _0x31c015=_['map'](db['VoiceMusicOnHold']['rawAttributes'],function(_0x2ae75f){return{'name':_0x2ae75f[_0xb247('0x29')],'type':_0x2ae75f[_0xb247('0x2a')][_0xb247('0x2b')]};});_0x4ec21d[_0xb247('0x2c')]=_[_0xb247('0x2d')](_0x31c015,_0xb247('0x27'));_0x4ec21d[_0xb247('0x2e')]=_[_0xb247('0x2f')](_0x496cee['query']);_0x4ec21d[_0xb247('0x30')]=_[_0xb247('0x31')](_0x4ec21d[_0xb247('0x2c')],_0x4ec21d['query']);_0x17ccb8[_0xb247('0x32')]=_['intersection'](_0x4ec21d[_0xb247('0x2c')],qs[_0xb247('0x33')](_0x496cee['query']['fields']));_0x17ccb8['attributes']=_0x17ccb8[_0xb247('0x32')][_0xb247('0x34')]?_0x17ccb8[_0xb247('0x32')]:_0x4ec21d['model'];if(!_0x496cee[_0xb247('0x2e')][_0xb247('0x35')]('nolimit')){_0x17ccb8[_0xb247('0x1b')]=qs['limit'](_0x496cee[_0xb247('0x2e')][_0xb247('0x1b')]);_0x17ccb8[_0xb247('0x1a')]=qs[_0xb247('0x1a')](_0x496cee[_0xb247('0x2e')][_0xb247('0x1a')]);}_0x17ccb8[_0xb247('0x36')]=qs['sort'](_0x496cee['query'][_0xb247('0x37')]);delete _0x496cee[_0xb247('0x2e')][_0xb247('0x37')];_0x17ccb8[_0xb247('0x38')]=qs[_0xb247('0x30')](_[_0xb247('0x39')](_0x496cee[_0xb247('0x2e')],_0x4ec21d[_0xb247('0x30')]),_0x31c015);if(_0x496cee[_0xb247('0x2e')]['filter']){_0x17ccb8[_0xb247('0x38')]=_[_0xb247('0x3a')](_0x17ccb8[_0xb247('0x38')],{'$or':_['map'](_0x31c015,function(_0x3165ea){if(_0x3165ea[_0xb247('0x2a')]!=='VIRTUAL'){var _0x12043f={};_0x12043f[_0x3165ea[_0xb247('0x27')]]={'$like':'%'+_0x496cee[_0xb247('0x2e')][_0xb247('0x3b')]+'%'};return _0x12043f;}})});}_0x17ccb8=_[_0xb247('0x3a')]({},_0x17ccb8,_0x496cee['options']);var _0x547e96={'where':_0x17ccb8[_0xb247('0x38')]};return db[_0xb247('0x3c')][_0xb247('0x1d')](_0x547e96)['then'](function(_0x3b2496){_0x352517[_0xb247('0x1d')]=_0x3b2496;if(_0x496cee[_0xb247('0x2e')][_0xb247('0x3d')]){_0x17ccb8['include']=[{'all':!![]}];}return db[_0xb247('0x3c')][_0xb247('0x3e')](_0x17ccb8);})[_0xb247('0x22')](function(_0x58742b){_0x352517['rows']=_0x58742b;return _0x352517;})[_0xb247('0x22')](respondWithFilteredResult(_0x50b2f6,_0x17ccb8))[_0xb247('0x3f')](handleError(_0x50b2f6,null));};exports[_0xb247('0x40')]=function(_0xdeb556,_0xa76f9a){var _0x3fdf47={'raw':![],'where':{'id':_0xdeb556['params']['id']}},_0x44cf2a={};_0x44cf2a[_0xb247('0x2c')]=_['keys'](db[_0xb247('0x3c')][_0xb247('0x41')]);_0x44cf2a[_0xb247('0x2e')]=_[_0xb247('0x2f')](_0xdeb556[_0xb247('0x2e')]);_0x44cf2a[_0xb247('0x30')]=_[_0xb247('0x31')](_0x44cf2a[_0xb247('0x2c')],_0x44cf2a[_0xb247('0x2e')]);_0x3fdf47[_0xb247('0x32')]=_['intersection'](_0x44cf2a[_0xb247('0x2c')],qs['fields'](_0xdeb556[_0xb247('0x2e')][_0xb247('0x33')]));_0x3fdf47['attributes']=_0x3fdf47[_0xb247('0x32')][_0xb247('0x34')]?_0x3fdf47[_0xb247('0x32')]:_0x44cf2a[_0xb247('0x2c')];if(_0xdeb556[_0xb247('0x2e')]['includeAll']){_0x3fdf47[_0xb247('0x42')]=[{'all':!![]}];}_0x3fdf47=_[_0xb247('0x3a')]({},_0x3fdf47,_0xdeb556[_0xb247('0x43')]);return db[_0xb247('0x3c')]['find'](_0x3fdf47)[_0xb247('0x22')](handleEntityNotFound(_0xa76f9a,null))['then'](respondWithResult(_0xa76f9a,null))[_0xb247('0x3f')](handleError(_0xa76f9a,null));};exports[_0xb247('0x21')]=function(_0x27b57b,_0x55f7a5){if(_0x27b57b[_0xb247('0x44')]['id']){delete _0x27b57b[_0xb247('0x44')]['id'];}return db[_0xb247('0x3c')][_0xb247('0x45')]({'where':{'id':_0x27b57b[_0xb247('0x46')]['id']}})[_0xb247('0x22')](handleEntityNotFound(_0x55f7a5,null))[_0xb247('0x22')](saveUpdates(_0x27b57b['body'],null))['then'](respondWithResult(_0x55f7a5,null))[_0xb247('0x3f')](handleError(_0x55f7a5,null));};exports[_0xb247('0x47')]=function(_0x7acfb8,_0x4146c8,_0x48f459){return db[_0xb247('0x48')][_0xb247('0x49')](function(_0x593785){if(_0x7acfb8['body'][_0xb247('0x4a')]===_0xb247('0x4b')){_0x7acfb8[_0xb247('0x44')][_0xb247('0x4c')]=path[_0xb247('0x4d')](config[_0xb247('0x4e')],_0xb247('0x4f'),_0x7acfb8['body'][_0xb247('0x27')]);}return db['VoiceMusicOnHold'][_0xb247('0x47')](_0x7acfb8[_0xb247('0x44')],{'transaction':_0x593785})[_0xb247('0x22')](function(_0x4bb06d){if(_0x7acfb8[_0xb247('0x44')][_0xb247('0x4a')]===_0xb247('0x4b')){fs['mkdirSync'](_0x4bb06d[_0xb247('0x4c')],parseInt('0777',0x8));}var _0x4905ce=_0x7acfb8[_0xb247('0x50')]['get']({'plain':!![]});if(!_0x4905ce)throw new Error(_0xb247('0x51'));if(_0x4905ce['role']===_0xb247('0x50')){var _0x8d1b19=_0x4bb06d[_0xb247('0x23')]({'plain':!![]});return db[_0xb247('0x52')]['find']({'where':{'name':_0xb247('0x24'),'userProfileId':_0x4905ce[_0xb247('0x53')]},'raw':!![]})[_0xb247('0x22')](function(_0x58e5b5){if(_0x58e5b5&&_0x58e5b5[_0xb247('0x54')]===0x0){return db[_0xb247('0x25')][_0xb247('0x47')]({'name':_0x8d1b19[_0xb247('0x27')],'resourceId':_0x8d1b19['id'],'type':_0x58e5b5[_0xb247('0x27')],'sectionId':_0x58e5b5['id']},{})['then'](function(){return _0x4bb06d;});}else{return _0x4bb06d;}})[_0xb247('0x3f')](function(_0x524359){logger[_0xb247('0x55')](_0xb247('0x56'),_0x524359);});}return _0x4bb06d;});})[_0xb247('0x22')](respondWithResult(_0x4146c8,0xc9))[_0xb247('0x3f')](handleError(_0x4146c8,null));};exports[_0xb247('0x57')]=function(_0x186014,_0x803699,_0x1b0030){var _0x18ba60;return db[_0xb247('0x3c')][_0xb247('0x45')]({'where':{'id':_0x186014[_0xb247('0x46')]['id']}})[_0xb247('0x22')](function(_0x2c08c7){if(_0x2c08c7){return db['sequelize'][_0xb247('0x49')](function(_0x333dc0){return _0x2c08c7[_0xb247('0x57')]({'transaction':_0x333dc0,'raw':!![]})[_0xb247('0x22')](function(_0x4affb0){if(_0x4affb0[_0xb247('0x4c')]){fs[_0xb247('0x58')](_0x4affb0[_0xb247('0x4c')])['forEach'](function(_0x23688d){fs[_0xb247('0x59')](path[_0xb247('0x4d')](_0x4affb0['directory'],_0x23688d));});fs[_0xb247('0x5a')](_0x4affb0[_0xb247('0x4c')]);}return _0x4affb0;});})['catch'](function(_0x14097b){throw new db['Sequelize'][(_0xb247('0x5b'))](_0x14097b[_0xb247('0x5c')]);});}})[_0xb247('0x22')](handleEntityNotFound(_0x803699,null))[_0xb247('0x22')](removeEntity(_0x803699,null))[_0xb247('0x3f')](handleError(_0x803699,null));};exports[_0xb247('0x5d')]=function(_0x350a63,_0x51a05a,_0x38fbd6){return db['sequelize'][_0xb247('0x49')](function(_0xb487ce){var _0x3f9063;return db[_0xb247('0x3c')]['find']({'where':{'id':_0x350a63[_0xb247('0x46')]['id']}})[_0xb247('0x22')](function(_0x39a454){if(_0x39a454){_0x3f9063=_0x39a454;return _0x39a454[_0xb247('0x5d')](_0x350a63[_0xb247('0x44')]['id'],{'transaction':_0xb487ce});}})[_0xb247('0x22')](function(_0x3f2adb){if(_0x3f2adb){return db['Sound'][_0xb247('0x5e')]({'where':{'id':_0x350a63[_0xb247('0x44')]['id']},'attributes':['id',_0xb247('0x27'),_0xb247('0x5f'),_0xb247('0x60'),_0xb247('0x61')],'raw':!![]});}})[_0xb247('0x22')](function(_0x37d0aa){if(_0x37d0aa){var _0x27834e=path[_0xb247('0x4d')](config['root'],_0xb247('0x62'),util[_0xb247('0x63')](_0xb247('0x64'),path[_0xb247('0x65')](_0x37d0aa[_0xb247('0x5f')],path[_0xb247('0x66')](_0x37d0aa[_0xb247('0x5f')])),_0x37d0aa[_0xb247('0x60')]));var _0x12a178=path[_0xb247('0x4d')](config[_0xb247('0x4e')],_0xb247('0x4f'),_0x3f9063[_0xb247('0x27')],util[_0xb247('0x63')](_0xb247('0x64'),_0x37d0aa['name'],_0x37d0aa[_0xb247('0x60')]));fs[_0xb247('0x67')](_0x27834e,_0x12a178);return _0x37d0aa;}})[_0xb247('0x3f')](function(_0x55161c){throw new db[(_0xb247('0x68'))][(_0xb247('0x5b'))](_0x55161c[_0xb247('0x5c')]);});})[_0xb247('0x22')](handleEntityNotFound(_0x51a05a,null))['then'](respondWithResult(_0x51a05a,0xc9))[_0xb247('0x3f')](handleError(_0x51a05a,null));};exports[_0xb247('0x69')]=function(_0x2c4187,_0x27d7b8,_0x2a2261){return db[_0xb247('0x48')][_0xb247('0x49')](function(_0x481876){var _0x49aa93;return db[_0xb247('0x3c')]['findOne']({'where':{'id':_0x2c4187[_0xb247('0x46')]['id']}})[_0xb247('0x22')](handleEntityNotFound(_0x27d7b8,null))['then'](function(_0x4a63bf){if(_0x4a63bf){_0x49aa93=_0x4a63bf;return _0x4a63bf['removeSound'](_0x2c4187[_0xb247('0x46')][_0xb247('0x6a')]);}})[_0xb247('0x22')](function(_0x488021){if(_0x488021){return db[_0xb247('0x6b')][_0xb247('0x5e')]({'where':{'id':_0x2c4187[_0xb247('0x46')]['id2']},'attributes':['id',_0xb247('0x27'),_0xb247('0x5f'),_0xb247('0x60'),'createdAt'],'raw':!![]});}})[_0xb247('0x22')](function(_0x2e8c1e){if(_0x2e8c1e){fs['unlinkSync'](path[_0xb247('0x4d')](_0x49aa93['directory'],util['format'](_0xb247('0x64'),_0x2e8c1e['name'],_0x2e8c1e[_0xb247('0x60')])));return _0x2e8c1e;}})['catch'](function(_0xf3b355){throw new db[(_0xb247('0x68'))]['ValidationError'](_0xf3b355['message']);});})[_0xb247('0x22')](handleEntityNotFound(_0x27d7b8,null))[_0xb247('0x22')](respondWithStatusCode(_0x27d7b8,0xcc))[_0xb247('0x3f')](handleError(_0x27d7b8,null));};exports[_0xb247('0x6c')]=function(_0x150665,_0x2433d8,_0x10f607){var _0x4c38f7={};var _0x3807e6={};var _0x24ad6e;var _0x21c9d1;return db[_0xb247('0x3c')][_0xb247('0x5e')]({'where':{'id':_0x150665['params']['id']}})[_0xb247('0x22')](handleEntityNotFound(_0x2433d8,null))['then'](function(_0x4f9fdb){if(_0x4f9fdb){_0x24ad6e=_0x4f9fdb;_0x3807e6[_0xb247('0x2c')]=_[_0xb247('0x2f')](db[_0xb247('0x6b')]['rawAttributes']);_0x3807e6[_0xb247('0x2e')]=_[_0xb247('0x2f')](_0x150665[_0xb247('0x2e')]);_0x3807e6[_0xb247('0x30')]=_[_0xb247('0x31')](_0x3807e6[_0xb247('0x2c')],_0x3807e6[_0xb247('0x2e')]);_0x4c38f7[_0xb247('0x32')]=_['intersection'](_0x3807e6[_0xb247('0x2c')],qs[_0xb247('0x33')](_0x150665[_0xb247('0x2e')]['fields']));_0x4c38f7[_0xb247('0x32')]=_0x4c38f7[_0xb247('0x32')][_0xb247('0x34')]?_0x4c38f7[_0xb247('0x32')]:_0x3807e6['model'];_0x4c38f7[_0xb247('0x36')]=qs[_0xb247('0x37')](_0x150665[_0xb247('0x2e')][_0xb247('0x37')]);_0x4c38f7['where']=qs[_0xb247('0x30')](_['pick'](_0x150665[_0xb247('0x2e')],_0x3807e6[_0xb247('0x30')]));if(_0x150665[_0xb247('0x2e')]['filter']){_0x4c38f7[_0xb247('0x38')]=_['merge'](_0x4c38f7[_0xb247('0x38')],{'$or':_[_0xb247('0x2d')](_0x4c38f7[_0xb247('0x32')],function(_0x37ae6e){var _0x1a0c6={};_0x1a0c6[_0x37ae6e]={'$like':'%'+_0x150665[_0xb247('0x2e')]['filter']+'%'};return _0x1a0c6;})});}_0x4c38f7=_[_0xb247('0x3a')]({},_0x4c38f7,_0x150665[_0xb247('0x43')]);return _0x24ad6e[_0xb247('0x6c')](_0x4c38f7);}})[_0xb247('0x22')](function(_0x4c8c27){if(_0x4c8c27){_0x21c9d1=_0x4c8c27[_0xb247('0x34')];if(!_0x150665[_0xb247('0x2e')]['hasOwnProperty'](_0xb247('0x6d'))){_0x4c38f7[_0xb247('0x1b')]=qs['limit'](_0x150665['query'][_0xb247('0x1b')]);_0x4c38f7[_0xb247('0x1a')]=qs[_0xb247('0x1a')](_0x150665[_0xb247('0x2e')][_0xb247('0x1a')]);}return _0x24ad6e['getSounds'](_0x4c38f7);}})[_0xb247('0x22')](function(_0x264e51){if(_0x264e51){return _0x264e51?{'count':_0x21c9d1,'rows':_0x264e51}:null;}})['then'](respondWithResult(_0x2433d8,null))[_0xb247('0x3f')](handleError(_0x2433d8,null));};
\ No newline at end of file
index c333299..43f69a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1176=['request-promise','VoiceMusicOnHold','lodash','util','../../config/logger','api','moment'];(function(_0x127e14,_0x5d3b34){var _0x20ccb2=function(_0x1c86df){while(--_0x1c86df){_0x127e14['push'](_0x127e14['shift']());}};_0x20ccb2(++_0x5d3b34);}(_0x1176,0xa3));var _0x6117=function(_0x2264e2,_0x37801a){_0x2264e2=_0x2264e2-0x0;var _0x2db2d1=_0x1176[_0x2264e2];return _0x2db2d1;};'use strict';var _=require(_0x6117('0x0'));var util=require(_0x6117('0x1'));var logger=require(_0x6117('0x2'))(_0x6117('0x3'));var moment=require(_0x6117('0x4'));var BPromise=require('bluebird');var rp=require(_0x6117('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module['exports']=function(_0x476bf0,_0x215b9f){return _0x476bf0['define'](_0x6117('0x6'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c30=['rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','api','bluebird','request-promise'];(function(_0x25e3d3,_0x1d2882){var _0x42ad83=function(_0x5f3010){while(--_0x5f3010){_0x25e3d3['push'](_0x25e3d3['shift']());}};_0x42ad83(++_0x1d2882);}(_0x6c30,0x1c3));var _0x06c3=function(_0x57a402,_0x40596b){_0x57a402=_0x57a402-0x0;var _0x753a36=_0x6c30[_0x57a402];return _0x753a36;};'use strict';var _=require(_0x06c3('0x0'));var util=require(_0x06c3('0x1'));var logger=require('../../config/logger')(_0x06c3('0x2'));var moment=require('moment');var BPromise=require(_0x06c3('0x3'));var rp=require(_0x06c3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x06c3('0x5'));var config=require(_0x06c3('0x6'));var attributes=require(_0x06c3('0x7'));module[_0x06c3('0x8')]=function(_0x3f313d,_0x4b96a9){return _0x3f313d[_0x06c3('0x9')](_0x06c3('0xa'),attributes,{'tableName':_0x06c3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c423c6c..5d9a912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x2d4272,_0x190d7d){var _0x2534b7=function(_0x317eeb){while(--_0x317eeb){_0x2d4272['push'](_0x2d4272['shift']());}};_0x2534b7(++_0x190d7d);}(_0x9c44,0x178));var _0x49c4=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x9c44[_0x279d37];return _0x530173;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
+var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','VoiceMusicOnHold,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x2b9acd,_0x15b292){var _0x597ba5=function(_0x48eae0){while(--_0x48eae0){_0x2b9acd['push'](_0x2b9acd['shift']());}};_0x597ba5(++_0x15b292);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
index 1699d13..5495a7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3379=['describe','/:id','show','/:id/users','getAgents','/:id/teams','getTeams','post','create','addTeams','put','update','destroy','delete','removeAgents','removeTeams','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','index','/describe'];(function(_0x13ada1,_0x434fc5){var _0x24067e=function(_0x349805){while(--_0x349805){_0x13ada1['push'](_0x13ada1['shift']());}};_0x24067e(++_0x434fc5);}(_0x3379,0x115));var _0x9337=function(_0x324d25,_0x5c51f1){_0x324d25=_0x324d25-0x0;var _0x1d085e=_0x3379[_0x324d25];return _0x1d085e;};'use strict';var multer=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var path=require(_0x9337('0x2'));var timeout=require(_0x9337('0x3'));var express=require('express');var router=express[_0x9337('0x4')]();var fs_extra=require(_0x9337('0x5'));var auth=require(_0x9337('0x6'));var interaction=require(_0x9337('0x7'));var config=require('../../config/environment');var controller=require(_0x9337('0x8'));router[_0x9337('0x9')]('/',auth[_0x9337('0xa')](),controller[_0x9337('0xb')]);router['get'](_0x9337('0xc'),auth['isAuthenticated'](),controller[_0x9337('0xd')]);router[_0x9337('0x9')](_0x9337('0xe'),auth[_0x9337('0xa')](),controller[_0x9337('0xf')]);router['get'](_0x9337('0x10'),auth[_0x9337('0xa')](),controller[_0x9337('0x11')]);router[_0x9337('0x9')](_0x9337('0x12'),auth['isAuthenticated'](),controller[_0x9337('0x13')]);router[_0x9337('0x14')]('/',auth[_0x9337('0xa')](),controller[_0x9337('0x15')]);router[_0x9337('0x14')](_0x9337('0x10'),auth[_0x9337('0xa')](),controller['addAgents']);router['post'](_0x9337('0x12'),auth[_0x9337('0xa')](),controller[_0x9337('0x16')]);router[_0x9337('0x17')]('/:id',auth['isAuthenticated'](),controller[_0x9337('0x18')]);router['delete']('/:id',auth[_0x9337('0xa')](),controller[_0x9337('0x19')]);router[_0x9337('0x1a')]('/:id/users',auth[_0x9337('0xa')](),controller[_0x9337('0x1b')]);router['delete']('/:id/teams',auth[_0x9337('0xa')](),controller[_0x9337('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0xe2a3=['util','express','Router','fs-extra','../../config/environment','index','/describe','isAuthenticated','describe','get','/:id','show','/:id/users','/:id/teams','create','addAgents','post','addTeams','put','update','delete','destroy','removeAgents','removeTeams','exports','multer'];(function(_0x46abbd,_0x2f706f){var _0x15b89f=function(_0x1889bd){while(--_0x1889bd){_0x46abbd['push'](_0x46abbd['shift']());}};_0x15b89f(++_0x2f706f);}(_0xe2a3,0x67));var _0x3e2a=function(_0x20ea49,_0x1b6a5a){_0x20ea49=_0x20ea49-0x0;var _0x11b049=_0xe2a3[_0x20ea49];return _0x11b049;};'use strict';var multer=require(_0x3e2a('0x0'));var util=require(_0x3e2a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3e2a('0x2'));var router=express[_0x3e2a('0x3')]();var fs_extra=require(_0x3e2a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3e2a('0x5'));var controller=require('./voicePrefix.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x3e2a('0x6')]);router['get'](_0x3e2a('0x7'),auth[_0x3e2a('0x8')](),controller[_0x3e2a('0x9')]);router[_0x3e2a('0xa')](_0x3e2a('0xb'),auth['isAuthenticated'](),controller[_0x3e2a('0xc')]);router[_0x3e2a('0xa')](_0x3e2a('0xd'),auth[_0x3e2a('0x8')](),controller['getAgents']);router[_0x3e2a('0xa')](_0x3e2a('0xe'),auth['isAuthenticated'](),controller['getTeams']);router['post']('/',auth[_0x3e2a('0x8')](),controller[_0x3e2a('0xf')]);router['post'](_0x3e2a('0xd'),auth['isAuthenticated'](),controller[_0x3e2a('0x10')]);router[_0x3e2a('0x11')]('/:id/teams',auth[_0x3e2a('0x8')](),controller[_0x3e2a('0x12')]);router[_0x3e2a('0x13')]('/:id',auth[_0x3e2a('0x8')](),controller[_0x3e2a('0x14')]);router[_0x3e2a('0x15')](_0x3e2a('0xb'),auth[_0x3e2a('0x8')](),controller[_0x3e2a('0x16')]);router[_0x3e2a('0x15')](_0x3e2a('0xd'),auth['isAuthenticated'](),controller[_0x3e2a('0x17')]);router['delete'](_0x3e2a('0xe'),auth[_0x3e2a('0x8')](),controller[_0x3e2a('0x18')]);module[_0x3e2a('0x19')]=router;
\ No newline at end of file
index 64d5d3a..ae8de59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ffa=['system-','name','INTEGER','sequelize','exports','STRING'];(function(_0x595619,_0x3b7ea6){var _0x30a1e4=function(_0x354040){while(--_0x354040){_0x595619['push'](_0x595619['shift']());}};_0x30a1e4(++_0x3b7ea6);}(_0x7ffa,0x1b9));var _0xa7ff=function(_0x37faa6,_0x379a46){_0x37faa6=_0x37faa6-0x0;var _0x3b8dd4=_0x7ffa[_0x37faa6];return _0x3b8dd4;};'use strict';var Sequelize=require(_0xa7ff('0x0'));module[_0xa7ff('0x1')]={'name':{'type':Sequelize[_0xa7ff('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x534485){return _0xa7ff('0x3')+this['getDataValue'](_0xa7ff('0x4'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xa7ff('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0xa7ff('0x5')]}};
\ No newline at end of file
+var _0x786d=['STRING','VIRTUAL','system-','getDataValue','name','INTEGER','sequelize'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x786d,0xf4));var _0xd786=function(_0x194e5c,_0x52631f){_0x194e5c=_0x194e5c-0x0;var _0x16d546=_0x786d[_0x194e5c];return _0x16d546;};'use strict';var Sequelize=require(_0xd786('0x0'));module['exports']={'name':{'type':Sequelize[_0xd786('0x1')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0xd786('0x2')],'get':function(_0x16297f){return _0xd786('0x3')+this[_0xd786('0x4')](_0xd786('0x5'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xd786('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0xd786('0x6')]}};
\ No newline at end of file
index c983423..d94665d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958a=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','VoicePrefixes','UserProfileResource','destroy','error','stack','name','index','map','VoicePrefix','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','findAll','rows','catch','show','params','rawAttributes','include','find','describe','sequelize','transaction','create','body','VoiceExtension','VoiceExtensionId','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','type','description','Voice\x20Prefix\x20Extension','priority','prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','CDR(prefix)=','Set','PREFIX-CALLERIDALL=','callerIdAll','NoOp','No\x20callerid\x20available','charAt','system-','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','findOne','getAgents','getTeams','addTeams','Team','User','online','voicePause','flatMap','Agents','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','removeTeams','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','all','compact','value','isEmpty','forEach','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x958a,0x128));var _0xa958=function(_0xad8644,_0x129233){_0xad8644=_0xad8644-0x0;var _0x5e3ce4=_0x958a[_0xad8644];return _0x5e3ce4;};'use strict';var emlformat=require(_0xa958('0x0'));var rimraf=require(_0xa958('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa958('0x2'));var rp=require(_0xa958('0x3'));var moment=require(_0xa958('0x4'));var BPromise=require(_0xa958('0x5'));var Mustache=require(_0xa958('0x6'));var util=require('util');var path=require(_0xa958('0x7'));var sox=require('sox');var csv=require(_0xa958('0x8'));var ejs=require(_0xa958('0x9'));var fs=require('fs');var fs_extra=require(_0xa958('0xa'));var _=require(_0xa958('0xb'));var squel=require(_0xa958('0xc'));var crypto=require(_0xa958('0xd'));var jsforce=require(_0xa958('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa958('0xf'));var Papa=require(_0xa958('0x10'));var Redis=require(_0xa958('0x11'));var authService=require(_0xa958('0x12'));var qs=require(_0xa958('0x13'));var as=require(_0xa958('0x14'));var hardwareService=require(_0xa958('0x15'));var logger=require(_0xa958('0x16'))(_0xa958('0x17'));var utils=require(_0xa958('0x18'));var config=require(_0xa958('0x19'));var licenseUtil=require(_0xa958('0x1a'));var db=require(_0xa958('0x1b'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xa958('0x1c'),'port':0x18eb});var socket=require(_0xa958('0x1d'))(new Redis(config[_0xa958('0x1e')]));require('./voicePrefix.socket')[_0xa958('0x1f')](socket);function respondWithStatusCode(_0x54c439,_0x5194b4){_0x5194b4=_0x5194b4||0xcc;return function(_0x53d5c7){if(_0x53d5c7){return _0x54c439[_0xa958('0x20')](_0x5194b4);}return _0x54c439[_0xa958('0x21')](_0x5194b4)[_0xa958('0x22')]();};}function respondWithResult(_0x6a81c7,_0x2c270c){_0x2c270c=_0x2c270c||0xc8;return function(_0x398931){if(_0x398931){return _0x6a81c7[_0xa958('0x21')](_0x2c270c)[_0xa958('0x23')](_0x398931);}};}function respondWithFilteredResult(_0x4d836f,_0x39af49){return function(_0x4eadc9){if(_0x4eadc9){var _0x3a053f=typeof _0x39af49[_0xa958('0x24')]==='undefined'&&typeof _0x39af49[_0xa958('0x25')]===_0xa958('0x26');var _0x47636f=_0x4eadc9[_0xa958('0x27')];var _0x2759ad=_0x3a053f?0x0:_0x39af49[_0xa958('0x24')];var _0x56314b=_0x3a053f?_0x4eadc9['count']:_0x39af49[_0xa958('0x24')]+_0x39af49[_0xa958('0x25')];var _0x16c0be;if(_0x56314b>=_0x47636f){_0x56314b=_0x47636f;_0x16c0be=0xc8;}else{_0x16c0be=0xce;}_0x4d836f['status'](_0x16c0be);return _0x4d836f[_0xa958('0x28')](_0xa958('0x29'),_0x2759ad+'-'+_0x56314b+'/'+_0x47636f)['json'](_0x4eadc9);}return null;};}function patchUpdates(_0x28cf12){return function(_0x401175){try{jsonpatch['apply'](_0x401175,_0x28cf12,!![]);}catch(_0x5c5a2b){return BPromise[_0xa958('0x2a')](_0x5c5a2b);}return _0x401175[_0xa958('0x2b')]();};}function saveUpdates(_0x50b3c3,_0x25f461){return function(_0x27097a){if(_0x27097a){return _0x27097a[_0xa958('0x2c')](_0x50b3c3)[_0xa958('0x2d')](function(_0x16b04a){return _0x16b04a;});}return null;};}function removeEntity(_0xf1436e,_0x50fdb1){return function(_0x3e3d77){if(_0x3e3d77){return _0x3e3d77['destroy']()[_0xa958('0x2d')](function(){var _0x3c2ea3=_0x3e3d77[_0xa958('0x2e')]({'plain':!![]});var _0x18f600=_0xa958('0x2f');return db[_0xa958('0x30')][_0xa958('0x31')]({'where':{'type':_0x18f600,'resourceId':_0x3c2ea3['id']}})[_0xa958('0x2d')](function(){return _0x3e3d77;});})[_0xa958('0x2d')](function(){_0xf1436e[_0xa958('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47895c,_0xd2fcc9){return function(_0x4ef4f6){if(!_0x4ef4f6){_0x47895c[_0xa958('0x20')](0x194);}return _0x4ef4f6;};}function handleError(_0x1b76de,_0x4b3089){_0x4b3089=_0x4b3089||0x1f4;return function(_0x23bdbf){logger[_0xa958('0x32')](_0x23bdbf[_0xa958('0x33')]);if(_0x23bdbf[_0xa958('0x34')]){delete _0x23bdbf[_0xa958('0x34')];}_0x1b76de['status'](_0x4b3089)['send'](_0x23bdbf);};}exports[_0xa958('0x35')]=function(_0x5d9a3d,_0x51e50b){var _0x30d51f={},_0x3f6de3={},_0x135322={'count':0x0,'rows':[]};var _0x43b912=_[_0xa958('0x36')](db[_0xa958('0x37')]['rawAttributes'],function(_0x32c4e3){return{'name':_0x32c4e3['fieldName'],'type':_0x32c4e3['type'][_0xa958('0x38')]};});_0x3f6de3[_0xa958('0x39')]=_[_0xa958('0x36')](_0x43b912,_0xa958('0x34'));_0x3f6de3[_0xa958('0x3a')]=_[_0xa958('0x3b')](_0x5d9a3d[_0xa958('0x3a')]);_0x3f6de3[_0xa958('0x3c')]=_['intersection'](_0x3f6de3['model'],_0x3f6de3[_0xa958('0x3a')]);_0x30d51f[_0xa958('0x3d')]=_[_0xa958('0x3e')](_0x3f6de3[_0xa958('0x39')],qs[_0xa958('0x3f')](_0x5d9a3d['query'][_0xa958('0x3f')]));_0x30d51f[_0xa958('0x3d')]=_0x30d51f[_0xa958('0x3d')][_0xa958('0x40')]?_0x30d51f['attributes']:_0x3f6de3[_0xa958('0x39')];if(!_0x5d9a3d[_0xa958('0x3a')][_0xa958('0x41')](_0xa958('0x42'))){_0x30d51f[_0xa958('0x25')]=qs['limit'](_0x5d9a3d[_0xa958('0x3a')][_0xa958('0x25')]);_0x30d51f[_0xa958('0x24')]=qs[_0xa958('0x24')](_0x5d9a3d[_0xa958('0x3a')][_0xa958('0x24')]);}_0x30d51f[_0xa958('0x43')]=qs[_0xa958('0x44')](_0x5d9a3d[_0xa958('0x3a')][_0xa958('0x44')]);_0x30d51f['where']=qs[_0xa958('0x3c')](_[_0xa958('0x45')](_0x5d9a3d[_0xa958('0x3a')],_0x3f6de3['filters']),_0x43b912);if(_0x5d9a3d[_0xa958('0x3a')][_0xa958('0x46')]){_0x30d51f['where']=_['merge'](_0x30d51f[_0xa958('0x47')],{'$or':_['map'](_0x43b912,function(_0x3b5e74){if(_0x3b5e74['type']!==_0xa958('0x48')){var _0x59d562={};_0x59d562[_0x3b5e74[_0xa958('0x34')]]={'$like':'%'+_0x5d9a3d[_0xa958('0x3a')][_0xa958('0x46')]+'%'};return _0x59d562;}})});}_0x30d51f=_[_0xa958('0x49')]({},_0x30d51f,_0x5d9a3d[_0xa958('0x4a')]);var _0x45b383={'where':_0x30d51f[_0xa958('0x47')]};return db[_0xa958('0x37')]['count'](_0x45b383)[_0xa958('0x2d')](function(_0x38dfb4){_0x135322[_0xa958('0x27')]=_0x38dfb4;if(_0x5d9a3d['query']['includeAll']){_0x30d51f['include']=[{'all':!![]}];}return db[_0xa958('0x37')][_0xa958('0x4b')](_0x30d51f);})[_0xa958('0x2d')](function(_0x155901){_0x135322[_0xa958('0x4c')]=_0x155901;return _0x135322;})['then'](respondWithFilteredResult(_0x51e50b,_0x30d51f))[_0xa958('0x4d')](handleError(_0x51e50b,null));};exports[_0xa958('0x4e')]=function(_0x2fdf2b,_0x2bfdee){var _0x303331={'raw':![],'where':{'id':_0x2fdf2b[_0xa958('0x4f')]['id']}},_0x1118bb={};_0x1118bb[_0xa958('0x39')]=_[_0xa958('0x3b')](db[_0xa958('0x37')][_0xa958('0x50')]);_0x1118bb[_0xa958('0x3a')]=_[_0xa958('0x3b')](_0x2fdf2b[_0xa958('0x3a')]);_0x1118bb[_0xa958('0x3c')]=_[_0xa958('0x3e')](_0x1118bb[_0xa958('0x39')],_0x1118bb['query']);_0x303331['attributes']=_['intersection'](_0x1118bb[_0xa958('0x39')],qs[_0xa958('0x3f')](_0x2fdf2b[_0xa958('0x3a')][_0xa958('0x3f')]));_0x303331['attributes']=_0x303331[_0xa958('0x3d')][_0xa958('0x40')]?_0x303331[_0xa958('0x3d')]:_0x1118bb[_0xa958('0x39')];if(_0x2fdf2b[_0xa958('0x3a')]['includeAll']){_0x303331[_0xa958('0x51')]=[{'all':!![]}];}_0x303331=_[_0xa958('0x49')]({},_0x303331,_0x2fdf2b[_0xa958('0x4a')]);return db['VoicePrefix'][_0xa958('0x52')](_0x303331)['then'](handleEntityNotFound(_0x2bfdee,null))[_0xa958('0x2d')](respondWithResult(_0x2bfdee,null))[_0xa958('0x4d')](handleError(_0x2bfdee,null));};exports[_0xa958('0x31')]=function(_0x4e0740,_0x35f6bf){return db['VoicePrefix'][_0xa958('0x52')]({'where':{'id':_0x4e0740[_0xa958('0x4f')]['id']}})[_0xa958('0x2d')](handleEntityNotFound(_0x35f6bf,null))[_0xa958('0x2d')](removeEntity(_0x35f6bf,null))[_0xa958('0x4d')](handleError(_0x35f6bf,null));};exports['describe']=function(_0x1e9c64,_0x49f9da){return db[_0xa958('0x37')][_0xa958('0x53')]()['then'](respondWithResult(_0x49f9da,null))[_0xa958('0x4d')](handleError(_0x49f9da,null));};exports['create']=function(_0x317059,_0x39619f){var _0x15c0fe;return db[_0xa958('0x54')][_0xa958('0x55')](function(_0x65f37f){return db[_0xa958('0x37')][_0xa958('0x56')](_0x317059[_0xa958('0x57')],{'transaction':_0x65f37f})['then'](function(_0x37d54f){_0x15c0fe=_0x37d54f['get']({'plain':!![]});return db[_0xa958('0x58')][_0xa958('0x52')]({'where':{'id':_0x15c0fe[_0xa958('0x59')]},'raw':!![]})['then'](function(_0x4f0440){return createVoicePrefixExtensions(_0x15c0fe,_0x4f0440,_0x65f37f);});});})[_0xa958('0x2d')](function(){var _0xab6085=_0x317059[_0xa958('0x5a')][_0xa958('0x2e')]({'plain':!![]});if(!_0xab6085)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xab6085[_0xa958('0x5b')]===_0xa958('0x5a')){var _0x4cf7af=_0x15c0fe;return db[_0xa958('0x5c')][_0xa958('0x52')]({'where':{'name':'VoicePrefixes','userProfileId':_0xab6085[_0xa958('0x5d')]},'raw':!![]})['then'](function(_0x5629c4){if(_0x5629c4&&_0x5629c4['autoAssociation']===0x0){return db[_0xa958('0x30')][_0xa958('0x56')]({'name':_0x4cf7af[_0xa958('0x34')],'resourceId':_0x4cf7af['id'],'type':_0x5629c4[_0xa958('0x34')],'sectionId':_0x5629c4['id']},{})['then'](function(){return _0x15c0fe;});}else{return _0x15c0fe;}})[_0xa958('0x4d')](function(_0x4aaf1a){logger[_0xa958('0x32')](_0xa958('0x5e'),_0x4aaf1a);throw _0x4aaf1a;});}return _0x15c0fe;})[_0xa958('0x2d')](respondWithResult(_0x39619f,null))[_0xa958('0x4d')](handleError(_0x39619f,null));};function Extension(_0x25865d,_0x11cc0b,_0x485e67,_0x4937a5){this[_0xa958('0x5f')]=_0xa958('0x60');this[_0xa958('0x61')]=_0x25865d;this[_0xa958('0x62')]=_0x485e67;this[_0xa958('0x63')]='system';this[_0xa958('0x64')]=_0xa958('0x65');this[_0xa958('0x66')]=_0x11cc0b;this['appdata']=_0x4937a5;}function createVoicePrefixExtensions(_0xf7e817,_0x2496f8,_0x364725){return new BPromise(function(_0x14cbb6,_0x35177a){var _0x2d40b1=new Extension(formatPrefixName(_0xf7e817[_0xa958('0x67')]),0x1,'NoOp','Voice\x20Prefix');_0x2d40b1[_0xa958('0x68')]=_0xf7e817['id'];return db['VoiceExtension'][_0xa958('0x56')](_0x2d40b1,{'transaction':_0x364725})[_0xa958('0x2d')](function(_0x1ea51b){var _0x3f0396=_0x1ea51b[_0xa958('0x2e')]({'plain':!![]});var _0x3859e2=_[_0xa958('0x36')](addVoicePrefixExtensions(_0xf7e817,_0x2496f8),function(_0x358c8b){_0x358c8b[_0xa958('0x59')]=_0x3f0396['id'];_0x358c8b['VoicePrefixId']=_0xf7e817['id'];return _0x358c8b;});return db[_0xa958('0x58')][_0xa958('0x69')](_0x3859e2,{'transaction':_0x364725})['then'](function(_0x53a26d){if(!_0x53a26d){return _0x35177a(_0xa958('0x6a'));}else{return _0x14cbb6(_0x53a26d);}})[_0xa958('0x4d')](function(_0xa769e0){return _0x35177a(_0xa769e0);});});;});};function addVoicePrefixExtensions(_0x36d3cd,_0x3736df){var _0x5625e7=[];var _0x25ca0b=formatPrefixName(_0x36d3cd['prefix']);_0x5625e7[_0xa958('0x6b')](new Extension(_0x25ca0b,0x2,'Set',_0xa958('0x6c')+_0x36d3cd[_0xa958('0x34')]));if(_0x36d3cd['callerIdAll']){_0x5625e7[_0xa958('0x6b')](new Extension(_0x25ca0b,0x3,_0xa958('0x6d'),_0xa958('0x6e')+_0x36d3cd[_0xa958('0x6f')]));}else{_0x5625e7[_0xa958('0x6b')](new Extension(_0x25ca0b,0x3,_0xa958('0x70'),_0xa958('0x71')));}_0x5625e7[_0xa958('0x6b')](new Extension(_0x25ca0b,0x4,'goto',_0x3736df['context']+','+'${EXTEN:'+(0x8+_0x36d3cd[_0xa958('0x34')]['length'])+'}'+','+0x1));return _0x5625e7;}function formatPrefixName(_0x21d139){var _0x739fa1='_';for(var _0x52484f=0x0;_0x52484f<_0x21d139['length'];_0x52484f++){if(_0x21d139[_0xa958('0x72')](_0x52484f)=='-'){_0x739fa1+=_0x21d139[_0xa958('0x72')](_0x52484f);}else{_0x739fa1+='['+_0x21d139[_0xa958('0x72')](_0x52484f)+']';}}_0x739fa1+='.';return _0x739fa1;}exports[_0xa958('0x2c')]=function(_0x2c2e81,_0x58083e,_0x32f9dc){var _0x5379f1=_0x2c2e81[_0xa958('0x57')];_0x5379f1[_0xa958('0x67')]=_0xa958('0x73')+_0x5379f1['name']+'-';return db[_0xa958('0x54')][_0xa958('0x55')](function(_0x4df64f){return db[_0xa958('0x37')][_0xa958('0x2c')](_0x5379f1,{'where':{'id':_0x5379f1['id']},'transaction':_0x4df64f})[_0xa958('0x2d')](function(){return db[_0xa958('0x58')][_0xa958('0x31')]({'where':{'VoicePrefixId':_0x5379f1['id']},'transaction':_0x4df64f})['then'](function(){return db[_0xa958('0x58')]['find']({'where':{'id':_0x5379f1[_0xa958('0x59')]},'raw':!![]})['then'](function(_0x1b2d7e){return createVoicePrefixExtensions(_0x5379f1,_0x1b2d7e,_0x4df64f);});});});})[_0xa958('0x2d')](function(){return db[_0xa958('0x37')][_0xa958('0x74')](_0x5379f1['id']);})[_0xa958('0x2d')](respondWithResult(_0x58083e,null))[_0xa958('0x4d')](handleError(_0x58083e,null));};exports[_0xa958('0x75')]=function(_0x5de628,_0x4a41a8,_0x349bf9){return db['VoicePrefix'][_0xa958('0x52')]({'where':{'id':_0x5de628[_0xa958('0x4f')]['id']}})[_0xa958('0x2d')](handleEntityNotFound(_0x4a41a8,null))[_0xa958('0x2d')](function(_0x3b8dbf){if(_0x3b8dbf){return _0x3b8dbf[_0xa958('0x75')](_0x5de628[_0xa958('0x57')][_0xa958('0x76')],_['omit'](_0x5de628[_0xa958('0x57')],[_0xa958('0x76'),'id'])||{})[_0xa958('0x77')](function(_0x443e97){for(var _0x4eb829=0x0;_0x4eb829<_0x5de628[_0xa958('0x57')][_0xa958('0x76')][_0xa958('0x40')];_0x4eb829+=0x1){socket[_0xa958('0x78')](_0xa958('0x79'),{'UserId':Number(_0x5de628[_0xa958('0x57')]['ids'][_0x4eb829]),'VoicePrefixId':Number(_0x5de628[_0xa958('0x4f')]['id'])});}return _0x443e97;});}})[_0xa958('0x2d')](respondWithResult(_0x4a41a8,null))[_0xa958('0x4d')](handleError(_0x4a41a8,null));};exports[_0xa958('0x7a')]=function(_0x2d54ba,_0x3c87c6,_0x501462){return db['VoicePrefix']['find']({'where':{'id':_0x2d54ba[_0xa958('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3c87c6,null))['then'](function(_0x1c05fa){if(_0x1c05fa){return _0x1c05fa[_0xa958('0x7a')](_0x2d54ba[_0xa958('0x3a')][_0xa958('0x76')])[_0xa958('0x2d')](function(){if(_['isArray'](_0x2d54ba['query'][_0xa958('0x76')])){for(var _0x477402=0x0;_0x477402<_0x2d54ba[_0xa958('0x3a')][_0xa958('0x76')]['length'];_0x477402+=0x1){socket[_0xa958('0x78')](_0xa958('0x7b'),{'UserId':Number(_0x2d54ba[_0xa958('0x3a')][_0xa958('0x76')][_0x477402]),'VoicePrefixId':Number(_0x2d54ba[_0xa958('0x4f')]['id'])});}}else{socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x2d54ba[_0xa958('0x3a')]['ids']),'VoicePrefixId':Number(_0x2d54ba[_0xa958('0x4f')]['id'])});}});}})[_0xa958('0x2d')](respondWithStatusCode(_0x3c87c6,null))[_0xa958('0x4d')](handleError(_0x3c87c6,null));};exports['getAgents']=function(_0x15544d,_0x4e4a98,_0x20a536){var _0xba7442={};var _0x5b32bf={};var _0x484790;var _0x5f2995;return db['VoicePrefix'][_0xa958('0x7c')]({'where':{'id':_0x15544d[_0xa958('0x4f')]['id']}})[_0xa958('0x2d')](handleEntityNotFound(_0x4e4a98,null))[_0xa958('0x2d')](function(_0x2aec5f){if(_0x2aec5f){_0x484790=_0x2aec5f;_0x5b32bf['model']=_[_0xa958('0x3b')](db['User']['rawAttributes']);_0x5b32bf[_0xa958('0x3a')]=_[_0xa958('0x3b')](_0x15544d[_0xa958('0x3a')]);_0x5b32bf['filters']=_[_0xa958('0x3e')](_0x5b32bf['model'],_0x5b32bf[_0xa958('0x3a')]);_0xba7442[_0xa958('0x3d')]=_['intersection'](_0x5b32bf['model'],qs[_0xa958('0x3f')](_0x15544d[_0xa958('0x3a')][_0xa958('0x3f')]));_0xba7442[_0xa958('0x3d')]=_0xba7442['attributes'][_0xa958('0x40')]?_0xba7442[_0xa958('0x3d')]:_0x5b32bf['model'];_0xba7442[_0xa958('0x43')]=qs['sort'](_0x15544d[_0xa958('0x3a')][_0xa958('0x44')]);_0xba7442[_0xa958('0x47')]=qs['filters'](_[_0xa958('0x45')](_0x15544d[_0xa958('0x3a')],_0x5b32bf['filters']));if(_0x15544d[_0xa958('0x3a')][_0xa958('0x46')]){_0xba7442[_0xa958('0x47')]=_[_0xa958('0x49')](_0xba7442[_0xa958('0x47')],{'$or':_[_0xa958('0x36')](_0xba7442[_0xa958('0x3d')],function(_0x1b5d8c){var _0x252300={};_0x252300[_0x1b5d8c]={'$like':'%'+_0x15544d['query'][_0xa958('0x46')]+'%'};return _0x252300;})});}_0xba7442=_[_0xa958('0x49')]({},_0xba7442,_0x15544d['options']);return _0x484790[_0xa958('0x7d')](_0xba7442);}})[_0xa958('0x2d')](function(_0x4fbefb){if(_0x4fbefb){_0x5f2995=_0x4fbefb['length'];if(!_0x15544d[_0xa958('0x3a')]['hasOwnProperty']('nolimit')){_0xba7442[_0xa958('0x25')]=qs[_0xa958('0x25')](_0x15544d['query']['limit']);_0xba7442[_0xa958('0x24')]=qs[_0xa958('0x24')](_0x15544d[_0xa958('0x3a')]['offset']);}return _0x484790[_0xa958('0x7d')](_0xba7442);}})['then'](function(_0x4d6455){if(_0x4d6455){return _0x4d6455?{'count':_0x5f2995,'rows':_0x4d6455}:null;}})[_0xa958('0x2d')](respondWithResult(_0x4e4a98,null))[_0xa958('0x4d')](handleError(_0x4e4a98,null));};exports[_0xa958('0x7e')]=function(_0x58feea,_0x278505,_0x36d9d4){var _0x213ee2={};var _0x4fffd9={};var _0x2b4e65;var _0x9207c3;return db[_0xa958('0x37')][_0xa958('0x7c')]({'where':{'id':_0x58feea['params']['id']}})[_0xa958('0x2d')](handleEntityNotFound(_0x278505,null))[_0xa958('0x2d')](function(_0x71d394){if(_0x71d394){_0x2b4e65=_0x71d394;_0x4fffd9[_0xa958('0x39')]=_['keys'](db['Team']['rawAttributes']);_0x4fffd9['query']=_[_0xa958('0x3b')](_0x58feea[_0xa958('0x3a')]);_0x4fffd9['filters']=_['intersection'](_0x4fffd9[_0xa958('0x39')],_0x4fffd9[_0xa958('0x3a')]);_0x213ee2[_0xa958('0x3d')]=_['intersection'](_0x4fffd9[_0xa958('0x39')],qs[_0xa958('0x3f')](_0x58feea['query'][_0xa958('0x3f')]));_0x213ee2[_0xa958('0x3d')]=_0x213ee2[_0xa958('0x3d')][_0xa958('0x40')]?_0x213ee2[_0xa958('0x3d')]:_0x4fffd9[_0xa958('0x39')];_0x213ee2[_0xa958('0x43')]=qs[_0xa958('0x44')](_0x58feea[_0xa958('0x3a')][_0xa958('0x44')]);_0x213ee2[_0xa958('0x47')]=qs[_0xa958('0x3c')](_['pick'](_0x58feea['query'],_0x4fffd9[_0xa958('0x3c')]));if(_0x58feea[_0xa958('0x3a')][_0xa958('0x46')]){_0x213ee2[_0xa958('0x47')]=_[_0xa958('0x49')](_0x213ee2[_0xa958('0x47')],{'$or':_[_0xa958('0x36')](_0x213ee2['attributes'],function(_0x7a2730){var _0x46ad43={};_0x46ad43[_0x7a2730]={'$like':'%'+_0x58feea['query'][_0xa958('0x46')]+'%'};return _0x46ad43;})});}_0x213ee2=_[_0xa958('0x49')]({},_0x213ee2,_0x58feea['options']);return _0x2b4e65[_0xa958('0x7e')](_0x213ee2);}})['then'](function(_0x57e780){if(_0x57e780){_0x9207c3=_0x57e780[_0xa958('0x40')];if(!_0x58feea[_0xa958('0x3a')][_0xa958('0x41')]('nolimit')){_0x213ee2['limit']=qs[_0xa958('0x25')](_0x58feea['query']['limit']);_0x213ee2[_0xa958('0x24')]=qs['offset'](_0x58feea[_0xa958('0x3a')][_0xa958('0x24')]);}return _0x2b4e65[_0xa958('0x7e')](_0x213ee2);}})[_0xa958('0x2d')](function(_0x3f58a2){if(_0x3f58a2){return _0x3f58a2?{'count':_0x9207c3,'rows':_0x3f58a2}:null;}})[_0xa958('0x2d')](respondWithResult(_0x278505,null))[_0xa958('0x4d')](handleError(_0x278505,null));};exports[_0xa958('0x7f')]=function(_0x22ba2f,_0x429870,_0x4d82b5){var _0x7f6ca5=_0x22ba2f['body'][_0xa958('0x76')];var _0x23823d;return db[_0xa958('0x80')]['findAll']({'where':{'id':_0x7f6ca5},'attributes':['id'],'include':[{'model':db[_0xa958('0x81')],'as':'Agents','attributes':['id','name',_0xa958('0x82'),_0xa958('0x83'),'interface'],'raw':!![]}]})[_0xa958('0x2d')](function(_0x4d907b){if(_0x4d907b){_0x23823d=_0x4d907b;var _0x310918=_[_0xa958('0x84')](_0x4d907b,function(_0x4fe178){var _0x57a1d9=_0x4fe178[_0xa958('0x2e')]({'plain':!![]});return _0x57a1d9[_0xa958('0x85')];});return db[_0xa958('0x37')][_0xa958('0x52')]({'where':{'id':_0x22ba2f[_0xa958('0x4f')]['id']}})[_0xa958('0x2d')](function(_0x162760){return db[_0xa958('0x54')]['transaction'](function(_0x1bdced){return _0x162760[_0xa958('0x7f')](_0x7f6ca5,{'transaction':_0x1bdced})['then'](function(){return BPromise[_0xa958('0x86')](_0x23823d,function(_0x167bb6){return db[_0xa958('0x87')][_0xa958('0x88')]({'TeamId':_0x167bb6['id'],'VoicePrefixId':_0x22ba2f[_0xa958('0x4f')]['id']},{'transaction':_0x1bdced});});})['then'](function(){return BPromise[_0xa958('0x86')](_0x310918,function(_0x2f8f94){return db[_0xa958('0x89')][_0xa958('0x8a')]({'where':{'UserId':_0x2f8f94['id'],'VoicePrefixId':_0x22ba2f[_0xa958('0x4f')]['id']},'transaction':_0x1bdced});});})[_0xa958('0x2d')](function(){_0x310918['forEach'](function(_0x46561b){socket[_0xa958('0x78')]('userVoicePrefix:save',{'UserId':_0x46561b['id'],'VoicePrefixId':_0x162760['id']});});});});});}})['then'](respondWithStatusCode(_0x429870,null))['catch'](handleError(_0x429870,null));};exports[_0xa958('0x8b')]=function(_0x5e31b4,_0x4edc45,_0x22890c){return db[_0xa958('0x80')][_0xa958('0x4b')]({'where':{'id':_0x5e31b4[_0xa958('0x3a')][_0xa958('0x76')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa958('0x2d')](handleEntityNotFound(_0x4edc45,null))[_0xa958('0x2d')](function(_0x42e2b4){var _0x24d6a4=_[_0xa958('0x36')](_0x42e2b4,'id');var _0x19a1da=[];var _0x2a29ad=[];var _0x4ecadc=squel['select']();_0x4ecadc[_0xa958('0x8c')](_0xa958('0x8d'))[_0xa958('0x8e')](_0xa958('0x8f'),'tq')[_0xa958('0x90')](_0xa958('0x91'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa958('0x47')](_0xa958('0x92'),_0x5e31b4[_0xa958('0x4f')]['id']);for(var _0x57f1eb=0x0;_0x57f1eb<_0x42e2b4[_0xa958('0x40')];_0x57f1eb+=0x1){let _0x3062c5=_0x42e2b4[_0x57f1eb];for(var _0x3cc980=0x0;_0x3cc980<_0x3062c5[_0xa958('0x85')][_0xa958('0x40')];_0x3cc980+=0x1){let _0x166267=_0x3062c5['Agents'][_0x3cc980];var _0x30133f=_0x4ecadc[_0xa958('0x93')]();_0x30133f['where'](_0xa958('0x94'),_0x166267['id']);_0x2a29ad[_0xa958('0x6b')](db[_0xa958('0x54')][_0xa958('0x3a')](_0x30133f[_0xa958('0x95')](),{'type':db[_0xa958('0x54')][_0xa958('0x96')][_0xa958('0x97')]})[_0xa958('0x2d')](function(_0x4f54a1){if(_0x4f54a1['length']===0x1){return _0x166267['id'];}else{var _0x563f9=_['every'](_[_0xa958('0x36')](_0x4f54a1,_0xa958('0x98')),function(_0x495b6d){return _[_0xa958('0x99')](_0x24d6a4,_0x495b6d);});if(_0x563f9){return _0x166267['id'];}}}));}}return BPromise[_0xa958('0x9a')](_0x2a29ad)[_0xa958('0x2d')](function(_0x48e953){_0x19a1da=_(_0x19a1da)['union'](_0x48e953)[_0xa958('0x9b')]()[_0xa958('0x9c')]();return db[_0xa958('0x37')][_0xa958('0x52')]({'where':{'id':_0x5e31b4[_0xa958('0x4f')]['id']}})['then'](function(_0x5548d1){return db[_0xa958('0x54')][_0xa958('0x55')](function(_0x4a4253){return _0x5548d1[_0xa958('0x8b')](_0x5e31b4['query']['ids'],{'transaction':_0x4a4253})[_0xa958('0x2d')](function(){if(!_[_0xa958('0x9d')](_0x19a1da)){return _0x5548d1[_0xa958('0x7a')](_0x19a1da,{'transaction':_0x4a4253});}})[_0xa958('0x2d')](function(){_0x19a1da[_0xa958('0x9e')](function(_0x5c0653){socket[_0xa958('0x78')]('userVoicePrefix:remove',{'UserId':_0x5c0653,'VoicePrefixId':_0x5548d1['id']});});});});});});})[_0xa958('0x2d')](respondWithStatusCode(_0x4edc45,null))[_0xa958('0x4d')](handleError(_0x4edc45,null));};
\ No newline at end of file
+var _0x7916=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','undefined','limit','count','offset','Content-Range','json','reject','then','destroy','get','UserProfileResource','end','error','name','send','index','map','VoicePrefix','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','show','params','keys','rawAttributes','length','find','catch','describe','create','sequelize','body','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','system','description','Voice\x20Prefix\x20Extension','priority','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','charAt','update','system-','transaction','findById','addAgents','omit','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','findOne','User','getTeams','Team','findAll','Agents','online','interface','flatMap','upsert','each','UserVoicePrefix','findOrCreate','forEach','removeTeams','field','tq.TeamId','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','querystring','papaparse'];(function(_0x286f03,_0x3a84dd){var _0x2646c6=function(_0x31770d){while(--_0x31770d){_0x286f03['push'](_0x286f03['shift']());}};_0x2646c6(++_0x3a84dd);}(_0x7916,0x128));var _0x6791=function(_0x2798dc,_0x5084c9){_0x2798dc=_0x2798dc-0x0;var _0x38b659=_0x7916[_0x2798dc];return _0x38b659;};'use strict';var emlformat=require(_0x6791('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6791('0x1'));var jsonpatch=require(_0x6791('0x2'));var rp=require('request-promise');var moment=require(_0x6791('0x3'));var BPromise=require(_0x6791('0x4'));var Mustache=require(_0x6791('0x5'));var util=require(_0x6791('0x6'));var path=require('path');var sox=require(_0x6791('0x7'));var csv=require('to-csv');var ejs=require(_0x6791('0x8'));var fs=require('fs');var fs_extra=require(_0x6791('0x9'));var _=require('lodash');var squel=require(_0x6791('0xa'));var crypto=require('crypto');var jsforce=require(_0x6791('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6791('0xc'));var Papa=require(_0x6791('0xd'));var Redis=require('ioredis');var authService=require(_0x6791('0xe'));var qs=require(_0x6791('0xf'));var as=require(_0x6791('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6791('0x11'))(_0x6791('0x12'));var utils=require(_0x6791('0x13'));var config=require(_0x6791('0x14'));var licenseUtil=require(_0x6791('0x15'));var db=require(_0x6791('0x16'))['db'];config[_0x6791('0x17')]=_[_0x6791('0x18')](config[_0x6791('0x17')],{'host':_0x6791('0x19'),'port':0x18eb});var socket=require(_0x6791('0x1a'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0x6791('0x1b')](socket);function respondWithStatusCode(_0x5122f9,_0x2a9151){_0x2a9151=_0x2a9151||0xcc;return function(_0x4c32a1){if(_0x4c32a1){return _0x5122f9[_0x6791('0x1c')](_0x2a9151);}return _0x5122f9[_0x6791('0x1d')](_0x2a9151)['end']();};}function respondWithResult(_0x3e4792,_0x4b80ed){_0x4b80ed=_0x4b80ed||0xc8;return function(_0x3856ac){if(_0x3856ac){return _0x3e4792[_0x6791('0x1d')](_0x4b80ed)['json'](_0x3856ac);}};}function respondWithFilteredResult(_0xbc35d,_0x36d7a1){return function(_0x5bec14){if(_0x5bec14){var _0x1872f5=typeof _0x36d7a1['offset']===_0x6791('0x1e')&&typeof _0x36d7a1[_0x6791('0x1f')]===_0x6791('0x1e');var _0x3a72ce=_0x5bec14[_0x6791('0x20')];var _0x2bc0ab=_0x1872f5?0x0:_0x36d7a1[_0x6791('0x21')];var _0x581d51=_0x1872f5?_0x5bec14[_0x6791('0x20')]:_0x36d7a1[_0x6791('0x21')]+_0x36d7a1['limit'];var _0x21ef16;if(_0x581d51>=_0x3a72ce){_0x581d51=_0x3a72ce;_0x21ef16=0xc8;}else{_0x21ef16=0xce;}_0xbc35d[_0x6791('0x1d')](_0x21ef16);return _0xbc35d['set'](_0x6791('0x22'),_0x2bc0ab+'-'+_0x581d51+'/'+_0x3a72ce)[_0x6791('0x23')](_0x5bec14);}return null;};}function patchUpdates(_0x15b9ab){return function(_0x12d83b){try{jsonpatch['apply'](_0x12d83b,_0x15b9ab,!![]);}catch(_0x3e17b3){return BPromise[_0x6791('0x24')](_0x3e17b3);}return _0x12d83b['save']();};}function saveUpdates(_0x53bb44,_0x4b23bc){return function(_0x372dae){if(_0x372dae){return _0x372dae['update'](_0x53bb44)[_0x6791('0x25')](function(_0x5409f1){return _0x5409f1;});}return null;};}function removeEntity(_0x54a092,_0x496273){return function(_0x5cadc){if(_0x5cadc){return _0x5cadc[_0x6791('0x26')]()[_0x6791('0x25')](function(){var _0x56a74e=_0x5cadc[_0x6791('0x27')]({'plain':!![]});var _0x30cc17='VoicePrefixes';return db[_0x6791('0x28')]['destroy']({'where':{'type':_0x30cc17,'resourceId':_0x56a74e['id']}})[_0x6791('0x25')](function(){return _0x5cadc;});})['then'](function(){_0x54a092['status'](0xcc)[_0x6791('0x29')]();});}};}function handleEntityNotFound(_0x551718,_0x2f56a2){return function(_0x34b006){if(!_0x34b006){_0x551718['sendStatus'](0x194);}return _0x34b006;};}function handleError(_0x240a9f,_0x273f79){_0x273f79=_0x273f79||0x1f4;return function(_0x234c5e){logger[_0x6791('0x2a')](_0x234c5e['stack']);if(_0x234c5e['name']){delete _0x234c5e[_0x6791('0x2b')];}_0x240a9f['status'](_0x273f79)[_0x6791('0x2c')](_0x234c5e);};}exports[_0x6791('0x2d')]=function(_0x30397e,_0x2b98b8){var _0x1d551b={},_0x127bfa={},_0x8e2101={'count':0x0,'rows':[]};var _0x14307e=_[_0x6791('0x2e')](db[_0x6791('0x2f')]['rawAttributes'],function(_0x28b3d4){return{'name':_0x28b3d4[_0x6791('0x30')],'type':_0x28b3d4[_0x6791('0x31')][_0x6791('0x32')]};});_0x127bfa[_0x6791('0x33')]=_[_0x6791('0x2e')](_0x14307e,'name');_0x127bfa['query']=_['keys'](_0x30397e[_0x6791('0x34')]);_0x127bfa[_0x6791('0x35')]=_[_0x6791('0x36')](_0x127bfa['model'],_0x127bfa['query']);_0x1d551b[_0x6791('0x37')]=_[_0x6791('0x36')](_0x127bfa[_0x6791('0x33')],qs[_0x6791('0x38')](_0x30397e['query'][_0x6791('0x38')]));_0x1d551b[_0x6791('0x37')]=_0x1d551b[_0x6791('0x37')]['length']?_0x1d551b[_0x6791('0x37')]:_0x127bfa['model'];if(!_0x30397e['query'][_0x6791('0x39')](_0x6791('0x3a'))){_0x1d551b['limit']=qs[_0x6791('0x1f')](_0x30397e[_0x6791('0x34')][_0x6791('0x1f')]);_0x1d551b[_0x6791('0x21')]=qs[_0x6791('0x21')](_0x30397e['query'][_0x6791('0x21')]);}_0x1d551b[_0x6791('0x3b')]=qs[_0x6791('0x3c')](_0x30397e['query'][_0x6791('0x3c')]);_0x1d551b[_0x6791('0x3d')]=qs[_0x6791('0x35')](_['pick'](_0x30397e[_0x6791('0x34')],_0x127bfa[_0x6791('0x35')]),_0x14307e);if(_0x30397e[_0x6791('0x34')][_0x6791('0x3e')]){_0x1d551b['where']=_[_0x6791('0x3f')](_0x1d551b[_0x6791('0x3d')],{'$or':_[_0x6791('0x2e')](_0x14307e,function(_0xd0f1c){if(_0xd0f1c[_0x6791('0x31')]!==_0x6791('0x40')){var _0x2688a9={};_0x2688a9[_0xd0f1c[_0x6791('0x2b')]]={'$like':'%'+_0x30397e[_0x6791('0x34')]['filter']+'%'};return _0x2688a9;}})});}_0x1d551b=_['merge']({},_0x1d551b,_0x30397e[_0x6791('0x41')]);var _0xe11675={'where':_0x1d551b['where']};return db[_0x6791('0x2f')][_0x6791('0x20')](_0xe11675)[_0x6791('0x25')](function(_0x3edb86){_0x8e2101[_0x6791('0x20')]=_0x3edb86;if(_0x30397e[_0x6791('0x34')][_0x6791('0x42')]){_0x1d551b['include']=[{'all':!![]}];}return db[_0x6791('0x2f')]['findAll'](_0x1d551b);})[_0x6791('0x25')](function(_0xfc170e){_0x8e2101[_0x6791('0x43')]=_0xfc170e;return _0x8e2101;})[_0x6791('0x25')](respondWithFilteredResult(_0x2b98b8,_0x1d551b))['catch'](handleError(_0x2b98b8,null));};exports[_0x6791('0x44')]=function(_0x4f0e2d,_0xeb9d45){var _0x3251e9={'raw':![],'where':{'id':_0x4f0e2d[_0x6791('0x45')]['id']}},_0x5a7fb6={};_0x5a7fb6[_0x6791('0x33')]=_[_0x6791('0x46')](db['VoicePrefix'][_0x6791('0x47')]);_0x5a7fb6[_0x6791('0x34')]=_[_0x6791('0x46')](_0x4f0e2d[_0x6791('0x34')]);_0x5a7fb6['filters']=_[_0x6791('0x36')](_0x5a7fb6[_0x6791('0x33')],_0x5a7fb6['query']);_0x3251e9[_0x6791('0x37')]=_['intersection'](_0x5a7fb6[_0x6791('0x33')],qs[_0x6791('0x38')](_0x4f0e2d[_0x6791('0x34')][_0x6791('0x38')]));_0x3251e9[_0x6791('0x37')]=_0x3251e9[_0x6791('0x37')][_0x6791('0x48')]?_0x3251e9[_0x6791('0x37')]:_0x5a7fb6[_0x6791('0x33')];if(_0x4f0e2d['query'][_0x6791('0x42')]){_0x3251e9['include']=[{'all':!![]}];}_0x3251e9=_[_0x6791('0x3f')]({},_0x3251e9,_0x4f0e2d[_0x6791('0x41')]);return db[_0x6791('0x2f')][_0x6791('0x49')](_0x3251e9)[_0x6791('0x25')](handleEntityNotFound(_0xeb9d45,null))['then'](respondWithResult(_0xeb9d45,null))[_0x6791('0x4a')](handleError(_0xeb9d45,null));};exports[_0x6791('0x26')]=function(_0x235b56,_0x3d22f3){return db[_0x6791('0x2f')]['find']({'where':{'id':_0x235b56[_0x6791('0x45')]['id']}})[_0x6791('0x25')](handleEntityNotFound(_0x3d22f3,null))['then'](removeEntity(_0x3d22f3,null))[_0x6791('0x4a')](handleError(_0x3d22f3,null));};exports['describe']=function(_0x3d4b7e,_0x22a4d3){return db[_0x6791('0x2f')][_0x6791('0x4b')]()['then'](respondWithResult(_0x22a4d3,null))[_0x6791('0x4a')](handleError(_0x22a4d3,null));};exports[_0x6791('0x4c')]=function(_0x5655c8,_0x189b22){var _0x4370ab;return db[_0x6791('0x4d')]['transaction'](function(_0x355e97){return db[_0x6791('0x2f')]['create'](_0x5655c8[_0x6791('0x4e')],{'transaction':_0x355e97})[_0x6791('0x25')](function(_0x49d583){_0x4370ab=_0x49d583[_0x6791('0x27')]({'plain':!![]});return db[_0x6791('0x4f')][_0x6791('0x49')]({'where':{'id':_0x4370ab[_0x6791('0x50')]},'raw':!![]})['then'](function(_0x3c1076){return createVoicePrefixExtensions(_0x4370ab,_0x3c1076,_0x355e97);});});})[_0x6791('0x25')](function(){var _0x32f36b=_0x5655c8['user']['get']({'plain':!![]});if(!_0x32f36b)throw new Error(_0x6791('0x51'));if(_0x32f36b[_0x6791('0x52')]===_0x6791('0x53')){var _0x45756f=_0x4370ab;return db[_0x6791('0x54')]['find']({'where':{'name':'VoicePrefixes','userProfileId':_0x32f36b[_0x6791('0x55')]},'raw':!![]})['then'](function(_0x51f071){if(_0x51f071&&_0x51f071[_0x6791('0x56')]===0x0){return db[_0x6791('0x28')][_0x6791('0x4c')]({'name':_0x45756f[_0x6791('0x2b')],'resourceId':_0x45756f['id'],'type':_0x51f071[_0x6791('0x2b')],'sectionId':_0x51f071['id']},{})[_0x6791('0x25')](function(){return _0x4370ab;});}else{return _0x4370ab;}})['catch'](function(_0x5a30f3){logger[_0x6791('0x2a')](_0x6791('0x57'),_0x5a30f3);throw _0x5a30f3;});}return _0x4370ab;})['then'](respondWithResult(_0x189b22,null))[_0x6791('0x4a')](handleError(_0x189b22,null));};function Extension(_0x535ecf,_0x473443,_0x15fb6c,_0x50cf85){this[_0x6791('0x58')]=_0x6791('0x59');this[_0x6791('0x5a')]=_0x535ecf;this['app']=_0x15fb6c;this[_0x6791('0x31')]=_0x6791('0x5b');this[_0x6791('0x5c')]=_0x6791('0x5d');this[_0x6791('0x5e')]=_0x473443;this['appdata']=_0x50cf85;}function createVoicePrefixExtensions(_0x54d0ba,_0x1a9acd,_0x13430e){return new BPromise(function(_0x5d2668,_0x329fc0){var _0x466a64=new Extension(formatPrefixName(_0x54d0ba[_0x6791('0x5f')]),0x1,_0x6791('0x60'),_0x6791('0x61'));_0x466a64[_0x6791('0x62')]=_0x54d0ba['id'];return db[_0x6791('0x4f')][_0x6791('0x4c')](_0x466a64,{'transaction':_0x13430e})['then'](function(_0x2c5f12){var _0x3b46bf=_0x2c5f12[_0x6791('0x27')]({'plain':!![]});var _0x1a9a2e=_['map'](addVoicePrefixExtensions(_0x54d0ba,_0x1a9acd),function(_0x16dff7){_0x16dff7[_0x6791('0x50')]=_0x3b46bf['id'];_0x16dff7[_0x6791('0x62')]=_0x54d0ba['id'];return _0x16dff7;});return db['VoiceExtension'][_0x6791('0x63')](_0x1a9a2e,{'transaction':_0x13430e})[_0x6791('0x25')](function(_0x99d4ee){if(!_0x99d4ee){return _0x329fc0(_0x6791('0x64'));}else{return _0x5d2668(_0x99d4ee);}})['catch'](function(_0x2c834f){return _0x329fc0(_0x2c834f);});});;});};function addVoicePrefixExtensions(_0x2843fb,_0x5522db){var _0x1114d4=[];var _0x901cc1=formatPrefixName(_0x2843fb[_0x6791('0x5f')]);_0x1114d4[_0x6791('0x65')](new Extension(_0x901cc1,0x2,_0x6791('0x66'),_0x6791('0x67')+_0x2843fb['name']));if(_0x2843fb[_0x6791('0x68')]){_0x1114d4[_0x6791('0x65')](new Extension(_0x901cc1,0x3,_0x6791('0x66'),'PREFIX-CALLERIDALL='+_0x2843fb[_0x6791('0x68')]));}else{_0x1114d4['push'](new Extension(_0x901cc1,0x3,_0x6791('0x60'),_0x6791('0x69')));}_0x1114d4[_0x6791('0x65')](new Extension(_0x901cc1,0x4,_0x6791('0x6a'),_0x5522db[_0x6791('0x58')]+','+'${EXTEN:'+(0x8+_0x2843fb[_0x6791('0x2b')][_0x6791('0x48')])+'}'+','+0x1));return _0x1114d4;}function formatPrefixName(_0x375062){var _0x2accfa='_';for(var _0x5f158f=0x0;_0x5f158f<_0x375062[_0x6791('0x48')];_0x5f158f++){if(_0x375062[_0x6791('0x6b')](_0x5f158f)=='-'){_0x2accfa+=_0x375062['charAt'](_0x5f158f);}else{_0x2accfa+='['+_0x375062[_0x6791('0x6b')](_0x5f158f)+']';}}_0x2accfa+='.';return _0x2accfa;}exports[_0x6791('0x6c')]=function(_0x567302,_0x201465,_0x23b9b4){var _0x113d9f=_0x567302[_0x6791('0x4e')];_0x113d9f['prefix']=_0x6791('0x6d')+_0x113d9f[_0x6791('0x2b')]+'-';return db['sequelize'][_0x6791('0x6e')](function(_0x26c2aa){return db[_0x6791('0x2f')][_0x6791('0x6c')](_0x113d9f,{'where':{'id':_0x113d9f['id']},'transaction':_0x26c2aa})[_0x6791('0x25')](function(){return db['VoiceExtension'][_0x6791('0x26')]({'where':{'VoicePrefixId':_0x113d9f['id']},'transaction':_0x26c2aa})[_0x6791('0x25')](function(){return db['VoiceExtension'][_0x6791('0x49')]({'where':{'id':_0x113d9f[_0x6791('0x50')]},'raw':!![]})[_0x6791('0x25')](function(_0x4bbf2d){return createVoicePrefixExtensions(_0x113d9f,_0x4bbf2d,_0x26c2aa);});});});})[_0x6791('0x25')](function(){return db[_0x6791('0x2f')][_0x6791('0x6f')](_0x113d9f['id']);})[_0x6791('0x25')](respondWithResult(_0x201465,null))[_0x6791('0x4a')](handleError(_0x201465,null));};exports[_0x6791('0x70')]=function(_0x367dc9,_0x30b3e6,_0x4cca28){return db[_0x6791('0x2f')][_0x6791('0x49')]({'where':{'id':_0x367dc9['params']['id']}})[_0x6791('0x25')](handleEntityNotFound(_0x30b3e6,null))[_0x6791('0x25')](function(_0x410a66){if(_0x410a66){return _0x410a66['addAgents'](_0x367dc9[_0x6791('0x4e')]['ids'],_[_0x6791('0x71')](_0x367dc9[_0x6791('0x4e')],[_0x6791('0x72'),'id'])||{})[_0x6791('0x73')](function(_0x3a964a){for(var _0x2d15b5=0x0;_0x2d15b5<_0x367dc9[_0x6791('0x4e')][_0x6791('0x72')][_0x6791('0x48')];_0x2d15b5+=0x1){socket[_0x6791('0x74')](_0x6791('0x75'),{'UserId':Number(_0x367dc9[_0x6791('0x4e')][_0x6791('0x72')][_0x2d15b5]),'VoicePrefixId':Number(_0x367dc9[_0x6791('0x45')]['id'])});}return _0x3a964a;});}})[_0x6791('0x25')](respondWithResult(_0x30b3e6,null))[_0x6791('0x4a')](handleError(_0x30b3e6,null));};exports[_0x6791('0x76')]=function(_0x386bc7,_0xc6c959,_0x5cf7d7){return db['VoicePrefix']['find']({'where':{'id':_0x386bc7[_0x6791('0x45')]['id']}})[_0x6791('0x25')](handleEntityNotFound(_0xc6c959,null))[_0x6791('0x25')](function(_0x194a0b){if(_0x194a0b){return _0x194a0b[_0x6791('0x76')](_0x386bc7[_0x6791('0x34')][_0x6791('0x72')])[_0x6791('0x25')](function(){if(_[_0x6791('0x77')](_0x386bc7[_0x6791('0x34')][_0x6791('0x72')])){for(var _0x37ae6b=0x0;_0x37ae6b<_0x386bc7[_0x6791('0x34')][_0x6791('0x72')][_0x6791('0x48')];_0x37ae6b+=0x1){socket[_0x6791('0x74')](_0x6791('0x78'),{'UserId':Number(_0x386bc7[_0x6791('0x34')][_0x6791('0x72')][_0x37ae6b]),'VoicePrefixId':Number(_0x386bc7[_0x6791('0x45')]['id'])});}}else{socket[_0x6791('0x74')](_0x6791('0x78'),{'UserId':Number(_0x386bc7[_0x6791('0x34')][_0x6791('0x72')]),'VoicePrefixId':Number(_0x386bc7[_0x6791('0x45')]['id'])});}});}})['then'](respondWithStatusCode(_0xc6c959,null))[_0x6791('0x4a')](handleError(_0xc6c959,null));};exports['getAgents']=function(_0x8d9556,_0x11eb22,_0x4b262c){var _0x1c2864={};var _0x503041={};var _0x27e3bd;var _0x26e77c;return db['VoicePrefix'][_0x6791('0x79')]({'where':{'id':_0x8d9556[_0x6791('0x45')]['id']}})[_0x6791('0x25')](handleEntityNotFound(_0x11eb22,null))['then'](function(_0x41fcf4){if(_0x41fcf4){_0x27e3bd=_0x41fcf4;_0x503041[_0x6791('0x33')]=_[_0x6791('0x46')](db[_0x6791('0x7a')][_0x6791('0x47')]);_0x503041[_0x6791('0x34')]=_['keys'](_0x8d9556[_0x6791('0x34')]);_0x503041[_0x6791('0x35')]=_[_0x6791('0x36')](_0x503041[_0x6791('0x33')],_0x503041[_0x6791('0x34')]);_0x1c2864[_0x6791('0x37')]=_[_0x6791('0x36')](_0x503041['model'],qs[_0x6791('0x38')](_0x8d9556['query'][_0x6791('0x38')]));_0x1c2864['attributes']=_0x1c2864[_0x6791('0x37')][_0x6791('0x48')]?_0x1c2864[_0x6791('0x37')]:_0x503041[_0x6791('0x33')];_0x1c2864[_0x6791('0x3b')]=qs[_0x6791('0x3c')](_0x8d9556['query'][_0x6791('0x3c')]);_0x1c2864['where']=qs[_0x6791('0x35')](_['pick'](_0x8d9556['query'],_0x503041['filters']));if(_0x8d9556[_0x6791('0x34')][_0x6791('0x3e')]){_0x1c2864['where']=_[_0x6791('0x3f')](_0x1c2864['where'],{'$or':_[_0x6791('0x2e')](_0x1c2864[_0x6791('0x37')],function(_0x4f52c2){var _0x494435={};_0x494435[_0x4f52c2]={'$like':'%'+_0x8d9556['query'][_0x6791('0x3e')]+'%'};return _0x494435;})});}_0x1c2864=_[_0x6791('0x3f')]({},_0x1c2864,_0x8d9556[_0x6791('0x41')]);return _0x27e3bd['getAgents'](_0x1c2864);}})[_0x6791('0x25')](function(_0x20ded4){if(_0x20ded4){_0x26e77c=_0x20ded4[_0x6791('0x48')];if(!_0x8d9556[_0x6791('0x34')][_0x6791('0x39')]('nolimit')){_0x1c2864[_0x6791('0x1f')]=qs[_0x6791('0x1f')](_0x8d9556[_0x6791('0x34')][_0x6791('0x1f')]);_0x1c2864[_0x6791('0x21')]=qs['offset'](_0x8d9556[_0x6791('0x34')][_0x6791('0x21')]);}return _0x27e3bd['getAgents'](_0x1c2864);}})[_0x6791('0x25')](function(_0x46aea7){if(_0x46aea7){return _0x46aea7?{'count':_0x26e77c,'rows':_0x46aea7}:null;}})[_0x6791('0x25')](respondWithResult(_0x11eb22,null))[_0x6791('0x4a')](handleError(_0x11eb22,null));};exports['getTeams']=function(_0x29e2a0,_0x1092d4,_0x370da4){var _0xdf1dd4={};var _0xa5eb83={};var _0x145814;var _0x5dcaab;return db[_0x6791('0x2f')]['findOne']({'where':{'id':_0x29e2a0['params']['id']}})[_0x6791('0x25')](handleEntityNotFound(_0x1092d4,null))[_0x6791('0x25')](function(_0x313d5d){if(_0x313d5d){_0x145814=_0x313d5d;_0xa5eb83['model']=_[_0x6791('0x46')](db['Team'][_0x6791('0x47')]);_0xa5eb83[_0x6791('0x34')]=_['keys'](_0x29e2a0[_0x6791('0x34')]);_0xa5eb83[_0x6791('0x35')]=_[_0x6791('0x36')](_0xa5eb83[_0x6791('0x33')],_0xa5eb83[_0x6791('0x34')]);_0xdf1dd4['attributes']=_[_0x6791('0x36')](_0xa5eb83[_0x6791('0x33')],qs[_0x6791('0x38')](_0x29e2a0['query']['fields']));_0xdf1dd4[_0x6791('0x37')]=_0xdf1dd4[_0x6791('0x37')]['length']?_0xdf1dd4[_0x6791('0x37')]:_0xa5eb83[_0x6791('0x33')];_0xdf1dd4[_0x6791('0x3b')]=qs['sort'](_0x29e2a0[_0x6791('0x34')]['sort']);_0xdf1dd4['where']=qs[_0x6791('0x35')](_['pick'](_0x29e2a0[_0x6791('0x34')],_0xa5eb83[_0x6791('0x35')]));if(_0x29e2a0[_0x6791('0x34')][_0x6791('0x3e')]){_0xdf1dd4[_0x6791('0x3d')]=_[_0x6791('0x3f')](_0xdf1dd4['where'],{'$or':_[_0x6791('0x2e')](_0xdf1dd4['attributes'],function(_0x221fad){var _0x4d6641={};_0x4d6641[_0x221fad]={'$like':'%'+_0x29e2a0['query'][_0x6791('0x3e')]+'%'};return _0x4d6641;})});}_0xdf1dd4=_[_0x6791('0x3f')]({},_0xdf1dd4,_0x29e2a0[_0x6791('0x41')]);return _0x145814[_0x6791('0x7b')](_0xdf1dd4);}})[_0x6791('0x25')](function(_0x11089f){if(_0x11089f){_0x5dcaab=_0x11089f[_0x6791('0x48')];if(!_0x29e2a0[_0x6791('0x34')][_0x6791('0x39')](_0x6791('0x3a'))){_0xdf1dd4[_0x6791('0x1f')]=qs[_0x6791('0x1f')](_0x29e2a0[_0x6791('0x34')][_0x6791('0x1f')]);_0xdf1dd4[_0x6791('0x21')]=qs[_0x6791('0x21')](_0x29e2a0[_0x6791('0x34')][_0x6791('0x21')]);}return _0x145814[_0x6791('0x7b')](_0xdf1dd4);}})['then'](function(_0xfef30e){if(_0xfef30e){return _0xfef30e?{'count':_0x5dcaab,'rows':_0xfef30e}:null;}})[_0x6791('0x25')](respondWithResult(_0x1092d4,null))[_0x6791('0x4a')](handleError(_0x1092d4,null));};exports['addTeams']=function(_0x4c6eb1,_0x4bce1d,_0x42d7fb){var _0x257efa=_0x4c6eb1['body'][_0x6791('0x72')];var _0x17c93e;return db[_0x6791('0x7c')][_0x6791('0x7d')]({'where':{'id':_0x257efa},'attributes':['id'],'include':[{'model':db[_0x6791('0x7a')],'as':_0x6791('0x7e'),'attributes':['id',_0x6791('0x2b'),_0x6791('0x7f'),'voicePause',_0x6791('0x80')],'raw':!![]}]})['then'](function(_0xd61243){if(_0xd61243){_0x17c93e=_0xd61243;var _0x123627=_[_0x6791('0x81')](_0xd61243,function(_0x5d5963){var _0x4d36de=_0x5d5963['get']({'plain':!![]});return _0x4d36de[_0x6791('0x7e')];});return db[_0x6791('0x2f')][_0x6791('0x49')]({'where':{'id':_0x4c6eb1[_0x6791('0x45')]['id']}})['then'](function(_0x3b487a){return db[_0x6791('0x4d')][_0x6791('0x6e')](function(_0x3b0d8f){return _0x3b487a['addTeams'](_0x257efa,{'transaction':_0x3b0d8f})['then'](function(){return BPromise['each'](_0x17c93e,function(_0x3a7711){return db['TeamVoicePrefix'][_0x6791('0x82')]({'TeamId':_0x3a7711['id'],'VoicePrefixId':_0x4c6eb1[_0x6791('0x45')]['id']},{'transaction':_0x3b0d8f});});})[_0x6791('0x25')](function(){return BPromise[_0x6791('0x83')](_0x123627,function(_0x15a95b){return db[_0x6791('0x84')][_0x6791('0x85')]({'where':{'UserId':_0x15a95b['id'],'VoicePrefixId':_0x4c6eb1[_0x6791('0x45')]['id']},'transaction':_0x3b0d8f});});})['then'](function(){_0x123627[_0x6791('0x86')](function(_0x300c8b){socket['emit'](_0x6791('0x75'),{'UserId':_0x300c8b['id'],'VoicePrefixId':_0x3b487a['id']});});});});});}})[_0x6791('0x25')](respondWithStatusCode(_0x4bce1d,null))[_0x6791('0x4a')](handleError(_0x4bce1d,null));};exports[_0x6791('0x87')]=function(_0x4f88e4,_0x447ea6,_0x31a2c8){return db[_0x6791('0x7c')][_0x6791('0x7d')]({'where':{'id':_0x4f88e4[_0x6791('0x34')][_0x6791('0x72')]},'attributes':['id'],'include':[{'model':db[_0x6791('0x7a')],'as':_0x6791('0x7e'),'attributes':['id'],'raw':!![]}]})[_0x6791('0x25')](handleEntityNotFound(_0x447ea6,null))['then'](function(_0x150a13){var _0x211721=_[_0x6791('0x2e')](_0x150a13,'id');var _0xb7986d=[];var _0x19cb72=[];var _0x5aad37=squel['select']();_0x5aad37[_0x6791('0x88')](_0x6791('0x89'))['from'](_0x6791('0x8a'),'tq')[_0x6791('0x8b')](_0x6791('0x8c'),'ut',_0x6791('0x8d'))[_0x6791('0x3d')](_0x6791('0x8e'),_0x4f88e4[_0x6791('0x45')]['id']);for(var _0x21a12c=0x0;_0x21a12c<_0x150a13[_0x6791('0x48')];_0x21a12c+=0x1){let _0x54a34f=_0x150a13[_0x21a12c];for(var _0x405e1c=0x0;_0x405e1c<_0x54a34f[_0x6791('0x7e')]['length'];_0x405e1c+=0x1){let _0x303ba8=_0x54a34f['Agents'][_0x405e1c];var _0x23bed3=_0x5aad37[_0x6791('0x8f')]();_0x23bed3[_0x6791('0x3d')](_0x6791('0x90'),_0x303ba8['id']);_0x19cb72[_0x6791('0x65')](db[_0x6791('0x4d')][_0x6791('0x34')](_0x23bed3[_0x6791('0x91')](),{'type':db[_0x6791('0x4d')][_0x6791('0x92')][_0x6791('0x93')]})[_0x6791('0x25')](function(_0x1f06d8){if(_0x1f06d8[_0x6791('0x48')]===0x1){return _0x303ba8['id'];}else{var _0x46d6ff=_[_0x6791('0x94')](_[_0x6791('0x2e')](_0x1f06d8,_0x6791('0x95')),function(_0x462e03){return _['includes'](_0x211721,_0x462e03);});if(_0x46d6ff){return _0x303ba8['id'];}}}));}}return BPromise[_0x6791('0x96')](_0x19cb72)['then'](function(_0x41385c){_0xb7986d=_(_0xb7986d)[_0x6791('0x97')](_0x41385c)[_0x6791('0x98')]()[_0x6791('0x99')]();return db[_0x6791('0x2f')][_0x6791('0x49')]({'where':{'id':_0x4f88e4[_0x6791('0x45')]['id']}})[_0x6791('0x25')](function(_0x546bf7){return db[_0x6791('0x4d')]['transaction'](function(_0x54cf28){return _0x546bf7[_0x6791('0x87')](_0x4f88e4[_0x6791('0x34')][_0x6791('0x72')],{'transaction':_0x54cf28})[_0x6791('0x25')](function(){if(!_[_0x6791('0x9a')](_0xb7986d)){return _0x546bf7[_0x6791('0x76')](_0xb7986d,{'transaction':_0x54cf28});}})[_0x6791('0x25')](function(){_0xb7986d['forEach'](function(_0x3b7b0f){socket[_0x6791('0x74')](_0x6791('0x78'),{'UserId':_0x3b7b0f,'VoicePrefixId':_0x546bf7['id']});});});});});});})[_0x6791('0x25')](respondWithStatusCode(_0x447ea6,null))[_0x6791('0x4a')](handleError(_0x447ea6,null));};
\ No newline at end of file
index 31d549d..3a0c451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa2=['hasOwnProperty','exports','../../mysqldb','VoicePrefix','save','update','emit'];(function(_0x2493a8,_0x5a240d){var _0x2b06c9=function(_0x198d3c){while(--_0x198d3c){_0x2493a8['push'](_0x2493a8['shift']());}};_0x2b06c9(++_0x5a240d);}(_0xeaa2,0x1c9));var _0x2eaa=function(_0x1f77b0,_0x44e4e7){_0x1f77b0=_0x1f77b0-0x0;var _0xcefa51=_0xeaa2[_0x1f77b0];return _0xcefa51;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x2eaa('0x0'))['db'][_0x2eaa('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2eaa('0x2'),'afterUpdate':_0x2eaa('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5dfb08){return function(_0x4fa1e7,_0x4a2262,_0x455682){VoicePrefixEvents[_0x2eaa('0x4')](_0x5dfb08+':'+_0x4fa1e7['id'],_0x4fa1e7);VoicePrefixEvents[_0x2eaa('0x4')](_0x5dfb08,_0x4fa1e7);_0x455682(null);};}for(var e in events){if(events[_0x2eaa('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x2eaa('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x12d3=['update','remove','emit','hasOwnProperty','exports','../../mysqldb','save'];(function(_0x49f55e,_0x3868b6){var _0x513ccf=function(_0x2ff12c){while(--_0x2ff12c){_0x49f55e['push'](_0x49f55e['shift']());}};_0x513ccf(++_0x3868b6);}(_0x12d3,0x14e));var _0x312d=function(_0x2c4e83,_0x3f337d){_0x2c4e83=_0x2c4e83-0x0;var _0x399bd7=_0x12d3[_0x2c4e83];return _0x399bd7;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x312d('0x0'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x312d('0x1'),'afterUpdate':_0x312d('0x2'),'afterDestroy':_0x312d('0x3')};function emitEvent(_0x123b89){return function(_0x1abde5,_0x26a029,_0xa0e69e){VoicePrefixEvents['emit'](_0x123b89+':'+_0x1abde5['id'],_0x1abde5);VoicePrefixEvents[_0x312d('0x4')](_0x123b89,_0x1abde5);_0xa0e69e(null);};}for(var e in events){if(events[_0x312d('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x312d('0x6')]=VoicePrefixEvents;
\ No newline at end of file
index 0a36411..e322535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbccd=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes','exports'];(function(_0x387e69,_0x580c91){var _0x43ac12=function(_0x17747c){while(--_0x17747c){_0x387e69['push'](_0x387e69['shift']());}};_0x43ac12(++_0x580c91);}(_0xbccd,0xd8));var _0xdbcc=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xbccd[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0xdbcc('0x0'));var util=require(_0xdbcc('0x1'));var logger=require(_0xdbcc('0x2'))(_0xdbcc('0x3'));var moment=require(_0xdbcc('0x4'));var BPromise=require(_0xdbcc('0x5'));var rp=require(_0xdbcc('0x6'));var fs=require('fs');var path=require(_0xdbcc('0x7'));var rimraf=require(_0xdbcc('0x8'));var config=require(_0xdbcc('0x9'));var attributes=require(_0xdbcc('0xa'));module[_0xdbcc('0xb')]=function(_0x57ede2,_0x5a8b65){return _0x57ede2['define']('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe5c4=['util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./voicePrefix.attributes','exports','define','voice_prefixes','lodash'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0xe5c4,0x1c7));var _0x4e5c=function(_0x145c56,_0x31908d){_0x145c56=_0x145c56-0x0;var _0x43848b=_0xe5c4[_0x145c56];return _0x43848b;};'use strict';var _=require(_0x4e5c('0x0'));var util=require(_0x4e5c('0x1'));var logger=require(_0x4e5c('0x2'))('api');var moment=require(_0x4e5c('0x3'));var BPromise=require(_0x4e5c('0x4'));var rp=require(_0x4e5c('0x5'));var fs=require('fs');var path=require(_0x4e5c('0x6'));var rimraf=require('rimraf');var config=require(_0x4e5c('0x7'));var attributes=require(_0x4e5c('0x8'));module[_0x4e5c('0x9')]=function(_0x217eba,_0x55a090){return _0x217eba[_0x4e5c('0xa')]('VoicePrefix',attributes,{'tableName':_0x4e5c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18f4a45..0df2bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a37=['rpc','jayson/promise','http','redis','defaults','register','request','then','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','VoicePrefix,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2de877,_0x5282c6){var _0x1df41e=function(_0x4997d9){while(--_0x4997d9){_0x2de877['push'](_0x2de877['shift']());}};_0x1df41e(++_0x5282c6);}(_0x1a37,0xb4));var _0x71a3=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x1a37[_0x5f09c5];return _0x426ad9;};'use strict';var _=require(_0x71a3('0x0'));var util=require(_0x71a3('0x1'));var moment=require(_0x71a3('0x2'));var BPromise=require(_0x71a3('0x3'));var rs=require(_0x71a3('0x4'));var fs=require('fs');var Redis=require(_0x71a3('0x5'));var db=require(_0x71a3('0x6'))['db'];var utils=require(_0x71a3('0x7'));var logger=require(_0x71a3('0x8'))(_0x71a3('0x9'));var config=require('../../config/environment');var jayson=require(_0x71a3('0xa'));var client=jayson['client'][_0x71a3('0xb')]({'port':0x232a});config[_0x71a3('0xc')]=_[_0x71a3('0xd')](config[_0x71a3('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voicePrefix.socket')[_0x71a3('0xe')](socket);function respondWithRpcPromise(_0x18320a,_0x3709bc,_0x3aeb48){return new BPromise(function(_0x3a7fc1,_0x2215f2){return client[_0x71a3('0xf')](_0x18320a,_0x3aeb48)[_0x71a3('0x10')](function(_0x5c464c){logger['info']('VoicePrefix,\x20%s,\x20%s',_0x3709bc,_0x71a3('0x11'));logger[_0x71a3('0x12')](_0x71a3('0x13'),_0x3709bc,_0x71a3('0x11'),JSON[_0x71a3('0x14')](_0x5c464c));if(_0x5c464c[_0x71a3('0x15')]){if(_0x5c464c[_0x71a3('0x15')][_0x71a3('0x16')]===0x1f4){logger[_0x71a3('0x15')](_0x71a3('0x17'),_0x3709bc,_0x5c464c[_0x71a3('0x15')]['message']);return _0x2215f2(_0x5c464c[_0x71a3('0x15')][_0x71a3('0x18')]);}logger['error']('VoicePrefix,\x20%s,\x20%s',_0x3709bc,_0x5c464c[_0x71a3('0x15')][_0x71a3('0x18')]);return _0x3a7fc1(_0x5c464c[_0x71a3('0x15')][_0x71a3('0x18')]);}else{logger[_0x71a3('0x19')](_0x71a3('0x17'),_0x3709bc,'request\x20sent');_0x3a7fc1(_0x5c464c[_0x71a3('0x1a')][_0x71a3('0x18')]);}})['catch'](function(_0x5f4562){logger[_0x71a3('0x15')](_0x71a3('0x17'),_0x3709bc,_0x5f4562);_0x2215f2(_0x5f4562);});});}
\ No newline at end of file
+var _0x7753=['then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request'];(function(_0xca1f0e,_0x2713d5){var _0x35e4ef=function(_0x44c40f){while(--_0x44c40f){_0xca1f0e['push'](_0xca1f0e['shift']());}};_0x35e4ef(++_0x2713d5);}(_0x7753,0xfd));var _0x3775=function(_0x2468b5,_0x506b9e){_0x2468b5=_0x2468b5-0x0;var _0x1056e4=_0x7753[_0x2468b5];return _0x1056e4;};'use strict';var _=require(_0x3775('0x0'));var util=require(_0x3775('0x1'));var moment=require(_0x3775('0x2'));var BPromise=require(_0x3775('0x3'));var rs=require(_0x3775('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3775('0x5'))['db'];var utils=require(_0x3775('0x6'));var logger=require(_0x3775('0x7'))('rpc');var config=require(_0x3775('0x8'));var jayson=require(_0x3775('0x9'));var client=jayson['client'][_0x3775('0xa')]({'port':0x232a});config[_0x3775('0xb')]=_['defaults'](config['redis'],{'host':_0x3775('0xc'),'port':0x18eb});var socket=require(_0x3775('0xd'))(new Redis(config[_0x3775('0xb')]));require(_0x3775('0xe'))[_0x3775('0xf')](socket);function respondWithRpcPromise(_0x4dcc31,_0x2c8595,_0x184879){return new BPromise(function(_0x3ec895,_0x19155a){return client[_0x3775('0x10')](_0x4dcc31,_0x184879)[_0x3775('0x11')](function(_0x483de9){logger[_0x3775('0x12')](_0x3775('0x13'),_0x2c8595,_0x3775('0x14'));logger[_0x3775('0x15')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x2c8595,_0x3775('0x14'),JSON['stringify'](_0x483de9));if(_0x483de9[_0x3775('0x16')]){if(_0x483de9[_0x3775('0x16')][_0x3775('0x17')]===0x1f4){logger['error'](_0x3775('0x13'),_0x2c8595,_0x483de9['error']['message']);return _0x19155a(_0x483de9[_0x3775('0x16')][_0x3775('0x18')]);}logger[_0x3775('0x16')](_0x3775('0x13'),_0x2c8595,_0x483de9[_0x3775('0x16')][_0x3775('0x18')]);return _0x3ec895(_0x483de9[_0x3775('0x16')][_0x3775('0x18')]);}else{logger['info'](_0x3775('0x13'),_0x2c8595,'request\x20sent');_0x3ec895(_0x483de9[_0x3775('0x19')][_0x3775('0x18')]);}})[_0x3775('0x1a')](function(_0x4eb999){logger[_0x3775('0x16')](_0x3775('0x13'),_0x2c8595,_0x4eb999);_0x19155a(_0x4eb999);});});}
\ No newline at end of file
index 0954129..191d32c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x710e=['length','voicePrefix:','./voicePrefix.events','update','emit','removeListener'];(function(_0x573642,_0x1085a5){var _0x5e4fa6=function(_0x458f4c){while(--_0x458f4c){_0x573642['push'](_0x573642['shift']());}};_0x5e4fa6(++_0x1085a5);}(_0x710e,0xb6));var _0xe710=function(_0x256dc1,_0x464e96){_0x256dc1=_0x256dc1-0x0;var _0x32ff9d=_0x710e[_0x256dc1];return _0x32ff9d;};'use strict';var VoicePrefixEvents=require(_0xe710('0x0'));var events=['save','remove',_0xe710('0x1')];function createListener(_0x44db10,_0xcc99f0){return function(_0x17e478){_0xcc99f0[_0xe710('0x2')](_0x44db10,_0x17e478);};}function removeListener(_0x4c22aa,_0x17600b){return function(){VoicePrefixEvents[_0xe710('0x3')](_0x4c22aa,_0x17600b);};}exports['register']=function(_0x5a9e4c){for(var _0xd8271b=0x0,_0x302291=events[_0xe710('0x4')];_0xd8271b<_0x302291;_0xd8271b++){var _0x211a33=events[_0xd8271b];var _0xf86a0f=createListener(_0xe710('0x5')+_0x211a33,_0x5a9e4c);VoicePrefixEvents['on'](_0x211a33,_0xf86a0f);}};
\ No newline at end of file
+var _0x6d0b=['remove','emit','removeListener','length','voicePrefix:','./voicePrefix.events'];(function(_0x49c141,_0x16f8b1){var _0x5e2698=function(_0x1a4b99){while(--_0x1a4b99){_0x49c141['push'](_0x49c141['shift']());}};_0x5e2698(++_0x16f8b1);}(_0x6d0b,0x71));var _0xb6d0=function(_0x146ab9,_0x3d5bbe){_0x146ab9=_0x146ab9-0x0;var _0x1f192f=_0x6d0b[_0x146ab9];return _0x1f192f;};'use strict';var VoicePrefixEvents=require(_0xb6d0('0x0'));var events=['save',_0xb6d0('0x1'),'update'];function createListener(_0x15490e,_0x26ff2e){return function(_0x15fea3){_0x26ff2e[_0xb6d0('0x2')](_0x15490e,_0x15fea3);};}function removeListener(_0x293a26,_0x374a27){return function(){VoicePrefixEvents[_0xb6d0('0x3')](_0x293a26,_0x374a27);};}exports['register']=function(_0x35142b){for(var _0x3612ac=0x0,_0x23217f=events[_0xb6d0('0x4')];_0x3612ac<_0x23217f;_0x3612ac++){var _0x440414=events[_0x3612ac];var _0x2e41cf=createListener(_0xb6d0('0x5')+_0x440414,_0x35142b);VoicePrefixEvents['on'](_0x440414,_0x2e41cf);}};
\ No newline at end of file
index 3398a4f..b79bccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x8c6164,_0x1dc7db){var _0x1ca172=function(_0x1c8d48){while(--_0x1c8d48){_0x8c6164['push'](_0x8c6164['shift']());}};_0x1ca172(++_0x1dc7db);}(_0xb10b,0x12a));var _0xbb10=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0xb10b[_0x4c1ec2];return _0x3f6f1c;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x5162ed,_0x386cb7){var _0x4c579b=function(_0x189260){while(--_0x189260){_0x5162ed['push'](_0x5162ed['shift']());}};_0x4c579b(++_0x386cb7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index c1ecd65..c0fb021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30cb=['onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDisposition','sequelize','STRING','name','ENUM','inbound','outbound','default','ringall','fewestcalls','linear','wrandom','rrordered','strategy','rrmemory','getDataValue','type','dialMethod','booked','roundrobin','predictive','power','INTEGER','yes','all','setDataValue','periodic_announce','split','joinempty','leavewhenempty','join','BOOLEAN','acw','wrapuptime','preview','progressive','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always'];(function(_0x2e1f0c,_0x11cd1e){var _0x12ea5d=function(_0x3e8832){while(--_0x3e8832){_0x2e1f0c['push'](_0x2e1f0c['shift']());}};_0x12ea5d(++_0x11cd1e);}(_0x30cb,0xb7));var _0xb30c=function(_0x18ead0,_0x11465f){_0x18ead0=_0x18ead0-0x0;var _0x4f1b04=_0x30cb[_0x18ead0];return _0x4f1b04;};'use strict';var Sequelize=require(_0xb30c('0x0'));module['exports']={'name':{'type':Sequelize[_0xb30c('0x1')],'allowNull':![],'unique':_0xb30c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x4'),_0xb30c('0x5')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':_0xb30c('0x6')},'announce':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xb30c('0x3')]('rr',_0xb30c('0x7'),'leastrecent',_0xb30c('0x8'),'random','rrmemory',_0xb30c('0x9'),_0xb30c('0xa'),_0xb30c('0xb')),'allowNull':![],'defaultValue':_0xb30c('0x7'),'set':function(_0x57e505){this['setDataValue'](_0xb30c('0xc'),_0x57e505?_0x57e505:_0xb30c('0xd'));},'get':function(){var _0x19403d=this[_0xb30c('0xe')](_0xb30c('0xf'));var _0x20e631=this[_0xb30c('0xe')](_0xb30c('0x10'));var _0x3a58b0=this[_0xb30c('0xe')]('strategy');if(_0x19403d===_0xb30c('0x4')){return _0x3a58b0;}if(_0x20e631==='booked'&&_0x3a58b0===_0xb30c('0xd')||_0x20e631===_0xb30c('0x11')&&_0x3a58b0===_0xb30c('0x12')){return _0x3a58b0;}if(_0x20e631==='progressive'||_0x20e631===_0xb30c('0x13')||_0x20e631===_0xb30c('0x14')){return _0x3a58b0;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xb30c('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xb30c('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xb30c('0x1')]},'weight':{'type':Sequelize[_0xb30c('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xb30c('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':_0xb30c('0x16')},'autopause':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no',_0xb30c('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xb30c('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xb30c('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0xb30c('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xb30c('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xb30c('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xb30c('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0xb30c('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':_0xb30c('0x16')},'announce_holdtime':{'type':Sequelize[_0xb30c('0x3')]('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0xb30c('0x16'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xb30c('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xb30c('0x1')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xb30c('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0xb30c('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1f38b3){this[_0xb30c('0x18')](_0xb30c('0x19'),_0x1f38b3?_0x1f38b3['join'](','):[]);},'get':function(){return this['getDataValue'](_0xb30c('0x19'))?this[_0xb30c('0xe')](_0xb30c('0x19'))[_0xb30c('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':_0xb30c('0x16'),'set':function(_0x298cb5){this['setDataValue'](_0xb30c('0x1b'),_0x298cb5?_0x298cb5['join'](','):undefined);},'get':function(){return this['getDataValue']('joinempty')?this[_0xb30c('0xe')](_0xb30c('0x1b'))[_0xb30c('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':'no','set':function(_0x2fa23b){this[_0xb30c('0x18')](_0xb30c('0x1c'),_0x2fa23b?_0x2fa23b[_0xb30c('0x1d')](','):undefined);},'get':function(){return this['getDataValue']('leavewhenempty')?this['getDataValue']('leavewhenempty')[_0xb30c('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xb30c('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xb30c('0x3')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb30c('0x1')]},'acw':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':0x0,'set':function(_0x21d586){this[_0xb30c('0x18')](_0xb30c('0x1f'),_0x21d586);if(_0x21d586){if(this[_0xb30c('0xe')]('wrapuptime')<0x2){this[_0xb30c('0x18')](_0xb30c('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xb30c('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x21'),_0xb30c('0x22'),_0xb30c('0x14'),_0xb30c('0x13'),_0xb30c('0x11')),'defaultValue':'progressive','comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0xb30c('0x15')](0x4)[_0xb30c('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb30c('0x24')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xb30c('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0xb30c('0x25')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xb30c('0x26')},'dialPredictiveOptimization':{'type':Sequelize['ENUM']('agentBusyFactor',_0xb30c('0x27')),'defaultValue':_0xb30c('0x27'),'comment':_0xb30c('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xb30c('0x25')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xb30c('0x29')},'dialPredictiveInterval':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xb30c('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0xb30c('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xb30c('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x2b')},'dialQueueOptions':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':_0xb30c('0x2c'),'comment':_0xb30c('0x2d')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x2e')},'dialQueueProject':{'type':Sequelize[_0xb30c('0x1')],'comment':_0xb30c('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x31')},'dialBusyMaxRetry':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x32')},'dialBusyRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xb30c('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xb30c('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x35')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb30c('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xb30c('0x36')},'dialTimezone':{'type':Sequelize[_0xb30c('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xb30c('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x38'),'never',_0xb30c('0x39')),'defaultValue':_0xb30c('0x38')},'dialAMDActive':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xb30c('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xb30c('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0xb30c('0x15')](0x9)[_0xb30c('0x23')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xb30c('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xb30c('0x15')](0x9)[_0xb30c('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xb30c('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xb30c('0x15')](0x9)[_0xb30c('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb30c('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0xb30c('0x15')](0x9)[_0xb30c('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xb30c('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xb30c('0x3f')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xb30c('0x40')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xb30c('0x15')](0x9)[_0xb30c('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xb30c('0x41')},'dialRecallInQueue':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':0x0,'comment':_0xb30c('0x42')},'dialOrderByScheduledAt':{'type':Sequelize[_0xb30c('0x3')](_0xb30c('0x43'),_0xb30c('0x44')),'defaultValue':_0xb30c('0x43')},'dialQueueProject2':{'type':Sequelize[_0xb30c('0x1')],'comment':_0xb30c('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb30c('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x46')},'dialDropMaxRetry':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x47')},'dialDropRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb30c('0x4b')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb30c('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb30c('0x4c')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xb30c('0x15')](0x5)[_0xb30c('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb30c('0x15')],'allowNull':!![],'comment':_0xb30c('0x4d')},'mandatoryDisposition':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':![],'comment':_0xb30c('0x4e'),'set':function(_0x13fcbe){if(!_0x13fcbe)this[_0xb30c('0x18')]('mandatoryDispositionPauseId',null);this[_0xb30c('0x18')](_0xb30c('0x4f'),_0x13fcbe);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xb30c('0x15')](0x3)[_0xb30c('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xb30c('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xb30c('0x1e')],'defaultValue':![]}};
\ No newline at end of file
+var _0x41f7=['#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','Active/Disactive\x20Recall\x20In\x20Queue','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','inbound','outbound','leastrecent','fewestcalls','rrmemory','linear','wrandom','ringall','setDataValue','strategy','getDataValue','type','dialMethod','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words'];(function(_0x23c02b,_0x411b4d){var _0x25efc5=function(_0x50e9e4){while(--_0x50e9e4){_0x23c02b['push'](_0x23c02b['shift']());}};_0x25efc5(++_0x411b4d);}(_0x41f7,0x1c5));var _0x741f=function(_0x484bc0,_0x424242){_0x484bc0=_0x484bc0-0x0;var _0x1774ea=_0x41f7[_0x484bc0];return _0x1774ea;};'use strict';var Sequelize=require(_0x741f('0x0'));module[_0x741f('0x1')]={'name':{'type':Sequelize[_0x741f('0x2')],'allowNull':![],'unique':_0x741f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x5'),_0x741f('0x6')),'allowNull':![],'defaultValue':_0x741f('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr','ringall',_0x741f('0x7'),_0x741f('0x8'),'random',_0x741f('0x9'),_0x741f('0xa'),_0x741f('0xb'),'rrordered'),'allowNull':![],'defaultValue':_0x741f('0xc'),'set':function(_0x4c2b1d){this[_0x741f('0xd')](_0x741f('0xe'),_0x4c2b1d?_0x4c2b1d:_0x741f('0x9'));},'get':function(){var _0x161271=this[_0x741f('0xf')](_0x741f('0x10'));var _0x390535=this[_0x741f('0xf')](_0x741f('0x11'));var _0x113ecf=this[_0x741f('0xf')](_0x741f('0xe'));if(_0x161271===_0x741f('0x5')){return _0x113ecf;}if(_0x390535==='booked'&&_0x113ecf===_0x741f('0x9')||_0x390535===_0x741f('0x12')&&_0x113ecf===_0x741f('0x13')){return _0x113ecf;}if(_0x390535===_0x741f('0x14')||_0x390535===_0x741f('0x15')||_0x390535===_0x741f('0x16')){return _0x113ecf;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x741f('0x17')](0xb)},'timeout':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x741f('0x4')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x18'),'no',_0x741f('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x741f('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0x741f('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x741f('0x4')]('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x741f('0x4')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0x741f('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x741f('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x741f('0x4')]('yes','no'),'defaultValue':_0x741f('0x18')},'announce_holdtime':{'type':Sequelize['ENUM'](_0x741f('0x18'),'no',_0x741f('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x18'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x741f('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x741f('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x741f('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x741f('0x2')]},'queue_quantity1':{'type':Sequelize[_0x741f('0x2')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x741f('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x741f('0x1b')],'set':function(_0x19774a){this['setDataValue'](_0x741f('0x1c'),_0x19774a?_0x19774a[_0x741f('0x1d')](','):[]);},'get':function(){return this[_0x741f('0xf')]('periodic_announce')?this[_0x741f('0xf')]('periodic_announce')[_0x741f('0x1e')](','):[];}},'joinempty':{'type':Sequelize[_0x741f('0x2')],'defaultValue':_0x741f('0x18'),'set':function(_0x43ad3d){this[_0x741f('0xd')](_0x741f('0x1f'),_0x43ad3d?_0x43ad3d[_0x741f('0x1d')](','):undefined);},'get':function(){return this['getDataValue'](_0x741f('0x1f'))?this[_0x741f('0xf')](_0x741f('0x1f'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0xd0340b){this['setDataValue'](_0x741f('0x20'),_0xd0340b?_0xd0340b[_0x741f('0x1d')](','):undefined);},'get':function(){return this[_0x741f('0xf')](_0x741f('0x20'))?this[_0x741f('0xf')](_0x741f('0x20'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x741f('0x4')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x741f('0x2')]},'description':{'type':Sequelize[_0x741f('0x2')]},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x18318d){this[_0x741f('0xd')](_0x741f('0x21'),_0x18318d);if(_0x18318d){if(this[_0x741f('0xf')](_0x741f('0x22'))<0x2){this['setDataValue'](_0x741f('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x741f('0x17')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x741f('0x23')],'defaultValue':0x0,'comment':_0x741f('0x24')},'dialMethod':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x25'),_0x741f('0x14'),_0x741f('0x16'),'predictive',_0x741f('0x12')),'defaultValue':_0x741f('0x14'),'comment':_0x741f('0x26')},'dialLimitChannel':{'type':Sequelize[_0x741f('0x17')](0x4)[_0x741f('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x741f('0x28')},'dialLimitQueue':{'type':Sequelize[_0x741f('0x17')](0x4)[_0x741f('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x741f('0x29')},'dialPowerLevel':{'type':Sequelize[_0x741f('0x2a')](0x2)[_0x741f('0x27')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x741f('0x2b')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x741f('0x2c'),_0x741f('0x2d')),'defaultValue':_0x741f('0x2d'),'comment':_0x741f('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x741f('0x2f')},'dialPredictiveInterval':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x741f('0x30')},'dialOriginateCallerIdName':{'type':Sequelize[_0x741f('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x741f('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x741f('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x31')},'dialQueueOptions':{'type':Sequelize[_0x741f('0x2')],'defaultValue':_0x741f('0x32'),'comment':_0x741f('0x33')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x34')},'dialQueueProject':{'type':Sequelize[_0x741f('0x2')],'comment':_0x741f('0x35')},'dialCongestionMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x36')},'dialBusyMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x37')},'dialBusyRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x38')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x741f('0x39')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x3a')},'dialGlobalMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x741f('0x3b')},'dialTimezone':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x741f('0x3c')},'dialPrefix':{'type':Sequelize[_0x741f('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x741f('0x4')](_0x741f('0x3d'),'never',_0x741f('0x3e')),'defaultValue':_0x741f('0x3d')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x741f('0x3f')},'dialAMDInitialSilence':{'type':Sequelize[_0x741f('0x17')](0x9)[_0x741f('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x741f('0x40')},'dialAMDGreeting':{'type':Sequelize[_0x741f('0x17')](0x9)[_0x741f('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x741f('0x41')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x741f('0x17')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x741f('0x17')](0x9)[_0x741f('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x741f('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x741f('0x42')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x741f('0x17')](0x9)[_0x741f('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x741f('0x43')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x741f('0x44')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x741f('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x741f('0x45')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x741f('0x17')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x741f('0x46')},'dialRecallMeTimeout':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x741f('0x23')],'defaultValue':0x0,'comment':_0x741f('0x47')},'dialOrderByScheduledAt':{'type':Sequelize[_0x741f('0x4')]('DESC',_0x741f('0x48')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x741f('0x35')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x741f('0x23')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x741f('0x17')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x741f('0x49')},'dialCutDigit':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x741f('0x4a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x4b')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x4c')},'dialDropMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x4d')},'dialDropRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x4e')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x4f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x741f('0x50')},'dialMachineRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x51')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x741f('0x17')](0x5)[_0x741f('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x741f('0x52')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x741f('0x17')],'allowNull':!![],'comment':_0x741f('0x53')},'mandatoryDisposition':{'type':Sequelize[_0x741f('0x23')],'defaultValue':![],'comment':_0x741f('0x54'),'set':function(_0x5b2ed1){if(!_0x5b2ed1)this[_0x741f('0xd')](_0x741f('0x55'),null);this[_0x741f('0xd')](_0x741f('0x56'),_0x5b2ed1);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x741f('0x17')](0x3)[_0x741f('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x741f('0x23')],'defaultValue':!![]},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x741f('0x23')],'defaultValue':![]}};
\ No newline at end of file
index 8fa5b99..0dd5074 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf426=['addTeams','teams','User','online','voicePause','interface','flatMap','Agents','penalty','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','SIP/%s','forEach','emit','userVoiceQueue:save','ids','field','tq.TeamId','from','team_has_voice_queues','join','ut.TeamId\x20=\x20tq.TeamId','push','sequelize','toString','SELECT','every','TeamId','all','union','compact','removeTeams','isEmpty','addAgents','spread','removeAgents','isArray','userVoiceQueue:remove','getAgents','getMembers','getLists','addLists','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','updatedAt','select','NOW()','CmListId','cm_contacts','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','VoiceQueueId\x20=\x20?','onlyIfOpen','phone\x20IS\x20NOT\x20NULL','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','CmList','addBlackLists','insert','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','get','inbound','outbound','filter','ignore','map','value','includes','type','find','UserProfileResource','stack','name','send','index','VoiceQueue','rawAttributes','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','options','includeAll','include','findAll','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoiceQueues','QueueCampaigns','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','getHoppers','findOne','CmHopper','pick','VoiceQueueId','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','rows','getTeams','Team'];(function(_0x192645,_0x4ebcde){var _0x5f80d5=function(_0x4e5bb8){while(--_0x4e5bb8){_0x192645['push'](_0x192645['shift']());}};_0x5f80d5(++_0x4ebcde);}(_0xf426,0x1c6));var _0x6f42=function(_0x2ef251,_0x3687e5){_0x2ef251=_0x2ef251-0x0;var _0x5c931b=_0xf426[_0x2ef251];return _0x5c931b;};'use strict';var emlformat=require(_0x6f42('0x0'));var rimraf=require(_0x6f42('0x1'));var zipdir=require(_0x6f42('0x2'));var jsonpatch=require(_0x6f42('0x3'));var rp=require(_0x6f42('0x4'));var moment=require(_0x6f42('0x5'));var BPromise=require(_0x6f42('0x6'));var Mustache=require('mustache');var util=require(_0x6f42('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x6f42('0x8'));var ejs=require(_0x6f42('0x9'));var fs=require('fs');var fs_extra=require(_0x6f42('0xa'));var _=require(_0x6f42('0xb'));var squel=require(_0x6f42('0xc'));var crypto=require(_0x6f42('0xd'));var jsforce=require(_0x6f42('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6f42('0x8'));var querystring=require(_0x6f42('0xf'));var Papa=require(_0x6f42('0x10'));var Redis=require('ioredis');var authService=require(_0x6f42('0x11'));var qs=require(_0x6f42('0x12'));var as=require(_0x6f42('0x13'));var hardwareService=require(_0x6f42('0x14'));var logger=require(_0x6f42('0x15'))('api');var utils=require(_0x6f42('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6f42('0x17'))['db'];config['redis']=_[_0x6f42('0x18')](config[_0x6f42('0x19')],{'host':_0x6f42('0x1a'),'port':0x18eb});var socket=require(_0x6f42('0x1b'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x6f42('0x1c')](socket);function respondWithStatusCode(_0x549502,_0x3670d3){_0x3670d3=_0x3670d3||0xcc;return function(_0x506bfa){if(_0x506bfa){return _0x549502[_0x6f42('0x1d')](_0x3670d3);}return _0x549502[_0x6f42('0x1e')](_0x3670d3)[_0x6f42('0x1f')]();};}function respondWithResult(_0x2c9a0a,_0x10dc94){_0x10dc94=_0x10dc94||0xc8;return function(_0x30378d){if(_0x30378d){return _0x2c9a0a[_0x6f42('0x1e')](_0x10dc94)[_0x6f42('0x20')](_0x30378d);}};}function respondWithFilteredResult(_0x2e8792,_0x3f5735){return function(_0x1f64da){if(_0x1f64da){var _0x8bb1fe=typeof _0x3f5735[_0x6f42('0x21')]===_0x6f42('0x22')&&typeof _0x3f5735[_0x6f42('0x23')]===_0x6f42('0x22');var _0x125088=_0x1f64da[_0x6f42('0x24')];var _0x25cfb4=_0x8bb1fe?0x0:_0x3f5735[_0x6f42('0x21')];var _0x239406=_0x8bb1fe?_0x1f64da['count']:_0x3f5735['offset']+_0x3f5735[_0x6f42('0x23')];var _0x213a27;if(_0x239406>=_0x125088){_0x239406=_0x125088;_0x213a27=0xc8;}else{_0x213a27=0xce;}_0x2e8792['status'](_0x213a27);return _0x2e8792[_0x6f42('0x25')]('Content-Range',_0x25cfb4+'-'+_0x239406+'/'+_0x125088)[_0x6f42('0x20')](_0x1f64da);}return null;};}function patchUpdates(_0x1d4418){return function(_0x379042){try{jsonpatch['apply'](_0x379042,_0x1d4418,!![]);}catch(_0x3a8a0c){return BPromise[_0x6f42('0x26')](_0x3a8a0c);}return _0x379042[_0x6f42('0x27')]();};}function saveUpdates(_0x5afed6,_0x34ab95){return function(_0x5b6972){if(_0x5b6972){return _0x5b6972[_0x6f42('0x28')](_0x5afed6)[_0x6f42('0x29')](function(_0xda182e){return _0xda182e;});}return null;};}function removeEntity(_0x116e48,_0x5ea1ae){return function(_0x263471){if(_0x263471){return _0x263471[_0x6f42('0x2a')]()['then'](function(){var _0x21b252=_0x263471[_0x6f42('0x2b')]({'plain':!![]});var _0x2d041f=[{'name':'VoiceQueues','value':_0x6f42('0x2c'),'ignore':![]},{'name':'QueueCampaigns','value':_0x6f42('0x2d'),'ignore':![]}];var _0x5abbf1=_(_0x2d041f)[_0x6f42('0x2e')](_0x6f42('0x2f'))[_0x6f42('0x30')](_0x6f42('0x31'))['value']();if(_[_0x6f42('0x32')](_0x5abbf1,_0x21b252[_0x6f42('0x33')])){return;}var _0x48c54b=_[_0x6f42('0x34')](_0x2d041f,['value',_0x21b252[_0x6f42('0x33')]])['name'];return db[_0x6f42('0x35')]['destroy']({'where':{'type':_0x48c54b,'resourceId':_0x21b252['id']}})['then'](function(){return _0x263471;});})[_0x6f42('0x29')](function(){_0x116e48[_0x6f42('0x1e')](0xcc)[_0x6f42('0x1f')]();});}};}function handleEntityNotFound(_0x40b0ff,_0x28c477){return function(_0x86fd02){if(!_0x86fd02){_0x40b0ff['sendStatus'](0x194);}return _0x86fd02;};}function handleError(_0xd3b578,_0x11e89f){_0x11e89f=_0x11e89f||0x1f4;return function(_0x49c1bd){logger['error'](_0x49c1bd[_0x6f42('0x36')]);if(_0x49c1bd[_0x6f42('0x37')]){delete _0x49c1bd[_0x6f42('0x37')];}_0xd3b578['status'](_0x11e89f)[_0x6f42('0x38')](_0x49c1bd);};}exports[_0x6f42('0x39')]=function(_0x323b1a,_0xed2178){var _0x59e6ad={},_0x289ed6={},_0x2f8aa0={'count':0x0,'rows':[]};var _0x5e2692=_[_0x6f42('0x30')](db[_0x6f42('0x3a')][_0x6f42('0x3b')],function(_0xdc2f44){return{'name':_0xdc2f44['fieldName'],'type':_0xdc2f44['type'][_0x6f42('0x3c')]};});_0x289ed6[_0x6f42('0x3d')]=_[_0x6f42('0x30')](_0x5e2692,_0x6f42('0x37'));_0x289ed6['query']=_[_0x6f42('0x3e')](_0x323b1a[_0x6f42('0x3f')]);_0x289ed6[_0x6f42('0x40')]=_['intersection'](_0x289ed6['model'],_0x289ed6[_0x6f42('0x3f')]);_0x59e6ad[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x289ed6[_0x6f42('0x3d')],qs[_0x6f42('0x43')](_0x323b1a['query']['fields']));_0x59e6ad[_0x6f42('0x41')]=_0x59e6ad['attributes'][_0x6f42('0x44')]?_0x59e6ad['attributes']:_0x289ed6[_0x6f42('0x3d')];if(!_0x323b1a['query'][_0x6f42('0x45')](_0x6f42('0x46'))){_0x59e6ad[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0x323b1a[_0x6f42('0x3f')][_0x6f42('0x23')]);_0x59e6ad[_0x6f42('0x21')]=qs['offset'](_0x323b1a[_0x6f42('0x3f')][_0x6f42('0x21')]);}_0x59e6ad[_0x6f42('0x47')]=qs[_0x6f42('0x48')](_0x323b1a[_0x6f42('0x3f')]['sort']);_0x59e6ad[_0x6f42('0x49')]=qs['filters'](_['pick'](_0x323b1a[_0x6f42('0x3f')],_0x289ed6[_0x6f42('0x40')]),_0x5e2692);if(_0x323b1a[_0x6f42('0x3f')]['filter']){_0x59e6ad['where']=_[_0x6f42('0x4a')](_0x59e6ad[_0x6f42('0x49')],{'$or':_[_0x6f42('0x30')](_0x5e2692,function(_0x26c7c6){if(_0x26c7c6['type']!=='VIRTUAL'){var _0x527685={};_0x527685[_0x26c7c6[_0x6f42('0x37')]]={'$like':'%'+_0x323b1a[_0x6f42('0x3f')]['filter']+'%'};return _0x527685;}})});}_0x59e6ad=_[_0x6f42('0x4a')]({},_0x59e6ad,_0x323b1a[_0x6f42('0x4b')]);var _0x4fe3b3={'where':_0x59e6ad[_0x6f42('0x49')]};return db[_0x6f42('0x3a')][_0x6f42('0x24')](_0x4fe3b3)[_0x6f42('0x29')](function(_0x4c224b){_0x2f8aa0[_0x6f42('0x24')]=_0x4c224b;if(_0x323b1a['query'][_0x6f42('0x4c')]){_0x59e6ad[_0x6f42('0x4d')]=[{'all':!![]}];}return db[_0x6f42('0x3a')][_0x6f42('0x4e')](_0x59e6ad);})[_0x6f42('0x29')](function(_0x3b5c20){_0x2f8aa0['rows']=_0x3b5c20;return _0x2f8aa0;})[_0x6f42('0x29')](respondWithFilteredResult(_0xed2178,_0x59e6ad))[_0x6f42('0x4f')](handleError(_0xed2178,null));};exports[_0x6f42('0x50')]=function(_0x23bd19,_0x393f31){var _0x2bc216={'raw':![],'where':{'id':_0x23bd19[_0x6f42('0x51')]['id']}},_0x1e6155={};_0x1e6155[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x3a')][_0x6f42('0x3b')]);_0x1e6155[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x23bd19[_0x6f42('0x3f')]);_0x1e6155[_0x6f42('0x40')]=_['intersection'](_0x1e6155['model'],_0x1e6155[_0x6f42('0x3f')]);_0x2bc216[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x1e6155[_0x6f42('0x3d')],qs[_0x6f42('0x43')](_0x23bd19[_0x6f42('0x3f')][_0x6f42('0x43')]));_0x2bc216[_0x6f42('0x41')]=_0x2bc216['attributes'][_0x6f42('0x44')]?_0x2bc216[_0x6f42('0x41')]:_0x1e6155['model'];if(_0x23bd19['query'][_0x6f42('0x4c')]){_0x2bc216[_0x6f42('0x4d')]=[{'all':!![]}];}_0x2bc216=_[_0x6f42('0x4a')]({},_0x2bc216,_0x23bd19[_0x6f42('0x4b')]);return db[_0x6f42('0x3a')]['find'](_0x2bc216)['then'](handleEntityNotFound(_0x393f31,null))[_0x6f42('0x29')](respondWithResult(_0x393f31,null))[_0x6f42('0x4f')](handleError(_0x393f31,null));};exports[_0x6f42('0x52')]=function(_0x2f35ab,_0x52f5cc){return db[_0x6f42('0x3a')][_0x6f42('0x52')](_0x2f35ab[_0x6f42('0x53')],{})[_0x6f42('0x29')](function(_0x32b5ec){var _0x549a66=_0x2f35ab[_0x6f42('0x54')][_0x6f42('0x2b')]({'plain':!![]});if(!_0x549a66)throw new Error(_0x6f42('0x55'));if(_0x549a66[_0x6f42('0x56')]==='user'){var _0x377b0f=_0x32b5ec[_0x6f42('0x2b')]({'plain':!![]});var _0x5ddb41=[{'name':_0x6f42('0x57'),'value':_0x6f42('0x2c')},{'name':_0x6f42('0x58'),'value':_0x6f42('0x2d')}];var _0x53ee73=_[_0x6f42('0x34')](_0x5ddb41,['value',_0x377b0f[_0x6f42('0x33')]])[_0x6f42('0x37')];return db[_0x6f42('0x59')][_0x6f42('0x34')]({'where':{'name':_0x53ee73,'userProfileId':_0x549a66[_0x6f42('0x5a')]},'raw':!![]})[_0x6f42('0x29')](function(_0x11a67b){if(_0x11a67b&&_0x11a67b[_0x6f42('0x5b')]===0x0){return db['UserProfileResource'][_0x6f42('0x52')]({'name':_0x377b0f[_0x6f42('0x37')],'resourceId':_0x377b0f['id'],'type':_0x11a67b[_0x6f42('0x37')],'sectionId':_0x11a67b['id']},{})['then'](function(){return _0x32b5ec;});}else{return _0x32b5ec;}})[_0x6f42('0x4f')](function(_0x11ec47){logger[_0x6f42('0x5c')](_0x6f42('0x5d'),_0x11ec47);throw _0x11ec47;});}return _0x32b5ec;})[_0x6f42('0x29')](respondWithResult(_0x52f5cc,0xc9))[_0x6f42('0x4f')](handleError(_0x52f5cc,null));};exports[_0x6f42('0x5e')]=function(_0x53aced,_0x9dd054){var _0x54158d={'where':{'id':_0x53aced['params']['id']}},_0x3d290a={};_0x3d290a[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x3a')][_0x6f42('0x3b')]);_0x54158d[_0x6f42('0x41')]=_['intersection'](_0x3d290a[_0x6f42('0x3d')],qs[_0x6f42('0x43')](_0x53aced['query']['fields']));_0x54158d[_0x6f42('0x41')]=_0x54158d[_0x6f42('0x41')][_0x6f42('0x44')]?_0x54158d[_0x6f42('0x41')]:_0x3d290a[_0x6f42('0x3d')];if(_0x53aced[_0x6f42('0x3f')]['includeAll']){_0x54158d[_0x6f42('0x4d')]=[{'all':!![]}];}_0x54158d=_[_0x6f42('0x4a')]({},_0x54158d,_0x53aced[_0x6f42('0x4b')]);return db[_0x6f42('0x3a')][_0x6f42('0x34')](_0x54158d)[_0x6f42('0x29')](handleEntityNotFound(_0x9dd054,null))[_0x6f42('0x29')](function(_0x319c25){if(_0x319c25){var _0xd362e9=_0x319c25[_0x6f42('0x2b')]({'plain':!![]});_0xd362e9=qs['omit'](_0xd362e9,['id','createdAt','updatedAt']);_0x53aced[_0x6f42('0x53')]=_[_0x6f42('0x5f')](_0x53aced[_0x6f42('0x53')],['id',_0x6f42('0x60'),'updatedAt']);return db[_0x6f42('0x3a')]['create'](_[_0x6f42('0x4a')](_0xd362e9,_0x53aced['body']),{'include':_0x53aced[_0x6f42('0x3f')][_0x6f42('0x4c')]?[{'all':!![]}]:undefined})[_0x6f42('0x29')](function(_0x350a29){var _0x3c8862=_0x53aced[_0x6f42('0x54')][_0x6f42('0x2b')]({'plain':!![]});if(!_0x3c8862)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3c8862[_0x6f42('0x56')]===_0x6f42('0x54')){var _0xbb2fab=_0x350a29['get']({'plain':!![]});var _0x4cf6a9=[{'name':'VoiceQueues','value':_0x6f42('0x2c')},{'name':_0x6f42('0x58'),'value':'outbound'}];var _0x337820=_[_0x6f42('0x34')](_0x4cf6a9,['value',_0xbb2fab['type']])['name'];return db[_0x6f42('0x59')]['find']({'where':{'name':_0x337820,'userProfileId':_0x3c8862[_0x6f42('0x5a')]},'raw':!![]})[_0x6f42('0x29')](function(_0x456ec7){if(_0x456ec7&&_0x456ec7[_0x6f42('0x5b')]===0x0){return db[_0x6f42('0x35')][_0x6f42('0x52')]({'name':_0xbb2fab[_0x6f42('0x37')],'resourceId':_0xbb2fab['id'],'type':_0x456ec7['name'],'sectionId':_0x456ec7['id']},{})[_0x6f42('0x29')](function(){return _0x350a29;});}else{return _0x350a29;}})[_0x6f42('0x4f')](function(_0x9cde11){logger[_0x6f42('0x5c')](_0x6f42('0x5d'),_0x9cde11);throw _0x9cde11;});}return _0x350a29;});}})['then'](respondWithResult(_0x9dd054,0xc9))[_0x6f42('0x4f')](handleError(_0x9dd054,null));};exports['update']=function(_0x4dc05e,_0x3a8357){if(_0x4dc05e[_0x6f42('0x53')]['id']){delete _0x4dc05e[_0x6f42('0x53')]['id'];}return db['VoiceQueue'][_0x6f42('0x34')]({'where':{'id':_0x4dc05e[_0x6f42('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a8357,null))[_0x6f42('0x29')](saveUpdates(_0x4dc05e['body'],null))[_0x6f42('0x29')](respondWithResult(_0x3a8357,null))[_0x6f42('0x4f')](handleError(_0x3a8357,null));};exports[_0x6f42('0x2a')]=function(_0x4710c9,_0x45e47a){return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x4710c9[_0x6f42('0x51')]['id']}})['then'](handleEntityNotFound(_0x45e47a,null))[_0x6f42('0x29')](removeEntity(_0x45e47a,null))[_0x6f42('0x4f')](handleError(_0x45e47a,null));};exports[_0x6f42('0x61')]=function(_0x3b1b53,_0x399dad,_0x2a05a8){var _0x22c85c={'raw':![],'where':{}};var _0x4a0119={};var _0x50f1e3={'count':0x0,'rows':[]};return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0x3b1b53[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x399dad,null))['then'](function(_0x60ba87){if(_0x60ba87){_0x4a0119[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x63')][_0x6f42('0x3b')]);_0x4a0119[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x3b1b53['query']);_0x4a0119[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0x4a0119[_0x6f42('0x3d')],_0x4a0119[_0x6f42('0x3f')]);_0x22c85c[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x4a0119[_0x6f42('0x3d')],qs[_0x6f42('0x43')](_0x3b1b53[_0x6f42('0x3f')]['fields']));_0x22c85c[_0x6f42('0x41')]=_0x22c85c['attributes'][_0x6f42('0x44')]?_0x22c85c[_0x6f42('0x41')]:_0x4a0119[_0x6f42('0x3d')];if(!_0x3b1b53[_0x6f42('0x3f')]['hasOwnProperty']('nolimit')){_0x22c85c[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0x3b1b53['query']['limit']);_0x22c85c[_0x6f42('0x21')]=qs[_0x6f42('0x21')](_0x3b1b53['query'][_0x6f42('0x21')]);}_0x22c85c[_0x6f42('0x47')]=qs[_0x6f42('0x48')](_0x3b1b53[_0x6f42('0x3f')][_0x6f42('0x48')]);_0x22c85c[_0x6f42('0x49')]=qs[_0x6f42('0x40')](_[_0x6f42('0x64')](_0x3b1b53['query'],_0x4a0119[_0x6f42('0x40')]));_0x22c85c[_0x6f42('0x49')][_0x6f42('0x65')]=_0x60ba87['id'];if(_0x3b1b53[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0x22c85c[_0x6f42('0x49')]=_[_0x6f42('0x4a')](_0x22c85c[_0x6f42('0x49')],{'$or':_[_0x6f42('0x30')](_0x22c85c[_0x6f42('0x41')],function(_0x36a495){var _0x32b8b7={};_0x32b8b7[_0x36a495]={'$like':'%'+_0x3b1b53['query'][_0x6f42('0x2e')]+'%'};return _0x32b8b7;})});}_0x22c85c=_[_0x6f42('0x4a')]({},_0x22c85c,_0x3b1b53['options']);return db[_0x6f42('0x63')][_0x6f42('0x24')]({'where':_0x22c85c['where']})['then'](function(_0x571742){_0x50f1e3[_0x6f42('0x24')]=_0x571742;if(_0x3b1b53['query']['includeAll']){_0x22c85c['include']=[{'all':!![]}];}return db['CmHopper'][_0x6f42('0x4e')](_0x22c85c);})[_0x6f42('0x29')](function(_0x594206){_0x50f1e3['rows']=_0x594206;return _0x50f1e3;});}})[_0x6f42('0x29')](respondWithFilteredResult(_0x399dad,_0x22c85c))[_0x6f42('0x4f')](handleError(_0x399dad,null));};exports[_0x6f42('0x66')]=function(_0x395f08,_0x45efe8,_0x68bf51){var _0xbcc9bf={'raw':!![],'where':{}};var _0x2670c0={};var _0x3b82fc={'count':0x0,'rows':[]};return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0x395f08[_0x6f42('0x51')]['id']}})['then'](handleEntityNotFound(_0x45efe8,null))['then'](function(_0x174b83){if(_0x174b83){_0x2670c0[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x67')][_0x6f42('0x3b')]);_0x2670c0[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x395f08[_0x6f42('0x3f')]);_0x2670c0['filters']=_[_0x6f42('0x42')](_0x2670c0[_0x6f42('0x3d')],_0x2670c0[_0x6f42('0x3f')]);_0xbcc9bf['attributes']=_[_0x6f42('0x42')](_0x2670c0['model'],qs[_0x6f42('0x43')](_0x395f08['query'][_0x6f42('0x43')]));_0xbcc9bf[_0x6f42('0x41')]=_0xbcc9bf['attributes']['length']?_0xbcc9bf['attributes']:_0x2670c0['model'];if(!_0x395f08[_0x6f42('0x3f')][_0x6f42('0x45')](_0x6f42('0x46'))){_0xbcc9bf[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0x395f08[_0x6f42('0x3f')][_0x6f42('0x23')]);_0xbcc9bf[_0x6f42('0x21')]=qs[_0x6f42('0x21')](_0x395f08[_0x6f42('0x3f')][_0x6f42('0x21')]);}_0xbcc9bf[_0x6f42('0x47')]=qs['sort'](_0x395f08[_0x6f42('0x3f')][_0x6f42('0x48')]);_0xbcc9bf['where']=qs[_0x6f42('0x40')](_[_0x6f42('0x64')](_0x395f08[_0x6f42('0x3f')],_0x2670c0[_0x6f42('0x40')]));_0xbcc9bf[_0x6f42('0x49')][_0x6f42('0x65')]=_0x174b83['id'];if(_0x395f08[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0xbcc9bf[_0x6f42('0x49')]=_['merge'](_0xbcc9bf[_0x6f42('0x49')],{'$or':_[_0x6f42('0x30')](_0xbcc9bf[_0x6f42('0x41')],function(_0x28e41a){var _0x4e0b79={};_0x4e0b79[_0x28e41a]={'$like':'%'+_0x395f08[_0x6f42('0x3f')][_0x6f42('0x2e')]+'%'};return _0x4e0b79;})});}_0xbcc9bf=_['merge']({},_0xbcc9bf,_0x395f08[_0x6f42('0x4b')]);return db[_0x6f42('0x67')][_0x6f42('0x24')]({'where':_0xbcc9bf['where']})[_0x6f42('0x29')](function(_0x2c5f69){_0x3b82fc[_0x6f42('0x24')]=_0x2c5f69;if(_0x395f08['query'][_0x6f42('0x4c')]){_0xbcc9bf[_0x6f42('0x4d')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0xbcc9bf);})['then'](function(_0x2f7ee8){_0x3b82fc['rows']=_0x2f7ee8;return _0x3b82fc;});}})[_0x6f42('0x29')](respondWithFilteredResult(_0x45efe8,_0xbcc9bf))[_0x6f42('0x4f')](handleError(_0x45efe8,null));};exports['getHopperFinals']=function(_0x47eca6,_0x3d95dd,_0xd7a198){var _0x142fb6={'raw':!![],'where':{}};var _0x37c8a3={};var _0x2b2c17={'count':0x0,'rows':[]};return db[_0x6f42('0x3a')]['findOne']({'where':{'id':_0x47eca6['params']['id']}})['then'](handleEntityNotFound(_0x3d95dd,null))[_0x6f42('0x29')](function(_0x4ae235){if(_0x4ae235){_0x37c8a3['model']=_[_0x6f42('0x3e')](db[_0x6f42('0x68')]['rawAttributes']);_0x37c8a3[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x47eca6[_0x6f42('0x3f')]);_0x37c8a3[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0x37c8a3[_0x6f42('0x3d')],_0x37c8a3[_0x6f42('0x3f')]);_0x142fb6[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x37c8a3[_0x6f42('0x3d')],qs['fields'](_0x47eca6['query'][_0x6f42('0x43')]));_0x142fb6[_0x6f42('0x41')]=_0x142fb6[_0x6f42('0x41')][_0x6f42('0x44')]?_0x142fb6[_0x6f42('0x41')]:_0x37c8a3['model'];if(!_0x47eca6['query']['hasOwnProperty']('nolimit')){_0x142fb6[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0x47eca6[_0x6f42('0x3f')]['limit']);_0x142fb6[_0x6f42('0x21')]=qs[_0x6f42('0x21')](_0x47eca6[_0x6f42('0x3f')]['offset']);}_0x142fb6['order']=qs[_0x6f42('0x48')](_0x47eca6['query'][_0x6f42('0x48')]);_0x142fb6['where']=qs[_0x6f42('0x40')](_[_0x6f42('0x64')](_0x47eca6['query'],_0x37c8a3[_0x6f42('0x40')]));_0x142fb6[_0x6f42('0x49')]['VoiceQueueId']=_0x4ae235['id'];if(_0x47eca6[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0x142fb6['where']=_[_0x6f42('0x4a')](_0x142fb6[_0x6f42('0x49')],{'$or':_[_0x6f42('0x30')](_0x142fb6[_0x6f42('0x41')],function(_0x176c05){var _0x3bb665={};_0x3bb665[_0x176c05]={'$like':'%'+_0x47eca6[_0x6f42('0x3f')][_0x6f42('0x2e')]+'%'};return _0x3bb665;})});}_0x142fb6=_[_0x6f42('0x4a')]({},_0x142fb6,_0x47eca6['options']);return db[_0x6f42('0x68')]['count']({'where':_0x142fb6['where']})['then'](function(_0x554486){_0x2b2c17[_0x6f42('0x24')]=_0x554486;if(_0x47eca6[_0x6f42('0x3f')]['includeAll']){_0x142fb6[_0x6f42('0x4d')]=[{'all':!![]}];}return db[_0x6f42('0x68')][_0x6f42('0x4e')](_0x142fb6);})['then'](function(_0x2394d7){_0x2b2c17['rows']=_0x2394d7;return _0x2b2c17;});}})[_0x6f42('0x29')](respondWithFilteredResult(_0x3d95dd,_0x142fb6))[_0x6f42('0x4f')](handleError(_0x3d95dd,null));};exports[_0x6f42('0x69')]=function(_0x5bdedf,_0x57ac38,_0x2227c4){var _0x1be64d={'raw':!![],'where':{}};var _0x2b9c2a={};var _0x5a6f85={'count':0x0,'rows':[]};return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0x5bdedf[_0x6f42('0x51')]['id']}})['then'](handleEntityNotFound(_0x57ac38,null))[_0x6f42('0x29')](function(_0x11cff1){if(_0x11cff1){_0x2b9c2a[_0x6f42('0x3d')]=_['keys'](db['CmHopperBlack'][_0x6f42('0x3b')]);_0x2b9c2a[_0x6f42('0x3f')]=_['keys'](_0x5bdedf['query']);_0x2b9c2a[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0x2b9c2a[_0x6f42('0x3d')],_0x2b9c2a[_0x6f42('0x3f')]);_0x1be64d[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x2b9c2a['model'],qs[_0x6f42('0x43')](_0x5bdedf['query']['fields']));_0x1be64d['attributes']=_0x1be64d['attributes']['length']?_0x1be64d[_0x6f42('0x41')]:_0x2b9c2a[_0x6f42('0x3d')];if(!_0x5bdedf[_0x6f42('0x3f')][_0x6f42('0x45')](_0x6f42('0x46'))){_0x1be64d[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0x5bdedf['query']['limit']);_0x1be64d[_0x6f42('0x21')]=qs[_0x6f42('0x21')](_0x5bdedf[_0x6f42('0x3f')][_0x6f42('0x21')]);}_0x1be64d[_0x6f42('0x47')]=qs[_0x6f42('0x48')](_0x5bdedf[_0x6f42('0x3f')]['sort']);_0x1be64d[_0x6f42('0x49')]=qs[_0x6f42('0x40')](_[_0x6f42('0x64')](_0x5bdedf[_0x6f42('0x3f')],_0x2b9c2a[_0x6f42('0x40')]));_0x1be64d['where']['VoiceQueueId']=_0x11cff1['id'];if(_0x5bdedf[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0x1be64d[_0x6f42('0x49')]=_['merge'](_0x1be64d[_0x6f42('0x49')],{'$or':_['map'](_0x1be64d[_0x6f42('0x41')],function(_0x48a4d5){var _0x386055={};_0x386055[_0x48a4d5]={'$like':'%'+_0x5bdedf[_0x6f42('0x3f')][_0x6f42('0x2e')]+'%'};return _0x386055;})});}_0x1be64d=_[_0x6f42('0x4a')]({},_0x1be64d,_0x5bdedf[_0x6f42('0x4b')]);return db[_0x6f42('0x6a')][_0x6f42('0x24')]({'where':_0x1be64d[_0x6f42('0x49')]})[_0x6f42('0x29')](function(_0x53ea38){_0x5a6f85[_0x6f42('0x24')]=_0x53ea38;if(_0x5bdedf['query']['includeAll']){_0x1be64d[_0x6f42('0x4d')]=[{'all':!![]}];}return db[_0x6f42('0x6a')][_0x6f42('0x4e')](_0x1be64d);})[_0x6f42('0x29')](function(_0x1c0865){_0x5a6f85[_0x6f42('0x6b')]=_0x1c0865;return _0x5a6f85;});}})['then'](respondWithFilteredResult(_0x57ac38,_0x1be64d))[_0x6f42('0x4f')](handleError(_0x57ac38,null));};exports[_0x6f42('0x6c')]=function(_0x2cbd9a,_0xfeaee4,_0x1cbc07){var _0x4f6494={};var _0x505a27={};var _0x3e0639;var _0x2df50d;return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0x2cbd9a[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0xfeaee4,null))[_0x6f42('0x29')](function(_0x567a4f){if(_0x567a4f){_0x3e0639=_0x567a4f;_0x505a27[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x6d')][_0x6f42('0x3b')]);_0x505a27[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x2cbd9a['query']);_0x505a27[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0x505a27[_0x6f42('0x3d')],_0x505a27[_0x6f42('0x3f')]);_0x4f6494[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x505a27['model'],qs[_0x6f42('0x43')](_0x2cbd9a[_0x6f42('0x3f')][_0x6f42('0x43')]));_0x4f6494[_0x6f42('0x41')]=_0x4f6494['attributes'][_0x6f42('0x44')]?_0x4f6494[_0x6f42('0x41')]:_0x505a27[_0x6f42('0x3d')];_0x4f6494[_0x6f42('0x47')]=qs['sort'](_0x2cbd9a[_0x6f42('0x3f')][_0x6f42('0x48')]);_0x4f6494['where']=qs['filters'](_[_0x6f42('0x64')](_0x2cbd9a[_0x6f42('0x3f')],_0x505a27['filters']));if(_0x2cbd9a['query'][_0x6f42('0x2e')]){_0x4f6494[_0x6f42('0x49')]=_['merge'](_0x4f6494[_0x6f42('0x49')],{'$or':_[_0x6f42('0x30')](_0x4f6494[_0x6f42('0x41')],function(_0xe46ad4){var _0x5c423d={};_0x5c423d[_0xe46ad4]={'$like':'%'+_0x2cbd9a[_0x6f42('0x3f')][_0x6f42('0x2e')]+'%'};return _0x5c423d;})});}_0x4f6494=_[_0x6f42('0x4a')]({},_0x4f6494,_0x2cbd9a['options']);return _0x3e0639[_0x6f42('0x6c')](_0x4f6494);}})[_0x6f42('0x29')](function(_0x5ef9a3){if(_0x5ef9a3){_0x2df50d=_0x5ef9a3[_0x6f42('0x44')];if(!_0x2cbd9a[_0x6f42('0x3f')][_0x6f42('0x45')](_0x6f42('0x46'))){_0x4f6494['limit']=qs['limit'](_0x2cbd9a[_0x6f42('0x3f')][_0x6f42('0x23')]);_0x4f6494[_0x6f42('0x21')]=qs['offset'](_0x2cbd9a[_0x6f42('0x3f')][_0x6f42('0x21')]);}return _0x3e0639[_0x6f42('0x6c')](_0x4f6494);}})['then'](function(_0x12bdc9){if(_0x12bdc9){return _0x12bdc9?{'count':_0x2df50d,'rows':_0x12bdc9}:null;}})[_0x6f42('0x29')](respondWithResult(_0xfeaee4,null))[_0x6f42('0x4f')](handleError(_0xfeaee4,null));};exports[_0x6f42('0x6e')]=function(_0x596bac,_0x461b54,_0x5bb396){var _0x4efe72=_0x596bac[_0x6f42('0x53')][_0x6f42('0x6f')];var _0x5aab97=_[_0x6f42('0x30')](_0x4efe72,'id');return db[_0x6f42('0x6d')][_0x6f42('0x4e')]({'where':{'id':_0x5aab97},'attributes':['id'],'include':[{'model':db[_0x6f42('0x70')],'as':'Agents','attributes':['id',_0x6f42('0x37'),_0x6f42('0x71'),_0x6f42('0x72'),_0x6f42('0x73')],'raw':!![]}]})[_0x6f42('0x29')](function(_0x764461){if(_0x764461){var _0x53f273=_[_0x6f42('0x74')](_0x764461,function(_0xb08e6f){var _0x1a5914=_0xb08e6f[_0x6f42('0x2b')]({'plain':!![]});_0x1a5914[_0x6f42('0x75')]['forEach'](function(_0xe61272){_0xe61272[_0x6f42('0x76')]=_[_0x6f42('0x34')](_0x4efe72,{'id':_0x1a5914['id']})['penalty'];});return _0x1a5914[_0x6f42('0x75')];});return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x596bac[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](function(_0x3d9773){return db['sequelize'][_0x6f42('0x77')](function(_0x32b0a1){return _0x3d9773[_0x6f42('0x6e')](_0x5aab97,{'transaction':_0x32b0a1})[_0x6f42('0x29')](function(){return BPromise[_0x6f42('0x78')](_0x4efe72,function(_0x243937){return db[_0x6f42('0x79')][_0x6f42('0x7a')]({'TeamId':_0x243937['id'],'VoiceQueueId':_0x596bac[_0x6f42('0x51')]['id'],'penalty':_0x243937[_0x6f42('0x76')]},{'transaction':_0x32b0a1});});})[_0x6f42('0x29')](function(){return BPromise[_0x6f42('0x78')](_0x53f273,function(_0x42480b){return db[_0x6f42('0x7b')][_0x6f42('0x7c')]({'where':{'UserId':_0x42480b['id'],'VoiceQueueId':_0x596bac[_0x6f42('0x51')]['id']},'defaults':{'penalty':_0x42480b[_0x6f42('0x76')]},'transaction':_0x32b0a1});});})[_0x6f42('0x29')](function(){return BPromise[_0x6f42('0x78')](_[_0x6f42('0x2e')](_0x53f273,{'online':!![]}),function(_0x52c399){return db[_0x6f42('0x7d')][_0x6f42('0x7a')]({'membername':_0x52c399[_0x6f42('0x37')],'UserId':_0x52c399['id'],'queue_name':_0x3d9773['name'],'VoiceQueueId':_0x3d9773['id'],'interface':_[_0x6f42('0x7e')](_0x52c399['interface'])?util['format'](_0x6f42('0x7f'),_0x52c399[_0x6f42('0x37')]):_0x52c399[_0x6f42('0x73')],'paused':_0x52c399[_0x6f42('0x72')]||![],'penalty':_0x52c399[_0x6f42('0x76')]},{'transaction':_0x32b0a1});});})[_0x6f42('0x29')](function(){_0x53f273[_0x6f42('0x80')](function(_0x1f4cd7){socket[_0x6f42('0x81')](_0x6f42('0x82'),{'UserId':_0x1f4cd7['id'],'VoiceQueueId':_0x3d9773['id']});});});});});}})[_0x6f42('0x29')](respondWithStatusCode(_0x461b54,null))[_0x6f42('0x4f')](handleError(_0x461b54,null));};exports['removeTeams']=function(_0x253ef6,_0x20d6a,_0xe7ec99){return db[_0x6f42('0x6d')][_0x6f42('0x4e')]({'where':{'id':_0x253ef6[_0x6f42('0x3f')][_0x6f42('0x83')]},'attributes':['id'],'include':[{'model':db[_0x6f42('0x70')],'as':_0x6f42('0x75'),'attributes':['id'],'raw':!![]}]})[_0x6f42('0x29')](handleEntityNotFound(_0x20d6a,null))['then'](function(_0x3046a9){var _0x4b1de6=_[_0x6f42('0x30')](_0x3046a9,'id');var _0x144314=[];var _0xcc7555=[];var _0x178a9e=squel['select']();_0x178a9e[_0x6f42('0x84')](_0x6f42('0x85'))[_0x6f42('0x86')](_0x6f42('0x87'),'tq')[_0x6f42('0x88')]('user_has_teams','ut',_0x6f42('0x89'))['where']('VoiceQueueId\x20=\x20?',_0x253ef6[_0x6f42('0x51')]['id']);for(var _0xe9e94a=0x0;_0xe9e94a<_0x3046a9[_0x6f42('0x44')];_0xe9e94a+=0x1){let _0x2162cb=_0x3046a9[_0xe9e94a];for(var _0xc5cfd2=0x0;_0xc5cfd2<_0x2162cb['Agents'][_0x6f42('0x44')];_0xc5cfd2+=0x1){let _0x27d0e1=_0x2162cb[_0x6f42('0x75')][_0xc5cfd2];var _0x3a0d5b=_0x178a9e['clone']();_0x3a0d5b[_0x6f42('0x49')]('ut.UserId\x20=\x20?',_0x27d0e1['id']);_0xcc7555[_0x6f42('0x8a')](db[_0x6f42('0x8b')]['query'](_0x3a0d5b[_0x6f42('0x8c')](),{'type':db[_0x6f42('0x8b')]['QueryTypes'][_0x6f42('0x8d')]})[_0x6f42('0x29')](function(_0x352ed5){if(_0x352ed5[_0x6f42('0x44')]===0x1){return _0x27d0e1['id'];}else{var _0x5b031d=_[_0x6f42('0x8e')](_[_0x6f42('0x30')](_0x352ed5,_0x6f42('0x8f')),function(_0x58496d){return _[_0x6f42('0x32')](_0x4b1de6,_0x58496d);});if(_0x5b031d){return _0x27d0e1['id'];}}}));}}return BPromise[_0x6f42('0x90')](_0xcc7555)[_0x6f42('0x29')](function(_0x19c1af){_0x144314=_(_0x144314)[_0x6f42('0x91')](_0x19c1af)[_0x6f42('0x92')]()['value']();return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x253ef6[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](function(_0x4a6bd8){return db[_0x6f42('0x8b')]['transaction'](function(_0x3aa05e){return _0x4a6bd8[_0x6f42('0x93')](_0x253ef6[_0x6f42('0x3f')][_0x6f42('0x83')],{'transaction':_0x3aa05e})[_0x6f42('0x29')](function(){if(!_[_0x6f42('0x94')](_0x144314)){return _0x4a6bd8['removeAgents'](_0x144314,{'transaction':_0x3aa05e})[_0x6f42('0x29')](function(){return db[_0x6f42('0x7d')]['destroy']({'where':{'VoiceQueueId':_0x253ef6[_0x6f42('0x51')]['id'],'UserId':_0x144314},'transaction':_0x3aa05e});});}})['then'](function(){_0x144314[_0x6f42('0x80')](function(_0x2cd814){socket['emit']('userVoiceQueue:remove',{'UserId':_0x2cd814,'VoiceQueueId':_0x4a6bd8['id']});});});});});});})[_0x6f42('0x29')](respondWithStatusCode(_0x20d6a,null))['catch'](handleError(_0x20d6a,null));};exports['addAgents']=function(_0x148ff8,_0x50f762,_0xa8717b){var _0xc4d5c3,_0x1e5974;return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x148ff8[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x50f762,null))[_0x6f42('0x29')](function(_0xbe51){if(_0xbe51){_0x1e5974=_0xbe51;return _0xbe51[_0x6f42('0x95')](_0x148ff8[_0x6f42('0x53')]['ids'],_[_0x6f42('0x5f')](_0x148ff8[_0x6f42('0x53')],['ids','id'])||{})[_0x6f42('0x96')](function(_0x14f9fe){for(var _0x1e99ef=0x0;_0x1e99ef<_0x148ff8[_0x6f42('0x53')][_0x6f42('0x83')][_0x6f42('0x44')];_0x1e99ef+=0x1){socket[_0x6f42('0x81')](_0x6f42('0x82'),{'UserId':Number(_0x148ff8['body'][_0x6f42('0x83')][_0x1e99ef]),'VoiceQueueId':Number(_0x148ff8[_0x6f42('0x51')]['id'])});}return _0x14f9fe;});}})[_0x6f42('0x29')](function(_0x1c6381){_0xc4d5c3=_0x1c6381||[];if(_0x1e5974){return db[_0x6f42('0x70')][_0x6f42('0x4e')]({'where':{'id':_0x148ff8[_0x6f42('0x53')][_0x6f42('0x83')]},'attributes':['id','name',_0x6f42('0x71'),_0x6f42('0x72'),_0x6f42('0x73')],'raw':!![]});}})[_0x6f42('0x29')](function(_0x4fdafc){if(!_[_0x6f42('0x94')](_0x4fdafc)){var _0x41b968=[];for(var _0x280287=0x0;_0x280287<_0x4fdafc[_0x6f42('0x44')];_0x280287++){if(_0x4fdafc[_0x280287][_0x6f42('0x71')]){_0x41b968[_0x6f42('0x8a')](db['UserVoiceQueueRt'][_0x6f42('0x7a')]({'membername':_0x4fdafc[_0x280287][_0x6f42('0x37')],'UserId':_0x4fdafc[_0x280287]['id'],'queue_name':_0x1e5974[_0x6f42('0x37')],'VoiceQueueId':_0x1e5974['id'],'interface':_[_0x6f42('0x7e')](_0x4fdafc[_0x280287]['interface'])?util['format']('SIP/%s',_0x4fdafc[_0x280287][_0x6f42('0x37')]):_0x4fdafc[_0x280287][_0x6f42('0x73')],'paused':_0x4fdafc[_0x280287][_0x6f42('0x72')]||![],'penalty':_0x148ff8[_0x6f42('0x53')][_0x6f42('0x76')]||0x0}));}}return BPromise['all'](_0x41b968);}})[_0x6f42('0x29')](function(){return _0xc4d5c3;})[_0x6f42('0x29')](respondWithResult(_0x50f762,null))[_0x6f42('0x4f')](handleError(_0x50f762,null));};exports[_0x6f42('0x97')]=function(_0x217039,_0x1880d3,_0x120999){return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x217039[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x1880d3,null))['then'](function(_0x598efd){if(_0x598efd){return _0x598efd['removeAgents'](_0x217039[_0x6f42('0x3f')][_0x6f42('0x83')])[_0x6f42('0x29')](function(){if(_[_0x6f42('0x98')](_0x217039[_0x6f42('0x3f')]['ids'])){for(var _0x3177fc=0x0;_0x3177fc<_0x217039[_0x6f42('0x3f')][_0x6f42('0x83')][_0x6f42('0x44')];_0x3177fc+=0x1){socket[_0x6f42('0x81')](_0x6f42('0x99'),{'UserId':Number(_0x217039[_0x6f42('0x3f')]['ids'][_0x3177fc]),'VoiceQueueId':Number(_0x217039[_0x6f42('0x51')]['id'])});}}else{socket['emit'](_0x6f42('0x99'),{'UserId':Number(_0x217039[_0x6f42('0x3f')][_0x6f42('0x83')]),'VoiceQueueId':Number(_0x217039[_0x6f42('0x51')]['id'])});}});}})[_0x6f42('0x29')](function(_0x461d2f){return db['UserVoiceQueueRt'][_0x6f42('0x2a')]({'where':{'VoiceQueueId':_0x217039[_0x6f42('0x51')]['id'],'UserId':_0x217039[_0x6f42('0x3f')][_0x6f42('0x83')]}})['then'](function(){return _0x461d2f;});})['then'](respondWithStatusCode(_0x1880d3,null))[_0x6f42('0x4f')](handleError(_0x1880d3,null));};exports[_0x6f42('0x9a')]=function(_0xdc3788,_0x694271,_0x56ffc7){var _0x53ea3d={};var _0x8cf16={};var _0x5a729b;var _0xf9e85e;return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0xdc3788[_0x6f42('0x51')]['id']}})['then'](handleEntityNotFound(_0x694271,null))[_0x6f42('0x29')](function(_0x5ef3a7){if(_0x5ef3a7){_0x5a729b=_0x5ef3a7;_0x8cf16[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x70')][_0x6f42('0x3b')]);_0x8cf16[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0xdc3788[_0x6f42('0x3f')]);_0x8cf16[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0x8cf16[_0x6f42('0x3d')],_0x8cf16[_0x6f42('0x3f')]);_0x53ea3d[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x8cf16[_0x6f42('0x3d')],qs['fields'](_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x43')]));_0x53ea3d[_0x6f42('0x41')]=_0x53ea3d[_0x6f42('0x41')][_0x6f42('0x44')]?_0x53ea3d[_0x6f42('0x41')]:_0x8cf16[_0x6f42('0x3d')];_0x53ea3d[_0x6f42('0x47')]=qs[_0x6f42('0x48')](_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x48')]);_0x53ea3d[_0x6f42('0x49')]=qs['filters'](_[_0x6f42('0x64')](_0xdc3788[_0x6f42('0x3f')],_0x8cf16[_0x6f42('0x40')]));if(_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0x53ea3d[_0x6f42('0x49')]=_['merge'](_0x53ea3d['where'],{'$or':_[_0x6f42('0x30')](_0x53ea3d[_0x6f42('0x41')],function(_0x3bf839){var _0xc99a9={};_0xc99a9[_0x3bf839]={'$like':'%'+_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x2e')]+'%'};return _0xc99a9;})});}_0x53ea3d=_[_0x6f42('0x4a')]({},_0x53ea3d,_0xdc3788['options']);return _0x5a729b[_0x6f42('0x9a')](_0x53ea3d);}})[_0x6f42('0x29')](function(_0x49393e){if(_0x49393e){_0xf9e85e=_0x49393e[_0x6f42('0x44')];if(!_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x45')](_0x6f42('0x46'))){_0x53ea3d[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x23')]);_0x53ea3d['offset']=qs[_0x6f42('0x21')](_0xdc3788[_0x6f42('0x3f')][_0x6f42('0x21')]);}return _0x5a729b[_0x6f42('0x9a')](_0x53ea3d);}})['then'](function(_0x114e96){if(_0x114e96){return _0x114e96?{'count':_0xf9e85e,'rows':_0x114e96}:null;}})[_0x6f42('0x29')](respondWithResult(_0x694271,null))['catch'](handleError(_0x694271,null));};exports[_0x6f42('0x9b')]=function(_0x109761,_0x41df3a,_0x3ad13a){var _0x2abe8d={};var _0x4328b7={};var _0xdc070d;var _0x2fd329;return db['VoiceQueue'][_0x6f42('0x62')]({'where':{'id':_0x109761[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x41df3a,null))['then'](function(_0x144ddb){if(_0x144ddb){_0xdc070d=_0x144ddb;_0x4328b7[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db[_0x6f42('0x7d')][_0x6f42('0x3b')]);_0x4328b7[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x109761[_0x6f42('0x3f')]);_0x4328b7[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0x4328b7[_0x6f42('0x3d')],_0x4328b7[_0x6f42('0x3f')]);_0x2abe8d[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x4328b7[_0x6f42('0x3d')],qs[_0x6f42('0x43')](_0x109761[_0x6f42('0x3f')][_0x6f42('0x43')]));_0x2abe8d['attributes']=_0x2abe8d[_0x6f42('0x41')]['length']?_0x2abe8d['attributes']:_0x4328b7[_0x6f42('0x3d')];_0x2abe8d[_0x6f42('0x47')]=qs[_0x6f42('0x48')](_0x109761[_0x6f42('0x3f')][_0x6f42('0x48')]);_0x2abe8d[_0x6f42('0x49')]=qs[_0x6f42('0x40')](_['pick'](_0x109761[_0x6f42('0x3f')],_0x4328b7[_0x6f42('0x40')]));if(_0x109761[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0x2abe8d[_0x6f42('0x49')]=_[_0x6f42('0x4a')](_0x2abe8d[_0x6f42('0x49')],{'$or':_['map'](_0x2abe8d[_0x6f42('0x41')],function(_0x2cf53a){var _0x4c8310={};_0x4c8310[_0x2cf53a]={'$like':'%'+_0x109761[_0x6f42('0x3f')]['filter']+'%'};return _0x4c8310;})});}_0x2abe8d=_[_0x6f42('0x4a')]({},_0x2abe8d,_0x109761[_0x6f42('0x4b')]);return _0xdc070d['getMembers'](_0x2abe8d);}})[_0x6f42('0x29')](function(_0x35b509){if(_0x35b509){_0x2fd329=_0x35b509['length'];if(!_0x109761['query'][_0x6f42('0x45')](_0x6f42('0x46'))){_0x2abe8d['limit']=qs['limit'](_0x109761[_0x6f42('0x3f')][_0x6f42('0x23')]);_0x2abe8d['offset']=qs['offset'](_0x109761[_0x6f42('0x3f')][_0x6f42('0x21')]);}return _0xdc070d[_0x6f42('0x9b')](_0x2abe8d);}})[_0x6f42('0x29')](function(_0x5b3b25){return _0x5b3b25?{'count':_0x2fd329,'rows':_0x5b3b25}:null;})['then'](respondWithResult(_0x41df3a,null))[_0x6f42('0x4f')](handleError(_0x41df3a,null));};exports[_0x6f42('0x9c')]=function(_0x259011,_0x43d9e1,_0x70307){var _0x343ffc={};var _0x5078a1={};var _0x36741e;var _0x26e37d;return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0x259011[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x43d9e1,null))[_0x6f42('0x29')](function(_0x475503){if(_0x475503){_0x36741e=_0x475503;_0x5078a1[_0x6f42('0x3d')]=_[_0x6f42('0x3e')](db['CmList'][_0x6f42('0x3b')]);_0x5078a1['query']=_[_0x6f42('0x3e')](_0x259011[_0x6f42('0x3f')]);_0x5078a1['filters']=_[_0x6f42('0x42')](_0x5078a1[_0x6f42('0x3d')],_0x5078a1['query']);_0x343ffc[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0x5078a1[_0x6f42('0x3d')],qs[_0x6f42('0x43')](_0x259011[_0x6f42('0x3f')][_0x6f42('0x43')]));_0x343ffc[_0x6f42('0x41')]=_0x343ffc[_0x6f42('0x41')]['length']?_0x343ffc[_0x6f42('0x41')]:_0x5078a1[_0x6f42('0x3d')];_0x343ffc[_0x6f42('0x47')]=qs[_0x6f42('0x48')](_0x259011['query']['sort']);_0x343ffc['where']=qs['filters'](_[_0x6f42('0x64')](_0x259011[_0x6f42('0x3f')],_0x5078a1['filters']));if(_0x259011[_0x6f42('0x3f')][_0x6f42('0x2e')]){_0x343ffc[_0x6f42('0x49')]=_['merge'](_0x343ffc[_0x6f42('0x49')],{'$or':_[_0x6f42('0x30')](_0x343ffc[_0x6f42('0x41')],function(_0x505f63){var _0x15bb36={};_0x15bb36[_0x505f63]={'$like':'%'+_0x259011[_0x6f42('0x3f')][_0x6f42('0x2e')]+'%'};return _0x15bb36;})});}_0x343ffc=_[_0x6f42('0x4a')]({},_0x343ffc,_0x259011[_0x6f42('0x4b')]);return _0x36741e['getLists'](_0x343ffc);}})['then'](function(_0x2908a6){if(_0x2908a6){_0x26e37d=_0x2908a6['length'];if(!_0x259011['query'][_0x6f42('0x45')](_0x6f42('0x46'))){_0x343ffc[_0x6f42('0x23')]=qs['limit'](_0x259011[_0x6f42('0x3f')][_0x6f42('0x23')]);_0x343ffc[_0x6f42('0x21')]=qs[_0x6f42('0x21')](_0x259011[_0x6f42('0x3f')][_0x6f42('0x21')]);}return _0x36741e[_0x6f42('0x9c')](_0x343ffc);}})['then'](function(_0x597e7b){if(_0x597e7b){return _0x597e7b?{'count':_0x26e37d,'rows':_0x597e7b}:null;}})[_0x6f42('0x29')](respondWithResult(_0x43d9e1,null))[_0x6f42('0x4f')](handleError(_0x43d9e1,null));};exports['addLists']=function(_0x318b6e,_0x56ce19,_0xc5375b){var _0x2c801d,_0x2b51cf;return db['VoiceQueue'][_0x6f42('0x34')]({'where':{'id':_0x318b6e['params']['id']}})['then'](handleEntityNotFound(_0x56ce19,null))['then'](function(_0x5960aa){if(_0x5960aa){_0x2b51cf=_0x5960aa;return _0x5960aa[_0x6f42('0x9d')](_0x318b6e[_0x6f42('0x53')]['ids'],_['omit'](_0x318b6e[_0x6f42('0x53')],[_0x6f42('0x83'),'id'])||{});}return null;})[_0x6f42('0x96')](function(_0x2457ac){var _0x4b9c0b;_0x2c801d=_0x2457ac||[];var _0x3fe32b=[];if(_0x2457ac){for(var _0x27a875=0x0;_0x27a875<_0x2457ac[_0x6f42('0x44')];_0x27a875+=0x1){var _0x186b9e=_0x2457ac[_0x27a875][_0x6f42('0x2b')]({'plain':!![]});_0x2b51cf[_0x6f42('0x9e')]=_0x318b6e[_0x6f42('0x53')]['dialCheckDuplicateType']?_0x318b6e[_0x6f42('0x53')][_0x6f42('0x9e')]:_0x2b51cf['dialCheckDuplicateType'];switch(_0x2b51cf['dialCheckDuplicateType']){case _0x6f42('0x9f'):_0x4b9c0b=squel['insert']()[_0x6f42('0xa0')](_0x6f42('0xa1'))[_0x6f42('0xa2')]([_0x6f42('0xa3'),_0x6f42('0xa4'),_0x6f42('0xa5'),_0x6f42('0xa6'),_0x6f42('0x65'),_0x6f42('0x60'),_0x6f42('0xa7')],squel[_0x6f42('0xa8')]()[_0x6f42('0x84')](_0x6f42('0xa3'),_0x6f42('0xa3'))[_0x6f42('0x84')](_0x6f42('0xa9'),_0x6f42('0xa4'))[_0x6f42('0x84')]('id','ContactId')[_0x6f42('0x84')](_0x186b9e[_0x6f42('0xaa')]['toString'](),_0x6f42('0xa6'))[_0x6f42('0x84')](_0x318b6e[_0x6f42('0x51')]['id'][_0x6f42('0x8c')](),_0x6f42('0x65'))['field'](_0x6f42('0xa9'),_0x6f42('0x60'))[_0x6f42('0x84')](_0x6f42('0xa9'),_0x6f42('0xa7'))[_0x6f42('0x86')](_0x6f42('0xab'))[_0x6f42('0x49')]('deletedAt\x20IS\x20NULL')[_0x6f42('0x49')](_0x6f42('0xac'),_0x186b9e['CmListId']['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0x6f42('0x49')](_0x6f42('0xad'),squel[_0x6f42('0xa8')]()[_0x6f42('0x84')](_0x6f42('0xae'))['from'](_0x6f42('0xaf'))['where']('VoiceQueueId\x20=\x20?',_0x318b6e[_0x6f42('0x51')]['id'][_0x6f42('0x8c')]()))[_0x6f42('0x49')](_0x6f42('0xad'),squel[_0x6f42('0xa8')]()[_0x6f42('0x84')](_0x6f42('0xb0'))[_0x6f42('0x86')](_0x6f42('0xa1'))['where'](_0x6f42('0xb1'),_0x318b6e[_0x6f42('0x51')]['id'][_0x6f42('0x8c')]())))[_0x6f42('0x8c')]();break;case _0x6f42('0xb2'):_0x4b9c0b=squel['insert']()[_0x6f42('0xa0')](_0x6f42('0xa1'))[_0x6f42('0xa2')](['phone',_0x6f42('0xa4'),'ContactId','ListId',_0x6f42('0x65'),_0x6f42('0x60'),'updatedAt'],squel[_0x6f42('0xa8')]()[_0x6f42('0x84')]('phone',_0x6f42('0xa3'))['field'](_0x6f42('0xa9'),_0x6f42('0xa4'))['field']('id',_0x6f42('0xa5'))['field'](_0x186b9e[_0x6f42('0xaa')][_0x6f42('0x8c')](),_0x6f42('0xa6'))[_0x6f42('0x84')](_0x318b6e[_0x6f42('0x51')]['id'][_0x6f42('0x8c')](),_0x6f42('0x65'))[_0x6f42('0x84')](_0x6f42('0xa9'),_0x6f42('0x60'))[_0x6f42('0x84')]('NOW()',_0x6f42('0xa7'))[_0x6f42('0x86')](_0x6f42('0xab'))[_0x6f42('0x49')]('deletedAt\x20IS\x20NULL')[_0x6f42('0x49')](_0x6f42('0xac'),_0x186b9e[_0x6f42('0xaa')]['toString']())[_0x6f42('0x49')](_0x6f42('0xb3'))[_0x6f42('0x49')](_0x6f42('0xad'),squel[_0x6f42('0xa8')]()[_0x6f42('0x84')](_0x6f42('0xb0'))[_0x6f42('0x86')]('cm_hopper')['where'](_0x6f42('0xb1'),_0x318b6e[_0x6f42('0x51')]['id'][_0x6f42('0x8c')]())))[_0x6f42('0x8c')]();break;default:_0x4b9c0b=squel['insert']()[_0x6f42('0xa0')](_0x6f42('0xa1'))[_0x6f42('0xa2')]([_0x6f42('0xa3'),_0x6f42('0xa4'),_0x6f42('0xa5'),_0x6f42('0xa6'),_0x6f42('0x65'),_0x6f42('0x60'),_0x6f42('0xa7')],squel['select']()[_0x6f42('0x84')](_0x6f42('0xa3'),_0x6f42('0xa3'))['field']('NOW()',_0x6f42('0xa4'))[_0x6f42('0x84')]('id',_0x6f42('0xa5'))[_0x6f42('0x84')](_0x186b9e[_0x6f42('0xaa')][_0x6f42('0x8c')](),_0x6f42('0xa6'))[_0x6f42('0x84')](_0x318b6e[_0x6f42('0x51')]['id'][_0x6f42('0x8c')](),_0x6f42('0x65'))[_0x6f42('0x84')](_0x6f42('0xa9'),_0x6f42('0x60'))[_0x6f42('0x84')]('NOW()',_0x6f42('0xa7'))[_0x6f42('0x86')](_0x6f42('0xab'))[_0x6f42('0x49')](_0x6f42('0xb4'))['where']('ListId\x20=\x20?',_0x186b9e[_0x6f42('0xaa')][_0x6f42('0x8c')]())[_0x6f42('0x49')](_0x6f42('0xb3')))[_0x6f42('0x8c')]();}_0x3fe32b[_0x6f42('0x8a')](db['sequelize']['query'](_0x4b9c0b));}return BPromise['all'](_0x3fe32b);}})[_0x6f42('0x29')](function(){return _0x2c801d;})[_0x6f42('0x29')](respondWithResult(_0x56ce19,null))[_0x6f42('0x4f')](handleError(_0x56ce19,null));};exports['removeLists']=function(_0x29ff8d,_0x22f90f,_0x4ce7bc){return db[_0x6f42('0x3a')]['find']({'where':{'id':_0x29ff8d[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x22f90f,null))['then'](function(_0x508e76){if(_0x508e76){return _0x508e76[_0x6f42('0xb5')](_0x29ff8d[_0x6f42('0x3f')][_0x6f42('0x83')]);}})[_0x6f42('0x29')](function(_0x4f6585){if(_0x4f6585){return db[_0x6f42('0x63')][_0x6f42('0x2a')]({'where':{'ListId':_0x29ff8d[_0x6f42('0x3f')][_0x6f42('0x83')],'VoiceQueueId':_0x29ff8d[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](function(){return _0x4f6585;});}})[_0x6f42('0x29')](respondWithStatusCode(_0x22f90f,null))[_0x6f42('0x4f')](handleError(_0x22f90f,null));};exports[_0x6f42('0xb6')]=function(_0x22d58d,_0x3db0ec,_0x42399a){var _0x89306={};var _0xedc868={};var _0x152d57;var _0x1e80fe;return db[_0x6f42('0x3a')][_0x6f42('0x62')]({'where':{'id':_0x22d58d[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x3db0ec,null))[_0x6f42('0x29')](function(_0x2ca8d0){if(_0x2ca8d0){_0x152d57=_0x2ca8d0;_0xedc868['model']=_['keys'](db[_0x6f42('0xb7')]['rawAttributes']);_0xedc868[_0x6f42('0x3f')]=_[_0x6f42('0x3e')](_0x22d58d['query']);_0xedc868[_0x6f42('0x40')]=_[_0x6f42('0x42')](_0xedc868[_0x6f42('0x3d')],_0xedc868[_0x6f42('0x3f')]);_0x89306[_0x6f42('0x41')]=_[_0x6f42('0x42')](_0xedc868[_0x6f42('0x3d')],qs['fields'](_0x22d58d[_0x6f42('0x3f')][_0x6f42('0x43')]));_0x89306[_0x6f42('0x41')]=_0x89306[_0x6f42('0x41')][_0x6f42('0x44')]?_0x89306[_0x6f42('0x41')]:_0xedc868[_0x6f42('0x3d')];_0x89306[_0x6f42('0x47')]=qs['sort'](_0x22d58d[_0x6f42('0x3f')][_0x6f42('0x48')]);_0x89306[_0x6f42('0x49')]=qs['filters'](_[_0x6f42('0x64')](_0x22d58d['query'],_0xedc868['filters']));if(_0x22d58d[_0x6f42('0x3f')]['filter']){_0x89306[_0x6f42('0x49')]=_['merge'](_0x89306['where'],{'$or':_['map'](_0x89306['attributes'],function(_0x563a16){var _0x4cc289={};_0x4cc289[_0x563a16]={'$like':'%'+_0x22d58d[_0x6f42('0x3f')]['filter']+'%'};return _0x4cc289;})});}_0x89306=_[_0x6f42('0x4a')]({},_0x89306,_0x22d58d[_0x6f42('0x4b')]);return _0x152d57[_0x6f42('0xb6')](_0x89306);}})[_0x6f42('0x29')](function(_0xe068ed){if(_0xe068ed){_0x1e80fe=_0xe068ed[_0x6f42('0x44')];if(!_0x22d58d[_0x6f42('0x3f')]['hasOwnProperty'](_0x6f42('0x46'))){_0x89306[_0x6f42('0x23')]=qs[_0x6f42('0x23')](_0x22d58d['query']['limit']);_0x89306[_0x6f42('0x21')]=qs[_0x6f42('0x21')](_0x22d58d[_0x6f42('0x3f')][_0x6f42('0x21')]);}return _0x152d57[_0x6f42('0xb6')](_0x89306);}})['then'](function(_0x600842){if(_0x600842){return _0x600842?{'count':_0x1e80fe,'rows':_0x600842}:null;}})[_0x6f42('0x29')](respondWithResult(_0x3db0ec,null))['catch'](handleError(_0x3db0ec,null));};exports[_0x6f42('0xb8')]=function(_0x409dea,_0x34793b,_0x21a7bd){var _0x495788,_0x479d9b;return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x409dea[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x34793b,null))[_0x6f42('0x29')](function(_0x3e10ba){if(_0x3e10ba){_0x479d9b=_0x3e10ba;return _0x3e10ba[_0x6f42('0xb8')](_0x409dea['body']['ids'],_[_0x6f42('0x5f')](_0x409dea[_0x6f42('0x53')],[_0x6f42('0x83'),'id'])||{});}return null;})[_0x6f42('0x96')](function(_0x1147c6){var _0x173976;_0x495788=_0x1147c6||[];var _0x1da200=[];if(_0x1147c6){for(var _0x48a104=0x0;_0x48a104<_0x1147c6[_0x6f42('0x44')];_0x48a104+=0x1){var _0x374474=_0x1147c6[_0x48a104][_0x6f42('0x2b')]({'plain':!![]});_0x173976=squel[_0x6f42('0xb9')]()[_0x6f42('0xa0')](_0x6f42('0xba'))[_0x6f42('0xa2')](['phone',_0x6f42('0xa5'),_0x6f42('0xa6'),'VoiceQueueId','createdAt',_0x6f42('0xa7')],squel[_0x6f42('0xa8')]()[_0x6f42('0x84')](_0x6f42('0xa3'),'phone')['field']('id',_0x6f42('0xa5'))['field'](_0x374474[_0x6f42('0xaa')][_0x6f42('0x8c')](),'ListId')[_0x6f42('0x84')](_0x409dea['params']['id'][_0x6f42('0x8c')](),_0x6f42('0x65'))['field'](_0x6f42('0xa9'),_0x6f42('0x60'))[_0x6f42('0x84')](_0x6f42('0xa9'),_0x6f42('0xa7'))[_0x6f42('0x86')](_0x6f42('0xab'))['where']('deletedAt\x20IS\x20NULL')[_0x6f42('0x49')](_0x6f42('0xac'),_0x374474[_0x6f42('0xaa')]['toString']())[_0x6f42('0x49')](_0x6f42('0xb3')))[_0x6f42('0x8c')]();_0x1da200[_0x6f42('0x8a')](db['sequelize'][_0x6f42('0x3f')](_0x173976));}return BPromise[_0x6f42('0x90')](_0x1da200);}})['then'](function(){return _0x495788;})[_0x6f42('0x29')](respondWithResult(_0x34793b,null))[_0x6f42('0x4f')](handleError(_0x34793b,null));};exports[_0x6f42('0xbb')]=function(_0x4c72a4,_0x253f32,_0x3392fc){return db[_0x6f42('0x3a')][_0x6f42('0x34')]({'where':{'id':_0x4c72a4[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](handleEntityNotFound(_0x253f32,null))['then'](function(_0x575729){if(_0x575729){return _0x575729[_0x6f42('0xbb')](_0x4c72a4['query']['ids']);}})[_0x6f42('0x29')](function(_0xa9aa69){if(_0xa9aa69){return db['CmHopperBlack'][_0x6f42('0x2a')]({'where':{'ListId':_0x4c72a4[_0x6f42('0x3f')][_0x6f42('0x83')],'VoiceQueueId':_0x4c72a4[_0x6f42('0x51')]['id']}})[_0x6f42('0x29')](function(){return _0xa9aa69;});}})[_0x6f42('0x29')](respondWithStatusCode(_0x253f32,null))[_0x6f42('0x4f')](handleError(_0x253f32,null));};
\ No newline at end of file
+var _0xf9a8=['ListId\x20=\x20?','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','insert','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','cm_hopper_black','removeBlackLists','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','status','end','json','undefined','count','limit','Content-Range','apply','reject','save','get','inbound','QueueCampaigns','outbound','filter','ignore','map','value','find','type','name','UserProfileResource','then','error','send','index','VoiceQueue','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','offset','order','sort','where','merge','options','includeAll','findAll','rows','show','params','include','catch','create','body','role','VoiceQueues','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','destroy','getHoppers','findOne','CmHopper','hasOwnProperty','pick','VoiceQueueId','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','teams','User','online','voicePause','interface','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','format','SIP/%s','userVoiceQueue:save','ids','Agents','select','field','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','removeTeams','isEmpty','removeAgents','emit','addAgents','spread','isArray','userVoiceQueue:remove','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','always','into','fromQuery','ContactId','ListId','phone','NOW()','scheduledAt','from','cm_contacts'];(function(_0x5a8b2e,_0x71ba40){var _0x1ea5fc=function(_0x2ad2bf){while(--_0x2ad2bf){_0x5a8b2e['push'](_0x5a8b2e['shift']());}};_0x1ea5fc(++_0x71ba40);}(_0xf9a8,0x17c));var _0x8f9a=function(_0x377e44,_0x24d134){_0x377e44=_0x377e44-0x0;var _0x19c867=_0xf9a8[_0x377e44];return _0x19c867;};'use strict';var emlformat=require(_0x8f9a('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x8f9a('0x1'));var rp=require(_0x8f9a('0x2'));var moment=require(_0x8f9a('0x3'));var BPromise=require(_0x8f9a('0x4'));var Mustache=require('mustache');var util=require(_0x8f9a('0x5'));var path=require(_0x8f9a('0x6'));var sox=require(_0x8f9a('0x7'));var csv=require(_0x8f9a('0x8'));var ejs=require(_0x8f9a('0x9'));var fs=require('fs');var fs_extra=require(_0x8f9a('0xa'));var _=require(_0x8f9a('0xb'));var squel=require('squel');var crypto=require(_0x8f9a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8f9a('0xd'));var toCsv=require(_0x8f9a('0x8'));var querystring=require(_0x8f9a('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8f9a('0xf'));var as=require(_0x8f9a('0x10'));var hardwareService=require(_0x8f9a('0x11'));var logger=require('../../config/logger')(_0x8f9a('0x12'));var utils=require(_0x8f9a('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x8f9a('0x14'));var db=require(_0x8f9a('0x15'))['db'];config[_0x8f9a('0x16')]=_[_0x8f9a('0x17')](config['redis'],{'host':_0x8f9a('0x18'),'port':0x18eb});var socket=require(_0x8f9a('0x19'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x8f9a('0x1a')](socket);function respondWithStatusCode(_0x284547,_0x2121ab){_0x2121ab=_0x2121ab||0xcc;return function(_0x214b31){if(_0x214b31){return _0x284547['sendStatus'](_0x2121ab);}return _0x284547[_0x8f9a('0x1b')](_0x2121ab)[_0x8f9a('0x1c')]();};}function respondWithResult(_0x3fb973,_0xe76370){_0xe76370=_0xe76370||0xc8;return function(_0x126c06){if(_0x126c06){return _0x3fb973[_0x8f9a('0x1b')](_0xe76370)[_0x8f9a('0x1d')](_0x126c06);}};}function respondWithFilteredResult(_0x4d0e50,_0x572a93){return function(_0x15f5eb){if(_0x15f5eb){var _0x33274b=typeof _0x572a93['offset']===_0x8f9a('0x1e')&&typeof _0x572a93['limit']===_0x8f9a('0x1e');var _0x57b176=_0x15f5eb['count'];var _0x555064=_0x33274b?0x0:_0x572a93['offset'];var _0x15b906=_0x33274b?_0x15f5eb[_0x8f9a('0x1f')]:_0x572a93['offset']+_0x572a93[_0x8f9a('0x20')];var _0x42705a;if(_0x15b906>=_0x57b176){_0x15b906=_0x57b176;_0x42705a=0xc8;}else{_0x42705a=0xce;}_0x4d0e50[_0x8f9a('0x1b')](_0x42705a);return _0x4d0e50['set'](_0x8f9a('0x21'),_0x555064+'-'+_0x15b906+'/'+_0x57b176)['json'](_0x15f5eb);}return null;};}function patchUpdates(_0x1e71a9){return function(_0x2ea49c){try{jsonpatch[_0x8f9a('0x22')](_0x2ea49c,_0x1e71a9,!![]);}catch(_0x2e662c){return BPromise[_0x8f9a('0x23')](_0x2e662c);}return _0x2ea49c[_0x8f9a('0x24')]();};}function saveUpdates(_0x5b1d4c,_0x4fec03){return function(_0x334c8d){if(_0x334c8d){return _0x334c8d['update'](_0x5b1d4c)['then'](function(_0x3959d0){return _0x3959d0;});}return null;};}function removeEntity(_0x894d48,_0x1cc26f){return function(_0x304561){if(_0x304561){return _0x304561['destroy']()['then'](function(){var _0x3589c8=_0x304561[_0x8f9a('0x25')]({'plain':!![]});var _0x3e9d2e=[{'name':'VoiceQueues','value':_0x8f9a('0x26'),'ignore':![]},{'name':_0x8f9a('0x27'),'value':_0x8f9a('0x28'),'ignore':![]}];var _0x1fe1ea=_(_0x3e9d2e)[_0x8f9a('0x29')](_0x8f9a('0x2a'))[_0x8f9a('0x2b')]('value')[_0x8f9a('0x2c')]();if(_['includes'](_0x1fe1ea,_0x3589c8['type'])){return;}var _0x4d98cc=_[_0x8f9a('0x2d')](_0x3e9d2e,[_0x8f9a('0x2c'),_0x3589c8[_0x8f9a('0x2e')]])[_0x8f9a('0x2f')];return db[_0x8f9a('0x30')]['destroy']({'where':{'type':_0x4d98cc,'resourceId':_0x3589c8['id']}})[_0x8f9a('0x31')](function(){return _0x304561;});})[_0x8f9a('0x31')](function(){_0x894d48[_0x8f9a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59edfa,_0x53d48d){return function(_0x12d6a3){if(!_0x12d6a3){_0x59edfa['sendStatus'](0x194);}return _0x12d6a3;};}function handleError(_0x70528b,_0x41f75d){_0x41f75d=_0x41f75d||0x1f4;return function(_0x329a0c){logger[_0x8f9a('0x32')](_0x329a0c['stack']);if(_0x329a0c[_0x8f9a('0x2f')]){delete _0x329a0c[_0x8f9a('0x2f')];}_0x70528b[_0x8f9a('0x1b')](_0x41f75d)[_0x8f9a('0x33')](_0x329a0c);};}exports[_0x8f9a('0x34')]=function(_0x5e1f1f,_0x10498d){var _0xca8ef2={},_0x4c4abe={},_0x33b9ba={'count':0x0,'rows':[]};var _0x272642=_[_0x8f9a('0x2b')](db[_0x8f9a('0x35')][_0x8f9a('0x36')],function(_0xfee551){return{'name':_0xfee551['fieldName'],'type':_0xfee551[_0x8f9a('0x2e')][_0x8f9a('0x37')]};});_0x4c4abe[_0x8f9a('0x38')]=_[_0x8f9a('0x2b')](_0x272642,_0x8f9a('0x2f'));_0x4c4abe[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x5e1f1f['query']);_0x4c4abe[_0x8f9a('0x3b')]=_[_0x8f9a('0x3c')](_0x4c4abe[_0x8f9a('0x38')],_0x4c4abe[_0x8f9a('0x39')]);_0xca8ef2['attributes']=_[_0x8f9a('0x3c')](_0x4c4abe[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x5e1f1f['query'][_0x8f9a('0x3d')]));_0xca8ef2['attributes']=_0xca8ef2[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0xca8ef2['attributes']:_0x4c4abe[_0x8f9a('0x38')];if(!_0x5e1f1f['query']['hasOwnProperty'](_0x8f9a('0x40'))){_0xca8ef2[_0x8f9a('0x20')]=qs[_0x8f9a('0x20')](_0x5e1f1f[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0xca8ef2[_0x8f9a('0x41')]=qs[_0x8f9a('0x41')](_0x5e1f1f[_0x8f9a('0x39')][_0x8f9a('0x41')]);}_0xca8ef2[_0x8f9a('0x42')]=qs['sort'](_0x5e1f1f[_0x8f9a('0x39')][_0x8f9a('0x43')]);_0xca8ef2['where']=qs[_0x8f9a('0x3b')](_['pick'](_0x5e1f1f[_0x8f9a('0x39')],_0x4c4abe['filters']),_0x272642);if(_0x5e1f1f['query'][_0x8f9a('0x29')]){_0xca8ef2[_0x8f9a('0x44')]=_[_0x8f9a('0x45')](_0xca8ef2['where'],{'$or':_[_0x8f9a('0x2b')](_0x272642,function(_0x57feac){if(_0x57feac[_0x8f9a('0x2e')]!=='VIRTUAL'){var _0x284656={};_0x284656[_0x57feac['name']]={'$like':'%'+_0x5e1f1f['query'][_0x8f9a('0x29')]+'%'};return _0x284656;}})});}_0xca8ef2=_[_0x8f9a('0x45')]({},_0xca8ef2,_0x5e1f1f[_0x8f9a('0x46')]);var _0xe229f9={'where':_0xca8ef2[_0x8f9a('0x44')]};return db[_0x8f9a('0x35')][_0x8f9a('0x1f')](_0xe229f9)['then'](function(_0x445562){_0x33b9ba[_0x8f9a('0x1f')]=_0x445562;if(_0x5e1f1f[_0x8f9a('0x39')][_0x8f9a('0x47')]){_0xca8ef2['include']=[{'all':!![]}];}return db['VoiceQueue'][_0x8f9a('0x48')](_0xca8ef2);})[_0x8f9a('0x31')](function(_0x5c5e0a){_0x33b9ba[_0x8f9a('0x49')]=_0x5c5e0a;return _0x33b9ba;})['then'](respondWithFilteredResult(_0x10498d,_0xca8ef2))['catch'](handleError(_0x10498d,null));};exports[_0x8f9a('0x4a')]=function(_0x13d1d0,_0x210fff){var _0x4d0bbb={'raw':![],'where':{'id':_0x13d1d0[_0x8f9a('0x4b')]['id']}},_0x32b5ea={};_0x32b5ea['model']=_[_0x8f9a('0x3a')](db[_0x8f9a('0x35')][_0x8f9a('0x36')]);_0x32b5ea[_0x8f9a('0x39')]=_['keys'](_0x13d1d0[_0x8f9a('0x39')]);_0x32b5ea[_0x8f9a('0x3b')]=_[_0x8f9a('0x3c')](_0x32b5ea['model'],_0x32b5ea['query']);_0x4d0bbb[_0x8f9a('0x3e')]=_[_0x8f9a('0x3c')](_0x32b5ea[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x13d1d0['query'][_0x8f9a('0x3d')]));_0x4d0bbb[_0x8f9a('0x3e')]=_0x4d0bbb[_0x8f9a('0x3e')]['length']?_0x4d0bbb['attributes']:_0x32b5ea['model'];if(_0x13d1d0[_0x8f9a('0x39')][_0x8f9a('0x47')]){_0x4d0bbb[_0x8f9a('0x4c')]=[{'all':!![]}];}_0x4d0bbb=_[_0x8f9a('0x45')]({},_0x4d0bbb,_0x13d1d0[_0x8f9a('0x46')]);return db[_0x8f9a('0x35')][_0x8f9a('0x2d')](_0x4d0bbb)[_0x8f9a('0x31')](handleEntityNotFound(_0x210fff,null))[_0x8f9a('0x31')](respondWithResult(_0x210fff,null))[_0x8f9a('0x4d')](handleError(_0x210fff,null));};exports[_0x8f9a('0x4e')]=function(_0x8a9fa5,_0x548d4e){return db[_0x8f9a('0x35')][_0x8f9a('0x4e')](_0x8a9fa5[_0x8f9a('0x4f')],{})[_0x8f9a('0x31')](function(_0x232e6a){var _0x1096a8=_0x8a9fa5['user'][_0x8f9a('0x25')]({'plain':!![]});if(!_0x1096a8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1096a8[_0x8f9a('0x50')]==='user'){var _0x84aa0f=_0x232e6a[_0x8f9a('0x25')]({'plain':!![]});var _0xfa8b3a=[{'name':_0x8f9a('0x51'),'value':_0x8f9a('0x26')},{'name':_0x8f9a('0x27'),'value':'outbound'}];var _0x1dd41a=_[_0x8f9a('0x2d')](_0xfa8b3a,[_0x8f9a('0x2c'),_0x84aa0f[_0x8f9a('0x2e')]])['name'];return db[_0x8f9a('0x52')]['find']({'where':{'name':_0x1dd41a,'userProfileId':_0x1096a8[_0x8f9a('0x53')]},'raw':!![]})['then'](function(_0x655804){if(_0x655804&&_0x655804[_0x8f9a('0x54')]===0x0){return db[_0x8f9a('0x30')][_0x8f9a('0x4e')]({'name':_0x84aa0f[_0x8f9a('0x2f')],'resourceId':_0x84aa0f['id'],'type':_0x655804['name'],'sectionId':_0x655804['id']},{})[_0x8f9a('0x31')](function(){return _0x232e6a;});}else{return _0x232e6a;}})['catch'](function(_0x4e3e5a){logger[_0x8f9a('0x32')](_0x8f9a('0x55'),_0x4e3e5a);throw _0x4e3e5a;});}return _0x232e6a;})[_0x8f9a('0x31')](respondWithResult(_0x548d4e,0xc9))[_0x8f9a('0x4d')](handleError(_0x548d4e,null));};exports[_0x8f9a('0x56')]=function(_0x3a1812,_0x276ef6){var _0x4e72e2={'where':{'id':_0x3a1812[_0x8f9a('0x4b')]['id']}},_0x4bd26f={};_0x4bd26f['model']=_['keys'](db[_0x8f9a('0x35')][_0x8f9a('0x36')]);_0x4e72e2[_0x8f9a('0x3e')]=_[_0x8f9a('0x3c')](_0x4bd26f['model'],qs[_0x8f9a('0x3d')](_0x3a1812[_0x8f9a('0x39')][_0x8f9a('0x3d')]));_0x4e72e2['attributes']=_0x4e72e2['attributes'][_0x8f9a('0x3f')]?_0x4e72e2['attributes']:_0x4bd26f[_0x8f9a('0x38')];if(_0x3a1812[_0x8f9a('0x39')][_0x8f9a('0x47')]){_0x4e72e2[_0x8f9a('0x4c')]=[{'all':!![]}];}_0x4e72e2=_[_0x8f9a('0x45')]({},_0x4e72e2,_0x3a1812[_0x8f9a('0x46')]);return db[_0x8f9a('0x35')][_0x8f9a('0x2d')](_0x4e72e2)[_0x8f9a('0x31')](handleEntityNotFound(_0x276ef6,null))[_0x8f9a('0x31')](function(_0x4dce11){if(_0x4dce11){var _0x1581b3=_0x4dce11[_0x8f9a('0x25')]({'plain':!![]});_0x1581b3=qs['omit'](_0x1581b3,['id',_0x8f9a('0x57'),_0x8f9a('0x58')]);_0x3a1812['body']=_[_0x8f9a('0x59')](_0x3a1812['body'],['id','createdAt','updatedAt']);return db[_0x8f9a('0x35')][_0x8f9a('0x4e')](_[_0x8f9a('0x45')](_0x1581b3,_0x3a1812[_0x8f9a('0x4f')]),{'include':_0x3a1812['query'][_0x8f9a('0x47')]?[{'all':!![]}]:undefined})['then'](function(_0x4b66ef){var _0x2248dd=_0x3a1812[_0x8f9a('0x5a')][_0x8f9a('0x25')]({'plain':!![]});if(!_0x2248dd)throw new Error(_0x8f9a('0x5b'));if(_0x2248dd['role']===_0x8f9a('0x5a')){var _0x51d97c=_0x4b66ef[_0x8f9a('0x25')]({'plain':!![]});var _0xfd11df=[{'name':_0x8f9a('0x51'),'value':'inbound'},{'name':_0x8f9a('0x27'),'value':_0x8f9a('0x28')}];var _0x7fe960=_[_0x8f9a('0x2d')](_0xfd11df,[_0x8f9a('0x2c'),_0x51d97c[_0x8f9a('0x2e')]])[_0x8f9a('0x2f')];return db[_0x8f9a('0x52')][_0x8f9a('0x2d')]({'where':{'name':_0x7fe960,'userProfileId':_0x2248dd[_0x8f9a('0x53')]},'raw':!![]})[_0x8f9a('0x31')](function(_0x10ad84){if(_0x10ad84&&_0x10ad84[_0x8f9a('0x54')]===0x0){return db[_0x8f9a('0x30')]['create']({'name':_0x51d97c[_0x8f9a('0x2f')],'resourceId':_0x51d97c['id'],'type':_0x10ad84[_0x8f9a('0x2f')],'sectionId':_0x10ad84['id']},{})['then'](function(){return _0x4b66ef;});}else{return _0x4b66ef;}})[_0x8f9a('0x4d')](function(_0x581e26){logger[_0x8f9a('0x32')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x581e26);throw _0x581e26;});}return _0x4b66ef;});}})[_0x8f9a('0x31')](respondWithResult(_0x276ef6,0xc9))[_0x8f9a('0x4d')](handleError(_0x276ef6,null));};exports[_0x8f9a('0x5c')]=function(_0x1a4d9f,_0x28cc3d){if(_0x1a4d9f[_0x8f9a('0x4f')]['id']){delete _0x1a4d9f[_0x8f9a('0x4f')]['id'];}return db[_0x8f9a('0x35')]['find']({'where':{'id':_0x1a4d9f['params']['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x28cc3d,null))['then'](saveUpdates(_0x1a4d9f['body'],null))[_0x8f9a('0x31')](respondWithResult(_0x28cc3d,null))['catch'](handleError(_0x28cc3d,null));};exports[_0x8f9a('0x5d')]=function(_0x5d194c,_0x3e2fb9){return db[_0x8f9a('0x35')]['find']({'where':{'id':_0x5d194c['params']['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x3e2fb9,null))[_0x8f9a('0x31')](removeEntity(_0x3e2fb9,null))['catch'](handleError(_0x3e2fb9,null));};exports[_0x8f9a('0x5e')]=function(_0x4e55df,_0x387912,_0x18872b){var _0x38fdc3={'raw':![],'where':{}};var _0x42e292={};var _0x358b21={'count':0x0,'rows':[]};return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x4e55df['params']['id']}})['then'](handleEntityNotFound(_0x387912,null))['then'](function(_0x4ed787){if(_0x4ed787){_0x42e292['model']=_[_0x8f9a('0x3a')](db[_0x8f9a('0x60')][_0x8f9a('0x36')]);_0x42e292[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x4e55df['query']);_0x42e292[_0x8f9a('0x3b')]=_['intersection'](_0x42e292[_0x8f9a('0x38')],_0x42e292['query']);_0x38fdc3['attributes']=_[_0x8f9a('0x3c')](_0x42e292['model'],qs[_0x8f9a('0x3d')](_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x3d')]));_0x38fdc3[_0x8f9a('0x3e')]=_0x38fdc3[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0x38fdc3['attributes']:_0x42e292[_0x8f9a('0x38')];if(!_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x38fdc3[_0x8f9a('0x20')]=qs[_0x8f9a('0x20')](_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0x38fdc3[_0x8f9a('0x41')]=qs['offset'](_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x41')]);}_0x38fdc3[_0x8f9a('0x42')]=qs['sort'](_0x4e55df[_0x8f9a('0x39')]['sort']);_0x38fdc3[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_[_0x8f9a('0x62')](_0x4e55df['query'],_0x42e292[_0x8f9a('0x3b')]));_0x38fdc3[_0x8f9a('0x44')][_0x8f9a('0x63')]=_0x4ed787['id'];if(_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x29')]){_0x38fdc3[_0x8f9a('0x44')]=_[_0x8f9a('0x45')](_0x38fdc3['where'],{'$or':_[_0x8f9a('0x2b')](_0x38fdc3['attributes'],function(_0x190275){var _0x18443c={};_0x18443c[_0x190275]={'$like':'%'+_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x29')]+'%'};return _0x18443c;})});}_0x38fdc3=_[_0x8f9a('0x45')]({},_0x38fdc3,_0x4e55df[_0x8f9a('0x46')]);return db['CmHopper'][_0x8f9a('0x1f')]({'where':_0x38fdc3[_0x8f9a('0x44')]})[_0x8f9a('0x31')](function(_0x5f110e){_0x358b21[_0x8f9a('0x1f')]=_0x5f110e;if(_0x4e55df[_0x8f9a('0x39')][_0x8f9a('0x47')]){_0x38fdc3['include']=[{'all':!![]}];}return db['CmHopper'][_0x8f9a('0x48')](_0x38fdc3);})[_0x8f9a('0x31')](function(_0x174372){_0x358b21[_0x8f9a('0x49')]=_0x174372;return _0x358b21;});}})[_0x8f9a('0x31')](respondWithFilteredResult(_0x387912,_0x38fdc3))[_0x8f9a('0x4d')](handleError(_0x387912,null));};exports[_0x8f9a('0x64')]=function(_0x463ee8,_0x98f527,_0x283007){var _0x5c2b83={'raw':!![],'where':{}};var _0x490ccc={};var _0x5ac332={'count':0x0,'rows':[]};return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x463ee8['params']['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x98f527,null))[_0x8f9a('0x31')](function(_0x4b659b){if(_0x4b659b){_0x490ccc[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x65')][_0x8f9a('0x36')]);_0x490ccc[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x463ee8['query']);_0x490ccc[_0x8f9a('0x3b')]=_[_0x8f9a('0x3c')](_0x490ccc[_0x8f9a('0x38')],_0x490ccc[_0x8f9a('0x39')]);_0x5c2b83[_0x8f9a('0x3e')]=_[_0x8f9a('0x3c')](_0x490ccc[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x463ee8[_0x8f9a('0x39')]['fields']));_0x5c2b83[_0x8f9a('0x3e')]=_0x5c2b83[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0x5c2b83[_0x8f9a('0x3e')]:_0x490ccc[_0x8f9a('0x38')];if(!_0x463ee8[_0x8f9a('0x39')][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x5c2b83[_0x8f9a('0x20')]=qs[_0x8f9a('0x20')](_0x463ee8[_0x8f9a('0x39')]['limit']);_0x5c2b83[_0x8f9a('0x41')]=qs['offset'](_0x463ee8[_0x8f9a('0x39')][_0x8f9a('0x41')]);}_0x5c2b83['order']=qs[_0x8f9a('0x43')](_0x463ee8['query'][_0x8f9a('0x43')]);_0x5c2b83[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_[_0x8f9a('0x62')](_0x463ee8[_0x8f9a('0x39')],_0x490ccc[_0x8f9a('0x3b')]));_0x5c2b83['where']['VoiceQueueId']=_0x4b659b['id'];if(_0x463ee8[_0x8f9a('0x39')][_0x8f9a('0x29')]){_0x5c2b83[_0x8f9a('0x44')]=_[_0x8f9a('0x45')](_0x5c2b83['where'],{'$or':_[_0x8f9a('0x2b')](_0x5c2b83[_0x8f9a('0x3e')],function(_0x1aa4e2){var _0x2f4821={};_0x2f4821[_0x1aa4e2]={'$like':'%'+_0x463ee8['query'][_0x8f9a('0x29')]+'%'};return _0x2f4821;})});}_0x5c2b83=_['merge']({},_0x5c2b83,_0x463ee8[_0x8f9a('0x46')]);return db[_0x8f9a('0x65')]['count']({'where':_0x5c2b83[_0x8f9a('0x44')]})[_0x8f9a('0x31')](function(_0x46df75){_0x5ac332[_0x8f9a('0x1f')]=_0x46df75;if(_0x463ee8[_0x8f9a('0x39')][_0x8f9a('0x47')]){_0x5c2b83[_0x8f9a('0x4c')]=[{'all':!![]}];}return db[_0x8f9a('0x65')][_0x8f9a('0x48')](_0x5c2b83);})[_0x8f9a('0x31')](function(_0x308bf5){_0x5ac332[_0x8f9a('0x49')]=_0x308bf5;return _0x5ac332;});}})[_0x8f9a('0x31')](respondWithFilteredResult(_0x98f527,_0x5c2b83))[_0x8f9a('0x4d')](handleError(_0x98f527,null));};exports['getHopperFinals']=function(_0x1ae4f1,_0x493ce2,_0x5c4fa2){var _0x4cb96e={'raw':!![],'where':{}};var _0x114de1={};var _0x2afc6c={'count':0x0,'rows':[]};return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x1ae4f1[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x493ce2,null))[_0x8f9a('0x31')](function(_0x552d0f){if(_0x552d0f){_0x114de1[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x66')][_0x8f9a('0x36')]);_0x114de1[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x1ae4f1[_0x8f9a('0x39')]);_0x114de1[_0x8f9a('0x3b')]=_['intersection'](_0x114de1[_0x8f9a('0x38')],_0x114de1[_0x8f9a('0x39')]);_0x4cb96e[_0x8f9a('0x3e')]=_[_0x8f9a('0x3c')](_0x114de1[_0x8f9a('0x38')],qs['fields'](_0x1ae4f1[_0x8f9a('0x39')][_0x8f9a('0x3d')]));_0x4cb96e['attributes']=_0x4cb96e[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0x4cb96e[_0x8f9a('0x3e')]:_0x114de1[_0x8f9a('0x38')];if(!_0x1ae4f1['query'][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x4cb96e['limit']=qs[_0x8f9a('0x20')](_0x1ae4f1[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0x4cb96e[_0x8f9a('0x41')]=qs[_0x8f9a('0x41')](_0x1ae4f1['query'][_0x8f9a('0x41')]);}_0x4cb96e[_0x8f9a('0x42')]=qs['sort'](_0x1ae4f1[_0x8f9a('0x39')]['sort']);_0x4cb96e[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_[_0x8f9a('0x62')](_0x1ae4f1[_0x8f9a('0x39')],_0x114de1['filters']));_0x4cb96e[_0x8f9a('0x44')][_0x8f9a('0x63')]=_0x552d0f['id'];if(_0x1ae4f1[_0x8f9a('0x39')][_0x8f9a('0x29')]){_0x4cb96e[_0x8f9a('0x44')]=_['merge'](_0x4cb96e[_0x8f9a('0x44')],{'$or':_[_0x8f9a('0x2b')](_0x4cb96e['attributes'],function(_0x4c80b5){var _0x451ac2={};_0x451ac2[_0x4c80b5]={'$like':'%'+_0x1ae4f1[_0x8f9a('0x39')][_0x8f9a('0x29')]+'%'};return _0x451ac2;})});}_0x4cb96e=_['merge']({},_0x4cb96e,_0x1ae4f1[_0x8f9a('0x46')]);return db['CmHopperFinal'][_0x8f9a('0x1f')]({'where':_0x4cb96e['where']})[_0x8f9a('0x31')](function(_0x3d25c9){_0x2afc6c[_0x8f9a('0x1f')]=_0x3d25c9;if(_0x1ae4f1[_0x8f9a('0x39')]['includeAll']){_0x4cb96e[_0x8f9a('0x4c')]=[{'all':!![]}];}return db[_0x8f9a('0x66')]['findAll'](_0x4cb96e);})[_0x8f9a('0x31')](function(_0x11a148){_0x2afc6c[_0x8f9a('0x49')]=_0x11a148;return _0x2afc6c;});}})['then'](respondWithFilteredResult(_0x493ce2,_0x4cb96e))[_0x8f9a('0x4d')](handleError(_0x493ce2,null));};exports[_0x8f9a('0x67')]=function(_0x18af98,_0x3d27d4,_0x1e7881){var _0x356fbf={'raw':!![],'where':{}};var _0x50cf4f={};var _0x166619={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x8f9a('0x5f')]({'where':{'id':_0x18af98[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x3d27d4,null))['then'](function(_0x1077e8){if(_0x1077e8){_0x50cf4f[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x68')][_0x8f9a('0x36')]);_0x50cf4f[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x18af98[_0x8f9a('0x39')]);_0x50cf4f[_0x8f9a('0x3b')]=_[_0x8f9a('0x3c')](_0x50cf4f['model'],_0x50cf4f[_0x8f9a('0x39')]);_0x356fbf[_0x8f9a('0x3e')]=_[_0x8f9a('0x3c')](_0x50cf4f[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x18af98[_0x8f9a('0x39')][_0x8f9a('0x3d')]));_0x356fbf[_0x8f9a('0x3e')]=_0x356fbf['attributes'][_0x8f9a('0x3f')]?_0x356fbf[_0x8f9a('0x3e')]:_0x50cf4f[_0x8f9a('0x38')];if(!_0x18af98[_0x8f9a('0x39')][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x356fbf[_0x8f9a('0x20')]=qs['limit'](_0x18af98[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0x356fbf[_0x8f9a('0x41')]=qs[_0x8f9a('0x41')](_0x18af98[_0x8f9a('0x39')][_0x8f9a('0x41')]);}_0x356fbf[_0x8f9a('0x42')]=qs['sort'](_0x18af98[_0x8f9a('0x39')][_0x8f9a('0x43')]);_0x356fbf[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_['pick'](_0x18af98[_0x8f9a('0x39')],_0x50cf4f[_0x8f9a('0x3b')]));_0x356fbf[_0x8f9a('0x44')]['VoiceQueueId']=_0x1077e8['id'];if(_0x18af98[_0x8f9a('0x39')][_0x8f9a('0x29')]){_0x356fbf[_0x8f9a('0x44')]=_['merge'](_0x356fbf['where'],{'$or':_[_0x8f9a('0x2b')](_0x356fbf[_0x8f9a('0x3e')],function(_0x11254f){var _0x357c6a={};_0x357c6a[_0x11254f]={'$like':'%'+_0x18af98['query'][_0x8f9a('0x29')]+'%'};return _0x357c6a;})});}_0x356fbf=_[_0x8f9a('0x45')]({},_0x356fbf,_0x18af98[_0x8f9a('0x46')]);return db[_0x8f9a('0x68')]['count']({'where':_0x356fbf[_0x8f9a('0x44')]})[_0x8f9a('0x31')](function(_0xe2883c){_0x166619[_0x8f9a('0x1f')]=_0xe2883c;if(_0x18af98[_0x8f9a('0x39')]['includeAll']){_0x356fbf[_0x8f9a('0x4c')]=[{'all':!![]}];}return db[_0x8f9a('0x68')]['findAll'](_0x356fbf);})[_0x8f9a('0x31')](function(_0x16291c){_0x166619['rows']=_0x16291c;return _0x166619;});}})[_0x8f9a('0x31')](respondWithFilteredResult(_0x3d27d4,_0x356fbf))['catch'](handleError(_0x3d27d4,null));};exports['getTeams']=function(_0x219443,_0x2e08c9,_0x4dbb84){var _0x10048a={};var _0x121e94={};var _0x2f017b;var _0x245aa0;return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x219443[_0x8f9a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2e08c9,null))[_0x8f9a('0x31')](function(_0x28dc1d){if(_0x28dc1d){_0x2f017b=_0x28dc1d;_0x121e94[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x69')][_0x8f9a('0x36')]);_0x121e94[_0x8f9a('0x39')]=_['keys'](_0x219443['query']);_0x121e94[_0x8f9a('0x3b')]=_[_0x8f9a('0x3c')](_0x121e94[_0x8f9a('0x38')],_0x121e94[_0x8f9a('0x39')]);_0x10048a['attributes']=_['intersection'](_0x121e94[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x219443[_0x8f9a('0x39')][_0x8f9a('0x3d')]));_0x10048a[_0x8f9a('0x3e')]=_0x10048a[_0x8f9a('0x3e')]['length']?_0x10048a[_0x8f9a('0x3e')]:_0x121e94['model'];_0x10048a['order']=qs['sort'](_0x219443['query'][_0x8f9a('0x43')]);_0x10048a['where']=qs[_0x8f9a('0x3b')](_['pick'](_0x219443['query'],_0x121e94[_0x8f9a('0x3b')]));if(_0x219443[_0x8f9a('0x39')][_0x8f9a('0x29')]){_0x10048a[_0x8f9a('0x44')]=_[_0x8f9a('0x45')](_0x10048a[_0x8f9a('0x44')],{'$or':_[_0x8f9a('0x2b')](_0x10048a[_0x8f9a('0x3e')],function(_0x9268b){var _0x3147cb={};_0x3147cb[_0x9268b]={'$like':'%'+_0x219443[_0x8f9a('0x39')][_0x8f9a('0x29')]+'%'};return _0x3147cb;})});}_0x10048a=_['merge']({},_0x10048a,_0x219443[_0x8f9a('0x46')]);return _0x2f017b['getTeams'](_0x10048a);}})[_0x8f9a('0x31')](function(_0x9667cd){if(_0x9667cd){_0x245aa0=_0x9667cd[_0x8f9a('0x3f')];if(!_0x219443[_0x8f9a('0x39')][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x10048a[_0x8f9a('0x20')]=qs[_0x8f9a('0x20')](_0x219443['query'][_0x8f9a('0x20')]);_0x10048a[_0x8f9a('0x41')]=qs['offset'](_0x219443[_0x8f9a('0x39')]['offset']);}return _0x2f017b[_0x8f9a('0x6a')](_0x10048a);}})[_0x8f9a('0x31')](function(_0x3504ae){if(_0x3504ae){return _0x3504ae?{'count':_0x245aa0,'rows':_0x3504ae}:null;}})[_0x8f9a('0x31')](respondWithResult(_0x2e08c9,null))[_0x8f9a('0x4d')](handleError(_0x2e08c9,null));};exports[_0x8f9a('0x6b')]=function(_0x33ae8d,_0x391a83,_0x56b75f){var _0x53943f=_0x33ae8d[_0x8f9a('0x4f')][_0x8f9a('0x6c')];var _0x1b7fdd=_[_0x8f9a('0x2b')](_0x53943f,'id');return db[_0x8f9a('0x69')][_0x8f9a('0x48')]({'where':{'id':_0x1b7fdd},'attributes':['id'],'include':[{'model':db[_0x8f9a('0x6d')],'as':'Agents','attributes':['id','name',_0x8f9a('0x6e'),_0x8f9a('0x6f'),_0x8f9a('0x70')],'raw':!![]}]})[_0x8f9a('0x31')](function(_0x75116d){if(_0x75116d){var _0x35bfd8=_['flatMap'](_0x75116d,function(_0x11e116){var _0x19d1f8=_0x11e116[_0x8f9a('0x25')]({'plain':!![]});_0x19d1f8['Agents'][_0x8f9a('0x71')](function(_0x643848){_0x643848[_0x8f9a('0x72')]=_[_0x8f9a('0x2d')](_0x53943f,{'id':_0x19d1f8['id']})[_0x8f9a('0x72')];});return _0x19d1f8['Agents'];});return db[_0x8f9a('0x35')][_0x8f9a('0x2d')]({'where':{'id':_0x33ae8d['params']['id']}})[_0x8f9a('0x31')](function(_0x22cbe4){return db[_0x8f9a('0x73')][_0x8f9a('0x74')](function(_0x1a51f6){return _0x22cbe4[_0x8f9a('0x6b')](_0x1b7fdd,{'transaction':_0x1a51f6})[_0x8f9a('0x31')](function(){return BPromise[_0x8f9a('0x75')](_0x53943f,function(_0x1dddfb){return db[_0x8f9a('0x76')][_0x8f9a('0x77')]({'TeamId':_0x1dddfb['id'],'VoiceQueueId':_0x33ae8d[_0x8f9a('0x4b')]['id'],'penalty':_0x1dddfb[_0x8f9a('0x72')]},{'transaction':_0x1a51f6});});})[_0x8f9a('0x31')](function(){return BPromise[_0x8f9a('0x75')](_0x35bfd8,function(_0x411678){return db[_0x8f9a('0x78')][_0x8f9a('0x79')]({'where':{'UserId':_0x411678['id'],'VoiceQueueId':_0x33ae8d[_0x8f9a('0x4b')]['id']},'defaults':{'penalty':_0x411678['penalty']},'transaction':_0x1a51f6});});})['then'](function(){return BPromise[_0x8f9a('0x75')](_[_0x8f9a('0x29')](_0x35bfd8,{'online':!![]}),function(_0xcfc6c0){return db[_0x8f9a('0x7a')][_0x8f9a('0x77')]({'membername':_0xcfc6c0[_0x8f9a('0x2f')],'UserId':_0xcfc6c0['id'],'queue_name':_0x22cbe4[_0x8f9a('0x2f')],'VoiceQueueId':_0x22cbe4['id'],'interface':_['isNil'](_0xcfc6c0[_0x8f9a('0x70')])?util[_0x8f9a('0x7b')](_0x8f9a('0x7c'),_0xcfc6c0[_0x8f9a('0x2f')]):_0xcfc6c0[_0x8f9a('0x70')],'paused':_0xcfc6c0[_0x8f9a('0x6f')]||![],'penalty':_0xcfc6c0[_0x8f9a('0x72')]},{'transaction':_0x1a51f6});});})[_0x8f9a('0x31')](function(){_0x35bfd8[_0x8f9a('0x71')](function(_0x286ba9){socket['emit'](_0x8f9a('0x7d'),{'UserId':_0x286ba9['id'],'VoiceQueueId':_0x22cbe4['id']});});});});});}})[_0x8f9a('0x31')](respondWithStatusCode(_0x391a83,null))[_0x8f9a('0x4d')](handleError(_0x391a83,null));};exports['removeTeams']=function(_0x5c98cd,_0x258215,_0x15a014){return db[_0x8f9a('0x69')][_0x8f9a('0x48')]({'where':{'id':_0x5c98cd[_0x8f9a('0x39')][_0x8f9a('0x7e')]},'attributes':['id'],'include':[{'model':db[_0x8f9a('0x6d')],'as':_0x8f9a('0x7f'),'attributes':['id'],'raw':!![]}]})[_0x8f9a('0x31')](handleEntityNotFound(_0x258215,null))[_0x8f9a('0x31')](function(_0x1c5d96){var _0x22188a=_[_0x8f9a('0x2b')](_0x1c5d96,'id');var _0x15c7fa=[];var _0x16d679=[];var _0xf0ac10=squel[_0x8f9a('0x80')]();_0xf0ac10[_0x8f9a('0x81')](_0x8f9a('0x82'))['from'](_0x8f9a('0x83'),'tq')[_0x8f9a('0x84')](_0x8f9a('0x85'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x8f9a('0x44')]('VoiceQueueId\x20=\x20?',_0x5c98cd[_0x8f9a('0x4b')]['id']);for(var _0x268aa7=0x0;_0x268aa7<_0x1c5d96[_0x8f9a('0x3f')];_0x268aa7+=0x1){let _0xe85d76=_0x1c5d96[_0x268aa7];for(var _0x516521=0x0;_0x516521<_0xe85d76[_0x8f9a('0x7f')][_0x8f9a('0x3f')];_0x516521+=0x1){let _0x45adbd=_0xe85d76[_0x8f9a('0x7f')][_0x516521];var _0x365c90=_0xf0ac10[_0x8f9a('0x56')]();_0x365c90['where'](_0x8f9a('0x86'),_0x45adbd['id']);_0x16d679[_0x8f9a('0x87')](db[_0x8f9a('0x73')][_0x8f9a('0x39')](_0x365c90[_0x8f9a('0x88')](),{'type':db[_0x8f9a('0x73')][_0x8f9a('0x89')][_0x8f9a('0x8a')]})[_0x8f9a('0x31')](function(_0x1f7e38){if(_0x1f7e38[_0x8f9a('0x3f')]===0x1){return _0x45adbd['id'];}else{var _0x16c2d1=_[_0x8f9a('0x8b')](_[_0x8f9a('0x2b')](_0x1f7e38,_0x8f9a('0x8c')),function(_0x463eb1){return _['includes'](_0x22188a,_0x463eb1);});if(_0x16c2d1){return _0x45adbd['id'];}}}));}}return BPromise[_0x8f9a('0x8d')](_0x16d679)[_0x8f9a('0x31')](function(_0x1f6250){_0x15c7fa=_(_0x15c7fa)['union'](_0x1f6250)['compact']()[_0x8f9a('0x2c')]();return db[_0x8f9a('0x35')]['find']({'where':{'id':_0x5c98cd[_0x8f9a('0x4b')]['id']}})['then'](function(_0xf70cb){return db[_0x8f9a('0x73')][_0x8f9a('0x74')](function(_0x2501f3){return _0xf70cb[_0x8f9a('0x8e')](_0x5c98cd[_0x8f9a('0x39')][_0x8f9a('0x7e')],{'transaction':_0x2501f3})['then'](function(){if(!_[_0x8f9a('0x8f')](_0x15c7fa)){return _0xf70cb[_0x8f9a('0x90')](_0x15c7fa,{'transaction':_0x2501f3})['then'](function(){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x5c98cd[_0x8f9a('0x4b')]['id'],'UserId':_0x15c7fa},'transaction':_0x2501f3});});}})[_0x8f9a('0x31')](function(){_0x15c7fa[_0x8f9a('0x71')](function(_0x4aaa50){socket[_0x8f9a('0x91')]('userVoiceQueue:remove',{'UserId':_0x4aaa50,'VoiceQueueId':_0xf70cb['id']});});});});});});})[_0x8f9a('0x31')](respondWithStatusCode(_0x258215,null))[_0x8f9a('0x4d')](handleError(_0x258215,null));};exports['addAgents']=function(_0x808a3d,_0x130e15,_0x2d1df3){var _0x5ea1e5,_0x2a33c9;return db[_0x8f9a('0x35')][_0x8f9a('0x2d')]({'where':{'id':_0x808a3d[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x130e15,null))[_0x8f9a('0x31')](function(_0x3e7bc3){if(_0x3e7bc3){_0x2a33c9=_0x3e7bc3;return _0x3e7bc3[_0x8f9a('0x92')](_0x808a3d['body']['ids'],_[_0x8f9a('0x59')](_0x808a3d['body'],[_0x8f9a('0x7e'),'id'])||{})[_0x8f9a('0x93')](function(_0x241add){for(var _0x233732=0x0;_0x233732<_0x808a3d[_0x8f9a('0x4f')][_0x8f9a('0x7e')]['length'];_0x233732+=0x1){socket['emit'](_0x8f9a('0x7d'),{'UserId':Number(_0x808a3d[_0x8f9a('0x4f')]['ids'][_0x233732]),'VoiceQueueId':Number(_0x808a3d[_0x8f9a('0x4b')]['id'])});}return _0x241add;});}})['then'](function(_0x535b44){_0x5ea1e5=_0x535b44||[];if(_0x2a33c9){return db[_0x8f9a('0x6d')]['findAll']({'where':{'id':_0x808a3d[_0x8f9a('0x4f')][_0x8f9a('0x7e')]},'attributes':['id','name',_0x8f9a('0x6e'),_0x8f9a('0x6f'),_0x8f9a('0x70')],'raw':!![]});}})[_0x8f9a('0x31')](function(_0x43bbc9){if(!_[_0x8f9a('0x8f')](_0x43bbc9)){var _0x2453c2=[];for(var _0x33b66e=0x0;_0x33b66e<_0x43bbc9[_0x8f9a('0x3f')];_0x33b66e++){if(_0x43bbc9[_0x33b66e][_0x8f9a('0x6e')]){_0x2453c2[_0x8f9a('0x87')](db['UserVoiceQueueRt'][_0x8f9a('0x77')]({'membername':_0x43bbc9[_0x33b66e][_0x8f9a('0x2f')],'UserId':_0x43bbc9[_0x33b66e]['id'],'queue_name':_0x2a33c9[_0x8f9a('0x2f')],'VoiceQueueId':_0x2a33c9['id'],'interface':_['isNil'](_0x43bbc9[_0x33b66e][_0x8f9a('0x70')])?util['format'](_0x8f9a('0x7c'),_0x43bbc9[_0x33b66e][_0x8f9a('0x2f')]):_0x43bbc9[_0x33b66e]['interface'],'paused':_0x43bbc9[_0x33b66e][_0x8f9a('0x6f')]||![],'penalty':_0x808a3d[_0x8f9a('0x4f')][_0x8f9a('0x72')]||0x0}));}}return BPromise[_0x8f9a('0x8d')](_0x2453c2);}})[_0x8f9a('0x31')](function(){return _0x5ea1e5;})['then'](respondWithResult(_0x130e15,null))[_0x8f9a('0x4d')](handleError(_0x130e15,null));};exports[_0x8f9a('0x90')]=function(_0x4ab2b8,_0x17ab71,_0x1e9f4){return db[_0x8f9a('0x35')][_0x8f9a('0x2d')]({'where':{'id':_0x4ab2b8['params']['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x17ab71,null))[_0x8f9a('0x31')](function(_0x262d21){if(_0x262d21){return _0x262d21[_0x8f9a('0x90')](_0x4ab2b8[_0x8f9a('0x39')][_0x8f9a('0x7e')])[_0x8f9a('0x31')](function(){if(_[_0x8f9a('0x94')](_0x4ab2b8[_0x8f9a('0x39')]['ids'])){for(var _0x2af97c=0x0;_0x2af97c<_0x4ab2b8['query']['ids'][_0x8f9a('0x3f')];_0x2af97c+=0x1){socket['emit'](_0x8f9a('0x95'),{'UserId':Number(_0x4ab2b8[_0x8f9a('0x39')][_0x8f9a('0x7e')][_0x2af97c]),'VoiceQueueId':Number(_0x4ab2b8[_0x8f9a('0x4b')]['id'])});}}else{socket[_0x8f9a('0x91')](_0x8f9a('0x95'),{'UserId':Number(_0x4ab2b8[_0x8f9a('0x39')][_0x8f9a('0x7e')]),'VoiceQueueId':Number(_0x4ab2b8['params']['id'])});}});}})[_0x8f9a('0x31')](function(_0x411c74){return db[_0x8f9a('0x7a')][_0x8f9a('0x5d')]({'where':{'VoiceQueueId':_0x4ab2b8['params']['id'],'UserId':_0x4ab2b8['query'][_0x8f9a('0x7e')]}})[_0x8f9a('0x31')](function(){return _0x411c74;});})['then'](respondWithStatusCode(_0x17ab71,null))[_0x8f9a('0x4d')](handleError(_0x17ab71,null));};exports[_0x8f9a('0x96')]=function(_0x14f542,_0x154ec3,_0x17a357){var _0x4d84aa={};var _0x436141={};var _0x407285;var _0x401712;return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x14f542['params']['id']}})['then'](handleEntityNotFound(_0x154ec3,null))[_0x8f9a('0x31')](function(_0x411d9e){if(_0x411d9e){_0x407285=_0x411d9e;_0x436141[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x6d')][_0x8f9a('0x36')]);_0x436141['query']=_[_0x8f9a('0x3a')](_0x14f542[_0x8f9a('0x39')]);_0x436141['filters']=_[_0x8f9a('0x3c')](_0x436141['model'],_0x436141[_0x8f9a('0x39')]);_0x4d84aa[_0x8f9a('0x3e')]=_['intersection'](_0x436141[_0x8f9a('0x38')],qs['fields'](_0x14f542[_0x8f9a('0x39')][_0x8f9a('0x3d')]));_0x4d84aa['attributes']=_0x4d84aa[_0x8f9a('0x3e')]['length']?_0x4d84aa['attributes']:_0x436141[_0x8f9a('0x38')];_0x4d84aa['order']=qs[_0x8f9a('0x43')](_0x14f542[_0x8f9a('0x39')]['sort']);_0x4d84aa['where']=qs[_0x8f9a('0x3b')](_[_0x8f9a('0x62')](_0x14f542['query'],_0x436141[_0x8f9a('0x3b')]));if(_0x14f542[_0x8f9a('0x39')][_0x8f9a('0x29')]){_0x4d84aa[_0x8f9a('0x44')]=_[_0x8f9a('0x45')](_0x4d84aa[_0x8f9a('0x44')],{'$or':_['map'](_0x4d84aa['attributes'],function(_0x2ab19b){var _0x5e6bb7={};_0x5e6bb7[_0x2ab19b]={'$like':'%'+_0x14f542[_0x8f9a('0x39')]['filter']+'%'};return _0x5e6bb7;})});}_0x4d84aa=_[_0x8f9a('0x45')]({},_0x4d84aa,_0x14f542[_0x8f9a('0x46')]);return _0x407285[_0x8f9a('0x96')](_0x4d84aa);}})[_0x8f9a('0x31')](function(_0xa35d62){if(_0xa35d62){_0x401712=_0xa35d62[_0x8f9a('0x3f')];if(!_0x14f542[_0x8f9a('0x39')][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x4d84aa['limit']=qs['limit'](_0x14f542[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0x4d84aa[_0x8f9a('0x41')]=qs[_0x8f9a('0x41')](_0x14f542[_0x8f9a('0x39')][_0x8f9a('0x41')]);}return _0x407285[_0x8f9a('0x96')](_0x4d84aa);}})[_0x8f9a('0x31')](function(_0x2aa8fb){if(_0x2aa8fb){return _0x2aa8fb?{'count':_0x401712,'rows':_0x2aa8fb}:null;}})['then'](respondWithResult(_0x154ec3,null))[_0x8f9a('0x4d')](handleError(_0x154ec3,null));};exports[_0x8f9a('0x97')]=function(_0x5f79d2,_0x456e15,_0x4c1e31){var _0x377bd6={};var _0x4a3a67={};var _0x2e859f;var _0x18cb1e;return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x5f79d2[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x456e15,null))[_0x8f9a('0x31')](function(_0x308dcb){if(_0x308dcb){_0x2e859f=_0x308dcb;_0x4a3a67['model']=_[_0x8f9a('0x3a')](db[_0x8f9a('0x7a')]['rawAttributes']);_0x4a3a67[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x5f79d2[_0x8f9a('0x39')]);_0x4a3a67['filters']=_['intersection'](_0x4a3a67[_0x8f9a('0x38')],_0x4a3a67[_0x8f9a('0x39')]);_0x377bd6[_0x8f9a('0x3e')]=_[_0x8f9a('0x3c')](_0x4a3a67[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x5f79d2['query']['fields']));_0x377bd6[_0x8f9a('0x3e')]=_0x377bd6[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0x377bd6['attributes']:_0x4a3a67['model'];_0x377bd6[_0x8f9a('0x42')]=qs['sort'](_0x5f79d2[_0x8f9a('0x39')][_0x8f9a('0x43')]);_0x377bd6[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_[_0x8f9a('0x62')](_0x5f79d2[_0x8f9a('0x39')],_0x4a3a67[_0x8f9a('0x3b')]));if(_0x5f79d2[_0x8f9a('0x39')]['filter']){_0x377bd6[_0x8f9a('0x44')]=_[_0x8f9a('0x45')](_0x377bd6['where'],{'$or':_[_0x8f9a('0x2b')](_0x377bd6[_0x8f9a('0x3e')],function(_0x301b2e){var _0x215993={};_0x215993[_0x301b2e]={'$like':'%'+_0x5f79d2[_0x8f9a('0x39')]['filter']+'%'};return _0x215993;})});}_0x377bd6=_[_0x8f9a('0x45')]({},_0x377bd6,_0x5f79d2[_0x8f9a('0x46')]);return _0x2e859f[_0x8f9a('0x97')](_0x377bd6);}})[_0x8f9a('0x31')](function(_0x46b95c){if(_0x46b95c){_0x18cb1e=_0x46b95c[_0x8f9a('0x3f')];if(!_0x5f79d2[_0x8f9a('0x39')][_0x8f9a('0x61')]('nolimit')){_0x377bd6[_0x8f9a('0x20')]=qs[_0x8f9a('0x20')](_0x5f79d2[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0x377bd6[_0x8f9a('0x41')]=qs[_0x8f9a('0x41')](_0x5f79d2['query']['offset']);}return _0x2e859f[_0x8f9a('0x97')](_0x377bd6);}})[_0x8f9a('0x31')](function(_0x518096){return _0x518096?{'count':_0x18cb1e,'rows':_0x518096}:null;})['then'](respondWithResult(_0x456e15,null))[_0x8f9a('0x4d')](handleError(_0x456e15,null));};exports['getLists']=function(_0x338e48,_0x17eff1,_0x31e77e){var _0x4d04b7={};var _0x4c86c0={};var _0x3a09f9;var _0x40c6b5;return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x338e48[_0x8f9a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x17eff1,null))[_0x8f9a('0x31')](function(_0x161bc1){if(_0x161bc1){_0x3a09f9=_0x161bc1;_0x4c86c0[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x98')][_0x8f9a('0x36')]);_0x4c86c0['query']=_[_0x8f9a('0x3a')](_0x338e48[_0x8f9a('0x39')]);_0x4c86c0[_0x8f9a('0x3b')]=_[_0x8f9a('0x3c')](_0x4c86c0['model'],_0x4c86c0[_0x8f9a('0x39')]);_0x4d04b7[_0x8f9a('0x3e')]=_['intersection'](_0x4c86c0[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x338e48[_0x8f9a('0x39')]['fields']));_0x4d04b7['attributes']=_0x4d04b7[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0x4d04b7['attributes']:_0x4c86c0[_0x8f9a('0x38')];_0x4d04b7['order']=qs['sort'](_0x338e48['query'][_0x8f9a('0x43')]);_0x4d04b7[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_[_0x8f9a('0x62')](_0x338e48[_0x8f9a('0x39')],_0x4c86c0['filters']));if(_0x338e48['query'][_0x8f9a('0x29')]){_0x4d04b7[_0x8f9a('0x44')]=_['merge'](_0x4d04b7[_0x8f9a('0x44')],{'$or':_[_0x8f9a('0x2b')](_0x4d04b7[_0x8f9a('0x3e')],function(_0x1d906a){var _0x578ef8={};_0x578ef8[_0x1d906a]={'$like':'%'+_0x338e48[_0x8f9a('0x39')][_0x8f9a('0x29')]+'%'};return _0x578ef8;})});}_0x4d04b7=_[_0x8f9a('0x45')]({},_0x4d04b7,_0x338e48[_0x8f9a('0x46')]);return _0x3a09f9['getLists'](_0x4d04b7);}})['then'](function(_0x1dc38d){if(_0x1dc38d){_0x40c6b5=_0x1dc38d[_0x8f9a('0x3f')];if(!_0x338e48['query'][_0x8f9a('0x61')](_0x8f9a('0x40'))){_0x4d04b7[_0x8f9a('0x20')]=qs['limit'](_0x338e48['query']['limit']);_0x4d04b7['offset']=qs[_0x8f9a('0x41')](_0x338e48[_0x8f9a('0x39')][_0x8f9a('0x41')]);}return _0x3a09f9[_0x8f9a('0x99')](_0x4d04b7);}})['then'](function(_0x330b24){if(_0x330b24){return _0x330b24?{'count':_0x40c6b5,'rows':_0x330b24}:null;}})['then'](respondWithResult(_0x17eff1,null))['catch'](handleError(_0x17eff1,null));};exports[_0x8f9a('0x9a')]=function(_0x6b3017,_0x51bd2a,_0xed241d){var _0x5ca9f1,_0x53bfbd;return db['VoiceQueue'][_0x8f9a('0x2d')]({'where':{'id':_0x6b3017[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x51bd2a,null))['then'](function(_0x2910ba){if(_0x2910ba){_0x53bfbd=_0x2910ba;return _0x2910ba['addLists'](_0x6b3017[_0x8f9a('0x4f')][_0x8f9a('0x7e')],_[_0x8f9a('0x59')](_0x6b3017[_0x8f9a('0x4f')],[_0x8f9a('0x7e'),'id'])||{});}return null;})[_0x8f9a('0x93')](function(_0x563d70){var _0x16e5dc;_0x5ca9f1=_0x563d70||[];var _0x3cf738=[];if(_0x563d70){for(var _0x380978=0x0;_0x380978<_0x563d70[_0x8f9a('0x3f')];_0x380978+=0x1){var _0x26e51b=_0x563d70[_0x380978]['get']({'plain':!![]});_0x53bfbd[_0x8f9a('0x9b')]=_0x6b3017[_0x8f9a('0x4f')][_0x8f9a('0x9b')]?_0x6b3017['body']['dialCheckDuplicateType']:_0x53bfbd['dialCheckDuplicateType'];switch(_0x53bfbd[_0x8f9a('0x9b')]){case _0x8f9a('0x9c'):_0x16e5dc=squel['insert']()[_0x8f9a('0x9d')]('cm_hopper')[_0x8f9a('0x9e')](['phone','scheduledAt',_0x8f9a('0x9f'),_0x8f9a('0xa0'),_0x8f9a('0x63'),_0x8f9a('0x57'),_0x8f9a('0x58')],squel['select']()[_0x8f9a('0x81')](_0x8f9a('0xa1'),_0x8f9a('0xa1'))['field'](_0x8f9a('0xa2'),_0x8f9a('0xa3'))[_0x8f9a('0x81')]('id',_0x8f9a('0x9f'))['field'](_0x26e51b['CmListId'][_0x8f9a('0x88')](),_0x8f9a('0xa0'))['field'](_0x6b3017[_0x8f9a('0x4b')]['id'][_0x8f9a('0x88')](),'VoiceQueueId')[_0x8f9a('0x81')](_0x8f9a('0xa2'),'createdAt')[_0x8f9a('0x81')]('NOW()',_0x8f9a('0x58'))[_0x8f9a('0xa4')](_0x8f9a('0xa5'))[_0x8f9a('0x44')]('deletedAt\x20IS\x20NULL')['where'](_0x8f9a('0xa6'),_0x26e51b[_0x8f9a('0xa7')][_0x8f9a('0x88')]())[_0x8f9a('0x44')](_0x8f9a('0xa8'))[_0x8f9a('0x44')](_0x8f9a('0xa9'),squel['select']()['field'](_0x8f9a('0xaa'))[_0x8f9a('0xa4')](_0x8f9a('0xab'))['where'](_0x8f9a('0xac'),_0x6b3017[_0x8f9a('0x4b')]['id'][_0x8f9a('0x88')]()))[_0x8f9a('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x8f9a('0x80')]()[_0x8f9a('0x81')](_0x8f9a('0xad'))['from'](_0x8f9a('0xae'))[_0x8f9a('0x44')](_0x8f9a('0xac'),_0x6b3017[_0x8f9a('0x4b')]['id'][_0x8f9a('0x88')]())))['toString']();break;case _0x8f9a('0xaf'):_0x16e5dc=squel[_0x8f9a('0xb0')]()['into'](_0x8f9a('0xae'))['fromQuery']([_0x8f9a('0xa1'),_0x8f9a('0xa3'),_0x8f9a('0x9f'),_0x8f9a('0xa0'),'VoiceQueueId',_0x8f9a('0x57'),_0x8f9a('0x58')],squel[_0x8f9a('0x80')]()[_0x8f9a('0x81')](_0x8f9a('0xa1'),_0x8f9a('0xa1'))[_0x8f9a('0x81')](_0x8f9a('0xa2'),_0x8f9a('0xa3'))[_0x8f9a('0x81')]('id',_0x8f9a('0x9f'))[_0x8f9a('0x81')](_0x26e51b[_0x8f9a('0xa7')][_0x8f9a('0x88')](),'ListId')[_0x8f9a('0x81')](_0x6b3017[_0x8f9a('0x4b')]['id'][_0x8f9a('0x88')](),'VoiceQueueId')[_0x8f9a('0x81')]('NOW()',_0x8f9a('0x57'))[_0x8f9a('0x81')]('NOW()',_0x8f9a('0x58'))['from'](_0x8f9a('0xa5'))['where'](_0x8f9a('0xb1'))[_0x8f9a('0x44')]('ListId\x20=\x20?',_0x26e51b[_0x8f9a('0xa7')][_0x8f9a('0x88')]())[_0x8f9a('0x44')](_0x8f9a('0xa8'))[_0x8f9a('0x44')](_0x8f9a('0xa9'),squel[_0x8f9a('0x80')]()[_0x8f9a('0x81')]('COALESCE(phone,\x27\x27)')[_0x8f9a('0xa4')]('cm_hopper')[_0x8f9a('0x44')](_0x8f9a('0xac'),_0x6b3017[_0x8f9a('0x4b')]['id']['toString']())))[_0x8f9a('0x88')]();break;default:_0x16e5dc=squel[_0x8f9a('0xb0')]()[_0x8f9a('0x9d')](_0x8f9a('0xae'))[_0x8f9a('0x9e')]([_0x8f9a('0xa1'),_0x8f9a('0xa3'),_0x8f9a('0x9f'),'ListId',_0x8f9a('0x63'),_0x8f9a('0x57'),'updatedAt'],squel[_0x8f9a('0x80')]()[_0x8f9a('0x81')](_0x8f9a('0xa1'),_0x8f9a('0xa1'))[_0x8f9a('0x81')](_0x8f9a('0xa2'),_0x8f9a('0xa3'))[_0x8f9a('0x81')]('id',_0x8f9a('0x9f'))[_0x8f9a('0x81')](_0x26e51b[_0x8f9a('0xa7')][_0x8f9a('0x88')](),_0x8f9a('0xa0'))['field'](_0x6b3017[_0x8f9a('0x4b')]['id'][_0x8f9a('0x88')](),_0x8f9a('0x63'))[_0x8f9a('0x81')](_0x8f9a('0xa2'),_0x8f9a('0x57'))[_0x8f9a('0x81')](_0x8f9a('0xa2'),_0x8f9a('0x58'))['from']('cm_contacts')[_0x8f9a('0x44')](_0x8f9a('0xb1'))['where']('ListId\x20=\x20?',_0x26e51b[_0x8f9a('0xa7')][_0x8f9a('0x88')]())['where'](_0x8f9a('0xa8')))['toString']();}_0x3cf738[_0x8f9a('0x87')](db[_0x8f9a('0x73')][_0x8f9a('0x39')](_0x16e5dc));}return BPromise[_0x8f9a('0x8d')](_0x3cf738);}})['then'](function(){return _0x5ca9f1;})['then'](respondWithResult(_0x51bd2a,null))[_0x8f9a('0x4d')](handleError(_0x51bd2a,null));};exports[_0x8f9a('0xb2')]=function(_0x344736,_0x2f1002,_0x3ac31c){return db[_0x8f9a('0x35')][_0x8f9a('0x2d')]({'where':{'id':_0x344736[_0x8f9a('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2f1002,null))[_0x8f9a('0x31')](function(_0x3a3dea){if(_0x3a3dea){return _0x3a3dea['removeLists'](_0x344736[_0x8f9a('0x39')][_0x8f9a('0x7e')]);}})['then'](function(_0x44945d){if(_0x44945d){return db[_0x8f9a('0x60')][_0x8f9a('0x5d')]({'where':{'ListId':_0x344736[_0x8f9a('0x39')]['ids'],'VoiceQueueId':_0x344736[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](function(){return _0x44945d;});}})[_0x8f9a('0x31')](respondWithStatusCode(_0x2f1002,null))['catch'](handleError(_0x2f1002,null));};exports[_0x8f9a('0xb3')]=function(_0x2b4365,_0x5ce595,_0x271fb8){var _0x5d0e06={};var _0xc5a513={};var _0x153f95;var _0x35b466;return db[_0x8f9a('0x35')][_0x8f9a('0x5f')]({'where':{'id':_0x2b4365[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x5ce595,null))['then'](function(_0x2dcf51){if(_0x2dcf51){_0x153f95=_0x2dcf51;_0xc5a513[_0x8f9a('0x38')]=_[_0x8f9a('0x3a')](db[_0x8f9a('0x98')]['rawAttributes']);_0xc5a513[_0x8f9a('0x39')]=_[_0x8f9a('0x3a')](_0x2b4365[_0x8f9a('0x39')]);_0xc5a513['filters']=_[_0x8f9a('0x3c')](_0xc5a513[_0x8f9a('0x38')],_0xc5a513[_0x8f9a('0x39')]);_0x5d0e06[_0x8f9a('0x3e')]=_['intersection'](_0xc5a513[_0x8f9a('0x38')],qs[_0x8f9a('0x3d')](_0x2b4365['query'][_0x8f9a('0x3d')]));_0x5d0e06[_0x8f9a('0x3e')]=_0x5d0e06[_0x8f9a('0x3e')][_0x8f9a('0x3f')]?_0x5d0e06[_0x8f9a('0x3e')]:_0xc5a513['model'];_0x5d0e06[_0x8f9a('0x42')]=qs['sort'](_0x2b4365[_0x8f9a('0x39')][_0x8f9a('0x43')]);_0x5d0e06[_0x8f9a('0x44')]=qs[_0x8f9a('0x3b')](_['pick'](_0x2b4365[_0x8f9a('0x39')],_0xc5a513[_0x8f9a('0x3b')]));if(_0x2b4365['query'][_0x8f9a('0x29')]){_0x5d0e06[_0x8f9a('0x44')]=_['merge'](_0x5d0e06['where'],{'$or':_['map'](_0x5d0e06[_0x8f9a('0x3e')],function(_0x25cf4a){var _0x30b5dd={};_0x30b5dd[_0x25cf4a]={'$like':'%'+_0x2b4365[_0x8f9a('0x39')][_0x8f9a('0x29')]+'%'};return _0x30b5dd;})});}_0x5d0e06=_[_0x8f9a('0x45')]({},_0x5d0e06,_0x2b4365[_0x8f9a('0x46')]);return _0x153f95['getBlackLists'](_0x5d0e06);}})[_0x8f9a('0x31')](function(_0x45386b){if(_0x45386b){_0x35b466=_0x45386b[_0x8f9a('0x3f')];if(!_0x2b4365[_0x8f9a('0x39')][_0x8f9a('0x61')]('nolimit')){_0x5d0e06['limit']=qs[_0x8f9a('0x20')](_0x2b4365[_0x8f9a('0x39')][_0x8f9a('0x20')]);_0x5d0e06[_0x8f9a('0x41')]=qs[_0x8f9a('0x41')](_0x2b4365[_0x8f9a('0x39')][_0x8f9a('0x41')]);}return _0x153f95[_0x8f9a('0xb3')](_0x5d0e06);}})['then'](function(_0x436d59){if(_0x436d59){return _0x436d59?{'count':_0x35b466,'rows':_0x436d59}:null;}})[_0x8f9a('0x31')](respondWithResult(_0x5ce595,null))[_0x8f9a('0x4d')](handleError(_0x5ce595,null));};exports['addBlackLists']=function(_0x556b09,_0x44e6e0,_0x46663f){var _0x2a2a12,_0x35fc7d;return db['VoiceQueue']['find']({'where':{'id':_0x556b09['params']['id']}})['then'](handleEntityNotFound(_0x44e6e0,null))[_0x8f9a('0x31')](function(_0x3887a4){if(_0x3887a4){_0x35fc7d=_0x3887a4;return _0x3887a4['addBlackLists'](_0x556b09['body'][_0x8f9a('0x7e')],_[_0x8f9a('0x59')](_0x556b09[_0x8f9a('0x4f')],['ids','id'])||{});}return null;})[_0x8f9a('0x93')](function(_0x48cd46){var _0x43462a;_0x2a2a12=_0x48cd46||[];var _0x40f767=[];if(_0x48cd46){for(var _0x4505e2=0x0;_0x4505e2<_0x48cd46['length'];_0x4505e2+=0x1){var _0x4f4b0c=_0x48cd46[_0x4505e2]['get']({'plain':!![]});_0x43462a=squel[_0x8f9a('0xb0')]()[_0x8f9a('0x9d')](_0x8f9a('0xb4'))['fromQuery']([_0x8f9a('0xa1'),_0x8f9a('0x9f'),_0x8f9a('0xa0'),_0x8f9a('0x63'),_0x8f9a('0x57'),'updatedAt'],squel[_0x8f9a('0x80')]()[_0x8f9a('0x81')](_0x8f9a('0xa1'),_0x8f9a('0xa1'))[_0x8f9a('0x81')]('id',_0x8f9a('0x9f'))[_0x8f9a('0x81')](_0x4f4b0c[_0x8f9a('0xa7')]['toString'](),_0x8f9a('0xa0'))[_0x8f9a('0x81')](_0x556b09[_0x8f9a('0x4b')]['id'][_0x8f9a('0x88')](),_0x8f9a('0x63'))[_0x8f9a('0x81')]('NOW()','createdAt')['field']('NOW()',_0x8f9a('0x58'))[_0x8f9a('0xa4')]('cm_contacts')[_0x8f9a('0x44')](_0x8f9a('0xb1'))[_0x8f9a('0x44')]('ListId\x20=\x20?',_0x4f4b0c[_0x8f9a('0xa7')][_0x8f9a('0x88')]())['where'](_0x8f9a('0xa8')))[_0x8f9a('0x88')]();_0x40f767[_0x8f9a('0x87')](db[_0x8f9a('0x73')][_0x8f9a('0x39')](_0x43462a));}return BPromise[_0x8f9a('0x8d')](_0x40f767);}})[_0x8f9a('0x31')](function(){return _0x2a2a12;})[_0x8f9a('0x31')](respondWithResult(_0x44e6e0,null))['catch'](handleError(_0x44e6e0,null));};exports[_0x8f9a('0xb5')]=function(_0x44e582,_0x1699e4,_0x42a41d){return db[_0x8f9a('0x35')]['find']({'where':{'id':_0x44e582['params']['id']}})[_0x8f9a('0x31')](handleEntityNotFound(_0x1699e4,null))['then'](function(_0x128da0){if(_0x128da0){return _0x128da0[_0x8f9a('0xb5')](_0x44e582[_0x8f9a('0x39')][_0x8f9a('0x7e')]);}})[_0x8f9a('0x31')](function(_0x44a0ed){if(_0x44a0ed){return db[_0x8f9a('0x68')]['destroy']({'where':{'ListId':_0x44e582[_0x8f9a('0x39')][_0x8f9a('0x7e')],'VoiceQueueId':_0x44e582[_0x8f9a('0x4b')]['id']}})[_0x8f9a('0x31')](function(){return _0x44a0ed;});}})[_0x8f9a('0x31')](respondWithStatusCode(_0x1699e4,null))[_0x8f9a('0x4d')](handleError(_0x1699e4,null));};
\ No newline at end of file
index bf64afc..a232cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe526=['VoiceQueue','save','update','emit','hasOwnProperty','exports','events'];(function(_0x77ae89,_0x2b65a7){var _0x19d79c=function(_0x5abc0b){while(--_0x5abc0b){_0x77ae89['push'](_0x77ae89['shift']());}};_0x19d79c(++_0x2b65a7);}(_0xe526,0x110));var _0x6e52=function(_0xbbd7a6,_0x5d5401){_0xbbd7a6=_0xbbd7a6-0x0;var _0x5ca437=_0xe526[_0xbbd7a6];return _0x5ca437;};'use strict';var EventEmitter=require(_0x6e52('0x0'));var VoiceQueue=require('../../mysqldb')['db'][_0x6e52('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6e52('0x2'),'afterUpdate':_0x6e52('0x3'),'afterDestroy':'remove'};function emitEvent(_0x22fdcf){return function(_0x14f3b2,_0x59ae07,_0x618127){VoiceQueueEvents[_0x6e52('0x4')](_0x22fdcf+':'+_0x14f3b2['id'],_0x14f3b2);VoiceQueueEvents[_0x6e52('0x4')](_0x22fdcf,_0x14f3b2);_0x618127(null);};}for(var e in events){if(events[_0x6e52('0x5')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x6e52('0x6')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x7197=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','emit'];(function(_0x3270d3,_0x5da638){var _0x11dd4f=function(_0x344bec){while(--_0x344bec){_0x3270d3['push'](_0x3270d3['shift']());}};_0x11dd4f(++_0x5da638);}(_0x7197,0xb3));var _0x7719=function(_0xe6eb27,_0x1c3092){_0xe6eb27=_0xe6eb27-0x0;var _0x33a5b9=_0x7197[_0xe6eb27];return _0x33a5b9;};'use strict';var EventEmitter=require(_0x7719('0x0'));var VoiceQueue=require(_0x7719('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x7719('0x2')](0x0);var events={'afterCreate':_0x7719('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x57cd83){return function(_0x553dbf,_0xedc93d,_0x58cbc0){VoiceQueueEvents[_0x7719('0x4')](_0x57cd83+':'+_0x553dbf['id'],_0x553dbf);VoiceQueueEvents[_0x7719('0x4')](_0x57cd83,_0x553dbf);_0x58cbc0(null);};}for(var e in events){if(events[_0x7719('0x5')](e)){var event=events[e];VoiceQueue[_0x7719('0x6')](e,emitEvent(event));}}module[_0x7719('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index e266c55..d7bb148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x8b631b,_0x386724){var _0x3e6832=function(_0x17a132){while(--_0x17a132){_0x8b631b['push'](_0x8b631b['shift']());}};_0x3e6832(++_0x386724);}(_0x3e74,0x175));var _0x43e7=function(_0x910d00,_0x163970){_0x910d00=_0x910d00-0x0;var _0x450871=_0x3e74[_0x910d00];return _0x450871;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','VoiceQueue','voice_queues','lodash','../../config/logger','api','moment','path','../../config/environment','./voiceQueue.attributes'];(function(_0x49ed67,_0x290989){var _0x1523d5=function(_0x34a179){while(--_0x34a179){_0x49ed67['push'](_0x49ed67['shift']());}};_0x1523d5(++_0x290989);}(_0x3e74,0x175));var _0x43e7=function(_0x2ade9c,_0x186f94){_0x2ade9c=_0x2ade9c-0x0;var _0x2912f5=_0x3e74[_0x2ade9c];return _0x2912f5;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc0e914..477c92e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd7=['VoiceQueue,\x20%s,\x20%s','message','info','catch','GetVoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowVoiceQueue','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','request','then','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','error'];(function(_0x3d92d1,_0x5a935a){var _0x4a2c15=function(_0x396913){while(--_0x396913){_0x3d92d1['push'](_0x3d92d1['shift']());}};_0x4a2c15(++_0x5a935a);}(_0x4dd7,0x179));var _0x74dd=function(_0x2b8a80,_0x1e12e4){_0x2b8a80=_0x2b8a80-0x0;var _0x236825=_0x4dd7[_0x2b8a80];return _0x236825;};'use strict';var _=require(_0x74dd('0x0'));var util=require(_0x74dd('0x1'));var moment=require(_0x74dd('0x2'));var BPromise=require('bluebird');var rs=require(_0x74dd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x74dd('0x4'))['db'];var utils=require(_0x74dd('0x5'));var logger=require(_0x74dd('0x6'))('rpc');var config=require(_0x74dd('0x7'));var jayson=require(_0x74dd('0x8'));var client=jayson[_0x74dd('0x9')][_0x74dd('0xa')]({'port':0x232a});config[_0x74dd('0xb')]=_[_0x74dd('0xc')](config[_0x74dd('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x74dd('0xd'))(new Redis(config[_0x74dd('0xb')]));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x39b9fd,_0x219c3e,_0x235999){return new BPromise(function(_0x29b540,_0x4eb07b){return client[_0x74dd('0xe')](_0x39b9fd,_0x235999)[_0x74dd('0xf')](function(_0x504dcd){logger['info']('VoiceQueue,\x20%s,\x20%s',_0x219c3e,_0x74dd('0x10'));logger['debug'](_0x74dd('0x11'),_0x219c3e,_0x74dd('0x10'),JSON['stringify'](_0x504dcd));if(_0x504dcd[_0x74dd('0x12')]){if(_0x504dcd[_0x74dd('0x12')]['code']===0x1f4){logger[_0x74dd('0x12')](_0x74dd('0x13'),_0x219c3e,_0x504dcd[_0x74dd('0x12')][_0x74dd('0x14')]);return _0x4eb07b(_0x504dcd[_0x74dd('0x12')][_0x74dd('0x14')]);}logger[_0x74dd('0x12')](_0x74dd('0x13'),_0x219c3e,_0x504dcd['error'][_0x74dd('0x14')]);return _0x29b540(_0x504dcd['error'][_0x74dd('0x14')]);}else{logger[_0x74dd('0x15')](_0x74dd('0x13'),_0x219c3e,_0x74dd('0x10'));_0x29b540(_0x504dcd['result'][_0x74dd('0x14')]);}})[_0x74dd('0x16')](function(_0x401b28){logger['error'](_0x74dd('0x13'),_0x219c3e,_0x401b28);_0x4eb07b(_0x401b28);});});}exports[_0x74dd('0x17')]=function(_0x1b6b40){var _0x3e83b8=this;return new Promise(function(_0xe800cb,_0x5773ed){return db['VoiceQueue'][_0x74dd('0x18')]({'raw':_0x1b6b40[_0x74dd('0x19')]?_0x1b6b40[_0x74dd('0x19')][_0x74dd('0x1a')]===undefined?!![]:![]:!![],'where':_0x1b6b40[_0x74dd('0x19')]?_0x1b6b40[_0x74dd('0x19')][_0x74dd('0x1b')]||null:null,'attributes':_0x1b6b40[_0x74dd('0x19')]?_0x1b6b40['options'][_0x74dd('0x1c')]||null:null,'limit':_0x1b6b40[_0x74dd('0x19')]?_0x1b6b40[_0x74dd('0x19')][_0x74dd('0x1d')]||null:null,'include':_0x1b6b40[_0x74dd('0x19')]?_0x1b6b40[_0x74dd('0x19')][_0x74dd('0x1e')]?_[_0x74dd('0x1f')](_0x1b6b40[_0x74dd('0x19')][_0x74dd('0x1e')],function(_0x2d53af){return{'model':db[_0x2d53af[_0x74dd('0x20')]],'as':_0x2d53af['as'],'attributes':_0x2d53af[_0x74dd('0x1c')],'include':_0x2d53af[_0x74dd('0x1e')]?_['map'](_0x2d53af[_0x74dd('0x1e')],function(_0x4b0d03){return{'model':db[_0x4b0d03[_0x74dd('0x20')]],'as':_0x4b0d03['as'],'attributes':_0x4b0d03[_0x74dd('0x1c')],'include':_0x4b0d03[_0x74dd('0x1e')]?_['map'](_0x4b0d03['include'],function(_0x55943d){return{'model':db[_0x55943d['model']],'as':_0x55943d['as'],'attributes':_0x55943d[_0x74dd('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x74dd('0xf')](function(_0x3eafcc){logger[_0x74dd('0x15')](_0x74dd('0x17'),_0x1b6b40);logger[_0x74dd('0x21')](_0x74dd('0x17'),_0x1b6b40,JSON[_0x74dd('0x22')](_0x3eafcc));_0xe800cb(_0x3eafcc);})[_0x74dd('0x16')](function(_0x3fd21d){logger[_0x74dd('0x12')](_0x74dd('0x17'),_0x3fd21d[_0x74dd('0x14')],_0x1b6b40);_0x5773ed(_0x3e83b8[_0x74dd('0x12')](0x1f4,_0x3fd21d[_0x74dd('0x14')]));});});};exports[_0x74dd('0x23')]=function(_0x10567e){var _0x3c3192=this;return new Promise(function(_0x515513,_0x399552){return db['VoiceQueue']['find']({'raw':_0x10567e[_0x74dd('0x19')]?_0x10567e[_0x74dd('0x19')][_0x74dd('0x1a')]===undefined?!![]:![]:!![],'where':_0x10567e[_0x74dd('0x19')]?_0x10567e[_0x74dd('0x19')][_0x74dd('0x1b')]||null:null,'attributes':_0x10567e['options']?_0x10567e['options'][_0x74dd('0x1c')]||null:null,'include':_0x10567e[_0x74dd('0x19')]?_0x10567e[_0x74dd('0x19')]['include']?_[_0x74dd('0x1f')](_0x10567e[_0x74dd('0x19')][_0x74dd('0x1e')],function(_0x527579){return{'model':db[_0x527579[_0x74dd('0x20')]],'as':_0x527579['as'],'attributes':_0x527579[_0x74dd('0x1c')],'include':_0x527579[_0x74dd('0x1e')]?_[_0x74dd('0x1f')](_0x527579[_0x74dd('0x1e')],function(_0x58221c){return{'model':db[_0x58221c[_0x74dd('0x20')]],'as':_0x58221c['as'],'attributes':_0x58221c[_0x74dd('0x1c')],'include':_0x58221c['include']?_[_0x74dd('0x1f')](_0x58221c[_0x74dd('0x1e')],function(_0x1b905d){return{'model':db[_0x1b905d['model']],'as':_0x1b905d['as'],'attributes':_0x1b905d[_0x74dd('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x74dd('0xf')](function(_0x1bf0e0){logger[_0x74dd('0x15')]('ShowVoiceQueue',_0x10567e);logger['debug'](_0x74dd('0x23'),_0x10567e,JSON[_0x74dd('0x22')](_0x1bf0e0));_0x515513(_0x1bf0e0);})[_0x74dd('0x16')](function(_0x49653a){logger[_0x74dd('0x12')]('ShowVoiceQueue',_0x49653a[_0x74dd('0x14')],_0x10567e);_0x399552(_0x3c3192[_0x74dd('0x12')](0x1f4,_0x49653a[_0x74dd('0x14')]));});});};
\ No newline at end of file
+var _0x4666=['info','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','map','include','model','ShowVoiceQueue','find','debug','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./voiceQueue.socket','register','then'];(function(_0x3f2263,_0x5b3500){var _0x31d922=function(_0x36a83e){while(--_0x36a83e){_0x3f2263['push'](_0x3f2263['shift']());}};_0x31d922(++_0x5b3500);}(_0x4666,0xb8));var _0x6466=function(_0xd477e4,_0x42db12){_0xd477e4=_0xd477e4-0x0;var _0x4826f5=_0x4666[_0xd477e4];return _0x4826f5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6466('0x0'));var BPromise=require(_0x6466('0x1'));var rs=require(_0x6466('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6466('0x3'))['db'];var utils=require(_0x6466('0x4'));var logger=require(_0x6466('0x5'))(_0x6466('0x6'));var config=require(_0x6466('0x7'));var jayson=require(_0x6466('0x8'));var client=jayson['client'][_0x6466('0x9')]({'port':0x232a});config[_0x6466('0xa')]=_[_0x6466('0xb')](config[_0x6466('0xa')],{'host':_0x6466('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6466('0xd'))[_0x6466('0xe')](socket);function respondWithRpcPromise(_0x18ad00,_0x2e03ac,_0x4617b5){return new BPromise(function(_0x59be97,_0x3d9ccc){return client['request'](_0x18ad00,_0x4617b5)[_0x6466('0xf')](function(_0x157bcc){logger[_0x6466('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x2e03ac,_0x6466('0x11'));logger['debug'](_0x6466('0x12'),_0x2e03ac,_0x6466('0x11'),JSON[_0x6466('0x13')](_0x157bcc));if(_0x157bcc[_0x6466('0x14')]){if(_0x157bcc[_0x6466('0x14')][_0x6466('0x15')]===0x1f4){logger[_0x6466('0x14')](_0x6466('0x16'),_0x2e03ac,_0x157bcc['error']['message']);return _0x3d9ccc(_0x157bcc['error'][_0x6466('0x17')]);}logger[_0x6466('0x14')](_0x6466('0x16'),_0x2e03ac,_0x157bcc['error'][_0x6466('0x17')]);return _0x59be97(_0x157bcc[_0x6466('0x14')][_0x6466('0x17')]);}else{logger[_0x6466('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x2e03ac,_0x6466('0x11'));_0x59be97(_0x157bcc[_0x6466('0x18')][_0x6466('0x17')]);}})[_0x6466('0x19')](function(_0x1aa767){logger['error'](_0x6466('0x16'),_0x2e03ac,_0x1aa767);_0x3d9ccc(_0x1aa767);});});}exports[_0x6466('0x1a')]=function(_0x16cdc6){var _0x5d8d4b=this;return new Promise(function(_0x17e2e7,_0x3fbe94){return db[_0x6466('0x1b')][_0x6466('0x1c')]({'raw':_0x16cdc6[_0x6466('0x1d')]?_0x16cdc6[_0x6466('0x1d')][_0x6466('0x1e')]===undefined?!![]:![]:!![],'where':_0x16cdc6['options']?_0x16cdc6[_0x6466('0x1d')][_0x6466('0x1f')]||null:null,'attributes':_0x16cdc6['options']?_0x16cdc6[_0x6466('0x1d')][_0x6466('0x20')]||null:null,'limit':_0x16cdc6[_0x6466('0x1d')]?_0x16cdc6['options'][_0x6466('0x21')]||null:null,'include':_0x16cdc6[_0x6466('0x1d')]?_0x16cdc6[_0x6466('0x1d')]['include']?_[_0x6466('0x22')](_0x16cdc6[_0x6466('0x1d')][_0x6466('0x23')],function(_0xd29aa2){return{'model':db[_0xd29aa2[_0x6466('0x24')]],'as':_0xd29aa2['as'],'attributes':_0xd29aa2[_0x6466('0x20')],'include':_0xd29aa2['include']?_[_0x6466('0x22')](_0xd29aa2[_0x6466('0x23')],function(_0x11d19d){return{'model':db[_0x11d19d[_0x6466('0x24')]],'as':_0x11d19d['as'],'attributes':_0x11d19d[_0x6466('0x20')],'include':_0x11d19d[_0x6466('0x23')]?_[_0x6466('0x22')](_0x11d19d[_0x6466('0x23')],function(_0x58a0df){return{'model':db[_0x58a0df[_0x6466('0x24')]],'as':_0x58a0df['as'],'attributes':_0x58a0df['attributes']};}):[]};}):[]};}):[]:[]})[_0x6466('0xf')](function(_0x2da460){logger['info']('GetVoiceQueue',_0x16cdc6);logger['debug'](_0x6466('0x1a'),_0x16cdc6,JSON[_0x6466('0x13')](_0x2da460));_0x17e2e7(_0x2da460);})[_0x6466('0x19')](function(_0x165f09){logger[_0x6466('0x14')](_0x6466('0x1a'),_0x165f09['message'],_0x16cdc6);_0x3fbe94(_0x5d8d4b['error'](0x1f4,_0x165f09[_0x6466('0x17')]));});});};exports[_0x6466('0x25')]=function(_0xe4393e){var _0xea13f2=this;return new Promise(function(_0x2c1dfb,_0x56e026){return db[_0x6466('0x1b')][_0x6466('0x26')]({'raw':_0xe4393e['options']?_0xe4393e[_0x6466('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0xe4393e[_0x6466('0x1d')]?_0xe4393e['options'][_0x6466('0x1f')]||null:null,'attributes':_0xe4393e[_0x6466('0x1d')]?_0xe4393e[_0x6466('0x1d')]['attributes']||null:null,'include':_0xe4393e['options']?_0xe4393e['options']['include']?_[_0x6466('0x22')](_0xe4393e[_0x6466('0x1d')][_0x6466('0x23')],function(_0x5803d2){return{'model':db[_0x5803d2[_0x6466('0x24')]],'as':_0x5803d2['as'],'attributes':_0x5803d2[_0x6466('0x20')],'include':_0x5803d2[_0x6466('0x23')]?_[_0x6466('0x22')](_0x5803d2[_0x6466('0x23')],function(_0x4fe30e){return{'model':db[_0x4fe30e['model']],'as':_0x4fe30e['as'],'attributes':_0x4fe30e[_0x6466('0x20')],'include':_0x4fe30e[_0x6466('0x23')]?_[_0x6466('0x22')](_0x4fe30e[_0x6466('0x23')],function(_0x78e104){return{'model':db[_0x78e104[_0x6466('0x24')]],'as':_0x78e104['as'],'attributes':_0x78e104['attributes']};}):[]};}):[]};}):[]:[]})[_0x6466('0xf')](function(_0x1c79e6){logger[_0x6466('0x10')](_0x6466('0x25'),_0xe4393e);logger[_0x6466('0x27')]('ShowVoiceQueue',_0xe4393e,JSON[_0x6466('0x13')](_0x1c79e6));_0x2c1dfb(_0x1c79e6);})[_0x6466('0x19')](function(_0x554a5f){logger[_0x6466('0x14')](_0x6466('0x25'),_0x554a5f[_0x6466('0x17')],_0xe4393e);_0x56e026(_0xea13f2['error'](0x1f4,_0x554a5f[_0x6466('0x17')]));});});};
\ No newline at end of file
index 1e1a813..416a01d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14ad=['voiceQueue:','./voiceQueue.events','save','remove','update','removeListener','register'];(function(_0x44bd3a,_0x2d3b79){var _0x1ed9d6=function(_0x159880){while(--_0x159880){_0x44bd3a['push'](_0x44bd3a['shift']());}};_0x1ed9d6(++_0x2d3b79);}(_0x14ad,0x112));var _0xd14a=function(_0x23e7c1,_0x35110c){_0x23e7c1=_0x23e7c1-0x0;var _0x1add43=_0x14ad[_0x23e7c1];return _0x1add43;};'use strict';var VoiceQueueEvents=require(_0xd14a('0x0'));var events=[_0xd14a('0x1'),_0xd14a('0x2'),_0xd14a('0x3')];function createListener(_0x1db0c7,_0x97dca6){return function(_0x1f511b){_0x97dca6['emit'](_0x1db0c7,_0x1f511b);};}function removeListener(_0x38d28a,_0x3f72e7){return function(){VoiceQueueEvents[_0xd14a('0x4')](_0x38d28a,_0x3f72e7);};}exports[_0xd14a('0x5')]=function(_0x797e90){for(var _0x2e888f=0x0,_0x1c9092=events['length'];_0x2e888f<_0x1c9092;_0x2e888f++){var _0x482ede=events[_0x2e888f];var _0x3b6be8=createListener(_0xd14a('0x6')+_0x482ede,_0x797e90);VoiceQueueEvents['on'](_0x482ede,_0x3b6be8);}};
\ No newline at end of file
+var _0x959c=['emit','removeListener','register','length','voiceQueue:','./voiceQueue.events','update'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x959c,0xec));var _0xc959=function(_0x3b3755,_0x50279a){_0x3b3755=_0x3b3755-0x0;var _0x264abc=_0x959c[_0x3b3755];return _0x264abc;};'use strict';var VoiceQueueEvents=require(_0xc959('0x0'));var events=['save','remove',_0xc959('0x1')];function createListener(_0x28aa9c,_0x281092){return function(_0xab1e8b){_0x281092[_0xc959('0x2')](_0x28aa9c,_0xab1e8b);};}function removeListener(_0x496ee5,_0x11d624){return function(){VoiceQueueEvents[_0xc959('0x3')](_0x496ee5,_0x11d624);};}exports[_0xc959('0x4')]=function(_0x1d8745){for(var _0x181b49=0x0,_0x47c984=events[_0xc959('0x5')];_0x181b49<_0x47c984;_0x181b49++){var _0x61eb39=events[_0x181b49];var _0x1b0ae8=createListener(_0xc959('0x6')+_0x61eb39,_0x1d8745);VoiceQueueEvents['on'](_0x61eb39,_0x1b0ae8);}};
\ No newline at end of file
index 0eb16e4..a1fa049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98f6=['Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','/describe','get','/index','getVoiceQueuesReport','/:id','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3bf9d9,_0x467dd6){var _0x3f5055=function(_0xd67f78){while(--_0xd67f78){_0x3bf9d9['push'](_0x3bf9d9['shift']());}};_0x3f5055(++_0x467dd6);}(_0x98f6,0x199));var _0x698f=function(_0xf5ed1b,_0x33a489){_0xf5ed1b=_0xf5ed1b-0x0;var _0x5ecbdb=_0x98f6[_0xf5ed1b];return _0x5ecbdb;};'use strict';var multer=require(_0x698f('0x0'));var util=require(_0x698f('0x1'));var path=require(_0x698f('0x2'));var timeout=require(_0x698f('0x3'));var express=require(_0x698f('0x4'));var router=express[_0x698f('0x5')]();var fs_extra=require(_0x698f('0x6'));var auth=require(_0x698f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x698f('0x8'));var controller=require(_0x698f('0x9'));router['get']('/',auth[_0x698f('0xa')](),controller[_0x698f('0xb')]);router['get'](_0x698f('0xc'),auth[_0x698f('0xa')](),controller['describe']);router[_0x698f('0xd')](_0x698f('0xe'),auth[_0x698f('0xa')](),controller[_0x698f('0xf')]);router['get'](_0x698f('0x10'),auth[_0x698f('0xa')](),controller['show']);router['post']('/',auth[_0x698f('0xa')](),controller[_0x698f('0x11')]);router[_0x698f('0x12')](_0x698f('0x10'),auth['isAuthenticated'](),controller[_0x698f('0x13')]);router[_0x698f('0x14')](_0x698f('0x10'),auth[_0x698f('0xa')](),controller[_0x698f('0x15')]);module[_0x698f('0x16')]=router;
\ No newline at end of file
+var _0x17c7=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','/index','/:id','show','post','put','update','delete','destroy','multer','path'];(function(_0x14a496,_0x508bc7){var _0x362ce7=function(_0x52b806){while(--_0x52b806){_0x14a496['push'](_0x14a496['shift']());}};_0x362ce7(++_0x508bc7);}(_0x17c7,0x7c));var _0x717c=function(_0x40059b,_0x47d59e){_0x40059b=_0x40059b-0x0;var _0x34ec5c=_0x17c7[_0x40059b];return _0x34ec5c;};'use strict';var multer=require(_0x717c('0x0'));var util=require('util');var path=require(_0x717c('0x1'));var timeout=require(_0x717c('0x2'));var express=require(_0x717c('0x3'));var router=express[_0x717c('0x4')]();var fs_extra=require(_0x717c('0x5'));var auth=require(_0x717c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x717c('0x7'));var controller=require(_0x717c('0x8'));router[_0x717c('0x9')]('/',auth[_0x717c('0xa')](),controller[_0x717c('0xb')]);router[_0x717c('0x9')](_0x717c('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x717c('0x9')](_0x717c('0xd'),auth['isAuthenticated'](),controller['getVoiceQueuesReport']);router[_0x717c('0x9')](_0x717c('0xe'),auth['isAuthenticated'](),controller[_0x717c('0xf')]);router[_0x717c('0x10')]('/',auth[_0x717c('0xa')](),controller['create']);router[_0x717c('0x11')](_0x717c('0xe'),auth[_0x717c('0xa')](),controller[_0x717c('0x12')]);router[_0x717c('0x13')](_0x717c('0xe'),auth[_0x717c('0xa')](),controller[_0x717c('0x14')]);module['exports']=router;
\ No newline at end of file
index 3725d98..54fb481 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f8=['exports','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','holdtime','INTEGER','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x14f8,0x1cc));var _0x814f=function(_0xe282da,_0x3a1d23){_0xe282da=_0xe282da-0x0;var _0x41a3fd=_0x14f8[_0xe282da];return _0x41a3fd;};'use strict';var Sequelize=require(_0x814f('0x0'));var moment=require(_0x814f('0x1'));module[_0x814f('0x2')]={'type':{'type':Sequelize[_0x814f('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x814f('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x814f('0x4')],'set':function(_0x927080){var _0x237b2a=moment(_0x927080);var _0x41575e=moment(this['getDataValue'](_0x814f('0x5')))['format'](_0x814f('0x6'));var _0x46f670=_0x237b2a[_0x814f('0x7')](_0x41575e,_0x814f('0x8'));this['setDataValue']('queuecallerleaveAt',_0x927080);this['setDataValue'](_0x814f('0x9'),_0x46f670||null);}},'position':{'type':Sequelize[_0x814f('0xa')]},'count':{'type':Sequelize[_0x814f('0xa')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x814f('0x4')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x814f('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x814f('0x3')],'comment':_0x814f('0xb')},'originalposition':{'type':Sequelize[_0x814f('0xa')]},'channel':{'type':Sequelize[_0x814f('0x3')]},'connectedlinenum':{'type':Sequelize[_0x814f('0x3')]},'connectedlinename':{'type':Sequelize[_0x814f('0x3')]},'accountcode':{'type':Sequelize[_0x814f('0x3')]},'context':{'type':Sequelize[_0x814f('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x814f('0x3')]},'holdtime':{'type':Sequelize[_0x814f('0xa')]},'mohtime':{'type':Sequelize[_0x814f('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x814f('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x814f('0x3')]},'transfer':{'type':Sequelize[_0x814f('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x814f('0xd')},'transferexten':{'type':Sequelize[_0x814f('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x814f('0x3')]},'secondDisposition':{'type':Sequelize[_0x814f('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb426=['INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING','DATE','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xb426,0x1a8));var _0x6b42=function(_0x13ede1,_0x4b0a8d){_0x13ede1=_0x13ede1-0x0;var _0x2b93d7=_0xb426[_0x13ede1];return _0x2b93d7;};'use strict';var Sequelize=require(_0x6b42('0x0'));var moment=require('moment');module['exports']={'type':{'type':Sequelize[_0x6b42('0x1')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x6b42('0x1')]},'calleridname':{'type':Sequelize[_0x6b42('0x1')]},'queue':{'type':Sequelize[_0x6b42('0x1')]},'queuecallerjoinAt':{'type':Sequelize[_0x6b42('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0x6b42('0x2')],'set':function(_0x569194){var _0x4fddfd=moment(_0x569194);var _0x3de2c1=moment(this['getDataValue'](_0x6b42('0x3')))[_0x6b42('0x4')](_0x6b42('0x5'));var _0x3e8ba6=_0x4fddfd['diff'](_0x3de2c1,_0x6b42('0x6'));this['setDataValue']('queuecallerleaveAt',_0x569194);this[_0x6b42('0x7')]('holdtime',_0x3e8ba6||null);}},'position':{'type':Sequelize[_0x6b42('0x8')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0x6b42('0x9')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x6b42('0x9')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x6b42('0x2')]},'queuecallerexit':{'type':Sequelize[_0x6b42('0x9')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x6b42('0x2')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x6b42('0xa')},'originalposition':{'type':Sequelize[_0x6b42('0x8')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x6b42('0x1')]},'connectedlinename':{'type':Sequelize[_0x6b42('0x1')]},'accountcode':{'type':Sequelize[_0x6b42('0x1')]},'context':{'type':Sequelize[_0x6b42('0x1')]},'exten':{'type':Sequelize[_0x6b42('0x1')]},'priority':{'type':Sequelize[_0x6b42('0x1')]},'holdtime':{'type':Sequelize[_0x6b42('0x8')]},'mohtime':{'type':Sequelize[_0x6b42('0x8')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x6b42('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x6b42('0x1')],'comment':_0x6b42('0xb')},'transferexten':{'type':Sequelize[_0x6b42('0x1')]},'transferuniqueid':{'type':Sequelize[_0x6b42('0x1')]},'disposition':{'type':Sequelize[_0x6b42('0x1')]},'secondDisposition':{'type':Sequelize[_0x6b42('0x1')]},'thirdDisposition':{'type':Sequelize[_0x6b42('0x1')]},'queuecallerenterreason':{'type':Sequelize[_0x6b42('0x8')],'defaultValue':0x0}};
\ No newline at end of file
index 3c30f41..34ac39b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6af6=['redis','defaults','localhost','./voiceQueueReport.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','VoiceQueueReport','rawAttributes','type','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','rows','catch','show','create','body','find','params','describe','include','findAll','getVoiceQueuesReport','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x6af6,0x181));var _0x66af=function(_0x3742f0,_0x3ca596){_0x3742f0=_0x3742f0-0x0;var _0x112ad1=_0x6af6[_0x3742f0];return _0x112ad1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x66af('0x0'));var zipdir=require(_0x66af('0x1'));var jsonpatch=require(_0x66af('0x2'));var rp=require(_0x66af('0x3'));var moment=require(_0x66af('0x4'));var BPromise=require(_0x66af('0x5'));var Mustache=require(_0x66af('0x6'));var util=require('util');var path=require(_0x66af('0x7'));var sox=require(_0x66af('0x8'));var csv=require(_0x66af('0x9'));var ejs=require(_0x66af('0xa'));var fs=require('fs');var fs_extra=require(_0x66af('0xb'));var _=require(_0x66af('0xc'));var squel=require(_0x66af('0xd'));var crypto=require('crypto');var jsforce=require(_0x66af('0xe'));var deskjs=require(_0x66af('0xf'));var toCsv=require(_0x66af('0x9'));var querystring=require(_0x66af('0x10'));var Papa=require(_0x66af('0x11'));var Redis=require(_0x66af('0x12'));var authService=require(_0x66af('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x66af('0x14'));var logger=require('../../config/logger')(_0x66af('0x15'));var utils=require(_0x66af('0x16'));var config=require(_0x66af('0x17'));var licenseUtil=require(_0x66af('0x18'));var db=require('../../mysqldb')['db'];config[_0x66af('0x19')]=_[_0x66af('0x1a')](config[_0x66af('0x19')],{'host':_0x66af('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x66af('0x19')]));require(_0x66af('0x1c'))[_0x66af('0x1d')](socket);function respondWithStatusCode(_0x3878b5,_0x32262f){_0x32262f=_0x32262f||0xcc;return function(_0x5bb527){if(_0x5bb527){return _0x3878b5[_0x66af('0x1e')](_0x32262f);}return _0x3878b5[_0x66af('0x1f')](_0x32262f)[_0x66af('0x20')]();};}function respondWithResult(_0x50d8ec,_0x575121){_0x575121=_0x575121||0xc8;return function(_0x5b326c){if(_0x5b326c){return _0x50d8ec[_0x66af('0x1f')](_0x575121)[_0x66af('0x21')](_0x5b326c);}};}function respondWithFilteredResult(_0x57d8e7,_0x304a73){return function(_0x3fef7d){if(_0x3fef7d){var _0x5a7087=typeof _0x304a73['offset']===_0x66af('0x22')&&typeof _0x304a73[_0x66af('0x23')]===_0x66af('0x22');var _0xfc6152=_0x3fef7d[_0x66af('0x24')];var _0xdf3d8=_0x5a7087?0x0:_0x304a73['offset'];var _0x2c724e=_0x5a7087?_0x3fef7d['count']:_0x304a73[_0x66af('0x25')]+_0x304a73[_0x66af('0x23')];var _0x338a23;if(_0x2c724e>=_0xfc6152){_0x2c724e=_0xfc6152;_0x338a23=0xc8;}else{_0x338a23=0xce;}_0x57d8e7[_0x66af('0x1f')](_0x338a23);return _0x57d8e7['set'](_0x66af('0x26'),_0xdf3d8+'-'+_0x2c724e+'/'+_0xfc6152)[_0x66af('0x21')](_0x3fef7d);}return null;};}function patchUpdates(_0x54f555){return function(_0x1d6ea1){try{jsonpatch[_0x66af('0x27')](_0x1d6ea1,_0x54f555,!![]);}catch(_0x21ece1){return BPromise[_0x66af('0x28')](_0x21ece1);}return _0x1d6ea1[_0x66af('0x29')]();};}function saveUpdates(_0x2a30d0,_0x1e378b){return function(_0x4204d2){if(_0x4204d2){return _0x4204d2[_0x66af('0x2a')](_0x2a30d0)[_0x66af('0x2b')](function(_0x531fb7){return _0x531fb7;});}return null;};}function removeEntity(_0x318fd2,_0x39daf3){return function(_0x19b8bc){if(_0x19b8bc){return _0x19b8bc[_0x66af('0x2c')]()['then'](function(){_0x318fd2[_0x66af('0x1f')](0xcc)[_0x66af('0x20')]();});}};}function handleEntityNotFound(_0x3b6560,_0x177fef){return function(_0x3e251a){if(!_0x3e251a){_0x3b6560[_0x66af('0x1e')](0x194);}return _0x3e251a;};}function handleError(_0x35a635,_0x127885){_0x127885=_0x127885||0x1f4;return function(_0x15e356){logger[_0x66af('0x2d')](_0x15e356[_0x66af('0x2e')]);if(_0x15e356[_0x66af('0x2f')]){delete _0x15e356['name'];}_0x35a635['status'](_0x127885)[_0x66af('0x30')](_0x15e356);};}exports['index']=function(_0x42c46b,_0x36d9a7){var _0x394b81={},_0xaf12cd={},_0x29ebfc={'count':0x0,'rows':[]};var _0x24b4c9=_['map'](db[_0x66af('0x31')][_0x66af('0x32')],function(_0x340c48){return{'name':_0x340c48['fieldName'],'type':_0x340c48[_0x66af('0x33')]['key']};});_0xaf12cd['model']=_[_0x66af('0x34')](_0x24b4c9,'name');_0xaf12cd[_0x66af('0x35')]=_[_0x66af('0x36')](_0x42c46b[_0x66af('0x35')]);_0xaf12cd['filters']=_[_0x66af('0x37')](_0xaf12cd[_0x66af('0x38')],_0xaf12cd[_0x66af('0x35')]);_0x394b81[_0x66af('0x39')]=_['intersection'](_0xaf12cd[_0x66af('0x38')],qs[_0x66af('0x3a')](_0x42c46b[_0x66af('0x35')][_0x66af('0x3a')]));_0x394b81[_0x66af('0x39')]=_0x394b81[_0x66af('0x39')][_0x66af('0x3b')]?_0x394b81[_0x66af('0x39')]:_0xaf12cd['model'];if(!_0x42c46b[_0x66af('0x35')][_0x66af('0x3c')](_0x66af('0x3d'))){_0x394b81[_0x66af('0x23')]=qs[_0x66af('0x23')](_0x42c46b[_0x66af('0x35')][_0x66af('0x23')]);_0x394b81[_0x66af('0x25')]=qs[_0x66af('0x25')](_0x42c46b['query'][_0x66af('0x25')]);}_0x394b81[_0x66af('0x3e')]=qs[_0x66af('0x3f')](_0x42c46b['query']['sort']);_0x394b81[_0x66af('0x40')]=qs[_0x66af('0x41')](_[_0x66af('0x42')](_0x42c46b[_0x66af('0x35')],_0xaf12cd['filters']),_0x24b4c9);if(_0x42c46b[_0x66af('0x35')][_0x66af('0x43')]){_0x394b81[_0x66af('0x40')]=_[_0x66af('0x44')](_0x394b81[_0x66af('0x40')],{'$or':_[_0x66af('0x34')](_0x24b4c9,function(_0x18d3ea){if(_0x18d3ea[_0x66af('0x33')]!=='VIRTUAL'){var _0x120302={};_0x120302[_0x18d3ea[_0x66af('0x2f')]]={'$like':'%'+_0x42c46b['query'][_0x66af('0x43')]+'%'};return _0x120302;}})});}_0x394b81=_[_0x66af('0x44')]({},_0x394b81,_0x42c46b[_0x66af('0x45')]);var _0x2ec36b={'where':_0x394b81[_0x66af('0x40')]};return db['VoiceQueueReport'][_0x66af('0x24')](_0x2ec36b)[_0x66af('0x2b')](function(_0x150a3a){_0x29ebfc['count']=_0x150a3a;if(_0x42c46b[_0x66af('0x35')][_0x66af('0x46')]){_0x394b81['include']=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x394b81);})[_0x66af('0x2b')](function(_0x21bec1){_0x29ebfc[_0x66af('0x47')]=_0x21bec1;return _0x29ebfc;})['then'](respondWithFilteredResult(_0x36d9a7,_0x394b81))[_0x66af('0x48')](handleError(_0x36d9a7,null));};exports[_0x66af('0x49')]=function(_0x253923,_0x1c1fb2){var _0x59a615={'raw':![],'where':{'id':_0x253923['params']['id']}},_0x4f28fa={};_0x4f28fa['model']=_['keys'](db[_0x66af('0x31')]['rawAttributes']);_0x4f28fa[_0x66af('0x35')]=_['keys'](_0x253923[_0x66af('0x35')]);_0x4f28fa[_0x66af('0x41')]=_[_0x66af('0x37')](_0x4f28fa['model'],_0x4f28fa[_0x66af('0x35')]);_0x59a615[_0x66af('0x39')]=_[_0x66af('0x37')](_0x4f28fa[_0x66af('0x38')],qs[_0x66af('0x3a')](_0x253923[_0x66af('0x35')]['fields']));_0x59a615[_0x66af('0x39')]=_0x59a615[_0x66af('0x39')]['length']?_0x59a615[_0x66af('0x39')]:_0x4f28fa[_0x66af('0x38')];if(_0x253923[_0x66af('0x35')][_0x66af('0x46')]){_0x59a615['include']=[{'all':!![]}];}_0x59a615=_[_0x66af('0x44')]({},_0x59a615,_0x253923[_0x66af('0x45')]);return db[_0x66af('0x31')]['find'](_0x59a615)[_0x66af('0x2b')](handleEntityNotFound(_0x1c1fb2,null))[_0x66af('0x2b')](respondWithResult(_0x1c1fb2,null))[_0x66af('0x48')](handleError(_0x1c1fb2,null));};exports[_0x66af('0x4a')]=function(_0x21c97f,_0x5136a2){return db[_0x66af('0x31')][_0x66af('0x4a')](_0x21c97f[_0x66af('0x4b')],{})['then'](respondWithResult(_0x5136a2,0xc9))[_0x66af('0x48')](handleError(_0x5136a2,null));};exports[_0x66af('0x2a')]=function(_0x5d89c7,_0x1c39ab){if(_0x5d89c7[_0x66af('0x4b')]['id']){delete _0x5d89c7[_0x66af('0x4b')]['id'];}return db['VoiceQueueReport'][_0x66af('0x4c')]({'where':{'id':_0x5d89c7['params']['id']}})['then'](handleEntityNotFound(_0x1c39ab,null))[_0x66af('0x2b')](saveUpdates(_0x5d89c7[_0x66af('0x4b')],null))['then'](respondWithResult(_0x1c39ab,null))[_0x66af('0x48')](handleError(_0x1c39ab,null));};exports['destroy']=function(_0x43a2b3,_0x48b1ec){return db['VoiceQueueReport']['find']({'where':{'id':_0x43a2b3[_0x66af('0x4d')]['id']}})[_0x66af('0x2b')](handleEntityNotFound(_0x48b1ec,null))[_0x66af('0x2b')](removeEntity(_0x48b1ec,null))[_0x66af('0x48')](handleError(_0x48b1ec,null));};exports[_0x66af('0x4e')]=function(_0x159cec,_0x36ccb5){return db[_0x66af('0x31')]['describe']()[_0x66af('0x2b')](respondWithResult(_0x36ccb5,null))['catch'](handleError(_0x36ccb5,null));};exports['getVoiceQueuesReport']=function(_0x329e73,_0x1ce584){var _0x32febd={},_0x1219f6={},_0x2bced3={'count':0x0,'rows':[]};_0x1219f6[_0x66af('0x38')]=_[_0x66af('0x36')](db[_0x66af('0x31')][_0x66af('0x32')]);_0x1219f6['query']=_[_0x66af('0x36')](_0x329e73[_0x66af('0x35')]);_0x1219f6[_0x66af('0x41')]=_[_0x66af('0x37')](_0x1219f6[_0x66af('0x38')],_0x1219f6[_0x66af('0x35')]);_0x32febd[_0x66af('0x39')]=_[_0x66af('0x37')](_0x1219f6[_0x66af('0x38')],qs[_0x66af('0x3a')](_0x329e73[_0x66af('0x35')][_0x66af('0x3a')]));_0x32febd[_0x66af('0x39')]=_0x32febd[_0x66af('0x39')][_0x66af('0x3b')]?_0x32febd[_0x66af('0x39')]:_0x1219f6[_0x66af('0x38')];if(!_0x329e73[_0x66af('0x35')][_0x66af('0x3c')](_0x66af('0x3d'))){_0x32febd['limit']=qs[_0x66af('0x23')](_0x329e73[_0x66af('0x35')][_0x66af('0x23')]);_0x32febd[_0x66af('0x25')]=qs[_0x66af('0x25')](_0x329e73[_0x66af('0x35')][_0x66af('0x25')]);}_0x32febd[_0x66af('0x3e')]=qs['sort'](_0x329e73[_0x66af('0x35')][_0x66af('0x3f')]);_0x32febd[_0x66af('0x40')]=qs['filters'](_[_0x66af('0x42')](_0x329e73['query'],_0x1219f6['filters']));if(_0x329e73[_0x66af('0x35')][_0x66af('0x43')]){_0x32febd['where']=_[_0x66af('0x44')](_0x32febd[_0x66af('0x40')],{'$or':_[_0x66af('0x34')](_0x32febd[_0x66af('0x39')],function(_0x344921){var _0x9c7c2f={};_0x9c7c2f[_0x344921]={'$like':'%'+_0x329e73[_0x66af('0x35')][_0x66af('0x43')]+'%'};return _0x9c7c2f;})});}_0x32febd=_['merge']({},_0x32febd,_0x329e73[_0x66af('0x45')]);var _0x200761={'where':_0x32febd[_0x66af('0x40')]};return db[_0x66af('0x31')]['count'](_0x200761)[_0x66af('0x2b')](function(_0x187217){_0x2bced3[_0x66af('0x24')]=_0x187217;if(_0x329e73['query'][_0x66af('0x46')]){_0x32febd[_0x66af('0x4f')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x66af('0x50')](_0x32febd);})[_0x66af('0x2b')](function(_0x1da7aa){_0x2bced3['rows']=_0x1da7aa;return _0x2bced3;})[_0x66af('0x2b')](respondWithFilteredResult(_0x1ce584,_0x32febd,_0x66af('0x51')))['catch'](handleError(_0x1ce584,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0x81c6=['then','error','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','VoiceQueueReport','includeAll','include','rows','catch','params','find','create','body','update','describe','hasOwnProperty','getVoiceQueuesReport','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save'];(function(_0x525c9f,_0x5218a0){var _0x51d6db=function(_0x4f4e15){while(--_0x4f4e15){_0x525c9f['push'](_0x525c9f['shift']());}};_0x51d6db(++_0x5218a0);}(_0x81c6,0x1b8));var _0x681c=function(_0x574dea,_0x4cf209){_0x574dea=_0x574dea-0x0;var _0x3ed444=_0x81c6[_0x574dea];return _0x3ed444;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x681c('0x0'));var zipdir=require(_0x681c('0x1'));var jsonpatch=require(_0x681c('0x2'));var rp=require(_0x681c('0x3'));var moment=require(_0x681c('0x4'));var BPromise=require(_0x681c('0x5'));var Mustache=require('mustache');var util=require(_0x681c('0x6'));var path=require(_0x681c('0x7'));var sox=require('sox');var csv=require(_0x681c('0x8'));var ejs=require(_0x681c('0x9'));var fs=require('fs');var fs_extra=require(_0x681c('0xa'));var _=require(_0x681c('0xb'));var squel=require(_0x681c('0xc'));var crypto=require('crypto');var jsforce=require(_0x681c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x681c('0xe'));var Papa=require(_0x681c('0xf'));var Redis=require(_0x681c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x681c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x681c('0x12'));var logger=require(_0x681c('0x13'))(_0x681c('0x14'));var utils=require(_0x681c('0x15'));var config=require(_0x681c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x681c('0x17'))['db'];config[_0x681c('0x18')]=_[_0x681c('0x19')](config[_0x681c('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x681c('0x1a'))(new Redis(config[_0x681c('0x18')]));require('./voiceQueueReport.socket')[_0x681c('0x1b')](socket);function respondWithStatusCode(_0x5c7c08,_0x14bca8){_0x14bca8=_0x14bca8||0xcc;return function(_0x425458){if(_0x425458){return _0x5c7c08[_0x681c('0x1c')](_0x14bca8);}return _0x5c7c08[_0x681c('0x1d')](_0x14bca8)[_0x681c('0x1e')]();};}function respondWithResult(_0x3ef3e7,_0x4d7a97){_0x4d7a97=_0x4d7a97||0xc8;return function(_0x200eb3){if(_0x200eb3){return _0x3ef3e7[_0x681c('0x1d')](_0x4d7a97)[_0x681c('0x1f')](_0x200eb3);}};}function respondWithFilteredResult(_0xbb92c0,_0x24bf97){return function(_0x43d6d1){if(_0x43d6d1){var _0x60f5d7=typeof _0x24bf97[_0x681c('0x20')]===_0x681c('0x21')&&typeof _0x24bf97['limit']===_0x681c('0x21');var _0x461cfb=_0x43d6d1[_0x681c('0x22')];var _0x13c663=_0x60f5d7?0x0:_0x24bf97['offset'];var _0x415db8=_0x60f5d7?_0x43d6d1[_0x681c('0x22')]:_0x24bf97['offset']+_0x24bf97[_0x681c('0x23')];var _0x277f15;if(_0x415db8>=_0x461cfb){_0x415db8=_0x461cfb;_0x277f15=0xc8;}else{_0x277f15=0xce;}_0xbb92c0[_0x681c('0x1d')](_0x277f15);return _0xbb92c0[_0x681c('0x24')](_0x681c('0x25'),_0x13c663+'-'+_0x415db8+'/'+_0x461cfb)[_0x681c('0x1f')](_0x43d6d1);}return null;};}function patchUpdates(_0x14fae2){return function(_0x4e9f77){try{jsonpatch['apply'](_0x4e9f77,_0x14fae2,!![]);}catch(_0x2c949d){return BPromise[_0x681c('0x26')](_0x2c949d);}return _0x4e9f77[_0x681c('0x27')]();};}function saveUpdates(_0x55d7ed,_0x3e6ecf){return function(_0x4ff16d){if(_0x4ff16d){return _0x4ff16d['update'](_0x55d7ed)[_0x681c('0x28')](function(_0x54fa3b){return _0x54fa3b;});}return null;};}function removeEntity(_0x5b1962,_0x54a251){return function(_0x353470){if(_0x353470){return _0x353470['destroy']()['then'](function(){_0x5b1962[_0x681c('0x1d')](0xcc)[_0x681c('0x1e')]();});}};}function handleEntityNotFound(_0x19e8b6,_0x5cfd68){return function(_0x193a8e){if(!_0x193a8e){_0x19e8b6['sendStatus'](0x194);}return _0x193a8e;};}function handleError(_0x20534e,_0x5e5419){_0x5e5419=_0x5e5419||0x1f4;return function(_0x646262){logger[_0x681c('0x29')](_0x646262[_0x681c('0x2a')]);if(_0x646262[_0x681c('0x2b')]){delete _0x646262['name'];}_0x20534e[_0x681c('0x1d')](_0x5e5419)[_0x681c('0x2c')](_0x646262);};}exports[_0x681c('0x2d')]=function(_0x51acc4,_0x1a2f99){var _0x37465e={},_0x5a548d={},_0x55ebb8={'count':0x0,'rows':[]};var _0x5a8226=_[_0x681c('0x2e')](db['VoiceQueueReport'][_0x681c('0x2f')],function(_0x18db38){return{'name':_0x18db38['fieldName'],'type':_0x18db38[_0x681c('0x30')][_0x681c('0x31')]};});_0x5a548d[_0x681c('0x32')]=_['map'](_0x5a8226,_0x681c('0x2b'));_0x5a548d['query']=_[_0x681c('0x33')](_0x51acc4[_0x681c('0x34')]);_0x5a548d[_0x681c('0x35')]=_[_0x681c('0x36')](_0x5a548d[_0x681c('0x32')],_0x5a548d[_0x681c('0x34')]);_0x37465e[_0x681c('0x37')]=_['intersection'](_0x5a548d[_0x681c('0x32')],qs[_0x681c('0x38')](_0x51acc4[_0x681c('0x34')]['fields']));_0x37465e[_0x681c('0x37')]=_0x37465e['attributes'][_0x681c('0x39')]?_0x37465e['attributes']:_0x5a548d[_0x681c('0x32')];if(!_0x51acc4[_0x681c('0x34')]['hasOwnProperty'](_0x681c('0x3a'))){_0x37465e[_0x681c('0x23')]=qs['limit'](_0x51acc4[_0x681c('0x34')][_0x681c('0x23')]);_0x37465e['offset']=qs[_0x681c('0x20')](_0x51acc4[_0x681c('0x34')][_0x681c('0x20')]);}_0x37465e[_0x681c('0x3b')]=qs[_0x681c('0x3c')](_0x51acc4[_0x681c('0x34')][_0x681c('0x3c')]);_0x37465e[_0x681c('0x3d')]=qs[_0x681c('0x35')](_[_0x681c('0x3e')](_0x51acc4['query'],_0x5a548d['filters']),_0x5a8226);if(_0x51acc4[_0x681c('0x34')][_0x681c('0x3f')]){_0x37465e['where']=_['merge'](_0x37465e['where'],{'$or':_[_0x681c('0x2e')](_0x5a8226,function(_0xdafc38){if(_0xdafc38['type']!==_0x681c('0x40')){var _0x3ac87f={};_0x3ac87f[_0xdafc38[_0x681c('0x2b')]]={'$like':'%'+_0x51acc4[_0x681c('0x34')]['filter']+'%'};return _0x3ac87f;}})});}_0x37465e=_[_0x681c('0x41')]({},_0x37465e,_0x51acc4[_0x681c('0x42')]);var _0x48602b={'where':_0x37465e['where']};return db[_0x681c('0x43')][_0x681c('0x22')](_0x48602b)['then'](function(_0x2f3980){_0x55ebb8[_0x681c('0x22')]=_0x2f3980;if(_0x51acc4['query'][_0x681c('0x44')]){_0x37465e[_0x681c('0x45')]=[{'all':!![]}];}return db[_0x681c('0x43')]['findAll'](_0x37465e);})['then'](function(_0x243703){_0x55ebb8[_0x681c('0x46')]=_0x243703;return _0x55ebb8;})[_0x681c('0x28')](respondWithFilteredResult(_0x1a2f99,_0x37465e))[_0x681c('0x47')](handleError(_0x1a2f99,null));};exports['show']=function(_0x29b1ad,_0x5dceac){var _0x5965f6={'raw':![],'where':{'id':_0x29b1ad[_0x681c('0x48')]['id']}},_0x5643ab={};_0x5643ab[_0x681c('0x32')]=_[_0x681c('0x33')](db[_0x681c('0x43')][_0x681c('0x2f')]);_0x5643ab[_0x681c('0x34')]=_[_0x681c('0x33')](_0x29b1ad[_0x681c('0x34')]);_0x5643ab[_0x681c('0x35')]=_[_0x681c('0x36')](_0x5643ab[_0x681c('0x32')],_0x5643ab[_0x681c('0x34')]);_0x5965f6['attributes']=_[_0x681c('0x36')](_0x5643ab['model'],qs['fields'](_0x29b1ad[_0x681c('0x34')][_0x681c('0x38')]));_0x5965f6[_0x681c('0x37')]=_0x5965f6['attributes'][_0x681c('0x39')]?_0x5965f6[_0x681c('0x37')]:_0x5643ab[_0x681c('0x32')];if(_0x29b1ad['query']['includeAll']){_0x5965f6[_0x681c('0x45')]=[{'all':!![]}];}_0x5965f6=_['merge']({},_0x5965f6,_0x29b1ad[_0x681c('0x42')]);return db[_0x681c('0x43')][_0x681c('0x49')](_0x5965f6)[_0x681c('0x28')](handleEntityNotFound(_0x5dceac,null))[_0x681c('0x28')](respondWithResult(_0x5dceac,null))[_0x681c('0x47')](handleError(_0x5dceac,null));};exports[_0x681c('0x4a')]=function(_0x185501,_0x48e794){return db['VoiceQueueReport'][_0x681c('0x4a')](_0x185501[_0x681c('0x4b')],{})[_0x681c('0x28')](respondWithResult(_0x48e794,0xc9))[_0x681c('0x47')](handleError(_0x48e794,null));};exports[_0x681c('0x4c')]=function(_0x452a50,_0x233a87){if(_0x452a50[_0x681c('0x4b')]['id']){delete _0x452a50[_0x681c('0x4b')]['id'];}return db[_0x681c('0x43')][_0x681c('0x49')]({'where':{'id':_0x452a50[_0x681c('0x48')]['id']}})[_0x681c('0x28')](handleEntityNotFound(_0x233a87,null))[_0x681c('0x28')](saveUpdates(_0x452a50[_0x681c('0x4b')],null))['then'](respondWithResult(_0x233a87,null))[_0x681c('0x47')](handleError(_0x233a87,null));};exports['destroy']=function(_0x334ea3,_0x5efd16){return db['VoiceQueueReport'][_0x681c('0x49')]({'where':{'id':_0x334ea3['params']['id']}})[_0x681c('0x28')](handleEntityNotFound(_0x5efd16,null))[_0x681c('0x28')](removeEntity(_0x5efd16,null))[_0x681c('0x47')](handleError(_0x5efd16,null));};exports[_0x681c('0x4d')]=function(_0x14d801,_0x513f76){return db['VoiceQueueReport']['describe']()[_0x681c('0x28')](respondWithResult(_0x513f76,null))[_0x681c('0x47')](handleError(_0x513f76,null));};exports['getVoiceQueuesReport']=function(_0x131404,_0x5e4b98){var _0x54e394={},_0x195b73={},_0x368ff2={'count':0x0,'rows':[]};_0x195b73[_0x681c('0x32')]=_[_0x681c('0x33')](db[_0x681c('0x43')][_0x681c('0x2f')]);_0x195b73[_0x681c('0x34')]=_['keys'](_0x131404[_0x681c('0x34')]);_0x195b73[_0x681c('0x35')]=_[_0x681c('0x36')](_0x195b73[_0x681c('0x32')],_0x195b73[_0x681c('0x34')]);_0x54e394[_0x681c('0x37')]=_[_0x681c('0x36')](_0x195b73[_0x681c('0x32')],qs[_0x681c('0x38')](_0x131404['query']['fields']));_0x54e394[_0x681c('0x37')]=_0x54e394[_0x681c('0x37')][_0x681c('0x39')]?_0x54e394['attributes']:_0x195b73[_0x681c('0x32')];if(!_0x131404[_0x681c('0x34')][_0x681c('0x4e')](_0x681c('0x3a'))){_0x54e394[_0x681c('0x23')]=qs[_0x681c('0x23')](_0x131404[_0x681c('0x34')][_0x681c('0x23')]);_0x54e394['offset']=qs['offset'](_0x131404['query']['offset']);}_0x54e394[_0x681c('0x3b')]=qs[_0x681c('0x3c')](_0x131404[_0x681c('0x34')]['sort']);_0x54e394['where']=qs[_0x681c('0x35')](_[_0x681c('0x3e')](_0x131404[_0x681c('0x34')],_0x195b73[_0x681c('0x35')]));if(_0x131404[_0x681c('0x34')][_0x681c('0x3f')]){_0x54e394[_0x681c('0x3d')]=_[_0x681c('0x41')](_0x54e394[_0x681c('0x3d')],{'$or':_[_0x681c('0x2e')](_0x54e394[_0x681c('0x37')],function(_0x11ac9c){var _0x2fe072={};_0x2fe072[_0x11ac9c]={'$like':'%'+_0x131404[_0x681c('0x34')][_0x681c('0x3f')]+'%'};return _0x2fe072;})});}_0x54e394=_['merge']({},_0x54e394,_0x131404['options']);var _0x4759b4={'where':_0x54e394[_0x681c('0x3d')]};return db[_0x681c('0x43')]['count'](_0x4759b4)['then'](function(_0x47df34){_0x368ff2[_0x681c('0x22')]=_0x47df34;if(_0x131404[_0x681c('0x34')][_0x681c('0x44')]){_0x54e394[_0x681c('0x45')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x54e394);})[_0x681c('0x28')](function(_0xb696e6){_0x368ff2['rows']=_0xb696e6;return _0x368ff2;})['then'](respondWithFilteredResult(_0x5e4b98,_0x54e394,'getVoiceQueuesReport'))[_0x681c('0x47')](handleError(_0x5e4b98,null,_0x681c('0x4f')));};
\ No newline at end of file
index 4a1d9ec..99e34ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86a9=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x1fcf1b,_0x214549){var _0x5d2952=function(_0x3331b7){while(--_0x3331b7){_0x1fcf1b['push'](_0x1fcf1b['shift']());}};_0x5d2952(++_0x214549);}(_0x86a9,0xc4));var _0x986a=function(_0x349eed,_0x470070){_0x349eed=_0x349eed-0x0;var _0x4f153a=_0x86a9[_0x349eed];return _0x4f153a;};'use strict';var EventEmitter=require(_0x986a('0x0'));var VoiceQueueReport=require(_0x986a('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x986a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x986a('0x3'),'afterDestroy':_0x986a('0x4')};function emitEvent(_0x23b2a7){return function(_0x2dc429,_0x30c334,_0x1dfdb0){VoiceQueueReportEvents[_0x986a('0x5')](_0x23b2a7+':'+_0x2dc429['id'],_0x2dc429);VoiceQueueReportEvents[_0x986a('0x5')](_0x23b2a7,_0x2dc429);_0x1dfdb0(null);};}for(var e in events){if(events[_0x986a('0x6')](e)){var event=events[e];VoiceQueueReport[_0x986a('0x7')](e,emitEvent(event));}}module[_0x986a('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xd07f=['save','update','remove','emit','hasOwnProperty','hook','../../mysqldb','VoiceQueueReport'];(function(_0x3653b0,_0x472033){var _0x3c9aa7=function(_0x51e209){while(--_0x51e209){_0x3653b0['push'](_0x3653b0['shift']());}};_0x3c9aa7(++_0x472033);}(_0xd07f,0x8e));var _0xfd07=function(_0x17cb72,_0x3d8435){_0x17cb72=_0x17cb72-0x0;var _0x19aad4=_0xd07f[_0x17cb72];return _0x19aad4;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xfd07('0x0'))['db'][_0xfd07('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfd07('0x2'),'afterUpdate':_0xfd07('0x3'),'afterDestroy':_0xfd07('0x4')};function emitEvent(_0x5c3d15){return function(_0xdc7f4e,_0x290ffa,_0x496083){VoiceQueueReportEvents[_0xfd07('0x5')](_0x5c3d15+':'+_0xdc7f4e['id'],_0xdc7f4e);VoiceQueueReportEvents[_0xfd07('0x5')](_0x5c3d15,_0xdc7f4e);_0x496083(null);};}for(var e in events){if(events[_0xfd07('0x6')](e)){var event=events[e];VoiceQueueReport[_0xfd07('0x7')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 8052706..09f17b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaca=['VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define'];(function(_0x179ba4,_0x465ced){var _0x425bcd=function(_0x5ae1ba){while(--_0x5ae1ba){_0x179ba4['push'](_0x179ba4['shift']());}};_0x425bcd(++_0x465ced);}(_0xcaca,0x149));var _0xacac=function(_0x2b506b,_0x2631e4){_0x2b506b=_0x2b506b-0x0;var _0x21209f=_0xcaca[_0x2b506b];return _0x21209f;};'use strict';var _=require('lodash');var util=require(_0xacac('0x0'));var logger=require(_0xacac('0x1'))(_0xacac('0x2'));var moment=require(_0xacac('0x3'));var BPromise=require('bluebird');var rp=require(_0xacac('0x4'));var fs=require('fs');var path=require(_0xacac('0x5'));var rimraf=require(_0xacac('0x6'));var config=require(_0xacac('0x7'));var attributes=require('./voiceQueueReport.attributes');module['exports']=function(_0x27f20f,_0x47da6a){return _0x27f20f[_0xacac('0x8')](_0xacac('0x9'),attributes,{'tableName':_0xacac('0xa'),'paranoid':![],'indexes':[{'fields':[_0xacac('0xb')]},{'fields':[_0xacac('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8307=['api','moment','bluebird','request-promise','path','../../config/environment','./voiceQueueReport.attributes','define','uniqueid','calleridnum','../../config/logger'];(function(_0xac42d4,_0x38cbec){var _0x44af83=function(_0x74ca62){while(--_0x74ca62){_0xac42d4['push'](_0xac42d4['shift']());}};_0x44af83(++_0x38cbec);}(_0x8307,0x78));var _0x7830=function(_0x4a43a3,_0x52ed34){_0x4a43a3=_0x4a43a3-0x0;var _0x49c7cd=_0x8307[_0x4a43a3];return _0x49c7cd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7830('0x0'))(_0x7830('0x1'));var moment=require(_0x7830('0x2'));var BPromise=require(_0x7830('0x3'));var rp=require(_0x7830('0x4'));var fs=require('fs');var path=require(_0x7830('0x5'));var rimraf=require('rimraf');var config=require(_0x7830('0x6'));var attributes=require(_0x7830('0x7'));module['exports']=function(_0x3564cf,_0x5f1354){return _0x3564cf[_0x7830('0x8')]('VoiceQueueReport',attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0x7830('0x9')]},{'fields':[_0x7830('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 72c9cd4..206a48f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82cc=['stringify','error','code','message','result','catch','GetVoiceQueueReport','findAll','options','raw','where','attributes','limit','include','model','map','debug','VoiceQueueReport','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x552b75,_0x25c150){var _0x17465b=function(_0x30aec1){while(--_0x30aec1){_0x552b75['push'](_0x552b75['shift']());}};_0x17465b(++_0x25c150);}(_0x82cc,0x6c));var _0xc82c=function(_0x49301b,_0x4fa5cb){_0x49301b=_0x49301b-0x0;var _0x1a1757=_0x82cc[_0x49301b];return _0x1a1757;};'use strict';var _=require(_0xc82c('0x0'));var util=require(_0xc82c('0x1'));var moment=require(_0xc82c('0x2'));var BPromise=require('bluebird');var rs=require(_0xc82c('0x3'));var fs=require('fs');var Redis=require(_0xc82c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc82c('0x5'));var logger=require('../../config/logger')(_0xc82c('0x6'));var config=require(_0xc82c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc82c('0x8')][_0xc82c('0x9')]({'port':0x232a});config[_0xc82c('0xa')]=_[_0xc82c('0xb')](config[_0xc82c('0xa')],{'host':_0xc82c('0xc'),'port':0x18eb});var socket=require(_0xc82c('0xd'))(new Redis(config[_0xc82c('0xa')]));require(_0xc82c('0xe'))[_0xc82c('0xf')](socket);function respondWithRpcPromise(_0x76b1d6,_0x538334,_0x1f7a57){return new BPromise(function(_0x208492,_0x5942ce){return client[_0xc82c('0x10')](_0x76b1d6,_0x1f7a57)[_0xc82c('0x11')](function(_0x3457a0){logger[_0xc82c('0x12')](_0xc82c('0x13'),_0x538334,_0xc82c('0x14'));logger['debug']('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x538334,'request\x20sent',JSON[_0xc82c('0x15')](_0x3457a0));if(_0x3457a0[_0xc82c('0x16')]){if(_0x3457a0[_0xc82c('0x16')][_0xc82c('0x17')]===0x1f4){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x538334,_0x3457a0['error'][_0xc82c('0x18')]);return _0x5942ce(_0x3457a0[_0xc82c('0x16')][_0xc82c('0x18')]);}logger['error'](_0xc82c('0x13'),_0x538334,_0x3457a0['error'][_0xc82c('0x18')]);return _0x208492(_0x3457a0[_0xc82c('0x16')][_0xc82c('0x18')]);}else{logger[_0xc82c('0x12')](_0xc82c('0x13'),_0x538334,_0xc82c('0x14'));_0x208492(_0x3457a0[_0xc82c('0x19')]['message']);}})[_0xc82c('0x1a')](function(_0x44d044){logger[_0xc82c('0x16')]('VoiceQueueReport,\x20%s,\x20%s',_0x538334,_0x44d044);_0x5942ce(_0x44d044);});});}exports[_0xc82c('0x1b')]=function(_0x27557a){var _0x197c3b=this;return new Promise(function(_0x305f74,_0x31192a){return db['VoiceQueueReport'][_0xc82c('0x1c')]({'raw':_0x27557a['options']?_0x27557a[_0xc82c('0x1d')][_0xc82c('0x1e')]===undefined?!![]:![]:!![],'where':_0x27557a[_0xc82c('0x1d')]?_0x27557a[_0xc82c('0x1d')][_0xc82c('0x1f')]||null:null,'attributes':_0x27557a['options']?_0x27557a[_0xc82c('0x1d')][_0xc82c('0x20')]||null:null,'limit':_0x27557a['options']?_0x27557a['options'][_0xc82c('0x21')]||null:null,'include':_0x27557a[_0xc82c('0x1d')]?_0x27557a[_0xc82c('0x1d')][_0xc82c('0x22')]?_['map'](_0x27557a[_0xc82c('0x1d')][_0xc82c('0x22')],function(_0x26290a){return{'model':db[_0x26290a[_0xc82c('0x23')]],'as':_0x26290a['as'],'attributes':_0x26290a[_0xc82c('0x20')],'include':_0x26290a[_0xc82c('0x22')]?_['map'](_0x26290a[_0xc82c('0x22')],function(_0x12051c){return{'model':db[_0x12051c[_0xc82c('0x23')]],'as':_0x12051c['as'],'attributes':_0x12051c[_0xc82c('0x20')],'include':_0x12051c[_0xc82c('0x22')]?_[_0xc82c('0x24')](_0x12051c[_0xc82c('0x22')],function(_0xf4ca5e){return{'model':db[_0xf4ca5e[_0xc82c('0x23')]],'as':_0xf4ca5e['as'],'attributes':_0xf4ca5e[_0xc82c('0x20')]};}):[]};}):[]};}):[]:[]})[_0xc82c('0x11')](function(_0x5db69c){logger[_0xc82c('0x12')](_0xc82c('0x1b'),_0x27557a);logger[_0xc82c('0x25')](_0xc82c('0x1b'),_0x27557a,JSON[_0xc82c('0x15')](_0x5db69c));_0x305f74(_0x5db69c);})[_0xc82c('0x1a')](function(_0x4cff89){logger[_0xc82c('0x16')]('GetVoiceQueueReport',_0x4cff89['message'],_0x27557a);_0x31192a(_0x197c3b[_0xc82c('0x16')](0x1f4,_0x4cff89['message']));});});};exports['CreateVoiceQueueReport']=function(_0x541230){var _0x368671=this;return new Promise(function(_0x5dbfac,_0x55b25e){return db[_0xc82c('0x26')][_0xc82c('0x27')](_0x541230[_0xc82c('0x28')],{'raw':_0x541230[_0xc82c('0x1d')]?_0x541230[_0xc82c('0x1d')][_0xc82c('0x1e')]===undefined?!![]:![]:!![]})[_0xc82c('0x11')](function(_0x4e04bc){logger['info'](_0xc82c('0x29'),_0x541230);logger[_0xc82c('0x25')](_0xc82c('0x29'),_0x541230,JSON[_0xc82c('0x15')](_0x4e04bc));_0x5dbfac(_0x4e04bc);})['catch'](function(_0x3aa4de){logger[_0xc82c('0x16')]('CreateVoiceQueueReport',_0x3aa4de[_0xc82c('0x18')],_0x541230);_0x55b25e(_0x368671['error'](0x1f4,_0x3aa4de[_0xc82c('0x18')]));});});};exports[_0xc82c('0x2a')]=function(_0x3a2a62){var _0x51a933=this;return new Promise(function(_0x298b0a,_0x16ae95){return db[_0xc82c('0x26')]['update'](_0x3a2a62['body'],{'raw':_0x3a2a62[_0xc82c('0x1d')]?_0x3a2a62[_0xc82c('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a2a62['options']?_0x3a2a62[_0xc82c('0x1d')][_0xc82c('0x1f')]||null:null,'attributes':_0x3a2a62[_0xc82c('0x1d')]?_0x3a2a62[_0xc82c('0x1d')][_0xc82c('0x20')]||null:null,'limit':_0x3a2a62[_0xc82c('0x1d')]?_0x3a2a62[_0xc82c('0x1d')][_0xc82c('0x21')]||null:null})[_0xc82c('0x11')](function(_0xc8e0ba){logger[_0xc82c('0x12')]('UpdateVoiceQueueReport',_0x3a2a62);logger[_0xc82c('0x25')]('UpdateVoiceQueueReport',_0x3a2a62,JSON['stringify'](_0xc8e0ba));_0x298b0a(_0xc8e0ba);})[_0xc82c('0x1a')](function(_0x1889b8){logger[_0xc82c('0x16')](_0xc82c('0x2a'),_0x1889b8[_0xc82c('0x18')],_0x3a2a62);_0x16ae95(_0x51a933[_0xc82c('0x16')](0x1f4,_0x1889b8[_0xc82c('0x18')]));});});};
\ No newline at end of file
+var _0x2dfe=['request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','map','model','CreateVoiceQueueReport','create','body','then','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','./voiceQueueReport.socket','register','request','info','VoiceQueueReport,\x20%s,\x20%s'];(function(_0x5317b5,_0x4dfd6e){var _0x3b7ce2=function(_0xc146d6){while(--_0xc146d6){_0x5317b5['push'](_0x5317b5['shift']());}};_0x3b7ce2(++_0x4dfd6e);}(_0x2dfe,0xd2));var _0xe2df=function(_0x527adb,_0x154ef0){_0x527adb=_0x527adb-0x0;var _0x382096=_0x2dfe[_0x527adb];return _0x382096;};'use strict';var _=require(_0xe2df('0x0'));var util=require(_0xe2df('0x1'));var moment=require(_0xe2df('0x2'));var BPromise=require(_0xe2df('0x3'));var rs=require(_0xe2df('0x4'));var fs=require('fs');var Redis=require(_0xe2df('0x5'));var db=require(_0xe2df('0x6'))['db'];var utils=require(_0xe2df('0x7'));var logger=require('../../config/logger')(_0xe2df('0x8'));var config=require(_0xe2df('0x9'));var jayson=require(_0xe2df('0xa'));var client=jayson['client'][_0xe2df('0xb')]({'port':0x232a});config['redis']=_[_0xe2df('0xc')](config[_0xe2df('0xd')],{'host':_0xe2df('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe2df('0xd')]));require(_0xe2df('0xf'))[_0xe2df('0x10')](socket);function respondWithRpcPromise(_0x798cb1,_0x58165b,_0x5170ca){return new BPromise(function(_0x11c2ad,_0x4c2ca0){return client[_0xe2df('0x11')](_0x798cb1,_0x5170ca)['then'](function(_0x7f2e36){logger[_0xe2df('0x12')](_0xe2df('0x13'),_0x58165b,_0xe2df('0x14'));logger[_0xe2df('0x15')](_0xe2df('0x16'),_0x58165b,_0xe2df('0x14'),JSON[_0xe2df('0x17')](_0x7f2e36));if(_0x7f2e36['error']){if(_0x7f2e36[_0xe2df('0x18')][_0xe2df('0x19')]===0x1f4){logger[_0xe2df('0x18')](_0xe2df('0x13'),_0x58165b,_0x7f2e36[_0xe2df('0x18')][_0xe2df('0x1a')]);return _0x4c2ca0(_0x7f2e36[_0xe2df('0x18')][_0xe2df('0x1a')]);}logger[_0xe2df('0x18')]('VoiceQueueReport,\x20%s,\x20%s',_0x58165b,_0x7f2e36[_0xe2df('0x18')]['message']);return _0x11c2ad(_0x7f2e36[_0xe2df('0x18')][_0xe2df('0x1a')]);}else{logger['info'](_0xe2df('0x13'),_0x58165b,_0xe2df('0x14'));_0x11c2ad(_0x7f2e36[_0xe2df('0x1b')][_0xe2df('0x1a')]);}})[_0xe2df('0x1c')](function(_0x565622){logger[_0xe2df('0x18')](_0xe2df('0x13'),_0x58165b,_0x565622);_0x4c2ca0(_0x565622);});});}exports[_0xe2df('0x1d')]=function(_0x437cc8){var _0x312f85=this;return new Promise(function(_0x5e9946,_0x165390){return db[_0xe2df('0x1e')][_0xe2df('0x1f')]({'raw':_0x437cc8[_0xe2df('0x20')]?_0x437cc8[_0xe2df('0x20')][_0xe2df('0x21')]===undefined?!![]:![]:!![],'where':_0x437cc8[_0xe2df('0x20')]?_0x437cc8[_0xe2df('0x20')][_0xe2df('0x22')]||null:null,'attributes':_0x437cc8[_0xe2df('0x20')]?_0x437cc8[_0xe2df('0x20')][_0xe2df('0x23')]||null:null,'limit':_0x437cc8[_0xe2df('0x20')]?_0x437cc8[_0xe2df('0x20')][_0xe2df('0x24')]||null:null,'include':_0x437cc8['options']?_0x437cc8[_0xe2df('0x20')][_0xe2df('0x25')]?_[_0xe2df('0x26')](_0x437cc8[_0xe2df('0x20')][_0xe2df('0x25')],function(_0xc58238){return{'model':db[_0xc58238[_0xe2df('0x27')]],'as':_0xc58238['as'],'attributes':_0xc58238[_0xe2df('0x23')],'include':_0xc58238[_0xe2df('0x25')]?_['map'](_0xc58238[_0xe2df('0x25')],function(_0x40e53b){return{'model':db[_0x40e53b[_0xe2df('0x27')]],'as':_0x40e53b['as'],'attributes':_0x40e53b[_0xe2df('0x23')],'include':_0x40e53b[_0xe2df('0x25')]?_[_0xe2df('0x26')](_0x40e53b[_0xe2df('0x25')],function(_0x657d49){return{'model':db[_0x657d49['model']],'as':_0x657d49['as'],'attributes':_0x657d49['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2210c5){logger['info']('GetVoiceQueueReport',_0x437cc8);logger['debug'](_0xe2df('0x1d'),_0x437cc8,JSON[_0xe2df('0x17')](_0x2210c5));_0x5e9946(_0x2210c5);})[_0xe2df('0x1c')](function(_0x2535eb){logger['error'](_0xe2df('0x1d'),_0x2535eb['message'],_0x437cc8);_0x165390(_0x312f85[_0xe2df('0x18')](0x1f4,_0x2535eb[_0xe2df('0x1a')]));});});};exports[_0xe2df('0x28')]=function(_0x1b5cdb){var _0x566b25=this;return new Promise(function(_0x36551d,_0x5dcbca){return db[_0xe2df('0x1e')][_0xe2df('0x29')](_0x1b5cdb[_0xe2df('0x2a')],{'raw':_0x1b5cdb['options']?_0x1b5cdb[_0xe2df('0x20')][_0xe2df('0x21')]===undefined?!![]:![]:!![]})[_0xe2df('0x2b')](function(_0x266e37){logger[_0xe2df('0x12')](_0xe2df('0x28'),_0x1b5cdb);logger['debug']('CreateVoiceQueueReport',_0x1b5cdb,JSON[_0xe2df('0x17')](_0x266e37));_0x36551d(_0x266e37);})[_0xe2df('0x1c')](function(_0x101b92){logger[_0xe2df('0x18')](_0xe2df('0x28'),_0x101b92[_0xe2df('0x1a')],_0x1b5cdb);_0x5dcbca(_0x566b25[_0xe2df('0x18')](0x1f4,_0x101b92[_0xe2df('0x1a')]));});});};exports[_0xe2df('0x2c')]=function(_0x3f1fb6){var _0x38b1af=this;return new Promise(function(_0xf9703a,_0x154785){return db['VoiceQueueReport'][_0xe2df('0x2d')](_0x3f1fb6[_0xe2df('0x2a')],{'raw':_0x3f1fb6[_0xe2df('0x20')]?_0x3f1fb6[_0xe2df('0x20')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f1fb6[_0xe2df('0x20')]?_0x3f1fb6[_0xe2df('0x20')][_0xe2df('0x22')]||null:null,'attributes':_0x3f1fb6[_0xe2df('0x20')]?_0x3f1fb6['options'][_0xe2df('0x23')]||null:null,'limit':_0x3f1fb6[_0xe2df('0x20')]?_0x3f1fb6[_0xe2df('0x20')][_0xe2df('0x24')]||null:null})[_0xe2df('0x2b')](function(_0x1586d2){logger[_0xe2df('0x12')](_0xe2df('0x2c'),_0x3f1fb6);logger[_0xe2df('0x15')](_0xe2df('0x2c'),_0x3f1fb6,JSON[_0xe2df('0x17')](_0x1586d2));_0xf9703a(_0x1586d2);})['catch'](function(_0x4eeb49){logger[_0xe2df('0x18')](_0xe2df('0x2c'),_0x4eeb49['message'],_0x3f1fb6);_0x154785(_0x38b1af[_0xe2df('0x18')](0x1f4,_0x4eeb49[_0xe2df('0x1a')]));});});};
\ No newline at end of file
index 10d69b5..f476f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa234=['length','voiceQueueReport:','./voiceQueueReport.events','save','remove','update','removeListener','register'];(function(_0x2997e3,_0x1670bf){var _0x602331=function(_0x443502){while(--_0x443502){_0x2997e3['push'](_0x2997e3['shift']());}};_0x602331(++_0x1670bf);}(_0xa234,0x142));var _0x4a23=function(_0x401be0,_0x45f4e2){_0x401be0=_0x401be0-0x0;var _0x240685=_0xa234[_0x401be0];return _0x240685;};'use strict';var VoiceQueueReportEvents=require(_0x4a23('0x0'));var events=[_0x4a23('0x1'),_0x4a23('0x2'),_0x4a23('0x3')];function createListener(_0x30fee9,_0x4a36fd){return function(_0x1534e4){_0x4a36fd['emit'](_0x30fee9,_0x1534e4);};}function removeListener(_0x2ced97,_0x5d3a3b){return function(){VoiceQueueReportEvents[_0x4a23('0x4')](_0x2ced97,_0x5d3a3b);};}exports[_0x4a23('0x5')]=function(_0x21b7e0){for(var _0x21f137=0x0,_0x23987c=events[_0x4a23('0x6')];_0x21f137<_0x23987c;_0x21f137++){var _0x5edef3=events[_0x21f137];var _0x23e94d=createListener(_0x4a23('0x7')+_0x5edef3,_0x21b7e0);VoiceQueueReportEvents['on'](_0x5edef3,_0x23e94d);}};
\ No newline at end of file
+var _0xb8f7=['emit','removeListener','register','voiceQueueReport:','./voiceQueueReport.events','remove','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb8f7,0x1af));var _0x7b8f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb8f7[_0x20a584];return _0x4b41a8;};'use strict';var VoiceQueueReportEvents=require(_0x7b8f('0x0'));var events=['save',_0x7b8f('0x1'),_0x7b8f('0x2')];function createListener(_0x3e0432,_0x493a9b){return function(_0x466c3a){_0x493a9b[_0x7b8f('0x3')](_0x3e0432,_0x466c3a);};}function removeListener(_0x424b41,_0x40060d){return function(){VoiceQueueReportEvents[_0x7b8f('0x4')](_0x424b41,_0x40060d);};}exports[_0x7b8f('0x5')]=function(_0x290a33){for(var _0x5162f2=0x0,_0x49441b=events['length'];_0x5162f2<_0x49441b;_0x5162f2++){var _0x196ab8=events[_0x5162f2];var _0x3bed04=createListener(_0x7b8f('0x6')+_0x196ab8,_0x290a33);VoiceQueueReportEvents['on'](_0x196ab8,_0x3bed04);}};
\ No newline at end of file
index e71a069..28b99f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10a9=['fs-extra','../../components/auth/service','get','isAuthenticated','index','show','create','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x10a9,0x18a));var _0x910a=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x10a9[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x910a('0x0'));var util=require(_0x910a('0x1'));var path=require(_0x910a('0x2'));var timeout=require(_0x910a('0x3'));var express=require(_0x910a('0x4'));var router=express[_0x910a('0x5')]();var fs_extra=require(_0x910a('0x6'));var auth=require(_0x910a('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceQueuesLog.controller');router[_0x910a('0x8')]('/',auth[_0x910a('0x9')](),controller[_0x910a('0xa')]);router['get']('/:id',auth[_0x910a('0x9')](),controller[_0x910a('0xb')]);router['post']('/',auth[_0x910a('0x9')](),controller[_0x910a('0xc')]);router['put']('/:id',auth[_0x910a('0x9')](),controller['update']);router['delete'](_0x910a('0xd'),auth['isAuthenticated'](),controller[_0x910a('0xe')]);module[_0x910a('0xf')]=router;
\ No newline at end of file
+var _0x61a2=['../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x254c9e,_0xab8a1b){var _0x2d4cb6=function(_0x15b027){while(--_0x15b027){_0x254c9e['push'](_0x254c9e['shift']());}};_0x2d4cb6(++_0xab8a1b);}(_0x61a2,0x184));var _0x261a=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x61a2[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x261a('0x0'));var util=require(_0x261a('0x1'));var path=require('path');var timeout=require(_0x261a('0x2'));var express=require(_0x261a('0x3'));var router=express[_0x261a('0x4')]();var fs_extra=require(_0x261a('0x5'));var auth=require(_0x261a('0x6'));var interaction=require(_0x261a('0x7'));var config=require(_0x261a('0x8'));var controller=require(_0x261a('0x9'));router[_0x261a('0xa')]('/',auth[_0x261a('0xb')](),controller[_0x261a('0xc')]);router['get'](_0x261a('0xd'),auth[_0x261a('0xb')](),controller[_0x261a('0xe')]);router[_0x261a('0xf')]('/',auth[_0x261a('0xb')](),controller[_0x261a('0x10')]);router[_0x261a('0x11')](_0x261a('0xd'),auth[_0x261a('0xb')](),controller[_0x261a('0x12')]);router[_0x261a('0x13')](_0x261a('0xd'),auth[_0x261a('0xb')](),controller[_0x261a('0x14')]);module[_0x261a('0x15')]=router;
\ No newline at end of file
index 31d379f..cac66de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e20=['moment','exports','STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0xd0dacc,_0x55ca9d){var _0x197b8e=function(_0x585d0a){while(--_0x585d0a){_0xd0dacc['push'](_0xd0dacc['shift']());}};_0x197b8e(++_0x55ca9d);}(_0x8e20,0x1af));var _0x08e2=function(_0x529f1c,_0x437ed1){_0x529f1c=_0x529f1c-0x0;var _0x4d57ab=_0x8e20[_0x529f1c];return _0x4d57ab;};'use strict';var Sequelize=require(_0x08e2('0x0'));var moment=require(_0x08e2('0x1'));module[_0x08e2('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x08e2('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x08e2('0x4')],'allowNull':![],'defaultValue':moment()['format'](_0x08e2('0x5'))}};
\ No newline at end of file
+var _0xf569=['STRING','format','YYYY-MM-DD\x20HH:mm:ss','moment','exports'];(function(_0x59c6bc,_0x2323d2){var _0x49bac7=function(_0x10d244){while(--_0x10d244){_0x59c6bc['push'](_0x59c6bc['shift']());}};_0x49bac7(++_0x2323d2);}(_0xf569,0xd0));var _0x9f56=function(_0x5a79e2,_0x319b1a){_0x5a79e2=_0x5a79e2-0x0;var _0x266c45=_0xf569[_0x5a79e2];return _0x266c45;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9f56('0x0'));module[_0x9f56('0x1')]={'time':{'type':Sequelize[_0x9f56('0x2')]},'callid':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x9f56('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x9f56('0x3')](_0x9f56('0x4'))}};
\ No newline at end of file
index f120e92..b799c1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe60e=['hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','VoiceQueuesLog','rawAttributes','type','key','keys','query','model','attributes','intersection','fields','length'];(function(_0x209568,_0x541d61){var _0x2eeec1=function(_0x1edce3){while(--_0x1edce3){_0x209568['push'](_0x209568['shift']());}};_0x2eeec1(++_0x541d61);}(_0xe60e,0xab));var _0xee60=function(_0x5990ea,_0x535226){_0x5990ea=_0x5990ea-0x0;var _0x279e3f=_0xe60e[_0x5990ea];return _0x279e3f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xee60('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xee60('0x1'));var rp=require(_0xee60('0x2'));var moment=require(_0xee60('0x3'));var BPromise=require(_0xee60('0x4'));var Mustache=require(_0xee60('0x5'));var util=require(_0xee60('0x6'));var path=require(_0xee60('0x7'));var sox=require(_0xee60('0x8'));var csv=require('to-csv');var ejs=require(_0xee60('0x9'));var fs=require('fs');var fs_extra=require(_0xee60('0xa'));var _=require(_0xee60('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xee60('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xee60('0xd'));var querystring=require('querystring');var Papa=require(_0xee60('0xe'));var Redis=require(_0xee60('0xf'));var authService=require(_0xee60('0x10'));var qs=require(_0xee60('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xee60('0x12'));var logger=require(_0xee60('0x13'))(_0xee60('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xee60('0x15'));var db=require(_0xee60('0x16'))['db'];function respondWithStatusCode(_0x2f20b7,_0x58c77f){_0x58c77f=_0x58c77f||0xcc;return function(_0x3783d5){if(_0x3783d5){return _0x2f20b7[_0xee60('0x17')](_0x58c77f);}return _0x2f20b7[_0xee60('0x18')](_0x58c77f)[_0xee60('0x19')]();};}function respondWithResult(_0x30066e,_0x4e9e53){_0x4e9e53=_0x4e9e53||0xc8;return function(_0x582bec){if(_0x582bec){return _0x30066e[_0xee60('0x18')](_0x4e9e53)[_0xee60('0x1a')](_0x582bec);}};}function respondWithFilteredResult(_0x2d8f02,_0x2a7a67){return function(_0x2b8340){if(_0x2b8340){var _0x4d3385=typeof _0x2a7a67[_0xee60('0x1b')]===_0xee60('0x1c')&&typeof _0x2a7a67[_0xee60('0x1d')]===_0xee60('0x1c');var _0x12291e=_0x2b8340[_0xee60('0x1e')];var _0x1fb207=_0x4d3385?0x0:_0x2a7a67[_0xee60('0x1b')];var _0x5d89b8=_0x4d3385?_0x2b8340[_0xee60('0x1e')]:_0x2a7a67[_0xee60('0x1b')]+_0x2a7a67[_0xee60('0x1d')];var _0x2d9fe7;if(_0x5d89b8>=_0x12291e){_0x5d89b8=_0x12291e;_0x2d9fe7=0xc8;}else{_0x2d9fe7=0xce;}_0x2d8f02[_0xee60('0x18')](_0x2d9fe7);return _0x2d8f02[_0xee60('0x1f')](_0xee60('0x20'),_0x1fb207+'-'+_0x5d89b8+'/'+_0x12291e)[_0xee60('0x1a')](_0x2b8340);}return null;};}function patchUpdates(_0x233242){return function(_0x5381e2){try{jsonpatch[_0xee60('0x21')](_0x5381e2,_0x233242,!![]);}catch(_0x2a9238){return BPromise[_0xee60('0x22')](_0x2a9238);}return _0x5381e2['save']();};}function saveUpdates(_0x4aae45,_0x576dcf){return function(_0xeb0376){if(_0xeb0376){return _0xeb0376[_0xee60('0x23')](_0x4aae45)[_0xee60('0x24')](function(_0x4f82f7){return _0x4f82f7;});}return null;};}function removeEntity(_0xde9341,_0x11e1b3){return function(_0x384777){if(_0x384777){return _0x384777[_0xee60('0x25')]()['then'](function(){_0xde9341[_0xee60('0x18')](0xcc)[_0xee60('0x19')]();});}};}function handleEntityNotFound(_0x42d444,_0x5723de){return function(_0x353552){if(!_0x353552){_0x42d444[_0xee60('0x17')](0x194);}return _0x353552;};}function handleError(_0x488610,_0x6a40bd){_0x6a40bd=_0x6a40bd||0x1f4;return function(_0x1e873e){logger[_0xee60('0x26')](_0x1e873e['stack']);if(_0x1e873e['name']){delete _0x1e873e[_0xee60('0x27')];}_0x488610[_0xee60('0x18')](_0x6a40bd)[_0xee60('0x28')](_0x1e873e);};}exports[_0xee60('0x29')]=function(_0x29746f,_0x4796b9){var _0x74c270={},_0x50ad12={},_0x290065={'count':0x0,'rows':[]};var _0x8418e9=_[_0xee60('0x2a')](db[_0xee60('0x2b')][_0xee60('0x2c')],function(_0x3a65c7){return{'name':_0x3a65c7['fieldName'],'type':_0x3a65c7[_0xee60('0x2d')][_0xee60('0x2e')]};});_0x50ad12['model']=_[_0xee60('0x2a')](_0x8418e9,'name');_0x50ad12['query']=_[_0xee60('0x2f')](_0x29746f[_0xee60('0x30')]);_0x50ad12['filters']=_['intersection'](_0x50ad12[_0xee60('0x31')],_0x50ad12['query']);_0x74c270[_0xee60('0x32')]=_[_0xee60('0x33')](_0x50ad12[_0xee60('0x31')],qs[_0xee60('0x34')](_0x29746f['query']['fields']));_0x74c270['attributes']=_0x74c270[_0xee60('0x32')][_0xee60('0x35')]?_0x74c270['attributes']:_0x50ad12[_0xee60('0x31')];if(!_0x29746f[_0xee60('0x30')][_0xee60('0x36')](_0xee60('0x37'))){_0x74c270[_0xee60('0x1d')]=qs['limit'](_0x29746f[_0xee60('0x30')]['limit']);_0x74c270['offset']=qs['offset'](_0x29746f[_0xee60('0x30')]['offset']);}_0x74c270[_0xee60('0x38')]=qs[_0xee60('0x39')](_0x29746f['query'][_0xee60('0x39')]);_0x74c270[_0xee60('0x3a')]=qs[_0xee60('0x3b')](_[_0xee60('0x3c')](_0x29746f[_0xee60('0x30')],_0x50ad12[_0xee60('0x3b')]),_0x8418e9);if(_0x29746f['query'][_0xee60('0x3d')]){_0x74c270['where']=_[_0xee60('0x3e')](_0x74c270['where'],{'$or':_[_0xee60('0x2a')](_0x8418e9,function(_0x4f5710){if(_0x4f5710[_0xee60('0x2d')]!==_0xee60('0x3f')){var _0x293f7a={};_0x293f7a[_0x4f5710[_0xee60('0x27')]]={'$like':'%'+_0x29746f[_0xee60('0x30')]['filter']+'%'};return _0x293f7a;}})});}_0x74c270=_[_0xee60('0x3e')]({},_0x74c270,_0x29746f[_0xee60('0x40')]);var _0x201910={'where':_0x74c270[_0xee60('0x3a')]};return db[_0xee60('0x2b')]['count'](_0x201910)[_0xee60('0x24')](function(_0x509e1d){_0x290065[_0xee60('0x1e')]=_0x509e1d;if(_0x29746f[_0xee60('0x30')][_0xee60('0x41')]){_0x74c270[_0xee60('0x42')]=[{'all':!![]}];}return db['VoiceQueuesLog'][_0xee60('0x43')](_0x74c270);})[_0xee60('0x24')](function(_0x35d7d1){_0x290065[_0xee60('0x44')]=_0x35d7d1;return _0x290065;})[_0xee60('0x24')](respondWithFilteredResult(_0x4796b9,_0x74c270))[_0xee60('0x45')](handleError(_0x4796b9,null));};exports[_0xee60('0x46')]=function(_0x5b65e7,_0x476b35){var _0x1e1f92={'raw':!![],'where':{'id':_0x5b65e7[_0xee60('0x47')]['id']}},_0xd6b16={};_0xd6b16[_0xee60('0x31')]=_[_0xee60('0x2f')](db[_0xee60('0x2b')][_0xee60('0x2c')]);_0xd6b16['query']=_[_0xee60('0x2f')](_0x5b65e7[_0xee60('0x30')]);_0xd6b16['filters']=_[_0xee60('0x33')](_0xd6b16[_0xee60('0x31')],_0xd6b16['query']);_0x1e1f92[_0xee60('0x32')]=_['intersection'](_0xd6b16['model'],qs[_0xee60('0x34')](_0x5b65e7[_0xee60('0x30')][_0xee60('0x34')]));_0x1e1f92[_0xee60('0x32')]=_0x1e1f92['attributes'][_0xee60('0x35')]?_0x1e1f92[_0xee60('0x32')]:_0xd6b16['model'];if(_0x5b65e7['query'][_0xee60('0x41')]){_0x1e1f92[_0xee60('0x42')]=[{'all':!![]}];}_0x1e1f92=_[_0xee60('0x3e')]({},_0x1e1f92,_0x5b65e7[_0xee60('0x40')]);return db['VoiceQueuesLog'][_0xee60('0x48')](_0x1e1f92)[_0xee60('0x24')](handleEntityNotFound(_0x476b35,null))[_0xee60('0x24')](respondWithResult(_0x476b35,null))[_0xee60('0x45')](handleError(_0x476b35,null));};exports[_0xee60('0x49')]=function(_0x2fb44f,_0x370ace){return db[_0xee60('0x2b')][_0xee60('0x49')](_0x2fb44f[_0xee60('0x4a')],{})[_0xee60('0x24')](respondWithResult(_0x370ace,0xc9))[_0xee60('0x45')](handleError(_0x370ace,null));};exports['update']=function(_0x3ce91b,_0x512945){if(_0x3ce91b[_0xee60('0x4a')]['id']){delete _0x3ce91b[_0xee60('0x4a')]['id'];}return db['VoiceQueuesLog'][_0xee60('0x48')]({'where':{'id':_0x3ce91b[_0xee60('0x47')]['id']}})[_0xee60('0x24')](handleEntityNotFound(_0x512945,null))[_0xee60('0x24')](saveUpdates(_0x3ce91b[_0xee60('0x4a')],null))[_0xee60('0x24')](respondWithResult(_0x512945,null))[_0xee60('0x45')](handleError(_0x512945,null));};exports['destroy']=function(_0x2dcb3d,_0x29ebe5){return db['VoiceQueuesLog'][_0xee60('0x48')]({'where':{'id':_0x2dcb3d[_0xee60('0x47')]['id']}})[_0xee60('0x24')](handleEntityNotFound(_0x29ebe5,null))[_0xee60('0x24')](removeEntity(_0x29ebe5,null))[_0xee60('0x45')](handleError(_0x29ebe5,null));};
\ No newline at end of file
+var _0xaf51=['where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','offset','undefined','limit','count','status','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','name','send','map','VoiceQueuesLog','rawAttributes','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x20c9d6,_0x160bea){var _0x3b8794=function(_0x56f346){while(--_0x56f346){_0x20c9d6['push'](_0x20c9d6['shift']());}};_0x3b8794(++_0x160bea);}(_0xaf51,0x1f2));var _0x1af5=function(_0x3edcd5,_0x439819){_0x3edcd5=_0x3edcd5-0x0;var _0x5c96d3=_0xaf51[_0x3edcd5];return _0x5c96d3;};'use strict';var emlformat=require(_0x1af5('0x0'));var rimraf=require(_0x1af5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1af5('0x2'));var rp=require(_0x1af5('0x3'));var moment=require(_0x1af5('0x4'));var BPromise=require(_0x1af5('0x5'));var Mustache=require(_0x1af5('0x6'));var util=require('util');var path=require(_0x1af5('0x7'));var sox=require(_0x1af5('0x8'));var csv=require(_0x1af5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1af5('0xa'));var _=require(_0x1af5('0xb'));var squel=require(_0x1af5('0xc'));var crypto=require(_0x1af5('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1af5('0x9'));var querystring=require(_0x1af5('0xe'));var Papa=require(_0x1af5('0xf'));var Redis=require(_0x1af5('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1af5('0x11'));var as=require(_0x1af5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1af5('0x13'))(_0x1af5('0x14'));var utils=require(_0x1af5('0x15'));var config=require(_0x1af5('0x16'));var licenseUtil=require(_0x1af5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b9ff3,_0x3c21ff){_0x3c21ff=_0x3c21ff||0xcc;return function(_0x301b9f){if(_0x301b9f){return _0x1b9ff3['sendStatus'](_0x3c21ff);}return _0x1b9ff3['status'](_0x3c21ff)['end']();};}function respondWithResult(_0x1bff09,_0x52faf3){_0x52faf3=_0x52faf3||0xc8;return function(_0x4865f7){if(_0x4865f7){return _0x1bff09['status'](_0x52faf3)['json'](_0x4865f7);}};}function respondWithFilteredResult(_0x423f57,_0x242e5b){return function(_0x305bf5){if(_0x305bf5){var _0xfdf95e=typeof _0x242e5b[_0x1af5('0x18')]===_0x1af5('0x19')&&typeof _0x242e5b[_0x1af5('0x1a')]===_0x1af5('0x19');var _0xff2d34=_0x305bf5[_0x1af5('0x1b')];var _0x3e65c6=_0xfdf95e?0x0:_0x242e5b[_0x1af5('0x18')];var _0x517a38=_0xfdf95e?_0x305bf5[_0x1af5('0x1b')]:_0x242e5b[_0x1af5('0x18')]+_0x242e5b[_0x1af5('0x1a')];var _0x1844e1;if(_0x517a38>=_0xff2d34){_0x517a38=_0xff2d34;_0x1844e1=0xc8;}else{_0x1844e1=0xce;}_0x423f57[_0x1af5('0x1c')](_0x1844e1);return _0x423f57['set'](_0x1af5('0x1d'),_0x3e65c6+'-'+_0x517a38+'/'+_0xff2d34)[_0x1af5('0x1e')](_0x305bf5);}return null;};}function patchUpdates(_0x4fb579){return function(_0x31795d){try{jsonpatch[_0x1af5('0x1f')](_0x31795d,_0x4fb579,!![]);}catch(_0x1ff81a){return BPromise[_0x1af5('0x20')](_0x1ff81a);}return _0x31795d[_0x1af5('0x21')]();};}function saveUpdates(_0x59edd1,_0x503f80){return function(_0x2fc647){if(_0x2fc647){return _0x2fc647[_0x1af5('0x22')](_0x59edd1)[_0x1af5('0x23')](function(_0xb36c2b){return _0xb36c2b;});}return null;};}function removeEntity(_0x31f4a2,_0x4931f8){return function(_0x39f8b5){if(_0x39f8b5){return _0x39f8b5[_0x1af5('0x24')]()[_0x1af5('0x23')](function(){_0x31f4a2[_0x1af5('0x1c')](0xcc)[_0x1af5('0x25')]();});}};}function handleEntityNotFound(_0x3aa127,_0x5e47f4){return function(_0x399129){if(!_0x399129){_0x3aa127[_0x1af5('0x26')](0x194);}return _0x399129;};}function handleError(_0x35f729,_0x48f91b){_0x48f91b=_0x48f91b||0x1f4;return function(_0x28110e){logger['error'](_0x28110e['stack']);if(_0x28110e[_0x1af5('0x27')]){delete _0x28110e['name'];}_0x35f729[_0x1af5('0x1c')](_0x48f91b)[_0x1af5('0x28')](_0x28110e);};}exports['index']=function(_0x3a80fc,_0x201eca){var _0x212ca1={},_0x3d8e0e={},_0x29d9e6={'count':0x0,'rows':[]};var _0x2af90c=_[_0x1af5('0x29')](db[_0x1af5('0x2a')][_0x1af5('0x2b')],function(_0x28f8d7){return{'name':_0x28f8d7['fieldName'],'type':_0x28f8d7['type']['key']};});_0x3d8e0e['model']=_[_0x1af5('0x29')](_0x2af90c,_0x1af5('0x27'));_0x3d8e0e[_0x1af5('0x2c')]=_[_0x1af5('0x2d')](_0x3a80fc[_0x1af5('0x2c')]);_0x3d8e0e[_0x1af5('0x2e')]=_[_0x1af5('0x2f')](_0x3d8e0e[_0x1af5('0x30')],_0x3d8e0e[_0x1af5('0x2c')]);_0x212ca1[_0x1af5('0x31')]=_[_0x1af5('0x2f')](_0x3d8e0e[_0x1af5('0x30')],qs[_0x1af5('0x32')](_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x32')]));_0x212ca1[_0x1af5('0x31')]=_0x212ca1[_0x1af5('0x31')][_0x1af5('0x33')]?_0x212ca1['attributes']:_0x3d8e0e[_0x1af5('0x30')];if(!_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x34')](_0x1af5('0x35'))){_0x212ca1[_0x1af5('0x1a')]=qs[_0x1af5('0x1a')](_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x1a')]);_0x212ca1[_0x1af5('0x18')]=qs['offset'](_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x18')]);}_0x212ca1['order']=qs['sort'](_0x3a80fc[_0x1af5('0x2c')]['sort']);_0x212ca1[_0x1af5('0x36')]=qs[_0x1af5('0x2e')](_[_0x1af5('0x37')](_0x3a80fc[_0x1af5('0x2c')],_0x3d8e0e[_0x1af5('0x2e')]),_0x2af90c);if(_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x38')]){_0x212ca1[_0x1af5('0x36')]=_[_0x1af5('0x39')](_0x212ca1[_0x1af5('0x36')],{'$or':_['map'](_0x2af90c,function(_0x690c57){if(_0x690c57['type']!==_0x1af5('0x3a')){var _0x5cdbd1={};_0x5cdbd1[_0x690c57['name']]={'$like':'%'+_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x38')]+'%'};return _0x5cdbd1;}})});}_0x212ca1=_[_0x1af5('0x39')]({},_0x212ca1,_0x3a80fc[_0x1af5('0x3b')]);var _0x1c58f9={'where':_0x212ca1[_0x1af5('0x36')]};return db[_0x1af5('0x2a')]['count'](_0x1c58f9)[_0x1af5('0x23')](function(_0x1c9871){_0x29d9e6['count']=_0x1c9871;if(_0x3a80fc[_0x1af5('0x2c')][_0x1af5('0x3c')]){_0x212ca1[_0x1af5('0x3d')]=[{'all':!![]}];}return db[_0x1af5('0x2a')][_0x1af5('0x3e')](_0x212ca1);})['then'](function(_0x429b68){_0x29d9e6[_0x1af5('0x3f')]=_0x429b68;return _0x29d9e6;})['then'](respondWithFilteredResult(_0x201eca,_0x212ca1))[_0x1af5('0x40')](handleError(_0x201eca,null));};exports['show']=function(_0x5eae26,_0x281c82){var _0x4bf3b5={'raw':!![],'where':{'id':_0x5eae26[_0x1af5('0x41')]['id']}},_0x4a73fd={};_0x4a73fd[_0x1af5('0x30')]=_[_0x1af5('0x2d')](db[_0x1af5('0x2a')][_0x1af5('0x2b')]);_0x4a73fd['query']=_[_0x1af5('0x2d')](_0x5eae26[_0x1af5('0x2c')]);_0x4a73fd[_0x1af5('0x2e')]=_[_0x1af5('0x2f')](_0x4a73fd[_0x1af5('0x30')],_0x4a73fd['query']);_0x4bf3b5[_0x1af5('0x31')]=_['intersection'](_0x4a73fd['model'],qs[_0x1af5('0x32')](_0x5eae26[_0x1af5('0x2c')][_0x1af5('0x32')]));_0x4bf3b5['attributes']=_0x4bf3b5[_0x1af5('0x31')][_0x1af5('0x33')]?_0x4bf3b5[_0x1af5('0x31')]:_0x4a73fd[_0x1af5('0x30')];if(_0x5eae26[_0x1af5('0x2c')][_0x1af5('0x3c')]){_0x4bf3b5[_0x1af5('0x3d')]=[{'all':!![]}];}_0x4bf3b5=_[_0x1af5('0x39')]({},_0x4bf3b5,_0x5eae26[_0x1af5('0x3b')]);return db['VoiceQueuesLog']['find'](_0x4bf3b5)[_0x1af5('0x23')](handleEntityNotFound(_0x281c82,null))[_0x1af5('0x23')](respondWithResult(_0x281c82,null))[_0x1af5('0x40')](handleError(_0x281c82,null));};exports[_0x1af5('0x42')]=function(_0x3c1c71,_0x554c63){return db[_0x1af5('0x2a')][_0x1af5('0x42')](_0x3c1c71[_0x1af5('0x43')],{})['then'](respondWithResult(_0x554c63,0xc9))['catch'](handleError(_0x554c63,null));};exports['update']=function(_0x5559c0,_0x475f04){if(_0x5559c0[_0x1af5('0x43')]['id']){delete _0x5559c0[_0x1af5('0x43')]['id'];}return db[_0x1af5('0x2a')][_0x1af5('0x44')]({'where':{'id':_0x5559c0[_0x1af5('0x41')]['id']}})[_0x1af5('0x23')](handleEntityNotFound(_0x475f04,null))['then'](saveUpdates(_0x5559c0[_0x1af5('0x43')],null))['then'](respondWithResult(_0x475f04,null))['catch'](handleError(_0x475f04,null));};exports[_0x1af5('0x24')]=function(_0x3bf1f3,_0x8239ea){return db[_0x1af5('0x2a')][_0x1af5('0x44')]({'where':{'id':_0x3bf1f3[_0x1af5('0x41')]['id']}})[_0x1af5('0x23')](handleEntityNotFound(_0x8239ea,null))[_0x1af5('0x23')](removeEntity(_0x8239ea,null))[_0x1af5('0x40')](handleError(_0x8239ea,null));};
\ No newline at end of file
index 03fe505..436d9a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b69=['api','moment','bluebird','path','../../config/environment','./voiceQueuesLog.attributes','exports','event_dtm','event','dtm','lodash','../../config/logger'];(function(_0x4ed70f,_0x494410){var _0x3a319e=function(_0x106c53){while(--_0x106c53){_0x4ed70f['push'](_0x4ed70f['shift']());}};_0x3a319e(++_0x494410);}(_0x9b69,0x196));var _0x99b6=function(_0x422569,_0xbf158a){_0x422569=_0x422569-0x0;var _0x34f785=_0x9b69[_0x422569];return _0x34f785;};'use strict';var _=require(_0x99b6('0x0'));var util=require('util');var logger=require(_0x99b6('0x1'))(_0x99b6('0x2'));var moment=require(_0x99b6('0x3'));var BPromise=require(_0x99b6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99b6('0x5'));var rimraf=require('rimraf');var config=require(_0x99b6('0x6'));var attributes=require(_0x99b6('0x7'));module[_0x99b6('0x8')]=function(_0x425b5e,_0x5e3171){return _0x425b5e['define']('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x99b6('0x9'),'fields':[_0x99b6('0xa'),_0x99b6('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x79e5=['dtm','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','define','VoiceQueuesLog','voice_queues_log','event_dtm'];(function(_0x477f39,_0x548104){var _0x2f93d9=function(_0x3a3505){while(--_0x3a3505){_0x477f39['push'](_0x477f39['shift']());}};_0x2f93d9(++_0x548104);}(_0x79e5,0x79));var _0x579e=function(_0x51f16d,_0x5b270e){_0x51f16d=_0x51f16d-0x0;var _0x4ed9f2=_0x79e5[_0x51f16d];return _0x4ed9f2;};'use strict';var _=require(_0x579e('0x0'));var util=require(_0x579e('0x1'));var logger=require(_0x579e('0x2'))('api');var moment=require(_0x579e('0x3'));var BPromise=require(_0x579e('0x4'));var rp=require(_0x579e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x579e('0x6'));var attributes=require('./voiceQueuesLog.attributes');module['exports']=function(_0x5bc82e,_0x47f13f){return _0x5bc82e[_0x579e('0x7')](_0x579e('0x8'),attributes,{'tableName':_0x579e('0x9'),'paranoid':![],'indexes':[{'name':_0x579e('0xa'),'fields':['event',_0x579e('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 43395ed..4dc10d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc298=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x185699,_0x29a386){var _0x2cf5ab=function(_0x4995a3){while(--_0x4995a3){_0x185699['push'](_0x185699['shift']());}};_0x2cf5ab(++_0x29a386);}(_0xc298,0x143));var _0x8c29=function(_0xad92d9,_0x3f9084){_0xad92d9=_0xad92d9-0x0;var _0x229033=_0xc298[_0xad92d9];return _0x229033;};'use strict';var _=require('lodash');var util=require(_0x8c29('0x0'));var moment=require(_0x8c29('0x1'));var BPromise=require(_0x8c29('0x2'));var rs=require(_0x8c29('0x3'));var fs=require('fs');var Redis=require(_0x8c29('0x4'));var db=require(_0x8c29('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8c29('0x6'))(_0x8c29('0x7'));var config=require(_0x8c29('0x8'));var jayson=require(_0x8c29('0x9'));var client=jayson[_0x8c29('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1acce8,_0x254d3b,_0x366325){return new BPromise(function(_0xef6e28,_0x29e9e0){return client[_0x8c29('0xb')](_0x1acce8,_0x366325)['then'](function(_0x47bae9){logger['info'](_0x8c29('0xc'),_0x254d3b,_0x8c29('0xd'));logger[_0x8c29('0xe')](_0x8c29('0xf'),_0x254d3b,_0x8c29('0xd'),JSON[_0x8c29('0x10')](_0x47bae9));if(_0x47bae9[_0x8c29('0x11')]){if(_0x47bae9[_0x8c29('0x11')][_0x8c29('0x12')]===0x1f4){logger[_0x8c29('0x11')](_0x8c29('0xc'),_0x254d3b,_0x47bae9[_0x8c29('0x11')][_0x8c29('0x13')]);return _0x29e9e0(_0x47bae9[_0x8c29('0x11')][_0x8c29('0x13')]);}logger[_0x8c29('0x11')]('VoiceQueuesLog,\x20%s,\x20%s',_0x254d3b,_0x47bae9[_0x8c29('0x11')][_0x8c29('0x13')]);return _0xef6e28(_0x47bae9['error']['message']);}else{logger[_0x8c29('0x14')](_0x8c29('0xc'),_0x254d3b,'request\x20sent');_0xef6e28(_0x47bae9[_0x8c29('0x15')][_0x8c29('0x13')]);}})[_0x8c29('0x16')](function(_0x5588a8){logger[_0x8c29('0x11')](_0x8c29('0xc'),_0x254d3b,_0x5588a8);_0x29e9e0(_0x5588a8);});});}
\ No newline at end of file
+var _0x180f=['result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x15c7e2,_0xb1e9d9){var _0x4fab36=function(_0x1db526){while(--_0x1db526){_0x15c7e2['push'](_0x15c7e2['shift']());}};_0x4fab36(++_0xb1e9d9);}(_0x180f,0xf3));var _0xf180=function(_0x5cbace,_0x33943c){_0x5cbace=_0x5cbace-0x0;var _0x6de5b8=_0x180f[_0x5cbace];return _0x6de5b8;};'use strict';var _=require(_0xf180('0x0'));var util=require(_0xf180('0x1'));var moment=require('moment');var BPromise=require(_0xf180('0x2'));var rs=require(_0xf180('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf180('0x4'))['db'];var utils=require(_0xf180('0x5'));var logger=require(_0xf180('0x6'))(_0xf180('0x7'));var config=require(_0xf180('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf180('0x9')][_0xf180('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x513113,_0x47d87b,_0x1d6ca7){return new BPromise(function(_0x303412,_0x342a02){return client[_0xf180('0xb')](_0x513113,_0x1d6ca7)[_0xf180('0xc')](function(_0x4390be){logger[_0xf180('0xd')](_0xf180('0xe'),_0x47d87b,_0xf180('0xf'));logger['debug'](_0xf180('0x10'),_0x47d87b,_0xf180('0xf'),JSON[_0xf180('0x11')](_0x4390be));if(_0x4390be[_0xf180('0x12')]){if(_0x4390be[_0xf180('0x12')][_0xf180('0x13')]===0x1f4){logger[_0xf180('0x12')](_0xf180('0xe'),_0x47d87b,_0x4390be[_0xf180('0x12')][_0xf180('0x14')]);return _0x342a02(_0x4390be[_0xf180('0x12')]['message']);}logger[_0xf180('0x12')](_0xf180('0xe'),_0x47d87b,_0x4390be[_0xf180('0x12')][_0xf180('0x14')]);return _0x303412(_0x4390be['error'][_0xf180('0x14')]);}else{logger[_0xf180('0xd')](_0xf180('0xe'),_0x47d87b,'request\x20sent');_0x303412(_0x4390be[_0xf180('0x15')][_0xf180('0x14')]);}})['catch'](function(_0x115b86){logger[_0xf180('0x12')]('VoiceQueuesLog,\x20%s,\x20%s',_0x47d87b,_0x115b86);_0x342a02(_0x115b86);});});}
\ No newline at end of file
index dc4d194..4cd5b27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a1=['/:id','show','/:id/download','download','downloads','downloadTranscribe','post','runTranscribe','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x427b2a,_0x181905){var _0x239493=function(_0x3602c6){while(--_0x3602c6){_0x427b2a['push'](_0x427b2a['shift']());}};_0x239493(++_0x181905);}(_0x28a1,0xa7));var _0x128a=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0x28a1[_0x1589dd];return _0x1bddd1;};'use strict';var multer=require(_0x128a('0x0'));var util=require(_0x128a('0x1'));var path=require('path');var timeout=require(_0x128a('0x2'));var express=require(_0x128a('0x3'));var router=express[_0x128a('0x4')]();var fs_extra=require(_0x128a('0x5'));var auth=require(_0x128a('0x6'));var interaction=require(_0x128a('0x7'));var config=require(_0x128a('0x8'));var controller=require(_0x128a('0x9'));router[_0x128a('0xa')]('/',auth[_0x128a('0xb')](),controller[_0x128a('0xc')]);router['get'](_0x128a('0xd'),auth[_0x128a('0xb')](),controller[_0x128a('0xe')]);router[_0x128a('0xa')](_0x128a('0xf'),auth[_0x128a('0xb')](),controller[_0x128a('0x10')]);router[_0x128a('0xa')](_0x128a('0x11'),auth[_0x128a('0xb')](),controller[_0x128a('0x12')]);router[_0x128a('0xa')]('/:id/downloads',controller[_0x128a('0x13')]);router[_0x128a('0xa')]('/:id/transcribe',auth[_0x128a('0xb')](),controller[_0x128a('0x14')]);router[_0x128a('0x15')]('/',auth[_0x128a('0xb')](),controller['create']);router[_0x128a('0x15')]('/:id/transcribe',auth[_0x128a('0xb')](),controller[_0x128a('0x16')]);router['put'](_0x128a('0xf'),auth[_0x128a('0xb')](),controller[_0x128a('0x17')]);router[_0x128a('0x18')](_0x128a('0xf'),auth['isAuthenticated'](),controller[_0x128a('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x16b0=['isAuthenticated','index','describe','/:id','show','/:id/download','download','/:id/downloads','downloads','downloadTranscribe','post','create','runTranscribe','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','get'];(function(_0x3c5608,_0x58d13e){var _0x4f15c3=function(_0x4ed841){while(--_0x4ed841){_0x3c5608['push'](_0x3c5608['shift']());}};_0x4f15c3(++_0x58d13e);}(_0x16b0,0x104));var _0x016b=function(_0x41fc8c,_0x437d09){_0x41fc8c=_0x41fc8c-0x0;var _0x420f3f=_0x16b0[_0x41fc8c];return _0x420f3f;};'use strict';var multer=require(_0x016b('0x0'));var util=require(_0x016b('0x1'));var path=require(_0x016b('0x2'));var timeout=require(_0x016b('0x3'));var express=require(_0x016b('0x4'));var router=express[_0x016b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x016b('0x6'));var interaction=require(_0x016b('0x7'));var config=require('../../config/environment');var controller=require(_0x016b('0x8'));router[_0x016b('0x9')]('/',auth[_0x016b('0xa')](),controller[_0x016b('0xb')]);router[_0x016b('0x9')]('/describe',auth[_0x016b('0xa')](),controller[_0x016b('0xc')]);router[_0x016b('0x9')](_0x016b('0xd'),auth[_0x016b('0xa')](),controller[_0x016b('0xe')]);router[_0x016b('0x9')](_0x016b('0xf'),auth[_0x016b('0xa')](),controller[_0x016b('0x10')]);router[_0x016b('0x9')](_0x016b('0x11'),controller[_0x016b('0x12')]);router[_0x016b('0x9')]('/:id/transcribe',auth[_0x016b('0xa')](),controller[_0x016b('0x13')]);router[_0x016b('0x14')]('/',auth[_0x016b('0xa')](),controller[_0x016b('0x15')]);router[_0x016b('0x14')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0x016b('0x16')]);router[_0x016b('0x17')](_0x016b('0xd'),auth[_0x016b('0xa')](),controller['update']);router[_0x016b('0x18')](_0x016b('0xd'),auth[_0x016b('0xa')](),controller[_0x016b('0x19')]);module[_0x016b('0x1a')]=router;
\ No newline at end of file
index 5669e13..0a83cce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index 31a7637..c570bdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3285=['[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','aws-sdk','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','options','includeAll','include','catch','show','params','find','create','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','decryptFile','secrets','recording','ValidationError','filename','extname','unlink','message','VoiceRecording\x20not\x20found','send','sequelize','MD5','col','token','$and','push','existsSync','Sequelize','download','isNil','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','info','File:\x20\x22','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets'];(function(_0x498830,_0x7f591c){var _0x399129=function(_0x39bf92){while(--_0x39bf92){_0x498830['push'](_0x498830['shift']());}};_0x399129(++_0x7f591c);}(_0x3285,0x9e));var _0x5328=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0x3285[_0x576170];return _0x397c70;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5328('0x0'));var zipdir=require(_0x5328('0x1'));var jsonpatch=require(_0x5328('0x2'));var rp=require(_0x5328('0x3'));var moment=require('moment');var BPromise=require(_0x5328('0x4'));var Mustache=require('mustache');var util=require(_0x5328('0x5'));var path=require('path');var sox=require(_0x5328('0x6'));var csv=require(_0x5328('0x7'));var ejs=require(_0x5328('0x8'));var fs=require('fs');var fs_extra=require(_0x5328('0x9'));var _=require(_0x5328('0xa'));var squel=require('squel');var crypto=require(_0x5328('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5328('0xc'));var toCsv=require(_0x5328('0x7'));var querystring=require(_0x5328('0xd'));var Papa=require('papaparse');var AWS=require(_0x5328('0xe'));var uuidv4=require('uuid/v4');var Redis=require('ioredis');var authService=require(_0x5328('0xf'));var qs=require(_0x5328('0x10'));var as=require(_0x5328('0x11'));var hardwareService=require(_0x5328('0x12'));var logger=require(_0x5328('0x13'))(_0x5328('0x14'));var utils=require(_0x5328('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5328('0x16'))['db'];function respondWithStatusCode(_0x1d72ef,_0xb92f0){_0xb92f0=_0xb92f0||0xcc;return function(_0x1c1289){if(_0x1c1289){return _0x1d72ef[_0x5328('0x17')](_0xb92f0);}return _0x1d72ef[_0x5328('0x18')](_0xb92f0)[_0x5328('0x19')]();};}function respondWithResult(_0x200b8d,_0x22ee9c){_0x22ee9c=_0x22ee9c||0xc8;return function(_0xc1e456){if(_0xc1e456){return _0x200b8d[_0x5328('0x18')](_0x22ee9c)[_0x5328('0x1a')](_0xc1e456);}};}function respondWithFilteredResult(_0x1743a0,_0x89d98c){return function(_0x2c1dd5){if(_0x2c1dd5){var _0x232561=typeof _0x89d98c[_0x5328('0x1b')]===_0x5328('0x1c')&&typeof _0x89d98c['limit']===_0x5328('0x1c');var _0x24be86=_0x2c1dd5[_0x5328('0x1d')];var _0x1c8279=_0x232561?0x0:_0x89d98c[_0x5328('0x1b')];var _0x12e21d=_0x232561?_0x2c1dd5['count']:_0x89d98c[_0x5328('0x1b')]+_0x89d98c[_0x5328('0x1e')];var _0x9e2da;if(_0x12e21d>=_0x24be86){_0x12e21d=_0x24be86;_0x9e2da=0xc8;}else{_0x9e2da=0xce;}_0x1743a0['status'](_0x9e2da);return _0x1743a0[_0x5328('0x1f')](_0x5328('0x20'),_0x1c8279+'-'+_0x12e21d+'/'+_0x24be86)[_0x5328('0x1a')](_0x2c1dd5);}return null;};}function patchUpdates(_0x45f059){return function(_0x279001){try{jsonpatch[_0x5328('0x21')](_0x279001,_0x45f059,!![]);}catch(_0x40155a){return BPromise[_0x5328('0x22')](_0x40155a);}return _0x279001['save']();};}function saveUpdates(_0x455af0,_0x28034a){return function(_0x26a756){if(_0x26a756){return _0x26a756[_0x5328('0x23')](_0x455af0)[_0x5328('0x24')](function(_0x557f10){return _0x557f10;});}return null;};}function removeEntity(_0x525d2b,_0x56dccf){return function(_0x127b71){if(_0x127b71){return _0x127b71[_0x5328('0x25')]()[_0x5328('0x24')](function(){_0x525d2b[_0x5328('0x18')](0xcc)[_0x5328('0x19')]();});}};}function handleEntityNotFound(_0x50a241,_0xa3cbc0){return function(_0x16c5e8){if(!_0x16c5e8){_0x50a241[_0x5328('0x17')](0x194);}return _0x16c5e8;};}function handleError(_0x213625,_0x507f5c){_0x507f5c=_0x507f5c||0x1f4;return function(_0x1f4c16){logger[_0x5328('0x26')](_0x1f4c16[_0x5328('0x27')]);if(_0x1f4c16[_0x5328('0x28')]){delete _0x1f4c16[_0x5328('0x28')];}_0x213625[_0x5328('0x18')](_0x507f5c)['send'](_0x1f4c16);};}exports[_0x5328('0x29')]=function(_0x427182,_0x268c6b){var _0x25b52c={},_0x5559d2={},_0x13784e={'count':0x0,'rows':[]};var _0x40f999=_[_0x5328('0x2a')](db[_0x5328('0x2b')]['rawAttributes'],function(_0x1b6d8b){return{'name':_0x1b6d8b[_0x5328('0x2c')],'type':_0x1b6d8b[_0x5328('0x2d')][_0x5328('0x2e')]};});_0x5559d2[_0x5328('0x2f')]=_[_0x5328('0x30')](_[_0x5328('0x2a')](_0x40f999,'name'),[_0x5328('0x31')]);_0x5559d2['query']=_[_0x5328('0x32')](_0x427182[_0x5328('0x33')]);_0x5559d2[_0x5328('0x34')]=_[_0x5328('0x35')](_0x5559d2[_0x5328('0x2f')],_0x5559d2[_0x5328('0x33')]);_0x25b52c[_0x5328('0x36')]=_[_0x5328('0x35')](_0x5559d2[_0x5328('0x2f')],qs[_0x5328('0x37')](_0x427182[_0x5328('0x33')][_0x5328('0x37')]));_0x25b52c[_0x5328('0x36')]=_0x25b52c['attributes'][_0x5328('0x38')]?_0x25b52c[_0x5328('0x36')]:_0x5559d2[_0x5328('0x2f')];if(!_0x427182[_0x5328('0x33')]['hasOwnProperty']('nolimit')){_0x25b52c['limit']=qs['limit'](_0x427182[_0x5328('0x33')]['limit']);_0x25b52c[_0x5328('0x1b')]=qs[_0x5328('0x1b')](_0x427182[_0x5328('0x33')]['offset']);}_0x25b52c[_0x5328('0x39')]=qs[_0x5328('0x3a')](_0x427182[_0x5328('0x33')][_0x5328('0x3a')]);_0x25b52c[_0x5328('0x3b')]=qs[_0x5328('0x34')](_[_0x5328('0x3c')](_0x427182['query'],_0x5559d2[_0x5328('0x34')]),_0x40f999);if(_0x427182['query'][_0x5328('0x3d')]){_0x25b52c[_0x5328('0x3b')]=_[_0x5328('0x3e')](_0x25b52c[_0x5328('0x3b')],{'$or':_[_0x5328('0x2a')](_0x40f999,function(_0x41426d){if(_0x41426d['type']!=='VIRTUAL'){var _0x491519={};_0x491519[_0x41426d[_0x5328('0x28')]]={'$like':'%'+_0x427182[_0x5328('0x33')][_0x5328('0x3d')]+'%'};return _0x491519;}})});}_0x25b52c=_[_0x5328('0x3e')]({},_0x25b52c,_0x427182[_0x5328('0x3f')]);var _0x1e9c7c={'where':_0x25b52c[_0x5328('0x3b')]};return db[_0x5328('0x2b')][_0x5328('0x1d')](_0x1e9c7c)[_0x5328('0x24')](function(_0x4d3014){_0x13784e[_0x5328('0x1d')]=_0x4d3014;if(_0x427182[_0x5328('0x33')][_0x5328('0x40')]){_0x25b52c[_0x5328('0x41')]=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x25b52c);})[_0x5328('0x24')](function(_0x4ae0f8){_0x13784e['rows']=_0x4ae0f8;return _0x13784e;})[_0x5328('0x24')](respondWithFilteredResult(_0x268c6b,_0x25b52c))[_0x5328('0x42')](handleError(_0x268c6b,null));};exports[_0x5328('0x43')]=function(_0x374fda,_0x29126a){var _0x4ac241={'raw':![],'where':{'id':_0x374fda[_0x5328('0x44')]['id']}},_0x92952e={};_0x92952e[_0x5328('0x2f')]=_[_0x5328('0x32')](db[_0x5328('0x2b')]['rawAttributes']);_0x92952e['query']=_[_0x5328('0x32')](_0x374fda[_0x5328('0x33')]);_0x92952e['filters']=_['intersection'](_0x92952e[_0x5328('0x2f')],_0x92952e['query']);_0x4ac241[_0x5328('0x36')]=_[_0x5328('0x35')](_0x92952e[_0x5328('0x2f')],qs[_0x5328('0x37')](_0x374fda[_0x5328('0x33')]['fields']));_0x4ac241[_0x5328('0x36')]=_0x4ac241[_0x5328('0x36')]['length']?_0x4ac241[_0x5328('0x36')]:_0x92952e['model'];if(_0x374fda[_0x5328('0x33')][_0x5328('0x40')]){_0x4ac241['include']=[{'all':!![]}];}_0x4ac241=_['merge']({},_0x4ac241,_0x374fda['options']);return db['VoiceRecording'][_0x5328('0x45')](_0x4ac241)[_0x5328('0x24')](handleEntityNotFound(_0x29126a,null))['then'](respondWithResult(_0x29126a,null))[_0x5328('0x42')](handleError(_0x29126a,null));};exports[_0x5328('0x46')]=function(_0x4e8cbf,_0xf8b978){return db['VoiceRecording'][_0x5328('0x46')](_0x4e8cbf['body'],{})[_0x5328('0x24')](respondWithResult(_0xf8b978,0xc9))[_0x5328('0x42')](handleError(_0xf8b978,null));};exports[_0x5328('0x23')]=function(_0x5d1c4b,_0x22c0d1){if(_0x5d1c4b['body']['id']){delete _0x5d1c4b[_0x5328('0x47')]['id'];}return db[_0x5328('0x2b')][_0x5328('0x45')]({'where':{'id':_0x5d1c4b[_0x5328('0x44')]['id']}})[_0x5328('0x24')](handleEntityNotFound(_0x22c0d1,null))['then'](saveUpdates(_0x5d1c4b[_0x5328('0x47')],null))[_0x5328('0x24')](respondWithResult(_0x22c0d1,null))[_0x5328('0x42')](handleError(_0x22c0d1,null));};exports[_0x5328('0x48')]=function(_0x1bee4c,_0x3aac0b){return db[_0x5328('0x2b')][_0x5328('0x48')]()[_0x5328('0x24')](respondWithResult(_0x3aac0b,null))[_0x5328('0x42')](handleError(_0x3aac0b,null));};exports['download']=function(_0x3fe21b,_0x4dc281,_0xfaccc9){var _0x2c0535=require(_0x5328('0x49'));var _0x3aca44=![];var _0x25dcc7={};if(_0x3fe21b[_0x5328('0x33')][_0x5328('0x2d')]&&_0x3fe21b[_0x5328('0x33')][_0x5328('0x2d')]===_0x5328('0x4a')){_0x25dcc7['uniqueid']=_0x3fe21b[_0x5328('0x44')]['id'];}else{_0x25dcc7['id']=_0x3fe21b[_0x5328('0x44')]['id'];}return db[_0x5328('0x2b')][_0x5328('0x45')]({'where':_0x25dcc7,'attributes':['id',_0x5328('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x4dc281,null))['then'](function(_0x26d24a){if(_0x26d24a){var _0x43b5fb=_0x26d24a[_0x5328('0x4b')];var _0x282050=util[_0x5328('0x31')](_0x5328('0x4c'),_0x43b5fb);if(fs['existsSync'](_0x282050)){_0x3aca44=!![];return _0x2c0535[_0x5328('0x4d')](_0x282050,_0x43b5fb,config[_0x5328('0x4e')][_0x5328('0x4f')])[_0x5328('0x24')](function(){return _0x26d24a;});}return _0x26d24a;}})[_0x5328('0x24')](function(_0x3bc3c6){if(_0x3bc3c6){var _0x442ee2=_0x3bc3c6[_0x5328('0x4b')];if(!fs['existsSync'](_0x442ee2)){throw new db['Sequelize'][(_0x5328('0x50'))]('VoiceRecording\x20not\x20found');}if(_0x3bc3c6[_0x5328('0x51')]){return _0x4dc281['download'](_0x442ee2,_0x3bc3c6['filename']+path[_0x5328('0x52')](_0x442ee2),function(){if(_0x3aca44){fs[_0x5328('0x53')](_0x442ee2);}});}else{return _0x4dc281['download'](_0x442ee2,function(_0x36a7c1){if(_0x3aca44){fs[_0x5328('0x53')](_0x442ee2);}});}}})['catch'](function(_0x451b91){if(_0x451b91[_0x5328('0x54')]===_0x5328('0x55')){_0x4dc281['status'](0x194)[_0x5328('0x56')]('Not\x20found');}else{return handleError(_0x4dc281,null);}});};exports['downloads']=function(_0x450c35,_0x270f94,_0x2afc8d){var _0x22676b=require(_0x5328('0x49'));var _0x510a4c=![];var _0x2d0197={'$and':[db[_0x5328('0x57')][_0x5328('0x3b')](db[_0x5328('0x57')]['fn'](_0x5328('0x58'),db[_0x5328('0x57')][_0x5328('0x59')](_0x5328('0x4a'))),_0x450c35[_0x5328('0x33')][_0x5328('0x5a')])]};if(_0x450c35[_0x5328('0x33')][_0x5328('0x2d')]&&_0x450c35['query'][_0x5328('0x2d')]===_0x5328('0x4a')){_0x2d0197[_0x5328('0x5b')][_0x5328('0x5c')]({'uniqueid':_0x450c35[_0x5328('0x44')]['id']});}else{_0x2d0197[_0x5328('0x5b')][_0x5328('0x5c')]({'id':_0x450c35[_0x5328('0x44')]['id']});}return db['VoiceRecording'][_0x5328('0x45')]({'where':_0x2d0197,'attributes':['id',_0x5328('0x4b')],'raw':!![]})[_0x5328('0x24')](handleEntityNotFound(_0x270f94,null))[_0x5328('0x24')](function(_0x1a3578){if(_0x1a3578){var _0x840e89=util['format'](_0x5328('0x4c'),_0x1a3578[_0x5328('0x4b')]);if(fs['existsSync'](_0x840e89)){_0x510a4c=!![];return _0x22676b['decryptFile'](_0x840e89,_0x1a3578[_0x5328('0x4b')],config[_0x5328('0x4e')][_0x5328('0x4f')])['then'](function(){return _0x1a3578;});}return _0x1a3578;}})[_0x5328('0x24')](function(_0x46ffbf){if(_0x46ffbf){if(!fs[_0x5328('0x5d')](_0x46ffbf[_0x5328('0x4b')])){throw new db[(_0x5328('0x5e'))][(_0x5328('0x50'))](_0x5328('0x55'));}if(_0x46ffbf[_0x5328('0x51')]){return _0x270f94[_0x5328('0x5f')](_0x46ffbf['value'],_0x46ffbf[_0x5328('0x51')]+path[_0x5328('0x52')](_0x46ffbf[_0x5328('0x4b')]),function(){if(_0x510a4c){fs[_0x5328('0x53')](_0x46ffbf['value']);}});}else{return _0x270f94[_0x5328('0x5f')](_0x46ffbf[_0x5328('0x4b')],function(_0x1312f2){if(_0x510a4c){fs['unlink'](_0x46ffbf[_0x5328('0x4b')]);}});}}})[_0x5328('0x42')](handleError(_0x270f94,null));};exports[_0x5328('0x25')]=function(_0x52fdb6,_0x196d25){return db[_0x5328('0x2b')][_0x5328('0x45')]({'where':{'id':_0x52fdb6['params']['id']}})[_0x5328('0x24')](function(_0x55ac9f){if(_[_0x5328('0x60')](_0x55ac9f)){throw new ReferenceError('Entity\x20not\x20found');}return _0x55ac9f;})[_0x5328('0x24')](function(_0xc5b4b7){var _0x304295=_0xc5b4b7[_0x5328('0x4b')];logger['info'](_0x5328('0x61'),_0x304295);if(!_[_0x5328('0x60')](_0xc5b4b7[_0x5328('0x4b')])&&fs['existsSync'](_0x304295)){logger['info']('File:\x20\x22'+_0x304295+_0x5328('0x62'));fs[_0x5328('0x63')](_0x304295);}_0x304295=_0x304295+'.cypher';if(!_[_0x5328('0x60')](_0xc5b4b7[_0x5328('0x4b')])&&fs[_0x5328('0x5d')](_0x304295)){logger[_0x5328('0x64')](_0x5328('0x65')+_0x304295+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x304295);}return _0xc5b4b7;})['then'](function(_0x4ccb55){if(!_0x4ccb55)throw new InternalError();return _0x4ccb55[_0x5328('0x25')]();})[_0x5328('0x24')](function(){_0x196d25[_0x5328('0x18')](0xcc)[_0x5328('0x19')]();})['catch'](handleError(_0x196d25,null));};function getBucketslist(_0x5ef59e,_0xfbb4ea,_0x4b1d5c){return new Promise(function(_0x1544f9,_0x9b1c0){var _0x43164b=new AWS['S3']({'accessKeyId':_0xfbb4ea,'secretAccessKey':_0x5ef59e,'region':_0x4b1d5c});_0x43164b[_0x5328('0x66')]({},function(_0x49dc51,_0x754447){if(_0x49dc51){return _0x9b1c0(_0x49dc51);}else{return _0x1544f9(_0x754447);}});});}function createBucket(_0x2a3247,_0x34745c,_0x40289c,_0xf01de5){return new Promise(function(_0x219d2c,_0x6c3f4f){var _0x414f54=new AWS['S3']({'accessKeyId':_0x34745c,'secretAccessKey':_0x2a3247,'region':_0x40289c});_0x414f54[_0x5328('0x67')]({'Bucket':_0xf01de5},function(_0x5eaf21,_0x20877a){if(_0x5eaf21){return _0x6c3f4f(_0x5eaf21);}else{return _0x219d2c(_0x20877a);}});});}function uploadFile(_0x5e8129,_0x2862d3,_0x5c52ca,_0xc570f0,_0x48c6fe,_0x272d8e){return new Promise(function(_0x8db2a8,_0x518c12){var _0x427646=new AWS['S3']({'accessKeyId':_0x2862d3,'secretAccessKey':_0x5e8129,'region':_0x5c52ca});_0x427646[_0x5328('0x68')]({'Bucket':_0xc570f0,'Key':_0x48c6fe,'Body':_0x272d8e},function(_0x46eb44,_0x3fef82){if(_0x46eb44){return _0x518c12(_0x46eb44);}else{return _0x8db2a8(_0x3fef82);}});});}function startTranscribe(_0xc303b9,_0xf3a0e,_0x1a7fa8,_0x3e14f2,_0x44a506,_0x27bbfc){return new Promise(function(_0x19bb7e,_0x3e1fd4){var _0x2c7bce=new AWS[(_0x5328('0x69'))]({'accessKeyId':_0xf3a0e,'secretAccessKey':_0xc303b9,'region':_0x1a7fa8});_0x2c7bce[_0x5328('0x6a')]({'TranscriptionJobName':_0x3e14f2,'LanguageCode':_0x44a506,'Media':{'MediaFileUri':_0x27bbfc}},function(_0x25fb3d,_0x1ebf7b){if(_0x25fb3d){return _0x3e1fd4(_0x25fb3d);}else{return _0x19bb7e(_0x1ebf7b);}});});}function transcribe(_0x23b0a4,_0x2ba538,_0x5e789c,_0x2b4069,_0x413a39,_0x22cafe,_0xb572de){return new Promise(function(_0x249c2e,_0x5f321a){var _0x341c76={};logger['info'](util[_0x5328('0x31')](_0x5328('0x6b'),_0x23b0a4,_0x413a39));return uploadFile(_0x2ba538,_0x5e789c,_0x2b4069,_0x413a39,path[_0x5328('0x6c')](_0x22cafe),fs[_0x5328('0x6d')](_0x22cafe))[_0x5328('0x24')](function(_0x56c61a){logger[_0x5328('0x64')](util[_0x5328('0x31')](_0x5328('0x6e'),_0x23b0a4,_0x413a39,_0x56c61a['Location']));_0x341c76[_0x5328('0x6f')]=_0x56c61a[_0x5328('0x70')];_0x341c76[_0x5328('0x71')]=_0x56c61a[_0x5328('0x72')];logger[_0x5328('0x64')](util['format']('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x23b0a4));return startTranscribe(_0x2ba538,_0x5e789c,_0x2b4069,uuidv4(),_0xb572de,_0x56c61a[_0x5328('0x72')]);})['then'](function(_0x430d70){logger['info'](util[_0x5328('0x31')](_0x5328('0x73'),_0x23b0a4,_0x430d70[_0x5328('0x74')][_0x5328('0x75')]));_0x341c76[_0x5328('0x76')]=_0x430d70[_0x5328('0x74')][_0x5328('0x75')];_0x341c76[_0x5328('0x77')]=_0x430d70[_0x5328('0x74')][_0x5328('0x78')];return _0x249c2e(_0x341c76);})[_0x5328('0x42')](function(_0x3d48a0){return _0x5f321a(_0x3d48a0);});});}exports[_0x5328('0x79')]=function(_0x593c08,_0x3bc0de,_0x5cd867){var _0xa5f10c;var _0x1f376b;var _0x32f69e;var _0x35e774=require(_0x5328('0x49'));return db[_0x5328('0x2b')]['findOne']({'where':{'id':_0x593c08[_0x5328('0x44')]['id']}})[_0x5328('0x24')](function(_0xc4a76e){if(_0xc4a76e){var _0x3653d9=util[_0x5328('0x31')]('%s.cypher',_0xc4a76e['value']);if(fs['existsSync'](_0x3653d9)){cypher=!![];return _0x35e774[_0x5328('0x4d')](_0x3653d9,_0xc4a76e[_0x5328('0x4b')],config[_0x5328('0x4e')][_0x5328('0x4f')])[_0x5328('0x24')](function(){return _0xc4a76e;});}return _0xc4a76e;}})[_0x5328('0x24')](function(_0x41a5aa){if(!_0x41a5aa){throw new db[(_0x5328('0x5e'))][(_0x5328('0x50'))](_0x5328('0x7a'));}_0x1f376b=_0x41a5aa;return db[_0x5328('0x7b')][_0x5328('0x7c')]({'where':{'id':0x1}});})[_0x5328('0x24')](handleEntityNotFound(_0x3bc0de,null))['then'](function(_0x1da717){if(_0x1da717){_0xa5f10c=_0x1da717;if(!_0xa5f10c[_0x5328('0x7d')]||!_0xa5f10c[_0x5328('0x7e')]||!_0xa5f10c[_0x5328('0x7f')]||!_0xa5f10c['language']||!_0xa5f10c[_0x5328('0x6f')]){throw new db[(_0x5328('0x5e'))][(_0x5328('0x50'))](_0x5328('0x80'));}if(_0x593c08['body'][_0x5328('0x81')]&&(!_0xa5f10c['sentiment']||!_0xa5f10c[_0x5328('0x82')]||!_0xa5f10c[_0x5328('0x83')]||!_0xa5f10c[_0x5328('0x84')]||!_0xa5f10c['bucket'])){throw new db[(_0x5328('0x5e'))][(_0x5328('0x50'))](_0x5328('0x85'));}return db[_0x5328('0x86')][_0x5328('0x7c')]({'where':{'id':_0xa5f10c['transcribeAccountId']}});}})[_0x5328('0x24')](function(_0x1a6113){if(!_0x1a6113){throw new db['Sequelize'][(_0x5328('0x50'))](_0x5328('0x87'));}if(!_0x1a6113['data1']||!_0x1a6113[_0x5328('0x88')]){throw new db['Sequelize'][(_0x5328('0x50'))](_0x5328('0x89'));}_0x32f69e=_0x1a6113;return getBucketslist(_0x32f69e[_0x5328('0x8a')],_0x32f69e[_0x5328('0x88')],_0xa5f10c['transcribeRegion']);})['then'](function(_0x164777){if(_0x164777&&_0x164777[_0x5328('0x8b')]){var _0x2828ce=_['find'](_0x164777['Buckets'],function(_0x1f40f4){return _0x1f40f4['Name']===_0xa5f10c['bucket'];});if(!_0x2828ce){logger[_0x5328('0x64')](util['format'](_0x5328('0x8c'),_0x593c08[_0x5328('0x44')]['id'],_0xa5f10c[_0x5328('0x6f')]));return createBucket(_0x32f69e[_0x5328('0x8a')],_0x32f69e[_0x5328('0x88')],_0xa5f10c[_0x5328('0x7f')],_0xa5f10c['bucket']);}logger[_0x5328('0x64')](util[_0x5328('0x31')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x593c08[_0x5328('0x44')]['id'],_0xa5f10c[_0x5328('0x6f')]));return;}})['then'](function(_0x3b4069){if(_0x1f376b[_0x5328('0x77')]===_0x5328('0x8d')){return transcribe(_0x593c08[_0x5328('0x44')]['id'],_0x32f69e['data1'],_0x32f69e['data2'],_0xa5f10c[_0x5328('0x7f')],_0xa5f10c[_0x5328('0x6f')],_0x1f376b[_0x5328('0x4b')],_0xa5f10c[_0x5328('0x84')]);}else{logger['info'](util[_0x5328('0x31')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x593c08[_0x5328('0x44')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x5328('0x24')](function(_0x36e416){if(_0x36e416){_0x36e416['tempSentiment']=_0x593c08[_0x5328('0x47')][_0x5328('0x81')];return _0x1f376b[_0x5328('0x8e')](_0x36e416);}})[_0x5328('0x24')](respondWithResult(_0x3bc0de,null))[_0x5328('0x42')](handleError(_0x3bc0de,null));};function writeFile(_0x1dfa82,_0x24cfd0){return new Promise(function(_0x670c9a,_0x47c357){fs[_0x5328('0x8f')](_0x24cfd0,_0x1dfa82,function(_0x3316f7,_0x359c72){if(_0x3316f7){return _0x47c357(_0x3316f7);}else{return _0x670c9a(_0x359c72);}});});}exports[_0x5328('0x90')]=function(_0x43d28b,_0x28bc32,_0x27b914){return db[_0x5328('0x2b')][_0x5328('0x7c')]({'where':{'id':_0x43d28b[_0x5328('0x44')]['id']}})['then'](handleEntityNotFound(_0x28bc32))[_0x5328('0x24')](function(_0xd7836b){if(_0xd7836b&&_0xd7836b[_0x5328('0x91')]){var _0x2b9f92=_0xd7836b[_0x5328('0x91')];var _0x281848=config[_0x5328('0x92')]+'/server/files/transcribes/transcribe_'+_0xd7836b['id']+_0x5328('0x93');if(fs[_0x5328('0x5d')](_0x281848)){return _0x281848;}return writeFile(_0x2b9f92,_0x281848)[_0x5328('0x24')](function(){return _0x281848;});}else{throw new db[(_0x5328('0x5e'))]['ValidationError'](_0x5328('0x94'));}})['then'](function(_0x583361){return _0x28bc32['download'](_0x583361);})['catch'](handleError(_0x28bc32));};
\ No newline at end of file
+var _0x8666=['options','find','catch','create','body','describe','uniqueid','value','format','existsSync','decryptFile','secrets','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','download','extname','unlink','message','downloads','../../components/encryptor','sequelize','$and','push','recording','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','%s.cypher','Setting','transcribe','language','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','data1','data2','transcribeRegion','Buckets','Name','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','.txt','Transcript\x20not\x20available','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','papaparse','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','merge','findAll','rows','show','params','includeAll','include'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8666,0x180));var _0x6866=function(_0x1f7996,_0x299a14){_0x1f7996=_0x1f7996-0x0;var _0x584609=_0x8666[_0x1f7996];return _0x584609;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6866('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6866('0x1'));var rp=require(_0x6866('0x2'));var moment=require(_0x6866('0x3'));var BPromise=require(_0x6866('0x4'));var Mustache=require(_0x6866('0x5'));var util=require(_0x6866('0x6'));var path=require('path');var sox=require(_0x6866('0x7'));var csv=require(_0x6866('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6866('0x9'));var _=require(_0x6866('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6866('0xb'));var deskjs=require(_0x6866('0xc'));var toCsv=require(_0x6866('0x8'));var querystring=require('querystring');var Papa=require(_0x6866('0xd'));var AWS=require(_0x6866('0xe'));var uuidv4=require('uuid/v4');var Redis=require(_0x6866('0xf'));var authService=require(_0x6866('0x10'));var qs=require(_0x6866('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6866('0x12'));var logger=require(_0x6866('0x13'))(_0x6866('0x14'));var utils=require('../../config/utils');var config=require(_0x6866('0x15'));var licenseUtil=require(_0x6866('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf6644e,_0x43fa74){_0x43fa74=_0x43fa74||0xcc;return function(_0x515a25){if(_0x515a25){return _0xf6644e['sendStatus'](_0x43fa74);}return _0xf6644e[_0x6866('0x17')](_0x43fa74)[_0x6866('0x18')]();};}function respondWithResult(_0x4b1e77,_0x1f90dd){_0x1f90dd=_0x1f90dd||0xc8;return function(_0x376abd){if(_0x376abd){return _0x4b1e77[_0x6866('0x17')](_0x1f90dd)[_0x6866('0x19')](_0x376abd);}};}function respondWithFilteredResult(_0x11ddf4,_0x510b5a){return function(_0x4dab98){if(_0x4dab98){var _0x55d878=typeof _0x510b5a[_0x6866('0x1a')]===_0x6866('0x1b')&&typeof _0x510b5a[_0x6866('0x1c')]===_0x6866('0x1b');var _0x25b72d=_0x4dab98[_0x6866('0x1d')];var _0xecd1a8=_0x55d878?0x0:_0x510b5a[_0x6866('0x1a')];var _0x338ee4=_0x55d878?_0x4dab98[_0x6866('0x1d')]:_0x510b5a[_0x6866('0x1a')]+_0x510b5a[_0x6866('0x1c')];var _0x65062f;if(_0x338ee4>=_0x25b72d){_0x338ee4=_0x25b72d;_0x65062f=0xc8;}else{_0x65062f=0xce;}_0x11ddf4[_0x6866('0x17')](_0x65062f);return _0x11ddf4[_0x6866('0x1e')](_0x6866('0x1f'),_0xecd1a8+'-'+_0x338ee4+'/'+_0x25b72d)['json'](_0x4dab98);}return null;};}function patchUpdates(_0x26a213){return function(_0x495d58){try{jsonpatch[_0x6866('0x20')](_0x495d58,_0x26a213,!![]);}catch(_0x477a04){return BPromise[_0x6866('0x21')](_0x477a04);}return _0x495d58[_0x6866('0x22')]();};}function saveUpdates(_0x10a3c5,_0x3a7460){return function(_0x4406f7){if(_0x4406f7){return _0x4406f7[_0x6866('0x23')](_0x10a3c5)[_0x6866('0x24')](function(_0x556e1b){return _0x556e1b;});}return null;};}function removeEntity(_0x11ae84,_0x54f0f6){return function(_0x490bcc){if(_0x490bcc){return _0x490bcc[_0x6866('0x25')]()[_0x6866('0x24')](function(){_0x11ae84[_0x6866('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1325cb,_0x20d6be){return function(_0x52f5f2){if(!_0x52f5f2){_0x1325cb[_0x6866('0x26')](0x194);}return _0x52f5f2;};}function handleError(_0x1a02fd,_0x4f36b7){_0x4f36b7=_0x4f36b7||0x1f4;return function(_0x3e0b40){logger[_0x6866('0x27')](_0x3e0b40[_0x6866('0x28')]);if(_0x3e0b40[_0x6866('0x29')]){delete _0x3e0b40[_0x6866('0x29')];}_0x1a02fd['status'](_0x4f36b7)[_0x6866('0x2a')](_0x3e0b40);};}exports[_0x6866('0x2b')]=function(_0x15ebc5,_0x1c99d6){var _0x26d5ff={},_0x215bac={},_0x419020={'count':0x0,'rows':[]};var _0x2c7071=_[_0x6866('0x2c')](db[_0x6866('0x2d')]['rawAttributes'],function(_0x51b3d1){return{'name':_0x51b3d1[_0x6866('0x2e')],'type':_0x51b3d1[_0x6866('0x2f')][_0x6866('0x30')]};});_0x215bac[_0x6866('0x31')]=_[_0x6866('0x32')](_[_0x6866('0x2c')](_0x2c7071,'name'),['format']);_0x215bac[_0x6866('0x33')]=_[_0x6866('0x34')](_0x15ebc5['query']);_0x215bac[_0x6866('0x35')]=_[_0x6866('0x36')](_0x215bac['model'],_0x215bac['query']);_0x26d5ff[_0x6866('0x37')]=_[_0x6866('0x36')](_0x215bac[_0x6866('0x31')],qs[_0x6866('0x38')](_0x15ebc5['query'][_0x6866('0x38')]));_0x26d5ff[_0x6866('0x37')]=_0x26d5ff[_0x6866('0x37')][_0x6866('0x39')]?_0x26d5ff[_0x6866('0x37')]:_0x215bac[_0x6866('0x31')];if(!_0x15ebc5['query'][_0x6866('0x3a')](_0x6866('0x3b'))){_0x26d5ff[_0x6866('0x1c')]=qs[_0x6866('0x1c')](_0x15ebc5[_0x6866('0x33')][_0x6866('0x1c')]);_0x26d5ff['offset']=qs['offset'](_0x15ebc5['query']['offset']);}_0x26d5ff[_0x6866('0x3c')]=qs[_0x6866('0x3d')](_0x15ebc5['query'][_0x6866('0x3d')]);_0x26d5ff['where']=qs['filters'](_[_0x6866('0x3e')](_0x15ebc5['query'],_0x215bac[_0x6866('0x35')]),_0x2c7071);if(_0x15ebc5['query']['filter']){_0x26d5ff[_0x6866('0x3f')]=_['merge'](_0x26d5ff[_0x6866('0x3f')],{'$or':_[_0x6866('0x2c')](_0x2c7071,function(_0x574b78){if(_0x574b78[_0x6866('0x2f')]!==_0x6866('0x40')){var _0xa9755b={};_0xa9755b[_0x574b78[_0x6866('0x29')]]={'$like':'%'+_0x15ebc5[_0x6866('0x33')]['filter']+'%'};return _0xa9755b;}})});}_0x26d5ff=_[_0x6866('0x41')]({},_0x26d5ff,_0x15ebc5['options']);var _0x1a41b8={'where':_0x26d5ff[_0x6866('0x3f')]};return db[_0x6866('0x2d')]['count'](_0x1a41b8)[_0x6866('0x24')](function(_0x217ca1){_0x419020[_0x6866('0x1d')]=_0x217ca1;if(_0x15ebc5[_0x6866('0x33')]['includeAll']){_0x26d5ff['include']=[{'all':!![]}];}return db[_0x6866('0x2d')][_0x6866('0x42')](_0x26d5ff);})[_0x6866('0x24')](function(_0x373f40){_0x419020[_0x6866('0x43')]=_0x373f40;return _0x419020;})[_0x6866('0x24')](respondWithFilteredResult(_0x1c99d6,_0x26d5ff))['catch'](handleError(_0x1c99d6,null));};exports[_0x6866('0x44')]=function(_0x35811f,_0x2b70fb){var _0x580956={'raw':![],'where':{'id':_0x35811f[_0x6866('0x45')]['id']}},_0x57bb4d={};_0x57bb4d['model']=_[_0x6866('0x34')](db[_0x6866('0x2d')]['rawAttributes']);_0x57bb4d[_0x6866('0x33')]=_[_0x6866('0x34')](_0x35811f[_0x6866('0x33')]);_0x57bb4d['filters']=_[_0x6866('0x36')](_0x57bb4d[_0x6866('0x31')],_0x57bb4d[_0x6866('0x33')]);_0x580956[_0x6866('0x37')]=_['intersection'](_0x57bb4d[_0x6866('0x31')],qs['fields'](_0x35811f[_0x6866('0x33')][_0x6866('0x38')]));_0x580956['attributes']=_0x580956[_0x6866('0x37')][_0x6866('0x39')]?_0x580956[_0x6866('0x37')]:_0x57bb4d[_0x6866('0x31')];if(_0x35811f[_0x6866('0x33')][_0x6866('0x46')]){_0x580956[_0x6866('0x47')]=[{'all':!![]}];}_0x580956=_[_0x6866('0x41')]({},_0x580956,_0x35811f[_0x6866('0x48')]);return db[_0x6866('0x2d')][_0x6866('0x49')](_0x580956)[_0x6866('0x24')](handleEntityNotFound(_0x2b70fb,null))[_0x6866('0x24')](respondWithResult(_0x2b70fb,null))[_0x6866('0x4a')](handleError(_0x2b70fb,null));};exports[_0x6866('0x4b')]=function(_0x29ef78,_0xd327c5){return db['VoiceRecording'][_0x6866('0x4b')](_0x29ef78[_0x6866('0x4c')],{})[_0x6866('0x24')](respondWithResult(_0xd327c5,0xc9))[_0x6866('0x4a')](handleError(_0xd327c5,null));};exports[_0x6866('0x23')]=function(_0x471f7c,_0x5dfbbe){if(_0x471f7c[_0x6866('0x4c')]['id']){delete _0x471f7c[_0x6866('0x4c')]['id'];}return db[_0x6866('0x2d')]['find']({'where':{'id':_0x471f7c[_0x6866('0x45')]['id']}})[_0x6866('0x24')](handleEntityNotFound(_0x5dfbbe,null))[_0x6866('0x24')](saveUpdates(_0x471f7c[_0x6866('0x4c')],null))[_0x6866('0x24')](respondWithResult(_0x5dfbbe,null))[_0x6866('0x4a')](handleError(_0x5dfbbe,null));};exports[_0x6866('0x4d')]=function(_0x2751f7,_0x239e4b){return db[_0x6866('0x2d')][_0x6866('0x4d')]()['then'](respondWithResult(_0x239e4b,null))[_0x6866('0x4a')](handleError(_0x239e4b,null));};exports['download']=function(_0x194f0d,_0x3f1dc9,_0x402c1e){var _0x238cb3=require('../../components/encryptor');var _0x25e20c=![];var _0x3113e0={};if(_0x194f0d[_0x6866('0x33')][_0x6866('0x2f')]&&_0x194f0d[_0x6866('0x33')]['type']===_0x6866('0x4e')){_0x3113e0[_0x6866('0x4e')]=_0x194f0d[_0x6866('0x45')]['id'];}else{_0x3113e0['id']=_0x194f0d[_0x6866('0x45')]['id'];}return db[_0x6866('0x2d')]['find']({'where':_0x3113e0,'attributes':['id','value'],'raw':!![]})[_0x6866('0x24')](handleEntityNotFound(_0x3f1dc9,null))[_0x6866('0x24')](function(_0x2af851){if(_0x2af851){var _0x84fde7=_0x2af851[_0x6866('0x4f')];var _0x34ce34=util[_0x6866('0x50')]('%s.cypher',_0x84fde7);if(fs[_0x6866('0x51')](_0x34ce34)){_0x25e20c=!![];return _0x238cb3[_0x6866('0x52')](_0x34ce34,_0x84fde7,config[_0x6866('0x53')]['recording'])[_0x6866('0x24')](function(){return _0x2af851;});}return _0x2af851;}})[_0x6866('0x24')](function(_0x5a10ae){if(_0x5a10ae){var _0x1d7ee1=_0x5a10ae['value'];if(!fs[_0x6866('0x51')](_0x1d7ee1)){throw new db[(_0x6866('0x54'))][(_0x6866('0x55'))](_0x6866('0x56'));}if(_0x5a10ae[_0x6866('0x57')]){return _0x3f1dc9[_0x6866('0x58')](_0x1d7ee1,_0x5a10ae[_0x6866('0x57')]+path[_0x6866('0x59')](_0x1d7ee1),function(){if(_0x25e20c){fs[_0x6866('0x5a')](_0x1d7ee1);}});}else{return _0x3f1dc9['download'](_0x1d7ee1,function(_0x49f1a8){if(_0x25e20c){fs[_0x6866('0x5a')](_0x1d7ee1);}});}}})[_0x6866('0x4a')](function(_0x4753fe){if(_0x4753fe[_0x6866('0x5b')]===_0x6866('0x56')){_0x3f1dc9['status'](0x194)[_0x6866('0x2a')]('Not\x20found');}else{return handleError(_0x3f1dc9,null);}});};exports[_0x6866('0x5c')]=function(_0x2032d7,_0x1d9ccb,_0x30ff53){var _0xeb9fd6=require(_0x6866('0x5d'));var _0x20e52e=![];var _0x33564d={'$and':[db[_0x6866('0x5e')][_0x6866('0x3f')](db[_0x6866('0x5e')]['fn']('MD5',db[_0x6866('0x5e')]['col'](_0x6866('0x4e'))),_0x2032d7[_0x6866('0x33')]['token'])]};if(_0x2032d7[_0x6866('0x33')][_0x6866('0x2f')]&&_0x2032d7[_0x6866('0x33')][_0x6866('0x2f')]==='uniqueid'){_0x33564d[_0x6866('0x5f')][_0x6866('0x60')]({'uniqueid':_0x2032d7[_0x6866('0x45')]['id']});}else{_0x33564d[_0x6866('0x5f')][_0x6866('0x60')]({'id':_0x2032d7[_0x6866('0x45')]['id']});}return db[_0x6866('0x2d')][_0x6866('0x49')]({'where':_0x33564d,'attributes':['id',_0x6866('0x4f')],'raw':!![]})[_0x6866('0x24')](handleEntityNotFound(_0x1d9ccb,null))['then'](function(_0x2e0ce0){if(_0x2e0ce0){var _0x59e9d6=util[_0x6866('0x50')]('%s.cypher',_0x2e0ce0['value']);if(fs[_0x6866('0x51')](_0x59e9d6)){_0x20e52e=!![];return _0xeb9fd6['decryptFile'](_0x59e9d6,_0x2e0ce0[_0x6866('0x4f')],config[_0x6866('0x53')][_0x6866('0x61')])[_0x6866('0x24')](function(){return _0x2e0ce0;});}return _0x2e0ce0;}})['then'](function(_0x2fac14){if(_0x2fac14){if(!fs[_0x6866('0x51')](_0x2fac14['value'])){throw new db['Sequelize'][(_0x6866('0x55'))](_0x6866('0x56'));}if(_0x2fac14[_0x6866('0x57')]){return _0x1d9ccb['download'](_0x2fac14[_0x6866('0x4f')],_0x2fac14[_0x6866('0x57')]+path[_0x6866('0x59')](_0x2fac14[_0x6866('0x4f')]),function(){if(_0x20e52e){fs[_0x6866('0x5a')](_0x2fac14['value']);}});}else{return _0x1d9ccb[_0x6866('0x58')](_0x2fac14[_0x6866('0x4f')],function(_0x288430){if(_0x20e52e){fs[_0x6866('0x5a')](_0x2fac14[_0x6866('0x4f')]);}});}}})['catch'](handleError(_0x1d9ccb,null));};exports[_0x6866('0x25')]=function(_0x48145d,_0x274e09){return db[_0x6866('0x2d')]['find']({'where':{'id':_0x48145d[_0x6866('0x45')]['id']}})[_0x6866('0x24')](function(_0x1e2300){if(_[_0x6866('0x62')](_0x1e2300)){throw new ReferenceError(_0x6866('0x63'));}return _0x1e2300;})[_0x6866('0x24')](function(_0x9b0bdc){var _0x2abf3d=_0x9b0bdc[_0x6866('0x4f')];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x2abf3d);if(!_['isNil'](_0x9b0bdc[_0x6866('0x4f')])&&fs[_0x6866('0x51')](_0x2abf3d)){logger[_0x6866('0x64')](_0x6866('0x65')+_0x2abf3d+_0x6866('0x66'));fs[_0x6866('0x67')](_0x2abf3d);}_0x2abf3d=_0x2abf3d+_0x6866('0x68');if(!_[_0x6866('0x62')](_0x9b0bdc[_0x6866('0x4f')])&&fs['existsSync'](_0x2abf3d)){logger[_0x6866('0x64')]('File:\x20\x22'+_0x2abf3d+_0x6866('0x66'));fs[_0x6866('0x67')](_0x2abf3d);}return _0x9b0bdc;})[_0x6866('0x24')](function(_0x4f2c95){if(!_0x4f2c95)throw new InternalError();return _0x4f2c95[_0x6866('0x25')]();})['then'](function(){_0x274e09[_0x6866('0x17')](0xcc)[_0x6866('0x18')]();})[_0x6866('0x4a')](handleError(_0x274e09,null));};function getBucketslist(_0x3eea88,_0x1b0721,_0x527837){return new Promise(function(_0x2a6eb7,_0xe5fe98){var _0x4cdc87=new AWS['S3']({'accessKeyId':_0x1b0721,'secretAccessKey':_0x3eea88,'region':_0x527837});_0x4cdc87['listBuckets']({},function(_0x5ba8b9,_0x3b8da9){if(_0x5ba8b9){return _0xe5fe98(_0x5ba8b9);}else{return _0x2a6eb7(_0x3b8da9);}});});}function createBucket(_0x36d12e,_0x1828c2,_0x516dab,_0x4ac770){return new Promise(function(_0xee94da,_0x41e1c5){var _0x49b186=new AWS['S3']({'accessKeyId':_0x1828c2,'secretAccessKey':_0x36d12e,'region':_0x516dab});_0x49b186['createBucket']({'Bucket':_0x4ac770},function(_0x46d0a1,_0x5a74d7){if(_0x46d0a1){return _0x41e1c5(_0x46d0a1);}else{return _0xee94da(_0x5a74d7);}});});}function uploadFile(_0x5988f3,_0x195de9,_0x14dee4,_0x3ce076,_0x55059b,_0x5dc719){return new Promise(function(_0x5ef0c7,_0x3bd091){var _0x2ff9c4=new AWS['S3']({'accessKeyId':_0x195de9,'secretAccessKey':_0x5988f3,'region':_0x14dee4});_0x2ff9c4[_0x6866('0x69')]({'Bucket':_0x3ce076,'Key':_0x55059b,'Body':_0x5dc719},function(_0x43b86e,_0x2d7aef){if(_0x43b86e){return _0x3bd091(_0x43b86e);}else{return _0x5ef0c7(_0x2d7aef);}});});}function startTranscribe(_0x3ba81b,_0x453bf4,_0x583074,_0x583f71,_0x1ef0eb,_0x11cab3){return new Promise(function(_0x102ad1,_0x1984f1){var _0xf370bc=new AWS[(_0x6866('0x6a'))]({'accessKeyId':_0x453bf4,'secretAccessKey':_0x3ba81b,'region':_0x583074});_0xf370bc['startTranscriptionJob']({'TranscriptionJobName':_0x583f71,'LanguageCode':_0x1ef0eb,'Media':{'MediaFileUri':_0x11cab3}},function(_0x4bef73,_0x29258d){if(_0x4bef73){return _0x1984f1(_0x4bef73);}else{return _0x102ad1(_0x29258d);}});});}function transcribe(_0x73617,_0xf228d5,_0x4c9f22,_0x105c13,_0x364523,_0x579143,_0xc9c6a){return new Promise(function(_0x4dd92c,_0x50617f){var _0x49520a={};logger['info'](util[_0x6866('0x50')](_0x6866('0x6b'),_0x73617,_0x364523));return uploadFile(_0xf228d5,_0x4c9f22,_0x105c13,_0x364523,path[_0x6866('0x6c')](_0x579143),fs[_0x6866('0x6d')](_0x579143))[_0x6866('0x24')](function(_0x187080){logger[_0x6866('0x64')](util[_0x6866('0x50')](_0x6866('0x6e'),_0x73617,_0x364523,_0x187080['Location']));_0x49520a[_0x6866('0x6f')]=_0x187080[_0x6866('0x70')];_0x49520a[_0x6866('0x71')]=_0x187080[_0x6866('0x72')];logger[_0x6866('0x64')](util[_0x6866('0x50')](_0x6866('0x73'),_0x73617));return startTranscribe(_0xf228d5,_0x4c9f22,_0x105c13,uuidv4(),_0xc9c6a,_0x187080['Location']);})[_0x6866('0x24')](function(_0x2e4f16){logger['info'](util[_0x6866('0x50')](_0x6866('0x74'),_0x73617,_0x2e4f16[_0x6866('0x75')][_0x6866('0x76')]));_0x49520a['transcribeName']=_0x2e4f16[_0x6866('0x75')][_0x6866('0x76')];_0x49520a[_0x6866('0x77')]=_0x2e4f16[_0x6866('0x75')][_0x6866('0x78')];return _0x4dd92c(_0x49520a);})['catch'](function(_0x547d34){return _0x50617f(_0x547d34);});});}exports[_0x6866('0x79')]=function(_0x238e42,_0xbfed9e,_0x1504f2){var _0x1477d3;var _0x3e0179;var _0x50e231;var _0x2efe61=require(_0x6866('0x5d'));return db[_0x6866('0x2d')][_0x6866('0x7a')]({'where':{'id':_0x238e42['params']['id']}})[_0x6866('0x24')](function(_0x2e59c3){if(_0x2e59c3){var _0x331e4b=util[_0x6866('0x50')](_0x6866('0x7b'),_0x2e59c3[_0x6866('0x4f')]);if(fs[_0x6866('0x51')](_0x331e4b)){cypher=!![];return _0x2efe61[_0x6866('0x52')](_0x331e4b,_0x2e59c3['value'],config[_0x6866('0x53')][_0x6866('0x61')])['then'](function(){return _0x2e59c3;});}return _0x2e59c3;}})[_0x6866('0x24')](function(_0x2aafac){if(!_0x2aafac){throw new db[(_0x6866('0x54'))][(_0x6866('0x55'))]('Voice\x20Recording\x20not\x20found');}_0x3e0179=_0x2aafac;return db[_0x6866('0x7c')][_0x6866('0x7a')]({'where':{'id':0x1}});})[_0x6866('0x24')](handleEntityNotFound(_0xbfed9e,null))[_0x6866('0x24')](function(_0x5020d7){if(_0x5020d7){_0x1477d3=_0x5020d7;if(!_0x1477d3[_0x6866('0x7d')]||!_0x1477d3['transcribeAccountId']||!_0x1477d3['transcribeRegion']||!_0x1477d3[_0x6866('0x7e')]||!_0x1477d3[_0x6866('0x6f')]){throw new db[(_0x6866('0x54'))][(_0x6866('0x55'))](_0x6866('0x7f'));}if(_0x238e42['body'][_0x6866('0x80')]&&(!_0x1477d3[_0x6866('0x81')]||!_0x1477d3[_0x6866('0x82')]||!_0x1477d3[_0x6866('0x83')]||!_0x1477d3[_0x6866('0x7e')]||!_0x1477d3[_0x6866('0x6f')])){throw new db['Sequelize'][(_0x6866('0x55'))](_0x6866('0x84'));}return db[_0x6866('0x85')][_0x6866('0x7a')]({'where':{'id':_0x1477d3[_0x6866('0x86')]}});}})[_0x6866('0x24')](function(_0x1667a0){if(!_0x1667a0){throw new db[(_0x6866('0x54'))][(_0x6866('0x55'))](_0x6866('0x87'));}if(!_0x1667a0['data1']||!_0x1667a0['data2']){throw new db[(_0x6866('0x54'))][(_0x6866('0x55'))](_0x6866('0x88'));}_0x50e231=_0x1667a0;return getBucketslist(_0x50e231[_0x6866('0x89')],_0x50e231[_0x6866('0x8a')],_0x1477d3[_0x6866('0x8b')]);})['then'](function(_0x555441){if(_0x555441&&_0x555441[_0x6866('0x8c')]){var _0x203f7a=_[_0x6866('0x49')](_0x555441[_0x6866('0x8c')],function(_0x38db66){return _0x38db66[_0x6866('0x8d')]===_0x1477d3[_0x6866('0x6f')];});if(!_0x203f7a){logger['info'](util[_0x6866('0x50')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x238e42['params']['id'],_0x1477d3['bucket']));return createBucket(_0x50e231[_0x6866('0x89')],_0x50e231[_0x6866('0x8a')],_0x1477d3['transcribeRegion'],_0x1477d3['bucket']);}logger[_0x6866('0x64')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x238e42[_0x6866('0x45')]['id'],_0x1477d3[_0x6866('0x6f')]));return;}})[_0x6866('0x24')](function(_0x3ff0c7){if(_0x3e0179[_0x6866('0x77')]===_0x6866('0x8e')){return transcribe(_0x238e42[_0x6866('0x45')]['id'],_0x50e231[_0x6866('0x89')],_0x50e231[_0x6866('0x8a')],_0x1477d3[_0x6866('0x8b')],_0x1477d3['bucket'],_0x3e0179[_0x6866('0x4f')],_0x1477d3['language']);}else{logger[_0x6866('0x64')](util[_0x6866('0x50')](_0x6866('0x8f'),_0x238e42[_0x6866('0x45')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x6866('0x24')](function(_0x2d29ed){if(_0x2d29ed){_0x2d29ed[_0x6866('0x90')]=_0x238e42['body'][_0x6866('0x80')];return _0x3e0179[_0x6866('0x91')](_0x2d29ed);}})['then'](respondWithResult(_0xbfed9e,null))[_0x6866('0x4a')](handleError(_0xbfed9e,null));};function writeFile(_0x58fcf7,_0x43886a){return new Promise(function(_0x40b96e,_0x4cf72f){fs[_0x6866('0x92')](_0x43886a,_0x58fcf7,function(_0x5a49be,_0x14ed11){if(_0x5a49be){return _0x4cf72f(_0x5a49be);}else{return _0x40b96e(_0x14ed11);}});});}exports[_0x6866('0x93')]=function(_0x429cc1,_0x2fd447,_0x13e8a6){return db[_0x6866('0x2d')][_0x6866('0x7a')]({'where':{'id':_0x429cc1['params']['id']}})[_0x6866('0x24')](handleEntityNotFound(_0x2fd447))[_0x6866('0x24')](function(_0x164e01){if(_0x164e01&&_0x164e01[_0x6866('0x94')]){var _0x33ac97=_0x164e01[_0x6866('0x94')];var _0xbe593f=config[_0x6866('0x95')]+'/server/files/transcribes/transcribe_'+_0x164e01['id']+_0x6866('0x96');if(fs[_0x6866('0x51')](_0xbe593f)){return _0xbe593f;}return writeFile(_0x33ac97,_0xbe593f)[_0x6866('0x24')](function(){return _0xbe593f;});}else{throw new db[(_0x6866('0x54'))][(_0x6866('0x55'))](_0x6866('0x97'));}})[_0x6866('0x24')](function(_0x473c60){return _0x2fd447[_0x6866('0x58')](_0x473c60);})[_0x6866('0x4a')](handleError(_0x2fd447));};
\ No newline at end of file
index 3a97d41..bf95581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6888=['path','./voiceRecording.attributes','exports','define','VoiceRecording','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2e9405,_0x589225){var _0x5b0b6e=function(_0x45b1e5){while(--_0x45b1e5){_0x2e9405['push'](_0x2e9405['shift']());}};_0x5b0b6e(++_0x589225);}(_0x6888,0xd2));var _0x8688=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x6888[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x8688('0x0'));var util=require('util');var logger=require(_0x8688('0x1'))(_0x8688('0x2'));var moment=require(_0x8688('0x3'));var BPromise=require(_0x8688('0x4'));var rp=require(_0x8688('0x5'));var fs=require('fs');var path=require(_0x8688('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8688('0x7'));module[_0x8688('0x8')]=function(_0x37c051,_0x33a806){return _0x37c051[_0x8688('0x9')](_0x8688('0xa'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0x8688('0xb'),'fields':[_0x8688('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4dee=['rimraf','../../config/environment','./voiceRecording.attributes','define','VoiceRecording','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x56c2f9,_0x2f1eaa){var _0x35393a=function(_0x377f6d){while(--_0x377f6d){_0x56c2f9['push'](_0x56c2f9['shift']());}};_0x35393a(++_0x2f1eaa);}(_0x4dee,0x172));var _0xe4de=function(_0x40e92e,_0xb7b140){_0x40e92e=_0x40e92e-0x0;var _0x5d8b77=_0x4dee[_0x40e92e];return _0x5d8b77;};'use strict';var _=require(_0xe4de('0x0'));var util=require(_0xe4de('0x1'));var logger=require(_0xe4de('0x2'))(_0xe4de('0x3'));var moment=require(_0xe4de('0x4'));var BPromise=require(_0xe4de('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe4de('0x6'));var rimraf=require(_0xe4de('0x7'));var config=require(_0xe4de('0x8'));var attributes=require(_0xe4de('0x9'));module['exports']=function(_0x2b3bc7,_0x7bc566){return _0x2b3bc7[_0xe4de('0xa')](_0xe4de('0xb'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0xe4de('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 06c2bb2..637777b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['UpdateVoiceRecording','options','attributes','stringify','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','VoiceRecording','create','body','existsSync','value','%s.cypher','encryptFile','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x4f1821,_0xbbbf0f){var _0x2dc421=function(_0x4c0b4c){while(--_0x4c0b4c){_0x4f1821['push'](_0x4f1821['shift']());}};_0x2dc421(++_0xbbbf0f);}(_0xa456,0x142));var _0x6a45=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0xa456[_0x45b034];return _0x509cb0;};'use strict';var _=require(_0x6a45('0x0'));var util=require(_0x6a45('0x1'));var moment=require(_0x6a45('0x2'));var BPromise=require(_0x6a45('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a45('0x4'));var db=require(_0x6a45('0x5'))['db'];var utils=require(_0x6a45('0x6'));var logger=require('../../config/logger')(_0x6a45('0x7'));var config=require(_0x6a45('0x8'));var jayson=require(_0x6a45('0x9'));var client=jayson[_0x6a45('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25cf8d,_0x26bfc0,_0x214514){return new BPromise(function(_0x19e67c,_0x3deb09){return client['request'](_0x25cf8d,_0x214514)[_0x6a45('0xb')](function(_0x517040){logger[_0x6a45('0xc')](_0x6a45('0xd'),_0x26bfc0,_0x6a45('0xe'));logger[_0x6a45('0xf')](_0x6a45('0x10'),_0x26bfc0,'request\x20sent',JSON['stringify'](_0x517040));if(_0x517040[_0x6a45('0x11')]){if(_0x517040[_0x6a45('0x11')]['code']===0x1f4){logger['error']('VoiceRecording,\x20%s,\x20%s',_0x26bfc0,_0x517040[_0x6a45('0x11')][_0x6a45('0x12')]);return _0x3deb09(_0x517040[_0x6a45('0x11')][_0x6a45('0x12')]);}logger[_0x6a45('0x11')]('VoiceRecording,\x20%s,\x20%s',_0x26bfc0,_0x517040['error'][_0x6a45('0x12')]);return _0x19e67c(_0x517040[_0x6a45('0x11')]['message']);}else{logger[_0x6a45('0xc')](_0x6a45('0xd'),_0x26bfc0,_0x6a45('0xe'));_0x19e67c(_0x517040[_0x6a45('0x13')]['message']);}})['catch'](function(_0x49023f){logger[_0x6a45('0x11')](_0x6a45('0xd'),_0x26bfc0,_0x49023f);_0x3deb09(_0x49023f);});});}exports[_0x6a45('0x14')]=function(_0x52a055){var _0x379c22=this;return new Promise(function(_0x102981,_0x3439c8){return db['VoiceRecording']['update'](_0x52a055['body'],{'raw':_0x52a055[_0x6a45('0x15')]?_0x52a055[_0x6a45('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52a055[_0x6a45('0x15')]?_0x52a055[_0x6a45('0x15')]['where']||null:null,'attributes':_0x52a055[_0x6a45('0x15')]?_0x52a055[_0x6a45('0x15')][_0x6a45('0x16')]||null:null,'limit':_0x52a055[_0x6a45('0x15')]?_0x52a055[_0x6a45('0x15')]['limit']||null:null})['then'](function(_0x3faae5){logger[_0x6a45('0xc')](_0x6a45('0x14'),_0x52a055);logger[_0x6a45('0xf')](_0x6a45('0x14'),_0x52a055,JSON[_0x6a45('0x17')](_0x3faae5));_0x102981(_0x3faae5);})[_0x6a45('0x18')](function(_0x4692f5){logger[_0x6a45('0x11')](_0x6a45('0x14'),_0x4692f5[_0x6a45('0x12')],_0x52a055);_0x3439c8(_0x379c22[_0x6a45('0x11')](0x1f4,_0x4692f5['message']));});});};exports[_0x6a45('0x19')]=function(_0x5a0389){var _0x1b83fa=this;return new Promise(function(_0x25467d,_0x28bdf0){var _0x2c7315=require(_0x6a45('0x1a'));var _0x526062;return db[_0x6a45('0x1b')][_0x6a45('0x1c')]({'attributes':['id',_0x6a45('0x1d')],'where':{'id':0x1},'raw':!![]})[_0x6a45('0xb')](function(_0x8265d9){_0x526062=_0x8265d9;return db[_0x6a45('0x1e')][_0x6a45('0x1f')](_0x5a0389[_0x6a45('0x20')]);})['then'](function(_0x14adb5){if(_0x526062[_0x6a45('0x1d')]&&fs[_0x6a45('0x21')](_0x14adb5[_0x6a45('0x22')])){var _0x3b07a1=util['format'](_0x6a45('0x23'),_0x14adb5[_0x6a45('0x22')]);return _0x2c7315[_0x6a45('0x24')](_0x14adb5[_0x6a45('0x22')],_0x3b07a1,config['secrets']['recording'])[_0x6a45('0xb')](function(){fs['unlink'](_0x14adb5[_0x6a45('0x22')]);logger['info'](_0x6a45('0x25'));return _0x14adb5;});}return _0x14adb5;})[_0x6a45('0xb')](function(_0x429900){logger[_0x6a45('0xc')](_0x6a45('0x19'),_0x5a0389);logger[_0x6a45('0xf')](_0x6a45('0x19'),_0x5a0389,JSON[_0x6a45('0x17')](_0x429900));_0x25467d(_0x429900);})[_0x6a45('0x18')](function(_0x36f4a4){logger[_0x6a45('0x11')](_0x6a45('0x19'),_0x36f4a4[_0x6a45('0x12')],_0x5a0389);_0x28bdf0(_0x1b83fa['error'](0x1f4,_0x36f4a4[_0x6a45('0x12')]));});});};
\ No newline at end of file
+var _0x2a07=['body','options','raw','where','attributes','limit','UpdateVoiceRecording','debug','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','encryptFile','secrets','recording','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','VoiceRecording','update'];(function(_0x1ee62e,_0x159bb2){var _0x27c6c8=function(_0x31a5d4){while(--_0x31a5d4){_0x1ee62e['push'](_0x1ee62e['shift']());}};_0x27c6c8(++_0x159bb2);}(_0x2a07,0x74));var _0x72a0=function(_0x3b8363,_0x17bc8){_0x3b8363=_0x3b8363-0x0;var _0x4d8289=_0x2a07[_0x3b8363];return _0x4d8289;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var moment=require(_0x72a0('0x2'));var BPromise=require(_0x72a0('0x3'));var rs=require(_0x72a0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x72a0('0x5'))['db'];var utils=require(_0x72a0('0x6'));var logger=require(_0x72a0('0x7'))(_0x72a0('0x8'));var config=require(_0x72a0('0x9'));var jayson=require(_0x72a0('0xa'));var client=jayson[_0x72a0('0xb')][_0x72a0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x193e3b,_0x287b06,_0x21c819){return new BPromise(function(_0x2c04eb,_0x22270e){return client[_0x72a0('0xd')](_0x193e3b,_0x21c819)[_0x72a0('0xe')](function(_0x2bc45b){logger['info'](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));logger['debug'](_0x72a0('0x11'),_0x287b06,_0x72a0('0x10'),JSON[_0x72a0('0x12')](_0x2bc45b));if(_0x2bc45b[_0x72a0('0x13')]){if(_0x2bc45b[_0x72a0('0x13')]['code']===0x1f4){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);return _0x22270e(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}logger[_0x72a0('0x13')]('VoiceRecording,\x20%s,\x20%s',_0x287b06,_0x2bc45b['error'][_0x72a0('0x14')]);return _0x2c04eb(_0x2bc45b[_0x72a0('0x13')][_0x72a0('0x14')]);}else{logger[_0x72a0('0x15')](_0x72a0('0xf'),_0x287b06,_0x72a0('0x10'));_0x2c04eb(_0x2bc45b['result'][_0x72a0('0x14')]);}})[_0x72a0('0x16')](function(_0x16ac70){logger[_0x72a0('0x13')](_0x72a0('0xf'),_0x287b06,_0x16ac70);_0x22270e(_0x16ac70);});});}exports['UpdateVoiceRecording']=function(_0x100d8f){var _0x42e9ec=this;return new Promise(function(_0x131b73,_0x5b63c8){return db[_0x72a0('0x17')][_0x72a0('0x18')](_0x100d8f[_0x72a0('0x19')],{'raw':_0x100d8f[_0x72a0('0x1a')]?_0x100d8f['options'][_0x72a0('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x100d8f['options']?_0x100d8f[_0x72a0('0x1a')][_0x72a0('0x1c')]||null:null,'attributes':_0x100d8f[_0x72a0('0x1a')]?_0x100d8f['options'][_0x72a0('0x1d')]||null:null,'limit':_0x100d8f[_0x72a0('0x1a')]?_0x100d8f[_0x72a0('0x1a')][_0x72a0('0x1e')]||null:null})['then'](function(_0x38a7ba){logger[_0x72a0('0x15')](_0x72a0('0x1f'),_0x100d8f);logger[_0x72a0('0x20')](_0x72a0('0x1f'),_0x100d8f,JSON[_0x72a0('0x12')](_0x38a7ba));_0x131b73(_0x38a7ba);})['catch'](function(_0x4dd1a6){logger[_0x72a0('0x13')](_0x72a0('0x1f'),_0x4dd1a6[_0x72a0('0x14')],_0x100d8f);_0x5b63c8(_0x42e9ec[_0x72a0('0x13')](0x1f4,_0x4dd1a6[_0x72a0('0x14')]));});});};exports[_0x72a0('0x21')]=function(_0xa5bda0){var _0x15922a=this;return new Promise(function(_0xee99e2,_0x12dcc9){var _0x4f9718=require(_0x72a0('0x22'));var _0x553641;return db[_0x72a0('0x23')][_0x72a0('0x24')]({'attributes':['id',_0x72a0('0x25')],'where':{'id':0x1},'raw':!![]})[_0x72a0('0xe')](function(_0x432179){_0x553641=_0x432179;return db[_0x72a0('0x17')][_0x72a0('0x26')](_0xa5bda0[_0x72a0('0x19')]);})['then'](function(_0x41efc1){if(_0x553641[_0x72a0('0x25')]&&fs[_0x72a0('0x27')](_0x41efc1[_0x72a0('0x28')])){var _0x13c04=util[_0x72a0('0x29')](_0x72a0('0x2a'),_0x41efc1['value']);return _0x4f9718[_0x72a0('0x2b')](_0x41efc1[_0x72a0('0x28')],_0x13c04,config[_0x72a0('0x2c')][_0x72a0('0x2d')])[_0x72a0('0xe')](function(){fs[_0x72a0('0x2e')](_0x41efc1[_0x72a0('0x28')]);logger[_0x72a0('0x15')]('CreateVoiceRecording\x20file\x20encrypted');return _0x41efc1;});}return _0x41efc1;})[_0x72a0('0xe')](function(_0x1fb485){logger[_0x72a0('0x15')]('CreateVoiceRecording',_0xa5bda0);logger[_0x72a0('0x20')]('CreateVoiceRecording',_0xa5bda0,JSON[_0x72a0('0x12')](_0x1fb485));_0xee99e2(_0x1fb485);})[_0x72a0('0x16')](function(_0x1d02c4){logger[_0x72a0('0x13')](_0x72a0('0x21'),_0x1d02c4[_0x72a0('0x14')],_0xa5bda0);_0x12dcc9(_0x15922a[_0x72a0('0x13')](0x1f4,_0x1d02c4[_0x72a0('0x14')]));});});};
\ No newline at end of file
index c0e7104..f38e8ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcab3=['show','put','/:id','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','/describe','describe'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xcab3,0x182));var _0x3cab=function(_0x37da17,_0x3d5575){_0x37da17=_0x37da17-0x0;var _0x2eaa9e=_0xcab3[_0x37da17];return _0x2eaa9e;};'use strict';var multer=require(_0x3cab('0x0'));var util=require('util');var path=require(_0x3cab('0x1'));var timeout=require(_0x3cab('0x2'));var express=require(_0x3cab('0x3'));var router=express[_0x3cab('0x4')]();var fs_extra=require(_0x3cab('0x5'));var auth=require(_0x3cab('0x6'));var interaction=require(_0x3cab('0x7'));var config=require(_0x3cab('0x8'));var controller=require(_0x3cab('0x9'));router[_0x3cab('0xa')]('/',auth[_0x3cab('0xb')](),controller['index']);router[_0x3cab('0xa')](_0x3cab('0xc'),auth[_0x3cab('0xb')](),controller[_0x3cab('0xd')]);router[_0x3cab('0xa')]('/:id',auth[_0x3cab('0xb')](),controller[_0x3cab('0xe')]);router['post']('/',auth[_0x3cab('0xb')](),controller['create']);router[_0x3cab('0xf')](_0x3cab('0x10'),auth[_0x3cab('0xb')](),controller['update']);router[_0x3cab('0x11')]('/:id',auth[_0x3cab('0xb')](),controller[_0x3cab('0x12')]);module[_0x3cab('0x13')]=router;
\ No newline at end of file
+var _0x52b4=['describe','/:id','show','post','create','put','update','delete','destroy','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x52b4,0x144));var _0x452b=function(_0x18dd07,_0x8c04f){_0x18dd07=_0x18dd07-0x0;var _0x384631=_0x52b4[_0x18dd07];return _0x384631;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x452b('0x0'));var timeout=require(_0x452b('0x1'));var express=require(_0x452b('0x2'));var router=express['Router']();var fs_extra=require(_0x452b('0x3'));var auth=require(_0x452b('0x4'));var interaction=require(_0x452b('0x5'));var config=require(_0x452b('0x6'));var controller=require(_0x452b('0x7'));router[_0x452b('0x8')]('/',auth[_0x452b('0x9')](),controller[_0x452b('0xa')]);router['get'](_0x452b('0xb'),auth[_0x452b('0x9')](),controller[_0x452b('0xc')]);router[_0x452b('0x8')](_0x452b('0xd'),auth['isAuthenticated'](),controller[_0x452b('0xe')]);router[_0x452b('0xf')]('/',auth[_0x452b('0x9')](),controller[_0x452b('0x10')]);router[_0x452b('0x11')](_0x452b('0xd'),auth[_0x452b('0x9')](),controller[_0x452b('0x12')]);router[_0x452b('0x13')]('/:id',auth[_0x452b('0x9')](),controller[_0x452b('0x14')]);module['exports']=router;
\ No newline at end of file
index c1075b7..60e27c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf93=['ENUM','attended','STRING','Yes','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdf93,0x194));var _0x3df9=function(_0x2c88a8,_0x203710){_0x2c88a8=_0x2c88a8-0x0;var _0x11dc3d=_0xdf93[_0x2c88a8];return _0x11dc3d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3df9('0x0'));module['exports']={'type':{'type':Sequelize[_0x3df9('0x1')]('blind',_0x3df9('0x2'))},'result':{'type':Sequelize[_0x3df9('0x3')]},'transfererchannel':{'type':Sequelize[_0x3df9('0x3')]},'transferercalleridnum':{'type':Sequelize[_0x3df9('0x3')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x3df9('0x3')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x3df9('0x3')]},'transfererexten':{'type':Sequelize[_0x3df9('0x3')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0x3df9('0x3')]},'transfereecalleridnum':{'type':Sequelize[_0x3df9('0x3')]},'transfereecalleridname':{'type':Sequelize[_0x3df9('0x3')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x3df9('0x3')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0x3df9('0x3')]},'transfereeexten':{'type':Sequelize[_0x3df9('0x3')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x3df9('0x1')](_0x3df9('0x4'),'No')},'context':{'type':Sequelize[_0x3df9('0x3')]},'extension':{'type':Sequelize[_0x3df9('0x3')]}};
\ No newline at end of file
+var _0x2a42=['blind','attended','STRING','Yes','sequelize','moment','exports','ENUM'];(function(_0x592e8d,_0x55812e){var _0x6816d6=function(_0x366e4d){while(--_0x366e4d){_0x592e8d['push'](_0x592e8d['shift']());}};_0x6816d6(++_0x55812e);}(_0x2a42,0x8c));var _0x22a4=function(_0x19590f,_0xc76a3){_0x19590f=_0x19590f-0x0;var _0x4ec942=_0x2a42[_0x19590f];return _0x4ec942;};'use strict';var Sequelize=require(_0x22a4('0x0'));var moment=require(_0x22a4('0x1'));module[_0x22a4('0x2')]={'type':{'type':Sequelize[_0x22a4('0x3')](_0x22a4('0x4'),_0x22a4('0x5'))},'result':{'type':Sequelize[_0x22a4('0x6')]},'transfererchannel':{'type':Sequelize[_0x22a4('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x22a4('0x6')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x22a4('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x22a4('0x6')]},'transferercontext':{'type':Sequelize[_0x22a4('0x6')]},'transfererexten':{'type':Sequelize[_0x22a4('0x6')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x22a4('0x6')]},'transfereecalleridname':{'type':Sequelize[_0x22a4('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x22a4('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0x22a4('0x6')]},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x22a4('0x6')]},'transfereelinkedid':{'type':Sequelize[_0x22a4('0x6')]},'isexternal':{'type':Sequelize[_0x22a4('0x3')](_0x22a4('0x7'),'No')},'context':{'type':Sequelize[_0x22a4('0x6')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 044b762..feaf4a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab73=['keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','findAll','rows','catch','show','params','length','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','json','apply','reject','update','then','destroy','end','error','stack','name','send','index','VoiceTransferReport','rawAttributes','fieldName','type','key','map','query'];(function(_0x552abc,_0x2ddf53){var _0x32c31d=function(_0x5a9343){while(--_0x5a9343){_0x552abc['push'](_0x552abc['shift']());}};_0x32c31d(++_0x2ddf53);}(_0xab73,0x65));var _0x3ab7=function(_0x54ae0f,_0x57467e){_0x54ae0f=_0x54ae0f-0x0;var _0x2bd9d9=_0xab73[_0x54ae0f];return _0x2bd9d9;};'use strict';var emlformat=require(_0x3ab7('0x0'));var rimraf=require(_0x3ab7('0x1'));var zipdir=require(_0x3ab7('0x2'));var jsonpatch=require(_0x3ab7('0x3'));var rp=require(_0x3ab7('0x4'));var moment=require(_0x3ab7('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x3ab7('0x6'));var util=require(_0x3ab7('0x7'));var path=require('path');var sox=require(_0x3ab7('0x8'));var csv=require(_0x3ab7('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3ab7('0xa'));var squel=require(_0x3ab7('0xb'));var crypto=require(_0x3ab7('0xc'));var jsforce=require(_0x3ab7('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3ab7('0x9'));var querystring=require(_0x3ab7('0xe'));var Papa=require('papaparse');var Redis=require(_0x3ab7('0xf'));var authService=require(_0x3ab7('0x10'));var qs=require(_0x3ab7('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3ab7('0x12'));var logger=require(_0x3ab7('0x13'))(_0x3ab7('0x14'));var utils=require(_0x3ab7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3ab7('0x16'));var db=require(_0x3ab7('0x17'))['db'];function respondWithStatusCode(_0x131ef5,_0x5c0815){_0x5c0815=_0x5c0815||0xcc;return function(_0xb2f813){if(_0xb2f813){return _0x131ef5[_0x3ab7('0x18')](_0x5c0815);}return _0x131ef5[_0x3ab7('0x19')](_0x5c0815)['end']();};}function respondWithResult(_0x542a52,_0x486715){_0x486715=_0x486715||0xc8;return function(_0x16b55e){if(_0x16b55e){return _0x542a52[_0x3ab7('0x19')](_0x486715)['json'](_0x16b55e);}};}function respondWithFilteredResult(_0x291964,_0x4c1099){return function(_0x42e076){if(_0x42e076){var _0x39d445=typeof _0x4c1099[_0x3ab7('0x1a')]===_0x3ab7('0x1b')&&typeof _0x4c1099[_0x3ab7('0x1c')]===_0x3ab7('0x1b');var _0x429e9f=_0x42e076[_0x3ab7('0x1d')];var _0x23441c=_0x39d445?0x0:_0x4c1099[_0x3ab7('0x1a')];var _0x5d0853=_0x39d445?_0x42e076['count']:_0x4c1099[_0x3ab7('0x1a')]+_0x4c1099[_0x3ab7('0x1c')];var _0x20d8be;if(_0x5d0853>=_0x429e9f){_0x5d0853=_0x429e9f;_0x20d8be=0xc8;}else{_0x20d8be=0xce;}_0x291964['status'](_0x20d8be);return _0x291964['set']('Content-Range',_0x23441c+'-'+_0x5d0853+'/'+_0x429e9f)[_0x3ab7('0x1e')](_0x42e076);}return null;};}function patchUpdates(_0x4962f4){return function(_0x2b6a82){try{jsonpatch[_0x3ab7('0x1f')](_0x2b6a82,_0x4962f4,!![]);}catch(_0x336a3b){return BPromise[_0x3ab7('0x20')](_0x336a3b);}return _0x2b6a82['save']();};}function saveUpdates(_0x391237,_0x7beaa3){return function(_0x36db8b){if(_0x36db8b){return _0x36db8b[_0x3ab7('0x21')](_0x391237)[_0x3ab7('0x22')](function(_0x400340){return _0x400340;});}return null;};}function removeEntity(_0x2ac80e,_0x557003){return function(_0x59ae28){if(_0x59ae28){return _0x59ae28[_0x3ab7('0x23')]()['then'](function(){_0x2ac80e[_0x3ab7('0x19')](0xcc)[_0x3ab7('0x24')]();});}};}function handleEntityNotFound(_0x367da2,_0x3a841c){return function(_0x132228){if(!_0x132228){_0x367da2[_0x3ab7('0x18')](0x194);}return _0x132228;};}function handleError(_0x30a632,_0x133dcf){_0x133dcf=_0x133dcf||0x1f4;return function(_0x182664){logger[_0x3ab7('0x25')](_0x182664[_0x3ab7('0x26')]);if(_0x182664[_0x3ab7('0x27')]){delete _0x182664[_0x3ab7('0x27')];}_0x30a632[_0x3ab7('0x19')](_0x133dcf)[_0x3ab7('0x28')](_0x182664);};}exports[_0x3ab7('0x29')]=function(_0x5e4a47,_0x518c31){var _0x49bcb4={},_0x536a35={},_0x58c32c={'count':0x0,'rows':[]};var _0x248812=_['map'](db[_0x3ab7('0x2a')][_0x3ab7('0x2b')],function(_0x59af16){return{'name':_0x59af16[_0x3ab7('0x2c')],'type':_0x59af16[_0x3ab7('0x2d')][_0x3ab7('0x2e')]};});_0x536a35['model']=_[_0x3ab7('0x2f')](_0x248812,_0x3ab7('0x27'));_0x536a35[_0x3ab7('0x30')]=_[_0x3ab7('0x31')](_0x5e4a47[_0x3ab7('0x30')]);_0x536a35[_0x3ab7('0x32')]=_[_0x3ab7('0x33')](_0x536a35[_0x3ab7('0x34')],_0x536a35[_0x3ab7('0x30')]);_0x49bcb4[_0x3ab7('0x35')]=_[_0x3ab7('0x33')](_0x536a35[_0x3ab7('0x34')],qs[_0x3ab7('0x36')](_0x5e4a47[_0x3ab7('0x30')][_0x3ab7('0x36')]));_0x49bcb4[_0x3ab7('0x35')]=_0x49bcb4[_0x3ab7('0x35')]['length']?_0x49bcb4[_0x3ab7('0x35')]:_0x536a35[_0x3ab7('0x34')];if(!_0x5e4a47[_0x3ab7('0x30')][_0x3ab7('0x37')](_0x3ab7('0x38'))){_0x49bcb4[_0x3ab7('0x1c')]=qs[_0x3ab7('0x1c')](_0x5e4a47['query'][_0x3ab7('0x1c')]);_0x49bcb4[_0x3ab7('0x1a')]=qs[_0x3ab7('0x1a')](_0x5e4a47[_0x3ab7('0x30')][_0x3ab7('0x1a')]);}_0x49bcb4[_0x3ab7('0x39')]=qs['sort'](_0x5e4a47[_0x3ab7('0x30')][_0x3ab7('0x3a')]);_0x49bcb4[_0x3ab7('0x3b')]=qs[_0x3ab7('0x32')](_['pick'](_0x5e4a47[_0x3ab7('0x30')],_0x536a35[_0x3ab7('0x32')]),_0x248812);if(_0x5e4a47[_0x3ab7('0x30')][_0x3ab7('0x3c')]){_0x49bcb4[_0x3ab7('0x3b')]=_['merge'](_0x49bcb4[_0x3ab7('0x3b')],{'$or':_[_0x3ab7('0x2f')](_0x248812,function(_0x547026){if(_0x547026[_0x3ab7('0x2d')]!=='VIRTUAL'){var _0x254352={};_0x254352[_0x547026[_0x3ab7('0x27')]]={'$like':'%'+_0x5e4a47['query'][_0x3ab7('0x3c')]+'%'};return _0x254352;}})});}_0x49bcb4=_[_0x3ab7('0x3d')]({},_0x49bcb4,_0x5e4a47[_0x3ab7('0x3e')]);var _0x12ab0a={'where':_0x49bcb4['where']};return db['VoiceTransferReport'][_0x3ab7('0x1d')](_0x12ab0a)[_0x3ab7('0x22')](function(_0xb578df){_0x58c32c['count']=_0xb578df;if(_0x5e4a47[_0x3ab7('0x30')][_0x3ab7('0x3f')]){_0x49bcb4['include']=[{'all':!![]}];}return db[_0x3ab7('0x2a')][_0x3ab7('0x40')](_0x49bcb4);})[_0x3ab7('0x22')](function(_0x11b5ac){_0x58c32c[_0x3ab7('0x41')]=_0x11b5ac;return _0x58c32c;})[_0x3ab7('0x22')](respondWithFilteredResult(_0x518c31,_0x49bcb4))[_0x3ab7('0x42')](handleError(_0x518c31,null));};exports[_0x3ab7('0x43')]=function(_0xff0b1e,_0x606d13){var _0x3bf5b7={'raw':!![],'where':{'id':_0xff0b1e[_0x3ab7('0x44')]['id']}},_0x1d92e4={};_0x1d92e4['model']=_[_0x3ab7('0x31')](db[_0x3ab7('0x2a')][_0x3ab7('0x2b')]);_0x1d92e4[_0x3ab7('0x30')]=_['keys'](_0xff0b1e['query']);_0x1d92e4[_0x3ab7('0x32')]=_['intersection'](_0x1d92e4['model'],_0x1d92e4[_0x3ab7('0x30')]);_0x3bf5b7[_0x3ab7('0x35')]=_[_0x3ab7('0x33')](_0x1d92e4[_0x3ab7('0x34')],qs[_0x3ab7('0x36')](_0xff0b1e[_0x3ab7('0x30')][_0x3ab7('0x36')]));_0x3bf5b7[_0x3ab7('0x35')]=_0x3bf5b7[_0x3ab7('0x35')][_0x3ab7('0x45')]?_0x3bf5b7[_0x3ab7('0x35')]:_0x1d92e4['model'];if(_0xff0b1e[_0x3ab7('0x30')][_0x3ab7('0x3f')]){_0x3bf5b7[_0x3ab7('0x46')]=[{'all':!![]}];}_0x3bf5b7=_[_0x3ab7('0x3d')]({},_0x3bf5b7,_0xff0b1e[_0x3ab7('0x3e')]);return db[_0x3ab7('0x2a')]['find'](_0x3bf5b7)[_0x3ab7('0x22')](handleEntityNotFound(_0x606d13,null))['then'](respondWithResult(_0x606d13,null))[_0x3ab7('0x42')](handleError(_0x606d13,null));};exports[_0x3ab7('0x47')]=function(_0x4f0b54,_0x50a8f2){return db['VoiceTransferReport'][_0x3ab7('0x47')](_0x4f0b54[_0x3ab7('0x48')],{})[_0x3ab7('0x22')](respondWithResult(_0x50a8f2,0xc9))['catch'](handleError(_0x50a8f2,null));};exports[_0x3ab7('0x21')]=function(_0x334654,_0x154a46){if(_0x334654[_0x3ab7('0x48')]['id']){delete _0x334654[_0x3ab7('0x48')]['id'];}return db[_0x3ab7('0x2a')][_0x3ab7('0x49')]({'where':{'id':_0x334654['params']['id']}})[_0x3ab7('0x22')](handleEntityNotFound(_0x154a46,null))[_0x3ab7('0x22')](saveUpdates(_0x334654['body'],null))[_0x3ab7('0x22')](respondWithResult(_0x154a46,null))[_0x3ab7('0x42')](handleError(_0x154a46,null));};exports[_0x3ab7('0x23')]=function(_0x12ea51,_0x2abd13){return db[_0x3ab7('0x2a')][_0x3ab7('0x49')]({'where':{'id':_0x12ea51[_0x3ab7('0x44')]['id']}})[_0x3ab7('0x22')](handleEntityNotFound(_0x2abd13,null))[_0x3ab7('0x22')](removeEntity(_0x2abd13,null))[_0x3ab7('0x42')](handleError(_0x2abd13,null));};exports[_0x3ab7('0x4a')]=function(_0x557940,_0x100a53){return db[_0x3ab7('0x2a')][_0x3ab7('0x4a')]()[_0x3ab7('0x22')](respondWithResult(_0x100a53,null))[_0x3ab7('0x42')](handleError(_0x100a53,null));};
\ No newline at end of file
+var _0x96a6=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','reject','update','destroy','error','name','send','VoiceTransferReport','rawAttributes','type','key','model','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox'];(function(_0x3ddf94,_0xc7b3c){var _0x4315f1=function(_0x4a2a92){while(--_0x4a2a92){_0x3ddf94['push'](_0x3ddf94['shift']());}};_0x4315f1(++_0xc7b3c);}(_0x96a6,0x81));var _0x696a=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x96a6[_0x433a86];return _0x23000c;};'use strict';var emlformat=require(_0x696a('0x0'));var rimraf=require(_0x696a('0x1'));var zipdir=require(_0x696a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x696a('0x3'));var moment=require(_0x696a('0x4'));var BPromise=require(_0x696a('0x5'));var Mustache=require(_0x696a('0x6'));var util=require(_0x696a('0x7'));var path=require('path');var sox=require(_0x696a('0x8'));var csv=require(_0x696a('0x9'));var ejs=require(_0x696a('0xa'));var fs=require('fs');var fs_extra=require(_0x696a('0xb'));var _=require(_0x696a('0xc'));var squel=require(_0x696a('0xd'));var crypto=require(_0x696a('0xe'));var jsforce=require(_0x696a('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x696a('0x10'));var Papa=require(_0x696a('0x11'));var Redis=require(_0x696a('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x696a('0x13'));var db=require(_0x696a('0x14'))['db'];function respondWithStatusCode(_0x421ad8,_0x32d53d){_0x32d53d=_0x32d53d||0xcc;return function(_0x570ce8){if(_0x570ce8){return _0x421ad8[_0x696a('0x15')](_0x32d53d);}return _0x421ad8[_0x696a('0x16')](_0x32d53d)[_0x696a('0x17')]();};}function respondWithResult(_0x51bd3e,_0x3bb13c){_0x3bb13c=_0x3bb13c||0xc8;return function(_0xb2cd08){if(_0xb2cd08){return _0x51bd3e[_0x696a('0x16')](_0x3bb13c)['json'](_0xb2cd08);}};}function respondWithFilteredResult(_0x7ec678,_0x11e8b2){return function(_0x55fb65){if(_0x55fb65){var _0x35ba93=typeof _0x11e8b2[_0x696a('0x18')]===_0x696a('0x19')&&typeof _0x11e8b2['limit']==='undefined';var _0x28cf40=_0x55fb65[_0x696a('0x1a')];var _0x2fbdae=_0x35ba93?0x0:_0x11e8b2[_0x696a('0x18')];var _0x2f68b2=_0x35ba93?_0x55fb65[_0x696a('0x1a')]:_0x11e8b2[_0x696a('0x18')]+_0x11e8b2[_0x696a('0x1b')];var _0x5bc3ac;if(_0x2f68b2>=_0x28cf40){_0x2f68b2=_0x28cf40;_0x5bc3ac=0xc8;}else{_0x5bc3ac=0xce;}_0x7ec678[_0x696a('0x16')](_0x5bc3ac);return _0x7ec678[_0x696a('0x1c')]('Content-Range',_0x2fbdae+'-'+_0x2f68b2+'/'+_0x28cf40)[_0x696a('0x1d')](_0x55fb65);}return null;};}function patchUpdates(_0x242abf){return function(_0x527e0b){try{jsonpatch[_0x696a('0x1e')](_0x527e0b,_0x242abf,!![]);}catch(_0x71683){return BPromise[_0x696a('0x1f')](_0x71683);}return _0x527e0b['save']();};}function saveUpdates(_0x50f4bf,_0x745dc5){return function(_0x465ff8){if(_0x465ff8){return _0x465ff8[_0x696a('0x20')](_0x50f4bf)['then'](function(_0x312da6){return _0x312da6;});}return null;};}function removeEntity(_0x37436d,_0x5260c9){return function(_0xa01281){if(_0xa01281){return _0xa01281[_0x696a('0x21')]()['then'](function(){_0x37436d[_0x696a('0x16')](0xcc)[_0x696a('0x17')]();});}};}function handleEntityNotFound(_0x545c3e,_0x28b02d){return function(_0x1808a9){if(!_0x1808a9){_0x545c3e[_0x696a('0x15')](0x194);}return _0x1808a9;};}function handleError(_0x4f6bb0,_0xf1df83){_0xf1df83=_0xf1df83||0x1f4;return function(_0x34a2cd){logger[_0x696a('0x22')](_0x34a2cd['stack']);if(_0x34a2cd['name']){delete _0x34a2cd[_0x696a('0x23')];}_0x4f6bb0['status'](_0xf1df83)[_0x696a('0x24')](_0x34a2cd);};}exports['index']=function(_0x117432,_0x6d8c24){var _0x3d6c19={},_0x3d81c3={},_0x21d319={'count':0x0,'rows':[]};var _0x27dc8d=_['map'](db[_0x696a('0x25')][_0x696a('0x26')],function(_0x59b3f7){return{'name':_0x59b3f7['fieldName'],'type':_0x59b3f7[_0x696a('0x27')][_0x696a('0x28')]};});_0x3d81c3[_0x696a('0x29')]=_['map'](_0x27dc8d,_0x696a('0x23'));_0x3d81c3['query']=_['keys'](_0x117432['query']);_0x3d81c3['filters']=_[_0x696a('0x2a')](_0x3d81c3[_0x696a('0x29')],_0x3d81c3[_0x696a('0x2b')]);_0x3d6c19[_0x696a('0x2c')]=_[_0x696a('0x2a')](_0x3d81c3[_0x696a('0x29')],qs[_0x696a('0x2d')](_0x117432[_0x696a('0x2b')][_0x696a('0x2d')]));_0x3d6c19[_0x696a('0x2c')]=_0x3d6c19[_0x696a('0x2c')][_0x696a('0x2e')]?_0x3d6c19['attributes']:_0x3d81c3[_0x696a('0x29')];if(!_0x117432[_0x696a('0x2b')][_0x696a('0x2f')](_0x696a('0x30'))){_0x3d6c19[_0x696a('0x1b')]=qs[_0x696a('0x1b')](_0x117432[_0x696a('0x2b')][_0x696a('0x1b')]);_0x3d6c19[_0x696a('0x18')]=qs[_0x696a('0x18')](_0x117432[_0x696a('0x2b')][_0x696a('0x18')]);}_0x3d6c19[_0x696a('0x31')]=qs[_0x696a('0x32')](_0x117432[_0x696a('0x2b')][_0x696a('0x32')]);_0x3d6c19[_0x696a('0x33')]=qs[_0x696a('0x34')](_['pick'](_0x117432[_0x696a('0x2b')],_0x3d81c3[_0x696a('0x34')]),_0x27dc8d);if(_0x117432['query'][_0x696a('0x35')]){_0x3d6c19['where']=_[_0x696a('0x36')](_0x3d6c19['where'],{'$or':_['map'](_0x27dc8d,function(_0x2fa44f){if(_0x2fa44f[_0x696a('0x27')]!==_0x696a('0x37')){var _0x189b49={};_0x189b49[_0x2fa44f[_0x696a('0x23')]]={'$like':'%'+_0x117432[_0x696a('0x2b')][_0x696a('0x35')]+'%'};return _0x189b49;}})});}_0x3d6c19=_[_0x696a('0x36')]({},_0x3d6c19,_0x117432[_0x696a('0x38')]);var _0x313b4a={'where':_0x3d6c19[_0x696a('0x33')]};return db[_0x696a('0x25')]['count'](_0x313b4a)['then'](function(_0x4b66c8){_0x21d319['count']=_0x4b66c8;if(_0x117432[_0x696a('0x2b')][_0x696a('0x39')]){_0x3d6c19[_0x696a('0x3a')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x696a('0x3b')](_0x3d6c19);})[_0x696a('0x3c')](function(_0x569790){_0x21d319['rows']=_0x569790;return _0x21d319;})[_0x696a('0x3c')](respondWithFilteredResult(_0x6d8c24,_0x3d6c19))[_0x696a('0x3d')](handleError(_0x6d8c24,null));};exports[_0x696a('0x3e')]=function(_0x36d96d,_0x271c6e){var _0x13d27a={'raw':!![],'where':{'id':_0x36d96d[_0x696a('0x3f')]['id']}},_0x11cce9={};_0x11cce9[_0x696a('0x29')]=_[_0x696a('0x40')](db[_0x696a('0x25')]['rawAttributes']);_0x11cce9[_0x696a('0x2b')]=_[_0x696a('0x40')](_0x36d96d[_0x696a('0x2b')]);_0x11cce9[_0x696a('0x34')]=_[_0x696a('0x2a')](_0x11cce9[_0x696a('0x29')],_0x11cce9['query']);_0x13d27a[_0x696a('0x2c')]=_['intersection'](_0x11cce9[_0x696a('0x29')],qs[_0x696a('0x2d')](_0x36d96d[_0x696a('0x2b')][_0x696a('0x2d')]));_0x13d27a['attributes']=_0x13d27a[_0x696a('0x2c')][_0x696a('0x2e')]?_0x13d27a['attributes']:_0x11cce9['model'];if(_0x36d96d[_0x696a('0x2b')]['includeAll']){_0x13d27a[_0x696a('0x3a')]=[{'all':!![]}];}_0x13d27a=_[_0x696a('0x36')]({},_0x13d27a,_0x36d96d[_0x696a('0x38')]);return db[_0x696a('0x25')][_0x696a('0x41')](_0x13d27a)[_0x696a('0x3c')](handleEntityNotFound(_0x271c6e,null))[_0x696a('0x3c')](respondWithResult(_0x271c6e,null))[_0x696a('0x3d')](handleError(_0x271c6e,null));};exports[_0x696a('0x42')]=function(_0x6d7045,_0x2e17ee){return db[_0x696a('0x25')]['create'](_0x6d7045[_0x696a('0x43')],{})[_0x696a('0x3c')](respondWithResult(_0x2e17ee,0xc9))['catch'](handleError(_0x2e17ee,null));};exports['update']=function(_0x5e057d,_0x149316){if(_0x5e057d[_0x696a('0x43')]['id']){delete _0x5e057d[_0x696a('0x43')]['id'];}return db[_0x696a('0x25')]['find']({'where':{'id':_0x5e057d['params']['id']}})['then'](handleEntityNotFound(_0x149316,null))[_0x696a('0x3c')](saveUpdates(_0x5e057d[_0x696a('0x43')],null))['then'](respondWithResult(_0x149316,null))[_0x696a('0x3d')](handleError(_0x149316,null));};exports[_0x696a('0x21')]=function(_0x2fb058,_0x508810){return db[_0x696a('0x25')][_0x696a('0x41')]({'where':{'id':_0x2fb058[_0x696a('0x3f')]['id']}})[_0x696a('0x3c')](handleEntityNotFound(_0x508810,null))['then'](removeEntity(_0x508810,null))['catch'](handleError(_0x508810,null));};exports[_0x696a('0x44')]=function(_0x41ee59,_0x5d5a2f){return db['VoiceTransferReport']['describe']()[_0x696a('0x3c')](respondWithResult(_0x5d5a2f,null))['catch'](handleError(_0x5d5a2f,null));};
\ No newline at end of file
index e43d92b..a43d6cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb88d=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','report_call_transfer','lodash'];(function(_0xec84d8,_0x31f774){var _0x281e56=function(_0x2c3ea2){while(--_0x2c3ea2){_0xec84d8['push'](_0xec84d8['shift']());}};_0x281e56(++_0x31f774);}(_0xb88d,0xbf));var _0xdb88=function(_0x16160d,_0x4ff1ac){_0x16160d=_0x16160d-0x0;var _0xe5f906=_0xb88d[_0x16160d];return _0xe5f906;};'use strict';var _=require(_0xdb88('0x0'));var util=require('util');var logger=require(_0xdb88('0x1'))('api');var moment=require(_0xdb88('0x2'));var BPromise=require(_0xdb88('0x3'));var rp=require(_0xdb88('0x4'));var fs=require('fs');var path=require(_0xdb88('0x5'));var rimraf=require(_0xdb88('0x6'));var config=require(_0xdb88('0x7'));var attributes=require(_0xdb88('0x8'));module[_0xdb88('0x9')]=function(_0x4acc04,_0x1cbfd7){return _0x4acc04[_0xdb88('0xa')]('VoiceTransferReport',attributes,{'tableName':_0xdb88('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x58b1=['report_call_transfer','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./voiceTransferReport.attributes','define','VoiceTransferReport'];(function(_0xc469c7,_0x4c392f){var _0xe08b01=function(_0x22b68b){while(--_0x22b68b){_0xc469c7['push'](_0xc469c7['shift']());}};_0xe08b01(++_0x4c392f);}(_0x58b1,0x1ed));var _0x158b=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0x58b1[_0x173d7e];return _0x2220d6;};'use strict';var _=require(_0x158b('0x0'));var util=require(_0x158b('0x1'));var logger=require('../../config/logger')(_0x158b('0x2'));var moment=require(_0x158b('0x3'));var BPromise=require(_0x158b('0x4'));var rp=require(_0x158b('0x5'));var fs=require('fs');var path=require(_0x158b('0x6'));var rimraf=require('rimraf');var config=require(_0x158b('0x7'));var attributes=require(_0x158b('0x8'));module['exports']=function(_0x35df15,_0x1e1a20){return _0x35df15[_0x158b('0x9')](_0x158b('0xa'),attributes,{'tableName':_0x158b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 466fddd..49f312e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a9=['CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x5ae58c,_0x29a28c){var _0x4bc987=function(_0x4869ea){while(--_0x4869ea){_0x5ae58c['push'](_0x5ae58c['shift']());}};_0x4bc987(++_0x29a28c);}(_0xd3a9,0x1b6));var _0x9d3a=function(_0x2a4fe5,_0x5e9e2d){_0x2a4fe5=_0x2a4fe5-0x0;var _0x24b886=_0xd3a9[_0x2a4fe5];return _0x24b886;};'use strict';var _=require(_0x9d3a('0x0'));var util=require(_0x9d3a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9d3a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d3a('0x3'))['db'];var utils=require(_0x9d3a('0x4'));var logger=require(_0x9d3a('0x5'))('rpc');var config=require(_0x9d3a('0x6'));var jayson=require(_0x9d3a('0x7'));var client=jayson[_0x9d3a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26a8f8,_0x843e64,_0x59b8cc){return new BPromise(function(_0x2652e7,_0x128da1){return client[_0x9d3a('0x9')](_0x26a8f8,_0x59b8cc)[_0x9d3a('0xa')](function(_0x4caca3){logger[_0x9d3a('0xb')](_0x9d3a('0xc'),_0x843e64,_0x9d3a('0xd'));logger[_0x9d3a('0xe')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x843e64,_0x9d3a('0xd'),JSON[_0x9d3a('0xf')](_0x4caca3));if(_0x4caca3[_0x9d3a('0x10')]){if(_0x4caca3[_0x9d3a('0x10')][_0x9d3a('0x11')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x843e64,_0x4caca3[_0x9d3a('0x10')][_0x9d3a('0x12')]);return _0x128da1(_0x4caca3[_0x9d3a('0x10')][_0x9d3a('0x12')]);}logger[_0x9d3a('0x10')](_0x9d3a('0xc'),_0x843e64,_0x4caca3['error'][_0x9d3a('0x12')]);return _0x2652e7(_0x4caca3['error']['message']);}else{logger[_0x9d3a('0xb')](_0x9d3a('0xc'),_0x843e64,_0x9d3a('0xd'));_0x2652e7(_0x4caca3[_0x9d3a('0x13')][_0x9d3a('0x12')]);}})[_0x9d3a('0x14')](function(_0x22a1ad){logger[_0x9d3a('0x10')](_0x9d3a('0xc'),_0x843e64,_0x22a1ad);_0x128da1(_0x22a1ad);});});}exports[_0x9d3a('0x15')]=function(_0x433b1b){var _0xba15af=this;return new Promise(function(_0x44c54e,_0x406389){return db[_0x9d3a('0x16')][_0x9d3a('0x17')](_0x433b1b[_0x9d3a('0x18')],{'raw':_0x433b1b[_0x9d3a('0x19')]?_0x433b1b['options'][_0x9d3a('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x7be36f){logger['info'](_0x9d3a('0x15'),_0x433b1b);logger[_0x9d3a('0xe')]('CreateVoiceTransferReport',_0x433b1b,JSON['stringify'](_0x7be36f));_0x44c54e(_0x7be36f);})[_0x9d3a('0x14')](function(_0x3cee9a){logger[_0x9d3a('0x10')]('CreateVoiceTransferReport',_0x3cee9a[_0x9d3a('0x12')],_0x433b1b);_0x406389(_0xba15af['error'](0x1f4,_0x3cee9a['message']));});});};
\ No newline at end of file
+var _0x1fd9=['../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','lodash','util','bluebird','randomstring','ioredis'];(function(_0x173622,_0x2fa1b4){var _0x37d9bd=function(_0x3da880){while(--_0x3da880){_0x173622['push'](_0x173622['shift']());}};_0x37d9bd(++_0x2fa1b4);}(_0x1fd9,0xdb));var _0x91fd=function(_0x201f2e,_0x4270f9){_0x201f2e=_0x201f2e-0x0;var _0x1efc2d=_0x1fd9[_0x201f2e];return _0x1efc2d;};'use strict';var _=require(_0x91fd('0x0'));var util=require(_0x91fd('0x1'));var moment=require('moment');var BPromise=require(_0x91fd('0x2'));var rs=require(_0x91fd('0x3'));var fs=require('fs');var Redis=require(_0x91fd('0x4'));var db=require(_0x91fd('0x5'))['db'];var utils=require(_0x91fd('0x6'));var logger=require('../../config/logger')(_0x91fd('0x7'));var config=require(_0x91fd('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x91fd('0x9')][_0x91fd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x347af2,_0x444534,_0x2e971c){return new BPromise(function(_0xf3fb65,_0x316edb){return client[_0x91fd('0xb')](_0x347af2,_0x2e971c)[_0x91fd('0xc')](function(_0x2677ec){logger[_0x91fd('0xd')](_0x91fd('0xe'),_0x444534,_0x91fd('0xf'));logger[_0x91fd('0x10')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x444534,'request\x20sent',JSON[_0x91fd('0x11')](_0x2677ec));if(_0x2677ec['error']){if(_0x2677ec[_0x91fd('0x12')][_0x91fd('0x13')]===0x1f4){logger[_0x91fd('0x12')](_0x91fd('0xe'),_0x444534,_0x2677ec['error'][_0x91fd('0x14')]);return _0x316edb(_0x2677ec[_0x91fd('0x12')][_0x91fd('0x14')]);}logger[_0x91fd('0x12')]('VoiceTransferReport,\x20%s,\x20%s',_0x444534,_0x2677ec[_0x91fd('0x12')][_0x91fd('0x14')]);return _0xf3fb65(_0x2677ec[_0x91fd('0x12')]['message']);}else{logger[_0x91fd('0xd')](_0x91fd('0xe'),_0x444534,_0x91fd('0xf'));_0xf3fb65(_0x2677ec[_0x91fd('0x15')]['message']);}})[_0x91fd('0x16')](function(_0x457f07){logger[_0x91fd('0x12')](_0x91fd('0xe'),_0x444534,_0x457f07);_0x316edb(_0x457f07);});});}exports[_0x91fd('0x17')]=function(_0x9a00a4){var _0x46c69b=this;return new Promise(function(_0x1e1b95,_0x328c26){return db[_0x91fd('0x18')][_0x91fd('0x19')](_0x9a00a4[_0x91fd('0x1a')],{'raw':_0x9a00a4[_0x91fd('0x1b')]?_0x9a00a4[_0x91fd('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x227d5b){logger[_0x91fd('0xd')](_0x91fd('0x17'),_0x9a00a4);logger[_0x91fd('0x10')](_0x91fd('0x17'),_0x9a00a4,JSON[_0x91fd('0x11')](_0x227d5b));_0x1e1b95(_0x227d5b);})[_0x91fd('0x16')](function(_0x2eb39e){logger['error'](_0x91fd('0x17'),_0x2eb39e[_0x91fd('0x14')],_0x9a00a4);_0x328c26(_0x46c69b[_0x91fd('0x12')](0x1f4,_0x2eb39e[_0x91fd('0x14')]));});});};
\ No newline at end of file
index 0a62ef9..34592d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/transfer','express','Router','../../components/auth/service','post','/originate','isAuthenticated','isWebrtcLicence','originate','/hangup','hangup','/answer','answer','/hold','hold','/unhold','/calls','calls'];(function(_0xe93e00,_0x3d115b){var _0xd11988=function(_0x4f5ba7){while(--_0x4f5ba7){_0xe93e00['push'](_0xe93e00['shift']());}};_0xd11988(++_0x3d115b);}(_0xe706,0xa3));var _0x6e70=function(_0x82f586,_0x382c19){_0x82f586=_0x82f586-0x0;var _0x591ec8=_0xe706[_0x82f586];return _0x591ec8;};'use strict';var express=require(_0x6e70('0x0'));var router=express[_0x6e70('0x1')]();var auth=require(_0x6e70('0x2'));var controller=require('./webbar.controller');router[_0x6e70('0x3')](_0x6e70('0x4'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0x7')]);router[_0x6e70('0x3')](_0x6e70('0x8'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0x9')]);router[_0x6e70('0x3')](_0x6e70('0xa'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0xb')]);router[_0x6e70('0x3')](_0x6e70('0xc'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0xd')]);router[_0x6e70('0x3')](_0x6e70('0xe'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller['unhold']);router['post'](_0x6e70('0xf'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x3')](_0x6e70('0x11'),auth[_0x6e70('0x5')](),auth[_0x6e70('0x6')](),controller['transfer']);module['exports']=router;
\ No newline at end of file
+var _0xaa88=['/hold','/unhold','/calls','calls','transfer','express','Router','../../components/auth/service','./webbar.controller','/originate','isAuthenticated','isWebrtcLicence','originate','post','/hangup','hangup','/answer','answer'];(function(_0x4ba460,_0x2c7169){var _0x3c4598=function(_0x4e2d19){while(--_0x4e2d19){_0x4ba460['push'](_0x4ba460['shift']());}};_0x3c4598(++_0x2c7169);}(_0xaa88,0x137));var _0x8aa8=function(_0x29e0eb,_0x9acb52){_0x29e0eb=_0x29e0eb-0x0;var _0x597d2d=_0xaa88[_0x29e0eb];return _0x597d2d;};'use strict';var express=require(_0x8aa8('0x0'));var router=express[_0x8aa8('0x1')]();var auth=require(_0x8aa8('0x2'));var controller=require(_0x8aa8('0x3'));router['post'](_0x8aa8('0x4'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0x7')]);router[_0x8aa8('0x8')](_0x8aa8('0x9'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0x8aa8('0xa')]);router['post'](_0x8aa8('0xb'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0xc')]);router['post'](_0x8aa8('0xd'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller['hold']);router[_0x8aa8('0x8')](_0x8aa8('0xe'),auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller['unhold']);router[_0x8aa8('0x8')](_0x8aa8('0xf'),auth['isAuthenticated'](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0x10')]);router[_0x8aa8('0x8')]('/transfer',auth[_0x8aa8('0x5')](),auth[_0x8aa8('0x6')](),controller[_0x8aa8('0x11')]);module['exports']=router;
\ No newline at end of file
index 88efc10..e5a1995 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593e=['number','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','handleError:','error','name','status','send','NotFound','request','code','message','catch','findOne','agent','then','all','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callerId','callbackUrl','entityFound:','format','user:%s','hangup\x20fired:','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','webbar:hold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','VoiceChannels','rows','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','callNumber\x20is\x20required'];(function(_0x27c934,_0x400e69){var _0xf01413=function(_0xafb050){while(--_0xafb050){_0x27c934['push'](_0x27c934['shift']());}};_0xf01413(++_0x400e69);}(_0x593e,0xcb));var _0xe593=function(_0x24e173,_0x1d2afb){_0x24e173=_0x24e173-0x0;var _0x579ff9=_0x593e[_0x24e173];return _0x579ff9;};'use strict';var path=require(_0xe593('0x0'));var fs=require('fs');var _=require(_0xe593('0x1'));var db=require(_0xe593('0x2'))['db'];var config=require(_0xe593('0x3'));var util=require(_0xe593('0x4'));var BPromise=require(_0xe593('0x5'));var jayson=require(_0xe593('0x6'));var amiClient=jayson[_0xe593('0x7')]['http']({'port':0x232a});var logger=require(_0xe593('0x8'))(_0xe593('0x9'));var Redis=require(_0xe593('0xa'));config[_0xe593('0xb')]=_[_0xe593('0xc')](config[_0xe593('0xb')],{'host':_0xe593('0xd'),'port':0x18eb});var io=require(_0xe593('0xe'))(new Redis(config[_0xe593('0xb')]));var Schema=require(_0xe593('0xf'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]},'callNumber':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x12')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x14')]},'transferNumber':{'type':_0xe593('0x11'),'required':[!![],_0xe593('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xe593('0x13'),'required':[!![],_0xe593('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xe593('0x10')]}});function emit(_0x40416c,_0x1c6de3,_0x2d525c){logger[_0xe593('0x16')](_0x40416c,_0x1c6de3,JSON[_0xe593('0x17')](_0x2d525c));io['to'](_0x40416c)['emit'](_0x1c6de3,_0x2d525c);}function handleError(_0xfbc79f){return function(_0x470d07){console['log'](_0xe593('0x18'),_0x470d07,_0x470d07 instanceof RangeError);logger[_0xe593('0x19')](_0x470d07['stack']);if(_0x470d07 instanceof RangeError){if(_0x470d07[_0xe593('0x1a')]){delete _0x470d07[_0xe593('0x1a')];}_0xfbc79f[_0xe593('0x1b')](0x194)[_0xe593('0x1c')](_0x470d07);}else{if(_0x470d07[_0xe593('0x1a')]){delete _0x470d07[_0xe593('0x1a')];}_0xfbc79f[_0xe593('0x1b')](0x1f4)['send'](_0x470d07);}};}function checkError(){return function(_0x4af4c8){if(!_0x4af4c8){throw new RangeError(_0xe593('0x1d'));}return _0x4af4c8;};}function respondWithRpcPromise(_0x5d4895,_0x56c23f){return new BPromise(function(_0x1bb8e8,_0x3c65b5){var _0x57379d=amiClient;return _0x57379d[_0xe593('0x1e')](_0x5d4895,_0x56c23f)['then'](function(_0x1672bf){if(_0x1672bf[_0xe593('0x19')]){if(_0x1672bf[_0xe593('0x19')][_0xe593('0x1f')]===0x1f4){return _0x3c65b5(_0x1672bf[_0xe593('0x19')][_0xe593('0x20')]);}return _0x1bb8e8(_0x1672bf[_0xe593('0x19')][_0xe593('0x20')]);}else{_0x1bb8e8(_0x1672bf['result']);}})[_0xe593('0x21')](function(_0x347d7d){_0x3c65b5(_0x347d7d);});});}function getAgent(_0x480218){return db['User'][_0xe593('0x22')]({'where':{'id':_0x480218,'role':_0xe593('0x23')}})[_0xe593('0x24')](checkError());}function getAgentCheckSession(_0x43699d,_0x3b66bc){return new BPromise(function(_0x27a3d2,_0x5918cd){var _0x350e2b=respondWithRpcPromise('VoiceChannels');var _0x1dacf6=getAgent(_0x43699d);Promise[_0xe593('0x25')]([_0x350e2b,_0x1dacf6])['then'](function(_0x337ee0){var _0x561a01=_0x337ee0[0x0];var _0x44a68c=_0x337ee0[0x1];var _0x1c147b=_[_0xe593('0x26')](_0x561a01['rows'],function(_0x1ae8d9){return _0x1ae8d9[_0xe593('0x27')]==_0x44a68c['id']&&_0x1ae8d9[_0xe593('0x28')]==_0x3b66bc;});if(_0x1c147b[_0xe593('0x29')]==0x1){_0x27a3d2(_0x44a68c);}else{_0x5918cd(new RangeError(_0xe593('0x2a')+_0x3b66bc+_0xe593('0x2b')));}});});}exports[_0xe593('0x2c')]=function(_0x4efc93,_0x4098a9){logger[_0xe593('0x16')]('originate\x20fired:',_0x4efc93[_0xe593('0x2d')]);var _0x571995=originateValidation[_0xe593('0xf')](_0x4efc93[_0xe593('0x2d')]);if(_0x571995[_0xe593('0x29')]>0x0){return _0x4098a9[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x571995);}var _0x24a560=_0x4efc93[_0xe593('0x2d')][_0xe593('0x2f')];var _0x11f287=_0x4efc93[_0xe593('0x2d')]['callNumber'];var _0x27a563=_0x4efc93[_0xe593('0x2d')][_0xe593('0x30')];var _0x5a55c0=_0x4efc93['body'][_0xe593('0x31')];return getAgent(_0x24a560)['then'](function(_0x232bf1){logger[_0xe593('0x16')](_0xe593('0x32'),_0x232bf1[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x232bf1[_0xe593('0x1a')]),'webbar:originate',{'callNumber':_0x11f287,'callerId':_0x27a563,'callbackUrl':_0x5a55c0});return _0x4098a9['status'](0xc8)[_0xe593('0x2e')]({'error':![],'message':'originate\x20executed!'});})[_0xe593('0x21')](handleError(_0x4098a9));};exports['hangup']=function(_0x206775,_0x5b9589){logger['info'](_0xe593('0x35'),_0x206775[_0xe593('0x2d')]);var _0x2aa9d8=hangupValidation['validate'](_0x206775['body']);if(_0x2aa9d8['length']>0x0){return _0x5b9589[_0xe593('0x1b')](0x190)['json'](_0x2aa9d8);}var _0x37ba0e=_0x206775[_0xe593('0x2d')][_0xe593('0x2f')];var _0x475207=_0x206775['body'][_0xe593('0x28')];return getAgent(_0x37ba0e)['then'](function(_0x36c08e){logger['info']('entityFound:',_0x36c08e['name']);emit(util[_0xe593('0x33')]('user:%s',_0x36c08e[_0xe593('0x1a')]),_0xe593('0x36'),{'sessionId':_0x475207});return _0x5b9589[_0xe593('0x1b')](0xc8)['json']({'error':![],'message':_0xe593('0x37')});})[_0xe593('0x21')](handleError(_0x5b9589));};exports[_0xe593('0x38')]=function(_0x4655dd,_0x26ff41){logger[_0xe593('0x16')](_0xe593('0x39'),_0x4655dd[_0xe593('0x2d')]);var _0x4b36e1=answerValidation[_0xe593('0xf')](_0x4655dd[_0xe593('0x2d')]);if(_0x4b36e1[_0xe593('0x29')]>0x0){return _0x26ff41[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x4b36e1);}var _0x4d3018=_0x4655dd['body'][_0xe593('0x2f')];var _0x380429=_0x4655dd[_0xe593('0x2d')]['sessionId'];return getAgent(_0x4d3018)[_0xe593('0x24')](function(_0x8a4c26){logger['info']('entityFound:',_0x8a4c26[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x8a4c26['name']),_0xe593('0x3a'),{'sessionId':_0x380429});return _0x26ff41[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x3b')});})['catch'](handleError(_0x26ff41));};exports['hold']=function(_0x4a7434,_0x4c8d14){logger[_0xe593('0x16')]('hold\x20fired:',_0x4a7434[_0xe593('0x2d')]);var _0xd016b3=holdValidation[_0xe593('0xf')](_0x4a7434[_0xe593('0x2d')]);if(_0xd016b3[_0xe593('0x29')]>0x0){return _0x4c8d14[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0xd016b3);}var _0x297c3e=_0x4a7434['body'][_0xe593('0x2f')];var _0x1a5e0f=_0x4a7434[_0xe593('0x2d')]['sessionId'];return getAgent(_0x297c3e)[_0xe593('0x24')](function(_0x5dfdb1){logger[_0xe593('0x16')](_0xe593('0x32'),_0x5dfdb1[_0xe593('0x1a')]);emit(util['format']('user:%s',_0x5dfdb1[_0xe593('0x1a')]),_0xe593('0x3c'),{'sessionId':_0x1a5e0f});return _0x4c8d14['status'](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x4c8d14));};exports['unhold']=function(_0x383645,_0x1e48d8){logger[_0xe593('0x16')](_0xe593('0x3d'),_0x383645[_0xe593('0x2d')]);var _0x44201e=unholdValidation[_0xe593('0xf')](_0x383645[_0xe593('0x2d')]);if(_0x44201e[_0xe593('0x29')]>0x0){return _0x1e48d8[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x44201e);}var _0x1ea4ef=_0x383645[_0xe593('0x2d')][_0xe593('0x2f')];var _0xa25aa8=_0x383645[_0xe593('0x2d')]['sessionId'];return getAgent(_0x1ea4ef)[_0xe593('0x24')](function(_0x12e2ac){logger[_0xe593('0x16')](_0xe593('0x32'),_0x12e2ac[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x12e2ac[_0xe593('0x1a')]),_0xe593('0x3e'),{'sessionId':_0xa25aa8});return _0x1e48d8[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x3f')});})[_0xe593('0x21')](handleError(_0x1e48d8));};exports[_0xe593('0x40')]=function(_0x93ca5e,_0x5e8f9c){logger[_0xe593('0x16')](_0xe593('0x41'),_0x5e8f9c[_0xe593('0x2d')]);var _0x24d061=callsValidation[_0xe593('0xf')](_0x93ca5e['body']);if(_0x24d061['length']>0x0){return _0x5e8f9c[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x24d061);}var _0x318dd2=_0x93ca5e[_0xe593('0x2d')][_0xe593('0x2f')];var _0x1e49ed=respondWithRpcPromise(_0xe593('0x42'));var _0x518b6f=getAgent(_0x318dd2);return Promise['all']([_0x1e49ed,_0x518b6f])[_0xe593('0x24')](function(_0x23ee3b){var _0x4ff51d=_0x23ee3b[0x0];var _0x103403=_0x23ee3b[0x1];var _0xf8ed1d=_[_0xe593('0x26')](_0x4ff51d[_0xe593('0x43')],function(_0x3a3d7b){return _0x3a3d7b[_0xe593('0x27')]==_0x103403['id'];});return _0x5e8f9c[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'count':_0xf8ed1d[_0xe593('0x29')],'rows':_0xf8ed1d});})[_0xe593('0x21')](handleError(_0x5e8f9c));};exports['conference']=function(_0x36f38e,_0x13e368){logger[_0xe593('0x16')](_0xe593('0x44'),_0x36f38e[_0xe593('0x2d')]);var _0x202b18=conferenceValidation[_0xe593('0xf')](_0x36f38e['body']);if(_0x202b18[_0xe593('0x29')]>0x0){return _0x13e368[_0xe593('0x1b')](0x190)[_0xe593('0x2e')](_0x202b18);}var _0x14f8e1=_0x36f38e['body'][_0xe593('0x2f')];return getAgent(_0x14f8e1)[_0xe593('0x24')](function(_0x207c3d){logger[_0xe593('0x16')](_0xe593('0x32'),_0x207c3d['name']);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x207c3d[_0xe593('0x1a')]),_0xe593('0x45'));return _0x13e368[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x46')});})[_0xe593('0x21')](handleError(_0x13e368));};exports['transfer']=function(_0x2145c0,_0x16f9fc){logger[_0xe593('0x16')](_0xe593('0x47'),_0x2145c0[_0xe593('0x2d')]);var _0x9f1813=transferValidation[_0xe593('0xf')](_0x2145c0[_0xe593('0x2d')]);if(_0x9f1813[_0xe593('0x29')]>0x0){return _0x16f9fc[_0xe593('0x1b')](0x190)['json'](_0x9f1813);}var _0x190e90=_0x2145c0[_0xe593('0x2d')][_0xe593('0x2f')];var _0x492a9e=_0x2145c0[_0xe593('0x2d')][_0xe593('0x28')];var _0x4001b7=_0x2145c0[_0xe593('0x2d')][_0xe593('0x48')];return getAgent(_0x190e90)['then'](function(_0x17a1bc){logger[_0xe593('0x16')]('entityFound:',_0x17a1bc[_0xe593('0x1a')]);emit(util[_0xe593('0x33')](_0xe593('0x34'),_0x17a1bc[_0xe593('0x1a')]),'webbar:transfer',{'sessionId':_0x492a9e,'transferNumber':_0x4001b7});return _0x16f9fc[_0xe593('0x1b')](0xc8)[_0xe593('0x2e')]({'error':![],'message':_0xe593('0x49')});})['catch'](handleError(_0x16f9fc));};
\ No newline at end of file
+var _0xfe57=['VoiceChannels','all','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!','path','lodash','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','userId\x20is\x20required','string','number','transferNumber\x20is\x20required','info','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','catch','User','findOne','agent','filter','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','sessionId','entityFound:','format','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','calls'];(function(_0x5960e1,_0x590da1){var _0x37b89b=function(_0x108235){while(--_0x108235){_0x5960e1['push'](_0x5960e1['shift']());}};_0x37b89b(++_0x590da1);}(_0xfe57,0x195));var _0x7fe5=function(_0x30b0d8,_0x57470c){_0x30b0d8=_0x30b0d8-0x0;var _0x459c09=_0xfe57[_0x30b0d8];return _0x459c09;};'use strict';var path=require(_0x7fe5('0x0'));var fs=require('fs');var _=require(_0x7fe5('0x1'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var util=require(_0x7fe5('0x2'));var BPromise=require(_0x7fe5('0x3'));var jayson=require(_0x7fe5('0x4'));var amiClient=jayson[_0x7fe5('0x5')][_0x7fe5('0x6')]({'port':0x232a});var logger=require(_0x7fe5('0x7'))(_0x7fe5('0x8'));var Redis=require(_0x7fe5('0x9'));config[_0x7fe5('0xa')]=_[_0x7fe5('0xb')](config[_0x7fe5('0xa')],{'host':_0x7fe5('0xc'),'port':0x18eb});var io=require(_0x7fe5('0xd'))(new Redis(config['redis']));var Schema=require(_0x7fe5('0xe'));var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0x7fe5('0xf')]},'callNumber':{'type':_0x7fe5('0x10'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':'string'},'callbackUrl':{'type':_0x7fe5('0x10')}});var hangupValidation=new Schema({'userId':{'type':_0x7fe5('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x7fe5('0x10'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x7fe5('0x10'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x7fe5('0x11'),'required':[!![],_0x7fe5('0xf')]},'sessionId':{'type':_0x7fe5('0x10'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x7fe5('0x10'),'required':[!![],_0x7fe5('0x12')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x7fe5('0xf')]},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x7fe5('0x11'),'required':[!![],_0x7fe5('0xf')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x7fe5('0x11'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x7fe5('0x11'),'required':[!![],_0x7fe5('0xf')]}});function emit(_0xbdf0a4,_0x4989a,_0x3f699b){logger[_0x7fe5('0x13')](_0xbdf0a4,_0x4989a,JSON['stringify'](_0x3f699b));io['to'](_0xbdf0a4)[_0x7fe5('0x14')](_0x4989a,_0x3f699b);}function handleError(_0x3c7dd3){return function(_0x340d5e){console[_0x7fe5('0x15')](_0x7fe5('0x16'),_0x340d5e,_0x340d5e instanceof RangeError);logger[_0x7fe5('0x17')](_0x340d5e[_0x7fe5('0x18')]);if(_0x340d5e instanceof RangeError){if(_0x340d5e[_0x7fe5('0x19')]){delete _0x340d5e[_0x7fe5('0x19')];}_0x3c7dd3[_0x7fe5('0x1a')](0x194)['send'](_0x340d5e);}else{if(_0x340d5e['name']){delete _0x340d5e[_0x7fe5('0x19')];}_0x3c7dd3[_0x7fe5('0x1a')](0x1f4)[_0x7fe5('0x1b')](_0x340d5e);}};}function checkError(){return function(_0x327301){if(!_0x327301){throw new RangeError(_0x7fe5('0x1c'));}return _0x327301;};}function respondWithRpcPromise(_0x39c3ba,_0x24efbb){return new BPromise(function(_0xdd9df7,_0x1b271c){var _0x28a7fd=amiClient;return _0x28a7fd[_0x7fe5('0x1d')](_0x39c3ba,_0x24efbb)[_0x7fe5('0x1e')](function(_0x54ee98){if(_0x54ee98[_0x7fe5('0x17')]){if(_0x54ee98[_0x7fe5('0x17')][_0x7fe5('0x1f')]===0x1f4){return _0x1b271c(_0x54ee98['error'][_0x7fe5('0x20')]);}return _0xdd9df7(_0x54ee98['error'][_0x7fe5('0x20')]);}else{_0xdd9df7(_0x54ee98['result']);}})[_0x7fe5('0x21')](function(_0x190355){_0x1b271c(_0x190355);});});}function getAgent(_0x134876){return db[_0x7fe5('0x22')][_0x7fe5('0x23')]({'where':{'id':_0x134876,'role':_0x7fe5('0x24')}})['then'](checkError());}function getAgentCheckSession(_0x5f2d25,_0x417a56){return new BPromise(function(_0x450759,_0x27b66d){var _0x13c96b=respondWithRpcPromise('VoiceChannels');var _0x46f816=getAgent(_0x5f2d25);Promise['all']([_0x13c96b,_0x46f816])[_0x7fe5('0x1e')](function(_0x1420de){var _0x204bc8=_0x1420de[0x0];var _0x28a689=_0x1420de[0x1];var _0x1f8572=_[_0x7fe5('0x25')](_0x204bc8['rows'],function(_0xe521c6){return _0xe521c6[_0x7fe5('0x26')]==_0x28a689['id']&&_0xe521c6['sessionId']==_0x417a56;});if(_0x1f8572[_0x7fe5('0x27')]==0x1){_0x450759(_0x28a689);}else{_0x27b66d(new RangeError(_0x7fe5('0x28')+_0x417a56+_0x7fe5('0x29')));}});});}exports[_0x7fe5('0x2a')]=function(_0x465e46,_0x53ef16){logger['info'](_0x7fe5('0x2b'),_0x465e46[_0x7fe5('0x2c')]);var _0x3dbb62=originateValidation[_0x7fe5('0xe')](_0x465e46['body']);if(_0x3dbb62[_0x7fe5('0x27')]>0x0){return _0x53ef16[_0x7fe5('0x1a')](0x190)[_0x7fe5('0x2d')](_0x3dbb62);}var _0x4227b7=_0x465e46[_0x7fe5('0x2c')][_0x7fe5('0x2e')];var _0x4ecbba=_0x465e46[_0x7fe5('0x2c')][_0x7fe5('0x2f')];var _0x2c8225=_0x465e46[_0x7fe5('0x2c')]['callerId'];var _0x5617c2=_0x465e46[_0x7fe5('0x2c')]['callbackUrl'];return getAgent(_0x4227b7)[_0x7fe5('0x1e')](function(_0x513680){logger[_0x7fe5('0x13')]('entityFound:',_0x513680['name']);emit(util['format']('user:%s',_0x513680[_0x7fe5('0x19')]),_0x7fe5('0x30'),{'callNumber':_0x4ecbba,'callerId':_0x2c8225,'callbackUrl':_0x5617c2});return _0x53ef16['status'](0xc8)[_0x7fe5('0x2d')]({'error':![],'message':_0x7fe5('0x31')});})['catch'](handleError(_0x53ef16));};exports[_0x7fe5('0x32')]=function(_0x4a641d,_0x4aeed2){logger[_0x7fe5('0x13')](_0x7fe5('0x33'),_0x4a641d[_0x7fe5('0x2c')]);var _0x2ff773=hangupValidation[_0x7fe5('0xe')](_0x4a641d['body']);if(_0x2ff773[_0x7fe5('0x27')]>0x0){return _0x4aeed2[_0x7fe5('0x1a')](0x190)['json'](_0x2ff773);}var _0x1fa05a=_0x4a641d[_0x7fe5('0x2c')][_0x7fe5('0x2e')];var _0xf75042=_0x4a641d[_0x7fe5('0x2c')][_0x7fe5('0x34')];return getAgent(_0x1fa05a)[_0x7fe5('0x1e')](function(_0x50cfa5){logger['info'](_0x7fe5('0x35'),_0x50cfa5['name']);emit(util[_0x7fe5('0x36')](_0x7fe5('0x37'),_0x50cfa5['name']),_0x7fe5('0x38'),{'sessionId':_0xf75042});return _0x4aeed2[_0x7fe5('0x1a')](0xc8)[_0x7fe5('0x2d')]({'error':![],'message':_0x7fe5('0x39')});})[_0x7fe5('0x21')](handleError(_0x4aeed2));};exports[_0x7fe5('0x3a')]=function(_0x1cd6d3,_0x4ee6cc){logger['info'](_0x7fe5('0x3b'),_0x1cd6d3['body']);var _0xad0b05=answerValidation[_0x7fe5('0xe')](_0x1cd6d3[_0x7fe5('0x2c')]);if(_0xad0b05[_0x7fe5('0x27')]>0x0){return _0x4ee6cc['status'](0x190)[_0x7fe5('0x2d')](_0xad0b05);}var _0x5439bc=_0x1cd6d3['body'][_0x7fe5('0x2e')];var _0x585f27=_0x1cd6d3['body'][_0x7fe5('0x34')];return getAgent(_0x5439bc)[_0x7fe5('0x1e')](function(_0x46826f){logger[_0x7fe5('0x13')](_0x7fe5('0x35'),_0x46826f['name']);emit(util[_0x7fe5('0x36')](_0x7fe5('0x37'),_0x46826f['name']),_0x7fe5('0x3c'),{'sessionId':_0x585f27});return _0x4ee6cc[_0x7fe5('0x1a')](0xc8)[_0x7fe5('0x2d')]({'error':![],'message':_0x7fe5('0x3d')});})['catch'](handleError(_0x4ee6cc));};exports[_0x7fe5('0x3e')]=function(_0x13225e,_0x7355ac){logger['info'](_0x7fe5('0x3f'),_0x13225e[_0x7fe5('0x2c')]);var _0x3efc98=holdValidation['validate'](_0x13225e[_0x7fe5('0x2c')]);if(_0x3efc98[_0x7fe5('0x27')]>0x0){return _0x7355ac[_0x7fe5('0x1a')](0x190)['json'](_0x3efc98);}var _0x19c4a6=_0x13225e[_0x7fe5('0x2c')][_0x7fe5('0x2e')];var _0x4610b6=_0x13225e[_0x7fe5('0x2c')][_0x7fe5('0x34')];return getAgent(_0x19c4a6)[_0x7fe5('0x1e')](function(_0x447b57){logger[_0x7fe5('0x13')](_0x7fe5('0x35'),_0x447b57[_0x7fe5('0x19')]);emit(util['format']('user:%s',_0x447b57['name']),'webbar:hold',{'sessionId':_0x4610b6});return _0x7355ac[_0x7fe5('0x1a')](0xc8)['json']({'error':![],'message':_0x7fe5('0x40')});})[_0x7fe5('0x21')](handleError(_0x7355ac));};exports[_0x7fe5('0x41')]=function(_0x1d9ca8,_0x362f33){logger['info'](_0x7fe5('0x42'),_0x1d9ca8[_0x7fe5('0x2c')]);var _0x1bd234=unholdValidation[_0x7fe5('0xe')](_0x1d9ca8[_0x7fe5('0x2c')]);if(_0x1bd234[_0x7fe5('0x27')]>0x0){return _0x362f33[_0x7fe5('0x1a')](0x190)[_0x7fe5('0x2d')](_0x1bd234);}var _0x2df3b0=_0x1d9ca8[_0x7fe5('0x2c')]['userId'];var _0x1c16d4=_0x1d9ca8[_0x7fe5('0x2c')][_0x7fe5('0x34')];return getAgent(_0x2df3b0)[_0x7fe5('0x1e')](function(_0x18b041){logger[_0x7fe5('0x13')]('entityFound:',_0x18b041[_0x7fe5('0x19')]);emit(util[_0x7fe5('0x36')](_0x7fe5('0x37'),_0x18b041[_0x7fe5('0x19')]),_0x7fe5('0x43'),{'sessionId':_0x1c16d4});return _0x362f33[_0x7fe5('0x1a')](0xc8)[_0x7fe5('0x2d')]({'error':![],'message':'unhold\x20executed!'});})[_0x7fe5('0x21')](handleError(_0x362f33));};exports[_0x7fe5('0x44')]=function(_0x11d474,_0x637c0a){logger[_0x7fe5('0x13')]('calls\x20fired:',_0x637c0a[_0x7fe5('0x2c')]);var _0x34a430=callsValidation[_0x7fe5('0xe')](_0x11d474[_0x7fe5('0x2c')]);if(_0x34a430['length']>0x0){return _0x637c0a[_0x7fe5('0x1a')](0x190)[_0x7fe5('0x2d')](_0x34a430);}var _0x13b865=_0x11d474[_0x7fe5('0x2c')][_0x7fe5('0x2e')];var _0x25e583=respondWithRpcPromise(_0x7fe5('0x45'));var _0x26607a=getAgent(_0x13b865);return Promise[_0x7fe5('0x46')]([_0x25e583,_0x26607a])[_0x7fe5('0x1e')](function(_0xe5b5cf){var _0x59bd7c=_0xe5b5cf[0x0];var _0x44015c=_0xe5b5cf[0x1];var _0x1ce47c=_[_0x7fe5('0x25')](_0x59bd7c['rows'],function(_0x53e554){return _0x53e554[_0x7fe5('0x26')]==_0x44015c['id'];});return _0x637c0a['status'](0xc8)[_0x7fe5('0x2d')]({'count':_0x1ce47c[_0x7fe5('0x27')],'rows':_0x1ce47c});})['catch'](handleError(_0x637c0a));};exports[_0x7fe5('0x47')]=function(_0x47c811,_0x1fd083){logger[_0x7fe5('0x13')](_0x7fe5('0x48'),_0x47c811[_0x7fe5('0x2c')]);var _0x42d7b3=conferenceValidation[_0x7fe5('0xe')](_0x47c811['body']);if(_0x42d7b3['length']>0x0){return _0x1fd083[_0x7fe5('0x1a')](0x190)[_0x7fe5('0x2d')](_0x42d7b3);}var _0x42f66a=_0x47c811[_0x7fe5('0x2c')][_0x7fe5('0x2e')];return getAgent(_0x42f66a)['then'](function(_0x1eb46e){logger[_0x7fe5('0x13')](_0x7fe5('0x35'),_0x1eb46e[_0x7fe5('0x19')]);emit(util[_0x7fe5('0x36')]('user:%s',_0x1eb46e[_0x7fe5('0x19')]),_0x7fe5('0x49'));return _0x1fd083[_0x7fe5('0x1a')](0xc8)[_0x7fe5('0x2d')]({'error':![],'message':_0x7fe5('0x4a')});})[_0x7fe5('0x21')](handleError(_0x1fd083));};exports[_0x7fe5('0x4b')]=function(_0x512252,_0x343057){logger[_0x7fe5('0x13')](_0x7fe5('0x4c'),_0x512252[_0x7fe5('0x2c')]);var _0x87af50=transferValidation[_0x7fe5('0xe')](_0x512252[_0x7fe5('0x2c')]);if(_0x87af50['length']>0x0){return _0x343057['status'](0x190)[_0x7fe5('0x2d')](_0x87af50);}var _0x4c3ee6=_0x512252[_0x7fe5('0x2c')]['userId'];var _0x3bb81b=_0x512252[_0x7fe5('0x2c')][_0x7fe5('0x34')];var _0x31eb57=_0x512252[_0x7fe5('0x2c')][_0x7fe5('0x4d')];return getAgent(_0x4c3ee6)[_0x7fe5('0x1e')](function(_0x411c3c){logger['info'](_0x7fe5('0x35'),_0x411c3c['name']);emit(util[_0x7fe5('0x36')](_0x7fe5('0x37'),_0x411c3c[_0x7fe5('0x19')]),'webbar:transfer',{'sessionId':_0x3bb81b,'transferNumber':_0x31eb57});return _0x343057[_0x7fe5('0x1a')](0xc8)[_0x7fe5('0x2d')]({'error':![],'message':_0x7fe5('0x4e')});})[_0x7fe5('0x21')](handleError(_0x343057));};
\ No newline at end of file
index 3558f93..222b845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['removeAgents','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','send','put','destroy','delete','removeDispositions','removeAnswers'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./whatsappAccount.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0x7')](_0xee2f('0xc'),auth['isAuthenticated'](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0xee2f('0x8')](),controller['getAnswers']);router['get']('/:id/users',auth[_0xee2f('0x8')](),controller[_0xee2f('0xd')]);router[_0xee2f('0x7')](_0xee2f('0xe'),auth[_0xee2f('0x8')](),controller[_0xee2f('0xf')]);router['post']('/',auth[_0xee2f('0x8')](),controller['create']);router[_0xee2f('0x10')](_0xee2f('0xc'),auth['isAuthenticated'](),controller[_0xee2f('0x11')]);router[_0xee2f('0x10')](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x13')]);router['post'](_0xee2f('0x14'),auth['isAuthenticated'](),controller[_0xee2f('0x15')]);router[_0xee2f('0x10')]('/:id/applications',auth['isAuthenticated'](),controller[_0xee2f('0x16')]);router['post'](_0xee2f('0x17'),controller[_0xee2f('0x18')]);router[_0xee2f('0x10')]('/:id/send',auth[_0xee2f('0x8')](),controller[_0xee2f('0x19')]);router[_0xee2f('0x1a')](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['update']);router['delete'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1b')]);router[_0xee2f('0x1c')](_0xee2f('0xc'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1d')]);router['delete'](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1e')]);router[_0xee2f('0x1c')](_0xee2f('0x14'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1f')]);module[_0xee2f('0x20')]=router;
\ No newline at end of file
+var _0xacf4=['./whatsappAccount.controller','get','index','/describe','isAuthenticated','describe','/:id/dispositions','/:id/canned_answers','getAgents','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','/:id','delete','destroy','removeDispositions','removeAnswers','removeAgents','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x37638f,_0x3d75ca){var _0xaabc00=function(_0x3e9947){while(--_0x3e9947){_0x37638f['push'](_0x37638f['shift']());}};_0xaabc00(++_0x3d75ca);}(_0xacf4,0xe7));var _0x4acf=function(_0x353e55,_0x384e65){_0x353e55=_0x353e55-0x0;var _0xe1646a=_0xacf4[_0x353e55];return _0xe1646a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4acf('0x0'));var timeout=require(_0x4acf('0x1'));var express=require(_0x4acf('0x2'));var router=express[_0x4acf('0x3')]();var fs_extra=require(_0x4acf('0x4'));var auth=require(_0x4acf('0x5'));var interaction=require(_0x4acf('0x6'));var config=require('../../config/environment');var controller=require(_0x4acf('0x7'));router[_0x4acf('0x8')]('/',auth['isAuthenticated'](),controller[_0x4acf('0x9')]);router[_0x4acf('0x8')](_0x4acf('0xa'),auth[_0x4acf('0xb')](),controller[_0x4acf('0xc')]);router['get']('/:id',auth[_0x4acf('0xb')](),controller['show']);router[_0x4acf('0x8')](_0x4acf('0xd'),auth[_0x4acf('0xb')](),controller['getDispositions']);router[_0x4acf('0x8')](_0x4acf('0xe'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x4acf('0x8')]('/:id/users',auth['isAuthenticated'](),controller[_0x4acf('0xf')]);router[_0x4acf('0x8')](_0x4acf('0x10'),auth[_0x4acf('0xb')](),controller[_0x4acf('0x11')]);router[_0x4acf('0x12')]('/',auth[_0x4acf('0xb')](),controller[_0x4acf('0x13')]);router[_0x4acf('0x12')](_0x4acf('0xd'),auth[_0x4acf('0xb')](),controller['addDisposition']);router[_0x4acf('0x12')]('/:id/canned_answers',auth[_0x4acf('0xb')](),controller[_0x4acf('0x14')]);router[_0x4acf('0x12')]('/:id/users',auth['isAuthenticated'](),controller[_0x4acf('0x15')]);router[_0x4acf('0x12')](_0x4acf('0x10'),auth['isAuthenticated'](),controller[_0x4acf('0x16')]);router[_0x4acf('0x12')](_0x4acf('0x17'),controller[_0x4acf('0x18')]);router[_0x4acf('0x12')](_0x4acf('0x19'),auth[_0x4acf('0xb')](),controller[_0x4acf('0x1a')]);router[_0x4acf('0x1b')](_0x4acf('0x1c'),auth[_0x4acf('0xb')](),controller['update']);router[_0x4acf('0x1d')](_0x4acf('0x1c'),auth['isAuthenticated'](),controller[_0x4acf('0x1e')]);router[_0x4acf('0x1d')]('/:id/dispositions',auth[_0x4acf('0xb')](),controller[_0x4acf('0x1f')]);router[_0x4acf('0x1d')](_0x4acf('0xe'),auth['isAuthenticated'](),controller[_0x4acf('0x20')]);router[_0x4acf('0x1d')]('/:id/users',auth[_0x4acf('0xb')](),controller[_0x4acf('0x21')]);module['exports']=router;
\ No newline at end of file
index 4ee36ae..42fa80e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c9=['STRING','generate','ENUM','sinch','TEXT','BOOLEAN','INTEGER','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','randomstring','exports'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xe0c9,0xbe));var _0x9e0c=function(_0x13603f,_0x15bb37){_0x13603f=_0x13603f-0x0;var _0x5ad85e=_0xe0c9[_0x13603f];return _0x5ad85e;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x9e0c('0x0'));module[_0x9e0c('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x9e0c('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x9e0c('0x2')],'defaultValue':function(){return rs[_0x9e0c('0x3')]();}},'phone':{'type':Sequelize[_0x9e0c('0x2')]},'type':{'type':Sequelize[_0x9e0c('0x4')]('twilio',_0x9e0c('0x5'))},'accountSid':{'type':Sequelize[_0x9e0c('0x2')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x9e0c('0x6')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x9e0c('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x9e0c('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9e0c('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9e0c('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9e0c('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9e0c('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9e0c('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x9e0c('0x7')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x281e9a){if(!_0x281e9a){this['setDataValue'](_0x9e0c('0x9'),null);}this[_0x9e0c('0xa')](_0x9e0c('0xb'),_0x281e9a);}},'description':{'type':Sequelize[_0x9e0c('0x2')]}};
\ No newline at end of file
+var _0x9a5d=['mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','ENUM','twilio','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue'];(function(_0x2b7cb2,_0x1d6188){var _0x44114f=function(_0x40fea0){while(--_0x40fea0){_0x2b7cb2['push'](_0x2b7cb2['shift']());}};_0x44114f(++_0x1d6188);}(_0x9a5d,0x88));var _0xd9a5=function(_0x2c531a,_0x2a6a08){_0x2c531a=_0x2c531a-0x0;var _0x2e935f=_0x9a5d[_0x2c531a];return _0x2e935f;};'use strict';var Sequelize=require(_0xd9a5('0x0'));var rs=require(_0xd9a5('0x1'));module[_0xd9a5('0x2')]={'name':{'type':Sequelize[_0xd9a5('0x3')],'unique':_0xd9a5('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xd9a5('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xd9a5('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xd9a5('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xd9a5('0x5')](_0xd9a5('0x6'),_0xd9a5('0x7'))},'accountSid':{'type':Sequelize[_0xd9a5('0x3')]},'baseUrl':{'type':Sequelize[_0xd9a5('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xd9a5('0x8')],'defaultValue':function(){return _0xd9a5('0x9');}},'notificationSound':{'type':Sequelize[_0xd9a5('0xa')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd9a5('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd9a5('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd9a5('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd9a5('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd9a5('0xb')],'comment':_0xd9a5('0xc')},'mandatoryDisposition':{'type':Sequelize[_0xd9a5('0xa')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1f6df8){if(!_0x1f6df8){this[_0xd9a5('0xd')](_0xd9a5('0xe'),null);}this['setDataValue']('mandatoryDisposition',_0x1f6df8);}},'description':{'type':Sequelize[_0xd9a5('0x3')]}};
\ No newline at end of file
index 8ec138f..8956269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x182d=['Start','startRouting','receiveMessage','entity\x20found','twilio','set','Content-Type','text/xml','CmList','List','out','dataValues','Messages','eml-format','rimraf','zip-dir','request-promise','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','defaults','socket.io-emitter','redis','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','WhatsappAccounts','destroy','name','send','index','map','WhatsappAccount','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','VIRTUAL','merge','includeAll','include','show','params','Pause','mandatoryDispositionPause','rawAttributes','options','create','user','get','role','userProfileId','UserProfileResource','body','find','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','pick','findAll','ids','addAnswer','CannedAnswer','rows','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','addApplications','sequelize','ISOLATION_LEVELS','WhatsappApplication','bulkCreate','priority','stack','getApplications','Applications','account','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','CmContact','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','from','From','replace','whatsapp:','messageId','MessageSid','notifications','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','omit','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','AttachmentId','UserId','User','unshift','agent','*,*,*,*'];(function(_0x5b229f,_0x25cd87){var _0x5516f5=function(_0x554ee1){while(--_0x554ee1){_0x5b229f['push'](_0x5b229f['shift']());}};_0x5516f5(++_0x25cd87);}(_0x182d,0xca));var _0xd182=function(_0x41ce43,_0x181c49){_0x41ce43=_0x41ce43-0x0;var _0x5722c1=_0x182d[_0x41ce43];return _0x5722c1;};'use strict';var emlformat=require(_0xd182('0x0'));var rimraf=require(_0xd182('0x1'));var zipdir=require(_0xd182('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd182('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd182('0x4'));var util=require('util');var path=require(_0xd182('0x5'));var sox=require(_0xd182('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd182('0x7'));var squel=require(_0xd182('0x8'));var crypto=require(_0xd182('0x9'));var jsforce=require(_0xd182('0xa'));var deskjs=require(_0xd182('0xb'));var toCsv=require(_0xd182('0xc'));var querystring=require('querystring');var Papa=require(_0xd182('0xd'));var Redis=require(_0xd182('0xe'));var authService=require(_0xd182('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd182('0x10'));var hardwareService=require(_0xd182('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd182('0x12'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xd182('0x13')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd182('0x14'))(new Redis(config[_0xd182('0x15')]));require(_0xd182('0x16'))[_0xd182('0x17')](socket);var jayson=require(_0xd182('0x18'));var client=jayson[_0xd182('0x19')][_0xd182('0x1a')]({'port':0x232c});function respondWithRpcPromise(_0x256922,_0x2618af,_0x32477d,_0x19bf1c){return new BPromise(function(_0x366e49,_0x214a70){var _0x453e9c=_0x19bf1c||client;return _0x453e9c[_0xd182('0x1b')](_0x256922,_0x32477d)[_0xd182('0x1c')](function(_0x32b34b){logger['info'](_0xd182('0x1d'),_0x2618af,_0xd182('0x1e'));logger[_0xd182('0x1f')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x2618af,_0xd182('0x1e'),JSON[_0xd182('0x20')](_0x32b34b));if(_0x32b34b[_0xd182('0x21')]){if(_0x32b34b[_0xd182('0x21')][_0xd182('0x22')]===0x1f4){logger['error'](_0xd182('0x1d'),_0x2618af,_0x32b34b[_0xd182('0x21')][_0xd182('0x23')]);return _0x214a70(_0x32b34b['error']['message']);}logger[_0xd182('0x21')](_0xd182('0x1d'),_0x2618af,_0x32b34b['error'][_0xd182('0x23')]);return _0x366e49(_0x32b34b[_0xd182('0x21')][_0xd182('0x23')]);}else{logger[_0xd182('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x2618af,'request\x20sent');_0x366e49(_0x32b34b[_0xd182('0x25')][_0xd182('0x23')]);}})[_0xd182('0x26')](function(_0x4d8edf){logger[_0xd182('0x21')](_0xd182('0x1d'),_0x2618af,_0x4d8edf);_0x214a70(_0x4d8edf);});});}function respondWithStatusCode(_0x340882,_0x294c82){_0x294c82=_0x294c82||0xcc;return function(_0x2b1be7){if(_0x2b1be7){return _0x340882[_0xd182('0x27')](_0x294c82);}return _0x340882[_0xd182('0x28')](_0x294c82)[_0xd182('0x29')]();};}function respondWithResult(_0x577741,_0x207fac){_0x207fac=_0x207fac||0xc8;return function(_0xe310f4){if(_0xe310f4){return _0x577741[_0xd182('0x28')](_0x207fac)['json'](_0xe310f4);}};}function respondWithFilteredResult(_0x302007,_0x4d2d6a){return function(_0x7f6591){if(_0x7f6591){var _0x21e0a9=typeof _0x4d2d6a[_0xd182('0x2a')]===_0xd182('0x2b')&&typeof _0x4d2d6a[_0xd182('0x2c')]===_0xd182('0x2b');var _0x4b6184=_0x7f6591['count'];var _0x34c500=_0x21e0a9?0x0:_0x4d2d6a['offset'];var _0x134768=_0x21e0a9?_0x7f6591[_0xd182('0x2d')]:_0x4d2d6a[_0xd182('0x2a')]+_0x4d2d6a[_0xd182('0x2c')];var _0x734fbe;if(_0x134768>=_0x4b6184){_0x134768=_0x4b6184;_0x734fbe=0xc8;}else{_0x734fbe=0xce;}_0x302007[_0xd182('0x28')](_0x734fbe);return _0x302007['set'](_0xd182('0x2e'),_0x34c500+'-'+_0x134768+'/'+_0x4b6184)[_0xd182('0x2f')](_0x7f6591);}return null;};}function patchUpdates(_0x1dd0b2){return function(_0x43f60b){try{jsonpatch[_0xd182('0x30')](_0x43f60b,_0x1dd0b2,!![]);}catch(_0x106474){return BPromise[_0xd182('0x31')](_0x106474);}return _0x43f60b[_0xd182('0x32')]();};}function saveUpdates(_0x1d5248,_0x517f2a){return function(_0x8d7a59){if(_0x8d7a59){return _0x8d7a59[_0xd182('0x33')](_0x1d5248)[_0xd182('0x1c')](function(_0x10510e){return _0x10510e;});}return null;};}function removeEntity(_0x38a791,_0x33e270){return function(_0x2a0735){if(_0x2a0735){return _0x2a0735['destroy']()['then'](function(){var _0x31c27f=_0x2a0735['get']({'plain':!![]});var _0x32a415=_0xd182('0x34');return db['UserProfileResource'][_0xd182('0x35')]({'where':{'type':_0x32a415,'resourceId':_0x31c27f['id']}})[_0xd182('0x1c')](function(){return _0x2a0735;});})[_0xd182('0x1c')](function(){_0x38a791['status'](0xcc)[_0xd182('0x29')]();});}};}function handleEntityNotFound(_0x44baaa,_0x436d29){return function(_0xdbf4b4){if(!_0xdbf4b4){_0x44baaa['sendStatus'](0x194);}return _0xdbf4b4;};}function handleError(_0x5e8512,_0x462bb8){_0x462bb8=_0x462bb8||0x1f4;return function(_0x420d62){logger[_0xd182('0x21')](_0x420d62['stack']);if(_0x420d62[_0xd182('0x36')]){delete _0x420d62['name'];}_0x5e8512[_0xd182('0x28')](_0x462bb8)[_0xd182('0x37')](_0x420d62);};}exports[_0xd182('0x38')]=function(_0xb0a754,_0x218d61){var _0x53e074={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x2e0f45={},_0x8754c5={'count':0x0,'rows':[]};var _0x223d33=_[_0xd182('0x39')](db[_0xd182('0x3a')]['rawAttributes'],function(_0x5e4917){return{'name':_0x5e4917[_0xd182('0x3b')],'type':_0x5e4917[_0xd182('0x3c')][_0xd182('0x3d')]};});_0x2e0f45[_0xd182('0x3e')]=_[_0xd182('0x39')](_0x223d33,'name');_0x2e0f45['query']=_[_0xd182('0x3f')](_0xb0a754[_0xd182('0x40')]);_0x2e0f45[_0xd182('0x41')]=_[_0xd182('0x42')](_0x2e0f45[_0xd182('0x3e')],_0x2e0f45[_0xd182('0x40')]);_0x53e074[_0xd182('0x43')]=_[_0xd182('0x42')](_0x2e0f45['model'],qs[_0xd182('0x44')](_0xb0a754[_0xd182('0x40')][_0xd182('0x44')]));_0x53e074[_0xd182('0x43')]=_0x53e074[_0xd182('0x43')][_0xd182('0x45')]?_0x53e074[_0xd182('0x43')]:_0x2e0f45[_0xd182('0x3e')];if(!_0xb0a754[_0xd182('0x40')]['hasOwnProperty'](_0xd182('0x46'))){_0x53e074[_0xd182('0x2c')]=qs[_0xd182('0x2c')](_0xb0a754[_0xd182('0x40')][_0xd182('0x2c')]);_0x53e074[_0xd182('0x2a')]=qs[_0xd182('0x2a')](_0xb0a754[_0xd182('0x40')][_0xd182('0x2a')]);}_0x53e074['order']=qs[_0xd182('0x47')](_0xb0a754['query'][_0xd182('0x47')]);_0x53e074[_0xd182('0x48')]=qs[_0xd182('0x41')](_['pick'](_0xb0a754['query'],_0x2e0f45[_0xd182('0x41')]),_0x223d33);if(_0xb0a754[_0xd182('0x40')][_0xd182('0x49')]){_0x53e074[_0xd182('0x48')]=_['merge'](_0x53e074[_0xd182('0x48')],{'$or':_[_0xd182('0x39')](_0x223d33,function(_0x31d61f){if(_0x31d61f['type']!==_0xd182('0x4a')){var _0x472f13={};_0x472f13[_0x31d61f[_0xd182('0x36')]]={'$like':'%'+_0xb0a754['query'][_0xd182('0x49')]+'%'};return _0x472f13;}})});}_0x53e074=_[_0xd182('0x4b')]({},_0x53e074,_0xb0a754['options']);var _0x86f270={'where':_0x53e074[_0xd182('0x48')]};return db[_0xd182('0x3a')][_0xd182('0x2d')](_0x86f270)['then'](function(_0x4e8db7){_0x8754c5[_0xd182('0x2d')]=_0x4e8db7;if(_0xb0a754[_0xd182('0x40')][_0xd182('0x4c')]){_0x53e074[_0xd182('0x4d')]=[{'all':!![]}];}return db['WhatsappAccount']['findAll'](_0x53e074);})[_0xd182('0x1c')](function(_0x1a9a57){_0x8754c5['rows']=_0x1a9a57;return _0x8754c5;})[_0xd182('0x1c')](respondWithFilteredResult(_0x218d61,_0x53e074))[_0xd182('0x26')](handleError(_0x218d61,null));};exports[_0xd182('0x4e')]=function(_0x4304b3,_0x5e2b44){var _0x10149e={'raw':![],'where':{'id':_0x4304b3[_0xd182('0x4f')]['id']},'include':[{'model':db[_0xd182('0x50')],'as':_0xd182('0x51')}]},_0x4ba086={};_0x4ba086[_0xd182('0x3e')]=_[_0xd182('0x3f')](db[_0xd182('0x3a')][_0xd182('0x52')]);_0x4ba086['query']=_[_0xd182('0x3f')](_0x4304b3[_0xd182('0x40')]);_0x4ba086[_0xd182('0x41')]=_[_0xd182('0x42')](_0x4ba086[_0xd182('0x3e')],_0x4ba086[_0xd182('0x40')]);_0x10149e[_0xd182('0x43')]=_[_0xd182('0x42')](_0x4ba086[_0xd182('0x3e')],qs[_0xd182('0x44')](_0x4304b3[_0xd182('0x40')]['fields']));_0x10149e[_0xd182('0x43')]=_0x10149e['attributes']['length']?_0x10149e[_0xd182('0x43')]:_0x4ba086[_0xd182('0x3e')];if(_0x4304b3[_0xd182('0x40')][_0xd182('0x4c')]){_0x10149e[_0xd182('0x4d')]=[{'all':!![]}];}_0x10149e=_['merge']({},_0x10149e,_0x4304b3[_0xd182('0x53')]);return db[_0xd182('0x3a')]['find'](_0x10149e)['then'](handleEntityNotFound(_0x5e2b44,null))[_0xd182('0x1c')](respondWithResult(_0x5e2b44,null))[_0xd182('0x26')](handleError(_0x5e2b44,null));};exports[_0xd182('0x54')]=function(_0x12bfb8,_0x5dd087){return db['WhatsappAccount'][_0xd182('0x54')](_0x12bfb8['body'],{})[_0xd182('0x1c')](function(_0x2bb442){var _0x5e7029=_0x12bfb8[_0xd182('0x55')][_0xd182('0x56')]({'plain':!![]});if(!_0x5e7029)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5e7029[_0xd182('0x57')]===_0xd182('0x55')){var _0x1307ba=_0x2bb442[_0xd182('0x56')]({'plain':!![]});var _0x2b84e1=_0xd182('0x34');return db['UserProfileSection']['find']({'where':{'name':_0x2b84e1,'userProfileId':_0x5e7029[_0xd182('0x58')]},'raw':!![]})[_0xd182('0x1c')](function(_0x1752c0){if(_0x1752c0&&_0x1752c0['autoAssociation']===0x0){return db[_0xd182('0x59')]['create']({'name':_0x1307ba[_0xd182('0x36')],'resourceId':_0x1307ba['id'],'type':_0x1752c0[_0xd182('0x36')],'sectionId':_0x1752c0['id']},{})['then'](function(){return _0x2bb442;});}else{return _0x2bb442;}})[_0xd182('0x26')](function(_0x5d5b2b){logger[_0xd182('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d5b2b);throw _0x5d5b2b;});}return _0x2bb442;})['then'](respondWithResult(_0x5dd087,0xc9))[_0xd182('0x26')](handleError(_0x5dd087,null));};exports['update']=function(_0x445a1c,_0x3e18e4){if(_0x445a1c[_0xd182('0x5a')]['id']){delete _0x445a1c[_0xd182('0x5a')]['id'];}return db[_0xd182('0x3a')][_0xd182('0x5b')]({'where':{'id':_0x445a1c[_0xd182('0x4f')]['id']},'include':[{'model':db['Pause'],'as':_0xd182('0x51')}]})[_0xd182('0x1c')](handleEntityNotFound(_0x3e18e4,null))[_0xd182('0x1c')](saveUpdates(_0x445a1c[_0xd182('0x5a')],null))['then'](respondWithResult(_0x3e18e4,null))[_0xd182('0x26')](handleError(_0x3e18e4,null));};exports['destroy']=function(_0x311d49,_0x41fbe6){return db[_0xd182('0x3a')][_0xd182('0x5b')]({'where':{'id':_0x311d49['params']['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0x41fbe6,null))['then'](removeEntity(_0x41fbe6,null))[_0xd182('0x26')](handleError(_0x41fbe6,null));};exports[_0xd182('0x5c')]=function(_0x4dd82a,_0x4e7aeb){return db['WhatsappAccount']['describe']()[_0xd182('0x1c')](respondWithResult(_0x4e7aeb,null))[_0xd182('0x26')](handleError(_0x4e7aeb,null));};exports[_0xd182('0x5d')]=function(_0x76358b,_0x514abf,_0x2518b8){if(_0x76358b[_0xd182('0x5a')]['id']){delete _0x76358b[_0xd182('0x5a')]['id'];}return db['WhatsappAccount'][_0xd182('0x5b')]({'where':{'id':_0x76358b[_0xd182('0x4f')]['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0x514abf,null))[_0xd182('0x1c')](function(_0x5de36f){if(_0x5de36f){_0x76358b[_0xd182('0x5a')][_0xd182('0x5e')]=_0x5de36f['id'];return db[_0xd182('0x5f')]['create'](_0x76358b['body']);}})[_0xd182('0x1c')](respondWithResult(_0x514abf,null))[_0xd182('0x26')](handleError(_0x514abf,null));};exports[_0xd182('0x60')]=function(_0x2cdfc2,_0x268b77,_0x1803e0){var _0x18bbf9={'raw':![],'where':{}};var _0x1e7d97={};var _0x414bc3={'count':0x0,'rows':[]};return db[_0xd182('0x3a')][_0xd182('0x61')]({'where':{'id':_0x2cdfc2[_0xd182('0x4f')]['id']}})['then'](handleEntityNotFound(_0x268b77,null))[_0xd182('0x1c')](function(_0x4119fe){if(_0x4119fe){_0x1e7d97[_0xd182('0x3e')]=_[_0xd182('0x3f')](db[_0xd182('0x5f')][_0xd182('0x52')]);_0x1e7d97['query']=_[_0xd182('0x3f')](_0x2cdfc2[_0xd182('0x40')]);_0x1e7d97[_0xd182('0x41')]=_['intersection'](_0x1e7d97['model'],_0x1e7d97['query']);_0x18bbf9[_0xd182('0x43')]=_[_0xd182('0x42')](_0x1e7d97[_0xd182('0x3e')],qs['fields'](_0x2cdfc2[_0xd182('0x40')][_0xd182('0x44')]));_0x18bbf9[_0xd182('0x43')]=_0x18bbf9[_0xd182('0x43')]['length']?_0x18bbf9[_0xd182('0x43')]:_0x1e7d97[_0xd182('0x3e')];if(!_0x2cdfc2[_0xd182('0x40')][_0xd182('0x62')]('nolimit')){_0x18bbf9[_0xd182('0x2c')]=qs[_0xd182('0x2c')](_0x2cdfc2[_0xd182('0x40')]['limit']);_0x18bbf9['offset']=qs[_0xd182('0x2a')](_0x2cdfc2[_0xd182('0x40')][_0xd182('0x2a')]);}_0x18bbf9[_0xd182('0x63')]=qs[_0xd182('0x47')](_0x2cdfc2[_0xd182('0x40')][_0xd182('0x47')]);_0x18bbf9[_0xd182('0x48')]=qs[_0xd182('0x41')](_[_0xd182('0x64')](_0x2cdfc2['query'],_0x1e7d97[_0xd182('0x41')]));_0x18bbf9[_0xd182('0x48')][_0xd182('0x5e')]=_0x4119fe['id'];if(_0x2cdfc2[_0xd182('0x40')][_0xd182('0x49')]){_0x18bbf9[_0xd182('0x48')]=_[_0xd182('0x4b')](_0x18bbf9[_0xd182('0x48')],{'$or':_[_0xd182('0x39')](_0x18bbf9[_0xd182('0x43')],function(_0xdff55f){var _0x38d990={};_0x38d990[_0xdff55f]={'$like':'%'+_0x2cdfc2['query']['filter']+'%'};return _0x38d990;})});}_0x18bbf9=_[_0xd182('0x4b')]({},_0x18bbf9,_0x2cdfc2[_0xd182('0x53')]);return db[_0xd182('0x5f')][_0xd182('0x2d')]({'where':_0x18bbf9['where']})[_0xd182('0x1c')](function(_0x124182){_0x414bc3[_0xd182('0x2d')]=_0x124182;if(_0x2cdfc2['query'][_0xd182('0x4c')]){_0x18bbf9[_0xd182('0x4d')]=[{'all':!![]}];}return db[_0xd182('0x5f')][_0xd182('0x65')](_0x18bbf9);})['then'](function(_0x4c3a0d){_0x414bc3['rows']=_0x4c3a0d;return _0x414bc3;});}})[_0xd182('0x1c')](respondWithFilteredResult(_0x268b77,_0x18bbf9))[_0xd182('0x26')](handleError(_0x268b77,null));};exports['removeDispositions']=function(_0x36f86e,_0x2ec46f,_0x126ce4){return db['WhatsappAccount'][_0xd182('0x5b')]({'where':{'id':_0x36f86e[_0xd182('0x4f')]['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0x2ec46f,null))['then'](function(_0x38bb4b){if(_0x38bb4b){return _0x38bb4b['removeDispositions'](_0x36f86e['query'][_0xd182('0x66')]);}})[_0xd182('0x1c')](respondWithStatusCode(_0x2ec46f,null))[_0xd182('0x26')](handleError(_0x2ec46f,null));};exports[_0xd182('0x67')]=function(_0x5c3df4,_0xe67f5a,_0x4be73d){if(_0x5c3df4[_0xd182('0x5a')]['id']){delete _0x5c3df4['body']['id'];}return db[_0xd182('0x3a')][_0xd182('0x5b')]({'where':{'id':_0x5c3df4['params']['id']}})['then'](handleEntityNotFound(_0xe67f5a,null))[_0xd182('0x1c')](function(_0x3d05c5){if(_0x3d05c5){_0x5c3df4[_0xd182('0x5a')][_0xd182('0x5e')]=_0x3d05c5['id'];return db['CannedAnswer']['create'](_0x5c3df4[_0xd182('0x5a')]);}})[_0xd182('0x1c')](respondWithResult(_0xe67f5a,null))[_0xd182('0x26')](handleError(_0xe67f5a,null));};exports['getAnswers']=function(_0x3cc65e,_0x2b42c4,_0x5adb7b){var _0x35aebf={'raw':![],'where':{}};var _0x5c8a8b={};var _0x208e65={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xd182('0x61')]({'where':{'id':_0x3cc65e[_0xd182('0x4f')]['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0x2b42c4,null))[_0xd182('0x1c')](function(_0x1f6755){if(_0x1f6755){_0x5c8a8b[_0xd182('0x3e')]=_[_0xd182('0x3f')](db[_0xd182('0x68')][_0xd182('0x52')]);_0x5c8a8b[_0xd182('0x40')]=_[_0xd182('0x3f')](_0x3cc65e[_0xd182('0x40')]);_0x5c8a8b[_0xd182('0x41')]=_['intersection'](_0x5c8a8b[_0xd182('0x3e')],_0x5c8a8b[_0xd182('0x40')]);_0x35aebf[_0xd182('0x43')]=_[_0xd182('0x42')](_0x5c8a8b[_0xd182('0x3e')],qs[_0xd182('0x44')](_0x3cc65e['query'][_0xd182('0x44')]));_0x35aebf['attributes']=_0x35aebf['attributes']['length']?_0x35aebf[_0xd182('0x43')]:_0x5c8a8b[_0xd182('0x3e')];if(!_0x3cc65e[_0xd182('0x40')][_0xd182('0x62')](_0xd182('0x46'))){_0x35aebf[_0xd182('0x2c')]=qs[_0xd182('0x2c')](_0x3cc65e[_0xd182('0x40')]['limit']);_0x35aebf[_0xd182('0x2a')]=qs[_0xd182('0x2a')](_0x3cc65e[_0xd182('0x40')][_0xd182('0x2a')]);}_0x35aebf[_0xd182('0x63')]=qs['sort'](_0x3cc65e[_0xd182('0x40')][_0xd182('0x47')]);_0x35aebf[_0xd182('0x48')]=qs['filters'](_['pick'](_0x3cc65e[_0xd182('0x40')],_0x5c8a8b[_0xd182('0x41')]));_0x35aebf[_0xd182('0x48')]['WhatsappAccountId']=_0x1f6755['id'];if(_0x3cc65e[_0xd182('0x40')][_0xd182('0x49')]){_0x35aebf[_0xd182('0x48')]=_['merge'](_0x35aebf[_0xd182('0x48')],{'$or':_[_0xd182('0x39')](_0x35aebf[_0xd182('0x43')],function(_0x23f57f){var _0x5e2ada={};_0x5e2ada[_0x23f57f]={'$like':'%'+_0x3cc65e['query']['filter']+'%'};return _0x5e2ada;})});}_0x35aebf=_[_0xd182('0x4b')]({},_0x35aebf,_0x3cc65e[_0xd182('0x53')]);return db[_0xd182('0x68')][_0xd182('0x2d')]({'where':_0x35aebf[_0xd182('0x48')]})['then'](function(_0x556712){_0x208e65[_0xd182('0x2d')]=_0x556712;if(_0x3cc65e['query'][_0xd182('0x4c')]){_0x35aebf[_0xd182('0x4d')]=[{'all':!![]}];}return db[_0xd182('0x68')][_0xd182('0x65')](_0x35aebf);})[_0xd182('0x1c')](function(_0x5d26f1){_0x208e65[_0xd182('0x69')]=_0x5d26f1;return _0x208e65;});}})['then'](respondWithFilteredResult(_0x2b42c4,_0x35aebf))[_0xd182('0x26')](handleError(_0x2b42c4,null));};exports[_0xd182('0x6a')]=function(_0x4c6faa,_0x5d1751,_0x4e1ecb){return db[_0xd182('0x3a')]['find']({'where':{'id':_0x4c6faa[_0xd182('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5d1751,null))['then'](function(_0xb7870f){if(_0xb7870f){return _0xb7870f[_0xd182('0x6a')](_0x4c6faa['query'][_0xd182('0x66')]);}})[_0xd182('0x1c')](respondWithStatusCode(_0x5d1751,null))[_0xd182('0x26')](handleError(_0x5d1751,null));};exports[_0xd182('0x6b')]=function(_0x3a0842,_0x4efbc9,_0x3200d8){return db[_0xd182('0x3a')]['find']({'where':{'id':_0x3a0842[_0xd182('0x4f')]['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0x4efbc9,null))['then'](function(_0x33cd19){if(_0x33cd19){return _0x33cd19['addAgents'](_0x3a0842['body'][_0xd182('0x66')],_['omit'](_0x3a0842['body'],[_0xd182('0x66'),'id'])||{})[_0xd182('0x6c')](function(_0x53a023){for(var _0x23ae88=0x0;_0x23ae88<_0x3a0842[_0xd182('0x5a')][_0xd182('0x66')][_0xd182('0x45')];_0x23ae88+=0x1){socket[_0xd182('0x6d')](_0xd182('0x6e'),{'UserId':Number(_0x3a0842[_0xd182('0x5a')][_0xd182('0x66')][_0x23ae88]),'WhatsappAccountId':Number(_0x3a0842[_0xd182('0x4f')]['id'])});}return _0x53a023;});}})[_0xd182('0x1c')](respondWithResult(_0x4efbc9,null))[_0xd182('0x26')](handleError(_0x4efbc9,null));};exports['removeAgents']=function(_0x25d275,_0x5e2d0f,_0x151197){return db[_0xd182('0x3a')][_0xd182('0x5b')]({'where':{'id':_0x25d275[_0xd182('0x4f')]['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0x5e2d0f,null))[_0xd182('0x1c')](function(_0x2fde17){if(_0x2fde17){return _0x2fde17[_0xd182('0x6f')](_0x25d275[_0xd182('0x40')]['ids'])[_0xd182('0x1c')](function(){if(_[_0xd182('0x70')](_0x25d275[_0xd182('0x40')][_0xd182('0x66')])){for(var _0x10b2a8=0x0;_0x10b2a8<_0x25d275['query']['ids'][_0xd182('0x45')];_0x10b2a8+=0x1){socket['emit'](_0xd182('0x71'),{'UserId':Number(_0x25d275[_0xd182('0x40')]['ids'][_0x10b2a8]),'WhatsappAccountId':Number(_0x25d275[_0xd182('0x4f')]['id'])});}}else{socket[_0xd182('0x6d')](_0xd182('0x71'),{'UserId':Number(_0x25d275['query'][_0xd182('0x66')]),'WhatsappAccountId':Number(_0x25d275['params']['id'])});}});}})[_0xd182('0x1c')](respondWithStatusCode(_0x5e2d0f,null))[_0xd182('0x26')](handleError(_0x5e2d0f,null));};exports[_0xd182('0x72')]=function(_0x30fa85,_0x5f228b,_0x1fa876){var _0x31afea={};var _0x24f231={};var _0x1f28f8;var _0xe7ade3;return db[_0xd182('0x3a')][_0xd182('0x61')]({'where':{'id':_0x30fa85[_0xd182('0x4f')]['id']}})['then'](handleEntityNotFound(_0x5f228b,null))[_0xd182('0x1c')](function(_0x3528fd){if(_0x3528fd){_0x1f28f8=_0x3528fd;_0x24f231['model']=_[_0xd182('0x3f')](db['User']['rawAttributes']);_0x24f231[_0xd182('0x40')]=_['keys'](_0x30fa85[_0xd182('0x40')]);_0x24f231[_0xd182('0x41')]=_[_0xd182('0x42')](_0x24f231[_0xd182('0x3e')],_0x24f231['query']);_0x31afea[_0xd182('0x43')]=_[_0xd182('0x42')](_0x24f231[_0xd182('0x3e')],qs[_0xd182('0x44')](_0x30fa85[_0xd182('0x40')][_0xd182('0x44')]));_0x31afea[_0xd182('0x43')]=_0x31afea[_0xd182('0x43')]['length']?_0x31afea[_0xd182('0x43')]:_0x24f231[_0xd182('0x3e')];_0x31afea[_0xd182('0x63')]=qs['sort'](_0x30fa85[_0xd182('0x40')][_0xd182('0x47')]);_0x31afea[_0xd182('0x48')]=qs['filters'](_['pick'](_0x30fa85[_0xd182('0x40')],_0x24f231[_0xd182('0x41')]));if(_0x30fa85[_0xd182('0x40')][_0xd182('0x49')]){_0x31afea['where']=_[_0xd182('0x4b')](_0x31afea[_0xd182('0x48')],{'$or':_[_0xd182('0x39')](_0x31afea[_0xd182('0x43')],function(_0x9d4c52){var _0x2d6391={};_0x2d6391[_0x9d4c52]={'$like':'%'+_0x30fa85[_0xd182('0x40')][_0xd182('0x49')]+'%'};return _0x2d6391;})});}_0x31afea=_['merge']({},_0x31afea,_0x30fa85[_0xd182('0x53')]);return _0x1f28f8[_0xd182('0x72')](_0x31afea);}})[_0xd182('0x1c')](function(_0x505b41){if(_0x505b41){_0xe7ade3=_0x505b41[_0xd182('0x45')];if(!_0x30fa85[_0xd182('0x40')][_0xd182('0x62')](_0xd182('0x46'))){_0x31afea[_0xd182('0x2c')]=qs['limit'](_0x30fa85[_0xd182('0x40')][_0xd182('0x2c')]);_0x31afea[_0xd182('0x2a')]=qs[_0xd182('0x2a')](_0x30fa85['query'][_0xd182('0x2a')]);}return _0x1f28f8['getAgents'](_0x31afea);}})['then'](function(_0x1cb455){if(_0x1cb455){return _0x1cb455?{'count':_0xe7ade3,'rows':_0x1cb455}:null;}})['then'](respondWithResult(_0x5f228b,null))[_0xd182('0x26')](handleError(_0x5f228b,null));};exports[_0xd182('0x73')]=function(_0xf91835,_0x1f6679){var _0x4b8b2b=_0xf91835['params']['id'];var _0x26b634=_0xf91835[_0xd182('0x5a')];var _0x319556=0xc8;var _0x4ac777=null;return db[_0xd182('0x74')]['transaction']({'isolationLevel':db[_0xd182('0x74')]['Transaction'][_0xd182('0x75')]['READ_COMMITTED']},function(_0x39268f){return db[_0xd182('0x3a')]['findOne']({'where':{'id':_0x4b8b2b},'transaction':_0x39268f})[_0xd182('0x1c')](function(_0x5f2f50){if(_0x5f2f50){return db[_0xd182('0x76')][_0xd182('0x35')]({'where':{'WhatsappAccountId':_0x4b8b2b},'transaction':_0x39268f})['then'](function(){var _0x134f11=_[_0xd182('0x39')](_0x26b634,function(_0x3b520d){_0x3b520d[_0xd182('0x5e')]=_0x4b8b2b;return _0x3b520d;});return db[_0xd182('0x76')][_0xd182('0x77')](_0x134f11,{'transaction':_0x39268f});});}else{_0x319556=0x194;_0x4ac777=[];}});})[_0xd182('0x1c')](function(){if(_0x319556!==0x194){return db[_0xd182('0x76')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x4b8b2b},'order':_0xd182('0x78')})[_0xd182('0x1c')](function(_0x4b5b71){_0x4ac777=_0x4b5b71;});}})['catch'](function(_0x33b0c7){_0x319556=0x1f4;logger[_0xd182('0x21')](_0x33b0c7[_0xd182('0x79')]);if(_0x33b0c7[_0xd182('0x36')]){delete _0x33b0c7[_0xd182('0x36')];}_0x4ac777=_0x33b0c7;})['finally'](function(){if(_0x4ac777===null){_0x1f6679[_0xd182('0x27')](_0x319556);}else{if(_0x319556===0x1f4){_0x1f6679[_0xd182('0x28')](_0x319556)[_0xd182('0x37')](_0x4ac777);}else{_0x1f6679[_0xd182('0x28')](_0x319556)['json'](_0x4ac777);}}});};exports['getApplications']=function(_0x301fcd,_0xff9b65,_0x2e5bd1){var _0x476c1a={};var _0x4d20f3={};var _0x36ec76;var _0x461356;return db[_0xd182('0x3a')][_0xd182('0x61')]({'where':{'id':_0x301fcd[_0xd182('0x4f')]['id']}})[_0xd182('0x1c')](handleEntityNotFound(_0xff9b65,null))['then'](function(_0x50aa49){if(_0x50aa49){_0x36ec76=_0x50aa49;_0x4d20f3['model']=_[_0xd182('0x3f')](db['WhatsappApplication'][_0xd182('0x52')]);_0x4d20f3['query']=_['keys'](_0x301fcd[_0xd182('0x40')]);_0x4d20f3['filters']=_[_0xd182('0x42')](_0x4d20f3[_0xd182('0x3e')],_0x4d20f3['query']);_0x476c1a[_0xd182('0x43')]=_['intersection'](_0x4d20f3[_0xd182('0x3e')],qs['fields'](_0x301fcd[_0xd182('0x40')][_0xd182('0x44')]));_0x476c1a[_0xd182('0x43')]=_0x476c1a[_0xd182('0x43')][_0xd182('0x45')]?_0x476c1a['attributes']:_0x4d20f3[_0xd182('0x3e')];_0x476c1a[_0xd182('0x63')]=qs['sort'](_0x301fcd['query'][_0xd182('0x47')]);_0x476c1a[_0xd182('0x48')]=qs[_0xd182('0x41')](_[_0xd182('0x64')](_0x301fcd['query'],_0x4d20f3[_0xd182('0x41')]));if(_0x301fcd[_0xd182('0x40')][_0xd182('0x49')]){_0x476c1a[_0xd182('0x48')]=_[_0xd182('0x4b')](_0x476c1a[_0xd182('0x48')],{'$or':_[_0xd182('0x39')](_0x476c1a[_0xd182('0x43')],function(_0x1db43a){var _0xab95f7={};_0xab95f7[_0x1db43a]={'$like':'%'+_0x301fcd[_0xd182('0x40')][_0xd182('0x49')]+'%'};return _0xab95f7;})});}_0x476c1a=_[_0xd182('0x4b')]({},_0x476c1a,_0x301fcd[_0xd182('0x53')]);return _0x36ec76[_0xd182('0x7a')](_0x476c1a);}})[_0xd182('0x1c')](function(_0x16ad66){if(_0x16ad66){_0x461356=_0x16ad66[_0xd182('0x45')];if(!_0x301fcd[_0xd182('0x40')]['hasOwnProperty'](_0xd182('0x46'))){_0x476c1a[_0xd182('0x2c')]=qs[_0xd182('0x2c')](_0x301fcd['query'][_0xd182('0x2c')]);_0x476c1a[_0xd182('0x2a')]=qs[_0xd182('0x2a')](_0x301fcd[_0xd182('0x40')][_0xd182('0x2a')]);}return _0x36ec76[_0xd182('0x7a')](_0x476c1a);}})['then'](function(_0x20f223){if(_0x20f223){return _0x20f223?{'count':_0x461356,'rows':_0x20f223}:null;}})[_0xd182('0x1c')](respondWithResult(_0xff9b65,null))[_0xd182('0x26')](handleError(_0xff9b65,null));};exports['notify']=function(_0x5ecb39,_0x4970bc,_0x296008){var _0x246b94={'channel':'whatsapp'};var _0x5be915=[];var _0x15c3b5=[];var _0x135a4c={};return db[_0xd182('0x3a')][_0xd182('0x5b')]({'where':{'id':_0x5ecb39[_0xd182('0x4f')]['id']},'include':[{'model':db[_0xd182('0x76')],'as':_0xd182('0x7b')}]})['then'](handleEntityNotFound(_0x4970bc,null))[_0xd182('0x1c')](function(_0xf61ea3){_0x246b94[_0xd182('0x7c')]=_0xf61ea3;if(_0x246b94['account']&&_0x246b94['account'][_0xd182('0x3c')]===_0xd182('0x7d')&&_0x5ecb39['body']['statuses']){if(_0x5ecb39[_0xd182('0x5a')][_0xd182('0x7e')][_0xd182('0x45')]===0x0)return;if(_0x5ecb39[_0xd182('0x5a')][_0xd182('0x7e')][0x0][_0xd182('0x7f')]!==_0xd182('0x80'))return;return db[_0xd182('0x81')][_0xd182('0x33')]({'read':!![],'readAt':_0x5ecb39['body']['statuses'][0x0][_0xd182('0x82')]},{'where':{'messageId':_0x5ecb39[_0xd182('0x5a')][_0xd182('0x7e')][0x0][_0xd182('0x83')]},'individualHooks':!![]})[_0xd182('0x1c')](function(_0x29292e){return _0x4970bc[_0xd182('0x28')](0xc8)[_0xd182('0x2f')](_0x29292e);});}_0x246b94[_0xd182('0x84')]=_[_0xd182('0x85')](_0xf61ea3[_0xd182('0x7b')],[_0xd182('0x78')],[_0xd182('0x86')]);if(_0x246b94[_0xd182('0x7c')][_0xd182('0x7b')]){delete _0x246b94[_0xd182('0x7c')]['Applications'];}return db[_0xd182('0x87')][_0xd182('0x5c')]()[_0xd182('0x1c')](function(_0x7b7904){if(!_0x7b7904){throw new db['Sequelize'][(_0xd182('0x88'))]('no\x20available\x20attributes');}_0x5be915=_[_0xd182('0x89')](_[_0xd182('0x3f')](_0x7b7904),[_0xd182('0x8a'),'updatedAt']);_0x15c3b5=_['difference'](_['keys'](_0x7b7904),[_0xd182('0x8a'),_0xd182('0x8b'),_0xd182('0x8c'),_0xd182('0x8d')]);_0x246b94[_0xd182('0x5a')]={'mapKey':_0xd182('0x8e')};if(_0x246b94[_0xd182('0x7c')]&&_0x246b94[_0xd182('0x7c')][_0xd182('0x3c')]==='twilio'){_0x246b94[_0xd182('0x5a')][_0xd182('0x8f')]=_0x5ecb39[_0xd182('0x5a')][_0xd182('0x90')][_0xd182('0x91')](_0xd182('0x92'),'');_0x246b94[_0xd182('0x5a')]['body']=_0x5ecb39[_0xd182('0x5a')]['Body'];_0x246b94[_0xd182('0x5a')][_0xd182('0x93')]=_0x5ecb39[_0xd182('0x5a')][_0xd182('0x94')];}if(_0x246b94['account']&&_0x246b94['account'][_0xd182('0x3c')]==='sinch'){_0x246b94['body']['from']=_0x5ecb39['body'][_0xd182('0x95')][0x0][_0xd182('0x8f')];_0x246b94[_0xd182('0x5a')][_0xd182('0x5a')]=_0x5ecb39[_0xd182('0x5a')][_0xd182('0x95')][0x0][_0xd182('0x23')][_0xd182('0x5a')];_0x246b94[_0xd182('0x5a')][_0xd182('0x93')]=_0x5ecb39[_0xd182('0x5a')][_0xd182('0x95')][0x0][_0xd182('0x83')];}if(_0x246b94['body']['id']){delete _0x246b94[_0xd182('0x5a')]['id'];}if(_[_0xd182('0x96')](_0x246b94[_0xd182('0x5a')][_0xd182('0x8f')])){throw new db[(_0xd182('0x97'))][(_0xd182('0x88'))](_0xd182('0x98'));}if(_[_0xd182('0x96')](_0x246b94[_0xd182('0x5a')][_0xd182('0x5a')])||_0x246b94[_0xd182('0x5a')][_0xd182('0x5a')]===''){throw new db[(_0xd182('0x97'))][(_0xd182('0x88'))](_0xd182('0x99'));}if(_[_0xd182('0x96')](_0x246b94[_0xd182('0x5a')][_0xd182('0x9a')])){throw new db[(_0xd182('0x97'))][(_0xd182('0x88'))](_0xd182('0x9b')+_0x15c3b5);}if(!_[_0xd182('0x9c')](_0x15c3b5,_0x246b94[_0xd182('0x5a')][_0xd182('0x9a')])){throw new db[(_0xd182('0x97'))][(_0xd182('0x88'))](_0xd182('0x9d')+_0x15c3b5);}_0x135a4c[_0x246b94[_0xd182('0x5a')]['mapKey']]=_0x246b94[_0xd182('0x5a')]['from'];return db['CmList'][_0xd182('0x5b')]({'where':{'id':_0x246b94[_0xd182('0x7c')][_0xd182('0x8d')]},'include':[{'model':db[_0xd182('0x87')],'as':_0xd182('0x9e'),'where':_0x135a4c,'limit':0x1,'order':[['updatedAt',_0xd182('0x9f')]]}]});})['then'](handleEntityNotFound(_0x4970bc,null))[_0xd182('0x1c')](function(_0x34871d){if(_0x34871d){_0x246b94[_0xd182('0xa0')]=_[_0xd182('0xa1')](_0x34871d,[_0xd182('0x9e')]);if(_0x34871d[_0xd182('0x9e')]['length']){return _0x34871d['Contacts'][0x0];}var _0x497337=_[_0xd182('0x13')](_0x246b94[_0xd182('0x5a')],{'firstName':_0x246b94['body'][_0xd182('0x8f')],'ListId':_0x34871d['id']});_0x497337[_0x246b94['body']['mapKey']]=_0x246b94[_0xd182('0x5a')]['from'];return db[_0xd182('0x87')][_0xd182('0x54')](_0x497337,{'fields':_0x5be915,'raw':!![]});}})[_0xd182('0x1c')](handleEntityNotFound(_0x4970bc,null))[_0xd182('0x1c')](function(_0x4929bf){if(_0x4929bf){_0x246b94[_0xd182('0xa2')]=_0x4929bf;var _0x36f80f={'ContactId':_0x4929bf['id'],'phone':_0x246b94[_0xd182('0x5a')][_0xd182('0x8f')],'WhatsappAccountId':_0x5ecb39[_0xd182('0x4f')]['id']};var _0x4ceaf2={'ContactId':_0x4929bf['id'],'WhatsappAccountId':_0x5ecb39[_0xd182('0x4f')]['id'],'closed':![]};return db[_0xd182('0xa3')][_0xd182('0x5b')]({'where':_0x4ceaf2})[_0xd182('0x1c')](function(_0x2b267e){if(_0x2b267e){return[_0x2b267e,![]];}return db[_0xd182('0xa3')][_0xd182('0x54')](_0x36f80f)[_0xd182('0x1c')](function(_0xdad2a1){return[_0xdad2a1,!![]];});});}})[_0xd182('0x6c')](function(_0x4be5dc,_0x4aa7f8){_0x246b94[_0xd182('0xa4')]=_0x4be5dc['get']({'plain':!![]});_0x246b94[_0xd182('0xa4')][_0xd182('0xa5')]=![];if(_0x4aa7f8){if(_0x246b94['account'][_0xd182('0xa6')]){_0x246b94[_0xd182('0x84')][_0xd182('0xa7')]({'id':0x0,'priority':_0x246b94['applications']['length']+0x1,'app':_0xd182('0xa8'),'appdata':_0xd182('0xa9'),'interval':'*,*,*,*'});}_0x246b94[_0xd182('0xa4')][_0xd182('0xa5')]=!![];}return db[_0xd182('0x81')][_0xd182('0x54')]({'phone':_0x246b94['body'][_0xd182('0x8f')],'messageId':_0x246b94['body'][_0xd182('0x93')],'body':_0x246b94[_0xd182('0x5a')]['body'],'WhatsappAccountId':_0x5ecb39[_0xd182('0x4f')]['id'],'WhatsappInteractionId':_0x4be5dc['id'],'direction':'in','ContactId':_0x4be5dc['ContactId'],'AttachmentId':_0x246b94[_0xd182('0x5a')][_0xd182('0xaa')]});})[_0xd182('0x1c')](function(_0x55b95b){_0x246b94['message']=_0x55b95b;if(_0x246b94[_0xd182('0xa4')][_0xd182('0xab')]){return db[_0xd182('0xac')]['find']({'attributes':['id',_0xd182('0x36')],'where':{'id':_0x246b94['interaction'][_0xd182('0xab')]}})['then'](function(_0x31294e){if(_0x31294e){_0x246b94[_0xd182('0x84')][_0xd182('0xad')]({'id':0x0,'priority':0x0,'app':_0xd182('0xae'),'appdata':_0x31294e[_0xd182('0x36')]+','+(_0x246b94[_0xd182('0x7c')]['waitForTheAssignedAgent']||0xa),'interval':_0xd182('0xaf')});}return respondWithRpcPromise(_0xd182('0xb0'),_0xd182('0xb1'),_0x246b94);});}return respondWithRpcPromise(_0xd182('0xb0'),_0xd182('0xb1'),_0x246b94);})[_0xd182('0x1c')](function(_0x44d06d){if(_0x44d06d){var _0x4fddbb=0xc8;var _0x33521e=_0xd182('0xb2');logger[_0xd182('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x33521e,_0x4fddbb,_0xd182('0xb3'));logger[_0xd182('0x1f')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x33521e,_0x4fddbb,_0xd182('0xb3'),JSON[_0xd182('0x20')](_0x44d06d));if(_0x246b94[_0xd182('0x7c')][_0xd182('0x3c')]===_0xd182('0xb4')){return _0x4970bc[_0xd182('0x28')](_0x4fddbb)[_0xd182('0xb5')](_0xd182('0xb6'),_0xd182('0xb7'))[_0xd182('0x37')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x4970bc['status'](_0x4fddbb)[_0xd182('0x2f')](_0x44d06d);}}});})[_0xd182('0x26')](handleError(_0x4970bc,null));};exports['send']=function(_0x201e7f,_0x398e24,_0x2860a6){var _0x20e74e,_0x56f2a2,_0x47cb26;if(_[_0xd182('0x96')](_0x201e7f[_0xd182('0x5a')][_0xd182('0x5a')])||_0x201e7f[_0xd182('0x5a')][_0xd182('0x5a')]===''){throw new db[(_0xd182('0x97'))][(_0xd182('0x88'))](_0xd182('0x99'));}if(_[_0xd182('0x96')](_0x201e7f['body']['to'])){throw new db['Sequelize']['ValidationError']('to\x20is\x20mandatory');}_0x20e74e=_0x201e7f[_0xd182('0x5a')]['to'];return db[_0xd182('0x3a')][_0xd182('0x5b')]({'where':{'id':_0x201e7f['params']['id']},'include':[{'model':db[_0xd182('0xb8')],'as':_0xd182('0xb9'),'include':[{'model':db[_0xd182('0x87')],'as':_0xd182('0x9e'),'where':{'mobile':_0x20e74e},'limit':0x1,'order':[[_0xd182('0x8b'),_0xd182('0x9f')]]}]}]})['then'](handleEntityNotFound(_0x398e24,null))[_0xd182('0x1c')](function(_0x3d0bd7){if(_0x3d0bd7&&_0x3d0bd7['List']){_0x56f2a2=_0x3d0bd7[_0xd182('0x56')]({'plain':!![]});if(_0x56f2a2[_0xd182('0xb9')]&&_0x56f2a2[_0xd182('0xb9')][_0xd182('0x9e')][_0xd182('0x45')]){return _0x56f2a2['List'][_0xd182('0x9e')][0x0];}return db[_0xd182('0x87')][_0xd182('0x54')](_[_0xd182('0x13')](_0x201e7f[_0xd182('0x5a')],{'firstName':_0x20e74e,'mobile':_0x20e74e,'phone':_0x20e74e,'ListId':_0x56f2a2[_0xd182('0x8d')]}));}})[_0xd182('0x1c')](handleEntityNotFound(_0x398e24,null))[_0xd182('0x1c')](function(_0x5a95d4){if(_0x5a95d4){_0x47cb26=_0x5a95d4;return db[_0xd182('0xa3')]['find']({'where':{'ContactId':_0x47cb26['id'],'closed':![],'WhatsappAccountId':_0x56f2a2['id']}})[_0xd182('0x1c')](function(_0x1178de){if(_0x1178de){return[_0x1178de,![]];}return db[_0xd182('0xa3')][_0xd182('0x54')]({'UserId':_0x201e7f['user']['id'],'ContactId':_0x47cb26['id'],'WhatsappAccountId':_0x56f2a2['id'],'phone':_0x20e74e,'firstMsgDirection':_0xd182('0xba'),'Messages':[_['merge'](_0x201e7f[_0xd182('0x5a')],{'read':![],'body':_0x201e7f['body'][_0xd182('0x5a')],'phone':_0x20e74e,'WhatsappAccountId':_0x56f2a2['id'],'UserId':_0x201e7f[_0xd182('0x55')]['id'],'ContactId':_0x47cb26['id']})]},{'include':[{'model':db[_0xd182('0x81')],'as':'Messages'}]})[_0xd182('0x1c')](function(_0x51eabc){return[_0x51eabc,!![]];});});}})[_0xd182('0x6c')](function(_0x30267f,_0x3b3889){if(_0x3b3889){return _0x30267f;}return db[_0xd182('0x81')][_0xd182('0x54')](_[_0xd182('0x4b')](_0x201e7f[_0xd182('0x5a')],{'read':![],'body':_0x201e7f['body'][_0xd182('0x5a')],'phone':_0x20e74e,'WhatsappAccountId':_0x56f2a2['id'],'WhatsappInteractionId':_0x30267f['id'],'UserId':_0x201e7f[_0xd182('0x55')]['id'],'ContactId':_0x47cb26['id']}))['then'](function(_0x53f583){_0x30267f['dataValues']['Messages']=[];_0x30267f[_0xd182('0xbb')][_0xd182('0xbc')]['push'](_0x53f583[_0xd182('0xbb')]);return _0x30267f;});})[_0xd182('0x1c')](respondWithResult(_0x398e24,null))[_0xd182('0x26')](handleError(_0x398e24,null));};
\ No newline at end of file
+var _0xb8ff=['redis','defaults','./whatsappAccount.socket','register','jayson/promise','client','http','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','status','end','json','offset','undefined','count','Content-Range','reject','save','update','get','UserProfileResource','sendStatus','stack','name','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','key','model','keys','filters','query','attributes','fields','nolimit','limit','order','sort','where','pick','filter','merge','type','options','includeAll','findAll','rows','params','intersection','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappAccounts','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','getDispositions','findOne','Disposition','length','hasOwnProperty','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','WhatsappApplication','destroy','bulkCreate','findAndCountAll','priority','finally','getApplications','whatsapp','Applications','account','sinch','statuses','state','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','from','From','replace','whatsapp:','Body','messageId','MessageSid','notifications','isNil','ValidationError','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','DESC','list','Contacts','contact','WhatsappInteraction','autoclose','push','close','interaction','created','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','set','Content-Type','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','List','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x162ee0,_0x291661){var _0x48fc5e=function(_0x297a35){while(--_0x297a35){_0x162ee0['push'](_0x162ee0['shift']());}};_0x48fc5e(++_0x291661);}(_0xb8ff,0xac));var _0xfb8f=function(_0x4dd3f3,_0x4dd39b){_0x4dd3f3=_0x4dd3f3-0x0;var _0x1e480f=_0xb8ff[_0x4dd3f3];return _0x1e480f;};'use strict';var emlformat=require(_0xfb8f('0x0'));var rimraf=require(_0xfb8f('0x1'));var zipdir=require(_0xfb8f('0x2'));var jsonpatch=require(_0xfb8f('0x3'));var rp=require(_0xfb8f('0x4'));var moment=require('moment');var BPromise=require(_0xfb8f('0x5'));var Mustache=require(_0xfb8f('0x6'));var util=require(_0xfb8f('0x7'));var path=require(_0xfb8f('0x8'));var sox=require(_0xfb8f('0x9'));var csv=require(_0xfb8f('0xa'));var ejs=require(_0xfb8f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfb8f('0xc'));var squel=require(_0xfb8f('0xd'));var crypto=require(_0xfb8f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xfb8f('0xf'));var toCsv=require(_0xfb8f('0xa'));var querystring=require(_0xfb8f('0x10'));var Papa=require('papaparse');var Redis=require(_0xfb8f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xfb8f('0x12'));var as=require(_0xfb8f('0x13'));var hardwareService=require(_0xfb8f('0x14'));var logger=require('../../config/logger')(_0xfb8f('0x15'));var utils=require(_0xfb8f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xfb8f('0x17'));var db=require(_0xfb8f('0x18'))['db'];config[_0xfb8f('0x19')]=_[_0xfb8f('0x1a')](config[_0xfb8f('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfb8f('0x19')]));require(_0xfb8f('0x1b'))[_0xfb8f('0x1c')](socket);var jayson=require(_0xfb8f('0x1d'));var client=jayson[_0xfb8f('0x1e')][_0xfb8f('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x19a9f0,_0x4ceee5,_0x25645a,_0x381341){return new BPromise(function(_0x419bcc,_0x252960){var _0xdf141d=_0x381341||client;return _0xdf141d['request'](_0x19a9f0,_0x25645a)[_0xfb8f('0x20')](function(_0x3513cf){logger['info'](_0xfb8f('0x21'),_0x4ceee5,_0xfb8f('0x22'));logger[_0xfb8f('0x23')](_0xfb8f('0x24'),_0x4ceee5,'request\x20sent',JSON['stringify'](_0x3513cf));if(_0x3513cf[_0xfb8f('0x25')]){if(_0x3513cf[_0xfb8f('0x25')][_0xfb8f('0x26')]===0x1f4){logger[_0xfb8f('0x25')]('WhatsappAccount,\x20%s,\x20%s',_0x4ceee5,_0x3513cf[_0xfb8f('0x25')]['message']);return _0x252960(_0x3513cf['error'][_0xfb8f('0x27')]);}logger['error'](_0xfb8f('0x21'),_0x4ceee5,_0x3513cf[_0xfb8f('0x25')][_0xfb8f('0x27')]);return _0x419bcc(_0x3513cf[_0xfb8f('0x25')]['message']);}else{logger[_0xfb8f('0x28')](_0xfb8f('0x21'),_0x4ceee5,_0xfb8f('0x22'));_0x419bcc(_0x3513cf[_0xfb8f('0x29')]['message']);}})[_0xfb8f('0x2a')](function(_0x3dacbc){logger['error'](_0xfb8f('0x21'),_0x4ceee5,_0x3dacbc);_0x252960(_0x3dacbc);});});}function respondWithStatusCode(_0x4bebbf,_0x11e73c){_0x11e73c=_0x11e73c||0xcc;return function(_0x51e788){if(_0x51e788){return _0x4bebbf['sendStatus'](_0x11e73c);}return _0x4bebbf[_0xfb8f('0x2b')](_0x11e73c)[_0xfb8f('0x2c')]();};}function respondWithResult(_0x29c09d,_0x2e97ee){_0x2e97ee=_0x2e97ee||0xc8;return function(_0x829d21){if(_0x829d21){return _0x29c09d[_0xfb8f('0x2b')](_0x2e97ee)[_0xfb8f('0x2d')](_0x829d21);}};}function respondWithFilteredResult(_0x15e2da,_0x39d372){return function(_0x568478){if(_0x568478){var _0x51a983=typeof _0x39d372[_0xfb8f('0x2e')]===_0xfb8f('0x2f')&&typeof _0x39d372['limit']===_0xfb8f('0x2f');var _0x25d33b=_0x568478[_0xfb8f('0x30')];var _0x34d0d4=_0x51a983?0x0:_0x39d372['offset'];var _0x2eb17e=_0x51a983?_0x568478[_0xfb8f('0x30')]:_0x39d372['offset']+_0x39d372['limit'];var _0x30bdc6;if(_0x2eb17e>=_0x25d33b){_0x2eb17e=_0x25d33b;_0x30bdc6=0xc8;}else{_0x30bdc6=0xce;}_0x15e2da['status'](_0x30bdc6);return _0x15e2da['set'](_0xfb8f('0x31'),_0x34d0d4+'-'+_0x2eb17e+'/'+_0x25d33b)[_0xfb8f('0x2d')](_0x568478);}return null;};}function patchUpdates(_0x4b3d2a){return function(_0x3ad403){try{jsonpatch['apply'](_0x3ad403,_0x4b3d2a,!![]);}catch(_0x52c41f){return BPromise[_0xfb8f('0x32')](_0x52c41f);}return _0x3ad403[_0xfb8f('0x33')]();};}function saveUpdates(_0x3f2688,_0x23a665){return function(_0xd579fc){if(_0xd579fc){return _0xd579fc[_0xfb8f('0x34')](_0x3f2688)[_0xfb8f('0x20')](function(_0x252499){return _0x252499;});}return null;};}function removeEntity(_0x375401,_0x26b979){return function(_0x1bd5e0){if(_0x1bd5e0){return _0x1bd5e0['destroy']()[_0xfb8f('0x20')](function(){var _0x319f33=_0x1bd5e0[_0xfb8f('0x35')]({'plain':!![]});var _0x45a88e='WhatsappAccounts';return db[_0xfb8f('0x36')]['destroy']({'where':{'type':_0x45a88e,'resourceId':_0x319f33['id']}})[_0xfb8f('0x20')](function(){return _0x1bd5e0;});})['then'](function(){_0x375401[_0xfb8f('0x2b')](0xcc)[_0xfb8f('0x2c')]();});}};}function handleEntityNotFound(_0xf070b1,_0x48eaea){return function(_0x236593){if(!_0x236593){_0xf070b1[_0xfb8f('0x37')](0x194);}return _0x236593;};}function handleError(_0x324a6f,_0x3d2950){_0x3d2950=_0x3d2950||0x1f4;return function(_0x589d96){logger[_0xfb8f('0x25')](_0x589d96[_0xfb8f('0x38')]);if(_0x589d96[_0xfb8f('0x39')]){delete _0x589d96['name'];}_0x324a6f[_0xfb8f('0x2b')](_0x3d2950)['send'](_0x589d96);};}exports[_0xfb8f('0x3a')]=function(_0x29ba2e,_0x462f7d){var _0x58284c={'include':[{'model':db[_0xfb8f('0x3b')],'as':_0xfb8f('0x3c')}]},_0x46c0ff={},_0x2a5dcd={'count':0x0,'rows':[]};var _0x3bccef=_[_0xfb8f('0x3d')](db[_0xfb8f('0x3e')][_0xfb8f('0x3f')],function(_0x1e4ca9){return{'name':_0x1e4ca9['fieldName'],'type':_0x1e4ca9['type'][_0xfb8f('0x40')]};});_0x46c0ff[_0xfb8f('0x41')]=_[_0xfb8f('0x3d')](_0x3bccef,_0xfb8f('0x39'));_0x46c0ff['query']=_[_0xfb8f('0x42')](_0x29ba2e['query']);_0x46c0ff[_0xfb8f('0x43')]=_['intersection'](_0x46c0ff[_0xfb8f('0x41')],_0x46c0ff[_0xfb8f('0x44')]);_0x58284c[_0xfb8f('0x45')]=_['intersection'](_0x46c0ff[_0xfb8f('0x41')],qs[_0xfb8f('0x46')](_0x29ba2e['query'][_0xfb8f('0x46')]));_0x58284c[_0xfb8f('0x45')]=_0x58284c[_0xfb8f('0x45')]['length']?_0x58284c[_0xfb8f('0x45')]:_0x46c0ff['model'];if(!_0x29ba2e['query']['hasOwnProperty'](_0xfb8f('0x47'))){_0x58284c[_0xfb8f('0x48')]=qs[_0xfb8f('0x48')](_0x29ba2e['query']['limit']);_0x58284c[_0xfb8f('0x2e')]=qs[_0xfb8f('0x2e')](_0x29ba2e[_0xfb8f('0x44')][_0xfb8f('0x2e')]);}_0x58284c[_0xfb8f('0x49')]=qs['sort'](_0x29ba2e[_0xfb8f('0x44')][_0xfb8f('0x4a')]);_0x58284c[_0xfb8f('0x4b')]=qs['filters'](_[_0xfb8f('0x4c')](_0x29ba2e[_0xfb8f('0x44')],_0x46c0ff[_0xfb8f('0x43')]),_0x3bccef);if(_0x29ba2e[_0xfb8f('0x44')][_0xfb8f('0x4d')]){_0x58284c[_0xfb8f('0x4b')]=_[_0xfb8f('0x4e')](_0x58284c[_0xfb8f('0x4b')],{'$or':_[_0xfb8f('0x3d')](_0x3bccef,function(_0x143530){if(_0x143530[_0xfb8f('0x4f')]!=='VIRTUAL'){var _0x3df86a={};_0x3df86a[_0x143530['name']]={'$like':'%'+_0x29ba2e[_0xfb8f('0x44')][_0xfb8f('0x4d')]+'%'};return _0x3df86a;}})});}_0x58284c=_[_0xfb8f('0x4e')]({},_0x58284c,_0x29ba2e[_0xfb8f('0x50')]);var _0x2f92e1={'where':_0x58284c[_0xfb8f('0x4b')]};return db['WhatsappAccount'][_0xfb8f('0x30')](_0x2f92e1)['then'](function(_0x208200){_0x2a5dcd[_0xfb8f('0x30')]=_0x208200;if(_0x29ba2e[_0xfb8f('0x44')][_0xfb8f('0x51')]){_0x58284c['include']=[{'all':!![]}];}return db[_0xfb8f('0x3e')][_0xfb8f('0x52')](_0x58284c);})['then'](function(_0x53b9ad){_0x2a5dcd[_0xfb8f('0x53')]=_0x53b9ad;return _0x2a5dcd;})[_0xfb8f('0x20')](respondWithFilteredResult(_0x462f7d,_0x58284c))[_0xfb8f('0x2a')](handleError(_0x462f7d,null));};exports['show']=function(_0x57a562,_0x4460f1){var _0x5f2328={'raw':![],'where':{'id':_0x57a562[_0xfb8f('0x54')]['id']},'include':[{'model':db[_0xfb8f('0x3b')],'as':_0xfb8f('0x3c')}]},_0x15d19c={};_0x15d19c[_0xfb8f('0x41')]=_[_0xfb8f('0x42')](db[_0xfb8f('0x3e')][_0xfb8f('0x3f')]);_0x15d19c[_0xfb8f('0x44')]=_['keys'](_0x57a562[_0xfb8f('0x44')]);_0x15d19c[_0xfb8f('0x43')]=_[_0xfb8f('0x55')](_0x15d19c['model'],_0x15d19c[_0xfb8f('0x44')]);_0x5f2328['attributes']=_[_0xfb8f('0x55')](_0x15d19c[_0xfb8f('0x41')],qs[_0xfb8f('0x46')](_0x57a562[_0xfb8f('0x44')][_0xfb8f('0x46')]));_0x5f2328['attributes']=_0x5f2328[_0xfb8f('0x45')]['length']?_0x5f2328[_0xfb8f('0x45')]:_0x15d19c[_0xfb8f('0x41')];if(_0x57a562[_0xfb8f('0x44')][_0xfb8f('0x51')]){_0x5f2328[_0xfb8f('0x56')]=[{'all':!![]}];}_0x5f2328=_[_0xfb8f('0x4e')]({},_0x5f2328,_0x57a562[_0xfb8f('0x50')]);return db[_0xfb8f('0x3e')][_0xfb8f('0x57')](_0x5f2328)[_0xfb8f('0x20')](handleEntityNotFound(_0x4460f1,null))[_0xfb8f('0x20')](respondWithResult(_0x4460f1,null))[_0xfb8f('0x2a')](handleError(_0x4460f1,null));};exports[_0xfb8f('0x58')]=function(_0x3808cf,_0x301c23){return db['WhatsappAccount'][_0xfb8f('0x58')](_0x3808cf[_0xfb8f('0x59')],{})['then'](function(_0x58cf58){var _0x52c03f=_0x3808cf[_0xfb8f('0x5a')][_0xfb8f('0x35')]({'plain':!![]});if(!_0x52c03f)throw new Error(_0xfb8f('0x5b'));if(_0x52c03f[_0xfb8f('0x5c')]===_0xfb8f('0x5a')){var _0x39c0ea=_0x58cf58[_0xfb8f('0x35')]({'plain':!![]});var _0x4b9a86=_0xfb8f('0x5d');return db[_0xfb8f('0x5e')][_0xfb8f('0x57')]({'where':{'name':_0x4b9a86,'userProfileId':_0x52c03f['userProfileId']},'raw':!![]})[_0xfb8f('0x20')](function(_0xa38401){if(_0xa38401&&_0xa38401[_0xfb8f('0x5f')]===0x0){return db[_0xfb8f('0x36')][_0xfb8f('0x58')]({'name':_0x39c0ea[_0xfb8f('0x39')],'resourceId':_0x39c0ea['id'],'type':_0xa38401[_0xfb8f('0x39')],'sectionId':_0xa38401['id']},{})[_0xfb8f('0x20')](function(){return _0x58cf58;});}else{return _0x58cf58;}})[_0xfb8f('0x2a')](function(_0xe29954){logger[_0xfb8f('0x25')](_0xfb8f('0x60'),_0xe29954);throw _0xe29954;});}return _0x58cf58;})[_0xfb8f('0x20')](respondWithResult(_0x301c23,0xc9))[_0xfb8f('0x2a')](handleError(_0x301c23,null));};exports[_0xfb8f('0x34')]=function(_0x363b0b,_0x2821b9){if(_0x363b0b['body']['id']){delete _0x363b0b[_0xfb8f('0x59')]['id'];}return db[_0xfb8f('0x3e')][_0xfb8f('0x57')]({'where':{'id':_0x363b0b['params']['id']},'include':[{'model':db['Pause'],'as':_0xfb8f('0x3c')}]})[_0xfb8f('0x20')](handleEntityNotFound(_0x2821b9,null))[_0xfb8f('0x20')](saveUpdates(_0x363b0b[_0xfb8f('0x59')],null))[_0xfb8f('0x20')](respondWithResult(_0x2821b9,null))[_0xfb8f('0x2a')](handleError(_0x2821b9,null));};exports['destroy']=function(_0x23a525,_0x1ebdc0){return db[_0xfb8f('0x3e')][_0xfb8f('0x57')]({'where':{'id':_0x23a525['params']['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x1ebdc0,null))[_0xfb8f('0x20')](removeEntity(_0x1ebdc0,null))[_0xfb8f('0x2a')](handleError(_0x1ebdc0,null));};exports[_0xfb8f('0x61')]=function(_0x4c9a04,_0x44d77b){return db['WhatsappAccount'][_0xfb8f('0x61')]()['then'](respondWithResult(_0x44d77b,null))[_0xfb8f('0x2a')](handleError(_0x44d77b,null));};exports[_0xfb8f('0x62')]=function(_0x45a319,_0x53d3ba,_0x1e30d7){if(_0x45a319[_0xfb8f('0x59')]['id']){delete _0x45a319[_0xfb8f('0x59')]['id'];}return db[_0xfb8f('0x3e')][_0xfb8f('0x57')]({'where':{'id':_0x45a319[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x53d3ba,null))[_0xfb8f('0x20')](function(_0x55c613){if(_0x55c613){_0x45a319['body'][_0xfb8f('0x63')]=_0x55c613['id'];return db['Disposition'][_0xfb8f('0x58')](_0x45a319[_0xfb8f('0x59')]);}})[_0xfb8f('0x20')](respondWithResult(_0x53d3ba,null))[_0xfb8f('0x2a')](handleError(_0x53d3ba,null));};exports[_0xfb8f('0x64')]=function(_0x4fe12d,_0x25292e,_0x28df9d){var _0x34c73d={'raw':![],'where':{}};var _0x4278e8={};var _0x2b2f0a={'count':0x0,'rows':[]};return db[_0xfb8f('0x3e')][_0xfb8f('0x65')]({'where':{'id':_0x4fe12d[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x25292e,null))[_0xfb8f('0x20')](function(_0x328075){if(_0x328075){_0x4278e8[_0xfb8f('0x41')]=_[_0xfb8f('0x42')](db[_0xfb8f('0x66')][_0xfb8f('0x3f')]);_0x4278e8[_0xfb8f('0x44')]=_[_0xfb8f('0x42')](_0x4fe12d['query']);_0x4278e8[_0xfb8f('0x43')]=_[_0xfb8f('0x55')](_0x4278e8[_0xfb8f('0x41')],_0x4278e8[_0xfb8f('0x44')]);_0x34c73d[_0xfb8f('0x45')]=_[_0xfb8f('0x55')](_0x4278e8[_0xfb8f('0x41')],qs[_0xfb8f('0x46')](_0x4fe12d['query']['fields']));_0x34c73d[_0xfb8f('0x45')]=_0x34c73d[_0xfb8f('0x45')][_0xfb8f('0x67')]?_0x34c73d[_0xfb8f('0x45')]:_0x4278e8[_0xfb8f('0x41')];if(!_0x4fe12d[_0xfb8f('0x44')][_0xfb8f('0x68')]('nolimit')){_0x34c73d[_0xfb8f('0x48')]=qs[_0xfb8f('0x48')](_0x4fe12d[_0xfb8f('0x44')][_0xfb8f('0x48')]);_0x34c73d[_0xfb8f('0x2e')]=qs['offset'](_0x4fe12d[_0xfb8f('0x44')][_0xfb8f('0x2e')]);}_0x34c73d['order']=qs['sort'](_0x4fe12d[_0xfb8f('0x44')][_0xfb8f('0x4a')]);_0x34c73d[_0xfb8f('0x4b')]=qs[_0xfb8f('0x43')](_[_0xfb8f('0x4c')](_0x4fe12d[_0xfb8f('0x44')],_0x4278e8[_0xfb8f('0x43')]));_0x34c73d[_0xfb8f('0x4b')][_0xfb8f('0x63')]=_0x328075['id'];if(_0x4fe12d[_0xfb8f('0x44')][_0xfb8f('0x4d')]){_0x34c73d[_0xfb8f('0x4b')]=_[_0xfb8f('0x4e')](_0x34c73d['where'],{'$or':_[_0xfb8f('0x3d')](_0x34c73d[_0xfb8f('0x45')],function(_0x492400){var _0x237194={};_0x237194[_0x492400]={'$like':'%'+_0x4fe12d[_0xfb8f('0x44')]['filter']+'%'};return _0x237194;})});}_0x34c73d=_[_0xfb8f('0x4e')]({},_0x34c73d,_0x4fe12d['options']);return db[_0xfb8f('0x66')][_0xfb8f('0x30')]({'where':_0x34c73d[_0xfb8f('0x4b')]})['then'](function(_0xa944e5){_0x2b2f0a['count']=_0xa944e5;if(_0x4fe12d[_0xfb8f('0x44')]['includeAll']){_0x34c73d[_0xfb8f('0x56')]=[{'all':!![]}];}return db['Disposition'][_0xfb8f('0x52')](_0x34c73d);})[_0xfb8f('0x20')](function(_0x4e0424){_0x2b2f0a[_0xfb8f('0x53')]=_0x4e0424;return _0x2b2f0a;});}})[_0xfb8f('0x20')](respondWithFilteredResult(_0x25292e,_0x34c73d))['catch'](handleError(_0x25292e,null));};exports[_0xfb8f('0x69')]=function(_0x25d55a,_0x142e9c,_0x3900f6){return db[_0xfb8f('0x3e')][_0xfb8f('0x57')]({'where':{'id':_0x25d55a[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x142e9c,null))['then'](function(_0xd337a2){if(_0xd337a2){return _0xd337a2[_0xfb8f('0x69')](_0x25d55a[_0xfb8f('0x44')][_0xfb8f('0x6a')]);}})['then'](respondWithStatusCode(_0x142e9c,null))[_0xfb8f('0x2a')](handleError(_0x142e9c,null));};exports[_0xfb8f('0x6b')]=function(_0x187997,_0x555c9b,_0x30a940){if(_0x187997[_0xfb8f('0x59')]['id']){delete _0x187997[_0xfb8f('0x59')]['id'];}return db[_0xfb8f('0x3e')]['find']({'where':{'id':_0x187997['params']['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x555c9b,null))[_0xfb8f('0x20')](function(_0x54b551){if(_0x54b551){_0x187997[_0xfb8f('0x59')]['WhatsappAccountId']=_0x54b551['id'];return db[_0xfb8f('0x6c')][_0xfb8f('0x58')](_0x187997['body']);}})[_0xfb8f('0x20')](respondWithResult(_0x555c9b,null))['catch'](handleError(_0x555c9b,null));};exports[_0xfb8f('0x6d')]=function(_0x447df4,_0x3022d4,_0x171664){var _0x50f836={'raw':![],'where':{}};var _0x6bd86={};var _0x63e89={'count':0x0,'rows':[]};return db[_0xfb8f('0x3e')][_0xfb8f('0x65')]({'where':{'id':_0x447df4['params']['id']}})['then'](handleEntityNotFound(_0x3022d4,null))[_0xfb8f('0x20')](function(_0xf1496f){if(_0xf1496f){_0x6bd86[_0xfb8f('0x41')]=_[_0xfb8f('0x42')](db[_0xfb8f('0x6c')][_0xfb8f('0x3f')]);_0x6bd86[_0xfb8f('0x44')]=_['keys'](_0x447df4['query']);_0x6bd86[_0xfb8f('0x43')]=_['intersection'](_0x6bd86[_0xfb8f('0x41')],_0x6bd86['query']);_0x50f836[_0xfb8f('0x45')]=_[_0xfb8f('0x55')](_0x6bd86['model'],qs[_0xfb8f('0x46')](_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x46')]));_0x50f836['attributes']=_0x50f836['attributes'][_0xfb8f('0x67')]?_0x50f836[_0xfb8f('0x45')]:_0x6bd86[_0xfb8f('0x41')];if(!_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x68')](_0xfb8f('0x47'))){_0x50f836[_0xfb8f('0x48')]=qs[_0xfb8f('0x48')](_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x48')]);_0x50f836[_0xfb8f('0x2e')]=qs[_0xfb8f('0x2e')](_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x2e')]);}_0x50f836[_0xfb8f('0x49')]=qs[_0xfb8f('0x4a')](_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x4a')]);_0x50f836[_0xfb8f('0x4b')]=qs[_0xfb8f('0x43')](_[_0xfb8f('0x4c')](_0x447df4[_0xfb8f('0x44')],_0x6bd86['filters']));_0x50f836['where']['WhatsappAccountId']=_0xf1496f['id'];if(_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x4d')]){_0x50f836[_0xfb8f('0x4b')]=_[_0xfb8f('0x4e')](_0x50f836[_0xfb8f('0x4b')],{'$or':_[_0xfb8f('0x3d')](_0x50f836[_0xfb8f('0x45')],function(_0x3f8d02){var _0x1077f6={};_0x1077f6[_0x3f8d02]={'$like':'%'+_0x447df4[_0xfb8f('0x44')][_0xfb8f('0x4d')]+'%'};return _0x1077f6;})});}_0x50f836=_[_0xfb8f('0x4e')]({},_0x50f836,_0x447df4['options']);return db[_0xfb8f('0x6c')][_0xfb8f('0x30')]({'where':_0x50f836[_0xfb8f('0x4b')]})[_0xfb8f('0x20')](function(_0xedec6f){_0x63e89[_0xfb8f('0x30')]=_0xedec6f;if(_0x447df4['query'][_0xfb8f('0x51')]){_0x50f836[_0xfb8f('0x56')]=[{'all':!![]}];}return db[_0xfb8f('0x6c')]['findAll'](_0x50f836);})[_0xfb8f('0x20')](function(_0x5ca5b5){_0x63e89[_0xfb8f('0x53')]=_0x5ca5b5;return _0x63e89;});}})[_0xfb8f('0x20')](respondWithFilteredResult(_0x3022d4,_0x50f836))[_0xfb8f('0x2a')](handleError(_0x3022d4,null));};exports[_0xfb8f('0x6e')]=function(_0x3a3813,_0x45a390,_0x451014){return db['WhatsappAccount'][_0xfb8f('0x57')]({'where':{'id':_0x3a3813[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x45a390,null))['then'](function(_0x8332d8){if(_0x8332d8){return _0x8332d8[_0xfb8f('0x6e')](_0x3a3813[_0xfb8f('0x44')][_0xfb8f('0x6a')]);}})[_0xfb8f('0x20')](respondWithStatusCode(_0x45a390,null))[_0xfb8f('0x2a')](handleError(_0x45a390,null));};exports[_0xfb8f('0x6f')]=function(_0x3823e4,_0x3d1061,_0x2cd27f){return db['WhatsappAccount']['find']({'where':{'id':_0x3823e4[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x3d1061,null))[_0xfb8f('0x20')](function(_0xde9d1){if(_0xde9d1){return _0xde9d1[_0xfb8f('0x6f')](_0x3823e4[_0xfb8f('0x59')]['ids'],_[_0xfb8f('0x70')](_0x3823e4[_0xfb8f('0x59')],['ids','id'])||{})[_0xfb8f('0x71')](function(_0x26dd8b){for(var _0x32ea7d=0x0;_0x32ea7d<_0x3823e4[_0xfb8f('0x59')][_0xfb8f('0x6a')]['length'];_0x32ea7d+=0x1){socket[_0xfb8f('0x72')](_0xfb8f('0x73'),{'UserId':Number(_0x3823e4[_0xfb8f('0x59')][_0xfb8f('0x6a')][_0x32ea7d]),'WhatsappAccountId':Number(_0x3823e4[_0xfb8f('0x54')]['id'])});}return _0x26dd8b;});}})['then'](respondWithResult(_0x3d1061,null))['catch'](handleError(_0x3d1061,null));};exports[_0xfb8f('0x74')]=function(_0x296fca,_0x4b1063,_0xcde03f){return db[_0xfb8f('0x3e')]['find']({'where':{'id':_0x296fca[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x4b1063,null))[_0xfb8f('0x20')](function(_0x8228b9){if(_0x8228b9){return _0x8228b9['removeAgents'](_0x296fca[_0xfb8f('0x44')][_0xfb8f('0x6a')])[_0xfb8f('0x20')](function(){if(_[_0xfb8f('0x75')](_0x296fca[_0xfb8f('0x44')][_0xfb8f('0x6a')])){for(var _0x459e12=0x0;_0x459e12<_0x296fca[_0xfb8f('0x44')]['ids'][_0xfb8f('0x67')];_0x459e12+=0x1){socket[_0xfb8f('0x72')]('userWhatsappAccount:remove',{'UserId':Number(_0x296fca['query']['ids'][_0x459e12]),'WhatsappAccountId':Number(_0x296fca['params']['id'])});}}else{socket[_0xfb8f('0x72')](_0xfb8f('0x76'),{'UserId':Number(_0x296fca['query'][_0xfb8f('0x6a')]),'WhatsappAccountId':Number(_0x296fca[_0xfb8f('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x4b1063,null))[_0xfb8f('0x2a')](handleError(_0x4b1063,null));};exports[_0xfb8f('0x77')]=function(_0x4025a1,_0x5dbb46,_0x20d327){var _0x267821={};var _0x35712b={};var _0x5dd45f;var _0x46de92;return db[_0xfb8f('0x3e')][_0xfb8f('0x65')]({'where':{'id':_0x4025a1[_0xfb8f('0x54')]['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x5dbb46,null))['then'](function(_0x535dec){if(_0x535dec){_0x5dd45f=_0x535dec;_0x35712b['model']=_[_0xfb8f('0x42')](db[_0xfb8f('0x78')][_0xfb8f('0x3f')]);_0x35712b[_0xfb8f('0x44')]=_[_0xfb8f('0x42')](_0x4025a1['query']);_0x35712b[_0xfb8f('0x43')]=_[_0xfb8f('0x55')](_0x35712b[_0xfb8f('0x41')],_0x35712b[_0xfb8f('0x44')]);_0x267821[_0xfb8f('0x45')]=_['intersection'](_0x35712b[_0xfb8f('0x41')],qs[_0xfb8f('0x46')](_0x4025a1[_0xfb8f('0x44')][_0xfb8f('0x46')]));_0x267821['attributes']=_0x267821['attributes'][_0xfb8f('0x67')]?_0x267821[_0xfb8f('0x45')]:_0x35712b[_0xfb8f('0x41')];_0x267821['order']=qs[_0xfb8f('0x4a')](_0x4025a1['query'][_0xfb8f('0x4a')]);_0x267821[_0xfb8f('0x4b')]=qs[_0xfb8f('0x43')](_['pick'](_0x4025a1[_0xfb8f('0x44')],_0x35712b['filters']));if(_0x4025a1['query'][_0xfb8f('0x4d')]){_0x267821['where']=_[_0xfb8f('0x4e')](_0x267821[_0xfb8f('0x4b')],{'$or':_[_0xfb8f('0x3d')](_0x267821['attributes'],function(_0x53447c){var _0x28bb90={};_0x28bb90[_0x53447c]={'$like':'%'+_0x4025a1[_0xfb8f('0x44')][_0xfb8f('0x4d')]+'%'};return _0x28bb90;})});}_0x267821=_[_0xfb8f('0x4e')]({},_0x267821,_0x4025a1['options']);return _0x5dd45f[_0xfb8f('0x77')](_0x267821);}})[_0xfb8f('0x20')](function(_0x454e70){if(_0x454e70){_0x46de92=_0x454e70[_0xfb8f('0x67')];if(!_0x4025a1['query'][_0xfb8f('0x68')](_0xfb8f('0x47'))){_0x267821[_0xfb8f('0x48')]=qs[_0xfb8f('0x48')](_0x4025a1[_0xfb8f('0x44')][_0xfb8f('0x48')]);_0x267821[_0xfb8f('0x2e')]=qs['offset'](_0x4025a1['query'][_0xfb8f('0x2e')]);}return _0x5dd45f[_0xfb8f('0x77')](_0x267821);}})[_0xfb8f('0x20')](function(_0x5dda7b){if(_0x5dda7b){return _0x5dda7b?{'count':_0x46de92,'rows':_0x5dda7b}:null;}})[_0xfb8f('0x20')](respondWithResult(_0x5dbb46,null))[_0xfb8f('0x2a')](handleError(_0x5dbb46,null));};exports[_0xfb8f('0x79')]=function(_0x6774a5,_0x3015d6){var _0x28fa20=_0x6774a5[_0xfb8f('0x54')]['id'];var _0x5a4ee6=_0x6774a5[_0xfb8f('0x59')];var _0x26f20e=0xc8;var _0xe49a8a=null;return db[_0xfb8f('0x7a')][_0xfb8f('0x7b')]({'isolationLevel':db['sequelize']['Transaction'][_0xfb8f('0x7c')]['READ_COMMITTED']},function(_0x130d4c){return db['WhatsappAccount'][_0xfb8f('0x65')]({'where':{'id':_0x28fa20},'transaction':_0x130d4c})[_0xfb8f('0x20')](function(_0x162a56){if(_0x162a56){return db[_0xfb8f('0x7d')][_0xfb8f('0x7e')]({'where':{'WhatsappAccountId':_0x28fa20},'transaction':_0x130d4c})[_0xfb8f('0x20')](function(){var _0x55b127=_[_0xfb8f('0x3d')](_0x5a4ee6,function(_0x462ccb){_0x462ccb[_0xfb8f('0x63')]=_0x28fa20;return _0x462ccb;});return db[_0xfb8f('0x7d')][_0xfb8f('0x7f')](_0x55b127,{'transaction':_0x130d4c});});}else{_0x26f20e=0x194;_0xe49a8a=[];}});})[_0xfb8f('0x20')](function(){if(_0x26f20e!==0x194){return db[_0xfb8f('0x7d')][_0xfb8f('0x80')]({'where':{'WhatsappAccountId':_0x28fa20},'order':_0xfb8f('0x81')})[_0xfb8f('0x20')](function(_0x53b08){_0xe49a8a=_0x53b08;});}})[_0xfb8f('0x2a')](function(_0x3f9466){_0x26f20e=0x1f4;logger[_0xfb8f('0x25')](_0x3f9466[_0xfb8f('0x38')]);if(_0x3f9466['name']){delete _0x3f9466[_0xfb8f('0x39')];}_0xe49a8a=_0x3f9466;})[_0xfb8f('0x82')](function(){if(_0xe49a8a===null){_0x3015d6[_0xfb8f('0x37')](_0x26f20e);}else{if(_0x26f20e===0x1f4){_0x3015d6['status'](_0x26f20e)['send'](_0xe49a8a);}else{_0x3015d6[_0xfb8f('0x2b')](_0x26f20e)[_0xfb8f('0x2d')](_0xe49a8a);}}});};exports['getApplications']=function(_0x1db62e,_0x2ec362,_0x4b6b81){var _0x4eaf64={};var _0x3b0144={};var _0x3eea21;var _0x4b7297;return db[_0xfb8f('0x3e')][_0xfb8f('0x65')]({'where':{'id':_0x1db62e['params']['id']}})[_0xfb8f('0x20')](handleEntityNotFound(_0x2ec362,null))[_0xfb8f('0x20')](function(_0x4f4e36){if(_0x4f4e36){_0x3eea21=_0x4f4e36;_0x3b0144[_0xfb8f('0x41')]=_[_0xfb8f('0x42')](db['WhatsappApplication']['rawAttributes']);_0x3b0144['query']=_['keys'](_0x1db62e[_0xfb8f('0x44')]);_0x3b0144[_0xfb8f('0x43')]=_['intersection'](_0x3b0144['model'],_0x3b0144[_0xfb8f('0x44')]);_0x4eaf64[_0xfb8f('0x45')]=_[_0xfb8f('0x55')](_0x3b0144[_0xfb8f('0x41')],qs[_0xfb8f('0x46')](_0x1db62e[_0xfb8f('0x44')][_0xfb8f('0x46')]));_0x4eaf64[_0xfb8f('0x45')]=_0x4eaf64['attributes'][_0xfb8f('0x67')]?_0x4eaf64[_0xfb8f('0x45')]:_0x3b0144['model'];_0x4eaf64[_0xfb8f('0x49')]=qs[_0xfb8f('0x4a')](_0x1db62e[_0xfb8f('0x44')][_0xfb8f('0x4a')]);_0x4eaf64[_0xfb8f('0x4b')]=qs[_0xfb8f('0x43')](_[_0xfb8f('0x4c')](_0x1db62e[_0xfb8f('0x44')],_0x3b0144[_0xfb8f('0x43')]));if(_0x1db62e[_0xfb8f('0x44')][_0xfb8f('0x4d')]){_0x4eaf64['where']=_[_0xfb8f('0x4e')](_0x4eaf64[_0xfb8f('0x4b')],{'$or':_[_0xfb8f('0x3d')](_0x4eaf64[_0xfb8f('0x45')],function(_0xeeb155){var _0x48314a={};_0x48314a[_0xeeb155]={'$like':'%'+_0x1db62e[_0xfb8f('0x44')][_0xfb8f('0x4d')]+'%'};return _0x48314a;})});}_0x4eaf64=_['merge']({},_0x4eaf64,_0x1db62e['options']);return _0x3eea21[_0xfb8f('0x83')](_0x4eaf64);}})[_0xfb8f('0x20')](function(_0x3b0cf4){if(_0x3b0cf4){_0x4b7297=_0x3b0cf4['length'];if(!_0x1db62e['query'][_0xfb8f('0x68')](_0xfb8f('0x47'))){_0x4eaf64[_0xfb8f('0x48')]=qs[_0xfb8f('0x48')](_0x1db62e['query'][_0xfb8f('0x48')]);_0x4eaf64['offset']=qs['offset'](_0x1db62e[_0xfb8f('0x44')][_0xfb8f('0x2e')]);}return _0x3eea21[_0xfb8f('0x83')](_0x4eaf64);}})[_0xfb8f('0x20')](function(_0x2b5930){if(_0x2b5930){return _0x2b5930?{'count':_0x4b7297,'rows':_0x2b5930}:null;}})[_0xfb8f('0x20')](respondWithResult(_0x2ec362,null))[_0xfb8f('0x2a')](handleError(_0x2ec362,null));};exports['notify']=function(_0x30713a,_0x578ef5,_0x467eba){var _0x47fb75={'channel':_0xfb8f('0x84')};var _0x55683b=[];var _0xc18a6e=[];var _0x49a653={};return db[_0xfb8f('0x3e')]['find']({'where':{'id':_0x30713a['params']['id']},'include':[{'model':db[_0xfb8f('0x7d')],'as':_0xfb8f('0x85')}]})[_0xfb8f('0x20')](handleEntityNotFound(_0x578ef5,null))[_0xfb8f('0x20')](function(_0x36344a){_0x47fb75[_0xfb8f('0x86')]=_0x36344a;if(_0x47fb75[_0xfb8f('0x86')]&&_0x47fb75[_0xfb8f('0x86')]['type']===_0xfb8f('0x87')&&_0x30713a[_0xfb8f('0x59')][_0xfb8f('0x88')]){if(_0x30713a[_0xfb8f('0x59')]['statuses'][_0xfb8f('0x67')]===0x0)return;if(_0x30713a['body'][_0xfb8f('0x88')][0x0][_0xfb8f('0x89')]!=='read')return;return db[_0xfb8f('0x8a')][_0xfb8f('0x34')]({'read':!![],'readAt':_0x30713a['body'][_0xfb8f('0x88')][0x0][_0xfb8f('0x8b')]},{'where':{'messageId':_0x30713a[_0xfb8f('0x59')][_0xfb8f('0x88')][0x0][_0xfb8f('0x8c')]},'individualHooks':!![]})[_0xfb8f('0x20')](function(_0x2d7fd2){return _0x578ef5[_0xfb8f('0x2b')](0xc8)[_0xfb8f('0x2d')](_0x2d7fd2);});}_0x47fb75[_0xfb8f('0x8d')]=_[_0xfb8f('0x8e')](_0x36344a['Applications'],['priority'],[_0xfb8f('0x8f')]);if(_0x47fb75[_0xfb8f('0x86')][_0xfb8f('0x85')]){delete _0x47fb75[_0xfb8f('0x86')][_0xfb8f('0x85')];}return db[_0xfb8f('0x90')][_0xfb8f('0x61')]()[_0xfb8f('0x20')](function(_0x160048){if(!_0x160048){throw new db[(_0xfb8f('0x91'))]['ValidationError'](_0xfb8f('0x92'));}_0x55683b=_[_0xfb8f('0x93')](_[_0xfb8f('0x42')](_0x160048),[_0xfb8f('0x94'),_0xfb8f('0x95')]);_0xc18a6e=_[_0xfb8f('0x93')](_[_0xfb8f('0x42')](_0x160048),['createdAt','updatedAt','CompanyId',_0xfb8f('0x96')]);_0x47fb75[_0xfb8f('0x59')]={'mapKey':'mobile'};if(_0x47fb75['account']&&_0x47fb75[_0xfb8f('0x86')]['type']==='twilio'){_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x97')]=_0x30713a[_0xfb8f('0x59')][_0xfb8f('0x98')][_0xfb8f('0x99')](_0xfb8f('0x9a'),'');_0x47fb75[_0xfb8f('0x59')]['body']=_0x30713a[_0xfb8f('0x59')][_0xfb8f('0x9b')];_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x9c')]=_0x30713a[_0xfb8f('0x59')][_0xfb8f('0x9d')];}if(_0x47fb75[_0xfb8f('0x86')]&&_0x47fb75[_0xfb8f('0x86')][_0xfb8f('0x4f')]===_0xfb8f('0x87')){_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x97')]=_0x30713a[_0xfb8f('0x59')]['notifications'][0x0][_0xfb8f('0x97')];_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x59')]=_0x30713a['body'][_0xfb8f('0x9e')][0x0][_0xfb8f('0x27')][_0xfb8f('0x59')];_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x9c')]=_0x30713a[_0xfb8f('0x59')]['notifications'][0x0][_0xfb8f('0x8c')];}if(_0x47fb75[_0xfb8f('0x59')]['id']){delete _0x47fb75['body']['id'];}if(_[_0xfb8f('0x9f')](_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x97')])){throw new db[(_0xfb8f('0x91'))][(_0xfb8f('0xa0'))]('from\x20is\x20mandatory');}if(_[_0xfb8f('0x9f')](_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x59')])||_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x59')]===''){throw new db[(_0xfb8f('0x91'))][(_0xfb8f('0xa0'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfb8f('0x9f')](_0x47fb75['body'][_0xfb8f('0xa1')])){throw new db['Sequelize'][(_0xfb8f('0xa0'))](_0xfb8f('0xa2')+_0xc18a6e);}if(!_[_0xfb8f('0xa3')](_0xc18a6e,_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0xa1')])){throw new db[(_0xfb8f('0x91'))][(_0xfb8f('0xa0'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xc18a6e);}_0x49a653[_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0xa1')]]=_0x47fb75[_0xfb8f('0x59')]['from'];return db[_0xfb8f('0xa4')][_0xfb8f('0x57')]({'where':{'id':_0x47fb75[_0xfb8f('0x86')][_0xfb8f('0x96')]},'include':[{'model':db[_0xfb8f('0x90')],'as':'Contacts','where':_0x49a653,'limit':0x1,'order':[[_0xfb8f('0x95'),_0xfb8f('0xa5')]]}]});})['then'](handleEntityNotFound(_0x578ef5,null))[_0xfb8f('0x20')](function(_0x175446){if(_0x175446){_0x47fb75[_0xfb8f('0xa6')]=_[_0xfb8f('0x70')](_0x175446,[_0xfb8f('0xa7')]);if(_0x175446[_0xfb8f('0xa7')]['length']){return _0x175446[_0xfb8f('0xa7')][0x0];}var _0x50e754=_['defaults'](_0x47fb75[_0xfb8f('0x59')],{'firstName':_0x47fb75[_0xfb8f('0x59')]['from'],'ListId':_0x175446['id']});_0x50e754[_0x47fb75[_0xfb8f('0x59')]['mapKey']]=_0x47fb75['body'][_0xfb8f('0x97')];return db[_0xfb8f('0x90')][_0xfb8f('0x58')](_0x50e754,{'fields':_0x55683b,'raw':!![]});}})[_0xfb8f('0x20')](handleEntityNotFound(_0x578ef5,null))[_0xfb8f('0x20')](function(_0x3fea48){if(_0x3fea48){_0x47fb75[_0xfb8f('0xa8')]=_0x3fea48;var _0xca7423={'ContactId':_0x3fea48['id'],'phone':_0x47fb75['body'][_0xfb8f('0x97')],'WhatsappAccountId':_0x30713a[_0xfb8f('0x54')]['id']};var _0x4f8b12={'ContactId':_0x3fea48['id'],'WhatsappAccountId':_0x30713a['params']['id'],'closed':![]};return db['WhatsappInteraction'][_0xfb8f('0x57')]({'where':_0x4f8b12})[_0xfb8f('0x20')](function(_0xe8df0f){if(_0xe8df0f){return[_0xe8df0f,![]];}return db[_0xfb8f('0xa9')][_0xfb8f('0x58')](_0xca7423)[_0xfb8f('0x20')](function(_0x1a5e90){return[_0x1a5e90,!![]];});});}})[_0xfb8f('0x71')](function(_0x26d691,_0xda766c){_0x47fb75['interaction']=_0x26d691[_0xfb8f('0x35')]({'plain':!![]});_0x47fb75['interaction']['created']=![];if(_0xda766c){if(_0x47fb75[_0xfb8f('0x86')][_0xfb8f('0xaa')]){_0x47fb75[_0xfb8f('0x8d')][_0xfb8f('0xab')]({'id':0x0,'priority':_0x47fb75['applications'][_0xfb8f('0x67')]+0x1,'app':_0xfb8f('0xac'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x47fb75[_0xfb8f('0xad')][_0xfb8f('0xae')]=!![];}return db[_0xfb8f('0x8a')][_0xfb8f('0x58')]({'phone':_0x47fb75[_0xfb8f('0x59')]['from'],'messageId':_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x9c')],'body':_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0x59')],'WhatsappAccountId':_0x30713a['params']['id'],'WhatsappInteractionId':_0x26d691['id'],'direction':'in','ContactId':_0x26d691[_0xfb8f('0xaf')],'AttachmentId':_0x47fb75[_0xfb8f('0x59')][_0xfb8f('0xb0')]});})['then'](function(_0xba9c36){_0x47fb75[_0xfb8f('0x27')]=_0xba9c36;if(_0x47fb75[_0xfb8f('0xad')][_0xfb8f('0xb1')]){return db[_0xfb8f('0x78')][_0xfb8f('0x57')]({'attributes':['id',_0xfb8f('0x39')],'where':{'id':_0x47fb75[_0xfb8f('0xad')]['UserId']}})[_0xfb8f('0x20')](function(_0x51b6f6){if(_0x51b6f6){_0x47fb75[_0xfb8f('0x8d')][_0xfb8f('0xb2')]({'id':0x0,'priority':0x0,'app':_0xfb8f('0xb3'),'appdata':_0x51b6f6['name']+','+(_0x47fb75['account'][_0xfb8f('0xb4')]||0xa),'interval':_0xfb8f('0xb5')});}return respondWithRpcPromise(_0xfb8f('0xb6'),_0xfb8f('0xb7'),_0x47fb75);});}return respondWithRpcPromise('Start',_0xfb8f('0xb7'),_0x47fb75);})[_0xfb8f('0x20')](function(_0x254b00){if(_0x254b00){var _0x30683a=0xc8;var _0x44cff7=_0xfb8f('0xb8');logger[_0xfb8f('0x28')](_0xfb8f('0x24'),_0x44cff7,_0x30683a,_0xfb8f('0xb9'));logger[_0xfb8f('0x23')](_0xfb8f('0xba'),_0x44cff7,_0x30683a,_0xfb8f('0xb9'),JSON['stringify'](_0x254b00));if(_0x47fb75[_0xfb8f('0x86')]['type']===_0xfb8f('0xbb')){return _0x578ef5[_0xfb8f('0x2b')](_0x30683a)[_0xfb8f('0xbc')](_0xfb8f('0xbd'),'text/xml')[_0xfb8f('0xbe')](_0xfb8f('0xbf'));}else{return _0x578ef5[_0xfb8f('0x2b')](_0x30683a)[_0xfb8f('0x2d')](_0x254b00);}}});})[_0xfb8f('0x2a')](handleError(_0x578ef5,null));};exports[_0xfb8f('0xbe')]=function(_0x27ec3a,_0x391de9,_0x3b25e1){var _0x2547ff,_0x213be9,_0x4a45d8;if(_[_0xfb8f('0x9f')](_0x27ec3a[_0xfb8f('0x59')][_0xfb8f('0x59')])||_0x27ec3a[_0xfb8f('0x59')][_0xfb8f('0x59')]===''){throw new db['Sequelize'][(_0xfb8f('0xa0'))](_0xfb8f('0xc0'));}if(_[_0xfb8f('0x9f')](_0x27ec3a['body']['to'])){throw new db['Sequelize'][(_0xfb8f('0xa0'))]('to\x20is\x20mandatory');}_0x2547ff=_0x27ec3a['body']['to'];return db[_0xfb8f('0x3e')][_0xfb8f('0x57')]({'where':{'id':_0x27ec3a[_0xfb8f('0x54')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xfb8f('0x90')],'as':_0xfb8f('0xa7'),'where':{'mobile':_0x2547ff},'limit':0x1,'order':[[_0xfb8f('0x95'),_0xfb8f('0xa5')]]}]}]})[_0xfb8f('0x20')](handleEntityNotFound(_0x391de9,null))[_0xfb8f('0x20')](function(_0x122c94){if(_0x122c94&&_0x122c94[_0xfb8f('0xc1')]){_0x213be9=_0x122c94[_0xfb8f('0x35')]({'plain':!![]});if(_0x213be9[_0xfb8f('0xc1')]&&_0x213be9['List'][_0xfb8f('0xa7')][_0xfb8f('0x67')]){return _0x213be9[_0xfb8f('0xc1')]['Contacts'][0x0];}return db['CmContact'][_0xfb8f('0x58')](_[_0xfb8f('0x1a')](_0x27ec3a[_0xfb8f('0x59')],{'firstName':_0x2547ff,'mobile':_0x2547ff,'phone':_0x2547ff,'ListId':_0x213be9[_0xfb8f('0x96')]}));}})['then'](handleEntityNotFound(_0x391de9,null))[_0xfb8f('0x20')](function(_0x43b286){if(_0x43b286){_0x4a45d8=_0x43b286;return db[_0xfb8f('0xa9')][_0xfb8f('0x57')]({'where':{'ContactId':_0x4a45d8['id'],'closed':![],'WhatsappAccountId':_0x213be9['id']}})[_0xfb8f('0x20')](function(_0x4f900a){if(_0x4f900a){return[_0x4f900a,![]];}return db[_0xfb8f('0xa9')][_0xfb8f('0x58')]({'UserId':_0x27ec3a[_0xfb8f('0x5a')]['id'],'ContactId':_0x4a45d8['id'],'WhatsappAccountId':_0x213be9['id'],'phone':_0x2547ff,'firstMsgDirection':_0xfb8f('0xc2'),'Messages':[_[_0xfb8f('0x4e')](_0x27ec3a[_0xfb8f('0x59')],{'read':![],'body':_0x27ec3a[_0xfb8f('0x59')]['body'],'phone':_0x2547ff,'WhatsappAccountId':_0x213be9['id'],'UserId':_0x27ec3a[_0xfb8f('0x5a')]['id'],'ContactId':_0x4a45d8['id']})]},{'include':[{'model':db[_0xfb8f('0x8a')],'as':_0xfb8f('0xc3')}]})['then'](function(_0x43131e){return[_0x43131e,!![]];});});}})[_0xfb8f('0x71')](function(_0x68d960,_0x680bcd){if(_0x680bcd){return _0x68d960;}return db[_0xfb8f('0x8a')][_0xfb8f('0x58')](_[_0xfb8f('0x4e')](_0x27ec3a[_0xfb8f('0x59')],{'read':![],'body':_0x27ec3a[_0xfb8f('0x59')][_0xfb8f('0x59')],'phone':_0x2547ff,'WhatsappAccountId':_0x213be9['id'],'WhatsappInteractionId':_0x68d960['id'],'UserId':_0x27ec3a['user']['id'],'ContactId':_0x4a45d8['id']}))[_0xfb8f('0x20')](function(_0x4482a7){_0x68d960['dataValues'][_0xfb8f('0xc3')]=[];_0x68d960[_0xfb8f('0xc4')]['Messages'][_0xfb8f('0xab')](_0x4482a7[_0xfb8f('0xc4')]);return _0x68d960;});})[_0xfb8f('0x20')](respondWithResult(_0x391de9,null))[_0xfb8f('0x2a')](handleError(_0x391de9,null));};
\ No newline at end of file
index 1245b13..4aa8248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x899e=['exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x899e,0xbc));var _0xe899=function(_0x5d0751,_0x5a8826){_0x5d0751=_0x5d0751-0x0;var _0x4b1278=_0x899e[_0x5d0751];return _0x4b1278;};'use strict';var EventEmitter=require(_0xe899('0x0'));var WhatsappAccount=require(_0xe899('0x1'))['db'][_0xe899('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xe899('0x3')](0x0);var events={'afterCreate':_0xe899('0x4'),'afterUpdate':_0xe899('0x5'),'afterDestroy':_0xe899('0x6')};function emitEvent(_0x18e714){return function(_0x5a0eb0,_0x2d5d18,_0x296fe0){WhatsappAccountEvents['emit'](_0x18e714+':'+_0x5a0eb0['id'],_0x5a0eb0);WhatsappAccountEvents[_0xe899('0x7')](_0x18e714,_0x5a0eb0);_0x296fe0(null);};}for(var e in events){if(events[_0xe899('0x8')](e)){var event=events[e];WhatsappAccount[_0xe899('0x9')](e,emitEvent(event));}}module[_0xe899('0xa')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xebb9=['hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','emit','hasOwnProperty'];(function(_0x2a5b07,_0x426512){var _0x52d8f1=function(_0x6645ba){while(--_0x6645ba){_0x2a5b07['push'](_0x2a5b07['shift']());}};_0x52d8f1(++_0x426512);}(_0xebb9,0x14a));var _0x9ebb=function(_0x418c22,_0x4e5aca){_0x418c22=_0x418c22-0x0;var _0x301349=_0xebb9[_0x418c22];return _0x301349;};'use strict';var EventEmitter=require(_0x9ebb('0x0'));var WhatsappAccount=require(_0x9ebb('0x1'))['db'][_0x9ebb('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x9ebb('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2e41fc){return function(_0x534151,_0xf10a81,_0x1d958a){WhatsappAccountEvents[_0x9ebb('0x4')](_0x2e41fc+':'+_0x534151['id'],_0x534151);WhatsappAccountEvents[_0x9ebb('0x4')](_0x2e41fc,_0x534151);_0x1d958a(null);};}for(var e in events){if(events[_0x9ebb('0x5')](e)){var event=events[e];WhatsappAccount[_0x9ebb('0x6')](e,emitEvent(event));}}module[_0x9ebb('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index 9eba258..dd92ffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1be=['../../config/logger','api','moment','path','rimraf','../../config/environment','./whatsappAccount.attributes','define','WhatsappAccount','whatsapp_accounts','lodash','util'];(function(_0x1b2705,_0x87e381){var _0x12301f=function(_0xee3cbc){while(--_0xee3cbc){_0x1b2705['push'](_0x1b2705['shift']());}};_0x12301f(++_0x87e381);}(_0xc1be,0x6a));var _0xec1b=function(_0x44d1ba,_0x3bb14c){_0x44d1ba=_0x44d1ba-0x0;var _0x2f518d=_0xc1be[_0x44d1ba];return _0x2f518d;};'use strict';var _=require(_0xec1b('0x0'));var util=require(_0xec1b('0x1'));var logger=require(_0xec1b('0x2'))(_0xec1b('0x3'));var moment=require(_0xec1b('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xec1b('0x5'));var rimraf=require(_0xec1b('0x6'));var config=require(_0xec1b('0x7'));var attributes=require(_0xec1b('0x8'));module['exports']=function(_0x49d585,_0x19898b){return _0x49d585[_0xec1b('0x9')](_0xec1b('0xa'),attributes,{'tableName':_0xec1b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa6d0=['whatsapp_accounts','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./whatsappAccount.attributes','exports','define','WhatsappAccount'];(function(_0x5ad5b8,_0x4e7728){var _0x3fbab3=function(_0x208102){while(--_0x208102){_0x5ad5b8['push'](_0x5ad5b8['shift']());}};_0x3fbab3(++_0x4e7728);}(_0xa6d0,0x175));var _0x0a6d=function(_0x36824d,_0x1db18d){_0x36824d=_0x36824d-0x0;var _0x4260f9=_0xa6d0[_0x36824d];return _0x4260f9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0a6d('0x0'))(_0x0a6d('0x1'));var moment=require(_0x0a6d('0x2'));var BPromise=require(_0x0a6d('0x3'));var rp=require(_0x0a6d('0x4'));var fs=require('fs');var path=require(_0x0a6d('0x5'));var rimraf=require(_0x0a6d('0x6'));var config=require('../../config/environment');var attributes=require(_0x0a6d('0x7'));module[_0x0a6d('0x8')]=function(_0x1d443c,_0x516758){return _0x1d443c[_0x0a6d('0x9')](_0x0a6d('0xa'),attributes,{'tableName':_0x0a6d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c3320b..05924ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21ae=['../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','attributes','include','map','model','then','info','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x294850,_0x152b98){var _0x2e866c=function(_0x170edd){while(--_0x170edd){_0x294850['push'](_0x294850['shift']());}};_0x2e866c(++_0x152b98);}(_0x21ae,0x1ce));var _0xe21a=function(_0x22c7ba,_0x3d2c03){_0x22c7ba=_0x22c7ba-0x0;var _0x166e42=_0x21ae[_0x22c7ba];return _0x166e42;};'use strict';var _=require('lodash');var util=require(_0xe21a('0x0'));var moment=require(_0xe21a('0x1'));var BPromise=require(_0xe21a('0x2'));var rs=require(_0xe21a('0x3'));var fs=require('fs');var Redis=require(_0xe21a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe21a('0x5'));var logger=require(_0xe21a('0x6'))('rpc');var config=require(_0xe21a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe21a('0x8')][_0xe21a('0x9')]({'port':0x232a});config[_0xe21a('0xa')]=_[_0xe21a('0xb')](config[_0xe21a('0xa')],{'host':_0xe21a('0xc'),'port':0x18eb});var socket=require(_0xe21a('0xd'))(new Redis(config[_0xe21a('0xa')]));require(_0xe21a('0xe'))[_0xe21a('0xf')](socket);function respondWithRpcPromise(_0x4d5a3f,_0x26c97b,_0x375666){return new BPromise(function(_0x4e4b7e,_0x5e616d){return client[_0xe21a('0x10')](_0x4d5a3f,_0x375666)['then'](function(_0x3eea43){logger['info'](_0xe21a('0x11'),_0x26c97b,_0xe21a('0x12'));logger[_0xe21a('0x13')](_0xe21a('0x14'),_0x26c97b,'request\x20sent',JSON[_0xe21a('0x15')](_0x3eea43));if(_0x3eea43[_0xe21a('0x16')]){if(_0x3eea43[_0xe21a('0x16')]['code']===0x1f4){logger[_0xe21a('0x16')](_0xe21a('0x11'),_0x26c97b,_0x3eea43[_0xe21a('0x16')][_0xe21a('0x17')]);return _0x5e616d(_0x3eea43[_0xe21a('0x16')][_0xe21a('0x17')]);}logger[_0xe21a('0x16')](_0xe21a('0x11'),_0x26c97b,_0x3eea43[_0xe21a('0x16')]['message']);return _0x4e4b7e(_0x3eea43['error'][_0xe21a('0x17')]);}else{logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x26c97b,_0xe21a('0x12'));_0x4e4b7e(_0x3eea43[_0xe21a('0x18')][_0xe21a('0x17')]);}})[_0xe21a('0x19')](function(_0x34c9d8){logger[_0xe21a('0x16')](_0xe21a('0x11'),_0x26c97b,_0x34c9d8);_0x5e616d(_0x34c9d8);});});}exports[_0xe21a('0x1a')]=function(_0x3595c3){var _0x3cc8ee=this;return new Promise(function(_0x48d625,_0x500348){return db[_0xe21a('0x1b')][_0xe21a('0x1c')]({'raw':_0x3595c3[_0xe21a('0x1d')]?_0x3595c3['options']['raw']===undefined?!![]:![]:!![],'where':_0x3595c3[_0xe21a('0x1d')]?_0x3595c3['options']['where']||null:null,'attributes':_0x3595c3[_0xe21a('0x1d')]?_0x3595c3['options'][_0xe21a('0x1e')]||null:null,'include':_0x3595c3['options']?_0x3595c3[_0xe21a('0x1d')][_0xe21a('0x1f')]?_[_0xe21a('0x20')](_0x3595c3[_0xe21a('0x1d')][_0xe21a('0x1f')],function(_0x14eaeb){return{'model':db[_0x14eaeb[_0xe21a('0x21')]],'as':_0x14eaeb['as'],'attributes':_0x14eaeb['attributes'],'include':_0x14eaeb[_0xe21a('0x1f')]?_[_0xe21a('0x20')](_0x14eaeb[_0xe21a('0x1f')],function(_0x2d7e7e){return{'model':db[_0x2d7e7e['model']],'as':_0x2d7e7e['as'],'attributes':_0x2d7e7e['attributes'],'include':_0x2d7e7e['include']?_[_0xe21a('0x20')](_0x2d7e7e[_0xe21a('0x1f')],function(_0x3ac39a){return{'model':db[_0x3ac39a[_0xe21a('0x21')]],'as':_0x3ac39a['as'],'attributes':_0x3ac39a[_0xe21a('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xe21a('0x22')](function(_0x1414b8){logger[_0xe21a('0x23')](_0xe21a('0x1a'),_0x3595c3);logger['debug'](_0xe21a('0x1a'),_0x3595c3,JSON[_0xe21a('0x15')](_0x1414b8));_0x48d625(_0x1414b8);})['catch'](function(_0x52d73d){logger[_0xe21a('0x16')](_0xe21a('0x1a'),_0x52d73d[_0xe21a('0x17')],_0x3595c3);_0x500348(_0x3cc8ee[_0xe21a('0x16')](0x1f4,_0x52d73d[_0xe21a('0x17')]));});});};
\ No newline at end of file
+var _0x1900=['options','raw','where','attributes','map','include','model','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find'];(function(_0x79442c,_0x392270){var _0x47a9d0=function(_0x20e784){while(--_0x20e784){_0x79442c['push'](_0x79442c['shift']());}};_0x47a9d0(++_0x392270);}(_0x1900,0x76));var _0x0190=function(_0x288a23,_0x456e8a){_0x288a23=_0x288a23-0x0;var _0x372d6c=_0x1900[_0x288a23];return _0x372d6c;};'use strict';var _=require('lodash');var util=require(_0x0190('0x0'));var moment=require(_0x0190('0x1'));var BPromise=require(_0x0190('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0190('0x3'));var db=require(_0x0190('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0190('0x5'))(_0x0190('0x6'));var config=require(_0x0190('0x7'));var jayson=require(_0x0190('0x8'));var client=jayson['client'][_0x0190('0x9')]({'port':0x232a});config[_0x0190('0xa')]=_[_0x0190('0xb')](config[_0x0190('0xa')],{'host':_0x0190('0xc'),'port':0x18eb});var socket=require(_0x0190('0xd'))(new Redis(config['redis']));require('./whatsappAccount.socket')[_0x0190('0xe')](socket);function respondWithRpcPromise(_0x13de3b,_0x33224f,_0x50fcab){return new BPromise(function(_0x48b045,_0x432a34){return client[_0x0190('0xf')](_0x13de3b,_0x50fcab)[_0x0190('0x10')](function(_0xdaaf48){logger[_0x0190('0x11')](_0x0190('0x12'),_0x33224f,'request\x20sent');logger[_0x0190('0x13')](_0x0190('0x14'),_0x33224f,_0x0190('0x15'),JSON[_0x0190('0x16')](_0xdaaf48));if(_0xdaaf48[_0x0190('0x17')]){if(_0xdaaf48[_0x0190('0x17')]['code']===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x33224f,_0xdaaf48[_0x0190('0x17')][_0x0190('0x18')]);return _0x432a34(_0xdaaf48[_0x0190('0x17')][_0x0190('0x18')]);}logger[_0x0190('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x33224f,_0xdaaf48[_0x0190('0x17')][_0x0190('0x18')]);return _0x48b045(_0xdaaf48[_0x0190('0x17')][_0x0190('0x18')]);}else{logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x33224f,_0x0190('0x15'));_0x48b045(_0xdaaf48[_0x0190('0x19')][_0x0190('0x18')]);}})[_0x0190('0x1a')](function(_0x235459){logger[_0x0190('0x17')]('WhatsappAccount,\x20%s,\x20%s',_0x33224f,_0x235459);_0x432a34(_0x235459);});});}exports[_0x0190('0x1b')]=function(_0x3d0edc){var _0x241ca3=this;return new Promise(function(_0x13a079,_0xcc67c0){return db[_0x0190('0x1c')][_0x0190('0x1d')]({'raw':_0x3d0edc[_0x0190('0x1e')]?_0x3d0edc[_0x0190('0x1e')][_0x0190('0x1f')]===undefined?!![]:![]:!![],'where':_0x3d0edc[_0x0190('0x1e')]?_0x3d0edc[_0x0190('0x1e')][_0x0190('0x20')]||null:null,'attributes':_0x3d0edc[_0x0190('0x1e')]?_0x3d0edc[_0x0190('0x1e')][_0x0190('0x21')]||null:null,'include':_0x3d0edc[_0x0190('0x1e')]?_0x3d0edc[_0x0190('0x1e')]['include']?_[_0x0190('0x22')](_0x3d0edc[_0x0190('0x1e')][_0x0190('0x23')],function(_0x78fcd0){return{'model':db[_0x78fcd0[_0x0190('0x24')]],'as':_0x78fcd0['as'],'attributes':_0x78fcd0[_0x0190('0x21')],'include':_0x78fcd0[_0x0190('0x23')]?_[_0x0190('0x22')](_0x78fcd0[_0x0190('0x23')],function(_0x211197){return{'model':db[_0x211197[_0x0190('0x24')]],'as':_0x211197['as'],'attributes':_0x211197[_0x0190('0x21')],'include':_0x211197[_0x0190('0x23')]?_['map'](_0x211197[_0x0190('0x23')],function(_0x13588e){return{'model':db[_0x13588e['model']],'as':_0x13588e['as'],'attributes':_0x13588e[_0x0190('0x21')]};}):[]};}):[]};}):[]:[]})[_0x0190('0x10')](function(_0x1ea5d5){logger[_0x0190('0x11')]('ShowWhatsappAccount',_0x3d0edc);logger[_0x0190('0x13')](_0x0190('0x1b'),_0x3d0edc,JSON[_0x0190('0x16')](_0x1ea5d5));_0x13a079(_0x1ea5d5);})['catch'](function(_0x51cb13){logger[_0x0190('0x17')](_0x0190('0x1b'),_0x51cb13[_0x0190('0x18')],_0x3d0edc);_0xcc67c0(_0x241ca3['error'](0x1f4,_0x51cb13[_0x0190('0x18')]));});});};
\ No newline at end of file
index de95920..ad6f7fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dde=['register','length','whatsappAccount:','./whatsappAccount.events','save','update','removeListener'];(function(_0x2996ec,_0x1a2998){var _0x209944=function(_0x116fad){while(--_0x116fad){_0x2996ec['push'](_0x2996ec['shift']());}};_0x209944(++_0x1a2998);}(_0x7dde,0x8f));var _0xe7dd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dde[_0x3dd15e];return _0x231fd0;};'use strict';var WhatsappAccountEvents=require(_0xe7dd('0x0'));var events=[_0xe7dd('0x1'),'remove',_0xe7dd('0x2')];function createListener(_0x576e34,_0x401d6b){return function(_0x317077){_0x401d6b['emit'](_0x576e34,_0x317077);};}function removeListener(_0x305f23,_0x1993bc){return function(){WhatsappAccountEvents[_0xe7dd('0x3')](_0x305f23,_0x1993bc);};}exports[_0xe7dd('0x4')]=function(_0x3ce30f){for(var _0x286552=0x0,_0x53fc15=events[_0xe7dd('0x5')];_0x286552<_0x53fc15;_0x286552++){var _0x19e097=events[_0x286552];var _0x639735=createListener(_0xe7dd('0x6')+_0x19e097,_0x3ce30f);WhatsappAccountEvents['on'](_0x19e097,_0x639735);}};
\ No newline at end of file
+var _0x3cf4=['whatsappAccount:','./whatsappAccount.events','remove','update','removeListener'];(function(_0x37c91b,_0x5fcbb6){var _0x1ef5e6=function(_0x52ed42){while(--_0x52ed42){_0x37c91b['push'](_0x37c91b['shift']());}};_0x1ef5e6(++_0x5fcbb6);}(_0x3cf4,0x1dc));var _0x43cf=function(_0x596c17,_0x1e54a8){_0x596c17=_0x596c17-0x0;var _0x347942=_0x3cf4[_0x596c17];return _0x347942;};'use strict';var WhatsappAccountEvents=require(_0x43cf('0x0'));var events=['save',_0x43cf('0x1'),_0x43cf('0x2')];function createListener(_0x5d97f7,_0x55b08f){return function(_0x6071ac){_0x55b08f['emit'](_0x5d97f7,_0x6071ac);};}function removeListener(_0x2b9386,_0x58d761){return function(){WhatsappAccountEvents[_0x43cf('0x3')](_0x2b9386,_0x58d761);};}exports['register']=function(_0x5231b8){for(var _0x3d4700=0x0,_0x24bb01=events['length'];_0x3d4700<_0x24bb01;_0x3d4700++){var _0x48528e=events[_0x3d4700];var _0xdbb7bc=createListener(_0x43cf('0x4')+_0x48528e,_0x5231b8);WhatsappAccountEvents['on'](_0x48528e,_0xdbb7bc);}};
\ No newline at end of file
index b8b45c7..fe3f9e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f87=['multer','path','connect-timeout','express','Router','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','show','create','put','/:id','update','delete','destroy'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x7f87,0x190));var _0x77f8=function(_0x25836d,_0xe7d384){_0x25836d=_0x25836d-0x0;var _0x50a710=_0x7f87[_0x25836d];return _0x50a710;};'use strict';var multer=require(_0x77f8('0x0'));var util=require('util');var path=require(_0x77f8('0x1'));var timeout=require(_0x77f8('0x2'));var express=require(_0x77f8('0x3'));var router=express[_0x77f8('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x77f8('0x5'));var controller=require(_0x77f8('0x6'));router[_0x77f8('0x7')]('/',auth[_0x77f8('0x8')](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x77f8('0x9')]);router['post']('/',auth[_0x77f8('0x8')](),controller[_0x77f8('0xa')]);router[_0x77f8('0xb')](_0x77f8('0xc'),auth[_0x77f8('0x8')](),controller[_0x77f8('0xd')]);router[_0x77f8('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x77f8('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x76c1=['post','create','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','isAuthenticated','index','/:id'];(function(_0x41beee,_0x50104f){var _0x4ab95b=function(_0x48763f){while(--_0x48763f){_0x41beee['push'](_0x41beee['shift']());}};_0x4ab95b(++_0x50104f);}(_0x76c1,0x18b));var _0x176c=function(_0x187279,_0x26d152){_0x187279=_0x187279-0x0;var _0x3da59d=_0x76c1[_0x187279];return _0x3da59d;};'use strict';var multer=require('multer');var util=require(_0x176c('0x0'));var path=require(_0x176c('0x1'));var timeout=require(_0x176c('0x2'));var express=require(_0x176c('0x3'));var router=express[_0x176c('0x4')]();var fs_extra=require(_0x176c('0x5'));var auth=require(_0x176c('0x6'));var interaction=require(_0x176c('0x7'));var config=require('../../config/environment');var controller=require(_0x176c('0x8'));router[_0x176c('0x9')]('/',auth[_0x176c('0xa')](),controller[_0x176c('0xb')]);router[_0x176c('0x9')](_0x176c('0xc'),auth[_0x176c('0xa')](),controller['show']);router[_0x176c('0xd')]('/',auth[_0x176c('0xa')](),controller[_0x176c('0xe')]);router['put'](_0x176c('0xc'),auth[_0x176c('0xa')](),controller['update']);router['delete'](_0x176c('0xc'),auth[_0x176c('0xa')](),controller[_0x176c('0xf')]);module[_0x176c('0x10')]=router;
\ No newline at end of file
index 331522d..2c27522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c79=['noop','TEXT','*,*,*,*','INTEGER','STRING'];(function(_0x2ae2ad,_0xac5b0c){var _0x26dbd7=function(_0x5e685b){while(--_0x5e685b){_0x2ae2ad['push'](_0x2ae2ad['shift']());}};_0x26dbd7(++_0xac5b0c);}(_0x7c79,0x107));var _0x97c7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c79[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x97c7('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x97c7('0x1')],'allowNull':![],'defaultValue':_0x97c7('0x2')},'appdata':{'type':Sequelize[_0x97c7('0x3')]()},'description':{'type':Sequelize[_0x97c7('0x1')]},'interval':{'type':Sequelize[_0x97c7('0x1')],'defaultValue':_0x97c7('0x4')}};
\ No newline at end of file
+var _0x607c=['noop','TEXT','*,*,*,*','sequelize'];(function(_0xc2a401,_0x447bfe){var _0x3247c7=function(_0x565122){while(--_0x565122){_0xc2a401['push'](_0xc2a401['shift']());}};_0x3247c7(++_0x447bfe);}(_0x607c,0x13f));var _0xc607=function(_0x358a1b,_0x7ae094){_0x358a1b=_0x358a1b-0x0;var _0x381a76=_0x607c[_0x358a1b];return _0x381a76;};'use strict';var Sequelize=require(_0xc607('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc607('0x1')},'appdata':{'type':Sequelize[_0xc607('0x2')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xc607('0x3')}};
\ No newline at end of file
index 284c1a1..9bcf63c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf777=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','include','findAll','rows','show','params','keys','rawAttributes','includeAll','find','create','body','catch','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','sendStatus','error','stack','name','index','map','WhatsappApplication','fieldName','type','key','model','filters','intersection','query'];(function(_0x137ef8,_0x3384dc){var _0x3b7d28=function(_0x291891){while(--_0x291891){_0x137ef8['push'](_0x137ef8['shift']());}};_0x3b7d28(++_0x3384dc);}(_0xf777,0x1e9));var _0x7f77=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf777[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x7f77('0x0'));var rimraf=require(_0x7f77('0x1'));var zipdir=require(_0x7f77('0x2'));var jsonpatch=require(_0x7f77('0x3'));var rp=require(_0x7f77('0x4'));var moment=require(_0x7f77('0x5'));var BPromise=require(_0x7f77('0x6'));var Mustache=require(_0x7f77('0x7'));var util=require(_0x7f77('0x8'));var path=require('path');var sox=require(_0x7f77('0x9'));var csv=require(_0x7f77('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7f77('0xb'));var _=require('lodash');var squel=require(_0x7f77('0xc'));var crypto=require('crypto');var jsforce=require(_0x7f77('0xd'));var deskjs=require(_0x7f77('0xe'));var toCsv=require(_0x7f77('0xa'));var querystring=require(_0x7f77('0xf'));var Papa=require(_0x7f77('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7f77('0x11'));var as=require(_0x7f77('0x12'));var hardwareService=require(_0x7f77('0x13'));var logger=require(_0x7f77('0x14'))(_0x7f77('0x15'));var utils=require('../../config/utils');var config=require(_0x7f77('0x16'));var licenseUtil=require(_0x7f77('0x17'));var db=require(_0x7f77('0x18'))['db'];function respondWithStatusCode(_0x2ab82d,_0xd625fb){_0xd625fb=_0xd625fb||0xcc;return function(_0x484018){if(_0x484018){return _0x2ab82d['sendStatus'](_0xd625fb);}return _0x2ab82d[_0x7f77('0x19')](_0xd625fb)[_0x7f77('0x1a')]();};}function respondWithResult(_0x3f7a60,_0x3f99e2){_0x3f99e2=_0x3f99e2||0xc8;return function(_0xe15bf7){if(_0xe15bf7){return _0x3f7a60[_0x7f77('0x19')](_0x3f99e2)[_0x7f77('0x1b')](_0xe15bf7);}};}function respondWithFilteredResult(_0x2efdd1,_0x13e9a1){return function(_0x3d8a45){if(_0x3d8a45){var _0x2c104a=typeof _0x13e9a1[_0x7f77('0x1c')]===_0x7f77('0x1d')&&typeof _0x13e9a1[_0x7f77('0x1e')]===_0x7f77('0x1d');var _0x40577e=_0x3d8a45['count'];var _0x5b2c85=_0x2c104a?0x0:_0x13e9a1[_0x7f77('0x1c')];var _0x53ec10=_0x2c104a?_0x3d8a45[_0x7f77('0x1f')]:_0x13e9a1['offset']+_0x13e9a1[_0x7f77('0x1e')];var _0x16eaf0;if(_0x53ec10>=_0x40577e){_0x53ec10=_0x40577e;_0x16eaf0=0xc8;}else{_0x16eaf0=0xce;}_0x2efdd1[_0x7f77('0x19')](_0x16eaf0);return _0x2efdd1['set'](_0x7f77('0x20'),_0x5b2c85+'-'+_0x53ec10+'/'+_0x40577e)[_0x7f77('0x1b')](_0x3d8a45);}return null;};}function patchUpdates(_0x4d7283){return function(_0x175e9c){try{jsonpatch[_0x7f77('0x21')](_0x175e9c,_0x4d7283,!![]);}catch(_0x2d7654){return BPromise['reject'](_0x2d7654);}return _0x175e9c[_0x7f77('0x22')]();};}function saveUpdates(_0x5b869c,_0x5c4049){return function(_0xcb6a79){if(_0xcb6a79){return _0xcb6a79[_0x7f77('0x23')](_0x5b869c)['then'](function(_0x5e98b5){return _0x5e98b5;});}return null;};}function removeEntity(_0x2493a0,_0x87e6b6){return function(_0x1d8fe3){if(_0x1d8fe3){return _0x1d8fe3['destroy']()['then'](function(){_0x2493a0[_0x7f77('0x19')](0xcc)[_0x7f77('0x1a')]();});}};}function handleEntityNotFound(_0x303043,_0x3d66d5){return function(_0xd78c83){if(!_0xd78c83){_0x303043[_0x7f77('0x24')](0x194);}return _0xd78c83;};}function handleError(_0x56484c,_0x106ce3){_0x106ce3=_0x106ce3||0x1f4;return function(_0x4e38e4){logger[_0x7f77('0x25')](_0x4e38e4[_0x7f77('0x26')]);if(_0x4e38e4['name']){delete _0x4e38e4[_0x7f77('0x27')];}_0x56484c[_0x7f77('0x19')](_0x106ce3)['send'](_0x4e38e4);};}exports[_0x7f77('0x28')]=function(_0x53ac60,_0x341b5a){var _0x25fcae={},_0x1bae99={},_0x600238={'count':0x0,'rows':[]};var _0x6995bf=_[_0x7f77('0x29')](db[_0x7f77('0x2a')]['rawAttributes'],function(_0x268c18){return{'name':_0x268c18[_0x7f77('0x2b')],'type':_0x268c18[_0x7f77('0x2c')][_0x7f77('0x2d')]};});_0x1bae99[_0x7f77('0x2e')]=_[_0x7f77('0x29')](_0x6995bf,_0x7f77('0x27'));_0x1bae99['query']=_['keys'](_0x53ac60['query']);_0x1bae99[_0x7f77('0x2f')]=_[_0x7f77('0x30')](_0x1bae99[_0x7f77('0x2e')],_0x1bae99[_0x7f77('0x31')]);_0x25fcae[_0x7f77('0x32')]=_[_0x7f77('0x30')](_0x1bae99[_0x7f77('0x2e')],qs[_0x7f77('0x33')](_0x53ac60[_0x7f77('0x31')][_0x7f77('0x33')]));_0x25fcae[_0x7f77('0x32')]=_0x25fcae['attributes'][_0x7f77('0x34')]?_0x25fcae[_0x7f77('0x32')]:_0x1bae99[_0x7f77('0x2e')];if(!_0x53ac60[_0x7f77('0x31')][_0x7f77('0x35')](_0x7f77('0x36'))){_0x25fcae[_0x7f77('0x1e')]=qs[_0x7f77('0x1e')](_0x53ac60[_0x7f77('0x31')][_0x7f77('0x1e')]);_0x25fcae['offset']=qs[_0x7f77('0x1c')](_0x53ac60['query'][_0x7f77('0x1c')]);}_0x25fcae[_0x7f77('0x37')]=qs['sort'](_0x53ac60['query'][_0x7f77('0x38')]);_0x25fcae[_0x7f77('0x39')]=qs['filters'](_[_0x7f77('0x3a')](_0x53ac60['query'],_0x1bae99[_0x7f77('0x2f')]),_0x6995bf);if(_0x53ac60[_0x7f77('0x31')]['filter']){_0x25fcae[_0x7f77('0x39')]=_[_0x7f77('0x3b')](_0x25fcae[_0x7f77('0x39')],{'$or':_[_0x7f77('0x29')](_0x6995bf,function(_0x41cc45){if(_0x41cc45[_0x7f77('0x2c')]!==_0x7f77('0x3c')){var _0x141c92={};_0x141c92[_0x41cc45[_0x7f77('0x27')]]={'$like':'%'+_0x53ac60['query'][_0x7f77('0x3d')]+'%'};return _0x141c92;}})});}_0x25fcae=_[_0x7f77('0x3b')]({},_0x25fcae,_0x53ac60[_0x7f77('0x3e')]);var _0x205e20={'where':_0x25fcae[_0x7f77('0x39')]};return db[_0x7f77('0x2a')]['count'](_0x205e20)[_0x7f77('0x3f')](function(_0x526dfb){_0x600238[_0x7f77('0x1f')]=_0x526dfb;if(_0x53ac60[_0x7f77('0x31')]['includeAll']){_0x25fcae[_0x7f77('0x40')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x7f77('0x41')](_0x25fcae);})[_0x7f77('0x3f')](function(_0x2078bf){_0x600238[_0x7f77('0x42')]=_0x2078bf;return _0x600238;})[_0x7f77('0x3f')](respondWithFilteredResult(_0x341b5a,_0x25fcae))['catch'](handleError(_0x341b5a,null));};exports[_0x7f77('0x43')]=function(_0x3c79e1,_0x10ca50){var _0x144ff9={'raw':!![],'where':{'id':_0x3c79e1[_0x7f77('0x44')]['id']}},_0x5e326b={};_0x5e326b[_0x7f77('0x2e')]=_[_0x7f77('0x45')](db['WhatsappApplication'][_0x7f77('0x46')]);_0x5e326b[_0x7f77('0x31')]=_['keys'](_0x3c79e1[_0x7f77('0x31')]);_0x5e326b['filters']=_['intersection'](_0x5e326b[_0x7f77('0x2e')],_0x5e326b[_0x7f77('0x31')]);_0x144ff9['attributes']=_[_0x7f77('0x30')](_0x5e326b[_0x7f77('0x2e')],qs[_0x7f77('0x33')](_0x3c79e1[_0x7f77('0x31')]['fields']));_0x144ff9[_0x7f77('0x32')]=_0x144ff9[_0x7f77('0x32')][_0x7f77('0x34')]?_0x144ff9[_0x7f77('0x32')]:_0x5e326b['model'];if(_0x3c79e1[_0x7f77('0x31')][_0x7f77('0x47')]){_0x144ff9[_0x7f77('0x40')]=[{'all':!![]}];}_0x144ff9=_['merge']({},_0x144ff9,_0x3c79e1[_0x7f77('0x3e')]);return db['WhatsappApplication'][_0x7f77('0x48')](_0x144ff9)[_0x7f77('0x3f')](handleEntityNotFound(_0x10ca50,null))[_0x7f77('0x3f')](respondWithResult(_0x10ca50,null))['catch'](handleError(_0x10ca50,null));};exports['create']=function(_0x3f65d8,_0x296152){return db[_0x7f77('0x2a')][_0x7f77('0x49')](_0x3f65d8[_0x7f77('0x4a')],{})[_0x7f77('0x3f')](respondWithResult(_0x296152,0xc9))[_0x7f77('0x4b')](handleError(_0x296152,null));};exports[_0x7f77('0x23')]=function(_0x8e6913,_0x3246dd){if(_0x8e6913[_0x7f77('0x4a')]['id']){delete _0x8e6913[_0x7f77('0x4a')]['id'];}return db['WhatsappApplication'][_0x7f77('0x48')]({'where':{'id':_0x8e6913[_0x7f77('0x44')]['id']}})[_0x7f77('0x3f')](handleEntityNotFound(_0x3246dd,null))[_0x7f77('0x3f')](saveUpdates(_0x8e6913[_0x7f77('0x4a')],null))[_0x7f77('0x3f')](respondWithResult(_0x3246dd,null))[_0x7f77('0x4b')](handleError(_0x3246dd,null));};exports[_0x7f77('0x4c')]=function(_0x28681a,_0x1366b5){return db[_0x7f77('0x2a')]['find']({'where':{'id':_0x28681a[_0x7f77('0x44')]['id']}})[_0x7f77('0x3f')](handleEntityNotFound(_0x1366b5,null))[_0x7f77('0x3f')](removeEntity(_0x1366b5,null))[_0x7f77('0x4b')](handleError(_0x1366b5,null));};
\ No newline at end of file
+var _0x8383=['catch','keys','find','create','body','params','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','reject','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','WhatsappApplication','includeAll','include','findAll','rows'];(function(_0x3d1a06,_0xaf1a94){var _0x38be4e=function(_0xa5d064){while(--_0xa5d064){_0x3d1a06['push'](_0x3d1a06['shift']());}};_0x38be4e(++_0xaf1a94);}(_0x8383,0x98));var _0x3838=function(_0x449908,_0x105521){_0x449908=_0x449908-0x0;var _0x3bd94e=_0x8383[_0x449908];return _0x3bd94e;};'use strict';var emlformat=require(_0x3838('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3838('0x1'));var rp=require(_0x3838('0x2'));var moment=require(_0x3838('0x3'));var BPromise=require(_0x3838('0x4'));var Mustache=require(_0x3838('0x5'));var util=require(_0x3838('0x6'));var path=require(_0x3838('0x7'));var sox=require(_0x3838('0x8'));var csv=require(_0x3838('0x9'));var ejs=require(_0x3838('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3838('0xb'));var squel=require(_0x3838('0xc'));var crypto=require('crypto');var jsforce=require(_0x3838('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3838('0x9'));var querystring=require(_0x3838('0xe'));var Papa=require(_0x3838('0xf'));var Redis=require('ioredis');var authService=require(_0x3838('0x10'));var qs=require(_0x3838('0x11'));var as=require(_0x3838('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3838('0x13'))(_0x3838('0x14'));var utils=require(_0x3838('0x15'));var config=require(_0x3838('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x3838('0x17'))['db'];function respondWithStatusCode(_0x276d98,_0x21f2c0){_0x21f2c0=_0x21f2c0||0xcc;return function(_0x56e009){if(_0x56e009){return _0x276d98[_0x3838('0x18')](_0x21f2c0);}return _0x276d98['status'](_0x21f2c0)[_0x3838('0x19')]();};}function respondWithResult(_0x2cfc06,_0x104adf){_0x104adf=_0x104adf||0xc8;return function(_0x17e0c4){if(_0x17e0c4){return _0x2cfc06[_0x3838('0x1a')](_0x104adf)['json'](_0x17e0c4);}};}function respondWithFilteredResult(_0x284ec1,_0xb4bf82){return function(_0x396b2d){if(_0x396b2d){var _0x2d81b2=typeof _0xb4bf82[_0x3838('0x1b')]==='undefined'&&typeof _0xb4bf82[_0x3838('0x1c')]===_0x3838('0x1d');var _0x29e617=_0x396b2d['count'];var _0x45aa66=_0x2d81b2?0x0:_0xb4bf82[_0x3838('0x1b')];var _0x4a9a7a=_0x2d81b2?_0x396b2d[_0x3838('0x1e')]:_0xb4bf82[_0x3838('0x1b')]+_0xb4bf82['limit'];var _0x313a90;if(_0x4a9a7a>=_0x29e617){_0x4a9a7a=_0x29e617;_0x313a90=0xc8;}else{_0x313a90=0xce;}_0x284ec1['status'](_0x313a90);return _0x284ec1[_0x3838('0x1f')](_0x3838('0x20'),_0x45aa66+'-'+_0x4a9a7a+'/'+_0x29e617)[_0x3838('0x21')](_0x396b2d);}return null;};}function patchUpdates(_0x2f9965){return function(_0x31a4b8){try{jsonpatch['apply'](_0x31a4b8,_0x2f9965,!![]);}catch(_0x5d7dd0){return BPromise[_0x3838('0x22')](_0x5d7dd0);}return _0x31a4b8['save']();};}function saveUpdates(_0x211fa7,_0x220fdd){return function(_0x200e51){if(_0x200e51){return _0x200e51[_0x3838('0x23')](_0x211fa7)[_0x3838('0x24')](function(_0x30e98f){return _0x30e98f;});}return null;};}function removeEntity(_0xbd0fd1,_0x1e8d61){return function(_0x525b21){if(_0x525b21){return _0x525b21[_0x3838('0x25')]()['then'](function(){_0xbd0fd1[_0x3838('0x1a')](0xcc)[_0x3838('0x19')]();});}};}function handleEntityNotFound(_0x55eaa5,_0x45c723){return function(_0x265099){if(!_0x265099){_0x55eaa5['sendStatus'](0x194);}return _0x265099;};}function handleError(_0x12cf42,_0x30af15){_0x30af15=_0x30af15||0x1f4;return function(_0x537f85){logger[_0x3838('0x26')](_0x537f85['stack']);if(_0x537f85[_0x3838('0x27')]){delete _0x537f85['name'];}_0x12cf42['status'](_0x30af15)[_0x3838('0x28')](_0x537f85);};}exports[_0x3838('0x29')]=function(_0x41bb45,_0x21b3e5){var _0x22ee47={},_0x4b6519={},_0x1baf56={'count':0x0,'rows':[]};var _0x429da4=_[_0x3838('0x2a')](db['WhatsappApplication'][_0x3838('0x2b')],function(_0x5ee2d8){return{'name':_0x5ee2d8[_0x3838('0x2c')],'type':_0x5ee2d8['type'][_0x3838('0x2d')]};});_0x4b6519[_0x3838('0x2e')]=_['map'](_0x429da4,_0x3838('0x27'));_0x4b6519['query']=_['keys'](_0x41bb45[_0x3838('0x2f')]);_0x4b6519[_0x3838('0x30')]=_['intersection'](_0x4b6519['model'],_0x4b6519[_0x3838('0x2f')]);_0x22ee47['attributes']=_[_0x3838('0x31')](_0x4b6519[_0x3838('0x2e')],qs[_0x3838('0x32')](_0x41bb45[_0x3838('0x2f')][_0x3838('0x32')]));_0x22ee47[_0x3838('0x33')]=_0x22ee47['attributes'][_0x3838('0x34')]?_0x22ee47[_0x3838('0x33')]:_0x4b6519[_0x3838('0x2e')];if(!_0x41bb45[_0x3838('0x2f')][_0x3838('0x35')](_0x3838('0x36'))){_0x22ee47[_0x3838('0x1c')]=qs[_0x3838('0x1c')](_0x41bb45[_0x3838('0x2f')][_0x3838('0x1c')]);_0x22ee47[_0x3838('0x1b')]=qs['offset'](_0x41bb45[_0x3838('0x2f')][_0x3838('0x1b')]);}_0x22ee47[_0x3838('0x37')]=qs[_0x3838('0x38')](_0x41bb45['query'][_0x3838('0x38')]);_0x22ee47[_0x3838('0x39')]=qs[_0x3838('0x30')](_[_0x3838('0x3a')](_0x41bb45['query'],_0x4b6519[_0x3838('0x30')]),_0x429da4);if(_0x41bb45[_0x3838('0x2f')][_0x3838('0x3b')]){_0x22ee47[_0x3838('0x39')]=_['merge'](_0x22ee47[_0x3838('0x39')],{'$or':_[_0x3838('0x2a')](_0x429da4,function(_0x28c0ba){if(_0x28c0ba['type']!=='VIRTUAL'){var _0x403078={};_0x403078[_0x28c0ba[_0x3838('0x27')]]={'$like':'%'+_0x41bb45[_0x3838('0x2f')][_0x3838('0x3b')]+'%'};return _0x403078;}})});}_0x22ee47=_[_0x3838('0x3c')]({},_0x22ee47,_0x41bb45[_0x3838('0x3d')]);var _0x29c159={'where':_0x22ee47[_0x3838('0x39')]};return db[_0x3838('0x3e')]['count'](_0x29c159)[_0x3838('0x24')](function(_0x303d26){_0x1baf56[_0x3838('0x1e')]=_0x303d26;if(_0x41bb45[_0x3838('0x2f')][_0x3838('0x3f')]){_0x22ee47[_0x3838('0x40')]=[{'all':!![]}];}return db[_0x3838('0x3e')][_0x3838('0x41')](_0x22ee47);})['then'](function(_0x2bbd18){_0x1baf56[_0x3838('0x42')]=_0x2bbd18;return _0x1baf56;})['then'](respondWithFilteredResult(_0x21b3e5,_0x22ee47))[_0x3838('0x43')](handleError(_0x21b3e5,null));};exports['show']=function(_0x27e830,_0x4e8e9b){var _0x5595f9={'raw':!![],'where':{'id':_0x27e830['params']['id']}},_0x55af4f={};_0x55af4f[_0x3838('0x2e')]=_[_0x3838('0x44')](db[_0x3838('0x3e')][_0x3838('0x2b')]);_0x55af4f['query']=_[_0x3838('0x44')](_0x27e830[_0x3838('0x2f')]);_0x55af4f[_0x3838('0x30')]=_[_0x3838('0x31')](_0x55af4f[_0x3838('0x2e')],_0x55af4f[_0x3838('0x2f')]);_0x5595f9[_0x3838('0x33')]=_[_0x3838('0x31')](_0x55af4f[_0x3838('0x2e')],qs[_0x3838('0x32')](_0x27e830['query'][_0x3838('0x32')]));_0x5595f9[_0x3838('0x33')]=_0x5595f9[_0x3838('0x33')][_0x3838('0x34')]?_0x5595f9[_0x3838('0x33')]:_0x55af4f[_0x3838('0x2e')];if(_0x27e830[_0x3838('0x2f')]['includeAll']){_0x5595f9[_0x3838('0x40')]=[{'all':!![]}];}_0x5595f9=_['merge']({},_0x5595f9,_0x27e830['options']);return db[_0x3838('0x3e')][_0x3838('0x45')](_0x5595f9)[_0x3838('0x24')](handleEntityNotFound(_0x4e8e9b,null))['then'](respondWithResult(_0x4e8e9b,null))[_0x3838('0x43')](handleError(_0x4e8e9b,null));};exports['create']=function(_0x1c4f00,_0x3f52fd){return db[_0x3838('0x3e')][_0x3838('0x46')](_0x1c4f00[_0x3838('0x47')],{})[_0x3838('0x24')](respondWithResult(_0x3f52fd,0xc9))[_0x3838('0x43')](handleError(_0x3f52fd,null));};exports[_0x3838('0x23')]=function(_0x415af0,_0x18b817){if(_0x415af0['body']['id']){delete _0x415af0['body']['id'];}return db['WhatsappApplication'][_0x3838('0x45')]({'where':{'id':_0x415af0[_0x3838('0x48')]['id']}})[_0x3838('0x24')](handleEntityNotFound(_0x18b817,null))[_0x3838('0x24')](saveUpdates(_0x415af0[_0x3838('0x47')],null))[_0x3838('0x24')](respondWithResult(_0x18b817,null))[_0x3838('0x43')](handleError(_0x18b817,null));};exports[_0x3838('0x25')]=function(_0x1992a6,_0x359a68){return db[_0x3838('0x3e')][_0x3838('0x45')]({'where':{'id':_0x1992a6[_0x3838('0x48')]['id']}})[_0x3838('0x24')](handleEntityNotFound(_0x359a68,null))[_0x3838('0x24')](removeEntity(_0x359a68,null))[_0x3838('0x43')](handleError(_0x359a68,null));};
\ No newline at end of file
index 2f05aa8..c55e705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fad=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./whatsappApplication.attributes','define','WhatsappApplication','utf8mb4'];(function(_0x4d99f7,_0x3db232){var _0x293ee3=function(_0x3450e6){while(--_0x3450e6){_0x4d99f7['push'](_0x4d99f7['shift']());}};_0x293ee3(++_0x3db232);}(_0x6fad,0x174));var _0xd6fa=function(_0x2f4311,_0xd2d511){_0x2f4311=_0x2f4311-0x0;var _0x309ccb=_0x6fad[_0x2f4311];return _0x309ccb;};'use strict';var _=require(_0xd6fa('0x0'));var util=require(_0xd6fa('0x1'));var logger=require(_0xd6fa('0x2'))(_0xd6fa('0x3'));var moment=require('moment');var BPromise=require(_0xd6fa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd6fa('0x5'));var rimraf=require(_0xd6fa('0x6'));var config=require(_0xd6fa('0x7'));var attributes=require(_0xd6fa('0x8'));module['exports']=function(_0x45dad4,_0x329390){return _0x45dad4[_0xd6fa('0x9')](_0xd6fa('0xa'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd6fa('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x0689=['utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define'];(function(_0x5c76b6,_0x139abd){var _0x5c4cbd=function(_0x1839ad){while(--_0x1839ad){_0x5c76b6['push'](_0x5c76b6['shift']());}};_0x5c4cbd(++_0x139abd);}(_0x0689,0x161));var _0x9068=function(_0x4be78f,_0x403e3e){_0x4be78f=_0x4be78f-0x0;var _0x579a45=_0x0689[_0x4be78f];return _0x579a45;};'use strict';var _=require('lodash');var util=require(_0x9068('0x0'));var logger=require('../../config/logger')(_0x9068('0x1'));var moment=require(_0x9068('0x2'));var BPromise=require(_0x9068('0x3'));var rp=require(_0x9068('0x4'));var fs=require('fs');var path=require(_0x9068('0x5'));var rimraf=require(_0x9068('0x6'));var config=require(_0x9068('0x7'));var attributes=require(_0x9068('0x8'));module[_0x9068('0x9')]=function(_0x287846,_0x5ce5a7){return _0x287846[_0x9068('0xa')]('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9068('0xb'),'collate':_0x9068('0xc')});};
\ No newline at end of file
index 6c8d796..a4e70a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['code','WhatsappApplication,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2ffd05,_0x1840e3){var _0x5038bf=function(_0xe7e075){while(--_0xe7e075){_0x2ffd05['push'](_0x2ffd05['shift']());}};_0x5038bf(++_0x1840e3);}(_0xac31,0xca));var _0x1ac3=function(_0x365780,_0x41d4b1){_0x365780=_0x365780-0x0;var _0x59867d=_0xac31[_0x365780];return _0x59867d;};'use strict';var _=require(_0x1ac3('0x0'));var util=require(_0x1ac3('0x1'));var moment=require(_0x1ac3('0x2'));var BPromise=require(_0x1ac3('0x3'));var rs=require(_0x1ac3('0x4'));var fs=require('fs');var Redis=require(_0x1ac3('0x5'));var db=require(_0x1ac3('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1ac3('0x7'))(_0x1ac3('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1ac3('0x9')][_0x1ac3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bf9b1,_0x1be223,_0x157604){return new BPromise(function(_0x57893c,_0x2d17de){return client['request'](_0x2bf9b1,_0x157604)[_0x1ac3('0xb')](function(_0x40b64c){logger[_0x1ac3('0xc')]('WhatsappApplication,\x20%s,\x20%s',_0x1be223,_0x1ac3('0xd'));logger[_0x1ac3('0xe')](_0x1ac3('0xf'),_0x1be223,_0x1ac3('0xd'),JSON[_0x1ac3('0x10')](_0x40b64c));if(_0x40b64c[_0x1ac3('0x11')]){if(_0x40b64c['error'][_0x1ac3('0x12')]===0x1f4){logger[_0x1ac3('0x11')](_0x1ac3('0x13'),_0x1be223,_0x40b64c[_0x1ac3('0x11')]['message']);return _0x2d17de(_0x40b64c[_0x1ac3('0x11')][_0x1ac3('0x14')]);}logger[_0x1ac3('0x11')](_0x1ac3('0x13'),_0x1be223,_0x40b64c['error'][_0x1ac3('0x14')]);return _0x57893c(_0x40b64c[_0x1ac3('0x11')]['message']);}else{logger[_0x1ac3('0xc')](_0x1ac3('0x13'),_0x1be223,_0x1ac3('0xd'));_0x57893c(_0x40b64c['result'][_0x1ac3('0x14')]);}})[_0x1ac3('0x15')](function(_0x23e6e9){logger['error'](_0x1ac3('0x13'),_0x1be223,_0x23e6e9);_0x2d17de(_0x23e6e9);});});}
\ No newline at end of file
+var _0x2dae=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird'];(function(_0x11f5a7,_0x378b4f){var _0x56a08e=function(_0x1bdbd8){while(--_0x1bdbd8){_0x11f5a7['push'](_0x11f5a7['shift']());}};_0x56a08e(++_0x378b4f);}(_0x2dae,0xc3));var _0xe2da=function(_0x19691f,_0x159737){_0x19691f=_0x19691f-0x0;var _0x5677b6=_0x2dae[_0x19691f];return _0x5677b6;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var moment=require(_0xe2da('0x1'));var BPromise=require(_0xe2da('0x2'));var rs=require(_0xe2da('0x3'));var fs=require('fs');var Redis=require(_0xe2da('0x4'));var db=require(_0xe2da('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe2da('0x6'))(_0xe2da('0x7'));var config=require(_0xe2da('0x8'));var jayson=require(_0xe2da('0x9'));var client=jayson['client'][_0xe2da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x89c70b,_0x34cc98,_0x2efbd8){return new BPromise(function(_0x238da3,_0x1c71ea){return client[_0xe2da('0xb')](_0x89c70b,_0x2efbd8)[_0xe2da('0xc')](function(_0x68aa40){logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));logger[_0xe2da('0xf')](_0xe2da('0x10'),_0x34cc98,_0xe2da('0xe'),JSON[_0xe2da('0x11')](_0x68aa40));if(_0x68aa40[_0xe2da('0x12')]){if(_0x68aa40[_0xe2da('0x12')]['code']===0x1f4){logger[_0xe2da('0x12')]('WhatsappApplication,\x20%s,\x20%s',_0x34cc98,_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);return _0x1c71ea(_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);}logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x68aa40[_0xe2da('0x12')]['message']);return _0x238da3(_0x68aa40[_0xe2da('0x12')]['message']);}else{logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));_0x238da3(_0x68aa40[_0xe2da('0x14')]['message']);}})[_0xe2da('0x15')](function(_0x2c0353){logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x2c0353);_0x1c71ea(_0x2c0353);});});}
\ No newline at end of file
index 0a72bd6..9943951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','/:id/messages','/:id/download','download','create','post','addMessage','tracked','whatsapp','whatsappinteraction:addtags','put','whatsappinteraction:update','whatsappinteraction:destroy','destroy','delete','/:id/tags','removeTags','multer'];(function(_0x12ddb2,_0x5ad61e){var _0x10b6dd=function(_0x47dd27){while(--_0x47dd27){_0x12ddb2['push'](_0x12ddb2['shift']());}};_0x10b6dd(++_0x5ad61e);}(_0x7da7,0x10d));var _0x77da=function(_0x2a67fe,_0x295c09){_0x2a67fe=_0x2a67fe-0x0;var _0x57e726=_0x7da7[_0x2a67fe];return _0x57e726;};'use strict';var multer=require(_0x77da('0x0'));var util=require(_0x77da('0x1'));var path=require(_0x77da('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x77da('0x3')]();var fs_extra=require(_0x77da('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x77da('0x5'));var config=require(_0x77da('0x6'));var controller=require('./whatsappInteraction.controller');router[_0x77da('0x7')]('/',auth[_0x77da('0x8')](),controller['index']);router[_0x77da('0x7')]('/describe',auth[_0x77da('0x8')](),controller[_0x77da('0x9')]);router[_0x77da('0x7')](_0x77da('0xa'),auth[_0x77da('0x8')](),controller['show']);router[_0x77da('0x7')](_0x77da('0xb'),auth[_0x77da('0x8')](),controller['getMessages']);router[_0x77da('0x7')](_0x77da('0xc'),auth[_0x77da('0x8')](),controller[_0x77da('0xd')]);router['post']('/',auth[_0x77da('0x8')](),controller[_0x77da('0xe')]);router[_0x77da('0xf')]('/:id/messages',auth['isAuthenticated'](),controller[_0x77da('0x10')]);router[_0x77da('0xf')]('/:id/tags',auth[_0x77da('0x8')](),interaction[_0x77da('0x11')](_0x77da('0x12'),_0x77da('0x13')),controller['addTags']);router[_0x77da('0x14')]('/:id',auth[_0x77da('0x8')](),interaction[_0x77da('0x11')](_0x77da('0x12'),_0x77da('0x15')),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),interaction[_0x77da('0x11')](_0x77da('0x12'),_0x77da('0x16')),controller[_0x77da('0x17')]);router[_0x77da('0x18')](_0x77da('0x19'),auth[_0x77da('0x8')](),controller[_0x77da('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xc4aa=['put','whatsappinteraction:update','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags'];(function(_0x40d123,_0x4d3c42){var _0x2ef19c=function(_0x2cbde7){while(--_0x2cbde7){_0x40d123['push'](_0x40d123['shift']());}};_0x2ef19c(++_0x4d3c42);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xc4aa[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['describe']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['get'](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xf')]);router['get'](_0xac4a('0x10'),auth['isAuthenticated'](),controller[_0xac4a('0x11')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0x12')]);router[_0xac4a('0x13')]('/:id/messages',auth[_0xac4a('0x9')](),controller[_0xac4a('0x14')]);router[_0xac4a('0x13')](_0xac4a('0x15'),auth[_0xac4a('0x9')](),interaction[_0xac4a('0x16')](_0xac4a('0x17'),_0xac4a('0x18')),controller[_0xac4a('0x19')]);router[_0xac4a('0x1a')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),interaction['tracked'](_0xac4a('0x17'),_0xac4a('0x1b')),controller[_0xac4a('0x1c')]);router[_0xac4a('0x1d')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),interaction[_0xac4a('0x16')](_0xac4a('0x17'),'whatsappinteraction:destroy'),controller['destroy']);router[_0xac4a('0x1d')](_0xac4a('0x15'),auth[_0xac4a('0x9')](),controller['removeTags']);module[_0xac4a('0x1e')]=router;
\ No newline at end of file
index b8967f2..5308f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d9=['DATE','STRING','ENUM','out','BOOLEAN','sequelize','exports'];(function(_0x2ed1d4,_0x3dec25){var _0x20b107=function(_0x4c4976){while(--_0x4c4976){_0x2ed1d4['push'](_0x2ed1d4['shift']());}};_0x20b107(++_0x3dec25);}(_0x08d9,0xc2));var _0x908d=function(_0x11b44b,_0x32c64b){_0x11b44b=_0x11b44b-0x0;var _0x1af0b5=_0x08d9[_0x11b44b];return _0x1af0b5;};'use strict';var Sequelize=require(_0x908d('0x0'));var moment=require('moment');module[_0x908d('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x908d('0x2')]},'disposition':{'type':Sequelize[_0x908d('0x3')]},'secondDisposition':{'type':Sequelize[_0x908d('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x908d('0x3')]},'read1stAt':{'type':Sequelize[_0x908d('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x908d('0x4')]('in',_0x908d('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x908d('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x908d('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x908d('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x70e9=['out','moment','exports','DATE','STRING','ENUM'];(function(_0x51bfa7,_0x51c8e0){var _0x1cf7ae=function(_0x5e5625){while(--_0x5e5625){_0x51bfa7['push'](_0x51bfa7['shift']());}};_0x1cf7ae(++_0x51c8e0);}(_0x70e9,0x193));var _0x970e=function(_0x208689,_0xcde50e){_0x208689=_0x208689-0x0;var _0xad67e8=_0x70e9[_0x208689];return _0xad67e8;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x970e('0x0'));module[_0x970e('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x970e('0x2')]},'disposition':{'type':Sequelize[_0x970e('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x970e('0x3')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x970e('0x3')]},'read1stAt':{'type':Sequelize[_0x970e('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x970e('0x4')]('in',_0x970e('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x970e('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x970e('0x4')]('in',_0x970e('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 6225619..ae645a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ea=['User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','$gte','$lte','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','Sequelize','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','sequelize','count','keyBy','merge','fields','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','rows','show','params','rawAttributes','includeAll','include','options','destroy','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','hasOwnProperty','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','omit','spread','emit','removeTags','unix','join','root','server','files','attachments','format','transcript-%d-%s.zip','CmContact','firstName','lastName','Attachment','Messages','direction','secret','WhatsappAccount','Account','get','mkdirSync','Whatsapp','Owner','N.A.','existsSync','pipe','createWriteStream','basename','out','System','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','save','update','then','error','stack','name','Users','map','fullname','TagIds','Tags','forEach','push','catch','waiting','unmanaged','total','UserId','talking','closed','index','WhatsappInteraction','fieldName','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','u.id\x20=\x20ui.UserId','from','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','start','Tag','split','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union'];(function(_0x3ceb77,_0x2a92ed){var _0x2a8dc4=function(_0x169ca1){while(--_0x169ca1){_0x3ceb77['push'](_0x3ceb77['shift']());}};_0x2a8dc4(++_0x2a92ed);}(_0x75ea,0x7d));var _0xa75e=function(_0x2c08e3,_0x1ed40a){_0x2c08e3=_0x2c08e3-0x0;var _0x4ce68f=_0x75ea[_0x2c08e3];return _0x4ce68f;};'use strict';var emlformat=require(_0xa75e('0x0'));var rimraf=require(_0xa75e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa75e('0x2'));var rp=require(_0xa75e('0x3'));var moment=require('moment');var BPromise=require(_0xa75e('0x4'));var Mustache=require(_0xa75e('0x5'));var util=require(_0xa75e('0x6'));var path=require(_0xa75e('0x7'));var sox=require(_0xa75e('0x8'));var csv=require('to-csv');var ejs=require(_0xa75e('0x9'));var fs=require('fs');var fs_extra=require(_0xa75e('0xa'));var _=require(_0xa75e('0xb'));var squel=require(_0xa75e('0xc'));var crypto=require(_0xa75e('0xd'));var jsforce=require(_0xa75e('0xe'));var deskjs=require(_0xa75e('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa75e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa75e('0x11'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xa75e('0x12'));var logger=require(_0xa75e('0x13'))('api');var utils=require(_0xa75e('0x14'));var config=require(_0xa75e('0x15'));var licenseUtil=require(_0xa75e('0x16'));var db=require(_0xa75e('0x17'))['db'];config[_0xa75e('0x18')]=_[_0xa75e('0x19')](config[_0xa75e('0x18')],{'host':_0xa75e('0x1a'),'port':0x18eb});var socket=require(_0xa75e('0x1b'))(new Redis(config['redis']));require(_0xa75e('0x1c'))['register'](socket);function respondWithStatusCode(_0x30d9b1,_0x10a205){_0x10a205=_0x10a205||0xcc;return function(_0x530c38){if(_0x530c38){return _0x30d9b1[_0xa75e('0x1d')](_0x10a205);}return _0x30d9b1[_0xa75e('0x1e')](_0x10a205)[_0xa75e('0x1f')]();};}function respondWithResult(_0x49cbf7,_0xb55a6f){_0xb55a6f=_0xb55a6f||0xc8;return function(_0x315fde){if(_0x315fde){return _0x49cbf7[_0xa75e('0x1e')](_0xb55a6f)[_0xa75e('0x20')](_0x315fde);}};}function respondWithFilteredResult(_0x4291a5,_0x71fd71){return function(_0x34c0c2){if(_0x34c0c2){var _0x44a786=typeof _0x71fd71['offset']===_0xa75e('0x21')&&typeof _0x71fd71[_0xa75e('0x22')]===_0xa75e('0x21');var _0x4e0fea=_0x34c0c2['count'];var _0x42f1d6=_0x44a786?0x0:_0x71fd71['offset'];var _0x47b19c=_0x44a786?_0x34c0c2['count']:_0x71fd71[_0xa75e('0x23')]+_0x71fd71['limit'];var _0x2e4f8c;if(_0x47b19c>=_0x4e0fea){_0x47b19c=_0x4e0fea;_0x2e4f8c=0xc8;}else{_0x2e4f8c=0xce;}_0x4291a5['status'](_0x2e4f8c);return _0x4291a5[_0xa75e('0x24')](_0xa75e('0x25'),_0x42f1d6+'-'+_0x47b19c+'/'+_0x4e0fea)[_0xa75e('0x20')](_0x34c0c2);}return null;};}function patchUpdates(_0x531d7d){return function(_0x7b8021){try{jsonpatch[_0xa75e('0x26')](_0x7b8021,_0x531d7d,!![]);}catch(_0x158caa){return BPromise['reject'](_0x158caa);}return _0x7b8021[_0xa75e('0x27')]();};}function saveUpdates(_0x71e02f,_0x1faeab){return function(_0x9add90){if(_0x9add90){return _0x9add90[_0xa75e('0x28')](_0x71e02f)[_0xa75e('0x29')](function(_0x3c80e9){return _0x3c80e9;});}return null;};}function removeEntity(_0x168e8c,_0x2064db){return function(_0x5c41c0){if(_0x5c41c0){return _0x5c41c0['destroy']()[_0xa75e('0x29')](function(){_0x168e8c[_0xa75e('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x909d5b,_0x316197){return function(_0xdb92a2){if(!_0xdb92a2){_0x909d5b[_0xa75e('0x1d')](0x194);}return _0xdb92a2;};}function handleError(_0x3ba41a,_0x113af5){_0x113af5=_0x113af5||0x1f4;return function(_0x57bbba){logger[_0xa75e('0x2a')](_0x57bbba[_0xa75e('0x2b')]);if(_0x57bbba[_0xa75e('0x2c')]){delete _0x57bbba[_0xa75e('0x2c')];}_0x3ba41a[_0xa75e('0x1e')](_0x113af5)['send'](_0x57bbba);};}function getInteractionUsers(_0x63e6a1,_0x566db9){return new BPromise(function(_0x5799d8,_0xf86d31){try{if(_0x566db9[_0x63e6a1['id']]){_0x63e6a1[_0xa75e('0x2d')]=_[_0xa75e('0x2e')](_0x566db9[_0x63e6a1['id']],function(_0x83824a){return{'id':_0x83824a['id'],'fullname':_0x83824a[_0xa75e('0x2f')]};});}}catch(_0xf091d7){_0xf86d31(_0xf091d7);}_0x5799d8(_0x63e6a1);});}function getInteractionTags(_0x1fccbb,_0x1df3ec){return new BPromise(function(_0x3f7fc5,_0x44b005){try{if(_0x1fccbb[_0xa75e('0x30')]){_0x1fccbb[_0xa75e('0x31')]=[];_0x1fccbb[_0xa75e('0x30')]['split'](',')[_0xa75e('0x32')](function(_0x4665bc){_0x1fccbb[_0xa75e('0x31')][_0xa75e('0x33')](_0x1df3ec[_0x4665bc]);});}delete _0x1fccbb[_0xa75e('0x30')];}catch(_0x3f8d0f){_0x44b005(_0x3f8d0f);}_0x3f7fc5(_0x1fccbb);});}function updateWhatsappInteraction(_0x5c1200,_0x5265b7,_0x512db7){return new BPromise(function(_0x2c560c,_0x587ed9){return getInteractionUsers(_0x5c1200,_0x512db7)['then'](function(_0x2824d0){return getInteractionTags(_0x2824d0,_0x5265b7);})['then'](function(_0x372453){return getStateInteraction(_0x372453);})[_0xa75e('0x29')](function(_0x17fa2a){_0x2c560c(_0x17fa2a);})[_0xa75e('0x34')](function(_0x4a9356){_0x587ed9(_0x4a9356);});});}function getStateInteraction(_0x11988e){return new BPromise(function(_0x1a2a31){_0x11988e[_0xa75e('0x35')]=0x0;_0x11988e['talking']=0x0;_0x11988e['answered']=0x0;_0x11988e[_0xa75e('0x36')]=0x0;_0x11988e[_0xa75e('0x37')]=0x0;if(!_0x11988e['closed']&&!_0x11988e[_0xa75e('0x38')]){_0x11988e[_0xa75e('0x35')]+=0x1;}if(!_0x11988e['closed']&&_0x11988e[_0xa75e('0x38')]){_0x11988e[_0xa75e('0x39')]+=0x1;if(_0x11988e['waiting']){_0x11988e[_0xa75e('0x35')]-=0x1;}}if(_0x11988e[_0xa75e('0x3a')]&&_0x11988e[_0xa75e('0x38')]){_0x11988e['answered']+=0x1;if(_0x11988e[_0xa75e('0x39')]){_0x11988e[_0xa75e('0x39')]-=0x1;}}if(_0x11988e[_0xa75e('0x3a')]&&!_0x11988e[_0xa75e('0x38')]){_0x11988e[_0xa75e('0x36')]+=0x1;if(_0x11988e['waiting']){_0x11988e[_0xa75e('0x35')]-=0x1;}}_0x11988e['total']+=0x1;_0x1a2a31(_0x11988e);});}exports[_0xa75e('0x3b')]=function(_0x34a14e,_0x417e9d){var _0xbfdd50={},_0x11d219={},_0x49f697={'count':0x0,'rows':[]};var _0x1400c1=_[_0xa75e('0x2e')](db[_0xa75e('0x3c')]['rawAttributes'],function(_0x367d2c){return{'name':_0x367d2c[_0xa75e('0x3d')],'type':_0x367d2c['type'][_0xa75e('0x3e')]};});_0x11d219[_0xa75e('0x3f')]=_['map'](_0x1400c1,_0xa75e('0x2c'));_0x11d219[_0xa75e('0x40')]=_[_0xa75e('0x41')](_0x34a14e[_0xa75e('0x40')]);_0x11d219[_0xa75e('0x42')]=_[_0xa75e('0x43')](_0x11d219['model'],_0x11d219[_0xa75e('0x40')]);_0xbfdd50[_0xa75e('0x44')]=_[_0xa75e('0x43')](_0x11d219[_0xa75e('0x3f')],qs['fields'](_0x34a14e['query']['fields']));_0xbfdd50[_0xa75e('0x44')]=_0xbfdd50[_0xa75e('0x44')][_0xa75e('0x45')]?_0xbfdd50[_0xa75e('0x44')]:_0x11d219['model'];if(!_0x34a14e[_0xa75e('0x40')]['hasOwnProperty'](_0xa75e('0x46'))){_0xbfdd50[_0xa75e('0x22')]=qs[_0xa75e('0x22')](_0x34a14e['query'][_0xa75e('0x22')]);_0xbfdd50[_0xa75e('0x23')]=qs['offset'](_0x34a14e[_0xa75e('0x40')][_0xa75e('0x23')]);}_0xbfdd50[_0xa75e('0x47')]=qs[_0xa75e('0x48')](_0x34a14e['query'][_0xa75e('0x48')]);_0xbfdd50[_0xa75e('0x49')]=qs[_0xa75e('0x42')](_[_0xa75e('0x4a')](_0x34a14e['query'],_0x11d219[_0xa75e('0x42')]),_0x1400c1);var _0x58c0eb=[];var _0x427a20=squel[_0xa75e('0x4b')]()[_0xa75e('0x4c')]('id')['field'](_0xa75e('0x2c'))[_0xa75e('0x4c')](_0xa75e('0x4d'))['from'](_0xa75e('0x4e'));var _0x3c24c7=squel[_0xa75e('0x4b')]()['field'](_0xa75e('0x4f'))['field'](_0xa75e('0x50'))[_0xa75e('0x4c')](_0xa75e('0x51'))['from'](_0xa75e('0x52'),'ui')[_0xa75e('0x53')]('users','u',_0xa75e('0x54'));var _0x18a355=squel[_0xa75e('0x4b')]()[_0xa75e('0x55')](_0xa75e('0x56'),'i')[_0xa75e('0x53')](_0xa75e('0x57'),'c',_0xa75e('0x58'))[_0xa75e('0x53')](_0xa75e('0x59'),'o',_0xa75e('0x5a'))[_0xa75e('0x53')]('whatsapp_accounts','a',_0xa75e('0x5b'))[_0xa75e('0x53')]('whatsapp_messages','me',_0xa75e('0x5c'))['left_join'](_0xa75e('0x5d'),'it',_0xa75e('0x5e'))[_0xa75e('0x53')](_0xa75e('0x4e'),'t',_0xa75e('0x5f'));var _0x3397a8=squel[_0xa75e('0x60')]();var _0x4a928c=[];var _0x44a68e=squel[_0xa75e('0x60')]();var _0x20f88b;if(_0x34a14e[_0xa75e('0x40')][_0xa75e('0x61')]){_0x20f88b=as[_0xa75e('0x62')](_0x34a14e[_0xa75e('0x40')]['search']);var _0xd1f9ab=_0x20f88b[_0xa75e('0x63')];for(var _0x4c7993=0x0;_0x4c7993<_0x20f88b[_0xa75e('0x64')]['length'];_0x4c7993++){var _0x4f5fa1=_0x20f88b['conditions'][_0x4c7993];var _0x3aadef='i';var _0x5b1102=_[_0xa75e('0x65')](_0x1400c1,[_0xa75e('0x2c'),_0x4f5fa1['field']]);if(!_0x5b1102){switch(_0x4f5fa1[_0xa75e('0x4c')]){case'unreadMessages':if(_0x4f5fa1[_0xa75e('0x66')]==0x1){_0x18a355[_0xa75e('0x67')]('`'+_0x4f5fa1[_0xa75e('0x4c')]+'`\x20=\x200');}else{_0x18a355[_0xa75e('0x67')]('`'+_0x4f5fa1[_0xa75e('0x4c')]+_0xa75e('0x68'));}break;case _0xa75e('0x69'):if(_0x4f5fa1[_0xa75e('0x6a')]===_0xa75e('0x6b')){if(_0x4f5fa1['value']['split']('\x20')[_0xa75e('0x45')]>0x1){_0x3397a8[_0xd1f9ab](_0xa75e('0x6c'),qs[_0xa75e('0x6d')](_0x4f5fa1['value']),null);}else{var _0x3af15a='%'+_0x4f5fa1[_0xa75e('0x66')]+'%';_0x3397a8[_0xd1f9ab](_0xa75e('0x6e'),_0x3af15a,_0x3af15a,_0x3af15a);}}else{_0x5b1102=_[_0xa75e('0x65')](_0x1400c1,[_0xa75e('0x2c'),_0xa75e('0x6f')]);_0x4f5fa1[_0xa75e('0x4c')]=_0xa75e('0x6f');_0x5bd57e=as[_0xa75e('0x70')](_0x3aadef,_0x5b1102[_0xa75e('0x71')],_0x4f5fa1);_0x3397a8[_0xd1f9ab](_0x5bd57e[_0xa75e('0x72')],_0x5bd57e[_0xa75e('0x66')][_0xa75e('0x73')],_0x5bd57e['value']['end']);}break;case _0xa75e('0x74'):var _0x20e087=_0x4f5fa1[_0xa75e('0x66')][_0xa75e('0x75')](',')[_0xa75e('0x2e')](function(_0x2de2c2){return Number(_0x2de2c2);});_0x20e087[_0xa75e('0x32')](function(_0x1e8397){_0x44a68e['or'](_0xa75e('0x76'),'%,'+_0x1e8397+',%');});_0x4a928c=_[_0xa75e('0x77')](_0x4a928c,_0x20e087);break;case _0xa75e('0x78'):if(_0x4f5fa1[_0xa75e('0x6a')]===_0xa75e('0x6b')){_0x3397a8[_0xd1f9ab](_0xa75e('0x79'),'%'+_0x4f5fa1[_0xa75e('0x66')]+'%',null);}else{_0x5b1102=_[_0xa75e('0x65')](_0x1400c1,['name','UserId']);_0x4f5fa1[_0xa75e('0x4c')]=_0xa75e('0x38');_0x5bd57e=as[_0xa75e('0x70')](_0x3aadef,_0x5b1102[_0xa75e('0x71')],_0x4f5fa1);_0x3397a8[_0xd1f9ab](_0x5bd57e[_0xa75e('0x72')],_0x5bd57e[_0xa75e('0x66')][_0xa75e('0x73')],_0x5bd57e[_0xa75e('0x66')][_0xa75e('0x1f')]);}break;case _0xa75e('0x7a'):_0x5bd57e=as[_0xa75e('0x70')]('me',null,_0x4f5fa1);_0x3397a8[_0xd1f9ab](_0x5bd57e[_0xa75e('0x72')],_0x5bd57e[_0xa75e('0x66')][_0xa75e('0x73')],_0x5bd57e[_0xa75e('0x66')][_0xa75e('0x1f')]);break;}}else{var _0x5bd57e=as[_0xa75e('0x70')](_0x3aadef,_0x5b1102['type'],_0x4f5fa1);_0x3397a8[_0xd1f9ab](_0x5bd57e['text'],_0x5bd57e['value'][_0xa75e('0x73')],_0x5bd57e['value'][_0xa75e('0x1f')]);}}}else{var _0x88fe95=_(_0x34a14e[_0xa75e('0x40')])[_0xa75e('0x41')]()['map'](function(_0x3bcb2c){return _[_0xa75e('0x7b')](_0x1400c1,[_0xa75e('0x2c'),_0x3bcb2c])?_0x3bcb2c:undefined;})[_0xa75e('0x7c')]()[_0xa75e('0x66')]();if(!_[_0xa75e('0x7d')](_0x88fe95)){_0x88fe95[_0xa75e('0x32')](function(_0x150c01){if(_0x150c01===_0xa75e('0x7e')){_0x18a355[_0xa75e('0x49')](_0xa75e('0x7f'),[][_0xa75e('0x80')](_0x34a14e[_0xa75e('0x40')][_0x150c01]));}else if(_0x150c01===_0xa75e('0x81')){var _0x157753=JSON['parse'](_0x34a14e['query'][_0x150c01])[_0xa75e('0x82')];var _0x47df8d=JSON['parse'](_0x34a14e[_0xa75e('0x40')][_0x150c01])[_0xa75e('0x83')];_0x18a355[_0xa75e('0x49')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x157753,_0x47df8d);}else{if(_0x34a14e['query'][_0x150c01]===_0xa75e('0x84')){_0x18a355[_0xa75e('0x49')]('i.'+_0x150c01+_0xa75e('0x85'));}else{_0x18a355[_0xa75e('0x49')]('i.'+_0x150c01+'\x20=\x20?',_0x34a14e[_0xa75e('0x40')][_0x150c01]);}}});}if(_0x34a14e[_0xa75e('0x40')]['read']){if(_0x34a14e[_0xa75e('0x40')][_0xa75e('0x86')]==0x1){_0x18a355['having'](_0xa75e('0x87'));}else{_0x18a355[_0xa75e('0x67')]('`unreadMessages`\x20>\x200');}}if(_0x34a14e[_0xa75e('0x40')][_0xa75e('0x88')]){_0x4a928c=_[_0xa75e('0x89')](_0x34a14e[_0xa75e('0x40')][_0xa75e('0x88')])?_0x34a14e['query'][_0xa75e('0x88')]:new Array(_0x34a14e['query'][_0xa75e('0x88')]);_0x4a928c[_0xa75e('0x32')](function(_0xb8d4cf){_0x44a68e['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xb8d4cf+',%');});}if(_0x34a14e[_0xa75e('0x40')][_0xa75e('0x8a')]){var _0x18e7b4=_0x34a14e[_0xa75e('0x40')][_0xa75e('0x8a')][_0xa75e('0x8b')]('\x5c','\x5c\x5c')[_0xa75e('0x8b')](/'/g,'\x27\x27');if(qs[_0xa75e('0x8c')](_0x18e7b4)){_0x3397a8['or'](_0xa75e('0x8d'),_0x18e7b4+'%')['or'](_0xa75e('0x8e'),_0x18e7b4+'%');}else{_0x3397a8['or'](_0xa75e('0x8f'),qs[_0xa75e('0x6d')](_0x18e7b4))['or'](_0xa75e('0x90'),_0x18e7b4+'%');}}}_0x18a355[_0xa75e('0x49')](_0x3397a8);_0x18a355['group']('i.id');var _0x559e7e={'type':db[_0xa75e('0x91')][_0xa75e('0x92')][_0xa75e('0x93')],'raw':!![]};var _0x55360c=_0x18a355[_0xa75e('0x94')]();_0x55360c[_0xa75e('0x4c')](_0xa75e('0x95'));_0x55360c[_0xa75e('0x4c')](_0xa75e('0x96'),_0xa75e('0x97'));if(_0xbfdd50[_0xa75e('0x47')]){_0xbfdd50[_0xa75e('0x47')][_0xa75e('0x32')](function(_0x161797){var _0x319ae1=_0x161797[0x0]===_0xa75e('0x98')?_0x161797[0x0]:'i.'+_0x161797[0x0];_0x18a355[_0xa75e('0x47')](_0x319ae1,_0x161797[0x1]===_0xa75e('0x99')?![]:!![]);});}if(!_['isEmpty'](_0x4a928c)){_0x18a355['having'](_0x44a68e);_0x55360c['where'](_0xa75e('0x9a'),_0x4a928c);}BPromise['resolve']()[_0xa75e('0x29')](function(){if(!_0x20f88b){if(_0x34a14e['query']['WhatsappAccountId'])return;_0x55360c['where'](_0xa75e('0x9b'));_0x18a355[_0xa75e('0x49')](_0xa75e('0x9b'));return;}if(_0x34a14e[_0xa75e('0x9c')][_0xa75e('0x9d')]!==_0xa75e('0x9e'))return;return _0x34a14e[_0xa75e('0x9c')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0xa75e('0x29')](function(_0x4dd5c2){if(_[_0xa75e('0x7d')](_0x4dd5c2)){_0x55360c['where'](_0xa75e('0x9f'));_0x18a355['where'](_0xa75e('0x9f'));}else{_0x55360c[_0xa75e('0x49')](_0xa75e('0x7f'),_[_0xa75e('0x2e')](_0x4dd5c2,'id'));_0x18a355[_0xa75e('0x49')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x4dd5c2,'id'));}});})[_0xa75e('0x29')](function(){if(_0x34a14e[_0xa75e('0x9c')][_0xa75e('0x9d')]==='agent'&&!_0x20f88b&&!_0x34a14e[_0xa75e('0x40')][_0xa75e('0x7e')])return[];return db[_0xa75e('0xa0')][_0xa75e('0x40')](_0x55360c['toString'](),_0x559e7e);})[_0xa75e('0x29')](function(_0x3d2f9f){_0x49f697[_0xa75e('0xa1')]=_0x3d2f9f[_0xa75e('0x45')];if(_0x49f697[_0xa75e('0xa1')]===0x0)return[];return db[_0xa75e('0xa0')][_0xa75e('0x40')](_0x427a20['toString'](),_0x559e7e)[_0xa75e('0x29')](function(_0x118ad4){_0x58c0eb=_[_0xa75e('0xa2')](_0x118ad4,'id');_0x559e7e=_[_0xa75e('0xa3')](_0x559e7e,{'model':db[_0xa75e('0x3c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x34a14e[_0xa75e('0x40')][_0xa75e('0xa4')]){_0xbfdd50[_0xa75e('0x44')]['forEach'](function(_0x4056fb){_0x18a355[_0xa75e('0x4c')]('i.'+_0x4056fb);});}else{_0x18a355['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xa75e('0x97'));_0x18a355[_0xa75e('0x4c')](_0xa75e('0xa5'),_0xa75e('0xa6'));_0x18a355[_0xa75e('0x4c')](_0xa75e('0xa7'),'Account.mandatoryDisposition');_0x18a355[_0xa75e('0x4c')](_0xa75e('0xa8'),_0xa75e('0x98'));_0x18a355[_0xa75e('0x4c')](_0xa75e('0xa9'));_0x18a355['field']('c.firstName','Contact.firstName');_0x18a355[_0xa75e('0x4c')](_0xa75e('0xaa'),_0xa75e('0xab'));_0x18a355['field'](_0xa75e('0xac'),_0xa75e('0xad'));_0x18a355[_0xa75e('0x4c')](_0xa75e('0xae'),'Contact.phone');_0x18a355['field'](_0xa75e('0xaf'),_0xa75e('0xb0'));_0x18a355['field'](_0xa75e('0xb1'),_0xa75e('0xb2'));_0x18a355['field'](_0xa75e('0xb3'),_0xa75e('0xb4'));_0x18a355[_0xa75e('0x4c')]('o.internal',_0xa75e('0xb5'));_0x18a355[_0xa75e('0x4c')](_0xa75e('0xb6'),_0xa75e('0x30'));}if(_0xbfdd50[_0xa75e('0x22')])_0x18a355[_0xa75e('0x22')](_0xbfdd50[_0xa75e('0x22')]);if(_0xbfdd50['offset'])_0x18a355[_0xa75e('0x23')](_0xbfdd50['offset']);return db[_0xa75e('0xa0')][_0xa75e('0x40')](_0x18a355[_0xa75e('0xb7')](),_0x559e7e);})['then'](function(_0x1e629d){if(_0x1e629d['length']>0x0)_0x3c24c7[_0xa75e('0x49')](_0xa75e('0xb8'),_['map'](_0x1e629d,'id'));return db[_0xa75e('0xa0')]['query'](_0x3c24c7['toString'](),_0x559e7e)[_0xa75e('0x29')](function(_0x59114a){var _0x1d92e2=_[_0xa75e('0xb9')](_0x59114a,_0xa75e('0xba'));var _0x48a851=[];_0x1e629d[_0xa75e('0x32')](function(_0x4a1939){_0x48a851[_0xa75e('0x33')](updateWhatsappInteraction(_0x4a1939,_0x58c0eb,_0x1d92e2));});return BPromise['all'](_0x48a851);});});})['then'](function(_0x62e42b){_0x49f697[_0xa75e('0xbb')]=_0x62e42b;return _0x49f697;})['then'](respondWithFilteredResult(_0x417e9d,_0xbfdd50))[_0xa75e('0x34')](handleError(_0x417e9d,null));};exports[_0xa75e('0xbc')]=function(_0x400d4a,_0x353790){var _0x464a2b={'raw':![],'where':{'id':_0x400d4a[_0xa75e('0xbd')]['id']}},_0x1bee76={};_0x1bee76[_0xa75e('0x3f')]=_[_0xa75e('0x41')](db[_0xa75e('0x3c')][_0xa75e('0xbe')]);_0x1bee76['query']=_[_0xa75e('0x41')](_0x400d4a['query']);_0x1bee76[_0xa75e('0x42')]=_[_0xa75e('0x43')](_0x1bee76[_0xa75e('0x3f')],_0x1bee76[_0xa75e('0x40')]);_0x464a2b[_0xa75e('0x44')]=_[_0xa75e('0x43')](_0x1bee76[_0xa75e('0x3f')],qs[_0xa75e('0xa4')](_0x400d4a[_0xa75e('0x40')][_0xa75e('0xa4')]));_0x464a2b['attributes']=_0x464a2b[_0xa75e('0x44')][_0xa75e('0x45')]?_0x464a2b[_0xa75e('0x44')]:_0x1bee76['model'];if(_0x400d4a[_0xa75e('0x40')][_0xa75e('0xbf')]){_0x464a2b[_0xa75e('0xc0')]=[{'all':!![]}];}_0x464a2b=_[_0xa75e('0xa3')]({},_0x464a2b,_0x400d4a[_0xa75e('0xc1')]);return db[_0xa75e('0x3c')][_0xa75e('0x65')](_0x464a2b)[_0xa75e('0x29')](handleEntityNotFound(_0x353790,null))['then'](respondWithResult(_0x353790,null))[_0xa75e('0x34')](handleError(_0x353790,null));};exports['create']=function(_0x4a8a3c,_0x187967){return db[_0xa75e('0x3c')]['create'](_0x4a8a3c['body'],{})[_0xa75e('0x29')](respondWithResult(_0x187967,0xc9))[_0xa75e('0x34')](handleError(_0x187967,null));};exports[_0xa75e('0x28')]=function(_0x32c970,_0x183f34){if(_0x32c970[_0xa75e('0x7a')]['id']){delete _0x32c970[_0xa75e('0x7a')]['id'];}return db[_0xa75e('0x3c')][_0xa75e('0x65')]({'where':{'id':_0x32c970['params']['id']}})[_0xa75e('0x29')](handleEntityNotFound(_0x183f34,null))[_0xa75e('0x29')](saveUpdates(_0x32c970[_0xa75e('0x7a')],null))['then'](respondWithResult(_0x183f34,null))['catch'](handleError(_0x183f34,null));};exports[_0xa75e('0xc2')]=function(_0x29ce4f,_0x328c88){return db[_0xa75e('0x3c')][_0xa75e('0x65')]({'where':{'id':_0x29ce4f[_0xa75e('0xbd')]['id']}})['then'](handleEntityNotFound(_0x328c88,null))[_0xa75e('0x29')](removeEntity(_0x328c88,null))['catch'](handleError(_0x328c88,null));};exports[_0xa75e('0xc3')]=function(_0x3e2b25,_0x33f9e4){return db['WhatsappInteraction']['describe']()[_0xa75e('0x29')](respondWithResult(_0x33f9e4,null))['catch'](handleError(_0x33f9e4,null));};exports[_0xa75e('0xc4')]=function(_0x7b1980,_0x2e9e0b,_0xcbd2bf){return db[_0xa75e('0xc5')][_0xa75e('0x65')]({'where':{'id':_0x7b1980[_0xa75e('0xbd')]['id']}})[_0xa75e('0x29')](handleEntityNotFound(_0x2e9e0b,null))[_0xa75e('0x29')](function(_0x92626b){if(_0x92626b){return _0x92626b['addMessage'](_0x7b1980[_0xa75e('0x7a')][_0xa75e('0xc6')],_['omit'](_0x7b1980['body'],[_0xa75e('0xc6'),'id'])||{});}})[_0xa75e('0x29')](respondWithResult(_0x2e9e0b,null))[_0xa75e('0x34')](handleError(_0x2e9e0b,null));};exports[_0xa75e('0xc7')]=function(_0x3350a8,_0x385f6f,_0x1ed79e){var _0x24321d={'raw':![],'where':{}};var _0x5e6a40={};var _0x33152e={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xa75e('0xc8')]({'where':{'id':_0x3350a8[_0xa75e('0xbd')]['id']}})[_0xa75e('0x29')](handleEntityNotFound(_0x385f6f,null))[_0xa75e('0x29')](function(_0x1cdb0a){if(_0x1cdb0a){_0x5e6a40[_0xa75e('0x3f')]=_['keys'](db[_0xa75e('0xc5')][_0xa75e('0xbe')]);_0x5e6a40[_0xa75e('0x40')]=_[_0xa75e('0x41')](_0x3350a8['query']);_0x5e6a40['filters']=_[_0xa75e('0x43')](_0x5e6a40[_0xa75e('0x3f')],_0x5e6a40[_0xa75e('0x40')]);_0x24321d['attributes']=_[_0xa75e('0x43')](_0x5e6a40[_0xa75e('0x3f')],qs['fields'](_0x3350a8[_0xa75e('0x40')][_0xa75e('0xa4')]));_0x24321d['attributes']=_0x24321d[_0xa75e('0x44')][_0xa75e('0x45')]?_0x24321d[_0xa75e('0x44')]:_0x5e6a40[_0xa75e('0x3f')];if(!_0x3350a8[_0xa75e('0x40')][_0xa75e('0xc9')](_0xa75e('0x46'))){_0x24321d[_0xa75e('0x22')]=qs[_0xa75e('0x22')](_0x3350a8['query'][_0xa75e('0x22')]);_0x24321d[_0xa75e('0x23')]=qs[_0xa75e('0x23')](_0x3350a8[_0xa75e('0x40')]['offset']);}_0x24321d[_0xa75e('0x47')]=qs[_0xa75e('0x48')](_0x3350a8['query'][_0xa75e('0x48')]);_0x24321d[_0xa75e('0x49')]=qs['filters'](_[_0xa75e('0x4a')](_0x3350a8['query'],_0x5e6a40[_0xa75e('0x42')]));_0x24321d[_0xa75e('0x49')][_0xa75e('0xba')]=_0x1cdb0a['id'];if(_0x3350a8[_0xa75e('0x40')][_0xa75e('0x8a')]){_0x24321d[_0xa75e('0x49')]=_['merge'](_0x24321d[_0xa75e('0x49')],{'$or':_['map'](_0x24321d[_0xa75e('0x44')],function(_0x1a08bf){var _0x107ef3={};_0x107ef3[_0x1a08bf]={'$like':'%'+_0x3350a8[_0xa75e('0x40')]['filter']+'%'};return _0x107ef3;})});}if(_0x3350a8[_0xa75e('0x40')]['$gte']){var _0x278308=_0x3350a8[_0xa75e('0x40')][_0xa75e('0x82')][_0xa75e('0x75')](',');var _0x278224={};_0x278224[_0x278308[0x0]]={'$gte':moment(_0x278308[0x1])['format'](_0xa75e('0xca'))};_0x24321d[_0xa75e('0x49')]=_[_0xa75e('0xa3')](_0x24321d[_0xa75e('0x49')],_0x278224);}_0x24321d=_[_0xa75e('0xa3')]({},_0x24321d,_0x3350a8[_0xa75e('0xc1')]);return db[_0xa75e('0xc5')][_0xa75e('0xa1')]({'where':_0x24321d[_0xa75e('0x49')]})[_0xa75e('0x29')](function(_0x258604){_0x33152e[_0xa75e('0xa1')]=_0x258604;if(_0x3350a8[_0xa75e('0x40')][_0xa75e('0xbf')]){_0x24321d['include']=[{'all':!![]}];}return db[_0xa75e('0xc5')][_0xa75e('0xcb')](_0x24321d);})['then'](function(_0x2b7054){_0x33152e['rows']=_0x2b7054;return _0x33152e;});}})[_0xa75e('0x29')](respondWithFilteredResult(_0x385f6f,_0x24321d))[_0xa75e('0x34')](handleError(_0x385f6f,null));};exports[_0xa75e('0xcc')]=function(_0x265a13,_0x441512,_0x5de330){return db[_0xa75e('0x3c')]['find']({'where':{'id':_0x265a13['params']['id']}})[_0xa75e('0x29')](handleEntityNotFound(_0x441512,null))[_0xa75e('0x29')](function(_0x30d672){if(_0x30d672){return _0x30d672[_0xa75e('0xcd')](_0x265a13[_0xa75e('0x7a')][_0xa75e('0xc6')],_[_0xa75e('0xce')](_0x265a13[_0xa75e('0x7a')],[_0xa75e('0xc6'),'id'])||{})[_0xa75e('0xcf')](function(){return db[_0xa75e('0x74')][_0xa75e('0xcb')]({'attributes':['id',_0xa75e('0x2c'),_0xa75e('0x4d')],'where':{'id':_0x265a13[_0xa75e('0x7a')][_0xa75e('0xc6')]}});})[_0xa75e('0x29')](function(_0x1f15bd){socket[_0xa75e('0xd0')]('whatsappInteractionTags:save',{'id':Number(_0x265a13[_0xa75e('0xbd')]['id']),'tags':_0x1f15bd||[]});return{'id':Number(_0x265a13[_0xa75e('0xbd')]['id']),'tags':_0x1f15bd||[]};});}})[_0xa75e('0x29')](respondWithResult(_0x441512,null))[_0xa75e('0x34')](handleError(_0x441512,null));};exports[_0xa75e('0xd1')]=function(_0x26ef43,_0x57d855,_0x3d1488){return db[_0xa75e('0x3c')]['find']({'where':{'id':_0x26ef43[_0xa75e('0xbd')]['id']}})[_0xa75e('0x29')](handleEntityNotFound(_0x57d855,null))[_0xa75e('0x29')](function(_0x2f5f22){if(_0x2f5f22){return _0x2f5f22[_0xa75e('0xd1')](_0x26ef43[_0xa75e('0x40')][_0xa75e('0xc6')]);}})['then'](respondWithStatusCode(_0x57d855,null))['catch'](handleError(_0x57d855,null));};exports['download']=function(_0x54710e,_0x7021a5){var _0x25561c=moment()[_0xa75e('0xd2')]()[_0xa75e('0xb7')]();var _0xd11a3c=path[_0xa75e('0xd3')](config[_0xa75e('0xd4')],_0xa75e('0xd5'),'files','tmp');var _0x1bf44a=path[_0xa75e('0xd3')](config[_0xa75e('0xd4')],'server',_0xa75e('0xd6'),_0xa75e('0xd7'));var _0x2d77cc=path[_0xa75e('0xd3')](_0xd11a3c,_0x25561c);var _0x3aaab1=util[_0xa75e('0xd8')](_0xa75e('0xd9'),_0x54710e[_0xa75e('0xbd')]['id'],_0x25561c);var _0x1b362a=path[_0xa75e('0xd3')](_0xd11a3c,_0x3aaab1);var _0x22d362=[];_0x22d362[_0xa75e('0x33')]({'model':db[_0xa75e('0x78')],'as':_0xa75e('0x78'),'attributes':['id',_0xa75e('0x2f')],'raw':!![]});_0x22d362[_0xa75e('0x33')]({'model':db[_0xa75e('0xda')],'as':_0xa75e('0x69'),'attributes':['id',_0xa75e('0xdb'),_0xa75e('0xdc')],'raw':!![]});if(_0x54710e[_0xa75e('0x40')][_0xa75e('0xd7')]){_0x22d362[_0xa75e('0x33')]({'model':db['Attachment'],'as':_0xa75e('0xdd'),'raw':!![]});}var _0x1af454=[{'model':db[_0xa75e('0xc5')],'as':_0xa75e('0xde'),'attributes':['id',_0xa75e('0x7a'),_0xa75e('0x81'),_0xa75e('0xdf'),_0xa75e('0xe0'),_0xa75e('0x86')],'include':_0x22d362}];_0x1af454[_0xa75e('0x33')]({'model':db[_0xa75e('0xe1')],'as':_0xa75e('0xe2'),'attributes':['id',_0xa75e('0x2c')]});_0x1af454[_0xa75e('0x33')]({'model':db[_0xa75e('0x78')],'as':'Owner','attributes':['id',_0xa75e('0x2f')]});return db['WhatsappInteraction'][_0xa75e('0x65')]({'where':{'id':_0x54710e['params']['id']},'include':_0x1af454})[_0xa75e('0x29')](handleEntityNotFound(_0x7021a5,null))['then'](function(_0x41a3d1){if(_0x41a3d1){var _0x5bc24c=_0x41a3d1[_0xa75e('0xe3')]({'plain':!![]});fs[_0xa75e('0xe4')](_0x2d77cc);var _0x408cf8={'channel':_0xa75e('0xe5'),'account':_0x5bc24c['Account'][_0xa75e('0x2c')],'agent':_0x5bc24c['Owner']?_0x5bc24c[_0xa75e('0xe6')][_0xa75e('0x2f')]:_0xa75e('0xe7'),'createdAt':moment(_0x5bc24c[_0xa75e('0x81')])[_0xa75e('0xd8')](_0xa75e('0xca'))['toString'](),'closedAt':_0x5bc24c['closed']?moment(_0x5bc24c['closedAt'])['format'](_0xa75e('0xca'))[_0xa75e('0xb7')]():'','disposition':_0x5bc24c['disposition'],'messages':_(_0x5bc24c[_0xa75e('0xde')])[_0xa75e('0x8a')]({'secret':![]})['map'](function(_0x4d6796){if(_0x4d6796[_0xa75e('0xdd')]){var _0x45eef9=path[_0xa75e('0xd3')](_0x1bf44a,_0x4d6796[_0xa75e('0xdd')]['basename']);if(fs[_0xa75e('0xe8')](_0x45eef9)){fs['createReadStream'](_0x45eef9)[_0xa75e('0xe9')](fs[_0xa75e('0xea')](path[_0xa75e('0xd3')](_0x2d77cc,_0x4d6796[_0xa75e('0xdd')][_0xa75e('0xeb')])));}}return{'date':moment(_0x4d6796[_0xa75e('0x81')])[_0xa75e('0xd8')](_0xa75e('0xca'))[_0xa75e('0xb7')](),'sender':_0x4d6796[_0xa75e('0xdf')]===_0xa75e('0xec')?_0x4d6796[_0xa75e('0x78')]?_0x4d6796['User']['fullname']:_0xa75e('0xed'):_0x4d6796[_0xa75e('0x69')][_0xa75e('0xdb')]+(_0x4d6796['Contact'][_0xa75e('0xdc')]?'\x20'+_0x4d6796[_0xa75e('0x69')]['lastName']:''),'body':_0x4d6796['Attachment']?_0x4d6796[_0xa75e('0xdd')][_0xa75e('0xeb')]:_0x4d6796[_0xa75e('0x7a')],'direction':_0x4d6796[_0xa75e('0xdf')]==='out'?'A':'C','secret':_0x4d6796[_0xa75e('0xe0')],'read':_0x4d6796[_0xa75e('0x86')],'attachment':_0x4d6796['Attachment']};})[_0xa75e('0x66')]()};return ejs['renderFile'](path['join'](config['root'],_0xa75e('0xd5'),'views',_0xa75e('0xee')),{'interaction':_0x408cf8})[_0xa75e('0x29')](function(_0x26f35d){var _0x39bdd0=path[_0xa75e('0xd3')](_0x2d77cc,_0xa75e('0xef')+_0x5bc24c['id']+'-'+_0x25561c+_0xa75e('0xf0'));var _0x22500a={'path':_0x39bdd0,'channel':_0xa75e('0xe5'),'interactionId':_0x5bc24c['id']};return pdf[_0xa75e('0xf1')](_0x26f35d,_0x22500a);})[_0xa75e('0x29')](function(){return new BPromise(function(_0x5cf042,_0x308bdb){zipdir(_0x2d77cc,{'saveTo':_0x1b362a},function(_0x43a987,_0x32c299){if(_0x43a987)return _0x308bdb(_0x43a987);return _0x5cf042(_0x32c299);});})[_0xa75e('0x29')](function(){return new BPromise(function(_0x338b0c,_0x47dbf2){rimraf(_0x2d77cc,function(_0x56a951){if(_0x56a951)_0x47dbf2(_0x56a951);return _0x338b0c();});});})[_0xa75e('0x29')](function(){return _0x7021a5[_0xa75e('0xf2')](_0x1b362a,_0x3aaab1,function(_0x56301a){if(_0x56301a){console['log'](_0xa75e('0xf3'),_0x56301a);}else{fs[_0xa75e('0xf4')](_0x1b362a);}});});});}else{return _0x7021a5[_0xa75e('0x1d')](0xc8);}})[_0xa75e('0x34')](handleError(_0x7021a5,null));};
\ No newline at end of file
+var _0x8f1a=['send','Users','map','TagIds','Tags','split','push','catch','talking','answered','unmanaged','total','closed','UserId','waiting','index','WhatsappInteraction','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','type','text','start','some','isEmpty','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','params','include','merge','options','create','body','update','destroy','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','setTags','omit','spread','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','Attachment','createdAt','direction','secret','WhatsappAccount','Account','Owner','get','N.A.','format','disposition','Messages','basename','existsSync','createReadStream','out','System','renderFile','views','downloadInteraction.ejs','Whatsapp','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','error','stack','name'];(function(_0x4af9aa,_0x529ee5){var _0x2af66a=function(_0x4c166d){while(--_0x4c166d){_0x4af9aa['push'](_0x4af9aa['shift']());}};_0x2af66a(++_0x529ee5);}(_0x8f1a,0xcd));var _0xa8f1=function(_0xcd27e9,_0x355fc4){_0xcd27e9=_0xcd27e9-0x0;var _0x4a529f=_0x8f1a[_0xcd27e9];return _0x4a529f;};'use strict';var emlformat=require(_0xa8f1('0x0'));var rimraf=require(_0xa8f1('0x1'));var zipdir=require(_0xa8f1('0x2'));var jsonpatch=require(_0xa8f1('0x3'));var rp=require(_0xa8f1('0x4'));var moment=require(_0xa8f1('0x5'));var BPromise=require(_0xa8f1('0x6'));var Mustache=require(_0xa8f1('0x7'));var util=require('util');var path=require('path');var sox=require(_0xa8f1('0x8'));var csv=require('to-csv');var ejs=require(_0xa8f1('0x9'));var fs=require('fs');var fs_extra=require(_0xa8f1('0xa'));var _=require('lodash');var squel=require(_0xa8f1('0xb'));var crypto=require(_0xa8f1('0xc'));var jsforce=require(_0xa8f1('0xd'));var deskjs=require(_0xa8f1('0xe'));var toCsv=require(_0xa8f1('0xf'));var querystring=require(_0xa8f1('0x10'));var Papa=require(_0xa8f1('0x11'));var Redis=require(_0xa8f1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa8f1('0x13'));var as=require(_0xa8f1('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xa8f1('0x15'));var logger=require('../../config/logger')(_0xa8f1('0x16'));var utils=require(_0xa8f1('0x17'));var config=require(_0xa8f1('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8f1('0x19'))['db'];config[_0xa8f1('0x1a')]=_[_0xa8f1('0x1b')](config[_0xa8f1('0x1a')],{'host':_0xa8f1('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa8f1('0x1a')]));require('./whatsappInteraction.socket')[_0xa8f1('0x1d')](socket);function respondWithStatusCode(_0x78aee6,_0x4a230f){_0x4a230f=_0x4a230f||0xcc;return function(_0x4b83de){if(_0x4b83de){return _0x78aee6[_0xa8f1('0x1e')](_0x4a230f);}return _0x78aee6[_0xa8f1('0x1f')](_0x4a230f)[_0xa8f1('0x20')]();};}function respondWithResult(_0x42c7b1,_0x454241){_0x454241=_0x454241||0xc8;return function(_0x15bfad){if(_0x15bfad){return _0x42c7b1[_0xa8f1('0x1f')](_0x454241)[_0xa8f1('0x21')](_0x15bfad);}};}function respondWithFilteredResult(_0x28bf9c,_0x124917){return function(_0x453532){if(_0x453532){var _0x2ea505=typeof _0x124917[_0xa8f1('0x22')]===_0xa8f1('0x23')&&typeof _0x124917['limit']==='undefined';var _0x239560=_0x453532[_0xa8f1('0x24')];var _0xac0d42=_0x2ea505?0x0:_0x124917['offset'];var _0x3abcab=_0x2ea505?_0x453532[_0xa8f1('0x24')]:_0x124917[_0xa8f1('0x22')]+_0x124917[_0xa8f1('0x25')];var _0x131a60;if(_0x3abcab>=_0x239560){_0x3abcab=_0x239560;_0x131a60=0xc8;}else{_0x131a60=0xce;}_0x28bf9c['status'](_0x131a60);return _0x28bf9c[_0xa8f1('0x26')](_0xa8f1('0x27'),_0xac0d42+'-'+_0x3abcab+'/'+_0x239560)['json'](_0x453532);}return null;};}function patchUpdates(_0x3132cc){return function(_0x261af0){try{jsonpatch[_0xa8f1('0x28')](_0x261af0,_0x3132cc,!![]);}catch(_0x12cb8f){return BPromise[_0xa8f1('0x29')](_0x12cb8f);}return _0x261af0[_0xa8f1('0x2a')]();};}function saveUpdates(_0xa0ac0f,_0x2e2dc6){return function(_0x68e37d){if(_0x68e37d){return _0x68e37d['update'](_0xa0ac0f)[_0xa8f1('0x2b')](function(_0x11f825){return _0x11f825;});}return null;};}function removeEntity(_0xb6019a,_0x3091d6){return function(_0x1ecc3e){if(_0x1ecc3e){return _0x1ecc3e['destroy']()[_0xa8f1('0x2b')](function(){_0xb6019a[_0xa8f1('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x560396,_0x528cc4){return function(_0x3184fe){if(!_0x3184fe){_0x560396[_0xa8f1('0x1e')](0x194);}return _0x3184fe;};}function handleError(_0x5c06e0,_0x584151){_0x584151=_0x584151||0x1f4;return function(_0x559f3b){logger[_0xa8f1('0x2c')](_0x559f3b[_0xa8f1('0x2d')]);if(_0x559f3b[_0xa8f1('0x2e')]){delete _0x559f3b[_0xa8f1('0x2e')];}_0x5c06e0[_0xa8f1('0x1f')](_0x584151)[_0xa8f1('0x2f')](_0x559f3b);};}function getInteractionUsers(_0x419a70,_0x2bb524){return new BPromise(function(_0x179ed0,_0x3641e2){try{if(_0x2bb524[_0x419a70['id']]){_0x419a70[_0xa8f1('0x30')]=_[_0xa8f1('0x31')](_0x2bb524[_0x419a70['id']],function(_0x5dcb9f){return{'id':_0x5dcb9f['id'],'fullname':_0x5dcb9f['fullname']};});}}catch(_0x13d1fa){_0x3641e2(_0x13d1fa);}_0x179ed0(_0x419a70);});}function getInteractionTags(_0x30ea90,_0x459998){return new BPromise(function(_0x277b4d,_0x3ee6cb){try{if(_0x30ea90[_0xa8f1('0x32')]){_0x30ea90[_0xa8f1('0x33')]=[];_0x30ea90[_0xa8f1('0x32')][_0xa8f1('0x34')](',')['forEach'](function(_0x59fbf4){_0x30ea90['Tags'][_0xa8f1('0x35')](_0x459998[_0x59fbf4]);});}delete _0x30ea90[_0xa8f1('0x32')];}catch(_0x3c3569){_0x3ee6cb(_0x3c3569);}_0x277b4d(_0x30ea90);});}function updateWhatsappInteraction(_0xf2cff7,_0x1dd64e,_0x569daa){return new BPromise(function(_0x554850,_0x429ff8){return getInteractionUsers(_0xf2cff7,_0x569daa)[_0xa8f1('0x2b')](function(_0x112204){return getInteractionTags(_0x112204,_0x1dd64e);})[_0xa8f1('0x2b')](function(_0x8ef0c9){return getStateInteraction(_0x8ef0c9);})['then'](function(_0x96940d){_0x554850(_0x96940d);})[_0xa8f1('0x36')](function(_0x373696){_0x429ff8(_0x373696);});});}function getStateInteraction(_0x24087e){return new BPromise(function(_0x3f7aa2){_0x24087e['waiting']=0x0;_0x24087e[_0xa8f1('0x37')]=0x0;_0x24087e[_0xa8f1('0x38')]=0x0;_0x24087e[_0xa8f1('0x39')]=0x0;_0x24087e[_0xa8f1('0x3a')]=0x0;if(!_0x24087e[_0xa8f1('0x3b')]&&!_0x24087e[_0xa8f1('0x3c')]){_0x24087e['waiting']+=0x1;}if(!_0x24087e[_0xa8f1('0x3b')]&&_0x24087e[_0xa8f1('0x3c')]){_0x24087e['talking']+=0x1;if(_0x24087e[_0xa8f1('0x3d')]){_0x24087e['waiting']-=0x1;}}if(_0x24087e[_0xa8f1('0x3b')]&&_0x24087e[_0xa8f1('0x3c')]){_0x24087e[_0xa8f1('0x38')]+=0x1;if(_0x24087e[_0xa8f1('0x37')]){_0x24087e[_0xa8f1('0x37')]-=0x1;}}if(_0x24087e['closed']&&!_0x24087e[_0xa8f1('0x3c')]){_0x24087e[_0xa8f1('0x39')]+=0x1;if(_0x24087e[_0xa8f1('0x3d')]){_0x24087e['waiting']-=0x1;}}_0x24087e['total']+=0x1;_0x3f7aa2(_0x24087e);});}exports[_0xa8f1('0x3e')]=function(_0x22fc44,_0x53fc4a){var _0x583d8a={},_0x2a94c7={},_0x47d588={'count':0x0,'rows':[]};var _0x393819=_[_0xa8f1('0x31')](db[_0xa8f1('0x3f')][_0xa8f1('0x40')],function(_0x273f55){return{'name':_0x273f55[_0xa8f1('0x41')],'type':_0x273f55['type'][_0xa8f1('0x42')]};});_0x2a94c7[_0xa8f1('0x43')]=_[_0xa8f1('0x31')](_0x393819,_0xa8f1('0x2e'));_0x2a94c7[_0xa8f1('0x44')]=_[_0xa8f1('0x45')](_0x22fc44[_0xa8f1('0x44')]);_0x2a94c7[_0xa8f1('0x46')]=_[_0xa8f1('0x47')](_0x2a94c7[_0xa8f1('0x43')],_0x2a94c7[_0xa8f1('0x44')]);_0x583d8a['attributes']=_[_0xa8f1('0x47')](_0x2a94c7[_0xa8f1('0x43')],qs[_0xa8f1('0x48')](_0x22fc44['query'][_0xa8f1('0x48')]));_0x583d8a[_0xa8f1('0x49')]=_0x583d8a[_0xa8f1('0x49')]['length']?_0x583d8a[_0xa8f1('0x49')]:_0x2a94c7[_0xa8f1('0x43')];if(!_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x4a')](_0xa8f1('0x4b'))){_0x583d8a[_0xa8f1('0x25')]=qs['limit'](_0x22fc44['query'][_0xa8f1('0x25')]);_0x583d8a['offset']=qs['offset'](_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x22')]);}_0x583d8a[_0xa8f1('0x4c')]=qs[_0xa8f1('0x4d')](_0x22fc44['query'][_0xa8f1('0x4d')]);_0x583d8a[_0xa8f1('0x4e')]=qs[_0xa8f1('0x46')](_[_0xa8f1('0x4f')](_0x22fc44[_0xa8f1('0x44')],_0x2a94c7[_0xa8f1('0x46')]),_0x393819);var _0x556177=[];var _0x540f1b=squel[_0xa8f1('0x50')]()[_0xa8f1('0x51')]('id')[_0xa8f1('0x51')]('name')[_0xa8f1('0x51')](_0xa8f1('0x52'))[_0xa8f1('0x53')]('tools_tags');var _0x328814=squel[_0xa8f1('0x50')]()[_0xa8f1('0x51')](_0xa8f1('0x54'))['field'](_0xa8f1('0x55'))[_0xa8f1('0x51')](_0xa8f1('0x56'))[_0xa8f1('0x53')](_0xa8f1('0x57'),'ui')['left_join'](_0xa8f1('0x58'),'u',_0xa8f1('0x59'));var _0x148639=squel[_0xa8f1('0x50')]()['from'](_0xa8f1('0x5a'),'i')[_0xa8f1('0x5b')](_0xa8f1('0x5c'),'c',_0xa8f1('0x5d'))['left_join'](_0xa8f1('0x58'),'o',_0xa8f1('0x5e'))[_0xa8f1('0x5b')](_0xa8f1('0x5f'),'a',_0xa8f1('0x60'))[_0xa8f1('0x5b')](_0xa8f1('0x61'),'me',_0xa8f1('0x62'))[_0xa8f1('0x5b')](_0xa8f1('0x63'),'it',_0xa8f1('0x64'))[_0xa8f1('0x5b')](_0xa8f1('0x65'),'t',_0xa8f1('0x66'));var _0x4766c7=squel['expr']();var _0x831aa=[];var _0x45ed46=squel[_0xa8f1('0x67')]();var _0x41bb0e;if(_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x68')]){_0x41bb0e=as[_0xa8f1('0x69')](_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x68')]);var _0x4219a9=_0x41bb0e[_0xa8f1('0x6a')];for(var _0xdde4a1=0x0;_0xdde4a1<_0x41bb0e[_0xa8f1('0x6b')][_0xa8f1('0x6c')];_0xdde4a1++){var _0x4524f7=_0x41bb0e[_0xa8f1('0x6b')][_0xdde4a1];var _0x178822='i';var _0x338d00=_[_0xa8f1('0x6d')](_0x393819,['name',_0x4524f7[_0xa8f1('0x51')]]);if(!_0x338d00){switch(_0x4524f7[_0xa8f1('0x51')]){case'unreadMessages':if(_0x4524f7[_0xa8f1('0x6e')]==0x1){_0x148639[_0xa8f1('0x6f')]('`'+_0x4524f7['field']+_0xa8f1('0x70'));}else{_0x148639[_0xa8f1('0x6f')]('`'+_0x4524f7[_0xa8f1('0x51')]+_0xa8f1('0x71'));}break;case _0xa8f1('0x72'):if(_0x4524f7[_0xa8f1('0x73')]===_0xa8f1('0x74')){if(_0x4524f7[_0xa8f1('0x6e')][_0xa8f1('0x34')]('\x20')[_0xa8f1('0x6c')]>0x1){_0x4766c7[_0x4219a9](_0xa8f1('0x75'),qs[_0xa8f1('0x76')](_0x4524f7['value']),null);}else{var _0x32241a='%'+_0x4524f7[_0xa8f1('0x6e')]+'%';_0x4766c7[_0x4219a9](_0xa8f1('0x77'),_0x32241a,_0x32241a,_0x32241a);}}else{_0x338d00=_['find'](_0x393819,[_0xa8f1('0x2e'),'ContactId']);_0x4524f7[_0xa8f1('0x51')]=_0xa8f1('0x78');_0x23b139=as[_0xa8f1('0x79')](_0x178822,_0x338d00['type'],_0x4524f7);_0x4766c7[_0x4219a9](_0x23b139['text'],_0x23b139['value']['start'],_0x23b139[_0xa8f1('0x6e')]['end']);}break;case'Tag':var _0x2a40cc=_0x4524f7[_0xa8f1('0x6e')][_0xa8f1('0x34')](',')['map'](function(_0x3216a6){return Number(_0x3216a6);});_0x2a40cc[_0xa8f1('0x7a')](function(_0x1efe0f){_0x45ed46['or'](_0xa8f1('0x7b'),'%,'+_0x1efe0f+',%');});_0x831aa=_[_0xa8f1('0x7c')](_0x831aa,_0x2a40cc);break;case _0xa8f1('0x7d'):if(_0x4524f7['operator']==='$substring'){_0x4766c7[_0x4219a9]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x4524f7[_0xa8f1('0x6e')]+'%',null);}else{_0x338d00=_['find'](_0x393819,['name','UserId']);_0x4524f7['field']=_0xa8f1('0x3c');_0x23b139=as[_0xa8f1('0x79')](_0x178822,_0x338d00[_0xa8f1('0x7e')],_0x4524f7);_0x4766c7[_0x4219a9](_0x23b139[_0xa8f1('0x7f')],_0x23b139[_0xa8f1('0x6e')][_0xa8f1('0x80')],_0x23b139[_0xa8f1('0x6e')][_0xa8f1('0x20')]);}break;case'body':_0x23b139=as['buildExpression']('me',null,_0x4524f7);_0x4766c7[_0x4219a9](_0x23b139['text'],_0x23b139['value'][_0xa8f1('0x80')],_0x23b139[_0xa8f1('0x6e')][_0xa8f1('0x20')]);break;}}else{var _0x23b139=as['buildExpression'](_0x178822,_0x338d00[_0xa8f1('0x7e')],_0x4524f7);_0x4766c7[_0x4219a9](_0x23b139[_0xa8f1('0x7f')],_0x23b139[_0xa8f1('0x6e')][_0xa8f1('0x80')],_0x23b139[_0xa8f1('0x6e')]['end']);}}}else{var _0x3b5fca=_(_0x22fc44['query'])[_0xa8f1('0x45')]()['map'](function(_0x48f5d6){return _[_0xa8f1('0x81')](_0x393819,[_0xa8f1('0x2e'),_0x48f5d6])?_0x48f5d6:undefined;})['compact']()[_0xa8f1('0x6e')]();if(!_[_0xa8f1('0x82')](_0x3b5fca)){_0x3b5fca[_0xa8f1('0x7a')](function(_0x168376){if(_0x168376==='WhatsappAccountId'){_0x148639[_0xa8f1('0x4e')]('i.WhatsappAccountId\x20IN\x20?',[][_0xa8f1('0x83')](_0x22fc44['query'][_0x168376]));}else if(_0x168376==='createdAt'){var _0x2aee34=JSON[_0xa8f1('0x84')](_0x22fc44[_0xa8f1('0x44')][_0x168376])['$gte'];var _0xc6341c=JSON[_0xa8f1('0x84')](_0x22fc44[_0xa8f1('0x44')][_0x168376])[_0xa8f1('0x85')];_0x148639['where'](_0xa8f1('0x86'),_0x2aee34,_0xc6341c);}else{if(_0x22fc44[_0xa8f1('0x44')][_0x168376]===_0xa8f1('0x87')){_0x148639[_0xa8f1('0x4e')]('i.'+_0x168376+_0xa8f1('0x88'));}else{_0x148639['where']('i.'+_0x168376+'\x20=\x20?',_0x22fc44[_0xa8f1('0x44')][_0x168376]);}}});}if(_0x22fc44['query'][_0xa8f1('0x89')]){if(_0x22fc44['query'][_0xa8f1('0x89')]==0x1){_0x148639['having'](_0xa8f1('0x8a'));}else{_0x148639[_0xa8f1('0x6f')](_0xa8f1('0x8b'));}}if(_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x8c')]){_0x831aa=_['isArray'](_0x22fc44[_0xa8f1('0x44')]['tag'])?_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x8c')]:new Array(_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x8c')]);_0x831aa[_0xa8f1('0x7a')](function(_0x85233a){_0x45ed46['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x85233a+',%');});}if(_0x22fc44['query'][_0xa8f1('0x8d')]){var _0x5a30dd=_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x8d')][_0xa8f1('0x8e')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5a30dd)){_0x4766c7['or'](_0xa8f1('0x8f'),_0x5a30dd+'%')['or'](_0xa8f1('0x90'),_0x5a30dd+'%');}else{_0x4766c7['or'](_0xa8f1('0x91'),qs[_0xa8f1('0x76')](_0x5a30dd))['or'](_0xa8f1('0x92'),_0x5a30dd+'%');}}}_0x148639[_0xa8f1('0x4e')](_0x4766c7);_0x148639[_0xa8f1('0x93')]('i.id');var _0x13c7af={'type':db[_0xa8f1('0x94')][_0xa8f1('0x95')][_0xa8f1('0x96')],'raw':!![]};var _0x15f41a=_0x148639['clone']();_0x15f41a[_0xa8f1('0x51')]('i.id');_0x15f41a[_0xa8f1('0x51')](_0xa8f1('0x97'),_0xa8f1('0x98'));if(_0x583d8a['order']){_0x583d8a['order']['forEach'](function(_0x2aca4b){var _0x315127=_0x2aca4b[0x0]===_0xa8f1('0x99')?_0x2aca4b[0x0]:'i.'+_0x2aca4b[0x0];_0x148639[_0xa8f1('0x4c')](_0x315127,_0x2aca4b[0x1]===_0xa8f1('0x9a')?![]:!![]);});}if(!_['isEmpty'](_0x831aa)){_0x148639[_0xa8f1('0x6f')](_0x45ed46);_0x15f41a['where'](_0xa8f1('0x9b'),_0x831aa);}BPromise[_0xa8f1('0x9c')]()[_0xa8f1('0x2b')](function(){if(!_0x41bb0e){if(_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x9d')])return;_0x15f41a['where'](_0xa8f1('0x9e'));_0x148639[_0xa8f1('0x4e')](_0xa8f1('0x9e'));return;}if(_0x22fc44['user'][_0xa8f1('0x9f')]!==_0xa8f1('0xa0'))return;return _0x22fc44[_0xa8f1('0xa1')][_0xa8f1('0xa2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x440e87){if(_[_0xa8f1('0x82')](_0x440e87)){_0x15f41a[_0xa8f1('0x4e')](_0xa8f1('0xa3'));_0x148639[_0xa8f1('0x4e')](_0xa8f1('0xa3'));}else{_0x15f41a[_0xa8f1('0x4e')](_0xa8f1('0xa4'),_[_0xa8f1('0x31')](_0x440e87,'id'));_0x148639[_0xa8f1('0x4e')](_0xa8f1('0xa4'),_['map'](_0x440e87,'id'));}});})[_0xa8f1('0x2b')](function(){if(_0x22fc44[_0xa8f1('0xa1')][_0xa8f1('0x9f')]===_0xa8f1('0xa0')&&!_0x41bb0e&&!_0x22fc44[_0xa8f1('0x44')][_0xa8f1('0x9d')])return[];return db['sequelize'][_0xa8f1('0x44')](_0x15f41a[_0xa8f1('0xa5')](),_0x13c7af);})['then'](function(_0xfc8bc2){_0x47d588[_0xa8f1('0x24')]=_0xfc8bc2['length'];if(_0x47d588['count']===0x0)return[];return db[_0xa8f1('0xa6')][_0xa8f1('0x44')](_0x540f1b['toString'](),_0x13c7af)['then'](function(_0x3a14f2){_0x556177=_[_0xa8f1('0xa7')](_0x3a14f2,'id');_0x13c7af=_['merge'](_0x13c7af,{'model':db[_0xa8f1('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x22fc44['query'][_0xa8f1('0x48')]){_0x583d8a[_0xa8f1('0x49')]['forEach'](function(_0x541334){_0x148639['field']('i.'+_0x541334);});}else{_0x148639[_0xa8f1('0x51')](_0xa8f1('0x97'),_0xa8f1('0x98'));_0x148639[_0xa8f1('0x51')](_0xa8f1('0xa8'),_0xa8f1('0xa9'));_0x148639[_0xa8f1('0x51')]('a.mandatoryDisposition',_0xa8f1('0xaa'));_0x148639[_0xa8f1('0x51')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xa8f1('0x99'));_0x148639['field']('i.*');_0x148639['field'](_0xa8f1('0xab'),'Contact.firstName');_0x148639[_0xa8f1('0x51')](_0xa8f1('0xac'),_0xa8f1('0xad'));_0x148639['field']('c.email',_0xa8f1('0xae'));_0x148639[_0xa8f1('0x51')](_0xa8f1('0xaf'),_0xa8f1('0xb0'));_0x148639['field'](_0xa8f1('0xb1'),_0xa8f1('0xb2'));_0x148639[_0xa8f1('0x51')](_0xa8f1('0xb3'),_0xa8f1('0xb4'));_0x148639[_0xa8f1('0x51')](_0xa8f1('0xb5'),_0xa8f1('0xb6'));_0x148639[_0xa8f1('0x51')](_0xa8f1('0xb7'),_0xa8f1('0xb8'));_0x148639[_0xa8f1('0x51')](_0xa8f1('0xb9'),_0xa8f1('0x32'));}if(_0x583d8a[_0xa8f1('0x25')])_0x148639[_0xa8f1('0x25')](_0x583d8a[_0xa8f1('0x25')]);if(_0x583d8a[_0xa8f1('0x22')])_0x148639[_0xa8f1('0x22')](_0x583d8a['offset']);return db['sequelize'][_0xa8f1('0x44')](_0x148639[_0xa8f1('0xa5')](),_0x13c7af);})[_0xa8f1('0x2b')](function(_0x482f06){if(_0x482f06[_0xa8f1('0x6c')]>0x0)_0x328814[_0xa8f1('0x4e')](_0xa8f1('0xba'),_['map'](_0x482f06,'id'));return db[_0xa8f1('0xa6')][_0xa8f1('0x44')](_0x328814['toString'](),_0x13c7af)[_0xa8f1('0x2b')](function(_0x78b1b8){var _0x936bed=_[_0xa8f1('0xbb')](_0x78b1b8,_0xa8f1('0xbc'));var _0x17c2a7=[];_0x482f06[_0xa8f1('0x7a')](function(_0x5a7096){_0x17c2a7[_0xa8f1('0x35')](updateWhatsappInteraction(_0x5a7096,_0x556177,_0x936bed));});return BPromise[_0xa8f1('0xbd')](_0x17c2a7);});});})['then'](function(_0x96aab9){_0x47d588[_0xa8f1('0xbe')]=_0x96aab9;return _0x47d588;})[_0xa8f1('0x2b')](respondWithFilteredResult(_0x53fc4a,_0x583d8a))[_0xa8f1('0x36')](handleError(_0x53fc4a,null));};exports['show']=function(_0x2a2543,_0x5eb327){var _0x467667={'raw':![],'where':{'id':_0x2a2543[_0xa8f1('0xbf')]['id']}},_0x55d9e6={};_0x55d9e6[_0xa8f1('0x43')]=_[_0xa8f1('0x45')](db[_0xa8f1('0x3f')][_0xa8f1('0x40')]);_0x55d9e6[_0xa8f1('0x44')]=_['keys'](_0x2a2543[_0xa8f1('0x44')]);_0x55d9e6['filters']=_['intersection'](_0x55d9e6[_0xa8f1('0x43')],_0x55d9e6[_0xa8f1('0x44')]);_0x467667[_0xa8f1('0x49')]=_[_0xa8f1('0x47')](_0x55d9e6['model'],qs['fields'](_0x2a2543[_0xa8f1('0x44')][_0xa8f1('0x48')]));_0x467667[_0xa8f1('0x49')]=_0x467667['attributes'][_0xa8f1('0x6c')]?_0x467667[_0xa8f1('0x49')]:_0x55d9e6[_0xa8f1('0x43')];if(_0x2a2543['query']['includeAll']){_0x467667[_0xa8f1('0xc0')]=[{'all':!![]}];}_0x467667=_[_0xa8f1('0xc1')]({},_0x467667,_0x2a2543[_0xa8f1('0xc2')]);return db[_0xa8f1('0x3f')][_0xa8f1('0x6d')](_0x467667)[_0xa8f1('0x2b')](handleEntityNotFound(_0x5eb327,null))[_0xa8f1('0x2b')](respondWithResult(_0x5eb327,null))[_0xa8f1('0x36')](handleError(_0x5eb327,null));};exports[_0xa8f1('0xc3')]=function(_0x4a47bf,_0x34a2fe){return db[_0xa8f1('0x3f')][_0xa8f1('0xc3')](_0x4a47bf[_0xa8f1('0xc4')],{})['then'](respondWithResult(_0x34a2fe,0xc9))[_0xa8f1('0x36')](handleError(_0x34a2fe,null));};exports[_0xa8f1('0xc5')]=function(_0x14afb7,_0x3dc363){if(_0x14afb7[_0xa8f1('0xc4')]['id']){delete _0x14afb7[_0xa8f1('0xc4')]['id'];}return db['WhatsappInteraction'][_0xa8f1('0x6d')]({'where':{'id':_0x14afb7['params']['id']}})[_0xa8f1('0x2b')](handleEntityNotFound(_0x3dc363,null))[_0xa8f1('0x2b')](saveUpdates(_0x14afb7['body'],null))[_0xa8f1('0x2b')](respondWithResult(_0x3dc363,null))[_0xa8f1('0x36')](handleError(_0x3dc363,null));};exports[_0xa8f1('0xc6')]=function(_0x3cbb51,_0x451a3c){return db[_0xa8f1('0x3f')][_0xa8f1('0x6d')]({'where':{'id':_0x3cbb51['params']['id']}})[_0xa8f1('0x2b')](handleEntityNotFound(_0x451a3c,null))[_0xa8f1('0x2b')](removeEntity(_0x451a3c,null))[_0xa8f1('0x36')](handleError(_0x451a3c,null));};exports[_0xa8f1('0xc7')]=function(_0x98f6a6,_0x97c1d3){return db[_0xa8f1('0x3f')][_0xa8f1('0xc7')]()[_0xa8f1('0x2b')](respondWithResult(_0x97c1d3,null))[_0xa8f1('0x36')](handleError(_0x97c1d3,null));};exports[_0xa8f1('0xc8')]=function(_0x384ddd,_0x435f70,_0x4a99fe){return db[_0xa8f1('0xc9')][_0xa8f1('0x6d')]({'where':{'id':_0x384ddd[_0xa8f1('0xbf')]['id']}})[_0xa8f1('0x2b')](handleEntityNotFound(_0x435f70,null))[_0xa8f1('0x2b')](function(_0x1e698d){if(_0x1e698d){return _0x1e698d[_0xa8f1('0xc8')](_0x384ddd[_0xa8f1('0xc4')][_0xa8f1('0xca')],_['omit'](_0x384ddd[_0xa8f1('0xc4')],[_0xa8f1('0xca'),'id'])||{});}})[_0xa8f1('0x2b')](respondWithResult(_0x435f70,null))[_0xa8f1('0x36')](handleError(_0x435f70,null));};exports[_0xa8f1('0xcb')]=function(_0x40dc31,_0x1ec543,_0x5b9598){var _0x293002={'raw':![],'where':{}};var _0x1139b0={};var _0x464a7d={'count':0x0,'rows':[]};return db[_0xa8f1('0x3f')][_0xa8f1('0xcc')]({'where':{'id':_0x40dc31['params']['id']}})[_0xa8f1('0x2b')](handleEntityNotFound(_0x1ec543,null))[_0xa8f1('0x2b')](function(_0x43c5f1){if(_0x43c5f1){_0x1139b0[_0xa8f1('0x43')]=_['keys'](db[_0xa8f1('0xc9')][_0xa8f1('0x40')]);_0x1139b0[_0xa8f1('0x44')]=_['keys'](_0x40dc31[_0xa8f1('0x44')]);_0x1139b0['filters']=_['intersection'](_0x1139b0[_0xa8f1('0x43')],_0x1139b0['query']);_0x293002[_0xa8f1('0x49')]=_[_0xa8f1('0x47')](_0x1139b0[_0xa8f1('0x43')],qs[_0xa8f1('0x48')](_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0x48')]));_0x293002[_0xa8f1('0x49')]=_0x293002[_0xa8f1('0x49')][_0xa8f1('0x6c')]?_0x293002[_0xa8f1('0x49')]:_0x1139b0[_0xa8f1('0x43')];if(!_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0x4a')]('nolimit')){_0x293002[_0xa8f1('0x25')]=qs[_0xa8f1('0x25')](_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0x25')]);_0x293002['offset']=qs[_0xa8f1('0x22')](_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0x22')]);}_0x293002[_0xa8f1('0x4c')]=qs[_0xa8f1('0x4d')](_0x40dc31[_0xa8f1('0x44')]['sort']);_0x293002[_0xa8f1('0x4e')]=qs[_0xa8f1('0x46')](_['pick'](_0x40dc31[_0xa8f1('0x44')],_0x1139b0[_0xa8f1('0x46')]));_0x293002['where'][_0xa8f1('0xbc')]=_0x43c5f1['id'];if(_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0x8d')]){_0x293002[_0xa8f1('0x4e')]=_['merge'](_0x293002[_0xa8f1('0x4e')],{'$or':_['map'](_0x293002['attributes'],function(_0x1284f7){var _0x185946={};_0x185946[_0x1284f7]={'$like':'%'+_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0x8d')]+'%'};return _0x185946;})});}if(_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0xcd')]){var _0xe5470c=_0x40dc31[_0xa8f1('0x44')][_0xa8f1('0xcd')][_0xa8f1('0x34')](',');var _0x29a1cb={};_0x29a1cb[_0xe5470c[0x0]]={'$gte':moment(_0xe5470c[0x1])['format'](_0xa8f1('0xce'))};_0x293002[_0xa8f1('0x4e')]=_[_0xa8f1('0xc1')](_0x293002[_0xa8f1('0x4e')],_0x29a1cb);}_0x293002=_[_0xa8f1('0xc1')]({},_0x293002,_0x40dc31[_0xa8f1('0xc2')]);return db[_0xa8f1('0xc9')][_0xa8f1('0x24')]({'where':_0x293002[_0xa8f1('0x4e')]})[_0xa8f1('0x2b')](function(_0xbd973){_0x464a7d[_0xa8f1('0x24')]=_0xbd973;if(_0x40dc31['query'][_0xa8f1('0xcf')]){_0x293002['include']=[{'all':!![]}];}return db[_0xa8f1('0xc9')]['findAll'](_0x293002);})[_0xa8f1('0x2b')](function(_0x4c5005){_0x464a7d[_0xa8f1('0xbe')]=_0x4c5005;return _0x464a7d;});}})[_0xa8f1('0x2b')](respondWithFilteredResult(_0x1ec543,_0x293002))[_0xa8f1('0x36')](handleError(_0x1ec543,null));};exports[_0xa8f1('0xd0')]=function(_0xc89368,_0x2b80a1,_0x449b09){return db['WhatsappInteraction'][_0xa8f1('0x6d')]({'where':{'id':_0xc89368['params']['id']}})[_0xa8f1('0x2b')](handleEntityNotFound(_0x2b80a1,null))['then'](function(_0x332db4){if(_0x332db4){return _0x332db4[_0xa8f1('0xd1')](_0xc89368[_0xa8f1('0xc4')][_0xa8f1('0xca')],_[_0xa8f1('0xd2')](_0xc89368['body'],[_0xa8f1('0xca'),'id'])||{})[_0xa8f1('0xd3')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0xa8f1('0x52')],'where':{'id':_0xc89368[_0xa8f1('0xc4')][_0xa8f1('0xca')]}});})[_0xa8f1('0x2b')](function(_0x5c6ad4){socket[_0xa8f1('0xd4')](_0xa8f1('0xd5'),{'id':Number(_0xc89368['params']['id']),'tags':_0x5c6ad4||[]});return{'id':Number(_0xc89368[_0xa8f1('0xbf')]['id']),'tags':_0x5c6ad4||[]};});}})[_0xa8f1('0x2b')](respondWithResult(_0x2b80a1,null))[_0xa8f1('0x36')](handleError(_0x2b80a1,null));};exports[_0xa8f1('0xd6')]=function(_0x21d76d,_0xede874,_0x4d963d){return db[_0xa8f1('0x3f')][_0xa8f1('0x6d')]({'where':{'id':_0x21d76d[_0xa8f1('0xbf')]['id']}})[_0xa8f1('0x2b')](handleEntityNotFound(_0xede874,null))[_0xa8f1('0x2b')](function(_0x34f749){if(_0x34f749){return _0x34f749[_0xa8f1('0xd6')](_0x21d76d[_0xa8f1('0x44')]['ids']);}})[_0xa8f1('0x2b')](respondWithStatusCode(_0xede874,null))[_0xa8f1('0x36')](handleError(_0xede874,null));};exports[_0xa8f1('0xd7')]=function(_0x3e472c,_0x138488){var _0x5f264e=moment()[_0xa8f1('0xd8')]()['toString']();var _0x168651=path[_0xa8f1('0xd9')](config[_0xa8f1('0xda')],_0xa8f1('0xdb'),_0xa8f1('0xdc'),_0xa8f1('0xdd'));var _0x1e84c9=path['join'](config['root'],_0xa8f1('0xdb'),_0xa8f1('0xdc'),_0xa8f1('0xde'));var _0x37b458=path[_0xa8f1('0xd9')](_0x168651,_0x5f264e);var _0x1eccc1=util['format'](_0xa8f1('0xdf'),_0x3e472c['params']['id'],_0x5f264e);var _0x49abc6=path[_0xa8f1('0xd9')](_0x168651,_0x1eccc1);var _0x53f69f=[];_0x53f69f['push']({'model':db[_0xa8f1('0x7d')],'as':_0xa8f1('0x7d'),'attributes':['id',_0xa8f1('0xe0')],'raw':!![]});_0x53f69f['push']({'model':db[_0xa8f1('0xe1')],'as':_0xa8f1('0x72'),'attributes':['id',_0xa8f1('0xe2'),_0xa8f1('0xe3')],'raw':!![]});if(_0x3e472c[_0xa8f1('0x44')]['attachments']){_0x53f69f[_0xa8f1('0x35')]({'model':db[_0xa8f1('0xe4')],'as':'Attachment','raw':!![]});}var _0x333d30=[{'model':db[_0xa8f1('0xc9')],'as':'Messages','attributes':['id',_0xa8f1('0xc4'),_0xa8f1('0xe5'),_0xa8f1('0xe6'),_0xa8f1('0xe7'),'read'],'include':_0x53f69f}];_0x333d30[_0xa8f1('0x35')]({'model':db[_0xa8f1('0xe8')],'as':_0xa8f1('0xe9'),'attributes':['id','name']});_0x333d30[_0xa8f1('0x35')]({'model':db['User'],'as':_0xa8f1('0xea'),'attributes':['id',_0xa8f1('0xe0')]});return db[_0xa8f1('0x3f')][_0xa8f1('0x6d')]({'where':{'id':_0x3e472c[_0xa8f1('0xbf')]['id']},'include':_0x333d30})[_0xa8f1('0x2b')](handleEntityNotFound(_0x138488,null))[_0xa8f1('0x2b')](function(_0x450b5a){if(_0x450b5a){var _0x5dfbcd=_0x450b5a[_0xa8f1('0xeb')]({'plain':!![]});fs['mkdirSync'](_0x37b458);var _0xfe5aa6={'channel':'Whatsapp','account':_0x5dfbcd['Account']['name'],'agent':_0x5dfbcd['Owner']?_0x5dfbcd[_0xa8f1('0xea')]['fullname']:_0xa8f1('0xec'),'createdAt':moment(_0x5dfbcd[_0xa8f1('0xe5')])[_0xa8f1('0xed')]('YYYY-MM-DD\x20HH:mm:ss')[_0xa8f1('0xa5')](),'closedAt':_0x5dfbcd[_0xa8f1('0x3b')]?moment(_0x5dfbcd['closedAt'])[_0xa8f1('0xed')](_0xa8f1('0xce'))[_0xa8f1('0xa5')]():'','disposition':_0x5dfbcd[_0xa8f1('0xee')],'messages':_(_0x5dfbcd[_0xa8f1('0xef')])[_0xa8f1('0x8d')]({'secret':![]})[_0xa8f1('0x31')](function(_0x12155a){if(_0x12155a[_0xa8f1('0xe4')]){var _0x5a70d1=path['join'](_0x1e84c9,_0x12155a[_0xa8f1('0xe4')][_0xa8f1('0xf0')]);if(fs[_0xa8f1('0xf1')](_0x5a70d1)){fs[_0xa8f1('0xf2')](_0x5a70d1)['pipe'](fs['createWriteStream'](path['join'](_0x37b458,_0x12155a['Attachment']['basename'])));}}return{'date':moment(_0x12155a['createdAt'])[_0xa8f1('0xed')](_0xa8f1('0xce'))[_0xa8f1('0xa5')](),'sender':_0x12155a[_0xa8f1('0xe6')]===_0xa8f1('0xf3')?_0x12155a[_0xa8f1('0x7d')]?_0x12155a['User'][_0xa8f1('0xe0')]:_0xa8f1('0xf4'):_0x12155a[_0xa8f1('0x72')][_0xa8f1('0xe2')]+(_0x12155a[_0xa8f1('0x72')][_0xa8f1('0xe3')]?'\x20'+_0x12155a[_0xa8f1('0x72')]['lastName']:''),'body':_0x12155a['Attachment']?_0x12155a['Attachment'][_0xa8f1('0xf0')]:_0x12155a[_0xa8f1('0xc4')],'direction':_0x12155a[_0xa8f1('0xe6')]===_0xa8f1('0xf3')?'A':'C','secret':_0x12155a[_0xa8f1('0xe7')],'read':_0x12155a[_0xa8f1('0x89')],'attachment':_0x12155a[_0xa8f1('0xe4')]};})[_0xa8f1('0x6e')]()};return ejs[_0xa8f1('0xf5')](path[_0xa8f1('0xd9')](config[_0xa8f1('0xda')],_0xa8f1('0xdb'),_0xa8f1('0xf6'),_0xa8f1('0xf7')),{'interaction':_0xfe5aa6})[_0xa8f1('0x2b')](function(_0x3c8ba4){var _0x1e9be6=path[_0xa8f1('0xd9')](_0x37b458,'transcript-'+_0x5dfbcd['id']+'-'+_0x5f264e+'.pdf');var _0x43d54e={'path':_0x1e9be6,'channel':_0xa8f1('0xf8'),'interactionId':_0x5dfbcd['id']};return pdf[_0xa8f1('0xf9')](_0x3c8ba4,_0x43d54e);})[_0xa8f1('0x2b')](function(){return new BPromise(function(_0x525c17,_0x32cd45){zipdir(_0x37b458,{'saveTo':_0x49abc6},function(_0x592a2f,_0x178a26){if(_0x592a2f)return _0x32cd45(_0x592a2f);return _0x525c17(_0x178a26);});})['then'](function(){return new BPromise(function(_0xb863d3,_0x19ddd4){rimraf(_0x37b458,function(_0x4c06f2){if(_0x4c06f2)_0x19ddd4(_0x4c06f2);return _0xb863d3();});});})['then'](function(){return _0x138488['download'](_0x49abc6,_0x1eccc1,function(_0x53a3bd){if(_0x53a3bd){console[_0xa8f1('0xfa')]('err',_0x53a3bd);}else{fs[_0xa8f1('0xfb')](_0x49abc6);}});});});}else{return _0x138488['sendStatus'](0xc8);}})[_0xa8f1('0x36')](handleError(_0x138488,null));};
\ No newline at end of file
index 678ccd5..3c2a32f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea2=['exports','events','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','remove','then','setDataValue','Users','map','unreadMessages','length','emit','catch'];(function(_0x148c62,_0x4c0634){var _0x3b09d6=function(_0x2ca202){while(--_0x2ca202){_0x148c62['push'](_0x148c62['shift']());}};_0x3b09d6(++_0x4c0634);}(_0xcea2,0x15a));var _0x2cea=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xcea2[_0x9cd4c3];return _0x4c9025;};'use strict';var EventEmitter=require(_0x2cea('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0x2cea('0x1')];var WhatsappMessage=require('../../mysqldb')['db'][_0x2cea('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x2cea('0x3')](0x0);var events={'afterCreate':_0x2cea('0x4'),'afterUpdate':'update','afterDestroy':_0x2cea('0x5')};function emitEvent(_0x46060b){return function(_0x11596e,_0x496c21,_0x34f0f2){_0x11596e['getUsers']({'attributes':['id'],'raw':!![]})[_0x2cea('0x6')](function(_0xc04963){_0x11596e[_0x2cea('0x7')](_0x2cea('0x8'),_0xc04963[_0x2cea('0x9')](function(_0x1519f6){return{'id':_0x1519f6['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0x11596e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2cea('0x6')](function(_0x42191a){_0x11596e[_0x2cea('0x7')](_0x2cea('0xa'),_0x42191a[_0x2cea('0xb')]);WhatsappInteractionEvents[_0x2cea('0xc')](_0x46060b+':'+_0x11596e['id'],_0x11596e);WhatsappInteractionEvents[_0x2cea('0xc')](_0x46060b,_0x11596e);_0x34f0f2(null);})[_0x2cea('0xd')](_0x34f0f2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x2cea('0xe')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x5ab4=['../../mysqldb','WhatsappInteraction','WhatsappMessage','save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5ab4,0x9f));var _0x45ab=function(_0x3e6108,_0x3ffacc){_0x3e6108=_0x3e6108-0x0;var _0x2516d4=_0x5ab4[_0x3e6108];return _0x2516d4;};'use strict';var EventEmitter=require(_0x45ab('0x0'));var WhatsappInteraction=require(_0x45ab('0x1'))['db'][_0x45ab('0x2')];var WhatsappMessage=require(_0x45ab('0x1'))['db'][_0x45ab('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x45ab('0x4'),'afterUpdate':_0x45ab('0x5'),'afterDestroy':_0x45ab('0x6')};function emitEvent(_0x44ad44){return function(_0x2bf7b8,_0x4eca32,_0x5483f1){_0x2bf7b8[_0x45ab('0x7')]({'attributes':['id'],'raw':!![]})[_0x45ab('0x8')](function(_0x2941e8){_0x2bf7b8[_0x45ab('0x9')](_0x45ab('0xa'),_0x2941e8[_0x45ab('0xb')](function(_0xc46d37){return{'id':_0xc46d37['id']};}));return WhatsappMessage[_0x45ab('0xc')]({'where':{'WhatsappInteractionId':_0x2bf7b8['id'],'direction':'in','read':![]},'raw':!![]});})[_0x45ab('0x8')](function(_0x310cf4){_0x2bf7b8[_0x45ab('0x9')](_0x45ab('0xd'),_0x310cf4[_0x45ab('0xe')]);WhatsappInteractionEvents['emit'](_0x44ad44+':'+_0x2bf7b8['id'],_0x2bf7b8);WhatsappInteractionEvents[_0x45ab('0xf')](_0x44ad44,_0x2bf7b8);_0x5483f1(null);})[_0x45ab('0x10')](_0x5483f1(null));};}for(var e in events){if(events[_0x45ab('0x11')](e)){var event=events[e];WhatsappInteraction[_0x45ab('0x12')](e,emitEvent(event));}}module[_0x45ab('0x13')]=WhatsappInteractionEvents;
\ No newline at end of file
index ab0220e..8a26cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd948=['request-promise','../../config/environment','exports','define','WhatsappInteraction','changed','closed','YYYY-MM-DD\x20HH:mm:ss','../../config/logger','bluebird'];(function(_0x16dd1d,_0xb00640){var _0x5ab389=function(_0x2816b2){while(--_0x2816b2){_0x16dd1d['push'](_0x16dd1d['shift']());}};_0x5ab389(++_0xb00640);}(_0xd948,0x12a));var _0x8d94=function(_0x35bd8f,_0xe20a43){_0x35bd8f=_0x35bd8f-0x0;var _0x23c36b=_0xd948[_0x35bd8f];return _0x23c36b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8d94('0x0'))('api');var moment=require('moment');var BPromise=require(_0x8d94('0x1'));var rp=require(_0x8d94('0x2'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8d94('0x3'));var attributes=require('./whatsappInteraction.attributes');module[_0x8d94('0x4')]=function(_0x472326,_0x23f62f){return _0x472326[_0x8d94('0x5')](_0x8d94('0x6'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3a45a7,_0x5cb2e2,_0x331557){if(_0x3a45a7[_0x8d94('0x7')](_0x8d94('0x8'))){_0x3a45a7['closedAt']=moment()['format'](_0x8d94('0x9'));}_0x331557(null,_0x3a45a7);}}});};
\ No newline at end of file
+var _0x8946=['../../config/logger','api','path','../../config/environment','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x8946,0x193));var _0x6894=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x8946[_0x40220a];return _0x3903cc;};'use strict';var _=require(_0x6894('0x0'));var util=require(_0x6894('0x1'));var logger=require(_0x6894('0x2'))(_0x6894('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6894('0x4'));var rimraf=require('rimraf');var config=require(_0x6894('0x5'));var attributes=require(_0x6894('0x6'));module[_0x6894('0x7')]=function(_0x1a6c56,_0x14a518){return _0x1a6c56[_0x6894('0x8')](_0x6894('0x9'),attributes,{'tableName':_0x6894('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4486fc,_0x5b2556,_0x1e71e8){if(_0x4486fc[_0x6894('0xb')](_0x6894('0xc'))){_0x4486fc[_0x6894('0xd')]=moment()['format'](_0x6894('0xe'));}_0x1e71e8(null,_0x4486fc);}}});};
\ No newline at end of file
index 26e9811..5fdd1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1575=['register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw','where','limit','catch','AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter'];(function(_0x2ba413,_0x15743a){var _0x788431=function(_0x4021cb){while(--_0x4021cb){_0x2ba413['push'](_0x2ba413['shift']());}};_0x788431(++_0x15743a);}(_0x1575,0x174));var _0x5157=function(_0x106db6,_0xd6decc){_0x106db6=_0x106db6-0x0;var _0x4dc175=_0x1575[_0x106db6];return _0x4dc175;};'use strict';var _=require(_0x5157('0x0'));var util=require(_0x5157('0x1'));var moment=require(_0x5157('0x2'));var BPromise=require(_0x5157('0x3'));var rs=require(_0x5157('0x4'));var fs=require('fs');var Redis=require(_0x5157('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5157('0x6'));var logger=require(_0x5157('0x7'))(_0x5157('0x8'));var config=require(_0x5157('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x5157('0xa')][_0x5157('0xb')]({'port':0x232a});config[_0x5157('0xc')]=_[_0x5157('0xd')](config[_0x5157('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5157('0xe'))(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0x5157('0xf')](socket);function respondWithRpcPromise(_0x2b5c4e,_0x373c08,_0x118d58){return new BPromise(function(_0x418c9e,_0x50422d){return client[_0x5157('0x10')](_0x2b5c4e,_0x118d58)[_0x5157('0x11')](function(_0x5bc9ea){logger[_0x5157('0x12')](_0x5157('0x13'),_0x373c08,_0x5157('0x14'));logger[_0x5157('0x15')](_0x5157('0x16'),_0x373c08,_0x5157('0x14'),JSON[_0x5157('0x17')](_0x5bc9ea));if(_0x5bc9ea[_0x5157('0x18')]){if(_0x5bc9ea[_0x5157('0x18')][_0x5157('0x19')]===0x1f4){logger['error'](_0x5157('0x13'),_0x373c08,_0x5bc9ea[_0x5157('0x18')][_0x5157('0x1a')]);return _0x50422d(_0x5bc9ea['error'][_0x5157('0x1a')]);}logger[_0x5157('0x18')](_0x5157('0x13'),_0x373c08,_0x5bc9ea[_0x5157('0x18')]['message']);return _0x418c9e(_0x5bc9ea[_0x5157('0x18')][_0x5157('0x1a')]);}else{logger[_0x5157('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x373c08,_0x5157('0x14'));_0x418c9e(_0x5bc9ea[_0x5157('0x1b')][_0x5157('0x1a')]);}})['catch'](function(_0x4e63aa){logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x373c08,_0x4e63aa);_0x50422d(_0x4e63aa);});});}exports[_0x5157('0x1c')]=function(_0x5a6b66){var _0x204028=this;return new Promise(function(_0x42ee19,_0x4428f0){return db[_0x5157('0x1d')][_0x5157('0x1e')](_0x5a6b66['body'],{'raw':_0x5a6b66['options']?_0x5a6b66[_0x5157('0x1f')][_0x5157('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a6b66[_0x5157('0x1f')]?_0x5a6b66[_0x5157('0x1f')][_0x5157('0x21')]||null:null,'attributes':_0x5a6b66[_0x5157('0x1f')]?_0x5a6b66[_0x5157('0x1f')]['attributes']||null:null,'limit':_0x5a6b66[_0x5157('0x1f')]?_0x5a6b66[_0x5157('0x1f')][_0x5157('0x22')]||null:null})[_0x5157('0x11')](function(_0x325521){logger['info'](_0x5157('0x1c'),_0x5a6b66);logger[_0x5157('0x15')](_0x5157('0x1c'),_0x5a6b66,JSON[_0x5157('0x17')](_0x325521));_0x42ee19(_0x325521);})[_0x5157('0x23')](function(_0x3c1ed0){logger[_0x5157('0x18')](_0x5157('0x1c'),_0x3c1ed0[_0x5157('0x1a')],_0x5a6b66);_0x4428f0(_0x204028[_0x5157('0x18')](0x1f4,_0x3c1ed0['message']));});});};exports[_0x5157('0x24')]=function(_0xe18f5f){return new Promise(function(_0x395612,_0x2df563){return db[_0x5157('0x1d')][_0x5157('0x25')]({'where':_0xe18f5f[_0x5157('0x1f')]?_0xe18f5f[_0x5157('0x1f')][_0x5157('0x21')]||null:null})[_0x5157('0x11')](function(_0x5d6fc7){if(_0x5d6fc7){return _0x5d6fc7[_0x5157('0x26')](_0xe18f5f[_0x5157('0x27')][_0x5157('0x28')],_[_0x5157('0x29')](_0xe18f5f[_0x5157('0x27')],[_0x5157('0x28'),'id'])||{});}})['spread'](function(_0x573308){logger['info'](_0x5157('0x2a'),_0xe18f5f);logger['debug'](_0x5157('0x2a'),_0xe18f5f,JSON[_0x5157('0x17')](_0x573308));_0x395612(_0x573308);})[_0x5157('0x23')](function(_0x43ccf8){logger[_0x5157('0x18')](_0x5157('0x2a'),_0x43ccf8[_0x5157('0x1a')],_0xe18f5f);_0x2df563(_this[_0x5157('0x18')](0x1f4,_0x43ccf8[_0x5157('0x1a')]));});});};
\ No newline at end of file
+var _0xa1e7=['raw','where','attributes','limit','then','info','debug','stringify','AddTagsToWhatsappInteraction','addTags','body','omit','spread','AddTags','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','WhatsappInteraction,\x20%s,\x20%s,\x20%s','error','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','options'];(function(_0x20e092,_0x93a2ec){var _0x508ccd=function(_0x5a4743){while(--_0x5a4743){_0x20e092['push'](_0x20e092['shift']());}};_0x508ccd(++_0x93a2ec);}(_0xa1e7,0x1dc));var _0x7a1e=function(_0x2b4fa7,_0x5c188d){_0x2b4fa7=_0x2b4fa7-0x0;var _0xe34a95=_0xa1e7[_0x2b4fa7];return _0xe34a95;};'use strict';var _=require('lodash');var util=require(_0x7a1e('0x0'));var moment=require(_0x7a1e('0x1'));var BPromise=require(_0x7a1e('0x2'));var rs=require(_0x7a1e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7a1e('0x4'))['db'];var utils=require(_0x7a1e('0x5'));var logger=require(_0x7a1e('0x6'))(_0x7a1e('0x7'));var config=require(_0x7a1e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7a1e('0x9')][_0x7a1e('0xa')]({'port':0x232a});config[_0x7a1e('0xb')]=_[_0x7a1e('0xc')](config[_0x7a1e('0xb')],{'host':_0x7a1e('0xd'),'port':0x18eb});var socket=require(_0x7a1e('0xe'))(new Redis(config[_0x7a1e('0xb')]));require(_0x7a1e('0xf'))[_0x7a1e('0x10')](socket);function respondWithRpcPromise(_0x52217d,_0x1c3a03,_0xa73473){return new BPromise(function(_0x1350a2,_0x5395e9){return client[_0x7a1e('0x11')](_0x52217d,_0xa73473)['then'](function(_0xe24f86){logger['info'](_0x7a1e('0x12'),_0x1c3a03,_0x7a1e('0x13'));logger['debug'](_0x7a1e('0x14'),_0x1c3a03,_0x7a1e('0x13'),JSON['stringify'](_0xe24f86));if(_0xe24f86['error']){if(_0xe24f86[_0x7a1e('0x15')]['code']===0x1f4){logger[_0x7a1e('0x15')]('WhatsappInteraction,\x20%s,\x20%s',_0x1c3a03,_0xe24f86['error'][_0x7a1e('0x16')]);return _0x5395e9(_0xe24f86[_0x7a1e('0x15')][_0x7a1e('0x16')]);}logger[_0x7a1e('0x15')](_0x7a1e('0x12'),_0x1c3a03,_0xe24f86['error'][_0x7a1e('0x16')]);return _0x1350a2(_0xe24f86['error'][_0x7a1e('0x16')]);}else{logger['info'](_0x7a1e('0x12'),_0x1c3a03,_0x7a1e('0x13'));_0x1350a2(_0xe24f86[_0x7a1e('0x17')][_0x7a1e('0x16')]);}})[_0x7a1e('0x18')](function(_0xcac9a6){logger[_0x7a1e('0x15')](_0x7a1e('0x12'),_0x1c3a03,_0xcac9a6);_0x5395e9(_0xcac9a6);});});}exports[_0x7a1e('0x19')]=function(_0x2d0b8d){var _0x2d192e=this;return new Promise(function(_0x239a11,_0x4465af){return db[_0x7a1e('0x1a')]['update'](_0x2d0b8d['body'],{'raw':_0x2d0b8d[_0x7a1e('0x1b')]?_0x2d0b8d['options'][_0x7a1e('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d0b8d[_0x7a1e('0x1b')]?_0x2d0b8d[_0x7a1e('0x1b')][_0x7a1e('0x1d')]||null:null,'attributes':_0x2d0b8d['options']?_0x2d0b8d['options'][_0x7a1e('0x1e')]||null:null,'limit':_0x2d0b8d[_0x7a1e('0x1b')]?_0x2d0b8d[_0x7a1e('0x1b')][_0x7a1e('0x1f')]||null:null})[_0x7a1e('0x20')](function(_0x295e2b){logger[_0x7a1e('0x21')](_0x7a1e('0x19'),_0x2d0b8d);logger[_0x7a1e('0x22')](_0x7a1e('0x19'),_0x2d0b8d,JSON[_0x7a1e('0x23')](_0x295e2b));_0x239a11(_0x295e2b);})[_0x7a1e('0x18')](function(_0x5aeb10){logger[_0x7a1e('0x15')](_0x7a1e('0x19'),_0x5aeb10[_0x7a1e('0x16')],_0x2d0b8d);_0x4465af(_0x2d192e[_0x7a1e('0x15')](0x1f4,_0x5aeb10[_0x7a1e('0x16')]));});});};exports[_0x7a1e('0x24')]=function(_0xcccee5){return new Promise(function(_0x26a8a9,_0x5857b9){return db['WhatsappInteraction']['find']({'where':_0xcccee5[_0x7a1e('0x1b')]?_0xcccee5[_0x7a1e('0x1b')][_0x7a1e('0x1d')]||null:null})[_0x7a1e('0x20')](function(_0x6312e8){if(_0x6312e8){return _0x6312e8[_0x7a1e('0x25')](_0xcccee5[_0x7a1e('0x26')]['ids'],_[_0x7a1e('0x27')](_0xcccee5[_0x7a1e('0x26')],['ids','id'])||{});}})[_0x7a1e('0x28')](function(_0x54ef35){logger[_0x7a1e('0x21')](_0x7a1e('0x29'),_0xcccee5);logger['debug'](_0x7a1e('0x29'),_0xcccee5,JSON[_0x7a1e('0x23')](_0x54ef35));_0x26a8a9(_0x54ef35);})['catch'](function(_0x5ae03f){logger[_0x7a1e('0x15')](_0x7a1e('0x29'),_0x5ae03f['message'],_0xcccee5);_0x5857b9(_this[_0x7a1e('0x15')](0x1f4,_0x5ae03f[_0x7a1e('0x16')]));});});};
\ No newline at end of file
index 2fed847..4ef4882 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef0=['emit','register','whatsappInteraction:','./whatsappInteraction.events','save','remove'];(function(_0x54b391,_0x10043a){var _0x1c4848=function(_0x200880){while(--_0x200880){_0x54b391['push'](_0x54b391['shift']());}};_0x1c4848(++_0x10043a);}(_0x8ef0,0xd5));var _0x08ef=function(_0x27489c,_0x43f1e0){_0x27489c=_0x27489c-0x0;var _0x464f37=_0x8ef0[_0x27489c];return _0x464f37;};'use strict';var WhatsappInteractionEvents=require(_0x08ef('0x0'));var events=[_0x08ef('0x1'),_0x08ef('0x2'),'update'];function createListener(_0xaa9e0b,_0x36012b){return function(_0x485ec6){_0x36012b[_0x08ef('0x3')](_0xaa9e0b,_0x485ec6);};}function removeListener(_0x416db0,_0x420af6){return function(){WhatsappInteractionEvents['removeListener'](_0x416db0,_0x420af6);};}exports[_0x08ef('0x4')]=function(_0x190db2){for(var _0x487260=0x0,_0x4b3835=events['length'];_0x487260<_0x4b3835;_0x487260++){var _0x5092c5=events[_0x487260];var _0x2519b9=createListener(_0x08ef('0x5')+_0x5092c5,_0x190db2);WhatsappInteractionEvents['on'](_0x5092c5,_0x2519b9);}};
\ No newline at end of file
+var _0x1e74=['whatsappInteraction:','./whatsappInteraction.events','save','emit','removeListener','length'];(function(_0x4fbb86,_0x374ed0){var _0xb141fe=function(_0x382195){while(--_0x382195){_0x4fbb86['push'](_0x4fbb86['shift']());}};_0xb141fe(++_0x374ed0);}(_0x1e74,0x1cf));var _0x41e7=function(_0x2e8945,_0x45127c){_0x2e8945=_0x2e8945-0x0;var _0x427e52=_0x1e74[_0x2e8945];return _0x427e52;};'use strict';var WhatsappInteractionEvents=require(_0x41e7('0x0'));var events=[_0x41e7('0x1'),'remove','update'];function createListener(_0x15247b,_0x493432){return function(_0x18aedc){_0x493432[_0x41e7('0x2')](_0x15247b,_0x18aedc);};}function removeListener(_0x19eb66,_0x3713ad){return function(){WhatsappInteractionEvents[_0x41e7('0x3')](_0x19eb66,_0x3713ad);};}exports['register']=function(_0xa5a849){for(var _0x17b0cc=0x0,_0x425a81=events[_0x41e7('0x4')];_0x17b0cc<_0x425a81;_0x17b0cc++){var _0x26197a=events[_0x17b0cc];var _0x4d8a2d=createListener(_0x41e7('0x5')+_0x26197a,_0xa5a849);WhatsappInteractionEvents['on'](_0x26197a,_0x4d8a2d);}};
\ No newline at end of file
index 43e64ce..2518845 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53a1=['tracked','whatsapp','whatsappmessage:create','create','/:id/status','status','put','/:id/accept','accept','reject','delete','destroy','util','connect-timeout','express','Router','fs-extra','./whatsappMessage.controller','isAuthenticated','get','/:id','show','post'];(function(_0x35af23,_0x9190f6){var _0x340506=function(_0xd4c26b){while(--_0xd4c26b){_0x35af23['push'](_0x35af23['shift']());}};_0x340506(++_0x9190f6);}(_0x53a1,0x96));var _0x153a=function(_0x17a5f1,_0x4f2ef2){_0x17a5f1=_0x17a5f1-0x0;var _0x46bd7f=_0x53a1[_0x17a5f1];return _0x46bd7f;};'use strict';var multer=require('multer');var util=require(_0x153a('0x0'));var path=require('path');var timeout=require(_0x153a('0x1'));var express=require(_0x153a('0x2'));var router=express[_0x153a('0x3')]();var fs_extra=require(_0x153a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x153a('0x5'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0x153a('0x6')](),controller['describe']);router[_0x153a('0x7')](_0x153a('0x8'),auth[_0x153a('0x6')](),controller[_0x153a('0x9')]);router[_0x153a('0xa')]('/',auth[_0x153a('0x6')](),interaction[_0x153a('0xb')](_0x153a('0xc'),_0x153a('0xd')),controller[_0x153a('0xe')]);router[_0x153a('0xa')](_0x153a('0xf'),controller[_0x153a('0x10')]);router[_0x153a('0x11')](_0x153a('0x8'),auth[_0x153a('0x6')](),controller['update']);router[_0x153a('0x11')](_0x153a('0x12'),auth['isAuthenticated'](),controller[_0x153a('0x13')]);router[_0x153a('0x11')]('/:id/reject',auth['isAuthenticated'](),controller[_0x153a('0x14')]);router[_0x153a('0x15')](_0x153a('0x8'),auth[_0x153a('0x6')](),controller[_0x153a('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xf7ed=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','post','whatsappmessage:create','/:id/status','status','put','/:id/accept','/:id/reject','reject','delete','destroy'];(function(_0x572838,_0x18b70b){var _0x3de346=function(_0x27ef97){while(--_0x27ef97){_0x572838['push'](_0x572838['shift']());}};_0x3de346(++_0x18b70b);}(_0xf7ed,0x139));var _0xdf7e=function(_0x217cd1,_0x10c0a5){_0x217cd1=_0x217cd1-0x0;var _0x515315=_0xf7ed[_0x217cd1];return _0x515315;};'use strict';var multer=require(_0xdf7e('0x0'));var util=require(_0xdf7e('0x1'));var path=require('path');var timeout=require(_0xdf7e('0x2'));var express=require(_0xdf7e('0x3'));var router=express[_0xdf7e('0x4')]();var fs_extra=require(_0xdf7e('0x5'));var auth=require(_0xdf7e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdf7e('0x7'));var controller=require('./whatsappMessage.controller');router[_0xdf7e('0x8')]('/',auth['isAuthenticated'](),controller[_0xdf7e('0x9')]);router[_0xdf7e('0x8')](_0xdf7e('0xa'),auth[_0xdf7e('0xb')](),controller[_0xdf7e('0xc')]);router[_0xdf7e('0x8')](_0xdf7e('0xd'),auth['isAuthenticated'](),controller[_0xdf7e('0xe')]);router[_0xdf7e('0xf')]('/',auth[_0xdf7e('0xb')](),interaction['tracked']('whatsapp',_0xdf7e('0x10')),controller['create']);router[_0xdf7e('0xf')](_0xdf7e('0x11'),controller[_0xdf7e('0x12')]);router[_0xdf7e('0x13')](_0xdf7e('0xd'),auth[_0xdf7e('0xb')](),controller['update']);router[_0xdf7e('0x13')](_0xdf7e('0x14'),auth[_0xdf7e('0xb')](),controller['accept']);router[_0xdf7e('0x13')](_0xdf7e('0x15'),auth['isAuthenticated'](),controller[_0xdf7e('0x16')]);router[_0xdf7e('0x17')](_0xdf7e('0xd'),auth[_0xdf7e('0xb')](),controller[_0xdf7e('0x18')]);module[_0xdf7e('0x19')]=router;
\ No newline at end of file
index eae638f..0896a48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8558=['out','STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8558,0x1c5));var _0x8855=function(_0x184305,_0x46ec67){_0x184305=_0x184305-0x0;var _0x218d7a=_0x8558[_0x184305];return _0x218d7a;};'use strict';var Sequelize=require(_0x8855('0x0'));module[_0x8855('0x1')]={'body':{'type':Sequelize[_0x8855('0x2')](_0x8855('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x8855('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x8855('0x5')]('in',_0x8855('0x6')),'defaultValue':_0x8855('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x8855('0x7')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x8855('0x8')]},'secret':{'type':Sequelize[_0x8855('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x8855('0x7')]},'providerResponse':{'type':Sequelize[_0x8855('0x2')]}};
\ No newline at end of file
+var _0x826f=['exports','TEXT','medium','ENUM','out','STRING','DATE','BOOLEAN','sequelize'];(function(_0x5bdeb0,_0x409cbe){var _0xd53447=function(_0x5640a9){while(--_0x5640a9){_0x5bdeb0['push'](_0x5bdeb0['shift']());}};_0xd53447(++_0x409cbe);}(_0x826f,0x143));var _0xf826=function(_0x11bc21,_0x4ee788){_0x11bc21=_0x11bc21-0x0;var _0x8c87ee=_0x826f[_0x11bc21];return _0x8c87ee;};'use strict';var Sequelize=require(_0xf826('0x0'));module[_0xf826('0x1')]={'body':{'type':Sequelize[_0xf826('0x2')](_0xf826('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xf826('0x4')]('in','out'),'defaultValue':_0xf826('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xf826('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xf826('0x7')]},'secret':{'type':Sequelize[_0xf826('0x8')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf826('0x6')]},'providerResponse':{'type':Sequelize[_0xf826('0x2')]}};
\ No newline at end of file
index 8a04642..f5c9a0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8e=['user','WhatsappInteractionId','isNil','read1stAt','format','interaction','get','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','agent','internal','manual','channel','motionChannel','EventManager','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','contact','fullname','email','interface','event','rejectmessage','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','stack','name','send','index','map','WhatsappMessage','fieldName','type','key','model','keys','query','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','options','includeAll','include','show','find','create','body','update','params','destroy','describe','whatsapp-interactions','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId'];(function(_0x408d22,_0x53eef9){var _0x58effd=function(_0x4ab8ee){while(--_0x4ab8ee){_0x408d22['push'](_0x408d22['shift']());}};_0x58effd(++_0x53eef9);}(_0xce8e,0x149));var _0xece8=function(_0x5aa5a3,_0x1f1d3d){_0x5aa5a3=_0x5aa5a3-0x0;var _0x3ef580=_0xce8e[_0x5aa5a3];return _0x3ef580;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xece8('0x0'));var zipdir=require(_0xece8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xece8('0x2'));var moment=require(_0xece8('0x3'));var BPromise=require(_0xece8('0x4'));var Mustache=require(_0xece8('0x5'));var util=require(_0xece8('0x6'));var path=require(_0xece8('0x7'));var sox=require(_0xece8('0x8'));var csv=require(_0xece8('0x9'));var ejs=require(_0xece8('0xa'));var fs=require('fs');var fs_extra=require(_0xece8('0xb'));var _=require(_0xece8('0xc'));var squel=require('squel');var crypto=require(_0xece8('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xece8('0xe'));var toCsv=require(_0xece8('0x9'));var querystring=require(_0xece8('0xf'));var Papa=require(_0xece8('0x10'));var Redis=require(_0xece8('0x11'));var authService=require(_0xece8('0x12'));var qs=require(_0xece8('0x13'));var as=require(_0xece8('0x14'));var hardwareService=require(_0xece8('0x15'));var logger=require(_0xece8('0x16'))(_0xece8('0x17'));var utils=require(_0xece8('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xece8('0x19'));var db=require(_0xece8('0x1a'))['db'];config[_0xece8('0x1b')]=_[_0xece8('0x1c')](config[_0xece8('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xece8('0x1d'))(new Redis(config['redis']));require(_0xece8('0x1e'))[_0xece8('0x1f')](socket);var jayson=require(_0xece8('0x20'));var client=jayson[_0xece8('0x21')][_0xece8('0x22')]({'port':0x232c});var client9002=jayson[_0xece8('0x21')][_0xece8('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x1e2778,_0x1f8bdf,_0x1e5d51,_0x38b6d6){return new BPromise(function(_0x4ed595,_0x1c780d){var _0x272d1a=_0x38b6d6||client;return _0x272d1a[_0xece8('0x23')](_0x1e2778,_0x1e5d51)['then'](function(_0xfe50ae){logger[_0xece8('0x24')](_0xece8('0x25'),_0x1f8bdf,'request\x20sent');logger[_0xece8('0x26')](_0xece8('0x27'),_0x1f8bdf,_0xece8('0x28'),JSON['stringify'](_0xfe50ae));if(_0xfe50ae[_0xece8('0x29')]){if(_0xfe50ae[_0xece8('0x29')][_0xece8('0x2a')]===0x1f4){logger[_0xece8('0x29')](_0xece8('0x25'),_0x1f8bdf,_0xfe50ae['error']['message']);return _0x1c780d(_0xfe50ae[_0xece8('0x29')][_0xece8('0x2b')]);}logger['error'](_0xece8('0x25'),_0x1f8bdf,_0xfe50ae['error'][_0xece8('0x2b')]);return _0x4ed595(_0xfe50ae[_0xece8('0x29')][_0xece8('0x2b')]);}else{logger[_0xece8('0x24')](_0xece8('0x25'),_0x1f8bdf,_0xece8('0x28'));_0x4ed595(_0xfe50ae[_0xece8('0x2c')][_0xece8('0x2b')]);}})[_0xece8('0x2d')](function(_0x2e5626){logger[_0xece8('0x29')](_0xece8('0x25'),_0x1f8bdf,_0x2e5626);_0x1c780d(_0x2e5626);});});}function respondWithStatusCode(_0x587207,_0x5ba5b4){_0x5ba5b4=_0x5ba5b4||0xcc;return function(_0x336560){if(_0x336560){return _0x587207[_0xece8('0x2e')](_0x5ba5b4);}return _0x587207['status'](_0x5ba5b4)[_0xece8('0x2f')]();};}function respondWithResult(_0x35647b,_0x510db5){_0x510db5=_0x510db5||0xc8;return function(_0x154168){if(_0x154168){return _0x35647b[_0xece8('0x30')](_0x510db5)['json'](_0x154168);}};}function respondWithFilteredResult(_0x430b10,_0x2d5c50){return function(_0x4f7552){if(_0x4f7552){var _0x1f3c22=typeof _0x2d5c50[_0xece8('0x31')]===_0xece8('0x32')&&typeof _0x2d5c50[_0xece8('0x33')]===_0xece8('0x32');var _0x35d70b=_0x4f7552[_0xece8('0x34')];var _0x30d29b=_0x1f3c22?0x0:_0x2d5c50[_0xece8('0x31')];var _0x67f29a=_0x1f3c22?_0x4f7552[_0xece8('0x34')]:_0x2d5c50[_0xece8('0x31')]+_0x2d5c50[_0xece8('0x33')];var _0x5c7f55;if(_0x67f29a>=_0x35d70b){_0x67f29a=_0x35d70b;_0x5c7f55=0xc8;}else{_0x5c7f55=0xce;}_0x430b10[_0xece8('0x30')](_0x5c7f55);return _0x430b10[_0xece8('0x35')](_0xece8('0x36'),_0x30d29b+'-'+_0x67f29a+'/'+_0x35d70b)[_0xece8('0x37')](_0x4f7552);}return null;};}function patchUpdates(_0x4690e0){return function(_0x250762){try{jsonpatch[_0xece8('0x38')](_0x250762,_0x4690e0,!![]);}catch(_0x513e62){return BPromise[_0xece8('0x39')](_0x513e62);}return _0x250762[_0xece8('0x3a')]();};}function saveUpdates(_0x9dd5f3,_0x5e28f0){return function(_0x45d2d3){if(_0x45d2d3){return _0x45d2d3['update'](_0x9dd5f3)['then'](function(_0x1f85fe){return _0x1f85fe;});}return null;};}function removeEntity(_0x164541,_0x124554){return function(_0x20b112){if(_0x20b112){return _0x20b112['destroy']()[_0xece8('0x3b')](function(){_0x164541[_0xece8('0x30')](0xcc)[_0xece8('0x2f')]();});}};}function handleEntityNotFound(_0x4b0111,_0x5122df){return function(_0x1a94d6){if(!_0x1a94d6){_0x4b0111[_0xece8('0x2e')](0x194);}return _0x1a94d6;};}function handleError(_0x6f66c0,_0x133fbd){_0x133fbd=_0x133fbd||0x1f4;return function(_0x4a3135){logger['error'](_0x4a3135[_0xece8('0x3c')]);if(_0x4a3135[_0xece8('0x3d')]){delete _0x4a3135[_0xece8('0x3d')];}_0x6f66c0['status'](_0x133fbd)[_0xece8('0x3e')](_0x4a3135);};}exports[_0xece8('0x3f')]=function(_0x10c3e7,_0x16539b){var _0x1c36ed={},_0x223a5d={},_0x178373={'count':0x0,'rows':[]};var _0x5545a8=_[_0xece8('0x40')](db[_0xece8('0x41')]['rawAttributes'],function(_0xf8a355){return{'name':_0xf8a355[_0xece8('0x42')],'type':_0xf8a355[_0xece8('0x43')][_0xece8('0x44')]};});_0x223a5d[_0xece8('0x45')]=_[_0xece8('0x40')](_0x5545a8,_0xece8('0x3d'));_0x223a5d['query']=_[_0xece8('0x46')](_0x10c3e7[_0xece8('0x47')]);_0x223a5d[_0xece8('0x48')]=_[_0xece8('0x49')](_0x223a5d[_0xece8('0x45')],_0x223a5d[_0xece8('0x47')]);_0x1c36ed['attributes']=_['intersection'](_0x223a5d[_0xece8('0x45')],qs['fields'](_0x10c3e7[_0xece8('0x47')][_0xece8('0x4a')]));_0x1c36ed['attributes']=_0x1c36ed['attributes'][_0xece8('0x4b')]?_0x1c36ed[_0xece8('0x4c')]:_0x223a5d[_0xece8('0x45')];if(!_0x10c3e7['query'][_0xece8('0x4d')](_0xece8('0x4e'))){_0x1c36ed[_0xece8('0x33')]=qs['limit'](_0x10c3e7[_0xece8('0x47')]['limit']);_0x1c36ed['offset']=qs['offset'](_0x10c3e7[_0xece8('0x47')][_0xece8('0x31')]);}_0x1c36ed[_0xece8('0x4f')]=qs[_0xece8('0x50')](_0x10c3e7[_0xece8('0x47')][_0xece8('0x50')]);_0x1c36ed[_0xece8('0x51')]=qs[_0xece8('0x48')](_[_0xece8('0x52')](_0x10c3e7[_0xece8('0x47')],_0x223a5d['filters']),_0x5545a8);if(_0x10c3e7['query']['filter']){_0x1c36ed[_0xece8('0x51')]=_['merge'](_0x1c36ed[_0xece8('0x51')],{'$or':_[_0xece8('0x40')](_0x5545a8,function(_0x4c7308){if(_0x4c7308[_0xece8('0x43')]!==_0xece8('0x53')){var _0x42a257={};_0x42a257[_0x4c7308[_0xece8('0x3d')]]={'$like':'%'+_0x10c3e7[_0xece8('0x47')][_0xece8('0x54')]+'%'};return _0x42a257;}})});}_0x1c36ed=_['merge']({},_0x1c36ed,_0x10c3e7[_0xece8('0x55')]);var _0x169cea={'where':_0x1c36ed[_0xece8('0x51')]};return db[_0xece8('0x41')][_0xece8('0x34')](_0x169cea)[_0xece8('0x3b')](function(_0x48adc1){_0x178373[_0xece8('0x34')]=_0x48adc1;if(_0x10c3e7[_0xece8('0x47')][_0xece8('0x56')]){_0x1c36ed[_0xece8('0x57')]=[{'all':!![]}];}return db[_0xece8('0x41')]['findAll'](_0x1c36ed);})[_0xece8('0x3b')](function(_0x4b8fb9){_0x178373['rows']=_0x4b8fb9;return _0x178373;})['then'](respondWithFilteredResult(_0x16539b,_0x1c36ed))[_0xece8('0x2d')](handleError(_0x16539b,null));};exports[_0xece8('0x58')]=function(_0x3988c2,_0x22ed3f){var _0x45950c={'raw':!![],'where':{'id':_0x3988c2['params']['id']}},_0x165048={};_0x165048[_0xece8('0x45')]=_[_0xece8('0x46')](db['WhatsappMessage']['rawAttributes']);_0x165048['query']=_[_0xece8('0x46')](_0x3988c2[_0xece8('0x47')]);_0x165048[_0xece8('0x48')]=_[_0xece8('0x49')](_0x165048[_0xece8('0x45')],_0x165048[_0xece8('0x47')]);_0x45950c[_0xece8('0x4c')]=_[_0xece8('0x49')](_0x165048[_0xece8('0x45')],qs[_0xece8('0x4a')](_0x3988c2[_0xece8('0x47')]['fields']));_0x45950c[_0xece8('0x4c')]=_0x45950c[_0xece8('0x4c')][_0xece8('0x4b')]?_0x45950c[_0xece8('0x4c')]:_0x165048[_0xece8('0x45')];if(_0x3988c2[_0xece8('0x47')][_0xece8('0x56')]){_0x45950c[_0xece8('0x57')]=[{'all':!![]}];}_0x45950c=_['merge']({},_0x45950c,_0x3988c2[_0xece8('0x55')]);return db[_0xece8('0x41')][_0xece8('0x59')](_0x45950c)['then'](handleEntityNotFound(_0x22ed3f,null))[_0xece8('0x3b')](respondWithResult(_0x22ed3f,null))['catch'](handleError(_0x22ed3f,null));};exports[_0xece8('0x5a')]=function(_0xfc6276,_0x32ce6a){return db['WhatsappMessage'][_0xece8('0x5a')](_0xfc6276[_0xece8('0x5b')],{})[_0xece8('0x3b')](respondWithResult(_0x32ce6a,0xc9))[_0xece8('0x2d')](handleError(_0x32ce6a,null));};exports[_0xece8('0x5c')]=function(_0x549eaf,_0x23d3c4){if(_0x549eaf['body']['id']){delete _0x549eaf[_0xece8('0x5b')]['id'];}return db[_0xece8('0x41')]['find']({'where':{'id':_0x549eaf[_0xece8('0x5d')]['id']}})[_0xece8('0x3b')](handleEntityNotFound(_0x23d3c4,null))[_0xece8('0x3b')](saveUpdates(_0x549eaf[_0xece8('0x5b')],null))['then'](respondWithResult(_0x23d3c4,null))[_0xece8('0x2d')](handleError(_0x23d3c4,null));};exports[_0xece8('0x5e')]=function(_0x1be638,_0x5b32ed){return db[_0xece8('0x41')]['find']({'where':{'id':_0x1be638[_0xece8('0x5d')]['id']}})[_0xece8('0x3b')](handleEntityNotFound(_0x5b32ed,null))[_0xece8('0x3b')](removeEntity(_0x5b32ed,null))[_0xece8('0x2d')](handleError(_0x5b32ed,null));};exports[_0xece8('0x5f')]=function(_0x58a670,_0x4c488f){return db[_0xece8('0x41')][_0xece8('0x5f')]()[_0xece8('0x3b')](respondWithResult(_0x4c488f,null))[_0xece8('0x2d')](handleError(_0x4c488f,null));};var interaction_log=require(_0xece8('0x16'))(_0xece8('0x60'));exports[_0xece8('0x61')]=function(_0x263ff8,_0x4db2ba,_0x3ef902){var _0x5b04c0={'agent':{},'channel':_0xece8('0x62')};if(_0x263ff8['body']['id']){delete _0x263ff8['body']['id'];}_0x263ff8[_0xece8('0x5b')][_0xece8('0x63')]=!![];_0x263ff8[_0xece8('0x5b')][_0xece8('0x64')]=moment()['format'](_0xece8('0x65'));_0x263ff8[_0xece8('0x5b')]['UserId']=_0x263ff8[_0xece8('0x5b')][_0xece8('0x66')]||_0x263ff8[_0xece8('0x67')]['id'];_0x5b04c0['agent']['id']=_0x263ff8[_0xece8('0x5b')][_0xece8('0x66')];return db[_0xece8('0x41')]['find']({'where':{'id':_0x263ff8[_0xece8('0x5d')]['id'],'UserId':null}})[_0xece8('0x3b')](handleEntityNotFound(_0x4db2ba,null))[_0xece8('0x3b')](saveUpdates(_0x263ff8['body'],null))[_0xece8('0x3b')](function(_0x414f32){if(_0x414f32){_0x5b04c0['message']=_0x414f32['get']({'plain':!![]});return db['WhatsappInteraction'][_0xece8('0x59')]({'where':{'id':_0x414f32[_0xece8('0x68')]}});}return null;})[_0xece8('0x3b')](handleEntityNotFound(_0x4db2ba,null))[_0xece8('0x3b')](function(_0x1532cd){if(_0x1532cd){return _0x1532cd[_0xece8('0x5c')]({'UserId':_0x263ff8[_0xece8('0x5b')]['UserId'],'read1stAt':_[_0xece8('0x69')](_0x1532cd[_0xece8('0x6a')])?moment()[_0xece8('0x6b')](_0xece8('0x65')):undefined});}return null;})[_0xece8('0x3b')](function(_0x4e3b13){if(_0x4e3b13){_0x5b04c0[_0xece8('0x6c')]=_0x4e3b13[_0xece8('0x6d')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x263ff8[_0xece8('0x67')]['id'],_0x263ff8[_0xece8('0x67')][_0xece8('0x3d')],_0x263ff8[_0xece8('0x67')][_0xece8('0x6e')],_0x5b04c0[_0xece8('0x6c')]['id'],_0x263ff8[_0xece8('0x5b')]?JSON[_0xece8('0x6f')](_0x263ff8[_0xece8('0x5b')]):_0xece8('0x70'));return respondWithRpcPromise(_0xece8('0x71'),_0xece8('0x72'),_0x5b04c0);}return null;})[_0xece8('0x3b')](function(_0x45d486){var _0x3d400b=_0xece8('0x73')+_0x45d486[_0xece8('0x2b')]['ContactId'];return db[_0xece8('0x74')][_0xece8('0x47')](_0x3d400b,{'type':db[_0xece8('0x75')][_0xece8('0x76')][_0xece8('0x77')],'raw':!![]})['then'](function(_0x549e85){return _0x549e85;});})[_0xece8('0x3b')](function(_0xe16f70){if(_0xe16f70){_0x5b04c0[_0xece8('0x2b')]['contact']=_0xe16f70[0x0];if(!_0x263ff8[_0xece8('0x5b')]['UserId'])return;return db[_0xece8('0x78')][_0xece8('0x59')]({'where':{'id':_0x263ff8[_0xece8('0x5b')][_0xece8('0x66')],'role':_0xece8('0x79')},'attributes':['id',_0xece8('0x3d'),'fullname','email',_0xece8('0x7a')],'raw':!![]});}return null;})['then'](function(_0x120fa5){if(!_0x120fa5)return null;_0x5b04c0['message'][_0xece8('0x79')]=_0x120fa5;return _0x5b04c0;})[_0xece8('0x3b')](function(_0x2b80ec){if(_0x2b80ec){if(_0x263ff8[_0xece8('0x5b')][_0xece8('0x7b')]){_0x5b04c0[_0xece8('0x2b')]['interface']=util[_0xece8('0x6b')]('SIP/%s',_0x263ff8[_0xece8('0x67')][_0xece8('0x3d')]);_0x5b04c0[_0xece8('0x2b')]['channel']=_0x5b04c0[_0xece8('0x7c')];_0x5b04c0[_0xece8('0x2b')][_0xece8('0x7d')]=_0x5b04c0[_0xece8('0x7c')];_0x5b04c0[_0xece8('0x2b')]['event']=_0xece8('0x61');return respondWithRpcPromise(_0xece8('0x7e'),_0xece8('0x7e'),{'event':'acceptmessage','message':_0x5b04c0[_0xece8('0x2b')]},client9002)['then'](function(){return _0x5b04c0;});}return _0x5b04c0;}return null;})['then'](respondWithResult(_0x4db2ba,null))['catch'](handleError(_0x4db2ba,null));};var interaction_log=require(_0xece8('0x16'))(_0xece8('0x60'));exports[_0xece8('0x39')]=function(_0x3b032f,_0x22dcfb,_0x4739db){var _0x540e37={'agent':{},'channel':_0xece8('0x62')};if(_0x3b032f['body']['id']){delete _0x3b032f[_0xece8('0x5b')]['id'];}_0x3b032f['body'][_0xece8('0x66')]=_0x3b032f[_0xece8('0x5b')]['UserId']||_0x3b032f[_0xece8('0x67')]['id'];_0x540e37[_0xece8('0x79')]['id']=_0x3b032f[_0xece8('0x5b')][_0xece8('0x66')];return db[_0xece8('0x41')][_0xece8('0x59')]({'where':{'id':_0x3b032f[_0xece8('0x5d')]['id'],'UserId':null}})[_0xece8('0x3b')](handleEntityNotFound(_0x22dcfb,null))['then'](function(_0x11ce1b){if(_0x11ce1b){_0x540e37[_0xece8('0x2b')]=_0x11ce1b[_0xece8('0x6d')]({'plain':!![]});return db[_0xece8('0x7f')][_0xece8('0x59')]({'where':{'id':_0x11ce1b[_0xece8('0x68')]}});}return null;})[_0xece8('0x3b')](handleEntityNotFound(_0x22dcfb,null))[_0xece8('0x3b')](function(_0x1cc988){if(_0x1cc988){_0x540e37['interaction']=_0x1cc988[_0xece8('0x6d')]({'plain':!![]});interaction_log[_0xece8('0x24')](_0xece8('0x80'),_0x3b032f['user']['id'],_0x3b032f[_0xece8('0x67')][_0xece8('0x3d')],_0x3b032f[_0xece8('0x67')][_0xece8('0x6e')],_0x540e37[_0xece8('0x6c')]['id'],_0x3b032f['body']?JSON[_0xece8('0x6f')](_0x3b032f[_0xece8('0x5b')]):_0xece8('0x70'));return respondWithRpcPromise('RejectMessage',_0xece8('0x81'),_0x540e37);}return null;})[_0xece8('0x3b')](function(_0x3df3c2){var _0x7a14ec=_0xece8('0x73')+_0x3df3c2['message'][_0xece8('0x82')];return db['sequelize'][_0xece8('0x47')](_0x7a14ec,{'type':db['Sequelize']['QueryTypes'][_0xece8('0x77')],'raw':!![]})[_0xece8('0x3b')](function(_0x5c69a5){return _0x5c69a5;});})[_0xece8('0x3b')](function(_0x561d75){if(_0x561d75){_0x540e37[_0xece8('0x2b')][_0xece8('0x83')]=_0x561d75[0x0];if(!_0x3b032f[_0xece8('0x5b')]['UserId'])return;return db[_0xece8('0x78')][_0xece8('0x59')]({'where':{'id':_0x3b032f[_0xece8('0x5b')][_0xece8('0x66')],'role':_0xece8('0x79')},'attributes':['id',_0xece8('0x3d'),_0xece8('0x84'),_0xece8('0x85'),_0xece8('0x7a')],'raw':!![]});}return null;})[_0xece8('0x3b')](function(_0x3fd81f){if(!_0x3fd81f)return null;_0x540e37[_0xece8('0x2b')][_0xece8('0x79')]=_0x3fd81f;return _0x540e37;})[_0xece8('0x3b')](function(_0x36270e){if(_0x36270e){_0x36270e[_0xece8('0x2b')][_0xece8('0x86')]=util[_0xece8('0x6b')]('SIP/%s',_0x3b032f[_0xece8('0x67')][_0xece8('0x3d')]);_0x36270e['message']['channel']=_0x540e37[_0xece8('0x7c')];_0x36270e['message'][_0xece8('0x7d')]=_0x540e37['channel'];_0x36270e[_0xece8('0x2b')][_0xece8('0x87')]=_0xece8('0x39');respondWithRpcPromise(_0xece8('0x7e'),_0xece8('0x7e'),{'event':_0xece8('0x88'),'message':_0x36270e[_0xece8('0x2b')]},client9002);return _0x540e37;}return null;})[_0xece8('0x3b')](respondWithResult(_0x22dcfb,null))[_0xece8('0x2d')](handleError(_0x22dcfb,null));};exports[_0xece8('0x30')]=function(_0x507a9a,_0x5f257f,_0x5c60ac){if(_0x507a9a[_0xece8('0x5b')]['id']){delete _0x507a9a[_0xece8('0x5b')]['id'];}var _0x5b6f47;return db[_0xece8('0x41')]['find']({'where':{'id':_0x507a9a[_0xece8('0x5d')]['id']}})[_0xece8('0x3b')](handleEntityNotFound(_0x5f257f,null))[_0xece8('0x3b')](function(_0x2e27dc){if(_0x2e27dc){_0x5b6f47=_0x2e27dc;return db[_0xece8('0x89')]['find']({'where':{'id':_0x2e27dc['WhatsappAccountId']}});}})[_0xece8('0x3b')](handleEntityNotFound(_0x5f257f,null))[_0xece8('0x3b')](function(_0x14186a){if(_0x14186a){logger[_0xece8('0x26')](_0xece8('0x8a'),_0xece8('0x30'),'received\x20delivery\x20report\x20from',_0x14186a['type'],util[_0xece8('0x8b')](_0x507a9a['body'],{'showHidden':![],'depth':null}));switch(_0x14186a[_0xece8('0x43')]){case _0xece8('0x8c'):if(_0x507a9a['body'][_0xece8('0x8d')]&&_0x507a9a['body'][_0xece8('0x8d')]===_0x5b6f47['messageId']&&_0x507a9a[_0xece8('0x5b')][_0xece8('0x8e')]&&_0x507a9a[_0xece8('0x5b')]['MessageStatus']===_0xece8('0x63')){return _0x5b6f47[_0xece8('0x5c')]({'read':!![]});}else{logger['error'](_0xece8('0x8f'),_0xece8('0x30'),_0xece8('0x8c'),util['inspect'](_0x507a9a[_0xece8('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x5b6f47;}})[_0xece8('0x3b')](respondWithResult(_0x5f257f,null))[_0xece8('0x2d')](handleError(_0x5f257f,null));};
\ No newline at end of file
+var _0xbfc8=['fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','show','params','keys','WhatsappMessage','rawAttributes','options','find','body','describe','whatsapp','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','get','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','SELECT','fullname','manual','interface','SIP/%s','channel','motionChannel','event','accept','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','QueryTypes','contact','User','email','internal','EventManager','rejectmessage','WhatsappAccount','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./whatsappMessage.socket','jayson/promise','client','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','stack','name','send','map','fieldName','type','model','query','filters','intersection','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbfc8,0xd0));var _0x8bfc=function(_0x1aa386,_0x1b8848){_0x1aa386=_0x1aa386-0x0;var _0x558868=_0xbfc8[_0x1aa386];return _0x558868;};'use strict';var emlformat=require(_0x8bfc('0x0'));var rimraf=require(_0x8bfc('0x1'));var zipdir=require(_0x8bfc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8bfc('0x3'));var moment=require('moment');var BPromise=require(_0x8bfc('0x4'));var Mustache=require(_0x8bfc('0x5'));var util=require(_0x8bfc('0x6'));var path=require(_0x8bfc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8bfc('0x8'));var fs=require('fs');var fs_extra=require(_0x8bfc('0x9'));var _=require(_0x8bfc('0xa'));var squel=require(_0x8bfc('0xb'));var crypto=require(_0x8bfc('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8bfc('0xd'));var toCsv=require(_0x8bfc('0xe'));var querystring=require('querystring');var Papa=require(_0x8bfc('0xf'));var Redis=require(_0x8bfc('0x10'));var authService=require(_0x8bfc('0x11'));var qs=require(_0x8bfc('0x12'));var as=require(_0x8bfc('0x13'));var hardwareService=require(_0x8bfc('0x14'));var logger=require(_0x8bfc('0x15'))(_0x8bfc('0x16'));var utils=require(_0x8bfc('0x17'));var config=require(_0x8bfc('0x18'));var licenseUtil=require(_0x8bfc('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x8bfc('0x1a')](config[_0x8bfc('0x1b')],{'host':_0x8bfc('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8bfc('0x1d'))['register'](socket);var jayson=require(_0x8bfc('0x1e'));var client=jayson[_0x8bfc('0x1f')][_0x8bfc('0x20')]({'port':0x232c});var client9002=jayson[_0x8bfc('0x1f')][_0x8bfc('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x2ed815,_0xb41198,_0x5969bd,_0x3d21d8){return new BPromise(function(_0x3b70b9,_0x1328cb){var _0x171891=_0x3d21d8||client;return _0x171891[_0x8bfc('0x21')](_0x2ed815,_0x5969bd)['then'](function(_0xd53abf){logger[_0x8bfc('0x22')](_0x8bfc('0x23'),_0xb41198,_0x8bfc('0x24'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xb41198,'request\x20sent',JSON[_0x8bfc('0x25')](_0xd53abf));if(_0xd53abf[_0x8bfc('0x26')]){if(_0xd53abf[_0x8bfc('0x26')][_0x8bfc('0x27')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0xb41198,_0xd53abf[_0x8bfc('0x26')]['message']);return _0x1328cb(_0xd53abf[_0x8bfc('0x26')][_0x8bfc('0x28')]);}logger[_0x8bfc('0x26')](_0x8bfc('0x23'),_0xb41198,_0xd53abf[_0x8bfc('0x26')][_0x8bfc('0x28')]);return _0x3b70b9(_0xd53abf[_0x8bfc('0x26')][_0x8bfc('0x28')]);}else{logger[_0x8bfc('0x22')]('WhatsappMessage,\x20%s,\x20%s',_0xb41198,_0x8bfc('0x24'));_0x3b70b9(_0xd53abf[_0x8bfc('0x29')][_0x8bfc('0x28')]);}})[_0x8bfc('0x2a')](function(_0x2f1844){logger[_0x8bfc('0x26')](_0x8bfc('0x23'),_0xb41198,_0x2f1844);_0x1328cb(_0x2f1844);});});}function respondWithStatusCode(_0x5cc0df,_0x2a26b2){_0x2a26b2=_0x2a26b2||0xcc;return function(_0x1d4b4d){if(_0x1d4b4d){return _0x5cc0df[_0x8bfc('0x2b')](_0x2a26b2);}return _0x5cc0df['status'](_0x2a26b2)[_0x8bfc('0x2c')]();};}function respondWithResult(_0xbd1cd6,_0x36f27f){_0x36f27f=_0x36f27f||0xc8;return function(_0x2d5e52){if(_0x2d5e52){return _0xbd1cd6[_0x8bfc('0x2d')](_0x36f27f)[_0x8bfc('0x2e')](_0x2d5e52);}};}function respondWithFilteredResult(_0x25cb2f,_0x2137b5){return function(_0x347aa9){if(_0x347aa9){var _0x4dec73=typeof _0x2137b5[_0x8bfc('0x2f')]==='undefined'&&typeof _0x2137b5[_0x8bfc('0x30')]==='undefined';var _0x45140e=_0x347aa9[_0x8bfc('0x31')];var _0x4b854e=_0x4dec73?0x0:_0x2137b5[_0x8bfc('0x2f')];var _0x43a7f9=_0x4dec73?_0x347aa9[_0x8bfc('0x31')]:_0x2137b5['offset']+_0x2137b5[_0x8bfc('0x30')];var _0xe912;if(_0x43a7f9>=_0x45140e){_0x43a7f9=_0x45140e;_0xe912=0xc8;}else{_0xe912=0xce;}_0x25cb2f[_0x8bfc('0x2d')](_0xe912);return _0x25cb2f[_0x8bfc('0x32')](_0x8bfc('0x33'),_0x4b854e+'-'+_0x43a7f9+'/'+_0x45140e)[_0x8bfc('0x2e')](_0x347aa9);}return null;};}function patchUpdates(_0x2eb8f3){return function(_0x2f70ea){try{jsonpatch[_0x8bfc('0x34')](_0x2f70ea,_0x2eb8f3,!![]);}catch(_0x5238dc){return BPromise[_0x8bfc('0x35')](_0x5238dc);}return _0x2f70ea[_0x8bfc('0x36')]();};}function saveUpdates(_0x4a5235,_0x2aa241){return function(_0xe15ade){if(_0xe15ade){return _0xe15ade[_0x8bfc('0x37')](_0x4a5235)['then'](function(_0x48a8a0){return _0x48a8a0;});}return null;};}function removeEntity(_0x3c2c8b,_0x2b6da3){return function(_0x2f0fad){if(_0x2f0fad){return _0x2f0fad['destroy']()[_0x8bfc('0x38')](function(){_0x3c2c8b[_0x8bfc('0x2d')](0xcc)[_0x8bfc('0x2c')]();});}};}function handleEntityNotFound(_0x5678d7,_0x53c3a7){return function(_0x4b47a7){if(!_0x4b47a7){_0x5678d7['sendStatus'](0x194);}return _0x4b47a7;};}function handleError(_0x1ae7e6,_0x188fba){_0x188fba=_0x188fba||0x1f4;return function(_0x374773){logger[_0x8bfc('0x26')](_0x374773[_0x8bfc('0x39')]);if(_0x374773['name']){delete _0x374773[_0x8bfc('0x3a')];}_0x1ae7e6[_0x8bfc('0x2d')](_0x188fba)[_0x8bfc('0x3b')](_0x374773);};}exports['index']=function(_0xd8f1d3,_0x1686ac){var _0x308739={},_0x51dcc1={},_0x551215={'count':0x0,'rows':[]};var _0x47ed73=_[_0x8bfc('0x3c')](db['WhatsappMessage']['rawAttributes'],function(_0x260d3f){return{'name':_0x260d3f[_0x8bfc('0x3d')],'type':_0x260d3f[_0x8bfc('0x3e')]['key']};});_0x51dcc1[_0x8bfc('0x3f')]=_[_0x8bfc('0x3c')](_0x47ed73,_0x8bfc('0x3a'));_0x51dcc1[_0x8bfc('0x40')]=_['keys'](_0xd8f1d3[_0x8bfc('0x40')]);_0x51dcc1[_0x8bfc('0x41')]=_[_0x8bfc('0x42')](_0x51dcc1[_0x8bfc('0x3f')],_0x51dcc1['query']);_0x308739[_0x8bfc('0x43')]=_[_0x8bfc('0x42')](_0x51dcc1['model'],qs['fields'](_0xd8f1d3[_0x8bfc('0x40')][_0x8bfc('0x44')]));_0x308739[_0x8bfc('0x43')]=_0x308739[_0x8bfc('0x43')][_0x8bfc('0x45')]?_0x308739[_0x8bfc('0x43')]:_0x51dcc1[_0x8bfc('0x3f')];if(!_0xd8f1d3[_0x8bfc('0x40')][_0x8bfc('0x46')]('nolimit')){_0x308739[_0x8bfc('0x30')]=qs[_0x8bfc('0x30')](_0xd8f1d3[_0x8bfc('0x40')]['limit']);_0x308739['offset']=qs[_0x8bfc('0x2f')](_0xd8f1d3[_0x8bfc('0x40')][_0x8bfc('0x2f')]);}_0x308739[_0x8bfc('0x47')]=qs[_0x8bfc('0x48')](_0xd8f1d3[_0x8bfc('0x40')]['sort']);_0x308739['where']=qs[_0x8bfc('0x41')](_[_0x8bfc('0x49')](_0xd8f1d3[_0x8bfc('0x40')],_0x51dcc1[_0x8bfc('0x41')]),_0x47ed73);if(_0xd8f1d3[_0x8bfc('0x40')][_0x8bfc('0x4a')]){_0x308739[_0x8bfc('0x4b')]=_[_0x8bfc('0x4c')](_0x308739['where'],{'$or':_[_0x8bfc('0x3c')](_0x47ed73,function(_0x1da096){if(_0x1da096[_0x8bfc('0x3e')]!==_0x8bfc('0x4d')){var _0x13fc1a={};_0x13fc1a[_0x1da096['name']]={'$like':'%'+_0xd8f1d3['query'][_0x8bfc('0x4a')]+'%'};return _0x13fc1a;}})});}_0x308739=_['merge']({},_0x308739,_0xd8f1d3['options']);var _0x53b28b={'where':_0x308739[_0x8bfc('0x4b')]};return db['WhatsappMessage'][_0x8bfc('0x31')](_0x53b28b)[_0x8bfc('0x38')](function(_0x574cee){_0x551215[_0x8bfc('0x31')]=_0x574cee;if(_0xd8f1d3[_0x8bfc('0x40')][_0x8bfc('0x4e')]){_0x308739[_0x8bfc('0x4f')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x308739);})['then'](function(_0x4850c1){_0x551215[_0x8bfc('0x50')]=_0x4850c1;return _0x551215;})[_0x8bfc('0x38')](respondWithFilteredResult(_0x1686ac,_0x308739))[_0x8bfc('0x2a')](handleError(_0x1686ac,null));};exports[_0x8bfc('0x51')]=function(_0x5cbf2e,_0x3b96ec){var _0x1688f7={'raw':!![],'where':{'id':_0x5cbf2e[_0x8bfc('0x52')]['id']}},_0x30ac1c={};_0x30ac1c[_0x8bfc('0x3f')]=_[_0x8bfc('0x53')](db[_0x8bfc('0x54')][_0x8bfc('0x55')]);_0x30ac1c[_0x8bfc('0x40')]=_['keys'](_0x5cbf2e['query']);_0x30ac1c[_0x8bfc('0x41')]=_['intersection'](_0x30ac1c[_0x8bfc('0x3f')],_0x30ac1c['query']);_0x1688f7[_0x8bfc('0x43')]=_['intersection'](_0x30ac1c[_0x8bfc('0x3f')],qs[_0x8bfc('0x44')](_0x5cbf2e['query'][_0x8bfc('0x44')]));_0x1688f7[_0x8bfc('0x43')]=_0x1688f7[_0x8bfc('0x43')][_0x8bfc('0x45')]?_0x1688f7[_0x8bfc('0x43')]:_0x30ac1c[_0x8bfc('0x3f')];if(_0x5cbf2e[_0x8bfc('0x40')][_0x8bfc('0x4e')]){_0x1688f7['include']=[{'all':!![]}];}_0x1688f7=_[_0x8bfc('0x4c')]({},_0x1688f7,_0x5cbf2e[_0x8bfc('0x56')]);return db[_0x8bfc('0x54')]['find'](_0x1688f7)['then'](handleEntityNotFound(_0x3b96ec,null))[_0x8bfc('0x38')](respondWithResult(_0x3b96ec,null))[_0x8bfc('0x2a')](handleError(_0x3b96ec,null));};exports['create']=function(_0x34155b,_0xa5b00e){return db['WhatsappMessage']['create'](_0x34155b['body'],{})[_0x8bfc('0x38')](respondWithResult(_0xa5b00e,0xc9))[_0x8bfc('0x2a')](handleError(_0xa5b00e,null));};exports[_0x8bfc('0x37')]=function(_0x298641,_0x392c94){if(_0x298641['body']['id']){delete _0x298641['body']['id'];}return db[_0x8bfc('0x54')][_0x8bfc('0x57')]({'where':{'id':_0x298641['params']['id']}})['then'](handleEntityNotFound(_0x392c94,null))[_0x8bfc('0x38')](saveUpdates(_0x298641[_0x8bfc('0x58')],null))['then'](respondWithResult(_0x392c94,null))[_0x8bfc('0x2a')](handleError(_0x392c94,null));};exports['destroy']=function(_0x5c90ee,_0x4af7db){return db[_0x8bfc('0x54')][_0x8bfc('0x57')]({'where':{'id':_0x5c90ee['params']['id']}})[_0x8bfc('0x38')](handleEntityNotFound(_0x4af7db,null))['then'](removeEntity(_0x4af7db,null))[_0x8bfc('0x2a')](handleError(_0x4af7db,null));};exports[_0x8bfc('0x59')]=function(_0x503d47,_0x534b49){return db['WhatsappMessage']['describe']()[_0x8bfc('0x38')](respondWithResult(_0x534b49,null))[_0x8bfc('0x2a')](handleError(_0x534b49,null));};var interaction_log=require(_0x8bfc('0x15'))('whatsapp-interactions');exports['accept']=function(_0x446486,_0x5135b8,_0x28ef33){var _0x10689d={'agent':{},'channel':_0x8bfc('0x5a')};if(_0x446486['body']['id']){delete _0x446486[_0x8bfc('0x58')]['id'];}_0x446486['body'][_0x8bfc('0x5b')]=!![];_0x446486['body']['readAt']=moment()[_0x8bfc('0x5c')](_0x8bfc('0x5d'));_0x446486[_0x8bfc('0x58')][_0x8bfc('0x5e')]=_0x446486[_0x8bfc('0x58')][_0x8bfc('0x5e')]||_0x446486[_0x8bfc('0x5f')]['id'];_0x10689d[_0x8bfc('0x60')]['id']=_0x446486['body'][_0x8bfc('0x5e')];return db[_0x8bfc('0x54')]['find']({'where':{'id':_0x446486[_0x8bfc('0x52')]['id'],'UserId':null}})[_0x8bfc('0x38')](handleEntityNotFound(_0x5135b8,null))['then'](saveUpdates(_0x446486[_0x8bfc('0x58')],null))['then'](function(_0x2eba40){if(_0x2eba40){_0x10689d[_0x8bfc('0x28')]=_0x2eba40['get']({'plain':!![]});return db[_0x8bfc('0x61')][_0x8bfc('0x57')]({'where':{'id':_0x2eba40[_0x8bfc('0x62')]}});}return null;})[_0x8bfc('0x38')](handleEntityNotFound(_0x5135b8,null))['then'](function(_0x5b6bf5){if(_0x5b6bf5){return _0x5b6bf5[_0x8bfc('0x37')]({'UserId':_0x446486[_0x8bfc('0x58')][_0x8bfc('0x5e')],'read1stAt':_[_0x8bfc('0x63')](_0x5b6bf5[_0x8bfc('0x64')])?moment()[_0x8bfc('0x5c')](_0x8bfc('0x5d')):undefined});}return null;})['then'](function(_0x499bea){if(_0x499bea){_0x10689d[_0x8bfc('0x65')]=_0x499bea[_0x8bfc('0x66')]({'plain':!![]});interaction_log[_0x8bfc('0x22')](_0x8bfc('0x67'),_0x446486['user']['id'],_0x446486[_0x8bfc('0x5f')]['name'],_0x446486[_0x8bfc('0x5f')]['role'],_0x10689d['interaction']['id'],_0x446486['body']?JSON[_0x8bfc('0x25')](_0x446486[_0x8bfc('0x58')]):_0x8bfc('0x68'));return respondWithRpcPromise(_0x8bfc('0x69'),'acceptMessage',_0x10689d);}return null;})[_0x8bfc('0x38')](function(_0x4632d5){var _0x389d0f=_0x8bfc('0x6a')+_0x4632d5[_0x8bfc('0x28')]['ContactId'];return db['sequelize'][_0x8bfc('0x40')](_0x389d0f,{'type':db[_0x8bfc('0x6b')]['QueryTypes'][_0x8bfc('0x6c')],'raw':!![]})[_0x8bfc('0x38')](function(_0x38b861){return _0x38b861;});})[_0x8bfc('0x38')](function(_0x33d98d){if(_0x33d98d){_0x10689d[_0x8bfc('0x28')]['contact']=_0x33d98d[0x0];if(!_0x446486['body'][_0x8bfc('0x5e')])return;return db['User'][_0x8bfc('0x57')]({'where':{'id':_0x446486[_0x8bfc('0x58')][_0x8bfc('0x5e')],'role':_0x8bfc('0x60')},'attributes':['id',_0x8bfc('0x3a'),_0x8bfc('0x6d'),'email','internal'],'raw':!![]});}return null;})[_0x8bfc('0x38')](function(_0xf43f27){if(!_0xf43f27)return null;_0x10689d['message'][_0x8bfc('0x60')]=_0xf43f27;return _0x10689d;})[_0x8bfc('0x38')](function(_0x2ff3a1){if(_0x2ff3a1){if(_0x446486[_0x8bfc('0x58')][_0x8bfc('0x6e')]){_0x10689d[_0x8bfc('0x28')][_0x8bfc('0x6f')]=util[_0x8bfc('0x5c')](_0x8bfc('0x70'),_0x446486[_0x8bfc('0x5f')][_0x8bfc('0x3a')]);_0x10689d[_0x8bfc('0x28')][_0x8bfc('0x71')]=_0x10689d[_0x8bfc('0x71')];_0x10689d[_0x8bfc('0x28')][_0x8bfc('0x72')]=_0x10689d['channel'];_0x10689d[_0x8bfc('0x28')][_0x8bfc('0x73')]=_0x8bfc('0x74');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x8bfc('0x75'),'message':_0x10689d[_0x8bfc('0x28')]},client9002)[_0x8bfc('0x38')](function(){return _0x10689d;});}return _0x10689d;}return null;})[_0x8bfc('0x38')](respondWithResult(_0x5135b8,null))[_0x8bfc('0x2a')](handleError(_0x5135b8,null));};var interaction_log=require(_0x8bfc('0x15'))('whatsapp-interactions');exports['reject']=function(_0x599ffb,_0x2c286f,_0x3a1d1c){var _0x161cbc={'agent':{},'channel':'whatsapp'};if(_0x599ffb[_0x8bfc('0x58')]['id']){delete _0x599ffb[_0x8bfc('0x58')]['id'];}_0x599ffb[_0x8bfc('0x58')]['UserId']=_0x599ffb[_0x8bfc('0x58')][_0x8bfc('0x5e')]||_0x599ffb[_0x8bfc('0x5f')]['id'];_0x161cbc[_0x8bfc('0x60')]['id']=_0x599ffb[_0x8bfc('0x58')][_0x8bfc('0x5e')];return db['WhatsappMessage'][_0x8bfc('0x57')]({'where':{'id':_0x599ffb[_0x8bfc('0x52')]['id'],'UserId':null}})[_0x8bfc('0x38')](handleEntityNotFound(_0x2c286f,null))[_0x8bfc('0x38')](function(_0x546c91){if(_0x546c91){_0x161cbc['message']=_0x546c91[_0x8bfc('0x66')]({'plain':!![]});return db[_0x8bfc('0x61')]['find']({'where':{'id':_0x546c91['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2c286f,null))[_0x8bfc('0x38')](function(_0x365de0){if(_0x365de0){_0x161cbc[_0x8bfc('0x65')]=_0x365de0['get']({'plain':!![]});interaction_log[_0x8bfc('0x22')](_0x8bfc('0x76'),_0x599ffb['user']['id'],_0x599ffb['user']['name'],_0x599ffb['user']['role'],_0x161cbc['interaction']['id'],_0x599ffb[_0x8bfc('0x58')]?JSON[_0x8bfc('0x25')](_0x599ffb['body']):'null');return respondWithRpcPromise(_0x8bfc('0x77'),_0x8bfc('0x78'),_0x161cbc);}return null;})[_0x8bfc('0x38')](function(_0x3f6b06){var _0x2f2b68=_0x8bfc('0x6a')+_0x3f6b06['message']['ContactId'];return db[_0x8bfc('0x79')]['query'](_0x2f2b68,{'type':db['Sequelize'][_0x8bfc('0x7a')][_0x8bfc('0x6c')],'raw':!![]})[_0x8bfc('0x38')](function(_0x46fe7e){return _0x46fe7e;});})[_0x8bfc('0x38')](function(_0x211da6){if(_0x211da6){_0x161cbc['message'][_0x8bfc('0x7b')]=_0x211da6[0x0];if(!_0x599ffb[_0x8bfc('0x58')][_0x8bfc('0x5e')])return;return db[_0x8bfc('0x7c')][_0x8bfc('0x57')]({'where':{'id':_0x599ffb['body'][_0x8bfc('0x5e')],'role':'agent'},'attributes':['id',_0x8bfc('0x3a'),_0x8bfc('0x6d'),_0x8bfc('0x7d'),_0x8bfc('0x7e')],'raw':!![]});}return null;})[_0x8bfc('0x38')](function(_0x42e60c){if(!_0x42e60c)return null;_0x161cbc['message'][_0x8bfc('0x60')]=_0x42e60c;return _0x161cbc;})[_0x8bfc('0x38')](function(_0x12b8cc){if(_0x12b8cc){_0x12b8cc[_0x8bfc('0x28')]['interface']=util[_0x8bfc('0x5c')](_0x8bfc('0x70'),_0x599ffb[_0x8bfc('0x5f')][_0x8bfc('0x3a')]);_0x12b8cc[_0x8bfc('0x28')][_0x8bfc('0x71')]=_0x161cbc[_0x8bfc('0x71')];_0x12b8cc[_0x8bfc('0x28')][_0x8bfc('0x72')]=_0x161cbc['channel'];_0x12b8cc[_0x8bfc('0x28')][_0x8bfc('0x73')]=_0x8bfc('0x35');respondWithRpcPromise(_0x8bfc('0x7f'),_0x8bfc('0x7f'),{'event':_0x8bfc('0x80'),'message':_0x12b8cc['message']},client9002);return _0x161cbc;}return null;})[_0x8bfc('0x38')](respondWithResult(_0x2c286f,null))[_0x8bfc('0x2a')](handleError(_0x2c286f,null));};exports[_0x8bfc('0x2d')]=function(_0x3ab513,_0x4a7421,_0x3b0bfe){if(_0x3ab513['body']['id']){delete _0x3ab513[_0x8bfc('0x58')]['id'];}var _0x3ee906;return db[_0x8bfc('0x54')]['find']({'where':{'id':_0x3ab513[_0x8bfc('0x52')]['id']}})[_0x8bfc('0x38')](handleEntityNotFound(_0x4a7421,null))[_0x8bfc('0x38')](function(_0x3b87b2){if(_0x3b87b2){_0x3ee906=_0x3b87b2;return db[_0x8bfc('0x81')]['find']({'where':{'id':_0x3b87b2['WhatsappAccountId']}});}})[_0x8bfc('0x38')](handleEntityNotFound(_0x4a7421,null))[_0x8bfc('0x38')](function(_0x3531b5){if(_0x3531b5){logger[_0x8bfc('0x82')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0x8bfc('0x2d'),_0x8bfc('0x83'),_0x3531b5[_0x8bfc('0x3e')],util[_0x8bfc('0x84')](_0x3ab513[_0x8bfc('0x58')],{'showHidden':![],'depth':null}));switch(_0x3531b5[_0x8bfc('0x3e')]){case _0x8bfc('0x85'):if(_0x3ab513[_0x8bfc('0x58')][_0x8bfc('0x86')]&&_0x3ab513[_0x8bfc('0x58')][_0x8bfc('0x86')]===_0x3ee906[_0x8bfc('0x87')]&&_0x3ab513[_0x8bfc('0x58')][_0x8bfc('0x88')]&&_0x3ab513['body'][_0x8bfc('0x88')]===_0x8bfc('0x5b')){return _0x3ee906['update']({'read':!![]});}else{logger[_0x8bfc('0x26')](_0x8bfc('0x89'),_0x8bfc('0x2d'),_0x8bfc('0x85'),util[_0x8bfc('0x84')](_0x3ab513[_0x8bfc('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x3ee906;}})[_0x8bfc('0x38')](respondWithResult(_0x4a7421,null))[_0x8bfc('0x2a')](handleError(_0x4a7421,null));};
\ No newline at end of file
index 8385f48..0876bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282b=['save','emit','hasOwnProperty','hook','events','../../mysqldb','WhatsappMessage','setMaxListeners'];(function(_0x25912f,_0x240c88){var _0x6c553c=function(_0x48152f){while(--_0x48152f){_0x25912f['push'](_0x25912f['shift']());}};_0x6c553c(++_0x240c88);}(_0x282b,0xec));var _0xb282=function(_0x589483,_0xc16bab){_0x589483=_0x589483-0x0;var _0x21feb8=_0x282b[_0x589483];return _0x21feb8;};'use strict';var EventEmitter=require(_0xb282('0x0'));var WhatsappMessage=require(_0xb282('0x1'))['db'][_0xb282('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xb282('0x3')](0x0);var events={'afterCreate':_0xb282('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x25d77d){return function(_0x5cadd7,_0x3fbbaf,_0x175c83){WhatsappMessageEvents[_0xb282('0x5')](_0x25d77d+':'+_0x5cadd7['id'],_0x5cadd7);WhatsappMessageEvents[_0xb282('0x5')](_0x25d77d,_0x5cadd7);_0x175c83(null);};}for(var e in events){if(events[_0xb282('0x6')](e)){var event=events[e];WhatsappMessage[_0xb282('0x7')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xe9e8=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x5e1e25,_0xdc1421){var _0x548e5f=function(_0x576360){while(--_0x576360){_0x5e1e25['push'](_0x5e1e25['shift']());}};_0x548e5f(++_0xdc1421);}(_0xe9e8,0x6b));var _0x8e9e=function(_0x5c1d88,_0xcc93d9){_0x5c1d88=_0x5c1d88-0x0;var _0x35c8b1=_0xe9e8[_0x5c1d88];return _0x35c8b1;};'use strict';var EventEmitter=require(_0x8e9e('0x0'));var WhatsappMessage=require(_0x8e9e('0x1'))['db'][_0x8e9e('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x8e9e('0x3')](0x0);var events={'afterCreate':_0x8e9e('0x4'),'afterUpdate':_0x8e9e('0x5'),'afterDestroy':_0x8e9e('0x6')};function emitEvent(_0x48233f){return function(_0x103d8b,_0x2a1d41,_0x1c09c6){WhatsappMessageEvents['emit'](_0x48233f+':'+_0x103d8b['id'],_0x103d8b);WhatsappMessageEvents[_0x8e9e('0x7')](_0x48233f,_0x103d8b);_0x1c09c6(null);};}for(var e in events){if(events[_0x8e9e('0x8')](e)){var event=events[e];WhatsappMessage[_0x8e9e('0x9')](e,emitEvent(event));}}module[_0x8e9e('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
index 2c82b34..fffb50f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5daf=['authToken','phone','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','update','inspect','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/whatsapp/v1/','/messages/','text','statuses','message_id','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','messageId','body','models','direction','toLowerCase','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','catch','secret','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid'];(function(_0x33da43,_0x50191a){var _0x5d5915=function(_0x1fb3a3){while(--_0x1fb3a3){_0x33da43['push'](_0x33da43['shift']());}};_0x5d5915(++_0x50191a);}(_0x5daf,0x19a));var _0xf5da=function(_0x5ca34c,_0x322452){_0x5ca34c=_0x5ca34c-0x0;var _0x321ca5=_0x5daf[_0x5ca34c];return _0x321ca5;};'use strict';var _=require(_0xf5da('0x0'));var util=require(_0xf5da('0x1'));var logger=require('../../config/logger')(_0xf5da('0x2'));var moment=require(_0xf5da('0x3'));var BPromise=require(_0xf5da('0x4'));var rp=require('request-promise');var fetch=require('node-fetch');var fs=require('fs');var path=require(_0xf5da('0x5'));var rimraf=require(_0xf5da('0x6'));var config=require(_0xf5da('0x7'));var attributes=require(_0xf5da('0x8'));module[_0xf5da('0x9')]=function(_0x4c1d95,_0xc9c1c4){return _0x4c1d95[_0xf5da('0xa')](_0xf5da('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xf5da('0xc'),'fields':[_0xf5da('0xc')]},{'name':'fti_whatsapp_messages','fields':[_0xf5da('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1297d0,_0x276ed7,_0x433a0f){var _0x3a98c9=_0x4c1d95[_0xf5da('0xe')];var _0x5b3d2a=_0x1297d0['get']({'plain':!![]});if(_0x5b3d2a[_0xf5da('0xf')][_0xf5da('0x10')]()==='in'||_0x5b3d2a[_0xf5da('0xf')][_0xf5da('0x10')]()==='out'&&!_0x5b3d2a['secret']&&!_['isNil'](_0x5b3d2a[_0xf5da('0x11')])){_0x3a98c9[_0xf5da('0x12')][_0xf5da('0x13')]({'where':{'id':_0x5b3d2a[_0xf5da('0x14')]}})[_0xf5da('0x15')](function(_0x3be907){if(_0x3be907){_0x3be907['update']({'lastMsgAt':_0x5b3d2a['createdAt'],'lastMsgDirection':_0x5b3d2a[_0xf5da('0xf')][_0xf5da('0x10')]()});}})[_0xf5da('0x16')](function(_0x1ff829){console['error'](_0x1ff829);});}if(_0x5b3d2a[_0xf5da('0xf')]==='out'&&!_0x5b3d2a[_0xf5da('0x17')]){var _0x47266b;_0x3a98c9[_0xf5da('0x18')][_0xf5da('0x19')]({'where':{'id':_0x5b3d2a[_0xf5da('0x1a')]},'raw':!![]})[_0xf5da('0x15')](function(_0x4bbcf7){_0x47266b=_0x4bbcf7;if(_0x47266b&&_0x47266b[_0xf5da('0x1b')]){switch(_0x47266b['type']){case _0xf5da('0x1c'):var _0x2da695=require(_0xf5da('0x1c'));if(_0x47266b[_0xf5da('0x1d')]&&_0x47266b[_0xf5da('0x1e')]&&_0x47266b[_0xf5da('0x1f')]){var _0x18f572=new _0x2da695(_0x47266b[_0xf5da('0x1d')],_0x47266b['authToken']);_0x18f572['messages'][_0xf5da('0x20')]({'body':_0x5b3d2a[_0xf5da('0xd')],'to':_0xf5da('0x21')+_0x5b3d2a[_0xf5da('0x1f')],'from':_0xf5da('0x21')+_0x47266b['phone'],'statusCallback':_0x47266b[_0xf5da('0x22')]+_0xf5da('0x23')+_0x5b3d2a['id']+_0xf5da('0x24')+_0x47266b[_0xf5da('0x25')]})[_0xf5da('0x15')](function(_0x21f65b){if(_0x21f65b[_0xf5da('0x26')]){return _0x1297d0[_0xf5da('0x27')]({'messageId':_0x21f65b['sid']});}})[_0xf5da('0x16')](function(_0x1d2721){logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf5da('0x1c'),util[_0xf5da('0x28')](_0x1d2721,{'showHidden':![],'depth':null}));});}else{logger[_0xf5da('0x29')](_0xf5da('0x2a'),_0xf5da('0x2b'),_0xf5da('0x1c'),_0xf5da('0x2c'));}break;case _0xf5da('0x2d'):var _0x3b2a97=_0x47266b[_0xf5da('0x1d')];var _0x3cfa02=_0x47266b[_0xf5da('0x1e')];var _0x1f51e0=_0x47266b['baseUrl']+_0xf5da('0x2e')+_0x3b2a97+_0xf5da('0x2f');var _0x18fa05={'to':[_0x5b3d2a[_0xf5da('0x1f')]],'message':{'type':_0xf5da('0x30'),'text':_0x5b3d2a[_0xf5da('0xd')]}};var _0x3bd22f={'method':'POST','uri':_0x1f51e0,'headers':{'Authorization':'Bearer\x20'+_0x3cfa02,'Content-Type':'application/json'},'body':_0x18fa05,'json':!![]};rp(_0x3bd22f)[_0xf5da('0x15')](function(_0x3bebe9){if(_0x3bebe9[_0xf5da('0x31')][0x0][_0xf5da('0x32')]){return _0x1297d0[_0xf5da('0x27')]({'messageId':_0x3bebe9[_0xf5da('0x31')][0x0][_0xf5da('0x32')]});}})['catch'](function(_0x127893){logger['err'](_0xf5da('0x33'),_0x127893);});break;}}})[_0xf5da('0x34')](function(){_0x433a0f();});}else{_0x433a0f();}}},'charset':_0xf5da('0x35'),'collate':_0xf5da('0x36')});};
\ No newline at end of file
+var _0x67ab=['WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','Bearer\x20','application/json','statuses','message_id','err','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','node-fetch','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','WhatsappInteractionId','then','update','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','messages','create','body','whatsapp:','phone','remote','/api/whatsapp/messages/','/status?token=','sid','catch','inspect'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0x67ab,0x90));var _0xb67a=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x67ab[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0xb67a('0x0'));var util=require(_0xb67a('0x1'));var logger=require(_0xb67a('0x2'))(_0xb67a('0x3'));var moment=require('moment');var BPromise=require(_0xb67a('0x4'));var rp=require(_0xb67a('0x5'));var fetch=require(_0xb67a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb67a('0x7'));var config=require(_0xb67a('0x8'));var attributes=require(_0xb67a('0x9'));module[_0xb67a('0xa')]=function(_0x49fb03,_0x2b38d6){return _0x49fb03[_0xb67a('0xb')](_0xb67a('0xc'),attributes,{'tableName':_0xb67a('0xd'),'paranoid':![],'indexes':[{'name':_0xb67a('0xe'),'fields':[_0xb67a('0xe')]},{'name':_0xb67a('0xf'),'fields':['body'],'type':_0xb67a('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x484969,_0x1fe9cc,_0x36095a){var _0x3425b3=_0x49fb03[_0xb67a('0x11')];var _0x519718=_0x484969[_0xb67a('0x12')]({'plain':!![]});if(_0x519718[_0xb67a('0x13')][_0xb67a('0x14')]()==='in'||_0x519718[_0xb67a('0x13')][_0xb67a('0x14')]()===_0xb67a('0x15')&&!_0x519718[_0xb67a('0x16')]&&!_[_0xb67a('0x17')](_0x519718[_0xb67a('0x18')])){_0x3425b3['WhatsappInteraction'][_0xb67a('0x19')]({'where':{'id':_0x519718[_0xb67a('0x1a')]}})[_0xb67a('0x1b')](function(_0x39ad5f){if(_0x39ad5f){_0x39ad5f[_0xb67a('0x1c')]({'lastMsgAt':_0x519718['createdAt'],'lastMsgDirection':_0x519718[_0xb67a('0x13')][_0xb67a('0x14')]()});}})['catch'](function(_0x582739){console[_0xb67a('0x1d')](_0x582739);});}if(_0x519718['direction']===_0xb67a('0x15')&&!_0x519718[_0xb67a('0x16')]){var _0x41efb3;_0x3425b3[_0xb67a('0x1e')][_0xb67a('0x1f')]({'where':{'id':_0x519718[_0xb67a('0x20')]},'raw':!![]})[_0xb67a('0x1b')](function(_0x339914){_0x41efb3=_0x339914;if(_0x41efb3&&_0x41efb3[_0xb67a('0x21')]){switch(_0x41efb3[_0xb67a('0x21')]){case _0xb67a('0x22'):var _0x194d79=require('twilio');if(_0x41efb3[_0xb67a('0x23')]&&_0x41efb3[_0xb67a('0x24')]&&_0x41efb3['phone']){var _0x16a8a2=new _0x194d79(_0x41efb3['accountSid'],_0x41efb3[_0xb67a('0x24')]);_0x16a8a2[_0xb67a('0x25')][_0xb67a('0x26')]({'body':_0x519718[_0xb67a('0x27')],'to':_0xb67a('0x28')+_0x519718[_0xb67a('0x29')],'from':_0xb67a('0x28')+_0x41efb3['phone'],'statusCallback':_0x41efb3[_0xb67a('0x2a')]+_0xb67a('0x2b')+_0x519718['id']+_0xb67a('0x2c')+_0x41efb3['token']})[_0xb67a('0x1b')](function(_0x1bcf68){if(_0x1bcf68[_0xb67a('0x2d')]){return _0x484969['update']({'messageId':_0x1bcf68['sid']});}})[_0xb67a('0x2e')](function(_0x4bd542){logger[_0xb67a('0x1d')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb67a('0x22'),util[_0xb67a('0x2f')](_0x4bd542,{'showHidden':![],'depth':null}));});}else{logger[_0xb67a('0x1d')](_0xb67a('0x30'),'afterCreate',_0xb67a('0x22'),_0xb67a('0x31'));}break;case _0xb67a('0x32'):var _0x134bd2=_0x41efb3['accountSid'];var _0x2fc98c=_0x41efb3[_0xb67a('0x24')];var _0x287149=_0x41efb3[_0xb67a('0x33')]+_0xb67a('0x34')+_0x134bd2+_0xb67a('0x35');var _0x544f74={'to':[_0x519718[_0xb67a('0x29')]],'message':{'type':'text','text':_0x519718[_0xb67a('0x27')]}};var _0x36ed63={'method':_0xb67a('0x36'),'uri':_0x287149,'headers':{'Authorization':_0xb67a('0x37')+_0x2fc98c,'Content-Type':_0xb67a('0x38')},'body':_0x544f74,'json':!![]};rp(_0x36ed63)[_0xb67a('0x1b')](function(_0x5e0776){if(_0x5e0776['statuses'][0x0]['message_id']){return _0x484969[_0xb67a('0x1c')]({'messageId':_0x5e0776[_0xb67a('0x39')][0x0][_0xb67a('0x3a')]});}})[_0xb67a('0x2e')](function(_0x3824be){logger[_0xb67a('0x3b')](_0xb67a('0x3c'),_0x3824be);});break;}}})[_0xb67a('0x3d')](function(){_0x36095a();});}else{_0x36095a();}}},'charset':_0xb67a('0x3e'),'collate':_0xb67a('0x3f')});};
\ No newline at end of file
index 68421a7..f2554a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe770=['../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','debug','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','catch','CreateWhatsappMessage','WhatsappMessage','create','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe770,0x1d2));var _0x0e77=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe770[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x0e77('0x0'));var util=require(_0x0e77('0x1'));var moment=require(_0x0e77('0x2'));var BPromise=require(_0x0e77('0x3'));var rs=require(_0x0e77('0x4'));var fs=require('fs');var Redis=require(_0x0e77('0x5'));var db=require(_0x0e77('0x6'))['db'];var utils=require(_0x0e77('0x7'));var logger=require(_0x0e77('0x8'))(_0x0e77('0x9'));var config=require(_0x0e77('0xa'));var jayson=require(_0x0e77('0xb'));var client=jayson[_0x0e77('0xc')][_0x0e77('0xd')]({'port':0x232a});config[_0x0e77('0xe')]=_[_0x0e77('0xf')](config[_0x0e77('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x0e77('0x10'))(new Redis(config[_0x0e77('0xe')]));require('./whatsappMessage.socket')[_0x0e77('0x11')](socket);function respondWithRpcPromise(_0x27d480,_0x4dca59,_0x2125b4){return new BPromise(function(_0x2fe7c8,_0x44fe6c){return client[_0x0e77('0x12')](_0x27d480,_0x2125b4)[_0x0e77('0x13')](function(_0x5d71bb){logger[_0x0e77('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x4dca59,'request\x20sent');logger[_0x0e77('0x15')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x4dca59,'request\x20sent',JSON[_0x0e77('0x16')](_0x5d71bb));if(_0x5d71bb[_0x0e77('0x17')]){if(_0x5d71bb[_0x0e77('0x17')][_0x0e77('0x18')]===0x1f4){logger[_0x0e77('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x4dca59,_0x5d71bb['error'][_0x0e77('0x19')]);return _0x44fe6c(_0x5d71bb[_0x0e77('0x17')][_0x0e77('0x19')]);}logger[_0x0e77('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x4dca59,_0x5d71bb[_0x0e77('0x17')]['message']);return _0x2fe7c8(_0x5d71bb[_0x0e77('0x17')][_0x0e77('0x19')]);}else{logger['info'](_0x0e77('0x1a'),_0x4dca59,'request\x20sent');_0x2fe7c8(_0x5d71bb[_0x0e77('0x1b')][_0x0e77('0x19')]);}})[_0x0e77('0x1c')](function(_0x1ae702){logger[_0x0e77('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x4dca59,_0x1ae702);_0x44fe6c(_0x1ae702);});});}exports[_0x0e77('0x1d')]=function(_0x407c9d){var _0x4f6493=this;return new Promise(function(_0x5ce8a3,_0x422ce9){return db[_0x0e77('0x1e')][_0x0e77('0x1f')](_0x407c9d['body'],{'raw':_0x407c9d['options']?_0x407c9d[_0x0e77('0x20')][_0x0e77('0x21')]===undefined?!![]:![]:!![]})[_0x0e77('0x13')](function(_0xea5fad){logger[_0x0e77('0x14')](_0x0e77('0x1d'),_0x407c9d);logger[_0x0e77('0x15')](_0x0e77('0x1d'),_0x407c9d,JSON['stringify'](_0xea5fad));_0x5ce8a3(_0xea5fad);})[_0x0e77('0x1c')](function(_0x3783a0){logger['error'](_0x0e77('0x1d'),_0x3783a0[_0x0e77('0x19')],_0x407c9d);_0x422ce9(_0x4f6493[_0x0e77('0x17')](0x1f4,_0x3783a0[_0x0e77('0x19')]));});});};
\ No newline at end of file
+var _0x97d1=['raw','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./whatsappMessage.socket','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','WhatsappMessage,\x20%s,\x20%s','message','catch','CreateWhatsappMessage','WhatsappMessage','body','options'];(function(_0x5ae13c,_0x306c4c){var _0x32fa7f=function(_0x3f1c73){while(--_0x3f1c73){_0x5ae13c['push'](_0x5ae13c['shift']());}};_0x32fa7f(++_0x306c4c);}(_0x97d1,0x1e1));var _0x197d=function(_0x14ca26,_0xf6f7c2){_0x14ca26=_0x14ca26-0x0;var _0x2061e9=_0x97d1[_0x14ca26];return _0x2061e9;};'use strict';var _=require('lodash');var util=require(_0x197d('0x0'));var moment=require(_0x197d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x197d('0x2'));var db=require(_0x197d('0x3'))['db'];var utils=require(_0x197d('0x4'));var logger=require(_0x197d('0x5'))(_0x197d('0x6'));var config=require(_0x197d('0x7'));var jayson=require(_0x197d('0x8'));var client=jayson[_0x197d('0x9')]['http']({'port':0x232a});config[_0x197d('0xa')]=_[_0x197d('0xb')](config['redis'],{'host':_0x197d('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x197d('0xa')]));require(_0x197d('0xd'))['register'](socket);function respondWithRpcPromise(_0x1a55a9,_0x341209,_0x4e906c){return new BPromise(function(_0x18d9dc,_0x3bbc09){return client[_0x197d('0xe')](_0x1a55a9,_0x4e906c)[_0x197d('0xf')](function(_0x3a9e60){logger[_0x197d('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x341209,'request\x20sent');logger[_0x197d('0x11')](_0x197d('0x12'),_0x341209,_0x197d('0x13'),JSON[_0x197d('0x14')](_0x3a9e60));if(_0x3a9e60[_0x197d('0x15')]){if(_0x3a9e60[_0x197d('0x15')]['code']===0x1f4){logger[_0x197d('0x15')](_0x197d('0x16'),_0x341209,_0x3a9e60[_0x197d('0x15')][_0x197d('0x17')]);return _0x3bbc09(_0x3a9e60[_0x197d('0x15')][_0x197d('0x17')]);}logger[_0x197d('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x341209,_0x3a9e60[_0x197d('0x15')][_0x197d('0x17')]);return _0x18d9dc(_0x3a9e60['error']['message']);}else{logger[_0x197d('0x10')](_0x197d('0x16'),_0x341209,_0x197d('0x13'));_0x18d9dc(_0x3a9e60['result'][_0x197d('0x17')]);}})[_0x197d('0x18')](function(_0x3c960b){logger[_0x197d('0x15')](_0x197d('0x16'),_0x341209,_0x3c960b);_0x3bbc09(_0x3c960b);});});}exports[_0x197d('0x19')]=function(_0x554331){var _0x39133e=this;return new Promise(function(_0x1db5ee,_0xf5b9b9){return db[_0x197d('0x1a')]['create'](_0x554331[_0x197d('0x1b')],{'raw':_0x554331[_0x197d('0x1c')]?_0x554331[_0x197d('0x1c')][_0x197d('0x1d')]===undefined?!![]:![]:!![]})[_0x197d('0xf')](function(_0x246c9e){logger[_0x197d('0x10')](_0x197d('0x19'),_0x554331);logger[_0x197d('0x11')](_0x197d('0x19'),_0x554331,JSON[_0x197d('0x14')](_0x246c9e));_0x1db5ee(_0x246c9e);})[_0x197d('0x18')](function(_0x50e2a7){logger[_0x197d('0x15')]('CreateWhatsappMessage',_0x50e2a7[_0x197d('0x17')],_0x554331);_0xf5b9b9(_0x39133e['error'](0x1f4,_0x50e2a7[_0x197d('0x17')]));});});};
\ No newline at end of file
index b9452f7..82b8042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc037=['length','whatsappMessage:','./whatsappMessage.events','remove','update','emit','removeListener','register'];(function(_0x57f4fc,_0x46c074){var _0x31da2c=function(_0x5e1544){while(--_0x5e1544){_0x57f4fc['push'](_0x57f4fc['shift']());}};_0x31da2c(++_0x46c074);}(_0xc037,0xa2));var _0x7c03=function(_0x4695b5,_0x1de8ff){_0x4695b5=_0x4695b5-0x0;var _0x46f0f0=_0xc037[_0x4695b5];return _0x46f0f0;};'use strict';var WhatsappMessageEvents=require(_0x7c03('0x0'));var events=['save',_0x7c03('0x1'),_0x7c03('0x2')];function createListener(_0x4a102f,_0x1ff736){return function(_0x60429e){_0x1ff736[_0x7c03('0x3')](_0x4a102f,_0x60429e);};}function removeListener(_0x5d3244,_0x5196ab){return function(){WhatsappMessageEvents[_0x7c03('0x4')](_0x5d3244,_0x5196ab);};}exports[_0x7c03('0x5')]=function(_0x494091){for(var _0x189b5f=0x0,_0x46be43=events[_0x7c03('0x6')];_0x189b5f<_0x46be43;_0x189b5f++){var _0x582ee0=events[_0x189b5f];var _0xeb9c8c=createListener(_0x7c03('0x7')+_0x582ee0,_0x494091);WhatsappMessageEvents['on'](_0x582ee0,_0xeb9c8c);}};
\ No newline at end of file
+var _0x109c=['update','emit','removeListener','length','whatsappMessage:','./whatsappMessage.events'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x109c,0x1df));var _0xc109=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x109c[_0x3b380d];return _0x54502b;};'use strict';var WhatsappMessageEvents=require(_0xc109('0x0'));var events=['save','remove',_0xc109('0x1')];function createListener(_0x2811d2,_0x2d1c78){return function(_0x6de7a8){_0x2d1c78[_0xc109('0x2')](_0x2811d2,_0x6de7a8);};}function removeListener(_0x2ff92a,_0x2c232a){return function(){WhatsappMessageEvents[_0xc109('0x3')](_0x2ff92a,_0x2c232a);};}exports['register']=function(_0x3f74bd){for(var _0x527c37=0x0,_0x49ef65=events[_0xc109('0x4')];_0x527c37<_0x49ef65;_0x527c37++){var _0x31d88d=events[_0x527c37];var _0x41848f=createListener(_0xc109('0x5')+_0x31d88d,_0x3f74bd);WhatsappMessageEvents['on'](_0x31d88d,_0x41848f);}};
\ No newline at end of file
index 09f8b4b..7746490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05ef=['/:id/users','create','addTeams','post','put','/:id','delete','destroy','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./whatsappQueue.controller','index','get','/describe','isAuthenticated','show','/:id/teams','getTeams'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x05ef,0x1d1));var _0xf05e=function(_0x497948,_0x4ca60c){_0x497948=_0x497948-0x0;var _0x39bb36=_0x05ef[_0x497948];return _0x39bb36;};'use strict';var multer=require(_0xf05e('0x0'));var util=require(_0xf05e('0x1'));var path=require(_0xf05e('0x2'));var timeout=require(_0xf05e('0x3'));var express=require(_0xf05e('0x4'));var router=express['Router']();var fs_extra=require(_0xf05e('0x5'));var auth=require(_0xf05e('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf05e('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf05e('0x8')]);router[_0xf05e('0x9')](_0xf05e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xf05e('0x9')]('/:id',auth[_0xf05e('0xb')](),controller[_0xf05e('0xc')]);router[_0xf05e('0x9')]('/:id/members',auth[_0xf05e('0xb')](),controller['getMembers']);router['get'](_0xf05e('0xd'),auth['isAuthenticated'](),controller[_0xf05e('0xe')]);router[_0xf05e('0x9')](_0xf05e('0xf'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0xf05e('0x10')]);router['post'](_0xf05e('0xd'),auth[_0xf05e('0xb')](),controller[_0xf05e('0x11')]);router[_0xf05e('0x12')](_0xf05e('0xf'),auth[_0xf05e('0xb')](),controller['addAgents']);router[_0xf05e('0x13')](_0xf05e('0x14'),auth[_0xf05e('0xb')](),controller['update']);router[_0xf05e('0x15')](_0xf05e('0x14'),auth[_0xf05e('0xb')](),controller[_0xf05e('0x16')]);router[_0xf05e('0x15')](_0xf05e('0xd'),auth[_0xf05e('0xb')](),controller['removeTeams']);router[_0xf05e('0x15')]('/:id/users',auth['isAuthenticated'](),controller[_0xf05e('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xe062=['put','/:id','update','destroy','delete','removeTeams','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post'];(function(_0x1d9430,_0x66bbd1){var _0x134b17=function(_0x3746ce){while(--_0x3746ce){_0x1d9430['push'](_0x1d9430['shift']());}};_0x134b17(++_0x66bbd1);}(_0xe062,0x1b8));var _0x2e06=function(_0x3e9700,_0x282511){_0x3e9700=_0x3e9700-0x0;var _0x47c887=_0xe062[_0x3e9700];return _0x47c887;};'use strict';var multer=require(_0x2e06('0x0'));var util=require(_0x2e06('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2e06('0x2'));var router=express[_0x2e06('0x3')]();var fs_extra=require(_0x2e06('0x4'));var auth=require(_0x2e06('0x5'));var interaction=require(_0x2e06('0x6'));var config=require(_0x2e06('0x7'));var controller=require(_0x2e06('0x8'));router[_0x2e06('0x9')]('/',auth[_0x2e06('0xa')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x2e06('0xb')]);router[_0x2e06('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2e06('0xc')]);router[_0x2e06('0x9')](_0x2e06('0xd'),auth[_0x2e06('0xa')](),controller[_0x2e06('0xe')]);router[_0x2e06('0x9')](_0x2e06('0xf'),auth[_0x2e06('0xa')](),controller[_0x2e06('0x10')]);router[_0x2e06('0x9')](_0x2e06('0x11'),auth[_0x2e06('0xa')](),controller['getAgents']);router[_0x2e06('0x12')]('/',auth[_0x2e06('0xa')](),controller['create']);router['post'](_0x2e06('0xf'),auth[_0x2e06('0xa')](),controller['addTeams']);router['post'](_0x2e06('0x11'),auth['isAuthenticated'](),controller['addAgents']);router[_0x2e06('0x13')](_0x2e06('0x14'),auth['isAuthenticated'](),controller[_0x2e06('0x15')]);router['delete'](_0x2e06('0x14'),auth['isAuthenticated'](),controller[_0x2e06('0x16')]);router[_0x2e06('0x17')](_0x2e06('0xf'),auth[_0x2e06('0xa')](),controller[_0x2e06('0x18')]);router[_0x2e06('0x17')](_0x2e06('0x11'),auth['isAuthenticated'](),controller[_0x2e06('0x19')]);module[_0x2e06('0x1a')]=router;
\ No newline at end of file
index 3a23f11..36ac787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9181=['roundrobin','sequelize','exports','STRING','name','INTEGER','rrmemory'];(function(_0xc3f807,_0x5ea61c){var _0x4538ca=function(_0x1a3da3){while(--_0x1a3da3){_0xc3f807['push'](_0xc3f807['shift']());}};_0x4538ca(++_0x5ea61c);}(_0x9181,0x182));var _0x1918=function(_0x4aef62,_0x279a51){_0x4aef62=_0x4aef62-0x0;var _0x5c72ee=_0x9181[_0x4aef62];return _0x5c72ee;};'use strict';var Sequelize=require(_0x1918('0x0'));module[_0x1918('0x1')]={'name':{'type':Sequelize[_0x1918('0x2')],'unique':_0x1918('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x1918('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x1918('0x5'),'beepall',_0x1918('0x6'))},'description':{'type':Sequelize[_0x1918('0x2')]}};
\ No newline at end of file
+var _0x2948=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x2276bb,_0x178855){var _0x302dd2=function(_0x121e83){while(--_0x121e83){_0x2276bb['push'](_0x2276bb['shift']());}};_0x302dd2(++_0x178855);}(_0x2948,0xcb));var _0x8294=function(_0x56a433,_0x1722e3){_0x56a433=_0x56a433-0x0;var _0x32358f=_0x2948[_0x56a433];return _0x32358f;};'use strict';var Sequelize=require(_0x8294('0x0'));module[_0x8294('0x1')]={'name':{'type':Sequelize[_0x8294('0x2')],'unique':_0x8294('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x8294('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8294('0x5')](_0x8294('0x6'),_0x8294('0x7'),_0x8294('0x8'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cb5460c..754cfa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4cf=['user','WhatsappQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserWhatsappQueue','order','WhatsappQueueId','map','User','findAndCountAll','UserId','agent','createdAt','format','%s/%s','whatsappPause','updatedAt','Team','getTeams','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','join','ut.TeamId\x20=\x20tq.TeamId','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','isArray','userWhatsappQueue:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','WhatsappQueue','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','intersection','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x5426e2,_0x5f2968){var _0x920dc=function(_0x3a87c6){while(--_0x3a87c6){_0x5426e2['push'](_0x5426e2['shift']());}};_0x920dc(++_0x5f2968);}(_0xf4cf,0x1d8));var _0xff4c=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xf4cf[_0x8c43de];return _0xa6591b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xff4c('0x0'));var jsonpatch=require(_0xff4c('0x1'));var rp=require(_0xff4c('0x2'));var moment=require(_0xff4c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xff4c('0x4'));var util=require(_0xff4c('0x5'));var path=require(_0xff4c('0x6'));var sox=require('sox');var csv=require(_0xff4c('0x7'));var ejs=require(_0xff4c('0x8'));var fs=require('fs');var fs_extra=require(_0xff4c('0x9'));var _=require(_0xff4c('0xa'));var squel=require(_0xff4c('0xb'));var crypto=require('crypto');var jsforce=require(_0xff4c('0xc'));var deskjs=require(_0xff4c('0xd'));var toCsv=require(_0xff4c('0x7'));var querystring=require(_0xff4c('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xff4c('0xf'));var qs=require(_0xff4c('0x10'));var as=require(_0xff4c('0x11'));var hardwareService=require(_0xff4c('0x12'));var logger=require('../../config/logger')(_0xff4c('0x13'));var utils=require('../../config/utils');var config=require(_0xff4c('0x14'));var licenseUtil=require(_0xff4c('0x15'));var db=require(_0xff4c('0x16'))['db'];config[_0xff4c('0x17')]=_[_0xff4c('0x18')](config[_0xff4c('0x17')],{'host':_0xff4c('0x19'),'port':0x18eb});var socket=require(_0xff4c('0x1a'))(new Redis(config[_0xff4c('0x17')]));require(_0xff4c('0x1b'))[_0xff4c('0x1c')](socket);function respondWithStatusCode(_0xa558f9,_0x34f377){_0x34f377=_0x34f377||0xcc;return function(_0x289b2e){if(_0x289b2e){return _0xa558f9[_0xff4c('0x1d')](_0x34f377);}return _0xa558f9[_0xff4c('0x1e')](_0x34f377)[_0xff4c('0x1f')]();};}function respondWithResult(_0x21ec0d,_0x4f2deb){_0x4f2deb=_0x4f2deb||0xc8;return function(_0x347f7f){if(_0x347f7f){return _0x21ec0d[_0xff4c('0x1e')](_0x4f2deb)['json'](_0x347f7f);}};}function respondWithFilteredResult(_0x19853c,_0x1be91c){return function(_0x513b13){if(_0x513b13){var _0x4ccb35=typeof _0x1be91c[_0xff4c('0x20')]===_0xff4c('0x21')&&typeof _0x1be91c[_0xff4c('0x22')]===_0xff4c('0x21');var _0x1fa88b=_0x513b13[_0xff4c('0x23')];var _0x4143b2=_0x4ccb35?0x0:_0x1be91c[_0xff4c('0x20')];var _0x8ceebb=_0x4ccb35?_0x513b13[_0xff4c('0x23')]:_0x1be91c[_0xff4c('0x20')]+_0x1be91c[_0xff4c('0x22')];var _0x596783;if(_0x8ceebb>=_0x1fa88b){_0x8ceebb=_0x1fa88b;_0x596783=0xc8;}else{_0x596783=0xce;}_0x19853c[_0xff4c('0x1e')](_0x596783);return _0x19853c[_0xff4c('0x24')](_0xff4c('0x25'),_0x4143b2+'-'+_0x8ceebb+'/'+_0x1fa88b)['json'](_0x513b13);}return null;};}function patchUpdates(_0x224ab2){return function(_0x4b7e60){try{jsonpatch[_0xff4c('0x26')](_0x4b7e60,_0x224ab2,!![]);}catch(_0x4c499f){return BPromise['reject'](_0x4c499f);}return _0x4b7e60[_0xff4c('0x27')]();};}function saveUpdates(_0x5628c8,_0x201cff){return function(_0x1bea48){if(_0x1bea48){return _0x1bea48[_0xff4c('0x28')](_0x5628c8)[_0xff4c('0x29')](function(_0x2b3a25){return _0x2b3a25;});}return null;};}function removeEntity(_0x349c14,_0x15e590){return function(_0x6ccfe0){if(_0x6ccfe0){return _0x6ccfe0['destroy']()[_0xff4c('0x29')](function(){var _0x500caf=_0x6ccfe0[_0xff4c('0x2a')]({'plain':!![]});var _0x2bb9bc='WhatsappQueues';return db[_0xff4c('0x2b')][_0xff4c('0x2c')]({'where':{'type':_0x2bb9bc,'resourceId':_0x500caf['id']}})['then'](function(){return _0x6ccfe0;});})['then'](function(){_0x349c14[_0xff4c('0x1e')](0xcc)[_0xff4c('0x1f')]();});}};}function handleEntityNotFound(_0x30eb12,_0x4f10db){return function(_0x1910e9){if(!_0x1910e9){_0x30eb12[_0xff4c('0x1d')](0x194);}return _0x1910e9;};}function handleError(_0x35caa4,_0x361a07){_0x361a07=_0x361a07||0x1f4;return function(_0x309959){logger[_0xff4c('0x2d')](_0x309959[_0xff4c('0x2e')]);if(_0x309959[_0xff4c('0x2f')]){delete _0x309959[_0xff4c('0x2f')];}_0x35caa4['status'](_0x361a07)[_0xff4c('0x30')](_0x309959);};}exports[_0xff4c('0x31')]=function(_0x493940,_0xca1d5e){var _0x47254f={},_0x34ad3d={},_0xb7372e={'count':0x0,'rows':[]};var _0x281019=_['map'](db[_0xff4c('0x32')]['rawAttributes'],function(_0x44ed41){return{'name':_0x44ed41[_0xff4c('0x33')],'type':_0x44ed41['type'][_0xff4c('0x34')]};});_0x34ad3d[_0xff4c('0x35')]=_['map'](_0x281019,_0xff4c('0x2f'));_0x34ad3d[_0xff4c('0x36')]=_[_0xff4c('0x37')](_0x493940['query']);_0x34ad3d[_0xff4c('0x38')]=_['intersection'](_0x34ad3d[_0xff4c('0x35')],_0x34ad3d[_0xff4c('0x36')]);_0x47254f[_0xff4c('0x39')]=_['intersection'](_0x34ad3d[_0xff4c('0x35')],qs[_0xff4c('0x3a')](_0x493940['query'][_0xff4c('0x3a')]));_0x47254f[_0xff4c('0x39')]=_0x47254f[_0xff4c('0x39')][_0xff4c('0x3b')]?_0x47254f[_0xff4c('0x39')]:_0x34ad3d[_0xff4c('0x35')];if(!_0x493940['query'][_0xff4c('0x3c')](_0xff4c('0x3d'))){_0x47254f[_0xff4c('0x22')]=qs[_0xff4c('0x22')](_0x493940[_0xff4c('0x36')][_0xff4c('0x22')]);_0x47254f['offset']=qs['offset'](_0x493940['query'][_0xff4c('0x20')]);}_0x47254f['order']=qs[_0xff4c('0x3e')](_0x493940['query'][_0xff4c('0x3e')]);_0x47254f[_0xff4c('0x3f')]=qs[_0xff4c('0x38')](_[_0xff4c('0x40')](_0x493940[_0xff4c('0x36')],_0x34ad3d[_0xff4c('0x38')]),_0x281019);if(_0x493940['query'][_0xff4c('0x41')]){_0x47254f['where']=_['merge'](_0x47254f[_0xff4c('0x3f')],{'$or':_['map'](_0x281019,function(_0x424075){if(_0x424075[_0xff4c('0x42')]!=='VIRTUAL'){var _0x3dbf27={};_0x3dbf27[_0x424075[_0xff4c('0x2f')]]={'$like':'%'+_0x493940[_0xff4c('0x36')][_0xff4c('0x41')]+'%'};return _0x3dbf27;}})});}_0x47254f=_[_0xff4c('0x43')]({},_0x47254f,_0x493940[_0xff4c('0x44')]);var _0x2eda96={'where':_0x47254f[_0xff4c('0x3f')]};return db[_0xff4c('0x32')]['count'](_0x2eda96)[_0xff4c('0x29')](function(_0x404948){_0xb7372e[_0xff4c('0x23')]=_0x404948;if(_0x493940['query'][_0xff4c('0x45')]){_0x47254f[_0xff4c('0x46')]=[{'all':!![]}];}return db[_0xff4c('0x32')][_0xff4c('0x47')](_0x47254f);})['then'](function(_0x49ea57){_0xb7372e[_0xff4c('0x48')]=_0x49ea57;return _0xb7372e;})['then'](respondWithFilteredResult(_0xca1d5e,_0x47254f))[_0xff4c('0x49')](handleError(_0xca1d5e,null));};exports['show']=function(_0x2ad749,_0x3b83c2){var _0x3fd364={'raw':!![],'where':{'id':_0x2ad749[_0xff4c('0x4a')]['id']}},_0x237bc6={};_0x237bc6[_0xff4c('0x35')]=_[_0xff4c('0x37')](db[_0xff4c('0x32')][_0xff4c('0x4b')]);_0x237bc6['query']=_['keys'](_0x2ad749['query']);_0x237bc6[_0xff4c('0x38')]=_[_0xff4c('0x4c')](_0x237bc6[_0xff4c('0x35')],_0x237bc6['query']);_0x3fd364['attributes']=_[_0xff4c('0x4c')](_0x237bc6[_0xff4c('0x35')],qs['fields'](_0x2ad749[_0xff4c('0x36')][_0xff4c('0x3a')]));_0x3fd364[_0xff4c('0x39')]=_0x3fd364[_0xff4c('0x39')][_0xff4c('0x3b')]?_0x3fd364['attributes']:_0x237bc6['model'];if(_0x2ad749['query']['includeAll']){_0x3fd364[_0xff4c('0x46')]=[{'all':!![]}];}_0x3fd364=_[_0xff4c('0x43')]({},_0x3fd364,_0x2ad749[_0xff4c('0x44')]);return db[_0xff4c('0x32')][_0xff4c('0x4d')](_0x3fd364)[_0xff4c('0x29')](handleEntityNotFound(_0x3b83c2,null))[_0xff4c('0x29')](respondWithResult(_0x3b83c2,null))[_0xff4c('0x49')](handleError(_0x3b83c2,null));};exports['create']=function(_0x5843fd,_0x4f40ac){return db[_0xff4c('0x32')][_0xff4c('0x4e')](_0x5843fd['body'],{})['then'](function(_0xcaa27b){var _0x506e4a=_0x5843fd['user'][_0xff4c('0x2a')]({'plain':!![]});if(!_0x506e4a)throw new Error(_0xff4c('0x4f'));if(_0x506e4a['role']===_0xff4c('0x50')){var _0x2cfdb1=_0xcaa27b[_0xff4c('0x2a')]({'plain':!![]});var _0x3591af=_0xff4c('0x51');return db[_0xff4c('0x52')][_0xff4c('0x4d')]({'where':{'name':_0x3591af,'userProfileId':_0x506e4a[_0xff4c('0x53')]},'raw':!![]})[_0xff4c('0x29')](function(_0x62075b){if(_0x62075b&&_0x62075b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2cfdb1[_0xff4c('0x2f')],'resourceId':_0x2cfdb1['id'],'type':_0x62075b[_0xff4c('0x2f')],'sectionId':_0x62075b['id']},{})['then'](function(){return _0xcaa27b;});}else{return _0xcaa27b;}})[_0xff4c('0x49')](function(_0x595855){logger[_0xff4c('0x2d')](_0xff4c('0x54'),_0x595855);throw _0x595855;});}return _0xcaa27b;})[_0xff4c('0x29')](respondWithResult(_0x4f40ac,0xc9))[_0xff4c('0x49')](handleError(_0x4f40ac,null));};exports[_0xff4c('0x28')]=function(_0x579793,_0x3eec7d){if(_0x579793['body']['id']){delete _0x579793[_0xff4c('0x55')]['id'];}return db[_0xff4c('0x32')][_0xff4c('0x4d')]({'where':{'id':_0x579793[_0xff4c('0x4a')]['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0x3eec7d,null))[_0xff4c('0x29')](saveUpdates(_0x579793['body'],null))[_0xff4c('0x29')](respondWithResult(_0x3eec7d,null))[_0xff4c('0x49')](handleError(_0x3eec7d,null));};exports[_0xff4c('0x2c')]=function(_0x2ceb52,_0x43bc48){return db['WhatsappQueue'][_0xff4c('0x4d')]({'where':{'id':_0x2ceb52[_0xff4c('0x4a')]['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0x43bc48,null))['then'](removeEntity(_0x43bc48,null))[_0xff4c('0x49')](handleError(_0x43bc48,null));};exports[_0xff4c('0x56')]=function(_0x5d04b7,_0x315ea9){return db['WhatsappQueue'][_0xff4c('0x56')]()['then'](respondWithResult(_0x315ea9,null))[_0xff4c('0x49')](handleError(_0x315ea9,null));};exports[_0xff4c('0x57')]=function(_0x502cfb,_0xe5a125,_0x574e22){var _0x21d2f7={'raw':!![],'where':{}},_0x2ea3c4={},_0x50da0f;return db['WhatsappQueue'][_0xff4c('0x58')]({'where':{'id':_0x502cfb[_0xff4c('0x4a')]['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0xe5a125,null))[_0xff4c('0x29')](function(_0x38850c){if(_0x38850c){_0x50da0f=_0x38850c[_0xff4c('0x2a')]({'plain':!![]});_0x2ea3c4['model']=_[_0xff4c('0x37')](db[_0xff4c('0x59')]['rawAttributes']);_0x2ea3c4[_0xff4c('0x36')]=_['keys'](_0x502cfb[_0xff4c('0x36')]);_0x2ea3c4[_0xff4c('0x38')]=_['intersection'](_0x2ea3c4[_0xff4c('0x35')],_0x2ea3c4[_0xff4c('0x36')]);_0x21d2f7[_0xff4c('0x39')]=_[_0xff4c('0x4c')](_0x2ea3c4['model'],qs[_0xff4c('0x3a')](_0x502cfb['query'][_0xff4c('0x3a')]));_0x21d2f7[_0xff4c('0x39')]=_0x21d2f7[_0xff4c('0x39')][_0xff4c('0x3b')]?_0x21d2f7[_0xff4c('0x39')]:_0x2ea3c4[_0xff4c('0x35')];if(!_0x502cfb[_0xff4c('0x36')]['hasOwnProperty'](_0xff4c('0x3d'))){_0x21d2f7['limit']=qs[_0xff4c('0x22')](_0x502cfb[_0xff4c('0x36')]['limit']);_0x21d2f7[_0xff4c('0x20')]=qs[_0xff4c('0x20')](_0x502cfb[_0xff4c('0x36')][_0xff4c('0x20')]);}_0x21d2f7[_0xff4c('0x5a')]=qs[_0xff4c('0x3e')](_0x502cfb[_0xff4c('0x36')][_0xff4c('0x3e')]);_0x21d2f7[_0xff4c('0x3f')]=qs[_0xff4c('0x38')](_['pick'](_0x502cfb[_0xff4c('0x36')],_0x2ea3c4[_0xff4c('0x38')]));_0x21d2f7[_0xff4c('0x3f')][_0xff4c('0x5b')]=_0x38850c['id'];if(_0x502cfb[_0xff4c('0x36')][_0xff4c('0x41')]){_0x21d2f7[_0xff4c('0x3f')]=_['merge'](_0x21d2f7[_0xff4c('0x3f')],{'$or':_[_0xff4c('0x5c')](_0x21d2f7[_0xff4c('0x39')],function(_0x3dd86e){var _0x196c44={};_0x196c44[_0x3dd86e]={'$like':'%'+_0x502cfb[_0xff4c('0x36')][_0xff4c('0x41')]+'%'};return _0x196c44;})});}_0x21d2f7=_[_0xff4c('0x43')]({},_0x21d2f7,_0x502cfb[_0xff4c('0x44')]);return db[_0xff4c('0x59')][_0xff4c('0x47')](_0x21d2f7);}})['then'](function(_0x480fd0){if(_0x480fd0){return db[_0xff4c('0x5d')][_0xff4c('0x5e')]({'where':{'id':_['map'](_0x480fd0,_0xff4c('0x5f')),'role':_0xff4c('0x60')},'attributes':['id',_0xff4c('0x2f'),'whatsappPause','updatedAt',_0xff4c('0x61')]});}})[_0xff4c('0x29')](function(_0x54ca60){if(_0x54ca60){return{'count':_0x54ca60['count'],'rows':_[_0xff4c('0x5c')](_0x54ca60[_0xff4c('0x48')],function(_0x4375cb){return{'membername':_0x4375cb[_0xff4c('0x2f')],'UserId':_0x4375cb['id'],'queue_name':_0x50da0f['name'],'WhatsappQueueId':_0x50da0f['id'],'interface':util[_0xff4c('0x62')](_0xff4c('0x63'),'SIP',_0x4375cb[_0xff4c('0x2f')]),'penalty':0x0,'paused':_0x4375cb[_0xff4c('0x64')],'createdAt':_0x4375cb['createdAt'],'updatedAt':_0x4375cb[_0xff4c('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xe5a125,_0x21d2f7))[_0xff4c('0x49')](handleError(_0xe5a125,null));};exports['getTeams']=function(_0x5961d6,_0x102fa7,_0x27a930){var _0x4f67cc={};var _0x4d9c52={};var _0x4f52e4;var _0x18f235;return db[_0xff4c('0x32')][_0xff4c('0x58')]({'where':{'id':_0x5961d6[_0xff4c('0x4a')]['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0x102fa7,null))[_0xff4c('0x29')](function(_0x172453){if(_0x172453){_0x4f52e4=_0x172453;_0x4d9c52['model']=_[_0xff4c('0x37')](db[_0xff4c('0x66')][_0xff4c('0x4b')]);_0x4d9c52['query']=_[_0xff4c('0x37')](_0x5961d6['query']);_0x4d9c52['filters']=_[_0xff4c('0x4c')](_0x4d9c52[_0xff4c('0x35')],_0x4d9c52['query']);_0x4f67cc[_0xff4c('0x39')]=_[_0xff4c('0x4c')](_0x4d9c52['model'],qs[_0xff4c('0x3a')](_0x5961d6[_0xff4c('0x36')]['fields']));_0x4f67cc['attributes']=_0x4f67cc['attributes'][_0xff4c('0x3b')]?_0x4f67cc[_0xff4c('0x39')]:_0x4d9c52[_0xff4c('0x35')];_0x4f67cc[_0xff4c('0x5a')]=qs[_0xff4c('0x3e')](_0x5961d6[_0xff4c('0x36')][_0xff4c('0x3e')]);_0x4f67cc['where']=qs['filters'](_[_0xff4c('0x40')](_0x5961d6['query'],_0x4d9c52[_0xff4c('0x38')]));if(_0x5961d6[_0xff4c('0x36')][_0xff4c('0x41')]){_0x4f67cc['where']=_[_0xff4c('0x43')](_0x4f67cc[_0xff4c('0x3f')],{'$or':_[_0xff4c('0x5c')](_0x4f67cc['attributes'],function(_0x107dab){var _0x23f163={};_0x23f163[_0x107dab]={'$like':'%'+_0x5961d6[_0xff4c('0x36')][_0xff4c('0x41')]+'%'};return _0x23f163;})});}_0x4f67cc=_[_0xff4c('0x43')]({},_0x4f67cc,_0x5961d6[_0xff4c('0x44')]);return _0x4f52e4[_0xff4c('0x67')](_0x4f67cc);}})['then'](function(_0x3635f9){if(_0x3635f9){_0x18f235=_0x3635f9[_0xff4c('0x3b')];if(!_0x5961d6[_0xff4c('0x36')][_0xff4c('0x3c')](_0xff4c('0x3d'))){_0x4f67cc['limit']=qs[_0xff4c('0x22')](_0x5961d6[_0xff4c('0x36')]['limit']);_0x4f67cc[_0xff4c('0x20')]=qs[_0xff4c('0x20')](_0x5961d6[_0xff4c('0x36')][_0xff4c('0x20')]);}return _0x4f52e4[_0xff4c('0x67')](_0x4f67cc);}})[_0xff4c('0x29')](function(_0x158cce){if(_0x158cce){return _0x158cce?{'count':_0x18f235,'rows':_0x158cce}:null;}})[_0xff4c('0x29')](respondWithResult(_0x102fa7,null))[_0xff4c('0x49')](handleError(_0x102fa7,null));};exports[_0xff4c('0x68')]=function(_0x153029,_0x3e0f07,_0x59337a){var _0x208610=_0x153029[_0xff4c('0x55')][_0xff4c('0x69')];return db[_0xff4c('0x66')][_0xff4c('0x47')]({'where':{'id':_0x208610},'attributes':['id'],'include':[{'model':db[_0xff4c('0x5d')],'as':_0xff4c('0x6a'),'attributes':['id',_0xff4c('0x2f'),_0xff4c('0x6b'),_0xff4c('0x6c'),'interface'],'raw':!![]}]})[_0xff4c('0x29')](function(_0x1b14d5){if(_0x1b14d5){var _0x1b7cdb=_[_0xff4c('0x6d')](_0x1b14d5,function(_0x2758de){var _0x3697ef=_0x2758de[_0xff4c('0x2a')]({'plain':!![]});return _0x3697ef[_0xff4c('0x6a')];});return db[_0xff4c('0x32')]['find']({'where':{'id':_0x153029[_0xff4c('0x4a')]['id']}})[_0xff4c('0x29')](function(_0x2850fe){return db[_0xff4c('0x6e')][_0xff4c('0x6f')](function(_0x56f61a){return _0x2850fe[_0xff4c('0x68')](_0x208610,{'transaction':_0x56f61a})[_0xff4c('0x29')](function(){return BPromise[_0xff4c('0x70')](_0x1b7cdb,function(_0x1a31fc){return db['UserWhatsappQueue'][_0xff4c('0x71')]({'where':{'UserId':_0x1a31fc['id'],'WhatsappQueueId':_0x153029['params']['id']},'transaction':_0x56f61a});});})[_0xff4c('0x29')](function(){_0x1b7cdb[_0xff4c('0x72')](function(_0xf3c2f5){socket[_0xff4c('0x73')](_0xff4c('0x74'),{'UserId':_0xf3c2f5['id'],'WhatsappQueueId':_0x2850fe['id']});});});});});}})['then'](respondWithStatusCode(_0x3e0f07,null))[_0xff4c('0x49')](handleError(_0x3e0f07,null));};exports[_0xff4c('0x75')]=function(_0x1bcbd2,_0x3c074a,_0x59f512){return db[_0xff4c('0x66')]['findAll']({'where':{'id':_0x1bcbd2[_0xff4c('0x36')][_0xff4c('0x69')]},'attributes':['id'],'include':[{'model':db[_0xff4c('0x5d')],'as':_0xff4c('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xff4c('0x29')](handleEntityNotFound(_0x3c074a,null))[_0xff4c('0x29')](function(_0x3cb502){var _0x313952=_['map'](_0x3cb502,'id');var _0x3c17db=[];var _0x1f1e39=[];var _0x50af88=squel[_0xff4c('0x76')]();_0x50af88['field']('tq.TeamId')['from']('team_has_whatsapp_queues','tq')[_0xff4c('0x77')]('user_has_teams','ut',_0xff4c('0x78'))[_0xff4c('0x3f')]('WhatsappQueueId\x20=\x20?',_0x1bcbd2[_0xff4c('0x4a')]['id']);for(var _0x2a147f=0x0;_0x2a147f<_0x3cb502['length'];_0x2a147f+=0x1){let _0x100e82=_0x3cb502[_0x2a147f];for(var _0x522e7b=0x0;_0x522e7b<_0x100e82[_0xff4c('0x6a')]['length'];_0x522e7b+=0x1){let _0x10a246=_0x100e82[_0xff4c('0x6a')][_0x522e7b];var _0x19d1d4=_0x50af88['clone']();_0x19d1d4['where']('ut.UserId\x20=\x20?',_0x10a246['id']);_0x1f1e39['push'](db[_0xff4c('0x6e')]['query'](_0x19d1d4[_0xff4c('0x79')](),{'type':db[_0xff4c('0x6e')][_0xff4c('0x7a')][_0xff4c('0x7b')]})[_0xff4c('0x29')](function(_0x507a2d){if(_0x507a2d[_0xff4c('0x3b')]===0x1){return _0x10a246['id'];}else{var _0x40a084=_['every'](_[_0xff4c('0x5c')](_0x507a2d,_0xff4c('0x7c')),function(_0x216f3e){return _[_0xff4c('0x7d')](_0x313952,_0x216f3e);});if(_0x40a084){return _0x10a246['id'];}}}));}}return BPromise[_0xff4c('0x7e')](_0x1f1e39)[_0xff4c('0x29')](function(_0x37cdeb){_0x3c17db=_(_0x3c17db)[_0xff4c('0x7f')](_0x37cdeb)[_0xff4c('0x80')]()[_0xff4c('0x81')]();return db[_0xff4c('0x32')][_0xff4c('0x4d')]({'where':{'id':_0x1bcbd2['params']['id']}})['then'](function(_0x6e6f05){return db[_0xff4c('0x6e')][_0xff4c('0x6f')](function(_0xcf2852){return _0x6e6f05[_0xff4c('0x75')](_0x1bcbd2[_0xff4c('0x36')][_0xff4c('0x69')],{'transaction':_0xcf2852})[_0xff4c('0x29')](function(){if(!_[_0xff4c('0x82')](_0x3c17db)){return _0x6e6f05[_0xff4c('0x83')](_0x3c17db,{'transaction':_0xcf2852});}})[_0xff4c('0x29')](function(){_0x3c17db[_0xff4c('0x72')](function(_0x565af5){socket[_0xff4c('0x73')]('userWhatsappQueue:remove',{'UserId':_0x565af5,'WhatsappQueueId':_0x6e6f05['id']});});});});});});})[_0xff4c('0x29')](respondWithStatusCode(_0x3c074a,null))[_0xff4c('0x49')](handleError(_0x3c074a,null));};exports[_0xff4c('0x84')]=function(_0xc19482,_0x24f64f,_0x38562d){return db['WhatsappQueue'][_0xff4c('0x4d')]({'where':{'id':_0xc19482['params']['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0x24f64f,null))[_0xff4c('0x29')](function(_0x35a5c1){if(_0x35a5c1){return _0x35a5c1[_0xff4c('0x84')](_0xc19482[_0xff4c('0x55')][_0xff4c('0x69')],_[_0xff4c('0x85')](_0xc19482['body'],[_0xff4c('0x69'),'id'])||{})[_0xff4c('0x86')](function(_0x5833d7){for(var _0x25d55b=0x0;_0x25d55b<_0xc19482[_0xff4c('0x55')]['ids'][_0xff4c('0x3b')];_0x25d55b+=0x1){socket[_0xff4c('0x73')]('userWhatsappQueue:save',{'UserId':Number(_0xc19482['body'][_0xff4c('0x69')][_0x25d55b]),'WhatsappQueueId':Number(_0xc19482['params']['id'])});}return _0x5833d7;});}})[_0xff4c('0x29')](respondWithResult(_0x24f64f,null))[_0xff4c('0x49')](handleError(_0x24f64f,null));};exports[_0xff4c('0x83')]=function(_0x22c6cf,_0x3a3c0b,_0x2a21f2){return db[_0xff4c('0x32')][_0xff4c('0x4d')]({'where':{'id':_0x22c6cf['params']['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0x3a3c0b,null))['then'](function(_0x55aa33){if(_0x55aa33){return _0x55aa33['removeAgents'](_0x22c6cf[_0xff4c('0x36')]['ids'])[_0xff4c('0x29')](function(){if(_[_0xff4c('0x87')](_0x22c6cf[_0xff4c('0x36')][_0xff4c('0x69')])){for(var _0x120dcf=0x0;_0x120dcf<_0x22c6cf[_0xff4c('0x36')][_0xff4c('0x69')][_0xff4c('0x3b')];_0x120dcf+=0x1){socket[_0xff4c('0x73')]('userWhatsappQueue:remove',{'UserId':Number(_0x22c6cf[_0xff4c('0x36')][_0xff4c('0x69')][_0x120dcf]),'WhatsappQueueId':Number(_0x22c6cf['params']['id'])});}}else{socket['emit'](_0xff4c('0x88'),{'UserId':Number(_0x22c6cf[_0xff4c('0x36')][_0xff4c('0x69')]),'WhatsappQueueId':Number(_0x22c6cf[_0xff4c('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x3a3c0b,null))[_0xff4c('0x49')](handleError(_0x3a3c0b,null));};exports['getAgents']=function(_0x2e995a,_0x265160,_0x47e350){var _0x515d15={};var _0x4a2c6d={};var _0x1c553e;var _0x1260b2;return db[_0xff4c('0x32')][_0xff4c('0x58')]({'where':{'id':_0x2e995a[_0xff4c('0x4a')]['id']}})[_0xff4c('0x29')](handleEntityNotFound(_0x265160,null))[_0xff4c('0x29')](function(_0x401af3){if(_0x401af3){_0x1c553e=_0x401af3;_0x4a2c6d[_0xff4c('0x35')]=_[_0xff4c('0x37')](db[_0xff4c('0x5d')][_0xff4c('0x4b')]);_0x4a2c6d[_0xff4c('0x36')]=_[_0xff4c('0x37')](_0x2e995a[_0xff4c('0x36')]);_0x4a2c6d['filters']=_['intersection'](_0x4a2c6d[_0xff4c('0x35')],_0x4a2c6d[_0xff4c('0x36')]);_0x515d15[_0xff4c('0x39')]=_[_0xff4c('0x4c')](_0x4a2c6d['model'],qs[_0xff4c('0x3a')](_0x2e995a[_0xff4c('0x36')][_0xff4c('0x3a')]));_0x515d15['attributes']=_0x515d15[_0xff4c('0x39')]['length']?_0x515d15[_0xff4c('0x39')]:_0x4a2c6d[_0xff4c('0x35')];_0x515d15['order']=qs[_0xff4c('0x3e')](_0x2e995a[_0xff4c('0x36')][_0xff4c('0x3e')]);_0x515d15['where']=qs['filters'](_[_0xff4c('0x40')](_0x2e995a['query'],_0x4a2c6d[_0xff4c('0x38')]));if(_0x2e995a[_0xff4c('0x36')][_0xff4c('0x41')]){_0x515d15[_0xff4c('0x3f')]=_[_0xff4c('0x43')](_0x515d15['where'],{'$or':_['map'](_0x515d15[_0xff4c('0x39')],function(_0x3efdea){var _0x50ccaf={};_0x50ccaf[_0x3efdea]={'$like':'%'+_0x2e995a[_0xff4c('0x36')][_0xff4c('0x41')]+'%'};return _0x50ccaf;})});}_0x515d15=_[_0xff4c('0x43')]({},_0x515d15,_0x2e995a[_0xff4c('0x44')]);return _0x1c553e[_0xff4c('0x89')](_0x515d15);}})[_0xff4c('0x29')](function(_0x80f885){if(_0x80f885){_0x1260b2=_0x80f885[_0xff4c('0x3b')];if(!_0x2e995a[_0xff4c('0x36')][_0xff4c('0x3c')](_0xff4c('0x3d'))){_0x515d15[_0xff4c('0x22')]=qs['limit'](_0x2e995a[_0xff4c('0x36')]['limit']);_0x515d15[_0xff4c('0x20')]=qs[_0xff4c('0x20')](_0x2e995a[_0xff4c('0x36')]['offset']);}return _0x1c553e['getAgents'](_0x515d15);}})[_0xff4c('0x29')](function(_0x28b04f){if(_0x28b04f){return _0x28b04f?{'count':_0x1260b2,'rows':_0x28b04f}:null;}})[_0xff4c('0x29')](respondWithResult(_0x265160,null))[_0xff4c('0x49')](handleError(_0x265160,null));};
\ No newline at end of file
+var _0xdb2a=['format','%s/%s','SIP','getTeams','findOne','addTeams','ids','Team','online','voicePause','interface','Agents','transaction','each','forEach','userWhatsappQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_whatsapp_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','toString','sequelize','QueryTypes','SELECT','includes','all','union','compact','value','isEmpty','removeAgents','emit','userWhatsappQueue:remove','addAgents','omit','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','WhatsappQueues','stack','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','merge','where','type','options','includeAll','include','rows','catch','show','params','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','name','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserWhatsappQueue','hasOwnProperty','WhatsappQueueId','findAll','User','findAndCountAll','whatsappPause','updatedAt','createdAt'];(function(_0x2d256f,_0x4d376c){var _0x3b0053=function(_0x10b462){while(--_0x10b462){_0x2d256f['push'](_0x2d256f['shift']());}};_0x3b0053(++_0x4d376c);}(_0xdb2a,0x1cf));var _0xadb2=function(_0x2d508e,_0x32a0b5){_0x2d508e=_0x2d508e-0x0;var _0x2a3122=_0xdb2a[_0x2d508e];return _0x2a3122;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xadb2('0x0'));var zipdir=require(_0xadb2('0x1'));var jsonpatch=require(_0xadb2('0x2'));var rp=require(_0xadb2('0x3'));var moment=require(_0xadb2('0x4'));var BPromise=require(_0xadb2('0x5'));var Mustache=require(_0xadb2('0x6'));var util=require(_0xadb2('0x7'));var path=require(_0xadb2('0x8'));var sox=require(_0xadb2('0x9'));var csv=require(_0xadb2('0xa'));var ejs=require(_0xadb2('0xb'));var fs=require('fs');var fs_extra=require(_0xadb2('0xc'));var _=require(_0xadb2('0xd'));var squel=require(_0xadb2('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xadb2('0xa'));var querystring=require('querystring');var Papa=require(_0xadb2('0xf'));var Redis=require(_0xadb2('0x10'));var authService=require(_0xadb2('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xadb2('0x12'));var logger=require('../../config/logger')(_0xadb2('0x13'));var utils=require(_0xadb2('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xadb2('0x15'))['db'];config[_0xadb2('0x16')]=_[_0xadb2('0x17')](config[_0xadb2('0x16')],{'host':_0xadb2('0x18'),'port':0x18eb});var socket=require(_0xadb2('0x19'))(new Redis(config['redis']));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x227f2a,_0x4158f8){_0x4158f8=_0x4158f8||0xcc;return function(_0x56460e){if(_0x56460e){return _0x227f2a[_0xadb2('0x1a')](_0x4158f8);}return _0x227f2a[_0xadb2('0x1b')](_0x4158f8)[_0xadb2('0x1c')]();};}function respondWithResult(_0x4ccf82,_0x16ebf9){_0x16ebf9=_0x16ebf9||0xc8;return function(_0x53e19d){if(_0x53e19d){return _0x4ccf82['status'](_0x16ebf9)[_0xadb2('0x1d')](_0x53e19d);}};}function respondWithFilteredResult(_0x272af6,_0x475966){return function(_0x46fee8){if(_0x46fee8){var _0xbd04e7=typeof _0x475966[_0xadb2('0x1e')]==='undefined'&&typeof _0x475966[_0xadb2('0x1f')]===_0xadb2('0x20');var _0x2bd82d=_0x46fee8[_0xadb2('0x21')];var _0x475924=_0xbd04e7?0x0:_0x475966['offset'];var _0x1ca7d6=_0xbd04e7?_0x46fee8[_0xadb2('0x21')]:_0x475966[_0xadb2('0x1e')]+_0x475966[_0xadb2('0x1f')];var _0x31ecc9;if(_0x1ca7d6>=_0x2bd82d){_0x1ca7d6=_0x2bd82d;_0x31ecc9=0xc8;}else{_0x31ecc9=0xce;}_0x272af6[_0xadb2('0x1b')](_0x31ecc9);return _0x272af6[_0xadb2('0x22')](_0xadb2('0x23'),_0x475924+'-'+_0x1ca7d6+'/'+_0x2bd82d)['json'](_0x46fee8);}return null;};}function patchUpdates(_0x4b9c6d){return function(_0x41374e){try{jsonpatch[_0xadb2('0x24')](_0x41374e,_0x4b9c6d,!![]);}catch(_0x30177a){return BPromise[_0xadb2('0x25')](_0x30177a);}return _0x41374e[_0xadb2('0x26')]();};}function saveUpdates(_0x57d1f4,_0x5c0b39){return function(_0x2a0d0d){if(_0x2a0d0d){return _0x2a0d0d[_0xadb2('0x27')](_0x57d1f4)[_0xadb2('0x28')](function(_0x2de11e){return _0x2de11e;});}return null;};}function removeEntity(_0x2019dc,_0x488f82){return function(_0x1aab04){if(_0x1aab04){return _0x1aab04[_0xadb2('0x29')]()[_0xadb2('0x28')](function(){var _0x2eb315=_0x1aab04[_0xadb2('0x2a')]({'plain':!![]});var _0x5e66d5=_0xadb2('0x2b');return db['UserProfileResource'][_0xadb2('0x29')]({'where':{'type':_0x5e66d5,'resourceId':_0x2eb315['id']}})[_0xadb2('0x28')](function(){return _0x1aab04;});})[_0xadb2('0x28')](function(){_0x2019dc[_0xadb2('0x1b')](0xcc)[_0xadb2('0x1c')]();});}};}function handleEntityNotFound(_0x44f3d0,_0x1372f1){return function(_0x270717){if(!_0x270717){_0x44f3d0['sendStatus'](0x194);}return _0x270717;};}function handleError(_0x32395a,_0x47bafc){_0x47bafc=_0x47bafc||0x1f4;return function(_0xbc20f4){logger['error'](_0xbc20f4[_0xadb2('0x2c')]);if(_0xbc20f4['name']){delete _0xbc20f4['name'];}_0x32395a[_0xadb2('0x1b')](_0x47bafc)[_0xadb2('0x2d')](_0xbc20f4);};}exports[_0xadb2('0x2e')]=function(_0x5ef3c3,_0x1b0561){var _0xa58781={},_0x36370a={},_0x1c3277={'count':0x0,'rows':[]};var _0x3fa919=_[_0xadb2('0x2f')](db[_0xadb2('0x30')][_0xadb2('0x31')],function(_0x2c020e){return{'name':_0x2c020e[_0xadb2('0x32')],'type':_0x2c020e['type'][_0xadb2('0x33')]};});_0x36370a[_0xadb2('0x34')]=_[_0xadb2('0x2f')](_0x3fa919,'name');_0x36370a[_0xadb2('0x35')]=_[_0xadb2('0x36')](_0x5ef3c3[_0xadb2('0x35')]);_0x36370a[_0xadb2('0x37')]=_['intersection'](_0x36370a[_0xadb2('0x34')],_0x36370a[_0xadb2('0x35')]);_0xa58781[_0xadb2('0x38')]=_[_0xadb2('0x39')](_0x36370a[_0xadb2('0x34')],qs[_0xadb2('0x3a')](_0x5ef3c3[_0xadb2('0x35')]['fields']));_0xa58781['attributes']=_0xa58781[_0xadb2('0x38')][_0xadb2('0x3b')]?_0xa58781[_0xadb2('0x38')]:_0x36370a[_0xadb2('0x34')];if(!_0x5ef3c3[_0xadb2('0x35')]['hasOwnProperty'](_0xadb2('0x3c'))){_0xa58781[_0xadb2('0x1f')]=qs[_0xadb2('0x1f')](_0x5ef3c3['query'][_0xadb2('0x1f')]);_0xa58781[_0xadb2('0x1e')]=qs[_0xadb2('0x1e')](_0x5ef3c3[_0xadb2('0x35')]['offset']);}_0xa58781[_0xadb2('0x3d')]=qs[_0xadb2('0x3e')](_0x5ef3c3[_0xadb2('0x35')][_0xadb2('0x3e')]);_0xa58781['where']=qs[_0xadb2('0x37')](_[_0xadb2('0x3f')](_0x5ef3c3[_0xadb2('0x35')],_0x36370a[_0xadb2('0x37')]),_0x3fa919);if(_0x5ef3c3[_0xadb2('0x35')][_0xadb2('0x40')]){_0xa58781['where']=_[_0xadb2('0x41')](_0xa58781[_0xadb2('0x42')],{'$or':_[_0xadb2('0x2f')](_0x3fa919,function(_0x21538b){if(_0x21538b[_0xadb2('0x43')]!=='VIRTUAL'){var _0x5efc16={};_0x5efc16[_0x21538b['name']]={'$like':'%'+_0x5ef3c3[_0xadb2('0x35')][_0xadb2('0x40')]+'%'};return _0x5efc16;}})});}_0xa58781=_[_0xadb2('0x41')]({},_0xa58781,_0x5ef3c3[_0xadb2('0x44')]);var _0x4b7c1e={'where':_0xa58781['where']};return db['WhatsappQueue'][_0xadb2('0x21')](_0x4b7c1e)[_0xadb2('0x28')](function(_0x42f032){_0x1c3277[_0xadb2('0x21')]=_0x42f032;if(_0x5ef3c3['query'][_0xadb2('0x45')]){_0xa58781[_0xadb2('0x46')]=[{'all':!![]}];}return db[_0xadb2('0x30')]['findAll'](_0xa58781);})[_0xadb2('0x28')](function(_0x1f27eb){_0x1c3277[_0xadb2('0x47')]=_0x1f27eb;return _0x1c3277;})[_0xadb2('0x28')](respondWithFilteredResult(_0x1b0561,_0xa58781))[_0xadb2('0x48')](handleError(_0x1b0561,null));};exports[_0xadb2('0x49')]=function(_0x2b8f1d,_0x27840d){var _0x20ec0b={'raw':!![],'where':{'id':_0x2b8f1d[_0xadb2('0x4a')]['id']}},_0x351c05={};_0x351c05[_0xadb2('0x34')]=_[_0xadb2('0x36')](db[_0xadb2('0x30')]['rawAttributes']);_0x351c05[_0xadb2('0x35')]=_[_0xadb2('0x36')](_0x2b8f1d[_0xadb2('0x35')]);_0x351c05[_0xadb2('0x37')]=_[_0xadb2('0x39')](_0x351c05[_0xadb2('0x34')],_0x351c05[_0xadb2('0x35')]);_0x20ec0b[_0xadb2('0x38')]=_[_0xadb2('0x39')](_0x351c05[_0xadb2('0x34')],qs['fields'](_0x2b8f1d[_0xadb2('0x35')]['fields']));_0x20ec0b[_0xadb2('0x38')]=_0x20ec0b[_0xadb2('0x38')][_0xadb2('0x3b')]?_0x20ec0b[_0xadb2('0x38')]:_0x351c05[_0xadb2('0x34')];if(_0x2b8f1d[_0xadb2('0x35')][_0xadb2('0x45')]){_0x20ec0b[_0xadb2('0x46')]=[{'all':!![]}];}_0x20ec0b=_['merge']({},_0x20ec0b,_0x2b8f1d[_0xadb2('0x44')]);return db[_0xadb2('0x30')][_0xadb2('0x4b')](_0x20ec0b)['then'](handleEntityNotFound(_0x27840d,null))[_0xadb2('0x28')](respondWithResult(_0x27840d,null))[_0xadb2('0x48')](handleError(_0x27840d,null));};exports[_0xadb2('0x4c')]=function(_0x2a13f9,_0x28206a){return db['WhatsappQueue']['create'](_0x2a13f9[_0xadb2('0x4d')],{})[_0xadb2('0x28')](function(_0x35c16e){var _0x2f471b=_0x2a13f9[_0xadb2('0x4e')][_0xadb2('0x2a')]({'plain':!![]});if(!_0x2f471b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f471b['role']===_0xadb2('0x4e')){var _0x2c77db=_0x35c16e[_0xadb2('0x2a')]({'plain':!![]});var _0x3c33a9='WhatsappQueues';return db[_0xadb2('0x4f')]['find']({'where':{'name':_0x3c33a9,'userProfileId':_0x2f471b[_0xadb2('0x50')]},'raw':!![]})[_0xadb2('0x28')](function(_0x78a957){if(_0x78a957&&_0x78a957[_0xadb2('0x51')]===0x0){return db[_0xadb2('0x52')][_0xadb2('0x4c')]({'name':_0x2c77db[_0xadb2('0x53')],'resourceId':_0x2c77db['id'],'type':_0x78a957[_0xadb2('0x53')],'sectionId':_0x78a957['id']},{})['then'](function(){return _0x35c16e;});}else{return _0x35c16e;}})[_0xadb2('0x48')](function(_0x22dcdb){logger[_0xadb2('0x54')](_0xadb2('0x55'),_0x22dcdb);throw _0x22dcdb;});}return _0x35c16e;})[_0xadb2('0x28')](respondWithResult(_0x28206a,0xc9))[_0xadb2('0x48')](handleError(_0x28206a,null));};exports[_0xadb2('0x27')]=function(_0x29558c,_0x3a73bf){if(_0x29558c['body']['id']){delete _0x29558c[_0xadb2('0x4d')]['id'];}return db[_0xadb2('0x30')]['find']({'where':{'id':_0x29558c['params']['id']}})['then'](handleEntityNotFound(_0x3a73bf,null))['then'](saveUpdates(_0x29558c[_0xadb2('0x4d')],null))[_0xadb2('0x28')](respondWithResult(_0x3a73bf,null))['catch'](handleError(_0x3a73bf,null));};exports[_0xadb2('0x29')]=function(_0x4efdc4,_0x209bb2){return db['WhatsappQueue'][_0xadb2('0x4b')]({'where':{'id':_0x4efdc4[_0xadb2('0x4a')]['id']}})[_0xadb2('0x28')](handleEntityNotFound(_0x209bb2,null))['then'](removeEntity(_0x209bb2,null))[_0xadb2('0x48')](handleError(_0x209bb2,null));};exports['describe']=function(_0x483630,_0x54f0e1){return db[_0xadb2('0x30')][_0xadb2('0x56')]()[_0xadb2('0x28')](respondWithResult(_0x54f0e1,null))[_0xadb2('0x48')](handleError(_0x54f0e1,null));};exports[_0xadb2('0x57')]=function(_0xeee97d,_0x2c231d,_0x15f688){var _0x36f376={'raw':!![],'where':{}},_0x47c195={},_0x18aa4a;return db['WhatsappQueue']['findOne']({'where':{'id':_0xeee97d[_0xadb2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c231d,null))[_0xadb2('0x28')](function(_0x17c48c){if(_0x17c48c){_0x18aa4a=_0x17c48c[_0xadb2('0x2a')]({'plain':!![]});_0x47c195['model']=_['keys'](db[_0xadb2('0x58')][_0xadb2('0x31')]);_0x47c195[_0xadb2('0x35')]=_[_0xadb2('0x36')](_0xeee97d['query']);_0x47c195[_0xadb2('0x37')]=_[_0xadb2('0x39')](_0x47c195['model'],_0x47c195[_0xadb2('0x35')]);_0x36f376[_0xadb2('0x38')]=_[_0xadb2('0x39')](_0x47c195[_0xadb2('0x34')],qs[_0xadb2('0x3a')](_0xeee97d[_0xadb2('0x35')]['fields']));_0x36f376[_0xadb2('0x38')]=_0x36f376[_0xadb2('0x38')][_0xadb2('0x3b')]?_0x36f376[_0xadb2('0x38')]:_0x47c195['model'];if(!_0xeee97d[_0xadb2('0x35')][_0xadb2('0x59')](_0xadb2('0x3c'))){_0x36f376[_0xadb2('0x1f')]=qs[_0xadb2('0x1f')](_0xeee97d['query'][_0xadb2('0x1f')]);_0x36f376['offset']=qs['offset'](_0xeee97d[_0xadb2('0x35')][_0xadb2('0x1e')]);}_0x36f376['order']=qs['sort'](_0xeee97d[_0xadb2('0x35')][_0xadb2('0x3e')]);_0x36f376[_0xadb2('0x42')]=qs[_0xadb2('0x37')](_[_0xadb2('0x3f')](_0xeee97d[_0xadb2('0x35')],_0x47c195[_0xadb2('0x37')]));_0x36f376[_0xadb2('0x42')][_0xadb2('0x5a')]=_0x17c48c['id'];if(_0xeee97d[_0xadb2('0x35')]['filter']){_0x36f376['where']=_[_0xadb2('0x41')](_0x36f376[_0xadb2('0x42')],{'$or':_['map'](_0x36f376['attributes'],function(_0x5093d9){var _0x1f8ebe={};_0x1f8ebe[_0x5093d9]={'$like':'%'+_0xeee97d[_0xadb2('0x35')][_0xadb2('0x40')]+'%'};return _0x1f8ebe;})});}_0x36f376=_[_0xadb2('0x41')]({},_0x36f376,_0xeee97d[_0xadb2('0x44')]);return db[_0xadb2('0x58')][_0xadb2('0x5b')](_0x36f376);}})[_0xadb2('0x28')](function(_0x1ab11c){if(_0x1ab11c){return db[_0xadb2('0x5c')][_0xadb2('0x5d')]({'where':{'id':_[_0xadb2('0x2f')](_0x1ab11c,'UserId'),'role':'agent'},'attributes':['id',_0xadb2('0x53'),_0xadb2('0x5e'),_0xadb2('0x5f'),_0xadb2('0x60')]});}})[_0xadb2('0x28')](function(_0x3f8478){if(_0x3f8478){return{'count':_0x3f8478[_0xadb2('0x21')],'rows':_[_0xadb2('0x2f')](_0x3f8478['rows'],function(_0x102b6d){return{'membername':_0x102b6d[_0xadb2('0x53')],'UserId':_0x102b6d['id'],'queue_name':_0x18aa4a[_0xadb2('0x53')],'WhatsappQueueId':_0x18aa4a['id'],'interface':util[_0xadb2('0x61')](_0xadb2('0x62'),_0xadb2('0x63'),_0x102b6d[_0xadb2('0x53')]),'penalty':0x0,'paused':_0x102b6d[_0xadb2('0x5e')],'createdAt':_0x102b6d[_0xadb2('0x60')],'updatedAt':_0x102b6d[_0xadb2('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xadb2('0x28')](respondWithFilteredResult(_0x2c231d,_0x36f376))[_0xadb2('0x48')](handleError(_0x2c231d,null));};exports[_0xadb2('0x64')]=function(_0x145473,_0x3fbfcd,_0x31ab37){var _0x512b36={};var _0x140303={};var _0x58eaf7;var _0x2cec87;return db[_0xadb2('0x30')][_0xadb2('0x65')]({'where':{'id':_0x145473[_0xadb2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3fbfcd,null))[_0xadb2('0x28')](function(_0x33965a){if(_0x33965a){_0x58eaf7=_0x33965a;_0x140303[_0xadb2('0x34')]=_[_0xadb2('0x36')](db['Team'][_0xadb2('0x31')]);_0x140303[_0xadb2('0x35')]=_['keys'](_0x145473[_0xadb2('0x35')]);_0x140303['filters']=_[_0xadb2('0x39')](_0x140303['model'],_0x140303[_0xadb2('0x35')]);_0x512b36[_0xadb2('0x38')]=_[_0xadb2('0x39')](_0x140303[_0xadb2('0x34')],qs[_0xadb2('0x3a')](_0x145473['query'][_0xadb2('0x3a')]));_0x512b36[_0xadb2('0x38')]=_0x512b36[_0xadb2('0x38')][_0xadb2('0x3b')]?_0x512b36[_0xadb2('0x38')]:_0x140303[_0xadb2('0x34')];_0x512b36[_0xadb2('0x3d')]=qs[_0xadb2('0x3e')](_0x145473[_0xadb2('0x35')][_0xadb2('0x3e')]);_0x512b36[_0xadb2('0x42')]=qs[_0xadb2('0x37')](_[_0xadb2('0x3f')](_0x145473[_0xadb2('0x35')],_0x140303['filters']));if(_0x145473['query'][_0xadb2('0x40')]){_0x512b36[_0xadb2('0x42')]=_[_0xadb2('0x41')](_0x512b36[_0xadb2('0x42')],{'$or':_[_0xadb2('0x2f')](_0x512b36[_0xadb2('0x38')],function(_0x2c641b){var _0x13a434={};_0x13a434[_0x2c641b]={'$like':'%'+_0x145473[_0xadb2('0x35')][_0xadb2('0x40')]+'%'};return _0x13a434;})});}_0x512b36=_[_0xadb2('0x41')]({},_0x512b36,_0x145473[_0xadb2('0x44')]);return _0x58eaf7['getTeams'](_0x512b36);}})[_0xadb2('0x28')](function(_0x8c0f55){if(_0x8c0f55){_0x2cec87=_0x8c0f55[_0xadb2('0x3b')];if(!_0x145473[_0xadb2('0x35')][_0xadb2('0x59')](_0xadb2('0x3c'))){_0x512b36[_0xadb2('0x1f')]=qs[_0xadb2('0x1f')](_0x145473['query'][_0xadb2('0x1f')]);_0x512b36[_0xadb2('0x1e')]=qs[_0xadb2('0x1e')](_0x145473[_0xadb2('0x35')][_0xadb2('0x1e')]);}return _0x58eaf7['getTeams'](_0x512b36);}})[_0xadb2('0x28')](function(_0x391b42){if(_0x391b42){return _0x391b42?{'count':_0x2cec87,'rows':_0x391b42}:null;}})['then'](respondWithResult(_0x3fbfcd,null))[_0xadb2('0x48')](handleError(_0x3fbfcd,null));};exports[_0xadb2('0x66')]=function(_0x54b20d,_0x5080c8,_0xf647c8){var _0x349442=_0x54b20d[_0xadb2('0x4d')][_0xadb2('0x67')];return db[_0xadb2('0x68')][_0xadb2('0x5b')]({'where':{'id':_0x349442},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xadb2('0x53'),_0xadb2('0x69'),_0xadb2('0x6a'),_0xadb2('0x6b')],'raw':!![]}]})[_0xadb2('0x28')](function(_0x3cb644){if(_0x3cb644){var _0xe2c340=_['flatMap'](_0x3cb644,function(_0x173bcd){var _0x4a1675=_0x173bcd['get']({'plain':!![]});return _0x4a1675[_0xadb2('0x6c')];});return db[_0xadb2('0x30')][_0xadb2('0x4b')]({'where':{'id':_0x54b20d[_0xadb2('0x4a')]['id']}})['then'](function(_0x572e29){return db['sequelize'][_0xadb2('0x6d')](function(_0x30e9cd){return _0x572e29[_0xadb2('0x66')](_0x349442,{'transaction':_0x30e9cd})[_0xadb2('0x28')](function(){return BPromise[_0xadb2('0x6e')](_0xe2c340,function(_0x1bb547){return db[_0xadb2('0x58')]['findOrCreate']({'where':{'UserId':_0x1bb547['id'],'WhatsappQueueId':_0x54b20d['params']['id']},'transaction':_0x30e9cd});});})['then'](function(){_0xe2c340[_0xadb2('0x6f')](function(_0x1cad3d){socket['emit'](_0xadb2('0x70'),{'UserId':_0x1cad3d['id'],'WhatsappQueueId':_0x572e29['id']});});});});});}})[_0xadb2('0x28')](respondWithStatusCode(_0x5080c8,null))[_0xadb2('0x48')](handleError(_0x5080c8,null));};exports[_0xadb2('0x71')]=function(_0x50d887,_0x22cdb0,_0x1fe860){return db[_0xadb2('0x68')][_0xadb2('0x5b')]({'where':{'id':_0x50d887['query'][_0xadb2('0x67')]},'attributes':['id'],'include':[{'model':db[_0xadb2('0x5c')],'as':_0xadb2('0x6c'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x22cdb0,null))[_0xadb2('0x28')](function(_0x5b3973){var _0x36794a=_[_0xadb2('0x2f')](_0x5b3973,'id');var _0x3090e5=[];var _0x21e7a4=[];var _0x133dd8=squel[_0xadb2('0x72')]();_0x133dd8[_0xadb2('0x73')](_0xadb2('0x74'))[_0xadb2('0x75')](_0xadb2('0x76'),'tq')['join'](_0xadb2('0x77'),'ut',_0xadb2('0x78'))[_0xadb2('0x42')](_0xadb2('0x79'),_0x50d887[_0xadb2('0x4a')]['id']);for(var _0x356fff=0x0;_0x356fff<_0x5b3973[_0xadb2('0x3b')];_0x356fff+=0x1){let _0x1de7fd=_0x5b3973[_0x356fff];for(var _0x5b2c9a=0x0;_0x5b2c9a<_0x1de7fd[_0xadb2('0x6c')]['length'];_0x5b2c9a+=0x1){let _0xb9a240=_0x1de7fd[_0xadb2('0x6c')][_0x5b2c9a];var _0x3efe1b=_0x133dd8[_0xadb2('0x7a')]();_0x3efe1b[_0xadb2('0x42')]('ut.UserId\x20=\x20?',_0xb9a240['id']);_0x21e7a4[_0xadb2('0x7b')](db['sequelize']['query'](_0x3efe1b[_0xadb2('0x7c')](),{'type':db[_0xadb2('0x7d')][_0xadb2('0x7e')][_0xadb2('0x7f')]})['then'](function(_0x459f47){if(_0x459f47[_0xadb2('0x3b')]===0x1){return _0xb9a240['id'];}else{var _0x27247e=_['every'](_[_0xadb2('0x2f')](_0x459f47,'TeamId'),function(_0x31a975){return _[_0xadb2('0x80')](_0x36794a,_0x31a975);});if(_0x27247e){return _0xb9a240['id'];}}}));}}return BPromise[_0xadb2('0x81')](_0x21e7a4)[_0xadb2('0x28')](function(_0x4c874f){_0x3090e5=_(_0x3090e5)[_0xadb2('0x82')](_0x4c874f)[_0xadb2('0x83')]()[_0xadb2('0x84')]();return db[_0xadb2('0x30')][_0xadb2('0x4b')]({'where':{'id':_0x50d887[_0xadb2('0x4a')]['id']}})['then'](function(_0x424e3a){return db['sequelize']['transaction'](function(_0x4844af){return _0x424e3a[_0xadb2('0x71')](_0x50d887['query'][_0xadb2('0x67')],{'transaction':_0x4844af})[_0xadb2('0x28')](function(){if(!_[_0xadb2('0x85')](_0x3090e5)){return _0x424e3a[_0xadb2('0x86')](_0x3090e5,{'transaction':_0x4844af});}})[_0xadb2('0x28')](function(){_0x3090e5['forEach'](function(_0xc15c56){socket[_0xadb2('0x87')](_0xadb2('0x88'),{'UserId':_0xc15c56,'WhatsappQueueId':_0x424e3a['id']});});});});});});})[_0xadb2('0x28')](respondWithStatusCode(_0x22cdb0,null))[_0xadb2('0x48')](handleError(_0x22cdb0,null));};exports[_0xadb2('0x89')]=function(_0x43e042,_0x326967,_0x43c3d0){return db[_0xadb2('0x30')][_0xadb2('0x4b')]({'where':{'id':_0x43e042['params']['id']}})[_0xadb2('0x28')](handleEntityNotFound(_0x326967,null))[_0xadb2('0x28')](function(_0x5f2014){if(_0x5f2014){return _0x5f2014[_0xadb2('0x89')](_0x43e042['body'][_0xadb2('0x67')],_[_0xadb2('0x8a')](_0x43e042[_0xadb2('0x4d')],[_0xadb2('0x67'),'id'])||{})['spread'](function(_0x496ca8){for(var _0x26ba5a=0x0;_0x26ba5a<_0x43e042[_0xadb2('0x4d')][_0xadb2('0x67')][_0xadb2('0x3b')];_0x26ba5a+=0x1){socket[_0xadb2('0x87')](_0xadb2('0x70'),{'UserId':Number(_0x43e042[_0xadb2('0x4d')][_0xadb2('0x67')][_0x26ba5a]),'WhatsappQueueId':Number(_0x43e042[_0xadb2('0x4a')]['id'])});}return _0x496ca8;});}})['then'](respondWithResult(_0x326967,null))[_0xadb2('0x48')](handleError(_0x326967,null));};exports['removeAgents']=function(_0x558028,_0x101856,_0x5426be){return db[_0xadb2('0x30')]['find']({'where':{'id':_0x558028[_0xadb2('0x4a')]['id']}})[_0xadb2('0x28')](handleEntityNotFound(_0x101856,null))[_0xadb2('0x28')](function(_0x522101){if(_0x522101){return _0x522101[_0xadb2('0x86')](_0x558028[_0xadb2('0x35')][_0xadb2('0x67')])[_0xadb2('0x28')](function(){if(_['isArray'](_0x558028[_0xadb2('0x35')][_0xadb2('0x67')])){for(var _0x30522c=0x0;_0x30522c<_0x558028['query'][_0xadb2('0x67')]['length'];_0x30522c+=0x1){socket[_0xadb2('0x87')](_0xadb2('0x88'),{'UserId':Number(_0x558028[_0xadb2('0x35')]['ids'][_0x30522c]),'WhatsappQueueId':Number(_0x558028[_0xadb2('0x4a')]['id'])});}}else{socket[_0xadb2('0x87')](_0xadb2('0x88'),{'UserId':Number(_0x558028[_0xadb2('0x35')][_0xadb2('0x67')]),'WhatsappQueueId':Number(_0x558028['params']['id'])});}});}})[_0xadb2('0x28')](respondWithStatusCode(_0x101856,null))[_0xadb2('0x48')](handleError(_0x101856,null));};exports[_0xadb2('0x8b')]=function(_0x21e9d1,_0x17f74d,_0x5662cd){var _0x5aa543={};var _0x526a1f={};var _0x37ec18;var _0x18a10d;return db[_0xadb2('0x30')][_0xadb2('0x65')]({'where':{'id':_0x21e9d1[_0xadb2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x17f74d,null))[_0xadb2('0x28')](function(_0x3dac9e){if(_0x3dac9e){_0x37ec18=_0x3dac9e;_0x526a1f[_0xadb2('0x34')]=_[_0xadb2('0x36')](db[_0xadb2('0x5c')][_0xadb2('0x31')]);_0x526a1f[_0xadb2('0x35')]=_['keys'](_0x21e9d1['query']);_0x526a1f[_0xadb2('0x37')]=_['intersection'](_0x526a1f[_0xadb2('0x34')],_0x526a1f['query']);_0x5aa543[_0xadb2('0x38')]=_[_0xadb2('0x39')](_0x526a1f[_0xadb2('0x34')],qs['fields'](_0x21e9d1[_0xadb2('0x35')][_0xadb2('0x3a')]));_0x5aa543[_0xadb2('0x38')]=_0x5aa543['attributes'][_0xadb2('0x3b')]?_0x5aa543[_0xadb2('0x38')]:_0x526a1f[_0xadb2('0x34')];_0x5aa543[_0xadb2('0x3d')]=qs['sort'](_0x21e9d1[_0xadb2('0x35')][_0xadb2('0x3e')]);_0x5aa543[_0xadb2('0x42')]=qs[_0xadb2('0x37')](_[_0xadb2('0x3f')](_0x21e9d1[_0xadb2('0x35')],_0x526a1f['filters']));if(_0x21e9d1[_0xadb2('0x35')]['filter']){_0x5aa543['where']=_[_0xadb2('0x41')](_0x5aa543['where'],{'$or':_[_0xadb2('0x2f')](_0x5aa543[_0xadb2('0x38')],function(_0x39d628){var _0x1e2c50={};_0x1e2c50[_0x39d628]={'$like':'%'+_0x21e9d1['query'][_0xadb2('0x40')]+'%'};return _0x1e2c50;})});}_0x5aa543=_[_0xadb2('0x41')]({},_0x5aa543,_0x21e9d1[_0xadb2('0x44')]);return _0x37ec18[_0xadb2('0x8b')](_0x5aa543);}})[_0xadb2('0x28')](function(_0x507391){if(_0x507391){_0x18a10d=_0x507391[_0xadb2('0x3b')];if(!_0x21e9d1['query'][_0xadb2('0x59')](_0xadb2('0x3c'))){_0x5aa543['limit']=qs[_0xadb2('0x1f')](_0x21e9d1['query'][_0xadb2('0x1f')]);_0x5aa543[_0xadb2('0x1e')]=qs[_0xadb2('0x1e')](_0x21e9d1[_0xadb2('0x35')][_0xadb2('0x1e')]);}return _0x37ec18[_0xadb2('0x8b')](_0x5aa543);}})[_0xadb2('0x28')](function(_0x173ab9){if(_0x173ab9){return _0x173ab9?{'count':_0x18a10d,'rows':_0x173ab9}:null;}})[_0xadb2('0x28')](respondWithResult(_0x17f74d,null))[_0xadb2('0x48')](handleError(_0x17f74d,null));};
\ No newline at end of file
index db5817c..bf9d99e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5862=['hasOwnProperty','exports','events','../../mysqldb','WhatsappQueue','remove','emit'];(function(_0x4db9ef,_0x4ea5bf){var _0x407a4f=function(_0x13171a){while(--_0x13171a){_0x4db9ef['push'](_0x4db9ef['shift']());}};_0x407a4f(++_0x4ea5bf);}(_0x5862,0x6b));var _0x2586=function(_0x254afb,_0x3f6ff4){_0x254afb=_0x254afb-0x0;var _0x564504=_0x5862[_0x254afb];return _0x564504;};'use strict';var EventEmitter=require(_0x2586('0x0'));var WhatsappQueue=require(_0x2586('0x1'))['db'][_0x2586('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2586('0x3')};function emitEvent(_0x352222){return function(_0x9635d0,_0x513ab5,_0x2c2676){WhatsappQueueEvents[_0x2586('0x4')](_0x352222+':'+_0x9635d0['id'],_0x9635d0);WhatsappQueueEvents[_0x2586('0x4')](_0x352222,_0x9635d0);_0x2c2676(null);};}for(var e in events){if(events[_0x2586('0x5')](e)){var event=events[e];WhatsappQueue['hook'](e,emitEvent(event));}}module[_0x2586('0x6')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x19cb=['hasOwnProperty','hook','events','WhatsappQueue','setMaxListeners','save','update','remove','emit'];(function(_0x12399a,_0x2462c2){var _0x590db3=function(_0x1eeca3){while(--_0x1eeca3){_0x12399a['push'](_0x12399a['shift']());}};_0x590db3(++_0x2462c2);}(_0x19cb,0x1e8));var _0xb19c=function(_0x17c9fb,_0x23f57){_0x17c9fb=_0x17c9fb-0x0;var _0x433145=_0x19cb[_0x17c9fb];return _0x433145;};'use strict';var EventEmitter=require(_0xb19c('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xb19c('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xb19c('0x2')](0x0);var events={'afterCreate':_0xb19c('0x3'),'afterUpdate':_0xb19c('0x4'),'afterDestroy':_0xb19c('0x5')};function emitEvent(_0x1d5eac){return function(_0x49cae8,_0x278831,_0x4c10d1){WhatsappQueueEvents[_0xb19c('0x6')](_0x1d5eac+':'+_0x49cae8['id'],_0x49cae8);WhatsappQueueEvents[_0xb19c('0x6')](_0x1d5eac,_0x49cae8);_0x4c10d1(null);};}for(var e in events){if(events[_0xb19c('0x7')](e)){var event=events[e];WhatsappQueue[_0xb19c('0x8')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 4bc12b8..768a942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c83=['moment','bluebird','request-promise','path','rimraf','exports','define','lodash','api'];(function(_0x1ccbcc,_0x5c948b){var _0x1e873f=function(_0x4f232e){while(--_0x4f232e){_0x1ccbcc['push'](_0x1ccbcc['shift']());}};_0x1e873f(++_0x5c948b);}(_0x8c83,0x8e));var _0x38c8=function(_0x4ae392,_0x20bb1b){_0x4ae392=_0x4ae392-0x0;var _0x1a28ef=_0x8c83[_0x4ae392];return _0x1a28ef;};'use strict';var _=require(_0x38c8('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x38c8('0x1'));var moment=require(_0x38c8('0x2'));var BPromise=require(_0x38c8('0x3'));var rp=require(_0x38c8('0x4'));var fs=require('fs');var path=require(_0x38c8('0x5'));var rimraf=require(_0x38c8('0x6'));var config=require('../../config/environment');var attributes=require('./whatsappQueue.attributes');module[_0x38c8('0x7')]=function(_0x31a0e3,_0x5ee798){return _0x31a0e3[_0x38c8('0x8')]('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf37=['api','moment','bluebird','request-promise','./whatsappQueue.attributes','exports','lodash','util','../../config/logger'];(function(_0x3b1b23,_0x21bccd){var _0x1efc85=function(_0x102a95){while(--_0x102a95){_0x3b1b23['push'](_0x3b1b23['shift']());}};_0x1efc85(++_0x21bccd);}(_0xcf37,0x192));var _0x7cf3=function(_0x46699d,_0x5adb36){_0x46699d=_0x46699d-0x0;var _0x3ac4e1=_0xcf37[_0x46699d];return _0x3ac4e1;};'use strict';var _=require(_0x7cf3('0x0'));var util=require(_0x7cf3('0x1'));var logger=require(_0x7cf3('0x2'))(_0x7cf3('0x3'));var moment=require(_0x7cf3('0x4'));var BPromise=require(_0x7cf3('0x5'));var rp=require(_0x7cf3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7cf3('0x7'));module[_0x7cf3('0x8')]=function(_0x7470aa,_0x2bb443){return _0x7470aa['define']('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa149ef..38facdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf79=['raw','ShowWhatsappQueue','lodash','util','moment','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','localhost','./whatsappQueue.socket','register','request','then','info','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','where','attributes','limit','include','map','model'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbf79,0x113));var _0x9bf7=function(_0xaca5e6,_0xb46a0f){_0xaca5e6=_0xaca5e6-0x0;var _0x3578b8=_0xbf79[_0xaca5e6];return _0x3578b8;};'use strict';var _=require(_0x9bf7('0x0'));var util=require(_0x9bf7('0x1'));var moment=require(_0x9bf7('0x2'));var BPromise=require(_0x9bf7('0x3'));var rs=require(_0x9bf7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9bf7('0x5'));var logger=require('../../config/logger')(_0x9bf7('0x6'));var config=require('../../config/environment');var jayson=require(_0x9bf7('0x7'));var client=jayson[_0x9bf7('0x8')][_0x9bf7('0x9')]({'port':0x232a});config['redis']=_[_0x9bf7('0xa')](config[_0x9bf7('0xb')],{'host':_0x9bf7('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9bf7('0xb')]));require(_0x9bf7('0xd'))[_0x9bf7('0xe')](socket);function respondWithRpcPromise(_0x3dec6a,_0x278793,_0x3ce5b3){return new BPromise(function(_0x2ef7ee,_0x2c029b){return client[_0x9bf7('0xf')](_0x3dec6a,_0x3ce5b3)[_0x9bf7('0x10')](function(_0x5d66e6){logger[_0x9bf7('0x11')]('WhatsappQueue,\x20%s,\x20%s',_0x278793,_0x9bf7('0x12'));logger[_0x9bf7('0x13')](_0x9bf7('0x14'),_0x278793,_0x9bf7('0x12'),JSON[_0x9bf7('0x15')](_0x5d66e6));if(_0x5d66e6[_0x9bf7('0x16')]){if(_0x5d66e6['error'][_0x9bf7('0x17')]===0x1f4){logger[_0x9bf7('0x16')](_0x9bf7('0x18'),_0x278793,_0x5d66e6[_0x9bf7('0x16')][_0x9bf7('0x19')]);return _0x2c029b(_0x5d66e6[_0x9bf7('0x16')][_0x9bf7('0x19')]);}logger['error'](_0x9bf7('0x18'),_0x278793,_0x5d66e6[_0x9bf7('0x16')][_0x9bf7('0x19')]);return _0x2ef7ee(_0x5d66e6[_0x9bf7('0x16')]['message']);}else{logger[_0x9bf7('0x11')](_0x9bf7('0x18'),_0x278793,_0x9bf7('0x12'));_0x2ef7ee(_0x5d66e6['result'][_0x9bf7('0x19')]);}})[_0x9bf7('0x1a')](function(_0x5973ca){logger[_0x9bf7('0x16')](_0x9bf7('0x18'),_0x278793,_0x5973ca);_0x2c029b(_0x5973ca);});});}exports[_0x9bf7('0x1b')]=function(_0x203804){var _0xa8dbe=this;return new Promise(function(_0x207181,_0x5711d5){return db[_0x9bf7('0x1c')][_0x9bf7('0x1d')]({'raw':_0x203804['options']?_0x203804[_0x9bf7('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x203804['options']?_0x203804[_0x9bf7('0x1e')][_0x9bf7('0x1f')]||null:null,'attributes':_0x203804['options']?_0x203804[_0x9bf7('0x1e')][_0x9bf7('0x20')]||null:null,'limit':_0x203804[_0x9bf7('0x1e')]?_0x203804['options'][_0x9bf7('0x21')]||null:null,'include':_0x203804['options']?_0x203804['options'][_0x9bf7('0x22')]?_[_0x9bf7('0x23')](_0x203804[_0x9bf7('0x1e')]['include'],function(_0x483597){return{'model':db[_0x483597[_0x9bf7('0x24')]],'as':_0x483597['as'],'attributes':_0x483597[_0x9bf7('0x20')],'include':_0x483597['include']?_[_0x9bf7('0x23')](_0x483597[_0x9bf7('0x22')],function(_0x3fa0a0){return{'model':db[_0x3fa0a0[_0x9bf7('0x24')]],'as':_0x3fa0a0['as'],'attributes':_0x3fa0a0[_0x9bf7('0x20')],'include':_0x3fa0a0[_0x9bf7('0x22')]?_[_0x9bf7('0x23')](_0x3fa0a0['include'],function(_0x38bc64){return{'model':db[_0x38bc64[_0x9bf7('0x24')]],'as':_0x38bc64['as'],'attributes':_0x38bc64[_0x9bf7('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9bf7('0x10')](function(_0x3e1c5e){logger[_0x9bf7('0x11')]('GetWhatsappQueue',_0x203804);logger[_0x9bf7('0x13')](_0x9bf7('0x1b'),_0x203804,JSON[_0x9bf7('0x15')](_0x3e1c5e));_0x207181(_0x3e1c5e);})[_0x9bf7('0x1a')](function(_0x112530){logger[_0x9bf7('0x16')](_0x9bf7('0x1b'),_0x112530['message'],_0x203804);_0x5711d5(_0xa8dbe[_0x9bf7('0x16')](0x1f4,_0x112530['message']));});});};exports['ShowWhatsappQueue']=function(_0x4e2b24){var _0x257d3d=this;return new Promise(function(_0x7302aa,_0x15aac6){return db[_0x9bf7('0x1c')]['find']({'raw':_0x4e2b24[_0x9bf7('0x1e')]?_0x4e2b24[_0x9bf7('0x1e')][_0x9bf7('0x25')]===undefined?!![]:![]:!![],'where':_0x4e2b24[_0x9bf7('0x1e')]?_0x4e2b24[_0x9bf7('0x1e')][_0x9bf7('0x1f')]||null:null,'attributes':_0x4e2b24['options']?_0x4e2b24[_0x9bf7('0x1e')]['attributes']||null:null,'include':_0x4e2b24['options']?_0x4e2b24[_0x9bf7('0x1e')][_0x9bf7('0x22')]?_[_0x9bf7('0x23')](_0x4e2b24[_0x9bf7('0x1e')]['include'],function(_0x315613){return{'model':db[_0x315613['model']],'as':_0x315613['as'],'attributes':_0x315613[_0x9bf7('0x20')],'include':_0x315613[_0x9bf7('0x22')]?_[_0x9bf7('0x23')](_0x315613['include'],function(_0x4ffe87){return{'model':db[_0x4ffe87[_0x9bf7('0x24')]],'as':_0x4ffe87['as'],'attributes':_0x4ffe87['attributes'],'include':_0x4ffe87[_0x9bf7('0x22')]?_[_0x9bf7('0x23')](_0x4ffe87['include'],function(_0x27f26b){return{'model':db[_0x27f26b[_0x9bf7('0x24')]],'as':_0x27f26b['as'],'attributes':_0x27f26b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2b678c){logger[_0x9bf7('0x11')](_0x9bf7('0x26'),_0x4e2b24);logger[_0x9bf7('0x13')](_0x9bf7('0x26'),_0x4e2b24,JSON[_0x9bf7('0x15')](_0x2b678c));_0x7302aa(_0x2b678c);})[_0x9bf7('0x1a')](function(_0x23ed19){logger[_0x9bf7('0x16')](_0x9bf7('0x26'),_0x23ed19[_0x9bf7('0x19')],_0x4e2b24);_0x15aac6(_0x257d3d[_0x9bf7('0x16')](0x1f4,_0x23ed19['message']));});});};
\ No newline at end of file
+var _0x70e9=['WhatsappQueue','options','raw','where','limit','include','map','model','attributes','catch','ShowWhatsappQueue','stringify','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','code','error','message','result','GetWhatsappQueue'];(function(_0x22ecec,_0x24c3be){var _0x559790=function(_0x5e6fb8){while(--_0x5e6fb8){_0x22ecec['push'](_0x22ecec['shift']());}};_0x559790(++_0x24c3be);}(_0x70e9,0x1ed));var _0x970e=function(_0x467ce5,_0x4d30eb){_0x467ce5=_0x467ce5-0x0;var _0x67cdb6=_0x70e9[_0x467ce5];return _0x67cdb6;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x970e('0x0'));var BPromise=require(_0x970e('0x1'));var rs=require(_0x970e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x970e('0x3'));var logger=require(_0x970e('0x4'))(_0x970e('0x5'));var config=require(_0x970e('0x6'));var jayson=require(_0x970e('0x7'));var client=jayson[_0x970e('0x8')]['http']({'port':0x232a});config[_0x970e('0x9')]=_[_0x970e('0xa')](config['redis'],{'host':_0x970e('0xb'),'port':0x18eb});var socket=require(_0x970e('0xc'))(new Redis(config['redis']));require(_0x970e('0xd'))['register'](socket);function respondWithRpcPromise(_0x3956ac,_0x26efce,_0x5c319c){return new BPromise(function(_0x2776c5,_0x3926c4){return client['request'](_0x3956ac,_0x5c319c)[_0x970e('0xe')](function(_0x5ae2ca){logger[_0x970e('0xf')](_0x970e('0x10'),_0x26efce,_0x970e('0x11'));logger[_0x970e('0x12')](_0x970e('0x13'),_0x26efce,_0x970e('0x11'),JSON['stringify'](_0x5ae2ca));if(_0x5ae2ca['error']){if(_0x5ae2ca['error'][_0x970e('0x14')]===0x1f4){logger[_0x970e('0x15')](_0x970e('0x10'),_0x26efce,_0x5ae2ca[_0x970e('0x15')][_0x970e('0x16')]);return _0x3926c4(_0x5ae2ca[_0x970e('0x15')][_0x970e('0x16')]);}logger[_0x970e('0x15')](_0x970e('0x10'),_0x26efce,_0x5ae2ca[_0x970e('0x15')][_0x970e('0x16')]);return _0x2776c5(_0x5ae2ca[_0x970e('0x15')]['message']);}else{logger[_0x970e('0xf')](_0x970e('0x10'),_0x26efce,_0x970e('0x11'));_0x2776c5(_0x5ae2ca[_0x970e('0x17')][_0x970e('0x16')]);}})['catch'](function(_0x3d2230){logger[_0x970e('0x15')](_0x970e('0x10'),_0x26efce,_0x3d2230);_0x3926c4(_0x3d2230);});});}exports[_0x970e('0x18')]=function(_0x423379){var _0x18c424=this;return new Promise(function(_0x240660,_0x4a853c){return db[_0x970e('0x19')]['findAll']({'raw':_0x423379[_0x970e('0x1a')]?_0x423379['options'][_0x970e('0x1b')]===undefined?!![]:![]:!![],'where':_0x423379['options']?_0x423379[_0x970e('0x1a')][_0x970e('0x1c')]||null:null,'attributes':_0x423379[_0x970e('0x1a')]?_0x423379[_0x970e('0x1a')]['attributes']||null:null,'limit':_0x423379['options']?_0x423379[_0x970e('0x1a')][_0x970e('0x1d')]||null:null,'include':_0x423379[_0x970e('0x1a')]?_0x423379['options'][_0x970e('0x1e')]?_[_0x970e('0x1f')](_0x423379[_0x970e('0x1a')][_0x970e('0x1e')],function(_0x103eac){return{'model':db[_0x103eac[_0x970e('0x20')]],'as':_0x103eac['as'],'attributes':_0x103eac[_0x970e('0x21')],'include':_0x103eac['include']?_['map'](_0x103eac[_0x970e('0x1e')],function(_0x3d34e8){return{'model':db[_0x3d34e8['model']],'as':_0x3d34e8['as'],'attributes':_0x3d34e8[_0x970e('0x21')],'include':_0x3d34e8[_0x970e('0x1e')]?_[_0x970e('0x1f')](_0x3d34e8[_0x970e('0x1e')],function(_0x5a16b9){return{'model':db[_0x5a16b9[_0x970e('0x20')]],'as':_0x5a16b9['as'],'attributes':_0x5a16b9[_0x970e('0x21')]};}):[]};}):[]};}):[]:[]})[_0x970e('0xe')](function(_0x128f64){logger[_0x970e('0xf')](_0x970e('0x18'),_0x423379);logger[_0x970e('0x12')](_0x970e('0x18'),_0x423379,JSON['stringify'](_0x128f64));_0x240660(_0x128f64);})[_0x970e('0x22')](function(_0x5484b0){logger[_0x970e('0x15')]('GetWhatsappQueue',_0x5484b0[_0x970e('0x16')],_0x423379);_0x4a853c(_0x18c424[_0x970e('0x15')](0x1f4,_0x5484b0['message']));});});};exports[_0x970e('0x23')]=function(_0x468959){var _0x197520=this;return new Promise(function(_0x21ec51,_0x2325ba){return db['WhatsappQueue']['find']({'raw':_0x468959[_0x970e('0x1a')]?_0x468959[_0x970e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x468959[_0x970e('0x1a')]?_0x468959[_0x970e('0x1a')][_0x970e('0x1c')]||null:null,'attributes':_0x468959[_0x970e('0x1a')]?_0x468959['options'][_0x970e('0x21')]||null:null,'include':_0x468959[_0x970e('0x1a')]?_0x468959[_0x970e('0x1a')][_0x970e('0x1e')]?_['map'](_0x468959['options'][_0x970e('0x1e')],function(_0x5aa5d3){return{'model':db[_0x5aa5d3[_0x970e('0x20')]],'as':_0x5aa5d3['as'],'attributes':_0x5aa5d3['attributes'],'include':_0x5aa5d3[_0x970e('0x1e')]?_[_0x970e('0x1f')](_0x5aa5d3['include'],function(_0x18cf2a){return{'model':db[_0x18cf2a[_0x970e('0x20')]],'as':_0x18cf2a['as'],'attributes':_0x18cf2a[_0x970e('0x21')],'include':_0x18cf2a[_0x970e('0x1e')]?_[_0x970e('0x1f')](_0x18cf2a[_0x970e('0x1e')],function(_0x166c9e){return{'model':db[_0x166c9e['model']],'as':_0x166c9e['as'],'attributes':_0x166c9e[_0x970e('0x21')]};}):[]};}):[]};}):[]:[]})[_0x970e('0xe')](function(_0x4886f4){logger[_0x970e('0xf')](_0x970e('0x23'),_0x468959);logger[_0x970e('0x12')]('ShowWhatsappQueue',_0x468959,JSON[_0x970e('0x24')](_0x4886f4));_0x21ec51(_0x4886f4);})[_0x970e('0x22')](function(_0x3c6d15){logger[_0x970e('0x15')](_0x970e('0x23'),_0x3c6d15[_0x970e('0x16')],_0x468959);_0x2325ba(_0x197520[_0x970e('0x15')](0x1f4,_0x3c6d15['message']));});});};
\ No newline at end of file
index 6b13dcb..ac07033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c27=['update','emit','register','length','whatsappQueue:','./whatsappQueue.events','save','remove'];(function(_0x22b68a,_0x2bffc3){var _0x1ac67a=function(_0x25f9d5){while(--_0x25f9d5){_0x22b68a['push'](_0x22b68a['shift']());}};_0x1ac67a(++_0x2bffc3);}(_0x4c27,0x1d5));var _0x74c2=function(_0x4327c5,_0x34fd51){_0x4327c5=_0x4327c5-0x0;var _0x693f12=_0x4c27[_0x4327c5];return _0x693f12;};'use strict';var WhatsappQueueEvents=require(_0x74c2('0x0'));var events=[_0x74c2('0x1'),_0x74c2('0x2'),_0x74c2('0x3')];function createListener(_0x577c80,_0x38e053){return function(_0x5aa186){_0x38e053[_0x74c2('0x4')](_0x577c80,_0x5aa186);};}function removeListener(_0x175636,_0x217db8){return function(){WhatsappQueueEvents['removeListener'](_0x175636,_0x217db8);};}exports[_0x74c2('0x5')]=function(_0x53adea){for(var _0x1f54dc=0x0,_0x42df79=events[_0x74c2('0x6')];_0x1f54dc<_0x42df79;_0x1f54dc++){var _0x8dab40=events[_0x1f54dc];var _0x102812=createListener(_0x74c2('0x7')+_0x8dab40,_0x53adea);WhatsappQueueEvents['on'](_0x8dab40,_0x102812);}};
\ No newline at end of file
+var _0x33a1=['./whatsappQueue.events','save','remove','update','emit','removeListener','register','length','whatsappQueue:'];(function(_0x35cfb7,_0x4231d8){var _0x585499=function(_0x10c320){while(--_0x10c320){_0x35cfb7['push'](_0x35cfb7['shift']());}};_0x585499(++_0x4231d8);}(_0x33a1,0xbd));var _0x133a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x33a1[_0x17d9e3];return _0x14192d;};'use strict';var WhatsappQueueEvents=require(_0x133a('0x0'));var events=[_0x133a('0x1'),_0x133a('0x2'),_0x133a('0x3')];function createListener(_0x4a260c,_0x480f31){return function(_0x5ca166){_0x480f31[_0x133a('0x4')](_0x4a260c,_0x5ca166);};}function removeListener(_0x451d66,_0x5aaf54){return function(){WhatsappQueueEvents[_0x133a('0x5')](_0x451d66,_0x5aaf54);};}exports[_0x133a('0x6')]=function(_0x3c14ae){for(var _0x5f4c49=0x0,_0x1d9cee=events[_0x133a('0x7')];_0x5f4c49<_0x1d9cee;_0x5f4c49++){var _0xab302a=events[_0x5f4c49];var _0x9d2920=createListener(_0x133a('0x8')+_0xab302a,_0x3c14ae);WhatsappQueueEvents['on'](_0xab302a,_0x9d2920);}};
\ No newline at end of file
index 641a94e..a63e4f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8455=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','destroy','multer'];(function(_0x3cd335,_0x128c0c){var _0x4130ce=function(_0x4ffffa){while(--_0x4ffffa){_0x3cd335['push'](_0x3cd335['shift']());}};_0x4130ce(++_0x128c0c);}(_0x8455,0x1a1));var _0x5845=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8455[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x5845('0x0'));var util=require(_0x5845('0x1'));var path=require(_0x5845('0x2'));var timeout=require(_0x5845('0x3'));var express=require(_0x5845('0x4'));var router=express[_0x5845('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5845('0x6'));var config=require(_0x5845('0x7'));var controller=require(_0x5845('0x8'));router[_0x5845('0x9')]('/',auth[_0x5845('0xa')](),controller[_0x5845('0xb')]);router[_0x5845('0x9')](_0x5845('0xc'),auth[_0x5845('0xa')](),controller[_0x5845('0xd')]);router[_0x5845('0x9')](_0x5845('0xe'),auth[_0x5845('0xa')](),controller['show']);router[_0x5845('0xf')]('/',auth[_0x5845('0xa')](),controller[_0x5845('0x10')]);router['put']('/:id',auth[_0x5845('0xa')](),controller[_0x5845('0x11')]);router['delete'](_0x5845('0xe'),auth[_0x5845('0xa')](),controller[_0x5845('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xd3f0=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/describe','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0xd3f0,0x160));var _0x0d3f=function(_0x4618e1,_0x1294df){_0x4618e1=_0x4618e1-0x0;var _0x321741=_0xd3f0[_0x4618e1];return _0x321741;};'use strict';var multer=require(_0x0d3f('0x0'));var util=require(_0x0d3f('0x1'));var path=require(_0x0d3f('0x2'));var timeout=require(_0x0d3f('0x3'));var express=require(_0x0d3f('0x4'));var router=express[_0x0d3f('0x5')]();var fs_extra=require(_0x0d3f('0x6'));var auth=require(_0x0d3f('0x7'));var interaction=require(_0x0d3f('0x8'));var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x0d3f('0x9')](),controller[_0x0d3f('0xa')]);router[_0x0d3f('0xb')](_0x0d3f('0xc'),auth[_0x0d3f('0x9')](),controller['describe']);router[_0x0d3f('0xb')](_0x0d3f('0xd'),auth[_0x0d3f('0x9')](),controller[_0x0d3f('0xe')]);router[_0x0d3f('0xf')]('/',auth[_0x0d3f('0x9')](),controller[_0x0d3f('0x10')]);router[_0x0d3f('0x11')]('/:id',auth[_0x0d3f('0x9')](),controller[_0x0d3f('0x12')]);router[_0x0d3f('0x13')](_0x0d3f('0xd'),auth['isAuthenticated'](),controller[_0x0d3f('0x14')]);module[_0x0d3f('0x15')]=router;
\ No newline at end of file
index 5e77542..4decedf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0xe72110,_0x5e8c62){var _0x3eeb2d=function(_0x4b631d){while(--_0x4b631d){_0xe72110['push'](_0xe72110['shift']());}};_0x3eeb2d(++_0x5e8c62);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x13db8d,_0x35d1be){var _0x415371=function(_0x2acd5b){while(--_0x2acd5b){_0x13db8d['push'](_0x13db8d['shift']());}};_0x415371(++_0x35d1be);}(_0x7a54,0x106));var _0x47a5=function(_0x43fa44,_0x282893){_0x43fa44=_0x43fa44-0x0;var _0x125cc5=_0x7a54[_0x43fa44];return _0x125cc5;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
index 43850a2..26a8e4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc900=['filters','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','rows','catch','show','includeAll','include','find','create','body','params','describe','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','keys','query'];(function(_0xc89450,_0x2acbe6){var _0x5cd7f5=function(_0xbaa4fe){while(--_0xbaa4fe){_0xc89450['push'](_0xc89450['shift']());}};_0x5cd7f5(++_0x2acbe6);}(_0xc900,0xb3));var _0x0c90=function(_0x84d646,_0x4e0e10){_0x84d646=_0x84d646-0x0;var _0x2d6c77=_0xc900[_0x84d646];return _0x2d6c77;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0c90('0x0'));var jsonpatch=require(_0x0c90('0x1'));var rp=require(_0x0c90('0x2'));var moment=require('moment');var BPromise=require(_0x0c90('0x3'));var Mustache=require(_0x0c90('0x4'));var util=require('util');var path=require(_0x0c90('0x5'));var sox=require(_0x0c90('0x6'));var csv=require(_0x0c90('0x7'));var ejs=require(_0x0c90('0x8'));var fs=require('fs');var fs_extra=require(_0x0c90('0x9'));var _=require(_0x0c90('0xa'));var squel=require('squel');var crypto=require(_0x0c90('0xb'));var jsforce=require(_0x0c90('0xc'));var deskjs=require(_0x0c90('0xd'));var toCsv=require(_0x0c90('0x7'));var querystring=require(_0x0c90('0xe'));var Papa=require(_0x0c90('0xf'));var Redis=require(_0x0c90('0x10'));var authService=require(_0x0c90('0x11'));var qs=require(_0x0c90('0x12'));var as=require(_0x0c90('0x13'));var hardwareService=require(_0x0c90('0x14'));var logger=require(_0x0c90('0x15'))(_0x0c90('0x16'));var utils=require('../../config/utils');var config=require(_0x0c90('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c90('0x18'))['db'];function respondWithStatusCode(_0x50e7db,_0x459cdb){_0x459cdb=_0x459cdb||0xcc;return function(_0x26fc46){if(_0x26fc46){return _0x50e7db[_0x0c90('0x19')](_0x459cdb);}return _0x50e7db[_0x0c90('0x1a')](_0x459cdb)[_0x0c90('0x1b')]();};}function respondWithResult(_0x59ea8e,_0x467b32){_0x467b32=_0x467b32||0xc8;return function(_0x4451e0){if(_0x4451e0){return _0x59ea8e['status'](_0x467b32)[_0x0c90('0x1c')](_0x4451e0);}};}function respondWithFilteredResult(_0x3a492d,_0x3bd5e8){return function(_0x5bef7d){if(_0x5bef7d){var _0x5daeb7=typeof _0x3bd5e8[_0x0c90('0x1d')]===_0x0c90('0x1e')&&typeof _0x3bd5e8[_0x0c90('0x1f')]===_0x0c90('0x1e');var _0x276b92=_0x5bef7d[_0x0c90('0x20')];var _0x42321a=_0x5daeb7?0x0:_0x3bd5e8['offset'];var _0xc3bb47=_0x5daeb7?_0x5bef7d[_0x0c90('0x20')]:_0x3bd5e8[_0x0c90('0x1d')]+_0x3bd5e8[_0x0c90('0x1f')];var _0x594267;if(_0xc3bb47>=_0x276b92){_0xc3bb47=_0x276b92;_0x594267=0xc8;}else{_0x594267=0xce;}_0x3a492d[_0x0c90('0x1a')](_0x594267);return _0x3a492d[_0x0c90('0x21')](_0x0c90('0x22'),_0x42321a+'-'+_0xc3bb47+'/'+_0x276b92)[_0x0c90('0x1c')](_0x5bef7d);}return null;};}function patchUpdates(_0x315932){return function(_0xc08f54){try{jsonpatch['apply'](_0xc08f54,_0x315932,!![]);}catch(_0x365a42){return BPromise['reject'](_0x365a42);}return _0xc08f54[_0x0c90('0x23')]();};}function saveUpdates(_0x1a021e,_0x47b13c){return function(_0x2a053a){if(_0x2a053a){return _0x2a053a[_0x0c90('0x24')](_0x1a021e)[_0x0c90('0x25')](function(_0x86dee){return _0x86dee;});}return null;};}function removeEntity(_0x212164,_0x3b287c){return function(_0x4dfbc3){if(_0x4dfbc3){return _0x4dfbc3[_0x0c90('0x26')]()[_0x0c90('0x25')](function(){_0x212164['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x28d005,_0x3ea861){return function(_0x35c243){if(!_0x35c243){_0x28d005[_0x0c90('0x19')](0x194);}return _0x35c243;};}function handleError(_0x4dde67,_0x2dfa14){_0x2dfa14=_0x2dfa14||0x1f4;return function(_0x438652){logger[_0x0c90('0x27')](_0x438652[_0x0c90('0x28')]);if(_0x438652[_0x0c90('0x29')]){delete _0x438652[_0x0c90('0x29')];}_0x4dde67['status'](_0x2dfa14)[_0x0c90('0x2a')](_0x438652);};}exports[_0x0c90('0x2b')]=function(_0x39f1b2,_0x13b377){var _0x52d28d={},_0x4c8603={},_0x1f27f1={'count':0x0,'rows':[]};var _0x25da6e=_[_0x0c90('0x2c')](db[_0x0c90('0x2d')][_0x0c90('0x2e')],function(_0x562664){return{'name':_0x562664[_0x0c90('0x2f')],'type':_0x562664[_0x0c90('0x30')][_0x0c90('0x31')]};});_0x4c8603['model']=_[_0x0c90('0x2c')](_0x25da6e,'name');_0x4c8603['query']=_[_0x0c90('0x32')](_0x39f1b2[_0x0c90('0x33')]);_0x4c8603[_0x0c90('0x34')]=_[_0x0c90('0x35')](_0x4c8603['model'],_0x4c8603[_0x0c90('0x33')]);_0x52d28d['attributes']=_[_0x0c90('0x35')](_0x4c8603['model'],qs[_0x0c90('0x36')](_0x39f1b2[_0x0c90('0x33')]['fields']));_0x52d28d[_0x0c90('0x37')]=_0x52d28d[_0x0c90('0x37')][_0x0c90('0x38')]?_0x52d28d[_0x0c90('0x37')]:_0x4c8603[_0x0c90('0x39')];if(!_0x39f1b2[_0x0c90('0x33')][_0x0c90('0x3a')](_0x0c90('0x3b'))){_0x52d28d['limit']=qs[_0x0c90('0x1f')](_0x39f1b2[_0x0c90('0x33')][_0x0c90('0x1f')]);_0x52d28d[_0x0c90('0x1d')]=qs['offset'](_0x39f1b2[_0x0c90('0x33')][_0x0c90('0x1d')]);}_0x52d28d[_0x0c90('0x3c')]=qs[_0x0c90('0x3d')](_0x39f1b2[_0x0c90('0x33')][_0x0c90('0x3d')]);_0x52d28d[_0x0c90('0x3e')]=qs[_0x0c90('0x34')](_['pick'](_0x39f1b2[_0x0c90('0x33')],_0x4c8603[_0x0c90('0x34')]),_0x25da6e);if(_0x39f1b2['query'][_0x0c90('0x3f')]){_0x52d28d[_0x0c90('0x3e')]=_[_0x0c90('0x40')](_0x52d28d[_0x0c90('0x3e')],{'$or':_[_0x0c90('0x2c')](_0x25da6e,function(_0x50c126){if(_0x50c126[_0x0c90('0x30')]!==_0x0c90('0x41')){var _0x11530f={};_0x11530f[_0x50c126[_0x0c90('0x29')]]={'$like':'%'+_0x39f1b2[_0x0c90('0x33')][_0x0c90('0x3f')]+'%'};return _0x11530f;}})});}_0x52d28d=_[_0x0c90('0x40')]({},_0x52d28d,_0x39f1b2[_0x0c90('0x42')]);var _0x11a8e3={'where':_0x52d28d['where']};return db[_0x0c90('0x2d')]['count'](_0x11a8e3)[_0x0c90('0x25')](function(_0x593cc0){_0x1f27f1[_0x0c90('0x20')]=_0x593cc0;if(_0x39f1b2[_0x0c90('0x33')]['includeAll']){_0x52d28d['include']=[{'all':!![]}];}return db[_0x0c90('0x2d')]['findAll'](_0x52d28d);})[_0x0c90('0x25')](function(_0x4545bb){_0x1f27f1[_0x0c90('0x43')]=_0x4545bb;return _0x1f27f1;})['then'](respondWithFilteredResult(_0x13b377,_0x52d28d))[_0x0c90('0x44')](handleError(_0x13b377,null));};exports[_0x0c90('0x45')]=function(_0x123b58,_0x3e5137){var _0x2139c3={'raw':!![],'where':{'id':_0x123b58['params']['id']}},_0x1184c4={};_0x1184c4[_0x0c90('0x39')]=_[_0x0c90('0x32')](db[_0x0c90('0x2d')][_0x0c90('0x2e')]);_0x1184c4[_0x0c90('0x33')]=_[_0x0c90('0x32')](_0x123b58[_0x0c90('0x33')]);_0x1184c4['filters']=_[_0x0c90('0x35')](_0x1184c4['model'],_0x1184c4[_0x0c90('0x33')]);_0x2139c3[_0x0c90('0x37')]=_[_0x0c90('0x35')](_0x1184c4[_0x0c90('0x39')],qs[_0x0c90('0x36')](_0x123b58[_0x0c90('0x33')][_0x0c90('0x36')]));_0x2139c3[_0x0c90('0x37')]=_0x2139c3[_0x0c90('0x37')][_0x0c90('0x38')]?_0x2139c3[_0x0c90('0x37')]:_0x1184c4[_0x0c90('0x39')];if(_0x123b58[_0x0c90('0x33')][_0x0c90('0x46')]){_0x2139c3[_0x0c90('0x47')]=[{'all':!![]}];}_0x2139c3=_['merge']({},_0x2139c3,_0x123b58[_0x0c90('0x42')]);return db[_0x0c90('0x2d')][_0x0c90('0x48')](_0x2139c3)[_0x0c90('0x25')](handleEntityNotFound(_0x3e5137,null))[_0x0c90('0x25')](respondWithResult(_0x3e5137,null))[_0x0c90('0x44')](handleError(_0x3e5137,null));};exports[_0x0c90('0x49')]=function(_0x302dc6,_0x3bb138){return db[_0x0c90('0x2d')][_0x0c90('0x49')](_0x302dc6[_0x0c90('0x4a')],{})[_0x0c90('0x25')](respondWithResult(_0x3bb138,0xc9))[_0x0c90('0x44')](handleError(_0x3bb138,null));};exports['update']=function(_0x1b4aac,_0x38f492){if(_0x1b4aac['body']['id']){delete _0x1b4aac['body']['id'];}return db['WhatsappQueueReport'][_0x0c90('0x48')]({'where':{'id':_0x1b4aac[_0x0c90('0x4b')]['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x38f492,null))[_0x0c90('0x25')](saveUpdates(_0x1b4aac[_0x0c90('0x4a')],null))['then'](respondWithResult(_0x38f492,null))[_0x0c90('0x44')](handleError(_0x38f492,null));};exports[_0x0c90('0x26')]=function(_0x2b756d,_0x549c78){return db[_0x0c90('0x2d')][_0x0c90('0x48')]({'where':{'id':_0x2b756d[_0x0c90('0x4b')]['id']}})[_0x0c90('0x25')](handleEntityNotFound(_0x549c78,null))[_0x0c90('0x25')](removeEntity(_0x549c78,null))[_0x0c90('0x44')](handleError(_0x549c78,null));};exports[_0x0c90('0x4c')]=function(_0x2a339d,_0x1daeed){return db[_0x0c90('0x2d')]['describe']()[_0x0c90('0x25')](respondWithResult(_0x1daeed,null))['catch'](handleError(_0x1daeed,null));};
\ No newline at end of file
+var _0xe5b5=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','WhatsappQueueReport','includeAll','include','findAll','rows','catch','show','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x53275e,_0xbcaa1c){var _0x7dfb4f=function(_0x5dd681){while(--_0x5dd681){_0x53275e['push'](_0x53275e['shift']());}};_0x7dfb4f(++_0xbcaa1c);}(_0xe5b5,0x12b));var _0x5e5b=function(_0xf89c3,_0x351bf1){_0xf89c3=_0xf89c3-0x0;var _0x274fc8=_0xe5b5[_0xf89c3];return _0x274fc8;};'use strict';var emlformat=require(_0x5e5b('0x0'));var rimraf=require(_0x5e5b('0x1'));var zipdir=require(_0x5e5b('0x2'));var jsonpatch=require(_0x5e5b('0x3'));var rp=require(_0x5e5b('0x4'));var moment=require(_0x5e5b('0x5'));var BPromise=require(_0x5e5b('0x6'));var Mustache=require(_0x5e5b('0x7'));var util=require(_0x5e5b('0x8'));var path=require(_0x5e5b('0x9'));var sox=require(_0x5e5b('0xa'));var csv=require(_0x5e5b('0xb'));var ejs=require(_0x5e5b('0xc'));var fs=require('fs');var fs_extra=require(_0x5e5b('0xd'));var _=require(_0x5e5b('0xe'));var squel=require(_0x5e5b('0xf'));var crypto=require(_0x5e5b('0x10'));var jsforce=require(_0x5e5b('0x11'));var deskjs=require(_0x5e5b('0x12'));var toCsv=require(_0x5e5b('0xb'));var querystring=require(_0x5e5b('0x13'));var Papa=require(_0x5e5b('0x14'));var Redis=require(_0x5e5b('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x5e5b('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e5b('0x17'));var logger=require(_0x5e5b('0x18'))(_0x5e5b('0x19'));var utils=require(_0x5e5b('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x310f71,_0x18434e){_0x18434e=_0x18434e||0xcc;return function(_0x4559a0){if(_0x4559a0){return _0x310f71[_0x5e5b('0x1b')](_0x18434e);}return _0x310f71[_0x5e5b('0x1c')](_0x18434e)[_0x5e5b('0x1d')]();};}function respondWithResult(_0x2e331d,_0x49edd0){_0x49edd0=_0x49edd0||0xc8;return function(_0x2b37fa){if(_0x2b37fa){return _0x2e331d[_0x5e5b('0x1c')](_0x49edd0)['json'](_0x2b37fa);}};}function respondWithFilteredResult(_0x227417,_0x578c14){return function(_0x4e9509){if(_0x4e9509){var _0x13a1cb=typeof _0x578c14[_0x5e5b('0x1e')]===_0x5e5b('0x1f')&&typeof _0x578c14['limit']===_0x5e5b('0x1f');var _0x4d490c=_0x4e9509[_0x5e5b('0x20')];var _0x45a091=_0x13a1cb?0x0:_0x578c14['offset'];var _0xe5aa6b=_0x13a1cb?_0x4e9509[_0x5e5b('0x20')]:_0x578c14[_0x5e5b('0x1e')]+_0x578c14['limit'];var _0x2bf0b7;if(_0xe5aa6b>=_0x4d490c){_0xe5aa6b=_0x4d490c;_0x2bf0b7=0xc8;}else{_0x2bf0b7=0xce;}_0x227417[_0x5e5b('0x1c')](_0x2bf0b7);return _0x227417['set'](_0x5e5b('0x21'),_0x45a091+'-'+_0xe5aa6b+'/'+_0x4d490c)[_0x5e5b('0x22')](_0x4e9509);}return null;};}function patchUpdates(_0x3c488e){return function(_0x2d8252){try{jsonpatch[_0x5e5b('0x23')](_0x2d8252,_0x3c488e,!![]);}catch(_0x33d61b){return BPromise[_0x5e5b('0x24')](_0x33d61b);}return _0x2d8252[_0x5e5b('0x25')]();};}function saveUpdates(_0x4a78e3,_0x512e46){return function(_0x256a00){if(_0x256a00){return _0x256a00[_0x5e5b('0x26')](_0x4a78e3)[_0x5e5b('0x27')](function(_0xe1c268){return _0xe1c268;});}return null;};}function removeEntity(_0x2e38ed,_0x28cd95){return function(_0x135c6c){if(_0x135c6c){return _0x135c6c[_0x5e5b('0x28')]()[_0x5e5b('0x27')](function(){_0x2e38ed[_0x5e5b('0x1c')](0xcc)[_0x5e5b('0x1d')]();});}};}function handleEntityNotFound(_0x4da321,_0x1ebb11){return function(_0x75800d){if(!_0x75800d){_0x4da321[_0x5e5b('0x1b')](0x194);}return _0x75800d;};}function handleError(_0x5a2ba8,_0x988e5d){_0x988e5d=_0x988e5d||0x1f4;return function(_0xdb2863){logger['error'](_0xdb2863[_0x5e5b('0x29')]);if(_0xdb2863[_0x5e5b('0x2a')]){delete _0xdb2863[_0x5e5b('0x2a')];}_0x5a2ba8[_0x5e5b('0x1c')](_0x988e5d)[_0x5e5b('0x2b')](_0xdb2863);};}exports[_0x5e5b('0x2c')]=function(_0x2cb695,_0x2b4351){var _0x3f6b25={},_0x42da3b={},_0xcb272c={'count':0x0,'rows':[]};var _0x28157a=_['map'](db['WhatsappQueueReport'][_0x5e5b('0x2d')],function(_0x289f54){return{'name':_0x289f54[_0x5e5b('0x2e')],'type':_0x289f54[_0x5e5b('0x2f')][_0x5e5b('0x30')]};});_0x42da3b['model']=_[_0x5e5b('0x31')](_0x28157a,'name');_0x42da3b[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x2cb695[_0x5e5b('0x32')]);_0x42da3b[_0x5e5b('0x34')]=_['intersection'](_0x42da3b[_0x5e5b('0x35')],_0x42da3b[_0x5e5b('0x32')]);_0x3f6b25['attributes']=_[_0x5e5b('0x36')](_0x42da3b[_0x5e5b('0x35')],qs[_0x5e5b('0x37')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x3f6b25[_0x5e5b('0x38')]=_0x3f6b25[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x3f6b25['attributes']:_0x42da3b[_0x5e5b('0x35')];if(!_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3a')](_0x5e5b('0x3b'))){_0x3f6b25[_0x5e5b('0x3c')]=qs[_0x5e5b('0x3c')](_0x2cb695['query']['limit']);_0x3f6b25[_0x5e5b('0x1e')]=qs[_0x5e5b('0x1e')](_0x2cb695[_0x5e5b('0x32')]['offset']);}_0x3f6b25[_0x5e5b('0x3d')]=qs[_0x5e5b('0x3e')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3e')]);_0x3f6b25['where']=qs[_0x5e5b('0x34')](_[_0x5e5b('0x3f')](_0x2cb695['query'],_0x42da3b['filters']),_0x28157a);if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]){_0x3f6b25[_0x5e5b('0x41')]=_['merge'](_0x3f6b25[_0x5e5b('0x41')],{'$or':_['map'](_0x28157a,function(_0x5cb741){if(_0x5cb741[_0x5e5b('0x2f')]!==_0x5e5b('0x42')){var _0xef0295={};_0xef0295[_0x5cb741[_0x5e5b('0x2a')]]={'$like':'%'+_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]+'%'};return _0xef0295;}})});}_0x3f6b25=_[_0x5e5b('0x43')]({},_0x3f6b25,_0x2cb695[_0x5e5b('0x44')]);var _0x1034fa={'where':_0x3f6b25['where']};return db[_0x5e5b('0x45')][_0x5e5b('0x20')](_0x1034fa)['then'](function(_0x204487){_0xcb272c['count']=_0x204487;if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x46')]){_0x3f6b25[_0x5e5b('0x47')]=[{'all':!![]}];}return db[_0x5e5b('0x45')][_0x5e5b('0x48')](_0x3f6b25);})[_0x5e5b('0x27')](function(_0x371550){_0xcb272c[_0x5e5b('0x49')]=_0x371550;return _0xcb272c;})[_0x5e5b('0x27')](respondWithFilteredResult(_0x2b4351,_0x3f6b25))[_0x5e5b('0x4a')](handleError(_0x2b4351,null));};exports[_0x5e5b('0x4b')]=function(_0x4e6fe2,_0x2b81dd){var _0x40e8ce={'raw':!![],'where':{'id':_0x4e6fe2['params']['id']}},_0x46fec9={};_0x46fec9[_0x5e5b('0x35')]=_[_0x5e5b('0x33')](db['WhatsappQueueReport'][_0x5e5b('0x2d')]);_0x46fec9[_0x5e5b('0x32')]=_['keys'](_0x4e6fe2[_0x5e5b('0x32')]);_0x46fec9['filters']=_['intersection'](_0x46fec9['model'],_0x46fec9[_0x5e5b('0x32')]);_0x40e8ce['attributes']=_[_0x5e5b('0x36')](_0x46fec9['model'],qs[_0x5e5b('0x37')](_0x4e6fe2[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x40e8ce[_0x5e5b('0x38')]=_0x40e8ce[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x40e8ce[_0x5e5b('0x38')]:_0x46fec9['model'];if(_0x4e6fe2['query'][_0x5e5b('0x46')]){_0x40e8ce['include']=[{'all':!![]}];}_0x40e8ce=_['merge']({},_0x40e8ce,_0x4e6fe2['options']);return db[_0x5e5b('0x45')]['find'](_0x40e8ce)[_0x5e5b('0x27')](handleEntityNotFound(_0x2b81dd,null))[_0x5e5b('0x27')](respondWithResult(_0x2b81dd,null))[_0x5e5b('0x4a')](handleError(_0x2b81dd,null));};exports[_0x5e5b('0x4c')]=function(_0x2982e7,_0x192445){return db['WhatsappQueueReport'][_0x5e5b('0x4c')](_0x2982e7[_0x5e5b('0x4d')],{})['then'](respondWithResult(_0x192445,0xc9))[_0x5e5b('0x4a')](handleError(_0x192445,null));};exports['update']=function(_0x41e4b3,_0x36d8fa){if(_0x41e4b3[_0x5e5b('0x4d')]['id']){delete _0x41e4b3[_0x5e5b('0x4d')]['id'];}return db['WhatsappQueueReport'][_0x5e5b('0x4e')]({'where':{'id':_0x41e4b3[_0x5e5b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x36d8fa,null))[_0x5e5b('0x27')](saveUpdates(_0x41e4b3[_0x5e5b('0x4d')],null))[_0x5e5b('0x27')](respondWithResult(_0x36d8fa,null))[_0x5e5b('0x4a')](handleError(_0x36d8fa,null));};exports[_0x5e5b('0x28')]=function(_0x5ae8d0,_0x50fc9c){return db[_0x5e5b('0x45')][_0x5e5b('0x4e')]({'where':{'id':_0x5ae8d0['params']['id']}})[_0x5e5b('0x27')](handleEntityNotFound(_0x50fc9c,null))[_0x5e5b('0x27')](removeEntity(_0x50fc9c,null))[_0x5e5b('0x4a')](handleError(_0x50fc9c,null));};exports['describe']=function(_0x3f9d26,_0x3e0ce5){return db[_0x5e5b('0x45')]['describe']()[_0x5e5b('0x27')](respondWithResult(_0x3e0ce5,null))[_0x5e5b('0x4a')](handleError(_0x3e0ce5,null));};
\ No newline at end of file
index 2b5ce6a..2f3a28c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c11=['moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','uniqueid','lodash','util','../../config/logger','api'];(function(_0x57cc7a,_0x1e738d){var _0x5d6159=function(_0xb455d5){while(--_0xb455d5){_0x57cc7a['push'](_0x57cc7a['shift']());}};_0x5d6159(++_0x1e738d);}(_0x5c11,0x106));var _0x15c1=function(_0x2d120a,_0x5e4d33){_0x2d120a=_0x2d120a-0x0;var _0x205747=_0x5c11[_0x2d120a];return _0x205747;};'use strict';var _=require(_0x15c1('0x0'));var util=require(_0x15c1('0x1'));var logger=require(_0x15c1('0x2'))(_0x15c1('0x3'));var moment=require(_0x15c1('0x4'));var BPromise=require(_0x15c1('0x5'));var rp=require(_0x15c1('0x6'));var fs=require('fs');var path=require(_0x15c1('0x7'));var rimraf=require('rimraf');var config=require(_0x15c1('0x8'));var attributes=require(_0x15c1('0x9'));module[_0x15c1('0xa')]=function(_0x4b944e,_0x28e8d5){return _0x4b944e[_0x15c1('0xb')](_0x15c1('0xc'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x15c1('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7515=['util','../../config/logger','moment','bluebird','request-promise','rimraf','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','uniqueid'];(function(_0x28f8cb,_0x258c10){var _0xd19a06=function(_0x9b9057){while(--_0x9b9057){_0x28f8cb['push'](_0x28f8cb['shift']());}};_0xd19a06(++_0x258c10);}(_0x7515,0xf0));var _0x5751=function(_0x2ec3a7,_0x1d5993){_0x2ec3a7=_0x2ec3a7-0x0;var _0x507f82=_0x7515[_0x2ec3a7];return _0x507f82;};'use strict';var _=require('lodash');var util=require(_0x5751('0x0'));var logger=require(_0x5751('0x1'))('api');var moment=require(_0x5751('0x2'));var BPromise=require(_0x5751('0x3'));var rp=require(_0x5751('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5751('0x5'));var config=require('../../config/environment');var attributes=require(_0x5751('0x6'));module[_0x5751('0x7')]=function(_0x9af6ba,_0xbfe2ff){return _0x9af6ba['define'](_0x5751('0x8'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x5751('0x9'),'fields':[_0x5751('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index b2821b6..edc02ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4c=['error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','raw','UpdateWhatsappQueueReport','update','options','attributes','limit','stringify','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x286726,_0x20a337){var _0xcd4fe9=function(_0x4d7da6){while(--_0x4d7da6){_0x286726['push'](_0x286726['shift']());}};_0xcd4fe9(++_0x20a337);}(_0x2f4c,0xbd));var _0xc2f4=function(_0x44b366,_0x1d1f56){_0x44b366=_0x44b366-0x0;var _0x3663c5=_0x2f4c[_0x44b366];return _0x3663c5;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc2f4('0x0'));var rs=require(_0xc2f4('0x1'));var fs=require('fs');var Redis=require(_0xc2f4('0x2'));var db=require(_0xc2f4('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc2f4('0x4'))(_0xc2f4('0x5'));var config=require(_0xc2f4('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc2f4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1f6be9,_0x81cef1,_0x103ccc){return new BPromise(function(_0x5962e0,_0x396e43){return client[_0xc2f4('0x8')](_0x1f6be9,_0x103ccc)[_0xc2f4('0x9')](function(_0x3fb195){logger[_0xc2f4('0xa')](_0xc2f4('0xb'),_0x81cef1,_0xc2f4('0xc'));logger[_0xc2f4('0xd')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x81cef1,_0xc2f4('0xc'),JSON['stringify'](_0x3fb195));if(_0x3fb195['error']){if(_0x3fb195[_0xc2f4('0xe')]['code']===0x1f4){logger['error'](_0xc2f4('0xb'),_0x81cef1,_0x3fb195[_0xc2f4('0xe')]['message']);return _0x396e43(_0x3fb195['error'][_0xc2f4('0xf')]);}logger['error'](_0xc2f4('0xb'),_0x81cef1,_0x3fb195[_0xc2f4('0xe')][_0xc2f4('0xf')]);return _0x5962e0(_0x3fb195[_0xc2f4('0xe')][_0xc2f4('0xf')]);}else{logger[_0xc2f4('0xa')](_0xc2f4('0xb'),_0x81cef1,'request\x20sent');_0x5962e0(_0x3fb195[_0xc2f4('0x10')][_0xc2f4('0xf')]);}})[_0xc2f4('0x11')](function(_0x4951fe){logger[_0xc2f4('0xe')](_0xc2f4('0xb'),_0x81cef1,_0x4951fe);_0x396e43(_0x4951fe);});});}exports[_0xc2f4('0x12')]=function(_0x317f48){var _0x56fba1=this;return new Promise(function(_0xdb0d39,_0x52402f){return db[_0xc2f4('0x13')][_0xc2f4('0x14')](_0x317f48[_0xc2f4('0x15')],{'raw':_0x317f48['options']?_0x317f48['options'][_0xc2f4('0x16')]===undefined?!![]:![]:!![]})[_0xc2f4('0x9')](function(_0x298d3c){logger[_0xc2f4('0xa')](_0xc2f4('0x12'),_0x317f48);logger[_0xc2f4('0xd')](_0xc2f4('0x12'),_0x317f48,JSON['stringify'](_0x298d3c));_0xdb0d39(_0x298d3c);})['catch'](function(_0x215ebc){logger['error'](_0xc2f4('0x12'),_0x215ebc[_0xc2f4('0xf')],_0x317f48);_0x52402f(_0x56fba1[_0xc2f4('0xe')](0x1f4,_0x215ebc[_0xc2f4('0xf')]));});});};exports[_0xc2f4('0x17')]=function(_0x4a8040){var _0x3db00a=this;return new Promise(function(_0x328b8c,_0x1fa5e4){return db[_0xc2f4('0x13')][_0xc2f4('0x18')](_0x4a8040[_0xc2f4('0x15')],{'raw':_0x4a8040[_0xc2f4('0x19')]?_0x4a8040[_0xc2f4('0x19')][_0xc2f4('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a8040[_0xc2f4('0x19')]?_0x4a8040[_0xc2f4('0x19')]['where']||null:null,'attributes':_0x4a8040[_0xc2f4('0x19')]?_0x4a8040[_0xc2f4('0x19')][_0xc2f4('0x1a')]||null:null,'limit':_0x4a8040['options']?_0x4a8040[_0xc2f4('0x19')][_0xc2f4('0x1b')]||null:null})['then'](function(_0x5389bc){logger[_0xc2f4('0xa')](_0xc2f4('0x17'),_0x4a8040);logger[_0xc2f4('0xd')]('UpdateWhatsappQueueReport',_0x4a8040,JSON[_0xc2f4('0x1c')](_0x5389bc));_0x328b8c(_0x5389bc);})[_0xc2f4('0x11')](function(_0x4ea4f7){logger['error'](_0xc2f4('0x17'),_0x4ea4f7[_0xc2f4('0xf')],_0x4a8040);_0x1fa5e4(_0x3db00a[_0xc2f4('0xe')](0x1f4,_0x4ea4f7['message']));});});};
\ No newline at end of file
+var _0x1e5d=['debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','options','raw','catch','update','body','where','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x3d01c4,_0x14ba7c){var _0x21bfeb=function(_0x6ede0e){while(--_0x6ede0e){_0x3d01c4['push'](_0x3d01c4['shift']());}};_0x21bfeb(++_0x14ba7c);}(_0x1e5d,0x1aa));var _0xd1e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e5d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd1e5('0x0'));var util=require(_0xd1e5('0x1'));var moment=require(_0xd1e5('0x2'));var BPromise=require(_0xd1e5('0x3'));var rs=require(_0xd1e5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd1e5('0x5'));var logger=require(_0xd1e5('0x6'))(_0xd1e5('0x7'));var config=require(_0xd1e5('0x8'));var jayson=require(_0xd1e5('0x9'));var client=jayson['client'][_0xd1e5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3003f4,_0x6f2b78,_0xbf9a7d){return new BPromise(function(_0x3035fc,_0x44e757){return client[_0xd1e5('0xb')](_0x3003f4,_0xbf9a7d)[_0xd1e5('0xc')](function(_0x238674){logger[_0xd1e5('0xd')](_0xd1e5('0xe'),_0x6f2b78,_0xd1e5('0xf'));logger[_0xd1e5('0x10')](_0xd1e5('0x11'),_0x6f2b78,'request\x20sent',JSON[_0xd1e5('0x12')](_0x238674));if(_0x238674[_0xd1e5('0x13')]){if(_0x238674[_0xd1e5('0x13')][_0xd1e5('0x14')]===0x1f4){logger[_0xd1e5('0x13')](_0xd1e5('0xe'),_0x6f2b78,_0x238674[_0xd1e5('0x13')][_0xd1e5('0x15')]);return _0x44e757(_0x238674[_0xd1e5('0x13')][_0xd1e5('0x15')]);}logger[_0xd1e5('0x13')](_0xd1e5('0xe'),_0x6f2b78,_0x238674[_0xd1e5('0x13')]['message']);return _0x3035fc(_0x238674[_0xd1e5('0x13')]['message']);}else{logger['info'](_0xd1e5('0xe'),_0x6f2b78,_0xd1e5('0xf'));_0x3035fc(_0x238674[_0xd1e5('0x16')]['message']);}})['catch'](function(_0x1fd4e5){logger['error'](_0xd1e5('0xe'),_0x6f2b78,_0x1fd4e5);_0x44e757(_0x1fd4e5);});});}exports[_0xd1e5('0x17')]=function(_0x41e374){var _0x4200fc=this;return new Promise(function(_0x48e9df,_0x737113){return db[_0xd1e5('0x18')]['create'](_0x41e374['body'],{'raw':_0x41e374['options']?_0x41e374[_0xd1e5('0x19')][_0xd1e5('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x343b70){logger[_0xd1e5('0xd')](_0xd1e5('0x17'),_0x41e374);logger[_0xd1e5('0x10')](_0xd1e5('0x17'),_0x41e374,JSON[_0xd1e5('0x12')](_0x343b70));_0x48e9df(_0x343b70);})[_0xd1e5('0x1b')](function(_0xb0a9be){logger['error'](_0xd1e5('0x17'),_0xb0a9be[_0xd1e5('0x15')],_0x41e374);_0x737113(_0x4200fc[_0xd1e5('0x13')](0x1f4,_0xb0a9be[_0xd1e5('0x15')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x4f26ef){var _0x19783f=this;return new Promise(function(_0x386f13,_0x2afc08){return db[_0xd1e5('0x18')][_0xd1e5('0x1c')](_0x4f26ef[_0xd1e5('0x1d')],{'raw':_0x4f26ef[_0xd1e5('0x19')]?_0x4f26ef[_0xd1e5('0x19')][_0xd1e5('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f26ef[_0xd1e5('0x19')]?_0x4f26ef[_0xd1e5('0x19')][_0xd1e5('0x1e')]||null:null,'attributes':_0x4f26ef[_0xd1e5('0x19')]?_0x4f26ef[_0xd1e5('0x19')][_0xd1e5('0x1f')]||null:null,'limit':_0x4f26ef[_0xd1e5('0x19')]?_0x4f26ef[_0xd1e5('0x19')][_0xd1e5('0x20')]||null:null})['then'](function(_0x104f54){logger[_0xd1e5('0xd')](_0xd1e5('0x21'),_0x4f26ef);logger[_0xd1e5('0x10')](_0xd1e5('0x21'),_0x4f26ef,JSON[_0xd1e5('0x12')](_0x104f54));_0x386f13(_0x104f54);})[_0xd1e5('0x1b')](function(_0x46ad9e){logger[_0xd1e5('0x13')](_0xd1e5('0x21'),_0x46ad9e[_0xd1e5('0x15')],_0x4f26ef);_0x2afc08(_0x19783f[_0xd1e5('0x13')](0x1f4,_0x46ad9e[_0xd1e5('0x15')]));});});};
\ No newline at end of file
index 348e2b8..c160f73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d37=['post','create','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x1d37,0x98));var _0x71d3=function(_0x3ea360,_0x4a3b9e){_0x3ea360=_0x3ea360-0x0;var _0x330457=_0x1d37[_0x3ea360];return _0x330457;};'use strict';var multer=require(_0x71d3('0x0'));var util=require(_0x71d3('0x1'));var path=require(_0x71d3('0x2'));var timeout=require(_0x71d3('0x3'));var express=require('express');var router=express[_0x71d3('0x4')]();var fs_extra=require(_0x71d3('0x5'));var auth=require(_0x71d3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x71d3('0x7'));var controller=require(_0x71d3('0x8'));router[_0x71d3('0x9')]('/',auth[_0x71d3('0xa')](),controller[_0x71d3('0xb')]);router[_0x71d3('0x9')](_0x71d3('0xc'),auth[_0x71d3('0xa')](),controller[_0x71d3('0xd')]);router[_0x71d3('0x9')](_0x71d3('0xe'),auth[_0x71d3('0xa')](),controller[_0x71d3('0xf')]);router[_0x71d3('0x10')]('/',auth[_0x71d3('0xa')](),controller[_0x71d3('0x11')]);router['put'](_0x71d3('0xe'),auth[_0x71d3('0xa')](),controller[_0x71d3('0x12')]);router[_0x71d3('0x13')](_0x71d3('0xe'),auth[_0x71d3('0xa')](),controller[_0x71d3('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x8af4=['destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','update','delete'];(function(_0x38c0ba,_0x3d152f){var _0x3f40aa=function(_0x206260){while(--_0x206260){_0x38c0ba['push'](_0x38c0ba['shift']());}};_0x3f40aa(++_0x3d152f);}(_0x8af4,0x17c));var _0x48af=function(_0x14d250,_0x4b2e12){_0x14d250=_0x14d250-0x0;var _0xb991d8=_0x8af4[_0x14d250];return _0xb991d8;};'use strict';var multer=require('multer');var util=require(_0x48af('0x0'));var path=require(_0x48af('0x1'));var timeout=require(_0x48af('0x2'));var express=require('express');var router=express[_0x48af('0x3')]();var fs_extra=require(_0x48af('0x4'));var auth=require(_0x48af('0x5'));var interaction=require(_0x48af('0x6'));var config=require(_0x48af('0x7'));var controller=require(_0x48af('0x8'));router[_0x48af('0x9')]('/',auth[_0x48af('0xa')](),controller[_0x48af('0xb')]);router[_0x48af('0x9')]('/describe',auth[_0x48af('0xa')](),controller[_0x48af('0xc')]);router[_0x48af('0x9')](_0x48af('0xd'),auth[_0x48af('0xa')](),controller[_0x48af('0xe')]);router[_0x48af('0xf')]('/',auth[_0x48af('0xa')](),controller[_0x48af('0x10')]);router['put']('/:id',auth[_0x48af('0xa')](),controller[_0x48af('0x11')]);router[_0x48af('0x12')]('/:id',auth[_0x48af('0xa')](),controller[_0x48af('0x13')]);module[_0x48af('0x14')]=router;
\ No newline at end of file
index f3b1cd6..455774f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5d7=['DATE','sequelize','exports','STRING','ENUM','agent'];(function(_0x3ecb0a,_0x363a27){var _0x245df1=function(_0x4f59e8){while(--_0x4f59e8){_0x3ecb0a['push'](_0x3ecb0a['shift']());}};_0x245df1(++_0x363a27);}(_0xa5d7,0x1c3));var _0x7a5d=function(_0x4485c7,_0x1e619b){_0x4485c7=_0x4485c7-0x0;var _0x1b61c1=_0xa5d7[_0x4485c7];return _0x1b61c1;};'use strict';var Sequelize=require(_0x7a5d('0x0'));module[_0x7a5d('0x1')]={'uniqueid':{'type':Sequelize[_0x7a5d('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7a5d('0x3')]('account',_0x7a5d('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x7a5d('0x5')]}};
\ No newline at end of file
+var _0x15b8=['DATE','exports','STRING','ENUM','account','agent'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0x15b8,0xcd));var _0x815b=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x15b8[_0x3d42d8];return _0x27fc41;};'use strict';var Sequelize=require('sequelize');module[_0x815b('0x0')]={'uniqueid':{'type':Sequelize[_0x815b('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x815b('0x2')](_0x815b('0x3'),_0x815b('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x815b('0x5')]}};
\ No newline at end of file
index 25e2848..5e987db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa209=['set','Content-Range','save','update','destroy','end','stack','name','send','index','map','WhatsappTransferReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit'];(function(_0x51bdae,_0x4edb24){var _0x5c345e=function(_0x53e3c6){while(--_0x53e3c6){_0x51bdae['push'](_0x51bdae['shift']());}};_0x5c345e(++_0x4edb24);}(_0xa209,0xb6));var _0x9a20=function(_0x431c6b,_0x2f32c9){_0x431c6b=_0x431c6b-0x0;var _0x52d04c=_0xa209[_0x431c6b];return _0x52d04c;};'use strict';var emlformat=require(_0x9a20('0x0'));var rimraf=require(_0x9a20('0x1'));var zipdir=require(_0x9a20('0x2'));var jsonpatch=require(_0x9a20('0x3'));var rp=require('request-promise');var moment=require(_0x9a20('0x4'));var BPromise=require(_0x9a20('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9a20('0x6'));var sox=require(_0x9a20('0x7'));var csv=require(_0x9a20('0x8'));var ejs=require(_0x9a20('0x9'));var fs=require('fs');var fs_extra=require(_0x9a20('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9a20('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9a20('0xc'));var toCsv=require(_0x9a20('0x8'));var querystring=require(_0x9a20('0xd'));var Papa=require(_0x9a20('0xe'));var Redis=require(_0x9a20('0xf'));var authService=require(_0x9a20('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9a20('0x11'));var utils=require(_0x9a20('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x9a20('0x13'));var db=require(_0x9a20('0x14'))['db'];function respondWithStatusCode(_0x1869ce,_0x1346e9){_0x1346e9=_0x1346e9||0xcc;return function(_0x1460b0){if(_0x1460b0){return _0x1869ce[_0x9a20('0x15')](_0x1346e9);}return _0x1869ce[_0x9a20('0x16')](_0x1346e9)['end']();};}function respondWithResult(_0x39864f,_0xc60b5d){_0xc60b5d=_0xc60b5d||0xc8;return function(_0x4e83ab){if(_0x4e83ab){return _0x39864f[_0x9a20('0x16')](_0xc60b5d)[_0x9a20('0x17')](_0x4e83ab);}};}function respondWithFilteredResult(_0x4c44a1,_0x332c50){return function(_0x19ad57){if(_0x19ad57){var _0x1e0c27=typeof _0x332c50[_0x9a20('0x18')]==='undefined'&&typeof _0x332c50['limit']===_0x9a20('0x19');var _0x280ef7=_0x19ad57[_0x9a20('0x1a')];var _0x24d930=_0x1e0c27?0x0:_0x332c50[_0x9a20('0x18')];var _0x3ecfae=_0x1e0c27?_0x19ad57[_0x9a20('0x1a')]:_0x332c50['offset']+_0x332c50[_0x9a20('0x1b')];var _0x9eda36;if(_0x3ecfae>=_0x280ef7){_0x3ecfae=_0x280ef7;_0x9eda36=0xc8;}else{_0x9eda36=0xce;}_0x4c44a1[_0x9a20('0x16')](_0x9eda36);return _0x4c44a1[_0x9a20('0x1c')](_0x9a20('0x1d'),_0x24d930+'-'+_0x3ecfae+'/'+_0x280ef7)[_0x9a20('0x17')](_0x19ad57);}return null;};}function patchUpdates(_0x2f075d){return function(_0x5f0862){try{jsonpatch['apply'](_0x5f0862,_0x2f075d,!![]);}catch(_0xe2ff02){return BPromise['reject'](_0xe2ff02);}return _0x5f0862[_0x9a20('0x1e')]();};}function saveUpdates(_0x486745,_0x145991){return function(_0xf4f177){if(_0xf4f177){return _0xf4f177[_0x9a20('0x1f')](_0x486745)['then'](function(_0x5e8ed3){return _0x5e8ed3;});}return null;};}function removeEntity(_0x38efcd,_0x21f249){return function(_0x461006){if(_0x461006){return _0x461006[_0x9a20('0x20')]()['then'](function(){_0x38efcd['status'](0xcc)[_0x9a20('0x21')]();});}};}function handleEntityNotFound(_0x21bb9e,_0x4e2e38){return function(_0x12008c){if(!_0x12008c){_0x21bb9e['sendStatus'](0x194);}return _0x12008c;};}function handleError(_0x17807a,_0x5b8c45){_0x5b8c45=_0x5b8c45||0x1f4;return function(_0x30e678){logger['error'](_0x30e678[_0x9a20('0x22')]);if(_0x30e678['name']){delete _0x30e678[_0x9a20('0x23')];}_0x17807a[_0x9a20('0x16')](_0x5b8c45)[_0x9a20('0x24')](_0x30e678);};}exports[_0x9a20('0x25')]=function(_0x29df21,_0x5a38af){var _0x18a32c={},_0x51cb07={},_0x119d20={'count':0x0,'rows':[]};var _0x26000f=_[_0x9a20('0x26')](db[_0x9a20('0x27')][_0x9a20('0x28')],function(_0x2cfbc4){return{'name':_0x2cfbc4['fieldName'],'type':_0x2cfbc4['type'][_0x9a20('0x29')]};});_0x51cb07[_0x9a20('0x2a')]=_['map'](_0x26000f,_0x9a20('0x23'));_0x51cb07[_0x9a20('0x2b')]=_[_0x9a20('0x2c')](_0x29df21[_0x9a20('0x2b')]);_0x51cb07[_0x9a20('0x2d')]=_[_0x9a20('0x2e')](_0x51cb07[_0x9a20('0x2a')],_0x51cb07[_0x9a20('0x2b')]);_0x18a32c[_0x9a20('0x2f')]=_['intersection'](_0x51cb07[_0x9a20('0x2a')],qs[_0x9a20('0x30')](_0x29df21[_0x9a20('0x2b')]['fields']));_0x18a32c['attributes']=_0x18a32c[_0x9a20('0x2f')][_0x9a20('0x31')]?_0x18a32c[_0x9a20('0x2f')]:_0x51cb07[_0x9a20('0x2a')];if(!_0x29df21['query'][_0x9a20('0x32')](_0x9a20('0x33'))){_0x18a32c[_0x9a20('0x1b')]=qs[_0x9a20('0x1b')](_0x29df21[_0x9a20('0x2b')][_0x9a20('0x1b')]);_0x18a32c[_0x9a20('0x18')]=qs['offset'](_0x29df21[_0x9a20('0x2b')][_0x9a20('0x18')]);}_0x18a32c['order']=qs[_0x9a20('0x34')](_0x29df21[_0x9a20('0x2b')][_0x9a20('0x34')]);_0x18a32c['where']=qs[_0x9a20('0x2d')](_[_0x9a20('0x35')](_0x29df21[_0x9a20('0x2b')],_0x51cb07[_0x9a20('0x2d')]),_0x26000f);if(_0x29df21[_0x9a20('0x2b')][_0x9a20('0x36')]){_0x18a32c[_0x9a20('0x37')]=_[_0x9a20('0x38')](_0x18a32c[_0x9a20('0x37')],{'$or':_[_0x9a20('0x26')](_0x26000f,function(_0x28e72d){if(_0x28e72d['type']!==_0x9a20('0x39')){var _0x58052f={};_0x58052f[_0x28e72d[_0x9a20('0x23')]]={'$like':'%'+_0x29df21[_0x9a20('0x2b')]['filter']+'%'};return _0x58052f;}})});}_0x18a32c=_[_0x9a20('0x38')]({},_0x18a32c,_0x29df21[_0x9a20('0x3a')]);var _0x77aaf8={'where':_0x18a32c['where']};return db[_0x9a20('0x27')][_0x9a20('0x1a')](_0x77aaf8)[_0x9a20('0x3b')](function(_0x1db6bd){_0x119d20[_0x9a20('0x1a')]=_0x1db6bd;if(_0x29df21[_0x9a20('0x2b')][_0x9a20('0x3c')]){_0x18a32c[_0x9a20('0x3d')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x9a20('0x3e')](_0x18a32c);})[_0x9a20('0x3b')](function(_0x490977){_0x119d20[_0x9a20('0x3f')]=_0x490977;return _0x119d20;})[_0x9a20('0x3b')](respondWithFilteredResult(_0x5a38af,_0x18a32c))['catch'](handleError(_0x5a38af,null));};exports['show']=function(_0x38b80f,_0x5e186e){var _0xea7c77={'raw':!![],'where':{'id':_0x38b80f['params']['id']}},_0x48835b={};_0x48835b['model']=_['keys'](db[_0x9a20('0x27')][_0x9a20('0x28')]);_0x48835b['query']=_[_0x9a20('0x2c')](_0x38b80f[_0x9a20('0x2b')]);_0x48835b[_0x9a20('0x2d')]=_[_0x9a20('0x2e')](_0x48835b[_0x9a20('0x2a')],_0x48835b[_0x9a20('0x2b')]);_0xea7c77['attributes']=_[_0x9a20('0x2e')](_0x48835b[_0x9a20('0x2a')],qs['fields'](_0x38b80f['query']['fields']));_0xea7c77['attributes']=_0xea7c77[_0x9a20('0x2f')]['length']?_0xea7c77['attributes']:_0x48835b[_0x9a20('0x2a')];if(_0x38b80f[_0x9a20('0x2b')][_0x9a20('0x3c')]){_0xea7c77['include']=[{'all':!![]}];}_0xea7c77=_[_0x9a20('0x38')]({},_0xea7c77,_0x38b80f[_0x9a20('0x3a')]);return db['WhatsappTransferReport'][_0x9a20('0x40')](_0xea7c77)['then'](handleEntityNotFound(_0x5e186e,null))[_0x9a20('0x3b')](respondWithResult(_0x5e186e,null))[_0x9a20('0x41')](handleError(_0x5e186e,null));};exports[_0x9a20('0x42')]=function(_0x294b2a,_0x4af2e2){return db[_0x9a20('0x27')][_0x9a20('0x42')](_0x294b2a['body'],{})[_0x9a20('0x3b')](respondWithResult(_0x4af2e2,0xc9))[_0x9a20('0x41')](handleError(_0x4af2e2,null));};exports[_0x9a20('0x1f')]=function(_0x571fe2,_0xcc1b36){if(_0x571fe2[_0x9a20('0x43')]['id']){delete _0x571fe2[_0x9a20('0x43')]['id'];}return db[_0x9a20('0x27')]['find']({'where':{'id':_0x571fe2[_0x9a20('0x44')]['id']}})[_0x9a20('0x3b')](handleEntityNotFound(_0xcc1b36,null))[_0x9a20('0x3b')](saveUpdates(_0x571fe2[_0x9a20('0x43')],null))[_0x9a20('0x3b')](respondWithResult(_0xcc1b36,null))[_0x9a20('0x41')](handleError(_0xcc1b36,null));};exports['destroy']=function(_0x1fbaa4,_0x279b6c){return db[_0x9a20('0x27')][_0x9a20('0x40')]({'where':{'id':_0x1fbaa4[_0x9a20('0x44')]['id']}})['then'](handleEntityNotFound(_0x279b6c,null))[_0x9a20('0x3b')](removeEntity(_0x279b6c,null))[_0x9a20('0x41')](handleError(_0x279b6c,null));};exports[_0x9a20('0x45')]=function(_0x26f516,_0x4f6800){return db['WhatsappTransferReport'][_0x9a20('0x45')]()[_0x9a20('0x3b')](respondWithResult(_0x4f6800,null))['catch'](handleError(_0x4f6800,null));};
\ No newline at end of file
+var _0x7cdc=['filter','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','merge','find','create','body','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','status','error','stack','name','send','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x1631db,_0x3229e9){var _0x251ca7=function(_0x4af8b8){while(--_0x4af8b8){_0x1631db['push'](_0x1631db['shift']());}};_0x251ca7(++_0x3229e9);}(_0x7cdc,0x190));var _0xc7cd=function(_0x17781c,_0x1e62de){_0x17781c=_0x17781c-0x0;var _0x14b32b=_0x7cdc[_0x17781c];return _0x14b32b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc7cd('0x0'));var zipdir=require(_0xc7cd('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc7cd('0x2'));var moment=require(_0xc7cd('0x3'));var BPromise=require(_0xc7cd('0x4'));var Mustache=require('mustache');var util=require(_0xc7cd('0x5'));var path=require(_0xc7cd('0x6'));var sox=require('sox');var csv=require(_0xc7cd('0x7'));var ejs=require(_0xc7cd('0x8'));var fs=require('fs');var fs_extra=require(_0xc7cd('0x9'));var _=require(_0xc7cd('0xa'));var squel=require(_0xc7cd('0xb'));var crypto=require(_0xc7cd('0xc'));var jsforce=require(_0xc7cd('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc7cd('0x7'));var querystring=require('querystring');var Papa=require(_0xc7cd('0xe'));var Redis=require(_0xc7cd('0xf'));var authService=require(_0xc7cd('0x10'));var qs=require(_0xc7cd('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc7cd('0x12'));var logger=require(_0xc7cd('0x13'))(_0xc7cd('0x14'));var utils=require(_0xc7cd('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc7cd('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x464334,_0x712437){_0x712437=_0x712437||0xcc;return function(_0x1e2d07){if(_0x1e2d07){return _0x464334[_0xc7cd('0x17')](_0x712437);}return _0x464334['status'](_0x712437)[_0xc7cd('0x18')]();};}function respondWithResult(_0x39427e,_0x4bd895){_0x4bd895=_0x4bd895||0xc8;return function(_0x3c9781){if(_0x3c9781){return _0x39427e['status'](_0x4bd895)[_0xc7cd('0x19')](_0x3c9781);}};}function respondWithFilteredResult(_0x55f39a,_0x2a4aef){return function(_0x2bbe07){if(_0x2bbe07){var _0x2f04cb=typeof _0x2a4aef[_0xc7cd('0x1a')]==='undefined'&&typeof _0x2a4aef[_0xc7cd('0x1b')]===_0xc7cd('0x1c');var _0x3c7d5c=_0x2bbe07[_0xc7cd('0x1d')];var _0xe93ad5=_0x2f04cb?0x0:_0x2a4aef[_0xc7cd('0x1a')];var _0x2d5825=_0x2f04cb?_0x2bbe07[_0xc7cd('0x1d')]:_0x2a4aef[_0xc7cd('0x1a')]+_0x2a4aef['limit'];var _0x409673;if(_0x2d5825>=_0x3c7d5c){_0x2d5825=_0x3c7d5c;_0x409673=0xc8;}else{_0x409673=0xce;}_0x55f39a['status'](_0x409673);return _0x55f39a[_0xc7cd('0x1e')](_0xc7cd('0x1f'),_0xe93ad5+'-'+_0x2d5825+'/'+_0x3c7d5c)[_0xc7cd('0x19')](_0x2bbe07);}return null;};}function patchUpdates(_0x1177a2){return function(_0x449e15){try{jsonpatch['apply'](_0x449e15,_0x1177a2,!![]);}catch(_0x27b5d5){return BPromise[_0xc7cd('0x20')](_0x27b5d5);}return _0x449e15[_0xc7cd('0x21')]();};}function saveUpdates(_0x20fc95,_0x5b06b3){return function(_0x255330){if(_0x255330){return _0x255330[_0xc7cd('0x22')](_0x20fc95)[_0xc7cd('0x23')](function(_0x388a0d){return _0x388a0d;});}return null;};}function removeEntity(_0x571911,_0x4e47b0){return function(_0x4f2259){if(_0x4f2259){return _0x4f2259[_0xc7cd('0x24')]()['then'](function(){_0x571911[_0xc7cd('0x25')](0xcc)[_0xc7cd('0x18')]();});}};}function handleEntityNotFound(_0x2932fe,_0x2601b8){return function(_0x4450a5){if(!_0x4450a5){_0x2932fe[_0xc7cd('0x17')](0x194);}return _0x4450a5;};}function handleError(_0x5d16e3,_0x2d2c1c){_0x2d2c1c=_0x2d2c1c||0x1f4;return function(_0x33c1ca){logger[_0xc7cd('0x26')](_0x33c1ca[_0xc7cd('0x27')]);if(_0x33c1ca['name']){delete _0x33c1ca[_0xc7cd('0x28')];}_0x5d16e3[_0xc7cd('0x25')](_0x2d2c1c)[_0xc7cd('0x29')](_0x33c1ca);};}exports[_0xc7cd('0x2a')]=function(_0x4ed88b,_0x19aa4a){var _0x22be13={},_0x5ab9a2={},_0x4d3f3c={'count':0x0,'rows':[]};var _0x3eeeff=_[_0xc7cd('0x2b')](db[_0xc7cd('0x2c')][_0xc7cd('0x2d')],function(_0x5c177a){return{'name':_0x5c177a[_0xc7cd('0x2e')],'type':_0x5c177a[_0xc7cd('0x2f')]['key']};});_0x5ab9a2[_0xc7cd('0x30')]=_['map'](_0x3eeeff,_0xc7cd('0x28'));_0x5ab9a2[_0xc7cd('0x31')]=_[_0xc7cd('0x32')](_0x4ed88b[_0xc7cd('0x31')]);_0x5ab9a2[_0xc7cd('0x33')]=_[_0xc7cd('0x34')](_0x5ab9a2[_0xc7cd('0x30')],_0x5ab9a2[_0xc7cd('0x31')]);_0x22be13['attributes']=_['intersection'](_0x5ab9a2[_0xc7cd('0x30')],qs['fields'](_0x4ed88b['query'][_0xc7cd('0x35')]));_0x22be13[_0xc7cd('0x36')]=_0x22be13[_0xc7cd('0x36')][_0xc7cd('0x37')]?_0x22be13['attributes']:_0x5ab9a2[_0xc7cd('0x30')];if(!_0x4ed88b[_0xc7cd('0x31')][_0xc7cd('0x38')](_0xc7cd('0x39'))){_0x22be13[_0xc7cd('0x1b')]=qs['limit'](_0x4ed88b[_0xc7cd('0x31')][_0xc7cd('0x1b')]);_0x22be13['offset']=qs[_0xc7cd('0x1a')](_0x4ed88b[_0xc7cd('0x31')][_0xc7cd('0x1a')]);}_0x22be13[_0xc7cd('0x3a')]=qs['sort'](_0x4ed88b[_0xc7cd('0x31')][_0xc7cd('0x3b')]);_0x22be13[_0xc7cd('0x3c')]=qs[_0xc7cd('0x33')](_[_0xc7cd('0x3d')](_0x4ed88b[_0xc7cd('0x31')],_0x5ab9a2[_0xc7cd('0x33')]),_0x3eeeff);if(_0x4ed88b[_0xc7cd('0x31')][_0xc7cd('0x3e')]){_0x22be13[_0xc7cd('0x3c')]=_['merge'](_0x22be13[_0xc7cd('0x3c')],{'$or':_['map'](_0x3eeeff,function(_0x4afe92){if(_0x4afe92[_0xc7cd('0x2f')]!==_0xc7cd('0x3f')){var _0x3b6ed4={};_0x3b6ed4[_0x4afe92[_0xc7cd('0x28')]]={'$like':'%'+_0x4ed88b[_0xc7cd('0x31')]['filter']+'%'};return _0x3b6ed4;}})});}_0x22be13=_['merge']({},_0x22be13,_0x4ed88b[_0xc7cd('0x40')]);var _0x3c46eb={'where':_0x22be13[_0xc7cd('0x3c')]};return db['WhatsappTransferReport'][_0xc7cd('0x1d')](_0x3c46eb)[_0xc7cd('0x23')](function(_0x33bebe){_0x4d3f3c[_0xc7cd('0x1d')]=_0x33bebe;if(_0x4ed88b[_0xc7cd('0x31')]['includeAll']){_0x22be13['include']=[{'all':!![]}];}return db[_0xc7cd('0x2c')][_0xc7cd('0x41')](_0x22be13);})[_0xc7cd('0x23')](function(_0x58023b){_0x4d3f3c[_0xc7cd('0x42')]=_0x58023b;return _0x4d3f3c;})[_0xc7cd('0x23')](respondWithFilteredResult(_0x19aa4a,_0x22be13))[_0xc7cd('0x43')](handleError(_0x19aa4a,null));};exports[_0xc7cd('0x44')]=function(_0x2761de,_0x1d9c74){var _0x4d96ab={'raw':!![],'where':{'id':_0x2761de[_0xc7cd('0x45')]['id']}},_0x2ae7eb={};_0x2ae7eb[_0xc7cd('0x30')]=_['keys'](db['WhatsappTransferReport'][_0xc7cd('0x2d')]);_0x2ae7eb[_0xc7cd('0x31')]=_[_0xc7cd('0x32')](_0x2761de[_0xc7cd('0x31')]);_0x2ae7eb[_0xc7cd('0x33')]=_['intersection'](_0x2ae7eb['model'],_0x2ae7eb[_0xc7cd('0x31')]);_0x4d96ab[_0xc7cd('0x36')]=_[_0xc7cd('0x34')](_0x2ae7eb[_0xc7cd('0x30')],qs[_0xc7cd('0x35')](_0x2761de[_0xc7cd('0x31')]['fields']));_0x4d96ab[_0xc7cd('0x36')]=_0x4d96ab[_0xc7cd('0x36')][_0xc7cd('0x37')]?_0x4d96ab[_0xc7cd('0x36')]:_0x2ae7eb[_0xc7cd('0x30')];if(_0x2761de[_0xc7cd('0x31')][_0xc7cd('0x46')]){_0x4d96ab[_0xc7cd('0x47')]=[{'all':!![]}];}_0x4d96ab=_[_0xc7cd('0x48')]({},_0x4d96ab,_0x2761de[_0xc7cd('0x40')]);return db[_0xc7cd('0x2c')][_0xc7cd('0x49')](_0x4d96ab)[_0xc7cd('0x23')](handleEntityNotFound(_0x1d9c74,null))[_0xc7cd('0x23')](respondWithResult(_0x1d9c74,null))['catch'](handleError(_0x1d9c74,null));};exports[_0xc7cd('0x4a')]=function(_0x1bbf06,_0x51adde){return db[_0xc7cd('0x2c')][_0xc7cd('0x4a')](_0x1bbf06[_0xc7cd('0x4b')],{})[_0xc7cd('0x23')](respondWithResult(_0x51adde,0xc9))[_0xc7cd('0x43')](handleError(_0x51adde,null));};exports[_0xc7cd('0x22')]=function(_0x3a52eb,_0x2af607){if(_0x3a52eb[_0xc7cd('0x4b')]['id']){delete _0x3a52eb[_0xc7cd('0x4b')]['id'];}return db[_0xc7cd('0x2c')][_0xc7cd('0x49')]({'where':{'id':_0x3a52eb[_0xc7cd('0x45')]['id']}})[_0xc7cd('0x23')](handleEntityNotFound(_0x2af607,null))['then'](saveUpdates(_0x3a52eb['body'],null))['then'](respondWithResult(_0x2af607,null))['catch'](handleError(_0x2af607,null));};exports[_0xc7cd('0x24')]=function(_0x2b9675,_0x34f7c7){return db[_0xc7cd('0x2c')][_0xc7cd('0x49')]({'where':{'id':_0x2b9675[_0xc7cd('0x45')]['id']}})[_0xc7cd('0x23')](handleEntityNotFound(_0x34f7c7,null))[_0xc7cd('0x23')](removeEntity(_0x34f7c7,null))[_0xc7cd('0x43')](handleError(_0x34f7c7,null));};exports[_0xc7cd('0x4c')]=function(_0x22ba70,_0x330149){return db[_0xc7cd('0x2c')][_0xc7cd('0x4c')]()[_0xc7cd('0x23')](respondWithResult(_0x330149,null))['catch'](handleError(_0x330149,null));};
\ No newline at end of file
index 0dea188..073a2a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8517=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid'];(function(_0x421e36,_0x18776e){var _0x20b3e3=function(_0x767de4){while(--_0x767de4){_0x421e36['push'](_0x421e36['shift']());}};_0x20b3e3(++_0x18776e);}(_0x8517,0x188));var _0x7851=function(_0x475d64,_0x2f5dc5){_0x475d64=_0x475d64-0x0;var _0x5e255f=_0x8517[_0x475d64];return _0x5e255f;};'use strict';var _=require(_0x7851('0x0'));var util=require(_0x7851('0x1'));var logger=require(_0x7851('0x2'))(_0x7851('0x3'));var moment=require(_0x7851('0x4'));var BPromise=require(_0x7851('0x5'));var rp=require(_0x7851('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7851('0x7'));var config=require('../../config/environment');var attributes=require(_0x7851('0x8'));module[_0x7851('0x9')]=function(_0x4acadb,_0x13df40){return _0x4acadb[_0x7851('0xa')](_0x7851('0xb'),attributes,{'tableName':_0x7851('0xc'),'paranoid':![],'indexes':[{'name':_0x7851('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0fd2=['./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','uniqueid','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x5a4abd,_0x15dac0){var _0x33ffe4=function(_0x230bca){while(--_0x230bca){_0x5a4abd['push'](_0x5a4abd['shift']());}};_0x33ffe4(++_0x15dac0);}(_0x0fd2,0x89));var _0x20fd=function(_0x1454e6,_0x1ce0b0){_0x1454e6=_0x1454e6-0x0;var _0x47e063=_0x0fd2[_0x1454e6];return _0x47e063;};'use strict';var _=require(_0x20fd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x20fd('0x1'));var moment=require(_0x20fd('0x2'));var BPromise=require(_0x20fd('0x3'));var rp=require(_0x20fd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x20fd('0x5'));var config=require(_0x20fd('0x6'));var attributes=require(_0x20fd('0x7'));module[_0x20fd('0x8')]=function(_0x409f1a,_0x4f729e){return _0x409f1a[_0x20fd('0x9')](_0x20fd('0xa'),attributes,{'tableName':'report_whatsapp_transfer','paranoid':![],'indexes':[{'name':_0x20fd('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 55ba36e..79eeb3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb591=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','ioredis'];(function(_0x31ab1a,_0x5953a2){var _0x337ab1=function(_0x8fe32f){while(--_0x8fe32f){_0x31ab1a['push'](_0x31ab1a['shift']());}};_0x337ab1(++_0x5953a2);}(_0xb591,0x81));var _0x1b59=function(_0x55a27f,_0x55914c){_0x55a27f=_0x55a27f-0x0;var _0x33141b=_0xb591[_0x55a27f];return _0x33141b;};'use strict';var _=require('lodash');var util=require(_0x1b59('0x0'));var moment=require('moment');var BPromise=require(_0x1b59('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1b59('0x2'));var db=require(_0x1b59('0x3'))['db'];var utils=require(_0x1b59('0x4'));var logger=require(_0x1b59('0x5'))('rpc');var config=require(_0x1b59('0x6'));var jayson=require(_0x1b59('0x7'));var client=jayson[_0x1b59('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c263c,_0x1b1e6f,_0x4938cf){return new BPromise(function(_0x52ac65,_0x5dc964){return client[_0x1b59('0x9')](_0x5c263c,_0x4938cf)[_0x1b59('0xa')](function(_0x12b67a){logger[_0x1b59('0xb')](_0x1b59('0xc'),_0x1b1e6f,_0x1b59('0xd'));logger[_0x1b59('0xe')](_0x1b59('0xf'),_0x1b1e6f,_0x1b59('0xd'),JSON[_0x1b59('0x10')](_0x12b67a));if(_0x12b67a[_0x1b59('0x11')]){if(_0x12b67a['error'][_0x1b59('0x12')]===0x1f4){logger['error'](_0x1b59('0xc'),_0x1b1e6f,_0x12b67a[_0x1b59('0x11')][_0x1b59('0x13')]);return _0x5dc964(_0x12b67a[_0x1b59('0x11')][_0x1b59('0x13')]);}logger['error'](_0x1b59('0xc'),_0x1b1e6f,_0x12b67a[_0x1b59('0x11')]['message']);return _0x52ac65(_0x12b67a['error']['message']);}else{logger[_0x1b59('0xb')](_0x1b59('0xc'),_0x1b1e6f,'request\x20sent');_0x52ac65(_0x12b67a[_0x1b59('0x14')][_0x1b59('0x13')]);}})[_0x1b59('0x15')](function(_0x4861a8){logger['error'](_0x1b59('0xc'),_0x1b1e6f,_0x4861a8);_0x5dc964(_0x4861a8);});});}
\ No newline at end of file
+var _0x6a10=['WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','debug'];(function(_0x1e9bf5,_0x2b8466){var _0x3e43a0=function(_0x4f74dd){while(--_0x4f74dd){_0x1e9bf5['push'](_0x1e9bf5['shift']());}};_0x3e43a0(++_0x2b8466);}(_0x6a10,0xe3));var _0x06a1=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x6a10[_0x2b9b7f];return _0x4ed19a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x06a1('0x0'));var BPromise=require(_0x06a1('0x1'));var rs=require(_0x06a1('0x2'));var fs=require('fs');var Redis=require(_0x06a1('0x3'));var db=require(_0x06a1('0x4'))['db'];var utils=require(_0x06a1('0x5'));var logger=require(_0x06a1('0x6'))(_0x06a1('0x7'));var config=require(_0x06a1('0x8'));var jayson=require(_0x06a1('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5259a9,_0x2d3577,_0x3451cb){return new BPromise(function(_0x3fdf82,_0x1cbc29){return client[_0x06a1('0xa')](_0x5259a9,_0x3451cb)[_0x06a1('0xb')](function(_0x186c96){logger[_0x06a1('0xc')](_0x06a1('0xd'),_0x2d3577,'request\x20sent');logger[_0x06a1('0xe')](_0x06a1('0xf'),_0x2d3577,'request\x20sent',JSON[_0x06a1('0x10')](_0x186c96));if(_0x186c96['error']){if(_0x186c96[_0x06a1('0x11')]['code']===0x1f4){logger[_0x06a1('0x11')](_0x06a1('0xd'),_0x2d3577,_0x186c96['error']['message']);return _0x1cbc29(_0x186c96[_0x06a1('0x11')][_0x06a1('0x12')]);}logger[_0x06a1('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x2d3577,_0x186c96[_0x06a1('0x11')][_0x06a1('0x12')]);return _0x3fdf82(_0x186c96[_0x06a1('0x11')][_0x06a1('0x12')]);}else{logger[_0x06a1('0xc')](_0x06a1('0xd'),_0x2d3577,_0x06a1('0x13'));_0x3fdf82(_0x186c96[_0x06a1('0x14')][_0x06a1('0x12')]);}})[_0x06a1('0x15')](function(_0x519b47){logger[_0x06a1('0x11')](_0x06a1('0xd'),_0x2d3577,_0x519b47);_0x1cbc29(_0x519b47);});});}
\ No newline at end of file
index d7476de..4aa8a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4554=['./config/schedule/chat','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','listen','info','start','map','online','name','join','None','default','./config/license','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./rpc','./config/logger','app','./config/pm2','./config/pm2/config'];(function(_0x5843b0,_0x19ec86){var _0xdd6ff5=function(_0x419951){while(--_0x419951){_0x5843b0['push'](_0x5843b0['shift']());}};_0xdd6ff5(++_0x19ec86);}(_0x4554,0xe1));var _0x4455=function(_0x3b3f1f,_0x426c68){_0x3b3f1f=_0x3b3f1f-0x0;var _0x1b53e8=_0x4554[_0x3b3f1f];return _0x1b53e8;};'use strict';var _=require('lodash');var mysqldb=require('./mysqldb');var rpc=require(_0x4455('0x0'));var config=require('./config/environment');var logger=require(_0x4455('0x1'))(_0x4455('0x2'));var pm2=require(_0x4455('0x3'));var pm2Config=require(_0x4455('0x4'));var schedule=require('./config/schedule');var chat=require(_0x4455('0x5'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0x4455('0x6'));var provider=require(_0x4455('0x7'));function main(){return mysqldb['db'][_0x4455('0x8')][_0x4455('0x9')]()[_0x4455('0xa')](function(){return rpc[_0x4455('0xb')]();})[_0x4455('0xa')](function(_0x3580a8){logger[_0x4455('0xc')](_0x3580a8);return chat[_0x4455('0xd')]();})['then'](function(){return whatsapp[_0x4455('0xd')]();})['then'](function(){return schedule['start']();})['then'](function(){return transcribe['start']();})[_0x4455('0xa')](function(){return provider['start']();})[_0x4455('0xa')](function(_0x47b069){logger[_0x4455('0xc')](_0x47b069);return pm2[_0x4455('0xd')](pm2Config);})[_0x4455('0xa')](function(_0x21ef2f){logger[_0x4455('0xc')]('Online\x20apps:',_[_0x4455('0xe')](_['filter'](_0x21ef2f,{'status':_0x4455('0xf')}),'name')['join']());logger[_0x4455('0xc')]('Offline\x20apps:',_[_0x4455('0xe')](_['filter'](_0x21ef2f,function(_0x47269f){return _0x47269f['status']!=='online';}),_0x4455('0x10'))[_0x4455('0x11')]()||_0x4455('0x12'));config['seedDB']&&require('./config/seedDB')[_0x4455('0x13')]();require(_0x4455('0x14'))[_0x4455('0x13')]();})['catch'](function(_0x245456){logger['error'](_0x4455('0x15'),_0x245456);process[_0x4455('0x16')](0x1);});}main();
\ No newline at end of file
+var _0x0aa9=['filter','online','name','Offline\x20apps:','join','None','seedDB','./config/seedDB','default','./config/license','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./rpc','./config/logger','app','./config/pm2/config','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','listen','info','start','map'];(function(_0x47ee7d,_0x5e519a){var _0x309a25=function(_0x296d6d){while(--_0x296d6d){_0x47ee7d['push'](_0x47ee7d['shift']());}};_0x309a25(++_0x5e519a);}(_0x0aa9,0xf6));var _0x90aa=function(_0x3e9a8f,_0x3a6aab){_0x3e9a8f=_0x3e9a8f-0x0;var _0x537cc9=_0x0aa9[_0x3e9a8f];return _0x537cc9;};'use strict';var _=require('lodash');var mysqldb=require(_0x90aa('0x0'));var rpc=require(_0x90aa('0x1'));var config=require('./config/environment');var logger=require(_0x90aa('0x2'))(_0x90aa('0x3'));var pm2=require('./config/pm2');var pm2Config=require(_0x90aa('0x4'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0x90aa('0x5'));var transcribe=require(_0x90aa('0x6'));var provider=require(_0x90aa('0x7'));function main(){return mysqldb['db'][_0x90aa('0x8')][_0x90aa('0x9')]()[_0x90aa('0xa')](function(){return rpc[_0x90aa('0xb')]();})[_0x90aa('0xa')](function(_0x26de7b){logger[_0x90aa('0xc')](_0x26de7b);return chat[_0x90aa('0xd')]();})[_0x90aa('0xa')](function(){return whatsapp['start']();})[_0x90aa('0xa')](function(){return schedule[_0x90aa('0xd')]();})[_0x90aa('0xa')](function(){return transcribe[_0x90aa('0xd')]();})[_0x90aa('0xa')](function(){return provider[_0x90aa('0xd')]();})[_0x90aa('0xa')](function(_0x322123){logger[_0x90aa('0xc')](_0x322123);return pm2[_0x90aa('0xd')](pm2Config);})[_0x90aa('0xa')](function(_0x137590){logger[_0x90aa('0xc')]('Online\x20apps:',_[_0x90aa('0xe')](_[_0x90aa('0xf')](_0x137590,{'status':_0x90aa('0x10')}),_0x90aa('0x11'))['join']());logger[_0x90aa('0xc')](_0x90aa('0x12'),_[_0x90aa('0xe')](_['filter'](_0x137590,function(_0x113896){return _0x113896['status']!==_0x90aa('0x10');}),_0x90aa('0x11'))[_0x90aa('0x13')]()||_0x90aa('0x14'));config[_0x90aa('0x15')]&&require(_0x90aa('0x16'))[_0x90aa('0x17')]();require(_0x90aa('0x18'))[_0x90aa('0x17')]();})[_0x90aa('0x19')](function(_0x3a507d){logger[_0x90aa('0x1a')](_0x90aa('0x1b'),_0x3a507d);process[_0x90aa('0x1c')](0x1);});}main();
\ No newline at end of file
index ad6a03f..637f56b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x563b=['unmanaged','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','Basic','User','authenticate','json','Wrong\x20credentials.','query','getUuid','apikey','sub','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','minutes','Unknown\x20authorization\x20format','find','getLicense','update','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','cookie','motion.token','redirect','isNil','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','updatePasswordsHistory','length','splice','unshift','encryptString','join','promisify','sign','secret','payload','toString','now','HS512','../../mysqldb','../../config/license/hardware','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','bluebird','util','moment','secrets','name','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','isChatInteractionAuthorized','use','user','ChatInteraction','findOne','disposition','then','status'];(function(_0x1b81a5,_0x2460d9){var _0x306ad3=function(_0x461c49){while(--_0x461c49){_0x1b81a5['push'](_0x1b81a5['shift']());}};_0x306ad3(++_0x2460d9);}(_0x563b,0x12f));var _0xb563=function(_0x85c37d,_0x4525ef){_0x85c37d=_0x85c37d-0x0;var _0x1d0544=_0x563b[_0x85c37d];return _0x1d0544;};'use strict';var db=require(_0xb563('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0xb563('0x1'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0xb563('0x2'));var _=require(_0xb563('0x3'));var jwt=require(_0xb563('0x4'));var expressJwt=require(_0xb563('0x5'));var compose=require(_0xb563('0x6'));var basicAuth=require('basic-auth');var crypto=require('crypto');var BPromise=require(_0xb563('0x7'));var util=require(_0xb563('0x8'));var moment=require(_0xb563('0x9'));var validateJwt=expressJwt({'secret':config[_0xb563('0xa')]['session']});var userAttributes=['id','role','fullname',_0xb563('0xb'),'internal',_0xb563('0xc'),_0xb563('0xd'),_0xb563('0xe'),_0xb563('0xf'),_0xb563('0x10'),_0xb563('0x11'),_0xb563('0x12'),_0xb563('0x13'),'smsPause',_0xb563('0x14'),_0xb563('0x15'),_0xb563('0x16'),_0xb563('0x17'),_0xb563('0x18'),_0xb563('0x19'),_0xb563('0x1a'),_0xb563('0x1b'),_0xb563('0x1c'),_0xb563('0x1d'),'phoneBarAutoAnswerDelay',_0xb563('0x1e'),'phoneBarEnableRecording',_0xb563('0x1f'),_0xb563('0x20'),_0xb563('0x21'),_0xb563('0x22'),_0xb563('0x23'),_0xb563('0x24'),_0xb563('0x25'),_0xb563('0x26'),'userProfileId','privacyEnabled',_0xb563('0x27'),_0xb563('0x28'),_0xb563('0x29'),_0xb563('0x2a'),_0xb563('0x2b'),_0xb563('0x2c'),_0xb563('0x2d')];exports[_0xb563('0x2e')]=function(){return this['isAuthenticated'](!![])[_0xb563('0x2f')](function(_0x265bda,_0x2a3b1c,_0x547a94){if(_0x265bda[_0xb563('0x30')]){_0x547a94();}else{return db[_0xb563('0x31')][_0xb563('0x32')]({'where':{'id':_0x265bda['params']['id']},'attributes':['id','closed',_0xb563('0x33')],'raw':!![]})[_0xb563('0x34')](function(_0x13b2b7){if(_0x13b2b7&&_0x13b2b7['closed']){return _0x2a3b1c[_0xb563('0x35')](_0x13b2b7[_0xb563('0x33')]===_0xb563('0x36')?0x195:0x193)['json']({'message':_0x13b2b7[_0xb563('0x33')]==='unmanaged'?_0xb563('0x37'):_0xb563('0x38')});}else{_0x547a94();}})[_0xb563('0x39')](function(_0x264285){_0x547a94(_0x264285);});}});};exports[_0xb563('0x3a')]=function isAuthenticated(_0x49d08b){return compose()[_0xb563('0x2f')](function(_0x3cd6c3,_0x5b5120,_0x3007b7){var _0x322b77;if(_0x3cd6c3[_0xb563('0x3b')][_0xb563('0x3c')]){if(_[_0xb563('0x3d')](_0x3cd6c3['headers'][_0xb563('0x3c')],_0xb563('0x3e'))){var _0x53a53c=basicAuth(_0x3cd6c3);db[_0xb563('0x3f')]['find']({'where':{'name':_0x53a53c[_0xb563('0xb')]}})[_0xb563('0x34')](function(_0x4c8840){if(!_0x4c8840||!_0x4c8840[_0xb563('0x40')](_0x53a53c['pass'])){return _0x5b5120[_0xb563('0x35')](0x191)[_0xb563('0x41')]({'message':_0xb563('0x42')});}_0x3cd6c3[_0xb563('0x30')]={'id':_0x4c8840['id']};_0x3007b7();})[_0xb563('0x39')](function(_0x4719c3){_0x3007b7(_0x4719c3);});}else if(_['startsWith'](_0x3cd6c3[_0xb563('0x3b')][_0xb563('0x3c')],'Bearer')){validateJwt(_0x3cd6c3,_0x5b5120,_0x3007b7);}else{if(_0x49d08b){_0x3007b7();}else{return _0x5b5120[_0xb563('0x35')](0x193)[_0xb563('0x41')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x3cd6c3[_0xb563('0x43')]['apikey']){try{var _0x4faf08={'audience':hardwareConf[_0xb563('0x44')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x3cd6c3[_0xb563('0x43')][_0xb563('0x45')],_0x4faf08)[_0xb563('0x34')](function(_0xa635fc){return db['User']['find']({'where':{'id':_0xa635fc[_0xb563('0x46')]}})[_0xb563('0x34')](function(_0xaeb411){_0x322b77=_0xaeb411;return db['Setting'][_0xb563('0x32')]({'where':{'id':0x1},'attributes':[_0xb563('0x47'),_0xb563('0x48')],'raw':!![]});})[_0xb563('0x34')](function(_0x1affdf){if(!_0x322b77||!_[_0xb563('0x49')](_0x322b77[_0xb563('0x4a')],_0xa635fc[_0xb563('0x4b')])){return _0x5b5120[_0xb563('0x35')](0x191)[_0xb563('0x41')]({'message':_0xb563('0x4c')});}if(_0x322b77[_0xb563('0x4d')]){return _0x5b5120[_0xb563('0x35')](0x191)['json']({'message':_0xb563('0x4e')});}if(_0x322b77['blocked']){if(_0x1affdf[_0xb563('0x48')]>0x0){if(moment(_0x322b77[_0xb563('0x4f')])['add'](_0x1affdf[_0xb563('0x48')],_0xb563('0x50'))>moment()){return _0x5b5120[_0xb563('0x35')](0x191)['json']({'message':_0xb563('0x4e')});}}else{return _0x5b5120[_0xb563('0x35')](0x191)[_0xb563('0x41')]({'message':_0xb563('0x4e')});}}_0x3cd6c3[_0xb563('0x30')]={'id':_0x322b77['id']};_0x3007b7();});})['catch'](function(){return _0x5b5120[_0xb563('0x35')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x4b2dba){_0x3007b7(_0x4b2dba);}}else if(_0x49d08b){_0x3007b7();}else{return _0x5b5120[_0xb563('0x35')](0x193)[_0xb563('0x41')]({'message':_0xb563('0x51')});}})['use'](function(_0x3673f9,_0x27b2cc,_0x43568f){if(_0x3673f9[_0xb563('0x30')]){db[_0xb563('0x3f')][_0xb563('0x52')]({'where':{'id':_0x3673f9[_0xb563('0x30')]['id']},'attributes':userAttributes})[_0xb563('0x34')](function(_0x480400){if(!_0x480400){return _0x27b2cc[_0xb563('0x35')](0x194)[_0xb563('0x41')]({'message':'User\x20not\x20found.'});}_0x3673f9[_0xb563('0x30')]=_0x480400;_0x43568f();})[_0xb563('0x39')](function(_0x324f2f){_0x43568f(_0x324f2f);});}else if(_0x49d08b){_0x43568f();}else{return _0x27b2cc[_0xb563('0x35')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()[_0xb563('0x2f')](function(_0x136cb5,_0xff1d37,_0x1710e5){return licenseUtil[_0xb563('0x53')]()[_0xb563('0x34')](function(_0x336754){if(_0x336754[_0xb563('0x54')]){_0x1710e5();}else{return _0xff1d37[_0xb563('0x35')](0x193)[_0xb563('0x41')]({'message':'Forbidden'});}})[_0xb563('0x39')](function(_0x338d67){_0x1710e5(_0x338d67);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()[_0xb563('0x2f')](function(_0x48b7bf,_0x4192b0,_0xbb7489){return licenseUtil[_0xb563('0x53')]()[_0xb563('0x34')](function(_0x118b10){if(_0x118b10['webrtc']){_0xbb7489();}else{return _0x4192b0[_0xb563('0x35')](0x193)[_0xb563('0x41')]({'message':_0xb563('0x55')});}})[_0xb563('0x39')](function(_0x2295ad){_0xbb7489(_0x2295ad);});});};exports[_0xb563('0x56')]=function(_0x87c835,_0x2caa52,_0x4ea9f0){_0x87c835[_0xb563('0x56')]=!![];return _0x4ea9f0();};exports['signToken']=function signToken(_0x171533){return signJwt(_0x171533);};exports[_0xb563('0x57')]=function(_0x1d9850,_0x166883){if(!_0x1d9850[_0xb563('0x30')]){return _0x166883['status'](0x194)[_0xb563('0x41')]({'message':_0xb563('0x58')});}var _0x445963={'payload':{'id':_0x1d9850[_0xb563('0x30')]['id'],'role':_0x1d9850[_0xb563('0x30')][_0xb563('0x59')]},'options':{'expiresIn':0x15180}};return signJwt(_0x445963)[_0xb563('0x34')](function(_0x57837f){_0x166883[_0xb563('0x5a')](_0xb563('0x5b'),_0x57837f);_0x166883[_0xb563('0x5c')]('/dashboards/general');})[_0xb563('0x39')](function(_0x294e2c){return _0x166883[_0xb563('0x35')](0x1f4)['send'](_0x294e2c);});};exports['retrieveApiKey']=function(_0x39a49c){if(_['isNil'](_0x39a49c['apiKeyNonce'])||_[_0xb563('0x5d')](_0x39a49c['apiKeyIat'])){return null;}else{return createJwt(_0x39a49c);}};exports['generateApiKey']=function(_0x4a0caa){_0x4a0caa[_0xb563('0x4a')]=generateNonce();_0x4a0caa[_0xb563('0x5e')]=generateIssuedAt();return createJwt(_0x4a0caa);};exports['regenerateApiKey']=function(_0x1ec9e2,_0x57840f){var _0x2e2dbf=_0x1ec9e2[_0xb563('0x43')][_0xb563('0x45')];if(_0x2e2dbf){var _0x31cb71={'nonce':_0x57840f[_0xb563('0x4a')],'iat':_0x57840f['apiKeyIat'],'audience':hardwareConf[_0xb563('0x44')](),'issuer':hardwareConf[_0xb563('0x44')]()};return verifyJwt(_0x2e2dbf,_0x31cb71)[_0xb563('0x34')](function(){return generateApiKey(_0x57840f);});}else{throw{'message':_0xb563('0x5f')};}};exports[_0xb563('0x60')]=function(_0x5db43f){var _0x460342=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x460342[_0xb563('0x61')](_0x5db43f))throw new db[(_0xb563('0x62'))][(_0xb563('0x63'))](_0xb563('0x64'));return;};exports[_0xb563('0x65')]=function(_0x9a77e7,_0x2d9910,_0x5e135f){var _0x23c2f6=encryptor[_0xb563('0x66')](_0x2d9910)[_0xb563('0x67')](',');for(var _0x20a3e4=0x0;_0x20a3e4<_0x5e135f;_0x20a3e4++){if(!_0x23c2f6[_0x20a3e4])break;if(_0x9a77e7[_0xb563('0x68')]()===_0x23c2f6[_0x20a3e4]['toLowerCase']()){var _0x45dbbe=util[_0xb563('0x69')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x5e135f);if(_0x5e135f===0x1){_0x45dbbe='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db['Sequelize'][(_0xb563('0x63'))](_0x45dbbe);}}return;};exports[_0xb563('0x6a')]=function(_0x282800,_0x27749e){var _0x4f0c73=_0x27749e?encryptor[_0xb563('0x66')](_0x27749e)[_0xb563('0x67')](','):[];if(_0x4f0c73[_0xb563('0x6b')]===0x5){_0x4f0c73[_0xb563('0x6c')](-0x1,0x1);}_0x4f0c73[_0xb563('0x6d')](_0x282800);return encryptor[_0xb563('0x6e')](_0x4f0c73[_0xb563('0x6f')](','));};function signJwt(_0x102538){var _0x5507ec=BPromise[_0xb563('0x70')](jwt[_0xb563('0x71')],{'context':jwt});var _0x38bad0=_0x102538[_0xb563('0x72')]||config[_0xb563('0xa')]['session'];return new BPromise(function(_0x3ef259,_0x12a10f){_0x5507ec(_0x102538[_0xb563('0x73')],_0x38bad0,_0x102538['options'])[_0xb563('0x34')](function(_0x2b1738){_0x3ef259(_0x2b1738);})['catch'](function(_0x2c67cb){_0x12a10f(_0x2c67cb);});});}function verifyJwt(_0xac28d3,_0xb0e74,_0x5414e1){var _0x3194ef=BPromise[_0xb563('0x70')](jwt['verify'],{'context':jwt});var _0x1108da=_0x5414e1||config[_0xb563('0xa')]['session'];return new BPromise(function(_0x486b1a,_0x529b49){_0x3194ef(_0xac28d3,_0x1108da,_0xb0e74)[_0xb563('0x34')](function(_0x50a45f){_0x486b1a(_0x50a45f);})[_0xb563('0x39')](function(_0x185e1f){_0x529b49(_0x185e1f);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0xb563('0x74')]('hex');}function generateIssuedAt(){return Math['floor'](Date[_0xb563('0x75')]()/0x3e8)[_0xb563('0x74')]();}function createJwt(_0x51d576){var _0x51b36f={'payload':{'iat':_0x51d576[_0xb563('0x5e')],'nonce':_0x51d576['apiKeyNonce']},'options':{'algorithm':_0xb563('0x76'),'subject':_0x51d576['id'][_0xb563('0x74')](),'issuer':hardwareConf[_0xb563('0x44')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x51b36f)[_0xb563('0x34')](function(_0x1b8fab){return{'iat':_0x51d576[_0xb563('0x5e')],'nonce':_0x51d576[_0xb563('0x4a')],'token':_0x1b8fab};});}
\ No newline at end of file
+var _0x4529=['openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','selectRecallMeCampaign','isChatInteractionAuthorized','isAuthenticated','use','ChatInteraction','findOne','params','closed','disposition','then','unmanaged','Forbidden.','headers','authorization','startsWith','Basic','authenticate','pass','Bearer','status','json','Unknown\x20authorization\x20format','query','apikey','getUuid','User','find','sub','Setting','blockDuration','isEqual','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blocked','add','minutes','Invalid\x20API\x20access\x20key','user','catch','User\x20object\x20not\x20found.','getLicense','Forbidden','webrtc','isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','split','length','splice','encryptString','join','promisify','sign','payload','options','verify','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/license/util','../encryptor','express-jwt','composable-middleware','crypto','bluebird','util','moment','secrets','session','role','fullname','name','internal','email','userpic','md5secret','voicePause','chatPause','faxPause','smsPause'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x4529,0xea));var _0x9452=function(_0x49114e,_0x5dc3c2){_0x49114e=_0x49114e-0x0;var _0x31cb6a=_0x4529[_0x49114e];return _0x31cb6a;};'use strict';var db=require(_0x9452('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0x9452('0x1'));var encryptor=require(_0x9452('0x2'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x9452('0x3'));var compose=require(_0x9452('0x4'));var basicAuth=require('basic-auth');var crypto=require(_0x9452('0x5'));var BPromise=require(_0x9452('0x6'));var util=require(_0x9452('0x7'));var moment=require(_0x9452('0x8'));var validateJwt=expressJwt({'secret':config[_0x9452('0x9')][_0x9452('0xa')]});var userAttributes=['id',_0x9452('0xb'),_0x9452('0xc'),_0x9452('0xd'),_0x9452('0xe'),_0x9452('0xf'),_0x9452('0x10'),'permissions',_0x9452('0x11'),_0x9452('0x12'),_0x9452('0x13'),'mailPause',_0x9452('0x14'),_0x9452('0x15'),_0x9452('0x16'),_0x9452('0x17'),_0x9452('0x18'),_0x9452('0x19'),'lastPauseAt',_0x9452('0x1a'),'allowmessenger',_0x9452('0x1b'),_0x9452('0x1c'),_0x9452('0x1d'),_0x9452('0x1e'),'phoneBarDnd',_0x9452('0x1f'),_0x9452('0x20'),_0x9452('0x21'),_0x9452('0x22'),_0x9452('0x23'),_0x9452('0x24'),_0x9452('0x25'),'hotdesk',_0x9452('0x26'),_0x9452('0x27'),_0x9452('0x28'),_0x9452('0x29'),_0x9452('0x2a'),_0x9452('0x2b'),_0x9452('0x2c'),_0x9452('0x2d'),'ignorePauseForPreviewCalls',_0x9452('0x2e')];exports[_0x9452('0x2f')]=function(){return this[_0x9452('0x30')](!![])[_0x9452('0x31')](function(_0xeed68,_0x15efd6,_0x2b5362){if(_0xeed68['user']){_0x2b5362();}else{return db[_0x9452('0x32')][_0x9452('0x33')]({'where':{'id':_0xeed68[_0x9452('0x34')]['id']},'attributes':['id',_0x9452('0x35'),_0x9452('0x36')],'raw':!![]})[_0x9452('0x37')](function(_0x42f5f1){if(_0x42f5f1&&_0x42f5f1[_0x9452('0x35')]){return _0x15efd6['status'](_0x42f5f1[_0x9452('0x36')]===_0x9452('0x38')?0x195:0x193)['json']({'message':_0x42f5f1[_0x9452('0x36')]===_0x9452('0x38')?'Unmanaged.':_0x9452('0x39')});}else{_0x2b5362();}})['catch'](function(_0x167853){_0x2b5362(_0x167853);});}});};exports['isAuthenticated']=function isAuthenticated(_0x2dcf62){return compose()[_0x9452('0x31')](function(_0x9c9ed6,_0x3edcc1,_0x4052d2){var _0x36b8ec;if(_0x9c9ed6[_0x9452('0x3a')][_0x9452('0x3b')]){if(_[_0x9452('0x3c')](_0x9c9ed6[_0x9452('0x3a')][_0x9452('0x3b')],_0x9452('0x3d'))){var _0x33d1d3=basicAuth(_0x9c9ed6);db['User']['find']({'where':{'name':_0x33d1d3['name']}})[_0x9452('0x37')](function(_0x45e524){if(!_0x45e524||!_0x45e524[_0x9452('0x3e')](_0x33d1d3[_0x9452('0x3f')])){return _0x3edcc1['status'](0x191)['json']({'message':'Wrong\x20credentials.'});}_0x9c9ed6['user']={'id':_0x45e524['id']};_0x4052d2();})['catch'](function(_0x1fd89d){_0x4052d2(_0x1fd89d);});}else if(_[_0x9452('0x3c')](_0x9c9ed6[_0x9452('0x3a')][_0x9452('0x3b')],_0x9452('0x40'))){validateJwt(_0x9c9ed6,_0x3edcc1,_0x4052d2);}else{if(_0x2dcf62){_0x4052d2();}else{return _0x3edcc1[_0x9452('0x41')](0x193)[_0x9452('0x42')]({'message':_0x9452('0x43')});}}}else if(_0x9c9ed6[_0x9452('0x44')][_0x9452('0x45')]){try{var _0x38bfe4={'audience':hardwareConf[_0x9452('0x46')](),'issuer':hardwareConf[_0x9452('0x46')]()};verifyJwt(_0x9c9ed6[_0x9452('0x44')][_0x9452('0x45')],_0x38bfe4)[_0x9452('0x37')](function(_0x3252fc){return db[_0x9452('0x47')][_0x9452('0x48')]({'where':{'id':_0x3252fc[_0x9452('0x49')]}})[_0x9452('0x37')](function(_0x5d6fe7){_0x36b8ec=_0x5d6fe7;return db[_0x9452('0x4a')][_0x9452('0x33')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x9452('0x4b')],'raw':!![]});})[_0x9452('0x37')](function(_0x3b005e){if(!_0x36b8ec||!_[_0x9452('0x4c')](_0x36b8ec[_0x9452('0x4d')],_0x3252fc[_0x9452('0x4e')])){return _0x3edcc1['status'](0x191)[_0x9452('0x42')]({'message':_0x9452('0x4f')});}if(_0x36b8ec[_0x9452('0x50')]){return _0x3edcc1['status'](0x191)[_0x9452('0x42')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x36b8ec[_0x9452('0x51')]){if(_0x3b005e[_0x9452('0x4b')]>0x0){if(moment(_0x36b8ec['blockedAt'])[_0x9452('0x52')](_0x3b005e[_0x9452('0x4b')],_0x9452('0x53'))>moment()){return _0x3edcc1[_0x9452('0x41')](0x191)[_0x9452('0x42')]({'message':_0x9452('0x54')});}}else{return _0x3edcc1[_0x9452('0x41')](0x191)[_0x9452('0x42')]({'message':_0x9452('0x54')});}}_0x9c9ed6[_0x9452('0x55')]={'id':_0x36b8ec['id']};_0x4052d2();});})[_0x9452('0x56')](function(){return _0x3edcc1[_0x9452('0x41')](0x191)['json']({'message':_0x9452('0x54')});});}catch(_0x46a637){_0x4052d2(_0x46a637);}}else if(_0x2dcf62){_0x4052d2();}else{return _0x3edcc1[_0x9452('0x41')](0x193)[_0x9452('0x42')]({'message':_0x9452('0x43')});}})[_0x9452('0x31')](function(_0xe716fe,_0x3d61b9,_0x1ae033){if(_0xe716fe[_0x9452('0x55')]){db[_0x9452('0x47')][_0x9452('0x48')]({'where':{'id':_0xe716fe[_0x9452('0x55')]['id']},'attributes':userAttributes})['then'](function(_0x915e92){if(!_0x915e92){return _0x3d61b9[_0x9452('0x41')](0x194)[_0x9452('0x42')]({'message':'User\x20not\x20found.'});}_0xe716fe['user']=_0x915e92;_0x1ae033();})[_0x9452('0x56')](function(_0x56692a){_0x1ae033(_0x56692a);});}else if(_0x2dcf62){_0x1ae033();}else{return _0x3d61b9[_0x9452('0x41')](0x194)[_0x9452('0x42')]({'message':_0x9452('0x57')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0x9452('0x31')](function(_0x22e65f,_0x44b006,_0x3bad37){return licenseUtil[_0x9452('0x58')]()[_0x9452('0x37')](function(_0x2ab59d){if(_0x2ab59d['update']){_0x3bad37();}else{return _0x44b006[_0x9452('0x41')](0x193)[_0x9452('0x42')]({'message':_0x9452('0x59')});}})['catch'](function(_0x1bd0a5){_0x3bad37(_0x1bd0a5);});});};exports['isWebrtcLicence']=function isWebrtcLicence(){return compose()[_0x9452('0x31')](function(_0x1fff75,_0x28737d,_0x4f4a7b){return licenseUtil[_0x9452('0x58')]()[_0x9452('0x37')](function(_0x2c9adc){if(_0x2c9adc[_0x9452('0x5a')]){_0x4f4a7b();}else{return _0x28737d[_0x9452('0x41')](0x193)[_0x9452('0x42')]({'message':'Forbidden'});}})[_0x9452('0x56')](function(_0x1694d6){_0x4f4a7b(_0x1694d6);});});};exports[_0x9452('0x5b')]=function(_0x203d20,_0x59910c,_0x4a6b13){_0x203d20[_0x9452('0x5b')]=!![];return _0x4a6b13();};exports[_0x9452('0x5c')]=function signToken(_0xdd0f8f){return signJwt(_0xdd0f8f);};exports['setTokenCookie']=function(_0x3a2302,_0x5e81d6){if(!_0x3a2302['user']){return _0x5e81d6['status'](0x194)['json']({'message':_0x9452('0x5d')});}var _0x1faaa0={'payload':{'id':_0x3a2302[_0x9452('0x55')]['id'],'role':_0x3a2302[_0x9452('0x55')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x1faaa0)[_0x9452('0x37')](function(_0x26f4be){_0x5e81d6[_0x9452('0x5e')](_0x9452('0x5f'),_0x26f4be);_0x5e81d6[_0x9452('0x60')]('/dashboards/general');})[_0x9452('0x56')](function(_0x35aed9){return _0x5e81d6[_0x9452('0x41')](0x1f4)[_0x9452('0x61')](_0x35aed9);});};exports[_0x9452('0x62')]=function(_0x2d3d02){if(_[_0x9452('0x63')](_0x2d3d02[_0x9452('0x4d')])||_[_0x9452('0x63')](_0x2d3d02[_0x9452('0x64')])){return null;}else{return createJwt(_0x2d3d02);}};exports[_0x9452('0x65')]=function(_0x23eec2){_0x23eec2[_0x9452('0x4d')]=generateNonce();_0x23eec2[_0x9452('0x64')]=generateIssuedAt();return createJwt(_0x23eec2);};exports[_0x9452('0x66')]=function(_0x43cc43,_0x1c4cc4){var _0x2d4a60=_0x43cc43[_0x9452('0x44')][_0x9452('0x45')];if(_0x2d4a60){var _0x5b3916={'nonce':_0x1c4cc4[_0x9452('0x4d')],'iat':_0x1c4cc4[_0x9452('0x64')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x2d4a60,_0x5b3916)[_0x9452('0x37')](function(){return generateApiKey(_0x1c4cc4);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0x9452('0x67')]=function(_0x3294d0){var _0x391a7e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x391a7e['test'](_0x3294d0))throw new db[(_0x9452('0x68'))][(_0x9452('0x69'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x9452('0x6a')]=function(_0x133c3b,_0x1839ba,_0x38046a){var _0x2ebec4=encryptor[_0x9452('0x6b')](_0x1839ba)['split'](',');for(var _0x2686ef=0x0;_0x2686ef<_0x38046a;_0x2686ef++){if(!_0x2ebec4[_0x2686ef])break;if(_0x133c3b[_0x9452('0x6c')]()===_0x2ebec4[_0x2686ef]['toLowerCase']()){var _0x59cc3d=util[_0x9452('0x6d')](_0x9452('0x6e'),_0x38046a);if(_0x38046a===0x1){_0x59cc3d=_0x9452('0x6f');}throw new db[(_0x9452('0x68'))][(_0x9452('0x69'))](_0x59cc3d);}}return;};exports['updatePasswordsHistory']=function(_0x5df809,_0x32f346){var _0x4a6edc=_0x32f346?encryptor[_0x9452('0x6b')](_0x32f346)[_0x9452('0x70')](','):[];if(_0x4a6edc[_0x9452('0x71')]===0x5){_0x4a6edc[_0x9452('0x72')](-0x1,0x1);}_0x4a6edc['unshift'](_0x5df809);return encryptor[_0x9452('0x73')](_0x4a6edc[_0x9452('0x74')](','));};function signJwt(_0x2a7e31){var _0x54b630=BPromise[_0x9452('0x75')](jwt[_0x9452('0x76')],{'context':jwt});var _0x4aacc4=_0x2a7e31['secret']||config[_0x9452('0x9')][_0x9452('0xa')];return new BPromise(function(_0xfd1a65,_0x5cfbb2){_0x54b630(_0x2a7e31[_0x9452('0x77')],_0x4aacc4,_0x2a7e31[_0x9452('0x78')])['then'](function(_0x59d1d5){_0xfd1a65(_0x59d1d5);})['catch'](function(_0x16bfc8){_0x5cfbb2(_0x16bfc8);});});}function verifyJwt(_0x5da933,_0x4e381f,_0x310a38){var _0x4f7428=BPromise[_0x9452('0x75')](jwt[_0x9452('0x79')],{'context':jwt});var _0x5d5163=_0x310a38||config[_0x9452('0x9')]['session'];return new BPromise(function(_0x21f5b3,_0x22ee9c){_0x4f7428(_0x5da933,_0x5d5163,_0x4e381f)[_0x9452('0x37')](function(_0x45805d){_0x21f5b3(_0x45805d);})[_0x9452('0x56')](function(_0x3269eb){_0x22ee9c(_0x3269eb);});});}function generateNonce(){return crypto[_0x9452('0x7a')](0x10)[_0x9452('0x7b')](_0x9452('0x7c'));}function generateIssuedAt(){return Math[_0x9452('0x7d')](Date[_0x9452('0x7e')]()/0x3e8)[_0x9452('0x7b')]();}function createJwt(_0x2bdf8c){var _0x274384={'payload':{'iat':_0x2bdf8c[_0x9452('0x64')],'nonce':_0x2bdf8c[_0x9452('0x4d')]},'options':{'algorithm':_0x9452('0x7f'),'subject':_0x2bdf8c['id'][_0x9452('0x7b')](),'issuer':hardwareConf[_0x9452('0x46')](),'audience':hardwareConf[_0x9452('0x46')]()}};return signJwt(_0x274384)[_0x9452('0x37')](function(_0x40235d){return{'iat':_0x2bdf8c[_0x9452('0x64')],'nonce':_0x2bdf8c[_0x9452('0x4d')],'token':_0x40235d};});}
\ No newline at end of file
index ce6a22f..aaefdc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc490=['error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createCipher','data','update','binary','write','end','close','unlink','decryptFile','createReadStream','secret','base64','decryptString','createDecipher','final','crypto','bluebird','lodash','aes-256-ctr','encrypt','algorithm','join'];(function(_0x276bd5,_0x4fb0a1){var _0x16d403=function(_0x199335){while(--_0x199335){_0x276bd5['push'](_0x276bd5['shift']());}};_0x16d403(++_0x4fb0a1);}(_0xc490,0xa7));var _0x0c49=function(_0x163c34,_0x3ccfae){_0x163c34=_0x163c34-0x0;var _0x4b4066=_0xc490[_0x163c34];return _0x4b4066;};'use strict';var crypto=require(_0x0c49('0x0'));var fs=require('fs');var BPromise=require(_0x0c49('0x1'));var _=require(_0x0c49('0x2'));var config=require('../../config/environment');var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x0c49('0x3')};const fileOptions={'algorithm':'aes192'};if(config[_0x0c49('0x4')]&&config[_0x0c49('0x4')][_0x0c49('0x5')]){var isSupported=isAlgorithmSupported(config['encrypt'][_0x0c49('0x5')]);if(isSupported){fileOptions[_0x0c49('0x5')]=config[_0x0c49('0x4')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x0c49('0x6')](',\x20');logger[_0x0c49('0x7')](config['encrypt']['algorithm'],_0x0c49('0x8'),supportedAlgorithms);}}function isASupportedCipher(_0x525ca4){return AES_SUPPORTED_RX[_0x0c49('0x9')](_0x525ca4);}function getSupportedCiphers(){return crypto[_0x0c49('0xa')]()[_0x0c49('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x435597){return getSupportedCiphers()[_0x0c49('0xc')](_0x435597)>-0x1;}function combineOptions(_0x47fd0d){var _0xc301ab={};for(var _0x1639a0 in fileOptions){if(fileOptions[_0x0c49('0xd')](_0x1639a0)){_0xc301ab[_0x1639a0]=fileOptions[_0x1639a0];}}if(_0x47fd0d){for(var _0x4407c3 in _0x47fd0d){if(_0x47fd0d[_0x0c49('0xd')](_0x4407c3)){_0xc301ab[_0x4407c3]=_0x47fd0d[_0x4407c3];}}}return _0xc301ab;}exports['encryptFile']=function(_0x57ee9c,_0x4cdecc,_0x3c8897,_0x5b6c04){return new BPromise(function(_0x42e725,_0x3d16a4){_0x5b6c04=combineOptions(_0x5b6c04);var _0x388164=new Buffer(_0x3c8897);var _0x4852ee=fs['createReadStream'](_0x57ee9c);var _0x4f1837=fs['createWriteStream'](_0x4cdecc);var _0x408b23=crypto[_0x0c49('0xe')](_0x5b6c04[_0x0c49('0x5')],_0x388164);_0x4852ee['on'](_0x0c49('0xf'),function(_0x4b3c08){var _0x319657=new Buffer(_0x408b23[_0x0c49('0x10')](_0x4b3c08),_0x0c49('0x11'));_0x4f1837[_0x0c49('0x12')](_0x319657);});_0x4852ee['on'](_0x0c49('0x13'),function(){try{var _0x20bf0b=new Buffer(_0x408b23['final'](_0x0c49('0x11')),_0x0c49('0x11'));_0x4f1837[_0x0c49('0x12')](_0x20bf0b);_0x4f1837[_0x0c49('0x13')]();_0x4f1837['on'](_0x0c49('0x14'),function(){return _0x42e725(_0x4cdecc);});}catch(_0x33c135){fs[_0x0c49('0x15')](_0x4cdecc);return _0x3d16a4(_0x33c135);}});});};exports[_0x0c49('0x16')]=function(_0x242fcc,_0x4e32ff,_0x273600,_0x569b7c){return new BPromise(function(_0x2a4eb1,_0x267612){_0x569b7c=combineOptions(_0x569b7c);var _0x3c1fb8=new Buffer(_0x273600);var _0x559185=fs[_0x0c49('0x17')](_0x242fcc);var _0x2a24b5=fs['createWriteStream'](_0x4e32ff);var _0x48efc2=crypto['createDecipher'](_0x569b7c['algorithm'],_0x3c1fb8);_0x559185['on']('data',function(_0xf15754){var _0x5799ef=new Buffer(_0x48efc2[_0x0c49('0x10')](_0xf15754),'binary');_0x2a24b5[_0x0c49('0x12')](_0x5799ef);});_0x559185['on'](_0x0c49('0x13'),function(){try{var _0x195a07=new Buffer(_0x48efc2['final']('binary'),_0x0c49('0x11'));_0x2a24b5[_0x0c49('0x12')](_0x195a07);_0x2a24b5[_0x0c49('0x13')]();_0x2a24b5['on'](_0x0c49('0x14'),function(){return _0x2a4eb1(_0x4e32ff);});}catch(_0x5284f0){fs['unlink'](_0x4e32ff);return _0x267612(_0x5284f0);}});});};exports['encryptString']=function(_0x4c2119,_0x2742f5,_0x5918d5){var _0x191bfb=_0x5918d5||stringOptions['algorithm'];var _0x1b3d6c=_0x2742f5||stringOptions[_0x0c49('0x18')];var _0x2c2a14=crypto['createCipher'](_0x191bfb,_0x1b3d6c);var _0x2eaf95=_0x2c2a14[_0x0c49('0x10')](_0x4c2119,'utf8',_0x0c49('0x19'));_0x2eaf95+=_0x2c2a14['final'](_0x0c49('0x19'));return _0x2eaf95;};exports[_0x0c49('0x1a')]=function(_0x400537,_0x11202a,_0x2b2d56){var _0x437646=_0x2b2d56||stringOptions[_0x0c49('0x5')];var _0x10a6e2=_0x11202a||stringOptions[_0x0c49('0x18')];var _0x488f11=crypto[_0x0c49('0x1b')](_0x437646,_0x10a6e2);var _0x3bb7db=_0x488f11[_0x0c49('0x10')](_0x400537,_0x0c49('0x19'),'utf8');_0x3bb7db+=_0x488f11[_0x0c49('0x1c')]('utf8');return _0x3bb7db;};
\ No newline at end of file
+var _0xdfb8=['lodash','../../config/environment','secrets','aes-256-ctr','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','update','binary','write','end','close','decryptFile','createDecipher','final','unlink','encryptString','secret','utf8','base64','crypto'];(function(_0xbf83bf,_0x569fda){var _0x1ee53b=function(_0x3aecb8){while(--_0x3aecb8){_0xbf83bf['push'](_0xbf83bf['shift']());}};_0x1ee53b(++_0x569fda);}(_0xdfb8,0xdf));var _0x8dfb=function(_0x12f570,_0x2bdad1){_0x12f570=_0x12f570-0x0;var _0x820efc=_0xdfb8[_0x12f570];return _0x820efc;};'use strict';var crypto=require(_0x8dfb('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x8dfb('0x1'));var config=require(_0x8dfb('0x2'));var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x8dfb('0x3')]['session'],'algorithm':_0x8dfb('0x4')};const fileOptions={'algorithm':_0x8dfb('0x5')};if(config[_0x8dfb('0x6')]&&config[_0x8dfb('0x6')][_0x8dfb('0x7')]){var isSupported=isAlgorithmSupported(config[_0x8dfb('0x6')][_0x8dfb('0x7')]);if(isSupported){fileOptions['algorithm']=config[_0x8dfb('0x6')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x8dfb('0x8')](',\x20');logger[_0x8dfb('0x9')](config[_0x8dfb('0x6')][_0x8dfb('0x7')],_0x8dfb('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x2c05d7){return AES_SUPPORTED_RX[_0x8dfb('0xb')](_0x2c05d7);}function getSupportedCiphers(){return crypto[_0x8dfb('0xc')]()[_0x8dfb('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x380fcb){return getSupportedCiphers()['indexOf'](_0x380fcb)>-0x1;}function combineOptions(_0x53b02d){var _0x3c8a76={};for(var _0x505997 in fileOptions){if(fileOptions[_0x8dfb('0xe')](_0x505997)){_0x3c8a76[_0x505997]=fileOptions[_0x505997];}}if(_0x53b02d){for(var _0x16570b in _0x53b02d){if(_0x53b02d[_0x8dfb('0xe')](_0x16570b)){_0x3c8a76[_0x16570b]=_0x53b02d[_0x16570b];}}}return _0x3c8a76;}exports['encryptFile']=function(_0x5777ea,_0x10d6cc,_0x11350b,_0x41f5c2){return new BPromise(function(_0x2b1246,_0x38b7c9){_0x41f5c2=combineOptions(_0x41f5c2);var _0x2b2034=new Buffer(_0x11350b);var _0x4388a8=fs[_0x8dfb('0xf')](_0x5777ea);var _0x4a48cc=fs[_0x8dfb('0x10')](_0x10d6cc);var _0x7ed20d=crypto[_0x8dfb('0x11')](_0x41f5c2[_0x8dfb('0x7')],_0x2b2034);_0x4388a8['on'](_0x8dfb('0x12'),function(_0xf50376){var _0x13fcf1=new Buffer(_0x7ed20d[_0x8dfb('0x13')](_0xf50376),_0x8dfb('0x14'));_0x4a48cc[_0x8dfb('0x15')](_0x13fcf1);});_0x4388a8['on'](_0x8dfb('0x16'),function(){try{var _0x32226e=new Buffer(_0x7ed20d['final'](_0x8dfb('0x14')),'binary');_0x4a48cc[_0x8dfb('0x15')](_0x32226e);_0x4a48cc[_0x8dfb('0x16')]();_0x4a48cc['on'](_0x8dfb('0x17'),function(){return _0x2b1246(_0x10d6cc);});}catch(_0x531f2c){fs['unlink'](_0x10d6cc);return _0x38b7c9(_0x531f2c);}});});};exports[_0x8dfb('0x18')]=function(_0x2fd673,_0x2592c6,_0x374835,_0x35aeb5){return new BPromise(function(_0x2f82e2,_0x1bfe84){_0x35aeb5=combineOptions(_0x35aeb5);var _0x155b49=new Buffer(_0x374835);var _0x41e813=fs[_0x8dfb('0xf')](_0x2fd673);var _0x5767d9=fs[_0x8dfb('0x10')](_0x2592c6);var _0x2bc0d5=crypto[_0x8dfb('0x19')](_0x35aeb5[_0x8dfb('0x7')],_0x155b49);_0x41e813['on'](_0x8dfb('0x12'),function(_0x5f1b0e){var _0x37900a=new Buffer(_0x2bc0d5[_0x8dfb('0x13')](_0x5f1b0e),'binary');_0x5767d9[_0x8dfb('0x15')](_0x37900a);});_0x41e813['on'](_0x8dfb('0x16'),function(){try{var _0x5db7d6=new Buffer(_0x2bc0d5[_0x8dfb('0x1a')](_0x8dfb('0x14')),_0x8dfb('0x14'));_0x5767d9[_0x8dfb('0x15')](_0x5db7d6);_0x5767d9[_0x8dfb('0x16')]();_0x5767d9['on']('close',function(){return _0x2f82e2(_0x2592c6);});}catch(_0x4639fb){fs[_0x8dfb('0x1b')](_0x2592c6);return _0x1bfe84(_0x4639fb);}});});};exports[_0x8dfb('0x1c')]=function(_0xd6896f,_0x4ec875,_0x5baa50){var _0xcde329=_0x5baa50||stringOptions[_0x8dfb('0x7')];var _0x1ec683=_0x4ec875||stringOptions[_0x8dfb('0x1d')];var _0x51c1ab=crypto[_0x8dfb('0x11')](_0xcde329,_0x1ec683);var _0x40d2fe=_0x51c1ab['update'](_0xd6896f,_0x8dfb('0x1e'),_0x8dfb('0x1f'));_0x40d2fe+=_0x51c1ab[_0x8dfb('0x1a')](_0x8dfb('0x1f'));return _0x40d2fe;};exports['decryptString']=function(_0x2b3f0c,_0x20dbf5,_0x5c4b5b){var _0x5759e2=_0x5c4b5b||stringOptions['algorithm'];var _0x4d3db8=_0x20dbf5||stringOptions[_0x8dfb('0x1d')];var _0x45c1a3=crypto[_0x8dfb('0x19')](_0x5759e2,_0x4d3db8);var _0x26ca57=_0x45c1a3['update'](_0x2b3f0c,_0x8dfb('0x1f'),_0x8dfb('0x1e'));_0x26ca57+=_0x45c1a3['final'](_0x8dfb('0x1e'));return _0x26ca57;};
\ No newline at end of file
index beb11e8..0c7e3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593e=['dirname','basename','.csv','length','existsSync','join','mkdirSync','each','%s%d.%s','%s.%s','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','inspect','Failed','finally','exit','util','path','lodash','to-csv','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','num','Empty','range','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT'];(function(_0x5b6cb6,_0x2f2d81){var _0x5dc9be=function(_0x699fc4){while(--_0x699fc4){_0x5b6cb6['push'](_0x5b6cb6['shift']());}};_0x5dc9be(++_0x2f2d81);}(_0x593e,0x1ca));var _0xe593=function(_0x15ef91,_0x1b2424){_0x15ef91=_0x15ef91-0x0;var _0xf45570=_0x593e[_0x15ef91];return _0xf45570;};'use strict';var util=require(_0xe593('0x0'));var path=require(_0xe593('0x1'));var _=require(_0xe593('0x2'));var csv=require(_0xe593('0x3'));var fs=require('fs');var BPromise=require(_0xe593('0x4'));var zipdir=require(_0xe593('0x5'));var rimraf=require('rimraf');var db=require(_0xe593('0x6'))['db'];var dbH=require('../../mysqldb')[_0xe593('0x7')];var logger=require(_0xe593('0x8'))(_0xe593('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xe593('0xa')][0x2]);var QUERY=process['argv'][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1abce6,_0x290076){var _0x4e9a23={'status':_0x1abce6};var _0x2a1b85={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x290076){_0x4e9a23['savename']=_0x290076;}return db[_0xe593('0xb')][_0xe593('0xc')](_0x4e9a23,_0x2a1b85);}function main(){var _0x268d6d=0x1388;var _0x1bb2d5;logger[_0xe593('0xd')](util[_0xe593('0xe')](_0xe593('0xf'),EXTRACTED_REPORT_ID,_0xe593('0x10')));return db[_0xe593('0x11')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xe593('0x12'),_0xe593('0x13')]})[_0xe593('0x14')](function(_0x4112fd){if(_0x4112fd){_0x1bb2d5=_0x4112fd;_0x268d6d=_0x1bb2d5[_0xe593('0x13')]||0x1388;}})[_0xe593('0x14')](function(){return dbH[_0xe593('0x15')][_0xe593('0x16')](util[_0xe593('0xe')](_0xe593('0x17'),QUERY),{'type':dbH[_0xe593('0x15')][_0xe593('0x18')]['SELECT']});})[_0xe593('0x14')](function(_0x38adbd){if(!_0x38adbd[0x0][_0xe593('0x19')]){return analyticExtractedReport(_0xe593('0x1a'));}var _0x3bf5e2=[];var _0x5eba75=0x0;if(_0x1bb2d5['split']){if(_0x38adbd&&_0x38adbd['length']){var _0x17cb2d=_[_0xe593('0x1b')](_0x38adbd[0x0][_0xe593('0x19')]/_0x268d6d);var _0x1afad0=Number['isInteger'](_0x38adbd[0x0][_0xe593('0x19')]/_0x268d6d)?_0x38adbd[0x0]['num']%_0x268d6d:0x0;_0x17cb2d[_0xe593('0x1c')](function(_0x2c4281){if(_0x2c4281>0x0){_0x5eba75+=_0x268d6d;}_0x3bf5e2[_0xe593('0x1d')](dbH['sequelize']['query'](util['format'](_0xe593('0x1e'),QUERY,_0x268d6d,_0x5eba75),{'type':dbH['sequelize'][_0xe593('0x18')][_0xe593('0x1f')]}));});if(_0x1afad0>0x0){_0x5eba75+=_0x268d6d;_0x3bf5e2['push'](dbH[_0xe593('0x15')]['query'](util[_0xe593('0xe')](_0xe593('0x1e'),QUERY,_0x1afad0,_0x5eba75),{'type':dbH[_0xe593('0x15')]['QueryTypes'][_0xe593('0x1f')]}));}}}else{_0x3bf5e2[_0xe593('0x1d')](dbH[_0xe593('0x15')]['query'](QUERY,{'type':dbH[_0xe593('0x15')][_0xe593('0x18')][_0xe593('0x1f')]}));}var _0x361b58=path[_0xe593('0x20')](PATH);var _0x499699=path[_0xe593('0x21')](PATH,_0xe593('0x22'));var _0x2e73c3=_0x1bb2d5[_0xe593('0x12')]&&_0x3bf5e2[_0xe593('0x23')]>0x1;var _0x55e5e7=[];if(!fs[_0xe593('0x24')](path[_0xe593('0x25')](_0x361b58,_0x499699))&&_0x2e73c3){fs[_0xe593('0x26')](path[_0xe593('0x25')](_0x361b58,_0x499699));}return BPromise[_0xe593('0x27')](_0x3bf5e2,function(_0x47190d){_0x55e5e7[_0xe593('0x1d')](_0x47190d);})['then'](function(){for(var _0x196d59=0x0;_0x196d59<_0x55e5e7[_0xe593('0x23')];_0x196d59+=0x1){var _0x50c91f;var _0x2c4d89=_0x55e5e7[_0x196d59];if(_0x2e73c3){_0x50c91f=path['join'](_0x361b58,_0x499699,util[_0xe593('0xe')](_0xe593('0x28'),_0x499699,_0x196d59,'csv'));}else{_0x50c91f=path[_0xe593('0x25')](_0x361b58,util[_0xe593('0xe')](_0xe593('0x29'),_0x499699,'csv'));}fs['writeFileSync'](_0x50c91f,csv(_0x2c4d89));}})[_0xe593('0x14')](function(){if(_0x2e73c3){return new Promise(function(_0x5d7c8e){zipdir(path[_0xe593('0x25')](_0x361b58,_0x499699),{'saveTo':path[_0xe593('0x25')](_0x361b58,util[_0xe593('0xe')](_0xe593('0x29'),_0x499699,'zip'))},function(_0x5bf3d4,_0x8e1b9d){rimraf(path[_0xe593('0x25')](_0x361b58,_0x499699),function(){});_0x5d7c8e('zip\x20finished');});});}})[_0xe593('0x14')](function(){logger['info'](util[_0xe593('0xe')](_0xe593('0x2a'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xe593('0x2b'),_0x2e73c3?util['format'](_0xe593('0x29'),_0x499699,_0x2e73c3?'zip':'csv'):null);});})[_0xe593('0x2c')](function(_0x4fed10){logger[_0xe593('0xd')](util[_0xe593('0xe')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util[_0xe593('0x2d')](_0x4fed10,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xe593('0x2e'));})[_0xe593('0x2f')](function(){process[_0xe593('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x4970=['argv','savename','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT','Empty','length','range','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.csv','join','mkdirSync','each','%s%d.%s','csv','writeFileSync','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','inspect','Failed','finally','exit','util','path','lodash','bluebird','rimraf','../../mysqldb','dbH','../../config/logger'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x4970,0x170));var _0x0497=function(_0xe77029,_0x24e8c2){_0xe77029=_0xe77029-0x0;var _0x5d6458=_0x4970[_0xe77029];return _0x5d6458;};'use strict';var util=require(_0x0497('0x0'));var path=require(_0x0497('0x1'));var _=require(_0x0497('0x2'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x0497('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x0497('0x4'));var db=require(_0x0497('0x5'))['db'];var dbH=require(_0x0497('0x5'))[_0x0497('0x6')];var logger=require(_0x0497('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x0497('0x8')][0x2]);var QUERY=process[_0x0497('0x8')][0x3];var PATH=process[_0x0497('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4f82a0,_0x39976f){var _0x1e56f5={'status':_0x4f82a0};var _0x41799f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x39976f){_0x1e56f5[_0x0497('0x9')]=_0x39976f;}return db['AnalyticExtractedReport']['update'](_0x1e56f5,_0x41799f);}function main(){var _0x38da12=0x1388;var _0x2dd1fa;logger[_0x0497('0xa')](util[_0x0497('0xb')](_0x0497('0xc'),EXTRACTED_REPORT_ID,_0x0497('0xd')));return db[_0x0497('0xe')][_0x0497('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x0497('0x10'),_0x0497('0x11')]})[_0x0497('0x12')](function(_0x1728fa){if(_0x1728fa){_0x2dd1fa=_0x1728fa;_0x38da12=_0x2dd1fa[_0x0497('0x11')]||0x1388;}})['then'](function(){return dbH[_0x0497('0x13')][_0x0497('0x14')](util[_0x0497('0xb')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x0497('0x13')]['QueryTypes'][_0x0497('0x15')]});})['then'](function(_0x4be964){if(!_0x4be964[0x0]['num']){return analyticExtractedReport(_0x0497('0x16'));}var _0x2ca349=[];var _0x51ea02=0x0;if(_0x2dd1fa[_0x0497('0x10')]){if(_0x4be964&&_0x4be964[_0x0497('0x17')]){var _0x4af740=_[_0x0497('0x18')](_0x4be964[0x0][_0x0497('0x19')]/_0x38da12);var _0x19435c=Number['isInteger'](_0x4be964[0x0][_0x0497('0x19')]/_0x38da12)?_0x4be964[0x0][_0x0497('0x19')]%_0x38da12:0x0;_0x4af740['forEach'](function(_0xe32553){if(_0xe32553>0x0){_0x51ea02+=_0x38da12;}_0x2ca349[_0x0497('0x1a')](dbH[_0x0497('0x13')][_0x0497('0x14')](util[_0x0497('0xb')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x38da12,_0x51ea02),{'type':dbH[_0x0497('0x13')]['QueryTypes']['SELECT']}));});if(_0x19435c>0x0){_0x51ea02+=_0x38da12;_0x2ca349['push'](dbH[_0x0497('0x13')][_0x0497('0x14')](util[_0x0497('0xb')](_0x0497('0x1b'),QUERY,_0x19435c,_0x51ea02),{'type':dbH[_0x0497('0x13')][_0x0497('0x1c')][_0x0497('0x15')]}));}}}else{_0x2ca349[_0x0497('0x1a')](dbH[_0x0497('0x13')][_0x0497('0x14')](QUERY,{'type':dbH['sequelize'][_0x0497('0x1c')][_0x0497('0x15')]}));}var _0x2cb19c=path[_0x0497('0x1d')](PATH);var _0x18d5d9=path[_0x0497('0x1e')](PATH,_0x0497('0x1f'));var _0x39da97=_0x2dd1fa[_0x0497('0x10')]&&_0x2ca349[_0x0497('0x17')]>0x1;var _0x5a1762=[];if(!fs['existsSync'](path[_0x0497('0x20')](_0x2cb19c,_0x18d5d9))&&_0x39da97){fs[_0x0497('0x21')](path[_0x0497('0x20')](_0x2cb19c,_0x18d5d9));}return BPromise[_0x0497('0x22')](_0x2ca349,function(_0x15d5c0){_0x5a1762[_0x0497('0x1a')](_0x15d5c0);})[_0x0497('0x12')](function(){for(var _0x58a080=0x0;_0x58a080<_0x5a1762[_0x0497('0x17')];_0x58a080+=0x1){var _0x4f7a91;var _0x4748ab=_0x5a1762[_0x58a080];if(_0x39da97){_0x4f7a91=path['join'](_0x2cb19c,_0x18d5d9,util['format'](_0x0497('0x23'),_0x18d5d9,_0x58a080,_0x0497('0x24')));}else{_0x4f7a91=path['join'](_0x2cb19c,util[_0x0497('0xb')]('%s.%s',_0x18d5d9,'csv'));}fs[_0x0497('0x25')](_0x4f7a91,csv(_0x4748ab));}})[_0x0497('0x12')](function(){if(_0x39da97){return new Promise(function(_0x3bd630){zipdir(path[_0x0497('0x20')](_0x2cb19c,_0x18d5d9),{'saveTo':path[_0x0497('0x20')](_0x2cb19c,util[_0x0497('0xb')](_0x0497('0x26'),_0x18d5d9,_0x0497('0x27')))},function(_0x386e8b,_0x1440f9){rimraf(path[_0x0497('0x20')](_0x2cb19c,_0x18d5d9),function(){});_0x3bd630('zip\x20finished');});});}})['then'](function(){logger[_0x0497('0xa')](util[_0x0497('0xb')](_0x0497('0x28'),EXTRACTED_REPORT_ID,_0x0497('0xd')));return analyticExtractedReport(_0x0497('0x29'),_0x39da97?util[_0x0497('0xb')](_0x0497('0x26'),_0x18d5d9,_0x39da97?'zip':_0x0497('0x24')):null);});})[_0x0497('0x2a')](function(_0xa7a873){logger[_0x0497('0xa')](util[_0x0497('0xb')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x0497('0xd')),util[_0x0497('0x2b')](_0xa7a873,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x0497('0x2c'));})[_0x0497('0x2d')](function(){process[_0x0497('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index c3a4db4..e637aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x161f=['endDate','header','pageBreak','before','margin','landscape','toString','\x20/\x20','footer','Arial','black','right','num','Empty','split','splitSizePdf','then','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','dirname','basename','join','mkdirSync','each','flatten','%s%d.%s','pdf','all','%s.%s','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','AnalyticExtractedReport','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','end','createPdfFromHTML','createPdfKitDocument','path','lodash','util','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','dbH','analytics','argv','savename','update','map','tableHeader','fill','length','auto','body','push','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate'];(function(_0x12ab9c,_0x1ad557){var _0x2a3e39=function(_0x5f0653){while(--_0x5f0653){_0x12ab9c['push'](_0x12ab9c['shift']());}};_0x2a3e39(++_0x1ad557);}(_0x161f,0x152));var _0xf161=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x161f[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xf161('0x0'));var fs=require('fs');var util=require(_0xf161('0x1'));var path=require('path');var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0xf161('0x2'));var rimraf=require(_0xf161('0x3'));var JSDOM=require('jsdom')[_0xf161('0x4')];var window=new JSDOM('')[_0xf161('0x5')];var BPromise=require(_0xf161('0x6'));var db=require(_0xf161('0x7'))['db'];var dbH=require(_0xf161('0x7'))[_0xf161('0x8')];var logger=require('../../config/logger')(_0xf161('0x9'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xf161('0xa')][0x3];var PATH=process[_0xf161('0xa')][0x4];var NAME=process[_0xf161('0xa')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x45a94a,_0x1a1bdb){var _0xa1213a={'status':_0x45a94a};var _0x4552b5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1a1bdb){_0xa1213a[_0xf161('0xb')]=_0x1a1bdb;}return db['AnalyticExtractedReport'][_0xf161('0xc')](_0xa1213a,_0x4552b5);}function getHeaders(_0x178c0c){return _[_0xf161('0xd')](_0x178c0c,function(_0x375371){return{'text':_0x375371,'style':_0xf161('0xe')};});}function getRows(_0x3bb83c,_0xe31ed5){return _[_0xf161('0xd')](_0xe31ed5,function(_0x31df42){return _(_0x31df42)['pick'](_0x3bb83c)['map'](function(_0x27bd9b){return _0x27bd9b?_['toString'](_0x27bd9b):'';})['value']();});}function createTable(_0x5411a6,_0x526654){var _0x1330c5={'widths':_[_0xf161('0xf')](Array(_0x5411a6[_0xf161('0x10')]),0x91),'heights':function(_0x5a2936){return _0x5a2936===0x0?_0xf161('0x11'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x2f6891=getHeaders(_0x5411a6);_0x1330c5[_0xf161('0x12')][_0xf161('0x13')](_0x2f6891);var _0x37f773=getRows(_0x5411a6,_0x526654);_0x1330c5['body']=_0x1330c5['body']['concat'](_0x37f773);return _0x1330c5;}function createTables(_0x12adcc){var _0x22d482=[];var _0x52732d=_['chunk'](Object[_0xf161('0x14')](_0x12adcc[0x0]),0x5);_0x52732d[_0xf161('0x15')](function(_0x46b67e){_0x22d482['push'](createTable(_0x46b67e,_0x12adcc));});return _0x22d482;}function getPDFDocDefinition(_0xe939bb){var _0x3ab735=util[_0xf161('0x16')](_0xf161('0x17'),NAME,EXTRACTED_REPORT[_0xf161('0x18')],moment(EXTRACTED_REPORT[_0xf161('0x19')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xf161('0x1a')])['format'](FORMAT));var _0x197b12=[];for(var _0x1b145f=0x0;_0x1b145f<_0xe939bb[_0xf161('0x10')];_0x1b145f++){var _0x3d64b2=[];if(_0x1b145f===0x0){_0x3d64b2[_0xf161('0x13')]({'text':_0x3ab735,'style':_0xf161('0x1b')});}var _0x19b83d={'table':_0xe939bb[_0x1b145f]};if(_0x1b145f>0x0){_0x19b83d[_0xf161('0x1c')]=_0xf161('0x1d');_0x19b83d[_0xf161('0x1e')]=[0x0,0x46,0x0,0x0];}_0x3d64b2[_0xf161('0x13')](_0x19b83d);_0x197b12[_0xf161('0x13')](_0x3d64b2);}return{'pageSize':'A4','pageOrientation':_0xf161('0x1f'),'content':_0x197b12,'footer':function(_0x63d4d4,_0x459b28){return{'text':_0x63d4d4[_0xf161('0x20')]()+_0xf161('0x21')+_0x459b28,'style':_0xf161('0x22')};},'defaultStyle':{'font':_0xf161('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xf161('0x24')},'footer':{'alignment':_0xf161('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x4598d2){var _0x3d4fdf=0x1388;var _0x4b31ae;if(!_0x4598d2[0x0][_0xf161('0x26')]){return analyticExtractedReport(_0xf161('0x27'));}return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf161('0x28'),_0xf161('0x29')]})[_0xf161('0x2a')](function(_0x3aaa41){if(_0x3aaa41){_0x4b31ae=_0x3aaa41;_0x3d4fdf=_0x4b31ae[_0xf161('0x29')]||0x3e8;}})['then'](function(){var _0x53d0f8=[];var _0x407263=0x0;if(_0x4b31ae[_0xf161('0x28')]){if(_0x4598d2&&_0x4598d2[_0xf161('0x10')]){var _0x5eeb25=_['range'](_0x4598d2[0x0][_0xf161('0x26')]/_0x3d4fdf);var _0x47ed3a=Number[_0xf161('0x2b')](_0x4598d2[0x0][_0xf161('0x26')]/_0x3d4fdf)?_0x4598d2[0x0][_0xf161('0x26')]%_0x3d4fdf:0x0;_0x5eeb25['forEach'](function(_0x586cdc){if(_0x586cdc>0x0){_0x407263+=_0x3d4fdf;}_0x53d0f8[_0xf161('0x13')](dbH[_0xf161('0x2c')][_0xf161('0x2d')](util[_0xf161('0x16')](_0xf161('0x2e'),QUERY,_0x3d4fdf,_0x407263),{'type':dbH['sequelize']['QueryTypes'][_0xf161('0x2f')]}));});if(_0x47ed3a>0x0){_0x407263+=_0x3d4fdf;_0x53d0f8['push'](dbH[_0xf161('0x2c')][_0xf161('0x2d')](util[_0xf161('0x16')](_0xf161('0x2e'),QUERY,_0x47ed3a,_0x407263),{'type':dbH[_0xf161('0x2c')][_0xf161('0x30')][_0xf161('0x2f')]}));}}}else{_0x53d0f8['push'](dbH['sequelize']['query'](QUERY,{'type':dbH[_0xf161('0x2c')][_0xf161('0x30')][_0xf161('0x2f')]}));}var _0x92540a=path[_0xf161('0x31')](PATH);var _0x5aff62=path[_0xf161('0x32')](PATH,'.pdf');var _0x15e57e=_0x4b31ae[_0xf161('0x28')]&&_0x53d0f8[_0xf161('0x10')]>0x1;var _0x5df3c5=[];if(!fs['existsSync'](path[_0xf161('0x33')](_0x92540a,_0x5aff62))&&_0x15e57e){fs[_0xf161('0x34')](path[_0xf161('0x33')](_0x92540a,_0x5aff62));}return BPromise[_0xf161('0x35')](_0x53d0f8,function(_0x553663){_0x5df3c5[_0xf161('0x13')](_0x553663);})[_0xf161('0x2a')](function(){var _0x10940c=[];for(var _0x5b74dd=0x0;_0x5b74dd<_0x5df3c5['length'];_0x5b74dd+=0x1){var _0x157d98=_0x5df3c5[_0x5b74dd];var _0x35b03f=createTables(_[_0xf161('0x36')](_0x157d98));var _0x4f9032;var _0x1abc2e=getPDFDocDefinition(_0x35b03f);var _0x3a7ada=getPDFPrinter();var _0x2b367e=_0x3a7ada['createPdfKitDocument'](_0x1abc2e);if(_0x15e57e){_0x4f9032=path['join'](_0x92540a,_0x5aff62,util['format'](_0xf161('0x37'),_0x5aff62,_0x5b74dd,_0xf161('0x38')));}else{_0x4f9032=path[_0xf161('0x33')](_0x92540a,util[_0xf161('0x16')]('%s.%s',_0x5aff62,_0xf161('0x38')));}_0x10940c[_0xf161('0x13')](writePDFDocument(_0x2b367e,_0x4f9032));}return Promise[_0xf161('0x39')](_0x10940c);})[_0xf161('0x2a')](function(){if(_0x15e57e){return new Promise(function(_0x2f22a9){zipdir(path[_0xf161('0x33')](_0x92540a,_0x5aff62),{'saveTo':path['join'](_0x92540a,util[_0xf161('0x16')](_0xf161('0x3a'),_0x5aff62,_0xf161('0x3b')))},function(){rimraf(path[_0xf161('0x33')](_0x92540a,_0x5aff62),function(){});_0x2f22a9('zip\x20finished');});});}})[_0xf161('0x2a')](function(){if(!_0x15e57e)return;rimraf(path[_0xf161('0x33')](_0x92540a,_0x5aff62),function(){});})[_0xf161('0x2a')](function(){logger[_0xf161('0x3c')](util[_0xf161('0x16')](_0xf161('0x3d'),EXTRACTED_REPORT_ID,_0xf161('0x3e')));return analyticExtractedReport(_0xf161('0x3f'),_0x15e57e?util[_0xf161('0x16')](_0xf161('0x3a'),_0x5aff62,_0x15e57e?_0xf161('0x3b'):_0xf161('0x38')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xf161('0x3c')](util[_0xf161('0x16')](_0xf161('0x40'),EXTRACTED_REPORT_ID,_0xf161('0x3e')));return db[_0xf161('0x41')][_0xf161('0x42')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xf161('0x2a')](function(_0xcfc386){EXTRACTED_REPORT=_0xcfc386;return dbH[_0xf161('0x2c')][_0xf161('0x2d')](util[_0xf161('0x16')](_0xf161('0x43'),QUERY),{'type':dbH[_0xf161('0x2c')][_0xf161('0x30')][_0xf161('0x2f')]});})[_0xf161('0x2a')](extractReport)[_0xf161('0x44')](function(_0x499d53){logger[_0xf161('0x3c')](util[_0xf161('0x16')](_0xf161('0x45'),EXTRACTED_REPORT_ID,'PDF'),util[_0xf161('0x46')](_0x499d53,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xf161('0x47'));})[_0xf161('0x48')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2c4465=new PdfPrinter({'Arial':{'normal':__dirname+_0xf161('0x49'),'bold':__dirname+_0xf161('0x4a'),'italics':__dirname+_0xf161('0x4b'),'bolditalics':__dirname+_0xf161('0x4c')}});return _0x2c4465;}function getPDFDocDefinitionFromHTML(_0x42f4e2,_0x4fea6d){var _0x1e82c1=util[_0xf161('0x16')](_0xf161('0x4d'),_0x4fea6d[_0xf161('0x4e')],_0x4fea6d[_0xf161('0x4f')]);var _0x675f6=moment()['format'](_0xf161('0x50'))[_0xf161('0x20')]();var _0x26cca8=htmlToPdfmake(_0x42f4e2,{'window':window,'tableAutoSize':!![]});return{'content':[_0x26cca8],'defaultStyle':{'font':_0xf161('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xf161('0x51'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xf161('0x51'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xf161('0x51')}},'header':function(){return[{'text':_0xf161('0x52'),'style':_0xf161('0x1b')}];},'footer':function(_0xd79320,_0x214339){return[{'text':util[_0xf161('0x16')](_0xf161('0x53'),_0x1e82c1,_0xd79320,_0x214339,_0x675f6),'style':_0xf161('0x22')}];}};}function writePDFDocument(_0x5abe8d,_0x2d519b){return new Promise(function(_0x406e37,_0x38fe69){var _0x43a148=_0x5abe8d[_0xf161('0x54')](fs['createWriteStream'](_0x2d519b));_0x43a148['on'](_0xf161('0x55'),function(){_0x406e37(_0xf161('0x55'));});_0x43a148['on'](_0xf161('0x56'),function(_0x1a1563){_0x38fe69(_0x1a1563);});_0x5abe8d[_0xf161('0x57')]();});}exports[_0xf161('0x58')]=function(_0x3b81ce,_0xe005a1){var _0x483096=getPDFPrinter();var _0x550eb2=getPDFDocDefinitionFromHTML(_0x3b81ce,_0xe005a1);var _0x3056b3=_0x483096[_0xf161('0x59')](_0x550eb2);return writePDFDocument(_0x3056b3,_0xe005a1[_0xf161('0x5a')])[_0xf161('0x44')](function(_0x39e426){throw _0x39e426;});};
\ No newline at end of file
+var _0x8c00=['catch','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','window','../../mysqldb','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','pageBreak','before','\x20/\x20','Arial','black','right','num','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Failed','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','pipe','createWriteStream','finish','end','createPdfFromHTML'];(function(_0x115f2a,_0x19dcf7){var _0x368484=function(_0x16101c){while(--_0x16101c){_0x115f2a['push'](_0x115f2a['shift']());}};_0x368484(++_0x19dcf7);}(_0x8c00,0x171));var _0x08c0=function(_0x3ba566,_0x5e009d){_0x3ba566=_0x3ba566-0x0;var _0x480317=_0x8c00[_0x3ba566];return _0x480317;};'use strict';var _=require(_0x08c0('0x0'));var fs=require('fs');var util=require(_0x08c0('0x1'));var path=require(_0x08c0('0x2'));var moment=require(_0x08c0('0x3'));var htmlToPdfmake=require(_0x08c0('0x4'));var PdfPrinter=require(_0x08c0('0x5'));var zipdir=require(_0x08c0('0x6'));var rimraf=require(_0x08c0('0x7'));var JSDOM=require(_0x08c0('0x8'))['JSDOM'];var window=new JSDOM('')[_0x08c0('0x9')];var BPromise=require('bluebird');var db=require(_0x08c0('0xa'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require('../../config/logger')(_0x08c0('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0x08c0('0xc')][0x2]);var QUERY=process[_0x08c0('0xc')][0x3];var PATH=process[_0x08c0('0xc')][0x4];var NAME=process[_0x08c0('0xc')][0x5];var FORMAT=_0x08c0('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x4c61c4,_0x47337f){var _0x5568a0={'status':_0x4c61c4};var _0x3bd541={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x47337f){_0x5568a0['savename']=_0x47337f;}return db[_0x08c0('0xe')][_0x08c0('0xf')](_0x5568a0,_0x3bd541);}function getHeaders(_0x7d4c89){return _[_0x08c0('0x10')](_0x7d4c89,function(_0x5ed71b){return{'text':_0x5ed71b,'style':_0x08c0('0x11')};});}function getRows(_0x9edaf7,_0x3a674a){return _[_0x08c0('0x10')](_0x3a674a,function(_0x140781){return _(_0x140781)['pick'](_0x9edaf7)[_0x08c0('0x10')](function(_0x16518d){return _0x16518d?_[_0x08c0('0x12')](_0x16518d):'';})[_0x08c0('0x13')]();});}function createTable(_0x39706a,_0x5e20f0){var _0x325c7b={'widths':_[_0x08c0('0x14')](Array(_0x39706a[_0x08c0('0x15')]),0x91),'heights':function(_0x54c701){return _0x54c701===0x0?_0x08c0('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x587756=getHeaders(_0x39706a);_0x325c7b[_0x08c0('0x17')][_0x08c0('0x18')](_0x587756);var _0x9c683=getRows(_0x39706a,_0x5e20f0);_0x325c7b['body']=_0x325c7b[_0x08c0('0x17')][_0x08c0('0x19')](_0x9c683);return _0x325c7b;}function createTables(_0x19fd14){var _0x2f51c2=[];var _0x29b30b=_[_0x08c0('0x1a')](Object[_0x08c0('0x1b')](_0x19fd14[0x0]),0x5);_0x29b30b[_0x08c0('0x1c')](function(_0x4029c8){_0x2f51c2[_0x08c0('0x18')](createTable(_0x4029c8,_0x19fd14));});return _0x2f51c2;}function getPDFDocDefinition(_0x2ca7c0){var _0x2ffd5e=util[_0x08c0('0x1d')](_0x08c0('0x1e'),NAME,EXTRACTED_REPORT[_0x08c0('0x1f')],moment(EXTRACTED_REPORT[_0x08c0('0x20')])[_0x08c0('0x1d')](FORMAT),moment(EXTRACTED_REPORT[_0x08c0('0x21')])[_0x08c0('0x1d')](FORMAT));var _0xdeac10=[];for(var _0x44630c=0x0;_0x44630c<_0x2ca7c0[_0x08c0('0x15')];_0x44630c++){var _0x133a87=[];if(_0x44630c===0x0){_0x133a87[_0x08c0('0x18')]({'text':_0x2ffd5e,'style':_0x08c0('0x22')});}var _0x5945be={'table':_0x2ca7c0[_0x44630c]};if(_0x44630c>0x0){_0x5945be[_0x08c0('0x23')]=_0x08c0('0x24');_0x5945be['margin']=[0x0,0x46,0x0,0x0];}_0x133a87[_0x08c0('0x18')](_0x5945be);_0xdeac10[_0x08c0('0x18')](_0x133a87);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0xdeac10,'footer':function(_0x228b24,_0x3fffe3){return{'text':_0x228b24[_0x08c0('0x12')]()+_0x08c0('0x25')+_0x3fffe3,'style':'footer'};},'defaultStyle':{'font':_0x08c0('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x08c0('0x27')},'footer':{'alignment':_0x08c0('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x499ae0){var _0x2f9264=0x1388;var _0x1ca0ba;if(!_0x499ae0[0x0][_0x08c0('0x29')]){return analyticExtractedReport('Empty');}return db[_0x08c0('0x2a')][_0x08c0('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x08c0('0x2c'),_0x08c0('0x2d')]})[_0x08c0('0x2e')](function(_0x1cc7d3){if(_0x1cc7d3){_0x1ca0ba=_0x1cc7d3;_0x2f9264=_0x1ca0ba[_0x08c0('0x2d')]||0x3e8;}})['then'](function(){var _0x13007f=[];var _0x16509f=0x0;if(_0x1ca0ba[_0x08c0('0x2c')]){if(_0x499ae0&&_0x499ae0[_0x08c0('0x15')]){var _0x2fd6d4=_[_0x08c0('0x2f')](_0x499ae0[0x0][_0x08c0('0x29')]/_0x2f9264);var _0x2912f3=Number[_0x08c0('0x30')](_0x499ae0[0x0][_0x08c0('0x29')]/_0x2f9264)?_0x499ae0[0x0][_0x08c0('0x29')]%_0x2f9264:0x0;_0x2fd6d4['forEach'](function(_0x3e72b1){if(_0x3e72b1>0x0){_0x16509f+=_0x2f9264;}_0x13007f['push'](dbH[_0x08c0('0x31')][_0x08c0('0x32')](util['format'](_0x08c0('0x33'),QUERY,_0x2f9264,_0x16509f),{'type':dbH[_0x08c0('0x31')]['QueryTypes'][_0x08c0('0x34')]}));});if(_0x2912f3>0x0){_0x16509f+=_0x2f9264;_0x13007f[_0x08c0('0x18')](dbH[_0x08c0('0x31')]['query'](util[_0x08c0('0x1d')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2912f3,_0x16509f),{'type':dbH[_0x08c0('0x31')][_0x08c0('0x35')]['SELECT']}));}}}else{_0x13007f[_0x08c0('0x18')](dbH[_0x08c0('0x31')]['query'](QUERY,{'type':dbH['sequelize'][_0x08c0('0x35')][_0x08c0('0x34')]}));}var _0x15de20=path['dirname'](PATH);var _0x445f13=path['basename'](PATH,_0x08c0('0x36'));var _0x3b9bae=_0x1ca0ba[_0x08c0('0x2c')]&&_0x13007f[_0x08c0('0x15')]>0x1;var _0x5bfc96=[];if(!fs[_0x08c0('0x37')](path[_0x08c0('0x38')](_0x15de20,_0x445f13))&&_0x3b9bae){fs[_0x08c0('0x39')](path[_0x08c0('0x38')](_0x15de20,_0x445f13));}return BPromise[_0x08c0('0x3a')](_0x13007f,function(_0xc34523){_0x5bfc96[_0x08c0('0x18')](_0xc34523);})[_0x08c0('0x2e')](function(){var _0x1377af=[];for(var _0x59af8b=0x0;_0x59af8b<_0x5bfc96[_0x08c0('0x15')];_0x59af8b+=0x1){var _0x8fc94=_0x5bfc96[_0x59af8b];var _0x540d4c=createTables(_[_0x08c0('0x3b')](_0x8fc94));var _0x578040;var _0x4a5db6=getPDFDocDefinition(_0x540d4c);var _0x157bd0=getPDFPrinter();var _0x88c979=_0x157bd0[_0x08c0('0x3c')](_0x4a5db6);if(_0x3b9bae){_0x578040=path[_0x08c0('0x38')](_0x15de20,_0x445f13,util[_0x08c0('0x1d')](_0x08c0('0x3d'),_0x445f13,_0x59af8b,_0x08c0('0x3e')));}else{_0x578040=path[_0x08c0('0x38')](_0x15de20,util[_0x08c0('0x1d')](_0x08c0('0x3f'),_0x445f13,_0x08c0('0x3e')));}_0x1377af['push'](writePDFDocument(_0x88c979,_0x578040));}return Promise[_0x08c0('0x40')](_0x1377af);})['then'](function(){if(_0x3b9bae){return new Promise(function(_0x3c7f59){zipdir(path[_0x08c0('0x38')](_0x15de20,_0x445f13),{'saveTo':path[_0x08c0('0x38')](_0x15de20,util[_0x08c0('0x1d')]('%s.%s',_0x445f13,_0x08c0('0x41')))},function(){rimraf(path[_0x08c0('0x38')](_0x15de20,_0x445f13),function(){});_0x3c7f59(_0x08c0('0x42'));});});}})[_0x08c0('0x2e')](function(){if(!_0x3b9bae)return;rimraf(path[_0x08c0('0x38')](_0x15de20,_0x445f13),function(){});})[_0x08c0('0x2e')](function(){logger[_0x08c0('0x43')](util['format'](_0x08c0('0x44'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x08c0('0x45'),_0x3b9bae?util[_0x08c0('0x1d')]('%s.%s',_0x445f13,_0x3b9bae?_0x08c0('0x41'):_0x08c0('0x3e')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util['format'](_0x08c0('0x46'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x08c0('0xe')][_0x08c0('0x47')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x08c0('0x2e')](function(_0x237a83){EXTRACTED_REPORT=_0x237a83;return dbH[_0x08c0('0x31')][_0x08c0('0x32')](util[_0x08c0('0x1d')](_0x08c0('0x48'),QUERY),{'type':dbH[_0x08c0('0x31')][_0x08c0('0x35')]['SELECT']});})[_0x08c0('0x2e')](extractReport)['catch'](function(_0x2a1fcc){logger[_0x08c0('0x43')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'),util['inspect'](_0x2a1fcc,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x08c0('0x49'));})[_0x08c0('0x4a')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x3de421=new PdfPrinter({'Arial':{'normal':__dirname+_0x08c0('0x4b'),'bold':__dirname+_0x08c0('0x4c'),'italics':__dirname+_0x08c0('0x4d'),'bolditalics':__dirname+_0x08c0('0x4e')}});return _0x3de421;}function getPDFDocDefinitionFromHTML(_0x2401f2,_0x53f0ad){var _0x40ca46=util[_0x08c0('0x1d')]('%s\x20#%d',_0x53f0ad[_0x08c0('0x4f')],_0x53f0ad[_0x08c0('0x50')]);var _0x55b82a=moment()[_0x08c0('0x1d')](_0x08c0('0x51'))['toString']();var _0x30fa72=htmlToPdfmake(_0x2401f2,{'window':window,'tableAutoSize':!![]});return{'content':[_0x30fa72],'defaultStyle':{'font':_0x08c0('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x08c0('0x52'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x08c0('0x53'),'style':_0x08c0('0x22')}];},'footer':function(_0x2c57f4,_0x449d66){return[{'text':util[_0x08c0('0x1d')](_0x08c0('0x54'),_0x40ca46,_0x2c57f4,_0x449d66,_0x55b82a),'style':_0x08c0('0x55')}];}};}function writePDFDocument(_0x3b952a,_0xb6a10){return new Promise(function(_0x4df785,_0x4869fa){var _0x50a0f1=_0x3b952a[_0x08c0('0x56')](fs[_0x08c0('0x57')](_0xb6a10));_0x50a0f1['on'](_0x08c0('0x58'),function(){_0x4df785(_0x08c0('0x58'));});_0x50a0f1['on']('error',function(_0x1d5135){_0x4869fa(_0x1d5135);});_0x3b952a[_0x08c0('0x59')]();});}exports[_0x08c0('0x5a')]=function(_0x1e5600,_0x1db75c){var _0x504d21=getPDFPrinter();var _0x10e9af=getPDFDocDefinitionFromHTML(_0x1e5600,_0x1db75c);var _0x31ead2=_0x504d21[_0x08c0('0x3c')](_0x10e9af);return writePDFDocument(_0x31ead2,_0x1db75c[_0x08c0('0x2')])[_0x08c0('0x5b')](function(_0x7a4b5c){throw _0x7a4b5c;});};
\ No newline at end of file
index 401a85e..7a5e1ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96ca=['then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','range','isInteger','forEach','query','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','length','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','split','splitSizeXlsx'];(function(_0x3923f7,_0x2a098d){var _0x42c48b=function(_0x28edf1){while(--_0x28edf1){_0x3923f7['push'](_0x3923f7['shift']());}};_0x42c48b(++_0x2a098d);}(_0x96ca,0xf1));var _0xa96c=function(_0x4a7b46,_0x5e916c){_0x4a7b46=_0x4a7b46-0x0;var _0x436bee=_0x96ca[_0x4a7b46];return _0x436bee;};'use strict';var util=require(_0xa96c('0x0'));var path=require(_0xa96c('0x1'));var _=require(_0xa96c('0x2'));var fs=require('fs');var json2xls=require(_0xa96c('0x3'));var BPromise=require(_0xa96c('0x4'));var zipdir=require(_0xa96c('0x5'));var rimraf=require(_0xa96c('0x6'));var db=require(_0xa96c('0x7'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0xa96c('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xa96c('0x9')][0x2]);var QUERY=process[_0xa96c('0x9')][0x3];var PATH=process[_0xa96c('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xe6f02c,_0x550dac){var _0x1b831d={'status':_0xe6f02c};var _0x3d5d7a={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x550dac){_0x1b831d[_0xa96c('0xa')]=_0x550dac;}return db[_0xa96c('0xb')][_0xa96c('0xc')](_0x1b831d,_0x3d5d7a);}function main(){var _0x2185c5=0x1388;var _0x173c6c;logger[_0xa96c('0xd')](util[_0xa96c('0xe')](_0xa96c('0xf'),EXTRACTED_REPORT_ID,_0xa96c('0x10')));return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa96c('0x11'),_0xa96c('0x12')]})[_0xa96c('0x13')](function(_0x4b9198){if(_0x4b9198){_0x173c6c=_0x4b9198;_0x2185c5=_0x173c6c[_0xa96c('0x12')]||0x1388;}})[_0xa96c('0x13')](function(){return dbH[_0xa96c('0x14')]['query'](util[_0xa96c('0xe')](_0xa96c('0x15'),QUERY),{'type':dbH[_0xa96c('0x14')][_0xa96c('0x16')][_0xa96c('0x17')]});})['then'](function(_0x17b7b5){if(!_0x17b7b5[0x0][_0xa96c('0x18')]){return analyticExtractedReport(_0xa96c('0x19'));}var _0x6bfdda=[];var _0x5e6809=0x0;if(_0x173c6c['split']){if(_0x17b7b5&&_0x17b7b5['length']){var _0x3cb6e0=_[_0xa96c('0x1a')](_0x17b7b5[0x0][_0xa96c('0x18')]/_0x2185c5);var _0x44a6e7=Number[_0xa96c('0x1b')](_0x17b7b5[0x0][_0xa96c('0x18')]/_0x2185c5)?_0x17b7b5[0x0][_0xa96c('0x18')]%_0x2185c5:0x0;_0x3cb6e0[_0xa96c('0x1c')](function(_0x26c45b){if(_0x26c45b>0x0){_0x5e6809+=_0x2185c5;}_0x6bfdda['push'](dbH[_0xa96c('0x14')][_0xa96c('0x1d')](util['format'](_0xa96c('0x1e'),QUERY,_0x2185c5,_0x5e6809),{'type':dbH[_0xa96c('0x14')]['QueryTypes']['SELECT']}));});if(_0x44a6e7>0x0){_0x5e6809+=_0x2185c5;_0x6bfdda[_0xa96c('0x1f')](dbH[_0xa96c('0x14')][_0xa96c('0x1d')](util[_0xa96c('0xe')](_0xa96c('0x1e'),QUERY,_0x44a6e7,_0x5e6809),{'type':dbH['sequelize'][_0xa96c('0x16')][_0xa96c('0x17')]}));}}}else{_0x6bfdda[_0xa96c('0x1f')](dbH[_0xa96c('0x14')][_0xa96c('0x1d')](QUERY,{'type':dbH[_0xa96c('0x14')]['QueryTypes'][_0xa96c('0x17')]}));}var _0x27b69c=path[_0xa96c('0x20')](PATH);var _0x1ac2d5=path[_0xa96c('0x21')](PATH,_0xa96c('0x22'));var _0x285eb2=_0x173c6c[_0xa96c('0x11')]&&_0x6bfdda[_0xa96c('0x23')]>0x1;var _0x445d04=[];if(!fs['existsSync'](path[_0xa96c('0x24')](_0x27b69c,_0x1ac2d5))&&_0x285eb2){fs['mkdirSync'](path[_0xa96c('0x24')](_0x27b69c,_0x1ac2d5));}return BPromise[_0xa96c('0x25')](_0x6bfdda,function(_0x5a5691){_0x445d04['push'](_0x5a5691);})[_0xa96c('0x13')](function(){for(var _0xf74f61=0x0;_0xf74f61<_0x445d04[_0xa96c('0x23')];_0xf74f61+=0x1){var _0x3b423d;var _0x35de06=_0x445d04[_0xf74f61];if(_0x285eb2){_0x3b423d=path['join'](_0x27b69c,_0x1ac2d5,util[_0xa96c('0xe')](_0xa96c('0x26'),_0x1ac2d5,_0xf74f61,_0xa96c('0x27')));}else{_0x3b423d=path[_0xa96c('0x24')](_0x27b69c,util[_0xa96c('0xe')](_0xa96c('0x28'),_0x1ac2d5,_0xa96c('0x27')));}fs[_0xa96c('0x29')](_0x3b423d,json2xls(_0x35de06),_0xa96c('0x2a'));}})[_0xa96c('0x13')](function(){if(_0x285eb2){return new Promise(function(_0x1d1563){zipdir(path[_0xa96c('0x24')](_0x27b69c,_0x1ac2d5),{'saveTo':path[_0xa96c('0x24')](_0x27b69c,util[_0xa96c('0xe')]('%s.%s',_0x1ac2d5,_0xa96c('0x2b')))},function(_0x5a180f,_0x36224f){rimraf(path['join'](_0x27b69c,_0x1ac2d5),function(){});_0x1d1563(_0xa96c('0x2c'));});});}})['then'](function(){logger[_0xa96c('0xd')](util[_0xa96c('0xe')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xa96c('0x10')));return analyticExtractedReport(_0xa96c('0x2d'),_0x285eb2?util[_0xa96c('0xe')](_0xa96c('0x28'),_0x1ac2d5,_0x285eb2?_0xa96c('0x2b'):_0xa96c('0x27')):null);});})[_0xa96c('0x2e')](function(_0x19624e){logger['info'](util[_0xa96c('0xe')](_0xa96c('0x2f'),EXTRACTED_REPORT_ID,_0xa96c('0x10')),util[_0xa96c('0x30')](_0x19624e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa96c('0x31'));})[_0xa96c('0x32')](function(){process[_0xa96c('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xe33c=['inspect','Failed','finally','exit','path','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','range','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','XLSX'];(function(_0xc39bf7,_0x35aa3f){var _0x3a84fb=function(_0x5c7923){while(--_0x5c7923){_0xc39bf7['push'](_0xc39bf7['shift']());}};_0x3a84fb(++_0x35aa3f);}(_0xe33c,0x1a4));var _0xce33=function(_0x1c49ea,_0xc8e545){_0x1c49ea=_0x1c49ea-0x0;var _0x2d167c=_0xe33c[_0x1c49ea];return _0x2d167c;};'use strict';var util=require('util');var path=require(_0xce33('0x0'));var _=require('lodash');var fs=require('fs');var json2xls=require(_0xce33('0x1'));var BPromise=require(_0xce33('0x2'));var zipdir=require(_0xce33('0x3'));var rimraf=require(_0xce33('0x4'));var db=require('../../mysqldb')['db'];var dbH=require(_0xce33('0x5'))[_0xce33('0x6')];var logger=require(_0xce33('0x7'))(_0xce33('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xce33('0x9')][0x2]);var QUERY=process[_0xce33('0x9')][0x3];var PATH=process[_0xce33('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x41f42f,_0x21cd17){var _0x18b060={'status':_0x41f42f};var _0x168733={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x21cd17){_0x18b060[_0xce33('0xa')]=_0x21cd17;}return db[_0xce33('0xb')][_0xce33('0xc')](_0x18b060,_0x168733);}function main(){var _0x53f9e2=0x1388;var _0x3fbc1c;logger[_0xce33('0xd')](util[_0xce33('0xe')](_0xce33('0xf'),EXTRACTED_REPORT_ID,'XLSX'));return db['Setting'][_0xce33('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xce33('0x11'),_0xce33('0x12')]})[_0xce33('0x13')](function(_0x52db70){if(_0x52db70){_0x3fbc1c=_0x52db70;_0x53f9e2=_0x3fbc1c[_0xce33('0x12')]||0x1388;}})[_0xce33('0x13')](function(){return dbH[_0xce33('0x14')][_0xce33('0x15')](util[_0xce33('0xe')](_0xce33('0x16'),QUERY),{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]});})['then'](function(_0x18b206){if(!_0x18b206[0x0][_0xce33('0x19')]){return analyticExtractedReport('Empty');}var _0x15c180=[];var _0x35659b=0x0;if(_0x3fbc1c[_0xce33('0x11')]){if(_0x18b206&&_0x18b206[_0xce33('0x1a')]){var _0x3c7cde=_[_0xce33('0x1b')](_0x18b206[0x0][_0xce33('0x19')]/_0x53f9e2);var _0x50bfff=Number[_0xce33('0x1c')](_0x18b206[0x0][_0xce33('0x19')]/_0x53f9e2)?_0x18b206[0x0]['num']%_0x53f9e2:0x0;_0x3c7cde[_0xce33('0x1d')](function(_0x498991){if(_0x498991>0x0){_0x35659b+=_0x53f9e2;}_0x15c180['push'](dbH[_0xce33('0x14')][_0xce33('0x15')](util[_0xce33('0xe')](_0xce33('0x1e'),QUERY,_0x53f9e2,_0x35659b),{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]}));});if(_0x50bfff>0x0){_0x35659b+=_0x53f9e2;_0x15c180[_0xce33('0x1f')](dbH[_0xce33('0x14')]['query'](util[_0xce33('0xe')](_0xce33('0x1e'),QUERY,_0x50bfff,_0x35659b),{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]}));}}}else{_0x15c180['push'](dbH['sequelize'][_0xce33('0x15')](QUERY,{'type':dbH[_0xce33('0x14')][_0xce33('0x17')][_0xce33('0x18')]}));}var _0x7c7c2a=path[_0xce33('0x20')](PATH);var _0x2f914c=path[_0xce33('0x21')](PATH,'.xlsx');var _0x544c9c=_0x3fbc1c['split']&&_0x15c180[_0xce33('0x1a')]>0x1;var _0x3e2d83=[];if(!fs['existsSync'](path[_0xce33('0x22')](_0x7c7c2a,_0x2f914c))&&_0x544c9c){fs[_0xce33('0x23')](path['join'](_0x7c7c2a,_0x2f914c));}return BPromise[_0xce33('0x24')](_0x15c180,function(_0x50a87b){_0x3e2d83[_0xce33('0x1f')](_0x50a87b);})[_0xce33('0x13')](function(){for(var _0x4e2f9b=0x0;_0x4e2f9b<_0x3e2d83[_0xce33('0x1a')];_0x4e2f9b+=0x1){var _0x150de3;var _0x3b4b8d=_0x3e2d83[_0x4e2f9b];if(_0x544c9c){_0x150de3=path[_0xce33('0x22')](_0x7c7c2a,_0x2f914c,util[_0xce33('0xe')](_0xce33('0x25'),_0x2f914c,_0x4e2f9b,_0xce33('0x26')));}else{_0x150de3=path[_0xce33('0x22')](_0x7c7c2a,util['format'](_0xce33('0x27'),_0x2f914c,_0xce33('0x26')));}fs[_0xce33('0x28')](_0x150de3,json2xls(_0x3b4b8d),_0xce33('0x29'));}})[_0xce33('0x13')](function(){if(_0x544c9c){return new Promise(function(_0x1ffca8){zipdir(path['join'](_0x7c7c2a,_0x2f914c),{'saveTo':path['join'](_0x7c7c2a,util[_0xce33('0xe')]('%s.%s',_0x2f914c,_0xce33('0x2a')))},function(_0x3b8c0b,_0xeb56f1){rimraf(path[_0xce33('0x22')](_0x7c7c2a,_0x2f914c),function(){});_0x1ffca8(_0xce33('0x2b'));});});}})['then'](function(){logger['info'](util[_0xce33('0xe')](_0xce33('0x2c'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0xce33('0x2d'),_0x544c9c?util[_0xce33('0xe')](_0xce33('0x27'),_0x2f914c,_0x544c9c?_0xce33('0x2a'):_0xce33('0x26')):null);});})[_0xce33('0x2e')](function(_0x3c732d){logger[_0xce33('0xd')](util[_0xce33('0xe')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xce33('0x2f')),util[_0xce33('0x30')](_0x3c732d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xce33('0x31'));})[_0xce33('0x32')](function(){process[_0xce33('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
index 173e668..4d6b38b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c77=['answer','indexOf','app','toLowerCase','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','catch','util','Interval','findAll','then','intervals','VoiceExtension','IntervalId','models','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','priority','extension','find','push','type','Set','format','CDR(type)=%s','VoiceExtensionId','inbound','extensions','context','outbound','CDR(destination)=','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','cutdigits','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','createdAt','interval','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x4c77,0x9f));var _0x74c7=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4c77[_0x46e363];return _0x3fb059;};'use strict';var _=require('lodash');var util=require(_0x74c7('0x0'));function rewrite(_0x408b79,_0x4dd2c8){var _0x21fda4=this;return _0x408b79['models'][_0x74c7('0x1')][_0x74c7('0x2')]({'raw':!![]})[_0x74c7('0x3')](function(_0x37b490){_0x21fda4[_0x74c7('0x4')]=_0x37b490;return _0x408b79['models'][_0x74c7('0x5')][_0x74c7('0x2')]({'where':{'IntervalId':_0x4dd2c8[_0x74c7('0x6')]},'raw':!![]});})[_0x74c7('0x3')](function(_0x54a3b3){return _0x408b79[_0x74c7('0x7')][_0x74c7('0x5')]['findAll']({'where':{'exten':{'$in':_['uniq'](_[_0x74c7('0x8')](_0x54a3b3,_0x74c7('0x9')))}},'order':[{'raw':_0x74c7('0xa')}],'raw':!![]});})['then'](function(_0x49fd02){var _0x301dd8=_[_0x74c7('0xb')](_0x49fd02,{'priority':'1'});var _0x3b28a6=_[_0x74c7('0xb')](_0x49fd02,{'isApp':0x1});var _0x570426=_[_0x74c7('0xc')](_0x3b28a6,'exten');var _0x4f9120=['queue',_0x74c7('0xd')];var _0x37520d=[];var _0x2fb6a9=[];for(var _0x20264d in _0x570426){if(_0x570426[_0x74c7('0xe')](_0x20264d)){_0x21fda4[_0x74c7('0xf')]=0x2;_0x21fda4['extensions']=[];_0x21fda4[_0x74c7('0x10')]=_[_0x74c7('0x11')](_0x301dd8,{'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')]});_0x21fda4['extensions'][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':util[_0x74c7('0x15')](_0x74c7('0x16'),_0x570426[_0x20264d][0x0][_0x74c7('0x13')]),'context':_0x570426[_0x20264d][0x0]['context'],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});if(_0x570426[_0x20264d][0x0][_0x74c7('0x13')]===_0x74c7('0x18')){_0x21fda4[_0x74c7('0x19')]['push']({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':'CDR(routeid)='+_0x570426[_0x20264d][0x0][_0x74c7('0x17')],'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0]['VoiceExtensionId']});}else if(_0x570426[_0x20264d][0x0]['type']===_0x74c7('0x1b')){if(_0x21fda4['extension']){_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x1c')+(_0x21fda4[_0x74c7('0x10')]['cutdigits']?_0x74c7('0x1d')+_0x21fda4['extension']['cutdigits']+'}':'${EXTEN}'),'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4['priority']++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});}_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':'CDR(routeid)='+_0x570426[_0x20264d][0x0][_0x74c7('0x17')],'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0]['VoiceExtensionId']});var _0x5ad14e=_0x21fda4['priority']++;_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0]['type'],'app':_0x74c7('0x1e'),'appdata':_0x74c7('0x1f')+(_0x5ad14e+0x2)+_0x74c7('0x20')+(_0x5ad14e+0x1)+')','context':_0x570426[_0x20264d][0x0]['context'],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x5ad14e,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});if(_0x21fda4[_0x74c7('0x10')]){_0x21fda4[_0x74c7('0x19')]['push']({'type':_0x570426[_0x20264d][0x0]['type'],'app':_0x74c7('0x14'),'appdata':_0x21fda4[_0x74c7('0x10')][_0x74c7('0x21')]?_0x74c7('0x22')+_0x21fda4[_0x74c7('0x10')][_0x74c7('0x21')]+'}':_0x74c7('0x23'),'context':_0x570426[_0x20264d][0x0]['context'],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});}_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0]['type'],'app':_0x74c7('0x14'),'appdata':'outboundrouteid='+_0x570426[_0x20264d][0x0][_0x74c7('0x17')],'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4['priority']++,'VoiceExtensionId':_0x570426[_0x20264d][0x0]['VoiceExtensionId']});if(_0x21fda4[_0x74c7('0x10')]&&_0x21fda4['extension']['hasOwnProperty'](_0x74c7('0x24'))&&_0x21fda4['extension'][_0x74c7('0x24')]!=='none'){_0x21fda4[_0x74c7('0x19')]['push']({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x25'),'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x26')+_0x21fda4['extension']['recordingFormat']||_0x74c7('0x27'),'context':_0x570426[_0x20264d][0x0]['context'],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});}}_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':'Set','appdata':_0x74c7('0x28'),'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0]['exten'],'priority':_0x21fda4['priority']++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});_0x21fda4['extensions'][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0]['type'],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x29'),'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x2a'),'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'priority':_0x21fda4[_0x74c7('0xf')]++,'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});for(var _0x5a5ef2=0x0,_0x577a4d=0x0;_0x5a5ef2<_0x570426[_0x20264d][_0x74c7('0x2b')];_0x5a5ef2+=0x1,_0x577a4d=0x0){var _0xef0f85=_0x570426[_0x20264d][_0x5a5ef2];if(_0xef0f85['type']){_0xef0f85[_0x74c7('0x13')]=_0xef0f85[_0x74c7('0x13')]['toLowerCase']();}var _0x3aaba2=[];var _0x2b831f=[];delete _0xef0f85['id'];delete _0xef0f85[_0x74c7('0x2c')];delete _0xef0f85['updatedAt'];var _0x3024ae=_0xef0f85[_0x74c7('0x2d')]!==_0x74c7('0x2e')?[_0xef0f85[_0x74c7('0x2d')]]:_0xef0f85[_0x74c7('0x6')]?_[_0x74c7('0x8')](_[_0x74c7('0xb')](_0x21fda4['intervals'],{'IntervalId':_0xef0f85[_0x74c7('0x6')]}),_0x74c7('0x2d')):[];if(_0xef0f85[_0x74c7('0xe')](_0x74c7('0x2f'))){if(_0xef0f85['tag']&&_0xef0f85[_0x74c7('0x2f')]!=='--'){_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85[_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x30')+_0xef0f85['tag'],'context':_0xef0f85[_0x74c7('0x1a')],'exten':_0xef0f85[_0x74c7('0x9')],'priority':_0x3024ae[_0x74c7('0x2b')]+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});}}if(_0xef0f85[_0x74c7('0x13')]===_0x74c7('0x1b')&&_0xef0f85['hasOwnProperty'](_0x74c7('0x31'))){if(_0xef0f85[_0x74c7('0x31')]){_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85[_0x74c7('0x13')],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0xef0f85['callerID']+')','context':_0xef0f85[_0x74c7('0x1a')],'exten':_0xef0f85['exten'],'priority':_0x3024ae[_0x74c7('0x2b')]+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});}else{_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85[_0x74c7('0x13')],'app':_0x74c7('0x1e'),'appdata':_0x74c7('0x32'),'context':_0xef0f85[_0x74c7('0x1a')],'exten':_0xef0f85[_0x74c7('0x9')],'priority':_0x3024ae[_0x74c7('0x2b')]+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});}}if(_0xef0f85['hasOwnProperty'](_0x74c7('0x33'))){if(_0x4f9120[_0x74c7('0x34')](_0xef0f85[_0x74c7('0x35')][_0x74c7('0x36')]())>=0x0&&_0xef0f85[_0x74c7('0x37')]!==_0x74c7('0x38')){if(_0xef0f85['answer']){_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85['type'],'app':_0x74c7('0x1e'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0xef0f85[_0x74c7('0x1a')],'exten':_0xef0f85[_0x74c7('0x9')],'priority':_0x3024ae[_0x74c7('0x2b')]+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85[_0x74c7('0x13')],'app':_0x74c7('0x14'),'appdata':_0x74c7('0x39'),'context':_0xef0f85['context'],'exten':_0xef0f85[_0x74c7('0x9')],'priority':_0x3024ae[_0x74c7('0x2b')]+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});}else{_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85[_0x74c7('0x13')],'app':_0x74c7('0x1e'),'appdata':_0x74c7('0x3a'),'context':_0xef0f85['context'],'exten':_0xef0f85['exten'],'priority':_0x3024ae['length']+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});_0x3aaba2[_0x74c7('0x12')]({'type':_0xef0f85[_0x74c7('0x13')],'app':'Set','appdata':_0x74c7('0x3b'),'context':_0xef0f85[_0x74c7('0x1a')],'exten':_0xef0f85['exten'],'priority':_0x3024ae[_0x74c7('0x2b')]+_0x21fda4[_0x74c7('0xf')]+_0x577a4d++,'VoiceExtensionId':_0xef0f85[_0x74c7('0x17')]});}}}for(var _0x49f743=0x0;_0x49f743<_0x3024ae[_0x74c7('0x2b')];_0x49f743+=0x1){var _0x57c806=_0x21fda4['priority']+_0x3024ae['length'];var _0x3c6533=_0x49f743===_0x3024ae[_0x74c7('0x2b')]-0x1?_0x21fda4[_0x74c7('0xf')]+_0x3aaba2[_0x74c7('0x2b')]+_0x2b831f[_0x74c7('0x2b')]+0x2:_0x21fda4[_0x74c7('0xf')]+_0x49f743+0x1;_0x3aaba2[_0x74c7('0x3c')](_0x49f743,0x0,{'type':_0xef0f85[_0x74c7('0x13')],'app':_0x74c7('0x3d'),'appdata':_0x3024ae[_0x49f743]+'?'+_0xef0f85[_0x74c7('0x1a')]+_0x74c7('0x3e')+_0x57c806+':'+_0xef0f85['context']+_0x74c7('0x3e')+_0x3c6533,'exten':_0xef0f85[_0x74c7('0x9')],'context':_0xef0f85[_0x74c7('0x1a')],'priority':_0x21fda4['priority']+_0x49f743,'VoiceExtensionId':_0x570426[_0x20264d][0x0]['VoiceExtensionId']});}_0xef0f85['priority']=_0x3aaba2['length']?_[_0x74c7('0x3f')](_0x3aaba2)[_0x74c7('0xf')]+0x1:_0x21fda4[_0x74c7('0xf')];_0x21fda4[_0x74c7('0xf')]=(_0x2b831f[_0x74c7('0x2b')]?_[_0x74c7('0x3f')](_0x2b831f)[_0x74c7('0xf')]:_0xef0f85[_0x74c7('0xf')])+0x1;_0x21fda4[_0x74c7('0x19')]=_[_0x74c7('0x40')](_0x21fda4[_0x74c7('0x19')],_0x3aaba2,[_0xef0f85],_0x2b831f);}_0x21fda4[_0x74c7('0x19')][_0x74c7('0x12')]({'type':_0x570426[_0x20264d][0x0][_0x74c7('0x13')],'app':_0x74c7('0x41'),'exten':_0x570426[_0x20264d][0x0][_0x74c7('0x9')],'context':_0x570426[_0x20264d][0x0][_0x74c7('0x1a')],'priority':_0x21fda4[_0x74c7('0xf')],'VoiceExtensionId':_0x570426[_0x20264d][0x0][_0x74c7('0x17')]});_0x37520d[_0x74c7('0x12')](_0x570426[_0x20264d][0x0][_0x74c7('0x17')]);_0x2fb6a9=_[_0x74c7('0x40')](_0x2fb6a9,_0x21fda4[_0x74c7('0x19')]);}}return _0x408b79[_0x74c7('0x42')](function(_0x2bef14){return _0x408b79[_0x74c7('0x7')]['VoiceExtension'][_0x74c7('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x37520d}},'transaction':_0x2bef14})[_0x74c7('0x3')](function(_0x4e5b54){return _0x408b79[_0x74c7('0x7')][_0x74c7('0x5')][_0x74c7('0x44')](_['sortBy'](_0x2fb6a9,_0x74c7('0xf')),{'transaction':_0x2bef14});});});})[_0x74c7('0x45')](function(_0x5d9bac){console['error'](_0x5d9bac);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xacbc=['find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','length','toLowerCase','createdAt','*,*,*,*','intervals','interval','hasOwnProperty','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','appType','custom','XCALLY-MOTION-ANSWER=1','splice','GotoIfTime',',${EXTEN},','concat','transaction','destroy','bulkCreate','catch','error','lodash','models','findAll','then','VoiceExtension','IntervalId','uniq','map','exten','filter','priority','extensions','extension'];(function(_0x13cc3b,_0x11dd51){var _0x90fd94=function(_0x4a07f0){while(--_0x4a07f0){_0x13cc3b['push'](_0x13cc3b['shift']());}};_0x90fd94(++_0x11dd51);}(_0xacbc,0x16d));var _0xcacb=function(_0x554b38,_0xe009ee){_0x554b38=_0x554b38-0x0;var _0x9589f2=_0xacbc[_0x554b38];return _0x9589f2;};'use strict';var _=require(_0xcacb('0x0'));var util=require('util');function rewrite(_0x377012,_0x4f706d){var _0x5409ce=this;return _0x377012[_0xcacb('0x1')]['Interval'][_0xcacb('0x2')]({'raw':!![]})[_0xcacb('0x3')](function(_0xef2069){_0x5409ce['intervals']=_0xef2069;return _0x377012[_0xcacb('0x1')][_0xcacb('0x4')][_0xcacb('0x2')]({'where':{'IntervalId':_0x4f706d[_0xcacb('0x5')]},'raw':!![]});})[_0xcacb('0x3')](function(_0x14bbc4){return _0x377012[_0xcacb('0x1')][_0xcacb('0x4')]['findAll']({'where':{'exten':{'$in':_[_0xcacb('0x6')](_[_0xcacb('0x7')](_0x14bbc4,_0xcacb('0x8')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0xcacb('0x3')](function(_0x3e721c){var _0x2443ae=_[_0xcacb('0x9')](_0x3e721c,{'priority':'1'});var _0x437a19=_[_0xcacb('0x9')](_0x3e721c,{'isApp':0x1});var _0xb559e7=_['groupBy'](_0x437a19,_0xcacb('0x8'));var _0x14412e=['queue','playback'];var _0x39c99d=[];var _0x42ec42=[];for(var _0x1c65ec in _0xb559e7){if(_0xb559e7['hasOwnProperty'](_0x1c65ec)){_0x5409ce[_0xcacb('0xa')]=0x2;_0x5409ce[_0xcacb('0xb')]=[];_0x5409ce[_0xcacb('0xc')]=_[_0xcacb('0xd')](_0x2443ae,{'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')]});_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':util[_0xcacb('0x11')](_0xcacb('0x12'),_0xb559e7[_0x1c65ec][0x0]['type']),'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});if(_0xb559e7[_0x1c65ec][0x0]['type']===_0xcacb('0x15')){_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':'Set','appdata':_0xcacb('0x16')+_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')],'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce['priority']++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});}else if(_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')]===_0xcacb('0x17')){if(_0x5409ce[_0xcacb('0xc')]){_0x5409ce[_0xcacb('0xb')]['push']({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':'Set','appdata':_0xcacb('0x18')+(_0x5409ce['extension'][_0xcacb('0x19')]?_0xcacb('0x1a')+_0x5409ce['extension']['cutdigits']+'}':_0xcacb('0x1b')),'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});}_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':_0xcacb('0x16')+_0xb559e7[_0x1c65ec][0x0]['VoiceExtensionId'],'context':_0xb559e7[_0x1c65ec][0x0]['context'],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});var _0x3d1ae0=_0x5409ce[_0xcacb('0xa')]++;_0x5409ce[_0xcacb('0xb')]['push']({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x1c'),'appdata':_0xcacb('0x1d')+(_0x3d1ae0+0x2)+_0xcacb('0x1e')+(_0x3d1ae0+0x1)+')','context':_0xb559e7[_0x1c65ec][0x0]['context'],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x3d1ae0,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});if(_0x5409ce[_0xcacb('0xc')]){_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':_0x5409ce[_0xcacb('0xc')]['cutdigits']?_0xcacb('0x1f')+_0x5409ce[_0xcacb('0xc')][_0xcacb('0x19')]+'}':_0xcacb('0x20'),'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});}_0x5409ce['extensions'][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':'outboundrouteid='+_0xb559e7[_0x1c65ec][0x0]['VoiceExtensionId'],'context':_0xb559e7[_0x1c65ec][0x0]['context'],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0]['VoiceExtensionId']});if(_0x5409ce['extension']&&_0x5409ce[_0xcacb('0xc')]['hasOwnProperty'](_0xcacb('0x21'))&&_0x5409ce[_0xcacb('0xc')]['recordingFormat']!=='none'){_0x5409ce[_0xcacb('0xb')]['push']({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':_0xcacb('0x22'),'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0]['exten'],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});_0x5409ce[_0xcacb('0xb')]['push']({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x5409ce['extension'][_0xcacb('0x21')]||_0xcacb('0x23'),'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});}}_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0]['type'],'app':_0xcacb('0x10'),'appdata':_0xcacb('0x24'),'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});_0x5409ce[_0xcacb('0xb')]['push']({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0xb559e7[_0x1c65ec][0x0]['context'],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0]['VoiceExtensionId']});_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':'MONITOR_OPTIONS=ab','context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'priority':_0x5409ce[_0xcacb('0xa')]++,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});for(var _0x18f718=0x0,_0x5ef138=0x0;_0x18f718<_0xb559e7[_0x1c65ec][_0xcacb('0x25')];_0x18f718+=0x1,_0x5ef138=0x0){var _0x3e8afc=_0xb559e7[_0x1c65ec][_0x18f718];if(_0x3e8afc['type']){_0x3e8afc[_0xcacb('0xf')]=_0x3e8afc[_0xcacb('0xf')][_0xcacb('0x26')]();}var _0x1b77c3=[];var _0x336057=[];delete _0x3e8afc['id'];delete _0x3e8afc[_0xcacb('0x27')];delete _0x3e8afc['updatedAt'];var _0x4e7042=_0x3e8afc['interval']!==_0xcacb('0x28')?[_0x3e8afc['interval']]:_0x3e8afc[_0xcacb('0x5')]?_[_0xcacb('0x7')](_['filter'](_0x5409ce[_0xcacb('0x29')],{'IntervalId':_0x3e8afc['IntervalId']}),_0xcacb('0x2a')):[];if(_0x3e8afc[_0xcacb('0x2b')](_0xcacb('0x2c'))){if(_0x3e8afc['tag']&&_0x3e8afc[_0xcacb('0x2c')]!=='--'){_0x1b77c3[_0xcacb('0xe')]({'type':_0x3e8afc[_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':_0xcacb('0x2d')+_0x3e8afc[_0xcacb('0x2c')],'context':_0x3e8afc[_0xcacb('0x13')],'exten':_0x3e8afc[_0xcacb('0x8')],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce[_0xcacb('0xa')]+_0x5ef138++,'VoiceExtensionId':_0x3e8afc['VoiceExtensionId']});}}if(_0x3e8afc[_0xcacb('0xf')]===_0xcacb('0x17')&&_0x3e8afc[_0xcacb('0x2b')](_0xcacb('0x2e'))){if(_0x3e8afc['callerID']){_0x1b77c3[_0xcacb('0xe')]({'type':_0x3e8afc[_0xcacb('0xf')],'app':_0xcacb('0x1c'),'appdata':_0xcacb('0x2f')+_0x3e8afc[_0xcacb('0x2e')]+')','context':_0x3e8afc['context'],'exten':_0x3e8afc[_0xcacb('0x8')],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce[_0xcacb('0xa')]+_0x5ef138++,'VoiceExtensionId':_0x3e8afc['VoiceExtensionId']});}else{_0x1b77c3[_0xcacb('0xe')]({'type':_0x3e8afc['type'],'app':_0xcacb('0x1c'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x3e8afc[_0xcacb('0x13')],'exten':_0x3e8afc[_0xcacb('0x8')],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce['priority']+_0x5ef138++,'VoiceExtensionId':_0x3e8afc[_0xcacb('0x14')]});}}if(_0x3e8afc[_0xcacb('0x2b')](_0xcacb('0x30'))){if(_0x14412e[_0xcacb('0x31')](_0x3e8afc[_0xcacb('0x32')][_0xcacb('0x26')]())>=0x0&&_0x3e8afc[_0xcacb('0x33')]!==_0xcacb('0x34')){if(_0x3e8afc[_0xcacb('0x30')]){_0x1b77c3[_0xcacb('0xe')]({'type':_0x3e8afc['type'],'app':_0xcacb('0x1c'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x3e8afc[_0xcacb('0x13')],'exten':_0x3e8afc[_0xcacb('0x8')],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce['priority']+_0x5ef138++,'VoiceExtensionId':_0x3e8afc[_0xcacb('0x14')]});_0x1b77c3[_0xcacb('0xe')]({'type':_0x3e8afc['type'],'app':_0xcacb('0x10'),'appdata':_0xcacb('0x35'),'context':_0x3e8afc['context'],'exten':_0x3e8afc['exten'],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce['priority']+_0x5ef138++,'VoiceExtensionId':_0x3e8afc[_0xcacb('0x14')]});}else{_0x1b77c3['push']({'type':_0x3e8afc['type'],'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x3e8afc[_0xcacb('0x13')],'exten':_0x3e8afc[_0xcacb('0x8')],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce[_0xcacb('0xa')]+_0x5ef138++,'VoiceExtensionId':_0x3e8afc[_0xcacb('0x14')]});_0x1b77c3[_0xcacb('0xe')]({'type':_0x3e8afc[_0xcacb('0xf')],'app':_0xcacb('0x10'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x3e8afc[_0xcacb('0x13')],'exten':_0x3e8afc[_0xcacb('0x8')],'priority':_0x4e7042[_0xcacb('0x25')]+_0x5409ce[_0xcacb('0xa')]+_0x5ef138++,'VoiceExtensionId':_0x3e8afc[_0xcacb('0x14')]});}}}for(var _0x119e32=0x0;_0x119e32<_0x4e7042['length'];_0x119e32+=0x1){var _0x142b9a=_0x5409ce[_0xcacb('0xa')]+_0x4e7042['length'];var _0x2e46fc=_0x119e32===_0x4e7042['length']-0x1?_0x5409ce[_0xcacb('0xa')]+_0x1b77c3[_0xcacb('0x25')]+_0x336057[_0xcacb('0x25')]+0x2:_0x5409ce[_0xcacb('0xa')]+_0x119e32+0x1;_0x1b77c3[_0xcacb('0x36')](_0x119e32,0x0,{'type':_0x3e8afc[_0xcacb('0xf')],'app':_0xcacb('0x37'),'appdata':_0x4e7042[_0x119e32]+'?'+_0x3e8afc[_0xcacb('0x13')]+',${EXTEN},'+_0x142b9a+':'+_0x3e8afc[_0xcacb('0x13')]+_0xcacb('0x38')+_0x2e46fc,'exten':_0x3e8afc[_0xcacb('0x8')],'context':_0x3e8afc[_0xcacb('0x13')],'priority':_0x5409ce[_0xcacb('0xa')]+_0x119e32,'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});}_0x3e8afc[_0xcacb('0xa')]=_0x1b77c3[_0xcacb('0x25')]?_['last'](_0x1b77c3)[_0xcacb('0xa')]+0x1:_0x5409ce['priority'];_0x5409ce[_0xcacb('0xa')]=(_0x336057['length']?_['last'](_0x336057)[_0xcacb('0xa')]:_0x3e8afc['priority'])+0x1;_0x5409ce[_0xcacb('0xb')]=_[_0xcacb('0x39')](_0x5409ce[_0xcacb('0xb')],_0x1b77c3,[_0x3e8afc],_0x336057);}_0x5409ce[_0xcacb('0xb')][_0xcacb('0xe')]({'type':_0xb559e7[_0x1c65ec][0x0]['type'],'app':'Hangup','exten':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x8')],'context':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x13')],'priority':_0x5409ce['priority'],'VoiceExtensionId':_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]});_0x39c99d['push'](_0xb559e7[_0x1c65ec][0x0][_0xcacb('0x14')]);_0x42ec42=_[_0xcacb('0x39')](_0x42ec42,_0x5409ce['extensions']);}}return _0x377012[_0xcacb('0x3a')](function(_0x516ea7){return _0x377012['models'][_0xcacb('0x4')][_0xcacb('0x3b')]({'where':{'VoiceExtensionId':{'$in':_0x39c99d}},'transaction':_0x516ea7})['then'](function(_0x5c652d){return _0x377012[_0xcacb('0x1')][_0xcacb('0x4')][_0xcacb('0x3c')](_['sortBy'](_0x42ec42,_0xcacb('0xa')),{'transaction':_0x516ea7});});});})[_0xcacb('0x3d')](function(_0x2dc9c4){console[_0xcacb('0x3e')](_0x2dc9c4);});}exports['rewrite']=rewrite;
\ No newline at end of file
index c327c79..e34d9ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd98e=['redis','defaults','localhost','socket.io-emitter','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','error','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','from','cm_contacts','where','ListId\x20=\x20?','toString','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','always','query','VoiceQueueId','sequelize','all','BlackLists','Campaign','get','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','squel','ioredis','../../../mysqldb','../../../config/environment','api'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd98e,0x19f));var _0xed98=function(_0x137d36,_0x449daf){_0x137d36=_0x137d36-0x0;var _0x19ed47=_0xd98e[_0x137d36];return _0x19ed47;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0xed98('0x0'));var Papa=require('papaparse');var Redis=require(_0xed98('0x1'));var db=require(_0xed98('0x2'))['db'];var config=require(_0xed98('0x3'));var logger=require('../../../config/logger')(_0xed98('0x4'));config[_0xed98('0x5')]=_[_0xed98('0x6')](config['redis'],{'host':_0xed98('0x7'),'port':0x18eb});var socket=require(_0xed98('0x8'))(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')['register'](socket);try{if(!process[_0xed98('0x9')][0x2]||process[_0xed98('0x9')][0x2]===_0xed98('0xa')||process[_0xed98('0x9')][0x2]===_0xed98('0xb')){throw new Error(_0xed98('0xc'));}var FILEPATH=process['argv'][0x2];if(!process['argv'][0x3]||process['argv'][0x3]==='undefined'||process['argv'][0x3]===_0xed98('0xb')||!process[_0xed98('0x9')][0x4]||process[_0xed98('0x9')][0x4]==='undefined'||process[_0xed98('0x9')][0x4]===_0xed98('0xb')){throw new Error(_0xed98('0xd'));}var FIELDS=_[_0xed98('0xe')](process[_0xed98('0x9')][0x3][_0xed98('0xf')](','),process[_0xed98('0x9')][0x4][_0xed98('0xf')](','));if(!process[_0xed98('0x9')][0x5]||process[_0xed98('0x9')][0x5]===_0xed98('0xa')||process[_0xed98('0x9')][0x5]===_0xed98('0xb')){throw new Error(_0xed98('0x10'));}var LISTID=process[_0xed98('0x9')][0x5];var COMPANYID=process[_0xed98('0x9')][0x6]&&process[_0xed98('0x9')][0x6]!==_0xed98('0xa')&&process[_0xed98('0x9')][0x6]!==_0xed98('0xb')?process['argv'][0x6]:null;var DUPLICATES=process[_0xed98('0x9')][0x7]&&process[_0xed98('0x9')][0x7]!==_0xed98('0xa')&&process[_0xed98('0x9')][0x7]!==_0xed98('0xb')?process[_0xed98('0x9')][0x7]:null;if(!process['argv'][0x8]||process[_0xed98('0x9')][0x8]===_0xed98('0xa')||process[_0xed98('0x9')][0x8]===_0xed98('0xb')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0xed98('0x9')][0x8];}catch(_0x49d663){logger[_0xed98('0x11')](_0x49d663);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x4dca6b,_0x1dba7a,_0xe35ba0,_0x401056){var _0x9e99c7={'message':_0x1dba7a};_0x9e99c7[_0x4dca6b]=!![];if(_0xe35ba0){_0x9e99c7['contact']=_0xe35ba0;}if(_0x401056){_0x9e99c7[_0xed98('0x12')]=_0x401056;}return _0x9e99c7;}function isEmail(_0x591336){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xed98('0x13')](_0x591336);}function checkRow(_0x2b2be0,_0x47116b,_0x56a73b){return new BPromise(function(_0x3dae85,_0x2b0f9d){if(_[_0xed98('0x14')](_0x2b2be0)){return _0x2b0f9d(handleCheckRowError(_0xed98('0x11'),_0xed98('0x15'),null,_0x56a73b));}if(_0x2b2be0[_0xed98('0x16')]&&_0x2b2be0[_0xed98('0x16')][_0xed98('0x17')]){var _0x55d8a5=_['map'](_0x2b2be0['errors'],'message')[_0xed98('0x18')](';');return _0x2b0f9d(handleCheckRowError(_0xed98('0x11'),_0x55d8a5,null,_0x56a73b));}var _0x427a08={};for(var _0x3383a6 in FIELDS){if(FIELDS[_0xed98('0x19')](_0x3383a6)&&FIELDS[_0x3383a6]){_0x427a08[_0x3383a6]=_0x2b2be0[_0xed98('0x1a')][0x0][FIELDS[_0x3383a6]]||_0x2b2be0[_0xed98('0x1a')][0x0]['\ufeff'+FIELDS[_0x3383a6]];}}if(!_0x427a08['firstName']){return _0x2b0f9d(handleCheckRowError(_0xed98('0x11'),_0xed98('0x1b'),null,_0x56a73b));}if(!_0x427a08[_0xed98('0x1c')]){return _0x2b0f9d(handleCheckRowError(_0xed98('0x11'),_0xed98('0x1d'),null,_0x56a73b));}if(_0x427a08['birthDate']){var _0x19d41d=moment(_0x427a08['birthDate'],_0xed98('0x1e'));if(!_0x19d41d[_0xed98('0x1f')]()){return _0x2b0f9d(handleCheckRowError('error','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x56a73b));}}if(_0x427a08[_0xed98('0x20')]){if(!isEmail(_0x427a08[_0xed98('0x20')])){return _0x2b0f9d(handleCheckRowError(_0xed98('0x11'),_0xed98('0x21'),null,_0x56a73b));}}_0x427a08[_0xed98('0x22')]=LISTID;_0x427a08['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xed98('0x17')]&&_0x47116b){var _0x32f4db={};for(var _0x53b0c4=0x0,_0x38220d=DUPLICATES[_0xed98('0x17')];_0x53b0c4<_0x38220d;_0x53b0c4+=0x1){_0x32f4db[DUPLICATES[_0x53b0c4]]=_0x427a08[DUPLICATES[_0x53b0c4]];}var _0x28f8c9=_[_0xed98('0x23')](_0x47116b,_0x32f4db);if(_0x28f8c9){return _0x2b0f9d(handleCheckRowError(_0xed98('0x24'),_0xed98('0x25'),_0x28f8c9,_0x56a73b));}}return db[_0xed98('0x26')][_0xed98('0x27')](_0x427a08,{'raw':!![],'hooks':![],'fields':_[_0xed98('0x28')](_0x427a08)})[_0xed98('0x29')](function(_0x506b72){if(DUPLICATES&&DUPLICATES[_0xed98('0x17')]&&_0x47116b){_0x47116b[_0xed98('0x2a')](_['pick'](_0x427a08,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x506b72['id'];return _0x3dae85();})[_0xed98('0x2b')](function(_0x5187f7){return _0x2b0f9d(handleCheckRowError(_0xed98('0x11'),_0xed98('0x2c')+(_0x5187f7[_0xed98('0x2d')]||JSON[_0xed98('0x2e')](_0x5187f7)),null,_0x56a73b));});});}function checkHopper(){function _0x43f3df(){return function(_0x39880b){logger[_0xed98('0x11')](_0xed98('0x2f'),_0xed98('0x30'),util[_0xed98('0x31')](_0x39880b,{'showHidden':![],'depth':null}));};}var _0x654607=function(_0x6c8e47,_0x3ea552){var _0x3f215b=squel[_0xed98('0x32')]()[_0xed98('0x33')](_0xed98('0x34'))[_0xed98('0x35')]([_0xed98('0x1c'),'scheduledAt',_0xed98('0x36'),_0xed98('0x22'),_0x3ea552,_0xed98('0x37'),_0xed98('0x38')],squel[_0xed98('0x39')]()[_0xed98('0x3a')](_0xed98('0x1c'),_0xed98('0x1c'))[_0xed98('0x3a')](_0xed98('0x3b'),_0xed98('0x3c'))[_0xed98('0x3a')]('id',_0xed98('0x36'))[_0xed98('0x3a')](LISTID['toString'](),_0xed98('0x22'))[_0xed98('0x3a')](_0x6c8e47['id']['toString'](),_0x3ea552)[_0xed98('0x3a')]('NOW()',_0xed98('0x37'))[_0xed98('0x3a')](_0xed98('0x3b'),'updatedAt')[_0xed98('0x3d')](_0xed98('0x3e'))[_0xed98('0x3f')]('deletedAt\x20IS\x20NULL')[_0xed98('0x3f')](_0xed98('0x40'),LISTID[_0xed98('0x41')]())[_0xed98('0x3f')](_0xed98('0x42'))[_0xed98('0x3f')]('phone\x20NOT\x20IN\x20(?)',squel[_0xed98('0x39')]()[_0xed98('0x3a')](_0xed98('0x1c'))[_0xed98('0x3d')]('cm_hopper')[_0xed98('0x3f')](_0x3ea552+_0xed98('0x43'),_0x6c8e47['id'][_0xed98('0x41')]())))[_0xed98('0x41')]();return _0x3f215b;};var _0x476371=function(_0x43af2a,_0x55b4be){var _0x3fb0e2=squel[_0xed98('0x32')]()[_0xed98('0x33')]('cm_hopper')[_0xed98('0x35')](['phone',_0xed98('0x3c'),'ContactId',_0xed98('0x22'),_0x55b4be,_0xed98('0x37'),_0xed98('0x38')],squel[_0xed98('0x39')]()[_0xed98('0x3a')](_0xed98('0x1c'),_0xed98('0x1c'))[_0xed98('0x3a')](_0xed98('0x3b'),'scheduledAt')['field']('id','ContactId')[_0xed98('0x3a')](LISTID[_0xed98('0x41')](),'ListId')[_0xed98('0x3a')](_0x43af2a['id'][_0xed98('0x41')](),_0x55b4be)['field'](_0xed98('0x3b'),_0xed98('0x37'))['field'](_0xed98('0x3b'),_0xed98('0x38'))['from']('cm_contacts')['where'](_0xed98('0x44'))[_0xed98('0x3f')](_0xed98('0x40'),LISTID[_0xed98('0x41')]())['where'](_0xed98('0x45'),squel[_0xed98('0x46')](hopperContacts))[_0xed98('0x3f')]('phone\x20IS\x20NOT\x20NULL')['where'](_0xed98('0x47'),squel[_0xed98('0x39')]()[_0xed98('0x3a')](_0xed98('0x48'))[_0xed98('0x3d')]('cm_hopper_final')[_0xed98('0x3f')](_0x55b4be+_0xed98('0x43'),_0x43af2a['id'][_0xed98('0x41')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xed98('0x39')]()['field'](_0xed98('0x1c'))[_0xed98('0x3d')](_0xed98('0x34'))[_0xed98('0x3f')](_0x55b4be+'\x20=\x20?',_0x43af2a['id'][_0xed98('0x41')]())))['toString']();return _0x3fb0e2;};function _0x51e679(_0x561547,_0x5df4c9){var _0x3ba71e=squel[_0xed98('0x32')]()['into']('cm_hopper')[_0xed98('0x35')]([_0xed98('0x1c'),_0xed98('0x3c'),_0xed98('0x36'),'ListId',_0x5df4c9,_0xed98('0x37'),_0xed98('0x38')],squel[_0xed98('0x39')]()[_0xed98('0x3a')](_0xed98('0x1c'),_0xed98('0x1c'))[_0xed98('0x3a')](_0xed98('0x3b'),_0xed98('0x3c'))[_0xed98('0x3a')]('id',_0xed98('0x36'))[_0xed98('0x3a')](LISTID[_0xed98('0x41')](),_0xed98('0x22'))['field'](_0x561547['id'][_0xed98('0x41')](),_0x5df4c9)['field'](_0xed98('0x3b'),_0xed98('0x37'))[_0xed98('0x3a')](_0xed98('0x3b'),_0xed98('0x38'))[_0xed98('0x3d')](_0xed98('0x3e'))[_0xed98('0x3f')](_0xed98('0x44'))[_0xed98('0x3f')](_0xed98('0x40'),LISTID['toString']())[_0xed98('0x3f')](_0xed98('0x45'),squel[_0xed98('0x46')](hopperContacts))[_0xed98('0x3f')](_0xed98('0x42')))[_0xed98('0x41')]();return _0x3ba71e;}function _0x1be6d7(_0x5dc765,_0x31012a){var _0x1a4b62=squel[_0xed98('0x32')]()[_0xed98('0x33')](_0xed98('0x49'))[_0xed98('0x35')]([_0xed98('0x1c'),_0xed98('0x36'),_0xed98('0x22'),_0x31012a,_0xed98('0x37'),_0xed98('0x38')],squel[_0xed98('0x39')]()['field'](_0xed98('0x1c'),_0xed98('0x1c'))[_0xed98('0x3a')]('id',_0xed98('0x36'))[_0xed98('0x3a')](LISTID[_0xed98('0x41')](),_0xed98('0x22'))[_0xed98('0x3a')](_0x5dc765['id'][_0xed98('0x41')](),_0x31012a)[_0xed98('0x3a')]('NOW()',_0xed98('0x37'))['field'](_0xed98('0x3b'),_0xed98('0x38'))[_0xed98('0x3d')]('cm_contacts')[_0xed98('0x3f')]('deletedAt\x20IS\x20NULL')[_0xed98('0x3f')](_0xed98('0x40'),LISTID[_0xed98('0x41')]())[_0xed98('0x3f')](_0xed98('0x45'),squel[_0xed98('0x46')](hopperContacts))[_0xed98('0x3f')](_0xed98('0x42')))[_0xed98('0x41')]();return _0x1a4b62;}return db[_0xed98('0x4a')][_0xed98('0x4b')]({'where':{'type':_0xed98('0x4c')},'attributes':['id',_0xed98('0x4d')],'include':[{'model':db[_0xed98('0x4e')],'as':'Lists','where':{'id':LISTID}}]})[_0xed98('0x29')](function(_0x2b9117){var _0x480dff=[];if(_0x2b9117){var _0x1f003e;for(var _0x1d96ef=0x0,_0x3d41da;_0x1d96ef<_0x2b9117[_0xed98('0x17')];_0x1d96ef+=0x1){_0x3d41da=_0x2b9117[_0x1d96ef]['get']({'plain':!![]});switch(_0x3d41da['dialCheckDuplicateType']){case _0xed98('0x4f'):_0x480dff[_0xed98('0x2a')](db['sequelize'][_0xed98('0x50')](_0x476371(_0x3d41da,'VoiceQueueId'))['then'](function(){})[_0xed98('0x2b')](_0x43f3df()));break;case'onlyIfOpen':_0x480dff[_0xed98('0x2a')](db['sequelize'][_0xed98('0x50')](_0x654607(_0x3d41da,_0xed98('0x51')))[_0xed98('0x29')](function(){})[_0xed98('0x2b')](_0x43f3df()));break;default:_0x480dff['push'](db[_0xed98('0x52')][_0xed98('0x50')](_0x51e679(_0x3d41da,_0xed98('0x51')))[_0xed98('0x29')](function(){})[_0xed98('0x2b')](_0x43f3df()));}}}return _0x480dff;})[_0xed98('0x53')]()[_0xed98('0x29')](function(){return db[_0xed98('0x4a')]['findAll']({'where':{'type':_0xed98('0x4c')},'attributes':['id'],'include':[{'model':db[_0xed98('0x4e')],'as':_0xed98('0x54'),'where':{'id':LISTID}}]})[_0xed98('0x29')](function(_0x16f613){var _0x4ec341=[];if(_0x16f613){var _0xe5745e;for(var _0x50ced1=0x0,_0x1c692c;_0x50ced1<_0x16f613[_0xed98('0x17')];_0x50ced1+=0x1){_0x1c692c=_0x16f613[_0x50ced1]['get']({'plain':!![]});_0x4ec341['push'](db[_0xed98('0x52')][_0xed98('0x50')](_0x1be6d7(_0x1c692c,_0xed98('0x51')))['then'](function(){})['catch'](_0x43f3df()));}}return _0x4ec341;})[_0xed98('0x53')]();})[_0xed98('0x29')](function(){return db[_0xed98('0x55')][_0xed98('0x4b')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xed98('0x4e')],'as':'Lists','where':{'id':LISTID}}]})[_0xed98('0x29')](function(_0x4cae27){var _0x36d774=[];if(_0x4cae27){for(var _0x35e4dd=0x0,_0x17f205;_0x35e4dd<_0x4cae27[_0xed98('0x17')];_0x35e4dd+=0x1){_0x17f205=_0x4cae27[_0x35e4dd][_0xed98('0x56')]({'plain':!![]});switch(_0x17f205[_0xed98('0x4d')]){case _0xed98('0x4f'):_0x36d774[_0xed98('0x2a')](db['sequelize'][_0xed98('0x50')](_0x476371(_0x17f205,_0xed98('0x57')))['then'](function(){})[_0xed98('0x2b')](_0x43f3df()));break;case'onlyIfOpen':_0x36d774['push'](db[_0xed98('0x52')]['query'](_0x654607(_0x17f205,_0xed98('0x57')))[_0xed98('0x29')](function(){})[_0xed98('0x2b')](_0x43f3df()));break;default:_0x36d774[_0xed98('0x2a')](db[_0xed98('0x52')]['query'](_0x51e679(_0x17f205,_0xed98('0x57')))[_0xed98('0x29')](function(){})[_0xed98('0x2b')](_0x43f3df()));}}}return _0x36d774;})['all']();})[_0xed98('0x29')](function(){return db[_0xed98('0x55')][_0xed98('0x4b')]({'attributes':['id'],'include':[{'model':db[_0xed98('0x4e')],'as':_0xed98('0x54'),'where':{'id':LISTID}}]})[_0xed98('0x29')](function(_0x4fa4dd){var _0x2aa01a=[];if(_0x4fa4dd){for(var _0x48de58=0x0,_0x5aaba7;_0x48de58<_0x4fa4dd[_0xed98('0x17')];_0x48de58+=0x1){_0x5aaba7=_0x4fa4dd[_0x48de58][_0xed98('0x56')]({'plain':!![]});_0x2aa01a[_0xed98('0x2a')](db[_0xed98('0x52')][_0xed98('0x50')](_0x1be6d7(_0x5aaba7,'CampaignId'))[_0xed98('0x29')](function(){})[_0xed98('0x2b')](_0x43f3df()));}}return _0x2aa01a;})['all']();})[_0xed98('0x2b')](function(_0x1074d5){logger['error'](_0xed98('0x58'),_0xed98('0x59'),_0x1074d5[_0xed98('0x2d')]);});}var processPromises=function(_0x5f2e9a){return BPromise['all'](promises)[_0xed98('0x29')](function(_0xe2361d){})[_0xed98('0x2b')](function(_0x22f058){logger[_0xed98('0x11')]('Error\x20processing\x20rows\x20block:',JSON[_0xed98('0x2e')](_0x22f058));})[_0xed98('0x5a')](function(){socket[_0xed98('0x5b')](_0xed98('0x5c')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5f2e9a){return _0x5f2e9a[_0xed98('0x5d')]();}});};var endCsv=function(){return BPromise[_0xed98('0x5e')]()[_0xed98('0x29')](function(){if(hopperContacts){return checkHopper();}})[_0xed98('0x29')](function(){socket['emit'](_0xed98('0x5c')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xed98('0x5f')](FILEPATH);}catch(_0x574e8d){logger[_0xed98('0x11')](_0xed98('0x60'),JSON[_0xed98('0x2e')](_0x574e8d));}finally{process['exit'](0x0);}});};process['on'](_0xed98('0x61'),function(){logger[_0xed98('0x62')](_0xed98('0x63'));endCsv();});function main(){return BPromise[_0xed98('0x5e')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xed98('0xf')](',');return db[_0xed98('0x26')][_0xed98('0x4b')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xed98('0x29')](function(_0x488386){var _0x2215b9=fs[_0xed98('0x64')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xed98('0x65')](_0x2215b9,{'header':!![],'skipEmptyLines':!![],'step':function(_0x158d20,_0x518525){total+=0x1;var _0x2f64e7=total;promises[_0xed98('0x2a')](checkRow(_0x158d20,_0x488386,_0x2f64e7)[_0xed98('0x29')](function(){success+=0x1;})[_0xed98('0x2b')](function(_0x125719){if(_0x125719[_0xed98('0x11')]){errors+=0x1;delete _0x125719[_0xed98('0x11')];}else if(_0x125719['duplicate']){duplicates+=0x1;delete _0x125719[_0xed98('0x24')];}rows[_0xed98('0x2a')](_0x125719);}));if(total%0xc8===0x0){_0x518525[_0xed98('0x66')]();return processPromises(_0x518525);}},'complete':function(){return processPromises()[_0xed98('0x29')](function(){logger[_0xed98('0x62')](_0xed98('0x67'));endCsv();});},'error':function(_0x11c10b,_0x18fe5e){logger[_0xed98('0x62')]('CSV\x20parse\x20error',JSON['stringify'](_0x11c10b));endCsv();}});})[_0xed98('0x2b')](function(_0x38e729){logger[_0xed98('0x11')](_0xed98('0x68'),JSON[_0xed98('0x2e')](_0x38e729));});}main();
\ No newline at end of file
+var _0xd514=['select','field','NOW()','toString','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','insert','from','id\x20IN\x20?','phone\x20IS\x20NOT\x20NULL','calleridnum','\x20=\x20?','str','cm_hopper_black','findAll','dialCheckDuplicateType','CmList','Lists','sequelize','query','VoiceQueueId','then','onlyIfOpen','all','VoiceQueue','outbound','BlackLists','get','CampaignId','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','contact:csv_','resume','resolve','emit','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CmContact','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','test','isNil','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','Duplicate\x20Contact','create','keys','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd514,0xa0));var _0x4d51=function(_0x491593,_0x4fcf79){_0x491593=_0x491593-0x0;var _0x6209c6=_0xd514[_0x491593];return _0x6209c6;};'use strict';var BPromise=require('bluebird');var util=require(_0x4d51('0x0'));var _=require('lodash');var fs=require('fs');var squel=require(_0x4d51('0x1'));var Papa=require(_0x4d51('0x2'));var Redis=require(_0x4d51('0x3'));var db=require(_0x4d51('0x4'))['db'];var config=require(_0x4d51('0x5'));var logger=require(_0x4d51('0x6'))(_0x4d51('0x7'));config['redis']=_[_0x4d51('0x8')](config[_0x4d51('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x4d51('0xa'))(new Redis(config[_0x4d51('0x9')]));require(_0x4d51('0xb'))[_0x4d51('0xc')](socket);try{if(!process[_0x4d51('0xd')][0x2]||process[_0x4d51('0xd')][0x2]===_0x4d51('0xe')||process['argv'][0x2]===_0x4d51('0xf')){throw new Error(_0x4d51('0x10'));}var FILEPATH=process[_0x4d51('0xd')][0x2];if(!process[_0x4d51('0xd')][0x3]||process[_0x4d51('0xd')][0x3]==='undefined'||process[_0x4d51('0xd')][0x3]==='null'||!process['argv'][0x4]||process[_0x4d51('0xd')][0x4]==='undefined'||process[_0x4d51('0xd')][0x4]===_0x4d51('0xf')){throw new Error(_0x4d51('0x11'));}var FIELDS=_[_0x4d51('0x12')](process['argv'][0x3][_0x4d51('0x13')](','),process['argv'][0x4][_0x4d51('0x13')](','));if(!process[_0x4d51('0xd')][0x5]||process[_0x4d51('0xd')][0x5]===_0x4d51('0xe')||process[_0x4d51('0xd')][0x5]===_0x4d51('0xf')){throw new Error(_0x4d51('0x14'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x4d51('0xd')][0x6]&&process[_0x4d51('0xd')][0x6]!=='undefined'&&process['argv'][0x6]!=='null'?process[_0x4d51('0xd')][0x6]:null;var DUPLICATES=process[_0x4d51('0xd')][0x7]&&process['argv'][0x7]!==_0x4d51('0xe')&&process['argv'][0x7]!=='null'?process['argv'][0x7]:null;if(!process['argv'][0x8]||process[_0x4d51('0xd')][0x8]==='undefined'||process['argv'][0x8]===_0x4d51('0xf')){throw new Error(_0x4d51('0x15'));}var SOCKET_TIMESTAMP=process[_0x4d51('0xd')][0x8];}catch(_0x56d34f){logger['error'](_0x56d34f);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x14ca58,_0x4fe545,_0x23c3ce,_0x19f4a6){var _0x9d9b4f={'message':_0x4fe545};_0x9d9b4f[_0x14ca58]=!![];if(_0x23c3ce){_0x9d9b4f[_0x4d51('0x16')]=_0x23c3ce;}if(_0x19f4a6){_0x9d9b4f['index']=_0x19f4a6;}return _0x9d9b4f;}function isEmail(_0x4f3941){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x4d51('0x17')](_0x4f3941);}function checkRow(_0x1186f3,_0x1b998d,_0x3e3f11){return new BPromise(function(_0xbeed0b,_0x3f0084){if(_[_0x4d51('0x18')](_0x1186f3)){return _0x3f0084(handleCheckRowError(_0x4d51('0x19'),_0x4d51('0x1a'),null,_0x3e3f11));}if(_0x1186f3[_0x4d51('0x1b')]&&_0x1186f3['errors']['length']){var _0x1d27e6=_[_0x4d51('0x1c')](_0x1186f3[_0x4d51('0x1b')],_0x4d51('0x1d'))[_0x4d51('0x1e')](';');return _0x3f0084(handleCheckRowError('error',_0x1d27e6,null,_0x3e3f11));}var _0x5d5714={};for(var _0x32f410 in FIELDS){if(FIELDS[_0x4d51('0x1f')](_0x32f410)&&FIELDS[_0x32f410]){_0x5d5714[_0x32f410]=_0x1186f3[_0x4d51('0x20')][0x0][FIELDS[_0x32f410]]||_0x1186f3[_0x4d51('0x20')][0x0]['\ufeff'+FIELDS[_0x32f410]];}}if(!_0x5d5714['firstName']){return _0x3f0084(handleCheckRowError('error',_0x4d51('0x21'),null,_0x3e3f11));}if(!_0x5d5714[_0x4d51('0x22')]){return _0x3f0084(handleCheckRowError(_0x4d51('0x19'),_0x4d51('0x23'),null,_0x3e3f11));}if(_0x5d5714[_0x4d51('0x24')]){var _0x593336=moment(_0x5d5714[_0x4d51('0x24')],'YYYY-MM-DD');if(!_0x593336[_0x4d51('0x25')]()){return _0x3f0084(handleCheckRowError(_0x4d51('0x19'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x3e3f11));}}if(_0x5d5714[_0x4d51('0x26')]){if(!isEmail(_0x5d5714['email'])){return _0x3f0084(handleCheckRowError(_0x4d51('0x19'),_0x4d51('0x27'),null,_0x3e3f11));}}_0x5d5714[_0x4d51('0x28')]=LISTID;_0x5d5714[_0x4d51('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x1b998d){var _0x25216d={};for(var _0x3dad25=0x0,_0x87ef20=DUPLICATES[_0x4d51('0x2a')];_0x3dad25<_0x87ef20;_0x3dad25+=0x1){_0x25216d[DUPLICATES[_0x3dad25]]=_0x5d5714[DUPLICATES[_0x3dad25]];}var _0x7c40d6=_[_0x4d51('0x2b')](_0x1b998d,_0x25216d);if(_0x7c40d6){return _0x3f0084(handleCheckRowError('duplicate',_0x4d51('0x2c'),_0x7c40d6,_0x3e3f11));}}return db['CmContact'][_0x4d51('0x2d')](_0x5d5714,{'raw':!![],'hooks':![],'fields':_[_0x4d51('0x2e')](_0x5d5714)})['then'](function(_0x569ea1){if(DUPLICATES&&DUPLICATES['length']&&_0x1b998d){_0x1b998d[_0x4d51('0x2f')](_[_0x4d51('0x30')](_0x5d5714,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x569ea1['id'];return _0xbeed0b();})[_0x4d51('0x31')](function(_0x420fcf){return _0x3f0084(handleCheckRowError(_0x4d51('0x19'),_0x4d51('0x32')+(_0x420fcf[_0x4d51('0x1d')]||JSON[_0x4d51('0x33')](_0x420fcf)),null,_0x3e3f11));});});}function checkHopper(){function _0x4fa869(){return function(_0x2c4f88){logger[_0x4d51('0x19')]('cmContact',_0x4d51('0x34'),util['inspect'](_0x2c4f88,{'showHidden':![],'depth':null}));};}var _0x3755fb=function(_0xb1c45f,_0xc50dab){var _0x2edaa0=squel['insert']()[_0x4d51('0x35')](_0x4d51('0x36'))[_0x4d51('0x37')](['phone',_0x4d51('0x38'),_0x4d51('0x39'),_0x4d51('0x28'),_0xc50dab,_0x4d51('0x3a'),_0x4d51('0x3b')],squel[_0x4d51('0x3c')]()[_0x4d51('0x3d')](_0x4d51('0x22'),_0x4d51('0x22'))[_0x4d51('0x3d')](_0x4d51('0x3e'),'scheduledAt')[_0x4d51('0x3d')]('id','ContactId')[_0x4d51('0x3d')](LISTID[_0x4d51('0x3f')](),'ListId')[_0x4d51('0x3d')](_0xb1c45f['id']['toString'](),_0xc50dab)['field'](_0x4d51('0x3e'),'createdAt')[_0x4d51('0x3d')](_0x4d51('0x3e'),'updatedAt')['from'](_0x4d51('0x40'))[_0x4d51('0x41')](_0x4d51('0x42'))[_0x4d51('0x41')](_0x4d51('0x43'),LISTID[_0x4d51('0x3f')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x4d51('0x41')](_0x4d51('0x44'),squel[_0x4d51('0x3c')]()['field']('phone')['from'](_0x4d51('0x36'))['where'](_0xc50dab+'\x20=\x20?',_0xb1c45f['id']['toString']())))[_0x4d51('0x3f')]();return _0x2edaa0;};var _0x1f16d8=function(_0x111a0b,_0x172682){var _0x2f8f59=squel[_0x4d51('0x45')]()[_0x4d51('0x35')](_0x4d51('0x36'))[_0x4d51('0x37')]([_0x4d51('0x22'),_0x4d51('0x38'),_0x4d51('0x39'),_0x4d51('0x28'),_0x172682,_0x4d51('0x3a'),'updatedAt'],squel['select']()[_0x4d51('0x3d')](_0x4d51('0x22'),'phone')[_0x4d51('0x3d')](_0x4d51('0x3e'),'scheduledAt')[_0x4d51('0x3d')]('id',_0x4d51('0x39'))[_0x4d51('0x3d')](LISTID[_0x4d51('0x3f')](),'ListId')[_0x4d51('0x3d')](_0x111a0b['id'][_0x4d51('0x3f')](),_0x172682)[_0x4d51('0x3d')]('NOW()','createdAt')[_0x4d51('0x3d')]('NOW()',_0x4d51('0x3b'))[_0x4d51('0x46')]('cm_contacts')[_0x4d51('0x41')](_0x4d51('0x42'))[_0x4d51('0x41')](_0x4d51('0x43'),LISTID[_0x4d51('0x3f')]())['where'](_0x4d51('0x47'),squel['str'](hopperContacts))[_0x4d51('0x41')](_0x4d51('0x48'))[_0x4d51('0x41')](_0x4d51('0x44'),squel[_0x4d51('0x3c')]()[_0x4d51('0x3d')](_0x4d51('0x49'))['from']('cm_hopper_final')[_0x4d51('0x41')](_0x172682+_0x4d51('0x4a'),_0x111a0b['id'][_0x4d51('0x3f')]()))[_0x4d51('0x41')](_0x4d51('0x44'),squel[_0x4d51('0x3c')]()[_0x4d51('0x3d')](_0x4d51('0x22'))['from'](_0x4d51('0x36'))['where'](_0x172682+_0x4d51('0x4a'),_0x111a0b['id'][_0x4d51('0x3f')]())))['toString']();return _0x2f8f59;};function _0x3c0a17(_0x5c33c1,_0x2b3f4a){var _0x3165e9=squel[_0x4d51('0x45')]()[_0x4d51('0x35')](_0x4d51('0x36'))['fromQuery']([_0x4d51('0x22'),'scheduledAt',_0x4d51('0x39'),_0x4d51('0x28'),_0x2b3f4a,_0x4d51('0x3a'),'updatedAt'],squel['select']()[_0x4d51('0x3d')](_0x4d51('0x22'),'phone')[_0x4d51('0x3d')](_0x4d51('0x3e'),_0x4d51('0x38'))['field']('id',_0x4d51('0x39'))[_0x4d51('0x3d')](LISTID[_0x4d51('0x3f')](),_0x4d51('0x28'))[_0x4d51('0x3d')](_0x5c33c1['id']['toString'](),_0x2b3f4a)[_0x4d51('0x3d')]('NOW()',_0x4d51('0x3a'))[_0x4d51('0x3d')](_0x4d51('0x3e'),'updatedAt')['from'](_0x4d51('0x40'))[_0x4d51('0x41')](_0x4d51('0x42'))[_0x4d51('0x41')](_0x4d51('0x43'),LISTID[_0x4d51('0x3f')]())[_0x4d51('0x41')]('id\x20IN\x20?',squel[_0x4d51('0x4b')](hopperContacts))[_0x4d51('0x41')](_0x4d51('0x48')))[_0x4d51('0x3f')]();return _0x3165e9;}function _0x51d7d3(_0x5a48e6,_0x5ab229){var _0x3a9a69=squel[_0x4d51('0x45')]()[_0x4d51('0x35')](_0x4d51('0x4c'))[_0x4d51('0x37')](['phone',_0x4d51('0x39'),_0x4d51('0x28'),_0x5ab229,_0x4d51('0x3a'),'updatedAt'],squel[_0x4d51('0x3c')]()[_0x4d51('0x3d')](_0x4d51('0x22'),'phone')[_0x4d51('0x3d')]('id',_0x4d51('0x39'))[_0x4d51('0x3d')](LISTID[_0x4d51('0x3f')](),_0x4d51('0x28'))[_0x4d51('0x3d')](_0x5a48e6['id'][_0x4d51('0x3f')](),_0x5ab229)[_0x4d51('0x3d')](_0x4d51('0x3e'),'createdAt')[_0x4d51('0x3d')](_0x4d51('0x3e'),_0x4d51('0x3b'))[_0x4d51('0x46')](_0x4d51('0x40'))[_0x4d51('0x41')](_0x4d51('0x42'))[_0x4d51('0x41')]('ListId\x20=\x20?',LISTID['toString']())['where']('id\x20IN\x20?',squel[_0x4d51('0x4b')](hopperContacts))[_0x4d51('0x41')](_0x4d51('0x48')))[_0x4d51('0x3f')]();return _0x3a9a69;}return db['VoiceQueue'][_0x4d51('0x4d')]({'where':{'type':'outbound'},'attributes':['id',_0x4d51('0x4e')],'include':[{'model':db[_0x4d51('0x4f')],'as':_0x4d51('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x411253){var _0x13db34=[];if(_0x411253){var _0x4a8a8a;for(var _0x2ec491=0x0,_0x9bfc60;_0x2ec491<_0x411253[_0x4d51('0x2a')];_0x2ec491+=0x1){_0x9bfc60=_0x411253[_0x2ec491]['get']({'plain':!![]});switch(_0x9bfc60[_0x4d51('0x4e')]){case'always':_0x13db34[_0x4d51('0x2f')](db[_0x4d51('0x51')][_0x4d51('0x52')](_0x1f16d8(_0x9bfc60,_0x4d51('0x53')))[_0x4d51('0x54')](function(){})['catch'](_0x4fa869()));break;case _0x4d51('0x55'):_0x13db34[_0x4d51('0x2f')](db['sequelize'][_0x4d51('0x52')](_0x3755fb(_0x9bfc60,'VoiceQueueId'))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));break;default:_0x13db34[_0x4d51('0x2f')](db[_0x4d51('0x51')][_0x4d51('0x52')](_0x3c0a17(_0x9bfc60,_0x4d51('0x53')))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));}}}return _0x13db34;})[_0x4d51('0x56')]()[_0x4d51('0x54')](function(){return db[_0x4d51('0x57')][_0x4d51('0x4d')]({'where':{'type':_0x4d51('0x58')},'attributes':['id'],'include':[{'model':db[_0x4d51('0x4f')],'as':_0x4d51('0x59'),'where':{'id':LISTID}}]})[_0x4d51('0x54')](function(_0x38ab97){var _0x41bd86=[];if(_0x38ab97){var _0x593ddb;for(var _0x5edc6a=0x0,_0x5538bb;_0x5edc6a<_0x38ab97[_0x4d51('0x2a')];_0x5edc6a+=0x1){_0x5538bb=_0x38ab97[_0x5edc6a]['get']({'plain':!![]});_0x41bd86[_0x4d51('0x2f')](db['sequelize'][_0x4d51('0x52')](_0x51d7d3(_0x5538bb,_0x4d51('0x53')))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));}}return _0x41bd86;})[_0x4d51('0x56')]();})['then'](function(){return db['Campaign']['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x4d51('0x54')](function(_0x9c5049){var _0x2e9f72=[];if(_0x9c5049){for(var _0x3da1d8=0x0,_0x192604;_0x3da1d8<_0x9c5049[_0x4d51('0x2a')];_0x3da1d8+=0x1){_0x192604=_0x9c5049[_0x3da1d8][_0x4d51('0x5a')]({'plain':!![]});switch(_0x192604[_0x4d51('0x4e')]){case'always':_0x2e9f72[_0x4d51('0x2f')](db['sequelize'][_0x4d51('0x52')](_0x1f16d8(_0x192604,_0x4d51('0x5b')))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));break;case _0x4d51('0x55'):_0x2e9f72['push'](db[_0x4d51('0x51')]['query'](_0x3755fb(_0x192604,'CampaignId'))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));break;default:_0x2e9f72[_0x4d51('0x2f')](db[_0x4d51('0x51')][_0x4d51('0x52')](_0x3c0a17(_0x192604,_0x4d51('0x5b')))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));}}}return _0x2e9f72;})['all']();})['then'](function(){return db['Campaign'][_0x4d51('0x4d')]({'attributes':['id'],'include':[{'model':db[_0x4d51('0x4f')],'as':_0x4d51('0x59'),'where':{'id':LISTID}}]})[_0x4d51('0x54')](function(_0x45f5e2){var _0xb66a59=[];if(_0x45f5e2){for(var _0x5198f2=0x0,_0x3f5fb9;_0x5198f2<_0x45f5e2[_0x4d51('0x2a')];_0x5198f2+=0x1){_0x3f5fb9=_0x45f5e2[_0x5198f2][_0x4d51('0x5a')]({'plain':!![]});_0xb66a59[_0x4d51('0x2f')](db[_0x4d51('0x51')][_0x4d51('0x52')](_0x51d7d3(_0x3f5fb9,_0x4d51('0x5b')))[_0x4d51('0x54')](function(){})[_0x4d51('0x31')](_0x4fa869()));}}return _0xb66a59;})[_0x4d51('0x56')]();})[_0x4d51('0x31')](function(_0x4d521f){logger[_0x4d51('0x19')](_0x4d51('0x5c'),'generalCheckHopper',_0x4d521f['message']);});}var processPromises=function(_0x2ea922){return BPromise[_0x4d51('0x56')](promises)[_0x4d51('0x54')](function(_0x298eb){})[_0x4d51('0x31')](function(_0x3e4159){logger[_0x4d51('0x19')](_0x4d51('0x5d'),JSON[_0x4d51('0x33')](_0x3e4159));})['finally'](function(){socket['emit'](_0x4d51('0x5e')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2ea922){return _0x2ea922[_0x4d51('0x5f')]();}});};var endCsv=function(){return BPromise[_0x4d51('0x60')]()[_0x4d51('0x54')](function(){if(hopperContacts){return checkHopper();}})[_0x4d51('0x54')](function(){socket[_0x4d51('0x61')](_0x4d51('0x5e')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x1a07d2){logger[_0x4d51('0x19')](_0x4d51('0x62'),JSON[_0x4d51('0x33')](_0x1a07d2));}finally{process[_0x4d51('0x63')](0x0);}});};process['on'](_0x4d51('0x64'),function(){logger[_0x4d51('0x65')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0x4d51('0x60')]()[_0x4d51('0x54')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x4d51('0x13')](',');return db[_0x4d51('0x66')][_0x4d51('0x4d')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x4d51('0x54')](function(_0x14de9f){var _0x4ebb09=fs[_0x4d51('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x4d51('0x68')](_0x4ebb09,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5f502d,_0x22c59c){total+=0x1;var _0x10a61a=total;promises[_0x4d51('0x2f')](checkRow(_0x5f502d,_0x14de9f,_0x10a61a)['then'](function(){success+=0x1;})[_0x4d51('0x31')](function(_0x194f86){if(_0x194f86[_0x4d51('0x19')]){errors+=0x1;delete _0x194f86[_0x4d51('0x19')];}else if(_0x194f86[_0x4d51('0x69')]){duplicates+=0x1;delete _0x194f86['duplicate'];}rows[_0x4d51('0x2f')](_0x194f86);}));if(total%0xc8===0x0){_0x22c59c[_0x4d51('0x6a')]();return processPromises(_0x22c59c);}},'complete':function(){return processPromises()[_0x4d51('0x54')](function(){logger[_0x4d51('0x65')](_0x4d51('0x6b'));endCsv();});},'error':function(_0x1d98f7,_0x4340ca){logger['info'](_0x4d51('0x6c'),JSON[_0x4d51('0x33')](_0x1d98f7));endCsv();}});})[_0x4d51('0x31')](function(_0x4bc914){logger[_0x4d51('0x19')](_0x4d51('0x6d'),JSON[_0x4d51('0x33')](_0x4bc914));});}main();
\ No newline at end of file
index 23c2cd7..ed5d897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd01a=['abort','step','duplicates','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','format',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','voice_queues_has_cm_blacklists','VoiceQueueId','campaigns','CampaignId','campaigns_has_cm_blacklists','each','finish','affectedRows','unlink','complete','argv','root','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','body\x20id\x20mandatory','map','No\x20agent\x20available','lodash','papaparse','util','moment','squel','../../../mysqldb','../../../config/environment','defaults','redis','localhost','YYYY-MM-DD\x20HH:mm:ss','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','insert','into','cm_hopper','fromQuery','scheduledat','ListId','createdAt','updatedAt','priority','UserId','recallme','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','ContactId','fields','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','keys','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','Received\x20SIGINT','error','message','exit','errors','push','code','sequelize','spread','catch','info','main','send','start','binding','socket_timestamp','.csv','header','writeFileSync','parse','createReadStream','data','length','rows','trim','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','includes','email','dateOfBirth','isValid','firstName','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:'];(function(_0x515e27,_0x336af5){var _0x3a23c0=function(_0x41894a){while(--_0x41894a){_0x515e27['push'](_0x515e27['shift']());}};_0x3a23c0(++_0x336af5);}(_0xd01a,0x93));var _0xad01=function(_0x10da36,_0x1ec47b){_0x10da36=_0x10da36-0x0;var _0x149885=_0xd01a[_0x10da36];return _0x149885;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xad01('0x0'));var Papa=require(_0xad01('0x1'));var util=require(_0xad01('0x2'));var BPromise=require('bluebird');var moment=require(_0xad01('0x3'));var squel=require(_0xad01('0x4'));var Redis=require('ioredis');var db=require(_0xad01('0x5'))['db'];var config=require(_0xad01('0x6'));var logger=require('../../../config/logger')('import');config['redis']=_[_0xad01('0x7')](config[_0xad01('0x8')],{'host':_0xad01('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad01('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()['format'](_0xad01('0xa'));function isEmail(_0x3af7cf){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x3af7cf);}function selectNotIn(_0x4ad83d,_0x4d98a2,_0x53a388,_0x503039,_0x55125e){return squel[_0xad01('0xb')]()[_0xad01('0xc')](_0xad01('0xd'))[_0xad01('0xe')](_0x503039)[_0xad01('0xf')](_0x4d98a2,null,_0x4d98a2+_0xad01('0x10')+_0x503039+'.'+_0x53a388)[_0xad01('0x11')](_0x503039+'.'+_0x53a388+_0xad01('0x12')+_0x4ad83d+'.'+_0x53a388)['where'](_0x4d98a2+_0xad01('0x13')+_0x55125e[_0xad01('0xf')]()+')');}function insertCmHopper(_0x23de50,_0x2a80f6,_0x1699b0,_0x35796e,_0x310810){var _0x800bf6=[_0xad01('0x14'),'cm_contacts.scheduledat',_0xad01('0x15'),_0xad01('0x16'),_0x2a80f6+'.'+_0x35796e,_0xad01('0x17'),_0xad01('0x18'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x310810+'\x22'];return squel[_0xad01('0x19')]()[_0xad01('0x1a')](_0xad01('0x1b'))[_0xad01('0x1c')](['phone',_0xad01('0x1d'),'ContactId',_0xad01('0x1e'),_0x35796e,_0xad01('0x1f'),_0xad01('0x20'),_0xad01('0x21'),_0xad01('0x22'),_0xad01('0x23')],squel[_0xad01('0xb')]()['fields'](_0x800bf6)[_0xad01('0xe')](_0x2a80f6)[_0xad01('0xf')](_0xad01('0x24'),null,_0xad01('0x25')+_0x2a80f6+'.CmListId')[_0xad01('0xf')](_0x1699b0,null,_0x1699b0+_0xad01('0x10')+_0x2a80f6+'.'+_0x35796e)['where'](_0x2a80f6+_0xad01('0x26'),_0x23de50)[_0xad01('0x11')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xad01('0x11')](_0xad01('0x27'),selectNotIn(_0x2a80f6,_0x1699b0,_0x35796e,'cm_hopper',[_0xad01('0x28'),_0xad01('0x29')]))[_0xad01('0x11')](_0xad01('0x27'),selectNotIn(_0x2a80f6,_0x1699b0,_0x35796e,_0xad01('0x1b'),['\x22always\x22'])))[_0xad01('0x2a')]();}function insertCmHopperBlack(_0x4caeea,_0x53d54d,_0x541fb4,_0x108d1a){var _0x3d4cc9=[_0xad01('0x14'),'cm_contacts.id',_0xad01('0x16'),_0x53d54d+'.'+_0x108d1a,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel['insert']()[_0xad01('0x1a')]('cm_hopper_black')[_0xad01('0x1c')](['phone',_0xad01('0x2b'),_0xad01('0x1e'),_0x108d1a,_0xad01('0x1f'),_0xad01('0x20')],squel[_0xad01('0xb')]()[_0xad01('0x2c')](_0x3d4cc9)['from'](_0x53d54d)[_0xad01('0xf')](_0xad01('0x24'),null,_0xad01('0x25')+_0x53d54d+_0xad01('0x2d'))[_0xad01('0xf')](_0x541fb4,null,_0x541fb4+_0xad01('0x10')+_0x53d54d+'.'+_0x108d1a)[_0xad01('0x11')](_0x53d54d+_0xad01('0x26'),_0x4caeea)['where'](_0xad01('0x2e'),NOW)[_0xad01('0x11')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xad01('0xb')]()[_0xad01('0xc')](_0xad01('0xd'))[_0xad01('0xe')](_0xad01('0x2f'))[_0xad01('0x11')]('ListId\x20=\x20?',_0x4caeea)['where'](_0x108d1a+'\x20=\x20?',_0x53d54d+'.'+_0x108d1a)))['toString']();}function insertCmContact(_0xaba454,_0xa86f2d,_0x86e5ff,_0x33b43d){var _0x38f492=_['concat'](_[_0xad01('0x30')](_0x33b43d),[_0xad01('0x1e'),_0xad01('0x31'),_0xad01('0x1f'),'updatedAt']);return squel[_0xad01('0x19')]()[_0xad01('0x1a')](_0xad01('0x24'))['fromQuery'](_0x38f492,squel['select']()[_0xad01('0x2c')](_0x38f492)[_0xad01('0xe')](_0xa86f2d)[_0xad01('0x11')]('('+_0x86e5ff['join'](',')+_0xad01('0x32'),squel[_0xad01('0xb')]()[_0xad01('0x2c')](_0x86e5ff)['from'](_0xad01('0x24'))['where'](_0xad01('0x33'),_0xaba454)[_0xad01('0x11')](_0xad01('0x34')))[_0xad01('0x11')](_0xad01('0x35'),squel[_0xad01('0xb')]()['field'](_0xad01('0x36'),_0xad01('0x37'))[_0xad01('0xe')](_0xa86f2d)['group'](_0x86e5ff[_0xad01('0xf')](','))))[_0xad01('0x2a')]();}function handleStop(){logger['info'](_0xad01('0x38'));stopped=!![];}function handleUncaughtException(_0x1e3275){logger[_0xad01('0x39')](_0x1e3275[_0xad01('0x3a')]);process[_0xad01('0x3b')](0x1);}function handleError(_0x1a58d4,_0x428fb7){stats[_0xad01('0x3c')][_0xad01('0x3d')]({'name':_0x428fb7[_0xad01('0x3e')],'message':_0x428fb7[_0xad01('0x3a')],'row':_0x1a58d4});}function handleQuery(_0x29f83b){logger['info'](_0x29f83b);return db[_0xad01('0x3f')]['query'](_0x29f83b)[_0xad01('0x40')](function(_0x8cea4a){results[_0xad01('0x3d')](_0x8cea4a);})[_0xad01('0x41')](function(_0x280c67){logger[_0xad01('0x39')](_0x280c67[_0xad01('0x3a')]);});}function main(_0x4f4e45,_0x4467c1,_0x1fcb71,_0x2c6cc9){logger[_0xad01('0x42')](_0xad01('0x43'),_0x4f4e45,JSON['stringify'](_0x4467c1));process[_0xad01('0x44')](_0xad01('0x45'));var _0x56eafb=_0x4467c1[_0xad01('0x46')];var _0x376e40=_0x4467c1[_0xad01('0x47')];var _0x1e887c=path[_0xad01('0xf')](config['root'],'server/files/tmp',_0x376e40+_0xad01('0x48'));var _0x5ed961=_['keys'](_0x56eafb)['join']();logger[_0xad01('0x42')](_0xad01('0x49'),_0x5ed961);fs[_0xad01('0x4a')](_0x1e887c,_0x5ed961+'\x0a');Papa[_0xad01('0x4b')](fs[_0xad01('0x4c')](_0x4f4e45),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5aea2d,_0x8a3908){try{for(var _0x5c9c16=0x0,_0x15ebbf=[];_0x5c9c16<_0x5aea2d[_0xad01('0x4d')][_0xad01('0x4e')];_0x5c9c16++){stats[_0xad01('0x4f')]+=0x1;if(_0x5aea2d[_0xad01('0x3c')][_0x5c9c16]){handleError(_0x5aea2d[_0xad01('0x4d')][_0x5c9c16],_0x5aea2d[_0xad01('0x3c')][_0x5c9c16]);}else{var _0x305121=[];for(var _0x2e1058 in _0x56eafb){if(_0x56eafb['hasOwnProperty'](_0x2e1058)){if(_0x5aea2d[_0xad01('0x4d')][_0x5c9c16][_0x56eafb[_0x2e1058]]){var _0x5c1948=_[_0xad01('0x50')](_0x5aea2d['data'][_0x5c9c16][_0x56eafb[_0x2e1058]]['replace'](/"/g,'\x27'));switch(_0x2e1058){case _0xad01('0x1d'):var _0x2949c8=moment(_0x5c1948,_0xad01('0xa'),!![]);if(_0x2949c8['isValid']()){_0x15ebbf[_0xad01('0x3d')]('\x22'+_0x5c1948+'\x22');}else{_0x305121['push'](_0xad01('0x51'));}break;case _0xad01('0x21'):var _0x46d618=parseInt(_0x5c1948);_0x5c1948=_[_0xad01('0x52')](_0x46d618)||_0x46d618<0x0||_0x46d618>0x4?_0x2c6cc9?0x3:0x2:_0x46d618;_0x15ebbf[_0xad01('0x3d')]('\x22'+_0x5c1948+'\x22');break;case _0xad01('0x22'):var _0xcc11ad=parseInt(_0x5c1948);if(_['isNumber'](_0xcc11ad)&&_[_0xad01('0x53')](_0x1fcb71,_0xcc11ad)){_0x15ebbf[_0xad01('0x3d')]('\x22'+_0xcc11ad+'\x22');}else{_0x305121[_0xad01('0x3d')]('agent\x20not\x20exists');}break;case _0xad01('0x54'):if(isEmail(_0x5c1948)){_0x15ebbf[_0xad01('0x3d')]('\x22'+_0x5c1948+'\x22');}else{_0x305121[_0xad01('0x3d')]('email\x20wrong\x20format');}break;case _0xad01('0x55'):var _0x1d1a94=moment(_0x5c1948,'YYYY-MM-DD',!![]);if(_0x1d1a94[_0xad01('0x56')]()){_0x15ebbf['push']('\x22'+_0x5c1948+'\x22');}else{_0x305121[_0xad01('0x3d')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x15ebbf['push']('\x22'+_0x5c1948+'\x22');}}else{switch(_0x2e1058){case _0xad01('0x57'):case'phone':_0x305121[_0xad01('0x3d')](_0x2e1058+_0xad01('0x58'));break;default:_0x15ebbf['push']('\x22\x22');}}}}if(_0x305121[_0xad01('0x4e')]){handleError(_0x5aea2d['data'][_0x5c9c16],{'code':_0xad01('0x59'),'message':_0x305121[_0xad01('0xf')]()});}else{fs[_0xad01('0x5a')](_0x1e887c,_0x15ebbf[_0xad01('0xf')]()+'\x0a');}_0x15ebbf=[];}if(!(stats['rows']%0xc8)){socket[_0xad01('0x5b')](_0xad01('0x5c')+_0x376e40,stats);stats['errors']=[];}}if(stopped){logger['info']('Abort\x20parser');_0x8a3908[_0xad01('0x5d')]();}}catch(_0x20be1f){handleError(_0x5aea2d[_0xad01('0x4d')][_0x5c9c16],{'code':'SystemError','message':_0x20be1f[_0xad01('0x3a')]});logger[_0xad01('0x39')](_0xad01('0x5e'),_0x20be1f[_0xad01('0x3a')]);}},'complete':function(){try{var _0x570189=[];var _0x24f0f1=_0xad01('0x24');if(_0x4467c1['duplicates']&&_0x4467c1[_0xad01('0x5f')][_0xad01('0x4e')]){_0x24f0f1='cm_contacts_'+_0x376e40;_0x570189[_0xad01('0x3d')](_0xad01('0x60')+_0x24f0f1+_0xad01('0x61'));}var _0x20a718=util[_0xad01('0x62')]('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x1e887c,_0x24f0f1,_0x5ed961,_0x4467c1[_0xad01('0x1e')],_0x4467c1[_0xad01('0x31')]||null,NOW,NOW);if(_['isNil'](_0x56eafb['scheduledat'])){_0x20a718+=_0xad01('0x63');}_0x570189[_0xad01('0x3d')](_0x20a718);if(_0x4467c1[_0xad01('0x5f')]&&_0x4467c1[_0xad01('0x5f')][_0xad01('0x4e')]){_0x570189[_0xad01('0x3d')](insertCmContact(_0x4467c1[_0xad01('0x1e')],_0x24f0f1,_0x4467c1[_0xad01('0x5f')],_0x56eafb));_0x570189[_0xad01('0x3d')](_0xad01('0x64')+_0x24f0f1+';');}_0x570189[_0xad01('0x3d')](insertCmHopper(_0x4467c1['ListId'],'voice_queues_has_cm_lists',_0xad01('0x65'),'VoiceQueueId',_0x2c6cc9));_0x570189[_0xad01('0x3d')](insertCmHopperBlack(_0x4467c1[_0xad01('0x1e')],_0xad01('0x66'),_0xad01('0x65'),_0xad01('0x67')));_0x570189[_0xad01('0x3d')](insertCmHopper(_0x4467c1['ListId'],'campaigns_has_cm_lists',_0xad01('0x68'),_0xad01('0x69'),_0x2c6cc9));_0x570189['push'](insertCmHopperBlack(_0x4467c1[_0xad01('0x1e')],_0xad01('0x6a'),_0xad01('0x68'),'CampaignId'));BPromise[_0xad01('0x6b')](_0x570189,handleQuery)['then'](function(_0x2204fe){stats[_0xad01('0x6c')]=!![];stats[_0xad01('0x6d')]=_0x4467c1[_0xad01('0x5f')]&&_0x4467c1[_0xad01('0x5f')][_0xad01('0x4e')]?results[0x2][_0xad01('0x6d')]:results[0x0][_0xad01('0x6d')];socket['emit'](_0xad01('0x5c')+_0x376e40,stats);fs[_0xad01('0x6e')](_0x4f4e45);fs['unlink'](_0x1e887c);process[_0xad01('0x3b')](0x0);})[_0xad01('0x41')](function(_0x2ec160){logger['error'](_0x2ec160[_0xad01('0x3a')]);process[_0xad01('0x3b')](0x1);});}catch(_0x35404b){logger[_0xad01('0x39')](_0xad01('0x6f'),_0x35404b['message']);process[_0xad01('0x3b')](0x1);}},'error':function(_0xd3dae8,_0x3ac561,_0xdc6557,_0x566542){throw new Error(_0x566542);}});}function validate(){if(process[_0xad01('0x70')]&&process[_0xad01('0x70')][_0xad01('0x4e')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x84ed05=path[_0xad01('0xf')](config[_0xad01('0x71')],_0xad01('0x72'),process[_0xad01('0x70')][0x2]);if(!fs[_0xad01('0x73')](_0x84ed05)){throw new Error(_0xad01('0x74'));}var _0x1b9386={};try{_0x1b9386=JSON[_0xad01('0x4b')](process[_0xad01('0x70')][0x3]);if(!_0x1b9386[_0xad01('0x46')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x1b9386[_0xad01('0x46')][_0xad01('0xd')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x1b9386['binding'][_0xad01('0x57')]){throw new Error('firstName\x20is\x20mandatory');}var _0xe427cc=0x0;if(_0x1b9386[_0xad01('0x46')][_0xad01('0x22')]){_0xe427cc=0x1;}if(!_0x1b9386[_0xad01('0x1e')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x4b5cff){throw new Error(_0xad01('0x75'));}var _0x1da28d=[];try{_0x1da28d=_[_0xad01('0x76')](JSON['parse'](process[_0xad01('0x70')][0x4]),'id');}catch(_0x193f7f){logger['info'](_0xad01('0x77'));}main(_0x84ed05,_0x1b9386,_0x1da28d,_0xe427cc);}validate();process['on']('SIGINT',handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x4a98=['cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','insert','into','cm_hopper','phone','createdAt','updatedAt','priority','recallme','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','fromQuery','ContactId','ListId','fields','cm_contacts.createdAt\x20=\x20?','\x20=\x20?','concat','keys','CompanyId','cm_contacts','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','error','message','exit','errors','push','query','main','stringify','send','start','binding','socket_timestamp','server/files/tmp','.csv','parse','createReadStream','data','length','trim','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','rows','emit','contact:import:','Abort\x20parser','abort','step','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','format','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','campaigns','each','then','finish','affectedRows','unlink','catch','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../config/environment','import','redis','defaults','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','select','field','from','join','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.id'];(function(_0x266615,_0x10c120){var _0x700535=function(_0x141037){while(--_0x141037){_0x266615['push'](_0x266615['shift']());}};_0x700535(++_0x10c120);}(_0x4a98,0x160));var _0x84a9=function(_0x3e186f,_0x2eb7be){_0x3e186f=_0x3e186f-0x0;var _0x3595bf=_0x4a98[_0x3e186f];return _0x3595bf;};'use strict';var fs=require('fs');var path=require(_0x84a9('0x0'));var _=require(_0x84a9('0x1'));var Papa=require(_0x84a9('0x2'));var util=require(_0x84a9('0x3'));var BPromise=require(_0x84a9('0x4'));var moment=require(_0x84a9('0x5'));var squel=require(_0x84a9('0x6'));var Redis=require(_0x84a9('0x7'));var db=require('../../../mysqldb')['db'];var config=require(_0x84a9('0x8'));var logger=require('../../../config/logger')(_0x84a9('0x9'));config[_0x84a9('0xa')]=_[_0x84a9('0xb')](config[_0x84a9('0xa')],{'host':_0x84a9('0xc'),'port':0x18eb});var socket=require(_0x84a9('0xd'))(new Redis(config[_0x84a9('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()['format'](_0x84a9('0xe'));function isEmail(_0x17191a){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x17191a);}function selectNotIn(_0x91f1fc,_0x51e784,_0x420e56,_0x26809c,_0x4cfc5b){return squel[_0x84a9('0xf')]()[_0x84a9('0x10')]('phone')[_0x84a9('0x11')](_0x26809c)[_0x84a9('0x12')](_0x51e784,null,_0x51e784+'.id\x20=\x20'+_0x26809c+'.'+_0x420e56)[_0x84a9('0x13')](_0x26809c+'.'+_0x420e56+'\x20=\x20'+_0x91f1fc+'.'+_0x420e56)[_0x84a9('0x13')](_0x51e784+_0x84a9('0x14')+_0x4cfc5b[_0x84a9('0x12')]()+')');}function insertCmHopper(_0xe016d1,_0x2d353f,_0x4792bc,_0x3ececd,_0x2dda4f){var _0x482839=[_0x84a9('0x15'),'cm_contacts.scheduledat',_0x84a9('0x16'),_0x84a9('0x17'),_0x2d353f+'.'+_0x3ececd,_0x84a9('0x18'),_0x84a9('0x19'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x2dda4f+'\x22'];return squel[_0x84a9('0x1a')]()[_0x84a9('0x1b')](_0x84a9('0x1c'))['fromQuery']([_0x84a9('0x1d'),'scheduledat','ContactId','ListId',_0x3ececd,_0x84a9('0x1e'),_0x84a9('0x1f'),_0x84a9('0x20'),'UserId',_0x84a9('0x21')],squel[_0x84a9('0xf')]()['fields'](_0x482839)[_0x84a9('0x11')](_0x2d353f)[_0x84a9('0x12')]('cm_contacts',null,_0x84a9('0x22')+_0x2d353f+_0x84a9('0x23'))[_0x84a9('0x12')](_0x4792bc,null,_0x4792bc+_0x84a9('0x24')+_0x2d353f+'.'+_0x3ececd)[_0x84a9('0x13')](_0x2d353f+_0x84a9('0x25'),_0xe016d1)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x84a9('0x13')](_0x84a9('0x26'),selectNotIn(_0x2d353f,_0x4792bc,_0x3ececd,_0x84a9('0x1c'),[_0x84a9('0x27'),_0x84a9('0x28')]))[_0x84a9('0x13')](_0x84a9('0x26'),selectNotIn(_0x2d353f,_0x4792bc,_0x3ececd,_0x84a9('0x1c'),[_0x84a9('0x27')])))[_0x84a9('0x29')]();}function insertCmHopperBlack(_0x130939,_0x2be8f2,_0x45b86d,_0x1a9932){var _0x386b61=[_0x84a9('0x15'),_0x84a9('0x16'),_0x84a9('0x17'),_0x2be8f2+'.'+_0x1a9932,_0x84a9('0x18'),_0x84a9('0x19')];return squel['insert']()[_0x84a9('0x1b')]('cm_hopper_black')[_0x84a9('0x2a')]([_0x84a9('0x1d'),_0x84a9('0x2b'),_0x84a9('0x2c'),_0x1a9932,_0x84a9('0x1e'),_0x84a9('0x1f')],squel[_0x84a9('0xf')]()[_0x84a9('0x2d')](_0x386b61)[_0x84a9('0x11')](_0x2be8f2)[_0x84a9('0x12')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x2be8f2+_0x84a9('0x23'))[_0x84a9('0x12')](_0x45b86d,null,_0x45b86d+_0x84a9('0x24')+_0x2be8f2+'.'+_0x1a9932)[_0x84a9('0x13')](_0x2be8f2+'.CmListId\x20=\x20?',_0x130939)[_0x84a9('0x13')](_0x84a9('0x2e'),NOW)[_0x84a9('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x84a9('0xf')]()[_0x84a9('0x10')](_0x84a9('0x1d'))[_0x84a9('0x11')]('cm_hopper_black')['where']('ListId\x20=\x20?',_0x130939)[_0x84a9('0x13')](_0x1a9932+_0x84a9('0x2f'),_0x2be8f2+'.'+_0x1a9932)))[_0x84a9('0x29')]();}function insertCmContact(_0x184273,_0x131c77,_0x105498,_0x5a7a89){var _0x58d195=_[_0x84a9('0x30')](_[_0x84a9('0x31')](_0x5a7a89),[_0x84a9('0x2c'),_0x84a9('0x32'),_0x84a9('0x1e'),_0x84a9('0x1f')]);return squel[_0x84a9('0x1a')]()[_0x84a9('0x1b')](_0x84a9('0x33'))['fromQuery'](_0x58d195,squel[_0x84a9('0xf')]()['fields'](_0x58d195)[_0x84a9('0x11')](_0x131c77)[_0x84a9('0x13')]('('+_0x105498[_0x84a9('0x12')](',')+')\x20NOT\x20IN\x20?',squel[_0x84a9('0xf')]()['fields'](_0x105498)[_0x84a9('0x11')]('cm_contacts')[_0x84a9('0x13')]('ListId\x20=\x20?',_0x184273)['where']('deletedAt\x20IS\x20NULL'))[_0x84a9('0x13')](_0x84a9('0x34'),squel[_0x84a9('0xf')]()['field'](_0x84a9('0x35'),_0x84a9('0x36'))[_0x84a9('0x11')](_0x131c77)[_0x84a9('0x37')](_0x105498['join'](','))))[_0x84a9('0x29')]();}function handleStop(){logger[_0x84a9('0x38')](_0x84a9('0x39'));stopped=!![];}function handleUncaughtException(_0x2ef3ff){logger[_0x84a9('0x3a')](_0x2ef3ff[_0x84a9('0x3b')]);process[_0x84a9('0x3c')](0x1);}function handleError(_0x3218ec,_0x1fb222){stats[_0x84a9('0x3d')][_0x84a9('0x3e')]({'name':_0x1fb222['code'],'message':_0x1fb222[_0x84a9('0x3b')],'row':_0x3218ec});}function handleQuery(_0x210d5b){logger[_0x84a9('0x38')](_0x210d5b);return db['sequelize'][_0x84a9('0x3f')](_0x210d5b)['spread'](function(_0x1dad63){results[_0x84a9('0x3e')](_0x1dad63);})['catch'](function(_0x305290){logger[_0x84a9('0x3a')](_0x305290[_0x84a9('0x3b')]);});}function main(_0x2cef31,_0x3f8fef,_0x2c7c1c,_0x1caae8){logger[_0x84a9('0x38')](_0x84a9('0x40'),_0x2cef31,JSON[_0x84a9('0x41')](_0x3f8fef));process[_0x84a9('0x42')](_0x84a9('0x43'));var _0x42face=_0x3f8fef[_0x84a9('0x44')];var _0xbf4a3d=_0x3f8fef[_0x84a9('0x45')];var _0x228cbf=path['join'](config['root'],_0x84a9('0x46'),_0xbf4a3d+_0x84a9('0x47'));var _0x208a8d=_[_0x84a9('0x31')](_0x42face)['join']();logger['info']('header',_0x208a8d);fs['writeFileSync'](_0x228cbf,_0x208a8d+'\x0a');Papa[_0x84a9('0x48')](fs[_0x84a9('0x49')](_0x2cef31),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5414c1,_0x3edc3c){try{for(var _0x29558b=0x0,_0xe23c57=[];_0x29558b<_0x5414c1[_0x84a9('0x4a')][_0x84a9('0x4b')];_0x29558b++){stats['rows']+=0x1;if(_0x5414c1[_0x84a9('0x3d')][_0x29558b]){handleError(_0x5414c1['data'][_0x29558b],_0x5414c1[_0x84a9('0x3d')][_0x29558b]);}else{var _0x3e5519=[];for(var _0x594763 in _0x42face){if(_0x42face['hasOwnProperty'](_0x594763)){if(_0x5414c1[_0x84a9('0x4a')][_0x29558b][_0x42face[_0x594763]]){var _0x504932=_[_0x84a9('0x4c')](_0x5414c1['data'][_0x29558b][_0x42face[_0x594763]]['replace'](/"/g,'\x27'));switch(_0x594763){case _0x84a9('0x4d'):var _0x4a5902=moment(_0x504932,_0x84a9('0xe'),!![]);if(_0x4a5902[_0x84a9('0x4e')]()){_0xe23c57[_0x84a9('0x3e')]('\x22'+_0x504932+'\x22');}else{_0x3e5519[_0x84a9('0x3e')](_0x84a9('0x4f'));}break;case _0x84a9('0x20'):var _0x2438d7=parseInt(_0x504932);_0x504932=_[_0x84a9('0x50')](_0x2438d7)||_0x2438d7<0x0||_0x2438d7>0x4?_0x1caae8?0x3:0x2:_0x2438d7;_0xe23c57['push']('\x22'+_0x504932+'\x22');break;case _0x84a9('0x51'):var _0xf953c0=parseInt(_0x504932);if(_['isNumber'](_0xf953c0)&&_[_0x84a9('0x52')](_0x2c7c1c,_0xf953c0)){_0xe23c57[_0x84a9('0x3e')]('\x22'+_0xf953c0+'\x22');}else{_0x3e5519[_0x84a9('0x3e')](_0x84a9('0x53'));}break;case'email':if(isEmail(_0x504932)){_0xe23c57['push']('\x22'+_0x504932+'\x22');}else{_0x3e5519['push'](_0x84a9('0x54'));}break;case'dateOfBirth':var _0x13914e=moment(_0x504932,'YYYY-MM-DD',!![]);if(_0x13914e['isValid']()){_0xe23c57[_0x84a9('0x3e')]('\x22'+_0x504932+'\x22');}else{_0x3e5519[_0x84a9('0x3e')](_0x84a9('0x55'));}break;default:_0xe23c57[_0x84a9('0x3e')]('\x22'+_0x504932+'\x22');}}else{switch(_0x594763){case _0x84a9('0x56'):case _0x84a9('0x1d'):_0x3e5519['push'](_0x594763+_0x84a9('0x57'));break;default:_0xe23c57[_0x84a9('0x3e')]('\x22\x22');}}}}if(_0x3e5519[_0x84a9('0x4b')]){handleError(_0x5414c1[_0x84a9('0x4a')][_0x29558b],{'code':_0x84a9('0x58'),'message':_0x3e5519[_0x84a9('0x12')]()});}else{fs[_0x84a9('0x59')](_0x228cbf,_0xe23c57[_0x84a9('0x12')]()+'\x0a');}_0xe23c57=[];}if(!(stats[_0x84a9('0x5a')]%0xc8)){socket[_0x84a9('0x5b')](_0x84a9('0x5c')+_0xbf4a3d,stats);stats[_0x84a9('0x3d')]=[];}}if(stopped){logger[_0x84a9('0x38')](_0x84a9('0x5d'));_0x3edc3c[_0x84a9('0x5e')]();}}catch(_0x555847){handleError(_0x5414c1[_0x84a9('0x4a')][_0x29558b],{'code':'SystemError','message':_0x555847[_0x84a9('0x3b')]});logger['error'](_0x84a9('0x5f'),_0x555847['message']);}},'complete':function(){try{var _0x4b054b=[];var _0x299929=_0x84a9('0x33');if(_0x3f8fef[_0x84a9('0x60')]&&_0x3f8fef[_0x84a9('0x60')][_0x84a9('0x4b')]){_0x299929=_0x84a9('0x61')+_0xbf4a3d;_0x4b054b[_0x84a9('0x3e')]('CREATE\x20TABLE\x20'+_0x299929+_0x84a9('0x62'));}var _0x7bc18d=util[_0x84a9('0x63')](_0x84a9('0x64'),_0x228cbf,_0x299929,_0x208a8d,_0x3f8fef[_0x84a9('0x2c')],_0x3f8fef[_0x84a9('0x32')]||null,NOW,NOW);if(_['isNil'](_0x42face['scheduledat'])){_0x7bc18d+=_0x84a9('0x65');}_0x4b054b[_0x84a9('0x3e')](_0x7bc18d);if(_0x3f8fef[_0x84a9('0x60')]&&_0x3f8fef['duplicates'][_0x84a9('0x4b')]){_0x4b054b['push'](insertCmContact(_0x3f8fef[_0x84a9('0x2c')],_0x299929,_0x3f8fef[_0x84a9('0x60')],_0x42face));_0x4b054b[_0x84a9('0x3e')]('DROP\x20TABLE\x20'+_0x299929+';');}_0x4b054b[_0x84a9('0x3e')](insertCmHopper(_0x3f8fef[_0x84a9('0x2c')],'voice_queues_has_cm_lists','voice_queues',_0x84a9('0x66'),_0x1caae8));_0x4b054b[_0x84a9('0x3e')](insertCmHopperBlack(_0x3f8fef[_0x84a9('0x2c')],_0x84a9('0x67'),'voice_queues',_0x84a9('0x66')));_0x4b054b[_0x84a9('0x3e')](insertCmHopper(_0x3f8fef[_0x84a9('0x2c')],_0x84a9('0x68'),'campaigns',_0x84a9('0x69'),_0x1caae8));_0x4b054b['push'](insertCmHopperBlack(_0x3f8fef['ListId'],_0x84a9('0x6a'),_0x84a9('0x6b'),_0x84a9('0x69')));BPromise[_0x84a9('0x6c')](_0x4b054b,handleQuery)[_0x84a9('0x6d')](function(_0x419425){stats[_0x84a9('0x6e')]=!![];stats['affectedRows']=_0x3f8fef[_0x84a9('0x60')]&&_0x3f8fef[_0x84a9('0x60')][_0x84a9('0x4b')]?results[0x2]['affectedRows']:results[0x0][_0x84a9('0x6f')];socket[_0x84a9('0x5b')](_0x84a9('0x5c')+_0xbf4a3d,stats);fs[_0x84a9('0x70')](_0x2cef31);fs[_0x84a9('0x70')](_0x228cbf);process[_0x84a9('0x3c')](0x0);})[_0x84a9('0x71')](function(_0x5d0d19){logger[_0x84a9('0x3a')](_0x5d0d19[_0x84a9('0x3b')]);process['exit'](0x1);});}catch(_0x332695){logger['error'](_0x84a9('0x72'),_0x332695[_0x84a9('0x3b')]);process['exit'](0x1);}},'error':function(_0x3166d8,_0x3eb266,_0x5c61da,_0x2dc480){throw new Error(_0x2dc480);}});}function validate(){if(process['argv']&&process[_0x84a9('0x73')][_0x84a9('0x4b')]<0x4){throw new Error(_0x84a9('0x74'));}var _0x1e5378=path['join'](config[_0x84a9('0x75')],_0x84a9('0x46'),process[_0x84a9('0x73')][0x2]);if(!fs[_0x84a9('0x76')](_0x1e5378)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x262651={};try{_0x262651=JSON[_0x84a9('0x48')](process[_0x84a9('0x73')][0x3]);if(!_0x262651[_0x84a9('0x44')]){throw new Error(_0x84a9('0x77'));}if(!_0x262651[_0x84a9('0x44')][_0x84a9('0x1d')]){throw new Error(_0x84a9('0x78'));}if(!_0x262651['binding']['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0xf486a2=0x0;if(_0x262651[_0x84a9('0x44')][_0x84a9('0x51')]){_0xf486a2=0x1;}if(!_0x262651[_0x84a9('0x2c')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0xf7d010){throw new Error(_0x84a9('0x79'));}var _0x4b84c5=[];try{_0x4b84c5=_[_0x84a9('0x7a')](JSON[_0x84a9('0x48')](process[_0x84a9('0x73')][0x4]),'id');}catch(_0x15bdbe){logger['info'](_0x84a9('0x7b'));}main(_0x1e5378,_0x262651,_0x4b84c5,_0xf486a2);}validate();process['on'](_0x84a9('0x7c'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index f0acc68..d9a26fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa03=['Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','Talk\x20Time','talktime','***\x20Call\x20Info\x20***','Called\x20Number','membername','uniqueid','Date','Complete\x20Time','endtime','duration','Billable\x20Time','billableseconds','string','inbound','variable','queue','push','calleridnum','outbound','destcalleridnum','getDescriptions','toLowerCase','voice','Caller\x20Number','Caller\x20Name','keyValue','Call\x20To','destexten','UniqueId','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring'];(function(_0x91eec6,_0xc46f10){var _0x4d38de=function(_0x2cd578){while(--_0x2cd578){_0x91eec6['push'](_0x91eec6['shift']());}};_0x4d38de(++_0xc46f10);}(_0xfa03,0x182));var _0x3fa0=function(_0x43f212,_0x1aa844){_0x43f212=_0x43f212-0x0;var _0x38f576=_0xfa03[_0x43f212];return _0x38f576;};'use strict';exports['getSubjects']=function(_0x58f82c,_0x549d9c){var _0x5632fe=[{'type':_0x3fa0('0x0'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x58f82c['toLowerCase']()){case'voice':switch(_0x549d9c['toLowerCase']()){case _0x3fa0('0x1'):_0x5632fe['push']({'type':_0x3fa0('0x2'),'content':'','variableName':_0x3fa0('0x3')});_0x5632fe[_0x3fa0('0x4')]({'type':_0x3fa0('0x2'),'content':'','variableName':_0x3fa0('0x5')});break;case _0x3fa0('0x6'):_0x5632fe[_0x3fa0('0x4')]({'type':_0x3fa0('0x0'),'content':'Outbound\x20Call','variableName':null});_0x5632fe[_0x3fa0('0x4')]({'type':_0x3fa0('0x2'),'content':'','variableName':_0x3fa0('0x7')});break;}}return _0x5632fe;};exports[_0x3fa0('0x8')]=function(_0x30d6c0,_0x55ee3e){var _0x33b5a0=[];switch(_0x30d6c0[_0x3fa0('0x9')]()){case _0x3fa0('0xa'):switch(_0x55ee3e[_0x3fa0('0x9')]()){case _0x3fa0('0x1'):_0x33b5a0=[{'type':_0x3fa0('0x0'),'content':'***\x20Call\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x3fa0('0xb'),'keyType':_0x3fa0('0x2'),'variableName':'calleridnum'},{'type':'keyValue','content':'','key':_0x3fa0('0xc'),'keyType':_0x3fa0('0x2'),'variableName':'calleridname'},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0xe'),'keyType':_0x3fa0('0x2'),'variableName':_0x3fa0('0xf')},{'type':_0x3fa0('0xd'),'content':'','key':'Queue','keyType':_0x3fa0('0x2'),'variableName':_0x3fa0('0x3')},{'type':'keyValue','content':'','key':_0x3fa0('0x10'),'keyType':'variable','variableName':'uniqueid'},{'type':'keyValue','content':'','key':'Date','keyType':_0x3fa0('0x2'),'variableName':_0x3fa0('0x11')},{'type':_0x3fa0('0x0'),'content':_0x3fa0('0x12'),'key':null,'keyType':null,'variableName':null},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x13'),'keyType':_0x3fa0('0x2'),'variableName':_0x3fa0('0x14')},{'type':'keyValue','content':'','key':_0x3fa0('0x15'),'keyType':_0x3fa0('0x2'),'variableName':'destcalleridnum'},{'type':_0x3fa0('0x0'),'content':_0x3fa0('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x17'),'keyType':_0x3fa0('0x2'),'variableName':_0x3fa0('0x11')},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x18'),'keyType':'variable','variableName':_0x3fa0('0x19')},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x1a'),'keyType':'variable','variableName':_0x3fa0('0x1b')},{'type':'keyValue','content':'','key':_0x3fa0('0x1c'),'keyType':'variable','variableName':'holdtime'},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x1d'),'keyType':'variable','variableName':_0x3fa0('0x1e')}];break;case _0x3fa0('0x6'):_0x33b5a0=[{'type':_0x3fa0('0x0'),'content':_0x3fa0('0x1f'),'variableName':null},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x20'),'keyType':_0x3fa0('0x2'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x3fa0('0xd'),'content':'','key':'Member\x20Name','keyType':_0x3fa0('0x2'),'keyContent':'','variableName':_0x3fa0('0x21')},{'type':_0x3fa0('0xd'),'content':'','key':'UniqueId','keyType':_0x3fa0('0x2'),'keyContent':'','variableName':_0x3fa0('0x22')},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x23'),'keyType':_0x3fa0('0x2'),'keyContent':'','variableName':'starttime'},{'type':_0x3fa0('0x0'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x3fa0('0xd'),'content':'','key':'Answer\x20Time','keyType':_0x3fa0('0x2'),'keyContent':'','variableName':'answertime'},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x24'),'keyType':_0x3fa0('0x2'),'keyContent':'','variableName':_0x3fa0('0x25')},{'type':_0x3fa0('0xd'),'content':'','key':'Duration','keyType':_0x3fa0('0x2'),'keyContent':'','variableName':_0x3fa0('0x26')},{'type':_0x3fa0('0xd'),'content':'','key':_0x3fa0('0x27'),'keyType':_0x3fa0('0x2'),'keyContent':'','variableName':_0x3fa0('0x28')}];break;}}return _0x33b5a0;};
\ No newline at end of file
+var _0xdda1=['UniqueId','uniqueid','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','Date','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','push','variable','queue','calleridnum','outbound','Outbound\x20Call','destcalleridnum','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0xdda1,0x1d1));var _0x1dda=function(_0x49c405,_0x5f1e2a){_0x49c405=_0x49c405-0x0;var _0x2f0503=_0xdda1[_0x49c405];return _0x2f0503;};'use strict';exports[_0x1dda('0x0')]=function(_0x51c2a8,_0x5edba3){var _0x359df1=[{'type':_0x1dda('0x1'),'content':_0x1dda('0x2'),'variableName':null}];switch(_0x51c2a8[_0x1dda('0x3')]()){case'voice':switch(_0x5edba3['toLowerCase']()){case'inbound':_0x359df1[_0x1dda('0x4')]({'type':_0x1dda('0x5'),'content':'','variableName':_0x1dda('0x6')});_0x359df1[_0x1dda('0x4')]({'type':_0x1dda('0x5'),'content':'','variableName':_0x1dda('0x7')});break;case _0x1dda('0x8'):_0x359df1['push']({'type':_0x1dda('0x1'),'content':_0x1dda('0x9'),'variableName':null});_0x359df1['push']({'type':_0x1dda('0x5'),'content':'','variableName':_0x1dda('0xa')});break;}}return _0x359df1;};exports['getDescriptions']=function(_0x16aa29,_0x166909){var _0x5edeec=[];switch(_0x16aa29[_0x1dda('0x3')]()){case _0x1dda('0xb'):switch(_0x166909[_0x1dda('0x3')]()){case'inbound':_0x5edeec=[{'type':_0x1dda('0x1'),'content':_0x1dda('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0xe'),'keyType':_0x1dda('0x5'),'variableName':'calleridnum'},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0xf'),'keyType':_0x1dda('0x5'),'variableName':_0x1dda('0x10')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x11'),'keyType':'variable','variableName':_0x1dda('0x12')},{'type':_0x1dda('0xd'),'content':'','key':'Queue','keyType':_0x1dda('0x5'),'variableName':_0x1dda('0x6')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x13'),'keyType':_0x1dda('0x5'),'variableName':_0x1dda('0x14')},{'type':'keyValue','content':'','key':'Date','keyType':_0x1dda('0x5'),'variableName':'agentcalledAt'},{'type':_0x1dda('0x1'),'content':_0x1dda('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0x1dda('0xd'),'content':'','key':'Agent\x20Name','keyType':'variable','variableName':_0x1dda('0x16')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x17'),'keyType':_0x1dda('0x5'),'variableName':'destcalleridnum'},{'type':_0x1dda('0x1'),'content':_0x1dda('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x19'),'keyType':_0x1dda('0x5'),'variableName':'agentcalledAt'},{'type':'keyValue','content':'','key':'Agent\x20Connect','keyType':_0x1dda('0x5'),'variableName':'agentconnectAt'},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x1a'),'keyType':'variable','variableName':_0x1dda('0x1b')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x1c'),'keyType':_0x1dda('0x5'),'variableName':_0x1dda('0x1d')},{'type':'keyValue','content':'','key':_0x1dda('0x1e'),'keyType':'variable','variableName':_0x1dda('0x1f')}];break;case'outbound':_0x5edeec=[{'type':_0x1dda('0x1'),'content':_0x1dda('0xc'),'variableName':null},{'type':'keyValue','content':'','key':_0x1dda('0x20'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x21'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':_0x1dda('0x22')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x13'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':'uniqueid'},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x23'),'keyType':'variable','keyContent':'','variableName':_0x1dda('0x24')},{'type':'string','content':_0x1dda('0x18')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x25'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':_0x1dda('0x26')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x27'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':'endtime'},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x28'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':_0x1dda('0x29')},{'type':_0x1dda('0xd'),'content':'','key':_0x1dda('0x2a'),'keyType':_0x1dda('0x5'),'keyContent':'','variableName':_0x1dda('0x2b')}];break;}}return _0x5edeec;};
\ No newline at end of file
index 3c79946..b5da370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb39=['openchannel-interactions','mail-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','Interaction','findOne','then','update','info','tracked','user','query','clone','body','omit','html','phone','fax','lodash','../../mysqldb','../../config/logger'];(function(_0x568fba,_0xb96fc){var _0x54b7fb=function(_0x378670){while(--_0x378670){_0x568fba['push'](_0x568fba['shift']());}};_0x54b7fb(++_0xb96fc);}(_0xbb39,0x15d));var _0x9bb3=function(_0x25ba6a,_0x4422d6){_0x25ba6a=_0x25ba6a-0x0;var _0x1be09a=_0xbb39[_0x25ba6a];return _0x1be09a;};'use strict';var _=require(_0x9bb3('0x0'));var db=require(_0x9bb3('0x1'))['db'];var loggers={'openchannel':require(_0x9bb3('0x2'))(_0x9bb3('0x3')),'mail':require('../../config/logger')(_0x9bb3('0x4')),'fax':require(_0x9bb3('0x2'))('fax-interactions'),'sms':require(_0x9bb3('0x2'))(_0x9bb3('0x5')),'chat':require(_0x9bb3('0x2'))(_0x9bb3('0x6')),'whatsapp':require('../../config/logger')(_0x9bb3('0x7'))};function getInteractionId(_0x217e34,_0x41dcdb,_0x4a1d62){if(_0x217e34&&_0x217e34[_['upperFirst'](_0x4a1d62)+_0x9bb3('0x8')]){return _0x217e34[_[_0x9bb3('0x9')](_0x4a1d62)+'InteractionId'];}else if(_0x217e34&&_0x217e34['id']){return _0x217e34['id'];}else if(_0x41dcdb&&_0x41dcdb['id']){return _0x41dcdb['id'];}else{return _0x9bb3('0xa');}}function log(_0x48d0fd,_0x526c58,_0x510649,_0x4e7b29,_0x46c5c7,_0x48ebcf){loggers[_0x46c5c7[_0x9bb3('0xb')]()][_0x48d0fd](_0x9bb3('0xc'),_0x48ebcf[_0x9bb3('0xd')](),_0x526c58?_0x526c58['id']:null,_0x526c58?_0x526c58[_0x9bb3('0xe')]:null,_0x526c58?_0x526c58[_0x9bb3('0xf')]:null,getInteractionId(_0x510649,_0x4e7b29,_0x46c5c7),_0x510649?JSON[_0x9bb3('0x10')](_0x510649):_0x9bb3('0x11'));}function updateUser(_0x3b6622,_0x5c3f21,_0x2eced5,_0x41fde3,_0x56890d){db[_[_0x9bb3('0x9')](_0x41fde3)+_0x9bb3('0x12')][_0x9bb3('0x13')]({'where':{'id':getInteractionId(_0x5c3f21,_0x2eced5,_0x41fde3)}})[_0x9bb3('0x14')](function(_0x2b9669){if(_0x2b9669){return _0x2b9669[_0x9bb3('0x15')]({'UserId':_0x3b6622?_0x3b6622['id']:null});}})[_0x9bb3('0x14')](function(_0x14b107){if(_0x14b107){log(_0x9bb3('0x16'),_0x3b6622,_0x5c3f21,_0x2eced5,_0x41fde3,_0x56890d);}})['catch'](function(){log('error',_0x3b6622,_0x5c3f21,_0x2eced5,_0x41fde3,_0x56890d);});}exports[_0x9bb3('0x17')]=function(_0x57ac5e,_0x11d492){return function(_0x177678,_0x352346,_0xe632bc){var _0x31f2be=_0x177678[_0x9bb3('0x18')];var _0x1a4dd1={};var _0x4c13f8=_0x177678[_0x9bb3('0x19')];if(_0x1a4dd1){_0x1a4dd1=_[_0x9bb3('0x1a')](_0x177678[_0x9bb3('0x1b')]);_0x1a4dd1=_[_0x9bb3('0x1c')](_0x1a4dd1,[_0x9bb3('0x1b'),_0x9bb3('0x1d'),_0x9bb3('0x1e'),_0x9bb3('0x1f'),'mobile']);}updateUser(_0x31f2be,_0x1a4dd1,_0x4c13f8,_0x57ac5e,_0x11d492);_0xe632bc(null);};};
\ No newline at end of file
+var _0x1d77=['update','catch','error','user','query','clone','body','omit','html','fax','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','chat-interactions','whatsapp-interactions','InteractionId','upperFirst','unknown','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','findOne','then'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x1d77,0x1de));var _0x71d7=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x1d77[_0x673722];return _0x21249c;};'use strict';var _=require(_0x71d7('0x0'));var db=require(_0x71d7('0x1'))['db'];var loggers={'openchannel':require(_0x71d7('0x2'))('openchannel-interactions'),'mail':require(_0x71d7('0x2'))(_0x71d7('0x3')),'fax':require(_0x71d7('0x2'))(_0x71d7('0x4')),'sms':require('../../config/logger')('sms-interactions'),'chat':require('../../config/logger')(_0x71d7('0x5')),'whatsapp':require('../../config/logger')(_0x71d7('0x6'))};function getInteractionId(_0x2ff454,_0x478c17,_0x2ddafc){if(_0x2ff454&&_0x2ff454[_['upperFirst'](_0x2ddafc)+_0x71d7('0x7')]){return _0x2ff454[_[_0x71d7('0x8')](_0x2ddafc)+'InteractionId'];}else if(_0x2ff454&&_0x2ff454['id']){return _0x2ff454['id'];}else if(_0x478c17&&_0x478c17['id']){return _0x478c17['id'];}else{return _0x71d7('0x9');}}function log(_0x3b01fb,_0x5b94ea,_0x2794ed,_0x341884,_0xf8f346,_0x5eb092){loggers[_0xf8f346['toLowerCase']()][_0x3b01fb](_0x71d7('0xa'),_0x5eb092['toUpperCase'](),_0x5b94ea?_0x5b94ea['id']:null,_0x5b94ea?_0x5b94ea['name']:null,_0x5b94ea?_0x5b94ea[_0x71d7('0xb')]:null,getInteractionId(_0x2794ed,_0x341884,_0xf8f346),_0x2794ed?JSON[_0x71d7('0xc')](_0x2794ed):_0x71d7('0xd'));}function updateUser(_0x1b6595,_0xd76289,_0x4eacce,_0x4927f0,_0x521b30){db[_[_0x71d7('0x8')](_0x4927f0)+'Interaction'][_0x71d7('0xe')]({'where':{'id':getInteractionId(_0xd76289,_0x4eacce,_0x4927f0)}})[_0x71d7('0xf')](function(_0x3d8a4d){if(_0x3d8a4d){return _0x3d8a4d[_0x71d7('0x10')]({'UserId':_0x1b6595?_0x1b6595['id']:null});}})[_0x71d7('0xf')](function(_0x5aae32){if(_0x5aae32){log('info',_0x1b6595,_0xd76289,_0x4eacce,_0x4927f0,_0x521b30);}})[_0x71d7('0x11')](function(){log(_0x71d7('0x12'),_0x1b6595,_0xd76289,_0x4eacce,_0x4927f0,_0x521b30);});}exports['tracked']=function(_0x502ef2,_0x1f39ab){return function(_0x4efbee,_0x1b0148,_0x218c5c){var _0x568889=_0x4efbee[_0x71d7('0x13')];var _0x25c93e={};var _0x4fb978=_0x4efbee[_0x71d7('0x14')];if(_0x25c93e){_0x25c93e=_[_0x71d7('0x15')](_0x4efbee[_0x71d7('0x16')]);_0x25c93e=_[_0x71d7('0x17')](_0x25c93e,['body',_0x71d7('0x18'),'phone',_0x71d7('0x19'),'mobile']);}updateUser(_0x568889,_0x25c93e,_0x4fb978,_0x502ef2,_0x1f39ab);_0x218c5c(null);};};
\ No newline at end of file
index 6dc607a..97fae87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x648c=['../../mysqldb','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','utf8','final','parse','hasOwnProperty','use','License','findOne','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','crypto','util','composable-middleware'];(function(_0x5deb04,_0x2dcd2f){var _0xfd4f79=function(_0x2841f5){while(--_0x2841f5){_0x5deb04['push'](_0x5deb04['shift']());}};_0xfd4f79(++_0x2dcd2f);}(_0x648c,0xa5));var _0xc648=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x648c[_0x3dd15e];return _0x231fd0;};'use strict';var crypto=require(_0xc648('0x0'));var util=require(_0xc648('0x1'));var compose=require(_0xc648('0x2'));var db=require(_0xc648('0x3'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x318caf,_0x350e4b){if(_0x318caf&&_0x350e4b){if(_0x350e4b[_0xc648('0x4')]&&_0x350e4b[_0xc648('0x5')]){var _0xf599e5=_0x350e4b[_0xc648('0x4')];var _0x3854c7=_0x350e4b[_0xc648('0x5')];var _0x4d9f13=_0xf599e5[_0xc648('0x6')]('-')[0x4];var _0x58b49f=_0xf599e5['split']('-')[0x0];var _0x2287a5=crypto[_0xc648('0x7')](_0xc648('0x8'),util[_0xc648('0x9')](_0xc648('0xa'),_0x4d9f13,_0xf599e5,_0x58b49f));var _0x341232=_0x2287a5[_0xc648('0xb')](_0x3854c7,'base64',_0xc648('0xc'));_0x341232+=_0x2287a5[_0xc648('0xd')](_0xc648('0xc'));var _0x479851=JSON[_0xc648('0xe')](_0x341232);return _0x479851[_0xc648('0xf')](_0x318caf)?_0x479851[_0x318caf]:null;}}return null;}function isLimit(_0x494cda,_0x3d7378,_0x2313fa,_0x345df7){var _0x4d023d=_0x3d7378;return compose()[_0xc648('0x10')](function(_0x151510,_0x35ad01,_0x3fd46d){return db[_0xc648('0x11')][_0xc648('0x12')]({'where':{'id':0x1},'raw':!![]})[_0xc648('0x13')](function(_0x41cb71){var _0x245c01=getValueFromLicense(_0x494cda,_0x41cb71);return _0x245c01?_0x245c01:_0x4d023d;})[_0xc648('0x13')](function(_0x164020){_0x4d023d=_0x164020;return _0x2313fa['count'](_0x345df7);})[_0xc648('0x13')](function(_0x1f403a){if(_0x1f403a>=_0x4d023d){return _0x35ad01[_0xc648('0x14')](0x193)[_0xc648('0x15')]({'message':util['format'](_0xc648('0x16'),_0x494cda)});}_0x3fd46d();})[_0xc648('0x17')](function(_0x3ad3e4){_0x3fd46d(_0x3ad3e4);});});}function isUserLimit(){return isLimit(_0xc648('0x18'),0x1,db[_0xc648('0x19')],{'where':{'$or':[{'role':_0xc648('0x1a')},{'role':_0xc648('0x1b')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0xf7bc=['hasOwnProperty','use','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','crypto','util','../../mysqldb','../../config/environment','license','data1','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse'];(function(_0x1d5458,_0x3acf09){var _0x9bf6f=function(_0x8d948c){while(--_0x8d948c){_0x1d5458['push'](_0x1d5458['shift']());}};_0x9bf6f(++_0x3acf09);}(_0xf7bc,0xaa));var _0xcf7b=function(_0xe13cae,_0x2f52ab){_0xe13cae=_0xe13cae-0x0;var _0x498707=_0xf7bc[_0xe13cae];return _0x498707;};'use strict';var crypto=require(_0xcf7b('0x0'));var util=require(_0xcf7b('0x1'));var compose=require('composable-middleware');var db=require(_0xcf7b('0x2'))['db'];var config=require(_0xcf7b('0x3'));function getValueFromLicense(_0x391410,_0xd2d794){if(_0x391410&&_0xd2d794){if(_0xd2d794['data1']&&_0xd2d794[_0xcf7b('0x4')]){var _0x3c6290=_0xd2d794[_0xcf7b('0x5')];var _0x2ec68c=_0xd2d794['license'];var _0x5d6535=_0x3c6290[_0xcf7b('0x6')]('-')[0x4];var _0x433371=_0x3c6290['split']('-')[0x0];var _0x57f61a=crypto[_0xcf7b('0x7')](_0xcf7b('0x8'),util[_0xcf7b('0x9')](_0xcf7b('0xa'),_0x5d6535,_0x3c6290,_0x433371));var _0x4f766f=_0x57f61a[_0xcf7b('0xb')](_0x2ec68c,_0xcf7b('0xc'),_0xcf7b('0xd'));_0x4f766f+=_0x57f61a[_0xcf7b('0xe')]('utf8');var _0x59d8e9=JSON[_0xcf7b('0xf')](_0x4f766f);return _0x59d8e9[_0xcf7b('0x10')](_0x391410)?_0x59d8e9[_0x391410]:null;}}return null;}function isLimit(_0x47faff,_0x3f403c,_0x43f35d,_0x39a622){var _0x2281e9=_0x3f403c;return compose()[_0xcf7b('0x11')](function(_0x1009ee,_0x188d2a,_0x5b5ab8){return db[_0xcf7b('0x12')][_0xcf7b('0x13')]({'where':{'id':0x1},'raw':!![]})[_0xcf7b('0x14')](function(_0x475df1){var _0x5982ec=getValueFromLicense(_0x47faff,_0x475df1);return _0x5982ec?_0x5982ec:_0x2281e9;})[_0xcf7b('0x14')](function(_0x33e954){_0x2281e9=_0x33e954;return _0x43f35d[_0xcf7b('0x15')](_0x39a622);})[_0xcf7b('0x14')](function(_0x309b9e){if(_0x309b9e>=_0x2281e9){return _0x188d2a[_0xcf7b('0x16')](0x193)[_0xcf7b('0x17')]({'message':util[_0xcf7b('0x9')](_0xcf7b('0x18'),_0x47faff)});}_0x5b5ab8();})[_0xcf7b('0x19')](function(_0x2a7c51){_0x5b5ab8(_0x2a7c51);});});}function isUserLimit(){return isLimit(_0xcf7b('0x1a'),0x1,db[_0xcf7b('0x1b')],{'where':{'$or':[{'role':_0xcf7b('0x1c')},{'role':_0xcf7b('0x1d')}]}});}exports[_0xcf7b('0x1e')]=isUserLimit;
\ No newline at end of file
index 0055332..8930f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc256=['$gte','>=\x20?','start','utcOffset','minutes','seconds','moment','parseSearch','sqlOperator','startsWith','[$or]','and','[$and]','replace','split','length','slice','forEach','shift','indexOf','map','conditions','push','buildExpression','DATE','$eq','$between','includes','$gt','value','add','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','operator','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$lte','<=\x20?'];(function(_0x5b760f,_0x35cd07){var _0x3146ee=function(_0x140f1e){while(--_0x140f1e){_0x5b760f['push'](_0x5b760f['shift']());}};_0x3146ee(++_0x35cd07);}(_0xc256,0x18e));var _0x6c25=function(_0x149a9c,_0x571c3d){_0x149a9c=_0x149a9c-0x0;var _0x3e2c6a=_0xc256[_0x149a9c];return _0x3e2c6a;};'use strict';var _=require('lodash');var moment=require(_0x6c25('0x0'));exports[_0x6c25('0x1')]=function(_0x2073e6){var _0x4231b8={'conditions':[]};_0x4231b8[_0x6c25('0x2')]=_[_0x6c25('0x3')](_0x2073e6,_0x6c25('0x4'))?'or':_0x6c25('0x5');var _0x48a73f=_0x2073e6['replace'](_0x6c25('0x6'),'')[_0x6c25('0x7')](_0x6c25('0x4'),'')[_0x6c25('0x8')]('||');for(var _0x81f69a=0x0;_0x81f69a<_0x48a73f[_0x6c25('0x9')];_0x81f69a++){var _0x104c17=_0x48a73f[_0x81f69a]['split'](':=');var _0x2b465d=_0x104c17[0x0];var _0x2c2b61=_0x104c17[_0x6c25('0xa')](0x1);_0x2c2b61[_0x6c25('0xb')](function(_0x43c0f3){var _0x472392=_0x43c0f3['split']('[')[_0x6c25('0xc')]();var _0x5c8e9b=_0x43c0f3['match'](/\[(.*?)\]/g);_0x5c8e9b[_0x6c25('0xb')](function(_0x1287ff){var _0x10f0d6=_0x1287ff[_0x6c25('0x8')]('[')['filter'](function(_0x5b96b3){return _0x5b96b3[_0x6c25('0xd')](']')>-0x1;})[_0x6c25('0xe')](function(_0x47ea77){return _0x47ea77['split'](']')[0x0];})[0x0];_0x4231b8[_0x6c25('0xf')][_0x6c25('0x10')]({'field':_0x2b465d,'operator':_0x472392,'value':_0x10f0d6});});});}return _0x4231b8;};exports[_0x6c25('0x11')]=function(_0x271ed1,_0x2faddd,_0x1155b8){var _0x139158={};if(_0x2faddd===_0x6c25('0x12')){if(_0x1155b8['operator']===_0x6c25('0x13')){_0x1155b8['operator']=_0x6c25('0x14');_0x1155b8['value']+=','+_0x1155b8['value'];}else if(_[_0x6c25('0x15')]([_0x6c25('0x16'),'$lte'],_0x1155b8['operator'])){_0x1155b8[_0x6c25('0x17')]=moment(_0x1155b8[_0x6c25('0x17')])[_0x6c25('0x18')](0x1,'days')[_0x6c25('0x19')](_0x6c25('0x1a'));}}if(_0x1155b8[_0x6c25('0x1b')]){_0x2faddd=_0x1155b8[_0x6c25('0x1b')];_0x139158[_0x6c25('0x1c')]=_0x6c25('0x1d')+_0x271ed1+'.'+_0x1155b8[_0x6c25('0x1e')]+_0x6c25('0x1f')+_0x1155b8[_0x6c25('0x1b')]+')\x20'+parseOperator(_0x1155b8[_0x6c25('0x20')]);}else{_0x139158[_0x6c25('0x1c')]=_0x271ed1+'.'+_0x1155b8[_0x6c25('0x1e')]+'\x20'+parseOperator(_0x1155b8[_0x6c25('0x20')]);}if(_[_0x6c25('0x15')]([_0x6c25('0x21'),_0x6c25('0x22')],_0x1155b8['operator']))_0x139158['text']='('+_0x139158[_0x6c25('0x1c')]+_0x6c25('0x23')+_0x271ed1+'.'+_0x1155b8[_0x6c25('0x1e')]+_0x6c25('0x24');_0x139158[_0x6c25('0x17')]=parseValue(_0x2faddd,_0x1155b8[_0x6c25('0x20')],_0x1155b8[_0x6c25('0x17')]);return _0x139158;};function parseOperator(_0x5391fa){var _0x3fd537;switch(_0x5391fa){case _0x6c25('0x25'):_0x3fd537=_0x6c25('0x26');break;case _0x6c25('0x22'):_0x3fd537=_0x6c25('0x27');break;case'$eq':_0x3fd537='=\x20?';break;case _0x6c25('0x21'):_0x3fd537=_0x6c25('0x28');break;case _0x6c25('0x29'):case _0x6c25('0x2a'):case _0x6c25('0x2b'):_0x3fd537=_0x6c25('0x2c');break;case _0x6c25('0x2d'):_0x3fd537=_0x6c25('0x2e');break;case _0x6c25('0x16'):_0x3fd537=_0x6c25('0x2f');break;case _0x6c25('0x30'):_0x3fd537=_0x6c25('0x31');break;case _0x6c25('0x32'):_0x3fd537=_0x6c25('0x33');break;case'$between':_0x3fd537='BETWEEN\x20?\x20AND\x20?';break;}return _0x3fd537;}function parseValue(_0x22b428,_0x4d8578,_0x4dbc82){var _0x3c1140={'start':undefined,'end':undefined};switch(_0x4d8578){case _0x6c25('0x25'):case _0x6c25('0x22'):_0x3c1140[_0x6c25('0x34')]=_0x4dbc82[_0x6c25('0x8')](',');break;case'$substring':_0x3c1140['start']='%'+_0x4dbc82+'%';break;case _0x6c25('0x2a'):_0x3c1140[_0x6c25('0x34')]=_0x4dbc82+'%';break;case'$endsWith':_0x3c1140[_0x6c25('0x34')]='%'+_0x4dbc82;break;case _0x6c25('0x14'):var _0xeb7c5b=_0x4dbc82[_0x6c25('0x8')](',');var _0x4dbc82=_0xeb7c5b[_0x6c25('0xc')]();var _0x49cfb5=_0xeb7c5b['pop']();if(_0x22b428===_0x6c25('0x12')){_0x4dbc82=moment(_0x4dbc82)[_0x6c25('0x35')](0x0,!![])[_0x6c25('0x19')]();_0x49cfb5=moment(_0x49cfb5)[_0x6c25('0x35')](0x0,!![])['add'](0x17,'hours')[_0x6c25('0x18')](0x3b,_0x6c25('0x36'))[_0x6c25('0x18')](0x3b,_0x6c25('0x37'))[_0x6c25('0x19')]();}_0x3c1140={'start':_0x4dbc82,'end':_0x49cfb5};break;default:_0x3c1140['start']=_0x4dbc82;break;}return _0x3c1140;}
\ No newline at end of file
+var _0xd404=['pop','format','utcOffset','seconds','lodash','moment','parseSearch','sqlOperator','[$or]','and','replace','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$between','value','includes','$gt','$lte','add','days','castTo','text','CAST(','field','\x20AS\x20','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','$notIn','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','$lt','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','start'];(function(_0x2659fd,_0x420186){var _0x12b1c6=function(_0x260fb5){while(--_0x260fb5){_0x2659fd['push'](_0x2659fd['shift']());}};_0x12b1c6(++_0x420186);}(_0xd404,0xa9));var _0x4d40=function(_0xaa8cb0,_0x30040e){_0xaa8cb0=_0xaa8cb0-0x0;var _0x453a2b=_0xd404[_0xaa8cb0];return _0x453a2b;};'use strict';var _=require(_0x4d40('0x0'));var moment=require(_0x4d40('0x1'));exports[_0x4d40('0x2')]=function(_0x5d310e){var _0x4e807f={'conditions':[]};_0x4e807f[_0x4d40('0x3')]=_['startsWith'](_0x5d310e,_0x4d40('0x4'))?'or':_0x4d40('0x5');var _0x494ab3=_0x5d310e[_0x4d40('0x6')](_0x4d40('0x7'),'')[_0x4d40('0x6')](_0x4d40('0x4'),'')[_0x4d40('0x8')]('||');for(var _0x348b76=0x0;_0x348b76<_0x494ab3[_0x4d40('0x9')];_0x348b76++){var _0x4197da=_0x494ab3[_0x348b76][_0x4d40('0x8')](':=');var _0x4d7b69=_0x4197da[0x0];var _0x2182bc=_0x4197da[_0x4d40('0xa')](0x1);_0x2182bc[_0x4d40('0xb')](function(_0x42d0e3){var _0x59a1ba=_0x42d0e3[_0x4d40('0x8')]('[')[_0x4d40('0xc')]();var _0x1e29fe=_0x42d0e3[_0x4d40('0xd')](/\[(.*?)\]/g);_0x1e29fe[_0x4d40('0xb')](function(_0x3ff84a){var _0x2e981b=_0x3ff84a[_0x4d40('0x8')]('[')[_0x4d40('0xe')](function(_0x146681){return _0x146681[_0x4d40('0xf')](']')>-0x1;})[_0x4d40('0x10')](function(_0x17c1db){return _0x17c1db['split'](']')[0x0];})[0x0];_0x4e807f[_0x4d40('0x11')][_0x4d40('0x12')]({'field':_0x4d7b69,'operator':_0x59a1ba,'value':_0x2e981b});});});}return _0x4e807f;};exports[_0x4d40('0x13')]=function(_0x57c812,_0x1e235e,_0x40fdb0){var _0x542886={};if(_0x1e235e===_0x4d40('0x14')){if(_0x40fdb0[_0x4d40('0x15')]==='$eq'){_0x40fdb0[_0x4d40('0x15')]=_0x4d40('0x16');_0x40fdb0[_0x4d40('0x17')]+=','+_0x40fdb0['value'];}else if(_[_0x4d40('0x18')]([_0x4d40('0x19'),_0x4d40('0x1a')],_0x40fdb0[_0x4d40('0x15')])){_0x40fdb0['value']=moment(_0x40fdb0['value'])[_0x4d40('0x1b')](0x1,_0x4d40('0x1c'))['format']('YYYY-MM-DD');}}if(_0x40fdb0['castTo']){_0x1e235e=_0x40fdb0[_0x4d40('0x1d')];_0x542886[_0x4d40('0x1e')]=_0x4d40('0x1f')+_0x57c812+'.'+_0x40fdb0[_0x4d40('0x20')]+_0x4d40('0x21')+_0x40fdb0[_0x4d40('0x1d')]+')\x20'+parseOperator(_0x40fdb0[_0x4d40('0x15')]);}else{_0x542886['text']=_0x57c812+'.'+_0x40fdb0[_0x4d40('0x20')]+'\x20'+parseOperator(_0x40fdb0[_0x4d40('0x15')]);}if(_[_0x4d40('0x18')]([_0x4d40('0x22'),'$notIn'],_0x40fdb0[_0x4d40('0x15')]))_0x542886[_0x4d40('0x1e')]='('+_0x542886['text']+_0x4d40('0x23')+_0x57c812+'.'+_0x40fdb0[_0x4d40('0x20')]+_0x4d40('0x24');_0x542886[_0x4d40('0x17')]=parseValue(_0x1e235e,_0x40fdb0[_0x4d40('0x15')],_0x40fdb0[_0x4d40('0x17')]);return _0x542886;};function parseOperator(_0x4a243d){var _0x1231ab;switch(_0x4a243d){case _0x4d40('0x25'):_0x1231ab=_0x4d40('0x26');break;case _0x4d40('0x27'):_0x1231ab=_0x4d40('0x28');break;case'$eq':_0x1231ab=_0x4d40('0x29');break;case _0x4d40('0x22'):_0x1231ab=_0x4d40('0x2a');break;case _0x4d40('0x2b'):case _0x4d40('0x2c'):case _0x4d40('0x2d'):_0x1231ab='LIKE\x20?';break;case _0x4d40('0x2e'):_0x1231ab='<\x20?';break;case'$gt':_0x1231ab='>\x20?';break;case _0x4d40('0x1a'):_0x1231ab='<=\x20?';break;case _0x4d40('0x2f'):_0x1231ab=_0x4d40('0x30');break;case'$between':_0x1231ab=_0x4d40('0x31');break;}return _0x1231ab;}function parseValue(_0x2ff719,_0xb701a6,_0x3eb16f){var _0x10d3f6={'start':undefined,'end':undefined};switch(_0xb701a6){case'$in':case _0x4d40('0x27'):_0x10d3f6[_0x4d40('0x32')]=_0x3eb16f[_0x4d40('0x8')](',');break;case _0x4d40('0x2b'):_0x10d3f6[_0x4d40('0x32')]='%'+_0x3eb16f+'%';break;case _0x4d40('0x2c'):_0x10d3f6[_0x4d40('0x32')]=_0x3eb16f+'%';break;case'$endsWith':_0x10d3f6[_0x4d40('0x32')]='%'+_0x3eb16f;break;case _0x4d40('0x16'):var _0x2e239=_0x3eb16f['split'](',');var _0x3eb16f=_0x2e239['shift']();var _0x2107b1=_0x2e239[_0x4d40('0x33')]();if(_0x2ff719===_0x4d40('0x14')){_0x3eb16f=moment(_0x3eb16f)['utcOffset'](0x0,!![])[_0x4d40('0x34')]();_0x2107b1=moment(_0x2107b1)[_0x4d40('0x35')](0x0,!![])[_0x4d40('0x1b')](0x17,'hours')[_0x4d40('0x1b')](0x3b,'minutes')[_0x4d40('0x1b')](0x3b,_0x4d40('0x36'))[_0x4d40('0x34')]();}_0x10d3f6={'start':_0x3eb16f,'end':_0x2107b1};break;default:_0x10d3f6[_0x4d40('0x32')]=_0x3eb16f;break;}return _0x10d3f6;}
\ No newline at end of file
index 3659de4..3c25ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['type','isPlainObject','parse','$gte','format','YYYY-MM-DD','$lte','utc','uniqueid','isArray','limit','sort','map','indexOf','cast','col','priority','substr','DESC','unsigned','ASC','omit','length','isObject','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','query','$id','model','name','filters','intersection','attributes','fields','offset','order','where','pick','filter','object','columns','value','merge','lower','options','lodash','moment','keys','includes','split','isEmpty','forOwn','find'];(function(_0x51c52b,_0x147712){var _0x581ce3=function(_0x2e61a0){while(--_0x2e61a0){_0x51c52b['push'](_0x51c52b['shift']());}};_0x581ce3(++_0x147712);}(_0x6aa7,0x178));var _0x76aa=function(_0x446efe,_0x512f2f){_0x446efe=_0x446efe-0x0;var _0x44961b=_0x6aa7[_0x446efe];return _0x44961b;};'use strict';var _=require(_0x76aa('0x0'));var sequelize=require('sequelize');var moment=require(_0x76aa('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0xe07754){var _0x25c818=['ne'];try{var _0x2db4fe=JSON['parse'](_0xe07754);var _0x13f62b=Object[_0x76aa('0x2')](_0x2db4fe)[0x0];return _0x25c818[_0x76aa('0x3')](_0x13f62b);}catch(_0x511588){return![];}}function getOperatorValue(_0x588e62){var _0x1aceaa=JSON['parse'](_0x588e62);var _0x32dee5=Object[_0x76aa('0x2')](_0x1aceaa)[0x0];var _0xa9b695=_0x1aceaa[_0x32dee5];return{['$'+_0x32dee5]:_0xa9b695};}exports['fields']=function(_0x3dae33){var _0x266bd5=null;if(_0x3dae33){_0x266bd5=_0x3dae33[_0x76aa('0x4')](',');}return _0x266bd5;};exports['filters']=function(_0xcd99aa,_0x25856d){var _0x41643a={};if(!_[_0x76aa('0x5')](_0xcd99aa)){_[_0x76aa('0x6')](_0xcd99aa,function(_0x128435,_0x2c5075){try{if(_0x25856d){var _0x8dc35c=_[_0x76aa('0x7')](_0x25856d,{'name':_0x2c5075})||{};if(hasSequelizeOperator(_0x128435)){_0x41643a[_0x2c5075]=getOperatorValue(_0x128435);}else if(_0x8dc35c[_0x76aa('0x8')]==='DATE'&&_[_0x76aa('0x9')](_0x128435)){var _0x5df49c=JSON[_0x76aa('0xa')](_0x128435);var _0x12dde0={'$gte':moment(moment(_0x5df49c[_0x76aa('0xb')])[_0x76aa('0xc')](_0x76aa('0xd')))['utc']()['format'](),'$lte':moment(moment(_0x5df49c[_0x76aa('0xe')])['format'](_0x76aa('0xd')))[_0x76aa('0xf')]()['subtract'](0x1,'s')[_0x76aa('0xc')]()};_0x41643a[_0x2c5075]=_0x12dde0;}else if(_0x8dc35c['name']===_0x76aa('0x10')){_0x41643a[_0x2c5075]=_0x128435;}else{_0x41643a[_0x2c5075]=_['isArray'](_0x128435)?_0x128435:JSON[_0x76aa('0xa')](_0x128435);}}else{_0x41643a[_0x2c5075]=_[_0x76aa('0x11')](_0x128435)?_0x128435:JSON[_0x76aa('0xa')](_0x128435);}}catch(_0x21c16d){_0x41643a[_0x2c5075]=_0x128435[_0x76aa('0x4')](',');}});}return _0x41643a;};exports[_0x76aa('0x12')]=function(_0x496902){_0x496902=parseInt(_0x496902,0xa);if(!_0x496902||_0x496902<0x0){_0x496902=LIMIT_VALUE;}return _0x496902;};exports['offset']=function(_0x256636){_0x256636=parseInt(_0x256636,0xa);if(!_0x256636||_0x256636<0x0){_0x256636=0x0;}return _0x256636;};exports[_0x76aa('0x13')]=function(_0xf0711){var _0x15b931,_0x15109b=null;if(_0xf0711){_0x15b931=_0xf0711[_0x76aa('0x4')](',');_0x15109b=_[_0x76aa('0x14')](_0x15b931,function(_0x2eaf48){if(_0x2eaf48[_0x76aa('0x15')]('-')===0x0){return[_0x2eaf48==='priority'?sequelize[_0x76aa('0x16')](sequelize[_0x76aa('0x17')](_0x76aa('0x18')),'unsigned'):_0x2eaf48[_0x76aa('0x19')](0x1),_0x76aa('0x1a')];}else{return[_0x2eaf48===_0x76aa('0x18')?sequelize[_0x76aa('0x16')](sequelize[_0x76aa('0x17')](_0x76aa('0x18')),_0x76aa('0x1b')):_0x2eaf48,_0x76aa('0x1c')];}});}return _0x15109b;};exports[_0x76aa('0x1d')]=function(_0x2cba6d,_0x37f1ab){if(_[_0x76aa('0x5')](_0x2cba6d)){return _0x2cba6d;}if(_[_0x76aa('0x11')](_0x2cba6d)){for(var _0x4ef9b0=0x0;_0x4ef9b0<_0x2cba6d[_0x76aa('0x1e')];_0x4ef9b0+=0x1){_0x2cba6d[_0x4ef9b0]=this[_0x76aa('0x1d')](_0x2cba6d[_0x4ef9b0],_0x37f1ab);}return _0x2cba6d;}if(!_[_0x76aa('0x1f')](_0x2cba6d)){return _0x2cba6d;}if(_[_0x76aa('0x20')](_0x37f1ab)){_0x37f1ab=[_0x37f1ab];}if(!_[_0x76aa('0x11')](_0x37f1ab)){return _0x2cba6d;}for(var _0x2f9316=0x0;_0x2f9316<_0x37f1ab[_0x76aa('0x1e')];_0x2f9316+=0x1){_[_0x76aa('0x21')](_0x2cba6d,_0x37f1ab[_0x2f9316]);}for(var _0xd12a99 in _0x2cba6d){if(_0x2cba6d[_0x76aa('0x22')](_0xd12a99)){_0x2cba6d[_0xd12a99]=this['omit'](_0x2cba6d[_0xd12a99],_0x37f1ab);}}return _0x2cba6d;};exports[_0x76aa('0x23')]=function(_0x5a8030){return _0x5a8030[_0x76aa('0x24')](RegExp(_0x76aa('0x25')))?!![]:![];};exports[_0x76aa('0x26')]=function(_0x1e90b9){return _0x1e90b9[_0x76aa('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0x76aa('0x27')]=function(_0x2ee0f9){var _0x3827ec=[];_0x2ee0f9[_0x76aa('0x4')](/[ ,]+/)[_0x76aa('0x28')](function(_0x5edcd8){_0x5edcd8=_0x5edcd8[_0x76aa('0x29')](/([^:]")"+/g,'$1');_0x5edcd8='+'+_0x5edcd8+'*';var _0x5532c7=/[ `!@#$%^&*()_\-?~]/;if(_0x5edcd8[_0x76aa('0x24')](_0x5532c7))_0x5edcd8='\x22'+_0x5edcd8+'\x22';_0x3827ec[_0x76aa('0x2a')](_0x5edcd8);});return _0x3827ec[_0x76aa('0x2b')]('\x20');};exports[_0x76aa('0x2c')]=function(_0x35a705,_0x4eb57a,_0x258624){var _0x25a11f={},_0x5a0f72={};if(_0x4eb57a[_0x76aa('0x2d')]['$id']){_0x4eb57a[_0x76aa('0x2d')]['id']=_0x4eb57a['query'][_0x76aa('0x2e')];delete _0x4eb57a['query']['$id'];}_0x25a11f[_0x76aa('0x2f')]=_[_0x76aa('0x14')](_0x35a705,_0x76aa('0x30'));_0x25a11f[_0x76aa('0x2d')]=_['keys'](_0x4eb57a['query']);_0x25a11f[_0x76aa('0x31')]=_[_0x76aa('0x32')](_0x25a11f[_0x76aa('0x2f')],_0x25a11f[_0x76aa('0x2d')]);_0x5a0f72[_0x76aa('0x33')]=_['intersection'](_0x25a11f[_0x76aa('0x2f')],this['fields'](_0x4eb57a['query'][_0x76aa('0x34')]));_0x5a0f72[_0x76aa('0x33')]=_0x5a0f72[_0x76aa('0x33')][_0x76aa('0x1e')]?_0x5a0f72['attributes']:_0x25a11f[_0x76aa('0x2f')];if(!_0x4eb57a[_0x76aa('0x2d')][_0x76aa('0x22')]('nolimit')){_0x5a0f72[_0x76aa('0x12')]=this[_0x76aa('0x12')](_0x4eb57a[_0x76aa('0x2d')][_0x76aa('0x12')]);_0x5a0f72[_0x76aa('0x35')]=this[_0x76aa('0x35')](_0x4eb57a[_0x76aa('0x2d')][_0x76aa('0x35')]);}_0x5a0f72[_0x76aa('0x36')]=this['sort'](_0x4eb57a[_0x76aa('0x2d')][_0x76aa('0x13')]);_0x5a0f72[_0x76aa('0x37')]=this[_0x76aa('0x31')](_[_0x76aa('0x38')](_0x4eb57a[_0x76aa('0x2d')],_0x25a11f['filters']),_0x35a705);if(_0x4eb57a['query'][_0x76aa('0x39')]){var _0x262906=_0x35a705;var _0x426454=_0x4eb57a[_0x76aa('0x2d')]['filter'];if(typeof _0x426454===_0x76aa('0x3a')){_0x262906=_[_0x76aa('0x39')](_0x35a705,function(_0x154567){return _[_0x76aa('0x3')](_0x426454[_0x76aa('0x3b')],_0x154567['name']);});_0x426454=_0x426454[_0x76aa('0x3c')];}_0x5a0f72['where']=_[_0x76aa('0x3d')](_0x5a0f72['where'],{'$or':_['map'](_0x262906,function(_0x4f7f3a){if(_0x4f7f3a[_0x76aa('0x8')]!=='VIRTUAL'){if(_0x258624){return sequelize['where'](sequelize['fn']('lower',sequelize[_0x76aa('0x17')](_0x4f7f3a[_0x76aa('0x30')])),{'$like':sequelize['fn'](_0x76aa('0x3e'),'%'+_0x4eb57a[_0x76aa('0x2d')][_0x76aa('0x39')]+'%')});}else{var _0x47b0c8={};_0x47b0c8[_0x4f7f3a[_0x76aa('0x30')]]={'$like':'%'+_0x4eb57a[_0x76aa('0x2d')][_0x76aa('0x39')]+'%'};return _0x47b0c8;}}})});}_0x5a0f72=_[_0x76aa('0x3d')]({},_0x5a0f72,_0x4eb57a[_0x76aa('0x3f')]);return _0x5a0f72;};
\ No newline at end of file
+var _0x8958=['$gte','format','YYYY-MM-DD','utc','subtract','uniqueid','isArray','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','DESC','omit','length','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','forEach','replace','join','$id','query','model','name','intersection','attributes','fields','order','pick','filter','object','columns','lower','options','sequelize','parse','keys','includes','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject'];(function(_0x3a4d9c,_0x2a2933){var _0xe25ca2=function(_0x36af75){while(--_0x36af75){_0x3a4d9c['push'](_0x3a4d9c['shift']());}};_0xe25ca2(++_0x2a2933);}(_0x8958,0x93));var _0x8895=function(_0x290ead,_0x157d98){_0x290ead=_0x290ead-0x0;var _0x5f58de=_0x8958[_0x290ead];return _0x5f58de;};'use strict';var _=require('lodash');var sequelize=require(_0x8895('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x4eda63){var _0x5baab1=['ne'];try{var _0x4cea64=JSON[_0x8895('0x1')](_0x4eda63);var _0x56e738=Object[_0x8895('0x2')](_0x4cea64)[0x0];return _0x5baab1[_0x8895('0x3')](_0x56e738);}catch(_0x26d8e3){return![];}}function getOperatorValue(_0x59e641){var _0x22fa52=JSON[_0x8895('0x1')](_0x59e641);var _0x124e1e=Object[_0x8895('0x2')](_0x22fa52)[0x0];var _0x33013a=_0x22fa52[_0x124e1e];return{['$'+_0x124e1e]:_0x33013a};}exports['fields']=function(_0xe018b8){var _0xc2be9f=null;if(_0xe018b8){_0xc2be9f=_0xe018b8[_0x8895('0x4')](',');}return _0xc2be9f;};exports[_0x8895('0x5')]=function(_0x6eab1e,_0x29c126){var _0x22a12b={};if(!_[_0x8895('0x6')](_0x6eab1e)){_[_0x8895('0x7')](_0x6eab1e,function(_0x107d86,_0x4d1358){try{if(_0x29c126){var _0x1cf600=_[_0x8895('0x8')](_0x29c126,{'name':_0x4d1358})||{};if(hasSequelizeOperator(_0x107d86)){_0x22a12b[_0x4d1358]=getOperatorValue(_0x107d86);}else if(_0x1cf600[_0x8895('0x9')]===_0x8895('0xa')&&_[_0x8895('0xb')](_0x107d86)){var _0xaf93bc=JSON['parse'](_0x107d86);var _0x24c53d={'$gte':moment(moment(_0xaf93bc[_0x8895('0xc')])[_0x8895('0xd')]('YYYY-MM-DD'))['utc']()[_0x8895('0xd')](),'$lte':moment(moment(_0xaf93bc['$lte'])[_0x8895('0xd')](_0x8895('0xe')))[_0x8895('0xf')]()[_0x8895('0x10')](0x1,'s')[_0x8895('0xd')]()};_0x22a12b[_0x4d1358]=_0x24c53d;}else if(_0x1cf600['name']===_0x8895('0x11')){_0x22a12b[_0x4d1358]=_0x107d86;}else{_0x22a12b[_0x4d1358]=_[_0x8895('0x12')](_0x107d86)?_0x107d86:JSON[_0x8895('0x1')](_0x107d86);}}else{_0x22a12b[_0x4d1358]=_[_0x8895('0x12')](_0x107d86)?_0x107d86:JSON[_0x8895('0x1')](_0x107d86);}}catch(_0x1b5c82){_0x22a12b[_0x4d1358]=_0x107d86[_0x8895('0x4')](',');}});}return _0x22a12b;};exports[_0x8895('0x13')]=function(_0x135c11){_0x135c11=parseInt(_0x135c11,0xa);if(!_0x135c11||_0x135c11<0x0){_0x135c11=LIMIT_VALUE;}return _0x135c11;};exports[_0x8895('0x14')]=function(_0x24fef0){_0x24fef0=parseInt(_0x24fef0,0xa);if(!_0x24fef0||_0x24fef0<0x0){_0x24fef0=0x0;}return _0x24fef0;};exports[_0x8895('0x15')]=function(_0x2df795){var _0x54e6d4,_0x522a4e=null;if(_0x2df795){_0x54e6d4=_0x2df795['split'](',');_0x522a4e=_[_0x8895('0x16')](_0x54e6d4,function(_0x456282){if(_0x456282[_0x8895('0x17')]('-')===0x0){return[_0x456282===_0x8895('0x18')?sequelize[_0x8895('0x19')](sequelize[_0x8895('0x1a')](_0x8895('0x18')),_0x8895('0x1b')):_0x456282['substr'](0x1),_0x8895('0x1c')];}else{return[_0x456282===_0x8895('0x18')?sequelize[_0x8895('0x19')](sequelize[_0x8895('0x1a')](_0x8895('0x18')),'unsigned'):_0x456282,'ASC'];}});}return _0x522a4e;};exports[_0x8895('0x1d')]=function(_0x398382,_0x38f7ad){if(_[_0x8895('0x6')](_0x398382)){return _0x398382;}if(_['isArray'](_0x398382)){for(var _0x25da11=0x0;_0x25da11<_0x398382[_0x8895('0x1e')];_0x25da11+=0x1){_0x398382[_0x25da11]=this[_0x8895('0x1d')](_0x398382[_0x25da11],_0x38f7ad);}return _0x398382;}if(!_['isObject'](_0x398382)){return _0x398382;}if(_['isString'](_0x38f7ad)){_0x38f7ad=[_0x38f7ad];}if(!_[_0x8895('0x12')](_0x38f7ad)){return _0x398382;}for(var _0x555e60=0x0;_0x555e60<_0x38f7ad[_0x8895('0x1e')];_0x555e60+=0x1){_[_0x8895('0x1f')](_0x398382,_0x38f7ad[_0x555e60]);}for(var _0x10b48f in _0x398382){if(_0x398382[_0x8895('0x20')](_0x10b48f)){_0x398382[_0x10b48f]=this[_0x8895('0x1d')](_0x398382[_0x10b48f],_0x38f7ad);}}return _0x398382;};exports['isNumeric']=function(_0x4d567a){return _0x4d567a[_0x8895('0x21')](RegExp(_0x8895('0x22')))?!![]:![];};exports[_0x8895('0x23')]=function(_0x16b65b){return _0x16b65b[_0x8895('0x21')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x4ce759){var _0x46ae32=[];_0x4ce759[_0x8895('0x4')](/[ ,]+/)[_0x8895('0x24')](function(_0x29f565){_0x29f565=_0x29f565[_0x8895('0x25')](/([^:]")"+/g,'$1');_0x29f565='+'+_0x29f565+'*';var _0x52f2ac=/[ `!@#$%^&*()_\-?~]/;if(_0x29f565[_0x8895('0x21')](_0x52f2ac))_0x29f565='\x22'+_0x29f565+'\x22';_0x46ae32['push'](_0x29f565);});return _0x46ae32[_0x8895('0x26')]('\x20');};exports['getOptions']=function(_0x40ba14,_0x1a3fe5,_0x233473){var _0x3e71fa={},_0x1dca3d={};if(_0x1a3fe5['query'][_0x8895('0x27')]){_0x1a3fe5[_0x8895('0x28')]['id']=_0x1a3fe5[_0x8895('0x28')][_0x8895('0x27')];delete _0x1a3fe5[_0x8895('0x28')]['$id'];}_0x3e71fa[_0x8895('0x29')]=_['map'](_0x40ba14,_0x8895('0x2a'));_0x3e71fa['query']=_[_0x8895('0x2')](_0x1a3fe5[_0x8895('0x28')]);_0x3e71fa[_0x8895('0x5')]=_[_0x8895('0x2b')](_0x3e71fa[_0x8895('0x29')],_0x3e71fa['query']);_0x1dca3d[_0x8895('0x2c')]=_['intersection'](_0x3e71fa[_0x8895('0x29')],this[_0x8895('0x2d')](_0x1a3fe5[_0x8895('0x28')][_0x8895('0x2d')]));_0x1dca3d[_0x8895('0x2c')]=_0x1dca3d[_0x8895('0x2c')]['length']?_0x1dca3d[_0x8895('0x2c')]:_0x3e71fa[_0x8895('0x29')];if(!_0x1a3fe5['query'][_0x8895('0x20')]('nolimit')){_0x1dca3d[_0x8895('0x13')]=this[_0x8895('0x13')](_0x1a3fe5['query'][_0x8895('0x13')]);_0x1dca3d[_0x8895('0x14')]=this['offset'](_0x1a3fe5['query'][_0x8895('0x14')]);}_0x1dca3d[_0x8895('0x2e')]=this[_0x8895('0x15')](_0x1a3fe5[_0x8895('0x28')][_0x8895('0x15')]);_0x1dca3d['where']=this[_0x8895('0x5')](_[_0x8895('0x2f')](_0x1a3fe5[_0x8895('0x28')],_0x3e71fa[_0x8895('0x5')]),_0x40ba14);if(_0x1a3fe5[_0x8895('0x28')][_0x8895('0x30')]){var _0x4a7e22=_0x40ba14;var _0x174be1=_0x1a3fe5['query'][_0x8895('0x30')];if(typeof _0x174be1===_0x8895('0x31')){_0x4a7e22=_['filter'](_0x40ba14,function(_0x1ca234){return _['includes'](_0x174be1[_0x8895('0x32')],_0x1ca234['name']);});_0x174be1=_0x174be1['value'];}_0x1dca3d['where']=_['merge'](_0x1dca3d['where'],{'$or':_['map'](_0x4a7e22,function(_0x447ed6){if(_0x447ed6[_0x8895('0x9')]!=='VIRTUAL'){if(_0x233473){return sequelize['where'](sequelize['fn'](_0x8895('0x33'),sequelize[_0x8895('0x1a')](_0x447ed6['name'])),{'$like':sequelize['fn'](_0x8895('0x33'),'%'+_0x1a3fe5[_0x8895('0x28')][_0x8895('0x30')]+'%')});}else{var _0x3b873b={};_0x3b873b[_0x447ed6[_0x8895('0x2a')]]={'$like':'%'+_0x1a3fe5['query']['filter']+'%'};return _0x3b873b;}}})});}_0x1dca3d=_['merge']({},_0x1dca3d,_0x1a3fe5[_0x8895('0x34')]);return _0x1dca3d;};
\ No newline at end of file
index c07683e..2c576bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa12f=['50mb','json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','path','moment','../mysqldb','production','appPath','join','development','set','root','client','use','toISOString','split','static','get','views','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded'];(function(_0x49f52e,_0x56bc37){var _0x23b418=function(_0x24fc29){while(--_0x24fc29){_0x49f52e['push'](_0x49f52e['shift']());}};_0x23b418(++_0x56bc37);}(_0xa12f,0x11a));var _0xfa12=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa12f[_0x14add3];return _0x4a174f;};'use strict';var express=require(_0xfa12('0x0'));var favicon=require(_0xfa12('0x1'));var bodyParser=require(_0xfa12('0x2'));var methodOverride=require(_0xfa12('0x3'));var cookieParser=require(_0xfa12('0x4'));var errorHandler=require('errorhandler');var path=require(_0xfa12('0x5'));var passport=require('passport');var cors=require('cors');var moment=require(_0xfa12('0x6'));var config=require('./environment');var db=require(_0xfa12('0x7'))['db'];exports['default']=function(_0x9a9de){var _0x44fc9b=_0x9a9de['get']('env');if(_0x44fc9b===_0xfa12('0x8')){_0x9a9de['set'](_0xfa12('0x9'),path[_0xfa12('0xa')](config['root'],'public'));}if(_0x44fc9b===_0xfa12('0xb')||_0x44fc9b==='test'){_0x9a9de[_0xfa12('0xc')]('appPath',path[_0xfa12('0xa')](config[_0xfa12('0xd')],_0xfa12('0xe')));_0x9a9de[_0xfa12('0xf')](errorHandler());}_0x9a9de[_0xfa12('0xc')]('json\x20replacer',function(_0xbb0a23,_0xb2be90){if(this[_0xbb0a23]instanceof Date){_0xb2be90=this[_0xbb0a23][_0xfa12('0x10')]()[_0xfa12('0x11')]('.')[0x0]+'Z';}return _0xb2be90;});_0x9a9de[_0xfa12('0xf')](express[_0xfa12('0x12')](_0x9a9de[_0xfa12('0x13')](_0xfa12('0x9'))));_0x9a9de['set'](_0xfa12('0x14'),config[_0xfa12('0xd')]+_0xfa12('0x15'));_0x9a9de[_0xfa12('0x16')](_0xfa12('0x17'),require(_0xfa12('0x18'))[_0xfa12('0x19')]);_0x9a9de[_0xfa12('0xc')](_0xfa12('0x1a'),_0xfa12('0x17'));_0x9a9de[_0xfa12('0xf')](bodyParser[_0xfa12('0x1b')]({'limit':_0xfa12('0x1c'),'extended':!![]}));_0x9a9de[_0xfa12('0xf')](bodyParser[_0xfa12('0x1d')]({'limit':_0xfa12('0x1c')}));_0x9a9de[_0xfa12('0xf')](cors());_0x9a9de['use'](methodOverride());_0x9a9de['use'](cookieParser());_0x9a9de['use'](passport[_0xfa12('0x1e')]());};
\ No newline at end of file
+var _0x301c=['use','json\x20replacer','split','views','/server/views','engine','html','ejs','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','path','moment','./environment','get','env','production','set','appPath','join','root','public','development','test','client'];(function(_0x54118a,_0x512976){var _0x154175=function(_0x5d156f){while(--_0x5d156f){_0x54118a['push'](_0x54118a['shift']());}};_0x154175(++_0x512976);}(_0x301c,0x1ba));var _0xc301=function(_0x51b698,_0x2fd161){_0x51b698=_0x51b698-0x0;var _0xfa0590=_0x301c[_0x51b698];return _0xfa0590;};'use strict';var express=require(_0xc301('0x0'));var favicon=require(_0xc301('0x1'));var bodyParser=require(_0xc301('0x2'));var methodOverride=require(_0xc301('0x3'));var cookieParser=require(_0xc301('0x4'));var errorHandler=require(_0xc301('0x5'));var path=require(_0xc301('0x6'));var passport=require('passport');var cors=require('cors');var moment=require(_0xc301('0x7'));var config=require(_0xc301('0x8'));var db=require('../mysqldb')['db'];exports['default']=function(_0x372871){var _0x581492=_0x372871[_0xc301('0x9')](_0xc301('0xa'));if(_0x581492===_0xc301('0xb')){_0x372871[_0xc301('0xc')](_0xc301('0xd'),path[_0xc301('0xe')](config[_0xc301('0xf')],_0xc301('0x10')));}if(_0x581492===_0xc301('0x11')||_0x581492===_0xc301('0x12')){_0x372871[_0xc301('0xc')](_0xc301('0xd'),path[_0xc301('0xe')](config[_0xc301('0xf')],_0xc301('0x13')));_0x372871[_0xc301('0x14')](errorHandler());}_0x372871['set'](_0xc301('0x15'),function(_0x123167,_0x48b644){if(this[_0x123167]instanceof Date){_0x48b644=this[_0x123167]['toISOString']()[_0xc301('0x16')]('.')[0x0]+'Z';}return _0x48b644;});_0x372871[_0xc301('0x14')](express['static'](_0x372871[_0xc301('0x9')](_0xc301('0xd'))));_0x372871[_0xc301('0xc')](_0xc301('0x17'),config[_0xc301('0xf')]+_0xc301('0x18'));_0x372871[_0xc301('0x19')](_0xc301('0x1a'),require(_0xc301('0x1b'))['renderFile']);_0x372871['set'](_0xc301('0x1c'),'html');_0x372871[_0xc301('0x14')](bodyParser[_0xc301('0x1d')]({'limit':_0xc301('0x1e'),'extended':!![]}));_0x372871[_0xc301('0x14')](bodyParser[_0xc301('0x1f')]({'limit':_0xc301('0x1e')}));_0x372871[_0xc301('0x14')](cors());_0x372871[_0xc301('0x14')](methodOverride());_0x372871[_0xc301('0x14')](cookieParser());_0x372871['use'](passport[_0xc301('0x20')]());};
\ No newline at end of file
index bcaf137..964c176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb512=['keys','length','filter','family','IPv4','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','join','createHash','md5','update','digest','getUuid','platform','licenseToken','test','win32','utf8','replace','hostname','ipAddress','hex','substring','lodash','crypto','../environment','networkInterfaces','orderBy'];(function(_0x3d5798,_0x11a5a4){var _0x2f9b86=function(_0x2023cd){while(--_0x2023cd){_0x3d5798['push'](_0x3d5798['shift']());}};_0x2f9b86(++_0x11a5a4);}(_0xb512,0x83));var _0x2b51=function(_0x3ccf5e,_0x588540){_0x3ccf5e=_0x3ccf5e-0x0;var _0xdb9a93=_0xb512[_0x3ccf5e];return _0xdb9a93;};'use strict';var _=require(_0x2b51('0x0'));var os=require('os');var crypto=require(_0x2b51('0x1'));var machine=require('bimedia-machine-uuid');var exec=require('child_process')['execSync'];var config=require(_0x2b51('0x2'));function getInterfaces(){var _0x2e6574=[];var _0x590ca6=os[_0x2b51('0x3')]();var _0x572228=_[_0x2b51('0x4')](_[_0x2b51('0x5')](_0x590ca6));for(var _0x19bda1=0x0;_0x19bda1<_0x572228[_0x2b51('0x6')];_0x19bda1++){var _0x3f5713=_0x590ca6[_0x572228[_0x19bda1]][_0x2b51('0x7')](function(_0x152f20){return _0x152f20[_0x2b51('0x8')]===_0x2b51('0x9')&&_0x152f20['internal']===![];});_0x2e6574=_0x2e6574['concat'](_0x3f5713);}return _0x2e6574;}function getFirstInterface(){var _0x33305b=_['head'](getInterfaces());return{'macAddress':_0x33305b&&_0x33305b[_0x2b51('0xa')]?_0x33305b[_0x2b51('0xa')]:_0x2b51('0xb'),'ipAddress':_0x33305b&&_0x33305b[_0x2b51('0xc')]?_0x33305b['address']:_0x2b51('0xd')};}exports[_0x2b51('0xe')]=getFirstInterface;function getCPUhash(){var _0x598291=_[_0x2b51('0x4')](os[_0x2b51('0xf')]()[_0x2b51('0x10')](function(_0x27259b){return _0x27259b[_0x2b51('0x11')];}))[_0x2b51('0x12')](':');return crypto[_0x2b51('0x13')](_0x2b51('0x14'))[_0x2b51('0x15')](_0x598291)[_0x2b51('0x16')]('hex');}exports[_0x2b51('0x17')]=function(){var _0x14510d=os[_0x2b51('0x18')]();var _0x172876=/[0-9a-f-]{36}/;if(config[_0x2b51('0x19')]&&_0x172876[_0x2b51('0x1a')](config['licenseToken'])){return config['licenseToken'];}else if(_0x14510d===_0x2b51('0x1b')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x2b51('0x1c')})[_0x2b51('0x1d')]('\x0d\x0a','');}else{var _0x3ed07d=getFirstInterface();var _0x1e0a2c=getCPUhash();var _0x1964b4=_0x1e0a2c+'|'+os[_0x2b51('0x1e')]()+'|'+_0x3ed07d['macAddress']+'|'+_0x3ed07d[_0x2b51('0x1f')];var _0x350757=crypto[_0x2b51('0x13')](_0x2b51('0x14'))['update'](_0x1964b4)[_0x2b51('0x16')](_0x2b51('0x20'));return _0x350757['substring'](0x0,0x8)+'-'+_0x350757['substring'](0x8,0xc)+'-'+_0x350757[_0x2b51('0x21')](0xc,0x10)+'-'+_0x350757['substring'](0x10,0x14)+'-'+_0x350757[_0x2b51('0x21')](0x14);}};
\ No newline at end of file
+var _0x8409=['ipAddress','update','hex','substring','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','cpus','map','model','createHash','md5','digest','getUuid','platform','licenseToken','win32','utf8','replace','hostname'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8409,0x1cb));var _0x9840=function(_0x4d2157,_0x201cf1){_0x4d2157=_0x4d2157-0x0;var _0x172f80=_0x8409[_0x4d2157];return _0x172f80;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0x9840('0x0'));var exec=require(_0x9840('0x1'))[_0x9840('0x2')];var config=require(_0x9840('0x3'));function getInterfaces(){var _0x5bb791=[];var _0x3805a8=os[_0x9840('0x4')]();var _0x3ce4fa=_[_0x9840('0x5')](_[_0x9840('0x6')](_0x3805a8));for(var _0x4fe834=0x0;_0x4fe834<_0x3ce4fa[_0x9840('0x7')];_0x4fe834++){var _0x12d2cb=_0x3805a8[_0x3ce4fa[_0x4fe834]][_0x9840('0x8')](function(_0x151f71){return _0x151f71[_0x9840('0x9')]===_0x9840('0xa')&&_0x151f71[_0x9840('0xb')]===![];});_0x5bb791=_0x5bb791[_0x9840('0xc')](_0x12d2cb);}return _0x5bb791;}function getFirstInterface(){var _0x4d4248=_[_0x9840('0xd')](getInterfaces());return{'macAddress':_0x4d4248&&_0x4d4248[_0x9840('0xe')]?_0x4d4248[_0x9840('0xe')]:_0x9840('0xf'),'ipAddress':_0x4d4248&&_0x4d4248[_0x9840('0x10')]?_0x4d4248[_0x9840('0x10')]:_0x9840('0x11')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x14d2d1=_[_0x9840('0x5')](os[_0x9840('0x12')]()[_0x9840('0x13')](function(_0x4c439b){return _0x4c439b[_0x9840('0x14')];}))['join'](':');return crypto[_0x9840('0x15')](_0x9840('0x16'))['update'](_0x14d2d1)[_0x9840('0x17')]('hex');}exports[_0x9840('0x18')]=function(){var _0x38e0b4=os[_0x9840('0x19')]();var _0x1b6de7=/[0-9a-f-]{36}/;if(config[_0x9840('0x1a')]&&_0x1b6de7['test'](config['licenseToken'])){return config[_0x9840('0x1a')];}else if(_0x38e0b4===_0x9840('0x1b')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x9840('0x1c')})[_0x9840('0x1d')]('\x0d\x0a','');}else{var _0x48e593=getFirstInterface();var _0x57e4c5=getCPUhash();var _0x31ea0f=_0x57e4c5+'|'+os[_0x9840('0x1e')]()+'|'+_0x48e593['macAddress']+'|'+_0x48e593[_0x9840('0x1f')];var _0x1869f5=crypto[_0x9840('0x15')]('md5')[_0x9840('0x20')](_0x31ea0f)['digest'](_0x9840('0x21'));return _0x1869f5['substring'](0x0,0x8)+'-'+_0x1869f5[_0x9840('0x22')](0x8,0xc)+'-'+_0x1869f5['substring'](0xc,0x10)+'-'+_0x1869f5['substring'](0x10,0x14)+'-'+_0x1869f5[_0x9840('0x22')](0x14);}};
\ No newline at end of file
index e7a0da0..4f183fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5f=['moment','version','../../components/encryptor','./hardware','../logger','license','format','%s/api/servers/%s/check?version=%s','exports','get','data1','data2','then','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','catch','default','util'];(function(_0x461a39,_0xe20d5){var _0x354f57=function(_0x24ae83){while(--_0x24ae83){_0x461a39['push'](_0x461a39['shift']());}};_0x354f57(++_0xe20d5);}(_0xee5f,0x117));var _0xfee5=function(_0x23d115,_0x32b0d8){_0x23d115=_0x23d115-0x0;var _0x3eca0e=_0xee5f[_0x23d115];return _0x3eca0e;};'use strict';var util=require(_0xfee5('0x0'));var moment=require(_0xfee5('0x1'));var rp=require('request-promise');var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0xfee5('0x2'));var db=require('../../mysqldb')['db'];var encryptor=require(_0xfee5('0x3'));var hardware=require(_0xfee5('0x4'));var logger=require(_0xfee5('0x5'))(_0xfee5('0x6'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x42b33c){return new BPromise(function(_0x72f882,_0x26a653){var _0x2b8fd7=util[_0xfee5('0x7')](_0xfee5('0x8'),HOST,_0x42b33c,module['exports']['version']);if(oldToken){_0x2b8fd7=util['format']('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x42b33c,module[_0xfee5('0x9')][_0xfee5('0x2')],oldToken);}var _0x5be401={'uri':_0x2b8fd7,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x5be401)['then'](function(_0x2e7f71){_0x72f882(_0x2e7f71);})['catch'](function(_0xdfe760){_0x26a653(_0xdfe760);});});}function manageLicense(_0x29165f,_0x3cd009){var _0xda536c=_0x3cd009[_0xfee5('0xa')]({'plain':!![]});if(!isOldTokenSent&&_0xda536c[_0xfee5('0xb')]!==_0x29165f&&!_0xda536c[_0xfee5('0xc')]){oldToken=_0xda536c['data1'];}httpRequest(_0x29165f)[_0xfee5('0xd')](function(_0x7d99be){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x7d99be[_0xfee5('0xe')]){isOldTokenSent=![];if(!_0xda536c[_0xfee5('0x6')]&&_0xda536c[_0xfee5('0x6')]!=_0x7d99be[_0xfee5('0x6')]||_0xda536c[_0xfee5('0x6')]&&_0xda536c['data2']){logger['info'](_0xfee5('0xf'));}if(_0xda536c[_0xfee5('0x6')]&&!_0xda536c[_0xfee5('0xc')]&&_0xda536c['license']!=_0x7d99be[_0xfee5('0x6')]){logger[_0xfee5('0x10')](_0xfee5('0x11'));}if(_0xda536c['license']&&!_0xda536c[_0xfee5('0xc')]&&_0xda536c[_0xfee5('0x6')]==_0x7d99be[_0xfee5('0x6')]){return _0x3cd009;}return _0x3cd009[_0xfee5('0x12')]({'data1':_0x29165f,'data2':null,'license':_0x7d99be[_0xfee5('0x6')]});}else{if(_0x7d99be['license']||_0xda536c['license']){if(!_0xda536c[_0xfee5('0xc')]){if(_0xda536c[_0xfee5('0xb')]==_0x29165f){GRAY_PERIOD_REASON=_0xfee5('0x13');logger[_0xfee5('0x10')](_0xfee5('0x14'));}else{GRAY_PERIOD_REASON=_0xfee5('0x15');logger[_0xfee5('0x10')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0xda536c['data1'],_0x29165f);}logger[_0xfee5('0x10')](_0xfee5('0x16'),GRAY_PERIOD_REASON[_0xfee5('0x17')](),moment()[_0xfee5('0x7')](_0xfee5('0x18')));return _0x3cd009[_0xfee5('0x12')]({'data2':encryptor['encryptString'](moment()['format'](_0xfee5('0x18')))});}else{if(moment()[_0xfee5('0x19')](encryptor[_0xfee5('0x1a')](_0xda536c['data2']),_0xfee5('0x1b'))>DAYS){logger[_0xfee5('0x10')](_0xfee5('0x1c'),moment()[_0xfee5('0x7')](_0xfee5('0x18')));isOldTokenSent=![];return _0x3cd009[_0xfee5('0x12')]({'data1':_0x29165f,'data2':null,'license':null});}}}else{if(_0xda536c['data1']!=_0x29165f){logger['info'](_0xfee5('0x1d'),_0xda536c[_0xfee5('0xb')],_0x29165f);return _0x3cd009[_0xfee5('0x12')]({'data1':_0x29165f,'data2':null,'license':null});}}}return _0x3cd009;})['then'](function(_0xc572cd){_0x3cd009=_0xc572cd;})['catch'](function(_0x3406e3){logger[_0xfee5('0x1e')](_0x3406e3[_0xfee5('0x1f')]);})[_0xfee5('0x20')](function(){setTimeout(function(){manageLicense(hardware[_0xfee5('0x21')](),_0x3cd009);},TIME);});}function defaultLicense(){var _0x34364d=hardware['getUuid']();if(_0x34364d){return db[_0xfee5('0x22')][_0xfee5('0x23')]({'where':{'id':0x1},'defaults':{'data1':_0x34364d}})[_0xfee5('0x24')](function(_0x399433,_0x22698f){logger[_0xfee5('0x10')](_0xfee5('0x25'),_0x34364d);manageLicense(_0x34364d,_0x399433);})[_0xfee5('0x26')](function(_0x18db72){logger['error'](_0x18db72[_0xfee5('0x1f')]);});}}exports[_0xfee5('0x27')]=defaultLicense;
\ No newline at end of file
+var _0x31ee=['../../components/encryptor','./hardware','../logger','license','%s/api/servers/%s/check?version=%s','exports','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','then','get','data1','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','catch','message','finally','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','request-promise','bluebird','pkginfo','version','../../mysqldb'];(function(_0x5491e5,_0x37a869){var _0x214eb5=function(_0x13a469){while(--_0x13a469){_0x5491e5['push'](_0x5491e5['shift']());}};_0x214eb5(++_0x37a869);}(_0x31ee,0x181));var _0xe31e=function(_0x31197a,_0x3aa8f6){_0x31197a=_0x31197a-0x0;var _0x1b4f8f=_0x31ee[_0x31197a];return _0x1b4f8f;};'use strict';var util=require('util');var moment=require('moment');var rp=require(_0xe31e('0x0'));var BPromise=require(_0xe31e('0x1'));var pkginfo=require(_0xe31e('0x2'))(module,_0xe31e('0x3'));var db=require(_0xe31e('0x4'))['db'];var encryptor=require(_0xe31e('0x5'));var hardware=require(_0xe31e('0x6'));var logger=require(_0xe31e('0x7'))(_0xe31e('0x8'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x3a4636){return new BPromise(function(_0x49f473,_0x39b32f){var _0x1cfa99=util['format'](_0xe31e('0x9'),HOST,_0x3a4636,module[_0xe31e('0xa')][_0xe31e('0x3')]);if(oldToken){_0x1cfa99=util[_0xe31e('0xb')](_0xe31e('0xc'),HOST,_0x3a4636,module[_0xe31e('0xa')][_0xe31e('0x3')],oldToken);}var _0x1dcc5c={'uri':_0x1cfa99,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x1dcc5c)[_0xe31e('0xd')](function(_0x5204bb){_0x49f473(_0x5204bb);})['catch'](function(_0x114a7d){_0x39b32f(_0x114a7d);});});}function manageLicense(_0x396029,_0x310bc8){var _0x2c7a69=_0x310bc8[_0xe31e('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x2c7a69[_0xe31e('0xf')]!==_0x396029&&!_0x2c7a69['data2']){oldToken=_0x2c7a69[_0xe31e('0xf')];}httpRequest(_0x396029)[_0xe31e('0xd')](function(_0x3bbffa){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x3bbffa[_0xe31e('0x10')]){isOldTokenSent=![];if(!_0x2c7a69[_0xe31e('0x8')]&&_0x2c7a69[_0xe31e('0x8')]!=_0x3bbffa[_0xe31e('0x8')]||_0x2c7a69[_0xe31e('0x8')]&&_0x2c7a69[_0xe31e('0x11')]){logger[_0xe31e('0x12')](_0xe31e('0x13'));}if(_0x2c7a69[_0xe31e('0x8')]&&!_0x2c7a69[_0xe31e('0x11')]&&_0x2c7a69[_0xe31e('0x8')]!=_0x3bbffa['license']){logger[_0xe31e('0x12')](_0xe31e('0x14'));}if(_0x2c7a69[_0xe31e('0x8')]&&!_0x2c7a69['data2']&&_0x2c7a69[_0xe31e('0x8')]==_0x3bbffa[_0xe31e('0x8')]){return _0x310bc8;}return _0x310bc8[_0xe31e('0x15')]({'data1':_0x396029,'data2':null,'license':_0x3bbffa[_0xe31e('0x8')]});}else{if(_0x3bbffa['license']||_0x2c7a69[_0xe31e('0x8')]){if(!_0x2c7a69[_0xe31e('0x11')]){if(_0x2c7a69[_0xe31e('0xf')]==_0x396029){GRAY_PERIOD_REASON=_0xe31e('0x16');logger[_0xe31e('0x12')](_0xe31e('0x17'));}else{GRAY_PERIOD_REASON=_0xe31e('0x18');logger[_0xe31e('0x12')](_0xe31e('0x19'),_0x2c7a69['data1'],_0x396029);}logger[_0xe31e('0x12')](_0xe31e('0x1a'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0xe31e('0xb')](_0xe31e('0x1b')));return _0x310bc8[_0xe31e('0x15')]({'data2':encryptor[_0xe31e('0x1c')](moment()['format'](_0xe31e('0x1b')))});}else{if(moment()[_0xe31e('0x1d')](encryptor[_0xe31e('0x1e')](_0x2c7a69[_0xe31e('0x11')]),_0xe31e('0x1f'))>DAYS){logger[_0xe31e('0x12')]('DEMO\x20START\x20AT\x20%s',moment()[_0xe31e('0xb')](_0xe31e('0x1b')));isOldTokenSent=![];return _0x310bc8[_0xe31e('0x15')]({'data1':_0x396029,'data2':null,'license':null});}}}else{if(_0x2c7a69[_0xe31e('0xf')]!=_0x396029){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x2c7a69[_0xe31e('0xf')],_0x396029);return _0x310bc8[_0xe31e('0x15')]({'data1':_0x396029,'data2':null,'license':null});}}}return _0x310bc8;})[_0xe31e('0xd')](function(_0x2d0877){_0x310bc8=_0x2d0877;})[_0xe31e('0x20')](function(_0x36a847){logger['error'](_0x36a847[_0xe31e('0x21')]);})[_0xe31e('0x22')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x310bc8);},TIME);});}function defaultLicense(){var _0x3023b4=hardware['getUuid']();if(_0x3023b4){return db['License'][_0xe31e('0x23')]({'where':{'id':0x1},'defaults':{'data1':_0x3023b4}})[_0xe31e('0x24')](function(_0x51259e,_0x343d0d){logger[_0xe31e('0x12')](_0xe31e('0x25'),_0x3023b4);manageLicense(_0x3023b4,_0x51259e);})[_0xe31e('0x20')](function(_0x2908c4){logger['error'](_0x2908c4[_0xe31e('0x21')]);});}}exports[_0xe31e('0x26')]=defaultLicense;
\ No newline at end of file
index aa95a92..fcc9f30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc902=['find','defaults','then','catch','uuid','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','parse','machineUuid','deadline','days','grayReason','changed','disabled','message','findAll','role','sequelize','col','count','telephone','users','telephones','forEach','admin','user','pick','countBy','License\x20limit\x20reached\x20for\x20users','util','lodash','moment','bluebird','../../mysqldb','Demo\x20license','2027-01-01T00:00:00.000Z','getUuid','License'];(function(_0x56faee,_0xab6e8){var _0x27ee83=function(_0x52275a){while(--_0x52275a){_0x56faee['push'](_0x56faee['shift']());}};_0x27ee83(++_0xab6e8);}(_0xc902,0xa7));var _0x2c90=function(_0x114071,_0x54b397){_0x114071=_0x114071-0x0;var _0x514f13=_0xc902[_0x114071];return _0x514f13;};'use strict';var util=require(_0x2c90('0x0'));var _=require(_0x2c90('0x1'));var moment=require(_0x2c90('0x2'));var BPromise=require(_0x2c90('0x3'));var hardware=require('./hardware');var encryptor=require('../../components/encryptor');var db=require(_0x2c90('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x2c90('0x5'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2c90('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x2c90('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5d6a34){return new BPromise(function(_0x2f246d,_0x22f7bd){return db[_0x2c90('0x8')][_0x2c90('0x9')](_[_0x2c90('0xa')](_0x5d6a34,{'raw':!![],'where':{'id':0x1}}))[_0x2c90('0xb')](function(_0x590d60){return checkLicense(_0x590d60,null);})[_0x2c90('0xb')](function(_0x4947f6){_0x2f246d(_0x4947f6);return;})[_0x2c90('0xc')](function(_0x582dd6){_0x22f7bd(_0x582dd6);});});}function checkLicense(_0x13aefc,_0x1df429){if(!_0x13aefc){demoLicense[_0x2c90('0xd')]=_0x13aefc[_0x2c90('0xe')];return demoLicense;}try{var _0x2094b4=_0x1df429||_0x13aefc[_0x2c90('0xf')];if(_[_0x2c90('0x10')](_0x2094b4)){throw new Error(_0x2c90('0x11'));}var _0x15f208=_0x13aefc[_0x2c90('0xe')];var _0x65d00e=_0x13aefc['data2'];var _0x4065dc=_0x15f208[_0x2c90('0x12')]('-')[0x4];var _0x3f14a2=_0x15f208[_0x2c90('0x12')]('-')[0x0];var _0x183012=encryptor[_0x2c90('0x13')](_0x2094b4,util[_0x2c90('0x14')](_0x2c90('0x15'),_0x4065dc,_0x15f208,_0x3f14a2));var _0x2b2e4e=JSON[_0x2c90('0x16')](_0x183012);_0x2b2e4e['demo']=![];_0x2b2e4e[_0x2c90('0xd')]=_0x15f208;_0x2b2e4e[_0x2c90('0x17')]=hardware[_0x2c90('0x7')]();if(_0x65d00e){var _0x4126ab=encryptor[_0x2c90('0x13')](_0x65d00e);_0x2b2e4e['gray']=_0x4126ab;_0x2b2e4e[_0x2c90('0x18')]=moment(_0x4126ab)['add'](0x7,_0x2c90('0x19'))[_0x2c90('0x14')]();_0x2b2e4e[_0x2c90('0x1a')]=_0x2b2e4e[_0x2c90('0xd')]!=_0x2b2e4e[_0x2c90('0x17')]?_0x2c90('0x1b'):_0x2c90('0x1c');}return _0x2b2e4e;}catch(_0x281c3c){breakingLicense[_0x2c90('0xd')]=_0x13aefc[_0x2c90('0xe')];breakingLicense[_0x2c90('0x1d')]=_0x281c3c[_0x2c90('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x16193c,_0x36eb98){getLicense()[_0x2c90('0xb')](function(_0x73c086){return db['User'][_0x2c90('0x1e')]({'attributes':[_0x2c90('0x1f'),[db[_0x2c90('0x20')]['fn']('COUNT',db[_0x2c90('0x20')][_0x2c90('0x21')](_0x2c90('0x1f'))),_0x2c90('0x22')]],'group':_0x2c90('0x1f'),'where':{'role':{'$or':['admin','user',_0x2c90('0x23')]}},'raw':!![]})[_0x2c90('0xb')](function(_0x26caf2){var _0x5f4cb0={'user':_0x73c086[_0x2c90('0x24')]||0x0,'telephone':_0x73c086[_0x2c90('0x25')]||0x0};_0x26caf2[_0x2c90('0x26')](function(_0x1ef52c){var _0x528ade=_0x1ef52c['role']===_0x2c90('0x27')?_0x2c90('0x28'):_0x1ef52c['role'];_0x5f4cb0[_0x528ade]-=_0x1ef52c[_0x2c90('0x22')];if(_0x5f4cb0[_0x528ade]<0x0)_0x5f4cb0[_0x528ade]=0x0;});_0x16193c(_0x5f4cb0);return;});})[_0x2c90('0xc')](function(_0x3a65ac){_0x36eb98(_0x3a65ac);});});}function checkUserLimits(_0x5c6548){return new BPromise(function(_0x5557f6,_0x3ccad1){getLimits()['then'](function(_0x2016f3){var _0x4e15e1=_[_0x2c90('0x29')](_[_0x2c90('0x2a')](_0x5c6548,_0x2c90('0x1f')),[_0x2c90('0x27'),_0x2c90('0x28'),_0x2c90('0x23')]);var _0x2eb9c7=(_0x4e15e1[_0x2c90('0x27')]||0x0)+(_0x4e15e1[_0x2c90('0x28')]||0x0);var _0x435fe2=_0x4e15e1[_0x2c90('0x23')]||0x0;if(_0x2eb9c7>_0x2016f3[_0x2c90('0x28')])return _0x3ccad1(_0x2c90('0x2b'));if(_0x435fe2>_0x2016f3[_0x2c90('0x23')])return _0x3ccad1('License\x20limit\x20reached\x20for\x20telephones');return _0x5557f6();})['catch'](function(_0x282b40){_0x3ccad1(_0x282b40);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x319b=['count','user','users','telephones','admin','catch','pick','countBy','License\x20limit\x20reached\x20for\x20users','telephone','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','bluebird','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','getUuid','License','defaults','then','data1','license','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','format','%s:%s:%s','parse','decryptString','add','grayReason','machineUuid','changed','uuid','message','User','findAll','role','sequelize','COUNT','col'];(function(_0xe2813f,_0xdb0f22){var _0x1c3af8=function(_0x5d9457){while(--_0x5d9457){_0xe2813f['push'](_0xe2813f['shift']());}};_0x1c3af8(++_0xdb0f22);}(_0x319b,0x17c));var _0xb319=function(_0x5a22eb,_0x37a9de){_0x5a22eb=_0x5a22eb-0x0;var _0xb77999=_0x319b[_0x5a22eb];return _0xb77999;};'use strict';var util=require(_0xb319('0x0'));var _=require('lodash');var moment=require(_0xb319('0x1'));var BPromise=require(_0xb319('0x2'));var hardware=require(_0xb319('0x3'));var encryptor=require(_0xb319('0x4'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xb319('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xb319('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xb319('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xb319('0x7'),'machineUuid':hardware[_0xb319('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x29e292){return new BPromise(function(_0x4959da,_0x7f4fbf){return db[_0xb319('0x9')]['find'](_[_0xb319('0xa')](_0x29e292,{'raw':!![],'where':{'id':0x1}}))[_0xb319('0xb')](function(_0x5ecdf6){return checkLicense(_0x5ecdf6,null);})['then'](function(_0x1d5643){_0x4959da(_0x1d5643);return;})['catch'](function(_0x3bdfb0){_0x7f4fbf(_0x3bdfb0);});});}function checkLicense(_0x2b7a94,_0x4678bb){if(!_0x2b7a94){demoLicense['uuid']=_0x2b7a94[_0xb319('0xc')];return demoLicense;}try{var _0x533ab7=_0x4678bb||_0x2b7a94[_0xb319('0xd')];if(_[_0xb319('0xe')](_0x533ab7)){throw new Error(_0xb319('0xf'));}var _0x182bb1=_0x2b7a94[_0xb319('0xc')];var _0x5d9107=_0x2b7a94[_0xb319('0x10')];var _0x251a84=_0x182bb1[_0xb319('0x11')]('-')[0x4];var _0x3ea962=_0x182bb1[_0xb319('0x11')]('-')[0x0];var _0x8dcd3f=encryptor['decryptString'](_0x533ab7,util[_0xb319('0x12')](_0xb319('0x13'),_0x251a84,_0x182bb1,_0x3ea962));var _0x125d53=JSON[_0xb319('0x14')](_0x8dcd3f);_0x125d53['demo']=![];_0x125d53['uuid']=_0x182bb1;_0x125d53['machineUuid']=hardware[_0xb319('0x8')]();if(_0x5d9107){var _0x2b4c16=encryptor[_0xb319('0x15')](_0x5d9107);_0x125d53['gray']=_0x2b4c16;_0x125d53['deadline']=moment(_0x2b4c16)[_0xb319('0x16')](0x7,'days')['format']();_0x125d53[_0xb319('0x17')]=_0x125d53['uuid']!=_0x125d53[_0xb319('0x18')]?_0xb319('0x19'):'disabled';}return _0x125d53;}catch(_0x5b03a4){breakingLicense[_0xb319('0x1a')]=_0x2b7a94[_0xb319('0xc')];breakingLicense[_0xb319('0x1b')]=_0x5b03a4[_0xb319('0x1b')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x4070e7,_0x45e30b){getLicense()[_0xb319('0xb')](function(_0x1d3c48){return db[_0xb319('0x1c')][_0xb319('0x1d')]({'attributes':[_0xb319('0x1e'),[db[_0xb319('0x1f')]['fn'](_0xb319('0x20'),db['sequelize'][_0xb319('0x21')](_0xb319('0x1e'))),_0xb319('0x22')]],'group':_0xb319('0x1e'),'where':{'role':{'$or':['admin',_0xb319('0x23'),'telephone']}},'raw':!![]})[_0xb319('0xb')](function(_0x2b6c91){var _0x3f0a9d={'user':_0x1d3c48[_0xb319('0x24')]||0x0,'telephone':_0x1d3c48[_0xb319('0x25')]||0x0};_0x2b6c91['forEach'](function(_0x1470d5){var _0x1a4b95=_0x1470d5[_0xb319('0x1e')]===_0xb319('0x26')?'user':_0x1470d5[_0xb319('0x1e')];_0x3f0a9d[_0x1a4b95]-=_0x1470d5[_0xb319('0x22')];if(_0x3f0a9d[_0x1a4b95]<0x0)_0x3f0a9d[_0x1a4b95]=0x0;});_0x4070e7(_0x3f0a9d);return;});})[_0xb319('0x27')](function(_0x1157c9){_0x45e30b(_0x1157c9);});});}function checkUserLimits(_0x45357b){return new BPromise(function(_0x242105,_0x2418d2){getLimits()[_0xb319('0xb')](function(_0x3618b3){var _0x532582=_[_0xb319('0x28')](_[_0xb319('0x29')](_0x45357b,_0xb319('0x1e')),[_0xb319('0x26'),_0xb319('0x23'),'telephone']);var _0x220df4=(_0x532582[_0xb319('0x26')]||0x0)+(_0x532582[_0xb319('0x23')]||0x0);var _0x33b2b8=_0x532582['telephone']||0x0;if(_0x220df4>_0x3618b3[_0xb319('0x23')])return _0x2418d2(_0xb319('0x2a'));if(_0x33b2b8>_0x3618b3[_0xb319('0x2b')])return _0x2418d2(_0xb319('0x2c'));return _0x242105();})['catch'](function(_0x50e5af){_0x2418d2(_0x50e5af);});});}module[_0xb319('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 2ccd370..1530fea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36ee=['myappanuglar-secret','secret'];(function(_0x16d03a,_0x22b295){var _0x25baaa=function(_0xdf27f){while(--_0xdf27f){_0x16d03a['push'](_0x16d03a['shift']());}};_0x25baaa(++_0x22b295);}(_0x36ee,0xe8));var _0xe36e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36ee[_0x501510];return _0x1e6ee5;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xe36e('0x0'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xe36e('0x1'),'DEBUG':''};
\ No newline at end of file
+var _0x4024=['secret','exports','http://localhost:9000','app-id'];(function(_0xd76f3,_0xa75822){var _0x242bca=function(_0x3e2f66){while(--_0x3e2f66){_0xd76f3['push'](_0xd76f3['shift']());}};_0x242bca(++_0xa75822);}(_0x4024,0x89));var _0x4402=function(_0x5905af,_0x275789){_0x5905af=_0x5905af-0x0;var _0xcd85d2=_0x4024[_0x5905af];return _0xcd85d2;};'use strict';module[_0x4402('0x0')]={'DOMAIN':_0x4402('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x4402('0x2'),'GOOGLE_SECRET':_0x4402('0x3'),'DEBUG':''};
\ No newline at end of file
index 3576dec..8b0e6eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09db=['info','Console','debugLevel','moment','winston','util','INFO','join','/var','log','xcally','format','%s-%s.log','message','{{{','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','exports','transports','%s-%s','error','File'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0x09db,0x1ac));var _0xb09d=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x09db[_0x4dbaad];return _0x226c72;};'use strict';var moment=require(_0xb09d('0x0'));var winston=require(_0xb09d('0x1'));var util=require(_0xb09d('0x2'));var path=require('path');var debugLevel=_0xb09d('0x3');function filename(_0x25b651,_0x259826){return path[_0xb09d('0x4')](_0xb09d('0x5'),_0xb09d('0x6'),_0xb09d('0x7'),util[_0xb09d('0x8')](_0xb09d('0x9'),_0x25b651,_0x259826));}function formatter(_0x4373b5,_0x40c742){_0x40c742['message']=_0x40c742[_0xb09d('0xa')]['replace'](/@@{/g,_0xb09d('0xb'))[_0xb09d('0xc')](/}@@/g,_0xb09d('0xd'))[_0xb09d('0xc')](/@{/g,'{{')[_0xb09d('0xc')](/}@/g,'}}');return util['format'](_0xb09d('0xe'),moment()[_0xb09d('0x8')](_0xb09d('0xf')),_0x40c742[_0xb09d('0x10')]['toUpperCase'](),_0x4373b5,_0x40c742[_0xb09d('0xa')]);}module[_0xb09d('0x11')]=function(_0x10781d){return new winston['Logger']({'transports':[new winston[(_0xb09d('0x12'))]['File']({'name':util[_0xb09d('0x8')](_0xb09d('0x13'),_0x10781d,'error'),'filename':filename(_0x10781d,_0xb09d('0x14')),'level':_0xb09d('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4ca7bf){return formatter(_0x10781d,_0x4ca7bf);}}),new winston[(_0xb09d('0x12'))][(_0xb09d('0x15'))]({'name':util[_0xb09d('0x8')](_0xb09d('0x13'),_0x10781d,_0xb09d('0x16')),'filename':filename(_0x10781d,_0xb09d('0x16')),'level':_0xb09d('0x16'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0xbab896){return formatter(_0x10781d,_0xbab896);}}),new winston[(_0xb09d('0x12'))][(_0xb09d('0x17'))]({'level':process['env'][_0xb09d('0x18')]||debugLevel,'json':![],'formatter':function(_0x44199a){return formatter(_0x10781d,_0x44199a);}})]});};
\ No newline at end of file
+var _0x1d38=['message','{{{','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','error','transports','File','%s-%s','info','debugLevel','winston','util','path','INFO','join','/var','log','xcally','format','%s-%s.log'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x1d38,0xf0));var _0x81d3=function(_0x3b60d1,_0x2c58c6){_0x3b60d1=_0x3b60d1-0x0;var _0x209a1b=_0x1d38[_0x3b60d1];return _0x209a1b;};'use strict';var moment=require('moment');var winston=require(_0x81d3('0x0'));var util=require(_0x81d3('0x1'));var path=require(_0x81d3('0x2'));var debugLevel=_0x81d3('0x3');function filename(_0x27b4b3,_0x5d2c24){return path[_0x81d3('0x4')](_0x81d3('0x5'),_0x81d3('0x6'),_0x81d3('0x7'),util[_0x81d3('0x8')](_0x81d3('0x9'),_0x27b4b3,_0x5d2c24));}function formatter(_0x4129ce,_0xaa689a){_0xaa689a[_0x81d3('0xa')]=_0xaa689a['message']['replace'](/@@{/g,_0x81d3('0xb'))[_0x81d3('0xc')](/}@@/g,_0x81d3('0xd'))[_0x81d3('0xc')](/@{/g,'{{')[_0x81d3('0xc')](/}@/g,'}}');return util[_0x81d3('0x8')](_0x81d3('0xe'),moment()[_0x81d3('0x8')](_0x81d3('0xf')),_0xaa689a[_0x81d3('0x10')][_0x81d3('0x11')](),_0x4129ce,_0xaa689a[_0x81d3('0xa')]);}module[_0x81d3('0x12')]=function(_0x175df7){return new winston['Logger']({'transports':[new winston['transports']['File']({'name':util[_0x81d3('0x8')]('%s-%s',_0x175df7,'error'),'filename':filename(_0x175df7,'error'),'level':_0x81d3('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x15d513){return formatter(_0x175df7,_0x15d513);}}),new winston[(_0x81d3('0x14'))][(_0x81d3('0x15'))]({'name':util[_0x81d3('0x8')](_0x81d3('0x16'),_0x175df7,_0x81d3('0x17')),'filename':filename(_0x175df7,_0x81d3('0x17')),'level':_0x81d3('0x17'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1c421a){return formatter(_0x175df7,_0x1c421a);}}),new winston[(_0x81d3('0x14'))]['Console']({'level':process['env'][_0x81d3('0x18')]||debugLevel,'json':![],'formatter':function(_0x4dc07b){return formatter(_0x175df7,_0x4dc07b);}})]});};
\ No newline at end of file
index 1005c47..3679975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593c=['routing','exports','express','join','../../services/express/index.js','ami','../../services/ami/index.js','../../services/agi/index.js','../../services/email/index.js'];(function(_0x28d085,_0x552fc5){var _0x31eee2=function(_0x5ba968){while(--_0x5ba968){_0x28d085['push'](_0x28d085['shift']());}};_0x31eee2(++_0x552fc5);}(_0x593c,0xb6));var _0xc593=function(_0x5a7112,_0x1f9492){_0x5a7112=_0x5a7112-0x0;var _0x3147f7=_0x593c[_0x5a7112];return _0x3147f7;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':_0xc593('0x0'),'script':path[_0xc593('0x1')](__dirname,_0xc593('0x2'))},{'name':_0xc593('0x3'),'script':path[_0xc593('0x1')](__dirname,_0xc593('0x4'))},{'name':'agi','script':path[_0xc593('0x1')](__dirname,_0xc593('0x5'))},{'name':'email','script':path[_0xc593('0x1')](__dirname,_0xc593('0x6'))},{'name':_0xc593('0x7'),'script':path[_0xc593('0x1')](__dirname,'../../services/routing/index.js')},{'name':'xdr','script':path[_0xc593('0x1')](__dirname,'../../services/xdr/index.js')}]};module[_0xc593('0x8')]=config;
\ No newline at end of file
+var _0x5d28=['../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','ami','../../services/ami/index.js','../../services/agi/index.js','email'];(function(_0x187356,_0x277ece){var _0x442719=function(_0x3aeb36){while(--_0x3aeb36){_0x187356['push'](_0x187356['shift']());}};_0x442719(++_0x277ece);}(_0x5d28,0x14b));var _0x85d2=function(_0x401533,_0x57c151){_0x401533=_0x401533-0x0;var _0x295c67=_0x5d28[_0x401533];return _0x295c67;};'use strict';var path=require(_0x85d2('0x0'));var os=require('os');var config={'apps':[{'name':_0x85d2('0x1'),'script':path[_0x85d2('0x2')](__dirname,'../../services/express/index.js')},{'name':_0x85d2('0x3'),'script':path[_0x85d2('0x2')](__dirname,_0x85d2('0x4'))},{'name':'agi','script':path[_0x85d2('0x2')](__dirname,_0x85d2('0x5'))},{'name':_0x85d2('0x6'),'script':path[_0x85d2('0x2')](__dirname,_0x85d2('0x7'))},{'name':_0x85d2('0x8'),'script':path[_0x85d2('0x2')](__dirname,_0x85d2('0x9'))},{'name':_0x85d2('0xa'),'script':path[_0x85d2('0x2')](__dirname,_0x85d2('0xb'))}]};module[_0x85d2('0xc')]=config;
\ No newline at end of file
index f9a6d8b..64cbb3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0322=['./config','connect','connected','then','start','disconnect','stop','list','describe','delete','dump','saved','pm2','bluebird'];(function(_0x33972d,_0x4ec67a){var _0x3b36e6=function(_0x4ac12f){while(--_0x4ac12f){_0x33972d['push'](_0x33972d['shift']());}};_0x3b36e6(++_0x4ec67a);}(_0x0322,0x15c));var _0x2032=function(_0x6287b6,_0x5682e7){_0x6287b6=_0x6287b6-0x0;var _0x5d6be4=_0x0322[_0x6287b6];return _0x5d6be4;};'use strict';var pm2=require(_0x2032('0x0'));var BPromise=require(_0x2032('0x1'));var config=require(_0x2032('0x2'));function connect(){return new BPromise(function(_0x37e139,_0x23e4cb){return pm2[_0x2032('0x3')](function(_0x3b38ac){if(_0x3b38ac){return _0x23e4cb(_0x3b38ac);}return _0x37e139(_0x2032('0x4'));});});};exports['start']=function(_0x190c65){return connect()[_0x2032('0x5')](function(){return new BPromise(function(_0x3ec591,_0x55daf0){return pm2[_0x2032('0x6')](_0x190c65,function(_0x2d44c7,_0x41071c){if(_0x2d44c7){return _0x55daf0(_0x2d44c7);}pm2[_0x2032('0x7')]();return _0x3ec591(_0x41071c);});});});};exports[_0x2032('0x8')]=function(_0x4ce53a){return connect()[_0x2032('0x5')](function(){return new BPromise(function(_0x44cc5c,_0x34a1e9){return pm2[_0x2032('0x8')](_0x4ce53a,function(_0x2eaedb,_0x570638){if(_0x2eaedb){return _0x34a1e9(_0x2eaedb);}pm2[_0x2032('0x7')]();return _0x44cc5c(_0x570638);});});});};exports['restart']=function(_0x3e338e){return connect()['then'](function(){return new BPromise(function(_0x282659,_0x300ec0){return pm2['restart'](_0x3e338e,function(_0x488720,_0x370458){if(_0x488720){return _0x300ec0(_0x488720);}pm2[_0x2032('0x7')]();return _0x282659(_0x370458);});});});};exports['list']=function(){return connect()[_0x2032('0x5')](function(){return new BPromise(function(_0x3e93be,_0x20e0f5){return pm2[_0x2032('0x9')](function(_0x688f99,_0x4b915d){if(_0x688f99){return _0x20e0f5(_0x688f99);}pm2[_0x2032('0x7')]();return _0x3e93be(_0x4b915d);});});});};exports[_0x2032('0xa')]=function(_0x14810d){return connect()[_0x2032('0x5')](function(){return new BPromise(function(_0x2a22e6,_0x38f451){return pm2[_0x2032('0xa')](_0x14810d,function(_0x368c75,_0x3a0203){if(_0x368c75){return _0x38f451(_0x368c75);}pm2[_0x2032('0x7')]();return _0x2a22e6(_0x3a0203);});});});};exports[_0x2032('0xb')]=function(_0x2e1ce6){return connect()[_0x2032('0x5')](function(){return new BPromise(function(_0x6b7f14,_0x1ab13c){return pm2[_0x2032('0xb')](_0x2e1ce6,function(_0x19b416,_0x34250c){if(_0x19b416){return _0x1ab13c(_0x19b416);}pm2['disconnect']();return _0x6b7f14(_0x34250c);});});});};exports['dump']=function(){return connect()[_0x2032('0x5')](function(){return new BPromise(function(_0x1409b0,_0x3a4be7){return pm2[_0x2032('0xc')](function(_0x10643f){if(_0x10643f){return _0x3a4be7(_0x10643f);}return _0x1409b0(_0x2032('0xd'));});});});};
\ No newline at end of file
+var _0x3615=['restart','list','describe','delete','dump','saved','pm2','./config','connected','start','then','disconnect','stop'];(function(_0x43dc13,_0x27a362){var _0x42d671=function(_0x1288ff){while(--_0x1288ff){_0x43dc13['push'](_0x43dc13['shift']());}};_0x42d671(++_0x27a362);}(_0x3615,0x17f));var _0x5361=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x3615[_0x2dea24];return _0x309d58;};'use strict';var pm2=require(_0x5361('0x0'));var BPromise=require('bluebird');var config=require(_0x5361('0x1'));function connect(){return new BPromise(function(_0x28f7e6,_0x47ed12){return pm2['connect'](function(_0x350705){if(_0x350705){return _0x47ed12(_0x350705);}return _0x28f7e6(_0x5361('0x2'));});});};exports[_0x5361('0x3')]=function(_0x3f383f){return connect()[_0x5361('0x4')](function(){return new BPromise(function(_0x332ce5,_0x430b39){return pm2['start'](_0x3f383f,function(_0x39c144,_0x13b7b2){if(_0x39c144){return _0x430b39(_0x39c144);}pm2[_0x5361('0x5')]();return _0x332ce5(_0x13b7b2);});});});};exports[_0x5361('0x6')]=function(_0x491b8b){return connect()[_0x5361('0x4')](function(){return new BPromise(function(_0x12c7f8,_0x3b7341){return pm2['stop'](_0x491b8b,function(_0xe7ac55,_0x3a0e13){if(_0xe7ac55){return _0x3b7341(_0xe7ac55);}pm2[_0x5361('0x5')]();return _0x12c7f8(_0x3a0e13);});});});};exports['restart']=function(_0x586818){return connect()[_0x5361('0x4')](function(){return new BPromise(function(_0x15de5e,_0x483f31){return pm2[_0x5361('0x7')](_0x586818,function(_0x31699d,_0x3795ec){if(_0x31699d){return _0x483f31(_0x31699d);}pm2['disconnect']();return _0x15de5e(_0x3795ec);});});});};exports[_0x5361('0x8')]=function(){return connect()[_0x5361('0x4')](function(){return new BPromise(function(_0x513daa,_0x79de38){return pm2[_0x5361('0x8')](function(_0x2ec1ba,_0x3a2c83){if(_0x2ec1ba){return _0x79de38(_0x2ec1ba);}pm2[_0x5361('0x5')]();return _0x513daa(_0x3a2c83);});});});};exports[_0x5361('0x9')]=function(_0x5bf640){return connect()[_0x5361('0x4')](function(){return new BPromise(function(_0x3890b3,_0x538c4a){return pm2[_0x5361('0x9')](_0x5bf640,function(_0x55e1f9,_0x2ad231){if(_0x55e1f9){return _0x538c4a(_0x55e1f9);}pm2[_0x5361('0x5')]();return _0x3890b3(_0x2ad231);});});});};exports[_0x5361('0xa')]=function(_0x16d7d6){return connect()['then'](function(){return new BPromise(function(_0x211ed7,_0x4af8c5){return pm2[_0x5361('0xa')](_0x16d7d6,function(_0x3c7a5e,_0x313bae){if(_0x3c7a5e){return _0x4af8c5(_0x3c7a5e);}pm2[_0x5361('0x5')]();return _0x211ed7(_0x313bae);});});});};exports[_0x5361('0xb')]=function(){return connect()['then'](function(){return new BPromise(function(_0x44a1fd,_0x1e2c62){return pm2[_0x5361('0xb')](function(_0x3b7db6){if(_0x3b7db6){return _0x1e2c62(_0x3b7db6);}return _0x44a1fd(_0x5361('0xc'));});});});};
\ No newline at end of file
index bb283a8..46c9dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cad=['timeout','format','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','../../config/environment','../../mysqldb','schedule','redis','localhost','socket.io-emitter','Setting','find','chatTimeout','minutes','then','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','update','system'];(function(_0x392448,_0x53cd19){var _0xf8ddc0=function(_0x55c99d){while(--_0x55c99d){_0x392448['push'](_0x392448['shift']());}};_0xf8ddc0(++_0x53cd19);}(_0x5cad,0x9e));var _0xd5ca=function(_0x2d8057,_0x1f8584){_0x2d8057=_0x2d8057-0x0;var _0x39f4b3=_0x5cad[_0x2d8057];return _0x39f4b3;};'use strict';var _=require(_0xd5ca('0x0'));var moment=require(_0xd5ca('0x1'));var Redis=require(_0xd5ca('0x2'));var util=require('util');var config=require(_0xd5ca('0x3'));var db=require(_0xd5ca('0x4'))['db'];var logger=require('../logger')(_0xd5ca('0x5'));config[_0xd5ca('0x6')]=_['defaults'](config[_0xd5ca('0x6')],{'host':_0xd5ca('0x7'),'port':0x18eb});var io=require(_0xd5ca('0x8'))(new Redis(config[_0xd5ca('0x6')]));function closeInteractions(){var _0x1e6aa0=0x0;var _0x316af4=[];return db[_0xd5ca('0x9')][_0xd5ca('0xa')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})['then'](function(_0xd17b44){_0x1e6aa0=_0xd17b44[_0xd5ca('0xb')];if(_0x1e6aa0){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0xd17b44[_0xd5ca('0xb')],_0xd5ca('0xc'))}}});}else{return[];}})[_0xd5ca('0xd')](function(_0xe0b5c2){if(_0xe0b5c2&&_0xe0b5c2[_0xd5ca('0xe')]){_0x316af4=_[_0xd5ca('0xf')](_0xe0b5c2||[],'id');logger[_0xd5ca('0x10')](_0xd5ca('0x11'),_0x316af4[_0xd5ca('0x12')]());return db[_0xd5ca('0x13')][_0xd5ca('0x14')]({'closeReason':_0xd5ca('0x15'),'disposition':_0xd5ca('0x16'),'closed':!![],'closedAt':moment()[_0xd5ca('0x17')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x316af4}});}})['then'](function(){if(_0x316af4&&_0x316af4[_0xd5ca('0xe')]){logger[_0xd5ca('0x10')](_0xd5ca('0x18'),_0x316af4[_0xd5ca('0x12')]());for(var _0x493d75=0x0;_0x493d75<_0x316af4[_0xd5ca('0xe')];_0x493d75++){io[_0xd5ca('0x19')](_0xd5ca('0x1a'),{'id':_0x316af4[_0x493d75],'closed':!![]});}}})[_0xd5ca('0x1b')](function(_0x16b79d){logger['error'](_0xd5ca('0x1c'),_0x16b79d?util[_0xd5ca('0x1d')](_0x16b79d,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xb778=['inspect','start','lodash','moment','ioredis','util','redis','defaults','localhost','socket.io-emitter','find','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','minutes','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions'];(function(_0xfc4487,_0x197676){var _0x3d7afc=function(_0x2bdcca){while(--_0x2bdcca){_0xfc4487['push'](_0xfc4487['shift']());}};_0x3d7afc(++_0x197676);}(_0xb778,0xa2));var _0x8b77=function(_0x8c64d9,_0x45535c){_0x8c64d9=_0x8c64d9-0x0;var _0x22b21e=_0xb778[_0x8c64d9];return _0x22b21e;};'use strict';var _=require(_0x8b77('0x0'));var moment=require(_0x8b77('0x1'));var Redis=require(_0x8b77('0x2'));var util=require(_0x8b77('0x3'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require('../logger')('schedule');config[_0x8b77('0x4')]=_[_0x8b77('0x5')](config[_0x8b77('0x4')],{'host':_0x8b77('0x6'),'port':0x18eb});var io=require(_0x8b77('0x7'))(new Redis(config[_0x8b77('0x4')]));function closeInteractions(){var _0x4950f1=0x0;var _0x20c098=[];return db['Setting'][_0x8b77('0x8')]({'raw':!![],'attributes':['id',_0x8b77('0x9')],'where':{'id':0x1}})[_0x8b77('0xa')](function(_0x38ef7d){_0x4950f1=_0x38ef7d['chatTimeout'];if(_0x4950f1){return db[_0x8b77('0xb')][_0x8b77('0xc')]({'raw':!![],'attributes':['id',_0x8b77('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x8b77('0xe')](_0x38ef7d['chatTimeout'],_0x8b77('0xf'))}}});}else{return[];}})[_0x8b77('0xa')](function(_0xb0dc8){if(_0xb0dc8&&_0xb0dc8[_0x8b77('0x10')]){_0x20c098=_[_0x8b77('0x11')](_0xb0dc8||[],'id');logger[_0x8b77('0x12')](_0x8b77('0x13'),_0x20c098[_0x8b77('0x14')]());return db[_0x8b77('0xb')]['update']({'closeReason':_0x8b77('0x15'),'disposition':_0x8b77('0x16'),'closed':!![],'closedAt':moment()[_0x8b77('0x17')](_0x8b77('0x18'))},{'where':{'id':_0x20c098}});}})[_0x8b77('0xa')](function(){if(_0x20c098&&_0x20c098['length']){logger[_0x8b77('0x12')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x20c098[_0x8b77('0x14')]());for(var _0x72535d=0x0;_0x72535d<_0x20c098['length'];_0x72535d++){io[_0x8b77('0x19')](_0x8b77('0x1a'),{'id':_0x20c098[_0x72535d],'closed':!![]});}}})[_0x8b77('0x1b')](function(_0x7c0fb5){logger[_0x8b77('0x1c')](_0x8b77('0x1d'),_0x7c0fb5?util[_0x8b77('0x1e')](_0x7c0fb5,{'showHidden':![],'depth':null}):'');});}exports[_0x8b77('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 029d05a..f126102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a3f=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x51dada,_0x4ddb59){var _0x209d74=function(_0x2e1892){while(--_0x2e1892){_0x51dada['push'](_0x51dada['shift']());}};_0x209d74(++_0x4ddb59);}(_0x5a3f,0x1b1));var _0xf5a3=function(_0x5ef5d7,_0x1ac7dc){_0x5ef5d7=_0x5ef5d7-0x0;var _0x2e8a5c=_0x5a3f[_0x5ef5d7];return _0x2e8a5c;};'use strict';function start(){var _0x5e3666=require(_0xf5a3('0x0'));return _0x5e3666[_0xf5a3('0x1')]();}module[_0xf5a3('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0xce92=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x845e59,_0x76def){var _0x8d7cb6=function(_0x307ad4){while(--_0x307ad4){_0x845e59['push'](_0x845e59['shift']());}};_0x8d7cb6(++_0x76def);}(_0xce92,0x178));var _0x2ce9=function(_0x31f22e,_0x434db1){_0x31f22e=_0x31f22e-0x0;var _0x16e1b0=_0xce92[_0x31f22e];return _0x16e1b0;};'use strict';function start(){var _0x27c70c=require(_0x2ce9('0x0'));return _0x27c70c[_0x2ce9('0x1')]();}module[_0x2ce9('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index b3e4c00..6125bf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2b=['DefaultReportId','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','catch','Schedule','findAll','keys','jobs','toString','keyBy','difference','intersection','length','stop','deleteJob','delete\x20cron','toRun','my\x20id','resolve','run\x20job','cron','isBetween','startAt','add','start','add\x20cron','stop\x20cron','exists','active','endAt','update','update\x20cron','run','path','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','Smtp','service','MailAccount','host','secure','auth','pass','name','email','user','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','%s.%s','basename','extname','savename','zip','join','existsSync','Sent','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','status','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','email\x20sent','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output'];(function(_0x584486,_0x1b3bb6){var _0x399d0b=function(_0x208827){while(--_0x208827){_0x584486['push'](_0x584486['shift']());}};_0x399d0b(++_0x1b3bb6);}(_0x7a2b,0x19b));var _0xb7a2=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x7a2b[_0x42245d];return _0x4b211a;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xb7a2('0x0'));var _=require(_0xb7a2('0x1'));var moment=require(_0xb7a2('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xb7a2('0x3'));var BPromise=require(_0xb7a2('0x4'));var logger=require(_0xb7a2('0x5'))(_0xb7a2('0x6'));var db=require(_0xb7a2('0x7'))['db'];var analyticCustomReportController=require(_0xb7a2('0x8'));var analyticDefaultReportController=require(_0xb7a2('0x9'));var client=jayson[_0xb7a2('0xa')][_0xb7a2('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x432f07,_0x37455e){return function(){logger[_0xb7a2('0xc')](_0xb7a2('0xd'),_0x432f07['email']);var _0x13586f=!![];var _0x875cf={'tls':{'rejectUnauthorized':![]}};if(_0x432f07['MailAccount'][_0xb7a2('0xe')][_0xb7a2('0xf')]){_0x875cf[_0xb7a2('0xf')]=_0x432f07[_0xb7a2('0x10')][_0xb7a2('0xe')][_0xb7a2('0xf')];}else{_0x875cf[_0xb7a2('0x11')]=_0x432f07[_0xb7a2('0x10')]['Smtp'][_0xb7a2('0x11')];_0x875cf['port']=_0x432f07[_0xb7a2('0x10')]['Smtp']['port'];_0x875cf[_0xb7a2('0x12')]=_0x432f07[_0xb7a2('0x10')][_0xb7a2('0xe')][_0xb7a2('0x12')];}if(_0x432f07[_0xb7a2('0x10')][_0xb7a2('0xe')]['authentication']){_0x875cf[_0xb7a2('0x13')]={'user':_0x432f07[_0xb7a2('0x10')]['Smtp']['user'],'pass':_0x432f07[_0xb7a2('0x10')][_0xb7a2('0xe')][_0xb7a2('0x14')]};}var _0x56d782={'account':_0x875cf,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x432f07[_0xb7a2('0x10')][_0xb7a2('0x15')],_0x432f07[_0xb7a2('0x10')][_0xb7a2('0x16')]||_0x432f07['MailAccount'][_0xb7a2('0xe')][_0xb7a2('0x17')]),'to':_0x432f07[_0xb7a2('0x16')],'cc':_0x432f07['cc'],'bcc':_0x432f07['bcc'],'subject':util[_0xb7a2('0x18')](_0xb7a2('0x19'),_0x37455e[_0xb7a2('0x15')],_0x432f07[_0xb7a2('0x1a')],_0x432f07[_0xb7a2('0x1b')])}};var _0xdb4e18=path['join'](__dirname,_0xb7a2('0x1c'));var _0x45c06c=_0x37455e['savename'];var _0x3a2c9a=util[_0xb7a2('0x18')](_0xb7a2('0x1d'),path[_0xb7a2('0x1e')](_0x37455e['savename'],path[_0xb7a2('0x1f')](_0x37455e[_0xb7a2('0x20')])),_0xb7a2('0x21'));var _0x4c5e01=path['join'](_0xdb4e18,_0x45c06c);var _0x3284c7=path[_0xb7a2('0x22')](_0xdb4e18,_0x3a2c9a);if(fs[_0xb7a2('0x23')](_0x4c5e01)){_0x37455e['status']=_0xb7a2('0x24');_0x56d782['message'][_0xb7a2('0x25')]=[{'filename':_0x45c06c,'path':_0x4c5e01}];_0x56d782['message'][_0xb7a2('0x26')]=util[_0xb7a2('0x18')](_0xb7a2('0x27'),JSON[_0xb7a2('0x28')](_0x37455e,null,0x2));}else if(fs[_0xb7a2('0x23')](_0x3284c7)){_0x37455e[_0xb7a2('0x29')]=_0xb7a2('0x24');_0x56d782[_0xb7a2('0x2a')]['attachments']=[{'filename':_0x3a2c9a,'path':_0x3284c7}];}else{_0x56d782[_0xb7a2('0x2a')][_0xb7a2('0x26')]=_0xb7a2('0x2b');if(!_0x432f07[_0xb7a2('0x2c')]){_0x13586f=![];logger['info'](_0xb7a2('0x2d'));}}if(_0x13586f){return client[_0xb7a2('0x2e')](_0xb7a2('0x2f'),_0x56d782)['then'](function(_0x157472){if(_0x157472[_0xb7a2('0x30')]){return logger[_0xb7a2('0x30')]('error\x20mail',JSON[_0xb7a2('0x28')](_0x157472));}return logger[_0xb7a2('0xc')](_0xb7a2('0x31'));})['catch'](function(_0x13af74){return logger['error'](_0xb7a2('0x32'),JSON[_0xb7a2('0x28')](_0x13af74));});}};}function handleError(){return function(_0x27a17f){return logger[_0xb7a2('0x30')](JSON[_0xb7a2('0x28')](_0x27a17f));};}function handleResult(_0x434497){return function(_0xa2edea){logger['info'](_0xb7a2('0x33'),JSON[_0xb7a2('0x28')](_0xa2edea));if(_0x434497[_0xb7a2('0x10')]&&_0x434497[_0xb7a2('0x10')][_0xb7a2('0xe')]&&!_[_0xb7a2('0x34')](_0x434497[_0xb7a2('0x16')])){setTimeout(handleSendEmail(_0x434497,_0xa2edea),0x3c*0x3e8);}};}function handleJob(_0x11e78d){return function(){try{if(_[_0xb7a2('0x34')](_0x11e78d['subtractNumber'])){return logger[_0xb7a2('0xc')](_0xb7a2('0x35'));}if(_[_0xb7a2('0x34')](_0x11e78d[_0xb7a2('0x1b')])){return logger[_0xb7a2('0xc')](_0xb7a2('0x36'));}var _0x361628={'startDate':moment()[_0xb7a2('0x37')](_0x11e78d[_0xb7a2('0x1a')],_0x11e78d[_0xb7a2('0x1b')])[_0xb7a2('0x18')](_0xb7a2('0x38')),'endDate':moment()['format'](_0xb7a2('0x38')),'type':_0xb7a2('0x39'),'output':_0x11e78d[_0xb7a2('0x3a')],'name':_0x11e78d[_0xb7a2('0x15')]};if(!_['isNil'](_0x11e78d[_0xb7a2('0x3b')])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x11e78d[_0xb7a2('0x3b')]);return analyticDefaultReportController[_0xb7a2('0x3c')]({'id':_0x11e78d[_0xb7a2('0x3b')]},_0x361628)[_0xb7a2('0x3d')](handleResult(_0x11e78d))['catch'](handleError());}if(!_[_0xb7a2('0x34')](_0x11e78d[_0xb7a2('0x3e')])){logger[_0xb7a2('0xc')](_0xb7a2('0x3f'),_0x11e78d[_0xb7a2('0x3e')]);return analyticCustomReportController['runReport']({'id':_0x11e78d['CustomReportId']},_0x361628)[_0xb7a2('0x3d')](handleResult(_0x11e78d))[_0xb7a2('0x40')](handleError());}}catch(_0x38db91){logger[_0xb7a2('0x30')](JSON['stringify'](_0x38db91));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x1abc2d){var _0x4b9220={};if(_0x1abc2d){_0x4b9220['id']=_0x1abc2d;}return db[_0xb7a2('0x41')][_0xb7a2('0x42')]({'where':_0x4b9220,'include':[{'model':db[_0xb7a2('0x10')],'attributes':['id','name','email'],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]}]})[_0xb7a2('0x3d')](function(_0x21164a){var _0x464814=_[_0xb7a2('0x43')](manager[_0xb7a2('0x44')]);var _0x144452=_['map'](_0x21164a,function(_0x327dfb){return _0x327dfb['id'][_0xb7a2('0x45')]();});var _0x114b54=_[_0xb7a2('0x46')](_0x21164a,function(_0x19c9bf){return _0x19c9bf['id']['toString']();});var _0x3e2c8f=_0x1abc2d?_0x144452:_[_0xb7a2('0x47')](_0x144452,_0x464814);var _0x2c358f=_[_0xb7a2('0x48')](_0x144452,_0x464814);var _0x49fc01=_[_0xb7a2('0x47')](_0x464814,_0x144452);var _0x58e6e8;var _0xcab691;for(_0x58e6e8=0x0;_0x58e6e8<_0x49fc01[_0xb7a2('0x49')]&&!_0x1abc2d;_0x58e6e8+=0x1){_0xcab691=_0x49fc01[_0x58e6e8][_0xb7a2('0x45')]();if(manager['exists'](_0xcab691)){manager[_0xb7a2('0x4a')](_0xcab691);manager[_0xb7a2('0x4b')](_0xcab691);logger[_0xb7a2('0xc')](_0xb7a2('0x4c'),_0xcab691);}}logger[_0xb7a2('0xc')](_0xb7a2('0x4d'),JSON[_0xb7a2('0x28')](_0x3e2c8f));for(_0x58e6e8=0x0;_0x58e6e8<_0x3e2c8f['length'];_0x58e6e8+=0x1){_0xcab691=_0x3e2c8f[_0x58e6e8]['toString']();logger[_0xb7a2('0xc')]('index',_0xcab691);if(_0x1abc2d){logger[_0xb7a2('0xc')](_0xb7a2('0x4e'),_0x1abc2d);logger[_0xb7a2('0xc')](JSON[_0xb7a2('0x28')](_0x114b54[_0xcab691]));BPromise[_0xb7a2('0x4f')]()['then'](handleJob(_0x114b54[_0xcab691]));logger[_0xb7a2('0xc')](_0xb7a2('0x50'),_0x114b54[_0xcab691][_0xb7a2('0x15')],_0x114b54[_0xcab691][_0xb7a2('0x51')]);}else if(_0x114b54[_0xcab691][_0xb7a2('0x51')]&&_0x114b54[_0xcab691]['active']&&moment()[_0xb7a2('0x52')](_0x114b54[_0xcab691][_0xb7a2('0x53')],_0x114b54[_0xcab691]['endAt'])){manager[_0xb7a2('0x54')](_0xcab691,_0x114b54[_0xcab691][_0xb7a2('0x51')],handleJob(_0x114b54[_0xcab691]));manager[_0xb7a2('0x55')](_0xcab691);logger[_0xb7a2('0xc')](_0xb7a2('0x56'),_0x114b54[_0xcab691][_0xb7a2('0x15')],_0x114b54[_0xcab691][_0xb7a2('0x51')]);}else if(manager['exists'](_0xcab691)){manager['stop'](_0xcab691);manager[_0xb7a2('0x4b')](_0xcab691);logger[_0xb7a2('0xc')](_0xb7a2('0x57'),_0x114b54[_0xcab691][_0xb7a2('0x15')],_0x114b54[_0xcab691]['cron']);}}for(_0x58e6e8=0x0,_0xcab691;_0x58e6e8<_0x2c358f[_0xb7a2('0x49')]&&!_0x1abc2d;_0x58e6e8+=0x1){_0xcab691=_0x2c358f[_0x58e6e8][_0xb7a2('0x45')]();if(manager[_0xb7a2('0x58')](_0xcab691)){if(_0x114b54[_0xcab691][_0xb7a2('0x51')]&&_0x114b54[_0xcab691][_0xb7a2('0x59')]&&moment()['isBetween'](_0x114b54[_0xcab691][_0xb7a2('0x53')],_0x114b54[_0xcab691][_0xb7a2('0x5a')])){manager[_0xb7a2('0x5b')](_0xcab691,_0x114b54[_0xcab691][_0xb7a2('0x51')],handleJob(_0x114b54[_0xcab691]));logger[_0xb7a2('0xc')](_0xb7a2('0x5c'),_0x114b54[_0xcab691][_0xb7a2('0x15')],_0x114b54[_0xcab691][_0xb7a2('0x51')]);}else{manager[_0xb7a2('0x4a')](_0xcab691);manager[_0xb7a2('0x4b')](_0xcab691);logger[_0xb7a2('0xc')](_0xb7a2('0x57'),_0x114b54[_0xcab691][_0xb7a2('0x15')],_0x114b54[_0xcab691][_0xb7a2('0x51')]);}}}})[_0xb7a2('0x40')](function(_0x5cc5e3){logger['error'](JSON[_0xb7a2('0x28')](_0x5cc5e3));});}exports[_0xb7a2('0x5d')]=function(_0x5a118e){return getJobs(_0x5a118e);};exports[_0xb7a2('0x55')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xdb10=['add','start','add\x20cron','stop','isBetween','endAt','update','update\x20cron','stop\x20cron','path','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','MailAccount','Smtp','service','host','port','secure','user','pass','\x22%s\x22\x20<%s>','name','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','join','../../files/reports','savename','existsSync','status','Sent','message','attachments','text','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','error','email\x20sent','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','MailServerOut','keys','jobs','toString','keyBy','intersection','difference','exists','deleteJob','delete\x20cron','toRun','length','resolve','cron','active','startAt'];(function(_0x576e35,_0x36fbe4){var _0x2c870c=function(_0x792cdb){while(--_0x792cdb){_0x576e35['push'](_0x576e35['shift']());}};_0x2c870c(++_0x36fbe4);}(_0xdb10,0xb1));var _0x0db1=function(_0x17a32f,_0x5a51a){_0x17a32f=_0x17a32f-0x0;var _0x15a293=_0xdb10[_0x17a32f];return _0x15a293;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x0db1('0x0'));var _=require(_0x0db1('0x1'));var moment=require(_0x0db1('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x0db1('0x3'));var BPromise=require(_0x0db1('0x4'));var logger=require(_0x0db1('0x5'))(_0x0db1('0x6'));var db=require(_0x0db1('0x7'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x0db1('0x8'));var client=jayson[_0x0db1('0x9')][_0x0db1('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x7bc01,_0x3567b9){return function(){logger[_0x0db1('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x7bc01[_0x0db1('0xc')]);var _0x5fd953=!![];var _0x3c0904={'tls':{'rejectUnauthorized':![]}};if(_0x7bc01[_0x0db1('0xd')][_0x0db1('0xe')][_0x0db1('0xf')]){_0x3c0904[_0x0db1('0xf')]=_0x7bc01['MailAccount'][_0x0db1('0xe')][_0x0db1('0xf')];}else{_0x3c0904['host']=_0x7bc01[_0x0db1('0xd')][_0x0db1('0xe')][_0x0db1('0x10')];_0x3c0904['port']=_0x7bc01[_0x0db1('0xd')]['Smtp'][_0x0db1('0x11')];_0x3c0904[_0x0db1('0x12')]=_0x7bc01[_0x0db1('0xd')][_0x0db1('0xe')][_0x0db1('0x12')];}if(_0x7bc01[_0x0db1('0xd')][_0x0db1('0xe')]['authentication']){_0x3c0904['auth']={'user':_0x7bc01[_0x0db1('0xd')]['Smtp'][_0x0db1('0x13')],'pass':_0x7bc01['MailAccount']['Smtp'][_0x0db1('0x14')]};}var _0x273cc5={'account':_0x3c0904,'message':{'from':util['format'](_0x0db1('0x15'),_0x7bc01[_0x0db1('0xd')][_0x0db1('0x16')],_0x7bc01[_0x0db1('0xd')][_0x0db1('0xc')]||_0x7bc01[_0x0db1('0xd')][_0x0db1('0xe')]['user']),'to':_0x7bc01['email'],'cc':_0x7bc01['cc'],'bcc':_0x7bc01['bcc'],'subject':util[_0x0db1('0x17')](_0x0db1('0x18'),_0x3567b9[_0x0db1('0x16')],_0x7bc01[_0x0db1('0x19')],_0x7bc01['subtractUnit'])}};var _0x3746d6=path[_0x0db1('0x1a')](__dirname,_0x0db1('0x1b'));var _0x4fa2bd=_0x3567b9['savename'];var _0x1724ca=util['format']('%s.%s',path['basename'](_0x3567b9[_0x0db1('0x1c')],path['extname'](_0x3567b9[_0x0db1('0x1c')])),'zip');var _0x3f58c0=path[_0x0db1('0x1a')](_0x3746d6,_0x4fa2bd);var _0x1f3642=path[_0x0db1('0x1a')](_0x3746d6,_0x1724ca);if(fs[_0x0db1('0x1d')](_0x3f58c0)){_0x3567b9[_0x0db1('0x1e')]=_0x0db1('0x1f');_0x273cc5[_0x0db1('0x20')][_0x0db1('0x21')]=[{'filename':_0x4fa2bd,'path':_0x3f58c0}];_0x273cc5[_0x0db1('0x20')][_0x0db1('0x22')]=util[_0x0db1('0x17')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x0db1('0x23')](_0x3567b9,null,0x2));}else if(fs['existsSync'](_0x1f3642)){_0x3567b9[_0x0db1('0x1e')]=_0x0db1('0x1f');_0x273cc5[_0x0db1('0x20')][_0x0db1('0x21')]=[{'filename':_0x1724ca,'path':_0x1f3642}];}else{_0x273cc5[_0x0db1('0x20')][_0x0db1('0x22')]=_0x0db1('0x24');if(!_0x7bc01[_0x0db1('0x25')]){_0x5fd953=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x5fd953){return client[_0x0db1('0x26')](_0x0db1('0x27'),_0x273cc5)['then'](function(_0x3f35e7){if(_0x3f35e7[_0x0db1('0x28')]){return logger[_0x0db1('0x28')]('error\x20mail',JSON[_0x0db1('0x23')](_0x3f35e7));}return logger[_0x0db1('0xb')](_0x0db1('0x29'));})[_0x0db1('0x2a')](function(_0x4cc989){return logger['error'](_0x0db1('0x2b'),JSON[_0x0db1('0x23')](_0x4cc989));});}};}function handleError(){return function(_0x4b1b96){return logger[_0x0db1('0x28')](JSON[_0x0db1('0x23')](_0x4b1b96));};}function handleResult(_0x319b11){return function(_0x5c74dc){logger['info'](_0x0db1('0x2c'),JSON[_0x0db1('0x23')](_0x5c74dc));if(_0x319b11[_0x0db1('0xd')]&&_0x319b11['MailAccount'][_0x0db1('0xe')]&&!_[_0x0db1('0x2d')](_0x319b11[_0x0db1('0xc')])){setTimeout(handleSendEmail(_0x319b11,_0x5c74dc),0x3c*0x3e8);}};}function handleJob(_0x237f27){return function(){try{if(_[_0x0db1('0x2d')](_0x237f27[_0x0db1('0x19')])){return logger[_0x0db1('0xb')](_0x0db1('0x2e'));}if(_[_0x0db1('0x2d')](_0x237f27[_0x0db1('0x2f')])){return logger[_0x0db1('0xb')]('subtractUnit\x20null\x20or\x20undefined');}var _0xdd327a={'startDate':moment()[_0x0db1('0x30')](_0x237f27['subtractNumber'],_0x237f27[_0x0db1('0x2f')])['format'](_0x0db1('0x31')),'endDate':moment()[_0x0db1('0x17')](_0x0db1('0x31')),'type':_0x0db1('0x32'),'output':_0x237f27[_0x0db1('0x33')],'name':_0x237f27[_0x0db1('0x16')]};if(!_[_0x0db1('0x2d')](_0x237f27[_0x0db1('0x34')])){logger[_0x0db1('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x237f27[_0x0db1('0x34')]);return analyticDefaultReportController[_0x0db1('0x35')]({'id':_0x237f27[_0x0db1('0x34')]},_0xdd327a)[_0x0db1('0x36')](handleResult(_0x237f27))['catch'](handleError());}if(!_['isNil'](_0x237f27[_0x0db1('0x37')])){logger[_0x0db1('0xb')](_0x0db1('0x38'),_0x237f27['CustomReportId']);return analyticCustomReportController[_0x0db1('0x35')]({'id':_0x237f27[_0x0db1('0x37')]},_0xdd327a)[_0x0db1('0x36')](handleResult(_0x237f27))['catch'](handleError());}}catch(_0x1496cd){logger[_0x0db1('0x28')](JSON[_0x0db1('0x23')](_0x1496cd));}return logger[_0x0db1('0xb')](_0x0db1('0x39'));};}function getJobs(_0x410b3b){var _0x143db7={};if(_0x410b3b){_0x143db7['id']=_0x410b3b;}return db[_0x0db1('0x3a')]['findAll']({'where':_0x143db7,'include':[{'model':db[_0x0db1('0xd')],'attributes':['id','name',_0x0db1('0xc')],'include':[{'model':db[_0x0db1('0x3b')],'as':_0x0db1('0xe')}]}]})[_0x0db1('0x36')](function(_0x33bc8a){var _0x275f49=_[_0x0db1('0x3c')](manager[_0x0db1('0x3d')]);var _0x399bda=_['map'](_0x33bc8a,function(_0x313bed){return _0x313bed['id'][_0x0db1('0x3e')]();});var _0x40bbe9=_[_0x0db1('0x3f')](_0x33bc8a,function(_0x1fc560){return _0x1fc560['id'][_0x0db1('0x3e')]();});var _0x4ec53d=_0x410b3b?_0x399bda:_['difference'](_0x399bda,_0x275f49);var _0x549487=_[_0x0db1('0x40')](_0x399bda,_0x275f49);var _0x3e7c40=_[_0x0db1('0x41')](_0x275f49,_0x399bda);var _0x5f25de;var _0x5476b2;for(_0x5f25de=0x0;_0x5f25de<_0x3e7c40['length']&&!_0x410b3b;_0x5f25de+=0x1){_0x5476b2=_0x3e7c40[_0x5f25de][_0x0db1('0x3e')]();if(manager[_0x0db1('0x42')](_0x5476b2)){manager['stop'](_0x5476b2);manager[_0x0db1('0x43')](_0x5476b2);logger[_0x0db1('0xb')](_0x0db1('0x44'),_0x5476b2);}}logger[_0x0db1('0xb')](_0x0db1('0x45'),JSON[_0x0db1('0x23')](_0x4ec53d));for(_0x5f25de=0x0;_0x5f25de<_0x4ec53d[_0x0db1('0x46')];_0x5f25de+=0x1){_0x5476b2=_0x4ec53d[_0x5f25de][_0x0db1('0x3e')]();logger[_0x0db1('0xb')]('index',_0x5476b2);if(_0x410b3b){logger['info']('my\x20id',_0x410b3b);logger[_0x0db1('0xb')](JSON[_0x0db1('0x23')](_0x40bbe9[_0x5476b2]));BPromise[_0x0db1('0x47')]()[_0x0db1('0x36')](handleJob(_0x40bbe9[_0x5476b2]));logger[_0x0db1('0xb')]('run\x20job',_0x40bbe9[_0x5476b2][_0x0db1('0x16')],_0x40bbe9[_0x5476b2][_0x0db1('0x48')]);}else if(_0x40bbe9[_0x5476b2][_0x0db1('0x48')]&&_0x40bbe9[_0x5476b2][_0x0db1('0x49')]&&moment()['isBetween'](_0x40bbe9[_0x5476b2][_0x0db1('0x4a')],_0x40bbe9[_0x5476b2]['endAt'])){manager[_0x0db1('0x4b')](_0x5476b2,_0x40bbe9[_0x5476b2][_0x0db1('0x48')],handleJob(_0x40bbe9[_0x5476b2]));manager[_0x0db1('0x4c')](_0x5476b2);logger['info'](_0x0db1('0x4d'),_0x40bbe9[_0x5476b2][_0x0db1('0x16')],_0x40bbe9[_0x5476b2][_0x0db1('0x48')]);}else if(manager[_0x0db1('0x42')](_0x5476b2)){manager[_0x0db1('0x4e')](_0x5476b2);manager[_0x0db1('0x43')](_0x5476b2);logger[_0x0db1('0xb')]('stop\x20cron',_0x40bbe9[_0x5476b2]['name'],_0x40bbe9[_0x5476b2][_0x0db1('0x48')]);}}for(_0x5f25de=0x0,_0x5476b2;_0x5f25de<_0x549487[_0x0db1('0x46')]&&!_0x410b3b;_0x5f25de+=0x1){_0x5476b2=_0x549487[_0x5f25de][_0x0db1('0x3e')]();if(manager[_0x0db1('0x42')](_0x5476b2)){if(_0x40bbe9[_0x5476b2][_0x0db1('0x48')]&&_0x40bbe9[_0x5476b2]['active']&&moment()[_0x0db1('0x4f')](_0x40bbe9[_0x5476b2][_0x0db1('0x4a')],_0x40bbe9[_0x5476b2][_0x0db1('0x50')])){manager[_0x0db1('0x51')](_0x5476b2,_0x40bbe9[_0x5476b2][_0x0db1('0x48')],handleJob(_0x40bbe9[_0x5476b2]));logger[_0x0db1('0xb')](_0x0db1('0x52'),_0x40bbe9[_0x5476b2][_0x0db1('0x16')],_0x40bbe9[_0x5476b2][_0x0db1('0x48')]);}else{manager[_0x0db1('0x4e')](_0x5476b2);manager[_0x0db1('0x43')](_0x5476b2);logger[_0x0db1('0xb')](_0x0db1('0x53'),_0x40bbe9[_0x5476b2]['name'],_0x40bbe9[_0x5476b2][_0x0db1('0x48')]);}}}})['catch'](function(_0x2696e5){logger[_0x0db1('0x28')](JSON[_0x0db1('0x23')](_0x2696e5));});}exports['run']=function(_0x23ef8f){return getJobs(_0x23ef8f);};exports[_0x0db1('0x4c')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index a2131a6..fca8fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe61a=['findAll','IN_PROGRESS','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','push','all','start','lodash','aws-sdk','util','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','then','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','length','results','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','language','bucket','Sequelize','Transcript\x20not\x20available','sentimentAccountId','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Mixed','Neutral','FAILED','update','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','sentiment','Sentiment\x20Analysis\x20not\x20configured','data1','Negative','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording'];(function(_0x3e1132,_0x11e41a){var _0x1a3014=function(_0xf0db36){while(--_0xf0db36){_0x3e1132['push'](_0x3e1132['shift']());}};_0x1a3014(++_0x11e41a);}(_0xe61a,0x120));var _0xae61=function(_0x370ee6,_0x3ce4a5){_0x370ee6=_0x370ee6-0x0;var _0x2681b3=_0xe61a[_0x370ee6];return _0x2681b3;};var _=require(_0xae61('0x0'));var AWS=require(_0xae61('0x1'));var rp=require('request-promise');var util=require(_0xae61('0x2'));var BPromise=require('bluebird');var db=require(_0xae61('0x3'))['db'];var logger=require(_0xae61('0x4'))(_0xae61('0x5'));function getTranscriptionJob(_0x5db26b,_0x28ffeb,_0x362ecb,_0x50f80e){return new Promise(function(_0x4e92f8,_0xb9dcc8){var _0x2b02ca=new AWS[(_0xae61('0x6'))]({'accessKeyId':_0x28ffeb,'secretAccessKey':_0x5db26b,'region':_0x362ecb});_0x2b02ca[_0xae61('0x7')]({'TranscriptionJobName':_0x50f80e},function(_0x4290b0,_0x48951b){if(_0x4290b0){return _0xb9dcc8(_0x4290b0);}else{return _0x4e92f8(_0x48951b);}});});}function sentiment(_0x431d22,_0x247fc7,_0x33a612,_0x508bce,_0x3a4da6){return new Promise(function(_0x683b45,_0x245176){var _0x579c99=new AWS['Comprehend']({'accessKeyId':_0x247fc7,'secretAccessKey':_0x431d22,'region':_0x33a612});_0x579c99[_0xae61('0x8')]({'Text':_0x508bce,'LanguageCode':_0x3a4da6[_0xae61('0x9')](0x0,0x2)},function(_0x28d0a8,_0x58ba3c){if(_0x28d0a8){return _0x245176(_0x28d0a8);}else{return _0x683b45(_0x58ba3c);}});});}function checkTranscribeJob(_0x5040cb,_0x5ca51c,_0x20c7eb){var _0x26e389;return new BPromise(function(_0x54d89b,_0x68ac35){logger[_0xae61('0xa')](util[_0xae61('0xb')](_0xae61('0xc'),_0x5040cb['id'],_0x5040cb[_0xae61('0xd')]));return getTranscriptionJob(_0x20c7eb['data1'],_0x20c7eb[_0xae61('0xe')],_0x5ca51c[_0xae61('0xf')],_0x5040cb['transcribeName'])[_0xae61('0x10')](function(_0x2f54a8){logger[_0xae61('0xa')](util[_0xae61('0xb')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x5040cb['id'],_0x5040cb[_0xae61('0xd')],_0x2f54a8[_0xae61('0x11')][_0xae61('0x12')]));if(!_0x5040cb[_0xae61('0x13')]){switch(_0x2f54a8[_0xae61('0x11')][_0xae61('0x12')]){case _0xae61('0x14'):var _0x2e5991={'transcribeStatus':_0x2f54a8[_0xae61('0x11')][_0xae61('0x12')],'fileUri':_0x2f54a8[_0xae61('0x11')][_0xae61('0x15')][_0xae61('0x16')]};logger[_0xae61('0xa')](util['format']('[RECORDING:%d]\x20Get\x20transcript',_0x5040cb['id']));return rp({'uri':_0x2f54a8[_0xae61('0x11')][_0xae61('0x15')][_0xae61('0x16')],'json':!![]})[_0xae61('0x10')](function(_0x7bedd3){logger[_0xae61('0xa')](util[_0xae61('0xb')](_0xae61('0x17'),_0x5040cb['id']));if(_0x7bedd3&&_0x7bedd3['results']&&_0x7bedd3['results'][_0xae61('0x18')]&&_0x7bedd3['results'][_0xae61('0x18')][_0xae61('0x19')]){_0x2e5991[_0xae61('0x13')]='';for(var _0x496876=0x0;_0x496876<_0x7bedd3[_0xae61('0x1a')][_0xae61('0x18')][_0xae61('0x19')];_0x496876++){_0x2e5991[_0xae61('0x13')]+=_0x7bedd3[_0xae61('0x1a')][_0xae61('0x18')][_0x496876]['transcript']+'';}}return _0x5040cb['update'](_0x2e5991);})[_0xae61('0x10')](function(){logger[_0xae61('0xa')](util[_0xae61('0xb')](_0xae61('0x1b'),_0x5040cb['id']));if(!_0x5040cb[_0xae61('0x1c')]){throw new db['Sequelize'][(_0xae61('0x1d'))](_0xae61('0x1e'));}if(!_0x5ca51c['sentiment']||!_0x5ca51c['sentimentAccountId']||!_0x5ca51c[_0xae61('0x1f')]||!_0x5ca51c[_0xae61('0x20')]||!_0x5ca51c[_0xae61('0x21')]){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x2e5991[_0xae61('0x13')]){throw new Error(_0xae61('0x23'));}if(_0x5ca51c[_0xae61('0x24')]===_0x20c7eb['id']){return _0x20c7eb;}else{return db[_0xae61('0x25')][_0xae61('0x26')]({'where':{'id':_settings[_0xae61('0x24')]}});}})[_0xae61('0x10')](function(_0x2a0036){if(!_0x2a0036){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x27'));}if(!_0x2a0036['data1']||!_0x2a0036[_0xae61('0xe')]){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x28'));}_0x26e389=_0x2a0036;logger[_0xae61('0xa')](util['format'](_0xae61('0x29'),_0x5040cb['id']));return sentiment(_0x26e389['data1'],_0x26e389[_0xae61('0xe')],_0x5ca51c[_0xae61('0x1f')],_0x2e5991[_0xae61('0x13')],_0x5ca51c[_0xae61('0x20')]);})[_0xae61('0x10')](function(_0x267954){logger[_0xae61('0xa')](util['format'](_0xae61('0x2a'),_0x5040cb['id']));return _0x5040cb['update']({'sentiment':_0x267954[_0xae61('0x2b')],'sPositive':_0x267954['SentimentScore'][_0xae61('0x2c')],'sNegative':_0x267954[_0xae61('0x2d')]['Negative'],'sMixed':_0x267954['SentimentScore'][_0xae61('0x2e')],'sNeutral':_0x267954[_0xae61('0x2d')][_0xae61('0x2f')]});})[_0xae61('0x10')](function(){logger[_0xae61('0xa')](util[_0xae61('0xb')](_0xae61('0x1b'),_0x5040cb['id']));_0x54d89b();});case _0xae61('0x30'):return _0x5040cb[_0xae61('0x31')]({'transcribeStatus':_0xae61('0x30'),'failureReason':_0x2f54a8[_0xae61('0x11')][_0xae61('0x32')]})[_0xae61('0x10')](function(){logger[_0xae61('0xa')](util[_0xae61('0xb')](_0xae61('0x1b'),_0x5040cb['id']));_0x54d89b();});default:logger[_0xae61('0xa')](util['format'](_0xae61('0x33'),_0x5040cb['id']));break;}}else{return BPromise['resolve']()[_0xae61('0x10')](function(){if(!_0x5040cb[_0xae61('0x1c')]){throw new db[(_0xae61('0x22'))]['ValidationError'](_0xae61('0x1e'));}if(!_0x5ca51c[_0xae61('0x34')]||!_0x5ca51c['sentimentAccountId']||!_0x5ca51c[_0xae61('0x1f')]||!_0x5ca51c['language']||!_0x5ca51c[_0xae61('0x21')]){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x35'));}if(!_0x5040cb[_0xae61('0x13')]){throw new Error(_0xae61('0x23'));}if(_0x5ca51c[_0xae61('0x24')]===_0x20c7eb['id']){return _0x20c7eb;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0xae61('0x24')]}});}})[_0xae61('0x10')](function(_0x434395){if(!_0x434395){throw new db[(_0xae61('0x22'))]['ValidationError'](_0xae61('0x27'));}if(!_0x434395[_0xae61('0x36')]||!_0x434395[_0xae61('0xe')]){throw new db['Sequelize'][(_0xae61('0x1d'))](_0xae61('0x28'));}_0x26e389=_0x434395;logger[_0xae61('0xa')](util[_0xae61('0xb')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5040cb['id']));return sentiment(_0x26e389['data1'],_0x26e389['data2'],_0x5ca51c[_0xae61('0x1f')],_0x5040cb[_0xae61('0x13')],_0x5ca51c[_0xae61('0x20')]);})[_0xae61('0x10')](function(_0x27286c){logger[_0xae61('0xa')](util[_0xae61('0xb')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x5040cb['id']));return _0x5040cb['update']({'sentiment':_0x27286c[_0xae61('0x2b')],'sPositive':_0x27286c[_0xae61('0x2d')]['Positive'],'sNegative':_0x27286c[_0xae61('0x2d')][_0xae61('0x37')],'sMixed':_0x27286c['SentimentScore'][_0xae61('0x2e')],'sNeutral':_0x27286c[_0xae61('0x2d')][_0xae61('0x2f')],'transcribeStatus':_0xae61('0x14')});})[_0xae61('0x10')](function(){logger[_0xae61('0xa')](util[_0xae61('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5040cb['id']));_0x54d89b();});}})['catch'](function(_0x5e6ed2){if(_0x5e6ed2){if(!_0x5e6ed2[_0xae61('0x38')]||_0x5e6ed2[_0xae61('0x38')]!==_0xae61('0x39')){logger[_0xae61('0x3a')](util[_0xae61('0xb')](_0xae61('0x3b'),_0x5040cb['id']),util[_0xae61('0x3c')](_0x5e6ed2,{'showHidden':![],'depth':null}));}}_0x54d89b();});});}function checkTranscribe(){var _0x491702;var _0x29e84e;var _0x5337aa;return db[_0xae61('0x3d')][_0xae61('0x3e')]({'where':{'transcribeStatus':_0xae61('0x3f')}})[_0xae61('0x10')](function(_0x90cde0){if(!_0x90cde0||!_0x90cde0[_0xae61('0x19')]){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))]('No\x20transcribe\x20job\x20to\x20check');}_0x491702=_0x90cde0;return db['Setting'][_0xae61('0x26')]({'where':{'id':0x1}});})[_0xae61('0x10')](function(_0x14bce3){if(!_0x14bce3){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x40'));}_0x29e84e=_0x14bce3;if(!_0x29e84e['transcribe']||!_0x29e84e[_0xae61('0x41')]||!_0x29e84e[_0xae61('0xf')]||!_0x29e84e[_0xae61('0x20')]||!_0x29e84e[_0xae61('0x21')]){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x42'));}return db['CloudProvider'][_0xae61('0x26')]({'where':{'id':_0x29e84e[_0xae61('0x41')]}});})[_0xae61('0x10')](function(_0xd53969){if(!_0xd53969){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x27'));}if(!_0xd53969[_0xae61('0x36')]||!_0xd53969[_0xae61('0xe')]){throw new db[(_0xae61('0x22'))][(_0xae61('0x1d'))](_0xae61('0x28'));}_0x5337aa=_0xd53969;var _0x4227b3=[];_0x491702['forEach'](function(_0x1ddc7b){_0x4227b3[_0xae61('0x43')](checkTranscribeJob(_0x1ddc7b,_0x29e84e,_0x5337aa));});return BPromise[_0xae61('0x44')](_0x4227b3);})['catch'](function(_0x50700a){if(_0x50700a){if(!_0x50700a['name']||_0x50700a[_0xae61('0x38')]!==_0xae61('0x39')){logger[_0xae61('0x3a')](util[_0xae61('0x3c')](_0x50700a,{'showHidden':![],'depth':null}));}}});}exports[_0xae61('0x45')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xab26=['lodash','aws-sdk','request-promise','bluebird','../../mysqldb','TranscribeService','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','transcript','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','findOne','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Neutral','name','error','VoiceRecording','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','forEach','push','all','catch','SequelizeValidationError','inspect'];(function(_0x155054,_0xa950e8){var _0x182a85=function(_0x2a93ea){while(--_0x2a93ea){_0x155054['push'](_0x155054['shift']());}};_0x182a85(++_0xa950e8);}(_0xab26,0xd2));var _0x6ab2=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xab26[_0x57b54c];return _0x59cc19;};var _=require(_0x6ab2('0x0'));var AWS=require(_0x6ab2('0x1'));var rp=require(_0x6ab2('0x2'));var util=require('util');var BPromise=require(_0x6ab2('0x3'));var db=require(_0x6ab2('0x4'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x4c8cf,_0x51bdcd,_0x332458,_0xb15094){return new Promise(function(_0x31c9f1,_0x56dc80){var _0x41643a=new AWS[(_0x6ab2('0x5'))]({'accessKeyId':_0x51bdcd,'secretAccessKey':_0x4c8cf,'region':_0x332458});_0x41643a['getTranscriptionJob']({'TranscriptionJobName':_0xb15094},function(_0x140cc1,_0x3157f1){if(_0x140cc1){return _0x56dc80(_0x140cc1);}else{return _0x31c9f1(_0x3157f1);}});});}function sentiment(_0x442ae2,_0xf9b141,_0x3bb68b,_0x3964fd,_0x217b42){return new Promise(function(_0x448216,_0x459538){var _0x2e765a=new AWS[(_0x6ab2('0x6'))]({'accessKeyId':_0xf9b141,'secretAccessKey':_0x442ae2,'region':_0x3bb68b});_0x2e765a['detectSentiment']({'Text':_0x3964fd,'LanguageCode':_0x217b42[_0x6ab2('0x7')](0x0,0x2)},function(_0x2db481,_0x3c4612){if(_0x2db481){return _0x459538(_0x2db481);}else{return _0x448216(_0x3c4612);}});});}function checkTranscribeJob(_0x5b7e6d,_0x5b6f7c,_0x10c3b1){var _0x2bb464;return new BPromise(function(_0x431d63,_0x8d1dc8){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0xa'),_0x5b7e6d['id'],_0x5b7e6d[_0x6ab2('0xb')]));return getTranscriptionJob(_0x10c3b1['data1'],_0x10c3b1[_0x6ab2('0xc')],_0x5b6f7c['transcribeRegion'],_0x5b7e6d[_0x6ab2('0xb')])[_0x6ab2('0xd')](function(_0x5ced24){logger['info'](util['format'](_0x6ab2('0xe'),_0x5b7e6d['id'],_0x5b7e6d[_0x6ab2('0xb')],_0x5ced24[_0x6ab2('0xf')][_0x6ab2('0x10')]));if(!_0x5b7e6d[_0x6ab2('0x11')]){switch(_0x5ced24[_0x6ab2('0xf')]['TranscriptionJobStatus']){case _0x6ab2('0x12'):var _0x2aac55={'transcribeStatus':_0x5ced24['TranscriptionJob'][_0x6ab2('0x10')],'fileUri':_0x5ced24['TranscriptionJob']['Transcript'][_0x6ab2('0x13')]};logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x14'),_0x5b7e6d['id']));return rp({'uri':_0x5ced24[_0x6ab2('0xf')]['Transcript'][_0x6ab2('0x13')],'json':!![]})[_0x6ab2('0xd')](function(_0x3b7a1a){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x15'),_0x5b7e6d['id']));if(_0x3b7a1a&&_0x3b7a1a[_0x6ab2('0x16')]&&_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')]&&_0x3b7a1a[_0x6ab2('0x16')]['transcripts']['length']){_0x2aac55['fileText']='';for(var _0x11e287=0x0;_0x11e287<_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')]['length'];_0x11e287++){_0x2aac55[_0x6ab2('0x11')]+=_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')][_0x11e287][_0x6ab2('0x18')]+'';}}return _0x5b7e6d['update'](_0x2aac55);})['then'](function(){logger['info'](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5b7e6d['id']));if(!_0x5b7e6d['tempSentiment']){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x1b'));}if(!_0x5b6f7c[_0x6ab2('0x1c')]||!_0x5b6f7c[_0x6ab2('0x1d')]||!_0x5b6f7c[_0x6ab2('0x1e')]||!_0x5b6f7c[_0x6ab2('0x1f')]||!_0x5b6f7c[_0x6ab2('0x20')]){throw new db[(_0x6ab2('0x19'))]['ValidationError'](_0x6ab2('0x21'));}if(!_0x2aac55[_0x6ab2('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x5b6f7c[_0x6ab2('0x1d')]===_0x10c3b1['id']){return _0x10c3b1;}else{return db['CloudProvider'][_0x6ab2('0x22')]({'where':{'id':_settings[_0x6ab2('0x1d')]}});}})[_0x6ab2('0xd')](function(_0x151367){if(!_0x151367){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x151367[_0x6ab2('0x23')]||!_0x151367[_0x6ab2('0xc')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x24'));}_0x2bb464=_0x151367;logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5b7e6d['id']));return sentiment(_0x2bb464[_0x6ab2('0x23')],_0x2bb464[_0x6ab2('0xc')],_0x5b6f7c['sentimentRegion'],_0x2aac55['fileText'],_0x5b6f7c[_0x6ab2('0x1f')]);})[_0x6ab2('0xd')](function(_0x309165){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x25'),_0x5b7e6d['id']));return _0x5b7e6d[_0x6ab2('0x26')]({'sentiment':_0x309165[_0x6ab2('0x27')],'sPositive':_0x309165['SentimentScore']['Positive'],'sNegative':_0x309165[_0x6ab2('0x28')][_0x6ab2('0x29')],'sMixed':_0x309165[_0x6ab2('0x28')][_0x6ab2('0x2a')],'sNeutral':_0x309165[_0x6ab2('0x28')]['Neutral']});})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5b7e6d['id']));_0x431d63();});case _0x6ab2('0x2b'):return _0x5b7e6d[_0x6ab2('0x26')]({'transcribeStatus':'FAILED','failureReason':_0x5ced24[_0x6ab2('0xf')][_0x6ab2('0x2c')]})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x2d'),_0x5b7e6d['id']));_0x431d63();});default:logger[_0x6ab2('0x8')](util['format'](_0x6ab2('0x2e'),_0x5b7e6d['id']));break;}}else{return BPromise['resolve']()[_0x6ab2('0xd')](function(){if(!_0x5b7e6d[_0x6ab2('0x2f')]){throw new db[(_0x6ab2('0x19'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5b6f7c[_0x6ab2('0x1c')]||!_0x5b6f7c['sentimentAccountId']||!_0x5b6f7c['sentimentRegion']||!_0x5b6f7c[_0x6ab2('0x1f')]||!_0x5b6f7c[_0x6ab2('0x20')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x21'));}if(!_0x5b7e6d['fileText']){throw new Error(_0x6ab2('0x30'));}if(_0x5b6f7c['sentimentAccountId']===_0x10c3b1['id']){return _0x10c3b1;}else{return db[_0x6ab2('0x31')][_0x6ab2('0x22')]({'where':{'id':_settings[_0x6ab2('0x1d')]}});}})[_0x6ab2('0xd')](function(_0x507fdc){if(!_0x507fdc){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x32'));}if(!_0x507fdc[_0x6ab2('0x23')]||!_0x507fdc[_0x6ab2('0xc')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x24'));}_0x2bb464=_0x507fdc;logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x33'),_0x5b7e6d['id']));return sentiment(_0x2bb464[_0x6ab2('0x23')],_0x2bb464['data2'],_0x5b6f7c[_0x6ab2('0x1e')],_0x5b7e6d[_0x6ab2('0x11')],_0x5b6f7c[_0x6ab2('0x1f')]);})[_0x6ab2('0xd')](function(_0x1b38ae){logger[_0x6ab2('0x8')](util['format'](_0x6ab2('0x25'),_0x5b7e6d['id']));return _0x5b7e6d[_0x6ab2('0x26')]({'sentiment':_0x1b38ae[_0x6ab2('0x27')],'sPositive':_0x1b38ae[_0x6ab2('0x28')]['Positive'],'sNegative':_0x1b38ae['SentimentScore'][_0x6ab2('0x29')],'sMixed':_0x1b38ae[_0x6ab2('0x28')][_0x6ab2('0x2a')],'sNeutral':_0x1b38ae[_0x6ab2('0x28')][_0x6ab2('0x34')],'transcribeStatus':'COMPLETED'});})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x2d'),_0x5b7e6d['id']));_0x431d63();});}})['catch'](function(_0x538532){if(_0x538532){if(!_0x538532[_0x6ab2('0x35')]||_0x538532[_0x6ab2('0x35')]!=='SequelizeValidationError'){logger[_0x6ab2('0x36')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x5b7e6d['id']),util['inspect'](_0x538532,{'showHidden':![],'depth':null}));}}_0x431d63();});});}function checkTranscribe(){var _0x1a7e42;var _0x2bee34;var _0x4fffb4;return db[_0x6ab2('0x37')]['findAll']({'where':{'transcribeStatus':_0x6ab2('0x38')}})[_0x6ab2('0xd')](function(_0xe385cf){if(!_0xe385cf||!_0xe385cf[_0x6ab2('0x39')]){throw new db['Sequelize'][(_0x6ab2('0x1a'))](_0x6ab2('0x3a'));}_0x1a7e42=_0xe385cf;return db[_0x6ab2('0x3b')][_0x6ab2('0x22')]({'where':{'id':0x1}});})[_0x6ab2('0xd')](function(_0x301270){if(!_0x301270){throw new db[(_0x6ab2('0x19'))]['ValidationError'](_0x6ab2('0x3c'));}_0x2bee34=_0x301270;if(!_0x2bee34[_0x6ab2('0x3d')]||!_0x2bee34[_0x6ab2('0x3e')]||!_0x2bee34[_0x6ab2('0x3f')]||!_0x2bee34[_0x6ab2('0x1f')]||!_0x2bee34[_0x6ab2('0x20')]){throw new db['Sequelize'][(_0x6ab2('0x1a'))]('Transcribe\x20not\x20configured');}return db[_0x6ab2('0x31')][_0x6ab2('0x22')]({'where':{'id':_0x2bee34[_0x6ab2('0x3e')]}});})[_0x6ab2('0xd')](function(_0x145428){if(!_0x145428){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x32'));}if(!_0x145428[_0x6ab2('0x23')]||!_0x145428['data2']){throw new db[(_0x6ab2('0x19'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x4fffb4=_0x145428;var _0x3dde6b=[];_0x1a7e42[_0x6ab2('0x40')](function(_0x12eab2){_0x3dde6b[_0x6ab2('0x41')](checkTranscribeJob(_0x12eab2,_0x2bee34,_0x4fffb4));});return BPromise[_0x6ab2('0x42')](_0x3dde6b);})[_0x6ab2('0x43')](function(_0x7f1000){if(_0x7f1000){if(!_0x7f1000[_0x6ab2('0x35')]||_0x7f1000[_0x6ab2('0x35')]!==_0x6ab2('0x44')){logger[_0x6ab2('0x36')](util[_0x6ab2('0x45')](_0x7f1000,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index a101358..ea4d1eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x434f=['then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','defaults','redis','localhost','socket.io-emitter','WhatsappInteraction','lastMsgAt','subtract'];(function(_0x55fda8,_0x51b0e8){var _0x8ebdd1=function(_0xc7dfab){while(--_0xc7dfab){_0x55fda8['push'](_0x55fda8['shift']());}};_0x8ebdd1(++_0x51b0e8);}(_0x434f,0x8d));var _0xf434=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x434f[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xf434('0x0'));var moment=require(_0xf434('0x1'));var Redis=require(_0xf434('0x2'));var util=require(_0xf434('0x3'));var config=require(_0xf434('0x4'));var db=require(_0xf434('0x5'))['db'];var logger=require('../logger')(_0xf434('0x6'));config['redis']=_[_0xf434('0x7')](config[_0xf434('0x8')],{'host':_0xf434('0x9'),'port':0x18eb});var io=require(_0xf434('0xa'))(new Redis(config[_0xf434('0x8')]));function closeInteractions(){var _0x29e9dc=[];return db[_0xf434('0xb')]['findAll']({'raw':!![],'attributes':['id',_0xf434('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf434('0xd')](0x18,'hours')}}})[_0xf434('0xe')](function(_0x352d2c){if(_0x352d2c&&_0x352d2c[_0xf434('0xf')]){_0x29e9dc=_[_0xf434('0x10')](_0x352d2c||[],'id');logger[_0xf434('0x11')](_0xf434('0x12'),_0x29e9dc[_0xf434('0x13')]());return db['WhatsappInteraction'][_0xf434('0x14')]({'closeReason':'system','disposition':_0xf434('0x15'),'closed':!![],'closedAt':moment()[_0xf434('0x16')](_0xf434('0x17'))},{'where':{'id':_0x29e9dc}});}})[_0xf434('0xe')](function(){if(_0x29e9dc&&_0x29e9dc[_0xf434('0xf')]){logger[_0xf434('0x11')](_0xf434('0x18'),_0x29e9dc[_0xf434('0x13')]());for(var _0xe6eb11=0x0;_0xe6eb11<_0x29e9dc[_0xf434('0xf')];_0xe6eb11++){io[_0xf434('0x19')](_0xf434('0x1a'),{'id':_0x29e9dc[_0xe6eb11],'closed':!![]});}}})['catch'](function(_0x3d00fb){logger[_0xf434('0x1b')](_0xf434('0x1c'),_0x3d00fb?util[_0xf434('0x1d')](_0x3d00fb,{'showHidden':![],'depth':null}):'');});}exports[_0xf434('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x9554=['../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','WhatsappInteraction','findAll','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','inspect','start','lodash','ioredis','util'];(function(_0x112adf,_0x301fe3){var _0x57d5f9=function(_0x5c6bb2){while(--_0x5c6bb2){_0x112adf['push'](_0x112adf['shift']());}};_0x57d5f9(++_0x301fe3);}(_0x9554,0x1bf));var _0x4955=function(_0x5030eb,_0x333fcf){_0x5030eb=_0x5030eb-0x0;var _0x13163e=_0x9554[_0x5030eb];return _0x13163e;};'use strict';var _=require(_0x4955('0x0'));var moment=require('moment');var Redis=require(_0x4955('0x1'));var util=require(_0x4955('0x2'));var config=require(_0x4955('0x3'));var db=require(_0x4955('0x4'))['db'];var logger=require(_0x4955('0x5'))(_0x4955('0x6'));config['redis']=_[_0x4955('0x7')](config[_0x4955('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4955('0x8')]));function closeInteractions(){var _0xe3f3ce=[];return db[_0x4955('0x9')][_0x4955('0xa')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x4955('0xb')](0x18,_0x4955('0xc'))}}})[_0x4955('0xd')](function(_0x44072e){if(_0x44072e&&_0x44072e[_0x4955('0xe')]){_0xe3f3ce=_[_0x4955('0xf')](_0x44072e||[],'id');logger[_0x4955('0x10')](_0x4955('0x11'),_0xe3f3ce[_0x4955('0x12')]());return db[_0x4955('0x9')][_0x4955('0x13')]({'closeReason':_0x4955('0x14'),'disposition':_0x4955('0x15'),'closed':!![],'closedAt':moment()[_0x4955('0x16')](_0x4955('0x17'))},{'where':{'id':_0xe3f3ce}});}})[_0x4955('0xd')](function(){if(_0xe3f3ce&&_0xe3f3ce[_0x4955('0xe')]){logger[_0x4955('0x10')](_0x4955('0x18'),_0xe3f3ce['join']());for(var _0x43a116=0x0;_0x43a116<_0xe3f3ce[_0x4955('0xe')];_0x43a116++){io[_0x4955('0x19')](_0x4955('0x1a'),{'id':_0xe3f3ce[_0x43a116],'closed':!![]});}}})[_0x4955('0x1b')](function(_0x45015b){logger['error']('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x45015b?util[_0x4955('0x1c')](_0x45015b,{'showHidden':![],'depth':null}):'');});}exports[_0x4955('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 5026aed..52fa186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0292=['destroy','CmHopper','hopper1','contacts2','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','bulkCreate','then','log','finished\x20populating','contacts1'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x0292,0x134));var _0x2029=function(_0x301c34,_0x15701e){_0x301c34=_0x301c34-0x0;var _0x1a8c5a=_0x0292[_0x301c34];return _0x1a8c5a;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x2029('0x0')]({'id':i,'firstName':_0x2029('0x1')+i,'lastName':_0x2029('0x2')+i,'phone':0xf879fb460+i,'email':_0x2029('0x3')+i+_0x2029('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x2029('0x0')]({'id':i,'firstName':_0x2029('0x1')+i,'lastName':_0x2029('0x2')+i,'phone':0xf879fb460+i,'email':_0x2029('0x3')+i+_0x2029('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x2029('0x0')]({'id':i,'active':![],'scheduledat':Date[_0x2029('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0x2029('0x6')]['destroy']({'where':{}})['then'](function(){return db[_0x2029('0x6')][_0x2029('0x7')](contacts);})[_0x2029('0x8')](function(){console[_0x2029('0x9')](_0x2029('0xa'),_0x2029('0xb'));return db['CmHopper'][_0x2029('0xc')]({'where':{}});})[_0x2029('0x8')](function(){return db[_0x2029('0xd')][_0x2029('0x7')](hopper);})['then'](function(){console['log'](_0x2029('0xa'),_0x2029('0xe'));return db[_0x2029('0x6')][_0x2029('0x7')](contacts2);})['then'](function(){console['log']('finished\x20populating',_0x2029('0xf'));return db['CmHopper'][_0x2029('0x7')](hopper2);})[_0x2029('0x8')](function(){console['log'](_0x2029('0xa'),'hopper2');})['catch'](function(_0x498a51){console['log'](_0x498a51);});
\ No newline at end of file
+var _0xfd08=['now','then','CmContact','bulkCreate','finished\x20populating','contacts1','CmHopper','destroy','log','hopper1','hopper2','util','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com'];(function(_0x545144,_0xd4effc){var _0x1d648c=function(_0x25e8e8){while(--_0x25e8e8){_0x545144['push'](_0x545144['shift']());}};_0x1d648c(++_0xd4effc);}(_0xfd08,0x12c));var _0x8fd0=function(_0x1ba43c,_0x5bd2e8){_0x1ba43c=_0x1ba43c-0x0;var _0x2f60eb=_0xfd08[_0x1ba43c];return _0x2f60eb;};'use strict';var util=require(_0x8fd0('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x8fd0('0x1')]({'id':i,'firstName':_0x8fd0('0x2')+i,'lastName':_0x8fd0('0x3')+i,'phone':0xf879fb460+i,'email':_0x8fd0('0x4')+i+_0x8fd0('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x8fd0('0x6')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x8fd0('0x1')]({'id':i,'firstName':_0x8fd0('0x2')+i,'lastName':_0x8fd0('0x3')+i,'phone':0xf879fb460+i,'email':_0x8fd0('0x4')+i+_0x8fd0('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x8fd0('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x8fd0('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x8fd0('0x6')](),'updatedAt':Date[_0x8fd0('0x6')]()});}db['CmContact']['destroy']({'where':{}})[_0x8fd0('0x7')](function(){return db[_0x8fd0('0x8')][_0x8fd0('0x9')](contacts);})[_0x8fd0('0x7')](function(){console['log'](_0x8fd0('0xa'),_0x8fd0('0xb'));return db[_0x8fd0('0xc')][_0x8fd0('0xd')]({'where':{}});})[_0x8fd0('0x7')](function(){return db['CmHopper'][_0x8fd0('0x9')](hopper);})[_0x8fd0('0x7')](function(){console[_0x8fd0('0xe')]('finished\x20populating',_0x8fd0('0xf'));return db[_0x8fd0('0x8')][_0x8fd0('0x9')](contacts2);})[_0x8fd0('0x7')](function(){console[_0x8fd0('0xe')](_0x8fd0('0xa'),'contacts2');return db[_0x8fd0('0xc')][_0x8fd0('0x9')](hopper2);})[_0x8fd0('0x7')](function(){console[_0x8fd0('0xe')]('finished\x20populating',_0x8fd0('0x10'));})['catch'](function(_0x141ef4){console[_0x8fd0('0xe')](_0x141ef4);});
\ No newline at end of file
index d427344..513bb88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x607b=['catch','util','../mysqldb','push','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','wss','yes','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user'];(function(_0x384d0a,_0x4d8cea){var _0x4e7093=function(_0x4691dd){while(--_0x4691dd){_0x384d0a['push'](_0x384d0a['shift']());}};_0x4e7093(++_0x4d8cea);}(_0x607b,0x12d));var _0xb607=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x607b[_0x110c3d];return _0x226d67;};'use strict';var util=require(_0xb607('0x0'));var db=require(_0xb607('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xb607('0x2')]({'name':util['format'](_0xb607('0x3'),_0xb607('0x4'),i),'fullname':util[_0xb607('0x5')](_0xb607('0x3'),_0xb607('0x4'),i),'email':util[_0xb607('0x5')](_0xb607('0x6'),_0xb607('0x4'),i),'role':_0xb607('0x4'),'password':_0xb607('0x7'),'internal':0xfa0+i,'type':_0xb607('0x8'),'transport':[_0xb607('0x9'),'ws',_0xb607('0xa')],'disallow':['all'],'allow':['ulaw'],'defaultuser':util[_0xb607('0x5')]('%s%s',_0xb607('0x4'),i),'encryption':'yes','avpf':_0xb607('0xb'),'force_avp':'yes','icesupport':_0xb607('0xb'),'dtlsenable':_0xb607('0xb'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0xb607('0xc'),'callerid':util[_0xb607('0x5')](_0xb607('0xd'),util['format']('%s%s','agent',i),0xfa0+i)});}db[_0xb607('0xe')][_0xb607('0xf')](users)[_0xb607('0x10')](function(){console[_0xb607('0x11')](_0xb607('0x12'));})[_0xb607('0x13')](function(_0x59edc8){console['log'](_0x59edc8);});
\ No newline at end of file
+var _0x4d20=['\x22%s\x22\x20<%s>','User','then','log','util','../mysqldb','push','format','%s%s','agent','password','friend','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass'];(function(_0x3e8e14,_0x3c489b){var _0x3ba918=function(_0x5511b2){while(--_0x5511b2){_0x3e8e14['push'](_0x3e8e14['shift']());}};_0x3ba918(++_0x3c489b);}(_0x4d20,0x136));var _0x04d2=function(_0x405c24,_0x45044e){_0x405c24=_0x405c24-0x0;var _0x1841e4=_0x4d20[_0x405c24];return _0x1841e4;};'use strict';var util=require(_0x04d2('0x0'));var db=require(_0x04d2('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x04d2('0x2')]({'name':util[_0x04d2('0x3')](_0x04d2('0x4'),_0x04d2('0x5'),i),'fullname':util[_0x04d2('0x3')]('%s%s','agent',i),'email':util[_0x04d2('0x3')]('%s%s@xcally.com',_0x04d2('0x5'),i),'role':_0x04d2('0x5'),'password':_0x04d2('0x6'),'internal':0xfa0+i,'type':_0x04d2('0x7'),'transport':['udp','ws',_0x04d2('0x8')],'disallow':['all'],'allow':[_0x04d2('0x9')],'defaultuser':util[_0x04d2('0x3')](_0x04d2('0x4'),_0x04d2('0x5'),i),'encryption':_0x04d2('0xa'),'avpf':_0x04d2('0xa'),'force_avp':_0x04d2('0xa'),'icesupport':_0x04d2('0xa'),'dtlsenable':_0x04d2('0xa'),'dtlsverify':'no','dtlscertfile':_0x04d2('0xb'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x04d2('0xc'),'callerid':util[_0x04d2('0x3')](_0x04d2('0xd'),util['format']('%s%s',_0x04d2('0x5'),i),0xfa0+i)});}db[_0x04d2('0xe')]['bulkCreate'](users)[_0x04d2('0xf')](function(){console[_0x04d2('0x10')]('add\x20user');})['catch'](function(_0x27ed4e){console[_0x04d2('0x10')](_0x27ed4e);});
\ No newline at end of file
index ac74fce..01ce01a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa665=['ChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','default','connection','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','User','telephone','agent','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','WhatsappQueues','findAll','Telephones','Trunks','map','resourceId','where','role','Campaign','ivr','format','Agents','length','user:%s','handshake','find','query','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunk','user','userProfileId','OpenchannelQueues','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave'];(function(_0x3acfd7,_0xe158b4){var _0x35c3dd=function(_0x5295a5){while(--_0x5295a5){_0x3acfd7['push'](_0x3acfd7['shift']());}};_0x35c3dd(++_0xe158b4);}(_0xa665,0x7e));var _0x5a66=function(_0x28294a,_0x542642){_0x28294a=_0x28294a-0x0;var _0x3bef7d=_0xa665[_0x28294a];return _0x3bef7d;};'use strict';var _=require(_0x5a66('0x0'));var util=require(_0x5a66('0x1'));var BPromise=require(_0x5a66('0x2'));var db=require(_0x5a66('0x3'))['db'];var config=require(_0x5a66('0x4'));var queryQueues={'attributes':['id',_0x5a66('0x5')],'include':[{'as':'Agents','model':db[_0x5a66('0x6')],'attributes':['id',_0x5a66('0x5'),'role'],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5a66('0x5')],'where':{'role':_0x5a66('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x5a66('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x5a66('0x5')],'where':{'role':_0x5a66('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5a66('0x5'),'type'],'where':{'type':'ivr'}};function getAssociatedResources(_0x296f56,_0x2f6efd,_0x4ce28a){return db[_0x5a66('0x9')][_0x5a66('0xa')]({'where':{'name':_0x296f56,'userProfileId':_0x2f6efd},'raw':!![]})[_0x5a66('0xb')](function(_0x5984fd){if(_0x5984fd){if(_0x5984fd[_0x5a66('0xc')]){switch(_0x296f56){case _0x5a66('0xd'):case _0x5a66('0xe'):case _0x5a66('0xf'):case _0x5a66('0x10'):case _0x5a66('0x11'):case'OpenchannelQueues':case _0x5a66('0x12'):return db[_0x4ce28a][_0x5a66('0x13')](queryQueues);case _0x5a66('0x14'):return db[_0x4ce28a][_0x5a66('0x13')](queryTelephones);case _0x5a66('0x15'):return db[_0x4ce28a][_0x5a66('0x13')](queryTrunks);case'IvrCampaigns':return db[_0x4ce28a][_0x5a66('0x13')](queryCampaigns);}}else{return db['UserProfileResource'][_0x5a66('0x13')]({'attributes':['resourceId'],'where':{'sectionId':_0x5984fd['id']},'raw':!![]})[_0x5a66('0xb')](function(_0x169e3d){if(_0x169e3d){var _0x3e10de={'where':{'id':_[_0x5a66('0x16')](_0x169e3d,_0x5a66('0x17'))},'raw':!![]};switch(_0x4ce28a){case _0x5a66('0x6'):_0x3e10de[_0x5a66('0x18')][_0x5a66('0x19')]=_0x5a66('0x7');break;case _0x5a66('0x1a'):_0x3e10de[_0x5a66('0x18')]['type']=_0x5a66('0x1b');break;}return db[_0x4ce28a]['findAll'](_0x3e10de);}else{return[];}});}}else{return[];}})[_0x5a66('0xb')](function(_0x529c29){return _0x529c29;});}function joinOrLeaveQueues(_0x54c606,_0x591bba,_0x113fad,_0x168810){_0x54c606[_0x591bba](util[_0x5a66('0x1c')]('%s:queue:%s',_0x113fad,_0x168810['name']));if(_0x168810[_0x5a66('0x1d')]){for(var _0xf004a=0x0;_0xf004a<_0x168810['Agents'][_0x5a66('0x1e')];_0xf004a+=0x1){_0x54c606[_0x591bba](util[_0x5a66('0x1c')](_0x5a66('0x1f'),_0x168810['Agents'][_0xf004a][_0x5a66('0x5')]));}}}function joinOrLeave(_0x2cf5c7,_0x2635ca,_0x1a5756){var _0xb43757;if(_0x2cf5c7[_0x5a66('0x20')]['query']['id']){db[_0x5a66('0x6')][_0x5a66('0x21')]({'attributes':['id',_0x5a66('0x5'),'role','userProfileId'],'where':{'id':_0x2cf5c7[_0x5a66('0x20')][_0x5a66('0x22')]['id']},'include':[{'model':db[_0x5a66('0x23')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5a66('0x24')],'as':_0x5a66('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5a66('0x26')],'as':_0x5a66('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x5a66('0x28')],'as':_0x5a66('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x5a66('0x2a')],'as':_0x5a66('0x2b'),'attributes':['id'],'raw':!![]},{'model':db[_0x5a66('0x2c')],'as':_0x5a66('0x2d'),'attributes':['id'],'raw':!![]}]})[_0x5a66('0xb')](function(_0x42d37b){if(_0x42d37b){_0xb43757=_0x42d37b;_0x2cf5c7[_0x2635ca](util[_0x5a66('0x1c')](_0x5a66('0x1f'),_0x42d37b[_0x5a66('0x5')]));var _0x2b90ee=[];switch(_0x42d37b[_0x5a66('0x19')]){case'admin':_0x2cf5c7[_0x2635ca](_0x5a66('0x2e'));_0x2cf5c7[_0x2635ca](_0x5a66('0x2f'));if(queryQueues[_0x5a66('0x30')]('include')){delete queryQueues[_0x5a66('0x31')];}_0x2b90ee[_0x5a66('0x32')](db[_0x5a66('0x33')]['findAll'](queryQueues));_0x2b90ee[_0x5a66('0x32')](db[_0x5a66('0x34')][_0x5a66('0x13')](queryQueues));_0x2b90ee['push'](db[_0x5a66('0x35')]['findAll'](queryQueues));_0x2b90ee[_0x5a66('0x32')](db[_0x5a66('0x36')]['findAll'](queryQueues));_0x2b90ee[_0x5a66('0x32')](db[_0x5a66('0x37')]['findAll'](queryQueues));_0x2b90ee[_0x5a66('0x32')](db['OpenchannelQueue']['findAll'](queryQueues));_0x2b90ee['push'](db[_0x5a66('0x38')][_0x5a66('0x13')](queryQueues));_0x2b90ee[_0x5a66('0x32')](db['User'][_0x5a66('0x13')](queryTelephones));_0x2b90ee['push'](db[_0x5a66('0x39')]['findAll'](queryTrunks));_0x2b90ee[_0x5a66('0x32')](db[_0x5a66('0x1a')][_0x5a66('0x13')](queryCampaigns));_0x2b90ee['push'](db[_0x5a66('0x6')][_0x5a66('0x13')](queryAgents));break;case _0x5a66('0x3a'):_0x2cf5c7[_0x2635ca]('voice:inbound');_0x2cf5c7[_0x2635ca]('voice:outbound');_0x2b90ee[_0x5a66('0x32')](getAssociatedResources(_0x5a66('0xd'),_0x42d37b['userProfileId'],_0x5a66('0x33')));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources('ChatQueues',_0x42d37b['userProfileId'],_0x5a66('0x34')));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources('FaxQueues',_0x42d37b[_0x5a66('0x3b')],_0x5a66('0x35')));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources(_0x5a66('0x10'),_0x42d37b['userProfileId'],_0x5a66('0x36')));_0x2b90ee['push'](getAssociatedResources(_0x5a66('0x11'),_0x42d37b['userProfileId'],'MailQueue'));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources(_0x5a66('0x3c'),_0x42d37b[_0x5a66('0x3b')],_0x5a66('0x3d')));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources(_0x5a66('0x12'),_0x42d37b[_0x5a66('0x3b')],_0x5a66('0x38')));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources(_0x5a66('0x14'),_0x42d37b[_0x5a66('0x3b')],'User'));_0x2b90ee[_0x5a66('0x32')](getAssociatedResources(_0x5a66('0x15'),_0x42d37b[_0x5a66('0x3b')],'Trunk'));_0x2b90ee['push'](getAssociatedResources('IvrCampaigns',_0x42d37b['userProfileId'],_0x5a66('0x1a')));_0x2b90ee[_0x5a66('0x32')](db[_0x5a66('0x6')][_0x5a66('0x13')](queryAgents));break;case'agent':_0x2cf5c7[_0x2635ca]('voice:inbound');_0x2cf5c7[_0x2635ca]('voice:outbound');_0x2b90ee[_0x5a66('0x32')](_0x42d37b[_0x5a66('0x3e')]({'attributes':['id',_0x5a66('0x5')]}));_0x2b90ee[_0x5a66('0x32')](_0x42d37b[_0x5a66('0x3f')]({'attributes':['id',_0x5a66('0x5')]}));_0x2b90ee[_0x5a66('0x32')](_0x42d37b[_0x5a66('0x40')]({'attributes':['id',_0x5a66('0x5')]}));_0x2b90ee[_0x5a66('0x32')](_0x42d37b[_0x5a66('0x41')]({'attributes':['id',_0x5a66('0x5')]}));_0x2b90ee[_0x5a66('0x32')](_0x42d37b[_0x5a66('0x42')]({'attributes':['id',_0x5a66('0x5')]}));_0x2b90ee[_0x5a66('0x32')](_0x42d37b['getOpenchannelQueues']({'attributes':['id',_0x5a66('0x5')]}));_0x2b90ee['push'](_0x42d37b['getWhatsappQueues']({'attributes':['id',_0x5a66('0x5')]}));break;}return BPromise['all'](_0x2b90ee);}})['then'](function(_0x3d0fd1){if(_0x3d0fd1&&_0x3d0fd1[_0x5a66('0x1e')]){for(var _0x22100c=0x0;_0x22100c<_0x3d0fd1[_0x5a66('0x1e')];_0x22100c+=0x1){for(var _0x1a3a8c=0x0;_0x1a3a8c<_0x3d0fd1[_0x22100c][_0x5a66('0x1e')];_0x1a3a8c+=0x1){switch(_0x22100c){case 0x0:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x43'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x1:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x44'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x2:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x45'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x3:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x46'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x4:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x47'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x5:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x48'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x6:joinOrLeaveQueues(_0x2cf5c7,_0x2635ca,_0x5a66('0x49'),_0x3d0fd1[_0x22100c][_0x1a3a8c]);break;case 0x7:if(_0xb43757[_0x5a66('0x19')]!==_0x5a66('0x8'))_0x2cf5c7[_0x2635ca](util[_0x5a66('0x1c')](_0x5a66('0x4a'),_0x3d0fd1[_0x22100c][_0x1a3a8c][_0x5a66('0x5')]));break;case 0x8:if(_0xb43757[_0x5a66('0x19')]!==_0x5a66('0x8'))_0x2cf5c7[_0x2635ca](util[_0x5a66('0x1c')](_0x5a66('0x4b'),_0x3d0fd1[_0x22100c][_0x1a3a8c][_0x5a66('0x5')]));break;case 0x9:if(_0xb43757['role']!==_0x5a66('0x8'))_0x2cf5c7[_0x2635ca](util['format'](_0x5a66('0x4c'),_0x3d0fd1[_0x22100c][_0x1a3a8c]['type'],_0x3d0fd1[_0x22100c][_0x1a3a8c]['name']));break;case 0xa:_0x2cf5c7[_0x2635ca](util['format'](_0x5a66('0x1f'),_0x3d0fd1[_0x22100c][_0x1a3a8c][_0x5a66('0x5')]));break;}}}}})[_0x5a66('0xb')](function(){if(_0x2635ca===_0x5a66('0x4d')){var _0x29ddce=_[_0x5a66('0x16')](_0xb43757[_0x5a66('0x4e')],'id');return _0xb43757['removeChatInteractions'](_0x29ddce)['then'](function(){for(var _0x8779ed=0x0;_0x8779ed<_0x29ddce['length'];_0x8779ed+=0x1){_0x1a5756[_0x5a66('0x4f')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x29ddce[_0x8779ed]),'UserId':Number(_0xb43757['id'])});}});}})[_0x5a66('0xb')](function(){if(_0x2635ca===_0x5a66('0x4d')){var _0x2a9fdd=_[_0x5a66('0x16')](_0xb43757[_0x5a66('0x25')],'id');return _0xb43757[_0x5a66('0x50')](_0x2a9fdd)[_0x5a66('0xb')](function(){for(var _0x1e7a70=0x0;_0x1e7a70<_0x2a9fdd[_0x5a66('0x1e')];_0x1e7a70+=0x1){_0x1a5756['emit'](_0x5a66('0x51'),{'MailInteractionId':Number(_0x2a9fdd[_0x1e7a70]),'UserId':Number(_0xb43757['id'])});}});}})['then'](function(){if(_0x2635ca===_0x5a66('0x4d')){var _0x48c2c3=_[_0x5a66('0x16')](_0xb43757[_0x5a66('0x27')],'id');return _0xb43757[_0x5a66('0x52')](_0x48c2c3)[_0x5a66('0xb')](function(){for(var _0x1b6a28=0x0;_0x1b6a28<_0x48c2c3[_0x5a66('0x1e')];_0x1b6a28+=0x1){_0x1a5756[_0x5a66('0x4f')](_0x5a66('0x53'),{'FaxInteractionId':Number(_0x48c2c3[_0x1b6a28]),'UserId':Number(_0xb43757['id'])});}});}})['then'](function(){if(_0x2635ca===_0x5a66('0x4d')){var _0x272cd3=_[_0x5a66('0x16')](_0xb43757[_0x5a66('0x29')],'id');return _0xb43757[_0x5a66('0x54')](_0x272cd3)[_0x5a66('0xb')](function(){for(var _0x3c68da=0x0;_0x3c68da<_0x272cd3[_0x5a66('0x1e')];_0x3c68da+=0x1){_0x1a5756['emit'](_0x5a66('0x55'),{'SmsInteractionId':Number(_0x272cd3[_0x3c68da]),'UserId':Number(_0xb43757['id'])});}});}})['then'](function(){if(_0x2635ca===_0x5a66('0x4d')){var _0x49e4ee=_[_0x5a66('0x16')](_0xb43757[_0x5a66('0x2b')],'id');return _0xb43757[_0x5a66('0x56')](_0x49e4ee)['then'](function(){for(var _0x22c94d=0x0;_0x22c94d<_0x49e4ee[_0x5a66('0x1e')];_0x22c94d+=0x1){_0x1a5756[_0x5a66('0x4f')](_0x5a66('0x57'),{'OpenchannelInteractionId':Number(_0x49e4ee[_0x22c94d]),'UserId':Number(_0xb43757['id'])});}});}})[_0x5a66('0xb')](function(){if(_0x2635ca===_0x5a66('0x4d')){var _0x23a7a8=_[_0x5a66('0x16')](_0xb43757[_0x5a66('0x2d')],'id');return _0xb43757[_0x5a66('0x58')](_0x23a7a8)[_0x5a66('0xb')](function(){for(var _0x19efba=0x0;_0x19efba<_0x23a7a8[_0x5a66('0x1e')];_0x19efba+=0x1){_0x1a5756[_0x5a66('0x4f')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x23a7a8[_0x19efba]),'UserId':Number(_0xb43757['id'])});}});}})[_0x5a66('0x59')](function(_0x4ce687){_0x2cf5c7['log'](_0x4ce687);});}}function onDisconnect(_0x54e352,_0x5ed123){joinOrLeave(_0x54e352,_0x5a66('0x4d'),_0x5ed123);}function onConnect(_0x2fe3d4){joinOrLeave(_0x2fe3d4,'join');}exports[_0x5a66('0x5a')]=function(_0x40c170){_0x40c170['on'](_0x5a66('0x5b'),function(_0x5adde4){_0x5adde4['setMaxListeners'](0x0);_0x5adde4[_0x5a66('0x5c')]=_0x5adde4[_0x5a66('0x5d')][_0x5a66('0x5b')][_0x5a66('0x5e')]+':'+_0x5adde4[_0x5a66('0x5d')]['connection'][_0x5a66('0x5f')];_0x5adde4[_0x5a66('0x60')]=new Date();_0x5adde4[_0x5a66('0x61')]=function(_0x59085f){console[_0x5a66('0x61')](_0x5a66('0x62')+_0x5adde4['nsp'][_0x5a66('0x5')]+'['+_0x5adde4[_0x5a66('0x5c')]+']',_0x59085f);};_0x5adde4['on'](_0x5a66('0x63'),function(){onDisconnect(_0x5adde4,_0x40c170);_0x5adde4['log'](_0x5a66('0x64'));});onConnect(_0x5adde4);_0x5adde4[_0x5a66('0x61')](_0x5a66('0x65'));});};
\ No newline at end of file
+var _0xa88f=['join','address','request','connection','remoteAddress','remotePort','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','bluebird','../mysqldb','Agents','User','role','agent','name','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','UserProfileResource','resourceId','map','Campaign','where','%s:queue:%s','length','find','userProfileId','handshake','ChatInteraction','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','WhatsappInteractions','format','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','OpenchannelQueue','Trunk','FaxQueue','SmsQueue','MailQueue','WhatsappQueue','Trunks','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','leave','emit','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','log'];(function(_0x3da612,_0x332456){var _0x1a9d1d=function(_0x5ca0d0){while(--_0x5ca0d0){_0x3da612['push'](_0x3da612['shift']());}};_0x1a9d1d(++_0x332456);}(_0xa88f,0x182));var _0xfa88=function(_0x8e6458,_0x5a9709){_0x8e6458=_0x8e6458-0x0;var _0x58f145=_0xa88f[_0x8e6458];return _0x58f145;};'use strict';var _=require(_0xfa88('0x0'));var util=require(_0xfa88('0x1'));var BPromise=require(_0xfa88('0x2'));var db=require(_0xfa88('0x3'))['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0xfa88('0x4'),'model':db[_0xfa88('0x5')],'attributes':['id','name',_0xfa88('0x6')],'raw':!![],'where':{'role':_0xfa88('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xfa88('0x8')],'where':{'role':_0xfa88('0x9')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xfa88('0x8'),_0xfa88('0xa')],'where':{'type':_0xfa88('0xb')}};function getAssociatedResources(_0x33893f,_0x554bf0,_0x47d446){return db[_0xfa88('0xc')][_0xfa88('0xd')]({'where':{'name':_0x33893f,'userProfileId':_0x554bf0},'raw':!![]})[_0xfa88('0xe')](function(_0x4b375c){if(_0x4b375c){if(_0x4b375c[_0xfa88('0xf')]){switch(_0x33893f){case _0xfa88('0x10'):case'ChatQueues':case _0xfa88('0x11'):case _0xfa88('0x12'):case _0xfa88('0x13'):case _0xfa88('0x14'):case _0xfa88('0x15'):return db[_0x47d446][_0xfa88('0x16')](queryQueues);case'Telephones':return db[_0x47d446][_0xfa88('0x16')](queryTelephones);case'Trunks':return db[_0x47d446][_0xfa88('0x16')](queryTrunks);case'IvrCampaigns':return db[_0x47d446][_0xfa88('0x16')](queryCampaigns);}}else{return db[_0xfa88('0x17')]['findAll']({'attributes':[_0xfa88('0x18')],'where':{'sectionId':_0x4b375c['id']},'raw':!![]})[_0xfa88('0xe')](function(_0x49a3a9){if(_0x49a3a9){var _0xffbc0a={'where':{'id':_[_0xfa88('0x19')](_0x49a3a9,_0xfa88('0x18'))},'raw':!![]};switch(_0x47d446){case _0xfa88('0x5'):_0xffbc0a['where'][_0xfa88('0x6')]=_0xfa88('0x9');break;case _0xfa88('0x1a'):_0xffbc0a[_0xfa88('0x1b')][_0xfa88('0xa')]=_0xfa88('0xb');break;}return db[_0x47d446]['findAll'](_0xffbc0a);}else{return[];}});}}else{return[];}})[_0xfa88('0xe')](function(_0xa7fe06){return _0xa7fe06;});}function joinOrLeaveQueues(_0x1bfe4f,_0x4d1489,_0x182246,_0x46cd8c){_0x1bfe4f[_0x4d1489](util['format'](_0xfa88('0x1c'),_0x182246,_0x46cd8c[_0xfa88('0x8')]));if(_0x46cd8c['Agents']){for(var _0x304b25=0x0;_0x304b25<_0x46cd8c[_0xfa88('0x4')][_0xfa88('0x1d')];_0x304b25+=0x1){_0x1bfe4f[_0x4d1489](util['format']('user:%s',_0x46cd8c[_0xfa88('0x4')][_0x304b25][_0xfa88('0x8')]));}}}function joinOrLeave(_0x3c8f06,_0x4eb005,_0x3de56d){var _0x33e5c4;if(_0x3c8f06['handshake']['query']['id']){db['User'][_0xfa88('0x1e')]({'attributes':['id','name','role',_0xfa88('0x1f')],'where':{'id':_0x3c8f06[_0xfa88('0x20')]['query']['id']},'include':[{'model':db[_0xfa88('0x21')],'as':_0xfa88('0x22'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0xfa88('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xfa88('0x24')],'as':_0xfa88('0x25'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xfa88('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xfa88('0x27')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xfa88('0x28')],'as':_0xfa88('0x29'),'attributes':['id'],'raw':!![]}]})[_0xfa88('0xe')](function(_0x584e7b){if(_0x584e7b){_0x33e5c4=_0x584e7b;_0x3c8f06[_0x4eb005](util[_0xfa88('0x2a')](_0xfa88('0x2b'),_0x584e7b[_0xfa88('0x8')]));var _0x245ee3=[];switch(_0x584e7b[_0xfa88('0x6')]){case _0xfa88('0x2c'):_0x3c8f06[_0x4eb005](_0xfa88('0x2d'));_0x3c8f06[_0x4eb005](_0xfa88('0x2e'));if(queryQueues[_0xfa88('0x2f')](_0xfa88('0x30'))){delete queryQueues['include'];}_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x32')][_0xfa88('0x16')](queryQueues));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x33')]['findAll'](queryQueues));_0x245ee3[_0xfa88('0x31')](db['FaxQueue'][_0xfa88('0x16')](queryQueues));_0x245ee3[_0xfa88('0x31')](db['SmsQueue'][_0xfa88('0x16')](queryQueues));_0x245ee3[_0xfa88('0x31')](db['MailQueue'][_0xfa88('0x16')](queryQueues));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x34')][_0xfa88('0x16')](queryQueues));_0x245ee3[_0xfa88('0x31')](db['WhatsappQueue'][_0xfa88('0x16')](queryQueues));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x5')]['findAll'](queryTelephones));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x35')][_0xfa88('0x16')](queryTrunks));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x1a')]['findAll'](queryCampaigns));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x5')]['findAll'](queryAgents));break;case'user':_0x3c8f06[_0x4eb005](_0xfa88('0x2d'));_0x3c8f06[_0x4eb005](_0xfa88('0x2e'));_0x245ee3['push'](getAssociatedResources(_0xfa88('0x10'),_0x584e7b['userProfileId'],_0xfa88('0x32')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources('ChatQueues',_0x584e7b[_0xfa88('0x1f')],_0xfa88('0x33')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources(_0xfa88('0x11'),_0x584e7b['userProfileId'],_0xfa88('0x36')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources(_0xfa88('0x12'),_0x584e7b['userProfileId'],_0xfa88('0x37')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources(_0xfa88('0x13'),_0x584e7b[_0xfa88('0x1f')],_0xfa88('0x38')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources(_0xfa88('0x14'),_0x584e7b[_0xfa88('0x1f')],_0xfa88('0x34')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources(_0xfa88('0x15'),_0x584e7b[_0xfa88('0x1f')],_0xfa88('0x39')));_0x245ee3['push'](getAssociatedResources('Telephones',_0x584e7b[_0xfa88('0x1f')],'User'));_0x245ee3['push'](getAssociatedResources(_0xfa88('0x3a'),_0x584e7b[_0xfa88('0x1f')],_0xfa88('0x35')));_0x245ee3[_0xfa88('0x31')](getAssociatedResources('IvrCampaigns',_0x584e7b[_0xfa88('0x1f')],_0xfa88('0x1a')));_0x245ee3[_0xfa88('0x31')](db[_0xfa88('0x5')][_0xfa88('0x16')](queryAgents));break;case _0xfa88('0x7'):_0x3c8f06[_0x4eb005](_0xfa88('0x2d'));_0x3c8f06[_0x4eb005](_0xfa88('0x2e'));_0x245ee3[_0xfa88('0x31')](_0x584e7b[_0xfa88('0x3b')]({'attributes':['id',_0xfa88('0x8')]}));_0x245ee3['push'](_0x584e7b[_0xfa88('0x3c')]({'attributes':['id',_0xfa88('0x8')]}));_0x245ee3[_0xfa88('0x31')](_0x584e7b['getFaxQueues']({'attributes':['id',_0xfa88('0x8')]}));_0x245ee3[_0xfa88('0x31')](_0x584e7b[_0xfa88('0x3d')]({'attributes':['id',_0xfa88('0x8')]}));_0x245ee3['push'](_0x584e7b[_0xfa88('0x3e')]({'attributes':['id',_0xfa88('0x8')]}));_0x245ee3[_0xfa88('0x31')](_0x584e7b[_0xfa88('0x3f')]({'attributes':['id',_0xfa88('0x8')]}));_0x245ee3[_0xfa88('0x31')](_0x584e7b[_0xfa88('0x40')]({'attributes':['id',_0xfa88('0x8')]}));break;}return BPromise[_0xfa88('0x41')](_0x245ee3);}})[_0xfa88('0xe')](function(_0x23f2a3){if(_0x23f2a3&&_0x23f2a3[_0xfa88('0x1d')]){for(var _0x525ede=0x0;_0x525ede<_0x23f2a3[_0xfa88('0x1d')];_0x525ede+=0x1){for(var _0x2b2791=0x0;_0x2b2791<_0x23f2a3[_0x525ede][_0xfa88('0x1d')];_0x2b2791+=0x1){switch(_0x525ede){case 0x0:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,_0xfa88('0x42'),_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x1:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,_0xfa88('0x43'),_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x2:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,'fax',_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x3:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,_0xfa88('0x44'),_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x4:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,_0xfa88('0x45'),_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x5:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,_0xfa88('0x46'),_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x6:joinOrLeaveQueues(_0x3c8f06,_0x4eb005,_0xfa88('0x47'),_0x23f2a3[_0x525ede][_0x2b2791]);break;case 0x7:if(_0x33e5c4[_0xfa88('0x6')]!==_0xfa88('0x7'))_0x3c8f06[_0x4eb005](util[_0xfa88('0x2a')](_0xfa88('0x48'),_0x23f2a3[_0x525ede][_0x2b2791][_0xfa88('0x8')]));break;case 0x8:if(_0x33e5c4[_0xfa88('0x6')]!==_0xfa88('0x7'))_0x3c8f06[_0x4eb005](util['format']('trunk:%s',_0x23f2a3[_0x525ede][_0x2b2791][_0xfa88('0x8')]));break;case 0x9:if(_0x33e5c4[_0xfa88('0x6')]!=='agent')_0x3c8f06[_0x4eb005](util[_0xfa88('0x2a')](_0xfa88('0x49'),_0x23f2a3[_0x525ede][_0x2b2791][_0xfa88('0xa')],_0x23f2a3[_0x525ede][_0x2b2791]['name']));break;case 0xa:_0x3c8f06[_0x4eb005](util[_0xfa88('0x2a')](_0xfa88('0x2b'),_0x23f2a3[_0x525ede][_0x2b2791][_0xfa88('0x8')]));break;}}}}})[_0xfa88('0xe')](function(){if(_0x4eb005===_0xfa88('0x4a')){var _0x4f916f=_[_0xfa88('0x19')](_0x33e5c4[_0xfa88('0x22')],'id');return _0x33e5c4['removeChatInteractions'](_0x4f916f)[_0xfa88('0xe')](function(){for(var _0x3d16b5=0x0;_0x3d16b5<_0x4f916f[_0xfa88('0x1d')];_0x3d16b5+=0x1){_0x3de56d[_0xfa88('0x4b')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4f916f[_0x3d16b5]),'UserId':Number(_0x33e5c4['id'])});}});}})[_0xfa88('0xe')](function(){if(_0x4eb005===_0xfa88('0x4a')){var _0x4ff262=_[_0xfa88('0x19')](_0x33e5c4['MailInteractions'],'id');return _0x33e5c4[_0xfa88('0x4c')](_0x4ff262)[_0xfa88('0xe')](function(){for(var _0x490537=0x0;_0x490537<_0x4ff262[_0xfa88('0x1d')];_0x490537+=0x1){_0x3de56d[_0xfa88('0x4b')](_0xfa88('0x4d'),{'MailInteractionId':Number(_0x4ff262[_0x490537]),'UserId':Number(_0x33e5c4['id'])});}});}})[_0xfa88('0xe')](function(){if(_0x4eb005===_0xfa88('0x4a')){var _0x52e5a3=_[_0xfa88('0x19')](_0x33e5c4[_0xfa88('0x25')],'id');return _0x33e5c4['removeFaxInteractions'](_0x52e5a3)[_0xfa88('0xe')](function(){for(var _0xcc2ab9=0x0;_0xcc2ab9<_0x52e5a3[_0xfa88('0x1d')];_0xcc2ab9+=0x1){_0x3de56d[_0xfa88('0x4b')](_0xfa88('0x4e'),{'FaxInteractionId':Number(_0x52e5a3[_0xcc2ab9]),'UserId':Number(_0x33e5c4['id'])});}});}})[_0xfa88('0xe')](function(){if(_0x4eb005==='leave'){var _0x512481=_[_0xfa88('0x19')](_0x33e5c4[_0xfa88('0x26')],'id');return _0x33e5c4[_0xfa88('0x4f')](_0x512481)['then'](function(){for(var _0x3e12cd=0x0;_0x3e12cd<_0x512481[_0xfa88('0x1d')];_0x3e12cd+=0x1){_0x3de56d[_0xfa88('0x4b')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x512481[_0x3e12cd]),'UserId':Number(_0x33e5c4['id'])});}});}})[_0xfa88('0xe')](function(){if(_0x4eb005===_0xfa88('0x4a')){var _0x440d93=_[_0xfa88('0x19')](_0x33e5c4['OpenchannelInteractions'],'id');return _0x33e5c4[_0xfa88('0x50')](_0x440d93)['then'](function(){for(var _0x2fa89a=0x0;_0x2fa89a<_0x440d93['length'];_0x2fa89a+=0x1){_0x3de56d[_0xfa88('0x4b')](_0xfa88('0x51'),{'OpenchannelInteractionId':Number(_0x440d93[_0x2fa89a]),'UserId':Number(_0x33e5c4['id'])});}});}})[_0xfa88('0xe')](function(){if(_0x4eb005===_0xfa88('0x4a')){var _0x45fe25=_[_0xfa88('0x19')](_0x33e5c4[_0xfa88('0x29')],'id');return _0x33e5c4['removeWhatsappInteractions'](_0x45fe25)[_0xfa88('0xe')](function(){for(var _0x2c55c7=0x0;_0x2c55c7<_0x45fe25[_0xfa88('0x1d')];_0x2c55c7+=0x1){_0x3de56d[_0xfa88('0x4b')](_0xfa88('0x52'),{'WhatsappInteractionId':Number(_0x45fe25[_0x2c55c7]),'UserId':Number(_0x33e5c4['id'])});}});}})['catch'](function(_0x35285c){_0x3c8f06[_0xfa88('0x53')](_0x35285c);});}}function onDisconnect(_0x584977,_0x4ce9b5){joinOrLeave(_0x584977,_0xfa88('0x4a'),_0x4ce9b5);}function onConnect(_0x1a6b2e){joinOrLeave(_0x1a6b2e,_0xfa88('0x54'));}exports['default']=function(_0x585eb6){_0x585eb6['on']('connection',function(_0x11b1fe){_0x11b1fe['setMaxListeners'](0x0);_0x11b1fe[_0xfa88('0x55')]=_0x11b1fe[_0xfa88('0x56')][_0xfa88('0x57')][_0xfa88('0x58')]+':'+_0x11b1fe[_0xfa88('0x56')]['connection'][_0xfa88('0x59')];_0x11b1fe['connectedAt']=new Date();_0x11b1fe[_0xfa88('0x53')]=function(_0x1eea9b){console[_0xfa88('0x53')](_0xfa88('0x5a')+_0x11b1fe[_0xfa88('0x5b')][_0xfa88('0x8')]+'['+_0x11b1fe['address']+']',_0x1eea9b);};_0x11b1fe['on'](_0xfa88('0x5c'),function(){onDisconnect(_0x11b1fe,_0x585eb6);_0x11b1fe[_0xfa88('0x53')]('DISCONNECTED');});onConnect(_0x11b1fe);_0x11b1fe[_0xfa88('0x53')](_0xfa88('0x5d'));});};
\ No newline at end of file
index 91d18b8..7be0eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd90b=['QueryTypes','SELECT','contact','UserId','interface','format','SIP/%s','name','agent','channel','outgoingmessage','AfterCreateMessage','offlineMessage','opened','AfterCreate','changed','closed','substatus','sequelize','AfterUpdate','find','fullname','default','length','hasOwnProperty','model','hook','callback','util','jayson/promise','../logger','triggers','client','http','ChatInteraction','afterUpdate','closedinteraction','Chat','ChatMessage','afterCreate','newmessage','SmsInteraction','newinteraction','Sms','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error','code','catch','get','motionChannel','event','direction','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query'];(function(_0x2e6267,_0x441579){var _0x55c699=function(_0x3cb905){while(--_0x3cb905){_0x2e6267['push'](_0x2e6267['shift']());}};_0x55c699(++_0x441579);}(_0xd90b,0x18e));var _0xbd90=function(_0x43f2ec,_0x39060d){_0x43f2ec=_0x43f2ec-0x0;var _0x2b9e09=_0xd90b[_0x43f2ec];return _0x2b9e09;};'use strict';var util=require(_0xbd90('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0xbd90('0x1'));var logger=require(_0xbd90('0x2'))(_0xbd90('0x3'));var client=jayson[_0xbd90('0x4')][_0xbd90('0x5')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0xbd90('0x6'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':'Chat','model':_0xbd90('0x6'),'event':_0xbd90('0x7'),'condition':_0xbd90('0x8'),'callback':afterUpdate},{'channel':_0xbd90('0x9'),'model':_0xbd90('0xa'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xc'),'callback':afterCreateMessage},{'channel':_0xbd90('0x9'),'model':'ChatOfflineMessage','event':'afterCreate','condition':_0xbd90('0xc'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0xbd90('0xd'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xe'),'callback':afterCreate},{'channel':_0xbd90('0xf'),'model':_0xbd90('0xd'),'event':_0xbd90('0x7'),'condition':_0xbd90('0x8'),'callback':afterUpdate},{'channel':_0xbd90('0xf'),'model':_0xbd90('0x10'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xc'),'callback':afterCreateMessage},{'channel':_0xbd90('0x11'),'model':_0xbd90('0x12'),'event':'afterCreate','condition':_0xbd90('0xe'),'callback':afterCreate},{'channel':_0xbd90('0x11'),'model':'WhatsappInteraction','event':_0xbd90('0x7'),'condition':_0xbd90('0x8'),'callback':afterUpdate},{'channel':'Whatsapp','model':_0xbd90('0x13'),'event':'afterCreate','condition':_0xbd90('0xc'),'callback':afterCreateMessage},{'channel':_0xbd90('0x14'),'model':_0xbd90('0x15'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xe'),'callback':afterCreate},{'channel':'Fax','model':_0xbd90('0x15'),'event':_0xbd90('0x7'),'condition':_0xbd90('0x8'),'callback':afterUpdate},{'channel':'Fax','model':_0xbd90('0x16'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xc'),'callback':afterCreateMessage},{'channel':_0xbd90('0x17'),'model':_0xbd90('0x18'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xe'),'callback':afterCreate},{'channel':_0xbd90('0x17'),'model':'MailInteraction','event':_0xbd90('0x7'),'condition':_0xbd90('0x8'),'callback':afterUpdate},{'channel':_0xbd90('0x17'),'model':_0xbd90('0x19'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xc'),'callback':afterCreateMessage},{'channel':_0xbd90('0x1a'),'model':_0xbd90('0x1b'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xe'),'callback':afterCreate},{'channel':_0xbd90('0x1a'),'model':_0xbd90('0x1b'),'event':_0xbd90('0x7'),'condition':_0xbd90('0x8'),'callback':afterUpdate},{'channel':_0xbd90('0x1a'),'model':_0xbd90('0x1c'),'event':_0xbd90('0xb'),'condition':_0xbd90('0xc'),'callback':afterCreateMessage}];function request(_0x442654){return client[_0xbd90('0x1d')](_0xbd90('0x1e'),_0x442654)[_0xbd90('0x1f')](function(_0xdbb663){logger[_0xbd90('0x20')](_0xbd90('0x21'),_0xbd90('0x1e'),_0xdbb663);if(_0xdbb663[_0xbd90('0x22')]){if(_0xdbb663[_0xbd90('0x22')][_0xbd90('0x23')]===0x1f4){logger[_0xbd90('0x22')]('Trigger,\x20%s',_0xbd90('0x1e'),_0xdbb663[_0xbd90('0x22')]);}}})[_0xbd90('0x24')](function(_0x5e199e){logger[_0xbd90('0x22')](_0xbd90('0x21'),_0xbd90('0x1e'),_0x5e199e);});}function afterCreateMessage(_0x1ea27f){return function(_0x495707){_0x495707=_0x495707[_0xbd90('0x25')]({'plain':!![]});_0x495707['channel']=_0x1ea27f;_0x495707[_0xbd90('0x26')]=_0x1ea27f;_0x495707[_0xbd90('0x27')]=_0x495707[_0xbd90('0x28')];Promise[_0xbd90('0x29')]()[_0xbd90('0x1f')](function(){if(typeof _0x495707[_0xbd90('0x2a')]===_0xbd90('0x2b'))return null;var _0x336e09=_0xbd90('0x2c')+_0x495707[_0xbd90('0x2a')];return db['sequelize'][_0xbd90('0x2d')](_0x336e09,{'type':db['Sequelize'][_0xbd90('0x2e')][_0xbd90('0x2f')],'raw':!![]});})[_0xbd90('0x1f')](function(_0x19e655){if(_0x19e655){_0x495707[_0xbd90('0x30')]=_0x19e655[0x0];}if(typeof _0x495707[_0xbd90('0x31')]===_0xbd90('0x2b'))return;return getAgent(_0x495707[_0xbd90('0x31')]);})[_0xbd90('0x1f')](function(_0x49f50b){if(_0x49f50b){_0x495707[_0xbd90('0x32')]=util[_0xbd90('0x33')](_0xbd90('0x34'),_0x49f50b[_0xbd90('0x35')]);_0x495707[_0xbd90('0x36')]=_0x49f50b;_0x495707[_0xbd90('0x37')]=_0x1ea27f;return request({'event':'incomingmessage','message':_0x495707});}else{return request({'event':_0xbd90('0x38'),'message':_0x495707});}})[_0xbd90('0x24')](function(_0x58e3d4){logger[_0xbd90('0x22')](_0xbd90('0x21'),_0xbd90('0x39'),_0x58e3d4);});};}function afterCreateOfflineMessage(_0x193a22){return function(_0x36f563){_0x36f563=_0x36f563[_0xbd90('0x25')]({'plain':!![]});_0x36f563[_0xbd90('0x37')]=_0x193a22;_0x36f563['motionChannel']=_0x193a22;_0x36f563[_0xbd90('0x27')]=_0xbd90('0x3a');return request({'event':_0x36f563[_0xbd90('0x27')],'message':_0x36f563});};}function afterCreate(_0x347e32,_0x5ccecb){return function(_0x2a9671){_0x2a9671=_0x2a9671['get']({'plain':!![]});_0x2a9671[_0xbd90('0x37')]=_0x347e32;_0x2a9671[_0xbd90('0x26')]=_0x347e32;_0x2a9671['event']=_0xbd90('0x3b');Promise[_0xbd90('0x29')]()[_0xbd90('0x1f')](function(){var _0x51d384='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2a9671['ContactId'];return db['sequelize'][_0xbd90('0x2d')](_0x51d384,{'type':db['Sequelize'][_0xbd90('0x2e')]['SELECT'],'raw':!![]});})[_0xbd90('0x1f')](function(_0x11b109){if(_0x11b109){_0x2a9671[_0xbd90('0x30')]=_0x11b109[0x0];}if(typeof _0x2a9671['UserId']===_0xbd90('0x2b'))return;return getAgent(_0x2a9671[_0xbd90('0x31')]);})[_0xbd90('0x1f')](function(_0x4feaa0){if(_0x4feaa0){_0x2a9671[_0xbd90('0x32')]=util[_0xbd90('0x33')](_0xbd90('0x34'),_0x4feaa0[_0xbd90('0x35')]);_0x2a9671[_0xbd90('0x36')]=_0x4feaa0;}return request({'event':_0x5ccecb,'message':_0x2a9671});})[_0xbd90('0x24')](function(_0x25fcd4){logger['error']('Trigger,\x20%s',_0xbd90('0x3c'),_0x25fcd4);});};}function afterUpdate(_0x36530a){return function(_0x33b299){var _0x3b56cc=_0x33b299[_0xbd90('0x3d')](_0xbd90('0x3e'))&&_0x33b299[_0xbd90('0x3e')];var _0x63c33=_0x33b299[_0xbd90('0x3d')]('substatus');if(_0x3b56cc||_0x63c33){var _0x169e56=_0x3b56cc?_0xbd90('0x8'):_0xbd90('0x3f');var _0x2add58=_0x33b299[_0xbd90('0x25')]({'plain':!![]});_0x2add58['channel']=_0x36530a;_0x2add58[_0xbd90('0x26')]=_0x36530a;_0x2add58['event']=_0x3b56cc?_0xbd90('0x3e'):_0xbd90('0x3f');var _0x7d25af=_0xbd90('0x2c')+_0x2add58[_0xbd90('0x2a')];return db[_0xbd90('0x40')]['query'](_0x7d25af,{'type':db['Sequelize'][_0xbd90('0x2e')]['SELECT'],'raw':!![]})['then'](function(_0x253f0f){if(_0x253f0f){_0x2add58[_0xbd90('0x30')]=_0x253f0f[0x0];}if(typeof _0x2add58[_0xbd90('0x31')]===_0xbd90('0x2b'))return;return getAgent(_0x2add58[_0xbd90('0x31')]);})[_0xbd90('0x1f')](function(_0x23f11e){if(_0x23f11e){_0x2add58['interface']=util[_0xbd90('0x33')](_0xbd90('0x34'),_0x23f11e[_0xbd90('0x35')]);_0x2add58['agent']=_0x23f11e;}return request({'event':_0x169e56,'message':_0x2add58});})[_0xbd90('0x24')](function(_0x15a986){logger[_0xbd90('0x22')](_0xbd90('0x21'),_0xbd90('0x41'),_0x15a986);});}};}function getAgent(_0x54eaf2){return db['User'][_0xbd90('0x42')]({'where':{'id':_0x54eaf2},'attributes':['id',_0xbd90('0x35'),_0xbd90('0x43'),'email','internal'],'raw':!![]})['then'](function(_0xe93ddb){return _0xe93ddb;});}exports[_0xbd90('0x44')]=function(){for(var _0x4953b9=0x0;_0x4953b9<triggers[_0xbd90('0x45')];_0x4953b9+=0x1){if(db[_0xbd90('0x46')](triggers[_0x4953b9]['model'])){db[triggers[_0x4953b9][_0xbd90('0x47')]][_0xbd90('0x48')](triggers[_0x4953b9]['event'],triggers[_0x4953b9][_0xbd90('0x49')](triggers[_0x4953b9][_0xbd90('0x37')]['toLowerCase'](),triggers[_0x4953b9]['condition']));}}};
\ No newline at end of file
+var _0xc6ed=['ChatInteraction','newinteraction','closedinteraction','ChatMessage','afterCreate','newmessage','Sms','SmsInteraction','afterUpdate','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','then','info','EventManager','error','code','Trigger,\x20%s','catch','get','channel','direction','resolve','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','contact','UserId','undefined','interface','format','SIP/%s','incomingmessage','event','motionChannel','opened','SELECT','name','agent','AfterCreate','changed','closed','substatus','User','fullname','email','internal','default','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','../logger','client','http','Chat'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xc6ed,0xd2));var _0xdc6e=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xc6ed[_0x2d2c16];return _0x53f2fb;};'use strict';var util=require(_0xdc6e('0x0'));var db=require(_0xdc6e('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0xdc6e('0x2'))('triggers');var client=jayson[_0xdc6e('0x3')][_0xdc6e('0x4')]({'port':0x232a});var triggers=[{'channel':_0xdc6e('0x5'),'model':_0xdc6e('0x6'),'event':'afterCreate','condition':_0xdc6e('0x7'),'callback':afterCreate},{'channel':_0xdc6e('0x5'),'model':_0xdc6e('0x6'),'event':'afterUpdate','condition':_0xdc6e('0x8'),'callback':afterUpdate},{'channel':'Chat','model':_0xdc6e('0x9'),'event':_0xdc6e('0xa'),'condition':_0xdc6e('0xb'),'callback':afterCreateMessage},{'channel':'Chat','model':'ChatOfflineMessage','event':_0xdc6e('0xa'),'condition':_0xdc6e('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0xdc6e('0xc'),'model':_0xdc6e('0xd'),'event':_0xdc6e('0xa'),'condition':_0xdc6e('0x7'),'callback':afterCreate},{'channel':'Sms','model':_0xdc6e('0xd'),'event':_0xdc6e('0xe'),'condition':_0xdc6e('0x8'),'callback':afterUpdate},{'channel':_0xdc6e('0xc'),'model':_0xdc6e('0xf'),'event':'afterCreate','condition':_0xdc6e('0xb'),'callback':afterCreateMessage},{'channel':_0xdc6e('0x10'),'model':_0xdc6e('0x11'),'event':_0xdc6e('0xa'),'condition':_0xdc6e('0x7'),'callback':afterCreate},{'channel':_0xdc6e('0x10'),'model':_0xdc6e('0x11'),'event':'afterUpdate','condition':_0xdc6e('0x8'),'callback':afterUpdate},{'channel':_0xdc6e('0x10'),'model':_0xdc6e('0x12'),'event':'afterCreate','condition':_0xdc6e('0xb'),'callback':afterCreateMessage},{'channel':'Fax','model':'FaxInteraction','event':_0xdc6e('0xa'),'condition':_0xdc6e('0x7'),'callback':afterCreate},{'channel':_0xdc6e('0x13'),'model':'FaxInteraction','event':_0xdc6e('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xdc6e('0x13'),'model':'FaxMessage','event':_0xdc6e('0xa'),'condition':_0xdc6e('0xb'),'callback':afterCreateMessage},{'channel':_0xdc6e('0x14'),'model':_0xdc6e('0x15'),'event':'afterCreate','condition':_0xdc6e('0x7'),'callback':afterCreate},{'channel':_0xdc6e('0x14'),'model':'MailInteraction','event':_0xdc6e('0xe'),'condition':_0xdc6e('0x8'),'callback':afterUpdate},{'channel':_0xdc6e('0x14'),'model':_0xdc6e('0x16'),'event':'afterCreate','condition':_0xdc6e('0xb'),'callback':afterCreateMessage},{'channel':_0xdc6e('0x17'),'model':'OpenchannelInteraction','event':'afterCreate','condition':_0xdc6e('0x7'),'callback':afterCreate},{'channel':_0xdc6e('0x17'),'model':_0xdc6e('0x18'),'event':_0xdc6e('0xe'),'condition':_0xdc6e('0x8'),'callback':afterUpdate},{'channel':'Openchannel','model':_0xdc6e('0x19'),'event':_0xdc6e('0xa'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x32f6b8){return client[_0xdc6e('0x1a')]('EventManager',_0x32f6b8)[_0xdc6e('0x1b')](function(_0x4bd813){logger[_0xdc6e('0x1c')]('Trigger,\x20%s',_0xdc6e('0x1d'),_0x4bd813);if(_0x4bd813[_0xdc6e('0x1e')]){if(_0x4bd813['error'][_0xdc6e('0x1f')]===0x1f4){logger[_0xdc6e('0x1e')](_0xdc6e('0x20'),'EventManager',_0x4bd813[_0xdc6e('0x1e')]);}}})[_0xdc6e('0x21')](function(_0x44f988){logger[_0xdc6e('0x1e')](_0xdc6e('0x20'),'EventManager',_0x44f988);});}function afterCreateMessage(_0x541a63){return function(_0x2e3bea){_0x2e3bea=_0x2e3bea[_0xdc6e('0x22')]({'plain':!![]});_0x2e3bea[_0xdc6e('0x23')]=_0x541a63;_0x2e3bea['motionChannel']=_0x541a63;_0x2e3bea['event']=_0x2e3bea[_0xdc6e('0x24')];Promise[_0xdc6e('0x25')]()[_0xdc6e('0x1b')](function(){if(typeof _0x2e3bea[_0xdc6e('0x26')]==='undefined')return null;var _0x3913d7=_0xdc6e('0x27')+_0x2e3bea['ContactId'];return db[_0xdc6e('0x28')][_0xdc6e('0x29')](_0x3913d7,{'type':db[_0xdc6e('0x2a')][_0xdc6e('0x2b')]['SELECT'],'raw':!![]});})[_0xdc6e('0x1b')](function(_0xab8495){if(_0xab8495){_0x2e3bea[_0xdc6e('0x2c')]=_0xab8495[0x0];}if(typeof _0x2e3bea[_0xdc6e('0x2d')]===_0xdc6e('0x2e'))return;return getAgent(_0x2e3bea['UserId']);})[_0xdc6e('0x1b')](function(_0x3d138e){if(_0x3d138e){_0x2e3bea[_0xdc6e('0x2f')]=util[_0xdc6e('0x30')](_0xdc6e('0x31'),_0x3d138e['name']);_0x2e3bea['agent']=_0x3d138e;_0x2e3bea[_0xdc6e('0x23')]=_0x541a63;return request({'event':_0xdc6e('0x32'),'message':_0x2e3bea});}else{return request({'event':'outgoingmessage','message':_0x2e3bea});}})[_0xdc6e('0x21')](function(_0x297a2b){logger[_0xdc6e('0x1e')]('Trigger,\x20%s','AfterCreateMessage',_0x297a2b);});};}function afterCreateOfflineMessage(_0x4c332a){return function(_0xe831f0){_0xe831f0=_0xe831f0[_0xdc6e('0x22')]({'plain':!![]});_0xe831f0[_0xdc6e('0x23')]=_0x4c332a;_0xe831f0['motionChannel']=_0x4c332a;_0xe831f0[_0xdc6e('0x33')]='offlineMessage';return request({'event':_0xe831f0[_0xdc6e('0x33')],'message':_0xe831f0});};}function afterCreate(_0x2202d2,_0x22b2bd){return function(_0x4ee609){_0x4ee609=_0x4ee609[_0xdc6e('0x22')]({'plain':!![]});_0x4ee609[_0xdc6e('0x23')]=_0x2202d2;_0x4ee609[_0xdc6e('0x34')]=_0x2202d2;_0x4ee609[_0xdc6e('0x33')]=_0xdc6e('0x35');Promise[_0xdc6e('0x25')]()[_0xdc6e('0x1b')](function(){var _0x787390=_0xdc6e('0x27')+_0x4ee609[_0xdc6e('0x26')];return db[_0xdc6e('0x28')][_0xdc6e('0x29')](_0x787390,{'type':db[_0xdc6e('0x2a')][_0xdc6e('0x2b')][_0xdc6e('0x36')],'raw':!![]});})[_0xdc6e('0x1b')](function(_0x523710){if(_0x523710){_0x4ee609['contact']=_0x523710[0x0];}if(typeof _0x4ee609[_0xdc6e('0x2d')]===_0xdc6e('0x2e'))return;return getAgent(_0x4ee609['UserId']);})[_0xdc6e('0x1b')](function(_0x123963){if(_0x123963){_0x4ee609['interface']=util[_0xdc6e('0x30')](_0xdc6e('0x31'),_0x123963[_0xdc6e('0x37')]);_0x4ee609[_0xdc6e('0x38')]=_0x123963;}return request({'event':_0x22b2bd,'message':_0x4ee609});})[_0xdc6e('0x21')](function(_0x547e85){logger[_0xdc6e('0x1e')](_0xdc6e('0x20'),_0xdc6e('0x39'),_0x547e85);});};}function afterUpdate(_0x37accc){return function(_0x17a335){var _0x15d32a=_0x17a335[_0xdc6e('0x3a')](_0xdc6e('0x3b'))&&_0x17a335[_0xdc6e('0x3b')];var _0x380814=_0x17a335[_0xdc6e('0x3a')]('substatus');if(_0x15d32a||_0x380814){var _0x22f04c=_0x15d32a?_0xdc6e('0x8'):_0xdc6e('0x3c');var _0x4fb6b8=_0x17a335[_0xdc6e('0x22')]({'plain':!![]});_0x4fb6b8[_0xdc6e('0x23')]=_0x37accc;_0x4fb6b8[_0xdc6e('0x34')]=_0x37accc;_0x4fb6b8[_0xdc6e('0x33')]=_0x15d32a?_0xdc6e('0x3b'):_0xdc6e('0x3c');var _0x310e7a=_0xdc6e('0x27')+_0x4fb6b8[_0xdc6e('0x26')];return db[_0xdc6e('0x28')][_0xdc6e('0x29')](_0x310e7a,{'type':db[_0xdc6e('0x2a')]['QueryTypes']['SELECT'],'raw':!![]})[_0xdc6e('0x1b')](function(_0x68f9c3){if(_0x68f9c3){_0x4fb6b8['contact']=_0x68f9c3[0x0];}if(typeof _0x4fb6b8['UserId']===_0xdc6e('0x2e'))return;return getAgent(_0x4fb6b8[_0xdc6e('0x2d')]);})[_0xdc6e('0x1b')](function(_0x4d7e55){if(_0x4d7e55){_0x4fb6b8[_0xdc6e('0x2f')]=util[_0xdc6e('0x30')](_0xdc6e('0x31'),_0x4d7e55[_0xdc6e('0x37')]);_0x4fb6b8['agent']=_0x4d7e55;}return request({'event':_0x22f04c,'message':_0x4fb6b8});})[_0xdc6e('0x21')](function(_0x58f5cf){logger[_0xdc6e('0x1e')]('Trigger,\x20%s','AfterUpdate',_0x58f5cf);});}};}function getAgent(_0x2346a8){return db[_0xdc6e('0x3d')]['find']({'where':{'id':_0x2346a8},'attributes':['id',_0xdc6e('0x37'),_0xdc6e('0x3e'),_0xdc6e('0x3f'),_0xdc6e('0x40')],'raw':!![]})['then'](function(_0x39881d){return _0x39881d;});}exports[_0xdc6e('0x41')]=function(){for(var _0x19fdf8=0x0;_0x19fdf8<triggers['length'];_0x19fdf8+=0x1){if(db[_0xdc6e('0x42')](triggers[_0x19fdf8][_0xdc6e('0x43')])){db[triggers[_0x19fdf8][_0xdc6e('0x43')]][_0xdc6e('0x44')](triggers[_0x19fdf8][_0xdc6e('0x33')],triggers[_0x19fdf8][_0xdc6e('0x45')](triggers[_0x19fdf8][_0xdc6e('0x23')][_0xdc6e('0x46')](),triggers[_0x19fdf8][_0xdc6e('0x47')]));}}};
\ No newline at end of file
index 1abe0d1..e176e46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c95=['sms','whatsapp','openchannel','getChannels','toLowerCase','clearBlockUser','isUndefined','updateAttributes','role','User','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','bluebird','../mysqldb','./license/util','mail','chat'];(function(_0xea343d,_0x311197){var _0x2c6e9c=function(_0x454bd6){while(--_0x454bd6){_0xea343d['push'](_0xea343d['shift']());}};_0x2c6e9c(++_0x311197);}(_0x1c95,0x14f));var _0x51c9=function(_0x23b417,_0x3205ce){_0x23b417=_0x23b417-0x0;var _0x283999=_0x1c95[_0x23b417];return _0x283999;};'use strict';var _=require('lodash');var BPromise=require(_0x51c9('0x0'));var db=require(_0x51c9('0x1'))['db'];var util=require(_0x51c9('0x2'));var channels=['voice',_0x51c9('0x3'),_0x51c9('0x4'),'fax',_0x51c9('0x5'),_0x51c9('0x6'),_0x51c9('0x7')];exports[_0x51c9('0x8')]=function(){return channels;};exports['isValidChannel']=function(_0x41a4ef){_0x41a4ef=_0x41a4ef[_0x51c9('0x9')]();return _['includes'](channels,_0x41a4ef);};exports[_0x51c9('0xa')]=function(_0x5b3cad,_0x200b23,_0x12aa5e,_0x4b69be){var _0x3f9304={'loginAttempts':_0x200b23,'blocked':_0x12aa5e};if(!_[_0x51c9('0xb')](_0x4b69be)){_0x3f9304['blockedAt']=_0x4b69be;}return _0x5b3cad[_0x51c9('0xc')](_0x3f9304);};exports['getLicense']=function(_0x38bd6d){return new BPromise(function(_0x4a3b12,_0x34e1ea){var _0x30e4e2=0x0;if(_0x38bd6d[_0x51c9('0xd')]!=='agent'){_0x4a3b12(_0x38bd6d);}db[_0x51c9('0xe')]['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x38bd6d['id']}}})[_0x51c9('0xf')](function(_0x622f54){_0x30e4e2=_0x622f54;return util[_0x51c9('0x10')]();})[_0x51c9('0xf')](function(_0x226ace){if(_0x226ace&&_0x226ace[_0x51c9('0x11')]&&_0x30e4e2>=_0x226ace[_0x51c9('0x11')]){throw Error(_0x51c9('0x12'));}_0x4a3b12(_0x38bd6d);})[_0x51c9('0x13')](function(_0x3bfdf9){_0x34e1ea(_0x3bfdf9);});});};
\ No newline at end of file
+var _0xb993=['lodash','../mysqldb','./license/util','voice','mail','fax','whatsapp','openchannel','isValidChannel','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch'];(function(_0x378c2b,_0x3c3f89){var _0x559fdd=function(_0x37f0d0){while(--_0x37f0d0){_0x378c2b['push'](_0x378c2b['shift']());}};_0x559fdd(++_0x3c3f89);}(_0xb993,0xe6));var _0x3b99=function(_0x2b178a,_0x4532fa){_0x2b178a=_0x2b178a-0x0;var _0x252a63=_0xb993[_0x2b178a];return _0x252a63;};'use strict';var _=require(_0x3b99('0x0'));var BPromise=require('bluebird');var db=require(_0x3b99('0x1'))['db'];var util=require(_0x3b99('0x2'));var channels=[_0x3b99('0x3'),_0x3b99('0x4'),'chat',_0x3b99('0x5'),'sms',_0x3b99('0x6'),_0x3b99('0x7')];exports['getChannels']=function(){return channels;};exports[_0x3b99('0x8')]=function(_0x52e92a){_0x52e92a=_0x52e92a['toLowerCase']();return _[_0x3b99('0x9')](channels,_0x52e92a);};exports[_0x3b99('0xa')]=function(_0x5f13f4,_0x2da6fa,_0x141b6c,_0x14b418){var _0x39d629={'loginAttempts':_0x2da6fa,'blocked':_0x141b6c};if(!_[_0x3b99('0xb')](_0x14b418)){_0x39d629[_0x3b99('0xc')]=_0x14b418;}return _0x5f13f4[_0x3b99('0xd')](_0x39d629);};exports[_0x3b99('0xe')]=function(_0x189547){return new BPromise(function(_0x1b7e5f,_0x2cdcfb){var _0x3df174=0x0;if(_0x189547[_0x3b99('0xf')]!=='agent'){_0x1b7e5f(_0x189547);}db[_0x3b99('0x10')][_0x3b99('0x11')]({'where':{'role':_0x3b99('0x12'),'online':!![],'id':{'$ne':_0x189547['id']}}})[_0x3b99('0x13')](function(_0x556cb0){_0x3df174=_0x556cb0;return util[_0x3b99('0xe')]();})[_0x3b99('0x13')](function(_0x53e94a){if(_0x53e94a&&_0x53e94a[_0x3b99('0x14')]&&_0x3df174>=_0x53e94a['agents']){throw Error(_0x3b99('0x15'));}_0x1b7e5f(_0x189547);})[_0x3b99('0x16')](function(_0x3b8d29){_0x2cdcfb(_0x3b8d29);});});};
\ No newline at end of file
index 5c173cb..0cc9e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93dc=['status','render','json','exports','404'];(function(_0x3add96,_0x1e76f8){var _0x2f43fb=function(_0x178048){while(--_0x178048){_0x3add96['push'](_0x3add96['shift']());}};_0x2f43fb(++_0x1e76f8);}(_0x93dc,0x161));var _0xc93d=function(_0x34b8d6,_0x54e533){_0x34b8d6=_0x34b8d6-0x0;var _0xfcf7ec=_0x93dc[_0x34b8d6];return _0xfcf7ec;};'use strict';module[_0xc93d('0x0')][0x194]=function pageNotFound(_0x29bc5a,_0x3e8fd5){var _0x56d7d4=_0xc93d('0x1');var _0x19d4de=0x194;var _0x319a84={'status':_0x19d4de};_0x3e8fd5[_0xc93d('0x2')](_0x319a84['status']);_0x3e8fd5[_0xc93d('0x3')](_0x56d7d4,{},function(_0x43b7f3,_0x5bd859){if(_0x43b7f3){return _0x3e8fd5[_0xc93d('0x2')](_0x319a84[_0xc93d('0x2')])[_0xc93d('0x4')](_0x319a84);}_0x3e8fd5['send'](_0x5bd859);});};
\ No newline at end of file
+var _0xc288=['404','status','render','json','send','exports'];(function(_0x1956c9,_0x2ad6b4){var _0x499d4=function(_0x2fa03f){while(--_0x2fa03f){_0x1956c9['push'](_0x1956c9['shift']());}};_0x499d4(++_0x2ad6b4);}(_0xc288,0x197));var _0x8c28=function(_0x43c44d,_0x4f0253){_0x43c44d=_0x43c44d-0x0;var _0xcc436d=_0xc288[_0x43c44d];return _0xcc436d;};'use strict';module[_0x8c28('0x0')][0x194]=function pageNotFound(_0x24e365,_0x9b0fc9){var _0x97fe28=_0x8c28('0x1');var _0x35649c=0x194;var _0x518692={'status':_0x35649c};_0x9b0fc9[_0x8c28('0x2')](_0x518692[_0x8c28('0x2')]);_0x9b0fc9[_0x8c28('0x3')](_0x97fe28,{},function(_0x2b48b5,_0x468a1e){if(_0x2b48b5){return _0x9b0fc9['status'](_0x518692['status'])[_0x8c28('0x4')](_0x518692);}_0x9b0fc9[_0x8c28('0x5')](_0x468a1e);});};
\ No newline at end of file
index 42b61a9..5ee4542 100644 (file)
        }
     }
 
-    <% if (hideWhenOffline) { -%> // hide template
-        document.getElementById("motion-chat-iframe-tab").style.display="none";
-    <% } -%>
 
 }()); 
\ No newline at end of file
diff --git a/server/migrations/2.5.43.js b/server/migrations/2.5.43.js
deleted file mode 100644 (file)
index 22df2f1..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-'use strict';
-
-var BPromise = require('bluebird');
-var util = require('util');
-
-var logger = require('../config/logger')('migration');
-
-var Sequence = function() {};
-
-Sequence.prototype.enqueue = function(fn) {
-  this.tail = this.tail ? this.tail.finally(fn) : fn();
-};
-
-var Migration = function(queryInterface) {
-  this.queryInterface = queryInterface;
-  this.sequence = new Sequence();
-};
-
-Migration.prototype.changeColumn = function(table, column, type) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .changeColumn(table, column, type)
-      .then(function() {
-        logger.info('Changed column %s in table %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.addColumn = function(table, column, type) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .addColumn(table, column, type)
-      .then(function() {
-        logger.info('Added column %s to %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.dropTable = function(table) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .dropTable(table, {
-        force: true
-      })
-      .then(function() {
-        logger.info('table dropped %s', table);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.addIndex = function(table, column, indexName) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .addIndex(table, column, {
-        indexName: indexName
-      })
-      .then(function() {
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.removeIndex = function(table, indexName) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .removeIndex(table, indexName)
-      .then(function() {
-        logger.info('removeIndex %s %s', table, indexName);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.query = function(sql) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface.sequelize
-      .query(sql)
-      .then(function() {
-        logger.info('query %s', sql);
-      })
-      .catch(function(err) {
-        logger.info(JSON.stringify(err));
-      });
-  });
-};
-
-Migration.prototype.removeColumn = function(table, column) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .removeColumn(table, column)
-      .then(function() {
-        logger.info('Removed column %s from %s', column, table);
-      })
-      .catch(function(err) {
-        logger.info(
-          util.inspect(err, {
-            showHidden: false,
-            depth: null
-          })
-        );
-      });
-  });
-};
-
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
-  var _this = this;
-  this.sequence.enqueue(function() {
-    return _this.queryInterface
-      .renameColumn(table, oldColumn, newColumn)
-      .then(function() {
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);
-      })
-      .catch(function(err) {
-        logger.info(
-          util.inspect(err, {
-            showHidden: false,
-            depth: null
-          })
-        );
-      });
-  });
-};
-
-Migration.prototype.final = function(resolve) {
-  this.sequence.enqueue(function() {
-    return resolve();
-  });
-};
-
-module.exports = {
-  up: function(queryInterface, Sequelize) {
-    return new BPromise(function(resolve) {
-      var migration = new Migration(queryInterface);
-
-      // START FINAL
-      migration.final(resolve);
-      // END FINAL
-    });
-  },
-
-  down: function(queryInterface, Sequelize) {
-    // var migration = new Migration(queryInterface);
-  }
-};
\ No newline at end of file
index 844ddf3..05c8332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f1=['Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','Automation','../api/automation/automation.model','CannedAnswer','Disposition','../api/disposition/disposition.model','../api/interval/interval.model','Pause','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/tag/tag.model','Template','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','ZendeskField','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatQueueReport','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','WhatsappTransferReport','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','cascade','UserId','User','hasMany','VoiceQueuesRt','HopperFinals','HopperHistory','OpenchannelInteraction','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteraction','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','ChatGroup','Groups','chat_group_has_users','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_fax_interactions','user_has_openchannel_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueues','UserVoicePrefix','MailQueues','UserFaxQueue','OpenchannelQueues','WhatsappQueue','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','moh_has_sounds','Members','Hoppers','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','Interval','mandatoryDispositionPause','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','VoiceCallReport','QueueCalls','AgentReports','Contact','MailAccountId','CloudProviderId','restrict','Imap','Smtp','Dispositions','Answers','List','ListId','mandatoryDispositionPauseId','team_has_mail_queues','MailInteractionId','Account','ContactId','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','user_has_mail_interactions','Attachments','Interaction','ChatOfflineMessageId','IntervalId','FaxAccountId','Interactions','Applications','Exntensions','user_has_fax_accounts','TagId','FaxInteractionId','fax_interaction_has_tags','Users','team_has_fax_queues','Teams','SmsAccountId','SmsAccount','user_has_sms_accounts','SmsInteractionId','sms_interaction_has_tags','user_has_sms_interactions','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelApplication','OpenchannelQueue','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','AttachmentId','team_has_openchannel_queues','ProactiveActions','ChatApplication','OpenchannelQueueReport','Agent','ChatQueue','Website','ChatWebsiteId','chat_interaction_has_tags','user_has_chat_interactions','ChatGroupId','CompanyId','Company','cm_contact_has_tags','Queue','Campaign','CampaignId','OwnerId','Condition','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','ChatApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','Trigger','AllConditions','AllCondition','AnyCondition','TriggerAnyId','TriggerId','AnalyticCustomReport','AnalyticDefaultReport','MetricId','Configurations','AccountId','Subjects','SubjectId','Descriptions','Fields','FieldId','Description','VariableId','SugarcrmField','DescriptionId','Subject','Field','int_desk_configuration_has_tags','ZohoField','FreshdeskField','int_freshdesk_configuration_has_tags','ServicenowAccount','ServicenowConfiguration','Dynamics365Configuration','Dynamics365Field','FreshsalesField','ToId','SessionId','SmsQueueReport','ProjectId','ChatQueues','FaxQueues','SmsQueues','team_has_whatsapp_queues','WhatsappQueues','VoicePrefixes','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','FromChatWebsiteId','FromAgent','ToChatQueueId','ToQueue','ToAccount','FaxTransferReport','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsAccountId','CmCustomField','CustomFields','Contacts','Queues','Extensions','UserProfileSections','Resources','WhatsappAccountId','WhatsappInteractionId','ToWhatsappAccountId','ToQueueId','UserWhatsappQueue','WhatsappQueueId','hasOne','exports','../config/environment','sequelize','lodash','jstz','determine','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','sequelizeHistory','mysql','utf8_general_ci','database','username','password','options','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport'];(function(_0x23c025,_0x2cf181){var _0x2c21f5=function(_0x5786cc){while(--_0x5786cc){_0x23c025['push'](_0x23c025['shift']());}};_0x2c21f5(++_0x2cf181);}(_0x83f1,0x1cc));var _0x183f=function(_0x13c391,_0x147226){_0x13c391=_0x13c391-0x0;var _0x14d618=_0x83f1[_0x13c391];return _0x14d618;};'use strict';var config=require(_0x183f('0x0'));var Sequelize=require(_0x183f('0x1'));var _=require(_0x183f('0x2'));var jstz=require(_0x183f('0x3'));var timezone=jstz[_0x183f('0x4')]();config['sequelize']=_['defaultsDeep'](config[_0x183f('0x1')],{'database':_0x183f('0x5'),'username':_0x183f('0x6'),'password':_0x183f('0x7'),'options':{'host':_0x183f('0x8'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x183f('0x9')},'logging':![],'timezone':timezone[_0x183f('0xa')](),'define':{'charset':_0x183f('0xb'),'collate':'utf8_general_ci'}}});config[_0x183f('0xc')]=_['defaultsDeep'](config[_0x183f('0xc')],{'database':_0x183f('0x5'),'username':_0x183f('0x6'),'password':_0x183f('0x7'),'options':{'host':_0x183f('0x8'),'port':0xcea,'dialect':_0x183f('0xd'),'dialectOptions':{'charset':_0x183f('0x9')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x183f('0xb'),'collate':_0x183f('0xe')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x183f('0x1')][_0x183f('0xf')],config[_0x183f('0x1')][_0x183f('0x10')],config[_0x183f('0x1')]['password'],config[_0x183f('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x183f('0xf')],config[_0x183f('0xc')][_0x183f('0x10')],config[_0x183f('0xc')][_0x183f('0x11')],config['sequelizeHistory'][_0x183f('0x12')])};db['User']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x14'));db['VoiceChanSpy']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x15'));db['VoiceContext']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x16'));db[_0x183f('0x17')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/voiceExtension/voiceExtension.model');db[_0x183f('0x18')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0x183f('0x19')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x1a'));db[_0x183f('0x1b')]=db[_0x183f('0x1')]['import'](_0x183f('0x1c'));db[_0x183f('0x1d')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x1e'));db[_0x183f('0x1f')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x20'));db[_0x183f('0x21')]=db['sequelize'][_0x183f('0x13')]('../api/voiceMailMessage/voiceMailMessage.model');db['VoiceCallReport']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x22'));db[_0x183f('0x23')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x24'));db[_0x183f('0x25')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x26'));db[_0x183f('0x27')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x28'));db[_0x183f('0x29')]=db[_0x183f('0x1')]['import']('../api/memberReport/memberReport.model');db[_0x183f('0x2a')]=db[_0x183f('0x1')]['import'](_0x183f('0x2b'));db['VoiceTransferReport']=db['sequelize'][_0x183f('0x13')](_0x183f('0x2c'));db[_0x183f('0x2d')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x2e'));db[_0x183f('0x2f')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x183f('0x30')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x31'));db[_0x183f('0x32')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x33'));db['UserFaxQueue']=db[_0x183f('0x1')]['import'](_0x183f('0x34'));db[_0x183f('0x35')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/userSmsQueue/userSmsQueue.model');db[_0x183f('0x36')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x37'));db['UserWhatsappQueue']=db[_0x183f('0x1')][_0x183f('0x13')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0x183f('0x38')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x39'));db[_0x183f('0x3a')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x3b'));db[_0x183f('0x3c')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x3d'));db[_0x183f('0x3e')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x3f'));db['MailSubstatus']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x40'));db['MailInteraction']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x41'));db[_0x183f('0x42')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/mailMessage/mailMessage.model');db[_0x183f('0x43')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x44'));db[_0x183f('0x45')]=db['sequelize'][_0x183f('0x13')]('../api/mailQueueReport/mailQueueReport.model');db['Dashboard']=db[_0x183f('0x1')]['import'](_0x183f('0x46'));db[_0x183f('0x47')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x48'));db[_0x183f('0x49')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x4a'));db[_0x183f('0x4b')]=db[_0x183f('0x1')]['import'](_0x183f('0x4c'));db[_0x183f('0x4d')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x4e'));db[_0x183f('0x4f')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x50'));db[_0x183f('0x51')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x52'));db[_0x183f('0x53')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x54'));db['SmsAccount']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x55'));db[_0x183f('0x56')]=db[_0x183f('0x1')]['import']('../api/smsApplication/smsApplication.model');db[_0x183f('0x57')]=db[_0x183f('0x1')]['import'](_0x183f('0x58'));db[_0x183f('0x59')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x5a'));db[_0x183f('0x5b')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x5c'));db[_0x183f('0x5d')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x5e'));db['OpenchannelApplication']=db[_0x183f('0x1')][_0x183f('0x13')]('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db[_0x183f('0x1')][_0x183f('0x13')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x183f('0x5f')]=db[_0x183f('0x1')]['import'](_0x183f('0x60'));db['OpenchannelQueue']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x61'));db[_0x183f('0x62')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x63'));db['OpenchannelQueueReport']=db['sequelize'][_0x183f('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db['ChatApplication']=db['sequelize']['import']('../api/chatApplication/chatApplication.model');db[_0x183f('0x64')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0x183f('0x65')]=db[_0x183f('0x1')]['import'](_0x183f('0x66'));db[_0x183f('0x67')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x68'));db['ChatQueue']=db['sequelize']['import'](_0x183f('0x69'));db['ChatGroup']=db[_0x183f('0x1')]['import'](_0x183f('0x6a'));db[_0x183f('0x6b')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x6c'));db[_0x183f('0x6d')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x6e'));db[_0x183f('0x6f')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x70'));db[_0x183f('0x71')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x72'));db[_0x183f('0x73')]=db[_0x183f('0x1')]['import'](_0x183f('0x74'));db[_0x183f('0x75')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x76'));db[_0x183f('0x77')]=db['sequelize']['import'](_0x183f('0x78'));db[_0x183f('0x79')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x7a'));db['CmCustomField']=db[_0x183f('0x1')]['import'](_0x183f('0x7b'));db[_0x183f('0x7c')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/action/action.model');db[_0x183f('0x7d')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x7e'));db[_0x183f('0x7f')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/cannedAnswer/cannedAnswer.model');db[_0x183f('0x80')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x81'));db['Condition']=db[_0x183f('0x1')][_0x183f('0x13')]('../api/condition/condition.model');db['Interval']=db[_0x183f('0x1')]['import'](_0x183f('0x82'));db[_0x183f('0x83')]=db['sequelize'][_0x183f('0x13')]('../api/pause/pause.model');db[_0x183f('0x84')]=db[_0x183f('0x1')]['import'](_0x183f('0x85'));db[_0x183f('0x86')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x87'));db[_0x183f('0x88')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x89'));db[_0x183f('0x8a')]=db[_0x183f('0x1')]['import'](_0x183f('0x8b'));db['Tag']=db[_0x183f('0x1')]['import'](_0x183f('0x8c'));db[_0x183f('0x8d')]=db['sequelize']['import']('../api/template/template.model');db['Trigger']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x8e'));db[_0x183f('0x8f')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x90'));db[_0x183f('0x91')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x92'));db[_0x183f('0x93')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x94'));db['AnalyticCustomReport']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x95'));db['AnalyticDefaultReport']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x96'));db[_0x183f('0x97')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x98'));db[_0x183f('0x99')]=db['sequelize'][_0x183f('0x13')]('../api/analyticMetric/analyticMetric.model');db[_0x183f('0x9a')]=db[_0x183f('0x1')]['import'](_0x183f('0x9b'));db[_0x183f('0x9c')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x9d'));db[_0x183f('0x9e')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x183f('0x9f')]=db['sequelize'][_0x183f('0x13')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0x183f('0xa0')]=db['sequelize']['import'](_0x183f('0xa1'));db[_0x183f('0xa2')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xa3'));db[_0x183f('0xa4')]=db[_0x183f('0x1')]['import'](_0x183f('0xa5'));db['SugarcrmField']=db['sequelize'][_0x183f('0x13')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0x183f('0xa6')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xa7'));db[_0x183f('0xa8')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xa9'));db[_0x183f('0xaa')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xab'));db[_0x183f('0xac')]=db['sequelize']['import'](_0x183f('0xad'));db[_0x183f('0xae')]=db[_0x183f('0x1')]['import'](_0x183f('0xaf'));db['ZohoField']=db[_0x183f('0x1')]['import'](_0x183f('0xb0'));db[_0x183f('0xb1')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xb2'));db[_0x183f('0xb3')]=db[_0x183f('0x1')]['import']('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0x183f('0xb4')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/intZendeskField/intZendeskField.model');db[_0x183f('0xb5')]=db['sequelize'][_0x183f('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x183f('0xb6')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xb7'));db['FreshdeskField']=db['sequelize'][_0x183f('0x13')](_0x183f('0xb8'));db[_0x183f('0xb9')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xba'));db[_0x183f('0xbb')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xbc'));db[_0x183f('0xbd')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xbe'));db['ServicenowAccount']=db[_0x183f('0x1')]['import']('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db[_0x183f('0x1')]['import'](_0x183f('0xbf'));db[_0x183f('0xc0')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/intServicenowField/intServicenowField.model');db[_0x183f('0xc1')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xc2'));db['Dynamics365Configuration']=db['sequelize']['import'](_0x183f('0xc3'));db['Dynamics365Field']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xc4'));db[_0x183f('0xc5')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xc6'));db[_0x183f('0xc7')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xc8'));db['FreshsalesField']=db['sequelize']['import'](_0x183f('0xc9'));db[_0x183f('0x91')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x92'));db[_0x183f('0xca')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xcb'));db[_0x183f('0xcc')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/chatQueueReport/chatQueueReport.model');db[_0x183f('0xcd')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xce'));db[_0x183f('0xcf')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xd0'));db[_0x183f('0xd1')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0x183f('0xd2')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xd3'));db['SmsQueueReport']=db[_0x183f('0x1')]['import'](_0x183f('0xd4'));db[_0x183f('0xd5')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xd6'));db[_0x183f('0xd7')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xd8'));db[_0x183f('0xd9')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xda'));db[_0x183f('0xdb')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xdc'));db[_0x183f('0xdd')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xde'));db[_0x183f('0xdf')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xe0'));db[_0x183f('0xe1')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xe2'));db[_0x183f('0xe3')]=db['sequelize']['import'](_0x183f('0xe4'));db[_0x183f('0xe5')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xe6'));db[_0x183f('0xe7')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xe8'));db['Campaign']=db[_0x183f('0x1')]['import'](_0x183f('0xe9'));db[_0x183f('0xea')]=db['sequelize'][_0x183f('0x13')](_0x183f('0xeb'));db[_0x183f('0xec')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/attachment/attachment.model');db[_0x183f('0xed')]=db[_0x183f('0x1')]['import'](_0x183f('0xee'));db[_0x183f('0xef')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xf0'));db[_0x183f('0xf1')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xf2'));db['FaxTransferReport']=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xf3'));db[_0x183f('0xf4')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x183f('0xf5')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xf6'));db[_0x183f('0xf7')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xf8'));db[_0x183f('0xf9')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xfa'));db[_0x183f('0xfb')]=db['sequelize'][_0x183f('0x13')]('../api/userProfile/userProfile.model');db[_0x183f('0xfc')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0xfd'));db[_0x183f('0xfe')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/userProfileResource/userProfileResource.model');db[_0x183f('0xff')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x100'));db[_0x183f('0x101')]=db['sequelize'][_0x183f('0x13')]('../api/whatsappAccount/whatsappAccount.model');db[_0x183f('0x102')]=db[_0x183f('0x1')]['import'](_0x183f('0x103'));db[_0x183f('0x104')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x105'));db[_0x183f('0x106')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x107'));db[_0x183f('0x108')]=db[_0x183f('0x1')][_0x183f('0x13')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x183f('0x109')]=db['sequelize']['import']('../api/whatsappTransferReport/whatsappTransferReport.model');db['WhatsappQueue']=db['sequelize'][_0x183f('0x13')]('../api/whatsappQueue/whatsappQueue.model');db[_0x183f('0x10a')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x10b'));db[_0x183f('0x10c')]=db['sequelize'][_0x183f('0x13')](_0x183f('0x10d'));db[_0x183f('0x10e')]=db[_0x183f('0x1')][_0x183f('0x13')](_0x183f('0x10f'));db['UserVoicePrefix']=db[_0x183f('0x1')][_0x183f('0x13')]('../api/userVoicePrefix/userVoicePrefix.model');db['User']['hasOne'](db[_0x183f('0x1f')],{'as':_0x183f('0x1f'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')][_0x183f('0x113')](db['VoiceRecording'],{'as':'Recordings','foreignKey':'UserId'});db[_0x183f('0x112')][_0x183f('0x113')](db['UserVoiceQueueRt'],{'as':_0x183f('0x114'),'foreignKey':_0x183f('0x111')});db['User'][_0x183f('0x113')](db[_0x183f('0x17')],{'as':'Extensions','onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x112')]['hasMany'](db[_0x183f('0x75')],{'as':_0x183f('0x115'),'foreignKey':'UserId'});db[_0x183f('0x112')][_0x183f('0x113')](db['CmHopperHistory'],{'as':_0x183f('0x116'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')]['hasMany'](db[_0x183f('0x79')],{'as':_0x183f('0x79'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')][_0x183f('0x113')](db[_0x183f('0x117')],{'as':_0x183f('0x118'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')]['hasMany'](db[_0x183f('0x64')],{'as':_0x183f('0x119'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')][_0x183f('0x113')](db[_0x183f('0x57')],{'as':_0x183f('0x11a'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')][_0x183f('0x113')](db[_0x183f('0x4d')],{'as':_0x183f('0x11b'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x112')]['hasMany'](db[_0x183f('0x11c')],{'as':'MailInteractions','foreignKey':_0x183f('0x111')});db[_0x183f('0x112')][_0x183f('0x113')](db[_0x183f('0x104')],{'as':'WhatsappInteractions','foreignKey':_0x183f('0x111')});db['User'][_0x183f('0x113')](db[_0x183f('0xff')],{'as':_0x183f('0x11d'),'foreignKey':_0x183f('0x11e')});db['User'][_0x183f('0x11f')](db['UserProfile'],{'as':_0x183f('0xfb'),'foreignKey':_0x183f('0x120')});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x122')],{'as':_0x183f('0x123'),'through':_0x183f('0x124')});db['User'][_0x183f('0x121')](db[_0x183f('0x6f')],{'as':'Contacts','through':_0x183f('0x125')});db[_0x183f('0x112')]['belongsToMany'](db[_0x183f('0xf7')],{'as':_0x183f('0x126'),'through':_0x183f('0x127')});db[_0x183f('0x112')][_0x183f('0x121')](db['Team'],{'through':'user_has_teams'});db[_0x183f('0x112')]['belongsToMany'](db[_0x183f('0x11c')],{'as':'MailInteractions','through':'user_has_mail_interactions'});db['User'][_0x183f('0x121')](db[_0x183f('0x64')],{'as':_0x183f('0x119'),'through':'user_has_chat_interactions'});db[_0x183f('0x112')]['belongsToMany'](db[_0x183f('0x4d')],{'as':_0x183f('0x11b'),'through':_0x183f('0x128')});db['User'][_0x183f('0x121')](db[_0x183f('0x57')],{'as':_0x183f('0x11a'),'through':'user_has_sms_interactions'});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x117')],{'as':_0x183f('0x118'),'through':_0x183f('0x129')});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x104')],{'as':_0x183f('0x12a'),'through':_0x183f('0x12b')});db[_0x183f('0x112')]['belongsToMany'](db[_0x183f('0x19')],{'as':_0x183f('0x12c'),'through':_0x183f('0x2f'),'required':![]});db[_0x183f('0x112')][_0x183f('0x121')](db['VoicePrefix'],{'as':'VoicePrefixes','through':_0x183f('0x12d'),'required':![]});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x3e')],{'as':_0x183f('0x12e'),'through':_0x183f('0x32'),'required':![]});db['User']['belongsToMany'](db['ChatQueue'],{'as':'ChatQueues','through':_0x183f('0x30'),'required':![],'hooks':!![]});db[_0x183f('0x112')]['belongsToMany'](db[_0x183f('0x51')],{'as':'FaxQueues','through':_0x183f('0x12f'),'required':![]});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x5b')],{'as':'SmsQueues','through':_0x183f('0x35'),'required':![]});db[_0x183f('0x112')]['belongsToMany'](db['OpenchannelQueue'],{'as':_0x183f('0x130'),'through':'UserOpenchannelQueue','required':![]});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x131')],{'as':'WhatsappQueues','through':'UserWhatsappQueue','required':![]});db['User'][_0x183f('0x121')](db['CmList'],{'through':'cm_user_has_lists'});db['User']['belongsToMany'](db[_0x183f('0x62')],{'as':_0x183f('0x132'),'through':_0x183f('0x133')});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0x49')],{'as':_0x183f('0x134'),'through':'user_has_fax_accounts'});db['User'][_0x183f('0x121')](db[_0x183f('0x3c')],{'as':_0x183f('0x135'),'through':_0x183f('0x136')});db[_0x183f('0x112')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x183f('0x137'),'through':_0x183f('0x138')});db[_0x183f('0x112')][_0x183f('0x121')](db['SmsAccount'],{'as':'SmsAccounts','through':'user_has_sms_accounts'});db[_0x183f('0x112')]['belongsToMany'](db[_0x183f('0x101')],{'as':'WhatsappAccounts','through':_0x183f('0x139')});db[_0x183f('0x112')][_0x183f('0x121')](db[_0x183f('0xdf')],{'as':_0x183f('0x13a'),'through':_0x183f('0x13b')});db['VoiceChanSpy']['hasMany'](db[_0x183f('0x17')],{'as':_0x183f('0x13c'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x13d')});db[_0x183f('0x13e')][_0x183f('0x113')](db[_0x183f('0x17')],{'onDelete':'cascade'});db['VoiceExtension'][_0x183f('0x113')](db[_0x183f('0x17')],{'as':'Applications','onDelete':_0x183f('0x110')});db['VoiceMusicOnHold'][_0x183f('0x121')](db['Sound'],{'as':'Sounds','through':_0x183f('0x13f')});db[_0x183f('0x19')][_0x183f('0x113')](db[_0x183f('0x2d')],{'as':_0x183f('0x140'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0x183f('0x71')],{'as':_0x183f('0x141'),'foreignKey':_0x183f('0x142')});db[_0x183f('0x19')][_0x183f('0x113')](db['CmHopperFinal'],{'as':_0x183f('0x115'),'foreignKey':_0x183f('0x142')});db['VoiceQueue']['hasMany'](db[_0x183f('0x77')],{'as':_0x183f('0x143'),'foreignKey':_0x183f('0x142')});db[_0x183f('0x19')][_0x183f('0x113')](db[_0x183f('0x79')],{'as':_0x183f('0x79'),'foreignKey':_0x183f('0x142')});db[_0x183f('0x19')][_0x183f('0x113')](db[_0x183f('0x73')],{'as':_0x183f('0x144'),'foreignKey':_0x183f('0x142')});db[_0x183f('0x19')][_0x183f('0x113')](db[_0x183f('0xd2')],{'as':_0x183f('0x145'),'foreignKey':_0x183f('0x142')});db[_0x183f('0x19')][_0x183f('0x11f')](db[_0x183f('0x2a')],{'as':_0x183f('0x2a'),'foreignKey':_0x183f('0x146')});db[_0x183f('0x19')][_0x183f('0x11f')](db[_0x183f('0x2a')],{'as':_0x183f('0x147'),'foreignKey':_0x183f('0x148')});db[_0x183f('0x19')][_0x183f('0x11f')](db[_0x183f('0x149')],{'as':_0x183f('0x149'),'foreignKey':'IntervalId'});db[_0x183f('0x19')][_0x183f('0x11f')](db[_0x183f('0x83')],{'as':_0x183f('0x14a'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x183f('0x19')][_0x183f('0x121')](db[_0x183f('0xf7')],{'as':_0x183f('0x126'),'through':_0x183f('0x14b')});db['VoiceQueue'][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':_0x183f('0x2f')});db[_0x183f('0x19')][_0x183f('0x121')](db[_0x183f('0xe5')],{'as':'Teams','through':'TeamVoiceQueue'});db[_0x183f('0x19')]['belongsToMany'](db[_0x183f('0xf7')],{'as':_0x183f('0x14d'),'through':_0x183f('0x14e')});db['VoiceRecording'][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':'User','foreignKey':'UserId'});db['ScreenRecording'][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x112'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x1f')][_0x183f('0x113')](db[_0x183f('0x21')],{'as':_0x183f('0x14f'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x150'),'sourceKey':_0x183f('0x151')});db[_0x183f('0x21')][_0x183f('0x11f')](db[_0x183f('0x1f')],{'foreignKey':_0x183f('0x150'),'targetKey':_0x183f('0x151')});db[_0x183f('0x152')]['hasMany'](db['VoiceQueueReport'],{'as':_0x183f('0x153'),'foreignKey':'uniqueid','constraints':![]});db[_0x183f('0x152')]['hasMany'](db[_0x183f('0x25')],{'as':_0x183f('0x154'),'foreignKey':'uniqueid','constraints':![]});db[_0x183f('0x152')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':'User','foreignKey':'UserId'});db['VoiceCallReport'][_0x183f('0x11f')](db['CmContact'],{'as':_0x183f('0x155'),'foreignKey':'ContactId'});db[_0x183f('0x38')]['belongsTo'](db[_0x183f('0x3c')],{'as':_0x183f('0x3c'),'foreignKey':_0x183f('0x156')});db[_0x183f('0x38')][_0x183f('0x11f')](db[_0x183f('0x10a')],{'as':_0x183f('0x10a'),'foreignKey':_0x183f('0x157'),'onDelete':'restrict'});db['MailServerOut'][_0x183f('0x11f')](db[_0x183f('0x3c')],{'as':_0x183f('0x3c'),'foreignKey':'MailAccountId'});db[_0x183f('0x3a')][_0x183f('0x11f')](db[_0x183f('0x10a')],{'as':_0x183f('0x10a'),'foreignKey':'CloudProviderId','onDelete':_0x183f('0x158')});db[_0x183f('0x3c')]['hasOne'](db['MailServerIn'],{'as':_0x183f('0x159'),'onDelete':'cascade'});db[_0x183f('0x3c')]['hasOne'](db['MailServerOut'],{'as':_0x183f('0x15a'),'onDelete':'cascade'});db[_0x183f('0x3c')][_0x183f('0x113')](db[_0x183f('0x80')],{'as':_0x183f('0x15b'),'foreignKey':_0x183f('0x156'),'onDelete':_0x183f('0x110')});db[_0x183f('0x3c')][_0x183f('0x113')](db['CannedAnswer'],{'as':_0x183f('0x15c'),'foreignKey':_0x183f('0x156')});db[_0x183f('0x3c')][_0x183f('0x113')](db[_0x183f('0x42')],{'as':'Messages','foreignKey':'MailAccountId'});db[_0x183f('0x3c')]['hasMany'](db[_0x183f('0x11c')],{'as':'Interactions'});db[_0x183f('0x3c')][_0x183f('0x113')](db[_0x183f('0x43')],{'as':'Applications'});db[_0x183f('0x3c')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0x3c')][_0x183f('0x11f')](db['Template'],{'as':_0x183f('0x8d'),'foreignKey':'TemplateId'});db['MailAccount']['belongsTo'](db[_0x183f('0x83')],{'as':_0x183f('0x14a'),'foreignKey':_0x183f('0x15f')});db[_0x183f('0x3c')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':'user_has_mail_accounts'});db[_0x183f('0x3e')][_0x183f('0x121')](db['User'],{'as':_0x183f('0x14c'),'through':_0x183f('0x32')});db[_0x183f('0x3e')][_0x183f('0x121')](db[_0x183f('0xe5')],{'through':_0x183f('0x160'),'as':'Teams'});db['MailInteraction'][_0x183f('0x113')](db[_0x183f('0x42')],{'as':'Messages','onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x161')});db[_0x183f('0x11c')]['belongsTo'](db[_0x183f('0x3c')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x156')});db[_0x183f('0x11c')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':_0x183f('0x155'),'foreignKey':_0x183f('0x163')});db[_0x183f('0x11c')]['belongsTo'](db['User'],{'as':_0x183f('0x164'),'foreignKey':_0x183f('0x111')});db['MailInteraction']['belongsToMany'](db[_0x183f('0x165')],{'through':_0x183f('0x166'),'as':_0x183f('0x167')});db[_0x183f('0x11c')][_0x183f('0x121')](db[_0x183f('0x165')],{'through':_0x183f('0x166'),'as':_0x183f('0x168')});db['MailInteraction'][_0x183f('0x121')](db['User'],{'as':'Users','through':_0x183f('0x169'),'foreignKey':_0x183f('0x161')});db[_0x183f('0x42')]['hasMany'](db[_0x183f('0xec')],{'as':_0x183f('0x16a'),'onDelete':_0x183f('0x110')});db[_0x183f('0x42')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x112')});db[_0x183f('0x42')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':'cascade','as':_0x183f('0x155')});db[_0x183f('0x42')][_0x183f('0x11f')](db[_0x183f('0x11c')],{'as':_0x183f('0x16b'),'foreignKey':_0x183f('0x161')});db[_0x183f('0x42')][_0x183f('0x11f')](db[_0x183f('0x3c')],{'as':_0x183f('0x162'),'foreignKey':'MailAccountId'});db[_0x183f('0x42')][_0x183f('0x11f')](db[_0x183f('0x62')],{'as':'ChatWebsite','foreignKey':'ChatWebsiteId'});db['MailMessage'][_0x183f('0x11f')](db[_0x183f('0x67')],{'as':_0x183f('0x67'),'foreignKey':_0x183f('0x16c')});db[_0x183f('0x43')][_0x183f('0x11f')](db['User'],{'onDelete':_0x183f('0x158')});db[_0x183f('0x43')][_0x183f('0x11f')](db[_0x183f('0x3e')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x43')][_0x183f('0x11f')](db['MailAccount'],{'onDelete':_0x183f('0x158')});db[_0x183f('0x43')][_0x183f('0x11f')](db[_0x183f('0x149')],{'onDelete':'restrict','foreignKey':_0x183f('0x16d')});db[_0x183f('0x43')][_0x183f('0x11f')](db[_0x183f('0x165')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x183f('0x45')][_0x183f('0x11f')](db['MailAccount'],{});db[_0x183f('0x45')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':'List','foreignKey':_0x183f('0x15e')});db['MailQueueReport']['belongsTo'](db[_0x183f('0x6f')],{'as':'Contact','foreignKey':_0x183f('0x163')});db[_0x183f('0x45')][_0x183f('0x11f')](db[_0x183f('0x11c')],{});db['MailQueueReport']['belongsTo'](db['MailMessage'],{});db[_0x183f('0x45')]['belongsTo'](db['User'],{});db[_0x183f('0x45')][_0x183f('0x11f')](db[_0x183f('0x3e')],{});db['Dashboard'][_0x183f('0x113')](db['DashboardItem'],{'as':'Items','onDelete':_0x183f('0x110')});db[_0x183f('0x49')][_0x183f('0x113')](db[_0x183f('0x80')],{'as':_0x183f('0x15b'),'foreignKey':_0x183f('0x16e'),'onDelete':'cascade'});db[_0x183f('0x49')][_0x183f('0x113')](db[_0x183f('0x7f')],{'as':_0x183f('0x15c'),'foreignKey':_0x183f('0x16e')});db[_0x183f('0x49')]['hasMany'](db[_0x183f('0x4d')],{'as':_0x183f('0x16f')});db[_0x183f('0x49')][_0x183f('0x113')](db[_0x183f('0x4b')],{'as':_0x183f('0x170')});db['FaxAccount']['hasMany'](db['VoiceExtension'],{'as':_0x183f('0x171'),'onDelete':'cascade'});db[_0x183f('0x49')][_0x183f('0x113')](db[_0x183f('0x4f')],{'as':_0x183f('0x14f')});db['FaxAccount'][_0x183f('0x11f')](db[_0x183f('0x2a')],{'as':_0x183f('0x2a')});db[_0x183f('0x49')][_0x183f('0x11f')](db['CmList'],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0x49')]['belongsTo'](db[_0x183f('0x83')],{'as':_0x183f('0x14a'),'foreignKey':_0x183f('0x15f')});db[_0x183f('0x49')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':'Agents','through':_0x183f('0x172')});db['FaxApplication']['belongsTo'](db['User'],{'onDelete':_0x183f('0x158')});db['FaxApplication'][_0x183f('0x11f')](db[_0x183f('0x51')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x4b')][_0x183f('0x11f')](db['FaxAccount'],{'onDelete':'restrict'});db['FaxApplication'][_0x183f('0x11f')](db['Tag'],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x173')});db[_0x183f('0x4d')]['hasMany'](db[_0x183f('0x4f')],{'as':'Messages','onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x174')});db[_0x183f('0x4d')]['belongsTo'](db[_0x183f('0x49')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x16e')});db['FaxInteraction'][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':_0x183f('0x155'),'foreignKey':_0x183f('0x163')});db[_0x183f('0x4d')][_0x183f('0x11f')](db['User'],{'as':_0x183f('0x164'),'foreignKey':_0x183f('0x111')});db['FaxInteraction']['belongsToMany'](db[_0x183f('0x165')],{'through':_0x183f('0x175'),'as':_0x183f('0x167')});db[_0x183f('0x4d')][_0x183f('0x121')](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x183f('0x168')});db[_0x183f('0x4d')]['belongsToMany'](db[_0x183f('0x112')],{'as':_0x183f('0x176'),'through':_0x183f('0x128'),'foreignKey':_0x183f('0x174')});db[_0x183f('0x4f')][_0x183f('0x11f')](db['User'],{'onDelete':'cascade','as':_0x183f('0x112')});db['FaxMessage'][_0x183f('0x11f')](db[_0x183f('0x4d')],{'as':'Interaction','foreignKey':'FaxInteractionId'});db['FaxMessage'][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x155')});db[_0x183f('0x4f')][_0x183f('0x11f')](db[_0x183f('0xec')],{'as':'Attachment','foreignKey':'AttachmentId'});db['FaxMessage'][_0x183f('0x11f')](db[_0x183f('0x49')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x16e')});db[_0x183f('0x51')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':'Agents','through':'UserFaxQueue'});db[_0x183f('0x51')][_0x183f('0x121')](db[_0x183f('0xe5')],{'through':_0x183f('0x177'),'as':_0x183f('0x178')});db[_0x183f('0x53')]['belongsTo'](db[_0x183f('0x49')],{});db[_0x183f('0x53')]['belongsTo'](db[_0x183f('0xf7')],{'as':'List','foreignKey':_0x183f('0x15e')});db['FaxQueueReport'][_0x183f('0x11f')](db['CmContact'],{'as':'Contact','foreignKey':_0x183f('0x163')});db[_0x183f('0x53')][_0x183f('0x11f')](db[_0x183f('0x4d')],{});db[_0x183f('0x53')][_0x183f('0x11f')](db['FaxMessage'],{});db['FaxQueueReport'][_0x183f('0x11f')](db[_0x183f('0x112')],{});db['FaxQueueReport'][_0x183f('0x11f')](db[_0x183f('0x51')],{});db['SmsAccount'][_0x183f('0x113')](db[_0x183f('0x80')],{'as':'Dispositions','foreignKey':_0x183f('0x179'),'onDelete':_0x183f('0x110')});db[_0x183f('0x17a')][_0x183f('0x113')](db[_0x183f('0x7f')],{'as':'Answers','foreignKey':_0x183f('0x179')});db['SmsAccount']['hasMany'](db[_0x183f('0x59')],{'as':_0x183f('0x14f'),'foreignKey':_0x183f('0x179')});db[_0x183f('0x17a')]['hasMany'](db[_0x183f('0x57')],{'as':_0x183f('0x16f')});db[_0x183f('0x17a')][_0x183f('0x113')](db['SmsApplication'],{'as':_0x183f('0x170')});db[_0x183f('0x17a')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':'List','foreignKey':_0x183f('0x15e')});db['SmsAccount'][_0x183f('0x11f')](db[_0x183f('0x83')],{'as':'mandatoryDispositionPause','foreignKey':_0x183f('0x15f')});db[_0x183f('0x17a')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':_0x183f('0x17b')});db[_0x183f('0x56')]['belongsTo'](db[_0x183f('0x112')],{'onDelete':_0x183f('0x158')});db['SmsApplication']['belongsTo'](db[_0x183f('0x5b')],{'onDelete':'restrict'});db[_0x183f('0x56')]['belongsTo'](db[_0x183f('0x17a')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x56')][_0x183f('0x11f')](db[_0x183f('0x149')],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x16d')});db['SmsApplication'][_0x183f('0x11f')](db[_0x183f('0x165')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x183f('0x57')][_0x183f('0x113')](db[_0x183f('0x59')],{'as':_0x183f('0x14f'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x17c')});db[_0x183f('0x57')][_0x183f('0x11f')](db['SmsAccount'],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x179')});db['SmsInteraction'][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':_0x183f('0x155'),'foreignKey':'ContactId'});db[_0x183f('0x57')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x164'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x57')][_0x183f('0x121')](db[_0x183f('0x165')],{'through':_0x183f('0x17d'),'as':_0x183f('0x167')});db['SmsInteraction'][_0x183f('0x121')](db[_0x183f('0x165')],{'through':_0x183f('0x17d'),'as':'ThroughTags'});db[_0x183f('0x57')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':'Users','through':_0x183f('0x17e'),'foreignKey':'SmsInteractionId'});db[_0x183f('0x59')]['belongsTo'](db[_0x183f('0x112')],{'as':'User'});db[_0x183f('0x59')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x155')});db['SmsMessage']['belongsTo'](db[_0x183f('0x57')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x16b'),'foreignKey':_0x183f('0x17c')});db[_0x183f('0x59')][_0x183f('0x11f')](db[_0x183f('0x17a')],{'as':'Account','foreignKey':'SmsAccountId'});db[_0x183f('0x5b')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':_0x183f('0x35'),'foreignKey':_0x183f('0x17f')});db[_0x183f('0x5b')][_0x183f('0x121')](db[_0x183f('0xe5')],{'through':_0x183f('0x180'),'as':_0x183f('0x178')});db[_0x183f('0x5d')]['hasMany'](db['Disposition'],{'as':_0x183f('0x15b'),'foreignKey':'OpenchannelAccountId','onDelete':'cascade'});db[_0x183f('0x5d')][_0x183f('0x113')](db[_0x183f('0x7f')],{'as':'Answers','foreignKey':_0x183f('0x181')});db[_0x183f('0x5d')]['hasMany'](db[_0x183f('0x117')],{'as':_0x183f('0x16f'),'foreignKey':_0x183f('0x181')});db[_0x183f('0x5d')]['hasMany'](db[_0x183f('0x5f')],{'as':'Messages','foreignKey':_0x183f('0x181')});db['OpenchannelAccount'][_0x183f('0x113')](db['OpenchannelApplication'],{'as':_0x183f('0x170'),'foreignKey':_0x183f('0x181')});db[_0x183f('0x5d')][_0x183f('0x11f')](db['CmList'],{'as':'List','foreignKey':_0x183f('0x15e')});db[_0x183f('0x5d')][_0x183f('0x11f')](db[_0x183f('0x83')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x183f('0x5d')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':'user_has_openchannel_accounts'});db[_0x183f('0x182')][_0x183f('0x11f')](db[_0x183f('0x112')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x182')]['belongsTo'](db[_0x183f('0x183')],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x184')});db[_0x183f('0x182')][_0x183f('0x11f')](db['OpenchannelAccount'],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x181')});db['OpenchannelApplication'][_0x183f('0x11f')](db[_0x183f('0x149')],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x16d')});db['OpenchannelApplication'][_0x183f('0x11f')](db[_0x183f('0x165')],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x173')});db[_0x183f('0x117')]['hasMany'](db['OpenchannelMessage'],{'as':_0x183f('0x14f'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x185')});db[_0x183f('0x117')][_0x183f('0x11f')](db[_0x183f('0x5d')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x181')});db[_0x183f('0x117')][_0x183f('0x11f')](db['CmContact'],{'as':_0x183f('0x155'),'foreignKey':_0x183f('0x163')});db['OpenchannelInteraction'][_0x183f('0x11f')](db['User'],{'as':_0x183f('0x164'),'foreignKey':'UserId'});db[_0x183f('0x117')][_0x183f('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':'Tags'});db['OpenchannelInteraction']['belongsToMany'](db['Tag'],{'through':_0x183f('0x186'),'as':_0x183f('0x168')});db[_0x183f('0x117')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':'Users','through':_0x183f('0x129'),'foreignKey':_0x183f('0x185')});db['OpenchannelMessage']['belongsTo'](db[_0x183f('0x112')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x112')});db[_0x183f('0x5f')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':'cascade','as':_0x183f('0x155')});db[_0x183f('0x5f')][_0x183f('0x11f')](db[_0x183f('0x117')],{'onDelete':'cascade','as':_0x183f('0x16b'),'foreignKey':'OpenchannelInteractionId'});db[_0x183f('0x5f')][_0x183f('0x11f')](db[_0x183f('0xec')],{'as':_0x183f('0xec'),'foreignKey':_0x183f('0x187')});db[_0x183f('0x5f')][_0x183f('0x11f')](db[_0x183f('0x5d')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x181')});db['OpenchannelQueue'][_0x183f('0x121')](db['User'],{'as':'Agents','through':'UserOpenchannelQueue','foreignKey':_0x183f('0x184')});db[_0x183f('0x183')]['belongsToMany'](db[_0x183f('0xe5')],{'through':_0x183f('0x188'),'as':_0x183f('0x178')});db[_0x183f('0x62')][_0x183f('0x113')](db[_0x183f('0x80')],{'as':_0x183f('0x15b'),'foreignKey':'ChatWebsiteId','onDelete':_0x183f('0x110')});db[_0x183f('0x62')][_0x183f('0x113')](db[_0x183f('0x7f')],{'as':_0x183f('0x15c'),'foreignKey':'ChatWebsiteId'});db[_0x183f('0x62')][_0x183f('0x113')](db['ChatProactiveAction'],{'as':_0x183f('0x189')});db[_0x183f('0x62')]['hasMany'](db[_0x183f('0x64')],{'as':_0x183f('0x16f')});db['ChatWebsite']['hasMany'](db[_0x183f('0x18a')],{'as':_0x183f('0x170')});db[_0x183f('0x62')][_0x183f('0x113')](db[_0x183f('0x65')],{'as':_0x183f('0x14f')});db['ChatWebsite'][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0x62')]['belongsTo'](db[_0x183f('0x149')],{'as':'Interval','foreignKey':_0x183f('0x16d')});db['ChatWebsite'][_0x183f('0x11f')](db[_0x183f('0x3c')],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0x183f('0x62')][_0x183f('0x11f')](db[_0x183f('0x83')],{'as':'mandatoryDispositionPause','foreignKey':_0x183f('0x15f')});db['ChatWebsite']['belongsToMany'](db['User'],{'as':_0x183f('0x14c'),'through':_0x183f('0x133')});db[_0x183f('0x18b')][_0x183f('0x11f')](db[_0x183f('0x5d')],{});db[_0x183f('0x18b')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':'ListId'});db['OpenchannelQueueReport'][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':'Contact','foreignKey':_0x183f('0x163')});db[_0x183f('0x18b')][_0x183f('0x11f')](db[_0x183f('0x117')],{});db[_0x183f('0x18b')][_0x183f('0x11f')](db[_0x183f('0x5f')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0x183f('0x112')],{});db['OpenchannelQueueReport']['belongsTo'](db[_0x183f('0x183')],{});db[_0x183f('0x18a')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x18c'),'foreignKey':_0x183f('0x111'),'onDelete':_0x183f('0x158')});db[_0x183f('0x18a')][_0x183f('0x11f')](db[_0x183f('0x18d')],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0x183f('0x158')});db['ChatApplication'][_0x183f('0x11f')](db[_0x183f('0x62')],{'as':_0x183f('0x18e'),'foreignKey':_0x183f('0x18f'),'onDelete':'restrict'});db[_0x183f('0x18a')][_0x183f('0x11f')](db[_0x183f('0x165')],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x173')});db[_0x183f('0x64')][_0x183f('0x113')](db['ChatMessage'],{'as':'Messages','onDelete':_0x183f('0x110'),'foreignKey':'ChatInteractionId'});db['ChatInteraction'][_0x183f('0x11f')](db[_0x183f('0x62')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x18f')});db[_0x183f('0x64')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':'Contact','foreignKey':_0x183f('0x163')});db[_0x183f('0x64')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':'Owner','foreignKey':_0x183f('0x111')});db[_0x183f('0x64')]['belongsToMany'](db[_0x183f('0x165')],{'through':_0x183f('0x190'),'as':_0x183f('0x167')});db[_0x183f('0x64')]['belongsToMany'](db[_0x183f('0x165')],{'through':_0x183f('0x190'),'as':_0x183f('0x168')});db['ChatInteraction']['belongsToMany'](db[_0x183f('0x112')],{'as':'Users','through':_0x183f('0x191'),'foreignKey':'ChatInteractionId'});db[_0x183f('0x65')]['belongsTo'](db[_0x183f('0x112')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x112')});db['ChatMessage'][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x155'),'foreignKey':'ContactId'});db['ChatMessage'][_0x183f('0x11f')](db[_0x183f('0x64')],{'onDelete':_0x183f('0x110'),'as':_0x183f('0x16b'),'foreignKey':'ChatInteractionId'});db[_0x183f('0x65')]['belongsTo'](db[_0x183f('0xec')],{'as':'Attachment','foreignKey':_0x183f('0x187')});db[_0x183f('0x65')]['belongsTo'](db['ChatWebsite'],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x18f')});db[_0x183f('0x67')]['hasMany'](db[_0x183f('0xec')],{'as':_0x183f('0x16a'),'foreignKey':_0x183f('0x16c'),'onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x67')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':_0x183f('0x110'),'as':'Contact','foreignKey':_0x183f('0x163')});db['ChatOfflineMessage'][_0x183f('0x11f')](db[_0x183f('0x62')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x18f')});db['ChatQueue'][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':_0x183f('0x30'),'hooks':!![]});db[_0x183f('0x18d')][_0x183f('0x121')](db[_0x183f('0xe5')],{'through':'team_has_chat_queues','as':_0x183f('0x178')});db['ChatGroup']['hasMany'](db[_0x183f('0xcd')],{'as':_0x183f('0x14f'),'foreignKey':_0x183f('0x192'),'onDelete':_0x183f('0x110')});db['ChatGroup'][_0x183f('0x121')](db['User'],{'as':_0x183f('0x140'),'through':_0x183f('0x124')});db[_0x183f('0x6b')][_0x183f('0x11f')](db[_0x183f('0x62')],{'as':_0x183f('0x18e'),'foreignKey':'ChatWebsiteId'});db[_0x183f('0x6d')]['hasMany'](db['CmContact'],{'as':'Contacts','foreignKey':_0x183f('0x193')});db['CmContact']['hasMany'](db['CmHopper'],{'as':_0x183f('0x141'),'foreignKey':_0x183f('0x163')});db[_0x183f('0x6f')][_0x183f('0x113')](db[_0x183f('0x75')],{'as':'HopperFinals','foreignKey':'ContactId'});db['CmContact'][_0x183f('0x113')](db[_0x183f('0x77')],{'as':'HopperHistories','foreignKey':_0x183f('0x163')});db[_0x183f('0x6f')][_0x183f('0x113')](db[_0x183f('0x79')],{'as':_0x183f('0x79'),'foreignKey':'ContactId'});db[_0x183f('0x6f')][_0x183f('0x113')](db[_0x183f('0xd2')],{'as':_0x183f('0x145'),'foreignKey':_0x183f('0x163')});db['CmContact'][_0x183f('0x113')](db[_0x183f('0x117')],{'as':_0x183f('0x118'),'foreignKey':'ContactId','onDelete':_0x183f('0x158')});db[_0x183f('0x6f')][_0x183f('0x113')](db[_0x183f('0x64')],{'as':_0x183f('0x119'),'foreignKey':_0x183f('0x163'),'onDelete':'restrict'});db[_0x183f('0x6f')][_0x183f('0x113')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x183f('0x163'),'onDelete':_0x183f('0x158')});db[_0x183f('0x6f')][_0x183f('0x113')](db[_0x183f('0x4d')],{'as':_0x183f('0x11b'),'foreignKey':_0x183f('0x163'),'onDelete':'restrict'});db['CmContact'][_0x183f('0x113')](db[_0x183f('0x11c')],{'as':'MailInteractions','foreignKey':_0x183f('0x163'),'onDelete':_0x183f('0x158')});db[_0x183f('0x6f')][_0x183f('0x11f')](db['CmCompany'],{'as':_0x183f('0x194'),'foreignKey':_0x183f('0x193')});db[_0x183f('0x6f')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e'),'onDelete':'cascade'});db[_0x183f('0x6f')]['belongsToMany'](db[_0x183f('0x112')],{'as':'Users','through':_0x183f('0x125')});db[_0x183f('0x6f')][_0x183f('0x121')](db[_0x183f('0x165')],{'as':'Tags','through':'cm_contact_has_tags'});db[_0x183f('0x6f')][_0x183f('0x121')](db[_0x183f('0x165')],{'through':_0x183f('0x195'),'as':'ThroughTags'});db[_0x183f('0x71')][_0x183f('0x11f')](db['CmContact'],{'as':_0x183f('0x155'),'foreignKey':_0x183f('0x163'),'onDelete':_0x183f('0x110')});db[_0x183f('0x71')]['belongsTo'](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e'),'onDelete':_0x183f('0x110')});db[_0x183f('0x71')]['belongsTo'](db[_0x183f('0x112')],{'as':_0x183f('0x18c'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x71')][_0x183f('0x11f')](db[_0x183f('0x19')],{'as':_0x183f('0x196'),'foreignKey':'VoiceQueueId','onDelete':_0x183f('0x110')});db[_0x183f('0x71')][_0x183f('0x11f')](db[_0x183f('0x197')],{'as':_0x183f('0x197'),'foreignKey':_0x183f('0x198'),'onDelete':'cascade'});db[_0x183f('0x71')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x164'),'foreignKey':_0x183f('0x199')});db[_0x183f('0x73')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':_0x183f('0x155'),'foreignKey':'ContactId','onDelete':'cascade'});db['CmHopperBlack']['belongsTo'](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':'ListId','onDelete':_0x183f('0x110')});db['CmHopperBlack'][_0x183f('0x11f')](db[_0x183f('0x19')],{'as':_0x183f('0x196'),'foreignKey':_0x183f('0x142'),'onDelete':_0x183f('0x110')});db[_0x183f('0x73')]['belongsTo'](db[_0x183f('0x197')],{'as':_0x183f('0x197'),'foreignKey':_0x183f('0x198'),'onDelete':'cascade'});db[_0x183f('0x7d')][_0x183f('0x113')](db[_0x183f('0x19a')],{'as':{'plural':'All','singular':_0x183f('0x19b')},'foreignKey':_0x183f('0x19c'),'onDelete':_0x183f('0x110'),'hooks':!![]});db['Automation'][_0x183f('0x113')](db['Condition'],{'as':{'plural':_0x183f('0x19d'),'singular':'OneAny'},'foreignKey':_0x183f('0x19e'),'onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x7d')]['hasMany'](db[_0x183f('0x7c')],{'as':_0x183f('0x19f'),'foreignKey':_0x183f('0x1a0'),'onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x80')][_0x183f('0x113')](db[_0x183f('0x80')],{'as':_0x183f('0x15b'),'foreignKey':_0x183f('0x1a1'),'onDelete':_0x183f('0x110')});db[_0x183f('0x149')][_0x183f('0x113')](db['Interval'],{'as':_0x183f('0x1a2'),'foreignKey':_0x183f('0x16d'),'onDelete':_0x183f('0x110'),'hooks':!![],'required':![]});db['Interval'][_0x183f('0x113')](db[_0x183f('0x17')],{'as':'Extensions','foreignKey':_0x183f('0x16d'),'onDelete':_0x183f('0x158')});db['Interval'][_0x183f('0x113')](db['MailApplication'],{'as':'MailApplications','foreignKey':'IntervalId'});db[_0x183f('0x149')]['hasMany'](db['ChatApplication'],{'as':_0x183f('0x1a3'),'foreignKey':_0x183f('0x16d')});db['Interval'][_0x183f('0x113')](db[_0x183f('0x4b')],{'as':'FaxApplications','foreignKey':_0x183f('0x16d')});db[_0x183f('0x149')][_0x183f('0x113')](db[_0x183f('0x56')],{'as':_0x183f('0x1a4'),'foreignKey':_0x183f('0x16d')});db['Schedule'][_0x183f('0x11f')](db[_0x183f('0x3c')],{});db[_0x183f('0x88')]['belongsTo'](db['AnalyticDefaultReport'],{'foreignKey':_0x183f('0x1a5')});db[_0x183f('0x88')][_0x183f('0x11f')](db['AnalyticCustomReport'],{'foreignKey':_0x183f('0x1a6')});db['Sound'][_0x183f('0x121')](db[_0x183f('0x18')],{'as':_0x183f('0x1a7'),'through':'moh_has_sounds','onDelete':_0x183f('0x158')});db[_0x183f('0x165')][_0x183f('0x121')](db[_0x183f('0x6f')],{'through':_0x183f('0x195')});db[_0x183f('0x165')]['belongsToMany'](db[_0x183f('0x64')],{'through':_0x183f('0x190')});db[_0x183f('0x165')][_0x183f('0x121')](db[_0x183f('0x11c')],{'through':_0x183f('0x166')});db[_0x183f('0x165')][_0x183f('0x121')](db[_0x183f('0x57')],{'through':_0x183f('0x17d')});db[_0x183f('0x165')][_0x183f('0x121')](db[_0x183f('0x4d')],{'through':'fax_interaction_has_tags'});db[_0x183f('0x165')][_0x183f('0x121')](db[_0x183f('0x117')],{'through':_0x183f('0x186')});db[_0x183f('0x165')]['belongsToMany'](db[_0x183f('0x104')],{'through':_0x183f('0x1a8')});db[_0x183f('0x1a9')][_0x183f('0x113')](db[_0x183f('0x19a')],{'as':{'plural':_0x183f('0x1aa'),'singular':_0x183f('0x1ab')},'foreignKey':'TriggerAllId','onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x1a9')][_0x183f('0x113')](db['Condition'],{'as':{'plural':'AnyConditions','singular':_0x183f('0x1ac')},'foreignKey':_0x183f('0x1ad'),'onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x1a9')]['hasMany'](db[_0x183f('0x7c')],{'as':'Actions','foreignKey':_0x183f('0x1ae'),'onDelete':_0x183f('0x110'),'hooks':!![]});db[_0x183f('0x1af')][_0x183f('0x113')](db[_0x183f('0x9a')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x183f('0x1a6'),'hooks':!![]});db[_0x183f('0x1b0')][_0x183f('0x113')](db[_0x183f('0x9a')],{'as':'Fields','onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1a5')});db['AnalyticMetric'][_0x183f('0x113')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b1')});db[_0x183f('0x9a')][_0x183f('0x11f')](db[_0x183f('0x99')],{'foreignKey':_0x183f('0x1b1')});db[_0x183f('0x9e')][_0x183f('0x113')](db[_0x183f('0x9f')],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0x9f')][_0x183f('0x113')](db[_0x183f('0xa0')],{'as':_0x183f('0x1b4'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0x9f')]['hasMany'](db[_0x183f('0xa0')],{'as':_0x183f('0x1b6'),'onDelete':_0x183f('0x110'),'foreignKey':'DescriptionId'});db['SalesforceConfiguration'][_0x183f('0x113')](db[_0x183f('0xa0')],{'as':_0x183f('0x1b7'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0x9f')][_0x183f('0x11f')](db[_0x183f('0x9e')],{'as':_0x183f('0x162'),'foreignKey':'AccountId'});db[_0x183f('0xa0')]['hasMany'](db[_0x183f('0xa0')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x183f('0xa0')]['hasMany'](db['SalesforceField'],{'as':_0x183f('0x1b9'),'foreignKey':'DescriptionId'});db[_0x183f('0xa0')][_0x183f('0x113')](db[_0x183f('0xa0')],{'as':'Field','foreignKey':'FieldId'});db[_0x183f('0xa0')][_0x183f('0x11f')](db[_0x183f('0x8f')],{'as':_0x183f('0x8f'),'foreignKey':_0x183f('0x1ba')});db[_0x183f('0xa2')][_0x183f('0x113')](db['SugarcrmConfiguration'],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':'AccountId'});db['SugarcrmConfiguration'][_0x183f('0x113')](db['SugarcrmField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x183f('0x1b5')});db['SugarcrmConfiguration']['hasMany'](db[_0x183f('0x1bb')],{'as':_0x183f('0x1b6'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1bc')});db['SugarcrmConfiguration'][_0x183f('0x113')](db[_0x183f('0x1bb')],{'as':_0x183f('0x1b7'),'onDelete':'cascade','foreignKey':_0x183f('0x1b8')});db[_0x183f('0xa4')][_0x183f('0x11f')](db[_0x183f('0xa2')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x1b3')});db['SugarcrmField']['hasMany'](db[_0x183f('0x1bb')],{'as':_0x183f('0x1bd'),'foreignKey':_0x183f('0x1b5')});db['SugarcrmField']['hasMany'](db[_0x183f('0x1bb')],{'as':_0x183f('0x1b9'),'foreignKey':'DescriptionId'});db['SugarcrmField']['hasMany'](db[_0x183f('0x1bb')],{'as':_0x183f('0x1be'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0x1bb')]['belongsTo'](db[_0x183f('0x8f')],{'as':_0x183f('0x8f'),'foreignKey':'VariableId'});db['DeskAccount'][_0x183f('0x113')](db[_0x183f('0xa8')],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0xa8')][_0x183f('0x113')](db[_0x183f('0xaa')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x183f('0x1b5')});db[_0x183f('0xa8')][_0x183f('0x113')](db['DeskField'],{'as':_0x183f('0x1b6'),'onDelete':_0x183f('0x110'),'foreignKey':'DescriptionId'});db[_0x183f('0xa8')]['hasMany'](db[_0x183f('0xaa')],{'as':_0x183f('0x1b7'),'onDelete':'cascade','foreignKey':_0x183f('0x1b8')});db[_0x183f('0xa8')][_0x183f('0x11f')](db[_0x183f('0xa6')],{'as':'Account','foreignKey':_0x183f('0x1b3')});db[_0x183f('0xa8')][_0x183f('0x121')](db['Tag'],{'through':_0x183f('0x1bf')});db[_0x183f('0xaa')][_0x183f('0x113')](db['DeskField'],{'as':_0x183f('0x1bd'),'foreignKey':'SubjectId'});db[_0x183f('0xaa')][_0x183f('0x113')](db[_0x183f('0xaa')],{'as':'Description','foreignKey':_0x183f('0x1bc')});db['DeskField'][_0x183f('0x113')](db['DeskField'],{'as':_0x183f('0x1be'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xaa')][_0x183f('0x11f')](db['Variable'],{'as':'Variable','foreignKey':_0x183f('0x1ba')});db[_0x183f('0xac')][_0x183f('0x113')](db[_0x183f('0xae')],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0xae')][_0x183f('0x113')](db['ZohoField'],{'as':_0x183f('0x1b4'),'onDelete':_0x183f('0x110'),'foreignKey':'SubjectId'});db[_0x183f('0xae')][_0x183f('0x113')](db[_0x183f('0x1c0')],{'as':_0x183f('0x1b6'),'onDelete':'cascade','foreignKey':_0x183f('0x1bc')});db['ZohoConfiguration']['hasMany'](db[_0x183f('0x1c0')],{'as':_0x183f('0x1b7'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xae')][_0x183f('0x11f')](db[_0x183f('0xac')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0x1c0')][_0x183f('0x113')](db[_0x183f('0x1c0')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x183f('0x1c0')][_0x183f('0x113')](db['ZohoField'],{'as':_0x183f('0x1b9'),'foreignKey':_0x183f('0x1bc')});db['ZohoField'][_0x183f('0x113')](db['ZohoField'],{'as':'Field','foreignKey':'FieldId'});db['ZohoField'][_0x183f('0x11f')](db[_0x183f('0x8f')],{'as':_0x183f('0x8f'),'foreignKey':_0x183f('0x1ba')});db[_0x183f('0xb1')]['hasMany'](db[_0x183f('0xb3')],{'as':_0x183f('0x1b2'),'onDelete':'cascade','foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x183f('0x113')](db[_0x183f('0xb4')],{'as':_0x183f('0x1b4'),'foreignKey':'SubjectId'});db[_0x183f('0xb3')][_0x183f('0x113')](db[_0x183f('0xb4')],{'as':_0x183f('0x1b6'),'foreignKey':_0x183f('0x1bc')});db['ZendeskConfiguration']['hasMany'](db['ZendeskField'],{'as':_0x183f('0x1b7'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xb3')][_0x183f('0x11f')](db[_0x183f('0xb1')],{'as':'Account','foreignKey':_0x183f('0x1b3')});db[_0x183f('0xb3')]['belongsToMany'](db[_0x183f('0x165')],{'through':'int_zendesk_configuration_has_tags'});db[_0x183f('0xb4')]['hasMany'](db[_0x183f('0xb4')],{'as':_0x183f('0x1bd'),'foreignKey':_0x183f('0x1b5')});db['ZendeskField'][_0x183f('0x113')](db[_0x183f('0xb4')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x183f('0xb4')][_0x183f('0x113')](db[_0x183f('0xb4')],{'as':_0x183f('0x1be'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xb4')][_0x183f('0x11f')](db[_0x183f('0x8f')],{'as':'Variable','foreignKey':_0x183f('0x1ba')});db[_0x183f('0xb5')][_0x183f('0x113')](db[_0x183f('0xb6')],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b3')});db['FreshdeskConfiguration'][_0x183f('0x113')](db['FreshdeskField'],{'as':_0x183f('0x1b4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x183f('0xb6')][_0x183f('0x113')](db[_0x183f('0x1c1')],{'as':_0x183f('0x1b6'),'onDelete':'cascade','foreignKey':'DescriptionId'});db['FreshdeskConfiguration']['hasMany'](db[_0x183f('0x1c1')],{'as':'Fields','onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xb6')]['belongsTo'](db[_0x183f('0xb5')],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0xb6')][_0x183f('0x121')](db[_0x183f('0x165')],{'through':_0x183f('0x1c2')});db[_0x183f('0x1c1')][_0x183f('0x113')](db[_0x183f('0x1c1')],{'as':_0x183f('0x1bd'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0x1c1')][_0x183f('0x113')](db[_0x183f('0x1c1')],{'as':_0x183f('0x1b9'),'foreignKey':_0x183f('0x1bc')});db[_0x183f('0x1c1')][_0x183f('0x113')](db['FreshdeskField'],{'as':'Field','foreignKey':'FieldId'});db['FreshdeskField'][_0x183f('0x11f')](db['Variable'],{'as':'Variable','foreignKey':_0x183f('0x1ba')});db[_0x183f('0xb9')]['hasMany'](db['VtigerConfiguration'],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0xbb')][_0x183f('0x113')](db[_0x183f('0xbd')],{'as':_0x183f('0x1b4'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0xbb')][_0x183f('0x113')](db['VtigerField'],{'as':_0x183f('0x1b6'),'foreignKey':'DescriptionId'});db[_0x183f('0xbb')][_0x183f('0x113')](db[_0x183f('0xbd')],{'as':_0x183f('0x1b7'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xbb')]['belongsTo'](db['VtigerAccount'],{'as':_0x183f('0x162'),'foreignKey':'AccountId'});db['VtigerField'][_0x183f('0x113')](db[_0x183f('0xbd')],{'as':_0x183f('0x1bd'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0xbd')]['hasMany'](db[_0x183f('0xbd')],{'as':'Description','foreignKey':'DescriptionId'});db['VtigerField'][_0x183f('0x113')](db[_0x183f('0xbd')],{'as':_0x183f('0x1be'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0xbd')][_0x183f('0x11f')](db[_0x183f('0x8f')],{'as':_0x183f('0x8f'),'foreignKey':_0x183f('0x1ba')});db[_0x183f('0x1c3')]['hasMany'](db[_0x183f('0x1c4')],{'as':_0x183f('0x1b2'),'onDelete':'cascade','foreignKey':_0x183f('0x1b3')});db[_0x183f('0x1c4')][_0x183f('0x113')](db[_0x183f('0xc0')],{'as':_0x183f('0x1b4'),'foreignKey':'SubjectId'});db['ServicenowConfiguration']['hasMany'](db[_0x183f('0xc0')],{'as':_0x183f('0x1b6'),'foreignKey':_0x183f('0x1bc')});db[_0x183f('0x1c4')][_0x183f('0x113')](db['ServicenowField'],{'as':'Fields','foreignKey':_0x183f('0x1b8')});db[_0x183f('0x1c4')][_0x183f('0x11f')](db[_0x183f('0x1c3')],{'as':_0x183f('0x162'),'foreignKey':'AccountId'});db[_0x183f('0xc0')][_0x183f('0x113')](db['ServicenowField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x183f('0xc0')][_0x183f('0x113')](db[_0x183f('0xc0')],{'as':'Description','foreignKey':_0x183f('0x1bc')});db[_0x183f('0xc0')][_0x183f('0x113')](db[_0x183f('0xc0')],{'as':_0x183f('0x1be'),'foreignKey':'FieldId'});db[_0x183f('0xc0')][_0x183f('0x11f')](db['Variable'],{'as':'Variable','foreignKey':_0x183f('0x1ba')});db['Dynamics365Account'][_0x183f('0x113')](db[_0x183f('0x1c5')],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':'AccountId'});db[_0x183f('0x1c5')][_0x183f('0x113')](db[_0x183f('0x1c6')],{'as':_0x183f('0x1b4'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0x1c5')][_0x183f('0x113')](db[_0x183f('0x1c6')],{'as':_0x183f('0x1b6'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1bc')});db[_0x183f('0x1c5')][_0x183f('0x113')](db[_0x183f('0x1c6')],{'as':_0x183f('0x1b7'),'onDelete':'cascade','foreignKey':_0x183f('0x1b8')});db[_0x183f('0x1c5')][_0x183f('0x11f')](db['Dynamics365Account'],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0x1c6')][_0x183f('0x113')](db[_0x183f('0x1c6')],{'as':'Subject','foreignKey':_0x183f('0x1b5')});db[_0x183f('0x1c6')][_0x183f('0x113')](db[_0x183f('0x1c6')],{'as':_0x183f('0x1b9'),'foreignKey':_0x183f('0x1bc')});db['Dynamics365Field']['hasMany'](db[_0x183f('0x1c6')],{'as':_0x183f('0x1be'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0x1c6')]['belongsTo'](db[_0x183f('0x8f')],{'as':'Variable','foreignKey':'VariableId'});db[_0x183f('0xc5')][_0x183f('0x113')](db[_0x183f('0xc7')],{'as':_0x183f('0x1b2'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1b3')});db[_0x183f('0xc7')][_0x183f('0x113')](db[_0x183f('0x1c7')],{'as':_0x183f('0x1b4'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0xc7')][_0x183f('0x113')](db[_0x183f('0x1c7')],{'as':_0x183f('0x1b6'),'foreignKey':_0x183f('0x1bc')});db[_0x183f('0xc7')][_0x183f('0x113')](db['FreshsalesField'],{'as':_0x183f('0x1b7'),'foreignKey':'FieldId'});db['FreshsalesConfiguration']['belongsTo'](db['FreshsalesAccount'],{'as':'Account','foreignKey':'AccountId'});db[_0x183f('0x1c7')][_0x183f('0x113')](db[_0x183f('0x1c7')],{'as':_0x183f('0x1bd'),'foreignKey':_0x183f('0x1b5')});db[_0x183f('0x1c7')][_0x183f('0x113')](db[_0x183f('0x1c7')],{'as':_0x183f('0x1b9'),'foreignKey':_0x183f('0x1bc')});db[_0x183f('0x1c7')][_0x183f('0x113')](db[_0x183f('0x1c7')],{'as':_0x183f('0x1be'),'foreignKey':_0x183f('0x1b8')});db[_0x183f('0x1c7')]['belongsTo'](db['Variable'],{'as':_0x183f('0x8f'),'foreignKey':_0x183f('0x1ba')});db[_0x183f('0xcc')][_0x183f('0x11f')](db['ChatWebsite'],{});db[_0x183f('0xcc')]['belongsTo'](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e')});db['ChatQueueReport']['belongsTo'](db[_0x183f('0x6f')],{'as':_0x183f('0x155'),'foreignKey':'ContactId'});db['ChatQueueReport'][_0x183f('0x11f')](db['ChatInteraction'],{});db[_0x183f('0xcc')][_0x183f('0x11f')](db[_0x183f('0x65')],{});db[_0x183f('0xcc')][_0x183f('0x11f')](db['User'],{});db[_0x183f('0xcc')][_0x183f('0x11f')](db['ChatQueue'],{});db['ChatInternalMessage'][_0x183f('0x11f')](db[_0x183f('0x112')],{'onDelete':'cascade','foreignKey':'FromId'});db[_0x183f('0xcd')][_0x183f('0x11f')](db[_0x183f('0x112')],{'onDelete':'cascade','foreignKey':_0x183f('0x1c8')});db[_0x183f('0xd2')]['hasMany'](db[_0x183f('0xd1')],{'foreignKey':_0x183f('0x1c9'),'onDelete':_0x183f('0x110')});db[_0x183f('0xd2')]['hasMany'](db[_0x183f('0xcf')],{'foreignKey':_0x183f('0x1c9'),'onDelete':_0x183f('0x110')});db[_0x183f('0x1ca')]['belongsTo'](db[_0x183f('0x17a')],{});db[_0x183f('0x1ca')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0x1ca')][_0x183f('0x11f')](db['CmContact'],{'as':_0x183f('0x155'),'foreignKey':_0x183f('0x163')});db[_0x183f('0x1ca')]['belongsTo'](db[_0x183f('0x57')],{});db[_0x183f('0x1ca')]['belongsTo'](db[_0x183f('0x59')],{});db[_0x183f('0x1ca')][_0x183f('0x11f')](db[_0x183f('0x112')],{});db[_0x183f('0x1ca')][_0x183f('0x11f')](db[_0x183f('0x5b')],{});db['JscriptyProject'][_0x183f('0x113')](db[_0x183f('0xd2')],{'foreignKey':_0x183f('0x1cb')});db[_0x183f('0xd9')][_0x183f('0x113')](db[_0x183f('0xd1')],{'foreignKey':_0x183f('0x1cb')});db[_0x183f('0xd9')]['hasMany'](db['JscriptyAnswerReport'],{'foreignKey':_0x183f('0x1cb')});db[_0x183f('0xdf')][_0x183f('0x121')](db['User'],{'as':'Users','through':_0x183f('0x13b')});db[_0x183f('0xe5')][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':'user_has_teams'});db[_0x183f('0xe5')][_0x183f('0x121')](db[_0x183f('0x19')],{'through':_0x183f('0x10c'),'as':_0x183f('0x12c')});db[_0x183f('0xe5')][_0x183f('0x121')](db[_0x183f('0x3e')],{'through':_0x183f('0x160'),'as':_0x183f('0x12e')});db['Team'][_0x183f('0x121')](db[_0x183f('0x18d')],{'through':'team_has_chat_queues','as':_0x183f('0x1cc')});db[_0x183f('0xe5')][_0x183f('0x121')](db['FaxQueue'],{'through':_0x183f('0x177'),'as':_0x183f('0x1cd')});db[_0x183f('0xe5')][_0x183f('0x121')](db['SmsQueue'],{'through':_0x183f('0x180'),'as':_0x183f('0x1ce')});db[_0x183f('0xe5')][_0x183f('0x121')](db['OpenchannelQueue'],{'through':_0x183f('0x188'),'as':_0x183f('0x130')});db[_0x183f('0xe5')][_0x183f('0x121')](db['WhatsappQueue'],{'through':_0x183f('0x1cf'),'as':_0x183f('0x1d0')});db[_0x183f('0xe5')][_0x183f('0x121')](db[_0x183f('0xf9')],{'through':_0x183f('0x10e'),'as':_0x183f('0x1d1')});db[_0x183f('0x197')]['hasMany'](db['CmHopper'],{'as':_0x183f('0x141'),'foreignKey':_0x183f('0x198')});db[_0x183f('0x197')][_0x183f('0x113')](db['CmHopperFinal'],{'as':_0x183f('0x115'),'foreignKey':_0x183f('0x198')});db[_0x183f('0x197')][_0x183f('0x113')](db['CmHopperHistory'],{'as':_0x183f('0x143'),'foreignKey':_0x183f('0x198')});db[_0x183f('0x197')]['hasMany'](db[_0x183f('0x73')],{'as':'HopperBlacks','foreignKey':_0x183f('0x198')});db['Campaign'][_0x183f('0x11f')](db[_0x183f('0x2a')],{'as':'Trunk','foreignKey':'TrunkId'});db[_0x183f('0x197')][_0x183f('0x11f')](db[_0x183f('0x2a')],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0x183f('0x197')][_0x183f('0x11f')](db['Interval'],{'as':_0x183f('0x149'),'foreignKey':_0x183f('0x16d')});db[_0x183f('0x197')]['belongsTo'](db[_0x183f('0xdf')],{'as':_0x183f('0xdf'),'foreignKey':'SquareProjectId'});db['Campaign']['belongsToMany'](db[_0x183f('0xf7')],{'as':'Lists','through':'campaigns_has_cm_lists'});db[_0x183f('0x197')][_0x183f('0x121')](db[_0x183f('0xf7')],{'as':_0x183f('0x14d'),'through':_0x183f('0x1d2')});db[_0x183f('0xec')][_0x183f('0x11f')](db[_0x183f('0x67')],{'as':_0x183f('0x67'),'foreignKey':_0x183f('0x16c')});db['MailTransferReport'][_0x183f('0x11f')](db[_0x183f('0x42')],{});db['MailTransferReport'][_0x183f('0x11f')](db[_0x183f('0x11c')],{});db['MailTransferReport'][_0x183f('0x11f')](db[_0x183f('0x3c')],{'foreignKey':_0x183f('0x1d3'),'as':_0x183f('0x1d4')});db['MailTransferReport']['belongsTo'](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d5'),'as':'FromAgent'});db['MailTransferReport'][_0x183f('0x11f')](db['User'],{'foreignKey':_0x183f('0x1d6'),'as':_0x183f('0x1d7')});db['MailTransferReport']['belongsTo'](db['MailQueue'],{'foreignKey':_0x183f('0x1d8'),'as':'ToQueue'});db['MailTransferReport']['belongsTo'](db[_0x183f('0x3c')],{'foreignKey':_0x183f('0x1d9'),'as':'ToAccount'});db[_0x183f('0xf1')][_0x183f('0x11f')](db[_0x183f('0x65')],{});db[_0x183f('0xf1')][_0x183f('0x11f')](db[_0x183f('0x64')],{});db['ChatTransferReport'][_0x183f('0x11f')](db['ChatWebsite'],{'foreignKey':_0x183f('0x1da'),'as':_0x183f('0x1d4')});db[_0x183f('0xf1')]['belongsTo'](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d5'),'as':_0x183f('0x1db')});db[_0x183f('0xf1')][_0x183f('0x11f')](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d6'),'as':_0x183f('0x1d7')});db[_0x183f('0xf1')][_0x183f('0x11f')](db['ChatQueue'],{'foreignKey':_0x183f('0x1dc'),'as':_0x183f('0x1dd')});db[_0x183f('0xf1')]['belongsTo'](db[_0x183f('0x62')],{'foreignKey':'ToChatWebsiteId','as':_0x183f('0x1de')});db['FaxTransferReport']['belongsTo'](db[_0x183f('0x4f')],{});db[_0x183f('0x1df')][_0x183f('0x11f')](db[_0x183f('0x4d')],{});db[_0x183f('0x1df')][_0x183f('0x11f')](db[_0x183f('0x49')],{'foreignKey':_0x183f('0x1e0'),'as':'FromAccount'});db['FaxTransferReport'][_0x183f('0x11f')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x183f('0x1df')][_0x183f('0x11f')](db[_0x183f('0x112')],{'foreignKey':'ToUserId','as':_0x183f('0x1d7')});db[_0x183f('0x1df')][_0x183f('0x11f')](db[_0x183f('0x51')],{'foreignKey':'ToFaxQueueId','as':_0x183f('0x1dd')});db[_0x183f('0x1df')]['belongsTo'](db[_0x183f('0x49')],{'foreignKey':_0x183f('0x1e1'),'as':'ToAccount'});db[_0x183f('0xf4')][_0x183f('0x11f')](db[_0x183f('0x5f')],{});db[_0x183f('0xf4')]['belongsTo'](db[_0x183f('0x117')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelAccount'],{'foreignKey':_0x183f('0x1e2'),'as':_0x183f('0x1d4')});db['OpenchannelTransferReport'][_0x183f('0x11f')](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d5'),'as':_0x183f('0x1db')});db[_0x183f('0xf4')][_0x183f('0x11f')](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d6'),'as':'ToAgent'});db[_0x183f('0xf4')]['belongsTo'](db['OpenchannelQueue'],{'foreignKey':_0x183f('0x1e3'),'as':_0x183f('0x1dd')});db[_0x183f('0xf4')][_0x183f('0x11f')](db[_0x183f('0x5d')],{'foreignKey':_0x183f('0x1e4'),'as':_0x183f('0x1de')});db[_0x183f('0xf5')][_0x183f('0x11f')](db[_0x183f('0x59')],{});db[_0x183f('0xf5')][_0x183f('0x11f')](db['SmsInteraction'],{});db[_0x183f('0xf5')][_0x183f('0x11f')](db[_0x183f('0x17a')],{'foreignKey':_0x183f('0x1e5'),'as':_0x183f('0x1d4')});db[_0x183f('0xf5')][_0x183f('0x11f')](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d5'),'as':_0x183f('0x1db')});db[_0x183f('0xf5')]['belongsTo'](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d6'),'as':'ToAgent'});db[_0x183f('0xf5')][_0x183f('0x11f')](db[_0x183f('0x5b')],{'foreignKey':'ToSmsQueueId','as':'ToQueue'});db['SmsTransferReport'][_0x183f('0x11f')](db['SmsAccount'],{'foreignKey':_0x183f('0x1e6'),'as':'ToAccount'});db['CmList'][_0x183f('0x113')](db[_0x183f('0x80')],{'as':_0x183f('0x15b'),'foreignKey':_0x183f('0x15e'),'onDelete':_0x183f('0x110')});db[_0x183f('0xf7')]['hasMany'](db[_0x183f('0x1e7')],{'as':_0x183f('0x1e8'),'foreignKey':_0x183f('0x15e')});db['CmList'][_0x183f('0x113')](db[_0x183f('0x6f')],{'as':_0x183f('0x1e9'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0xf7')]['hasMany'](db['CmHopperFinal'],{'as':_0x183f('0x115'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0xf7')]['hasMany'](db[_0x183f('0x77')],{'as':_0x183f('0x116'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0xf7')]['hasMany'](db[_0x183f('0x79')],{'as':_0x183f('0x79'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0xf7')][_0x183f('0x121')](db[_0x183f('0x19')],{'as':_0x183f('0x1ea'),'through':'voice_queues_has_cm_lists'});db['CmList'][_0x183f('0x121')](db[_0x183f('0x112')],{'as':'Agents','through':_0x183f('0x127')});db['VoicePrefix'][_0x183f('0x113')](db[_0x183f('0x17')],{'as':_0x183f('0x1eb'),'onDelete':_0x183f('0x110')});db['VoicePrefix'][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':'UserVoicePrefix'});db[_0x183f('0xf9')][_0x183f('0x121')](db['Team'],{'through':_0x183f('0x10e'),'as':_0x183f('0x178')});db[_0x183f('0xfb')][_0x183f('0x113')](db[_0x183f('0x112')],{'as':'Users','foreignKey':_0x183f('0x120')});db[_0x183f('0xfb')][_0x183f('0x113')](db[_0x183f('0xfc')],{'as':_0x183f('0x1ec'),'foreignKey':_0x183f('0x120'),'onDelete':'cascade'});db[_0x183f('0xfc')][_0x183f('0x113')](db[_0x183f('0xfe')],{'as':_0x183f('0x1ed'),'foreignKey':'sectionId','onDelete':_0x183f('0x110')});db['WhatsappAccount']['hasMany'](db[_0x183f('0x80')],{'as':_0x183f('0x15b'),'foreignKey':_0x183f('0x1ee'),'onDelete':_0x183f('0x110')});db[_0x183f('0x101')][_0x183f('0x113')](db[_0x183f('0x7f')],{'as':_0x183f('0x15c'),'foreignKey':_0x183f('0x1ee')});db[_0x183f('0x101')][_0x183f('0x113')](db[_0x183f('0x106')],{'as':_0x183f('0x14f'),'foreignKey':'WhatsappAccountId'});db[_0x183f('0x101')][_0x183f('0x113')](db[_0x183f('0x104')],{'as':_0x183f('0x16f')});db['WhatsappAccount']['hasMany'](db['WhatsappApplication'],{'as':_0x183f('0x170')});db['WhatsappAccount'][_0x183f('0x11f')](db['CmList'],{'as':_0x183f('0x15d'),'foreignKey':'ListId'});db['WhatsappAccount'][_0x183f('0x11f')](db[_0x183f('0x83')],{'as':_0x183f('0x14a'),'foreignKey':'mandatoryDispositionPauseId'});db['WhatsappAccount'][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':_0x183f('0x139')});db[_0x183f('0x102')]['belongsTo'](db[_0x183f('0x112')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x102')][_0x183f('0x11f')](db[_0x183f('0x131')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x102')]['belongsTo'](db[_0x183f('0x101')],{'onDelete':_0x183f('0x158')});db[_0x183f('0x102')]['belongsTo'](db[_0x183f('0x149')],{'onDelete':_0x183f('0x158'),'foreignKey':_0x183f('0x16d')});db[_0x183f('0x102')][_0x183f('0x11f')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x183f('0x173')});db[_0x183f('0x104')][_0x183f('0x113')](db[_0x183f('0x106')],{'as':_0x183f('0x14f'),'onDelete':_0x183f('0x110'),'foreignKey':_0x183f('0x1ef')});db[_0x183f('0x104')][_0x183f('0x11f')](db['WhatsappAccount'],{'as':_0x183f('0x162'),'foreignKey':_0x183f('0x1ee')});db[_0x183f('0x104')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'as':_0x183f('0x155'),'foreignKey':'ContactId'});db[_0x183f('0x104')][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x164'),'foreignKey':_0x183f('0x111')});db[_0x183f('0x104')][_0x183f('0x121')](db[_0x183f('0x165')],{'through':'whatsapp_interaction_has_tags','as':_0x183f('0x167')});db[_0x183f('0x104')]['belongsToMany'](db[_0x183f('0x165')],{'through':_0x183f('0x1a8'),'as':'ThroughTags'});db[_0x183f('0x104')]['belongsToMany'](db[_0x183f('0x112')],{'as':_0x183f('0x176'),'through':_0x183f('0x12b'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x183f('0x11f')](db[_0x183f('0x112')],{'as':_0x183f('0x112')});db[_0x183f('0x106')][_0x183f('0x11f')](db[_0x183f('0x6f')],{'onDelete':'cascade','as':_0x183f('0x155')});db['WhatsappMessage'][_0x183f('0x11f')](db[_0x183f('0x104')],{'onDelete':_0x183f('0x110'),'as':'Interaction','foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x183f('0x11f')](db['WhatsappAccount'],{'as':_0x183f('0x162'),'foreignKey':'WhatsappAccountId'});db[_0x183f('0x108')][_0x183f('0x11f')](db[_0x183f('0x101')],{});db[_0x183f('0x108')][_0x183f('0x11f')](db[_0x183f('0xf7')],{'as':_0x183f('0x15d'),'foreignKey':_0x183f('0x15e')});db[_0x183f('0x108')][_0x183f('0x11f')](db['CmContact'],{'as':_0x183f('0x155'),'foreignKey':_0x183f('0x163')});db['WhatsappQueueReport'][_0x183f('0x11f')](db[_0x183f('0x104')],{});db[_0x183f('0x108')][_0x183f('0x11f')](db[_0x183f('0x131')],{});db[_0x183f('0x108')][_0x183f('0x11f')](db[_0x183f('0x106')],{});db[_0x183f('0x108')][_0x183f('0x11f')](db['User'],{});db[_0x183f('0x109')][_0x183f('0x11f')](db[_0x183f('0x106')],{});db['WhatsappTransferReport'][_0x183f('0x11f')](db[_0x183f('0x104')],{});db[_0x183f('0x109')]['belongsTo'](db[_0x183f('0x101')],{'foreignKey':'FromWhatsappAccountId','as':'FromAccount'});db[_0x183f('0x109')][_0x183f('0x11f')](db['WhatsappAccount'],{'foreignKey':_0x183f('0x1f0'),'as':_0x183f('0x1de')});db[_0x183f('0x109')][_0x183f('0x11f')](db[_0x183f('0x131')],{'foreignKey':_0x183f('0x1f1'),'as':_0x183f('0x1dd')});db[_0x183f('0x109')][_0x183f('0x11f')](db[_0x183f('0x112')],{'foreignKey':_0x183f('0x1d5'),'as':_0x183f('0x1db')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x183f('0x1d6'),'as':'ToAgent'});db['WhatsappQueue'][_0x183f('0x121')](db[_0x183f('0x112')],{'as':_0x183f('0x14c'),'through':_0x183f('0x1f2'),'foreignKey':_0x183f('0x1f3')});db[_0x183f('0x131')][_0x183f('0x121')](db[_0x183f('0xe5')],{'through':_0x183f('0x1cf'),'as':_0x183f('0x178')});db[_0x183f('0x10a')][_0x183f('0x1f4')](db[_0x183f('0x38')],{'as':_0x183f('0x159'),'onDelete':'restrict'});db[_0x183f('0x10a')][_0x183f('0x1f4')](db[_0x183f('0x3a')],{'as':_0x183f('0x15a'),'onDelete':_0x183f('0x158')});module[_0x183f('0x1f5')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x1666=['SmsInteractionId','sms_interaction_has_tags','SmsMessage','Interaction','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelApplication','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ChatWebsiteId','ProactiveActions','Agent','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmCompany','CompanyId','Company','cm_contact_has_tags','Campaign','OwnerId','Queue','CampaignId','All','OneAll','Any','AutomationAnyId','Action','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','moh_has_sounds','whatsapp_interaction_has_tags','AllConditions','AllCondition','AnyCondition','Actions','TriggerId','AnalyticFieldReport','Fields','MetricId','SalesforceConfiguration','Configurations','Descriptions','Subject','SubjectId','Description','DescriptionId','FieldId','VariableId','Subjects','AccountId','DeskConfiguration','ZohoField','ZendeskConfiguration','Field','FreshdeskAccount','int_freshdesk_configuration_has_tags','VtigerConfiguration','VtigerField','ServicenowConfiguration','ServicenowField','Dynamics365Account','Dynamics365Field','ToId','SessionId','ProjectId','VoiceQueues','ChatQueues','team_has_whatsapp_queues','SquareProjectId','Lists','campaigns_has_cm_lists','BlackLists','campaigns_has_cm_blacklists','FromMailAccountId','FromUserId','FromAgent','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','FromAccount','ToUserId','ToChatQueueId','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelAccountId','ToSmsAccountId','HopperHistory','Queues','voice_queues_has_cm_lists','userProfileId','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','WhatsappQueueId','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','mysql','utf8mb4','name','utf8','utf8_general_ci','127.0.0.1','database','username','password','options','sequelizeHistory','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','UserProfileSection','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','User','cascade','UserId','hasMany','VoiceQueuesRt','Extensions','CmHopperFinal','HopperFinals','ReportAgentPreview','OpenchannelInteraction','ChatInteractions','FaxInteractions','MailInteractions','WhatsappInteraction','WhatsappInteractions','UserNotification','SenderId','belongsTo','UserProfile','belongsToMany','ChatGroup','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','cm_user_has_lists','user_has_chat_interactions','user_has_fax_interactions','SmsInteractions','user_has_sms_interactions','OpenchannelInteractions','user_has_whatsapp_interactions','VoicePrefix','VoicePrefixes','MailQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueue','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','user_has_mail_accounts','SquareProject','SquareProjects','user_has_square_projects','VoiceContext','Applications','Members','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','JscriptySessions','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','Agents','voice_queues_has_cm_blacklists','mailboxuser','mailbox','VoiceCallReport','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','CloudProviderId','restrict','Imap','hasOne','Smtp','Dispositions','Answers','MailMessage','Messages','ListId','Template','TemplateId','team_has_mail_queues','Teams','MailInteractionId','Account','Tag','Tags','mail_interaction_has_tags','Users','user_has_mail_interactions','Attachments','ChatOfflineMessage','List','Items','FaxAccountId','Interactions','TagId','FaxInteractionId','Owner','fax_interaction_has_tags','ThroughTags','AttachmentId','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsApplication','user_has_sms_accounts'];(function(_0x3485f8,_0x1b66cf){var _0x1fbba7=function(_0x135b73){while(--_0x135b73){_0x3485f8['push'](_0x3485f8['shift']());}};_0x1fbba7(++_0x1b66cf);}(_0x1666,0x75));var _0x6166=function(_0x10d764,_0x197a20){_0x10d764=_0x10d764-0x0;var _0x321017=_0x1666[_0x10d764];return _0x321017;};'use strict';var config=require(_0x6166('0x0'));var Sequelize=require(_0x6166('0x1'));var _=require('lodash');var jstz=require(_0x6166('0x2'));var timezone=jstz[_0x6166('0x3')]();config[_0x6166('0x1')]=_[_0x6166('0x4')](config[_0x6166('0x1')],{'database':_0x6166('0x5'),'username':_0x6166('0x6'),'password':_0x6166('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x6166('0x8'),'dialectOptions':{'charset':_0x6166('0x9')},'logging':![],'timezone':timezone[_0x6166('0xa')](),'define':{'charset':_0x6166('0xb'),'collate':_0x6166('0xc')}}});config['sequelizeHistory']=_['defaultsDeep'](config['sequelizeHistory'],{'database':_0x6166('0x5'),'username':'xcall','password':_0x6166('0x7'),'options':{'host':_0x6166('0xd'),'port':0xcea,'dialect':_0x6166('0x8'),'dialectOptions':{'charset':_0x6166('0x9')},'logging':![],'timezone':timezone[_0x6166('0xa')](),'define':{'charset':_0x6166('0xb'),'collate':_0x6166('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0x6166('0xe')],config[_0x6166('0x1')][_0x6166('0xf')],config['sequelize'][_0x6166('0x10')],config[_0x6166('0x1')][_0x6166('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x6166('0x12')]['database'],config[_0x6166('0x12')][_0x6166('0xf')],config[_0x6166('0x12')][_0x6166('0x10')],config[_0x6166('0x12')][_0x6166('0x11')])};db['User']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x14'));db[_0x6166('0x15')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x16'));db['VoiceContext']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x17'));db[_0x6166('0x18')]=db[_0x6166('0x1')]['import'](_0x6166('0x19'));db[_0x6166('0x1a')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x1b'));db[_0x6166('0x1c')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x1d'));db[_0x6166('0x1e')]=db[_0x6166('0x1')]['import'](_0x6166('0x1f'));db[_0x6166('0x20')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x21'));db[_0x6166('0x22')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/voiceMail/voiceMail.model');db[_0x6166('0x23')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x24'));db['VoiceCallReport']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x25'));db[_0x6166('0x26')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x27'));db[_0x6166('0x28')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x29'));db['VoiceQueueReport']=db['sequelize'][_0x6166('0x13')](_0x6166('0x2a'));db[_0x6166('0x2b')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x2c'));db[_0x6166('0x2d')]=db['sequelize']['import'](_0x6166('0x2e'));db['VoiceTransferReport']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x2f'));db[_0x6166('0x30')]=db[_0x6166('0x1')]['import'](_0x6166('0x31'));db[_0x6166('0x32')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x33'));db[_0x6166('0x34')]=db[_0x6166('0x1')]['import'](_0x6166('0x35'));db[_0x6166('0x36')]=db['sequelize']['import'](_0x6166('0x37'));db[_0x6166('0x38')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x39'));db[_0x6166('0x3a')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x3b'));db[_0x6166('0x3c')]=db['sequelize']['import']('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x6166('0x3d')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x3e'));db[_0x6166('0x3f')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x40'));db[_0x6166('0x41')]=db[_0x6166('0x1')]['import'](_0x6166('0x42'));db[_0x6166('0x43')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/mailAccount/mailAccount.model');db[_0x6166('0x44')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x45'));db[_0x6166('0x46')]=db[_0x6166('0x1')]['import'](_0x6166('0x47'));db[_0x6166('0x48')]=db['sequelize']['import']('../api/mailInteraction/mailInteraction.model');db['MailMessage']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x49'));db[_0x6166('0x4a')]=db[_0x6166('0x1')]['import'](_0x6166('0x4b'));db[_0x6166('0x4c')]=db[_0x6166('0x1')]['import'](_0x6166('0x4d'));db[_0x6166('0x4e')]=db[_0x6166('0x1')]['import'](_0x6166('0x4f'));db[_0x6166('0x50')]=db['sequelize'][_0x6166('0x13')]('../api/dashboardItem/dashboardItem.model');db[_0x6166('0x51')]=db['sequelize']['import'](_0x6166('0x52'));db[_0x6166('0x53')]=db[_0x6166('0x1')]['import']('../api/faxApplication/faxApplication.model');db[_0x6166('0x54')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x55'));db[_0x6166('0x56')]=db[_0x6166('0x1')]['import']('../api/faxMessage/faxMessage.model');db[_0x6166('0x57')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x58'));db['FaxQueueReport']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x59'));db[_0x6166('0x5a')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x5b'));db['SmsApplication']=db['sequelize']['import'](_0x6166('0x5c'));db[_0x6166('0x5d')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x5e'));db['SmsMessage']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x5f'));db[_0x6166('0x60')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x61'));db[_0x6166('0x62')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x63'));db['OpenchannelApplication']=db['sequelize'][_0x6166('0x13')](_0x6166('0x64'));db['OpenchannelInteraction']=db[_0x6166('0x1')]['import'](_0x6166('0x65'));db[_0x6166('0x66')]=db[_0x6166('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db[_0x6166('0x67')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x68'));db['ChatWebsite']=db[_0x6166('0x1')]['import']('../api/chatWebsite/chatWebsite.model');db[_0x6166('0x69')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x6166('0x6a')]=db[_0x6166('0x1')]['import']('../api/chatApplication/chatApplication.model');db[_0x6166('0x6b')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0x6166('0x6c')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x6d'));db['ChatOfflineMessage']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x6e'));db[_0x6166('0x6f')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/chatQueue/chatQueue.model');db['ChatGroup']=db[_0x6166('0x1')]['import']('../api/chatGroup/chatGroup.model');db[_0x6166('0x70')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x71'));db['CmCompany']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x72'));db[_0x6166('0x73')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x74'));db[_0x6166('0x75')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x76'));db[_0x6166('0x77')]=db[_0x6166('0x1')]['import'](_0x6166('0x78'));db['CmHopperFinal']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x79'));db[_0x6166('0x7a')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/cmHopperHistory/cmHopperHistory.model');db['ReportAgentPreview']=db['sequelize'][_0x6166('0x13')](_0x6166('0x7b'));db[_0x6166('0x7c')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x7d'));db['Action']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x7e'));db[_0x6166('0x7f')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x80'));db[_0x6166('0x81')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x82'));db[_0x6166('0x83')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x84'));db[_0x6166('0x85')]=db[_0x6166('0x1')]['import'](_0x6166('0x86'));db[_0x6166('0x87')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x88'));db[_0x6166('0x89')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x8a'));db[_0x6166('0x8b')]=db[_0x6166('0x1')]['import'](_0x6166('0x8c'));db[_0x6166('0x8d')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x8e'));db[_0x6166('0x8f')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x90'));db[_0x6166('0x91')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x92'));db['Tag']=db['sequelize'][_0x6166('0x13')]('../api/tag/tag.model');db['Template']=db[_0x6166('0x1')]['import'](_0x6166('0x93'));db[_0x6166('0x94')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x95'));db[_0x6166('0x96')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x97'));db[_0x6166('0x98')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x99'));db[_0x6166('0x9a')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/integrationReport/integrationReport.model');db[_0x6166('0x9b')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x9c'));db[_0x6166('0x9d')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x9e'));db['AnalyticExtractedReport']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x9f'));db[_0x6166('0xa0')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xa1'));db['AnalyticFieldReport']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xa2'));db[_0x6166('0xa3')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xa4'));db[_0x6166('0xa5')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xa6'));db['SalesforceConfiguration']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xa7'));db[_0x6166('0xa8')]=db[_0x6166('0x1')]['import'](_0x6166('0xa9'));db[_0x6166('0xaa')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xab'));db[_0x6166('0xac')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xad'));db[_0x6166('0xae')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xaf'));db[_0x6166('0xb0')]=db[_0x6166('0x1')]['import'](_0x6166('0xb1'));db['DeskConfiguration']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xb2'));db[_0x6166('0xb3')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/intDeskField/intDeskField.model');db[_0x6166('0xb4')]=db['sequelize'][_0x6166('0x13')]('../api/intZohoAccount/intZohoAccount.model');db[_0x6166('0xb5')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xb6'));db['ZohoField']=db[_0x6166('0x1')]['import'](_0x6166('0xb7'));db[_0x6166('0xb8')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xb9'));db['ZendeskConfiguration']=db[_0x6166('0x1')]['import'](_0x6166('0xba'));db[_0x6166('0xbb')]=db['sequelize'][_0x6166('0x13')](_0x6166('0xbc'));db['FreshdeskAccount']=db[_0x6166('0x1')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x6166('0xbd')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xbe'));db[_0x6166('0xbf')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xc0'));db[_0x6166('0xc1')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/intVtigerAccount/intVtigerAccount.model');db['VtigerConfiguration']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xc2'));db['VtigerField']=db['sequelize'][_0x6166('0x13')](_0x6166('0xc3'));db[_0x6166('0xc4')]=db[_0x6166('0x1')]['import'](_0x6166('0xc5'));db['ServicenowConfiguration']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xc6'));db['ServicenowField']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xc7'));db['Dynamics365Account']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xc8'));db[_0x6166('0xc9')]=db[_0x6166('0x1')]['import'](_0x6166('0xca'));db['Dynamics365Field']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xcb'));db[_0x6166('0xcc')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xcd'));db[_0x6166('0xce')]=db[_0x6166('0x1')]['import'](_0x6166('0xcf'));db[_0x6166('0xd0')]=db['sequelize'][_0x6166('0x13')]('../api/intFreshsalesField/intFreshsalesField.model');db['Integration']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x99'));db[_0x6166('0xd1')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xd2'));db[_0x6166('0xd3')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xd4'));db[_0x6166('0xd5')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xd6'));db[_0x6166('0xd7')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xd8'));db[_0x6166('0xd9')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xda'));db[_0x6166('0xdb')]=db['sequelize'][_0x6166('0x13')]('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x6166('0xdc')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xdd'));db[_0x6166('0xde')]=db['sequelize']['import'](_0x6166('0xdf'));db[_0x6166('0xe0')]=db[_0x6166('0x1')]['import'](_0x6166('0xe1'));db[_0x6166('0xe2')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xe3'));db[_0x6166('0xe4')]=db['sequelize'][_0x6166('0x13')](_0x6166('0xe5'));db[_0x6166('0xe6')]=db['sequelize'][_0x6166('0x13')]('../api/squareOdbc/squareOdbc.model');db['SquareProject']=db[_0x6166('0x1')][_0x6166('0x13')]('../api/squareProject/squareProject.model');db[_0x6166('0xe7')]=db['sequelize']['import'](_0x6166('0xe8'));db[_0x6166('0xe9')]=db['sequelize'][_0x6166('0x13')]('../api/squareMessage/squareMessage.model');db[_0x6166('0xea')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xeb'));db[_0x6166('0xec')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xed'));db['Campaign']=db[_0x6166('0x1')]['import'](_0x6166('0xee'));db[_0x6166('0xef')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/migration/migration.model');db[_0x6166('0xf0')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xf1'));db[_0x6166('0xf2')]=db['sequelize'][_0x6166('0x13')](_0x6166('0xf3'));db[_0x6166('0xf4')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xf5'));db['ChatTransferReport']=db[_0x6166('0x1')][_0x6166('0x13')]('../api/chatTransferReport/chatTransferReport.model');db[_0x6166('0xf6')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xf7'));db[_0x6166('0xf8')]=db['sequelize'][_0x6166('0x13')](_0x6166('0xf9'));db[_0x6166('0xfa')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xfb'));db[_0x6166('0xfc')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xfd'));db['VoicePrefix']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0xfe'));db['UserProfile']=db[_0x6166('0x1')]['import'](_0x6166('0xff'));db[_0x6166('0x100')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db[_0x6166('0x1')][_0x6166('0x13')]('../api/userProfileResource/userProfileResource.model');db['UserNotification']=db[_0x6166('0x1')]['import'](_0x6166('0x101'));db[_0x6166('0x102')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x103'));db[_0x6166('0x104')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x105'));db['WhatsappInteraction']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x106'));db[_0x6166('0x107')]=db['sequelize'][_0x6166('0x13')]('../api/whatsappMessage/whatsappMessage.model');db[_0x6166('0x108')]=db[_0x6166('0x1')][_0x6166('0x13')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x6166('0x109')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x10a'));db['WhatsappQueue']=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x10b'));db[_0x6166('0x10c')]=db[_0x6166('0x1')]['import'](_0x6166('0x10d'));db[_0x6166('0x10e')]=db['sequelize'][_0x6166('0x13')](_0x6166('0x10f'));db[_0x6166('0x110')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x111'));db[_0x6166('0x112')]=db[_0x6166('0x1')][_0x6166('0x13')](_0x6166('0x113'));db[_0x6166('0x114')]['hasOne'](db['VoiceMail'],{'as':_0x6166('0x22'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x116')});db['User'][_0x6166('0x117')](db[_0x6166('0x1e')],{'as':'Recordings','foreignKey':_0x6166('0x116')});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x30')],{'as':_0x6166('0x118'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x18')],{'as':_0x6166('0x119'),'onDelete':_0x6166('0x115'),'hooks':!![]});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x11a')],{'as':_0x6166('0x11b'),'foreignKey':'UserId'});db['User'][_0x6166('0x117')](db[_0x6166('0x7a')],{'as':'HopperHistory','foreignKey':_0x6166('0x116')});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x11c')],{'as':_0x6166('0x11c'),'foreignKey':_0x6166('0x116')});db['User'][_0x6166('0x117')](db[_0x6166('0x11d')],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db[_0x6166('0x114')][_0x6166('0x117')](db['ChatInteraction'],{'as':_0x6166('0x11e'),'foreignKey':'UserId'});db[_0x6166('0x114')]['hasMany'](db[_0x6166('0x5d')],{'as':'SmsInteractions','foreignKey':_0x6166('0x116')});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x54')],{'as':_0x6166('0x11f'),'foreignKey':_0x6166('0x116')});db['User']['hasMany'](db[_0x6166('0x48')],{'as':_0x6166('0x120'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x121')],{'as':_0x6166('0x122'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x114')][_0x6166('0x117')](db[_0x6166('0x123')],{'as':'UserNotifications','foreignKey':_0x6166('0x124')});db['User'][_0x6166('0x125')](db[_0x6166('0x126')],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x128')],{'as':_0x6166('0x129'),'through':_0x6166('0x12a')});db['User'][_0x6166('0x127')](db[_0x6166('0x73')],{'as':_0x6166('0x12b'),'through':_0x6166('0x12c')});db[_0x6166('0x114')][_0x6166('0x127')](db['CmList'],{'as':'Lists','through':_0x6166('0x12d')});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0xea')],{'through':'user_has_teams'});db['User'][_0x6166('0x127')](db['MailInteraction'],{'as':_0x6166('0x120'),'through':'user_has_mail_interactions'});db['User'][_0x6166('0x127')](db[_0x6166('0x6b')],{'as':'ChatInteractions','through':_0x6166('0x12e')});db['User'][_0x6166('0x127')](db[_0x6166('0x54')],{'as':'FaxInteractions','through':_0x6166('0x12f')});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x5d')],{'as':_0x6166('0x130'),'through':_0x6166('0x131')});db['User'][_0x6166('0x127')](db[_0x6166('0x11d')],{'as':_0x6166('0x132'),'through':'user_has_openchannel_interactions'});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x121')],{'as':'WhatsappInteractions','through':_0x6166('0x133')});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x1c')],{'as':'VoiceQueues','through':_0x6166('0x32'),'required':![]});db['User'][_0x6166('0x127')](db[_0x6166('0x134')],{'as':_0x6166('0x135'),'through':_0x6166('0x112'),'required':![]});db['User'][_0x6166('0x127')](db[_0x6166('0x44')],{'as':_0x6166('0x136'),'through':_0x6166('0x36'),'required':![]});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x6f')],{'as':'ChatQueues','through':_0x6166('0x34'),'required':![],'hooks':!![]});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x57')],{'as':_0x6166('0x137'),'through':_0x6166('0x38'),'required':![]});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x60')],{'as':_0x6166('0x138'),'through':_0x6166('0x3a'),'required':![]});db['User'][_0x6166('0x127')](db[_0x6166('0x67')],{'as':_0x6166('0x139'),'through':'UserOpenchannelQueue','required':![]});db[_0x6166('0x114')][_0x6166('0x127')](db[_0x6166('0x13a')],{'as':'WhatsappQueues','through':_0x6166('0x3d'),'required':![]});db['User']['belongsToMany'](db[_0x6166('0xfc')],{'through':_0x6166('0x12d')});db['User']['belongsToMany'](db[_0x6166('0x13b')],{'as':_0x6166('0x13c'),'through':_0x6166('0x13d')});db[_0x6166('0x114')]['belongsToMany'](db[_0x6166('0x51')],{'as':_0x6166('0x13e'),'through':_0x6166('0x13f')});db[_0x6166('0x114')][_0x6166('0x127')](db['MailAccount'],{'as':'MailAccounts','through':_0x6166('0x140')});db[_0x6166('0x114')][_0x6166('0x127')](db['OpenchannelAccount'],{'as':'OpenchannelAccounts','through':'user_has_openchannel_accounts'});db[_0x6166('0x114')]['belongsToMany'](db[_0x6166('0x5a')],{'as':'SmsAccounts','through':'user_has_sms_accounts'});db[_0x6166('0x114')]['belongsToMany'](db[_0x6166('0x102')],{'as':'WhatsappAccounts','through':'user_has_whatsapp_accounts'});db['User'][_0x6166('0x127')](db[_0x6166('0x141')],{'as':_0x6166('0x142'),'through':_0x6166('0x143')});db[_0x6166('0x15')]['hasMany'](db[_0x6166('0x18')],{'as':'SpiedAgents','onDelete':_0x6166('0x115'),'foreignKey':'ChanSpyId'});db[_0x6166('0x144')]['hasMany'](db[_0x6166('0x18')],{'onDelete':_0x6166('0x115')});db[_0x6166('0x18')][_0x6166('0x117')](db[_0x6166('0x18')],{'as':_0x6166('0x145'),'onDelete':_0x6166('0x115')});db[_0x6166('0x1a')][_0x6166('0x127')](db[_0x6166('0x91')],{'as':'Sounds','through':'moh_has_sounds'});db['VoiceQueue'][_0x6166('0x117')](db[_0x6166('0x30')],{'as':_0x6166('0x146'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')]['hasMany'](db[_0x6166('0x75')],{'as':_0x6166('0x148'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')][_0x6166('0x117')](db['CmHopperFinal'],{'as':_0x6166('0x11b'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')]['hasMany'](db[_0x6166('0x7a')],{'as':_0x6166('0x149'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')]['hasMany'](db[_0x6166('0x11c')],{'as':_0x6166('0x11c'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')][_0x6166('0x117')](db[_0x6166('0x77')],{'as':_0x6166('0x14a'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')][_0x6166('0x117')](db[_0x6166('0xdb')],{'as':_0x6166('0x14b'),'foreignKey':_0x6166('0x147')});db[_0x6166('0x1c')][_0x6166('0x125')](db[_0x6166('0x2d')],{'as':_0x6166('0x2d'),'foreignKey':'TrunkId'});db[_0x6166('0x1c')][_0x6166('0x125')](db['Trunk'],{'as':_0x6166('0x14c'),'foreignKey':_0x6166('0x14d')});db[_0x6166('0x1c')][_0x6166('0x125')](db[_0x6166('0x87')],{'as':'Interval','foreignKey':_0x6166('0x14e')});db[_0x6166('0x1c')]['belongsTo'](db[_0x6166('0x89')],{'as':_0x6166('0x14f'),'foreignKey':_0x6166('0x150')});db[_0x6166('0x1c')][_0x6166('0x127')](db['CmList'],{'as':'Lists','through':'voice_queues_has_cm_lists'});db[_0x6166('0x1c')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':_0x6166('0x32')});db[_0x6166('0x1c')][_0x6166('0x127')](db[_0x6166('0xea')],{'as':'Teams','through':_0x6166('0x10e')});db[_0x6166('0x1c')][_0x6166('0x127')](db[_0x6166('0xfc')],{'as':'BlackLists','through':_0x6166('0x152')});db[_0x6166('0x1e')][_0x6166('0x125')](db[_0x6166('0x114')],{'as':_0x6166('0x114'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x20')][_0x6166('0x125')](db[_0x6166('0x114')],{'as':_0x6166('0x114'),'foreignKey':_0x6166('0x116')});db['VoiceMail'][_0x6166('0x117')](db[_0x6166('0x23')],{'as':'Messages','onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x153'),'sourceKey':_0x6166('0x154')});db[_0x6166('0x23')][_0x6166('0x125')](db[_0x6166('0x22')],{'foreignKey':_0x6166('0x153'),'targetKey':_0x6166('0x154')});db[_0x6166('0x155')][_0x6166('0x117')](db['VoiceQueueReport'],{'as':_0x6166('0x156'),'foreignKey':_0x6166('0x157'),'constraints':![]});db[_0x6166('0x155')][_0x6166('0x117')](db[_0x6166('0x28')],{'as':_0x6166('0x158'),'foreignKey':_0x6166('0x157'),'constraints':![]});db[_0x6166('0x155')][_0x6166('0x125')](db['User'],{'as':_0x6166('0x114'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x155')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db['MailServerIn']['belongsTo'](db[_0x6166('0x43')],{'as':_0x6166('0x43'),'foreignKey':_0x6166('0x15b')});db[_0x6166('0x3f')][_0x6166('0x125')](db[_0x6166('0x10c')],{'as':'CloudProvider','foreignKey':'CloudProviderId','onDelete':'restrict'});db[_0x6166('0x41')][_0x6166('0x125')](db[_0x6166('0x43')],{'as':'MailAccount','foreignKey':_0x6166('0x15b')});db[_0x6166('0x41')]['belongsTo'](db[_0x6166('0x10c')],{'as':_0x6166('0x10c'),'foreignKey':_0x6166('0x15c'),'onDelete':_0x6166('0x15d')});db[_0x6166('0x43')]['hasOne'](db[_0x6166('0x3f')],{'as':_0x6166('0x15e'),'onDelete':_0x6166('0x115')});db[_0x6166('0x43')][_0x6166('0x15f')](db[_0x6166('0x41')],{'as':_0x6166('0x160'),'onDelete':'cascade'});db[_0x6166('0x43')][_0x6166('0x117')](db['Disposition'],{'as':_0x6166('0x161'),'foreignKey':_0x6166('0x15b'),'onDelete':_0x6166('0x115')});db[_0x6166('0x43')][_0x6166('0x117')](db[_0x6166('0x81')],{'as':_0x6166('0x162'),'foreignKey':_0x6166('0x15b')});db[_0x6166('0x43')][_0x6166('0x117')](db[_0x6166('0x163')],{'as':_0x6166('0x164'),'foreignKey':_0x6166('0x15b')});db[_0x6166('0x43')][_0x6166('0x117')](db[_0x6166('0x48')],{'as':'Interactions'});db[_0x6166('0x43')][_0x6166('0x117')](db['MailApplication'],{'as':_0x6166('0x145')});db[_0x6166('0x43')]['belongsTo'](db[_0x6166('0xfc')],{'as':'List','foreignKey':_0x6166('0x165')});db[_0x6166('0x43')][_0x6166('0x125')](db[_0x6166('0x166')],{'as':_0x6166('0x166'),'foreignKey':_0x6166('0x167')});db[_0x6166('0x43')]['belongsTo'](db[_0x6166('0x89')],{'as':_0x6166('0x14f'),'foreignKey':_0x6166('0x150')});db[_0x6166('0x43')]['belongsToMany'](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':'user_has_mail_accounts'});db['MailQueue'][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':'UserMailQueue'});db[_0x6166('0x44')]['belongsToMany'](db[_0x6166('0xea')],{'through':_0x6166('0x168'),'as':_0x6166('0x169')});db[_0x6166('0x48')][_0x6166('0x117')](db[_0x6166('0x163')],{'as':'Messages','onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x16a')});db[_0x6166('0x48')][_0x6166('0x125')](db[_0x6166('0x43')],{'as':_0x6166('0x16b'),'foreignKey':'MailAccountId'});db[_0x6166('0x48')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db['MailInteraction'][_0x6166('0x125')](db[_0x6166('0x114')],{'as':'Owner','foreignKey':_0x6166('0x116')});db['MailInteraction'][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':'mail_interaction_has_tags','as':_0x6166('0x16d')});db[_0x6166('0x48')][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':_0x6166('0x16e'),'as':'ThroughTags'});db[_0x6166('0x48')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x16f'),'through':_0x6166('0x170'),'foreignKey':_0x6166('0x16a')});db['MailMessage'][_0x6166('0x117')](db['Attachment'],{'as':_0x6166('0x171'),'onDelete':_0x6166('0x115')});db[_0x6166('0x163')][_0x6166('0x125')](db[_0x6166('0x114')],{'as':_0x6166('0x114')});db['MailMessage'][_0x6166('0x125')](db['CmContact'],{'onDelete':'cascade','as':_0x6166('0x159')});db[_0x6166('0x163')][_0x6166('0x125')](db[_0x6166('0x48')],{'as':'Interaction','foreignKey':_0x6166('0x16a')});db[_0x6166('0x163')]['belongsTo'](db[_0x6166('0x43')],{'as':'Account','foreignKey':_0x6166('0x15b')});db[_0x6166('0x163')][_0x6166('0x125')](db[_0x6166('0x13b')],{'as':'ChatWebsite','foreignKey':'ChatWebsiteId'});db['MailMessage'][_0x6166('0x125')](db[_0x6166('0x172')],{'as':_0x6166('0x172'),'foreignKey':'ChatOfflineMessageId'});db[_0x6166('0x4a')][_0x6166('0x125')](db['User'],{'onDelete':_0x6166('0x15d')});db['MailApplication'][_0x6166('0x125')](db[_0x6166('0x44')],{'onDelete':'restrict'});db['MailApplication'][_0x6166('0x125')](db[_0x6166('0x43')],{'onDelete':_0x6166('0x15d')});db['MailApplication'][_0x6166('0x125')](db[_0x6166('0x87')],{'onDelete':_0x6166('0x15d'),'foreignKey':_0x6166('0x14e')});db[_0x6166('0x4a')][_0x6166('0x125')](db[_0x6166('0x16c')],{'onDelete':_0x6166('0x15d'),'foreignKey':'TagId'});db[_0x6166('0x4c')][_0x6166('0x125')](db[_0x6166('0x43')],{});db[_0x6166('0x4c')][_0x6166('0x125')](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':'ListId'});db['MailQueueReport'][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db['MailQueueReport'][_0x6166('0x125')](db[_0x6166('0x48')],{});db[_0x6166('0x4c')][_0x6166('0x125')](db[_0x6166('0x163')],{});db[_0x6166('0x4c')][_0x6166('0x125')](db['User'],{});db[_0x6166('0x4c')]['belongsTo'](db[_0x6166('0x44')],{});db['Dashboard']['hasMany'](db['DashboardItem'],{'as':_0x6166('0x174'),'onDelete':_0x6166('0x115')});db['FaxAccount'][_0x6166('0x117')](db[_0x6166('0x83')],{'as':_0x6166('0x161'),'foreignKey':_0x6166('0x175'),'onDelete':_0x6166('0x115')});db[_0x6166('0x51')]['hasMany'](db[_0x6166('0x81')],{'as':_0x6166('0x162'),'foreignKey':_0x6166('0x175')});db['FaxAccount'][_0x6166('0x117')](db['FaxInteraction'],{'as':_0x6166('0x176')});db[_0x6166('0x51')][_0x6166('0x117')](db['FaxApplication'],{'as':_0x6166('0x145')});db[_0x6166('0x51')][_0x6166('0x117')](db[_0x6166('0x18')],{'as':'Exntensions','onDelete':_0x6166('0x115')});db[_0x6166('0x51')][_0x6166('0x117')](db[_0x6166('0x56')],{'as':_0x6166('0x164')});db['FaxAccount'][_0x6166('0x125')](db[_0x6166('0x2d')],{'as':_0x6166('0x2d')});db['FaxAccount'][_0x6166('0x125')](db['CmList'],{'as':_0x6166('0x173'),'foreignKey':_0x6166('0x165')});db[_0x6166('0x51')][_0x6166('0x125')](db[_0x6166('0x89')],{'as':'mandatoryDispositionPause','foreignKey':_0x6166('0x150')});db[_0x6166('0x51')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':_0x6166('0x13f')});db[_0x6166('0x53')][_0x6166('0x125')](db[_0x6166('0x114')],{'onDelete':_0x6166('0x15d')});db['FaxApplication'][_0x6166('0x125')](db[_0x6166('0x57')],{'onDelete':_0x6166('0x15d')});db[_0x6166('0x53')]['belongsTo'](db['FaxAccount'],{'onDelete':_0x6166('0x15d')});db[_0x6166('0x53')][_0x6166('0x125')](db[_0x6166('0x16c')],{'onDelete':'restrict','foreignKey':_0x6166('0x177')});db[_0x6166('0x54')][_0x6166('0x117')](db[_0x6166('0x56')],{'as':_0x6166('0x164'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x178')});db[_0x6166('0x54')][_0x6166('0x125')](db[_0x6166('0x51')],{'as':'Account','foreignKey':_0x6166('0x175')});db[_0x6166('0x54')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':'Contact','foreignKey':_0x6166('0x15a')});db['FaxInteraction'][_0x6166('0x125')](db['User'],{'as':_0x6166('0x179'),'foreignKey':'UserId'});db[_0x6166('0x54')][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':_0x6166('0x17a'),'as':'Tags'});db[_0x6166('0x54')][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':_0x6166('0x17a'),'as':_0x6166('0x17b')});db[_0x6166('0x54')][_0x6166('0x127')](db['User'],{'as':_0x6166('0x16f'),'through':_0x6166('0x12f'),'foreignKey':_0x6166('0x178')});db[_0x6166('0x56')][_0x6166('0x125')](db[_0x6166('0x114')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x114')});db[_0x6166('0x56')][_0x6166('0x125')](db['FaxInteraction'],{'as':'Interaction','foreignKey':'FaxInteractionId'});db[_0x6166('0x56')][_0x6166('0x125')](db[_0x6166('0x73')],{'onDelete':'cascade','as':_0x6166('0x159')});db['FaxMessage']['belongsTo'](db[_0x6166('0xf0')],{'as':_0x6166('0xf0'),'foreignKey':_0x6166('0x17c')});db[_0x6166('0x56')]['belongsTo'](db[_0x6166('0x51')],{'as':'Account','foreignKey':_0x6166('0x175')});db['FaxQueue']['belongsToMany'](db['User'],{'as':_0x6166('0x151'),'through':_0x6166('0x38')});db[_0x6166('0x57')][_0x6166('0x127')](db[_0x6166('0xea')],{'through':_0x6166('0x17d'),'as':'Teams'});db[_0x6166('0x17e')]['belongsTo'](db[_0x6166('0x51')],{});db[_0x6166('0x17e')][_0x6166('0x125')](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':_0x6166('0x165')});db['FaxQueueReport']['belongsTo'](db[_0x6166('0x73')],{'as':'Contact','foreignKey':_0x6166('0x15a')});db[_0x6166('0x17e')][_0x6166('0x125')](db['FaxInteraction'],{});db['FaxQueueReport'][_0x6166('0x125')](db[_0x6166('0x56')],{});db[_0x6166('0x17e')][_0x6166('0x125')](db[_0x6166('0x114')],{});db[_0x6166('0x17e')][_0x6166('0x125')](db['FaxQueue'],{});db[_0x6166('0x5a')][_0x6166('0x117')](db[_0x6166('0x83')],{'as':_0x6166('0x161'),'foreignKey':_0x6166('0x17f'),'onDelete':_0x6166('0x115')});db[_0x6166('0x5a')][_0x6166('0x117')](db[_0x6166('0x81')],{'as':_0x6166('0x162'),'foreignKey':'SmsAccountId'});db[_0x6166('0x5a')][_0x6166('0x117')](db['SmsMessage'],{'as':_0x6166('0x164'),'foreignKey':_0x6166('0x17f')});db['SmsAccount'][_0x6166('0x117')](db[_0x6166('0x5d')],{'as':_0x6166('0x176')});db[_0x6166('0x5a')]['hasMany'](db[_0x6166('0x180')],{'as':_0x6166('0x145')});db[_0x6166('0x5a')][_0x6166('0x125')](db['CmList'],{'as':_0x6166('0x173'),'foreignKey':'ListId'});db['SmsAccount']['belongsTo'](db[_0x6166('0x89')],{'as':_0x6166('0x14f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x6166('0x5a')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':_0x6166('0x181')});db[_0x6166('0x180')][_0x6166('0x125')](db['User'],{'onDelete':_0x6166('0x15d')});db[_0x6166('0x180')][_0x6166('0x125')](db[_0x6166('0x60')],{'onDelete':'restrict'});db[_0x6166('0x180')][_0x6166('0x125')](db[_0x6166('0x5a')],{'onDelete':_0x6166('0x15d')});db[_0x6166('0x180')][_0x6166('0x125')](db[_0x6166('0x87')],{'onDelete':_0x6166('0x15d'),'foreignKey':_0x6166('0x14e')});db[_0x6166('0x180')][_0x6166('0x125')](db[_0x6166('0x16c')],{'onDelete':_0x6166('0x15d'),'foreignKey':_0x6166('0x177')});db[_0x6166('0x5d')][_0x6166('0x117')](db['SmsMessage'],{'as':_0x6166('0x164'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x182')});db[_0x6166('0x5d')][_0x6166('0x125')](db[_0x6166('0x5a')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x17f')});db['SmsInteraction'][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db[_0x6166('0x5d')][_0x6166('0x125')](db['User'],{'as':'Owner','foreignKey':'UserId'});db[_0x6166('0x5d')][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':_0x6166('0x183'),'as':_0x6166('0x16d')});db[_0x6166('0x5d')][_0x6166('0x127')](db['Tag'],{'through':_0x6166('0x183'),'as':_0x6166('0x17b')});db[_0x6166('0x5d')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x16f'),'through':_0x6166('0x131'),'foreignKey':'SmsInteractionId'});db['SmsMessage'][_0x6166('0x125')](db['User'],{'as':_0x6166('0x114')});db[_0x6166('0x184')]['belongsTo'](db['CmContact'],{'onDelete':_0x6166('0x115'),'as':'Contact'});db['SmsMessage']['belongsTo'](db[_0x6166('0x5d')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x185'),'foreignKey':_0x6166('0x182')});db[_0x6166('0x184')][_0x6166('0x125')](db[_0x6166('0x5a')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x17f')});db['SmsQueue'][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':_0x6166('0x3a'),'foreignKey':_0x6166('0x186')});db['SmsQueue'][_0x6166('0x127')](db[_0x6166('0xea')],{'through':_0x6166('0x187'),'as':'Teams'});db[_0x6166('0x62')][_0x6166('0x117')](db[_0x6166('0x83')],{'as':'Dispositions','foreignKey':_0x6166('0x188'),'onDelete':_0x6166('0x115')});db[_0x6166('0x62')][_0x6166('0x117')](db[_0x6166('0x81')],{'as':_0x6166('0x162'),'foreignKey':'OpenchannelAccountId'});db[_0x6166('0x62')][_0x6166('0x117')](db[_0x6166('0x11d')],{'as':'Interactions','foreignKey':_0x6166('0x188')});db[_0x6166('0x62')][_0x6166('0x117')](db[_0x6166('0x66')],{'as':'Messages','foreignKey':_0x6166('0x188')});db['OpenchannelAccount']['hasMany'](db['OpenchannelApplication'],{'as':_0x6166('0x145'),'foreignKey':_0x6166('0x188')});db[_0x6166('0x62')]['belongsTo'](db[_0x6166('0xfc')],{'as':'List','foreignKey':_0x6166('0x165')});db[_0x6166('0x62')][_0x6166('0x125')](db['Pause'],{'as':_0x6166('0x14f'),'foreignKey':_0x6166('0x150')});db[_0x6166('0x62')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':'user_has_openchannel_accounts'});db['OpenchannelApplication'][_0x6166('0x125')](db[_0x6166('0x114')],{'onDelete':_0x6166('0x15d')});db['OpenchannelApplication'][_0x6166('0x125')](db[_0x6166('0x67')],{'onDelete':'restrict','foreignKey':_0x6166('0x189')});db[_0x6166('0x18a')][_0x6166('0x125')](db[_0x6166('0x62')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0x6166('0x18a')][_0x6166('0x125')](db['Interval'],{'onDelete':'restrict','foreignKey':_0x6166('0x14e')});db[_0x6166('0x18a')][_0x6166('0x125')](db['Tag'],{'onDelete':_0x6166('0x15d'),'foreignKey':'TagId'});db[_0x6166('0x11d')][_0x6166('0x117')](db[_0x6166('0x66')],{'as':_0x6166('0x164'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x18b')});db[_0x6166('0x11d')][_0x6166('0x125')](db[_0x6166('0x62')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x188')});db['OpenchannelInteraction'][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db['OpenchannelInteraction'][_0x6166('0x125')](db[_0x6166('0x114')],{'as':'Owner','foreignKey':_0x6166('0x116')});db[_0x6166('0x11d')]['belongsToMany'](db[_0x6166('0x16c')],{'through':_0x6166('0x18c'),'as':_0x6166('0x16d')});db['OpenchannelInteraction'][_0x6166('0x127')](db['Tag'],{'through':_0x6166('0x18c'),'as':_0x6166('0x17b')});db[_0x6166('0x11d')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x16f'),'through':_0x6166('0x18d'),'foreignKey':_0x6166('0x18b')});db['OpenchannelMessage'][_0x6166('0x125')](db[_0x6166('0x114')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x114')});db[_0x6166('0x66')][_0x6166('0x125')](db['CmContact'],{'onDelete':'cascade','as':'Contact'});db['OpenchannelMessage'][_0x6166('0x125')](db[_0x6166('0x11d')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x185'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0x6166('0x125')](db['Attachment'],{'as':_0x6166('0xf0'),'foreignKey':_0x6166('0x17c')});db[_0x6166('0x66')][_0x6166('0x125')](db[_0x6166('0x62')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue']['belongsToMany'](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':_0x6166('0x3c'),'foreignKey':_0x6166('0x189')});db[_0x6166('0x67')]['belongsToMany'](db[_0x6166('0xea')],{'through':_0x6166('0x18e'),'as':_0x6166('0x169')});db['ChatWebsite']['hasMany'](db[_0x6166('0x83')],{'as':_0x6166('0x161'),'foreignKey':_0x6166('0x18f'),'onDelete':_0x6166('0x115')});db[_0x6166('0x13b')]['hasMany'](db[_0x6166('0x81')],{'as':'Answers','foreignKey':'ChatWebsiteId'});db[_0x6166('0x13b')]['hasMany'](db[_0x6166('0x70')],{'as':_0x6166('0x190')});db[_0x6166('0x13b')][_0x6166('0x117')](db[_0x6166('0x6b')],{'as':_0x6166('0x176')});db[_0x6166('0x13b')][_0x6166('0x117')](db[_0x6166('0x6a')],{'as':_0x6166('0x145')});db['ChatWebsite'][_0x6166('0x117')](db['ChatMessage'],{'as':_0x6166('0x164')});db['ChatWebsite'][_0x6166('0x125')](db[_0x6166('0xfc')],{'as':'List','foreignKey':_0x6166('0x165')});db[_0x6166('0x13b')][_0x6166('0x125')](db['Interval'],{'as':_0x6166('0x87'),'foreignKey':_0x6166('0x14e')});db['ChatWebsite'][_0x6166('0x125')](db[_0x6166('0x43')],{'as':'MailAccount','foreignKey':'MailAccountId'});db[_0x6166('0x13b')][_0x6166('0x125')](db[_0x6166('0x89')],{'as':_0x6166('0x14f'),'foreignKey':_0x6166('0x150')});db[_0x6166('0x13b')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':'user_has_chat_websites'});db[_0x6166('0x69')]['belongsTo'](db[_0x6166('0x62')],{});db[_0x6166('0x69')]['belongsTo'](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':'ListId'});db['OpenchannelQueueReport']['belongsTo'](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db[_0x6166('0x69')][_0x6166('0x125')](db['OpenchannelInteraction'],{});db[_0x6166('0x69')][_0x6166('0x125')](db[_0x6166('0x66')],{});db[_0x6166('0x69')][_0x6166('0x125')](db['User'],{});db[_0x6166('0x69')][_0x6166('0x125')](db[_0x6166('0x67')],{});db[_0x6166('0x6a')][_0x6166('0x125')](db[_0x6166('0x114')],{'as':_0x6166('0x191'),'foreignKey':'UserId','onDelete':_0x6166('0x15d')});db['ChatApplication'][_0x6166('0x125')](db[_0x6166('0x6f')],{'as':'Queue','foreignKey':_0x6166('0x192'),'onDelete':'restrict'});db[_0x6166('0x6a')][_0x6166('0x125')](db[_0x6166('0x13b')],{'as':_0x6166('0x193'),'foreignKey':_0x6166('0x18f'),'onDelete':_0x6166('0x15d')});db[_0x6166('0x6a')]['belongsTo'](db[_0x6166('0x16c')],{'onDelete':_0x6166('0x15d'),'foreignKey':_0x6166('0x177')});db['ChatInteraction'][_0x6166('0x117')](db[_0x6166('0x6c')],{'as':_0x6166('0x164'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x194')});db[_0x6166('0x6b')][_0x6166('0x125')](db[_0x6166('0x13b')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x6166('0x6b')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':'ContactId'});db[_0x6166('0x6b')][_0x6166('0x125')](db['User'],{'as':_0x6166('0x179'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x6b')]['belongsToMany'](db['Tag'],{'through':_0x6166('0x195'),'as':_0x6166('0x16d')});db[_0x6166('0x6b')][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':_0x6166('0x195'),'as':_0x6166('0x17b')});db[_0x6166('0x6b')][_0x6166('0x127')](db['User'],{'as':_0x6166('0x16f'),'through':_0x6166('0x12e'),'foreignKey':_0x6166('0x194')});db[_0x6166('0x6c')][_0x6166('0x125')](db[_0x6166('0x114')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x114')});db[_0x6166('0x6c')][_0x6166('0x125')](db[_0x6166('0x73')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db[_0x6166('0x6c')][_0x6166('0x125')](db[_0x6166('0x6b')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x185'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0x6166('0x125')](db[_0x6166('0xf0')],{'as':_0x6166('0xf0'),'foreignKey':'AttachmentId'});db[_0x6166('0x6c')]['belongsTo'](db['ChatWebsite'],{'as':_0x6166('0x16b'),'foreignKey':'ChatWebsiteId'});db[_0x6166('0x172')][_0x6166('0x117')](db[_0x6166('0xf0')],{'as':_0x6166('0x171'),'foreignKey':_0x6166('0x196'),'onDelete':'cascade','hooks':!![]});db['ChatOfflineMessage'][_0x6166('0x125')](db[_0x6166('0x73')],{'onDelete':'cascade','as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db['ChatOfflineMessage']['belongsTo'](db['ChatWebsite'],{'as':_0x6166('0x16b'),'foreignKey':'ChatWebsiteId'});db['ChatQueue']['belongsToMany'](db[_0x6166('0x114')],{'as':'Agents','through':_0x6166('0x34'),'hooks':!![]});db[_0x6166('0x6f')][_0x6166('0x127')](db[_0x6166('0xea')],{'through':_0x6166('0x197'),'as':_0x6166('0x169')});db[_0x6166('0x128')][_0x6166('0x117')](db[_0x6166('0xd5')],{'as':_0x6166('0x164'),'foreignKey':_0x6166('0x198'),'onDelete':_0x6166('0x115')});db[_0x6166('0x128')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Members','through':_0x6166('0x12a')});db[_0x6166('0x70')]['belongsTo'](db[_0x6166('0x13b')],{'as':_0x6166('0x193'),'foreignKey':_0x6166('0x18f')});db[_0x6166('0x199')]['hasMany'](db[_0x6166('0x73')],{'as':_0x6166('0x12b'),'foreignKey':_0x6166('0x19a')});db['CmContact'][_0x6166('0x117')](db['CmHopper'],{'as':_0x6166('0x148'),'foreignKey':'ContactId'});db['CmContact'][_0x6166('0x117')](db[_0x6166('0x11a')],{'as':'HopperFinals','foreignKey':_0x6166('0x15a')});db[_0x6166('0x73')][_0x6166('0x117')](db['CmHopperHistory'],{'as':_0x6166('0x149'),'foreignKey':_0x6166('0x15a')});db['CmContact']['hasMany'](db[_0x6166('0x11c')],{'as':_0x6166('0x11c'),'foreignKey':_0x6166('0x15a')});db['CmContact'][_0x6166('0x117')](db[_0x6166('0xdb')],{'as':_0x6166('0x14b'),'foreignKey':_0x6166('0x15a')});db[_0x6166('0x73')][_0x6166('0x117')](db[_0x6166('0x11d')],{'as':_0x6166('0x132'),'foreignKey':'ContactId','onDelete':_0x6166('0x15d')});db[_0x6166('0x73')][_0x6166('0x117')](db[_0x6166('0x6b')],{'as':'ChatInteractions','foreignKey':'ContactId','onDelete':_0x6166('0x15d')});db[_0x6166('0x73')]['hasMany'](db[_0x6166('0x5d')],{'as':_0x6166('0x130'),'foreignKey':_0x6166('0x15a'),'onDelete':_0x6166('0x15d')});db[_0x6166('0x73')][_0x6166('0x117')](db[_0x6166('0x54')],{'as':_0x6166('0x11f'),'foreignKey':'ContactId','onDelete':_0x6166('0x15d')});db[_0x6166('0x73')][_0x6166('0x117')](db[_0x6166('0x48')],{'as':_0x6166('0x120'),'foreignKey':_0x6166('0x15a'),'onDelete':'restrict'});db['CmContact'][_0x6166('0x125')](db['CmCompany'],{'as':_0x6166('0x19b'),'foreignKey':'CompanyId'});db[_0x6166('0x73')][_0x6166('0x125')](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':'ListId','onDelete':_0x6166('0x115')});db['CmContact']['belongsToMany'](db[_0x6166('0x114')],{'as':_0x6166('0x16f'),'through':_0x6166('0x12c')});db[_0x6166('0x73')]['belongsToMany'](db[_0x6166('0x16c')],{'as':_0x6166('0x16d'),'through':_0x6166('0x19c')});db[_0x6166('0x73')][_0x6166('0x127')](db[_0x6166('0x16c')],{'through':_0x6166('0x19c'),'as':_0x6166('0x17b')});db['CmHopper']['belongsTo'](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a'),'onDelete':'cascade'});db[_0x6166('0x75')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':'ListId','onDelete':_0x6166('0x115')});db[_0x6166('0x75')][_0x6166('0x125')](db['User'],{'as':_0x6166('0x191'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x75')]['belongsTo'](db['VoiceQueue'],{'as':'Queue','foreignKey':_0x6166('0x147'),'onDelete':'cascade'});db[_0x6166('0x75')][_0x6166('0x125')](db[_0x6166('0x19d')],{'as':_0x6166('0x19d'),'foreignKey':'CampaignId','onDelete':_0x6166('0x115')});db[_0x6166('0x75')][_0x6166('0x125')](db[_0x6166('0x114')],{'as':_0x6166('0x179'),'foreignKey':_0x6166('0x19e')});db[_0x6166('0x77')]['belongsTo'](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a'),'onDelete':_0x6166('0x115')});db[_0x6166('0x77')]['belongsTo'](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':'ListId','onDelete':_0x6166('0x115')});db[_0x6166('0x77')]['belongsTo'](db[_0x6166('0x1c')],{'as':_0x6166('0x19f'),'foreignKey':'VoiceQueueId','onDelete':_0x6166('0x115')});db[_0x6166('0x77')]['belongsTo'](db[_0x6166('0x19d')],{'as':_0x6166('0x19d'),'foreignKey':_0x6166('0x1a0'),'onDelete':_0x6166('0x115')});db[_0x6166('0x7f')][_0x6166('0x117')](db['Condition'],{'as':{'plural':_0x6166('0x1a1'),'singular':_0x6166('0x1a2')},'foreignKey':'AutomationAllId','onDelete':_0x6166('0x115'),'hooks':!![]});db['Automation'][_0x6166('0x117')](db[_0x6166('0x85')],{'as':{'plural':_0x6166('0x1a3'),'singular':'OneAny'},'foreignKey':_0x6166('0x1a4'),'onDelete':_0x6166('0x115'),'hooks':!![]});db['Automation']['hasMany'](db[_0x6166('0x1a5')],{'as':'Actions','foreignKey':_0x6166('0x1a6'),'onDelete':_0x6166('0x115'),'hooks':!![]});db[_0x6166('0x83')][_0x6166('0x117')](db[_0x6166('0x83')],{'as':_0x6166('0x161'),'foreignKey':_0x6166('0x1a7'),'onDelete':'cascade'});db[_0x6166('0x87')]['hasMany'](db[_0x6166('0x87')],{'as':_0x6166('0x1a8'),'foreignKey':_0x6166('0x14e'),'onDelete':_0x6166('0x115'),'hooks':!![],'required':![]});db[_0x6166('0x87')][_0x6166('0x117')](db[_0x6166('0x18')],{'as':_0x6166('0x119'),'foreignKey':_0x6166('0x14e'),'onDelete':_0x6166('0x15d')});db[_0x6166('0x87')][_0x6166('0x117')](db[_0x6166('0x4a')],{'as':_0x6166('0x1a9'),'foreignKey':_0x6166('0x14e')});db[_0x6166('0x87')][_0x6166('0x117')](db['ChatApplication'],{'as':_0x6166('0x1aa'),'foreignKey':_0x6166('0x14e')});db['Interval'][_0x6166('0x117')](db[_0x6166('0x53')],{'as':_0x6166('0x1ab'),'foreignKey':'IntervalId'});db['Interval'][_0x6166('0x117')](db['SmsApplication'],{'as':_0x6166('0x1ac'),'foreignKey':_0x6166('0x14e')});db[_0x6166('0x8f')]['belongsTo'](db[_0x6166('0x43')],{});db[_0x6166('0x8f')][_0x6166('0x125')](db[_0x6166('0x9d')],{'foreignKey':_0x6166('0x1ad')});db[_0x6166('0x8f')]['belongsTo'](db[_0x6166('0x9b')],{'foreignKey':'CustomReportId'});db['Sound'][_0x6166('0x127')](db['VoiceMusicOnHold'],{'as':'Mohs','through':_0x6166('0x1ae'),'onDelete':_0x6166('0x15d')});db[_0x6166('0x16c')][_0x6166('0x127')](db[_0x6166('0x73')],{'through':'cm_contact_has_tags'});db[_0x6166('0x16c')]['belongsToMany'](db[_0x6166('0x6b')],{'through':_0x6166('0x195')});db['Tag'][_0x6166('0x127')](db['MailInteraction'],{'through':_0x6166('0x16e')});db[_0x6166('0x16c')]['belongsToMany'](db[_0x6166('0x5d')],{'through':_0x6166('0x183')});db['Tag']['belongsToMany'](db[_0x6166('0x54')],{'through':_0x6166('0x17a')});db['Tag'][_0x6166('0x127')](db['OpenchannelInteraction'],{'through':_0x6166('0x18c')});db[_0x6166('0x16c')][_0x6166('0x127')](db['WhatsappInteraction'],{'through':_0x6166('0x1af')});db['Trigger'][_0x6166('0x117')](db['Condition'],{'as':{'plural':_0x6166('0x1b0'),'singular':_0x6166('0x1b1')},'foreignKey':'TriggerAllId','onDelete':_0x6166('0x115'),'hooks':!![]});db[_0x6166('0x94')][_0x6166('0x117')](db[_0x6166('0x85')],{'as':{'plural':'AnyConditions','singular':_0x6166('0x1b2')},'foreignKey':'TriggerAnyId','onDelete':'cascade','hooks':!![]});db[_0x6166('0x94')][_0x6166('0x117')](db[_0x6166('0x1a5')],{'as':_0x6166('0x1b3'),'foreignKey':_0x6166('0x1b4'),'onDelete':_0x6166('0x115'),'hooks':!![]});db[_0x6166('0x9b')][_0x6166('0x117')](db[_0x6166('0x1b5')],{'as':_0x6166('0x1b6'),'onDelete':_0x6166('0x115'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x6166('0x117')](db[_0x6166('0x1b5')],{'as':_0x6166('0x1b6'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1ad')});db[_0x6166('0xa0')][_0x6166('0x117')](db[_0x6166('0x1b5')],{'as':_0x6166('0x1b6'),'onDelete':_0x6166('0x115'),'foreignKey':'MetricId'});db[_0x6166('0x1b5')][_0x6166('0x125')](db[_0x6166('0xa0')],{'foreignKey':_0x6166('0x1b7')});db['SalesforceAccount'][_0x6166('0x117')](db[_0x6166('0x1b8')],{'as':_0x6166('0x1b9'),'onDelete':_0x6166('0x115'),'foreignKey':'AccountId'});db[_0x6166('0x1b8')][_0x6166('0x117')](db[_0x6166('0xa8')],{'as':'Subjects','onDelete':_0x6166('0x115'),'foreignKey':'SubjectId'});db[_0x6166('0x1b8')][_0x6166('0x117')](db[_0x6166('0xa8')],{'as':_0x6166('0x1ba'),'onDelete':_0x6166('0x115'),'foreignKey':'DescriptionId'});db[_0x6166('0x1b8')]['hasMany'](db[_0x6166('0xa8')],{'as':_0x6166('0x1b6'),'onDelete':_0x6166('0x115'),'foreignKey':'FieldId'});db[_0x6166('0x1b8')][_0x6166('0x125')](db[_0x6166('0xa5')],{'as':_0x6166('0x16b'),'foreignKey':'AccountId'});db[_0x6166('0xa8')][_0x6166('0x117')](db[_0x6166('0xa8')],{'as':_0x6166('0x1bb'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0xa8')][_0x6166('0x117')](db['SalesforceField'],{'as':_0x6166('0x1bd'),'foreignKey':_0x6166('0x1be')});db[_0x6166('0xa8')][_0x6166('0x117')](db[_0x6166('0xa8')],{'as':'Field','foreignKey':_0x6166('0x1bf')});db['SalesforceField'][_0x6166('0x125')](db[_0x6166('0x96')],{'as':_0x6166('0x96'),'foreignKey':_0x6166('0x1c0')});db[_0x6166('0xaa')][_0x6166('0x117')](db[_0x6166('0xac')],{'as':_0x6166('0x1b9'),'onDelete':_0x6166('0x115'),'foreignKey':'AccountId'});db[_0x6166('0xac')][_0x6166('0x117')](db[_0x6166('0xae')],{'as':_0x6166('0x1c1'),'onDelete':_0x6166('0x115'),'foreignKey':'SubjectId'});db[_0x6166('0xac')][_0x6166('0x117')](db[_0x6166('0xae')],{'as':_0x6166('0x1ba'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1be')});db[_0x6166('0xac')][_0x6166('0x117')](db['SugarcrmField'],{'as':'Fields','onDelete':'cascade','foreignKey':_0x6166('0x1bf')});db[_0x6166('0xac')][_0x6166('0x125')](db[_0x6166('0xaa')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0xae')][_0x6166('0x117')](db[_0x6166('0xae')],{'as':_0x6166('0x1bb'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0xae')][_0x6166('0x117')](db[_0x6166('0xae')],{'as':_0x6166('0x1bd'),'foreignKey':'DescriptionId'});db[_0x6166('0xae')][_0x6166('0x117')](db[_0x6166('0xae')],{'as':'Field','foreignKey':_0x6166('0x1bf')});db[_0x6166('0xae')][_0x6166('0x125')](db['Variable'],{'as':'Variable','foreignKey':_0x6166('0x1c0')});db[_0x6166('0xb0')][_0x6166('0x117')](db[_0x6166('0x1c3')],{'as':_0x6166('0x1b9'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1c3')]['hasMany'](db[_0x6166('0xb3')],{'as':_0x6166('0x1c1'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0x1c3')][_0x6166('0x117')](db['DeskField'],{'as':_0x6166('0x1ba'),'onDelete':_0x6166('0x115'),'foreignKey':'DescriptionId'});db[_0x6166('0x1c3')][_0x6166('0x117')](db[_0x6166('0xb3')],{'as':_0x6166('0x1b6'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1c3')][_0x6166('0x125')](db[_0x6166('0xb0')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1c3')]['belongsToMany'](db[_0x6166('0x16c')],{'through':'int_desk_configuration_has_tags'});db[_0x6166('0xb3')]['hasMany'](db[_0x6166('0xb3')],{'as':_0x6166('0x1bb'),'foreignKey':'SubjectId'});db['DeskField'][_0x6166('0x117')](db['DeskField'],{'as':_0x6166('0x1bd'),'foreignKey':_0x6166('0x1be')});db['DeskField'][_0x6166('0x117')](db[_0x6166('0xb3')],{'as':'Field','foreignKey':_0x6166('0x1bf')});db['DeskField'][_0x6166('0x125')](db['Variable'],{'as':'Variable','foreignKey':_0x6166('0x1c0')});db[_0x6166('0xb4')][_0x6166('0x117')](db[_0x6166('0xb5')],{'as':_0x6166('0x1b9'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0xb5')]['hasMany'](db['ZohoField'],{'as':'Subjects','onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1bc')});db['ZohoConfiguration']['hasMany'](db[_0x6166('0x1c4')],{'as':_0x6166('0x1ba'),'onDelete':'cascade','foreignKey':_0x6166('0x1be')});db[_0x6166('0xb5')][_0x6166('0x117')](db[_0x6166('0x1c4')],{'as':_0x6166('0x1b6'),'onDelete':_0x6166('0x115'),'foreignKey':'FieldId'});db[_0x6166('0xb5')][_0x6166('0x125')](db[_0x6166('0xb4')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x1c2')});db['ZohoField'][_0x6166('0x117')](db['ZohoField'],{'as':_0x6166('0x1bb'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0x1c4')]['hasMany'](db[_0x6166('0x1c4')],{'as':_0x6166('0x1bd'),'foreignKey':'DescriptionId'});db[_0x6166('0x1c4')][_0x6166('0x117')](db[_0x6166('0x1c4')],{'as':'Field','foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1c4')][_0x6166('0x125')](db[_0x6166('0x96')],{'as':_0x6166('0x96'),'foreignKey':_0x6166('0x1c0')});db['ZendeskAccount'][_0x6166('0x117')](db[_0x6166('0x1c5')],{'as':_0x6166('0x1b9'),'onDelete':'cascade','foreignKey':_0x6166('0x1c2')});db['ZendeskConfiguration'][_0x6166('0x117')](db[_0x6166('0xbb')],{'as':_0x6166('0x1c1'),'foreignKey':'SubjectId'});db[_0x6166('0x1c5')][_0x6166('0x117')](db[_0x6166('0xbb')],{'as':_0x6166('0x1ba'),'foreignKey':_0x6166('0x1be')});db[_0x6166('0x1c5')][_0x6166('0x117')](db['ZendeskField'],{'as':_0x6166('0x1b6'),'foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1c5')][_0x6166('0x125')](db[_0x6166('0xb8')],{'as':'Account','foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1c5')]['belongsToMany'](db[_0x6166('0x16c')],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField'][_0x6166('0x117')](db[_0x6166('0xbb')],{'as':_0x6166('0x1bb'),'foreignKey':'SubjectId'});db[_0x6166('0xbb')]['hasMany'](db[_0x6166('0xbb')],{'as':_0x6166('0x1bd'),'foreignKey':'DescriptionId'});db[_0x6166('0xbb')][_0x6166('0x117')](db[_0x6166('0xbb')],{'as':_0x6166('0x1c6'),'foreignKey':'FieldId'});db[_0x6166('0xbb')][_0x6166('0x125')](db['Variable'],{'as':_0x6166('0x96'),'foreignKey':_0x6166('0x1c0')});db['FreshdeskAccount'][_0x6166('0x117')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0xbd')][_0x6166('0x117')](db['FreshdeskField'],{'as':_0x6166('0x1c1'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0xbd')][_0x6166('0x117')](db[_0x6166('0xbf')],{'as':'Descriptions','onDelete':_0x6166('0x115'),'foreignKey':'DescriptionId'});db[_0x6166('0xbd')][_0x6166('0x117')](db['FreshdeskField'],{'as':_0x6166('0x1b6'),'onDelete':'cascade','foreignKey':_0x6166('0x1bf')});db['FreshdeskConfiguration'][_0x6166('0x125')](db[_0x6166('0x1c7')],{'as':'Account','foreignKey':_0x6166('0x1c2')});db['FreshdeskConfiguration'][_0x6166('0x127')](db['Tag'],{'through':_0x6166('0x1c8')});db['FreshdeskField'][_0x6166('0x117')](db[_0x6166('0xbf')],{'as':'Subject','foreignKey':_0x6166('0x1bc')});db[_0x6166('0xbf')]['hasMany'](db[_0x6166('0xbf')],{'as':_0x6166('0x1bd'),'foreignKey':_0x6166('0x1be')});db[_0x6166('0xbf')][_0x6166('0x117')](db[_0x6166('0xbf')],{'as':'Field','foreignKey':_0x6166('0x1bf')});db['FreshdeskField'][_0x6166('0x125')](db[_0x6166('0x96')],{'as':_0x6166('0x96'),'foreignKey':_0x6166('0x1c0')});db[_0x6166('0xc1')][_0x6166('0x117')](db[_0x6166('0x1c9')],{'as':_0x6166('0x1b9'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1c9')][_0x6166('0x117')](db[_0x6166('0x1ca')],{'as':_0x6166('0x1c1'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0x1c9')][_0x6166('0x117')](db[_0x6166('0x1ca')],{'as':'Descriptions','foreignKey':_0x6166('0x1be')});db[_0x6166('0x1c9')][_0x6166('0x117')](db[_0x6166('0x1ca')],{'as':_0x6166('0x1b6'),'foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1c9')][_0x6166('0x125')](db[_0x6166('0xc1')],{'as':'Account','foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1ca')]['hasMany'](db['VtigerField'],{'as':_0x6166('0x1bb'),'foreignKey':_0x6166('0x1bc')});db['VtigerField'][_0x6166('0x117')](db[_0x6166('0x1ca')],{'as':_0x6166('0x1bd'),'foreignKey':_0x6166('0x1be')});db[_0x6166('0x1ca')]['hasMany'](db['VtigerField'],{'as':_0x6166('0x1c6'),'foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1ca')][_0x6166('0x125')](db[_0x6166('0x96')],{'as':_0x6166('0x96'),'foreignKey':'VariableId'});db[_0x6166('0xc4')][_0x6166('0x117')](db[_0x6166('0x1cb')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1cb')][_0x6166('0x117')](db['ServicenowField'],{'as':_0x6166('0x1c1'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0x1cb')][_0x6166('0x117')](db['ServicenowField'],{'as':_0x6166('0x1ba'),'foreignKey':'DescriptionId'});db[_0x6166('0x1cb')][_0x6166('0x117')](db[_0x6166('0x1cc')],{'as':'Fields','foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1cb')]['belongsTo'](db[_0x6166('0xc4')],{'as':_0x6166('0x16b'),'foreignKey':'AccountId'});db[_0x6166('0x1cc')][_0x6166('0x117')](db[_0x6166('0x1cc')],{'as':_0x6166('0x1bb'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0x1cc')][_0x6166('0x117')](db['ServicenowField'],{'as':_0x6166('0x1bd'),'foreignKey':'DescriptionId'});db[_0x6166('0x1cc')][_0x6166('0x117')](db[_0x6166('0x1cc')],{'as':'Field','foreignKey':'FieldId'});db[_0x6166('0x1cc')][_0x6166('0x125')](db['Variable'],{'as':_0x6166('0x96'),'foreignKey':_0x6166('0x1c0')});db[_0x6166('0x1cd')][_0x6166('0x117')](db[_0x6166('0xc9')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db['Dynamics365Configuration'][_0x6166('0x117')](db[_0x6166('0x1ce')],{'as':_0x6166('0x1c1'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x6166('0xc9')][_0x6166('0x117')](db[_0x6166('0x1ce')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x6166('0xc9')][_0x6166('0x117')](db['Dynamics365Field'],{'as':_0x6166('0x1b6'),'onDelete':'cascade','foreignKey':_0x6166('0x1bf')});db['Dynamics365Configuration'][_0x6166('0x125')](db[_0x6166('0x1cd')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0x1ce')]['hasMany'](db[_0x6166('0x1ce')],{'as':_0x6166('0x1bb'),'foreignKey':_0x6166('0x1bc')});db['Dynamics365Field'][_0x6166('0x117')](db[_0x6166('0x1ce')],{'as':'Description','foreignKey':_0x6166('0x1be')});db[_0x6166('0x1ce')][_0x6166('0x117')](db[_0x6166('0x1ce')],{'as':'Field','foreignKey':_0x6166('0x1bf')});db[_0x6166('0x1ce')][_0x6166('0x125')](db[_0x6166('0x96')],{'as':'Variable','foreignKey':_0x6166('0x1c0')});db[_0x6166('0xcc')][_0x6166('0x117')](db[_0x6166('0xce')],{'as':_0x6166('0x1b9'),'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0xce')][_0x6166('0x117')](db[_0x6166('0xd0')],{'as':_0x6166('0x1c1'),'foreignKey':_0x6166('0x1bc')});db[_0x6166('0xce')][_0x6166('0x117')](db[_0x6166('0xd0')],{'as':_0x6166('0x1ba'),'foreignKey':_0x6166('0x1be')});db[_0x6166('0xce')]['hasMany'](db[_0x6166('0xd0')],{'as':'Fields','foreignKey':_0x6166('0x1bf')});db[_0x6166('0xce')][_0x6166('0x125')](db[_0x6166('0xcc')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x1c2')});db[_0x6166('0xd0')][_0x6166('0x117')](db['FreshsalesField'],{'as':'Subject','foreignKey':_0x6166('0x1bc')});db[_0x6166('0xd0')][_0x6166('0x117')](db['FreshsalesField'],{'as':'Description','foreignKey':_0x6166('0x1be')});db[_0x6166('0xd0')][_0x6166('0x117')](db[_0x6166('0xd0')],{'as':_0x6166('0x1c6'),'foreignKey':_0x6166('0x1bf')});db[_0x6166('0xd0')][_0x6166('0x125')](db['Variable'],{'as':_0x6166('0x96'),'foreignKey':_0x6166('0x1c0')});db['ChatQueueReport']['belongsTo'](db['ChatWebsite'],{});db[_0x6166('0xd3')][_0x6166('0x125')](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':_0x6166('0x165')});db[_0x6166('0xd3')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':'Contact','foreignKey':_0x6166('0x15a')});db[_0x6166('0xd3')]['belongsTo'](db[_0x6166('0x6b')],{});db[_0x6166('0xd3')][_0x6166('0x125')](db[_0x6166('0x6c')],{});db[_0x6166('0xd3')]['belongsTo'](db[_0x6166('0x114')],{});db[_0x6166('0xd3')][_0x6166('0x125')](db['ChatQueue'],{});db['ChatInternalMessage']['belongsTo'](db[_0x6166('0x114')],{'onDelete':'cascade','foreignKey':'FromId'});db[_0x6166('0xd5')][_0x6166('0x125')](db['User'],{'onDelete':_0x6166('0x115'),'foreignKey':_0x6166('0x1cf')});db[_0x6166('0xdb')][_0x6166('0x117')](db[_0x6166('0xd9')],{'foreignKey':_0x6166('0x1d0'),'onDelete':'cascade'});db['JscriptySessionReport']['hasMany'](db['JscriptyAnswerReport'],{'foreignKey':_0x6166('0x1d0'),'onDelete':_0x6166('0x115')});db[_0x6166('0xdc')][_0x6166('0x125')](db[_0x6166('0x5a')],{});db['SmsQueueReport'][_0x6166('0x125')](db['CmList'],{'as':'List','foreignKey':_0x6166('0x165')});db[_0x6166('0xdc')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':_0x6166('0x15a')});db[_0x6166('0xdc')][_0x6166('0x125')](db[_0x6166('0x5d')],{});db[_0x6166('0xdc')][_0x6166('0x125')](db[_0x6166('0x184')],{});db['SmsQueueReport'][_0x6166('0x125')](db[_0x6166('0x114')],{});db[_0x6166('0xdc')][_0x6166('0x125')](db[_0x6166('0x60')],{});db[_0x6166('0xe2')][_0x6166('0x117')](db['JscriptySessionReport'],{'foreignKey':_0x6166('0x1d1')});db[_0x6166('0xe2')][_0x6166('0x117')](db[_0x6166('0xd9')],{'foreignKey':_0x6166('0x1d1')});db[_0x6166('0xe2')][_0x6166('0x117')](db[_0x6166('0xd7')],{'foreignKey':_0x6166('0x1d1')});db[_0x6166('0x141')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x16f'),'through':'user_has_square_projects'});db[_0x6166('0xea')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':'user_has_teams'});db[_0x6166('0xea')]['belongsToMany'](db[_0x6166('0x1c')],{'through':_0x6166('0x10e'),'as':_0x6166('0x1d2')});db[_0x6166('0xea')][_0x6166('0x127')](db[_0x6166('0x44')],{'through':_0x6166('0x168'),'as':_0x6166('0x136')});db['Team'][_0x6166('0x127')](db['ChatQueue'],{'through':'team_has_chat_queues','as':_0x6166('0x1d3')});db[_0x6166('0xea')]['belongsToMany'](db[_0x6166('0x57')],{'through':'team_has_fax_queues','as':_0x6166('0x137')});db[_0x6166('0xea')][_0x6166('0x127')](db[_0x6166('0x60')],{'through':_0x6166('0x187'),'as':_0x6166('0x138')});db['Team'][_0x6166('0x127')](db[_0x6166('0x67')],{'through':'team_has_openchannel_queues','as':_0x6166('0x139')});db['Team'][_0x6166('0x127')](db[_0x6166('0x13a')],{'through':_0x6166('0x1d4'),'as':'WhatsappQueues'});db[_0x6166('0xea')][_0x6166('0x127')](db[_0x6166('0x134')],{'through':'TeamVoicePrefix','as':_0x6166('0x135')});db[_0x6166('0x19d')][_0x6166('0x117')](db[_0x6166('0x75')],{'as':_0x6166('0x148'),'foreignKey':'CampaignId'});db[_0x6166('0x19d')][_0x6166('0x117')](db[_0x6166('0x11a')],{'as':'HopperFinals','foreignKey':'CampaignId'});db[_0x6166('0x19d')]['hasMany'](db[_0x6166('0x7a')],{'as':'HopperHistories','foreignKey':'CampaignId'});db['Campaign'][_0x6166('0x117')](db[_0x6166('0x77')],{'as':'HopperBlacks','foreignKey':_0x6166('0x1a0')});db[_0x6166('0x19d')][_0x6166('0x125')](db[_0x6166('0x2d')],{'as':'Trunk','foreignKey':'TrunkId'});db['Campaign'][_0x6166('0x125')](db[_0x6166('0x2d')],{'as':_0x6166('0x14c'),'foreignKey':_0x6166('0x14d')});db[_0x6166('0x19d')]['belongsTo'](db[_0x6166('0x87')],{'as':'Interval','foreignKey':_0x6166('0x14e')});db[_0x6166('0x19d')][_0x6166('0x125')](db[_0x6166('0x141')],{'as':'SquareProject','foreignKey':_0x6166('0x1d5')});db[_0x6166('0x19d')][_0x6166('0x127')](db[_0x6166('0xfc')],{'as':_0x6166('0x1d6'),'through':_0x6166('0x1d7')});db[_0x6166('0x19d')]['belongsToMany'](db['CmList'],{'as':_0x6166('0x1d8'),'through':_0x6166('0x1d9')});db[_0x6166('0xf0')]['belongsTo'](db[_0x6166('0x172')],{'as':_0x6166('0x172'),'foreignKey':_0x6166('0x196')});db[_0x6166('0xf4')]['belongsTo'](db[_0x6166('0x163')],{});db[_0x6166('0xf4')]['belongsTo'](db['MailInteraction'],{});db[_0x6166('0xf4')][_0x6166('0x125')](db[_0x6166('0x43')],{'foreignKey':_0x6166('0x1da'),'as':'FromAccount'});db['MailTransferReport'][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1db'),'as':_0x6166('0x1dc')});db[_0x6166('0xf4')][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':'ToUserId','as':_0x6166('0x1dd')});db[_0x6166('0xf4')]['belongsTo'](db[_0x6166('0x44')],{'foreignKey':_0x6166('0x1de'),'as':_0x6166('0x1df')});db[_0x6166('0xf4')][_0x6166('0x125')](db[_0x6166('0x43')],{'foreignKey':_0x6166('0x1e0'),'as':_0x6166('0x1e1')});db['ChatTransferReport'][_0x6166('0x125')](db[_0x6166('0x6c')],{});db[_0x6166('0x1e2')][_0x6166('0x125')](db['ChatInteraction'],{});db[_0x6166('0x1e2')]['belongsTo'](db[_0x6166('0x13b')],{'foreignKey':_0x6166('0x1e3'),'as':_0x6166('0x1e4')});db['ChatTransferReport'][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1db'),'as':_0x6166('0x1dc')});db[_0x6166('0x1e2')]['belongsTo'](db['User'],{'foreignKey':_0x6166('0x1e5'),'as':_0x6166('0x1dd')});db[_0x6166('0x1e2')][_0x6166('0x125')](db[_0x6166('0x6f')],{'foreignKey':_0x6166('0x1e6'),'as':_0x6166('0x1df')});db['ChatTransferReport'][_0x6166('0x125')](db[_0x6166('0x13b')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db['FaxTransferReport']['belongsTo'](db['FaxMessage'],{});db[_0x6166('0xf6')][_0x6166('0x125')](db[_0x6166('0x54')],{});db[_0x6166('0xf6')][_0x6166('0x125')](db[_0x6166('0x51')],{'foreignKey':_0x6166('0x1e7'),'as':_0x6166('0x1e4')});db[_0x6166('0xf6')]['belongsTo'](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1db'),'as':_0x6166('0x1dc')});db[_0x6166('0xf6')][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':'ToUserId','as':_0x6166('0x1dd')});db['FaxTransferReport'][_0x6166('0x125')](db[_0x6166('0x57')],{'foreignKey':_0x6166('0x1e8'),'as':'ToQueue'});db[_0x6166('0xf6')][_0x6166('0x125')](db['FaxAccount'],{'foreignKey':_0x6166('0x1e9'),'as':_0x6166('0x1e1')});db['OpenchannelTransferReport'][_0x6166('0x125')](db[_0x6166('0x66')],{});db[_0x6166('0xf8')][_0x6166('0x125')](db[_0x6166('0x11d')],{});db['OpenchannelTransferReport'][_0x6166('0x125')](db[_0x6166('0x62')],{'foreignKey':_0x6166('0x1ea'),'as':_0x6166('0x1e4')});db[_0x6166('0xf8')][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1db'),'as':_0x6166('0x1dc')});db[_0x6166('0xf8')][_0x6166('0x125')](db['User'],{'foreignKey':'ToUserId','as':_0x6166('0x1dd')});db[_0x6166('0xf8')][_0x6166('0x125')](db['OpenchannelQueue'],{'foreignKey':'ToOpenchannelQueueId','as':_0x6166('0x1df')});db[_0x6166('0xf8')][_0x6166('0x125')](db[_0x6166('0x62')],{'foreignKey':_0x6166('0x1eb'),'as':_0x6166('0x1e1')});db[_0x6166('0xfa')][_0x6166('0x125')](db[_0x6166('0x184')],{});db[_0x6166('0xfa')][_0x6166('0x125')](db['SmsInteraction'],{});db['SmsTransferReport']['belongsTo'](db[_0x6166('0x5a')],{'foreignKey':'FromSmsAccountId','as':'FromAccount'});db[_0x6166('0xfa')][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1db'),'as':_0x6166('0x1dc')});db['SmsTransferReport'][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1e5'),'as':_0x6166('0x1dd')});db[_0x6166('0xfa')][_0x6166('0x125')](db[_0x6166('0x60')],{'foreignKey':'ToSmsQueueId','as':_0x6166('0x1df')});db[_0x6166('0xfa')][_0x6166('0x125')](db['SmsAccount'],{'foreignKey':_0x6166('0x1ec'),'as':'ToAccount'});db[_0x6166('0xfc')][_0x6166('0x117')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x6166('0x165'),'onDelete':'cascade'});db[_0x6166('0xfc')][_0x6166('0x117')](db[_0x6166('0x7c')],{'as':'CustomFields','foreignKey':_0x6166('0x165')});db[_0x6166('0xfc')][_0x6166('0x117')](db[_0x6166('0x73')],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x6166('0x165')});db[_0x6166('0xfc')][_0x6166('0x117')](db[_0x6166('0x11a')],{'as':'HopperFinals','foreignKey':'ListId'});db[_0x6166('0xfc')]['hasMany'](db[_0x6166('0x7a')],{'as':_0x6166('0x1ed'),'foreignKey':_0x6166('0x165')});db[_0x6166('0xfc')][_0x6166('0x117')](db['ReportAgentPreview'],{'as':_0x6166('0x11c'),'foreignKey':'ListId'});db[_0x6166('0xfc')][_0x6166('0x127')](db[_0x6166('0x1c')],{'as':_0x6166('0x1ee'),'through':_0x6166('0x1ef')});db['CmList'][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':_0x6166('0x12d')});db[_0x6166('0x134')][_0x6166('0x117')](db[_0x6166('0x18')],{'as':'Extensions','onDelete':_0x6166('0x115')});db['VoicePrefix'][_0x6166('0x127')](db[_0x6166('0x114')],{'as':'Agents','through':'UserVoicePrefix'});db['VoicePrefix']['belongsToMany'](db['Team'],{'through':_0x6166('0x110'),'as':_0x6166('0x169')});db['UserProfile'][_0x6166('0x117')](db['User'],{'as':_0x6166('0x16f'),'foreignKey':'userProfileId'});db[_0x6166('0x126')]['hasMany'](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0x6166('0x1f0'),'onDelete':_0x6166('0x115')});db[_0x6166('0x100')]['hasMany'](db['UserProfileResource'],{'as':_0x6166('0x1f1'),'foreignKey':_0x6166('0x1f2'),'onDelete':_0x6166('0x115')});db[_0x6166('0x102')][_0x6166('0x117')](db[_0x6166('0x83')],{'as':_0x6166('0x161'),'foreignKey':'WhatsappAccountId','onDelete':_0x6166('0x115')});db[_0x6166('0x102')][_0x6166('0x117')](db[_0x6166('0x81')],{'as':_0x6166('0x162'),'foreignKey':_0x6166('0x1f3')});db[_0x6166('0x102')][_0x6166('0x117')](db[_0x6166('0x107')],{'as':_0x6166('0x164'),'foreignKey':_0x6166('0x1f3')});db[_0x6166('0x102')][_0x6166('0x117')](db[_0x6166('0x121')],{'as':_0x6166('0x176')});db[_0x6166('0x102')][_0x6166('0x117')](db[_0x6166('0x104')],{'as':_0x6166('0x145')});db[_0x6166('0x102')]['belongsTo'](db['CmList'],{'as':_0x6166('0x173'),'foreignKey':_0x6166('0x165')});db[_0x6166('0x102')][_0x6166('0x125')](db[_0x6166('0x89')],{'as':_0x6166('0x14f'),'foreignKey':_0x6166('0x150')});db[_0x6166('0x102')][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':'user_has_whatsapp_accounts'});db[_0x6166('0x104')][_0x6166('0x125')](db['User'],{'onDelete':_0x6166('0x15d')});db['WhatsappApplication'][_0x6166('0x125')](db[_0x6166('0x13a')],{'onDelete':_0x6166('0x15d')});db[_0x6166('0x104')][_0x6166('0x125')](db[_0x6166('0x102')],{'onDelete':_0x6166('0x15d')});db['WhatsappApplication']['belongsTo'](db[_0x6166('0x87')],{'onDelete':_0x6166('0x15d'),'foreignKey':_0x6166('0x14e')});db[_0x6166('0x104')][_0x6166('0x125')](db[_0x6166('0x16c')],{'onDelete':_0x6166('0x15d'),'foreignKey':_0x6166('0x177')});db[_0x6166('0x121')]['hasMany'](db[_0x6166('0x107')],{'as':_0x6166('0x164'),'onDelete':'cascade','foreignKey':_0x6166('0x1f4')});db[_0x6166('0x121')][_0x6166('0x125')](db[_0x6166('0x102')],{'as':_0x6166('0x16b'),'foreignKey':_0x6166('0x1f3')});db[_0x6166('0x121')][_0x6166('0x125')](db[_0x6166('0x73')],{'as':_0x6166('0x159'),'foreignKey':'ContactId'});db['WhatsappInteraction'][_0x6166('0x125')](db['User'],{'as':_0x6166('0x179'),'foreignKey':_0x6166('0x116')});db[_0x6166('0x121')]['belongsToMany'](db[_0x6166('0x16c')],{'through':'whatsapp_interaction_has_tags','as':_0x6166('0x16d')});db[_0x6166('0x121')]['belongsToMany'](db[_0x6166('0x16c')],{'through':_0x6166('0x1af'),'as':_0x6166('0x17b')});db['WhatsappInteraction'][_0x6166('0x127')](db[_0x6166('0x114')],{'as':_0x6166('0x16f'),'through':_0x6166('0x133'),'foreignKey':'WhatsappInteractionId'});db[_0x6166('0x107')][_0x6166('0x125')](db[_0x6166('0x114')],{'as':'User'});db[_0x6166('0x107')]['belongsTo'](db[_0x6166('0x73')],{'onDelete':'cascade','as':_0x6166('0x159')});db[_0x6166('0x107')]['belongsTo'](db[_0x6166('0x121')],{'onDelete':_0x6166('0x115'),'as':_0x6166('0x185'),'foreignKey':_0x6166('0x1f4')});db[_0x6166('0x107')][_0x6166('0x125')](db[_0x6166('0x102')],{'as':_0x6166('0x16b'),'foreignKey':'WhatsappAccountId'});db[_0x6166('0x108')]['belongsTo'](db[_0x6166('0x102')],{});db['WhatsappQueueReport'][_0x6166('0x125')](db[_0x6166('0xfc')],{'as':_0x6166('0x173'),'foreignKey':_0x6166('0x165')});db['WhatsappQueueReport'][_0x6166('0x125')](db[_0x6166('0x73')],{'as':'Contact','foreignKey':_0x6166('0x15a')});db['WhatsappQueueReport']['belongsTo'](db[_0x6166('0x121')],{});db[_0x6166('0x108')][_0x6166('0x125')](db['WhatsappQueue'],{});db['WhatsappQueueReport'][_0x6166('0x125')](db[_0x6166('0x107')],{});db[_0x6166('0x108')]['belongsTo'](db['User'],{});db[_0x6166('0x109')]['belongsTo'](db[_0x6166('0x107')],{});db['WhatsappTransferReport']['belongsTo'](db['WhatsappInteraction'],{});db[_0x6166('0x109')][_0x6166('0x125')](db[_0x6166('0x102')],{'foreignKey':_0x6166('0x1f5'),'as':'FromAccount'});db[_0x6166('0x109')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':'ToWhatsappAccountId','as':'ToAccount'});db[_0x6166('0x109')][_0x6166('0x125')](db['WhatsappQueue'],{'foreignKey':'ToQueueId','as':_0x6166('0x1df')});db[_0x6166('0x109')][_0x6166('0x125')](db[_0x6166('0x114')],{'foreignKey':_0x6166('0x1db'),'as':'FromAgent'});db['WhatsappTransferReport']['belongsTo'](db[_0x6166('0x114')],{'foreignKey':'ToUserId','as':_0x6166('0x1dd')});db[_0x6166('0x13a')]['belongsToMany'](db[_0x6166('0x114')],{'as':_0x6166('0x151'),'through':'UserWhatsappQueue','foreignKey':_0x6166('0x1f6')});db[_0x6166('0x13a')]['belongsToMany'](db[_0x6166('0xea')],{'through':_0x6166('0x1d4'),'as':_0x6166('0x169')});db['CloudProvider'][_0x6166('0x15f')](db['MailServerIn'],{'as':_0x6166('0x15e'),'onDelete':_0x6166('0x15d')});db[_0x6166('0x10c')]['hasOne'](db['MailServerOut'],{'as':_0x6166('0x160'),'onDelete':_0x6166('0x15d')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index 43a93e7..dd734ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbda9=['logger','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','statusCode','responseTime','user','name','device','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','url','role','other','agent_id','agent_name','test','./api/user','/api/voice/chanspy','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','./api/voiceQueueReport','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/queues','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/intervals','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptySessionReport','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','/api/license','./api/campaign','/api/migrations','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','./api/realtime','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/rpc','/api/version','/api/system','./api/system','./api/pm2','/api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','snippet','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','appPath','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','clientId','clientSecret','securityToken','code','accessKey','token','channelSecret','accessToken','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','isArray','length','@@{','replace','includes','lodash','path','express','express-winston','util','./errors','./config/logger','api','auth','./safe-template','safeTemplate','default','use'];(function(_0x8d8752,_0x44d46f){var _0x5dfd1d=function(_0x2818a9){while(--_0x2818a9){_0x8d8752['push'](_0x8d8752['shift']());}};_0x5dfd1d(++_0x44d46f);}(_0xbda9,0x146));var _0x9bda=function(_0x306902,_0x15482c){_0x306902=_0x306902-0x0;var _0x3d6f3c=_0xbda9[_0x306902];return _0x3d6f3c;};'use strict';var _=require(_0x9bda('0x0'));var path=require(_0x9bda('0x1'));var express=require(_0x9bda('0x2'));var ewinston=require(_0x9bda('0x3'));var util=require(_0x9bda('0x4'));var errors=require(_0x9bda('0x5'));var config=require('./config/environment');var logger=require(_0x9bda('0x6'))(_0x9bda('0x7'));var authLogger=require('./config/logger')(_0x9bda('0x8'));var safeTemplate=require(_0x9bda('0x9'))[_0x9bda('0xa')];exports[_0x9bda('0xb')]=function(_0x1601da){_0x1601da[_0x9bda('0xc')](ewinston[_0x9bda('0xd')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x55b48e,_0x173d6c){var _0x1a8094='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0x9bda('0xe')](_0x55b48e[_0x9bda('0xf')])){_0x1a8094+=_0x9bda('0x10');var _0xe1e7b5=_0x55b48e[_0x9bda('0xf')];maskSensitiveData(_0xe1e7b5);}return safeTemplate(util[_0x9bda('0x11')](_0x1a8094,_0x55b48e[_0x9bda('0x12')],_0x55b48e[_0x9bda('0x13')]['x-forwarded-for']?_0x55b48e[_0x9bda('0x13')][_0x9bda('0x14')]:_0x55b48e[_0x9bda('0x15')][_0x9bda('0x16')]||_0x55b48e['ip'],_0x55b48e['url'],_0x173d6c[_0x9bda('0x17')],_0x173d6c[_0x9bda('0x18')],_0x55b48e[_0x9bda('0x19')]?_0x55b48e['user']['id']:null,_0x55b48e['user']?_0x55b48e['user'][_0x9bda('0x1a')]:null,_0x55b48e[_0x9bda('0x19')]?_0x55b48e['user']['role']:null,_0xe1e7b5?util['inspect'](_0xe1e7b5,![],null):''));}}));_0x1601da['use'](ewinston[_0x9bda('0xd')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x5c1afc,_0xcd2d67){var _0x5a383b='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x5c1afc[_0x9bda('0xf')]&&_0x5c1afc[_0x9bda('0xf')][_0x9bda('0x1b')]&&_0x5c1afc['body']['agent_id']){_0x5a383b=_0x9bda('0x1c');}return util[_0x9bda('0x11')](_0x5a383b,_0x5c1afc[_0x9bda('0x12')],_0x5c1afc[_0x9bda('0x13')][_0x9bda('0x14')]?_0x5c1afc[_0x9bda('0x13')][_0x9bda('0x14')]:_0x5c1afc[_0x9bda('0x15')][_0x9bda('0x16')]||_0x5c1afc['ip'],_0x5c1afc[_0x9bda('0x1d')],_0xcd2d67[_0x9bda('0x17')],_0xcd2d67[_0x9bda('0x18')],_0x5c1afc[_0x9bda('0x19')]?_0x5c1afc[_0x9bda('0x19')]['id']:null,_0x5c1afc[_0x9bda('0x19')]?_0x5c1afc[_0x9bda('0x19')]['name']:null,_0x5c1afc['user']?_0x5c1afc['user'][_0x9bda('0x1e')]:null,_0x5c1afc[_0x9bda('0xf')]&&_0x5c1afc[_0x9bda('0xf')][_0x9bda('0x1b')]?_0x5c1afc['body']['device']:_0x9bda('0x1f'),_0x5c1afc[_0x9bda('0xf')]&&_0x5c1afc[_0x9bda('0xf')][_0x9bda('0x20')]?_0x5c1afc[_0x9bda('0xf')][_0x9bda('0x20')]:'',_0x5c1afc[_0x9bda('0xf')]&&_0x5c1afc['body']['agent_name']?_0x5c1afc[_0x9bda('0xf')][_0x9bda('0x21')]:'');},'ignoreRoute':function(_0x1f394e){var _0x5dd234=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x5dd234[_0x9bda('0x22')](_0x1f394e[_0x9bda('0x1d')]);}}));_0x1601da[_0x9bda('0xc')]('/api/users',require(_0x9bda('0x23')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x24'),require(_0x9bda('0x25')));_0x1601da[_0x9bda('0xc')]('/api/voice/contexts',require(_0x9bda('0x26')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x27'),require(_0x9bda('0x28')));_0x1601da['use']('/api/voice/mohs',require(_0x9bda('0x29')));_0x1601da[_0x9bda('0xc')]('/api/voice/queues',require('./api/voiceQueue'));_0x1601da[_0x9bda('0xc')]('/api/voice/recordings',require(_0x9bda('0x2a')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x2b'),require(_0x9bda('0x2c')));_0x1601da['use'](_0x9bda('0x2d'),require(_0x9bda('0x2e')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x2f'),require(_0x9bda('0x30')));_0x1601da['use']('/api/voice/calls/reports',require(_0x9bda('0x31')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x32'),require('./api/voiceDialReport'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x33'),require(_0x9bda('0x34')));_0x1601da['use']('/api/voice/queues/reports',require(_0x9bda('0x35')));_0x1601da['use']('/api/members/reports',require(_0x9bda('0x36')));_0x1601da['use'](_0x9bda('0x37'),require(_0x9bda('0x38')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x39'),require(_0x9bda('0x3a')));_0x1601da['use']('/api/mail/out_servers',require(_0x9bda('0x3b')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x3c'),require(_0x9bda('0x3d')));_0x1601da[_0x9bda('0xc')]('/api/mail/queues',require(_0x9bda('0x3e')));_0x1601da['use'](_0x9bda('0x3f'),require('./api/mailSubstatus'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x40'),require(_0x9bda('0x41')));_0x1601da['use'](_0x9bda('0x42'),require(_0x9bda('0x43')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x44'),require(_0x9bda('0x45')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x46'),require(_0x9bda('0x47')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x48'),require(_0x9bda('0x49')));_0x1601da['use'](_0x9bda('0x4a'),require(_0x9bda('0x4b')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x4c'),require(_0x9bda('0x4d')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x4e'),require(_0x9bda('0x4f')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x50'),require(_0x9bda('0x51')));_0x1601da['use']('/api/fax/messages',require(_0x9bda('0x52')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x53'),require(_0x9bda('0x54')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x55'),require(_0x9bda('0x56')));_0x1601da['use'](_0x9bda('0x57'),require('./api/smsAccount'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x58'),require(_0x9bda('0x59')));_0x1601da[_0x9bda('0xc')]('/api/sms/interactions',require(_0x9bda('0x5a')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x5b'),require(_0x9bda('0x5c')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x5d'),require('./api/smsQueue'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x5e'),require(_0x9bda('0x5f')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x60'),require(_0x9bda('0x61')));_0x1601da['use'](_0x9bda('0x62'),require(_0x9bda('0x63')));_0x1601da['use'](_0x9bda('0x64'),require(_0x9bda('0x65')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x66'),require(_0x9bda('0x67')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x68'),require('./api/chatWebsite'));_0x1601da['use']('/api/openchannel/reports/queue',require(_0x9bda('0x69')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x6a'),require(_0x9bda('0x6b')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x6c'),require('./api/chatInteraction'));_0x1601da['use'](_0x9bda('0x6d'),require(_0x9bda('0x6e')));_0x1601da[_0x9bda('0xc')]('/api/chat/offline_messages',require('./api/chatOfflineMessage'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x6f'),require('./api/chatQueue'));_0x1601da[_0x9bda('0xc')]('/api/chat/groups',require('./api/chatGroup'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x70'),require(_0x9bda('0x71')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x72'),require(_0x9bda('0x73')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x74'),require(_0x9bda('0x75')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x76'),require(_0x9bda('0x77')));_0x1601da[_0x9bda('0xc')]('/api/cm/hopper_black',require(_0x9bda('0x78')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x79'),require(_0x9bda('0x7a')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x7b'),require(_0x9bda('0x7c')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x7d'),require(_0x9bda('0x7e')));_0x1601da[_0x9bda('0xc')]('/api/actions',require(_0x9bda('0x7f')));_0x1601da['use'](_0x9bda('0x80'),require(_0x9bda('0x81')));_0x1601da[_0x9bda('0xc')]('/api/canned_answers',require(_0x9bda('0x82')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x83'),require(_0x9bda('0x84')));_0x1601da[_0x9bda('0xc')]('/api/conditions',require('./api/condition'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x85'),require('./api/interval'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x86'),require(_0x9bda('0x87')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x88'),require(_0x9bda('0x89')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x8a'),require('./api/voiceQueuesLog'));_0x1601da[_0x9bda('0xc')]('/api/schedules',require(_0x9bda('0x8b')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x8c'),require(_0x9bda('0x8d')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x8e'),require('./api/tag'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x8f'),require(_0x9bda('0x90')));_0x1601da['use'](_0x9bda('0x91'),require('./api/trigger'));_0x1601da['use'](_0x9bda('0x92'),require(_0x9bda('0x93')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x94'),require('./api/integration'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x95'),require(_0x9bda('0x96')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x97'),require(_0x9bda('0x98')));_0x1601da['use'](_0x9bda('0x99'),require('./api/analyticDefaultReport'));_0x1601da['use'](_0x9bda('0x9a'),require(_0x9bda('0x9b')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x9c'),require(_0x9bda('0x9d')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x9e'),require('./api/analyticFieldReport'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x9f'),require('./api/analyticTreeReport'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xa0'),require('./api/intSalesforceAccount'));_0x1601da['use']('/api/integrations/salesforce/configurations',require(_0x9bda('0xa1')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xa2'),require('./api/intSalesforceField'));_0x1601da['use'](_0x9bda('0xa3'),require('./api/intSugarcrmAccount'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xa4'),require('./api/intSugarcrmConfiguration'));_0x1601da[_0x9bda('0xc')]('/api/integrations/sugarcrm/fields',require(_0x9bda('0xa5')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xa6'),require(_0x9bda('0xa7')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xa8'),require(_0x9bda('0xa9')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xaa'),require(_0x9bda('0xab')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xac'),require(_0x9bda('0xad')));_0x1601da[_0x9bda('0xc')]('/api/integrations/zoho/configurations',require(_0x9bda('0xae')));_0x1601da['use'](_0x9bda('0xaf'),require(_0x9bda('0xb0')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xb1'),require(_0x9bda('0xb2')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xb3'),require(_0x9bda('0xb4')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xb5'),require(_0x9bda('0xb6')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xb7'),require(_0x9bda('0xb8')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xb9'),require(_0x9bda('0xba')));_0x1601da['use'](_0x9bda('0xbb'),require(_0x9bda('0xbc')));_0x1601da['use'](_0x9bda('0xbd'),require('./api/intVtigerAccount'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xbe'),require(_0x9bda('0xbf')));_0x1601da[_0x9bda('0xc')]('/api/integrations/vtiger/fields',require(_0x9bda('0xc0')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xc1'),require(_0x9bda('0xc2')));_0x1601da[_0x9bda('0xc')]('/api/integrations/servicenow/configurations',require('./api/intServicenowConfiguration'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xc3'),require(_0x9bda('0xc4')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xc5'),require('./api/intDynamics365Account'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xc6'),require(_0x9bda('0xc7')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xc8'),require(_0x9bda('0xc9')));_0x1601da[_0x9bda('0xc')]('/api/integrations/freshsales/accounts',require(_0x9bda('0xca')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xcb'),require(_0x9bda('0xcc')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xcd'),require(_0x9bda('0xce')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xcf'),require(_0x9bda('0xd0')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xd1'),require(_0x9bda('0xd2')));_0x1601da['use'](_0x9bda('0xd3'),require(_0x9bda('0xd4')));_0x1601da[_0x9bda('0xc')]('/api/jscripty/answers/reports',require(_0x9bda('0xd5')));_0x1601da['use'](_0x9bda('0xd6'),require('./api/jscriptyQuestionReport'));_0x1601da[_0x9bda('0xc')]('/api/jscripty/sessions/reports',require(_0x9bda('0xd7')));_0x1601da['use']('/api/sms/reports/queue',require(_0x9bda('0xd8')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xd9'),require(_0x9bda('0xda')));_0x1601da['use'](_0x9bda('0xdb'),require(_0x9bda('0xdc')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xdd'),require(_0x9bda('0xde')));_0x1601da['use'](_0x9bda('0xdf'),require(_0x9bda('0xe0')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xe1'),require('./api/squareOdbc'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xe2'),require(_0x9bda('0xe3')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xe4'),require(_0x9bda('0xe5')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xe6'),require(_0x9bda('0xe7')));_0x1601da[_0x9bda('0xc')]('/api/teams',require(_0x9bda('0xe8')));_0x1601da['use'](_0x9bda('0xe9'),require('./api/license'));_0x1601da['use']('/api/campaigns',require(_0x9bda('0xea')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xeb'),require('./api/migration'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xec'),require(_0x9bda('0xed')));_0x1601da['use'](_0x9bda('0xee'),require(_0x9bda('0xef')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xf0'),require(_0x9bda('0xf1')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xf2'),require(_0x9bda('0xf3')));_0x1601da['use']('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xf4'),require(_0x9bda('0xf5')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xf6'),require(_0x9bda('0xf7')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xf8'),require(_0x9bda('0xf9')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xfa'),require('./api/voicePrefix'));_0x1601da[_0x9bda('0xc')](_0x9bda('0xfb'),require(_0x9bda('0xfc')));_0x1601da[_0x9bda('0xc')](_0x9bda('0xfd'),require(_0x9bda('0xfe')));_0x1601da['use']('/api/userProfile/resources',require(_0x9bda('0xff')));_0x1601da['use'](_0x9bda('0x100'),require(_0x9bda('0x101')));_0x1601da['use'](_0x9bda('0x102'),require('./api/whatsappAccount'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x103'),require(_0x9bda('0x104')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x105'),require(_0x9bda('0x106')));_0x1601da['use'](_0x9bda('0x107'),require(_0x9bda('0x108')));_0x1601da[_0x9bda('0xc')]('/api/whatsapp/reports/queue',require(_0x9bda('0x109')));_0x1601da['use'](_0x9bda('0x10a'),require(_0x9bda('0x10b')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x10c'),require('./api/whatsappQueue'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x10d'),require(_0x9bda('0x10e')));_0x1601da[_0x9bda('0xc')]('/api/realtime',require(_0x9bda('0x10f')));_0x1601da['use']('/api/auth/local',require(_0x9bda('0x110')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x111'),require(_0x9bda('0x112')));_0x1601da['use'](_0x9bda('0x113'),require(_0x9bda('0x114')));_0x1601da[_0x9bda('0xc')]('/api/jira',require('./api/jira'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x115'),require('./api/rpc'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x116'),require('./api/version'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x117'),require(_0x9bda('0x118')));_0x1601da['use']('/api/pm2',require(_0x9bda('0x119')));_0x1601da[_0x9bda('0xc')](_0x9bda('0x11a'),require('./api/webbar'));_0x1601da[_0x9bda('0xc')](_0x9bda('0x11b'),express[_0x9bda('0x11c')](path[_0x9bda('0x11d')](config[_0x9bda('0x11e')],_0x9bda('0x11b'))));_0x1601da[_0x9bda('0xc')]('/www',express['static'](path[_0x9bda('0x11d')](config[_0x9bda('0x11e')],_0x9bda('0x11f'))));_0x1601da[_0x9bda('0xc')](_0x9bda('0x120'),express['static'](path[_0x9bda('0x11d')](config['root'],_0x9bda('0x120'))));_0x1601da[_0x9bda('0xc')](_0x9bda('0x121'),express['static'](path[_0x9bda('0x11d')](config['root'],_0x9bda('0x122'),'3.0.0')));_0x1601da[_0x9bda('0xc')]('/plugins',express[_0x9bda('0x11c')](path[_0x9bda('0x11d')](config['root'],'/server/files/plugins')));_0x1601da[_0x9bda('0x123')](_0x9bda('0x124'))['get'](errors[0x194]);_0x1601da[_0x9bda('0x123')]('/*')[_0x9bda('0x125')](function(_0x4af34c,_0x4a54c7){_0x4a54c7[_0x9bda('0x126')](path['resolve'](_0x1601da[_0x9bda('0x125')](_0x9bda('0x127'))+_0x9bda('0x128')));});};var sensitiveFields=[_0x9bda('0x129'),_0x9bda('0x12a'),_0x9bda('0x12b'),_0x9bda('0x12c'),_0x9bda('0x12d'),_0x9bda('0x12e'),_0x9bda('0x12f'),_0x9bda('0x130'),_0x9bda('0x131'),_0x9bda('0x132'),'email',_0x9bda('0x133'),_0x9bda('0x134'),_0x9bda('0x135'),_0x9bda('0x136'),_0x9bda('0x137'),'tenantId',_0x9bda('0x138'),_0x9bda('0x139'),_0x9bda('0x13a'),'accessTokenSecret',_0x9bda('0x13b'),_0x9bda('0x13c'),_0x9bda('0x13d'),_0x9bda('0x13e'),_0x9bda('0x13f'),_0x9bda('0x140'),_0x9bda('0x141'),_0x9bda('0x142'),'clientEmail',_0x9bda('0x143'),_0x9bda('0x144'),_0x9bda('0x145'),'key',_0x9bda('0x19'),_0x9bda('0x146'),_0x9bda('0x147'),_0x9bda('0x148'),_0x9bda('0x149'),_0x9bda('0x14a'),_0x9bda('0x14b'),_0x9bda('0x14c')];function maskSensitiveData(_0x3e3c57){var _0x3e3b5c=/(?!^)[\s\S](?!$)/g;if(!_[_0x9bda('0x14d')](_0x3e3c57))return;for(var _0x229f2f in _0x3e3c57){if(_[_0x9bda('0x14e')](_0x3e3c57[_0x229f2f])){for(var _0x191c2e=0x0;_0x191c2e<_0x3e3c57[_0x229f2f][_0x9bda('0x14f')];_0x191c2e++){maskSensitiveData(_0x3e3c57[_0x229f2f][_0x191c2e]);}}else if(_['isPlainObject'](_0x3e3c57[_0x229f2f])){maskSensitiveData(_0x3e3c57[_0x229f2f]);}else if(_['isString'](_0x3e3c57[_0x229f2f])){_0x3e3c57[_0x229f2f]=_0x3e3c57[_0x229f2f]['replace'](/{{{/g,_0x9bda('0x150'))['replace'](/}}}/g,'}@@')[_0x9bda('0x151')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x9bda('0x152')](sensitiveFields,_0x229f2f)){_0x3e3c57[_0x229f2f]=_0x3e3c57[_0x229f2f][_0x9bda('0x151')](_0x3e3b5c,'*');}}}}
\ No newline at end of file
+var _0xe585=['/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/cmList','/api/voice/prefixes','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','/api/webbar','/apidoc','static','join','root','/www','/demo','/snippet','snippet','3.0.0','/server/files/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','username','password','newPassword','lastName','phone','mobile','fax','clientId','securityToken','code','accessKey','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','isPlainObject','isArray','isString','replace','@@{','}@@','includes','lodash','express','util','./errors','./config/environment','./config/logger','api','auth','safeTemplate','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','\x20body=%s','body','format','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','user','name','role','inspect','device','agent_id','headers','other','agent_name','test','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','/api/voice/calls/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/members/reports','./api/memberReport','./api/trunk','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelQueue','/api/chat/applications','./api/chatApplication','./api/chatInteraction','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/intervals','./api/interval','/api/pauses','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration'];(function(_0x511d2b,_0x247485){var _0x4a24d8=function(_0x4573ab){while(--_0x4573ab){_0x511d2b['push'](_0x511d2b['shift']());}};_0x4a24d8(++_0x247485);}(_0xe585,0x9a));var _0x5e58=function(_0x2653ad,_0x32234b){_0x2653ad=_0x2653ad-0x0;var _0x3a816d=_0xe585[_0x2653ad];return _0x3a816d;};'use strict';var _=require(_0x5e58('0x0'));var path=require('path');var express=require(_0x5e58('0x1'));var ewinston=require('express-winston');var util=require(_0x5e58('0x2'));var errors=require(_0x5e58('0x3'));var config=require(_0x5e58('0x4'));var logger=require(_0x5e58('0x5'))(_0x5e58('0x6'));var authLogger=require(_0x5e58('0x5'))(_0x5e58('0x7'));var safeTemplate=require('./safe-template')[_0x5e58('0x8')];exports[_0x5e58('0x9')]=function(_0x351ad4){_0x351ad4[_0x5e58('0xa')](ewinston[_0x5e58('0xb')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x587424,_0x244ee5){var _0x114f20=_0x5e58('0xc');if(!_['isEmpty'](_0x587424['body'])){_0x114f20+=_0x5e58('0xd');var _0x3da523=_0x587424[_0x5e58('0xe')];maskSensitiveData(_0x3da523);}return safeTemplate(util[_0x5e58('0xf')](_0x114f20,_0x587424['method'],_0x587424['headers'][_0x5e58('0x10')]?_0x587424['headers'][_0x5e58('0x10')]:_0x587424[_0x5e58('0x11')][_0x5e58('0x12')]||_0x587424['ip'],_0x587424[_0x5e58('0x13')],_0x244ee5[_0x5e58('0x14')],_0x244ee5[_0x5e58('0x15')],_0x587424[_0x5e58('0x16')]?_0x587424['user']['id']:null,_0x587424[_0x5e58('0x16')]?_0x587424[_0x5e58('0x16')][_0x5e58('0x17')]:null,_0x587424[_0x5e58('0x16')]?_0x587424['user'][_0x5e58('0x18')]:null,_0x3da523?util[_0x5e58('0x19')](_0x3da523,![],null):''));}}));_0x351ad4['use'](ewinston[_0x5e58('0xb')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x57a852,_0xeaed75){var _0xdade30='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x57a852[_0x5e58('0xe')]&&_0x57a852['body'][_0x5e58('0x1a')]&&_0x57a852['body'][_0x5e58('0x1b')]){_0xdade30='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x5e58('0xf')](_0xdade30,_0x57a852['method'],_0x57a852[_0x5e58('0x1c')]['x-forwarded-for']?_0x57a852[_0x5e58('0x1c')][_0x5e58('0x10')]:_0x57a852[_0x5e58('0x11')][_0x5e58('0x12')]||_0x57a852['ip'],_0x57a852['url'],_0xeaed75[_0x5e58('0x14')],_0xeaed75[_0x5e58('0x15')],_0x57a852['user']?_0x57a852[_0x5e58('0x16')]['id']:null,_0x57a852[_0x5e58('0x16')]?_0x57a852[_0x5e58('0x16')]['name']:null,_0x57a852[_0x5e58('0x16')]?_0x57a852[_0x5e58('0x16')]['role']:null,_0x57a852[_0x5e58('0xe')]&&_0x57a852[_0x5e58('0xe')]['device']?_0x57a852[_0x5e58('0xe')]['device']:_0x5e58('0x1d'),_0x57a852[_0x5e58('0xe')]&&_0x57a852[_0x5e58('0xe')][_0x5e58('0x1b')]?_0x57a852['body'][_0x5e58('0x1b')]:'',_0x57a852[_0x5e58('0xe')]&&_0x57a852['body'][_0x5e58('0x1e')]?_0x57a852[_0x5e58('0xe')][_0x5e58('0x1e')]:'');},'ignoreRoute':function(_0xc19b69){var _0x2401b8=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x2401b8[_0x5e58('0x1f')](_0xc19b69[_0x5e58('0x13')]);}}));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x20'),require(_0x5e58('0x21')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x22'),require(_0x5e58('0x23')));_0x351ad4['use'](_0x5e58('0x24'),require(_0x5e58('0x25')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x26'),require(_0x5e58('0x27')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x28'),require(_0x5e58('0x29')));_0x351ad4['use'](_0x5e58('0x2a'),require(_0x5e58('0x2b')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x2c'),require('./api/voiceRecording'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x2d'),require(_0x5e58('0x2e')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x2f'),require('./api/voiceMail'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x30'),require('./api/voiceMailMessage'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x31'),require('./api/voiceCallReport'));_0x351ad4[_0x5e58('0xa')]('/api/voice/dials/reports',require('./api/voiceDialReport'));_0x351ad4['use'](_0x5e58('0x32'),require(_0x5e58('0x33')));_0x351ad4['use']('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x34'),require(_0x5e58('0x35')));_0x351ad4['use']('/api/trunks',require(_0x5e58('0x36')));_0x351ad4[_0x5e58('0xa')]('/api/voice/transfers/reports',require('./api/voiceTransferReport'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x37'),require(_0x5e58('0x38')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x39'),require(_0x5e58('0x3a')));_0x351ad4[_0x5e58('0xa')]('/api/mail/queues',require('./api/mailQueue'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x3b'),require(_0x5e58('0x3c')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x3d'),require(_0x5e58('0x3e')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x3f'),require(_0x5e58('0x40')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x41'),require(_0x5e58('0x42')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x43'),require(_0x5e58('0x44')));_0x351ad4['use'](_0x5e58('0x45'),require(_0x5e58('0x46')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x47'),require(_0x5e58('0x48')));_0x351ad4[_0x5e58('0xa')]('/api/fax/accounts',require('./api/faxAccount'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x49'),require(_0x5e58('0x4a')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x4b'),require(_0x5e58('0x4c')));_0x351ad4['use'](_0x5e58('0x4d'),require(_0x5e58('0x4e')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x4f'),require(_0x5e58('0x50')));_0x351ad4['use'](_0x5e58('0x51'),require(_0x5e58('0x52')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x53'),require(_0x5e58('0x54')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x55'),require('./api/smsApplication'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x56'),require(_0x5e58('0x57')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x58'),require(_0x5e58('0x59')));_0x351ad4['use']('/api/sms/queues',require(_0x5e58('0x5a')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x5b'),require(_0x5e58('0x5c')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x5d'),require('./api/openchannelApplication'));_0x351ad4['use'](_0x5e58('0x5e'),require(_0x5e58('0x5f')));_0x351ad4['use'](_0x5e58('0x60'),require('./api/openchannelMessage'));_0x351ad4[_0x5e58('0xa')]('/api/openchannel/queues',require(_0x5e58('0x61')));_0x351ad4[_0x5e58('0xa')]('/api/chat/websites',require('./api/chatWebsite'));_0x351ad4[_0x5e58('0xa')]('/api/openchannel/reports/queue',require('./api/openchannelQueueReport'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x62'),require(_0x5e58('0x63')));_0x351ad4['use']('/api/chat/interactions',require(_0x5e58('0x64')));_0x351ad4[_0x5e58('0xa')]('/api/chat/messages',require(_0x5e58('0x65')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x66'),require(_0x5e58('0x67')));_0x351ad4[_0x5e58('0xa')]('/api/chat/queues',require(_0x5e58('0x68')));_0x351ad4['use'](_0x5e58('0x69'),require('./api/chatGroup'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x6a'),require(_0x5e58('0x6b')));_0x351ad4[_0x5e58('0xa')]('/api/cm/companies',require('./api/cmCompany'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x6c'),require(_0x5e58('0x6d')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x6e'),require(_0x5e58('0x6f')));_0x351ad4['use'](_0x5e58('0x70'),require(_0x5e58('0x71')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x72'),require(_0x5e58('0x73')));_0x351ad4[_0x5e58('0xa')]('/api/cm/hopper_history',require(_0x5e58('0x74')));_0x351ad4['use'](_0x5e58('0x75'),require(_0x5e58('0x76')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x77'),require(_0x5e58('0x78')));_0x351ad4['use'](_0x5e58('0x79'),require(_0x5e58('0x7a')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x7b'),require(_0x5e58('0x7c')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x7d'),require(_0x5e58('0x7e')));_0x351ad4['use']('/api/conditions',require('./api/condition'));_0x351ad4['use'](_0x5e58('0x7f'),require(_0x5e58('0x80')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x81'),require('./api/pause'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x82'),require('./api/cdr'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x83'),require(_0x5e58('0x84')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x85'),require(_0x5e58('0x86')));_0x351ad4[_0x5e58('0xa')]('/api/sounds',require(_0x5e58('0x87')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x88'),require('./api/tag'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x89'),require(_0x5e58('0x8a')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x8b'),require(_0x5e58('0x8c')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x8d'),require('./api/variable'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x8e'),require(_0x5e58('0x8f')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x90'),require(_0x5e58('0x91')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x92'),require(_0x5e58('0x93')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x94'),require(_0x5e58('0x95')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x96'),require(_0x5e58('0x97')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x98'),require(_0x5e58('0x99')));_0x351ad4['use'](_0x5e58('0x9a'),require(_0x5e58('0x9b')));_0x351ad4['use'](_0x5e58('0x9c'),require(_0x5e58('0x9d')));_0x351ad4[_0x5e58('0xa')]('/api/integrations/salesforce/accounts',require(_0x5e58('0x9e')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x9f'),require('./api/intSalesforceConfiguration'));_0x351ad4[_0x5e58('0xa')]('/api/integrations/salesforce/fields',require(_0x5e58('0xa0')));_0x351ad4['use'](_0x5e58('0xa1'),require('./api/intSugarcrmAccount'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xa2'),require(_0x5e58('0xa3')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xa4'),require(_0x5e58('0xa5')));_0x351ad4[_0x5e58('0xa')]('/api/integrations/desk/accounts',require(_0x5e58('0xa6')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xa7'),require(_0x5e58('0xa8')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xa9'),require(_0x5e58('0xaa')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xab'),require(_0x5e58('0xac')));_0x351ad4['use']('/api/integrations/zoho/configurations',require(_0x5e58('0xad')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xae'),require('./api/intZohoField'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xaf'),require(_0x5e58('0xb0')));_0x351ad4['use'](_0x5e58('0xb1'),require(_0x5e58('0xb2')));_0x351ad4['use'](_0x5e58('0xb3'),require(_0x5e58('0xb4')));_0x351ad4[_0x5e58('0xa')]('/api/integrations/freshdesk/accounts',require(_0x5e58('0xb5')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xb6'),require('./api/intFreshdeskConfiguration'));_0x351ad4[_0x5e58('0xa')]('/api/integrations/freshdesk/fields',require('./api/intFreshdeskField'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xb7'),require('./api/intVtigerAccount'));_0x351ad4['use'](_0x5e58('0xb8'),require('./api/intVtigerConfiguration'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xb9'),require(_0x5e58('0xba')));_0x351ad4['use'](_0x5e58('0xbb'),require('./api/intServicenowAccount'));_0x351ad4[_0x5e58('0xa')]('/api/integrations/servicenow/configurations',require('./api/intServicenowConfiguration'));_0x351ad4[_0x5e58('0xa')]('/api/integrations/servicenow/fields',require(_0x5e58('0xbc')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xbd'),require(_0x5e58('0xbe')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xbf'),require('./api/intDynamics365Configuration'));_0x351ad4[_0x5e58('0xa')]('/api/integrations/dynamics365/fields',require(_0x5e58('0xc0')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xc1'),require(_0x5e58('0xc2')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xc3'),require(_0x5e58('0xc4')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xc5'),require(_0x5e58('0xc6')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xc7'),require(_0x5e58('0xc8')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xc9'),require(_0x5e58('0xca')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xcb'),require(_0x5e58('0xcc')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xcd'),require(_0x5e58('0xce')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xcf'),require('./api/jscriptyQuestionReport'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xd0'),require(_0x5e58('0xd1')));_0x351ad4[_0x5e58('0xa')]('/api/sms/reports/queue',require(_0x5e58('0xd2')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xd3'),require(_0x5e58('0xd4')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xd5'),require(_0x5e58('0xd6')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xd7'),require(_0x5e58('0xd8')));_0x351ad4['use'](_0x5e58('0xd9'),require(_0x5e58('0xda')));_0x351ad4[_0x5e58('0xa')]('/api/square/odbc',require(_0x5e58('0xdb')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xdc'),require(_0x5e58('0xdd')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xde'),require(_0x5e58('0xdf')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xe0'),require(_0x5e58('0xe1')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xe2'),require(_0x5e58('0xe3')));_0x351ad4['use']('/api/license',require('./api/license'));_0x351ad4[_0x5e58('0xa')]('/api/campaigns',require(_0x5e58('0xe4')));_0x351ad4['use'](_0x5e58('0xe5'),require(_0x5e58('0xe6')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xe7'),require(_0x5e58('0xe8')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xe9'),require(_0x5e58('0xea')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xeb'),require(_0x5e58('0xec')));_0x351ad4['use']('/api/chat/reports/transfer',require(_0x5e58('0xed')));_0x351ad4['use'](_0x5e58('0xee'),require(_0x5e58('0xef')));_0x351ad4[_0x5e58('0xa')]('/api/openchannel/reports/transfer',require(_0x5e58('0xf0')));_0x351ad4['use'](_0x5e58('0xf1'),require('./api/smsTransferReport'));_0x351ad4['use']('/api/cm/lists',require(_0x5e58('0xf2')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xf3'),require('./api/voicePrefix'));_0x351ad4[_0x5e58('0xa')]('/api/userProfiles',require(_0x5e58('0xf4')));_0x351ad4['use'](_0x5e58('0xf5'),require(_0x5e58('0xf6')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xf7'),require(_0x5e58('0xf8')));_0x351ad4['use'](_0x5e58('0xf9'),require(_0x5e58('0xfa')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xfb'),require(_0x5e58('0xfc')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0xfd'),require('./api/whatsappApplication'));_0x351ad4['use'](_0x5e58('0xfe'),require(_0x5e58('0xff')));_0x351ad4['use'](_0x5e58('0x100'),require('./api/whatsappMessage'));_0x351ad4['use'](_0x5e58('0x101'),require(_0x5e58('0x102')));_0x351ad4[_0x5e58('0xa')]('/api/whatsapp/reports/transfer',require('./api/whatsappTransferReport'));_0x351ad4['use'](_0x5e58('0x103'),require(_0x5e58('0x104')));_0x351ad4['use'](_0x5e58('0x105'),require(_0x5e58('0x106')));_0x351ad4['use'](_0x5e58('0x107'),require(_0x5e58('0x108')));_0x351ad4[_0x5e58('0xa')]('/api/auth/local',require(_0x5e58('0x109')));_0x351ad4['use'](_0x5e58('0x10a'),require(_0x5e58('0x10b')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x10c'),require(_0x5e58('0x10d')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x10e'),require('./api/jira'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x10f'),require('./api/rpc'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x110'),require(_0x5e58('0x111')));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x112'),require(_0x5e58('0x113')));_0x351ad4[_0x5e58('0xa')]('/api/pm2',require('./api/pm2'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x114'),require('./api/webbar'));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x115'),express[_0x5e58('0x116')](path[_0x5e58('0x117')](config[_0x5e58('0x118')],_0x5e58('0x115'))));_0x351ad4['use'](_0x5e58('0x119'),express[_0x5e58('0x116')](path['join'](config[_0x5e58('0x118')],_0x5e58('0x119'))));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x11a'),express[_0x5e58('0x116')](path[_0x5e58('0x117')](config[_0x5e58('0x118')],_0x5e58('0x11a'))));_0x351ad4[_0x5e58('0xa')](_0x5e58('0x11b'),express[_0x5e58('0x116')](path[_0x5e58('0x117')](config[_0x5e58('0x118')],_0x5e58('0x11c'),_0x5e58('0x11d'))));_0x351ad4[_0x5e58('0xa')]('/plugins',express['static'](path['join'](config[_0x5e58('0x118')],_0x5e58('0x11e'))));_0x351ad4['route'](_0x5e58('0x11f'))[_0x5e58('0x120')](errors[0x194]);_0x351ad4['route']('/*')[_0x5e58('0x120')](function(_0x42ffcb,_0x4f0620){_0x4f0620[_0x5e58('0x121')](path[_0x5e58('0x122')](_0x351ad4[_0x5e58('0x120')](_0x5e58('0x123'))+_0x5e58('0x124')));});};var sensitiveFields=[_0x5e58('0x125'),_0x5e58('0x126'),_0x5e58('0x127'),'apiKey','firstName',_0x5e58('0x128'),'street',_0x5e58('0x129'),_0x5e58('0x12a'),_0x5e58('0x12b'),'email',_0x5e58('0x12c'),'clientSecret',_0x5e58('0x12d'),_0x5e58('0x12e'),_0x5e58('0x12f'),'tenantId',_0x5e58('0x130'),_0x5e58('0x131'),_0x5e58('0x132'),_0x5e58('0x133'),_0x5e58('0x134'),_0x5e58('0x135'),_0x5e58('0x136'),'membername',_0x5e58('0x137'),_0x5e58('0x138'),_0x5e58('0x139'),_0x5e58('0x13a'),_0x5e58('0x13b'),_0x5e58('0x13c'),_0x5e58('0x13d'),_0x5e58('0x13e'),_0x5e58('0x13f'),'user',_0x5e58('0x140'),_0x5e58('0x141'),_0x5e58('0x142'),_0x5e58('0x143'),_0x5e58('0x144'),_0x5e58('0x145'),'oldPassword'];function maskSensitiveData(_0x55ab90){var _0x50686e=/(?!^)[\s\S](?!$)/g;if(!_[_0x5e58('0x146')](_0x55ab90))return;for(var _0x4e25ab in _0x55ab90){if(_[_0x5e58('0x147')](_0x55ab90[_0x4e25ab])){for(var _0x2ea376=0x0;_0x2ea376<_0x55ab90[_0x4e25ab]['length'];_0x2ea376++){maskSensitiveData(_0x55ab90[_0x4e25ab][_0x2ea376]);}}else if(_[_0x5e58('0x146')](_0x55ab90[_0x4e25ab])){maskSensitiveData(_0x55ab90[_0x4e25ab]);}else if(_[_0x5e58('0x148')](_0x55ab90[_0x4e25ab])){_0x55ab90[_0x4e25ab]=_0x55ab90[_0x4e25ab][_0x5e58('0x149')](/{{{/g,_0x5e58('0x14a'))[_0x5e58('0x149')](/}}}/g,_0x5e58('0x14b'))['replace'](/{{/g,'@{')[_0x5e58('0x149')](/}}/g,'}@');if(_[_0x5e58('0x14c')](sensitiveFields,_0x4e25ab)){_0x55ab90[_0x4e25ab]=_0x55ab90[_0x4e25ab][_0x5e58('0x149')](_0x50686e,'*');}}}}
\ No newline at end of file
index 4ca507f..f2735cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa88e=['../api/chatInteraction/chatInteraction.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','error','log','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xa88e,0x65));var _0xea88=function(_0x50b649,_0x2295ac){_0x50b649=_0x50b649-0x0;var _0x21f594=_0xa88e[_0x50b649];return _0x21f594;};'use strict';var jayson=require(_0xea88('0x0'));var BPromise=require('bluebird');var _=require(_0xea88('0x1'));var config=require(_0xea88('0x2'));exports[_0xea88('0x3')]=function(){return new BPromise(function(_0x19e399,_0x31cd81){var _0x59941a={};_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/user/user.rpc'));_0x59941a=_['merge'](_0x59941a,require('../api/voiceExtension/voiceExtension.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/voiceQueue/voiceQueue.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x5')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x6')));_0x59941a=_['merge'](_0x59941a,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x7')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x8')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x9')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0xa')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0xb')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/mailServerIn/mailServerIn.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0xc')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/mailQueue/mailQueue.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0xd')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0xe')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0xf')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x10')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x11')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/faxInteraction/faxInteraction.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x12')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/faxQueue/faxQueue.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x13')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/smsAccount/smsAccount.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x14')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x15')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x16')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x17')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x18')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x19')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x1a')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x1b')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/chatMessage/chatMessage.rpc'));_0x59941a=_['merge'](_0x59941a,require('../api/chatQueue/chatQueue.rpc'));_0x59941a=_['merge'](_0x59941a,require('../api/cmContact/cmContact.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x1c')));_0x59941a=_['merge'](_0x59941a,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x1d')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x1e')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x1f')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/pause/pause.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x20')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x21')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x22')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x23')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x24')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x25')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x26')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x27')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x28')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x29')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x2a')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x2b')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x2c')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x2d')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/squareOdbc/squareOdbc.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require('../api/squareProject/squareProject.rpc'));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x2e')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x2f')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x30')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x31')));_0x59941a=_[_0xea88('0x4')](_0x59941a,require(_0xea88('0x32')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x33')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x34')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x35')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x36')));_0x59941a=_['merge'](_0x59941a,require(_0xea88('0x37')));var _0x3d1a90=jayson['server'](_0x59941a)[_0xea88('0x38')]();var _0xf913ca=config[_0xea88('0x39')][_0xea88('0x3a')]||config[_0xea88('0x3a')]+0x1;var _0x257cd7=config['rpc']['ip']||'localhost';_0x3d1a90['on'](_0xea88('0x3b'),function(_0x441bcf){return _0x31cd81(_0x441bcf);});_0x3d1a90['listen'](_0xf913ca,_0x257cd7,function(){console[_0xea88('0x3c')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x257cd7,_0xf913ca);require(_0xea88('0x3d'))[_0xea88('0x3e')]();return _0x19e399(_0xea88('0x3f')+_0x257cd7+':'+_0xf913ca);});});};
\ No newline at end of file
+var _0x55a2=['../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','rpc','localhost','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc'];(function(_0x34022f,_0x21134c){var _0x1bebdf=function(_0xe4b9bb){while(--_0xe4b9bb){_0x34022f['push'](_0x34022f['shift']());}};_0x1bebdf(++_0x21134c);}(_0x55a2,0x10a));var _0x255a=function(_0x3227c1,_0x4318c5){_0x3227c1=_0x3227c1-0x0;var _0x31fd48=_0x55a2[_0x3227c1];return _0x31fd48;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var _=require(_0x255a('0x0'));var config=require(_0x255a('0x1'));exports[_0x255a('0x2')]=function(){return new BPromise(function(_0x23911a,_0x4505f4){var _0x33a47d={};_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x4')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x5')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x6')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/voiceRecording/voiceRecording.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x7')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x8')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x9')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0xa')));_0x33a47d=_['merge'](_0x33a47d,require('../api/trunk/trunk.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0xb')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0xc')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0xd')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0xe')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0xf')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x10')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x11')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x12')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x13')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x14')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x15')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x16')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x17')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x18')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x19')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x1a')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x1b')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x1c')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x1d')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x1e')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x1f')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x20')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x21')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x22')));_0x33a47d=_['merge'](_0x33a47d,require('../api/chatInteraction/chatInteraction.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/chatMessage/chatMessage.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x23')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x24')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x25')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x26')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x27')));_0x33a47d=_['merge'](_0x33a47d,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x28')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x29')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x2a')));_0x33a47d=_['merge'](_0x33a47d,require('../api/sound/sound.rpc'));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x2b')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x2c')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x2d')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x2e')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x2f')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x30')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x31')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x32')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x33')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x34')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x35')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x36')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x37')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x38')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x39')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/squareOdbc/squareOdbc.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/squareProject/squareProject.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/squareRecording/squareRecording.rpc'));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x3a')));_0x33a47d=_['merge'](_0x33a47d,require(_0x255a('0x3b')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/attachment/attachment.rpc'));_0x33a47d=_['merge'](_0x33a47d,require('../api/plugin/plugin.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x3c')));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x33a47d=_['merge'](_0x33a47d,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x33a47d=_[_0x255a('0x3')](_0x33a47d,require(_0x255a('0x3d')));var _0x4066e2=jayson[_0x255a('0x3e')](_0x33a47d)[_0x255a('0x3f')]();var _0x2601fb=config['rpc']['port']||config[_0x255a('0x40')]+0x1;var _0x27dcad=config[_0x255a('0x41')]['ip']||_0x255a('0x42');_0x4066e2['on']('error',function(_0x287bb8){return _0x4505f4(_0x287bb8);});_0x4066e2[_0x255a('0x2')](_0x2601fb,_0x27dcad,function(){console[_0x255a('0x43')](_0x255a('0x44'),_0x27dcad,_0x2601fb);require(_0x255a('0x45'))['default']();return _0x23911a(_0x255a('0x46')+_0x27dcad+':'+_0x2601fb);});});};
\ No newline at end of file
index f9d136d..c60c960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['\x20}\x20}','string','replace','isArray','keys','reduce','exports','lodash','{\x20{\x20'];(function(_0x30b220,_0x1b70dc){var _0x23bc84=function(_0xb67db5){while(--_0xb67db5){_0x30b220['push'](_0x30b220['shift']());}};_0x23bc84(++_0x1b70dc);}(_0x3266,0x6a));var _0x6326=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0x3266[_0x2261ce];return _0x524640;};var _=require(_0x6326('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2b328d){return _0x2b328d==='{{'?_0x6326('0x1'):_0x6326('0x2');}function safeTemplate(_0x545df7){var _0x6b67c0=_0x545df7;if(typeof _0x545df7===_0x6326('0x3')){_0x6b67c0=_0x545df7[_0x6326('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x6326('0x5')](_0x545df7)){_0x6b67c0=_0x545df7['map'](function(_0x30b22e){return safeTemplate(_0x30b22e);});}else if(_['isPlainObject'](_0x545df7)){_0x6b67c0=Object[_0x6326('0x6')](_0x545df7)[_0x6326('0x7')](function(_0x14208e,_0x5402e5){_0x14208e[_0x5402e5]=safeTemplate(_0x545df7[_0x5402e5]);return _0x14208e;},{});}return _0x6b67c0;}module[_0x6326('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file
+var _0x0598=['exports','safeTemplate','lodash','\x20}\x20}','string','replace','isPlainObject','keys'];(function(_0x5019d8,_0x4f7830){var _0x2d722b=function(_0x25534b){while(--_0x25534b){_0x5019d8['push'](_0x5019d8['shift']());}};_0x2d722b(++_0x4f7830);}(_0x0598,0x92));var _0x8059=function(_0x528215,_0x407a7b){_0x528215=_0x528215-0x0;var _0x5dc675=_0x0598[_0x528215];return _0x5dc675;};var _=require(_0x8059('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x8f4b1){return _0x8f4b1==='{{'?'{\x20{\x20':_0x8059('0x1');}function safeTemplate(_0x52c9bf){var _0x4dad54=_0x52c9bf;if(typeof _0x52c9bf===_0x8059('0x2')){_0x4dad54=_0x52c9bf[_0x8059('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x52c9bf)){_0x4dad54=_0x52c9bf['map'](function(_0x555fb5){return safeTemplate(_0x555fb5);});}else if(_[_0x8059('0x4')](_0x52c9bf)){_0x4dad54=Object[_0x8059('0x5')](_0x52c9bf)['reduce'](function(_0x5996d7,_0x248273){_0x5996d7[_0x248273]=safeTemplate(_0x52c9bf[_0x248273]);return _0x5996d7;},{});}return _0x4dad54;}module[_0x8059('0x6')][_0x8059('0x7')]=safeTemplate;
\ No newline at end of file
index 10f9de5..54d440f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x539d=['WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','events','EventEmitter','setEncoding','utf8','setTimeout','headers','emit','ready','line','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','indexOf','substr','startsWith','split','length','error','E_AGI_SOCKET_ERROR','code','close','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','write','inherits','prototype','sendRequest','sync','answer','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','format','VERBOSE\x20\x22%s\x22','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','noop','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','wav','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','exec','AGI','wait'];(function(_0x10c90e,_0x2a0672){var _0x2fbfee=function(_0x5a8c27){while(--_0x5a8c27){_0x10c90e['push'](_0x10c90e['shift']());}};_0x2fbfee(++_0x2a0672);}(_0x539d,0x17b));var _0xd539=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0x539d[_0x2261ce];return _0x524640;};'use strict';var util=require(_0xd539('0x0'));var _=require('lodash');var EventEmitter=require(_0xd539('0x1'))[_0xd539('0x2')];var AGIReply=require('./reply');var AGIError=require('./error');function AGIChannel(_0x62877f){var _0x2a38d5=this,_0xe8e6e4=new AGIReply(),_0x19ae25=![],_0x2f9d1f={};EventEmitter['call'](_0x2a38d5);_0x62877f[_0xd539('0x3')](_0xd539('0x4'));_0x62877f[_0xd539('0x5')](0x8*0x3c*0x3c*0x3e8);_0xe8e6e4[_0xd539('0x3')](_0xd539('0x4'));_0xe8e6e4['on'](_0xd539('0x6'),function(_0x555080){for(var _0x372cb9 in _0x555080){_0x2a38d5[_0x372cb9]=_0x555080[_0x372cb9];}_0x2a38d5[_0xd539('0x7')](_0xd539('0x8'));});_0xe8e6e4['on'](_0xd539('0x9'),function(_0x566b14){if(_0x566b14['toLowerCase']()==_0xd539('0xa')){_0x2a38d5[_0xd539('0x7')](_0xd539('0xa'));return;}if(_0x566b14[_0xd539('0xb')](0x0,0xb)==_0xd539('0xc')){_0x19ae25=!![];}if(_0x19ae25){_0x2f9d1f['rx']+=_0x566b14+'\x0a';if(_0x566b14[_0xd539('0xd')](_0xd539('0xe'))!=-0x1){_0x19ae25=![];}}else{_0x2f9d1f['rx']=_0x566b14;}if(_0x19ae25){return;}if(typeof _0x2f9d1f['cb']==_0xd539('0xf')){var _0x5209f2=_0x2f9d1f['rx'][_0xd539('0xb')](0x0,0x3),_0x17cbc0=null,_0x1a4645=null;_0x5209f2=parseInt(_0x5209f2);if(isNaN(_0x5209f2)){_0x2f9d1f['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xd539('0x10')});return;}if(_0x5209f2!=0xc8){_0x2f9d1f['cb'](null,{'code':_0x5209f2,'result':-0x1,'extra':'KO'});return;}_0x17cbc0=_0x2f9d1f['rx'][_0xd539('0xb')](0x4)[_0xd539('0x11')]('result=','');if(_0x17cbc0[_0xd539('0x12')]('\x20')!=-0x1){_0x17cbc0=_0x17cbc0[_0xd539('0x13')](0x0,_0x17cbc0[_0xd539('0x12')]('\x20'));}if(_[_0xd539('0x14')](_0x17cbc0,'-1')){_0x17cbc0=parseInt(_0x17cbc0);}_0x1a4645=_0x2f9d1f['rx'][_0xd539('0x15')]('\x20');if(_0x1a4645[_0xd539('0x16')]==0x3){_0x1a4645=_0x1a4645[0x2][_0xd539('0xb')](0x1,_0x1a4645[0x2][_0xd539('0x16')]-0x1);}else if(_0x1a4645[_0xd539('0x16')]>0x3){var _0x17f7bf=/\((.+)\)/;var _0x460f3c=_0x2f9d1f['rx']['match'](_0x17f7bf);if(_0x460f3c){_0x1a4645=_0x460f3c[0x1];}else{_0x1a4645=null;}}else{_0x1a4645=null;}_0x2f9d1f['cb'](null,{'code':_0x5209f2,'result':_0x17cbc0,'extra':_0x1a4645});}});_0x62877f['on'](_0xd539('0x17'),function(_0x41fb1e){_0x2a38d5[_0xd539('0x7')](_0xd539('0x17'),new AGIError(_0xd539('0x18'),_0x41fb1e[_0xd539('0x19')]));});_0x62877f['on'](_0xd539('0x1a'),function(){_0x2a38d5[_0xd539('0x7')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x62877f['on'](_0xd539('0x1b'),function(){_0x2a38d5[_0xd539('0x7')](_0xd539('0x1b'),new AGIError(_0xd539('0x1c')));_0x62877f['destroy']();});_0x62877f[_0xd539('0x1d')](_0xe8e6e4);this[_0xd539('0x1e')]=function(_0x46076e,_0x259dde){var _0x46076e=_0x46076e||'',_0x259dde=typeof _0x259dde==_0xd539('0xf')?_0x259dde:new Function();_0x2f9d1f={'tx':_0x46076e,'rx':'','cb':_0x259dde};_0x62877f[_0xd539('0x1f')](_0x46076e+'\x0a');},this[_0xd539('0x1a')]=function(){_0x62877f['destroy']();};}util[_0xd539('0x20')](AGIChannel,EventEmitter);AGIChannel[_0xd539('0x21')][_0xd539('0x22')]=function(_0x584642){return this['command'][_0xd539('0x23')](this,_0x584642);};AGIChannel[_0xd539('0x21')][_0xd539('0x24')]=function(){return this[_0xd539('0x22')]('ANSWER');};AGIChannel[_0xd539('0x21')]['getData']=function(_0x1343de,_0x1e6010,_0x247898){_0x1343de=_0x1343de===undefined?_0xd539('0x25'):_0x1343de;_0x1e6010=_0x1e6010===undefined?'5':_0x1e6010;_0x247898=_0x247898===undefined?'1':_0x247898;return this['sendRequest'](util['format'](_0xd539('0x26'),_0x1343de,_0x1e6010*0x3e8,_0x247898));};AGIChannel[_0xd539('0x21')]['noop']=function(_0x54b57a){_0x54b57a=_0x54b57a||'NO\x20MESSAGE';return this[_0xd539('0x22')](util[_0xd539('0x27')](_0xd539('0x28'),_0x54b57a));};AGIChannel[_0xd539('0x21')]['exec']=function(_0x430840,_0x2662fe){if(_['isArray'](_0x2662fe)){return this[_0xd539('0x22')](util[_0xd539('0x27')](_0xd539('0x29'),_0x430840,_0x2662fe[_0xd539('0x2a')](',')));}return this[_0xd539('0x22')](util['format'](_0xd539('0x29'),_0x430840,_0x2662fe));};AGIChannel['prototype'][_0xd539('0x2b')]=function(_0x55dd43){return this[_0xd539('0x22')](util['format'](_0xd539('0x2c'),_0x55dd43));};AGIChannel[_0xd539('0x21')][_0xd539('0x2d')]=function(_0x23d270){return this[_0xd539('0x22')](util[_0xd539('0x27')](_0xd539('0x2e'),_0x23d270));};AGIChannel[_0xd539('0x21')][_0xd539('0x2f')]=function(_0x400a07){return this[_0xd539('0x22')](util['format'](_0xd539('0x30'),_0x400a07));};AGIChannel['prototype'][_0xd539('0xa')]=function(){return this[_0xd539('0x22')]('HANGUP');};AGIChannel[_0xd539('0x21')][_0xd539('0x31')]=function(_0x4a2880,_0x518128){var _0x1a2eb2=_[_0xd539('0x32')](_0x518128)||_[_0xd539('0x33')](_0x518128)?_0x518128[_0xd539('0x34')]():_0x518128;return this['sendRequest'](util[_0xd539('0x27')](_0xd539('0x35'),_0x4a2880,_0x1a2eb2?_0x1a2eb2[_0xd539('0x34')]()[_0xd539('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xd539('0x36')]=function(_0x41032f,_0x390f6b){return this[_0xd539('0x22')](util[_0xd539('0x27')](_0xd539('0x37'),_0x41032f,_0x390f6b));};AGIChannel['prototype']['sayDigits']=function(_0x1623f5,_0x46eb3f){return this[_0xd539('0x22')](util[_0xd539('0x27')]('SAY\x20DIGITS\x20%s\x20%s',_0x1623f5,_0x46eb3f));};AGIChannel[_0xd539('0x21')][_0xd539('0x38')]=function(_0x14175f,_0x573d62){return this[_0xd539('0x22')](util['format'](_0xd539('0x39'),_0x14175f,_0x573d62));};AGIChannel['prototype'][_0xd539('0x3a')]=function(_0x499f3d,_0x5d8a66,_0x36856d){_0x5d8a66=_0x5d8a66||this[_0xd539('0x3b')];_0x36856d=_0x36856d||0x1;this[_0xd539('0x2b')](_0x499f3d);this[_0xd539('0x2d')](_0x5d8a66);this[_0xd539('0x2f')](_0x36856d);return this[_0xd539('0x3c')](util['format'](_0xd539('0x3d'),_0x499f3d,_0x5d8a66,_0x36856d));};AGIChannel[_0xd539('0x21')][_0xd539('0x3e')]=function(_0x5d1d2c){return this[_0xd539('0x22')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x5d1d2c));};AGIChannel[_0xd539('0x21')][_0xd539('0x3f')]=function(_0x128612,_0x158fc8,_0x50e52f,_0x3dbfef,_0x26231f,_0x2d3dc0){_0x158fc8=_0x158fc8||_0xd539('0x40');_0x50e52f=_0x50e52f||'';_0x3dbfef=_0x3dbfef===undefined?-0x1:_0x3dbfef==='-1'?-0x1:_0x3dbfef*0x3e8;_0x26231f=_0x26231f===undefined?'':'s='+_0x26231f;_0x2d3dc0=_0x2d3dc0?'BEEP':'';return this[_0xd539('0x22')](util[_0xd539('0x27')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x128612,_0x158fc8,_0x50e52f,_0x3dbfef,_0x2d3dc0,_0x26231f));};AGIChannel[_0xd539('0x21')][_0xd539('0x41')]=function(_0x449339,_0xc8b43e){_0xc8b43e=_0xc8b43e||'';return this['sendRequest'](util[_0xd539('0x27')](_0xd539('0x42'),_0x449339,_0xc8b43e));};AGIChannel[_0xd539('0x21')][_0xd539('0x43')]=function(_0x458009){return this[_0xd539('0x44')](_0xd539('0x45'),_0x458009);};AGIChannel[_0xd539('0x21')][_0xd539('0x46')]=function(_0x203e42){return this['exec'](_0xd539('0x47'),_0x203e42);};AGIChannel[_0xd539('0x21')][_0xd539('0x17')]=function(_0xf4c69c,_0x4f72f7){this[_0xd539('0x3c')](util[_0xd539('0x27')](_0xd539('0x48'),_0xf4c69c['id'],_0xf4c69c[_0xd539('0x49')],_0x4f72f7));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xd539('0x4a')]=AGIChannel;
\ No newline at end of file
+var _0x187d=['getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','streamFile','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','events','EventEmitter','./reply','./error','setEncoding','utf8','setTimeout','headers','ready','line','toLowerCase','hangup','emit','substring','520-Invalid','search','function','no\x20code','replace','indexOf','substr','startsWith','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','inherits','sendRequest','sync','answer','getData','format','prototype','noop','VERBOSE\x20\x22%s\x22','exec','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20DIGITS\x20%s\x20%s','extension','GOTO\x20%s\x20%s\x20%s'];(function(_0x3bab09,_0x217c29){var _0x164376=function(_0x277730){while(--_0x277730){_0x3bab09['push'](_0x3bab09['shift']());}};_0x164376(++_0x217c29);}(_0x187d,0x93));var _0xd187=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x187d[_0x4e9628];return _0x27bc8c;};'use strict';var util=require(_0xd187('0x0'));var _=require('lodash');var EventEmitter=require(_0xd187('0x1'))[_0xd187('0x2')];var AGIReply=require(_0xd187('0x3'));var AGIError=require(_0xd187('0x4'));function AGIChannel(_0x18498b){var _0x201b79=this,_0x58622a=new AGIReply(),_0x28fa0b=![],_0x163807={};EventEmitter['call'](_0x201b79);_0x18498b[_0xd187('0x5')](_0xd187('0x6'));_0x18498b[_0xd187('0x7')](0x8*0x3c*0x3c*0x3e8);_0x58622a[_0xd187('0x5')](_0xd187('0x6'));_0x58622a['on'](_0xd187('0x8'),function(_0x358c45){for(var _0x461a44 in _0x358c45){_0x201b79[_0x461a44]=_0x358c45[_0x461a44];}_0x201b79['emit'](_0xd187('0x9'));});_0x58622a['on'](_0xd187('0xa'),function(_0x4039f6){if(_0x4039f6[_0xd187('0xb')]()==_0xd187('0xc')){_0x201b79[_0xd187('0xd')]('hangup');return;}if(_0x4039f6[_0xd187('0xe')](0x0,0xb)==_0xd187('0xf')){_0x28fa0b=!![];}if(_0x28fa0b){_0x163807['rx']+=_0x4039f6+'\x0a';if(_0x4039f6[_0xd187('0x10')]('520\x20End\x20of\x20proper')!=-0x1){_0x28fa0b=![];}}else{_0x163807['rx']=_0x4039f6;}if(_0x28fa0b){return;}if(typeof _0x163807['cb']==_0xd187('0x11')){var _0x4545cf=_0x163807['rx'][_0xd187('0xe')](0x0,0x3),_0x32ba07=null,_0x59ee4a=null;_0x4545cf=parseInt(_0x4545cf);if(isNaN(_0x4545cf)){_0x163807['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xd187('0x12')});return;}if(_0x4545cf!=0xc8){_0x163807['cb'](null,{'code':_0x4545cf,'result':-0x1,'extra':'KO'});return;}_0x32ba07=_0x163807['rx'][_0xd187('0xe')](0x4)[_0xd187('0x13')]('result=','');if(_0x32ba07[_0xd187('0x14')]('\x20')!=-0x1){_0x32ba07=_0x32ba07[_0xd187('0x15')](0x0,_0x32ba07[_0xd187('0x14')]('\x20'));}if(_[_0xd187('0x16')](_0x32ba07,'-1')){_0x32ba07=parseInt(_0x32ba07);}_0x59ee4a=_0x163807['rx']['split']('\x20');if(_0x59ee4a[_0xd187('0x17')]==0x3){_0x59ee4a=_0x59ee4a[0x2]['substring'](0x1,_0x59ee4a[0x2]['length']-0x1);}else if(_0x59ee4a[_0xd187('0x17')]>0x3){var _0x5a4986=/\((.+)\)/;var _0x4ec155=_0x163807['rx'][_0xd187('0x18')](_0x5a4986);if(_0x4ec155){_0x59ee4a=_0x4ec155[0x1];}else{_0x59ee4a=null;}}else{_0x59ee4a=null;}_0x163807['cb'](null,{'code':_0x4545cf,'result':_0x32ba07,'extra':_0x59ee4a});}});_0x18498b['on'](_0xd187('0x19'),function(_0x374fe0){_0x201b79[_0xd187('0xd')](_0xd187('0x19'),new AGIError(_0xd187('0x1a'),_0x374fe0[_0xd187('0x1b')]));});_0x18498b['on'](_0xd187('0x1c'),function(){_0x201b79[_0xd187('0xd')](_0xd187('0x1c'),new AGIError(_0xd187('0x1d')));});_0x18498b['on'](_0xd187('0x1e'),function(){_0x201b79[_0xd187('0xd')]('timeout',new AGIError(_0xd187('0x1f')));_0x18498b[_0xd187('0x20')]();});_0x18498b[_0xd187('0x21')](_0x58622a);this['command']=function(_0x5a0360,_0x57cf1d){var _0x5a0360=_0x5a0360||'',_0x57cf1d=typeof _0x57cf1d==_0xd187('0x11')?_0x57cf1d:new Function();_0x163807={'tx':_0x5a0360,'rx':'','cb':_0x57cf1d};_0x18498b['write'](_0x5a0360+'\x0a');},this[_0xd187('0x1c')]=function(){_0x18498b['destroy']();};}util[_0xd187('0x22')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xd187('0x23')]=function(_0x54f340){return this['command'][_0xd187('0x24')](this,_0x54f340);};AGIChannel['prototype'][_0xd187('0x25')]=function(){return this[_0xd187('0x23')]('ANSWER');};AGIChannel['prototype'][_0xd187('0x26')]=function(_0xeff822,_0x43079f,_0x4a7f6f){_0xeff822=_0xeff822===undefined?'beep':_0xeff822;_0x43079f=_0x43079f===undefined?'5':_0x43079f;_0x4a7f6f=_0x4a7f6f===undefined?'1':_0x4a7f6f;return this[_0xd187('0x23')](util[_0xd187('0x27')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0xeff822,_0x43079f*0x3e8,_0x4a7f6f));};AGIChannel[_0xd187('0x28')][_0xd187('0x29')]=function(_0x34febe){_0x34febe=_0x34febe||'NO\x20MESSAGE';return this[_0xd187('0x23')](util['format'](_0xd187('0x2a'),_0x34febe));};AGIChannel[_0xd187('0x28')][_0xd187('0x2b')]=function(_0x352b66,_0x489f2e){if(_[_0xd187('0x2c')](_0x489f2e)){return this[_0xd187('0x23')](util['format']('EXEC\x20%s\x20%s',_0x352b66,_0x489f2e[_0xd187('0x2d')](',')));}return this[_0xd187('0x23')](util[_0xd187('0x27')](_0xd187('0x2e'),_0x352b66,_0x489f2e));};AGIChannel[_0xd187('0x28')][_0xd187('0x2f')]=function(_0x3dc7f2){return this[_0xd187('0x23')](util['format'](_0xd187('0x30'),_0x3dc7f2));};AGIChannel[_0xd187('0x28')][_0xd187('0x31')]=function(_0x5e2f2e){return this[_0xd187('0x23')](util['format'](_0xd187('0x32'),_0x5e2f2e));};AGIChannel[_0xd187('0x28')][_0xd187('0x33')]=function(_0x4d9d97){return this['sendRequest'](util[_0xd187('0x27')](_0xd187('0x34'),_0x4d9d97));};AGIChannel['prototype'][_0xd187('0xc')]=function(){return this[_0xd187('0x23')](_0xd187('0x35'));};AGIChannel['prototype']['setVariable']=function(_0x236139,_0xf32da2){var _0x556146=_['isBoolean'](_0xf32da2)||_['isNumber'](_0xf32da2)?_0xf32da2[_0xd187('0x36')]():_0xf32da2;return this['sendRequest'](util[_0xd187('0x27')](_0xd187('0x37'),_0x236139,_0x556146?_0x556146['toString']()[_0xd187('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xd187('0x38')]=function(_0x2db36e,_0x4af59f){return this[_0xd187('0x23')](util[_0xd187('0x27')]('SAY\x20NUMBER\x20%s\x20%s',_0x2db36e,_0x4af59f));};AGIChannel[_0xd187('0x28')]['sayDigits']=function(_0x5f01b7,_0x26b06d){return this[_0xd187('0x23')](util[_0xd187('0x27')](_0xd187('0x39'),_0x5f01b7,_0x26b06d));};AGIChannel[_0xd187('0x28')]['sayPhonetic']=function(_0x8860c,_0xe090ad){return this[_0xd187('0x23')](util['format']('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x8860c,_0xe090ad));};AGIChannel['prototype']['continueAt']=function(_0x21bb3c,_0x41bcbc,_0x3d74cc){_0x41bcbc=_0x41bcbc||this[_0xd187('0x3a')];_0x3d74cc=_0x3d74cc||0x1;this[_0xd187('0x2f')](_0x21bb3c);this[_0xd187('0x31')](_0x41bcbc);this[_0xd187('0x33')](_0x3d74cc);return this[_0xd187('0x29')](util['format'](_0xd187('0x3b'),_0x21bb3c,_0x41bcbc,_0x3d74cc));};AGIChannel[_0xd187('0x28')][_0xd187('0x3c')]=function(_0x51c7fc){return this[_0xd187('0x23')](util['format'](_0xd187('0x3d'),_0x51c7fc));};AGIChannel[_0xd187('0x28')][_0xd187('0x3e')]=function(_0xb5322c,_0x3cea48,_0x49c26e,_0x3f0484,_0x3d9e60,_0x3215b1){_0x3cea48=_0x3cea48||_0xd187('0x3f');_0x49c26e=_0x49c26e||'';_0x3f0484=_0x3f0484===undefined?-0x1:_0x3f0484==='-1'?-0x1:_0x3f0484*0x3e8;_0x3d9e60=_0x3d9e60===undefined?'':'s='+_0x3d9e60;_0x3215b1=_0x3215b1?'BEEP':'';return this[_0xd187('0x23')](util[_0xd187('0x27')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0xb5322c,_0x3cea48,_0x49c26e,_0x3f0484,_0x3215b1,_0x3d9e60));};AGIChannel[_0xd187('0x28')][_0xd187('0x40')]=function(_0x5d73d3,_0x56ddf3){_0x56ddf3=_0x56ddf3||'';return this[_0xd187('0x23')](util[_0xd187('0x27')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x5d73d3,_0x56ddf3));};AGIChannel['prototype']['agi']=function(_0x2f78da){return this[_0xd187('0x2b')](_0xd187('0x41'),_0x2f78da);};AGIChannel[_0xd187('0x28')][_0xd187('0x42')]=function(_0x60062b){return this[_0xd187('0x2b')]('WAIT',_0x60062b);};AGIChannel[_0xd187('0x28')][_0xd187('0x19')]=function(_0x255c97,_0x3ce4a1){this[_0xd187('0x29')](util[_0xd187('0x27')](_0xd187('0x43'),_0x255c97['id'],_0x255c97[_0xd187('0x44')],_0x3ce4a1));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index f1b3912..3ca701a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a4a=['Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','push','format','apply','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.'];(function(_0x51c73b,_0x4183a4){var _0x5ef960=function(_0x13d99d){while(--_0x13d99d){_0x51c73b['push'](_0x51c73b['shift']());}};_0x5ef960(++_0x4183a4);}(_0x5a4a,0xf2));var _0xa5a4=function(_0x2a4830,_0x425155){_0x2a4830=_0x2a4830-0x0;var _0x49c9da=_0x5a4a[_0x2a4830];return _0x49c9da;};'use strict';var util=require(_0xa5a4('0x0'));var error={'E_AGI_UNDEFINED':_0xa5a4('0x1'),'E_AGI_ARGUMENT_PORT':_0xa5a4('0x2'),'E_AGI_SERVER_ERROR':_0xa5a4('0x3'),'E_AGI_SERVER_CLOSE':'Server\x20closed.','E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0xa5a4('0x4'),'E_AGI_SOCKET_ERROR':_0xa5a4('0x5'),'E_AGI_SOCKET_CLOSE':_0xa5a4('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xa5a4('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x323940){var _0x323940=_0x323940||null,_0x2c46df=_0x2c46df||[],_0x143a7e=0x1,_0x23d325='';if(!error[_0x323940]){_0x323940='E_AGI_UNDEFINED';}_0x2c46df['push'](error[_0x323940]);while(arguments[_0x143a7e]){_0x2c46df[_0xa5a4('0x8')](arguments[_0x143a7e]);_0x143a7e++;}_0x23d325=util[_0xa5a4('0x9')][_0xa5a4('0xa')](util,_0x2c46df);this['message']=_0x23d325;this[_0xa5a4('0xb')]=_0x323940;}module[_0xa5a4('0xc')]=AGIError;
\ No newline at end of file
+var _0x378c=['name','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','apply','message'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x378c,0xa9));var _0xc378=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x378c[_0x413feb];return _0x40ee88;};'use strict';var util=require(_0xc378('0x0'));var error={'E_AGI_UNDEFINED':_0xc378('0x1'),'E_AGI_ARGUMENT_PORT':_0xc378('0x2'),'E_AGI_SERVER_ERROR':_0xc378('0x3'),'E_AGI_SERVER_CLOSE':_0xc378('0x4'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0xc378('0x5'),'E_AGI_SOCKET_ERROR':_0xc378('0x6'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0xc378('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xc378('0x8'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x355603){var _0x355603=_0x355603||null,_0x5bfe0e=_0x5bfe0e||[],_0xdf82aa=0x1,_0x50cd85='';if(!error[_0x355603]){_0x355603=_0xc378('0x9');}_0x5bfe0e[_0xc378('0xa')](error[_0x355603]);while(arguments[_0xdf82aa]){_0x5bfe0e['push'](arguments[_0xdf82aa]);_0xdf82aa++;}_0x50cd85=util['format'][_0xc378('0xb')](util,_0x5bfe0e);this[_0xc378('0xc')]=_0x50cd85;this[_0xc378('0xd')]=_0x355603;}module['exports']=AGIError;
\ No newline at end of file
index 36ccb04..16d9c60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cdf=['exports','lodash','../../../config/logger','menu','vertices','numberOfEdges','addVertex','edges','addEdge','push','prototype','size','relations','traverseBFS','info','length','condition','split','default','target','agicommand','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x6cdf,0x187));var _0xf6cd=function(_0x2081f1,_0x36e8ce){_0x2081f1=_0x2081f1-0x0;var _0x2ad889=_0x6cdf[_0x2081f1];return _0x2ad889;};'use strict';var _=require(_0xf6cd('0x0'));var logger=require(_0xf6cd('0x1'))('agi');var verticesWithRetry=[_0xf6cd('0x2'),'getdigits','getsecretdigits'];var Graph=function(){this[_0xf6cd('0x3')]={};this['edges']={};this[_0xf6cd('0x4')]=0x0;};Graph['prototype'][_0xf6cd('0x5')]=function(_0x4f5568){this[_0xf6cd('0x3')][_0x4f5568['id']]=_0x4f5568;this[_0xf6cd('0x6')][_0x4f5568['id']]=[];};Graph['prototype'][_0xf6cd('0x7')]=function(_0xa64993,_0x493b5f,_0x41c12a){this[_0xf6cd('0x6')][_0xa64993][_0xf6cd('0x8')]({'target':_0x493b5f,'condition':_0x41c12a});this[_0xf6cd('0x4')]+=0x1;};Graph[_0xf6cd('0x9')]['size']=function(){return _[_0xf6cd('0xa')](this[_0xf6cd('0x3')]);};Graph[_0xf6cd('0x9')][_0xf6cd('0xb')]=function(){return this[_0xf6cd('0x4')];};Graph[_0xf6cd('0x9')]['getVertex']=function(_0xebeac3){return this[_0xf6cd('0x3')][_0xebeac3];};Graph[_0xf6cd('0x9')][_0xf6cd('0xc')]=function(_0x1b13e4,_0x1e4ab6){if(!this[_0xf6cd('0x3')][_0x1b13e4]){return logger[_0xf6cd('0xd')]('no\x20vertex\x20found');}var _0x14fb9f=_0x1e4ab6(this[_0xf6cd('0x3')][_0x1b13e4]);if(!_0x14fb9f){return logger[_0xf6cd('0xd')]('stop\x20traverse');}if(this[_0xf6cd('0x6')][_0x1b13e4][_0xf6cd('0xe')]===0x0){return logger[_0xf6cd('0xd')]('no\x20edge/s\x20available');}for(var _0x47ed34=0x0,_0x206ab7=[],_0x3f4630=![];_0x47ed34<this[_0xf6cd('0x6')][_0x1b13e4]['length'];_0x47ed34+=0x1){if(this[_0xf6cd('0x6')][_0x1b13e4][_0x47ed34][_0xf6cd('0xf')]){_0x206ab7=this['edges'][_0x1b13e4][_0x47ed34][_0xf6cd('0xf')][_0xf6cd('0x10')](',');for(var _0x325c17=0x0;_0x325c17<_0x206ab7['length'];_0x325c17+=0x1){if(this[_0xf6cd('0x3')][_0x1b13e4]['agicommand']==='vswitch'&&_0x206ab7[_0x325c17]==='-'){_0x3f4630=this[_0xf6cd('0x6')][_0x1b13e4][_0x47ed34]['target'];logger[_0xf6cd('0xd')](_0xf6cd('0x11'),_0x206ab7[_0x325c17],this[_0xf6cd('0x6')][_0x1b13e4][_0x47ed34][_0xf6cd('0x12')]);}else if(this[_0xf6cd('0x3')][_0x1b13e4][_0xf6cd('0x13')]==='menu'&&_0x206ab7[_0x325c17]==='i'){_0x3f4630=this[_0xf6cd('0x6')][_0x1b13e4][_0x47ed34]['target'];logger[_0xf6cd('0xd')](_0xf6cd('0x14'),_0x206ab7[_0x325c17],this['edges'][_0x1b13e4][_0x47ed34][_0xf6cd('0x12')]);}if(_0x206ab7[_0x325c17]===_0x14fb9f){return this['traverseBFS'](this['edges'][_0x1b13e4][_0x47ed34][_0xf6cd('0x12')],_0x1e4ab6);}}}else{return this[_0xf6cd('0xc')](this[_0xf6cd('0x6')][_0x1b13e4][_0x47ed34][_0xf6cd('0x12')],_0x1e4ab6);}}if(_0x206ab7[_0xf6cd('0xe')]){if(this[_0xf6cd('0x3')][_0x1b13e4]['agicommand']===_0xf6cd('0x15')){if(_0x3f4630){return this['traverseBFS'](_0x3f4630,_0x1e4ab6);}return logger['info'](_0xf6cd('0x16'));}else if(_[_0xf6cd('0x17')](verticesWithRetry,this['vertices'][_0x1b13e4][_0xf6cd('0x13')])){if(_0x14fb9f==='-'){return logger[_0xf6cd('0xd')](_0xf6cd('0x18'));}if(_0x3f4630&&_0x14fb9f!=='t'){return this[_0xf6cd('0xc')](_0x3f4630,_0x1e4ab6);}return this[_0xf6cd('0xc')](_0x1b13e4,_0x1e4ab6);}return logger[_0xf6cd('0xd')]('condition\x20not\x20found');}};module[_0xf6cd('0x19')]=Graph;
\ No newline at end of file
+var _0x679b=['vertices','edges','numberOfEdges','prototype','addVertex','addEdge','push','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','length','no\x20edge/s\x20available','condition','default','agicommand','target','invalid','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','exports','lodash','../../../config/logger','agi','menu','getdigits'];(function(_0x9ae02d,_0x54f9a6){var _0x3e3945=function(_0x127559){while(--_0x127559){_0x9ae02d['push'](_0x9ae02d['shift']());}};_0x3e3945(++_0x54f9a6);}(_0x679b,0x19f));var _0xb679=function(_0x1f31de,_0xee5769){_0x1f31de=_0x1f31de-0x0;var _0x5b305d=_0x679b[_0x1f31de];return _0x5b305d;};'use strict';var _=require(_0xb679('0x0'));var logger=require(_0xb679('0x1'))(_0xb679('0x2'));var verticesWithRetry=[_0xb679('0x3'),_0xb679('0x4'),'getsecretdigits'];var Graph=function(){this[_0xb679('0x5')]={};this[_0xb679('0x6')]={};this[_0xb679('0x7')]=0x0;};Graph[_0xb679('0x8')][_0xb679('0x9')]=function(_0x47e834){this[_0xb679('0x5')][_0x47e834['id']]=_0x47e834;this['edges'][_0x47e834['id']]=[];};Graph['prototype'][_0xb679('0xa')]=function(_0x388ba5,_0x4679e5,_0x209052){this[_0xb679('0x6')][_0x388ba5][_0xb679('0xb')]({'target':_0x4679e5,'condition':_0x209052});this['numberOfEdges']+=0x1;};Graph[_0xb679('0x8')][_0xb679('0xc')]=function(){return _[_0xb679('0xc')](this['vertices']);};Graph['prototype'][_0xb679('0xd')]=function(){return this[_0xb679('0x7')];};Graph[_0xb679('0x8')][_0xb679('0xe')]=function(_0x82f655){return this['vertices'][_0x82f655];};Graph['prototype'][_0xb679('0xf')]=function(_0x35f37f,_0xff4217){if(!this[_0xb679('0x5')][_0x35f37f]){return logger[_0xb679('0x10')](_0xb679('0x11'));}var _0x3fec88=_0xff4217(this[_0xb679('0x5')][_0x35f37f]);if(!_0x3fec88){return logger[_0xb679('0x10')]('stop\x20traverse');}if(this[_0xb679('0x6')][_0x35f37f][_0xb679('0x12')]===0x0){return logger[_0xb679('0x10')](_0xb679('0x13'));}for(var _0x1270cb=0x0,_0x1c00d8=[],_0x42a87e=![];_0x1270cb<this[_0xb679('0x6')][_0x35f37f][_0xb679('0x12')];_0x1270cb+=0x1){if(this[_0xb679('0x6')][_0x35f37f][_0x1270cb][_0xb679('0x14')]){_0x1c00d8=this[_0xb679('0x6')][_0x35f37f][_0x1270cb][_0xb679('0x14')]['split'](',');for(var _0x5cf17b=0x0;_0x5cf17b<_0x1c00d8['length'];_0x5cf17b+=0x1){if(this['vertices'][_0x35f37f]['agicommand']==='vswitch'&&_0x1c00d8[_0x5cf17b]==='-'){_0x42a87e=this['edges'][_0x35f37f][_0x1270cb]['target'];logger[_0xb679('0x10')](_0xb679('0x15'),_0x1c00d8[_0x5cf17b],this[_0xb679('0x6')][_0x35f37f][_0x1270cb]['target']);}else if(this[_0xb679('0x5')][_0x35f37f][_0xb679('0x16')]===_0xb679('0x3')&&_0x1c00d8[_0x5cf17b]==='i'){_0x42a87e=this[_0xb679('0x6')][_0x35f37f][_0x1270cb][_0xb679('0x17')];logger[_0xb679('0x10')](_0xb679('0x18'),_0x1c00d8[_0x5cf17b],this[_0xb679('0x6')][_0x35f37f][_0x1270cb][_0xb679('0x17')]);}if(_0x1c00d8[_0x5cf17b]===_0x3fec88){return this[_0xb679('0xf')](this[_0xb679('0x6')][_0x35f37f][_0x1270cb][_0xb679('0x17')],_0xff4217);}}}else{return this[_0xb679('0xf')](this[_0xb679('0x6')][_0x35f37f][_0x1270cb][_0xb679('0x17')],_0xff4217);}}if(_0x1c00d8[_0xb679('0x12')]){if(this['vertices'][_0x35f37f]['agicommand']===_0xb679('0x19')){if(_0x42a87e){return this[_0xb679('0xf')](_0x42a87e,_0xff4217);}return logger[_0xb679('0x10')](_0xb679('0x1a'));}else if(_[_0xb679('0x1b')](verticesWithRetry,this[_0xb679('0x5')][_0x35f37f]['agicommand'])){if(_0x3fec88==='-'){return logger[_0xb679('0x10')](_0xb679('0x1c'));}if(_0x42a87e&&_0x3fec88!=='t'){return this[_0xb679('0xf')](_0x42a87e,_0xff4217);}return this['traverseBFS'](_0x35f37f,_0xff4217);}return logger[_0xb679('0x10')]('condition\x20not\x20found');}};module[_0xb679('0x1d')]=Graph;
\ No newline at end of file
index b330937..981302d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaa1=['addEdge','target','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring','inspect','debug','variables','close','evtHangup','hangup','sync','production','start','root','stringify','joinAt','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','vertex','gotoc','context','extension','priority','response','code','result','isUndefined','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','toString','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./mailRpc','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','name','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','agicommand','retry','maxRetry','addVertex','omit','hasOwnProperty','isArray','length','source'];(function(_0xcd30ef,_0x228d14){var _0x16f6db=function(_0x1eb80e){while(--_0x1eb80e){_0xcd30ef['push'](_0xcd30ef['shift']());}};_0x16f6db(++_0x228d14);}(_0xcaa1,0x1b4));var _0x1caa=function(_0x23318e,_0x3d0f80){_0x23318e=_0x23318e-0x0;var _0x3e19e0=_0xcaa1[_0x23318e];return _0x3e19e0;};'use strict';var parser=require(_0x1caa('0x0'));var _=require(_0x1caa('0x1'));var syncho=require(_0x1caa('0x2'));var util=require(_0x1caa('0x3'));var moment=require(_0x1caa('0x4'));var config=require(_0x1caa('0x5'));var logger=require(_0x1caa('0x6'))(_0x1caa('0x7'));var utilLicense=require(_0x1caa('0x8'));var rpc=require('./rpc');var mailRpc=require(_0x1caa('0x9'));var Graph=require('./graph');var Vertices=require(_0x1caa('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x1caa('0x7')]=_[_0x1caa('0xb')](config['agi'],{'ip':_0x1caa('0xc'),'port':0x11dd});function connectionHandler(_0xe1f8f2){process[_0x1caa('0xd')](function(){syncho(function(){try{setChannelVariables(_0xe1f8f2);agiHandler(_0xe1f8f2);}catch(_0x5e95b2){logger[_0x1caa('0xe')](_0x5e95b2[_0x1caa('0xf')]);}});});}function listeningHandler(){console[_0x1caa('0x10')](_0x1caa('0x11'),config[_0x1caa('0x7')][_0x1caa('0x12')]);logger[_0x1caa('0x13')](util[_0x1caa('0x14')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x1caa('0x7')]['ip'],config[_0x1caa('0x7')][_0x1caa('0x12')]));}function errorHandler(_0x12a2b0){if(_0x12a2b0&&_0x12a2b0[_0x1caa('0x15')]&&_0x12a2b0[_0x1caa('0x16')]){logger[_0x1caa('0xe')](util[_0x1caa('0x14')](_0x1caa('0x17'),_0x12a2b0[_0x1caa('0x15')],_0x12a2b0['message']));}else{logger[_0x1caa('0xe')](util[_0x1caa('0x14')](_0x1caa('0x18'),_0x12a2b0['stack']));}}function closeHandler(){logger['info'](util[_0x1caa('0x14')](_0x1caa('0x19'),this[_0x1caa('0x1a')],this[_0x1caa('0x1b')],this[_0x1caa('0x1c')],this[_0x1caa('0x1d')],this[_0x1caa('0x1e')]));try{createSquareReport(this);}catch(_0xad4f8b){logger[_0x1caa('0xe')](_0xad4f8b[_0x1caa('0xf')]);}}function timeoutHandler(){logger[_0x1caa('0x13')](util['format'](_0x1caa('0x1f'),this[_0x1caa('0x1a')],this[_0x1caa('0x1b')],this[_0x1caa('0x1c')],this[_0x1caa('0x1d')],this[_0x1caa('0x1e')]));}function hangupHandler(){logger['info'](util[_0x1caa('0x14')](_0x1caa('0x20'),this[_0x1caa('0x1a')],this['calleridname'],this['callerid'],this[_0x1caa('0x1d')],this['uniqueid']));this['evtHangup']=!![];}function getRoot(_0x5c9cc2){return parser[_0x1caa('0x21')](_0x5c9cc2,{'object':!![]})[_0x1caa('0x22')]['root'];}function addVertex(_0x48b3b3,_0x58a7f2,_0x1d5a59){_0x58a7f2[_0x1caa('0x23')]=_0x1d5a59;if(_0x58a7f2['hasOwnProperty'](_0x1caa('0x24'))){_0x58a7f2[_0x1caa('0x25')]=parseInt(_0x58a7f2[_0x1caa('0x24')],0xa);}_0x48b3b3[_0x1caa('0x26')](_[_0x1caa('0x27')](_0x58a7f2,'mxCell'));}function initGraph(_0x3de39a,_0x5ef66c){var _0x4765d3=new Graph();for(var _0x23e772 in _0x3de39a){if(_0x3de39a[_0x1caa('0x28')](_0x23e772)){if(_[_0x1caa('0x29')](_0x3de39a[_0x23e772])){for(var _0x585b97=0x0;_0x585b97<_0x3de39a[_0x23e772][_0x1caa('0x2a')];_0x585b97+=0x1){addVertex(_0x4765d3,_0x3de39a[_0x23e772][_0x585b97],_0x23e772);}}else{addVertex(_0x4765d3,_0x3de39a[_0x23e772],_0x23e772);}}}for(var _0x1fc942=0x0;_0x1fc942<_0x5ef66c[_0x1caa('0x2a')];_0x1fc942+=0x1){if(_0x5ef66c[_0x1fc942][_0x1caa('0x2b')]&&_0x5ef66c[_0x1fc942]['target']){_0x4765d3[_0x1caa('0x2c')](_0x5ef66c[_0x1fc942][_0x1caa('0x2b')],_0x5ef66c[_0x1fc942][_0x1caa('0x2d')],_0x5ef66c[_0x1fc942][_0x1caa('0x2e')]);}}return _0x4765d3;}function getSquareProject(_0x23aab1,_0x59ce84){rpc[_0x1caa('0x2f')](_0x23aab1)['then'](function(_0x4d665b){_0x59ce84(null,_0x4d665b);})[_0x1caa('0x30')](function(_0x2db3f7){_0x59ce84(null,_0x2db3f7);});}function createSquareReport(_0x712c43,_0x35963f){rpc[_0x1caa('0x31')](_0x712c43)[_0x1caa('0x32')](function(_0x4a0e69){if(_0x35963f){_0x35963f(null,_0x4a0e69);}})[_0x1caa('0x30')](function(_0xf6ecc3){if(_0x35963f){_0x35963f(null,_0xf6ecc3);}});}function setChannelVariables(_0x8cc262){for(var _0x2c0b37 in _0x8cc262){if(_0x8cc262[_0x1caa('0x28')](_0x2c0b37)){if(_0x2c0b37[_0x1caa('0x33')](_0x1caa('0x34'))===0x0){_0x8cc262[_0x2c0b37[_0x1caa('0x35')](0x4)]=_0x8cc262[_0x2c0b37];delete _0x8cc262[_0x2c0b37];}}}}function getLogFromObject(_0x138084){return util[_0x1caa('0x36')](_0x138084,{'showHidden':![],'depth':null});}function agiHandler(_0x3c87d4){var _0x51b8b3,_0xe967c4,_0x1c7d20,_0x3d23a2,_0x3aa9c2;logger[_0x1caa('0x37')](_0x1caa('0x38'),JSON['stringify'](_0x3c87d4,null,0x2));logger[_0x1caa('0x13')](util[_0x1caa('0x14')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3c87d4[_0x1caa('0x1a')],_0x3c87d4[_0x1caa('0x1b')],_0x3c87d4[_0x1caa('0x1c')],_0x3c87d4[_0x1caa('0x1d')],_0x3c87d4[_0x1caa('0x1e')]));_0x3c87d4['on'](_0x1caa('0xe'),errorHandler);_0x3c87d4['on'](_0x1caa('0x39'),closeHandler);_0x3c87d4['on']('timeout',timeoutHandler);_0x3c87d4[_0x1caa('0x3a')]=![];_0x3c87d4['on'](_0x1caa('0x3b'),hangupHandler);var _0x1d7568=getSquareProject[_0x1caa('0x3c')](null,_0x3c87d4[_0x1caa('0x1a')]);if(_0x1d7568){if(_0x1d7568[_0x1caa('0x3d')]){_0x51b8b3=getRoot(_0x1d7568[_0x1caa('0x3d')]);if(_0x51b8b3&&_0x51b8b3[_0x1caa('0x3e')]){logger[_0x1caa('0x37')](_0x1caa('0x3f'),JSON[_0x1caa('0x40')](_0x51b8b3,null,0x2));_0x3c87d4[_0x1caa('0x41')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xe967c4=initGraph(_[_0x1caa('0x27')](_0x51b8b3,_0x1caa('0x42')),_0x51b8b3[_0x1caa('0x42')]);_0x1c7d20=new Vertices(_0x3c87d4,rpc,mailRpc);logger[_0x1caa('0x13')](util[_0x1caa('0x14')](_0x1caa('0x43'),_0x3c87d4['arg_1'],_0x3c87d4[_0x1caa('0x1b')],_0x3c87d4['callerid'],_0x3c87d4[_0x1caa('0x1d')],_0x3c87d4[_0x1caa('0x1e')]));_0xe967c4['traverseBFS'](_0x51b8b3[_0x1caa('0x3e')]['id'],function(_0x1c9d2f){try{_0x1c9d2f=_0x1c7d20[_0x1caa('0x44')](_0x1c9d2f);logger['debug'](_0x1caa('0x45'),JSON[_0x1caa('0x40')](_0x1c9d2f,null,0x2));if(_0x1c9d2f['agicommand']===_0x1caa('0x46')){logger[_0x1caa('0x13')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x3c87d4['context']=_0x1c9d2f[_0x1caa('0x47')]||_0x3c87d4['context'];_0x3c87d4[_0x1caa('0x48')]=_0x1c9d2f[_0x1caa('0x48')];_0x3c87d4[_0x1caa('0x49')]=_0x1c9d2f[_0x1caa('0x49')]?_0x1c9d2f[_0x1caa('0x49')]-0x1:0x1;return null;}else if(_0x1c9d2f&&_0x1c7d20[_0x1c9d2f['agicommand']]){_0x3aa9c2=_0x1c7d20[_0x1c9d2f[_0x1caa('0x23')]](_0x1c9d2f);logger[_0x1caa('0x13')](_0x1caa('0x4a'),JSON['stringify'](_0x3aa9c2,null,0x2));if(_0x3aa9c2&&_0x3aa9c2[_0x1caa('0x4b')]===AGI_CODE_SUCCESS&&_0x3aa9c2[_0x1caa('0x4c')]!==AGI_RESULT_ERROR&&!_0x3c87d4[_0x1caa('0x3a')]){logger[_0x1caa('0x37')](_0x1caa('0x4a'),getLogFromObject(_0x3aa9c2));return _[_0x1caa('0x4d')](_0x3aa9c2['result'])?null:_0x3aa9c2['result']['toString']();}else{logger[_0x1caa('0xe')](_0x1caa('0x4a'),getLogFromObject(_0x3aa9c2));return null;}}else{logger[_0x1caa('0xe')](_0x1caa('0x4e'));return null;}}catch(_0x41e399){logger[_0x1caa('0xe')](_0x41e399[_0x1caa('0xf')]);return null;}});if(_0x51b8b3[_0x1caa('0x4f')]){logger[_0x1caa('0x13')](util[_0x1caa('0x14')](_0x1caa('0x50'),_0x3c87d4[_0x1caa('0x1a')],_0x3c87d4[_0x1caa('0x1b')],_0x3c87d4[_0x1caa('0x1c')],_0x3c87d4[_0x1caa('0x1d')],_0x3c87d4[_0x1caa('0x1e')]));_0xe967c4[_0x1caa('0x51')](_0x51b8b3[_0x1caa('0x4f')]['id'],function(_0x4bd878){try{_0x4bd878=_0x1c7d20[_0x1caa('0x44')](_0x4bd878);logger['debug'](_0x1caa('0x45'),JSON[_0x1caa('0x40')](_0x4bd878,null,0x2));if(_0x4bd878&&_0x1c7d20[_0x4bd878[_0x1caa('0x23')]]){_0x3aa9c2=_0x1c7d20[_0x4bd878[_0x1caa('0x23')]](_0x4bd878);if(_0x3aa9c2){logger[_0x1caa('0x37')](_0x1caa('0x4a'),getLogFromObject(_0x3aa9c2));return _[_0x1caa('0x4d')](_0x3aa9c2['result'])?null:_0x3aa9c2[_0x1caa('0x4c')][_0x1caa('0x52')]();}else{logger[_0x1caa('0xe')](_0x1caa('0x4a'),getLogFromObject(_0x3aa9c2));return null;}}else{logger[_0x1caa('0xe')](_0x1caa('0x4e'));return null;}}catch(_0x214230){logger[_0x1caa('0xe')](_0x214230[_0x1caa('0xf')]);return null;}});}logger[_0x1caa('0x13')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3c87d4[_0x1caa('0x1a')],_0x3c87d4[_0x1caa('0x1b')],_0x3c87d4[_0x1caa('0x1c')],_0x3c87d4[_0x1caa('0x1d')],_0x3c87d4[_0x1caa('0x1e')]));logger['info'](util['format'](_0x1caa('0x53'),_0x3c87d4[_0x1caa('0x47')],_0x3c87d4[_0x1caa('0x48')],parseInt(_0x3c87d4['priority'],0xa)+0x1));_0x3c87d4[_0x1caa('0x54')](_0x3c87d4[_0x1caa('0x47')],_0x3c87d4[_0x1caa('0x48')],parseInt(_0x3c87d4[_0x1caa('0x49')],0xa)+0x1);_0x3c87d4['close']();}}else{logger[_0x1caa('0xe')](util[_0x1caa('0x14')](_0x1caa('0x55'),_0x3c87d4[_0x1caa('0x1a')]));_0x3c87d4['continueAt'](_0x3c87d4[_0x1caa('0x47')],_0x3c87d4[_0x1caa('0x48')],parseInt(_0x3c87d4[_0x1caa('0x49')],0xa)+0x1);_0x3c87d4[_0x1caa('0x39')]();}}else{logger[_0x1caa('0xe')](util[_0x1caa('0x14')]('Project\x20%s\x20not\x20found',_0x3c87d4[_0x1caa('0x1a')]));_0x3c87d4[_0x1caa('0x54')](_0x3c87d4[_0x1caa('0x47')],_0x3c87d4[_0x1caa('0x48')],parseInt(_0x3c87d4[_0x1caa('0x49')],0xa)+0x1);_0x3c87d4[_0x1caa('0x39')]();}}function main(){var _0x5cf2d7;return utilLicense[_0x1caa('0x56')]()[_0x1caa('0x32')](function(_0x210062){if(_0x210062){if(_0x210062[_0x1caa('0x57')]){if(_0x210062['callysquare']&&_0x210062[_0x1caa('0x58')]>0x0){logger['info'](util[_0x1caa('0x14')](_0x1caa('0x59'),_0x210062[_0x1caa('0x58')]));_0x5cf2d7=_0x210062[_0x1caa('0x58')];}else{logger[_0x1caa('0x13')](_0x1caa('0x5a'));}}else{logger['info'](_0x1caa('0x5b'));_0x5cf2d7=-0x1;}}})[_0x1caa('0x30')](function(_0x4bd5e0){logger[_0x1caa('0xe')](_0x1caa('0x5c'),_0x4bd5e0['stack']);})[_0x1caa('0x4f')](function(){var _0x33f14b=require(_0x1caa('0x5d'))(config[_0x1caa('0x7')][_0x1caa('0x12')],config[_0x1caa('0x7')]['ip'],_0x5cf2d7);_0x33f14b['on']('error',errorHandler);_0x33f14b['on'](_0x1caa('0x5e'),listeningHandler);_0x33f14b['on'](_0x1caa('0x5f'),connectionHandler);_0x33f14b['on'](_0x1caa('0x39'),closeHandler);});}main();
\ No newline at end of file
+var _0xb95f=['production','start','root','joinAt','YYYY-MM-DD\x20HH:mm:ss','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','vertex','gotoc','extension','priority','code','result','response','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','context','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','syncho','moment','../../config/environment','../../config/license/util','./graph','./vertices','agi','127.0.0.1','nextTick','log','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','uniqueid','calleridname','callerid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','agicommand','hasOwnProperty','maxRetry','retry','addVertex','omit','mxCell','isArray','length','source','addEdge','target','getSquareProject','then','catch','indexOf','agi_','substring','debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','sync'];(function(_0xb33fba,_0x45f98b){var _0x266e6e=function(_0x316696){while(--_0x316696){_0xb33fba['push'](_0xb33fba['shift']());}};_0x266e6e(++_0x45f98b);}(_0xb95f,0x1df));var _0xfb95=function(_0x3f0b9b,_0xffb6d6){_0x3f0b9b=_0x3f0b9b-0x0;var _0x23d445=_0xb95f[_0x3f0b9b];return _0x23d445;};'use strict';var parser=require(_0xfb95('0x0'));var _=require('lodash');var syncho=require(_0xfb95('0x1'));var util=require('util');var moment=require(_0xfb95('0x2'));var config=require(_0xfb95('0x3'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0xfb95('0x4'));var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0xfb95('0x5'));var Vertices=require(_0xfb95('0x6'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xfb95('0x7')]=_['defaults'](config[_0xfb95('0x7')],{'ip':_0xfb95('0x8'),'port':0x11dd});function connectionHandler(_0x47bc66){process[_0xfb95('0x9')](function(){syncho(function(){try{setChannelVariables(_0x47bc66);agiHandler(_0x47bc66);}catch(_0x562a92){logger['error'](_0x562a92['stack']);}});});}function listeningHandler(){console[_0xfb95('0xa')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0xfb95('0x7')]['port']);logger[_0xfb95('0xb')](util[_0xfb95('0xc')](_0xfb95('0xd'),config['agi']['ip'],config[_0xfb95('0x7')]['port']));}function errorHandler(_0x4f6338){if(_0x4f6338&&_0x4f6338[_0xfb95('0xe')]&&_0x4f6338[_0xfb95('0xf')]){logger[_0xfb95('0x10')](util[_0xfb95('0xc')](_0xfb95('0x11'),_0x4f6338[_0xfb95('0xe')],_0x4f6338[_0xfb95('0xf')]));}else{logger[_0xfb95('0x10')](util[_0xfb95('0xc')](_0xfb95('0x12'),_0x4f6338[_0xfb95('0x13')]));}}function closeHandler(){logger[_0xfb95('0xb')](util['format'](_0xfb95('0x14'),this[_0xfb95('0x15')],this['calleridname'],this['callerid'],this[_0xfb95('0x16')],this[_0xfb95('0x17')]));try{createSquareReport(this);}catch(_0x41b975){logger[_0xfb95('0x10')](_0x41b975[_0xfb95('0x13')]);}}function timeoutHandler(){logger[_0xfb95('0xb')](util['format']('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xfb95('0x15')],this[_0xfb95('0x18')],this[_0xfb95('0x19')],this[_0xfb95('0x16')],this[_0xfb95('0x17')]));}function hangupHandler(){logger[_0xfb95('0xb')](util[_0xfb95('0xc')](_0xfb95('0x1a'),this['arg_1'],this[_0xfb95('0x18')],this[_0xfb95('0x19')],this[_0xfb95('0x16')],this[_0xfb95('0x17')]));this[_0xfb95('0x1b')]=!![];}function getRoot(_0x4d8aa1){return parser[_0xfb95('0x1c')](_0x4d8aa1,{'object':!![]})['mxGraphModel']['root'];}function addVertex(_0x4b851d,_0x53d791,_0xe2fe77){_0x53d791[_0xfb95('0x1d')]=_0xe2fe77;if(_0x53d791[_0xfb95('0x1e')]('retry')){_0x53d791[_0xfb95('0x1f')]=parseInt(_0x53d791[_0xfb95('0x20')],0xa);}_0x4b851d[_0xfb95('0x21')](_[_0xfb95('0x22')](_0x53d791,_0xfb95('0x23')));}function initGraph(_0x21fe94,_0x469eb5){var _0x5c8f93=new Graph();for(var _0x5df14e in _0x21fe94){if(_0x21fe94[_0xfb95('0x1e')](_0x5df14e)){if(_[_0xfb95('0x24')](_0x21fe94[_0x5df14e])){for(var _0x5d48dc=0x0;_0x5d48dc<_0x21fe94[_0x5df14e][_0xfb95('0x25')];_0x5d48dc+=0x1){addVertex(_0x5c8f93,_0x21fe94[_0x5df14e][_0x5d48dc],_0x5df14e);}}else{addVertex(_0x5c8f93,_0x21fe94[_0x5df14e],_0x5df14e);}}}for(var _0x4554c7=0x0;_0x4554c7<_0x469eb5[_0xfb95('0x25')];_0x4554c7+=0x1){if(_0x469eb5[_0x4554c7][_0xfb95('0x26')]&&_0x469eb5[_0x4554c7]['target']){_0x5c8f93[_0xfb95('0x27')](_0x469eb5[_0x4554c7][_0xfb95('0x26')],_0x469eb5[_0x4554c7][_0xfb95('0x28')],_0x469eb5[_0x4554c7]['value']);}}return _0x5c8f93;}function getSquareProject(_0x7b7fea,_0x29b89d){rpc[_0xfb95('0x29')](_0x7b7fea)[_0xfb95('0x2a')](function(_0x603df2){_0x29b89d(null,_0x603df2);})[_0xfb95('0x2b')](function(_0x39e9c0){_0x29b89d(null,_0x39e9c0);});}function createSquareReport(_0x2e7b2b,_0x26aafa){rpc['createSquareReport'](_0x2e7b2b)[_0xfb95('0x2a')](function(_0x20ca79){if(_0x26aafa){_0x26aafa(null,_0x20ca79);}})[_0xfb95('0x2b')](function(_0x138c4e){if(_0x26aafa){_0x26aafa(null,_0x138c4e);}});}function setChannelVariables(_0x47f185){for(var _0x405f75 in _0x47f185){if(_0x47f185[_0xfb95('0x1e')](_0x405f75)){if(_0x405f75[_0xfb95('0x2c')](_0xfb95('0x2d'))===0x0){_0x47f185[_0x405f75[_0xfb95('0x2e')](0x4)]=_0x47f185[_0x405f75];delete _0x47f185[_0x405f75];}}}}function getLogFromObject(_0xf05546){return util['inspect'](_0xf05546,{'showHidden':![],'depth':null});}function agiHandler(_0x5171de){var _0x18cbf2,_0x3cea99,_0x1b52c8,_0x111726,_0x26a04c;logger[_0xfb95('0x2f')](_0xfb95('0x30'),JSON[_0xfb95('0x31')](_0x5171de,null,0x2));logger['info'](util[_0xfb95('0xc')](_0xfb95('0x32'),_0x5171de[_0xfb95('0x15')],_0x5171de[_0xfb95('0x18')],_0x5171de[_0xfb95('0x19')],_0x5171de[_0xfb95('0x16')],_0x5171de[_0xfb95('0x17')]));_0x5171de['on']('error',errorHandler);_0x5171de['on'](_0xfb95('0x33'),closeHandler);_0x5171de['on'](_0xfb95('0x34'),timeoutHandler);_0x5171de[_0xfb95('0x1b')]=![];_0x5171de['on'](_0xfb95('0x35'),hangupHandler);var _0xec8a30=getSquareProject[_0xfb95('0x36')](null,_0x5171de[_0xfb95('0x15')]);if(_0xec8a30){if(_0xec8a30[_0xfb95('0x37')]){_0x18cbf2=getRoot(_0xec8a30[_0xfb95('0x37')]);if(_0x18cbf2&&_0x18cbf2[_0xfb95('0x38')]){logger[_0xfb95('0x2f')](_0xfb95('0x39'),JSON['stringify'](_0x18cbf2,null,0x2));_0x5171de[_0xfb95('0x3a')]=moment()[_0xfb95('0xc')](_0xfb95('0x3b'));_0x3cea99=initGraph(_['omit'](_0x18cbf2,_0xfb95('0x23')),_0x18cbf2[_0xfb95('0x23')]);_0x1b52c8=new Vertices(_0x5171de,rpc,mailRpc);logger[_0xfb95('0xb')](util[_0xfb95('0xc')](_0xfb95('0x3c'),_0x5171de[_0xfb95('0x15')],_0x5171de[_0xfb95('0x18')],_0x5171de[_0xfb95('0x19')],_0x5171de[_0xfb95('0x16')],_0x5171de[_0xfb95('0x17')]));_0x3cea99['traverseBFS'](_0x18cbf2[_0xfb95('0x38')]['id'],function(_0x427db6){try{_0x427db6=_0x1b52c8[_0xfb95('0x3d')](_0x427db6);logger[_0xfb95('0x2f')](_0xfb95('0x3e'),JSON[_0xfb95('0x31')](_0x427db6,null,0x2));if(_0x427db6['agicommand']===_0xfb95('0x3f')){logger[_0xfb95('0xb')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x5171de['context']=_0x427db6['context']||_0x5171de['context'];_0x5171de['extension']=_0x427db6[_0xfb95('0x40')];_0x5171de['priority']=_0x427db6[_0xfb95('0x41')]?_0x427db6[_0xfb95('0x41')]-0x1:0x1;return null;}else if(_0x427db6&&_0x1b52c8[_0x427db6[_0xfb95('0x1d')]]){_0x26a04c=_0x1b52c8[_0x427db6['agicommand']](_0x427db6);logger[_0xfb95('0xb')]('response',JSON[_0xfb95('0x31')](_0x26a04c,null,0x2));if(_0x26a04c&&_0x26a04c[_0xfb95('0x42')]===AGI_CODE_SUCCESS&&_0x26a04c[_0xfb95('0x43')]!==AGI_RESULT_ERROR&&!_0x5171de[_0xfb95('0x1b')]){logger[_0xfb95('0x2f')](_0xfb95('0x44'),getLogFromObject(_0x26a04c));return _[_0xfb95('0x45')](_0x26a04c[_0xfb95('0x43')])?null:_0x26a04c['result'][_0xfb95('0x46')]();}else{logger['error']('response',getLogFromObject(_0x26a04c));return null;}}else{logger['error'](_0xfb95('0x47'));return null;}}catch(_0x3ffbb2){logger[_0xfb95('0x10')](_0x3ffbb2['stack']);return null;}});if(_0x18cbf2[_0xfb95('0x48')]){logger[_0xfb95('0xb')](util[_0xfb95('0xc')](_0xfb95('0x49'),_0x5171de['arg_1'],_0x5171de['calleridname'],_0x5171de[_0xfb95('0x19')],_0x5171de[_0xfb95('0x16')],_0x5171de[_0xfb95('0x17')]));_0x3cea99[_0xfb95('0x4a')](_0x18cbf2[_0xfb95('0x48')]['id'],function(_0x519325){try{_0x519325=_0x1b52c8[_0xfb95('0x3d')](_0x519325);logger['debug'](_0xfb95('0x3e'),JSON[_0xfb95('0x31')](_0x519325,null,0x2));if(_0x519325&&_0x1b52c8[_0x519325[_0xfb95('0x1d')]]){_0x26a04c=_0x1b52c8[_0x519325['agicommand']](_0x519325);if(_0x26a04c){logger[_0xfb95('0x2f')]('response',getLogFromObject(_0x26a04c));return _[_0xfb95('0x45')](_0x26a04c['result'])?null:_0x26a04c[_0xfb95('0x43')][_0xfb95('0x46')]();}else{logger['error'](_0xfb95('0x44'),getLogFromObject(_0x26a04c));return null;}}else{logger[_0xfb95('0x10')](_0xfb95('0x47'));return null;}}catch(_0x239b65){logger[_0xfb95('0x10')](_0x239b65[_0xfb95('0x13')]);return null;}});}logger[_0xfb95('0xb')](util[_0xfb95('0xc')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x5171de[_0xfb95('0x15')],_0x5171de[_0xfb95('0x18')],_0x5171de[_0xfb95('0x19')],_0x5171de['dnid'],_0x5171de[_0xfb95('0x17')]));logger[_0xfb95('0xb')](util[_0xfb95('0xc')](_0xfb95('0x4b'),_0x5171de['context'],_0x5171de[_0xfb95('0x40')],parseInt(_0x5171de[_0xfb95('0x41')],0xa)+0x1));_0x5171de[_0xfb95('0x4c')](_0x5171de[_0xfb95('0x4d')],_0x5171de[_0xfb95('0x40')],parseInt(_0x5171de[_0xfb95('0x41')],0xa)+0x1);_0x5171de[_0xfb95('0x33')]();}}else{logger[_0xfb95('0x10')](util[_0xfb95('0xc')]('Project\x20%s\x20not\x20published',_0x5171de[_0xfb95('0x15')]));_0x5171de[_0xfb95('0x4c')](_0x5171de[_0xfb95('0x4d')],_0x5171de[_0xfb95('0x40')],parseInt(_0x5171de[_0xfb95('0x41')],0xa)+0x1);_0x5171de[_0xfb95('0x33')]();}}else{logger[_0xfb95('0x10')](util['format'](_0xfb95('0x4e'),_0x5171de['arg_1']));_0x5171de[_0xfb95('0x4c')](_0x5171de['context'],_0x5171de['extension'],parseInt(_0x5171de[_0xfb95('0x41')],0xa)+0x1);_0x5171de[_0xfb95('0x33')]();}}function main(){var _0x2287f7;return utilLicense[_0xfb95('0x4f')]()['then'](function(_0x49bb84){if(_0x49bb84){if(_0x49bb84[_0xfb95('0x50')]){if(_0x49bb84[_0xfb95('0x51')]&&_0x49bb84[_0xfb95('0x51')]>0x0){logger[_0xfb95('0xb')](util[_0xfb95('0xc')](_0xfb95('0x52'),_0x49bb84[_0xfb95('0x51')]));_0x2287f7=_0x49bb84['callysquare'];}else{logger[_0xfb95('0xb')](_0xfb95('0x53'));}}else{logger['info'](_0xfb95('0x54'));_0x2287f7=-0x1;}}})['catch'](function(_0x29f16a){logger[_0xfb95('0x10')](_0xfb95('0x55'),_0x29f16a['stack']);})[_0xfb95('0x48')](function(){var _0x24d199=require(_0xfb95('0x56'))(config[_0xfb95('0x7')]['port'],config[_0xfb95('0x7')]['ip'],_0x2287f7);_0x24d199['on']('error',errorHandler);_0x24d199['on'](_0xfb95('0x57'),listeningHandler);_0x24d199['on'](_0xfb95('0x58'),connectionHandler);_0x24d199['on'](_0xfb95('0x33'),closeHandler);});}main();
\ No newline at end of file
index 4a4c7e3..367f166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x056e=['result','catch','bluebird','client','request','error','message'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x056e,0x9c));var _0xe056=function(_0x3ad7ad,_0x291a8d){_0x3ad7ad=_0x3ad7ad-0x0;var _0x225a60=_0x056e[_0x3ad7ad];return _0x225a60;};'use strict';var BPromise=require(_0xe056('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xe056('0x1')]['http']({'port':0x232b});function request(_0x280dbc,_0x1795c5){return new BPromise(function(_0x2c9656,_0x57b00f){return client[_0xe056('0x2')](_0x280dbc,_0x1795c5)['then'](function(_0x164635){if(_0x164635[_0xe056('0x3')]){return _0x57b00f(_0x164635[_0xe056('0x3')][_0xe056('0x4')]);}else{return _0x2c9656(_0x164635[_0xe056('0x5')]);}})[_0xe056('0x6')](function(_0x5d94bb){return _0x57b00f(_0x5d94bb);});});}exports['sendMailMessage']=function(_0x1051a4,_0x95c445){return request('SendMail',{'account':_0x1051a4,'message':_0x95c445});};
\ No newline at end of file
+var _0x81b8=['message','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','then','error'];(function(_0x3e3724,_0x56eccf){var _0x4de33e=function(_0x595294){while(--_0x595294){_0x3e3724['push'](_0x3e3724['shift']());}};_0x4de33e(++_0x56eccf);}(_0x81b8,0x117));var _0x881b=function(_0x44974d,_0x431d3d){_0x44974d=_0x44974d-0x0;var _0x2e67ba=_0x81b8[_0x44974d];return _0x2e67ba;};'use strict';var BPromise=require(_0x881b('0x0'));var jayson=require(_0x881b('0x1'));var client=jayson[_0x881b('0x2')][_0x881b('0x3')]({'port':0x232b});function request(_0xe8422f,_0x3fa386){return new BPromise(function(_0xee2cf6,_0x368ca0){return client[_0x881b('0x4')](_0xe8422f,_0x3fa386)[_0x881b('0x5')](function(_0x1597fb){if(_0x1597fb[_0x881b('0x6')]){return _0x368ca0(_0x1597fb['error'][_0x881b('0x7')]);}else{return _0xee2cf6(_0x1597fb['result']);}})[_0x881b('0x8')](function(_0x1c768c){return _0x368ca0(_0x1c768c);});});}exports[_0x881b('0x9')]=function(_0x131a88,_0x2917b4){return request(_0x881b('0xa'),{'account':_0x131a88,'message':_0x2917b4});};
\ No newline at end of file
index 99056d7..3bfc036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49aa=['prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','length','split','slice','trim','emit','headers','line','exports','util','stream','Transform','call','_localBuffer','_inBody','inherits'];(function(_0x31de0e,_0x151d57){var _0x1ef9b8=function(_0x24ce56){while(--_0x24ce56){_0x31de0e['push'](_0x31de0e['shift']());}};_0x1ef9b8(++_0x151d57);}(_0x49aa,0x173));var _0xa49a=function(_0x1fcedb,_0x4981e6){_0x1fcedb=_0x1fcedb-0x0;var _0x20a622=_0x49aa[_0x1fcedb];return _0x20a622;};'use strict';var util=require(_0xa49a('0x0'));var Transform=require(_0xa49a('0x1'))[_0xa49a('0x2')];function AGIReply(_0x568487){Transform[_0xa49a('0x3')](this,_0x568487);this[_0xa49a('0x4')]='';this[_0xa49a('0x5')]=![];}util[_0xa49a('0x6')](AGIReply,Transform);AGIReply[_0xa49a('0x7')][_0xa49a('0x8')]=function(_0x50e487,_0xa48025,_0x3889ad){var _0x3a2283='\x0a',_0x40ea52=['\x0a\x0a',_0xa49a('0x9')],_0x16155a=-0x1,_0x5e5aa7=-0x1,_0x5f2fa4='',_0x4aef33=0x0,_0x38b9b0='',_0x4d7922='';this[_0xa49a('0x4')]+=_0x50e487[_0xa49a('0xa')]();_0x38b9b0=this['_localBuffer'];if(!this[_0xa49a('0x5')]){_0x4aef33=0x0;while(_0x40ea52[_0x4aef33]){while((_0x5e5aa7=_0x38b9b0[_0xa49a('0xb')](_0x40ea52[_0x4aef33]))!=-0x1){_0x5f2fa4=_0x40ea52[_0x4aef33];_0x4d7922=_0x38b9b0[_0xa49a('0xc')](0x0,_0x5e5aa7);_0x38b9b0=_0x38b9b0[_0xa49a('0xc')](_0x5e5aa7+_0x5f2fa4[_0xa49a('0xd')]);var _0x1d7440=_0x4d7922[_0xa49a('0xe')](_0x3a2283),_0x19c830=0x0,_0x5a76cc={},_0x36d1af='',_0x355785='',_0x1755ad=-0x1;while(_0x1d7440[_0x19c830]){_0x1755ad=_0x1d7440[_0x19c830][_0xa49a('0xb')](':');if(_0x1755ad!=-0x1){_0x36d1af=_0x1d7440[_0x19c830][_0xa49a('0xf')](0x0,_0x1755ad)[_0xa49a('0x10')]();_0x355785=_0x1d7440[_0x19c830]['slice'](_0x1755ad+0x1)[_0xa49a('0x10')]();if(_0x36d1af[_0xa49a('0xd')]>0x0){_0x5a76cc[_0x36d1af]=_0x355785;}}else{}_0x19c830++;}this[_0xa49a('0x11')](_0xa49a('0x12'),_0x5a76cc);this['_inBody']=!![];}_0x4aef33++;}this[_0xa49a('0x4')]=_0x38b9b0;}else{while((_0x16155a=_0x38b9b0[_0xa49a('0xb')](_0x3a2283))!=-0x1){_0x4d7922=_0x38b9b0['substring'](0x0,_0x16155a);this[_0xa49a('0x11')](_0xa49a('0x13'),_0x4d7922);_0x38b9b0=_0x38b9b0['substring'](_0x16155a+_0x3a2283[_0xa49a('0xd')]);}this[_0xa49a('0x4')]=_0x38b9b0;}_0x3889ad();};module[_0xa49a('0x14')]=AGIReply;
\ No newline at end of file
+var _0xd339=['_inBody','prototype','toString','indexOf','substring','length','split','trim','slice','emit','headers','line','exports','Transform','call','_localBuffer'];(function(_0x21cb7f,_0x48cd16){var _0x5a079a=function(_0x569a4f){while(--_0x569a4f){_0x21cb7f['push'](_0x21cb7f['shift']());}};_0x5a079a(++_0x48cd16);}(_0xd339,0xad));var _0x9d33=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xd339[_0x167cc1];return _0x10bc4b;};'use strict';var util=require('util');var Transform=require('stream')[_0x9d33('0x0')];function AGIReply(_0x53920e){Transform[_0x9d33('0x1')](this,_0x53920e);this[_0x9d33('0x2')]='';this[_0x9d33('0x3')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x9d33('0x4')]['_transform']=function(_0x21645c,_0x28bcc5,_0x5509e9){var _0x5652be='\x0a',_0x1f1e42=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x17991f=-0x1,_0x5190d8=-0x1,_0x3ef5d0='',_0x503ad4=0x0,_0x1e5895='',_0x14b604='';this[_0x9d33('0x2')]+=_0x21645c[_0x9d33('0x5')]();_0x1e5895=this['_localBuffer'];if(!this['_inBody']){_0x503ad4=0x0;while(_0x1f1e42[_0x503ad4]){while((_0x5190d8=_0x1e5895[_0x9d33('0x6')](_0x1f1e42[_0x503ad4]))!=-0x1){_0x3ef5d0=_0x1f1e42[_0x503ad4];_0x14b604=_0x1e5895[_0x9d33('0x7')](0x0,_0x5190d8);_0x1e5895=_0x1e5895[_0x9d33('0x7')](_0x5190d8+_0x3ef5d0[_0x9d33('0x8')]);var _0x50ca57=_0x14b604[_0x9d33('0x9')](_0x5652be),_0x337931=0x0,_0x54a5da={},_0x3de393='',_0x10a88f='',_0xfa4d90=-0x1;while(_0x50ca57[_0x337931]){_0xfa4d90=_0x50ca57[_0x337931][_0x9d33('0x6')](':');if(_0xfa4d90!=-0x1){_0x3de393=_0x50ca57[_0x337931]['slice'](0x0,_0xfa4d90)[_0x9d33('0xa')]();_0x10a88f=_0x50ca57[_0x337931][_0x9d33('0xb')](_0xfa4d90+0x1)[_0x9d33('0xa')]();if(_0x3de393[_0x9d33('0x8')]>0x0){_0x54a5da[_0x3de393]=_0x10a88f;}}else{}_0x337931++;}this[_0x9d33('0xc')](_0x9d33('0xd'),_0x54a5da);this[_0x9d33('0x3')]=!![];}_0x503ad4++;}this[_0x9d33('0x2')]=_0x1e5895;}else{while((_0x17991f=_0x1e5895['indexOf'](_0x5652be))!=-0x1){_0x14b604=_0x1e5895['substring'](0x0,_0x17991f);this['emit'](_0x9d33('0xe'),_0x14b604);_0x1e5895=_0x1e5895[_0x9d33('0x7')](_0x17991f+_0x5652be['length']);}this[_0x9d33('0x2')]=_0x1e5895;}_0x5509e9();};module[_0x9d33('0xf')]=AGIReply;
\ No newline at end of file
index 333aa95..2882557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd457=['dsn','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','ShowInterval','Interval','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','PauseUser','agentLogout','LogoutUser','bluebird','lodash','util','client','http','request','then','error','message','catch','ShowSquareProject','production','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','ShowSquareOdbc'];(function(_0x44fd85,_0x5a1838){var _0x282299=function(_0x32535b){while(--_0x32535b){_0x44fd85['push'](_0x44fd85['shift']());}};_0x282299(++_0x5a1838);}(_0xd457,0x97));var _0x7d45=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xd457[_0x19e35c];return _0x3e1fe8;};'use strict';var BPromise=require(_0x7d45('0x0'));var moment=require('moment');var _=require(_0x7d45('0x1'));var util=require(_0x7d45('0x2'));var jayson=require('jayson/promise');var client=jayson[_0x7d45('0x3')][_0x7d45('0x4')]({'port':0x2329});function request(_0x826b21,_0x3bf2d7){return new BPromise(function(_0xe2798e,_0x327136){return client[_0x7d45('0x5')](_0x826b21,_0x3bf2d7)[_0x7d45('0x6')](function(_0x54a80f){if(_0x54a80f[_0x7d45('0x7')]){return _0x327136(_0x54a80f['error'][_0x7d45('0x8')]);}else{return _0xe2798e(_0x54a80f['result']);}})[_0x7d45('0x9')](function(_0x4152ec){return _0x327136(_0x4152ec);});});}exports['getSquareProject']=function(_0x5a8c38){return request(_0x7d45('0xa'),{'options':{'raw':![],'where':{'name':_0x5a8c38},'attributes':[_0x7d45('0xb')]}});};exports['getMailAccountById']=function(_0x43f6fd){return request(_0x7d45('0xc'),{'options':{'raw':![],'where':{'id':_0x43f6fd},'include':[{'model':_0x7d45('0xd'),'as':_0x7d45('0xe')}],'attributes':['id',_0x7d45('0xf'),_0x7d45('0x10')]}});};exports[_0x7d45('0x11')]=function(_0x27e9ef){return request(_0x7d45('0xa'),{'options':{'where':{'id':_0x27e9ef},'attributes':[_0x7d45('0xf')]}});};exports[_0x7d45('0x12')]=function(_0x76f38b){return request(_0x7d45('0x13'),{'options':{'where':{'id':_0x76f38b},'attributes':[_0x7d45('0xf')]}});};exports[_0x7d45('0x14')]=function(_0x489bc){return request(_0x7d45('0x15'),{'options':{'where':{'id':_0x489bc},'attributes':[_0x7d45('0xf')]}});};exports['getSquareOdbcById']=function(_0x375799){return request(_0x7d45('0x16'),{'options':{'where':{'id':_0x375799},'attributes':[_0x7d45('0x17')]}});};exports['getUserById']=function(_0x25d085){return request(_0x7d45('0x18'),{'options':{'where':{'id':_0x25d085},'attributes':['name']}});};exports[_0x7d45('0x19')]=function(_0x166032){return request(_0x7d45('0x1a'),{'options':{'where':{'id':_0x166032},'attributes':[_0x7d45('0xf')]}});};exports[_0x7d45('0x1b')]=function(_0x5873a1){return request(_0x7d45('0x1c'),{'options':{'where':{'id':_0x5873a1},'attributes':[_0x7d45('0x1d')]}});};exports[_0x7d45('0x1e')]=function(_0x451fb4){return request(_0x7d45('0x1f'),{'options':{'raw':![],'where':{'id':_0x451fb4},'include':[{'model':_0x7d45('0x20'),'as':'Intervals'}]}});};exports['getSmsAccountById']=function(_0x5fd8a8){return request(_0x7d45('0x21'),{'options':{'where':{'id':_0x5fd8a8},'attributes':['id',_0x7d45('0xf')]}});};exports[_0x7d45('0x22')]=function(_0x53725b){return request(_0x7d45('0x23'),{'body':_0x53725b});};exports[_0x7d45('0x24')]=function(_0x4a67d5){return request(_0x7d45('0x25'),{'body':_0x4a67d5});};exports[_0x7d45('0x26')]=function(_0x1a5d7a){return request('CreateSquareReport',{'body':_[_0x7d45('0x27')](_0x1a5d7a,{'project_name':_0x1a5d7a[_0x7d45('0x28')],'prev_project_name':_0x1a5d7a['arg_2']||'','is_subproject':_0x1a5d7a[_0x7d45('0x29')]?!![]:![],'leaveAt':moment()['format'](_0x7d45('0x2a'))})});};exports['createSquareRecording']=function(_0x40407a){return request(_0x7d45('0x2b'),{'body':_0x40407a});};exports[_0x7d45('0x2c')]=function(_0x54de9a){return request(_0x7d45('0x2d'),{'body':_0x54de9a});};exports[_0x7d45('0x2e')]=function(_0x3abfd9){return request(_0x7d45('0x2f'),{'options':{'raw':![],'where':{'phone':_0x3abfd9[_0x7d45('0x30')],'ListId':_0x3abfd9[_0x7d45('0x31')]}}})['then'](function(_0x25dfbb){if(_0x25dfbb){return _0x25dfbb;}return request(_0x7d45('0x32'),{'body':_0x3abfd9});});};exports[_0x7d45('0x33')]=function(_0x56b7b2){return request(_0x7d45('0x34'),{'options':{'where':{'id':_0x56b7b2},'attributes':['name']}});};exports[_0x7d45('0x35')]=function(_0x176b36,_0x2d42d7){return request(_0x7d45('0x36'),{'body':{'interface':_0x2d42d7},'options':{'where':_0x176b36}});};exports['agentPause']=function(_0xdecb2d,_0x48ea57,_0x36a330){return request(_0x7d45('0x37'),{'body':{'type':_0x48ea57,'uniqueid':_0x36a330},'options':{'where':_0xdecb2d}});};exports['agentUnpause']=function(_0x530f89){return request('UnpauseUser',{'body':{},'options':{'where':_0x530f89}});};exports[_0x7d45('0x38')]=function(_0x691a3){return request(_0x7d45('0x39'),{'body':{},'options':{'where':_0x691a3}});};
\ No newline at end of file
+var _0xfabe=['PauseUser','agentUnpause','UnpauseUser','LogoutUser','moment','lodash','util','client','http','request','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','format','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','then','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause'];(function(_0x3a7fe5,_0x371426){var _0x18ed66=function(_0x4f6a16){while(--_0x4f6a16){_0x3a7fe5['push'](_0x3a7fe5['shift']());}};_0x18ed66(++_0x371426);}(_0xfabe,0xb8));var _0xefab=function(_0x1d5821,_0x2003f4){_0x1d5821=_0x1d5821-0x0;var _0xd6e3f0=_0xfabe[_0x1d5821];return _0xd6e3f0;};'use strict';var BPromise=require('bluebird');var moment=require(_0xefab('0x0'));var _=require(_0xefab('0x1'));var util=require(_0xefab('0x2'));var jayson=require('jayson/promise');var client=jayson[_0xefab('0x3')][_0xefab('0x4')]({'port':0x2329});function request(_0x235cd5,_0x4f5a62){return new BPromise(function(_0x4317a8,_0x2820c4){return client[_0xefab('0x5')](_0x235cd5,_0x4f5a62)['then'](function(_0x41be25){if(_0x41be25[_0xefab('0x6')]){return _0x2820c4(_0x41be25[_0xefab('0x6')][_0xefab('0x7')]);}else{return _0x4317a8(_0x41be25[_0xefab('0x8')]);}})['catch'](function(_0x376365){return _0x2820c4(_0x376365);});});}exports[_0xefab('0x9')]=function(_0x1b43ca){return request(_0xefab('0xa'),{'options':{'raw':![],'where':{'name':_0x1b43ca},'attributes':[_0xefab('0xb')]}});};exports[_0xefab('0xc')]=function(_0x265014){return request(_0xefab('0xd'),{'options':{'raw':![],'where':{'id':_0x265014},'include':[{'model':_0xefab('0xe'),'as':_0xefab('0xf')}],'attributes':['id',_0xefab('0x10'),_0xefab('0x11')]}});};exports[_0xefab('0x12')]=function(_0x331695){return request(_0xefab('0xa'),{'options':{'where':{'id':_0x331695},'attributes':[_0xefab('0x10')]}});};exports['getVoiceQueueById']=function(_0x2865ff){return request(_0xefab('0x13'),{'options':{'where':{'id':_0x2865ff},'attributes':[_0xefab('0x10')]}});};exports[_0xefab('0x14')]=function(_0x207de7){return request(_0xefab('0x15'),{'options':{'where':{'id':_0x207de7},'attributes':['name']}});};exports[_0xefab('0x16')]=function(_0x2847d1){return request(_0xefab('0x17'),{'options':{'where':{'id':_0x2847d1},'attributes':[_0xefab('0x18')]}});};exports[_0xefab('0x19')]=function(_0x39234c){return request('ShowUser',{'options':{'where':{'id':_0x39234c},'attributes':['name']}});};exports[_0xefab('0x1a')]=function(_0x69790){return request(_0xefab('0x1b'),{'options':{'where':{'id':_0x69790},'attributes':['name']}});};exports[_0xefab('0x1c')]=function(_0x2b140f){return request('ShowSound',{'options':{'where':{'id':_0x2b140f},'attributes':[_0xefab('0x1d')]}});};exports[_0xefab('0x1e')]=function(_0x5901cb){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x5901cb},'include':[{'model':_0xefab('0x1f'),'as':_0xefab('0x20')}]}});};exports[_0xefab('0x21')]=function(_0x3fd42b){return request(_0xefab('0x22'),{'options':{'where':{'id':_0x3fd42b},'attributes':['id',_0xefab('0x10')]}});};exports['createSmsMessage']=function(_0x432cda){return request('CreateSmsMessage',{'body':_0x432cda});};exports[_0xefab('0x23')]=function(_0x1ed0e2){return request(_0xefab('0x24'),{'body':_0x1ed0e2});};exports[_0xefab('0x25')]=function(_0x32df52){return request(_0xefab('0x26'),{'body':_[_0xefab('0x27')](_0x32df52,{'project_name':_0x32df52[_0xefab('0x28')],'prev_project_name':_0x32df52[_0xefab('0x29')]||'','is_subproject':_0x32df52['arg_2']?!![]:![],'leaveAt':moment()[_0xefab('0x2a')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x359a42){return request(_0xefab('0x2b'),{'body':_0x359a42});};exports[_0xefab('0x2c')]=function(_0x2dfb2e){return request(_0xefab('0x2d'),{'body':_0x2dfb2e});};exports[_0xefab('0x2e')]=function(_0x9eda14){return request(_0xefab('0x2f'),{'options':{'raw':![],'where':{'phone':_0x9eda14[_0xefab('0x30')],'ListId':_0x9eda14['ListId']}}})[_0xefab('0x31')](function(_0x38db7d){if(_0x38db7d){return _0x38db7d;}return request(_0xefab('0x32'),{'body':_0x9eda14});});};exports[_0xefab('0x33')]=function(_0x4c68ed){return request(_0xefab('0x34'),{'options':{'where':{'id':_0x4c68ed},'attributes':[_0xefab('0x10')]}});};exports[_0xefab('0x35')]=function(_0x369c26,_0x1803d4){return request(_0xefab('0x36'),{'body':{'interface':_0x1803d4},'options':{'where':_0x369c26}});};exports[_0xefab('0x37')]=function(_0x2dd029,_0x27185c,_0x103266){return request(_0xefab('0x38'),{'body':{'type':_0x27185c,'uniqueid':_0x103266},'options':{'where':_0x2dd029}});};exports[_0xefab('0x39')]=function(_0x228fd7){return request(_0xefab('0x3a'),{'body':{},'options':{'where':_0x228fd7}});};exports['agentLogout']=function(_0x52eace){return request(_0xefab('0x3b'),{'body':{},'options':{'where':_0x52eace}});};
\ No newline at end of file
index d296a2b..52559ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9829=['exports','./polly','./lex'];(function(_0x4f5d64,_0x206e39){var _0x82cbb=function(_0x552ba3){while(--_0x552ba3){_0x4f5d64['push'](_0x4f5d64['shift']());}};_0x82cbb(++_0x206e39);}(_0x9829,0xc4));var _0x9982=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9829[_0x16b9ed];return _0x66b1f8;};var polly=require(_0x9982('0x0'));var lex=require(_0x9982('0x1'));module[_0x9982('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x3c03=['./polly'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0x3c03,0x16d));var _0x33c0=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x3c03[_0x369151];return _0x4292d5;};var polly=require(_0x33c0('0x0'));var lex=require('./lex');module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index b36acf8..72a39bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['exports'];(function(_0x180b86,_0x50eebd){var _0x373c8b=function(_0x5914d2){while(--_0x5914d2){_0x180b86['push'](_0x180b86['shift']());}};_0x373c8b(++_0x50eebd);}(_0xb688,0xcf));var _0x8b68=function(_0x44d8e6,_0x5210fd){_0x44d8e6=_0x44d8e6-0x0;var _0x37f3b8=_0xb688[_0x44d8e6];return _0x37f3b8;};'use strict';var lex=require('./lib/api');module[_0x8b68('0x0')]=function(_0x196cec,_0x266285,_0x1080e8,_0x23bbaa,_0x446b17,_0x4e281c){return lex(_0x196cec,_0x266285,_0x1080e8,_0x23bbaa,_0x446b17,_0x4e281c);};
\ No newline at end of file
+var _0xda3f=['exports'];(function(_0x5e1b91,_0x236f17){var _0x59b52f=function(_0x5c05ed){while(--_0x5c05ed){_0x5e1b91['push'](_0x5e1b91['shift']());}};_0x59b52f(++_0x236f17);}(_0xda3f,0xec));var _0xfda3=function(_0x230516,_0x5f1f4c){_0x230516=_0x230516-0x0;var _0x18e5a1=_0xda3f[_0x230516];return _0x18e5a1;};'use strict';var lex=require('./lib/api');module[_0xfda3('0x0')]=function(_0xf4e78,_0x534697,_0x5299b0,_0x5d7071,_0x3859fe,_0x581693){return lex(_0xf4e78,_0x534697,_0x5299b0,_0x5d7071,_0x3859fe,_0x581693);};
\ No newline at end of file
index 6863702..7d7723b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x14c729,_0x5293e5){var _0x2d914f=function(_0x2d2145){while(--_0x2d2145){_0x14c729['push'](_0x14c729['shift']());}};_0x2d914f(++_0x5293e5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x3bbb13,_0x4e63b3){var _0x540dc9=function(_0x4c9690){while(--_0x4c9690){_0x3bbb13['push'](_0x3bbb13['shift']());}};_0x540dc9(++_0x4e63b3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 62ae664..c9b1722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2141=['./lib/api','exports'];(function(_0x1877c1,_0x209798){var _0x5a5728=function(_0x338173){while(--_0x338173){_0x1877c1['push'](_0x1877c1['shift']());}};_0x5a5728(++_0x209798);}(_0x2141,0xf4));var _0x1214=function(_0x25280a,_0x2f470e){_0x25280a=_0x25280a-0x0;var _0xf38e36=_0x2141[_0x25280a];return _0xf38e36;};'use strict';var polly=require(_0x1214('0x0'));module[_0x1214('0x1')]=function(_0x19d6b9,_0x1833b4,_0x2fb314,_0x343738,_0x1b5b19,_0x6ebb89,_0x44d6df){return polly(_0x19d6b9,_0x1833b4,_0x2fb314,_0x343738,_0x1b5b19,_0x6ebb89,_0x44d6df);};
\ No newline at end of file
+'use strict';var polly=require('./lib/api');module['exports']=function(_0x1d0435,_0x351faf,_0x31ebde,_0x3d5452,_0x2fa56c,_0x3ffa01,_0x8f320b){return polly(_0x1d0435,_0x351faf,_0x31ebde,_0x3d5452,_0x2fa56c,_0x3ffa01,_0x8f320b);};
\ No newline at end of file
index 60c9a42..5e43334 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4706=['path','randomstring','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3'];(function(_0x44c368,_0x2beb2c){var _0x22060c=function(_0x44dfb8){while(--_0x44dfb8){_0x44c368['push'](_0x44c368['shift']());}};_0x22060c(++_0x2beb2c);}(_0x4706,0x156));var _0x6470=function(_0x3784bf,_0x48afff){_0x3784bf=_0x3784bf-0x0;var _0x3ba0fb=_0x4706[_0x3784bf];return _0x3ba0fb;};'use strict';var fs=require('fs');var path=require(_0x6470('0x0'));var BPromise=require('bluebird');var rs=require(_0x6470('0x1'));var AWS=require('aws-sdk');function pollyResult(_0x49d583,_0x496970,_0x483e94){return new BPromise(function(_0x47cdd8,_0xf770e6){_0x49d583['synthesizeSpeech'](_0x496970,function(_0x81680d,_0x745084){if(_0x81680d){_0xf770e6(_0x81680d);}else if(_0x745084){if(_0x745084[_0x6470('0x2')]instanceof Buffer){fs['writeFile'](_0x483e94,_0x745084['AudioStream'],function(_0x90e2d2){if(_0x90e2d2){_0xf770e6(_0x90e2d2);}else{_0x47cdd8();}});}else{_0xf770e6(new Error(_0x6470('0x3')));}}else{_0xf770e6(new Error(_0x6470('0x4')));}});});}module[_0x6470('0x5')]=function(_0x500a35,_0x48190e,_0x45df7e,_0x58f3cf,_0x2ceda9,_0x52525e,_0x3fe0a2){var _0x55734e=new AWS[(_0x6470('0x6'))]({'accessKeyId':_0x500a35,'secretAccessKey':_0x48190e,'region':_0x45df7e});var _0x2d5729={'Text':_0x2ceda9,'TextType':_0x52525e||_0x6470('0x7'),'OutputFormat':_0x6470('0x8'),'VoiceId':_0x58f3cf};return pollyResult(_0x55734e,_0x2d5729,_0x3fe0a2);};
\ No newline at end of file
+var _0x79c3=['Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile'];(function(_0x9102f8,_0x578620){var _0x356161=function(_0x424b5f){while(--_0x424b5f){_0x9102f8['push'](_0x9102f8['shift']());}};_0x356161(++_0x578620);}(_0x79c3,0x94));var _0x379c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x79c3[_0x14add3];return _0x4a174f;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x379c('0x0'));var rs=require(_0x379c('0x1'));var AWS=require(_0x379c('0x2'));function pollyResult(_0x418ddf,_0x1167c7,_0xf2ed08){return new BPromise(function(_0x28b45a,_0x345be2){_0x418ddf[_0x379c('0x3')](_0x1167c7,function(_0x50148d,_0xffef02){if(_0x50148d){_0x345be2(_0x50148d);}else if(_0xffef02){if(_0xffef02[_0x379c('0x4')]instanceof Buffer){fs[_0x379c('0x5')](_0xf2ed08,_0xffef02['AudioStream'],function(_0x151beb){if(_0x151beb){_0x345be2(_0x151beb);}else{_0x28b45a();}});}else{_0x345be2(new Error(_0x379c('0x6')));}}else{_0x345be2(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0x379c('0x7')]=function(_0x1da935,_0xd3daca,_0x538f56,_0x346491,_0x36acdf,_0x5e5baa,_0x4a46c9){var _0x2daccc=new AWS[(_0x379c('0x8'))]({'accessKeyId':_0x1da935,'secretAccessKey':_0xd3daca,'region':_0x538f56});var _0x4355ab={'Text':_0x36acdf,'TextType':_0x5e5baa||_0x379c('0x9'),'OutputFormat':_0x379c('0xa'),'VoiceId':_0x346491};return pollyResult(_0x2daccc,_0x4355ab,_0x4a46c9);};
\ No newline at end of file
index 88d91c0..6c440f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0711=['./lib/api'];(function(_0x9c8b4a,_0x2387ff){var _0x198bef=function(_0x2eb4e8){while(--_0x2eb4e8){_0x9c8b4a['push'](_0x9c8b4a['shift']());}};_0x198bef(++_0x2387ff);}(_0x0711,0x1c3));var _0x1071=function(_0x2d664b,_0x5e06c2){_0x2d664b=_0x2d664b-0x0;var _0x1e72f8=_0x0711[_0x2d664b];return _0x1e72f8;};'use strict';var asr=require(_0x1071('0x0'));module['exports']=function(_0x44e241,_0x5e658c,_0x5205fc,_0x1af777){return asr(_0x44e241,_0x5e658c,_0x5205fc);};
\ No newline at end of file
+var _0x22dd=['exports','./lib/api'];(function(_0x1931bb,_0x142db1){var _0x4b4ebf=function(_0x1e8e69){while(--_0x1e8e69){_0x1931bb['push'](_0x1931bb['shift']());}};_0x4b4ebf(++_0x142db1);}(_0x22dd,0xb9));var _0xd22d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x22dd[_0x3dd15e];return _0x231fd0;};'use strict';var asr=require(_0xd22d('0x0'));module[_0xd22d('0x1')]=function(_0x2099f3,_0x289a4a,_0x1ccec9,_0x118576){return asr(_0x2099f3,_0x289a4a,_0x1ccec9);};
\ No newline at end of file
index d27ed51..ac47044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['LINEAR16','url','bluebird','https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','base64','POST','/v1/speech:recognize?key='];(function(_0x3f7c0b,_0x1b6207){var _0x162f0a=function(_0x55f4d3){while(--_0x55f4d3){_0x3f7c0b['push'](_0x3f7c0b['shift']());}};_0x162f0a(++_0x1b6207);}(_0x9a19,0x114));var _0x99a1=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x9a19[_0x5c2e3e];return _0x53f64a;};'use strict';var url=require(_0x99a1('0x0'));var BPromise=require(_0x99a1('0x1'));var fs=require('fs');var host=_0x99a1('0x2');module['exports']=function(_0x16fd8b,_0x2ba463,_0x112bcc){return new BPromise(function(_0x25da2d,_0x214082){var _0x3d73c5;if(typeof _0x16fd8b!==_0x99a1('0x3')||_0x16fd8b[_0x99a1('0x4')]===0x0){return _0x214082(_0x99a1('0x5'));}if(typeof _0x2ba463!==_0x99a1('0x3')||_0x2ba463[_0x99a1('0x4')]===0x0){return _0x214082('key\x20should\x20be\x20a\x20string');}if(typeof _0x112bcc!=='undefined'&&(typeof _0x112bcc!=='string'||_0x112bcc[_0x99a1('0x4')]===0x0)){return _0x214082(_0x99a1('0x6'));}try{_0x3d73c5=fs['readFileSync'](_0x16fd8b)['toString'](_0x99a1('0x7'));}catch(_0xd7b568){return _0x214082(_0xd7b568);}return _0x25da2d({'method':_0x99a1('0x8'),'uri':host+_0x99a1('0x9')+_0x2ba463,'body':{'config':{'encoding':_0x99a1('0xa'),'sampleRateHertz':'8000','languageCode':_0x112bcc},'audio':{'content':_0x3d73c5}},'json':!![]});});};
\ No newline at end of file
+var _0xbf5c=['POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','length','filepath\x20should\x20be\x20a\x20string','string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString'];(function(_0xc40e0b,_0x701ae7){var _0x1462c1=function(_0x59a96e){while(--_0x59a96e){_0xc40e0b['push'](_0xc40e0b['shift']());}};_0x1462c1(++_0x701ae7);}(_0xbf5c,0xb8));var _0xcbf5=function(_0x546c92,_0x165c9f){_0x546c92=_0x546c92-0x0;var _0x55ca41=_0xbf5c[_0x546c92];return _0x55ca41;};'use strict';var url=require(_0xcbf5('0x0'));var BPromise=require(_0xcbf5('0x1'));var fs=require('fs');var host=_0xcbf5('0x2');module['exports']=function(_0x1ea066,_0x3b2043,_0x3850e7){return new BPromise(function(_0x536351,_0xbbe51d){var _0xd5bfc;if(typeof _0x1ea066!=='string'||_0x1ea066[_0xcbf5('0x3')]===0x0){return _0xbbe51d(_0xcbf5('0x4'));}if(typeof _0x3b2043!==_0xcbf5('0x5')||_0x3b2043['length']===0x0){return _0xbbe51d(_0xcbf5('0x6'));}if(typeof _0x3850e7!==_0xcbf5('0x7')&&(typeof _0x3850e7!=='string'||_0x3850e7['length']===0x0)){return _0xbbe51d(_0xcbf5('0x8'));}try{_0xd5bfc=fs[_0xcbf5('0x9')](_0x1ea066)[_0xcbf5('0xa')]('base64');}catch(_0x320554){return _0xbbe51d(_0x320554);}return _0x536351({'method':_0xcbf5('0xb'),'uri':host+_0xcbf5('0xc')+_0x3b2043,'body':{'config':{'encoding':_0xcbf5('0xd'),'sampleRateHertz':_0xcbf5('0xe'),'languageCode':_0x3850e7},'audio':{'content':_0xd5bfc}},'json':!![]});});};
\ No newline at end of file
index e185c76..66b37f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb81b=['./asr'];(function(_0x569cd0,_0xc50638){var _0x4553a7=function(_0xcfe520){while(--_0xcfe520){_0x569cd0['push'](_0x569cd0['shift']());}};_0x4553a7(++_0xc50638);}(_0xb81b,0x1f0));var _0xbb81=function(_0x308f23,_0x4fe5bc){_0x308f23=_0x308f23-0x0;var _0x2b2b6d=_0xb81b[_0x308f23];return _0x2b2b6d;};var asr=require(_0xbb81('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x0e3f=['exports'];(function(_0x12b859,_0x40804e){var _0x867976=function(_0x43246a){while(--_0x43246a){_0x12b859['push'](_0x12b859['shift']());}};_0x867976(++_0x40804e);}(_0x0e3f,0x84));var _0xf0e3=function(_0x3fdad6,_0x5b03fe){_0x3fdad6=_0x3fdad6-0x0;var _0x425562=_0x0e3f[_0x3fdad6];return _0x425562;};var asr=require('./asr');module[_0xf0e3('0x0')]={'asr':asr};
\ No newline at end of file
index 59e8df6..2aed39a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87e6=['%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','bluebird','dialogflow','https','randomstring','sox','google-tts-api','url','parse','util','./google','./sestek','../../../config/logger','agi','https:','host','path','WHAT_EVER','get','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','statusCode','createWriteStream','finish','info','unlink','pipe','end','protocol','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','generate','.wav','writeFileSync','base64','chmodSync','777','split','toString','?key=','input','voice','then','resolve','tmp','from','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','lang\x20\x22','.mp3','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','lex','format','ispeechASR'];(function(_0x1e72c7,_0x572e0f){var _0xae9ed4=function(_0x3ae3d5){while(--_0x3ae3d5){_0x1e72c7['push'](_0x1e72c7['shift']());}};_0xae9ed4(++_0x572e0f);}(_0x87e6,0x108));var _0x687e=function(_0x19eab0,_0x102a42){_0x19eab0=_0x19eab0-0x0;var _0x26bea6=_0x87e6[_0x19eab0];return _0x26bea6;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x687e('0x0'));var dialogflow=require(_0x687e('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x687e('0x2'));var md5=require('md5');var path=require('path');var querystring=require('querystring');var rp=require('request-promise');var rs=require(_0x687e('0x3'));var sox=require(_0x687e('0x4'));var tts=require(_0x687e('0x5'));var urlParse=require(_0x687e('0x6'))[_0x687e('0x7')];var util=require(_0x687e('0x8'));var aws=require('./aws');var google=require(_0x687e('0x9'));var sestek=require(_0x687e('0xa'));var tilde=require('./tilde');var logger=require(_0x687e('0xb'))(_0x687e('0xc'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x23dad2,_0x3b9642){return new BPromise(function(_0x20044e,_0x462537){var _0xe6fe35=urlParse(_0x23dad2);var _0x33af25=_0xe6fe35['protocol']===_0x687e('0xd')?https:http;var _0x32ac31={'host':_0xe6fe35[_0x687e('0xe')],'path':_0xe6fe35[_0x687e('0xf')],'headers':{'user-agent':_0x687e('0x10')}};_0x33af25[_0x687e('0x11')](_0x32ac31,function(_0x4eb264){if(_0x4eb264['statusCode']!==0xc8){logger[_0x687e('0x12')](_0x687e('0x13')+_0x23dad2+_0x687e('0x14')+_0x4eb264['statusCode']+'\x20('+_0x4eb264[_0x687e('0x15')]+')');_0x462537(new Error('request\x20to\x20'+_0x23dad2+_0x687e('0x14')+_0x4eb264[_0x687e('0x16')]+'\x20('+_0x4eb264[_0x687e('0x15')]+')'));return;}var _0x8d923b=fs[_0x687e('0x17')](_0x3b9642);_0x8d923b['on'](_0x687e('0x18'),function(){logger[_0x687e('0x19')]('finish\x20download\x20file');_0x8d923b['close'](_0x20044e);});_0x8d923b['on'](_0x687e('0x12'),function(_0x359ad6){fs[_0x687e('0x1a')](_0x3b9642);logger['error']('download\x20error',_0x359ad6);_0x462537(_0x359ad6);});_0x4eb264[_0x687e('0x1b')](_0x8d923b);})['on'](_0x687e('0x12'),function(_0xfd6340){logger[_0x687e('0x12')](_0xfd6340);_0x462537(_0xfd6340);})[_0x687e('0x1c')]();});}function uploadFile(_0x2e18ab){return new BPromise(function(_0x3d8c53,_0x586fc8){var _0x372233=urlParse(_0x2e18ab);var _0x3876b2=_0x372233[_0x687e('0x1d')]===_0x687e('0xd')?https:http;var _0x5b8df5={'host':_0x372233[_0x687e('0xe')],'path':_0x372233[_0x687e('0xf')],'headers':{'user-agent':'WHAT_EVER'}};_0x3876b2[_0x687e('0x11')](_0x5b8df5,function(_0x5c03c1){if(_0x5c03c1['statusCode']!==0xc8){_0x586fc8(new Error(_0x687e('0x13')+_0x2e18ab+_0x687e('0x14')+_0x5c03c1[_0x687e('0x16')]+'\x20('+_0x5c03c1['statusMessage']+')'));return;}var _0x1ddbe5='';_0x5c03c1['on'](_0x687e('0x1e'),function(_0x23cfe6){_0x1ddbe5+=_0x23cfe6;});_0x5c03c1['on'](_0x687e('0x1c'),function(){_0x3d8c53(_0x1ddbe5);});})['on'](_0x687e('0x12'),function(_0x30ae46){_0x586fc8(_0x30ae46);})['end']();});}function convertFile(_0x9888ba,_0x2e9171){return new BPromise(function(_0x36cb01,_0x3d8f3f){var _0x5bf6fe=sox[_0x687e('0x1f')](_0x9888ba,_0x2e9171,{'sampleRate':0x1f40,'format':_0x687e('0x20'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x5bf6fe['on'](_0x687e('0x12'),function(_0x6fca2b){logger[_0x687e('0x12')](_0x687e('0x21'),_0x6fca2b);_0x3d8f3f(_0x6fca2b);});_0x5bf6fe['on'](_0x687e('0x1c'),function(){logger['info'](_0x687e('0x22'));_0x36cb01();});_0x5bf6fe[_0x687e('0x23')]();});}function base64Decode(_0x309c6c,_0x369e98){var _0x37dd23=path['resolve'](__dirname,'tmp',rs[_0x687e('0x24')](0x4)+_0x687e('0x25'));fs[_0x687e('0x26')](_0x37dd23,_0x309c6c,_0x687e('0x27'));return convertFile(_0x37dd23,_0x369e98)['then'](function(){try{fs[_0x687e('0x1a')](_0x37dd23);fs[_0x687e('0x28')](_0x369e98,_0x687e('0x29'));}catch(_0x3da776){logger[_0x687e('0x12')](_0x3da776);}return _0x369e98[_0x687e('0x2a')]('.')[0x0];});}function base64Encode(_0x3813e3){var _0x25f3cc=fs['readFileSync'](_0x3813e3);return new Buffer(_0x25f3cc)[_0x687e('0x2b')]('base64');}exports['googleCloudTTS']=function(_0xffd0ea,_0x453d9d,_0xbe915b,_0x336349,_0x443e8c,_0x48db2d){var _0x4fa33f,_0x52fe11;var _0x1748ed='https://texttospeech.googleapis.com/v1/';var _0x33722b=_0x687e('0x2c')+_0xffd0ea;var _0x5f49b2={};if(_0x453d9d==='ssml'){_0x5f49b2['input']={'ssml':_0xbe915b};}else{_0x5f49b2[_0x687e('0x2d')]={'text':_0xbe915b};};_0x5f49b2[_0x687e('0x2e')]={'languageCode':_0x336349,'ssmlGender':_0x443e8c};_0x5f49b2['audioConfig']={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x4f19cb={'url':_0x1748ed+'text:synthesize'+_0x33722b,'method':'POST','json':!![],'body':_0x5f49b2};return rp(_0x4f19cb)[_0x687e('0x2f')](function(_0x1b6c74){return new BPromise(function(_0x211269,_0x511c2e){_0x4fa33f=path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs[_0x687e('0x24')](0x4)+'.mp3');var _0x19359c=Buffer[_0x687e('0x32')](_0x1b6c74['audioContent'],_0x687e('0x27'));return fs['writeFile'](_0x4fa33f,_0x19359c,function(_0x831209){_0x511c2e(_0x831209);},function(_0x1ca51e){fs['chmodSync'](_0x4fa33f,'777');_0x211269(_0x1ca51e);});});})[_0x687e('0x2f')](function(_0x411f35){_0x52fe11=path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs[_0x687e('0x24')](0x4)+_0x687e('0x25'));return convertFile(_0x4fa33f,_0x52fe11);})[_0x687e('0x2f')](function(){try{fs['unlink'](_0x4fa33f);fs['chmodSync'](_0x52fe11,_0x687e('0x29'));}catch(_0x448a2d){logger[_0x687e('0x12')](_0x448a2d);}logger[_0x687e('0x19')](_0x687e('0x33'),_0x52fe11[_0x687e('0x2a')]('.')[0x0]);return _0x52fe11[_0x687e('0x2a')]('.')[0x0];});};exports[_0x687e('0x34')]=function(_0x527d7b,_0x1fc845){var _0x13d2bf=_0x687e('0x35');var _0x7d7d34,_0x40a17d;var _0x459d06;var _0xb6ffbc={'encoding':_0x687e('0x36'),'method':'POST','timeout':0x2710,'url':_0x13d2bf,'headers':{'Content-Type':_0x687e('0x37')},'body':_0x687e('0x38')+encodeURIComponent(JSON['stringify']([[['jQ1olc',JSON[_0x687e('0x39')]([_0x527d7b,_0x1fc845||'en',![],_0x687e('0x3a')]),null,_0x687e('0x3b')]]]))};return rp(_0xb6ffbc)[_0x687e('0x2f')](function(_0x111b56){try{_0x459d06=eval(_0x111b56['slice'](0x5))[0x0][0x2];}catch(_0x468322){throw new Error(_0x687e('0x3c')+_0x111b56[_0x687e('0x1e')]);}if(!_0x459d06){if(_0x527d7b[_0x687e('0x3d')]>0xc8){throw new Error(_0x687e('0x3e'));}else{throw new Error(_0x687e('0x3f')+_0x1fc845+'\x22\x20might\x20not\x20exist');}}try{_0x459d06=eval(_0x459d06)[0x0];}catch(_0x588478){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x687e('0x1e')]);}const _0x15e0be=_0x459d06;_0x7d7d34=path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs['generate'](0x4)+_0x687e('0x40'));fs[_0x687e('0x26')](_0x7d7d34,_0x459d06,{'encoding':_0x687e('0x27')});_0x40a17d=path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs['generate'](0x4)+_0x687e('0x25'));return convertFile(_0x7d7d34,_0x40a17d);})[_0x687e('0x2f')](function(){try{fs[_0x687e('0x1a')](_0x7d7d34);fs[_0x687e('0x28')](_0x40a17d,_0x687e('0x29'));}catch(_0x3f2522){logger[_0x687e('0x12')](_0x3f2522);}logger[_0x687e('0x19')](_0x687e('0x41'),_0x40a17d[_0x687e('0x2a')]('.')[0x0]);return _0x40a17d[_0x687e('0x2a')]('.')[0x0];});};exports[_0x687e('0x42')]=function(_0x2135a1,_0xdd60a4,_0x3d8b97){return google[_0x687e('0x43')](_0x2135a1,_0xdd60a4,_0x3d8b97)[_0x687e('0x2f')](function(_0x47f073){logger['info'](_0x47f073['uri']);return rp(_0x47f073);})[_0x687e('0x2f')](function(_0x2c4010){var _0x40adcd='';var _0x43a1d2=0x0;try{fs[_0x687e('0x1a')](_0x2135a1);}catch(_0x54082c){logger[_0x687e('0x12')](_0x54082c);}if(_0x2c4010&&_0x2c4010[_0x687e('0x44')]){_0x40adcd=_0x2c4010[_0x687e('0x44')][_0x687e('0x45')](function(_0x4701ad){return _0x4701ad&&_0x4701ad['alternatives'][0x0]&&_0x4701ad[_0x687e('0x46')][0x0][_0x687e('0x47')]?_0x4701ad[_0x687e('0x46')][0x0][_0x687e('0x47')]:'';})[_0x687e('0x48')]('\x0a');_0x43a1d2=_0x2c4010[_0x687e('0x44')][_0x687e('0x45')](function(_0x3461b6){return _0x3461b6&&_0x3461b6[_0x687e('0x46')][0x0]&&_0x3461b6['alternatives'][0x0]['confidence']?_0x3461b6[_0x687e('0x46')][0x0][_0x687e('0x49')]:0x0;})['join']('\x0a');}logger[_0x687e('0x19')]('googleASR\x20transcription',_0x40adcd);logger['info'](_0x687e('0x4a'),_0x43a1d2);return{'transcript':_0x40adcd,'confidence':_0x43a1d2};})['catch'](function(_0x5b098b){logger[_0x687e('0x12')](_0x687e('0x4b'),_0x5b098b[_0x687e('0x16')],_0x5b098b[_0x687e('0x4c')],_0x5b098b[_0x687e('0x4d')]);});};exports[_0x687e('0x4e')]=function(_0x213ae0,_0x47879f,_0x411f86,_0x23bb55){var _0x29f5e8=apiai(_0x47879f,{'language':_0x23bb55||'en'});return _0x29f5e8[_0x687e('0x4f')](_0x411f86,{'sessionId':md5(_0x213ae0)})[_0x687e('0x2f')](function(_0x255769){logger[_0x687e('0x19')](JSON['stringify'](_0x255769));return{'source':_0x255769[_0x687e('0x50')][_0x687e('0x51')],'resolvedQuery':_0x255769[_0x687e('0x50')][_0x687e('0x52')],'action':_0x255769[_0x687e('0x50')][_0x687e('0x53')],'actionIncomplete':_0x255769[_0x687e('0x50')][_0x687e('0x54')],'speech':_0x255769[_0x687e('0x50')][_0x687e('0x55')]['speech'],'score':_0x255769[_0x687e('0x50')]['score'],'statusCode':_0x255769[_0x687e('0x56')][_0x687e('0x57')],'endConversation':_0x255769[_0x687e('0x50')][_0x687e('0x58')][_0x687e('0x59')]||![],'isFallbackIntent':_0x255769[_0x687e('0x50')]['metadata'][_0x687e('0x5a')]};});};exports[_0x687e('0x5b')]=function(_0x1d0547,_0x1c4d15,_0x5cea95,_0x4ae8be,_0x24a245,_0x1f11fd){var _0xa8cb97=_0x4ae8be[_0x687e('0x5c')](/\\n/g,'\x0a');var _0x14e5db={'credentials':{'private_key':_0xa8cb97,'client_email':_0x5cea95}};var _0x28325a=new dialogflow[(_0x687e('0x5d'))](_0x14e5db);var _0x1cc28e=_0x28325a[_0x687e('0x5e')](_0x1c4d15,md5(_0x1d0547));var _0x3a589b={'session':_0x1cc28e,'queryInput':{'text':{'text':_0x24a245,'languageCode':_0x1f11fd}}};return _0x28325a['detectIntent'](_0x3a589b)['then'](function(_0x53b017){if(_0x53b017&&_0x53b017[_0x687e('0x3d')]){logger[_0x687e('0x19')](_0x687e('0x5f'),JSON['stringify'](_0x53b017));var _0x407eda=_0x53b017[0x0];if(_0x407eda){var _0x58b435={'action':_0x407eda[_0x687e('0x60')]['action'],'allRequiredParamsPresent':_0x407eda[_0x687e('0x60')][_0x687e('0x61')],'endConversation':_0x407eda[_0x687e('0x60')][_0x687e('0x62')]&&_0x407eda[_0x687e('0x60')][_0x687e('0x62')]['fields']?_0x407eda['queryResult'][_0x687e('0x62')][_0x687e('0x63')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x407eda['queryResult'][_0x687e('0x64')],'intentName':_0x407eda[_0x687e('0x60')][_0x687e('0x65')]['name'],'intentDisplayName':_0x407eda[_0x687e('0x60')]['intent'][_0x687e('0x66')],'isFallbackIntent':_0x407eda['queryResult'][_0x687e('0x65')][_0x687e('0x67')],'languageCode':_0x407eda[_0x687e('0x60')][_0x687e('0x68')],'queryText':_0x407eda[_0x687e('0x60')][_0x687e('0x69')],'responseId':_0x407eda[_0x687e('0x6a')],'score':_0x407eda[_0x687e('0x60')]['intentDetectionConfidence'],'speech':_0x407eda[_0x687e('0x60')][_0x687e('0x64')],'providerResponse':JSON['stringify'](_0x53b017)};return _0x58b435;}}});};exports[_0x687e('0x6b')]=function(_0x5caef1,_0x1f1fea,_0x274fc0,_0x464003){return tilde['asr'](_0x5caef1,_0x1f1fea,_0x274fc0,_0x464003)[_0x687e('0x2f')](function(_0x4d54f9){try{fs[_0x687e('0x1a')](_0x5caef1);}catch(_0x2ee26e){logger[_0x687e('0x12')](_0x2ee26e);}logger[_0x687e('0x19')](_0x687e('0x6c'),_0x4d54f9[_0x687e('0x47')]);logger[_0x687e('0x19')](_0x687e('0x6d'),_0x4d54f9[_0x687e('0x49')]);return _0x4d54f9;});};exports['awsPolly']=function(_0xf0231d,_0xfa6afb,_0x2e7901,_0x1c6423,_0xdedbd7,_0x2af6e9){var _0xd34bc4=path['resolve'](__dirname,_0x687e('0x31'),rs['generate'](0x4)+_0x687e('0x40'));var _0x5ae7c5;return aws[_0x687e('0x6e')](_0xf0231d,_0xfa6afb,_0x2e7901,_0x1c6423,_0xdedbd7,_0x2af6e9,_0xd34bc4)[_0x687e('0x2f')](function(){_0x5ae7c5=path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs[_0x687e('0x24')](0x4)+_0x687e('0x25'));return convertFile(_0xd34bc4,_0x5ae7c5);})[_0x687e('0x2f')](function(){try{fs['unlink'](_0xd34bc4);fs[_0x687e('0x28')](_0x5ae7c5,_0x687e('0x29'));}catch(_0x1899a7){logger[_0x687e('0x12')](_0x1899a7);}return _0x5ae7c5[_0x687e('0x2a')]('.')[0x0];});};exports['awsLex']=function(_0x8448a7,_0x1ebafc,_0x278246,_0x541ea7,_0xdef3fe,_0x3aed36){return aws[_0x687e('0x6f')](_0x8448a7,_0x1ebafc,_0x278246,_0x541ea7,_0xdef3fe,_0x3aed36)[_0x687e('0x2f')](function(_0x10c05d){logger[_0x687e('0x19')](JSON['stringify'](_0x10c05d));return _0x10c05d;});};exports['ispeechTTS']=function(_0x19a53c,_0x3f8935,_0x2d53a2,_0x143098){var _0x34bd50=util[_0x687e('0x70')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x19a53c,encodeURIComponent(_0x3f8935),_0x2d53a2,_0x143098);var _0xc6e54c=path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs[_0x687e('0x24')](0x4)+_0x687e('0x40'));var _0x3b3efc;return downloadFile(_0x34bd50,_0xc6e54c)['then'](function(){_0x3b3efc=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x687e('0x25'));return convertFile(_0xc6e54c,_0x3b3efc);})[_0x687e('0x2f')](function(){try{fs[_0x687e('0x1a')](_0xc6e54c);fs[_0x687e('0x28')](_0x3b3efc,'777');}catch(_0x44bc22){logger[_0x687e('0x12')](_0x44bc22);}return _0x3b3efc['split']('.')[0x0];});};exports[_0x687e('0x71')]=function(_0x2da715,_0x3d0038,_0x5c9633,_0x49c456){var _0x2fca94=util['format'](_0x687e('0x72'),ISPEECH_API,_0x3d0038,_0x5c9633,base64Encode(_0x2da715),_0x49c456?util['format']('model=%s',encodeURIComponent(_0x49c456)):_0x687e('0x73'));return uploadFile(_0x2fca94)[_0x687e('0x2f')](function(_0x3e6499){return querystring['parse'](_0x3e6499);});};exports[_0x687e('0x74')]=function(_0x3e789e,_0x401420){return sestek[_0x687e('0x75')](_0x3e789e,_0x401420)[_0x687e('0x2f')](function(_0x23895e){logger[_0x687e('0x19')](JSON['stringify'](_0x23895e));var _0x2beae1={'speech':_0x23895e[_0x687e('0x76')],'action':_0x23895e['channelData']?_0x23895e[_0x687e('0x77')][_0x687e('0x78')]:undefined,'actiondata':_0x23895e[_0x687e('0x77')]?_0x23895e[_0x687e('0x77')][_0x687e('0x79')]:undefined};if(_0x23895e[_0x687e('0x77')]&&_0x23895e[_0x687e('0x77')][_0x687e('0x7a')]){return base64Decode(_0x23895e[_0x687e('0x77')]['AudioFromTts'][_0x687e('0x7b')],path[_0x687e('0x30')](__dirname,_0x687e('0x31'),rs['generate'](0x4)+_0x687e('0x25')))[_0x687e('0x2f')](function(_0x4cdfc0){_0x2beae1[_0x687e('0x7c')]=_0x4cdfc0;return _0x2beae1;});}return _0x2beae1;});};exports[_0x687e('0x7d')]=function(){return __dirname;};
\ No newline at end of file
+var _0x8966=['catch','name','googleDialogflow','textRequest','result','resolvedQuery','action','code','metadata','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','lex','ispeechTTS','format','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','nda','text','channelData','CustomActionData','AudioFromTts','Data','bluebird','dialogflow','http','https','md5','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','./google','./sestek','./tilde','agi','https://api.ispeech.org/api/rest','protocol','https:','host','path','get','error','\x20failed,\x20status\x20code\x20=\x20','statusCode','createWriteStream','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','WHAT_EVER','request\x20to\x20','statusMessage','data','transcode','wav','finish\x20to\x20convert','start','tmp','generate','base64','then','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','audioConfig','text:synthesize','from','writeFile','chmodSync','777','resolve','.wav','info','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','lang\x20\x22','\x22\x20might\x20not\x20exist','.mp3','writeFileSync','goggleTTS\x20path','googleASR','asr','uri','map','alternatives','transcript','join','results','confidence'];(function(_0x48d732,_0x202a72){var _0x221c79=function(_0x423c1e){while(--_0x423c1e){_0x48d732['push'](_0x48d732['shift']());}};_0x221c79(++_0x202a72);}(_0x8966,0x12c));var _0x6896=function(_0x2ed440,_0x4e45a1){_0x2ed440=_0x2ed440-0x0;var _0x38254a=_0x8966[_0x2ed440];return _0x38254a;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x6896('0x0'));var dialogflow=require(_0x6896('0x1'));var fs=require('fs');var http=require(_0x6896('0x2'));var https=require(_0x6896('0x3'));var md5=require(_0x6896('0x4'));var path=require('path');var querystring=require(_0x6896('0x5'));var rp=require(_0x6896('0x6'));var rs=require(_0x6896('0x7'));var sox=require(_0x6896('0x8'));var tts=require(_0x6896('0x9'));var urlParse=require(_0x6896('0xa'))[_0x6896('0xb')];var util=require('util');var aws=require('./aws');var google=require(_0x6896('0xc'));var sestek=require(_0x6896('0xd'));var tilde=require(_0x6896('0xe'));var logger=require('../../../config/logger')(_0x6896('0xf'));var ISPEECH_API=_0x6896('0x10');function downloadFile(_0x53c82e,_0x395b2b){return new BPromise(function(_0x5de259,_0x3b98cb){var _0x41dd8=urlParse(_0x53c82e);var _0xbe7f6a=_0x41dd8[_0x6896('0x11')]===_0x6896('0x12')?https:http;var _0x5ccea7={'host':_0x41dd8[_0x6896('0x13')],'path':_0x41dd8[_0x6896('0x14')],'headers':{'user-agent':'WHAT_EVER'}};_0xbe7f6a[_0x6896('0x15')](_0x5ccea7,function(_0x584777){if(_0x584777['statusCode']!==0xc8){logger[_0x6896('0x16')]('request\x20to\x20'+_0x53c82e+_0x6896('0x17')+_0x584777[_0x6896('0x18')]+'\x20('+_0x584777['statusMessage']+')');_0x3b98cb(new Error('request\x20to\x20'+_0x53c82e+_0x6896('0x17')+_0x584777[_0x6896('0x18')]+'\x20('+_0x584777['statusMessage']+')'));return;}var _0x364686=fs[_0x6896('0x19')](_0x395b2b);_0x364686['on']('finish',function(){logger['info'](_0x6896('0x1a'));_0x364686[_0x6896('0x1b')](_0x5de259);});_0x364686['on']('error',function(_0x174874){fs[_0x6896('0x1c')](_0x395b2b);logger[_0x6896('0x16')](_0x6896('0x1d'),_0x174874);_0x3b98cb(_0x174874);});_0x584777[_0x6896('0x1e')](_0x364686);})['on']('error',function(_0x2ab2ff){logger[_0x6896('0x16')](_0x2ab2ff);_0x3b98cb(_0x2ab2ff);})[_0x6896('0x1f')]();});}function uploadFile(_0x142488){return new BPromise(function(_0x370e4e,_0x4156ec){var _0x24f761=urlParse(_0x142488);var _0x83af36=_0x24f761[_0x6896('0x11')]===_0x6896('0x12')?https:http;var _0x1ae730={'host':_0x24f761['host'],'path':_0x24f761['path'],'headers':{'user-agent':_0x6896('0x20')}};_0x83af36[_0x6896('0x15')](_0x1ae730,function(_0x392947){if(_0x392947[_0x6896('0x18')]!==0xc8){_0x4156ec(new Error(_0x6896('0x21')+_0x142488+_0x6896('0x17')+_0x392947['statusCode']+'\x20('+_0x392947[_0x6896('0x22')]+')'));return;}var _0x42a9e2='';_0x392947['on'](_0x6896('0x23'),function(_0x5b58a8){_0x42a9e2+=_0x5b58a8;});_0x392947['on'](_0x6896('0x1f'),function(){_0x370e4e(_0x42a9e2);});})['on'](_0x6896('0x16'),function(_0x328a47){_0x4156ec(_0x328a47);})[_0x6896('0x1f')]();});}function convertFile(_0x1ed6bb,_0x60d61f){return new BPromise(function(_0x2c71ab,_0x98e433){var _0x262d73=sox[_0x6896('0x24')](_0x1ed6bb,_0x60d61f,{'sampleRate':0x1f40,'format':_0x6896('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x262d73['on'](_0x6896('0x16'),function(_0x5b70f8){logger[_0x6896('0x16')]('error\x20convert',_0x5b70f8);_0x98e433(_0x5b70f8);});_0x262d73['on']('end',function(){logger['info'](_0x6896('0x26'));_0x2c71ab();});_0x262d73[_0x6896('0x27')]();});}function base64Decode(_0x2ecd80,_0xe6e650){var _0x32b6cc=path['resolve'](__dirname,_0x6896('0x28'),rs[_0x6896('0x29')](0x4)+'.wav');fs['writeFileSync'](_0x32b6cc,_0x2ecd80,_0x6896('0x2a'));return convertFile(_0x32b6cc,_0xe6e650)[_0x6896('0x2b')](function(){try{fs[_0x6896('0x1c')](_0x32b6cc);fs['chmodSync'](_0xe6e650,'777');}catch(_0x691402){logger['error'](_0x691402);}return _0xe6e650[_0x6896('0x2c')]('.')[0x0];});}function base64Encode(_0x227147){var _0x156730=fs[_0x6896('0x2d')](_0x227147);return new Buffer(_0x156730)[_0x6896('0x2e')]('base64');}exports[_0x6896('0x2f')]=function(_0x19b663,_0xf2094e,_0x5e0dc9,_0x556766,_0x453b5e,_0x327ed8){var _0x3b3bc2,_0x473a3d;var _0xfdf4e4=_0x6896('0x30');var _0x54d0ed='?key='+_0x19b663;var _0x2d0134={};if(_0xf2094e===_0x6896('0x31')){_0x2d0134[_0x6896('0x32')]={'ssml':_0x5e0dc9};}else{_0x2d0134['input']={'text':_0x5e0dc9};};_0x2d0134['voice']={'languageCode':_0x556766,'ssmlGender':_0x453b5e};_0x2d0134[_0x6896('0x33')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x5eed02={'url':_0xfdf4e4+_0x6896('0x34')+_0x54d0ed,'method':'POST','json':!![],'body':_0x2d0134};return rp(_0x5eed02)['then'](function(_0x5bb120){return new BPromise(function(_0x602ab4,_0x521fe7){_0x3b3bc2=path['resolve'](__dirname,_0x6896('0x28'),rs['generate'](0x4)+'.mp3');var _0x12b74c=Buffer[_0x6896('0x35')](_0x5bb120['audioContent'],_0x6896('0x2a'));return fs[_0x6896('0x36')](_0x3b3bc2,_0x12b74c,function(_0x39ff8b){_0x521fe7(_0x39ff8b);},function(_0x46f1f7){fs[_0x6896('0x37')](_0x3b3bc2,_0x6896('0x38'));_0x602ab4(_0x46f1f7);});});})[_0x6896('0x2b')](function(_0x23d119){_0x473a3d=path[_0x6896('0x39')](__dirname,'tmp',rs['generate'](0x4)+_0x6896('0x3a'));return convertFile(_0x3b3bc2,_0x473a3d);})[_0x6896('0x2b')](function(){try{fs['unlink'](_0x3b3bc2);fs[_0x6896('0x37')](_0x473a3d,_0x6896('0x38'));}catch(_0x366853){logger[_0x6896('0x16')](_0x366853);}logger[_0x6896('0x3b')]('googleCloudTTS\x20path',_0x473a3d[_0x6896('0x2c')]('.')[0x0]);return _0x473a3d[_0x6896('0x2c')]('.')[0x0];});};exports[_0x6896('0x3c')]=function(_0x1307d1,_0x4369bd){var _0x5b2b4a=_0x6896('0x3d');var _0x3ded28,_0xd4a467;var _0x25231a;var _0x119a03={'encoding':_0x6896('0x3e'),'method':'POST','timeout':0x2710,'url':_0x5b2b4a,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON[_0x6896('0x3f')]([[[_0x6896('0x40'),JSON[_0x6896('0x3f')]([_0x1307d1,_0x4369bd||'en',![],_0x6896('0x41')]),null,_0x6896('0x42')]]]))};return rp(_0x119a03)['then'](function(_0x30769d){try{_0x25231a=eval(_0x30769d[_0x6896('0x43')](0x5))[0x0][0x2];}catch(_0x3870e5){throw new Error(_0x6896('0x44')+_0x30769d['data']);}if(!_0x25231a){if(_0x1307d1[_0x6896('0x45')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x6896('0x46')+_0x4369bd+_0x6896('0x47'));}}try{_0x25231a=eval(_0x25231a)[0x0];}catch(_0x26ee60){throw new Error(_0x6896('0x44')+res[_0x6896('0x23')]);}const _0x94824=_0x25231a;_0x3ded28=path[_0x6896('0x39')](__dirname,_0x6896('0x28'),rs[_0x6896('0x29')](0x4)+_0x6896('0x48'));fs[_0x6896('0x49')](_0x3ded28,_0x25231a,{'encoding':'base64'});_0xd4a467=path['resolve'](__dirname,_0x6896('0x28'),rs[_0x6896('0x29')](0x4)+_0x6896('0x3a'));return convertFile(_0x3ded28,_0xd4a467);})['then'](function(){try{fs[_0x6896('0x1c')](_0x3ded28);fs[_0x6896('0x37')](_0xd4a467,_0x6896('0x38'));}catch(_0x3fc047){logger['error'](_0x3fc047);}logger[_0x6896('0x3b')](_0x6896('0x4a'),_0xd4a467[_0x6896('0x2c')]('.')[0x0]);return _0xd4a467[_0x6896('0x2c')]('.')[0x0];});};exports[_0x6896('0x4b')]=function(_0x24f9b2,_0x1311b5,_0x3734c5){return google[_0x6896('0x4c')](_0x24f9b2,_0x1311b5,_0x3734c5)[_0x6896('0x2b')](function(_0x8df226){logger[_0x6896('0x3b')](_0x8df226[_0x6896('0x4d')]);return rp(_0x8df226);})[_0x6896('0x2b')](function(_0x300413){var _0x21a2d8='';var _0x191ec2=0x0;try{fs[_0x6896('0x1c')](_0x24f9b2);}catch(_0x126daa){logger[_0x6896('0x16')](_0x126daa);}if(_0x300413&&_0x300413['results']){_0x21a2d8=_0x300413['results'][_0x6896('0x4e')](function(_0x3d7b1a){return _0x3d7b1a&&_0x3d7b1a[_0x6896('0x4f')][0x0]&&_0x3d7b1a[_0x6896('0x4f')][0x0][_0x6896('0x50')]?_0x3d7b1a[_0x6896('0x4f')][0x0][_0x6896('0x50')]:'';})[_0x6896('0x51')]('\x0a');_0x191ec2=_0x300413[_0x6896('0x52')]['map'](function(_0x3555c3){return _0x3555c3&&_0x3555c3['alternatives'][0x0]&&_0x3555c3['alternatives'][0x0][_0x6896('0x53')]?_0x3555c3['alternatives'][0x0][_0x6896('0x53')]:0x0;})[_0x6896('0x51')]('\x0a');}logger[_0x6896('0x3b')]('googleASR\x20transcription',_0x21a2d8);logger[_0x6896('0x3b')]('googleASR\x20confidence',_0x191ec2);return{'transcript':_0x21a2d8,'confidence':_0x191ec2};})[_0x6896('0x54')](function(_0x1519c3){logger[_0x6896('0x16')]('[%s]\x20%s:%s',_0x1519c3['statusCode'],_0x1519c3[_0x6896('0x55')],_0x1519c3['message']);});};exports[_0x6896('0x56')]=function(_0x5f4c7f,_0x43e58b,_0x145bb1,_0x342498){var _0x176dfe=apiai(_0x43e58b,{'language':_0x342498||'en'});return _0x176dfe[_0x6896('0x57')](_0x145bb1,{'sessionId':md5(_0x5f4c7f)})[_0x6896('0x2b')](function(_0x953246){logger[_0x6896('0x3b')](JSON[_0x6896('0x3f')](_0x953246));return{'source':_0x953246[_0x6896('0x58')]['source'],'resolvedQuery':_0x953246[_0x6896('0x58')][_0x6896('0x59')],'action':_0x953246[_0x6896('0x58')][_0x6896('0x5a')],'actionIncomplete':_0x953246['result']['actionIncomplete'],'speech':_0x953246[_0x6896('0x58')]['fulfillment']['speech'],'score':_0x953246[_0x6896('0x58')]['score'],'statusCode':_0x953246['status'][_0x6896('0x5b')],'endConversation':_0x953246[_0x6896('0x58')][_0x6896('0x5c')]['endConversation']||![],'isFallbackIntent':_0x953246[_0x6896('0x58')][_0x6896('0x5c')]['isFallbackIntent']};});};exports[_0x6896('0x5d')]=function(_0x5ca761,_0x52186b,_0x5c4afd,_0x39b203,_0x174303,_0x22de13){var _0x41a9fc=_0x39b203[_0x6896('0x5e')](/\\n/g,'\x0a');var _0x125809={'credentials':{'private_key':_0x41a9fc,'client_email':_0x5c4afd}};var _0x19458e=new dialogflow[(_0x6896('0x5f'))](_0x125809);var _0x5260bd=_0x19458e[_0x6896('0x60')](_0x52186b,md5(_0x5ca761));var _0x33c422={'session':_0x5260bd,'queryInput':{'text':{'text':_0x174303,'languageCode':_0x22de13}}};return _0x19458e[_0x6896('0x61')](_0x33c422)[_0x6896('0x2b')](function(_0x3021c3){if(_0x3021c3&&_0x3021c3[_0x6896('0x45')]){logger[_0x6896('0x3b')]('Dialogflow\x20V2\x20response:',JSON['stringify'](_0x3021c3));var _0x2c6ad3=_0x3021c3[0x0];if(_0x2c6ad3){var _0x4d551c={'action':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x5a')],'allRequiredParamsPresent':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x63')],'endConversation':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x64')]&&_0x2c6ad3[_0x6896('0x62')][_0x6896('0x64')][_0x6896('0x65')]?_0x2c6ad3[_0x6896('0x62')]['diagnosticInfo']['fields'][_0x6896('0x66')][_0x6896('0x67')]:![],'fulfillmentText':_0x2c6ad3['queryResult'][_0x6896('0x68')],'intentName':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x69')][_0x6896('0x55')],'intentDisplayName':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x69')]['displayName'],'isFallbackIntent':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x69')][_0x6896('0x6a')],'languageCode':_0x2c6ad3[_0x6896('0x62')][_0x6896('0x6b')],'queryText':_0x2c6ad3['queryResult'][_0x6896('0x6c')],'responseId':_0x2c6ad3[_0x6896('0x6d')],'score':_0x2c6ad3[_0x6896('0x62')]['intentDetectionConfidence'],'speech':_0x2c6ad3[_0x6896('0x62')]['fulfillmentText'],'providerResponse':JSON['stringify'](_0x3021c3)};return _0x4d551c;}}});};exports[_0x6896('0x6e')]=function(_0xe5e7cd,_0x51943c,_0xce8538,_0x46d1c9){return tilde[_0x6896('0x4c')](_0xe5e7cd,_0x51943c,_0xce8538,_0x46d1c9)[_0x6896('0x2b')](function(_0x2d8355){try{fs[_0x6896('0x1c')](_0xe5e7cd);}catch(_0x159cf5){logger[_0x6896('0x16')](_0x159cf5);}logger[_0x6896('0x3b')](_0x6896('0x6f'),_0x2d8355[_0x6896('0x50')]);logger[_0x6896('0x3b')](_0x6896('0x70'),_0x2d8355[_0x6896('0x53')]);return _0x2d8355;});};exports['awsPolly']=function(_0x5ab2c9,_0x8a7dc3,_0x65aa50,_0x1dd78b,_0x49f447,_0x1cb25e){var _0x10fbcd=path['resolve'](__dirname,'tmp',rs[_0x6896('0x29')](0x4)+_0x6896('0x48'));var _0x276b7c;return aws[_0x6896('0x71')](_0x5ab2c9,_0x8a7dc3,_0x65aa50,_0x1dd78b,_0x49f447,_0x1cb25e,_0x10fbcd)['then'](function(){_0x276b7c=path['resolve'](__dirname,_0x6896('0x28'),rs[_0x6896('0x29')](0x4)+_0x6896('0x3a'));return convertFile(_0x10fbcd,_0x276b7c);})['then'](function(){try{fs[_0x6896('0x1c')](_0x10fbcd);fs[_0x6896('0x37')](_0x276b7c,_0x6896('0x38'));}catch(_0x39f7a8){logger[_0x6896('0x16')](_0x39f7a8);}return _0x276b7c['split']('.')[0x0];});};exports[_0x6896('0x72')]=function(_0x6f3785,_0x236495,_0x49d0c0,_0x5ca775,_0x1570be,_0x2fad6e){return aws[_0x6896('0x73')](_0x6f3785,_0x236495,_0x49d0c0,_0x5ca775,_0x1570be,_0x2fad6e)[_0x6896('0x2b')](function(_0xd26145){logger[_0x6896('0x3b')](JSON['stringify'](_0xd26145));return _0xd26145;});};exports[_0x6896('0x74')]=function(_0x5f1c2b,_0x175b5d,_0x30d11c,_0x1d5273){var _0x1647f0=util[_0x6896('0x75')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x5f1c2b,encodeURIComponent(_0x175b5d),_0x30d11c,_0x1d5273);var _0x39c9ab=path['resolve'](__dirname,_0x6896('0x28'),rs[_0x6896('0x29')](0x4)+'.mp3');var _0x12f897;return downloadFile(_0x1647f0,_0x39c9ab)[_0x6896('0x2b')](function(){_0x12f897=path[_0x6896('0x39')](__dirname,_0x6896('0x28'),rs[_0x6896('0x29')](0x4)+_0x6896('0x3a'));return convertFile(_0x39c9ab,_0x12f897);})['then'](function(){try{fs[_0x6896('0x1c')](_0x39c9ab);fs['chmodSync'](_0x12f897,_0x6896('0x38'));}catch(_0x2f0be7){logger[_0x6896('0x16')](_0x2f0be7);}return _0x12f897['split']('.')[0x0];});};exports[_0x6896('0x76')]=function(_0x372827,_0x1dc498,_0x19fde0,_0x3d2230){var _0x4f778f=util['format'](_0x6896('0x77'),ISPEECH_API,_0x1dc498,_0x19fde0,base64Encode(_0x372827),_0x3d2230?util[_0x6896('0x75')](_0x6896('0x78'),encodeURIComponent(_0x3d2230)):_0x6896('0x79'));return uploadFile(_0x4f778f)['then'](function(_0xa9c7){return querystring[_0x6896('0xb')](_0xa9c7);});};exports['sestekNDA']=function(_0x5be0eb,_0x56432d){return sestek[_0x6896('0x7a')](_0x5be0eb,_0x56432d)[_0x6896('0x2b')](function(_0xe500bb){logger[_0x6896('0x3b')](JSON['stringify'](_0xe500bb));var _0x3c46c2={'speech':_0xe500bb[_0x6896('0x7b')],'action':_0xe500bb[_0x6896('0x7c')]?_0xe500bb[_0x6896('0x7c')]['CustomAction']:undefined,'actiondata':_0xe500bb[_0x6896('0x7c')]?_0xe500bb[_0x6896('0x7c')][_0x6896('0x7d')]:undefined};if(_0xe500bb[_0x6896('0x7c')]&&_0xe500bb[_0x6896('0x7c')][_0x6896('0x7e')]){return base64Decode(_0xe500bb['channelData']['AudioFromTts'][_0x6896('0x7f')],path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x6896('0x3a')))[_0x6896('0x2b')](function(_0x5b960){_0x3c46c2['audiofile']=_0x5b960;return _0x3c46c2;});}return _0x3c46c2;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 1bf65d3..c13463d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccbc=['./nda','exports'];(function(_0x23357b,_0x26beb0){var _0x1438ea=function(_0x5aa3cd){while(--_0x5aa3cd){_0x23357b['push'](_0x23357b['shift']());}};_0x1438ea(++_0x26beb0);}(_0xccbc,0x17c));var _0xcccb=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xccbc[_0x40a045];return _0x1a687c;};var nda=require(_0xcccb('0x0'));module[_0xcccb('0x1')]={'nda':nda};
\ No newline at end of file
+var _0xc3fa=['./nda','exports'];(function(_0x5e2a99,_0x255e0d){var _0x319ccd=function(_0x2be95c){while(--_0x2be95c){_0x5e2a99['push'](_0x5e2a99['shift']());}};_0x319ccd(++_0x255e0d);}(_0xc3fa,0x186));var _0xac3f=function(_0x236d24,_0x29e80a){_0x236d24=_0x236d24-0x0;var _0x1574cf=_0xc3fa[_0x236d24];return _0x1574cf;};var nda=require(_0xac3f('0x0'));module[_0xac3f('0x1')]={'nda':nda};
\ No newline at end of file
index 39b71dd..c760cee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae2=['../../../../../config/logger','agi','exports','POST','ndauth_url','/token','password','then','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','calleridname','extension','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ae2,0x1ed));var _0x26ae=function(_0x28c574,_0x3282b1){_0x28c574=_0x28c574-0x0;var _0x3f1093=_0x6ae2[_0x28c574];return _0x3f1093;};'use strict';var rp=require(_0x26ae('0x0'));var url=require(_0x26ae('0x1'));var logger=require(_0x26ae('0x2'))(_0x26ae('0x3'));module[_0x26ae('0x4')]=function(_0x13dbf4,_0xde8ef3){var _0x281760={'method':_0x26ae('0x5'),'uri':url['resolve'](_0xde8ef3[_0x26ae('0x6')],_0x26ae('0x7')),'form':{'grant_type':'password','username':_0xde8ef3['username'],'password':_0xde8ef3[_0x26ae('0x8')]},'json':!![]};return rp(_0x281760)[_0x26ae('0x9')](function(_0x473907){var _0x151de3={'method':_0x26ae('0x5'),'uri':url[_0x26ae('0xa')](_0xde8ef3[_0x26ae('0xb')],_0x26ae('0xc')),'body':{'type':_0xde8ef3[_0x26ae('0xd')]||_0x26ae('0xe'),'channelId':_0x26ae('0xf'),'conversation':{'id':_0x13dbf4[_0x26ae('0x10')]},'from':{'id':_0x13dbf4['callerid'],'name':_0x13dbf4[_0x26ae('0x11')]},'recipient':{'id':_0x13dbf4['dnid'],'name':_0x13dbf4[_0x26ae('0x12')]},'text':_0xde8ef3['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x473907[_0x26ae('0x13')]},'json':!![]};if(_0xde8ef3[_0x26ae('0x14')]){_0x151de3[_0x26ae('0x15')][_0x26ae('0x16')][_0x26ae('0x17')]=_0xde8ef3[_0x26ae('0x14')];}if(_0xde8ef3[_0x26ae('0x18')]=='1'){_0x151de3[_0x26ae('0x15')][_0x26ae('0x16')][_0x26ae('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x26ae('0x1a')};}if(_0xde8ef3[_0x26ae('0x1b')]){_0x151de3['body'][_0x26ae('0x16')][_0x26ae('0x1c')]=_0xde8ef3['custom_action'];if(_0xde8ef3[_0x26ae('0x1d')]){_0x151de3[_0x26ae('0x15')][_0x26ae('0x16')][_0x26ae('0x1e')]=_0xde8ef3[_0x26ae('0x1d')];}}logger[_0x26ae('0x1f')](JSON[_0x26ae('0x20')](_0x151de3));return rp(_0x151de3);});};
\ No newline at end of file
+var _0x682e=['text','Bearer\x20','access_token','project','body','channelData','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomAction','CustomActionData','custom_action_data','info','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','uniqueid','calleridname'];(function(_0x496889,_0x2effba){var _0x4003d0=function(_0x485d53){while(--_0x485d53){_0x496889['push'](_0x496889['shift']());}};_0x4003d0(++_0x2effba);}(_0x682e,0x1ce));var _0xe682=function(_0x2cb85a,_0x5c14c5){_0x2cb85a=_0x2cb85a-0x0;var _0x52797d=_0x682e[_0x2cb85a];return _0x52797d;};'use strict';var rp=require(_0xe682('0x0'));var url=require(_0xe682('0x1'));var logger=require(_0xe682('0x2'))(_0xe682('0x3'));module[_0xe682('0x4')]=function(_0x31f019,_0x5cbf47){var _0x2779a7={'method':_0xe682('0x5'),'uri':url[_0xe682('0x6')](_0x5cbf47[_0xe682('0x7')],_0xe682('0x8')),'form':{'grant_type':_0xe682('0x9'),'username':_0x5cbf47[_0xe682('0xa')],'password':_0x5cbf47[_0xe682('0x9')]},'json':!![]};return rp(_0x2779a7)[_0xe682('0xb')](function(_0x1ab428){var _0x4e7e7d={'method':_0xe682('0x5'),'uri':url[_0xe682('0x6')](_0x5cbf47[_0xe682('0xc')],_0xe682('0xd')),'body':{'type':_0x5cbf47[_0xe682('0xe')]||_0xe682('0xf'),'channelId':'Nda','conversation':{'id':_0x31f019[_0xe682('0x10')]},'from':{'id':_0x31f019['callerid'],'name':_0x31f019[_0xe682('0x11')]},'recipient':{'id':_0x31f019['dnid'],'name':_0x31f019['extension']},'text':_0x5cbf47[_0xe682('0x12')],'channelData':{}},'headers':{'Authorization':_0xe682('0x13')+_0x1ab428[_0xe682('0x14')]},'json':!![]};if(_0x5cbf47[_0xe682('0x15')]){_0x4e7e7d[_0xe682('0x16')][_0xe682('0x17')]['ProjectName']=_0x5cbf47[_0xe682('0x15')];}if(_0x5cbf47[_0xe682('0x18')]=='1'){_0x4e7e7d[_0xe682('0x16')][_0xe682('0x17')][_0xe682('0x19')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xe682('0x1a')};}if(_0x5cbf47[_0xe682('0x1b')]){_0x4e7e7d[_0xe682('0x16')]['channelData'][_0xe682('0x1c')]=_0x5cbf47['custom_action'];if(_0x5cbf47['custom_action_data']){_0x4e7e7d['body'][_0xe682('0x17')][_0xe682('0x1d')]=_0x5cbf47[_0xe682('0x1e')];}}logger[_0xe682('0x1f')](JSON['stringify'](_0x4e7e7d));return rp(_0x4e7e7d);});};
\ No newline at end of file
index c7ef4e7..027dab8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8d5=['exports','./lib/api'];(function(_0x264b9b,_0xa1181e){var _0x4c7a0e=function(_0x4b77a0){while(--_0x4b77a0){_0x264b9b['push'](_0x264b9b['shift']());}};_0x4c7a0e(++_0xa1181e);}(_0xf8d5,0x175));var _0x5f8d=function(_0x20ed89,_0x419c9d){_0x20ed89=_0x20ed89-0x0;var _0xf95843=_0xf8d5[_0x20ed89];return _0xf95843;};'use strict';var asr=require(_0x5f8d('0x0'));module[_0x5f8d('0x1')]=function(_0x54ffe8,_0x3b7073,_0x549e6a,_0x4d6881){return asr(_0x54ffe8,_0x3b7073,_0x549e6a,_0x4d6881);};
\ No newline at end of file
+var _0x142a=['exports','./lib/api'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x142a,0x18b));var _0xa142=function(_0x20d2c1,_0x5ce7b3){_0x20d2c1=_0x20d2c1-0x0;var _0x57948a=_0x142a[_0x20d2c1];return _0x57948a;};'use strict';var asr=require(_0xa142('0x0'));module[_0xa142('0x1')]=function(_0x2756fa,_0x7a8a7b,_0x2785f7,_0x5c2a83){return asr(_0x2756fa,_0x7a8a7b,_0x2785f7,_0x5c2a83);};
\ No newline at end of file
index f63e7b4..8effb9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa969=['hypotheses','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','close','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','exports','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','data','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses'];(function(_0x3341ee,_0x5a6554){var _0x3516df=function(_0x26e200){while(--_0x26e200){_0x3341ee['push'](_0x3341ee['shift']());}};_0x3516df(++_0x5a6554);}(_0xa969,0x1e6));var _0x9a96=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa969[_0xea8947];return _0x2455e9;};'use strict';var BPromise=require(_0x9a96('0x0'));var _=require(_0x9a96('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x9a96('0x2'));var crypto=require(_0x9a96('0x3'));var logger=require(_0x9a96('0x4'))(_0x9a96('0x5'));module[_0x9a96('0x6')]=function(_0x10bdff,_0x4cc97d,_0x3ffda9,_0x1720cc){return new BPromise(function(_0x41a211,_0x23abeb){logger['info'](_0x9a96('0x7'),_0x1720cc||_0x9a96('0x8'));var _0x50ba71=new WebSocket(_0x1720cc||_0x9a96('0x8'),{'perMessageDeflate':![]});var _0x130a8f='';var _0x46d7f0='0';var _0x564b4b='1';var _0x2d5f22=_0x9a96('0x9');function _0x3128e8(_0x5797a4){var _0x21d175=crypto[_0x9a96('0xa')](_0x9a96('0xb'));_0x21d175['update'](_0x5797a4);return _0x21d175[_0x9a96('0xc')](_0x9a96('0xd'));}function _0x47821e(){try{logger[_0x9a96('0xe')](_0x9a96('0xf'));var _0x18ee66=moment()[_0x9a96('0x10')]();var _0x12008a=_0x3128e8(_0x18ee66+_0x4cc97d+_0x3ffda9);_0x50ba71[_0x9a96('0x11')](JSON['stringify']({'appID':_0x4cc97d,'timestamp':_0x18ee66,'appKey':_0x12008a}));var _0x33061d=fs[_0x9a96('0x12')](_0x10bdff);_0x33061d['on'](_0x9a96('0x13'),function(_0x175872){_0x50ba71['send'](_0x175872);});_0x33061d['on']('close',function(){_0x50ba71['send'](_0x9a96('0x14'));});}catch(_0x133e1d){logger[_0x9a96('0x15')](_0x9a96('0x16'),JSON[_0x9a96('0x17')](_0x133e1d));_0x50ba71[_0x9a96('0x18')]();}}function _0x56cc35(_0x3f59b5){try{if(_0x3f59b5){var _0x1d6c3e=JSON[_0x9a96('0x19')](_0x3f59b5);switch(_0x1d6c3e[_0x9a96('0x1a')]){case 0x0:if(_0x1d6c3e[_0x9a96('0x1b')]){if(_0x1d6c3e[_0x9a96('0x1b')][_0x9a96('0x1c')]){logger['info'](_0x9a96('0x1d'),JSON['stringify'](_0x1d6c3e['result'][_0x9a96('0x1e')]));_0x130a8f=_0x1d6c3e[_0x9a96('0x1b')]['hypotheses'][0x0]['transcript'];_0x46d7f0=_0x1d6c3e[_0x9a96('0x1b')][_0x9a96('0x1e')][0x0]['likelihood'];_0x564b4b='0';_0x2d5f22=_0x9a96('0x1f');_0x50ba71[_0x9a96('0x18')]();}}break;case 0x1:logger[_0x9a96('0xe')](_0x9a96('0x9'));_0x564b4b='1';_0x2d5f22=_0x9a96('0x9');break;case 0x2:logger[_0x9a96('0xe')](_0x9a96('0x20'));_0x564b4b='2';_0x2d5f22=_0x9a96('0x20');break;case 0x9:logger[_0x9a96('0xe')](_0x9a96('0x21'));_0x564b4b='9';_0x2d5f22='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger['info'](_0x9a96('0x22'));_0x564b4b='10';_0x2d5f22=_0x9a96('0x22');break;case 0xb:logger[_0x9a96('0xe')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x564b4b='11';_0x2d5f22='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x53e72f){logger['error'](_0x9a96('0x23'),JSON[_0x9a96('0x17')](_0x53e72f));_0x50ba71[_0x9a96('0x18')]();}}function _0x295461(){logger[_0x9a96('0xe')](_0x9a96('0x24'));_0x41a211({'transcript':_0x130a8f,'confidence':_0x46d7f0,'status':_0x564b4b,'status_message':_0x2d5f22});}function _0x4308ef(_0x16de35){logger[_0x9a96('0x15')](_0x9a96('0x25'));if(!_[_0x9a96('0x26')](_0x16de35)){logger[_0x9a96('0x15')](_[_0x9a96('0x27')](_0x16de35)?JSON[_0x9a96('0x17')](_0x16de35):_0x16de35);}}_0x50ba71['on'](_0x9a96('0x28'),_0x47821e);_0x50ba71['on'](_0x9a96('0x29'),_0x56cc35);_0x50ba71['on'](_0x9a96('0x2a'),_0x295461);_0x50ba71['on'](_0x9a96('0x15'),_0x4308ef);});};
\ No newline at end of file
+var _0x82e0=['moment','crypto','../../../../../../config/logger','agi','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','info','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isObject','open','message','lodash'];(function(_0x1dc1c2,_0x2085a4){var _0x23c194=function(_0x4f5274){while(--_0x4f5274){_0x1dc1c2['push'](_0x1dc1c2['shift']());}};_0x23c194(++_0x2085a4);}(_0x82e0,0x1c2));var _0x082e=function(_0x4c7d79,_0xa1ebef){_0x4c7d79=_0x4c7d79-0x0;var _0x4644ac=_0x82e0[_0x4c7d79];return _0x4644ac;};'use strict';var BPromise=require('bluebird');var _=require(_0x082e('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x082e('0x1'));var crypto=require(_0x082e('0x2'));var logger=require(_0x082e('0x3'))(_0x082e('0x4'));module['exports']=function(_0x444c9d,_0x3bec89,_0x562273,_0x39cc85){return new BPromise(function(_0x530d5b,_0xea0cd3){logger['info'](_0x082e('0x5'),_0x39cc85||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x4e49ac=new WebSocket(_0x39cc85||_0x082e('0x6'),{'perMessageDeflate':![]});var _0x3f94b6='';var _0x23c7da='0';var _0x2a3b98='1';var _0xe6fe9=_0x082e('0x7');function _0x1c1452(_0x2ef457){var _0x15b2c6=crypto[_0x082e('0x8')](_0x082e('0x9'));_0x15b2c6[_0x082e('0xa')](_0x2ef457);return _0x15b2c6[_0x082e('0xb')]('hex');}function _0x175acc(){try{logger['info'](_0x082e('0xc'));var _0x2bde88=moment()['unix']();var _0x34f143=_0x1c1452(_0x2bde88+_0x3bec89+_0x562273);_0x4e49ac[_0x082e('0xd')](JSON[_0x082e('0xe')]({'appID':_0x3bec89,'timestamp':_0x2bde88,'appKey':_0x34f143}));var _0x318159=fs[_0x082e('0xf')](_0x444c9d);_0x318159['on'](_0x082e('0x10'),function(_0x23313a){_0x4e49ac[_0x082e('0xd')](_0x23313a);});_0x318159['on'](_0x082e('0x11'),function(){_0x4e49ac[_0x082e('0xd')](_0x082e('0x12'));});}catch(_0x13f676){logger[_0x082e('0x13')](_0x082e('0x14'),JSON[_0x082e('0xe')](_0x13f676));_0x4e49ac[_0x082e('0x15')]();}}function _0x3bdd69(_0x1e3fbf){try{if(_0x1e3fbf){var _0x333cb2=JSON[_0x082e('0x16')](_0x1e3fbf);switch(_0x333cb2[_0x082e('0x17')]){case 0x0:if(_0x333cb2[_0x082e('0x18')]){if(_0x333cb2[_0x082e('0x18')][_0x082e('0x19')]){logger[_0x082e('0x1a')](_0x082e('0x1b'),JSON[_0x082e('0xe')](_0x333cb2[_0x082e('0x18')][_0x082e('0x1c')]));_0x3f94b6=_0x333cb2[_0x082e('0x18')][_0x082e('0x1c')][0x0][_0x082e('0x1d')];_0x23c7da=_0x333cb2[_0x082e('0x18')][_0x082e('0x1c')][0x0][_0x082e('0x1e')];_0x2a3b98='0';_0xe6fe9=_0x082e('0x1f');_0x4e49ac[_0x082e('0x15')]();}}break;case 0x1:logger[_0x082e('0x1a')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x2a3b98='1';_0xe6fe9=_0x082e('0x7');break;case 0x2:logger[_0x082e('0x1a')](_0x082e('0x20'));_0x2a3b98='2';_0xe6fe9='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x082e('0x1a')](_0x082e('0x21'));_0x2a3b98='9';_0xe6fe9='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger['info'](_0x082e('0x22'));_0x2a3b98='10';_0xe6fe9='Authentication\x20failed.';break;case 0xb:logger['info'](_0x082e('0x23'));_0x2a3b98='11';_0xe6fe9='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x56fa50){logger['error']('Tilde\x20ASR\x20parse\x20error',JSON[_0x082e('0xe')](_0x56fa50));_0x4e49ac['terminate']();}}function _0x53ec66(){logger[_0x082e('0x1a')](_0x082e('0x24'));_0x530d5b({'transcript':_0x3f94b6,'confidence':_0x23c7da,'status':_0x2a3b98,'status_message':_0xe6fe9});}function _0x5646f7(_0x336ca8){logger[_0x082e('0x13')](_0x082e('0x25'));if(!_['isNil'](_0x336ca8)){logger[_0x082e('0x13')](_[_0x082e('0x26')](_0x336ca8)?JSON[_0x082e('0xe')](_0x336ca8):_0x336ca8);}}_0x4e49ac['on'](_0x082e('0x27'),_0x175acc);_0x4e49ac['on'](_0x082e('0x28'),_0x3bdd69);_0x4e49ac['on'](_0x082e('0x11'),_0x53ec66);_0x4e49ac['on']('error',_0x5646f7);});};
\ No newline at end of file
index c69c00e..39da173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd62=['exports'];(function(_0x33dcc7,_0x4454c0){var _0x41b07a=function(_0x1b4c05){while(--_0x1b4c05){_0x33dcc7['push'](_0x33dcc7['shift']());}};_0x41b07a(++_0x4454c0);}(_0xbd62,0x6c));var _0x2bd6=function(_0x34bad0,_0xb64396){_0x34bad0=_0x34bad0-0x0;var _0x4a0db4=_0xbd62[_0x34bad0];return _0x4a0db4;};var asr=require('./asr');module[_0x2bd6('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xabc6=['exports','./asr'];(function(_0xe15270,_0x227d06){var _0x1e813b=function(_0x1d590d){while(--_0x1d590d){_0xe15270['push'](_0xe15270['shift']());}};_0x1e813b(++_0x227d06);}(_0xabc6,0x71));var _0x6abc=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xabc6[_0x4b2863];return _0x567d67;};var asr=require(_0x6abc('0x0'));module[_0x6abc('0x1')]={'asr':asr};
\ No newline at end of file
index 7be066a..15cf6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb986=['E_AGI_ARGUMENT_PORT','listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','destroy','E_AGI_SERVER_MAXCONNECTION','ready','close','nextTick','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1','call','emit','error'];(function(_0x172298,_0x542449){var _0x44856d=function(_0xa648ba){while(--_0xa648ba){_0x172298['push'](_0x172298['shift']());}};_0x44856d(++_0x542449);}(_0xb986,0x90));var _0x6b98=function(_0x148d75,_0xf5a12c){_0x148d75=_0x148d75-0x0;var _0x2a0ac3=_0xb986[_0x148d75];return _0x2a0ac3;};'use strict';var util=require(_0x6b98('0x0'));var net=require(_0x6b98('0x1'));var EventEmitter=require(_0x6b98('0x2'))[_0x6b98('0x3')];var AGIError=require(_0x6b98('0x4'));var AGIChannel=require(_0x6b98('0x5'));var AGIServer=function(_0x2fc9ee,_0x10d78e,_0x1f44b9){var _0x2eb3e1=this,_0x2fc9ee=_0x2fc9ee||0x11dd,_0x10d78e=_0x10d78e||_0x6b98('0x6'),_0x36fbf6=null,_0x5432a7=0x0;EventEmitter[_0x6b98('0x7')](_0x2eb3e1);function _0x57b6cc(){if(!_0x2fc9ee){_0x2eb3e1[_0x6b98('0x8')](_0x6b98('0x9'),new AGIError(_0x6b98('0xa')));return![];}_0x36fbf6=net['createServer']();_0x36fbf6[_0x6b98('0xb')](_0x2fc9ee,_0x10d78e);_0x36fbf6['on'](_0x6b98('0xc'),function(){_0x2eb3e1[_0x6b98('0x8')](_0x6b98('0xc'));});_0x36fbf6['on'](_0x6b98('0xd'),function(_0x438141){_0x36fbf6[_0x6b98('0xe')](function(_0x5a8f51,_0x31811a){if(_0x5a8f51){_0x2eb3e1['emit'](_0x6b98('0x9'),new AGIError(_0x6b98('0xf'),_0x5a8f51));}else if(_0x1f44b9&&_0x1f44b9<0x0){_0x2eb3e1['emit']('error',new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x438141[_0x6b98('0x10')]();}else if(_0x1f44b9&&_0x1f44b9>0x0&&_0x1f44b9<_0x31811a){_0x5432a7+=0x1;_0x2eb3e1['emit']('error',new AGIError(_0x6b98('0x11'),_0x5432a7));_0x438141[_0x6b98('0x10')]();}else{var _0x35083c=new AGIChannel(_0x438141);_0x35083c['on'](_0x6b98('0x12'),function(){_0x2eb3e1[_0x6b98('0x8')]('connection',_0x35083c);});}});});_0x36fbf6['on']('error',function(_0x22709c){_0x2eb3e1[_0x6b98('0x8')]('error',new AGIError(_0x6b98('0xf'),_0x22709c['code']));});_0x36fbf6['on'](_0x6b98('0x13'),function(){_0x2eb3e1[_0x6b98('0x8')](_0x6b98('0x13'),new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6b98('0x14')](function(){_0x57b6cc();});};util['inherits'](AGIServer,EventEmitter);module[_0x6b98('0x15')]=function(_0x47ad40,_0x340147,_0x368f0c){return new AGIServer(_0x47ad40,_0x340147,_0x368f0c);};
\ No newline at end of file
+var _0x355b=['call','emit','error','createServer','listen','listening','connection','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','E_AGI_SERVER_ERROR','code','close','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1'];(function(_0x4c5353,_0x45cd75){var _0x2713ee=function(_0x2127bc){while(--_0x2127bc){_0x4c5353['push'](_0x4c5353['shift']());}};_0x2713ee(++_0x45cd75);}(_0x355b,0xa1));var _0xb355=function(_0x30e39f,_0x33f603){_0x30e39f=_0x30e39f-0x0;var _0x1c9794=_0x355b[_0x30e39f];return _0x1c9794;};'use strict';var util=require(_0xb355('0x0'));var net=require(_0xb355('0x1'));var EventEmitter=require(_0xb355('0x2'))[_0xb355('0x3')];var AGIError=require(_0xb355('0x4'));var AGIChannel=require(_0xb355('0x5'));var AGIServer=function(_0x3ecafe,_0x11aee2,_0x1388e1){var _0x180fa9=this,_0x3ecafe=_0x3ecafe||0x11dd,_0x11aee2=_0x11aee2||_0xb355('0x6'),_0x1a5d20=null,_0x42efb3=0x0;EventEmitter[_0xb355('0x7')](_0x180fa9);function _0x3064c9(){if(!_0x3ecafe){_0x180fa9[_0xb355('0x8')](_0xb355('0x9'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x1a5d20=net[_0xb355('0xa')]();_0x1a5d20[_0xb355('0xb')](_0x3ecafe,_0x11aee2);_0x1a5d20['on'](_0xb355('0xc'),function(){_0x180fa9[_0xb355('0x8')]('listening');});_0x1a5d20['on'](_0xb355('0xd'),function(_0x2adec9){_0x1a5d20[_0xb355('0xe')](function(_0xd97f19,_0xc1e76){if(_0xd97f19){_0x180fa9[_0xb355('0x8')](_0xb355('0x9'),new AGIError('E_AGI_SERVER_ERROR',_0xd97f19));}else if(_0x1388e1&&_0x1388e1<0x0){_0x180fa9[_0xb355('0x8')]('error',new AGIError(_0xb355('0xf')));_0x2adec9[_0xb355('0x10')]();}else if(_0x1388e1&&_0x1388e1>0x0&&_0x1388e1<_0xc1e76){_0x42efb3+=0x1;_0x180fa9[_0xb355('0x8')]('error',new AGIError(_0xb355('0x11'),_0x42efb3));_0x2adec9[_0xb355('0x10')]();}else{var _0x167964=new AGIChannel(_0x2adec9);_0x167964['on'](_0xb355('0x12'),function(){_0x180fa9[_0xb355('0x8')]('connection',_0x167964);});}});});_0x1a5d20['on'](_0xb355('0x9'),function(_0x16f155){_0x180fa9[_0xb355('0x8')]('error',new AGIError(_0xb355('0x13'),_0x16f155[_0xb355('0x14')]));});_0x1a5d20['on'](_0xb355('0x15'),function(){_0x180fa9[_0xb355('0x8')](_0xb355('0x15'),new AGIError('E_AGI_SERVER_CLOSE'));});}process['nextTick'](function(){_0x3064c9();});};util[_0xb355('0x16')](AGIServer,EventEmitter);module[_0xb355('0x17')]=function(_0x47ec80,_0x3d3c99,_0x4ce357){return new AGIServer(_0x47ec80,_0x3d3c99,_0x4ce357);};
\ No newline at end of file
index 85b31af..e348065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80e4=['LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20odbc\x20database\x20found','query:\x20%s','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','DIAL','opts','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','toUpperCase','speech','out','dialogflow','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','providerResponse','DIALOGFLOW_%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','trunk_id','no\x20trunk\x20selected','getTrunk','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','response','maxdigit','test','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','goal','GOAL\x20%s','goalname','awspolly','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','awsLex','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','generate','NOBEEP','recordFile','google\x20%s\x20file\x20created','googleASR','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','intKey','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','math','no\x20operation\x20configured','math\x20%s','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','getSound','getData','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','Executed\x20command\x20%s\x20%s','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','port','secure','authentication','auth','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','subproject','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','join','exports','path','util','lodash','odbc','randomstring','moment','mustache','request-promise','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','getVoiceQueue','catch','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','Intervals','%s/sounds/converted/%s','open','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','query','info','Query\x20executed\x20correctly\x20%s','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','channel','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','priority','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','format','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','text','google_tts_language','url','method','timeout','number','includes','POST','PUT','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','headers','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','key','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_access_key_id','aws_bot_name','google_asr_language','tildeASR','appid','appsecret','clear','isString','replaceObjectAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','length','replaceAllVariables','saveRestApiResult','%s.%s','isArray','split','replaceAll','extra','toString','setVariable','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','MRCPRecog','result','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','delay','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','LUMENVOX_ASR_CONFIDENCE'];(function(_0x511b9e,_0x4ea780){var _0x2f5c28=function(_0x212f20){while(--_0x212f20){_0x511b9e['push'](_0x511b9e['shift']());}};_0x2f5c28(++_0x4ea780);}(_0x80e4,0x103));var _0x480e=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0x80e4[_0x8c1005];return _0x175354;};'use strict';var fs=require('fs');var path=require(_0x480e('0x0'));var util=require(_0x480e('0x1'));var _=require(_0x480e('0x2'));var sh=require('shelljs');var odbc=require(_0x480e('0x3'))();var rs=require(_0x480e('0x4'));var moment=require(_0x480e('0x5'));var Mustache=require(_0x480e('0x6'));var rp=require(_0x480e('0x7'));var logger=require('../../config/logger')(_0x480e('0x8'));var config=require(_0x480e('0x9'));var scripts=require(_0x480e('0xa'));var FILES_PATH=_0x480e('0xb');var recursiveMapAttributes=[_0x480e('0xc'),_0x480e('0xd')];var verticesWithRetry=[_0x480e('0xe'),_0x480e('0xf'),_0x480e('0x10')];var AGIVertices=function(_0x1daf3b,_0x3d4555,_0x3a647a){this['channel']=_0x1daf3b;this[_0x480e('0x11')]=_0x3d4555;this[_0x480e('0x12')]=_0x3a647a;};AGIVertices[_0x480e('0x13')][_0x480e('0x14')]=function(_0x30fb77,_0x3eb5eb){this['rpc'][_0x480e('0x15')](_0x30fb77)[_0x480e('0x16')](function(_0x1abb70){_0x3eb5eb(null,_0x1abb70?_0x1abb70[_0x480e('0x17')]:![]);})['catch'](function(_0x388310){_0x3eb5eb(_0x388310);});};AGIVertices[_0x480e('0x13')][_0x480e('0x18')]=function(_0x456b13,_0x5af7c5){this[_0x480e('0x11')]['getVoiceQueueById'](_0x456b13)[_0x480e('0x16')](function(_0x42c095){_0x5af7c5(null,_0x42c095?_0x42c095[_0x480e('0x17')]:![]);})[_0x480e('0x19')](function(_0x5b91a2){_0x5af7c5(_0x5b91a2);});};AGIVertices[_0x480e('0x13')][_0x480e('0x1a')]=function(_0x494ac7,_0xd1aa51){this[_0x480e('0x11')][_0x480e('0x1b')](_0x494ac7)[_0x480e('0x16')](function(_0x58275b){_0xd1aa51(null,_0x58275b?_0x58275b[_0x480e('0x17')]:![]);})['catch'](function(_0x2f56eb){_0xd1aa51(_0x2f56eb);});};AGIVertices[_0x480e('0x13')][_0x480e('0x1c')]=function(_0xf1e54d,_0xc7ac3){this[_0x480e('0x11')][_0x480e('0x1d')](_0xf1e54d)[_0x480e('0x16')](function(_0x3f1011){_0xc7ac3(null,_0x3f1011?_0x3f1011[_0x480e('0x1e')]:![]);})['catch'](function(_0x2b9182){_0xc7ac3(_0x2b9182);});};AGIVertices[_0x480e('0x13')][_0x480e('0x1f')]=function(_0x10f83a,_0x5699d5){this[_0x480e('0x11')][_0x480e('0x20')](_0x10f83a)[_0x480e('0x16')](function(_0x1db609){_0x5699d5(null,_0x1db609?_0x1db609[_0x480e('0x17')]:![]);})[_0x480e('0x19')](function(_0x942fed){_0x5699d5(_0x942fed);});};AGIVertices[_0x480e('0x13')]['getTrunk']=function(_0x264386,_0x5caf6b){this['rpc']['getTrunkById'](_0x264386)[_0x480e('0x16')](function(_0x1f095d){_0x5caf6b(null,_0x1f095d?_0x1f095d['name']:![]);})[_0x480e('0x19')](function(_0x506030){_0x5caf6b(_0x506030);});};AGIVertices[_0x480e('0x13')]['getSound']=function(_0x1cdd4d,_0x55ad03){var _0x4139b2=this;this[_0x480e('0x11')]['getSoundById'](_0x1cdd4d)[_0x480e('0x16')](function(_0x49d816){_0x55ad03(null,_0x49d816?_0x4139b2[_0x480e('0x21')](_0x49d816[_0x480e('0x22')]):![]);})[_0x480e('0x19')](function(_0x2f081c){_0x55ad03(_0x2f081c);});};AGIVertices[_0x480e('0x13')][_0x480e('0x23')]=function(_0x26e69c,_0x47a442){this['rpc'][_0x480e('0x24')](_0x26e69c)[_0x480e('0x16')](function(_0x6b7ee8){_0x47a442(null,_0x6b7ee8?_0x6b7ee8:![]);})['catch'](function(_0x389d6c){_0x47a442(_0x389d6c);});};AGIVertices[_0x480e('0x13')][_0x480e('0x25')]=function(_0x262e28,_0x3a1abf,_0xec475c){this[_0x480e('0x12')][_0x480e('0x25')](_0x262e28,_0x3a1abf)[_0x480e('0x16')](function(){_0xec475c(null);})[_0x480e('0x19')](function(_0x1f3f5c){_0xec475c(_0x1f3f5c);});};AGIVertices[_0x480e('0x13')][_0x480e('0x26')]=function(_0x3095cd,_0x57de45){this[_0x480e('0x11')][_0x480e('0x27')](_0x3095cd)['then'](function(_0x8152bc){if(_0x8152bc){if(_0x8152bc[_0x480e('0x28')]){_0x57de45(null,[_0x8152bc[_0x480e('0x29')]]);}else{_0x57de45(null,_['map'](_0x8152bc[_0x480e('0x2a')],_0x480e('0x29')));}}else{_0x57de45(null,![]);}})[_0x480e('0x19')](function(_0x402c82){_0x57de45(_0x402c82);});};AGIVertices[_0x480e('0x13')][_0x480e('0x21')]=function(_0x4f089e){return util['format'](_0x480e('0x2b'),FILES_PATH,_0x4f089e);};AGIVertices[_0x480e('0x13')]['getQueryOdbc']=function(_0x146b48,_0x111588,_0x8fc269){odbc[_0x480e('0x2c')](_0x146b48,function(_0xba2f5a){if(_0xba2f5a){logger['error'](_0x480e('0x2d'),_0xba2f5a);_0x8fc269(_0xba2f5a);}else{logger['info'](_0x480e('0x2e'));odbc[_0x480e('0x2f')](_0x111588,function(_0x1ce532,_0x3a7820){if(_0x1ce532){logger['info']('Error\x20executing\x20query\x20%s',_0x111588);_0x8fc269(_0x1ce532);}else{logger[_0x480e('0x30')](_0x480e('0x31'),_0x111588);odbc[_0x480e('0x32')](function(_0x429aad){if(_0x429aad){logger[_0x480e('0x33')](_0x480e('0x34'),_0x429aad);}_0x8fc269(null,_0x3a7820);});}});}});};AGIVertices['prototype'][_0x480e('0x35')]=function(_0x168d7e,_0x504b05){this[_0x480e('0x11')][_0x480e('0x36')](_0x168d7e)[_0x480e('0x16')](function(_0x399c4c){_0x504b05(null,_0x399c4c?_0x399c4c:![]);})[_0x480e('0x19')](function(_0x1821ec){_0x504b05(_0x1821ec);});};AGIVertices[_0x480e('0x13')][_0x480e('0x37')]=function(_0x1804dc,_0x225d84){this['rpc'][_0x480e('0x37')](_0x1804dc)[_0x480e('0x16')](function(_0x924b9f){_0x225d84(null,_0x924b9f);})[_0x480e('0x19')](function(_0xdba50c){_0x225d84(_0xdba50c);});};AGIVertices[_0x480e('0x13')][_0x480e('0x38')]=function(_0x486d18,_0x2bf922,_0x1e1ca5){this[_0x480e('0x11')]['createSquareDetailsReport']({'uniqueid':this[_0x480e('0x39')][_0x480e('0x3a')],'node':_0x486d18[_0x480e('0x3b')],'application':_0x486d18[_0x480e('0x3c')],'data':_0x2bf922||null,'project_name':this[_0x480e('0x39')][_0x480e('0x3d')],'callerid':this['channel'][_0x480e('0x3e')]})['then'](function(_0x42eb87){if(_0x1e1ca5){_0x1e1ca5(null,_0x42eb87);}})['catch'](function(_0x76bdb6){if(_0x1e1ca5){_0x1e1ca5(_0x76bdb6);}});};AGIVertices['prototype'][_0x480e('0x3f')]=function(_0xedba60,_0x2868fa,_0x2f83da,_0x61a665){this[_0x480e('0x11')][_0x480e('0x3f')]({'uniqueid':this['channel']['uniqueid'],'callerid':this[_0x480e('0x39')]['callerid'],'calleridname':this[_0x480e('0x39')][_0x480e('0x40')],'context':this[_0x480e('0x39')][_0x480e('0x41')],'extension':this[_0x480e('0x39')][_0x480e('0x42')],'priority':this[_0x480e('0x39')][_0x480e('0x43')],'accountcode':this[_0x480e('0x39')]['accountcode'],'dnid':this['channel']['dnid'],'projectName':this[_0x480e('0x39')][_0x480e('0x3d')],'saveName':_0x2868fa,'filename':_0xedba60[_0x480e('0x44')]||_0x2868fa,'savePath':_0x2f83da})[_0x480e('0x16')](function(_0x1762cf){_0x61a665(null,_0x1762cf);})['catch'](function(_0x97cdc9){_0x61a665(_0x97cdc9);});};AGIVertices[_0x480e('0x13')][_0x480e('0x45')]=function(_0x570f8b,_0xe31977,_0x374780,_0x4cd94e,_0x46da75){this['rpc'][_0x480e('0x45')]({'uniqueid':this[_0x480e('0x39')][_0x480e('0x3a')],'body':_0x570f8b,'direction':_0xe31977,'providerName':_0x374780,'providerResponse':_0x4cd94e})[_0x480e('0x16')](function(_0x18f167){if(_0x46da75){_0x46da75(null,_0x18f167);}})[_0x480e('0x19')](function(_0x54d8b3){if(_0x46da75){_0x46da75(_0x54d8b3);}});};AGIVertices[_0x480e('0x13')][_0x480e('0x46')]=function(_0x3c13cc,_0x5b1069){this[_0x480e('0x11')]['createCmContact']({'firstName':_[_0x480e('0x47')](_0x3c13cc[_0x480e('0x17')])||_[_0x480e('0x48')](_0x3c13cc[_0x480e('0x17')])?_0x480e('0x49')+Math[_0x480e('0x4a')]():_0x3c13cc[_0x480e('0x17')],'lastName':_['isEmpty'](_0x3c13cc[_0x480e('0x4b')])||_['isNil'](_0x3c13cc[_0x480e('0x4b')])?null:_0x3c13cc[_0x480e('0x4b')],'phone':_0x3c13cc[_0x480e('0x4c')],'ListId':_0x3c13cc[_0x480e('0x4d')],'scheduledat':_0x3c13cc[_0x480e('0x4e')],'callbackUniqueid':this[_0x480e('0x39')]['uniqueid'],'tags':'callback','description':'Callback\x20scheduled\x20at\x20'+_0x3c13cc['scheduledAt']['toString'](),'priority':_0x3c13cc['callback_priority']})[_0x480e('0x16')](function(_0x59a775){_0x5b1069(null,_0x59a775);})[_0x480e('0x19')](function(_0x1e9e98){_0x5b1069(_0x1e9e98);});};AGIVertices[_0x480e('0x13')][_0x480e('0x4f')]=function(_0x97b05c,_0x3073bc){this['rpc'][_0x480e('0x50')](_0x97b05c)['then'](function(_0xde0af9){_0x3073bc(null,_0xde0af9?_0xde0af9[_0x480e('0x17')]:![]);})[_0x480e('0x19')](function(_0x47da77){_0x3073bc(_0x47da77);});};AGIVertices[_0x480e('0x13')][_0x480e('0x51')]=function(_0x1ea2c9,_0x234a7f,_0x314462){var _0x46d02f={'role':_0x480e('0x52')};_0x46d02f[_0x1ea2c9]=this[_0x480e('0x39')]['callerid'];this[_0x480e('0x11')][_0x480e('0x51')](_0x46d02f,_0x234a7f,this[_0x480e('0x39')][_0x480e('0x3a')])['then'](function(_0x1243af){_0x314462(null,_[_0x480e('0x48')](_0x1243af)?![]:!![]);})[_0x480e('0x19')](function(_0x3b1f7){logger[_0x480e('0x33')](_0x3b1f7);_0x314462(null,![]);});};AGIVertices[_0x480e('0x13')][_0x480e('0x53')]=function(_0x3dab2c,_0x4c1512){var _0x232873={'role':_0x480e('0x52')};_0x232873[_0x3dab2c]=this[_0x480e('0x39')][_0x480e('0x3e')];this[_0x480e('0x11')][_0x480e('0x53')](_0x232873)[_0x480e('0x16')](function(_0x432ac1){_0x4c1512(null,_['isNil'](_0x432ac1)?![]:!![]);})[_0x480e('0x19')](function(_0x2a7fa3){logger[_0x480e('0x33')](_0x2a7fa3);_0x4c1512(null,![]);});};AGIVertices[_0x480e('0x13')][_0x480e('0x54')]=function(_0x422a02,_0x338099){var _0x1d05a5={'role':_0x480e('0x52')};_0x1d05a5[_0x422a02]=this['channel'][_0x480e('0x3e')];this[_0x480e('0x11')][_0x480e('0x54')](_0x1d05a5)[_0x480e('0x16')](function(_0x23e84e){_0x338099(null,_[_0x480e('0x48')](_0x23e84e)?![]:!![]);})[_0x480e('0x19')](function(_0x3fd150){logger[_0x480e('0x33')](_0x3fd150);_0x338099(null,![]);});};AGIVertices[_0x480e('0x13')][_0x480e('0x55')]=function(_0x132bd4,_0x260378){var _0x3b33bc={'role':_0x480e('0x52')};_0x3b33bc[_0x132bd4]=this['channel'][_0x480e('0x3e')];var _0x4aba13=_0x132bd4!=_0x480e('0x56')?util[_0x480e('0x57')](_0x480e('0x58'),_0x480e('0x59'),this[_0x480e('0x39')][_0x480e('0x3e')]):undefined;this[_0x480e('0x11')][_0x480e('0x55')](_0x3b33bc,_0x4aba13)['then'](function(_0x11bd63){_0x260378(null,_['isNil'](_0x11bd63)?![]:!![]);})[_0x480e('0x19')](function(_0xdea190){logger['error'](_0xdea190);_0x260378(null,![]);});};AGIVertices[_0x480e('0x13')][_0x480e('0x5a')]=function(_0x47b436,_0x26115a){sh[_0x480e('0x5b')](_['trim'](_0x47b436),function(_0x5effcc,_0x25fec0){var _0x35b3e4=_0x25fec0[_0x480e('0x5c')](/(\r\n|\n|\r)/gm,'');_0x26115a(null,_0x35b3e4);});};AGIVertices[_0x480e('0x13')]['googleCloudTTS']=function(_0x3eeaa7,_0x2b108f){scripts[_0x480e('0x5d')](_0x3eeaa7[_0x480e('0x5e')],_0x3eeaa7[_0x480e('0x5f')]||'text',_0x3eeaa7['text'],_0x3eeaa7[_0x480e('0x60')]||_0x480e('0x61'),_0x3eeaa7[_0x480e('0x62')]||_0x480e('0x63'),_0x3eeaa7[_0x480e('0x64')]||_0x480e('0x65'))[_0x480e('0x16')](function(_0x1d026d){_0x2b108f(null,_0x1d026d);})[_0x480e('0x19')](function(_0x2b3d46){_0x2b108f(_0x2b3d46);});};AGIVertices[_0x480e('0x13')][_0x480e('0x66')]=function(_0x25fa24,_0x326c41){scripts['googleTTS'](_0x25fa24[_0x480e('0x67')],_0x25fa24[_0x480e('0x68')]||'en',0x1)[_0x480e('0x16')](function(_0x2bc27e){_0x326c41(null,_0x2bc27e);})['catch'](function(_0x4d82dd){_0x326c41(_0x4d82dd);});};AGIVertices[_0x480e('0x13')]['restAPI']=function(_0x58f6ce,_0x457fe9){var _0x514944={'uri':_0x58f6ce[_0x480e('0x69')],'method':_0x58f6ce[_0x480e('0x6a')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x58f6ce[_0x480e('0x6b')])===_0x480e('0x6c')&&parseInt(_0x58f6ce['timeout'])>=0x1?parseInt(_0x58f6ce[_0x480e('0x6b')])*0x3e8:0x5*0x3e8};if(_[_0x480e('0x6d')]([_0x480e('0x6e'),_0x480e('0x6f')],_0x514944['method']['toUpperCase']())){try{_0x514944[_0x480e('0x70')]=_0x58f6ce[_0x480e('0xd')]?JSON[_0x480e('0x71')](_0x58f6ce[_0x480e('0xd')]):{};}catch(_0x3fa541){logger['error'](_0x480e('0x72'),_0x3fa541);}}try{_0x514944['headers']=_0x58f6ce[_0x480e('0xc')]?JSON[_0x480e('0x71')](_0x58f6ce[_0x480e('0xc')]):{};}catch(_0xb3cfb5){logger[_0x480e('0x33')](_0x480e('0x73'),_0xb3cfb5);}if(_0x58f6ce[_0x480e('0x74')]){try{var _0x4d33ce=require(_0x58f6ce[_0x480e('0x74')])[_0x480e('0x75')](this,_0x514944);_0x514944[_0x480e('0x76')]=Mustache[_0x480e('0x77')](_0x58f6ce[_0x480e('0x69')],_0x4d33ce,{},['$$','$$']);if(_0x514944['headers']){_0x514944[_0x480e('0x78')]=JSON[_0x480e('0x71')](Mustache[_0x480e('0x77')](JSON[_0x480e('0x79')](_0x514944[_0x480e('0x78')]),_0x4d33ce,{},['$$','$$']));}if(_0x514944[_0x480e('0x70')]){_0x514944[_0x480e('0x70')]=JSON[_0x480e('0x71')](Mustache[_0x480e('0x77')](JSON[_0x480e('0x79')](_0x514944['body']),_0x4d33ce,{},['$$','$$']));}}catch(_0xd3463b){logger[_0x480e('0x33')](_0x480e('0x7a'),_0xd3463b);}}rp(_0x514944)['then'](function(_0x31e259){var _0x16c163={'statusCode':_0x31e259[_0x480e('0x7b')]||0xc8,'statusMessage':_0x31e259[_0x480e('0x7c')]||'OK','headers':_0x31e259[_0x480e('0x78')]||{},'body':_0x31e259[_0x480e('0x70')]||{}};_0x457fe9(null,_0x16c163);})['catch'](function(_0x43a1a1){var _0x54294c={'statusCode':_0x43a1a1[_0x480e('0x7b')]||0x1f4,'statusMessage':_0x43a1a1[_0x480e('0x7d')]||_0x480e('0x7e'),'headers':_0x43a1a1[_0x480e('0x7f')][_0x480e('0x78')]||{},'body':_0x43a1a1['options'][_0x480e('0x70')]||{}};_0x457fe9(null,_0x54294c);});};AGIVertices[_0x480e('0x13')][_0x480e('0x80')]=function(_0x28c260,_0x5d29d4){scripts[_0x480e('0x80')](this[_0x480e('0x39')][_0x480e('0x3a')],_0x28c260['key'],_0x28c260[_0x480e('0x67')],_0x28c260[_0x480e('0x81')]||'en')[_0x480e('0x16')](function(_0x3256a3){_0x5d29d4(null,_0x3256a3);})[_0x480e('0x19')](function(_0x1760a4){_0x5d29d4(_0x1760a4);});};AGIVertices[_0x480e('0x13')]['googleDialogflowV2']=function(_0x5a7588,_0x5ba04c){scripts[_0x480e('0x82')](this['channel'][_0x480e('0x3a')],_0x5a7588[_0x480e('0x83')],_0x5a7588[_0x480e('0x84')],_0x5a7588[_0x480e('0x85')],_0x5a7588['text'],_0x5a7588[_0x480e('0x86')]||'en')[_0x480e('0x16')](function(_0x3aaa5a){_0x5ba04c(null,_0x3aaa5a);})[_0x480e('0x19')](function(_0x305a00){_0x5ba04c(_0x305a00);});};AGIVertices[_0x480e('0x13')][_0x480e('0x87')]=function(_0xb75aac,_0xe827bc){scripts[_0x480e('0x87')](this[_0x480e('0x39')],_0xb75aac)[_0x480e('0x16')](function(_0x33aa9d){_0xe827bc(null,_0x33aa9d);})[_0x480e('0x19')](function(_0xedd708){_0xe827bc(_0xedd708);});};AGIVertices[_0x480e('0x13')]['ispeechTTS']=function(_0x4db82e,_0x10a6f8){scripts[_0x480e('0x88')](_0x4db82e[_0x480e('0x89')],_0x4db82e[_0x480e('0x67')],_0x4db82e['ispeech_tts_language']||_0x480e('0x61'),_0x4db82e[_0x480e('0x8a')])['then'](function(_0x29adbf){_0x10a6f8(null,_0x29adbf);})['catch'](function(_0x451d0c){_0x10a6f8(_0x451d0c);});};AGIVertices[_0x480e('0x13')][_0x480e('0x8b')]=function(_0x2907f7,_0x2f79fa,_0x48da4b){scripts[_0x480e('0x8b')](_0x2f79fa,_0x2907f7[_0x480e('0x89')],_0x2907f7[_0x480e('0x8c')]||_0x480e('0x61'),this[_0x480e('0x8d')](_0x2907f7[_0x480e('0x8e')])?_0x2907f7[_0x480e('0x8e')]:undefined)[_0x480e('0x16')](function(_0x1762b2){_0x48da4b(null,_0x1762b2);})[_0x480e('0x19')](function(_0x3d87a9){_0x48da4b(_0x3d87a9);});};AGIVertices[_0x480e('0x13')]['awsPolly']=function(_0x369b9f,_0x8dac35){scripts[_0x480e('0x8f')](_0x369b9f['aws_access_key_id'],_0x369b9f[_0x480e('0x90')],_0x369b9f[_0x480e('0x91')],_0x369b9f[_0x480e('0x92')]||_0x480e('0x93'),_0x369b9f[_0x480e('0x67')],_0x369b9f['aws_text_type']||_0x480e('0x67'))['then'](function(_0x146da9){_0x8dac35(null,_0x146da9);})[_0x480e('0x19')](function(_0x3a4275){_0x8dac35(_0x3a4275);});};AGIVertices[_0x480e('0x13')]['awsLex']=function(_0x12ba25,_0x3de19f){scripts['awsLex'](this['channel']['uniqueid'],_0x12ba25[_0x480e('0x94')],_0x12ba25[_0x480e('0x90')],_0x12ba25['aws_lex_region'],_0x12ba25[_0x480e('0x67')],_0x12ba25[_0x480e('0x95')])[_0x480e('0x16')](function(_0xd7fe90){_0x3de19f(null,_0xd7fe90);})[_0x480e('0x19')](function(_0x5016fb){_0x3de19f(_0x5016fb);});};AGIVertices[_0x480e('0x13')]['googleASR']=function(_0x47f551,_0x318d12,_0x13a7ee){scripts['googleASR'](_0x318d12,_0x47f551[_0x480e('0x89')],_0x47f551[_0x480e('0x96')]||'en-US')[_0x480e('0x16')](function(_0x19dea1){_0x13a7ee(null,_0x19dea1);})[_0x480e('0x19')](function(_0x1ff154){_0x13a7ee(_0x1ff154);});};AGIVertices[_0x480e('0x13')][_0x480e('0x97')]=function(_0x5ad0f2,_0x44683c,_0x3c281c){scripts[_0x480e('0x97')](_0x44683c,_0x5ad0f2[_0x480e('0x98')],_0x5ad0f2[_0x480e('0x99')],_0x5ad0f2['uri'])['then'](function(_0x3511ee){_0x3c281c(null,_0x3511ee);})[_0x480e('0x19')](function(_0xcd9b2f){_0x3c281c(_0xcd9b2f);});};AGIVertices['prototype'][_0x480e('0x9a')]=function(_0x5aa2ec){var _0x57bf77=_['includes'](verticesWithRetry,_0x5aa2ec['agicommand'])?_0x5aa2ec:_['clone'](_0x5aa2ec);for(var _0x2eef95 in _0x57bf77){if(_0x57bf77['hasOwnProperty'](_0x2eef95)){if(_0x57bf77[_0x2eef95]&&_[_0x480e('0x9b')](_0x57bf77[_0x2eef95])){if(_[_0x480e('0x6d')](recursiveMapAttributes,_0x2eef95)){_0x57bf77[_0x2eef95]=this[_0x480e('0x9c')](_0x57bf77[_0x2eef95]);}else{_0x57bf77[_0x2eef95]=this['replaceAllVariables'](_0x57bf77[_0x2eef95]);}}}}return _0x57bf77;};AGIVertices[_0x480e('0x13')][_0x480e('0x9d')]=function(_0x4e35e1){for(var _0x1f19c1 in _0x4e35e1){if(_0x4e35e1[_0x480e('0x9e')](_0x1f19c1)){if(_[_0x480e('0x9f')](_0x4e35e1[_0x1f19c1])){this[_0x480e('0x9d')](_0x4e35e1[_0x1f19c1]);}else if(_['isArray'](_0x4e35e1[_0x1f19c1])){for(var _0x2ce75a=0x0;_0x2ce75a<_0x4e35e1[_0x1f19c1][_0x480e('0xa0')];_0x2ce75a++){this[_0x480e('0x9d')](_0x4e35e1[_0x1f19c1][_0x2ce75a]);}}else if(_[_0x480e('0x9b')](_0x4e35e1[_0x1f19c1])){_0x4e35e1[_0x1f19c1]=this[_0x480e('0xa1')](_0x4e35e1[_0x1f19c1]);}}}};AGIVertices['prototype']['saveRestApiResult']=function(_0xdf3acd,_0x4d8ca6){for(var _0x1d08da in _0xdf3acd){if(_0xdf3acd['hasOwnProperty'](_0x1d08da)){if(_[_0x480e('0x9f')](_0xdf3acd[_0x1d08da])){if(!_[_0x480e('0x47')](_0xdf3acd[_0x1d08da])){this[_0x480e('0xa2')](_0xdf3acd[_0x1d08da],util[_0x480e('0x57')](_0x480e('0xa3'),_0x4d8ca6,_0x1d08da));}}else if(_[_0x480e('0xa4')](_0xdf3acd[_0x1d08da])){for(var _0xb7100c=0x0;_0xb7100c<_0xdf3acd[_0x1d08da][_0x480e('0xa0')];_0xb7100c++){this['saveRestApiResult'](_0xdf3acd[_0x1d08da][_0xb7100c],util[_0x480e('0x57')](_0x480e('0xa3'),_0x4d8ca6,_0x1d08da+'['+_0xb7100c+']'));}}else{if(!_[_0x480e('0x48')](_0xdf3acd[_0x1d08da])){this['channel']['setVariable'](util[_0x480e('0x57')](_0x480e('0xa3'),_0x4d8ca6,_0x1d08da),_0xdf3acd[_0x1d08da]);}}}}};AGIVertices['prototype'][_0x480e('0x9c')]=function(_0x2bb3fc){try{var _0x36c793=JSON[_0x480e('0x71')](_0x2bb3fc);this[_0x480e('0x9d')](_0x36c793);return JSON[_0x480e('0x79')](_0x36c793);}catch(_0x4a13a1){return this[_0x480e('0xa1')](_0x2bb3fc);}};AGIVertices['prototype'][_0x480e('0xa1')]=function(_0x3a7062){var _0x1dbeb3=_0x3a7062['split']('{');for(var _0x210622=0x1;_0x210622<_0x1dbeb3[_0x480e('0xa0')];_0x210622+=0x1){var _0x5adbe8=_0x1dbeb3[_0x210622][_0x480e('0xa5')]('}');if(_0x5adbe8[_0x480e('0xa0')]>0x1){_0x3a7062=_0x3a7062[_0x480e('0xa6')]('{'+_0x5adbe8[0x0]+'}',this['channel'][_0x480e('0x14')](_0x5adbe8[0x0])[_0x480e('0xa7')]||_0x5adbe8[0x0]);}}if(_0x1dbeb3[_0x480e('0xa0')]===0x1){return _0x3a7062[_0x480e('0xa8')]();}return this['replaceAllVariables'](_0x3a7062);};AGIVertices[_0x480e('0x13')]['getAndSetVariable']=function(_0x2ee5bf,_0x421c62){var _0x58a2bd=this[_0x480e('0x39')][_0x480e('0x14')](_0x2ee5bf);if(_0x58a2bd['result']===-0x1){return _0x58a2bd;}logger[_0x480e('0x30')](util[_0x480e('0x57')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x421c62,_0x58a2bd[_0x480e('0xa7')]));return this[_0x480e('0x39')][_0x480e('0xa9')](_0x421c62,_0x58a2bd[_0x480e('0xa7')]);};AGIVertices[_0x480e('0x13')][_0x480e('0x8d')]=function(_0x5b16ad){return _0x5b16ad&&_0x5b16ad!=='0'&&_0x5b16ad!=='-1'&&_0x5b16ad!=='';};AGIVertices[_0x480e('0x13')][_0x480e('0xaa')]=function(_0x27159f){this[_0x480e('0x38')][_0x480e('0x75')](this,_0x27159f,'-');_0x27159f['retry']=_0x27159f[_0x480e('0xaa')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x480e('0x13')][_0x480e('0xab')]=function(_0x5139b7){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xac'),_0x5139b7[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x5139b7[_0x480e('0x67')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xae'));}var _0x4d4b40='\x22'+_0x5139b7['text']+'\x22';if(this[_0x480e('0x8d')](_0x5139b7[_0x480e('0x7f')])){_0x4d4b40+=','+_0x5139b7['options'];}var _0x3bf67f=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0xaf'),_0x4d4b40);if(_0x3bf67f['result']===-0x1){return _0x3bf67f;}return this['channel'][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0xb0'),_0x4d4b40));};AGIVertices[_0x480e('0x13')][_0x480e('0xb1')]=function(_0x4d85c9){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xb2'),_0x4d85c9['label']));if(!this['isConfigured'](_0x4d85c9[_0x480e('0xb3')])){return this[_0x480e('0x39')]['noop']('no\x20grammar\x20configured');}var _0x21faa8=_0x4d85c9['grammar'];if(this['isConfigured'](_0x4d85c9['options'])){_0x21faa8+=','+_0x4d85c9[_0x480e('0x7f')];}var _0x43df28=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0xb4'),_0x21faa8);if(_0x43df28[_0x480e('0xb5')]===-0x1){return _0x43df28;}var _0x58a207=this[_0x480e('0xb6')](_0x480e('0xb7'),_0x480e('0xb8'));if(_0x58a207[_0x480e('0xb5')]===-0x1){return _0x58a207;}var _0x4fda19=this['getAndSetVariable'](_0x480e('0xb9'),_0x480e('0xba'));if(_0x4fda19[_0x480e('0xb5')]===-0x1){return _0x4fda19;}var _0x863ad=this[_0x480e('0xb6')](_0x480e('0xbb'),_0x480e('0xbc'));if(_0x863ad[_0x480e('0xb5')]===-0x1){return _0x863ad;}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0xbd'),_0x21faa8));};AGIVertices[_0x480e('0x13')][_0x480e('0x8')]=function(_0x4328e4){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xbe'),_0x4328e4[_0x480e('0x3b')]));return this[_0x480e('0x39')][_0x480e('0x8')]([_0x4328e4[_0x480e('0xbf')],_0x4328e4[_0x480e('0xc0')]]);};AGIVertices[_0x480e('0x13')]['answer']=function(_0x14cc28){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xc1'),_0x14cc28[_0x480e('0x3b')]));if(this[_0x480e('0x8d')](_0x14cc28[_0x480e('0x6b')])){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xc2'),_0x14cc28[_0x480e('0x6b')]));var _0x51149e=this['channel'][_0x480e('0xc3')](_0x14cc28[_0x480e('0x6b')]);if(_0x51149e['result']===-0x1){return _0x51149e;}}return this[_0x480e('0x39')][_0x480e('0xc4')]();};AGIVertices[_0x480e('0x13')][_0x480e('0xc5')]=function(_0x41a451){logger['info'](util[_0x480e('0x57')](_0x480e('0xc6'),_0x41a451[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x41a451[_0x480e('0x4d')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x41a451,_0x480e('0xc7'));}_0x41a451[_0x480e('0x4e')]=moment();if(this[_0x480e('0x8d')](_0x41a451['delay'])){_0x41a451['scheduledAt']=moment()[_0x480e('0xc8')](_0x41a451[_0x480e('0xc9')],'minutes');}if(!this[_0x480e('0x8d')](_0x41a451[_0x480e('0xca')])){_0x41a451[_0x480e('0xca')]=0x2;}this[_0x480e('0x46')][_0x480e('0x75')](this,_0x41a451);return this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0xcb'),_0x41a451[_0x480e('0x4c')],_0x41a451[_0x480e('0x4d')],_0x41a451[_0x480e('0x4e')]));};AGIVertices[_0x480e('0x13')][_0x480e('0xcc')]=function(_0x389fd6){logger[_0x480e('0x30')](util[_0x480e('0x57')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x389fd6['label']));var _0x466dbc=this[_0x480e('0x39')][_0x480e('0x5b')](_0x389fd6[_0x480e('0xcd')],_0x389fd6[_0x480e('0x7f')]);if(_0x466dbc['result']===-0x1){return _0x466dbc;}return this['channel']['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0x389fd6[_0x480e('0xcd')],_0x389fd6[_0x480e('0x7f')]));};AGIVertices[_0x480e('0x13')][_0x480e('0xce')]=function(_0x5cfec2){logger[_0x480e('0x30')](util['format'](_0x480e('0xcf'),_0x5cfec2[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x5cfec2[_0x480e('0x67')])){return this['channel'][_0x480e('0xad')](_0x480e('0xae'));}var _0x371e1f='\x22'+_0x5cfec2['text']+'\x22';if(this['isConfigured'](_0x5cfec2[_0x480e('0x7f')])){_0x371e1f+=','+_0x5cfec2['options'];}var _0x25d2c5=this[_0x480e('0x39')]['exec']('MRCPSynth',_0x371e1f);if(_0x25d2c5[_0x480e('0xb5')]===-0x1){return _0x25d2c5;}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0xb0'),_0x371e1f));};AGIVertices['prototype'][_0x480e('0xd0')]=function(_0x408694){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xd1'),_0x408694['label']));if(!this[_0x480e('0x8d')](_0x408694[_0x480e('0x67')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xae'));}var _0x4bbc7d='\x22'+_0x408694[_0x480e('0x67')]+'\x22';if(this[_0x480e('0x8d')](_0x408694[_0x480e('0x7f')])){_0x4bbc7d+=','+_0x408694['options'];}var _0xeb709a=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0xaf'),_0x4bbc7d);if(_0xeb709a[_0x480e('0xb5')]===-0x1){return _0xeb709a;}return this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0xb0'),_0x4bbc7d));};AGIVertices[_0x480e('0x13')][_0x480e('0xd2')]=function(_0x48466e){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xd3'),_0x48466e['label']));if(!this['isConfigured'](_0x48466e[_0x480e('0xb3')])){return this[_0x480e('0x39')]['noop'](_0x480e('0xd4'));}var _0x1886ba=_0x48466e[_0x480e('0xb3')];if(this[_0x480e('0x8d')](_0x48466e[_0x480e('0x7f')])){_0x1886ba+=','+_0x48466e[_0x480e('0x7f')];}var _0x10b17d=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0xb4'),_0x1886ba);if(_0x10b17d[_0x480e('0xb5')]===-0x1){return _0x10b17d;}var _0x44c294=this[_0x480e('0xb6')](_0x480e('0xb7'),_0x480e('0xd5'));if(_0x44c294['result']===-0x1){return _0x44c294;}var _0x2cab2b=this[_0x480e('0xb6')](_0x480e('0xb9'),'LUMENVOX_ASR_TRANSCRIPT');if(_0x2cab2b[_0x480e('0xb5')]===-0x1){return _0x2cab2b;}var _0x4185a8=this[_0x480e('0xb6')](_0x480e('0xbb'),_0x480e('0xd6'));if(_0x4185a8[_0x480e('0xb5')]===-0x1){return _0x4185a8;}return this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0xbd'),_0x1886ba));};AGIVertices['prototype'][_0x480e('0xd7')]=function(_0x3cf12d){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xd8'),_0x3cf12d['label']));if(!this[_0x480e('0x8d')](_0x3cf12d['grammar'])){return this[_0x480e('0x39')]['noop'](_0x480e('0xd4'));}var _0x374489=_0x3cf12d[_0x480e('0xb3')];if(this['isConfigured'](_0x3cf12d['options'])){_0x374489+=','+_0x3cf12d['options'];}var _0x197a5c=this[_0x480e('0x39')][_0x480e('0x5b')]('MRCPRecog',_0x374489);if(_0x197a5c[_0x480e('0xb5')]===-0x1){return _0x197a5c;}var _0x23c8ba=this[_0x480e('0xb6')](_0x480e('0xb7'),'SESTEK_ASR_CONFIDENCE');if(_0x23c8ba['result']===-0x1){return _0x23c8ba;}var _0x458b9d=this[_0x480e('0xb6')](_0x480e('0xb9'),_0x480e('0xd9'));if(_0x458b9d['result']===-0x1){return _0x458b9d;}var _0x51435c=this[_0x480e('0xb6')](_0x480e('0xbb'),_0x480e('0xda'));if(_0x51435c[_0x480e('0xb5')]===-0x1){return _0x51435c;}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0xbd'),_0x374489));};AGIVertices[_0x480e('0x13')][_0x480e('0xdb')]=function(_0x5248b1){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0xdc'),_0x5248b1[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x5248b1[_0x480e('0xdd')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x5248b1,'no\x20database\x20selected');}var _0x20f023=this[_0x480e('0x1c')]['sync'](this,_0x5248b1[_0x480e('0xdd')]);if(!_0x20f023){return this['channel'][_0x480e('0x33')](_0x5248b1,_0x480e('0xde'));}if(!this['isConfigured'](_0x5248b1['query'])){return this[_0x480e('0x39')]['error'](_0x5248b1,'no\x20query\x20configured');}var _0x58c4b1=_0x5248b1[_0x480e('0x2f')][_0x480e('0x5c')](/(\r\n|\n|\r)/gm,'\x20');this[_0x480e('0x39')]['noop'](util[_0x480e('0x57')](_0x480e('0xdf'),_0x58c4b1));var _0x310d48=this[_0x480e('0xe0')][_0x480e('0x75')](this,_0x20f023,_0x58c4b1);this[_0x480e('0x38')][_0x480e('0x75')](this,_0x5248b1,_0x58c4b1);if(!this[_0x480e('0x8d')](_0x5248b1[_0x480e('0xe1')])){return this['channel'][_0x480e('0xad')](_0x480e('0xe2'));}var _0x178b4e=this[_0x480e('0x14')]['sync'](this,_0x5248b1['variable_id']);if(!_0x178b4e){return this['channel'][_0x480e('0x33')](_0x5248b1,_0x480e('0xe3'));}var _0xbe0ade=this;_0x310d48[_0x480e('0xe4')](function(_0x375bdc,_0x17fb96){Object['keys'](_0x375bdc)[_0x480e('0xe4')](function(_0x33b721){_0xbe0ade[_0x480e('0x39')]['setVariable'](util[_0x480e('0x57')](_0x480e('0xe5'),_0x178b4e,_0x17fb96,_0x33b721),_0x375bdc[_0x33b721]);});});this[_0x480e('0x39')][_0x480e('0xa9')](util[_0x480e('0x57')](_0x480e('0xe6'),_0x178b4e),_0x310d48[_0x480e('0xa0')]);return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('variable\x20%s\x20set',_0x178b4e));};AGIVertices[_0x480e('0x13')]['dial']=function(_0x1e80ef){logger[_0x480e('0xe7')](util['format'](_0x480e('0xe8'),_0x1e80ef[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x1e80ef[_0x480e('0xe9')])){return this[_0x480e('0x39')]['error'](_0x1e80ef,'no\x20user\x20selected');}var _0x491aef=this[_0x480e('0x1f')][_0x480e('0x75')](this,_0x1e80ef['sip_id']);if(!_0x491aef){return this[_0x480e('0x39')][_0x480e('0x33')](_0x1e80ef,_0x480e('0xea'));}var _0xa63b8b=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0xeb'),[util[_0x480e('0x57')]('SIP/%s',_0x491aef),_0x1e80ef[_0x480e('0x6b')],_0x1e80ef[_0x480e('0xec')],_0x1e80ef[_0x480e('0x69')]]);if(_0xa63b8b['result']===-0x1){return _0xa63b8b;}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('Executed\x20command\x20%s','DIAL'));};AGIVertices['prototype']['dialogflow']=function(_0x5f19e8){logger['info'](util['format'](_0x480e('0xed'),_0x5f19e8[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x5f19e8[_0x480e('0x89')])){return this['channel'][_0x480e('0xad')](_0x480e('0xee'));}if(!this[_0x480e('0x8d')](_0x5f19e8[_0x480e('0x67')])){return this[_0x480e('0x39')]['noop'](_0x480e('0xae'));}this[_0x480e('0x39')][_0x480e('0xef')]=!![];this[_0x480e('0x38')](_0x5f19e8);this[_0x480e('0x45')](_0x5f19e8[_0x480e('0x67')],'in','','');this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0xf0'),_0x5f19e8[_0x480e('0x67')]));var _0x5d582=this[_0x480e('0x80')][_0x480e('0x75')](this,_0x5f19e8);if(_0x5d582){for(var _0x49516c in _0x5d582){if(_0x5d582[_0x480e('0x9e')](_0x49516c)){this['channel']['setVariable'](util[_0x480e('0x57')]('DIALOGFLOW_%s',_0x49516c[_0x480e('0xf1')]()),_0x5d582[_0x49516c]);}}this[_0x480e('0x45')](_0x5d582[_0x480e('0xf2')],_0x480e('0xf3'),_0x480e('0xf4'),'');return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0xf5'),_0x5d582['speech']));}return this[_0x480e('0x39')]['error'](_0x5f19e8,_0x480e('0xf6'));};AGIVertices[_0x480e('0x13')][_0x480e('0xf7')]=function(_0x11fad6){logger['info'](util[_0x480e('0x57')](_0x480e('0xf8'),_0x11fad6[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x11fad6[_0x480e('0x83')])){return this[_0x480e('0x39')]['noop'](_0x480e('0xf9'));}if(!this['isConfigured'](_0x11fad6[_0x480e('0x84')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xfa'));}if(!this[_0x480e('0x8d')](_0x11fad6[_0x480e('0x85')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xfb'));}if(!this[_0x480e('0x8d')](_0x11fad6[_0x480e('0x86')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xfc'));}if(!this['isConfigured'](_0x11fad6['text'])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xae'));}this[_0x480e('0x39')][_0x480e('0xef')]=!![];this[_0x480e('0x38')](_0x11fad6);this[_0x480e('0x45')](_0x11fad6[_0x480e('0x67')],'in','','');this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('Trying\x20DialogflowV2:\x20%s',_0x11fad6[_0x480e('0x67')]));var _0x1dc32e=this['googleDialogflowV2'][_0x480e('0x75')](this,_0x11fad6);if(_0x1dc32e){for(var _0x14ba4d in _0x1dc32e){if(_0x1dc32e[_0x480e('0x9e')](_0x14ba4d)){if(_0x14ba4d!==_0x480e('0xfd')){this['channel']['setVariable'](util['format'](_0x480e('0xfe'),_0x14ba4d[_0x480e('0xf1')]()),_0x1dc32e[_0x14ba4d]);}}}this[_0x480e('0x45')](_0x1dc32e[_0x480e('0xf2')],_0x480e('0xf3'),'dialogflowV2',_0x1dc32e[_0x480e('0xfd')]);return this['channel'][_0x480e('0xad')](util[_0x480e('0x57')]('DialogflowV2\x20Result\x20%s',_0x1dc32e['speech']));}return this[_0x480e('0x39')][_0x480e('0x33')](_0x11fad6,_0x480e('0xff'));};AGIVertices[_0x480e('0x13')][_0x480e('0x100')]=function(_0x1735b0){logger[_0x480e('0x30')](util[_0x480e('0x57')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x1735b0[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x1735b0[_0x480e('0x101')])){return this['channel'][_0x480e('0xad')](_0x480e('0x102'));}if(!this['isConfigured'](_0x1735b0[_0x480e('0x103')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x104'));}if(!this[_0x480e('0x8d')](_0x1735b0[_0x480e('0x105')])){return this[_0x480e('0x39')]['noop'](_0x480e('0x106'));}if(!this['isConfigured'](_0x1735b0[_0x480e('0x107')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0x480e('0x39')]['bot']=!![];this[_0x480e('0x38')](_0x1735b0);this[_0x480e('0x45')](_0x1735b0['text'],'in','','');this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x108'),_0x1735b0[_0x480e('0x67')]));var _0x1dcc3b=this[_0x480e('0x87')]['sync'](this,_0x1735b0);if(_0x1dcc3b){for(var _0x3ae638 in _0x1dcc3b){if(_0x1dcc3b[_0x480e('0x9e')](_0x3ae638)){this[_0x480e('0x39')][_0x480e('0xa9')](util[_0x480e('0x57')](_0x480e('0x109'),_0x3ae638[_0x480e('0xf1')]()),_0x1dcc3b[_0x3ae638]);}}this[_0x480e('0x45')](_0x1dcc3b[_0x480e('0xf2')],_0x480e('0xf3'),'sesteknda','');if(_0x1dcc3b['audiofile']){this['channel'][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x10a'),_0x1dcc3b[_0x480e('0x10b')]));var _0x3f270d=this[_0x480e('0x39')][_0x480e('0x10c')](_0x1dcc3b[_0x480e('0x10b')]);try{fs[_0x480e('0x10d')](_0x1dcc3b[_0x480e('0x10b')]+_0x480e('0x10e'));}catch(_0x488387){logger[_0x480e('0x33')](_0x488387);}return _0x3f270d;}else{return this['channel']['noop'](util[_0x480e('0x57')](_0x480e('0x10f'),_0x1dcc3b['speech']));}}return this['channel'][_0x480e('0x33')](_0x1735b0,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0x480e('0x13')]['end']=function(_0xf2f2df){logger[_0x480e('0x30')](util['format'](_0x480e('0x110'),_0xf2f2df[_0x480e('0x3b')]));return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x111'));};AGIVertices[_0x480e('0x13')][_0x480e('0x112')]=function(_0x2c4b94){logger[_0x480e('0x30')](util[_0x480e('0x57')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x2c4b94['label']));var _0x36cfa5='';if(_0x2c4b94['trunk_id']){if(!this[_0x480e('0x8d')](_0x2c4b94[_0x480e('0x113')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x2c4b94,_0x480e('0x114'));}else{var _0x103ebd=parseInt(_0x2c4b94[_0x480e('0x113')],0xa);if(isNaN(_0x103ebd)){_0x36cfa5=_0x2c4b94[_0x480e('0x113')];}else{_0x36cfa5=this[_0x480e('0x115')][_0x480e('0x75')](this,_0x2c4b94[_0x480e('0x113')]);if(!_0x36cfa5){return this[_0x480e('0x39')][_0x480e('0x33')](_0x2c4b94,'no\x20trunk\x20found');}}}}else if(_0x2c4b94[_0x480e('0x116')]){_0x36cfa5=_0x2c4b94[_0x480e('0x116')];}else{return this[_0x480e('0x39')][_0x480e('0x33')](_0x2c4b94,'no\x20trunk\x20selected');}var _0x2cbee9=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0xeb'),[util[_0x480e('0x57')](_0x480e('0x117'),_0x36cfa5,_0x2c4b94['phone']),_0x2c4b94[_0x480e('0x6b')],_0x2c4b94[_0x480e('0xec')],_0x2c4b94[_0x480e('0x69')]]);if(_0x2cbee9[_0x480e('0xb5')]===-0x1){return _0x2cbee9;}return this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0x118'),_0x480e('0xeb')));};AGIVertices[_0x480e('0x13')][_0x480e('0x119')]=function(_0x187c2e){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x11a'),_0x187c2e[_0x480e('0x3b')]));return this['channel'][_0x480e('0xad')](_0x480e('0x119'));};AGIVertices[_0x480e('0x13')]['getdigits']=function(_0xa4117a){logger[_0x480e('0x30')](util['format'](_0x480e('0x11b'),_0xa4117a[_0x480e('0x3b')]));if(_0xa4117a[_0x480e('0x11c')]===0x0){return this['maxRetry'](_0xa4117a);}_0xa4117a['retry']-=0x1;if(!this[_0x480e('0x8d')](_0xa4117a[_0x480e('0x11d')])){return this['channel'][_0x480e('0x33')](_0xa4117a,_0x480e('0x11e'));}var _0xac0f72=this['getSound'][_0x480e('0x75')](this,_0xa4117a[_0x480e('0x11d')]);if(!_0xac0f72){return this[_0x480e('0x39')][_0x480e('0x33')](_0xa4117a,_0x480e('0x11f'));}if(!this['isConfigured'](_0xa4117a[_0x480e('0xe1')])){return this['channel'][_0x480e('0x33')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x21f5cd=this[_0x480e('0x39')]['getData'](_0xac0f72,_0xa4117a[_0x480e('0x120')],_0xa4117a[_0x480e('0x121')]);var _0x1436c3=_0x21f5cd[_0x480e('0xb5')]?_0x21f5cd['result'][_0x480e('0xa8')]():'';logger[_0x480e('0x30')](_0x480e('0x122'),JSON[_0x480e('0x79')](_0x21f5cd));if(_0x21f5cd[_0x480e('0xb5')]===-0x1){this[_0x480e('0x38')][_0x480e('0x75')](this,_0xa4117a,_0x1436c3);return _0x21f5cd;}else if(_0x21f5cd[_0x480e('0xa7')]==='timeout'){_0x21f5cd[_0x480e('0xb5')]=_0x1436c3['length']>=parseInt(_0xa4117a[_0x480e('0x123')])?'x':'i';}else{_0x21f5cd[_0x480e('0xb5')]=_0x1436c3[_0x480e('0xa0')]>=parseInt(_0xa4117a[_0x480e('0x123')])&&_0x1436c3[_0x480e('0xa0')]<=parseInt(_0xa4117a['maxdigit'])?'x':'i';}var _0x5554fd=this[_0x480e('0x14')][_0x480e('0x75')](this,_0xa4117a[_0x480e('0xe1')]);if(!_0x5554fd){return this[_0x480e('0x39')][_0x480e('0x33')](_0xa4117a,'no\x20variable\x20found');}this[_0x480e('0x39')][_0x480e('0xa9')](_0x5554fd,_0x1436c3);if(this[_0x480e('0x8d')](_0xa4117a[_0x480e('0x124')])){var _0x1796dd=parseInt(_0xa4117a[_0x480e('0x124')],0xa);var _0xa02e31=rs['generate']({'charset':'*','length':_0x1796dd});var _0x133195=_0x1436c3['length'];if(_0x133195>0x0){if(_0x133195>_0x1796dd){this[_0x480e('0x38')][_0x480e('0x75')](this,_0xa4117a,_0xa4117a[_0x480e('0x125')]===_0x480e('0x126')?_0xa02e31+_0x1436c3[_0x480e('0x127')](_0x1796dd):_0x1436c3[_0x480e('0x127')](0x0,_0x133195-_0x1796dd)+_0xa02e31);}else{this[_0x480e('0x38')][_0x480e('0x75')](this,_0xa4117a,rs['generate']({'charset':'*','length':_0x133195}));}}else{this['createSquareDetailsReport'][_0x480e('0x75')](this,_0xa4117a,'');}}else{this[_0x480e('0x38')][_0x480e('0x75')](this,_0xa4117a,_0x1436c3);}return _0x21f5cd;};AGIVertices[_0x480e('0x13')]['getsecretdigits']=function(_0x23432a){logger[_0x480e('0x30')](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x23432a['label']));return this['getdigits'](_0x23432a);};AGIVertices[_0x480e('0x13')][_0x480e('0x128')]=function(_0x1cd539){logger[_0x480e('0x30')](util['format']('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x1cd539['label']));this[_0x480e('0x38')][_0x480e('0x75')](this,_0x1cd539,_0x1cd539['goalname']);return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x129'),_0x1cd539[_0x480e('0x12a')]));};AGIVertices['prototype'][_0x480e('0x12b')]=function(_0x77c288){logger['info'](util[_0x480e('0x57')]('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x77c288['label']));if(!this[_0x480e('0x8d')](_0x77c288[_0x480e('0x94')])||!this[_0x480e('0x8d')](_0x77c288[_0x480e('0x90')])){return this[_0x480e('0x39')]['noop'](_0x480e('0x12c'));}if(!this[_0x480e('0x8d')](_0x77c288[_0x480e('0x67')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xae'));}this['channel'][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x12d'),_0x77c288[_0x480e('0x67')]));var _0x23321a=this['awsPolly'][_0x480e('0x75')](this,_0x77c288);if(_0x23321a){this['channel'][_0x480e('0xad')](util[_0x480e('0x57')]('aws\x20Polly\x20%s\x20file\x20created',_0x23321a));var _0x52827d=this['channel'][_0x480e('0x10c')](_0x23321a);try{fs[_0x480e('0x10d')](_0x23321a+_0x480e('0x10e'));}catch(_0x58d01c){logger['error'](_0x58d01c);}return _0x52827d;}return this[_0x480e('0x39')][_0x480e('0x33')](_0x77c288,_0x480e('0x12e'));};AGIVertices['prototype'][_0x480e('0x12f')]=function(_0x398a7d){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x130'),_0x398a7d[_0x480e('0x3b')]));if(!this['isConfigured'](_0x398a7d['aws_access_key_id'])||!this[_0x480e('0x8d')](_0x398a7d['aws_secret_access_key'])){return this[_0x480e('0x39')]['noop'](_0x480e('0x12c'));}if(!this[_0x480e('0x8d')](_0x398a7d[_0x480e('0x95')])){return this['channel'][_0x480e('0xad')](_0x480e('0x131'));}if(!this['isConfigured'](_0x398a7d[_0x480e('0x67')])){return this['channel'][_0x480e('0xad')]('no\x20text\x20configured');}this[_0x480e('0x39')][_0x480e('0xef')]=!![];this[_0x480e('0x38')](_0x398a7d);this['createSquareMessage'](_0x398a7d['text'],'in','','');this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('Trying\x20Amazon\x20Lex:\x20%s',_0x398a7d[_0x480e('0x67')]));var _0x58e19a=this[_0x480e('0x132')][_0x480e('0x75')](this,_0x398a7d);if(_0x58e19a){for(var _0x2d7e0b in _0x58e19a){if(_0x58e19a[_0x480e('0x9e')](_0x2d7e0b)&&_[_0x480e('0x9b')](_0x58e19a[_0x2d7e0b])){this[_0x480e('0x39')][_0x480e('0xa9')](util[_0x480e('0x57')](_0x480e('0x133'),_0x2d7e0b[_0x480e('0xf1')]()),_0x58e19a[_0x2d7e0b]);}}if(_['isNil'](_0x58e19a[_0x480e('0x7d')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x134'));}else{this[_0x480e('0x45')](_0x58e19a['message'],_0x480e('0xf3'),'amazonlex','');return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x135'),_0x58e19a[_0x480e('0x7d')]));}}return this[_0x480e('0x39')][_0x480e('0x33')](_0x398a7d,_0x480e('0x136'));};AGIVertices[_0x480e('0x13')]['googleasr']=function(_0x1e5c50){logger[_0x480e('0x30')](util['format'](_0x480e('0x137'),_0x1e5c50[_0x480e('0x3b')],_0x1e5c50[_0x480e('0x6b')]));if(!this[_0x480e('0x8d')](_0x1e5c50['key'])){return this[_0x480e('0x39')][_0x480e('0xad')]('no\x20key\x20configured');}var _0x38c385=_0x480e('0x138');var _0xa135c0=util[_0x480e('0x57')](_0x480e('0x139'),FILES_PATH,rs[_0x480e('0x13a')](0x4));var _0xbaa7ec=util['format'](_0x480e('0xa3'),_0xa135c0,_0x38c385);var _0x46c05d=!![];if(_0x1e5c50['beep']===_0x480e('0x13b')){_0x46c05d=![];}var _0x2f0461=this[_0x480e('0x39')][_0x480e('0x13c')](_0xa135c0,_0x38c385,_0x1e5c50['intKey'],_0x1e5c50[_0x480e('0x6b')],undefined,_0x46c05d);if(_0x2f0461[_0x480e('0xb5')]!==-0x1){this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x13d'),_0xbaa7ec));var _0x436cc1=this[_0x480e('0x13e')][_0x480e('0x75')](this,_0x1e5c50,_0xbaa7ec);if(_0x436cc1){for(var _0x376d27 in _0x436cc1){if(_0x436cc1['hasOwnProperty'](_0x376d27)){this[_0x480e('0x39')][_0x480e('0xa9')](util[_0x480e('0x57')]('GOOGLE_ASR_%s',_0x376d27['toUpperCase']()),_0x436cc1[_0x376d27]);}}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('GoogleASR\x20Result\x20%s',JSON['stringify'](_0x436cc1)));}}return _0x2f0461;};AGIVertices[_0x480e('0x13')][_0x480e('0x13f')]=function(_0x49b729){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x140'),_0x49b729['label']));if(!this[_0x480e('0x8d')](_0x49b729['appid'])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x141'));}if(!this[_0x480e('0x8d')](_0x49b729['appsecret'])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x142'));}var _0x39c0c7='wav';var _0x2b17ab=util[_0x480e('0x57')](_0x480e('0x139'),FILES_PATH,rs[_0x480e('0x13a')](0x4));var _0x615629=util[_0x480e('0x57')](_0x480e('0xa3'),_0x2b17ab,_0x39c0c7);var _0x56fafc=!![];if(_0x49b729[_0x480e('0x143')]==='NOBEEP'){_0x56fafc=![];}var _0x10014d=this['channel'][_0x480e('0x13c')](_0x2b17ab,_0x39c0c7,_0x49b729[_0x480e('0x144')],_0x49b729[_0x480e('0x6b')],undefined,_0x56fafc);if(_0x10014d[_0x480e('0xb5')]!==-0x1){this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('tilde\x20%s\x20file\x20created',_0x615629));var _0x51c9fb=this[_0x480e('0x97')][_0x480e('0x75')](this,_0x49b729,_0x615629);if(_0x51c9fb){for(var _0x15033a in _0x51c9fb){if(_0x51c9fb[_0x480e('0x9e')](_0x15033a)){this[_0x480e('0x39')][_0x480e('0xa9')](util['format']('TILDE_ASR_%s',_0x15033a[_0x480e('0xf1')]()),_0x51c9fb[_0x15033a]);}}return this[_0x480e('0x39')]['noop'](util[_0x480e('0x57')](_0x480e('0x145'),JSON[_0x480e('0x79')](_0x51c9fb)));}}return _0x10014d;};AGIVertices[_0x480e('0x13')][_0x480e('0x146')]=function(_0x3bfac4){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x147'),_0x3bfac4[_0x480e('0x3b')]));return this['channel'][_0x480e('0x148')](_0x3bfac4['context'],_0x3bfac4[_0x480e('0x42')],_0x3bfac4[_0x480e('0x43')]);};AGIVertices[_0x480e('0x13')][_0x480e('0x149')]=function(_0x42c862){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x14a'),_0x42c862[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x42c862[_0x480e('0x14b')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x42c862,'no\x20condition\x20configured');}try{var _0x3dd0d6=eval(_0x42c862['condition'])?_0x480e('0x14c'):_0x480e('0x14d');this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0x14e'),_0x42c862['condition'],_0x3dd0d6));return{'code':0xc8,'result':_0x3dd0d6};}catch(_0x21201e){return{'code':0xc8,'result':_0x480e('0x14d')};}};AGIVertices['prototype'][_0x480e('0x14f')]=function(_0x34c2e7){logger[_0x480e('0x30')](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x34c2e7['label']));if(!this[_0x480e('0x8d')](_0x34c2e7['interval_id'])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x34c2e7,_0x480e('0x150'));}var _0x267dce=this[_0x480e('0x26')]['sync'](this,_0x34c2e7[_0x480e('0x151')]);if(!_0x267dce){return this['channel'][_0x480e('0x33')](_0x34c2e7,'no\x20intervals\x20found');}for(var _0x5c9fdb=0x0;_0x5c9fdb<_0x267dce[_0x480e('0xa0')];_0x5c9fdb+=0x1){var _0x14713d=this[_0x480e('0x39')][_0x480e('0x14')](util[_0x480e('0x57')](_0x480e('0x152'),_0x267dce[_0x5c9fdb]));if(_0x14713d[_0x480e('0xb5')]===-0x1){return _0x14713d;}logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x153'),_0x267dce[_0x5c9fdb],_0x14713d['extra']));if(_0x14713d[_0x480e('0xa7')]===_0x480e('0x14c')){logger['info'](util[_0x480e('0x57')](_0x480e('0x153'),_0x267dce[_0x5c9fdb],_0x480e('0x14c')));this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x153'),_0x267dce[_0x5c9fdb],_0x480e('0x14c')));return{'code':0xc8,'result':'true'};}else{logger[_0x480e('0x30')](util['format'](_0x480e('0x153'),_0x267dce[_0x5c9fdb],_0x480e('0x14d')));this[_0x480e('0x39')]['noop'](util[_0x480e('0x57')](_0x480e('0x153'),_0x267dce[_0x5c9fdb],_0x480e('0x14d')));}}return{'code':0xc8,'result':_0x480e('0x14d')};};AGIVertices[_0x480e('0x13')][_0x480e('0x154')]=function(_0x162451){logger['info'](util[_0x480e('0x57')](_0x480e('0x155'),_0x162451[_0x480e('0x3b')]));return this['channel']['hangup']();};AGIVertices[_0x480e('0x13')][_0x480e('0x156')]=function(_0x47daf6){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x157'),_0x47daf6[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x47daf6[_0x480e('0x89')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xee'));}var _0xd42ead=_0x480e('0x138');var _0x4c8016=util[_0x480e('0x57')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x47de04=util[_0x480e('0x57')]('%s.%s',_0x4c8016,_0xd42ead);var _0x36afb6=!![];if(_0x47daf6[_0x480e('0x143')]===_0x480e('0x13b')){_0x36afb6=![];}var _0x2a9afc=this[_0x480e('0x39')][_0x480e('0x13c')](_0x4c8016,_0xd42ead,_0x47daf6[_0x480e('0x144')],_0x47daf6[_0x480e('0x6b')],undefined,_0x36afb6);if(_0x2a9afc[_0x480e('0xb5')]!==-0x1){this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x158'),_0x47de04));var _0x5074b9=this[_0x480e('0x8b')]['sync'](this,_0x47daf6,_0x47de04);if(_0x5074b9){for(var _0x4f95fe in _0x5074b9){if(_0x5074b9[_0x480e('0x9e')](_0x4f95fe)){this['channel'][_0x480e('0xa9')](util['format'](_0x480e('0x159'),_0x4f95fe[_0x480e('0xf1')]()),_0x5074b9[_0x4f95fe]);}}return this['channel'][_0x480e('0xad')](util['format'](_0x480e('0x15a'),JSON[_0x480e('0x79')](_0x5074b9)));}}return _0x2a9afc;};AGIVertices[_0x480e('0x13')]['ispeechtts']=function(_0x28d776){logger[_0x480e('0x30')](util['format'](_0x480e('0x15b'),_0x28d776[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x28d776[_0x480e('0x89')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0xee'));}if(!this[_0x480e('0x8d')](_0x28d776[_0x480e('0x67')])){return this[_0x480e('0x39')]['noop'](_0x480e('0xae'));}this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0x15c'),_0x28d776['text']));var _0x54017d=this[_0x480e('0x88')]['sync'](this,_0x28d776);if(_0x54017d){this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x158'),_0x54017d));var _0x188ab2=this[_0x480e('0x39')][_0x480e('0x10c')](_0x54017d,_0x28d776[_0x480e('0x144')]);try{fs[_0x480e('0x10d')](_0x54017d+_0x480e('0x10e'));}catch(_0x1b00a6){logger[_0x480e('0x33')](_0x1b00a6);}return _0x188ab2;}return this[_0x480e('0x39')][_0x480e('0x33')](_0x28d776,_0x480e('0x15d'));};AGIVertices[_0x480e('0x13')][_0x480e('0x15e')]=function(_0x718fdd){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x15f'),_0x718fdd[_0x480e('0x3b')]));if(!this['isConfigured'](_0x718fdd['findBy'])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x718fdd,'no\x20find\x20by\x20configured');}logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x160'),this['channel'][_0x480e('0x3e')],_0x718fdd[_0x480e('0x161')]));var _0x920cb6=this['agentLogin'][_0x480e('0x75')](this,_0x718fdd[_0x480e('0x161')]);if(_0x920cb6){logger[_0x480e('0x30')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x480e('0x39')][_0x480e('0x3e')],_0x718fdd['findBy']));this[_0x480e('0x39')][_0x480e('0xad')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x718fdd['findBy']));return{'code':0xc8,'result':_0x480e('0x162')};}else{logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x163'),this['channel'][_0x480e('0x3e')],_0x718fdd[_0x480e('0x161')]));this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x163'),this[_0x480e('0x39')][_0x480e('0x3e')],_0x718fdd['findBy']));return{'code':0xc8,'result':_0x480e('0x164')};}};AGIVertices[_0x480e('0x13')][_0x480e('0x165')]=function(_0xa55936){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x166'),_0xa55936[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0xa55936['findBy'])){return this['channel'][_0x480e('0x33')](_0xa55936,_0x480e('0x167'));}logger[_0x480e('0x30')](util[_0x480e('0x57')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x480e('0x3e')],_0xa55936[_0x480e('0x161')]));var _0x2fc66a=this[_0x480e('0x54')][_0x480e('0x75')](this,_0xa55936['findBy']);if(_0x2fc66a){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x168'),this['channel'][_0x480e('0x3e')],_0xa55936[_0x480e('0x161')]));this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x480e('0x39')][_0x480e('0x3e')],_0xa55936[_0x480e('0x161')]));return{'code':0xc8,'result':_0x480e('0x162')};}else{logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x163'),this['channel'][_0x480e('0x3e')],_0xa55936['findBy']));this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x163'),this[_0x480e('0x39')][_0x480e('0x3e')],_0xa55936[_0x480e('0x161')]));return{'code':0xc8,'result':_0x480e('0x164')};}};AGIVertices[_0x480e('0x13')][_0x480e('0x169')]=function(_0x33a6e4){logger['info'](util['format']('Enter\x20in\x20MATH\x20(%s)\x20block',_0x33a6e4[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x33a6e4['operation'])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x33a6e4,_0x480e('0x16a'));}this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x16b'),_0x33a6e4['operation']));var _0x32cb95=eval(_0x33a6e4['operation']);if(!this[_0x480e('0x8d')](_0x33a6e4[_0x480e('0xe1')])){return this['channel'][_0x480e('0xad')](_0x480e('0xe2'));}var _0xbab1b3=this['getVariable'][_0x480e('0x75')](this,_0x33a6e4[_0x480e('0xe1')]);if(!_0xbab1b3){return this['channel'][_0x480e('0x33')](_0x33a6e4,_0x480e('0xe3'));}if(_['isArray'](_0x32cb95)){var _0x10eff5=this;_0x32cb95['forEach'](function(_0x39de05,_0x54aeb6){_0x10eff5[_0x480e('0x39')][_0x480e('0xa9')](util[_0x480e('0x57')]('%s[%s]',_0xbab1b3,_0x54aeb6),_0x39de05);});return this['channel']['noop'](util[_0x480e('0x57')](_0x480e('0x16c'),_0xbab1b3));}else{return this[_0x480e('0x39')][_0x480e('0xa9')](_0xbab1b3,_0x32cb95);}};AGIVertices[_0x480e('0x13')][_0x480e('0xe')]=function(_0x3bf078){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x16d'),_0x3bf078[_0x480e('0x3b')]));if(_0x3bf078[_0x480e('0x11c')]===0x0){return this[_0x480e('0xaa')](_0x3bf078);}_0x3bf078[_0x480e('0x11c')]-=0x1;if(!this[_0x480e('0x8d')](_0x3bf078[_0x480e('0x11d')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x3bf078,'no\x20file\x20audio\x20selected');}var _0x298af4=this[_0x480e('0x16e')]['sync'](this,_0x3bf078[_0x480e('0x11d')]);if(!_0x298af4){return this[_0x480e('0x39')]['error'](_0x3bf078,_0x480e('0x11f'));}var _0x43b565=this[_0x480e('0x39')][_0x480e('0x16f')](_0x298af4,_0x3bf078[_0x480e('0x120')],_0x3bf078['digit']);var _0x32be1c=_0x43b565['result'];if(_0x43b565[_0x480e('0xb5')]===-0x1){this['createSquareDetailsReport'][_0x480e('0x75')](this,_0x3bf078,'-1');return _0x43b565;}else if(_0x43b565[_0x480e('0xa7')]===_0x480e('0x6b')){_0x43b565[_0x480e('0xb5')]=_0x43b565['result'][_0x480e('0xa0')]>0x0?_0x43b565[_0x480e('0xb5')]:'t';}else if(_[_0x480e('0x47')](_0x43b565[_0x480e('0xb5')])){_0x43b565[_0x480e('0xb5')]='#';_0x32be1c='#';}if(!this[_0x480e('0x8d')](_0x3bf078[_0x480e('0xe1')])){this[_0x480e('0x39')][_0x480e('0xad')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x264b04=this['getVariable'][_0x480e('0x75')](this,_0x3bf078[_0x480e('0xe1')]);if(!_0x264b04){return this['channel'][_0x480e('0x33')](_0x3bf078,_0x480e('0xe3'));}this['channel']['setVariable'](_0x264b04,_0x32be1c);}this[_0x480e('0x38')][_0x480e('0x75')](this,_0x3bf078,_0x32be1c);return _0x43b565;};AGIVertices['prototype'][_0x480e('0xad')]=function(_0x54a12c){logger['info'](util[_0x480e('0x57')](_0x480e('0x170'),_0x54a12c[_0x480e('0x3b')]));return this[_0x480e('0x39')]['noop'](_0x54a12c[_0x480e('0x171')]||_0x54a12c[_0x480e('0x3b')]);};AGIVertices[_0x480e('0x13')][_0x480e('0x172')]=function(_0x509d03){logger[_0x480e('0x30')](util[_0x480e('0x57')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x509d03['label']));if(!this[_0x480e('0x8d')](_0x509d03[_0x480e('0x161')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x509d03,_0x480e('0x167'));}logger['info'](util[_0x480e('0x57')](_0x480e('0x160'),this[_0x480e('0x39')]['callerid'],_0x509d03[_0x480e('0x161')]));var _0x17e8ad=this[_0x480e('0x4f')]['sync'](this,_0x509d03[_0x480e('0x173')]);var _0x1393db=this[_0x480e('0x51')][_0x480e('0x75')](this,_0x509d03[_0x480e('0x161')],_0x17e8ad);if(_0x1393db){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x168'),this['channel']['callerid'],_0x509d03[_0x480e('0x161')]));this[_0x480e('0x39')][_0x480e('0xad')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x480e('0x3e')],_0x509d03[_0x480e('0x161')]));return{'code':0xc8,'result':_0x480e('0x162')};}else{logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x163'),this[_0x480e('0x39')][_0x480e('0x3e')],_0x509d03[_0x480e('0x161')]));this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0x168'),this['channel'][_0x480e('0x3e')],_0x509d03['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x480e('0x13')]['playback']=function(_0x3788d3){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x174'),_0x3788d3[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x3788d3['file_id'])){return this['channel']['error'](_0x3788d3,_0x480e('0x11e'));}var _0x20e08e=this[_0x480e('0x16e')]['sync'](this,_0x3788d3[_0x480e('0x11d')]);if(!_0x20e08e){return this[_0x480e('0x39')][_0x480e('0x33')](_0x3788d3,_0x480e('0x11f'));}var _0x559883=this['channel'][_0x480e('0x5b')](_0x480e('0x175'),[_0x20e08e,_0x3788d3[_0x480e('0xec')]]);if(_0x559883[_0x480e('0xb5')]===-0x1){return _0x559883;}return this['channel'][_0x480e('0xad')](util[_0x480e('0x57')]('Executed\x20command\x20%s\x20%s',_0x480e('0x175'),_0x20e08e));};AGIVertices[_0x480e('0x13')][_0x480e('0x176')]=function(_0x4b36f2){logger['info'](util['format']('Enter\x20in\x20QUEUE\x20(%s)\x20block',_0x4b36f2['label']));if(!this[_0x480e('0x8d')](_0x4b36f2[_0x480e('0x177')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x4b36f2,_0x480e('0x178'));}var _0x4c75dd='';var _0x3f3988=parseInt(_0x4b36f2[_0x480e('0x177')],0xa);if(isNaN(_0x3f3988)){_0x4c75dd=_0x4b36f2[_0x480e('0x177')];}else{_0x4c75dd=this[_0x480e('0x18')][_0x480e('0x75')](this,_0x4b36f2[_0x480e('0x177')]);if(!_0x4c75dd){return this['channel'][_0x480e('0x33')](_0x4b36f2,_0x480e('0x179'));}}var _0x154f0d='';if(this[_0x480e('0x8d')](_0x4b36f2[_0x480e('0x11d')])){var _0x99d636=this[_0x480e('0x16e')]['sync'](this,_0x4b36f2['file_id']);if(_0x99d636){_0x154f0d=_0x99d636;}}this[_0x480e('0x38')]['sync'](this,_0x4b36f2,_0x4c75dd);if(_0x4b36f2[_0x480e('0xec')][_0x480e('0x17a')]('x')<0x0){_0x4b36f2[_0x480e('0xec')]+='x';}if(_0x4b36f2[_0x480e('0xec')][_0x480e('0x17a')]('X')<0x0){_0x4b36f2['opts']+='X';}this['channel'][_0x480e('0xa9')](_0x480e('0x17b'),_0x4c75dd?_0x4c75dd[_0x480e('0x17c')]():'');var _0x3e976d=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0x17d'),[_0x4c75dd,_0x4b36f2[_0x480e('0xec')],_0x4b36f2['url'],_0x154f0d,_0x4b36f2[_0x480e('0x6b')],_0x4b36f2['agi'],_0x4b36f2[_0x480e('0x17e')],_0x4b36f2[_0x480e('0x17f')],'',_0x4b36f2[_0x480e('0x180')]]);if(_0x3e976d['result']===-0x1){return _0x3e976d;}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x181'),_0x480e('0x17d'),_0x4c75dd));};AGIVertices[_0x480e('0x13')]['record']=function(_0x383abf){logger[_0x480e('0x30')](util['format'](_0x480e('0x182'),_0x383abf[_0x480e('0x3b')]));var _0x987cd6=_0x383abf['recordingFormat']||_0x480e('0x138');var _0x4788fa=util[_0x480e('0x57')](_0x480e('0x183'),this[_0x480e('0x39')]['uniqueid'],rs['generate'](0x5));var _0x3fac48=util[_0x480e('0x57')](_0x480e('0x184'),FILES_PATH,_0x4788fa,_0x987cd6);var _0x49ea0f=util[_0x480e('0x57')](_0x480e('0x139'),FILES_PATH,_0x4788fa);this[_0x480e('0x3f')][_0x480e('0x75')](this,_0x383abf,_0x4788fa,_0x3fac48);this[_0x480e('0x39')][_0x480e('0xa9')](_0x480e('0x185'),_0x4788fa);logger[_0x480e('0x30')](_0x480e('0x186'),_0x49ea0f,_0x987cd6,_0x383abf['escape_digits'],_0x383abf[_0x480e('0x6b')]);return this[_0x480e('0x39')][_0x480e('0x13c')](_0x49ea0f,_0x987cd6,_0x383abf[_0x480e('0x187')],_0x383abf[_0x480e('0x6b')],undefined,!![]);};AGIVertices[_0x480e('0x13')][_0x480e('0x188')]=function(_0x3c46d3){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x189'),_0x3c46d3[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x3c46d3[_0x480e('0x69')])){return this['channel'][_0x480e('0xad')](_0x480e('0x18a'));}var _0x262ecf=this[_0x480e('0x18b')][_0x480e('0x75')](this,_0x3c46d3);logger[_0x480e('0x30')](util['format']('Response:',util['inspect'](_0x262ecf,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x3c46d3[_0x480e('0xe1')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x18c'));}var _0x1a04cd=this[_0x480e('0x14')][_0x480e('0x75')](this,_0x3c46d3['variable_id']);if(!_0x1a04cd){return this[_0x480e('0x39')][_0x480e('0x33')](_0x3c46d3,_0x480e('0xe3'));}this[_0x480e('0x39')][_0x480e('0xa9')](util[_0x480e('0x57')](_0x480e('0x18d'),_0x1a04cd),_0x262ecf[_0x480e('0x7b')]?_0x262ecf[_0x480e('0x7b')]:_0x480e('0x18e'));this[_0x480e('0x39')][_0x480e('0xa9')](util['format']('%s_STATUS_MESSAGE',_0x1a04cd),_0x262ecf['statusMessage']?_0x262ecf[_0x480e('0x7c')]:'OK');if(_0x262ecf[_0x480e('0x70')]){try{this['saveRestApiResult'](_0x262ecf[_0x480e('0x70')],_0x1a04cd);}catch(_0x5cc36e){logger['error'](util[_0x480e('0x57')](_0x480e('0x18f'),_0x1a04cd));}}return this['channel'][_0x480e('0xad')](util[_0x480e('0x57')]('variable\x20%s\x20set',_0x1a04cd));};AGIVertices[_0x480e('0x13')][_0x480e('0x190')]=function(_0x54da93){logger['info'](util[_0x480e('0x57')](_0x480e('0x191'),_0x54da93[_0x480e('0x3b')]));return this[_0x480e('0x39')][_0x480e('0x192')](_0x54da93['digits']['replace'](/\s+/g,''),_0x54da93[_0x480e('0x187')]);};AGIVertices[_0x480e('0x13')]['saynumber']=function(_0x49ab08){logger[_0x480e('0x30')](util['format']('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x49ab08['label']));return this[_0x480e('0x39')]['sayNumber'](_0x49ab08[_0x480e('0x6c')][_0x480e('0x5c')](/\s+/g,''),_0x49ab08[_0x480e('0x187')]);};AGIVertices[_0x480e('0x13')]['sayphonetic']=function(_0x5315f7){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x193'),_0x5315f7['label']));return this[_0x480e('0x39')][_0x480e('0x194')](_0x5315f7[_0x480e('0x67')],_0x5315f7[_0x480e('0x187')]);};AGIVertices[_0x480e('0x13')][_0x480e('0x195')]=function(_0xb50682){logger[_0x480e('0x30')](util['format'](_0x480e('0x196'),_0xb50682['label']));if(!this[_0x480e('0x8d')](_0xb50682[_0x480e('0x197')])){return this['channel'][_0x480e('0xad')](_0x480e('0x198'));}var _0xa0244d=this[_0x480e('0x23')][_0x480e('0x75')](this,_0xb50682[_0x480e('0x197')]);if(!_0xa0244d||!_0xa0244d[_0x480e('0x199')]){return this[_0x480e('0x39')]['error'](_0xb50682,_0x480e('0x19a'));}var _0x5313ed={'from':util[_0x480e('0x57')](_0x480e('0x19b'),_0xa0244d[_0x480e('0x17')],_0xa0244d[_0x480e('0x19c')]||_0xa0244d[_0x480e('0x199')][_0x480e('0x19d')]),'to':_0xb50682['to']||'','cc':_0xb50682['cc']||'','bcc':_0xb50682[_0x480e('0x19e')]||'','subject':_0xb50682[_0x480e('0x19f')],'html':_0xb50682['text'],'text':_0xb50682['text']};var _0x4ddd60={'tls':{'rejectUnauthorized':![]}};if(_0xa0244d[_0x480e('0x199')]['service']){_0x4ddd60[_0x480e('0x1a0')]=_0xa0244d[_0x480e('0x199')][_0x480e('0x1a0')];}else{_0x4ddd60[_0x480e('0x1a1')]=_0xa0244d[_0x480e('0x199')]['host'];_0x4ddd60[_0x480e('0x1a2')]=_0xa0244d['Smtp'][_0x480e('0x1a2')];_0x4ddd60[_0x480e('0x1a3')]=_0xa0244d[_0x480e('0x199')][_0x480e('0x1a3')];}if(_0xa0244d[_0x480e('0x199')][_0x480e('0x1a4')]){_0x4ddd60[_0x480e('0x1a5')]={'user':_0xa0244d[_0x480e('0x199')][_0x480e('0x19d')],'pass':_0xa0244d[_0x480e('0x199')]['pass']};}if(this[_0x480e('0x8d')](_0xb50682['template_id'])){}logger[_0x480e('0xe7')](_0x480e('0x1a6'),JSON[_0x480e('0x79')](_0x5313ed));this['createSquareDetailsReport']['sync'](this,_0xb50682,_0xb50682[_0x480e('0x197')]);this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('Trying\x20SendMail\x20with\x20account\x20%s',_0xa0244d['name']));this[_0x480e('0x25')][_0x480e('0x75')](this,_0x4ddd60,_0x5313ed);return this['channel'][_0x480e('0xad')](_0x480e('0x1a7'));};AGIVertices[_0x480e('0x13')][_0x480e('0x1a8')]=function(_0xdc68c6){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x1a9'),_0xdc68c6['label']));return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x1aa'));};AGIVertices[_0x480e('0x13')][_0x480e('0x1ab')]=function(_0x686f8){logger['info'](util[_0x480e('0x57')](_0x480e('0x1ac'),_0x686f8[_0x480e('0x3b')]));if(!this['isConfigured'](_0x686f8[_0x480e('0x1ad')])){return this[_0x480e('0x39')]['noop'](_0x480e('0x1ae'));}var _0x3a6dbd=this[_0x480e('0x35')][_0x480e('0x75')](this,_0x686f8[_0x480e('0x1ad')]);if(!_0x3a6dbd){return this[_0x480e('0x39')][_0x480e('0x33')](_0x686f8,'no\x20sms\x20account\x20found');}var _0x3e4898={'body':_0x686f8[_0x480e('0x1af')],'phone':_0x686f8['to']||'','SmsAccountId':_0x3a6dbd['id']};logger['debug'](_0x480e('0x1b0'),JSON[_0x480e('0x79')](_0x3e4898));this['createSquareDetailsReport'][_0x480e('0x75')](this,_0x686f8,_0x686f8[_0x480e('0x1ad')]);this[_0x480e('0x39')]['noop'](util[_0x480e('0x57')](_0x480e('0x1b1'),_0x3a6dbd[_0x480e('0x17')]));this['createSmsMessage'][_0x480e('0x75')](this,_0x3e4898);return this['channel']['noop'](_0x480e('0x1b2'));};AGIVertices[_0x480e('0x13')][_0x480e('0x1b3')]=function(_0xd459a5){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x1b4'),_0xd459a5[_0x480e('0x3b')]));if(!this['isConfigured'](_0xd459a5['variable_id'])){return this['channel'][_0x480e('0x33')](_0xd459a5,_0x480e('0x1b5'));}var _0x158773=this[_0x480e('0x14')]['sync'](this,_0xd459a5[_0x480e('0xe1')]);if(!_0x158773){return this[_0x480e('0x39')][_0x480e('0x33')](_0xd459a5,'no\x20variable\x20found');}return this[_0x480e('0x39')][_0x480e('0xa9')](_0x158773,_0xd459a5[_0x480e('0x1b6')]);};AGIVertices[_0x480e('0x13')][_0x480e('0x1b7')]=function(_0x21112b){logger['info'](util[_0x480e('0x57')](_0x480e('0x1b8'),_0x21112b[_0x480e('0x3b')]));this['channel'][_0x480e('0xad')](_0x480e('0x1b9'));if(_0x21112b['answer']==='yes'){this[_0x480e('0x39')]['noop'](_0x480e('0x1ba'));return this[_0x480e('0x39')][_0x480e('0xc4')]();}return this['channel'][_0x480e('0xad')](_0x480e('0x1bb'));};AGIVertices['prototype'][_0x480e('0x1bc')]=function(_0x10ec3b){logger[_0x480e('0x30')](util[_0x480e('0x57')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x10ec3b[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x10ec3b[_0x480e('0x1bd')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x10ec3b,_0x480e('0x1be'));}var _0x3a1f55=this[_0x480e('0x1a')][_0x480e('0x75')](this,_0x10ec3b[_0x480e('0x1bd')]);if(!this['isConfigured'](_0x3a1f55)){return this[_0x480e('0x39')][_0x480e('0x33')](_0x10ec3b,util[_0x480e('0x57')](_0x480e('0x1bf'),_0x10ec3b['project_id']));}if(_0x3a1f55===this['channel'][_0x480e('0x3d')]){return this['channel']['error'](_0x10ec3b,_0x480e('0x1c0'));}this[_0x480e('0x38')][_0x480e('0x75')](this,_0x10ec3b,_0x3a1f55);var _0x321fc5=this[_0x480e('0x39')][_0x480e('0x5b')](_0x480e('0x1c1'),util[_0x480e('0x57')](_0x480e('0x1c2'),config[_0x480e('0x8')][_0x480e('0x1a1')]||_0x480e('0x1c3'),_0x3a1f55,this[_0x480e('0x39')][_0x480e('0x3d')]));if(_0x321fc5[_0x480e('0xb5')]===-0x1){return _0x321fc5;}return this[_0x480e('0x39')]['noop'](util[_0x480e('0x57')]('Executed\x20command\x20%s\x20%s',_0x480e('0x1c1'),_0x3a1f55));};AGIVertices[_0x480e('0x13')][_0x480e('0x1c4')]=function(_0x55a7b3){logger[_0x480e('0x30')](util['format'](_0x480e('0x1c5'),_0x55a7b3[_0x480e('0x3b')]));var _0x48b084=this[_0x480e('0x5a')][_0x480e('0x75')](this,_0x55a7b3[_0x480e('0xbf')]);this[_0x480e('0x38')][_0x480e('0x75')](this,_0x55a7b3,_0x55a7b3[_0x480e('0xbf')]);if(this[_0x480e('0x8d')](_0x55a7b3[_0x480e('0xe1')])){var _0x287d12=this[_0x480e('0x14')][_0x480e('0x75')](this,_0x55a7b3[_0x480e('0xe1')]);if(_0x287d12){this['channel']['setVariable'](_0x287d12,_0x48b084);return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x1c6'),_0x55a7b3[_0x480e('0xbf')],_0x287d12));}}return this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x1c7'),_0x55a7b3[_0x480e('0xbf')]));};AGIVertices['prototype'][_0x480e('0x1c8')]=function(_0x29c598){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x1c9'),_0x29c598[_0x480e('0x3b')]));_0x29c598[_0x480e('0x67')]=_0x29c598['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x480e('0x8d')](_0x29c598[_0x480e('0x5e')])){return this[_0x480e('0x39')][_0x480e('0xad')](_0x480e('0x1ca'));}if(!this[_0x480e('0x8d')](_0x29c598[_0x480e('0x67')])){return this[_0x480e('0x39')]['noop']('no\x20text\x20configured');}this[_0x480e('0x39')][_0x480e('0xad')](util[_0x480e('0x57')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x29c598['text']));var _0x32fffe=this[_0x480e('0x5d')][_0x480e('0x75')](this,_0x29c598);if(_0x32fffe){this['channel']['noop'](util[_0x480e('0x57')](_0x480e('0x1cb'),_0x32fffe));var _0x3a151f=this[_0x480e('0x39')][_0x480e('0x10c')](_0x32fffe);try{fs[_0x480e('0x10d')](_0x32fffe+'.wav');}catch(_0x30f794){logger[_0x480e('0x33')](_0x30f794);}return _0x3a151f;}return this['channel']['error'](_0x29c598,_0x480e('0x1cc'));};AGIVertices[_0x480e('0x13')][_0x480e('0x1cd')]=function(_0x2b1109){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x1ce'),_0x2b1109[_0x480e('0x3b')]));_0x2b1109[_0x480e('0x67')]=_0x2b1109[_0x480e('0x67')][_0x480e('0x5c')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x480e('0x8d')](_0x2b1109['text'])){return this['channel'][_0x480e('0xad')](_0x480e('0xae'));}this['channel']['noop'](util[_0x480e('0x57')](_0x480e('0x1cf'),_0x2b1109[_0x480e('0x67')]));var _0x16b996=this[_0x480e('0x66')][_0x480e('0x75')](this,_0x2b1109);if(_0x16b996){this[_0x480e('0x39')][_0x480e('0xad')](util['format'](_0x480e('0x1d0'),_0x16b996));var _0x208a4b=this[_0x480e('0x39')][_0x480e('0x10c')](_0x16b996);try{fs[_0x480e('0x10d')](_0x16b996+'.wav');}catch(_0x434603){logger[_0x480e('0x33')](_0x434603);}return _0x208a4b;}return this[_0x480e('0x39')][_0x480e('0x33')](_0x2b1109,'Google\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0x480e('0x1d1')]=function(_0x38eda4){logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x1d2'),_0x38eda4[_0x480e('0x3b')]));if(!this['isConfigured'](_0x38eda4['findBy'])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x38eda4,_0x480e('0x167'));}logger[_0x480e('0x30')](util[_0x480e('0x57')](_0x480e('0x160'),this[_0x480e('0x39')]['callerid'],_0x38eda4['findBy']));var _0x44f8fb=this[_0x480e('0x53')][_0x480e('0x75')](this,_0x38eda4[_0x480e('0x161')]);if(_0x44f8fb){logger[_0x480e('0x30')](util[_0x480e('0x57')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x480e('0x39')][_0x480e('0x3e')],_0x38eda4[_0x480e('0x161')]));this[_0x480e('0x39')]['noop'](util[_0x480e('0x57')](_0x480e('0x168'),this[_0x480e('0x39')][_0x480e('0x3e')],_0x38eda4[_0x480e('0x161')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format'](_0x480e('0x163'),this[_0x480e('0x39')][_0x480e('0x3e')],_0x38eda4[_0x480e('0x161')]));this['channel'][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x163'),this[_0x480e('0x39')][_0x480e('0x3e')],_0x38eda4['findBy']));return{'code':0xc8,'result':_0x480e('0x164')};}};AGIVertices[_0x480e('0x13')][_0x480e('0x1d3')]=function(_0xc18b18){logger['info'](util['format'](_0x480e('0x1d4'),_0xc18b18[_0x480e('0x3b')]));var _0x5987bb=this['channel']['exec'](_0x480e('0x1d5'),[_0xc18b18['mailbox'],_0xc18b18['options']]);if(_0x5987bb[_0x480e('0xb5')]===-0x1){return _0x5987bb;}return this['channel'][_0x480e('0xad')](util[_0x480e('0x57')](_0x480e('0x181'),_0x480e('0x1d5'),_0xc18b18[_0x480e('0x1d6')]));};AGIVertices['prototype']['vswitch']=function(_0x1fb105){logger[_0x480e('0x30')](util[_0x480e('0x57')]('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x1fb105[_0x480e('0x3b')]));if(!this[_0x480e('0x8d')](_0x1fb105[_0x480e('0xe1')])){return this[_0x480e('0x39')][_0x480e('0x33')](_0x1fb105,_0x480e('0x1b5'));}var _0x9a3cfb=this[_0x480e('0x14')][_0x480e('0x75')](this,_0x1fb105[_0x480e('0xe1')]);if(!_0x9a3cfb){return this[_0x480e('0x39')][_0x480e('0x33')](_0x1fb105,_0x480e('0xe3'));}var _0xd38f9b=this[_0x480e('0x39')]['getVariable'](_0x9a3cfb);return{'code':0xc8,'result':_0xd38f9b[_0x480e('0xa7')]?_0xd38f9b[_0x480e('0xa7')]:'-'};};String[_0x480e('0x13')][_0x480e('0xa6')]=function(_0x16aa70,_0x5cdd6d){return this['split'](_0x16aa70)[_0x480e('0x1d7')](_0x5cdd6d);};module[_0x480e('0x1d8')]=AGIVertices;
\ No newline at end of file
+var _0xff2e=['keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','getUser','DIAL','SIP/%s','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','bot','speech','out','Dialogflow\x20Result\x20%s','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','providerResponse','DIALOGFLOW_%s','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','username','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','end','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','getSound','response','maxdigit','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','.wav','aws\x20Polly\x20is\x20unreachable','awslex','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','%s/recordings/%s','beep','NOBEEP','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','wav','recordFile','intKey','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','priority','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','AGENT\x20%s\x20FOUND\x20BY','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20found','getData','digit','output','pause','getPause','pause_id','success','Executed\x20command\x20%s\x20%s','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','toLowerCase','QUEUE','macro','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','getMailAccount','Smtp','\x22%s\x22\x20<%s>','email','bcc','subject','service','host','port','secure','authentication','auth','user','pass','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','sendMailMessage','Mail\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','no\x20sms\x20account\x20found','debug','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','replaceAll','join','path','util','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','channel','mailRpc','prototype','rpc','name','getVoiceQueue','getVoiceQueueById','then','getSquareProject','getSquareProjectById','catch','getSquareOdbc','getTrunkById','getSoundPath','save_name','getIntervals','getIntervalById','IntervalId','Intervals','format','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','close','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','createSquareRecording','uniqueid','callerid','calleridname','context','extension','accountcode','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','callback','callback_priority','agent','agentPause','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','en-US','ssmlGender','MALE','googleTTS','google_tts_language','restAPI','url','method','timeout','number','POST','PUT','toUpperCase','body','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','headers','parse','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','awsPolly','aws_secret_access_key','aws_polly_region','aws_text_type','awsLex','aws_access_key_id','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','includes','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','saveRestApiResult','%s.%s','length','setVariable','split','extra','toString','getVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','exec','MRCP_RECOG_CONFIDENCE','getAndSetVariable','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','delay','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','no\x20text\x20configured','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','query','query:\x20%s','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach'];(function(_0x5751e6,_0x125e5e){var _0x4199e4=function(_0x559843){while(--_0x559843){_0x5751e6['push'](_0x5751e6['shift']());}};_0x4199e4(++_0x125e5e);}(_0xff2e,0xff));var _0xeff2=function(_0x21925f,_0x3c30cb){_0x21925f=_0x21925f-0x0;var _0x9343fa=_0xff2e[_0x21925f];return _0x9343fa;};'use strict';var fs=require('fs');var path=require(_0xeff2('0x0'));var util=require(_0xeff2('0x1'));var _=require('lodash');var sh=require(_0xeff2('0x2'));var odbc=require(_0xeff2('0x3'))();var rs=require(_0xeff2('0x4'));var moment=require(_0xeff2('0x5'));var Mustache=require(_0xeff2('0x6'));var rp=require(_0xeff2('0x7'));var logger=require(_0xeff2('0x8'))(_0xeff2('0x9'));var config=require(_0xeff2('0xa'));var scripts=require(_0xeff2('0xb'));var FILES_PATH=_0xeff2('0xc');var recursiveMapAttributes=['rawHeaders',_0xeff2('0xd')];var verticesWithRetry=[_0xeff2('0xe'),_0xeff2('0xf'),_0xeff2('0x10')];var AGIVertices=function(_0x4c978e,_0x103812,_0x2b60fb){this[_0xeff2('0x11')]=_0x4c978e;this['rpc']=_0x103812;this[_0xeff2('0x12')]=_0x2b60fb;};AGIVertices[_0xeff2('0x13')]['getVariable']=function(_0x651b6b,_0x2b15c6){this[_0xeff2('0x14')]['getVariableById'](_0x651b6b)['then'](function(_0x434944){_0x2b15c6(null,_0x434944?_0x434944[_0xeff2('0x15')]:![]);})['catch'](function(_0x3b91bc){_0x2b15c6(_0x3b91bc);});};AGIVertices['prototype'][_0xeff2('0x16')]=function(_0x2da94c,_0x11f1d3){this[_0xeff2('0x14')][_0xeff2('0x17')](_0x2da94c)[_0xeff2('0x18')](function(_0x569aa9){_0x11f1d3(null,_0x569aa9?_0x569aa9[_0xeff2('0x15')]:![]);})['catch'](function(_0x1fa53d){_0x11f1d3(_0x1fa53d);});};AGIVertices['prototype'][_0xeff2('0x19')]=function(_0x4d439a,_0x4e84a0){this['rpc'][_0xeff2('0x1a')](_0x4d439a)[_0xeff2('0x18')](function(_0x32946f){_0x4e84a0(null,_0x32946f?_0x32946f[_0xeff2('0x15')]:![]);})[_0xeff2('0x1b')](function(_0x188d4e){_0x4e84a0(_0x188d4e);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x1c')]=function(_0x28a0c9,_0x2861b7){this[_0xeff2('0x14')]['getSquareOdbcById'](_0x28a0c9)[_0xeff2('0x18')](function(_0xff496b){_0x2861b7(null,_0xff496b?_0xff496b['dsn']:![]);})[_0xeff2('0x1b')](function(_0x3d19a2){_0x2861b7(_0x3d19a2);});};AGIVertices['prototype']['getUser']=function(_0x49411f,_0x48608b){this[_0xeff2('0x14')]['getUserById'](_0x49411f)[_0xeff2('0x18')](function(_0x34f396){_0x48608b(null,_0x34f396?_0x34f396[_0xeff2('0x15')]:![]);})[_0xeff2('0x1b')](function(_0x56554e){_0x48608b(_0x56554e);});};AGIVertices[_0xeff2('0x13')]['getTrunk']=function(_0x389a07,_0x59963b){this[_0xeff2('0x14')][_0xeff2('0x1d')](_0x389a07)[_0xeff2('0x18')](function(_0xd4b068){_0x59963b(null,_0xd4b068?_0xd4b068[_0xeff2('0x15')]:![]);})[_0xeff2('0x1b')](function(_0x1d2fbf){_0x59963b(_0x1d2fbf);});};AGIVertices['prototype']['getSound']=function(_0x48319a,_0xc3bc19){var _0x1fba95=this;this['rpc']['getSoundById'](_0x48319a)['then'](function(_0x2cba21){_0xc3bc19(null,_0x2cba21?_0x1fba95[_0xeff2('0x1e')](_0x2cba21[_0xeff2('0x1f')]):![]);})[_0xeff2('0x1b')](function(_0x554033){_0xc3bc19(_0x554033);});};AGIVertices['prototype']['getMailAccount']=function(_0x391c0e,_0x39e7ae){this[_0xeff2('0x14')]['getMailAccountById'](_0x391c0e)['then'](function(_0x1e4f91){_0x39e7ae(null,_0x1e4f91?_0x1e4f91:![]);})['catch'](function(_0x8bcf67){_0x39e7ae(_0x8bcf67);});};AGIVertices[_0xeff2('0x13')]['sendMailMessage']=function(_0x28dfb4,_0xf8fd40,_0x262489){this[_0xeff2('0x12')]['sendMailMessage'](_0x28dfb4,_0xf8fd40)[_0xeff2('0x18')](function(){_0x262489(null);})['catch'](function(_0x4d9941){_0x262489(_0x4d9941);});};AGIVertices['prototype'][_0xeff2('0x20')]=function(_0x27bfec,_0x288497){this[_0xeff2('0x14')][_0xeff2('0x21')](_0x27bfec)[_0xeff2('0x18')](function(_0xbf1cf1){if(_0xbf1cf1){if(_0xbf1cf1[_0xeff2('0x22')]){_0x288497(null,[_0xbf1cf1['interval']]);}else{_0x288497(null,_['map'](_0xbf1cf1[_0xeff2('0x23')],'interval'));}}else{_0x288497(null,![]);}})[_0xeff2('0x1b')](function(_0x4adbf5){_0x288497(_0x4adbf5);});};AGIVertices[_0xeff2('0x13')]['getSoundPath']=function(_0x572a19){return util[_0xeff2('0x24')]('%s/sounds/converted/%s',FILES_PATH,_0x572a19);};AGIVertices[_0xeff2('0x13')]['getQueryOdbc']=function(_0xe9ece4,_0x52c5e4,_0x1a9ee6){odbc[_0xeff2('0x25')](_0xe9ece4,function(_0x483459){if(_0x483459){logger[_0xeff2('0x26')](_0xeff2('0x27'),_0x483459);_0x1a9ee6(_0x483459);}else{logger[_0xeff2('0x28')](_0xeff2('0x29'));odbc['query'](_0x52c5e4,function(_0x4a8d08,_0xe5d9bd){if(_0x4a8d08){logger[_0xeff2('0x28')](_0xeff2('0x2a'),_0x52c5e4);_0x1a9ee6(_0x4a8d08);}else{logger['info']('Query\x20executed\x20correctly\x20%s',_0x52c5e4);odbc[_0xeff2('0x2b')](function(_0x447ee3){if(_0x447ee3){logger[_0xeff2('0x26')]('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x447ee3);}_0x1a9ee6(null,_0xe5d9bd);});}});}});};AGIVertices['prototype']['getSmsAccount']=function(_0x506c79,_0x248c1f){this[_0xeff2('0x14')][_0xeff2('0x2c')](_0x506c79)['then'](function(_0x12a399){_0x248c1f(null,_0x12a399?_0x12a399:![]);})[_0xeff2('0x1b')](function(_0x52d8fe){_0x248c1f(_0x52d8fe);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x2d')]=function(_0x7023cd,_0x424cb6){this[_0xeff2('0x14')][_0xeff2('0x2d')](_0x7023cd)['then'](function(_0x458920){_0x424cb6(null,_0x458920);})[_0xeff2('0x1b')](function(_0x545b3c){_0x424cb6(_0x545b3c);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x2e')]=function(_0x2268d7,_0x2fc66e,_0x4e6159){this[_0xeff2('0x14')][_0xeff2('0x2e')]({'uniqueid':this[_0xeff2('0x11')]['uniqueid'],'node':_0x2268d7[_0xeff2('0x2f')],'application':_0x2268d7[_0xeff2('0x30')],'data':_0x2fc66e||null,'project_name':this[_0xeff2('0x11')][_0xeff2('0x31')],'callerid':this[_0xeff2('0x11')]['callerid']})['then'](function(_0x425f49){if(_0x4e6159){_0x4e6159(null,_0x425f49);}})[_0xeff2('0x1b')](function(_0x245a02){if(_0x4e6159){_0x4e6159(_0x245a02);}});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x32')]=function(_0x37aa5d,_0x5db3f0,_0x3d92c7,_0x22c361){this[_0xeff2('0x14')][_0xeff2('0x32')]({'uniqueid':this[_0xeff2('0x11')][_0xeff2('0x33')],'callerid':this[_0xeff2('0x11')][_0xeff2('0x34')],'calleridname':this['channel'][_0xeff2('0x35')],'context':this[_0xeff2('0x11')][_0xeff2('0x36')],'extension':this['channel'][_0xeff2('0x37')],'priority':this[_0xeff2('0x11')]['priority'],'accountcode':this['channel'][_0xeff2('0x38')],'dnid':this[_0xeff2('0x11')]['dnid'],'projectName':this[_0xeff2('0x11')]['arg_1'],'saveName':_0x5db3f0,'filename':_0x37aa5d[_0xeff2('0x39')]||_0x5db3f0,'savePath':_0x3d92c7})['then'](function(_0x40137c){_0x22c361(null,_0x40137c);})[_0xeff2('0x1b')](function(_0x405023){_0x22c361(_0x405023);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x3a')]=function(_0x3f7276,_0x2b24f7,_0x45ca88,_0x3e1328,_0xf68246){this['rpc']['createSquareMessage']({'uniqueid':this['channel'][_0xeff2('0x33')],'body':_0x3f7276,'direction':_0x2b24f7,'providerName':_0x45ca88,'providerResponse':_0x3e1328})[_0xeff2('0x18')](function(_0x2cba46){if(_0xf68246){_0xf68246(null,_0x2cba46);}})[_0xeff2('0x1b')](function(_0x5d1246){if(_0xf68246){_0xf68246(_0x5d1246);}});};AGIVertices['prototype'][_0xeff2('0x3b')]=function(_0x3a37c2,_0x5531a4){this['rpc'][_0xeff2('0x3b')]({'firstName':_[_0xeff2('0x3c')](_0x3a37c2['name'])||_[_0xeff2('0x3d')](_0x3a37c2[_0xeff2('0x15')])?_0xeff2('0x3e')+Math['random']():_0x3a37c2[_0xeff2('0x15')],'lastName':_[_0xeff2('0x3c')](_0x3a37c2[_0xeff2('0x3f')])||_[_0xeff2('0x3d')](_0x3a37c2[_0xeff2('0x3f')])?null:_0x3a37c2[_0xeff2('0x3f')],'phone':_0x3a37c2[_0xeff2('0x40')],'ListId':_0x3a37c2[_0xeff2('0x41')],'scheduledat':_0x3a37c2[_0xeff2('0x42')],'callbackUniqueid':this[_0xeff2('0x11')][_0xeff2('0x33')],'tags':_0xeff2('0x43'),'description':'Callback\x20scheduled\x20at\x20'+_0x3a37c2[_0xeff2('0x42')]['toString'](),'priority':_0x3a37c2[_0xeff2('0x44')]})[_0xeff2('0x18')](function(_0x28789c){_0x5531a4(null,_0x28789c);})['catch'](function(_0x45db88){_0x5531a4(_0x45db88);});};AGIVertices[_0xeff2('0x13')]['getPause']=function(_0x37cb86,_0x1a4d23){this['rpc']['getPauseById'](_0x37cb86)[_0xeff2('0x18')](function(_0x33f5f4){_0x1a4d23(null,_0x33f5f4?_0x33f5f4[_0xeff2('0x15')]:![]);})[_0xeff2('0x1b')](function(_0x31d525){_0x1a4d23(_0x31d525);});};AGIVertices[_0xeff2('0x13')]['agentPause']=function(_0x34a4a1,_0x309067,_0x4703cc){var _0x3d7fac={'role':_0xeff2('0x45')};_0x3d7fac[_0x34a4a1]=this[_0xeff2('0x11')][_0xeff2('0x34')];this['rpc'][_0xeff2('0x46')](_0x3d7fac,_0x309067,this[_0xeff2('0x11')][_0xeff2('0x33')])[_0xeff2('0x18')](function(_0x2479c1){_0x4703cc(null,_[_0xeff2('0x3d')](_0x2479c1)?![]:!![]);})[_0xeff2('0x1b')](function(_0x782e87){logger[_0xeff2('0x26')](_0x782e87);_0x4703cc(null,![]);});};AGIVertices[_0xeff2('0x13')]['agentUnpause']=function(_0x10c9b4,_0x5c9244){var _0x1564c0={'role':_0xeff2('0x45')};_0x1564c0[_0x10c9b4]=this['channel'][_0xeff2('0x34')];this['rpc'][_0xeff2('0x47')](_0x1564c0)['then'](function(_0x1dc690){_0x5c9244(null,_['isNil'](_0x1dc690)?![]:!![]);})[_0xeff2('0x1b')](function(_0x31f89f){logger[_0xeff2('0x26')](_0x31f89f);_0x5c9244(null,![]);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x48')]=function(_0x472966,_0x5cf297){var _0x26fe77={'role':_0xeff2('0x45')};_0x26fe77[_0x472966]=this['channel'][_0xeff2('0x34')];this[_0xeff2('0x14')][_0xeff2('0x48')](_0x26fe77)[_0xeff2('0x18')](function(_0x19e46d){_0x5cf297(null,_[_0xeff2('0x3d')](_0x19e46d)?![]:!![]);})['catch'](function(_0x13fb25){logger[_0xeff2('0x26')](_0x13fb25);_0x5cf297(null,![]);});};AGIVertices['prototype'][_0xeff2('0x49')]=function(_0x3955c3,_0x55d818){var _0x18342a={'role':_0xeff2('0x45')};_0x18342a[_0x3955c3]=this[_0xeff2('0x11')][_0xeff2('0x34')];var _0x5e5ea4=_0x3955c3!=_0xeff2('0x4a')?util[_0xeff2('0x24')](_0xeff2('0x4b'),_0xeff2('0x4c'),this['channel']['callerid']):undefined;this[_0xeff2('0x14')]['agentLogin'](_0x18342a,_0x5e5ea4)[_0xeff2('0x18')](function(_0x3d0be7){_0x55d818(null,_[_0xeff2('0x3d')](_0x3d0be7)?![]:!![]);})[_0xeff2('0x1b')](function(_0x2af134){logger[_0xeff2('0x26')](_0x2af134);_0x55d818(null,![]);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x4d')]=function(_0x530c17,_0x21add4){sh['exec'](_[_0xeff2('0x4e')](_0x530c17),function(_0x5a1de0,_0x42207c){var _0x1b7a49=_0x42207c[_0xeff2('0x4f')](/(\r\n|\n|\r)/gm,'');_0x21add4(null,_0x1b7a49);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x50')]=function(_0xa4bc95,_0x5be5ce){scripts['googleCloudTTS'](_0xa4bc95[_0xeff2('0x51')],_0xa4bc95[_0xeff2('0x52')]||'text',_0xa4bc95[_0xeff2('0x53')],_0xa4bc95['languageCode']||_0xeff2('0x54'),_0xa4bc95[_0xeff2('0x55')]||_0xeff2('0x56'),_0xa4bc95['audioEncoding']||'MP3')['then'](function(_0x51b299){_0x5be5ce(null,_0x51b299);})['catch'](function(_0x5a4e96){_0x5be5ce(_0x5a4e96);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x57')]=function(_0x35c2aa,_0x54ea8e){scripts[_0xeff2('0x57')](_0x35c2aa[_0xeff2('0x53')],_0x35c2aa[_0xeff2('0x58')]||'en',0x1)[_0xeff2('0x18')](function(_0x1d650e){_0x54ea8e(null,_0x1d650e);})['catch'](function(_0x3444b1){_0x54ea8e(_0x3444b1);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x59')]=function(_0x4bfac4,_0x3b0ca7){var _0xea8a84={'uri':_0x4bfac4[_0xeff2('0x5a')],'method':_0x4bfac4[_0xeff2('0x5b')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4bfac4[_0xeff2('0x5c')])===_0xeff2('0x5d')&&parseInt(_0x4bfac4[_0xeff2('0x5c')])>=0x1?parseInt(_0x4bfac4[_0xeff2('0x5c')])*0x3e8:0x5*0x3e8};if(_['includes']([_0xeff2('0x5e'),_0xeff2('0x5f')],_0xea8a84['method'][_0xeff2('0x60')]())){try{_0xea8a84[_0xeff2('0x61')]=_0x4bfac4[_0xeff2('0xd')]?JSON['parse'](_0x4bfac4[_0xeff2('0xd')]):{};}catch(_0x5dad3d){logger['error'](_0xeff2('0x62'),_0x5dad3d);}}try{_0xea8a84['headers']=_0x4bfac4[_0xeff2('0x63')]?JSON['parse'](_0x4bfac4[_0xeff2('0x63')]):{};}catch(_0x441d14){logger['error'](_0xeff2('0x64'),_0x441d14);}if(_0x4bfac4[_0xeff2('0x65')]){try{var _0x49c2b6=require(_0x4bfac4['computedVariables'])[_0xeff2('0x66')](this,_0xea8a84);_0xea8a84[_0xeff2('0x67')]=Mustache[_0xeff2('0x68')](_0x4bfac4['url'],_0x49c2b6,{},['$$','$$']);if(_0xea8a84[_0xeff2('0x69')]){_0xea8a84['headers']=JSON[_0xeff2('0x6a')](Mustache[_0xeff2('0x68')](JSON[_0xeff2('0x6b')](_0xea8a84[_0xeff2('0x69')]),_0x49c2b6,{},['$$','$$']));}if(_0xea8a84[_0xeff2('0x61')]){_0xea8a84[_0xeff2('0x61')]=JSON[_0xeff2('0x6a')](Mustache[_0xeff2('0x68')](JSON[_0xeff2('0x6b')](_0xea8a84[_0xeff2('0x61')]),_0x49c2b6,{},['$$','$$']));}}catch(_0x5c63fe){logger[_0xeff2('0x26')](_0xeff2('0x6c'),_0x5c63fe);}}rp(_0xea8a84)['then'](function(_0x17ddca){var _0x38e72d={'statusCode':_0x17ddca[_0xeff2('0x6d')]||0xc8,'statusMessage':_0x17ddca[_0xeff2('0x6e')]||'OK','headers':_0x17ddca[_0xeff2('0x69')]||{},'body':_0x17ddca[_0xeff2('0x61')]||{}};_0x3b0ca7(null,_0x38e72d);})['catch'](function(_0x52bb75){var _0x12f48c={'statusCode':_0x52bb75[_0xeff2('0x6d')]||0x1f4,'statusMessage':_0x52bb75[_0xeff2('0x6f')]||_0xeff2('0x70'),'headers':_0x52bb75[_0xeff2('0x71')][_0xeff2('0x69')]||{},'body':_0x52bb75['options'][_0xeff2('0x61')]||{}};_0x3b0ca7(null,_0x12f48c);});};AGIVertices[_0xeff2('0x13')]['googleDialogflow']=function(_0x4b1918,_0x253098){scripts[_0xeff2('0x72')](this[_0xeff2('0x11')]['uniqueid'],_0x4b1918[_0xeff2('0x73')],_0x4b1918[_0xeff2('0x53')],_0x4b1918['dialogflow_language']||'en')[_0xeff2('0x18')](function(_0x4a030a){_0x253098(null,_0x4a030a);})[_0xeff2('0x1b')](function(_0x3c931f){_0x253098(_0x3c931f);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x74')]=function(_0x4913b4,_0x5060f2){scripts[_0xeff2('0x74')](this[_0xeff2('0x11')][_0xeff2('0x33')],_0x4913b4[_0xeff2('0x75')],_0x4913b4[_0xeff2('0x76')],_0x4913b4['private_key'],_0x4913b4[_0xeff2('0x53')],_0x4913b4[_0xeff2('0x77')]||'en')['then'](function(_0x2d874f){_0x5060f2(null,_0x2d874f);})[_0xeff2('0x1b')](function(_0x2b5688){_0x5060f2(_0x2b5688);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x78')]=function(_0x2f4735,_0x882699){scripts['sestekNDA'](this[_0xeff2('0x11')],_0x2f4735)['then'](function(_0x1ac90f){_0x882699(null,_0x1ac90f);})[_0xeff2('0x1b')](function(_0x3c83bc){_0x882699(_0x3c83bc);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x79')]=function(_0x1436bd,_0x5e0eb1){scripts['ispeechTTS'](_0x1436bd[_0xeff2('0x73')],_0x1436bd[_0xeff2('0x53')],_0x1436bd[_0xeff2('0x7a')]||_0xeff2('0x54'),_0x1436bd[_0xeff2('0x7b')])[_0xeff2('0x18')](function(_0x1f7273){_0x5e0eb1(null,_0x1f7273);})[_0xeff2('0x1b')](function(_0x2c41f9){_0x5e0eb1(_0x2c41f9);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x7c')]=function(_0x40af26,_0x2273ec,_0x434d2f){scripts[_0xeff2('0x7c')](_0x2273ec,_0x40af26['key'],_0x40af26[_0xeff2('0x7d')]||'en-US',this[_0xeff2('0x7e')](_0x40af26['model'])?_0x40af26['model']:undefined)['then'](function(_0x19fb40){_0x434d2f(null,_0x19fb40);})['catch'](function(_0xe1616c){_0x434d2f(_0xe1616c);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x7f')]=function(_0x218603,_0x2b30bc){scripts[_0xeff2('0x7f')](_0x218603['aws_access_key_id'],_0x218603[_0xeff2('0x80')],_0x218603[_0xeff2('0x81')],_0x218603['aws_polly_voice']||'Amy',_0x218603[_0xeff2('0x53')],_0x218603[_0xeff2('0x82')]||'text')[_0xeff2('0x18')](function(_0x39e543){_0x2b30bc(null,_0x39e543);})[_0xeff2('0x1b')](function(_0x3fe918){_0x2b30bc(_0x3fe918);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x83')]=function(_0x491f82,_0x427b81){scripts[_0xeff2('0x83')](this[_0xeff2('0x11')]['uniqueid'],_0x491f82[_0xeff2('0x84')],_0x491f82[_0xeff2('0x80')],_0x491f82['aws_lex_region'],_0x491f82[_0xeff2('0x53')],_0x491f82[_0xeff2('0x85')])[_0xeff2('0x18')](function(_0x96234f){_0x427b81(null,_0x96234f);})['catch'](function(_0x5f3ded){_0x427b81(_0x5f3ded);});};AGIVertices[_0xeff2('0x13')]['googleASR']=function(_0x1e9482,_0x18ee3b,_0x107513){scripts[_0xeff2('0x86')](_0x18ee3b,_0x1e9482['key'],_0x1e9482[_0xeff2('0x87')]||_0xeff2('0x54'))['then'](function(_0x4af943){_0x107513(null,_0x4af943);})['catch'](function(_0x380931){_0x107513(_0x380931);});};AGIVertices[_0xeff2('0x13')][_0xeff2('0x88')]=function(_0x4c1b0d,_0x1588ee,_0x584939){scripts['tildeASR'](_0x1588ee,_0x4c1b0d[_0xeff2('0x89')],_0x4c1b0d['appsecret'],_0x4c1b0d[_0xeff2('0x67')])['then'](function(_0x200485){_0x584939(null,_0x200485);})[_0xeff2('0x1b')](function(_0x4f97d7){_0x584939(_0x4f97d7);});};AGIVertices['prototype']['clear']=function(_0x1e0334){var _0x46ac91=_[_0xeff2('0x8a')](verticesWithRetry,_0x1e0334[_0xeff2('0x30')])?_0x1e0334:_[_0xeff2('0x8b')](_0x1e0334);for(var _0x2f1029 in _0x46ac91){if(_0x46ac91[_0xeff2('0x8c')](_0x2f1029)){if(_0x46ac91[_0x2f1029]&&_[_0xeff2('0x8d')](_0x46ac91[_0x2f1029])){if(_['includes'](recursiveMapAttributes,_0x2f1029)){_0x46ac91[_0x2f1029]=this[_0xeff2('0x8e')](_0x46ac91[_0x2f1029]);}else{_0x46ac91[_0x2f1029]=this[_0xeff2('0x8f')](_0x46ac91[_0x2f1029]);}}}}return _0x46ac91;};AGIVertices[_0xeff2('0x13')][_0xeff2('0x90')]=function(_0xddaf0a){for(var _0x2c74dc in _0xddaf0a){if(_0xddaf0a[_0xeff2('0x8c')](_0x2c74dc)){if(_[_0xeff2('0x91')](_0xddaf0a[_0x2c74dc])){this[_0xeff2('0x90')](_0xddaf0a[_0x2c74dc]);}else if(_[_0xeff2('0x92')](_0xddaf0a[_0x2c74dc])){for(var _0xffcd7b=0x0;_0xffcd7b<_0xddaf0a[_0x2c74dc]['length'];_0xffcd7b++){this[_0xeff2('0x90')](_0xddaf0a[_0x2c74dc][_0xffcd7b]);}}else if(_[_0xeff2('0x8d')](_0xddaf0a[_0x2c74dc])){_0xddaf0a[_0x2c74dc]=this[_0xeff2('0x8f')](_0xddaf0a[_0x2c74dc]);}}}};AGIVertices[_0xeff2('0x13')][_0xeff2('0x93')]=function(_0x5c4645,_0x149821){for(var _0x334e68 in _0x5c4645){if(_0x5c4645[_0xeff2('0x8c')](_0x334e68)){if(_[_0xeff2('0x91')](_0x5c4645[_0x334e68])){if(!_[_0xeff2('0x3c')](_0x5c4645[_0x334e68])){this[_0xeff2('0x93')](_0x5c4645[_0x334e68],util['format'](_0xeff2('0x94'),_0x149821,_0x334e68));}}else if(_[_0xeff2('0x92')](_0x5c4645[_0x334e68])){for(var _0x286eb3=0x0;_0x286eb3<_0x5c4645[_0x334e68][_0xeff2('0x95')];_0x286eb3++){this[_0xeff2('0x93')](_0x5c4645[_0x334e68][_0x286eb3],util['format'](_0xeff2('0x94'),_0x149821,_0x334e68+'['+_0x286eb3+']'));}}else{if(!_[_0xeff2('0x3d')](_0x5c4645[_0x334e68])){this['channel'][_0xeff2('0x96')](util['format'](_0xeff2('0x94'),_0x149821,_0x334e68),_0x5c4645[_0x334e68]);}}}}};AGIVertices[_0xeff2('0x13')][_0xeff2('0x8e')]=function(_0x123ce6){try{var _0x222f4c=JSON[_0xeff2('0x6a')](_0x123ce6);this[_0xeff2('0x90')](_0x222f4c);return JSON[_0xeff2('0x6b')](_0x222f4c);}catch(_0xb96d8a){return this[_0xeff2('0x8f')](_0x123ce6);}};AGIVertices['prototype'][_0xeff2('0x8f')]=function(_0x11ad24){var _0x42d542=_0x11ad24[_0xeff2('0x97')]('{');for(var _0x537c4a=0x1;_0x537c4a<_0x42d542['length'];_0x537c4a+=0x1){var _0x51cdf6=_0x42d542[_0x537c4a][_0xeff2('0x97')]('}');if(_0x51cdf6[_0xeff2('0x95')]>0x1){_0x11ad24=_0x11ad24['replaceAll']('{'+_0x51cdf6[0x0]+'}',this[_0xeff2('0x11')]['getVariable'](_0x51cdf6[0x0])[_0xeff2('0x98')]||_0x51cdf6[0x0]);}}if(_0x42d542['length']===0x1){return _0x11ad24[_0xeff2('0x99')]();}return this[_0xeff2('0x8f')](_0x11ad24);};AGIVertices[_0xeff2('0x13')]['getAndSetVariable']=function(_0x4b3b3e,_0xd4a645){var _0x3b0cb5=this['channel'][_0xeff2('0x9a')](_0x4b3b3e);if(_0x3b0cb5[_0xeff2('0x9b')]===-0x1){return _0x3b0cb5;}logger[_0xeff2('0x28')](util['format'](_0xeff2('0x9c'),_0xd4a645,_0x3b0cb5['extra']));return this['channel']['setVariable'](_0xd4a645,_0x3b0cb5[_0xeff2('0x98')]);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x7e')]=function(_0x5ed8d5){return _0x5ed8d5&&_0x5ed8d5!=='0'&&_0x5ed8d5!=='-1'&&_0x5ed8d5!=='';};AGIVertices[_0xeff2('0x13')][_0xeff2('0x9d')]=function(_0x572157){this['createSquareDetailsReport'][_0xeff2('0x66')](this,_0x572157,'-');_0x572157[_0xeff2('0x9e')]=_0x572157['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0xeff2('0x13')][_0xeff2('0x9f')]=function(_0x285125){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xa0'),_0x285125[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x285125['text'])){return this['channel'][_0xeff2('0xa1')]('no\x20text\x20configured');}var _0x227e11='\x22'+_0x285125[_0xeff2('0x53')]+'\x22';if(this[_0xeff2('0x7e')](_0x285125[_0xeff2('0x71')])){_0x227e11+=','+_0x285125[_0xeff2('0x71')];}var _0x12dbd6=this[_0xeff2('0x11')]['exec'](_0xeff2('0xa2'),_0x227e11);if(_0x12dbd6[_0xeff2('0x9b')]===-0x1){return _0x12dbd6;}return this['channel'][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xa3'),_0x227e11));};AGIVertices[_0xeff2('0x13')]['mrcprecog']=function(_0x39fed6){logger[_0xeff2('0x28')](util['format'](_0xeff2('0xa4'),_0x39fed6[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x39fed6[_0xeff2('0xa5')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20grammar\x20configured');}var _0x410e49=_0x39fed6[_0xeff2('0xa5')];if(this[_0xeff2('0x7e')](_0x39fed6['options'])){_0x410e49+=','+_0x39fed6[_0xeff2('0x71')];}var _0x377dc6=this[_0xeff2('0x11')][_0xeff2('0xa6')]('MRCPRecog',_0x410e49);if(_0x377dc6[_0xeff2('0x9b')]===-0x1){return _0x377dc6;}var _0x20de31=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xeff2('0xa7'));if(_0x20de31[_0xeff2('0x9b')]===-0x1){return _0x20de31;}var _0x5055a4=this[_0xeff2('0xa8')](_0xeff2('0xa9'),_0xeff2('0xaa'));if(_0x5055a4[_0xeff2('0x9b')]===-0x1){return _0x5055a4;}var _0x1cf723=this[_0xeff2('0xa8')](_0xeff2('0xab'),_0xeff2('0xac'));if(_0x1cf723[_0xeff2('0x9b')]===-0x1){return _0x1cf723;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xad'),_0x410e49));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x9')]=function(_0x9d37d9){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xae'),_0x9d37d9[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0x9')]([_0x9d37d9[_0xeff2('0xaf')],_0x9d37d9[_0xeff2('0xb0')]]);};AGIVertices[_0xeff2('0x13')][_0xeff2('0xb1')]=function(_0x1ae209){logger[_0xeff2('0x28')](util['format'](_0xeff2('0xb2'),_0x1ae209[_0xeff2('0x2f')]));if(this[_0xeff2('0x7e')](_0x1ae209['timeout'])){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xb3'),_0x1ae209[_0xeff2('0x5c')]));var _0x59d053=this['channel'][_0xeff2('0xb4')](_0x1ae209[_0xeff2('0x5c')]);if(_0x59d053[_0xeff2('0x9b')]===-0x1){return _0x59d053;}}return this['channel'][_0xeff2('0xb1')]();};AGIVertices['prototype'][_0xeff2('0x43')]=function(_0xd0e635){logger[_0xeff2('0x28')](util['format'](_0xeff2('0xb5'),_0xd0e635[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0xd0e635[_0xeff2('0x41')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0xd0e635,_0xeff2('0xb6'));}_0xd0e635[_0xeff2('0x42')]=moment();if(this['isConfigured'](_0xd0e635['delay'])){_0xd0e635['scheduledAt']=moment()[_0xeff2('0xb7')](_0xd0e635[_0xeff2('0xb8')],'minutes');}if(!this[_0xeff2('0x7e')](_0xd0e635['callback_priority'])){_0xd0e635[_0xeff2('0x44')]=0x2;}this[_0xeff2('0x3b')][_0xeff2('0x66')](this,_0xd0e635);return this[_0xeff2('0x11')]['noop'](util['format'](_0xeff2('0xb9'),_0xd0e635[_0xeff2('0x40')],_0xd0e635['list_id'],_0xd0e635['scheduledAt']));};AGIVertices[_0xeff2('0x13')][_0xeff2('0xba')]=function(_0x4b4ecf){logger['info'](util[_0xeff2('0x24')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x4b4ecf['label']));var _0x32c8f3=this[_0xeff2('0x11')]['exec'](_0x4b4ecf[_0xeff2('0xbb')],_0x4b4ecf['options']);if(_0x32c8f3[_0xeff2('0x9b')]===-0x1){return _0x32c8f3;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('Executed\x20command\x20%s\x20%s',_0x4b4ecf[_0xeff2('0xbb')],_0x4b4ecf['options']));};AGIVertices[_0xeff2('0x13')][_0xeff2('0xbc')]=function(_0x2ebaee){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xbd'),_0x2ebaee['label']));if(!this[_0xeff2('0x7e')](_0x2ebaee['text'])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20text\x20configured');}var _0x166a95='\x22'+_0x2ebaee[_0xeff2('0x53')]+'\x22';if(this['isConfigured'](_0x2ebaee[_0xeff2('0x71')])){_0x166a95+=','+_0x2ebaee[_0xeff2('0x71')];}var _0x240ac9=this[_0xeff2('0x11')][_0xeff2('0xa6')](_0xeff2('0xa2'),_0x166a95);if(_0x240ac9['result']===-0x1){return _0x240ac9;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xa3'),_0x166a95));};AGIVertices[_0xeff2('0x13')]['sestektts']=function(_0x4b4224){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xbe'),_0x4b4224[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x4b4224[_0xeff2('0x53')])){return this[_0xeff2('0x11')]['noop'](_0xeff2('0xbf'));}var _0x4baa59='\x22'+_0x4b4224[_0xeff2('0x53')]+'\x22';if(this[_0xeff2('0x7e')](_0x4b4224[_0xeff2('0x71')])){_0x4baa59+=','+_0x4b4224[_0xeff2('0x71')];}var _0x3adf15=this[_0xeff2('0x11')][_0xeff2('0xa6')](_0xeff2('0xa2'),_0x4baa59);if(_0x3adf15[_0xeff2('0x9b')]===-0x1){return _0x3adf15;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xa3'),_0x4baa59));};AGIVertices[_0xeff2('0x13')]['lumenvoxasr']=function(_0x26340d){logger['info'](util['format'](_0xeff2('0xc0'),_0x26340d['label']));if(!this[_0xeff2('0x7e')](_0x26340d[_0xeff2('0xa5')])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0xc1'));}var _0x478d12=_0x26340d['grammar'];if(this['isConfigured'](_0x26340d[_0xeff2('0x71')])){_0x478d12+=','+_0x26340d[_0xeff2('0x71')];}var _0x5baf30=this[_0xeff2('0x11')][_0xeff2('0xa6')](_0xeff2('0xc2'),_0x478d12);if(_0x5baf30[_0xeff2('0x9b')]===-0x1){return _0x5baf30;}var _0x59ae19=this[_0xeff2('0xa8')](_0xeff2('0xc3'),_0xeff2('0xc4'));if(_0x59ae19[_0xeff2('0x9b')]===-0x1){return _0x59ae19;}var _0x3b892a=this['getAndSetVariable'](_0xeff2('0xa9'),_0xeff2('0xc5'));if(_0x3b892a['result']===-0x1){return _0x3b892a;}var _0x1dd57f=this['getAndSetVariable'](_0xeff2('0xab'),_0xeff2('0xc6'));if(_0x1dd57f['result']===-0x1){return _0x1dd57f;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xad'),_0x478d12));};AGIVertices['prototype'][_0xeff2('0xc7')]=function(_0x5999ab){logger[_0xeff2('0x28')](util[_0xeff2('0x24')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x5999ab[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x5999ab[_0xeff2('0xa5')])){return this[_0xeff2('0x11')]['noop']('no\x20grammar\x20configured');}var _0x2cb375=_0x5999ab['grammar'];if(this[_0xeff2('0x7e')](_0x5999ab[_0xeff2('0x71')])){_0x2cb375+=','+_0x5999ab[_0xeff2('0x71')];}var _0x36609c=this['channel']['exec'](_0xeff2('0xc2'),_0x2cb375);if(_0x36609c[_0xeff2('0x9b')]===-0x1){return _0x36609c;}var _0x5dcffe=this[_0xeff2('0xa8')](_0xeff2('0xc3'),_0xeff2('0xc8'));if(_0x5dcffe[_0xeff2('0x9b')]===-0x1){return _0x5dcffe;}var _0xe88af6=this['getAndSetVariable'](_0xeff2('0xa9'),'SESTEK_ASR_TRANSCRIPT');if(_0xe88af6[_0xeff2('0x9b')]===-0x1){return _0xe88af6;}var _0x31fef0=this[_0xeff2('0xa8')]('RECOG_INSTANCE()',_0xeff2('0xc9'));if(_0x31fef0[_0xeff2('0x9b')]===-0x1){return _0x31fef0;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xad'),_0x2cb375));};AGIVertices[_0xeff2('0x13')][_0xeff2('0xca')]=function(_0x4097f3){logger['info'](util['format'](_0xeff2('0xcb'),_0x4097f3[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x4097f3['odbc_id'])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4097f3,_0xeff2('0xcc'));}var _0xaaf49=this[_0xeff2('0x1c')][_0xeff2('0x66')](this,_0x4097f3[_0xeff2('0xcd')]);if(!_0xaaf49){return this['channel']['error'](_0x4097f3,_0xeff2('0xce'));}if(!this['isConfigured'](_0x4097f3[_0xeff2('0xcf')])){return this['channel'][_0xeff2('0x26')](_0x4097f3,'no\x20query\x20configured');}var _0x5326c6=_0x4097f3[_0xeff2('0xcf')]['replace'](/(\r\n|\n|\r)/gm,'\x20');this[_0xeff2('0x11')]['noop'](util['format'](_0xeff2('0xd0'),_0x5326c6));var _0x172d3d=this[_0xeff2('0xd1')][_0xeff2('0x66')](this,_0xaaf49,_0x5326c6);this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x4097f3,_0x5326c6);if(!this[_0xeff2('0x7e')](_0x4097f3[_0xeff2('0xd2')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xd3'));}var _0x265b90=this[_0xeff2('0x9a')][_0xeff2('0x66')](this,_0x4097f3[_0xeff2('0xd2')]);if(!_0x265b90){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4097f3,_0xeff2('0xd4'));}var _0x4f96d4=this;_0x172d3d[_0xeff2('0xd5')](function(_0x16dee4,_0xbfb0ef){Object[_0xeff2('0xd6')](_0x16dee4)['forEach'](function(_0x523410){_0x4f96d4[_0xeff2('0x11')][_0xeff2('0x96')](util[_0xeff2('0x24')](_0xeff2('0xd7'),_0x265b90,_0xbfb0ef,_0x523410),_0x16dee4[_0x523410]);});});this[_0xeff2('0x11')][_0xeff2('0x96')](util['format'](_0xeff2('0xd8'),_0x265b90),_0x172d3d[_0xeff2('0x95')]);return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xd9'),_0x265b90));};AGIVertices[_0xeff2('0x13')][_0xeff2('0xda')]=function(_0x4ea53c){logger['debug'](util[_0xeff2('0x24')](_0xeff2('0xdb'),_0x4ea53c[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x4ea53c[_0xeff2('0xdc')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4ea53c,'no\x20user\x20selected');}var _0x52d8ad=this[_0xeff2('0xdd')][_0xeff2('0x66')](this,_0x4ea53c[_0xeff2('0xdc')]);if(!_0x52d8ad){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4ea53c,'no\x20user\x20found');}var _0x535a71=this[_0xeff2('0x11')][_0xeff2('0xa6')](_0xeff2('0xde'),[util[_0xeff2('0x24')](_0xeff2('0xdf'),_0x52d8ad),_0x4ea53c[_0xeff2('0x5c')],_0x4ea53c[_0xeff2('0xe0')],_0x4ea53c[_0xeff2('0x5a')]]);if(_0x535a71[_0xeff2('0x9b')]===-0x1){return _0x535a71;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('Executed\x20command\x20%s',_0xeff2('0xde')));};AGIVertices[_0xeff2('0x13')][_0xeff2('0xe1')]=function(_0x2ce9ed){logger[_0xeff2('0x28')](util['format'](_0xeff2('0xe2'),_0x2ce9ed[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x2ce9ed[_0xeff2('0x73')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20key\x20configured');}if(!this[_0xeff2('0x7e')](_0x2ce9ed[_0xeff2('0x53')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xbf'));}this['channel'][_0xeff2('0xe3')]=!![];this[_0xeff2('0x2e')](_0x2ce9ed);this[_0xeff2('0x3a')](_0x2ce9ed[_0xeff2('0x53')],'in','','');this[_0xeff2('0x11')]['noop'](util[_0xeff2('0x24')]('Trying\x20Dialogflow:\x20%s',_0x2ce9ed[_0xeff2('0x53')]));var _0x35e9ea=this[_0xeff2('0x72')][_0xeff2('0x66')](this,_0x2ce9ed);if(_0x35e9ea){for(var _0x54e0e6 in _0x35e9ea){if(_0x35e9ea[_0xeff2('0x8c')](_0x54e0e6)){this[_0xeff2('0x11')][_0xeff2('0x96')](util[_0xeff2('0x24')]('DIALOGFLOW_%s',_0x54e0e6[_0xeff2('0x60')]()),_0x35e9ea[_0x54e0e6]);}}this[_0xeff2('0x3a')](_0x35e9ea[_0xeff2('0xe4')],_0xeff2('0xe5'),_0xeff2('0xe1'),'');return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xe6'),_0x35e9ea[_0xeff2('0xe4')]));}return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x2ce9ed,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0xeff2('0x13')][_0xeff2('0xe7')]=function(_0xe8cf1f){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xe8'),_0xe8cf1f[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0xe8cf1f[_0xeff2('0x75')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xe9'));}if(!this[_0xeff2('0x7e')](_0xe8cf1f[_0xeff2('0x76')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20client_email\x20configured');}if(!this[_0xeff2('0x7e')](_0xe8cf1f[_0xeff2('0xea')])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0xeb'));}if(!this['isConfigured'](_0xe8cf1f['dialogflowV2_language'])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xec'));}if(!this[_0xeff2('0x7e')](_0xe8cf1f[_0xeff2('0x53')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xbf'));}this[_0xeff2('0x11')]['bot']=!![];this[_0xeff2('0x2e')](_0xe8cf1f);this[_0xeff2('0x3a')](_0xe8cf1f['text'],'in','','');this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format']('Trying\x20DialogflowV2:\x20%s',_0xe8cf1f[_0xeff2('0x53')]));var _0x59a17d=this[_0xeff2('0x74')]['sync'](this,_0xe8cf1f);if(_0x59a17d){for(var _0x390d5b in _0x59a17d){if(_0x59a17d[_0xeff2('0x8c')](_0x390d5b)){if(_0x390d5b!==_0xeff2('0xed')){this[_0xeff2('0x11')][_0xeff2('0x96')](util[_0xeff2('0x24')](_0xeff2('0xee'),_0x390d5b[_0xeff2('0x60')]()),_0x59a17d[_0x390d5b]);}}}this[_0xeff2('0x3a')](_0x59a17d['speech'],_0xeff2('0xe5'),_0xeff2('0xe7'),_0x59a17d[_0xeff2('0xed')]);return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xef'),_0x59a17d[_0xeff2('0xe4')]));}return this[_0xeff2('0x11')][_0xeff2('0x26')](_0xe8cf1f,_0xeff2('0xf0'));};AGIVertices['prototype'][_0xeff2('0xf1')]=function(_0x292bcc){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xf2'),_0x292bcc[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x292bcc[_0xeff2('0xf3')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20ndauth\x20url\x20configured');}if(!this[_0xeff2('0x7e')](_0x292bcc[_0xeff2('0xf4')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20username\x20configured');}if(!this[_0xeff2('0x7e')](_0x292bcc[_0xeff2('0xf5')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xf6'));}if(!this[_0xeff2('0x7e')](_0x292bcc[_0xeff2('0xf7')])){return this['channel'][_0xeff2('0xa1')]('no\x20text\x20configured');}this[_0xeff2('0x11')]['bot']=!![];this[_0xeff2('0x2e')](_0x292bcc);this[_0xeff2('0x3a')](_0x292bcc['text'],'in','','');this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xf8'),_0x292bcc['text']));var _0x32ae4a=this[_0xeff2('0x78')]['sync'](this,_0x292bcc);if(_0x32ae4a){for(var _0x8ba98b in _0x32ae4a){if(_0x32ae4a['hasOwnProperty'](_0x8ba98b)){this[_0xeff2('0x11')][_0xeff2('0x96')](util['format'](_0xeff2('0xf9'),_0x8ba98b['toUpperCase']()),_0x32ae4a[_0x8ba98b]);}}this[_0xeff2('0x3a')](_0x32ae4a[_0xeff2('0xe4')],_0xeff2('0xe5'),_0xeff2('0xf1'),'');if(_0x32ae4a['audiofile']){this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xfa'),_0x32ae4a[_0xeff2('0xfb')]));var _0x45a603=this[_0xeff2('0x11')][_0xeff2('0xfc')](_0x32ae4a[_0xeff2('0xfb')]);try{fs[_0xeff2('0xfd')](_0x32ae4a['audiofile']+'.wav');}catch(_0x141b51){logger[_0xeff2('0x26')](_0x141b51);}return _0x45a603;}else{return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('SestekNDA\x20Result\x20%s',_0x32ae4a[_0xeff2('0xe4')]));}}return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x292bcc,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xeff2('0x13')][_0xeff2('0xfe')]=function(_0x7feb81){logger['info'](util[_0xeff2('0x24')]('Enter\x20in\x20END\x20(%s)\x20block',_0x7feb81[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xfe'));};AGIVertices['prototype']['ext_dial']=function(_0x4a7660){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0xff'),_0x4a7660[_0xeff2('0x2f')]));var _0x212429='';if(_0x4a7660[_0xeff2('0x100')]){if(!this[_0xeff2('0x7e')](_0x4a7660[_0xeff2('0x100')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4a7660,_0xeff2('0x101'));}else{var _0x30f897=parseInt(_0x4a7660['trunk_id'],0xa);if(isNaN(_0x30f897)){_0x212429=_0x4a7660[_0xeff2('0x100')];}else{_0x212429=this['getTrunk'][_0xeff2('0x66')](this,_0x4a7660['trunk_id']);if(!_0x212429){return this['channel'][_0xeff2('0x26')](_0x4a7660,'no\x20trunk\x20found');}}}}else if(_0x4a7660[_0xeff2('0x102')]){_0x212429=_0x4a7660[_0xeff2('0x102')];}else{return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4a7660,_0xeff2('0x101'));}var _0x40aafa=this['channel'][_0xeff2('0xa6')](_0xeff2('0xde'),[util[_0xeff2('0x24')](_0xeff2('0x103'),_0x212429,_0x4a7660['phone']),_0x4a7660[_0xeff2('0x5c')],_0x4a7660[_0xeff2('0xe0')],_0x4a7660[_0xeff2('0x5a')]]);if(_0x40aafa[_0xeff2('0x9b')]===-0x1){return _0x40aafa;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format'](_0xeff2('0x104'),_0xeff2('0xde')));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x105')]=function(_0xbfce19){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x106'),_0xbfce19[_0xeff2('0x2f')]));return this[_0xeff2('0x11')]['noop'](_0xeff2('0x105'));};AGIVertices[_0xeff2('0x13')][_0xeff2('0xf')]=function(_0x2be687){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x107'),_0x2be687[_0xeff2('0x2f')]));if(_0x2be687[_0xeff2('0x9e')]===0x0){return this[_0xeff2('0x9d')](_0x2be687);}_0x2be687[_0xeff2('0x9e')]-=0x1;if(!this['isConfigured'](_0x2be687[_0xeff2('0x108')])){return this[_0xeff2('0x11')]['error'](_0x2be687,_0xeff2('0x109'));}var _0x37503b=this[_0xeff2('0x10a')][_0xeff2('0x66')](this,_0x2be687[_0xeff2('0x108')]);if(!_0x37503b){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x2be687,'no\x20file\x20audio\x20found');}if(!this[_0xeff2('0x7e')](_0x2be687[_0xeff2('0xd2')])){return this['channel'][_0xeff2('0x26')](_0xeff2('0xd3'));}var _0x491165=this[_0xeff2('0x11')]['getData'](_0x37503b,_0x2be687[_0xeff2('0x10b')],_0x2be687[_0xeff2('0x10c')]);var _0x2ac050=_0x491165['result']?_0x491165['result'][_0xeff2('0x99')]():'';logger[_0xeff2('0x28')]('test',JSON['stringify'](_0x491165));if(_0x491165[_0xeff2('0x9b')]===-0x1){this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x2be687,_0x2ac050);return _0x491165;}else if(_0x491165[_0xeff2('0x98')]===_0xeff2('0x5c')){_0x491165['result']=_0x2ac050['length']>=parseInt(_0x2be687[_0xeff2('0x10d')])?'x':'i';}else{_0x491165[_0xeff2('0x9b')]=_0x2ac050[_0xeff2('0x95')]>=parseInt(_0x2be687[_0xeff2('0x10d')])&&_0x2ac050['length']<=parseInt(_0x2be687['maxdigit'])?'x':'i';}var _0x2bc51f=this['getVariable'][_0xeff2('0x66')](this,_0x2be687['variable_id']);if(!_0x2bc51f){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x2be687,_0xeff2('0xd4'));}this['channel'][_0xeff2('0x96')](_0x2bc51f,_0x2ac050);if(this['isConfigured'](_0x2be687[_0xeff2('0x10e')])){var _0x10ef26=parseInt(_0x2be687[_0xeff2('0x10e')],0xa);var _0xd41b31=rs[_0xeff2('0x10f')]({'charset':'*','length':_0x10ef26});var _0x568376=_0x2ac050['length'];if(_0x568376>0x0){if(_0x568376>_0x10ef26){this[_0xeff2('0x2e')]['sync'](this,_0x2be687,_0x2be687[_0xeff2('0x110')]===_0xeff2('0x111')?_0xd41b31+_0x2ac050['substr'](_0x10ef26):_0x2ac050['substr'](0x0,_0x568376-_0x10ef26)+_0xd41b31);}else{this['createSquareDetailsReport'][_0xeff2('0x66')](this,_0x2be687,rs['generate']({'charset':'*','length':_0x568376}));}}else{this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x2be687,'');}}else{this['createSquareDetailsReport']['sync'](this,_0x2be687,_0x2ac050);}return _0x491165;};AGIVertices[_0xeff2('0x13')][_0xeff2('0x10')]=function(_0x3a48b0){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x112'),_0x3a48b0[_0xeff2('0x2f')]));return this[_0xeff2('0xf')](_0x3a48b0);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x113')]=function(_0x42dc77){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x114'),_0x42dc77[_0xeff2('0x2f')]));this[_0xeff2('0x2e')]['sync'](this,_0x42dc77,_0x42dc77[_0xeff2('0x115')]);return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x116'),_0x42dc77['goalname']));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x117')]=function(_0x256b1e){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x118'),_0x256b1e[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x256b1e[_0xeff2('0x84')])||!this[_0xeff2('0x7e')](_0x256b1e[_0xeff2('0x80')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x119'));}if(!this[_0xeff2('0x7e')](_0x256b1e[_0xeff2('0x53')])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0xbf'));}this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('Trying\x20aws\x20Polly\x20%s',_0x256b1e[_0xeff2('0x53')]));var _0x381bb8=this['awsPolly'][_0xeff2('0x66')](this,_0x256b1e);if(_0x381bb8){this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('aws\x20Polly\x20%s\x20file\x20created',_0x381bb8));var _0x1a90be=this['channel'][_0xeff2('0xfc')](_0x381bb8);try{fs[_0xeff2('0xfd')](_0x381bb8+_0xeff2('0x11a'));}catch(_0x1b9448){logger[_0xeff2('0x26')](_0x1b9448);}return _0x1a90be;}return this['channel'][_0xeff2('0x26')](_0x256b1e,_0xeff2('0x11b'));};AGIVertices['prototype'][_0xeff2('0x11c')]=function(_0x41c93a){logger[_0xeff2('0x28')](util[_0xeff2('0x24')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x41c93a[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x41c93a[_0xeff2('0x84')])||!this[_0xeff2('0x7e')](_0x41c93a[_0xeff2('0x80')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x119'));}if(!this[_0xeff2('0x7e')](_0x41c93a[_0xeff2('0x85')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x11d'));}if(!this[_0xeff2('0x7e')](_0x41c93a[_0xeff2('0x53')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xbf'));}this[_0xeff2('0x11')]['bot']=!![];this['createSquareDetailsReport'](_0x41c93a);this[_0xeff2('0x3a')](_0x41c93a[_0xeff2('0x53')],'in','','');this[_0xeff2('0x11')]['noop'](util['format'](_0xeff2('0x11e'),_0x41c93a[_0xeff2('0x53')]));var _0x2e9f58=this[_0xeff2('0x83')][_0xeff2('0x66')](this,_0x41c93a);if(_0x2e9f58){for(var _0x22301d in _0x2e9f58){if(_0x2e9f58[_0xeff2('0x8c')](_0x22301d)&&_[_0xeff2('0x8d')](_0x2e9f58[_0x22301d])){this['channel']['setVariable'](util['format'](_0xeff2('0x11f'),_0x22301d[_0xeff2('0x60')]()),_0x2e9f58[_0x22301d]);}}if(_[_0xeff2('0x3d')](_0x2e9f58[_0xeff2('0x6f')])){return this[_0xeff2('0x11')]['noop'](_0xeff2('0x120'));}else{this[_0xeff2('0x3a')](_0x2e9f58[_0xeff2('0x6f')],_0xeff2('0xe5'),'amazonlex','');return this['channel'][_0xeff2('0xa1')](util[_0xeff2('0x24')]('Amazon\x20Lex\x20Result\x20%s',_0x2e9f58[_0xeff2('0x6f')]));}}return this[_0xeff2('0x11')]['error'](_0x41c93a,_0xeff2('0x121'));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x122')]=function(_0x220e09){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x123'),_0x220e09['label'],_0x220e09['timeout']));if(!this[_0xeff2('0x7e')](_0x220e09[_0xeff2('0x73')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x124'));}var _0x3b6ead='wav';var _0x5c3d05=util[_0xeff2('0x24')](_0xeff2('0x125'),FILES_PATH,rs['generate'](0x4));var _0x3076d2=util[_0xeff2('0x24')](_0xeff2('0x94'),_0x5c3d05,_0x3b6ead);var _0x54a232=!![];if(_0x220e09[_0xeff2('0x126')]===_0xeff2('0x127')){_0x54a232=![];}var _0x57c602=this[_0xeff2('0x11')]['recordFile'](_0x5c3d05,_0x3b6ead,_0x220e09['intKey'],_0x220e09[_0xeff2('0x5c')],undefined,_0x54a232);if(_0x57c602[_0xeff2('0x9b')]!==-0x1){this['channel']['noop'](util[_0xeff2('0x24')](_0xeff2('0x128'),_0x3076d2));var _0x2312c9=this[_0xeff2('0x86')][_0xeff2('0x66')](this,_0x220e09,_0x3076d2);if(_0x2312c9){for(var _0x45eda2 in _0x2312c9){if(_0x2312c9[_0xeff2('0x8c')](_0x45eda2)){this[_0xeff2('0x11')]['setVariable'](util[_0xeff2('0x24')](_0xeff2('0x129'),_0x45eda2[_0xeff2('0x60')]()),_0x2312c9[_0x45eda2]);}}return this['channel']['noop'](util[_0xeff2('0x24')](_0xeff2('0x12a'),JSON[_0xeff2('0x6b')](_0x2312c9)));}}return _0x57c602;};AGIVertices['prototype']['tildeasr']=function(_0x485493){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x12b'),_0x485493[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x485493[_0xeff2('0x89')])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0x12c'));}if(!this[_0xeff2('0x7e')](_0x485493[_0xeff2('0x12d')])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0x12e'));}var _0x156fce=_0xeff2('0x12f');var _0x1640f7=util['format'](_0xeff2('0x125'),FILES_PATH,rs[_0xeff2('0x10f')](0x4));var _0x24b0eb=util[_0xeff2('0x24')]('%s.%s',_0x1640f7,_0x156fce);var _0x5b0762=!![];if(_0x485493[_0xeff2('0x126')]===_0xeff2('0x127')){_0x5b0762=![];}var _0x3cd667=this['channel'][_0xeff2('0x130')](_0x1640f7,_0x156fce,_0x485493[_0xeff2('0x131')],_0x485493['timeout'],undefined,_0x5b0762);if(_0x3cd667[_0xeff2('0x9b')]!==-0x1){this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('tilde\x20%s\x20file\x20created',_0x24b0eb));var _0x2f069c=this[_0xeff2('0x88')][_0xeff2('0x66')](this,_0x485493,_0x24b0eb);if(_0x2f069c){for(var _0xe8f7ce in _0x2f069c){if(_0x2f069c[_0xeff2('0x8c')](_0xe8f7ce)){this['channel'][_0xeff2('0x96')](util['format'](_0xeff2('0x132'),_0xe8f7ce[_0xeff2('0x60')]()),_0x2f069c[_0xe8f7ce]);}}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x133'),JSON['stringify'](_0x2f069c)));}}return _0x3cd667;};AGIVertices[_0xeff2('0x13')][_0xeff2('0x134')]=function(_0x48bded){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x135'),_0x48bded[_0xeff2('0x2f')]));return this[_0xeff2('0x11')]['continueAt'](_0x48bded['context'],_0x48bded[_0xeff2('0x37')],_0x48bded[_0xeff2('0x136')]);};AGIVertices[_0xeff2('0x13')]['gotoif']=function(_0x156175){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x137'),_0x156175['label']));if(!this[_0xeff2('0x7e')](_0x156175[_0xeff2('0x138')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x156175,_0xeff2('0x139'));}try{var _0x289b5a=eval(_0x156175['condition'])?_0xeff2('0x13a'):_0xeff2('0x13b');this[_0xeff2('0x11')]['noop'](util[_0xeff2('0x24')](_0xeff2('0x13c'),_0x156175[_0xeff2('0x138')],_0x289b5a));return{'code':0xc8,'result':_0x289b5a};}catch(_0x53769f){return{'code':0xc8,'result':_0xeff2('0x13b')};}};AGIVertices[_0xeff2('0x13')][_0xeff2('0x13d')]=function(_0x1f312c){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x13e'),_0x1f312c[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x1f312c[_0xeff2('0x13f')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x1f312c,_0xeff2('0x140'));}var _0x3f9514=this[_0xeff2('0x20')]['sync'](this,_0x1f312c[_0xeff2('0x13f')]);if(!_0x3f9514){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x1f312c,_0xeff2('0x141'));}for(var _0x3d22fc=0x0;_0x3d22fc<_0x3f9514['length'];_0x3d22fc+=0x1){var _0x5c9dff=this[_0xeff2('0x11')][_0xeff2('0x9a')](util[_0xeff2('0x24')](_0xeff2('0x142'),_0x3f9514[_0x3d22fc]));if(_0x5c9dff[_0xeff2('0x9b')]===-0x1){return _0x5c9dff;}logger['info'](util[_0xeff2('0x24')](_0xeff2('0x143'),_0x3f9514[_0x3d22fc],_0x5c9dff[_0xeff2('0x98')]));if(_0x5c9dff['extra']===_0xeff2('0x13a')){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x143'),_0x3f9514[_0x3d22fc],_0xeff2('0x13a')));this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x143'),_0x3f9514[_0x3d22fc],_0xeff2('0x13a')));return{'code':0xc8,'result':_0xeff2('0x13a')};}else{logger['info'](util[_0xeff2('0x24')](_0xeff2('0x143'),_0x3f9514[_0x3d22fc],_0xeff2('0x13b')));this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x143'),_0x3f9514[_0x3d22fc],_0xeff2('0x13b')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0xeff2('0x13')]['hangup']=function(_0x1567ba){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x144'),_0x1567ba[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0x145')]();};AGIVertices['prototype']['ispeechasr']=function(_0x31b359){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x146'),_0x31b359[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x31b359[_0xeff2('0x73')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x124'));}var _0x587a70=_0xeff2('0x12f');var _0x59369d=util[_0xeff2('0x24')]('%s/recordings/%s',FILES_PATH,rs[_0xeff2('0x10f')](0x4));var _0x242bcd=util[_0xeff2('0x24')](_0xeff2('0x94'),_0x59369d,_0x587a70);var _0x19922c=!![];if(_0x31b359[_0xeff2('0x126')]==='NOBEEP'){_0x19922c=![];}var _0x36ab90=this['channel'][_0xeff2('0x130')](_0x59369d,_0x587a70,_0x31b359[_0xeff2('0x131')],_0x31b359[_0xeff2('0x5c')],undefined,_0x19922c);if(_0x36ab90[_0xeff2('0x9b')]!==-0x1){this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x147'),_0x242bcd));var _0x27b6c1=this['ispeechASR'][_0xeff2('0x66')](this,_0x31b359,_0x242bcd);if(_0x27b6c1){for(var _0x2d8ec6 in _0x27b6c1){if(_0x27b6c1[_0xeff2('0x8c')](_0x2d8ec6)){this[_0xeff2('0x11')][_0xeff2('0x96')](util[_0xeff2('0x24')](_0xeff2('0x148'),_0x2d8ec6[_0xeff2('0x60')]()),_0x27b6c1[_0x2d8ec6]);}}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x149'),JSON[_0xeff2('0x6b')](_0x27b6c1)));}}return _0x36ab90;};AGIVertices['prototype'][_0xeff2('0x14a')]=function(_0x2d1881){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x14b'),_0x2d1881['label']));if(!this[_0xeff2('0x7e')](_0x2d1881[_0xeff2('0x73')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x124'));}if(!this[_0xeff2('0x7e')](_0x2d1881[_0xeff2('0x53')])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0xbf'));}this[_0xeff2('0x11')]['noop'](util[_0xeff2('0x24')](_0xeff2('0x14c'),_0x2d1881[_0xeff2('0x53')]));var _0x844bce=this[_0xeff2('0x79')]['sync'](this,_0x2d1881);if(_0x844bce){this['channel'][_0xeff2('0xa1')](util['format'](_0xeff2('0x147'),_0x844bce));var _0x3990ad=this[_0xeff2('0x11')]['streamFile'](_0x844bce,_0x2d1881[_0xeff2('0x131')]);try{fs[_0xeff2('0xfd')](_0x844bce+'.wav');}catch(_0x5546d5){logger['error'](_0x5546d5);}return _0x3990ad;}return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x2d1881,_0xeff2('0x14d'));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x14e')]=function(_0xc510fe){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x14f'),_0xc510fe[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0xc510fe[_0xeff2('0x150')])){return this[_0xeff2('0x11')]['error'](_0xc510fe,_0xeff2('0x151'));}logger['info'](util[_0xeff2('0x24')](_0xeff2('0x152'),this['channel'][_0xeff2('0x34')],_0xc510fe[_0xeff2('0x150')]));var _0x4d0b60=this['agentLogin'][_0xeff2('0x66')](this,_0xc510fe['findBy']);if(_0x4d0b60){logger['info'](util[_0xeff2('0x24')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xeff2('0x11')][_0xeff2('0x34')],_0xc510fe[_0xeff2('0x150')]));this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xeff2('0x11')][_0xeff2('0x34')],_0xc510fe[_0xeff2('0x150')]));return{'code':0xc8,'result':'success'};}else{logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x153'),this[_0xeff2('0x11')][_0xeff2('0x34')],_0xc510fe['findBy']));this['channel'][_0xeff2('0xa1')](util[_0xeff2('0x24')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xeff2('0x34')],_0xc510fe['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xeff2('0x13')][_0xeff2('0x154')]=function(_0x49289c){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x155'),_0x49289c[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x49289c[_0xeff2('0x150')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x49289c,_0xeff2('0x151'));}logger[_0xeff2('0x28')](util[_0xeff2('0x24')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xeff2('0x11')][_0xeff2('0x34')],_0x49289c[_0xeff2('0x150')]));var _0x3ce1f2=this[_0xeff2('0x48')][_0xeff2('0x66')](this,_0x49289c[_0xeff2('0x150')]);if(_0x3ce1f2){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x156'),this[_0xeff2('0x11')]['callerid'],_0x49289c['findBy']));this[_0xeff2('0x11')]['noop'](util[_0xeff2('0x24')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xeff2('0x11')][_0xeff2('0x34')],_0x49289c['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xeff2('0x11')][_0xeff2('0x34')],_0x49289c['findBy']));this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x153'),this[_0xeff2('0x11')][_0xeff2('0x34')],_0x49289c[_0xeff2('0x150')]));return{'code':0xc8,'result':_0xeff2('0x157')};}};AGIVertices[_0xeff2('0x13')][_0xeff2('0x158')]=function(_0x26ba20){logger['info'](util['format'](_0xeff2('0x159'),_0x26ba20[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x26ba20[_0xeff2('0x15a')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x26ba20,_0xeff2('0x15b'));}this[_0xeff2('0x11')]['noop'](util[_0xeff2('0x24')](_0xeff2('0x15c'),_0x26ba20['operation']));var _0x370ca1=eval(_0x26ba20[_0xeff2('0x15a')]);if(!this['isConfigured'](_0x26ba20[_0xeff2('0xd2')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0xd3'));}var _0x4743f7=this[_0xeff2('0x9a')]['sync'](this,_0x26ba20[_0xeff2('0xd2')]);if(!_0x4743f7){return this['channel'][_0xeff2('0x26')](_0x26ba20,'no\x20variable\x20found');}if(_[_0xeff2('0x92')](_0x370ca1)){var _0x142328=this;_0x370ca1[_0xeff2('0xd5')](function(_0x18ae94,_0x520fc5){_0x142328['channel'][_0xeff2('0x96')](util['format'](_0xeff2('0x15d'),_0x4743f7,_0x520fc5),_0x18ae94);});return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x15e'),_0x4743f7));}else{return this[_0xeff2('0x11')][_0xeff2('0x96')](_0x4743f7,_0x370ca1);}};AGIVertices['prototype'][_0xeff2('0xe')]=function(_0x57954f){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x15f'),_0x57954f['label']));if(_0x57954f[_0xeff2('0x9e')]===0x0){return this['maxRetry'](_0x57954f);}_0x57954f['retry']-=0x1;if(!this['isConfigured'](_0x57954f[_0xeff2('0x108')])){return this[_0xeff2('0x11')]['error'](_0x57954f,_0xeff2('0x109'));}var _0x4ef932=this['getSound']['sync'](this,_0x57954f[_0xeff2('0x108')]);if(!_0x4ef932){return this['channel'][_0xeff2('0x26')](_0x57954f,_0xeff2('0x160'));}var _0x35a76d=this['channel'][_0xeff2('0x161')](_0x4ef932,_0x57954f[_0xeff2('0x10b')],_0x57954f[_0xeff2('0x162')]);var _0x2cd68c=_0x35a76d[_0xeff2('0x9b')];if(_0x35a76d[_0xeff2('0x9b')]===-0x1){this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x57954f,'-1');return _0x35a76d;}else if(_0x35a76d['extra']===_0xeff2('0x5c')){_0x35a76d[_0xeff2('0x9b')]=_0x35a76d[_0xeff2('0x9b')][_0xeff2('0x95')]>0x0?_0x35a76d[_0xeff2('0x9b')]:'t';}else if(_[_0xeff2('0x3c')](_0x35a76d[_0xeff2('0x9b')])){_0x35a76d['result']='#';_0x2cd68c='#';}if(!this['isConfigured'](_0x57954f['variable_id'])){this[_0xeff2('0x11')]['noop'](_0xeff2('0xd3'));}else{var _0x49caa3=this[_0xeff2('0x9a')][_0xeff2('0x66')](this,_0x57954f[_0xeff2('0xd2')]);if(!_0x49caa3){return this['channel'][_0xeff2('0x26')](_0x57954f,_0xeff2('0xd4'));}this[_0xeff2('0x11')][_0xeff2('0x96')](_0x49caa3,_0x2cd68c);}this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x57954f,_0x2cd68c);return _0x35a76d;};AGIVertices[_0xeff2('0x13')][_0xeff2('0xa1')]=function(_0x151f24){logger['info'](util['format']('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x151f24[_0xeff2('0x2f')]));return this[_0xeff2('0x11')]['noop'](_0x151f24[_0xeff2('0x163')]||_0x151f24[_0xeff2('0x2f')]);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x164')]=function(_0x248fb6){logger[_0xeff2('0x28')](util[_0xeff2('0x24')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x248fb6[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x248fb6['findBy'])){return this[_0xeff2('0x11')]['error'](_0x248fb6,_0xeff2('0x151'));}logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x152'),this['channel']['callerid'],_0x248fb6['findBy']));var _0xf12d76=this[_0xeff2('0x165')][_0xeff2('0x66')](this,_0x248fb6[_0xeff2('0x166')]);var _0x24fcbe=this[_0xeff2('0x46')]['sync'](this,_0x248fb6[_0xeff2('0x150')],_0xf12d76);if(_0x24fcbe){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x156'),this[_0xeff2('0x11')]['callerid'],_0x248fb6[_0xeff2('0x150')]));this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xeff2('0x34')],_0x248fb6[_0xeff2('0x150')]));return{'code':0xc8,'result':_0xeff2('0x167')};}else{logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x153'),this[_0xeff2('0x11')][_0xeff2('0x34')],_0x248fb6[_0xeff2('0x150')]));this['channel'][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x156'),this[_0xeff2('0x11')]['callerid'],_0x248fb6['findBy']));return{'code':0xc8,'result':_0xeff2('0x157')};}};AGIVertices['prototype']['playback']=function(_0x5c7b37){logger[_0xeff2('0x28')](util[_0xeff2('0x24')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x5c7b37[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x5c7b37['file_id'])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x5c7b37,'no\x20file\x20audio\x20selected');}var _0x518bdd=this[_0xeff2('0x10a')][_0xeff2('0x66')](this,_0x5c7b37['file_id']);if(!_0x518bdd){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x5c7b37,_0xeff2('0x160'));}var _0x4f9b7f=this[_0xeff2('0x11')][_0xeff2('0xa6')]('PLAYBACK',[_0x518bdd,_0x5c7b37[_0xeff2('0xe0')]]);if(_0x4f9b7f[_0xeff2('0x9b')]===-0x1){return _0x4f9b7f;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format'](_0xeff2('0x168'),_0xeff2('0x169'),_0x518bdd));};AGIVertices['prototype'][_0xeff2('0x16a')]=function(_0x2a1e8a){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x16b'),_0x2a1e8a[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x2a1e8a[_0xeff2('0x16c')])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x2a1e8a,_0xeff2('0x16d'));}var _0x3bca16='';var _0x104c91=parseInt(_0x2a1e8a[_0xeff2('0x16c')],0xa);if(isNaN(_0x104c91)){_0x3bca16=_0x2a1e8a[_0xeff2('0x16c')];}else{_0x3bca16=this[_0xeff2('0x16')]['sync'](this,_0x2a1e8a[_0xeff2('0x16c')]);if(!_0x3bca16){return this['channel'][_0xeff2('0x26')](_0x2a1e8a,_0xeff2('0x16e'));}}var _0x4d1e4a='';if(this[_0xeff2('0x7e')](_0x2a1e8a[_0xeff2('0x108')])){var _0x447b40=this[_0xeff2('0x10a')]['sync'](this,_0x2a1e8a[_0xeff2('0x108')]);if(_0x447b40){_0x4d1e4a=_0x447b40;}}this['createSquareDetailsReport'][_0xeff2('0x66')](this,_0x2a1e8a,_0x3bca16);if(_0x2a1e8a[_0xeff2('0xe0')]['indexOf']('x')<0x0){_0x2a1e8a[_0xeff2('0xe0')]+='x';}if(_0x2a1e8a[_0xeff2('0xe0')][_0xeff2('0x16f')]('X')<0x0){_0x2a1e8a[_0xeff2('0xe0')]+='X';}this[_0xeff2('0x11')]['setVariable']('XMCS-QUEUE',_0x3bca16?_0x3bca16[_0xeff2('0x170')]():'');var _0x113733=this[_0xeff2('0x11')][_0xeff2('0xa6')](_0xeff2('0x171'),[_0x3bca16,_0x2a1e8a[_0xeff2('0xe0')],_0x2a1e8a['url'],_0x4d1e4a,_0x2a1e8a['timeout'],_0x2a1e8a[_0xeff2('0x9')],_0x2a1e8a[_0xeff2('0x172')],_0x2a1e8a[_0xeff2('0x173')],'',_0x2a1e8a['position']]);if(_0x113733[_0xeff2('0x9b')]===-0x1){return _0x113733;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')]('Executed\x20command\x20%s\x20%s',_0xeff2('0x171'),_0x3bca16));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x174')]=function(_0x1752b3){logger['info'](util['format'](_0xeff2('0x175'),_0x1752b3[_0xeff2('0x2f')]));var _0x3b5401=_0x1752b3[_0xeff2('0x176')]||_0xeff2('0x12f');var _0x5a1f35=util[_0xeff2('0x24')](_0xeff2('0x177'),this['channel']['uniqueid'],rs[_0xeff2('0x10f')](0x5));var _0x483dde=util['format']('%s/recordings/%s.%s',FILES_PATH,_0x5a1f35,_0x3b5401);var _0x47b2b1=util[_0xeff2('0x24')]('%s/recordings/%s',FILES_PATH,_0x5a1f35);this[_0xeff2('0x32')][_0xeff2('0x66')](this,_0x1752b3,_0x5a1f35,_0x483dde);this['channel']['setVariable'](_0xeff2('0x178'),_0x5a1f35);logger[_0xeff2('0x28')](_0xeff2('0x179'),_0x47b2b1,_0x3b5401,_0x1752b3[_0xeff2('0x17a')],_0x1752b3[_0xeff2('0x5c')]);return this[_0xeff2('0x11')][_0xeff2('0x130')](_0x47b2b1,_0x3b5401,_0x1752b3[_0xeff2('0x17a')],_0x1752b3[_0xeff2('0x5c')],undefined,!![]);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x17b')]=function(_0x4841d6){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x17c'),_0x4841d6[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x4841d6[_0xeff2('0x5a')])){return this[_0xeff2('0x11')]['noop'](_0xeff2('0x17d'));}var _0x59ec91=this['restAPI'][_0xeff2('0x66')](this,_0x4841d6);logger['info'](util[_0xeff2('0x24')](_0xeff2('0x17e'),util[_0xeff2('0x17f')](_0x59ec91,{'showHidden':![],'depth':null})));if(!this[_0xeff2('0x7e')](_0x4841d6['variable_id'])){return this['channel'][_0xeff2('0xa1')](_0xeff2('0x180'));}var _0x29da52=this[_0xeff2('0x9a')][_0xeff2('0x66')](this,_0x4841d6[_0xeff2('0xd2')]);if(!_0x29da52){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4841d6,_0xeff2('0xd4'));}this['channel'][_0xeff2('0x96')](util[_0xeff2('0x24')](_0xeff2('0x181'),_0x29da52),_0x59ec91[_0xeff2('0x6d')]?_0x59ec91[_0xeff2('0x6d')]:_0xeff2('0x182'));this['channel']['setVariable'](util[_0xeff2('0x24')]('%s_STATUS_MESSAGE',_0x29da52),_0x59ec91[_0xeff2('0x6e')]?_0x59ec91['statusMessage']:'OK');if(_0x59ec91[_0xeff2('0x61')]){try{this[_0xeff2('0x93')](_0x59ec91[_0xeff2('0x61')],_0x29da52);}catch(_0x2bd1e0){logger[_0xeff2('0x26')](util['format'](_0xeff2('0x183'),_0x29da52));}}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0xd9'),_0x29da52));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x184')]=function(_0x12bd09){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x185'),_0x12bd09[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0x186')](_0x12bd09[_0xeff2('0x187')]['replace'](/\s+/g,''),_0x12bd09[_0xeff2('0x17a')]);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x188')]=function(_0x315bc8){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x189'),_0x315bc8[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0x18a')](_0x315bc8[_0xeff2('0x5d')]['replace'](/\s+/g,''),_0x315bc8[_0xeff2('0x17a')]);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x18b')]=function(_0x58ebc6){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x18c'),_0x58ebc6[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0x18d')](_0x58ebc6[_0xeff2('0x53')],_0x58ebc6['escape_digits']);};AGIVertices[_0xeff2('0x13')][_0xeff2('0x18e')]=function(_0x152d67){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x18f'),_0x152d67[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x152d67[_0xeff2('0x190')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x191'));}var _0x9b0b76=this[_0xeff2('0x192')][_0xeff2('0x66')](this,_0x152d67[_0xeff2('0x190')]);if(!_0x9b0b76||!_0x9b0b76[_0xeff2('0x193')]){return this['channel']['error'](_0x152d67,'no\x20mail\x20account\x20found');}var _0x57d5e4={'from':util[_0xeff2('0x24')](_0xeff2('0x194'),_0x9b0b76[_0xeff2('0x15')],_0x9b0b76[_0xeff2('0x195')]||_0x9b0b76[_0xeff2('0x193')]['user']),'to':_0x152d67['to']||'','cc':_0x152d67['cc']||'','bcc':_0x152d67[_0xeff2('0x196')]||'','subject':_0x152d67[_0xeff2('0x197')],'html':_0x152d67[_0xeff2('0x53')],'text':_0x152d67[_0xeff2('0x53')]};var _0x3a7c19={'tls':{'rejectUnauthorized':![]}};if(_0x9b0b76[_0xeff2('0x193')][_0xeff2('0x198')]){_0x3a7c19[_0xeff2('0x198')]=_0x9b0b76[_0xeff2('0x193')][_0xeff2('0x198')];}else{_0x3a7c19[_0xeff2('0x199')]=_0x9b0b76['Smtp'][_0xeff2('0x199')];_0x3a7c19[_0xeff2('0x19a')]=_0x9b0b76[_0xeff2('0x193')]['port'];_0x3a7c19[_0xeff2('0x19b')]=_0x9b0b76[_0xeff2('0x193')][_0xeff2('0x19b')];}if(_0x9b0b76['Smtp'][_0xeff2('0x19c')]){_0x3a7c19[_0xeff2('0x19d')]={'user':_0x9b0b76['Smtp'][_0xeff2('0x19e')],'pass':_0x9b0b76[_0xeff2('0x193')][_0xeff2('0x19f')]};}if(this['isConfigured'](_0x152d67[_0xeff2('0x1a0')])){}logger['debug'](_0xeff2('0x1a1'),JSON[_0xeff2('0x6b')](_0x57d5e4));this['createSquareDetailsReport']['sync'](this,_0x152d67,_0x152d67[_0xeff2('0x190')]);this['channel'][_0xeff2('0xa1')](util['format'](_0xeff2('0x1a2'),_0x9b0b76[_0xeff2('0x15')]));this[_0xeff2('0x1a3')][_0xeff2('0x66')](this,_0x3a7c19,_0x57d5e4);return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x1a4'));};AGIVertices[_0xeff2('0x13')]['sendFax']=function(_0x330625){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x1a5'),_0x330625[_0xeff2('0x2f')]));return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x1a6'));};AGIVertices['prototype'][_0xeff2('0x1a7')]=function(_0x45fb31){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x1a8'),_0x45fb31[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x45fb31[_0xeff2('0x1a9')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x1aa'));}var _0x57b578=this[_0xeff2('0x1ab')][_0xeff2('0x66')](this,_0x45fb31['sms_account_id']);if(!_0x57b578){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x45fb31,_0xeff2('0x1ac'));}var _0x144143={'body':_0x45fb31['sms_text'],'phone':_0x45fb31['to']||'','SmsAccountId':_0x57b578['id']};logger[_0xeff2('0x1ad')](_0xeff2('0x1ae'),JSON['stringify'](_0x144143));this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x45fb31,_0x45fb31[_0xeff2('0x1a9')]);this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x1af'),_0x57b578[_0xeff2('0x15')]));this['createSmsMessage']['sync'](this,_0x144143);return this['channel'][_0xeff2('0xa1')](_0xeff2('0x1b0'));};AGIVertices[_0xeff2('0x13')]['set']=function(_0x29e90f){logger[_0xeff2('0x28')](util[_0xeff2('0x24')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x29e90f['label']));if(!this[_0xeff2('0x7e')](_0x29e90f['variable_id'])){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x29e90f,'no\x20variable\x20selected');}var _0x284c44=this[_0xeff2('0x9a')][_0xeff2('0x66')](this,_0x29e90f[_0xeff2('0xd2')]);if(!_0x284c44){return this[_0xeff2('0x11')]['error'](_0x29e90f,_0xeff2('0xd4'));}return this[_0xeff2('0x11')][_0xeff2('0x96')](_0x284c44,_0x29e90f['variable_value']);};AGIVertices[_0xeff2('0x13')]['start']=function(_0x4d1927){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x1b1'),_0x4d1927[_0xeff2('0x2f')]));this[_0xeff2('0x11')][_0xeff2('0xa1')](_0xeff2('0x1b2'));if(_0x4d1927[_0xeff2('0xb1')]===_0xeff2('0x1b3')){this[_0xeff2('0x11')]['noop'](_0xeff2('0x1b4'));return this[_0xeff2('0x11')][_0xeff2('0xb1')]();}return this['channel'][_0xeff2('0xa1')](_0xeff2('0x1b5'));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x1b6')]=function(_0x1b7f1a){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x1b7'),_0x1b7f1a[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x1b7f1a[_0xeff2('0x1b8')])){return this[_0xeff2('0x11')]['error'](_0x1b7f1a,_0xeff2('0x1b9'));}var _0x8b265f=this['getSquareProject']['sync'](this,_0x1b7f1a[_0xeff2('0x1b8')]);if(!this[_0xeff2('0x7e')](_0x8b265f)){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x1b7f1a,util[_0xeff2('0x24')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x1b7f1a[_0xeff2('0x1b8')]));}if(_0x8b265f===this[_0xeff2('0x11')][_0xeff2('0x31')]){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x1b7f1a,_0xeff2('0x1ba'));}this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x1b7f1a,_0x8b265f);var _0x2853a1=this[_0xeff2('0x11')][_0xeff2('0xa6')](_0xeff2('0x1bb'),util['format'](_0xeff2('0x1bc'),config['agi'][_0xeff2('0x199')]||_0xeff2('0x1bd'),_0x8b265f,this[_0xeff2('0x11')][_0xeff2('0x31')]));if(_0x2853a1[_0xeff2('0x9b')]===-0x1){return _0x2853a1;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format']('Executed\x20command\x20%s\x20%s',_0xeff2('0x1bb'),_0x8b265f));};AGIVertices[_0xeff2('0x13')][_0xeff2('0x1be')]=function(_0x260aa0){logger[_0xeff2('0x28')](util['format'](_0xeff2('0x1bf'),_0x260aa0[_0xeff2('0x2f')]));var _0x5c0ec8=this[_0xeff2('0x4d')][_0xeff2('0x66')](this,_0x260aa0[_0xeff2('0xaf')]);this[_0xeff2('0x2e')][_0xeff2('0x66')](this,_0x260aa0,_0x260aa0[_0xeff2('0xaf')]);if(this['isConfigured'](_0x260aa0['variable_id'])){var _0x4830a8=this[_0xeff2('0x9a')][_0xeff2('0x66')](this,_0x260aa0['variable_id']);if(_0x4830a8){this[_0xeff2('0x11')][_0xeff2('0x96')](_0x4830a8,_0x5c0ec8);return this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x1c0'),_0x260aa0[_0xeff2('0xaf')],_0x4830a8));}}return this[_0xeff2('0x11')]['noop'](util[_0xeff2('0x24')](_0xeff2('0x1c1'),_0x260aa0['command']));};AGIVertices['prototype'][_0xeff2('0x1c2')]=function(_0x4cd8f0){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x1c3'),_0x4cd8f0[_0xeff2('0x2f')]));_0x4cd8f0[_0xeff2('0x53')]=_0x4cd8f0[_0xeff2('0x53')][_0xeff2('0x4f')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xeff2('0x7e')](_0x4cd8f0[_0xeff2('0x51')])){return this[_0xeff2('0x11')]['noop'](_0xeff2('0x1c4'));}if(!this[_0xeff2('0x7e')](_0x4cd8f0[_0xeff2('0x53')])){return this[_0xeff2('0x11')]['noop']('no\x20text\x20configured');}this['channel']['noop'](util[_0xeff2('0x24')](_0xeff2('0x1c5'),_0x4cd8f0[_0xeff2('0x53')]));var _0x232085=this[_0xeff2('0x50')]['sync'](this,_0x4cd8f0);if(_0x232085){this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x1c6'),_0x232085));var _0x3db399=this[_0xeff2('0x11')]['streamFile'](_0x232085);try{fs[_0xeff2('0xfd')](_0x232085+_0xeff2('0x11a'));}catch(_0x1a9f1e){logger[_0xeff2('0x26')](_0x1a9f1e);}return _0x3db399;}return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x4cd8f0,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0xeff2('0x13')][_0xeff2('0x1c7')]=function(_0x276d54){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x1c8'),_0x276d54[_0xeff2('0x2f')]));_0x276d54[_0xeff2('0x53')]=_0x276d54[_0xeff2('0x53')][_0xeff2('0x4f')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xeff2('0x7e')](_0x276d54[_0xeff2('0x53')])){return this[_0xeff2('0x11')][_0xeff2('0xa1')]('no\x20text\x20configured');}this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format'](_0xeff2('0x1c9'),_0x276d54['text']));var _0x312ae1=this['googleTTS'][_0xeff2('0x66')](this,_0x276d54);if(_0x312ae1){this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format'](_0xeff2('0x1ca'),_0x312ae1));var _0x2b6c3a=this['channel']['streamFile'](_0x312ae1);try{fs['unlink'](_0x312ae1+'.wav');}catch(_0x53ae39){logger[_0xeff2('0x26')](_0x53ae39);}return _0x2b6c3a;}return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x276d54,_0xeff2('0x1cb'));};AGIVertices[_0xeff2('0x13')]['unpause']=function(_0x128822){logger['info'](util[_0xeff2('0x24')](_0xeff2('0x1cc'),_0x128822[_0xeff2('0x2f')]));if(!this[_0xeff2('0x7e')](_0x128822[_0xeff2('0x150')])){return this[_0xeff2('0x11')]['error'](_0x128822,_0xeff2('0x151'));}logger['info'](util[_0xeff2('0x24')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0xeff2('0x34')],_0x128822['findBy']));var _0x13e026=this[_0xeff2('0x47')]['sync'](this,_0x128822['findBy']);if(_0x13e026){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x156'),this[_0xeff2('0x11')][_0xeff2('0x34')],_0x128822['findBy']));this[_0xeff2('0x11')][_0xeff2('0xa1')](util[_0xeff2('0x24')](_0xeff2('0x156'),this[_0xeff2('0x11')][_0xeff2('0x34')],_0x128822['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0xeff2('0x28')](util['format'](_0xeff2('0x153'),this['channel'][_0xeff2('0x34')],_0x128822[_0xeff2('0x150')]));this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format'](_0xeff2('0x153'),this['channel']['callerid'],_0x128822['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xeff2('0x13')][_0xeff2('0x1cd')]=function(_0x50eb2c){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x1ce'),_0x50eb2c[_0xeff2('0x2f')]));var _0x516fd7=this[_0xeff2('0x11')]['exec']('VOICEMAIL',[_0x50eb2c[_0xeff2('0x1cf')],_0x50eb2c[_0xeff2('0x71')]]);if(_0x516fd7[_0xeff2('0x9b')]===-0x1){return _0x516fd7;}return this[_0xeff2('0x11')][_0xeff2('0xa1')](util['format']('Executed\x20command\x20%s\x20%s',_0xeff2('0x1d0'),_0x50eb2c[_0xeff2('0x1cf')]));};AGIVertices['prototype']['vswitch']=function(_0x1054a0){logger[_0xeff2('0x28')](util[_0xeff2('0x24')](_0xeff2('0x1d1'),_0x1054a0[_0xeff2('0x2f')]));if(!this['isConfigured'](_0x1054a0[_0xeff2('0xd2')])){return this['channel'][_0xeff2('0x26')](_0x1054a0,_0xeff2('0x1d2'));}var _0x1b9512=this['getVariable'][_0xeff2('0x66')](this,_0x1054a0[_0xeff2('0xd2')]);if(!_0x1b9512){return this[_0xeff2('0x11')][_0xeff2('0x26')](_0x1054a0,_0xeff2('0xd4'));}var _0x439fd1=this['channel']['getVariable'](_0x1b9512);return{'code':0xc8,'result':_0x439fd1[_0xeff2('0x98')]?_0x439fd1[_0xeff2('0x98')]:'-'};};String[_0xeff2('0x13')][_0xeff2('0x1d3')]=function(_0x270c2f,_0x90f1b8){return this['split'](_0x270c2f)[_0xeff2('0x1d4')](_0x90f1b8);};module['exports']=AGIVertices;
\ No newline at end of file
index acc9bec..335aebf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52ec=['autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','lodash','moment','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','hanguprequest','bind','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','milliseconds','seconds','startAcw','channels','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','info','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','timer','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[ACW][START]\x20%s','message','prototype','stopAcw','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','[ACW][STOP]\x20%s','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s'];(function(_0x3fd3a3,_0x36c863){var _0xa3e4d5=function(_0x1fd03b){while(--_0x1fd03b){_0x3fd3a3['push'](_0x3fd3a3['shift']());}};_0xa3e4d5(++_0x36c863);}(_0x52ec,0xf3));var _0xc52e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0x52ec[_0x29b609];return _0x54c952;};'use strict';var util=require('util');var _=require(_0xc52e('0x0'));var moment=require(_0xc52e('0x1'));var ami=require('../ami');var logger=require(_0xc52e('0x2'))(_0xc52e('0x3'));var RpcUser=require(_0xc52e('0x4'));var RpcVoiceAgentReport=require(_0xc52e('0x5'));function Acw(_0x2d9543){this[_0xc52e('0x6')]=_0x2d9543['voiceQueues'];this['agents']=_0x2d9543[_0xc52e('0x7')];this['timers']=_0x2d9543[_0xc52e('0x8')];this['channels']={};ami['on'](_0xc52e('0x9'),this[_0xc52e('0xa')]['bind'](this));ami['on'](_0xc52e('0xb'),this['syncHangupRequest'][_0xc52e('0xc')](this));ami['on'](_0xc52e('0xd'),this[_0xc52e('0xe')][_0xc52e('0xc')](this));ami['on']('agentringnoanswer',this[_0xc52e('0xf')][_0xc52e('0xc')](this));ami['on'](_0xc52e('0x10'),this[_0xc52e('0x11')][_0xc52e('0xc')](this));ami['on']('blindtransfer',this[_0xc52e('0x12')][_0xc52e('0xc')](this));ami['on'](_0xc52e('0x13'),this['syncAgentConnectPreview'][_0xc52e('0xc')](this));}function getDiff(_0x1d4e86){var _0x192f86=moment()['milliseconds'](0x0);var _0x126f36=moment(_0x1d4e86)[_0xc52e('0x14')](0x0);return _0x192f86['diff'](_0x126f36,_0xc52e('0x15'));}Acw['prototype'][_0xc52e('0x16')]=function(_0x369c70){try{var _0x36be4c=this;var _0x445cab=this[_0xc52e('0x17')][_0x369c70][_0xc52e('0x18')];var _0x26b43d=this[_0xc52e('0x17')][_0x369c70][_0xc52e('0x19')];var _0x5b26c0=this[_0xc52e('0x6')][_0x26b43d];var _0x32379f=![];var _0x1de585=_0xc52e('0x1a');if(_0x5b26c0[_0xc52e('0x1b')]){if(_0x5b26c0[_0xc52e('0x1c')]['name']){_0x32379f=!![];_0x1de585=_0x5b26c0[_0xc52e('0x1c')][_0xc52e('0x1d')];}}ami[_0xc52e('0x1e')]({'action':_0xc52e('0x1f'),'interface':_0x445cab,'paused':!![],'reason':_0x1de585})['then'](function(_0x5b18f6){if(_0x36be4c[_0xc52e('0x7')][_0x445cab]){return RpcUser['getAgent'](_0x36be4c[_0xc52e('0x7')][_0x445cab]['id'])[_0xc52e('0x20')](function(_0x4b0b1a){if(_0x4b0b1a&&!_0x4b0b1a['voicePause']){logger[_0xc52e('0x21')]('[%s][START][AGENT:%s][QUEUE:%s]',_0x369c70,_0x445cab,_0x26b43d);var _0x306079=_0x36be4c[_0xc52e('0x17')][_0x369c70][_0xc52e('0x22')]&&_0x36be4c[_0xc52e('0x17')][_0x369c70][_0xc52e('0x23')]?_0x36be4c[_0xc52e('0x17')][_0x369c70][_0xc52e('0x23')]:_0x369c70;return RpcUser[_0xc52e('0x24')](_0x36be4c[_0xc52e('0x7')][_0x445cab],_0x1de585,_0x306079)[_0xc52e('0x20')](function(_0x2e9526){if(!_0x32379f){_0x36be4c[_0xc52e('0x8')][_0x445cab]={};logger['info'](_0xc52e('0x25'),_0x369c70,_0x36be4c[_0xc52e('0x6')][_0x26b43d][_0xc52e('0x26')],_0x445cab,_0x26b43d);_0x36be4c[_0xc52e('0x8')][_0x445cab]['timer']=setTimeout(_0x36be4c['stopAcw']['bind'](_0x36be4c,_0x445cab),_0x36be4c[_0xc52e('0x6')][_0x26b43d][_0xc52e('0x26')]*0x3e8);_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x27')]=moment()['format'](_0xc52e('0x28'));_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x29')]=_0x369c70;_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x19')]=_0x26b43d;_0x36be4c['timers'][_0x445cab][_0xc52e('0x2a')]=function(){var _0x5d8edc=getDiff(_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x27')]);clearTimeout(_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x2b')]);_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x2b')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x5d8edc},_0x36be4c[_0xc52e('0x8')][_0x445cab][_0xc52e('0x29')],_0x445cab)[_0xc52e('0x20')](function(_0x25a3eb){logger[_0xc52e('0x21')](_0xc52e('0x2c'),_0x369c70,_0x5d8edc,_0x25a3eb);})[_0xc52e('0x2d')](function(_0x7dc2f2){logger[_0xc52e('0x2e')](_0xc52e('0x2f'),_0x369c70,_0x7dc2f2);});delete _0x36be4c[_0xc52e('0x8')][_0x445cab];};}});}else{logger['info']('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x369c70,_0x445cab,_0x26b43d);}});}})[_0xc52e('0x2d')](function(_0x845ddb){logger[_0xc52e('0x2e')](_0xc52e('0x25'),_0x369c70,_0x36be4c[_0xc52e('0x6')][_0x26b43d]['acwTimeout'],_0x445cab,_0x26b43d);})['finally'](function(){delete _0x36be4c[_0xc52e('0x17')][_0x369c70];});}catch(_0x1b2e9c){logger[_0xc52e('0x2e')](_0xc52e('0x30'),_0x1b2e9c[_0xc52e('0x31')]);}};Acw[_0xc52e('0x32')][_0xc52e('0x33')]=function(_0x26dc18){try{var _0x2401c2=this;if(_0x2401c2[_0xc52e('0x8')][_0x26dc18]){_0x2401c2['timers'][_0x26dc18][_0xc52e('0x2b')]=![];var _0x3c6f2c=_0x2401c2[_0xc52e('0x8')][_0x26dc18][_0xc52e('0x29')];var _0x99994=_0x2401c2[_0xc52e('0x8')][_0x26dc18]['queue'];var _0x57ca5f=_0x2401c2['voiceQueues'][_0x99994]['acwTimeout'];logger[_0xc52e('0x21')](_0xc52e('0x34'),_0x3c6f2c,_0x26dc18);RpcUser[_0xc52e('0x35')](this[_0xc52e('0x7')][_0x26dc18]);RpcVoiceAgentReport[_0xc52e('0x36')]({'acwtime':_0x57ca5f,'agentacw':!![]},_0x3c6f2c,_0x26dc18)[_0xc52e('0x20')](function(_0x3cd77c){logger[_0xc52e('0x21')](_0xc52e('0x2c'),_0x3c6f2c,_0x57ca5f,_0x3cd77c);})[_0xc52e('0x2d')](function(_0x1e7234){logger[_0xc52e('0x2e')](_0xc52e('0x2f'),_0x3c6f2c,_0x1e7234);});}else{logger['error'](_0xc52e('0x37'),_0x26dc18);if(_0x2401c2[_0xc52e('0x8')]){logger[_0xc52e('0x21')]('[ACW][TIMERS]',JSON[_0xc52e('0x38')](_0x2401c2[_0xc52e('0x8')]));}}}catch(_0x3dcb1e){logger['error'](_0xc52e('0x39'),_0x3dcb1e[_0xc52e('0x31')]);}};Acw[_0xc52e('0x32')][_0xc52e('0xa')]=function(_0x338159){try{if(this[_0xc52e('0x6')][_0x338159[_0xc52e('0x19')]]&&(this[_0xc52e('0x6')][_0x338159['queue']][_0xc52e('0x3')]||this[_0xc52e('0x6')][_0x338159[_0xc52e('0x19')]][_0xc52e('0x1b')])){if(this[_0xc52e('0x7')][_0x338159[_0xc52e('0x18')]]){this[_0xc52e('0x17')][_0x338159[_0xc52e('0x29')]]={'queue':_0x338159[_0xc52e('0x19')],'interface':_0x338159['interface'],'destlinkedid':_0x338159[_0xc52e('0x23')]};}}}catch(_0x5f0c0e){logger[_0xc52e('0x2e')](_0xc52e('0x3a'),_0x5f0c0e[_0xc52e('0x31')]);}};Acw[_0xc52e('0x32')]['syncAgentConnectPreview']=function(_0x6ed3dc){try{if(this[_0xc52e('0x6')][_0x6ed3dc['queue']]&&(this['voiceQueues'][_0x6ed3dc[_0xc52e('0x19')]]['acw']||this['voiceQueues'][_0x6ed3dc[_0xc52e('0x19')]]['mandatoryDisposition'])){if(this[_0xc52e('0x7')][_0x6ed3dc[_0xc52e('0x18')]]){this['channels'][_0x6ed3dc[_0xc52e('0x29')]]={'queue':_0x6ed3dc[_0xc52e('0x19')],'interface':_0x6ed3dc[_0xc52e('0x18')]};}}}catch(_0x6dbdfe){logger[_0xc52e('0x2e')](_0xc52e('0x3b'),_0x6dbdfe[_0xc52e('0x31')]);}};Acw[_0xc52e('0x32')][_0xc52e('0x3c')]=function(_0x10abb9){try{if(this['channels'][_0x10abb9[_0xc52e('0x29')]]&&_[_0xc52e('0x3d')](this[_0xc52e('0x17')][_0x10abb9[_0xc52e('0x29')]][_0xc52e('0x22')])){logger['info'](_0xc52e('0x3e'),_0x10abb9[_0xc52e('0x29')]);this[_0xc52e('0x16')](_0x10abb9[_0xc52e('0x29')]);}else if(this['channels'][_0x10abb9[_0xc52e('0x3f')]]&&_[_0xc52e('0x3d')](this[_0xc52e('0x17')][_0x10abb9['linkedid']][_0xc52e('0x22')])){logger[_0xc52e('0x21')](_0xc52e('0x40'),_0x10abb9[_0xc52e('0x3f')]);this['startAcw'](_0x10abb9[_0xc52e('0x3f')]);}}catch(_0x1067e3){logger[_0xc52e('0x2e')]('[ACW][syncHangupRequest]\x20%s',_0x1067e3[_0xc52e('0x31')]);}};Acw['prototype'][_0xc52e('0xe')]=function(_0x28d798){try{if(this[_0xc52e('0x17')][_0x28d798[_0xc52e('0x29')]]&&this[_0xc52e('0x17')][_0x28d798[_0xc52e('0x29')]][_0xc52e('0x22')]){logger[_0xc52e('0x21')](_0xc52e('0x41'),_0x28d798[_0xc52e('0x29')]);this['startAcw'](_0x28d798[_0xc52e('0x29')]);}else if(this[_0xc52e('0x17')][_0x28d798[_0xc52e('0x3f')]]&&this[_0xc52e('0x17')][_0x28d798[_0xc52e('0x3f')]]['attended']){logger[_0xc52e('0x21')](_0xc52e('0x42'),_0x28d798[_0xc52e('0x3f')]);this[_0xc52e('0x16')](_0x28d798[_0xc52e('0x3f')]);}}catch(_0xfd4959){logger[_0xc52e('0x2e')](_0xc52e('0x43'),_0xfd4959['message']);}};Acw[_0xc52e('0x32')][_0xc52e('0x11')]=function(_0x5eb0c5){try{if(!_['isNil'](this['channels'][_0x5eb0c5[_0xc52e('0x44')]])){this[_0xc52e('0x16')](_0x5eb0c5[_0xc52e('0x44')]);if(this['channels'][_0x5eb0c5[_0xc52e('0x45')]]){this['channels'][_0x5eb0c5[_0xc52e('0x45')]]['attended']=!![];this['channels'][_0x5eb0c5[_0xc52e('0x46')]]=this[_0xc52e('0x17')][_0x5eb0c5[_0xc52e('0x45')]];delete this[_0xc52e('0x17')][_0x5eb0c5[_0xc52e('0x45')]];}}else if(!_['isNil'](this['channels'][_0x5eb0c5[_0xc52e('0x46')]])){this['startAcw'](_0x5eb0c5[_0xc52e('0x46')]);if(this[_0xc52e('0x17')][_0x5eb0c5[_0xc52e('0x47')]]){this['channels'][_0x5eb0c5[_0xc52e('0x47')]]['attended']=!![];this[_0xc52e('0x17')][_0x5eb0c5[_0xc52e('0x44')]]=this[_0xc52e('0x17')][_0x5eb0c5[_0xc52e('0x47')]];delete this[_0xc52e('0x17')][_0x5eb0c5[_0xc52e('0x47')]];}}}catch(_0x21e71b){logger[_0xc52e('0x2e')]('[ACW][syncAttendedTransfer]\x20%s',_0x21e71b['message']);}};Acw[_0xc52e('0x32')][_0xc52e('0x12')]=function(_0x35dd8c){try{if(this['channels'][_0x35dd8c[_0xc52e('0x48')]]){logger[_0xc52e('0x21')](_0xc52e('0x49'),JSON[_0xc52e('0x38')](_0x35dd8c[_0xc52e('0x48')]));this['startAcw'](_0x35dd8c[_0xc52e('0x48')]);}else if(this['channels'][_0x35dd8c[_0xc52e('0x4a')]]){logger[_0xc52e('0x21')](_0xc52e('0x4b'),JSON[_0xc52e('0x38')](_0x35dd8c[_0xc52e('0x4a')]));this[_0xc52e('0x16')](_0x35dd8c['transfererlinkedid']);}}catch(_0xc4e091){logger[_0xc52e('0x2e')](_0xc52e('0x4c'),_0xc4e091[_0xc52e('0x31')]);}};Acw['prototype'][_0xc52e('0xf')]=function(_0x5d3876){try{if(this[_0xc52e('0x6')][_0x5d3876['queue']]&&this[_0xc52e('0x6')][_0x5d3876['queue']][_0xc52e('0x4d')]===_0xc52e('0x4e')){if(this[_0xc52e('0x7')][_0x5d3876['interface']]){logger[_0xc52e('0x21')](_0xc52e('0x4f'),_0x5d3876[_0xc52e('0x29')],_0x5d3876[_0xc52e('0x18')],_0x5d3876[_0xc52e('0x19')]);return RpcUser['savePause'](this[_0xc52e('0x7')][_0x5d3876[_0xc52e('0x18')]],'Auto-Pause',_0x5d3876['uniqueid']);}}}catch(_0x184ac3){logger['error']('[ACW][syncAgentRingNoAnswer]\x20%s',_0x184ac3[_0xc52e('0x31')]);}};module['exports']=Acw;
\ No newline at end of file
+var _0xf068=['updateAcw','timer','update','uniqueid','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','stringify','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','attended','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','syncHangupRequest','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','then','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','acwTimeout','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x152341,_0x8f0c56){var _0x440e1b=function(_0x33918f){while(--_0x33918f){_0x152341['push'](_0x152341['shift']());}};_0x440e1b(++_0x8f0c56);}(_0xf068,0x1c0));var _0x8f06=function(_0x1c26d8,_0x2a617f){_0x1c26d8=_0x1c26d8-0x0;var _0x5d0306=_0xf068[_0x1c26d8];return _0x5d0306;};'use strict';var util=require(_0x8f06('0x0'));var _=require('lodash');var moment=require('moment');var ami=require('../ami');var logger=require('../../../config/logger')(_0x8f06('0x1'));var RpcUser=require(_0x8f06('0x2'));var RpcVoiceAgentReport=require(_0x8f06('0x3'));function Acw(_0x19ce15){this[_0x8f06('0x4')]=_0x19ce15['voiceQueues'];this[_0x8f06('0x5')]=_0x19ce15[_0x8f06('0x5')];this[_0x8f06('0x6')]=_0x19ce15[_0x8f06('0x6')];this[_0x8f06('0x7')]={};ami['on'](_0x8f06('0x8'),this[_0x8f06('0x9')][_0x8f06('0xa')](this));ami['on']('hanguprequest',this[_0x8f06('0xb')][_0x8f06('0xa')](this));ami['on'](_0x8f06('0xc'),this[_0x8f06('0xd')][_0x8f06('0xa')](this));ami['on']('agentringnoanswer',this[_0x8f06('0xe')][_0x8f06('0xa')](this));ami['on'](_0x8f06('0xf'),this[_0x8f06('0x10')][_0x8f06('0xa')](this));ami['on']('blindtransfer',this[_0x8f06('0x11')][_0x8f06('0xa')](this));ami['on'](_0x8f06('0x12'),this[_0x8f06('0x13')][_0x8f06('0xa')](this));}function getDiff(_0x186bab){var _0x3c86d0=moment()[_0x8f06('0x14')](0x0);var _0x464989=moment(_0x186bab)[_0x8f06('0x14')](0x0);return _0x3c86d0[_0x8f06('0x15')](_0x464989,_0x8f06('0x16'));}Acw[_0x8f06('0x17')]['startAcw']=function(_0x212ed9){try{var _0x21fb9c=this;var _0x4a74fd=this[_0x8f06('0x7')][_0x212ed9][_0x8f06('0x18')];var _0x14257a=this[_0x8f06('0x7')][_0x212ed9][_0x8f06('0x19')];var _0x156322=this['voiceQueues'][_0x14257a];var _0x26a0f8=![];var _0x14a3ab='ACW';if(_0x156322[_0x8f06('0x1a')]){if(_0x156322[_0x8f06('0x1b')][_0x8f06('0x1c')]){_0x26a0f8=!![];_0x14a3ab=_0x156322['mandatoryDispositionPause'][_0x8f06('0x1c')];}}ami['Action']({'action':'QueuePause','interface':_0x4a74fd,'paused':!![],'reason':_0x14a3ab})['then'](function(_0x181dbf){if(_0x21fb9c['agents'][_0x4a74fd]){return RpcUser[_0x8f06('0x1d')](_0x21fb9c['agents'][_0x4a74fd]['id'])[_0x8f06('0x1e')](function(_0x5f57c7){if(_0x5f57c7&&!_0x5f57c7['voicePause']){logger[_0x8f06('0x1f')](_0x8f06('0x20'),_0x212ed9,_0x4a74fd,_0x14257a);var _0xdec259=_0x21fb9c[_0x8f06('0x7')][_0x212ed9]['attended']&&_0x21fb9c[_0x8f06('0x7')][_0x212ed9][_0x8f06('0x21')]?_0x21fb9c[_0x8f06('0x7')][_0x212ed9]['destlinkedid']:_0x212ed9;return RpcUser['savePause'](_0x21fb9c[_0x8f06('0x5')][_0x4a74fd],_0x14a3ab,_0xdec259)['then'](function(_0x4faf35){if(!_0x26a0f8){_0x21fb9c[_0x8f06('0x6')][_0x4a74fd]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x212ed9,_0x21fb9c[_0x8f06('0x4')][_0x14257a][_0x8f06('0x22')],_0x4a74fd,_0x14257a);_0x21fb9c[_0x8f06('0x6')][_0x4a74fd]['timer']=setTimeout(_0x21fb9c[_0x8f06('0x23')][_0x8f06('0xa')](_0x21fb9c,_0x4a74fd),_0x21fb9c[_0x8f06('0x4')][_0x14257a][_0x8f06('0x22')]*0x3e8);_0x21fb9c[_0x8f06('0x6')][_0x4a74fd][_0x8f06('0x24')]=moment()['format'](_0x8f06('0x25'));_0x21fb9c[_0x8f06('0x6')][_0x4a74fd]['uniqueid']=_0x212ed9;_0x21fb9c['timers'][_0x4a74fd]['queue']=_0x14257a;_0x21fb9c['timers'][_0x4a74fd][_0x8f06('0x26')]=function(){var _0x1c02fb=getDiff(_0x21fb9c[_0x8f06('0x6')][_0x4a74fd][_0x8f06('0x24')]);clearTimeout(_0x21fb9c['timers'][_0x4a74fd][_0x8f06('0x27')]);_0x21fb9c[_0x8f06('0x6')][_0x4a74fd]['timer']=![];RpcVoiceAgentReport[_0x8f06('0x28')]({'acwtime':_0x1c02fb},_0x21fb9c[_0x8f06('0x6')][_0x4a74fd][_0x8f06('0x29')],_0x4a74fd)['then'](function(_0x216e16){logger['info'](_0x8f06('0x2a'),_0x212ed9,_0x1c02fb,_0x216e16);})[_0x8f06('0x2b')](function(_0x24b1ff){logger[_0x8f06('0x2c')](_0x8f06('0x2d'),_0x212ed9,_0x24b1ff);});delete _0x21fb9c[_0x8f06('0x6')][_0x4a74fd];};}});}else{logger[_0x8f06('0x1f')](_0x8f06('0x2e'),_0x212ed9,_0x4a74fd,_0x14257a);}});}})[_0x8f06('0x2b')](function(_0x3a7e90){logger[_0x8f06('0x2c')](_0x8f06('0x2f'),_0x212ed9,_0x21fb9c['voiceQueues'][_0x14257a][_0x8f06('0x22')],_0x4a74fd,_0x14257a);})[_0x8f06('0x30')](function(){delete _0x21fb9c['channels'][_0x212ed9];});}catch(_0x5ec559){logger[_0x8f06('0x2c')]('[ACW][START]\x20%s',_0x5ec559[_0x8f06('0x31')]);}};Acw['prototype'][_0x8f06('0x23')]=function(_0x43b078){try{var _0x3b4227=this;if(_0x3b4227[_0x8f06('0x6')][_0x43b078]){_0x3b4227['timers'][_0x43b078][_0x8f06('0x27')]=![];var _0x132bec=_0x3b4227[_0x8f06('0x6')][_0x43b078][_0x8f06('0x29')];var _0x5152b=_0x3b4227[_0x8f06('0x6')][_0x43b078]['queue'];var _0x3a44a9=_0x3b4227['voiceQueues'][_0x5152b][_0x8f06('0x22')];logger[_0x8f06('0x1f')](_0x8f06('0x32'),_0x132bec,_0x43b078);RpcUser[_0x8f06('0x33')](this[_0x8f06('0x5')][_0x43b078]);RpcVoiceAgentReport[_0x8f06('0x28')]({'acwtime':_0x3a44a9,'agentacw':!![]},_0x132bec,_0x43b078)[_0x8f06('0x1e')](function(_0x23042c){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x132bec,_0x3a44a9,_0x23042c);})[_0x8f06('0x2b')](function(_0x4bbe21){logger[_0x8f06('0x2c')](_0x8f06('0x2d'),_0x132bec,_0x4bbe21);});}else{logger[_0x8f06('0x2c')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x43b078);if(_0x3b4227[_0x8f06('0x6')]){logger['info'](_0x8f06('0x34'),JSON[_0x8f06('0x35')](_0x3b4227[_0x8f06('0x6')]));}}}catch(_0x20a562){logger[_0x8f06('0x2c')]('[ACW][STOP]\x20%s',_0x20a562[_0x8f06('0x31')]);}};Acw[_0x8f06('0x17')][_0x8f06('0x9')]=function(_0x48492a){try{if(this['voiceQueues'][_0x48492a['queue']]&&(this[_0x8f06('0x4')][_0x48492a[_0x8f06('0x19')]]['acw']||this[_0x8f06('0x4')][_0x48492a['queue']]['mandatoryDisposition'])){if(this['agents'][_0x48492a[_0x8f06('0x18')]]){this['channels'][_0x48492a[_0x8f06('0x29')]]={'queue':_0x48492a[_0x8f06('0x19')],'interface':_0x48492a[_0x8f06('0x18')],'destlinkedid':_0x48492a[_0x8f06('0x21')]};}}}catch(_0x4035fb){logger[_0x8f06('0x2c')](_0x8f06('0x36'),_0x4035fb[_0x8f06('0x31')]);}};Acw[_0x8f06('0x17')][_0x8f06('0x13')]=function(_0x359175){try{if(this[_0x8f06('0x4')][_0x359175[_0x8f06('0x19')]]&&(this[_0x8f06('0x4')][_0x359175[_0x8f06('0x19')]][_0x8f06('0x1')]||this[_0x8f06('0x4')][_0x359175[_0x8f06('0x19')]][_0x8f06('0x1a')])){if(this[_0x8f06('0x5')][_0x359175[_0x8f06('0x18')]]){this['channels'][_0x359175[_0x8f06('0x29')]]={'queue':_0x359175[_0x8f06('0x19')],'interface':_0x359175[_0x8f06('0x18')]};}}}catch(_0x2c071d){logger[_0x8f06('0x2c')](_0x8f06('0x37'),_0x2c071d['message']);}};Acw[_0x8f06('0x17')]['syncHangupRequest']=function(_0x2790a6){try{if(this['channels'][_0x2790a6[_0x8f06('0x29')]]&&_[_0x8f06('0x38')](this['channels'][_0x2790a6[_0x8f06('0x29')]]['attended'])){logger[_0x8f06('0x1f')](_0x8f06('0x39'),_0x2790a6[_0x8f06('0x29')]);this[_0x8f06('0x3a')](_0x2790a6[_0x8f06('0x29')]);}else if(this['channels'][_0x2790a6[_0x8f06('0x3b')]]&&_[_0x8f06('0x38')](this[_0x8f06('0x7')][_0x2790a6[_0x8f06('0x3b')]][_0x8f06('0x3c')])){logger[_0x8f06('0x1f')](_0x8f06('0x3d'),_0x2790a6[_0x8f06('0x3b')]);this[_0x8f06('0x3a')](_0x2790a6[_0x8f06('0x3b')]);}}catch(_0x412298){logger['error'](_0x8f06('0x3e'),_0x412298[_0x8f06('0x31')]);}};Acw[_0x8f06('0x17')][_0x8f06('0xd')]=function(_0x305f50){try{if(this[_0x8f06('0x7')][_0x305f50[_0x8f06('0x29')]]&&this[_0x8f06('0x7')][_0x305f50[_0x8f06('0x29')]][_0x8f06('0x3c')]){logger[_0x8f06('0x1f')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x305f50['uniqueid']);this[_0x8f06('0x3a')](_0x305f50['uniqueid']);}else if(this[_0x8f06('0x7')][_0x305f50[_0x8f06('0x3b')]]&&this[_0x8f06('0x7')][_0x305f50[_0x8f06('0x3b')]]['attended']){logger[_0x8f06('0x1f')](_0x8f06('0x3f'),_0x305f50[_0x8f06('0x3b')]);this[_0x8f06('0x3a')](_0x305f50['linkedid']);}}catch(_0x29cc0e){logger['error'](_0x8f06('0x40'),_0x29cc0e[_0x8f06('0x31')]);}};Acw[_0x8f06('0x17')][_0x8f06('0x10')]=function(_0x2bb892){try{if(!_[_0x8f06('0x41')](this[_0x8f06('0x7')][_0x2bb892['transfereeuniqueid']])){this['startAcw'](_0x2bb892[_0x8f06('0x42')]);if(this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x43')]]){this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x43')]]['attended']=!![];this['channels'][_0x2bb892['transfertargetuniqueid']]=this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x43')]];delete this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x43')]];}}else if(!_[_0x8f06('0x41')](this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x44')]])){this[_0x8f06('0x3a')](_0x2bb892['transfertargetuniqueid']);if(this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x45')]]){this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x45')]][_0x8f06('0x3c')]=!![];this['channels'][_0x2bb892[_0x8f06('0x42')]]=this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x45')]];delete this[_0x8f06('0x7')][_0x2bb892[_0x8f06('0x45')]];}}}catch(_0x5b26eb){logger[_0x8f06('0x2c')](_0x8f06('0x46'),_0x5b26eb[_0x8f06('0x31')]);}};Acw[_0x8f06('0x17')]['syncBlindTransfer']=function(_0x4fdf9a){try{if(this[_0x8f06('0x7')][_0x4fdf9a['transfereruniqueid']]){logger[_0x8f06('0x1f')](_0x8f06('0x47'),JSON[_0x8f06('0x35')](_0x4fdf9a[_0x8f06('0x48')]));this[_0x8f06('0x3a')](_0x4fdf9a[_0x8f06('0x48')]);}else if(this['channels'][_0x4fdf9a['transfererlinkedid']]){logger[_0x8f06('0x1f')](_0x8f06('0x49'),JSON['stringify'](_0x4fdf9a[_0x8f06('0x4a')]));this[_0x8f06('0x3a')](_0x4fdf9a['transfererlinkedid']);}}catch(_0x3d8131){logger[_0x8f06('0x2c')](_0x8f06('0x4b'),_0x3d8131['message']);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x39cc00){try{if(this[_0x8f06('0x4')][_0x39cc00[_0x8f06('0x19')]]&&this[_0x8f06('0x4')][_0x39cc00[_0x8f06('0x19')]][_0x8f06('0x4c')]==='all'){if(this[_0x8f06('0x5')][_0x39cc00[_0x8f06('0x18')]]){logger[_0x8f06('0x1f')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x39cc00['uniqueid'],_0x39cc00['interface'],_0x39cc00[_0x8f06('0x19')]);return RpcUser[_0x8f06('0x4d')](this[_0x8f06('0x5')][_0x39cc00[_0x8f06('0x18')]],_0x8f06('0x4e'),_0x39cc00[_0x8f06('0x29')]);}}}catch(_0x100b17){logger[_0x8f06('0x2c')](_0x8f06('0x4f'),_0x100b17[_0x8f06('0x31')]);}};module[_0x8f06('0x50')]=Acw;
\ No newline at end of file
index 9431238..4d62b29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['username','Action','devicestatelist','actionSipPeerStatus','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','[ami.js][fullybooted]','exports','asterisk-manager','moment','lodash','ami','asterisk','port','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x19bb14,_0x2e7b2d){var _0x2a5d58=function(_0xc90a6){while(--_0xc90a6){_0x19bb14['push'](_0x19bb14['shift']());}};_0x2a5d58(++_0x2e7b2d);}(_0xb7e7,0x121));var _0x7b7e=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0xb7e7[_0x42f009];return _0x22a1e0;};'use strict';var Manager=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var moment=require(_0x7b7e('0x1'));var util=require('util');var _=require(_0x7b7e('0x2'));var logger=require('../../config/logger')(_0x7b7e('0x3'));var config=require('../../config/environment');var ami=new Manager(config[_0x7b7e('0x4')][_0x7b7e('0x5')],config[_0x7b7e('0x4')]['ip'],config['asterisk']['username'],config[_0x7b7e('0x4')][_0x7b7e('0x6')],!![]);ami[_0x7b7e('0x7')]();ami['Action']=BPromise[_0x7b7e('0x8')](ami[_0x7b7e('0x9')]);function error(_0x2917f9){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xc'),config[_0x7b7e('0x4')]['username'],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x2917f9,![],null)));}function close(){logger[_0x7b7e('0xa')](util[_0x7b7e('0xb')](_0x7b7e('0xe'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x11')});};};ami[_0x7b7e('0x12')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x13')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':_0x7b7e('0x14')});};};ami[_0x7b7e('0x15')]=function(){return function(){return ami[_0x7b7e('0x10')]({'action':_0x7b7e('0x16')});};};function connect(_0x2cc400){logger[_0x7b7e('0x17')](util[_0x7b7e('0xb')](_0x7b7e('0x18'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')]));ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')](_0x7b7e('0x1a'),close);}ami['on']('connect',connect);ami['on'](_0x7b7e('0x1b'),function(_0x43db4f){logger[_0x7b7e('0x17')](util['format'](_0x7b7e('0x1c'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config[_0x7b7e('0x4')]['ip'],config[_0x7b7e('0x4')][_0x7b7e('0x5')],util[_0x7b7e('0xd')](_0x43db4f,![],null)));});ami['on'](_0x7b7e('0x1d'),function(_0x53bbb3){logger['info'](util['format'](_0x7b7e('0x1e'),config[_0x7b7e('0x4')][_0x7b7e('0xf')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0x7b7e('0x1f')]()[_0x7b7e('0x20')](ami[_0x7b7e('0x21')]())[_0x7b7e('0x20')](ami[_0x7b7e('0x22')]())['then'](ami[_0x7b7e('0x12')]())[_0x7b7e('0x20')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())[_0x7b7e('0x23')](function(_0x423832){logger['error'](_0x7b7e('0x24'),util['inspect'](_0x423832,{'showHidden':![],'depth':null}));});});ami[_0x7b7e('0x19')](_0x7b7e('0xa'),error);ami[_0x7b7e('0x19')]('close',close);module[_0x7b7e('0x25')]=ami;
\ No newline at end of file
+var _0xd8b0=['actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','exports','asterisk-manager','bluebird','../../config/logger','ami','../../config/environment','asterisk','port','username','password','Action','promisify','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus'];(function(_0x559269,_0x4d7537){var _0x4fe5bd=function(_0x578ef1){while(--_0x578ef1){_0x559269['push'](_0x559269['shift']());}};_0x4fe5bd(++_0x4d7537);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var Manager=require(_0x0d8b('0x0'));var BPromise=require(_0x0d8b('0x1'));var moment=require('moment');var util=require('util');var _=require('lodash');var logger=require(_0x0d8b('0x2'))(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var ami=new Manager(config[_0x0d8b('0x5')][_0x0d8b('0x6')],config['asterisk']['ip'],config['asterisk'][_0x0d8b('0x7')],config[_0x0d8b('0x5')][_0x0d8b('0x8')],!![]);ami['keepConnected']();ami[_0x0d8b('0x9')]=BPromise[_0x0d8b('0xa')](ami['action']);function error(_0x129310){logger[_0x0d8b('0xb')](util[_0x0d8b('0xc')](_0x0d8b('0xd'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port'],util[_0x0d8b('0xe')](_0x129310,![],null)));}function close(){logger['error'](util[_0x0d8b('0xc')](_0x0d8b('0xf'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')]));}ami[_0x0d8b('0x10')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x11')});};};ami[_0x0d8b('0x12')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x13')});};};ami[_0x0d8b('0x14')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x15')});};};ami[_0x0d8b('0x16')]=function(){return function(){return ami[_0x0d8b('0x9')]({'action':_0x0d8b('0x17')});};};ami[_0x0d8b('0x18')]=function(){return function(){return ami['Action']({'action':_0x0d8b('0x19')});};};function connect(_0x4586c2){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x1b'),config[_0x0d8b('0x5')][_0x0d8b('0x7')],config[_0x0d8b('0x5')]['ip'],config['asterisk'][_0x0d8b('0x6')]));ami[_0x0d8b('0x1c')](_0x0d8b('0xb'),error);ami[_0x0d8b('0x1c')](_0x0d8b('0x1d'),close);}ami['on'](_0x0d8b('0x1e'),connect);ami['on'](_0x0d8b('0x1f'),function(_0x352c17){logger['info'](util['format'](_0x0d8b('0x20'),config['asterisk']['username'],config['asterisk']['ip'],config[_0x0d8b('0x5')][_0x0d8b('0x6')],util[_0x0d8b('0xe')](_0x352c17,![],null)));});ami['on'](_0x0d8b('0x21'),function(_0x221071){logger[_0x0d8b('0x1a')](util[_0x0d8b('0xc')](_0x0d8b('0x22'),config[_0x0d8b('0x5')]['username'],config[_0x0d8b('0x5')]['ip'],config[_0x0d8b('0x5')]['port']));return BPromise[_0x0d8b('0x23')]()['then'](ami[_0x0d8b('0x10')]())[_0x0d8b('0x24')](ami[_0x0d8b('0x12')]())['then'](ami['actionSipPeerStatus']())[_0x0d8b('0x24')](ami[_0x0d8b('0x16')]())['then'](ami[_0x0d8b('0x18')]())['catch'](function(_0x1b2b59){logger['error'](_0x0d8b('0x25'),util['inspect'](_0x1b2b59,{'showHidden':![],'depth':null}));});});ami[_0x0d8b('0x1c')]('error',error);ami[_0x0d8b('0x1c')]('close',close);module[_0x0d8b('0x26')]=ami;
\ No newline at end of file
index ddd4ce4..0968cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['catch','exports','jayson/promise','bluebird','ami','client','http','rpc','memberReport','error','message','result'];(function(_0x261188,_0x2258e7){var _0x1c3caa=function(_0x54c559){while(--_0x54c559){_0x261188['push'](_0x261188['shift']());}};_0x1c3caa(++_0x2258e7);}(_0xb43b,0x1b2));var _0xbb43=function(_0x31e2a3,_0xc19c0e){_0x31e2a3=_0x31e2a3-0x0;var _0x510115=_0xb43b[_0x31e2a3];return _0x510115;};'use strict';var jayson=require(_0xbb43('0x0'));var BPromise=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var client=jayson[_0xbb43('0x3')][_0xbb43('0x4')]({'port':0x2329});client['Request']=function(_0x131e9e,_0x41aff6){return new BPromise(function(_0x351254,_0x16432a){return client['request'](_0x131e9e,_0x41aff6)['then'](function(_0x378df5){logger['debug'](_0xbb43('0x5'),_0xbb43('0x6'),_0x131e9e,_0x41aff6,_0x378df5);if(_0x378df5[_0xbb43('0x7')]){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x378df5[_0xbb43('0x7')][_0xbb43('0x8')],_0x41aff6);return _0x16432a(_0x378df5['error'][_0xbb43('0x8')]);}else{return _0x351254(_0x378df5[_0xbb43('0x9')]);}})[_0xbb43('0xa')](function(_0x5e3611){logger[_0xbb43('0x7')](_0xbb43('0x5'),'memberReport',_0x131e9e,_0x5e3611,_0x41aff6);return _0x16432a(_0x5e3611);});});};module[_0xbb43('0xb')]=client;
\ No newline at end of file
+var _0xa9e0=['result','catch','exports','jayson/promise','bluebird','../../config/logger','http','request','debug','rpc','error','message'];(function(_0x3e751a,_0x4804ae){var _0x1d5aa1=function(_0x51ec5a){while(--_0x51ec5a){_0x3e751a['push'](_0x3e751a['shift']());}};_0x1d5aa1(++_0x4804ae);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('ami');var client=jayson['client'][_0x0a9e('0x3')]({'port':0x2329});client['Request']=function(_0x333808,_0x432180){return new BPromise(function(_0x2ab90b,_0x991246){return client[_0x0a9e('0x4')](_0x333808,_0x432180)['then'](function(_0x219af0){logger[_0x0a9e('0x5')](_0x0a9e('0x6'),'memberReport',_0x333808,_0x432180,_0x219af0);if(_0x219af0['error']){logger[_0x0a9e('0x7')]('rpc','memberReport',_0x333808,_0x219af0[_0x0a9e('0x7')][_0x0a9e('0x8')],_0x432180);return _0x991246(_0x219af0[_0x0a9e('0x7')][_0x0a9e('0x8')]);}else{return _0x2ab90b(_0x219af0[_0x0a9e('0x9')]);}})[_0x0a9e('0xa')](function(_0x4a4c56){logger['error']('rpc','memberReport',_0x333808,_0x4a4c56,_0x432180);return _0x991246(_0x4a4c56);});});};module[_0x0a9e('0xb')]=client;
\ No newline at end of file
index a89b46d..c973814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad14=['prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','util','lodash','moment','string','isNil','voiceQueue','uniqueid','name','phone','firstName','Contact','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xad14,0x17e));var _0x4ad1=function(_0x7b173,_0x539d7f){_0x7b173=_0x7b173-0x0;var _0x1c598c=_0xad14[_0x7b173];return _0x1c598c;};'use strict';var util=require(_0x4ad1('0x0'));var _=require(_0x4ad1('0x1'));var moment=require(_0x4ad1('0x2'));function checkNameSurname(_0x4ae6fc,_0x467be5,_0x2cf1fa){var _0x4df7a0='';if(!_['isNil'](_0x467be5)&&_0x4ad1('0x3')===typeof _0x467be5){_0x4df7a0+=_0x467be5;}if(!_[_0x4ad1('0x4')](_0x2cf1fa)&&'string'===typeof _0x2cf1fa){_0x4df7a0+='\x20'+_0x2cf1fa;}if(_0x4df7a0!==''){return _0x4df7a0;}return _0x4ae6fc;}function Action(_0x4cfa64,_0x2e4542,_0x132d01){this[_0x4ad1('0x5')]=_0x4cfa64;this[_0x4ad1('0x6')]=_0x132d01||undefined;this[_0x4ad1('0x7')]=checkNameSurname(_0x2e4542['Contact'][_0x4ad1('0x8')],_0x2e4542['Contact'][_0x4ad1('0x9')],_0x2e4542[_0x4ad1('0xa')][_0x4ad1('0xb')]);this[_0x4ad1('0xc')]=_0x2e4542['Contact']['phone'];this[_0x4ad1('0xd')]=_0x4cfa64[_0x4ad1('0x7')];this[_0x4ad1('0xe')]=_0x2e4542[_0x4ad1('0xe')]||![];this[_0x4ad1('0xf')]=_0x4cfa64[_0x4ad1('0xf')];this[_0x4ad1('0x10')]=_0x4cfa64[_0x4ad1('0x10')]||0x3;this[_0x4ad1('0x11')]=_0x2e4542[_0x4ad1('0x11')];this[_0x4ad1('0x12')]=_0x2e4542[_0x4ad1('0x12')];this[_0x4ad1('0x13')]=_0x2e4542[_0x4ad1('0x13')];this['countnoanswerretry']=_0x2e4542[_0x4ad1('0x14')];this[_0x4ad1('0x15')]=_0x2e4542[_0x4ad1('0x15')];this[_0x4ad1('0x16')]=_0x2e4542[_0x4ad1('0x16')];this['countabandonedretry']=_0x2e4542[_0x4ad1('0x17')];this[_0x4ad1('0x18')]=_0x2e4542[_0x4ad1('0x18')];this[_0x4ad1('0x19')]=_0x2e4542[_0x4ad1('0x19')];this[_0x4ad1('0x1a')]=_0x2e4542[_0x4ad1('0x1a')];this[_0x4ad1('0x1b')]=_0x2e4542[_0x4ad1('0x1b')];this['UserId']=_0x2e4542[_0x4ad1('0x1c')];this[_0x4ad1('0x1d')]=_0x2e4542[_0x4ad1('0x1d')];this[_0x4ad1('0x1e')]=_0x2e4542[_0x4ad1('0x1e')];this[_0x4ad1('0x1f')]=_0x2e4542['id'];this['ContactFirstName']=_0x2e4542[_0x4ad1('0xa')]['firstName']||'';this[_0x4ad1('0x20')]=moment()[_0x4ad1('0x21')](_0x4ad1('0x22'));this[_0x4ad1('0x23')]=_0x2e4542[_0x4ad1('0x23')];this[_0x4ad1('0x24')]=_0x2e4542[_0x4ad1('0x24')];this['callbackat']=_0x2e4542[_0x4ad1('0x25')];this[_0x4ad1('0x26')]=_0x2e4542['recallme'];this[_0x4ad1('0x27')]='';this[_0x4ad1('0x28')]='';}Action[_0x4ad1('0x29')][_0x4ad1('0x2a')]=function(){return util[_0x4ad1('0x21')](_0x4ad1('0x2b'),this[_0x4ad1('0x7')],this[_0x4ad1('0x5')][_0x4ad1('0x2c')]>0x0?this[_0x4ad1('0xc')][_0x4ad1('0x2d')](this['voiceQueue'][_0x4ad1('0x2c')]):this[_0x4ad1('0xc')]);};Action[_0x4ad1('0x29')][_0x4ad1('0x2e')]=function(){return this[_0x4ad1('0xd')];};module['exports']=Action;
\ No newline at end of file
+var _0xda9e=['util','lodash','moment','isNil','string','voiceQueue','uniqueid','phone','Contact','firstName','lastName','queue','name','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','dialCutDigit','number','substring','getQueue','exports'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xda9e,0x8a));var _0xeda9=function(_0x32be74,_0x1c6d78){_0x32be74=_0x32be74-0x0;var _0x59407f=_0xda9e[_0x32be74];return _0x59407f;};'use strict';var util=require(_0xeda9('0x0'));var _=require(_0xeda9('0x1'));var moment=require(_0xeda9('0x2'));function checkNameSurname(_0x9ea8bf,_0x148362,_0x3ce31d){var _0x4ad6b8='';if(!_[_0xeda9('0x3')](_0x148362)&&_0xeda9('0x4')===typeof _0x148362){_0x4ad6b8+=_0x148362;}if(!_[_0xeda9('0x3')](_0x3ce31d)&&_0xeda9('0x4')===typeof _0x3ce31d){_0x4ad6b8+='\x20'+_0x3ce31d;}if(_0x4ad6b8!==''){return _0x4ad6b8;}return _0x9ea8bf;}function Action(_0x269453,_0x2277b6,_0x6650bb){this[_0xeda9('0x5')]=_0x269453;this[_0xeda9('0x6')]=_0x6650bb||undefined;this['name']=checkNameSurname(_0x2277b6['Contact'][_0xeda9('0x7')],_0x2277b6[_0xeda9('0x8')][_0xeda9('0x9')],_0x2277b6[_0xeda9('0x8')][_0xeda9('0xa')]);this['number']=_0x2277b6[_0xeda9('0x8')][_0xeda9('0x7')];this[_0xeda9('0xb')]=_0x269453[_0xeda9('0xc')];this[_0xeda9('0xd')]=_0x2277b6[_0xeda9('0xd')]||![];this['type']=_0x269453[_0xeda9('0xe')];this[_0xeda9('0xf')]=_0x269453[_0xeda9('0xf')]||0x3;this[_0xeda9('0x10')]=_0x2277b6[_0xeda9('0x10')];this[_0xeda9('0x11')]=_0x2277b6[_0xeda9('0x11')];this[_0xeda9('0x12')]=_0x2277b6['countcongestionretry'];this[_0xeda9('0x13')]=_0x2277b6['countnoanswerretry'];this['countnosuchnumberretry']=_0x2277b6[_0xeda9('0x14')];this[_0xeda9('0x15')]=_0x2277b6[_0xeda9('0x15')];this[_0xeda9('0x16')]=_0x2277b6[_0xeda9('0x16')];this[_0xeda9('0x17')]=_0x2277b6[_0xeda9('0x17')];this['countagentrejectretry']=_0x2277b6[_0xeda9('0x18')];this['ContactId']=_0x2277b6[_0xeda9('0x19')];this[_0xeda9('0x1a')]=_0x2277b6['ListId'];this[_0xeda9('0x1b')]=_0x2277b6[_0xeda9('0x1b')];this[_0xeda9('0x1c')]=_0x2277b6['VoiceQueueId'];this[_0xeda9('0x1d')]=_0x2277b6['CampaignId'];this['idHopper']=_0x2277b6['id'];this[_0xeda9('0x1e')]=_0x2277b6[_0xeda9('0x8')][_0xeda9('0x9')]||'';this[_0xeda9('0x1f')]=moment()[_0xeda9('0x20')](_0xeda9('0x21'));this[_0xeda9('0x22')]=_0x2277b6[_0xeda9('0x22')];this[_0xeda9('0x23')]=_0x2277b6['callbackuniqueid'];this[_0xeda9('0x24')]=_0x2277b6[_0xeda9('0x24')];this['recallme']=_0x2277b6['recallme'];this[_0xeda9('0x25')]='';this[_0xeda9('0x26')]='';}Action[_0xeda9('0x27')]['getCaller']=function(){return util[_0xeda9('0x20')](_0xeda9('0x28'),this[_0xeda9('0xc')],this[_0xeda9('0x5')][_0xeda9('0x29')]>0x0?this[_0xeda9('0x2a')][_0xeda9('0x2b')](this['voiceQueue'][_0xeda9('0x29')]):this['number']);};Action['prototype'][_0xeda9('0x2c')]=function(){return this[_0xeda9('0xb')];};module[_0xeda9('0x2d')]=Action;
\ No newline at end of file
index 5187acc..4855129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13c1=['YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','answertime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countmachineretry','countagentrejectretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x13c1,0x194));var _0x113c=function(_0x15c969,_0xaa0bc){_0x15c969=_0x15c969-0x0;var _0x3f9b15=_0x13c1[_0x15c969];return _0x3f9b15;};'use strict';var util=require(_0x113c('0x0'));var _=require(_0x113c('0x1'));var moment=require('moment');function getSeconds(_0x57ad2f,_0x2fa518){var _0xa8c17b=moment(_0x57ad2f)[_0x113c('0x2')](0x0);var _0x27bd5d=moment(_0x2fa518)[_0x113c('0x2')](0x0);return _0xa8c17b['diff'](_0x27bd5d,_0x113c('0x3'));}function AgentComplete(_0x182a92,_0x56a8dd){this[_0x113c('0x4')]=0x4;this[_0x113c('0x5')]=_0x113c('0x6');this['scheduledat']=_0x182a92[_0x113c('0x7')];this[_0x113c('0x8')]=_0x182a92[_0x113c('0x8')];this[_0x113c('0x9')]=_0x182a92[_0x113c('0x8')]===_0x113c('0xa')?'queue':_0x182a92[_0x113c('0x8')];this[_0x113c('0xb')]=_0x182a92[_0x113c('0xb')];this[_0x113c('0xc')]=_0x182a92['countcongestionretry'];this[_0x113c('0xd')]=_0x182a92[_0x113c('0xd')];this[_0x113c('0xe')]=_0x182a92[_0x113c('0xb')]+_0x182a92[_0x113c('0xc')]+_0x182a92[_0x113c('0xd')]+_0x182a92[_0x113c('0xf')]+_0x182a92['countdropretry']+_0x182a92['countabandonedretry']+_0x182a92[_0x113c('0x10')]+_0x182a92[_0x113c('0x11')];this[_0x113c('0xf')]=_0x182a92[_0x113c('0xf')];this[_0x113c('0x12')]=_0x182a92[_0x113c('0x12')];this[_0x113c('0x13')]=_0x182a92['countabandonedretry'];this[_0x113c('0x10')]=_0x182a92['countmachineretry'];this[_0x113c('0x11')]=_0x182a92[_0x113c('0x11')];this['uniqueid']=_0x56a8dd[_0x113c('0x14')];this[_0x113c('0x15')]=_0x182a92[_0x113c('0x16')];this[_0x113c('0x17')]=_0x182a92[_0x113c('0x18')];this[_0x113c('0x19')]=_0x182a92['starttime'];this[_0x113c('0x1a')]=_0x182a92[_0x113c('0x1a')];this['answertime']=_0x182a92['answertime'];this[_0x113c('0x1b')]=moment()['format'](_0x113c('0x1c'));this[_0x113c('0x1d')]=getSeconds(_0x182a92[_0x113c('0x1a')],_0x182a92['starttime']);this[_0x113c('0x1e')]=getSeconds(_0x182a92['answertime'],_0x182a92[_0x113c('0x1a')]);this[_0x113c('0x1f')]=getSeconds(this[_0x113c('0x1b')],_0x182a92[_0x113c('0x20')]);this[_0x113c('0x21')]=_0x56a8dd['queue'];this[_0x113c('0x22')]=_0x56a8dd[_0x113c('0x22')];this['reason']=_0x56a8dd[_0x113c('0x23')];this[_0x113c('0x24')]=_0x182a92[_0x113c('0x24')];this[_0x113c('0x25')]=_0x182a92['callbackuniqueid'];this[_0x113c('0x26')]=_0x182a92[_0x113c('0x26')];this[_0x113c('0x27')]=_0x182a92[_0x113c('0x27')];this[_0x113c('0x28')]=_0x182a92[_0x113c('0x28')];this[_0x113c('0x29')]=_0x182a92[_0x113c('0x29')];this['UserId']=_0x182a92[_0x113c('0x2a')];this['VoiceQueueId']=_0x182a92[_0x113c('0x2b')];this[_0x113c('0x2c')]=_0x182a92[_0x113c('0x2c')];this[_0x113c('0x2d')]=_0x182a92[_0x113c('0x2d')]||'';this[_0x113c('0x2e')]=_0x182a92[_0x113c('0x2e')]||'';}module[_0x113c('0x2f')]=AgentComplete;
\ No newline at end of file
+var _0x9582=['countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','uniqueid','calleridnum','number','starttime','responsetime','answertime','endtime','YYYY-MM-DD\x20HH:mm:ss','talktime','membername','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x5a568d,_0x2310ad){var _0x390bad=function(_0x80fd05){while(--_0x80fd05){_0x5a568d['push'](_0x5a568d['shift']());}};_0x390bad(++_0x2310ad);}(_0x9582,0x95));var _0x2958=function(_0x5d6504,_0x337b39){_0x5d6504=_0x5d6504-0x0;var _0x43312e=_0x9582[_0x5d6504];return _0x43312e;};'use strict';var util=require(_0x2958('0x0'));var _=require(_0x2958('0x1'));var moment=require(_0x2958('0x2'));function getSeconds(_0x3d6d1f,_0x42752c){var _0x176287=moment(_0x3d6d1f)['milliseconds'](0x0);var _0x2a44fa=moment(_0x42752c)[_0x2958('0x3')](0x0);return _0x176287[_0x2958('0x4')](_0x2a44fa,_0x2958('0x5'));}function AgentComplete(_0x2f15c9,_0xbde128){this[_0x2958('0x6')]=0x4;this[_0x2958('0x7')]=_0x2958('0x8');this[_0x2958('0x9')]=_0x2f15c9['scheduledat'];this['type']=_0x2f15c9[_0x2958('0xa')];this['campaigntype']=_0x2f15c9[_0x2958('0xa')]==='outbound'?_0x2958('0xb'):_0x2f15c9['type'];this[_0x2958('0xc')]=_0x2f15c9[_0x2958('0xc')];this[_0x2958('0xd')]=_0x2f15c9[_0x2958('0xd')];this[_0x2958('0xe')]=_0x2f15c9['countnoanswerretry'];this[_0x2958('0xf')]=_0x2f15c9[_0x2958('0xc')]+_0x2f15c9[_0x2958('0xd')]+_0x2f15c9[_0x2958('0xe')]+_0x2f15c9[_0x2958('0x10')]+_0x2f15c9[_0x2958('0x11')]+_0x2f15c9[_0x2958('0x12')]+_0x2f15c9[_0x2958('0x13')]+_0x2f15c9['countagentrejectretry'];this[_0x2958('0x10')]=_0x2f15c9[_0x2958('0x10')];this['countdropretry']=_0x2f15c9['countdropretry'];this[_0x2958('0x12')]=_0x2f15c9[_0x2958('0x12')];this['countmachineretry']=_0x2f15c9[_0x2958('0x13')];this['countagentrejectretry']=_0x2f15c9['countagentrejectretry'];this[_0x2958('0x14')]=_0xbde128[_0x2958('0x14')];this['calleridname']=_0x2f15c9['name'];this[_0x2958('0x15')]=_0x2f15c9[_0x2958('0x16')];this[_0x2958('0x17')]=_0x2f15c9[_0x2958('0x17')];this[_0x2958('0x18')]=_0x2f15c9['responsetime'];this[_0x2958('0x19')]=_0x2f15c9[_0x2958('0x19')];this[_0x2958('0x1a')]=moment()['format'](_0x2958('0x1b'));this['ringtime']=getSeconds(_0x2f15c9[_0x2958('0x18')],_0x2f15c9['starttime']);this['holdtime']=getSeconds(_0x2f15c9[_0x2958('0x19')],_0x2f15c9[_0x2958('0x18')]);this[_0x2958('0x1c')]=getSeconds(this[_0x2958('0x1a')],_0x2f15c9[_0x2958('0x19')]);this[_0x2958('0xb')]=_0xbde128[_0x2958('0xb')];this[_0x2958('0x1d')]=_0xbde128[_0x2958('0x1d')];this[_0x2958('0x1e')]=_0xbde128[_0x2958('0x1e')];this[_0x2958('0x1f')]=_0x2f15c9[_0x2958('0x1f')];this[_0x2958('0x20')]=_0x2f15c9[_0x2958('0x20')];this['callbackat']=_0x2f15c9['callbackat'];this[_0x2958('0x21')]=_0x2f15c9[_0x2958('0x21')];this[_0x2958('0x22')]=_0x2f15c9[_0x2958('0x22')];this['ListId']=_0x2f15c9[_0x2958('0x23')];this['UserId']=_0x2f15c9[_0x2958('0x24')];this[_0x2958('0x25')]=_0x2f15c9[_0x2958('0x25')];this[_0x2958('0x26')]=_0x2f15c9[_0x2958('0x26')];this[_0x2958('0x27')]=_0x2f15c9[_0x2958('0x27')]||'';this['originatecalleridname']=_0x2f15c9[_0x2958('0x28')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
index dbeecea..78ad348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c46=['recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callbackuniqueid','callbackat'];(function(_0x281b76,_0x261fd7){var _0x3ca394=function(_0x15d981){while(--_0x15d981){_0x281b76['push'](_0x281b76['shift']());}};_0x3ca394(++_0x261fd7);}(_0x8c46,0x171));var _0x68c4=function(_0x51bd64,_0x1c8850){_0x51bd64=_0x51bd64-0x0;var _0x2c7ee4=_0x8c46[_0x51bd64];return _0x2c7ee4;};'use strict';var util=require(_0x68c4('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x3e1613,_0x56779a){var _0x5c3af6=moment(_0x3e1613)[_0x68c4('0x1')](0x0);var _0x18d525=moment(_0x56779a)[_0x68c4('0x1')](0x0);return _0x5c3af6[_0x68c4('0x2')](_0x18d525,_0x68c4('0x3'));}function Final(_0x1243c6){this[_0x68c4('0x4')]=_0x1243c6[_0x68c4('0x4')];this[_0x68c4('0x5')]=_0x1243c6[_0x68c4('0x5')];this['type']=_0x1243c6[_0x68c4('0x6')];this[_0x68c4('0x7')]=_0x1243c6[_0x68c4('0x6')]==='outbound'?_0x68c4('0x8'):_0x1243c6[_0x68c4('0x6')];this[_0x68c4('0x9')]=_0x1243c6['countbusyretry'];this['countcongestionretry']=_0x1243c6[_0x68c4('0xa')];this[_0x68c4('0xb')]=_0x1243c6['countnoanswerretry'];this['countglobal']=_0x1243c6[_0x68c4('0x9')]+_0x1243c6[_0x68c4('0xa')]+_0x1243c6[_0x68c4('0xb')]+_0x1243c6['countnosuchnumberretry']+_0x1243c6[_0x68c4('0xc')]+_0x1243c6[_0x68c4('0xd')]+_0x1243c6[_0x68c4('0xe')]+_0x1243c6['countagentrejectretry'];this[_0x68c4('0xf')]=_0x1243c6[_0x68c4('0xf')];this[_0x68c4('0xc')]=_0x1243c6['countdropretry'];this[_0x68c4('0xd')]=_0x1243c6[_0x68c4('0xd')];this['countmachineretry']=_0x1243c6[_0x68c4('0xe')];this['countagentrejectretry']=_0x1243c6[_0x68c4('0x10')];this['queue']=_0x1243c6['queue'];this[_0x68c4('0x11')]=_0x1243c6[_0x68c4('0x11')];this['calleridnum']=_0x1243c6[_0x68c4('0x12')];this[_0x68c4('0x13')]=_0x1243c6[_0x68c4('0x13')];this[_0x68c4('0x14')]=_0x1243c6[_0x68c4('0x14')];this[_0x68c4('0x15')]=_0x1243c6[_0x68c4('0x14')];this[_0x68c4('0x16')]=_0x1243c6[_0x68c4('0x16')]||0x0;this[_0x68c4('0x17')]=_0x1243c6[_0x68c4('0x17')]||0x0;this['talktime']=_0x1243c6[_0x68c4('0x18')]||0x0;this['callback']=_0x1243c6['callback'];this[_0x68c4('0x19')]=_0x1243c6[_0x68c4('0x19')];this[_0x68c4('0x1a')]=_0x1243c6[_0x68c4('0x1a')];this['recallme']=_0x1243c6[_0x68c4('0x1b')];this[_0x68c4('0x1c')]=_0x1243c6['ContactId'];this[_0x68c4('0x1d')]=_0x1243c6[_0x68c4('0x1d')];this[_0x68c4('0x1e')]=_0x1243c6[_0x68c4('0x1e')];this[_0x68c4('0x1f')]=_0x1243c6[_0x68c4('0x1f')];this[_0x68c4('0x20')]=_0x1243c6['CampaignId'];this[_0x68c4('0x21')]=_0x1243c6['originatecalleridnum']||'';this[_0x68c4('0x22')]=_0x1243c6[_0x68c4('0x22')]||'';}module[_0x68c4('0x23')]=Final;
\ No newline at end of file
+var _0x3561=['seconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff'];(function(_0x188e1d,_0x1e6c35){var _0x210641=function(_0x37372f){while(--_0x37372f){_0x188e1d['push'](_0x188e1d['shift']());}};_0x210641(++_0x1e6c35);}(_0x3561,0x94));var _0x1356=function(_0x2b8230,_0x3671f2){_0x2b8230=_0x2b8230-0x0;var _0x301b89=_0x3561[_0x2b8230];return _0x301b89;};'use strict';var util=require(_0x1356('0x0'));var _=require('lodash');var moment=require(_0x1356('0x1'));function getSeconds(_0x23a086,_0x8ef5f){var _0x14465e=moment(_0x23a086)[_0x1356('0x2')](0x0);var _0x313999=moment(_0x8ef5f)[_0x1356('0x2')](0x0);return _0x14465e[_0x1356('0x3')](_0x313999,_0x1356('0x4'));}function Final(_0x23a659){this[_0x1356('0x5')]=_0x23a659[_0x1356('0x5')];this[_0x1356('0x6')]=_0x23a659['scheduledat'];this[_0x1356('0x7')]=_0x23a659[_0x1356('0x7')];this[_0x1356('0x8')]=_0x23a659['type']==='outbound'?_0x1356('0x9'):_0x23a659[_0x1356('0x7')];this['countbusyretry']=_0x23a659[_0x1356('0xa')];this['countcongestionretry']=_0x23a659[_0x1356('0xb')];this[_0x1356('0xc')]=_0x23a659['countnoanswerretry'];this[_0x1356('0xd')]=_0x23a659[_0x1356('0xa')]+_0x23a659['countcongestionretry']+_0x23a659[_0x1356('0xc')]+_0x23a659[_0x1356('0xe')]+_0x23a659[_0x1356('0xf')]+_0x23a659[_0x1356('0x10')]+_0x23a659[_0x1356('0x11')]+_0x23a659[_0x1356('0x12')];this[_0x1356('0xe')]=_0x23a659[_0x1356('0xe')];this[_0x1356('0xf')]=_0x23a659[_0x1356('0xf')];this[_0x1356('0x10')]=_0x23a659[_0x1356('0x10')];this[_0x1356('0x11')]=_0x23a659['countmachineretry'];this['countagentrejectretry']=_0x23a659[_0x1356('0x12')];this[_0x1356('0x9')]=_0x23a659[_0x1356('0x9')];this['calleridname']=_0x23a659[_0x1356('0x13')];this[_0x1356('0x14')]=_0x23a659[_0x1356('0x14')];this[_0x1356('0x15')]=_0x23a659[_0x1356('0x15')];this[_0x1356('0x16')]=_0x23a659[_0x1356('0x16')];this[_0x1356('0x17')]=_0x23a659[_0x1356('0x16')];this[_0x1356('0x18')]=_0x23a659[_0x1356('0x18')]||0x0;this[_0x1356('0x19')]=_0x23a659[_0x1356('0x19')]||0x0;this['talktime']=_0x23a659[_0x1356('0x1a')]||0x0;this['callback']=_0x23a659[_0x1356('0x1b')];this['callbackuniqueid']=_0x23a659[_0x1356('0x1c')];this[_0x1356('0x1d')]=_0x23a659[_0x1356('0x1d')];this[_0x1356('0x1e')]=_0x23a659[_0x1356('0x1e')];this[_0x1356('0x1f')]=_0x23a659['ContactId'];this[_0x1356('0x20')]=_0x23a659[_0x1356('0x20')];this['UserId']=_0x23a659[_0x1356('0x21')];this[_0x1356('0x22')]=_0x23a659[_0x1356('0x22')];this['CampaignId']=_0x23a659[_0x1356('0x23')];this[_0x1356('0x24')]=_0x23a659[_0x1356('0x24')]||'';this[_0x1356('0x25')]=_0x23a659['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
index 81ab767..8830782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7612=['countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','ringtime','holdtime','queue','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','lodash','moment','milliseconds','diff','seconds','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countmachineretry'];(function(_0x2dc842,_0x4e67c4){var _0x476a62=function(_0x588a92){while(--_0x588a92){_0x2dc842['push'](_0x2dc842['shift']());}};_0x476a62(++_0x4e67c4);}(_0x7612,0xc3));var _0x2761=function(_0x120376,_0x571898){_0x120376=_0x120376-0x0;var _0x28c529=_0x7612[_0x120376];return _0x28c529;};'use strict';var util=require('util');var _=require(_0x2761('0x0'));var moment=require(_0x2761('0x1'));function getSeconds(_0x1e5fe4,_0x5530cf){var _0x5525d9=moment(_0x1e5fe4)['milliseconds'](0x0);var _0x2f5d3a=moment(_0x5530cf)[_0x2761('0x2')](0x0);return _0x5525d9[_0x2761('0x3')](_0x2f5d3a,_0x2761('0x4'));}function Hangup(_0x30f9b3,_0x591ab7){this['state']=0x4;this['statedesc']=_0x2761('0x5');this[_0x2761('0x6')]=_0x30f9b3[_0x2761('0x6')];this[_0x2761('0x7')]=_0x30f9b3[_0x2761('0x7')];this[_0x2761('0x8')]=_0x30f9b3['type']===_0x2761('0x9')?'queue':_0x30f9b3['type'];this[_0x2761('0xa')]=_0x30f9b3['countbusyretry'];this['countcongestionretry']=_0x30f9b3[_0x2761('0xb')];this['countnoanswerretry']=_0x30f9b3[_0x2761('0xc')];this['countglobal']=_0x30f9b3[_0x2761('0xa')]+_0x30f9b3[_0x2761('0xb')]+_0x30f9b3['countnoanswerretry']+_0x30f9b3['countnosuchnumberretry']+_0x30f9b3['countdropretry']+_0x30f9b3[_0x2761('0xd')]+_0x30f9b3[_0x2761('0xe')]+_0x30f9b3[_0x2761('0xf')];this[_0x2761('0x10')]=_0x30f9b3[_0x2761('0x10')];this[_0x2761('0x11')]=_0x30f9b3[_0x2761('0x11')];this['countabandonedretry']=_0x30f9b3[_0x2761('0xd')];this[_0x2761('0xe')]=_0x30f9b3[_0x2761('0xe')];this[_0x2761('0xf')]=_0x30f9b3[_0x2761('0xf')];this[_0x2761('0x12')]=_0x591ab7[_0x2761('0x12')];this['calleridname']=_0x30f9b3[_0x2761('0x13')];this[_0x2761('0x14')]=_0x30f9b3[_0x2761('0x15')];this[_0x2761('0x16')]=_0x30f9b3[_0x2761('0x16')];this[_0x2761('0x17')]=_0x30f9b3['responsetime'];this[_0x2761('0x18')]=moment()[_0x2761('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x2761('0x1a')]=getSeconds(_0x30f9b3[_0x2761('0x17')],_0x30f9b3[_0x2761('0x16')]);this[_0x2761('0x1b')]=0x0;this['talktime']=getSeconds(this[_0x2761('0x18')],_0x30f9b3['responsetime']);this[_0x2761('0x1c')]=_0x30f9b3[_0x2761('0x1c')];this['membername']=_0x2761('0x1d');this[_0x2761('0x1e')]=_0x591ab7[_0x2761('0x1f')];this[_0x2761('0x20')]=_0x30f9b3['callback'];this['callbackuniqueid']=_0x30f9b3[_0x2761('0x21')];this[_0x2761('0x22')]=_0x30f9b3[_0x2761('0x22')];this['recallme']=_0x30f9b3[_0x2761('0x23')];this[_0x2761('0x24')]=_0x30f9b3[_0x2761('0x24')];this[_0x2761('0x25')]=_0x30f9b3[_0x2761('0x25')];this['UserId']=_0x30f9b3[_0x2761('0x26')];this[_0x2761('0x27')]=_0x30f9b3['VoiceQueueId'];this['CampaignId']=_0x30f9b3[_0x2761('0x28')];}module[_0x2761('0x29')]=Hangup;
\ No newline at end of file
+var _0x1d0c=['queue','IVR','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','statedesc','Answer','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridnum','number','starttime','responsetime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','endtime'];(function(_0x1085ab,_0x37f559){var _0xefc9ae=function(_0x1f5807){while(--_0x1f5807){_0x1085ab['push'](_0x1085ab['shift']());}};_0xefc9ae(++_0x37f559);}(_0x1d0c,0x1b9));var _0xc1d0=function(_0x24456c,_0x4cf77b){_0x24456c=_0x24456c-0x0;var _0x4cc118=_0x1d0c[_0x24456c];return _0x4cc118;};'use strict';var util=require(_0xc1d0('0x0'));var _=require(_0xc1d0('0x1'));var moment=require(_0xc1d0('0x2'));function getSeconds(_0xdf00b4,_0x387c5a){var _0x29fa82=moment(_0xdf00b4)['milliseconds'](0x0);var _0x193968=moment(_0x387c5a)[_0xc1d0('0x3')](0x0);return _0x29fa82[_0xc1d0('0x4')](_0x193968,'seconds');}function Hangup(_0x4850aa,_0xfd22d2){this['state']=0x4;this[_0xc1d0('0x5')]=_0xc1d0('0x6');this[_0xc1d0('0x7')]=_0x4850aa['scheduledat'];this['type']=_0x4850aa[_0xc1d0('0x8')];this['campaigntype']=_0x4850aa[_0xc1d0('0x8')]==='outbound'?'queue':_0x4850aa['type'];this[_0xc1d0('0x9')]=_0x4850aa['countbusyretry'];this['countcongestionretry']=_0x4850aa[_0xc1d0('0xa')];this[_0xc1d0('0xb')]=_0x4850aa[_0xc1d0('0xb')];this[_0xc1d0('0xc')]=_0x4850aa[_0xc1d0('0x9')]+_0x4850aa[_0xc1d0('0xa')]+_0x4850aa[_0xc1d0('0xb')]+_0x4850aa[_0xc1d0('0xd')]+_0x4850aa[_0xc1d0('0xe')]+_0x4850aa[_0xc1d0('0xf')]+_0x4850aa[_0xc1d0('0x10')]+_0x4850aa['countagentrejectretry'];this[_0xc1d0('0xd')]=_0x4850aa[_0xc1d0('0xd')];this[_0xc1d0('0xe')]=_0x4850aa[_0xc1d0('0xe')];this['countabandonedretry']=_0x4850aa[_0xc1d0('0xf')];this[_0xc1d0('0x10')]=_0x4850aa[_0xc1d0('0x10')];this[_0xc1d0('0x11')]=_0x4850aa[_0xc1d0('0x11')];this[_0xc1d0('0x12')]=_0xfd22d2[_0xc1d0('0x12')];this['calleridname']=_0x4850aa['name'];this[_0xc1d0('0x13')]=_0x4850aa[_0xc1d0('0x14')];this[_0xc1d0('0x15')]=_0x4850aa[_0xc1d0('0x15')];this[_0xc1d0('0x16')]=_0x4850aa['responsetime'];this['endtime']=moment()['format'](_0xc1d0('0x17'));this[_0xc1d0('0x18')]=getSeconds(_0x4850aa['responsetime'],_0x4850aa[_0xc1d0('0x15')]);this[_0xc1d0('0x19')]=0x0;this['talktime']=getSeconds(this[_0xc1d0('0x1a')],_0x4850aa[_0xc1d0('0x16')]);this[_0xc1d0('0x1b')]=_0x4850aa[_0xc1d0('0x1b')];this['membername']=_0xc1d0('0x1c');this['reason']=_0xfd22d2['cause-txt'];this[_0xc1d0('0x1d')]=_0x4850aa[_0xc1d0('0x1d')];this[_0xc1d0('0x1e')]=_0x4850aa[_0xc1d0('0x1e')];this[_0xc1d0('0x1f')]=_0x4850aa[_0xc1d0('0x1f')];this['recallme']=_0x4850aa[_0xc1d0('0x20')];this['ContactId']=_0x4850aa[_0xc1d0('0x21')];this[_0xc1d0('0x22')]=_0x4850aa[_0xc1d0('0x22')];this[_0xc1d0('0x23')]=_0x4850aa['UserId'];this[_0xc1d0('0x24')]=_0x4850aa[_0xc1d0('0x24')];this[_0xc1d0('0x25')]=_0x4850aa['CampaignId'];}module[_0xc1d0('0x26')]=Hangup;
\ No newline at end of file
index 5d53c45..968d594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c0=['calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x272fed,_0x243d67){var _0x2f7ead=function(_0x538090){while(--_0x538090){_0x272fed['push'](_0x272fed['shift']());}};_0x2f7ead(++_0x243d67);}(_0x43c0,0x124));var _0x043c=function(_0x53d0a7,_0x28f79b){_0x53d0a7=_0x53d0a7-0x0;var _0x43c54d=_0x43c0[_0x53d0a7];return _0x43c54d;};'use strict';var util=require(_0x043c('0x0'));var _=require(_0x043c('0x1'));var moment=require(_0x043c('0x2'));function getSeconds(_0x32219f,_0x2ab7c3){var _0x107c8b=moment(_0x32219f)[_0x043c('0x3')](0x0);var _0x3dbbcc=moment(_0x2ab7c3)[_0x043c('0x3')](0x0);return _0x107c8b[_0x043c('0x4')](_0x3dbbcc,'seconds');}function History(_0x4b8ce6){this[_0x043c('0x5')]=_0x4b8ce6[_0x043c('0x5')];this[_0x043c('0x6')]=_0x4b8ce6[_0x043c('0x6')]||undefined;this[_0x043c('0x7')]=_0x4b8ce6[_0x043c('0x7')];this[_0x043c('0x8')]=_0x4b8ce6[_0x043c('0x7')]===_0x043c('0x9')?_0x043c('0xa'):_0x4b8ce6[_0x043c('0x7')];this[_0x043c('0xb')]=_0x4b8ce6[_0x043c('0xb')];this['countcongestionretry']=_0x4b8ce6[_0x043c('0xc')];this[_0x043c('0xd')]=_0x4b8ce6['countnoanswerretry'];this[_0x043c('0xe')]=_0x4b8ce6[_0x043c('0xb')]+_0x4b8ce6[_0x043c('0xc')]+_0x4b8ce6[_0x043c('0xd')]+_0x4b8ce6[_0x043c('0xf')]+_0x4b8ce6[_0x043c('0x10')]+_0x4b8ce6[_0x043c('0x11')]+_0x4b8ce6[_0x043c('0x12')]+_0x4b8ce6[_0x043c('0x13')];this[_0x043c('0xf')]=_0x4b8ce6['countnosuchnumberretry'];this['countdropretry']=_0x4b8ce6[_0x043c('0x10')];this[_0x043c('0x11')]=_0x4b8ce6[_0x043c('0x11')];this['countmachineretry']=_0x4b8ce6['countmachineretry'];this[_0x043c('0x13')]=_0x4b8ce6[_0x043c('0x13')];this[_0x043c('0xa')]=_0x4b8ce6[_0x043c('0xa')];this[_0x043c('0x14')]=_0x4b8ce6['name'];this[_0x043c('0x15')]=_0x4b8ce6['number'];this[_0x043c('0x16')]=_0x4b8ce6['starttime'];this['responsetime']=_0x4b8ce6[_0x043c('0x17')];this['endtime']=_0x4b8ce6['responsetime'];this[_0x043c('0x18')]=getSeconds(_0x4b8ce6['responsetime'],_0x4b8ce6['starttime']);this[_0x043c('0x19')]=0x0;this[_0x043c('0x1a')]=0x0;this[_0x043c('0x1b')]=_0x4b8ce6[_0x043c('0x1b')];this[_0x043c('0x1c')]=_0x4b8ce6['callbackuniqueid'];this[_0x043c('0x1d')]=_0x4b8ce6['callbackat'];this[_0x043c('0x1e')]=_0x4b8ce6['recallme'];this[_0x043c('0x1f')]=_0x4b8ce6['ContactId'];this['ListId']=_0x4b8ce6[_0x043c('0x20')];this[_0x043c('0x21')]=_0x4b8ce6[_0x043c('0x21')];this['VoiceQueueId']=_0x4b8ce6[_0x043c('0x22')];this['CampaignId']=_0x4b8ce6[_0x043c('0x23')];this['originatecalleridnum']=_0x4b8ce6[_0x043c('0x24')]||'';this[_0x043c('0x25')]=_0x4b8ce6[_0x043c('0x25')]||'';}module[_0x043c('0x26')]=History;
\ No newline at end of file
+var _0x761b=['CampaignId','originatecalleridnum','originatecalleridname','exports','milliseconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','number','starttime','responsetime','endtime','ringtime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x5b5cde,_0x1f7c5f){var _0x364ad2=function(_0x4a1172){while(--_0x4a1172){_0x5b5cde['push'](_0x5b5cde['shift']());}};_0x364ad2(++_0x1f7c5f);}(_0x761b,0x17a));var _0xb761=function(_0x16292c,_0x451724){_0x16292c=_0x16292c-0x0;var _0xfb49b3=_0x761b[_0x16292c];return _0xfb49b3;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x52a6d3,_0x5b4477){var _0x408e4b=moment(_0x52a6d3)['milliseconds'](0x0);var _0x280438=moment(_0x5b4477)[_0xb761('0x0')](0x0);return _0x408e4b['diff'](_0x280438,'seconds');}function History(_0x1f2068){this[_0xb761('0x1')]=_0x1f2068[_0xb761('0x1')];this[_0xb761('0x2')]=_0x1f2068['scheduledat']||undefined;this[_0xb761('0x3')]=_0x1f2068['type'];this[_0xb761('0x4')]=_0x1f2068[_0xb761('0x3')]===_0xb761('0x5')?_0xb761('0x6'):_0x1f2068[_0xb761('0x3')];this['countbusyretry']=_0x1f2068['countbusyretry'];this[_0xb761('0x7')]=_0x1f2068[_0xb761('0x7')];this[_0xb761('0x8')]=_0x1f2068[_0xb761('0x8')];this[_0xb761('0x9')]=_0x1f2068[_0xb761('0xa')]+_0x1f2068['countcongestionretry']+_0x1f2068[_0xb761('0x8')]+_0x1f2068[_0xb761('0xb')]+_0x1f2068[_0xb761('0xc')]+_0x1f2068['countabandonedretry']+_0x1f2068[_0xb761('0xd')]+_0x1f2068[_0xb761('0xe')];this['countnosuchnumberretry']=_0x1f2068[_0xb761('0xb')];this['countdropretry']=_0x1f2068[_0xb761('0xc')];this['countabandonedretry']=_0x1f2068[_0xb761('0xf')];this[_0xb761('0xd')]=_0x1f2068[_0xb761('0xd')];this[_0xb761('0xe')]=_0x1f2068['countagentrejectretry'];this[_0xb761('0x6')]=_0x1f2068[_0xb761('0x6')];this['calleridname']=_0x1f2068['name'];this['calleridnum']=_0x1f2068[_0xb761('0x10')];this[_0xb761('0x11')]=_0x1f2068[_0xb761('0x11')];this[_0xb761('0x12')]=_0x1f2068[_0xb761('0x12')];this[_0xb761('0x13')]=_0x1f2068[_0xb761('0x12')];this[_0xb761('0x14')]=getSeconds(_0x1f2068[_0xb761('0x12')],_0x1f2068[_0xb761('0x11')]);this[_0xb761('0x15')]=0x0;this['talktime']=0x0;this[_0xb761('0x16')]=_0x1f2068[_0xb761('0x16')];this[_0xb761('0x17')]=_0x1f2068['callbackuniqueid'];this[_0xb761('0x18')]=_0x1f2068[_0xb761('0x18')];this[_0xb761('0x19')]=_0x1f2068[_0xb761('0x19')];this['ContactId']=_0x1f2068[_0xb761('0x1a')];this['ListId']=_0x1f2068[_0xb761('0x1b')];this[_0xb761('0x1c')]=_0x1f2068[_0xb761('0x1c')];this['VoiceQueueId']=_0x1f2068[_0xb761('0x1d')];this[_0xb761('0x1e')]=_0x1f2068[_0xb761('0x1e')];this[_0xb761('0x1f')]=_0x1f2068[_0xb761('0x1f')]||'';this['originatecalleridname']=_0x1f2068[_0xb761('0x20')]||'';}module[_0xb761('0x21')]=History;
\ No newline at end of file
index e9c596b..9e84405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c19=['queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','getSettings','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','\x20NOT\x20Active','Interval','message','\x20INTERVAL_IS_NULL','Intervals','INTERVAL_IS_NULL','[ifTime][Action]','Error','stringify','diff','emit','type','outbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','campaign:save','isEmpty','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','milliseconds','seconds','clearing\x20variable\x20start\x20predictive','handlePredictive','ivr','string','\x22%s\x22\x20<%s>','error','inspect','length','undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','starttime','clearZombieChannels','[uniqueid]','enqueue','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','campaigns','[Dialer][checkChannel][ivr]','resolve','then','[countReScheduled]\x20','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','temp','[getContactDialer]\x20','getContactDialerIvr','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','merge','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','Success','isTrunkReachable','SIP/%s','reachable','unmonitored','uniqueid','isNil','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','Machine','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','ivrAnswerCallsDay','dialQueueProject','AGI','[syncHangupIvr][createHistory]','[syncHangupIvr]','outboundUnknownCallsDay','cause-txt','Unknow','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','Drop','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','actionid','roundrobin','paused','stateinterface','locked','rrmemory','queueBooked','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','TIMEZONE_UNKNOW','isArray','interval','timezones','indexOf','true','iftime\x20%s,%s','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:%s','launchHandleIvr','handleIvr','dialGlobalInterval','dialTimezone','[syncCampaigns]','pow','replace','random','match','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','dialQueueTimeout','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','XMD-','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyRetryFrequency','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','entity\x20is\x20undefine','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','custom:agentbusy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','Congestion','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','contact\x20not\x20moved','round','predictiveIntervalAvailable','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval',')\x20are\x20less\x20than\x20threshold\x20(','predictiveIntervalAnsweredCalls','dialPredictiveOptimizationPercentage','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','getVoiceQueueRtPauses','predictiveIntervalDroppedCallsCallersExit','outboundQueuePauses','[CatchErlangB]','predictiveIntervalPauses','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','actionOriginate','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','checkIsBlackList','[actionOriginate]\x20','[getContactDialer2]','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','[busyFactor]','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','dialer','../../../config/logger','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','127.0.0.1','prototype','tail','finally','sequence','preview','voiceQueues','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated'];(function(_0x596626,_0x1429c4){var _0x593374=function(_0x1c0095){while(--_0x1c0095){_0x596626['push'](_0x596626['shift']());}};_0x593374(++_0x1429c4);}(_0x5c19,0x1f2));var _0x95c1=function(_0x3e8270,_0x293590){_0x3e8270=_0x3e8270-0x0;var _0x1ccde9=_0x5c19[_0x3e8270];return _0x1ccde9;};'use strict';var util=require(_0x95c1('0x0'));var _=require(_0x95c1('0x1'));var BPromise=require(_0x95c1('0x2'));var uuid=require(_0x95c1('0x3'));var moment=require(_0x95c1('0x4'));var rr=require('rr');var md5=require(_0x95c1('0x5'));var Redis=require(_0x95c1('0x6'));var ut=require(_0x95c1('0x7'));var config=require(_0x95c1('0x8'));var logger=require('../../../config/logger')(_0x95c1('0x9'));var loggerBooked=require(_0x95c1('0xa'))(_0x95c1('0xb'));var loggerPredictive=require(_0x95c1('0xa'))(_0x95c1('0xc'));var loggerPredictiveCalls=require(_0x95c1('0xa'))(_0x95c1('0xd'));var loggerSyncQueueSummary=require('../../../config/logger')(_0x95c1('0xe'));var ami=require(_0x95c1('0xf'));config[_0x95c1('0x10')]=_['defaults'](config[_0x95c1('0x10')],{'host':_0x95c1('0x11'),'port':0x18eb});var io=require(_0x95c1('0x12'))(new Redis(config[_0x95c1('0x10')]));var cmHopper=require(_0x95c1('0x13'));var cmHopperHistory=require(_0x95c1('0x14'));var cmHopperBlack=require(_0x95c1('0x15'));var voiceQueueRt=require(_0x95c1('0x16'));var RpcSetting=require(_0x95c1('0x17'));var Action=require(_0x95c1('0x18'));var History=require(_0x95c1('0x19'));var Final=require(_0x95c1('0x1a'));var AgentComplete=require(_0x95c1('0x1b'));var QueueCallerAbandon=require(_0x95c1('0x1c'));var Hangup=require(_0x95c1('0x1d'));var ipAgi=process['env']['XCALLY_IP_AGI']||_0x95c1('0x1e');var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x95c1('0x1f')]['enqueue']=function(_0x1c6834){this[_0x95c1('0x20')]=this[_0x95c1('0x20')]?this[_0x95c1('0x20')][_0x95c1('0x21')](_0x1c6834):_0x1c6834();};function Dialer(_0x2b2cfc,_0x3c556c){this[_0x95c1('0x22')]=new Sequence();this[_0x95c1('0x23')]=_0x3c556c;this['voiceQueues']=_0x2b2cfc[_0x95c1('0x24')];this['campaigns']=_0x2b2cfc['campaigns'];this[_0x95c1('0x25')]=_0x2b2cfc['agents'];this[_0x95c1('0x26')]=_0x2b2cfc[_0x95c1('0x26')];this[_0x95c1('0x27')]=config[_0x95c1('0x27')]||0x2;this[_0x95c1('0x28')]={};this[_0x95c1('0x29')]={};this[_0x95c1('0x2a')]={};this[_0x95c1('0x2b')]={};this[_0x95c1('0x2c')]={};this[_0x95c1('0x2d')]={};this[_0x95c1('0x2e')]={};this[_0x95c1('0x2f')]={};this['queueBooked']={};this[_0x95c1('0x30')]={};ami['on'](_0x95c1('0x31'),this[_0x95c1('0x32')]['bind'](this));ami['on'](_0x95c1('0x33'),this[_0x95c1('0x34')][_0x95c1('0x35')](this));ami['on'](_0x95c1('0x36'),this[_0x95c1('0x37')]['bind'](this));ami['on'](_0x95c1('0x38'),this[_0x95c1('0x39')]['bind'](this));ami['on'](_0x95c1('0x3a'),this[_0x95c1('0xe')][_0x95c1('0x35')](this));ami['on']('hangup',this[_0x95c1('0x3b')][_0x95c1('0x35')](this));ami['on'](_0x95c1('0x3c'),this[_0x95c1('0x3d')][_0x95c1('0x35')](this));ami['on'](_0x95c1('0x3e'),this[_0x95c1('0x3f')][_0x95c1('0x35')](this));ami['on'](_0x95c1('0x40'),this[_0x95c1('0x41')][_0x95c1('0x35')](this));ami['on'](_0x95c1('0x42'),this['syncQueueStatusComplete'][_0x95c1('0x35')](this));this[_0x95c1('0x43')]();this[_0x95c1('0x44')]();RpcSetting[_0x95c1('0x45')]()['then'](function(_0x2d5f0a){previewRecallmeReminderInterval=_0x2d5f0a['previewRecallmeReminderInterval'];});}function isNotNull(_0x42ba09){return _0x42ba09!==null&&!_['isUndefined'](_0x42ba09);}function checkIsLoggedIn(_0x2401bc,_0x33c1a2){return function(){if(_0x33c1a2<=0x0){_0x2401bc['message']=_0x95c1('0x46');throw _0x2401bc[_0x95c1('0x47')]+_0x95c1('0x48');}};}function isActive(_0x4c7dc1){return _0x4c7dc1;}function checkIsActive(_0x5af958,_0x45f83d){return function(){if(!isActive(_0x45f83d)){_0x5af958['message']='NOT_ACTIVE';throw _0x5af958[_0x95c1('0x47')]+_0x95c1('0x49');}};}function checkInterval(_0x32ad8b){return function(){if(!isNotNull(_0x32ad8b[_0x95c1('0x4a')])){_0x32ad8b[_0x95c1('0x4b')]='INTERVAL_IS_NULL';throw _0x32ad8b['name']+_0x95c1('0x4c');}if(!isNotNull(_0x32ad8b[_0x95c1('0x4a')][_0x95c1('0x4d')])){_0x32ad8b['message']='INTERVAL_IS_NULL';throw _0x32ad8b['name']+_0x95c1('0x4c');}if(!isNotNull(_['isEmpty'](_0x32ad8b[_0x95c1('0x4a')][_0x95c1('0x4d')]))){_0x32ad8b[_0x95c1('0x4b')]=_0x95c1('0x4e');throw _0x32ad8b[_0x95c1('0x47')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0xcfccde,_0x4a3057,_0x2e7133){return{'action':_0xcfccde,'response':_0x4a3057,'message':_0x2e7133,'stack':_0x2e7133};}function myreject(_0x41c5ae){return function(_0x5cf71d){return _0x41c5ae(msgResponse(_0x95c1('0x4f'),_0x95c1('0x50'),JSON[_0x95c1('0x51')](_0x5cf71d)));};}function getSeconds(_0x444ebf,_0xb78989){var _0x126fca=moment(_0x444ebf)['milliseconds'](0x0);var _0x1429aa=moment(_0xb78989)['milliseconds'](0x0);return _0x126fca[_0x95c1('0x52')](_0x1429aa,'seconds');}function emit(_0x37b677,_0x20cfda,_0x1f642a){io['to'](_0x37b677)[_0x95c1('0x53')](_0x20cfda,_0x1f642a);}function emitVoiceQueueSummary(_0x4bb870){if(_0x4bb870[_0x95c1('0x54')]===_0x95c1('0x55')){var _0x57c81d={'id':_0x4bb870['id'],'name':_0x4bb870[_0x95c1('0x47')],'strategy':_0x4bb870[_0x95c1('0x56')],'answered':_0x4bb870[_0x95c1('0x57')],'available':_0x4bb870[_0x95c1('0x58')],'loggedIn':_0x4bb870[_0x95c1('0x59')],'pTalking':_0x4bb870[_0x95c1('0x5a')],'sumBillable':_0x4bb870[_0x95c1('0x5b')],'sumDuration':_0x4bb870[_0x95c1('0x5c')],'sumHoldTime':_0x4bb870[_0x95c1('0x5d')]||0x0,'talking':_0x4bb870[_0x95c1('0x5e')],'total':_0x4bb870[_0x95c1('0x5f')],'type':_0x4bb870[_0x95c1('0x54')],'unmanaged':_0x4bb870[_0x95c1('0x60')],'abandoned':_0x4bb870['abandoned'],'waiting':_0x4bb870[_0x95c1('0x61')],'loggedInDb':_0x4bb870['loggedInDb'],'dialActive':_0x4bb870[_0x95c1('0x62')],'dialMethod':_0x4bb870[_0x95c1('0x63')],'dialOriginateCallerIdName':_0x4bb870['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x4bb870[_0x95c1('0x64')],'dialOriginateTimeout':_0x4bb870[_0x95c1('0x65')],'dialPrefix':_0x4bb870[_0x95c1('0x66')],'outboundAnswerAgiCallsDay':_0x4bb870[_0x95c1('0x67')],'outboundAnswerCallsDay':_0x4bb870['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x4bb870[_0x95c1('0x68')],'outboundBusyCallsDay':_0x4bb870[_0x95c1('0x69')],'outboundCongestionCallsDay':_0x4bb870[_0x95c1('0x6a')],'outboundDropCallsDayACS':_0x4bb870['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x4bb870[_0x95c1('0x6b')],'outboundDropCallsDayTimeout':_0x4bb870[_0x95c1('0x6c')],'outboundNoAnswerCallsDay':_0x4bb870[_0x95c1('0x6d')],'outboundNoSuchCallsDay':_0x4bb870[_0x95c1('0x6e')],'outboundOriginateFailureCallsDay':_0x4bb870[_0x95c1('0x6f')],'outboundReCallsDay':_0x4bb870[_0x95c1('0x70')],'outboundRejectCallsDay':_0x4bb870[_0x95c1('0x71')],'outboundUnknownCallsDay':_0x4bb870['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x4bb870['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x4bb870[_0x95c1('0x72')],'predictiveIntervalAvgTalktime':_0x4bb870['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x4bb870['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x4bb870[_0x95c1('0x73')],'predictiveIntervalErlangCalls':_0x4bb870[_0x95c1('0x74')],'predictiveIntervalErlangCallsDroppedCalls':_0x4bb870[_0x95c1('0x75')],'predictiveIntervalHitRate':_0x4bb870['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x4bb870[_0x95c1('0x76')],'predictiveIntervalPauses':_0x4bb870['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x4bb870['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x4bb870[_0x95c1('0x77')],'message':_0x4bb870[_0x95c1('0x4b')],'originated':_0x4bb870[_0x95c1('0x78')],'erlangCalls':_0x4bb870[_0x95c1('0x79')],'erlangCallToSecond':_0x4bb870[_0x95c1('0x7a')],'erlangAbandonmentRate':_0x4bb870[_0x95c1('0x7b')],'erlangBusyFactor':_0x4bb870[_0x95c1('0x7c')],'startPredictive':_0x4bb870[_0x95c1('0x2d')],'startProgressive':_0x4bb870[_0x95c1('0x2e')]};if(_0x4bb870[_0x95c1('0x7d')]){_0x57c81d['Trunk']={'id':_0x4bb870['Trunk']['id'],'name':_0x4bb870[_0x95c1('0x7d')][_0x95c1('0x47')],'active':_0x4bb870[_0x95c1('0x7d')][_0x95c1('0x7e')],'callerid':_0x4bb870[_0x95c1('0x7d')][_0x95c1('0x7f')]};}if(_0x4bb870[_0x95c1('0x4a')]){_0x57c81d[_0x95c1('0x4a')]={'id':_0x4bb870[_0x95c1('0x4a')]['id'],'name':_0x4bb870['Interval']['name']};}var _0x264e4a=md5(JSON[_0x95c1('0x51')](_0x57c81d));if(_0x4bb870[_0x95c1('0x5')]!==_0x264e4a){_0x4bb870[_0x95c1('0x5')]=_0x264e4a;emit(util[_0x95c1('0x80')](_0x95c1('0x81'),_0x57c81d[_0x95c1('0x47')]),_0x95c1('0x82'),_0x57c81d);}}}function emitCampaignSummary(_0x3d1bd5){if(_0x3d1bd5[_0x95c1('0x54')]==='ivr'){emit(util[_0x95c1('0x80')]('campaign:ivr:%s',_0x3d1bd5[_0x95c1('0x47')]),_0x95c1('0x83'),_0x3d1bd5);}}function checkGetDataPredictive(_0x1b3845){if(isNotNull(_0x1b3845)&&!_[_0x95c1('0x84')](_0x1b3845)){loggerPredictive[_0x95c1('0x85')](_0x95c1('0x86'));loggerPredictive[_0x95c1('0x85')](_0x95c1('0x87'),_0x1b3845[_0x95c1('0x77')]);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x88'),_0x1b3845['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x89'),_0x1b3845['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x8a'),_0x1b3845['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x8b'),_0x1b3845['predictiveIntervalAvgHoldtime']);loggerPredictive['info']('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1b3845['predictiveIntervalAvgTalktime']);loggerPredictive[_0x95c1('0x85')]('---------------------------');if(_0x1b3845[_0x95c1('0x77')]>0x0){if(!_['isUndefined'](_0x1b3845[_0x95c1('0x8c')])&&_0x1b3845[_0x95c1('0x8c')]>0x0){return!![];}loggerPredictive['info'](_0x95c1('0x8d'));if(!_[_0x95c1('0x8e')](_0x1b3845[_0x95c1('0x72')])&&_0x1b3845[_0x95c1('0x72')]>0x0){return!![];}loggerPredictive[_0x95c1('0x85')](_0x95c1('0x8f'));}else{loggerPredictive[_0x95c1('0x85')](_0x95c1('0x90'));}}else{loggerPredictive['info'](_0x95c1('0x91'));}return![];}function mergeDataErlangB(_0x376e2e){return function(_0x3fb6d5){loggerPredictive[_0x95c1('0x85')](_0x95c1('0x92'));loggerPredictive[_0x95c1('0x85')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3fb6d5[_0x95c1('0x79')]);loggerPredictive[_0x95c1('0x85')]('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3fb6d5[_0x95c1('0x7a')]);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x93'),_0x3fb6d5[_0x95c1('0x7b')]);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x94'),_0x3fb6d5[_0x95c1('0x7c')]);loggerPredictive['info'](_0x95c1('0x93'),_0x3fb6d5['erlangAbandonmentRate']);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x95'));_['merge'](_0x376e2e,_0x3fb6d5);};}function getDiff(_0x3ad70b){var _0x14bbae=moment()[_0x95c1('0x96')](0x0);var _0xdb00b1=moment(_0x3ad70b)[_0x95c1('0x96')](0x0);return _0x14bbae[_0x95c1('0x52')](_0xdb00b1,_0x95c1('0x97'));}function ifInterval(_0x288887,_0x535a4f){if(_[_0x95c1('0x8e')](_0x535a4f)){return![];}return getDiff(_0x535a4f)<_0x288887*0x3c;}function freeVariablesPredictive(_0x4e23f7){if(isNotNull(_0x4e23f7)){if(!_[_0x95c1('0x8e')](_0x4e23f7['startProgressive'])){_0x4e23f7[_0x95c1('0x2e')]=undefined;loggerPredictive[_0x95c1('0x85')](_0x4e23f7['name'],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x95c1('0x8e')](_0x4e23f7[_0x95c1('0x2d')])){_0x4e23f7[_0x95c1('0x2d')]=undefined;loggerPredictive[_0x95c1('0x85')](_0x4e23f7[_0x95c1('0x47')],_0x95c1('0x98'));}if(!_[_0x95c1('0x8e')](_0x4e23f7[_0x95c1('0x99')])){clearInterval(_0x4e23f7[_0x95c1('0x99')]);_0x4e23f7[_0x95c1('0x99')]=undefined;loggerPredictive[_0x95c1('0x85')](_0x4e23f7[_0x95c1('0x47')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x4373c0,_0x1e1896){if(_0x1e1896===0x0){return 0x0;}var _0x33117d=0x1;for(var _0x5f1058=0x1;_0x5f1058<=_0x1e1896;_0x5f1058+=0x1){_0x33117d=0x1+_0x33117d*_0x5f1058/_0x4373c0;}return 0x1/_0x33117d;}function isVoiceQueueOutbound(_0x42b9f6){return _0x42b9f6==='outbound';}function isNotPreview(_0x5ad97c){return _0x5ad97c!=='preview';}function isCampaignIvr(_0x24963e){return _0x24963e===_0x95c1('0x9a');}function getCallerId(_0x5472e2,_0x32e668,_0x71e8d0){if(!_['isUndefined'](_0x71e8d0)&&typeof _0x71e8d0===_0x95c1('0x9b')&&!_[_0x95c1('0x84')](_0x71e8d0)){if(!_[_0x95c1('0x8e')](_0x32e668)&&typeof _0x32e668===_0x95c1('0x9b')&&!_['isEmpty'](_0x32e668)){return util[_0x95c1('0x80')](_0x95c1('0x9c'),_0x32e668,_0x71e8d0);}return util[_0x95c1('0x80')](_0x95c1('0x9c'),_0x71e8d0,_0x71e8d0);}if(!_[_0x95c1('0x8e')](_0x5472e2)&&typeof _0x5472e2===_0x95c1('0x9b')&&!_[_0x95c1('0x84')](_0x5472e2)){return _0x5472e2;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x1d51f1,_0x53b2f6){return function(_0xc52613){freeVariablesPredictive(_0x53b2f6);emitVoiceQueueSummary(_0x53b2f6);emitCampaignSummary(_0x53b2f6);loggerSyncQueueSummary[_0x95c1('0x9d')](_0x1d51f1,util[_0x95c1('0x9e')](_0xc52613,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x3f243c,_0x37ec89){return function(_0x2736f4){loggerPredictive[_0x95c1('0x9d')](_0x37ec89[_0x95c1('0x47')],_0x3f243c);loggerPredictive[_0x95c1('0x9d')](_0x2736f4['stack']);freeVariablesPredictive(_0x37ec89);};}function loggerCatch(_0x1339f3){return function(_0x433ea0){logger[_0x95c1('0x9d')](_0x1339f3,util[_0x95c1('0x9e')](_0x433ea0,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x408d16){return _0x408d16&&!_['isUndefined'](_0x408d16)&&_0x408d16[_0x95c1('0x9f')]>0x0;}function decremetOriginate(_0x30e383){if(!_['isUndefined'](_0x30e383)&&_0x30e383!==null){if(typeof _0x30e383[_0x95c1('0x78')]!==_0x95c1('0xa0')){if(_0x30e383['originated']>0x0){_0x30e383[_0x95c1('0x78')]-=0x1;}else{logger[_0x95c1('0x9d')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x685e5e,_0x43724f,_0x4d2697){if(_0x43724f>_0x4d2697){for(var _0x10e302=0x0;_0x10e302<_0x43724f-_0x4d2697;_0x10e302+=0x1){decremetOriginate(_0x685e5e);}}}function loggerGetContactDialer(_0x4152e2,_0x3a4a3e,_0x166070){return function(_0x41c43c){checkContactLowerLimitOriginate(_0x3a4a3e,_0x166070,0x0);logger[_0x95c1('0x9d')](_0x4152e2,util[_0x95c1('0x9e')](_0x41c43c,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x28ae95){return function(_0x464cbe){if(isNotNull(_0x464cbe)&&isNotNull(_0x464cbe[0x0])){if(_0x464cbe[0x0][_0x95c1('0xa1')]>0x0){_0x28ae95[_0x95c1('0x4b')]=_0x95c1('0xa2');logger[_0x95c1('0x85')](_0x95c1('0xa3')+_0x28ae95[_0x95c1('0x47')],_0x464cbe[0x0][_0x95c1('0xa1')],'contacts');}else{_0x28ae95[_0x95c1('0x4b')]=_0x95c1('0xa4');logger[_0x95c1('0x85')]('[getContactDialer2][Empty]'+_0x28ae95[_0x95c1('0x47')]);}}};}function notSendMessagesQueue(_0x2b088a){if(_0x2b088a[_0x95c1('0xa5')]){freeVariablesPredictive(_0x2b088a);if(_0x2b088a[_0x95c1('0x78')]===0x0&&_0x2b088a[_0x95c1('0x5e')]===0x0&&_0x2b088a[_0x95c1('0x61')]===0x0&&(_0x2b088a[_0x95c1('0x5a')]||0x0)===0x0){_0x2b088a['sendMessageOneNotActive']=![];_0x2b088a[_0x95c1('0x58')]=0x0;_0x2b088a[_0x95c1('0x4b')]=_0x95c1('0xa6');loggerSyncQueueSummary[_0x95c1('0x9d')](_0x95c1('0xa7'),_0x2b088a[_0x95c1('0x47')],_0x95c1('0xa8'));}else{_0x2b088a[_0x95c1('0x4b')]=_0x95c1('0xa9');loggerSyncQueueSummary[_0x95c1('0x9d')](_0x95c1('0xa7'),_0x2b088a[_0x95c1('0x47')],_0x95c1('0xaa'));}emitVoiceQueueSummary(_0x2b088a);}}function notSendMessagesCampaign(_0x3248ba){if(_0x3248ba['sendMessageOneNotActive']){if(_0x3248ba[_0x95c1('0x78')]===0x0){_0x3248ba[_0x95c1('0xa5')]=![];_0x3248ba[_0x95c1('0x4b')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x95c1('0x9d')](_0x95c1('0xab'),_0x3248ba[_0x95c1('0x47')],_0x95c1('0xa8'));}else{_0x3248ba[_0x95c1('0x4b')]='IS_DISACTIVED';loggerSyncQueueSummary['error'](_0x95c1('0xab'),_0x3248ba['name'],'is\x20disactive');}emitCampaignSummary(_0x3248ba);}}function createObjHistory(_0x191948,_0x7e96bc,_0x1d685c,_0x1292bd,_0x48a91b){_0x191948[_0x95c1('0x4b')]=_0x1d685c;var _0x458cdc=new Action(_0x191948,_0x7e96bc);var _0x340843=new History(_0x458cdc);_0x340843[_0x95c1('0xac')]=_0x1292bd;_0x340843[_0x95c1('0xad')]=_0x48a91b;_0x340843[_0x95c1('0xae')]=_0x458cdc[_0x95c1('0xaf')];return _0x340843;}Dialer[_0x95c1('0x1f')][_0x95c1('0x44')]=function(){var _0x3da936=this;setInterval(function(){_0x3da936[_0x95c1('0xb0')](_0x3da936[_0x95c1('0x2b')],_0x95c1('0xb1'));_0x3da936[_0x95c1('0xb0')](_0x3da936[_0x95c1('0x29')],'[actions]');},0x32c8);};Dialer[_0x95c1('0x1f')][_0x95c1('0xb0')]=function(_0x15f91b,_0x25f8dc){var _0x1c8287=this;for(var _0x4f10f5 in _0x15f91b){if(typeof _0x15f91b[_0x4f10f5]!==_0x95c1('0xa0')){this[_0x95c1('0x22')][_0x95c1('0xb2')](function(){if(!_['isNil'](_0x15f91b[_0x4f10f5])){return ami[_0x95c1('0xb3')]({'action':_0x95c1('0xb4'),'channel':_0x15f91b[_0x4f10f5][_0x95c1('0xb5')]})[_0x95c1('0xb6')](function(_0x574da8){if(_0x574da8[_0x95c1('0x4b')]===_0x95c1('0xb7')){setTimeout(function(){if(_0x15f91b[_0x4f10f5]&&_0x15f91b[_0x4f10f5]['type']!==_0x95c1('0x9a')){_0x1c8287[_0x95c1('0xb8')](_0x1c8287[_0x95c1('0x24')][_0x15f91b[_0x4f10f5][_0x95c1('0xb9')]]);logger[_0x95c1('0x9d')]('[Dialer][checkChannel]',_0x25f8dc,_0x4f10f5,_0x15f91b[_0x4f10f5][_0x95c1('0xb9')]);delete _0x15f91b[_0x4f10f5];}if(_0x15f91b[_0x4f10f5]&&_0x15f91b[_0x4f10f5][_0x95c1('0x54')]===_0x95c1('0x9a')){_0x1c8287[_0x95c1('0xb8')](_0x1c8287[_0x95c1('0xba')][_0x15f91b[_0x4f10f5][_0x95c1('0xb9')]]);logger[_0x95c1('0x9d')](_0x95c1('0xbb'),_0x25f8dc,_0x4f10f5,_0x15f91b[_0x4f10f5][_0x95c1('0xb9')]);delete _0x15f91b[_0x4f10f5];}},0x2328);}});}});}}};Dialer[_0x95c1('0x1f')]['countReScheduled']=function(_0x79027f){return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopper['countReScheduled'](_0x79027f))[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xbe')));};Dialer[_0x95c1('0x1f')]['checkIsBlackList']=function(_0x52e2b9){return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopperBlack['checkIsBlackList'](_0x52e2b9))['catch'](loggerCatch(_0x95c1('0xbf')));};Dialer[_0x95c1('0x1f')][_0x95c1('0xc0')]=function(_0x6207e8){return BPromise['resolve']()[_0x95c1('0xbd')](cmHopperBlack[_0x95c1('0xc0')](_0x6207e8))[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xc1')));};Dialer[_0x95c1('0x1f')][_0x95c1('0xc2')]=function(_0x3f9a07){return BPromise[_0x95c1('0xbc')]()['then'](cmHopperHistory[_0x95c1('0xc3')](_0x3f9a07))[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xc4')));};Dialer[_0x95c1('0x1f')][_0x95c1('0xc5')]=function(_0x44e46e){return BPromise['resolve']()[_0x95c1('0xbd')](cmHopper[_0x95c1('0xc5')](_0x44e46e))['catch'](loggerCatch(_0x95c1('0xc6')));};Dialer[_0x95c1('0x1f')][_0x95c1('0xc7')]=function(_0x2a6f4b,_0x440675,_0x2e6fb2){return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopper[_0x95c1('0xc7')](_0x2a6f4b,_0x440675,_0x2e6fb2))[_0x95c1('0xb6')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x95c1('0x1f')]['getContactDialer']=function(_0x37f253,_0xc9ed08,_0x2a5bf6,_0x5b7e1c,_0x3ed405){return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopper['getContactDialer'](_0x37f253,_0xc9ed08,_0x2a5bf6,_0x5b7e1c))[_0x95c1('0xb6')](function(_0xf89395){_0x3ed405['temp']-=_0x2a5bf6;_0x3ed405['temp']=_0x3ed405[_0x95c1('0xc8')]>0x0?_0x3ed405['temp']:0x0;loggerCatch(_0x95c1('0xc9'))(_0xf89395);});};Dialer[_0x95c1('0x1f')][_0x95c1('0xca')]=function(_0x4771f0,_0x14e8de,_0x1a88b3,_0x111da4){return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopper['getContactDialerIvr'](_0x4771f0,_0x14e8de,_0x1a88b3))[_0x95c1('0xb6')](function(_0x1e725d){_0x111da4[_0x95c1('0xc8')]-=_0x14e8de;_0x111da4[_0x95c1('0xc8')]=_0x111da4['temp']>0x0?_0x111da4[_0x95c1('0xc8')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x1e725d);});};Dialer[_0x95c1('0x1f')]['getVoiceQueueRtPauses']=function(_0x298249){return BPromise['resolve']()[_0x95c1('0xbd')](voiceQueueRt['getVoiceQueueRtPauses'](_0x298249))[_0x95c1('0xb6')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer[_0x95c1('0x1f')][_0x95c1('0xcb')]=function(_0x3f6a9e){return BPromise[_0x95c1('0xbc')]()['then'](cmHopper['moveContactManagedDialer'](_0x3f6a9e))[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xcc')));};Dialer[_0x95c1('0x1f')][_0x95c1('0xcd')]=function(_0x39e3b1){return BPromise['resolve']()['then'](cmHopperHistory[_0x95c1('0xcd')](_0x39e3b1))['catch'](loggerCatch(_0x95c1('0xce')));};Dialer[_0x95c1('0x1f')][_0x95c1('0xb8')]=function(_0x23fad0){if(!_[_0x95c1('0x8e')](_0x23fad0)&&_0x23fad0!==null){if(typeof _0x23fad0['originated']!==_0x95c1('0xa0')){if(_0x23fad0[_0x95c1('0x78')]>0x0){_0x23fad0['originated']-=0x1;}else{logger['error'](_0x95c1('0xcf'));}}}else{logger['error'](_0x95c1('0xd0'));}};Dialer[_0x95c1('0x1f')][_0x95c1('0xd1')]=function(_0x519cd4,_0x41aeb3){var _0x5ad057=this;return function(_0x132e48){_0x5ad057[_0x95c1('0xb8')](_0x41aeb3);logger['error'](_0x519cd4,util[_0x95c1('0x9e')](_0x132e48,{'showHidden':![],'depth':null}));};};Dialer[_0x95c1('0x1f')][_0x95c1('0xd2')]=function(_0x3b7f46,_0x5375e1,_0x2280f8){var _0x47f2a3={'state':0x19,'statedesc':_0x95c1('0xd3')};this[_0x95c1('0xb8')](_0x5375e1);this[_0x95c1('0xd4')](_[_0x95c1('0xd5')](_0x47f2a3,_[_0x95c1('0xd6')](_0x2280f8,[_0x95c1('0xd7'),_0x95c1('0xd8'),_0x95c1('0xd9'),_0x95c1('0xda'),_0x95c1('0xdb')])),_0x95c1('0xdc'),_0x95c1('0xdd'));logger[_0x95c1('0x9d')](_0x3b7f46);};Dialer[_0x95c1('0x1f')]['isSuccess']=function(_0xf62f3a){return _0xf62f3a===_0x95c1('0xde');};Dialer[_0x95c1('0x1f')][_0x95c1('0xdf')]=function(_0x189e76){return!_['isUndefined'](_0x189e76)&&_0x189e76&&!_[_0x95c1('0x8e')](_0x189e76[_0x95c1('0x47')])&&!_['isUndefined'](_0x189e76[_0x95c1('0x7e')])&&_0x189e76[_0x95c1('0x7e')]&&(this[_0x95c1('0x26')][util[_0x95c1('0x80')](_0x95c1('0xe0'),_0x189e76[_0x95c1('0x47')])][_0x95c1('0xb4')]===_0x95c1('0xe1')||this[_0x95c1('0x26')][util[_0x95c1('0x80')](_0x95c1('0xe0'),_0x189e76[_0x95c1('0x47')])]['status']===_0x95c1('0xe2'));};Dialer[_0x95c1('0x1f')][_0x95c1('0xd4')]=function(_0x354a52,_0x33684e,_0x205bbf){this['createHistory'](_0x354a52)['catch'](loggerCatch(_0x33684e));this['moveContactManagedDialer'](_0x354a52)[_0x95c1('0xb6')](loggerCatch(_0x205bbf));};Dialer[_0x95c1('0x1f')][_0x95c1('0x3f')]=function(_0x1a6c04){var _0x2a525f=this[_0x95c1('0x2b')][_0x1a6c04[_0x95c1('0xe3')]];var _0x3b3eb1;if(!_[_0x95c1('0xe4')](_0x1a6c04)&&!_[_0x95c1('0xe4')](_0x1a6c04[_0x95c1('0xe5')])&&!_[_0x95c1('0xe4')](_0x1a6c04[_0x95c1('0xe5')][_0x95c1('0xe6')])&&_0x1a6c04[_0x95c1('0xe7')]===_0x95c1('0xe8')&&_0x2a525f){if(_0x2a525f['type']!==_0x95c1('0x9a')&&this['voiceQueues'][_0x2a525f[_0x95c1('0xb9')]][_0x95c1('0xe9')]&&_0x1a6c04[_0x95c1('0xea')]===_0x95c1('0xeb')){delete this[_0x95c1('0x2b')][_0x1a6c04[_0x95c1('0xe3')]];this['updateOriginated'](this[_0x95c1('0x24')][_0x2a525f[_0x95c1('0xb9')]]);this['voiceQueues'][_0x2a525f[_0x95c1('0xb9')]][_0x95c1('0xec')]+=0x1;this[_0x95c1('0x24')][_0x2a525f[_0x95c1('0xb9')]]['outboundAnswerAgiCallsDay']+=0x1;_0x3b3eb1=new Hangup(_0x2a525f,_0x1a6c04);_0x3b3eb1['state']=0x12;_0x3b3eb1[_0x95c1('0xad')]=_0x95c1('0xed');_0x3b3eb1[_0x95c1('0xee')]=_0x95c1('0xef');ami[_0x95c1('0x53')](_0x95c1('0xf0'),ut[_0x95c1('0xf1')](_0x3b3eb1,_0x95c1('0xf2')));this[_0x95c1('0xd4')](_0x3b3eb1,_0x95c1('0xf3'),_0x95c1('0xf4'));}if(_0x2a525f[_0x95c1('0x54')]!==_0x95c1('0x9a')&&this[_0x95c1('0x24')][_0x2a525f[_0x95c1('0xb9')]][_0x95c1('0xe9')]&&_0x1a6c04['value']==='MACHINE'){var _0x2368fd=this;return new BPromise(function(_0x454a78,_0x6294f9){delete _0x2368fd['uniqueId'][_0x1a6c04['uniqueid']];_0x2368fd[_0x95c1('0xb8')](_0x2368fd[_0x95c1('0x24')][_0x2a525f['queue']]);_0x2368fd[_0x95c1('0x24')][_0x2a525f[_0x95c1('0xb9')]][_0x95c1('0xec')]+=0x1;_0x2368fd[_0x95c1('0x24')][_0x2a525f['queue']][_0x95c1('0x67')]+=0x1;var _0x274a18=_0x2368fd[_0x95c1('0x24')][_0x2a525f['queue']];var _0x1ecea3=new Hangup(_0x2a525f,_0x1a6c04);_0x1ecea3['state']=0x13;_0x1ecea3[_0x95c1('0xad')]=_0x95c1('0xf5');_0x1ecea3[_0x95c1('0xee')]=_0x95c1('0xef');_0x1ecea3[_0x95c1('0xf6')]+=0x1;_0x1ecea3[_0x95c1('0xf7')]+=0x1;_0x1ecea3[_0x95c1('0xf2')]=!![];ami[_0x95c1('0x53')](_0x95c1('0xf0'),ut[_0x95c1('0xf1')](_0x1ecea3,_0x95c1('0xf2')));_0x2368fd[_0x95c1('0xcd')](_0x1ecea3)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xf8')));if(_0x1ecea3[_0x95c1('0xf9')]+_0x1ecea3[_0x95c1('0xfa')]+_0x1ecea3[_0x95c1('0xfb')]+_0x1ecea3[_0x95c1('0xfc')]+_0x1ecea3[_0x95c1('0xfd')]+_0x1ecea3[_0x95c1('0xfe')]+_0x1ecea3[_0x95c1('0xf6')]+_0x1ecea3[_0x95c1('0xff')]>=_0x274a18[_0x95c1('0x100')]){_0x2368fd[_0x95c1('0x101')](_0x1ecea3,_0x454a78,_0x6294f9,_0x95c1('0x102'));}else{if(_0x1ecea3[_0x95c1('0xf6')]>=_0x274a18[_0x95c1('0x103')]){_0x2368fd[_0x95c1('0x104')](_0x1ecea3,_0x454a78,_0x6294f9,_0x95c1('0x105'));}else{_0x2368fd['rescheduleContact']({'active':![],'countmachineretry':_0x1ecea3[_0x95c1('0xf6')],'scheduledat':moment()[_0x95c1('0x106')](_0x274a18[_0x95c1('0x107')],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x1ecea3[_0x95c1('0xd7')],'ListId':_0x1ecea3[_0x95c1('0xd8')],'VoiceQueueId':_0x1ecea3['VoiceQueueId']||undefined,'CampaignId':_0x1ecea3[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x10a')));_0x454a78({'reschedule':0x1});}}});}if(_0x2a525f['type']===_0x95c1('0x9a')&&this[_0x95c1('0xba')][_0x2a525f[_0x95c1('0xb9')]]['dialAMDActive']&&_0x1a6c04[_0x95c1('0xea')]===_0x95c1('0xeb')){delete this[_0x95c1('0x2b')][_0x1a6c04[_0x95c1('0xe3')]];this[_0x95c1('0xb8')](this[_0x95c1('0xba')][_0x2a525f[_0x95c1('0xb9')]]);_0x3b3eb1=new Hangup(_0x2a525f,_0x1a6c04);_0x3b3eb1['state']=0x12;_0x3b3eb1[_0x95c1('0xad')]='HangupInAMD';_0x3b3eb1[_0x95c1('0xee')]=_0x95c1('0xef');ami['emit'](_0x95c1('0xf0'),ut['buildObj'](_0x3b3eb1,_0x95c1('0xf2')));this[_0x95c1('0xd4')](_0x3b3eb1,_0x95c1('0x10b'),_0x95c1('0x10c'));}if(_0x2a525f['type']===_0x95c1('0x9a')&&this[_0x95c1('0xba')][_0x2a525f['queue']]['dialAMDActive']&&_0x1a6c04[_0x95c1('0xea')]==='MACHINE'){var _0x2368fd=this;return new BPromise(function(_0x282526,_0x322d57){delete _0x2368fd[_0x95c1('0x2b')][_0x1a6c04[_0x95c1('0xe3')]];_0x2368fd[_0x95c1('0xb8')](_0x2368fd['campaigns'][_0x2a525f[_0x95c1('0xb9')]]);_0x2368fd[_0x95c1('0xba')][_0x2a525f[_0x95c1('0xb9')]][_0x95c1('0xec')]+=0x1;_0x2368fd[_0x95c1('0xba')][_0x2a525f[_0x95c1('0xb9')]][_0x95c1('0x67')]+=0x1;var _0x582bce=_0x2368fd[_0x95c1('0xba')][_0x2a525f['queue']];var _0x38262a=new Hangup(_0x2a525f,_0x1a6c04);_0x38262a[_0x95c1('0xac')]=0x13;_0x38262a[_0x95c1('0xad')]='Machine';_0x38262a[_0x95c1('0xee')]='AMD';_0x38262a[_0x95c1('0xf6')]+=0x1;_0x38262a[_0x95c1('0xf7')]+=0x1;_0x38262a[_0x95c1('0xf2')]=!![];ami[_0x95c1('0x53')](_0x95c1('0xf0'),ut['buildObj'](_0x38262a,'amd'));_0x2368fd['createHistory'](_0x38262a)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xf8')));if(_0x38262a['countbusyretry']+_0x38262a[_0x95c1('0xfa')]+_0x38262a[_0x95c1('0xfb')]+_0x38262a['countnosuchnumberretry']+_0x38262a['countdropretry']+_0x38262a[_0x95c1('0xfe')]+_0x38262a[_0x95c1('0xf6')]+_0x38262a[_0x95c1('0xff')]>=_0x582bce['dialGlobalMaxRetry']){_0x2368fd[_0x95c1('0x101')](_0x38262a,_0x282526,_0x322d57,'reason19\x20machine....');}else{if(_0x38262a[_0x95c1('0xf6')]>=_0x582bce[_0x95c1('0x103')]){_0x2368fd[_0x95c1('0x104')](_0x38262a,_0x282526,_0x322d57,_0x95c1('0x105'));}else{_0x2368fd[_0x95c1('0xc5')]({'active':![],'countmachineretry':_0x38262a[_0x95c1('0xf6')],'scheduledat':moment()[_0x95c1('0x106')](_0x582bce[_0x95c1('0x107')],_0x95c1('0x108'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x38262a[_0x95c1('0xd7')],'ListId':_0x38262a[_0x95c1('0xd8')],'VoiceQueueId':_0x38262a[_0x95c1('0xda')]||undefined,'CampaignId':_0x38262a['CampaignId']||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x10a')));_0x282526({'reschedule':0x1});}}});}}};Dialer['prototype']['syncHangup']=function(_0x36e718){var _0x3b8205=this[_0x95c1('0x2b')][_0x36e718['uniqueid']];var _0xb279d0=this;var _0x174284;if(_0x3b8205&&_0x3b8205[_0x95c1('0x54')]===_0x95c1('0x9a')){delete this[_0x95c1('0x2b')][_0x36e718[_0x95c1('0xe3')]];this[_0x95c1('0xb8')](this[_0x95c1('0xba')][_0x3b8205[_0x95c1('0xb9')]]);this[_0x95c1('0xba')][_0x3b8205[_0x95c1('0xb9')]][_0x95c1('0x10d')]+=0x1;_0x174284=new Hangup(_0x3b8205,_0x36e718);this['createHistory'](_0x174284)[_0x95c1('0xb6')](loggerCatch('[syncHangupIvr][createHistory]'));this['moveContactManagedDialer'](_0x174284)[_0x95c1('0xb6')](loggerCatch('[syncHangupIvr]'));}if(_0x3b8205&&_0x3b8205[_0x95c1('0x54')]!==_0x95c1('0x9a')&&isNotNull(this[_0x95c1('0x24')][_0x3b8205[_0x95c1('0xb9')]][_0x95c1('0x10e')])){delete this[_0x95c1('0x2b')][_0x36e718[_0x95c1('0xe3')]];this[_0x95c1('0xb8')](this[_0x95c1('0x24')][_0x3b8205[_0x95c1('0xb9')]]);this['voiceQueues'][_0x3b8205[_0x95c1('0xb9')]][_0x95c1('0xec')]+=0x1;this[_0x95c1('0x24')][_0x3b8205['queue']][_0x95c1('0x67')]+=0x1;_0x174284=new Hangup(_0x3b8205,_0x36e718);_0x174284[_0x95c1('0xac')]=0x10;_0x174284[_0x95c1('0xad')]='AnswerAGI';_0x174284[_0x95c1('0xee')]=_0x95c1('0x10f');this[_0x95c1('0xcd')](_0x174284)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x110')));this['moveContactManagedDialer'](_0x174284)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x111')));}if(_0x3b8205&&_0x3b8205[_0x95c1('0x54')]!==_0x95c1('0x9a')&&!isNotNull(this[_0x95c1('0x24')][_0x3b8205[_0x95c1('0xb9')]][_0x95c1('0x10e')])){delete this[_0x95c1('0x2b')][_0x36e718['uniqueid']];this[_0x95c1('0xb8')](this['voiceQueues'][_0x3b8205[_0x95c1('0xb9')]]);this[_0x95c1('0x24')][_0x3b8205['queue']][_0x95c1('0x112')]+=0x1;_0x174284=new Hangup(_0x3b8205,_0x36e718);_0x174284[_0x95c1('0xac')]=0xc;_0x174284[_0x95c1('0xad')]=_0x36e718[_0x95c1('0x113')];_0x174284[_0x95c1('0xee')]=_0x95c1('0x114');this[_0x95c1('0xcd')](_0x174284)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x110')));this[_0x95c1('0xcb')](_0x174284)['catch'](loggerCatch(_0x95c1('0x111')));}};Dialer['prototype'][_0x95c1('0x39')]=function(_0x3e6af0){var _0x351383=this[_0x95c1('0x2b')][_0x3e6af0[_0x95c1('0xe3')]];var _0xb9fce2=this;if(this[_0x95c1('0x24')][_0x3e6af0[_0x95c1('0xb9')]]){if(_0x351383&&_0x351383[_0x95c1('0x54')]!==_0x95c1('0x9a')){delete this[_0x95c1('0x2b')][_0x3e6af0[_0x95c1('0xe3')]];this[_0x95c1('0x24')][_0x3e6af0[_0x95c1('0xb9')]][_0x95c1('0xec')]+=0x1;var _0x37bc34=new AgentComplete(_0x351383,_0x3e6af0);if(_0x3e6af0[_0x95c1('0x115')]===_0x95c1('0x116')){_0x37bc34[_0x95c1('0x117')]=this['voiceQueues'][_0x3e6af0[_0x95c1('0xb9')]][_0x95c1('0x118')]&&this[_0x95c1('0x24')][_0x3e6af0[_0x95c1('0xb9')]][_0x95c1('0x119')]?moment()['format'](_0x95c1('0x109')):undefined;}this[_0x95c1('0xcd')](_0x37bc34)[_0x95c1('0xb6')](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x37bc34)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x11a')));}}};Dialer['prototype'][_0x95c1('0x32')]=function(_0x18d682){if(this[_0x95c1('0x24')][_0x18d682['queue']]){if(this[_0x95c1('0x2b')][_0x18d682['uniqueid']]&&this[_0x95c1('0x2b')][_0x18d682['uniqueid']][_0x95c1('0x54')]!==_0x95c1('0x9a')){this[_0x95c1('0xb8')](this['voiceQueues'][_0x18d682[_0x95c1('0xb9')]]);this[_0x95c1('0x2b')][_0x18d682[_0x95c1('0xe3')]][_0x95c1('0x11b')]=moment()[_0x95c1('0x80')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x95c1('0x1f')][_0x95c1('0x11c')]=function(_0x35d386){this[_0x95c1('0xcd')](_0x35d386)['catch'](loggerCatch(_0x95c1('0x11d')));this[_0x95c1('0xcb')](_0x35d386)['catch'](loggerCatch(_0x95c1('0x11e')));};Dialer[_0x95c1('0x1f')][_0x95c1('0x34')]=function(_0x15283b){var _0x48fe06=this[_0x95c1('0x2b')][_0x15283b[_0x95c1('0xe3')]];var _0x3875cb=this;if(this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]]){if(_0x48fe06&&_0x48fe06[_0x95c1('0x54')]!=='ivr'){delete this[_0x95c1('0x2b')][_0x15283b[_0x95c1('0xe3')]];this[_0x95c1('0xb8')](this[_0x95c1('0x24')][_0x15283b['queue']]);_0x48fe06[_0x95c1('0x11f')]=moment()[_0x95c1('0x80')](_0x95c1('0x109'));var _0x46ea48=new QueueCallerAbandon(_0x48fe06,_0x15283b);if(getSeconds(_0x48fe06[_0x95c1('0x11f')],_0x48fe06[_0x95c1('0x120')])>=_0x48fe06['dialQueueTimeout']){this['voiceQueues'][_0x15283b[_0x95c1('0xb9')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]][_0x95c1('0x6c')]+=0x1;this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x46ea48['state']=0xa;_0x46ea48[_0x95c1('0xad')]=_0x95c1('0x121');_0x46ea48[_0x95c1('0x122')]=_0x95c1('0x123');_0x46ea48[_0x95c1('0x117')]=this[_0x95c1('0x24')][_0x15283b['queue']]['dialQueueProject2']?moment()[_0x95c1('0x80')](_0x95c1('0x109')):undefined;_0x46ea48[_0x95c1('0xfd')]+=0x1;_0x46ea48[_0x95c1('0xf7')]+=0x1;if(_0x46ea48[_0x95c1('0xfd')]>=this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]][_0x95c1('0x124')]){this[_0x95c1('0x11c')](_0x46ea48);}else{this[_0x95c1('0xc5')]({'active':![],'countdropretry':_0x46ea48['countdropretry'],'scheduledat':moment()[_0x95c1('0x106')](this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]][_0x95c1('0x125')],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x48fe06[_0x95c1('0xd7')],'ListId':_0x48fe06[_0x95c1('0xd8')],'VoiceQueueId':_0x48fe06[_0x95c1('0xda')]||undefined,'CampaignId':_0x48fe06[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x126')));var _0x438906=new History(_0x46ea48);_0x438906[_0x95c1('0xac')]=0xa;_0x438906['statedesc']=_0x95c1('0x121');_0x438906[_0x95c1('0xaf')]=moment()[_0x95c1('0x80')](_0x95c1('0x109'));_0x438906[_0x95c1('0xae')]=_0x438906[_0x95c1('0xaf')];_0x438906[_0x95c1('0x127')]=_0x46ea48[_0x95c1('0x127')];_0x438906[_0x95c1('0x128')]=_0x46ea48[_0x95c1('0x128')];this[_0x95c1('0xcd')](_0x438906)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x129')));}}else{this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]][_0x95c1('0x6b')]+=0x1;_0x46ea48['state']=0xb;_0x46ea48[_0x95c1('0xad')]=_0x95c1('0x12a');_0x46ea48['dropreason']=_0x95c1('0x12b');_0x46ea48['countabandonedretry']+=0x1;_0x46ea48[_0x95c1('0xf7')]+=0x1;if(_0x46ea48['countabandonedretry']>=this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]][_0x95c1('0x12c')]){this[_0x95c1('0x11c')](_0x46ea48);}else{this[_0x95c1('0xc5')]({'active':![],'countabandonedretry':_0x46ea48[_0x95c1('0xfe')],'scheduledat':moment()['add'](this[_0x95c1('0x24')][_0x15283b[_0x95c1('0xb9')]]['dialAbandonedRetryFrequency'],_0x95c1('0x108'))[_0x95c1('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x48fe06['ContactId'],'ListId':_0x48fe06[_0x95c1('0xd8')],'VoiceQueueId':_0x48fe06[_0x95c1('0xda')]||undefined,'CampaignId':_0x48fe06[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x438906=new History(_0x46ea48);_0x438906[_0x95c1('0xac')]=0xb;_0x438906[_0x95c1('0xad')]=_0x95c1('0x12a');_0x438906['starttime']=moment()[_0x95c1('0x80')](_0x95c1('0x109'));_0x438906[_0x95c1('0xae')]=_0x438906[_0x95c1('0xaf')];_0x438906[_0x95c1('0x127')]=_0x46ea48[_0x95c1('0x127')];_0x438906[_0x95c1('0x128')]=_0x46ea48[_0x95c1('0x128')];this[_0x95c1('0xcd')](_0x438906)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0x95c1('0x1f')]['syncNewExten']=function(_0x22af24){if(this[_0x95c1('0x29')][_0x22af24[_0x95c1('0xe3')]]){this['actions'][_0x22af24[_0x95c1('0xe3')]][_0x95c1('0xb5')]=_0x22af24[_0x95c1('0xb5')];}if(this[_0x95c1('0x2b')][_0x22af24['uniqueid']]){this[_0x95c1('0x2b')][_0x22af24['uniqueid']][_0x95c1('0xb5')]=_0x22af24[_0x95c1('0xb5')];}};Dialer['prototype']['syncQueueMember']=function(_0x313d87){if(strategy[this[_0x95c1('0x24')][this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]]['queue']][_0x95c1('0x56')]]===_0x95c1('0x12e')){if(this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]]&&_[_0x95c1('0xe4')](this['actions'][_0x313d87[_0x95c1('0x12d')]]['locked'])&&_0x313d87[_0x95c1('0xb4')]==='1'&&_0x313d87[_0x95c1('0x12f')]==='0'){if(this[_0x95c1('0x25')][_0x313d87[_0x95c1('0x130')]]){if(!this[_0x95c1('0x25')][_0x313d87['stateinterface']][_0x95c1('0x131')]){this[_0x95c1('0x25')][_0x313d87[_0x95c1('0x130')]][_0x95c1('0x131')]=!![];this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]][_0x95c1('0x131')]=!![];this['actions'][_0x313d87['actionid']][_0x95c1('0x130')]=_0x313d87[_0x95c1('0x130')];}}}}else if((strategy[this[_0x95c1('0x24')][this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]][_0x95c1('0xb9')]]['strategy']]||_0x95c1('0x132'))==='rrmemory'){if(this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]]){if(this[_0x95c1('0x25')][_0x313d87['stateinterface']]){this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]][_0x95c1('0x130')]=_0x313d87[_0x95c1('0x130')];if(_[_0x95c1('0xe4')](this[_0x95c1('0x133')][this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]][_0x95c1('0xb9')]])){this[_0x95c1('0x133')][this[_0x95c1('0x29')][_0x313d87[_0x95c1('0x12d')]][_0x95c1('0xb9')]]=[];}this[_0x95c1('0x133')][this['actions'][_0x313d87[_0x95c1('0x12d')]]['queue']][_0x95c1('0x134')](_['merge'](_[_0x95c1('0xd6')](this[_0x95c1('0x29')][_0x313d87['actionid']],[_0x95c1('0x135'),_0x95c1('0x130')]),{'status':_0x313d87[_0x95c1('0xb4')],'paused':_0x313d87['paused']}));}}}};function unlockQueueStatus(_0x5e5d0b,_0x9ee318){setTimeout(function(){if(_[_0x95c1('0x8e')](_0x5e5d0b[_0x95c1('0x136')])){loggerBooked[_0x95c1('0x9d')](_0x95c1('0x137'),_0x9ee318);}_0x5e5d0b[_0x95c1('0x136')]=!![];loggerBooked[_0x95c1('0x85')](_0x95c1('0x138'),_0x9ee318,JSON[_0x95c1('0x51')](_[_0x95c1('0xd6')](_0x5e5d0b,[_0x95c1('0x47'),_0x95c1('0x136')])));},0x1f3);}Dialer[_0x95c1('0x1f')][_0x95c1('0x139')]=function(_0x528453){var _0x17120c=this;var _0x3c5b09=_0x17120c[_0x95c1('0x24')][_0x17120c[_0x95c1('0x29')][_0x528453['actionid']]['queue']];if(strategy[this[_0x95c1('0x24')][this['actions'][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]][_0x95c1('0x56')]]===_0x95c1('0x12e')){if(this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]]&&this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]]['stateinterface']){this[_0x95c1('0x23')][_0x95c1('0x13a')](this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]]['idHopper'],this['actions'][_0x528453['actionid']][_0x95c1('0x130')])[_0x95c1('0xb6')](function(_0x2e7a34){logger[_0x95c1('0x9d')](_0x95c1('0x13b'),util['inspect'](_0x2e7a34,{'showHidden':![],'depth':null}));})[_0x95c1('0x21')](function(){_0x17120c[_0x95c1('0xb8')](_0x17120c[_0x95c1('0x24')][_0x17120c[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]);_0x17120c[_0x95c1('0x25')][_0x17120c[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0x130')]][_0x95c1('0x131')]=![];delete _0x17120c[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]];unlockQueueStatus(_0x3c5b09);});}else{this[_0x95c1('0xb8')](this[_0x95c1('0x24')][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd7')],'ListId':this['actions'][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd8')],'VoiceQueueId':this['actions'][_0x528453['actionid']][_0x95c1('0xda')]||undefined,'CampaignId':this[_0x95c1('0x29')][_0x528453['actionid']][_0x95c1('0xdb')]||undefined})['catch'](loggerCatch(_0x95c1('0x13c')));delete this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]];unlockQueueStatus(_0x3c5b09);}}else if((strategy[this[_0x95c1('0x24')][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]['strategy']]||_0x95c1('0x132'))===_0x95c1('0x132')){var _0xbddaaa;if(this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]]&&!_[_0x95c1('0x84')](this[_0x95c1('0x133')][this['actions'][_0x528453['actionid']][_0x95c1('0xb9')]])){if(this[_0x95c1('0x30')][_0x17120c[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]){this[_0x95c1('0x30')][_0x17120c['actions'][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]=this[_0x95c1('0x30')][this['actions'][_0x528453['actionid']][_0x95c1('0xb9')]]?this[_0x95c1('0x30')][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]:this['queueBooked'][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]?this[_0x95c1('0x133')][this[_0x95c1('0x29')][_0x528453['actionid']][_0x95c1('0xb9')]][_0x95c1('0x13d')]||0x0:0x0;}this['queueBooked'][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]][_0x95c1('0x13d')]=this[_0x95c1('0x30')][this[_0x95c1('0x29')][_0x528453['actionid']][_0x95c1('0xb9')]];for(var _0xdbb817=0x0;_0xdbb817<this[_0x95c1('0x133')][this['actions'][_0x528453['actionid']]['queue']][_0x95c1('0x9f')];_0xdbb817+=0x1){_0xbddaaa=rr(this[_0x95c1('0x133')][this['actions'][_0x528453['actionid']][_0x95c1('0xb9')]]);this['queueBookedRR'][_0x17120c[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]=this[_0x95c1('0x133')][this['actions'][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]['_rr'];if(_0xbddaaa[_0x95c1('0xb4')]==='1'&&_0xbddaaa[_0x95c1('0x12f')]==='0'){break;}}if(!_[_0x95c1('0xe4')](_0xbddaaa)){this[_0x95c1('0x25')][_0xbddaaa[_0x95c1('0x130')]][_0x95c1('0x13e')]=_[_0x95c1('0x8e')](this['agents'][_0xbddaaa['stateinterface']]['unlockRR'])?!![]:this['agents'][_0xbddaaa[_0x95c1('0x130')]]['unlockRR'];}loggerBooked[_0x95c1('0x85')](_0x95c1('0x13f'),_0x528453[_0x95c1('0x12d')],_0x95c1('0x140'),JSON[_0x95c1('0x51')](_['pick'](this[_0x95c1('0x25')][_0xbddaaa['stateinterface']],['name',_0x95c1('0x13e')])),_0x95c1('0x141'),JSON[_0x95c1('0x51')](_0xbddaaa[_0x95c1('0x135')]));if(!_['isNil'](_0xbddaaa)&&_0xbddaaa[_0x95c1('0xb4')]==='1'&&_0xbddaaa[_0x95c1('0x12f')]==='0'&&this[_0x95c1('0x25')][_0xbddaaa[_0x95c1('0x130')]]['unlockRR']){this[_0x95c1('0x25')][_0xbddaaa[_0x95c1('0x130')]][_0x95c1('0x13e')]=![];this[_0x95c1('0x133')][_0x17120c[_0x95c1('0x29')][_0x528453['actionid']][_0x95c1('0xb9')]]=[];this[_0x95c1('0x23')]['run'](_0xbddaaa[_0x95c1('0x135')],_0xbddaaa['stateinterface'])[_0x95c1('0xb6')](function(_0x553c1d){logger[_0x95c1('0x9d')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x95c1('0x9e')](_0x553c1d,{'showHidden':![],'depth':null}));})['finally'](function(){_0x17120c[_0x95c1('0xb8')](_0x17120c['voiceQueues'][_0x17120c[_0x95c1('0x29')][_0x528453['actionid']]['queue']]);setTimeout(function(){_0x17120c['agents'][_0xbddaaa[_0x95c1('0x130')]][_0x95c1('0x13e')]=!![];loggerBooked['info'](_0x95c1('0x142'),_0x528453['actionid'],_0x95c1('0x140'),JSON['stringify'](_[_0x95c1('0xd6')](_0x17120c[_0x95c1('0x25')][_0xbddaaa[_0x95c1('0x130')]],[_0x95c1('0x47'),_0x95c1('0x13e')])),_0x95c1('0x141'),JSON[_0x95c1('0x51')](_0xbddaaa[_0x95c1('0x135')]));},0xc7);delete _0x17120c[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]];unlockQueueStatus(_0x3c5b09,_0x528453['actionid']);});}else{loggerBooked[_0x95c1('0x85')](_0x95c1('0x143'));this[_0x95c1('0xb8')](this[_0x95c1('0x24')][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xb9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd7')],'ListId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd8')],'VoiceQueueId':this['actions'][_0x528453['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0x95c1('0x29')][_0x528453['actionid']]['CampaignId']||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x13c')));delete this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]];unlockQueueStatus(_0x3c5b09);}}else{loggerBooked['info'](_0x95c1('0x144'));this[_0x95c1('0xb8')](this[_0x95c1('0x24')][this['actions'][_0x528453['actionid']][_0x95c1('0xb9')]]);this[_0x95c1('0xc5')]({'active':![],'ContactId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd7')],'ListId':this['actions'][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd8')],'VoiceQueueId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xdb')]||undefined})['catch'](loggerCatch(_0x95c1('0x145')));delete this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]];unlockQueueStatus(_0x3c5b09);}}else{loggerBooked[_0x95c1('0x85')](_0x95c1('0x146'));this['updateOriginated'](this[_0x95c1('0x24')][this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]]['queue']]);this[_0x95c1('0xc5')]({'active':![],'ContactId':this['actions'][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd7')],'ListId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xd8')],'VoiceQueueId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xda')]||undefined,'CampaignId':this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]][_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x95c1('0x29')][_0x528453[_0x95c1('0x12d')]];unlockQueueStatus(_0x3c5b09);}};Dialer[_0x95c1('0x1f')]['loopCampaigns']=function(){var _0x598296=this;return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopper[_0x95c1('0x147')]({}))['then'](function(){setInterval(function(){_0x598296[_0x95c1('0x148')]();},0x3e8);});};Dialer['prototype'][_0x95c1('0x149')]=function(_0x273442){var _0x537611=this;return function(){if(!_0x537611[_0x95c1('0xdf')](_0x273442[_0x95c1('0x7d')])){if(!_0x537611[_0x95c1('0xdf')](_0x273442['TrunkBackup'])){_0x273442[_0x95c1('0x4b')]=_0x95c1('0x14a');throw _0x273442[_0x95c1('0x47')]+_0x95c1('0x14b');}}};};Dialer['prototype'][_0x95c1('0x14c')]=function(_0x237958,_0x3090e5,_0x1d114c,_0x5607be){var _0x5beb1a=this;return function(){var _0x5452cd=!![];return _0x5beb1a[_0x95c1('0x14d')](_0x237958,_0x3090e5,_0x1d114c,_0x5607be,_0x5452cd);};};Dialer['prototype'][_0x95c1('0x14e')]=function(_0x50beb6,_0x4914f3,_0x326dbb,_0xd1ff54){var _0x273f1a=this;return function(){var _0x32f60c=![];return _0x273f1a[_0x95c1('0x14d')](_0x50beb6[_0x95c1('0x4d')],_0x4914f3,_0x326dbb,_0xd1ff54,_0x32f60c);};};Dialer['prototype'][_0x95c1('0x14d')]=function(_0x3c6ba3,_0x3785eb,_0x39b8a8,_0x1903f1,_0x5787be){var _0x46a3e3=[];return new BPromise(function(_0x48e36a,_0x335093){if(!isNotNull(_0x3c6ba3)){_0x1903f1[_0x95c1('0x4b')]=_0x95c1('0x4e');return _0x335093(msgResponse(_0x95c1('0x14d'),_0x95c1('0x14f'),_0x39b8a8+_0x95c1('0x150')));}if(_[_0x95c1('0x84')](_0x3c6ba3)){_0x1903f1[_0x95c1('0x4b')]=_0x95c1('0x151');return _0x335093(msgResponse('ifTime','Failure',_0x39b8a8+_0x95c1('0x152')));}if(_0x3785eb&&_[_0x95c1('0x8e')](config['timezones'][_0x3785eb])){_0x1903f1[_0x95c1('0x4b')]=_0x95c1('0x153');return _0x335093(msgResponse(_0x95c1('0x14d'),_0x95c1('0x14f'),_0x39b8a8+'\x20Timezone\x20unknow\x20'+_0x3785eb));}if(_[_0x95c1('0x154')](_0x3c6ba3)){for(var _0x5f382b=0x0;_0x5f382b<_0x3c6ba3['length'];_0x5f382b+=0x1){_0x46a3e3[_0x95c1('0x134')](ami['Action']({'action':'command','command':util[_0x95c1('0x80')]('iftime\x20%s,%s',_0x3c6ba3[_0x5f382b][_0x95c1('0x155')],!_['isUndefined'](config[_0x95c1('0x156')][_0x3785eb])?_0x3785eb:'')})['then'](function(_0x5618c9){return _0x5618c9['content'][_0x95c1('0x157')](_0x95c1('0x158'))>=0x0;})[_0x95c1('0xb6')](myreject(_0x335093)));}}else{_0x46a3e3[_0x95c1('0x134')](ami[_0x95c1('0xb3')]({'action':'command','command':util['format'](_0x95c1('0x159'),_0x3c6ba3,!_['isUndefined'](config[_0x95c1('0x156')][_0x3785eb])?_0x3785eb:'')})[_0x95c1('0xbd')](function(_0x4adc56){return _0x4adc56[_0x95c1('0x15a')][_0x95c1('0x157')]('true')>=0x0;})[_0x95c1('0xb6')](myreject(_0x335093)));}BPromise[_0x95c1('0x15b')](_0x46a3e3)['then'](function(_0x1b6caf){var _0x15347f=_[_0x95c1('0x15c')](_0x1b6caf);if(_0x15347f){return _0x48e36a(_0x15347f);}else{_0x1903f1[_0x95c1('0x4b')]=_0x5787be?_0x95c1('0x15d'):'INTERVAL_IS_OVERTIME';return _0x335093(msgResponse(_0x95c1('0x15e'),_0x95c1('0x14f'),_0x95c1('0x15f')+_0x5787be+'\x20'+_0x39b8a8+'\x20Interval\x20is\x20overtime:\x20'+util[_0x95c1('0x9e')](_0x3c6ba3,{'showHidden':![],'depth':null})+_0x95c1('0x160')+_0x3785eb));}})[_0x95c1('0xb6')](function(_0x2409e8){return _0x335093(msgResponse(_0x95c1('0x14d'),'Failure',JSON[_0x95c1('0x51')](_0x2409e8)));});});};Dialer['prototype'][_0x95c1('0x161')]=function(_0xf0f3d0){var _0x23ce82=this;return function(){switch(_0xf0f3d0['dialMethod']){case _0x95c1('0x162'):freeVariablesPredictive(_0xf0f3d0);_0x23ce82[_0x95c1('0x163')](_0xf0f3d0,0x1);break;case _0x95c1('0x164'):freeVariablesPredictive(_0xf0f3d0);_0x23ce82[_0x95c1('0x163')](_0xf0f3d0,_0xf0f3d0[_0x95c1('0x165')]);break;case'predictive':_0x23ce82[_0x95c1('0xc')](_0xf0f3d0);break;case'booked':freeVariablesPredictive(_0xf0f3d0);_0x23ce82[_0x95c1('0x163')](_0xf0f3d0,0x1);break;default:freeVariablesPredictive(_0xf0f3d0);logger['error'](_0x95c1('0x166'),_0xf0f3d0[_0x95c1('0x47')],_0x95c1('0x167'));}};};Dialer[_0x95c1('0x1f')][_0x95c1('0x168')]=function(_0x240a09){return BPromise[_0x95c1('0xbc')]()[_0x95c1('0xbd')](cmHopper[_0x95c1('0x169')](_0x240a09['id'],previewRecallmeReminderInterval))[_0x95c1('0xbd')](function(_0x3326f9){for(var _0x3adb18=0x0;_0x3adb18<_0x3326f9[_0x95c1('0x9f')];_0x3adb18++){var _0x5e603a=_0x3326f9[_0x3adb18][_0x95c1('0x16a')]['name'];if(_0x5e603a)io['to'](util[_0x95c1('0x80')](_0x95c1('0x16b'),_0x5e603a))[_0x95c1('0x53')]('user:dialPreviewRecallReminder',{'hopper':_0x3326f9[_0x3adb18]});}})[_0x95c1('0xb6')](function(_0x2bdbd5){});};Dialer[_0x95c1('0x1f')][_0x95c1('0x16c')]=function(_0x1576fd){var _0x207f9a=this;return function(){_0x207f9a[_0x95c1('0x16d')](_0x1576fd);};};Dialer['prototype']['syncQueueSummary']=function(_0x6da107){var _0x317c6a=this;if(isNotPreview(_0x6da107[_0x95c1('0x63')])){if(isVoiceQueueOutbound(_0x6da107[_0x95c1('0x54')])&&isActive(_0x6da107[_0x95c1('0x62')])){_0x6da107[_0x95c1('0xa5')]=!![];BPromise[_0x95c1('0xbc')]()['then'](checkIsLoggedIn(_0x6da107,_0x6da107[_0x95c1('0x59')]))['then'](checkIsActive(_0x6da107,_0x6da107[_0x95c1('0x62')]))[_0x95c1('0xbd')](checkInterval(_0x6da107))[_0x95c1('0xbd')](_0x317c6a[_0x95c1('0x149')](_0x6da107))[_0x95c1('0xbd')](_0x317c6a[_0x95c1('0x14c')](_0x6da107[_0x95c1('0x16e')],_0x6da107[_0x95c1('0x16f')],_0x6da107['name'],_0x6da107))[_0x95c1('0xbd')](_0x317c6a[_0x95c1('0x14e')](_0x6da107[_0x95c1('0x4a')],_0x6da107[_0x95c1('0x16f')],_0x6da107[_0x95c1('0x47')],_0x6da107))['then'](_0x317c6a[_0x95c1('0x161')](_0x6da107))[_0x95c1('0xb6')](loggerCatchQueueSummary('[syncQueueSummary]',_0x6da107));}else{notSendMessagesQueue(_0x6da107);}}else{freeVariablesPredictive(_0x6da107);if(_0x6da107['dialPreviewRecallmeReminder']){_0x317c6a[_0x95c1('0x168')](_0x6da107);}}};Dialer[_0x95c1('0x1f')]['syncCampaigns']=function(){var _0x3a24f4=this;var _0x4f3b5a;for(var _0x5e8fff in this['campaigns']){if(typeof this[_0x95c1('0xba')][_0x5e8fff]!==_0x95c1('0xa0')){_0x4f3b5a=this[_0x95c1('0xba')][_0x5e8fff];if(isCampaignIvr(_0x4f3b5a[_0x95c1('0x54')])&&isActive(_0x4f3b5a[_0x95c1('0x7e')])){_0x4f3b5a[_0x95c1('0xa5')]=!![];BPromise[_0x95c1('0xbc')]()['then'](checkIsActive(_0x4f3b5a,_0x4f3b5a[_0x95c1('0x7e')]))[_0x95c1('0xbd')](checkInterval(_0x4f3b5a))['then'](_0x3a24f4[_0x95c1('0x149')](_0x4f3b5a))[_0x95c1('0xbd')](_0x3a24f4[_0x95c1('0x14c')](_0x4f3b5a[_0x95c1('0x16e')],_0x4f3b5a[_0x95c1('0x16f')],_0x4f3b5a[_0x95c1('0x47')],_0x4f3b5a))[_0x95c1('0xbd')](_0x3a24f4[_0x95c1('0x14e')](_0x4f3b5a[_0x95c1('0x4a')],_0x4f3b5a[_0x95c1('0x16f')],_0x4f3b5a[_0x95c1('0x47')],_0x4f3b5a))[_0x95c1('0xbd')](_0x3a24f4[_0x95c1('0x16c')](_0x4f3b5a))[_0x95c1('0xb6')](loggerCatchQueueSummary(_0x95c1('0x170'),_0x4f3b5a));}else{notSendMessagesCampaign(_0x4f3b5a);}}}};function getCallerIdRandom(_0x311645,_0x321106){var _0x3f4ac7;var _0x257b26;var _0x39ad0d;if(_0x321106<=0x0){_0x321106=0x1;}_0x3f4ac7=new RegExp('\x5cw{0,'+_0x321106+'}$');_0x257b26=Math[_0x95c1('0x171')](0xa,_0x321106-0x1);_0x39ad0d=Math[_0x95c1('0x171')](0xa,_0x321106)-0x1;return util[_0x95c1('0x80')]('%s',_[_0x95c1('0x172')](_0x311645,_0x3f4ac7,_[_0x95c1('0x173')](_0x257b26,_0x39ad0d)));}function extractCalleridName(_0x4eb642){var _0x1507f5=_0x4eb642['match'](/"(.*?)"/);return _0x1507f5?_0x1507f5[0x1]:_0x4eb642;}function extractCalleridNumber(_0x4fcd7b){var _0x2f3faa=_0x4fcd7b[_0x95c1('0x174')](/<(.*?)>/);return _0x2f3faa?_0x2f3faa[0x1]:_0x4fcd7b;}Dialer[_0x95c1('0x1f')]['actionOriginate']=function(_0x4d9b98,_0x4a7659){var _0x141610=this;var _0x52497b=uuid['v4']();this[_0x95c1('0x29')][_0x52497b]=new Action(_0x4d9b98,_0x4a7659,_0x52497b);return new BPromise(function(_0x25f9a1,_0xc6da05){if(_[_0x95c1('0x8e')](_0x4d9b98)&&typeof _0x4d9b98!=='object'){return _0xc6da05(msgResponse(_0x95c1('0x175'),_0x95c1('0x14f'),_0x95c1('0x176')));}if(_[_0x95c1('0x8e')](_0x4a7659[_0x95c1('0x177')][_0x95c1('0x178')])||_0x4a7659[_0x95c1('0x177')][_0x95c1('0x178')]===null){return _0xc6da05(msgResponse('originate',_0x95c1('0x14f'),_0x95c1('0x179')));}var _0x470b84={'XMD-CALLERID':_0x141610[_0x95c1('0x29')][_0x52497b][_0x95c1('0x17a')](),'XMD-AGI':_0x4d9b98['dialQueueProject']?util[_0x95c1('0x80')](_0x95c1('0x17b'),ipAgi,_0x4d9b98[_0x95c1('0x10e')]):_0x95c1('0x17c'),'XMD-AGIAFTER':_0x4d9b98['dialQueueProject2']?util[_0x95c1('0x80')](_0x95c1('0x17b'),ipAgi,_0x4d9b98['dialQueueProject2']):_0x95c1('0x17c'),'XMD-QUEUE':_0x4d9b98['type']===_0x95c1('0x55')?util[_0x95c1('0x80')]('\x22%s,%s%s,,,%s\x22',_0x4d9b98[_0x95c1('0x47')],_0x4d9b98[_0x95c1('0x17d')]||'',_0x4d9b98[_0x95c1('0x119')]?'c':'',_0x4d9b98[_0x95c1('0x17e')]||0x3):'NONE','XMD-CONTACTID':_0x4a7659[_0x95c1('0xd7')],'XMD-CDRTYPE':_0x95c1('0x9'),'CALLERID(all)':_0x141610['actions'][_0x52497b][_0x95c1('0x17a')](),'XMD-AMD':_0x4d9b98[_0x95c1('0xe9')]?_0x95c1('0x17f'):_0x95c1('0x17c'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x4d9b98[_0x95c1('0xe9')]){_0x470b84[_0x95c1('0x180')]=_0x4d9b98[_0x95c1('0x181')]||0x9c4;_0x470b84[_0x95c1('0x182')]=_0x4d9b98['dialAMDGreeting']||0x5dc;_0x470b84[_0x95c1('0x183')]=_0x4d9b98[_0x95c1('0x184')]||0x320;_0x470b84['XMD-AMDTOTALANALYSISTIME']=_0x4d9b98[_0x95c1('0x185')]||0x1388;_0x470b84[_0x95c1('0x186')]=_0x4d9b98[_0x95c1('0x187')]||0x64;_0x470b84[_0x95c1('0x188')]=_0x4d9b98['dialAMDBetweenWordsSilence']||0x32;_0x470b84[_0x95c1('0x189')]=_0x4d9b98['dialAMDMaximumNumberOfWords']||0x3;_0x470b84[_0x95c1('0x18a')]=_0x4d9b98['dialAMDSilenceThreshold']||0x100;_0x470b84[_0x95c1('0x18b')]=_0x4d9b98['dialAMDMaximumWordLength']||0x1388;}if(_0x4d9b98['type']===_0x95c1('0x55')){_0x470b84[_0x95c1('0x18c')]=_0x4a7659[_0x95c1('0xda')];}else{_0x470b84[_0x95c1('0x18d')]=_0x4a7659[_0x95c1('0xdb')];}for(var _0x1747d0 in _0x4a7659[_0x95c1('0x177')]){if(typeof _0x4a7659[_0x95c1('0x177')][_0x1747d0]!==_0x95c1('0xa0')){if(isNotNull(_0x4a7659[_0x95c1('0x177')][_0x1747d0])&&_0x1747d0!=='id'&&_0x1747d0!==_0x95c1('0x18e')&&_0x1747d0!=='createdAt'&&_0x1747d0!==_0x95c1('0x18f')){_0x470b84[util[_0x95c1('0x80')](_0x95c1('0x190'),_0x95c1('0x191'),_['toUpper'](_0x1747d0))]=_0x4a7659[_0x95c1('0x177')][_0x1747d0];}}}var _0x194620=_0x141610[_0x95c1('0xdf')](_0x4d9b98['Trunk'])?getCallerId(_0x4d9b98[_0x95c1('0x7d')][_0x95c1('0x7f')],_0x4d9b98[_0x95c1('0x192')],_0x4d9b98[_0x95c1('0x193')]>0x0?getCallerIdRandom(_0x4d9b98[_0x95c1('0x64')],_0x4d9b98[_0x95c1('0x193')]):_0x4d9b98[_0x95c1('0x64')]):getCallerId(_[_0x95c1('0xe4')](_0x4d9b98[_0x95c1('0x194')])?_0x4d9b98[_0x95c1('0x7d')]['callerid']:_0x4d9b98[_0x95c1('0x194')]['callerid'],_0x4d9b98[_0x95c1('0x192')],_0x4d9b98[_0x95c1('0x193')]>0x0?getCallerIdRandom(_0x4d9b98['dialOriginateCallerIdNumber'],_0x4d9b98[_0x95c1('0x193')]):_0x4d9b98[_0x95c1('0x64')]);if(_0x194620){_0x470b84[_0x95c1('0x195')]=_0x141610[_0x95c1('0x29')][_0x52497b][_0x95c1('0x196')]=extractCalleridName(_0x194620);_0x470b84['XMD-ORIGINATECALLERIDNUM']=_0x141610[_0x95c1('0x29')][_0x52497b]['originatecalleridnum']=extractCalleridNumber(_0x194620);}return ami[_0x95c1('0xb3')]({'actionid':_0x52497b,'action':_0x95c1('0x175'),'channel':_0x141610[_0x95c1('0xdf')](_0x4d9b98[_0x95c1('0x7d')])?util[_0x95c1('0x80')](_0x95c1('0x197'),_0x4d9b98[_0x95c1('0x7d')]['name'],isNotNull(_0x4d9b98[_0x95c1('0x66')])?_0x4d9b98[_0x95c1('0x66')][_0x95c1('0x198')]()||'':'',_0x4d9b98[_0x95c1('0x199')]>0x0?_0x4a7659[_0x95c1('0x177')][_0x95c1('0x178')][_0x95c1('0x19a')](_0x4d9b98['dialCutDigit']):_0x4a7659[_0x95c1('0x177')][_0x95c1('0x178')]):util[_0x95c1('0x80')]('SIP/%s/%s%s',_[_0x95c1('0xe4')](_0x4d9b98[_0x95c1('0x194')])?_0x4d9b98[_0x95c1('0x7d')]['name']:_0x4d9b98[_0x95c1('0x194')][_0x95c1('0x47')],isNotNull(_0x4d9b98[_0x95c1('0x66')])?_0x4d9b98['dialPrefix'][_0x95c1('0x198')]()||'':'',_0x4d9b98[_0x95c1('0x199')]>0x0?_0x4a7659[_0x95c1('0x177')][_0x95c1('0x178')]['substring'](_0x4d9b98[_0x95c1('0x199')]):_0x4a7659[_0x95c1('0x177')][_0x95c1('0x178')]),'callerid':_0x194620,'Exten':_0x95c1('0xe8'),'Context':_0x95c1('0x19b'),'Priority':'1','variable':_0x470b84,'timeout':(_0x4d9b98['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x52497b})['then'](function(_0x525c67){return _0x25f9a1(_0x525c67);})[_0x95c1('0xb6')](function(_0x155a10){_0x4d9b98[_0x95c1('0x6f')]+=0x1;var _0x4b58e7=new History(_0x141610['actions'][_0x52497b]);logger[_0x95c1('0x9d')](util[_0x95c1('0x80')](_0x95c1('0x19c'),JSON[_0x95c1('0x51')](_0x155a10)));_0x4b58e7['state']=0xe;_0x4b58e7[_0x95c1('0xad')]='OriginateError';_0x4b58e7[_0x95c1('0xaf')]=moment()[_0x95c1('0x80')](_0x95c1('0x109'));_0x4b58e7[_0x95c1('0xae')]=_0x4b58e7[_0x95c1('0xaf')];_0x141610[_0x95c1('0xcd')](_0x4b58e7)['catch'](loggerCatch(_0x95c1('0x19d')));_0x141610[_0x95c1('0xcb')](_0x4b58e7)[_0x95c1('0xb6')](loggerCatch('[originate][error]'))['finally'](function(){delete _0x141610['actions'][_0x52497b];return _0xc6da05(msgResponse(_0x95c1('0x175'),_0x95c1('0x50'),_0x95c1('0x19e')));});});});};Dialer['prototype'][_0x95c1('0x37')]=function(_0xbe4f23){var _0x4eb87c=this[_0x95c1('0x29')][_0xbe4f23[_0x95c1('0x12d')]];if(_0x4eb87c){delete this[_0x95c1('0x29')][_0xbe4f23[_0x95c1('0x12d')]];_0x4eb87c[_0x95c1('0x120')]=moment()[_0x95c1('0x80')](_0x95c1('0x109'));var _0x4b24d7=_0x4eb87c[_0x95c1('0x54')]==='ivr'?this['campaigns'][_0x4eb87c[_0x95c1('0xb9')]]:this[_0x95c1('0x24')][_0x4eb87c[_0x95c1('0x19f')]()];if(!this[_0x95c1('0x1a0')](_0xbe4f23[_0x95c1('0x1a1')])){this['updateOriginated'](_0x4b24d7);return this[_0x95c1('0x1a2')](_0x4eb87c,_0x4b24d7,_0xbe4f23)[_0x95c1('0xb6')](loggerCatch('[callProgressDetecting]\x20'));}this['uniqueId'][_0xbe4f23[_0x95c1('0xe3')]]=_0x4eb87c;}};Dialer[_0x95c1('0x1f')][_0x95c1('0x1a3')]=function(_0x37ef1d,_0x47f96a,_0x15830c){var _0x2b3be1=new History(_0x47f96a);if(_0x2b3be1[_0x95c1('0xf9')]+_0x2b3be1[_0x95c1('0xfa')]+_0x2b3be1[_0x95c1('0xfb')]+_0x2b3be1[_0x95c1('0xfc')]+_0x2b3be1['countdropretry']+_0x2b3be1[_0x95c1('0xfe')]+_0x2b3be1[_0x95c1('0xf6')]+_0x2b3be1[_0x95c1('0xff')]>=_0x15830c[_0x95c1('0x100')]-0x1){return!![];}switch(_0x37ef1d){case 0x3:if(_0x2b3be1[_0x95c1('0xfb')]>=_0x15830c[_0x95c1('0x1a4')]-0x1){return!![];}this[_0x95c1('0xc5')]({'active':![],'countnoanswerretry':_0x2b3be1[_0x95c1('0xfb')]+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c[_0x95c1('0x1a5')],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x2b3be1[_0x95c1('0xd7')],'ListId':_0x2b3be1[_0x95c1('0xd8')],'VoiceQueueId':_0x2b3be1[_0x95c1('0xda')]||undefined,'CampaignId':_0x2b3be1[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x2b3be1[_0x95c1('0xf9')]>=_0x15830c['dialBusyMaxRetry']-0x1){return!![];}this[_0x95c1('0xc5')]({'active':![],'countbusyretry':_0x2b3be1[_0x95c1('0xf9')]+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c[_0x95c1('0x1a6')],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x2b3be1['ContactId'],'ListId':_0x2b3be1['ListId'],'VoiceQueueId':_0x2b3be1['VoiceQueueId']||undefined,'CampaignId':_0x2b3be1['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x2b3be1['countcongestionretry']>=_0x15830c[_0x95c1('0x1a7')]-0x1){return!![];}this[_0x95c1('0xc5')]({'active':![],'countcongestionretry':_0x2b3be1[_0x95c1('0xfa')]+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c['dialCongestionRetryFrequency'],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x2b3be1['ContactId'],'ListId':_0x2b3be1[_0x95c1('0xd8')],'VoiceQueueId':_0x2b3be1['VoiceQueueId']||undefined,'CampaignId':_0x2b3be1['CampaignId']||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1a8')));break;case 0x0:if(_0x2b3be1['countnosuchnumberretry']>=_0x15830c[_0x95c1('0x1a9')]-0x1){return!![];}else{this[_0x95c1('0xc5')]({'active':![],'countnosuchnumberretry':_0x2b3be1[_0x95c1('0xfc')]+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c[_0x95c1('0x1aa')],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x2b3be1[_0x95c1('0xd7')],'ListId':_0x2b3be1[_0x95c1('0xd8')],'VoiceQueueId':_0x2b3be1[_0x95c1('0xda')]||undefined,'CampaignId':_0x2b3be1[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1ab')));}break;case 0xa:if(_0x2b3be1[_0x95c1('0xfd')]>=_0x15830c[_0x95c1('0x124')]-0x1){return!![];}this[_0x95c1('0xc5')]({'active':![],'countdropretry':_0x2b3be1[_0x95c1('0xfd')]+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c[_0x95c1('0x125')],_0x95c1('0x108'))['format'](_0x95c1('0x109')),'ContactId':_0x2b3be1[_0x95c1('0xd7')],'ListId':_0x2b3be1['ListId'],'VoiceQueueId':_0x2b3be1[_0x95c1('0xda')]||undefined,'CampaignId':_0x2b3be1[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x126')));break;case 0xb:if(_0x2b3be1['countabandonedretry']>=_0x15830c[_0x95c1('0x12c')]-0x1){return!![];}this[_0x95c1('0xc5')]({'active':![],'countabandonedretry':_0x2b3be1['countabandonedretry']+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c[_0x95c1('0x1ac')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2b3be1['ContactId'],'ListId':_0x2b3be1[_0x95c1('0xd8')],'VoiceQueueId':_0x2b3be1[_0x95c1('0xda')]||undefined,'CampaignId':_0x2b3be1[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x2b3be1['countmachineretry']>=_0x15830c['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x2b3be1['countmachineretry']+=0x1,'scheduledat':moment()['add'](_0x15830c['dialMachineRetryFrequency'],_0x95c1('0x108'))['format'](_0x95c1('0x109')),'ContactId':_0x2b3be1['ContactId'],'ListId':_0x2b3be1[_0x95c1('0xd8')],'VoiceQueueId':_0x2b3be1[_0x95c1('0xda')]||undefined,'CampaignId':_0x2b3be1[_0x95c1('0xdb')]||undefined})['catch'](loggerCatch(_0x95c1('0x10a')));break;case 0x14:if(_0x2b3be1[_0x95c1('0xff')]>=_0x15830c[_0x95c1('0x1ad')]-0x1){return!![];}this[_0x95c1('0xc5')]({'active':![],'countagentrejectretry':_0x2b3be1[_0x95c1('0xff')]+=0x1,'scheduledat':moment()[_0x95c1('0x106')](_0x15830c[_0x95c1('0x1ae')],_0x95c1('0x108'))[_0x95c1('0x80')](_0x95c1('0x109')),'ContactId':_0x2b3be1[_0x95c1('0xd7')],'ListId':_0x2b3be1[_0x95c1('0xd8')],'VoiceQueueId':_0x2b3be1[_0x95c1('0xda')]||undefined,'CampaignId':_0x2b3be1['CampaignId']||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1af')));break;default:return!![];}};Dialer[_0x95c1('0x1f')]['callProgressDetecting']=function(_0x3293e1,_0x1b0f94,_0x53424f){var _0x21690c=this;var _0x20b243=new History(_0x3293e1);return new BPromise(function(_0x1d3fdd,_0x424ff6){if(_[_0x95c1('0x8e')](_0x1b0f94)&&typeof _0x1b0f94!==_0x95c1('0x1b0')){return _0x424ff6(msgResponse('[callProgressDetecting]',_0x95c1('0x14f'),_0x95c1('0x1b1')));}if(_[_0x95c1('0x8e')](_0x53424f)&&typeof _0x53424f!==_0x95c1('0x1b0')){return _0x424ff6(msgResponse(_0x95c1('0x1b2'),'Failure',_0x95c1('0x1b3')));}switch(_0x53424f[_0x95c1('0x115')]){case'0':_0x1b0f94['outboundNoSuchCallsDay']+=0x1;_0x20b243[_0x95c1('0xac')]=0x0;_0x20b243['statedesc']=_0x95c1('0x1b4');_0x20b243['countnosuchnumberretry']+=0x1;_0x20b243['countglobal']+=0x1;ami['emit'](_0x95c1('0x1b5'),ut[_0x95c1('0xf1')](_0x3293e1,_0x95c1('0x1b6')));_0x21690c[_0x95c1('0xcd')](_0x20b243)['catch'](loggerCatch(_0x95c1('0xf8')));if(_0x21690c['checkRetriveMax'](0x0,_0x3293e1,_0x1b0f94)){if(_0x20b243['countnosuchnumberretry']>=_0x1b0f94['dialNoSuchNumberMaxRetry']){_0x21690c[_0x95c1('0x104')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1b7'));}else{_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1b7'));}}break;case'3':_0x1b0f94[_0x95c1('0x6d')]+=0x1;_0x20b243[_0x95c1('0xac')]=0x3;_0x20b243[_0x95c1('0xad')]=_0x95c1('0x1b8');_0x20b243[_0x95c1('0xfb')]+=0x1;_0x20b243['countglobal']+=0x1;ami[_0x95c1('0x53')](_0x95c1('0x1b9'),ut['buildObj'](_0x3293e1,_0x95c1('0x1ba')));_0x21690c[_0x95c1('0xcd')](_0x20b243)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1bb')));if(_0x21690c[_0x95c1('0x1a3')](0x3,_0x3293e1,_0x1b0f94)){if(_0x20b243['countnoanswerretry']>=_0x1b0f94[_0x95c1('0x1a4')]){_0x21690c[_0x95c1('0x104')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1bc'));}else{_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1bc'));}}break;case'5':_0x1b0f94[_0x95c1('0x69')]+=0x1;_0x20b243[_0x95c1('0xac')]=0x5;_0x20b243['statedesc']='Busy';_0x20b243[_0x95c1('0xf9')]+=0x1;_0x20b243['countglobal']+=0x1;ami[_0x95c1('0x53')](_0x95c1('0x1bd'),ut[_0x95c1('0xf1')](_0x3293e1,'busy'));_0x21690c[_0x95c1('0xcd')](_0x20b243)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1be')));if(_0x21690c[_0x95c1('0x1a3')](0x5,_0x3293e1,_0x1b0f94)){if(_0x20b243[_0x95c1('0xf9')]>=_0x1b0f94[_0x95c1('0x1bf')]){_0x21690c[_0x95c1('0x104')](_0x20b243,_0x1d3fdd,_0x424ff6,'reason\x205\x20busy');}else{_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1c0'));}}break;case'8':_0x1b0f94[_0x95c1('0x6a')]+=0x1;_0x20b243[_0x95c1('0xac')]=0x8;_0x20b243[_0x95c1('0xad')]=_0x95c1('0x1c1');_0x20b243[_0x95c1('0xfa')]+=0x1;_0x20b243[_0x95c1('0xf7')]+=0x1;ami['emit'](_0x95c1('0x1c2'),ut['buildObj'](_0x3293e1,'congestion'));_0x21690c[_0x95c1('0xcd')](_0x20b243)['catch'](loggerCatch(_0x95c1('0x1c3')));if(_0x21690c[_0x95c1('0x1a3')](0x8,_0x3293e1,_0x1b0f94)){if(_0x20b243['countcongestionretry']>=_0x1b0f94[_0x95c1('0x1a7')]){_0x21690c[_0x95c1('0x104')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1c4'));}else{_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1c4'));}}break;case'11':_0x1b0f94[_0x95c1('0x1c5')]+=0x1;_0x20b243[_0x95c1('0xac')]=0xb;_0x20b243[_0x95c1('0xad')]=_0x95c1('0x12a');_0x20b243[_0x95c1('0xfe')]+=0x1;_0x20b243[_0x95c1('0xf7')]+=0x1;_0x21690c[_0x95c1('0xcd')](_0x20b243)[_0x95c1('0xb6')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x21690c[_0x95c1('0x1a3')](0xb,_0x3293e1,_0x1b0f94)){if(_0x20b243['countabandonedretry']>=_0x1b0f94[_0x95c1('0x12c')]){_0x21690c[_0x95c1('0x104')](_0x20b243,_0x1d3fdd,_0x424ff6,'reason\x2011\x20abandoned');}else{_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1c6'));}}break;case'20':_0x1b0f94[_0x95c1('0x71')]+=0x1;_0x20b243[_0x95c1('0xac')]=0x14;_0x20b243[_0x95c1('0xad')]=_0x95c1('0x1c7');_0x20b243['countagentrejectretry']+=0x1;_0x20b243[_0x95c1('0xf7')]+=0x1;ami[_0x95c1('0x53')](_0x95c1('0x1c8'),ut[_0x95c1('0xf1')](_0x3293e1,'agentreject'));_0x21690c[_0x95c1('0xcd')](_0x20b243)['catch'](loggerCatch(_0x95c1('0x1c9')));if(_0x21690c[_0x95c1('0x1a3')](0x14,_0x3293e1,_0x1b0f94)){if(_0x20b243[_0x95c1('0xff')]>=_0x1b0f94['dialAgentRejectMaxRetry']){_0x21690c[_0x95c1('0x104')](_0x20b243,_0x1d3fdd,_0x424ff6,'reason\x2020\x20agentreject');}else{_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x95c1('0x1ca'));}}break;default:_0x1b0f94[_0x95c1('0x112')]+=0x1;_0x20b243[_0x95c1('0xac')]=0xc;_0x20b243[_0x95c1('0xad')]=_0x53424f[_0x95c1('0x115')];_0x21690c['createHistory'](_0x20b243)[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1cb')));if(_0x21690c[_0x95c1('0x1a3')](_0x53424f[_0x95c1('0x115')],_0x3293e1,_0x1b0f94)){if(_0x20b243[_0x95c1('0xf9')]+_0x20b243[_0x95c1('0xfa')]+_0x20b243[_0x95c1('0xfb')]+_0x20b243[_0x95c1('0xfc')]+_0x20b243['countdropretry']+_0x20b243[_0x95c1('0xfe')]+_0x20b243[_0x95c1('0xf6')]+_0x20b243['countagentrejectretry']>=_0x1b0f94[_0x95c1('0x100')]){_0x21690c[_0x95c1('0x101')](_0x20b243,_0x1d3fdd,_0x424ff6,_0x53424f['reason']);}else{_0x21690c['createStateFinal'](_0x20b243,_0x1d3fdd,_0x424ff6,_0x53424f[_0x95c1('0x115')]);}}}});};Dialer[_0x95c1('0x1f')][_0x95c1('0x101')]=function(_0x32b85e,_0x333ff5,_0x50ef65,_0x487e9f){var _0xa3cc31=new Final(_0x32b85e);_0xa3cc31[_0x95c1('0xac')]=0xf;_0xa3cc31['statedesc']=_0x95c1('0x1cc');this['createStateFinal'](_0xa3cc31,_0x333ff5,_0x50ef65,_0x487e9f);};Dialer['prototype'][_0x95c1('0x104')]=function(_0x37b60a,_0x4c7055,_0x283458,_0x1240da){this[_0x95c1('0xcb')](_0x37b60a)[_0x95c1('0xbd')](function(){return _0x4c7055(msgResponse(_0x95c1('0x1b2'),'Success',_0x1240da));})[_0x95c1('0xb6')](function(){return _0x283458(msgResponse('[moveContactManagedDialer][0]',_0x95c1('0x14f'),_0x95c1('0x1cd')));});};Dialer[_0x95c1('0x1f')]['predictive']=function(_0x308d42){var _0x222679=_0x308d42['dialPredictiveOptimizationPercentage']/0x64;var _0x44a740=_0x308d42[_0x95c1('0x6c')]/(_0x308d42[_0x95c1('0x6c')]+_0x308d42['outboundAnswerCallsDay']);var _0x2b0794=Math[_0x95c1('0x1ce')](_0x308d42[_0x95c1('0x1cf')]*(_0x308d42['predictiveIntervalMaxThreshold']/0x64));var _0xa037ea=Math['round'](_0x308d42[_0x95c1('0x1cf')]*(_0x308d42['predictiveIntervalMinThreshold']/0x64));var _0x388c63=_0x308d42['available']+_0x308d42[_0x95c1('0x5e')];var _0x14a5d3=Math['floor'](_0x308d42[_0x95c1('0x79')]*_0x308d42['erlangAbandonmentRate']*_0x308d42[_0x95c1('0x1d0')]*_0x308d42[_0x95c1('0x76')]);if(_['isUndefined'](_0x308d42[_0x95c1('0x2e')])){if(!_[_0x95c1('0x8e')](_0x308d42[_0x95c1('0x2d')])){_0x308d42[_0x95c1('0x2d')]=undefined;loggerPredictive[_0x95c1('0x9d')]('[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x95c1('0x8e')](_0x308d42[_0x95c1('0x99')])){loggerPredictive[_0x95c1('0x9d')](_0x95c1('0x1d1'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x308d42['handlePredictive']);_0x308d42[_0x95c1('0x99')]=undefined;}_0x308d42[_0x95c1('0x2e')]=moment()['format'](_0x95c1('0x109'));loggerPredictive['info'](_0x308d42[_0x95c1('0x47')],_0x95c1('0x1d2'),_0x308d42[_0x95c1('0x2e')]);this[_0x95c1('0x163')](_0x308d42,0x1);}else if(ifInterval(_0x308d42[_0x95c1('0x1d3')],_0x308d42[_0x95c1('0x2e')])){this[_0x95c1('0x163')](_0x308d42,0x1);loggerPredictiveCalls[_0x95c1('0x85')](_0x95c1('0x1d4'),_0x308d42['startProgressive'],_0x308d42['name']);_0x308d42[_0x95c1('0x79')]=0x0;_0x308d42['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x222679<_0x44a740&&_0x308d42[_0x95c1('0x1d5')]===_0x95c1('0x1d6')){freeVariablesPredictive(_0x308d42);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x95c1('0x1d7'),_0x44a740,_0x95c1('0x2e'),_0x308d42[_0x95c1('0x47')]);}else if(_0x14a5d3<_0x308d42[_0x95c1('0x75')]&&_0x308d42[_0x95c1('0x1d5')]==='dropRate'){freeVariablesPredictive(_0x308d42);loggerPredictive[_0x95c1('0x85')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x95c1('0x1d8'),_0x14a5d3,_0x95c1('0x1d9'),_0x308d42[_0x95c1('0x75')],_0x95c1('0x2e'),_0x308d42['name']);}else if(!ifInterval(_0x308d42[_0x95c1('0x1d3')],_0x308d42[_0x95c1('0x2e')])&&_['isUndefined'](_0x308d42[_0x95c1('0x2d')])&&!_[_0x95c1('0x8e')](_0x308d42[_0x95c1('0x2e')])){_0x308d42['startPredictive']=moment()[_0x95c1('0x80')](_0x95c1('0x109'));loggerPredictive[_0x95c1('0x85')](_0x308d42['name'],_0x95c1('0x1da'),_0x308d42[_0x95c1('0x2d')]);this[_0x95c1('0xc2')](_0x308d42[_0x95c1('0x1d3')])['then'](this[_0x95c1('0x1db')](_0x308d42))[_0x95c1('0xbd')](mergeDataErlangB(_0x308d42))['then'](this['startMethodPredictive'](_0x308d42))[_0x95c1('0xb6')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x308d42));}else if(!ifInterval(_0x308d42[_0x95c1('0x1d3')],_0x308d42[_0x95c1('0x2d')])){_0x308d42[_0x95c1('0x75')]=0x0;_0x308d42[_0x95c1('0x2d')]=moment()[_0x95c1('0x80')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x95c1('0x85')](_0x308d42[_0x95c1('0x47')],_0x95c1('0x1dc'),_0x308d42[_0x95c1('0x2d')]);clearInterval(_0x308d42[_0x95c1('0x99')]);_0x308d42['handlePredictive']=undefined;this[_0x95c1('0xc2')](_0x308d42['dialPredictiveInterval'])[_0x95c1('0xbd')](this[_0x95c1('0x1db')](_0x308d42))['then'](mergeDataErlangB(_0x308d42))['then'](this[_0x95c1('0x1dd')](_0x308d42))[_0x95c1('0xb6')](loggerCatchPredictive(_0x95c1('0x1de'),_0x308d42));}else if(_0x308d42[_0x95c1('0x1cf')]&&_0x388c63<_0x308d42[_0x95c1('0x1cf')]-_0xa037ea){freeVariablesPredictive(_0x308d42);loggerPredictive[_0x95c1('0x85')](_0x308d42['name'],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x388c63,_0x95c1('0x1df'),_0x308d42['predictiveIntervalAvailable'],'-',_0xa037ea,'=',_0x308d42['predictiveIntervalAvailable']-_0xa037ea,')');}else if(_0x308d42[_0x95c1('0x1cf')]&&_0x388c63>_0x308d42[_0x95c1('0x1cf')]+_0x2b0794){freeVariablesPredictive(_0x308d42);loggerPredictive[_0x95c1('0x85')](_0x308d42[_0x95c1('0x47')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x388c63,')\x20are\x20more\x20than\x20threshold\x20(',_0x308d42[_0x95c1('0x1cf')],'+',_0x2b0794,'=',_0x308d42[_0x95c1('0x1cf')]+_0x2b0794,')');}};Dialer[_0x95c1('0x1f')][_0x95c1('0x1db')]=function(_0x508745){var _0x5e0386=this;return function(_0xa47c9){return new BPromise(function(_0xc5547,_0x21e401){_['merge'](_0x508745,_0xa47c9[0x0]);if(checkGetDataPredictive(_0xa47c9[0x0])){var _0x365a74=_0x508745['predictiveIntervalAvailable']=_0x508745[_0x95c1('0x5e')]+_0x508745[_0x95c1('0x58')];var _0x329d25=_0x508745[_0x95c1('0x1d3')]*0x3c;var _0x2f153f=_0xa47c9[0x0][_0x95c1('0x8c')]+_0xa47c9[0x0][_0x95c1('0x72')];var _0x1e4303=(_0xa47c9[0x0][_0x95c1('0x1e0')]+_0xa47c9[0x0][_0x95c1('0x73')]+_0xa47c9[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0xa47c9[0x0][_0x95c1('0x77')];_0x508745[_0x95c1('0x1d0')]=_0x1e4303>0x0?_0x1e4303:0x1;switch(_0x508745['dialPredictiveOptimization']){case'dropRate':var _0x4cc66c=_0x508745[_0x95c1('0x1e1')]/0x64;return _0x5e0386[_0x95c1('0x1e2')](_0x365a74,_0x329d25,_0x2f153f,_0x1e4303,_0x4cc66c)[_0x95c1('0xbd')](function(_0x3edaa4){return _0xc5547(_0x3edaa4);});case _0x95c1('0x1e3'):var _0x232234=_0x508745[_0x95c1('0x1e1')]/0x64;return _0x5e0386[_0x95c1('0x1e4')](_0x365a74,_0x329d25,_0x2f153f,_0x1e4303,_0x232234)[_0x95c1('0xbd')](function(_0x4b7482){return _0xc5547(_0x4b7482);});default:return _0x21e401(msgResponse(_0x95c1('0x1e5'),_0x95c1('0x14f'),_0x95c1('0x1e6')));}}else{return _0x21e401(msgResponse('[getDataPredictive]',_0x95c1('0x14f'),_0x95c1('0x1e7')));}});};};Dialer[_0x95c1('0x1f')][_0x95c1('0x1e8')]=function(_0x757acd){var _0x15dc6e=this;return function(_0x30763c){return new BPromise(function(_0x5d4ceb,_0x1a2256){_['merge'](_0x757acd,_0x30763c[0x0]);if(checkGetDataPredictive(_0x30763c[0x0])){loggerPredictive[_0x95c1('0x85')](JSON[_0x95c1('0x51')](_0x30763c[0x0]));if(_0x757acd[_0x95c1('0x1d5')]===_0x95c1('0x1d6')){return _0x15dc6e[_0x95c1('0x1e9')](_0x757acd['id'])[_0x95c1('0xbd')](function(_0x540224){var _0x3ed888=_0x757acd[_0x95c1('0x59')]-_0x540224[0x0]['outboundQueuePauses'];var _0x3726fa=_0x757acd[_0x95c1('0x1d3')]*0x3c;var _0x28bbd0=_0x30763c[0x0][_0x95c1('0x8c')]+_0x30763c[0x0][_0x95c1('0x72')];var _0x95542=(_0x30763c[0x0]['predictiveIntervalAnsweredCalls']+_0x30763c[0x0][_0x95c1('0x73')]+_0x30763c[0x0][_0x95c1('0x1ea')])/_0x30763c[0x0][_0x95c1('0x77')];var _0x3568c8=_0x757acd['dialPredictiveOptimizationPercentage']/0x64;_0x757acd['predictiveIntervalPauses']=_0x540224[0x0][_0x95c1('0x1eb')]||0x0;_0x757acd[_0x95c1('0x1d0')]=_0x95542>0x0?_0x95542:0x1;return _0x15dc6e[_0x95c1('0x1e2')](_0x3ed888,_0x3726fa,_0x28bbd0,_0x95542,_0x3568c8);})[_0x95c1('0xbd')](function(_0x22275a){return _0x5d4ceb(_0x22275a);})[_0x95c1('0xb6')](function(_0x57783f){return _0x1a2256(msgResponse(_0x95c1('0x1ec'),_0x95c1('0x14f'),JSON[_0x95c1('0x51')](_0x57783f)));});}if(_0x757acd[_0x95c1('0x1d5')]===_0x95c1('0x1e3')){return _0x15dc6e[_0x95c1('0x1e9')](_0x757acd['id'])['then'](function(_0x2b355a){var _0x2dd3c3=_0x757acd[_0x95c1('0x59')]-_0x2b355a[0x0]['outboundQueuePauses'];var _0x1b3f89=_0x757acd[_0x95c1('0x1d3')]*0x3c;var _0x3582be=_0x30763c[0x0][_0x95c1('0x8c')]+_0x30763c[0x0][_0x95c1('0x72')];var _0x553cd8=(_0x30763c[0x0][_0x95c1('0x1e0')]+_0x30763c[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x30763c[0x0][_0x95c1('0x1ea')])/_0x30763c[0x0][_0x95c1('0x77')];var _0xee1157=_0x757acd['dialPredictiveOptimizationPercentage']/0x64;_0x757acd[_0x95c1('0x1ed')]=_0x2b355a[0x0][_0x95c1('0x1eb')]||0x0;_0x757acd[_0x95c1('0x1d0')]=_0x553cd8>0x0?_0x553cd8:0x1;return _0x15dc6e[_0x95c1('0x1e4')](_0x2dd3c3,_0x1b3f89,_0x3582be,_0x553cd8,_0xee1157);})[_0x95c1('0xbd')](function(_0x59c70f){return _0x5d4ceb(_0x59c70f);})[_0x95c1('0xb6')](function(_0x34dbf1){return _0x1a2256(msgResponse(_0x95c1('0x1ec'),_0x95c1('0x14f'),JSON['stringify'](_0x34dbf1)));});}}else{return _0x1a2256(msgResponse(_0x95c1('0x1e5'),'Failure',_0x95c1('0x1e7')));}});};};Dialer[_0x95c1('0x1f')]['startMethodPredictive']=function(_0x542482){var _0x48d852=this;return function(){var _0x205e10=0x0;var _0x5aa1ac=Math['floor'](_0x542482[_0x95c1('0x7a')]*0x3e8);if(_0x5aa1ac>0x0){_0x5aa1ac=_0x5aa1ac<0x64?0x64:_0x5aa1ac;loggerPredictive[_0x95c1('0x85')](_0x542482[_0x95c1('0x47')],_0x95c1('0x1ee'),_0x5aa1ac,_0x95c1('0x96'));_0x542482[_0x95c1('0x99')]=setInterval(function(){_0x48d852[_0x95c1('0x99')](_0x542482);loggerPredictiveCalls['info'](_0x95c1('0x1ef'),_0x205e10+=0x1);},_0x5aa1ac);}else{loggerPredictive[_0x95c1('0x85')](_0x542482[_0x95c1('0x47')],_0x95c1('0x1f0'));}};};Dialer[_0x95c1('0x1f')][_0x95c1('0x1f1')]=function(_0x3af8a6,_0x383aa0){var _0x391a08=this;return function(_0x573588){if(_[_0x95c1('0x84')](_0x573588)){if(_['isNil'](_0x383aa0[_0x95c1('0xd9')])||!_0x383aa0[_0x95c1('0x1f2')]){if(_0x3af8a6[_0x95c1('0x63')]==='booked'){_0x3af8a6[_0x95c1('0x136')]=_[_0x95c1('0x8e')](_0x3af8a6[_0x95c1('0x136')])?!![]:_0x3af8a6[_0x95c1('0x136')];var _0xa4ba7=uuid['v4']();_0x391a08[_0x95c1('0x29')][_0xa4ba7]=new Action(_0x3af8a6,_0x383aa0,_0xa4ba7);loggerBooked[_0x95c1('0x85')](_0x95c1('0x1f3'),_0xa4ba7,'queueStatusComplete:\x20',JSON[_0x95c1('0x51')](_0x3af8a6['queueStatusComplete']),_0x95c1('0x1f4'),_0x3af8a6[_0x95c1('0x47')]);if(_0x3af8a6[_0x95c1('0x136')]){_0x3af8a6[_0x95c1('0x136')]=![];_0x391a08[_0x95c1('0x133')][_0x391a08[_0x95c1('0x29')][_0xa4ba7][_0x95c1('0xb9')]]=[];ami[_0x95c1('0xb3')]({'actionid':_0xa4ba7,'action':_0x95c1('0x1f5'),'queue':_0x3af8a6[_0x95c1('0x47')]})[_0x95c1('0xb6')](function(){_0x391a08[_0x95c1('0xb8')](_0x3af8a6);_0x391a08[_0x95c1('0xc5')]({'active':![],'ContactId':_0x391a08[_0x95c1('0x29')][_0xa4ba7][_0x95c1('0xd7')],'ListId':_0x391a08[_0x95c1('0x29')][_0xa4ba7][_0x95c1('0xd8')],'VoiceQueueId':_0x391a08[_0x95c1('0x29')][_0xa4ba7]['VoiceQueueId']||undefined,'CampaignId':_0x391a08[_0x95c1('0x29')][_0xa4ba7][_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1f6')));delete _0x391a08[_0x95c1('0x29')][_0xa4ba7];});}else{loggerBooked[_0x95c1('0x85')](_0x95c1('0x1f7'),JSON[_0x95c1('0x51')](_0x3af8a6[_0x95c1('0x136')]),_0x95c1('0x1f4'),_0x3af8a6[_0x95c1('0x47')]);_0x391a08[_0x95c1('0xb8')](_0x3af8a6);_0x391a08[_0x95c1('0xc5')]({'active':![],'ContactId':_0x391a08[_0x95c1('0x29')][_0xa4ba7][_0x95c1('0xd7')],'ListId':_0x391a08['actions'][_0xa4ba7][_0x95c1('0xd8')],'VoiceQueueId':_0x391a08[_0x95c1('0x29')][_0xa4ba7][_0x95c1('0xda')]||undefined,'CampaignId':_0x391a08[_0x95c1('0x29')][_0xa4ba7]['CampaignId']||undefined})['catch'](loggerCatch(_0x95c1('0x1f6')));delete _0x391a08[_0x95c1('0x29')][_0xa4ba7];}}else{return _0x391a08[_0x95c1('0x1f8')](_0x3af8a6,_0x383aa0);}}else{if(getDiff(_0x383aa0[_0x95c1('0x1f9')])<_0x3af8a6[_0x95c1('0x1fa')]*0x3c){if(_0x383aa0['Agent']&&!_0x383aa0[_0x95c1('0x16a')][_0x95c1('0x1fb')]){_0x391a08[_0x95c1('0x23')][_0x95c1('0x13a')](_0x383aa0['id'])[_0x95c1('0x21')](function(){_0x391a08[_0x95c1('0xb8')](_0x3af8a6);});}else{_0x391a08['unlockContact']({'active':![]},_0x383aa0['id'],0x1)['finally'](function(){_0x391a08[_0x95c1('0xb8')](_0x3af8a6);});}}else{_0x3af8a6[_0x95c1('0x70')]+=0x1;_0x391a08[_0x95c1('0xb8')](_0x3af8a6);if(_0x3af8a6[_0x95c1('0x1fc')]){_0x391a08['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x383aa0[_0x95c1('0xd7')],'ListId':_0x383aa0[_0x95c1('0xd8')],'VoiceQueueId':_0x383aa0[_0x95c1('0xda')]||undefined,'CampaignId':_0x383aa0[_0x95c1('0xdb')]||undefined})[_0x95c1('0xb6')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x391a08['createHistory'](createObjHistory(_0x3af8a6,_0x383aa0,_0x95c1('0x1fd'),0x17,_0x95c1('0x1fe')))[_0x95c1('0xb6')](loggerCatch(_0x95c1('0x1ff')));}else{_0x391a08[_0x95c1('0xd4')](createObjHistory(_0x3af8a6,_0x383aa0,_0x95c1('0x200'),0x16,_0x95c1('0x201')),_0x95c1('0x202'),_0x95c1('0x203'));}}}}else{_0x3af8a6[_0x95c1('0x68')]+=0x1;_0x391a08['saveInDb'](createObjHistory(_0x3af8a6,_0x383aa0,_0x95c1('0x204'),0xd,_0x95c1('0x205')),'[Originate][historyBlacklist]',_0x95c1('0x206'));throw _0x95c1('0x207');}};};Dialer[_0x95c1('0x1f')][_0x95c1('0x16d')]=function(_0x35aaf6){var _0x192214=this;var _0x34b715=_0x35aaf6[_0x95c1('0x208')]-_0x35aaf6[_0x95c1('0x78')]-_0x35aaf6[_0x95c1('0xc8')];emitCampaignSummary(_0x35aaf6);if(_0x34b715>0x0){if(_0x34b715>this[_0x95c1('0x27')]){_0x34b715=this['maxNumberOriginate'];}_0x35aaf6[_0x95c1('0xc8')]+=_0x34b715;this[_0x95c1('0xca')](_0x35aaf6['id'],_0x34b715,_0x35aaf6[_0x95c1('0x209')],_0x35aaf6)[_0x95c1('0xbd')](function(_0x352396){_0x35aaf6[_0x95c1('0xc8')]-=_0x34b715;_0x35aaf6['temp']=_0x35aaf6[_0x95c1('0xc8')]>0x0?_0x35aaf6[_0x95c1('0xc8')]:0x0;if(!checkContactEmpty(_0x352396)){_0x35aaf6['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0x95c1('0x85')](_0x95c1('0x20a')+_0x35aaf6[_0x95c1('0x47')]);}else{_0x35aaf6[_0x95c1('0x78')]+=_0x352396[_0x95c1('0x9f')];_0x35aaf6[_0x95c1('0x4b')]=_0x95c1('0x20b');for(var _0x4fff71=0x0;_0x4fff71<_0x352396[_0x95c1('0x9f')];_0x4fff71+=0x1){_0x35aaf6[_0x95c1('0x20c')]+=0x1;if(_[_0x95c1('0xe4')](_0x352396[_0x4fff71])||_[_0x95c1('0xe4')](_0x352396[_0x4fff71][_0x95c1('0x177')])||_['isNil'](_0x352396[_0x4fff71]['Contact'][_0x95c1('0x178')])){_0x192214[_0x95c1('0xd2')]('[actionOriginate]\x20',_0x35aaf6,_0x352396[_0x4fff71]);}else{_0x192214[_0x95c1('0xc0')](_[_0x95c1('0xd6')](_0x352396[_0x4fff71],[_0x95c1('0xdb'),_0x95c1('0x20d')]))[_0x95c1('0xbd')](_0x192214[_0x95c1('0x1f1')](_0x35aaf6,_0x352396[_0x4fff71]))['catch'](_0x192214[_0x95c1('0xd1')](_0x95c1('0x20e'),_0x35aaf6));}}}})[_0x95c1('0xb6')](loggerGetContactDialer(_0x95c1('0x20f'),_0x35aaf6,_0x34b715));}};Dialer[_0x95c1('0x1f')]['handlePower']=function(_0x4e2b7e,_0x499f66){var _0x55b133=this;var _0x1c1020=[];var _0x1a567d=_0x499f66>=0x1?_0x499f66:0x1;if(_0x4e2b7e[_0x95c1('0x63')]===_0x95c1('0xb')){_0x1a567d=0x1;}var _0x58e3f5=Math['floor'](_0x4e2b7e[_0x95c1('0x58')]*_0x1a567d)-_0x4e2b7e['originated']-_0x4e2b7e[_0x95c1('0xc8')];emitVoiceQueueSummary(_0x4e2b7e);if(_0x4e2b7e[_0x95c1('0x210')]>0x0){var _0x41f2b9=_0x4e2b7e['dialLimitQueue']-_0x4e2b7e[_0x95c1('0x78')]-_0x4e2b7e[_0x95c1('0x5e')]-_0x4e2b7e[_0x95c1('0xc8')]-_0x4e2b7e[_0x95c1('0x5a')];if(_0x58e3f5>_0x41f2b9){_0x58e3f5=_0x41f2b9;}}if(_0x58e3f5>0x0){if(_0x4e2b7e[_0x95c1('0x63')]===_0x95c1('0xb')){_0x58e3f5=0x1;}if(_0x58e3f5>this['maxNumberOriginate']){_0x58e3f5=this['maxNumberOriginate'];}_0x4e2b7e[_0x95c1('0xc8')]+=_0x58e3f5;for(var _0x1289b6 in this['agents']){if(typeof this[_0x95c1('0x25')][_0x1289b6]!==_0x95c1('0xa0')){if(this['agents'][_0x1289b6][_0x95c1('0xac')]===_0x95c1('0x211')&&this[_0x95c1('0x25')][_0x1289b6]['status']==='reachable'){_0x1c1020['push'](this['agents'][_0x1289b6]['id']);}}}this[_0x95c1('0x212')](_0x4e2b7e['id'],_0x1c1020,_0x58e3f5,_0x4e2b7e['dialOrderByScheduledAt'],_0x4e2b7e)[_0x95c1('0xbd')](function(_0x4e3d0c){_0x4e2b7e[_0x95c1('0xc8')]-=_0x58e3f5;_0x4e2b7e['temp']=_0x4e2b7e[_0x95c1('0xc8')]>0x0?_0x4e2b7e[_0x95c1('0xc8')]:0x0;if(!checkContactEmpty(_0x4e3d0c)){_0x55b133['countReScheduled'](_0x4e2b7e)[_0x95c1('0xbd')](sendMessageReschedule(_0x4e2b7e))[_0x95c1('0xb6')](loggerCatch(_0x95c1('0xbe')));}else{_0x4e2b7e[_0x95c1('0x78')]+=_0x4e3d0c[_0x95c1('0x9f')];_0x4e2b7e[_0x95c1('0x4b')]=_0x4e2b7e[_0x95c1('0x63')]===_0x95c1('0xb')?_0x95c1('0x17f'):_0x95c1('0x20b');for(var _0x3a1d0b=0x0;_0x3a1d0b<_0x4e3d0c[_0x95c1('0x9f')];_0x3a1d0b+=0x1){if(_[_0x95c1('0xe4')](_0x4e3d0c[_0x3a1d0b])||_[_0x95c1('0xe4')](_0x4e3d0c[_0x3a1d0b][_0x95c1('0x177')])||_[_0x95c1('0xe4')](_0x4e3d0c[_0x3a1d0b][_0x95c1('0x177')][_0x95c1('0x178')])){_0x55b133['emptyContact']('[actionOriginate]\x20',_0x4e2b7e,_0x4e3d0c[_0x3a1d0b]);}else{_0x55b133[_0x95c1('0x213')](_[_0x95c1('0xd6')](_0x4e3d0c[_0x3a1d0b],[_0x95c1('0xda'),_0x95c1('0x20d')]))[_0x95c1('0xbd')](_0x55b133[_0x95c1('0x1f1')](_0x4e2b7e,_0x4e3d0c[_0x3a1d0b]))[_0x95c1('0xb6')](_0x55b133[_0x95c1('0xd1')](_0x95c1('0x214'),_0x4e2b7e));}}}})[_0x95c1('0xb6')](loggerGetContactDialer(_0x95c1('0x215'),_0x4e2b7e,_0x58e3f5));}};Dialer[_0x95c1('0x1f')][_0x95c1('0x99')]=function(_0x3bd366){if(_0x3bd366[_0x95c1('0x210')]>0x0){var _0x49c5ac=_0x3bd366[_0x95c1('0x210')]-_0x3bd366[_0x95c1('0x78')]-_0x3bd366[_0x95c1('0x5e')];if(_0x49c5ac>0x0){this['tryOriginatePredictive'](_0x3bd366);}else{loggerPredictiveCalls[_0x95c1('0x85')](_0x95c1('0x216'));}}else{this['tryOriginatePredictive'](_0x3bd366);}};Dialer[_0x95c1('0x1f')]['tryOriginatePredictive']=function(_0x6469d7){var _0x293aac=this;var _0x49d0d2=[];_0x6469d7[_0x95c1('0x78')]+=0x1;for(var _0x245814 in this[_0x95c1('0x25')]){if(typeof this['agents'][_0x245814]!==_0x95c1('0xa0')){if(this[_0x95c1('0x25')][_0x245814][_0x95c1('0xac')]===_0x95c1('0x211')&&this[_0x95c1('0x25')][_0x245814]['status']===_0x95c1('0xe1')){_0x49d0d2[_0x95c1('0x134')](this[_0x95c1('0x25')][_0x245814]['id']);}}}this[_0x95c1('0x212')](_0x6469d7['id'],_0x49d0d2,0x1,_0x6469d7[_0x95c1('0x209')],_0x6469d7)['then'](function(_0x2923ee){if(!checkContactEmpty(_0x2923ee)){checkContactLowerLimitOriginate(_0x6469d7,0x1,0x0);_0x293aac['countReScheduled'](_0x6469d7)[_0x95c1('0xbd')](sendMessageReschedule(_0x6469d7))['catch'](loggerCatch(_0x95c1('0xbe')));}else{_0x6469d7['message']=_0x95c1('0x20b');if(_[_0x95c1('0xe4')](_0x2923ee[0x0])||_['isNil'](_0x2923ee[0x0][_0x95c1('0x177')])||_['isNil'](_0x2923ee[0x0][_0x95c1('0x177')][_0x95c1('0x178')])){_0x293aac['emptyContact'](_0x95c1('0x214'),_0x6469d7,_0x2923ee[0x0]);}else{_0x293aac[_0x95c1('0x213')](_['pick'](_0x2923ee[0x0],[_0x95c1('0xda'),_0x95c1('0x20d')]))[_0x95c1('0xbd')](_0x293aac[_0x95c1('0x1f1')](_0x6469d7,_0x2923ee[0x0]))[_0x95c1('0xb6')](_0x293aac[_0x95c1('0xd1')](_0x95c1('0x217'),_0x6469d7));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x6469d7,0x1));emitVoiceQueueSummary(_0x6469d7);};Dialer[_0x95c1('0x1f')][_0x95c1('0x1e2')]=function(_0x1aba26,_0x2555db,_0x4443c5,_0x2ca2d4,_0x3ded61,_0x20e8fc){loggerPredictive[_0x95c1('0x85')](_0x95c1('0x218'));loggerPredictive[_0x95c1('0x85')](_0x95c1('0x219'),_0x1aba26);loggerPredictive[_0x95c1('0x85')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2555db);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x21a'),_0x4443c5);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x21b'),_0x2ca2d4);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3ded61);loggerPredictive['info'](_0x95c1('0x95'));return new BPromise(function(_0x1b8281,_0x2ddd4d){if(_0x1aba26<=0x0||isNaN(_0x1aba26)){return _0x2ddd4d(msgResponse(_0x95c1('0x21c'),_0x95c1('0x50'),_0x95c1('0x21d')+_0x1aba26));}if(_0x4443c5<=0x0||isNaN(_0x4443c5)){return _0x2ddd4d(msgResponse(_0x95c1('0x21c'),_0x95c1('0x50'),_0x95c1('0x21e')+_0x4443c5));}if(_0x2ca2d4<=0x0||isNaN(_0x2ca2d4)){return _0x2ddd4d(msgResponse(_0x95c1('0x21c'),_0x95c1('0x50'),'p\x20=\x20'+_0x2ca2d4));}if(_0x2555db<=0x0||isNaN(_0x2555db)){return _0x2ddd4d(msgResponse(_0x95c1('0x21c'),'Error',_0x95c1('0x21f')+_0x2555db));}if(_0x3ded61<=0x0||isNaN(_0x3ded61)){return _0x2ddd4d(msgResponse(_0x95c1('0x21c'),_0x95c1('0x50'),'Amax\x20=\x20'+_0x3ded61));}_0x20e8fc=_0x20e8fc||0x0;var _0x1c4ae1=0x1/_0x4443c5;var _0x3721b8=0x0;var _0x2b53c7=0x0;var _0x48d42a=0x0;var _0x32fed3=0x0;for(var _0x1898f9=0x0;_0x48d42a<_0x3ded61;_0x1898f9+=0x1){_0x2b53c7=_0x1898f9/_0x2555db;_0x3721b8=(_0x2ca2d4*_0x2b53c7+_0x20e8fc)/_0x1c4ae1;_0x48d42a=erlangb(_0x3721b8,_0x1aba26);_0x32fed3=_0x3721b8/_0x1aba26*(0x1-erlangb(_0x3721b8,_0x1aba26));}return _0x1b8281({'erlangCalls':_0x1898f9,'erlangCallToSecond':_0x2555db/_0x1898f9,'erlangAbandonmentRate':_0x48d42a,'erlangBusyFactor':_0x32fed3});});};Dialer[_0x95c1('0x1f')][_0x95c1('0x1e4')]=function(_0x1ddd45,_0x44eac8,_0x55d396,_0x3d14ab,_0x240c98,_0x2cb1a5){loggerPredictive['info'](_0x95c1('0x220'));loggerPredictive['info']('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1ddd45);loggerPredictive[_0x95c1('0x85')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x44eac8);loggerPredictive[_0x95c1('0x85')](_0x95c1('0x21a'),_0x55d396);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3d14ab);loggerPredictive[_0x95c1('0x85')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x240c98);loggerPredictive['info'](_0x95c1('0x95'));return new BPromise(function(_0x44aebd,_0x417369){if(_0x1ddd45<=0x0||isNaN(_0x1ddd45)){return _0x417369(msgResponse('[busyFactor]',_0x95c1('0x50'),_0x95c1('0x21d')+_0x1ddd45));}if(_0x55d396<=0x0||isNaN(_0x55d396)){return _0x417369(msgResponse(_0x95c1('0x221'),_0x95c1('0x50'),_0x95c1('0x21e')+_0x55d396));}if(_0x3d14ab<=0x0||isNaN(_0x3d14ab)){return _0x417369(msgResponse('[busyFactor]','Error','p\x20=\x20'+_0x3d14ab));}if(_0x44eac8<=0x0||isNaN(_0x44eac8)){return _0x417369(msgResponse(_0x95c1('0x221'),_0x95c1('0x50'),'interval\x20=\x20'+_0x44eac8));}if(_0x240c98<=0x0||isNaN(_0x240c98)){return _0x417369(msgResponse(_0x95c1('0x221'),'Error','Umin\x20=\x20'+_0x240c98));}_0x2cb1a5=_0x2cb1a5||0x0;var _0xa1a236=0x1/_0x55d396;var _0x108ddc=0x0;var _0x3b2fef=0x0;var _0x3767f4=0x0;var _0x17d958=0x0;for(var _0x190494=0x0;_0x17d958<_0x240c98;_0x190494+=0x1){_0x3b2fef=_0x190494/_0x44eac8;_0x108ddc=(_0x3d14ab*_0x3b2fef+_0x2cb1a5)/_0xa1a236;_0x3767f4=erlangb(_0x108ddc,_0x1ddd45);_0x17d958=_0x108ddc/_0x1ddd45*(0x1-erlangb(_0x108ddc,_0x1ddd45));}return _0x44aebd({'erlangCalls':_0x190494,'erlangCallToSecond':_0x44eac8/_0x190494,'erlangAbandonmentRate':_0x3767f4,'erlangBusyFactor':_0x17d958});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x23c5=['replace','random','match','object','voiceQueue\x20is\x20undefine','Contact','phone','originate','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','trim','dialCutDigit','substring','SIP/%s/%s%s','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','reason','NoSuchNumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','Congestion','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','Global','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','round','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','available','dialPredictiveOptimizationPercentage','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','UserId','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','voicePause','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','checkContactBlack','[getContactCampaign2]','dialLimitQueue','pTalking','reachable','dialOrderByScheduledAt','[getContactDialer2]','tryOriginatePredictive','not_inuse','RUNNING','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/logger','dialer','booked','predictiveCalls','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./history','./agentComplete','./queueCallerAbandon','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','trunks','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBookedRR','agentconnect','queuecallerabandon','bind','syncOriginateResponse','agentcomplete','syncAgentComplete','syncQueueSummary','newexten','syncNewExten','varset','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopClearZombieChannels','then','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','strategy','answered','sumBillable','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','campaign:ivr:%s','info','-----\x20Stats\x20Predictive\x20---','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','clearing\x20variable\x20start\x20predictive','handlePredictive','outbound','ivr','string','\x22\x22\x20<>','error','stack','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','is\x20not\x20active','IS_DISACTIVED','state','statedesc','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','Action','status','No\x20such\x20channel','queue','[Dialer][checkChannel]','updateOriginated','resolve','countReScheduled','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','inspect','emptyContact','saveInDb','pick','ContactId','ListId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','isTrunkReachable','SIP/%s','unmonitored','syncVarSet','isNil','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','uniqueid','HangupInAMD','membername','amd','[syncHangupInAMD][createHistory]','MACHINE','Machine','AMD','buildObj','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','CampaignId','[rescheduleContact][Machine]','custom:amd','[syncHangupInAMDIvr][createHistory]','countglobal','[syncAgentComplete][createHistory][0]','countabandonedretry','dialMachineMaxRetry','createStateFinal','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AGI','[syncHangupIvr]','cause-txt','Unknow','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','[syncQueueCallerAbandon]\x20[Drop]','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','dropreason','TIMEOUT','countdropretry','dialDropMaxRetry','queueCallerAbandonCreateState','dialDropRetryFrequency','[rescheduleContact][Drop]','Drop','calleridname','calleridnum','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','[syncAgentComplete][createHistory][11]','channel','actionid','locked','agents','stateinterface','queueBooked','push','idHopper','paused','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','_rr','length','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','checkIsTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','timezones','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','predictive','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:dialPreviewRecallReminder','handleIvr','loggedIn','dialGlobalInterval','checkIfTimeIntervals','dialTimezone','[syncQueueSummary]','dialPreviewRecallmeReminder','checkIfTime','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x23c5,0xbb));var _0x523c=function(_0x61e15,_0x2a461f){_0x61e15=_0x61e15-0x0;var _0x3146a4=_0x23c5[_0x61e15];return _0x3146a4;};'use strict';var util=require(_0x523c('0x0'));var _=require(_0x523c('0x1'));var BPromise=require(_0x523c('0x2'));var uuid=require(_0x523c('0x3'));var moment=require(_0x523c('0x4'));var rr=require('rr');var md5=require(_0x523c('0x5'));var Redis=require(_0x523c('0x6'));var ut=require(_0x523c('0x7'));var config=require('../../../config/environment/');var logger=require(_0x523c('0x8'))(_0x523c('0x9'));var loggerBooked=require(_0x523c('0x8'))(_0x523c('0xa'));var loggerPredictive=require('../../../config/logger')('predictive');var loggerPredictiveCalls=require(_0x523c('0x8'))(_0x523c('0xb'));var loggerSyncQueueSummary=require(_0x523c('0x8'))('syncQueueSummary');var ami=require(_0x523c('0xc'));config[_0x523c('0xd')]=_[_0x523c('0xe')](config[_0x523c('0xd')],{'host':_0x523c('0xf'),'port':0x18eb});var io=require(_0x523c('0x10'))(new Redis(config[_0x523c('0xd')]));var cmHopper=require(_0x523c('0x11'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x523c('0x12'));var voiceQueueRt=require(_0x523c('0x13'));var RpcSetting=require(_0x523c('0x14'));var Action=require('./action');var History=require(_0x523c('0x15'));var Final=require('./final');var AgentComplete=require(_0x523c('0x16'));var QueueCallerAbandon=require(_0x523c('0x17'));var Hangup=require('./hangup');var ipAgi=process[_0x523c('0x18')][_0x523c('0x19')]||_0x523c('0x1a');var strategy={'rrmemory':_0x523c('0x1b'),'roundrobin':_0x523c('0x1c')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x523c('0x1d')][_0x523c('0x1e')]=function(_0x3a9400){this[_0x523c('0x1f')]=this['tail']?this[_0x523c('0x1f')][_0x523c('0x20')](_0x3a9400):_0x3a9400();};function Dialer(_0x48c27e,_0x1ec49d){this[_0x523c('0x21')]=new Sequence();this[_0x523c('0x22')]=_0x1ec49d;this[_0x523c('0x23')]=_0x48c27e[_0x523c('0x23')];this[_0x523c('0x24')]=_0x48c27e[_0x523c('0x24')];this['agents']=_0x48c27e['agents'];this[_0x523c('0x25')]=_0x48c27e[_0x523c('0x25')];this[_0x523c('0x26')]=config[_0x523c('0x26')]||0x2;this[_0x523c('0x27')]={};this[_0x523c('0x28')]={};this['contactsId']={};this[_0x523c('0x29')]={};this[_0x523c('0x2a')]={};this[_0x523c('0x2b')]={};this[_0x523c('0x2c')]={};this[_0x523c('0x2d')]={};this['queueBooked']={};this[_0x523c('0x2e')]={};ami['on'](_0x523c('0x2f'),this['syncAgentConnect']['bind'](this));ami['on'](_0x523c('0x30'),this['syncQueueCallerAbandon'][_0x523c('0x31')](this));ami['on']('originateresponse',this[_0x523c('0x32')][_0x523c('0x31')](this));ami['on'](_0x523c('0x33'),this[_0x523c('0x34')][_0x523c('0x31')](this));ami['on']('custom:queuesummary',this[_0x523c('0x35')][_0x523c('0x31')](this));ami['on']('hangup',this['syncHangup'][_0x523c('0x31')](this));ami['on'](_0x523c('0x36'),this[_0x523c('0x37')][_0x523c('0x31')](this));ami['on'](_0x523c('0x38'),this['syncVarSet']['bind'](this));ami['on']('queuemember',this[_0x523c('0x39')][_0x523c('0x31')](this));ami['on'](_0x523c('0x3a'),this[_0x523c('0x3b')]['bind'](this));this['loopCampaigns']();this[_0x523c('0x3c')]();RpcSetting['getSettings']()[_0x523c('0x3d')](function(_0x3154c1){previewRecallmeReminderInterval=_0x3154c1[_0x523c('0x3e')];});}function isNotNull(_0x597fb9){return _0x597fb9!==null&&!_[_0x523c('0x3f')](_0x597fb9);}function checkIsLoggedIn(_0x367f2a,_0x501495){return function(){if(_0x501495<=0x0){_0x367f2a[_0x523c('0x40')]=_0x523c('0x41');throw _0x367f2a[_0x523c('0x42')]+_0x523c('0x43');}};}function isActive(_0x48bd19){return _0x48bd19;}function checkIsActive(_0x2fe34a,_0xa77418){return function(){if(!isActive(_0xa77418)){_0x2fe34a[_0x523c('0x40')]=_0x523c('0x44');throw _0x2fe34a[_0x523c('0x42')]+_0x523c('0x45');}};}function checkInterval(_0xc7475b){return function(){if(!isNotNull(_0xc7475b['Interval'])){_0xc7475b[_0x523c('0x40')]=_0x523c('0x46');throw _0xc7475b[_0x523c('0x42')]+_0x523c('0x47');}if(!isNotNull(_0xc7475b[_0x523c('0x48')][_0x523c('0x49')])){_0xc7475b[_0x523c('0x40')]=_0x523c('0x46');throw _0xc7475b[_0x523c('0x42')]+_0x523c('0x47');}if(!isNotNull(_[_0x523c('0x4a')](_0xc7475b[_0x523c('0x48')][_0x523c('0x49')]))){_0xc7475b[_0x523c('0x40')]=_0x523c('0x46');throw _0xc7475b[_0x523c('0x42')]+_0x523c('0x47');}};}function msgResponse(_0xeaebbc,_0x1ed25a,_0x4accd7){return{'action':_0xeaebbc,'response':_0x1ed25a,'message':_0x4accd7,'stack':_0x4accd7};}function myreject(_0x3bc6ce){return function(_0x483bbd){return _0x3bc6ce(msgResponse(_0x523c('0x4b'),_0x523c('0x4c'),JSON[_0x523c('0x4d')](_0x483bbd)));};}function getSeconds(_0x48eece,_0x507614){var _0x380dec=moment(_0x48eece)[_0x523c('0x4e')](0x0);var _0x56c132=moment(_0x507614)[_0x523c('0x4e')](0x0);return _0x380dec[_0x523c('0x4f')](_0x56c132,_0x523c('0x50'));}function emit(_0x598ad1,_0x2f0545,_0x162ab4){io['to'](_0x598ad1)[_0x523c('0x51')](_0x2f0545,_0x162ab4);}function emitVoiceQueueSummary(_0x622dd8){if(_0x622dd8['type']==='outbound'){var _0x1968b6={'id':_0x622dd8['id'],'name':_0x622dd8[_0x523c('0x42')],'strategy':_0x622dd8[_0x523c('0x52')],'answered':_0x622dd8[_0x523c('0x53')],'available':_0x622dd8['available'],'loggedIn':_0x622dd8['loggedIn'],'pTalking':_0x622dd8['pTalking'],'sumBillable':_0x622dd8[_0x523c('0x54')],'sumDuration':_0x622dd8['sumDuration'],'sumHoldTime':_0x622dd8[_0x523c('0x55')]||0x0,'talking':_0x622dd8[_0x523c('0x56')],'total':_0x622dd8[_0x523c('0x57')],'type':_0x622dd8[_0x523c('0x58')],'unmanaged':_0x622dd8[_0x523c('0x59')],'abandoned':_0x622dd8[_0x523c('0x5a')],'waiting':_0x622dd8[_0x523c('0x5b')],'loggedInDb':_0x622dd8[_0x523c('0x5c')],'dialActive':_0x622dd8[_0x523c('0x5d')],'dialMethod':_0x622dd8[_0x523c('0x5e')],'dialOriginateCallerIdName':_0x622dd8[_0x523c('0x5f')],'dialOriginateCallerIdNumber':_0x622dd8[_0x523c('0x60')],'dialOriginateTimeout':_0x622dd8['dialOriginateTimeout'],'dialPrefix':_0x622dd8[_0x523c('0x61')],'outboundAnswerAgiCallsDay':_0x622dd8[_0x523c('0x62')],'outboundAnswerCallsDay':_0x622dd8[_0x523c('0x63')],'outboundBlacklistCallsDay':_0x622dd8['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x622dd8[_0x523c('0x64')],'outboundCongestionCallsDay':_0x622dd8[_0x523c('0x65')],'outboundDropCallsDayACS':_0x622dd8[_0x523c('0x66')],'outboundDropCallsDayCallersExit':_0x622dd8[_0x523c('0x67')],'outboundDropCallsDayTimeout':_0x622dd8[_0x523c('0x68')],'outboundNoAnswerCallsDay':_0x622dd8[_0x523c('0x69')],'outboundNoSuchCallsDay':_0x622dd8[_0x523c('0x6a')],'outboundOriginateFailureCallsDay':_0x622dd8['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x622dd8[_0x523c('0x6b')],'outboundRejectCallsDay':_0x622dd8['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x622dd8[_0x523c('0x6c')],'predictiveIntervalAnsweredCalls':_0x622dd8[_0x523c('0x6d')],'predictiveIntervalAvgHoldtime':_0x622dd8['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x622dd8['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x622dd8['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x622dd8[_0x523c('0x6e')],'predictiveIntervalErlangCalls':_0x622dd8[_0x523c('0x6f')],'predictiveIntervalErlangCallsDroppedCalls':_0x622dd8[_0x523c('0x70')],'predictiveIntervalHitRate':_0x622dd8[_0x523c('0x71')],'predictiveIntervalMultiplicativeFactor':_0x622dd8['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x622dd8['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x622dd8[_0x523c('0x72')],'predictiveIntervalTotalCalls':_0x622dd8[_0x523c('0x73')],'message':_0x622dd8[_0x523c('0x40')],'originated':_0x622dd8[_0x523c('0x74')],'erlangCalls':_0x622dd8[_0x523c('0x75')],'erlangCallToSecond':_0x622dd8[_0x523c('0x76')],'erlangAbandonmentRate':_0x622dd8['erlangAbandonmentRate'],'erlangBusyFactor':_0x622dd8[_0x523c('0x77')],'startPredictive':_0x622dd8[_0x523c('0x2b')],'startProgressive':_0x622dd8['startProgressive']};if(_0x622dd8['Trunk']){_0x1968b6['Trunk']={'id':_0x622dd8[_0x523c('0x78')]['id'],'name':_0x622dd8[_0x523c('0x78')][_0x523c('0x42')],'active':_0x622dd8[_0x523c('0x78')][_0x523c('0x79')],'callerid':_0x622dd8[_0x523c('0x78')][_0x523c('0x7a')]};}if(_0x622dd8[_0x523c('0x48')]){_0x1968b6[_0x523c('0x48')]={'id':_0x622dd8[_0x523c('0x48')]['id'],'name':_0x622dd8[_0x523c('0x48')][_0x523c('0x42')]};}var _0x44f67f=md5(JSON[_0x523c('0x4d')](_0x1968b6));if(_0x622dd8['md5']!==_0x44f67f){_0x622dd8[_0x523c('0x5')]=_0x44f67f;emit(util[_0x523c('0x7b')](_0x523c('0x7c'),_0x1968b6[_0x523c('0x42')]),_0x523c('0x7d'),_0x1968b6);}}}function emitCampaignSummary(_0x430aac){if(_0x430aac[_0x523c('0x58')]==='ivr'){emit(util[_0x523c('0x7b')](_0x523c('0x7e'),_0x430aac['name']),'campaign:save',_0x430aac);}}function checkGetDataPredictive(_0x7dce89){if(isNotNull(_0x7dce89)&&!_[_0x523c('0x4a')](_0x7dce89)){loggerPredictive[_0x523c('0x7f')](_0x523c('0x80'));loggerPredictive[_0x523c('0x7f')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x7dce89[_0x523c('0x73')]);loggerPredictive[_0x523c('0x7f')](_0x523c('0x81'),_0x7dce89['predictiveIntervalAnsweredCalls']);loggerPredictive['info'](_0x523c('0x82'),_0x7dce89[_0x523c('0x6e')]);loggerPredictive[_0x523c('0x7f')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x7dce89[_0x523c('0x83')]);loggerPredictive[_0x523c('0x7f')](_0x523c('0x84'),_0x7dce89[_0x523c('0x85')]);loggerPredictive[_0x523c('0x7f')](_0x523c('0x86'),_0x7dce89[_0x523c('0x87')]);loggerPredictive[_0x523c('0x7f')](_0x523c('0x88'));if(_0x7dce89[_0x523c('0x73')]>0x0){if(!_[_0x523c('0x3f')](_0x7dce89[_0x523c('0x87')])&&_0x7dce89[_0x523c('0x87')]>0x0){return!![];}loggerPredictive[_0x523c('0x7f')](_0x523c('0x89'));if(!_[_0x523c('0x3f')](_0x7dce89['predictiveIntervalAvgHoldtime'])&&_0x7dce89['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x523c('0x7f')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0x523c('0x7f')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x523c('0x7f')](_0x523c('0x8a'));}return![];}function mergeDataErlangB(_0x2d9574){return function(_0x553e15){loggerPredictive['info'](_0x523c('0x8b'));loggerPredictive[_0x523c('0x7f')](_0x523c('0x8c'),_0x553e15['erlangCalls']);loggerPredictive[_0x523c('0x7f')](_0x523c('0x8d'),_0x553e15[_0x523c('0x76')]);loggerPredictive[_0x523c('0x7f')](_0x523c('0x8e'),_0x553e15[_0x523c('0x8f')]);loggerPredictive[_0x523c('0x7f')](_0x523c('0x90'),_0x553e15[_0x523c('0x77')]);loggerPredictive['info']('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x553e15[_0x523c('0x8f')]);loggerPredictive['info'](_0x523c('0x88'));_[_0x523c('0x91')](_0x2d9574,_0x553e15);};}function getDiff(_0x4bf921){var _0x1f51e9=moment()[_0x523c('0x4e')](0x0);var _0x4941d0=moment(_0x4bf921)[_0x523c('0x4e')](0x0);return _0x1f51e9['diff'](_0x4941d0,_0x523c('0x50'));}function ifInterval(_0x5e1b7c,_0x20d708){if(_['isUndefined'](_0x20d708)){return![];}return getDiff(_0x20d708)<_0x5e1b7c*0x3c;}function freeVariablesPredictive(_0x2a8bc4){if(isNotNull(_0x2a8bc4)){if(!_[_0x523c('0x3f')](_0x2a8bc4[_0x523c('0x2c')])){_0x2a8bc4[_0x523c('0x2c')]=undefined;loggerPredictive[_0x523c('0x7f')](_0x2a8bc4[_0x523c('0x42')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x523c('0x3f')](_0x2a8bc4[_0x523c('0x2b')])){_0x2a8bc4[_0x523c('0x2b')]=undefined;loggerPredictive['info'](_0x2a8bc4['name'],_0x523c('0x92'));}if(!_['isUndefined'](_0x2a8bc4['handlePredictive'])){clearInterval(_0x2a8bc4[_0x523c('0x93')]);_0x2a8bc4[_0x523c('0x93')]=undefined;loggerPredictive[_0x523c('0x7f')](_0x2a8bc4[_0x523c('0x42')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x14ad8b,_0x1f0c94){if(_0x1f0c94===0x0){return 0x0;}var _0x5688b8=0x1;for(var _0x4ecbda=0x1;_0x4ecbda<=_0x1f0c94;_0x4ecbda+=0x1){_0x5688b8=0x1+_0x5688b8*_0x4ecbda/_0x14ad8b;}return 0x1/_0x5688b8;}function isVoiceQueueOutbound(_0x3b094f){return _0x3b094f===_0x523c('0x94');}function isNotPreview(_0x54b726){return _0x54b726!==_0x523c('0x22');}function isCampaignIvr(_0x111a44){return _0x111a44===_0x523c('0x95');}function getCallerId(_0x39d622,_0x746672,_0x3fecb0){if(!_[_0x523c('0x3f')](_0x3fecb0)&&typeof _0x3fecb0===_0x523c('0x96')&&!_[_0x523c('0x4a')](_0x3fecb0)){if(!_['isUndefined'](_0x746672)&&typeof _0x746672===_0x523c('0x96')&&!_['isEmpty'](_0x746672)){return util['format']('\x22%s\x22\x20<%s>',_0x746672,_0x3fecb0);}return util['format']('\x22%s\x22\x20<%s>',_0x3fecb0,_0x3fecb0);}if(!_[_0x523c('0x3f')](_0x39d622)&&typeof _0x39d622===_0x523c('0x96')&&!_[_0x523c('0x4a')](_0x39d622)){return _0x39d622;}return _0x523c('0x97');}function loggerCatchQueueSummary(_0x4ebfe9,_0x1e3c57){return function(_0x197679){freeVariablesPredictive(_0x1e3c57);emitVoiceQueueSummary(_0x1e3c57);emitCampaignSummary(_0x1e3c57);loggerSyncQueueSummary[_0x523c('0x98')](_0x4ebfe9,util['inspect'](_0x197679,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x1f5dcd,_0x89f1b1){return function(_0x503936){loggerPredictive[_0x523c('0x98')](_0x89f1b1[_0x523c('0x42')],_0x1f5dcd);loggerPredictive[_0x523c('0x98')](_0x503936[_0x523c('0x99')]);freeVariablesPredictive(_0x89f1b1);};}function loggerCatch(_0x4677be){return function(_0x52d67b){logger['error'](_0x4677be,util['inspect'](_0x52d67b,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4e6fd1){return _0x4e6fd1&&!_[_0x523c('0x3f')](_0x4e6fd1)&&_0x4e6fd1['length']>0x0;}function decremetOriginate(_0x4488e1){if(!_[_0x523c('0x3f')](_0x4488e1)&&_0x4488e1!==null){if(typeof _0x4488e1[_0x523c('0x74')]!==_0x523c('0x9a')){if(_0x4488e1['originated']>0x0){_0x4488e1['originated']-=0x1;}else{logger['error'](_0x523c('0x9b'));}}}else{logger[_0x523c('0x98')](_0x523c('0x9c'));}}function checkContactLowerLimitOriginate(_0xf16788,_0x19bb2b,_0x2d64dd){if(_0x19bb2b>_0x2d64dd){for(var _0x12dfa=0x0;_0x12dfa<_0x19bb2b-_0x2d64dd;_0x12dfa+=0x1){decremetOriginate(_0xf16788);}}}function loggerGetContactDialer(_0xb6576c,_0x13e3eb,_0x8c1656){return function(_0x4afbdf){checkContactLowerLimitOriginate(_0x13e3eb,_0x8c1656,0x0);logger[_0x523c('0x98')](_0xb6576c,util['inspect'](_0x4afbdf,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x391e2b){return function(_0x3723b6){if(isNotNull(_0x3723b6)&&isNotNull(_0x3723b6[0x0])){if(_0x3723b6[0x0][_0x523c('0x9d')]>0x0){_0x391e2b[_0x523c('0x40')]=_0x523c('0x9e');logger[_0x523c('0x7f')](_0x523c('0x9f')+_0x391e2b[_0x523c('0x42')],_0x3723b6[0x0]['contactsRescheduled'],_0x523c('0xa0'));}else{_0x391e2b['message']=_0x523c('0xa1');logger['info']('[getContactDialer2][Empty]'+_0x391e2b[_0x523c('0x42')]);}}};}function notSendMessagesQueue(_0x20165f){if(_0x20165f[_0x523c('0xa2')]){freeVariablesPredictive(_0x20165f);if(_0x20165f['originated']===0x0&&_0x20165f['talking']===0x0&&_0x20165f[_0x523c('0x5b')]===0x0&&(_0x20165f['pTalking']||0x0)===0x0){_0x20165f[_0x523c('0xa2')]=![];_0x20165f['available']=0x0;_0x20165f[_0x523c('0x40')]=_0x523c('0x44');loggerSyncQueueSummary[_0x523c('0x98')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x20165f[_0x523c('0x42')],_0x523c('0xa3'));}else{_0x20165f[_0x523c('0x40')]=_0x523c('0xa4');loggerSyncQueueSummary[_0x523c('0x98')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x20165f[_0x523c('0x42')],'is\x20disactive');}emitVoiceQueueSummary(_0x20165f);}}function notSendMessagesCampaign(_0x3aee83){if(_0x3aee83[_0x523c('0xa2')]){if(_0x3aee83[_0x523c('0x74')]===0x0){_0x3aee83[_0x523c('0xa2')]=![];_0x3aee83[_0x523c('0x40')]=_0x523c('0x44');loggerSyncQueueSummary[_0x523c('0x98')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3aee83[_0x523c('0x42')],'is\x20not\x20active');}else{_0x3aee83[_0x523c('0x40')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x523c('0x98')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3aee83[_0x523c('0x42')],'is\x20disactive');}emitCampaignSummary(_0x3aee83);}}function createObjHistory(_0x12f0c1,_0x5d7c5c,_0xcd5eeb,_0x401765,_0x3201c7){_0x12f0c1[_0x523c('0x40')]=_0xcd5eeb;var _0x18ed69=new Action(_0x12f0c1,_0x5d7c5c);var _0x1749ce=new History(_0x18ed69);_0x1749ce[_0x523c('0xa5')]=_0x401765;_0x1749ce[_0x523c('0xa6')]=_0x3201c7;_0x1749ce[_0x523c('0xa7')]=_0x18ed69[_0x523c('0xa8')];return _0x1749ce;}Dialer[_0x523c('0x1d')]['loopClearZombieChannels']=function(){var _0x490e25=this;setInterval(function(){_0x490e25[_0x523c('0xa9')](_0x490e25['uniqueId'],_0x523c('0xaa'));_0x490e25[_0x523c('0xa9')](_0x490e25['actions'],_0x523c('0xab'));},0x32c8);};Dialer[_0x523c('0x1d')][_0x523c('0xa9')]=function(_0x4038a0,_0x519a11){var _0x1acf7d=this;for(var _0x2f8de8 in _0x4038a0){if(typeof _0x4038a0[_0x2f8de8]!==_0x523c('0x9a')){this[_0x523c('0x21')][_0x523c('0x1e')](function(){if(!_['isNil'](_0x4038a0[_0x2f8de8])){return ami[_0x523c('0xac')]({'action':_0x523c('0xad'),'channel':_0x4038a0[_0x2f8de8]['channel']})['catch'](function(_0x1e43be){if(_0x1e43be['message']===_0x523c('0xae')){setTimeout(function(){if(_0x4038a0[_0x2f8de8]&&_0x4038a0[_0x2f8de8][_0x523c('0x58')]!=='ivr'){_0x1acf7d['updateOriginated'](_0x1acf7d['voiceQueues'][_0x4038a0[_0x2f8de8][_0x523c('0xaf')]]);logger[_0x523c('0x98')](_0x523c('0xb0'),_0x519a11,_0x2f8de8,_0x4038a0[_0x2f8de8][_0x523c('0xaf')]);delete _0x4038a0[_0x2f8de8];}if(_0x4038a0[_0x2f8de8]&&_0x4038a0[_0x2f8de8][_0x523c('0x58')]===_0x523c('0x95')){_0x1acf7d[_0x523c('0xb1')](_0x1acf7d[_0x523c('0x24')][_0x4038a0[_0x2f8de8][_0x523c('0xaf')]]);logger[_0x523c('0x98')]('[Dialer][checkChannel][ivr]',_0x519a11,_0x2f8de8,_0x4038a0[_0x2f8de8][_0x523c('0xaf')]);delete _0x4038a0[_0x2f8de8];}},0x2328);}});}});}}};Dialer[_0x523c('0x1d')]['countReScheduled']=function(_0x9a5a5f){return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](cmHopper[_0x523c('0xb3')](_0x9a5a5f))[_0x523c('0xb4')](loggerCatch(_0x523c('0xb5')));};Dialer['prototype'][_0x523c('0xb6')]=function(_0x37caba){return BPromise['resolve']()[_0x523c('0x3d')](cmHopperBlack[_0x523c('0xb6')](_0x37caba))[_0x523c('0xb4')](loggerCatch(_0x523c('0xb7')));};Dialer[_0x523c('0x1d')][_0x523c('0xb8')]=function(_0x332ce3){return BPromise[_0x523c('0xb2')]()['then'](cmHopperBlack[_0x523c('0xb8')](_0x332ce3))[_0x523c('0xb4')](loggerCatch(_0x523c('0xb9')));};Dialer[_0x523c('0x1d')][_0x523c('0xba')]=function(_0x518cb8){return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](cmHopperHistory['avgHandleTime'](_0x518cb8))[_0x523c('0xb4')](loggerCatch(_0x523c('0xbb')));};Dialer['prototype']['rescheduleContact']=function(_0x557aa8){return BPromise['resolve']()['then'](cmHopper[_0x523c('0xbc')](_0x557aa8))['catch'](loggerCatch(_0x523c('0xbd')));};Dialer[_0x523c('0x1d')]['unlockContact']=function(_0x20096e,_0x1ba660,_0x240e4f){return BPromise['resolve']()['then'](cmHopper['unlockContact'](_0x20096e,_0x1ba660,_0x240e4f))['catch'](loggerCatch(_0x523c('0xbe')));};Dialer[_0x523c('0x1d')][_0x523c('0xbf')]=function(_0x19280d,_0x547dbe,_0x55c085,_0x42d329,_0x410676){return BPromise[_0x523c('0xb2')]()['then'](cmHopper['getContactDialer'](_0x19280d,_0x547dbe,_0x55c085,_0x42d329))['catch'](function(_0x808b21){_0x410676['temp']-=_0x55c085;_0x410676[_0x523c('0xc0')]=_0x410676[_0x523c('0xc0')]>0x0?_0x410676[_0x523c('0xc0')]:0x0;loggerCatch(_0x523c('0xc1'))(_0x808b21);});};Dialer[_0x523c('0x1d')][_0x523c('0xc2')]=function(_0x29fdcc,_0x2be2cb,_0x2daf7b,_0xf1ca44){return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](cmHopper[_0x523c('0xc2')](_0x29fdcc,_0x2be2cb,_0x2daf7b))[_0x523c('0xb4')](function(_0x838e40){_0xf1ca44[_0x523c('0xc0')]-=_0x2be2cb;_0xf1ca44['temp']=_0xf1ca44['temp']>0x0?_0xf1ca44[_0x523c('0xc0')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x838e40);});};Dialer[_0x523c('0x1d')]['getVoiceQueueRtPauses']=function(_0x359451){return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](voiceQueueRt[_0x523c('0xc3')](_0x359451))[_0x523c('0xb4')](loggerCatch(_0x523c('0xc4')));};Dialer[_0x523c('0x1d')][_0x523c('0xc5')]=function(_0x322dce){return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](cmHopper[_0x523c('0xc5')](_0x322dce))['catch'](loggerCatch(_0x523c('0xc6')));};Dialer[_0x523c('0x1d')][_0x523c('0xc7')]=function(_0x294591){return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](cmHopperHistory['createHistory'](_0x294591))[_0x523c('0xb4')](loggerCatch(_0x523c('0xc8')));};Dialer[_0x523c('0x1d')][_0x523c('0xb1')]=function(_0x25c437){if(!_[_0x523c('0x3f')](_0x25c437)&&_0x25c437!==null){if(typeof _0x25c437[_0x523c('0x74')]!=='undefined'){if(_0x25c437[_0x523c('0x74')]>0x0){_0x25c437[_0x523c('0x74')]-=0x1;}else{logger[_0x523c('0x98')](_0x523c('0xc9'));}}}else{logger[_0x523c('0x98')](_0x523c('0xca'));}};Dialer[_0x523c('0x1d')][_0x523c('0xcb')]=function(_0x444a9c,_0x20b7e9){var _0xb5f415=this;return function(_0x393afc){_0xb5f415[_0x523c('0xb1')](_0x20b7e9);logger[_0x523c('0x98')](_0x444a9c,util[_0x523c('0xcc')](_0x393afc,{'showHidden':![],'depth':null}));};};Dialer[_0x523c('0x1d')][_0x523c('0xcd')]=function(_0x40a866,_0x56e4b6,_0x5b1ac5){var _0x10d9bb={'state':0x19,'statedesc':'notFound'};this['updateOriginated'](_0x56e4b6);this[_0x523c('0xce')](_['merge'](_0x10d9bb,_[_0x523c('0xcf')](_0x5b1ac5,[_0x523c('0xd0'),_0x523c('0xd1'),'UserId',_0x523c('0xd2'),'CampaignId'])),_0x523c('0xd3'),_0x523c('0xd4'));logger[_0x523c('0x98')](_0x40a866);};Dialer['prototype']['isSuccess']=function(_0x59436c){return _0x59436c==='Success';};Dialer[_0x523c('0x1d')][_0x523c('0xd5')]=function(_0x5d38e7){return!_[_0x523c('0x3f')](_0x5d38e7)&&_0x5d38e7&&!_[_0x523c('0x3f')](_0x5d38e7[_0x523c('0x42')])&&!_['isUndefined'](_0x5d38e7['active'])&&_0x5d38e7[_0x523c('0x79')]&&(this[_0x523c('0x25')][util[_0x523c('0x7b')](_0x523c('0xd6'),_0x5d38e7[_0x523c('0x42')])][_0x523c('0xad')]==='reachable'||this[_0x523c('0x25')][util['format'](_0x523c('0xd6'),_0x5d38e7['name'])][_0x523c('0xad')]===_0x523c('0xd7'));};Dialer[_0x523c('0x1d')][_0x523c('0xce')]=function(_0x1f20d2,_0x12cac3,_0x8f2f24){this['createHistory'](_0x1f20d2)[_0x523c('0xb4')](loggerCatch(_0x12cac3));this['moveContactManagedDialer'](_0x1f20d2)[_0x523c('0xb4')](loggerCatch(_0x8f2f24));};Dialer[_0x523c('0x1d')][_0x523c('0xd8')]=function(_0x432b76){var _0x1fe9f9=this['uniqueId'][_0x432b76['uniqueid']];var _0x123bcc;if(!_[_0x523c('0xd9')](_0x432b76)&&!_[_0x523c('0xd9')](_0x432b76[_0x523c('0xda')])&&!_['isNil'](_0x432b76[_0x523c('0xda')][_0x523c('0xdb')])&&_0x432b76[_0x523c('0xdc')]===_0x523c('0xdd')&&_0x1fe9f9){if(_0x1fe9f9[_0x523c('0x58')]!==_0x523c('0x95')&&this[_0x523c('0x23')][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0xde')]&&_0x432b76[_0x523c('0xdf')]===_0x523c('0xe0')){delete this['uniqueId'][_0x432b76[_0x523c('0xe1')]];this['updateOriginated'](this[_0x523c('0x23')][_0x1fe9f9[_0x523c('0xaf')]]);this[_0x523c('0x23')][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0x63')]+=0x1;this['voiceQueues'][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0x62')]+=0x1;_0x123bcc=new Hangup(_0x1fe9f9,_0x432b76);_0x123bcc[_0x523c('0xa5')]=0x12;_0x123bcc[_0x523c('0xa6')]=_0x523c('0xe2');_0x123bcc[_0x523c('0xe3')]='AMD';ami[_0x523c('0x51')]('custom:amd',ut['buildObj'](_0x123bcc,_0x523c('0xe4')));this[_0x523c('0xce')](_0x123bcc,_0x523c('0xe5'),'[syncHangupInAMD]');}if(_0x1fe9f9[_0x523c('0x58')]!==_0x523c('0x95')&&this[_0x523c('0x23')][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0xde')]&&_0x432b76[_0x523c('0xdf')]===_0x523c('0xe6')){var _0x63c190=this;return new BPromise(function(_0x4afa7e,_0x2d8338){delete _0x63c190[_0x523c('0x29')][_0x432b76[_0x523c('0xe1')]];_0x63c190[_0x523c('0xb1')](_0x63c190['voiceQueues'][_0x1fe9f9[_0x523c('0xaf')]]);_0x63c190['voiceQueues'][_0x1fe9f9[_0x523c('0xaf')]]['outboundAnswerCallsDay']+=0x1;_0x63c190[_0x523c('0x23')][_0x1fe9f9[_0x523c('0xaf')]]['outboundAnswerAgiCallsDay']+=0x1;var _0xaff459=_0x63c190[_0x523c('0x23')][_0x1fe9f9['queue']];var _0x28c8ff=new Hangup(_0x1fe9f9,_0x432b76);_0x28c8ff['state']=0x13;_0x28c8ff['statedesc']=_0x523c('0xe7');_0x28c8ff[_0x523c('0xe3')]=_0x523c('0xe8');_0x28c8ff['countmachineretry']+=0x1;_0x28c8ff['countglobal']+=0x1;_0x28c8ff[_0x523c('0xe4')]=!![];ami['emit']('custom:amd',ut[_0x523c('0xe9')](_0x28c8ff,_0x523c('0xe4')));_0x63c190[_0x523c('0xc7')](_0x28c8ff)[_0x523c('0xb4')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x28c8ff[_0x523c('0xea')]+_0x28c8ff[_0x523c('0xeb')]+_0x28c8ff[_0x523c('0xec')]+_0x28c8ff[_0x523c('0xed')]+_0x28c8ff['countdropretry']+_0x28c8ff['countabandonedretry']+_0x28c8ff[_0x523c('0xee')]+_0x28c8ff[_0x523c('0xef')]>=_0xaff459[_0x523c('0xf0')]){_0x63c190[_0x523c('0xf1')](_0x28c8ff,_0x4afa7e,_0x2d8338,'reason19\x20machine....');}else{if(_0x28c8ff[_0x523c('0xee')]>=_0xaff459['dialMachineMaxRetry']){_0x63c190['createStateFinal'](_0x28c8ff,_0x4afa7e,_0x2d8338,_0x523c('0xf2'));}else{_0x63c190[_0x523c('0xbc')]({'active':![],'countmachineretry':_0x28c8ff[_0x523c('0xee')],'scheduledat':moment()[_0x523c('0xf3')](_0xaff459[_0x523c('0xf4')],_0x523c('0xf5'))[_0x523c('0x7b')](_0x523c('0xf6')),'ContactId':_0x28c8ff[_0x523c('0xd0')],'ListId':_0x28c8ff['ListId'],'VoiceQueueId':_0x28c8ff[_0x523c('0xd2')]||undefined,'CampaignId':_0x28c8ff[_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0xf8')));_0x4afa7e({'reschedule':0x1});}}});}if(_0x1fe9f9[_0x523c('0x58')]===_0x523c('0x95')&&this[_0x523c('0x24')][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0xde')]&&_0x432b76[_0x523c('0xdf')]==='HANGUP'){delete this['uniqueId'][_0x432b76[_0x523c('0xe1')]];this['updateOriginated'](this[_0x523c('0x24')][_0x1fe9f9[_0x523c('0xaf')]]);_0x123bcc=new Hangup(_0x1fe9f9,_0x432b76);_0x123bcc[_0x523c('0xa5')]=0x12;_0x123bcc[_0x523c('0xa6')]='HangupInAMD';_0x123bcc[_0x523c('0xe3')]=_0x523c('0xe8');ami[_0x523c('0x51')](_0x523c('0xf9'),ut['buildObj'](_0x123bcc,_0x523c('0xe4')));this[_0x523c('0xce')](_0x123bcc,_0x523c('0xfa'),'[syncHangupInAMDIvr]');}if(_0x1fe9f9['type']===_0x523c('0x95')&&this[_0x523c('0x24')][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0xde')]&&_0x432b76[_0x523c('0xdf')]==='MACHINE'){var _0x63c190=this;return new BPromise(function(_0x56e61f,_0x3a092f){delete _0x63c190[_0x523c('0x29')][_0x432b76[_0x523c('0xe1')]];_0x63c190[_0x523c('0xb1')](_0x63c190['campaigns'][_0x1fe9f9[_0x523c('0xaf')]]);_0x63c190[_0x523c('0x24')][_0x1fe9f9['queue']][_0x523c('0x63')]+=0x1;_0x63c190[_0x523c('0x24')][_0x1fe9f9[_0x523c('0xaf')]][_0x523c('0x62')]+=0x1;var _0x34c4c5=_0x63c190[_0x523c('0x24')][_0x1fe9f9[_0x523c('0xaf')]];var _0x198b31=new Hangup(_0x1fe9f9,_0x432b76);_0x198b31['state']=0x13;_0x198b31[_0x523c('0xa6')]=_0x523c('0xe7');_0x198b31[_0x523c('0xe3')]=_0x523c('0xe8');_0x198b31[_0x523c('0xee')]+=0x1;_0x198b31[_0x523c('0xfb')]+=0x1;_0x198b31[_0x523c('0xe4')]=!![];ami[_0x523c('0x51')](_0x523c('0xf9'),ut[_0x523c('0xe9')](_0x198b31,_0x523c('0xe4')));_0x63c190[_0x523c('0xc7')](_0x198b31)[_0x523c('0xb4')](loggerCatch(_0x523c('0xfc')));if(_0x198b31[_0x523c('0xea')]+_0x198b31['countcongestionretry']+_0x198b31[_0x523c('0xec')]+_0x198b31['countnosuchnumberretry']+_0x198b31['countdropretry']+_0x198b31[_0x523c('0xfd')]+_0x198b31[_0x523c('0xee')]+_0x198b31[_0x523c('0xef')]>=_0x34c4c5[_0x523c('0xf0')]){_0x63c190[_0x523c('0xf1')](_0x198b31,_0x56e61f,_0x3a092f,'reason19\x20machine....');}else{if(_0x198b31[_0x523c('0xee')]>=_0x34c4c5[_0x523c('0xfe')]){_0x63c190[_0x523c('0xff')](_0x198b31,_0x56e61f,_0x3a092f,_0x523c('0xf2'));}else{_0x63c190[_0x523c('0xbc')]({'active':![],'countmachineretry':_0x198b31[_0x523c('0xee')],'scheduledat':moment()[_0x523c('0xf3')](_0x34c4c5[_0x523c('0xf4')],_0x523c('0xf5'))[_0x523c('0x7b')](_0x523c('0xf6')),'ContactId':_0x198b31[_0x523c('0xd0')],'ListId':_0x198b31['ListId'],'VoiceQueueId':_0x198b31[_0x523c('0xd2')]||undefined,'CampaignId':_0x198b31[_0x523c('0xf7')]||undefined})['catch'](loggerCatch(_0x523c('0xf8')));_0x56e61f({'reschedule':0x1});}}});}}};Dialer[_0x523c('0x1d')]['syncHangup']=function(_0x22a7cb){var _0x528d87=this[_0x523c('0x29')][_0x22a7cb[_0x523c('0xe1')]];var _0x3c92ae=this;var _0x40fbc1;if(_0x528d87&&_0x528d87[_0x523c('0x58')]===_0x523c('0x95')){delete this[_0x523c('0x29')][_0x22a7cb[_0x523c('0xe1')]];this['updateOriginated'](this[_0x523c('0x24')][_0x528d87[_0x523c('0xaf')]]);this['campaigns'][_0x528d87[_0x523c('0xaf')]][_0x523c('0x100')]+=0x1;_0x40fbc1=new Hangup(_0x528d87,_0x22a7cb);this[_0x523c('0xc7')](_0x40fbc1)['catch'](loggerCatch(_0x523c('0x101')));this[_0x523c('0xc5')](_0x40fbc1)[_0x523c('0xb4')](loggerCatch('[syncHangupIvr]'));}if(_0x528d87&&_0x528d87[_0x523c('0x58')]!==_0x523c('0x95')&&isNotNull(this[_0x523c('0x23')][_0x528d87[_0x523c('0xaf')]][_0x523c('0x102')])){delete this['uniqueId'][_0x22a7cb[_0x523c('0xe1')]];this[_0x523c('0xb1')](this[_0x523c('0x23')][_0x528d87[_0x523c('0xaf')]]);this['voiceQueues'][_0x528d87[_0x523c('0xaf')]][_0x523c('0x63')]+=0x1;this[_0x523c('0x23')][_0x528d87[_0x523c('0xaf')]][_0x523c('0x62')]+=0x1;_0x40fbc1=new Hangup(_0x528d87,_0x22a7cb);_0x40fbc1[_0x523c('0xa5')]=0x10;_0x40fbc1['statedesc']='AnswerAGI';_0x40fbc1[_0x523c('0xe3')]=_0x523c('0x103');this[_0x523c('0xc7')](_0x40fbc1)[_0x523c('0xb4')](loggerCatch(_0x523c('0x101')));this['moveContactManagedDialer'](_0x40fbc1)[_0x523c('0xb4')](loggerCatch(_0x523c('0x104')));}if(_0x528d87&&_0x528d87[_0x523c('0x58')]!=='ivr'&&!isNotNull(this[_0x523c('0x23')][_0x528d87[_0x523c('0xaf')]][_0x523c('0x102')])){delete this[_0x523c('0x29')][_0x22a7cb[_0x523c('0xe1')]];this[_0x523c('0xb1')](this[_0x523c('0x23')][_0x528d87[_0x523c('0xaf')]]);this[_0x523c('0x23')][_0x528d87['queue']]['outboundUnknownCallsDay']+=0x1;_0x40fbc1=new Hangup(_0x528d87,_0x22a7cb);_0x40fbc1['state']=0xc;_0x40fbc1[_0x523c('0xa6')]=_0x22a7cb[_0x523c('0x105')];_0x40fbc1['membername']=_0x523c('0x106');this[_0x523c('0xc7')](_0x40fbc1)[_0x523c('0xb4')](loggerCatch(_0x523c('0x101')));this[_0x523c('0xc5')](_0x40fbc1)[_0x523c('0xb4')](loggerCatch(_0x523c('0x104')));}};Dialer[_0x523c('0x1d')][_0x523c('0x34')]=function(_0x250856){var _0x5ec4ba=this[_0x523c('0x29')][_0x250856[_0x523c('0xe1')]];var _0x2300ed=this;if(this[_0x523c('0x23')][_0x250856[_0x523c('0xaf')]]){if(_0x5ec4ba&&_0x5ec4ba[_0x523c('0x58')]!==_0x523c('0x95')){delete this['uniqueId'][_0x250856[_0x523c('0xe1')]];this[_0x523c('0x23')][_0x250856[_0x523c('0xaf')]][_0x523c('0x63')]+=0x1;var _0x36a7d2=new AgentComplete(_0x5ec4ba,_0x250856);if(_0x250856['reason']===_0x523c('0x107')){_0x36a7d2[_0x523c('0x108')]=this[_0x523c('0x23')][_0x250856['queue']][_0x523c('0x109')]&&this[_0x523c('0x23')][_0x250856[_0x523c('0xaf')]][_0x523c('0x10a')]?moment()[_0x523c('0x7b')](_0x523c('0xf6')):undefined;}this[_0x523c('0xc7')](_0x36a7d2)[_0x523c('0xb4')](loggerCatch(_0x523c('0x10b')));this[_0x523c('0xc5')](_0x36a7d2)[_0x523c('0xb4')](loggerCatch(_0x523c('0x10c')));}}};Dialer[_0x523c('0x1d')][_0x523c('0x10d')]=function(_0x594bdd){if(this['voiceQueues'][_0x594bdd[_0x523c('0xaf')]]){if(this[_0x523c('0x29')][_0x594bdd[_0x523c('0xe1')]]&&this[_0x523c('0x29')][_0x594bdd[_0x523c('0xe1')]][_0x523c('0x58')]!==_0x523c('0x95')){this[_0x523c('0xb1')](this[_0x523c('0x23')][_0x594bdd[_0x523c('0xaf')]]);this[_0x523c('0x29')][_0x594bdd['uniqueid']][_0x523c('0x10e')]=moment()[_0x523c('0x7b')](_0x523c('0xf6'));}}};Dialer['prototype']['queueCallerAbandonCreateState']=function(_0x56162f){this[_0x523c('0xc7')](_0x56162f)[_0x523c('0xb4')](loggerCatch(_0x523c('0x10b')));this[_0x523c('0xc5')](_0x56162f)[_0x523c('0xb4')](loggerCatch(_0x523c('0x10f')));};Dialer['prototype'][_0x523c('0x110')]=function(_0x21694f){var _0x110e33=this[_0x523c('0x29')][_0x21694f[_0x523c('0xe1')]];var _0x475dc3=this;if(this[_0x523c('0x23')][_0x21694f['queue']]){if(_0x110e33&&_0x110e33[_0x523c('0x58')]!=='ivr'){delete this[_0x523c('0x29')][_0x21694f[_0x523c('0xe1')]];this[_0x523c('0xb1')](this['voiceQueues'][_0x21694f['queue']]);_0x110e33[_0x523c('0x111')]=moment()[_0x523c('0x7b')](_0x523c('0xf6'));var _0x532bc4=new QueueCallerAbandon(_0x110e33,_0x21694f);if(getSeconds(_0x110e33['droptime'],_0x110e33[_0x523c('0x112')])>=_0x110e33[_0x523c('0x113')]){this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]][_0x523c('0x6e')]+=0x1;this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]]['outboundDropCallsDayTimeout']+=0x1;this['voiceQueues'][_0x21694f['queue']][_0x523c('0x70')]+=0x1;_0x532bc4[_0x523c('0xa5')]=0xa;_0x532bc4[_0x523c('0xa6')]='Drop';_0x532bc4[_0x523c('0x114')]=_0x523c('0x115');_0x532bc4[_0x523c('0x108')]=this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]][_0x523c('0x109')]?moment()[_0x523c('0x7b')](_0x523c('0xf6')):undefined;_0x532bc4[_0x523c('0x116')]+=0x1;_0x532bc4[_0x523c('0xfb')]+=0x1;if(_0x532bc4[_0x523c('0x116')]>=this['voiceQueues'][_0x21694f['queue']][_0x523c('0x117')]){this[_0x523c('0x118')](_0x532bc4);}else{this[_0x523c('0xbc')]({'active':![],'countdropretry':_0x532bc4[_0x523c('0x116')],'scheduledat':moment()['add'](this[_0x523c('0x23')][_0x21694f['queue']][_0x523c('0x119')],_0x523c('0xf5'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x110e33['ContactId'],'ListId':_0x110e33[_0x523c('0xd1')],'VoiceQueueId':_0x110e33[_0x523c('0xd2')]||undefined,'CampaignId':_0x110e33['CampaignId']||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x11a')));var _0x111ad2=new History(_0x532bc4);_0x111ad2[_0x523c('0xa5')]=0xa;_0x111ad2[_0x523c('0xa6')]=_0x523c('0x11b');_0x111ad2[_0x523c('0xa8')]=moment()[_0x523c('0x7b')](_0x523c('0xf6'));_0x111ad2['endtime']=_0x111ad2[_0x523c('0xa8')];_0x111ad2[_0x523c('0x11c')]=_0x532bc4[_0x523c('0x11c')];_0x111ad2[_0x523c('0x11d')]=_0x532bc4['calleridnum'];this[_0x523c('0xc7')](_0x111ad2)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]][_0x523c('0x67')]+=0x1;_0x532bc4[_0x523c('0xa5')]=0xb;_0x532bc4[_0x523c('0xa6')]=_0x523c('0x11e');_0x532bc4[_0x523c('0x114')]=_0x523c('0x11f');_0x532bc4[_0x523c('0xfd')]+=0x1;_0x532bc4[_0x523c('0xfb')]+=0x1;if(_0x532bc4['countabandonedretry']>=this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]][_0x523c('0x120')]){this['queueCallerAbandonCreateState'](_0x532bc4);}else{this[_0x523c('0xbc')]({'active':![],'countabandonedretry':_0x532bc4[_0x523c('0xfd')],'scheduledat':moment()[_0x523c('0xf3')](this[_0x523c('0x23')][_0x21694f[_0x523c('0xaf')]]['dialAbandonedRetryFrequency'],'minutes')[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x110e33[_0x523c('0xd0')],'ListId':_0x110e33[_0x523c('0xd1')],'VoiceQueueId':_0x110e33[_0x523c('0xd2')]||undefined,'CampaignId':_0x110e33[_0x523c('0xf7')]||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));var _0x111ad2=new History(_0x532bc4);_0x111ad2[_0x523c('0xa5')]=0xb;_0x111ad2['statedesc']=_0x523c('0x11e');_0x111ad2['starttime']=moment()['format'](_0x523c('0xf6'));_0x111ad2[_0x523c('0xa7')]=_0x111ad2['starttime'];_0x111ad2[_0x523c('0x11c')]=_0x532bc4['calleridname'];_0x111ad2[_0x523c('0x11d')]=_0x532bc4[_0x523c('0x11d')];this[_0x523c('0xc7')](_0x111ad2)[_0x523c('0xb4')](loggerCatch(_0x523c('0x121')));}}}}};Dialer[_0x523c('0x1d')][_0x523c('0x37')]=function(_0x54e32d){if(this[_0x523c('0x28')][_0x54e32d['uniqueid']]){this['actions'][_0x54e32d['uniqueid']]['channel']=_0x54e32d[_0x523c('0x122')];}if(this[_0x523c('0x29')][_0x54e32d['uniqueid']]){this[_0x523c('0x29')][_0x54e32d['uniqueid']][_0x523c('0x122')]=_0x54e32d['channel'];}};Dialer[_0x523c('0x1d')][_0x523c('0x39')]=function(_0x8adfc0){if(strategy[this[_0x523c('0x23')][this['actions'][_0x8adfc0[_0x523c('0x123')]]['queue']][_0x523c('0x52')]]===_0x523c('0x1c')){if(this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]]&&_[_0x523c('0xd9')](this['actions'][_0x8adfc0[_0x523c('0x123')]][_0x523c('0x124')])&&_0x8adfc0[_0x523c('0xad')]==='1'&&_0x8adfc0['paused']==='0'){if(this[_0x523c('0x125')][_0x8adfc0[_0x523c('0x126')]]){if(!this[_0x523c('0x125')][_0x8adfc0[_0x523c('0x126')]]['locked']){this[_0x523c('0x125')][_0x8adfc0[_0x523c('0x126')]][_0x523c('0x124')]=!![];this[_0x523c('0x28')][_0x8adfc0['actionid']]['locked']=!![];this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]][_0x523c('0x126')]=_0x8adfc0[_0x523c('0x126')];}}}}else if((strategy[this['voiceQueues'][this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]][_0x523c('0xaf')]][_0x523c('0x52')]]||_0x523c('0x1b'))===_0x523c('0x1b')){if(this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]]){if(this[_0x523c('0x125')][_0x8adfc0['stateinterface']]){this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]][_0x523c('0x126')]=_0x8adfc0[_0x523c('0x126')];if(_['isNil'](this[_0x523c('0x127')][this[_0x523c('0x28')][_0x8adfc0['actionid']]['queue']])){this[_0x523c('0x127')][this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]]['queue']]=[];}this['queueBooked'][this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]][_0x523c('0xaf')]][_0x523c('0x128')](_[_0x523c('0x91')](_['pick'](this[_0x523c('0x28')][_0x8adfc0[_0x523c('0x123')]],[_0x523c('0x129'),_0x523c('0x126')]),{'status':_0x8adfc0['status'],'paused':_0x8adfc0[_0x523c('0x12a')]}));}}}};function unlockQueueStatus(_0x112950,_0x160f25){setTimeout(function(){if(_[_0x523c('0x3f')](_0x112950['queueStatusComplete'])){loggerBooked[_0x523c('0x98')](_0x523c('0x12b'),_0x160f25);}_0x112950[_0x523c('0x12c')]=!![];loggerBooked[_0x523c('0x7f')](_0x523c('0x12d'),_0x160f25,JSON[_0x523c('0x4d')](_[_0x523c('0xcf')](_0x112950,[_0x523c('0x42'),'queueStatusComplete'])));},0x1f3);}Dialer[_0x523c('0x1d')][_0x523c('0x3b')]=function(_0x388015){var _0x497384=this;var _0x5ef01b=_0x497384['voiceQueues'][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]];if(strategy[this[_0x523c('0x23')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['queue']]['strategy']]===_0x523c('0x1c')){if(this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]&&this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0x126')]){this[_0x523c('0x22')][_0x523c('0x12e')](this['actions'][_0x388015['actionid']][_0x523c('0x129')],this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0x126')])[_0x523c('0xb4')](function(_0xfb9d7){logger['error'](_0x523c('0x12f'),util[_0x523c('0xcc')](_0xfb9d7,{'showHidden':![],'depth':null}));})[_0x523c('0x20')](function(){_0x497384[_0x523c('0xb1')](_0x497384[_0x523c('0x23')][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]);_0x497384[_0x523c('0x125')][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['stateinterface']][_0x523c('0x124')]=![];delete _0x497384['actions'][_0x388015['actionid']];unlockQueueStatus(_0x5ef01b);});}else{this['updateOriginated'](this[_0x523c('0x23')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]);this[_0x523c('0xbc')]({'active':![],'ContactId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd0')],'ListId':this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0xd1')],'VoiceQueueId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd2')]||undefined,'CampaignId':this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]];unlockQueueStatus(_0x5ef01b);}}else if((strategy[this['voiceQueues'][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]['strategy']]||'rrmemory')==='rrmemory'){var _0x5b449f;if(this[_0x523c('0x28')][_0x388015['actionid']]&&!_[_0x523c('0x4a')](this[_0x523c('0x127')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['queue']])){if(this['queueBookedRR'][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['queue']]){this['queueBookedRR'][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]=this[_0x523c('0x2e')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['queue']]?this[_0x523c('0x2e')][this['actions'][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]:this[_0x523c('0x127')][this['actions'][_0x388015['actionid']][_0x523c('0xaf')]]?this[_0x523c('0x127')][this['actions'][_0x388015['actionid']]['queue']][_0x523c('0x130')]||0x0:0x0;}this[_0x523c('0x127')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]['_rr']=this[_0x523c('0x2e')][this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0xaf')]];for(var _0x2644cf=0x0;_0x2644cf<this[_0x523c('0x127')][this['actions'][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]][_0x523c('0x131')];_0x2644cf+=0x1){_0x5b449f=rr(this[_0x523c('0x127')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]);this['queueBookedRR'][_0x497384['actions'][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]=this[_0x523c('0x127')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]['_rr'];if(_0x5b449f['status']==='1'&&_0x5b449f['paused']==='0'){break;}}if(!_[_0x523c('0xd9')](_0x5b449f)){this[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]]['unlockRR']=_[_0x523c('0x3f')](this[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]][_0x523c('0x132')])?!![]:this[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]][_0x523c('0x132')];}loggerBooked[_0x523c('0x7f')](_0x523c('0x133'),_0x388015[_0x523c('0x123')],_0x523c('0x134'),JSON['stringify'](_[_0x523c('0xcf')](this['agents'][_0x5b449f['stateinterface']],[_0x523c('0x42'),'unlockRR'])),_0x523c('0x135'),JSON[_0x523c('0x4d')](_0x5b449f[_0x523c('0x129')]));if(!_['isNil'](_0x5b449f)&&_0x5b449f[_0x523c('0xad')]==='1'&&_0x5b449f[_0x523c('0x12a')]==='0'&&this[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]][_0x523c('0x132')]){this[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]][_0x523c('0x132')]=![];this['queueBooked'][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]=[];this['preview'][_0x523c('0x12e')](_0x5b449f[_0x523c('0x129')],_0x5b449f[_0x523c('0x126')])['catch'](function(_0x287494){logger[_0x523c('0x98')](_0x523c('0x12f'),util[_0x523c('0xcc')](_0x287494,{'showHidden':![],'depth':null}));})['finally'](function(){_0x497384[_0x523c('0xb1')](_0x497384[_0x523c('0x23')][_0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]);setTimeout(function(){_0x497384[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]][_0x523c('0x132')]=!![];loggerBooked['info']('[booked][RR][finaly]',_0x388015[_0x523c('0x123')],'Agent:\x20',JSON['stringify'](_[_0x523c('0xcf')](_0x497384[_0x523c('0x125')][_0x5b449f[_0x523c('0x126')]],['name','unlockRR'])),_0x523c('0x135'),JSON['stringify'](_0x5b449f[_0x523c('0x129')]));},0xc7);delete _0x497384[_0x523c('0x28')][_0x388015[_0x523c('0x123')]];unlockQueueStatus(_0x5ef01b,_0x388015[_0x523c('0x123')]);});}else{loggerBooked[_0x523c('0x7f')]('[booked][unlock]');this[_0x523c('0xb1')](this[_0x523c('0x23')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['queue']]);this[_0x523c('0xbc')]({'active':![],'ContactId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd0')],'ListId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd1')],'VoiceQueueId':this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0xd2')]||undefined,'CampaignId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x136')));delete this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]];unlockQueueStatus(_0x5ef01b);}}else{loggerBooked['info'](_0x523c('0x137'));this[_0x523c('0xb1')](this[_0x523c('0x23')][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd0')],'ListId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd1')],'VoiceQueueId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd2')]||undefined,'CampaignId':this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x138')));delete this['actions'][_0x388015[_0x523c('0x123')]];unlockQueueStatus(_0x5ef01b);}}else{loggerBooked[_0x523c('0x7f')](_0x523c('0x139'));this['updateOriginated'](this['voiceQueues'][this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xaf')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]][_0x523c('0xd0')],'ListId':this['actions'][_0x388015[_0x523c('0x123')]][_0x523c('0xd1')],'VoiceQueueId':this['actions'][_0x388015[_0x523c('0x123')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x523c('0x28')][_0x388015['actionid']][_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x13a')));delete this[_0x523c('0x28')][_0x388015[_0x523c('0x123')]];unlockQueueStatus(_0x5ef01b);}};Dialer[_0x523c('0x1d')][_0x523c('0x13b')]=function(){var _0x258c28=this;return BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](cmHopper['resetActiveCalls']({}))[_0x523c('0x3d')](function(){setInterval(function(){_0x258c28[_0x523c('0x13c')]();},0x3e8);});};Dialer['prototype'][_0x523c('0x13d')]=function(_0x3aed19){var _0xfe5ace=this;return function(){if(!_0xfe5ace[_0x523c('0xd5')](_0x3aed19[_0x523c('0x78')])){if(!_0xfe5ace[_0x523c('0xd5')](_0x3aed19['TrunkBackup'])){_0x3aed19[_0x523c('0x40')]=_0x523c('0x13e');throw _0x3aed19['name']+_0x523c('0x13f');}}};};Dialer[_0x523c('0x1d')]['checkIfTime']=function(_0x2aed55,_0x1e1bd3,_0x585799,_0x4b0d08){var _0x1193bf=this;return function(){var _0x5e350b=!![];return _0x1193bf[_0x523c('0x140')](_0x2aed55,_0x1e1bd3,_0x585799,_0x4b0d08,_0x5e350b);};};Dialer[_0x523c('0x1d')]['checkIfTimeIntervals']=function(_0x5837dc,_0x17f729,_0x4e2a8a,_0x2949bf){var _0x31846e=this;return function(){var _0x4aa62b=![];return _0x31846e['ifTime'](_0x5837dc[_0x523c('0x49')],_0x17f729,_0x4e2a8a,_0x2949bf,_0x4aa62b);};};Dialer[_0x523c('0x1d')][_0x523c('0x140')]=function(_0x292775,_0x42939f,_0x13e3d9,_0x4d7a12,_0xb2ae73){var _0xa97385=[];return new BPromise(function(_0x513ba0,_0xdc3d10){if(!isNotNull(_0x292775)){_0x4d7a12[_0x523c('0x40')]=_0x523c('0x46');return _0xdc3d10(msgResponse(_0x523c('0x140'),'Failure',_0x13e3d9+_0x523c('0x141')));}if(_['isEmpty'](_0x292775)){_0x4d7a12[_0x523c('0x40')]=_0x523c('0x142');return _0xdc3d10(msgResponse(_0x523c('0x140'),_0x523c('0x143'),_0x13e3d9+'\x20Intervals\x20is\x20empty\x20'));}if(_0x42939f&&_[_0x523c('0x3f')](config['timezones'][_0x42939f])){_0x4d7a12[_0x523c('0x40')]=_0x523c('0x144');return _0xdc3d10(msgResponse(_0x523c('0x140'),_0x523c('0x143'),_0x13e3d9+_0x523c('0x145')+_0x42939f));}if(_[_0x523c('0x146')](_0x292775)){for(var _0xb9fe87=0x0;_0xb9fe87<_0x292775[_0x523c('0x131')];_0xb9fe87+=0x1){_0xa97385[_0x523c('0x128')](ami[_0x523c('0xac')]({'action':_0x523c('0x147'),'command':util[_0x523c('0x7b')](_0x523c('0x148'),_0x292775[_0xb9fe87][_0x523c('0x149')],!_['isUndefined'](config[_0x523c('0x14a')][_0x42939f])?_0x42939f:'')})[_0x523c('0x3d')](function(_0x33c231){return _0x33c231[_0x523c('0x14b')][_0x523c('0x14c')](_0x523c('0x14d'))>=0x0;})[_0x523c('0xb4')](myreject(_0xdc3d10)));}}else{_0xa97385[_0x523c('0x128')](ami[_0x523c('0xac')]({'action':'command','command':util[_0x523c('0x7b')]('iftime\x20%s,%s',_0x292775,!_['isUndefined'](config[_0x523c('0x14a')][_0x42939f])?_0x42939f:'')})[_0x523c('0x3d')](function(_0x194c90){return _0x194c90[_0x523c('0x14b')]['indexOf'](_0x523c('0x14d'))>=0x0;})[_0x523c('0xb4')](myreject(_0xdc3d10)));}BPromise[_0x523c('0x14e')](_0xa97385)[_0x523c('0x3d')](function(_0x358b0a){var _0x2f2ccf=_[_0x523c('0x14f')](_0x358b0a);if(_0x2f2ccf){return _0x513ba0(_0x2f2ccf);}else{_0x4d7a12[_0x523c('0x40')]=_0xb2ae73?_0x523c('0x150'):_0x523c('0x151');return _0xdc3d10(msgResponse(_0x523c('0x152'),_0x523c('0x143'),_0x523c('0x153')+_0xb2ae73+'\x20'+_0x13e3d9+_0x523c('0x154')+util[_0x523c('0xcc')](_0x292775,{'showHidden':![],'depth':null})+_0x523c('0x155')+_0x42939f));}})[_0x523c('0xb4')](function(_0x25629c){return _0xdc3d10(msgResponse(_0x523c('0x140'),_0x523c('0x143'),JSON[_0x523c('0x4d')](_0x25629c)));});});};Dialer[_0x523c('0x1d')][_0x523c('0x156')]=function(_0x6027ea){var _0x48d419=this;return function(){switch(_0x6027ea['dialMethod']){case _0x523c('0x157'):freeVariablesPredictive(_0x6027ea);_0x48d419[_0x523c('0x158')](_0x6027ea,0x1);break;case _0x523c('0x159'):freeVariablesPredictive(_0x6027ea);_0x48d419[_0x523c('0x158')](_0x6027ea,_0x6027ea[_0x523c('0x15a')]);break;case'predictive':_0x48d419[_0x523c('0x15b')](_0x6027ea);break;case _0x523c('0xa'):freeVariablesPredictive(_0x6027ea);_0x48d419['handlePower'](_0x6027ea,0x1);break;default:freeVariablesPredictive(_0x6027ea);logger[_0x523c('0x98')](_0x523c('0x15c'),_0x6027ea[_0x523c('0x42')],_0x523c('0x15d'));}};};Dialer[_0x523c('0x1d')][_0x523c('0x15e')]=function(_0x4344f7){return BPromise['resolve']()[_0x523c('0x3d')](cmHopper[_0x523c('0x15f')](_0x4344f7['id'],previewRecallmeReminderInterval))[_0x523c('0x3d')](function(_0x38722c){for(var _0x496125=0x0;_0x496125<_0x38722c[_0x523c('0x131')];_0x496125++){var _0x2828c=_0x38722c[_0x496125][_0x523c('0x160')][_0x523c('0x42')];if(_0x2828c)io['to'](util[_0x523c('0x7b')]('user:%s',_0x2828c))[_0x523c('0x51')](_0x523c('0x161'),{'hopper':_0x38722c[_0x496125]});}})['catch'](function(_0x487e38){});};Dialer[_0x523c('0x1d')]['launchHandleIvr']=function(_0x9e4f24){var _0x1df8f9=this;return function(){_0x1df8f9[_0x523c('0x162')](_0x9e4f24);};};Dialer['prototype'][_0x523c('0x35')]=function(_0x40599b){var _0x1eff6a=this;if(isNotPreview(_0x40599b['dialMethod'])){if(isVoiceQueueOutbound(_0x40599b[_0x523c('0x58')])&&isActive(_0x40599b[_0x523c('0x5d')])){_0x40599b['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0x523c('0x3d')](checkIsLoggedIn(_0x40599b,_0x40599b[_0x523c('0x163')]))['then'](checkIsActive(_0x40599b,_0x40599b[_0x523c('0x5d')]))[_0x523c('0x3d')](checkInterval(_0x40599b))[_0x523c('0x3d')](_0x1eff6a[_0x523c('0x13d')](_0x40599b))['then'](_0x1eff6a['checkIfTime'](_0x40599b[_0x523c('0x164')],_0x40599b['dialTimezone'],_0x40599b[_0x523c('0x42')],_0x40599b))[_0x523c('0x3d')](_0x1eff6a[_0x523c('0x165')](_0x40599b[_0x523c('0x48')],_0x40599b[_0x523c('0x166')],_0x40599b[_0x523c('0x42')],_0x40599b))[_0x523c('0x3d')](_0x1eff6a['checkDialMethod'](_0x40599b))[_0x523c('0xb4')](loggerCatchQueueSummary(_0x523c('0x167'),_0x40599b));}else{notSendMessagesQueue(_0x40599b);}}else{freeVariablesPredictive(_0x40599b);if(_0x40599b[_0x523c('0x168')]){_0x1eff6a['checkPreviewRecallReminder'](_0x40599b);}}};Dialer[_0x523c('0x1d')]['syncCampaigns']=function(){var _0x402734=this;var _0xe78949;for(var _0x17b980 in this[_0x523c('0x24')]){if(typeof this[_0x523c('0x24')][_0x17b980]!==_0x523c('0x9a')){_0xe78949=this[_0x523c('0x24')][_0x17b980];if(isCampaignIvr(_0xe78949[_0x523c('0x58')])&&isActive(_0xe78949[_0x523c('0x79')])){_0xe78949['sendMessageOneNotActive']=!![];BPromise[_0x523c('0xb2')]()[_0x523c('0x3d')](checkIsActive(_0xe78949,_0xe78949[_0x523c('0x79')]))['then'](checkInterval(_0xe78949))[_0x523c('0x3d')](_0x402734['checkIsTrunkReachable'](_0xe78949))['then'](_0x402734[_0x523c('0x169')](_0xe78949[_0x523c('0x164')],_0xe78949[_0x523c('0x166')],_0xe78949[_0x523c('0x42')],_0xe78949))[_0x523c('0x3d')](_0x402734['checkIfTimeIntervals'](_0xe78949[_0x523c('0x48')],_0xe78949[_0x523c('0x166')],_0xe78949['name'],_0xe78949))[_0x523c('0x3d')](_0x402734[_0x523c('0x16a')](_0xe78949))[_0x523c('0xb4')](loggerCatchQueueSummary(_0x523c('0x16b'),_0xe78949));}else{notSendMessagesCampaign(_0xe78949);}}}};function getCallerIdRandom(_0x3fa507,_0x357d4e){var _0x2196e4;var _0x18a0b1;var _0x2214d7;if(_0x357d4e<=0x0){_0x357d4e=0x1;}_0x2196e4=new RegExp(_0x523c('0x16c')+_0x357d4e+'}$');_0x18a0b1=Math[_0x523c('0x16d')](0xa,_0x357d4e-0x1);_0x2214d7=Math[_0x523c('0x16d')](0xa,_0x357d4e)-0x1;return util[_0x523c('0x7b')]('%s',_[_0x523c('0x16e')](_0x3fa507,_0x2196e4,_[_0x523c('0x16f')](_0x18a0b1,_0x2214d7)));}function extractCalleridName(_0x5dc7ed){var _0x4932e6=_0x5dc7ed[_0x523c('0x170')](/"(.*?)"/);return _0x4932e6?_0x4932e6[0x1]:_0x5dc7ed;}function extractCalleridNumber(_0x3b3729){var _0x3dd507=_0x3b3729[_0x523c('0x170')](/<(.*?)>/);return _0x3dd507?_0x3dd507[0x1]:_0x3b3729;}Dialer[_0x523c('0x1d')]['actionOriginate']=function(_0x4b6d1a,_0x3c597a){var _0x42101f=this;var _0x157d34=uuid['v4']();this[_0x523c('0x28')][_0x157d34]=new Action(_0x4b6d1a,_0x3c597a,_0x157d34);return new BPromise(function(_0x123cca,_0x11c824){if(_[_0x523c('0x3f')](_0x4b6d1a)&&typeof _0x4b6d1a!==_0x523c('0x171')){return _0x11c824(msgResponse('originate',_0x523c('0x143'),_0x523c('0x172')));}if(_[_0x523c('0x3f')](_0x3c597a[_0x523c('0x173')][_0x523c('0x174')])||_0x3c597a['Contact'][_0x523c('0x174')]===null){return _0x11c824(msgResponse(_0x523c('0x175'),_0x523c('0x143'),'contact\x20is\x20undefine'));}var _0x14c8bc={'XMD-CALLERID':_0x42101f[_0x523c('0x28')][_0x157d34][_0x523c('0x176')](),'XMD-AGI':_0x4b6d1a[_0x523c('0x102')]?util[_0x523c('0x7b')](_0x523c('0x177'),ipAgi,_0x4b6d1a[_0x523c('0x102')]):_0x523c('0x178'),'XMD-AGIAFTER':_0x4b6d1a[_0x523c('0x109')]?util[_0x523c('0x7b')](_0x523c('0x177'),ipAgi,_0x4b6d1a[_0x523c('0x109')]):_0x523c('0x178'),'XMD-QUEUE':_0x4b6d1a[_0x523c('0x58')]===_0x523c('0x94')?util[_0x523c('0x7b')](_0x523c('0x179'),_0x4b6d1a['name'],_0x4b6d1a[_0x523c('0x17a')]||'',_0x4b6d1a['dialAgiAfterHangupAgent']?'c':'',_0x4b6d1a[_0x523c('0x113')]||0x3):_0x523c('0x178'),'XMD-CONTACTID':_0x3c597a[_0x523c('0xd0')],'XMD-CDRTYPE':_0x523c('0x9'),'CALLERID(all)':_0x42101f[_0x523c('0x28')][_0x157d34][_0x523c('0x176')](),'XMD-AMD':_0x4b6d1a[_0x523c('0xde')]?_0x523c('0x17b'):_0x523c('0x178'),'XMD-DESTINATION':_0x523c('0xdd')};if(_0x4b6d1a['dialAMDActive']){_0x14c8bc[_0x523c('0x17c')]=_0x4b6d1a[_0x523c('0x17d')]||0x9c4;_0x14c8bc[_0x523c('0x17e')]=_0x4b6d1a[_0x523c('0x17f')]||0x5dc;_0x14c8bc[_0x523c('0x180')]=_0x4b6d1a[_0x523c('0x181')]||0x320;_0x14c8bc[_0x523c('0x182')]=_0x4b6d1a[_0x523c('0x183')]||0x1388;_0x14c8bc[_0x523c('0x184')]=_0x4b6d1a['dialAMDMinWordLength']||0x64;_0x14c8bc[_0x523c('0x185')]=_0x4b6d1a[_0x523c('0x186')]||0x32;_0x14c8bc[_0x523c('0x187')]=_0x4b6d1a[_0x523c('0x188')]||0x3;_0x14c8bc[_0x523c('0x189')]=_0x4b6d1a[_0x523c('0x18a')]||0x100;_0x14c8bc[_0x523c('0x18b')]=_0x4b6d1a[_0x523c('0x18c')]||0x1388;}if(_0x4b6d1a[_0x523c('0x58')]===_0x523c('0x94')){_0x14c8bc[_0x523c('0x18d')]=_0x3c597a[_0x523c('0xd2')];}else{_0x14c8bc[_0x523c('0x18e')]=_0x3c597a['CampaignId'];}for(var _0x152a95 in _0x3c597a[_0x523c('0x173')]){if(typeof _0x3c597a[_0x523c('0x173')][_0x152a95]!==_0x523c('0x9a')){if(isNotNull(_0x3c597a[_0x523c('0x173')][_0x152a95])&&_0x152a95!=='id'&&_0x152a95!==_0x523c('0x18f')&&_0x152a95!==_0x523c('0x190')&&_0x152a95!==_0x523c('0x191')){_0x14c8bc[util[_0x523c('0x7b')](_0x523c('0x192'),_0x523c('0x193'),_[_0x523c('0x194')](_0x152a95))]=_0x3c597a['Contact'][_0x152a95];}}}var _0x112acc=_0x42101f[_0x523c('0xd5')](_0x4b6d1a['Trunk'])?getCallerId(_0x4b6d1a[_0x523c('0x78')]['callerid'],_0x4b6d1a[_0x523c('0x5f')],_0x4b6d1a[_0x523c('0x195')]>0x0?getCallerIdRandom(_0x4b6d1a[_0x523c('0x60')],_0x4b6d1a[_0x523c('0x195')]):_0x4b6d1a['dialOriginateCallerIdNumber']):getCallerId(_[_0x523c('0xd9')](_0x4b6d1a[_0x523c('0x196')])?_0x4b6d1a[_0x523c('0x78')][_0x523c('0x7a')]:_0x4b6d1a[_0x523c('0x196')][_0x523c('0x7a')],_0x4b6d1a['dialOriginateCallerIdName'],_0x4b6d1a['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x4b6d1a[_0x523c('0x60')],_0x4b6d1a[_0x523c('0x195')]):_0x4b6d1a[_0x523c('0x60')]);if(_0x112acc){_0x14c8bc[_0x523c('0x197')]=_0x42101f[_0x523c('0x28')][_0x157d34][_0x523c('0x198')]=extractCalleridName(_0x112acc);_0x14c8bc['XMD-ORIGINATECALLERIDNUM']=_0x42101f[_0x523c('0x28')][_0x157d34]['originatecalleridnum']=extractCalleridNumber(_0x112acc);}return ami[_0x523c('0xac')]({'actionid':_0x157d34,'action':_0x523c('0x175'),'channel':_0x42101f[_0x523c('0xd5')](_0x4b6d1a[_0x523c('0x78')])?util[_0x523c('0x7b')]('SIP/%s/%s%s',_0x4b6d1a[_0x523c('0x78')][_0x523c('0x42')],isNotNull(_0x4b6d1a[_0x523c('0x61')])?_0x4b6d1a[_0x523c('0x61')][_0x523c('0x199')]()||'':'',_0x4b6d1a[_0x523c('0x19a')]>0x0?_0x3c597a['Contact'][_0x523c('0x174')][_0x523c('0x19b')](_0x4b6d1a[_0x523c('0x19a')]):_0x3c597a[_0x523c('0x173')][_0x523c('0x174')]):util['format'](_0x523c('0x19c'),_[_0x523c('0xd9')](_0x4b6d1a[_0x523c('0x196')])?_0x4b6d1a[_0x523c('0x78')][_0x523c('0x42')]:_0x4b6d1a[_0x523c('0x196')]['name'],isNotNull(_0x4b6d1a[_0x523c('0x61')])?_0x4b6d1a[_0x523c('0x61')][_0x523c('0x199')]()||'':'',_0x4b6d1a[_0x523c('0x19a')]>0x0?_0x3c597a[_0x523c('0x173')][_0x523c('0x174')][_0x523c('0x19b')](_0x4b6d1a[_0x523c('0x19a')]):_0x3c597a[_0x523c('0x173')][_0x523c('0x174')]),'callerid':_0x112acc,'Exten':_0x523c('0xdd'),'Context':_0x523c('0x19d'),'Priority':'1','variable':_0x14c8bc,'timeout':(_0x4b6d1a['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x157d34})[_0x523c('0x3d')](function(_0x549c14){return _0x123cca(_0x549c14);})[_0x523c('0xb4')](function(_0x4ac108){_0x4b6d1a[_0x523c('0x19e')]+=0x1;var _0x4a4007=new History(_0x42101f[_0x523c('0x28')][_0x157d34]);logger[_0x523c('0x98')](util[_0x523c('0x7b')](_0x523c('0x19f'),JSON[_0x523c('0x4d')](_0x4ac108)));_0x4a4007[_0x523c('0xa5')]=0xe;_0x4a4007[_0x523c('0xa6')]=_0x523c('0x1a0');_0x4a4007[_0x523c('0xa8')]=moment()[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4a4007[_0x523c('0xa7')]=_0x4a4007[_0x523c('0xa8')];_0x42101f['createHistory'](_0x4a4007)['catch'](loggerCatch(_0x523c('0x1a1')));_0x42101f[_0x523c('0xc5')](_0x4a4007)[_0x523c('0xb4')](loggerCatch(_0x523c('0x1a1')))['finally'](function(){delete _0x42101f['actions'][_0x157d34];return _0x11c824(msgResponse(_0x523c('0x175'),_0x523c('0x4c'),_0x523c('0x1a2')));});});});};Dialer[_0x523c('0x1d')][_0x523c('0x32')]=function(_0x3afb92){var _0x224434=this['actions'][_0x3afb92[_0x523c('0x123')]];if(_0x224434){delete this[_0x523c('0x28')][_0x3afb92[_0x523c('0x123')]];_0x224434[_0x523c('0x112')]=moment()[_0x523c('0x7b')](_0x523c('0xf6'));var _0x1da5cd=_0x224434[_0x523c('0x58')]===_0x523c('0x95')?this[_0x523c('0x24')][_0x224434[_0x523c('0xaf')]]:this[_0x523c('0x23')][_0x224434[_0x523c('0x1a3')]()];if(!this[_0x523c('0x1a4')](_0x3afb92[_0x523c('0x1a5')])){this[_0x523c('0xb1')](_0x1da5cd);return this[_0x523c('0x1a6')](_0x224434,_0x1da5cd,_0x3afb92)[_0x523c('0xb4')](loggerCatch(_0x523c('0x1a7')));}this[_0x523c('0x29')][_0x3afb92[_0x523c('0xe1')]]=_0x224434;}};Dialer[_0x523c('0x1d')][_0x523c('0x1a8')]=function(_0x1a1b80,_0x59e66a,_0xe0210){var _0x52238b=new History(_0x59e66a);if(_0x52238b['countbusyretry']+_0x52238b['countcongestionretry']+_0x52238b[_0x523c('0xec')]+_0x52238b['countnosuchnumberretry']+_0x52238b[_0x523c('0x116')]+_0x52238b[_0x523c('0xfd')]+_0x52238b['countmachineretry']+_0x52238b[_0x523c('0xef')]>=_0xe0210[_0x523c('0xf0')]-0x1){return!![];}switch(_0x1a1b80){case 0x3:if(_0x52238b[_0x523c('0xec')]>=_0xe0210[_0x523c('0x1a9')]-0x1){return!![];}this[_0x523c('0xbc')]({'active':![],'countnoanswerretry':_0x52238b[_0x523c('0xec')]+=0x1,'scheduledat':moment()[_0x523c('0xf3')](_0xe0210['dialNoAnswerRetryFrequency'],'minutes')[_0x523c('0x7b')](_0x523c('0xf6')),'ContactId':_0x52238b[_0x523c('0xd0')],'ListId':_0x52238b[_0x523c('0xd1')],'VoiceQueueId':_0x52238b['VoiceQueueId']||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x1aa')));break;case 0x5:if(_0x52238b[_0x523c('0xea')]>=_0xe0210['dialBusyMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x52238b[_0x523c('0xea')]+=0x1,'scheduledat':moment()[_0x523c('0xf3')](_0xe0210[_0x523c('0x1ab')],_0x523c('0xf5'))[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52238b['ContactId'],'ListId':_0x52238b[_0x523c('0xd1')],'VoiceQueueId':_0x52238b[_0x523c('0xd2')]||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})['catch'](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x52238b['countcongestionretry']>=_0xe0210[_0x523c('0x1ac')]-0x1){return!![];}this[_0x523c('0xbc')]({'active':![],'countcongestionretry':_0x52238b[_0x523c('0xeb')]+=0x1,'scheduledat':moment()[_0x523c('0xf3')](_0xe0210[_0x523c('0x1ad')],'minutes')[_0x523c('0x7b')](_0x523c('0xf6')),'ContactId':_0x52238b[_0x523c('0xd0')],'ListId':_0x52238b[_0x523c('0xd1')],'VoiceQueueId':_0x52238b[_0x523c('0xd2')]||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x52238b['countnosuchnumberretry']>=_0xe0210[_0x523c('0x1ae')]-0x1){return!![];}else{this[_0x523c('0xbc')]({'active':![],'countnosuchnumberretry':_0x52238b[_0x523c('0xed')]+=0x1,'scheduledat':moment()['add'](_0xe0210[_0x523c('0x1af')],_0x523c('0xf5'))[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52238b[_0x523c('0xd0')],'ListId':_0x52238b[_0x523c('0xd1')],'VoiceQueueId':_0x52238b[_0x523c('0xd2')]||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})['catch'](loggerCatch(_0x523c('0x1b0')));}break;case 0xa:if(_0x52238b[_0x523c('0x116')]>=_0xe0210[_0x523c('0x117')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x52238b[_0x523c('0x116')]+=0x1,'scheduledat':moment()['add'](_0xe0210['dialDropRetryFrequency'],'minutes')[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52238b[_0x523c('0xd0')],'ListId':_0x52238b['ListId'],'VoiceQueueId':_0x52238b[_0x523c('0xd2')]||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})['catch'](loggerCatch(_0x523c('0x11a')));break;case 0xb:if(_0x52238b[_0x523c('0xfd')]>=_0xe0210['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x523c('0xbc')]({'active':![],'countabandonedretry':_0x52238b[_0x523c('0xfd')]+=0x1,'scheduledat':moment()[_0x523c('0xf3')](_0xe0210['dialAbandonedRetryFrequency'],'minutes')[_0x523c('0x7b')](_0x523c('0xf6')),'ContactId':_0x52238b[_0x523c('0xd0')],'ListId':_0x52238b[_0x523c('0xd1')],'VoiceQueueId':_0x52238b[_0x523c('0xd2')]||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})['catch'](loggerCatch(_0x523c('0x1b1')));break;case 0x13:if(_0x52238b[_0x523c('0xee')]>=_0xe0210['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x52238b[_0x523c('0xee')]+=0x1,'scheduledat':moment()['add'](_0xe0210[_0x523c('0xf4')],_0x523c('0xf5'))[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52238b['ContactId'],'ListId':_0x52238b['ListId'],'VoiceQueueId':_0x52238b[_0x523c('0xd2')]||undefined,'CampaignId':_0x52238b[_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x52238b[_0x523c('0xef')]>=_0xe0210[_0x523c('0x1b2')]-0x1){return!![];}this[_0x523c('0xbc')]({'active':![],'countagentrejectretry':_0x52238b[_0x523c('0xef')]+=0x1,'scheduledat':moment()[_0x523c('0xf3')](_0xe0210[_0x523c('0x1b3')],_0x523c('0xf5'))[_0x523c('0x7b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52238b[_0x523c('0xd0')],'ListId':_0x52238b[_0x523c('0xd1')],'VoiceQueueId':_0x52238b['VoiceQueueId']||undefined,'CampaignId':_0x52238b['CampaignId']||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x1b4')));break;default:return!![];}};Dialer[_0x523c('0x1d')][_0x523c('0x1a6')]=function(_0x34f1be,_0x479a1a,_0x5b2688){var _0x1287b7=this;var _0x2a107e=new History(_0x34f1be);return new BPromise(function(_0x1c0375,_0x1114aa){if(_['isUndefined'](_0x479a1a)&&typeof _0x479a1a!=='object'){return _0x1114aa(msgResponse('[callProgressDetecting]',_0x523c('0x143'),'entity\x20is\x20undefine'));}if(_[_0x523c('0x3f')](_0x5b2688)&&typeof _0x5b2688!=='object'){return _0x1114aa(msgResponse(_0x523c('0x1b5'),_0x523c('0x143'),_0x523c('0x1b6')));}switch(_0x5b2688[_0x523c('0x1b7')]){case'0':_0x479a1a['outboundNoSuchCallsDay']+=0x1;_0x2a107e['state']=0x0;_0x2a107e[_0x523c('0xa6')]=_0x523c('0x1b8');_0x2a107e['countnosuchnumberretry']+=0x1;_0x2a107e[_0x523c('0xfb')]+=0x1;ami[_0x523c('0x51')]('custom:agentnosuchnumber',ut[_0x523c('0xe9')](_0x34f1be,_0x523c('0x1b9')));_0x1287b7[_0x523c('0xc7')](_0x2a107e)[_0x523c('0xb4')](loggerCatch(_0x523c('0xfc')));if(_0x1287b7[_0x523c('0x1a8')](0x0,_0x34f1be,_0x479a1a)){if(_0x2a107e[_0x523c('0xed')]>=_0x479a1a[_0x523c('0x1ae')]){_0x1287b7['createStateFinal'](_0x2a107e,_0x1c0375,_0x1114aa,'reason\x200\x20no\x20such\x20number....');}else{_0x1287b7['stateGlobal'](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1ba'));}}break;case'3':_0x479a1a[_0x523c('0x69')]+=0x1;_0x2a107e[_0x523c('0xa5')]=0x3;_0x2a107e[_0x523c('0xa6')]='NoAnswer';_0x2a107e[_0x523c('0xec')]+=0x1;_0x2a107e[_0x523c('0xfb')]+=0x1;ami[_0x523c('0x51')]('custom:agentnoanswer',ut['buildObj'](_0x34f1be,'noanswer'));_0x1287b7[_0x523c('0xc7')](_0x2a107e)[_0x523c('0xb4')](loggerCatch(_0x523c('0x1bb')));if(_0x1287b7[_0x523c('0x1a8')](0x3,_0x34f1be,_0x479a1a)){if(_0x2a107e[_0x523c('0xec')]>=_0x479a1a[_0x523c('0x1a9')]){_0x1287b7[_0x523c('0xff')](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1bc'));}else{_0x1287b7[_0x523c('0xf1')](_0x2a107e,_0x1c0375,_0x1114aa,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x479a1a['outboundBusyCallsDay']+=0x1;_0x2a107e[_0x523c('0xa5')]=0x5;_0x2a107e[_0x523c('0xa6')]=_0x523c('0x1bd');_0x2a107e[_0x523c('0xea')]+=0x1;_0x2a107e[_0x523c('0xfb')]+=0x1;ami[_0x523c('0x51')]('custom:agentbusy',ut[_0x523c('0xe9')](_0x34f1be,'busy'));_0x1287b7[_0x523c('0xc7')](_0x2a107e)['catch'](loggerCatch(_0x523c('0x1be')));if(_0x1287b7[_0x523c('0x1a8')](0x5,_0x34f1be,_0x479a1a)){if(_0x2a107e[_0x523c('0xea')]>=_0x479a1a[_0x523c('0x1bf')]){_0x1287b7[_0x523c('0xff')](_0x2a107e,_0x1c0375,_0x1114aa,'reason\x205\x20busy');}else{_0x1287b7[_0x523c('0xf1')](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1c0'));}}break;case'8':_0x479a1a[_0x523c('0x65')]+=0x1;_0x2a107e[_0x523c('0xa5')]=0x8;_0x2a107e['statedesc']=_0x523c('0x1c1');_0x2a107e[_0x523c('0xeb')]+=0x1;_0x2a107e['countglobal']+=0x1;ami[_0x523c('0x51')](_0x523c('0x1c2'),ut['buildObj'](_0x34f1be,'congestion'));_0x1287b7['createHistory'](_0x2a107e)[_0x523c('0xb4')](loggerCatch(_0x523c('0x1c3')));if(_0x1287b7[_0x523c('0x1a8')](0x8,_0x34f1be,_0x479a1a)){if(_0x2a107e[_0x523c('0xeb')]>=_0x479a1a[_0x523c('0x1ac')]){_0x1287b7[_0x523c('0xff')](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1c4'));}else{_0x1287b7[_0x523c('0xf1')](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1c4'));}}break;case'11':_0x479a1a[_0x523c('0x1c5')]+=0x1;_0x2a107e[_0x523c('0xa5')]=0xb;_0x2a107e[_0x523c('0xa6')]=_0x523c('0x11e');_0x2a107e['countabandonedretry']+=0x1;_0x2a107e[_0x523c('0xfb')]+=0x1;_0x1287b7['createHistory'](_0x2a107e)['catch'](loggerCatch(_0x523c('0x121')));if(_0x1287b7[_0x523c('0x1a8')](0xb,_0x34f1be,_0x479a1a)){if(_0x2a107e[_0x523c('0xfd')]>=_0x479a1a[_0x523c('0x120')]){_0x1287b7[_0x523c('0xff')](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1c6'));}else{_0x1287b7['stateGlobal'](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1c6'));}}break;case'20':_0x479a1a[_0x523c('0x1c7')]+=0x1;_0x2a107e[_0x523c('0xa5')]=0x14;_0x2a107e['statedesc']='AgentReject';_0x2a107e[_0x523c('0xef')]+=0x1;_0x2a107e[_0x523c('0xfb')]+=0x1;ami[_0x523c('0x51')](_0x523c('0x1c8'),ut[_0x523c('0xe9')](_0x34f1be,_0x523c('0x1c9')));_0x1287b7[_0x523c('0xc7')](_0x2a107e)[_0x523c('0xb4')](loggerCatch(_0x523c('0x1ca')));if(_0x1287b7[_0x523c('0x1a8')](0x14,_0x34f1be,_0x479a1a)){if(_0x2a107e['countagentrejectretry']>=_0x479a1a[_0x523c('0x1b2')]){_0x1287b7[_0x523c('0xff')](_0x2a107e,_0x1c0375,_0x1114aa,_0x523c('0x1cb'));}else{_0x1287b7[_0x523c('0xf1')](_0x2a107e,_0x1c0375,_0x1114aa,'reason\x2020\x20agentreject');}}break;default:_0x479a1a[_0x523c('0x6c')]+=0x1;_0x2a107e[_0x523c('0xa5')]=0xc;_0x2a107e['statedesc']=_0x5b2688[_0x523c('0x1b7')];_0x1287b7[_0x523c('0xc7')](_0x2a107e)[_0x523c('0xb4')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x1287b7[_0x523c('0x1a8')](_0x5b2688[_0x523c('0x1b7')],_0x34f1be,_0x479a1a)){if(_0x2a107e[_0x523c('0xea')]+_0x2a107e['countcongestionretry']+_0x2a107e[_0x523c('0xec')]+_0x2a107e[_0x523c('0xed')]+_0x2a107e[_0x523c('0x116')]+_0x2a107e[_0x523c('0xfd')]+_0x2a107e[_0x523c('0xee')]+_0x2a107e['countagentrejectretry']>=_0x479a1a[_0x523c('0xf0')]){_0x1287b7[_0x523c('0xf1')](_0x2a107e,_0x1c0375,_0x1114aa,_0x5b2688[_0x523c('0x1b7')]);}else{_0x1287b7[_0x523c('0xff')](_0x2a107e,_0x1c0375,_0x1114aa,_0x5b2688[_0x523c('0x1b7')]);}}}});};Dialer[_0x523c('0x1d')][_0x523c('0xf1')]=function(_0x4cc370,_0x2b7275,_0xf5e3ff,_0xfbf522){var _0x39f73e=new Final(_0x4cc370);_0x39f73e[_0x523c('0xa5')]=0xf;_0x39f73e[_0x523c('0xa6')]=_0x523c('0x1cc');this['createStateFinal'](_0x39f73e,_0x2b7275,_0xf5e3ff,_0xfbf522);};Dialer[_0x523c('0x1d')]['createStateFinal']=function(_0x4afbb3,_0x12ca37,_0x157d1d,_0x16614b){this[_0x523c('0xc5')](_0x4afbb3)[_0x523c('0x3d')](function(){return _0x12ca37(msgResponse(_0x523c('0x1b5'),_0x523c('0x1cd'),_0x16614b));})[_0x523c('0xb4')](function(){return _0x157d1d(msgResponse(_0x523c('0x1ce'),'Failure',_0x523c('0x1cf')));});};Dialer['prototype']['predictive']=function(_0x16eb3f){var _0x10626c=_0x16eb3f['dialPredictiveOptimizationPercentage']/0x64;var _0x1ab8bc=_0x16eb3f[_0x523c('0x68')]/(_0x16eb3f[_0x523c('0x68')]+_0x16eb3f[_0x523c('0x63')]);var _0x1deb2b=Math['round'](_0x16eb3f[_0x523c('0x72')]*(_0x16eb3f['predictiveIntervalMaxThreshold']/0x64));var _0x33a567=Math[_0x523c('0x1d0')](_0x16eb3f[_0x523c('0x72')]*(_0x16eb3f['predictiveIntervalMinThreshold']/0x64));var _0x3ae851=_0x16eb3f['available']+_0x16eb3f[_0x523c('0x56')];var _0x13f6bc=Math['floor'](_0x16eb3f[_0x523c('0x75')]*_0x16eb3f[_0x523c('0x8f')]*_0x16eb3f[_0x523c('0x71')]*_0x16eb3f['predictiveIntervalMultiplicativeFactor']);if(_[_0x523c('0x3f')](_0x16eb3f[_0x523c('0x2c')])){if(!_[_0x523c('0x3f')](_0x16eb3f[_0x523c('0x2b')])){_0x16eb3f['startPredictive']=undefined;loggerPredictive[_0x523c('0x98')](_0x523c('0x1d1'),_0x523c('0x1d2'));}if(!_[_0x523c('0x3f')](_0x16eb3f[_0x523c('0x93')])){loggerPredictive[_0x523c('0x98')](_0x523c('0x1d1'),_0x523c('0x1d3'));clearInterval(_0x16eb3f[_0x523c('0x93')]);_0x16eb3f[_0x523c('0x93')]=undefined;}_0x16eb3f[_0x523c('0x2c')]=moment()['format'](_0x523c('0xf6'));loggerPredictive[_0x523c('0x7f')](_0x16eb3f[_0x523c('0x42')],_0x523c('0x1d4'),_0x16eb3f[_0x523c('0x2c')]);this[_0x523c('0x158')](_0x16eb3f,0x1);}else if(ifInterval(_0x16eb3f[_0x523c('0x1d5')],_0x16eb3f[_0x523c('0x2c')])){this[_0x523c('0x158')](_0x16eb3f,0x1);loggerPredictiveCalls[_0x523c('0x7f')](_0x523c('0x1d6'),_0x16eb3f[_0x523c('0x2c')],_0x16eb3f[_0x523c('0x42')]);_0x16eb3f['erlangCalls']=0x0;_0x16eb3f[_0x523c('0x70')]=0x0;}else if(_0x10626c<_0x1ab8bc&&_0x16eb3f[_0x523c('0x1d7')]===_0x523c('0x1d8')){freeVariablesPredictive(_0x16eb3f);loggerPredictive['info'](_0x523c('0x1d9'),_0x523c('0x1da'),_0x1ab8bc,_0x523c('0x2c'),_0x16eb3f[_0x523c('0x42')]);}else if(_0x13f6bc<_0x16eb3f[_0x523c('0x70')]&&_0x16eb3f[_0x523c('0x1d7')]===_0x523c('0x1d8')){freeVariablesPredictive(_0x16eb3f);loggerPredictive[_0x523c('0x7f')](_0x523c('0x1db'),'Max\x20Drop\x20',_0x13f6bc,_0x523c('0x1dc'),_0x16eb3f[_0x523c('0x70')],_0x523c('0x2c'),_0x16eb3f[_0x523c('0x42')]);}else if(!ifInterval(_0x16eb3f[_0x523c('0x1d5')],_0x16eb3f[_0x523c('0x2c')])&&_[_0x523c('0x3f')](_0x16eb3f[_0x523c('0x2b')])&&!_['isUndefined'](_0x16eb3f[_0x523c('0x2c')])){_0x16eb3f[_0x523c('0x2b')]=moment()[_0x523c('0x7b')](_0x523c('0xf6'));loggerPredictive['info'](_0x16eb3f[_0x523c('0x42')],_0x523c('0x1dd'),_0x16eb3f['startPredictive']);this['averageHandleTime'](_0x16eb3f[_0x523c('0x1d5')])[_0x523c('0x3d')](this['getDataPredictive'](_0x16eb3f))[_0x523c('0x3d')](mergeDataErlangB(_0x16eb3f))[_0x523c('0x3d')](this['startMethodPredictive'](_0x16eb3f))[_0x523c('0xb4')](loggerCatchPredictive(_0x523c('0x1de'),_0x16eb3f));}else if(!ifInterval(_0x16eb3f[_0x523c('0x1d5')],_0x16eb3f[_0x523c('0x2b')])){_0x16eb3f[_0x523c('0x70')]=0x0;_0x16eb3f[_0x523c('0x2b')]=moment()[_0x523c('0x7b')](_0x523c('0xf6'));loggerPredictive[_0x523c('0x7f')](_0x16eb3f[_0x523c('0x42')],_0x523c('0x1df'),_0x16eb3f[_0x523c('0x2b')]);clearInterval(_0x16eb3f[_0x523c('0x93')]);_0x16eb3f[_0x523c('0x93')]=undefined;this['averageHandleTime'](_0x16eb3f[_0x523c('0x1d5')])[_0x523c('0x3d')](this['getDataPredictive'](_0x16eb3f))[_0x523c('0x3d')](mergeDataErlangB(_0x16eb3f))[_0x523c('0x3d')](this[_0x523c('0x1e0')](_0x16eb3f))[_0x523c('0xb4')](loggerCatchPredictive(_0x523c('0x1e1'),_0x16eb3f));}else if(_0x16eb3f['predictiveIntervalAvailable']&&_0x3ae851<_0x16eb3f['predictiveIntervalAvailable']-_0x33a567){freeVariablesPredictive(_0x16eb3f);loggerPredictive[_0x523c('0x7f')](_0x16eb3f[_0x523c('0x42')],_0x523c('0x1e2'),_0x3ae851,_0x523c('0x1e3'),_0x16eb3f[_0x523c('0x72')],'-',_0x33a567,'=',_0x16eb3f[_0x523c('0x72')]-_0x33a567,')');}else if(_0x16eb3f[_0x523c('0x72')]&&_0x3ae851>_0x16eb3f['predictiveIntervalAvailable']+_0x1deb2b){freeVariablesPredictive(_0x16eb3f);loggerPredictive['info'](_0x16eb3f[_0x523c('0x42')],_0x523c('0x1e2'),_0x3ae851,_0x523c('0x1e4'),_0x16eb3f[_0x523c('0x72')],'+',_0x1deb2b,'=',_0x16eb3f[_0x523c('0x72')]+_0x1deb2b,')');}};Dialer[_0x523c('0x1d')]['getDataPredictive']=function(_0x30490f){var _0xe9cf01=this;return function(_0x375fb7){return new BPromise(function(_0x3e551b,_0x5ceea0){_['merge'](_0x30490f,_0x375fb7[0x0]);if(checkGetDataPredictive(_0x375fb7[0x0])){var _0x539192=_0x30490f[_0x523c('0x72')]=_0x30490f[_0x523c('0x56')]+_0x30490f[_0x523c('0x1e5')];var _0x52cf4c=_0x30490f['dialPredictiveInterval']*0x3c;var _0x35bbb0=_0x375fb7[0x0]['predictiveIntervalAvgTalktime']+_0x375fb7[0x0]['predictiveIntervalAvgHoldtime'];var _0x3f6d55=(_0x375fb7[0x0]['predictiveIntervalAnsweredCalls']+_0x375fb7[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x375fb7[0x0][_0x523c('0x83')])/_0x375fb7[0x0][_0x523c('0x73')];_0x30490f[_0x523c('0x71')]=_0x3f6d55>0x0?_0x3f6d55:0x1;switch(_0x30490f[_0x523c('0x1d7')]){case'dropRate':var _0x30db83=_0x30490f[_0x523c('0x1e6')]/0x64;return _0xe9cf01[_0x523c('0x1e7')](_0x539192,_0x52cf4c,_0x35bbb0,_0x3f6d55,_0x30db83)['then'](function(_0x5083fc){return _0x3e551b(_0x5083fc);});case _0x523c('0x1e8'):var _0x21b088=_0x30490f[_0x523c('0x1e6')]/0x64;return _0xe9cf01[_0x523c('0x1e9')](_0x539192,_0x52cf4c,_0x35bbb0,_0x3f6d55,_0x21b088)['then'](function(_0x5bfd3f){return _0x3e551b(_0x5bfd3f);});default:return _0x5ceea0(msgResponse(_0x523c('0x1ea'),_0x523c('0x143'),'Unknown\x20Predictive'));}}else{return _0x5ceea0(msgResponse(_0x523c('0x1ea'),_0x523c('0x143'),_0x523c('0x1eb')));}});};};Dialer['prototype'][_0x523c('0x1ec')]=function(_0x36b417){var _0x5c6308=this;return function(_0x401474){return new BPromise(function(_0x50cee7,_0x11ff07){_[_0x523c('0x91')](_0x36b417,_0x401474[0x0]);if(checkGetDataPredictive(_0x401474[0x0])){loggerPredictive['info'](JSON[_0x523c('0x4d')](_0x401474[0x0]));if(_0x36b417['dialPredictiveOptimization']===_0x523c('0x1d8')){return _0x5c6308[_0x523c('0xc3')](_0x36b417['id'])['then'](function(_0x96caad){var _0x100192=_0x36b417[_0x523c('0x163')]-_0x96caad[0x0][_0x523c('0x1ed')];var _0x2b5f49=_0x36b417[_0x523c('0x1d5')]*0x3c;var _0x397e78=_0x401474[0x0][_0x523c('0x87')]+_0x401474[0x0]['predictiveIntervalAvgHoldtime'];var _0x365ab5=(_0x401474[0x0][_0x523c('0x6d')]+_0x401474[0x0][_0x523c('0x6e')]+_0x401474[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x401474[0x0][_0x523c('0x73')];var _0x3c81de=_0x36b417['dialPredictiveOptimizationPercentage']/0x64;_0x36b417[_0x523c('0x1ee')]=_0x96caad[0x0]['outboundQueuePauses']||0x0;_0x36b417[_0x523c('0x71')]=_0x365ab5>0x0?_0x365ab5:0x1;return _0x5c6308[_0x523c('0x1e7')](_0x100192,_0x2b5f49,_0x397e78,_0x365ab5,_0x3c81de);})['then'](function(_0x5f592c){return _0x50cee7(_0x5f592c);})[_0x523c('0xb4')](function(_0x440996){return _0x11ff07(msgResponse(_0x523c('0x1ef'),'Failure',JSON[_0x523c('0x4d')](_0x440996)));});}if(_0x36b417[_0x523c('0x1d7')]==='agentBusyFactor'){return _0x5c6308['getVoiceQueueRtPauses'](_0x36b417['id'])[_0x523c('0x3d')](function(_0x18e189){var _0x454a42=_0x36b417[_0x523c('0x163')]-_0x18e189[0x0][_0x523c('0x1ed')];var _0x320b74=_0x36b417[_0x523c('0x1d5')]*0x3c;var _0x3b107a=_0x401474[0x0]['predictiveIntervalAvgTalktime']+_0x401474[0x0]['predictiveIntervalAvgHoldtime'];var _0x5254ae=(_0x401474[0x0][_0x523c('0x6d')]+_0x401474[0x0][_0x523c('0x6e')]+_0x401474[0x0][_0x523c('0x83')])/_0x401474[0x0][_0x523c('0x73')];var _0x1add48=_0x36b417[_0x523c('0x1e6')]/0x64;_0x36b417[_0x523c('0x1ee')]=_0x18e189[0x0][_0x523c('0x1ed')]||0x0;_0x36b417[_0x523c('0x71')]=_0x5254ae>0x0?_0x5254ae:0x1;return _0x5c6308[_0x523c('0x1e9')](_0x454a42,_0x320b74,_0x3b107a,_0x5254ae,_0x1add48);})[_0x523c('0x3d')](function(_0x515ec0){return _0x50cee7(_0x515ec0);})[_0x523c('0xb4')](function(_0x9cab19){return _0x11ff07(msgResponse('[CatchErlangB]','Failure',JSON[_0x523c('0x4d')](_0x9cab19)));});}}else{return _0x11ff07(msgResponse('[getDataPredictive]',_0x523c('0x143'),_0x523c('0x1eb')));}});};};Dialer[_0x523c('0x1d')][_0x523c('0x1e0')]=function(_0x258530){var _0x3c9513=this;return function(){var _0x4f6f77=0x0;var _0x588f3a=Math['floor'](_0x258530['erlangCallToSecond']*0x3e8);if(_0x588f3a>0x0){_0x588f3a=_0x588f3a<0x64?0x64:_0x588f3a;loggerPredictive[_0x523c('0x7f')](_0x258530['name'],_0x523c('0x1f0'),_0x588f3a,_0x523c('0x4e'));_0x258530[_0x523c('0x93')]=setInterval(function(){_0x3c9513[_0x523c('0x93')](_0x258530);loggerPredictiveCalls[_0x523c('0x7f')]('[handlePredictive]',_0x4f6f77+=0x1);},_0x588f3a);}else{loggerPredictive[_0x523c('0x7f')](_0x258530[_0x523c('0x42')],_0x523c('0x1f1'));}};};Dialer[_0x523c('0x1d')]['checkContactBlack']=function(_0x516f1f,_0x23751a){var _0xfcac1f=this;return function(_0x4dcb13){if(_[_0x523c('0x4a')](_0x4dcb13)){if(_[_0x523c('0xd9')](_0x23751a[_0x523c('0x1f2')])||!_0x23751a['recallme']){if(_0x516f1f[_0x523c('0x5e')]==='booked'){_0x516f1f['queueStatusComplete']=_[_0x523c('0x3f')](_0x516f1f[_0x523c('0x12c')])?!![]:_0x516f1f[_0x523c('0x12c')];var _0x113d87=uuid['v4']();_0xfcac1f[_0x523c('0x28')][_0x113d87]=new Action(_0x516f1f,_0x23751a,_0x113d87);loggerBooked[_0x523c('0x7f')]('[booked][checkContactBlack]',_0x113d87,'queueStatusComplete:\x20',JSON[_0x523c('0x4d')](_0x516f1f['queueStatusComplete']),_0x523c('0x1f3'),_0x516f1f[_0x523c('0x42')]);if(_0x516f1f['queueStatusComplete']){_0x516f1f['queueStatusComplete']=![];_0xfcac1f[_0x523c('0x127')][_0xfcac1f[_0x523c('0x28')][_0x113d87]['queue']]=[];ami[_0x523c('0xac')]({'actionid':_0x113d87,'action':_0x523c('0x1f4'),'queue':_0x516f1f[_0x523c('0x42')]})[_0x523c('0xb4')](function(){_0xfcac1f[_0x523c('0xb1')](_0x516f1f);_0xfcac1f['rescheduleContact']({'active':![],'ContactId':_0xfcac1f['actions'][_0x113d87]['ContactId'],'ListId':_0xfcac1f['actions'][_0x113d87][_0x523c('0xd1')],'VoiceQueueId':_0xfcac1f[_0x523c('0x28')][_0x113d87]['VoiceQueueId']||undefined,'CampaignId':_0xfcac1f['actions'][_0x113d87][_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0xfcac1f[_0x523c('0x28')][_0x113d87];});}else{loggerBooked[_0x523c('0x7f')](_0x523c('0x1f5'),JSON[_0x523c('0x4d')](_0x516f1f[_0x523c('0x12c')]),_0x523c('0x1f3'),_0x516f1f[_0x523c('0x42')]);_0xfcac1f['updateOriginated'](_0x516f1f);_0xfcac1f[_0x523c('0xbc')]({'active':![],'ContactId':_0xfcac1f[_0x523c('0x28')][_0x113d87]['ContactId'],'ListId':_0xfcac1f[_0x523c('0x28')][_0x113d87][_0x523c('0xd1')],'VoiceQueueId':_0xfcac1f[_0x523c('0x28')][_0x113d87]['VoiceQueueId']||undefined,'CampaignId':_0xfcac1f[_0x523c('0x28')][_0x113d87]['CampaignId']||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x1f6')));delete _0xfcac1f[_0x523c('0x28')][_0x113d87];}}else{return _0xfcac1f['actionOriginate'](_0x516f1f,_0x23751a);}}else{if(getDiff(_0x23751a[_0x523c('0x1f7')])<_0x516f1f[_0x523c('0x1f8')]*0x3c){if(_0x23751a[_0x523c('0x160')]&&!_0x23751a[_0x523c('0x160')][_0x523c('0x1f9')]){_0xfcac1f[_0x523c('0x22')][_0x523c('0x12e')](_0x23751a['id'])[_0x523c('0x20')](function(){_0xfcac1f['updateOriginated'](_0x516f1f);});}else{_0xfcac1f[_0x523c('0x1fa')]({'active':![]},_0x23751a['id'],0x1)['finally'](function(){_0xfcac1f[_0x523c('0xb1')](_0x516f1f);});}}else{_0x516f1f[_0x523c('0x6b')]+=0x1;_0xfcac1f[_0x523c('0xb1')](_0x516f1f);if(_0x516f1f[_0x523c('0x1fb')]){_0xfcac1f[_0x523c('0xbc')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x23751a['ContactId'],'ListId':_0x23751a[_0x523c('0xd1')],'VoiceQueueId':_0x23751a['VoiceQueueId']||undefined,'CampaignId':_0x23751a[_0x523c('0xf7')]||undefined})[_0x523c('0xb4')](loggerCatch(_0x523c('0x1fc')));_0xfcac1f['createHistory'](createObjHistory(_0x516f1f,_0x23751a,_0x523c('0x1fd'),0x17,_0x523c('0x1fe')))[_0x523c('0xb4')](loggerCatch(_0x523c('0x1ff')));}else{_0xfcac1f[_0x523c('0xce')](createObjHistory(_0x516f1f,_0x23751a,_0x523c('0x200'),0x16,_0x523c('0x201')),'[Originate][HistoryRecallClose][historyCatch]',_0x523c('0x202'));}}}}else{_0x516f1f[_0x523c('0x203')]+=0x1;_0xfcac1f['saveInDb'](createObjHistory(_0x516f1f,_0x23751a,_0x523c('0x204'),0xd,_0x523c('0x205')),_0x523c('0x206'),_0x523c('0x207'));throw _0x523c('0x208');}};};Dialer['prototype'][_0x523c('0x162')]=function(_0x192904){var _0x1a8b2f=this;var _0x52ca03=_0x192904['limitCalls']-_0x192904[_0x523c('0x74')]-_0x192904[_0x523c('0xc0')];emitCampaignSummary(_0x192904);if(_0x52ca03>0x0){if(_0x52ca03>this[_0x523c('0x26')]){_0x52ca03=this[_0x523c('0x26')];}_0x192904[_0x523c('0xc0')]+=_0x52ca03;this[_0x523c('0xc2')](_0x192904['id'],_0x52ca03,_0x192904['dialOrderByScheduledAt'],_0x192904)[_0x523c('0x3d')](function(_0x31c5d8){_0x192904[_0x523c('0xc0')]-=_0x52ca03;_0x192904['temp']=_0x192904[_0x523c('0xc0')]>0x0?_0x192904['temp']:0x0;if(!checkContactEmpty(_0x31c5d8)){_0x192904['message']='AVAILABLE_CONTACTS_FINISHED';logger['info']('[getContactCampaign2][Empty]'+_0x192904[_0x523c('0x42')]);}else{_0x192904[_0x523c('0x74')]+=_0x31c5d8[_0x523c('0x131')];_0x192904[_0x523c('0x40')]='RUNNING';for(var _0xfef257=0x0;_0xfef257<_0x31c5d8[_0x523c('0x131')];_0xfef257+=0x1){_0x192904[_0x523c('0x209')]+=0x1;if(_['isNil'](_0x31c5d8[_0xfef257])||_[_0x523c('0xd9')](_0x31c5d8[_0xfef257][_0x523c('0x173')])||_[_0x523c('0xd9')](_0x31c5d8[_0xfef257][_0x523c('0x173')]['phone'])){_0x1a8b2f[_0x523c('0xcd')](_0x523c('0x20a'),_0x192904,_0x31c5d8[_0xfef257]);}else{_0x1a8b2f[_0x523c('0xb8')](_[_0x523c('0xcf')](_0x31c5d8[_0xfef257],[_0x523c('0xf7'),_0x523c('0x20b')]))[_0x523c('0x3d')](_0x1a8b2f[_0x523c('0x20c')](_0x192904,_0x31c5d8[_0xfef257]))['catch'](_0x1a8b2f['loggerHandler']('[actionOriginateIvr]\x20',_0x192904));}}}})['catch'](loggerGetContactDialer(_0x523c('0x20d'),_0x192904,_0x52ca03));}};Dialer['prototype']['handlePower']=function(_0x3ad40b,_0x379fe9){var _0x335319=this;var _0x3a5f3d=[];var _0x31920a=_0x379fe9>=0x1?_0x379fe9:0x1;if(_0x3ad40b[_0x523c('0x5e')]===_0x523c('0xa')){_0x31920a=0x1;}var _0x2be0b1=Math['floor'](_0x3ad40b[_0x523c('0x1e5')]*_0x31920a)-_0x3ad40b[_0x523c('0x74')]-_0x3ad40b['temp'];emitVoiceQueueSummary(_0x3ad40b);if(_0x3ad40b['dialLimitQueue']>0x0){var _0x201d5e=_0x3ad40b[_0x523c('0x20e')]-_0x3ad40b[_0x523c('0x74')]-_0x3ad40b['talking']-_0x3ad40b[_0x523c('0xc0')]-_0x3ad40b[_0x523c('0x20f')];if(_0x2be0b1>_0x201d5e){_0x2be0b1=_0x201d5e;}}if(_0x2be0b1>0x0){if(_0x3ad40b[_0x523c('0x5e')]===_0x523c('0xa')){_0x2be0b1=0x1;}if(_0x2be0b1>this[_0x523c('0x26')]){_0x2be0b1=this[_0x523c('0x26')];}_0x3ad40b[_0x523c('0xc0')]+=_0x2be0b1;for(var _0x36955f in this[_0x523c('0x125')]){if(typeof this[_0x523c('0x125')][_0x36955f]!=='undefined'){if(this['agents'][_0x36955f][_0x523c('0xa5')]==='not_inuse'&&this[_0x523c('0x125')][_0x36955f][_0x523c('0xad')]===_0x523c('0x210')){_0x3a5f3d[_0x523c('0x128')](this[_0x523c('0x125')][_0x36955f]['id']);}}}this[_0x523c('0xbf')](_0x3ad40b['id'],_0x3a5f3d,_0x2be0b1,_0x3ad40b[_0x523c('0x211')],_0x3ad40b)[_0x523c('0x3d')](function(_0x35e1f1){_0x3ad40b['temp']-=_0x2be0b1;_0x3ad40b[_0x523c('0xc0')]=_0x3ad40b[_0x523c('0xc0')]>0x0?_0x3ad40b[_0x523c('0xc0')]:0x0;if(!checkContactEmpty(_0x35e1f1)){_0x335319['countReScheduled'](_0x3ad40b)['then'](sendMessageReschedule(_0x3ad40b))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x3ad40b['originated']+=_0x35e1f1[_0x523c('0x131')];_0x3ad40b[_0x523c('0x40')]=_0x3ad40b[_0x523c('0x5e')]===_0x523c('0xa')?_0x523c('0x17b'):'RUNNING';for(var _0x142b90=0x0;_0x142b90<_0x35e1f1[_0x523c('0x131')];_0x142b90+=0x1){if(_['isNil'](_0x35e1f1[_0x142b90])||_[_0x523c('0xd9')](_0x35e1f1[_0x142b90][_0x523c('0x173')])||_['isNil'](_0x35e1f1[_0x142b90][_0x523c('0x173')][_0x523c('0x174')])){_0x335319[_0x523c('0xcd')]('[actionOriginate]\x20',_0x3ad40b,_0x35e1f1[_0x142b90]);}else{_0x335319[_0x523c('0xb6')](_[_0x523c('0xcf')](_0x35e1f1[_0x142b90],[_0x523c('0xd2'),_0x523c('0x20b')]))[_0x523c('0x3d')](_0x335319[_0x523c('0x20c')](_0x3ad40b,_0x35e1f1[_0x142b90]))['catch'](_0x335319[_0x523c('0xcb')](_0x523c('0x20a'),_0x3ad40b));}}}})[_0x523c('0xb4')](loggerGetContactDialer(_0x523c('0x212'),_0x3ad40b,_0x2be0b1));}};Dialer[_0x523c('0x1d')]['handlePredictive']=function(_0x55687c){if(_0x55687c[_0x523c('0x20e')]>0x0){var _0x283e56=_0x55687c[_0x523c('0x20e')]-_0x55687c[_0x523c('0x74')]-_0x55687c[_0x523c('0x56')];if(_0x283e56>0x0){this[_0x523c('0x213')](_0x55687c);}else{loggerPredictiveCalls[_0x523c('0x7f')]('[handlePredictive][limitChannel]');}}else{this[_0x523c('0x213')](_0x55687c);}};Dialer[_0x523c('0x1d')][_0x523c('0x213')]=function(_0x4bad7c){var _0x1d15e0=this;var _0x17cc2a=[];_0x4bad7c[_0x523c('0x74')]+=0x1;for(var _0x20f478 in this[_0x523c('0x125')]){if(typeof this[_0x523c('0x125')][_0x20f478]!==_0x523c('0x9a')){if(this[_0x523c('0x125')][_0x20f478][_0x523c('0xa5')]===_0x523c('0x214')&&this[_0x523c('0x125')][_0x20f478][_0x523c('0xad')]==='reachable'){_0x17cc2a[_0x523c('0x128')](this[_0x523c('0x125')][_0x20f478]['id']);}}}this[_0x523c('0xbf')](_0x4bad7c['id'],_0x17cc2a,0x1,_0x4bad7c[_0x523c('0x211')],_0x4bad7c)[_0x523c('0x3d')](function(_0x561347){if(!checkContactEmpty(_0x561347)){checkContactLowerLimitOriginate(_0x4bad7c,0x1,0x0);_0x1d15e0[_0x523c('0xb3')](_0x4bad7c)[_0x523c('0x3d')](sendMessageReschedule(_0x4bad7c))[_0x523c('0xb4')](loggerCatch(_0x523c('0xb5')));}else{_0x4bad7c[_0x523c('0x40')]=_0x523c('0x215');if(_[_0x523c('0xd9')](_0x561347[0x0])||_['isNil'](_0x561347[0x0][_0x523c('0x173')])||_[_0x523c('0xd9')](_0x561347[0x0][_0x523c('0x173')][_0x523c('0x174')])){_0x1d15e0[_0x523c('0xcd')]('[actionOriginate]\x20',_0x4bad7c,_0x561347[0x0]);}else{_0x1d15e0['checkIsBlackList'](_[_0x523c('0xcf')](_0x561347[0x0],[_0x523c('0xd2'),_0x523c('0x20b')]))['then'](_0x1d15e0[_0x523c('0x20c')](_0x4bad7c,_0x561347[0x0]))[_0x523c('0xb4')](_0x1d15e0[_0x523c('0xcb')](_0x523c('0x216'),_0x4bad7c));}}})['catch'](loggerGetContactDialer(_0x523c('0x217'),_0x4bad7c,0x1));emitVoiceQueueSummary(_0x4bad7c);};Dialer[_0x523c('0x1d')][_0x523c('0x1e7')]=function(_0x43f82c,_0x590a63,_0x3d0592,_0x4a091d,_0x15f5f6,_0x3dad72){loggerPredictive[_0x523c('0x7f')](_0x523c('0x218'));loggerPredictive['info'](_0x523c('0x219'),_0x43f82c);loggerPredictive[_0x523c('0x7f')](_0x523c('0x21a'),_0x590a63);loggerPredictive['info'](_0x523c('0x21b'),_0x3d0592);loggerPredictive['info'](_0x523c('0x21c'),_0x4a091d);loggerPredictive['info'](_0x523c('0x21d'),_0x15f5f6);loggerPredictive[_0x523c('0x7f')](_0x523c('0x88'));return new BPromise(function(_0x3cf6bf,_0x3f5391){if(_0x43f82c<=0x0||isNaN(_0x43f82c)){return _0x3f5391(msgResponse(_0x523c('0x21e'),_0x523c('0x4c'),_0x523c('0x21f')+_0x43f82c));}if(_0x3d0592<=0x0||isNaN(_0x3d0592)){return _0x3f5391(msgResponse('[abandonmentRate]',_0x523c('0x4c'),'Ts\x20=\x20'+_0x3d0592));}if(_0x4a091d<=0x0||isNaN(_0x4a091d)){return _0x3f5391(msgResponse('[abandonmentRate]',_0x523c('0x4c'),_0x523c('0x220')+_0x4a091d));}if(_0x590a63<=0x0||isNaN(_0x590a63)){return _0x3f5391(msgResponse(_0x523c('0x21e'),_0x523c('0x4c'),_0x523c('0x221')+_0x590a63));}if(_0x15f5f6<=0x0||isNaN(_0x15f5f6)){return _0x3f5391(msgResponse(_0x523c('0x21e'),_0x523c('0x4c'),_0x523c('0x222')+_0x15f5f6));}_0x3dad72=_0x3dad72||0x0;var _0x18ba90=0x1/_0x3d0592;var _0x151e87=0x0;var _0x1fbc11=0x0;var _0x5e4a71=0x0;var _0x1ac3b5=0x0;for(var _0x3f2b95=0x0;_0x5e4a71<_0x15f5f6;_0x3f2b95+=0x1){_0x1fbc11=_0x3f2b95/_0x590a63;_0x151e87=(_0x4a091d*_0x1fbc11+_0x3dad72)/_0x18ba90;_0x5e4a71=erlangb(_0x151e87,_0x43f82c);_0x1ac3b5=_0x151e87/_0x43f82c*(0x1-erlangb(_0x151e87,_0x43f82c));}return _0x3cf6bf({'erlangCalls':_0x3f2b95,'erlangCallToSecond':_0x590a63/_0x3f2b95,'erlangAbandonmentRate':_0x5e4a71,'erlangBusyFactor':_0x1ac3b5});});};Dialer[_0x523c('0x1d')]['busyFactor']=function(_0x3c0b5d,_0x416b8f,_0x391e0e,_0x204e19,_0x14f390,_0x74466e){loggerPredictive[_0x523c('0x7f')](_0x523c('0x223'));loggerPredictive[_0x523c('0x7f')](_0x523c('0x219'),_0x3c0b5d);loggerPredictive[_0x523c('0x7f')](_0x523c('0x21a'),_0x416b8f);loggerPredictive[_0x523c('0x7f')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x391e0e);loggerPredictive[_0x523c('0x7f')](_0x523c('0x21c'),_0x204e19);loggerPredictive[_0x523c('0x7f')](_0x523c('0x224'),_0x14f390);loggerPredictive[_0x523c('0x7f')](_0x523c('0x88'));return new BPromise(function(_0x3c3628,_0x57c323){if(_0x3c0b5d<=0x0||isNaN(_0x3c0b5d)){return _0x57c323(msgResponse(_0x523c('0x225'),_0x523c('0x4c'),_0x523c('0x21f')+_0x3c0b5d));}if(_0x391e0e<=0x0||isNaN(_0x391e0e)){return _0x57c323(msgResponse('[busyFactor]',_0x523c('0x4c'),_0x523c('0x226')+_0x391e0e));}if(_0x204e19<=0x0||isNaN(_0x204e19)){return _0x57c323(msgResponse(_0x523c('0x225'),_0x523c('0x4c'),_0x523c('0x220')+_0x204e19));}if(_0x416b8f<=0x0||isNaN(_0x416b8f)){return _0x57c323(msgResponse(_0x523c('0x225'),'Error',_0x523c('0x221')+_0x416b8f));}if(_0x14f390<=0x0||isNaN(_0x14f390)){return _0x57c323(msgResponse(_0x523c('0x225'),_0x523c('0x4c'),_0x523c('0x227')+_0x14f390));}_0x74466e=_0x74466e||0x0;var _0x5556e9=0x1/_0x391e0e;var _0x40d60c=0x0;var _0x3f628b=0x0;var _0x504dbd=0x0;var _0x44ae55=0x0;for(var _0x508e4d=0x0;_0x44ae55<_0x14f390;_0x508e4d+=0x1){_0x3f628b=_0x508e4d/_0x416b8f;_0x40d60c=(_0x204e19*_0x3f628b+_0x74466e)/_0x5556e9;_0x504dbd=erlangb(_0x40d60c,_0x3c0b5d);_0x44ae55=_0x40d60c/_0x3c0b5d*(0x1-erlangb(_0x40d60c,_0x3c0b5d));}return _0x3c3628({'erlangCalls':_0x508e4d,'erlangCallToSecond':_0x416b8f/_0x508e4d,'erlangAbandonmentRate':_0x504dbd,'erlangBusyFactor':_0x44ae55});});};module[_0x523c('0x228')]=Dialer;
\ No newline at end of file
index 02ff662..47330a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa330=['countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry'];(function(_0x5ae8e7,_0x3f6963){var _0x307823=function(_0x139cd9){while(--_0x139cd9){_0x5ae8e7['push'](_0x5ae8e7['shift']());}};_0x307823(++_0x3f6963);}(_0xa330,0xc5));var _0x0a33=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0xa330[_0x342baa];return _0x1208f3;};'use strict';var util=require('util');var _=require(_0x0a33('0x0'));var moment=require(_0x0a33('0x1'));function getSeconds(_0x359188,_0x39aeea){var _0x40d05f=moment(_0x359188)[_0x0a33('0x2')](0x0);var _0x233ae7=moment(_0x39aeea)[_0x0a33('0x2')](0x0);return _0x40d05f[_0x0a33('0x3')](_0x233ae7,_0x0a33('0x4'));}function QueueCallerAbandon(_0x3ba093,_0x3e7c95){this[_0x0a33('0x5')]=_0x3ba093[_0x0a33('0x5')];this['type']=_0x3ba093[_0x0a33('0x6')];this[_0x0a33('0x7')]=_0x3ba093[_0x0a33('0x6')]===_0x0a33('0x8')?_0x0a33('0x9'):_0x3ba093[_0x0a33('0x6')];this[_0x0a33('0xa')]=_0x3ba093['countbusyretry'];this['countcongestionretry']=_0x3ba093[_0x0a33('0xb')];this[_0x0a33('0xc')]=_0x3ba093['countnoanswerretry'];this[_0x0a33('0xd')]=_0x3ba093[_0x0a33('0xa')]+_0x3ba093['countcongestionretry']+_0x3ba093['countnoanswerretry']+_0x3ba093[_0x0a33('0xe')]+_0x3ba093[_0x0a33('0xf')]+_0x3ba093['countabandonedretry']+_0x3ba093[_0x0a33('0x10')]+_0x3ba093[_0x0a33('0x11')];this[_0x0a33('0xe')]=_0x3ba093[_0x0a33('0xe')];this[_0x0a33('0xf')]=_0x3ba093[_0x0a33('0xf')];this['countabandonedretry']=_0x3ba093['countabandonedretry'];this['countmachineretry']=_0x3ba093[_0x0a33('0x10')];this[_0x0a33('0x11')]=_0x3ba093[_0x0a33('0x11')];this[_0x0a33('0x12')]=_0x3e7c95[_0x0a33('0x12')];this[_0x0a33('0x13')]=_0x3ba093['name'];this[_0x0a33('0x14')]=_0x3ba093[_0x0a33('0x15')];this[_0x0a33('0x16')]=_0x3ba093[_0x0a33('0x16')];this[_0x0a33('0x17')]=_0x3ba093[_0x0a33('0x17')];this[_0x0a33('0x18')]=_0x3ba093[_0x0a33('0x18')];this[_0x0a33('0x19')]=this[_0x0a33('0x18')];this[_0x0a33('0x1a')]=getSeconds(_0x3ba093['responsetime'],_0x3ba093[_0x0a33('0x16')]);this[_0x0a33('0x1b')]=getSeconds(this[_0x0a33('0x18')],_0x3ba093[_0x0a33('0x17')]);this[_0x0a33('0x1c')]=0x0;this[_0x0a33('0x9')]=_0x3e7c95['queue'];this[_0x0a33('0x1d')]=_0x3e7c95['connectedlinename'];this['reason']=_0x3e7c95[_0x0a33('0x1e')];this[_0x0a33('0x1f')]=_0x3ba093[_0x0a33('0x1f')];this[_0x0a33('0x20')]=_0x3ba093[_0x0a33('0x20')];this[_0x0a33('0x21')]=_0x3ba093['callbackat'];this[_0x0a33('0x22')]=_0x3ba093[_0x0a33('0x22')];this[_0x0a33('0x23')]=_0x3ba093[_0x0a33('0x23')];this[_0x0a33('0x24')]=_0x3ba093[_0x0a33('0x24')];this[_0x0a33('0x25')]=_0x3ba093[_0x0a33('0x25')];this[_0x0a33('0x26')]=_0x3ba093[_0x0a33('0x26')];this[_0x0a33('0x27')]=_0x3ba093[_0x0a33('0x27')];this['originatecalleridnum']=_0x3ba093[_0x0a33('0x28')]||'';this[_0x0a33('0x29')]=_0x3ba093[_0x0a33('0x29')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0x18d4=['ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','scheduledat','type','queue','countbusyretry','countcongestionretry','countnoanswerretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x18d4,0x1ab));var _0x418d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x18d4[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x418d('0x0'));var _=require('lodash');var moment=require(_0x418d('0x1'));function getSeconds(_0x367311,_0x372ffd){var _0x429c3c=moment(_0x367311)[_0x418d('0x2')](0x0);var _0x2af2fa=moment(_0x372ffd)['milliseconds'](0x0);return _0x429c3c[_0x418d('0x3')](_0x2af2fa,_0x418d('0x4'));}function QueueCallerAbandon(_0x2067ca,_0x40e5fd){this[_0x418d('0x5')]=_0x2067ca[_0x418d('0x5')];this[_0x418d('0x6')]=_0x2067ca[_0x418d('0x6')];this['campaigntype']=_0x2067ca['type']==='outbound'?_0x418d('0x7'):_0x2067ca[_0x418d('0x6')];this[_0x418d('0x8')]=_0x2067ca[_0x418d('0x8')];this[_0x418d('0x9')]=_0x2067ca[_0x418d('0x9')];this[_0x418d('0xa')]=_0x2067ca[_0x418d('0xa')];this['countglobal']=_0x2067ca['countbusyretry']+_0x2067ca[_0x418d('0x9')]+_0x2067ca['countnoanswerretry']+_0x2067ca['countnosuchnumberretry']+_0x2067ca['countdropretry']+_0x2067ca['countabandonedretry']+_0x2067ca[_0x418d('0xb')]+_0x2067ca[_0x418d('0xc')];this['countnosuchnumberretry']=_0x2067ca[_0x418d('0xd')];this[_0x418d('0xe')]=_0x2067ca[_0x418d('0xe')];this[_0x418d('0xf')]=_0x2067ca['countabandonedretry'];this[_0x418d('0xb')]=_0x2067ca[_0x418d('0xb')];this['countagentrejectretry']=_0x2067ca[_0x418d('0xc')];this[_0x418d('0x10')]=_0x40e5fd['uniqueid'];this[_0x418d('0x11')]=_0x2067ca[_0x418d('0x12')];this[_0x418d('0x13')]=_0x2067ca[_0x418d('0x14')];this['starttime']=_0x2067ca[_0x418d('0x15')];this[_0x418d('0x16')]=_0x2067ca[_0x418d('0x16')];this[_0x418d('0x17')]=_0x2067ca['droptime'];this['endtime']=this[_0x418d('0x17')];this[_0x418d('0x18')]=getSeconds(_0x2067ca[_0x418d('0x16')],_0x2067ca['starttime']);this[_0x418d('0x19')]=getSeconds(this[_0x418d('0x17')],_0x2067ca[_0x418d('0x16')]);this[_0x418d('0x1a')]=0x0;this[_0x418d('0x7')]=_0x40e5fd[_0x418d('0x7')];this[_0x418d('0x1b')]=_0x40e5fd[_0x418d('0x1c')];this[_0x418d('0x1d')]=_0x40e5fd[_0x418d('0x1d')];this['callback']=_0x2067ca[_0x418d('0x1e')];this[_0x418d('0x1f')]=_0x2067ca[_0x418d('0x1f')];this[_0x418d('0x20')]=_0x2067ca[_0x418d('0x20')];this[_0x418d('0x21')]=_0x2067ca[_0x418d('0x21')];this[_0x418d('0x22')]=_0x2067ca[_0x418d('0x22')];this['ListId']=_0x2067ca['ListId'];this[_0x418d('0x23')]=_0x2067ca['UserId'];this[_0x418d('0x24')]=_0x2067ca['VoiceQueueId'];this['CampaignId']=_0x2067ca[_0x418d('0x25')];this['originatecalleridnum']=_0x2067ca[_0x418d('0x26')]||'';this[_0x418d('0x27')]=_0x2067ca[_0x418d('0x27')]||'';}module[_0x418d('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index c1b90f5..fead940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x3ce05b,_0x5b494e){var _0x583ac5=function(_0x2c7a12){while(--_0x2c7a12){_0x3ce05b['push'](_0x3ce05b['shift']());}};_0x583ac5(++_0x5b494e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x547388,_0x519ad5){var _0x546c9a=function(_0x40797c){while(--_0x40797c){_0x547388['push'](_0x547388['shift']());}};_0x546c9a(++_0x519ad5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index 832d3c8..ad44f27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc788=['value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','pick','response','AttachmentId','update','then','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isNil','active','SIP/%s','reachable','checkTrunk','isTrunkReachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','path','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','trunks','actions','syncNewchannel','bind','syncVarSet','syncNewState','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable'];(function(_0x207372,_0x1c4519){var _0x1dbcbd=function(_0x4958e1){while(--_0x4958e1){_0x207372['push'](_0x207372['shift']());}};_0x1dbcbd(++_0x1c4519);}(_0xc788,0xc4));var _0x8c78=function(_0x16fd68,_0x3d394d){_0x16fd68=_0x16fd68-0x0;var _0x12cf8e=_0xc788[_0x16fd68];return _0x12cf8e;};'use strict';var util=require(_0x8c78('0x0'));var _=require(_0x8c78('0x1'));var BPromise=require(_0x8c78('0x2'));var uuid=require('uuid');var moment=require('moment');var path=require(_0x8c78('0x3'));var tiff2pdf=require(_0x8c78('0x4'));var gs=require(_0x8c78('0x5'));var logger=require(_0x8c78('0x6'))(_0x8c78('0x7'));var ami=require('../ami');var rpcDb=require(_0x8c78('0x8'));var Channel=require(_0x8c78('0x9'));var ut=require(_0x8c78('0xa'));var Action=require(_0x8c78('0xb'));var faxAccount=require(_0x8c78('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x8c78('0xd'));function Fax(_0x299d9d){this[_0x8c78('0xe')]={};this[_0x8c78('0xf')]=_0x299d9d[_0x8c78('0xf')];this[_0x8c78('0x10')]=_0x299d9d['trunks'];this[_0x8c78('0x11')]={};ami['on']('newchannel',this[_0x8c78('0x12')][_0x8c78('0x13')](this));ami['on']('varset',this[_0x8c78('0x14')][_0x8c78('0x13')](this));ami['on']('newstate',this[_0x8c78('0x15')]['bind'](this));ami['on']('newexten',this[_0x8c78('0x16')][_0x8c78('0x13')](this));ami['on'](_0x8c78('0x17'),this[_0x8c78('0x18')][_0x8c78('0x13')](this));ami['on'](_0x8c78('0x19'),this[_0x8c78('0x1a')][_0x8c78('0x13')](this));ami['on'](_0x8c78('0x1b'),this[_0x8c78('0x1c')]['bind'](this));ami['on'](_0x8c78('0x1d'),this[_0x8c78('0x1e')]['bind'](this));}Fax[_0x8c78('0x1f')][_0x8c78('0x12')]=function(_0xe7c355){if(_0xe7c355[_0x8c78('0x20')]===_0x8c78('0x21')){for(var _0x461eff in this['faxAccounts']){if(this['faxAccounts'][_0x8c78('0x22')](_0x461eff)){if(_0xe7c355['exten']===this['faxAccounts'][_0x461eff][_0x8c78('0x23')]){this['channels'][_0xe7c355[_0x8c78('0x24')]]={};this[_0x8c78('0xe')][_0xe7c355['uniqueid']][_0x8c78('0x25')]=_0xe7c355['channel'];this[_0x8c78('0xe')][_0xe7c355[_0x8c78('0x24')]]['id']=this['faxAccounts'][_0x461eff]['id'];this[_0x8c78('0xe')][_0xe7c355[_0x8c78('0x24')]]['name']=this[_0x8c78('0xf')][_0x461eff][_0x8c78('0x26')];logger[_0x8c78('0x27')](_0xe7c355[_0x8c78('0x24')],_0x8c78('0x28'));}}}}if(this[_0x8c78('0x11')][_0xe7c355[_0x8c78('0x24')]]){this[_0x8c78('0xe')][_0xe7c355[_0x8c78('0x24')]]={};this['channels'][_0xe7c355[_0x8c78('0x24')]][_0x8c78('0x25')]=_0xe7c355[_0x8c78('0x25')];logger['info'](_0xe7c355[_0x8c78('0x24')],'\x20syncNewchannel\x20');}};Fax[_0x8c78('0x1f')][_0x8c78('0x14')]=function(_0x8d9ff9){if(this['channels'][_0x8d9ff9[_0x8c78('0x24')]]){for(var _0x2568d5 in _0x8d9ff9['variable']){if(_0x8d9ff9[_0x8c78('0x29')][_0x8c78('0x22')](_0x2568d5)){this[_0x8c78('0xe')][_0x8d9ff9[_0x8c78('0x24')]][_0x2568d5]=_0x8d9ff9[_0x8c78('0x2a')];}}}};Fax[_0x8c78('0x1f')]['syncNewState']=function(_0x1c3039){if(this['channels'][_0x1c3039[_0x8c78('0x24')]]){this[_0x8c78('0xe')][_0x1c3039[_0x8c78('0x24')]]['channelstate']=_0x1c3039[_0x8c78('0x2b')];this[_0x8c78('0xe')][_0x1c3039['uniqueid']][_0x8c78('0x2c')]=_0x1c3039[_0x8c78('0x2c')];}};Fax[_0x8c78('0x1f')]['syncNewExten']=function(_0x36ece0){if(this[_0x8c78('0xe')][_0x36ece0[_0x8c78('0x24')]]){for(var _0x5348ab in _0x36ece0[_0x8c78('0x29')]){if(_0x36ece0[_0x8c78('0x29')]['hasOwnProperty'](_0x5348ab)){this[_0x8c78('0xe')][_0x36ece0[_0x8c78('0x24')]][_0x5348ab]=_0x36ece0[_0x8c78('0x2a')];}}}};Fax[_0x8c78('0x1f')][_0x8c78('0x18')]=function(_0x5b5429){if(this[_0x8c78('0xe')][_0x5b5429[_0x8c78('0x24')]]){this[_0x8c78('0xe')][_0x5b5429[_0x8c78('0x24')]]['operation']=_0x5b5429[_0x8c78('0x2d')];this[_0x8c78('0xe')][_0x5b5429[_0x8c78('0x24')]][_0x8c78('0x2e')]=_0x5b5429[_0x8c78('0x2e')];this['channels'][_0x5b5429[_0x8c78('0x24')]][_0x8c78('0x23')]=_0x5b5429[_0x8c78('0x23')];this['channels'][_0x5b5429[_0x8c78('0x24')]][_0x8c78('0x2f')]=_0x5b5429['filename'];logger[_0x8c78('0x27')](_0x5b5429['uniqueid'],_0x8c78('0x30'));}};Fax[_0x8c78('0x1f')][_0x8c78('0x1a')]=function(_0x157b81){var _0x496104=this;if(this[_0x8c78('0xe')][_0x157b81['uniqueid']]){var _0x3b8f4f=this[_0x8c78('0xe')][_0x157b81[_0x8c78('0x24')]]['id'];this['channels'][_0x157b81['uniqueid']][_0x8c78('0x31')]=_0x157b81[_0x8c78('0x31')];this[_0x8c78('0xe')][_0x157b81[_0x8c78('0x24')]][_0x8c78('0x32')]=_0x157b81[_0x8c78('0x32')];this[_0x8c78('0xe')][_0x157b81[_0x8c78('0x24')]][_0x8c78('0x23')]=_0x157b81[_0x8c78('0x23')];this[_0x8c78('0xe')][_0x157b81[_0x8c78('0x24')]][_0x8c78('0x33')]=_0x157b81['resolution'];this[_0x8c78('0xe')][_0x157b81[_0x8c78('0x24')]]['transferrate']=_0x157b81['transferrate'];this[_0x8c78('0xe')][_0x157b81[_0x8c78('0x24')]]['filename']=_0x157b81[_0x8c78('0x2f')];this[_0x8c78('0xe')][_0x157b81['uniqueid']][_0x8c78('0x34')]=_0x157b81[_0x8c78('0x34')];if(this['channels'][_0x157b81[_0x8c78('0x24')]][_0x8c78('0x32')]>0x0){tiff2pdf(_0x157b81[_0x8c78('0x2f')],_0x8c78('0x35'),function(_0x3dfb4b){logger['info'](_0x157b81['uniqueid'],_0x8c78('0x36'),_0x3dfb4b[_0x8c78('0x37')]);attachment[_0x8c78('0x38')]({'name':path[_0x8c78('0x39')](_0x157b81[_0x8c78('0x2f')])[_0x8c78('0x26')],'basename':path[_0x8c78('0x39')](_0x157b81[_0x8c78('0x2f')])[_0x8c78('0x26')]+_0x8c78('0x3a'),'type':_0x8c78('0x3b')})['then'](function(_0x1015bf){faxAccount[_0x8c78('0x3c')](_0x3b8f4f,{'from':_0x157b81[_0x8c78('0x34')],'mapKey':_0x8c78('0x7'),'body':path[_0x8c78('0x39')](_0x157b81['filename'])[_0x8c78('0x26')]+_0x8c78('0x3a'),'AttachmentId':_0x1015bf['id']})[_0x8c78('0x3d')](function(_0x267f87){logger[_0x8c78('0x3e')](_0x157b81['uniqueid'],_0x8c78('0x3f'),JSON['stringify'](_0x267f87));});})['catch'](function(_0x4467fb){logger[_0x8c78('0x3e')](_0x157b81[_0x8c78('0x24')],'\x20receiveFax\x20',JSON[_0x8c78('0x40')](_0x4467fb));});});}logger[_0x8c78('0x27')](_0x157b81[_0x8c78('0x24')],_0x8c78('0x41'));}};Fax[_0x8c78('0x1f')][_0x8c78('0x1e')]=function(_0x26103c){if(this[_0x8c78('0x11')][_0x26103c[_0x8c78('0x24')]]){_['merge'](this[_0x8c78('0xe')][_0x26103c[_0x8c78('0x24')]],_[_0x8c78('0x42')](_0x26103c,[_0x8c78('0x43'),'reason']));}};function updateStatus(_0x2fa61e){if(_0x2fa61e[_0x8c78('0x44')]){faxMessage[_0x8c78('0x45')](_0x2fa61e[_0x8c78('0x44')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x8c78('0x46')](function(_0x38f7af){ut[_0x8c78('0x47')]('[Fax][Message][Error][Updated]',_0x38f7af);})[_0x8c78('0x3d')](function(_0x5ee4f5){ut[_0x8c78('0x47')](_0x8c78('0x48'),_0x5ee4f5);});}else{ut[_0x8c78('0x47')](_0x8c78('0x49'));}}Fax[_0x8c78('0x1f')][_0x8c78('0x4a')]=function(_0xf68e0,_0x38fec1,_0x19d807){var _0x454e97=this;var _0x23e568={};if(_0x38fec1){_0x23e568={'read':_0x38fec1};}else{_0x23e568={'failMessage':_0x19d807};}if(this[_0x8c78('0x11')][_0xf68e0][_0x8c78('0x44')]){faxMessage[_0x8c78('0x45')](this['actions'][_0xf68e0][_0x8c78('0x44')],_0x23e568)[_0x8c78('0x46')](function(_0x11c490){ut[_0x8c78('0x47')]('[Fax][Message][Updated]',_0x11c490);})[_0x8c78('0x3d')](function(_0x32fa95){ut[_0x8c78('0x47')](_0x8c78('0x4b'),_0x32fa95);})[_0x8c78('0x4c')](function(){delete _0x454e97[_0x8c78('0xe')][_0xf68e0];delete _0x454e97['actions'][_0xf68e0];});}else{ut[_0x8c78('0x47')](_0x8c78('0x4d'));delete this['channels'][_0xf68e0];delete this[_0x8c78('0x11')][_0xf68e0];}};Fax['prototype'][_0x8c78('0x1c')]=function(_0x2a7149){var _0x257533=this;if(this[_0x8c78('0xe')][_0x2a7149[_0x8c78('0x24')]]){if(this[_0x8c78('0x11')][_0x2a7149[_0x8c78('0x24')]]){this['channels'][_0x2a7149[_0x8c78('0x24')]]['id']=this[_0x8c78('0x11')][_0x2a7149['uniqueid']]['id'];this[_0x8c78('0xe')][_0x2a7149[_0x8c78('0x24')]]['name']=this[_0x8c78('0x11')][_0x2a7149[_0x8c78('0x24')]][_0x8c78('0x26')];}logger[_0x8c78('0x27')](_0x2a7149[_0x8c78('0x24')],this[_0x8c78('0x11')][_0x2a7149[_0x8c78('0x24')]]?_0x8c78('0x4e'):_0x8c78('0x4f'),JSON[_0x8c78('0x40')](this[_0x8c78('0xe')][_0x2a7149[_0x8c78('0x24')]]));if(this[_0x8c78('0x11')][_0x2a7149[_0x8c78('0x24')]]){if(this['channels'][_0x2a7149[_0x8c78('0x24')]]['faxpages']>0x0&&this[_0x8c78('0xe')][_0x2a7149['uniqueid']]['faxstatus']==='SUCCESS'){this[_0x8c78('0x4a')](_0x2a7149['uniqueid'],!![]);}else{this['updateStatus'](_0x2a7149['uniqueid'],![],this[_0x8c78('0xe')][_0x2a7149[_0x8c78('0x24')]][_0x8c78('0x50')]?_0x8c78('0x51')+this['channels'][_0x2a7149[_0x8c78('0x24')]][_0x8c78('0x50')]:_0x8c78('0x52'));}}}};Fax[_0x8c78('0x1f')][_0x8c78('0x53')]=function(_0x3c3332){var _0x3990c2=this;return new BPromise(function(_0x54d561,_0x25c255){_0x3990c2[_0x8c78('0x54')](_0x3c3332,_0x3990c2[_0x8c78('0xf')][_0x3c3332[_0x8c78('0x55')]])[_0x8c78('0x46')](function(_0x37da1f){ut['logger'](_0x8c78('0x56'),_0x37da1f);_0x54d561(ut['message'](_0x8c78('0x57')));})[_0x8c78('0x3d')](function(_0x420ccf){ut['logger'](_0x8c78('0x58'),_0x420ccf);updateStatus(_0x3c3332);_0x25c255(ut[_0x8c78('0x37')](_0x8c78('0x59')));});});};Fax['prototype'][_0x8c78('0x5a')]=function(_0x2240cd){var _0x55d0ac=this;return new BPromise(function(_0xbfafd1,_0x2ee94b){var _0x1763a7=_0x55d0ac['checkTrunk'](_0x55d0ac[_0x8c78('0xf')][_0x2240cd[_0x8c78('0x55')]][_0x8c78('0x5b')],_0x2240cd);if(_0x1763a7[_0x8c78('0x5c')]){_0xbfafd1(ut[_0x8c78('0x37')](_0x8c78('0x5d')));}else{_0x2ee94b(ut[_0x8c78('0x37')](_0x1763a7[_0x8c78('0x37')]));}});};function originate(_0x240f1e,_0x5646ff,_0x1f2b8f){return new BPromise(function(_0x21b400,_0x3c6886){if(_0x1f2b8f){var _0x2c20d1=util[_0x8c78('0x5e')](_0x8c78('0x5f'),path[_0x8c78('0x39')](_0x240f1e[_0x8c78('0x3')])[_0x8c78('0x26')],_0x240f1e['path']);gs[_0x8c78('0x60')](_0x2c20d1)[_0x8c78('0x46')](function(){_0x240f1e['path']=util['format'](_0x8c78('0x61'),path['parse'](_0x240f1e[_0x8c78('0x3')])[_0x8c78('0x62')],path[_0x8c78('0x39')](_0x240f1e[_0x8c78('0x3')])[_0x8c78('0x26')]);_0x5646ff[_0x8c78('0x63')]=_0x240f1e['path'];ut['logger'](_0x8c78('0x64'),'');ami[_0x8c78('0x65')](ut[_0x8c78('0x66')](_0x240f1e,_0x5646ff))[_0x8c78('0x46')](function(_0x2c35c7){_0x21b400(_0x2c35c7);})['catch'](function(_0x41adf0){_0x3c6886(_0x41adf0);});})[_0x8c78('0x3d')](function(_0x3c8b20){_0x3c6886(_0x3c8b20);});}else{ami[_0x8c78('0x65')](ut[_0x8c78('0x66')](_0x240f1e,_0x5646ff))[_0x8c78('0x46')](function(_0x5d92c8){_0x21b400(_0x5d92c8);})[_0x8c78('0x3d')](function(_0x155725){_0x3c6886(_0x155725);});}});}Fax['prototype'][_0x8c78('0x54')]=function(_0x13205e,_0xae45a8){var _0x1f3f8b=this;return new BPromise(function(_0x3f2496,_0x44ee41){var _0x35bce4=uuid['v4']();var _0x3b4874=ut[_0x8c78('0x67')](_0x13205e,_0xae45a8);_0x1f3f8b[_0x8c78('0x11')][_0x35bce4]=new Action(_0x35bce4,_0xae45a8,_0x13205e);var _0x280a8b=_0x1f3f8b[_0x8c78('0x11')][_0x35bce4];if(path[_0x8c78('0x39')](_0x13205e[_0x8c78('0x3')])[_0x8c78('0x68')]===_0x8c78('0x3a')){originate(_0x280a8b,_0x3b4874,!![])[_0x8c78('0x46')](function(_0x4c6cc5){_0x3f2496(_0x4c6cc5);})[_0x8c78('0x3d')](function(_0x4da5dc){_0x44ee41(_0x4da5dc);});}else{originate(_0x280a8b,_0x3b4874,![])['then'](function(_0xdb2d67){_0x3f2496(_0xdb2d67);})[_0x8c78('0x3d')](function(_0x2e540b){_0x44ee41(_0x2e540b);});}});};Fax[_0x8c78('0x1f')]['isTrunkReachable']=function(_0x2779ad){return!_[_0x8c78('0x69')](_0x2779ad)&&!_[_0x8c78('0x69')](_0x2779ad['name'])&&!_[_0x8c78('0x69')](_0x2779ad[_0x8c78('0x6a')])&&_0x2779ad[_0x8c78('0x6a')]&&!_[_0x8c78('0x69')](this['trunks'][util[_0x8c78('0x5e')](_0x8c78('0x6b'),_0x2779ad['name'])])&&!_['isNil'](this['trunks'][util[_0x8c78('0x5e')](_0x8c78('0x6b'),_0x2779ad[_0x8c78('0x26')])][_0x8c78('0x2e')])&&(this['trunks'][util[_0x8c78('0x5e')]('SIP/%s',_0x2779ad[_0x8c78('0x26')])][_0x8c78('0x2e')]===_0x8c78('0x6c')||this[_0x8c78('0x10')][util[_0x8c78('0x5e')](_0x8c78('0x6b'),_0x2779ad['name'])]['status']==='unmonitored');};Fax[_0x8c78('0x1f')][_0x8c78('0x6d')]=function(_0x53b653,_0xb40796){if(!this[_0x8c78('0x6e')](_0x53b653)){ut[_0x8c78('0x47')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0x8c78('0x69')](_0x53b653)?'':_0x53b653['name']+_0x8c78('0x6f'));return{'isValid':![],'message':_0x8c78('0x70')};}if(_[_0x8c78('0x69')](_0xb40796[_0x8c78('0x7')])){ut[_0x8c78('0x47')](_0x8c78('0x71'),JSON[_0x8c78('0x40')](_0xb40796));return{'isValid':![],'message':_0x8c78('0x72')};}if(_[_0x8c78('0x69')](_0xb40796[_0x8c78('0x3')])){ut[_0x8c78('0x47')](_0x8c78('0x73'),JSON['stringify'](_0xb40796));return{'isValid':![],'message':_0x8c78('0x74')};}return{'isValid':!![],'message':_0x8c78('0x75')};};module[_0x8c78('0x76')]=Fax;
\ No newline at end of file
+var _0x36ee=['./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','from-voip-provider','exten','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','hasOwnProperty','syncFaxStatus','operation','status','localstationid','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','catch','\x20notify\x20','error','stringify','\x20receiveFax\x20','actions','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','bluebird','moment','path','tiff2pdf'];(function(_0x3f82e6,_0x4f7b0f){var _0x28b6e3=function(_0x30f41c){while(--_0x30f41c){_0x3f82e6['push'](_0x3f82e6['shift']());}};_0x28b6e3(++_0x4f7b0f);}(_0x36ee,0xe8));var _0xe36e=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x36ee[_0x3b380d];return _0x54502b;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xe36e('0x0'));var uuid=require('uuid');var moment=require(_0xe36e('0x1'));var path=require(_0xe36e('0x2'));var tiff2pdf=require(_0xe36e('0x3'));var gs=require(_0xe36e('0x4'));var logger=require(_0xe36e('0x5'))(_0xe36e('0x6'));var ami=require(_0xe36e('0x7'));var rpcDb=require(_0xe36e('0x8'));var Channel=require(_0xe36e('0x9'));var ut=require(_0xe36e('0xa'));var Action=require(_0xe36e('0xb'));var faxAccount=require(_0xe36e('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require(_0xe36e('0xd'));function Fax(_0x4aebdd){this[_0xe36e('0xe')]={};this[_0xe36e('0xf')]=_0x4aebdd[_0xe36e('0xf')];this['trunks']=_0x4aebdd[_0xe36e('0x10')];this['actions']={};ami['on'](_0xe36e('0x11'),this[_0xe36e('0x12')][_0xe36e('0x13')](this));ami['on'](_0xe36e('0x14'),this[_0xe36e('0x15')][_0xe36e('0x13')](this));ami['on'](_0xe36e('0x16'),this[_0xe36e('0x17')]['bind'](this));ami['on'](_0xe36e('0x18'),this[_0xe36e('0x19')][_0xe36e('0x13')](this));ami['on'](_0xe36e('0x1a'),this['syncFaxStatus'][_0xe36e('0x13')](this));ami['on']('receivefax',this['syncReceiveFax'][_0xe36e('0x13')](this));ami['on'](_0xe36e('0x1b'),this[_0xe36e('0x1c')][_0xe36e('0x13')](this));ami['on'](_0xe36e('0x1d'),this[_0xe36e('0x1e')][_0xe36e('0x13')](this));}Fax[_0xe36e('0x1f')][_0xe36e('0x12')]=function(_0x428d34){if(_0x428d34['context']===_0xe36e('0x20')){for(var _0x2184ae in this['faxAccounts']){if(this[_0xe36e('0xf')]['hasOwnProperty'](_0x2184ae)){if(_0x428d34[_0xe36e('0x21')]===this[_0xe36e('0xf')][_0x2184ae]['localstationid']){this[_0xe36e('0xe')][_0x428d34[_0xe36e('0x22')]]={};this[_0xe36e('0xe')][_0x428d34['uniqueid']][_0xe36e('0x23')]=_0x428d34[_0xe36e('0x23')];this[_0xe36e('0xe')][_0x428d34[_0xe36e('0x22')]]['id']=this[_0xe36e('0xf')][_0x2184ae]['id'];this[_0xe36e('0xe')][_0x428d34['uniqueid']][_0xe36e('0x24')]=this[_0xe36e('0xf')][_0x2184ae][_0xe36e('0x24')];logger[_0xe36e('0x25')](_0x428d34[_0xe36e('0x22')],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x428d34[_0xe36e('0x22')]]){this[_0xe36e('0xe')][_0x428d34[_0xe36e('0x22')]]={};this[_0xe36e('0xe')][_0x428d34[_0xe36e('0x22')]][_0xe36e('0x23')]=_0x428d34[_0xe36e('0x23')];logger['info'](_0x428d34[_0xe36e('0x22')],_0xe36e('0x26'));}};Fax[_0xe36e('0x1f')][_0xe36e('0x15')]=function(_0x5e58d8){if(this[_0xe36e('0xe')][_0x5e58d8['uniqueid']]){for(var _0xf7b02e in _0x5e58d8['variable']){if(_0x5e58d8[_0xe36e('0x27')]['hasOwnProperty'](_0xf7b02e)){this[_0xe36e('0xe')][_0x5e58d8['uniqueid']][_0xf7b02e]=_0x5e58d8[_0xe36e('0x28')];}}}};Fax['prototype']['syncNewState']=function(_0x5d8fd8){if(this['channels'][_0x5d8fd8[_0xe36e('0x22')]]){this[_0xe36e('0xe')][_0x5d8fd8['uniqueid']]['channelstate']=_0x5d8fd8[_0xe36e('0x29')];this[_0xe36e('0xe')][_0x5d8fd8[_0xe36e('0x22')]][_0xe36e('0x2a')]=_0x5d8fd8[_0xe36e('0x2a')];}};Fax[_0xe36e('0x1f')]['syncNewExten']=function(_0xb98e78){if(this[_0xe36e('0xe')][_0xb98e78['uniqueid']]){for(var _0x87e595 in _0xb98e78[_0xe36e('0x27')]){if(_0xb98e78[_0xe36e('0x27')][_0xe36e('0x2b')](_0x87e595)){this[_0xe36e('0xe')][_0xb98e78[_0xe36e('0x22')]][_0x87e595]=_0xb98e78[_0xe36e('0x28')];}}}};Fax[_0xe36e('0x1f')][_0xe36e('0x2c')]=function(_0x1cc329){if(this[_0xe36e('0xe')][_0x1cc329['uniqueid']]){this[_0xe36e('0xe')][_0x1cc329['uniqueid']]['operation']=_0x1cc329[_0xe36e('0x2d')];this['channels'][_0x1cc329[_0xe36e('0x22')]][_0xe36e('0x2e')]=_0x1cc329[_0xe36e('0x2e')];this[_0xe36e('0xe')][_0x1cc329['uniqueid']]['localstationid']=_0x1cc329[_0xe36e('0x2f')];this[_0xe36e('0xe')][_0x1cc329[_0xe36e('0x22')]][_0xe36e('0x30')]=_0x1cc329['filename'];logger[_0xe36e('0x25')](_0x1cc329[_0xe36e('0x22')],_0xe36e('0x31'));}};Fax['prototype'][_0xe36e('0x32')]=function(_0x2ff8f4){var _0x5d9f64=this;if(this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]]){var _0x3a95d7=this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]]['id'];this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]][_0xe36e('0x33')]=_0x2ff8f4[_0xe36e('0x33')];this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]][_0xe36e('0x34')]=_0x2ff8f4[_0xe36e('0x34')];this['channels'][_0x2ff8f4[_0xe36e('0x22')]][_0xe36e('0x2f')]=_0x2ff8f4[_0xe36e('0x2f')];this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]]['resolution']=_0x2ff8f4['resolution'];this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]][_0xe36e('0x35')]=_0x2ff8f4[_0xe36e('0x35')];this[_0xe36e('0xe')][_0x2ff8f4[_0xe36e('0x22')]][_0xe36e('0x30')]=_0x2ff8f4[_0xe36e('0x30')];this['channels'][_0x2ff8f4[_0xe36e('0x22')]][_0xe36e('0x36')]=_0x2ff8f4['calleridnum'];if(this[_0xe36e('0xe')][_0x2ff8f4['uniqueid']][_0xe36e('0x34')]>0x0){tiff2pdf(_0x2ff8f4[_0xe36e('0x30')],_0xe36e('0x37'),function(_0x470f38){logger[_0xe36e('0x25')](_0x2ff8f4['uniqueid'],_0xe36e('0x38'),_0x470f38[_0xe36e('0x39')]);attachment[_0xe36e('0x3a')]({'name':path[_0xe36e('0x3b')](_0x2ff8f4[_0xe36e('0x30')])[_0xe36e('0x24')],'basename':path['parse'](_0x2ff8f4[_0xe36e('0x30')])[_0xe36e('0x24')]+_0xe36e('0x3c'),'type':_0xe36e('0x3d')})[_0xe36e('0x3e')](function(_0x49cf4b){faxAccount[_0xe36e('0x3f')](_0x3a95d7,{'from':_0x2ff8f4[_0xe36e('0x36')],'mapKey':_0xe36e('0x6'),'body':path[_0xe36e('0x3b')](_0x2ff8f4[_0xe36e('0x30')])[_0xe36e('0x24')]+_0xe36e('0x3c'),'AttachmentId':_0x49cf4b['id']})[_0xe36e('0x40')](function(_0x43c2d4){logger['error'](_0x2ff8f4['uniqueid'],_0xe36e('0x41'),JSON['stringify'](_0x43c2d4));});})[_0xe36e('0x40')](function(_0x3d322c){logger[_0xe36e('0x42')](_0x2ff8f4[_0xe36e('0x22')],'\x20receiveFax\x20',JSON[_0xe36e('0x43')](_0x3d322c));});});}logger[_0xe36e('0x25')](_0x2ff8f4['uniqueid'],_0xe36e('0x44'));}};Fax[_0xe36e('0x1f')][_0xe36e('0x1e')]=function(_0x42eae5){if(this[_0xe36e('0x45')][_0x42eae5[_0xe36e('0x22')]]){_[_0xe36e('0x46')](this[_0xe36e('0xe')][_0x42eae5[_0xe36e('0x22')]],_[_0xe36e('0x47')](_0x42eae5,[_0xe36e('0x48'),_0xe36e('0x49')]));}};function updateStatus(_0x3147c0){if(_0x3147c0[_0xe36e('0x4a')]){faxMessage[_0xe36e('0x4b')](_0x3147c0['AttachmentId'],{'failMessage':_0xe36e('0x4c')})['then'](function(_0x510fcf){ut[_0xe36e('0x4d')](_0xe36e('0x4e'),_0x510fcf);})['catch'](function(_0x3ec864){ut[_0xe36e('0x4d')](_0xe36e('0x4f'),_0x3ec864);});}else{ut[_0xe36e('0x4d')](_0xe36e('0x50'));}}Fax[_0xe36e('0x1f')][_0xe36e('0x51')]=function(_0x41e10d,_0x4d5762,_0x55d190){var _0x22117e=this;var _0x837e8={};if(_0x4d5762){_0x837e8={'read':_0x4d5762};}else{_0x837e8={'failMessage':_0x55d190};}if(this['actions'][_0x41e10d][_0xe36e('0x4a')]){faxMessage[_0xe36e('0x4b')](this[_0xe36e('0x45')][_0x41e10d][_0xe36e('0x4a')],_0x837e8)[_0xe36e('0x3e')](function(_0x53758e){ut['logger']('[Fax][Message][Updated]',_0x53758e);})['catch'](function(_0x47605d){ut[_0xe36e('0x4d')](_0xe36e('0x52'),_0x47605d);})[_0xe36e('0x53')](function(){delete _0x22117e[_0xe36e('0xe')][_0x41e10d];delete _0x22117e[_0xe36e('0x45')][_0x41e10d];});}else{ut[_0xe36e('0x4d')](_0xe36e('0x54'));delete this[_0xe36e('0xe')][_0x41e10d];delete this['actions'][_0x41e10d];}};Fax[_0xe36e('0x1f')][_0xe36e('0x1c')]=function(_0x5a058b){var _0xd0733f=this;if(this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]]){if(this[_0xe36e('0x45')][_0x5a058b[_0xe36e('0x22')]]){this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]]['id']=this[_0xe36e('0x45')][_0x5a058b[_0xe36e('0x22')]]['id'];this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]][_0xe36e('0x24')]=this[_0xe36e('0x45')][_0x5a058b[_0xe36e('0x22')]][_0xe36e('0x24')];}logger[_0xe36e('0x25')](_0x5a058b[_0xe36e('0x22')],this[_0xe36e('0x45')][_0x5a058b[_0xe36e('0x22')]]?_0xe36e('0x55'):_0xe36e('0x56'),JSON[_0xe36e('0x43')](this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]]));if(this[_0xe36e('0x45')][_0x5a058b['uniqueid']]){if(this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]]['faxpages']>0x0&&this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]][_0xe36e('0x1a')]===_0xe36e('0x57')){this[_0xe36e('0x51')](_0x5a058b[_0xe36e('0x22')],!![]);}else{this['updateStatus'](_0x5a058b[_0xe36e('0x22')],![],this['channels'][_0x5a058b[_0xe36e('0x22')]][_0xe36e('0x58')]?_0xe36e('0x59')+this[_0xe36e('0xe')][_0x5a058b[_0xe36e('0x22')]][_0xe36e('0x58')]:_0xe36e('0x5a'));}}}};Fax[_0xe36e('0x1f')]['send']=function(_0x34c7a5){var _0xcafb87=this;return new BPromise(function(_0x4e6929,_0x3068e1){_0xcafb87[_0xe36e('0x5b')](_0x34c7a5,_0xcafb87[_0xe36e('0xf')][_0x34c7a5[_0xe36e('0x5c')]])[_0xe36e('0x3e')](function(_0x3565cb){ut[_0xe36e('0x4d')]('[Fax][execOriginate][success]',_0x3565cb);_0x4e6929(ut[_0xe36e('0x39')](_0xe36e('0x5d')));})[_0xe36e('0x40')](function(_0x1b7268){ut[_0xe36e('0x4d')](_0xe36e('0x5e'),_0x1b7268);updateStatus(_0x34c7a5);_0x3068e1(ut[_0xe36e('0x39')](_0xe36e('0x5f')));});});};Fax[_0xe36e('0x1f')][_0xe36e('0x60')]=function(_0x1c98bf){var _0x509733=this;return new BPromise(function(_0x371af5,_0x9a77de){var _0xd10e0b=_0x509733[_0xe36e('0x61')](_0x509733['faxAccounts'][_0x1c98bf['FaxAccountId']][_0xe36e('0x62')],_0x1c98bf);if(_0xd10e0b['isValid']){_0x371af5(ut['message']('Trunk\x20Reachable'));}else{_0x9a77de(ut[_0xe36e('0x39')](_0xd10e0b['message']));}});};function originate(_0x2cbd78,_0x2f7093,_0x258a63){return new BPromise(function(_0x221a90,_0x1bd60d){if(_0x258a63){var _0x46f789=util[_0xe36e('0x63')](_0xe36e('0x64'),path[_0xe36e('0x3b')](_0x2cbd78['path'])[_0xe36e('0x24')],_0x2cbd78['path']);gs[_0xe36e('0x65')](_0x46f789)['then'](function(){_0x2cbd78[_0xe36e('0x2')]=util[_0xe36e('0x63')](_0xe36e('0x66'),path[_0xe36e('0x3b')](_0x2cbd78['path'])['dir'],path[_0xe36e('0x3b')](_0x2cbd78[_0xe36e('0x2')])[_0xe36e('0x24')]);_0x2f7093[_0xe36e('0x67')]=_0x2cbd78[_0xe36e('0x2')];ut[_0xe36e('0x4d')]('Convert\x20pdf\x20to\x20tif','');ami[_0xe36e('0x68')](ut[_0xe36e('0x69')](_0x2cbd78,_0x2f7093))['then'](function(_0xb83ea7){_0x221a90(_0xb83ea7);})['catch'](function(_0x45ebca){_0x1bd60d(_0x45ebca);});})[_0xe36e('0x40')](function(_0x1cb052){_0x1bd60d(_0x1cb052);});}else{ami[_0xe36e('0x68')](ut['variablesAction'](_0x2cbd78,_0x2f7093))[_0xe36e('0x3e')](function(_0x565bcf){_0x221a90(_0x565bcf);})['catch'](function(_0x39ace1){_0x1bd60d(_0x39ace1);});}});}Fax[_0xe36e('0x1f')]['execOriginate']=function(_0x51f319,_0x460cc9){var _0x5ae7c6=this;return new BPromise(function(_0x33f3f5,_0x36ddc0){var _0x2c0ed5=uuid['v4']();var _0x276533=ut[_0xe36e('0x6a')](_0x51f319,_0x460cc9);_0x5ae7c6[_0xe36e('0x45')][_0x2c0ed5]=new Action(_0x2c0ed5,_0x460cc9,_0x51f319);var _0x590885=_0x5ae7c6[_0xe36e('0x45')][_0x2c0ed5];if(path[_0xe36e('0x3b')](_0x51f319[_0xe36e('0x2')])[_0xe36e('0x6b')]==='.pdf'){originate(_0x590885,_0x276533,!![])[_0xe36e('0x3e')](function(_0x37409f){_0x33f3f5(_0x37409f);})[_0xe36e('0x40')](function(_0x39c9fe){_0x36ddc0(_0x39c9fe);});}else{originate(_0x590885,_0x276533,![])['then'](function(_0x38be05){_0x33f3f5(_0x38be05);})['catch'](function(_0x1dae76){_0x36ddc0(_0x1dae76);});}});};Fax['prototype'][_0xe36e('0x6c')]=function(_0x522968){return!_['isNil'](_0x522968)&&!_[_0xe36e('0x6d')](_0x522968[_0xe36e('0x24')])&&!_[_0xe36e('0x6d')](_0x522968['active'])&&_0x522968[_0xe36e('0x6e')]&&!_[_0xe36e('0x6d')](this['trunks'][util[_0xe36e('0x63')](_0xe36e('0x6f'),_0x522968[_0xe36e('0x24')])])&&!_['isNil'](this['trunks'][util[_0xe36e('0x63')](_0xe36e('0x6f'),_0x522968[_0xe36e('0x24')])][_0xe36e('0x2e')])&&(this[_0xe36e('0x10')][util['format'](_0xe36e('0x6f'),_0x522968[_0xe36e('0x24')])][_0xe36e('0x2e')]===_0xe36e('0x70')||this[_0xe36e('0x10')][util['format'](_0xe36e('0x6f'),_0x522968[_0xe36e('0x24')])][_0xe36e('0x2e')]==='unmonitored');};Fax[_0xe36e('0x1f')]['checkTrunk']=function(_0x2ee394,_0x4c1845){if(!this[_0xe36e('0x6c')](_0x2ee394)){ut[_0xe36e('0x4d')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0xe36e('0x6d')](_0x2ee394)?'':_0x2ee394['name']+_0xe36e('0x71'));return{'isValid':![],'message':_0xe36e('0x72')};}if(_[_0xe36e('0x6d')](_0x4c1845[_0xe36e('0x6')])){ut[_0xe36e('0x4d')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0xe36e('0x43')](_0x4c1845));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0xe36e('0x6d')](_0x4c1845[_0xe36e('0x2')])){ut[_0xe36e('0x4d')](_0xe36e('0x73'),JSON[_0xe36e('0x43')](_0x4c1845));return{'isValid':![],'message':_0xe36e('0x74')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0xe36e('0x75')]=Fax;
\ No newline at end of file
index aab72a9..a73dd7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd681=['[Notify]\x20','bluebird','../../../config/logger','preview','../rpc/faxAccount','error','inspect','notify','resolve','then','catch'];(function(_0x448e8d,_0x43a056){var _0x46e774=function(_0x22f0be){while(--_0x22f0be){_0x448e8d['push'](_0x448e8d['shift']());}};_0x46e774(++_0x43a056);}(_0xd681,0x12a));var _0x1d68=function(_0x48e75e,_0x5e38ae){_0x48e75e=_0x48e75e-0x0;var _0x5eb464=_0xd681[_0x48e75e];return _0x5eb464;};'use strict';var util=require('util');var BPromise=require(_0x1d68('0x0'));var logger=require(_0x1d68('0x1'))(_0x1d68('0x2'));var _=require('lodash');var faxAccount=require(_0x1d68('0x3'));function loggerCatch(_0x186736){return function(_0x193f0d){logger[_0x1d68('0x4')](_0x186736,util[_0x1d68('0x5')](_0x193f0d,{'showHidden':![],'depth':null}));};}exports[_0x1d68('0x6')]=function(_0x4f9d73,_0x4e3e1d){return BPromise[_0x1d68('0x7')]()[_0x1d68('0x8')](faxAccount[_0x1d68('0x6')](_0x4f9d73,_0x4e3e1d))[_0x1d68('0x9')](loggerCatch(_0x1d68('0xa')));};
\ No newline at end of file
+var _0xbc34=['util','bluebird','../../../config/logger','lodash','error','inspect','notify','then','catch','[Notify]\x20'];(function(_0x58ead7,_0x3caa09){var _0x37a912=function(_0x385b28){while(--_0x385b28){_0x58ead7['push'](_0x58ead7['shift']());}};_0x37a912(++_0x3caa09);}(_0xbc34,0xdc));var _0x4bc3=function(_0xeb3be8,_0x3cc3b1){_0xeb3be8=_0xeb3be8-0x0;var _0x341d9c=_0xbc34[_0xeb3be8];return _0x341d9c;};'use strict';var util=require(_0x4bc3('0x0'));var BPromise=require(_0x4bc3('0x1'));var logger=require(_0x4bc3('0x2'))('preview');var _=require(_0x4bc3('0x3'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x33f11e){return function(_0x50013f){logger[_0x4bc3('0x4')](_0x33f11e,util[_0x4bc3('0x5')](_0x50013f,{'showHidden':![],'depth':null}));};}exports[_0x4bc3('0x6')]=function(_0x1fcf25,_0x233829){return BPromise['resolve']()[_0x4bc3('0x7')](faxAccount['notify'](_0x1fcf25,_0x233829))[_0x4bc3('0x8')](loggerCatch(_0x4bc3('0x9')));};
\ No newline at end of file
index b26056c..215ac15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9c=['fax','bluebird','child_process','exec','info','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger'];(function(_0x25bea7,_0x49ab45){var _0x175952=function(_0x56a0b5){while(--_0x56a0b5){_0x25bea7['push'](_0x25bea7['shift']());}};_0x175952(++_0x49ab45);}(_0x3e9c,0x1a2));var _0xc3e9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x3e9c[_0x4565bf];return _0x5610ba;};'use strict';var util=require(_0xc3e9('0x0'));var logger=require(_0xc3e9('0x1'))(_0xc3e9('0x2'));var BPromise=require(_0xc3e9('0x3'));var exec=require(_0xc3e9('0x4'))[_0xc3e9('0x5')];exports['execute']=function(_0x24303e){return new BPromise(function(_0x4126bf,_0x8dc3c0){exec(_0x24303e,function(_0x374727,_0x15d996,_0x5a38d8){logger[_0xc3e9('0x6')](_0xc3e9('0x7'),_0x15d996);if(_0x374727){logger[_0xc3e9('0x6')](_0xc3e9('0x7'),_0xc3e9('0x8'),util[_0xc3e9('0x9')](_0x374727,{'showHidden':![],'depth':null}),_0x15d996,_0x5a38d8);_0x8dc3c0(_0x374727);}_0x4126bf(_0x15d996);});});};
\ No newline at end of file
+var _0xfb18=['util','bluebird','child_process','exec','execute','Exec\x20gs','info','\x20Error\x20:','inspect'];(function(_0x541a67,_0x50728d){var _0x45da2a=function(_0x158929){while(--_0x158929){_0x541a67['push'](_0x541a67['shift']());}};_0x45da2a(++_0x50728d);}(_0xfb18,0x1e6));var _0x8fb1=function(_0x2ecc65,_0xd75c48){_0x2ecc65=_0x2ecc65-0x0;var _0x103cc3=_0xfb18[_0x2ecc65];return _0x103cc3;};'use strict';var util=require(_0x8fb1('0x0'));var logger=require('../../../../config/logger')('fax');var BPromise=require(_0x8fb1('0x1'));var exec=require(_0x8fb1('0x2'))[_0x8fb1('0x3')];exports[_0x8fb1('0x4')]=function(_0x4efcc1){return new BPromise(function(_0x1a1c47,_0x28ebae){exec(_0x4efcc1,function(_0x3c51bd,_0x7a67cb,_0x155821){logger['info'](_0x8fb1('0x5'),_0x7a67cb);if(_0x3c51bd){logger[_0x8fb1('0x6')]('Exec\x20gs',_0x8fb1('0x7'),util[_0x8fb1('0x8')](_0x3c51bd,{'showHidden':![],'depth':null}),_0x7a67cb,_0x155821);_0x28ebae(_0x3c51bd);}_0x1a1c47(_0x7a67cb);});});};
\ No newline at end of file
index 18dc476..d42e6af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83c2=['format','modem','t38timeout','localstationid','path','variablesAction','uniqueid','originate','channel','\x22%s\x22\x20<%s>','util','lodash','moment','../../../../config/logger','fax','message','inspect','addVariables','ecm','headerinfo','minrate','maxrate'];(function(_0xc44f44,_0x6db446){var _0x59c0a0=function(_0x28dc7c){while(--_0x28dc7c){_0xc44f44['push'](_0xc44f44['shift']());}};_0x59c0a0(++_0x6db446);}(_0x83c2,0x180));var _0x283c=function(_0x1e081a,_0x482d6b){_0x1e081a=_0x1e081a-0x0;var _0x428209=_0x83c2[_0x1e081a];return _0x428209;};'use strict';var util=require(_0x283c('0x0'));var _=require(_0x283c('0x1'));var moment=require(_0x283c('0x2'));var logger=require(_0x283c('0x3'))(_0x283c('0x4'));exports[_0x283c('0x5')]=function(_0xe24a72){return{'message':_0xe24a72};};exports['logger']=function(_0x330154,_0x533e4a){logger['info'](_0x330154,util[_0x283c('0x6')](_0x533e4a,{'showHidden':![],'depth':null}));};exports[_0x283c('0x7')]=function(_0x42a7f8,_0x3586c8){var _0x38f594={'XMF-ECM':_0x3586c8[_0x283c('0x8')],'XMF-HEADERINFO':_0x3586c8[_0x283c('0x9')],'XMF-MINRATE':_0x3586c8[_0x283c('0xa')],'XMF-MAXRATE':_0x3586c8[_0x283c('0xb')],'XMF-MODEM':util[_0x283c('0xc')]('\x22%s\x22',_0x3586c8[_0x283c('0xd')]),'XMF-GATEWAY':_0x3586c8['gateway'],'XMF-FAXDETECT':_0x3586c8['faxdetect'],'XMF-T38TIMEOUT':_0x3586c8[_0x283c('0xe')],'XMF-LOCALSTATIONID':_0x3586c8[_0x283c('0xf')],'XMF-PATH':_0x42a7f8[_0x283c('0x10')]};return _0x38f594;};exports[_0x283c('0x11')]=function(_0xeba7a5,_0x12c16e){return{'actionid':_0xeba7a5[_0x283c('0x12')],'action':_0x283c('0x13'),'channel':_0xeba7a5[_0x283c('0x14')],'Exten':'xcally-motion-fax','Context':'from-sip','Priority':'1','callerid':util[_0x283c('0xc')](_0x283c('0x15'),_0xeba7a5[_0x283c('0x9')]?_0xeba7a5[_0x283c('0x9')]:'',_0xeba7a5[_0x283c('0xf')]),'variable':_0x12c16e,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0xeba7a5[_0x283c('0x12')]};};
\ No newline at end of file
+var _0x200e=['addVariables','ecm','headerinfo','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','path','uniqueid','originate','xcally-motion-fax','from-sip','lodash','moment','../../../../config/logger','fax','message','logger','inspect'];(function(_0x52dd6b,_0x3a7baf){var _0x554aef=function(_0x527fc5){while(--_0x527fc5){_0x52dd6b['push'](_0x52dd6b['shift']());}};_0x554aef(++_0x3a7baf);}(_0x200e,0x1c5));var _0xe200=function(_0x4d6fe3,_0x1b7453){_0x4d6fe3=_0x4d6fe3-0x0;var _0x364c94=_0x200e[_0x4d6fe3];return _0x364c94;};'use strict';var util=require('util');var _=require(_0xe200('0x0'));var moment=require(_0xe200('0x1'));var logger=require(_0xe200('0x2'))(_0xe200('0x3'));exports[_0xe200('0x4')]=function(_0x49ff76){return{'message':_0x49ff76};};exports[_0xe200('0x5')]=function(_0x4699bc,_0x5a93b1){logger['info'](_0x4699bc,util[_0xe200('0x6')](_0x5a93b1,{'showHidden':![],'depth':null}));};exports[_0xe200('0x7')]=function(_0x22e086,_0xe68f3f){var _0x2af44b={'XMF-ECM':_0xe68f3f[_0xe200('0x8')],'XMF-HEADERINFO':_0xe68f3f[_0xe200('0x9')],'XMF-MINRATE':_0xe68f3f['minrate'],'XMF-MAXRATE':_0xe68f3f[_0xe200('0xa')],'XMF-MODEM':util[_0xe200('0xb')](_0xe200('0xc'),_0xe68f3f[_0xe200('0xd')]),'XMF-GATEWAY':_0xe68f3f[_0xe200('0xe')],'XMF-FAXDETECT':_0xe68f3f[_0xe200('0xf')],'XMF-T38TIMEOUT':_0xe68f3f[_0xe200('0x10')],'XMF-LOCALSTATIONID':_0xe68f3f[_0xe200('0x11')],'XMF-PATH':_0x22e086[_0xe200('0x12')]};return _0x2af44b;};exports['variablesAction']=function(_0x594414,_0x5501c2){return{'actionid':_0x594414[_0xe200('0x13')],'action':_0xe200('0x14'),'channel':_0x594414['channel'],'Exten':_0xe200('0x15'),'Context':_0xe200('0x16'),'Priority':'1','callerid':util[_0xe200('0xb')]('\x22%s\x22\x20<%s>',_0x594414[_0xe200('0x9')]?_0x594414[_0xe200('0x9')]:'',_0x594414[_0xe200('0x11')]),'variable':_0x5501c2,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x594414[_0xe200('0x13')]};};
\ No newline at end of file
index 82962cd..f877b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc77c=['./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','[index.js][main]','util','moment','./server','./realtime','./report','./acw','./trigger','./preview','./rpc/voiceQueue','./rpc/voiceCallReport','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho'];(function(_0x3d098a,_0x420224){var _0x59f82a=function(_0xbea539){while(--_0xbea539){_0x3d098a['push'](_0x3d098a['shift']());}};_0x59f82a(++_0x420224);}(_0xc77c,0x1cf));var _0xcc77=function(_0x412fe8,_0x48c49a){_0x412fe8=_0x412fe8-0x0;var _0x2c88d9=_0xc77c[_0x412fe8];return _0x2c88d9;};'use strict';var BPromise=require('bluebird');var util=require(_0xcc77('0x0'));var moment=require(_0xcc77('0x1'));var server=require(_0xcc77('0x2'));var Realtime=require(_0xcc77('0x3'));var Report=require(_0xcc77('0x4'));var Acw=require(_0xcc77('0x5'));var Trigger=require(_0xcc77('0x6'));var Dialer=require('./dialer');var Preview=require(_0xcc77('0x7'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0xcc77('0x8'));var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0xcc77('0x9'));var trunk=require('./rpc/trunk');var trigger=require(_0xcc77('0xa'));var template=require(_0xcc77('0xb'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0xcc77('0xc'));var voiceExtension=require(_0xcc77('0xd'));var faxAccount=require(_0xcc77('0xe'));var zendesk=require(_0xcc77('0xf'));var salesforce=require(_0xcc77('0x10'));var sugarcrm=require(_0xcc77('0x11'));var freshdesk=require(_0xcc77('0x12'));var desk=require('./rpc/integrations/desk');var zoho=require(_0xcc77('0x13'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0xcc77('0x14'));var servicenow=require(_0xcc77('0x15'));var dynamics365=require(_0xcc77('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xcc77('0x17'))('ami');var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0xcc77('0x18')](_0xcc77('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xcc77('0x18')](_0xcc77('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xcc77('0x1a')]()[_0xcc77('0x1b')](user[_0xcc77('0x1c')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x1d')]())[_0xcc77('0x1b')](user[_0xcc77('0x1e')]())['then'](realtime[_0xcc77('0x1f')]())[_0xcc77('0x1b')](trunk[_0xcc77('0x20')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x21')]())[_0xcc77('0x1b')](voiceQueue[_0xcc77('0x22')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x23')]())['then'](trigger['getTriggers']())['then'](realtime['initTriggers']())[_0xcc77('0x1b')](template[_0xcc77('0x24')]())['then'](realtime[_0xcc77('0x25')]())[_0xcc77('0x1b')](zendesk[_0xcc77('0x26')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x27')]())[_0xcc77('0x1b')](salesforce[_0xcc77('0x28')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x29')]())[_0xcc77('0x1b')](sugarcrm['getSugarcrmAccounts']())[_0xcc77('0x1b')](realtime[_0xcc77('0x2a')]())[_0xcc77('0x1b')](freshdesk[_0xcc77('0x2b')]())['then'](realtime['initFreshdeskAccounts']())[_0xcc77('0x1b')](desk[_0xcc77('0x2c')]())[_0xcc77('0x1b')](realtime['initDeskAccounts']())[_0xcc77('0x1b')](zoho[_0xcc77('0x2d')]())['then'](realtime[_0xcc77('0x2e')]())['then'](vtiger[_0xcc77('0x2f')]())[_0xcc77('0x1b')](realtime['initVtigerAccounts']())[_0xcc77('0x1b')](freshsales[_0xcc77('0x30')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x31')]())[_0xcc77('0x1b')](servicenow[_0xcc77('0x32')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x33')]())[_0xcc77('0x1b')](dynamics365[_0xcc77('0x34')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x35')]())[_0xcc77('0x1b')](campaign[_0xcc77('0x36')]())[_0xcc77('0x1b')](realtime['initCampaigns']())[_0xcc77('0x1b')](voiceExtension[_0xcc77('0x37')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x38')]())['then'](faxAccount[_0xcc77('0x39')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x3a')]())[_0xcc77('0x1b')](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0xcc77('0x1b')](voiceQueueReport['getVoiceQueueReports']())[_0xcc77('0x1b')](realtime['initVoiceQueueReports']())[_0xcc77('0x1b')](cmHopperHistory[_0xcc77('0x3b')]())[_0xcc77('0x1b')](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory[_0xcc77('0x3c')]())[_0xcc77('0x1b')](realtime[_0xcc77('0x3d')]())[_0xcc77('0x1b')](voiceCallReport[_0xcc77('0x3e')]())[_0xcc77('0x1b')](realtime['initVoiceCallReports']())[_0xcc77('0x3f')](function(_0x2ee3ef){logger[_0xcc77('0x40')](_0xcc77('0x41'),util[_0xcc77('0x42')](_0x2ee3ef,{'showHidden':![],'depth':null}));});}function main(){return server[_0xcc77('0x43')](realtime,preview,fax)[_0xcc77('0x1b')](function(_0x50c6bc){return initRealtime();})[_0xcc77('0x1b')](function(){return initParams();})[_0xcc77('0x1b')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0xcc77('0x3f')](function(_0x1c962c){logger['error'](_0xcc77('0x44'),util[_0xcc77('0x42')](_0x1c962c,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xe88b=['initTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','[index.js][initParams]','inspect','listen','[index.js][main]','bluebird','util','moment','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/voiceCallReport','./rpc/trunk','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','../../config/logger','ami','hour','get','resolve','getAgents','then','getTelephones','initTelephones','getTrunks','initTrunks','initVoiceQueues','getTriggers'];(function(_0x13ac10,_0x46e79e){var _0x28eda2=function(_0x169ef0){while(--_0x169ef0){_0x13ac10['push'](_0x13ac10['shift']());}};_0x28eda2(++_0x46e79e);}(_0xe88b,0xf4));var _0xbe88=function(_0x28578d,_0xcf5cf0){_0x28578d=_0x28578d-0x0;var _0x524826=_0xe88b[_0x28578d];return _0x524826;};'use strict';var BPromise=require(_0xbe88('0x0'));var util=require(_0xbe88('0x1'));var moment=require(_0xbe88('0x2'));var server=require('./server');var Realtime=require(_0xbe88('0x3'));var Report=require(_0xbe88('0x4'));var Acw=require(_0xbe88('0x5'));var Trigger=require(_0xbe88('0x6'));var Dialer=require(_0xbe88('0x7'));var Preview=require(_0xbe88('0x8'));var Fax=require(_0xbe88('0x9'));var user=require('./rpc/user');var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0xbe88('0xa'));var trunk=require(_0xbe88('0xb'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require(_0xbe88('0xc'));var campaign=require(_0xbe88('0xd'));var voiceExtension=require(_0xbe88('0xe'));var faxAccount=require(_0xbe88('0xf'));var zendesk=require(_0xbe88('0x10'));var salesforce=require(_0xbe88('0x11'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0xbe88('0x12'));var desk=require(_0xbe88('0x13'));var zoho=require(_0xbe88('0x14'));var vtiger=require(_0xbe88('0x15'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0xbe88('0x16'));var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0xbe88('0x17'))(_0xbe88('0x18'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0xbe88('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xbe88('0x1a')](_0xbe88('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xbe88('0x1b')]()['then'](user[_0xbe88('0x1c')]())[_0xbe88('0x1d')](realtime['initAgents']())[_0xbe88('0x1d')](user[_0xbe88('0x1e')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x1f')]())[_0xbe88('0x1d')](trunk[_0xbe88('0x20')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x21')]())[_0xbe88('0x1d')](voiceQueue['getVoiceQueues']())[_0xbe88('0x1d')](realtime[_0xbe88('0x22')]())[_0xbe88('0x1d')](trigger[_0xbe88('0x23')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x24')]())[_0xbe88('0x1d')](template[_0xbe88('0x25')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x26')]())['then'](zendesk['getZendeskAccounts']())[_0xbe88('0x1d')](realtime[_0xbe88('0x27')]())['then'](salesforce[_0xbe88('0x28')]())['then'](realtime[_0xbe88('0x29')]())['then'](sugarcrm[_0xbe88('0x2a')]())['then'](realtime[_0xbe88('0x2b')]())[_0xbe88('0x1d')](freshdesk[_0xbe88('0x2c')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x2d')]())[_0xbe88('0x1d')](desk['getDeskAccounts']())['then'](realtime[_0xbe88('0x2e')]())['then'](zoho[_0xbe88('0x2f')]())['then'](realtime[_0xbe88('0x30')]())[_0xbe88('0x1d')](vtiger[_0xbe88('0x31')]())[_0xbe88('0x1d')](realtime['initVtigerAccounts']())[_0xbe88('0x1d')](freshsales[_0xbe88('0x32')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x33')]())[_0xbe88('0x1d')](servicenow['getServicenowAccounts']())['then'](realtime[_0xbe88('0x34')]())['then'](dynamics365['getDynamics365Accounts']())[_0xbe88('0x1d')](realtime[_0xbe88('0x35')]())[_0xbe88('0x1d')](campaign[_0xbe88('0x36')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x37')]())['then'](voiceExtension[_0xbe88('0x38')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x39')]())[_0xbe88('0x1d')](faxAccount[_0xbe88('0x3a')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x3b')]())[_0xbe88('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0xbe88('0x1b')]()[_0xbe88('0x1d')](voiceQueueReport[_0xbe88('0x3c')]())[_0xbe88('0x1d')](realtime[_0xbe88('0x3d')]())[_0xbe88('0x1d')](cmHopperHistory[_0xbe88('0x3e')]())['then'](realtime['initVoiceQueueHopperHistory']())[_0xbe88('0x1d')](cmHopperHistory['getCampaignHopperHistory']())[_0xbe88('0x1d')](realtime[_0xbe88('0x3f')]())[_0xbe88('0x1d')](voiceCallReport[_0xbe88('0x40')]())['then'](realtime['initVoiceCallReports']())[_0xbe88('0x41')](function(_0x54e20a){logger['error'](_0xbe88('0x42'),util[_0xbe88('0x43')](_0x54e20a,{'showHidden':![],'depth':null}));});}function main(){return server[_0xbe88('0x44')](realtime,preview,fax)[_0xbe88('0x1d')](function(_0xa30ffd){return initRealtime();})[_0xbe88('0x1d')](function(){return initParams();})['then'](function(){report['sync']();setInterval(initRealtime,0x1388);})['catch'](function(_0x43b38b){logger['error'](_0xbe88('0x45'),util[_0xbe88('0x43')](_0x43b38b,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index d39e5db..0022188 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x839bc1,_0x509b65){var _0x4dbea4=function(_0x53c3bb){while(--_0x53c3bb){_0x839bc1['push'](_0x839bc1['shift']());}};_0x4dbea4(++_0x509b65);}(_0x70e0,0x17b));var _0x070e=function(_0x52a55d,_0x46ae2e){_0x52a55d=_0x52a55d-0x0;var _0xdbe690=_0x70e0[_0x52a55d];return _0xdbe690;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
+var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0xf3b3d3,_0x5dbbd0){var _0x21fb0a=function(_0x3e99a1){while(--_0x3e99a1){_0xf3b3d3['push'](_0xf3b3d3['shift']());}};_0x21fb0a(++_0x5dbbd0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0xcb91[_0x163040];return _0x364667;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
index 7a514df..515574a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38eb=['dialAMDMaximumWordLength','name','type','campaign','originated','temp','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialCutDigit','TrunkBackup','Trunk','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0x38eb,0x91));var _0xb38e=function(_0xf8ff97,_0x463b61){_0xf8ff97=_0xf8ff97-0x0;var _0x23a528=_0x38eb[_0xf8ff97];return _0x23a528;};'use strict';function Campaign(_0x5dd13b){this['id']=_0x5dd13b['id']||0x0;this[_0xb38e('0x0')]=_0x5dd13b[_0xb38e('0x0')]||'';this['type']=_0x5dd13b[_0xb38e('0x1')]||_0xb38e('0x2');this[_0xb38e('0x3')]=0x0;this[_0xb38e('0x4')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xb38e('0x5')]=0x0;this[_0xb38e('0x6')]='';this[_0xb38e('0x7')]=!![];this[_0xb38e('0x8')]=_0x5dd13b[_0xb38e('0x8')];this['limitCalls']=_0x5dd13b[_0xb38e('0x9')];this[_0xb38e('0xa')]=_0x5dd13b['dialTimezone']||null;this[_0xb38e('0xb')]=_0x5dd13b['dialGlobalInterval']?_0x5dd13b[_0xb38e('0xb')]:null;this['dialOriginateCallerIdName']=_0x5dd13b['dialOriginateCallerIdName'];this[_0xb38e('0xc')]=_0x5dd13b[_0xb38e('0xc')];this[_0xb38e('0xd')]=_0x5dd13b[_0xb38e('0xd')]||0x1e;this[_0xb38e('0xe')]=_0x5dd13b[_0xb38e('0xe')];this['dialCongestionRetryFrequency']=_0x5dd13b[_0xb38e('0xf')];this[_0xb38e('0x10')]=_0x5dd13b[_0xb38e('0x10')];this[_0xb38e('0x11')]=_0x5dd13b[_0xb38e('0x11')];this[_0xb38e('0x12')]=_0x5dd13b[_0xb38e('0x12')];this[_0xb38e('0x13')]=_0x5dd13b[_0xb38e('0x13')];this[_0xb38e('0x14')]=_0x5dd13b[_0xb38e('0x14')];this[_0xb38e('0x15')]=_0x5dd13b[_0xb38e('0x15')]||0x3;this[_0xb38e('0x16')]=_0x5dd13b['dialNoSuchNumberRetryFrequency']||0x96;this[_0xb38e('0x17')]=_0x5dd13b[_0xb38e('0x17')]||0x3;this[_0xb38e('0x18')]=_0x5dd13b['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x5dd13b['dialAbandonedMaxRetry']||0x3;this[_0xb38e('0x19')]=_0x5dd13b['dialAbandonedRetryFrequency']||0x96;this[_0xb38e('0x1a')]=_0x5dd13b['dialMachineMaxRetry']||0x3;this[_0xb38e('0x1b')]=_0x5dd13b[_0xb38e('0x1b')]||0x96;this[_0xb38e('0x1c')]=_0x5dd13b[_0xb38e('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x5dd13b[_0xb38e('0x1d')]||0x96;this[_0xb38e('0x1e')]=_0x5dd13b[_0xb38e('0x1e')]||_0xb38e('0x1f');this[_0xb38e('0x20')]=_0x5dd13b[_0xb38e('0x20')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x5dd13b['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xb38e('0x21')]=_0x5dd13b[_0xb38e('0x21')]||undefined;this['TrunkBackup']=_0x5dd13b[_0xb38e('0x22')]?_0x5dd13b[_0xb38e('0x22')]:undefined;this[_0xb38e('0x23')]=_0x5dd13b[_0xb38e('0x23')]?_0x5dd13b[_0xb38e('0x23')]:undefined;this['Interval']=_0x5dd13b['Interval']?_0x5dd13b['Interval']:undefined;this[_0xb38e('0x24')]=_0x5dd13b[_0xb38e('0x24')]?_0x5dd13b['SquareProject']:undefined;this[_0xb38e('0x25')]=_0x5dd13b[_0xb38e('0x24')]?_0x5dd13b[_0xb38e('0x24')]['name']:undefined;this[_0xb38e('0x26')]=_0x5dd13b[_0xb38e('0x26')]||![];this[_0xb38e('0x27')]=_0x5dd13b[_0xb38e('0x27')];this[_0xb38e('0x28')]=_0x5dd13b[_0xb38e('0x28')];this[_0xb38e('0x29')]=_0x5dd13b[_0xb38e('0x29')];this[_0xb38e('0x2a')]=_0x5dd13b['dialAMDTotalAnalysisTime'];this[_0xb38e('0x2b')]=_0x5dd13b[_0xb38e('0x2b')];this[_0xb38e('0x2c')]=_0x5dd13b[_0xb38e('0x2c')];this[_0xb38e('0x2d')]=_0x5dd13b[_0xb38e('0x2d')];this[_0xb38e('0x2e')]=_0x5dd13b[_0xb38e('0x2e')];this[_0xb38e('0x2f')]=_0x5dd13b[_0xb38e('0x2f')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x59a5=['Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrAnswerCallsDay','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk'];(function(_0x4f3454,_0x59c20b){var _0x1d7787=function(_0x396ed2){while(--_0x396ed2){_0x4f3454['push'](_0x4f3454['shift']());}};_0x1d7787(++_0x59c20b);}(_0x59a5,0x10c));var _0x559a=function(_0x151599,_0x1b83e5){_0x151599=_0x151599-0x0;var _0x352ddd=_0x59a5[_0x151599];return _0x352ddd;};'use strict';function Campaign(_0x477929){this['id']=_0x477929['id']||0x0;this[_0x559a('0x0')]=_0x477929['name']||'';this[_0x559a('0x1')]=_0x477929[_0x559a('0x1')]||_0x559a('0x2');this[_0x559a('0x3')]=0x0;this[_0x559a('0x4')]=0x0;this[_0x559a('0x5')]=0x0;this['ivrTotalCallsDays']=0x0;this['message']='';this[_0x559a('0x6')]=!![];this[_0x559a('0x7')]=_0x477929['active'];this[_0x559a('0x8')]=_0x477929[_0x559a('0x8')];this['dialTimezone']=_0x477929[_0x559a('0x9')]||null;this['dialGlobalInterval']=_0x477929['dialGlobalInterval']?_0x477929[_0x559a('0xa')]:null;this[_0x559a('0xb')]=_0x477929[_0x559a('0xb')];this[_0x559a('0xc')]=_0x477929[_0x559a('0xc')];this[_0x559a('0xd')]=_0x477929[_0x559a('0xd')]||0x1e;this[_0x559a('0xe')]=_0x477929[_0x559a('0xe')];this[_0x559a('0xf')]=_0x477929[_0x559a('0xf')];this[_0x559a('0x10')]=_0x477929['dialBusyMaxRetry'];this[_0x559a('0x11')]=_0x477929[_0x559a('0x11')];this[_0x559a('0x12')]=_0x477929[_0x559a('0x12')];this[_0x559a('0x13')]=_0x477929['dialNoAnswerRetryFrequency'];this[_0x559a('0x14')]=_0x477929[_0x559a('0x14')];this[_0x559a('0x15')]=_0x477929[_0x559a('0x15')]||0x3;this[_0x559a('0x16')]=_0x477929['dialNoSuchNumberRetryFrequency']||0x96;this[_0x559a('0x17')]=_0x477929[_0x559a('0x17')]||0x3;this['dialDropRetryFrequency']=_0x477929[_0x559a('0x18')]||0x96;this[_0x559a('0x19')]=_0x477929[_0x559a('0x19')]||0x3;this[_0x559a('0x1a')]=_0x477929[_0x559a('0x1a')]||0x96;this[_0x559a('0x1b')]=_0x477929[_0x559a('0x1b')]||0x3;this['dialMachineRetryFrequency']=_0x477929[_0x559a('0x1c')]||0x96;this[_0x559a('0x1d')]=_0x477929[_0x559a('0x1d')]||0x3;this[_0x559a('0x1e')]=_0x477929[_0x559a('0x1e')]||0x96;this[_0x559a('0x1f')]=_0x477929[_0x559a('0x1f')]||_0x559a('0x20');this[_0x559a('0x21')]=_0x477929['dialPrefix']||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x477929[_0x559a('0x22')]||undefined;this['dialCutDigit']=_0x477929[_0x559a('0x23')]||undefined;this[_0x559a('0x24')]=_0x477929[_0x559a('0x24')]?_0x477929[_0x559a('0x24')]:undefined;this[_0x559a('0x25')]=_0x477929[_0x559a('0x25')]?_0x477929[_0x559a('0x25')]:undefined;this[_0x559a('0x26')]=_0x477929[_0x559a('0x26')]?_0x477929[_0x559a('0x26')]:undefined;this[_0x559a('0x27')]=_0x477929[_0x559a('0x27')]?_0x477929[_0x559a('0x27')]:undefined;this['dialQueueProject']=_0x477929['SquareProject']?_0x477929[_0x559a('0x27')][_0x559a('0x0')]:undefined;this[_0x559a('0x28')]=_0x477929['dialAMDActive']||![];this[_0x559a('0x29')]=_0x477929['dialAMDInitialSilence'];this[_0x559a('0x2a')]=_0x477929[_0x559a('0x2a')];this[_0x559a('0x2b')]=_0x477929[_0x559a('0x2b')];this[_0x559a('0x2c')]=_0x477929['dialAMDTotalAnalysisTime'];this['dialAMDMinWordLength']=_0x477929[_0x559a('0x2d')];this['dialAMDBetweenWordsSilence']=_0x477929[_0x559a('0x2e')];this['dialAMDMaximumNumberOfWords']=_0x477929[_0x559a('0x2f')];this[_0x559a('0x30')]=_0x477929['dialAMDSilenceThreshold'];this[_0x559a('0x31')]=_0x477929['dialAMDMaximumWordLength'];}module[_0x559a('0x32')]=Campaign;
\ No newline at end of file
index 719e933..73bb2dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x685b=['answered','endtime','unmanaged','duration','holdtime','tag','disposition','monitor','monitorFilename','monitors','transfercalleridnum','transferconnectedlinenum','transferType','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','accountcode','linkedid','exten'];(function(_0x57111f,_0x2a7bde){var _0xe10f6f=function(_0x3833a3){while(--_0x3833a3){_0x57111f['push'](_0x57111f['shift']());}};_0xe10f6f(++_0x2a7bde);}(_0x685b,0xbd));var _0xb685=function(_0x108d68,_0x9b39de){_0x108d68=_0x108d68-0x0;var _0x11476a=_0x685b[_0x108d68];return _0x11476a;};'use strict';function Channel(){this[_0xb685('0x0')]=null;this[_0xb685('0x1')]='';this[_0xb685('0x2')]='';this[_0xb685('0x3')]=0x0;this[_0xb685('0x4')]='';this['connectedlinenum']=undefined;this[_0xb685('0x5')]=undefined;this[_0xb685('0x6')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0xb685('0x7')]=0x0;this[_0xb685('0x8')]=0x0;this[_0xb685('0x9')]=![];this['answertime']=null;this[_0xb685('0xa')]=null;this[_0xb685('0xb')]=![];this['abandoned']=![];this['lastapplication']='';this['lastdata']='';this[_0xb685('0xc')]=0x0;this['billableseconds']=0x0;this[_0xb685('0xd')]=0x0;this['type']=null;this[_0xb685('0xe')]=null;this[_0xb685('0xf')]=null;this[_0xb685('0x10')]=![];this[_0xb685('0x11')]=null;this['queue']=null;this[_0xb685('0x12')]=[];this[_0xb685('0x13')]=undefined;this[_0xb685('0x14')]=undefined;this[_0xb685('0x15')]=undefined;this['mohtime']=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x3f7c=['unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','type','disposition','monitor','queue','transferconnectedlinenum','mohtime','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','context','uniqueid','linkedid','exten','answered','endtime'];(function(_0x57f485,_0x99f5ed){var _0x16cd43=function(_0x5c7257){while(--_0x5c7257){_0x57f485['push'](_0x57f485['shift']());}};_0x16cd43(++_0x99f5ed);}(_0x3f7c,0xaa));var _0xc3f7=function(_0x271024,_0x46dcb1){_0x271024=_0x271024-0x0;var _0x5e0ee3=_0x3f7c[_0x271024];return _0x5e0ee3;};'use strict';function Channel(){this[_0xc3f7('0x0')]=null;this[_0xc3f7('0x1')]='';this[_0xc3f7('0x2')]='';this[_0xc3f7('0x3')]=0x0;this[_0xc3f7('0x4')]='';this['connectedlinenum']=undefined;this[_0xc3f7('0x5')]=undefined;this['accountcode']=0x0;this[_0xc3f7('0x6')]='';this[_0xc3f7('0x7')]=0x0;this[_0xc3f7('0x8')]=0x0;this[_0xc3f7('0x9')]=0x0;this[_0xc3f7('0xa')]=![];this['answertime']=null;this[_0xc3f7('0xb')]=null;this[_0xc3f7('0xc')]=![];this[_0xc3f7('0xd')]=![];this[_0xc3f7('0xe')]='';this[_0xc3f7('0xf')]='';this[_0xc3f7('0x10')]=0x0;this[_0xc3f7('0x11')]=0x0;this[_0xc3f7('0x12')]=0x0;this[_0xc3f7('0x13')]=null;this['tag']=null;this[_0xc3f7('0x14')]=null;this[_0xc3f7('0x15')]=![];this['monitorFilename']=null;this[_0xc3f7('0x16')]=null;this['monitors']=[];this['transfercalleridnum']=undefined;this[_0xc3f7('0x17')]=undefined;this['transferType']=undefined;this[_0xc3f7('0x18')]=0x0;}module[_0xc3f7('0x19')]=Channel;
\ No newline at end of file
index 34270b7..6b03bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6247=['authType','password','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri'];(function(_0x30ae7b,_0x3a718f){var _0xa9d0cf=function(_0x8102a1){while(--_0x8102a1){_0x30ae7b['push'](_0x30ae7b['shift']());}};_0xa9d0cf(++_0x3a718f);}(_0x6247,0x14d));var _0x7624=function(_0x29b968,_0xb84c26){_0x29b968=_0x29b968-0x0;var _0x5bd8aa=_0x6247[_0x29b968];return _0x5bd8aa;};'use strict';function DeskAccount(_0x5bf54c){this['id']=_0x5bf54c['id']||0x0;this[_0x7624('0x0')]=_0x5bf54c[_0x7624('0x0')]||'';this[_0x7624('0x1')]=_0x5bf54c['username']||'';this[_0x7624('0x2')]=_0x5bf54c[_0x7624('0x2')]||'';this[_0x7624('0x3')]=_0x5bf54c[_0x7624('0x3')]||'';this[_0x7624('0x4')]=_0x5bf54c[_0x7624('0x4')]||'';this['consumerKey']=_0x5bf54c['consumerKey']||'';this[_0x7624('0x5')]=_0x5bf54c[_0x7624('0x5')]||'';this[_0x7624('0x6')]=_0x5bf54c['token']||'';this['tokenSecret']=_0x5bf54c[_0x7624('0x7')]||'';this['type']=_0x5bf54c[_0x7624('0x8')]||'';this[_0x7624('0x9')]=_0x5bf54c[_0x7624('0x9')]||'';this[_0x7624('0xa')]=_0x5bf54c[_0x7624('0xa')]||{};}module[_0x7624('0xb')]=DeskAccount;
\ No newline at end of file
+var _0x07dc=['name','username','remoteUri','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports'];(function(_0x417a17,_0x3335ba){var _0x3f0483=function(_0x9957cf){while(--_0x9957cf){_0x417a17['push'](_0x417a17['shift']());}};_0x3f0483(++_0x3335ba);}(_0x07dc,0xf0));var _0xc07d=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x07dc[_0x36eaaa];return _0x461349;};'use strict';function DeskAccount(_0x12c4b8){this['id']=_0x12c4b8['id']||0x0;this[_0xc07d('0x0')]=_0x12c4b8[_0xc07d('0x0')]||'';this[_0xc07d('0x1')]=_0x12c4b8[_0xc07d('0x1')]||'';this['remoteUri']=_0x12c4b8[_0xc07d('0x2')]||'';this['authType']=_0x12c4b8['authType']||'';this[_0xc07d('0x3')]=_0x12c4b8[_0xc07d('0x3')]||'';this[_0xc07d('0x4')]=_0x12c4b8['consumerKey']||'';this[_0xc07d('0x5')]=_0x12c4b8[_0xc07d('0x5')]||'';this[_0xc07d('0x6')]=_0x12c4b8[_0xc07d('0x6')]||'';this[_0xc07d('0x7')]=_0x12c4b8[_0xc07d('0x7')]||'';this[_0xc07d('0x8')]=_0x12c4b8[_0xc07d('0x8')]||'';this['serverUrl']=_0x12c4b8[_0xc07d('0x9')]||'';this[_0xc07d('0xa')]=_0x12c4b8[_0xc07d('0xa')]||{};}module[_0xc07d('0xb')]=DeskAccount;
\ No newline at end of file
index 345c845..24d7dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['clientSecret','serverUrl','name','username','password','remoteUri','tenantId','clientId'];(function(_0x4aba0e,_0x3cca89){var _0x240301=function(_0x376410){while(--_0x376410){_0x4aba0e['push'](_0x4aba0e['shift']());}};_0x240301(++_0x3cca89);}(_0xe605,0x92));var _0x5e60=function(_0x511d0f,_0x3fe077){_0x511d0f=_0x511d0f-0x0;var _0x3cd60c=_0xe605[_0x511d0f];return _0x3cd60c;};'use strict';function Dynamics365Account(_0x4cf32c){this['id']=_0x4cf32c['id']||0x0;this[_0x5e60('0x0')]=_0x4cf32c['name']||'';this[_0x5e60('0x1')]=_0x4cf32c[_0x5e60('0x1')]||'';this[_0x5e60('0x2')]=_0x4cf32c[_0x5e60('0x2')]||'';this[_0x5e60('0x3')]=_0x4cf32c[_0x5e60('0x3')]||'';this[_0x5e60('0x4')]=_0x4cf32c[_0x5e60('0x4')]||'';this[_0x5e60('0x5')]=_0x4cf32c[_0x5e60('0x5')]||'';this[_0x5e60('0x6')]=_0x4cf32c[_0x5e60('0x6')]||{};this['serverUrl']=_0x4cf32c[_0x5e60('0x7')]||'';this['Configurations']=_0x4cf32c['Configurations']||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0x91a7=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations'];(function(_0x35bb79,_0x501df3){var _0x26f31e=function(_0x4ef68d){while(--_0x4ef68d){_0x35bb79['push'](_0x35bb79['shift']());}};_0x26f31e(++_0x501df3);}(_0x91a7,0xe7));var _0x791a=function(_0x565dee,_0x16bb93){_0x565dee=_0x565dee-0x0;var _0x499cc1=_0x91a7[_0x565dee];return _0x499cc1;};'use strict';function Dynamics365Account(_0x27c92e){this['id']=_0x27c92e['id']||0x0;this[_0x791a('0x0')]=_0x27c92e[_0x791a('0x0')]||'';this[_0x791a('0x1')]=_0x27c92e['username']||'';this[_0x791a('0x2')]=_0x27c92e['password']||'';this[_0x791a('0x3')]=_0x27c92e['remoteUri']||'';this['tenantId']=_0x27c92e[_0x791a('0x4')]||'';this[_0x791a('0x5')]=_0x27c92e['clientId']||'';this[_0x791a('0x6')]=_0x27c92e['clientSecret']||{};this[_0x791a('0x7')]=_0x27c92e[_0x791a('0x7')]||'';this['Configurations']=_0x27c92e[_0x791a('0x8')]||{};}module[_0x791a('0x9')]=Dynamics365Account;
\ No newline at end of file
index ba81c0e..34f19ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1285=['exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','Trunk','ListId','key'];(function(_0xca7a4b,_0x5684ae){var _0x571817=function(_0x49d2a2){while(--_0x49d2a2){_0xca7a4b['push'](_0xca7a4b['shift']());}};_0x571817(++_0x5684ae);}(_0x1285,0xde));var _0x5128=function(_0x1dc04c,_0x420102){_0x1dc04c=_0x1dc04c-0x0;var _0xc397cf=_0x1285[_0x1dc04c];return _0xc397cf;};'use strict';function FaxAccount(_0x465ca6){this['id']=_0x465ca6['id']||0x0;this['name']=_0x465ca6[_0x5128('0x0')]||'';this[_0x5128('0x1')]=_0x465ca6[_0x5128('0x1')];this[_0x5128('0x2')]=_0x465ca6['ecm'];this[_0x5128('0x3')]=_0x465ca6[_0x5128('0x3')];this[_0x5128('0x4')]=_0x465ca6['localstationid'];this[_0x5128('0x5')]=_0x465ca6[_0x5128('0x5')]||0x960;this[_0x5128('0x6')]=_0x465ca6['maxrate']||0x3840;this[_0x5128('0x7')]=_0x465ca6[_0x5128('0x7')]||_0x5128('0x8');this[_0x5128('0x9')]=_0x465ca6[_0x5128('0x9')]||'no';this[_0x5128('0xa')]=_0x465ca6[_0x5128('0xa')]||'no';this[_0x5128('0xb')]=_0x465ca6[_0x5128('0xb')]||0x1388;this[_0x5128('0xc')]=_0x465ca6[_0x5128('0xc')]||'SIP';this[_0x5128('0xd')]=_0x465ca6[_0x5128('0xd')]?_0x465ca6[_0x5128('0xd')]:undefined;this['ListId']=_0x465ca6[_0x5128('0xe')];this[_0x5128('0xf')]=_0x465ca6[_0x5128('0xf')];}module[_0x5128('0x10')]=FaxAccount;
\ No newline at end of file
+var _0xb605=['Trunk','ListId','key','name','description','ecm','headerinfo','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','SIP'];(function(_0x43d16c,_0x2b5447){var _0x208cce=function(_0x371720){while(--_0x371720){_0x43d16c['push'](_0x43d16c['shift']());}};_0x208cce(++_0x2b5447);}(_0xb605,0x99));var _0x5b60=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xb605[_0x2bf141];return _0x48277b;};'use strict';function FaxAccount(_0x4b5634){this['id']=_0x4b5634['id']||0x0;this[_0x5b60('0x0')]=_0x4b5634['name']||'';this['description']=_0x4b5634[_0x5b60('0x1')];this['ecm']=_0x4b5634[_0x5b60('0x2')];this[_0x5b60('0x3')]=_0x4b5634[_0x5b60('0x3')];this['localstationid']=_0x4b5634['localstationid'];this[_0x5b60('0x4')]=_0x4b5634[_0x5b60('0x4')]||0x960;this[_0x5b60('0x5')]=_0x4b5634[_0x5b60('0x5')]||0x3840;this['modem']=_0x4b5634[_0x5b60('0x6')]||'v17,v27,v29';this[_0x5b60('0x7')]=_0x4b5634[_0x5b60('0x7')]||'no';this[_0x5b60('0x8')]=_0x4b5634[_0x5b60('0x8')]||'no';this[_0x5b60('0x9')]=_0x4b5634[_0x5b60('0x9')]||0x1388;this[_0x5b60('0xa')]=_0x4b5634[_0x5b60('0xa')]||_0x5b60('0xb');this[_0x5b60('0xc')]=_0x4b5634[_0x5b60('0xc')]?_0x4b5634[_0x5b60('0xc')]:undefined;this[_0x5b60('0xd')]=_0x4b5634[_0x5b60('0xd')];this[_0x5b60('0xe')]=_0x4b5634[_0x5b60('0xe')];}module['exports']=FaxAccount;
\ No newline at end of file
index ff8ad77..048b21f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa69=['serverUrl','Configurations','exports','name','username','apiKey','remoteUri'];(function(_0x5de1bc,_0x434be1){var _0x19f4b8=function(_0x35f764){while(--_0x35f764){_0x5de1bc['push'](_0x5de1bc['shift']());}};_0x19f4b8(++_0x434be1);}(_0xfa69,0x161));var _0x9fa6=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xfa69[_0x4565bf];return _0x5610ba;};'use strict';function FreshdeskAccount(_0x2714bd){this['id']=_0x2714bd['id']||0x0;this[_0x9fa6('0x0')]=_0x2714bd['name']||'';this[_0x9fa6('0x1')]=_0x2714bd[_0x9fa6('0x1')]||'';this[_0x9fa6('0x2')]=_0x2714bd['token']||'';this['remoteUri']=_0x2714bd[_0x9fa6('0x3')]||'';this[_0x9fa6('0x4')]=_0x2714bd[_0x9fa6('0x4')]||'';this[_0x9fa6('0x5')]=_0x2714bd['Configurations']||{};}module[_0x9fa6('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0x5c38=['serverUrl','Configurations','name','username','apiKey','token','remoteUri'];(function(_0x525bfe,_0x298e9c){var _0x2d6850=function(_0x17d637){while(--_0x17d637){_0x525bfe['push'](_0x525bfe['shift']());}};_0x2d6850(++_0x298e9c);}(_0x5c38,0xf7));var _0x85c3=function(_0x5c66fa,_0x488caf){_0x5c66fa=_0x5c66fa-0x0;var _0x35fa93=_0x5c38[_0x5c66fa];return _0x35fa93;};'use strict';function FreshdeskAccount(_0x5cc7f9){this['id']=_0x5cc7f9['id']||0x0;this[_0x85c3('0x0')]=_0x5cc7f9[_0x85c3('0x0')]||'';this[_0x85c3('0x1')]=_0x5cc7f9[_0x85c3('0x1')]||'';this[_0x85c3('0x2')]=_0x5cc7f9[_0x85c3('0x3')]||'';this[_0x85c3('0x4')]=_0x5cc7f9['remoteUri']||'';this[_0x85c3('0x5')]=_0x5cc7f9[_0x85c3('0x5')]||'';this[_0x85c3('0x6')]=_0x5cc7f9['Configurations']||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
index 476e420..56a6d0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ffe=['token','remoteUri','serverUrl','Configurations','name','username','apiKey'];(function(_0x2b8651,_0x50a5cb){var _0x13e09b=function(_0x4aadd2){while(--_0x4aadd2){_0x2b8651['push'](_0x2b8651['shift']());}};_0x13e09b(++_0x50a5cb);}(_0x1ffe,0xa5));var _0xe1ff=function(_0xd530fe,_0x362284){_0xd530fe=_0xd530fe-0x0;var _0x8127ca=_0x1ffe[_0xd530fe];return _0x8127ca;};'use strict';function FreshsalesAccount(_0x2c1082){this['id']=_0x2c1082['id']||0x0;this[_0xe1ff('0x0')]=_0x2c1082[_0xe1ff('0x0')]||'';this[_0xe1ff('0x1')]=_0x2c1082[_0xe1ff('0x1')]||'';this[_0xe1ff('0x2')]=_0x2c1082[_0xe1ff('0x3')]||'';this[_0xe1ff('0x4')]=_0x2c1082[_0xe1ff('0x4')]||'';this[_0xe1ff('0x5')]=_0x2c1082[_0xe1ff('0x5')]||'';this[_0xe1ff('0x6')]=_0x2c1082['Configurations']||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x99fb=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x99fb,0x92));var _0xb99f=function(_0x5597ae,_0x4d4d1d){_0x5597ae=_0x5597ae-0x0;var _0x396c93=_0x99fb[_0x5597ae];return _0x396c93;};'use strict';function FreshsalesAccount(_0x534134){this['id']=_0x534134['id']||0x0;this['name']=_0x534134[_0xb99f('0x0')]||'';this[_0xb99f('0x1')]=_0x534134[_0xb99f('0x1')]||'';this[_0xb99f('0x2')]=_0x534134[_0xb99f('0x3')]||'';this['remoteUri']=_0x534134[_0xb99f('0x4')]||'';this[_0xb99f('0x5')]=_0x534134['serverUrl']||'';this[_0xb99f('0x6')]=_0x534134[_0xb99f('0x6')]||{};}module[_0xb99f('0x7')]=FreshsalesAccount;
\ No newline at end of file
index aab859a..8916cd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9da5=['voice','mohtime','variables','exports','uniqueid','calleridname','position','queuecallerabandon','queuecallercompleteAt','queuecallerexitAt','channel','connectedlinenum','connectedlinename','accountcode','context','exten','holdtime','assigned','lastAssignedTo'];(function(_0x139893,_0x1d636a){var _0x5b62c8=function(_0x3a50de){while(--_0x3a50de){_0x139893['push'](_0x139893['shift']());}};_0x5b62c8(++_0x1d636a);}(_0x9da5,0xfb));var _0x59da=function(_0x2b2b33,_0x56606f){_0x2b2b33=_0x2b2b33-0x0;var _0x229157=_0x9da5[_0x2b2b33];return _0x229157;};'use strict';function QueueReport(){this['type']='inbound';this[_0x59da('0x0')]='';this['calleridnum']='';this[_0x59da('0x1')]='';this['queue']='';this['queuecallerjoinAt']=null;this['queuecallerleaveAt']=null;this[_0x59da('0x2')]=0x1;this['count']=0x1;this[_0x59da('0x3')]=![];this['queuecallerabandonAt']=null;this['queuecallercomplete']=![];this[_0x59da('0x4')]=null;this['queuecallerexit']=![];this[_0x59da('0x5')]=null;this['originalposition']=0x1;this[_0x59da('0x6')]='';this[_0x59da('0x7')]='';this[_0x59da('0x8')]='';this[_0x59da('0x9')]='';this[_0x59da('0xa')]='';this[_0x59da('0xb')]='';this['priority']='';this[_0x59da('0xc')]=0x0;this[_0x59da('0xd')]=![];this[_0x59da('0xe')]='';this['motionChannel']=_0x59da('0xf');this[_0x59da('0x10')]=0x0;this[_0x59da('0x11')]={};}module[_0x59da('0x12')]=QueueReport;
\ No newline at end of file
+var _0x5025=['queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallercomplete','queuecallercompleteAt','queuecallerexit','originalposition','connectedlinenum','accountcode','context','exten','priority','assigned','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','type','inbound','uniqueid','calleridnum','calleridname'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5025,0x119));var _0x5502=function(_0x5d0746,_0x511b2d){_0x5d0746=_0x5d0746-0x0;var _0x19a392=_0x5025[_0x5d0746];return _0x19a392;};'use strict';function QueueReport(){this[_0x5502('0x0')]=_0x5502('0x1');this[_0x5502('0x2')]='';this[_0x5502('0x3')]='';this[_0x5502('0x4')]='';this[_0x5502('0x5')]='';this[_0x5502('0x6')]=null;this[_0x5502('0x7')]=null;this[_0x5502('0x8')]=0x1;this[_0x5502('0x9')]=0x1;this['queuecallerabandon']=![];this['queuecallerabandonAt']=null;this[_0x5502('0xa')]=![];this[_0x5502('0xb')]=null;this[_0x5502('0xc')]=![];this['queuecallerexitAt']=null;this[_0x5502('0xd')]=0x1;this['channel']='';this[_0x5502('0xe')]='';this['connectedlinename']='';this[_0x5502('0xf')]='';this[_0x5502('0x10')]='';this[_0x5502('0x11')]='';this[_0x5502('0x12')]='';this['holdtime']=0x0;this[_0x5502('0x13')]=![];this[_0x5502('0x14')]='';this[_0x5502('0x15')]=_0x5502('0x16');this[_0x5502('0x17')]=0x0;this[_0x5502('0x18')]={};}module[_0x5502('0x19')]=QueueReport;
\ No newline at end of file
index 0dff880..8b3f900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2995=['securityToken','type','integrationTab','serverUrl','name','username','remoteUri','password','clientId','clientSecret'];(function(_0x402f93,_0x151360){var _0x54feba=function(_0x35146b){while(--_0x35146b){_0x402f93['push'](_0x402f93['shift']());}};_0x54feba(++_0x151360);}(_0x2995,0x180));var _0x5299=function(_0x4d48ec,_0x8af9a9){_0x4d48ec=_0x4d48ec-0x0;var _0x4699ec=_0x2995[_0x4d48ec];return _0x4699ec;};'use strict';function SalesforceAccount(_0x4642f1){this['id']=_0x4642f1['id']||0x0;this[_0x5299('0x0')]=_0x4642f1[_0x5299('0x0')]||'';this['username']=_0x4642f1[_0x5299('0x1')]||'';this[_0x5299('0x2')]=_0x4642f1['remoteUri']||'';this[_0x5299('0x3')]=_0x4642f1[_0x5299('0x3')]||'';this[_0x5299('0x4')]=_0x4642f1[_0x5299('0x4')]||'';this[_0x5299('0x5')]=_0x4642f1[_0x5299('0x5')]||'';this[_0x5299('0x6')]=_0x4642f1['securityToken']||'';this[_0x5299('0x7')]=_0x4642f1[_0x5299('0x7')]||_0x5299('0x8');this[_0x5299('0x9')]=_0x4642f1['serverUrl']||'';this['Configurations']=_0x4642f1['Configurations']||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0x3c71=['serverUrl','Configurations','name','username','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x50c7c8,_0xfb9124){var _0x3c410c=function(_0x48647b){while(--_0x48647b){_0x50c7c8['push'](_0x50c7c8['shift']());}};_0x3c410c(++_0xfb9124);}(_0x3c71,0x98));var _0x13c7=function(_0x42ef0e,_0x3c8a88){_0x42ef0e=_0x42ef0e-0x0;var _0x1b8a07=_0x3c71[_0x42ef0e];return _0x1b8a07;};'use strict';function SalesforceAccount(_0xefb6c1){this['id']=_0xefb6c1['id']||0x0;this[_0x13c7('0x0')]=_0xefb6c1[_0x13c7('0x0')]||'';this[_0x13c7('0x1')]=_0xefb6c1['username']||'';this[_0x13c7('0x2')]=_0xefb6c1[_0x13c7('0x2')]||'';this[_0x13c7('0x3')]=_0xefb6c1[_0x13c7('0x3')]||'';this[_0x13c7('0x4')]=_0xefb6c1[_0x13c7('0x4')]||'';this[_0x13c7('0x5')]=_0xefb6c1['clientSecret']||'';this[_0x13c7('0x6')]=_0xefb6c1[_0x13c7('0x6')]||'';this[_0x13c7('0x7')]=_0xefb6c1[_0x13c7('0x7')]||'integrationTab';this[_0x13c7('0x8')]=_0xefb6c1[_0x13c7('0x8')]||'';this[_0x13c7('0x9')]=_0xefb6c1[_0x13c7('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index 2de5d1e..8898b89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2447=['name','username','password','remoteUri','serverUrl','Configurations','exports'];(function(_0x16c941,_0x3c1204){var _0x21cebd=function(_0x254df0){while(--_0x254df0){_0x16c941['push'](_0x16c941['shift']());}};_0x21cebd(++_0x3c1204);}(_0x2447,0x196));var _0x7244=function(_0x59aced,_0x29227c){_0x59aced=_0x59aced-0x0;var _0x225c0e=_0x2447[_0x59aced];return _0x225c0e;};'use strict';function ServicenowAccount(_0x295d4f){this['id']=_0x295d4f['id']||0x0;this[_0x7244('0x0')]=_0x295d4f[_0x7244('0x0')]||'';this[_0x7244('0x1')]=_0x295d4f['username']||'';this[_0x7244('0x2')]=_0x295d4f['password']||'';this[_0x7244('0x3')]=_0x295d4f['remoteUri']||'';this[_0x7244('0x4')]=_0x295d4f['serverUrl']||'';this[_0x7244('0x5')]=_0x295d4f[_0x7244('0x5')]||{};}module[_0x7244('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x0f79=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x2a5e67,_0x148cca){var _0xffe10=function(_0x326aab){while(--_0x326aab){_0x2a5e67['push'](_0x2a5e67['shift']());}};_0xffe10(++_0x148cca);}(_0x0f79,0xce));var _0x90f7=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x0f79[_0x616290];return _0x453879;};'use strict';function ServicenowAccount(_0x4f4ddd){this['id']=_0x4f4ddd['id']||0x0;this['name']=_0x4f4ddd[_0x90f7('0x0')]||'';this[_0x90f7('0x1')]=_0x4f4ddd[_0x90f7('0x1')]||'';this[_0x90f7('0x2')]=_0x4f4ddd[_0x90f7('0x2')]||'';this[_0x90f7('0x3')]=_0x4f4ddd['remoteUri']||'';this[_0x90f7('0x4')]=_0x4f4ddd[_0x90f7('0x4')]||'';this[_0x90f7('0x5')]=_0x4f4ddd[_0x90f7('0x5')]||{};}module[_0x90f7('0x6')]=ServicenowAccount;
\ No newline at end of file
index 0bd7657..5bdc8c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1713=['exports','name','password','remoteUri','serverUrl','Configurations'];(function(_0x37e55e,_0x1797b1){var _0x23aef4=function(_0x5afaed){while(--_0x5afaed){_0x37e55e['push'](_0x37e55e['shift']());}};_0x23aef4(++_0x1797b1);}(_0x1713,0x1b1));var _0x3171=function(_0x4a7e4b,_0x4e8b56){_0x4a7e4b=_0x4a7e4b-0x0;var _0xc2aa55=_0x1713[_0x4a7e4b];return _0xc2aa55;};'use strict';function SugarcrmAccount(_0x47c8c2){this['id']=_0x47c8c2['id']||0x0;this['name']=_0x47c8c2[_0x3171('0x0')]||'';this['username']=_0x47c8c2['username']||'';this[_0x3171('0x1')]=_0x47c8c2[_0x3171('0x1')]||'';this['remoteUri']=_0x47c8c2[_0x3171('0x2')]||'';this[_0x3171('0x3')]=_0x47c8c2[_0x3171('0x3')]||'';this[_0x3171('0x4')]=_0x47c8c2['Configurations']||{};}module[_0x3171('0x5')]=SugarcrmAccount;
\ No newline at end of file
+var _0x536a=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x10004e,_0xd701e6){var _0x5af990=function(_0x4bab6a){while(--_0x4bab6a){_0x10004e['push'](_0x10004e['shift']());}};_0x5af990(++_0xd701e6);}(_0x536a,0x14c));var _0xa536=function(_0x14ddfb,_0x475df1){_0x14ddfb=_0x14ddfb-0x0;var _0x398b47=_0x536a[_0x14ddfb];return _0x398b47;};'use strict';function SugarcrmAccount(_0x1c710e){this['id']=_0x1c710e['id']||0x0;this[_0xa536('0x0')]=_0x1c710e[_0xa536('0x0')]||'';this[_0xa536('0x1')]=_0x1c710e[_0xa536('0x1')]||'';this[_0xa536('0x2')]=_0x1c710e[_0xa536('0x2')]||'';this[_0xa536('0x3')]=_0x1c710e[_0xa536('0x3')]||'';this['serverUrl']=_0x1c710e[_0xa536('0x4')]||'';this[_0xa536('0x5')]=_0x1c710e[_0xa536('0x5')]||{};}module[_0xa536('0x6')]=SugarcrmAccount;
\ No newline at end of file
index c497b1a..db774c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbbb=['state','unknown','stateTime','status','address','exports','name','accountcode'];(function(_0x13229d,_0x16f236){var _0x4ec30d=function(_0x50b973){while(--_0x50b973){_0x13229d['push'](_0x13229d['shift']());}};_0x4ec30d(++_0x16f236);}(_0xcbbb,0x1ee));var _0xbcbb=function(_0x1b6186,_0x1ec7f2){_0x1b6186=_0x1b6186-0x0;var _0x186121=_0xcbbb[_0x1b6186];return _0x186121;};'use strict';function Telephone(_0x537fec){this['id']=_0x537fec['id']||0x0;this[_0xbcbb('0x0')]=_0x537fec[_0xbcbb('0x0')]||'';this[_0xbcbb('0x1')]=_0x537fec[_0xbcbb('0x1')]||'';this[_0xbcbb('0x2')]=_0xbcbb('0x3');this[_0xbcbb('0x4')]=0x0;this[_0xbcbb('0x5')]=_0xbcbb('0x3');this[_0xbcbb('0x6')]='';}module[_0xbcbb('0x7')]=Telephone;
\ No newline at end of file
+var _0x46d1=['state','unknown','status','address','name','accountcode'];(function(_0x17a27b,_0x398c7d){var _0x119185=function(_0x1c73d5){while(--_0x1c73d5){_0x17a27b['push'](_0x17a27b['shift']());}};_0x119185(++_0x398c7d);}(_0x46d1,0xbe));var _0x146d=function(_0x31b2fc,_0x25890b){_0x31b2fc=_0x31b2fc-0x0;var _0x336e13=_0x46d1[_0x31b2fc];return _0x336e13;};'use strict';function Telephone(_0x38302c){this['id']=_0x38302c['id']||0x0;this[_0x146d('0x0')]=_0x38302c[_0x146d('0x0')]||'';this[_0x146d('0x1')]=_0x38302c[_0x146d('0x1')]||'';this[_0x146d('0x2')]=_0x146d('0x3');this['stateTime']=0x0;this[_0x146d('0x4')]=_0x146d('0x3');this[_0x146d('0x5')]='';}module['exports']=Telephone;
\ No newline at end of file
index 2e083b9..d39e5f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x4a3f7c,_0x4167d4){var _0x5b1645=function(_0x406196){while(--_0x406196){_0x4a3f7c['push'](_0x4a3f7c['shift']());}};_0x5b1645(++_0x4167d4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0xe2aa58,_0x96b378){var _0x3b37b6=function(_0x2ef8c8){while(--_0x2ef8c8){_0xe2aa58['push'](_0xe2aa58['shift']());}};_0x3b37b6(++_0x96b378);}(_0xb10b,0x12a));var _0xbb10=function(_0x1fb7c9,_0xb14ddf){_0x1fb7c9=_0x1fb7c9-0x0;var _0x5f0c3a=_0xb10b[_0x1fb7c9];return _0x5f0c3a;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index 6de1195..507a6b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['exports','name','channel','status','AllConditions','AnyConditions','Actions'];(function(_0x25db26,_0x1f724d){var _0x303463=function(_0x336489){while(--_0x336489){_0x25db26['push'](_0x25db26['shift']());}};_0x303463(++_0x1f724d);}(_0x8603,0x190));var _0x3860=function(_0x1be07e,_0x8e9930){_0x1be07e=_0x1be07e-0x0;var _0x52b7e5=_0x8603[_0x1be07e];return _0x52b7e5;};'use strict';function Trigger(_0xba4b79){this['id']=_0xba4b79['id']||0x0;this[_0x3860('0x0')]=_0xba4b79[_0x3860('0x0')]||'';this[_0x3860('0x1')]=_0xba4b79['channel']||'voice';this[_0x3860('0x2')]=_0xba4b79[_0x3860('0x2')]||![];this[_0x3860('0x3')]=_0xba4b79['AllConditions']||[];this[_0x3860('0x4')]=_0xba4b79['AnyConditions']||[];this[_0x3860('0x5')]=_0xba4b79[_0x3860('0x5')]||[];}module[_0x3860('0x6')]=Trigger;
\ No newline at end of file
+var _0xb7e7=['Actions','exports','name','channel','status','AllConditions','AnyConditions'];(function(_0x3c9159,_0x58f463){var _0x3a6f26=function(_0x57c4f7){while(--_0x57c4f7){_0x3c9159['push'](_0x3c9159['shift']());}};_0x3a6f26(++_0x58f463);}(_0xb7e7,0x121));var _0x7b7e=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xb7e7[_0xac151d];return _0x111dba;};'use strict';function Trigger(_0x2e5e07){this['id']=_0x2e5e07['id']||0x0;this['name']=_0x2e5e07[_0x7b7e('0x0')]||'';this['channel']=_0x2e5e07[_0x7b7e('0x1')]||'voice';this[_0x7b7e('0x2')]=_0x2e5e07['status']||![];this[_0x7b7e('0x3')]=_0x2e5e07[_0x7b7e('0x3')]||[];this[_0x7b7e('0x4')]=_0x2e5e07['AnyConditions']||[];this['Actions']=_0x2e5e07[_0x7b7e('0x5')]||[];}module[_0x7b7e('0x6')]=Trigger;
\ No newline at end of file
index 57c3088..b0cb5c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce36=['unknown','stateTime','registry','split','host','domainport','refresh','stateRegistry','address','defaultuser','exports','active','name'];(function(_0x2a75d0,_0x9a0ccf){var _0x921264=function(_0x41652e){while(--_0x41652e){_0x2a75d0['push'](_0x2a75d0['shift']());}};_0x921264(++_0x9a0ccf);}(_0xce36,0xa7));var _0x6ce3=function(_0x4706a6,_0x5a1c63){_0x4706a6=_0x4706a6-0x0;var _0x1bb705=_0xce36[_0x4706a6];return _0x1bb705;};'use strict';function Trunk(_0x2f93b8){this['id']=_0x2f93b8['id']||0x0;this[_0x6ce3('0x0')]=_0x2f93b8[_0x6ce3('0x0')]||![];this[_0x6ce3('0x1')]=_0x2f93b8[_0x6ce3('0x1')]||'';this['state']=_0x6ce3('0x2');this[_0x6ce3('0x3')]=0x0;this['status']=_0x6ce3('0x2');this['registry']=_0x2f93b8[_0x6ce3('0x4')]&&_0x2f93b8['registry']['indexOf'](':')?_0x2f93b8[_0x6ce3('0x4')][_0x6ce3('0x5')](':')[0x0]:'';this[_0x6ce3('0x6')]='';this['port']='';this['domain']='';this[_0x6ce3('0x7')]='';this[_0x6ce3('0x8')]='';this[_0x6ce3('0x9')]='unknown';this['registrationtime']='';this[_0x6ce3('0xa')]='';this[_0x6ce3('0xb')]=_0x2f93b8[_0x6ce3('0xb')]||'';}module[_0x6ce3('0xc')]=Trunk;
\ No newline at end of file
+var _0x711a=['unknown','stateTime','status','registry','indexOf','host','port','domain','refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state'];(function(_0xbbbeae,_0x4a414a){var _0x1cb9c9=function(_0x4db7d0){while(--_0x4db7d0){_0xbbbeae['push'](_0xbbbeae['shift']());}};_0x1cb9c9(++_0x4a414a);}(_0x711a,0x1d9));var _0xa711=function(_0x53d6d7,_0x44cc36){_0x53d6d7=_0x53d6d7-0x0;var _0x2d0d40=_0x711a[_0x53d6d7];return _0x2d0d40;};'use strict';function Trunk(_0x2351df){this['id']=_0x2351df['id']||0x0;this[_0xa711('0x0')]=_0x2351df[_0xa711('0x0')]||![];this[_0xa711('0x1')]=_0x2351df['name']||'';this[_0xa711('0x2')]=_0xa711('0x3');this[_0xa711('0x4')]=0x0;this[_0xa711('0x5')]=_0xa711('0x3');this[_0xa711('0x6')]=_0x2351df[_0xa711('0x6')]&&_0x2351df['registry'][_0xa711('0x7')](':')?_0x2351df[_0xa711('0x6')]['split'](':')[0x0]:'';this[_0xa711('0x8')]='';this[_0xa711('0x9')]='';this[_0xa711('0xa')]='';this['domainport']='';this[_0xa711('0xb')]='';this[_0xa711('0xc')]=_0xa711('0x3');this[_0xa711('0xd')]='';this[_0xa711('0xe')]='';this[_0xa711('0xf')]=_0x2351df[_0xa711('0xf')]||'';}module[_0xa711('0x10')]=Trunk;
\ No newline at end of file
index 1bc7e50..d10af5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa97f=['exports','exten','recordingFormat','none'];(function(_0x516ffb,_0x5b5b42){var _0x319667=function(_0x250098){while(--_0x250098){_0x516ffb['push'](_0x516ffb['shift']());}};_0x319667(++_0x5b5b42);}(_0xa97f,0x1b9));var _0xfa97=function(_0x466eb8,_0x287f4b){_0x466eb8=_0x466eb8-0x0;var _0x387824=_0xa97f[_0x466eb8];return _0x387824;};'use strict';function voiceExtension(_0x573330){this['id']=_0x573330['id']||0x0;this[_0xfa97('0x0')]=_0x573330[_0xfa97('0x0')]||'';this[_0xfa97('0x1')]=_0x573330['recordingFormat']||_0xfa97('0x2');this['mandatoryDisposition']=_0x573330['mandatoryDisposition']||![];}module[_0xfa97('0x3')]=voiceExtension;
\ No newline at end of file
+var _0x7b10=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0x7b10,0xfe));var _0x07b1=function(_0x568518,_0x3e5e2d){_0x568518=_0x568518-0x0;var _0xda56b=_0x7b10[_0x568518];return _0xda56b;};'use strict';function voiceExtension(_0x48d047){this['id']=_0x48d047['id']||0x0;this[_0x07b1('0x0')]=_0x48d047['exten']||'';this['recordingFormat']=_0x48d047[_0x07b1('0x1')]||_0x07b1('0x2');this[_0x07b1('0x3')]=_0x48d047['mandatoryDisposition']||![];}module[_0x07b1('0x4')]=voiceExtension;
\ No newline at end of file
index a28289c..6f0acbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x622e=['rrmemory','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','monitor_format','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','busy','invalid','unavailable','ringinuse','onhold','wav','name','type','inbound','waiting','talking','total','sumHoldTime','sumBillable','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy'];(function(_0x13594e,_0x6f0ed0){var _0x1a4f42=function(_0x30b064){while(--_0x30b064){_0x13594e['push'](_0x13594e['shift']());}};_0x1a4f42(++_0x6f0ed0);}(_0x622e,0x11f));var _0xe622=function(_0x30362a,_0x23b9f4){_0x30362a=_0x30362a-0x0;var _0x261bf8=_0x622e[_0x30362a];return _0x261bf8;};'use strict';var statusDesc=[_0xe622('0x0'),_0xe622('0x1'),'inuse',_0xe622('0x2'),_0xe622('0x3'),_0xe622('0x4'),'ringing',_0xe622('0x5'),_0xe622('0x6')];var monitorFormat={'wav':_0xe622('0x7'),'wav49':'wav49','gsm':'gsm'};var strategy={'rrmemory':'rrmemory','roundrobin':'roundrobin'};function VoiceQueue(_0x4153f7){this['id']=_0x4153f7['id']||0x0;this[_0xe622('0x8')]=_0x4153f7[_0xe622('0x8')]||'';this['monitor_format']=_0x4153f7['monitor_format']||'';this[_0xe622('0x9')]=_0x4153f7[_0xe622('0x9')]||_0xe622('0xa');this[_0xe622('0xb')]=0x0;this[_0xe622('0xc')]=0x0;this[_0xe622('0xd')]=0x0;this['answered']=0x0;this['sumDuration']=0x0;this[_0xe622('0xe')]=0x0;this[_0xe622('0xf')]=0x0;this['unmanaged']=0x0;this[_0xe622('0x10')]=0x0;this[_0xe622('0x11')]=0x0;this[_0xe622('0x12')]=0x0;this[_0xe622('0x13')]=_0x4153f7[_0xe622('0x13')]||![];this[_0xe622('0x14')]=_0x4153f7[_0xe622('0x14')]||0xa;this['autopause']=_0x4153f7[_0xe622('0x15')]||'no';this[_0xe622('0x16')]=!![];this[_0xe622('0x17')]='';this[_0xe622('0x18')]=0x0;this['temp']=0x0;this['dialTimezone']=_0x4153f7['dialTimezone']||null;this[_0xe622('0x19')]=_0x4153f7[_0xe622('0x19')]?_0x4153f7[_0xe622('0x19')]:null;this[_0xe622('0x1a')]=_0x4153f7['dialActive'];this[_0xe622('0x1b')]=_0x4153f7[_0xe622('0x1b')]||_0xe622('0x1c');this['dialLimitChannel']=_0x4153f7['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x4153f7[_0xe622('0x1d')]||0x0;this[_0xe622('0x1e')]=_0x4153f7[_0xe622('0x1e')]||0x1;this[_0xe622('0x1f')]=_0x4153f7[_0xe622('0x1f')]||_0xe622('0x20');this[_0xe622('0x21')]=_0x4153f7['dialPredictiveOptimizationPercentage']||0.03;this[_0xe622('0x22')]=_0x4153f7[_0xe622('0x22')]||0x258;this[_0xe622('0x23')]=_0x4153f7[_0xe622('0x23')]||'anonymous';this[_0xe622('0x24')]=_0x4153f7['dialOriginateCallerIdNumber']||_0xe622('0x25');this['dialOriginateTimeout']=_0x4153f7['dialOriginateTimeout']||0x1e;this[_0xe622('0x26')]=_0x4153f7[_0xe622('0x26')]||_0xe622('0x27');this['dialQueueTimeout']=_0x4153f7[_0xe622('0x28')]||0x3;this[_0xe622('0x29')]=_0x4153f7['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0x4153f7[_0xe622('0x2a')]||0x3;this[_0xe622('0x2b')]=_0x4153f7[_0xe622('0x2b')]||0x96;this['dialBusyMaxRetry']=_0x4153f7[_0xe622('0x2c')]||0x3;this['dialBusyRetryFrequency']=_0x4153f7[_0xe622('0x2d')]||0x96;this[_0xe622('0x2e')]=_0x4153f7[_0xe622('0x2e')]||0x3;this[_0xe622('0x2f')]=_0x4153f7['dialNoAnswerRetryFrequency']||0x96;this[_0xe622('0x30')]=_0x4153f7['dialNoSuchNumberMaxRetry']||0x3;this[_0xe622('0x31')]=_0x4153f7['dialNoSuchNumberRetryFrequency']||0x96;this[_0xe622('0x32')]=_0x4153f7[_0xe622('0x32')]||0x3;this[_0xe622('0x33')]=_0x4153f7[_0xe622('0x33')]||0x96;this[_0xe622('0x34')]=_0x4153f7[_0xe622('0x34')]||0x3;this[_0xe622('0x35')]=_0x4153f7['dialAbandonedRetryFrequency']||0x96;this['dialMachineMaxRetry']=_0x4153f7['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x4153f7[_0xe622('0x36')]||0x96;this['dialAgentRejectMaxRetry']=_0x4153f7[_0xe622('0x37')]||0x3;this[_0xe622('0x38')]=_0x4153f7['dialAgentRejectRetryFrequency']||0x96;this[_0xe622('0x39')]=_0x4153f7['dialGlobalMaxRetry']||0x4;this[_0xe622('0x3a')]=_0x4153f7[_0xe622('0x3a')]?_0x4153f7[_0xe622('0x3a')]:undefined;this[_0xe622('0x3b')]=_0x4153f7[_0xe622('0x3b')]?_0x4153f7[_0xe622('0x3b')]:undefined;this[_0xe622('0x3c')]=_0x4153f7[_0xe622('0x3c')]||undefined;this[_0xe622('0x3d')]=_0x4153f7['Interval']?_0x4153f7[_0xe622('0x3d')]:undefined;this[_0xe622('0x3e')]=_0x4153f7['dialOrderByScheduledAt']||_0xe622('0x3f');this[_0xe622('0x40')]=_0x4153f7[_0xe622('0x40')]||undefined;this[_0xe622('0x41')]=_0x4153f7['dialCutDigit']||undefined;this['strategy']=strategy[_0x4153f7[_0xe622('0x42')]]||_0xe622('0x43');this[_0xe622('0x44')]=!![];this[_0xe622('0x45')]=_0x4153f7[_0xe622('0x45')]||![];this[_0xe622('0x46')]=_0x4153f7[_0xe622('0x46')];this[_0xe622('0x47')]=_0x4153f7[_0xe622('0x47')];this[_0xe622('0x48')]=_0x4153f7[_0xe622('0x48')];this[_0xe622('0x49')]=_0x4153f7['dialAMDTotalAnalysisTime'];this[_0xe622('0x4a')]=_0x4153f7[_0xe622('0x4a')];this[_0xe622('0x4b')]=_0x4153f7[_0xe622('0x4b')];this[_0xe622('0x4c')]=_0x4153f7[_0xe622('0x4c')];this['dialAMDSilenceThreshold']=_0x4153f7['dialAMDSilenceThreshold'];this[_0xe622('0x4d')]=_0x4153f7[_0xe622('0x4d')];this[_0xe622('0x4e')]=0x0;this[_0xe622('0x4f')]=0x0;this['timeout']=_0x4153f7[_0xe622('0x50')];this[_0xe622('0x51')]=0x0;this[_0xe622('0x52')]=0x0;this[_0xe622('0x53')]=0x0;this[_0xe622('0x54')]=0x0;this[_0xe622('0x55')]=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0xe622('0x56')]=0x0;this[_0xe622('0x57')]=0x0;this[_0xe622('0x58')]=0x0;this[_0xe622('0x59')]=0x0;this[_0xe622('0x5a')]=0x0;this[_0xe622('0x5b')]=0x0;this[_0xe622('0x5c')]=0x0;this['outboundAbandonedDay']=0x0;this['startProgressive']=undefined;this[_0xe622('0x5d')]=undefined;this[_0xe622('0x5e')]=undefined;this[_0xe622('0x5f')]=1.05;this[_0xe622('0x60')]=0x0;this[_0xe622('0x61')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0xe622('0x62')]=0x0;this[_0xe622('0x63')]=0x0;this[_0xe622('0x64')]=0x0;this[_0xe622('0x65')]=0x0;this['predictiveIntervalMaxThreshold']=_0x4153f7[_0xe622('0x66')]||0x14;this[_0xe622('0x67')]=_0x4153f7[_0xe622('0x66')]||0xa;this[_0xe622('0x68')]=0x0;this[_0xe622('0x69')]=0x0;this[_0xe622('0x6a')]=0x1;this['erlangCalls']=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0xe622('0x6b')]=0x0;this[_0xe622('0x6c')]=_0x4153f7['dialRecallMeTimeout']||0x1e;this[_0xe622('0x6d')]=_0x4153f7[_0xe622('0x6d')]||![];this['dialPreviewAutoRecallMe']=!!_0x4153f7[_0xe622('0x6e')]||![];this[_0xe622('0x6f')]=!!_0x4153f7['dialPreviewRecallmeReminder']||![];this[_0xe622('0x70')]=_0x4153f7[_0xe622('0x70')]||undefined;this[_0xe622('0x71')]=_0x4153f7[_0xe622('0x71')]||![];this['dialAgiAfterHangupAgent']=_0x4153f7['dialAgiAfterHangupAgent']||![];this[_0xe622('0x72')]=monitorFormat[_0x4153f7[_0xe622('0x72')]]?monitorFormat[_0x4153f7[_0xe622('0x72')]]:undefined;this[_0xe622('0x73')]=_0x4153f7[_0xe622('0x73')]||![];this['mandatoryDispositionPause']=_0x4153f7[_0xe622('0x74')]?_0x4153f7[_0xe622('0x74')]:undefined;}module[_0xe622('0x75')]=VoiceQueue;
\ No newline at end of file
+var _0x7bdb=['predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','abandoned','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','handlePredictive','predictiveIntervalTotalCalls'];(function(_0x1ca6a4,_0x2a7743){var _0x105953=function(_0x38431f){while(--_0x38431f){_0x1ca6a4['push'](_0x1ca6a4['shift']());}};_0x105953(++_0x2a7743);}(_0x7bdb,0x10d));var _0xb7bd=function(_0x5b658a,_0x4bddc0){_0x5b658a=_0x5b658a-0x0;var _0x40dde2=_0x7bdb[_0x5b658a];return _0x40dde2;};'use strict';var statusDesc=[_0xb7bd('0x0'),_0xb7bd('0x1'),_0xb7bd('0x2'),_0xb7bd('0x3'),_0xb7bd('0x4'),_0xb7bd('0x5'),_0xb7bd('0x6'),_0xb7bd('0x7'),_0xb7bd('0x8')];var monitorFormat={'wav':_0xb7bd('0x9'),'wav49':'wav49','gsm':_0xb7bd('0xa')};var strategy={'rrmemory':_0xb7bd('0xb'),'roundrobin':_0xb7bd('0xc')};function VoiceQueue(_0x6247a9){this['id']=_0x6247a9['id']||0x0;this[_0xb7bd('0xd')]=_0x6247a9['name']||'';this[_0xb7bd('0xe')]=_0x6247a9[_0xb7bd('0xe')]||'';this[_0xb7bd('0xf')]=_0x6247a9[_0xb7bd('0xf')]||'inbound';this[_0xb7bd('0x10')]=0x0;this[_0xb7bd('0x11')]=0x0;this[_0xb7bd('0x12')]=0x0;this[_0xb7bd('0x13')]=0x0;this[_0xb7bd('0x14')]=0x0;this[_0xb7bd('0x15')]=0x0;this[_0xb7bd('0x16')]=0x0;this['unmanaged']=0x0;this[_0xb7bd('0x17')]=0x0;this['loggedIn']=0x0;this[_0xb7bd('0x18')]=0x0;this[_0xb7bd('0x19')]=_0x6247a9[_0xb7bd('0x19')]||![];this['acwTimeout']=_0x6247a9[_0xb7bd('0x1a')]||0xa;this['autopause']=_0x6247a9[_0xb7bd('0x1b')]||'no';this[_0xb7bd('0x1c')]=!![];this[_0xb7bd('0x1d')]='';this[_0xb7bd('0x1e')]=0x0;this[_0xb7bd('0x1f')]=0x0;this[_0xb7bd('0x20')]=_0x6247a9[_0xb7bd('0x20')]||null;this['dialGlobalInterval']=_0x6247a9[_0xb7bd('0x21')]?_0x6247a9['dialGlobalInterval']:null;this[_0xb7bd('0x22')]=_0x6247a9['dialActive'];this[_0xb7bd('0x23')]=_0x6247a9['dialMethod']||_0xb7bd('0x24');this[_0xb7bd('0x25')]=_0x6247a9['dialLimitChannel']||0x0;this[_0xb7bd('0x26')]=_0x6247a9[_0xb7bd('0x26')]||0x0;this[_0xb7bd('0x27')]=_0x6247a9[_0xb7bd('0x27')]||0x1;this[_0xb7bd('0x28')]=_0x6247a9[_0xb7bd('0x28')]||'dropRate';this[_0xb7bd('0x29')]=_0x6247a9[_0xb7bd('0x29')]||0.03;this[_0xb7bd('0x2a')]=_0x6247a9['dialPredictiveInterval']||0x258;this[_0xb7bd('0x2b')]=_0x6247a9[_0xb7bd('0x2b')]||_0xb7bd('0x2c');this[_0xb7bd('0x2d')]=_0x6247a9[_0xb7bd('0x2d')]||'anonymous';this[_0xb7bd('0x2e')]=_0x6247a9[_0xb7bd('0x2e')]||0x1e;this[_0xb7bd('0x2f')]=_0x6247a9['dialQueueOptions']||'tTxX';this[_0xb7bd('0x30')]=_0x6247a9[_0xb7bd('0x30')]||0x3;this[_0xb7bd('0x31')]=_0x6247a9[_0xb7bd('0x31')]||undefined;this['dialCongestionMaxRetry']=_0x6247a9[_0xb7bd('0x32')]||0x3;this[_0xb7bd('0x33')]=_0x6247a9[_0xb7bd('0x33')]||0x96;this[_0xb7bd('0x34')]=_0x6247a9[_0xb7bd('0x34')]||0x3;this['dialBusyRetryFrequency']=_0x6247a9[_0xb7bd('0x35')]||0x96;this[_0xb7bd('0x36')]=_0x6247a9[_0xb7bd('0x36')]||0x3;this['dialNoAnswerRetryFrequency']=_0x6247a9['dialNoAnswerRetryFrequency']||0x96;this[_0xb7bd('0x37')]=_0x6247a9[_0xb7bd('0x37')]||0x3;this[_0xb7bd('0x38')]=_0x6247a9[_0xb7bd('0x38')]||0x96;this[_0xb7bd('0x39')]=_0x6247a9[_0xb7bd('0x39')]||0x3;this['dialDropRetryFrequency']=_0x6247a9[_0xb7bd('0x3a')]||0x96;this[_0xb7bd('0x3b')]=_0x6247a9['dialAbandonedMaxRetry']||0x3;this[_0xb7bd('0x3c')]=_0x6247a9['dialAbandonedRetryFrequency']||0x96;this[_0xb7bd('0x3d')]=_0x6247a9[_0xb7bd('0x3d')]||0x3;this[_0xb7bd('0x3e')]=_0x6247a9[_0xb7bd('0x3e')]||0x96;this[_0xb7bd('0x3f')]=_0x6247a9['dialAgentRejectMaxRetry']||0x3;this[_0xb7bd('0x40')]=_0x6247a9[_0xb7bd('0x40')]||0x96;this[_0xb7bd('0x41')]=_0x6247a9[_0xb7bd('0x41')]||0x4;this[_0xb7bd('0x42')]=_0x6247a9['Trunk']?_0x6247a9[_0xb7bd('0x42')]:undefined;this[_0xb7bd('0x43')]=_0x6247a9[_0xb7bd('0x43')]?_0x6247a9['TrunkBackup']:undefined;this['dialPrefix']=_0x6247a9[_0xb7bd('0x44')]||undefined;this[_0xb7bd('0x45')]=_0x6247a9['Interval']?_0x6247a9['Interval']:undefined;this[_0xb7bd('0x46')]=_0x6247a9[_0xb7bd('0x46')]||_0xb7bd('0x47');this[_0xb7bd('0x48')]=_0x6247a9[_0xb7bd('0x48')]||undefined;this[_0xb7bd('0x49')]=_0x6247a9[_0xb7bd('0x49')]||undefined;this[_0xb7bd('0x4a')]=strategy[_0x6247a9['strategy']]||_0xb7bd('0xb');this['queueStatusComplete']=!![];this[_0xb7bd('0x4b')]=_0x6247a9[_0xb7bd('0x4b')]||![];this['dialAMDInitialSilence']=_0x6247a9[_0xb7bd('0x4c')];this['dialAMDGreeting']=_0x6247a9[_0xb7bd('0x4d')];this[_0xb7bd('0x4e')]=_0x6247a9[_0xb7bd('0x4e')];this[_0xb7bd('0x4f')]=_0x6247a9[_0xb7bd('0x4f')];this[_0xb7bd('0x50')]=_0x6247a9[_0xb7bd('0x50')];this[_0xb7bd('0x51')]=_0x6247a9[_0xb7bd('0x51')];this[_0xb7bd('0x52')]=_0x6247a9['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x6247a9[_0xb7bd('0x53')];this[_0xb7bd('0x54')]=_0x6247a9[_0xb7bd('0x54')];this[_0xb7bd('0x55')]=0x0;this['pTalking']=0x0;this['timeout']=_0x6247a9[_0xb7bd('0x56')];this['outboundAnswerCallsDay']=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xb7bd('0x57')]=0x0;this[_0xb7bd('0x58')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xb7bd('0x59')]=0x0;this[_0xb7bd('0x5a')]=0x0;this[_0xb7bd('0x5b')]=0x0;this[_0xb7bd('0x5c')]=0x0;this[_0xb7bd('0x5d')]=0x0;this[_0xb7bd('0x5e')]=0x0;this[_0xb7bd('0x5f')]=0x0;this[_0xb7bd('0x60')]=0x0;this[_0xb7bd('0x61')]=0x0;this['startProgressive']=undefined;this['startPredictive']=undefined;this[_0xb7bd('0x62')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0xb7bd('0x63')]=0x0;this[_0xb7bd('0x64')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xb7bd('0x65')]=0x0;this[_0xb7bd('0x66')]=0x0;this[_0xb7bd('0x67')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0xb7bd('0x68')]=0x0;this[_0xb7bd('0x69')]=_0x6247a9[_0xb7bd('0x6a')]||0x14;this[_0xb7bd('0x6b')]=_0x6247a9[_0xb7bd('0x6a')]||0xa;this[_0xb7bd('0x6c')]=0x0;this[_0xb7bd('0x6d')]=0x0;this[_0xb7bd('0x6e')]=0x1;this[_0xb7bd('0x6f')]=0x0;this['erlangCallToSecond']=0x0;this[_0xb7bd('0x70')]=0x0;this[_0xb7bd('0x71')]=0x0;this[_0xb7bd('0x72')]=_0x6247a9[_0xb7bd('0x72')]||0x1e;this[_0xb7bd('0x73')]=_0x6247a9[_0xb7bd('0x73')]||![];this[_0xb7bd('0x74')]=!!_0x6247a9[_0xb7bd('0x74')]||![];this['dialPreviewRecallmeReminder']=!!_0x6247a9['dialPreviewRecallmeReminder']||![];this['dialQueueProject2']=_0x6247a9[_0xb7bd('0x75')]||undefined;this['dialAgiAfterHangupClient']=_0x6247a9[_0xb7bd('0x76')]||![];this['dialAgiAfterHangupAgent']=_0x6247a9[_0xb7bd('0x77')]||![];this[_0xb7bd('0xe')]=monitorFormat[_0x6247a9[_0xb7bd('0xe')]]?monitorFormat[_0x6247a9[_0xb7bd('0xe')]]:undefined;this[_0xb7bd('0x78')]=_0x6247a9[_0xb7bd('0x78')]||![];this[_0xb7bd('0x79')]=_0x6247a9[_0xb7bd('0x79')]?_0x6247a9[_0xb7bd('0x79')]:undefined;}module[_0xb7bd('0x7a')]=VoiceQueue;
\ No newline at end of file
index c840e09..a474659 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07a2=['name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x07a2,0x1c8));var _0x207a=function(_0x1d3046,_0x8b14e1){_0x1d3046=_0x1d3046-0x0;var _0x3b9b62=_0x07a2[_0x1d3046];return _0x3b9b62;};'use strict';function VtigerAccount(_0x2d48c0){this['id']=_0x2d48c0['id']||0x0;this['name']=_0x2d48c0[_0x207a('0x0')]||'';this[_0x207a('0x1')]=_0x2d48c0['username']||'';this[_0x207a('0x2')]=_0x2d48c0[_0x207a('0x2')]||'';this[_0x207a('0x3')]=_0x2d48c0[_0x207a('0x3')]||'';this['serverUrl']=_0x2d48c0[_0x207a('0x4')]||'';this[_0x207a('0x5')]=_0x2d48c0['Configurations']||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0x1254=['accessKey','remoteUri','serverUrl','Configurations'];(function(_0x5b6e33,_0x4d3579){var _0x2782c4=function(_0x40ffa3){while(--_0x40ffa3){_0x5b6e33['push'](_0x5b6e33['shift']());}};_0x2782c4(++_0x4d3579);}(_0x1254,0x1f4));var _0x4125=function(_0x30dc33,_0x227130){_0x30dc33=_0x30dc33-0x0;var _0x739659=_0x1254[_0x30dc33];return _0x739659;};'use strict';function VtigerAccount(_0x231df4){this['id']=_0x231df4['id']||0x0;this['name']=_0x231df4['name']||'';this['username']=_0x231df4['username']||'';this[_0x4125('0x0')]=_0x231df4[_0x4125('0x0')]||'';this['remoteUri']=_0x231df4[_0x4125('0x1')]||'';this[_0x4125('0x2')]=_0x231df4['serverUrl']||'';this['Configurations']=_0x231df4[_0x4125('0x3')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index e150ae7..e31175c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76b9=['type','Configurations','exports','name','username','password','token','remoteUri','authType'];(function(_0x51d6fc,_0x2207f5){var _0x5a4a78=function(_0x5091a2){while(--_0x5091a2){_0x51d6fc['push'](_0x51d6fc['shift']());}};_0x5a4a78(++_0x2207f5);}(_0x76b9,0x81));var _0x976b=function(_0x4f616b,_0x4cb423){_0x4f616b=_0x4f616b-0x0;var _0x1ef1c0=_0x76b9[_0x4f616b];return _0x1ef1c0;};'use strict';function ZendeskAccount(_0x47771e){this['id']=_0x47771e['id']||0x0;this[_0x976b('0x0')]=_0x47771e[_0x976b('0x0')]||'';this[_0x976b('0x1')]=_0x47771e[_0x976b('0x1')]||'';this[_0x976b('0x2')]=_0x47771e[_0x976b('0x2')]||'';this[_0x976b('0x3')]=_0x47771e['token']||'';this['remoteUri']=_0x47771e[_0x976b('0x4')]||'';this[_0x976b('0x5')]=_0x47771e['authType']||'';this[_0x976b('0x6')]=_0x47771e[_0x976b('0x6')]||'integrationTab';this['serverUrl']=_0x47771e['serverUrl']||'';this[_0x976b('0x7')]=_0x47771e[_0x976b('0x7')]||{};}module[_0x976b('0x8')]=ZendeskAccount;
\ No newline at end of file
+var _0x8cb3=['name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x138d06,_0x33edf2){var _0x1a01eb=function(_0x387acb){while(--_0x387acb){_0x138d06['push'](_0x138d06['shift']());}};_0x1a01eb(++_0x33edf2);}(_0x8cb3,0x1ef));var _0x38cb=function(_0x4cfc08,_0xb283d0){_0x4cfc08=_0x4cfc08-0x0;var _0xf79110=_0x8cb3[_0x4cfc08];return _0xf79110;};'use strict';function ZendeskAccount(_0x3d5c8e){this['id']=_0x3d5c8e['id']||0x0;this['name']=_0x3d5c8e[_0x38cb('0x0')]||'';this[_0x38cb('0x1')]=_0x3d5c8e[_0x38cb('0x1')]||'';this[_0x38cb('0x2')]=_0x3d5c8e[_0x38cb('0x2')]||'';this[_0x38cb('0x3')]=_0x3d5c8e['token']||'';this[_0x38cb('0x4')]=_0x3d5c8e[_0x38cb('0x4')]||'';this[_0x38cb('0x5')]=_0x3d5c8e[_0x38cb('0x5')]||'';this[_0x38cb('0x6')]=_0x3d5c8e[_0x38cb('0x6')]||_0x38cb('0x7');this[_0x38cb('0x8')]=_0x3d5c8e[_0x38cb('0x8')]||'';this[_0x38cb('0x9')]=_0x3d5c8e[_0x38cb('0x9')]||{};}module[_0x38cb('0xa')]=ZendeskAccount;
\ No newline at end of file
index 5af382c..e14f1f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x359d=['code','Configurations','exports','name','host','zone','clientId','clientSecret','serverUrl'];(function(_0x1aad07,_0x1180c0){var _0x392153=function(_0x2eb295){while(--_0x2eb295){_0x1aad07['push'](_0x1aad07['shift']());}};_0x392153(++_0x1180c0);}(_0x359d,0x1c5));var _0xd359=function(_0xee3051,_0xbe4f18){_0xee3051=_0xee3051-0x0;var _0x139e81=_0x359d[_0xee3051];return _0x139e81;};'use strict';function ZohoAccount(_0x10928e){this['id']=_0x10928e['id']||0x0;this[_0xd359('0x0')]=_0x10928e['name']||'';this['description']=_0x10928e['description']||'';this[_0xd359('0x1')]=_0x10928e[_0xd359('0x1')]||'';this[_0xd359('0x2')]=_0x10928e[_0xd359('0x2')]||'';this['clientId']=_0x10928e[_0xd359('0x3')]||'';this[_0xd359('0x4')]=_0x10928e['clientSecret']||'';this['serverUrl']=_0x10928e[_0xd359('0x5')]||'';this[_0xd359('0x6')]=_0x10928e['code']||'';this['refreshToken']=_0x10928e['refreshToken']||'';this[_0xd359('0x7')]=_0x10928e[_0xd359('0x7')]||{};}module[_0xd359('0x8')]=ZohoAccount;
\ No newline at end of file
+var _0x02b3=['Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x02b3,0x16d));var _0x302b=function(_0xdd2bfa,_0x5bd304){_0xdd2bfa=_0xdd2bfa-0x0;var _0x55397e=_0x02b3[_0xdd2bfa];return _0x55397e;};'use strict';function ZohoAccount(_0x27cd51){this['id']=_0x27cd51['id']||0x0;this[_0x302b('0x0')]=_0x27cd51[_0x302b('0x0')]||'';this[_0x302b('0x1')]=_0x27cd51[_0x302b('0x1')]||'';this[_0x302b('0x2')]=_0x27cd51[_0x302b('0x2')]||'';this[_0x302b('0x3')]=_0x27cd51[_0x302b('0x3')]||'';this[_0x302b('0x4')]=_0x27cd51['clientId']||'';this[_0x302b('0x5')]=_0x27cd51['clientSecret']||'';this['serverUrl']=_0x27cd51[_0x302b('0x6')]||'';this[_0x302b('0x7')]=_0x27cd51['code']||'';this[_0x302b('0x8')]=_0x27cd51['refreshToken']||'';this[_0x302b('0x9')]=_0x27cd51[_0x302b('0x9')]||{};}module[_0x302b('0xa')]=ZohoAccount;
\ No newline at end of file
index 988d6bc..62c0ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x372e=['ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','number','exports','lodash','moment','isNil','string','uniqueid','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x372e,0x117));var _0xe372=function(_0x81619e,_0x3d6045){_0x81619e=_0x81619e-0x0;var _0x563373=_0x372e[_0x81619e];return _0x563373;};'use strict';var util=require('util');var _=require(_0xe372('0x0'));var moment=require(_0xe372('0x1'));function checkNameSurname(_0x576ee9,_0x3255b3,_0x48c5c0){var _0xf3493b='';if(!_[_0xe372('0x2')](_0x3255b3)&&_0xe372('0x3')===typeof _0x3255b3){_0xf3493b+=_0x3255b3;}if(!_[_0xe372('0x2')](_0x48c5c0)&&_0xe372('0x3')===typeof _0x48c5c0){_0xf3493b+='\x20'+_0x48c5c0;}if(_0xf3493b!==''){return _0xf3493b;}return _0x576ee9;}function Action(_0x2ad0dc,_0x273078,_0x1cd48c,_0x17d100,_0x51296c){this[_0xe372('0x4')]=_0x1cd48c||undefined;this['idContact']=_0x2ad0dc['id'];this[_0xe372('0x5')]=_0x273078[_0xe372('0x6')];this['type']=_0x273078[_0xe372('0x7')];this[_0xe372('0x8')]=_0xe372('0x5');this[_0xe372('0x9')]=![];this[_0xe372('0xa')]=_[_0xe372('0x2')](_0x2ad0dc[_0xe372('0xb')])?undefined:_0x2ad0dc[_0xe372('0xb')][_0xe372('0x6')];this[_0xe372('0xc')]=this[_0xe372('0xa')]?util[_0xe372('0xd')](_0xe372('0xe'),this[_0xe372('0xa')]):_0x17d100||undefined;this[_0xe372('0xf')]=checkNameSurname(_0x2ad0dc[_0xe372('0x10')][_0xe372('0x11')],_0x2ad0dc['Contact'][_0xe372('0x12')],_0x2ad0dc['Contact'][_0xe372('0x13')]);this[_0xe372('0x14')]=_0x2ad0dc[_0xe372('0x14')]||![];this['calleridnum']=_0x2ad0dc[_0xe372('0x10')]['phone'];this[_0xe372('0x15')]=_0x2ad0dc['scheduledat'];this['countbusyretry']=_0x2ad0dc[_0xe372('0x16')]||0x0;this['countcongestionretry']=_0x2ad0dc[_0xe372('0x17')]||0x0;this[_0xe372('0x18')]=_0x2ad0dc[_0xe372('0x18')]||0x0;this[_0xe372('0x19')]=(_0x2ad0dc[_0xe372('0x16')]||0x0)+(_0x2ad0dc[_0xe372('0x17')]||0x0)+(_0x2ad0dc[_0xe372('0x18')]||0x0)+(_0x2ad0dc[_0xe372('0x1a')]||0x0)+(_0x2ad0dc[_0xe372('0x1b')]||0x0)+(_0x2ad0dc[_0xe372('0x1c')]||0x0)+(_0x2ad0dc[_0xe372('0x1d')]||0x0)+(_0x2ad0dc[_0xe372('0x1e')]||0x0);this[_0xe372('0x1a')]=_0x2ad0dc[_0xe372('0x1a')]||0x0;this[_0xe372('0x1b')]=_0x2ad0dc[_0xe372('0x1b')]||0x0;this[_0xe372('0x1c')]=_0x2ad0dc['countabandonedretry']||0x0;this[_0xe372('0x1d')]=_0x2ad0dc[_0xe372('0x1d')]||0x0;this[_0xe372('0x1e')]=_0x2ad0dc[_0xe372('0x1e')]||0x0;this['callback']=_0x2ad0dc[_0xe372('0x1f')];this['callbackuniqueid']=_0x2ad0dc[_0xe372('0x20')];this[_0xe372('0x21')]=_0x2ad0dc[_0xe372('0x21')];this[_0xe372('0x22')]=_0x2ad0dc[_0xe372('0x22')];this[_0xe372('0x23')]=_0x2ad0dc[_0xe372('0x23')];this[_0xe372('0x24')]=_0x2ad0dc['ListId'];this[_0xe372('0x25')]=_['isNil'](_0x2ad0dc[_0xe372('0xb')])?_0x2ad0dc[_0xe372('0x25')]:_0x2ad0dc[_0xe372('0xb')]['id'];this[_0xe372('0x26')]=_0x2ad0dc[_0xe372('0x26')];this[_0xe372('0x27')]='';this[_0xe372('0x28')]='';}Action[_0xe372('0x29')]['getCaller']=function(){return util[_0xe372('0xd')](_0xe372('0x2a'),this[_0xe372('0xf')],this[_0xe372('0x2b')]);};module[_0xe372('0x2c')]=Action;
\ No newline at end of file
+var _0x4c41=['name','type','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','phone','Contact','lastName','active','calleridnum','scheduledat','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','\x22%s\x22\x20<%s>','calleridname','number','exports','util','moment','isNil','string','uniqueid','queue'];(function(_0x175952,_0x53255c){var _0x2322cd=function(_0x3020a2){while(--_0x3020a2){_0x175952['push'](_0x175952['shift']());}};_0x2322cd(++_0x53255c);}(_0x4c41,0x16b));var _0x14c4=function(_0x90e02a,_0x4ca81d){_0x90e02a=_0x90e02a-0x0;var _0x40aa20=_0x4c41[_0x90e02a];return _0x40aa20;};'use strict';var util=require(_0x14c4('0x0'));var _=require('lodash');var moment=require(_0x14c4('0x1'));function checkNameSurname(_0xc627b1,_0x47e532,_0x4e13ec){var _0x408be0='';if(!_[_0x14c4('0x2')](_0x47e532)&&_0x14c4('0x3')===typeof _0x47e532){_0x408be0+=_0x47e532;}if(!_['isNil'](_0x4e13ec)&&_0x14c4('0x3')===typeof _0x4e13ec){_0x408be0+='\x20'+_0x4e13ec;}if(_0x408be0!==''){return _0x408be0;}return _0xc627b1;}function Action(_0x57a28b,_0x1259b,_0x411c4c,_0x5611da,_0x205cc1){this[_0x14c4('0x4')]=_0x411c4c||undefined;this['idContact']=_0x57a28b['id'];this[_0x14c4('0x5')]=_0x1259b[_0x14c4('0x6')];this[_0x14c4('0x7')]=_0x1259b[_0x14c4('0x7')];this['campaigntype']='queue';this[_0x14c4('0x8')]=![];this[_0x14c4('0x9')]=_[_0x14c4('0x2')](_0x57a28b[_0x14c4('0xa')])?undefined:_0x57a28b[_0x14c4('0xa')][_0x14c4('0x6')];this[_0x14c4('0xb')]=this[_0x14c4('0x9')]?util[_0x14c4('0xc')](_0x14c4('0xd'),this[_0x14c4('0x9')]):_0x5611da||undefined;this['calleridname']=checkNameSurname(_0x57a28b['Contact'][_0x14c4('0xe')],_0x57a28b[_0x14c4('0xf')]['firstName'],_0x57a28b[_0x14c4('0xf')][_0x14c4('0x10')]);this[_0x14c4('0x11')]=_0x57a28b[_0x14c4('0x11')]||![];this[_0x14c4('0x12')]=_0x57a28b[_0x14c4('0xf')][_0x14c4('0xe')];this['scheduledat']=_0x57a28b[_0x14c4('0x13')];this[_0x14c4('0x14')]=_0x57a28b['countbusyretry']||0x0;this['countcongestionretry']=_0x57a28b['countcongestionretry']||0x0;this[_0x14c4('0x15')]=_0x57a28b[_0x14c4('0x15')]||0x0;this['countglobal']=(_0x57a28b[_0x14c4('0x14')]||0x0)+(_0x57a28b['countcongestionretry']||0x0)+(_0x57a28b[_0x14c4('0x15')]||0x0)+(_0x57a28b[_0x14c4('0x16')]||0x0)+(_0x57a28b[_0x14c4('0x17')]||0x0)+(_0x57a28b[_0x14c4('0x18')]||0x0)+(_0x57a28b['countmachineretry']||0x0)+(_0x57a28b[_0x14c4('0x19')]||0x0);this[_0x14c4('0x16')]=_0x57a28b[_0x14c4('0x16')]||0x0;this[_0x14c4('0x17')]=_0x57a28b[_0x14c4('0x17')]||0x0;this[_0x14c4('0x18')]=_0x57a28b[_0x14c4('0x18')]||0x0;this[_0x14c4('0x1a')]=_0x57a28b[_0x14c4('0x1a')]||0x0;this['countagentrejectretry']=_0x57a28b[_0x14c4('0x19')]||0x0;this[_0x14c4('0x1b')]=_0x57a28b[_0x14c4('0x1b')];this[_0x14c4('0x1c')]=_0x57a28b['callbackuniqueid'];this['callbackat']=_0x57a28b[_0x14c4('0x1d')];this['recallme']=_0x57a28b[_0x14c4('0x1e')];this[_0x14c4('0x1f')]=_0x57a28b[_0x14c4('0x1f')];this[_0x14c4('0x20')]=_0x57a28b['ListId'];this[_0x14c4('0x21')]=_[_0x14c4('0x2')](_0x57a28b[_0x14c4('0xa')])?_0x57a28b[_0x14c4('0x21')]:_0x57a28b['Agent']['id'];this[_0x14c4('0x22')]=_0x57a28b[_0x14c4('0x22')];this[_0x14c4('0x23')]='';this[_0x14c4('0x24')]='';}Action['prototype']['getCaller']=function(){return util[_0x14c4('0xc')](_0x14c4('0x25'),this[_0x14c4('0x26')],this[_0x14c4('0x27')]);};module[_0x14c4('0x28')]=Action;
\ No newline at end of file
index 1645869..26e234a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5089=['noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countabandonedretry','dialAbandonedRetryFrequency','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[originated][decrement][callProgressDetectingCustomer]','\x20Queue','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','unmonitored','execRun','pick','unlock','unlockContact','getContactPreview','recallme','Contact.phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','Empty\x20Contact','\x20Trunk\x20is\x20not\x20active','TrunkBackup','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','campaign\x20Name:\x20','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','addVariables','toLowerVariables','variablesAction','[originated][increment]','actionid','logLookAgent','isFailure','idContact','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','destlinkedid','destuniqueid','variables','filterKey','keys','variable','addVariable','value','inspect','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','util','lodash','uuid','moment','md5','ioredis','../../../config/environment','preview','actionPreview','../ami','./rpcDb','./util/util','redis','localhost','enqueue','tail','finally','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','campaignsPreview','emit','type','outbound','answered','available','loggedIn','pTalking','sumBillable','sumDuration','total','abandoned','dialActive','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20disactive','prototype','loopCampaigns','syncCampaigns','hasOwnProperty','booked','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','originated:\x20','originated','pTalking:\x20','VoiceQueueId','ListId','Action','status','channel','catch','updateOriginated','queue','dialAnswer','[clearZombieChannel]','[Dialer][checkChannel][Preview]','[action]','size','agentReadyId','length','getDiff','scheduledat','Agent','voicePause','run','then','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','RecallInQueue','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','logCustomer','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','totalGlobal','NoSuchNumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','activeContact','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','connect','acw','custom:agentConnectPreview','complete','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','countbusyretry','dialBusyMaxRetry','dialBusyRetryFrequency','unlockAgent','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','custom:agentnoanswer'];(function(_0x427352,_0x1bce61){var _0x23e0e6=function(_0x2a42a9){while(--_0x2a42a9){_0x427352['push'](_0x427352['shift']());}};_0x23e0e6(++_0x1bce61);}(_0x5089,0x1bb));var _0x9508=function(_0x54a2e4,_0x1ff92c){_0x54a2e4=_0x54a2e4-0x0;var _0x4742d0=_0x5089[_0x54a2e4];return _0x4742d0;};'use strict';var util=require(_0x9508('0x0'));var _=require(_0x9508('0x1'));var BPromise=require('bluebird');var uuid=require(_0x9508('0x2'));var moment=require(_0x9508('0x3'));var md5=require(_0x9508('0x4'));var Redis=require(_0x9508('0x5'));var config=require(_0x9508('0x6'));var logger=require('../../../config/logger')(_0x9508('0x7'));var loggerAction=require('../../../config/logger')(_0x9508('0x8'));var ami=require(_0x9508('0x9'));var rpcDb=require(_0x9508('0xa'));var Action=require('./action');var ut=require(_0x9508('0xb'));config[_0x9508('0xc')]=_['defaults'](config[_0x9508('0xc')],{'host':_0x9508('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9508('0xc')]));var Sequence=function(){};Sequence['prototype'][_0x9508('0xe')]=function(_0x26cc8a){this[_0x9508('0xf')]=this[_0x9508('0xf')]?this[_0x9508('0xf')][_0x9508('0x10')](_0x26cc8a):_0x26cc8a();};function Preview(_0x4bb70e){this[_0x9508('0x11')]=new Sequence();this['campaignsPreview']=_0x4bb70e[_0x9508('0x12')];this[_0x9508('0x13')]=_0x4bb70e['trunks'];this[_0x9508('0x14')]={};this[_0x9508('0x15')]=_0x4bb70e[_0x9508('0x15')];this[_0x9508('0x16')]=0x0;ami['on']('originateresponse',this[_0x9508('0x17')][_0x9508('0x18')](this));ami['on']('hangup',this[_0x9508('0x19')]['bind'](this));ami['on'](_0x9508('0x1a'),this[_0x9508('0x1b')][_0x9508('0x18')](this));ami['on'](_0x9508('0x1c'),this[_0x9508('0x1d')][_0x9508('0x18')](this));ami['on'](_0x9508('0x1e'),this[_0x9508('0x1f')]['bind'](this));ami['on'](_0x9508('0x20'),this[_0x9508('0x21')][_0x9508('0x18')](this));ami['on'](_0x9508('0x22'),this[_0x9508('0x23')][_0x9508('0x18')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x9508('0x18')](this));this['loopCampaigns'](this[_0x9508('0x24')]);}function emit(_0x4e9e9f,_0x3ba927,_0x22ff69){io['to'](_0x4e9e9f)[_0x9508('0x25')](_0x3ba927,_0x22ff69);}function emitCampaignPreview(_0x1dfc6c){if(_0x1dfc6c[_0x9508('0x26')]===_0x9508('0x27')){var _0x20eb53={'id':_0x1dfc6c['id'],'name':_0x1dfc6c['name'],'strategy':_0x1dfc6c['strategy'],'answered':_0x1dfc6c[_0x9508('0x28')],'available':_0x1dfc6c[_0x9508('0x29')],'loggedIn':_0x1dfc6c[_0x9508('0x2a')],'pTalking':_0x1dfc6c[_0x9508('0x2b')],'sumBillable':_0x1dfc6c[_0x9508('0x2c')],'sumDuration':_0x1dfc6c[_0x9508('0x2d')],'sumHoldTime':_0x1dfc6c['sumHoldTime']||0x0,'talking':_0x1dfc6c['talking'],'total':_0x1dfc6c[_0x9508('0x2e')],'type':_0x1dfc6c['type'],'unmanaged':_0x1dfc6c['unmanaged'],'abandoned':_0x1dfc6c[_0x9508('0x2f')],'waiting':_0x1dfc6c['waiting'],'loggedInDb':_0x1dfc6c['loggedInDb'],'dialActive':_0x1dfc6c[_0x9508('0x30')],'dialMethod':_0x1dfc6c[_0x9508('0x31')],'dialOriginateCallerIdName':_0x1dfc6c['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1dfc6c[_0x9508('0x32')],'dialOriginateTimeout':_0x1dfc6c[_0x9508('0x33')],'dialPrefix':_0x1dfc6c[_0x9508('0x34')],'outboundAnswerAgiCallsDay':_0x1dfc6c[_0x9508('0x35')],'outboundAnswerCallsDay':_0x1dfc6c[_0x9508('0x36')],'outboundBlacklistCallsDay':_0x1dfc6c[_0x9508('0x37')],'outboundBusyCallsDay':_0x1dfc6c[_0x9508('0x38')],'outboundCongestionCallsDay':_0x1dfc6c[_0x9508('0x39')],'outboundDropCallsDayACS':_0x1dfc6c[_0x9508('0x3a')],'outboundDropCallsDayCallersExit':_0x1dfc6c[_0x9508('0x3b')],'outboundDropCallsDayTimeout':_0x1dfc6c[_0x9508('0x3c')],'outboundNoAnswerCallsDay':_0x1dfc6c['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1dfc6c[_0x9508('0x3d')],'outboundOriginateFailureCallsDay':_0x1dfc6c[_0x9508('0x3e')],'outboundReCallsDay':_0x1dfc6c[_0x9508('0x3f')],'outboundRejectCallsDay':_0x1dfc6c['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1dfc6c[_0x9508('0x40')],'outboundAbandonedCallsDay':_0x1dfc6c[_0x9508('0x41')],'predictiveIntervalAnsweredCalls':_0x1dfc6c['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x1dfc6c[_0x9508('0x42')],'predictiveIntervalAvgTalktime':_0x1dfc6c[_0x9508('0x43')],'predictiveIntervalDroppedCallsCallersExit':_0x1dfc6c['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1dfc6c[_0x9508('0x44')],'predictiveIntervalErlangCalls':_0x1dfc6c[_0x9508('0x45')],'predictiveIntervalErlangCallsDroppedCalls':_0x1dfc6c[_0x9508('0x46')],'predictiveIntervalHitRate':_0x1dfc6c[_0x9508('0x47')],'predictiveIntervalMultiplicativeFactor':_0x1dfc6c['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x1dfc6c['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x1dfc6c[_0x9508('0x48')],'predictiveIntervalTotalCalls':_0x1dfc6c[_0x9508('0x49')],'message':_0x1dfc6c[_0x9508('0x4a')],'originated':_0x1dfc6c['originated'],'erlangCalls':_0x1dfc6c['erlangCalls'],'erlangCallToSecond':_0x1dfc6c[_0x9508('0x4b')],'erlangAbandonmentRate':_0x1dfc6c[_0x9508('0x4c')],'erlangBusyFactor':_0x1dfc6c[_0x9508('0x4d')],'startPredictive':_0x1dfc6c[_0x9508('0x4e')],'startProgressive':_0x1dfc6c[_0x9508('0x4f')]};if(_0x1dfc6c[_0x9508('0x50')]){_0x20eb53[_0x9508('0x50')]={'id':_0x1dfc6c[_0x9508('0x50')]['id'],'name':_0x1dfc6c[_0x9508('0x50')][_0x9508('0x51')],'active':_0x1dfc6c['Trunk'][_0x9508('0x52')],'callerid':_0x1dfc6c[_0x9508('0x50')]['callerid']};}if(_0x1dfc6c[_0x9508('0x53')]){_0x20eb53[_0x9508('0x53')]={'id':_0x1dfc6c[_0x9508('0x53')]['id'],'name':_0x1dfc6c[_0x9508('0x53')][_0x9508('0x51')]};}var _0x31ab9c=md5(JSON[_0x9508('0x54')](_0x20eb53));if(_0x1dfc6c[_0x9508('0x4')]!==_0x31ab9c){_0x1dfc6c[_0x9508('0x4')]=_0x31ab9c;emit(util[_0x9508('0x55')](_0x9508('0x56'),_0x20eb53['name']),_0x9508('0x57'),_0x20eb53);}}}function emitVoiceQueueChannelRemove(_0x5b690e){logger[_0x9508('0x58')](_0x9508('0x59'),JSON[_0x9508('0x54')](_0x5b690e));emit(util['format']('voice:queue:%s',_0x5b690e[_0x9508('0x51')]),_0x9508('0x5a'),_0x5b690e);io[_0x9508('0x25')](_0x9508('0x5b'),_0x5b690e);}function notSendMessagesQueue(_0x4eb600){if(_0x4eb600[_0x9508('0x5c')]){if(_0x4eb600['originated']===0x0&&_0x4eb600[_0x9508('0x2b')]===0x0){_0x4eb600[_0x9508('0x5c')]=![];_0x4eb600['available']=0x0;_0x4eb600[_0x9508('0x5d')]=0x0;_0x4eb600[_0x9508('0x4a')]='NOT_ACTIVE';ut[_0x9508('0x5e')](_0x9508('0x5f'),_0x4eb600[_0x9508('0x51')]+_0x9508('0x60'));}else{_0x4eb600['message']='IS_DISACTIVED';ut[_0x9508('0x5e')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x4eb600[_0x9508('0x51')]+_0x9508('0x61'));}emitCampaignPreview(_0x4eb600);}}Preview[_0x9508('0x62')][_0x9508('0x63')]=function(){var _0x4a4556=this;setInterval(function(){_0x4a4556['syncCampaigns']();},0x7cf);};Preview['prototype'][_0x9508('0x64')]=function(){var _0x5e7fe3=this[_0x9508('0x24')];this['clockClearZombieChannels']+=0x1;for(var _0x1429a1 in _0x5e7fe3){if(_0x5e7fe3[_0x9508('0x65')](_0x1429a1)&&(_0x5e7fe3[_0x1429a1][_0x9508('0x31')]===_0x9508('0x7')||_0x5e7fe3[_0x1429a1]['dialMethod']===_0x9508('0x66'))&&_0x5e7fe3[_0x1429a1][_0x9508('0x26')]===_0x9508('0x27')){if(this['clockClearZombieChannels']>0x7){this[_0x9508('0x16')]=0x0;this[_0x9508('0x67')]();}}if(_0x5e7fe3['hasOwnProperty'](_0x1429a1)&&_0x5e7fe3[_0x1429a1][_0x9508('0x31')]==='preview'&&_0x5e7fe3[_0x1429a1][_0x9508('0x26')]==='outbound'){if(_0x5e7fe3[_0x1429a1]['dialActive']){this[_0x9508('0x68')](_0x5e7fe3[_0x1429a1]);if(_0x5e7fe3[_0x1429a1][_0x9508('0x69')])this[_0x9508('0x6a')](_0x5e7fe3[_0x1429a1]);}else{notSendMessagesQueue(_0x5e7fe3[_0x1429a1]);}}}};Preview[_0x9508('0x62')][_0x9508('0x6b')]=function(_0x169daf){var _0x5bdd1f=this;this[_0x9508('0x11')][_0x9508('0xe')](function(){if(!_[_0x9508('0x6c')](_0x5bdd1f['actions'][_0x169daf])){loggerAction[_0x9508('0x58')](_0x9508('0x6d'),_0x169daf,_0x9508('0x6e'),_0x5bdd1f[_0x9508('0x14')][_0x169daf]['queue'],_0x9508('0x6f'),JSON['stringify'](_0x5bdd1f[_0x9508('0x24')][_0x5bdd1f[_0x9508('0x14')][_0x169daf]['queue']][_0x9508('0x70')]),_0x9508('0x71'),JSON['stringify'](_0x5bdd1f[_0x9508('0x24')][_0x5bdd1f[_0x9508('0x14')][_0x169daf]['queue']][_0x9508('0x2b')]),JSON['stringify'](_0x5bdd1f[_0x9508('0x14')][_0x169daf]['dialAnswer']),JSON[_0x9508('0x54')](_['pick'](_0x5bdd1f['actions'][_0x169daf],['contactId','UserId',_0x9508('0x72'),_0x9508('0x73')])));return ami[_0x9508('0x74')]({'action':_0x9508('0x75'),'channel':_0x5bdd1f[_0x9508('0x14')][_0x169daf][_0x9508('0x76')]})[_0x9508('0x77')](function(_0x1e58c2){if(_0x1e58c2[_0x9508('0x4a')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x5bdd1f[_0x9508('0x14')][_0x169daf]){ut[_0x9508('0x78')](_0x5bdd1f[_0x9508('0x24')][_0x5bdd1f[_0x9508('0x14')][_0x169daf][_0x9508('0x79')]],'[clearZombieChannel]');if(_0x5bdd1f['actions'][_0x169daf][_0x9508('0x7a')]===!![]){ut['decrementTalkink'](_0x5bdd1f[_0x9508('0x24')][_0x5bdd1f[_0x9508('0x14')][_0x169daf]['queue']],_0x9508('0x7b'));ut['loggerError']('[Dialer][checkChannel][pTalking][Preview]'+_0x169daf,_0x5bdd1f[_0x9508('0x14')][_0x169daf][_0x9508('0x79')]);}ut['loggerError'](_0x9508('0x7c')+_0x169daf,_0x5bdd1f[_0x9508('0x14')][_0x169daf][_0x9508('0x79')]);delete _0x5bdd1f[_0x9508('0x14')][_0x169daf];}},0x2328);}});}});};Preview[_0x9508('0x62')][_0x9508('0x67')]=function(){var _0xf438ab=this;loggerAction[_0x9508('0x58')](_0x9508('0x7d'),_[_0x9508('0x7e')](this[_0x9508('0x14')]));for(var _0x2dc921 in this[_0x9508('0x14')]){if(_0xf438ab[_0x9508('0x14')]['hasOwnProperty'](_0x2dc921)){_0xf438ab[_0x9508('0x6b')](_0x2dc921);}}};Preview[_0x9508('0x62')]['recallMe']=function(_0x2573d1){var _0x5e7384=this;rpcDb['getContactRecallMe'](_0x2573d1['id'],ut[_0x9508('0x7f')](this[_0x9508('0x15')]))['then'](function(_0x199c2e){if(!_[_0x9508('0x6c')](_0x199c2e)){for(var _0x553e6b=0x0;_0x553e6b<_0x199c2e[_0x9508('0x80')];_0x553e6b+=0x1){if(ut[_0x9508('0x81')](_0x199c2e[_0x553e6b][_0x9508('0x82')])<_0x2573d1['dialRecallMeTimeout']*0x3c){if(_0x199c2e[_0x553e6b][_0x9508('0x83')]&&!_0x199c2e[_0x553e6b][_0x9508('0x83')][_0x9508('0x84')]){_0x5e7384[_0x9508('0x85')](_0x199c2e[_0x553e6b]['id'])[_0x9508('0x86')](ut[_0x9508('0x87')]('[RecallMe]'))[_0x9508('0x77')](ut[_0x9508('0x87')](_0x9508('0x88')));}else{rpcDb[_0x9508('0x89')](_0x199c2e[_0x553e6b]['id']);}}else{var _0x5bab99=new Action(_0x199c2e[_0x553e6b],_0x2573d1);_0x5bab99[_0x9508('0x8a')]=moment()['format'](_0x9508('0x8b'));_0x2573d1[_0x9508('0x3f')]+=0x1;ut['logCustomer'](_0x5bab99,0x17,_0x9508('0x8c'));if(_0x2573d1[_0x9508('0x8d')]){rpcDb['rescheduleContactInQueue'](ut[_0x9508('0x8e')](_0x199c2e[_0x553e6b]));rpcDb[_0x9508('0x8f')](_0x5bab99,_0x9508('0x90'));}else{ut[_0x9508('0x91')](_0x5bab99,0x16,'RecallFailedTimeout');rpcDb[_0x9508('0x8f')](_0x5bab99,_0x9508('0x92'));rpcDb[_0x9508('0x93')](_0x5bab99,_0x9508('0x92'));}}}}})[_0x9508('0x77')](ut[_0x9508('0x87')](_0x9508('0x94')));};Preview[_0x9508('0x62')]['setMessage']=function(_0x1476e1){_0x1476e1[_0x9508('0x5c')]=!![];if(ut[_0x9508('0x95')](_0x1476e1['loggedIn'])){_0x1476e1[_0x9508('0x4a')]='AGENTS_NOT_LOGGED';}else if(!ut[_0x9508('0x96')](_0x1476e1['dialActive'])){_0x1476e1['message']='NOT_ACTIVE';}else if(!this[_0x9508('0x97')](_0x1476e1[_0x9508('0x50')])){if(!this[_0x9508('0x97')](_0x1476e1['TrunkBackup'])){_0x1476e1[_0x9508('0x4a')]=_0x9508('0x98');}else{_0x1476e1[_0x9508('0x4a')]=_0x9508('0x99');}}else{_0x1476e1[_0x9508('0x4a')]='ACTIVE';}emitCampaignPreview(_0x1476e1);};Preview['prototype'][_0x9508('0x9a')]=function(_0x374fe0,_0x1d3e4d,_0x202467){var _0x306709=this;var _0x3ec6b7=this[_0x9508('0x14')][_0x1d3e4d];var _0x2d87e8=this[_0x9508('0x24')][_0x3ec6b7[_0x9508('0x79')]];var _0x299b4f;if(_0x2d87e8){switch(_0x202467){case'1':_0x2d87e8[_0x9508('0x3d')]+=0x1;_0x3ec6b7['countnosuchnumberretry']+=0x1;_0x3ec6b7['countglobal']=ut[_0x9508('0x9b')](_0x3ec6b7);ut['logCustomer'](_0x3ec6b7,0x0,_0x9508('0x9c'));ami['emit']('custom:agentnosuchnumber',ut[_0x9508('0x9d')](_0x3ec6b7,'nosuchnumber'));rpcDb['createCustomerHistory'](_0x3ec6b7,_0x9508('0x9e'));if(ut[_0x9508('0x9b')](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb[_0x9508('0x93')](_0x299b4f,_0x9508('0xa2'));}else{if(_0x3ec6b7[_0x9508('0xa3')]>=_0x2d87e8[_0x9508('0xa4')]){rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xa2'));}else{rpcDb[_0x9508('0xa5')](ut[_0x9508('0xa6')](_0x3ec6b7,_0x9508('0xa3'),_0x2d87e8[_0x9508('0xa7')]),_0x3ec6b7['unlockAgent'],_0x3ec6b7[_0x9508('0xa8')]);}}delete this['actions'][_0x374fe0[_0x9508('0xa9')]];break;case _0x9508('0xaa'):var _0x42ab8e=moment()[_0x9508('0x55')](_0x9508('0x8b'));_0x3ec6b7[_0x9508('0xab')]=_0x42ab8e;_0x3ec6b7[_0x9508('0xac')]=_0x42ab8e;_0x3ec6b7[_0x9508('0x7a')]=!![];_0x2d87e8[_0x9508('0x2b')]+=0x1;logger[_0x9508('0x58')](_0x9508('0xad'),_0x3ec6b7[_0x9508('0xae')],'\x20Queue',_0x2d87e8[_0x9508('0x51')],_0x9508('0x71'),_0x2d87e8[_0x9508('0x2b')]);ami['emit']('custom:agentconnect',ut[_0x9508('0x9d')](_0x3ec6b7,_0x9508('0xaf'),this[_0x9508('0x24')][_0x3ec6b7[_0x9508('0x79')]]));if(_0x2d87e8[_0x9508('0xb0')]){ami[_0x9508('0x25')](_0x9508('0xb1'),ut['buildAcw'](_0x3ec6b7));}break;case'16':ami[_0x9508('0x25')]('custom:agentcomplete',ut['buildObj'](_0x3ec6b7,_0x9508('0xb2'),this['campaignsPreview'][_0x3ec6b7[_0x9508('0x79')]]));emitVoiceQueueChannelRemove(ut[_0x9508('0x9d')](_0x3ec6b7,'complete'));_0x2d87e8[_0x9508('0x36')]+=0x1;_0x2d87e8['total']+=0x1;_0x2d87e8[_0x9508('0x28')]+=0x1;ut['decrementTalkink'](_0x2d87e8,_0x9508('0xb3'));_0x3ec6b7[_0x9508('0xb4')]=ut[_0x9508('0x9b')](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x4,_0x9508('0xb5'));rpcDb[_0x9508('0x8f')](_0x3ec6b7,_0x9508('0xb6'));rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xb7'));rpcDb[_0x9508('0xb8')](_0x3ec6b7);_0x2d87e8['sumDuration']+=_0x3ec6b7[_0x9508('0xb9')];_0x2d87e8[_0x9508('0x2c')]+=_0x3ec6b7[_0x9508('0xb9')];logger[_0x9508('0x58')](_0x9508('0xba'),_0x3ec6b7[_0x9508('0xae')],'\x20Queue',_0x2d87e8['name'],_0x9508('0x71'),_0x2d87e8[_0x9508('0x2b')]);delete this[_0x9508('0x14')][_0x374fe0['linkedid']];break;case'BUSY':_0x2d87e8[_0x9508('0x38')]+=0x1;_0x3ec6b7['countbusyretry']+=0x1;_0x3ec6b7[_0x9508('0xb4')]=ut[_0x9508('0x9b')](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x5,'Busy');ami[_0x9508('0x25')](_0x9508('0xbb'),ut[_0x9508('0x9d')](_0x3ec6b7,_0x9508('0xbc')));rpcDb[_0x9508('0x8f')](_0x3ec6b7,_0x9508('0xbd'));if(ut['totalGlobal'](_0x3ec6b7)>=_0x2d87e8['dialGlobalMaxRetry']){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb['createCustomerFinal'](_0x299b4f,_0x9508('0xbe'));}else{if(_0x3ec6b7[_0x9508('0xbf')]>=_0x2d87e8[_0x9508('0xc0')]){rpcDb['createCustomerFinal'](_0x3ec6b7,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x9508('0xa5')](ut['scheduledAt'](_0x3ec6b7,_0x9508('0xbf'),_0x2d87e8[_0x9508('0xc1')]),_0x3ec6b7[_0x9508('0xc2')],_0x3ec6b7[_0x9508('0xa8')]);}}break;case'NOANSWER':_0x2d87e8[_0x9508('0xc3')]+=0x1;_0x3ec6b7[_0x9508('0xc4')]+=0x1;_0x3ec6b7['countglobal']=ut[_0x9508('0x9b')](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x3,_0x9508('0xc5'));ami['emit'](_0x9508('0xc6'),ut['buildObj'](_0x3ec6b7,_0x9508('0xc7')));rpcDb[_0x9508('0x8f')](_0x3ec6b7,_0x9508('0xc8'));if(ut[_0x9508('0x9b')](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb[_0x9508('0x93')](_0x299b4f,_0x9508('0xc9'));}else{if(_0x3ec6b7[_0x9508('0xc4')]>=_0x2d87e8[_0x9508('0xca')]){rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xc8'));}else{rpcDb[_0x9508('0xa5')](ut[_0x9508('0xa6')](_0x3ec6b7,_0x9508('0xc4'),_0x2d87e8['dialNoAnswerRetryFrequency']),_0x3ec6b7[_0x9508('0xc2')],_0x3ec6b7['activeContact']);}}break;case'CONGESTION':_0x2d87e8[_0x9508('0x39')]+=0x1;_0x3ec6b7[_0x9508('0xcb')]+=0x1;_0x3ec6b7[_0x9508('0xb4')]=ut['totalGlobal'](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x8,_0x9508('0xcc'));ami[_0x9508('0x25')](_0x9508('0xcd'),ut[_0x9508('0x9d')](_0x3ec6b7,_0x9508('0xce')));rpcDb[_0x9508('0x8f')](_0x3ec6b7,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0x9508('0x9b')](_0x3ec6b7)>=_0x2d87e8['dialGlobalMaxRetry']){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb[_0x9508('0x93')](_0x299b4f,_0x9508('0xcf'));}else{if(_0x3ec6b7[_0x9508('0xcb')]>=_0x2d87e8[_0x9508('0xd0')]){rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xd1'));}else{rpcDb[_0x9508('0xa5')](ut['scheduledAt'](_0x3ec6b7,_0x9508('0xcb'),_0x2d87e8['dialBusyRetryFrequency']),_0x3ec6b7['unlockAgent'],_0x3ec6b7[_0x9508('0xa8')]);}}break;case _0x9508('0xd2'):_0x2d87e8[_0x9508('0xd3')]+=0x1;_0x3ec6b7[_0x9508('0xd4')]+=0x1;_0x3ec6b7['countglobal']=ut['totalGlobal'](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x14,_0x9508('0xd5'));ami[_0x9508('0x25')]('custom:agentreject',ut[_0x9508('0x9d')](_0x3ec6b7,'agentreject'));rpcDb['createCustomerHistory'](_0x3ec6b7,_0x9508('0xd6'));if(ut['totalGlobal'](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0x14,_0x9508('0xd5'));rpcDb[_0x9508('0x93')](_0x299b4f,_0x9508('0xd7'));}else{if(_0x3ec6b7[_0x9508('0xd4')]>=_0x2d87e8['dialAgentRejectMaxRetry']){rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xd7'));}else{rpcDb['rescheduleContact'](ut[_0x9508('0xa6')](_0x3ec6b7,'countagentrejectretry',_0x2d87e8['dialAgentRejectRetryFrequency']),_0x3ec6b7[_0x9508('0xc2')],_0x3ec6b7[_0x9508('0xa8')]);}}break;case _0x9508('0xd8'):_0x2d87e8[_0x9508('0x41')]+=0x1;_0x3ec6b7['countabandonedretry']+=0x1;_0x3ec6b7[_0x9508('0xb4')]=ut[_0x9508('0x9b')](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0xb,_0x9508('0xd9'));rpcDb['createCustomerHistory'](_0x3ec6b7,'[callProgressDetectingCustomer][logAbandoned]');if(ut['totalGlobal'](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb[_0x9508('0x93')](_0x299b4f,_0x9508('0xda'));}else{if(_0x3ec6b7[_0x9508('0xdb')]>=_0x2d87e8[_0x9508('0xdc')]){rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xda'));}else{rpcDb[_0x9508('0xa5')](ut[_0x9508('0xa6')](_0x3ec6b7,_0x9508('0xdd'),_0x2d87e8[_0x9508('0xde')]),_0x3ec6b7[_0x9508('0xc2')],_0x3ec6b7['activeContact']);}}break;case'18':_0x2d87e8[_0x9508('0x40')]+=0x1;_0x3ec6b7['countmachineretry']+=0x1;_0x3ec6b7[_0x9508('0xb4')]=ut['totalGlobal'](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x12,_0x374fe0[_0x9508('0xdf')]||_0x374fe0[_0x9508('0xe0')]);ami[_0x9508('0x25')](_0x9508('0xe1'),ut[_0x9508('0x9d')](_0x3ec6b7,_0x9508('0xe2')));rpcDb[_0x9508('0x8f')](_0x3ec6b7,_0x9508('0xe3'));if(ut[_0x9508('0x9b')](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut['cloneAction'](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb[_0x9508('0x93')](_0x299b4f,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0x9508('0x93')](_0x3ec6b7,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0x9508('0x14')][_0x374fe0[_0x9508('0xa9')]];break;case'19':_0x2d87e8[_0x9508('0x40')]+=0x1;_0x3ec6b7[_0x9508('0xb4')]=ut[_0x9508('0x9b')](_0x3ec6b7);ut[_0x9508('0x91')](_0x3ec6b7,0x13,_0x374fe0['cause-txt']||_0x374fe0[_0x9508('0xe0')]);ami['emit'](_0x9508('0xe1'),ut['buildObj'](_0x3ec6b7,_0x9508('0xe2')));rpcDb[_0x9508('0x8f')](_0x3ec6b7,_0x9508('0xe4'));if(ut[_0x9508('0x9b')](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,_0x9508('0xa1'));rpcDb[_0x9508('0x93')](_0x299b4f,_0x9508('0xe4'));}else{rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xe4'));}delete this[_0x9508('0x14')][_0x374fe0[_0x9508('0xa9')]];break;default:if(_0x3ec6b7['dialAnswer']){ut['decrementTalkink'](_0x2d87e8,_0x9508('0xe5'));ut['loggerError']('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x2d87e8['name'],_0x374fe0);}_0x2d87e8[_0x9508('0x40')]+=0x1;_0x3ec6b7[_0x9508('0xb4')]=ut['totalGlobal'](_0x3ec6b7);ut['logCustomer'](_0x3ec6b7,0xc,_0x374fe0[_0x9508('0xdf')]||_0x374fe0[_0x9508('0xe0')]);rpcDb['createCustomerHistory'](_0x3ec6b7,_0x9508('0xe6'));if(ut['totalGlobal'](_0x3ec6b7)>=_0x2d87e8[_0x9508('0x9f')]){_0x299b4f=ut[_0x9508('0xa0')](_0x3ec6b7,0xf,'Global');rpcDb[_0x9508('0x93')](_0x299b4f,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x9508('0x93')](_0x3ec6b7,_0x9508('0xe7'));}delete this[_0x9508('0x14')][_0x374fe0[_0x9508('0xa9')]];}if(!(_0x3ec6b7['dialAnswer']&&_0x202467==='16')){ut[_0x9508('0x78')](_0x2d87e8,'[callProgressDetectingCustomer]');logger[_0x9508('0x58')](_0x9508('0xe8'),_0x3ec6b7[_0x9508('0xae')],_0x9508('0xe9'),_0x2d87e8[_0x9508('0x51')],_0x9508('0x6f'),_0x2d87e8[_0x9508('0x70')]);}if(_0x202467!==_0x9508('0xaa')){delete this[_0x9508('0x14')][_0x374fe0[_0x9508('0xa9')]];delete this['actions'][_0x374fe0['destlinkedid']];}}};Preview[_0x9508('0x62')][_0x9508('0xea')]=function(_0x2310b0,_0x4ce085,_0x3cb70d){if(_[_0x9508('0xeb')](_0x4ce085)&&'object'!==typeof _0x4ce085){return;}if(_[_0x9508('0xeb')](_0x3cb70d)&&_0x9508('0xec')!==typeof _0x3cb70d){return;}switch(_0x3cb70d[_0x9508('0xed')]){case'0':ut[_0x9508('0xee')](_0x2310b0,0x0,'NoSuchNumber');rpcDb[_0x9508('0xef')](_0x2310b0,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x2310b0,0x3,'NoAnswer');rpcDb[_0x9508('0xef')](_0x2310b0,_0x9508('0xf0'));break;case'5':ut[_0x9508('0xee')](_0x2310b0,0x5,_0x9508('0xf1'));rpcDb[_0x9508('0xef')](_0x2310b0,_0x9508('0xf2'));break;case'8':ut['logAgent'](_0x2310b0,0x8,_0x9508('0xcc'));rpcDb[_0x9508('0xef')](_0x2310b0,_0x9508('0xf3'));break;case'22':ut[_0x9508('0xee')](_0x2310b0,0x16,_0x9508('0xf4'));rpcDb[_0x9508('0xef')](_0x2310b0,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0x9508('0xee')](_0x2310b0,0xc,_0x3cb70d['reason']);rpcDb[_0x9508('0xef')](_0x2310b0,_0x9508('0xf3'));}ut[_0x9508('0x78')](_0x4ce085,'[callProgressDetectingAgent]');logger[_0x9508('0x58')]('[originated][decrement][callProgressDetectingAgent]',_0x2310b0['uniqueid'],_0x9508('0xe9'),_0x4ce085[_0x9508('0x51')],'originated:\x20',_0x4ce085[_0x9508('0x70')]);delete this[_0x9508('0x14')][_0x2310b0[_0x9508('0xae')]];};Preview[_0x9508('0x62')][_0x9508('0xf5')]=function(_0xb0a585,_0x45fe21,_0x119c3a,_0x11bb6c,_0x9376a5){var _0x29c0f1=this;return new BPromise(function(_0x454d43,_0x202f5f){if(_[_0x9508('0x6c')](_0x45fe21)||_['isNil'](_0x45fe21[_0x9508('0xf6')])||_[_0x9508('0x6c')](_0x45fe21[_0x9508('0xf6')][_0x9508('0xf7')])||_['isNil'](_0x45fe21[_0x9508('0x72')])){_0x202f5f(ut[_0x9508('0x4a')](_0x9508('0xf8'),_0x11bb6c,_0x9376a5));return;}var _0x3a8ae7=uuid['v4']();var _0x171225=_0x29c0f1[_0x9508('0x24')][_0x45fe21['Queue'][_0x9508('0x51')]];var _0x131bea=_0x119c3a?_0x29c0f1[_0x9508('0x15')][_0x119c3a]['id']:undefined;_0x29c0f1[_0x9508('0x14')][_0x3a8ae7]=new Action(_0x45fe21,_0x171225,_0x3a8ae7,_0x119c3a,_0x131bea);var _0x1e7a63=_0x29c0f1['actions'][_0x3a8ae7];_0x1e7a63['unlockAgent']=_0x11bb6c;_0x1e7a63[_0x9508('0xa8')]=_0x9376a5;_0x1e7a63[_0x9508('0xf9')]=_0x119c3a;if(_[_0x9508('0xfa')](_0xb0a585)){_0x29c0f1[_0x9508('0xfb')](_0x1e7a63,_0x171225,_0x45fe21,_0x119c3a)[_0x9508('0x86')](function(_0x4e74cd){logger[_0x9508('0x58')]('[Preview][execCall][success]',_0x9508('0xfc')+_0x1e7a63['queue']+_0x9508('0xfd')+_0x1e7a63['idContact'],JSON[_0x9508('0x54')](_0x4e74cd));ami[_0x9508('0x25')](_0x9508('0xfe'),ut[_0x9508('0x9d')](_0x1e7a63,_0x9508('0xff'),_0x29c0f1[_0x9508('0x24')][_0x1e7a63[_0x9508('0x79')]]));_0x454d43(ut['message'](_0x9508('0x100')));})[_0x9508('0x77')](function(_0x575aaf){ut[_0x9508('0x5e')](_0x9508('0x101'),_0x575aaf);_0x202f5f(ut[_0x9508('0x4a')]('Call\x20failed',_0x11bb6c,_0x9376a5));});}else{_0x171225['outboundBlacklistCallsDay']+=0x1;ut[_0x9508('0x102')](_0x1e7a63);rpcDb[_0x9508('0x103')](_0x1e7a63,_0x9508('0x104'));delete _0x29c0f1['actions'][_0x3a8ae7];_0x202f5f(ut['message'](_0x9508('0x105'),_0x11bb6c,_0x9376a5));}});};Preview[_0x9508('0x62')][_0x9508('0x97')]=function(_0x3ef7e3){return!_[_0x9508('0x6c')](_0x3ef7e3)&&!_[_0x9508('0x6c')](_0x3ef7e3[_0x9508('0x51')])&&!_[_0x9508('0x6c')](_0x3ef7e3[_0x9508('0x52')])&&_0x3ef7e3[_0x9508('0x52')]&&!_[_0x9508('0x6c')](this[_0x9508('0x13')][util[_0x9508('0x55')]('SIP/%s',_0x3ef7e3[_0x9508('0x51')])])&&!_[_0x9508('0x6c')](this['trunks'][util[_0x9508('0x55')](_0x9508('0x106'),_0x3ef7e3[_0x9508('0x51')])][_0x9508('0x75')])&&(this['trunks'][util[_0x9508('0x55')](_0x9508('0x106'),_0x3ef7e3['name'])][_0x9508('0x75')]==='reachable'||this[_0x9508('0x13')][util['format'](_0x9508('0x106'),_0x3ef7e3[_0x9508('0x51')])][_0x9508('0x75')]===_0x9508('0x107'));};Preview[_0x9508('0x62')][_0x9508('0x85')]=function(_0x1c17a7,_0x43ea8c){var _0x31b11e=this;return new BPromise(function(_0x2cb8a8,_0x3dc94a){_0x31b11e[_0x9508('0x108')](_0x1c17a7,_0x43ea8c)['then'](function(_0x2eb679){_0x2cb8a8(_[_0x9508('0x109')](_0x2eb679,[_0x9508('0x4a')]));})['catch'](function(_0x4941b4){if(_0x4941b4[_0x9508('0x10a')]){rpcDb[_0x9508('0x10b')](_0x1c17a7);}if(_0x4941b4[_0x9508('0x52')]){rpcDb[_0x9508('0x89')](_0x1c17a7);}_0x3dc94a(_['pick'](_0x4941b4,[_0x9508('0x4a')]));});});};Preview[_0x9508('0x62')][_0x9508('0x108')]=function(_0x5bd667,_0x5a976c){var _0x1941c3=this;return new BPromise(function(_0x120d28,_0x583370){var _0x35959d,_0x443113;rpcDb[_0x9508('0x10c')](_0x5bd667)['then'](function(_0xb39882){if(!_[_0x9508('0x6c')](_0xb39882[0x0])){_0x443113=_0xb39882[0x0][_0x9508('0x10d')]?![]:!![];_0x35959d=_0xb39882[0x0][_0x9508('0x10d')]?!![]:![];_0x35959d=_0x5a976c?!![]:_0x35959d;}var _0x4f4658=_0x1941c3['validateContact'](_0xb39882);if(_0x4f4658['isValid']){rpcDb['checkIsBlackList'](_[_0x9508('0x109')](_0xb39882[0x0],['VoiceQueueId',_0x9508('0x10e')]))[_0x9508('0x86')](function(_0x117566){_0x1941c3[_0x9508('0xf5')](_0x117566,_0xb39882[0x0],_0x5a976c,_0x443113,_0x35959d)[_0x9508('0x86')](function(_0x2b9482){_0x120d28(_0x2b9482);})['catch'](function(_0x1dc938){_0x583370(_0x1dc938);});})['catch'](function(_0x361fd9){ut[_0x9508('0x5e')](_0x9508('0x10f'),_0x361fd9);_0x583370(ut['message']('Call\x20unsuccessful',_0x443113,_0x35959d));});}else{_0x583370(ut[_0x9508('0x4a')](_0x4f4658[_0x9508('0x4a')],_0x443113,_0x35959d));}})['catch'](function(_0x4c6bc2){ut[_0x9508('0x5e')](_0x9508('0x110'),_0x4c6bc2);_0x583370(ut[_0x9508('0x4a')](_0x9508('0x111'),![],!![]));});});};Preview[_0x9508('0x62')]['validateContact']=function(_0x1fb57c){if(_[_0x9508('0x6c')](_0x1fb57c)||_[_0x9508('0xfa')](_0x1fb57c)||!_[_0x9508('0x6c')](_0x1fb57c[0x0]['Agent'])&&_[_0x9508('0x6c')](_0x1fb57c[0x0]['Agent'][_0x9508('0x51')])){ut[_0x9508('0x5e')]('[Preview][validateContact][Empty\x20Contact]',_0x1fb57c);return{'isValid':![],'message':_0x9508('0x112')};}var _0x1e0ff1=this[_0x9508('0x24')][_0x1fb57c[0x0][_0x9508('0x6e')][_0x9508('0x51')]];_0x1e0ff1[_0x9508('0x4a')]=_0x9508('0x99');if(_[_0x9508('0x6c')](_0x1e0ff1)){ut[_0x9508('0x5e')]('[Preview][validateContact][Empty\x20Campaign]',_0x1e0ff1);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x9508('0x97')](_0x1e0ff1[_0x9508('0x50')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20'+_0x1e0ff1[_0x9508('0x51')]+_0x9508('0x113'));if(!this[_0x9508('0x97')](_0x1e0ff1[_0x9508('0x114')])){ut[_0x9508('0x5e')](_0x9508('0x115'),_0x1e0ff1['name']+_0x9508('0x116'));return{'isValid':![],'message':_0x9508('0x117')};}}if(!ut['isActive'](_0x1e0ff1[_0x9508('0x30')])){ut['logger'](_0x9508('0x118'),_0x1e0ff1['name']+_0x9508('0x119'));return{'isValid':![],'message':_0x9508('0x11a')+_0x1e0ff1[_0x9508('0x51')]+_0x9508('0x119')};}return{'isValid':!![],'message':_0x9508('0x11b')};};Preview[_0x9508('0x62')][_0x9508('0xfb')]=function(_0x4b4abd,_0x8bbf47,_0x23bfe7,_0x46e577){var _0x1aa037=this;return new BPromise(function(_0xd6ca5d,_0x8873a0){var _0x3d4d7b=_0x4b4abd[_0x9508('0xae')];var _0x48def6=_0x1aa037[_0x9508('0x97')](_0x8bbf47['Trunk'])?util['format'](_0x9508('0x11c'),_0x8bbf47[_0x9508('0x50')][_0x9508('0x51')],_[_0x9508('0x6c')](_0x8bbf47['dialPrefix'])?'':_0x8bbf47[_0x9508('0x34')][_0x9508('0x11d')]()||'',_0x8bbf47[_0x9508('0x11e')]>0x0?_0x23bfe7[_0x9508('0xf6')][_0x9508('0xf7')][_0x9508('0x11f')](_0x8bbf47[_0x9508('0x11e')]):_0x23bfe7['Contact']['phone']):util[_0x9508('0x55')]('SIP/%s/%s%s',_[_0x9508('0x6c')](_0x8bbf47[_0x9508('0x114')])?_0x8bbf47[_0x9508('0x50')][_0x9508('0x51')]:_0x8bbf47[_0x9508('0x114')][_0x9508('0x51')],_['isNil'](_0x8bbf47[_0x9508('0x34')])?'':_0x8bbf47[_0x9508('0x34')][_0x9508('0x11d')]()||'',_0x8bbf47[_0x9508('0x11e')]>0x0?_0x23bfe7[_0x9508('0xf6')][_0x9508('0xf7')][_0x9508('0x11f')](_0x8bbf47['dialCutDigit']):_0x23bfe7[_0x9508('0xf6')][_0x9508('0xf7')]);var _0x4cc31b=_0x1aa037[_0x9508('0x97')](_0x8bbf47['Trunk'])?ut[_0x9508('0x120')](_0x8bbf47['Trunk'][_0x9508('0x121')],_0x8bbf47[_0x9508('0x122')],_0x8bbf47[_0x9508('0x123')]>0x0?ut[_0x9508('0x124')](_0x8bbf47[_0x9508('0x32')],_0x8bbf47[_0x9508('0x123')]):_0x8bbf47[_0x9508('0x32')]):ut[_0x9508('0x120')](_[_0x9508('0x6c')](_0x8bbf47[_0x9508('0x114')])?_0x8bbf47[_0x9508('0x50')][_0x9508('0x121')]:_0x8bbf47[_0x9508('0x114')]['callerid'],_0x8bbf47['dialOriginateCallerIdName'],_0x8bbf47['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x9508('0x124')](_0x8bbf47[_0x9508('0x32')],_0x8bbf47['dialRandomLastDigitCallerIdNumber']):_0x8bbf47[_0x9508('0x32')]);if(_0x4cc31b){_0x4b4abd['originatecalleridname']=ut['extractCalleridName'](_0x4cc31b);_0x4b4abd['originatecalleridnum']=ut['extractCalleridNumber'](_0x4cc31b);}var _0x4ae5c2=ut[_0x9508('0x125')](_0x8bbf47,_0x23bfe7,_0x48def6,_0x4cc31b,_0x3d4d7b,_0x4b4abd);_['merge'](_0x4b4abd,ut[_0x9508('0x126')](_0x4ae5c2));_0x4b4abd[_0x9508('0x8a')]=moment()[_0x9508('0x55')]('YYYY-MM-DD\x20HH:mm:ss');ami['Action'](ut[_0x9508('0x127')](_0x4b4abd,_0x8bbf47,_0x4ae5c2,_0x4b4abd['activeContact'],_0x46e577))[_0x9508('0x86')](function(_0x4d4b49){_0x8bbf47[_0x9508('0x70')]+=0x1;logger[_0x9508('0x58')](_0x9508('0x128'),_0x3d4d7b,_0x9508('0xe9'),_0x8bbf47[_0x9508('0x51')],_0x9508('0x6f'),_0x8bbf47[_0x9508('0x70')]);_0xd6ca5d(_0x4d4b49);})[_0x9508('0x77')](function(_0x51052e){ut['logAgent'](_0x4b4abd,0xe,'OriginateError');rpcDb[_0x9508('0xef')](_0x4b4abd,'[originateFailure][logOriginateFailure]');_0x8873a0(_0x51052e);});});};Preview[_0x9508('0x62')][_0x9508('0x1f')]=function(_0x41b44){if(this[_0x9508('0x14')][_0x41b44[_0x9508('0xa9')]]){this[_0x9508('0x14')][_0x41b44[_0x9508('0xa9')]][_0x9508('0x76')]=_0x41b44[_0x9508('0x76')];}};Preview[_0x9508('0x62')][_0x9508('0x17')]=function(_0xbe8dda){var _0x357d58=this;var _0x8729b6=this[_0x9508('0x14')][_0xbe8dda[_0x9508('0x129')]];if(_0x8729b6){if(_0x8729b6[_0x9508('0xf9')]&&this[_0x9508('0x15')][_0x8729b6[_0x9508('0xf9')]]){ut[_0x9508('0x12a')](_0x8729b6,this['agents'][_0x8729b6[_0x9508('0xf9')]]['name'],this['agents'][_0x8729b6[_0x9508('0xf9')]]['id']);}var _0x15ba1c=_['clone'](_0x8729b6);_0x15ba1c[_0x9508('0xab')]=moment()[_0x9508('0x55')](_0x9508('0x8b'));var _0x50c019=_0x357d58[_0x9508('0x24')][_0x8729b6['queue']];if(ut[_0x9508('0x12b')](_0xbe8dda['response'])){if(_0x8729b6[_0x9508('0xc2')]){rpcDb['unlockContact'](_0x8729b6[_0x9508('0x12c')]);}if(_0x8729b6[_0x9508('0xa8')]){rpcDb['disableContact'](_0x8729b6[_0x9508('0x12c')]);}ami[_0x9508('0x25')]('custom:agentringnoanswer',ut[_0x9508('0x9d')](_0x8729b6,'rejected',this['campaignsPreview'][_0x8729b6['queue']]));this[_0x9508('0xea')](_0x15ba1c,_0x50c019,_0xbe8dda);}else{_0x8729b6[_0x9508('0x8a')]=moment()['format'](_0x9508('0x8b'));ut['logAgent'](_0x15ba1c,0x4,_0x9508('0xb5'));rpcDb[_0x9508('0xef')](_0x15ba1c,_0x9508('0x12d'));}}};Preview[_0x9508('0x62')][_0x9508('0x19')]=function(_0x2dc2c7){var _0xcb2e=this;var _0x482718=this[_0x9508('0x14')][_0x2dc2c7[_0x9508('0xa9')]];var _0x5a2437;if(_0x482718){_0x5a2437=this[_0x9508('0x24')][_0x482718['queue']];logger[_0x9508('0x58')]('[syncHangup][talking]',_0x2dc2c7['linkedid'],_0x9508('0xe9'),_0x5a2437['name'],_0x9508('0x71'),_0x5a2437[_0x9508('0x2b')]);}if(this[_0x9508('0x14')][_0x2dc2c7['linkedid']]&&_0x2dc2c7['linkedid']!==_0x2dc2c7[_0x9508('0xae')]){if(_0x2dc2c7['cause']==='16'&&this[_0x9508('0x14')][_0x2dc2c7[_0x9508('0xa9')]][_0x9508('0x7a')]){this[_0x9508('0x9a')](_0x2dc2c7,_0x2dc2c7['linkedid'],_0x2dc2c7[_0x9508('0x12e')]);}else if(this['actions'][_0x2dc2c7['linkedid']]['dialAnswer']){logger[_0x9508('0x58')](_0x9508('0x12f'),_0x2dc2c7['linkedid'],_0x2dc2c7[_0x9508('0x12e')],'\x20Queue',_0x5a2437[_0x9508('0x51')],'pTalking:\x20',_0x5a2437['pTalking']);this[_0x9508('0x9a')](_0x2dc2c7,_0x2dc2c7[_0x9508('0xa9')],_0x2dc2c7[_0x9508('0x12e')]);}}else if(_0x482718&&_[_0x9508('0x6c')](_0x482718[_0x9508('0x130')])&&_0x5a2437[_0x9508('0x131')]&&_0x2dc2c7[_0x9508('0xa9')]===_0x2dc2c7[_0x9508('0xae')]&&_['isNil'](_0x2dc2c7['reason'])&&_0x2dc2c7[_0x9508('0x12e')]==='16'&&_0x2dc2c7[_0x9508('0x132')]==='6'&&_[_0x9508('0xeb')](_0x482718[_0x9508('0x133')])){if(_0x482718[_0x9508('0xc2')]){rpcDb[_0x9508('0x10b')](_0x482718['idContact']);}if(_0x482718[_0x9508('0xa8')]){rpcDb[_0x9508('0x89')](_0x482718[_0x9508('0x12c')]);}_0x2dc2c7['reason']='22';this[_0x9508('0xea')](_0x482718,_0x5a2437,_0x2dc2c7);}else if(_0x482718&&_0x482718[_0x9508('0x133')]){if(_0x2dc2c7[_0x9508('0x12e')]==='16'&&this[_0x9508('0x14')][_0x2dc2c7[_0x9508('0xa9')]]['dialAnswer']){logger[_0x9508('0x58')]('[syncHangup][talking][transfer]',_0x2dc2c7[_0x9508('0xa9')],_0x2dc2c7[_0x9508('0x12e')],_0x9508('0xe9'),_0x5a2437[_0x9508('0x51')],_0x9508('0x71'),_0x5a2437[_0x9508('0x2b')]);this[_0x9508('0x9a')](_0x2dc2c7,_0x2dc2c7[_0x9508('0xa9')],_0x2dc2c7[_0x9508('0x12e')]);}else if(this[_0x9508('0x14')][_0x2dc2c7[_0x9508('0xa9')]][_0x9508('0x7a')]){logger[_0x9508('0x58')](_0x9508('0x12f'),_0x2dc2c7[_0x9508('0xa9')],_0x2dc2c7['cause'],_0x9508('0xe9'),_0x5a2437['name'],'pTalking:\x20',_0x5a2437['pTalking']);this[_0x9508('0x9a')](_0x2dc2c7,_0x2dc2c7[_0x9508('0xa9')],_0x2dc2c7[_0x9508('0x12e')]);}}};Preview[_0x9508('0x62')]['syncDialEnd']=function(_0x1e40c3){if(this[_0x9508('0x14')][_0x1e40c3[_0x9508('0x134')]]&&_0x1e40c3['destlinkedid']!==_0x1e40c3[_0x9508('0x135')]){this['callProgressDetectingCustomer'](_0x1e40c3,_0x1e40c3[_0x9508('0x134')],_0x1e40c3[_0x9508('0xe0')]);}};Preview['prototype'][_0x9508('0x1b')]=function(_0x447d88){if(this[_0x9508('0x14')][_0x447d88[_0x9508('0xa9')]]&&_0x447d88[_0x9508('0xa9')]!==_0x447d88['uniqueid']&&!this[_0x9508('0x14')][_0x447d88['linkedid']][_0x9508('0x7a')]){if(_0x447d88['cause']==='1'){this[_0x9508('0x9a')](_0x447d88,_0x447d88[_0x9508('0xa9')],_0x447d88[_0x9508('0x12e')]);}}};Preview[_0x9508('0x62')]['addVariable']=function(_0x281e45,_0xd67ea2,_0xef2667){if(this[_0x9508('0x14')][_0x281e45]){if(_[_0x9508('0x6c')](this[_0x9508('0x14')][_0x281e45]['variables'])){this[_0x9508('0x14')][_0x281e45][_0x9508('0x136')]={};}this[_0x9508('0x14')][_0x281e45][_0x9508('0x136')][_0xd67ea2]=_0xef2667;}};Preview[_0x9508('0x62')][_0x9508('0x21')]=function(_0x38b021){try{if(!_[_0x9508('0x6c')](_0x38b021)){if(ut[_0x9508('0x137')](_[_0x9508('0x138')](_0x38b021[_0x9508('0x139')])[0x0])){this[_0x9508('0x13a')](_0x38b021[_0x9508('0xae')],_[_0x9508('0x138')](_0x38b021[_0x9508('0x139')])[0x0],_0x38b021[_0x9508('0x13b')]);}}}catch(_0x27428d){logger['error']('[syncVarSet][Preview]',util[_0x9508('0x13c')](_0x27428d,{'showHidden':![],'depth':null}));}};Preview[_0x9508('0x62')][_0x9508('0x23')]=function(_0x45c545){if(_0x45c545){if(this[_0x9508('0x14')][_0x45c545[_0x9508('0x13d')]]){this[_0x9508('0x14')][_0x45c545[_0x9508('0x13d')]][_0x9508('0x133')]=!![];}}};Preview[_0x9508('0x62')][_0x9508('0x13e')]=function(_0x105b5a){if(_0x105b5a){if(this[_0x9508('0x14')][_0x105b5a['transfererlinkedid']]){this[_0x9508('0x14')][_0x105b5a[_0x9508('0x13f')]][_0x9508('0x133')]=!![];}}};module[_0x9508('0x140')]=Preview;
\ No newline at end of file
+var _0x44e8=['[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','clearZombieChannels','[action]','size','recallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','[RecallMe]','logger2','starttime','logCustomer','RecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','loggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','YYYY-MM-DD\x20HH:mm:ss','answertime','[syncHangup][talking][increment]','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','\x20Queue','BUSY','countbusyretry','countglobal','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','Global','[callProgressDetectingCustomer][logBusyGlobal]','rescheduleContact','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','uniqueid','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','lookAgent','Queue:\x20','called','[Preview][execCall][failure]','Call\x20failed','createHistory','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','disableContact','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','isEmpty','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','isActive','\x20Not\x20Active','campaign\x20Name:\x20','Is\x20Valid','execCall','trim','dialCutDigit','substring','SIP/%s/%s%s','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','callerid','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','toLowerVariables','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','statedesc','dialQueueProject','transfer','idContact','[syncHangup][talking][cause]','destuniqueid','addVariable','variables','syncVarSet','filterKey','keys','variable','value','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','uuid','moment','md5','ioredis','../../../config/logger','preview','actionPreview','./rpcDb','./action','./util/util','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','trunks','agents','originateresponse','syncOriginateResponse','bind','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','syncNewExten','varset','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','type','outbound','name','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','originated','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','Interval','stringify','format','voice:queue:%s','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','syncCampaigns','dialMethod','booked','clockClearZombieChannels','hasOwnProperty','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','isNil','actions','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink'];(function(_0x4580dc,_0x1a0b79){var _0x212bed=function(_0x59a331){while(--_0x59a331){_0x4580dc['push'](_0x4580dc['shift']());}};_0x212bed(++_0x1a0b79);}(_0x44e8,0xd7));var _0x844e=function(_0x85bdb6,_0x2969e1){_0x85bdb6=_0x85bdb6-0x0;var _0x13f568=_0x44e8[_0x85bdb6];return _0x13f568;};'use strict';var util=require(_0x844e('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0x844e('0x1'));var moment=require(_0x844e('0x2'));var md5=require(_0x844e('0x3'));var Redis=require(_0x844e('0x4'));var config=require('../../../config/environment');var logger=require(_0x844e('0x5'))(_0x844e('0x6'));var loggerAction=require(_0x844e('0x5'))(_0x844e('0x7'));var ami=require('../ami');var rpcDb=require(_0x844e('0x8'));var Action=require(_0x844e('0x9'));var ut=require(_0x844e('0xa'));config[_0x844e('0xb')]=_['defaults'](config[_0x844e('0xb')],{'host':_0x844e('0xc'),'port':0x18eb});var io=require(_0x844e('0xd'))(new Redis(config[_0x844e('0xb')]));var Sequence=function(){};Sequence[_0x844e('0xe')][_0x844e('0xf')]=function(_0x536601){this[_0x844e('0x10')]=this[_0x844e('0x10')]?this[_0x844e('0x10')][_0x844e('0x11')](_0x536601):_0x536601();};function Preview(_0x14909f){this[_0x844e('0x12')]=new Sequence();this[_0x844e('0x13')]=_0x14909f['voiceQueues'];this[_0x844e('0x14')]=_0x14909f[_0x844e('0x14')];this['actions']={};this[_0x844e('0x15')]=_0x14909f[_0x844e('0x15')];this['clockClearZombieChannels']=0x0;ami['on'](_0x844e('0x16'),this[_0x844e('0x17')][_0x844e('0x18')](this));ami['on']('hangup',this[_0x844e('0x19')][_0x844e('0x18')](this));ami['on'](_0x844e('0x1a'),this[_0x844e('0x1b')][_0x844e('0x18')](this));ami['on'](_0x844e('0x1c'),this[_0x844e('0x1d')][_0x844e('0x18')](this));ami['on']('newexten',this[_0x844e('0x1e')]['bind'](this));ami['on'](_0x844e('0x1f'),this['syncVarSet'][_0x844e('0x18')](this));ami['on']('attendedtransfer',this[_0x844e('0x20')][_0x844e('0x18')](this));ami['on'](_0x844e('0x21'),this[_0x844e('0x22')][_0x844e('0x18')](this));this[_0x844e('0x23')](this[_0x844e('0x13')]);}function emit(_0x243aeb,_0x4ffb86,_0x3b5c5c){io['to'](_0x243aeb)['emit'](_0x4ffb86,_0x3b5c5c);}function emitCampaignPreview(_0x549bb3){if(_0x549bb3[_0x844e('0x24')]===_0x844e('0x25')){var _0x439b26={'id':_0x549bb3['id'],'name':_0x549bb3[_0x844e('0x26')],'strategy':_0x549bb3['strategy'],'answered':_0x549bb3[_0x844e('0x27')],'available':_0x549bb3[_0x844e('0x28')],'loggedIn':_0x549bb3['loggedIn'],'pTalking':_0x549bb3[_0x844e('0x29')],'sumBillable':_0x549bb3[_0x844e('0x2a')],'sumDuration':_0x549bb3[_0x844e('0x2b')],'sumHoldTime':_0x549bb3[_0x844e('0x2c')]||0x0,'talking':_0x549bb3[_0x844e('0x2d')],'total':_0x549bb3[_0x844e('0x2e')],'type':_0x549bb3['type'],'unmanaged':_0x549bb3[_0x844e('0x2f')],'abandoned':_0x549bb3[_0x844e('0x30')],'waiting':_0x549bb3[_0x844e('0x31')],'loggedInDb':_0x549bb3[_0x844e('0x32')],'dialActive':_0x549bb3[_0x844e('0x33')],'dialMethod':_0x549bb3['dialMethod'],'dialOriginateCallerIdName':_0x549bb3[_0x844e('0x34')],'dialOriginateCallerIdNumber':_0x549bb3['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x549bb3['dialOriginateTimeout'],'dialPrefix':_0x549bb3[_0x844e('0x35')],'outboundAnswerAgiCallsDay':_0x549bb3[_0x844e('0x36')],'outboundAnswerCallsDay':_0x549bb3[_0x844e('0x37')],'outboundBlacklistCallsDay':_0x549bb3['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x549bb3[_0x844e('0x38')],'outboundCongestionCallsDay':_0x549bb3[_0x844e('0x39')],'outboundDropCallsDayACS':_0x549bb3[_0x844e('0x3a')],'outboundDropCallsDayCallersExit':_0x549bb3['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x549bb3[_0x844e('0x3b')],'outboundNoAnswerCallsDay':_0x549bb3[_0x844e('0x3c')],'outboundNoSuchCallsDay':_0x549bb3[_0x844e('0x3d')],'outboundOriginateFailureCallsDay':_0x549bb3[_0x844e('0x3e')],'outboundReCallsDay':_0x549bb3[_0x844e('0x3f')],'outboundRejectCallsDay':_0x549bb3[_0x844e('0x40')],'outboundUnknownCallsDay':_0x549bb3[_0x844e('0x41')],'outboundAbandonedCallsDay':_0x549bb3[_0x844e('0x42')],'predictiveIntervalAnsweredCalls':_0x549bb3[_0x844e('0x43')],'predictiveIntervalAvgHoldtime':_0x549bb3[_0x844e('0x44')],'predictiveIntervalAvgTalktime':_0x549bb3['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x549bb3[_0x844e('0x45')],'predictiveIntervalDroppedCallsTimeout':_0x549bb3[_0x844e('0x46')],'predictiveIntervalErlangCalls':_0x549bb3[_0x844e('0x47')],'predictiveIntervalErlangCallsDroppedCalls':_0x549bb3[_0x844e('0x48')],'predictiveIntervalHitRate':_0x549bb3[_0x844e('0x49')],'predictiveIntervalMultiplicativeFactor':_0x549bb3[_0x844e('0x4a')],'predictiveIntervalPauses':_0x549bb3[_0x844e('0x4b')],'predictiveIntervalAvailable':_0x549bb3['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x549bb3[_0x844e('0x4c')],'message':_0x549bb3[_0x844e('0x4d')],'originated':_0x549bb3[_0x844e('0x4e')],'erlangCalls':_0x549bb3['erlangCalls'],'erlangCallToSecond':_0x549bb3[_0x844e('0x4f')],'erlangAbandonmentRate':_0x549bb3[_0x844e('0x50')],'erlangBusyFactor':_0x549bb3['erlangBusyFactor'],'startPredictive':_0x549bb3[_0x844e('0x51')],'startProgressive':_0x549bb3[_0x844e('0x52')]};if(_0x549bb3['Trunk']){_0x439b26[_0x844e('0x53')]={'id':_0x549bb3[_0x844e('0x53')]['id'],'name':_0x549bb3[_0x844e('0x53')][_0x844e('0x26')],'active':_0x549bb3[_0x844e('0x53')][_0x844e('0x54')],'callerid':_0x549bb3[_0x844e('0x53')]['callerid']};}if(_0x549bb3[_0x844e('0x55')]){_0x439b26[_0x844e('0x55')]={'id':_0x549bb3[_0x844e('0x55')]['id'],'name':_0x549bb3[_0x844e('0x55')][_0x844e('0x26')]};}var _0x41b911=md5(JSON[_0x844e('0x56')](_0x439b26));if(_0x549bb3[_0x844e('0x3')]!==_0x41b911){_0x549bb3[_0x844e('0x3')]=_0x41b911;emit(util[_0x844e('0x57')](_0x844e('0x58'),_0x439b26['name']),'voice_queue:save',_0x439b26);}}}function emitVoiceQueueChannelRemove(_0x3ad6d5){logger[_0x844e('0x59')](_0x844e('0x5a'),JSON[_0x844e('0x56')](_0x3ad6d5));emit(util[_0x844e('0x57')](_0x844e('0x58'),_0x3ad6d5[_0x844e('0x26')]),_0x844e('0x5b'),_0x3ad6d5);io[_0x844e('0x5c')]('voice_queue_presence:remove',_0x3ad6d5);}function notSendMessagesQueue(_0x2f4a90){if(_0x2f4a90['sendMessageOneNotActive']){if(_0x2f4a90[_0x844e('0x4e')]===0x0&&_0x2f4a90['pTalking']===0x0){_0x2f4a90[_0x844e('0x5d')]=![];_0x2f4a90['available']=0x0;_0x2f4a90[_0x844e('0x5e')]=0x0;_0x2f4a90[_0x844e('0x4d')]=_0x844e('0x5f');ut[_0x844e('0x60')](_0x844e('0x61'),_0x2f4a90[_0x844e('0x26')]+_0x844e('0x62'));}else{_0x2f4a90[_0x844e('0x4d')]=_0x844e('0x63');ut[_0x844e('0x60')](_0x844e('0x61'),_0x2f4a90['name']+_0x844e('0x64'));}emitCampaignPreview(_0x2f4a90);}}Preview[_0x844e('0xe')][_0x844e('0x23')]=function(){var _0x511c83=this;setInterval(function(){_0x511c83['syncCampaigns']();},0x7cf);};Preview[_0x844e('0xe')][_0x844e('0x65')]=function(){var _0x1a7817=this['campaignsPreview'];this['clockClearZombieChannels']+=0x1;for(var _0x52a460 in _0x1a7817){if(_0x1a7817['hasOwnProperty'](_0x52a460)&&(_0x1a7817[_0x52a460][_0x844e('0x66')]===_0x844e('0x6')||_0x1a7817[_0x52a460][_0x844e('0x66')]===_0x844e('0x67'))&&_0x1a7817[_0x52a460][_0x844e('0x24')]==='outbound'){if(this[_0x844e('0x68')]>0x7){this['clockClearZombieChannels']=0x0;this['clearZombieChannels']();}}if(_0x1a7817[_0x844e('0x69')](_0x52a460)&&_0x1a7817[_0x52a460][_0x844e('0x66')]===_0x844e('0x6')&&_0x1a7817[_0x52a460][_0x844e('0x24')]==='outbound'){if(_0x1a7817[_0x52a460][_0x844e('0x33')]){this[_0x844e('0x6a')](_0x1a7817[_0x52a460]);if(_0x1a7817[_0x52a460][_0x844e('0x6b')])this['recallMe'](_0x1a7817[_0x52a460]);}else{notSendMessagesQueue(_0x1a7817[_0x52a460]);}}}};Preview[_0x844e('0xe')][_0x844e('0x6c')]=function(_0x558f21){var _0x3c6502=this;this[_0x844e('0x12')][_0x844e('0xf')](function(){if(!_[_0x844e('0x6d')](_0x3c6502[_0x844e('0x6e')][_0x558f21])){loggerAction[_0x844e('0x59')]('[clearZombieChannels][talking]',_0x558f21,_0x844e('0x6f'),_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x70')],_0x844e('0x71'),JSON[_0x844e('0x56')](_0x3c6502[_0x844e('0x13')][_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x70')]][_0x844e('0x4e')]),_0x844e('0x72'),JSON['stringify'](_0x3c6502[_0x844e('0x13')][_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x70')]]['pTalking']),JSON[_0x844e('0x56')](_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x73')]),JSON[_0x844e('0x56')](_[_0x844e('0x74')](_0x3c6502[_0x844e('0x6e')][_0x558f21],[_0x844e('0x75'),'UserId',_0x844e('0x76'),_0x844e('0x77')])));return ami[_0x844e('0x78')]({'action':_0x844e('0x79'),'channel':_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x7a')]})[_0x844e('0x7b')](function(_0x3acef5){if(_0x3acef5[_0x844e('0x4d')]===_0x844e('0x7c')){setTimeout(function(){if(_0x3c6502[_0x844e('0x6e')][_0x558f21]){ut[_0x844e('0x7d')](_0x3c6502[_0x844e('0x13')][_0x3c6502['actions'][_0x558f21][_0x844e('0x70')]],_0x844e('0x7e'));if(_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x73')]===!![]){ut[_0x844e('0x7f')](_0x3c6502[_0x844e('0x13')][_0x3c6502['actions'][_0x558f21][_0x844e('0x70')]],_0x844e('0x7e'));ut['loggerError'](_0x844e('0x80')+_0x558f21,_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x70')]);}ut[_0x844e('0x81')](_0x844e('0x82')+_0x558f21,_0x3c6502[_0x844e('0x6e')][_0x558f21][_0x844e('0x70')]);delete _0x3c6502[_0x844e('0x6e')][_0x558f21];}},0x2328);}});}});};Preview[_0x844e('0xe')][_0x844e('0x83')]=function(){var _0x2dfda6=this;loggerAction[_0x844e('0x59')](_0x844e('0x84'),_[_0x844e('0x85')](this['actions']));for(var _0x44d3de in this[_0x844e('0x6e')]){if(_0x2dfda6['actions'][_0x844e('0x69')](_0x44d3de)){_0x2dfda6['clearZombieChannel'](_0x44d3de);}}};Preview[_0x844e('0xe')][_0x844e('0x86')]=function(_0x1a84a7){var _0x5c4858=this;rpcDb['getContactRecallMe'](_0x1a84a7['id'],ut[_0x844e('0x87')](this[_0x844e('0x15')]))[_0x844e('0x88')](function(_0x3d6fa7){if(!_[_0x844e('0x6d')](_0x3d6fa7)){for(var _0x4dca78=0x0;_0x4dca78<_0x3d6fa7[_0x844e('0x89')];_0x4dca78+=0x1){if(ut[_0x844e('0x8a')](_0x3d6fa7[_0x4dca78][_0x844e('0x8b')])<_0x1a84a7[_0x844e('0x8c')]*0x3c){if(_0x3d6fa7[_0x4dca78]['Agent']&&!_0x3d6fa7[_0x4dca78][_0x844e('0x8d')][_0x844e('0x8e')]){_0x5c4858[_0x844e('0x8f')](_0x3d6fa7[_0x4dca78]['id'])['then'](ut['logger2'](_0x844e('0x90')))[_0x844e('0x7b')](ut[_0x844e('0x91')]('[RecallMe]'));}else{rpcDb['disableContact'](_0x3d6fa7[_0x4dca78]['id']);}}else{var _0x33798f=new Action(_0x3d6fa7[_0x4dca78],_0x1a84a7);_0x33798f[_0x844e('0x92')]=moment()[_0x844e('0x57')]('YYYY-MM-DD\x20HH:mm:ss');_0x1a84a7[_0x844e('0x3f')]+=0x1;ut[_0x844e('0x93')](_0x33798f,0x17,_0x844e('0x94'));if(_0x1a84a7['dialRecallInQueue']){rpcDb[_0x844e('0x95')](ut[_0x844e('0x96')](_0x3d6fa7[_0x4dca78]));rpcDb[_0x844e('0x97')](_0x33798f,_0x844e('0x98'));}else{ut['logCustomer'](_0x33798f,0x16,_0x844e('0x99'));rpcDb[_0x844e('0x97')](_0x33798f,_0x844e('0x9a'));rpcDb[_0x844e('0x9b')](_0x33798f,_0x844e('0x9a'));}}}}})[_0x844e('0x7b')](ut[_0x844e('0x91')](_0x844e('0x9c')));};Preview['prototype']['setMessage']=function(_0x3f32cc){_0x3f32cc['sendMessageOneNotActive']=!![];if(ut[_0x844e('0x9d')](_0x3f32cc[_0x844e('0x9e')])){_0x3f32cc[_0x844e('0x4d')]=_0x844e('0x9f');}else if(!ut['isActive'](_0x3f32cc['dialActive'])){_0x3f32cc['message']='NOT_ACTIVE';}else if(!this['isTrunkReachable'](_0x3f32cc['Trunk'])){if(!this[_0x844e('0xa0')](_0x3f32cc[_0x844e('0xa1')])){_0x3f32cc[_0x844e('0x4d')]='TRUNK_IS_NOT_REACHABLE';}else{_0x3f32cc[_0x844e('0x4d')]=_0x844e('0xa2');}}else{_0x3f32cc['message']=_0x844e('0xa2');}emitCampaignPreview(_0x3f32cc);};Preview['prototype'][_0x844e('0xa3')]=function(_0x231136,_0x31ac08,_0x361e36){var _0x4805b7=this;var _0x5554e2=this['actions'][_0x31ac08];var _0x314586=this[_0x844e('0x13')][_0x5554e2[_0x844e('0x70')]];var _0x2fe056;if(_0x314586){switch(_0x361e36){case'1':_0x314586[_0x844e('0x3d')]+=0x1;_0x5554e2['countnosuchnumberretry']+=0x1;_0x5554e2['countglobal']=ut[_0x844e('0xa4')](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0x0,_0x844e('0xa5'));ami[_0x844e('0x5c')](_0x844e('0xa6'),ut[_0x844e('0xa7')](_0x5554e2,'nosuchnumber'));rpcDb[_0x844e('0x97')](_0x5554e2,_0x844e('0xa8'));if(ut['totalGlobal'](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,'Global');rpcDb['createCustomerFinal'](_0x2fe056,_0x844e('0xab'));}else{if(_0x5554e2[_0x844e('0xac')]>=_0x314586[_0x844e('0xad')]){rpcDb['createCustomerFinal'](_0x5554e2,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb['rescheduleContact'](ut[_0x844e('0xae')](_0x5554e2,'countnosuchnumberretry',_0x314586[_0x844e('0xaf')]),_0x5554e2[_0x844e('0xb0')],_0x5554e2[_0x844e('0xb1')]);}}delete this[_0x844e('0x6e')][_0x231136[_0x844e('0xb2')]];break;case _0x844e('0xb3'):var _0x4a2d21=moment()[_0x844e('0x57')](_0x844e('0xb4'));_0x5554e2['responsetime']=_0x4a2d21;_0x5554e2[_0x844e('0xb5')]=_0x4a2d21;_0x5554e2[_0x844e('0x73')]=!![];_0x314586[_0x844e('0x29')]+=0x1;logger[_0x844e('0x59')](_0x844e('0xb6'),_0x5554e2['uniqueid'],'\x20Queue',_0x314586[_0x844e('0x26')],_0x844e('0x72'),_0x314586[_0x844e('0x29')]);ami[_0x844e('0x5c')](_0x844e('0xb7'),ut[_0x844e('0xa7')](_0x5554e2,_0x844e('0xb8'),this['campaignsPreview'][_0x5554e2[_0x844e('0x70')]]));if(_0x314586[_0x844e('0xb9')]){ami['emit'](_0x844e('0xba'),ut[_0x844e('0xbb')](_0x5554e2));}break;case'16':ami[_0x844e('0x5c')]('custom:agentcomplete',ut['buildObj'](_0x5554e2,_0x844e('0xbc'),this[_0x844e('0x13')][_0x5554e2['queue']]));emitVoiceQueueChannelRemove(ut[_0x844e('0xa7')](_0x5554e2,_0x844e('0xbc')));_0x314586[_0x844e('0x37')]+=0x1;_0x314586[_0x844e('0x2e')]+=0x1;_0x314586[_0x844e('0x27')]+=0x1;ut[_0x844e('0x7f')](_0x314586,_0x844e('0xbd'));_0x5554e2['countglobal']=ut[_0x844e('0xa4')](_0x5554e2);ut['logCustomer'](_0x5554e2,0x4,_0x844e('0xbe'));rpcDb['createCustomerHistory'](_0x5554e2,_0x844e('0xbf'));rpcDb['createCustomerFinal'](_0x5554e2,_0x844e('0xc0'));rpcDb[_0x844e('0xc1')](_0x5554e2);_0x314586['sumDuration']+=_0x5554e2[_0x844e('0xc2')];_0x314586[_0x844e('0x2a')]+=_0x5554e2[_0x844e('0xc2')];logger[_0x844e('0x59')](_0x844e('0xc3'),_0x5554e2['uniqueid'],_0x844e('0xc4'),_0x314586[_0x844e('0x26')],_0x844e('0x72'),_0x314586[_0x844e('0x29')]);delete this[_0x844e('0x6e')][_0x231136[_0x844e('0xb2')]];break;case _0x844e('0xc5'):_0x314586[_0x844e('0x38')]+=0x1;_0x5554e2[_0x844e('0xc6')]+=0x1;_0x5554e2[_0x844e('0xc7')]=ut['totalGlobal'](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0x5,_0x844e('0xc8'));ami[_0x844e('0x5c')](_0x844e('0xc9'),ut[_0x844e('0xa7')](_0x5554e2,_0x844e('0xca')));rpcDb[_0x844e('0x97')](_0x5554e2,_0x844e('0xcb'));if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,_0x844e('0xcc'));rpcDb[_0x844e('0x9b')](_0x2fe056,_0x844e('0xcd'));}else{if(_0x5554e2[_0x844e('0xc6')]>=_0x314586['dialBusyMaxRetry']){rpcDb[_0x844e('0x9b')](_0x5554e2,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x844e('0xce')](ut[_0x844e('0xae')](_0x5554e2,_0x844e('0xc6'),_0x314586[_0x844e('0xcf')]),_0x5554e2[_0x844e('0xb0')],_0x5554e2['activeContact']);}}break;case _0x844e('0xd0'):_0x314586[_0x844e('0x3c')]+=0x1;_0x5554e2[_0x844e('0xd1')]+=0x1;_0x5554e2['countglobal']=ut['totalGlobal'](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0x3,_0x844e('0xd2'));ami['emit'](_0x844e('0xd3'),ut[_0x844e('0xa7')](_0x5554e2,_0x844e('0xd4')));rpcDb[_0x844e('0x97')](_0x5554e2,_0x844e('0xd5'));if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,_0x844e('0xcc'));rpcDb['createCustomerFinal'](_0x2fe056,_0x844e('0xd6'));}else{if(_0x5554e2['countnoanswerretry']>=_0x314586[_0x844e('0xd7')]){rpcDb[_0x844e('0x9b')](_0x5554e2,_0x844e('0xd5'));}else{rpcDb[_0x844e('0xce')](ut[_0x844e('0xae')](_0x5554e2,'countnoanswerretry',_0x314586[_0x844e('0xd8')]),_0x5554e2[_0x844e('0xb0')],_0x5554e2['activeContact']);}}break;case _0x844e('0xd9'):_0x314586[_0x844e('0x39')]+=0x1;_0x5554e2[_0x844e('0xda')]+=0x1;_0x5554e2[_0x844e('0xc7')]=ut[_0x844e('0xa4')](_0x5554e2);ut['logCustomer'](_0x5554e2,0x8,_0x844e('0xdb'));ami[_0x844e('0x5c')]('custom:agentcongestion',ut['buildObj'](_0x5554e2,'congestion'));rpcDb[_0x844e('0x97')](_0x5554e2,_0x844e('0xdc'));if(ut['totalGlobal'](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,_0x844e('0xcc'));rpcDb[_0x844e('0x9b')](_0x2fe056,_0x844e('0xdd'));}else{if(_0x5554e2['countcongestionretry']>=_0x314586['dialCongestionMaxRetry']){rpcDb['createCustomerFinal'](_0x5554e2,_0x844e('0xdc'));}else{rpcDb[_0x844e('0xce')](ut[_0x844e('0xae')](_0x5554e2,_0x844e('0xda'),_0x314586['dialBusyRetryFrequency']),_0x5554e2['unlockAgent'],_0x5554e2[_0x844e('0xb1')]);}}break;case _0x844e('0xde'):_0x314586[_0x844e('0x40')]+=0x1;_0x5554e2[_0x844e('0xdf')]+=0x1;_0x5554e2[_0x844e('0xc7')]=ut['totalGlobal'](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0x14,_0x844e('0xe0'));ami['emit'](_0x844e('0xe1'),ut['buildObj'](_0x5554e2,_0x844e('0xe2')));rpcDb[_0x844e('0x97')](_0x5554e2,_0x844e('0xe3'));if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0x14,_0x844e('0xe0'));rpcDb[_0x844e('0x9b')](_0x2fe056,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x5554e2[_0x844e('0xdf')]>=_0x314586[_0x844e('0xe4')]){rpcDb[_0x844e('0x9b')](_0x5554e2,_0x844e('0xe5'));}else{rpcDb[_0x844e('0xce')](ut['scheduledAt'](_0x5554e2,_0x844e('0xdf'),_0x314586[_0x844e('0xe6')]),_0x5554e2[_0x844e('0xb0')],_0x5554e2[_0x844e('0xb1')]);}}break;case _0x844e('0xe7'):_0x314586[_0x844e('0x42')]+=0x1;_0x5554e2[_0x844e('0xe8')]+=0x1;_0x5554e2['countglobal']=ut['totalGlobal'](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0xb,_0x844e('0xe9'));rpcDb[_0x844e('0x97')](_0x5554e2,'[callProgressDetectingCustomer][logAbandoned]');if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,_0x844e('0xcc'));rpcDb['createCustomerFinal'](_0x2fe056,_0x844e('0xea'));}else{if(_0x5554e2[_0x844e('0xeb')]>=_0x314586[_0x844e('0xec')]){rpcDb['createCustomerFinal'](_0x5554e2,_0x844e('0xea'));}else{rpcDb[_0x844e('0xce')](ut['scheduledAt'](_0x5554e2,_0x844e('0xe8'),_0x314586[_0x844e('0xed')]),_0x5554e2[_0x844e('0xb0')],_0x5554e2[_0x844e('0xb1')]);}}break;case'18':_0x314586[_0x844e('0x41')]+=0x1;_0x5554e2[_0x844e('0xee')]+=0x1;_0x5554e2['countglobal']=ut[_0x844e('0xa4')](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0x12,_0x231136[_0x844e('0xef')]||_0x231136[_0x844e('0xf0')]);ami[_0x844e('0x5c')](_0x844e('0xf1'),ut['buildObj'](_0x5554e2,_0x844e('0xf2')));rpcDb[_0x844e('0x97')](_0x5554e2,_0x844e('0xf3'));if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,_0x844e('0xcc'));rpcDb['createCustomerFinal'](_0x2fe056,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb['createCustomerFinal'](_0x5554e2,_0x844e('0xf3'));}delete this[_0x844e('0x6e')][_0x231136[_0x844e('0xb2')]];break;case'19':_0x314586[_0x844e('0x41')]+=0x1;_0x5554e2[_0x844e('0xc7')]=ut[_0x844e('0xa4')](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0x13,_0x231136[_0x844e('0xef')]||_0x231136[_0x844e('0xf0')]);ami['emit']('custom:amd',ut[_0x844e('0xa7')](_0x5554e2,'amd'));rpcDb[_0x844e('0x97')](_0x5554e2,'[callProgressDetectingCustomer][machine]');if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,_0x844e('0xcc'));rpcDb[_0x844e('0x9b')](_0x2fe056,_0x844e('0xf4'));}else{rpcDb['createCustomerFinal'](_0x5554e2,'[callProgressDetectingCustomer][machine]');}delete this['actions'][_0x231136[_0x844e('0xb2')]];break;default:if(_0x5554e2[_0x844e('0x73')]){ut[_0x844e('0x7f')](_0x314586,_0x844e('0xf5'));ut['loggerError']('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x314586['name'],_0x231136);}_0x314586[_0x844e('0x41')]+=0x1;_0x5554e2[_0x844e('0xc7')]=ut[_0x844e('0xa4')](_0x5554e2);ut[_0x844e('0x93')](_0x5554e2,0xc,_0x231136[_0x844e('0xef')]||_0x231136[_0x844e('0xf0')]);rpcDb[_0x844e('0x97')](_0x5554e2,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0x844e('0xa4')](_0x5554e2)>=_0x314586[_0x844e('0xa9')]){_0x2fe056=ut[_0x844e('0xaa')](_0x5554e2,0xf,'Global');rpcDb[_0x844e('0x9b')](_0x2fe056,_0x844e('0xf6'));}else{rpcDb[_0x844e('0x9b')](_0x5554e2,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this['actions'][_0x231136[_0x844e('0xb2')]];}if(!(_0x5554e2['dialAnswer']&&_0x361e36==='16')){ut['updateOriginated'](_0x314586,_0x844e('0xf7'));logger[_0x844e('0x59')]('[originated][decrement][callProgressDetectingCustomer]',_0x5554e2[_0x844e('0xf8')],_0x844e('0xc4'),_0x314586[_0x844e('0x26')],'originated:\x20',_0x314586[_0x844e('0x4e')]);}if(_0x361e36!==_0x844e('0xb3')){delete this[_0x844e('0x6e')][_0x231136[_0x844e('0xb2')]];delete this['actions'][_0x231136[_0x844e('0xf9')]];}}};Preview[_0x844e('0xe')][_0x844e('0xfa')]=function(_0x2a4a75,_0x4a8ffe,_0x223fd4){if(_[_0x844e('0xfb')](_0x4a8ffe)&&'object'!==typeof _0x4a8ffe){return;}if(_['isUndefined'](_0x223fd4)&&_0x844e('0xfc')!==typeof _0x223fd4){return;}switch(_0x223fd4[_0x844e('0xfd')]){case'0':ut[_0x844e('0xfe')](_0x2a4a75,0x0,'NoSuchNumber');rpcDb[_0x844e('0xff')](_0x2a4a75,_0x844e('0x100'));break;case'3':ut[_0x844e('0xfe')](_0x2a4a75,0x3,'NoAnswer');rpcDb[_0x844e('0xff')](_0x2a4a75,_0x844e('0x101'));break;case'5':ut['logAgent'](_0x2a4a75,0x5,_0x844e('0xc8'));rpcDb[_0x844e('0xff')](_0x2a4a75,_0x844e('0x102'));break;case'8':ut['logAgent'](_0x2a4a75,0x8,_0x844e('0xdb'));rpcDb[_0x844e('0xff')](_0x2a4a75,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x844e('0xfe')](_0x2a4a75,0x16,_0x844e('0x103'));rpcDb[_0x844e('0xff')](_0x2a4a75,_0x844e('0x104'));break;default:ut['logAgent'](_0x2a4a75,0xc,_0x223fd4[_0x844e('0xfd')]);rpcDb['createAgentHistory'](_0x2a4a75,_0x844e('0x105'));}ut[_0x844e('0x7d')](_0x4a8ffe,_0x844e('0x106'));logger['info'](_0x844e('0x107'),_0x2a4a75['uniqueid'],_0x844e('0xc4'),_0x4a8ffe[_0x844e('0x26')],_0x844e('0x71'),_0x4a8ffe['originated']);delete this[_0x844e('0x6e')][_0x2a4a75[_0x844e('0xf8')]];};Preview[_0x844e('0xe')][_0x844e('0x108')]=function(_0x7587d6,_0x7015d7,_0x20a7ad,_0x8fc499,_0x433aa1){var _0x1fbe98=this;return new BPromise(function(_0x2c9057,_0x370959){if(_[_0x844e('0x6d')](_0x7015d7)||_[_0x844e('0x6d')](_0x7015d7[_0x844e('0x109')])||_[_0x844e('0x6d')](_0x7015d7['Contact'][_0x844e('0x10a')])||_[_0x844e('0x6d')](_0x7015d7[_0x844e('0x76')])){_0x370959(ut['message']('Contact\x20is\x20undefined',_0x8fc499,_0x433aa1));return;}var _0x33aa74=uuid['v4']();var _0x7d6f7f=_0x1fbe98[_0x844e('0x13')][_0x7015d7[_0x844e('0x6f')][_0x844e('0x26')]];var _0x5d4914=_0x20a7ad?_0x1fbe98[_0x844e('0x15')][_0x20a7ad]['id']:undefined;_0x1fbe98[_0x844e('0x6e')][_0x33aa74]=new Action(_0x7015d7,_0x7d6f7f,_0x33aa74,_0x20a7ad,_0x5d4914);var _0x3fa9f7=_0x1fbe98['actions'][_0x33aa74];_0x3fa9f7['unlockAgent']=_0x8fc499;_0x3fa9f7[_0x844e('0xb1')]=_0x433aa1;_0x3fa9f7[_0x844e('0x10b')]=_0x20a7ad;if(_['isEmpty'](_0x7587d6)){_0x1fbe98['execCall'](_0x3fa9f7,_0x7d6f7f,_0x7015d7,_0x20a7ad)[_0x844e('0x88')](function(_0x90bafd){logger[_0x844e('0x59')]('[Preview][execCall][success]',_0x844e('0x10c')+_0x3fa9f7[_0x844e('0x70')]+'\x20IdHopper:\x20'+_0x3fa9f7['idContact'],JSON['stringify'](_0x90bafd));ami['emit']('custom:agentcalled',ut[_0x844e('0xa7')](_0x3fa9f7,_0x844e('0x10d'),_0x1fbe98[_0x844e('0x13')][_0x3fa9f7[_0x844e('0x70')]]));_0x2c9057(ut['message']('Calling'));})[_0x844e('0x7b')](function(_0x4b1a81){ut[_0x844e('0x60')](_0x844e('0x10e'),_0x4b1a81);_0x370959(ut[_0x844e('0x4d')](_0x844e('0x10f'),_0x8fc499,_0x433aa1));});}else{_0x7d6f7f['outboundBlacklistCallsDay']+=0x1;ut['logBlacklist'](_0x3fa9f7);rpcDb[_0x844e('0x110')](_0x3fa9f7,'[Blacklist][error]');delete _0x1fbe98[_0x844e('0x6e')][_0x33aa74];_0x370959(ut['message']('Contact\x20in\x20black\x20List',_0x8fc499,_0x433aa1));}});};Preview[_0x844e('0xe')][_0x844e('0xa0')]=function(_0x47c0fd){return!_[_0x844e('0x6d')](_0x47c0fd)&&!_['isNil'](_0x47c0fd[_0x844e('0x26')])&&!_[_0x844e('0x6d')](_0x47c0fd[_0x844e('0x54')])&&_0x47c0fd[_0x844e('0x54')]&&!_['isNil'](this[_0x844e('0x14')][util[_0x844e('0x57')](_0x844e('0x111'),_0x47c0fd['name'])])&&!_['isNil'](this[_0x844e('0x14')][util[_0x844e('0x57')](_0x844e('0x111'),_0x47c0fd[_0x844e('0x26')])][_0x844e('0x79')])&&(this[_0x844e('0x14')][util[_0x844e('0x57')](_0x844e('0x111'),_0x47c0fd[_0x844e('0x26')])]['status']===_0x844e('0x112')||this['trunks'][util[_0x844e('0x57')](_0x844e('0x111'),_0x47c0fd['name'])][_0x844e('0x79')]===_0x844e('0x113'));};Preview[_0x844e('0xe')][_0x844e('0x8f')]=function(_0x5d5d3e,_0x5282f1){var _0x1af6af=this;return new BPromise(function(_0x379908,_0x5dbabe){_0x1af6af[_0x844e('0x114')](_0x5d5d3e,_0x5282f1)[_0x844e('0x88')](function(_0x56ddb8){_0x379908(_[_0x844e('0x74')](_0x56ddb8,[_0x844e('0x4d')]));})['catch'](function(_0x5c386c){if(_0x5c386c[_0x844e('0x115')]){rpcDb[_0x844e('0x116')](_0x5d5d3e);}if(_0x5c386c[_0x844e('0x54')]){rpcDb[_0x844e('0x117')](_0x5d5d3e);}_0x5dbabe(_['pick'](_0x5c386c,[_0x844e('0x4d')]));});});};Preview[_0x844e('0xe')][_0x844e('0x114')]=function(_0x981713,_0xe930df){var _0x583c31=this;return new BPromise(function(_0x5a3db3,_0x4f00cb){var _0x2354a4,_0x1156a1;rpcDb['getContactPreview'](_0x981713)[_0x844e('0x88')](function(_0x149434){if(!_[_0x844e('0x6d')](_0x149434[0x0])){_0x1156a1=_0x149434[0x0]['recallme']?![]:!![];_0x2354a4=_0x149434[0x0][_0x844e('0x118')]?!![]:![];_0x2354a4=_0xe930df?!![]:_0x2354a4;}var _0x2378fb=_0x583c31[_0x844e('0x119')](_0x149434);if(_0x2378fb[_0x844e('0x11a')]){rpcDb[_0x844e('0x11b')](_[_0x844e('0x74')](_0x149434[0x0],['VoiceQueueId',_0x844e('0x11c')]))[_0x844e('0x88')](function(_0x385b2b){_0x583c31[_0x844e('0x108')](_0x385b2b,_0x149434[0x0],_0xe930df,_0x1156a1,_0x2354a4)[_0x844e('0x88')](function(_0x114bbc){_0x5a3db3(_0x114bbc);})[_0x844e('0x7b')](function(_0x18ddb5){_0x4f00cb(_0x18ddb5);});})[_0x844e('0x7b')](function(_0x3d4cde){ut[_0x844e('0x60')](_0x844e('0x11d'),_0x3d4cde);_0x4f00cb(ut[_0x844e('0x4d')](_0x844e('0x11e'),_0x1156a1,_0x2354a4));});}else{_0x4f00cb(ut['message'](_0x2378fb[_0x844e('0x4d')],_0x1156a1,_0x2354a4));}})[_0x844e('0x7b')](function(_0x30df30){ut[_0x844e('0x60')](_0x844e('0x11f'),_0x30df30);_0x4f00cb(ut[_0x844e('0x4d')](_0x844e('0x11e'),![],!![]));});});};Preview[_0x844e('0xe')][_0x844e('0x119')]=function(_0x18eb12){if(_['isNil'](_0x18eb12)||_[_0x844e('0x120')](_0x18eb12)||!_['isNil'](_0x18eb12[0x0][_0x844e('0x8d')])&&_[_0x844e('0x6d')](_0x18eb12[0x0][_0x844e('0x8d')][_0x844e('0x26')])){ut[_0x844e('0x60')](_0x844e('0x121'),_0x18eb12);return{'isValid':![],'message':_0x844e('0x122')};}var _0xe35689=this[_0x844e('0x13')][_0x18eb12[0x0][_0x844e('0x6f')]['name']];_0xe35689[_0x844e('0x4d')]='ACTIVE';if(_['isNil'](_0xe35689)){ut[_0x844e('0x60')]('[Preview][validateContact][Empty\x20Campaign]',_0xe35689);return{'isValid':![],'message':_0x844e('0x123')};}if(!this['isTrunkReachable'](_0xe35689[_0x844e('0x53')])){ut['logger'](_0x844e('0x124'),'campaign\x20Name:\x20'+_0xe35689[_0x844e('0x26')]+_0x844e('0x125'));if(!this['isTrunkReachable'](_0xe35689[_0x844e('0xa1')])){ut[_0x844e('0x60')](_0x844e('0x124'),_0xe35689['name']+_0x844e('0x126'));return{'isValid':![],'message':_0x844e('0x127')};}}if(!ut[_0x844e('0x128')](_0xe35689[_0x844e('0x33')])){ut[_0x844e('0x60')]('[Preview][validateContact][Campaign\x20Active]',_0xe35689['name']+_0x844e('0x129'));return{'isValid':![],'message':_0x844e('0x12a')+_0xe35689[_0x844e('0x26')]+_0x844e('0x129')};}return{'isValid':!![],'message':_0x844e('0x12b')};};Preview[_0x844e('0xe')][_0x844e('0x12c')]=function(_0x10c8ad,_0x44ad39,_0x1c12ba,_0x394fb3){var _0x14c263=this;return new BPromise(function(_0x197e23,_0x4b9edc){var _0x49ef0b=_0x10c8ad[_0x844e('0xf8')];var _0x523daa=_0x14c263[_0x844e('0xa0')](_0x44ad39['Trunk'])?util[_0x844e('0x57')]('SIP/%s/%s%s',_0x44ad39[_0x844e('0x53')][_0x844e('0x26')],_[_0x844e('0x6d')](_0x44ad39[_0x844e('0x35')])?'':_0x44ad39['dialPrefix'][_0x844e('0x12d')]()||'',_0x44ad39[_0x844e('0x12e')]>0x0?_0x1c12ba[_0x844e('0x109')][_0x844e('0x10a')][_0x844e('0x12f')](_0x44ad39[_0x844e('0x12e')]):_0x1c12ba[_0x844e('0x109')][_0x844e('0x10a')]):util[_0x844e('0x57')](_0x844e('0x130'),_[_0x844e('0x6d')](_0x44ad39[_0x844e('0xa1')])?_0x44ad39[_0x844e('0x53')][_0x844e('0x26')]:_0x44ad39[_0x844e('0xa1')]['name'],_[_0x844e('0x6d')](_0x44ad39[_0x844e('0x35')])?'':_0x44ad39[_0x844e('0x35')][_0x844e('0x12d')]()||'',_0x44ad39[_0x844e('0x12e')]>0x0?_0x1c12ba[_0x844e('0x109')][_0x844e('0x10a')]['substring'](_0x44ad39[_0x844e('0x12e')]):_0x1c12ba[_0x844e('0x109')][_0x844e('0x10a')]);var _0x49a8a0=_0x14c263[_0x844e('0xa0')](_0x44ad39[_0x844e('0x53')])?ut[_0x844e('0x131')](_0x44ad39[_0x844e('0x53')]['callerid'],_0x44ad39[_0x844e('0x34')],_0x44ad39[_0x844e('0x132')]>0x0?ut[_0x844e('0x133')](_0x44ad39[_0x844e('0x134')],_0x44ad39['dialRandomLastDigitCallerIdNumber']):_0x44ad39[_0x844e('0x134')]):ut['getCallerId'](_[_0x844e('0x6d')](_0x44ad39[_0x844e('0xa1')])?_0x44ad39['Trunk'][_0x844e('0x135')]:_0x44ad39[_0x844e('0xa1')][_0x844e('0x135')],_0x44ad39['dialOriginateCallerIdName'],_0x44ad39[_0x844e('0x132')]>0x0?ut[_0x844e('0x133')](_0x44ad39['dialOriginateCallerIdNumber'],_0x44ad39[_0x844e('0x132')]):_0x44ad39[_0x844e('0x134')]);if(_0x49a8a0){_0x10c8ad[_0x844e('0x136')]=ut[_0x844e('0x137')](_0x49a8a0);_0x10c8ad[_0x844e('0x138')]=ut[_0x844e('0x139')](_0x49a8a0);}var _0xca5268=ut['addVariables'](_0x44ad39,_0x1c12ba,_0x523daa,_0x49a8a0,_0x49ef0b,_0x10c8ad);_[_0x844e('0x13a')](_0x10c8ad,ut[_0x844e('0x13b')](_0xca5268));_0x10c8ad[_0x844e('0x92')]=moment()[_0x844e('0x57')](_0x844e('0xb4'));ami[_0x844e('0x78')](ut['variablesAction'](_0x10c8ad,_0x44ad39,_0xca5268,_0x10c8ad[_0x844e('0xb1')],_0x394fb3))[_0x844e('0x88')](function(_0x28e6ec){_0x44ad39[_0x844e('0x4e')]+=0x1;logger[_0x844e('0x59')](_0x844e('0x13c'),_0x49ef0b,'\x20Queue',_0x44ad39['name'],'originated:\x20',_0x44ad39[_0x844e('0x4e')]);_0x197e23(_0x28e6ec);})[_0x844e('0x7b')](function(_0x214649){ut[_0x844e('0xfe')](_0x10c8ad,0xe,_0x844e('0x13d'));rpcDb[_0x844e('0xff')](_0x10c8ad,_0x844e('0x13e'));_0x4b9edc(_0x214649);});});};Preview[_0x844e('0xe')][_0x844e('0x1e')]=function(_0x466f00){if(this[_0x844e('0x6e')][_0x466f00['linkedid']]){this['actions'][_0x466f00['linkedid']][_0x844e('0x7a')]=_0x466f00[_0x844e('0x7a')];}};Preview['prototype'][_0x844e('0x17')]=function(_0x575bc8){var _0x3a9ee7=this;var _0xde7713=this['actions'][_0x575bc8['actionid']];if(_0xde7713){if(_0xde7713[_0x844e('0x10b')]&&this[_0x844e('0x15')][_0xde7713[_0x844e('0x10b')]]){ut['logLookAgent'](_0xde7713,this[_0x844e('0x15')][_0xde7713[_0x844e('0x10b')]][_0x844e('0x26')],this['agents'][_0xde7713[_0x844e('0x10b')]]['id']);}var _0x38eeb7=_['clone'](_0xde7713);_0x38eeb7['responsetime']=moment()[_0x844e('0x57')](_0x844e('0xb4'));var _0x4e5b88=_0x3a9ee7[_0x844e('0x13')][_0xde7713[_0x844e('0x70')]];if(ut['isFailure'](_0x575bc8[_0x844e('0x13f')])){if(_0xde7713['unlockAgent']){rpcDb['unlockContact'](_0xde7713['idContact']);}if(_0xde7713['activeContact']){rpcDb['disableContact'](_0xde7713['idContact']);}ami['emit'](_0x844e('0x140'),ut[_0x844e('0xa7')](_0xde7713,_0x844e('0x141'),this[_0x844e('0x13')][_0xde7713[_0x844e('0x70')]]));this[_0x844e('0xfa')](_0x38eeb7,_0x4e5b88,_0x575bc8);}else{_0xde7713[_0x844e('0x92')]=moment()[_0x844e('0x57')](_0x844e('0xb4'));ut[_0x844e('0xfe')](_0x38eeb7,0x4,_0x844e('0xbe'));rpcDb['createAgentHistory'](_0x38eeb7,_0x844e('0x142'));}}};Preview[_0x844e('0xe')][_0x844e('0x19')]=function(_0x4e80a3){var _0x591b89=this;var _0x1ddcd0=this[_0x844e('0x6e')][_0x4e80a3[_0x844e('0xb2')]];var _0x52e045;if(_0x1ddcd0){_0x52e045=this['campaignsPreview'][_0x1ddcd0[_0x844e('0x70')]];logger[_0x844e('0x59')](_0x844e('0x143'),_0x4e80a3[_0x844e('0xb2')],_0x844e('0xc4'),_0x52e045['name'],_0x844e('0x72'),_0x52e045[_0x844e('0x29')]);}if(this[_0x844e('0x6e')][_0x4e80a3[_0x844e('0xb2')]]&&_0x4e80a3[_0x844e('0xb2')]!==_0x4e80a3[_0x844e('0xf8')]){if(_0x4e80a3[_0x844e('0x144')]==='16'&&this[_0x844e('0x6e')][_0x4e80a3['linkedid']][_0x844e('0x73')]){this[_0x844e('0xa3')](_0x4e80a3,_0x4e80a3[_0x844e('0xb2')],_0x4e80a3[_0x844e('0x144')]);}else if(this['actions'][_0x4e80a3[_0x844e('0xb2')]][_0x844e('0x73')]){logger['info']('[syncHangup][talking][cause]',_0x4e80a3[_0x844e('0xb2')],_0x4e80a3[_0x844e('0x144')],_0x844e('0xc4'),_0x52e045[_0x844e('0x26')],_0x844e('0x72'),_0x52e045[_0x844e('0x29')]);this[_0x844e('0xa3')](_0x4e80a3,_0x4e80a3['linkedid'],_0x4e80a3[_0x844e('0x144')]);}}else if(_0x1ddcd0&&_[_0x844e('0x6d')](_0x1ddcd0[_0x844e('0x145')])&&_0x52e045[_0x844e('0x146')]&&_0x4e80a3[_0x844e('0xb2')]===_0x4e80a3[_0x844e('0xf8')]&&_[_0x844e('0x6d')](_0x4e80a3[_0x844e('0xfd')])&&_0x4e80a3[_0x844e('0x144')]==='16'&&_0x4e80a3['channelstate']==='6'&&_[_0x844e('0xfb')](_0x1ddcd0[_0x844e('0x147')])){if(_0x1ddcd0[_0x844e('0xb0')]){rpcDb[_0x844e('0x116')](_0x1ddcd0[_0x844e('0x148')]);}if(_0x1ddcd0[_0x844e('0xb1')]){rpcDb[_0x844e('0x117')](_0x1ddcd0[_0x844e('0x148')]);}_0x4e80a3[_0x844e('0xfd')]='22';this['callProgressDetectingAgent'](_0x1ddcd0,_0x52e045,_0x4e80a3);}else if(_0x1ddcd0&&_0x1ddcd0['transfer']){if(_0x4e80a3['cause']==='16'&&this[_0x844e('0x6e')][_0x4e80a3[_0x844e('0xb2')]][_0x844e('0x73')]){logger[_0x844e('0x59')]('[syncHangup][talking][transfer]',_0x4e80a3[_0x844e('0xb2')],_0x4e80a3[_0x844e('0x144')],_0x844e('0xc4'),_0x52e045[_0x844e('0x26')],'pTalking:\x20',_0x52e045[_0x844e('0x29')]);this[_0x844e('0xa3')](_0x4e80a3,_0x4e80a3[_0x844e('0xb2')],_0x4e80a3[_0x844e('0x144')]);}else if(this[_0x844e('0x6e')][_0x4e80a3[_0x844e('0xb2')]][_0x844e('0x73')]){logger[_0x844e('0x59')](_0x844e('0x149'),_0x4e80a3['linkedid'],_0x4e80a3[_0x844e('0x144')],_0x844e('0xc4'),_0x52e045[_0x844e('0x26')],_0x844e('0x72'),_0x52e045[_0x844e('0x29')]);this[_0x844e('0xa3')](_0x4e80a3,_0x4e80a3['linkedid'],_0x4e80a3[_0x844e('0x144')]);}}};Preview[_0x844e('0xe')][_0x844e('0x1d')]=function(_0x1f26b2){if(this[_0x844e('0x6e')][_0x1f26b2['destlinkedid']]&&_0x1f26b2[_0x844e('0xf9')]!==_0x1f26b2[_0x844e('0x14a')]){this[_0x844e('0xa3')](_0x1f26b2,_0x1f26b2[_0x844e('0xf9')],_0x1f26b2[_0x844e('0xf0')]);}};Preview[_0x844e('0xe')]['syncHangupRequest']=function(_0x4f2299){if(this['actions'][_0x4f2299[_0x844e('0xb2')]]&&_0x4f2299[_0x844e('0xb2')]!==_0x4f2299['uniqueid']&&!this[_0x844e('0x6e')][_0x4f2299[_0x844e('0xb2')]][_0x844e('0x73')]){if(_0x4f2299['cause']==='1'){this[_0x844e('0xa3')](_0x4f2299,_0x4f2299[_0x844e('0xb2')],_0x4f2299[_0x844e('0x144')]);}}};Preview[_0x844e('0xe')][_0x844e('0x14b')]=function(_0x505914,_0x32686c,_0x9a66c8){if(this['actions'][_0x505914]){if(_[_0x844e('0x6d')](this[_0x844e('0x6e')][_0x505914]['variables'])){this[_0x844e('0x6e')][_0x505914][_0x844e('0x14c')]={};}this['actions'][_0x505914][_0x844e('0x14c')][_0x32686c]=_0x9a66c8;}};Preview[_0x844e('0xe')][_0x844e('0x14d')]=function(_0x27ec2c){try{if(!_[_0x844e('0x6d')](_0x27ec2c)){if(ut[_0x844e('0x14e')](_[_0x844e('0x14f')](_0x27ec2c[_0x844e('0x150')])[0x0])){this[_0x844e('0x14b')](_0x27ec2c[_0x844e('0xf8')],_[_0x844e('0x14f')](_0x27ec2c[_0x844e('0x150')])[0x0],_0x27ec2c[_0x844e('0x151')]);}}}catch(_0x159026){logger['error'](_0x844e('0x152'),util[_0x844e('0x153')](_0x159026,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0x844e('0x20')]=function(_0x147937){if(_0x147937){if(this[_0x844e('0x6e')][_0x147937[_0x844e('0x154')]]){this[_0x844e('0x6e')][_0x147937[_0x844e('0x154')]]['transfer']=!![];}}};Preview[_0x844e('0xe')]['syncBlindTransfer']=function(_0x7a4e66){if(_0x7a4e66){if(this[_0x844e('0x6e')][_0x7a4e66[_0x844e('0x155')]]){this[_0x844e('0x6e')][_0x7a4e66[_0x844e('0x155')]][_0x844e('0x147')]=!![];}}};module[_0x844e('0x156')]=Preview;
\ No newline at end of file
index 7c33378..f4a0e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x424e=['queuecallerexitreason','create','[voiceQueueReport]\x20','getContactRecallMe','rescheduleContactInQueue','bluebird','../../../config/logger','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','createHistory','catch','then','[createHistory]\x20','moveContactManagedDialer','checkIsBlackList','getContactPreview','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','endtime','connectedlinename','membername','from-sip','exten','xcally-motion-preview','lastAssignedTo'];(function(_0x52a609,_0x3b4deb){var _0xd6bbca=function(_0x187e57){while(--_0x187e57){_0x52a609['push'](_0x52a609['shift']());}};_0xd6bbca(++_0x3b4deb);}(_0x424e,0x163));var _0xe424=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0x424e[_0x45bf86];return _0x1f02b7;};'use strict';var util=require('util');var BPromise=require(_0xe424('0x0'));var logger=require(_0xe424('0x1'))('preview');var _=require(_0xe424('0x2'));var cmHopper=require(_0xe424('0x3'));var cmHopperFinal=require(_0xe424('0x4'));var cmHopperHistory=require(_0xe424('0x5'));var cmHopperBlack=require(_0xe424('0x6'));var voiceQueueRt=require(_0xe424('0x7'));var agentReportPreview=require(_0xe424('0x8'));var voiceQueueReport=require(_0xe424('0x9'));function loggerCatch(_0x8c25a6){return function(_0x10bf5b){logger['error'](_0x8c25a6,util[_0xe424('0xa')](_0x10bf5b,{'showHidden':![],'depth':null}));};}function create(_0x4d3571){return BPromise[_0xe424('0xb')]()['then'](cmHopperHistory[_0xe424('0xc')](_0x4d3571))[_0xe424('0xd')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x3cc2c5){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](agentReportPreview[_0xe424('0xc')](_0x3cc2c5))[_0xe424('0xd')](loggerCatch(_0xe424('0xf')));}function moveContact(_0x4c0e07){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](cmHopper[_0xe424('0x10')](_0x4c0e07,!![]))[_0xe424('0xd')](loggerCatch('[moveContactManagedDialer]\x20'));}exports['checkIsBlackList']=function(_0xb74b38){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](cmHopperBlack[_0xe424('0x11')](_0xb74b38))[_0xe424('0xd')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0xe424('0x12')]=function(_0xf0496e){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](cmHopper[_0xe424('0x12')](_0xf0496e))[_0xe424('0xd')](loggerCatch('[getContactPreview]\x20'));};exports[_0xe424('0xc')]=function(_0x33d296,_0x2c7e6a){create(_0x33d296)[_0xe424('0xd')](loggerCatch(_0x2c7e6a));moveContact(_0x33d296)[_0xe424('0xd')](loggerCatch(_0x2c7e6a));};exports['createAgentHistory']=function(_0x22e3e7,_0x5435d7){createAgent(_0x22e3e7)[_0xe424('0xd')](loggerCatch(_0x5435d7));};exports[_0xe424('0x13')]=function(_0x1c0699,_0x463d40){create(_0x1c0699)[_0xe424('0xd')](loggerCatch(_0x463d40));};exports[_0xe424('0x14')]=function(_0x30c3a8,_0x175ec0){moveContact(_0x30c3a8)[_0xe424('0xd')](loggerCatch(_0x175ec0));};exports[_0xe424('0x15')]=function(_0x118253,_0x180283,_0x1e42a7){if(_0x180283){_0x118253[_0xe424('0x16')]=null;}if(_0x1e42a7){_0x118253[_0xe424('0x17')]=![];}return BPromise[_0xe424('0xb')]()['then'](cmHopper[_0xe424('0x15')](_0x118253))[_0xe424('0xd')](loggerCatch(_0xe424('0x18')));};exports[_0xe424('0x19')]=function(_0xa274c0){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](cmHopper['countReScheduled'](_0xa274c0))['catch'](loggerCatch(_0xe424('0x1a')));};exports[_0xe424('0x1b')]=function(_0x75827a){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](cmHopper[_0xe424('0x1b')]({'UserId':null},_0x75827a,0x1))['catch'](loggerCatch('[unlockContact]\x20'));};exports[_0xe424('0x1c')]=function(_0x5229cf){return BPromise[_0xe424('0xb')]()[_0xe424('0xe')](cmHopper['unlockContact']({'active':![]},_0x5229cf,0x1))[_0xe424('0xd')](loggerCatch(_0xe424('0x1d')));};exports[_0xe424('0x1e')]=function(_0xee97e0){var _0x23f7e6={};_0x23f7e6['type']=_0xee97e0['type'];_0x23f7e6['uniqueid']=_0xee97e0[_0xe424('0x1f')];_0x23f7e6[_0xe424('0x20')]=_0xee97e0[_0xe424('0x20')];_0x23f7e6[_0xe424('0x21')]=_0xee97e0[_0xe424('0x21')];_0x23f7e6[_0xe424('0x22')]=_0xee97e0[_0xe424('0x22')];_0x23f7e6[_0xe424('0x23')]=_0xee97e0[_0xe424('0x24')];_0x23f7e6['queuecallerleaveAt']=_0xee97e0[_0xe424('0x24')];_0x23f7e6[_0xe424('0x25')]=0x1;_0x23f7e6['queuecallercompleteAt']=_0xee97e0[_0xe424('0x26')];_0x23f7e6[_0xe424('0x27')]=_0xee97e0[_0xe424('0x28')];_0x23f7e6['context']=_0xe424('0x29');_0x23f7e6[_0xe424('0x2a')]=_0xe424('0x2b');_0x23f7e6['holdtime']=0x0;_0x23f7e6['assigned']=0x1;_0x23f7e6[_0xe424('0x2c')]=_0xee97e0[_0xe424('0x28')];_0x23f7e6[_0xe424('0x2d')]='COMPLETED';return BPromise['resolve']()[_0xe424('0xe')](voiceQueueReport[_0xe424('0x2e')](_0x23f7e6))['catch'](loggerCatch(_0xe424('0x2f')));};exports[_0xe424('0x30')]=function(_0x32497b,_0x5a0969){return BPromise['resolve']()[_0xe424('0xe')](cmHopper[_0xe424('0x30')](_0x32497b,_0x5a0969))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0xe424('0x31')]=function(_0x7ee48e){return BPromise[_0xe424('0xb')]()['then'](cmHopper[_0xe424('0x15')](_0x7ee48e,!![],!![]))['catch'](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0xb957=['preview','lodash','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','createHistory','catch','[createHistory]\x20','then','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','active','rescheduleContact','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','queue','answertime','endtime','connectedlinename','context','from-sip','exten','xcally-motion-preview','assigned','membername','queuecallerexitreason','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','[rescheduleContactInQueue]\x20','bluebird','../../../config/logger'];(function(_0x3a711b,_0x329e6a){var _0x320d58=function(_0x315b53){while(--_0x315b53){_0x3a711b['push'](_0x3a711b['shift']());}};_0x320d58(++_0x329e6a);}(_0xb957,0x102));var _0x7b95=function(_0x544953,_0x410833){_0x544953=_0x544953-0x0;var _0x188442=_0xb957[_0x544953];return _0x188442;};'use strict';var util=require('util');var BPromise=require(_0x7b95('0x0'));var logger=require(_0x7b95('0x1'))(_0x7b95('0x2'));var _=require(_0x7b95('0x3'));var cmHopper=require(_0x7b95('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0x7b95('0x5'));var cmHopperBlack=require(_0x7b95('0x6'));var voiceQueueRt=require(_0x7b95('0x7'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x7b95('0x8'));function loggerCatch(_0x3aa6d7){return function(_0x305e91){logger[_0x7b95('0x9')](_0x3aa6d7,util[_0x7b95('0xa')](_0x305e91,{'showHidden':![],'depth':null}));};}function create(_0x5a3549){return BPromise[_0x7b95('0xb')]()['then'](cmHopperHistory[_0x7b95('0xc')](_0x5a3549))[_0x7b95('0xd')](loggerCatch(_0x7b95('0xe')));}function createAgent(_0x48cc63){return BPromise[_0x7b95('0xb')]()[_0x7b95('0xf')](agentReportPreview[_0x7b95('0xc')](_0x48cc63))['catch'](loggerCatch('[createHistory]\x20'));}function moveContact(_0x8b0849){return BPromise[_0x7b95('0xb')]()[_0x7b95('0xf')](cmHopper[_0x7b95('0x10')](_0x8b0849,!![]))['catch'](loggerCatch(_0x7b95('0x11')));}exports[_0x7b95('0x12')]=function(_0x1b3099){return BPromise['resolve']()[_0x7b95('0xf')](cmHopperBlack['checkIsBlackList'](_0x1b3099))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x13')));};exports[_0x7b95('0x14')]=function(_0x4ff022){return BPromise[_0x7b95('0xb')]()[_0x7b95('0xf')](cmHopper[_0x7b95('0x14')](_0x4ff022))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x15')));};exports[_0x7b95('0xc')]=function(_0x2f714e,_0x59c2b5){create(_0x2f714e)[_0x7b95('0xd')](loggerCatch(_0x59c2b5));moveContact(_0x2f714e)[_0x7b95('0xd')](loggerCatch(_0x59c2b5));};exports[_0x7b95('0x16')]=function(_0x4b4778,_0x2ab9c9){createAgent(_0x4b4778)[_0x7b95('0xd')](loggerCatch(_0x2ab9c9));};exports[_0x7b95('0x17')]=function(_0x1b9aeb,_0x4aa42c){create(_0x1b9aeb)['catch'](loggerCatch(_0x4aa42c));};exports[_0x7b95('0x18')]=function(_0x10ff4c,_0x218b3f){moveContact(_0x10ff4c)[_0x7b95('0xd')](loggerCatch(_0x218b3f));};exports['rescheduleContact']=function(_0x5c58ce,_0x3feb45,_0x43c8dc){if(_0x3feb45){_0x5c58ce['UserId']=null;}if(_0x43c8dc){_0x5c58ce[_0x7b95('0x19')]=![];}return BPromise[_0x7b95('0xb')]()['then'](cmHopper[_0x7b95('0x1a')](_0x5c58ce))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x1b')));};exports[_0x7b95('0x1c')]=function(_0x3b507f){return BPromise[_0x7b95('0xb')]()['then'](cmHopper[_0x7b95('0x1c')](_0x3b507f))['catch'](loggerCatch('[countReScheduled]\x20'));};exports[_0x7b95('0x1d')]=function(_0x4a6899){return BPromise[_0x7b95('0xb')]()[_0x7b95('0xf')](cmHopper[_0x7b95('0x1d')]({'UserId':null},_0x4a6899,0x1))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x1e')));};exports[_0x7b95('0x1f')]=function(_0x197178){return BPromise[_0x7b95('0xb')]()['then'](cmHopper[_0x7b95('0x1d')]({'active':![]},_0x197178,0x1))['catch'](loggerCatch(_0x7b95('0x20')));};exports['crateCustomerReportQueue']=function(_0x36bd81){var _0x5c0883={};_0x5c0883[_0x7b95('0x21')]=_0x36bd81[_0x7b95('0x21')];_0x5c0883[_0x7b95('0x22')]=_0x36bd81[_0x7b95('0x22')];_0x5c0883[_0x7b95('0x23')]=_0x36bd81[_0x7b95('0x23')];_0x5c0883['calleridname']=_0x36bd81['calleridname'];_0x5c0883[_0x7b95('0x24')]=_0x36bd81[_0x7b95('0x24')];_0x5c0883['queuecallerjoinAt']=_0x36bd81[_0x7b95('0x25')];_0x5c0883['queuecallerleaveAt']=_0x36bd81['answertime'];_0x5c0883['queuecallercomplete']=0x1;_0x5c0883['queuecallercompleteAt']=_0x36bd81[_0x7b95('0x26')];_0x5c0883[_0x7b95('0x27')]=_0x36bd81['membername'];_0x5c0883[_0x7b95('0x28')]=_0x7b95('0x29');_0x5c0883[_0x7b95('0x2a')]=_0x7b95('0x2b');_0x5c0883['holdtime']=0x0;_0x5c0883[_0x7b95('0x2c')]=0x1;_0x5c0883['lastAssignedTo']=_0x36bd81[_0x7b95('0x2d')];_0x5c0883[_0x7b95('0x2e')]='COMPLETED';return BPromise['resolve']()[_0x7b95('0xf')](voiceQueueReport[_0x7b95('0x2f')](_0x5c0883))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x30')));};exports['getContactRecallMe']=function(_0x133dcc,_0x280d32){return BPromise['resolve']()[_0x7b95('0xf')](cmHopper[_0x7b95('0x31')](_0x133dcc,_0x280d32))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x32')));};exports['rescheduleContactInQueue']=function(_0x4f70b6){return BPromise[_0x7b95('0xb')]()['then'](cmHopper['rescheduleContact'](_0x4f70b6,!![],!![]))[_0x7b95('0xd')](loggerCatch(_0x7b95('0x33')));};
\ No newline at end of file
index 64f92b8..4ef9a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010d=['voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','reachable','push','getDiff','createBody','ListId','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','membername','callback','callbackuniqueid','callbackat','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosjitter','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','util','lodash','moment','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','inspect','logger','info','loggerError','error','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','isNil','Queue','name','calleridnum','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','Contact','XMD-','toUpper','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','state','statedesc','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','logLookAgent','UserId','logCustomer','answertime','isFailure','Failure','variablesAction','RECALL','calleridname','BOOKED','originate','channelAgent','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','clone','scheduledAt','active','scheduledat','add','minutes','ContactId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','lastevent','queue','interface','motionChannel'];(function(_0x5bcc90,_0x2e22ac){var _0x156df0=function(_0x42bbb1){while(--_0x42bbb1){_0x5bcc90['push'](_0x5bcc90['shift']());}};_0x156df0(++_0x2e22ac);}(_0x010d,0xbe));var _0xd010=function(_0x5e2ac7,_0x45265d){_0x5e2ac7=_0x5e2ac7-0x0;var _0x4fb946=_0x010d[_0x5e2ac7];return _0x4fb946;};'use strict';var util=require(_0xd010('0x0'));var _=require(_0xd010('0x1'));var moment=require(_0xd010('0x2'));var logger=require('../../../../config/logger')(_0xd010('0x3'));var ipAgi=process[_0xd010('0x4')][_0xd010('0x5')]||_0xd010('0x6');function getSeconds(_0x31b34d,_0x3c86e0){var _0x69edbf=moment(_0x31b34d)[_0xd010('0x7')](0x0);var _0x13e35f=moment(_0x3c86e0)[_0xd010('0x7')](0x0);return _0x69edbf[_0xd010('0x8')](_0x13e35f,_0xd010('0x9'));}exports['loggerCatch']=function(_0x5a07d9){return function(_0x525fad){logger['error'](_0x5a07d9,util[_0xd010('0xa')](_0x525fad,{'showHidden':![],'depth':null}));};};exports[_0xd010('0xb')]=function(_0x5f17ad,_0x2181e8){logger[_0xd010('0xc')](_0x5f17ad,util[_0xd010('0xa')](_0x2181e8,{'showHidden':![],'depth':null}));};exports[_0xd010('0xd')]=function(_0x3e5658,_0x35b45b){logger[_0xd010('0xe')](_0x3e5658,util['inspect'](_0x35b45b,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x5940c1){return function(_0x39e6cc){logger[_0xd010('0xc')](_0x5940c1,util[_0xd010('0xa')](_0x39e6cc,{'showHidden':![],'depth':null}));};};exports[_0xd010('0xf')]=function(_0x5aa0dd,_0x54f50b,_0x245d24){return{'message':_0x5aa0dd,'unlock':_0x54f50b,'active':_0x245d24};};exports[_0xd010('0x10')]=function(_0x75d0,_0x2f60b6,_0x2ef0b0){if(!_[_0xd010('0x11')](_0x2ef0b0)&&_0xd010('0x12')===typeof _0x2ef0b0&&!_[_0xd010('0x13')](_0x2ef0b0)){if(!_[_0xd010('0x11')](_0x2f60b6)&&_0xd010('0x12')===typeof _0x2f60b6&&!_[_0xd010('0x13')](_0x2f60b6)){return util['format'](_0xd010('0x14'),_0x2f60b6,_0x2ef0b0);}return util[_0xd010('0x15')]('\x22%s\x22\x20<%s>',_0x2ef0b0,_0x2ef0b0);}if(!_[_0xd010('0x11')](_0x75d0)&&'string'===typeof _0x75d0&&!_[_0xd010('0x13')](_0x75d0)){return _0x75d0;}return _0xd010('0x16');};exports[_0xd010('0x17')]=function(_0x3348af){if(_[_0xd010('0x18')](_0x3348af)){return![];}return _0x3348af;};exports['addVariables']=function(_0x25e428,_0x10a761,_0x5328e0,_0x434ad2,_0xeea0ba,_0x38e173){var _0xf7628f={'XMD-QUEUE':_0x10a761[_0xd010('0x19')]?_0x10a761[_0xd010('0x19')][_0xd010('0x1a')]:'','XMD-CALLERID':_0x434ad2,'XMD-CALLERID-PREVIEW':_0x38e173?util[_0xd010('0x15')](_0xd010('0x14'),_0x38e173['calleridname'],_0x38e173[_0xd010('0x1b')]):_0x434ad2,'XMD-DIALID':_0xeea0ba,'XMD-CONTACTID':_0x10a761['ContactId'],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x434ad2,'XMD-VOICEQUEUEID':_0x10a761[_0xd010('0x1c')],'XMD-DIALCHANNEL':_0x5328e0,'XMD-DIALTIMEOUT':_0x25e428[_0xd010('0x1d')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0xd010('0x1e'),_0x25e428[_0xd010('0x1f')]?'g':'',_[_0xd010('0x13')](_0x25e428[_0xd010('0x20')])?'':_0xd010('0x21')),'XMD-DIALURL':_0x25e428[_0xd010('0x22')]||'','XMD-AGI':_0x25e428[_0xd010('0x23')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x25e428[_0xd010('0x23')]):_0xd010('0x24'),'XMD-AGIAFTER':_0x25e428[_0xd010('0x1f')]?util['format'](_0xd010('0x25'),ipAgi,_0x25e428[_0xd010('0x1f')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x38e173?_0x38e173['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x38e173?_0x38e173[_0xd010('0x26')]:'','XMD-DESTINATION':_0xd010('0x27'),'SIPADDHEADER':_0xd010('0x28')};if(!_['isEmpty'](_0x25e428[_0xd010('0x20')])){_0xf7628f[util[_0xd010('0x15')]('%s',_0xd010('0x29'))]=_0x25e428[_0xd010('0x20')];_0xf7628f[util['format']('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0xeea0ba;}if(_0x10a761&&_0x10a761['Contact']){for(var _0x4f79cf in _0x10a761[_0xd010('0x2a')]){if(_0x10a761[_0xd010('0x2a')]['hasOwnProperty'](_0x4f79cf)){if(!_['isNil'](_0x10a761[_0xd010('0x2a')][_0x4f79cf])&&_0x4f79cf!=='id'&&_0x4f79cf!=='tags'&&_0x4f79cf!=='createdAt'&&_0x4f79cf!=='updatedAt'){_0xf7628f[util[_0xd010('0x15')]('%s%s',_0xd010('0x2b'),_[_0xd010('0x2c')](_0x4f79cf))]=_0x10a761['Contact'][_0x4f79cf];}}}}return _0xf7628f;};exports[_0xd010('0x2d')]=function(_0x1e7c4a){var _0x4b2757={};for(var _0x54245b in _0x1e7c4a){if(_0x1e7c4a[_0xd010('0x2e')](_0x54245b)){_0x4b2757[util['format']('%s',_[_0xd010('0x2f')](_0x54245b))]=_0x1e7c4a[_0x54245b];}}return{'variables':_0x4b2757};};exports[_0xd010('0x30')]=function(_0x2e18a6,_0x3845ed){if(!_[_0xd010('0x18')](_0x2e18a6)){if(_0x2e18a6['hasOwnProperty'](_0xd010('0x31'))){if(_0x2e18a6[_0xd010('0x31')]>0x0){_0x2e18a6[_0xd010('0x31')]-=0x1;}else{logger[_0xd010('0xe')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x3845ed);}}}else{logger['error'](_0xd010('0x32'),_0x3845ed);}};exports[_0xd010('0x33')]=function(_0x485cc4){var _0x449566=moment()[_0xd010('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x485cc4[_0xd010('0x34')]=0xd;_0x485cc4[_0xd010('0x35')]='Blacklist';_0x485cc4[_0xd010('0x36')]=_0x449566;_0x485cc4[_0xd010('0x37')]=_0x449566;_0x485cc4[_0xd010('0x38')]=_0x449566;};exports['logAgent']=function(_0x101eb8,_0x53afcc,_0x415e86){var _0x4ac940=moment()[_0xd010('0x15')](_0xd010('0x39'));_0x101eb8[_0xd010('0x34')]=_0x53afcc;_0x101eb8['statedesc']=_0x415e86;_0x101eb8[_0xd010('0x37')]=_0x4ac940;_0x101eb8[_0xd010('0x3a')]=getSeconds(_0x101eb8[_0xd010('0x37')],_0x101eb8[_0xd010('0x36')]);};exports[_0xd010('0x3b')]=function(_0x5f0c92,_0x495566,_0x4eea9f){_0x5f0c92['membername']=_0x495566;_0x5f0c92[_0xd010('0x3c')]=_0x4eea9f;};exports[_0xd010('0x3d')]=function(_0x5db012,_0x93ea2d,_0x490144){var _0x5c93dd=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5db012[_0xd010('0x34')]=_0x93ea2d;_0x5db012[_0xd010('0x35')]=_0x490144;_0x5db012[_0xd010('0x37')]=_0x5db012['responsetime']?_0x5db012['responsetime']:_0x5c93dd;_0x5db012[_0xd010('0x38')]=_0x5db012[_0xd010('0x38')]?_0x5db012[_0xd010('0x38')]:_0x5c93dd;_0x5db012[_0xd010('0x3a')]=getSeconds(_0x5db012['responsetime']||0x0,_0x5db012[_0xd010('0x36')]||0x0);_0x5db012['talktime']=_0x5db012[_0xd010('0x3e')]?getSeconds(_0x5db012[_0xd010('0x38')],_0x5db012['answertime']):0x0;};exports[_0xd010('0x3f')]=function(_0x5da20d){return _0x5da20d===_0xd010('0x40');};exports[_0xd010('0x41')]=function(_0x29002c,_0x2a0ae9,_0x1c227b,_0x26f403,_0x41baf5){var _0x127c60=_0x26f403?_0xd010('0x42'):_0x29002c[_0xd010('0x43')];_0x127c60=_0x41baf5?_0xd010('0x44'):_0x127c60;return{'actionid':_0x29002c['uniqueid'],'action':_0xd010('0x45'),'channel':_0x29002c[_0xd010('0x46')],'callerid':util['format'](_0xd010('0x14'),_0x127c60,_0x29002c[_0xd010('0x1b')]),'Exten':_0xd010('0x27'),'Context':_0xd010('0x47'),'Priority':'1','variable':_0x1c227b,'timeout':(_0x2a0ae9[_0xd010('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x29002c[_0xd010('0x49')]};};exports[_0xd010('0x4a')]=function(_0x5adfc2){return _0x5adfc2[_0xd010('0x4b')]+_0x5adfc2[_0xd010('0x4c')]+_0x5adfc2[_0xd010('0x4d')]+_0x5adfc2['countagentrejectretry']+_0x5adfc2[_0xd010('0x4e')];};exports['cloneAction']=function(_0x2dc9ad){var _0x32321e=_[_0xd010('0x4f')](_0x2dc9ad);_0x32321e[_0xd010('0x34')]=0xf;_0x32321e[_0xd010('0x35')]='Global';return _0x32321e;};exports[_0xd010('0x50')]=function(_0x1240ba,_0x500cdf,_0x51b2ee){var _0x39da83={};_0x39da83[_0x500cdf]=_0x1240ba[_0x500cdf];_0x39da83[_0xd010('0x51')]=![];_0x39da83[_0xd010('0x52')]=moment()[_0xd010('0x53')](_0x51b2ee,_0xd010('0x54'))[_0xd010('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x39da83[_0xd010('0x55')]=_0x1240ba[_0xd010('0x55')];_0x39da83['ListId']=_0x1240ba['ListId'];_0x39da83[_0xd010('0x1c')]=_0x1240ba[_0xd010('0x1c')]||undefined;return _0x39da83;};exports[_0xd010('0x56')]=function(_0x54e34b,_0x563d79){if(!_[_0xd010('0x18')](_0x54e34b)){if(_0x54e34b[_0xd010('0x57')]>0x0){_0x54e34b[_0xd010('0x57')]-=0x1;}else{logger[_0xd010('0xe')](_0x563d79,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0xd010('0xe')](_0x563d79,_0xd010('0x58'));}};exports['IsNotLoggedIn']=function(_0x4ff5fa){if(_0x4ff5fa<=0x0){return!![];}return![];};exports[_0xd010('0x59')]=function(_0x14e3ce,_0x585e96,_0x5b57f9){_0x14e3ce[_0xd010('0x5a')]=_0x585e96;_0x14e3ce[_0xd010('0x1a')]=_0x14e3ce[_0xd010('0x5b')];_0x14e3ce[_0xd010('0x5c')]=_0x14e3ce[_0xd010('0x46')];_0x14e3ce[_0xd010('0x5d')]=_0xd010('0x5e');if(_0x5b57f9){_0x14e3ce[_0xd010('0x5f')]=_0x5b57f9[_0xd010('0x5f')];}return _0x14e3ce;};exports[_0xd010('0x60')]=function(_0x1a93c4){var _0x45ca05={};_0x45ca05['queue']=_0x1a93c4['queue'];_0x45ca05[_0xd010('0x5c')]=_0x1a93c4['channelAgent'];_0x45ca05[_0xd010('0x49')]=_0x1a93c4[_0xd010('0x49')];return _0x45ca05;};exports[_0xd010('0x61')]=function(_0x183e89){var _0x27ffe2=[];for(var _0x113907 in _0x183e89){if(_0x183e89['hasOwnProperty'](_0x113907)){if(!_['isNil'](_0x183e89[_0x113907])&&_0x183e89[_0x113907]['state']===_0xd010('0x62')&&_0x183e89[_0x113907]['status']===_0xd010('0x63')){_0x27ffe2[_0xd010('0x64')](_0x183e89[_0x113907]['id']);}}}return _0x27ffe2;};exports[_0xd010('0x65')]=function(_0x2eaebc){var _0x3ca540=moment()[_0xd010('0x7')](0x0);var _0x2450b8=moment(_0x2eaebc)['milliseconds'](0x0);return _0x3ca540[_0xd010('0x8')](_0x2450b8,_0xd010('0x9'));};exports[_0xd010('0x66')]=function(_0x27f61f){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x27f61f[_0xd010('0x55')],'ListId':_0x27f61f[_0xd010('0x67')],'VoiceQueueId':_0x27f61f['VoiceQueueId']||undefined,'CampaignId':_0x27f61f[_0xd010('0x68')]||undefined};};exports[_0xd010('0x69')]=function(_0x4eb83d){if(_0x4eb83d===_0xd010('0x49')||_0x4eb83d===_0xd010('0x6a')||_0x4eb83d==='queue'||_0x4eb83d===_0xd010('0x6b')||_0x4eb83d===_0xd010('0x6c')||_0x4eb83d===_0xd010('0x6d')||_0x4eb83d===_0xd010('0x6e')||_0x4eb83d===_0xd010('0x46')||_0x4eb83d===_0xd010('0x43')||_0x4eb83d===_0xd010('0x51')||_0x4eb83d===_0xd010('0x1b')||_0x4eb83d===_0xd010('0x52')||_0x4eb83d===_0xd010('0x4b')||_0x4eb83d===_0xd010('0x4c')||_0x4eb83d==='countnoanswerretry'||_0x4eb83d==='countglobal'||_0x4eb83d===_0xd010('0x6f')||_0x4eb83d===_0xd010('0x70')||_0x4eb83d===_0xd010('0x71')||_0x4eb83d==='recallme'||_0x4eb83d===_0xd010('0x55')||_0x4eb83d===_0xd010('0x67')||_0x4eb83d==='UserId'||_0x4eb83d===_0xd010('0x1c')||_0x4eb83d==='sipcallid'||_0x4eb83d===_0xd010('0x72')||_0x4eb83d===_0xd010('0x73')||_0x4eb83d==='xmd-phone'||_0x4eb83d===_0xd010('0x74')||_0x4eb83d===_0xd010('0x75')||_0x4eb83d===_0xd010('0x76')||_0x4eb83d===_0xd010('0x77')||_0x4eb83d===_0xd010('0x78')||_0x4eb83d===_0xd010('0x79')||_0x4eb83d===_0xd010('0x7a')||_0x4eb83d===_0xd010('0x7b')||_0x4eb83d===_0xd010('0x7c')||_0x4eb83d==='xmd-agiafter'||_0x4eb83d===_0xd010('0x7d')||_0x4eb83d===_0xd010('0x7e')||_0x4eb83d===_0xd010('0x7f')||_0x4eb83d==='rtpaudioqosjitter'||_0x4eb83d===_0xd010('0x80')||_0x4eb83d==='rtpaudioqosloss'||_0x4eb83d===_0xd010('0x81')||_0x4eb83d===_0xd010('0x82')||_0x4eb83d===_0xd010('0x83')||_0x4eb83d==='rtpaudioqos'||_0x4eb83d===_0xd010('0x7f')||_0x4eb83d===_0xd010('0x84')||_0x4eb83d===_0xd010('0x80')||_0x4eb83d==='rtpaudioqosloss'||_0x4eb83d===_0xd010('0x81')||_0x4eb83d==='rtpaudioqosrtt'||_0x4eb83d===_0xd010('0x83')||_0x4eb83d===_0xd010('0x85')||_0x4eb83d===_0xd010('0x86')||_0x4eb83d==='state'||_0x4eb83d===_0xd010('0x35')){return![];}return!![];};exports[_0xd010('0x87')]=function(_0x239b0d,_0x1d0f31){var _0x42e346,_0x3f5386,_0x541da6;if(_0x1d0f31<=0x0){_0x1d0f31=0x1;}_0x42e346=new RegExp(_0xd010('0x88')+_0x1d0f31+'}$');_0x3f5386=Math['pow'](0xa,_0x1d0f31-0x1);_0x541da6=Math[_0xd010('0x89')](0xa,_0x1d0f31)-0x1;return util[_0xd010('0x15')]('%s',_[_0xd010('0x8a')](_0x239b0d,_0x42e346,_[_0xd010('0x8b')](_0x3f5386,_0x541da6)));};exports[_0xd010('0x8c')]=function(_0x328f94){var _0x1caa7b=_0x328f94[_0xd010('0x8d')](/"(.*?)"/);return _0x1caa7b?_0x1caa7b[0x1]:_0x328f94;};exports['extractCalleridNumber']=function(_0x2df58b){var _0x4b30e4=_0x2df58b['match'](/<(.*?)>/);return _0x4b30e4?_0x4b30e4[0x1]:_0x2df58b;};
\ No newline at end of file
+var _0xbbe6=['[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','push','getDiff','createBody','ContactId','CampaignId','type','campaigntype','dialAnswer','membername','active','callback','callbackuniqueid','recallme','sipcallid','xmd-voicequeueid','xmd-phone','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqosjitter','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','loggerCatch','inspect','logger','loggerError','logger2','message','getCallerId','string','isEmpty','isUndefined','format','\x22%s\x22\x20<%s>','isActive','addVariables','Queue','name','calleridname','calleridnum','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','monitor_format','Contact','hasOwnProperty','isNil','tags','createdAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','error','[updateOriginated]\x20is\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','responsetime','endtime','logAgent','ringtime','starttime','logLookAgent','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','totalGlobal','countcongestionretry','countnoanswerretry','countnosuchnumberretry','clone','Global','scheduledAt','add','minutes','ListId','pTalking'];(function(_0x3f025c,_0x1109b3){var _0x557982=function(_0x431c73){while(--_0x431c73){_0x3f025c['push'](_0x3f025c['shift']());}};_0x557982(++_0x1109b3);}(_0xbbe6,0xc3));var _0x6bbe=function(_0x50249b,_0x2d2df1){_0x50249b=_0x50249b-0x0;var _0x1800d3=_0xbbe6[_0x50249b];return _0x1800d3;};'use strict';var util=require(_0x6bbe('0x0'));var _=require(_0x6bbe('0x1'));var moment=require('moment');var logger=require(_0x6bbe('0x2'))(_0x6bbe('0x3'));var ipAgi=process['env'][_0x6bbe('0x4')]||_0x6bbe('0x5');function getSeconds(_0x2b3357,_0x3f5156){var _0x17c431=moment(_0x2b3357)['milliseconds'](0x0);var _0x1ab0f1=moment(_0x3f5156)[_0x6bbe('0x6')](0x0);return _0x17c431[_0x6bbe('0x7')](_0x1ab0f1,_0x6bbe('0x8'));}exports[_0x6bbe('0x9')]=function(_0x491d52){return function(_0x9f0f62){logger['error'](_0x491d52,util[_0x6bbe('0xa')](_0x9f0f62,{'showHidden':![],'depth':null}));};};exports[_0x6bbe('0xb')]=function(_0x52b6eb,_0x22e31c){logger['info'](_0x52b6eb,util[_0x6bbe('0xa')](_0x22e31c,{'showHidden':![],'depth':null}));};exports[_0x6bbe('0xc')]=function(_0x267a7e,_0x4defde){logger['error'](_0x267a7e,util[_0x6bbe('0xa')](_0x4defde,{'showHidden':![],'depth':null}));};exports[_0x6bbe('0xd')]=function(_0x334088){return function(_0x4fc97b){logger['info'](_0x334088,util[_0x6bbe('0xa')](_0x4fc97b,{'showHidden':![],'depth':null}));};};exports[_0x6bbe('0xe')]=function(_0x271603,_0xff9467,_0x2fd20d){return{'message':_0x271603,'unlock':_0xff9467,'active':_0x2fd20d};};exports[_0x6bbe('0xf')]=function(_0xdff7ed,_0x86da2e,_0x2dc2d6){if(!_['isUndefined'](_0x2dc2d6)&&_0x6bbe('0x10')===typeof _0x2dc2d6&&!_[_0x6bbe('0x11')](_0x2dc2d6)){if(!_[_0x6bbe('0x12')](_0x86da2e)&&'string'===typeof _0x86da2e&&!_[_0x6bbe('0x11')](_0x86da2e)){return util[_0x6bbe('0x13')](_0x6bbe('0x14'),_0x86da2e,_0x2dc2d6);}return util[_0x6bbe('0x13')]('\x22%s\x22\x20<%s>',_0x2dc2d6,_0x2dc2d6);}if(!_[_0x6bbe('0x12')](_0xdff7ed)&&_0x6bbe('0x10')===typeof _0xdff7ed&&!_['isEmpty'](_0xdff7ed)){return _0xdff7ed;}return'\x22\x22\x20<>';};exports[_0x6bbe('0x15')]=function(_0x3aab3a){if(_['isNil'](_0x3aab3a)){return![];}return _0x3aab3a;};exports[_0x6bbe('0x16')]=function(_0x30644d,_0x446137,_0x258bd3,_0x3d9d2f,_0x32bd58,_0x511990){var _0x477f09={'XMD-QUEUE':_0x446137['Queue']?_0x446137[_0x6bbe('0x17')][_0x6bbe('0x18')]:'','XMD-CALLERID':_0x3d9d2f,'XMD-CALLERID-PREVIEW':_0x511990?util[_0x6bbe('0x13')](_0x6bbe('0x14'),_0x511990[_0x6bbe('0x19')],_0x511990[_0x6bbe('0x1a')]):_0x3d9d2f,'XMD-DIALID':_0x32bd58,'XMD-CONTACTID':_0x446137['ContactId'],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x3d9d2f,'XMD-VOICEQUEUEID':_0x446137[_0x6bbe('0x1b')],'XMD-DIALCHANNEL':_0x258bd3,'XMD-DIALTIMEOUT':_0x30644d[_0x6bbe('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0x6bbe('0x13')](_0x6bbe('0x1d'),_0x30644d[_0x6bbe('0x1e')]?'g':'',_[_0x6bbe('0x11')](_0x30644d['monitor_format'])?'':_0x6bbe('0x1f')),'XMD-DIALURL':_0x30644d[_0x6bbe('0x20')]||'','XMD-AGI':_0x30644d[_0x6bbe('0x21')]?util[_0x6bbe('0x13')](_0x6bbe('0x22'),ipAgi,_0x30644d[_0x6bbe('0x21')]):_0x6bbe('0x23'),'XMD-AGIAFTER':_0x30644d[_0x6bbe('0x1e')]?util['format'](_0x6bbe('0x22'),ipAgi,_0x30644d[_0x6bbe('0x1e')]):_0x6bbe('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x511990?_0x511990[_0x6bbe('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x511990?_0x511990[_0x6bbe('0x25')]:'','XMD-DESTINATION':_0x6bbe('0x26'),'SIPADDHEADER':_0x6bbe('0x27')};if(!_['isEmpty'](_0x30644d[_0x6bbe('0x28')])){_0x477f09[util[_0x6bbe('0x13')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x30644d[_0x6bbe('0x28')];_0x477f09[util[_0x6bbe('0x13')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x32bd58;}if(_0x446137&&_0x446137[_0x6bbe('0x29')]){for(var _0x74a1f7 in _0x446137[_0x6bbe('0x29')]){if(_0x446137[_0x6bbe('0x29')][_0x6bbe('0x2a')](_0x74a1f7)){if(!_[_0x6bbe('0x2b')](_0x446137[_0x6bbe('0x29')][_0x74a1f7])&&_0x74a1f7!=='id'&&_0x74a1f7!==_0x6bbe('0x2c')&&_0x74a1f7!==_0x6bbe('0x2d')&&_0x74a1f7!=='updatedAt'){_0x477f09[util[_0x6bbe('0x13')](_0x6bbe('0x2e'),_0x6bbe('0x2f'),_[_0x6bbe('0x30')](_0x74a1f7))]=_0x446137[_0x6bbe('0x29')][_0x74a1f7];}}}}return _0x477f09;};exports[_0x6bbe('0x31')]=function(_0x2ac541){var _0x5b640d={};for(var _0x394620 in _0x2ac541){if(_0x2ac541['hasOwnProperty'](_0x394620)){_0x5b640d[util[_0x6bbe('0x13')]('%s',_[_0x6bbe('0x32')](_0x394620))]=_0x2ac541[_0x394620];}}return{'variables':_0x5b640d};};exports[_0x6bbe('0x33')]=function(_0x562a73,_0x2064f2){if(!_[_0x6bbe('0x2b')](_0x562a73)){if(_0x562a73[_0x6bbe('0x2a')](_0x6bbe('0x34'))){if(_0x562a73[_0x6bbe('0x34')]>0x0){_0x562a73[_0x6bbe('0x34')]-=0x1;}else{logger['error'](_0x6bbe('0x35'),_0x2064f2);}}}else{logger[_0x6bbe('0x36')](_0x6bbe('0x37'),_0x2064f2);}};exports['logBlacklist']=function(_0x17a690){var _0x262953=moment()[_0x6bbe('0x13')](_0x6bbe('0x38'));_0x17a690[_0x6bbe('0x39')]=0xd;_0x17a690[_0x6bbe('0x3a')]=_0x6bbe('0x3b');_0x17a690['starttime']=_0x262953;_0x17a690[_0x6bbe('0x3c')]=_0x262953;_0x17a690[_0x6bbe('0x3d')]=_0x262953;};exports[_0x6bbe('0x3e')]=function(_0x2416ac,_0x38b9c7,_0x448e12){var _0x1ef7d8=moment()['format'](_0x6bbe('0x38'));_0x2416ac['state']=_0x38b9c7;_0x2416ac[_0x6bbe('0x3a')]=_0x448e12;_0x2416ac['responsetime']=_0x1ef7d8;_0x2416ac[_0x6bbe('0x3f')]=getSeconds(_0x2416ac[_0x6bbe('0x3c')],_0x2416ac[_0x6bbe('0x40')]);};exports[_0x6bbe('0x41')]=function(_0x340f24,_0x1acc31,_0xe8db12){_0x340f24['membername']=_0x1acc31;_0x340f24[_0x6bbe('0x42')]=_0xe8db12;};exports[_0x6bbe('0x43')]=function(_0x55696f,_0x12ef2b,_0x429018){var _0x52d335=moment()[_0x6bbe('0x13')](_0x6bbe('0x38'));_0x55696f[_0x6bbe('0x39')]=_0x12ef2b;_0x55696f[_0x6bbe('0x3a')]=_0x429018;_0x55696f[_0x6bbe('0x3c')]=_0x55696f[_0x6bbe('0x3c')]?_0x55696f['responsetime']:_0x52d335;_0x55696f[_0x6bbe('0x3d')]=_0x55696f[_0x6bbe('0x3d')]?_0x55696f[_0x6bbe('0x3d')]:_0x52d335;_0x55696f[_0x6bbe('0x3f')]=getSeconds(_0x55696f[_0x6bbe('0x3c')]||0x0,_0x55696f[_0x6bbe('0x40')]||0x0);_0x55696f[_0x6bbe('0x44')]=_0x55696f[_0x6bbe('0x45')]?getSeconds(_0x55696f[_0x6bbe('0x3d')],_0x55696f[_0x6bbe('0x45')]):0x0;};exports[_0x6bbe('0x46')]=function(_0x1976ca){return _0x1976ca===_0x6bbe('0x47');};exports[_0x6bbe('0x48')]=function(_0x1066c1,_0x36ab49,_0x47fbd2,_0xc0d1bb,_0xfec278){var _0x5853d0=_0xc0d1bb?_0x6bbe('0x49'):_0x1066c1[_0x6bbe('0x19')];_0x5853d0=_0xfec278?_0x6bbe('0x4a'):_0x5853d0;return{'actionid':_0x1066c1[_0x6bbe('0x4b')],'action':_0x6bbe('0x4c'),'channel':_0x1066c1[_0x6bbe('0x4d')],'callerid':util[_0x6bbe('0x13')]('\x22%s\x22\x20<%s>',_0x5853d0,_0x1066c1[_0x6bbe('0x1a')]),'Exten':_0x6bbe('0x26'),'Context':_0x6bbe('0x4e'),'Priority':'1','variable':_0x47fbd2,'timeout':(_0x36ab49[_0x6bbe('0x4f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1066c1[_0x6bbe('0x4b')]};};exports[_0x6bbe('0x50')]=function(_0x4abf93){return _0x4abf93['countbusyretry']+_0x4abf93[_0x6bbe('0x51')]+_0x4abf93[_0x6bbe('0x52')]+_0x4abf93['countagentrejectretry']+_0x4abf93[_0x6bbe('0x53')];};exports['cloneAction']=function(_0x177836){var _0x200b05=_[_0x6bbe('0x54')](_0x177836);_0x200b05[_0x6bbe('0x39')]=0xf;_0x200b05['statedesc']=_0x6bbe('0x55');return _0x200b05;};exports[_0x6bbe('0x56')]=function(_0x5bd7d4,_0x45ac11,_0x5ccaca){var _0x1721a7={};_0x1721a7[_0x45ac11]=_0x5bd7d4[_0x45ac11];_0x1721a7['active']=![];_0x1721a7['scheduledat']=moment()[_0x6bbe('0x57')](_0x5ccaca,_0x6bbe('0x58'))[_0x6bbe('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x1721a7['ContactId']=_0x5bd7d4['ContactId'];_0x1721a7[_0x6bbe('0x59')]=_0x5bd7d4[_0x6bbe('0x59')];_0x1721a7[_0x6bbe('0x1b')]=_0x5bd7d4[_0x6bbe('0x1b')]||undefined;return _0x1721a7;};exports['decrementTalkink']=function(_0xe01ed5,_0xcd4450){if(!_[_0x6bbe('0x2b')](_0xe01ed5)){if(_0xe01ed5[_0x6bbe('0x5a')]>0x0){_0xe01ed5[_0x6bbe('0x5a')]-=0x1;}else{logger[_0x6bbe('0x36')](_0xcd4450,_0x6bbe('0x5b'));}}else{logger[_0x6bbe('0x36')](_0xcd4450,_0x6bbe('0x5c'));}};exports[_0x6bbe('0x5d')]=function(_0x24abf4){if(_0x24abf4<=0x0){return!![];}return![];};exports['buildObj']=function(_0x2d27c8,_0x5d2c37,_0x450a09){_0x2d27c8[_0x6bbe('0x5e')]=_0x5d2c37;_0x2d27c8[_0x6bbe('0x18')]=_0x2d27c8[_0x6bbe('0x5f')];_0x2d27c8[_0x6bbe('0x60')]=_0x2d27c8[_0x6bbe('0x4d')];_0x2d27c8[_0x6bbe('0x61')]=_0x6bbe('0x62');if(_0x450a09){_0x2d27c8['mandatoryDisposition']=_0x450a09[_0x6bbe('0x63')];}return _0x2d27c8;};exports[_0x6bbe('0x64')]=function(_0x52f51a){var _0x11dba8={};_0x11dba8['queue']=_0x52f51a['queue'];_0x11dba8['interface']=_0x52f51a[_0x6bbe('0x4d')];_0x11dba8[_0x6bbe('0x4b')]=_0x52f51a['uniqueid'];return _0x11dba8;};exports[_0x6bbe('0x65')]=function(_0x58d707){var _0x11e460=[];for(var _0x29e872 in _0x58d707){if(_0x58d707[_0x6bbe('0x2a')](_0x29e872)){if(!_[_0x6bbe('0x2b')](_0x58d707[_0x29e872])&&_0x58d707[_0x29e872][_0x6bbe('0x39')]===_0x6bbe('0x66')&&_0x58d707[_0x29e872][_0x6bbe('0x67')]==='reachable'){_0x11e460[_0x6bbe('0x68')](_0x58d707[_0x29e872]['id']);}}}return _0x11e460;};exports[_0x6bbe('0x69')]=function(_0x21d0ea){var _0xc601c8=moment()[_0x6bbe('0x6')](0x0);var _0x4bfab3=moment(_0x21d0ea)[_0x6bbe('0x6')](0x0);return _0xc601c8[_0x6bbe('0x7')](_0x4bfab3,'seconds');};exports[_0x6bbe('0x6a')]=function(_0x473f57){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x473f57[_0x6bbe('0x6b')],'ListId':_0x473f57[_0x6bbe('0x59')],'VoiceQueueId':_0x473f57[_0x6bbe('0x1b')]||undefined,'CampaignId':_0x473f57[_0x6bbe('0x6c')]||undefined};};exports['filterKey']=function(_0x2fe0ae){if(_0x2fe0ae===_0x6bbe('0x4b')||_0x2fe0ae==='idContact'||_0x2fe0ae===_0x6bbe('0x5f')||_0x2fe0ae===_0x6bbe('0x6d')||_0x2fe0ae===_0x6bbe('0x6e')||_0x2fe0ae===_0x6bbe('0x6f')||_0x2fe0ae===_0x6bbe('0x70')||_0x2fe0ae===_0x6bbe('0x4d')||_0x2fe0ae===_0x6bbe('0x19')||_0x2fe0ae===_0x6bbe('0x71')||_0x2fe0ae==='calleridnum'||_0x2fe0ae==='scheduledat'||_0x2fe0ae==='countbusyretry'||_0x2fe0ae===_0x6bbe('0x51')||_0x2fe0ae===_0x6bbe('0x52')||_0x2fe0ae==='countglobal'||_0x2fe0ae===_0x6bbe('0x72')||_0x2fe0ae===_0x6bbe('0x73')||_0x2fe0ae==='callbackat'||_0x2fe0ae===_0x6bbe('0x74')||_0x2fe0ae===_0x6bbe('0x6b')||_0x2fe0ae===_0x6bbe('0x59')||_0x2fe0ae==='UserId'||_0x2fe0ae===_0x6bbe('0x1b')||_0x2fe0ae===_0x6bbe('0x75')||_0x2fe0ae===_0x6bbe('0x76')||_0x2fe0ae==='xmd-queue'||_0x2fe0ae===_0x6bbe('0x77')||_0x2fe0ae==='xmd-listid'||_0x2fe0ae===_0x6bbe('0x78')||_0x2fe0ae===_0x6bbe('0x79')||_0x2fe0ae===_0x6bbe('0x7a')||_0x2fe0ae==='xmd-dialid'||_0x2fe0ae===_0x6bbe('0x7b')||_0x2fe0ae==='xmd-contactid'||_0x2fe0ae==='xmd-cdrtype'||_0x2fe0ae===_0x6bbe('0x7c')||_0x2fe0ae===_0x6bbe('0x7d')||_0x2fe0ae==='xmd-agi'||_0x2fe0ae===_0x6bbe('0x7e')||_0x2fe0ae===_0x6bbe('0x7f')||_0x2fe0ae==='rtpaudioqosjitter'||_0x2fe0ae===_0x6bbe('0x80')||_0x2fe0ae===_0x6bbe('0x81')||_0x2fe0ae===_0x6bbe('0x82')||_0x2fe0ae==='rtpaudioqosrtt'||_0x2fe0ae===_0x6bbe('0x83')||_0x2fe0ae===_0x6bbe('0x7e')||_0x2fe0ae==='rtpaudioqosbridged'||_0x2fe0ae===_0x6bbe('0x84')||_0x2fe0ae===_0x6bbe('0x80')||_0x2fe0ae===_0x6bbe('0x81')||_0x2fe0ae===_0x6bbe('0x82')||_0x2fe0ae===_0x6bbe('0x85')||_0x2fe0ae===_0x6bbe('0x83')||_0x2fe0ae===_0x6bbe('0x86')||_0x2fe0ae===_0x6bbe('0x87')||_0x2fe0ae===_0x6bbe('0x39')||_0x2fe0ae==='statedesc'){return![];}return!![];};exports[_0x6bbe('0x88')]=function(_0x3b79a5,_0x964fb6){var _0xbfba0,_0x1e6c95,_0x3d1422;if(_0x964fb6<=0x0){_0x964fb6=0x1;}_0xbfba0=new RegExp(_0x6bbe('0x89')+_0x964fb6+'}$');_0x1e6c95=Math[_0x6bbe('0x8a')](0xa,_0x964fb6-0x1);_0x3d1422=Math['pow'](0xa,_0x964fb6)-0x1;return util[_0x6bbe('0x13')]('%s',_[_0x6bbe('0x8b')](_0x3b79a5,_0xbfba0,_[_0x6bbe('0x8c')](_0x1e6c95,_0x3d1422)));};exports['extractCalleridName']=function(_0x4555f4){var _0x413924=_0x4555f4[_0x6bbe('0x8d')](/"(.*?)"/);return _0x413924?_0x413924[0x1]:_0x4555f4;};exports[_0x6bbe('0x8e')]=function(_0x5199ce){var _0x43a0ea=_0x5199ce[_0x6bbe('0x8d')](/<(.*?)>/);return _0x43a0ea?_0x43a0ea[0x1]:_0x5199ce;};
\ No newline at end of file
index ead773e..52c4806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x320b=['queueremove','queuepause','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','number'];(function(_0x4d98df,_0x5b1892){var _0x293c0b=function(_0x4ea293){while(--_0x4ea293){_0x4d98df['push'](_0x4d98df['shift']());}};_0x293c0b(++_0x5b1892);}(_0x320b,0x1c5));var _0xb320=function(_0x1780f8,_0x11ba93){_0x1780f8=_0x1780f8-0x0;var _0x33a410=_0x320b[_0x1780f8];return _0x33a410;};'use strict';exports[_0xb320('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xb320('0x1'),'required':!![]},'penalty':{'type':_0xb320('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xb320('0x3')]={'queue':{'type':_0xb320('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xb320('0x4')]={'interface':{'type':_0xb320('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0xb320('0x1'),'required':![]}};exports['reload']={'module':{'type':_0xb320('0x1'),'required':![]}};exports[_0xb320('0x5')]={'uniqueid':{'type':'string','required':!![]}};exports['voicechannel']={'uniqueid':{'type':_0xb320('0x1'),'required':!![]},'filename':{'type':_0xb320('0x1')},'format':{'type':_0xb320('0x1')},'mixmonitorid':{'type':_0xb320('0x1')}};exports[_0xb320('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports[_0xb320('0x7')]={'uniqueid':{'type':_0xb320('0x1'),'required':!![]},'exten':{'type':_0xb320('0x1'),'required':!![]},'context':{'type':_0xb320('0x1')}};
\ No newline at end of file
+var _0x0493=['voicequeuechannelredirect','queueadd','string','number','boolean','queueremove','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup'];(function(_0x2fcdc5,_0x4d45f7){var _0x1b508e=function(_0x39021b){while(--_0x39021b){_0x2fcdc5['push'](_0x2fcdc5['shift']());}};_0x1b508e(++_0x4d45f7);}(_0x0493,0x1eb));var _0x3049=function(_0x4ea780,_0x5473f3){_0x4ea780=_0x4ea780-0x0;var _0x4af9e0=_0x0493[_0x4ea780];return _0x4af9e0;};'use strict';exports[_0x3049('0x0')]={'queue':{'type':_0x3049('0x1'),'required':!![]},'interface':{'type':_0x3049('0x1'),'required':!![]},'membername':{'type':_0x3049('0x1'),'required':!![]},'penalty':{'type':_0x3049('0x2'),'required':![]},'paused':{'type':_0x3049('0x3'),'required':![]}};exports[_0x3049('0x4')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x3049('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':_0x3049('0x1'),'required':!![]},'paused':{'type':_0x3049('0x3')},'reason':{'type':_0x3049('0x1'),'required':![]}};exports[_0x3049('0x5')]={'module':{'type':_0x3049('0x1'),'required':![]}};exports[_0x3049('0x6')]={'uniqueid':{'type':_0x3049('0x1'),'required':!![]}};exports[_0x3049('0x7')]={'uniqueid':{'type':_0x3049('0x1'),'required':!![]},'filename':{'type':_0x3049('0x1')},'format':{'type':'string'},'mixmonitorid':{'type':_0x3049('0x1')}};exports[_0x3049('0x8')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x3049('0x9')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x3049('0x1')}};
\ No newline at end of file
index 08ac739..019a9b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f95=['outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','mapKeys','format','name','hasOwnProperty','isNil','interface','SIP/%s','total','sumHoldTime','sumDuration','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','answered','unmanaged','abandoned','sumBillable','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','isUndefined','initTelephones','length','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','sugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','diff','queuecallerjoinAt','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','queuecallercompleteAt','initVoiceCallReports','outbound','ANSWERED','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','voiceExtensions','initFaxAccounts','faxAccounts','exports','lodash','../model/telephone','../model/trunk','../model/voiceQueue','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/faxAccount','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','channels','queueChannels'];(function(_0x12670a,_0x3f8b09){var _0x20f572=function(_0x521d94){while(--_0x521d94){_0x12670a['push'](_0x12670a['shift']());}};_0x20f572(++_0x3f8b09);}(_0x9f95,0x130));var _0x59f9=function(_0x2d30bf,_0x5467f0){_0x2d30bf=_0x2d30bf-0x0;var _0x4879e3=_0x9f95[_0x2d30bf];return _0x4879e3;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x59f9('0x0'));var moment=require('moment');var Agent=require('../model/agent');var Telephone=require(_0x59f9('0x1'));var Trunk=require(_0x59f9('0x2'));var VoiceQueue=require(_0x59f9('0x3'));var Trigger=require('../model/trigger');var Template=require('../model/template');var Campaign=require(_0x59f9('0x4'));var VoiceExtension=require(_0x59f9('0x5'));var ZendeskAccount=require(_0x59f9('0x6'));var SalesforceAccount=require(_0x59f9('0x7'));var FreshdeskAccount=require(_0x59f9('0x8'));var SugarcrmAccount=require(_0x59f9('0x9'));var ZohoAccount=require(_0x59f9('0xa'));var DeskAccount=require(_0x59f9('0xb'));var VtigerAccount=require(_0x59f9('0xc'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x59f9('0xd'));var Realtime=function(){this[_0x59f9('0xe')]={};this[_0x59f9('0xf')]={};this[_0x59f9('0x10')]={};this[_0x59f9('0x11')]={};this[_0x59f9('0x12')]={};this[_0x59f9('0x13')]={};this[_0x59f9('0x14')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x59f9('0x15')]={};this[_0x59f9('0x16')]={};this[_0x59f9('0x17')]={};this[_0x59f9('0x18')]={};this[_0x59f9('0x19')]={};this[_0x59f9('0x1a')]={};this[_0x59f9('0x1b')]={};this['sugarcrmAccounts']={};this[_0x59f9('0x1c')]={};this[_0x59f9('0x1d')]={};this[_0x59f9('0x1e')]={};this[_0x59f9('0x1f')]={};this[_0x59f9('0x20')]={};this[_0x59f9('0x21')]={};this['freshsalesAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x5f91ca,_0x511d45,_0x4e8809){var _0x34bbce=_[_0x59f9('0x22')](_0x5f91ca,function(_0x16e200,_0x57cb5c){return _0x16e200[_0x4e8809];});for(var _0x326fd4 in _0x511d45){if(_0x511d45['hasOwnProperty'](_0x326fd4)){if(!_0x34bbce[_0x326fd4]){delete _0x511d45[_0x326fd4];}}}}function freeIsNotKeySip(_0x5f306f,_0x4fe152){var _0x2dfb62=_[_0x59f9('0x22')](_0x5f306f,function(_0x42d3aa,_0x21613e){return util[_0x59f9('0x23')]('SIP/%s',_0x42d3aa[_0x59f9('0x24')]);});for(var _0x1b42b3 in _0x4fe152){if(_0x4fe152[_0x59f9('0x25')](_0x1b42b3)){if(!_0x2dfb62[_0x1b42b3]){delete _0x4fe152[_0x1b42b3];}}}}function freeIsNotKeyAgent(_0x2f7e99,_0x31cbfa){var _0x153c90=_[_0x59f9('0x22')](_0x2f7e99,function(_0x100dab,_0x354963){var _0x5a40eb=_[_0x59f9('0x26')](_0x100dab[_0x59f9('0x27')])?util[_0x59f9('0x23')](_0x59f9('0x28'),_0x100dab['name']):_0x100dab[_0x59f9('0x27')];return _0x5a40eb;});for(var _0x47c529 in _0x31cbfa){if(_0x31cbfa[_0x59f9('0x25')](_0x47c529)){if(!_0x153c90[_0x47c529]){delete _0x31cbfa[_0x47c529];}}}}function clearVoiceCallReports(_0x30fe19){_0x30fe19[_0x59f9('0x29')]=0x0;_0x30fe19['answered']=0x0;_0x30fe19[_0x59f9('0x2a')]=0x0;_0x30fe19[_0x59f9('0x2b')]=0x0;_0x30fe19['sumBillable']=0x0;}function clearCampaigns(_0x53130a){if(!_['isEmpty'](_0x53130a)){for(var _0x526a60 in _0x53130a){if(_0x53130a[_0x59f9('0x25')](_0x526a60)){_0x53130a[_0x526a60][_0x59f9('0x2c')]=0x0;_0x53130a[_0x526a60][_0x59f9('0x2d')]=0x0;}}}}function clearVoiceQueues(_0x4ecf9d){if(!_[_0x59f9('0x2e')](_0x4ecf9d)){for(var _0x263f83 in _0x4ecf9d){if(_0x4ecf9d['hasOwnProperty'](_0x263f83)){_0x4ecf9d[_0x263f83][_0x59f9('0x29')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x2f')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x30')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x31')]=0x0;_0x4ecf9d[_0x263f83]['sumHoldTime']=0x0;_0x4ecf9d[_0x263f83]['sumDuration']=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x32')]=0x0;_0x4ecf9d[_0x263f83]['outboundAnswerAgiCallsDay']=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x33')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x34')]=0x0;_0x4ecf9d[_0x263f83]['outboundCongestionCallsDay']=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x35')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x36')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x37')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x38')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x39')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x3a')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x3b')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x3c')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x3d')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x3e')]=0x0;_0x4ecf9d[_0x263f83][_0x59f9('0x3f')]=!![];}}}}Realtime[_0x59f9('0x40')][_0x59f9('0x41')]=function(_0x1c4efc,_0x441657){for(var _0x58cab7 in _0x441657){if(_0x1c4efc[_0x59f9('0x25')](_0x58cab7)){_0x1c4efc[_0x58cab7]=_0x441657[_0x58cab7];}}};Realtime['prototype']['initAgents']=function(){var _0x3e6ca4=this;return function(_0x391862){if(_0x391862){freeIsNotKeyAgent(_0x391862,_0x3e6ca4['agents']);for(var _0x26d67a=0x0,_0x4f69a2={},_0x5b51cb={};_0x26d67a<_0x391862['length'];_0x26d67a+=0x1){_0x4f69a2=_0x391862[_0x26d67a];var _0x59418a=_[_0x59f9('0x26')](_0x4f69a2[_0x59f9('0x27')])?util[_0x59f9('0x23')](_0x59f9('0x28'),_0x4f69a2[_0x59f9('0x24')]):_0x4f69a2[_0x59f9('0x27')];if(_[_0x59f9('0x42')](_0x3e6ca4[_0x59f9('0xe')][_0x59418a])){_0x3e6ca4[_0x59f9('0xe')][_0x59418a]=new Agent(_0x4f69a2);}else{_0x3e6ca4[_0x59f9('0x41')](_0x3e6ca4['agents'][_0x59418a],_0x4f69a2);}}}return _0x3e6ca4[_0x59f9('0xe')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x43')]=function(){var _0x17917f=this;return function(_0x5f6f6a){if(_0x5f6f6a){freeIsNotKeySip(_0x5f6f6a,_0x17917f[_0x59f9('0xf')]);for(var _0x393b9b=0x0,_0x444224={},_0x592130={};_0x393b9b<_0x5f6f6a[_0x59f9('0x44')];_0x393b9b+=0x1){_0x444224=_0x5f6f6a[_0x393b9b];if(_[_0x59f9('0x42')](_0x17917f[_0x59f9('0xf')][util['format']('SIP/%s',_0x444224[_0x59f9('0x24')])])){_0x17917f['telephones'][util['format'](_0x59f9('0x28'),_0x444224['name'])]=new Telephone(_0x444224);}else{_0x17917f[_0x59f9('0x41')](_0x17917f[_0x59f9('0xf')][util[_0x59f9('0x23')]('SIP/%s',_0x444224[_0x59f9('0x24')])],_0x444224);}}}return _0x17917f[_0x59f9('0xf')];};};Realtime[_0x59f9('0x40')]['initTrunks']=function(){var _0x56a787=this;return function(_0x326043){if(_0x326043){freeIsNotKeySip(_0x326043,_0x56a787[_0x59f9('0x10')]);for(var _0x54bb56=0x0,_0x4bfa3d={},_0x428bc9={};_0x54bb56<_0x326043[_0x59f9('0x44')];_0x54bb56+=0x1){_0x4bfa3d=_0x326043[_0x54bb56];if(_[_0x59f9('0x42')](_0x56a787[_0x59f9('0x10')][util[_0x59f9('0x23')]('SIP/%s',_0x4bfa3d['name'])])){_0x56a787['trunks'][util[_0x59f9('0x23')](_0x59f9('0x28'),_0x4bfa3d[_0x59f9('0x24')])]=new Trunk(_0x4bfa3d);}else{_0x56a787[_0x59f9('0x41')](_0x56a787[_0x59f9('0x10')][util['format'](_0x59f9('0x28'),_0x4bfa3d['name'])],_0x4bfa3d);}}}return _0x56a787[_0x59f9('0x10')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x45')]=function(){var _0x58581e=this;return function(_0x4dfd71){if(_0x4dfd71){freeIsNotKey(_0x4dfd71,_0x58581e['voiceQueues'],'name');for(var _0x572156=0x0,_0x2fa7b2={},_0x4f6cc3={};_0x572156<_0x4dfd71[_0x59f9('0x44')];_0x572156+=0x1){_0x2fa7b2=_0x4dfd71[_0x572156];if(_['isUndefined'](_0x58581e[_0x59f9('0x11')][_0x2fa7b2['name']])){_0x58581e[_0x59f9('0x11')][_0x2fa7b2['name']]=new VoiceQueue(_0x2fa7b2);}else{_0x58581e[_0x59f9('0x41')](_0x58581e[_0x59f9('0x11')][_0x2fa7b2['name']],_0x2fa7b2);}}}return _0x58581e['voiceQueues'];};};Realtime[_0x59f9('0x40')][_0x59f9('0x46')]=function(){var _0x5b947f=this;return function(_0x333154){if(_0x333154){freeIsNotKey(_0x333154,_0x5b947f[_0x59f9('0x12')],'id');for(var _0x1e15be=0x0,_0x11e848={},_0xa26810={};_0x1e15be<_0x333154[_0x59f9('0x44')];_0x1e15be+=0x1){_0x11e848=_0x333154[_0x1e15be];if(_[_0x59f9('0x42')](_0x5b947f[_0x59f9('0x12')][_0x11e848['id']])){_0x5b947f['triggers'][_0x11e848['id']]=new Trigger(_0x11e848);}else{_0x5b947f[_0x59f9('0x41')](_0x5b947f[_0x59f9('0x12')][_0x11e848['id']],_0x11e848);}}}return _0x5b947f['triggers'];};};Realtime[_0x59f9('0x40')][_0x59f9('0x47')]=function(){var _0x4be60c=this;return function(_0xe02490){if(_0xe02490){freeIsNotKey(_0xe02490,_0x4be60c['templates'],'id');for(var _0x4c5285=0x0,_0x6b8c88={},_0x3868ad={};_0x4c5285<_0xe02490[_0x59f9('0x44')];_0x4c5285+=0x1){_0x6b8c88=_0xe02490[_0x4c5285];if(_[_0x59f9('0x42')](_0x4be60c['templates'][_0x6b8c88['id']])){_0x4be60c['templates'][_0x6b8c88['id']]=new Template(_0x6b8c88);}else{_0x4be60c[_0x59f9('0x41')](_0x4be60c[_0x59f9('0x14')][_0x6b8c88['id']],_0x6b8c88);}}}return _0x4be60c[_0x59f9('0x14')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x48')]=function(){var _0x353a3a=this;return function(_0x29c6ec){if(_0x29c6ec){freeIsNotKey(_0x29c6ec,_0x353a3a[_0x59f9('0x1a')],'id');for(var _0x41233e=0x0,_0x11f19f={},_0x4180d8={};_0x41233e<_0x29c6ec[_0x59f9('0x44')];_0x41233e+=0x1){_0x11f19f=_0x29c6ec[_0x41233e];if(_['isUndefined'](_0x353a3a[_0x59f9('0x1a')][_0x11f19f['id']])){_0x353a3a['zendeskAccounts'][_0x11f19f['id']]=new ZendeskAccount(_0x11f19f);}else{_0x353a3a[_0x59f9('0x41')](_0x353a3a[_0x59f9('0x1a')][_0x11f19f['id']],_0x11f19f);}}}return _0x353a3a[_0x59f9('0x1a')];};};Realtime['prototype'][_0x59f9('0x49')]=function(){var _0xd851ea=this;return function(_0x58fed6){if(_0x58fed6){freeIsNotKey(_0x58fed6,_0xd851ea[_0x59f9('0x1b')],'id');for(var _0x79dfb4=0x0,_0x48e8f1={},_0xc2c093={};_0x79dfb4<_0x58fed6[_0x59f9('0x44')];_0x79dfb4+=0x1){_0x48e8f1=_0x58fed6[_0x79dfb4];if(_[_0x59f9('0x42')](_0xd851ea[_0x59f9('0x1b')][_0x48e8f1['id']])){_0xd851ea['salesforceAccounts'][_0x48e8f1['id']]=new SalesforceAccount(_0x48e8f1);}else{_0xd851ea[_0x59f9('0x41')](_0xd851ea[_0x59f9('0x1b')][_0x48e8f1['id']],_0x48e8f1);}}}return _0xd851ea[_0x59f9('0x1b')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x4a')]=function(){var _0x141d4c=this;return function(_0x22ae66){if(_0x22ae66){freeIsNotKey(_0x22ae66,_0x141d4c[_0x59f9('0x1c')],'id');for(var _0x14a6bc=0x0,_0x4cf57f={},_0x12d22f={};_0x14a6bc<_0x22ae66[_0x59f9('0x44')];_0x14a6bc+=0x1){_0x4cf57f=_0x22ae66[_0x14a6bc];if(_[_0x59f9('0x42')](_0x141d4c[_0x59f9('0x1c')][_0x4cf57f['id']])){_0x141d4c[_0x59f9('0x1c')][_0x4cf57f['id']]=new FreshdeskAccount(_0x4cf57f);}else{_0x141d4c[_0x59f9('0x41')](_0x141d4c['freshdeskAccounts'][_0x4cf57f['id']],_0x4cf57f);}}}return _0x141d4c[_0x59f9('0x1c')];};};Realtime[_0x59f9('0x40')]['initZohoAccounts']=function(){var _0x2c0a6d=this;return function(_0x16a8cb){if(_0x16a8cb){freeIsNotKey(_0x16a8cb,_0x2c0a6d[_0x59f9('0x1d')],'id');for(var _0x458e99=0x0,_0x23a4aa={},_0x2526c9={};_0x458e99<_0x16a8cb[_0x59f9('0x44')];_0x458e99+=0x1){_0x23a4aa=_0x16a8cb[_0x458e99];if(_[_0x59f9('0x42')](_0x2c0a6d['zohoAccounts'][_0x23a4aa['id']])){_0x2c0a6d['zohoAccounts'][_0x23a4aa['id']]=new ZohoAccount(_0x23a4aa);}else{_0x2c0a6d[_0x59f9('0x41')](_0x2c0a6d[_0x59f9('0x1d')][_0x23a4aa['id']],_0x23a4aa);}}}return _0x2c0a6d[_0x59f9('0x1d')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x4b')]=function(){var _0x26d658=this;return function(_0x4c6774){if(_0x4c6774){freeIsNotKey(_0x4c6774,_0x26d658[_0x59f9('0x1e')],'id');for(var _0x591cf6=0x0,_0x4f89e3={},_0x49046a={};_0x591cf6<_0x4c6774[_0x59f9('0x44')];_0x591cf6+=0x1){_0x4f89e3=_0x4c6774[_0x591cf6];if(_[_0x59f9('0x42')](_0x26d658[_0x59f9('0x1e')][_0x4f89e3['id']])){_0x26d658[_0x59f9('0x1e')][_0x4f89e3['id']]=new DeskAccount(_0x4f89e3);}else{_0x26d658['mergeFromDatabase'](_0x26d658[_0x59f9('0x1e')][_0x4f89e3['id']],_0x4f89e3);}}}return _0x26d658[_0x59f9('0x1e')];};};Realtime['prototype']['initSugarcrmAccounts']=function(){var _0x298b76=this;return function(_0x207e4f){if(_0x207e4f){freeIsNotKey(_0x207e4f,_0x298b76[_0x59f9('0x4c')],'id');for(var _0x4ac195=0x0,_0x27e349={},_0x1f2848={};_0x4ac195<_0x207e4f[_0x59f9('0x44')];_0x4ac195+=0x1){_0x27e349=_0x207e4f[_0x4ac195];if(_['isUndefined'](_0x298b76[_0x59f9('0x4c')][_0x27e349['id']])){_0x298b76[_0x59f9('0x4c')][_0x27e349['id']]=new SugarcrmAccount(_0x27e349);}else{_0x298b76[_0x59f9('0x41')](_0x298b76[_0x59f9('0x4c')][_0x27e349['id']],_0x27e349);}}}return _0x298b76[_0x59f9('0x4c')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x4d')]=function(){var _0xdf62fd=this;return function(_0x43f32f){if(_0x43f32f){freeIsNotKey(_0x43f32f,_0xdf62fd[_0x59f9('0x1f')],'id');for(var _0x301a52=0x0,_0x4bc117={},_0x1d8be5={};_0x301a52<_0x43f32f[_0x59f9('0x44')];_0x301a52+=0x1){_0x4bc117=_0x43f32f[_0x301a52];if(_[_0x59f9('0x42')](_0xdf62fd[_0x59f9('0x1f')][_0x4bc117['id']])){_0xdf62fd[_0x59f9('0x1f')][_0x4bc117['id']]=new VtigerAccount(_0x4bc117);}else{_0xdf62fd[_0x59f9('0x41')](_0xdf62fd['vtigerAccounts'][_0x4bc117['id']],_0x4bc117);}}}return _0xdf62fd[_0x59f9('0x1f')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x4e')]=function(){var _0x5151a8=this;return function(_0x4740bc){if(_0x4740bc){freeIsNotKey(_0x4740bc,_0x5151a8['servicenowAccounts'],'id');for(var _0x8a5e64=0x0,_0x4fc706={},_0x50e929={};_0x8a5e64<_0x4740bc[_0x59f9('0x44')];_0x8a5e64+=0x1){_0x4fc706=_0x4740bc[_0x8a5e64];if(_[_0x59f9('0x42')](_0x5151a8['servicenowAccounts'][_0x4fc706['id']])){_0x5151a8[_0x59f9('0x20')][_0x4fc706['id']]=new ServicenowAccount(_0x4fc706);}else{_0x5151a8[_0x59f9('0x41')](_0x5151a8[_0x59f9('0x20')][_0x4fc706['id']],_0x4fc706);}}}return _0x5151a8[_0x59f9('0x20')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x4f')]=function(){var _0x313b99=this;return function(_0x5c036d){if(_0x5c036d){freeIsNotKey(_0x5c036d,_0x313b99[_0x59f9('0x21')],'id');for(var _0x2ad65e=0x0,_0x56dec0={},_0x1b718a={};_0x2ad65e<_0x5c036d[_0x59f9('0x44')];_0x2ad65e+=0x1){_0x56dec0=_0x5c036d[_0x2ad65e];if(_['isUndefined'](_0x313b99[_0x59f9('0x21')][_0x56dec0['id']])){_0x313b99[_0x59f9('0x21')][_0x56dec0['id']]=new Dynamics365Account(_0x56dec0);}else{_0x313b99[_0x59f9('0x41')](_0x313b99[_0x59f9('0x21')][_0x56dec0['id']],_0x56dec0);}}}return _0x313b99[_0x59f9('0x21')];};};Realtime[_0x59f9('0x40')]['initFreshsalesAccounts']=function(){var _0xcc4633=this;return function(_0x714c44){if(_0x714c44){freeIsNotKey(_0x714c44,_0xcc4633[_0x59f9('0x50')],'id');for(var _0x147277=0x0,_0x58046a={},_0x558cca={};_0x147277<_0x714c44['length'];_0x147277+=0x1){_0x58046a=_0x714c44[_0x147277];if(_['isUndefined'](_0xcc4633[_0x59f9('0x50')][_0x58046a['id']])){_0xcc4633['freshsalesAccounts'][_0x58046a['id']]=new FreshsalesAccount(_0x58046a);}else{_0xcc4633['mergeFromDatabase'](_0xcc4633[_0x59f9('0x50')][_0x58046a['id']],_0x58046a);}}}return _0xcc4633[_0x59f9('0x50')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x51')]=function(){var _0x33eb49=this;return function(_0x597f15){for(var _0x3be5c7=0x0;_0x3be5c7<_0x597f15[_0x59f9('0x44')];_0x3be5c7+=0x1){_[_0x59f9('0x52')](_0x33eb49[_0x59f9('0x11')][_0x597f15[_0x3be5c7]['name']],_0x597f15[_0x3be5c7]);}return _0x33eb49[_0x59f9('0x11')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x53')]=function(){var _0x36d964=this;return function(_0x15f4aa){clearVoiceQueues(_0x36d964[_0x59f9('0x11')]);if(_0x15f4aa){_0x15f4aa=_[_0x59f9('0x54')](_0x15f4aa,_0x59f9('0x55'));for(var _0x5514fb in _0x15f4aa){if(_0x15f4aa[_0x59f9('0x25')](_0x5514fb)){var _0x53011d={};for(var _0x2cabbe=0x0;_0x2cabbe<_0x15f4aa[_0x5514fb][_0x59f9('0x44')];_0x2cabbe+=0x1){var _0x27d6cf=_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x56')];if(_0x36d964[_0x59f9('0x11')][_0x27d6cf]){if(_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x57')]){_0x36d964['voiceQueues'][_0x27d6cf][_0x59f9('0x30')]+=0x1;}if(_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x58')]){_0x36d964['voiceQueues'][_0x27d6cf][_0x59f9('0x31')]+=0x1;}_0x36d964[_0x59f9('0x11')][_0x27d6cf][_0x59f9('0x2a')]+=moment(_0x15f4aa[_0x5514fb][_0x2cabbe]['queuecallerleaveAt'])[_0x59f9('0x59')](moment(_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x5a')]),_0x59f9('0x5b'))||0x0;if(_0x2cabbe===_0x15f4aa[_0x5514fb][_0x59f9('0x44')]-0x1){_0x36d964[_0x59f9('0x11')][_0x27d6cf]['sumDuration']+=moment(_0x15f4aa[_0x5514fb][_0x2cabbe]['queuecallercompleteAt']||_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x5c')]||_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x5d')])['diff'](moment(_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x5a')]),_0x59f9('0x5b'))||0x0;_0x36d964[_0x59f9('0x11')][_0x27d6cf][_0x59f9('0x29')]+=0x1;if(_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x5e')]){_0x36d964[_0x59f9('0x11')][_0x27d6cf][_0x59f9('0x2f')]+=0x1;_0x36d964[_0x59f9('0x11')][_0x27d6cf][_0x59f9('0x32')]+=moment(_0x15f4aa[_0x5514fb][_0x2cabbe][_0x59f9('0x5f')])[_0x59f9('0x59')](moment(_0x15f4aa[_0x5514fb][_0x2cabbe]['queuecallerleaveAt']),_0x59f9('0x5b'))||0x0;}}else{_0x36d964[_0x59f9('0x11')][_0x27d6cf][_0x59f9('0x2b')]+=_0x36d964[_0x59f9('0x11')][_0x27d6cf][_0x59f9('0x2a')]||0x0;}}}}}}return _0x36d964[_0x59f9('0x11')];};};Realtime['prototype'][_0x59f9('0x60')]=function(){var _0x1e3f2c=this;return function(_0x304648){clearVoiceCallReports(_0x1e3f2c[_0x59f9('0x61')]);if(_0x304648){for(var _0x160724=0x0;_0x160724<_0x304648['length'];_0x160724+=0x1){_0x1e3f2c[_0x59f9('0x61')][_0x59f9('0x29')]+=0x1;_0x1e3f2c[_0x59f9('0x61')][_0x59f9('0x2b')]+=_0x304648[_0x160724]['duration'];if(_0x304648[_0x160724]['disposition']===_0x59f9('0x62')){_0x1e3f2c[_0x59f9('0x61')]['answered']+=0x1;_0x1e3f2c[_0x59f9('0x61')][_0x59f9('0x2a')]+=_0x304648[_0x160724][_0x59f9('0x63')]-_0x304648[_0x160724][_0x59f9('0x64')]||0x0;_0x1e3f2c[_0x59f9('0x61')][_0x59f9('0x32')]+=_0x304648[_0x160724]['billableseconds'];}}}return _0x1e3f2c[_0x59f9('0x61')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x65')]=function(){var _0x5e41db=this;return function(_0x479777){if(_0x479777){freeIsNotKey(_0x479777,_0x5e41db[_0x59f9('0x13')],_0x59f9('0x24'));for(var _0x50cb5d=0x0,_0x1fd0e9={};_0x50cb5d<_0x479777[_0x59f9('0x44')];_0x50cb5d+=0x1){_0x1fd0e9=_0x479777[_0x50cb5d];if(_[_0x59f9('0x42')](_0x5e41db[_0x59f9('0x13')][_0x1fd0e9[_0x59f9('0x24')]])){_0x5e41db[_0x59f9('0x13')][_0x1fd0e9[_0x59f9('0x24')]]=new Campaign(_0x1fd0e9);}else{_0x5e41db[_0x59f9('0x41')](_0x5e41db[_0x59f9('0x13')][_0x1fd0e9[_0x59f9('0x24')]],_0x1fd0e9);_0x5e41db[_0x59f9('0x13')][_0x1fd0e9[_0x59f9('0x24')]][_0x59f9('0x66')]=_0x1fd0e9[_0x59f9('0x67')]?_0x1fd0e9[_0x59f9('0x67')][_0x59f9('0x24')]:undefined;}}}return _0x5e41db[_0x59f9('0x13')];};};Realtime[_0x59f9('0x40')][_0x59f9('0x68')]=function(){var _0x13309b=this;return function(_0x2f67bb){if(_0x2f67bb){freeIsNotKey(_0x2f67bb,_0x13309b[_0x59f9('0x69')],'id');for(var _0x44a933=0x0,_0x1b63fc={};_0x44a933<_0x2f67bb[_0x59f9('0x44')];_0x44a933+=0x1){_0x1b63fc=_0x2f67bb[_0x44a933];if(_['isUndefined'](_0x13309b[_0x59f9('0x69')][_0x1b63fc['id']])){_0x13309b[_0x59f9('0x69')][_0x1b63fc['id']]=new VoiceExtension(_0x1b63fc);}else{_0x13309b[_0x59f9('0x41')](_0x13309b[_0x59f9('0x69')][_0x1b63fc['id']],_0x1b63fc);}}}return _0x13309b[_0x59f9('0x69')];};};Realtime[_0x59f9('0x40')]['initCampaignHopperHistory']=function(){var _0x5dfc33=this;return function(_0xc45fb0){clearCampaigns(_0x5dfc33[_0x59f9('0x13')]);for(var _0x38b0fd=0x0;_0x38b0fd<_0xc45fb0[_0x59f9('0x44')];_0x38b0fd+=0x1){_[_0x59f9('0x52')](_0x5dfc33[_0x59f9('0x13')][_0xc45fb0[_0x38b0fd][_0x59f9('0x24')]],_0xc45fb0[_0x38b0fd]);}return _0x5dfc33[_0x59f9('0x13')];};};Realtime['prototype'][_0x59f9('0x6a')]=function(){var _0x549815=this;return function(_0x452cd0){if(_0x452cd0){freeIsNotKey(_0x452cd0,_0x549815[_0x59f9('0x6b')],'id');for(var _0x1bbdff=0x0,_0x2eeeeb={},_0x4bfa6e={};_0x1bbdff<_0x452cd0[_0x59f9('0x44')];_0x1bbdff+=0x1){_0x2eeeeb=_0x452cd0[_0x1bbdff];if(_[_0x59f9('0x42')](_0x549815[_0x59f9('0x6b')][_0x2eeeeb['id']])){_0x549815[_0x59f9('0x6b')][_0x2eeeeb['id']]=new FaxAccount(_0x2eeeeb);}else{_0x549815[_0x59f9('0x41')](_0x549815[_0x59f9('0x6b')][_0x2eeeeb['id']],_0x2eeeeb);}}}return _0x549815[_0x59f9('0x6b')];};};module[_0x59f9('0x6c')]=Realtime;
\ No newline at end of file
+var _0x2d27=['outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','prototype','length','isUndefined','mergeFromDatabase','initTrunks','trunks','voiceQueues','initTriggers','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','seconds','queuecallerabandonAt','queuecallerexitAt','diff','queuecallerjoinAt','queuecallercomplete','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','bluebird','util','moment','../model/trunk','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','triggers','campaigns','templates','voiceExtensions','channels','queueChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','total','answered','sumDuration','sumBillable','ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','abandoned','sumHoldTime'];(function(_0x4d7a70,_0x2d3bfa){var _0x3aafbb=function(_0x43fbf2){while(--_0x43fbf2){_0x4d7a70['push'](_0x4d7a70['shift']());}};_0x3aafbb(++_0x2d3bfa);}(_0x2d27,0x1d4));var _0x72d2=function(_0xc70ff5,_0x1f8a90){_0xc70ff5=_0xc70ff5-0x0;var _0x3f84b4=_0x2d27[_0xc70ff5];return _0x3f84b4;};'use strict';var BPromise=require(_0x72d2('0x0'));var util=require(_0x72d2('0x1'));var _=require('lodash');var moment=require(_0x72d2('0x2'));var Agent=require('../model/agent');var Telephone=require('../model/telephone');var Trunk=require(_0x72d2('0x3'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require('../model/trigger');var Template=require(_0x72d2('0x4'));var Campaign=require(_0x72d2('0x5'));var VoiceExtension=require(_0x72d2('0x6'));var ZendeskAccount=require(_0x72d2('0x7'));var SalesforceAccount=require(_0x72d2('0x8'));var FreshdeskAccount=require(_0x72d2('0x9'));var SugarcrmAccount=require(_0x72d2('0xa'));var ZohoAccount=require(_0x72d2('0xb'));var DeskAccount=require(_0x72d2('0xc'));var VtigerAccount=require(_0x72d2('0xd'));var ServicenowAccount=require(_0x72d2('0xe'));var Dynamics365Account=require(_0x72d2('0xf'));var FreshsalesAccount=require(_0x72d2('0x10'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x72d2('0x11')]={};this[_0x72d2('0x12')]={};this['trunks']={};this['voiceQueues']={};this[_0x72d2('0x13')]={};this[_0x72d2('0x14')]={};this[_0x72d2('0x15')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x72d2('0x16')]={};this[_0x72d2('0x17')]={};this[_0x72d2('0x18')]={};this['outboundChannels']={};this[_0x72d2('0x19')]={};this['settings']={};this[_0x72d2('0x1a')]={};this[_0x72d2('0x1b')]={};this[_0x72d2('0x1c')]={};this[_0x72d2('0x1d')]={};this[_0x72d2('0x1e')]={};this[_0x72d2('0x1f')]={};this[_0x72d2('0x20')]={};this[_0x72d2('0x21')]={};this[_0x72d2('0x22')]={};this[_0x72d2('0x23')]={};this['faxAccounts']={};};function freeIsNotKey(_0x94edc3,_0x435111,_0x59a85f){var _0x36fce0=_[_0x72d2('0x24')](_0x94edc3,function(_0x20af5d,_0x3a46dd){return _0x20af5d[_0x59a85f];});for(var _0x2adea6 in _0x435111){if(_0x435111[_0x72d2('0x25')](_0x2adea6)){if(!_0x36fce0[_0x2adea6]){delete _0x435111[_0x2adea6];}}}}function freeIsNotKeySip(_0x376150,_0x194d33){var _0x579b6f=_['mapKeys'](_0x376150,function(_0x583d6f,_0x532ea2){return util[_0x72d2('0x26')](_0x72d2('0x27'),_0x583d6f[_0x72d2('0x28')]);});for(var _0x391e52 in _0x194d33){if(_0x194d33[_0x72d2('0x25')](_0x391e52)){if(!_0x579b6f[_0x391e52]){delete _0x194d33[_0x391e52];}}}}function freeIsNotKeyAgent(_0x471caa,_0x3ef085){var _0x30086a=_[_0x72d2('0x24')](_0x471caa,function(_0x4940da,_0x433e26){var _0xdc0117=_[_0x72d2('0x29')](_0x4940da['interface'])?util[_0x72d2('0x26')](_0x72d2('0x27'),_0x4940da[_0x72d2('0x28')]):_0x4940da[_0x72d2('0x2a')];return _0xdc0117;});for(var _0x19397b in _0x3ef085){if(_0x3ef085[_0x72d2('0x25')](_0x19397b)){if(!_0x30086a[_0x19397b]){delete _0x3ef085[_0x19397b];}}}}function clearVoiceCallReports(_0x293152){_0x293152[_0x72d2('0x2b')]=0x0;_0x293152[_0x72d2('0x2c')]=0x0;_0x293152['sumHoldTime']=0x0;_0x293152[_0x72d2('0x2d')]=0x0;_0x293152[_0x72d2('0x2e')]=0x0;}function clearCampaigns(_0x599e8d){if(!_['isEmpty'](_0x599e8d)){for(var _0x324c6d in _0x599e8d){if(_0x599e8d['hasOwnProperty'](_0x324c6d)){_0x599e8d[_0x324c6d][_0x72d2('0x2f')]=0x0;_0x599e8d[_0x324c6d][_0x72d2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x37843c){if(!_['isEmpty'](_0x37843c)){for(var _0x404756 in _0x37843c){if(_0x37843c[_0x72d2('0x25')](_0x404756)){_0x37843c[_0x404756]['total']=0x0;_0x37843c[_0x404756]['answered']=0x0;_0x37843c[_0x404756][_0x72d2('0x31')]=0x0;_0x37843c[_0x404756][_0x72d2('0x32')]=0x0;_0x37843c[_0x404756][_0x72d2('0x33')]=0x0;_0x37843c[_0x404756][_0x72d2('0x2d')]=0x0;_0x37843c[_0x404756][_0x72d2('0x2e')]=0x0;_0x37843c[_0x404756][_0x72d2('0x34')]=0x0;_0x37843c[_0x404756][_0x72d2('0x35')]=0x0;_0x37843c[_0x404756][_0x72d2('0x36')]=0x0;_0x37843c[_0x404756][_0x72d2('0x37')]=0x0;_0x37843c[_0x404756]['outboundNoSuchCallsDay']=0x0;_0x37843c[_0x404756][_0x72d2('0x38')]=0x0;_0x37843c[_0x404756]['outboundDropCallsDayTimeout']=0x0;_0x37843c[_0x404756]['outboundDropCallsDayCallersExit']=0x0;_0x37843c[_0x404756]['outboundBlacklistCallsDay']=0x0;_0x37843c[_0x404756][_0x72d2('0x39')]=0x0;_0x37843c[_0x404756][_0x72d2('0x3a')]=0x0;_0x37843c[_0x404756][_0x72d2('0x3b')]=0x0;_0x37843c[_0x404756][_0x72d2('0x34')]=0x0;_0x37843c[_0x404756][_0x72d2('0x3c')]=0x0;_0x37843c[_0x404756]['queueStatusComplete']=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x514ba2,_0x41fdaa){for(var _0x539d32 in _0x41fdaa){if(_0x514ba2[_0x72d2('0x25')](_0x539d32)){_0x514ba2[_0x539d32]=_0x41fdaa[_0x539d32];}}};Realtime[_0x72d2('0x3d')]['initAgents']=function(){var _0x11b6ab=this;return function(_0x19e336){if(_0x19e336){freeIsNotKeyAgent(_0x19e336,_0x11b6ab['agents']);for(var _0x84e357=0x0,_0x1d47ad={},_0x1d0bfd={};_0x84e357<_0x19e336[_0x72d2('0x3e')];_0x84e357+=0x1){_0x1d47ad=_0x19e336[_0x84e357];var _0x4791c8=_[_0x72d2('0x29')](_0x1d47ad[_0x72d2('0x2a')])?util[_0x72d2('0x26')](_0x72d2('0x27'),_0x1d47ad[_0x72d2('0x28')]):_0x1d47ad[_0x72d2('0x2a')];if(_[_0x72d2('0x3f')](_0x11b6ab[_0x72d2('0x11')][_0x4791c8])){_0x11b6ab[_0x72d2('0x11')][_0x4791c8]=new Agent(_0x1d47ad);}else{_0x11b6ab['mergeFromDatabase'](_0x11b6ab[_0x72d2('0x11')][_0x4791c8],_0x1d47ad);}}}return _0x11b6ab[_0x72d2('0x11')];};};Realtime[_0x72d2('0x3d')]['initTelephones']=function(){var _0x383fc3=this;return function(_0x3ef251){if(_0x3ef251){freeIsNotKeySip(_0x3ef251,_0x383fc3[_0x72d2('0x12')]);for(var _0x6a7c2d=0x0,_0x3d67c6={},_0x202121={};_0x6a7c2d<_0x3ef251[_0x72d2('0x3e')];_0x6a7c2d+=0x1){_0x3d67c6=_0x3ef251[_0x6a7c2d];if(_[_0x72d2('0x3f')](_0x383fc3[_0x72d2('0x12')][util[_0x72d2('0x26')](_0x72d2('0x27'),_0x3d67c6[_0x72d2('0x28')])])){_0x383fc3['telephones'][util[_0x72d2('0x26')]('SIP/%s',_0x3d67c6[_0x72d2('0x28')])]=new Telephone(_0x3d67c6);}else{_0x383fc3[_0x72d2('0x40')](_0x383fc3[_0x72d2('0x12')][util[_0x72d2('0x26')](_0x72d2('0x27'),_0x3d67c6[_0x72d2('0x28')])],_0x3d67c6);}}}return _0x383fc3[_0x72d2('0x12')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x41')]=function(){var _0x51a8c5=this;return function(_0x2600ef){if(_0x2600ef){freeIsNotKeySip(_0x2600ef,_0x51a8c5[_0x72d2('0x42')]);for(var _0x58fe5a=0x0,_0x32bf5b={},_0x3eed64={};_0x58fe5a<_0x2600ef[_0x72d2('0x3e')];_0x58fe5a+=0x1){_0x32bf5b=_0x2600ef[_0x58fe5a];if(_[_0x72d2('0x3f')](_0x51a8c5['trunks'][util[_0x72d2('0x26')](_0x72d2('0x27'),_0x32bf5b[_0x72d2('0x28')])])){_0x51a8c5[_0x72d2('0x42')][util[_0x72d2('0x26')]('SIP/%s',_0x32bf5b[_0x72d2('0x28')])]=new Trunk(_0x32bf5b);}else{_0x51a8c5[_0x72d2('0x40')](_0x51a8c5[_0x72d2('0x42')][util[_0x72d2('0x26')]('SIP/%s',_0x32bf5b['name'])],_0x32bf5b);}}}return _0x51a8c5[_0x72d2('0x42')];};};Realtime[_0x72d2('0x3d')]['initVoiceQueues']=function(){var _0x1e1c51=this;return function(_0x29e7f2){if(_0x29e7f2){freeIsNotKey(_0x29e7f2,_0x1e1c51[_0x72d2('0x43')],_0x72d2('0x28'));for(var _0x30e8f3=0x0,_0x38b617={},_0x1b26bf={};_0x30e8f3<_0x29e7f2['length'];_0x30e8f3+=0x1){_0x38b617=_0x29e7f2[_0x30e8f3];if(_[_0x72d2('0x3f')](_0x1e1c51[_0x72d2('0x43')][_0x38b617['name']])){_0x1e1c51['voiceQueues'][_0x38b617[_0x72d2('0x28')]]=new VoiceQueue(_0x38b617);}else{_0x1e1c51[_0x72d2('0x40')](_0x1e1c51['voiceQueues'][_0x38b617[_0x72d2('0x28')]],_0x38b617);}}}return _0x1e1c51[_0x72d2('0x43')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x44')]=function(){var _0x55a177=this;return function(_0x4723f8){if(_0x4723f8){freeIsNotKey(_0x4723f8,_0x55a177[_0x72d2('0x13')],'id');for(var _0x2c104b=0x0,_0x5b9af8={},_0x4dc450={};_0x2c104b<_0x4723f8[_0x72d2('0x3e')];_0x2c104b+=0x1){_0x5b9af8=_0x4723f8[_0x2c104b];if(_[_0x72d2('0x3f')](_0x55a177['triggers'][_0x5b9af8['id']])){_0x55a177[_0x72d2('0x13')][_0x5b9af8['id']]=new Trigger(_0x5b9af8);}else{_0x55a177[_0x72d2('0x40')](_0x55a177['triggers'][_0x5b9af8['id']],_0x5b9af8);}}}return _0x55a177[_0x72d2('0x13')];};};Realtime[_0x72d2('0x3d')]['initTemplates']=function(){var _0x1b3f77=this;return function(_0x3f9a74){if(_0x3f9a74){freeIsNotKey(_0x3f9a74,_0x1b3f77['templates'],'id');for(var _0x4a643b=0x0,_0x587d0c={},_0x3066c7={};_0x4a643b<_0x3f9a74[_0x72d2('0x3e')];_0x4a643b+=0x1){_0x587d0c=_0x3f9a74[_0x4a643b];if(_['isUndefined'](_0x1b3f77[_0x72d2('0x15')][_0x587d0c['id']])){_0x1b3f77[_0x72d2('0x15')][_0x587d0c['id']]=new Template(_0x587d0c);}else{_0x1b3f77['mergeFromDatabase'](_0x1b3f77['templates'][_0x587d0c['id']],_0x587d0c);}}}return _0x1b3f77[_0x72d2('0x15')];};};Realtime[_0x72d2('0x3d')]['initZendeskAccounts']=function(){var _0x323f55=this;return function(_0x52d6ac){if(_0x52d6ac){freeIsNotKey(_0x52d6ac,_0x323f55[_0x72d2('0x1a')],'id');for(var _0x4870c8=0x0,_0x4d9732={},_0x5a8e86={};_0x4870c8<_0x52d6ac[_0x72d2('0x3e')];_0x4870c8+=0x1){_0x4d9732=_0x52d6ac[_0x4870c8];if(_[_0x72d2('0x3f')](_0x323f55['zendeskAccounts'][_0x4d9732['id']])){_0x323f55[_0x72d2('0x1a')][_0x4d9732['id']]=new ZendeskAccount(_0x4d9732);}else{_0x323f55[_0x72d2('0x40')](_0x323f55[_0x72d2('0x1a')][_0x4d9732['id']],_0x4d9732);}}}return _0x323f55[_0x72d2('0x1a')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x45')]=function(){var _0x22fede=this;return function(_0x2e91a0){if(_0x2e91a0){freeIsNotKey(_0x2e91a0,_0x22fede[_0x72d2('0x1b')],'id');for(var _0x490526=0x0,_0x1ff06a={},_0x158697={};_0x490526<_0x2e91a0[_0x72d2('0x3e')];_0x490526+=0x1){_0x1ff06a=_0x2e91a0[_0x490526];if(_[_0x72d2('0x3f')](_0x22fede[_0x72d2('0x1b')][_0x1ff06a['id']])){_0x22fede['salesforceAccounts'][_0x1ff06a['id']]=new SalesforceAccount(_0x1ff06a);}else{_0x22fede[_0x72d2('0x40')](_0x22fede[_0x72d2('0x1b')][_0x1ff06a['id']],_0x1ff06a);}}}return _0x22fede[_0x72d2('0x1b')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x46')]=function(){var _0x5880a0=this;return function(_0x33148f){if(_0x33148f){freeIsNotKey(_0x33148f,_0x5880a0[_0x72d2('0x1d')],'id');for(var _0x2fb3c2=0x0,_0xa46b67={},_0xbb0bb7={};_0x2fb3c2<_0x33148f[_0x72d2('0x3e')];_0x2fb3c2+=0x1){_0xa46b67=_0x33148f[_0x2fb3c2];if(_[_0x72d2('0x3f')](_0x5880a0[_0x72d2('0x1d')][_0xa46b67['id']])){_0x5880a0[_0x72d2('0x1d')][_0xa46b67['id']]=new FreshdeskAccount(_0xa46b67);}else{_0x5880a0[_0x72d2('0x40')](_0x5880a0['freshdeskAccounts'][_0xa46b67['id']],_0xa46b67);}}}return _0x5880a0[_0x72d2('0x1d')];};};Realtime['prototype'][_0x72d2('0x47')]=function(){var _0x432bd1=this;return function(_0x1dc8c8){if(_0x1dc8c8){freeIsNotKey(_0x1dc8c8,_0x432bd1['zohoAccounts'],'id');for(var _0x2eae2d=0x0,_0x4b9cb1={},_0x238f95={};_0x2eae2d<_0x1dc8c8['length'];_0x2eae2d+=0x1){_0x4b9cb1=_0x1dc8c8[_0x2eae2d];if(_[_0x72d2('0x3f')](_0x432bd1[_0x72d2('0x1e')][_0x4b9cb1['id']])){_0x432bd1['zohoAccounts'][_0x4b9cb1['id']]=new ZohoAccount(_0x4b9cb1);}else{_0x432bd1['mergeFromDatabase'](_0x432bd1[_0x72d2('0x1e')][_0x4b9cb1['id']],_0x4b9cb1);}}}return _0x432bd1['zohoAccounts'];};};Realtime['prototype'][_0x72d2('0x48')]=function(){var _0x3d77ab=this;return function(_0x41ef71){if(_0x41ef71){freeIsNotKey(_0x41ef71,_0x3d77ab[_0x72d2('0x1f')],'id');for(var _0x18de4e=0x0,_0x2e05aa={},_0x398f80={};_0x18de4e<_0x41ef71[_0x72d2('0x3e')];_0x18de4e+=0x1){_0x2e05aa=_0x41ef71[_0x18de4e];if(_[_0x72d2('0x3f')](_0x3d77ab[_0x72d2('0x1f')][_0x2e05aa['id']])){_0x3d77ab[_0x72d2('0x1f')][_0x2e05aa['id']]=new DeskAccount(_0x2e05aa);}else{_0x3d77ab['mergeFromDatabase'](_0x3d77ab[_0x72d2('0x1f')][_0x2e05aa['id']],_0x2e05aa);}}}return _0x3d77ab[_0x72d2('0x1f')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x49')]=function(){var _0x39c54f=this;return function(_0x19d5c1){if(_0x19d5c1){freeIsNotKey(_0x19d5c1,_0x39c54f[_0x72d2('0x1c')],'id');for(var _0x223a05=0x0,_0xaa94d0={},_0x5a671e={};_0x223a05<_0x19d5c1[_0x72d2('0x3e')];_0x223a05+=0x1){_0xaa94d0=_0x19d5c1[_0x223a05];if(_[_0x72d2('0x3f')](_0x39c54f[_0x72d2('0x1c')][_0xaa94d0['id']])){_0x39c54f['sugarcrmAccounts'][_0xaa94d0['id']]=new SugarcrmAccount(_0xaa94d0);}else{_0x39c54f[_0x72d2('0x40')](_0x39c54f[_0x72d2('0x1c')][_0xaa94d0['id']],_0xaa94d0);}}}return _0x39c54f[_0x72d2('0x1c')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x4a')]=function(){var _0x5a0803=this;return function(_0x517cd1){if(_0x517cd1){freeIsNotKey(_0x517cd1,_0x5a0803[_0x72d2('0x20')],'id');for(var _0x169a9e=0x0,_0x29d86b={},_0x41d876={};_0x169a9e<_0x517cd1[_0x72d2('0x3e')];_0x169a9e+=0x1){_0x29d86b=_0x517cd1[_0x169a9e];if(_[_0x72d2('0x3f')](_0x5a0803[_0x72d2('0x20')][_0x29d86b['id']])){_0x5a0803['vtigerAccounts'][_0x29d86b['id']]=new VtigerAccount(_0x29d86b);}else{_0x5a0803['mergeFromDatabase'](_0x5a0803[_0x72d2('0x20')][_0x29d86b['id']],_0x29d86b);}}}return _0x5a0803[_0x72d2('0x20')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x4b')]=function(){var _0x29fb8f=this;return function(_0x55839c){if(_0x55839c){freeIsNotKey(_0x55839c,_0x29fb8f['servicenowAccounts'],'id');for(var _0x44ba47=0x0,_0xb273e1={},_0x50b395={};_0x44ba47<_0x55839c[_0x72d2('0x3e')];_0x44ba47+=0x1){_0xb273e1=_0x55839c[_0x44ba47];if(_[_0x72d2('0x3f')](_0x29fb8f[_0x72d2('0x21')][_0xb273e1['id']])){_0x29fb8f[_0x72d2('0x21')][_0xb273e1['id']]=new ServicenowAccount(_0xb273e1);}else{_0x29fb8f['mergeFromDatabase'](_0x29fb8f[_0x72d2('0x21')][_0xb273e1['id']],_0xb273e1);}}}return _0x29fb8f[_0x72d2('0x21')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x4c')]=function(){var _0x1d6e3d=this;return function(_0x128561){if(_0x128561){freeIsNotKey(_0x128561,_0x1d6e3d[_0x72d2('0x22')],'id');for(var _0x3e4033=0x0,_0x5c8d5b={},_0x25bf7a={};_0x3e4033<_0x128561['length'];_0x3e4033+=0x1){_0x5c8d5b=_0x128561[_0x3e4033];if(_[_0x72d2('0x3f')](_0x1d6e3d[_0x72d2('0x22')][_0x5c8d5b['id']])){_0x1d6e3d[_0x72d2('0x22')][_0x5c8d5b['id']]=new Dynamics365Account(_0x5c8d5b);}else{_0x1d6e3d[_0x72d2('0x40')](_0x1d6e3d['dynamics365Accounts'][_0x5c8d5b['id']],_0x5c8d5b);}}}return _0x1d6e3d[_0x72d2('0x22')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x4d')]=function(){var _0x598c38=this;return function(_0x5a50cd){if(_0x5a50cd){freeIsNotKey(_0x5a50cd,_0x598c38['freshsalesAccounts'],'id');for(var _0x46d8d6=0x0,_0x182637={},_0x176338={};_0x46d8d6<_0x5a50cd[_0x72d2('0x3e')];_0x46d8d6+=0x1){_0x182637=_0x5a50cd[_0x46d8d6];if(_['isUndefined'](_0x598c38[_0x72d2('0x23')][_0x182637['id']])){_0x598c38[_0x72d2('0x23')][_0x182637['id']]=new FreshsalesAccount(_0x182637);}else{_0x598c38['mergeFromDatabase'](_0x598c38[_0x72d2('0x23')][_0x182637['id']],_0x182637);}}}return _0x598c38[_0x72d2('0x23')];};};Realtime[_0x72d2('0x3d')]['initVoiceQueueHopperHistory']=function(){var _0x663477=this;return function(_0xa7dd4b){for(var _0x1a1f4c=0x0;_0x1a1f4c<_0xa7dd4b[_0x72d2('0x3e')];_0x1a1f4c+=0x1){_[_0x72d2('0x4e')](_0x663477[_0x72d2('0x43')][_0xa7dd4b[_0x1a1f4c][_0x72d2('0x28')]],_0xa7dd4b[_0x1a1f4c]);}return _0x663477[_0x72d2('0x43')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x4f')]=function(){var _0x11bf2a=this;return function(_0x4de92a){clearVoiceQueues(_0x11bf2a[_0x72d2('0x43')]);if(_0x4de92a){_0x4de92a=_['groupBy'](_0x4de92a,_0x72d2('0x50'));for(var _0x2e21e2 in _0x4de92a){if(_0x4de92a[_0x72d2('0x25')](_0x2e21e2)){var _0x4eeb5d={};for(var _0x22d923=0x0;_0x22d923<_0x4de92a[_0x2e21e2][_0x72d2('0x3e')];_0x22d923+=0x1){var _0x32981a=_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x51')];if(_0x11bf2a[_0x72d2('0x43')][_0x32981a]){if(_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x52')]){_0x11bf2a['voiceQueues'][_0x32981a][_0x72d2('0x31')]+=0x1;}if(_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x53')]){_0x11bf2a[_0x72d2('0x43')][_0x32981a][_0x72d2('0x32')]+=0x1;}_0x11bf2a[_0x72d2('0x43')][_0x32981a]['sumHoldTime']+=moment(_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x54')])['diff'](moment(_0x4de92a[_0x2e21e2][_0x22d923]['queuecallerjoinAt']),_0x72d2('0x55'))||0x0;if(_0x22d923===_0x4de92a[_0x2e21e2][_0x72d2('0x3e')]-0x1){_0x11bf2a['voiceQueues'][_0x32981a][_0x72d2('0x2d')]+=moment(_0x4de92a[_0x2e21e2][_0x22d923]['queuecallercompleteAt']||_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x56')]||_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x57')])[_0x72d2('0x58')](moment(_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x59')]),'seconds')||0x0;_0x11bf2a[_0x72d2('0x43')][_0x32981a][_0x72d2('0x2b')]+=0x1;if(_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x5a')]){_0x11bf2a['voiceQueues'][_0x32981a][_0x72d2('0x2c')]+=0x1;_0x11bf2a[_0x72d2('0x43')][_0x32981a][_0x72d2('0x2e')]+=moment(_0x4de92a[_0x2e21e2][_0x22d923]['queuecallercompleteAt'])[_0x72d2('0x58')](moment(_0x4de92a[_0x2e21e2][_0x22d923][_0x72d2('0x54')]),_0x72d2('0x55'))||0x0;}}else{_0x11bf2a[_0x72d2('0x43')][_0x32981a][_0x72d2('0x2d')]+=_0x11bf2a[_0x72d2('0x43')][_0x32981a]['sumHoldTime']||0x0;}}}}}}return _0x11bf2a['voiceQueues'];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x5b')]=function(){var _0x2f178e=this;return function(_0xa359bd){clearVoiceCallReports(_0x2f178e[_0x72d2('0x5c')]);if(_0xa359bd){for(var _0x1a3eaa=0x0;_0x1a3eaa<_0xa359bd['length'];_0x1a3eaa+=0x1){_0x2f178e[_0x72d2('0x5c')][_0x72d2('0x2b')]+=0x1;_0x2f178e[_0x72d2('0x5c')][_0x72d2('0x2d')]+=_0xa359bd[_0x1a3eaa][_0x72d2('0x5d')];if(_0xa359bd[_0x1a3eaa][_0x72d2('0x5e')]===_0x72d2('0x5f')){_0x2f178e[_0x72d2('0x5c')][_0x72d2('0x2c')]+=0x1;_0x2f178e[_0x72d2('0x5c')][_0x72d2('0x33')]+=_0xa359bd[_0x1a3eaa]['duration']-_0xa359bd[_0x1a3eaa][_0x72d2('0x60')]||0x0;_0x2f178e[_0x72d2('0x5c')][_0x72d2('0x2e')]+=_0xa359bd[_0x1a3eaa]['billableseconds'];}}}return _0x2f178e[_0x72d2('0x5c')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x61')]=function(){var _0x5f13ab=this;return function(_0x1bce8e){if(_0x1bce8e){freeIsNotKey(_0x1bce8e,_0x5f13ab[_0x72d2('0x14')],_0x72d2('0x28'));for(var _0x3413ab=0x0,_0x37b856={};_0x3413ab<_0x1bce8e[_0x72d2('0x3e')];_0x3413ab+=0x1){_0x37b856=_0x1bce8e[_0x3413ab];if(_[_0x72d2('0x3f')](_0x5f13ab[_0x72d2('0x14')][_0x37b856[_0x72d2('0x28')]])){_0x5f13ab[_0x72d2('0x14')][_0x37b856[_0x72d2('0x28')]]=new Campaign(_0x37b856);}else{_0x5f13ab[_0x72d2('0x40')](_0x5f13ab['campaigns'][_0x37b856['name']],_0x37b856);_0x5f13ab[_0x72d2('0x14')][_0x37b856[_0x72d2('0x28')]][_0x72d2('0x62')]=_0x37b856['SquareProject']?_0x37b856[_0x72d2('0x63')][_0x72d2('0x28')]:undefined;}}}return _0x5f13ab[_0x72d2('0x14')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x64')]=function(){var _0x3e5b3b=this;return function(_0x2198b7){if(_0x2198b7){freeIsNotKey(_0x2198b7,_0x3e5b3b['voiceExtensions'],'id');for(var _0x41f3f6=0x0,_0x21ebfa={};_0x41f3f6<_0x2198b7['length'];_0x41f3f6+=0x1){_0x21ebfa=_0x2198b7[_0x41f3f6];if(_[_0x72d2('0x3f')](_0x3e5b3b[_0x72d2('0x16')][_0x21ebfa['id']])){_0x3e5b3b[_0x72d2('0x16')][_0x21ebfa['id']]=new VoiceExtension(_0x21ebfa);}else{_0x3e5b3b[_0x72d2('0x40')](_0x3e5b3b[_0x72d2('0x16')][_0x21ebfa['id']],_0x21ebfa);}}}return _0x3e5b3b[_0x72d2('0x16')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x65')]=function(){var _0x1a623c=this;return function(_0x489c70){clearCampaigns(_0x1a623c[_0x72d2('0x14')]);for(var _0x5bfe49=0x0;_0x5bfe49<_0x489c70[_0x72d2('0x3e')];_0x5bfe49+=0x1){_[_0x72d2('0x4e')](_0x1a623c[_0x72d2('0x14')][_0x489c70[_0x5bfe49][_0x72d2('0x28')]],_0x489c70[_0x5bfe49]);}return _0x1a623c[_0x72d2('0x14')];};};Realtime[_0x72d2('0x3d')][_0x72d2('0x66')]=function(){var _0x515b85=this;return function(_0x21664f){if(_0x21664f){freeIsNotKey(_0x21664f,_0x515b85[_0x72d2('0x67')],'id');for(var _0x12462d=0x0,_0x3e3e72={},_0x1dffcd={};_0x12462d<_0x21664f[_0x72d2('0x3e')];_0x12462d+=0x1){_0x3e3e72=_0x21664f[_0x12462d];if(_[_0x72d2('0x3f')](_0x515b85[_0x72d2('0x67')][_0x3e3e72['id']])){_0x515b85[_0x72d2('0x67')][_0x3e3e72['id']]=new FaxAccount(_0x3e3e72);}else{_0x515b85['mergeFromDatabase'](_0x515b85[_0x72d2('0x67')][_0x3e3e72['id']],_0x3e3e72);}}}return _0x515b85[_0x72d2('0x67')];};};module['exports']=Realtime;
\ No newline at end of file
index 26afbeb..642b015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafad=['queue','lastdata','context','from-voip-provider','callerid','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','connectedlinenum','calleridname','linkedid','transfereelinkedid','uniqueid','UserId','monitors','monitorFilename','createdAt','connectedlinename','isArray','forEach','Local','substring','indexOf','phone','lastIndexOf','exports','moment','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','voiceQueueReport','bind','voiceCallReport','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedTransfer','find','name','isNil','accountcode','interface','format','SIP/%s','length','findAgent','assigned','lastAssignedTo','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','getCallType','channel','split','calleridnum','outbound','destination','exten','type','dialer'];(function(_0x48d5b1,_0x253dac){var _0x342d4a=function(_0x48c6f2){while(--_0x48c6f2){_0x48d5b1['push'](_0x48d5b1['shift']());}};_0x342d4a(++_0x253dac);}(_0xafad,0x169));var _0xdafa=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xafad[_0x5f1391];return _0x50ebe3;};'use strict';var _=require('lodash');var moment=require(_0xdafa('0x0'));var util=require('util');var config=require(_0xdafa('0x1'));var ami=require(_0xdafa('0x2'));var RpcVoiceAgentReport=require(_0xdafa('0x3'));var RpcVoiceCallReport=require(_0xdafa('0x4'));var RpcVoiceDialReport=require(_0xdafa('0x5'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xdafa('0x6'));var RpcVoiceTransferReport=require(_0xdafa('0x7'));var VoiceQueueReport=require(_0xdafa('0x8'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0xdafa('0x9'));var VoiceDialReport=require(_0xdafa('0xa'));var UserReport=require(_0xdafa('0xb'));function Report(_0x7cbd85){this[_0xdafa('0xc')]=_0x7cbd85;this[_0xdafa('0xd')]=_0x7cbd85[_0xdafa('0xd')];this[_0xdafa('0xe')]=_0x7cbd85[_0xdafa('0xe')];}Report[_0xdafa('0xf')][_0xdafa('0x10')]=function(_0x5e4943){var _0x2f40ed=new VoiceQueueReport(this['realtime']);var _0x4e81e7=new VoiceAgentReport(this[_0xdafa('0xc')]);var _0x2efecc=new VoiceDialReport(this[_0xdafa('0xc')]);var _0x1c17c1=new VoiceCallReport(this['realtime']);var _0x4cdf5a=new UserReport(this[_0xdafa('0xc')]);if(config[_0xdafa('0x11')]&&config[_0xdafa('0x11')]['disabled']){ami['on']('custom:voiceQueueReport',this[_0xdafa('0x12')][_0xdafa('0x13')](this));ami['on']('custom:voiceCallReport',this[_0xdafa('0x14')][_0xdafa('0x13')](this));ami['on']('custom:voiceAgentReport',this[_0xdafa('0x15')][_0xdafa('0x13')](this));ami['on']('custom:voiceDialReport',this[_0xdafa('0x16')][_0xdafa('0x13')](this));ami['on'](_0xdafa('0x17'),this[_0xdafa('0x18')][_0xdafa('0x13')](this));ami['on']('attendedtransfer',this[_0xdafa('0x19')][_0xdafa('0x13')](this));}};Report['prototype']['findAgent']=function(_0x19aeb8){var _0x117ad0;_0x117ad0=_[_0xdafa('0x1a')](this[_0xdafa('0xd')],function(_0x3699d0){return _0x3699d0['accountcode']==_0x19aeb8||_0x3699d0[_0xdafa('0x1b')]==_0x19aeb8;});if(_[_0xdafa('0x1c')](_0x117ad0)){var _0x53ad79=_['find'](this[_0xdafa('0xe')],function(_0x57b05b){return _0x57b05b[_0xdafa('0x1d')]==_0x19aeb8||_0x57b05b[_0xdafa('0x1b')]==_0x19aeb8;});if(_0x53ad79){_0x117ad0=_[_0xdafa('0x1a')](this['agents'],function(_0x403780){return _0x403780[_0xdafa('0x1e')]==util[_0xdafa('0x1f')](_0xdafa('0x20'),_0x53ad79[_0xdafa('0x1b')]);});}}return _0x117ad0;};Report[_0xdafa('0xf')][_0xdafa('0x12')]=function(_0x58961d){for(var _0x1a2253=0x0;_0x1a2253<_0x58961d[_0xdafa('0x21')];_0x1a2253+=0x1){var _0x7e2c4c=this[_0xdafa('0x22')](_0x58961d[_0x1a2253]['connectedlinenum']);if(_0x7e2c4c){_0x58961d[_0x1a2253][_0xdafa('0x1d')]=_0x7e2c4c[_0xdafa('0x1d')];_0x58961d[_0x1a2253][_0xdafa('0x23')]=!![];_0x58961d[_0x1a2253][_0xdafa('0x24')]=_0x7e2c4c[_0xdafa('0x1b')];_0x58961d[_0x1a2253]['interface']=_[_0xdafa('0x1c')](_0x7e2c4c[_0xdafa('0x1e')])?util[_0xdafa('0x1f')](_0xdafa('0x20'),_0x7e2c4c['name']):_0x7e2c4c[_0xdafa('0x1e')];if(_0x58961d[_0x1a2253][_0xdafa('0x25')]){_0x58961d[_0x1a2253]['queuecallercompleteAt']=moment()[_0xdafa('0x1f')](_0xdafa('0x26'));}if(_0x58961d[_0x1a2253][_0xdafa('0x27')]){_0x58961d[_0x1a2253][_0xdafa('0x28')]=moment()[_0xdafa('0x1f')](_0xdafa('0x26'));}RpcMemberReport[_0xdafa('0x12')](_0x58961d[_0x1a2253]);}RpcVoiceQueueReport[_0xdafa('0x29')](_0x58961d[_0x1a2253]);}};function extractCalleridNumber(_0x2ea43c){var _0x1a2638=_0x2ea43c[_0xdafa('0x2a')](/<(.*?)>/);return _0x1a2638?_0x1a2638[0x1]:_0x2ea43c;}Report[_0xdafa('0xf')][_0xdafa('0x2b')]=function(_0x1fa4ae){for(var _0xb4fe27=0x0;_0xb4fe27<Object[_0xdafa('0x2c')](this[_0xdafa('0xd')])['length'];_0xb4fe27++){var _0x3aeac2=Object[_0xdafa('0x2c')](this['agents'])[_0xb4fe27];var _0x3e9c98=this[_0xdafa('0xd')][_0x3aeac2];if(_0x3e9c98[_0xdafa('0x1d')]===Number(_0x1fa4ae))return _0x3e9c98;}return null;};Report[_0xdafa('0xf')][_0xdafa('0x2d')]=function(_0x192acd){var _0x191f9b=_0x192acd[_0xdafa('0x2e')][_0xdafa('0x2f')]('-')[0x0];var _0x1cf428=this[_0xdafa('0xd')][_0x191f9b];if(!_0x1cf428)_0x1cf428=this['getAgentByInternal'](_0x192acd[_0xdafa('0x30')]);return!_0x1cf428?_0xdafa('0x31'):'internal';};Report[_0xdafa('0xf')]['voiceCallReport']=function(_0x1e4761){_0x1e4761[_0xdafa('0x32')]=_0x1e4761['destination']||_0x1e4761[_0xdafa('0x33')];if(_0x1e4761[_0xdafa('0x34')]==_0xdafa('0x35')){_0x1e4761['lastapplication']=_0xdafa('0x36');_0x1e4761[_0xdafa('0x37')]=_0x1e4761[_0xdafa('0x36')];if(_0x1e4761[_0xdafa('0x38')]==_0xdafa('0x39')){_0x1e4761[_0xdafa('0x1d')]='';_0x1e4761[_0xdafa('0x32')]=extractCalleridNumber(_0x1e4761[_0xdafa('0x3a')]);}else if(_0x1e4761[_0xdafa('0x38')]=='from-sip'){if(_0x1e4761[_0xdafa('0x32')]==_0xdafa('0x3b')){_0x1e4761[_0xdafa('0x32')]=extractCalleridNumber(_0x1e4761[_0xdafa('0x3c')]);_0x1e4761['calleridnum']=_0x1e4761[_0xdafa('0x3d')];_0x1e4761[_0xdafa('0x3e')]=[_0x1e4761[_0xdafa('0x2e')],_0x1e4761[_0xdafa('0x2e')]=_0x1e4761[_0xdafa('0x3e')]][0x0];_0x1e4761['callerid']=_0x1e4761['calleridpreview'];}else{_0x1e4761[_0xdafa('0x32')]=_0x1e4761[_0xdafa('0x30')];_0x1e4761[_0xdafa('0x30')]=_0x1e4761['originatecalleridnum'];if(_0x1e4761[_0xdafa('0x3f')]==_0xdafa('0x40')){_0x1e4761[_0xdafa('0x1d')]=_0x1e4761[_0xdafa('0x41')];}else{_0x1e4761['accountcode']='';}}}}else{_0x1e4761[_0xdafa('0x3a')]=util[_0xdafa('0x1f')]('\x22%s\x22\x20<%s>',_0x1e4761[_0xdafa('0x42')],_0x1e4761[_0xdafa('0x30')]);}if(RpcVoiceTransferReport['transfers'][_0x1e4761[_0xdafa('0x43')]]){var _0x3268c9=RpcVoiceTransferReport['transfers'][_0x1e4761[_0xdafa('0x43')]];_0x3268c9[_0xdafa('0x44')]=_0x1e4761[_0xdafa('0x45')];RpcVoiceTransferReport[_0xdafa('0x18')](_0x3268c9);delete RpcVoiceTransferReport['transfers'][_0x1e4761[_0xdafa('0x43')]];}if(_['isNil'](_0x1e4761['type'])){_0x1e4761[_0xdafa('0x34')]=this[_0xdafa('0x2d')](_0x1e4761);}if(_[_0xdafa('0x1c')](_0x1e4761[_0xdafa('0x46')])){var _0x12d52f=_0x1e4761[_0xdafa('0x2e')]['split']('-')[0x0];var _0x1b46d5=this['agents'][_0x12d52f];if(!_0x1b46d5)_0x1b46d5=this[_0xdafa('0x2b')](_0x1e4761[_0xdafa('0x1d')]);if(_0x1b46d5){_0x1e4761[_0xdafa('0x46')]=_0x1b46d5['id'];_0x1e4761['membername']=_0x1b46d5[_0xdafa('0x1b')];}}RpcVoiceCallReport['create'](_0x1e4761);if(_0x1e4761['monitor']){for(var _0x598717=0x0;_0x598717<_0x1e4761[_0xdafa('0x47')][_0xdafa('0x21')];_0x598717+=0x1){_0x1e4761[_0xdafa('0x48')]=_0x1e4761[_0xdafa('0x47')][_0x598717]['filename'];_0x1e4761[_0xdafa('0x49')]=_0x1e4761['monitors'][_0x598717][_0xdafa('0x49')];if(_0x1e4761[_0xdafa('0x33')]==_0xdafa('0x3b')){_0x1e4761['calleridnum']=_0x1e4761[_0xdafa('0x41')];_0x1e4761[_0xdafa('0x42')]=_0x1e4761['connectedlinename'];_0x1e4761['connectedlinenum']=_0x1e4761[_0xdafa('0x1d')];_0x1e4761[_0xdafa('0x4a')]=_0x1e4761['membername'];_0x1e4761['exten']=_0x1e4761[_0xdafa('0x3d')];}else if(_0x1e4761[_0xdafa('0x33')]=='xcally-motion-dialer'){_0x1e4761[_0xdafa('0x30')]=_0x1e4761['destination'];_0x1e4761['exten']=_0x1e4761['originatecalleridnum'];}RpcVoiceRecording[_0xdafa('0x29')](_0x1e4761);}}};Report['prototype'][_0xdafa('0x15')]=function(_0x2ffe64){if(_[_0xdafa('0x4b')](_0x2ffe64)){_0x2ffe64[_0xdafa('0x4c')](function(_0x28f332){RpcVoiceAgentReport[_0xdafa('0x29')](_0x28f332);});}else{RpcVoiceAgentReport[_0xdafa('0x29')](_0x2ffe64);}};Report[_0xdafa('0xf')][_0xdafa('0x16')]=function(_0x4f5239){RpcVoiceDialReport[_0xdafa('0x29')](_0x4f5239);var _0x12b3d2;var _0x1479ed;var _0xbd07b1=_0x4f5239[_0xdafa('0x2e')];if(_['startsWith'](_0xbd07b1,_0xdafa('0x4d'))){_0x1479ed=_0xbd07b1[_0xdafa('0x4e')](_0xbd07b1[_0xdafa('0x4f')]('/')+0x1,_0xbd07b1[_0xdafa('0x4f')]('@'));_0x12b3d2=_[_0xdafa('0x1a')](this[_0xdafa('0xd')],function(_0x13e15e){return _0x13e15e['mobile']==_0x1479ed||_0x13e15e[_0xdafa('0x50')]==_0x1479ed||_0x13e15e[_0xdafa('0x1d')]==_0x1479ed;});}else{_0x1479ed=_0xbd07b1[_0xdafa('0x4e')](_0xbd07b1[_0xdafa('0x4f')]('/')+0x1,_0xbd07b1[_0xdafa('0x51')]('-'));_0x12b3d2=this['findAgent'](_0x1479ed);}if(_0x12b3d2){_0x4f5239[_0xdafa('0x1e')]=_[_0xdafa('0x1c')](_0x12b3d2['interface'])?util[_0xdafa('0x1f')](_0xdafa('0x20'),_0x12b3d2[_0xdafa('0x1b')]):_0x12b3d2[_0xdafa('0x1e')];_0x4f5239['membername']=_0x12b3d2['name'];_0x4f5239[_0xdafa('0x1d')]=_0x12b3d2[_0xdafa('0x1d')];RpcMemberReport[_0xdafa('0x16')](_0x4f5239);}};Report['prototype']['blindTransfer']=function(_0x5da69e){RpcVoiceTransferReport['transfers'][_0x5da69e['transfererlinkedid']]=_0x5da69e;};Report['prototype'][_0xdafa('0x19')]=function(_0x519577){RpcVoiceTransferReport[_0xdafa('0x19')](_0x519577);};module[_0xdafa('0x52')]=Report;
\ No newline at end of file
+var _0xa7c6=['agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','bind','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','interface','SIP/%s','length','connectedlinenum','lastAssignedTo','format','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','voiceQueueReport','keys','getCallType','channel','getAgentByInternal','internal','destination','exten','lastapplication','lastdata','queue','context','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','callerid','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','uniqueid','type','UserId','split','membername','create','monitor','monitorFilename','monitors','createdAt','connectedlinename','voiceAgentReport','forEach','startsWith','Local','substring','indexOf','mobile','phone','transfererlinkedid','attendedTransfer','exports','lodash','util','../../../config/environment','../rpc/voiceAgentReport','../rpc/voiceDialReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceCallReport','./voiceDialReport'];(function(_0x3a65cc,_0x201d09){var _0x14a1e6=function(_0x1c4f57){while(--_0x1c4f57){_0x3a65cc['push'](_0x3a65cc['shift']());}};_0x14a1e6(++_0x201d09);}(_0xa7c6,0xa3));var _0x6a7c=function(_0x469777,_0x336904){_0x469777=_0x469777-0x0;var _0x559307=_0xa7c6[_0x469777];return _0x559307;};'use strict';var _=require(_0x6a7c('0x0'));var moment=require('moment');var util=require(_0x6a7c('0x1'));var config=require(_0x6a7c('0x2'));var ami=require('../ami');var RpcVoiceAgentReport=require(_0x6a7c('0x3'));var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0x6a7c('0x4'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0x6a7c('0x5'));var RpcVoiceRecording=require(_0x6a7c('0x6'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require('./voiceQueueReport');var VoiceCallReport=require(_0x6a7c('0x7'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x6a7c('0x8'));var UserReport=require('./userReport');function Report(_0x4f0865){this['realtime']=_0x4f0865;this[_0x6a7c('0x9')]=_0x4f0865[_0x6a7c('0x9')];this[_0x6a7c('0xa')]=_0x4f0865[_0x6a7c('0xa')];}Report[_0x6a7c('0xb')][_0x6a7c('0xc')]=function(_0x3bb9f5){var _0x334fdc=new VoiceQueueReport(this['realtime']);var _0x5da4c2=new VoiceAgentReport(this[_0x6a7c('0xd')]);var _0x2ec5b1=new VoiceDialReport(this['realtime']);var _0x1cf0d0=new VoiceCallReport(this[_0x6a7c('0xd')]);var _0xe67b1d=new UserReport(this[_0x6a7c('0xd')]);if(config['xdr']&&config[_0x6a7c('0xe')][_0x6a7c('0xf')]){ami['on'](_0x6a7c('0x10'),this['voiceQueueReport'][_0x6a7c('0x11')](this));ami['on']('custom:voiceCallReport',this[_0x6a7c('0x12')][_0x6a7c('0x11')](this));ami['on'](_0x6a7c('0x13'),this['voiceAgentReport'][_0x6a7c('0x11')](this));ami['on'](_0x6a7c('0x14'),this[_0x6a7c('0x15')][_0x6a7c('0x11')](this));ami['on']('blindtransfer',this[_0x6a7c('0x16')][_0x6a7c('0x11')](this));ami['on'](_0x6a7c('0x17'),this['attendedTransfer'][_0x6a7c('0x11')](this));}};Report[_0x6a7c('0xb')][_0x6a7c('0x18')]=function(_0x2e159b){var _0x3e64e0;_0x3e64e0=_[_0x6a7c('0x19')](this[_0x6a7c('0x9')],function(_0xa36800){return _0xa36800[_0x6a7c('0x1a')]==_0x2e159b||_0xa36800[_0x6a7c('0x1b')]==_0x2e159b;});if(_[_0x6a7c('0x1c')](_0x3e64e0)){var _0x1339ab=_[_0x6a7c('0x19')](this[_0x6a7c('0xa')],function(_0xe649ad){return _0xe649ad['accountcode']==_0x2e159b||_0xe649ad[_0x6a7c('0x1b')]==_0x2e159b;});if(_0x1339ab){_0x3e64e0=_[_0x6a7c('0x19')](this[_0x6a7c('0x9')],function(_0xecbc1f){return _0xecbc1f[_0x6a7c('0x1d')]==util['format'](_0x6a7c('0x1e'),_0x1339ab[_0x6a7c('0x1b')]);});}}return _0x3e64e0;};Report[_0x6a7c('0xb')]['voiceQueueReport']=function(_0x5d7b6b){for(var _0x4e743a=0x0;_0x4e743a<_0x5d7b6b[_0x6a7c('0x1f')];_0x4e743a+=0x1){var _0x975703=this[_0x6a7c('0x18')](_0x5d7b6b[_0x4e743a][_0x6a7c('0x20')]);if(_0x975703){_0x5d7b6b[_0x4e743a][_0x6a7c('0x1a')]=_0x975703['accountcode'];_0x5d7b6b[_0x4e743a]['assigned']=!![];_0x5d7b6b[_0x4e743a][_0x6a7c('0x21')]=_0x975703[_0x6a7c('0x1b')];_0x5d7b6b[_0x4e743a][_0x6a7c('0x1d')]=_[_0x6a7c('0x1c')](_0x975703[_0x6a7c('0x1d')])?util[_0x6a7c('0x22')](_0x6a7c('0x1e'),_0x975703[_0x6a7c('0x1b')]):_0x975703[_0x6a7c('0x1d')];if(_0x5d7b6b[_0x4e743a][_0x6a7c('0x23')]){_0x5d7b6b[_0x4e743a]['queuecallercompleteAt']=moment()[_0x6a7c('0x22')](_0x6a7c('0x24'));}if(_0x5d7b6b[_0x4e743a][_0x6a7c('0x25')]){_0x5d7b6b[_0x4e743a][_0x6a7c('0x26')]=moment()[_0x6a7c('0x22')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x6a7c('0x27')](_0x5d7b6b[_0x4e743a]);}RpcVoiceQueueReport['create'](_0x5d7b6b[_0x4e743a]);}};function extractCalleridNumber(_0x406134){var _0x5abf9a=_0x406134['match'](/<(.*?)>/);return _0x5abf9a?_0x5abf9a[0x1]:_0x406134;}Report[_0x6a7c('0xb')]['getAgentByInternal']=function(_0x5aa295){for(var _0xab7b3e=0x0;_0xab7b3e<Object[_0x6a7c('0x28')](this['agents'])['length'];_0xab7b3e++){var _0x2fd830=Object[_0x6a7c('0x28')](this[_0x6a7c('0x9')])[_0xab7b3e];var _0x5a101e=this[_0x6a7c('0x9')][_0x2fd830];if(_0x5a101e[_0x6a7c('0x1a')]===Number(_0x5aa295))return _0x5a101e;}return null;};Report[_0x6a7c('0xb')][_0x6a7c('0x29')]=function(_0x4eabd6){var _0x22328a=_0x4eabd6[_0x6a7c('0x2a')]['split']('-')[0x0];var _0x338598=this['agents'][_0x22328a];if(!_0x338598)_0x338598=this[_0x6a7c('0x2b')](_0x4eabd6['calleridnum']);return!_0x338598?'outbound':_0x6a7c('0x2c');};Report[_0x6a7c('0xb')]['voiceCallReport']=function(_0x4d51c2){_0x4d51c2[_0x6a7c('0x2d')]=_0x4d51c2[_0x6a7c('0x2d')]||_0x4d51c2[_0x6a7c('0x2e')];if(_0x4d51c2['type']=='dialer'){_0x4d51c2[_0x6a7c('0x2f')]='queue';_0x4d51c2[_0x6a7c('0x30')]=_0x4d51c2[_0x6a7c('0x31')];if(_0x4d51c2[_0x6a7c('0x32')]=='from-voip-provider'){_0x4d51c2[_0x6a7c('0x1a')]='';_0x4d51c2[_0x6a7c('0x2d')]=extractCalleridNumber(_0x4d51c2['callerid']);}else if(_0x4d51c2[_0x6a7c('0x32')]==_0x6a7c('0x33')){if(_0x4d51c2[_0x6a7c('0x2d')]==_0x6a7c('0x34')){_0x4d51c2['destination']=extractCalleridNumber(_0x4d51c2[_0x6a7c('0x35')]);_0x4d51c2[_0x6a7c('0x36')]=_0x4d51c2[_0x6a7c('0x37')];_0x4d51c2[_0x6a7c('0x38')]=[_0x4d51c2['channel'],_0x4d51c2[_0x6a7c('0x2a')]=_0x4d51c2[_0x6a7c('0x38')]][0x0];_0x4d51c2[_0x6a7c('0x39')]=_0x4d51c2[_0x6a7c('0x35')];}else{_0x4d51c2['destination']=_0x4d51c2[_0x6a7c('0x36')];_0x4d51c2[_0x6a7c('0x36')]=_0x4d51c2['originatecalleridnum'];if(_0x4d51c2[_0x6a7c('0x3a')]==_0x6a7c('0x3b')){_0x4d51c2[_0x6a7c('0x1a')]=_0x4d51c2[_0x6a7c('0x20')];}else{_0x4d51c2[_0x6a7c('0x1a')]='';}}}}else{_0x4d51c2['callerid']=util[_0x6a7c('0x22')](_0x6a7c('0x3c'),_0x4d51c2[_0x6a7c('0x3d')],_0x4d51c2[_0x6a7c('0x36')]);}if(RpcVoiceTransferReport[_0x6a7c('0x3e')][_0x4d51c2[_0x6a7c('0x3f')]]){var _0x2d23ce=RpcVoiceTransferReport[_0x6a7c('0x3e')][_0x4d51c2['linkedid']];_0x2d23ce['transfereelinkedid']=_0x4d51c2[_0x6a7c('0x40')];RpcVoiceTransferReport[_0x6a7c('0x16')](_0x2d23ce);delete RpcVoiceTransferReport[_0x6a7c('0x3e')][_0x4d51c2[_0x6a7c('0x3f')]];}if(_[_0x6a7c('0x1c')](_0x4d51c2['type'])){_0x4d51c2[_0x6a7c('0x41')]=this['getCallType'](_0x4d51c2);}if(_['isNil'](_0x4d51c2[_0x6a7c('0x42')])){var _0x107657=_0x4d51c2[_0x6a7c('0x2a')][_0x6a7c('0x43')]('-')[0x0];var _0x53e857=this[_0x6a7c('0x9')][_0x107657];if(!_0x53e857)_0x53e857=this[_0x6a7c('0x2b')](_0x4d51c2[_0x6a7c('0x1a')]);if(_0x53e857){_0x4d51c2['UserId']=_0x53e857['id'];_0x4d51c2[_0x6a7c('0x44')]=_0x53e857['name'];}}RpcVoiceCallReport[_0x6a7c('0x45')](_0x4d51c2);if(_0x4d51c2[_0x6a7c('0x46')]){for(var _0x1abb02=0x0;_0x1abb02<_0x4d51c2['monitors'][_0x6a7c('0x1f')];_0x1abb02+=0x1){_0x4d51c2[_0x6a7c('0x47')]=_0x4d51c2[_0x6a7c('0x48')][_0x1abb02]['filename'];_0x4d51c2[_0x6a7c('0x49')]=_0x4d51c2[_0x6a7c('0x48')][_0x1abb02]['createdAt'];if(_0x4d51c2[_0x6a7c('0x2e')]==_0x6a7c('0x34')){_0x4d51c2[_0x6a7c('0x36')]=_0x4d51c2[_0x6a7c('0x20')];_0x4d51c2['calleridname']=_0x4d51c2['connectedlinename'];_0x4d51c2[_0x6a7c('0x20')]=_0x4d51c2[_0x6a7c('0x1a')];_0x4d51c2[_0x6a7c('0x4a')]=_0x4d51c2['membername'];_0x4d51c2[_0x6a7c('0x2e')]=_0x4d51c2[_0x6a7c('0x37')];}else if(_0x4d51c2['exten']=='xcally-motion-dialer'){_0x4d51c2[_0x6a7c('0x36')]=_0x4d51c2[_0x6a7c('0x2d')];_0x4d51c2[_0x6a7c('0x2e')]=_0x4d51c2[_0x6a7c('0x37')];}RpcVoiceRecording[_0x6a7c('0x45')](_0x4d51c2);}}};Report[_0x6a7c('0xb')][_0x6a7c('0x4b')]=function(_0x5289e4){if(_['isArray'](_0x5289e4)){_0x5289e4[_0x6a7c('0x4c')](function(_0x22d3f4){RpcVoiceAgentReport[_0x6a7c('0x45')](_0x22d3f4);});}else{RpcVoiceAgentReport[_0x6a7c('0x45')](_0x5289e4);}};Report[_0x6a7c('0xb')][_0x6a7c('0x15')]=function(_0x29377a){RpcVoiceDialReport[_0x6a7c('0x45')](_0x29377a);var _0x3e780b;var _0x253d35;var _0x14a61d=_0x29377a[_0x6a7c('0x2a')];if(_[_0x6a7c('0x4d')](_0x14a61d,_0x6a7c('0x4e'))){_0x253d35=_0x14a61d[_0x6a7c('0x4f')](_0x14a61d[_0x6a7c('0x50')]('/')+0x1,_0x14a61d[_0x6a7c('0x50')]('@'));_0x3e780b=_[_0x6a7c('0x19')](this[_0x6a7c('0x9')],function(_0x49498e){return _0x49498e[_0x6a7c('0x51')]==_0x253d35||_0x49498e[_0x6a7c('0x52')]==_0x253d35||_0x49498e[_0x6a7c('0x1a')]==_0x253d35;});}else{_0x253d35=_0x14a61d['substring'](_0x14a61d[_0x6a7c('0x50')]('/')+0x1,_0x14a61d['lastIndexOf']('-'));_0x3e780b=this[_0x6a7c('0x18')](_0x253d35);}if(_0x3e780b){_0x29377a['interface']=_['isNil'](_0x3e780b[_0x6a7c('0x1d')])?util[_0x6a7c('0x22')](_0x6a7c('0x1e'),_0x3e780b[_0x6a7c('0x1b')]):_0x3e780b[_0x6a7c('0x1d')];_0x29377a[_0x6a7c('0x44')]=_0x3e780b[_0x6a7c('0x1b')];_0x29377a[_0x6a7c('0x1a')]=_0x3e780b[_0x6a7c('0x1a')];RpcMemberReport[_0x6a7c('0x15')](_0x29377a);}};Report[_0x6a7c('0xb')][_0x6a7c('0x16')]=function(_0x414296){RpcVoiceTransferReport[_0x6a7c('0x3e')][_0x414296[_0x6a7c('0x53')]]=_0x414296;};Report[_0x6a7c('0xb')][_0x6a7c('0x54')]=function(_0xb8de7){RpcVoiceTransferReport[_0x6a7c('0x54')](_0xb8de7);};module[_0x6a7c('0x55')]=Report;
\ No newline at end of file
index 3c9f5a5..db831c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['merge','omit','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','device','debug','toLowerCase','inuse','local','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','startsWith','Local','substring','indexOf','accountcode','[userReport][devicestatechange]','peer','address','[userReport][peerstatus]','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','socket.io-emitter','agents','telephones','registryentry','syncRegistry','bind','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','catch','error','inspect','then','actionDeviceStateList','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','info','state','[userReport][registry]','find','trunks','username'];(function(_0xdc37a1,_0x53ebb9){var _0x99b4fe=function(_0x2811e3){while(--_0x2811e3){_0xdc37a1['push'](_0xdc37a1['shift']());}};_0x99b4fe(++_0x53ebb9);}(_0xa9e0,0xf2));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require(_0x0a9e('0x3'));var BPromise=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))('ami');var ami=require(_0x0a9e('0x7'));config[_0x0a9e('0x8')]=_[_0x0a9e('0x9')](config[_0x0a9e('0x8')],{'host':_0x0a9e('0xa'),'port':0x18eb});var io=require(_0x0a9e('0xb'))(new Redis(config[_0x0a9e('0x8')]));function UserReport(_0x297257){this['trunks']=_0x297257['trunks'];this[_0x0a9e('0xc')]=_0x297257['agents'];this['telephones']=_0x297257[_0x0a9e('0xd')];ami['on'](_0x0a9e('0xe'),this[_0x0a9e('0xf')]['bind'](this));ami['on']('registry',this[_0x0a9e('0xf')][_0x0a9e('0x10')](this));ami['on']('devicestatechange',this[_0x0a9e('0x11')]['bind'](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')][_0x0a9e('0x10')](this));return this[_0x0a9e('0x14')]();}function showSipRegistrations(){Promise[_0x0a9e('0x15')]()['then'](ami['actionSipShowRegistry']())[_0x0a9e('0x16')](function(_0x5e4954){logger[_0x0a9e('0x17')]('[userReport][sipshowregistry]',util[_0x0a9e('0x18')](_0x5e4954,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0a9e('0x15')]()[_0x0a9e('0x19')](ami[_0x0a9e('0x1a')]())[_0x0a9e('0x16')](function(_0x515f43){logger[_0x0a9e('0x17')]('[userReport][devicestatelist]',util[_0x0a9e('0x18')](_0x515f43,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()['then'](ami[_0x0a9e('0x1b')]())[_0x0a9e('0x16')](function(_0x5a4bbb){logger['error']('[userReport][sippeerstatus]',util[_0x0a9e('0x18')](_0x5a4bbb,{'showHidden':![],'depth':null}));});}UserReport[_0x0a9e('0x1c')][_0x0a9e('0x14')]=function(){setInterval(function(){BPromise[_0x0a9e('0x15')]()[_0x0a9e('0x19')](showSipRegistrations())[_0x0a9e('0x19')](listDeviceStates())[_0x0a9e('0x19')](showPeersStatus());},0x32c8);};UserReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x121b2d){return _0x121b2d!==null&&!_[_0x0a9e('0x1e')](_0x121b2d);};UserReport[_0x0a9e('0x1c')]['emit']=function(_0xf4f27,_0x36d1f2,_0x23b8f3){io['to'](_0xf4f27)[_0x0a9e('0x1f')](_0x36d1f2,_0x23b8f3);};UserReport[_0x0a9e('0x1c')][_0x0a9e('0xf')]=function(_0x117ebc){try{if(this[_0x0a9e('0x1d')](_0x117ebc)){logger[_0x0a9e('0x20')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x117ebc['username'],_0x117ebc[_0x0a9e('0x21')]);logger['debug'](_0x0a9e('0x22'),util[_0x0a9e('0x18')](_0x117ebc,{'showHidden':![],'depth':null}));var _0x2d1127=_[_0x0a9e('0x23')](this[_0x0a9e('0x24')],{'defaultuser':_0x117ebc[_0x0a9e('0x25')]});if(_0x2d1127){_0x117ebc['stateRegistry']=_0x117ebc[_0x0a9e('0x21')];_[_0x0a9e('0x26')](_0x2d1127,_[_0x0a9e('0x27')](_0x117ebc,[_0x0a9e('0x28'),'actionid',_0x0a9e('0x25'),_0x0a9e('0x21')]));logger['debug'](_0x0a9e('0x29'),util[_0x0a9e('0x18')](_0x2d1127,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1f')](util[_0x0a9e('0x2a')]('trunk:%s',_0x2d1127[_0x0a9e('0x2b')]),_0x0a9e('0x2c'),_0x2d1127);}}}catch(_0x57b8f6){logger[_0x0a9e('0x17')](_0x0a9e('0x22'),util[_0x0a9e('0x18')](_0x57b8f6,{'showHidden':![],'depth':null}));}};UserReport[_0x0a9e('0x1c')]['syncDeviceState']=function(_0x2dbc46){try{if(this[_0x0a9e('0x1d')](_0x2dbc46)){logger[_0x0a9e('0x20')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x2dbc46[_0x0a9e('0x2d')],_0x2dbc46[_0x0a9e('0x21')]);logger[_0x0a9e('0x2e')]('[userReport][devicestatechange]',util[_0x0a9e('0x18')](_0x2dbc46,{'showHidden':![],'depth':null}));if(this['agents'][_0x2dbc46['device']]){if(!this[_0x0a9e('0xc')][_0x2dbc46[_0x0a9e('0x2d')]]['local']||_0x2dbc46['state'][_0x0a9e('0x2f')]()==_0x0a9e('0x30')){this['agents'][_0x2dbc46[_0x0a9e('0x2d')]][_0x0a9e('0x31')]=![];if(this[_0x0a9e('0xc')][_0x2dbc46[_0x0a9e('0x2d')]][_0x0a9e('0x21')]!==_0x2dbc46[_0x0a9e('0x21')][_0x0a9e('0x2f')]()){this[_0x0a9e('0xc')][_0x2dbc46['device']][_0x0a9e('0x32')]=_[_0x0a9e('0x33')](moment()[_0x0a9e('0x2a')]('x'));}this[_0x0a9e('0xc')][_0x2dbc46['device']]['state']=_0x2dbc46[_0x0a9e('0x21')]['toLowerCase']();this[_0x0a9e('0xc')][_0x2dbc46[_0x0a9e('0x2d')]][_0x0a9e('0x34')](_0x2dbc46);}}else if(this[_0x0a9e('0xd')][_0x2dbc46[_0x0a9e('0x2d')]]){if(this[_0x0a9e('0xd')][_0x2dbc46['device']][_0x0a9e('0x21')]!==_0x2dbc46['state'][_0x0a9e('0x2f')]()){this['telephones'][_0x2dbc46[_0x0a9e('0x2d')]]['stateTime']=_[_0x0a9e('0x33')](moment()[_0x0a9e('0x2a')]('x'));}this[_0x0a9e('0xd')][_0x2dbc46['device']][_0x0a9e('0x21')]=_0x2dbc46['state'][_0x0a9e('0x2f')]();logger[_0x0a9e('0x2e')](_0x0a9e('0x35'),util[_0x0a9e('0x18')](this['telephones'][_0x2dbc46[_0x0a9e('0x2d')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x2a')](_0x0a9e('0x36'),this[_0x0a9e('0xd')][_0x2dbc46[_0x0a9e('0x2d')]][_0x0a9e('0x2b')]),_0x0a9e('0x37'),this[_0x0a9e('0xd')][_0x2dbc46[_0x0a9e('0x2d')]]);}else if(this['trunks'][_0x2dbc46[_0x0a9e('0x2d')]]){if(this[_0x0a9e('0x24')][_0x2dbc46[_0x0a9e('0x2d')]]['state']!==_0x2dbc46['state']['toLowerCase']()){this[_0x0a9e('0x24')][_0x2dbc46['device']]['stateTime']=_[_0x0a9e('0x33')](moment()[_0x0a9e('0x2a')]('x'));}this['trunks'][_0x2dbc46['device']]['state']=_0x2dbc46[_0x0a9e('0x21')]['toLowerCase']();logger[_0x0a9e('0x2e')](_0x0a9e('0x38'),util[_0x0a9e('0x18')](this[_0x0a9e('0x24')][_0x2dbc46['device']],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1f')](util[_0x0a9e('0x2a')](_0x0a9e('0x39'),this[_0x0a9e('0x24')][_0x2dbc46[_0x0a9e('0x2d')]]['name']),_0x0a9e('0x2c'),this[_0x0a9e('0x24')][_0x2dbc46[_0x0a9e('0x2d')]]);}else if(_[_0x0a9e('0x3a')](_0x2dbc46[_0x0a9e('0x2d')],_0x0a9e('0x3b'))){var _0x57fee1=_0x2dbc46['device'];var _0x23597e=_0x57fee1[_0x0a9e('0x3c')](_0x57fee1['indexOf']('/')+0x1,_0x57fee1[_0x0a9e('0x3d')]('@'));var _0x197ad1=_[_0x0a9e('0x23')](this[_0x0a9e('0xc')],function(_0x5ef86a){return _0x5ef86a['mobile']==_0x23597e||_0x5ef86a['phone']==_0x23597e||_0x5ef86a[_0x0a9e('0x3e')]==_0x23597e;});if(_0x197ad1){if(_0x197ad1[_0x0a9e('0x21')]!==_0x2dbc46['state'][_0x0a9e('0x2f')]()){_0x197ad1[_0x0a9e('0x32')]=_[_0x0a9e('0x33')](moment()[_0x0a9e('0x2a')]('x'));}_0x197ad1[_0x0a9e('0x21')]=_0x2dbc46[_0x0a9e('0x21')][_0x0a9e('0x2f')]();_0x197ad1[_0x0a9e('0x31')]=!![];_0x197ad1[_0x0a9e('0x34')](_0x2dbc46);}}}}catch(_0x1ee787){logger[_0x0a9e('0x17')](_0x0a9e('0x3f'),util[_0x0a9e('0x18')](_0x1ee787,{'showHidden':![],'depth':null}));}};UserReport[_0x0a9e('0x1c')]['syncPeerStatus']=function(_0x1218c0){try{if(this[_0x0a9e('0x1d')](_0x1218c0)&&this[_0x0a9e('0x1d')](_0x1218c0[_0x0a9e('0x12')])){logger[_0x0a9e('0x20')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1218c0[_0x0a9e('0x40')],_0x1218c0[_0x0a9e('0x41')],_0x1218c0[_0x0a9e('0x12')]);logger[_0x0a9e('0x2e')](_0x0a9e('0x42'),util[_0x0a9e('0x18')](_0x1218c0,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0xc')][_0x1218c0[_0x0a9e('0x40')]]){if(!this[_0x0a9e('0xc')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x31')]||_0x1218c0[_0x0a9e('0x12')]['toLowerCase']()=='registered'){this[_0x0a9e('0xc')][_0x1218c0['peer']][_0x0a9e('0x31')]=![];this[_0x0a9e('0xc')][_0x1218c0['peer']][_0x0a9e('0x43')]=_0x1218c0[_0x0a9e('0x12')]['toLowerCase']();this[_0x0a9e('0xc')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x41')]=_0x1218c0[_0x0a9e('0x41')];this[_0x0a9e('0xc')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x34')](_0x1218c0);}}else if(this[_0x0a9e('0xd')][_0x1218c0[_0x0a9e('0x40')]]){this[_0x0a9e('0xd')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x43')]=_0x1218c0[_0x0a9e('0x12')]['toLowerCase']();this['telephones'][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x41')]=_0x1218c0[_0x0a9e('0x41')];logger[_0x0a9e('0x2e')](_0x0a9e('0x44'),util[_0x0a9e('0x18')](this[_0x0a9e('0xd')][_0x1218c0['peer']],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1f')](util[_0x0a9e('0x2a')]('telephone:%s',this[_0x0a9e('0xd')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x2b')]),_0x0a9e('0x37'),this[_0x0a9e('0xd')][_0x1218c0[_0x0a9e('0x40')]]);}else if(this[_0x0a9e('0x24')][_0x1218c0['peer']]){this['trunks'][_0x1218c0[_0x0a9e('0x40')]]['status']=_0x1218c0[_0x0a9e('0x12')][_0x0a9e('0x2f')]();this[_0x0a9e('0x24')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x41')]=_0x1218c0['address'];logger[_0x0a9e('0x2e')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x0a9e('0x18')](this[_0x0a9e('0x24')][_0x1218c0[_0x0a9e('0x40')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x0a9e('0x2a')](_0x0a9e('0x39'),this[_0x0a9e('0x24')][_0x1218c0[_0x0a9e('0x40')]][_0x0a9e('0x2b')]),_0x0a9e('0x2c'),this[_0x0a9e('0x24')][_0x1218c0[_0x0a9e('0x40')]]);}}}catch(_0x491c5d){logger[_0x0a9e('0x17')]('[userReport][peerstatus]',util[_0x0a9e('0x18')](_0x491c5d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x45')]=UserReport;
\ No newline at end of file
+var _0xd240=['telephone:save','startsWith','substring','indexOf','mobile','phone','updateStatusRealtime','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','catch','inspect','actionDeviceStateList','error','[userReport][devicestatelist]','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','inuse','toLowerCase','stateTime','toNumber','telephone:%s'];(function(_0x6a2228,_0x4a1d8b){var _0x2d7c81=function(_0x53bf1e){while(--_0x53bf1e){_0x6a2228['push'](_0x6a2228['shift']());}};_0x2d7c81(++_0x4a1d8b);}(_0xd240,0x1c7));var _0x0d24=function(_0x8c31aa,_0xa7c926){_0x8c31aa=_0x8c31aa-0x0;var _0x48c40b=_0xd240[_0x8c31aa];return _0x48c40b;};'use strict';var _=require('lodash');var moment=require(_0x0d24('0x0'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x0d24('0x1'));var config=require(_0x0d24('0x2'));var logger=require(_0x0d24('0x3'))(_0x0d24('0x4'));var ami=require(_0x0d24('0x5'));config[_0x0d24('0x6')]=_['defaults'](config['redis'],{'host':_0x0d24('0x7'),'port':0x18eb});var io=require(_0x0d24('0x8'))(new Redis(config[_0x0d24('0x6')]));function UserReport(_0x250141){this['trunks']=_0x250141[_0x0d24('0x9')];this[_0x0d24('0xa')]=_0x250141[_0x0d24('0xa')];this[_0x0d24('0xb')]=_0x250141[_0x0d24('0xb')];ami['on'](_0x0d24('0xc'),this[_0x0d24('0xd')]['bind'](this));ami['on'](_0x0d24('0xe'),this['syncRegistry'][_0x0d24('0xf')](this));ami['on']('devicestatechange',this[_0x0d24('0x10')][_0x0d24('0xf')](this));ami['on'](_0x0d24('0x11'),this['syncPeerStatus']['bind'](this));return this[_0x0d24('0x12')]();}function showSipRegistrations(){Promise[_0x0d24('0x13')]()[_0x0d24('0x14')](ami['actionSipShowRegistry']())[_0x0d24('0x15')](function(_0x106fb7){logger['error']('[userReport][sipshowregistry]',util[_0x0d24('0x16')](_0x106fb7,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x0d24('0x13')]()[_0x0d24('0x14')](ami[_0x0d24('0x17')]())[_0x0d24('0x15')](function(_0x6ec239){logger[_0x0d24('0x18')](_0x0d24('0x19'),util['inspect'](_0x6ec239,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x0d24('0x13')]()[_0x0d24('0x14')](ami['actionSipPeerStatus']())[_0x0d24('0x15')](function(_0x1c5899){logger[_0x0d24('0x18')](_0x0d24('0x1a'),util['inspect'](_0x1c5899,{'showHidden':![],'depth':null}));});}UserReport[_0x0d24('0x1b')][_0x0d24('0x12')]=function(){setInterval(function(){BPromise['resolve']()['then'](showSipRegistrations())[_0x0d24('0x14')](listDeviceStates())[_0x0d24('0x14')](showPeersStatus());},0x32c8);};UserReport[_0x0d24('0x1b')][_0x0d24('0x1c')]=function(_0x30e520){return _0x30e520!==null&&!_[_0x0d24('0x1d')](_0x30e520);};UserReport[_0x0d24('0x1b')][_0x0d24('0x1e')]=function(_0x2dc0cf,_0x5df68d,_0x2499e1){io['to'](_0x2dc0cf)[_0x0d24('0x1e')](_0x5df68d,_0x2499e1);};UserReport[_0x0d24('0x1b')][_0x0d24('0xd')]=function(_0x4e6ded){try{if(this[_0x0d24('0x1c')](_0x4e6ded)){logger[_0x0d24('0x1f')](_0x0d24('0x20'),_0x4e6ded['username'],_0x4e6ded[_0x0d24('0x21')]);logger[_0x0d24('0x22')](_0x0d24('0x23'),util['inspect'](_0x4e6ded,{'showHidden':![],'depth':null}));var _0x26db95=_[_0x0d24('0x24')](this[_0x0d24('0x9')],{'defaultuser':_0x4e6ded['username']});if(_0x26db95){_0x4e6ded[_0x0d24('0x25')]=_0x4e6ded[_0x0d24('0x21')];_[_0x0d24('0x26')](_0x26db95,_[_0x0d24('0x27')](_0x4e6ded,[_0x0d24('0x28'),_0x0d24('0x29'),'username','state']));logger['debug'](_0x0d24('0x2a'),util[_0x0d24('0x16')](_0x26db95,{'showHidden':![],'depth':null}));this[_0x0d24('0x1e')](util[_0x0d24('0x2b')](_0x0d24('0x2c'),_0x26db95[_0x0d24('0x2d')]),_0x0d24('0x2e'),_0x26db95);}}}catch(_0x3efb9a){logger[_0x0d24('0x18')](_0x0d24('0x23'),util[_0x0d24('0x16')](_0x3efb9a,{'showHidden':![],'depth':null}));}};UserReport['prototype']['syncDeviceState']=function(_0x7f6054){try{if(this['isNotNull'](_0x7f6054)){logger['info'](_0x0d24('0x2f'),_0x7f6054[_0x0d24('0x30')],_0x7f6054[_0x0d24('0x21')]);logger['debug'](_0x0d24('0x31'),util['inspect'](_0x7f6054,{'showHidden':![],'depth':null}));if(this[_0x0d24('0xa')][_0x7f6054[_0x0d24('0x30')]]){if(!this[_0x0d24('0xa')][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x32')]||_0x7f6054['state']['toLowerCase']()==_0x0d24('0x33')){this[_0x0d24('0xa')][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x32')]=![];if(this[_0x0d24('0xa')][_0x7f6054[_0x0d24('0x30')]]['state']!==_0x7f6054[_0x0d24('0x21')][_0x0d24('0x34')]()){this['agents'][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x35')]=_['toNumber'](moment()[_0x0d24('0x2b')]('x'));}this[_0x0d24('0xa')][_0x7f6054[_0x0d24('0x30')]]['state']=_0x7f6054[_0x0d24('0x21')][_0x0d24('0x34')]();this[_0x0d24('0xa')][_0x7f6054[_0x0d24('0x30')]]['updateStatusRealtime'](_0x7f6054);}}else if(this['telephones'][_0x7f6054[_0x0d24('0x30')]]){if(this['telephones'][_0x7f6054['device']]['state']!==_0x7f6054[_0x0d24('0x21')]['toLowerCase']()){this[_0x0d24('0xb')][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x35')]=_[_0x0d24('0x36')](moment()[_0x0d24('0x2b')]('x'));}this[_0x0d24('0xb')][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x21')]=_0x7f6054[_0x0d24('0x21')]['toLowerCase']();logger[_0x0d24('0x22')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x0d24('0xb')][_0x7f6054[_0x0d24('0x30')]],{'showHidden':![],'depth':null}));this[_0x0d24('0x1e')](util[_0x0d24('0x2b')](_0x0d24('0x37'),this[_0x0d24('0xb')][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x2d')]),_0x0d24('0x38'),this[_0x0d24('0xb')][_0x7f6054[_0x0d24('0x30')]]);}else if(this['trunks'][_0x7f6054[_0x0d24('0x30')]]){if(this[_0x0d24('0x9')][_0x7f6054['device']][_0x0d24('0x21')]!==_0x7f6054[_0x0d24('0x21')][_0x0d24('0x34')]()){this[_0x0d24('0x9')][_0x7f6054[_0x0d24('0x30')]]['stateTime']=_[_0x0d24('0x36')](moment()['format']('x'));}this[_0x0d24('0x9')][_0x7f6054[_0x0d24('0x30')]]['state']=_0x7f6054[_0x0d24('0x21')][_0x0d24('0x34')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0x0d24('0x9')][_0x7f6054[_0x0d24('0x30')]],{'showHidden':![],'depth':null}));this[_0x0d24('0x1e')](util[_0x0d24('0x2b')](_0x0d24('0x2c'),this['trunks'][_0x7f6054[_0x0d24('0x30')]][_0x0d24('0x2d')]),'trunk:save',this[_0x0d24('0x9')][_0x7f6054['device']]);}else if(_[_0x0d24('0x39')](_0x7f6054[_0x0d24('0x30')],'Local')){var _0x476828=_0x7f6054[_0x0d24('0x30')];var _0x1da5a1=_0x476828[_0x0d24('0x3a')](_0x476828[_0x0d24('0x3b')]('/')+0x1,_0x476828[_0x0d24('0x3b')]('@'));var _0x3b611a=_[_0x0d24('0x24')](this[_0x0d24('0xa')],function(_0x211bea){return _0x211bea[_0x0d24('0x3c')]==_0x1da5a1||_0x211bea[_0x0d24('0x3d')]==_0x1da5a1||_0x211bea['accountcode']==_0x1da5a1;});if(_0x3b611a){if(_0x3b611a[_0x0d24('0x21')]!==_0x7f6054[_0x0d24('0x21')][_0x0d24('0x34')]()){_0x3b611a[_0x0d24('0x35')]=_[_0x0d24('0x36')](moment()[_0x0d24('0x2b')]('x'));}_0x3b611a[_0x0d24('0x21')]=_0x7f6054['state']['toLowerCase']();_0x3b611a[_0x0d24('0x32')]=!![];_0x3b611a[_0x0d24('0x3e')](_0x7f6054);}}}}catch(_0x8a5846){logger[_0x0d24('0x18')]('[userReport][devicestatechange]',util[_0x0d24('0x16')](_0x8a5846,{'showHidden':![],'depth':null}));}};UserReport[_0x0d24('0x1b')][_0x0d24('0x3f')]=function(_0x5544ff){try{if(this[_0x0d24('0x1c')](_0x5544ff)&&this[_0x0d24('0x1c')](_0x5544ff[_0x0d24('0x11')])){logger[_0x0d24('0x1f')](_0x0d24('0x40'),_0x5544ff[_0x0d24('0x41')],_0x5544ff[_0x0d24('0x42')],_0x5544ff['peerstatus']);logger['debug'](_0x0d24('0x43'),util[_0x0d24('0x16')](_0x5544ff,{'showHidden':![],'depth':null}));if(this[_0x0d24('0xa')][_0x5544ff['peer']]){if(!this[_0x0d24('0xa')][_0x5544ff[_0x0d24('0x41')]][_0x0d24('0x32')]||_0x5544ff[_0x0d24('0x11')][_0x0d24('0x34')]()==_0x0d24('0x44')){this[_0x0d24('0xa')][_0x5544ff['peer']][_0x0d24('0x32')]=![];this[_0x0d24('0xa')][_0x5544ff[_0x0d24('0x41')]][_0x0d24('0x45')]=_0x5544ff[_0x0d24('0x11')]['toLowerCase']();this[_0x0d24('0xa')][_0x5544ff[_0x0d24('0x41')]][_0x0d24('0x42')]=_0x5544ff[_0x0d24('0x42')];this[_0x0d24('0xa')][_0x5544ff['peer']][_0x0d24('0x3e')](_0x5544ff);}}else if(this['telephones'][_0x5544ff[_0x0d24('0x41')]]){this[_0x0d24('0xb')][_0x5544ff['peer']][_0x0d24('0x45')]=_0x5544ff[_0x0d24('0x11')][_0x0d24('0x34')]();this[_0x0d24('0xb')][_0x5544ff[_0x0d24('0x41')]][_0x0d24('0x42')]=_0x5544ff[_0x0d24('0x42')];logger[_0x0d24('0x22')](_0x0d24('0x46'),util[_0x0d24('0x16')](this[_0x0d24('0xb')][_0x5544ff[_0x0d24('0x41')]],{'showHidden':![],'depth':null}));this[_0x0d24('0x1e')](util[_0x0d24('0x2b')](_0x0d24('0x37'),this['telephones'][_0x5544ff[_0x0d24('0x41')]][_0x0d24('0x2d')]),_0x0d24('0x38'),this[_0x0d24('0xb')][_0x5544ff[_0x0d24('0x41')]]);}else if(this[_0x0d24('0x9')][_0x5544ff[_0x0d24('0x41')]]){this[_0x0d24('0x9')][_0x5544ff[_0x0d24('0x41')]]['status']=_0x5544ff[_0x0d24('0x11')]['toLowerCase']();this[_0x0d24('0x9')][_0x5544ff[_0x0d24('0x41')]][_0x0d24('0x42')]=_0x5544ff[_0x0d24('0x42')];logger['debug'](_0x0d24('0x47'),util[_0x0d24('0x16')](this[_0x0d24('0x9')][_0x5544ff[_0x0d24('0x41')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x0d24('0x2b')](_0x0d24('0x2c'),this[_0x0d24('0x9')][_0x5544ff['peer']]['name']),_0x0d24('0x2e'),this[_0x0d24('0x9')][_0x5544ff[_0x0d24('0x41')]]);}}}catch(_0x5cc2f5){logger[_0x0d24('0x18')]('[userReport][peerstatus]',util[_0x0d24('0x16')](_0x5cc2f5,{'showHidden':![],'depth':null}));}};module[_0x0d24('0x48')]=UserReport;
\ No newline at end of file
index f379fd0..fd94c8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x2cff3c,_0x37d95a){var _0x3c8f4c=function(_0x2f389d){while(--_0x2f389d){_0x2cff3c['push'](_0x2cff3c['shift']());}};_0x3c8f4c(++_0x37d95a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa9e0=['musiconholdstop','attendedtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','uniqueid','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','interface','calleridnum','extravar','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','connect','voiceChannels','routealias','merge','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','lastevent','rejected','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','complete','agent','talktime','acw','acwtime','acwTimeout','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','../../../config/logger','../ami','redis','defaults','localhost','channels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart'];(function(_0x4c28b2,_0x55b2ae){var _0x587078=function(_0x504e24){while(--_0x504e24){_0x4c28b2['push'](_0x4c28b2['shift']());}};_0x587078(++_0x55b2ae);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x0a9e('0x3'))('ami');var ami=require(_0x0a9e('0x4'));config[_0x0a9e('0x5')]=_[_0x0a9e('0x6')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0x5')]));function VoiceAgentReport(_0x441e3a){this[_0x0a9e('0x8')]={};this['voiceChannels']=_0x441e3a['channels'];this[_0x0a9e('0x9')]=_0x441e3a['voiceQueues'];this['agents']=_0x441e3a[_0x0a9e('0xa')];this[_0x0a9e('0xb')]={};ami['on'](_0x0a9e('0xc'),this[_0x0a9e('0xd')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0xf'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this['syncAgentRingNoAnswer'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x10'),this[_0x0a9e('0x11')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x12'),this[_0x0a9e('0x13')]['bind'](this));ami['on'](_0x0a9e('0x14'),this[_0x0a9e('0x15')][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0xe')](this));ami['on']('musiconholdstart',this[_0x0a9e('0x18')]['bind'](this));ami['on'](_0x0a9e('0x19'),this['syncMusicOnHoldStop'][_0x0a9e('0xe')](this));ami['on'](_0x0a9e('0x1a'),this['syncAttendedTransfer'][_0x0a9e('0xe')](this));ami['on']('blindtransfer',this[_0x0a9e('0x1b')][_0x0a9e('0xe')](this));}VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1d')]=function(_0x31b1ca,_0x2eb11f,_0x530eb7){io['to'](_0x31b1ca)[_0x0a9e('0x1d')](_0x2eb11f,_0x530eb7);};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x1e')]=function(_0x1c696a){return _0x1c696a!==null&&!_[_0x0a9e('0x1f')](_0x1c696a);};VoiceAgentReport['prototype'][_0x0a9e('0xd')]=function(_0x155cce){try{if(this['isNotNull'](_0x155cce)){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x155cce['uniqueid'],_0x155cce[_0x0a9e('0x21')],_0x155cce[_0x0a9e('0x22')]);logger[_0x0a9e('0x23')](_0x0a9e('0x24'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x155cce,{'showHidden':![],'depth':null}));if(_[_0x0a9e('0x1f')](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]]={};}if(_[_0x0a9e('0x1f')](this['channels'][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]])){this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]]={'agentcalledAt':moment()['format'](_0x0a9e('0x27')),'lastevent':'called','mandatoryDisposition':this[_0x0a9e('0x9')][_0x155cce['queue']]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x29')]||![]:![],'type':this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]]?this[_0x0a9e('0x9')][_0x155cce[_0x0a9e('0x28')]][_0x0a9e('0x2a')]||'inbound':_0x0a9e('0x2b'),'variables':this[_0x0a9e('0xb')][_0x155cce[_0x0a9e('0x26')]],'motionChannel':_0x0a9e('0x2c')};}_['merge'](this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]],_[_0x0a9e('0x2d')](_0x155cce,[_0x0a9e('0x2e'),_0x0a9e('0x2f')]));logger[_0x0a9e('0x23')](_0x0a9e('0x30'),_0x155cce[_0x0a9e('0x26')],util['inspect'](this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x31'),this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce['destuniqueid']]);var _0x66c1d2={'id':this[_0x0a9e('0xa')][_0x155cce[_0x0a9e('0x32')]]['id'],'calleridnum':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0x33')],'queue':this[_0x0a9e('0x8')][_0x155cce['uniqueid']][_0x155cce[_0x0a9e('0x22')]]['queue'],'extravar':this[_0x0a9e('0x8')][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')]?this['channels'][_0x155cce[_0x0a9e('0x26')]][_0x155cce[_0x0a9e('0x22')]][_0x0a9e('0xb')][_0x0a9e('0x34')]:undefined};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x155cce[_0x0a9e('0x26')],util['inspect'](_0x66c1d2,{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x155cce[_0x0a9e('0x21')]),'user:called',_0x66c1d2);}}catch(_0x31916f){logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x155cce['uniqueid'],util[_0x0a9e('0x25')](_0x31916f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x39')]=function(_0x4c1c0e){try{if(this['isNotNull'](_0x4c1c0e)){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]){logger['debug'](_0x0a9e('0x3a'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4c1c0e,{'showHidden':![],'depth':null}));for(var _0x148f55 in this['channels'][_0x4c1c0e['uniqueid']]){if(this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]]['hasOwnProperty'](_0x148f55)){if(_0x4c1c0e[_0x0a9e('0x22')]===_0x148f55){logger[_0x0a9e('0x20')](_0x0a9e('0x3b'),_0x4c1c0e['uniqueid'],_0x4c1c0e[_0x0a9e('0x21')],_0x4c1c0e[_0x0a9e('0x22')]);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3c')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3d')]=_0x4c1c0e[_0x0a9e('0x3d')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x3e')]=_0x4c1c0e[_0x0a9e('0x3e')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x3f')]=_0x4c1c0e[_0x0a9e('0x3f')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x40')]=_0x4c1c0e[_0x0a9e('0x40')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x41')]=_0x4c1c0e[_0x0a9e('0x41')];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['lastevent']=_0x0a9e('0x42');if(this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x26')]]){var _0xbe9d19=this[_0x0a9e('0x43')][this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55][_0x0a9e('0x26')]]['routealias'];this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x44')]=_0xbe9d19;_0x4c1c0e['routealias']=_0xbe9d19;}_[_0x0a9e('0x45')](this[_0x0a9e('0xa')][_0x4c1c0e[_0x0a9e('0x32')]],_[_0x0a9e('0x46')](_0x4c1c0e,[_0x0a9e('0x28'),_0x0a9e('0x47'),_0x0a9e('0x44')]));logger['debug'](_0x0a9e('0x48'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x49'),this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x4c1c0e[_0x0a9e('0x22')]]);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x4c1c0e['uniqueid'],util['inspect'](this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x4c1c0e[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')](_0x0a9e('0x36'),_0x4c1c0e[_0x0a9e('0x21')]),_0x0a9e('0x4a'),this['channels'][_0x4c1c0e['uniqueid']][_0x4c1c0e['destuniqueid']]);}else if(!this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]&&!this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4c1c0e[_0x0a9e('0x26')],this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['membername'],_0x148f55);this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4b')]=!![];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheredestinationuniqueid']=_0x4c1c0e[_0x0a9e('0x22')];this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]['answeredelsewheremembername']=_0x4c1c0e[_0x0a9e('0x21')];this['channels'][_0x4c1c0e['uniqueid']][_0x148f55]['lastevent']=_0x0a9e('0x4d');this['channels'][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55][_0x0a9e('0x4e')]=_0x0a9e('0x4d');logger[_0x0a9e('0x23')](_0x0a9e('0x4f'),_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x4c1c0e['uniqueid']][_0x148f55],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x50'),this[_0x0a9e('0x8')][_0x4c1c0e[_0x0a9e('0x26')]][_0x148f55]);}}}}}}catch(_0xb83dfd){logger[_0x0a9e('0x37')]('[%s][voiceAgentReport][agentconnect]',_0x4c1c0e[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0xb83dfd,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x51')]=function(_0x5cc8fb){try{if(this[_0x0a9e('0x1e')](_0x5cc8fb)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5cc8fb['uniqueid'],util[_0x0a9e('0x25')](_0x5cc8fb,{'showHidden':![],'depth':null}));if(this['channels'][_0x5cc8fb[_0x0a9e('0x26')]]&&this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]){logger[_0x0a9e('0x20')](_0x0a9e('0x52'),_0x5cc8fb['uniqueid'],_0x5cc8fb[_0x0a9e('0x21')],_0x5cc8fb['destuniqueid']);this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x5cc8fb['uniqueid']][_0x5cc8fb[_0x0a9e('0x22')]][_0x0a9e('0x53')]=_0x0a9e('0x54');this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb['destuniqueid']][_0x0a9e('0x4e')]=_0x0a9e('0x54');logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5cc8fb[_0x0a9e('0x26')],util['inspect'](this['channels'][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x55'),this[_0x0a9e('0x8')][_0x5cc8fb[_0x0a9e('0x26')]][_0x5cc8fb[_0x0a9e('0x22')]]);}}}catch(_0x54a37d){logger[_0x0a9e('0x37')](_0x0a9e('0x56'),_0x5cc8fb[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x54a37d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x11')]=function(_0x320898){try{if(this[_0x0a9e('0x1e')](_0x320898)){logger[_0x0a9e('0x23')](_0x0a9e('0x57'),_0x320898['uniqueid'],util[_0x0a9e('0x25')](_0x320898,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){for(var _0x4edbb0 in this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]]){if(this['channels'][_0x320898[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x4edbb0)&&!this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4b')]&&!this['channels'][_0x320898['uniqueid']][_0x4edbb0]['agentcomplete']){logger[_0x0a9e('0x20')](_0x0a9e('0x59'),_0x320898[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x21')],_0x4edbb0);this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]['agentringnoanswer']=!![];this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4c')]=moment()['format'](_0x0a9e('0x27'));this['channels'][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x53')]='abandoned';this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0][_0x0a9e('0x4e')]=_0x0a9e('0x5a');logger['debug'](_0x0a9e('0x5b'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x320898['uniqueid']][_0x4edbb0],{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x5c'),this[_0x0a9e('0x8')][_0x320898[_0x0a9e('0x26')]][_0x4edbb0]);}}}}}catch(_0x4abc8f){logger[_0x0a9e('0x37')](_0x0a9e('0x5d'),_0x320898[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x4abc8f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x13')]=function(_0x40fc56){try{if(this[_0x0a9e('0x1e')](_0x40fc56)){logger[_0x0a9e('0x23')](_0x0a9e('0x5e'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x40fc56,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){for(var _0x5b35db in this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x0a9e('0x58')](_0x5b35db)){if(this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x3c')]&&!this['channels'][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x12')]){logger[_0x0a9e('0x20')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40fc56[_0x0a9e('0x26')],this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x21')],_0x5b35db);this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x40fc56['uniqueid']][_0x5b35db][_0x0a9e('0x4e')]=_0x40fc56[_0x0a9e('0x4e')]=='transfer'?_0x0a9e('0x61'):_0x40fc56['reason'];this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x62')]=_0x40fc56[_0x0a9e('0x62')];if(this['voiceQueues'][_0x40fc56['queue']]&&this[_0x0a9e('0x9')][_0x40fc56[_0x0a9e('0x28')]][_0x0a9e('0x63')]){this['channels'][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db][_0x0a9e('0x64')]=this['voiceQueues'][_0x40fc56['queue']][_0x0a9e('0x65')];this['channels'][_0x40fc56['uniqueid']][_0x5b35db]['agentacw']=!![];}this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]=_[_0x0a9e('0x2d')](this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]],[_0x0a9e('0x28'),'destconnectedlinenum']);logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')](this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db],{'showHidden':![],'depth':null}));ami['emit'](_0x0a9e('0x66'),this[_0x0a9e('0x8')][_0x40fc56[_0x0a9e('0x26')]][_0x5b35db]);logger['debug'](_0x0a9e('0x67'),_0x40fc56[_0x0a9e('0x26')],util[_0x0a9e('0x25')]({'id':this[_0x0a9e('0xa')][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]},{'showHidden':![],'depth':null}));this[_0x0a9e('0x1d')](util[_0x0a9e('0x35')]('user:%s',_0x40fc56[_0x0a9e('0x21')]),_0x0a9e('0x69'),{'id':this['agents'][_0x40fc56[_0x0a9e('0x32')]]['id'],'destaccountcode':_0x40fc56[_0x0a9e('0x68')]});}}}}}}catch(_0x3a1974){logger['error'](_0x0a9e('0x6a'),_0x40fc56['uniqueid'],util[_0x0a9e('0x25')](_0x3a1974,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x15')]=function(_0x1f29bd){try{if(this[_0x0a9e('0x1e')](_0x1f29bd)){logger[_0x0a9e('0x23')](_0x0a9e('0x6b'),_0x1f29bd[_0x0a9e('0x26')],util['inspect'](_0x1f29bd,{'showHidden':![],'depth':null}));this[_0x0a9e('0x6c')](_0x1f29bd[_0x0a9e('0x26')],_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){for(var _0x33f0c9 in this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]]){if(this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x0a9e('0x58')](_0x33f0c9)){logger['info'](_0x0a9e('0x70'),_0x1f29bd[_0x0a9e('0x26')],_0x33f0c9,_[_0x0a9e('0x6d')](_0x1f29bd[_0x0a9e('0x6e')])[0x0],_0x1f29bd[_0x0a9e('0x6f')]);if(_['isUndefined'](this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9]['variables'])){this[_0x0a9e('0x8')][_0x1f29bd['uniqueid']][_0x33f0c9][_0x0a9e('0xb')]={};}this[_0x0a9e('0x8')][_0x1f29bd[_0x0a9e('0x26')]][_0x33f0c9][_0x0a9e('0xb')]=this['variables'][_0x1f29bd[_0x0a9e('0x26')]];}}}}}catch(_0x4cf72d){logger[_0x0a9e('0x37')](_0x0a9e('0x71'),_0x1f29bd['uniqueid'],util[_0x0a9e('0x25')](_0x4cf72d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x6c')]=function(_0x4ab276,_0x4c788f,_0x1b82b7){var _0x6ba2be=[_0x0a9e('0x72'),_0x0a9e('0x73'),_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'),_0x0a9e('0x77'),_0x0a9e('0x78'),'rtpaudioqosrttbridged',_0x0a9e('0x79'),'sipuri',_0x0a9e('0x7a'),_0x0a9e('0x7b'),_0x0a9e('0x7c'),_0x0a9e('0x7d'),_0x0a9e('0x7e'),'memberlastcall',_0x0a9e('0x21'),_0x0a9e('0x7f'),_0x0a9e('0x80')];if(!_[_0x0a9e('0x81')](_0x4c788f)&&!_[_0x0a9e('0x82')](_0x6ba2be,_0x4c788f)){if(_['isUndefined'](this['variables'][_0x4ab276])){this[_0x0a9e('0xb')][_0x4ab276]={};}this['variables'][_0x4ab276][_0x4c788f]=_0x1b82b7;}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x17')]=function(_0x4672e1){try{if(this[_0x0a9e('0x1e')](_0x4672e1)){logger[_0x0a9e('0x23')](_0x0a9e('0x83'),_0x4672e1['uniqueid'],util['inspect'](_0x4672e1,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']]){for(var _0x2469d1 in this['channels'][_0x4672e1[_0x0a9e('0x26')]]){if(this['channels'][_0x4672e1['uniqueid']][_0x0a9e('0x58')](_0x2469d1)){if(this[_0x0a9e('0x8')][_0x4672e1['uniqueid']][_0x2469d1][_0x0a9e('0x4e')]==_0x0a9e('0x84')&&this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x12')]){logger['info']('[%s][voiceAgentReport][hangup]\x20destuniqueid:%s',_0x4672e1[_0x0a9e('0x26')],_0x2469d1);this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]][_0x2469d1][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x0a9e('0x23')](_0x0a9e('0x85'),_0x4672e1['uniqueid'],util[_0x0a9e('0x25')](_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]),{'showHidden':![],'depth':null}));ami[_0x0a9e('0x1d')](_0x0a9e('0x87'),_[_0x0a9e('0x86')](this[_0x0a9e('0x8')][_0x4672e1[_0x0a9e('0x26')]]));delete this[_0x0a9e('0x8')][_0x4672e1['uniqueid']];}if(this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]]){delete this[_0x0a9e('0xb')][_0x4672e1[_0x0a9e('0x26')]];}}}catch(_0x1d0b02){logger['error']('[%s][voiceAgentReport][hangup]',_0x4672e1[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x1d0b02,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x88')]=function(_0x34f7b5){try{if(this['isNotNull'](_0x34f7b5)){logger[_0x0a9e('0x23')](_0x0a9e('0x89'),_0x34f7b5[_0x0a9e('0x26')],util['inspect'](_0x34f7b5,{'showHidden':![],'depth':null}));if(this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]){for(var _0x2144ca in this['channels'][_0x34f7b5[_0x0a9e('0x8a')]]){if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]]['hasOwnProperty'](_0x2144ca)){if(_0x34f7b5[_0x0a9e('0x8b')]===_0x2144ca){logger['info'](_0x0a9e('0x8c'),_0x34f7b5[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x21')],_0x2144ca);var _0x1bee04=moment();this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x12')]=!![];this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x5f')]=moment()[_0x0a9e('0x35')](_0x0a9e('0x27'));this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca]['lastevent']='complete';this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x4e')]=_0x0a9e('0x84');this['channels'][_0x34f7b5[_0x0a9e('0x8a')]][_0x2144ca][_0x0a9e('0x62')]=_0x1bee04[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']][_0x2144ca][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}if(this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]]){var _0x5d0e1f=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8f')]];this[_0x0a9e('0x8')][_0x34f7b5['secondtransfereruniqueid']]=this[_0x0a9e('0x8')][_0x34f7b5[_0x0a9e('0x8a')]];this[_0x0a9e('0x8')][_0x34f7b5['transfereeuniqueid']]=_0x5d0e1f;}}}catch(_0x303f75){logger[_0x0a9e('0x37')](_0x0a9e('0x90'),_0x34f7b5[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x303f75,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x1b')]=function(_0x289e65){try{if(this['isNotNull'](_0x289e65)){logger[_0x0a9e('0x23')](_0x0a9e('0x91'),_0x289e65[_0x0a9e('0x26')],util['inspect'](_0x289e65,{'showHidden':![],'depth':null}));if(this['channels'][_0x289e65['transfereeuniqueid']]){for(var _0x1015aa in this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']]){if(this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x0a9e('0x58')](_0x1015aa)){if(_0x289e65['transfereruniqueid']===_0x1015aa){logger[_0x0a9e('0x20')](_0x0a9e('0x92'),_0x289e65[_0x0a9e('0x26')],this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x21')],_0x1015aa);var _0x40e6e7=moment();this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['agentcomplete']=!![];this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x5f')]=_0x40e6e7;this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x53')]=_0x0a9e('0x60');this[_0x0a9e('0x8')][_0x289e65['transfereeuniqueid']][_0x1015aa][_0x0a9e('0x4e')]=_0x0a9e('0x84');this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa]['talktime']=_0x40e6e7[_0x0a9e('0x8d')](this[_0x0a9e('0x8')][_0x289e65[_0x0a9e('0x8a')]][_0x1015aa][_0x0a9e('0x3c')],_0x0a9e('0x8e'));}}}}}}catch(_0x2be526){logger[_0x0a9e('0x37')](_0x0a9e('0x93'),_0x289e65[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2be526,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x0a9e('0x18')]=function(_0x88b25f){var _0x2ff265='';try{if(this[_0x0a9e('0x1e')](_0x88b25f)){logger[_0x0a9e('0x23')](_0x0a9e('0x94'),_0x88b25f[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x88b25f,{'showHidden':![],'depth':null}));if(_0x88b25f['channel']){_0x2ff265=_0x88b25f[_0x0a9e('0x95')][_0x0a9e('0x96')](0x0,_0x88b25f[_0x0a9e('0x95')]['lastIndexOf']('-'));if(this[_0x0a9e('0xa')][_0x2ff265]){logger[_0x0a9e('0x20')](_0x0a9e('0x97'),_0x88b25f[_0x0a9e('0x26')],_0x2ff265);this[_0x0a9e('0xa')][_0x2ff265][_0x0a9e('0x98')]=!![];}}}}catch(_0x424f1b){logger[_0x0a9e('0x37')](_0x0a9e('0x99'),_0x88b25f[_0x0a9e('0x26')],util['inspect'](_0x424f1b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x0a9e('0x1c')][_0x0a9e('0x9a')]=function(_0x15a9ed){var _0x3db98f='';try{if(this[_0x0a9e('0x1e')](_0x15a9ed)){logger[_0x0a9e('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x15a9ed[_0x0a9e('0x26')],util['inspect'](_0x15a9ed,{'showHidden':![],'depth':null}));if(_0x15a9ed['channel']){_0x3db98f=_0x15a9ed['channel'][_0x0a9e('0x96')](0x0,_0x15a9ed[_0x0a9e('0x95')][_0x0a9e('0x9b')]('-'));if(this[_0x0a9e('0xa')][_0x3db98f]){logger['info'](_0x0a9e('0x9c'),_0x15a9ed[_0x0a9e('0x26')],_0x3db98f);this[_0x0a9e('0xa')][_0x3db98f][_0x0a9e('0x98')]=![];}}}}catch(_0x2c8d1d){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x15a9ed[_0x0a9e('0x26')],util[_0x0a9e('0x25')](_0x2c8d1d,{'showHidden':![],'depth':null}));}};module[_0x0a9e('0x9d')]=VoiceAgentReport;
\ No newline at end of file
index 9b7dda7..ec8aeca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9714=['holdtime','routealias','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','.WAV','monitorFilename','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','syncMixMonitorFilename','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','length','user:agentcomplete','transferType','then','isEmpty','getSettings','stopRecordingOnTransfer','Action','catch','StopMixMonitor','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','syncMusicOnHoldStart','mohstarttime','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','ioredis','../../../config/environment','ami','../model/channel','set','agi','dial','playback','voicemail','FAILED','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','newexten','syncNewExten','bind','newchannel','newstate','syncNewState','varset','syncVarSet','syncHangup','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','error','[voiceCallReport][coreshowchannels]','inspect','prototype','emit','syncNewCallerId','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','isUndefined','merge','pick','keys','from-sip','channel','split','exten','destconnectedlinenum','connectedlinenum','format','user:%s','name','user:agentconnect','accountcode','syncNewChannel','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','startsWith','CDR(routeAlias)','appdata','duration','subtract','seconds','NO\x20ANSWER','lastapplication','lastdata','cdr(','match','type','isNil','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','xcally-motion-preview','connectedlinename','destinationchannel','UserId'];(function(_0x20534c,_0xe46275){var _0x1925cc=function(_0xd3ef7b){while(--_0xd3ef7b){_0x20534c['push'](_0x20534c['shift']());}};_0x1925cc(++_0xe46275);}(_0x9714,0x11b));var _0x4971=function(_0x574617,_0x42eccc){_0x574617=_0x574617-0x0;var _0x29de90=_0x9714[_0x574617];return _0x29de90;};'use strict';var _=require(_0x4971('0x0'));var moment=require(_0x4971('0x1'));var util=require('util');var path=require('path');var Redis=require(_0x4971('0x2'));var config=require(_0x4971('0x3'));var logger=require('../../../config/logger')(_0x4971('0x4'));var ami=require('../ami');var Channel=require(_0x4971('0x5'));var RpcSetting=require('../rpc/setting');var applications=[_0x4971('0x6'),'queue',_0x4971('0x7'),_0x4971('0x8'),_0x4971('0x9'),_0x4971('0xa')];var dispositions=['NO\x20ANSWER',_0x4971('0xb'),_0x4971('0xb'),'NO\x20ANSWER','NO\x20ANSWER','NO\x20ANSWER','ANSWERED','BUSY','FAILED','FAILED',_0x4971('0xb')];config['redis']=_[_0x4971('0xc')](config['redis'],{'host':_0x4971('0xd'),'port':0x18eb});var io=require(_0x4971('0xe'))(new Redis(config['redis']));function VoiceCallReport(_0x19c5a6){this[_0x4971('0xf')]=_0x19c5a6[_0x4971('0xf')];this['agents']=_0x19c5a6[_0x4971('0x10')];this[_0x4971('0x11')]={};ami['on']('coreshowchannel',this['syncNewExten']['bind'](this));ami['on'](_0x4971('0x12'),this[_0x4971('0x13')][_0x4971('0x14')](this));ami['on'](_0x4971('0x15'),this['syncNewChannel']['bind'](this));ami['on'](_0x4971('0x16'),this[_0x4971('0x17')][_0x4971('0x14')](this));ami['on'](_0x4971('0x18'),this[_0x4971('0x19')]['bind'](this));ami['on']('hangup',this[_0x4971('0x1a')][_0x4971('0x14')](this));ami['on']('newcallerid',this['syncNewCallerId'][_0x4971('0x14')](this));ami['on']('attendedtransfer',this[_0x4971('0x1b')]['bind'](this));ami['on'](_0x4971('0x1c'),this[_0x4971('0x1d')][_0x4971('0x14')](this));ami['on'](_0x4971('0x1e'),this['syncMusicOnHoldStart'][_0x4971('0x14')](this));ami['on'](_0x4971('0x1f'),this[_0x4971('0x20')]['bind'](this));try{logger[_0x4971('0x21')](_0x4971('0x22'));ami['actionCoreShowChannels']();}catch(_0x116b24){logger[_0x4971('0x23')](_0x4971('0x24'),util[_0x4971('0x25')](_0x116b24,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x4971('0x26')]['isNotNull']=function(_0x4dff6a){return _0x4dff6a!==null&&!_['isUndefined'](_0x4dff6a);};VoiceCallReport['prototype'][_0x4971('0x27')]=function(_0x2d7561,_0x44ea71,_0xa1aa38){io['to'](_0x2d7561)[_0x4971('0x27')](_0x44ea71,_0xa1aa38);};VoiceCallReport['prototype'][_0x4971('0x28')]=function(_0x221e75){try{if(this[_0x4971('0x29')](_0x221e75)){logger[_0x4971('0x21')](_0x4971('0x2a'),_0x221e75[_0x4971('0x2b')],_0x221e75[_0x4971('0x2c')],_0x221e75[_0x4971('0x2d')]);logger['debug'](_0x4971('0x2e'),_0x221e75[_0x4971('0x2b')],util[_0x4971('0x25')](_0x221e75,{'showHidden':![],'depth':null}));if(_0x221e75[_0x4971('0x2b')]===_0x221e75[_0x4971('0x2f')]){if(!_[_0x4971('0x30')](this[_0x4971('0xf')][_0x221e75[_0x4971('0x2b')]])){_[_0x4971('0x31')](this[_0x4971('0xf')][_0x221e75[_0x4971('0x2b')]],_[_0x4971('0x32')](_0x221e75,_[_0x4971('0x33')](this[_0x4971('0xf')][_0x221e75[_0x4971('0x2b')]])));}}if(_0x221e75['context']===_0x4971('0x34')){if(this['agents'][_0x221e75[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]){if(_0x221e75[_0x4971('0x37')]=='xcally-motion-preview'){this[_0x4971('0x10')][_0x221e75[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x38')]=_0x221e75[_0x4971('0x39')];this[_0x4971('0x27')](util[_0x4971('0x3a')](_0x4971('0x3b'),this['agents'][_0x221e75[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3c')]),_0x4971('0x3d'),{'destaccountcode':this[_0x4971('0x10')][_0x221e75[_0x4971('0x35')]['split']('-')[0x0]][_0x4971('0x3e')],'destconnectedlinenum':_0x221e75[_0x4971('0x39')]});}}}}}catch(_0x5881e8){logger[_0x4971('0x23')]('[%s][voiceCallReport][newcallerid]',_0x221e75['uniqueid'],util[_0x4971('0x25')](_0x5881e8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x3f')]=function(_0xa14744){try{if(this['isNotNull'](_0xa14744)){logger[_0x4971('0x40')](_0x4971('0x41'),_0xa14744['uniqueid'],util[_0x4971('0x25')](_0xa14744,{'showHidden':![],'depth':null}));if(this[_0x4971('0xf')][_0xa14744['uniqueid']])return;if(_0xa14744[_0x4971('0x35')]===_0x4971('0x42'))return;if(_0xa14744[_0x4971('0x2b')]!==_0xa14744[_0x4971('0x2f')]&&!this['blindTransfers'][_0xa14744[_0x4971('0x2f')]])return;logger[_0x4971('0x21')](_0x4971('0x43'),_0xa14744['uniqueid'],_0xa14744[_0x4971('0x44')],_0xa14744[_0x4971('0x37')]);this[_0x4971('0xf')][_0xa14744['uniqueid']]=new Channel();this[_0x4971('0xf')][_0xa14744[_0x4971('0x2b')]][_0x4971('0x45')]=moment()['format'](_0x4971('0x46'));this[_0x4971('0xf')][_0xa14744['uniqueid']][_0x4971('0x47')]=dispositions[_[_0x4971('0x48')](_0xa14744[_0x4971('0x49')])];_[_0x4971('0x31')](this[_0x4971('0xf')][_0xa14744[_0x4971('0x2b')]],_[_0x4971('0x32')](_0xa14744,_[_0x4971('0x33')](this[_0x4971('0xf')][_0xa14744[_0x4971('0x2b')]])));if(_0xa14744[_0x4971('0x44')]===_0x4971('0x34')){if(this[_0x4971('0x10')][_0xa14744[_0x4971('0x35')]['split']('-')[0x0]]){if(_[_0x4971('0x30')](this[_0x4971('0x10')][_0xa14744[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['destconnectedlinenum'])){this[_0x4971('0x10')][_0xa14744[_0x4971('0x35')]['split']('-')[0x0]][_0x4971('0x38')]=_0xa14744[_0x4971('0x37')];logger[_0x4971('0x40')](_0x4971('0x4a'),_0xa14744['uniqueid'],util[_0x4971('0x25')]({'id':this[_0x4971('0x10')][_0xa14744['channel'][_0x4971('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x4971('0x10')][_0xa14744['channel'][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3e')],'destconnectedlinenum':_0xa14744[_0x4971('0x37')]},{'showHidden':![],'depth':null}));this[_0x4971('0x27')](util[_0x4971('0x3a')](_0x4971('0x3b'),this[_0x4971('0x10')][_0xa14744[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3c')]),'user:agentconnect',{'id':this[_0x4971('0x10')][_0xa14744[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0xa14744[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3e')],'destconnectedlinenum':_0xa14744[_0x4971('0x37')]});}}}}}catch(_0x59ddb9){logger['error']('[%s][voiceCallReport][newchannel]',_0xa14744[_0x4971('0x2b')],util[_0x4971('0x25')](_0x59ddb9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x13')]=function(_0x276d39){try{if(this[_0x4971('0x29')](_0x276d39)){logger[_0x4971('0x40')](_0x4971('0x4b'),_0x276d39[_0x4971('0x2b')],util['inspect'](_0x276d39,{'showHidden':![],'depth':null}));if(_0x276d39[_0x4971('0x35')]==='OutgoingSpoolFailed'||_0x276d39[_0x4971('0x37')]==='h')return;if(_0x276d39[_0x4971('0x2b')]===_0x276d39[_0x4971('0x2f')]||this[_0x4971('0x11')][_0x276d39['linkedid']]){_0x276d39['application']=_0x276d39[_0x4971('0x4c')][_0x4971('0x4d')]();_0x276d39[_0x4971('0x4e')]=_0x276d39['appdata']&&_0x276d39['appdata'][_0x4971('0x4f')](_0x4971('0x50'))?_0x276d39['appdata']:(_0x276d39[_0x4971('0x51')]||_0x276d39['applicationdata'])[_0x4971('0x4d')]();logger[_0x4971('0x21')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x276d39[_0x4971('0x2b')],_0x276d39['application'],_0x276d39[_0x4971('0x4e')]);if(_['isUndefined'](this['channels'][_0x276d39[_0x4971('0x2b')]])){this[_0x4971('0xf')][_0x276d39['uniqueid']]=new Channel();this['channels'][_0x276d39[_0x4971('0x2b')]][_0x4971('0x45')]=_0x276d39[_0x4971('0x52')]?moment()[_0x4971('0x53')](moment[_0x4971('0x52')](_0x276d39[_0x4971('0x52')])[_0x4971('0x54')](),_0x4971('0x54'))[_0x4971('0x3a')](_0x4971('0x46')):moment()[_0x4971('0x3a')](_0x4971('0x46'));this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]][_0x4971('0x47')]=_0x4971('0x55');}_['merge'](this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]],_[_0x4971('0x32')](_0x276d39,_[_0x4971('0x33')](this['channels'][_0x276d39['uniqueid']])));if(_['includes'](applications,_0x276d39[_0x4971('0x4c')])){this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]][_0x4971('0x56')]=_0x276d39['application'];this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]][_0x4971('0x57')]=_0x276d39['applicationdata'];if(_0x276d39[_0x4971('0x4c')]===_0x4971('0x6')&&_[_0x4971('0x4f')](_0x276d39[_0x4971('0x4e')][_0x4971('0x4d')](),_0x4971('0x58'))){var _0x322a28=_0x276d39['applicationdata'][_0x4971('0x36')]('=');var _0x103c5b=_0x322a28[0x0][_0x4971('0x4d')]()[_0x4971('0x59')](/cdr\((.*)\)/);if(_0x103c5b){if(_0x103c5b[0x1]===_0x4971('0x5a')&&!_[_0x4971('0x5b')](this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]][_0x103c5b[0x1]]))return;this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]][_0x103c5b[0x1]]=_0x322a28[0x1];}}else if(_0x276d39[_0x4971('0x4c')]===_0x4971('0x5c')){this[_0x4971('0xf')][_0x276d39[_0x4971('0x2b')]][_0x4971('0x5c')]=_0x276d39[_0x4971('0x4e')]['split'](',')[0x0];}}}}}catch(_0x582b8a){logger[_0x4971('0x23')](_0x4971('0x5d'),_0x276d39[_0x4971('0x2b')],util[_0x4971('0x25')](_0x582b8a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x17')]=function(_0x325832){try{if(this[_0x4971('0x29')](_0x325832)){logger['info'](_0x4971('0x5e'),_0x325832[_0x4971('0x2b')],_0x325832[_0x4971('0x2f')],_0x325832[_0x4971('0x2c')],_0x325832[_0x4971('0x2d')]);logger[_0x4971('0x40')](_0x4971('0x5f'),_0x325832[_0x4971('0x2b')],util[_0x4971('0x25')](_0x325832,{'showHidden':![],'depth':null}));if(_0x325832[_0x4971('0x49')]!=='6')return;if(_0x325832[_0x4971('0x2b')]!==_0x325832[_0x4971('0x2f')]){var _0x15263f=moment();if(this[_0x4971('0xf')][_0x325832['linkedid']]){if(!this[_0x4971('0xf')][_0x325832['linkedid']][_0x4971('0x60')]){this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]][_0x4971('0x60')]=!![];this['channels'][_0x325832[_0x4971('0x2f')]][_0x4971('0x61')]=_0x15263f[_0x4971('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x4971('0xf')][_0x325832['linkedid']][_0x4971('0x45')]){this[_0x4971('0xf')][_0x325832['linkedid']]['holdtime']=_0x15263f[_0x4971('0x62')](this[_0x4971('0xf')][_0x325832['linkedid']][_0x4971('0x45')],_0x4971('0x54'));}}this['channels'][_0x325832['linkedid']][_0x4971('0x2f')]=_0x325832[_0x4971('0x2b')];if(_0x325832[_0x4971('0x2d')]!==_0x4971('0x63')){this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]]['connectedlinenum']=_0x325832[_0x4971('0x2d')];}this['channels'][_0x325832[_0x4971('0x2f')]][_0x4971('0x64')]=_0x325832[_0x4971('0x2c')];this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]][_0x4971('0x65')]=_0x325832[_0x4971('0x35')];this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]][_0x4971('0x47')]=dispositions[_['toNumber'](_0x325832[_0x4971('0x49')])];if(this['agents'][_0x325832[_0x4971('0x35')]['split']('-')[0x0]]){this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]][_0x4971('0x66')]=this[_0x4971('0x10')][_0x325832[_0x4971('0x35')]['split']('-')[0x0]]['id'];this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]]['membername']=this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3c')];}}if(this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]]){if(!this['channels'][_0x325832['uniqueid']][_0x4971('0x60')]){this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x60')]=!![];this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x61')]=_0x15263f['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x45')]){this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x67')]=_0x15263f[_0x4971('0x62')](this[_0x4971('0xf')][_0x325832['uniqueid']]['starttime'],'seconds');}}if(_0x325832[_0x4971('0x2d')]!==_0x4971('0x63')){this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x39')]=_0x325832[_0x4971('0x2d')];}this['channels'][_0x325832['uniqueid']][_0x4971('0x64')]=_0x325832['calleridname'];this['channels'][_0x325832[_0x4971('0x2b')]]['destinationchannel']=_0x325832[_0x4971('0x35')];this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x47')]=dispositions[_['toNumber'](_0x325832['channelstate'])];}}else{if(this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]]){if(this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]){this[_0x4971('0xf')][_0x325832['uniqueid']][_0x4971('0x66')]=this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['id'];this[_0x4971('0xf')][_0x325832['uniqueid']]['membername']=this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3c')];}}}if(_0x325832[_0x4971('0x44')]===_0x4971('0x34')){if(this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]){this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['destconnectedlinenum']=_0x325832[_0x4971('0x37')];var _0x45109f,_0x29231a;if(this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]]){_0x45109f=this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x68')];_0x29231a=this[_0x4971('0xf')][_0x325832[_0x4971('0x2b')]][_0x4971('0x5c')];}else if(this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]]){_0x45109f=this[_0x4971('0xf')][_0x325832[_0x4971('0x2f')]][_0x4971('0x68')];_0x29231a=this['channels'][_0x325832[_0x4971('0x2f')]][_0x4971('0x5c')];}logger[_0x4971('0x40')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x325832[_0x4971('0x2b')],util[_0x4971('0x25')]({'id':this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x325832['channel']['split']('-')[0x0]][_0x4971('0x3e')],'destconnectedlinenum':_0x325832['exten'],'routealias':_0x45109f,'queue':_0x29231a||undefined},{'showHidden':![],'depth':null}));this[_0x4971('0x27')](util[_0x4971('0x3a')](_0x4971('0x3b'),this[_0x4971('0x10')][_0x325832[_0x4971('0x35')]['split']('-')[0x0]][_0x4971('0x3c')]),_0x4971('0x3d'),{'id':this[_0x4971('0x10')][_0x325832[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x325832[_0x4971('0x35')]['split']('-')[0x0]][_0x4971('0x3e')],'destconnectedlinenum':_0x325832[_0x4971('0x37')],'routealias':_0x45109f,'queue':_0x29231a||undefined});}}}}catch(_0x51beca){logger[_0x4971('0x23')](_0x4971('0x69'),_0x325832[_0x4971('0x2b')],util[_0x4971('0x25')](_0x51beca,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMixMonitorFilename']=function(_0x844ef5,_0x175f65){try{if(this[_0x4971('0xf')][_0x844ef5]){logger[_0x4971('0x21')](_0x4971('0x6a'),_0x844ef5,_0x175f65);this[_0x4971('0xf')][_0x844ef5][_0x4971('0x6b')]=!![];if(_['endsWith'](_0x175f65,_0x4971('0x6c'))){_0x175f65=_0x175f65['replace'](_0x4971('0x6c'),_0x4971('0x6d'));}this['channels'][_0x844ef5][_0x4971('0x6e')]=_0x175f65;var _0x257f66=_['find'](this['channels'][_0x844ef5][_0x4971('0x6f')],{'filename':_0x175f65});if(_['isNil'](_0x257f66)){this[_0x4971('0xf')][_0x844ef5][_0x4971('0x6f')][_0x4971('0x70')]({'filename':_0x175f65,'createdAt':moment()['format'](_0x4971('0x46')),'mixmonitorid':'','status':_0x4971('0x71')});}}}catch(_0x162f8d){logger[_0x4971('0x23')](_0x4971('0x72'),_0x844ef5,util[_0x4971('0x25')](_0x162f8d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x19')]=function(_0x16ea1b){try{if(this[_0x4971('0x29')](_0x16ea1b)){logger[_0x4971('0x40')](_0x4971('0x73'),_0x16ea1b['uniqueid'],util[_0x4971('0x25')](_0x16ea1b,{'showHidden':![],'depth':null}));if(this['channels'][_0x16ea1b[_0x4971('0x2b')]]&&_0x16ea1b[_0x4971('0x35')]!=_0x4971('0x42')){if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')])){if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')][_0x4971('0x75')])){logger[_0x4971('0x21')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x16ea1b[_0x4971('0x2b')],_0x16ea1b[_0x4971('0x76')]);this[_0x4971('0x77')](_0x16ea1b['uniqueid'],_0x16ea1b[_0x4971('0x76')]);}else if(this['isNotNull'](_0x16ea1b[_0x4971('0x74')][_0x4971('0x78')])){logger[_0x4971('0x21')](_0x4971('0x79'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b['value']);this[_0x4971('0xf')][_0x16ea1b['uniqueid']][_0x4971('0x2d')]=_0x16ea1b[_0x4971('0x76')];}else if(this[_0x4971('0x29')](_0x16ea1b['variable'][_0x4971('0x7a')])){logger[_0x4971('0x21')](_0x4971('0x7b'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b[_0x4971('0x76')]);this['channels'][_0x16ea1b['uniqueid']]['callerid']=_0x16ea1b[_0x4971('0x76')];}else if(this[_0x4971('0x29')](_0x16ea1b['variable']['xmd-cdrtype'])){logger[_0x4971('0x21')](_0x4971('0x7c'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b['value']);this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2b')]]['type']=_0x16ea1b[_0x4971('0x76')];}else if(this[_0x4971('0x29')](_0x16ea1b['variable'][_0x4971('0x7d')])){logger[_0x4971('0x21')](_0x4971('0x7e'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b['value'][_0x4971('0x36')](',')[0x0]);this['channels'][_0x16ea1b[_0x4971('0x2b')]]['queue']=_0x16ea1b[_0x4971('0x76')][_0x4971('0x36')](',')[0x0];}else if(this[_0x4971('0x29')](_0x16ea1b['variable'][_0x4971('0x7f')])){logger[_0x4971('0x21')](_0x4971('0x80'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b['value']);this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2b')]][_0x4971('0x81')]=_0x16ea1b[_0x4971('0x76')];}else if(this['isNotNull'](_0x16ea1b[_0x4971('0x74')][_0x4971('0x82')])){logger[_0x4971('0x21')](_0x4971('0x83'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b[_0x4971('0x76')]);this['channels'][_0x16ea1b['uniqueid']]['destination']=_0x16ea1b[_0x4971('0x76')];}else if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')][_0x4971('0x84')])){logger[_0x4971('0x21')](_0x4971('0x85'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b['value']);this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2b')]][_0x4971('0x86')]=_0x16ea1b[_0x4971('0x76')];}else if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')][_0x4971('0x87')])){logger['info'](_0x4971('0x88'),_0x16ea1b[_0x4971('0x2b')],_0x16ea1b[_0x4971('0x76')]);this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2b')]][_0x4971('0x5c')]=_0x16ea1b[_0x4971('0x76')];}else if(this[_0x4971('0x29')](_0x16ea1b['variable'][_0x4971('0x89')])){logger[_0x4971('0x21')](_0x4971('0x8a'),_0x16ea1b['uniqueid'],_0x16ea1b[_0x4971('0x76')]);this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2b')]][_0x4971('0x8b')]=_0x16ea1b[_0x4971('0x76')];}}}else if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')][_0x4971('0x75')])){if(_0x16ea1b['value']){var _0x3881fb=path[_0x4971('0x8c')](_0x16ea1b[_0x4971('0x76')])[_0x4971('0x3c')];logger[_0x4971('0x21')](_0x4971('0x8d'),_0x3881fb,_0x16ea1b['value']);this['syncMixMonitorFilename'](_0x3881fb,_0x16ea1b[_0x4971('0x76')]);}}else if(this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2f')]]){if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')])){if(this[_0x4971('0x29')](_0x16ea1b[_0x4971('0x74')][_0x4971('0x89')])){logger[_0x4971('0x21')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x16ea1b[_0x4971('0x2f')],_0x16ea1b[_0x4971('0x76')]);this[_0x4971('0xf')][_0x16ea1b[_0x4971('0x2f')]][_0x4971('0x8e')]=_0x16ea1b[_0x4971('0x76')];}}}}}catch(_0x20efe4){logger[_0x4971('0x23')](_0x4971('0x8f'),_0x16ea1b[_0x4971('0x2b')],util[_0x4971('0x25')](_0x20efe4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x1a')]=function(_0x4fe293){try{if(this['isNotNull'](_0x4fe293)){logger[_0x4971('0x40')](_0x4971('0x90'),_0x4fe293[_0x4971('0x2b')],util[_0x4971('0x25')](_0x4fe293,{'showHidden':![],'depth':null}));if(this[_0x4971('0x11')][_0x4fe293['linkedid']]){if(this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2f')]]){this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2f')]][_0x4971('0x2b')]=_0x4fe293['uniqueid'];this[_0x4971('0xf')][this['blindTransfers'][_0x4fe293[_0x4971('0x2f')]]['linkedid']][_0x4971('0x60')]=this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]][_0x4971('0x60')];this['channels'][this[_0x4971('0x11')][_0x4fe293['linkedid']][_0x4971('0x2f')]][_0x4971('0x61')]=this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['answertime'];this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2f')]][_0x4971('0x65')]=this['channels'][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2f')]][_0x4971('0x35')];this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293['linkedid']][_0x4971('0x2f')]][_0x4971('0x47')]=this['channels'][_0x4fe293['uniqueid']][_0x4971('0x47')];this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]=this['channels'][this['blindTransfers'][_0x4fe293[_0x4971('0x2f')]]['linkedid']];delete this['channels'][this['blindTransfers'][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2f')]];}else if(this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]]){this['channels'][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]][_0x4971('0x2b')]=[this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]]['uniqueid']][_0x4971('0x2f')],this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293['linkedid']]['uniqueid']]['linkedid']=this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]][_0x4971('0x2b')]][0x0];this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]]['answered']=this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['answered'];this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]]['uniqueid']]['answertime']=this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['answertime'];this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]]['uniqueid']]['destinationchannel']=this['channels'][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]][_0x4971('0x35')];this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]][_0x4971('0x47')]=this[_0x4971('0xf')][_0x4fe293['uniqueid']]['disposition'];this['channels'][_0x4fe293[_0x4971('0x2b')]]=this['channels'][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]][_0x4971('0x2b')]];delete this[_0x4971('0xf')][this[_0x4971('0x11')][_0x4fe293[_0x4971('0x2f')]]['uniqueid']];}}if(this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]){logger[_0x4971('0x21')](_0x4971('0x91'),_0x4fe293[_0x4971('0x2b')],_0x4fe293[_0x4971('0x92')]);var _0x1d9707=moment();this['channels'][_0x4fe293[_0x4971('0x2b')]]['endtime']=_0x1d9707[_0x4971('0x3a')](_0x4971('0x46'));this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['duration']=_0x1d9707[_0x4971('0x62')](this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]][_0x4971('0x45')],_0x4971('0x54'));if(this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]][_0x4971('0x60')]){this['channels'][_0x4fe293['uniqueid']][_0x4971('0x93')]=_0x1d9707['diff'](this['channels'][_0x4fe293['uniqueid']][_0x4971('0x61')],_0x4971('0x54'));this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]][_0x4971('0x67')]=this[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['duration']-this['channels'][_0x4fe293[_0x4971('0x2b')]]['billableseconds'];}if(_0x4fe293[_0x4971('0x44')]===_0x4971('0x34')){if(this[_0x4971('0x10')][_0x4fe293['channel'][_0x4971('0x36')]('-')[0x0]]){this['agents'][_0x4fe293[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]=_[_0x4971('0x94')](this['agents'][_0x4fe293['channel'][_0x4971('0x36')]('-')[0x0]],[_0x4971('0x38')]);logger['debug'](_0x4971('0x95'),_0x4fe293['uniqueid'],util[_0x4971('0x25')]({'id':this[_0x4971('0x10')][_0x4fe293['channel'][_0x4971('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x4971('0x10')][_0x4fe293[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]][_0x4971('0x3e')]},{'showHidden':![],'depth':null}));this[_0x4971('0x27')](util[_0x4971('0x3a')](_0x4971('0x3b'),this[_0x4971('0x10')][_0x4fe293[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['name']),'user:agentcomplete',{'id':this[_0x4971('0x10')][_0x4fe293[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0x4971('0x10')][_0x4fe293[_0x4971('0x35')][_0x4971('0x36')]('-')[0x0]]['accountcode']});for(var _0x423811=0x0;_0x423811<Object[_0x4971('0x33')](this[_0x4971('0x10')])[_0x4971('0x96')];_0x423811++){var _0xa0ee79=Object[_0x4971('0x33')](this[_0x4971('0x10')])[_0x423811];var _0x44e218=this[_0x4971('0x10')][_0xa0ee79];if(_0x44e218[_0x4971('0x3e')]===Number(_0x4fe293[_0x4971('0x39')])){this[_0x4971('0x27')](util[_0x4971('0x3a')](_0x4971('0x3b'),_0x44e218['name']),_0x4971('0x97'),{'id':_0x44e218['id'],'destaccountcode':_0x44e218[_0x4971('0x3e')],'transfer':this[_0x4971('0xf')][_0x4fe293['uniqueid']][_0x4971('0x98')]});break;}}}}var _0x13bbc9=this;Promise['resolve']()[_0x4971('0x99')](function(){var _0x28d48a=_0x13bbc9[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]];if(typeof _0x28d48a[_0x4971('0x98')]==='undefined')return;if(_[_0x4971('0x9a')](_0x28d48a[_0x4971('0x6f')]))return;return RpcSetting[_0x4971('0x9b')]()[_0x4971('0x99')](function(_0xd26236){if(!_0xd26236[_0x4971('0x9c')])return;return Promise['resolve']()['then'](function(){return ami[_0x4971('0x9d')]({'action':'StopMixMonitor','channel':_0x28d48a[_0x4971('0x35')]})[_0x4971('0x9e')](function(){});})[_0x4971('0x99')](function(){return ami[_0x4971('0x9d')]({'action':_0x4971('0x9f'),'channel':_0x28d48a[_0x4971('0x65')]})['catch'](function(){})['finally'](function(){var _0x1ae0b9=_0x13bbc9[_0x4971('0x10')][_0x28d48a[_0x4971('0x65')][_0x4971('0x36')]('-')[0x0]];if(!_0x1ae0b9)return;io[_0x4971('0x27')](_0x4971('0xa0'),{'agentId':_0x1ae0b9['id'],'uniqueid':_0x28d48a[_0x4971('0x2b')]});});});});})[_0x4971('0x99')](function(){if(_0x4fe293[_0x4971('0xa1')]===_0x4971('0xa2')){_0x13bbc9[_0x4971('0x11')][_0x4fe293[_0x4971('0x2b')]]=_0x4fe293;}else{if(_0x13bbc9[_0x4971('0xf')][_0x4fe293['uniqueid']][_0x4971('0x5a')]===_0x4971('0xa3')&&_0x13bbc9[_0x4971('0x11')][_0x4fe293[_0x4971('0x2b')]]){_0x13bbc9[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]][_0x4971('0x2b')]=[_0x13bbc9[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['linkedid'],_0x13bbc9[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]['linkedid']=_0x13bbc9['channels'][_0x4fe293[_0x4971('0x2b')]][_0x4971('0x2b')]][0x0];delete _0x13bbc9[_0x4971('0x11')][_0x4fe293[_0x4971('0x2b')]];}}logger['debug'](_0x4971('0xa4'),_0x4fe293[_0x4971('0x2b')],util[_0x4971('0x25')](_0x13bbc9['channels'][_0x4fe293['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x4971('0x27')](_0x4971('0xa5'),_0x13bbc9[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]]);delete _0x13bbc9[_0x4971('0xf')][_0x4fe293[_0x4971('0x2b')]];});}}}catch(_0x47b863){logger[_0x4971('0x23')](_0x4971('0xa6'),_0x4fe293[_0x4971('0x2b')],util[_0x4971('0x25')](_0x47b863,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x1b')]=function(_0x15b68c){try{if(this[_0x4971('0x29')](_0x15b68c)){logger[_0x4971('0x21')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x15b68c[_0x4971('0x2b')],_0x15b68c[_0x4971('0xa7')],_0x15b68c[_0x4971('0xa8')]);logger['debug'](_0x4971('0xa9'),_0x15b68c[_0x4971('0x2b')],util[_0x4971('0x25')](_0x15b68c,{'showHidden':![],'depth':null}));var _0x24199c;if(this[_0x4971('0xf')][_0x15b68c['transfereeuniqueid']]){this[_0x4971('0xf')][_0x15b68c[_0x4971('0xaa')]]['transfercalleridnum']=_0x15b68c[_0x4971('0xa7')];this[_0x4971('0xf')][_0x15b68c[_0x4971('0xaa')]][_0x4971('0xab')]=_0x15b68c[_0x4971('0xa8')];if(this[_0x4971('0xf')][_0x15b68c[_0x4971('0xac')]]){_0x24199c=this[_0x4971('0xf')][_0x15b68c[_0x4971('0xac')]];this[_0x4971('0xf')][_0x15b68c[_0x4971('0xac')]]=this[_0x4971('0xf')][_0x15b68c[_0x4971('0xaa')]];this[_0x4971('0xf')][_0x15b68c[_0x4971('0xaa')]]=_0x24199c;}this['channels'][_0x15b68c[_0x4971('0xac')]]['transferType']=_0x4971('0xad');}else if(this['channels'][_0x15b68c[_0x4971('0xae')]]){this['channels'][_0x15b68c[_0x4971('0xae')]][_0x4971('0xaf')]=_0x15b68c[_0x4971('0xa7')];this['channels'][_0x15b68c[_0x4971('0xae')]][_0x4971('0xab')]=_0x15b68c[_0x4971('0xa8')];if(this['channels'][_0x15b68c[_0x4971('0xb0')]]){_0x24199c=this[_0x4971('0xf')][_0x15b68c[_0x4971('0xb0')]];this[_0x4971('0xf')][_0x15b68c[_0x4971('0xb0')]]=this['channels'][_0x15b68c[_0x4971('0xae')]];this['channels'][_0x15b68c['transfertargetuniqueid']]=_0x24199c;}this[_0x4971('0xf')][_0x15b68c[_0x4971('0xae')]][_0x4971('0x98')]=_0x4971('0xad');}if((this[_0x4971('0xf')][_0x15b68c['origtransfereruniqueid']]||this[_0x4971('0xf')][_0x15b68c[_0x4971('0xb1')]])&&this[_0x4971('0xf')][_0x15b68c[_0x4971('0xac')]]){var _0x2a77d9=_['some']([this['channels'][_0x15b68c['origtransfereruniqueid']],this[_0x4971('0xf')][_0x15b68c['origtransfererlinkedid']],this[_0x4971('0xf')][_0x15b68c['secondtransfereruniqueid']]],function(_0x1d0fc8){return _0x1d0fc8&&_0x1d0fc8['type']==='outbound'&&_0x1d0fc8['routeid'];});if(_0x2a77d9){if(this[_0x4971('0xf')][_0x15b68c['origtransfereruniqueid']])this[_0x4971('0xf')][_0x15b68c['origtransfereruniqueid']]['transferType']=_0x4971('0xad');if(this[_0x4971('0xf')][_0x15b68c['origtransfererlinkedid']])this['channels'][_0x15b68c[_0x4971('0xb1')]][_0x4971('0x98')]=_0x4971('0xad');this['channels'][_0x15b68c[_0x4971('0xac')]]['transferType']=_0x4971('0xad');}}}}catch(_0x469007){logger[_0x4971('0x23')]('[%s][voiceCallReport][attendedtransfer]',_0x15b68c['uniqueid'],util[_0x4971('0x25')](_0x469007,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x1d')]=function(_0x54cbda){try{if(this[_0x4971('0x29')](_0x54cbda)){logger[_0x4971('0x21')](_0x4971('0xb2'),_0x54cbda[_0x4971('0x2b')],_0x54cbda[_0x4971('0xb3')],_0x54cbda[_0x4971('0xb4')]);logger[_0x4971('0x40')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x54cbda['uniqueid'],util[_0x4971('0x25')](_0x54cbda,{'showHidden':![],'depth':null}));if(this['channels'][_0x54cbda['transfereeuniqueid']]){this[_0x4971('0xf')][_0x54cbda['transfereeuniqueid']][_0x4971('0xaf')]=_0x54cbda[_0x4971('0xb3')];this['channels'][_0x54cbda[_0x4971('0xaa')]]['transferconnectedlinenum']=_0x54cbda[_0x4971('0xb4')];this['channels'][_0x54cbda[_0x4971('0xaa')]][_0x4971('0x98')]=_0x4971('0xb5');this[_0x4971('0x1a')]({'event':_0x4971('0xa2'),'uniqueid':_0x54cbda[_0x4971('0xaa')],'linkedid':_0x54cbda[_0x4971('0xb6')],'context':_0x54cbda[_0x4971('0x44')],'channel':_0x54cbda['transfererchannel']});}else{this[_0x4971('0xf')][_0x54cbda[_0x4971('0xb6')]]['transferType']=_0x4971('0xb5');this['syncHangup']({'event':_0x4971('0xa2'),'uniqueid':_0x54cbda['transfereruniqueid'],'linkedid':_0x54cbda['transfereeuniqueid'],'context':_0x54cbda[_0x4971('0x44')],'channel':_0x54cbda[_0x4971('0xb7')]});}}}catch(_0x729f6b){logger['error'](_0x4971('0xb8'),_0x54cbda[_0x4971('0x2b')],util[_0x4971('0x25')](_0x729f6b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4971('0xb9')]=function(_0x2570ae){try{if(this['isNotNull'](_0x2570ae)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x2570ae[_0x4971('0x2b')],util[_0x4971('0x25')](_0x2570ae,{'showHidden':![],'depth':null}));if(this[_0x4971('0xf')][_0x2570ae[_0x4971('0x2b')]]){if(!_[_0x4971('0x5b')](this[_0x4971('0xf')][_0x2570ae[_0x4971('0x2b')]][_0x4971('0x61')])){this['channels'][_0x2570ae[_0x4971('0x2b')]][_0x4971('0xba')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger['info']('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x2570ae[_0x4971('0x2b')],this['channels'][_0x2570ae[_0x4971('0x2b')]][_0x4971('0xba')]);}}}}catch(_0x51d18b){logger[_0x4971('0x23')](_0x4971('0xbb'),_0x2570ae['uniqueid'],util[_0x4971('0x25')](_0x51d18b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4971('0x26')][_0x4971('0x20')]=function(_0x333efd){try{if(this[_0x4971('0x29')](_0x333efd)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x333efd[_0x4971('0x2b')],util['inspect'](_0x333efd,{'showHidden':![],'depth':null}));if(this['channels'][_0x333efd[_0x4971('0x2b')]]){if(!_[_0x4971('0x5b')](this[_0x4971('0xf')][_0x333efd['uniqueid']]['mohstarttime'])){this[_0x4971('0xf')][_0x333efd['uniqueid']][_0x4971('0xbc')]+=moment()[_0x4971('0xbd')](0x0)[_0x4971('0x62')](this[_0x4971('0xf')][_0x333efd[_0x4971('0x2b')]][_0x4971('0xba')],_0x4971('0x54'));logger[_0x4971('0x21')](_0x4971('0xbe'),_0x333efd[_0x4971('0x2b')],this[_0x4971('0xf')][_0x333efd['uniqueid']][_0x4971('0xbc')]);delete this['channels'][_0x333efd[_0x4971('0x2b')]][_0x4971('0xba')];}}}}catch(_0x110526){logger['error'](_0x4971('0xbf'),_0x333efd[_0x4971('0x2b')],util[_0x4971('0x25')](_0x110526,{'showHidden':![],'depth':null}));}};module[_0x4971('0xc0')]=VoiceCallReport;
\ No newline at end of file
+var _0x8f16=['newcallerid','syncNewCallerId','attendedtransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','actionCoreShowChannels','error','prototype','emit','isNotNull','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','isUndefined','merge','pick','keys','context','from-sip','channel','exten','xcally-motion-preview','destconnectedlinenum','format','user:%s','user:agentconnect','split','accountcode','connectedlinenum','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','[%s][voiceCallReport][newchannel]','OutgoingSpoolFailed','application','toLowerCase','applicationdata','appdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','includes','lastapplication','lastdata','startsWith','cdr(','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','channelstate','answered','answertime','diff','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcallid','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','endtime','holdtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','resolve','then','transferType','undefined','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','webbar:stopmonitors','type','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','syncHangup','BlindTransfer','transfereruniqueid','transfererchannel','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','lodash','moment','util','path','ami','../ami','../model/channel','../rpc/setting','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup'];(function(_0x50082f,_0x2aadac){var _0x5303e8=function(_0xce4915){while(--_0xce4915){_0x50082f['push'](_0x50082f['shift']());}};_0x5303e8(++_0x2aadac);}(_0x8f16,0x159));var _0x68f1=function(_0x21f375,_0x259486){_0x21f375=_0x21f375-0x0;var _0x409d13=_0x8f16[_0x21f375];return _0x409d13;};'use strict';var _=require(_0x68f1('0x0'));var moment=require(_0x68f1('0x1'));var util=require(_0x68f1('0x2'));var path=require(_0x68f1('0x3'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x68f1('0x4'));var ami=require(_0x68f1('0x5'));var Channel=require(_0x68f1('0x6'));var RpcSetting=require(_0x68f1('0x7'));var applications=['set',_0x68f1('0x8'),_0x68f1('0x9'),_0x68f1('0xa'),_0x68f1('0xb'),_0x68f1('0xc')];var dispositions=[_0x68f1('0xd'),_0x68f1('0xe'),_0x68f1('0xe'),_0x68f1('0xd'),_0x68f1('0xd'),'NO\x20ANSWER','ANSWERED',_0x68f1('0xf'),_0x68f1('0xe'),'FAILED',_0x68f1('0xe')];config[_0x68f1('0x10')]=_[_0x68f1('0x11')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x68f1('0x10')]));function VoiceCallReport(_0x3bf628){this[_0x68f1('0x12')]=_0x3bf628[_0x68f1('0x12')];this[_0x68f1('0x13')]=_0x3bf628[_0x68f1('0x13')];this[_0x68f1('0x14')]={};ami['on'](_0x68f1('0x15'),this[_0x68f1('0x16')][_0x68f1('0x17')](this));ami['on']('newexten',this['syncNewExten'][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x18'),this[_0x68f1('0x19')][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x1a'),this[_0x68f1('0x1b')][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x1c'),this[_0x68f1('0x1d')][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x1e'),this['syncHangup'][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x1f'),this[_0x68f1('0x20')][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x21'),this['syncAttendedTransfer'][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x22'),this[_0x68f1('0x23')][_0x68f1('0x17')](this));ami['on'](_0x68f1('0x24'),this[_0x68f1('0x25')][_0x68f1('0x17')](this));ami['on']('musiconholdstop',this[_0x68f1('0x26')]['bind'](this));try{logger[_0x68f1('0x27')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0x68f1('0x28')]();}catch(_0x5623e2){logger[_0x68f1('0x29')]('[voiceCallReport][coreshowchannels]',util['inspect'](_0x5623e2,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x68f1('0x2a')]['isNotNull']=function(_0x29b5c2){return _0x29b5c2!==null&&!_['isUndefined'](_0x29b5c2);};VoiceCallReport[_0x68f1('0x2a')]['emit']=function(_0x5efba4,_0x1936d6,_0x36a173){io['to'](_0x5efba4)[_0x68f1('0x2b')](_0x1936d6,_0x36a173);};VoiceCallReport[_0x68f1('0x2a')][_0x68f1('0x20')]=function(_0x27548b){try{if(this[_0x68f1('0x2c')](_0x27548b)){logger[_0x68f1('0x27')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x27548b[_0x68f1('0x2d')],_0x27548b[_0x68f1('0x2e')],_0x27548b[_0x68f1('0x2f')]);logger['debug'](_0x68f1('0x30'),_0x27548b[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x27548b,{'showHidden':![],'depth':null}));if(_0x27548b['uniqueid']===_0x27548b[_0x68f1('0x32')]){if(!_[_0x68f1('0x33')](this[_0x68f1('0x12')][_0x27548b[_0x68f1('0x2d')]])){_[_0x68f1('0x34')](this[_0x68f1('0x12')][_0x27548b[_0x68f1('0x2d')]],_[_0x68f1('0x35')](_0x27548b,_[_0x68f1('0x36')](this[_0x68f1('0x12')][_0x27548b[_0x68f1('0x2d')]])));}}if(_0x27548b[_0x68f1('0x37')]===_0x68f1('0x38')){if(this[_0x68f1('0x13')][_0x27548b[_0x68f1('0x39')]['split']('-')[0x0]]){if(_0x27548b[_0x68f1('0x3a')]==_0x68f1('0x3b')){this[_0x68f1('0x13')][_0x27548b[_0x68f1('0x39')]['split']('-')[0x0]][_0x68f1('0x3c')]=_0x27548b['connectedlinenum'];this[_0x68f1('0x2b')](util[_0x68f1('0x3d')](_0x68f1('0x3e'),this[_0x68f1('0x13')][_0x27548b[_0x68f1('0x39')]['split']('-')[0x0]]['name']),_0x68f1('0x3f'),{'destaccountcode':this[_0x68f1('0x13')][_0x27548b[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x41')],'destconnectedlinenum':_0x27548b[_0x68f1('0x42')]});}}}}}catch(_0x2f17ac){logger['error'](_0x68f1('0x43'),_0x27548b[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x2f17ac,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x68f1('0x19')]=function(_0x880710){try{if(this['isNotNull'](_0x880710)){logger[_0x68f1('0x44')]('[%s][voiceCallReport][newchannel]\x20event:',_0x880710[_0x68f1('0x2d')],util['inspect'](_0x880710,{'showHidden':![],'depth':null}));if(this[_0x68f1('0x12')][_0x880710[_0x68f1('0x2d')]])return;if(_0x880710[_0x68f1('0x39')]==='OutgoingSpoolFailed')return;if(_0x880710[_0x68f1('0x2d')]!==_0x880710[_0x68f1('0x32')]&&!this[_0x68f1('0x14')][_0x880710[_0x68f1('0x32')]])return;logger[_0x68f1('0x27')](_0x68f1('0x45'),_0x880710[_0x68f1('0x2d')],_0x880710['context'],_0x880710['exten']);this[_0x68f1('0x12')][_0x880710[_0x68f1('0x2d')]]=new Channel();this[_0x68f1('0x12')][_0x880710[_0x68f1('0x2d')]][_0x68f1('0x46')]=moment()[_0x68f1('0x3d')](_0x68f1('0x47'));this[_0x68f1('0x12')][_0x880710[_0x68f1('0x2d')]][_0x68f1('0x48')]=dispositions[_[_0x68f1('0x49')](_0x880710['channelstate'])];_[_0x68f1('0x34')](this[_0x68f1('0x12')][_0x880710[_0x68f1('0x2d')]],_[_0x68f1('0x35')](_0x880710,_[_0x68f1('0x36')](this[_0x68f1('0x12')][_0x880710[_0x68f1('0x2d')]])));if(_0x880710[_0x68f1('0x37')]===_0x68f1('0x38')){if(this[_0x68f1('0x13')][_0x880710[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]){if(_[_0x68f1('0x33')](this[_0x68f1('0x13')][_0x880710[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['destconnectedlinenum'])){this[_0x68f1('0x13')][_0x880710['channel']['split']('-')[0x0]][_0x68f1('0x3c')]=_0x880710[_0x68f1('0x3a')];logger[_0x68f1('0x44')](_0x68f1('0x4a'),_0x880710['uniqueid'],util[_0x68f1('0x31')]({'id':this[_0x68f1('0x13')][_0x880710[_0x68f1('0x39')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x68f1('0x13')][_0x880710[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x41')],'destconnectedlinenum':_0x880710[_0x68f1('0x3a')]},{'showHidden':![],'depth':null}));this[_0x68f1('0x2b')](util[_0x68f1('0x3d')](_0x68f1('0x3e'),this[_0x68f1('0x13')][_0x880710[_0x68f1('0x39')]['split']('-')[0x0]][_0x68f1('0x4b')]),'user:agentconnect',{'id':this['agents'][_0x880710[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0x68f1('0x13')][_0x880710[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x41')],'destconnectedlinenum':_0x880710['exten']});}}}}}catch(_0x55761a){logger[_0x68f1('0x29')](_0x68f1('0x4c'),_0x880710[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x55761a,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x68f1('0x16')]=function(_0x104e13){try{if(this[_0x68f1('0x2c')](_0x104e13)){logger[_0x68f1('0x44')]('[%s][voiceCallReport][newexten]\x20event:',_0x104e13[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x104e13,{'showHidden':![],'depth':null}));if(_0x104e13[_0x68f1('0x39')]===_0x68f1('0x4d')||_0x104e13[_0x68f1('0x3a')]==='h')return;if(_0x104e13[_0x68f1('0x2d')]===_0x104e13['linkedid']||this[_0x68f1('0x14')][_0x104e13[_0x68f1('0x32')]]){_0x104e13[_0x68f1('0x4e')]=_0x104e13[_0x68f1('0x4e')][_0x68f1('0x4f')]();_0x104e13[_0x68f1('0x50')]=_0x104e13[_0x68f1('0x51')]&&_0x104e13[_0x68f1('0x51')]['startsWith']('CDR(routeAlias)')?_0x104e13['appdata']:(_0x104e13['appdata']||_0x104e13[_0x68f1('0x50')])[_0x68f1('0x4f')]();logger['info'](_0x68f1('0x52'),_0x104e13[_0x68f1('0x2d')],_0x104e13[_0x68f1('0x4e')],_0x104e13[_0x68f1('0x50')]);if(_['isUndefined'](this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]])){this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]]=new Channel();this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]]['starttime']=_0x104e13['duration']?moment()['subtract'](moment[_0x68f1('0x53')](_0x104e13[_0x68f1('0x53')])[_0x68f1('0x54')](),_0x68f1('0x54'))[_0x68f1('0x3d')](_0x68f1('0x47')):moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]][_0x68f1('0x48')]='NO\x20ANSWER';}_['merge'](this[_0x68f1('0x12')][_0x104e13['uniqueid']],_['pick'](_0x104e13,_[_0x68f1('0x36')](this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]])));if(_[_0x68f1('0x55')](applications,_0x104e13['application'])){this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]][_0x68f1('0x56')]=_0x104e13[_0x68f1('0x4e')];this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]][_0x68f1('0x57')]=_0x104e13[_0x68f1('0x50')];if(_0x104e13[_0x68f1('0x4e')]==='set'&&_[_0x68f1('0x58')](_0x104e13['applicationdata'][_0x68f1('0x4f')](),_0x68f1('0x59'))){var _0x2283bb=_0x104e13['applicationdata'][_0x68f1('0x40')]('=');var _0x366a9e=_0x2283bb[0x0]['toLowerCase']()[_0x68f1('0x5a')](/cdr\((.*)\)/);if(_0x366a9e){if(_0x366a9e[0x1]==='type'&&!_['isNil'](this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]][_0x366a9e[0x1]]))return;this[_0x68f1('0x12')][_0x104e13[_0x68f1('0x2d')]][_0x366a9e[0x1]]=_0x2283bb[0x1];}}else if(_0x104e13[_0x68f1('0x4e')]==='queue'){this[_0x68f1('0x12')][_0x104e13['uniqueid']][_0x68f1('0x8')]=_0x104e13[_0x68f1('0x50')]['split'](',')[0x0];}}}}}catch(_0x547e03){logger['error'](_0x68f1('0x5b'),_0x104e13[_0x68f1('0x2d')],util['inspect'](_0x547e03,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')]['syncNewState']=function(_0x387c0c){try{if(this[_0x68f1('0x2c')](_0x387c0c)){logger[_0x68f1('0x27')](_0x68f1('0x5c'),_0x387c0c[_0x68f1('0x2d')],_0x387c0c[_0x68f1('0x32')],_0x387c0c['calleridname'],_0x387c0c['calleridnum']);logger[_0x68f1('0x44')]('[%s][voiceCallReport][newstate]\x20event:',_0x387c0c[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x387c0c,{'showHidden':![],'depth':null}));if(_0x387c0c[_0x68f1('0x5d')]!=='6')return;if(_0x387c0c[_0x68f1('0x2d')]!==_0x387c0c[_0x68f1('0x32')]){var _0x27078b=moment();if(this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]]){if(!this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x5e')]){this[_0x68f1('0x12')][_0x387c0c['linkedid']]['answered']=!![];this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x5f')]=_0x27078b['format'](_0x68f1('0x47'));if(this['channels'][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x46')]){this[_0x68f1('0x12')][_0x387c0c['linkedid']]['holdtime']=_0x27078b[_0x68f1('0x60')](this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x46')],_0x68f1('0x54'));}}this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x32')]=_0x387c0c[_0x68f1('0x2d')];if(_0x387c0c[_0x68f1('0x2f')]!=='xcally-motion-preview'){this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x42')]=_0x387c0c[_0x68f1('0x2f')];}this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x61')]=_0x387c0c['calleridname'];this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x62')]=_0x387c0c['channel'];this[_0x68f1('0x12')][_0x387c0c['linkedid']]['disposition']=dispositions[_[_0x68f1('0x49')](_0x387c0c[_0x68f1('0x5d')])];if(this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')]['split']('-')[0x0]]){this[_0x68f1('0x12')][_0x387c0c['linkedid']][_0x68f1('0x63')]=this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['id'];this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x64')]=this[_0x68f1('0x13')][_0x387c0c['channel'][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x4b')];}}if(this['channels'][_0x387c0c[_0x68f1('0x2d')]]){if(!this['channels'][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x5e')]){this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x5e')]=!![];this['channels'][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x5f')]=_0x27078b['format'](_0x68f1('0x47'));if(this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x46')]){this[_0x68f1('0x12')][_0x387c0c['uniqueid']]['holdtime']=_0x27078b[_0x68f1('0x60')](this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]]['starttime'],_0x68f1('0x54'));}}if(_0x387c0c[_0x68f1('0x2f')]!==_0x68f1('0x3b')){this['channels'][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x42')]=_0x387c0c[_0x68f1('0x2f')];}this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]]['connectedlinename']=_0x387c0c['calleridname'];this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x62')]=_0x387c0c['channel'];this[_0x68f1('0x12')][_0x387c0c['uniqueid']][_0x68f1('0x48')]=dispositions[_[_0x68f1('0x49')](_0x387c0c['channelstate'])];}}else{if(this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]]){if(this['agents'][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]){this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]]['UserId']=this['agents'][_0x387c0c['channel']['split']('-')[0x0]]['id'];this[_0x68f1('0x12')][_0x387c0c['uniqueid']][_0x68f1('0x64')]=this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x4b')];}}}if(_0x387c0c[_0x68f1('0x37')]===_0x68f1('0x38')){if(this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]){this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x3c')]=_0x387c0c[_0x68f1('0x3a')];var _0x424a21,_0x912b96;if(this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]]){_0x424a21=this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]][_0x68f1('0x65')];_0x912b96=this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x2d')]]['queue'];}else if(this['channels'][_0x387c0c['linkedid']]){_0x424a21=this['channels'][_0x387c0c[_0x68f1('0x32')]][_0x68f1('0x65')];_0x912b96=this[_0x68f1('0x12')][_0x387c0c[_0x68f1('0x32')]]['queue'];}logger['debug']('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x387c0c[_0x68f1('0x2d')],util[_0x68f1('0x31')]({'id':this[_0x68f1('0x13')][_0x387c0c['channel'][_0x68f1('0x40')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x387c0c[_0x68f1('0x3a')],'routealias':_0x424a21,'queue':_0x912b96||undefined},{'showHidden':![],'depth':null}));this[_0x68f1('0x2b')](util['format'](_0x68f1('0x3e'),this[_0x68f1('0x13')][_0x387c0c['channel']['split']('-')[0x0]][_0x68f1('0x4b')]),_0x68f1('0x3f'),{'id':this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x68f1('0x13')][_0x387c0c[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x387c0c[_0x68f1('0x3a')],'routealias':_0x424a21,'queue':_0x912b96||undefined});}}}}catch(_0xa4cd03){logger[_0x68f1('0x29')](_0x68f1('0x66'),_0x387c0c[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0xa4cd03,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')][_0x68f1('0x67')]=function(_0xbe0eb8,_0xac23de){try{if(this['channels'][_0xbe0eb8]){logger[_0x68f1('0x27')](_0x68f1('0x68'),_0xbe0eb8,_0xac23de);this[_0x68f1('0x12')][_0xbe0eb8][_0x68f1('0x69')]=!![];if(_[_0x68f1('0x6a')](_0xac23de,_0x68f1('0x6b'))){_0xac23de=_0xac23de['replace'](_0x68f1('0x6b'),_0x68f1('0x6c'));}this[_0x68f1('0x12')][_0xbe0eb8][_0x68f1('0x6d')]=_0xac23de;var _0xf84c03=_[_0x68f1('0x6e')](this['channels'][_0xbe0eb8][_0x68f1('0x6f')],{'filename':_0xac23de});if(_[_0x68f1('0x70')](_0xf84c03)){this[_0x68f1('0x12')][_0xbe0eb8][_0x68f1('0x6f')][_0x68f1('0x71')]({'filename':_0xac23de,'createdAt':moment()[_0x68f1('0x3d')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0x68f1('0x72')});}}}catch(_0xd8333){logger[_0x68f1('0x29')](_0x68f1('0x73'),_0xbe0eb8,util[_0x68f1('0x31')](_0xd8333,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')][_0x68f1('0x1d')]=function(_0x3298ea){try{if(this[_0x68f1('0x2c')](_0x3298ea)){logger['debug']('[%s][voiceCallReport][varset]\x20event:',_0x3298ea['uniqueid'],util['inspect'](_0x3298ea,{'showHidden':![],'depth':null}));if(this['channels'][_0x3298ea[_0x68f1('0x2d')]]&&_0x3298ea[_0x68f1('0x39')]!=_0x68f1('0x4d')){if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')])){if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')][_0x68f1('0x75')])){logger[_0x68f1('0x27')](_0x68f1('0x76'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x67')](_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')]['xmd-phone'])){logger['info'](_0x68f1('0x78'),_0x3298ea['uniqueid'],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x2d')]][_0x68f1('0x2f')]=_0x3298ea[_0x68f1('0x77')];}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')][_0x68f1('0x79')])){logger[_0x68f1('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x3298ea['uniqueid'],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x2d')]]['callerid']=_0x3298ea[_0x68f1('0x77')];}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')]['xmd-cdrtype'])){logger[_0x68f1('0x27')](_0x68f1('0x7a'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x2d')]]['type']=_0x3298ea[_0x68f1('0x77')];}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')][_0x68f1('0x7b')])){logger['info'](_0x68f1('0x7c'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea['value']['split'](',')[0x0]);this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x2d')]]['queue']=_0x3298ea[_0x68f1('0x77')][_0x68f1('0x40')](',')[0x0];}else if(this['isNotNull'](_0x3298ea['variable'][_0x68f1('0x7d')])){logger[_0x68f1('0x27')](_0x68f1('0x7e'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);this['channels'][_0x3298ea[_0x68f1('0x2d')]]['originatecalleridnum']=_0x3298ea[_0x68f1('0x77')];}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')][_0x68f1('0x7f')])){logger[_0x68f1('0x27')](_0x68f1('0x80'),_0x3298ea['uniqueid'],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x12')][_0x3298ea['uniqueid']]['destination']=_0x3298ea[_0x68f1('0x77')];}else if(this[_0x68f1('0x2c')](_0x3298ea['variable'][_0x68f1('0x81')])){logger[_0x68f1('0x27')](_0x68f1('0x82'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);this['channels'][_0x3298ea['uniqueid']]['calleridpreview']=_0x3298ea['value'];}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')][_0x68f1('0x83')])){logger[_0x68f1('0x27')](_0x68f1('0x84'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x2d')]]['queue']=_0x3298ea[_0x68f1('0x77')];}else if(this['isNotNull'](_0x3298ea['variable']['sipcallid'])){logger[_0x68f1('0x27')](_0x68f1('0x85'),_0x3298ea[_0x68f1('0x2d')],_0x3298ea[_0x68f1('0x77')]);this['channels'][_0x3298ea['uniqueid']][_0x68f1('0x86')]=_0x3298ea[_0x68f1('0x77')];}}}else if(this[_0x68f1('0x2c')](_0x3298ea[_0x68f1('0x74')]['mixmonitor_filename'])){if(_0x3298ea[_0x68f1('0x77')]){var _0x3c3d55=path[_0x68f1('0x87')](_0x3298ea[_0x68f1('0x77')])['name'];logger[_0x68f1('0x27')](_0x68f1('0x76'),_0x3c3d55,_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x67')](_0x3c3d55,_0x3298ea[_0x68f1('0x77')]);}}else if(this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x32')]]){if(this[_0x68f1('0x2c')](_0x3298ea['variable'])){if(this['isNotNull'](_0x3298ea[_0x68f1('0x74')][_0x68f1('0x88')])){logger[_0x68f1('0x27')](_0x68f1('0x85'),_0x3298ea[_0x68f1('0x32')],_0x3298ea[_0x68f1('0x77')]);this[_0x68f1('0x12')][_0x3298ea[_0x68f1('0x32')]][_0x68f1('0x89')]=_0x3298ea[_0x68f1('0x77')];}}}}}catch(_0x51e2a2){logger[_0x68f1('0x29')](_0x68f1('0x8a'),_0x3298ea[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x51e2a2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')]['syncHangup']=function(_0x3823f3){try{if(this[_0x68f1('0x2c')](_0x3823f3)){logger[_0x68f1('0x44')](_0x68f1('0x8b'),_0x3823f3['uniqueid'],util[_0x68f1('0x31')](_0x3823f3,{'showHidden':![],'depth':null}));if(this[_0x68f1('0x14')][_0x3823f3['linkedid']]){if(this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3['linkedid']][_0x68f1('0x32')]]){this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x32')]][_0x68f1('0x2d')]=_0x3823f3[_0x68f1('0x2d')];this['channels'][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]]['linkedid']][_0x68f1('0x5e')]=this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x5e')];this[_0x68f1('0x12')][this['blindTransfers'][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x32')]][_0x68f1('0x5f')]=this[_0x68f1('0x12')][_0x3823f3['uniqueid']][_0x68f1('0x5f')];this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3['linkedid']][_0x68f1('0x32')]][_0x68f1('0x62')]=this['channels'][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x32')]][_0x68f1('0x39')];this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3['linkedid']]['linkedid']][_0x68f1('0x48')]=this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]]['disposition'];this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]]=this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x32')]];delete this['channels'][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x32')]];}else if(this[_0x68f1('0x12')][this['blindTransfers'][_0x3823f3['linkedid']]['uniqueid']]){this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]]['uniqueid']][_0x68f1('0x2d')]=[this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]]['linkedid'],this['channels'][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]][_0x68f1('0x32')]=this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]]['uniqueid']]['uniqueid']][0x0];this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]]['answered']=this['channels'][_0x3823f3[_0x68f1('0x2d')]]['answered'];this['channels'][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]]['answertime']=this['channels'][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x5f')];this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]]['destinationchannel']=this['channels'][this[_0x68f1('0x14')][_0x3823f3['linkedid']][_0x68f1('0x2d')]]['channel'];this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]]['uniqueid']]['disposition']=this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x48')];this[_0x68f1('0x12')][_0x3823f3['uniqueid']]=this[_0x68f1('0x12')][this[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]];delete this[_0x68f1('0x12')][this['blindTransfers'][_0x3823f3[_0x68f1('0x32')]][_0x68f1('0x2d')]];}}if(this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]]){logger[_0x68f1('0x27')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0x3823f3['uniqueid'],_0x3823f3['cause-txt']);var _0x4a60a3=moment();this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x8c')]=_0x4a60a3[_0x68f1('0x3d')](_0x68f1('0x47'));this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x53')]=_0x4a60a3['diff'](this['channels'][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x46')],_0x68f1('0x54'));if(this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x5e')]){this['channels'][_0x3823f3[_0x68f1('0x2d')]]['billableseconds']=_0x4a60a3[_0x68f1('0x60')](this[_0x68f1('0x12')][_0x3823f3['uniqueid']][_0x68f1('0x5f')],_0x68f1('0x54'));this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x8d')]=this['channels'][_0x3823f3['uniqueid']][_0x68f1('0x53')]-this[_0x68f1('0x12')][_0x3823f3['uniqueid']][_0x68f1('0x8e')];}if(_0x3823f3[_0x68f1('0x37')]===_0x68f1('0x38')){if(this['agents'][_0x3823f3[_0x68f1('0x39')]['split']('-')[0x0]]){this['agents'][_0x3823f3[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]=_[_0x68f1('0x8f')](this[_0x68f1('0x13')][_0x3823f3[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]],[_0x68f1('0x3c')]);logger[_0x68f1('0x44')](_0x68f1('0x90'),_0x3823f3[_0x68f1('0x2d')],util['inspect']({'id':this['agents'][_0x3823f3[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0x68f1('0x13')][_0x3823f3['channel'][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x41')]},{'showHidden':![],'depth':null}));this[_0x68f1('0x2b')](util['format'](_0x68f1('0x3e'),this[_0x68f1('0x13')][_0x3823f3[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]][_0x68f1('0x4b')]),_0x68f1('0x91'),{'id':this[_0x68f1('0x13')][_0x3823f3['channel'][_0x68f1('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0x68f1('0x13')][_0x3823f3[_0x68f1('0x39')][_0x68f1('0x40')]('-')[0x0]]['accountcode']});for(var _0x35732e=0x0;_0x35732e<Object[_0x68f1('0x36')](this[_0x68f1('0x13')])[_0x68f1('0x92')];_0x35732e++){var _0x2e7553=Object[_0x68f1('0x36')](this[_0x68f1('0x13')])[_0x35732e];var _0x4d0cff=this[_0x68f1('0x13')][_0x2e7553];if(_0x4d0cff[_0x68f1('0x41')]===Number(_0x3823f3[_0x68f1('0x42')])){this[_0x68f1('0x2b')](util['format'](_0x68f1('0x3e'),_0x4d0cff['name']),_0x68f1('0x91'),{'id':_0x4d0cff['id'],'destaccountcode':_0x4d0cff[_0x68f1('0x41')],'transfer':this[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]]['transferType']});break;}}}}var _0x1e68cb=this;Promise[_0x68f1('0x93')]()[_0x68f1('0x94')](function(){var _0x5c4e5b=_0x1e68cb[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]];if(typeof _0x5c4e5b[_0x68f1('0x95')]===_0x68f1('0x96'))return;if(_[_0x68f1('0x97')](_0x5c4e5b[_0x68f1('0x6f')]))return;return RpcSetting[_0x68f1('0x98')]()['then'](function(_0x2d53e3){if(!_0x2d53e3[_0x68f1('0x99')])return;return Promise[_0x68f1('0x93')]()[_0x68f1('0x94')](function(){return ami[_0x68f1('0x9a')]({'action':_0x68f1('0x9b'),'channel':_0x5c4e5b[_0x68f1('0x39')]})['catch'](function(){});})[_0x68f1('0x94')](function(){return ami[_0x68f1('0x9a')]({'action':_0x68f1('0x9b'),'channel':_0x5c4e5b[_0x68f1('0x62')]})[_0x68f1('0x9c')](function(){})['finally'](function(){var _0x20aee1=_0x1e68cb[_0x68f1('0x13')][_0x5c4e5b[_0x68f1('0x62')][_0x68f1('0x40')]('-')[0x0]];if(!_0x20aee1)return;io['emit'](_0x68f1('0x9d'),{'agentId':_0x20aee1['id'],'uniqueid':_0x5c4e5b['uniqueid']});});});});})['then'](function(){if(_0x3823f3['event']==='BlindTransfer'){_0x1e68cb[_0x68f1('0x14')][_0x3823f3['uniqueid']]=_0x3823f3;}else{if(_0x1e68cb[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x9e')]===_0x68f1('0x9f')&&_0x1e68cb[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x2d')]]){_0x1e68cb[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]][_0x68f1('0x2d')]=[_0x1e68cb[_0x68f1('0x12')][_0x3823f3['uniqueid']][_0x68f1('0x32')],_0x1e68cb['channels'][_0x3823f3[_0x68f1('0x2d')]]['linkedid']=_0x1e68cb[_0x68f1('0x12')][_0x3823f3['uniqueid']]['uniqueid']][0x0];delete _0x1e68cb[_0x68f1('0x14')][_0x3823f3[_0x68f1('0x2d')]];}}logger[_0x68f1('0x44')](_0x68f1('0xa0'),_0x3823f3['uniqueid'],util[_0x68f1('0x31')](_0x1e68cb['channels'][_0x3823f3[_0x68f1('0x2d')]],{'showHidden':![],'depth':null}));ami[_0x68f1('0x2b')](_0x68f1('0xa1'),_0x1e68cb[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]]);delete _0x1e68cb[_0x68f1('0x12')][_0x3823f3[_0x68f1('0x2d')]];});}}}catch(_0xfa9421){logger[_0x68f1('0x29')]('[%s][voiceCallReport][hangup]',_0x3823f3['uniqueid'],util[_0x68f1('0x31')](_0xfa9421,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')]['syncAttendedTransfer']=function(_0x11615a){try{if(this[_0x68f1('0x2c')](_0x11615a)){logger[_0x68f1('0x27')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x11615a[_0x68f1('0x2d')],_0x11615a['origtransferercalleridnum'],_0x11615a['transfertargetcalleridnum']);logger[_0x68f1('0x44')](_0x68f1('0xa2'),_0x11615a['uniqueid'],util[_0x68f1('0x31')](_0x11615a,{'showHidden':![],'depth':null}));var _0x45a3f3;if(this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa3')]]){this[_0x68f1('0x12')][_0x11615a['transfereeuniqueid']][_0x68f1('0xa4')]=_0x11615a[_0x68f1('0xa5')];this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa3')]][_0x68f1('0xa6')]=_0x11615a[_0x68f1('0xa7')];if(this[_0x68f1('0x12')][_0x11615a['secondtransfereruniqueid']]){_0x45a3f3=this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa8')]];this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa8')]]=this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa3')]];this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa3')]]=_0x45a3f3;}this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa8')]][_0x68f1('0x95')]=_0x68f1('0xa9');}else if(this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xaa')]]){this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xaa')]][_0x68f1('0xa4')]=_0x11615a[_0x68f1('0xa5')];this['channels'][_0x11615a[_0x68f1('0xaa')]][_0x68f1('0xa6')]=_0x11615a[_0x68f1('0xa7')];if(this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xab')]]){_0x45a3f3=this['channels'][_0x11615a[_0x68f1('0xab')]];this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xab')]]=this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xaa')]];this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xaa')]]=_0x45a3f3;}this['channels'][_0x11615a[_0x68f1('0xaa')]][_0x68f1('0x95')]=_0x68f1('0xa9');}if((this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xab')]]||this['channels'][_0x11615a[_0x68f1('0xac')]])&&this['channels'][_0x11615a[_0x68f1('0xa8')]]){var _0x1e5363=_['some']([this['channels'][_0x11615a['origtransfereruniqueid']],this[_0x68f1('0x12')][_0x11615a['origtransfererlinkedid']],this[_0x68f1('0x12')][_0x11615a['secondtransfereruniqueid']]],function(_0x2a3b3c){return _0x2a3b3c&&_0x2a3b3c[_0x68f1('0x9e')]===_0x68f1('0x9f')&&_0x2a3b3c['routeid'];});if(_0x1e5363){if(this['channels'][_0x11615a['origtransfereruniqueid']])this['channels'][_0x11615a[_0x68f1('0xab')]]['transferType']=_0x68f1('0xa9');if(this[_0x68f1('0x12')][_0x11615a['origtransfererlinkedid']])this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xac')]][_0x68f1('0x95')]=_0x68f1('0xa9');this[_0x68f1('0x12')][_0x11615a[_0x68f1('0xa8')]][_0x68f1('0x95')]=_0x68f1('0xa9');}}}}catch(_0x251277){logger['error'](_0x68f1('0xad'),_0x11615a[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x251277,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')][_0x68f1('0x23')]=function(_0x20743e){try{if(this[_0x68f1('0x2c')](_0x20743e)){logger[_0x68f1('0x27')](_0x68f1('0xae'),_0x20743e[_0x68f1('0x2d')],_0x20743e[_0x68f1('0xaf')],_0x20743e[_0x68f1('0xb0')]);logger[_0x68f1('0x44')](_0x68f1('0xb1'),_0x20743e[_0x68f1('0x2d')],util['inspect'](_0x20743e,{'showHidden':![],'depth':null}));if(this[_0x68f1('0x12')][_0x20743e[_0x68f1('0xa3')]]){this[_0x68f1('0x12')][_0x20743e['transfereeuniqueid']][_0x68f1('0xa4')]=_0x20743e[_0x68f1('0xaf')];this[_0x68f1('0x12')][_0x20743e[_0x68f1('0xa3')]]['transferconnectedlinenum']=_0x20743e[_0x68f1('0xb0')];this[_0x68f1('0x12')][_0x20743e['transfereeuniqueid']]['transferType']=_0x68f1('0xb2');this[_0x68f1('0xb3')]({'event':_0x68f1('0xb4'),'uniqueid':_0x20743e[_0x68f1('0xa3')],'linkedid':_0x20743e[_0x68f1('0xb5')],'context':_0x20743e[_0x68f1('0x37')],'channel':_0x20743e['transfererchannel']});}else{this[_0x68f1('0x12')][_0x20743e[_0x68f1('0xb5')]]['transferType']='BLIND';this[_0x68f1('0xb3')]({'event':_0x68f1('0xb4'),'uniqueid':_0x20743e[_0x68f1('0xb5')],'linkedid':_0x20743e[_0x68f1('0xa3')],'context':_0x20743e[_0x68f1('0x37')],'channel':_0x20743e[_0x68f1('0xb6')]});}}}catch(_0x235b83){logger[_0x68f1('0x29')]('[%s][voiceCallReport][blindtransfer]',_0x20743e['uniqueid'],util[_0x68f1('0x31')](_0x235b83,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')][_0x68f1('0x25')]=function(_0x2be2cb){try{if(this[_0x68f1('0x2c')](_0x2be2cb)){logger['debug']('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x2be2cb[_0x68f1('0x2d')],util['inspect'](_0x2be2cb,{'showHidden':![],'depth':null}));if(this[_0x68f1('0x12')][_0x2be2cb[_0x68f1('0x2d')]]){if(!_[_0x68f1('0x70')](this[_0x68f1('0x12')][_0x2be2cb[_0x68f1('0x2d')]][_0x68f1('0x5f')])){this[_0x68f1('0x12')][_0x2be2cb[_0x68f1('0x2d')]][_0x68f1('0xb7')]=moment()['format'](_0x68f1('0x47'));logger[_0x68f1('0x27')](_0x68f1('0xb8'),_0x2be2cb[_0x68f1('0x2d')],this[_0x68f1('0x12')][_0x2be2cb[_0x68f1('0x2d')]][_0x68f1('0xb7')]);}}}}catch(_0x433611){logger[_0x68f1('0x29')](_0x68f1('0xb9'),_0x2be2cb[_0x68f1('0x2d')],util['inspect'](_0x433611,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x68f1('0x2a')][_0x68f1('0x26')]=function(_0xa4276e){try{if(this['isNotNull'](_0xa4276e)){logger[_0x68f1('0x44')](_0x68f1('0xba'),_0xa4276e['uniqueid'],util['inspect'](_0xa4276e,{'showHidden':![],'depth':null}));if(this[_0x68f1('0x12')][_0xa4276e['uniqueid']]){if(!_[_0x68f1('0x70')](this[_0x68f1('0x12')][_0xa4276e[_0x68f1('0x2d')]]['mohstarttime'])){this[_0x68f1('0x12')][_0xa4276e[_0x68f1('0x2d')]][_0x68f1('0xbb')]+=moment()['milliseconds'](0x0)[_0x68f1('0x60')](this[_0x68f1('0x12')][_0xa4276e[_0x68f1('0x2d')]][_0x68f1('0xb7')],_0x68f1('0x54'));logger[_0x68f1('0x27')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0xa4276e[_0x68f1('0x2d')],this['channels'][_0xa4276e['uniqueid']][_0x68f1('0xbb')]);delete this[_0x68f1('0x12')][_0xa4276e['uniqueid']][_0x68f1('0xb7')];}}}}catch(_0x1a5f82){logger[_0x68f1('0x29')]('[%s][voiceCallReport][musiconholdstop]',_0xa4276e[_0x68f1('0x2d')],util[_0x68f1('0x31')](_0x1a5f82,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index c664bec..4f7b90d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['syncDialBegin','dialend','bind','varset','syncVarSet','hangup','isUndefined','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','keys','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','total','sumHoldTime','holdtime','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','syncNewExten','application','toLowerCase','applicationdata','startsWith','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','moment','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin'];(function(_0x4a21c4,_0x20ca86){var _0x249e50=function(_0x83449e){while(--_0x83449e){_0x4a21c4['push'](_0x4a21c4['shift']());}};_0x249e50(++_0x20ca86);}(_0x71ab,0x64));var _0xb71a=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x71ab[_0x126558];return _0x1f6d14;};'use strict';var _=require('lodash');var moment=require(_0xb71a('0x0'));var util=require('util');var Redis=require(_0xb71a('0x1'));var config=require('../../../config/environment');var logger=require(_0xb71a('0x2'))(_0xb71a('0x3'));var ami=require(_0xb71a('0x4'));config[_0xb71a('0x5')]=_[_0xb71a('0x6')](config[_0xb71a('0x5')],{'host':_0xb71a('0x7'),'port':0x18eb});var io=require(_0xb71a('0x8'))(new Redis(config[_0xb71a('0x5')]));function VoiceDialReport(_0x35a84e){this[_0xb71a('0x9')]=_0x35a84e[_0xb71a('0xa')];this[_0xb71a('0xb')]=_0x35a84e[_0xb71a('0xb')];this[_0xb71a('0xc')]={};this[_0xb71a('0xd')]={};ami['on'](_0xb71a('0xe'),this[_0xb71a('0xf')]['bind'](this));ami['on'](_0xb71a('0x10'),this['syncDialEnd'][_0xb71a('0x11')](this));ami['on'](_0xb71a('0x12'),this[_0xb71a('0x13')]['bind'](this));ami['on'](_0xb71a('0x14'),this['syncHangup'][_0xb71a('0x11')](this));}VoiceDialReport['prototype']['isNotNull']=function(_0x3346a5){return _0x3346a5!==null&&!_[_0xb71a('0x15')](_0x3346a5);};VoiceDialReport[_0xb71a('0x16')][_0xb71a('0x17')]=function(_0x483d77,_0x47ee48,_0x5364e3){io['to'](_0x483d77)[_0xb71a('0x17')](_0x47ee48,_0x5364e3);};VoiceDialReport[_0xb71a('0x16')][_0xb71a('0xf')]=function(_0x42fc55){try{if(this[_0xb71a('0x18')](_0x42fc55)){logger[_0xb71a('0x19')](_0xb71a('0x1a'),_0x42fc55[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x42fc55,{'showHidden':![],'depth':null}));if(this['channels'][_0x42fc55[_0xb71a('0x1b')]]){_[_0xb71a('0x1d')](this[_0xb71a('0x9')][_0x42fc55[_0xb71a('0x1b')]],{'starttime':moment()[_0xb71a('0x1e')](_0xb71a('0x1f')),'lastevent':_0xb71a('0x20'),'interface':_0x42fc55[_0xb71a('0x21')][_0xb71a('0x22')](0x0,_0x42fc55[_0xb71a('0x21')][_0xb71a('0x23')]('-')),'membername':_0x42fc55['channel']['substring'](_0x42fc55[_0xb71a('0x21')][_0xb71a('0x23')]('/')+0x1,_0x42fc55['channel']['lastIndexOf']('-'))},_[_0xb71a('0x24')](_0x42fc55,['event',_0xb71a('0x25')]));logger[_0xb71a('0x26')](_0xb71a('0x27'),_0x42fc55[_0xb71a('0x1b')],this[_0xb71a('0x9')][_0x42fc55[_0xb71a('0x1b')]][_0xb71a('0x28')],this[_0xb71a('0x9')][_0x42fc55['uniqueid']][_0xb71a('0x29')]);logger[_0xb71a('0x19')](_0xb71a('0x2a'),_0x42fc55[_0xb71a('0x1b')],util[_0xb71a('0x1c')](this[_0xb71a('0x9')][_0x42fc55[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));if(this[_0xb71a('0xc')][_0x42fc55[_0xb71a('0x1b')]])_[_0xb71a('0x1d')](this[_0xb71a('0x9')][_0x42fc55[_0xb71a('0x1b')]],this[_0xb71a('0xc')][_0x42fc55['uniqueid']]);this[_0xb71a('0x17')](_0xb71a('0x2b'),_0xb71a('0x2c'),this[_0xb71a('0x9')][_0x42fc55[_0xb71a('0x1b')]]);logger[_0xb71a('0x19')](_0xb71a('0x2d'),_0x42fc55[_0xb71a('0x1b')],util[_0xb71a('0x1c')](this[_0xb71a('0x9')][_0x42fc55[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0xb71a('0x9')][_0x42fc55['uniqueid']]);}}}catch(_0x70299a){logger[_0xb71a('0x2e')]('[%s][voiceDialReport][dialbegin]',_0x42fc55[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x70299a,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb71a('0x16')][_0xb71a('0x2f')]=function(_0x3d3d81){try{if(this[_0xb71a('0x18')](_0x3d3d81)){logger['debug'](_0xb71a('0x30'),_0x3d3d81[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x3d3d81,{'showHidden':![],'depth':null}));if(this[_0xb71a('0x9')][_0x3d3d81['uniqueid']]){this[_0xb71a('0x9')][_0x3d3d81[_0xb71a('0x1b')]][_0xb71a('0x31')]=_0x3d3d81[_0xb71a('0x31')];if(_0x3d3d81[_0xb71a('0x31')]===_0xb71a('0x32')){this[_0xb71a('0x9')][_0x3d3d81[_0xb71a('0x1b')]][_0xb71a('0x33')]=_0x3d3d81[_0xb71a('0x33')];this['channels'][_0x3d3d81['uniqueid']][_0xb71a('0x34')]=_0x3d3d81[_0xb71a('0x34')];this[_0xb71a('0x9')][_0x3d3d81[_0xb71a('0x1b')]][_0xb71a('0x35')]=moment()[_0xb71a('0x1e')](_0xb71a('0x1f'));this['channels'][_0x3d3d81[_0xb71a('0x1b')]]['lastevent']=_0xb71a('0x36');logger[_0xb71a('0x26')](_0xb71a('0x37'),_0x3d3d81[_0xb71a('0x1b')],_0x3d3d81['channel'][_0xb71a('0x22')](_0x3d3d81[_0xb71a('0x21')][_0xb71a('0x23')]('/')+0x1,_0x3d3d81[_0xb71a('0x21')][_0xb71a('0x23')]('-')));logger[_0xb71a('0x19')](_0xb71a('0x38'),_0x3d3d81[_0xb71a('0x1b')],util[_0xb71a('0x1c')](this['channels'][_0x3d3d81[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb71a('0x39'),this[_0xb71a('0x9')][_0x3d3d81[_0xb71a('0x1b')]]);}logger[_0xb71a('0x19')](_0xb71a('0x3a'),_0x3d3d81[_0xb71a('0x1b')],util['inspect'](this['channels'][_0x3d3d81['uniqueid']],{'showHidden':![],'depth':null}));this[_0xb71a('0x17')]('voice:outbound',_0xb71a('0x2c'),this[_0xb71a('0x9')][_0x3d3d81[_0xb71a('0x1b')]]);}}}catch(_0x396d36){logger[_0xb71a('0x2e')](_0xb71a('0x3b'),_0x3d3d81['uniqueid'],util[_0xb71a('0x1c')](_0x396d36,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb71a('0x16')][_0xb71a('0x13')]=function(_0x8bf582){try{if(this[_0xb71a('0x18')](_0x8bf582)){logger[_0xb71a('0x19')]('[%s][voiceDialReport][varset]\x20event:',_0x8bf582[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x8bf582,{'showHidden':![],'depth':null}));this[_0xb71a('0x3c')](_0x8bf582[_0xb71a('0x1b')],_[_0xb71a('0x3d')](_0x8bf582[_0xb71a('0x3e')])[0x0],_0x8bf582[_0xb71a('0x3f')]);if(this['isNotNull'](_0x8bf582['variable'])&&this[_0xb71a('0x18')](_0x8bf582[_0xb71a('0x3e')][_0xb71a('0x40')])){if(_[_0xb71a('0x15')](this['channels'][_0x8bf582[_0xb71a('0x1b')]])){this['channels'][_0x8bf582[_0xb71a('0x1b')]]={'routeId':_0x8bf582[_0xb71a('0x3f')],'variables':this['variables'][_0x8bf582[_0xb71a('0x1b')]],'motionChannel':_0xb71a('0x41')};logger[_0xb71a('0x26')](_0xb71a('0x42'),_0x8bf582['uniqueid'],_0x8bf582[_0xb71a('0x3e')][_0xb71a('0x40')],_[_0xb71a('0x3d')](_0x8bf582['variable'])[0x0],_0x8bf582[_0xb71a('0x3f')]);logger[_0xb71a('0x19')](_0xb71a('0x43'),_0x8bf582['uniqueid'],util[_0xb71a('0x1c')](this[_0xb71a('0x9')][_0x8bf582[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));this[_0xb71a('0x17')](_0xb71a('0x2b'),'voice_outbound_channel:save',this[_0xb71a('0x9')][_0x8bf582[_0xb71a('0x1b')]]);}}}}catch(_0x45e961){logger[_0xb71a('0x2e')]('[%s][voiceDialReport][varset]',_0x8bf582['uniqueid'],util[_0xb71a('0x1c')](_0x45e961,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb71a('0x16')][_0xb71a('0x3c')]=function(_0x170978,_0x174f30,_0x2f2187){var _0x2a7804=[_0xb71a('0x44'),_0xb71a('0x45'),_0xb71a('0x46'),'rtpaudioqosjitterbridged',_0xb71a('0x47'),_0xb71a('0x48'),'rtpaudioqosrtt',_0xb71a('0x49'),'sipcallid',_0xb71a('0x4a'),_0xb71a('0x4b'),_0xb71a('0x4c'),_0xb71a('0x4d'),_0xb71a('0x4e'),'memberinterface',_0xb71a('0x4f'),'membername',_0xb71a('0x50'),_0xb71a('0x51')];if(!_['isNil'](_0x174f30)&&!_['includes'](_0x2a7804,_0x174f30)){if(_[_0xb71a('0x15')](this[_0xb71a('0xd')][_0x170978])){this['variables'][_0x170978]={};}this['variables'][_0x170978][_0x174f30]=_0x2f2187;}};VoiceDialReport['prototype'][_0xb71a('0x52')]=function(_0x57ef8f){try{if(this['isNotNull'](_0x57ef8f)){logger[_0xb71a('0x19')](_0xb71a('0x53'),_0x57ef8f[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x57ef8f,{'showHidden':![],'depth':null}));if(this['channels'][_0x57ef8f[_0xb71a('0x1b')]]){logger[_0xb71a('0x26')](_0xb71a('0x54'),_0x57ef8f['uniqueid'],_0x57ef8f[_0xb71a('0x55')]);this[_0xb71a('0x9')][_0x57ef8f['uniqueid']][_0xb71a('0x56')]=moment()[_0xb71a('0x1e')](_0xb71a('0x1f'));this['channels'][_0x57ef8f[_0xb71a('0x1b')]]['duration']=moment(this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]]['endtime'])[_0xb71a('0x57')](this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]][_0xb71a('0x58')],_0xb71a('0x59'));this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]]['lastevent']='complete';this[_0xb71a('0xb')][_0xb71a('0x5a')]+=0x1;if(this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]][_0xb71a('0x35')]){this['outbound']['answered']+=0x1;this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]]['holdtime']=moment(this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]]['answertime'])[_0xb71a('0x57')](this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]][_0xb71a('0x58')],'seconds');this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]]['billableseconds']=moment(this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]][_0xb71a('0x56')])[_0xb71a('0x57')](this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]][_0xb71a('0x35')],_0xb71a('0x59'));this['outbound'][_0xb71a('0x5b')]+=this[_0xb71a('0x9')][_0x57ef8f['uniqueid']][_0xb71a('0x5c')]||0x0;this[_0xb71a('0xb')]['sumBillable']+=this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]][_0xb71a('0x5d')];}this[_0xb71a('0xb')][_0xb71a('0x5e')]+=this[_0xb71a('0x9')][_0x57ef8f['uniqueid']]['duration'];logger[_0xb71a('0x19')](_0xb71a('0x5f'),_0x57ef8f[_0xb71a('0x1b')],util['inspect'](this[_0xb71a('0x9')][_0x57ef8f['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xb71a('0x17')]('custom:voiceDialReport',this['channels'][_0x57ef8f[_0xb71a('0x1b')]]);logger[_0xb71a('0x19')](_0xb71a('0x60'),_0x57ef8f[_0xb71a('0x1b')],util[_0xb71a('0x1c')](this['channels'][_0x57ef8f[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb71a('0x61'),this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x57ef8f[_0xb71a('0x1b')],util[_0xb71a('0x1c')](this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));this[_0xb71a('0x17')]('voice:outbound',_0xb71a('0x62'),this[_0xb71a('0xb')]);logger[_0xb71a('0x26')](_0xb71a('0x63'),JSON[_0xb71a('0x64')](this['channels'][_0x57ef8f['uniqueid']]));logger[_0xb71a('0x19')](_0xb71a('0x65'),_0x57ef8f[_0xb71a('0x1b')],util[_0xb71a('0x1c')](this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]],{'showHidden':![],'depth':null}));this[_0xb71a('0x17')]('voice:outbound',_0xb71a('0x66'),this[_0xb71a('0x9')][_0x57ef8f['uniqueid']]);delete this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x1b')]];}else if(this[_0xb71a('0x9')][_0x57ef8f['linkedid']]){this[_0xb71a('0x9')][_0x57ef8f[_0xb71a('0x67')]][_0xb71a('0x1b')]=this['channels'][_0x57ef8f[_0xb71a('0x67')]][_0xb71a('0x68')];}if(this[_0xb71a('0xd')][_0x57ef8f[_0xb71a('0x1b')]]){delete this[_0xb71a('0xd')][_0x57ef8f[_0xb71a('0x1b')]];}}}catch(_0x2cdaf9){logger[_0xb71a('0x2e')]('[%s][voiceDialReport][hangup]',_0x57ef8f[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x2cdaf9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb71a('0x16')][_0xb71a('0x69')]=function(_0x43e4b8){try{if(this[_0xb71a('0x18')](_0x43e4b8)){logger[_0xb71a('0x19')]('[%s][voiceDialReport][newexten]\x20event:',_0x43e4b8[_0xb71a('0x1b')],util['inspect'](_0x43e4b8,{'showHidden':![],'depth':null}));if(_0x43e4b8[_0xb71a('0x6a')][_0xb71a('0x6b')]()==='set'){_0x43e4b8[_0xb71a('0x6c')]=(_0x43e4b8['appdata']||_0x43e4b8[_0xb71a('0x6c')])['toLowerCase']();if(_[_0xb71a('0x6d')](_0x43e4b8[_0xb71a('0x6c')],_0xb71a('0x6e'))){if(_[_0xb71a('0x15')](this['applications'][_0x43e4b8[_0xb71a('0x1b')]]))this[_0xb71a('0xc')][_0x43e4b8['uniqueid']]={};logger[_0xb71a('0x26')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x43e4b8['uniqueid'],_0x43e4b8['application'],_0x43e4b8['applicationdata']);var _0x37a38f=_0x43e4b8[_0xb71a('0x6c')][_0xb71a('0x6f')]('=');var _0x5554e8=_0x37a38f[0x0][_0xb71a('0x70')](/cdr\((.*)\)/);if(_0x5554e8)this[_0xb71a('0xc')][_0x43e4b8['uniqueid']][_0x5554e8[0x1]]=_0x37a38f[0x1];}}}}catch(_0x299349){logger[_0xb71a('0x2e')](_0xb71a('0x71'),_0x43e4b8[_0xb71a('0x1b')],util[_0xb71a('0x1c')](_0x299349,{'showHidden':![],'depth':null}));}};module[_0xb71a('0x72')]=VoiceDialReport;
\ No newline at end of file
+var _0xc4aa=['called','channel','substring','lastIndexOf','omit','privilege','info','membername','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','syncVarSet','[%s][voiceDialReport][varset]\x20event:','keys','variable','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','endtime','duration','diff','starttime','seconds','complete','outbound','total','holdtime','sumHoldTime','sumBillable','billableseconds','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','defaults','redis','localhost','socket.io-emitter','channels','outboundChannels','applications','variables','dialbegin','bind','dialend','syncDialEnd','varset','syncHangup','prototype','isUndefined','emit','syncDialBegin','isNotNull','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge'];(function(_0x3d4fa0,_0x2d6378){var _0x327c2a=function(_0x3b7a1b){while(--_0x3b7a1b){_0x3d4fa0['push'](_0x3d4fa0['shift']());}};_0x327c2a(++_0x2d6378);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xc4aa[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0xac4a('0x0'));var moment=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));var logger=require(_0xac4a('0x5'))('ami');var ami=require('../ami');config['redis']=_[_0xac4a('0x6')](config[_0xac4a('0x7')],{'host':_0xac4a('0x8'),'port':0x18eb});var io=require(_0xac4a('0x9'))(new Redis(config[_0xac4a('0x7')]));function VoiceDialReport(_0x15cd34){this[_0xac4a('0xa')]=_0x15cd34[_0xac4a('0xb')];this['outbound']=_0x15cd34['outbound'];this[_0xac4a('0xc')]={};this[_0xac4a('0xd')]={};ami['on'](_0xac4a('0xe'),this['syncDialBegin'][_0xac4a('0xf')](this));ami['on'](_0xac4a('0x10'),this[_0xac4a('0x11')]['bind'](this));ami['on'](_0xac4a('0x12'),this['syncVarSet'][_0xac4a('0xf')](this));ami['on']('hangup',this[_0xac4a('0x13')][_0xac4a('0xf')](this));}VoiceDialReport[_0xac4a('0x14')]['isNotNull']=function(_0x21a79){return _0x21a79!==null&&!_[_0xac4a('0x15')](_0x21a79);};VoiceDialReport[_0xac4a('0x14')][_0xac4a('0x16')]=function(_0x1b4313,_0x3b71c0,_0x34bc01){io['to'](_0x1b4313)[_0xac4a('0x16')](_0x3b71c0,_0x34bc01);};VoiceDialReport[_0xac4a('0x14')][_0xac4a('0x17')]=function(_0x11e101){try{if(this[_0xac4a('0x18')](_0x11e101)){logger['debug'](_0xac4a('0x19'),_0x11e101[_0xac4a('0x1a')],util[_0xac4a('0x1b')](_0x11e101,{'showHidden':![],'depth':null}));if(this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]]){_[_0xac4a('0x1c')](this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xac4a('0x1d'),'interface':_0x11e101[_0xac4a('0x1e')][_0xac4a('0x1f')](0x0,_0x11e101['channel'][_0xac4a('0x20')]('-')),'membername':_0x11e101[_0xac4a('0x1e')][_0xac4a('0x1f')](_0x11e101[_0xac4a('0x1e')][_0xac4a('0x20')]('/')+0x1,_0x11e101[_0xac4a('0x1e')][_0xac4a('0x20')]('-'))},_[_0xac4a('0x21')](_0x11e101,['event',_0xac4a('0x22')]));logger[_0xac4a('0x23')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x11e101[_0xac4a('0x1a')],this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]][_0xac4a('0x24')],this['channels'][_0x11e101[_0xac4a('0x1a')]][_0xac4a('0x25')]);logger[_0xac4a('0x26')](_0xac4a('0x27'),_0x11e101[_0xac4a('0x1a')],util[_0xac4a('0x1b')](this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0xac4a('0xc')][_0x11e101[_0xac4a('0x1a')]])_[_0xac4a('0x1c')](this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]],this[_0xac4a('0xc')][_0x11e101[_0xac4a('0x1a')]]);this[_0xac4a('0x16')]('voice:outbound',_0xac4a('0x28'),this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]]);logger[_0xac4a('0x26')](_0xac4a('0x29'),_0x11e101['uniqueid'],util['inspect'](this[_0xac4a('0xa')][_0x11e101[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xac4a('0x16')]('custom:dialbegin',this['channels'][_0x11e101[_0xac4a('0x1a')]]);}}}catch(_0x2896bc){logger[_0xac4a('0x2a')](_0xac4a('0x2b'),_0x11e101[_0xac4a('0x1a')],util['inspect'](_0x2896bc,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xac4a('0x14')]['syncDialEnd']=function(_0x30364b){try{if(this['isNotNull'](_0x30364b)){logger[_0xac4a('0x26')](_0xac4a('0x2c'),_0x30364b[_0xac4a('0x1a')],util[_0xac4a('0x1b')](_0x30364b,{'showHidden':![],'depth':null}));if(this[_0xac4a('0xa')][_0x30364b[_0xac4a('0x1a')]]){this[_0xac4a('0xa')][_0x30364b[_0xac4a('0x1a')]][_0xac4a('0x2d')]=_0x30364b[_0xac4a('0x2d')];if(_0x30364b[_0xac4a('0x2d')]===_0xac4a('0x2e')){this[_0xac4a('0xa')][_0x30364b[_0xac4a('0x1a')]]['connectedlinenum']=_0x30364b[_0xac4a('0x2f')];this[_0xac4a('0xa')][_0x30364b['uniqueid']][_0xac4a('0x30')]=_0x30364b[_0xac4a('0x30')];this['channels'][_0x30364b['uniqueid']][_0xac4a('0x31')]=moment()[_0xac4a('0x32')](_0xac4a('0x33'));this[_0xac4a('0xa')][_0x30364b['uniqueid']][_0xac4a('0x34')]=_0xac4a('0x35');logger['info'](_0xac4a('0x36'),_0x30364b[_0xac4a('0x1a')],_0x30364b[_0xac4a('0x1e')]['substring'](_0x30364b[_0xac4a('0x1e')][_0xac4a('0x20')]('/')+0x1,_0x30364b[_0xac4a('0x1e')]['lastIndexOf']('-')));logger[_0xac4a('0x26')](_0xac4a('0x37'),_0x30364b['uniqueid'],util['inspect'](this[_0xac4a('0xa')][_0x30364b['uniqueid']],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this['channels'][_0x30364b[_0xac4a('0x1a')]]);}logger[_0xac4a('0x26')](_0xac4a('0x38'),_0x30364b[_0xac4a('0x1a')],util[_0xac4a('0x1b')](this[_0xac4a('0xa')][_0x30364b[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));this[_0xac4a('0x16')](_0xac4a('0x39'),_0xac4a('0x28'),this[_0xac4a('0xa')][_0x30364b[_0xac4a('0x1a')]]);}}}catch(_0x4e4994){logger['error']('[%s][voiceDialReport][dialend]',_0x30364b[_0xac4a('0x1a')],util[_0xac4a('0x1b')](_0x4e4994,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xac4a('0x14')][_0xac4a('0x3a')]=function(_0x9efd8d){try{if(this[_0xac4a('0x18')](_0x9efd8d)){logger[_0xac4a('0x26')](_0xac4a('0x3b'),_0x9efd8d[_0xac4a('0x1a')],util[_0xac4a('0x1b')](_0x9efd8d,{'showHidden':![],'depth':null}));this['addVariable'](_0x9efd8d[_0xac4a('0x1a')],_[_0xac4a('0x3c')](_0x9efd8d[_0xac4a('0x3d')])[0x0],_0x9efd8d[_0xac4a('0x3e')]);if(this[_0xac4a('0x18')](_0x9efd8d['variable'])&&this[_0xac4a('0x18')](_0x9efd8d[_0xac4a('0x3d')]['outboundrouteid'])){if(_[_0xac4a('0x15')](this['channels'][_0x9efd8d[_0xac4a('0x1a')]])){this[_0xac4a('0xa')][_0x9efd8d[_0xac4a('0x1a')]]={'routeId':_0x9efd8d[_0xac4a('0x3e')],'variables':this[_0xac4a('0xd')][_0x9efd8d[_0xac4a('0x1a')]],'motionChannel':_0xac4a('0x3f')};logger[_0xac4a('0x23')](_0xac4a('0x40'),_0x9efd8d[_0xac4a('0x1a')],_0x9efd8d[_0xac4a('0x3d')][_0xac4a('0x41')],_['keys'](_0x9efd8d[_0xac4a('0x3d')])[0x0],_0x9efd8d[_0xac4a('0x3e')]);logger[_0xac4a('0x26')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x9efd8d[_0xac4a('0x1a')],util[_0xac4a('0x1b')](this['channels'][_0x9efd8d[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));this['emit'](_0xac4a('0x39'),_0xac4a('0x28'),this[_0xac4a('0xa')][_0x9efd8d['uniqueid']]);}}}}catch(_0x588374){logger[_0xac4a('0x2a')]('[%s][voiceDialReport][varset]',_0x9efd8d[_0xac4a('0x1a')],util['inspect'](_0x588374,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xac4a('0x14')]['addVariable']=function(_0x3be103,_0x369eb8,_0x424f9b){var _0x1c8c39=['rtpaudioqos',_0xac4a('0x42'),_0xac4a('0x43'),_0xac4a('0x44'),_0xac4a('0x45'),_0xac4a('0x46'),_0xac4a('0x47'),_0xac4a('0x48'),'sipcallid',_0xac4a('0x49'),_0xac4a('0x4a'),'bridgepvtcallid',_0xac4a('0x4b'),_0xac4a('0x4c'),_0xac4a('0x4d'),_0xac4a('0x4e'),'membername',_0xac4a('0x4f'),_0xac4a('0x50')];if(!_[_0xac4a('0x51')](_0x369eb8)&&!_[_0xac4a('0x52')](_0x1c8c39,_0x369eb8)){if(_[_0xac4a('0x15')](this['variables'][_0x3be103])){this[_0xac4a('0xd')][_0x3be103]={};}this['variables'][_0x3be103][_0x369eb8]=_0x424f9b;}};VoiceDialReport[_0xac4a('0x14')][_0xac4a('0x13')]=function(_0x4872e5){try{if(this['isNotNull'](_0x4872e5)){logger[_0xac4a('0x26')](_0xac4a('0x53'),_0x4872e5['uniqueid'],util[_0xac4a('0x1b')](_0x4872e5,{'showHidden':![],'depth':null}));if(this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]]){logger[_0xac4a('0x23')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x4872e5[_0xac4a('0x1a')],_0x4872e5[_0xac4a('0x54')]);this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x55')]=moment()[_0xac4a('0x32')](_0xac4a('0x33'));this['channels'][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x56')]=moment(this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x55')])[_0xac4a('0x57')](this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x58')],_0xac4a('0x59'));this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x34')]=_0xac4a('0x5a');this[_0xac4a('0x5b')][_0xac4a('0x5c')]+=0x1;if(this['channels'][_0x4872e5[_0xac4a('0x1a')]]['answertime']){this[_0xac4a('0x5b')]['answered']+=0x1;this[_0xac4a('0xa')][_0x4872e5['uniqueid']][_0xac4a('0x5d')]=moment(this['channels'][_0x4872e5['uniqueid']][_0xac4a('0x31')])[_0xac4a('0x57')](this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x58')],_0xac4a('0x59'));this['channels'][_0x4872e5[_0xac4a('0x1a')]]['billableseconds']=moment(this[_0xac4a('0xa')][_0x4872e5['uniqueid']][_0xac4a('0x55')])[_0xac4a('0x57')](this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x31')],_0xac4a('0x59'));this[_0xac4a('0x5b')][_0xac4a('0x5e')]+=this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x5d')]||0x0;this[_0xac4a('0x5b')][_0xac4a('0x5f')]+=this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]][_0xac4a('0x60')];}this[_0xac4a('0x5b')]['sumDuration']+=this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]]['duration'];logger[_0xac4a('0x26')](_0xac4a('0x61'),_0x4872e5[_0xac4a('0x1a')],util[_0xac4a('0x1b')](this[_0xac4a('0xa')][_0x4872e5['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0xac4a('0x62'),this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]]);logger[_0xac4a('0x26')](_0xac4a('0x63'),_0x4872e5[_0xac4a('0x1a')],util[_0xac4a('0x1b')](this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xac4a('0x16')](_0xac4a('0x64'),this['channels'][_0x4872e5['uniqueid']]);logger[_0xac4a('0x26')](_0xac4a('0x65'),_0x4872e5[_0xac4a('0x1a')],util[_0xac4a('0x1b')](this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));this[_0xac4a('0x16')](_0xac4a('0x39'),_0xac4a('0x66'),this[_0xac4a('0x5b')]);logger[_0xac4a('0x23')](_0xac4a('0x67'),JSON['stringify'](this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]]));logger[_0xac4a('0x26')](_0xac4a('0x68'),_0x4872e5['uniqueid'],util[_0xac4a('0x1b')](this['channels'][_0x4872e5[_0xac4a('0x1a')]],{'showHidden':![],'depth':null}));this[_0xac4a('0x16')]('voice:outbound','voice_outbound_channel:remove',this[_0xac4a('0xa')][_0x4872e5[_0xac4a('0x1a')]]);delete this[_0xac4a('0xa')][_0x4872e5['uniqueid']];}else if(this[_0xac4a('0xa')][_0x4872e5['linkedid']]){this[_0xac4a('0xa')][_0x4872e5['linkedid']]['uniqueid']=this[_0xac4a('0xa')][_0x4872e5['linkedid']][_0xac4a('0x69')];}if(this['variables'][_0x4872e5[_0xac4a('0x1a')]]){delete this[_0xac4a('0xd')][_0x4872e5['uniqueid']];}}}catch(_0x3980ae){logger['error'](_0xac4a('0x6a'),_0x4872e5[_0xac4a('0x1a')],util['inspect'](_0x3980ae,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xac4a('0x14')]['syncNewExten']=function(_0x5a9111){try{if(this[_0xac4a('0x18')](_0x5a9111)){logger['debug'](_0xac4a('0x6b'),_0x5a9111['uniqueid'],util['inspect'](_0x5a9111,{'showHidden':![],'depth':null}));if(_0x5a9111[_0xac4a('0x6c')][_0xac4a('0x6d')]()===_0xac4a('0x6e')){_0x5a9111['applicationdata']=(_0x5a9111['appdata']||_0x5a9111[_0xac4a('0x6f')])[_0xac4a('0x6d')]();if(_['startsWith'](_0x5a9111['applicationdata'],_0xac4a('0x70'))){if(_[_0xac4a('0x15')](this[_0xac4a('0xc')][_0x5a9111[_0xac4a('0x1a')]]))this[_0xac4a('0xc')][_0x5a9111[_0xac4a('0x1a')]]={};logger[_0xac4a('0x23')](_0xac4a('0x71'),_0x5a9111[_0xac4a('0x1a')],_0x5a9111['application'],_0x5a9111[_0xac4a('0x6f')]);var _0x440dc4=_0x5a9111[_0xac4a('0x6f')]['split']('=');var _0x1d310c=_0x440dc4[0x0][_0xac4a('0x72')](/cdr\((.*)\)/);if(_0x1d310c)this[_0xac4a('0xc')][_0x5a9111[_0xac4a('0x1a')]][_0x1d310c[0x1]]=_0x440dc4[0x1];}}}}catch(_0x3d2b5c){logger['error'](_0xac4a('0x73'),_0x5a9111[_0xac4a('0x1a')],util[_0xac4a('0x1b')](_0x3d2b5c,{'showHidden':![],'depth':null}));}};module[_0xac4a('0x74')]=VoiceDialReport;
\ No newline at end of file
index f66cbcc..52709f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9305=['[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','toLowerCase','set','appdata','startsWith','CDR(routeAlias)','applicationdata','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','variables','queuesummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncAgentComplete','syncAgentConnect','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','syncAttendedTransfer','blindtransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','queueStatusComplete','clearZombieChannels','switch','isNil','Action','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','campaigns','emitVoiceQueueChannelRemove','clearqueuereport','emit',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','inspect','voice:queue:%s','name','voice_queue_presence:save','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','format','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','answered','available','sumDuration','sumHoldTime','total','unmanaged','abandoned','Trunk','active','callerid','Interval','md5','debug','voice_queue:save','isUndefined','queues','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','syncQueueSummary','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','callers','toNumber','loggedIn','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','holdtime','originalposition','queuecallerabandon','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','syncQueueCallerLeave','queuecallerleaveAt','connectedlinenum','connectedlinename','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','linkedid','add','seconds','FORWARDTRANSFER','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','[%s][voiceQueueReport][varset]','addVariable','variable','CONTINUE','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','includes','length','transfer','diff','sumBillable','milliseconds','queuecallercompleteAt','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','secondtransfererexten','ATTENDEDTRANSFER','transfertype','secondtransfereruniqueid','transfereeuniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedtransfer]','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','BlindTransfer','transfererchannel'];(function(_0x46869b,_0x3ddc10){var _0x2b52eb=function(_0x14924c){while(--_0x14924c){_0x46869b['push'](_0x46869b['shift']());}};_0x2b52eb(++_0x3ddc10);}(_0x9305,0x100));var _0x5930=function(_0x1cce40,_0x2773c1){_0x1cce40=_0x1cce40-0x0;var _0x444893=_0x9305[_0x1cce40];return _0x444893;};'use strict';var _=require(_0x5930('0x0'));var moment=require(_0x5930('0x1'));var util=require(_0x5930('0x2'));var md5=require('md5');var Redis=require(_0x5930('0x3'));var config=require(_0x5930('0x4'));var logger=require(_0x5930('0x5'))(_0x5930('0x6'));var ami=require(_0x5930('0x7'));var QueueReport=require(_0x5930('0x8'));config[_0x5930('0x9')]=_[_0x5930('0xa')](config[_0x5930('0x9')],{'host':_0x5930('0xb'),'port':0x18eb});var io=require(_0x5930('0xc'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x5930('0xd')][_0x5930('0xe')]=function(_0x15e345){this[_0x5930('0xf')]=this['tail']?this[_0x5930('0xf')][_0x5930('0x10')](_0x15e345):_0x15e345();};function VoiceQueueReport(_0x1ea476){this['sequence']=new Sequence();this[_0x5930('0x11')]={};this[_0x5930('0x12')]=_0x1ea476[_0x5930('0x12')];this[_0x5930('0x13')]=_0x1ea476[_0x5930('0x14')];this[_0x5930('0x15')]=_0x1ea476[_0x5930('0x15')];this[_0x5930('0x16')]=!![];this['campaigns']=_0x1ea476['campaigns'];this[_0x5930('0x17')]={};ami['on'](_0x5930('0x18'),this['syncQueueSummary'][_0x5930('0x19')](this));ami['on'](_0x5930('0x1a'),this[_0x5930('0x1b')][_0x5930('0x19')](this));ami['on'](_0x5930('0x1c'),this[_0x5930('0x1d')][_0x5930('0x19')](this));ami['on']('queuecallerabandon',this[_0x5930('0x1e')][_0x5930('0x19')](this));ami['on'](_0x5930('0x1f'),this['syncQueueCallerLeave'][_0x5930('0x19')](this));ami['on']('agentcomplete',this[_0x5930('0x20')][_0x5930('0x19')](this));ami['on']('agentconnect',this[_0x5930('0x21')][_0x5930('0x19')](this));ami['on']('varset',this[_0x5930('0x22')]['bind'](this));ami['on'](_0x5930('0x23'),this[_0x5930('0x24')][_0x5930('0x19')](this));ami['on'](_0x5930('0x25'),this[_0x5930('0x26')]['bind'](this));ami['on'](_0x5930('0x27'),this[_0x5930('0x28')][_0x5930('0x19')](this));ami['on']('musiconholdstop',this[_0x5930('0x29')][_0x5930('0x19')](this));ami['on']('attendedtransfer',this[_0x5930('0x2a')][_0x5930('0x19')](this));ami['on'](_0x5930('0x2b'),this['syncBlindTransfer'][_0x5930('0x19')](this));this[_0x5930('0x2c')]();this[_0x5930('0x2d')]();}function clearChannels(_0x382d73){if(!_['isEmpty'](_0x382d73)){for(var _0x51bc70 in _0x382d73){if(_0x382d73[_0x5930('0x2e')](_0x51bc70)){delete _0x382d73[_0x51bc70];}}}}function clearCampaigns(_0x2d1018){if(!_[_0x5930('0x2f')](_0x2d1018)){for(var _0x5d8fc2 in _0x2d1018){if(_0x2d1018[_0x5930('0x2e')](_0x5d8fc2)){_0x2d1018[_0x5d8fc2][_0x5930('0x30')]=0x0;}}}}function clearVoiceQueues(_0x2eea2d){if(!_[_0x5930('0x2f')](_0x2eea2d)){for(var _0x243f3e in _0x2eea2d){if(_0x2eea2d[_0x5930('0x2e')](_0x243f3e)){_0x2eea2d[_0x243f3e][_0x5930('0x30')]=0x0;_0x2eea2d[_0x243f3e][_0x5930('0x31')]=0x0;_0x2eea2d[_0x243f3e][_0x5930('0x32')]=0x0;_0x2eea2d[_0x243f3e][_0x5930('0x33')]=0x0;_0x2eea2d[_0x243f3e][_0x5930('0x34')]=!![];}}}}function clearAgentBooked(_0x250ccb){if(!_[_0x5930('0x2f')](_0x250ccb)){for(var _0x475de3 in _0x250ccb){if(_0x250ccb['hasOwnProperty'](_0x475de3)){_0x250ccb[_0x475de3]['unlockRR']=!![];}}}}VoiceQueueReport[_0x5930('0xd')][_0x5930('0x35')]=function(){var _0x4adc4b=this;for(var _0x5b69cf in this[_0x5930('0x13')]){if(this[_0x5930('0x13')][_0x5930('0x2e')](_0x5b69cf)&&!this[_0x5930('0x13')][_0x5b69cf][_0x5930('0x36')]){this['sequence'][_0x5930('0xe')](function(){if(!_[_0x5930('0x37')](_0x4adc4b[_0x5930('0x13')][_0x5b69cf])){return ami[_0x5930('0x38')]({'action':'status','channel':_0x4adc4b[_0x5930('0x13')][_0x5b69cf][_0x5930('0x39')]})[_0x5930('0x3a')](function(_0x1125e7){if(_0x1125e7['message']===_0x5930('0x3b')){setTimeout(function(){if(_0x4adc4b['channels'][_0x5b69cf]){delete _0x4adc4b['channels'][_0x5b69cf];logger[_0x5930('0x3c')](_0x5930('0x3d'),_0x5b69cf,util['inspect'](_0x1125e7,{'showHidden':![],'depth':null}));}if(_0x4adc4b[_0x5930('0x11')][_0x5b69cf]){delete _0x4adc4b[_0x5930('0x11')][_0x5b69cf];logger[_0x5930('0x3c')](_0x5930('0x3e'),_0x5b69cf,util['inspect'](_0x1125e7,{'showHidden':![],'depth':null}));}if(_0x4adc4b['variables'][_0x5b69cf]){delete _0x4adc4b['variables'][_0x5b69cf];logger[_0x5930('0x3c')](_0x5930('0x3f'),_0x5b69cf,util['inspect'](_0x1125e7,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x5930('0xd')]['syncFullyBooted']=function(){logger[_0x5930('0x3c')](_0x5930('0x40'));clearChannels(this[_0x5930('0x13')]);this[_0x5930('0x41')](this[_0x5930('0x11')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x5930('0x15')]);clearCampaigns(this[_0x5930('0x42')]);};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x41')]=function(_0x4ad679){var _0x4e209=this;if(!_[_0x5930('0x2f')](_0x4ad679)){for(var _0x2892dc in _0x4ad679){if(_0x4ad679[_0x5930('0x2e')](_0x2892dc)){_0x4e209[_0x5930('0x43')](_0x4ad679[_0x2892dc],_0x5930('0x44'));delete _0x4ad679[_0x2892dc];}}}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x45')]=function(_0x3e334e,_0x534150,_0x6c6a66){io['to'](_0x3e334e)[_0x5930('0x45')](_0x534150,_0x6c6a66);};VoiceQueueReport['prototype']['emitVoiceQueueChannelSave']=function(_0x5061bf,_0x1c91f4){logger['debug']('[%s][voiceQueueReport]['+_0x1c91f4+_0x5930('0x46'),_0x5061bf[_0x5930('0x47')],util[_0x5930('0x48')](_0x5061bf,{'showHidden':![],'depth':null}));this[_0x5930('0x45')](util['format'](_0x5930('0x49'),_0x5061bf[_0x5930('0x4a')]),'voice_queue_channel:save',_0x5061bf);io['emit'](_0x5930('0x4b'),_0x5061bf);};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x43')]=function(_0x36412f,_0x1c48d7){logger['debug'](_0x5930('0x4c')+_0x1c48d7+_0x5930('0x4d'),_0x36412f[_0x5930('0x47')],util[_0x5930('0x48')](_0x36412f,{'showHidden':![],'depth':null}));this[_0x5930('0x45')](util[_0x5930('0x4e')](_0x5930('0x49'),_0x36412f[_0x5930('0x4a')]),_0x5930('0x4f'),_0x36412f);io['emit'](_0x5930('0x50'),_0x36412f);};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x51')]=function(_0x30efeb,_0x46e938){if(_0x30efeb[_0x5930('0x52')]===_0x5930('0x53')){var _0x5cbfc4={'id':_0x30efeb['id'],'name':_0x30efeb[_0x5930('0x4a')],'strategy':_0x30efeb['strategy'],'answered':_0x30efeb[_0x5930('0x54')],'available':_0x30efeb[_0x5930('0x55')],'loggedIn':_0x30efeb['loggedIn'],'pTalking':_0x30efeb[_0x5930('0x32')],'sumBillable':_0x30efeb['sumBillable'],'sumDuration':_0x30efeb[_0x5930('0x56')],'sumHoldTime':_0x30efeb[_0x5930('0x57')]||0x0,'talking':_0x30efeb[_0x5930('0x31')],'total':_0x30efeb[_0x5930('0x58')],'type':_0x30efeb[_0x5930('0x52')],'unmanaged':_0x30efeb[_0x5930('0x59')],'abandoned':_0x30efeb[_0x5930('0x5a')],'waiting':_0x30efeb[_0x5930('0x33')]};if(_0x30efeb[_0x5930('0x5b')]){_0x5cbfc4[_0x5930('0x5b')]={'id':_0x30efeb['Trunk']['id'],'name':_0x30efeb[_0x5930('0x5b')]['name'],'active':_0x30efeb['Trunk'][_0x5930('0x5c')],'callerid':_0x30efeb[_0x5930('0x5b')][_0x5930('0x5d')]};}if(_0x30efeb[_0x5930('0x5e')]){_0x5cbfc4[_0x5930('0x5e')]={'id':_0x30efeb[_0x5930('0x5e')]['id'],'name':_0x30efeb[_0x5930('0x5e')][_0x5930('0x4a')]};}var _0x1ccb31=md5(JSON['stringify'](_0x5cbfc4));if(_0x30efeb[_0x5930('0x5f')]!==_0x1ccb31){_0x30efeb['md5']=_0x1ccb31;logger[_0x5930('0x60')]('[voiceQueueReport]['+_0x46e938+']\x20sending\x20voice_queue:save\x20event:',util[_0x5930('0x48')](_0x5cbfc4,{'showHidden':![],'depth':null}));this[_0x5930('0x45')](util[_0x5930('0x4e')](_0x5930('0x49'),_0x5cbfc4['name']),_0x5930('0x61'),_0x5cbfc4);}}};VoiceQueueReport[_0x5930('0xd')]['isNotNull']=function(_0x4feab2){return _0x4feab2!==null&&!_[_0x5930('0x62')](_0x4feab2);};VoiceQueueReport['prototype'][_0x5930('0x2d')]=function(){var _0x32d0bb=this;setInterval(function(){_0x32d0bb[_0x5930('0x35')]();ami['Action']({'action':_0x5930('0x63')})[_0x5930('0x3a')](function(_0x52c49c){logger[_0x5930('0x3c')](_0x5930('0x64'),util[_0x5930('0x48')](_0x52c49c,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x5930('0xd')]['loopQueueSummary']=function(){var _0x5606c0=this;setInterval(function(){if(_0x5606c0[_0x5930('0x16')]){return ami['Action']({'action':'queuesummary'})['then'](function(_0x5bac20){_0x5606c0[_0x5930('0x16')]=![];})[_0x5930('0x3a')](function(_0x345228){logger[_0x5930('0x3c')](_0x5930('0x65'),util[_0x5930('0x48')](_0x345228,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x66')]=function(_0x34bb64){try{if(this[_0x5930('0x67')](_0x34bb64)&&this['isNotNull'](_0x34bb64[_0x5930('0x68')])){logger[_0x5930('0x60')](_0x5930('0x69'),util['inspect'](_0x34bb64,{'showHidden':![],'depth':null}));if(this[_0x5930('0x15')][_0x34bb64['queue']]){logger[_0x5930('0x6a')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x34bb64[_0x5930('0x68')]);var _0x538177=_['countBy'](this[_0x5930('0x13')],_0x5930('0x68'))[_0x34bb64['queue']]||0x0;var _0x83f1a1=_0x538177-_0x34bb64[_0x5930('0x6b')];if(this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]]['waiting']!==_[_0x5930('0x6c')](_0x34bb64[_0x5930('0x6b')])||this['voiceQueues'][_0x34bb64['queue']][_0x5930('0x6d')]!==_[_0x5930('0x6c')](_0x34bb64[_0x5930('0x6e')])||this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]]['available']!==_[_0x5930('0x6c')](_0x34bb64[_0x5930('0x55')])||this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]][_0x5930('0x31')]!==_0x83f1a1){this['voiceQueues'][_0x34bb64[_0x5930('0x68')]][_0x5930('0x33')]=_['toNumber'](_0x34bb64[_0x5930('0x6b')]);this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]]['loggedIn']=_[_0x5930('0x6c')](_0x34bb64[_0x5930('0x6e')]);this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]][_0x5930('0x55')]=_[_0x5930('0x6c')](_0x34bb64[_0x5930('0x55')]);this[_0x5930('0x15')][_0x34bb64['queue']][_0x5930('0x31')]=_0x83f1a1>0x0?_0x83f1a1:0x0;this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]]['talking']=this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]][_0x5930('0x31')]>_[_0x5930('0x6c')](_0x34bb64['loggedin'])?_[_0x5930('0x6c')](_0x34bb64[_0x5930('0x6e')]):this[_0x5930('0x15')][_0x34bb64['queue']][_0x5930('0x31')];this[_0x5930('0x51')](this['voiceQueues'][_0x34bb64[_0x5930('0x68')]],'queuesummary');}logger[_0x5930('0x60')](_0x5930('0x6f'),util['inspect'](this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]],{'showHidden':![],'depth':null}));ami[_0x5930('0x45')]('custom:queuesummary',this[_0x5930('0x15')][_0x34bb64[_0x5930('0x68')]]);}}}catch(_0x2baa8a){logger[_0x5930('0x3c')](_0x5930('0x65'),util[_0x5930('0x48')](_0x2baa8a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5930('0x1b')]=function(_0x34be94){logger[_0x5930('0x60')](_0x5930('0x70'),util[_0x5930('0x48')](_0x34be94,{'showHidden':![],'depth':null}));this[_0x5930('0x16')]=!![];};VoiceQueueReport[_0x5930('0xd')]['syncQueueCallerJoin']=function(_0x125efc){try{if(this['isNotNull'](_0x125efc)){logger['debug'](_0x5930('0x71'),_0x125efc['uniqueid'],util[_0x5930('0x48')](_0x125efc,{'showHidden':![],'depth':null}));if(_[_0x5930('0x62')](this[_0x5930('0x11')][_0x125efc[_0x5930('0x47')]]))this['queueReports'][_0x125efc['uniqueid']]=[];if(_['isUndefined'](this['channels'][_0x125efc[_0x5930('0x47')]]))this[_0x5930('0x13')][_0x125efc[_0x5930('0x47')]]={};var _0x57b1e7=new QueueReport();_0x57b1e7[_0x5930('0x4a')]=_0x125efc[_0x5930('0x68')];_0x57b1e7[_0x5930('0x52')]=this[_0x5930('0x15')][_0x57b1e7['name']]&&this['voiceQueues'][_0x57b1e7[_0x5930('0x4a')]][_0x5930('0x52')]?this[_0x5930('0x15')][_0x57b1e7['name']][_0x5930('0x52')]||'inbound':_0x5930('0x53');_0x57b1e7[_0x5930('0x68')]=_0x125efc[_0x5930('0x68')];_0x57b1e7[_0x5930('0x72')]=moment()[_0x5930('0x4e')](_0x5930('0x73'));_0x57b1e7[_0x5930('0x74')]=_0x125efc[_0x5930('0x74')];_0x57b1e7[_0x5930('0x75')]=_0x125efc[_0x5930('0x75')];_0x57b1e7['uniqueid']=_0x125efc['uniqueid'];_0x57b1e7[_0x5930('0x76')]=this[_0x5930('0x13')][_0x125efc[_0x5930('0x47')]][_0x5930('0x76')];logger[_0x5930('0x6a')](_0x5930('0x77'),_0x57b1e7[_0x5930('0x4a')],_0x57b1e7[_0x5930('0x52')]);_[_0x5930('0x78')](_0x57b1e7,_['pick'](_0x125efc,_[_0x5930('0x79')](_0x57b1e7)));this['queueReports'][_0x125efc[_0x5930('0x47')]]['push'](_0x57b1e7);this[_0x5930('0x13')][_0x125efc['uniqueid']]=_0x57b1e7;this[_0x5930('0x7a')](_0x57b1e7,'queuecallerjoin');}}catch(_0x5e72a6){logger['error'](_0x5930('0x71'),_0x125efc['uniqueid'],util['inspect'](_0x5e72a6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')]['syncQueueCallerAbandon']=function(_0x5edeb1){try{if(this[_0x5930('0x67')](_0x5edeb1)){logger[_0x5930('0x60')](_0x5930('0x7b'),_0x5edeb1[_0x5930('0x47')],util[_0x5930('0x48')](_0x5edeb1,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0x5edeb1[_0x5930('0x47')]]){var _0x3fc968=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x5edeb1[_0x5930('0x47')]]);_0x3fc968[_0x5930('0x7d')]=![];_0x3fc968['queuecallercompleteAt']=null;_0x3fc968[_0x5930('0x7e')]=_0x5edeb1[_0x5930('0x7e')];_0x3fc968['originalposition']=_0x5edeb1[_0x5930('0x7f')];_0x3fc968[_0x5930('0x80')]=!![];_0x3fc968['queuecallerabandonAt']=moment()['format'](_0x5930('0x73'));_0x3fc968[_0x5930('0x81')]=_0x5930('0x82');_0x3fc968[_0x5930('0x83')]=null;logger[_0x5930('0x6a')](_0x5930('0x84'),_0x3fc968[_0x5930('0x4a')],_0x3fc968[_0x5930('0x52')]);this[_0x5930('0x13')][_0x5edeb1[_0x5930('0x47')]]=_0x3fc968;this[_0x5930('0x43')](_0x3fc968,_0x5930('0x80'));}}}catch(_0x6b6b29){logger[_0x5930('0x3c')](_0x5930('0x7b'),_0x5edeb1['uniqueid'],util['inspect'](_0x6b6b29,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x85')]=function(_0x1d998d){try{if(this[_0x5930('0x67')](_0x1d998d)){logger[_0x5930('0x60')]('[%s][voiceQueueReport][queuecallerleave]',_0x1d998d[_0x5930('0x47')],util[_0x5930('0x48')](_0x1d998d,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0x1d998d[_0x5930('0x47')]]){var _0x367319=_[_0x5930('0x7c')](this['queueReports'][_0x1d998d[_0x5930('0x47')]]);_0x367319[_0x5930('0x86')]=moment()['format'](_0x5930('0x73'));_0x367319[_0x5930('0x87')]=_0x1d998d['connectedlinenum'];_0x367319[_0x5930('0x88')]=_0x1d998d[_0x5930('0x88')];logger['info']('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x367319['name'],_0x367319[_0x5930('0x52')],_0x1d998d[_0x5930('0x87')],_0x1d998d[_0x5930('0x88')]);this[_0x5930('0x13')][_0x1d998d[_0x5930('0x47')]]=_0x367319;this[_0x5930('0x7a')](_0x367319,_0x5930('0x1f'));}}}catch(_0x4ddf0a){logger[_0x5930('0x3c')]('[%s][voiceQueueReport][queuecallerleave]',_0x1d998d[_0x5930('0x47')],util[_0x5930('0x48')](_0x4ddf0a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x21')]=function(_0x5d1f32){try{if(this[_0x5930('0x67')](_0x5d1f32)){logger[_0x5930('0x60')](_0x5930('0x89'),_0x5d1f32['uniqueid'],util[_0x5930('0x48')](_0x5d1f32,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0x5d1f32[_0x5930('0x47')]]){var _0x46527c=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x5d1f32[_0x5930('0x47')]]);_0x46527c[_0x5930('0x7d')]=!![];_0x46527c[_0x5930('0x81')]=_0x5930('0x8a');logger['info']('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x46527c[_0x5930('0x4a')],_0x46527c[_0x5930('0x52')]);}}}catch(_0x3c6513){logger[_0x5930('0x3c')](_0x5930('0x89'),_0x5d1f32[_0x5930('0x47')],util[_0x5930('0x48')](_0x3c6513,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x20')]=function(_0x3fef73){try{if(this['isNotNull'](_0x3fef73)){logger[_0x5930('0x60')](_0x5930('0x8b'),_0x3fef73['uniqueid'],util[_0x5930('0x48')](_0x3fef73,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3fef73['uniqueid']]){var _0x229a12=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x3fef73[_0x5930('0x47')]]);_0x229a12[_0x5930('0x80')]=![];_0x229a12[_0x5930('0x8c')]=null;_0x229a12['assigned']=!![];_0x229a12['lastAssignedTo']=_0x3fef73['membername'];_0x229a12['holdtime']=_0x3fef73[_0x5930('0x7e')];_0x229a12[_0x5930('0x7d')]=!![];_0x229a12[_0x5930('0x8d')]=![];_0x229a12[_0x5930('0x8e')]=null;if(!_0x229a12['transfer']){if(_0x3fef73['reason']=='transfer'){_0x229a12[_0x5930('0x81')]=_0x5930('0x8f');logger[_0x5930('0x6a')](_0x5930('0x90'),_0x229a12['name'],_0x229a12[_0x5930('0x52')]);}else{if(_['startsWith'](_0x3fef73['channel']['toLowerCase'](),'local/')){if(this[_0x5930('0x11')][_0x3fef73[_0x5930('0x91')]]){var _0x5d72c5=_['last'](this['queueReports'][_0x3fef73[_0x5930('0x91')]]);_0x5d72c5[_0x5930('0x7d')]=![];_0x5d72c5[_0x5930('0x8d')]=!![];_0x5d72c5[_0x5930('0x8e')]=moment(_0x229a12['queuecallerjoinAt'])[_0x5930('0x92')](_0x3fef73[_0x5930('0x7e')],_0x5930('0x93'))[_0x5930('0x4e')](_0x5930('0x73'));_0x5d72c5['queuecallerexitreason']=_0x5930('0x94');_0x5d72c5['transfer']=!![];_0x5d72c5['transfertype']='FORWARD';_0x5d72c5[_0x5930('0x95')]=_0x3fef73[_0x5930('0x96')];_0x5d72c5[_0x5930('0x97')]=_0x3fef73['uniqueid'];logger[_0x5930('0x6a')](_0x5930('0x98'),_0x5d72c5[_0x5930('0x4a')],_0x5d72c5[_0x5930('0x52')]);var _0x537b6c=this['queueReports'][_0x3fef73[_0x5930('0x91')]];this[_0x5930('0x11')][_0x3fef73[_0x5930('0x91')]]=this['queueReports'][_0x3fef73[_0x5930('0x47')]];this[_0x5930('0x11')][_0x3fef73[_0x5930('0x47')]]=_0x537b6c;}}else{_0x229a12[_0x5930('0x81')]='COMPLETEDBY'+_0x3fef73[_0x5930('0x99')][_0x5930('0x9a')]();logger[_0x5930('0x6a')](_0x5930('0x9b'),_0x229a12['name'],_0x229a12[_0x5930('0x52')],_0x229a12[_0x5930('0x81')]);}}}this[_0x5930('0x13')][_0x3fef73[_0x5930('0x47')]]=_0x229a12;this[_0x5930('0x43')](_0x229a12,_0x5930('0x9c'));}}}catch(_0x5b48d5){logger['error']('[%s][voiceQueueReport][agentcomplete]',_0x3fef73[_0x5930('0x47')],util['inspect'](_0x5b48d5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x22')]=function(_0x52eb71){try{if(this[_0x5930('0x67')](_0x52eb71)){logger[_0x5930('0x60')](_0x5930('0x9d'),_0x52eb71[_0x5930('0x47')],util['inspect'](_0x52eb71,{'showHidden':![],'depth':null}));this[_0x5930('0x9e')](_0x52eb71[_0x5930('0x47')],_['keys'](_0x52eb71[_0x5930('0x9f')])[0x0],_0x52eb71['value']);if(this[_0x5930('0x11')][_0x52eb71[_0x5930('0x47')]]){var _0xdda7ba=_['last'](this[_0x5930('0x11')][_0x52eb71[_0x5930('0x47')]]);if(_0xdda7ba){if(this[_0x5930('0x67')](_0x52eb71[_0x5930('0x9f')])&&this[_0x5930('0x67')](_0x52eb71[_0x5930('0x9f')]['queuestatus'])){switch(_0x52eb71['value']){case _0x5930('0xa0'):_0xdda7ba['queuecallerexit']=![];_0xdda7ba[_0x5930('0x8e')]=null;break;case'TIMEOUT':_0xdda7ba['lastevent']=_0x5930('0xa1');_0xdda7ba['queuecallerexit']=!![];_0xdda7ba[_0x5930('0x8e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xdda7ba['queuecallerleaveAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0x5930('0x60')](_0x5930('0xa2'),_0x52eb71['uniqueid'],util[_0x5930('0x48')](_0xdda7ba,{'showHidden':![],'depth':null}));ami[_0x5930('0x45')](_0x5930('0xa3'),_0xdda7ba);break;default:_0xdda7ba[_0x5930('0x8d')]=!![];_0xdda7ba['queuecallerexitAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xdda7ba[_0x5930('0x86')]=moment()[_0x5930('0x4e')](_0x5930('0x73'));}_0xdda7ba['queuecallerabandon']=![];_0xdda7ba[_0x5930('0x8c')]=null;_0xdda7ba[_0x5930('0x81')]=_0x52eb71['value'];this['channels'][_0x52eb71[_0x5930('0x47')]]=_0xdda7ba;this[_0x5930('0x43')](_0xdda7ba,_0x5930('0xa4'));}else if(this[_0x5930('0x67')](_0x52eb71[_0x5930('0x9f')])&&this[_0x5930('0x67')](_0x52eb71[_0x5930('0x9f')][_0x5930('0xa5')])){if(!_0xdda7ba[_0x5930('0x80')]){_0xdda7ba[_0x5930('0x8d')]=!![];_0xdda7ba[_0x5930('0x8e')]=moment()[_0x5930('0x4e')](_0x5930('0x73'));_0xdda7ba[_0x5930('0x81')]='EXITWITHKEY';_0xdda7ba[_0x5930('0x86')]=moment()[_0x5930('0x4e')](_0x5930('0x73'));this[_0x5930('0x13')][_0x52eb71[_0x5930('0x47')]]=_0xdda7ba;}}logger[_0x5930('0x6a')](_0x5930('0xa6'),_0x52eb71['uniqueid'],_0xdda7ba[_0x5930('0x4a')],_0xdda7ba[_0x5930('0x52')],_[_0x5930('0x79')](_0x52eb71[_0x5930('0x9f')])[0x0],_0x52eb71[_0x5930('0xa7')]);_0xdda7ba[_0x5930('0x17')]=this[_0x5930('0x17')][_0x52eb71[_0x5930('0x47')]];}}}}catch(_0x295d28){logger[_0x5930('0x3c')]('[%s][voiceQueueReport][varset]',_0x52eb71[_0x5930('0x47')],util['inspect'](_0x295d28,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x9e')]=function(_0x5abe2a,_0x30bf25,_0x54e552){var _0x1958f8=[_0x5930('0xa8'),_0x5930('0xa9'),_0x5930('0xaa'),_0x5930('0xab'),_0x5930('0xac'),'rtpaudioqoslossbridged',_0x5930('0xad'),'rtpaudioqosrttbridged',_0x5930('0xae'),_0x5930('0xaf'),_0x5930('0xb0'),_0x5930('0xb1'),_0x5930('0xb2'),_0x5930('0xb3'),_0x5930('0xb4'),_0x5930('0xb5'),_0x5930('0xb6'),_0x5930('0xb7'),_0x5930('0xb8')];if(!_['isNil'](_0x30bf25)&&!_[_0x5930('0xb9')](_0x1958f8,_0x30bf25)){if(_['isUndefined'](this[_0x5930('0x17')][_0x5abe2a])){this['variables'][_0x5abe2a]={};}this['variables'][_0x5abe2a][_0x30bf25]=_0x54e552;}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x24')]=function(_0xd1688b){try{if(this['isNotNull'](_0xd1688b)){logger[_0x5930('0x60')]('[%s][voiceQueueReport][hangup]',_0xd1688b[_0x5930('0x47')],util[_0x5930('0x48')](_0xd1688b,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0xd1688b['uniqueid']]){for(var _0x4d9f4e=0x0,_0xec4021={};_0x4d9f4e<this['queueReports'][_0xd1688b[_0x5930('0x47')]][_0x5930('0xba')];_0x4d9f4e+=0x1){_0xec4021=this[_0x5930('0x11')][_0xd1688b[_0x5930('0x47')]][_0x4d9f4e];if(this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]]){if(_0xec4021['queuecallerexit']&&_0xec4021[_0x5930('0xbb')]!=!![]){this['voiceQueues'][_0xec4021['queue']][_0x5930('0x59')]+=0x1;}if(_0xec4021['queuecallerabandon']){this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]]['abandoned']+=0x1;}this['voiceQueues'][_0xec4021['queue']][_0x5930('0x57')]+=moment(_0xec4021[_0x5930('0x86')])['diff'](_0xec4021[_0x5930('0x72')],_0x5930('0x93'))||0x0;if(_0x4d9f4e===this[_0x5930('0x11')][_0xd1688b[_0x5930('0x47')]][_0x5930('0xba')]-0x1){this['voiceQueues'][_0xec4021[_0x5930('0x68')]][_0x5930('0x56')]+=moment()['milliseconds'](0x0)[_0x5930('0xbc')](_0xec4021[_0x5930('0x72')],_0x5930('0x93'));this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]][_0x5930('0x58')]+=0x1;if(_0xec4021[_0x5930('0x7d')]){this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]]['answered']+=0x1;this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]][_0x5930('0xbd')]+=moment()[_0x5930('0xbe')](0x0)[_0x5930('0xbc')](_0xec4021[_0x5930('0x86')],_0x5930('0x93'));_0xec4021[_0x5930('0xbf')]=moment()[_0x5930('0x4e')](_0x5930('0x73'));_0xec4021[_0x5930('0x8d')]=![];_0xec4021[_0x5930('0x8e')]=null;}if(_0xec4021[_0x5930('0x8d')]&&_0xec4021[_0x5930('0xbb')]!=!![]){_0xec4021[_0x5930('0xc0')]=_0x5930('0x59');logger[_0x5930('0x60')](_0x5930('0xc1'),_0xd1688b[_0x5930('0x47')],util[_0x5930('0x48')](_0xec4021,{'showHidden':![],'depth':null}));ami[_0x5930('0x45')](_0x5930('0xc2'),_0xec4021);}if(_0xec4021[_0x5930('0x80')]){_0xec4021['lastevent']=_0x5930('0x5a');logger[_0x5930('0x60')](_0x5930('0xc3'),_0xd1688b['uniqueid'],util[_0x5930('0x48')](_0xec4021,{'showHidden':![],'depth':null}));ami['emit']('custom:queuecallerabandon',_0xec4021);}}else{this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]][_0x5930('0x56')]+=this[_0x5930('0x15')][_0xec4021['queue']][_0x5930('0x57')];}logger[_0x5930('0x6a')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0xd1688b[_0x5930('0x47')],_0xec4021[_0x5930('0x4a')],_0xec4021['type'],_0xd1688b[_0x5930('0xc4')]);this[_0x5930('0x13')][_0xd1688b[_0x5930('0x47')]]=_0xec4021;this['emitVoiceQueueChannelRemove'](_0xec4021,_0x5930('0x23'));this[_0x5930('0x51')](this[_0x5930('0x15')][_0xec4021[_0x5930('0x68')]],_0x5930('0x23'));}}logger[_0x5930('0x60')](_0x5930('0xc5'),_0xd1688b['uniqueid'],util[_0x5930('0x48')](this[_0x5930('0x11')][_0xd1688b['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x5930('0xc6'),this[_0x5930('0x11')][_0xd1688b[_0x5930('0x47')]]);delete this[_0x5930('0x11')][_0xd1688b['uniqueid']];delete this[_0x5930('0x13')][_0xd1688b[_0x5930('0x47')]];}if(this[_0x5930('0x17')][_0xd1688b[_0x5930('0x47')]]){delete this[_0x5930('0x17')][_0xd1688b[_0x5930('0x47')]];}}}catch(_0x577f21){logger[_0x5930('0x3c')](_0x5930('0xc7'),_0xd1688b[_0x5930('0x47')],util['inspect'](_0x577f21,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x5930('0x2a')]=function(_0x209d4f){try{if(this['isNotNull'](_0x209d4f)){logger[_0x5930('0x60')]('[%s][voiceQueueReport][attendedtransfer]',_0x209d4f[_0x5930('0x47')],util['inspect'](_0x209d4f,{'showHidden':![],'depth':null}));var _0x53a250;if(this['queueReports'][_0x209d4f['transfereeuniqueid']]){_0x53a250=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x209d4f['transfereeuniqueid']]);_0x53a250[_0x5930('0x95')]=_0x209d4f[_0x5930('0xc8')];_0x53a250[_0x5930('0x97')]=_0x209d4f['secondtransfereruniqueid'];_0x53a250[_0x5930('0x81')]=_0x5930('0xc9');_0x53a250['transfer']=!![];_0x53a250[_0x5930('0xca')]='ATTENDED';if(this[_0x5930('0x11')][_0x209d4f['secondtransfereruniqueid']]){var _0x15df20=this[_0x5930('0x11')][_0x209d4f[_0x5930('0xcb')]];this[_0x5930('0x11')][_0x209d4f[_0x5930('0xcb')]]=this[_0x5930('0x11')][_0x209d4f[_0x5930('0xcc')]];this['queueReports'][_0x209d4f[_0x5930('0xcc')]]=_0x15df20;var _0x198b9c=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x209d4f[_0x5930('0xcc')]]);_0x198b9c[_0x5930('0x36')]=!![];}logger[_0x5930('0x6a')](_0x5930('0xcd'),_0x209d4f['uniqueid'],_0x53a250['name'],_0x53a250[_0x5930('0x52')],_0x53a250[_0x5930('0x95')],_0x53a250[_0x5930('0x97')]);}else if(this[_0x5930('0x11')][_0x209d4f['transfertargetuniqueid']]){_0x53a250=_[_0x5930('0x7c')](this['queueReports'][_0x209d4f[_0x5930('0xce')]]);_0x53a250[_0x5930('0x95')]=_0x209d4f[_0x5930('0xcf')];_0x53a250[_0x5930('0x97')]=_0x209d4f[_0x5930('0xd0')];_0x53a250['queuecallerexitreason']=_0x5930('0xc9');_0x53a250['transfer']=!![];_0x53a250['transfertype']=_0x5930('0xd1');if(this[_0x5930('0x11')][_0x209d4f[_0x5930('0xd0')]]){var _0x15df20=this[_0x5930('0x11')][_0x209d4f[_0x5930('0xd0')]];this[_0x5930('0x11')][_0x209d4f[_0x5930('0xd0')]]=this[_0x5930('0x11')][_0x209d4f[_0x5930('0xce')]];this[_0x5930('0x11')][_0x209d4f[_0x5930('0xce')]]=_0x15df20;var _0x198b9c=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x209d4f['transfertargetuniqueid']]);_0x198b9c['switch']=!![];}logger[_0x5930('0x6a')](_0x5930('0xcd'),_0x209d4f[_0x5930('0x47')],_0x53a250['name'],_0x53a250[_0x5930('0x52')],_0x53a250[_0x5930('0x95')],_0x53a250['transferuniqueid']);}}}catch(_0x405680){logger[_0x5930('0x3c')](_0x5930('0xd2'),_0x209d4f[_0x5930('0x47')],util[_0x5930('0x48')](_0x405680,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0xd3')]=function(_0x568969){try{if(this[_0x5930('0x67')](_0x568969)){logger[_0x5930('0x60')](_0x5930('0xd4'),_0x568969[_0x5930('0x47')],util[_0x5930('0x48')](_0x568969,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0x568969[_0x5930('0xcc')]]){var _0x1c575e=_[_0x5930('0x7c')](this['queueReports'][_0x568969[_0x5930('0xcc')]]);_0x1c575e[_0x5930('0x81')]=_0x5930('0xd5');_0x1c575e['transfer']=!![];_0x1c575e[_0x5930('0xca')]=_0x5930('0xd6');_0x1c575e[_0x5930('0x95')]=_0x568969[_0x5930('0xd7')];_0x1c575e[_0x5930('0x97')]=_0x568969[_0x5930('0xcc')];logger[_0x5930('0x6a')]('[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x568969[_0x5930('0x47')],_0x1c575e['name'],_0x1c575e[_0x5930('0x52')],_0x1c575e[_0x5930('0x95')],_0x1c575e['transferuniqueid']);this[_0x5930('0x24')]({'event':_0x5930('0xd8'),'uniqueid':_0x568969[_0x5930('0xcc')],'context':_0x568969['context'],'channel':_0x568969[_0x5930('0xd9')]});}}}catch(_0x41cf7c){logger[_0x5930('0x3c')](_0x5930('0xd4'),_0x568969[_0x5930('0x47')],util[_0x5930('0x48')](_0x41cf7c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x28')]=function(_0x1135fe){try{if(this['isNotNull'](_0x1135fe)){logger['debug'](_0x5930('0xda'),_0x1135fe[_0x5930('0x47')],util['inspect'](_0x1135fe,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0x1135fe['uniqueid']]){var _0x23c67e=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x1135fe['uniqueid']]);if(!_['isNil'](_0x23c67e[_0x5930('0x86')])){_0x23c67e[_0x5930('0xdb')]=moment()[_0x5930('0x4e')](_0x5930('0x73'));logger[_0x5930('0x6a')](_0x5930('0xdc'),_0x1135fe[_0x5930('0x47')],_0x23c67e[_0x5930('0xdb')]);}}}}catch(_0x46397c){logger[_0x5930('0x3c')](_0x5930('0xda'),_0x1135fe[_0x5930('0x47')],util[_0x5930('0x48')](_0x46397c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0x29')]=function(_0x48ff67){try{if(this['isNotNull'](_0x48ff67)){logger['debug'](_0x5930('0xdd'),_0x48ff67[_0x5930('0x47')],util[_0x5930('0x48')](_0x48ff67,{'showHidden':![],'depth':null}));if(this[_0x5930('0x11')][_0x48ff67['uniqueid']]){var _0x4535dc=_[_0x5930('0x7c')](this[_0x5930('0x11')][_0x48ff67[_0x5930('0x47')]]);if(!_[_0x5930('0x37')](_0x4535dc[_0x5930('0xdb')])){_0x4535dc[_0x5930('0xde')]+=moment()[_0x5930('0xbe')](0x0)[_0x5930('0xbc')](_0x4535dc['mohstarttime'],'seconds');logger[_0x5930('0x6a')](_0x5930('0xdf'),_0x48ff67[_0x5930('0x47')],_0x4535dc[_0x5930('0xde')]);delete _0x4535dc[_0x5930('0xdb')];}}}}catch(_0x147ade){logger[_0x5930('0x3c')](_0x5930('0xdd'),_0x48ff67[_0x5930('0x47')],util[_0x5930('0x48')](_0x147ade,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x5930('0xd')][_0x5930('0xe0')]=function(_0x455191){try{if(this[_0x5930('0x67')](_0x455191)){logger[_0x5930('0x60')](_0x5930('0xe1'),_0x455191[_0x5930('0x47')],util[_0x5930('0x48')](_0x455191,{'showHidden':![],'depth':null}));if(_0x455191['application'][_0x5930('0xe2')]()===_0x5930('0xe3')){_0x455191['applicationdata']=_0x455191[_0x5930('0xe4')]&&_0x455191['appdata'][_0x5930('0xe5')](_0x5930('0xe6'))?_0x455191[_0x5930('0xe4')]:(_0x455191[_0x5930('0xe4')]||_0x455191[_0x5930('0xe7')])[_0x5930('0xe2')]();if(_[_0x5930('0xe5')](_0x455191['applicationdata'][_0x5930('0xe2')](),_0x5930('0xe8'))){logger[_0x5930('0x6a')](_0x5930('0xe9'),_0x455191['uniqueid'],_0x455191['application'],_0x455191[_0x5930('0xe7')]);if(_[_0x5930('0x62')](this[_0x5930('0x13')][_0x455191[_0x5930('0x47')]]))this[_0x5930('0x13')][_0x455191[_0x5930('0x47')]]={};var _0x45a880=_0x455191['applicationdata'][_0x5930('0xea')]('=');var _0x5eae58=_0x45a880[0x0][_0x5930('0xe2')]()['match'](/cdr\((.*)\)/);if(_0x5eae58)this[_0x5930('0x13')][_0x455191[_0x5930('0x47')]][_0x5eae58[0x1]]=_0x45a880[0x1];}}}}catch(_0xa95e7b){logger[_0x5930('0x3c')](_0x5930('0xeb'),_0x455191['uniqueid'],util[_0x5930('0x48')](_0xa95e7b,{'showHidden':![],'depth':null}));}};module[_0x5930('0xec')]=VoiceQueueReport;
\ No newline at end of file
+var _0x8430=['bind','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','syncHangup','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','isEmpty','clearZombieChannels','switch','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','syncFullyBooted','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','unmanaged','Trunk','active','callerid','Interval','stringify','md5','debug','[voiceQueueReport][','voice_queue:save','isUndefined','queues','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]','isNotNull','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','toNumber','callers','loggedin','queuesummary','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','position','count','routealias','merge','keys','push','[%s][voiceQueueReport][queuecallerabandon]','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','last','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexitAt','transfer','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','linkedid','queuecallerexit','add','seconds','FORWARDTRANSFER','FORWARD','transferexten','destexten','transferuniqueid','COMPLETEDBY','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','syncVarSet','[%s][voiceQueueReport][varset]','addVariable','value','variable','CONTINUE','TIMEOUT','lastevent','timeout','queuecallerleaveAt','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','abandoned','diff','length','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','transfertype','ATTENDED','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','appdata','CDR(routeAlias)','applicationdata','toLowerCase','cdr(','split','match','[%s][voiceQueueReport][newexten]','exports','moment','util','ioredis','../../../config/logger','ami','../ami','redis','localhost','prototype','enqueue','tail','sequence','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete'];(function(_0x53e3d9,_0x5e1328){var _0x2b454d=function(_0x4ba5f8){while(--_0x4ba5f8){_0x53e3d9['push'](_0x53e3d9['shift']());}};_0x2b454d(++_0x5e1328);}(_0x8430,0xd7));var _0x0843=function(_0x8bf471,_0x2e9da0){_0x8bf471=_0x8bf471-0x0;var _0x3d93d7=_0x8430[_0x8bf471];return _0x3d93d7;};'use strict';var _=require('lodash');var moment=require(_0x0843('0x0'));var util=require(_0x0843('0x1'));var md5=require('md5');var Redis=require(_0x0843('0x2'));var config=require('../../../config/environment');var logger=require(_0x0843('0x3'))(_0x0843('0x4'));var ami=require(_0x0843('0x5'));var QueueReport=require('../model/queueReport');config[_0x0843('0x6')]=_['defaults'](config[_0x0843('0x6')],{'host':_0x0843('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0843('0x6')]));var Sequence=function(){};Sequence[_0x0843('0x8')][_0x0843('0x9')]=function(_0x4c0b5e){this[_0x0843('0xa')]=this[_0x0843('0xa')]?this[_0x0843('0xa')]['finally'](_0x4c0b5e):_0x4c0b5e();};function VoiceQueueReport(_0x2257b6){this[_0x0843('0xb')]=new Sequence();this['queueReports']={};this['agents']=_0x2257b6[_0x0843('0xc')];this[_0x0843('0xd')]=_0x2257b6[_0x0843('0xe')];this[_0x0843('0xf')]=_0x2257b6[_0x0843('0xf')];this[_0x0843('0x10')]=!![];this[_0x0843('0x11')]=_0x2257b6[_0x0843('0x11')];this[_0x0843('0x12')]={};ami['on']('queuesummary',this[_0x0843('0x13')]['bind'](this));ami['on'](_0x0843('0x14'),this[_0x0843('0x15')][_0x0843('0x16')](this));ami['on']('queuecallerjoin',this[_0x0843('0x17')][_0x0843('0x16')](this));ami['on'](_0x0843('0x18'),this[_0x0843('0x19')]['bind'](this));ami['on']('queuecallerleave',this[_0x0843('0x1a')]['bind'](this));ami['on']('agentcomplete',this[_0x0843('0x1b')][_0x0843('0x16')](this));ami['on'](_0x0843('0x1c'),this[_0x0843('0x1d')][_0x0843('0x16')](this));ami['on']('varset',this['syncVarSet'][_0x0843('0x16')](this));ami['on']('hangup',this[_0x0843('0x1e')][_0x0843('0x16')](this));ami['on'](_0x0843('0x1f'),this['syncFullyBooted']['bind'](this));ami['on'](_0x0843('0x20'),this[_0x0843('0x21')]['bind'](this));ami['on'](_0x0843('0x22'),this['syncMusicOnHoldStop'][_0x0843('0x16')](this));ami['on'](_0x0843('0x23'),this[_0x0843('0x24')][_0x0843('0x16')](this));ami['on'](_0x0843('0x25'),this[_0x0843('0x26')][_0x0843('0x16')](this));this['loopQueueSummary']();this[_0x0843('0x27')]();}function clearChannels(_0x465b34){if(!_['isEmpty'](_0x465b34)){for(var _0x2e18cd in _0x465b34){if(_0x465b34[_0x0843('0x28')](_0x2e18cd)){delete _0x465b34[_0x2e18cd];}}}}function clearCampaigns(_0x248440){if(!_['isEmpty'](_0x248440)){for(var _0x40567f in _0x248440){if(_0x248440[_0x0843('0x28')](_0x40567f)){_0x248440[_0x40567f]['originated']=0x0;}}}}function clearVoiceQueues(_0x52a04e){if(!_['isEmpty'](_0x52a04e)){for(var _0x16288a in _0x52a04e){if(_0x52a04e['hasOwnProperty'](_0x16288a)){_0x52a04e[_0x16288a][_0x0843('0x29')]=0x0;_0x52a04e[_0x16288a][_0x0843('0x2a')]=0x0;_0x52a04e[_0x16288a][_0x0843('0x2b')]=0x0;_0x52a04e[_0x16288a][_0x0843('0x2c')]=0x0;_0x52a04e[_0x16288a][_0x0843('0x2d')]=!![];}}}}function clearAgentBooked(_0x13f0d9){if(!_[_0x0843('0x2e')](_0x13f0d9)){for(var _0x653dc6 in _0x13f0d9){if(_0x13f0d9[_0x0843('0x28')](_0x653dc6)){_0x13f0d9[_0x653dc6]['unlockRR']=!![];}}}}VoiceQueueReport[_0x0843('0x8')][_0x0843('0x2f')]=function(){var _0x6aa84a=this;for(var _0x3f1d48 in this[_0x0843('0xd')]){if(this[_0x0843('0xd')]['hasOwnProperty'](_0x3f1d48)&&!this[_0x0843('0xd')][_0x3f1d48][_0x0843('0x30')]){this['sequence']['enqueue'](function(){if(!_[_0x0843('0x31')](_0x6aa84a[_0x0843('0xd')][_0x3f1d48])){return ami[_0x0843('0x32')]({'action':_0x0843('0x33'),'channel':_0x6aa84a['channels'][_0x3f1d48][_0x0843('0x34')]})[_0x0843('0x35')](function(_0x118169){if(_0x118169[_0x0843('0x36')]===_0x0843('0x37')){setTimeout(function(){if(_0x6aa84a[_0x0843('0xd')][_0x3f1d48]){delete _0x6aa84a['channels'][_0x3f1d48];logger[_0x0843('0x38')](_0x0843('0x39'),_0x3f1d48,util[_0x0843('0x3a')](_0x118169,{'showHidden':![],'depth':null}));}if(_0x6aa84a[_0x0843('0x3b')][_0x3f1d48]){delete _0x6aa84a[_0x0843('0x3b')][_0x3f1d48];logger[_0x0843('0x38')](_0x0843('0x3c'),_0x3f1d48,util['inspect'](_0x118169,{'showHidden':![],'depth':null}));}if(_0x6aa84a[_0x0843('0x12')][_0x3f1d48]){delete _0x6aa84a[_0x0843('0x12')][_0x3f1d48];logger[_0x0843('0x38')]('[%s][voiceQueueReport][checkVariables]',_0x3f1d48,util[_0x0843('0x3a')](_0x118169,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x3d')]=function(){logger[_0x0843('0x38')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x0843('0xd')]);this['clearQueueReport'](this[_0x0843('0x3b')]);clearAgentBooked(this[_0x0843('0xc')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x3e')]=function(_0x5446d0){var _0x5255d0=this;if(!_['isEmpty'](_0x5446d0)){for(var _0x5cacfe in _0x5446d0){if(_0x5446d0[_0x0843('0x28')](_0x5cacfe)){_0x5255d0['emitVoiceQueueChannelRemove'](_0x5446d0[_0x5cacfe],_0x0843('0x3f'));delete _0x5446d0[_0x5cacfe];}}}};VoiceQueueReport['prototype'][_0x0843('0x40')]=function(_0x12a5ab,_0xd87614,_0x4d2b5a){io['to'](_0x12a5ab)['emit'](_0xd87614,_0x4d2b5a);};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x41')]=function(_0x339dca,_0x5ad280){logger['debug'](_0x0843('0x42')+_0x5ad280+_0x0843('0x43'),_0x339dca[_0x0843('0x44')],util[_0x0843('0x3a')](_0x339dca,{'showHidden':![],'depth':null}));this['emit'](util[_0x0843('0x45')](_0x0843('0x46'),_0x339dca[_0x0843('0x47')]),_0x0843('0x48'),_0x339dca);io[_0x0843('0x40')](_0x0843('0x49'),_0x339dca);};VoiceQueueReport['prototype'][_0x0843('0x4a')]=function(_0x1bbeae,_0x5d821a){logger['debug'](_0x0843('0x42')+_0x5d821a+_0x0843('0x4b'),_0x1bbeae[_0x0843('0x44')],util[_0x0843('0x3a')](_0x1bbeae,{'showHidden':![],'depth':null}));this[_0x0843('0x40')](util[_0x0843('0x45')]('voice:queue:%s',_0x1bbeae['name']),_0x0843('0x4c'),_0x1bbeae);io[_0x0843('0x40')](_0x0843('0x4d'),_0x1bbeae);};VoiceQueueReport['prototype'][_0x0843('0x4e')]=function(_0x2d9b24,_0x23bae6){if(_0x2d9b24[_0x0843('0x4f')]===_0x0843('0x50')){var _0x43b748={'id':_0x2d9b24['id'],'name':_0x2d9b24['name'],'strategy':_0x2d9b24['strategy'],'answered':_0x2d9b24['answered'],'available':_0x2d9b24[_0x0843('0x51')],'loggedIn':_0x2d9b24[_0x0843('0x52')],'pTalking':_0x2d9b24[_0x0843('0x2b')],'sumBillable':_0x2d9b24[_0x0843('0x53')],'sumDuration':_0x2d9b24[_0x0843('0x54')],'sumHoldTime':_0x2d9b24[_0x0843('0x55')]||0x0,'talking':_0x2d9b24[_0x0843('0x2a')],'total':_0x2d9b24[_0x0843('0x56')],'type':_0x2d9b24[_0x0843('0x4f')],'unmanaged':_0x2d9b24[_0x0843('0x57')],'abandoned':_0x2d9b24['abandoned'],'waiting':_0x2d9b24[_0x0843('0x2c')]};if(_0x2d9b24['Trunk']){_0x43b748['Trunk']={'id':_0x2d9b24[_0x0843('0x58')]['id'],'name':_0x2d9b24[_0x0843('0x58')][_0x0843('0x47')],'active':_0x2d9b24[_0x0843('0x58')][_0x0843('0x59')],'callerid':_0x2d9b24['Trunk'][_0x0843('0x5a')]};}if(_0x2d9b24['Interval']){_0x43b748[_0x0843('0x5b')]={'id':_0x2d9b24[_0x0843('0x5b')]['id'],'name':_0x2d9b24[_0x0843('0x5b')]['name']};}var _0x1c0727=md5(JSON[_0x0843('0x5c')](_0x43b748));if(_0x2d9b24['md5']!==_0x1c0727){_0x2d9b24[_0x0843('0x5d')]=_0x1c0727;logger[_0x0843('0x5e')](_0x0843('0x5f')+_0x23bae6+']\x20sending\x20voice_queue:save\x20event:',util['inspect'](_0x43b748,{'showHidden':![],'depth':null}));this[_0x0843('0x40')](util[_0x0843('0x45')](_0x0843('0x46'),_0x43b748['name']),_0x0843('0x60'),_0x43b748);}}};VoiceQueueReport[_0x0843('0x8')]['isNotNull']=function(_0x36d1a6){return _0x36d1a6!==null&&!_[_0x0843('0x61')](_0x36d1a6);};VoiceQueueReport[_0x0843('0x8')]['loopQueueShow']=function(){var _0x2a710b=this;setInterval(function(){_0x2a710b[_0x0843('0x2f')]();ami['Action']({'action':_0x0843('0x62')})[_0x0843('0x35')](function(_0xac71cb){logger[_0x0843('0x38')](_0x0843('0x63'),util[_0x0843('0x3a')](_0xac71cb,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x0843('0x8')]['loopQueueSummary']=function(){var _0x1fd3f0=this;setInterval(function(){if(_0x1fd3f0[_0x0843('0x10')]){return ami[_0x0843('0x32')]({'action':'queuesummary'})[_0x0843('0x64')](function(_0x540c2c){_0x1fd3f0[_0x0843('0x10')]=![];})[_0x0843('0x35')](function(_0x5c6138){logger[_0x0843('0x38')](_0x0843('0x65'),util[_0x0843('0x3a')](_0x5c6138,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x0843('0x13')]=function(_0x35cbe4){try{if(this['isNotNull'](_0x35cbe4)&&this[_0x0843('0x66')](_0x35cbe4[_0x0843('0x67')])){logger[_0x0843('0x5e')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x35cbe4,{'showHidden':![],'depth':null}));if(this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]]){logger[_0x0843('0x68')](_0x0843('0x69'),_0x35cbe4[_0x0843('0x67')]);var _0x12baa2=_['countBy'](this[_0x0843('0xd')],_0x0843('0x67'))[_0x35cbe4[_0x0843('0x67')]]||0x0;var _0x29d5c3=_0x12baa2-_0x35cbe4['callers'];if(this['voiceQueues'][_0x35cbe4['queue']]['waiting']!==_[_0x0843('0x6a')](_0x35cbe4[_0x0843('0x6b')])||this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]]['loggedIn']!==_[_0x0843('0x6a')](_0x35cbe4[_0x0843('0x6c')])||this[_0x0843('0xf')][_0x35cbe4['queue']][_0x0843('0x51')]!==_[_0x0843('0x6a')](_0x35cbe4[_0x0843('0x51')])||this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]][_0x0843('0x2a')]!==_0x29d5c3){this['voiceQueues'][_0x35cbe4['queue']][_0x0843('0x2c')]=_['toNumber'](_0x35cbe4[_0x0843('0x6b')]);this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]][_0x0843('0x52')]=_[_0x0843('0x6a')](_0x35cbe4['loggedin']);this['voiceQueues'][_0x35cbe4[_0x0843('0x67')]]['available']=_[_0x0843('0x6a')](_0x35cbe4[_0x0843('0x51')]);this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]][_0x0843('0x2a')]=_0x29d5c3>0x0?_0x29d5c3:0x0;this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]]['talking']=this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]][_0x0843('0x2a')]>_[_0x0843('0x6a')](_0x35cbe4[_0x0843('0x6c')])?_['toNumber'](_0x35cbe4[_0x0843('0x6c')]):this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]][_0x0843('0x2a')];this[_0x0843('0x4e')](this[_0x0843('0xf')][_0x35cbe4['queue']],_0x0843('0x6d'));}logger['debug'](_0x0843('0x6e'),util[_0x0843('0x3a')](this['voiceQueues'][_0x35cbe4[_0x0843('0x67')]],{'showHidden':![],'depth':null}));ami[_0x0843('0x40')](_0x0843('0x6f'),this[_0x0843('0xf')][_0x35cbe4[_0x0843('0x67')]]);}}}catch(_0x7e2a4b){logger['error']('[voiceQueueReport][queuesummary]',util[_0x0843('0x3a')](_0x7e2a4b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x15')]=function(_0x52a432){logger[_0x0843('0x5e')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x0843('0x3a')](_0x52a432,{'showHidden':![],'depth':null}));this['flagQueueSummary']=!![];};VoiceQueueReport[_0x0843('0x8')]['syncQueueCallerJoin']=function(_0x55bb32){try{if(this['isNotNull'](_0x55bb32)){logger[_0x0843('0x5e')](_0x0843('0x70'),_0x55bb32[_0x0843('0x44')],util[_0x0843('0x3a')](_0x55bb32,{'showHidden':![],'depth':null}));if(_[_0x0843('0x61')](this[_0x0843('0x3b')][_0x55bb32[_0x0843('0x44')]]))this[_0x0843('0x3b')][_0x55bb32[_0x0843('0x44')]]=[];if(_[_0x0843('0x61')](this[_0x0843('0xd')][_0x55bb32[_0x0843('0x44')]]))this[_0x0843('0xd')][_0x55bb32[_0x0843('0x44')]]={};var _0x4e3b16=new QueueReport();_0x4e3b16['name']=_0x55bb32[_0x0843('0x67')];_0x4e3b16['type']=this['voiceQueues'][_0x4e3b16[_0x0843('0x47')]]&&this[_0x0843('0xf')][_0x4e3b16[_0x0843('0x47')]][_0x0843('0x4f')]?this['voiceQueues'][_0x4e3b16['name']][_0x0843('0x4f')]||'inbound':_0x0843('0x50');_0x4e3b16[_0x0843('0x67')]=_0x55bb32[_0x0843('0x67')];_0x4e3b16[_0x0843('0x71')]=moment()[_0x0843('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x4e3b16[_0x0843('0x72')]=_0x55bb32['position'];_0x4e3b16[_0x0843('0x73')]=_0x55bb32[_0x0843('0x73')];_0x4e3b16['uniqueid']=_0x55bb32[_0x0843('0x44')];_0x4e3b16[_0x0843('0x74')]=this[_0x0843('0xd')][_0x55bb32[_0x0843('0x44')]][_0x0843('0x74')];logger[_0x0843('0x68')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x4e3b16['name'],_0x4e3b16[_0x0843('0x4f')]);_[_0x0843('0x75')](_0x4e3b16,_['pick'](_0x55bb32,_[_0x0843('0x76')](_0x4e3b16)));this[_0x0843('0x3b')][_0x55bb32[_0x0843('0x44')]][_0x0843('0x77')](_0x4e3b16);this[_0x0843('0xd')][_0x55bb32['uniqueid']]=_0x4e3b16;this[_0x0843('0x41')](_0x4e3b16,'queuecallerjoin');}}catch(_0x724cab){logger[_0x0843('0x38')](_0x0843('0x70'),_0x55bb32[_0x0843('0x44')],util[_0x0843('0x3a')](_0x724cab,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x19')]=function(_0x448f7f){try{if(this[_0x0843('0x66')](_0x448f7f)){logger['debug'](_0x0843('0x78'),_0x448f7f[_0x0843('0x44')],util[_0x0843('0x3a')](_0x448f7f,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x448f7f[_0x0843('0x44')]]){var _0x20322b=_['last'](this[_0x0843('0x3b')][_0x448f7f[_0x0843('0x44')]]);_0x20322b['queuecallercomplete']=![];_0x20322b[_0x0843('0x79')]=null;_0x20322b[_0x0843('0x7a')]=_0x448f7f[_0x0843('0x7a')];_0x20322b[_0x0843('0x7b')]=_0x448f7f[_0x0843('0x7b')];_0x20322b[_0x0843('0x18')]=!![];_0x20322b[_0x0843('0x7c')]=moment()['format'](_0x0843('0x7d'));_0x20322b[_0x0843('0x7e')]='ABANDONED';_0x20322b['lastAssignedTo']=null;logger[_0x0843('0x68')](_0x0843('0x7f'),_0x20322b['name'],_0x20322b[_0x0843('0x4f')]);this[_0x0843('0xd')][_0x448f7f[_0x0843('0x44')]]=_0x20322b;this[_0x0843('0x4a')](_0x20322b,_0x0843('0x18'));}}}catch(_0x3a5450){logger[_0x0843('0x38')](_0x0843('0x78'),_0x448f7f[_0x0843('0x44')],util[_0x0843('0x3a')](_0x3a5450,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x1a')]=function(_0xd2046c){try{if(this[_0x0843('0x66')](_0xd2046c)){logger[_0x0843('0x5e')](_0x0843('0x80'),_0xd2046c['uniqueid'],util[_0x0843('0x3a')](_0xd2046c,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0xd2046c[_0x0843('0x44')]]){var _0x393cea=_[_0x0843('0x81')](this['queueReports'][_0xd2046c[_0x0843('0x44')]]);_0x393cea['queuecallerleaveAt']=moment()[_0x0843('0x45')](_0x0843('0x7d'));_0x393cea[_0x0843('0x82')]=_0xd2046c[_0x0843('0x82')];_0x393cea[_0x0843('0x83')]=_0xd2046c['connectedlinename'];logger['info'](_0x0843('0x84'),_0x393cea[_0x0843('0x47')],_0x393cea[_0x0843('0x4f')],_0xd2046c[_0x0843('0x82')],_0xd2046c[_0x0843('0x83')]);this[_0x0843('0xd')][_0xd2046c[_0x0843('0x44')]]=_0x393cea;this['emitVoiceQueueChannelSave'](_0x393cea,_0x0843('0x85'));}}}catch(_0x574dfb){logger['error'](_0x0843('0x80'),_0xd2046c['uniqueid'],util[_0x0843('0x3a')](_0x574dfb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x1d')]=function(_0x22c8d4){try{if(this[_0x0843('0x66')](_0x22c8d4)){logger['debug'](_0x0843('0x86'),_0x22c8d4[_0x0843('0x44')],util[_0x0843('0x3a')](_0x22c8d4,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x22c8d4['uniqueid']]){var _0x5ddfeb=_[_0x0843('0x81')](this['queueReports'][_0x22c8d4['uniqueid']]);_0x5ddfeb[_0x0843('0x87')]=!![];_0x5ddfeb[_0x0843('0x7e')]=_0x0843('0x88');logger[_0x0843('0x68')](_0x0843('0x89'),_0x5ddfeb[_0x0843('0x47')],_0x5ddfeb[_0x0843('0x4f')]);}}}catch(_0x3ec436){logger[_0x0843('0x38')](_0x0843('0x86'),_0x22c8d4[_0x0843('0x44')],util[_0x0843('0x3a')](_0x3ec436,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0843('0x1b')]=function(_0x2d954e){try{if(this[_0x0843('0x66')](_0x2d954e)){logger[_0x0843('0x5e')](_0x0843('0x8a'),_0x2d954e[_0x0843('0x44')],util[_0x0843('0x3a')](_0x2d954e,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x2d954e[_0x0843('0x44')]]){var _0x46482d=_[_0x0843('0x81')](this['queueReports'][_0x2d954e[_0x0843('0x44')]]);_0x46482d[_0x0843('0x18')]=![];_0x46482d['queuecallerabandonAt']=null;_0x46482d[_0x0843('0x8b')]=!![];_0x46482d[_0x0843('0x8c')]=_0x2d954e[_0x0843('0x8d')];_0x46482d[_0x0843('0x7a')]=_0x2d954e[_0x0843('0x7a')];_0x46482d['queuecallercomplete']=!![];_0x46482d['queuecallerexit']=![];_0x46482d[_0x0843('0x8e')]=null;if(!_0x46482d[_0x0843('0x8f')]){if(_0x2d954e['reason']==_0x0843('0x8f')){_0x46482d[_0x0843('0x7e')]='COMPLETED';logger[_0x0843('0x68')](_0x0843('0x90'),_0x46482d[_0x0843('0x47')],_0x46482d[_0x0843('0x4f')]);}else{if(_[_0x0843('0x91')](_0x2d954e['channel']['toLowerCase'](),'local/')){if(this[_0x0843('0x3b')][_0x2d954e['linkedid']]){var _0x3ec5f3=_[_0x0843('0x81')](this[_0x0843('0x3b')][_0x2d954e[_0x0843('0x92')]]);_0x3ec5f3['queuecallercomplete']=![];_0x3ec5f3[_0x0843('0x93')]=!![];_0x3ec5f3[_0x0843('0x8e')]=moment(_0x46482d[_0x0843('0x71')])[_0x0843('0x94')](_0x2d954e[_0x0843('0x7a')],_0x0843('0x95'))['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3ec5f3[_0x0843('0x7e')]=_0x0843('0x96');_0x3ec5f3[_0x0843('0x8f')]=!![];_0x3ec5f3['transfertype']=_0x0843('0x97');_0x3ec5f3[_0x0843('0x98')]=_0x2d954e[_0x0843('0x99')];_0x3ec5f3[_0x0843('0x9a')]=_0x2d954e[_0x0843('0x44')];logger[_0x0843('0x68')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x3ec5f3[_0x0843('0x47')],_0x3ec5f3[_0x0843('0x4f')]);var _0xa5f1a6=this[_0x0843('0x3b')][_0x2d954e[_0x0843('0x92')]];this[_0x0843('0x3b')][_0x2d954e[_0x0843('0x92')]]=this[_0x0843('0x3b')][_0x2d954e[_0x0843('0x44')]];this[_0x0843('0x3b')][_0x2d954e[_0x0843('0x44')]]=_0xa5f1a6;}}else{_0x46482d[_0x0843('0x7e')]=_0x0843('0x9b')+_0x2d954e[_0x0843('0x9c')]['toUpperCase']();logger[_0x0843('0x68')](_0x0843('0x9d'),_0x46482d[_0x0843('0x47')],_0x46482d[_0x0843('0x4f')],_0x46482d['queuecallerexitreason']);}}}this['channels'][_0x2d954e['uniqueid']]=_0x46482d;this[_0x0843('0x4a')](_0x46482d,_0x0843('0x9e'));}}}catch(_0x2cbfbc){logger[_0x0843('0x38')](_0x0843('0x8a'),_0x2d954e[_0x0843('0x44')],util[_0x0843('0x3a')](_0x2cbfbc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x9f')]=function(_0x3655c7){try{if(this[_0x0843('0x66')](_0x3655c7)){logger[_0x0843('0x5e')](_0x0843('0xa0'),_0x3655c7['uniqueid'],util[_0x0843('0x3a')](_0x3655c7,{'showHidden':![],'depth':null}));this[_0x0843('0xa1')](_0x3655c7['uniqueid'],_[_0x0843('0x76')](_0x3655c7['variable'])[0x0],_0x3655c7[_0x0843('0xa2')]);if(this[_0x0843('0x3b')][_0x3655c7[_0x0843('0x44')]]){var _0x2c0980=_[_0x0843('0x81')](this['queueReports'][_0x3655c7[_0x0843('0x44')]]);if(_0x2c0980){if(this['isNotNull'](_0x3655c7[_0x0843('0xa3')])&&this[_0x0843('0x66')](_0x3655c7[_0x0843('0xa3')]['queuestatus'])){switch(_0x3655c7[_0x0843('0xa2')]){case _0x0843('0xa4'):_0x2c0980['queuecallerexit']=![];_0x2c0980[_0x0843('0x8e')]=null;break;case _0x0843('0xa5'):_0x2c0980[_0x0843('0xa6')]=_0x0843('0xa7');_0x2c0980['queuecallerexit']=!![];_0x2c0980['queuecallerexitAt']=moment()[_0x0843('0x45')](_0x0843('0x7d'));_0x2c0980[_0x0843('0xa8')]=moment()[_0x0843('0x45')](_0x0843('0x7d'));logger[_0x0843('0x5e')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x3655c7[_0x0843('0x44')],util['inspect'](_0x2c0980,{'showHidden':![],'depth':null}));ami[_0x0843('0x40')]('custom:timeout',_0x2c0980);break;default:_0x2c0980[_0x0843('0x93')]=!![];_0x2c0980[_0x0843('0x8e')]=moment()[_0x0843('0x45')](_0x0843('0x7d'));_0x2c0980[_0x0843('0xa8')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x2c0980[_0x0843('0x18')]=![];_0x2c0980[_0x0843('0x7c')]=null;_0x2c0980[_0x0843('0x7e')]=_0x3655c7['value'];this[_0x0843('0xd')][_0x3655c7[_0x0843('0x44')]]=_0x2c0980;this[_0x0843('0x4a')](_0x2c0980,_0x0843('0xa9'));}else if(this[_0x0843('0x66')](_0x3655c7[_0x0843('0xa3')])&&this[_0x0843('0x66')](_0x3655c7[_0x0843('0xa3')][_0x0843('0xaa')])){if(!_0x2c0980[_0x0843('0x18')]){_0x2c0980[_0x0843('0x93')]=!![];_0x2c0980[_0x0843('0x8e')]=moment()[_0x0843('0x45')](_0x0843('0x7d'));_0x2c0980[_0x0843('0x7e')]=_0x0843('0xab');_0x2c0980[_0x0843('0xa8')]=moment()[_0x0843('0x45')](_0x0843('0x7d'));this[_0x0843('0xd')][_0x3655c7[_0x0843('0x44')]]=_0x2c0980;}}logger[_0x0843('0x68')](_0x0843('0xac'),_0x3655c7[_0x0843('0x44')],_0x2c0980['name'],_0x2c0980[_0x0843('0x4f')],_[_0x0843('0x76')](_0x3655c7['variable'])[0x0],_0x3655c7['value']);_0x2c0980[_0x0843('0x12')]=this[_0x0843('0x12')][_0x3655c7[_0x0843('0x44')]];}}}}catch(_0x293fc6){logger[_0x0843('0x38')](_0x0843('0xa0'),_0x3655c7[_0x0843('0x44')],util[_0x0843('0x3a')](_0x293fc6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0xa1')]=function(_0x559072,_0x78d0be,_0x237b15){var _0x186d5a=[_0x0843('0xad'),'rtpaudioqosbridged',_0x0843('0xae'),_0x0843('0xaf'),_0x0843('0xb0'),_0x0843('0xb1'),_0x0843('0xb2'),'rtpaudioqosrttbridged',_0x0843('0xb3'),'sipuri','bridgepeer',_0x0843('0xb4'),_0x0843('0xb5'),_0x0843('0xb6'),_0x0843('0xb7'),_0x0843('0xb8'),_0x0843('0x8d'),_0x0843('0xb9'),_0x0843('0xba')];if(!_[_0x0843('0x31')](_0x78d0be)&&!_[_0x0843('0xbb')](_0x186d5a,_0x78d0be)){if(_[_0x0843('0x61')](this[_0x0843('0x12')][_0x559072])){this[_0x0843('0x12')][_0x559072]={};}this['variables'][_0x559072][_0x78d0be]=_0x237b15;}};VoiceQueueReport['prototype'][_0x0843('0x1e')]=function(_0x426128){try{if(this['isNotNull'](_0x426128)){logger['debug'](_0x0843('0xbc'),_0x426128[_0x0843('0x44')],util[_0x0843('0x3a')](_0x426128,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x426128[_0x0843('0x44')]]){for(var _0x184b11=0x0,_0x32481a={};_0x184b11<this[_0x0843('0x3b')][_0x426128[_0x0843('0x44')]]['length'];_0x184b11+=0x1){_0x32481a=this[_0x0843('0x3b')][_0x426128[_0x0843('0x44')]][_0x184b11];if(this[_0x0843('0xf')][_0x32481a['queue']]){if(_0x32481a[_0x0843('0x93')]&&_0x32481a[_0x0843('0x8f')]!=!![]){this[_0x0843('0xf')][_0x32481a[_0x0843('0x67')]]['unmanaged']+=0x1;}if(_0x32481a['queuecallerabandon']){this[_0x0843('0xf')][_0x32481a[_0x0843('0x67')]][_0x0843('0xbd')]+=0x1;}this[_0x0843('0xf')][_0x32481a[_0x0843('0x67')]]['sumHoldTime']+=moment(_0x32481a[_0x0843('0xa8')])[_0x0843('0xbe')](_0x32481a[_0x0843('0x71')],_0x0843('0x95'))||0x0;if(_0x184b11===this[_0x0843('0x3b')][_0x426128[_0x0843('0x44')]][_0x0843('0xbf')]-0x1){this['voiceQueues'][_0x32481a[_0x0843('0x67')]]['sumDuration']+=moment()['milliseconds'](0x0)['diff'](_0x32481a[_0x0843('0x71')],_0x0843('0x95'));this[_0x0843('0xf')][_0x32481a['queue']][_0x0843('0x56')]+=0x1;if(_0x32481a[_0x0843('0x87')]){this[_0x0843('0xf')][_0x32481a[_0x0843('0x67')]]['answered']+=0x1;this['voiceQueues'][_0x32481a['queue']][_0x0843('0x53')]+=moment()[_0x0843('0xc0')](0x0)[_0x0843('0xbe')](_0x32481a[_0x0843('0xa8')],_0x0843('0x95'));_0x32481a[_0x0843('0x79')]=moment()[_0x0843('0x45')](_0x0843('0x7d'));_0x32481a['queuecallerexit']=![];_0x32481a['queuecallerexitAt']=null;}if(_0x32481a[_0x0843('0x93')]&&_0x32481a[_0x0843('0x8f')]!=!![]){_0x32481a[_0x0843('0xa6')]=_0x0843('0x57');logger['debug'](_0x0843('0xc1'),_0x426128[_0x0843('0x44')],util[_0x0843('0x3a')](_0x32481a,{'showHidden':![],'depth':null}));ami['emit'](_0x0843('0xc2'),_0x32481a);}if(_0x32481a[_0x0843('0x18')]){_0x32481a[_0x0843('0xa6')]='abandoned';logger['debug'](_0x0843('0xc3'),_0x426128['uniqueid'],util[_0x0843('0x3a')](_0x32481a,{'showHidden':![],'depth':null}));ami['emit'](_0x0843('0xc4'),_0x32481a);}}else{this[_0x0843('0xf')][_0x32481a['queue']][_0x0843('0x54')]+=this['voiceQueues'][_0x32481a[_0x0843('0x67')]][_0x0843('0x55')];}logger[_0x0843('0x68')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x426128[_0x0843('0x44')],_0x32481a[_0x0843('0x47')],_0x32481a['type'],_0x426128[_0x0843('0xc5')]);this['channels'][_0x426128[_0x0843('0x44')]]=_0x32481a;this['emitVoiceQueueChannelRemove'](_0x32481a,'hangup');this[_0x0843('0x4e')](this[_0x0843('0xf')][_0x32481a[_0x0843('0x67')]],_0x0843('0xc6'));}}logger[_0x0843('0x5e')](_0x0843('0xc7'),_0x426128[_0x0843('0x44')],util[_0x0843('0x3a')](this[_0x0843('0x3b')][_0x426128[_0x0843('0x44')]],{'showHidden':![],'depth':null}));ami[_0x0843('0x40')](_0x0843('0xc8'),this['queueReports'][_0x426128[_0x0843('0x44')]]);delete this['queueReports'][_0x426128[_0x0843('0x44')]];delete this['channels'][_0x426128[_0x0843('0x44')]];}if(this[_0x0843('0x12')][_0x426128[_0x0843('0x44')]]){delete this[_0x0843('0x12')][_0x426128[_0x0843('0x44')]];}}}catch(_0x38e8a5){logger[_0x0843('0x38')](_0x0843('0xbc'),_0x426128['uniqueid'],util[_0x0843('0x3a')](_0x38e8a5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x24')]=function(_0x33b68b){try{if(this[_0x0843('0x66')](_0x33b68b)){logger[_0x0843('0x5e')](_0x0843('0xc9'),_0x33b68b[_0x0843('0x44')],util[_0x0843('0x3a')](_0x33b68b,{'showHidden':![],'depth':null}));var _0x31644e;if(this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xca')]]){_0x31644e=_[_0x0843('0x81')](this['queueReports'][_0x33b68b[_0x0843('0xca')]]);_0x31644e[_0x0843('0x98')]=_0x33b68b['secondtransfererexten'];_0x31644e[_0x0843('0x9a')]=_0x33b68b[_0x0843('0xcb')];_0x31644e[_0x0843('0x7e')]=_0x0843('0xcc');_0x31644e[_0x0843('0x8f')]=!![];_0x31644e[_0x0843('0xcd')]=_0x0843('0xce');if(this['queueReports'][_0x33b68b[_0x0843('0xcb')]]){var _0x3fe860=this[_0x0843('0x3b')][_0x33b68b['secondtransfereruniqueid']];this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xcb')]]=this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xca')]];this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xca')]]=_0x3fe860;var _0x399df5=_[_0x0843('0x81')](this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xca')]]);_0x399df5['switch']=!![];}logger[_0x0843('0x68')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x33b68b[_0x0843('0x44')],_0x31644e[_0x0843('0x47')],_0x31644e['type'],_0x31644e[_0x0843('0x98')],_0x31644e[_0x0843('0x9a')]);}else if(this[_0x0843('0x3b')][_0x33b68b['transfertargetuniqueid']]){_0x31644e=_['last'](this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xcf')]]);_0x31644e[_0x0843('0x98')]=_0x33b68b[_0x0843('0xd0')];_0x31644e[_0x0843('0x9a')]=_0x33b68b[_0x0843('0xd1')];_0x31644e['queuecallerexitreason']=_0x0843('0xcc');_0x31644e[_0x0843('0x8f')]=!![];_0x31644e[_0x0843('0xcd')]=_0x0843('0xce');if(this['queueReports'][_0x33b68b[_0x0843('0xd1')]]){var _0x3fe860=this['queueReports'][_0x33b68b[_0x0843('0xd1')]];this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xd1')]]=this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xcf')]];this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xcf')]]=_0x3fe860;var _0x399df5=_[_0x0843('0x81')](this[_0x0843('0x3b')][_0x33b68b[_0x0843('0xcf')]]);_0x399df5[_0x0843('0x30')]=!![];}logger[_0x0843('0x68')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x33b68b['uniqueid'],_0x31644e[_0x0843('0x47')],_0x31644e[_0x0843('0x4f')],_0x31644e['transferexten'],_0x31644e[_0x0843('0x9a')]);}}}catch(_0x581015){logger[_0x0843('0x38')](_0x0843('0xc9'),_0x33b68b['uniqueid'],util[_0x0843('0x3a')](_0x581015,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x27c332){try{if(this[_0x0843('0x66')](_0x27c332)){logger[_0x0843('0x5e')](_0x0843('0xd2'),_0x27c332[_0x0843('0x44')],util[_0x0843('0x3a')](_0x27c332,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x27c332[_0x0843('0xca')]]){var _0x521bfa=_['last'](this[_0x0843('0x3b')][_0x27c332['transfereeuniqueid']]);_0x521bfa['queuecallerexitreason']=_0x0843('0xd3');_0x521bfa[_0x0843('0x8f')]=!![];_0x521bfa[_0x0843('0xcd')]=_0x0843('0xd4');_0x521bfa['transferexten']=_0x27c332[_0x0843('0xd5')];_0x521bfa[_0x0843('0x9a')]=_0x27c332[_0x0843('0xca')];logger[_0x0843('0x68')](_0x0843('0xd6'),_0x27c332['uniqueid'],_0x521bfa[_0x0843('0x47')],_0x521bfa[_0x0843('0x4f')],_0x521bfa[_0x0843('0x98')],_0x521bfa['transferuniqueid']);this[_0x0843('0x1e')]({'event':_0x0843('0xd7'),'uniqueid':_0x27c332[_0x0843('0xca')],'context':_0x27c332[_0x0843('0xd8')],'channel':_0x27c332[_0x0843('0xd9')]});}}}catch(_0x48c813){logger[_0x0843('0x38')](_0x0843('0xd2'),_0x27c332[_0x0843('0x44')],util[_0x0843('0x3a')](_0x48c813,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0x21')]=function(_0x120336){try{if(this['isNotNull'](_0x120336)){logger[_0x0843('0x5e')](_0x0843('0xda'),_0x120336['uniqueid'],util[_0x0843('0x3a')](_0x120336,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x120336[_0x0843('0x44')]]){var _0x4a5f98=_['last'](this['queueReports'][_0x120336[_0x0843('0x44')]]);if(!_[_0x0843('0x31')](_0x4a5f98[_0x0843('0xa8')])){_0x4a5f98[_0x0843('0xdb')]=moment()[_0x0843('0x45')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x0843('0x68')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x120336[_0x0843('0x44')],_0x4a5f98[_0x0843('0xdb')]);}}}}catch(_0x29adb5){logger[_0x0843('0x38')]('[%s][voiceQueueReport][musiconholdstart]',_0x120336[_0x0843('0x44')],util[_0x0843('0x3a')](_0x29adb5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0xdc')]=function(_0x511b8f){try{if(this[_0x0843('0x66')](_0x511b8f)){logger[_0x0843('0x5e')](_0x0843('0xdd'),_0x511b8f[_0x0843('0x44')],util['inspect'](_0x511b8f,{'showHidden':![],'depth':null}));if(this[_0x0843('0x3b')][_0x511b8f[_0x0843('0x44')]]){var _0x1b252f=_['last'](this['queueReports'][_0x511b8f['uniqueid']]);if(!_[_0x0843('0x31')](_0x1b252f['mohstarttime'])){_0x1b252f[_0x0843('0xde')]+=moment()[_0x0843('0xc0')](0x0)['diff'](_0x1b252f[_0x0843('0xdb')],_0x0843('0x95'));logger[_0x0843('0x68')](_0x0843('0xdf'),_0x511b8f[_0x0843('0x44')],_0x1b252f[_0x0843('0xde')]);delete _0x1b252f[_0x0843('0xdb')];}}}}catch(_0x51c32e){logger[_0x0843('0x38')]('[%s][voiceQueueReport][musiconholdstop]',_0x511b8f[_0x0843('0x44')],util[_0x0843('0x3a')](_0x51c32e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0843('0x8')][_0x0843('0xe0')]=function(_0x582ec3){try{if(this['isNotNull'](_0x582ec3)){logger[_0x0843('0x5e')](_0x0843('0xe1'),_0x582ec3[_0x0843('0x44')],util[_0x0843('0x3a')](_0x582ec3,{'showHidden':![],'depth':null}));if(_0x582ec3[_0x0843('0xe2')]['toLowerCase']()===_0x0843('0xe3')){_0x582ec3['applicationdata']=_0x582ec3['appdata']&&_0x582ec3[_0x0843('0xe4')]['startsWith'](_0x0843('0xe5'))?_0x582ec3[_0x0843('0xe4')]:(_0x582ec3['appdata']||_0x582ec3[_0x0843('0xe6')])[_0x0843('0xe7')]();if(_[_0x0843('0x91')](_0x582ec3[_0x0843('0xe6')][_0x0843('0xe7')](),_0x0843('0xe8'))){logger[_0x0843('0x68')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x582ec3[_0x0843('0x44')],_0x582ec3[_0x0843('0xe2')],_0x582ec3[_0x0843('0xe6')]);if(_[_0x0843('0x61')](this[_0x0843('0xd')][_0x582ec3[_0x0843('0x44')]]))this[_0x0843('0xd')][_0x582ec3[_0x0843('0x44')]]={};var _0x5be2c3=_0x582ec3[_0x0843('0xe6')][_0x0843('0xe9')]('=');var _0x19aaae=_0x5be2c3[0x0][_0x0843('0xe7')]()[_0x0843('0xea')](/cdr\((.*)\)/);if(_0x19aaae)this[_0x0843('0xd')][_0x582ec3[_0x0843('0x44')]][_0x19aaae[0x1]]=_0x5be2c3[0x1];}}}}catch(_0x3b58e3){logger[_0x0843('0x38')](_0x0843('0xeb'),_0x582ec3[_0x0843('0x44')],util['inspect'](_0x3b58e3,{'showHidden':![],'depth':null}));}};module[_0x0843('0xec')]=VoiceQueueReport;
\ No newline at end of file
index 3d011d5..e082f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a4=['CreateReportAgentPreview','createHistory','campaign','queue'];(function(_0x24b73c,_0x1b720b){var _0x170e7d=function(_0x218711){while(--_0x218711){_0x24b73c['push'](_0x24b73c['shift']());}};_0x170e7d(++_0x1b720b);}(_0x18a4,0x1b1));var _0x418a=function(_0x4bab60,_0x168a38){_0x4bab60=_0x4bab60-0x0;var _0x2b9881=_0x18a4[_0x4bab60];return _0x2b9881;};'use strict';var client=require('../client');exports[_0x418a('0x0')]=function(_0x27b090){return function(){_0x27b090[_0x418a('0x1')]=_0x27b090[_0x418a('0x2')];return client['Request'](_0x418a('0x3'),{'body':_0x27b090,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
+var _0xfd69=['CreateReportAgentPreview','../client','createHistory','campaign','Request'];(function(_0x12dafa,_0x337d7c){var _0x6a9adf=function(_0x179710){while(--_0x179710){_0x12dafa['push'](_0x12dafa['shift']());}};_0x6a9adf(++_0x337d7c);}(_0xfd69,0x1aa));var _0x9fd6=function(_0x449b86,_0x67f117){_0x449b86=_0x449b86-0x0;var _0x52a227=_0xfd69[_0x449b86];return _0x52a227;};'use strict';var client=require(_0x9fd6('0x0'));exports[_0x9fd6('0x1')]=function(_0x3c4f15){return function(){_0x3c4f15[_0x9fd6('0x2')]=_0x3c4f15['queue'];return client[_0x9fd6('0x3')](_0x9fd6('0x4'),{'body':_0x3c4f15,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 6fdc74d..633c0db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f1=['Request','CreateAttachment','create'];(function(_0x4e785b,_0x1e6562){var _0x32a6b6=function(_0x3c6caf){while(--_0x3c6caf){_0x4e785b['push'](_0x4e785b['shift']());}};_0x32a6b6(++_0x1e6562);}(_0x71f1,0x19a));var _0x171f=function(_0x7633c,_0x1e45bf){_0x7633c=_0x7633c-0x0;var _0x1b77e2=_0x71f1[_0x7633c];return _0x1b77e2;};'use strict';var client=require('../client');exports[_0x171f('0x0')]=function(_0x15fb58){return client[_0x171f('0x1')](_0x171f('0x2'),{'body':_0x15fb58,'log':_0x171f('0x2')});};
\ No newline at end of file
+var _0x7792=['CreateAttachment','Request'];(function(_0x4e1078,_0x54432e){var _0x1e7aed=function(_0x1cda14){while(--_0x1cda14){_0x4e1078['push'](_0x4e1078['shift']());}};_0x1e7aed(++_0x54432e);}(_0x7792,0x131));var _0x2779=function(_0xb4e2df,_0x1cbb7c){_0xb4e2df=_0xb4e2df-0x0;var _0x5e95ba=_0x7792[_0xb4e2df];return _0x5e95ba;};'use strict';var client=require('../client');exports['create']=function(_0x133a51){return client[_0x2779('0x0')](_0x2779('0x1'),{'body':_0x133a51,'log':_0x2779('0x1')});};
\ No newline at end of file
index 5003003..e4cf875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0xbd3d72,_0x43194d){var _0x136a64=function(_0x4fbef1){while(--_0x4fbef1){_0xbd3d72['push'](_0xbd3d72['shift']());}};_0x136a64(++_0x43194d);}(_0xdb28,0x106));var _0x8db2=function(_0x1317f6,_0x40e31f){_0x1317f6=_0x1317f6-0x0;var _0x9b3464=_0xdb28[_0x1317f6];return _0x9b3464;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
+var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x6a8540,_0x3b906f){var _0x404c44=function(_0x4d45ad){while(--_0x4d45ad){_0x6a8540['push'](_0x6a8540['shift']());}};_0x404c44(++_0x3b906f);}(_0x326f,0xd1));var _0xf326=function(_0x1f1f8b,_0x3a9627){_0x1f1f8b=_0x1f1f8b-0x0;var _0x211cf6=_0x326f[_0x1f1f8b];return _0x211cf6;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
index aff8e5c..f12cf8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x602a=['Request','GetCmContact','createContact','CreateCmContact','getContacts'];(function(_0x49c398,_0x19c80a){var _0x4fad9c=function(_0x1fa01f){while(--_0x1fa01f){_0x49c398['push'](_0x49c398['shift']());}};_0x4fad9c(++_0x19c80a);}(_0x602a,0xa7));var _0xa602=function(_0x312841,_0x4c1eed){_0x312841=_0x312841-0x0;var _0x361379=_0x602a[_0x312841];return _0x361379;};'use strict';var client=require('../client');exports[_0xa602('0x0')]=function(_0x3fc0e9){return function(){return client['Request'](_0xa602('0x1'),{'body':_0x3fc0e9,'log':'CreateCmContact'});};};exports[_0xa602('0x2')]=function(_0x5ae941){return function(){return client[_0xa602('0x3')](_0xa602('0x4'),{'options':_0x5ae941,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x78c8=['CreateCmContact','GetCmContact','Request'];(function(_0x3d1672,_0x25ffe4){var _0x1f014e=function(_0x9093e8){while(--_0x9093e8){_0x3d1672['push'](_0x3d1672['shift']());}};_0x1f014e(++_0x25ffe4);}(_0x78c8,0x19d));var _0x878c=function(_0x176b20,_0x19aeeb){_0x176b20=_0x176b20-0x0;var _0x2e3db4=_0x78c8[_0x176b20];return _0x2e3db4;};'use strict';var client=require('../client');exports['createContact']=function(_0x58c098){return function(){return client[_0x878c('0x0')](_0x878c('0x1'),{'body':_0x58c098,'log':_0x878c('0x1')});};};exports['getContacts']=function(_0x40432c){return function(){return client[_0x878c('0x0')](_0x878c('0x2'),{'options':_0x40432c,'log':_0x878c('0x2')});};};
\ No newline at end of file
index 1b5fd7b..dea969d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa48a=['GetContactRecallMe','User','Agent','ResetActiveCalls','handlePreviewRecallNotifications','moment','lodash','getContacts','Request','GetCmHopper','getCmHopper','updateContacts','UpdateCmHopper','rescheduleContact','ContactId','VoiceQueueId','CampaignId','DestroyCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','priority','DESC','scheduledat','ASC','getContactDialerIvr','GetContactDialer','CmContact','Contact','GetContactDialerIvr','campaign','queue','ListId','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','name','VoiceQueue','Queue'];(function(_0x74b1b9,_0x1c9be6){var _0x51e433=function(_0x47d8c9){while(--_0x47d8c9){_0x74b1b9['push'](_0x74b1b9['shift']());}};_0x51e433(++_0x1c9be6);}(_0xa48a,0x195));var _0xaa48=function(_0x50363e,_0x4ae3cc){_0x50363e=_0x50363e-0x0;var _0x3afd96=_0xa48a[_0x50363e];return _0x3afd96;};'use strict';var client=require('../client');var moment=require(_0xaa48('0x0'));var _=require(_0xaa48('0x1'));exports[_0xaa48('0x2')]=function(_0x2644dd,_0x239728){return function(){return client[_0xaa48('0x3')](_0xaa48('0x4'),{'options':{'where':{'VoiceQueueId':_0x2644dd},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0x239728,'raw':![]},'log':_0xaa48('0x5')});};};exports[_0xaa48('0x6')]=function(_0x59a9ea,_0x3325ac,_0xd05a3b){return function(){return client[_0xaa48('0x3')]('UpdateCmHopper',{'body':_0x59a9ea,'options':{'where':{'VoiceQueueId':_0x3325ac,'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0xd05a3b},'log':_0xaa48('0x7')});};};exports[_0xaa48('0x8')]=function(_0x44f4fb){return function(){return client[_0xaa48('0x3')](_0xaa48('0x7'),{'body':_0x44f4fb,'options':{'where':{'ContactId':_0x44f4fb[_0xaa48('0x9')],'ListId':_0x44f4fb['ListId'],'VoiceQueueId':_0x44f4fb[_0xaa48('0xa')],'CampaignId':_0x44f4fb[_0xaa48('0xb')]}},'log':_0xaa48('0x8')});};};exports['destroyContact']=function(_0x32fc3e,_0x2b2bab,_0x15b2ac){return function(){return client['Request'](_0xaa48('0xc'),{'options':{'where':{'VoiceQueueId':_0x32fc3e,'ListId':_0x2b2bab,'ContactId':_0x15b2ac}},'log':_0xaa48('0xc')});};};exports['getContactDialer']=function(_0x41506f,_0x5a8c67,_0x589761,_0x5a1ca2){return function(){return client[_0xaa48('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x41506f,'active':![],'scheduledat':{'$lte':moment()[_0xaa48('0xd')](_0xaa48('0xe'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x5a8c67}}]},'order':[[_0xaa48('0xf'),_0xaa48('0x10')],[_0xaa48('0x11'),_0x5a1ca2],['id',_0xaa48('0x12')]],'raw':!![],'limit':_0x589761},'log':'GetContactDialer'});};};exports[_0xaa48('0x13')]=function(_0x4a11ec,_0x3cd2e5,_0x42c2ac){return function(){return client['Request'](_0xaa48('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x4a11ec,'active':![],'scheduledat':{'$lte':moment()[_0xaa48('0xd')](_0xaa48('0xe'))}},'include':[{'model':_0xaa48('0x15'),'as':_0xaa48('0x16')}],'order':[[_0xaa48('0xf'),'DESC'],[_0xaa48('0x11'),_0x42c2ac],['id',_0xaa48('0x12')]],'raw':!![],'limit':_0x3cd2e5},'log':_0xaa48('0x17')});};};exports['moveContactManagedDialer']=function(_0x5d9fa3,_0x565c3e){return function(){_0x5d9fa3[_0xaa48('0x18')]=_0x5d9fa3[_0xaa48('0x19')];return client[_0xaa48('0x3')]('MoveContactManagedDialer',{'body':_0x5d9fa3,'options':{'where':{'ContactId':_0x5d9fa3[_0xaa48('0x9')],'ListId':_0x5d9fa3[_0xaa48('0x1a')],'VoiceQueueId':_0x5d9fa3[_0xaa48('0xa')],'CampaignId':_0x5d9fa3[_0xaa48('0xb')],'active':_0x565c3e?undefined:!![]}},'log':_0xaa48('0x1b')});};};exports[_0xaa48('0x1c')]=function(_0x1cc10e){return function(){return client[_0xaa48('0x3')](_0xaa48('0x1d'),{'options':{'where':{'VoiceQueueId':_0x1cc10e['id']?_0x1cc10e['id']||null:null}},'log':'countReScheduled'});};};exports[_0xaa48('0x1e')]=function(_0x53a70f){return function(){return client[_0xaa48('0x3')](_0xaa48('0x1f'),{'options':{'where':{'id':_0x53a70f},'include':[{'model':_0xaa48('0x15'),'as':_0xaa48('0x16')},{'model':'User','as':'Agent','attributes':['id',_0xaa48('0x20')]},{'model':_0xaa48('0x21'),'as':_0xaa48('0x22'),'attributes':['id',_0xaa48('0x20')]}],'raw':!![]},'log':_0xaa48('0x5')});};};exports['unlockContact']=function(_0x2c2770,_0x52cb06,_0x11b03d){return function(){return client['Request']('UpdateCmHopper',{'body':_0x2c2770,'options':{'where':{'id':_0x52cb06},'limit':_0x11b03d},'log':_0xaa48('0x7')});};};exports['getContactRecallMe']=function(_0x4537d7,_0x13e4e7){return function(){return client['Request'](_0xaa48('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4537d7,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xaa48('0xd')](_0xaa48('0xe'))},'UserId':{'$in':_0x13e4e7}},'order':[[_0xaa48('0xf'),_0xaa48('0x10')],['scheduledat',_0xaa48('0x10')],['id',_0xaa48('0x12')]],'include':[{'model':_0xaa48('0x15'),'as':_0xaa48('0x16')},{'model':_0xaa48('0x24'),'as':_0xaa48('0x25'),'attributes':['id',_0xaa48('0x20'),'voicePause']}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xaa48('0x14')});};};exports['resetActiveCalls']=function(_0x4b1759){return function(){return client[_0xaa48('0x3')](_0xaa48('0x26'),{'body':_0x4b1759,'options':{},'log':_0xaa48('0x26')});};};exports[_0xaa48('0x27')]=function(_0x4bcbae,_0x3c8c31){return function(){return client[_0xaa48('0x3')]('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueId':_0x4bcbae,'interval':_0x3c8c31}},'log':_0xaa48('0x27')});};};
\ No newline at end of file
+var _0x9df2=['moveContactManagedDialer','queue','MoveContactManagedDialer','CountReScheduled','GetCmHopperPreview','User','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','voicePause','db.CmHopper.UserId','ResetActiveCalls','handlePreviewRecallNotifications','../client','lodash','getContacts','Contact','getCmHopper','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','Request','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','format','DESC','ASC','getContactDialerIvr','GetContactDialer','CmContact','priority','scheduledat','GetContactDialerIvr'];(function(_0x3c4b7b,_0x1d5937){var _0x8caff0=function(_0x4d6379){while(--_0x4d6379){_0x3c4b7b['push'](_0x3c4b7b['shift']());}};_0x8caff0(++_0x1d5937);}(_0x9df2,0x18b));var _0x29df=function(_0x3a95f6,_0x3d8663){_0x3a95f6=_0x3a95f6-0x0;var _0x3575ef=_0x9df2[_0x3a95f6];return _0x3575ef;};'use strict';var client=require(_0x29df('0x0'));var moment=require('moment');var _=require(_0x29df('0x1'));exports[_0x29df('0x2')]=function(_0x340c15,_0x2b8ce6){return function(){return client['Request']('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x340c15},'include':[{'model':'CmContact','as':_0x29df('0x3')}],'limit':_0x2b8ce6,'raw':![]},'log':_0x29df('0x4')});};};exports['updateContacts']=function(_0x5537fc,_0x2a1ef2,_0x1d88d1){return function(){return client['Request'](_0x29df('0x5'),{'body':_0x5537fc,'options':{'where':{'VoiceQueueId':_0x2a1ef2,'scheduledat':{'$lte':moment()['format'](_0x29df('0x6'))}},'limit':_0x1d88d1},'log':'UpdateCmHopper'});};};exports[_0x29df('0x7')]=function(_0x2719dd){return function(){return client[_0x29df('0x8')]('UpdateCmHopper',{'body':_0x2719dd,'options':{'where':{'ContactId':_0x2719dd[_0x29df('0x9')],'ListId':_0x2719dd[_0x29df('0xa')],'VoiceQueueId':_0x2719dd[_0x29df('0xb')],'CampaignId':_0x2719dd[_0x29df('0xc')]}},'log':_0x29df('0x7')});};};exports[_0x29df('0xd')]=function(_0x402b6f,_0x291d6c,_0x42a5d0){return function(){return client[_0x29df('0x8')](_0x29df('0xe'),{'options':{'where':{'VoiceQueueId':_0x402b6f,'ListId':_0x291d6c,'ContactId':_0x42a5d0}},'log':_0x29df('0xe')});};};exports[_0x29df('0xf')]=function(_0x4d4c42,_0x8f4fab,_0x521b22,_0xab4d4e){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4d4c42,'active':![],'scheduledat':{'$lte':moment()[_0x29df('0x10')](_0x29df('0x6'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x8f4fab}}]},'order':[['priority',_0x29df('0x11')],['scheduledat',_0xab4d4e],['id',_0x29df('0x12')]],'raw':!![],'limit':_0x521b22},'log':'GetContactDialer'});};};exports[_0x29df('0x13')]=function(_0x520112,_0xef6192,_0x3e55b2){return function(){return client[_0x29df('0x8')](_0x29df('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x520112,'active':![],'scheduledat':{'$lte':moment()[_0x29df('0x10')](_0x29df('0x6'))}},'include':[{'model':_0x29df('0x15'),'as':'Contact'}],'order':[[_0x29df('0x16'),_0x29df('0x11')],[_0x29df('0x17'),_0x3e55b2],['id',_0x29df('0x12')]],'raw':!![],'limit':_0xef6192},'log':_0x29df('0x18')});};};exports[_0x29df('0x19')]=function(_0x4a0d30,_0x43f9b8){return function(){_0x4a0d30['campaign']=_0x4a0d30[_0x29df('0x1a')];return client[_0x29df('0x8')]('MoveContactManagedDialer',{'body':_0x4a0d30,'options':{'where':{'ContactId':_0x4a0d30[_0x29df('0x9')],'ListId':_0x4a0d30['ListId'],'VoiceQueueId':_0x4a0d30[_0x29df('0xb')],'CampaignId':_0x4a0d30['CampaignId'],'active':_0x43f9b8?undefined:!![]}},'log':_0x29df('0x1b')});};};exports['countReScheduled']=function(_0xdcbe5e){return function(){return client['Request'](_0x29df('0x1c'),{'options':{'where':{'VoiceQueueId':_0xdcbe5e['id']?_0xdcbe5e['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x564388){return function(){return client[_0x29df('0x8')](_0x29df('0x1d'),{'options':{'where':{'id':_0x564388},'include':[{'model':'CmContact','as':_0x29df('0x3')},{'model':_0x29df('0x1e'),'as':'Agent','attributes':['id',_0x29df('0x1f')]},{'model':_0x29df('0x20'),'as':_0x29df('0x21'),'attributes':['id',_0x29df('0x1f')]}],'raw':!![]},'log':_0x29df('0x4')});};};exports[_0x29df('0x22')]=function(_0x1b294c,_0x416912,_0x149d4b){return function(){return client['Request'](_0x29df('0x5'),{'body':_0x1b294c,'options':{'where':{'id':_0x416912},'limit':_0x149d4b},'log':_0x29df('0x5')});};};exports[_0x29df('0x23')]=function(_0x14c6c0,_0x20e878){return function(){return client[_0x29df('0x8')](_0x29df('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x14c6c0,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x29df('0x10')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x20e878}},'order':[[_0x29df('0x16'),_0x29df('0x11')],['scheduledat','DESC'],['id',_0x29df('0x12')]],'include':[{'model':'CmContact','as':'Contact'},{'model':_0x29df('0x1e'),'as':_0x29df('0x25'),'attributes':['id',_0x29df('0x1f'),_0x29df('0x26')]}],'group':_0x29df('0x27'),'raw':!![]},'log':_0x29df('0x14')});};};exports['resetActiveCalls']=function(_0x3ce3cc){return function(){return client[_0x29df('0x8')](_0x29df('0x28'),{'body':_0x3ce3cc,'options':{},'log':_0x29df('0x28')});};};exports[_0x29df('0x29')]=function(_0x2b0672,_0x4225f0){return function(){return client[_0x29df('0x8')]('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueId':_0x2b0672,'interval':_0x4225f0}},'log':_0x29df('0x29')});};};
\ No newline at end of file
index c5a695e..f5ee455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['CampaignId','Contact','../client','Request','GetCmHopperBlack','VoiceQueueId','phone','checkIsBlackListIvr'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x373d,0x1e2));var _0xd373=function(_0x57ec65,_0x3154f3){_0x57ec65=_0x57ec65-0x0;var _0x518085=_0x373d[_0x57ec65];return _0x518085;};'use strict';var client=require(_0xd373('0x0'));exports['checkIsBlackList']=function(_0x3d3d31){return function(){return client[_0xd373('0x1')](_0xd373('0x2'),{'options':{'where':{'VoiceQueueId':_0x3d3d31[_0xd373('0x3')],'phone':_0x3d3d31['Contact'][_0xd373('0x4')]},'raw':![]},'log':_0xd373('0x2')});};};exports[_0xd373('0x5')]=function(_0x598692){return function(){return client['Request'](_0xd373('0x2'),{'options':{'where':{'CampaignId':_0x598692[_0xd373('0x6')],'phone':_0x598692[_0xd373('0x7')][_0xd373('0x4')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x4024=['GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','Contact','checkIsBlackListIvr','CampaignId'];(function(_0x899740,_0x167541){var _0x424d18=function(_0x2ced5c){while(--_0x2ced5c){_0x899740['push'](_0x899740['shift']());}};_0x424d18(++_0x167541);}(_0x4024,0x89));var _0x4402=function(_0x36d461,_0x4329fe){_0x36d461=_0x36d461-0x0;var _0x448170=_0x4024[_0x36d461];return _0x448170;};'use strict';var client=require(_0x4402('0x0'));exports[_0x4402('0x1')]=function(_0x4ed828){return function(){return client[_0x4402('0x2')](_0x4402('0x3'),{'options':{'where':{'VoiceQueueId':_0x4ed828['VoiceQueueId'],'phone':_0x4ed828[_0x4402('0x4')]['phone']},'raw':![]},'log':_0x4402('0x3')});};};exports[_0x4402('0x5')]=function(_0x5bdb3f){return function(){return client['Request'](_0x4402('0x3'),{'options':{'where':{'CampaignId':_0x5bdb3f[_0x4402('0x6')],'phone':_0x5bdb3f[_0x4402('0x4')]['phone']},'raw':![]},'log':_0x4402('0x7')});};};
\ No newline at end of file
index cbbf16d..0bfba9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d3e=['CreateCmHopperFinal','../client','campaign','Request'];(function(_0x4709c8,_0x3384ca){var _0x478cdd=function(_0x5193ce){while(--_0x5193ce){_0x4709c8['push'](_0x4709c8['shift']());}};_0x478cdd(++_0x3384ca);}(_0x4d3e,0x1e9));var _0xe4d3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4d3e[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xe4d3('0x0'));exports['createContact']=function(_0x670041){return function(){_0x670041[_0xe4d3('0x1')]=_0x670041['queue'];return client[_0xe4d3('0x2')](_0xe4d3('0x3'),{'body':_0x670041,'log':_0xe4d3('0x3')});};};
\ No newline at end of file
+var _0xf0d0=['../client','createContact','campaign','queue','Request','CreateCmHopperFinal'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xf0d0,0x8a));var _0x0f0d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf0d0[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x0f0d('0x0'));exports[_0x0f0d('0x1')]=function(_0x1e7b1d){return function(){_0x1e7b1d[_0x0f0d('0x2')]=_0x1e7b1d[_0x0f0d('0x3')];return client[_0x0f0d('0x4')](_0x0f0d('0x5'),{'body':_0x1e7b1d,'log':_0x0f0d('0x5')});};};
\ No newline at end of file
index fbe6a89..b17693a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ec=['CreateCmHopperHistory','AvgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','day','ivr','moment','queue','Request'];(function(_0x4590ce,_0x27e239){var _0x47bcb8=function(_0x52a8a5){while(--_0x52a8a5){_0x4590ce['push'](_0x4590ce['shift']());}};_0x47bcb8(++_0x27e239);}(_0x61ec,0xeb));var _0xc61e=function(_0x367532,_0x156daa){_0x367532=_0x367532-0x0;var _0x1e3bf2=_0x61ec[_0x367532];return _0x1e3bf2;};'use strict';var client=require('../client');var moment=require(_0xc61e('0x0'));exports['createHistory']=function(_0x23f757){return function(){_0x23f757['campaign']=_0x23f757[_0xc61e('0x1')];return client[_0xc61e('0x2')](_0xc61e('0x3'),{'body':_0x23f757,'log':_0xc61e('0x3')});};};exports['avgHandleTime']=function(_0x3b1543){return function(){return client[_0xc61e('0x2')](_0xc61e('0x4'),{'options':{'where':{'endtime':{'$between':[moment()[_0xc61e('0x5')](_0x3b1543,'minutes')[_0xc61e('0x6')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xc61e('0x6')](_0xc61e('0x7'))]}},'raw':![]},'log':_0xc61e('0x8')});};};exports[_0xc61e('0x9')]=function(_0x1c84e0){return function(){return client[_0xc61e('0x2')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xc61e('0xa')]('day')['format'](_0xc61e('0x7')),moment()[_0xc61e('0xb')]('day')[_0xc61e('0x6')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xc61e('0x1')},'raw':![]},'log':_0xc61e('0xc')});};};exports[_0xc61e('0xd')]=function(_0x355130){return function(){return client['Request'](_0xc61e('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf']('day')[_0xc61e('0x6')](_0xc61e('0x7')),moment()[_0xc61e('0xb')](_0xc61e('0xf'))['format'](_0xc61e('0x7'))]},'campaigntype':_0xc61e('0x10')},'raw':![]},'log':_0xc61e('0xe')});};};
\ No newline at end of file
+var _0x7b9b=['endOf','queue','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','CreateCmHopperHistory','Request','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day'];(function(_0x5d0430,_0x15cc32){var _0x4d964c=function(_0x392cbf){while(--_0x392cbf){_0x5d0430['push'](_0x5d0430['shift']());}};_0x4d964c(++_0x15cc32);}(_0x7b9b,0x1cc));var _0xb7b9=function(_0x570449,_0x111b90){_0x570449=_0x570449-0x0;var _0x47c496=_0x7b9b[_0x570449];return _0x47c496;};'use strict';var client=require(_0xb7b9('0x0'));var moment=require(_0xb7b9('0x1'));exports[_0xb7b9('0x2')]=function(_0x2d680c){return function(){_0x2d680c[_0xb7b9('0x3')]=_0x2d680c['queue'];return client['Request'](_0xb7b9('0x4'),{'body':_0x2d680c,'log':_0xb7b9('0x4')});};};exports['avgHandleTime']=function(_0x200848){return function(){return client[_0xb7b9('0x5')](_0xb7b9('0x6'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x200848,_0xb7b9('0x7'))[_0xb7b9('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xb7b9('0x8')](_0xb7b9('0x9'))]}},'raw':![]},'log':_0xb7b9('0xa')});};};exports[_0xb7b9('0xb')]=function(_0x1a0f43){return function(){return client[_0xb7b9('0x5')](_0xb7b9('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb7b9('0xd')](_0xb7b9('0xe'))['format'](_0xb7b9('0x9')),moment()[_0xb7b9('0xf')](_0xb7b9('0xe'))['format'](_0xb7b9('0x9'))]},'campaigntype':_0xb7b9('0x10')},'raw':![]},'log':_0xb7b9('0xc')});};};exports['getCampaignHopperHistory']=function(_0x496483){return function(){return client[_0xb7b9('0x5')](_0xb7b9('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb7b9('0xd')](_0xb7b9('0xe'))[_0xb7b9('0x8')](_0xb7b9('0x9')),moment()[_0xb7b9('0xf')](_0xb7b9('0xe'))['format'](_0xb7b9('0x9'))]},'campaigntype':_0xb7b9('0x12')},'raw':![]},'log':_0xb7b9('0x11')});};};
\ No newline at end of file
index 618dcef..d7bc67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd48e=['localstationid','minrate','modem','gateway','faxdetect','tech','TrunkId','Trunk','callerid','notify','NotifyFaxAccount','getFaxAccounts','Request','GetFaxAccount','name','description','headerinfo'];(function(_0x48d809,_0x2a344c){var _0x436d4f=function(_0x4508d0){while(--_0x4508d0){_0x48d809['push'](_0x48d809['shift']());}};_0x436d4f(++_0x2a344c);}(_0xd48e,0x93));var _0xed48=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xd48e[_0x3ab51d];return _0x29a04e;};'use strict';var client=require('../client');exports[_0xed48('0x0')]=function(){return function(){return client[_0xed48('0x1')](_0xed48('0x2'),{'options':{'raw':![],'attributes':['id',_0xed48('0x3'),_0xed48('0x4'),'ecm',_0xed48('0x5'),_0xed48('0x6'),_0xed48('0x7'),'maxrate',_0xed48('0x8'),_0xed48('0x9'),_0xed48('0xa'),'t38timeout',_0xed48('0xb'),_0xed48('0xc'),'ListId','key'],'include':[{'model':'Trunk','as':_0xed48('0xd'),'attributes':['id',_0xed48('0x3'),_0xed48('0xe'),'active']}]},'log':'getFaxAccount'});};};exports[_0xed48('0xf')]=function(_0x2d9691,_0x294b4c){return client['Request'](_0xed48('0x10'),{'account':{'id':_0x2d9691},'body':_0x294b4c,'log':_0xed48('0x10')});};
\ No newline at end of file
+var _0x3423=['maxrate','modem','gateway','faxdetect','t38timeout','tech','TrunkId','ListId','key','Trunk','active','NotifyFaxAccount','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate'];(function(_0x2783e9,_0x330637){var _0x40b07b=function(_0x33d46a){while(--_0x33d46a){_0x2783e9['push'](_0x2783e9['shift']());}};_0x40b07b(++_0x330637);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getFaxAccounts']=function(){return function(){return client[_0x3342('0x0')](_0x3342('0x1'),{'options':{'raw':![],'attributes':['id',_0x3342('0x2'),_0x3342('0x3'),_0x3342('0x4'),_0x3342('0x5'),_0x3342('0x6'),_0x3342('0x7'),_0x3342('0x8'),_0x3342('0x9'),_0x3342('0xa'),_0x3342('0xb'),_0x3342('0xc'),_0x3342('0xd'),_0x3342('0xe'),_0x3342('0xf'),_0x3342('0x10')],'include':[{'model':_0x3342('0x11'),'as':_0x3342('0x11'),'attributes':['id','name','callerid',_0x3342('0x12')]}]},'log':'getFaxAccount'});};};exports['notify']=function(_0x51b276,_0x4f85e3){return client[_0x3342('0x0')](_0x3342('0x13'),{'account':{'id':_0x51b276},'body':_0x4f85e3,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index 38eb3a6..3813196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x656f=['Request','UpdateFaxMessage','../client','update'];(function(_0x1d1df8,_0x12e0a8){var _0x460ffb=function(_0x56df4f){while(--_0x56df4f){_0x1d1df8['push'](_0x1d1df8['shift']());}};_0x460ffb(++_0x12e0a8);}(_0x656f,0x10e));var _0xf656=function(_0x363296,_0x2220ed){_0x363296=_0x363296-0x0;var _0x358402=_0x656f[_0x363296];return _0x358402;};'use strict';var client=require(_0xf656('0x0'));exports[_0xf656('0x1')]=function(_0x2da918,_0x2891d9){return client[_0xf656('0x2')](_0xf656('0x3'),{'body':_0x2891d9,'options':{'where':{'AttachmentId':_0x2da918}},'log':_0xf656('0x3')});};
\ No newline at end of file
+var _0xa549=['../client','Request','UpdateFaxMessage'];(function(_0x5c45ac,_0x16b7cd){var _0x4b82cd=function(_0x533117){while(--_0x533117){_0x5c45ac['push'](_0x5c45ac['shift']());}};_0x4b82cd(++_0x16b7cd);}(_0xa549,0x1cb));var _0x9a54=function(_0x364da4,_0x193338){_0x364da4=_0x364da4-0x0;var _0x7046ae=_0xa549[_0x364da4];return _0x7046ae;};'use strict';var client=require(_0x9a54('0x0'));exports['update']=function(_0x52513f,_0x35ac28){return client[_0x9a54('0x1')](_0x9a54('0x2'),{'body':_0x35ac28,'options':{'where':{'AttachmentId':_0x52513f}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index 624d042..e04d448 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd4=['keyContent','Fields','nameField','customField','Tag','Tags','Request','GetDeskAccount','name','username','type','DeskConfiguration','Configurations','DeskField','Subjects','content','Variable','Descriptions'];(function(_0x37c702,_0xc57b5f){var _0x2e617f=function(_0x26f3e9){while(--_0x26f3e9){_0x37c702['push'](_0x37c702['shift']());}};_0x2e617f(++_0xc57b5f);}(_0xdbd4,0x102));var _0x4dbd=function(_0x2936ad,_0x21bdf1){_0x2936ad=_0x2936ad-0x0;var _0xc68e8b=_0xdbd4[_0x2936ad];return _0xc68e8b;};'use strict';var client=require('../../client');exports['getDeskAccounts']=function(){return function(_0x5d45d8){return client[_0x4dbd('0x0')](_0x4dbd('0x1'),{'options':{'raw':![],'attributes':['id',_0x4dbd('0x2'),'description',_0x4dbd('0x3'),'password','remoteUri','authType',_0x4dbd('0x4'),'serverUrl'],'include':[{'model':_0x4dbd('0x5'),'as':_0x4dbd('0x6'),'attributes':['id',_0x4dbd('0x2')],'include':[{'model':_0x4dbd('0x7'),'as':_0x4dbd('0x8'),'attributes':['id',_0x4dbd('0x4'),_0x4dbd('0x9'),'variableName'],'include':[{'model':_0x4dbd('0xa'),'as':_0x4dbd('0xa'),'attributes':['id','name']}]},{'model':_0x4dbd('0x7'),'as':_0x4dbd('0xb'),'attributes':['id','type',_0x4dbd('0x9'),'key','keyType',_0x4dbd('0xc'),'variableName'],'include':[{'model':'Variable','as':_0x4dbd('0xa'),'attributes':['id',_0x4dbd('0x2')]}]},{'model':'DeskField','as':_0x4dbd('0xd'),'attributes':['id',_0x4dbd('0x4'),_0x4dbd('0x9'),'idField',_0x4dbd('0xe'),_0x4dbd('0xf'),'variableName'],'include':[{'model':_0x4dbd('0xa'),'as':_0x4dbd('0xa'),'attributes':['id',_0x4dbd('0x2')]}]},{'model':_0x4dbd('0x10'),'as':_0x4dbd('0x11'),'attributes':['id',_0x4dbd('0x2')]}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
+var _0xd545=['Variable','Descriptions','keyContent','Fields','idField','customField','Tag','../../client','Request','GetDeskAccount','name','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName'];(function(_0x35e768,_0xbe0d60){var _0x58cc5f=function(_0x1b12fb){while(--_0x1b12fb){_0x35e768['push'](_0x35e768['shift']());}};_0x58cc5f(++_0xbe0d60);}(_0xd545,0x1b7));var _0x5d54=function(_0x36abc7,_0x46331c){_0x36abc7=_0x36abc7-0x0;var _0x1ad18f=_0xd545[_0x36abc7];return _0x1ad18f;};'use strict';var client=require(_0x5d54('0x0'));exports['getDeskAccounts']=function(){return function(_0x2d93a6){return client[_0x5d54('0x1')](_0x5d54('0x2'),{'options':{'raw':![],'attributes':['id',_0x5d54('0x3'),_0x5d54('0x4'),_0x5d54('0x5'),_0x5d54('0x6'),_0x5d54('0x7'),_0x5d54('0x8'),_0x5d54('0x9'),_0x5d54('0xa')],'include':[{'model':_0x5d54('0xb'),'as':_0x5d54('0xc'),'attributes':['id','name'],'include':[{'model':_0x5d54('0xd'),'as':_0x5d54('0xe'),'attributes':['id',_0x5d54('0x9'),_0x5d54('0xf'),_0x5d54('0x10')],'include':[{'model':_0x5d54('0x11'),'as':_0x5d54('0x11'),'attributes':['id',_0x5d54('0x3')]}]},{'model':_0x5d54('0xd'),'as':_0x5d54('0x12'),'attributes':['id',_0x5d54('0x9'),_0x5d54('0xf'),'key','keyType',_0x5d54('0x13'),_0x5d54('0x10')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x5d54('0xd'),'as':_0x5d54('0x14'),'attributes':['id','type',_0x5d54('0xf'),_0x5d54('0x15'),'nameField',_0x5d54('0x16'),_0x5d54('0x10')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x5d54('0x17'),'as':'Tags','attributes':['id',_0x5d54('0x3')]}]}]},'log':_0x5d54('0x2')});};};
\ No newline at end of file
index 014f530..0249b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63e=['clientSecret','description','Dynamics365Configuration','ticketType','moduleCreate','Dynamics365Field','Subjects','type','content','Variable','key','keyType','keyContent','variableName','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId'];(function(_0x4893ad,_0x1cc0e5){var _0x574ed0=function(_0x4fe9ae){while(--_0x4fe9ae){_0x4893ad['push'](_0x4893ad['shift']());}};_0x574ed0(++_0x1cc0e5);}(_0xe63e,0x1a6));var _0xee63=function(_0x505b77,_0x3e632a){_0x505b77=_0x505b77-0x0;var _0x132027=_0xe63e[_0x505b77];return _0x132027;};'use strict';var client=require(_0xee63('0x0'));exports[_0xee63('0x1')]=function(){return function(_0x243761){return client[_0xee63('0x2')](_0xee63('0x3'),{'options':{'raw':![],'attributes':['id',_0xee63('0x4'),_0xee63('0x5'),_0xee63('0x6'),_0xee63('0x7'),_0xee63('0x8'),_0xee63('0x9'),_0xee63('0xa'),'serverUrl',_0xee63('0xb')],'include':[{'model':_0xee63('0xc'),'as':'Configurations','attributes':['id',_0xee63('0x4'),_0xee63('0xd'),_0xee63('0xe')],'include':[{'model':_0xee63('0xf'),'as':_0xee63('0x10'),'attributes':['id',_0xee63('0x11'),_0xee63('0x12'),'variableName'],'include':[{'model':_0xee63('0x13'),'as':_0xee63('0x13'),'attributes':['id',_0xee63('0x4')]}]},{'model':_0xee63('0xf'),'as':'Descriptions','attributes':['id',_0xee63('0x11'),_0xee63('0x12'),_0xee63('0x14'),_0xee63('0x15'),_0xee63('0x16'),_0xee63('0x17')],'include':[{'model':_0xee63('0x13'),'as':_0xee63('0x13'),'attributes':['id','name']}]},{'model':_0xee63('0xf'),'as':'Fields','attributes':['id',_0xee63('0x11'),_0xee63('0x12'),_0xee63('0x18'),_0xee63('0x19'),_0xee63('0x1a'),_0xee63('0x17')],'include':[{'model':_0xee63('0x13'),'as':_0xee63('0x13'),'attributes':['id',_0xee63('0x4')]}]}]}]},'log':_0xee63('0x3')});};};
\ No newline at end of file
+var _0xc38c=['content','variableName','Variable','Descriptions','key','keyType','keyContent','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','remoteUri','tenantId','clientId','clientSecret','serverUrl','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','type'];(function(_0x2da20e,_0x57d8c9){var _0x2b5659=function(_0x51bd13){while(--_0x51bd13){_0x2da20e['push'](_0x2da20e['shift']());}};_0x2b5659(++_0x57d8c9);}(_0xc38c,0xc7));var _0xcc38=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc38c[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xcc38('0x0'));exports[_0xcc38('0x1')]=function(){return function(_0x1500ef){return client[_0xcc38('0x2')](_0xcc38('0x3'),{'options':{'raw':![],'attributes':['id',_0xcc38('0x4'),_0xcc38('0x5'),'password',_0xcc38('0x6'),_0xcc38('0x7'),_0xcc38('0x8'),_0xcc38('0x9'),_0xcc38('0xa'),'description'],'include':[{'model':_0xcc38('0xb'),'as':_0xcc38('0xc'),'attributes':['id',_0xcc38('0x4'),_0xcc38('0xd'),'moduleCreate'],'include':[{'model':_0xcc38('0xe'),'as':_0xcc38('0xf'),'attributes':['id',_0xcc38('0x10'),_0xcc38('0x11'),_0xcc38('0x12')],'include':[{'model':_0xcc38('0x13'),'as':_0xcc38('0x13'),'attributes':['id',_0xcc38('0x4')]}]},{'model':_0xcc38('0xe'),'as':_0xcc38('0x14'),'attributes':['id','type',_0xcc38('0x11'),_0xcc38('0x15'),_0xcc38('0x16'),_0xcc38('0x17'),'variableName'],'include':[{'model':_0xcc38('0x13'),'as':'Variable','attributes':['id',_0xcc38('0x4')]}]},{'model':_0xcc38('0xe'),'as':'Fields','attributes':['id',_0xcc38('0x10'),_0xcc38('0x11'),_0xcc38('0x18'),_0xcc38('0x19'),_0xcc38('0x1a'),_0xcc38('0x12')],'include':[{'model':_0xcc38('0x13'),'as':'Variable','attributes':['id',_0xcc38('0x4')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index e6d6f3e..44bbffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af8=['apiKey','serverUrl','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','variableName','Variable','Descriptions','type','content','key','keyContent','Fields','nameField','GetFreshdeskAccount','name','username'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4af8,0x1ad));var _0x84af=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x4af8[_0x5317b5];return _0x3b7ce2;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x5792b9){return client['Request'](_0x84af('0x0'),{'options':{'raw':![],'attributes':['id',_0x84af('0x1'),_0x84af('0x2'),_0x84af('0x3'),'remoteUri',_0x84af('0x4')],'include':[{'model':_0x84af('0x5'),'as':'Configurations','attributes':['id',_0x84af('0x1')],'include':[{'model':_0x84af('0x6'),'attributes':['id','name']},{'model':_0x84af('0x7'),'as':_0x84af('0x8'),'attributes':['id','type','content',_0x84af('0x9')],'include':[{'model':_0x84af('0xa'),'as':'Variable','attributes':['id',_0x84af('0x1')]}]},{'model':'FreshdeskField','as':_0x84af('0xb'),'attributes':['id',_0x84af('0xc'),_0x84af('0xd'),_0x84af('0xe'),'keyType',_0x84af('0xf'),'variableName'],'include':[{'model':_0x84af('0xa'),'as':_0x84af('0xa'),'attributes':['id','name']}]},{'model':_0x84af('0x7'),'as':_0x84af('0x10'),'attributes':['id',_0x84af('0xc'),_0x84af('0xd'),'idField',_0x84af('0x11'),'customField',_0x84af('0x9')],'include':[{'model':_0x84af('0xa'),'as':'Variable','attributes':['id',_0x84af('0x1')]}]}]}]},'log':_0x84af('0x0')});};};
\ No newline at end of file
+var _0xb84e=['nameField','customField','getFreshdeskAccounts','Request','GetFreshdeskAccount','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','name','FreshdeskField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','idField'];(function(_0x3364fc,_0x559233){var _0x10df36=function(_0x28d38d){while(--_0x28d38d){_0x3364fc['push'](_0x3364fc['shift']());}};_0x10df36(++_0x559233);}(_0xb84e,0xbf));var _0xeb84=function(_0x3ceb54,_0x5bddfd){_0x3ceb54=_0x3ceb54-0x0;var _0x26d8a6=_0xb84e[_0x3ceb54];return _0x26d8a6;};'use strict';var client=require('../../client');exports[_0xeb84('0x0')]=function(){return function(_0x6bfa05){return client[_0xeb84('0x1')](_0xeb84('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0xeb84('0x3'),_0xeb84('0x4'),_0xeb84('0x5')],'include':[{'model':_0xeb84('0x6'),'as':_0xeb84('0x7'),'attributes':['id',_0xeb84('0x8')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0xeb84('0x9'),'as':'Subjects','attributes':['id',_0xeb84('0xa'),_0xeb84('0xb'),_0xeb84('0xc')],'include':[{'model':_0xeb84('0xd'),'as':'Variable','attributes':['id',_0xeb84('0x8')]}]},{'model':_0xeb84('0x9'),'as':_0xeb84('0xe'),'attributes':['id',_0xeb84('0xa'),_0xeb84('0xb'),_0xeb84('0xf'),_0xeb84('0x10'),_0xeb84('0x11'),_0xeb84('0xc')],'include':[{'model':_0xeb84('0xd'),'as':_0xeb84('0xd'),'attributes':['id',_0xeb84('0x8')]}]},{'model':_0xeb84('0x9'),'as':'Fields','attributes':['id','type',_0xeb84('0xb'),_0xeb84('0x12'),_0xeb84('0x13'),_0xeb84('0x14'),_0xeb84('0xc')],'include':[{'model':_0xeb84('0xd'),'as':'Variable','attributes':['id',_0xeb84('0x8')]}]}]}]},'log':_0xeb84('0x2')});};};
\ No newline at end of file
index 47e3ab0..6cb9014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e8=['Descriptions','key','keyType','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','GetFreshsalesAccount','username','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName','Variable','name'];(function(_0x334fea,_0x1f1e18){var _0x3c5829=function(_0x4fd6ac){while(--_0x4fd6ac){_0x334fea['push'](_0x334fea['shift']());}};_0x3c5829(++_0x1f1e18);}(_0x07e8,0x10f));var _0x807e=function(_0x3e26f1,_0x56d6a4){_0x3e26f1=_0x3e26f1-0x0;var _0x1fa4d7=_0x07e8[_0x3e26f1];return _0x1fa4d7;};'use strict';var client=require(_0x807e('0x0'));exports[_0x807e('0x1')]=function(){return function(_0x25e72e){return client['Request'](_0x807e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x807e('0x3'),'apiKey','remoteUri',_0x807e('0x4')],'include':[{'model':_0x807e('0x5'),'as':_0x807e('0x6'),'attributes':['id','name'],'include':[{'model':_0x807e('0x7'),'as':_0x807e('0x8'),'attributes':['id',_0x807e('0x9'),_0x807e('0xa'),_0x807e('0xb')],'include':[{'model':'Variable','as':_0x807e('0xc'),'attributes':['id',_0x807e('0xd')]}]},{'model':_0x807e('0x7'),'as':_0x807e('0xe'),'attributes':['id',_0x807e('0x9'),_0x807e('0xa'),_0x807e('0xf'),_0x807e('0x10'),_0x807e('0x11'),_0x807e('0xb')],'include':[{'model':_0x807e('0xc'),'as':_0x807e('0xc'),'attributes':['id',_0x807e('0xd')]}]}]}]},'log':_0x807e('0x12')});};};
\ No newline at end of file
+var _0xc9c3=['apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Subjects','type','content','variableName','Variable','FreshsalesField','Descriptions','key','keyType','GetFreshsalesccount','GetFreshsalesAccount','name','username'];(function(_0x589076,_0x24588e){var _0x4b941f=function(_0x44a02c){while(--_0x44a02c){_0x589076['push'](_0x589076['shift']());}};_0x4b941f(++_0x24588e);}(_0xc9c3,0x96));var _0x3c9c=function(_0x34f4fd,_0x44f923){_0x34f4fd=_0x34f4fd-0x0;var _0x12e569=_0xc9c3[_0x34f4fd];return _0x12e569;};'use strict';var client=require('../../client');exports['getFreshsalesAccounts']=function(){return function(_0x3fcbeb){return client['Request'](_0x3c9c('0x0'),{'options':{'raw':![],'attributes':['id',_0x3c9c('0x1'),_0x3c9c('0x2'),_0x3c9c('0x3'),_0x3c9c('0x4'),_0x3c9c('0x5')],'include':[{'model':_0x3c9c('0x6'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'FreshsalesField','as':_0x3c9c('0x7'),'attributes':['id',_0x3c9c('0x8'),_0x3c9c('0x9'),_0x3c9c('0xa')],'include':[{'model':_0x3c9c('0xb'),'as':_0x3c9c('0xb'),'attributes':['id',_0x3c9c('0x1')]}]},{'model':_0x3c9c('0xc'),'as':_0x3c9c('0xd'),'attributes':['id',_0x3c9c('0x8'),'content',_0x3c9c('0xe'),_0x3c9c('0xf'),'keyContent',_0x3c9c('0xa')],'include':[{'model':'Variable','as':_0x3c9c('0xb'),'attributes':['id',_0x3c9c('0x1')]}]}]}]},'log':_0x3c9c('0x10')});};};
\ No newline at end of file
index ed7e690..4632b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf682=['moduleSearch','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','GetSalesforceAccount','../../client','getSalesforceAccounts','Request','username','password','remoteUri','clientId','securityToken','serverUrl','type','SalesforceConfiguration','name'];(function(_0x57daed,_0xc0b6f0){var _0x4a45b3=function(_0x5d7fb5){while(--_0x5d7fb5){_0x57daed['push'](_0x57daed['shift']());}};_0x4a45b3(++_0xc0b6f0);}(_0xf682,0x12f));var _0x2f68=function(_0x5b947f,_0x7ea974){_0x5b947f=_0x5b947f-0x0;var _0x4c5aa1=_0xf682[_0x5b947f];return _0x4c5aa1;};'use strict';var client=require(_0x2f68('0x0'));exports[_0x2f68('0x1')]=function(){return function(_0x21557c){return client[_0x2f68('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id','name',_0x2f68('0x3'),_0x2f68('0x4'),_0x2f68('0x5'),_0x2f68('0x6'),'clientSecret',_0x2f68('0x7'),_0x2f68('0x8'),_0x2f68('0x9')],'include':[{'model':_0x2f68('0xa'),'as':'Configurations','attributes':['id',_0x2f68('0xb'),_0x2f68('0xc'),'moduleCreate','ticketType','leadId','additionalSearchAccount',_0x2f68('0xd'),_0x2f68('0xe')],'include':[{'model':_0x2f68('0xf'),'as':_0x2f68('0x10'),'include':[{'model':_0x2f68('0x11'),'as':_0x2f68('0x11'),'attributes':['id',_0x2f68('0xb')]}]},{'model':_0x2f68('0xf'),'as':_0x2f68('0x12'),'include':[{'model':_0x2f68('0x11'),'as':_0x2f68('0x11'),'attributes':['id',_0x2f68('0xb')]}]},{'model':_0x2f68('0xf'),'as':_0x2f68('0x13'),'include':[{'model':_0x2f68('0x11'),'as':_0x2f68('0x11'),'attributes':['id','name']}]}]}]},'log':_0x2f68('0x14')});};};
\ No newline at end of file
+var _0xb7de=['SalesforceConfiguration','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','additionalSearchLead','SalesforceField','Variable','Descriptions','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username','password','remoteUri','clientSecret','securityToken','serverUrl','type'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb7de,0xc7));var _0xeb7d=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xb7de[_0x47a7d0];return _0xb9bd08;};'use strict';var client=require(_0xeb7d('0x0'));exports[_0xeb7d('0x1')]=function(){return function(_0x60214){return client['Request'](_0xeb7d('0x2'),{'options':{'raw':![],'attributes':['id',_0xeb7d('0x3'),_0xeb7d('0x4'),_0xeb7d('0x5'),_0xeb7d('0x6'),'clientId',_0xeb7d('0x7'),_0xeb7d('0x8'),_0xeb7d('0x9'),_0xeb7d('0xa')],'include':[{'model':_0xeb7d('0xb'),'as':'Configurations','attributes':['id','name',_0xeb7d('0xc'),_0xeb7d('0xd'),_0xeb7d('0xe'),_0xeb7d('0xf'),'additionalSearchAccount',_0xeb7d('0x10'),_0xeb7d('0x11')],'include':[{'model':_0xeb7d('0x12'),'as':'Subjects','include':[{'model':'Variable','as':_0xeb7d('0x13'),'attributes':['id','name']}]},{'model':_0xeb7d('0x12'),'as':_0xeb7d('0x14'),'include':[{'model':_0xeb7d('0x13'),'as':_0xeb7d('0x13'),'attributes':['id',_0xeb7d('0x3')]}]},{'model':_0xeb7d('0x12'),'as':'Fields','include':[{'model':_0xeb7d('0x13'),'as':_0xeb7d('0x13'),'attributes':['id',_0xeb7d('0x3')]}]}]}]},'log':_0xeb7d('0x2')});};};
\ No newline at end of file
index 51f5c92..1de7805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['ServicenowField','content','variableName','Variable','Descriptions','key','keyType','Fields','type','idField','nameField','GetServicenowkAccount','getServicenowAccounts','Request','description','password','email','remoteUri','ServicenowConfiguration','Configurations','name'];(function(_0x2cc0b3,_0x120bf1){var _0x1667ef=function(_0x3abcb4){while(--_0x3abcb4){_0x2cc0b3['push'](_0x2cc0b3['shift']());}};_0x1667ef(++_0x120bf1);}(_0x6d38,0x1ef));var _0x86d3=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x6d38[_0x3947c9];return _0x2e7871;};'use strict';var client=require('../../client');exports[_0x86d3('0x0')]=function(){return function(_0x4c9c06){return client[_0x86d3('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id','name',_0x86d3('0x2'),'username',_0x86d3('0x3'),_0x86d3('0x4'),_0x86d3('0x5'),'serverUrl'],'include':[{'model':_0x86d3('0x6'),'as':_0x86d3('0x7'),'attributes':['id',_0x86d3('0x8')],'include':[{'model':_0x86d3('0x9'),'as':'Subjects','attributes':['id','type',_0x86d3('0xa'),_0x86d3('0xb')],'include':[{'model':_0x86d3('0xc'),'as':'Variable','attributes':['id','name']}]},{'model':_0x86d3('0x9'),'as':_0x86d3('0xd'),'attributes':['id','type','content',_0x86d3('0xe'),_0x86d3('0xf'),'keyContent',_0x86d3('0xb')],'include':[{'model':'Variable','as':_0x86d3('0xc'),'attributes':['id',_0x86d3('0x8')]}]},{'model':_0x86d3('0x9'),'as':_0x86d3('0x10'),'attributes':['id',_0x86d3('0x11'),_0x86d3('0xa'),_0x86d3('0x12'),_0x86d3('0x13'),'customField',_0x86d3('0xb')],'include':[{'model':_0x86d3('0xc'),'as':_0x86d3('0xc'),'attributes':['id',_0x86d3('0x8')]}]}]}]},'log':_0x86d3('0x14')});};};
\ No newline at end of file
+var _0x1967=['description','username','password','email','remoteUri','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyType','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name'];(function(_0x5d49c2,_0x5deca2){var _0x100ddb=function(_0x429f0e){while(--_0x429f0e){_0x5d49c2['push'](_0x5d49c2['shift']());}};_0x100ddb(++_0x5deca2);}(_0x1967,0x173));var _0x7196=function(_0x865501,_0x468617){_0x865501=_0x865501-0x0;var _0xf77043=_0x1967[_0x865501];return _0xf77043;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7'),_0x7196('0x8'),'serverUrl'],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0xb'),'as':_0x7196('0xc'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':'Descriptions','attributes':['id','type',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0x12'),_0x7196('0x13'),_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':_0x7196('0x14'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0x15'),_0x7196('0x16'),_0x7196('0x17'),_0x7196('0xe')],'include':[{'model':'Variable','as':_0x7196('0xf'),'attributes':['id','name']}]}]}]},'log':_0x7196('0x18')});};};
\ No newline at end of file
index 5149716..9ff765a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['serverUrl','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','name','Fields','idField','nameField','Request','GetSugarcrmAccount','password','remoteUri'];(function(_0x214405,_0xd3d5d9){var _0x1a94b4=function(_0x1e6dbb){while(--_0x1e6dbb){_0x214405['push'](_0x214405['shift']());}};_0x1a94b4(++_0xd3d5d9);}(_0x1a85,0x178));var _0x51a8=function(_0xfbc3dc,_0x3a7830){_0xfbc3dc=_0xfbc3dc-0x0;var _0x48c818=_0x1a85[_0xfbc3dc];return _0x48c818;};'use strict';var client=require('../../client');exports['getSugarcrmAccounts']=function(){return function(_0x305f18){return client[_0x51a8('0x0')](_0x51a8('0x1'),{'options':{'raw':![],'attributes':['id','name','username',_0x51a8('0x2'),_0x51a8('0x3'),_0x51a8('0x4')],'include':[{'model':'SugarcrmConfiguration','as':_0x51a8('0x5'),'attributes':['id','name'],'include':[{'model':_0x51a8('0x6'),'as':'Subjects','attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),'variableName'],'include':[{'model':_0x51a8('0x9'),'as':'Variable','attributes':['id','name']}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0xa'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0xb'),_0x51a8('0xc'),_0x51a8('0xd'),_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id',_0x51a8('0xf')]}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0x10'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0x11'),_0x51a8('0x12'),'customField',_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id','name']}]}]}]},'log':_0x51a8('0x1')});};};
\ No newline at end of file
+var _0x14a0=['variableName','key','keyContent','Variable','SugarcrmField','Fields','idField','nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','SugarcrmConfiguration','Configurations','type','content'];(function(_0x23ec06,_0x561142){var _0x2831d4=function(_0x3802bc){while(--_0x3802bc){_0x23ec06['push'](_0x23ec06['shift']());}};_0x2831d4(++_0x561142);}(_0x14a0,0x8e));var _0x014a=function(_0x4346ae,_0x588646){_0x4346ae=_0x4346ae-0x0;var _0x412649=_0x14a0[_0x4346ae];return _0x412649;};'use strict';var client=require('../../client');exports[_0x014a('0x0')]=function(){return function(_0x451138){return client[_0x014a('0x1')](_0x014a('0x2'),{'options':{'raw':![],'attributes':['id',_0x014a('0x3'),_0x014a('0x4'),_0x014a('0x5'),'remoteUri','serverUrl'],'include':[{'model':_0x014a('0x6'),'as':_0x014a('0x7'),'attributes':['id',_0x014a('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x014a('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id','type','content',_0x014a('0xb'),'keyType',_0x014a('0xc'),_0x014a('0xa')],'include':[{'model':'Variable','as':_0x014a('0xd'),'attributes':['id',_0x014a('0x3')]}]},{'model':_0x014a('0xe'),'as':_0x014a('0xf'),'attributes':['id',_0x014a('0x8'),_0x014a('0x9'),_0x014a('0x10'),_0x014a('0x11'),_0x014a('0x12'),_0x014a('0xa')],'include':[{'model':_0x014a('0xd'),'as':_0x014a('0xd'),'attributes':['id','name']}]}]}]},'log':_0x014a('0x2')});};};
\ No newline at end of file
index 3e861ea..72edecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5bb=['VtigerField','Subjects','type','variableName','Variable','Descriptions','key','keyContent','Fields','content','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','remoteUri','Configurations'];(function(_0x15a4bc,_0x59bd7a){var _0x206fb6=function(_0x232372){while(--_0x232372){_0x15a4bc['push'](_0x15a4bc['shift']());}};_0x206fb6(++_0x59bd7a);}(_0xc5bb,0x83));var _0xbc5b=function(_0x367b26,_0x18ae18){_0x367b26=_0x367b26-0x0;var _0x2dd7a0=_0xc5bb[_0x367b26];return _0x2dd7a0;};'use strict';var client=require(_0xbc5b('0x0'));exports[_0xbc5b('0x1')]=function(){return function(_0x32d8eb){return client[_0xbc5b('0x2')](_0xbc5b('0x3'),{'options':{'raw':![],'attributes':['id',_0xbc5b('0x4'),_0xbc5b('0x5'),_0xbc5b('0x6'),'accessKey',_0xbc5b('0x7'),'serverUrl'],'include':[{'model':'VtigerConfiguration','as':_0xbc5b('0x8'),'attributes':['id','name'],'include':[{'model':_0xbc5b('0x9'),'as':_0xbc5b('0xa'),'attributes':['id',_0xbc5b('0xb'),'content',_0xbc5b('0xc')],'include':[{'model':_0xbc5b('0xd'),'as':_0xbc5b('0xd'),'attributes':['id',_0xbc5b('0x4')]}]},{'model':_0xbc5b('0x9'),'as':_0xbc5b('0xe'),'attributes':['id','type','content',_0xbc5b('0xf'),'keyType',_0xbc5b('0x10'),_0xbc5b('0xc')],'include':[{'model':_0xbc5b('0xd'),'as':_0xbc5b('0xd'),'attributes':['id',_0xbc5b('0x4')]}]},{'model':_0xbc5b('0x9'),'as':_0xbc5b('0x11'),'attributes':['id',_0xbc5b('0xb'),_0xbc5b('0x12'),'idField','nameField',_0xbc5b('0x13'),_0xbc5b('0xc')],'include':[{'model':'Variable','as':_0xbc5b('0xd'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0xec4b=['accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','Fields','idField','nameField','customField','getVtigerAccounts','GetVtigerAccount','name','description','username'];(function(_0x511723,_0x4db8e2){var _0x25add0=function(_0x276373){while(--_0x276373){_0x511723['push'](_0x511723['shift']());}};_0x25add0(++_0x4db8e2);}(_0xec4b,0x103));var _0xbec4=function(_0x1ccd89,_0x234ee0){_0x1ccd89=_0x1ccd89-0x0;var _0x272926=_0xec4b[_0x1ccd89];return _0x272926;};'use strict';var client=require('../../client');exports[_0xbec4('0x0')]=function(){return function(_0x4a5820){return client['Request'](_0xbec4('0x1'),{'options':{'raw':![],'attributes':['id',_0xbec4('0x2'),_0xbec4('0x3'),_0xbec4('0x4'),_0xbec4('0x5'),_0xbec4('0x6'),_0xbec4('0x7')],'include':[{'model':_0xbec4('0x8'),'as':_0xbec4('0x9'),'attributes':['id',_0xbec4('0x2')],'include':[{'model':_0xbec4('0xa'),'as':_0xbec4('0xb'),'attributes':['id',_0xbec4('0xc'),_0xbec4('0xd'),_0xbec4('0xe')],'include':[{'model':_0xbec4('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':'VtigerField','as':_0xbec4('0x10'),'attributes':['id',_0xbec4('0xc'),'content',_0xbec4('0x11'),'keyType','keyContent',_0xbec4('0xe')],'include':[{'model':_0xbec4('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':_0xbec4('0xa'),'as':_0xbec4('0x12'),'attributes':['id',_0xbec4('0xc'),'content',_0xbec4('0x13'),_0xbec4('0x14'),_0xbec4('0x15'),'variableName'],'include':[{'model':_0xbec4('0xf'),'as':_0xbec4('0xf'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index ce61e64..8745072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc049=['../../client','getZendeskAccounts','Request','GetZendeskAccount','username','password','token','remoteUri','authType','ZendeskConfiguration','Tag','name','ZendeskField','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0x1a4647,_0x240def){var _0x1e3427=function(_0x51ec4a){while(--_0x51ec4a){_0x1a4647['push'](_0x1a4647['shift']());}};_0x1e3427(++_0x240def);}(_0xc049,0xa8));var _0x9c04=function(_0x2bdd5f,_0xed7935){_0x2bdd5f=_0x2bdd5f-0x0;var _0x213eb1=_0xc049[_0x2bdd5f];return _0x213eb1;};'use strict';var client=require(_0x9c04('0x0'));exports[_0x9c04('0x1')]=function(){return function(_0x3c551a){return client[_0x9c04('0x2')](_0x9c04('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x9c04('0x4'),_0x9c04('0x5'),_0x9c04('0x6'),_0x9c04('0x7'),_0x9c04('0x8'),'serverUrl','type'],'include':[{'model':_0x9c04('0x9'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x9c04('0xa'),'attributes':['id',_0x9c04('0xb')]},{'model':_0x9c04('0xc'),'as':'Subjects','attributes':['id',_0x9c04('0xd'),_0x9c04('0xe'),_0x9c04('0xf')],'include':[{'model':_0x9c04('0x10'),'as':_0x9c04('0x10'),'attributes':['id',_0x9c04('0xb')]}]},{'model':'ZendeskField','as':'Descriptions','attributes':['id','type',_0x9c04('0xe'),_0x9c04('0x11'),_0x9c04('0x12'),_0x9c04('0x13'),_0x9c04('0xf')],'include':[{'model':_0x9c04('0x10'),'as':_0x9c04('0x10'),'attributes':['id',_0x9c04('0xb')]}]},{'model':_0x9c04('0xc'),'as':_0x9c04('0x14'),'attributes':['id',_0x9c04('0xd'),'content',_0x9c04('0x15'),_0x9c04('0x16'),_0x9c04('0x17'),'variableName'],'include':[{'model':_0x9c04('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x9c04('0x3')});};};
\ No newline at end of file
+var _0xcfca=['serverUrl','type','ZendeskConfiguration','Tag','Subjects','content','variableName','Variable','ZendeskField','Descriptions','key','keyType','keyContent','Fields','customField','GetZendeskAccount','../../client','getZendeskAccounts','name','username','password','remoteUri','authType'];(function(_0x4b06f1,_0x269f48){var _0x2d33a9=function(_0x5ac8b9){while(--_0x5ac8b9){_0x4b06f1['push'](_0x4b06f1['shift']());}};_0x2d33a9(++_0x269f48);}(_0xcfca,0x1ae));var _0xacfc=function(_0x5c9e46,_0x479abe){_0x5c9e46=_0x5c9e46-0x0;var _0x84b55f=_0xcfca[_0x5c9e46];return _0x84b55f;};'use strict';var client=require(_0xacfc('0x0'));exports[_0xacfc('0x1')]=function(){return function(_0xff5447){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0xacfc('0x2'),_0xacfc('0x3'),_0xacfc('0x4'),'token',_0xacfc('0x5'),_0xacfc('0x6'),_0xacfc('0x7'),_0xacfc('0x8')],'include':[{'model':_0xacfc('0x9'),'as':'Configurations','attributes':['id',_0xacfc('0x2')],'include':[{'model':_0xacfc('0xa'),'attributes':['id',_0xacfc('0x2')]},{'model':'ZendeskField','as':_0xacfc('0xb'),'attributes':['id',_0xacfc('0x8'),_0xacfc('0xc'),_0xacfc('0xd')],'include':[{'model':_0xacfc('0xe'),'as':_0xacfc('0xe'),'attributes':['id',_0xacfc('0x2')]}]},{'model':_0xacfc('0xf'),'as':_0xacfc('0x10'),'attributes':['id',_0xacfc('0x8'),_0xacfc('0xc'),_0xacfc('0x11'),_0xacfc('0x12'),_0xacfc('0x13'),'variableName'],'include':[{'model':_0xacfc('0xe'),'as':_0xacfc('0xe'),'attributes':['id',_0xacfc('0x2')]}]},{'model':_0xacfc('0xf'),'as':_0xacfc('0x14'),'attributes':['id','type',_0xacfc('0xc'),'idField','nameField',_0xacfc('0x15'),_0xacfc('0xd')],'include':[{'model':_0xacfc('0xe'),'as':_0xacfc('0xe'),'attributes':['id','name']}]}]}]},'log':_0xacfc('0x16')});};};
\ No newline at end of file
index eb0a6b5..7855860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10de=['GetZohoAccount','name','description','host','zone','code','refreshToken','ZohoConfiguration','Configurations','moduleSearch','ZohoField','Subjects','type','content','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client','getZohoAccounts','Request'];(function(_0xe80e5c,_0x38e90a){var _0x2bff61=function(_0x29203e){while(--_0x29203e){_0xe80e5c['push'](_0xe80e5c['shift']());}};_0x2bff61(++_0x38e90a);}(_0x10de,0x129));var _0xe10d=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x10de[_0x4e676e];return _0x336a3c;};'use strict';var client=require(_0xe10d('0x0'));exports[_0xe10d('0x1')]=function(){return function(_0x39d073){return client[_0xe10d('0x2')](_0xe10d('0x3'),{'options':{'raw':![],'attributes':['id',_0xe10d('0x4'),_0xe10d('0x5'),_0xe10d('0x6'),_0xe10d('0x7'),'clientId','clientSecret','serverUrl',_0xe10d('0x8'),_0xe10d('0x9')],'include':[{'model':_0xe10d('0xa'),'as':_0xe10d('0xb'),'attributes':['id',_0xe10d('0x4'),'moduleCreate',_0xe10d('0xc'),_0xe10d('0x5')],'include':[{'model':_0xe10d('0xd'),'as':_0xe10d('0xe'),'attributes':['id',_0xe10d('0xf'),_0xe10d('0x10'),'variableName'],'include':[{'model':_0xe10d('0x11'),'as':_0xe10d('0x11'),'attributes':['id',_0xe10d('0x4')]}]},{'model':_0xe10d('0xd'),'as':_0xe10d('0x12'),'attributes':['id',_0xe10d('0xf'),_0xe10d('0x10'),_0xe10d('0x13'),_0xe10d('0x14'),_0xe10d('0x15'),'variableName'],'include':[{'model':_0xe10d('0x11'),'as':_0xe10d('0x11'),'attributes':['id',_0xe10d('0x4')]}]},{'model':_0xe10d('0xd'),'as':_0xe10d('0x16'),'attributes':['id',_0xe10d('0xf'),'content','idField',_0xe10d('0x17'),_0xe10d('0x18'),'variableName'],'include':[{'model':_0xe10d('0x11'),'as':_0xe10d('0x11'),'attributes':['id',_0xe10d('0x4')]}]}]}]},'log':_0xe10d('0x3')});};};
\ No newline at end of file
+var _0x0a10=['Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','nameField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host','zone','clientId','serverUrl','code','refreshToken','moduleSearch','description','ZohoField','Subjects','type','variableName'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0x0a10,0x1a9));var _0x00a1=function(_0x20c42c,_0x110411){_0x20c42c=_0x20c42c-0x0;var _0x56126c=_0x0a10[_0x20c42c];return _0x56126c;};'use strict';var client=require(_0x00a1('0x0'));exports[_0x00a1('0x1')]=function(){return function(_0x4f8b1e){return client[_0x00a1('0x2')](_0x00a1('0x3'),{'options':{'raw':![],'attributes':['id',_0x00a1('0x4'),'description',_0x00a1('0x5'),_0x00a1('0x6'),_0x00a1('0x7'),'clientSecret',_0x00a1('0x8'),_0x00a1('0x9'),_0x00a1('0xa')],'include':[{'model':'ZohoConfiguration','as':'Configurations','attributes':['id',_0x00a1('0x4'),'moduleCreate',_0x00a1('0xb'),_0x00a1('0xc')],'include':[{'model':_0x00a1('0xd'),'as':_0x00a1('0xe'),'attributes':['id',_0x00a1('0xf'),'content',_0x00a1('0x10')],'include':[{'model':_0x00a1('0x11'),'as':'Variable','attributes':['id',_0x00a1('0x4')]}]},{'model':_0x00a1('0xd'),'as':_0x00a1('0x12'),'attributes':['id',_0x00a1('0xf'),_0x00a1('0x13'),_0x00a1('0x14'),_0x00a1('0x15'),_0x00a1('0x16'),'variableName'],'include':[{'model':_0x00a1('0x11'),'as':_0x00a1('0x11'),'attributes':['id',_0x00a1('0x4')]}]},{'model':_0x00a1('0xd'),'as':_0x00a1('0x17'),'attributes':['id','type',_0x00a1('0x13'),_0x00a1('0x18'),_0x00a1('0x19'),'customField',_0x00a1('0x10')],'include':[{'model':_0x00a1('0x11'),'as':_0x00a1('0x11'),'attributes':['id',_0x00a1('0x4')]}]}]}]},'log':_0x00a1('0x3')});};};
\ No newline at end of file
index 38dae3b..761bb4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x800b=['diff','outbound','dialstring','agent','moment','util','voiceQueueReport','queuecallercompleteAt','Request','CreateMemberReport','lastAssignedTo','isNil','format','SIP/%s','interface','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime'];(function(_0x2daef6,_0xcac228){var _0x62d030=function(_0x26a7d6){while(--_0x26a7d6){_0x2daef6['push'](_0x2daef6['shift']());}};_0x62d030(++_0xcac228);}(_0x800b,0x74));var _0xb800=function(_0x337748,_0x402b05){_0x337748=_0x337748-0x0;var _0x3bb03f=_0x800b[_0x337748];return _0x3bb03f;};'use strict';var moment=require(_0xb800('0x0'));var _=require('lodash');var util=require(_0xb800('0x1'));var client=require('../client');exports[_0xb800('0x2')]=function(_0x26d18a){var _0x1137c1=_0x26d18a[_0xb800('0x3')]||_0x26d18a['queuecallerexitAt'];return client[_0xb800('0x4')](_0xb800('0x5'),{'body':{'channel':'voice','membername':_0x26d18a[_0xb800('0x6')],'interface':_[_0xb800('0x7')](_0x26d18a['interface'])?util[_0xb800('0x8')](_0xb800('0x9'),_0x26d18a[_0xb800('0x6')]):_0x26d18a[_0xb800('0xa')],'type':_0xb800('0xb'),'enterAt':_0x26d18a['queuecallerleaveAt'],'exitAt':_0x1137c1,'duration':moment(_0x1137c1)['diff'](_0x26d18a[_0xb800('0xc')],_0xb800('0xd')),'data1':_0xb800('0xe'),'data2':_0x26d18a[_0xb800('0xf')],'data3':_0x26d18a[_0xb800('0x10')],'data4':null,'data5':_0x26d18a['queue'],'role':'agent','internal':_0x26d18a[_0xb800('0x11')]?_[_0xb800('0x12')](_0x26d18a[_0xb800('0x11')]):undefined,'uniqueid':_0x26d18a[_0xb800('0x13')]},'log':_0xb800('0x5')});};exports[_0xb800('0x14')]=function(_0x1a8f5d){return client[_0xb800('0x4')](_0xb800('0x5'),{'body':{'channel':'voice','membername':_0x1a8f5d[_0xb800('0x15')],'interface':_0x1a8f5d['interface'],'type':_0xb800('0xb'),'enterAt':_0x1a8f5d[_0xb800('0x16')],'exitAt':_0x1a8f5d[_0xb800('0x17')],'duration':moment(_0x1a8f5d[_0xb800('0x17')])[_0xb800('0x18')](_0x1a8f5d[_0xb800('0x16')],_0xb800('0xd'))>=0x0?moment(_0x1a8f5d[_0xb800('0x17')])[_0xb800('0x18')](_0x1a8f5d['starttime'],_0xb800('0xd')):null,'data1':_0xb800('0x19'),'data2':_0x1a8f5d[_0xb800('0x11')],'data3':_0x1a8f5d[_0xb800('0x10')],'data4':_0x1a8f5d[_0xb800('0x1a')]||null,'role':_0xb800('0x1b'),'internal':_0x1a8f5d['accountcode']?_[_0xb800('0x12')](_0x1a8f5d['accountcode']):undefined,'uniqueid':_0x1a8f5d[_0xb800('0x13')]},'log':_0xb800('0x5')});};
\ No newline at end of file
+var _0x4e2f=['queuecallercompleteAt','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','exten','queue','accountcode','toNumber','uniqueid','voiceDialReport','Request','membername','starttime','endtime','outbound','dialstring','agent','moment','lodash','util','voiceQueueReport'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0x4e2f,0x158));var _0xf4e2=function(_0x176d34,_0x3429ac){_0x176d34=_0x176d34-0x0;var _0x1820fc=_0x4e2f[_0x176d34];return _0x1820fc;};'use strict';var moment=require(_0xf4e2('0x0'));var _=require(_0xf4e2('0x1'));var util=require(_0xf4e2('0x2'));var client=require('../client');exports[_0xf4e2('0x3')]=function(_0x418f5a){var _0x16bfe4=_0x418f5a[_0xf4e2('0x4')]||_0x418f5a['queuecallerexitAt'];return client['Request'](_0xf4e2('0x5'),{'body':{'channel':_0xf4e2('0x6'),'membername':_0x418f5a[_0xf4e2('0x7')],'interface':_[_0xf4e2('0x8')](_0x418f5a[_0xf4e2('0x9')])?util[_0xf4e2('0xa')](_0xf4e2('0xb'),_0x418f5a[_0xf4e2('0x7')]):_0x418f5a[_0xf4e2('0x9')],'type':_0xf4e2('0xc'),'enterAt':_0x418f5a[_0xf4e2('0xd')],'exitAt':_0x16bfe4,'duration':moment(_0x16bfe4)[_0xf4e2('0xe')](_0x418f5a[_0xf4e2('0xd')],_0xf4e2('0xf')),'data1':'inbound','data2':_0x418f5a['calleridnum'],'data3':_0x418f5a[_0xf4e2('0x10')],'data4':null,'data5':_0x418f5a[_0xf4e2('0x11')],'role':'agent','internal':_0x418f5a[_0xf4e2('0x12')]?_[_0xf4e2('0x13')](_0x418f5a[_0xf4e2('0x12')]):undefined,'uniqueid':_0x418f5a[_0xf4e2('0x14')]},'log':_0xf4e2('0x5')});};exports[_0xf4e2('0x15')]=function(_0x51bcdc){return client[_0xf4e2('0x16')](_0xf4e2('0x5'),{'body':{'channel':'voice','membername':_0x51bcdc[_0xf4e2('0x17')],'interface':_0x51bcdc[_0xf4e2('0x9')],'type':_0xf4e2('0xc'),'enterAt':_0x51bcdc[_0xf4e2('0x18')],'exitAt':_0x51bcdc[_0xf4e2('0x19')],'duration':moment(_0x51bcdc['endtime'])['diff'](_0x51bcdc[_0xf4e2('0x18')],'seconds')>=0x0?moment(_0x51bcdc['endtime'])[_0xf4e2('0xe')](_0x51bcdc[_0xf4e2('0x18')],'seconds'):null,'data1':_0xf4e2('0x1a'),'data2':_0x51bcdc[_0xf4e2('0x12')],'data3':_0x51bcdc[_0xf4e2('0x10')],'data4':_0x51bcdc[_0xf4e2('0x1b')]||null,'role':_0xf4e2('0x1c'),'internal':_0x51bcdc[_0xf4e2('0x12')]?_['toNumber'](_0x51bcdc[_0xf4e2('0x12')]):undefined,'uniqueid':_0x51bcdc['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
index 093fc6a..2009a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea85=['Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings','../client'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0xea85,0x1cd));var _0x5ea8=function(_0x4842ca,_0x34f54a){_0x4842ca=_0x4842ca-0x0;var _0x1da7b6=_0xea85[_0x4842ca];return _0x1da7b6;};'use strict';var client=require(_0x5ea8('0x0'));exports['getSettings']=function(){return client[_0x5ea8('0x1')](_0x5ea8('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x5ea8('0x3'),_0x5ea8('0x4')]},'log':_0x5ea8('0x5')});};
\ No newline at end of file
+var _0xea5b=['Request','previewRecallmeReminderInterval','GetSettings','../client','getSettings'];(function(_0x12d985,_0x140349){var _0x17ace0=function(_0x272be9){while(--_0x272be9){_0x12d985['push'](_0x12d985['shift']());}};_0x17ace0(++_0x140349);}(_0xea5b,0x152));var _0xbea5=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xea5b[_0x36884e];return _0x1cc367;};'use strict';var client=require(_0xbea5('0x0'));exports[_0xbea5('0x1')]=function(){return client[_0xbea5('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0xbea5('0x3')]},'log':_0xbea5('0x4')});};
\ No newline at end of file
index 7b7da18..3ab0617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac80=['../client','getTemplates','Request','GetTemplate','name'];(function(_0x8dd0dd,_0x165868){var _0x49cab2=function(_0x25654f){while(--_0x25654f){_0x8dd0dd['push'](_0x8dd0dd['shift']());}};_0x49cab2(++_0x165868);}(_0xac80,0x163));var _0x0ac8=function(_0x575a57,_0x429c42){_0x575a57=_0x575a57-0x0;var _0x370c0d=_0xac80[_0x575a57];return _0x370c0d;};'use strict';var client=require(_0x0ac8('0x0'));exports[_0x0ac8('0x1')]=function(_0x109463){return function(_0x20cb42){return client[_0x0ac8('0x2')](_0x0ac8('0x3'),{'options':{'raw':!![],'attributes':['id',_0x0ac8('0x4'),'html']},'log':_0x0ac8('0x3')});};};
\ No newline at end of file
+var _0x5158=['name','../client','getTemplates','Request','GetTemplate'];(function(_0x4c854f,_0x1f82a4){var _0x130716=function(_0x57ba43){while(--_0x57ba43){_0x4c854f['push'](_0x4c854f['shift']());}};_0x130716(++_0x1f82a4);}(_0x5158,0x1d7));var _0x8515=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x5158[_0x20ef64];return _0x3707d8;};'use strict';var client=require(_0x8515('0x0'));exports[_0x8515('0x1')]=function(_0x10d00a){return function(_0x2db657){return client[_0x8515('0x2')](_0x8515('0x3'),{'options':{'raw':!![],'attributes':['id',_0x8515('0x4'),'html']},'log':_0x8515('0x3')});};};
\ No newline at end of file
index 343de73..ed5eb45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684a=['Condition','AnyConditions','operator','action','data2','data3','data4','data5','data7','../client','getTriggers','Request','GetTrigger','name','value'];(function(_0x138c5f,_0x1d9c33){var _0x402416=function(_0x47875c){while(--_0x47875c){_0x138c5f['push'](_0x138c5f['shift']());}};_0x402416(++_0x1d9c33);}(_0x684a,0x108));var _0xa684=function(_0x3cd9a8,_0x5e1c97){_0x3cd9a8=_0x3cd9a8-0x0;var _0x3fc9e5=_0x684a[_0x3cd9a8];return _0x3fc9e5;};'use strict';var client=require(_0xa684('0x0'));exports[_0xa684('0x1')]=function(_0x3b7ea4){return function(_0x424d58){return client[_0xa684('0x2')](_0xa684('0x3'),{'options':{'raw':![],'attributes':['id',_0xa684('0x4'),'channel','status'],'include':[{'model':'Condition','as':'AllConditions','attributes':['id','field','operator',_0xa684('0x5')]},{'model':_0xa684('0x6'),'as':_0xa684('0x7'),'attributes':['id','field',_0xa684('0x8'),'value']},{'model':'Action','as':'Actions','attributes':['id',_0xa684('0x9'),'data1',_0xa684('0xa'),_0xa684('0xb'),_0xa684('0xc'),_0xa684('0xd'),'data6',_0xa684('0xe')]}]},'log':_0xa684('0x3')});};};
\ No newline at end of file
+var _0x14ca=['value','AnyConditions','Action','Actions','data1','data3','data4','data5','data6','data7','../client','getTriggers','Request','GetTrigger','name','status','Condition','AllConditions','field','operator'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0x14ca,0x96));var _0xa14c=function(_0x4ab887,_0x444031){_0x4ab887=_0x4ab887-0x0;var _0x5e54a5=_0x14ca[_0x4ab887];return _0x5e54a5;};'use strict';var client=require(_0xa14c('0x0'));exports[_0xa14c('0x1')]=function(_0x4a2f36){return function(_0x48f701){return client[_0xa14c('0x2')](_0xa14c('0x3'),{'options':{'raw':![],'attributes':['id',_0xa14c('0x4'),'channel',_0xa14c('0x5')],'include':[{'model':_0xa14c('0x6'),'as':_0xa14c('0x7'),'attributes':['id',_0xa14c('0x8'),_0xa14c('0x9'),_0xa14c('0xa')]},{'model':_0xa14c('0x6'),'as':_0xa14c('0xb'),'attributes':['id',_0xa14c('0x8'),'operator',_0xa14c('0xa')]},{'model':_0xa14c('0xc'),'as':_0xa14c('0xd'),'attributes':['id','action',_0xa14c('0xe'),'data2',_0xa14c('0xf'),_0xa14c('0x10'),_0xa14c('0x11'),_0xa14c('0x12'),_0xa14c('0x13')]}]},'log':_0xa14c('0x3')});};};
\ No newline at end of file
index aaeb493..84eaef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafe6=['../client','getTrunks','Request','name','registry','defaultuser'];(function(_0x2623a4,_0x4eec80){var _0x118b6d=function(_0x9accdb){while(--_0x9accdb){_0x2623a4['push'](_0x2623a4['shift']());}};_0x118b6d(++_0x4eec80);}(_0xafe6,0x66));var _0x6afe=function(_0x549426,_0xf1669e){_0x549426=_0x549426-0x0;var _0x830a1b=_0xafe6[_0x549426];return _0x830a1b;};'use strict';var client=require(_0x6afe('0x0'));exports[_0x6afe('0x1')]=function(_0x3e1c26){return function(_0x338464){return client[_0x6afe('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x6afe('0x3'),_0x6afe('0x4'),_0x6afe('0x5')]},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0x4c91=['Request','GetTrunk','name','registry','defaultuser','../client'];(function(_0x4d9c75,_0x268797){var _0x67d80d=function(_0x2cc4d1){while(--_0x2cc4d1){_0x4d9c75['push'](_0x4d9c75['shift']());}};_0x67d80d(++_0x268797);}(_0x4c91,0x161));var _0x14c9=function(_0x3b9c75,_0x2e3deb){_0x3b9c75=_0x3b9c75-0x0;var _0xfd4a5c=_0x4c91[_0x3b9c75];return _0xfd4a5c;};'use strict';var client=require(_0x14c9('0x0'));exports['getTrunks']=function(_0x4ec548){return function(_0x35d4a8){return client[_0x14c9('0x1')](_0x14c9('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x14c9('0x3'),_0x14c9('0x4'),_0x14c9('0x5')]},'log':'GetTrunk'});};};
\ No newline at end of file
index bfafad7..fcc9aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getAgent','Request','GetUser','agent','name','email','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getAgents','getTelephones','accountcode','internal','savePause','PauseUser'];(function(_0x3c11ab,_0x3f201b){var _0x213d76=function(_0xc3cfd9){while(--_0xc3cfd9){_0x3c11ab['push'](_0x3c11ab['shift']());}};_0x213d76(++_0x3f201b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'where':{'role':_0x3071('0x2')},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),'accountcode',_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),_0x3071('0xb'),_0x3071('0xc'),_0x3071('0xd')]},'log':_0x3071('0xe')});};};exports[_0x3071('0xf')]=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x3071('0x3'),_0x3071('0x10'),_0x3071('0x11')]},'log':_0x3071('0xf')});};};exports[_0x3071('0x12')]=function(_0x4a470a,_0x2ace21,_0x11a7ee){return client[_0x3071('0x0')](_0x3071('0x13'),{'body':{'type':_0x2ace21,'uniqueid':_0x11a7ee},'options':{'where':{'id':_0x4a470a['id']}},'log':_0x3071('0x12')});};exports['saveUnpause']=function(_0x5330a8){return client[_0x3071('0x0')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5330a8['id']}},'log':_0x3071('0x12')});};exports[_0x3071('0x14')]=function(_0x5d4883){return client[_0x3071('0x0')]('ShowUser',{'options':{'raw':![],'where':{'role':_0x3071('0x2'),'id':_0x5d4883},'attributes':['id',_0x3071('0x3'),_0x3071('0x4'),_0x3071('0x10'),_0x3071('0x5'),_0x3071('0x6'),_0x3071('0x7'),_0x3071('0x8'),_0x3071('0x9'),_0x3071('0xa'),'interface']},'log':_0x3071('0x14')});};
\ No newline at end of file
+var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x469f66,_0x2daba6){var _0x442f79=function(_0x320cc7){while(--_0x320cc7){_0x469f66['push'](_0x469f66['shift']());}};_0x442f79(++_0x2daba6);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2c3255,_0x4e00ae){_0x2c3255=_0x2c3255-0x0;var _0x282aba=_0xcb91[_0x2c3255];return _0x282aba;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
index 4fa2814..16bf92b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4d7=['../client','create','Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport'];(function(_0x287d30,_0x11c019){var _0x5cf2c5=function(_0x2756c5){while(--_0x2756c5){_0x287d30['push'](_0x287d30['shift']());}};_0x5cf2c5(++_0x11c019);}(_0xb4d7,0x150));var _0x7b4d=function(_0x446878,_0x307e0b){_0x446878=_0x446878-0x0;var _0x12a8c6=_0xb4d7[_0x446878];return _0x12a8c6;};'use strict';var client=require(_0x7b4d('0x0'));exports[_0x7b4d('0x1')]=function(_0x356a14){return client[_0x7b4d('0x2')](_0x7b4d('0x3'),{'body':_0x356a14,'log':'CreateVoiceAgentReport'});};exports[_0x7b4d('0x4')]=function(_0x3a4f7c,_0x51b6a,_0x42615f){return client[_0x7b4d('0x2')](_0x7b4d('0x5'),{'body':_0x3a4f7c,'options':{'where':{'uniqueid':_0x51b6a,'interface':_0x42615f,'agentcomplete':!![]}},'log':_0x7b4d('0x5')});};
\ No newline at end of file
+var _0xa403=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','../client','create'];(function(_0x333a1e,_0x5eaf49){var _0x55673e=function(_0x18ad49){while(--_0x18ad49){_0x333a1e['push'](_0x333a1e['shift']());}};_0x55673e(++_0x5eaf49);}(_0xa403,0x64));var _0x3a40=function(_0x502953,_0x28de83){_0x502953=_0x502953-0x0;var _0x2fa32d=_0xa403[_0x502953];return _0x2fa32d;};'use strict';var client=require(_0x3a40('0x0'));exports[_0x3a40('0x1')]=function(_0x128712){return client[_0x3a40('0x2')]('CreateVoiceAgentReport',{'body':_0x128712,'log':_0x3a40('0x3')});};exports[_0x3a40('0x4')]=function(_0x48344c,_0x2e377,_0x86d0c0){return client[_0x3a40('0x2')](_0x3a40('0x5'),{'body':_0x48344c,'options':{'where':{'uniqueid':_0x2e377,'interface':_0x86d0c0,'agentcomplete':!![]}},'log':_0x3a40('0x5')});};
\ No newline at end of file
index 958605f..47b5c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fa7=['callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','type','disposition','duration','moment','lodash','../client','Request','CreateVoiceCallReport','merge','context'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x2fa7,0x91));var _0x72fa=function(_0x1ae278,_0x1ea131){_0x1ae278=_0x1ae278-0x0;var _0x407822=_0x2fa7[_0x1ae278];return _0x407822;};'use strict';var moment=require(_0x72fa('0x0'));var util=require('util');var _=require(_0x72fa('0x1'));var client=require(_0x72fa('0x2'));exports['create']=function(_0xfbbf58){return client[_0x72fa('0x3')](_0x72fa('0x4'),{'body':_[_0x72fa('0x5')](_0xfbbf58,{'source':_0xfbbf58['calleridnum'],'destinationcontext':_0xfbbf58[_0x72fa('0x6')],'callerid':_0xfbbf58[_0x72fa('0x7')],'amaflags':_0x72fa('0x8')}),'log':_0x72fa('0x4')});};exports[_0x72fa('0x9')]=function(){return function(){return client[_0x72fa('0x3')](_0x72fa('0xa'),{'options':{'where':{'type':[_0x72fa('0xb')],'createdAt':{'$between':[moment()[_0x72fa('0xc')](_0x72fa('0xd'))[_0x72fa('0xe')](_0x72fa('0xf')),moment()['endOf'](_0x72fa('0xd'))[_0x72fa('0xe')](_0x72fa('0xf'))]}},'attributes':[_0x72fa('0x10'),_0x72fa('0x11'),_0x72fa('0x12'),'billableseconds']},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
+var _0xe571=['startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','day','disposition','duration','billableseconds','GetVoiceCallReports','util','lodash','../client','create','Request','CreateVoiceCallReport','merge','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound'];(function(_0x2cacef,_0xba1573){var _0x289ba6=function(_0x4ac8b9){while(--_0x4ac8b9){_0x2cacef['push'](_0x2cacef['shift']());}};_0x289ba6(++_0xba1573);}(_0xe571,0xbd));var _0x1e57=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe571[_0x20a584];return _0x4b41a8;};'use strict';var moment=require('moment');var util=require(_0x1e57('0x0'));var _=require(_0x1e57('0x1'));var client=require(_0x1e57('0x2'));exports[_0x1e57('0x3')]=function(_0x100ce4){return client[_0x1e57('0x4')](_0x1e57('0x5'),{'body':_[_0x1e57('0x6')](_0x100ce4,{'source':_0x100ce4['calleridnum'],'destinationcontext':_0x100ce4['context'],'callerid':_0x100ce4['callerid'],'amaflags':_0x1e57('0x7')}),'log':_0x1e57('0x5')});};exports[_0x1e57('0x8')]=function(){return function(){return client[_0x1e57('0x4')](_0x1e57('0x9'),{'options':{'where':{'type':[_0x1e57('0xa')],'createdAt':{'$between':[moment()[_0x1e57('0xb')]('day')[_0x1e57('0xc')](_0x1e57('0xd')),moment()[_0x1e57('0xe')](_0x1e57('0xf'))[_0x1e57('0xc')](_0x1e57('0xd'))]}},'attributes':['type',_0x1e57('0x10'),_0x1e57('0x11'),_0x1e57('0x12')]},'log':_0x1e57('0x13')});};};
\ No newline at end of file
index ffb4f7f..32169c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f9=['CreateVoiceDialReport','../client','create','Request'];(function(_0x18b4e8,_0x30e9e1){var _0x4b6265=function(_0x46bc8b){while(--_0x46bc8b){_0x18b4e8['push'](_0x18b4e8['shift']());}};_0x4b6265(++_0x30e9e1);}(_0x13f9,0x115));var _0x913f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x13f9[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x913f('0x0'));exports[_0x913f('0x1')]=function(_0xf92d6d){return client[_0x913f('0x2')](_0x913f('0x3'),{'body':_0xf92d6d,'log':_0x913f('0x3')});};
\ No newline at end of file
+var _0x3b22=['create','Request','CreateVoiceDialReport','../client'];(function(_0x3c0007,_0x55170c){var _0x4404b0=function(_0x21e626){while(--_0x21e626){_0x3c0007['push'](_0x3c0007['shift']());}};_0x4404b0(++_0x55170c);}(_0x3b22,0xd7));var _0x23b2=function(_0x1bda6c,_0x5440b1){_0x1bda6c=_0x1bda6c-0x0;var _0x501a86=_0x3b22[_0x1bda6c];return _0x501a86;};'use strict';var client=require(_0x23b2('0x0'));exports[_0x23b2('0x1')]=function(_0x5b213d){return client[_0x23b2('0x2')](_0x23b2('0x3'),{'body':_0x5b213d,'log':_0x23b2('0x3')});};
\ No newline at end of file
index 49f17ee..a871348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca66=['GetVoiceExtension','exten','recordingFormat','../client'];(function(_0x1c5142,_0x30ea72){var _0x1268cb=function(_0xaa2299){while(--_0xaa2299){_0x1c5142['push'](_0x1c5142['shift']());}};_0x1268cb(++_0x30ea72);}(_0xca66,0x8b));var _0x6ca6=function(_0x282a29,_0x18e6ea){_0x282a29=_0x282a29-0x0;var _0x263381=_0xca66[_0x282a29];return _0x263381;};'use strict';var client=require(_0x6ca6('0x0'));exports['getVoiceExtensions']=function(){return function(){return client['Request'](_0x6ca6('0x1'),{'options':{'raw':!![],'attributes':['id',_0x6ca6('0x2'),_0x6ca6('0x3')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0x6e77=['exten','recordingFormat','getVoiceExtensions'];(function(_0x1e1748,_0x287be8){var _0x1a3718=function(_0x3788cb){while(--_0x3788cb){_0x1e1748['push'](_0x1e1748['shift']());}};_0x1a3718(++_0x287be8);}(_0x6e77,0xef));var _0x76e7=function(_0x1cb931,_0x41493d){_0x1cb931=_0x1cb931-0x0;var _0x1ef86b=_0x6e77[_0x1cb931];return _0x1ef86b;};'use strict';var client=require('../client');exports[_0x76e7('0x0')]=function(){return function(){return client['Request']('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x76e7('0x1'),_0x76e7('0x2')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index ce46c52..183f2d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c03=['dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','callerid','active','Pause','name','TrunkBackup','Interval','Intervals','interval','getVoiceQueues','GetVoiceQueue','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7c03,0xac));var _0x37c0=function(_0x37ccd1,_0xa9a85a){_0x37ccd1=_0x37ccd1-0x0;var _0x58d39a=_0x7c03[_0x37ccd1];return _0x58d39a;};'use strict';var client=require('../client');exports[_0x37c0('0x0')]=function(){return function(){return client['Request'](_0x37c0('0x1'),{'options':{'raw':![],'attributes':['id','name','acw','acwTimeout','autopause',_0x37c0('0x2'),_0x37c0('0x3'),_0x37c0('0x4'),_0x37c0('0x5'),_0x37c0('0x6'),_0x37c0('0x7'),_0x37c0('0x8'),_0x37c0('0x9'),_0x37c0('0xa'),'dialPredictiveInterval',_0x37c0('0xb'),_0x37c0('0xc'),_0x37c0('0xd'),_0x37c0('0xe'),_0x37c0('0xf'),_0x37c0('0x10'),_0x37c0('0x11'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x37c0('0x12'),_0x37c0('0x13'),_0x37c0('0x14'),_0x37c0('0x15'),_0x37c0('0x16'),_0x37c0('0x17'),_0x37c0('0x18'),'dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence',_0x37c0('0x19'),_0x37c0('0x1a'),_0x37c0('0x1b'),_0x37c0('0x1c'),_0x37c0('0x1d'),_0x37c0('0x1e'),_0x37c0('0x1f'),'dialAMDMaximumWordLength',_0x37c0('0x20'),_0x37c0('0x21'),_0x37c0('0x22'),'dialOrderByScheduledAt',_0x37c0('0x23'),'dialAgiAfterHangupClient',_0x37c0('0x24'),'monitor_format',_0x37c0('0x25'),_0x37c0('0x26'),_0x37c0('0x27'),'dialNoSuchNumberMaxRetry',_0x37c0('0x28'),_0x37c0('0x29'),_0x37c0('0x2a'),_0x37c0('0x2b'),_0x37c0('0x2c'),_0x37c0('0x2d'),_0x37c0('0x2e'),_0x37c0('0x2f'),_0x37c0('0x30'),_0x37c0('0x31'),_0x37c0('0x32'),_0x37c0('0x33'),'dialPreviewAutoRecallMe',_0x37c0('0x34')],'include':[{'model':_0x37c0('0x35'),'as':_0x37c0('0x35'),'attributes':['id','name',_0x37c0('0x36'),_0x37c0('0x37')]},{'model':_0x37c0('0x38'),'as':'mandatoryDispositionPause','attributes':['id',_0x37c0('0x39')]},{'model':_0x37c0('0x35'),'as':_0x37c0('0x3a'),'attributes':['id',_0x37c0('0x39'),_0x37c0('0x36'),_0x37c0('0x37')]},{'model':_0x37c0('0x3b'),'as':_0x37c0('0x3b'),'attributes':['id',_0x37c0('0x39')],'include':[{'model':_0x37c0('0x3b'),'as':_0x37c0('0x3c'),'attributes':['id',_0x37c0('0x39'),_0x37c0('0x3d')]}]}]},'log':_0x37c0('0x0')});};};
\ No newline at end of file
+var _0xfb85=['dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','name','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','getVoiceQueues','GetVoiceQueue','acw','autopause','monitor_format','dialMethod'];(function(_0x15d558,_0xf0106){var _0xd6ad8f=function(_0x1f151d){while(--_0x1f151d){_0x15d558['push'](_0x15d558['shift']());}};_0xd6ad8f(++_0xf0106);}(_0xfb85,0x1eb));var _0x5fb8=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xfb85[_0x5d2803];return _0xdcad2c;};'use strict';var client=require('../client');exports['getVoiceQueues']=function(){return function(){return client['Request'](_0x5fb8('0x0'),{'options':{'raw':![],'attributes':['id','name',_0x5fb8('0x1'),'acwTimeout',_0x5fb8('0x2'),_0x5fb8('0x3'),'type','dialActive',_0x5fb8('0x4'),_0x5fb8('0x5'),_0x5fb8('0x6'),'dialPowerLevel',_0x5fb8('0x7'),_0x5fb8('0x8'),_0x5fb8('0x9'),_0x5fb8('0xa'),'dialOriginateCallerIdNumber',_0x5fb8('0xb'),_0x5fb8('0xc'),_0x5fb8('0xd'),_0x5fb8('0xe'),_0x5fb8('0xf'),_0x5fb8('0x10'),_0x5fb8('0x11'),'dialBusyRetryFrequency',_0x5fb8('0x12'),_0x5fb8('0x13'),_0x5fb8('0x14'),'dialTimezone',_0x5fb8('0x15'),_0x5fb8('0x16'),_0x5fb8('0x17'),_0x5fb8('0x18'),_0x5fb8('0x19'),_0x5fb8('0x1a'),_0x5fb8('0x1b'),_0x5fb8('0x1c'),_0x5fb8('0x1d'),_0x5fb8('0x1e'),_0x5fb8('0x1f'),'dialAMDSilenceThreshold',_0x5fb8('0x20'),_0x5fb8('0x21'),_0x5fb8('0x22'),_0x5fb8('0x23'),'dialOrderByScheduledAt',_0x5fb8('0x24'),_0x5fb8('0x25'),'dialQueueProject2',_0x5fb8('0x3'),_0x5fb8('0x26'),_0x5fb8('0x27'),_0x5fb8('0x28'),'dialNoSuchNumberMaxRetry',_0x5fb8('0x29'),'dialDropMaxRetry',_0x5fb8('0x2a'),_0x5fb8('0x2b'),_0x5fb8('0x2c'),_0x5fb8('0x2d'),'dialMachineRetryFrequency',_0x5fb8('0x2e'),_0x5fb8('0x2f'),_0x5fb8('0x30'),_0x5fb8('0x31'),_0x5fb8('0x32'),'dialPreviewAutoRecallMe',_0x5fb8('0x33')],'include':[{'model':'Trunk','as':'Trunk','attributes':['id',_0x5fb8('0x34'),_0x5fb8('0x35'),_0x5fb8('0x36')]},{'model':_0x5fb8('0x37'),'as':_0x5fb8('0x38'),'attributes':['id',_0x5fb8('0x34')]},{'model':'Trunk','as':_0x5fb8('0x39'),'attributes':['id',_0x5fb8('0x34'),'callerid',_0x5fb8('0x36')]},{'model':'Interval','as':'Interval','attributes':['id',_0x5fb8('0x34')],'include':[{'model':_0x5fb8('0x3a'),'as':_0x5fb8('0x3b'),'attributes':['id',_0x5fb8('0x34'),_0x5fb8('0x3c')]}]}]},'log':_0x5fb8('0x3d')});};};
\ No newline at end of file
index ab0dcaa..671a875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x5224ee,_0x2377bf){var _0x19ddab=function(_0x557259){while(--_0x557259){_0x5224ee['push'](_0x5224ee['shift']());}};_0x19ddab(++_0x2377bf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x466c0f,_0x52d50c){var _0x3ac74f=function(_0xca0b68){while(--_0xca0b68){_0x466c0f['push'](_0x466c0f['shift']());}};_0x3ac74f(++_0x52d50c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 0c0d25a..2c1e250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd5=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x327dec,_0x4687f4){var _0x1052a8=function(_0x32c939){while(--_0x32c939){_0x327dec['push'](_0x327dec['shift']());}};_0x1052a8(++_0x4687f4);}(_0x4dd5,0x193));var _0x54dd=function(_0x8d9db8,_0x35ee2e){_0x8d9db8=_0x8d9db8-0x0;var _0xab2ae7=_0x4dd5[_0x8d9db8];return _0xab2ae7;};'use strict';var client=require(_0x54dd('0x0'));exports[_0x54dd('0x1')]=function(_0x317031){return function(){return client[_0x54dd('0x2')](_0x54dd('0x3'),{'options':{'where':{'VoiceQueueId':_0x317031,'paused':!![]},'raw':!![]},'log':_0x54dd('0x1')});};};
\ No newline at end of file
+var _0x8868=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x60df74,_0x458e29){var _0x5ee872=function(_0x356888){while(--_0x356888){_0x60df74['push'](_0x60df74['shift']());}};_0x5ee872(++_0x458e29);}(_0x8868,0x163));var _0x8886=function(_0x24f762,_0x4fa215){_0x24f762=_0x24f762-0x0;var _0x37c5ca=_0x8868[_0x24f762];return _0x37c5ca;};'use strict';var client=require(_0x8886('0x0'));exports[_0x8886('0x1')]=function(_0x3c8e5d){return function(){return client[_0x8886('0x2')](_0x8886('0x3'),{'options':{'where':{'VoiceQueueId':_0x3c8e5d,'paused':!![]},'raw':!![]},'log':_0x8886('0x1')});};};
\ No newline at end of file
index f4b5b65..b5b5153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x84fcbf,_0x1c1b3b){var _0x184ac5=function(_0x271e76){while(--_0x271e76){_0x84fcbf['push'](_0x84fcbf['shift']());}};_0x184ac5(++_0x1c1b3b);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x2b026d,_0x5bc3f7){var _0x1da1c0=function(_0x27f1fc){while(--_0x27f1fc){_0x2b026d['push'](_0x2b026d['shift']());}};_0x1da1c0(++_0x5bc3f7);}(_0x7a54,0x106));var _0x47a5=function(_0x140048,_0x542155){_0x140048=_0x140048-0x0;var _0x4b5520=_0x7a54[_0x140048];return _0x4b5520;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index a6b9c4e..c2f6028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe323=['transfereeaccountcode','transfereecontext','isexternal','context','blind','attendedTransfer','Request','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','CreateVoiceTransferReport','result','transferercalleridname','transfererconnectedlinenum','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename'];(function(_0x25e65e,_0x2039aa){var _0x5c69a6=function(_0x40d062){while(--_0x40d062){_0x25e65e['push'](_0x25e65e['shift']());}};_0x5c69a6(++_0x2039aa);}(_0xe323,0xe2));var _0x3e32=function(_0x1ad686,_0x391325){_0x1ad686=_0x1ad686-0x0;var _0x2e3f63=_0xe323[_0x1ad686];return _0x2e3f63;};'use strict';var client=require(_0x3e32('0x0'));exports[_0x3e32('0x1')]={};exports[_0x3e32('0x2')]=function(_0x3f39ca){return client['Request'](_0x3e32('0x3'),{'body':{'result':_0x3f39ca[_0x3e32('0x4')],'transfererchannel':_0x3f39ca['transfererchannel'],'transferercalleridnum':_0x3f39ca['transferercalleridnum'],'transferercalleridname':_0x3f39ca[_0x3e32('0x5')],'transfererconnectedlinenum':_0x3f39ca[_0x3e32('0x6')],'transfererconnectedlinename':_0x3f39ca['transfererconnectedlinename'],'transfereraccountcode':_0x3f39ca[_0x3e32('0x7')],'transferercontext':_0x3f39ca[_0x3e32('0x8')],'transfererexten':_0x3f39ca[_0x3e32('0x9')],'transfererlinkedid':_0x3f39ca[_0x3e32('0xa')],'transfereechannel':_0x3f39ca['transfereechannel'],'transfereecalleridnum':_0x3f39ca[_0x3e32('0xb')],'transfereecalleridname':_0x3f39ca['transfereecalleridname'],'transfereeconnectedlinenum':_0x3f39ca[_0x3e32('0xc')],'transfereeconnectedlinename':_0x3f39ca[_0x3e32('0xd')],'transfereeaccountcode':_0x3f39ca[_0x3e32('0xe')],'transfereecontext':_0x3f39ca[_0x3e32('0xf')],'transfereeexten':_0x3f39ca['transfereeexten'],'transfereelinkedid':_0x3f39ca['transfereelinkedid'],'isexternal':_0x3f39ca[_0x3e32('0x10')],'context':_0x3f39ca[_0x3e32('0x11')],'extension':_0x3f39ca['extension'],'type':_0x3e32('0x12')},'log':_0x3e32('0x3')});};exports[_0x3e32('0x13')]=function(_0x3ac028){return client[_0x3e32('0x14')](_0x3e32('0x3'),{'body':{'result':_0x3ac028['result'],'transfererchannel':_0x3ac028[_0x3e32('0x15')],'transferercalleridnum':_0x3ac028[_0x3e32('0x16')],'transferercalleridname':_0x3ac028['origtransferercalleridname'],'transfererconnectedlinenum':_0x3ac028[_0x3e32('0x17')],'transfererconnectedlinename':_0x3ac028[_0x3e32('0x18')],'transfereraccountcode':_0x3ac028[_0x3e32('0x19')],'transferercontext':_0x3ac028[_0x3e32('0x1a')],'transfererexten':_0x3ac028[_0x3e32('0x1b')],'transfererlinkedid':_0x3ac028[_0x3e32('0x1c')],'transfereechannel':_0x3ac028[_0x3e32('0x1d')],'transfereecalleridnum':_0x3ac028[_0x3e32('0x1e')],'transfereecalleridname':_0x3ac028[_0x3e32('0x1f')],'transfereeconnectedlinenum':_0x3ac028[_0x3e32('0x20')],'transfereeconnectedlinename':_0x3ac028['transfertargetconnectedlinename'],'transfereeaccountcode':_0x3ac028[_0x3e32('0x21')],'transfereecontext':_0x3ac028[_0x3e32('0x22')],'transfereeexten':_0x3ac028[_0x3e32('0x23')],'transfereelinkedid':_0x3ac028[_0x3e32('0x24')],'isexternal':_0x3ac028['isexternal'],'context':_0x3ac028[_0x3e32('0x25')],'extension':_0x3ac028[_0x3e32('0x26')],'type':_0x3e32('0x27')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0x0a19=['transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','attended','../client','blindTransfer','Request','CreateVoiceTransferReport','result'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x0a19,0x1a8));var _0x90a1=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x0a19[_0x1beef3];return _0x5af964;};'use strict';var client=require(_0x90a1('0x0'));exports['transfers']={};exports[_0x90a1('0x1')]=function(_0x50f6cb){return client[_0x90a1('0x2')](_0x90a1('0x3'),{'body':{'result':_0x50f6cb[_0x90a1('0x4')],'transfererchannel':_0x50f6cb['transfererchannel'],'transferercalleridnum':_0x50f6cb[_0x90a1('0x5')],'transferercalleridname':_0x50f6cb[_0x90a1('0x6')],'transfererconnectedlinenum':_0x50f6cb[_0x90a1('0x7')],'transfererconnectedlinename':_0x50f6cb[_0x90a1('0x8')],'transfereraccountcode':_0x50f6cb['transfereraccountcode'],'transferercontext':_0x50f6cb[_0x90a1('0x9')],'transfererexten':_0x50f6cb[_0x90a1('0xa')],'transfererlinkedid':_0x50f6cb['transfererlinkedid'],'transfereechannel':_0x50f6cb[_0x90a1('0xb')],'transfereecalleridnum':_0x50f6cb[_0x90a1('0xc')],'transfereecalleridname':_0x50f6cb[_0x90a1('0xd')],'transfereeconnectedlinenum':_0x50f6cb[_0x90a1('0xe')],'transfereeconnectedlinename':_0x50f6cb[_0x90a1('0xf')],'transfereeaccountcode':_0x50f6cb['transfereeaccountcode'],'transfereecontext':_0x50f6cb[_0x90a1('0x10')],'transfereeexten':_0x50f6cb[_0x90a1('0x11')],'transfereelinkedid':_0x50f6cb[_0x90a1('0x12')],'isexternal':_0x50f6cb[_0x90a1('0x13')],'context':_0x50f6cb[_0x90a1('0x14')],'extension':_0x50f6cb[_0x90a1('0x15')],'type':'blind'},'log':_0x90a1('0x3')});};exports[_0x90a1('0x16')]=function(_0x27e558){return client[_0x90a1('0x2')](_0x90a1('0x3'),{'body':{'result':_0x27e558[_0x90a1('0x4')],'transfererchannel':_0x27e558[_0x90a1('0x17')],'transferercalleridnum':_0x27e558[_0x90a1('0x18')],'transferercalleridname':_0x27e558[_0x90a1('0x19')],'transfererconnectedlinenum':_0x27e558[_0x90a1('0x1a')],'transfererconnectedlinename':_0x27e558['secondtransfererconnectedlinename'],'transfereraccountcode':_0x27e558[_0x90a1('0x1b')],'transferercontext':_0x27e558[_0x90a1('0x1c')],'transfererexten':_0x27e558[_0x90a1('0x1d')],'transfererlinkedid':_0x27e558['origtransfererlinkedid'],'transfereechannel':_0x27e558['transfertargetchannel'],'transfereecalleridnum':_0x27e558['transfertargetcalleridnum'],'transfereecalleridname':_0x27e558[_0x90a1('0x1e')],'transfereeconnectedlinenum':_0x27e558[_0x90a1('0x1f')],'transfereeconnectedlinename':_0x27e558[_0x90a1('0x20')],'transfereeaccountcode':_0x27e558[_0x90a1('0x21')],'transfereecontext':_0x27e558[_0x90a1('0x22')],'transfereeexten':_0x27e558[_0x90a1('0x23')],'transfereelinkedid':_0x27e558[_0x90a1('0x24')],'isexternal':_0x27e558[_0x90a1('0x13')],'context':_0x27e558[_0x90a1('0x25')],'extension':_0x27e558['origtransfererexten'],'type':_0x90a1('0x26')},'log':_0x90a1('0x3')});};
\ No newline at end of file
index 1ce7a0a..5bbb058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd4=['sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','map','channel','filename','uniqueid','MixMonitor','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','destinationchannel','StopMixMonitor','stop','%s.%s','wav','status','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','voicequeuechannelredirect','exten','context','trunks','outboundChannels','run','custom:','event','faxAccounts','send','server','listen','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','../ami','format','SIP','name','timers','timer','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','message','catch','command','Command','content','voiceQueues','hasOwnProperty','answered','loggedIn','pTalking'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x9fd4,0x16c));var _0x49fd=function(_0x5ce99d,_0xd461b){_0x5ce99d=_0x5ce99d-0x0;var _0x15e65b=_0x9fd4[_0x5ce99d];return _0x15e65b;};'use strict';var _=require(_0x49fd('0x0'));var util=require(_0x49fd('0x1'));var jayson=require(_0x49fd('0x2'));var schema=require(_0x49fd('0x3'));var BPromise=require(_0x49fd('0x4'));var moment=require(_0x49fd('0x5'));var config=require(_0x49fd('0x6'));var properties=require(_0x49fd('0x7'));var ami=require(_0x49fd('0x8'));exports['listen']=function(_0x481f6a,_0x3b4b46,_0x42fdc7){return new BPromise(function(_0x1bc16e,_0x9353cd){var _0x48b999={'QueuePause':function(_0x14bb94){return new Promise(function(_0x461ac1,_0x36f605){var _0x3bf3fd=util[_0x49fd('0x9')]('%s/%s',_0x49fd('0xa'),_0x14bb94[_0x49fd('0xb')]);if(_0x481f6a[_0x49fd('0xc')]&&_0x481f6a[_0x49fd('0xc')][_0x3bf3fd]&&_0x481f6a[_0x49fd('0xc')][_0x3bf3fd][_0x49fd('0xd')]){_0x481f6a[_0x49fd('0xc')][_0x3bf3fd]['updateAcw']();}if(_0x481f6a[_0x49fd('0xe')][_0x3bf3fd]){_0x481f6a[_0x49fd('0xe')][_0x3bf3fd][_0x49fd('0xf')]({'statePause':_0x14bb94[_0x49fd('0x10')]?!![]:![]});}_0x461ac1({'code':0xc8,'message':_0x49fd('0x11')});});},'Reload':function(_0x206bd8){var _0x26f2c1=this;return new Promise(function(_0x3fa518,_0x1d900b){if(ami[_0x49fd('0x12')]()==![]){return _0x1d900b(_0x26f2c1[_0x49fd('0x13')](0x1f4,[config[_0x49fd('0x14')]['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')][_0x49fd('0x17')]('\x20')));}_0x206bd8=_[_0x49fd('0x18')](_0x206bd8,_[_0x49fd('0x19')](properties[_0x49fd('0x1a')]));_0x206bd8[_0x49fd('0x1b')]=_0x49fd('0x1c');return ami[_0x49fd('0x1d')](_0x206bd8)[_0x49fd('0x1e')](function(_0x475eee){_0x3fa518({'code':0xc8,'message':_0x475eee[_0x49fd('0x1f')]});})[_0x49fd('0x20')](function(_0x598793){_0x1d900b(_0x26f2c1[_0x49fd('0x13')](0x1f5,_0x598793[_0x49fd('0x1f')]));});});},'Command':function(_0x59a407){var _0x5c323a=this;return new Promise(function(_0x449c9a,_0x53cbd1){if(ami[_0x49fd('0x12')]()==![]){return _0x53cbd1(_0x5c323a[_0x49fd('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],'ami\x20disconnected'][_0x49fd('0x17')]('\x20')));}_0x59a407=_[_0x49fd('0x18')](_0x59a407,_0x49fd('0x21'));_0x59a407[_0x49fd('0x1b')]=_0x49fd('0x22');return ami[_0x49fd('0x1d')](_0x59a407)['then'](function(_0x46019d){_0x449c9a({'code':0xc8,'message':_0x46019d[_0x49fd('0x23')]});})[_0x49fd('0x20')](function(_0x4bf811){_0x53cbd1(_0x5c323a[_0x49fd('0x13')](0x1f5,_0x4bf811[_0x49fd('0x1f')]));});});},'VoiceQueues':function(_0x146d55){return new Promise(function(_0x4bff4c,_0x597161){var _0x497469=[];for(var _0x13c5a8 in _0x481f6a[_0x49fd('0x24')]){if(_0x481f6a[_0x49fd('0x24')][_0x49fd('0x25')](_0x13c5a8)){var _0x9587b9=_0x481f6a[_0x49fd('0x24')][_0x13c5a8];var _0x20873e={'id':_0x9587b9['id'],'name':_0x9587b9[_0x49fd('0xb')],'strategy':_0x9587b9['strategy'],'answered':_0x9587b9[_0x49fd('0x26')],'available':_0x9587b9['available'],'loggedIn':_0x9587b9[_0x49fd('0x27')],'pTalking':_0x9587b9[_0x49fd('0x28')],'sumBillable':_0x9587b9['sumBillable'],'sumDuration':_0x9587b9[_0x49fd('0x29')],'sumHoldTime':_0x9587b9[_0x49fd('0x2a')]||0x0,'talking':_0x9587b9[_0x49fd('0x2b')],'total':_0x9587b9[_0x49fd('0x2c')],'type':_0x9587b9[_0x49fd('0x2d')],'unmanaged':_0x9587b9[_0x49fd('0x2e')],'abandoned':_0x9587b9[_0x49fd('0x2f')],'waiting':_0x9587b9[_0x49fd('0x30')],'loggedInDb':_0x9587b9['loggedInDb']};if(_0x9587b9[_0x49fd('0x2d')]==='outbound'){_0x20873e[_0x49fd('0x31')]=_0x9587b9['dialActive'];_0x20873e[_0x49fd('0x32')]=_0x9587b9[_0x49fd('0x32')];_0x20873e[_0x49fd('0x33')]=_0x9587b9['dialOriginateCallerIdName'];_0x20873e['dialOriginateCallerIdNumber']=_0x9587b9['dialOriginateCallerIdNumber'];_0x20873e[_0x49fd('0x34')]=_0x9587b9[_0x49fd('0x34')];_0x20873e['dialPrefix']=_0x9587b9[_0x49fd('0x35')];_0x20873e['temp']=_0x9587b9['temp'];_0x20873e[_0x49fd('0x36')]=_0x9587b9[_0x49fd('0x36')];_0x20873e[_0x49fd('0x37')]=_0x9587b9[_0x49fd('0x37')];_0x20873e[_0x49fd('0x38')]=_0x9587b9['outboundBlacklistCallsDay'];_0x20873e['outboundBusyCallsDay']=_0x9587b9[_0x49fd('0x39')];_0x20873e[_0x49fd('0x3a')]=_0x9587b9[_0x49fd('0x3a')];_0x20873e[_0x49fd('0x3b')]=_0x9587b9['outboundDropCallsDayACS'];_0x20873e[_0x49fd('0x3c')]=_0x9587b9[_0x49fd('0x3c')];_0x20873e[_0x49fd('0x3d')]=_0x9587b9[_0x49fd('0x3d')];_0x20873e[_0x49fd('0x3e')]=_0x9587b9[_0x49fd('0x3e')];_0x20873e[_0x49fd('0x3f')]=_0x9587b9[_0x49fd('0x3f')];_0x20873e[_0x49fd('0x40')]=_0x9587b9[_0x49fd('0x40')];_0x20873e[_0x49fd('0x41')]=_0x9587b9['outboundReCallsDay'];_0x20873e[_0x49fd('0x42')]=_0x9587b9[_0x49fd('0x42')];_0x20873e[_0x49fd('0x43')]=_0x9587b9[_0x49fd('0x43')];_0x20873e[_0x49fd('0x44')]=_0x9587b9[_0x49fd('0x44')];_0x20873e[_0x49fd('0x45')]=_0x9587b9[_0x49fd('0x45')];_0x20873e[_0x49fd('0x46')]=_0x9587b9['predictiveIntervalAvgTalktime'];_0x20873e[_0x49fd('0x47')]=_0x9587b9['predictiveIntervalDroppedCallsCallersExit'];_0x20873e[_0x49fd('0x48')]=_0x9587b9[_0x49fd('0x48')];_0x20873e['predictiveIntervalErlangCalls']=_0x9587b9[_0x49fd('0x49')];_0x20873e[_0x49fd('0x4a')]=_0x9587b9['predictiveIntervalErlangCallsDroppedCalls'];_0x20873e[_0x49fd('0x4b')]=_0x9587b9['predictiveIntervalHitRate'];_0x20873e['predictiveIntervalMultiplicativeFactor']=_0x9587b9['predictiveIntervalMultiplicativeFactor'];_0x20873e[_0x49fd('0x4c')]=_0x9587b9[_0x49fd('0x4c')];_0x20873e[_0x49fd('0x4d')]=_0x9587b9[_0x49fd('0x4d')];_0x20873e['predictiveIntervalTotalCalls']=_0x9587b9[_0x49fd('0x4e')];_0x20873e[_0x49fd('0x1f')]=_0x9587b9[_0x49fd('0x1f')];_0x20873e[_0x49fd('0x4f')]=_0x9587b9[_0x49fd('0x4f')];_0x20873e[_0x49fd('0x50')]=_0x9587b9[_0x49fd('0x50')];_0x20873e[_0x49fd('0x51')]=_0x9587b9['erlangCallToSecond'];_0x20873e[_0x49fd('0x52')]=_0x9587b9[_0x49fd('0x52')];_0x20873e['erlangBusyFactor']=_0x9587b9[_0x49fd('0x53')];_0x20873e[_0x49fd('0x54')]=_0x9587b9['startPredictive'];_0x20873e[_0x49fd('0x55')]=_0x9587b9['startProgressive'];}if(_0x9587b9[_0x49fd('0x56')]){_0x20873e[_0x49fd('0x56')]={'id':_0x9587b9[_0x49fd('0x56')]['id'],'name':_0x9587b9[_0x49fd('0x56')]['name'],'active':_0x9587b9['Trunk'][_0x49fd('0x57')],'callerid':_0x9587b9['Trunk'][_0x49fd('0x58')]};}if(_0x9587b9[_0x49fd('0x59')]){_0x20873e[_0x49fd('0x59')]={'id':_0x9587b9[_0x49fd('0x59')]['id'],'name':_0x9587b9['Interval'][_0x49fd('0xb')]};}_0x497469[_0x49fd('0x5a')](_0x20873e);}}_0x4bff4c({'count':_0x497469[_0x49fd('0x5b')],'rows':_0x497469});});},'UpdateVoiceQueue':function(_0x8d4b0b){return new Promise(function(_0x24705e,_0x30937f){var _0x231c08=_[_0x49fd('0x5c')](_0x481f6a[_0x49fd('0x24')],{'id':parseInt(_0x8d4b0b['id'])});var _0xa4a3b7=_[_0x49fd('0x5d')](_0x8d4b0b,['id']);if(_0x231c08){for(var _0x312344 in _0xa4a3b7){if(typeof _0xa4a3b7[_0x312344]!==_0x49fd('0x5e')&&typeof _0x231c08[_0x312344]!==_0x49fd('0x5e')){_0x231c08[_0x312344]=_0xa4a3b7[_0x312344];}}_0x24705e(_0x231c08);}else{_0x30937f();}});},'VoiceChannels':function(_0x58c7eb){return new Promise(function(_0x4fc625,_0x6960ad){var _0xa3518f=_[_0x49fd('0x5f')](_0x481f6a[_0x49fd('0x60')]);_0x4fc625({'count':_0xa3518f['length'],'rows':_0xa3518f});});},'VoiceChannelMixMonitor':function(_0x23e5f2){var _0x3ae66a=this;return new Promise(function(_0x4b28fa,_0x341728){if(ami[_0x49fd('0x12')]()==![]){return _0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f4,[config[_0x49fd('0x14')]['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')][_0x49fd('0x17')]('\x20')));}var _0x215b76=schema(properties[_0x49fd('0x61')])[_0x49fd('0x3')](_0x23e5f2);if(_0x215b76['length']>0x0){return _0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x215b76,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x23457c=_[_0x49fd('0x5c')](_0x481f6a['channels'],{'uniqueid':_0x23e5f2['uniqueid']});if(_0x23457c&&_0x23457c[_0x49fd('0x63')]){var _0x765bca=util[_0x49fd('0x9')]('%s.%s',_0x23e5f2[_0x49fd('0x64')]||_0x23e5f2[_0x49fd('0x65')],_0x23e5f2['format']||'wav');return ami['Action']({'action':_0x49fd('0x66'),'channel':_0x23457c['channel'],'file':_0x765bca,'options':'ai(mixmonitorid)'})['then'](function(_0x37860b){var _0x46d467=_[_0x49fd('0x5c')](_0x23457c[_0x49fd('0x67')],{'filename':_0x49fd('0x68')+_0x765bca[_0x49fd('0x69')]()});if(_[_0x49fd('0x6a')](_0x46d467)){_0x23457c[_0x49fd('0x67')][_0x49fd('0x5a')]({'filename':_0x49fd('0x68')+_0x765bca['toLowerCase'](),'createdAt':moment()[_0x49fd('0x9')](_0x49fd('0x6b')),'mixmonitorid':_0x37860b[_0x49fd('0x6c')],'status':_0x49fd('0x6d')});}else{_0x46d467[_0x49fd('0x6c')]=_0x37860b[_0x49fd('0x6c')];_0x46d467['status']=_0x49fd('0x6d');}_0x4b28fa({'code':0xc8,'message':[_0x23e5f2[_0x49fd('0x65')],'MixMonitor\x20Success',_0x37860b['mixmonitorid']][_0x49fd('0x17')]('\x20'),'mixmonitorid':_0x37860b['mixmonitorid']});})[_0x49fd('0x20')](function(_0x575bc5){_0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f5,[_0x23e5f2['uniqueid'],_0x575bc5[_0x49fd('0x1f')][_0x49fd('0x69')]()]['join']('\x20')));});}else{return _0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f5,_0x49fd('0x6e')));}});},'VoiceChannelStopMixMonitor':function(_0x275a68){var _0x40f3bc=this;return new Promise(function(_0x1b7992,_0x41da82){if(ami[_0x49fd('0x12')]()==![]){return _0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')]['join']('\x20')));}var _0x34613d=schema(properties[_0x49fd('0x61')])[_0x49fd('0x3')](_0x275a68);if(_0x34613d[_0x49fd('0x5b')]>0x0){return _0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x34613d,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x61d98c=_['find'](_0x481f6a[_0x49fd('0x60')],{'uniqueid':_0x275a68[_0x49fd('0x65')]});if(_0x61d98c){return BPromise['resolve']()[_0x49fd('0x1e')](function(){if(_0x61d98c[_0x49fd('0x63')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x61d98c['channel'],'mixmonitorid':_0x275a68[_0x49fd('0x6c')]})[_0x49fd('0x20')](function(_0x410bbe){});}})[_0x49fd('0x1e')](function(){if(_0x61d98c[_0x49fd('0x6f')]){return ami['Action']({'action':_0x49fd('0x70'),'channel':_0x61d98c['destinationchannel'],'mixmonitorid':_0x275a68[_0x49fd('0x6c')]})['catch'](function(_0x1e5279){});}})[_0x49fd('0x1e')](function(_0x234e2a){var _0x1cd930=_['find'](_0x61d98c[_0x49fd('0x67')],{'mixmonitorid':_0x275a68[_0x49fd('0x6c')]});if(_0x1cd930){_0x1cd930['status']=_0x49fd('0x71');}})[_0x49fd('0x1e')](function(){var _0xc3cddd=util['format'](_0x49fd('0x72'),_0x275a68[_0x49fd('0x64')]||_0x275a68[_0x49fd('0x65')],_0x275a68[_0x49fd('0x9')]||_0x49fd('0x73'));var _0x330c6d=_['find'](_0x61d98c['monitors'],{'filename':_0x49fd('0x68')+_0xc3cddd[_0x49fd('0x69')]()});if(_0x330c6d){_0x330c6d[_0x49fd('0x74')]=_0x49fd('0x71');}})[_0x49fd('0x1e')](function(){_0x1b7992({'code':0xc8,'message':[_0x275a68[_0x49fd('0x65')],_0x49fd('0x75')][_0x49fd('0x17')]('\x20')});})[_0x49fd('0x20')](function(_0x3cb9e9){_0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f5,[_0x275a68[_0x49fd('0x65')],_0x3cb9e9[_0x49fd('0x1f')]['toLowerCase']()][_0x49fd('0x17')]('\x20')));});}else{return _0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f5,_0x49fd('0x6e')));}});},'VoiceQueuesChannels':function(_0x561e58){return new Promise(function(_0x545603,_0x3a9985){var _0x1be81d=_[_0x49fd('0x5f')](_0x481f6a['queueChannels']);_0x545603({'count':_0x1be81d[_0x49fd('0x5b')],'rows':_0x1be81d});});},'VoiceQueuesChannel':function(_0x161767){var _0x162b84=this;return new Promise(function(_0x3ce72c,_0x1a3555){var _0x24ad9f=schema(properties[_0x49fd('0x76')])['validate'](_0x161767);if(_0x24ad9f['length']>0x0){return _0x1a3555(_0x162b84[_0x49fd('0x13')](0x1f4,_['map'](_0x24ad9f,_0x49fd('0x1f'))['join'](',\x20')));}var _0x593346=_['find'](_0x481f6a[_0x49fd('0x77')],{'uniqueid':_0x161767[_0x49fd('0x65')]});if(_0x593346){_0x3ce72c(_0x593346);}else{return _0x1a3555(_0x162b84['error'](0x1f5,_0x49fd('0x6e')));}});},'VoiceQueuesChannelHangup':function(_0x3bca7b){var _0x4c3a12=this;return new Promise(function(_0x67f0f5,_0x2ba14a){if(ami['isConnected']()==![]){return _0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],'ami\x20disconnected'][_0x49fd('0x17')]('\x20')));}var _0x27132c=schema(properties['voicequeuechannelhangup'])[_0x49fd('0x3')](_0x3bca7b);if(_0x27132c[_0x49fd('0x5b')]>0x0){return _0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x27132c,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x1ffd5f=_[_0x49fd('0x5c')](_0x481f6a['queueChannels'],{'uniqueid':_0x3bca7b['uniqueid']});if(_0x1ffd5f&&_0x1ffd5f[_0x49fd('0x63')]){return ami[_0x49fd('0x1d')]({'action':'Hangup','channel':_0x1ffd5f[_0x49fd('0x63')]})[_0x49fd('0x1e')](function(_0x5a2794){_0x67f0f5({'code':0xc8,'message':[_0x3bca7b[_0x49fd('0x65')],_0x5a2794[_0x49fd('0x1f')][_0x49fd('0x69')]()][_0x49fd('0x17')]('\x20')});})['catch'](function(_0x33c908){_0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f5,[_0x3bca7b[_0x49fd('0x65')],_0x33c908[_0x49fd('0x1f')][_0x49fd('0x69')]()][_0x49fd('0x17')]('\x20')));});}else{return _0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x1d04d5){var _0x31dec5=this;return new Promise(function(_0x3c86dc,_0x373ce0){if(ami[_0x49fd('0x12')]()==![]){return _0x373ce0(_0x31dec5[_0x49fd('0x13')](0x1f4,[config[_0x49fd('0x14')]['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')][_0x49fd('0x17')]('\x20')));}var _0x40c089=schema(properties[_0x49fd('0x78')])[_0x49fd('0x3')](_0x1d04d5);if(_0x40c089[_0x49fd('0x5b')]>0x0){return _0x373ce0(_0x31dec5[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x40c089,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x1ba291=_['find'](_0x481f6a[_0x49fd('0x77')],{'uniqueid':_0x1d04d5['uniqueid']});if(_0x1ba291&&_0x1ba291[_0x49fd('0x63')]){return ami[_0x49fd('0x1d')]({'action':'Redirect','channel':_0x1ba291['channel'],'exten':_0x1d04d5[_0x49fd('0x79')],'context':_0x1d04d5[_0x49fd('0x7a')]||_0x1ba291[_0x49fd('0x7a')],'priority':0x1})['then'](function(_0x1c0136){_0x3c86dc({'code':0xc8,'message':[_0x1d04d5['uniqueid'],_0x1c0136[_0x49fd('0x1f')][_0x49fd('0x69')]()]['join']('\x20')});})['catch'](function(_0x51afb5){_0x373ce0(_0x31dec5[_0x49fd('0x13')](0x1f5,[_0x1d04d5['uniqueid'],_0x51afb5[_0x49fd('0x1f')][_0x49fd('0x69')]()][_0x49fd('0x17')]('\x20')));});}else{return _0x373ce0(_0x31dec5['error'](0x1f5,_0x49fd('0x6e')));}});},'Agents':function(_0x5b49e8){return new Promise(function(_0xceaa75,_0x24315e){var _0x58d948=_[_0x49fd('0x5f')](_0x481f6a[_0x49fd('0xe')]);_0xceaa75({'count':_0x58d948[_0x49fd('0x5b')],'rows':_0x58d948});});},'Telephones':function(_0x5e73a7){return new Promise(function(_0x1f3678,_0x3b91d0){var _0x3f063e=_[_0x49fd('0x5f')](_0x481f6a['telephones']);_0x1f3678({'count':_0x3f063e[_0x49fd('0x5b')],'rows':_0x3f063e});});},'Trunks':function(_0x268029){return new Promise(function(_0x9fbe94,_0x232f6f){var _0x5ec8ac=_['values'](_0x481f6a[_0x49fd('0x7b')]);_0x9fbe94({'count':_0x5ec8ac['length'],'rows':_0x5ec8ac});});},'OutboundChannels':function(_0x365d33){return new Promise(function(_0x3b2ac0,_0x377d62){var _0x25457f=_['values'](_0x481f6a[_0x49fd('0x7c')]);_0x3b2ac0({'count':_0x25457f[_0x49fd('0x5b')],'rows':_0x25457f});});},'Outbound':function(_0x574e8a){return new Promise(function(_0x557189,_0x20f97d){_0x557189(_0x481f6a['outbound']);});},'Campaigns':function(_0x2b506c){return new Promise(function(_0x30c38c,_0x2a4af6){var _0x4dc0bd=_[_0x49fd('0x5f')](_0x481f6a['campaigns']);_0x30c38c({'count':_0x4dc0bd[_0x49fd('0x5b')],'rows':_0x4dc0bd});});},'VoiceQueuesPreview':function(_0x5d638d){var _0x156f8e=this;return new Promise(function(_0x5f02fa,_0x5c28d7){_0x3b4b46[_0x49fd('0x7d')](_0x5d638d['id'])['then'](function(_0x36f200){_0x5f02fa({'code':0xc8,'message':_0x36f200[_0x49fd('0x1f')]});})[_0x49fd('0x20')](function(_0x5e1943){_0x5c28d7(_0x156f8e[_0x49fd('0x13')](0x1f4,_0x5e1943['message']));});});},'EventManager':function(_0x1deda5){var _0x59a9e8=this;return new Promise(function(_0x25bb21,_0x4b53d0){if(!_0x1deda5['event']){return _0x4b53d0(_0x59a9e8['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x49fd('0x7e')+_0x1deda5[_0x49fd('0x7f')],_0x1deda5[_0x49fd('0x1f')]);_0x25bb21({'code':0xc8,'message':_0x1deda5});});},'FaxAccounts':function(_0x5a6c59){return new Promise(function(_0x78a4de,_0x40d20e){var _0x20326b=_['values'](_0x481f6a[_0x49fd('0x80')]);_0x78a4de({'count':_0x20326b['length'],'rows':_0x20326b});});},'SendFax':function(_0x574fdc){var _0x485396=this;return new Promise(function(_0xd23a0a,_0x148a2b){_0x42fdc7[_0x49fd('0x81')](_0x574fdc)[_0x49fd('0x1e')](function(_0x232bab){_0xd23a0a({'code':0xc8,'message':_0x232bab[_0x49fd('0x1f')]});})[_0x49fd('0x20')](function(_0x265b81){_0x148a2b(_0x485396['error'](0x1f4,_0x265b81[_0x49fd('0x1f')]));});});},'CheckAfterSend':function(_0x11b242){var _0x4997e6=this;return new Promise(function(_0x30c14a,_0x47bba4){_0x42fdc7['checkAfterSend'](_0x11b242)[_0x49fd('0x1e')](function(_0x206543){_0x30c14a({'code':0xc8,'message':_0x206543['message']});})[_0x49fd('0x20')](function(_0xe9596f){_0x47bba4(_0x4997e6[_0x49fd('0x13')](0x1f4,_0xe9596f[_0x49fd('0x1f')]));});});}};var _0x45153b=jayson[_0x49fd('0x82')](_0x48b999)['http']();_0x45153b['on']('error',function(_0x549914){return _0x9353cd(_0x549914);});_0x45153b[_0x49fd('0x83')](0x232a,'127.0.0.1',function(){console[_0x49fd('0x84')](_0x49fd('0x85'),0x232a);return _0x1bc16e(_0x49fd('0x86')+0x232a);});});};
\ No newline at end of file
+var _0x90ec=['undefined','values','channels','voicechannel','map','channel','%s.%s','filename','uniqueid','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','isNil','monitors','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','StopMixMonitor\x20Success','voicequeuechannel','voicequeuechannelhangup','queueChannels','Hangup','Redirect','exten','context','agents','telephones','trunks','outboundChannels','campaigns','run','Event\x20name\x20mandatory','emit','custom:','event','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','validate','bluebird','moment','../../../config/environment','../properties','listen','format','%s/%s','SIP','name','timers','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','pick','keys','action','Action','then','message','catch','join','command','Command','content','voiceQueues','hasOwnProperty','strategy','answered','available','sumBillable','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','Interval','push','length','find','omit'];(function(_0x2bfd54,_0x50ab56){var _0x711287=function(_0xed54a6){while(--_0xed54a6){_0x2bfd54['push'](_0x2bfd54['shift']());}};_0x711287(++_0x50ab56);}(_0x90ec,0x1d4));var _0xc90e=function(_0x27acce,_0x13a285){_0x27acce=_0x27acce-0x0;var _0x349785=_0x90ec[_0x27acce];return _0x349785;};'use strict';var _=require(_0xc90e('0x0'));var util=require(_0xc90e('0x1'));var jayson=require('jayson/promise');var schema=require(_0xc90e('0x2'));var BPromise=require(_0xc90e('0x3'));var moment=require(_0xc90e('0x4'));var config=require(_0xc90e('0x5'));var properties=require(_0xc90e('0x6'));var ami=require('../ami');exports[_0xc90e('0x7')]=function(_0x207b98,_0x206583,_0x54a0a8){return new BPromise(function(_0x259c62,_0x48bea9){var _0x42051a={'QueuePause':function(_0x14311a){return new Promise(function(_0x48253c,_0x3bc98f){var _0xd539f6=util[_0xc90e('0x8')](_0xc90e('0x9'),_0xc90e('0xa'),_0x14311a[_0xc90e('0xb')]);if(_0x207b98[_0xc90e('0xc')]&&_0x207b98[_0xc90e('0xc')][_0xd539f6]&&_0x207b98[_0xc90e('0xc')][_0xd539f6]['timer']){_0x207b98[_0xc90e('0xc')][_0xd539f6]['updateAcw']();}if(_0x207b98['agents'][_0xd539f6]){_0x207b98['agents'][_0xd539f6]['updateStatusRealtime']({'statePause':_0x14311a[_0xc90e('0xd')]?!![]:![]});}_0x48253c({'code':0xc8,'message':_0xc90e('0xe')});});},'Reload':function(_0x5cef50){var _0x37321a=this;return new Promise(function(_0x98aa2b,_0x52beef){if(ami[_0xc90e('0xf')]()==![]){return _0x52beef(_0x37321a[_0xc90e('0x10')](0x1f4,[config[_0xc90e('0x11')]['ip'],config[_0xc90e('0x11')][_0xc90e('0x12')],_0xc90e('0x13')]['join']('\x20')));}_0x5cef50=_[_0xc90e('0x14')](_0x5cef50,_[_0xc90e('0x15')](properties['module']));_0x5cef50[_0xc90e('0x16')]='Reload';return ami[_0xc90e('0x17')](_0x5cef50)[_0xc90e('0x18')](function(_0x558b22){_0x98aa2b({'code':0xc8,'message':_0x558b22[_0xc90e('0x19')]});})[_0xc90e('0x1a')](function(_0x17ec6b){_0x52beef(_0x37321a['error'](0x1f5,_0x17ec6b['message']));});});},'Command':function(_0x486725){var _0x161a3a=this;return new Promise(function(_0x147120,_0x25b1d7){if(ami[_0xc90e('0xf')]()==![]){return _0x25b1d7(_0x161a3a[_0xc90e('0x10')](0x1f4,[config['asterisk']['ip'],config[_0xc90e('0x11')]['username'],_0xc90e('0x13')][_0xc90e('0x1b')]('\x20')));}_0x486725=_['pick'](_0x486725,_0xc90e('0x1c'));_0x486725[_0xc90e('0x16')]=_0xc90e('0x1d');return ami[_0xc90e('0x17')](_0x486725)[_0xc90e('0x18')](function(_0x282c53){_0x147120({'code':0xc8,'message':_0x282c53[_0xc90e('0x1e')]});})[_0xc90e('0x1a')](function(_0x1cff73){_0x25b1d7(_0x161a3a['error'](0x1f5,_0x1cff73[_0xc90e('0x19')]));});});},'VoiceQueues':function(_0x41deea){return new Promise(function(_0x25223e,_0x380f3f){var _0x3371aa=[];for(var _0x59d731 in _0x207b98[_0xc90e('0x1f')]){if(_0x207b98[_0xc90e('0x1f')][_0xc90e('0x20')](_0x59d731)){var _0x4fde04=_0x207b98[_0xc90e('0x1f')][_0x59d731];var _0x2ea6e6={'id':_0x4fde04['id'],'name':_0x4fde04[_0xc90e('0xb')],'strategy':_0x4fde04[_0xc90e('0x21')],'answered':_0x4fde04[_0xc90e('0x22')],'available':_0x4fde04[_0xc90e('0x23')],'loggedIn':_0x4fde04['loggedIn'],'pTalking':_0x4fde04['pTalking'],'sumBillable':_0x4fde04[_0xc90e('0x24')],'sumDuration':_0x4fde04['sumDuration'],'sumHoldTime':_0x4fde04[_0xc90e('0x25')]||0x0,'talking':_0x4fde04[_0xc90e('0x26')],'total':_0x4fde04[_0xc90e('0x27')],'type':_0x4fde04[_0xc90e('0x28')],'unmanaged':_0x4fde04[_0xc90e('0x29')],'abandoned':_0x4fde04[_0xc90e('0x2a')],'waiting':_0x4fde04[_0xc90e('0x2b')],'loggedInDb':_0x4fde04['loggedInDb']};if(_0x4fde04[_0xc90e('0x28')]===_0xc90e('0x2c')){_0x2ea6e6['dialActive']=_0x4fde04[_0xc90e('0x2d')];_0x2ea6e6['dialMethod']=_0x4fde04[_0xc90e('0x2e')];_0x2ea6e6[_0xc90e('0x2f')]=_0x4fde04[_0xc90e('0x2f')];_0x2ea6e6[_0xc90e('0x30')]=_0x4fde04[_0xc90e('0x30')];_0x2ea6e6[_0xc90e('0x31')]=_0x4fde04[_0xc90e('0x31')];_0x2ea6e6[_0xc90e('0x32')]=_0x4fde04[_0xc90e('0x32')];_0x2ea6e6['temp']=_0x4fde04['temp'];_0x2ea6e6[_0xc90e('0x33')]=_0x4fde04[_0xc90e('0x33')];_0x2ea6e6[_0xc90e('0x34')]=_0x4fde04[_0xc90e('0x34')];_0x2ea6e6[_0xc90e('0x35')]=_0x4fde04[_0xc90e('0x35')];_0x2ea6e6[_0xc90e('0x36')]=_0x4fde04[_0xc90e('0x36')];_0x2ea6e6[_0xc90e('0x37')]=_0x4fde04[_0xc90e('0x37')];_0x2ea6e6['outboundDropCallsDayACS']=_0x4fde04[_0xc90e('0x38')];_0x2ea6e6[_0xc90e('0x39')]=_0x4fde04[_0xc90e('0x39')];_0x2ea6e6[_0xc90e('0x3a')]=_0x4fde04['outboundDropCallsDayTimeout'];_0x2ea6e6['outboundNoAnswerCallsDay']=_0x4fde04['outboundNoAnswerCallsDay'];_0x2ea6e6[_0xc90e('0x3b')]=_0x4fde04[_0xc90e('0x3b')];_0x2ea6e6[_0xc90e('0x3c')]=_0x4fde04[_0xc90e('0x3c')];_0x2ea6e6[_0xc90e('0x3d')]=_0x4fde04['outboundReCallsDay'];_0x2ea6e6[_0xc90e('0x3e')]=_0x4fde04[_0xc90e('0x3e')];_0x2ea6e6[_0xc90e('0x3f')]=_0x4fde04[_0xc90e('0x3f')];_0x2ea6e6[_0xc90e('0x40')]=_0x4fde04[_0xc90e('0x40')];_0x2ea6e6[_0xc90e('0x41')]=_0x4fde04[_0xc90e('0x41')];_0x2ea6e6[_0xc90e('0x42')]=_0x4fde04[_0xc90e('0x42')];_0x2ea6e6[_0xc90e('0x43')]=_0x4fde04[_0xc90e('0x43')];_0x2ea6e6[_0xc90e('0x44')]=_0x4fde04['predictiveIntervalDroppedCallsTimeout'];_0x2ea6e6[_0xc90e('0x45')]=_0x4fde04[_0xc90e('0x45')];_0x2ea6e6['predictiveIntervalErlangCallsDroppedCalls']=_0x4fde04['predictiveIntervalErlangCallsDroppedCalls'];_0x2ea6e6[_0xc90e('0x46')]=_0x4fde04['predictiveIntervalHitRate'];_0x2ea6e6[_0xc90e('0x47')]=_0x4fde04[_0xc90e('0x47')];_0x2ea6e6['predictiveIntervalPauses']=_0x4fde04[_0xc90e('0x48')];_0x2ea6e6['predictiveIntervalAvailable']=_0x4fde04['predictiveIntervalAvailable'];_0x2ea6e6[_0xc90e('0x49')]=_0x4fde04['predictiveIntervalTotalCalls'];_0x2ea6e6['message']=_0x4fde04[_0xc90e('0x19')];_0x2ea6e6[_0xc90e('0x4a')]=_0x4fde04['originated'];_0x2ea6e6[_0xc90e('0x4b')]=_0x4fde04[_0xc90e('0x4b')];_0x2ea6e6[_0xc90e('0x4c')]=_0x4fde04[_0xc90e('0x4c')];_0x2ea6e6[_0xc90e('0x4d')]=_0x4fde04[_0xc90e('0x4d')];_0x2ea6e6[_0xc90e('0x4e')]=_0x4fde04[_0xc90e('0x4e')];_0x2ea6e6['startPredictive']=_0x4fde04[_0xc90e('0x4f')];_0x2ea6e6['startProgressive']=_0x4fde04['startProgressive'];}if(_0x4fde04[_0xc90e('0x50')]){_0x2ea6e6['Trunk']={'id':_0x4fde04[_0xc90e('0x50')]['id'],'name':_0x4fde04['Trunk'][_0xc90e('0xb')],'active':_0x4fde04[_0xc90e('0x50')][_0xc90e('0x51')],'callerid':_0x4fde04[_0xc90e('0x50')][_0xc90e('0x52')]};}if(_0x4fde04[_0xc90e('0x53')]){_0x2ea6e6[_0xc90e('0x53')]={'id':_0x4fde04[_0xc90e('0x53')]['id'],'name':_0x4fde04[_0xc90e('0x53')]['name']};}_0x3371aa[_0xc90e('0x54')](_0x2ea6e6);}}_0x25223e({'count':_0x3371aa[_0xc90e('0x55')],'rows':_0x3371aa});});},'UpdateVoiceQueue':function(_0x317aa7){return new Promise(function(_0x24d0ca,_0x5dd284){var _0x21408a=_[_0xc90e('0x56')](_0x207b98[_0xc90e('0x1f')],{'id':parseInt(_0x317aa7['id'])});var _0x48cb44=_[_0xc90e('0x57')](_0x317aa7,['id']);if(_0x21408a){for(var _0x49c8ab in _0x48cb44){if(typeof _0x48cb44[_0x49c8ab]!==_0xc90e('0x58')&&typeof _0x21408a[_0x49c8ab]!=='undefined'){_0x21408a[_0x49c8ab]=_0x48cb44[_0x49c8ab];}}_0x24d0ca(_0x21408a);}else{_0x5dd284();}});},'VoiceChannels':function(_0x130263){return new Promise(function(_0x55e36b,_0x18cd72){var _0x45c1e0=_[_0xc90e('0x59')](_0x207b98[_0xc90e('0x5a')]);_0x55e36b({'count':_0x45c1e0[_0xc90e('0x55')],'rows':_0x45c1e0});});},'VoiceChannelMixMonitor':function(_0x35f401){var _0x1ebe62=this;return new Promise(function(_0x1d7f6a,_0x53957d){if(ami[_0xc90e('0xf')]()==![]){return _0x53957d(_0x1ebe62[_0xc90e('0x10')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0xc90e('0x12')],'ami\x20disconnected'][_0xc90e('0x1b')]('\x20')));}var _0x3ae820=schema(properties[_0xc90e('0x5b')])[_0xc90e('0x2')](_0x35f401);if(_0x3ae820[_0xc90e('0x55')]>0x0){return _0x53957d(_0x1ebe62['error'](0x1f4,_[_0xc90e('0x5c')](_0x3ae820,_0xc90e('0x19'))['join'](',\x20')));}var _0x2f6d54=_['find'](_0x207b98[_0xc90e('0x5a')],{'uniqueid':_0x35f401['uniqueid']});if(_0x2f6d54&&_0x2f6d54[_0xc90e('0x5d')]){var _0x1d8bd0=util[_0xc90e('0x8')](_0xc90e('0x5e'),_0x35f401[_0xc90e('0x5f')]||_0x35f401[_0xc90e('0x60')],_0x35f401[_0xc90e('0x8')]||_0xc90e('0x61'));return ami[_0xc90e('0x17')]({'action':_0xc90e('0x62'),'channel':_0x2f6d54[_0xc90e('0x5d')],'file':_0x1d8bd0,'options':_0xc90e('0x63')})[_0xc90e('0x18')](function(_0x6d0a9d){var _0x358568=_[_0xc90e('0x56')](_0x2f6d54['monitors'],{'filename':_0xc90e('0x64')+_0x1d8bd0[_0xc90e('0x65')]()});if(_[_0xc90e('0x66')](_0x358568)){_0x2f6d54[_0xc90e('0x67')][_0xc90e('0x54')]({'filename':_0xc90e('0x64')+_0x1d8bd0[_0xc90e('0x65')](),'createdAt':moment()['format'](_0xc90e('0x68')),'mixmonitorid':_0x6d0a9d['mixmonitorid'],'status':_0xc90e('0x69')});}else{_0x358568[_0xc90e('0x6a')]=_0x6d0a9d[_0xc90e('0x6a')];_0x358568[_0xc90e('0x6b')]=_0xc90e('0x69');}_0x1d7f6a({'code':0xc8,'message':[_0x35f401['uniqueid'],_0xc90e('0x6c'),_0x6d0a9d[_0xc90e('0x6a')]]['join']('\x20'),'mixmonitorid':_0x6d0a9d[_0xc90e('0x6a')]});})[_0xc90e('0x1a')](function(_0x288571){_0x53957d(_0x1ebe62[_0xc90e('0x10')](0x1f5,[_0x35f401['uniqueid'],_0x288571['message'][_0xc90e('0x65')]()][_0xc90e('0x1b')]('\x20')));});}else{return _0x53957d(_0x1ebe62[_0xc90e('0x10')](0x1f5,_0xc90e('0x6d')));}});},'VoiceChannelStopMixMonitor':function(_0x2cc917){var _0x4c44ea=this;return new Promise(function(_0x3e8c0d,_0x40b61e){if(ami['isConnected']()==![]){return _0x40b61e(_0x4c44ea['error'](0x1f4,[config[_0xc90e('0x11')]['ip'],config[_0xc90e('0x11')][_0xc90e('0x12')],_0xc90e('0x13')]['join']('\x20')));}var _0x33cd37=schema(properties[_0xc90e('0x5b')])[_0xc90e('0x2')](_0x2cc917);if(_0x33cd37[_0xc90e('0x55')]>0x0){return _0x40b61e(_0x4c44ea[_0xc90e('0x10')](0x1f4,_[_0xc90e('0x5c')](_0x33cd37,_0xc90e('0x19'))[_0xc90e('0x1b')](',\x20')));}var _0x57db5e=_[_0xc90e('0x56')](_0x207b98[_0xc90e('0x5a')],{'uniqueid':_0x2cc917[_0xc90e('0x60')]});if(_0x57db5e){return BPromise[_0xc90e('0x6e')]()[_0xc90e('0x18')](function(){if(_0x57db5e['channel']){return ami[_0xc90e('0x17')]({'action':_0xc90e('0x6f'),'channel':_0x57db5e[_0xc90e('0x5d')],'mixmonitorid':_0x2cc917['mixmonitorid']})['catch'](function(_0x31bca6){});}})['then'](function(){if(_0x57db5e[_0xc90e('0x70')]){return ami['Action']({'action':_0xc90e('0x6f'),'channel':_0x57db5e[_0xc90e('0x70')],'mixmonitorid':_0x2cc917[_0xc90e('0x6a')]})[_0xc90e('0x1a')](function(_0x10d31b){});}})[_0xc90e('0x18')](function(_0xb44c95){var _0x5db362=_[_0xc90e('0x56')](_0x57db5e[_0xc90e('0x67')],{'mixmonitorid':_0x2cc917[_0xc90e('0x6a')]});if(_0x5db362){_0x5db362[_0xc90e('0x6b')]='stop';}})[_0xc90e('0x18')](function(){var _0x511e33=util['format']('%s.%s',_0x2cc917['filename']||_0x2cc917[_0xc90e('0x60')],_0x2cc917[_0xc90e('0x8')]||'wav');var _0x5c6240=_[_0xc90e('0x56')](_0x57db5e[_0xc90e('0x67')],{'filename':_0xc90e('0x64')+_0x511e33[_0xc90e('0x65')]()});if(_0x5c6240){_0x5c6240[_0xc90e('0x6b')]='stop';}})[_0xc90e('0x18')](function(){_0x3e8c0d({'code':0xc8,'message':[_0x2cc917[_0xc90e('0x60')],_0xc90e('0x71')][_0xc90e('0x1b')]('\x20')});})[_0xc90e('0x1a')](function(_0x4783fb){_0x40b61e(_0x4c44ea['error'](0x1f5,[_0x2cc917[_0xc90e('0x60')],_0x4783fb['message'][_0xc90e('0x65')]()]['join']('\x20')));});}else{return _0x40b61e(_0x4c44ea['error'](0x1f5,_0xc90e('0x6d')));}});},'VoiceQueuesChannels':function(_0x2b02f1){return new Promise(function(_0x51f714,_0x441879){var _0x59765e=_['values'](_0x207b98['queueChannels']);_0x51f714({'count':_0x59765e['length'],'rows':_0x59765e});});},'VoiceQueuesChannel':function(_0xa26ec4){var _0x1ac648=this;return new Promise(function(_0x5a3fc6,_0x104288){var _0x115f53=schema(properties[_0xc90e('0x72')])[_0xc90e('0x2')](_0xa26ec4);if(_0x115f53[_0xc90e('0x55')]>0x0){return _0x104288(_0x1ac648[_0xc90e('0x10')](0x1f4,_[_0xc90e('0x5c')](_0x115f53,'message')[_0xc90e('0x1b')](',\x20')));}var _0x3e88de=_['find'](_0x207b98['queueChannels'],{'uniqueid':_0xa26ec4[_0xc90e('0x60')]});if(_0x3e88de){_0x5a3fc6(_0x3e88de);}else{return _0x104288(_0x1ac648['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x1df4de){var _0x3f44f0=this;return new Promise(function(_0x3fa878,_0x16a95f){if(ami[_0xc90e('0xf')]()==![]){return _0x16a95f(_0x3f44f0[_0xc90e('0x10')](0x1f4,[config[_0xc90e('0x11')]['ip'],config['asterisk'][_0xc90e('0x12')],_0xc90e('0x13')]['join']('\x20')));}var _0x29619f=schema(properties[_0xc90e('0x73')])[_0xc90e('0x2')](_0x1df4de);if(_0x29619f['length']>0x0){return _0x16a95f(_0x3f44f0['error'](0x1f4,_[_0xc90e('0x5c')](_0x29619f,'message')[_0xc90e('0x1b')](',\x20')));}var _0x2f86a6=_[_0xc90e('0x56')](_0x207b98[_0xc90e('0x74')],{'uniqueid':_0x1df4de['uniqueid']});if(_0x2f86a6&&_0x2f86a6[_0xc90e('0x5d')]){return ami[_0xc90e('0x17')]({'action':_0xc90e('0x75'),'channel':_0x2f86a6[_0xc90e('0x5d')]})['then'](function(_0x12a7cd){_0x3fa878({'code':0xc8,'message':[_0x1df4de['uniqueid'],_0x12a7cd[_0xc90e('0x19')][_0xc90e('0x65')]()][_0xc90e('0x1b')]('\x20')});})[_0xc90e('0x1a')](function(_0x264b7f){_0x16a95f(_0x3f44f0['error'](0x1f5,[_0x1df4de[_0xc90e('0x60')],_0x264b7f[_0xc90e('0x19')]['toLowerCase']()][_0xc90e('0x1b')]('\x20')));});}else{return _0x16a95f(_0x3f44f0[_0xc90e('0x10')](0x1f5,_0xc90e('0x6d')));}});},'VoiceQueuesChannelRedirect':function(_0x387964){var _0x306002=this;return new Promise(function(_0x2915bf,_0x4b5843){if(ami['isConnected']()==![]){return _0x4b5843(_0x306002[_0xc90e('0x10')](0x1f4,[config[_0xc90e('0x11')]['ip'],config[_0xc90e('0x11')][_0xc90e('0x12')],'ami\x20disconnected'][_0xc90e('0x1b')]('\x20')));}var _0x5a3b0f=schema(properties['voicequeuechannelredirect'])[_0xc90e('0x2')](_0x387964);if(_0x5a3b0f[_0xc90e('0x55')]>0x0){return _0x4b5843(_0x306002[_0xc90e('0x10')](0x1f4,_['map'](_0x5a3b0f,_0xc90e('0x19'))[_0xc90e('0x1b')](',\x20')));}var _0xcbdef4=_[_0xc90e('0x56')](_0x207b98[_0xc90e('0x74')],{'uniqueid':_0x387964['uniqueid']});if(_0xcbdef4&&_0xcbdef4[_0xc90e('0x5d')]){return ami[_0xc90e('0x17')]({'action':_0xc90e('0x76'),'channel':_0xcbdef4[_0xc90e('0x5d')],'exten':_0x387964[_0xc90e('0x77')],'context':_0x387964['context']||_0xcbdef4[_0xc90e('0x78')],'priority':0x1})[_0xc90e('0x18')](function(_0x3926e3){_0x2915bf({'code':0xc8,'message':[_0x387964[_0xc90e('0x60')],_0x3926e3['message'][_0xc90e('0x65')]()][_0xc90e('0x1b')]('\x20')});})[_0xc90e('0x1a')](function(_0x7dd466){_0x4b5843(_0x306002['error'](0x1f5,[_0x387964[_0xc90e('0x60')],_0x7dd466[_0xc90e('0x19')][_0xc90e('0x65')]()][_0xc90e('0x1b')]('\x20')));});}else{return _0x4b5843(_0x306002['error'](0x1f5,_0xc90e('0x6d')));}});},'Agents':function(_0x5c844d){return new Promise(function(_0x466275,_0xa83990){var _0x58f17d=_[_0xc90e('0x59')](_0x207b98[_0xc90e('0x79')]);_0x466275({'count':_0x58f17d[_0xc90e('0x55')],'rows':_0x58f17d});});},'Telephones':function(_0x474b17){return new Promise(function(_0x169cf2,_0x51c8c5){var _0x1054dc=_[_0xc90e('0x59')](_0x207b98[_0xc90e('0x7a')]);_0x169cf2({'count':_0x1054dc[_0xc90e('0x55')],'rows':_0x1054dc});});},'Trunks':function(_0x32e063){return new Promise(function(_0x9ac7e9,_0x1e3aba){var _0x20adcb=_[_0xc90e('0x59')](_0x207b98[_0xc90e('0x7b')]);_0x9ac7e9({'count':_0x20adcb[_0xc90e('0x55')],'rows':_0x20adcb});});},'OutboundChannels':function(_0x5a1a79){return new Promise(function(_0x103a51,_0x1019dd){var _0x546b39=_['values'](_0x207b98[_0xc90e('0x7c')]);_0x103a51({'count':_0x546b39[_0xc90e('0x55')],'rows':_0x546b39});});},'Outbound':function(_0x4bc529){return new Promise(function(_0x5743ec,_0x49bee2){_0x5743ec(_0x207b98['outbound']);});},'Campaigns':function(_0x5f2c65){return new Promise(function(_0x1eb1b9,_0x5ba415){var _0x34ee10=_[_0xc90e('0x59')](_0x207b98[_0xc90e('0x7d')]);_0x1eb1b9({'count':_0x34ee10['length'],'rows':_0x34ee10});});},'VoiceQueuesPreview':function(_0x4fbb50){var _0x3e1e4a=this;return new Promise(function(_0x58df42,_0x2a792c){_0x206583[_0xc90e('0x7e')](_0x4fbb50['id'])[_0xc90e('0x18')](function(_0x4bad23){_0x58df42({'code':0xc8,'message':_0x4bad23[_0xc90e('0x19')]});})[_0xc90e('0x1a')](function(_0x3810fe){_0x2a792c(_0x3e1e4a['error'](0x1f4,_0x3810fe[_0xc90e('0x19')]));});});},'EventManager':function(_0x3b2c01){var _0x46e954=this;return new Promise(function(_0x5b49fe,_0x328a92){if(!_0x3b2c01['event']){return _0x328a92(_0x46e954['error'](0x1f4,_0xc90e('0x7f')));}ami[_0xc90e('0x80')](_0xc90e('0x81')+_0x3b2c01[_0xc90e('0x82')],_0x3b2c01[_0xc90e('0x19')]);_0x5b49fe({'code':0xc8,'message':_0x3b2c01});});},'FaxAccounts':function(_0x347673){return new Promise(function(_0x247c1c,_0x322f90){var _0x1800ae=_[_0xc90e('0x59')](_0x207b98[_0xc90e('0x83')]);_0x247c1c({'count':_0x1800ae['length'],'rows':_0x1800ae});});},'SendFax':function(_0x2c01f5){var _0x5c12e2=this;return new Promise(function(_0x2e8d6a,_0x19de29){_0x54a0a8[_0xc90e('0x84')](_0x2c01f5)['then'](function(_0x1ca398){_0x2e8d6a({'code':0xc8,'message':_0x1ca398[_0xc90e('0x19')]});})[_0xc90e('0x1a')](function(_0x349040){_0x19de29(_0x5c12e2[_0xc90e('0x10')](0x1f4,_0x349040[_0xc90e('0x19')]));});});},'CheckAfterSend':function(_0x467b3e){var _0x3784ba=this;return new Promise(function(_0x21ce32,_0x146b6e){_0x54a0a8[_0xc90e('0x85')](_0x467b3e)['then'](function(_0x104005){_0x21ce32({'code':0xc8,'message':_0x104005[_0xc90e('0x19')]});})[_0xc90e('0x1a')](function(_0x17e531){_0x146b6e(_0x3784ba[_0xc90e('0x10')](0x1f4,_0x17e531[_0xc90e('0x19')]));});});}};var _0x3922f5=jayson[_0xc90e('0x86')](_0x42051a)[_0xc90e('0x87')]();_0x3922f5['on'](_0xc90e('0x10'),function(_0x590b13){return _0x48bea9(_0x590b13);});_0x3922f5[_0xc90e('0x7')](0x232a,_0xc90e('0x88'),function(){console['log'](_0xc90e('0x89'),0x232a);return _0x259c62(_0xc90e('0x8a')+0x232a);});});};
\ No newline at end of file
index 45c2386..c81f6bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['xmd-contactid','data3','split','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','phone','fax','ListId','createdAt','scheduledAt','union','then','getContacts','length','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','trigger:%s','merge','lodash','bluebird','ioredis','util','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','info','[CM][%s][%s]','stringify','emit','exec','data2','isNil','data5'];(function(_0x542a20,_0x4d3367){var _0x4916c9=function(_0x5ecc07){while(--_0x5ecc07){_0x542a20['push'](_0x542a20['shift']());}};_0x4916c9(++_0x4d3367);}(_0x34e8,0x12c));var _0x834e=function(_0x379459,_0x3388ec){_0x379459=_0x379459-0x0;var _0x17bd68=_0x34e8[_0x379459];return _0x17bd68;};'use strict';var _=require(_0x834e('0x0'));var BPromise=require(_0x834e('0x1'));var Redis=require(_0x834e('0x2'));var util=require(_0x834e('0x3'));var config=require('../../../../config/environment');var logger=require(_0x834e('0x4'))(_0x834e('0x5'));var cmContactRpc=require(_0x834e('0x6'));config[_0x834e('0x7')]=_[_0x834e('0x8')](config[_0x834e('0x7')],{'host':_0x834e('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x7')]));function emit(_0x52056d,_0x3e16d2,_0x3cc2e3,_0x3a3ef6,_0x2e69e2){logger[_0x834e('0xa')](_0x834e('0xb'),_0x52056d,_0x3e16d2['id'],_0x3cc2e3,_0x3a3ef6,JSON[_0x834e('0xc')](_0x2e69e2));io['to'](_0x3cc2e3)[_0x834e('0xd')](_0x3a3ef6,_0x2e69e2);}exports[_0x834e('0xe')]=function(_0x186b3b,_0x1e41fe,_0x36e124,_0x14038b){var _0x2e1a37,_0x293514;var _0x1e00de={};var _0x2fd95c=Number(_0x36e124['data1']);var _0x5e5b6d=_0x36e124[_0x834e('0xf')]?Boolean(Number(_0x36e124['data2'])):![];var _0x23848e;var _0x2d95f2=![];if(!_[_0x834e('0x10')](_0x36e124[_0x834e('0x11')])){if(_0x36e124['data5']=='1')_0x2d95f2=!![];}if(!_0x2d95f2){if(_0x14038b[_0x834e('0x12')]){_0x1e00de['id']=_0x14038b[_0x834e('0x12')];}}if(!_0x1e00de['id']){_0x1e00de['ListId']=_0x2fd95c;_0x23848e=_0x36e124[_0x834e('0x13')]&&_0x36e124['data3']!=='0'?_0x36e124[_0x834e('0x13')][_0x834e('0x14')](','):['phone'];_0x1e00de[_0x834e('0x15')]=_[_0x834e('0x16')](_0x23848e,function(_0x370fb5){var _0x50b3f6={};_0x50b3f6[_0x370fb5]=_0x14038b[_0x834e('0x17')]?_0x14038b[_0x834e('0x18')]:_0x14038b[_0x834e('0x19')];return _0x50b3f6;});}var _0xb993a1=['id',_0x834e('0x1a'),_0x834e('0x1b'),_0x834e('0x1c'),'mobile',_0x834e('0x1d'),_0x834e('0x1e'),_0x834e('0x1f'),_0x834e('0x20'),'updatedAt'];var _0x45a630=_[_0x834e('0x21')](_0xb993a1,_0x23848e);BPromise['resolve']()[_0x834e('0x22')](cmContactRpc[_0x834e('0x23')]({'attributes':_0x45a630,'where':_0x1e00de}))[_0x834e('0x22')](function(_0x5c55ca){_0x293514=_0x5c55ca;if(!_['isEmpty'](_0x293514)){if(_0x293514[_0x834e('0x24')]===0x1){_0x2e1a37=_0x293514[0x0];logger[_0x834e('0xa')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x14038b[_0x834e('0x25')],_0x1e41fe['id'],_0x2e1a37['id']);}else{logger[_0x834e('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x14038b[_0x834e('0x25')],_0x1e41fe['id'],_[_0x834e('0x16')](_0x293514,'id')[_0x834e('0x26')](','));}return;}else{logger['info'](_0x834e('0x27'),_0x14038b[_0x834e('0x25')],_0x1e41fe['id']);var _0x5e1cc5={'ListId':_0x2fd95c};var _0x5bef62=_0x36e124[_0x834e('0x28')]&&_0x36e124['data4']!=='0'?_0x36e124[_0x834e('0x28')]:_0x834e('0x1c');if(_0x5e5b6d){logger[_0x834e('0xa')](_0x834e('0x29'),_0x14038b[_0x834e('0x25')],_0x1e41fe['id']);_0x5e1cc5[_0x5bef62]=_[_0x834e('0x10')](_0x14038b['routeId'])?_0x14038b['calleridnum']:_0x14038b['destcalleridnum'];if(_['isNil'](_0x14038b[_0x834e('0x17')])){_0x5e1cc5[_0x834e('0x1a')]=_0x14038b[_0x834e('0x2a')]&&_0x14038b['calleridname']!==_0x834e('0x2b')?_0x14038b[_0x834e('0x2a')]:_0x834e('0x2c');}else{_0x5e1cc5[_0x834e('0x1a')]=_0x14038b[_0x834e('0x2d')]&&_0x14038b[_0x834e('0x2d')]!==_0x834e('0x2b')?_0x14038b[_0x834e('0x2d')]:_0x834e('0x2c');}return BPromise['resolve']()[_0x834e('0x22')](cmContactRpc['createContact'](_0x5e1cc5))[_0x834e('0x22')](function(_0x3787b0){_0x2e1a37=_0x3787b0;_0x293514[_0x834e('0x2e')](_0x3787b0);if(_0x2e1a37){logger[_0x834e('0xa')](_0x834e('0x2f'),_0x14038b[_0x834e('0x25')],_0x1e41fe['id'],_0x2e1a37['id']);}return;});}else{logger[_0x834e('0xa')](_0x834e('0x30'),_0x14038b[_0x834e('0x25')],_0x1e41fe['id']);_0x5e1cc5[_0x5bef62]=_[_0x834e('0x10')](_0x14038b['routeId'])?_0x14038b[_0x834e('0x19')]:_0x14038b[_0x834e('0x18')];if(_[_0x834e('0x10')](_0x14038b[_0x834e('0x17')])){_0x5e1cc5['firstName']=_0x14038b[_0x834e('0x2a')]&&_0x14038b[_0x834e('0x2a')]!=='<unknown>'?_0x14038b['calleridname']:'Unknown';}else{_0x5e1cc5[_0x834e('0x1a')]=_0x14038b[_0x834e('0x2d')]&&_0x14038b[_0x834e('0x2d')]!==_0x834e('0x2b')?_0x14038b[_0x834e('0x2d')]:_0x834e('0x2c');}_0x2e1a37=_0x5e1cc5;_0x293514['push'](_0x5e1cc5);return;}}})[_0x834e('0x22')](function(){if(_0x186b3b){emit(_0x14038b['uniqueid'],_0x1e41fe,util[_0x834e('0x31')](_0x834e('0x32'),_0x186b3b['name']),util[_0x834e('0x31')](_0x834e('0x33'),_0x36e124['action']['toLowerCase']()),{'evt':_[_0x834e('0x34')](_0x14038b,{'autoCreate':_0x5e5b6d}),'contact':_0x2e1a37===undefined?{}:_0x2e1a37,'contacts':_0x293514[_0x834e('0x24')]===0x0?undefined:_0x293514});}});};
\ No newline at end of file
+var _0x425d=['map','routeId','destcalleridnum','calleridnum','fax','createdAt','updatedAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','firstName','calleridname','<unknown>','Unknown','destcalleridname','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','action','toLowerCase','lodash','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or'];(function(_0x4226ca,_0x1f41ba){var _0xc92934=function(_0xd0f1f1){while(--_0xd0f1f1){_0x4226ca['push'](_0x4226ca['shift']());}};_0xc92934(++_0x1f41ba);}(_0x425d,0x1e0));var _0xd425=function(_0x1dfa55,_0x1d2007){_0x1dfa55=_0x1dfa55-0x0;var _0x893d0e=_0x425d[_0x1dfa55];return _0x893d0e;};'use strict';var _=require(_0xd425('0x0'));var BPromise=require('bluebird');var Redis=require(_0xd425('0x1'));var util=require(_0xd425('0x2'));var config=require(_0xd425('0x3'));var logger=require(_0xd425('0x4'))(_0xd425('0x5'));var cmContactRpc=require(_0xd425('0x6'));config[_0xd425('0x7')]=_['defaults'](config[_0xd425('0x7')],{'host':_0xd425('0x8'),'port':0x18eb});var io=require(_0xd425('0x9'))(new Redis(config[_0xd425('0x7')]));function emit(_0x1d97d9,_0x1d2ed0,_0x50b061,_0xb6ba8e,_0x374c3d){logger[_0xd425('0xa')](_0xd425('0xb'),_0x1d97d9,_0x1d2ed0['id'],_0x50b061,_0xb6ba8e,JSON[_0xd425('0xc')](_0x374c3d));io['to'](_0x50b061)[_0xd425('0xd')](_0xb6ba8e,_0x374c3d);}exports[_0xd425('0xe')]=function(_0x1969ba,_0x3a7a01,_0x35a7f4,_0x3d2bcf){var _0x10d463,_0x26f6d2;var _0x448149={};var _0x179742=Number(_0x35a7f4[_0xd425('0xf')]);var _0x9bb611=_0x35a7f4[_0xd425('0x10')]?Boolean(Number(_0x35a7f4[_0xd425('0x10')])):![];var _0x18eafb;var _0x51263f=![];if(!_[_0xd425('0x11')](_0x35a7f4[_0xd425('0x12')])){if(_0x35a7f4[_0xd425('0x12')]=='1')_0x51263f=!![];}if(!_0x51263f){if(_0x3d2bcf['xmd-contactid']){_0x448149['id']=_0x3d2bcf[_0xd425('0x13')];}}if(!_0x448149['id']){_0x448149[_0xd425('0x14')]=_0x179742;_0x18eafb=_0x35a7f4[_0xd425('0x15')]&&_0x35a7f4[_0xd425('0x15')]!=='0'?_0x35a7f4[_0xd425('0x15')]['split'](','):[_0xd425('0x16')];_0x448149[_0xd425('0x17')]=_[_0xd425('0x18')](_0x18eafb,function(_0x5dda0c){var _0x5d6585={};_0x5d6585[_0x5dda0c]=_0x3d2bcf[_0xd425('0x19')]?_0x3d2bcf[_0xd425('0x1a')]:_0x3d2bcf[_0xd425('0x1b')];return _0x5d6585;});}var _0x1155bc=['id','firstName','lastName','phone','mobile',_0xd425('0x1c'),_0xd425('0x14'),_0xd425('0x1d'),'scheduledAt',_0xd425('0x1e')];var _0x7e982e=_['union'](_0x1155bc,_0x18eafb);BPromise[_0xd425('0x1f')]()[_0xd425('0x20')](cmContactRpc[_0xd425('0x21')]({'attributes':_0x7e982e,'where':_0x448149}))[_0xd425('0x20')](function(_0x3e93db){_0x26f6d2=_0x3e93db;if(!_[_0xd425('0x22')](_0x26f6d2)){if(_0x26f6d2[_0xd425('0x23')]===0x1){_0x10d463=_0x26f6d2[0x0];logger[_0xd425('0xa')](_0xd425('0x24'),_0x3d2bcf[_0xd425('0x25')],_0x3a7a01['id'],_0x10d463['id']);}else{logger[_0xd425('0xa')](_0xd425('0x26'),_0x3d2bcf['uniqueid'],_0x3a7a01['id'],_[_0xd425('0x18')](_0x26f6d2,'id')[_0xd425('0x27')](','));}return;}else{logger[_0xd425('0xa')](_0xd425('0x28'),_0x3d2bcf[_0xd425('0x25')],_0x3a7a01['id']);var _0x400dd7={'ListId':_0x179742};var _0x3c3402=_0x35a7f4['data4']&&_0x35a7f4[_0xd425('0x29')]!=='0'?_0x35a7f4[_0xd425('0x29')]:_0xd425('0x16');if(_0x9bb611){logger['info'](_0xd425('0x2a'),_0x3d2bcf[_0xd425('0x25')],_0x3a7a01['id']);_0x400dd7[_0x3c3402]=_[_0xd425('0x11')](_0x3d2bcf[_0xd425('0x19')])?_0x3d2bcf[_0xd425('0x1b')]:_0x3d2bcf[_0xd425('0x1a')];if(_[_0xd425('0x11')](_0x3d2bcf[_0xd425('0x19')])){_0x400dd7[_0xd425('0x2b')]=_0x3d2bcf[_0xd425('0x2c')]&&_0x3d2bcf['calleridname']!==_0xd425('0x2d')?_0x3d2bcf[_0xd425('0x2c')]:_0xd425('0x2e');}else{_0x400dd7[_0xd425('0x2b')]=_0x3d2bcf[_0xd425('0x2f')]&&_0x3d2bcf[_0xd425('0x2f')]!==_0xd425('0x2d')?_0x3d2bcf[_0xd425('0x2f')]:_0xd425('0x2e');}return BPromise[_0xd425('0x1f')]()[_0xd425('0x20')](cmContactRpc['createContact'](_0x400dd7))[_0xd425('0x20')](function(_0x2a2a9b){_0x10d463=_0x2a2a9b;_0x26f6d2[_0xd425('0x30')](_0x2a2a9b);if(_0x10d463){logger[_0xd425('0xa')](_0xd425('0x31'),_0x3d2bcf['uniqueid'],_0x3a7a01['id'],_0x10d463['id']);}return;});}else{logger[_0xd425('0xa')](_0xd425('0x32'),_0x3d2bcf['uniqueid'],_0x3a7a01['id']);_0x400dd7[_0x3c3402]=_['isNil'](_0x3d2bcf['routeId'])?_0x3d2bcf[_0xd425('0x1b')]:_0x3d2bcf[_0xd425('0x1a')];if(_[_0xd425('0x11')](_0x3d2bcf[_0xd425('0x19')])){_0x400dd7['firstName']=_0x3d2bcf[_0xd425('0x2c')]&&_0x3d2bcf[_0xd425('0x2c')]!==_0xd425('0x2d')?_0x3d2bcf[_0xd425('0x2c')]:_0xd425('0x2e');}else{_0x400dd7[_0xd425('0x2b')]=_0x3d2bcf[_0xd425('0x2f')]&&_0x3d2bcf['destcalleridname']!==_0xd425('0x2d')?_0x3d2bcf['destcalleridname']:_0xd425('0x2e');}_0x10d463=_0x400dd7;_0x26f6d2[_0xd425('0x30')](_0x400dd7);return;}}})[_0xd425('0x20')](function(){if(_0x1969ba){emit(_0x3d2bcf['uniqueid'],_0x3a7a01,util[_0xd425('0x33')](_0xd425('0x34'),_0x1969ba[_0xd425('0x35')]),util[_0xd425('0x33')]('trigger:%s',_0x35a7f4[_0xd425('0x36')][_0xd425('0x37')]()),{'evt':_['merge'](_0x3d2bcf,{'autoCreate':_0x9bb611}),'contact':_0x10d463===undefined?{}:_0x10d463,'contacts':_0x26f6d2['length']===0x0?undefined:_0x26f6d2});}});};
\ No newline at end of file
index 9463c9f..e7dc3c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cdd=['url','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','socket.io-emitter','popup','triggers','agents','templates','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','stringify','clone','undefined','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','Actions','action','toLowerCase','contactmanager','data1','TemplateId','data2','html','render','buildUri','data3','isNil','location','uriLocation','data4','data5','800','windowHeight','data6','600','winapp','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','trigger:%s','exec','integration','voiceQueues','queue','voiceExtensions','routeId','urlforward','parse','query','replace','channel','motionChannel','AllConditions','length','every','checkConditions','AnyConditions','field','account','chat','operator','upperFirst','AccountId','value','interaction','message','event','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','created','util','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0cdd,0x184));var _0xd0cd=function(_0x111828,_0x1cdb50){_0x111828=_0x111828-0x0;var _0x26c292=_0x0cdd[_0x111828];return _0x26c292;};'use strict';var util=require(_0xd0cd('0x0'));var _=require(_0xd0cd('0x1'));var url=require(_0xd0cd('0x2'));var Mustache=require('mustache');var Redis=require(_0xd0cd('0x3'));var urlforward=require(_0xd0cd('0x4'));var integration=require(_0xd0cd('0x5'));var cmContact=require(_0xd0cd('0x6'));var script=require(_0xd0cd('0x7'));var config=require(_0xd0cd('0x8'));var logger=require(_0xd0cd('0x9'))(_0xd0cd('0xa'));var ami=require(_0xd0cd('0xb'));config[_0xd0cd('0xc')]=_[_0xd0cd('0xd')](config[_0xd0cd('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0xd0cd('0xe'))(new Redis(config['redis']));var operators={'equals':function(_0x447a95,_0x41b014){return _0x447a95==_0x41b014;},'not_equals':function(_0x5738d6,_0x583e10){return _0x5738d6!=_0x583e10;}};var barAndWebActions=[_0xd0cd('0xf'),'url','winapp'];function Trigger(_0x5c4c9b){this[_0xd0cd('0x10')]=_0x5c4c9b['triggers'];this[_0xd0cd('0x11')]=_0x5c4c9b[_0xd0cd('0x11')];this['voiceQueues']=_0x5c4c9b['voiceQueues'];this[_0xd0cd('0x12')]=_0x5c4c9b[_0xd0cd('0x12')];this['voiceExtensions']=_0x5c4c9b['voiceExtensions'];this[_0xd0cd('0x13')]=_0x5c4c9b[_0xd0cd('0x13')];this[_0xd0cd('0x14')]=_0x5c4c9b[_0xd0cd('0x14')];this[_0xd0cd('0x15')]=_0x5c4c9b[_0xd0cd('0x15')];this[_0xd0cd('0x16')]=_0x5c4c9b[_0xd0cd('0x16')];this['zohoAccounts']=_0x5c4c9b[_0xd0cd('0x17')];this[_0xd0cd('0x18')]=_0x5c4c9b['deskAccounts'];this[_0xd0cd('0x19')]=_0x5c4c9b[_0xd0cd('0x19')];this[_0xd0cd('0x1a')]=_0x5c4c9b[_0xd0cd('0x1a')];this[_0xd0cd('0x1b')]=_0x5c4c9b[_0xd0cd('0x1b')];this[_0xd0cd('0x1c')]=_0x5c4c9b[_0xd0cd('0x1c')];this[_0xd0cd('0x1d')]={'zendesk':this[_0xd0cd('0x13')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xd0cd('0x14')],'sugarcrm':this[_0xd0cd('0x16')],'zoho':this['zohoAccounts'],'desk':this['deskAccounts'],'vtiger':this[_0xd0cd('0x19')],'dynamics365':this[_0xd0cd('0x1b')],'freshsales':this[_0xd0cd('0x1c')],'servicenow':this['servicenowAccounts']};ami['on'](_0xd0cd('0x1e'),this['syncCustomEvent'][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x20'),this[_0xd0cd('0x21')]['bind'](this));ami['on']('custom:agentringnoanswer',this['syncCustomEvent'][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x22'),this[_0xd0cd('0x21')]['bind'](this));ami['on'](_0xd0cd('0x23'),this[_0xd0cd('0x21')]['bind'](this));ami['on'](_0xd0cd('0x24'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x25'),this[_0xd0cd('0x21')]['bind'](this));ami['on'](_0xd0cd('0x26'),this['syncCustomEvent'][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x27'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x28'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x29'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x2a'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x2b'),this[_0xd0cd('0x2c')]['bind'](this));ami['on'](_0xd0cd('0x2d'),this[_0xd0cd('0x2c')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x2e'),this[_0xd0cd('0x2c')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x2f'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x30'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x31'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x32'),this['syncCustomEvent'][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x33'),this[_0xd0cd('0x21')]['bind'](this));ami['on'](_0xd0cd('0x34'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));ami['on'](_0xd0cd('0x35'),this[_0xd0cd('0x21')]['bind'](this));ami['on'](_0xd0cd('0x36'),this[_0xd0cd('0x21')][_0xd0cd('0x1f')](this));}Trigger[_0xd0cd('0x37')][_0xd0cd('0x38')]=function(_0xa0387f,_0x16f123,_0x244a7e){logger[_0xd0cd('0x39')](_0xa0387f,_0x16f123,JSON[_0xd0cd('0x3a')](_0x244a7e));io['to'](_0xa0387f)[_0xd0cd('0x38')](_0x16f123,_0x244a7e);};Trigger[_0xd0cd('0x37')][_0xd0cd('0x21')]=function(_0x1685d4){var _0x4c20ea=_[_0xd0cd('0x3b')](_0x1685d4);if(typeof _0x4c20ea['motionChannel']===_0xd0cd('0x3c')){_0x4c20ea['motionChannel']=_0xd0cd('0x3d');}this[_0xd0cd('0x3e')](_0x4c20ea);};Trigger[_0xd0cd('0x37')][_0xd0cd('0x2c')]=function(_0x24a10d){if(this[_0xd0cd('0x11')][_0x24a10d[_0xd0cd('0x3f')]]){this[_0xd0cd('0x21')](_0x24a10d);}};Trigger[_0xd0cd('0x37')][_0xd0cd('0x3e')]=function(_0x5ac9b8){var _0x1e04f7;for(var _0x4f5670 in this[_0xd0cd('0x10')]){if(this[_0xd0cd('0x10')][_0xd0cd('0x40')](_0x4f5670)){if(this[_0xd0cd('0x10')][_0x4f5670][_0xd0cd('0x41')]){_0x1e04f7=this[_0xd0cd('0x42')](this['triggers'][_0x4f5670],_0x5ac9b8);if(_0x1e04f7){_[_0xd0cd('0x43')](_0x5ac9b8,_0x5ac9b8['variables']);for(var _0x1d9d23=0x0,_0x258633,_0x5d4790,_0x21138c;_0x1d9d23<this[_0xd0cd('0x10')][_0x4f5670][_0xd0cd('0x44')]['length'];_0x1d9d23+=0x1){_0x258633=this[_0xd0cd('0x10')][_0x4f5670][_0xd0cd('0x44')][_0x1d9d23];if(this['agents'][_0x5ac9b8[_0xd0cd('0x3f')]]){switch(_0x258633[_0xd0cd('0x45')][_0xd0cd('0x46')]()){case _0xd0cd('0x47'):break;case'motionbar':case'browser':var _0x33a543={};switch(barAndWebActions[_0x258633[_0xd0cd('0x48')]]){case _0xd0cd('0xf'):_0x33a543[_0xd0cd('0x49')]=_0x258633[_0xd0cd('0x4a')];_0x33a543[_0xd0cd('0x4b')]=this[_0xd0cd('0x12')][_0x258633[_0xd0cd('0x4a')]]?Mustache[_0xd0cd('0x4c')](this[_0xd0cd('0x12')][_0x258633['data2']]['html'],_0x5ac9b8):'template\x20not\x20found';break;case _0xd0cd('0x2'):_0x33a543['uri']=this[_0xd0cd('0x4d')](_0x258633[_0xd0cd('0x4a')],_0x5ac9b8,_['isNil'](_0x258633[_0xd0cd('0x4e')])?!![]:parseInt(_0x258633['data3'],0xa));if(_[_0xd0cd('0x4f')](_0x258633['data4'])){_0x33a543[_0xd0cd('0x50')]='0';}else{_0x33a543[_0xd0cd('0x51')]=_0x258633[_0xd0cd('0x52')];_0x33a543['windowWidth']=_['isNil'](_0x258633[_0xd0cd('0x53')])?_0xd0cd('0x54'):_0x258633[_0xd0cd('0x53')];_0x33a543[_0xd0cd('0x55')]=_[_0xd0cd('0x4f')](_0x258633[_0xd0cd('0x56')])?_0xd0cd('0x57'):_0x258633['data6'];}break;case _0xd0cd('0x58'):_0x33a543['winApplication']=_0x258633[_0xd0cd('0x4a')]?Mustache['render'](_0x258633[_0xd0cd('0x4a')],_0x5ac9b8):'';_0x33a543[_0xd0cd('0x59')]=_0x258633['data3']?Mustache[_0xd0cd('0x4c')](_0x258633['data3'],_0x5ac9b8):'';break;}this[_0xd0cd('0x38')](util[_0xd0cd('0x5a')](_0xd0cd('0x5b'),this[_0xd0cd('0x11')][_0x5ac9b8[_0xd0cd('0x3f')]][_0xd0cd('0x5c')]),util[_0xd0cd('0x5a')](_0xd0cd('0x5d'),_0x258633[_0xd0cd('0x45')][_0xd0cd('0x46')](),barAndWebActions[_0x258633[_0xd0cd('0x48')]]),_[_0xd0cd('0x43')](_0x33a543,_0x5ac9b8));break;case _0xd0cd('0x5e'):this[_0xd0cd('0x38')](util[_0xd0cd('0x5a')](_0xd0cd('0x5b'),this[_0xd0cd('0x11')][_0x5ac9b8[_0xd0cd('0x3f')]]['name']),util[_0xd0cd('0x5a')](_0xd0cd('0x5f'),_0x258633['action'][_0xd0cd('0x46')]()),_[_0xd0cd('0x43')]({'ProjectId':parseInt(_0x258633[_0xd0cd('0x48')],0xa)},_0x5ac9b8));break;default:this[_0xd0cd('0x38')](util[_0xd0cd('0x5a')](_0xd0cd('0x5b'),this[_0xd0cd('0x11')][_0x5ac9b8['interface']][_0xd0cd('0x5c')]),util[_0xd0cd('0x5a')](_0xd0cd('0x5f'),_0x258633['action']['toLowerCase']()),_[_0xd0cd('0x43')]({},_0x258633,_0x5ac9b8));}}switch(_0x258633['action'][_0xd0cd('0x46')]()){case _0xd0cd('0x47'):cmContact[_0xd0cd('0x60')](this[_0xd0cd('0x11')][_0x5ac9b8[_0xd0cd('0x3f')]],this[_0xd0cd('0x10')][_0x4f5670],_0x258633,_0x5ac9b8);break;case _0xd0cd('0x61'):integration[_0xd0cd('0x60')](_0x258633,_0x5ac9b8,this[_0xd0cd('0x1d')],this[_0xd0cd('0x11')][_0x5ac9b8['interface']],this[_0xd0cd('0x62')][_0x5ac9b8[_0xd0cd('0x63')]],this[_0xd0cd('0x64')][_0x5ac9b8[_0xd0cd('0x65')]]);break;case _0xd0cd('0x66'):urlforward['exec'](_0x258633,_0x5ac9b8);break;case'script':script[_0xd0cd('0x60')](_0x258633,_0x5ac9b8);break;}}}}}}};Trigger[_0xd0cd('0x37')]['buildUri']=function(_0x16d1ce,_0x89e7cb,_0x18d3f5){var _0x34dfe8=url[_0xd0cd('0x67')](Mustache[_0xd0cd('0x4c')](_0x16d1ce,_0x89e7cb),!![]);if(_0x18d3f5){_[_0xd0cd('0x43')](_0x34dfe8[_0xd0cd('0x68')],_0x89e7cb);}delete _0x34dfe8['search'];var _0x4e8020=url[_0xd0cd('0x5a')](_0x34dfe8);_0x4e8020=_0x4e8020[_0xd0cd('0x69')](/\/\?/g,'?');return _0x4e8020;};Trigger[_0xd0cd('0x37')]['checkTrigger']=function(_0x115d08,_0x57d061){var _0xd4f404=!![];var _0x40ef25=!![];var _0x56836c=![];if(_0x115d08[_0xd0cd('0x6a')]===_0x57d061[_0xd0cd('0x6b')]){_0x56836c=!![];}if(_0x115d08[_0xd0cd('0x6c')][_0xd0cd('0x6d')]){_0xd4f404=_[_0xd0cd('0x6e')](_0x115d08[_0xd0cd('0x6c')],this[_0xd0cd('0x6f')](_0x57d061,_0x115d08[_0xd0cd('0x6a')]));}if(_0x115d08['AnyConditions'][_0xd0cd('0x6d')]){_0x40ef25=_['some'](_0x115d08[_0xd0cd('0x70')],this[_0xd0cd('0x6f')](_0x57d061,_0x115d08['channel']));}return _0x56836c&&_0xd4f404&&_0x40ef25;};Trigger[_0xd0cd('0x37')]['checkConditions']=function(_0x27fb43,_0x116965){return function(_0x4c6617){switch(_0x4c6617[_0xd0cd('0x71')]){case _0xd0cd('0x72'):if(_0x27fb43[_0xd0cd('0x6a')]===_0x116965){if(_0x116965===_0xd0cd('0x73')){return _0x27fb43['ChatWebsiteId']?operators[_0x4c6617[_0xd0cd('0x74')]](Number(_0x4c6617['value']),_0x27fb43['ChatWebsiteId']):![];}else{return _0x27fb43[_[_0xd0cd('0x75')](_0x116965)+_0xd0cd('0x76')]?operators[_0x4c6617[_0xd0cd('0x74')]](Number(_0x4c6617[_0xd0cd('0x77')]),_0x27fb43[_[_0xd0cd('0x75')](_0x116965)+_0xd0cd('0x76')]):![];}}break;case _0xd0cd('0x78'):case _0xd0cd('0x79'):if(_0x27fb43['channel']===_0x116965){return _0x27fb43[_0xd0cd('0x7a')]?operators[_0x4c6617[_0xd0cd('0x74')]](_0x4c6617['value'],_0x27fb43[_0xd0cd('0x7a')]):![];}break;case _0xd0cd('0x63'):return _0x27fb43[_0xd0cd('0x63')]?operators[_0x4c6617[_0xd0cd('0x74')]](_0x4c6617[_0xd0cd('0x77')],_0x27fb43[_0xd0cd('0x63')]):![];case'agent':return _0x27fb43[_0xd0cd('0x7b')]?operators[_0x4c6617[_0xd0cd('0x74')]](_0x4c6617[_0xd0cd('0x77')],_0x27fb43[_0xd0cd('0x7b')]):![];case'lastevent':return _0x27fb43[_0xd0cd('0x7c')]?operators[_0x4c6617[_0xd0cd('0x74')]](_0x4c6617['value'],_0x27fb43[_0xd0cd('0x7c')]):![];case _0xd0cd('0x65'):return _0x27fb43[_0xd0cd('0x65')]?operators[_0x4c6617[_0xd0cd('0x74')]](_0x4c6617[_0xd0cd('0x77')],_0x27fb43[_0xd0cd('0x65')]):![];case _0xd0cd('0x7d'):if(_0x4c6617[_0xd0cd('0x77')]===_0xd0cd('0x7e'))_0x4c6617[_0xd0cd('0x77')]=null;return typeof _0x27fb43[_0xd0cd('0x7f')]!=='undefined'?operators[_0x4c6617[_0xd0cd('0x74')]](_0x4c6617[_0xd0cd('0x77')],_0x27fb43[_0xd0cd('0x7f')]):![];case _0xd0cd('0x80'):if(_0x27fb43[_0xd0cd('0x6a')]===_0x116965){return _0x4c6617[_0xd0cd('0x77')]===_0xd0cd('0x81')&&_0x4c6617['operator']==='equals'?!![]:![];}break;}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0xffb1=['every','checkConditions','AnyConditions','field','account','chat','operator','value','ChatWebsiteId','upperFirst','AccountId','interaction','message','event','queue','lastevent','routeId','mailSubstatus','null','substatus','undefined','created','equals','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','trigger','../ami','redis','defaults','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','sugarcrmAccounts','syncCustomEvent','custom:agentconnect','bind','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','stringify','clone','motionChannel','voice','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','Actions','action','toLowerCase','contactmanager','data1','popup','TemplateId','data2','html','template\x20not\x20found','uri','buildUri','isNil','data3','uriLocation','data4','data5','windowHeight','data6','600','render','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','trigger:%s','exec','integration','urlforward','query','search','channel','AllConditions','length'];(function(_0x18abd2,_0x22d4b3){var _0x1dcad6=function(_0xcc08c4){while(--_0xcc08c4){_0x18abd2['push'](_0x18abd2['shift']());}};_0x1dcad6(++_0x22d4b3);}(_0xffb1,0x93));var _0x1ffb=function(_0x2b6600,_0x24c497){_0x2b6600=_0x2b6600-0x0;var _0x912ee2=_0xffb1[_0x2b6600];return _0x912ee2;};'use strict';var util=require(_0x1ffb('0x0'));var _=require(_0x1ffb('0x1'));var url=require(_0x1ffb('0x2'));var Mustache=require(_0x1ffb('0x3'));var Redis=require(_0x1ffb('0x4'));var urlforward=require(_0x1ffb('0x5'));var integration=require(_0x1ffb('0x6'));var cmContact=require(_0x1ffb('0x7'));var script=require(_0x1ffb('0x8'));var config=require(_0x1ffb('0x9'));var logger=require('../../../config/logger')(_0x1ffb('0xa'));var ami=require(_0x1ffb('0xb'));config[_0x1ffb('0xc')]=_[_0x1ffb('0xd')](config[_0x1ffb('0xc')],{'host':'localhost','port':0x18eb});var io=require(_0x1ffb('0xe'))(new Redis(config['redis']));var operators={'equals':function(_0x5ed7f4,_0x21be0a){return _0x5ed7f4==_0x21be0a;},'not_equals':function(_0x251538,_0x88a91b){return _0x251538!=_0x88a91b;}};var barAndWebActions=['popup','url',_0x1ffb('0xf')];function Trigger(_0x36c36c){this['triggers']=_0x36c36c[_0x1ffb('0x10')];this['agents']=_0x36c36c[_0x1ffb('0x11')];this[_0x1ffb('0x12')]=_0x36c36c[_0x1ffb('0x12')];this[_0x1ffb('0x13')]=_0x36c36c[_0x1ffb('0x13')];this[_0x1ffb('0x14')]=_0x36c36c['voiceExtensions'];this[_0x1ffb('0x15')]=_0x36c36c[_0x1ffb('0x15')];this[_0x1ffb('0x16')]=_0x36c36c['freshdeskAccounts'];this[_0x1ffb('0x17')]=_0x36c36c['salesforceAccounts'];this['sugarcrmAccounts']=_0x36c36c['sugarcrmAccounts'];this[_0x1ffb('0x18')]=_0x36c36c[_0x1ffb('0x18')];this['deskAccounts']=_0x36c36c[_0x1ffb('0x19')];this[_0x1ffb('0x1a')]=_0x36c36c[_0x1ffb('0x1a')];this[_0x1ffb('0x1b')]=_0x36c36c['servicenowAccounts'];this[_0x1ffb('0x1c')]=_0x36c36c['dynamics365Accounts'];this[_0x1ffb('0x1d')]=_0x36c36c[_0x1ffb('0x1d')];this[_0x1ffb('0x1e')]={'zendesk':this[_0x1ffb('0x15')],'salesforce':this[_0x1ffb('0x17')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x1ffb('0x1f')],'zoho':this['zohoAccounts'],'desk':this[_0x1ffb('0x19')],'vtiger':this[_0x1ffb('0x1a')],'dynamics365':this[_0x1ffb('0x1c')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x1ffb('0x1b')]};ami['on']('custom:agentcalled',this[_0x1ffb('0x20')]['bind'](this));ami['on'](_0x1ffb('0x21'),this['syncCustomEvent'][_0x1ffb('0x22')](this));ami['on']('custom:agentringnoanswer',this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on']('custom:agentcomplete',this['syncCustomEvent']['bind'](this));ami['on'](_0x1ffb('0x23'),this['syncCustomEvent']['bind'](this));ami['on'](_0x1ffb('0x24'),this[_0x1ffb('0x20')]['bind'](this));ami['on'](_0x1ffb('0x25'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x26'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x27'),this['syncCustomEvent'][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x28'),this[_0x1ffb('0x20')]['bind'](this));ami['on'](_0x1ffb('0x29'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on']('custom:timeout',this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x2a'),this[_0x1ffb('0x2b')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x2c'),this[_0x1ffb('0x2b')][_0x1ffb('0x22')](this));ami['on']('custom:dialend',this[_0x1ffb('0x2b')][_0x1ffb('0x22')](this));ami['on']('custom:newinteraction',this[_0x1ffb('0x20')]['bind'](this));ami['on']('custom:closedinteraction',this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x2d'),this['syncCustomEvent'][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x2e'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x2f'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x30'),this[_0x1ffb('0x20')]['bind'](this));ami['on'](_0x1ffb('0x31'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));ami['on'](_0x1ffb('0x32'),this[_0x1ffb('0x20')][_0x1ffb('0x22')](this));}Trigger[_0x1ffb('0x33')][_0x1ffb('0x34')]=function(_0x187cbe,_0x547a7a,_0x28c66d){logger['info'](_0x187cbe,_0x547a7a,JSON[_0x1ffb('0x35')](_0x28c66d));io['to'](_0x187cbe)['emit'](_0x547a7a,_0x28c66d);};Trigger[_0x1ffb('0x33')][_0x1ffb('0x20')]=function(_0x2884e2){var _0x1d47dd=_[_0x1ffb('0x36')](_0x2884e2);if(typeof _0x1d47dd[_0x1ffb('0x37')]==='undefined'){_0x1d47dd[_0x1ffb('0x37')]=_0x1ffb('0x38');}this[_0x1ffb('0x39')](_0x1d47dd);};Trigger[_0x1ffb('0x33')]['syncAgentDial']=function(_0x4d27e7){if(this[_0x1ffb('0x11')][_0x4d27e7[_0x1ffb('0x3a')]]){this[_0x1ffb('0x20')](_0x4d27e7);}};Trigger[_0x1ffb('0x33')][_0x1ffb('0x39')]=function(_0x5798c7){var _0x3b66f5;for(var _0xfd0bce in this[_0x1ffb('0x10')]){if(this[_0x1ffb('0x10')][_0x1ffb('0x3b')](_0xfd0bce)){if(this[_0x1ffb('0x10')][_0xfd0bce][_0x1ffb('0x3c')]){_0x3b66f5=this[_0x1ffb('0x3d')](this[_0x1ffb('0x10')][_0xfd0bce],_0x5798c7);if(_0x3b66f5){_[_0x1ffb('0x3e')](_0x5798c7,_0x5798c7['variables']);for(var _0x1ee2f6=0x0,_0x21f0f,_0x44a0e7,_0x1bdd86;_0x1ee2f6<this['triggers'][_0xfd0bce][_0x1ffb('0x3f')]['length'];_0x1ee2f6+=0x1){_0x21f0f=this['triggers'][_0xfd0bce]['Actions'][_0x1ee2f6];if(this[_0x1ffb('0x11')][_0x5798c7[_0x1ffb('0x3a')]]){switch(_0x21f0f[_0x1ffb('0x40')][_0x1ffb('0x41')]()){case _0x1ffb('0x42'):break;case'motionbar':case'browser':var _0x367de7={};switch(barAndWebActions[_0x21f0f[_0x1ffb('0x43')]]){case _0x1ffb('0x44'):_0x367de7[_0x1ffb('0x45')]=_0x21f0f[_0x1ffb('0x46')];_0x367de7['html']=this[_0x1ffb('0x13')][_0x21f0f[_0x1ffb('0x46')]]?Mustache['render'](this[_0x1ffb('0x13')][_0x21f0f['data2']][_0x1ffb('0x47')],_0x5798c7):_0x1ffb('0x48');break;case _0x1ffb('0x2'):_0x367de7[_0x1ffb('0x49')]=this[_0x1ffb('0x4a')](_0x21f0f['data2'],_0x5798c7,_[_0x1ffb('0x4b')](_0x21f0f[_0x1ffb('0x4c')])?!![]:parseInt(_0x21f0f[_0x1ffb('0x4c')],0xa));if(_[_0x1ffb('0x4b')](_0x21f0f['data4'])){_0x367de7['location']='0';}else{_0x367de7[_0x1ffb('0x4d')]=_0x21f0f[_0x1ffb('0x4e')];_0x367de7['windowWidth']=_['isNil'](_0x21f0f[_0x1ffb('0x4f')])?'800':_0x21f0f[_0x1ffb('0x4f')];_0x367de7[_0x1ffb('0x50')]=_[_0x1ffb('0x4b')](_0x21f0f[_0x1ffb('0x51')])?_0x1ffb('0x52'):_0x21f0f[_0x1ffb('0x51')];}break;case _0x1ffb('0xf'):_0x367de7['winApplication']=_0x21f0f[_0x1ffb('0x46')]?Mustache[_0x1ffb('0x53')](_0x21f0f[_0x1ffb('0x46')],_0x5798c7):'';_0x367de7[_0x1ffb('0x54')]=_0x21f0f['data3']?Mustache[_0x1ffb('0x53')](_0x21f0f[_0x1ffb('0x4c')],_0x5798c7):'';break;}this[_0x1ffb('0x34')](util[_0x1ffb('0x55')](_0x1ffb('0x56'),this[_0x1ffb('0x11')][_0x5798c7[_0x1ffb('0x3a')]][_0x1ffb('0x57')]),util[_0x1ffb('0x55')](_0x1ffb('0x58'),_0x21f0f[_0x1ffb('0x40')][_0x1ffb('0x41')](),barAndWebActions[_0x21f0f[_0x1ffb('0x43')]]),_[_0x1ffb('0x3e')](_0x367de7,_0x5798c7));break;case _0x1ffb('0x59'):this[_0x1ffb('0x34')](util[_0x1ffb('0x55')](_0x1ffb('0x56'),this['agents'][_0x5798c7[_0x1ffb('0x3a')]]['name']),util[_0x1ffb('0x55')]('trigger:%s',_0x21f0f[_0x1ffb('0x40')][_0x1ffb('0x41')]()),_[_0x1ffb('0x3e')]({'ProjectId':parseInt(_0x21f0f['data1'],0xa)},_0x5798c7));break;default:this['emit'](util['format'](_0x1ffb('0x56'),this[_0x1ffb('0x11')][_0x5798c7[_0x1ffb('0x3a')]][_0x1ffb('0x57')]),util[_0x1ffb('0x55')](_0x1ffb('0x5a'),_0x21f0f[_0x1ffb('0x40')][_0x1ffb('0x41')]()),_[_0x1ffb('0x3e')]({},_0x21f0f,_0x5798c7));}}switch(_0x21f0f[_0x1ffb('0x40')]['toLowerCase']()){case _0x1ffb('0x42'):cmContact[_0x1ffb('0x5b')](this[_0x1ffb('0x11')][_0x5798c7['interface']],this['triggers'][_0xfd0bce],_0x21f0f,_0x5798c7);break;case _0x1ffb('0x5c'):integration[_0x1ffb('0x5b')](_0x21f0f,_0x5798c7,this[_0x1ffb('0x1e')],this['agents'][_0x5798c7[_0x1ffb('0x3a')]],this[_0x1ffb('0x12')][_0x5798c7['queue']],this['voiceExtensions'][_0x5798c7['routeId']]);break;case _0x1ffb('0x5d'):urlforward['exec'](_0x21f0f,_0x5798c7);break;case'script':script[_0x1ffb('0x5b')](_0x21f0f,_0x5798c7);break;}}}}}}};Trigger[_0x1ffb('0x33')][_0x1ffb('0x4a')]=function(_0x2487f0,_0x2252c1,_0x1a3191){var _0x5bdff3=url['parse'](Mustache['render'](_0x2487f0,_0x2252c1),!![]);if(_0x1a3191){_[_0x1ffb('0x3e')](_0x5bdff3[_0x1ffb('0x5e')],_0x2252c1);}delete _0x5bdff3[_0x1ffb('0x5f')];var _0x4c2679=url[_0x1ffb('0x55')](_0x5bdff3);_0x4c2679=_0x4c2679['replace'](/\/\?/g,'?');return _0x4c2679;};Trigger['prototype'][_0x1ffb('0x3d')]=function(_0x56d05a,_0x370c2b){var _0x2fd079=!![];var _0x4731fd=!![];var _0x3fd4c8=![];if(_0x56d05a[_0x1ffb('0x60')]===_0x370c2b['motionChannel']){_0x3fd4c8=!![];}if(_0x56d05a[_0x1ffb('0x61')][_0x1ffb('0x62')]){_0x2fd079=_[_0x1ffb('0x63')](_0x56d05a['AllConditions'],this[_0x1ffb('0x64')](_0x370c2b,_0x56d05a[_0x1ffb('0x60')]));}if(_0x56d05a[_0x1ffb('0x65')][_0x1ffb('0x62')]){_0x4731fd=_['some'](_0x56d05a[_0x1ffb('0x65')],this[_0x1ffb('0x64')](_0x370c2b,_0x56d05a[_0x1ffb('0x60')]));}return _0x3fd4c8&&_0x2fd079&&_0x4731fd;};Trigger['prototype']['checkConditions']=function(_0x305c6c,_0x26622b){return function(_0x1e91ff){switch(_0x1e91ff[_0x1ffb('0x66')]){case _0x1ffb('0x67'):if(_0x305c6c[_0x1ffb('0x60')]===_0x26622b){if(_0x26622b===_0x1ffb('0x68')){return _0x305c6c['ChatWebsiteId']?operators[_0x1e91ff[_0x1ffb('0x69')]](Number(_0x1e91ff[_0x1ffb('0x6a')]),_0x305c6c[_0x1ffb('0x6b')]):![];}else{return _0x305c6c[_[_0x1ffb('0x6c')](_0x26622b)+_0x1ffb('0x6d')]?operators[_0x1e91ff[_0x1ffb('0x69')]](Number(_0x1e91ff[_0x1ffb('0x6a')]),_0x305c6c[_['upperFirst'](_0x26622b)+_0x1ffb('0x6d')]):![];}}break;case _0x1ffb('0x6e'):case _0x1ffb('0x6f'):if(_0x305c6c[_0x1ffb('0x60')]===_0x26622b){return _0x305c6c[_0x1ffb('0x70')]?operators[_0x1e91ff[_0x1ffb('0x69')]](_0x1e91ff[_0x1ffb('0x6a')],_0x305c6c['event']):![];}break;case _0x1ffb('0x71'):return _0x305c6c[_0x1ffb('0x71')]?operators[_0x1e91ff[_0x1ffb('0x69')]](_0x1e91ff[_0x1ffb('0x6a')],_0x305c6c[_0x1ffb('0x71')]):![];case'agent':return _0x305c6c['membername']?operators[_0x1e91ff[_0x1ffb('0x69')]](_0x1e91ff[_0x1ffb('0x6a')],_0x305c6c['membername']):![];case _0x1ffb('0x72'):return _0x305c6c[_0x1ffb('0x72')]?operators[_0x1e91ff[_0x1ffb('0x69')]](_0x1e91ff[_0x1ffb('0x6a')],_0x305c6c[_0x1ffb('0x72')]):![];case _0x1ffb('0x73'):return _0x305c6c[_0x1ffb('0x73')]?operators[_0x1e91ff['operator']](_0x1e91ff[_0x1ffb('0x6a')],_0x305c6c[_0x1ffb('0x73')]):![];case _0x1ffb('0x74'):if(_0x1e91ff[_0x1ffb('0x6a')]===_0x1ffb('0x75'))_0x1e91ff[_0x1ffb('0x6a')]=null;return typeof _0x305c6c[_0x1ffb('0x76')]!==_0x1ffb('0x77')?operators[_0x1e91ff[_0x1ffb('0x69')]](_0x1e91ff[_0x1ffb('0x6a')],_0x305c6c[_0x1ffb('0x76')]):![];case'offlineMessage':if(_0x305c6c['channel']===_0x26622b){return _0x1e91ff[_0x1ffb('0x6a')]===_0x1ffb('0x78')&&_0x1e91ff['operator']===_0x1ffb('0x79')?!![]:![];}break;}return![];};};module[_0x1ffb('0x7a')]=Trigger;
\ No newline at end of file
index 23b09e5..7295f03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x41cc13,_0x5eb64f){var _0xdcc9fc=function(_0x24680f){while(--_0x24680f){_0x41cc13['push'](_0x41cc13['shift']());}};_0xdcc9fc(++_0x5eb64f);}(_0x55ca,0x126));var _0xa55c=function(_0x419aa4,_0x5926a7){_0x419aa4=_0x419aa4-0x0;var _0x557d9b=_0x55ca[_0x419aa4];return _0x557d9b;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
+var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x3faa67,_0x183b85){var _0x4c68cf=function(_0x572b33){while(--_0x572b33){_0x3faa67['push'](_0x3faa67['shift']());}};_0x4c68cf(++_0x183b85);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
index cdd08e7..e8d62ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb696=['phonecall','callDirection','queue','phonecalls','odata-entityid','ticketId','format','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','lodash','request-promise','util','md5','ioredis','../../../../config/logger','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','clientId','remoteUri','password','then','access_token','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','value','isNil','validateEmail','email','userEmail','info',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','length','catch','toLowerCase','outbound','destcalleridnum','contacts','/systemusers(','4.0','headers','substring','lastIndexOf','calleridnum','%2b','enduserId','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','idField','indexOf','ticketType','POST','incidents','assign','getString','Descriptions','/contacts(','Fields'];(function(_0x296897,_0x4d23ea){var _0x2b44ab=function(_0xdf90d8){while(--_0xdf90d8){_0x296897['push'](_0x296897['shift']());}};_0x2b44ab(++_0x4d23ea);}(_0xb696,0x142));var _0x6b69=function(_0x2a4d1d,_0x564f4b){_0x2a4d1d=_0x2a4d1d-0x0;var _0x326ec6=_0xb696[_0x2a4d1d];return _0x326ec6;};'use strict';var _=require(_0x6b69('0x0'));var BPromise=require('bluebird');var rp=require(_0x6b69('0x1'));var util=require(_0x6b69('0x2'));var intUtil=require('./util');var md5=require(_0x6b69('0x3'));var Redis=require(_0x6b69('0x4'));var logger=require(_0x6b69('0x5'))('dynamics365');var config=require(_0x6b69('0x6'));config[_0x6b69('0x7')]=_[_0x6b69('0x8')](config['redis'],{'host':_0x6b69('0x9'),'port':0x18eb});var io=require(_0x6b69('0xa'))(new Redis(config[_0x6b69('0x7')]));function getAuthToken(_0x80332b,_0x54c5a6,_0x222c2a){var _0x20ba56={'method':'POST','uri':_0x54c5a6,'form':{'client_id':_0x80332b[_0x6b69('0xb')],'resource':_0x80332b[_0x6b69('0xc')],'username':_0x80332b['username'],'password':_0x80332b[_0x6b69('0xd')],'grant_type':_0x6b69('0xd'),'client_secret':_0x80332b['clientSecret']},'json':!![]};return rp(_0x20ba56)[_0x6b69('0xe')](function(_0x1fd215){return _0x1fd215[_0x6b69('0xf')];})['catch'](function(_0x5402d5){logger[_0x6b69('0x10')]('['+[_0x222c2a[_0x6b69('0x11')]()]+_0x6b69('0x12'));return _0x5402d5[_0x6b69('0x13')];});}function getUser(_0x2c289b,_0x380ee3,_0x46146f,_0x4cde74,_0x3ce4c7,_0x732044){return new BPromise(function(_0x378b5f,_0x2b759e){return getAuthToken(_0x380ee3,_0x4cde74,_0x732044)[_0x6b69('0xe')](function(_0x40b0b0){var _0x41d5fa={'method':_0x6b69('0x14'),'uri':_0x3ce4c7+_0x6b69('0x15'),'headers':{'Authorization':_0x6b69('0x16')+_0x40b0b0,'OData-Version':'4.0'},'json':!![]};return rp(_0x41d5fa);})[_0x6b69('0xe')](function(_0x3af15b){var _0x291e51=_0x3af15b[_0x6b69('0x17')];var _0x34b4d6=![];var _0x549939=null;if(!_[_0x6b69('0x18')](_0x46146f)){if(intUtil[_0x6b69('0x19')](_0x46146f[_0x6b69('0x1a')])){_0x2c289b[_0x6b69('0x1b')]=_0x46146f[_0x6b69('0x1a')];for(_0x549939=0x0;_0x549939<_0x291e51['length'];_0x549939++){if(_0x291e51[_0x549939]['internalemailaddress']===_0x46146f[_0x6b69('0x1a')]&&!_0x291e51[_0x549939]['isdisabled']){_0x34b4d6=!![];logger[_0x6b69('0x1c')]('['+[_0x732044[_0x6b69('0x11')]()]+_0x6b69('0x1d')+_0x291e51[_0x549939][_0x6b69('0x1e')]+'!');_0x2c289b[_0x6b69('0x1f')]=_0x291e51[_0x549939][_0x6b69('0x1e')];}}}}if(!_0x34b4d6){logger['info']('['+[_0x732044[_0x6b69('0x11')]()]+_0x6b69('0x20'));_0x2c289b[_0x6b69('0x1b')]=_0x380ee3[_0x6b69('0x21')];for(_0x549939=0x0;_0x549939<_0x291e51[_0x6b69('0x22')];_0x549939++){if(_0x291e51[_0x549939]['internalemailaddress']===_0x380ee3['username']){_0x2c289b['userId']=_0x291e51[_0x549939][_0x6b69('0x1e')];}}}_0x378b5f(_0x2c289b);})[_0x6b69('0x23')](function(_0x49590d){_0x2b759e(_0x49590d[_0x6b69('0x13')]);});});}function createEndUser(_0x4be4dc,_0xf28c80,_0x26d8f1,_0x1002b2,_0x429289,_0x4b012c){return new BPromise(function(_0x2cdb2f,_0x5b451f){return getAuthToken(_0xf28c80,_0x26d8f1,_0x4b012c)[_0x6b69('0xe')](function(_0x17d942){var _0xbb9407=_0x4b012c[_0x6b69('0x24')]()===_0x6b69('0x25')?_0x429289[_0x6b69('0x26')]:_0x429289['calleridnum'];var _0x3f1806={'method':'POST','uri':_0x1002b2+_0x6b69('0x27'),'body':{'telephone1':_0xbb9407,'fullname':_0xbb9407,'firstname':_0xbb9407,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x6b69('0x28')+_0x4be4dc[_0x6b69('0x1f')]+')'},'headers':{'Authorization':_0x6b69('0x16')+_0x17d942,'OData-Version':_0x6b69('0x29')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x3f1806);})['then'](function(_0x20d790){var _0x333093=_0x20d790[_0x6b69('0x2a')]['odata-entityid'];var _0x2490fe=_0x333093[_0x6b69('0x2b')](_0x333093[_0x6b69('0x2c')]('(')+0x1,_0x333093[_0x6b69('0x2c')](')'));_0x4be4dc['enduserId']=_0x2490fe;_0x2cdb2f(_0x4be4dc);})[_0x6b69('0x23')](function(_0x4bd52d){_0x5b451f(_0x4bd52d['message']);});});}function getEndUser(_0x3345a2,_0x2ff80a,_0x1f33bb,_0x342461,_0x57bb,_0x66d428,_0x3afbee){var _0x1ad86f=_0x66d428[_0x6b69('0x24')]()==='outbound'?_0x57bb['destcalleridnum']:_0x57bb[_0x6b69('0x2d')];return getAuthToken(_0x2ff80a,_0x1f33bb,_0x66d428)[_0x6b69('0xe')](function(_0x1b7b5f){var _0x114045={'method':_0x6b69('0x14'),'uri':_0x342461+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x1ad86f['replace']('+',_0x6b69('0x2e'))+'\x27','headers':{'Authorization':_0x6b69('0x16')+_0x1b7b5f,'If-None-Match':null,'OData-Version':_0x6b69('0x29')},'json':!![]};return rp(_0x114045);})['then'](function(_0x5f5cc3){var _0x275ab1=![];if(!_0x5f5cc3)return _0x275ab1;var _0x46e62e=_0x5f5cc3[_0x6b69('0x17')];for(var _0x322f32=0x0;_0x322f32<_0x46e62e[_0x6b69('0x22')];_0x322f32++){if(_0x46e62e[_0x322f32]['telephone1']===_0x1ad86f){_0x275ab1=!![];_0x3345a2[_0x6b69('0x2f')]=_0x46e62e[_0x322f32][_0x6b69('0x30')];}}return _0x275ab1;})[_0x6b69('0xe')](function(_0x264431){if(_0x264431)return _0x3345a2;if(_0x3afbee===_0x6b69('0x31')){logger[_0x6b69('0x1c')]('['+[_0x66d428[_0x6b69('0x11')]()]+_0x6b69('0x32'));return _0x3345a2;}return createEndUser(_0x3345a2,_0x2ff80a,_0x1f33bb,_0x342461,_0x57bb,_0x66d428)[_0x6b69('0xe')](function(_0x1dd4d5){logger['info']('['+[_0x66d428[_0x6b69('0x11')]()]+_0x6b69('0x33'),_0x1dd4d5[_0x6b69('0x2f')]);return _0x1dd4d5;});});}function getCustomFields(_0x38993b,_0x4c5d14,_0x5216bd){var _0xeccac3={};if(_0x38993b['length']>0x0){_[_0x6b69('0x34')](_0x38993b,function(_0x127ed5){if(_[_0x6b69('0x35')]([_0x6b69('0x36'),_0x6b69('0x37')],_0x127ed5['type'])&&_0x127ed5['nameField']&&!_0x127ed5['customField']){var _0x2cae9a=_0x127ed5[_0x6b69('0x38')][_0x6b69('0x24')]();var _0x91141c=_0x2cae9a[_0x6b69('0x2b')](0x0,_0x2cae9a[_0x6b69('0x39')]('_'));var _0x37a125=_0x2cae9a[_0x6b69('0x2b')](_0x2cae9a['indexOf']('_')+0x1);if(_0x91141c===_0x5216bd){_0xeccac3[_0x37a125]=_0x127ed5['content'];}}});}return _0xeccac3;}function getTicket(_0x6925b4,_0x10dada,_0x31ae10,_0x48451d,_0xbf773e,_0x172d83,_0x3d9820){return new BPromise(function(_0x2ccd94,_0x112b8c){var _0x379d46;return getAuthToken(_0x10dada,_0x31ae10,_0x3d9820)[_0x6b69('0xe')](function(_0x90ad31){if(_0x172d83[_0x6b69('0x3a')]==='incident'){_0x379d46={'method':_0x6b69('0x3b'),'uri':_0x48451d+_0x6b69('0x3c'),'body':Object[_0x6b69('0x3d')]({},{'title':intUtil[_0x6b69('0x3e')](_0x172d83['Subjects'],_0xbf773e,'\x20'),'description':intUtil[_0x6b69('0x3e')](_0x172d83[_0x6b69('0x3f')],_0xbf773e,'\x0a'),'customerid_contact@odata.bind':_0x6925b4[_0x6b69('0x2f')]?_0x6b69('0x40')+_0x6925b4[_0x6b69('0x2f')]+')':undefined,'ownerid@odata.bind':_0x6b69('0x28')+_0x6925b4[_0x6b69('0x1f')]+')','caseorigincode':'1'},getCustomFields(_0x172d83[_0x6b69('0x41')],_0xbf773e,_0x172d83[_0x6b69('0x3a')])),'headers':{'Authorization':_0x6b69('0x16')+_0x90ad31,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x172d83[_0x6b69('0x3a')]===_0x6b69('0x42')){var _0x3a2c00=_0x6925b4['enduserId']?[{'partyid_systemuser@odata.bind':_0x6b69('0x28')+_0x6925b4[_0x6b69('0x1f')]+')','participationtypemask':_0x6925b4[_0x6b69('0x43')]===_0x6b69('0x44')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x6925b4[_0x6b69('0x2f')]+')','participationtypemask':_0x6925b4['callDirection']===_0x6b69('0x44')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x6b69('0x28')+_0x6925b4['userId']+')','participationtypemask':_0x6925b4[_0x6b69('0x43')]===_0x6b69('0x44')?0x2:0x1}];_0x379d46={'method':_0x6b69('0x3b'),'uri':_0x48451d+_0x6b69('0x45'),'body':Object[_0x6b69('0x3d')]({},{'subject':intUtil[_0x6b69('0x3e')](_0x172d83['Subjects'],_0xbf773e,'\x20'),'phonenumber':String(_0xbf773e['calleridnum']),'description':intUtil[_0x6b69('0x3e')](_0x172d83[_0x6b69('0x3f')],_0xbf773e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x6925b4[_0x6b69('0x2f')]?_0x6b69('0x40')+_0x6925b4[_0x6b69('0x2f')]+')':undefined,'ownerid@odata.bind':_0x6b69('0x28')+_0x6925b4[_0x6b69('0x1f')]+')','directioncode':_0x6925b4[_0x6b69('0x43')]===_0x6b69('0x44')?![]:!![],'phonecall_activity_parties':_0x3a2c00},getCustomFields(_0x172d83[_0x6b69('0x41')],_0xbf773e,_0x172d83['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x90ad31,'OData-Version':_0x6b69('0x29')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x379d46);})[_0x6b69('0xe')](function(_0x298055){var _0x404814=_0x298055['headers'][_0x6b69('0x46')];var _0x1e9ae4=_0x404814[_0x6b69('0x2b')](_0x404814[_0x6b69('0x2c')]('(')+0x1,_0x404814[_0x6b69('0x2c')](')'));_0x6925b4[_0x6b69('0x47')]=_0x1e9ae4;_0x2ccd94(_0x6925b4);})[_0x6b69('0x23')](function(_0x566f02){_0x112b8c(_0x566f02[_0x6b69('0x13')]);});});}function emit(_0x354bd9,_0x405376,_0x3e611a,_0x30f8b7){var _0x251c28={'uri':util[_0x6b69('0x48')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x354bd9,_0x3e611a,_0x30f8b7)};io['to'](util[_0x6b69('0x48')]('user:%s',_0x405376))[_0x6b69('0x49')](_0x6b69('0x4a'),_0x251c28);}exports['cs']=function(_0x45485e,_0xc19e3e,_0x1a26eb,_0x5cb389,_0x347602,_0x4db8be,_0x2b63c8,_0x994020){var _0x10cf82={};_0x4db8be[_0x6b69('0xc')]=intUtil[_0x6b69('0x4b')](_0x4db8be['remoteUri']);_0x4db8be[_0x6b69('0x4c')]=intUtil[_0x6b69('0x4b')](_0x4db8be['serverUrl']);_0x10cf82[_0x6b69('0x43')]=_0x994020==='queue'||_0x994020===_0x6b69('0x4d')?'queue':'outbound';var _0x55e81d=util[_0x6b69('0x48')](_0x6b69('0x4e'),_0x4db8be[_0x6b69('0xc')]);var _0x2a7d47=util['format']('https://login.microsoftonline.com/%s/oauth2/token',_0x4db8be[_0x6b69('0x4f')]);var _0x2fb802=util['format'](_0x6b69('0x50'),_0x4db8be[_0x6b69('0x4c')],_0xc19e3e[_0x6b69('0x51')],md5(_0xc19e3e[_0x6b69('0x51')]));if(_0x347602&&_0x347602[_0x6b69('0x52')]){logger[_0x6b69('0x1c')](_0x6b69('0x53'),'Recording\x20is\x20enabled!');_0xc19e3e[_0x6b69('0x54')]=_0x2fb802;}else if(_0x2b63c8&&_0x2b63c8['recordingFormat']&&_0x2b63c8[_0x6b69('0x55')]!==_0x6b69('0x56')){logger[_0x6b69('0x1c')](_0x6b69('0x57'),_0x6b69('0x58'));_0xc19e3e['recordingURL']=_0x2fb802;}else{_0xc19e3e[_0x6b69('0x54')]='';}return getUser(_0x10cf82,_0x4db8be,_0x5cb389,_0x2a7d47,_0x55e81d,_0x994020)[_0x6b69('0xe')](function(_0x4e2639){logger['info']('['+_0x994020[_0x6b69('0x11')]()+_0x6b69('0x59'),_0x4e2639[_0x6b69('0x1f')]);logger[_0x6b69('0x1c')]('['+_0x994020[_0x6b69('0x11')]()+_0x6b69('0x5a'),_0x4e2639[_0x6b69('0x1b')]);return getEndUser(_0x4e2639,_0x4db8be,_0x2a7d47,_0x55e81d,_0xc19e3e,_0x994020,_0x1a26eb[_0x6b69('0x5b')]);})[_0x6b69('0xe')](function(_0x4579de){logger['info']('['+_0x994020['toUpperCase']()+_0x6b69('0x5c'),_0x4579de[_0x6b69('0x2f')]);logger['info']('['+_0x994020[_0x6b69('0x11')]()+_0x6b69('0x5d'),_0xc19e3e[_0x6b69('0x2d')]);return getTicket(_0x4579de,_0x4db8be,_0x2a7d47,_0x55e81d,_0xc19e3e,_0x1a26eb,_0x994020);})[_0x6b69('0xe')](function(_0x25dfd0){logger['info'](util[_0x6b69('0x48')]('['+_0x994020['toUpperCase']()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x1a26eb[_0x6b69('0x3a')],_0x25dfd0[_0x6b69('0x47')]));logger['info'](util[_0x6b69('0x48')]('['+_0x994020[_0x6b69('0x11')]()+_0x6b69('0x5e'),_0x994020));if(_0x994020!=='unmanaged'){logger[_0x6b69('0x1c')]('['+_0x994020['toUpperCase']()+']',_0x6b69('0x5f'));emit(_0x4db8be['remoteUri'],_0x5cb389['name'],_0x1a26eb[_0x6b69('0x3a')],_0x25dfd0['ticketId']);}})[_0x6b69('0x23')](function(_0x572d17){logger[_0x6b69('0x10')]('['+_0x994020[_0x6b69('0x11')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0x6b69('0x60')](_0x572d17,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x2257=['lodash','bluebird','request-promise','util','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','socket.io-emitter','POST','remoteUri','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','Bearer\x20','value','isNil','email','length','internalemailaddress','isdisabled','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','username','toLowerCase','outbound','destcalleridnum','4.0','odata-entityid','substring','lastIndexOf','enduserId','calleridnum','replace','%2b','telephone1','contactid','nothing',']\x20Enduser\x20created!','includes','string','picklist','nameField','customField','indexOf','content','ticketType','incident','incidents','assign','getString','Descriptions','/systemusers(','Fields','phonecall','callDirection','queue','/contacts(','headers','format','emit','serverUrl','unmanaged','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','ticketId',']\x20Error\x20running\x20Dynamics365\x20integration'];(function(_0x825ea9,_0x56c3ea){var _0x4282a8=function(_0x9dd4e2){while(--_0x9dd4e2){_0x825ea9['push'](_0x825ea9['shift']());}};_0x4282a8(++_0x56c3ea);}(_0x2257,0x1d1));var _0x7225=function(_0x1a66f8,_0x35a700){_0x1a66f8=_0x1a66f8-0x0;var _0x252aa7=_0x2257[_0x1a66f8];return _0x252aa7;};'use strict';var _=require(_0x7225('0x0'));var BPromise=require(_0x7225('0x1'));var rp=require(_0x7225('0x2'));var util=require(_0x7225('0x3'));var intUtil=require(_0x7225('0x4'));var md5=require(_0x7225('0x5'));var Redis=require(_0x7225('0x6'));var logger=require(_0x7225('0x7'))(_0x7225('0x8'));var config=require(_0x7225('0x9'));config[_0x7225('0xa')]=_[_0x7225('0xb')](config[_0x7225('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x7225('0xc'))(new Redis(config['redis']));function getAuthToken(_0xb015a1,_0x407181,_0x1bc052){var _0x1c86f0={'method':_0x7225('0xd'),'uri':_0x407181,'form':{'client_id':_0xb015a1['clientId'],'resource':_0xb015a1[_0x7225('0xe')],'username':_0xb015a1['username'],'password':_0xb015a1[_0x7225('0xf')],'grant_type':_0x7225('0xf'),'client_secret':_0xb015a1[_0x7225('0x10')]},'json':!![]};return rp(_0x1c86f0)[_0x7225('0x11')](function(_0x1ca9fa){return _0x1ca9fa[_0x7225('0x12')];})[_0x7225('0x13')](function(_0x1d2369){logger[_0x7225('0x14')]('['+[_0x1bc052[_0x7225('0x15')]()]+_0x7225('0x16'));return _0x1d2369[_0x7225('0x17')];});}function getUser(_0x213bd7,_0x12f02a,_0x196256,_0x2376ff,_0xcac182,_0x464a81){return new BPromise(function(_0x1266d7,_0x4d7143){return getAuthToken(_0x12f02a,_0x2376ff,_0x464a81)[_0x7225('0x11')](function(_0x56080e){var _0x56ae7a={'method':_0x7225('0x18'),'uri':_0xcac182+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x7225('0x19')+_0x56080e,'OData-Version':'4.0'},'json':!![]};return rp(_0x56ae7a);})[_0x7225('0x11')](function(_0x1f2085){var _0x27860d=_0x1f2085[_0x7225('0x1a')];var _0x3d3ef9=![];var _0x4c3041=null;if(!_[_0x7225('0x1b')](_0x196256)){if(intUtil['validateEmail'](_0x196256[_0x7225('0x1c')])){_0x213bd7['userEmail']=_0x196256['email'];for(_0x4c3041=0x0;_0x4c3041<_0x27860d[_0x7225('0x1d')];_0x4c3041++){if(_0x27860d[_0x4c3041][_0x7225('0x1e')]===_0x196256[_0x7225('0x1c')]&&!_0x27860d[_0x4c3041][_0x7225('0x1f')]){_0x3d3ef9=!![];logger[_0x7225('0x20')]('['+[_0x464a81[_0x7225('0x15')]()]+']\x20Agent\x20found\x20'+_0x27860d[_0x4c3041][_0x7225('0x21')]+'!');_0x213bd7[_0x7225('0x22')]=_0x27860d[_0x4c3041][_0x7225('0x21')];}}}}if(!_0x3d3ef9){logger[_0x7225('0x20')]('['+[_0x464a81[_0x7225('0x15')]()]+_0x7225('0x23'));_0x213bd7[_0x7225('0x24')]=_0x12f02a[_0x7225('0x25')];for(_0x4c3041=0x0;_0x4c3041<_0x27860d[_0x7225('0x1d')];_0x4c3041++){if(_0x27860d[_0x4c3041][_0x7225('0x1e')]===_0x12f02a[_0x7225('0x25')]){_0x213bd7[_0x7225('0x22')]=_0x27860d[_0x4c3041][_0x7225('0x21')];}}}_0x1266d7(_0x213bd7);})['catch'](function(_0xa6e4e7){_0x4d7143(_0xa6e4e7[_0x7225('0x17')]);});});}function createEndUser(_0xe9724b,_0x354b82,_0x329826,_0x258c89,_0x1df1ca,_0x180a89){return new BPromise(function(_0x427488,_0x31b03d){return getAuthToken(_0x354b82,_0x329826,_0x180a89)[_0x7225('0x11')](function(_0x3aa710){var _0x9beb50=_0x180a89[_0x7225('0x26')]()===_0x7225('0x27')?_0x1df1ca[_0x7225('0x28')]:_0x1df1ca['calleridnum'];var _0x5f0159={'method':'POST','uri':_0x258c89+'contacts','body':{'telephone1':_0x9beb50,'fullname':_0x9beb50,'firstname':_0x9beb50,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0xe9724b[_0x7225('0x22')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x3aa710,'OData-Version':_0x7225('0x29')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5f0159);})[_0x7225('0x11')](function(_0x2948ab){var _0x590557=_0x2948ab['headers'][_0x7225('0x2a')];var _0x2c593b=_0x590557[_0x7225('0x2b')](_0x590557[_0x7225('0x2c')]('(')+0x1,_0x590557[_0x7225('0x2c')](')'));_0xe9724b[_0x7225('0x2d')]=_0x2c593b;_0x427488(_0xe9724b);})[_0x7225('0x13')](function(_0xb408a5){_0x31b03d(_0xb408a5[_0x7225('0x17')]);});});}function getEndUser(_0xfc3ce,_0x431de3,_0x3ce67a,_0x2dd14c,_0x2194af,_0x4b1af7,_0x2f1f90){var _0x375f15=_0x4b1af7[_0x7225('0x26')]()===_0x7225('0x27')?_0x2194af[_0x7225('0x28')]:_0x2194af[_0x7225('0x2e')];return getAuthToken(_0x431de3,_0x3ce67a,_0x4b1af7)[_0x7225('0x11')](function(_0x3471a2){var _0x15b8b9={'method':_0x7225('0x18'),'uri':_0x2dd14c+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x375f15[_0x7225('0x2f')]('+',_0x7225('0x30'))+'\x27','headers':{'Authorization':_0x7225('0x19')+_0x3471a2,'If-None-Match':null,'OData-Version':_0x7225('0x29')},'json':!![]};return rp(_0x15b8b9);})['then'](function(_0x484b9a){var _0x3c9dc8=![];if(!_0x484b9a)return _0x3c9dc8;var _0x5134ec=_0x484b9a[_0x7225('0x1a')];for(var _0x3d5a19=0x0;_0x3d5a19<_0x5134ec[_0x7225('0x1d')];_0x3d5a19++){if(_0x5134ec[_0x3d5a19][_0x7225('0x31')]===_0x375f15){_0x3c9dc8=!![];_0xfc3ce['enduserId']=_0x5134ec[_0x3d5a19][_0x7225('0x32')];}}return _0x3c9dc8;})[_0x7225('0x11')](function(_0xf2821d){if(_0xf2821d)return _0xfc3ce;if(_0x2f1f90===_0x7225('0x33')){logger[_0x7225('0x20')]('['+[_0x4b1af7[_0x7225('0x15')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0xfc3ce;}return createEndUser(_0xfc3ce,_0x431de3,_0x3ce67a,_0x2dd14c,_0x2194af,_0x4b1af7)[_0x7225('0x11')](function(_0x5112d1){logger[_0x7225('0x20')]('['+[_0x4b1af7[_0x7225('0x15')]()]+_0x7225('0x34'),_0x5112d1[_0x7225('0x2d')]);return _0x5112d1;});});}function getCustomFields(_0x315d6b,_0x2fc205,_0x497303){var _0x47b6b7={};if(_0x315d6b['length']>0x0){_['forEach'](_0x315d6b,function(_0x2d1408){if(_[_0x7225('0x35')]([_0x7225('0x36'),_0x7225('0x37')],_0x2d1408['type'])&&_0x2d1408[_0x7225('0x38')]&&!_0x2d1408[_0x7225('0x39')]){var _0x203b83=_0x2d1408['idField'][_0x7225('0x26')]();var _0x4319a4=_0x203b83[_0x7225('0x2b')](0x0,_0x203b83[_0x7225('0x3a')]('_'));var _0x3715e2=_0x203b83[_0x7225('0x2b')](_0x203b83[_0x7225('0x3a')]('_')+0x1);if(_0x4319a4===_0x497303){_0x47b6b7[_0x3715e2]=_0x2d1408[_0x7225('0x3b')];}}});}return _0x47b6b7;}function getTicket(_0x4baa4b,_0x1125b2,_0x41fa80,_0x3891c6,_0x27038b,_0xc9c617,_0x22e10c){return new BPromise(function(_0x4afcaf,_0x5b06cb){var _0x3a45f5;return getAuthToken(_0x1125b2,_0x41fa80,_0x22e10c)['then'](function(_0x476b33){if(_0xc9c617[_0x7225('0x3c')]===_0x7225('0x3d')){_0x3a45f5={'method':_0x7225('0xd'),'uri':_0x3891c6+_0x7225('0x3e'),'body':Object[_0x7225('0x3f')]({},{'title':intUtil['getString'](_0xc9c617['Subjects'],_0x27038b,'\x20'),'description':intUtil[_0x7225('0x40')](_0xc9c617[_0x7225('0x41')],_0x27038b,'\x0a'),'customerid_contact@odata.bind':_0x4baa4b[_0x7225('0x2d')]?'/contacts('+_0x4baa4b[_0x7225('0x2d')]+')':undefined,'ownerid@odata.bind':_0x7225('0x42')+_0x4baa4b[_0x7225('0x22')]+')','caseorigincode':'1'},getCustomFields(_0xc9c617[_0x7225('0x43')],_0x27038b,_0xc9c617[_0x7225('0x3c')])),'headers':{'Authorization':'Bearer\x20'+_0x476b33,'OData-Version':_0x7225('0x29')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xc9c617[_0x7225('0x3c')]===_0x7225('0x44')){var _0xbadbc5=_0x4baa4b[_0x7225('0x2d')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x4baa4b['userId']+')','participationtypemask':_0x4baa4b[_0x7225('0x45')]===_0x7225('0x46')?0x2:0x1},{'partyid_contact@odata.bind':_0x7225('0x47')+_0x4baa4b['enduserId']+')','participationtypemask':_0x4baa4b['callDirection']===_0x7225('0x46')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x7225('0x42')+_0x4baa4b[_0x7225('0x22')]+')','participationtypemask':_0x4baa4b[_0x7225('0x45')]==='queue'?0x2:0x1}];_0x3a45f5={'method':'POST','uri':_0x3891c6+'phonecalls','body':Object['assign']({},{'subject':intUtil[_0x7225('0x40')](_0xc9c617['Subjects'],_0x27038b,'\x20'),'phonenumber':String(_0x27038b[_0x7225('0x2e')]),'description':intUtil['getString'](_0xc9c617[_0x7225('0x41')],_0x27038b,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4baa4b['enduserId']?'/contacts('+_0x4baa4b['enduserId']+')':undefined,'ownerid@odata.bind':_0x7225('0x42')+_0x4baa4b['userId']+')','directioncode':_0x4baa4b[_0x7225('0x45')]===_0x7225('0x46')?![]:!![],'phonecall_activity_parties':_0xbadbc5},getCustomFields(_0xc9c617[_0x7225('0x43')],_0x27038b,_0xc9c617['ticketType'])),'headers':{'Authorization':_0x7225('0x19')+_0x476b33,'OData-Version':_0x7225('0x29')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x3a45f5);})['then'](function(_0x1ea7cb){var _0x43d030=_0x1ea7cb[_0x7225('0x48')][_0x7225('0x2a')];var _0xf5fb63=_0x43d030[_0x7225('0x2b')](_0x43d030[_0x7225('0x2c')]('(')+0x1,_0x43d030[_0x7225('0x2c')](')'));_0x4baa4b['ticketId']=_0xf5fb63;_0x4afcaf(_0x4baa4b);})[_0x7225('0x13')](function(_0x2b6f96){_0x5b06cb(_0x2b6f96[_0x7225('0x17')]);});});}function emit(_0x18357b,_0x486973,_0x277201,_0x5b7458){var _0x47665c={'uri':util[_0x7225('0x49')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x18357b,_0x277201,_0x5b7458)};io['to'](util['format']('user:%s',_0x486973))[_0x7225('0x4a')]('trigger:browser:url',_0x47665c);}exports['cs']=function(_0x1ad9e9,_0x31e582,_0x86ba7d,_0x2c5a3e,_0x20e216,_0x2e2e57,_0x31e04d,_0x588c1c){var _0x1da8ed={};_0x2e2e57[_0x7225('0xe')]=intUtil['stripTrailingSlash'](_0x2e2e57[_0x7225('0xe')]);_0x2e2e57['serverUrl']=intUtil['stripTrailingSlash'](_0x2e2e57[_0x7225('0x4b')]);_0x1da8ed[_0x7225('0x45')]=_0x588c1c===_0x7225('0x46')||_0x588c1c===_0x7225('0x4c')?'queue':_0x7225('0x27');var _0x487717=util['format'](_0x7225('0x4d'),_0x2e2e57[_0x7225('0xe')]);var _0x32ece6=util[_0x7225('0x49')]('https://login.microsoftonline.com/%s/oauth2/token',_0x2e2e57['tenantId']);var _0x503295=util['format'](_0x7225('0x4e'),_0x2e2e57['serverUrl'],_0x31e582[_0x7225('0x4f')],md5(_0x31e582[_0x7225('0x4f')]));if(_0x20e216&&_0x20e216[_0x7225('0x50')]){logger['info'](_0x7225('0x51'),'Recording\x20is\x20enabled!');_0x31e582[_0x7225('0x52')]=_0x503295;}else if(_0x31e04d&&_0x31e04d[_0x7225('0x53')]&&_0x31e04d[_0x7225('0x53')]!=='none'){logger[_0x7225('0x20')](_0x7225('0x54'),_0x7225('0x55'));_0x31e582[_0x7225('0x52')]=_0x503295;}else{_0x31e582[_0x7225('0x52')]='';}return getUser(_0x1da8ed,_0x2e2e57,_0x2c5a3e,_0x32ece6,_0x487717,_0x588c1c)[_0x7225('0x11')](function(_0x4aaaec){logger[_0x7225('0x20')]('['+_0x588c1c[_0x7225('0x15')]()+_0x7225('0x56'),_0x4aaaec['userId']);logger[_0x7225('0x20')]('['+_0x588c1c[_0x7225('0x15')]()+_0x7225('0x57'),_0x4aaaec[_0x7225('0x24')]);return getEndUser(_0x4aaaec,_0x2e2e57,_0x32ece6,_0x487717,_0x31e582,_0x588c1c,_0x86ba7d[_0x7225('0x58')]);})[_0x7225('0x11')](function(_0x363f7c){logger[_0x7225('0x20')]('['+_0x588c1c[_0x7225('0x15')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x363f7c[_0x7225('0x2d')]);logger[_0x7225('0x20')]('['+_0x588c1c[_0x7225('0x15')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x31e582[_0x7225('0x2e')]);return getTicket(_0x363f7c,_0x2e2e57,_0x32ece6,_0x487717,_0x31e582,_0x86ba7d,_0x588c1c);})[_0x7225('0x11')](function(_0xc0c6ac){logger['info'](util[_0x7225('0x49')]('['+_0x588c1c[_0x7225('0x15')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x86ba7d['ticketType'],_0xc0c6ac['ticketId']));logger[_0x7225('0x20')](util['format']('['+_0x588c1c[_0x7225('0x15')]()+']\x20Call\x20direction:\x20%s',_0x588c1c));if(_0x588c1c!==_0x7225('0x4c')){logger[_0x7225('0x20')]('['+_0x588c1c['toUpperCase']()+']',_0x7225('0x59'));emit(_0x2e2e57['remoteUri'],_0x2c5a3e[_0x7225('0x5a')],_0x86ba7d[_0x7225('0x3c')],_0xc0c6ac[_0x7225('0x5b')]);}})[_0x7225('0x13')](function(_0x1cf3a9){logger[_0x7225('0x14')]('['+_0x588c1c[_0x7225('0x15')]()+_0x7225('0x5c'),util['inspect'](_0x1cf3a9,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index edc2582..9ed8925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a7=['toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','idField','push','content','variable','variableName','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','destcalleridname','[OUTBOUND]','lastevent','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','calleridnum','toUpperCase','lodash','request-promise','md5','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','getString','Subjects','Descriptions','<br>','Tags','name','custom_fields','keyBy','value','format','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','info','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/contacts','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','apiKey'];(function(_0x3ee8d1,_0x54afbd){var _0x5e6660=function(_0x3414a5){while(--_0x3414a5){_0x3ee8d1['push'](_0x3ee8d1['shift']());}};_0x5e6660(++_0x54afbd);}(_0xa2a7,0x1eb));var _0x7a2a=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xa2a7[_0x2dea24];return _0x309d58;};'use strict';var _=require(_0x7a2a('0x0'));var rp=require(_0x7a2a('0x1'));var md5=require(_0x7a2a('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x7a2a('0x3'));var logger=require(_0x7a2a('0x4'))(_0x7a2a('0x5'));config[_0x7a2a('0x6')]=_[_0x7a2a('0x7')](config[_0x7a2a('0x6')],{'host':_0x7a2a('0x8'),'port':0x18eb});var io=require(_0x7a2a('0x9'))(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0x7a2a('0xa')};function emit(_0x4f6769,_0x3ff009,_0x268813){io['to'](_0x4f6769)[_0x7a2a('0xb')](_0x3ff009,_0x268813);}function getTicket(_0x2541ce,_0x570e6f,_0x105e16,_0x4e0b39,_0x1e4db0){logger['info'](_0x7a2a('0xc'));var _0x16a11b=_[_0x7a2a('0xd')]({'responder_id':_0x570e6f['id'],'requester_id':_0x105e16['id'],'name':util['format']('Caller\x20-\x20%s',_0x1e4db0['calleridname']),'phone':_0x1e4db0['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x7a2a('0xe')](_0x4e0b39[_0x7a2a('0xf')],_0x1e4db0,'\x20'),'description':intUtil[_0x7a2a('0xe')](_0x4e0b39[_0x7a2a('0x10')],_0x1e4db0,_0x7a2a('0x11')),'tags':getTags(_0x4e0b39[_0x7a2a('0x12')],_0x7a2a('0x13'))},getCustomFields(_0x4e0b39['Fields'],_0x1e4db0));_0x16a11b[_0x7a2a('0x14')]=_['mapValues'](_[_0x7a2a('0x15')](_0x16a11b[_0x7a2a('0x14')],'id'),_0x7a2a('0x16'));return request({'uri':util[_0x7a2a('0x17')]('%s/api/v2/tickets',_0x2541ce[_0x7a2a('0x18')]),'method':_0x7a2a('0x19'),'body':_0x16a11b})[_0x7a2a('0x1a')](function(_0x199e1b){logger['info'](_0x7a2a('0x1b'));return _0x199e1b;});}function getUser(_0x11511a,_0x10605d){if(intUtil[_0x7a2a('0x1c')](_0x10605d)){return request({'uri':util[_0x7a2a('0x17')](_0x7a2a('0x1d'),_0x11511a[_0x7a2a('0x18')]),'qs':{'email':_0x10605d}})[_0x7a2a('0x1a')](function(_0x337ca5){if(_0x337ca5[_0x7a2a('0x1e')]){logger['info'](_0x7a2a('0x1f'));return _[_0x7a2a('0x20')](_0x337ca5,function(_0x579822){return _0x579822[_0x7a2a('0x21')]['email']===_0x10605d;});}else{logger[_0x7a2a('0x22')](_0x7a2a('0x23'));return request({'uri':util['format'](_0x7a2a('0x24'),_0x11511a[_0x7a2a('0x18')])})[_0x7a2a('0x1a')](function(_0x27a6f9){logger[_0x7a2a('0x22')](_0x7a2a('0x25'));return _0x27a6f9;});}});}else{logger[_0x7a2a('0x22')](_0x7a2a('0x26'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x11511a[_0x7a2a('0x18')])})[_0x7a2a('0x1a')](function(_0x26933f){logger[_0x7a2a('0x22')](_0x7a2a('0x25'));return _0x26933f;});}}function getEndUser(_0x599457,_0x491485,_0x37d9bb){logger[_0x7a2a('0x22')]('Searching\x20enduser\x20with\x20phone',_0x37d9bb);return request({'uri':util[_0x7a2a('0x17')](_0x7a2a('0x27'),_0x599457[_0x7a2a('0x18')]),'qs':{'phone':_0x37d9bb}})['then'](function(_0x2cb2b0){if(_0x2cb2b0[_0x7a2a('0x1e')]){logger[_0x7a2a('0x22')]('Enduser\x20found!');return _[_0x7a2a('0x20')](_0x2cb2b0,{'phone':_0x37d9bb});}else{logger[_0x7a2a('0x22')](_0x7a2a('0x28'));return request({'uri':util[_0x7a2a('0x17')](_0x7a2a('0x27'),_0x599457[_0x7a2a('0x18')]),'method':_0x7a2a('0x19'),'body':{'name':_0x491485,'phone':_0x37d9bb}})['then'](function(_0x7d455a){logger[_0x7a2a('0x22')](_0x7a2a('0x29'));return _0x7d455a;});}});}function getAuth(_0x578c50){return util[_0x7a2a('0x17')]('Basic\x20%s',new Buffer(_0x578c50[_0x7a2a('0x2a')]+':X')[_0x7a2a('0x2b')](_0x7a2a('0x2c')));}function request(_0xf0171e){logger[_0x7a2a('0x2d')](_0x7a2a('0x2e'),JSON[_0x7a2a('0x2f')](_0xf0171e));return rp(_[_0x7a2a('0x7')](_0xf0171e,{'method':_0x7a2a('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x1bf02c,_0x7288cb){var _0x4d8ad3=[];if(_0x1bf02c&&_0x1bf02c[_0x7a2a('0x1e')]>0x0){_0x4d8ad3=_[_0x7a2a('0x31')](_0x1bf02c,_0x7288cb);}return _0x4d8ad3;}function getCustomFields(_0x51fe92,_0x3fa65d){var _0x505a37=[];var _0x337097={'custom_fields':[]};if(_0x51fe92['length']>0x0){_[_0x7a2a('0x32')](_0x51fe92,function(_0x5551f0){if(_[_0x7a2a('0x33')]([_0x7a2a('0x34'),_0x7a2a('0x35')],_0x5551f0[_0x7a2a('0x36')])&&_0x5551f0[_0x7a2a('0x37')]&&!_0x5551f0[_0x7a2a('0x38')]){_0x337097[_0x5551f0[_0x7a2a('0x37')][_0x7a2a('0x39')]()]=_0x5551f0['content'][_0x7a2a('0x2b')]();}else if(_[_0x7a2a('0x33')]([_0x7a2a('0x34'),'picklist'],_0x5551f0[_0x7a2a('0x36')])&&_0x5551f0[_0x7a2a('0x3a')]&&_0x5551f0[_0x7a2a('0x38')]){_0x337097['custom_fields'][_0x7a2a('0x3b')]({'id':_0x5551f0[_0x7a2a('0x3a')],'value':_0x5551f0[_0x7a2a('0x3c')][_0x7a2a('0x2b')]()});}else if(_0x5551f0[_0x7a2a('0x36')]===_0x7a2a('0x3d')&&_0x5551f0[_0x7a2a('0x3e')]&&_0x5551f0[_0x7a2a('0x3a')]&&_0x5551f0[_0x7a2a('0x38')]){_0x3fa65d[_0x5551f0[_0x7a2a('0x3e')]]&&_0x337097[_0x7a2a('0x14')][_0x7a2a('0x3b')]({'id':_0x5551f0[_0x7a2a('0x3a')],'value':_0x3fa65d[_0x5551f0[_0x7a2a('0x3e')]]['toString']()});}else if(_0x5551f0['type']==='customVariable'&&_0x5551f0[_0x7a2a('0x3f')]&&_0x5551f0['Variable'][_0x7a2a('0x13')]&&_0x5551f0['idField']&&_0x5551f0[_0x7a2a('0x38')]){_0x3fa65d[_0x5551f0[_0x7a2a('0x3f')][_0x7a2a('0x13')][_0x7a2a('0x39')]()]&&_0x337097[_0x7a2a('0x14')][_0x7a2a('0x3b')]({'id':_0x5551f0[_0x7a2a('0x3a')],'value':_0x3fa65d[_0x5551f0[_0x7a2a('0x3f')][_0x7a2a('0x13')][_0x7a2a('0x39')]()]['toString']()});}});}return _0x337097;}exports[_0x7a2a('0x40')]=function(_0x3ccca8,_0x66eea5,_0x5486aa,_0x196549,_0x37bc2a,_0x5b878d){var _0x277050,_0x58e0f6;_0x5b878d[_0x7a2a('0x18')]=intUtil[_0x7a2a('0x41')](_0x5b878d[_0x7a2a('0x18')]);_0x5b878d[_0x7a2a('0x42')]=intUtil[_0x7a2a('0x41')](_0x5b878d[_0x7a2a('0x42')]);if(_0x37bc2a&&_0x37bc2a[_0x7a2a('0x43')]){logger[_0x7a2a('0x22')]('[QUEUE]',_0x7a2a('0x44'));_0x66eea5[_0x7a2a('0x45')]=util[_0x7a2a('0x17')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b878d['serverUrl'],_0x66eea5[_0x7a2a('0x46')],md5(_0x66eea5[_0x7a2a('0x46')]));}else{_0x66eea5[_0x7a2a('0x45')]='';}headers[_0x7a2a('0x47')]=getAuth(_0x5b878d);return getUser(_0x5b878d,_0x196549[_0x7a2a('0x48')])[_0x7a2a('0x1a')](function(_0x52a5e9){_0x277050=_0x52a5e9;logger[_0x7a2a('0x22')]('The\x20User\x20ID\x20is:',_0x277050['id']);return getEndUser(_0x5b878d,_0x66eea5[_0x7a2a('0x49')],_0x66eea5['calleridnum']);})[_0x7a2a('0x1a')](function(_0x539160){_0x58e0f6=_0x539160;logger[_0x7a2a('0x22')](_0x7a2a('0x4a'),_0x58e0f6['id']);return getTicket(_0x5b878d,_0x277050,_0x58e0f6,_0x5486aa,_0x66eea5);})['then'](function(_0x4ef3d0){if(_0x4ef3d0&&_0x4ef3d0['id']){logger['info'](_0x7a2a('0x1b'));logger[_0x7a2a('0x22')](_0x7a2a('0x4b'),_0x4ef3d0['id']);logger[_0x7a2a('0x22')]('[QUEUE]',_0x7a2a('0x4c'));emit(util[_0x7a2a('0x17')]('user:%s',_0x196549[_0x7a2a('0x13')]),_0x7a2a('0x4d'),{'uri':util[_0x7a2a('0x17')](_0x7a2a('0x4e'),_0x5b878d['remoteUri'],_0x4ef3d0['id'])});}})[_0x7a2a('0x4f')](function(_0x42274b){logger[_0x7a2a('0x50')]('[QUEUE]',JSON[_0x7a2a('0x2f')](_0x42274b));});};exports['outbound']=function(_0x13a554,_0x5e36cd,_0x2be190,_0x1a4551,_0x3e877e,_0xbb58a1,_0x3af23f){var _0xfd1cda,_0x57579e;_0xbb58a1[_0x7a2a('0x18')]=intUtil['stripTrailingSlash'](_0xbb58a1[_0x7a2a('0x18')]);_0xbb58a1[_0x7a2a('0x42')]=intUtil[_0x7a2a('0x41')](_0xbb58a1[_0x7a2a('0x42')]);if(_0x3af23f&&_0x3af23f[_0x7a2a('0x51')]&&_0x3af23f[_0x7a2a('0x51')]!=='none'){logger[_0x7a2a('0x22')]('[OUTBOUND]',_0x7a2a('0x44'));_0x5e36cd['recordingURL']=util[_0x7a2a('0x17')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xbb58a1[_0x7a2a('0x42')],_0x5e36cd[_0x7a2a('0x46')],md5(_0x5e36cd[_0x7a2a('0x46')]));}headers[_0x7a2a('0x47')]=getAuth(_0xbb58a1);return getUser(_0xbb58a1,_0x1a4551[_0x7a2a('0x48')])[_0x7a2a('0x1a')](function(_0x5dbd71){_0xfd1cda=_0x5dbd71;logger[_0x7a2a('0x22')]('The\x20User\x20ID\x20is:',_0xfd1cda['id']);return getEndUser(_0xbb58a1,_0x5e36cd[_0x7a2a('0x52')],_0x5e36cd['destcalleridnum']);})[_0x7a2a('0x1a')](function(_0x2f4f28){_0x57579e=_0x2f4f28;logger['info'](_0x7a2a('0x4a'),_0x57579e['id']);return getTicket(_0xbb58a1,_0xfd1cda,_0x57579e,_0x2be190,_0x5e36cd);})[_0x7a2a('0x1a')](function(_0x2d81ec){if(_0x2d81ec&&_0x2d81ec['id']){logger[_0x7a2a('0x22')](_0x7a2a('0x1b'));logger[_0x7a2a('0x22')](_0x7a2a('0x4b'),_0x2d81ec['id']);logger[_0x7a2a('0x22')](_0x7a2a('0x53'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7a2a('0x17')]('user:%s',_0x1a4551['name']),_0x7a2a('0x4d'),{'uri':util[_0x7a2a('0x17')](_0x7a2a('0x4e'),_0xbb58a1[_0x7a2a('0x18')],_0x2d81ec['id'])});}})[_0x7a2a('0x4f')](function(_0x413219){logger[_0x7a2a('0x50')](_0x7a2a('0x53'),JSON['stringify'](_0x413219));});};exports['unmanaged']=function(_0x3e5170,_0x53e81c,_0xe4f395,_0x2fbdcd,_0x215693,_0x7bff43){var _0x4b7fa7,_0x268b52;_0x7bff43[_0x7a2a('0x18')]=intUtil[_0x7a2a('0x41')](_0x7bff43[_0x7a2a('0x18')]);_0x7bff43[_0x7a2a('0x42')]=intUtil[_0x7a2a('0x41')](_0x7bff43[_0x7a2a('0x42')]);if(_0x215693&&_0x215693[_0x7a2a('0x43')]){logger[_0x7a2a('0x22')]('['+_0x53e81c[_0x7a2a('0x54')]['toUpperCase']()+']',_0x7a2a('0x44'));_0x53e81c['recordingURL']=util[_0x7a2a('0x17')](_0x7a2a('0x55'),_0x7bff43[_0x7a2a('0x42')],_0x53e81c[_0x7a2a('0x46')],md5(_0x53e81c['uniqueid']));}else{_0x53e81c['recordingURL']='';}headers[_0x7a2a('0x47')]=getAuth(_0x7bff43);return getUser(_0x7bff43,'')[_0x7a2a('0x1a')](function(_0x467f00){_0x4b7fa7=_0x467f00;logger[_0x7a2a('0x22')](_0x7a2a('0x56'),_0x4b7fa7['id']);return getEndUser(_0x7bff43,_0x53e81c[_0x7a2a('0x49')],_0x53e81c[_0x7a2a('0x57')]);})['then'](function(_0x1d22c8){_0x268b52=_0x1d22c8;logger['info'](_0x7a2a('0x4a'),_0x268b52['id']);return getTicket(_0x7bff43,_0x4b7fa7,_0x268b52,_0xe4f395,_0x53e81c);})[_0x7a2a('0x1a')](function(_0x5d777c){if(_0x5d777c){logger['info'](_0x7a2a('0x1b'));logger[_0x7a2a('0x22')](_0x7a2a('0x4b'),_0x5d777c['id']);}})[_0x7a2a('0x4f')](function(_0x2a8a59){logger[_0x7a2a('0x50')]('['+_0x53e81c[_0x7a2a('0x54')][_0x7a2a('0x58')]()+']',JSON[_0x7a2a('0x2f')](_0x2a8a59));});};
\ No newline at end of file
+var _0x0ded=['catch','error','stringify','recordingFormat','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','lastevent','calleridnum','toUpperCase','lodash','util','ioredis','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','custom_fields','mapValues','keyBy','%s/api/v2/tickets','remoteUri','POST','then','info','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','apiKey','toString','base64','debug','[HTTP]','map','includes','string','type','nameField','customField','toLowerCase','content','picklist','idField','push','variable','variableName','Variable','name','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0ded,0x66));var _0xd0de=function(_0x2891d1,_0x2ddd3e){_0x2891d1=_0x2891d1-0x0;var _0x486948=_0x0ded[_0x2891d1];return _0x486948;};'use strict';var _=require(_0xd0de('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xd0de('0x1'));var Redis=require(_0xd0de('0x2'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xd0de('0x3'))(_0xd0de('0x4'));config[_0xd0de('0x5')]=_[_0xd0de('0x6')](config[_0xd0de('0x5')],{'host':_0xd0de('0x7'),'port':0x18eb});var io=require(_0xd0de('0x8'))(new Redis(config[_0xd0de('0x5')]));var headers={'Content-Type':'application/json','Accept':_0xd0de('0x9')};function emit(_0x392a23,_0x36f5df,_0x50761f){io['to'](_0x392a23)['emit'](_0x36f5df,_0x50761f);}function getTicket(_0x2e2815,_0x1b0ed5,_0x37b238,_0x572164,_0x3f9a3c){logger['info'](_0xd0de('0xa'));var _0x463e07=_[_0xd0de('0xb')]({'responder_id':_0x1b0ed5['id'],'requester_id':_0x37b238['id'],'name':util[_0xd0de('0xc')](_0xd0de('0xd'),_0x3f9a3c[_0xd0de('0xe')]),'phone':_0x3f9a3c['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xd0de('0xf')](_0x572164[_0xd0de('0x10')],_0x3f9a3c,'\x20'),'description':intUtil[_0xd0de('0xf')](_0x572164[_0xd0de('0x11')],_0x3f9a3c,_0xd0de('0x12')),'tags':getTags(_0x572164[_0xd0de('0x13')],'name')},getCustomFields(_0x572164['Fields'],_0x3f9a3c));_0x463e07[_0xd0de('0x14')]=_[_0xd0de('0x15')](_[_0xd0de('0x16')](_0x463e07['custom_fields'],'id'),'value');return request({'uri':util['format'](_0xd0de('0x17'),_0x2e2815[_0xd0de('0x18')]),'method':_0xd0de('0x19'),'body':_0x463e07})[_0xd0de('0x1a')](function(_0x1556b8){logger[_0xd0de('0x1b')](_0xd0de('0x1c'));return _0x1556b8;});}function getUser(_0x59018a,_0x3ee293){if(intUtil[_0xd0de('0x1d')](_0x3ee293)){return request({'uri':util[_0xd0de('0xc')](_0xd0de('0x1e'),_0x59018a[_0xd0de('0x18')]),'qs':{'email':_0x3ee293}})['then'](function(_0x35e38c){if(_0x35e38c[_0xd0de('0x1f')]){logger['info'](_0xd0de('0x20'));return _[_0xd0de('0x21')](_0x35e38c,function(_0x31b1c6){return _0x31b1c6['contact']['email']===_0x3ee293;});}else{logger[_0xd0de('0x1b')](_0xd0de('0x22'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x59018a[_0xd0de('0x18')])})[_0xd0de('0x1a')](function(_0x408958){logger['info']('Admin\x20account\x20selected.');return _0x408958;});}});}else{logger[_0xd0de('0x1b')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xd0de('0xc')](_0xd0de('0x23'),_0x59018a[_0xd0de('0x18')])})['then'](function(_0x455800){logger[_0xd0de('0x1b')](_0xd0de('0x24'));return _0x455800;});}}function getEndUser(_0x2e41bf,_0xb27609,_0x3fce6b){logger[_0xd0de('0x1b')](_0xd0de('0x25'),_0x3fce6b);return request({'uri':util[_0xd0de('0xc')](_0xd0de('0x26'),_0x2e41bf[_0xd0de('0x18')]),'qs':{'phone':_0x3fce6b}})['then'](function(_0x335b2a){if(_0x335b2a[_0xd0de('0x1f')]){logger[_0xd0de('0x1b')](_0xd0de('0x27'));return _[_0xd0de('0x21')](_0x335b2a,{'phone':_0x3fce6b});}else{logger[_0xd0de('0x1b')](_0xd0de('0x28'));return request({'uri':util[_0xd0de('0xc')](_0xd0de('0x26'),_0x2e41bf['remoteUri']),'method':_0xd0de('0x19'),'body':{'name':_0xb27609,'phone':_0x3fce6b}})[_0xd0de('0x1a')](function(_0x3da8d5){logger[_0xd0de('0x1b')]('Enduser\x20created.');return _0x3da8d5;});}});}function getAuth(_0x13de28){return util['format']('Basic\x20%s',new Buffer(_0x13de28[_0xd0de('0x29')]+':X')[_0xd0de('0x2a')](_0xd0de('0x2b')));}function request(_0x2af0ac){logger[_0xd0de('0x2c')](_0xd0de('0x2d'),JSON['stringify'](_0x2af0ac));return rp(_['defaults'](_0x2af0ac,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x139ca5,_0x1fee01){var _0x421cb7=[];if(_0x139ca5&&_0x139ca5[_0xd0de('0x1f')]>0x0){_0x421cb7=_[_0xd0de('0x2e')](_0x139ca5,_0x1fee01);}return _0x421cb7;}function getCustomFields(_0x28e07a,_0x59db0a){var _0x11185d=[];var _0x56860f={'custom_fields':[]};if(_0x28e07a[_0xd0de('0x1f')]>0x0){_['forEach'](_0x28e07a,function(_0x121eff){if(_[_0xd0de('0x2f')]([_0xd0de('0x30'),'picklist'],_0x121eff[_0xd0de('0x31')])&&_0x121eff[_0xd0de('0x32')]&&!_0x121eff[_0xd0de('0x33')]){_0x56860f[_0x121eff['nameField'][_0xd0de('0x34')]()]=_0x121eff[_0xd0de('0x35')][_0xd0de('0x2a')]();}else if(_[_0xd0de('0x2f')]([_0xd0de('0x30'),_0xd0de('0x36')],_0x121eff[_0xd0de('0x31')])&&_0x121eff[_0xd0de('0x37')]&&_0x121eff[_0xd0de('0x33')]){_0x56860f[_0xd0de('0x14')][_0xd0de('0x38')]({'id':_0x121eff[_0xd0de('0x37')],'value':_0x121eff[_0xd0de('0x35')][_0xd0de('0x2a')]()});}else if(_0x121eff[_0xd0de('0x31')]===_0xd0de('0x39')&&_0x121eff[_0xd0de('0x3a')]&&_0x121eff[_0xd0de('0x37')]&&_0x121eff[_0xd0de('0x33')]){_0x59db0a[_0x121eff[_0xd0de('0x3a')]]&&_0x56860f['custom_fields'][_0xd0de('0x38')]({'id':_0x121eff[_0xd0de('0x37')],'value':_0x59db0a[_0x121eff[_0xd0de('0x3a')]][_0xd0de('0x2a')]()});}else if(_0x121eff[_0xd0de('0x31')]==='customVariable'&&_0x121eff[_0xd0de('0x3b')]&&_0x121eff['Variable'][_0xd0de('0x3c')]&&_0x121eff[_0xd0de('0x37')]&&_0x121eff['customField']){_0x59db0a[_0x121eff[_0xd0de('0x3b')][_0xd0de('0x3c')][_0xd0de('0x34')]()]&&_0x56860f[_0xd0de('0x14')][_0xd0de('0x38')]({'id':_0x121eff[_0xd0de('0x37')],'value':_0x59db0a[_0x121eff[_0xd0de('0x3b')][_0xd0de('0x3c')][_0xd0de('0x34')]()][_0xd0de('0x2a')]()});}});}return _0x56860f;}exports['queue']=function(_0x180627,_0x501af2,_0x49d8a8,_0x18db86,_0x3ab54f,_0x45a7a9){var _0x1a74cc,_0x7a4846;_0x45a7a9[_0xd0de('0x18')]=intUtil[_0xd0de('0x3d')](_0x45a7a9['remoteUri']);_0x45a7a9[_0xd0de('0x3e')]=intUtil['stripTrailingSlash'](_0x45a7a9[_0xd0de('0x3e')]);if(_0x3ab54f&&_0x3ab54f[_0xd0de('0x3f')]){logger[_0xd0de('0x1b')](_0xd0de('0x40'),_0xd0de('0x41'));_0x501af2['recordingURL']=util[_0xd0de('0xc')](_0xd0de('0x42'),_0x45a7a9[_0xd0de('0x3e')],_0x501af2[_0xd0de('0x43')],md5(_0x501af2[_0xd0de('0x43')]));}else{_0x501af2['recordingURL']='';}headers[_0xd0de('0x44')]=getAuth(_0x45a7a9);return getUser(_0x45a7a9,_0x18db86[_0xd0de('0x45')])[_0xd0de('0x1a')](function(_0x45a1e8){_0x1a74cc=_0x45a1e8;logger[_0xd0de('0x1b')](_0xd0de('0x46'),_0x1a74cc['id']);return getEndUser(_0x45a7a9,_0x501af2[_0xd0de('0xe')],_0x501af2['calleridnum']);})[_0xd0de('0x1a')](function(_0x22bb11){_0x7a4846=_0x22bb11;logger[_0xd0de('0x1b')](_0xd0de('0x47'),_0x7a4846['id']);return getTicket(_0x45a7a9,_0x1a74cc,_0x7a4846,_0x49d8a8,_0x501af2);})[_0xd0de('0x1a')](function(_0x1473f2){if(_0x1473f2&&_0x1473f2['id']){logger[_0xd0de('0x1b')](_0xd0de('0x1c'));logger['info'](_0xd0de('0x48'),_0x1473f2['id']);logger[_0xd0de('0x1b')](_0xd0de('0x40'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd0de('0xc')](_0xd0de('0x49'),_0x18db86[_0xd0de('0x3c')]),_0xd0de('0x4a'),{'uri':util[_0xd0de('0xc')](_0xd0de('0x4b'),_0x45a7a9[_0xd0de('0x18')],_0x1473f2['id'])});}})[_0xd0de('0x4c')](function(_0x40fb06){logger[_0xd0de('0x4d')](_0xd0de('0x40'),JSON[_0xd0de('0x4e')](_0x40fb06));});};exports['outbound']=function(_0x370ff1,_0x4a1685,_0x4e34ea,_0x432637,_0x53de05,_0x161e27,_0x258704){var _0x4d869d,_0x1a3584;_0x161e27[_0xd0de('0x18')]=intUtil[_0xd0de('0x3d')](_0x161e27['remoteUri']);_0x161e27[_0xd0de('0x3e')]=intUtil[_0xd0de('0x3d')](_0x161e27[_0xd0de('0x3e')]);if(_0x258704&&_0x258704[_0xd0de('0x4f')]&&_0x258704[_0xd0de('0x4f')]!=='none'){logger[_0xd0de('0x1b')](_0xd0de('0x50'),_0xd0de('0x41'));_0x4a1685[_0xd0de('0x51')]=util[_0xd0de('0xc')](_0xd0de('0x42'),_0x161e27[_0xd0de('0x3e')],_0x4a1685['uniqueid'],md5(_0x4a1685[_0xd0de('0x43')]));}headers[_0xd0de('0x44')]=getAuth(_0x161e27);return getUser(_0x161e27,_0x432637[_0xd0de('0x45')])[_0xd0de('0x1a')](function(_0xad567e){_0x4d869d=_0xad567e;logger['info'](_0xd0de('0x46'),_0x4d869d['id']);return getEndUser(_0x161e27,_0x4a1685[_0xd0de('0x52')],_0x4a1685[_0xd0de('0x53')]);})['then'](function(_0x64d536){_0x1a3584=_0x64d536;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1a3584['id']);return getTicket(_0x161e27,_0x4d869d,_0x1a3584,_0x4e34ea,_0x4a1685);})[_0xd0de('0x1a')](function(_0x52e4d1){if(_0x52e4d1&&_0x52e4d1['id']){logger[_0xd0de('0x1b')]('Ticket\x20created!');logger['info'](_0xd0de('0x48'),_0x52e4d1['id']);logger[_0xd0de('0x1b')](_0xd0de('0x50'),_0xd0de('0x54'));emit(util['format'](_0xd0de('0x49'),_0x432637[_0xd0de('0x3c')]),_0xd0de('0x4a'),{'uri':util[_0xd0de('0xc')](_0xd0de('0x4b'),_0x161e27[_0xd0de('0x18')],_0x52e4d1['id'])});}})[_0xd0de('0x4c')](function(_0x420e49){logger[_0xd0de('0x4d')](_0xd0de('0x50'),JSON[_0xd0de('0x4e')](_0x420e49));});};exports[_0xd0de('0x55')]=function(_0x2a405b,_0x424a83,_0x2be491,_0x29f84e,_0xcee3d3,_0x41aac8){var _0x8f3c74,_0x29c8ec;_0x41aac8[_0xd0de('0x18')]=intUtil['stripTrailingSlash'](_0x41aac8['remoteUri']);_0x41aac8[_0xd0de('0x3e')]=intUtil[_0xd0de('0x3d')](_0x41aac8[_0xd0de('0x3e')]);if(_0xcee3d3&&_0xcee3d3[_0xd0de('0x3f')]){logger[_0xd0de('0x1b')]('['+_0x424a83[_0xd0de('0x56')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x424a83[_0xd0de('0x51')]=util[_0xd0de('0xc')](_0xd0de('0x42'),_0x41aac8[_0xd0de('0x3e')],_0x424a83[_0xd0de('0x43')],md5(_0x424a83['uniqueid']));}else{_0x424a83[_0xd0de('0x51')]='';}headers[_0xd0de('0x44')]=getAuth(_0x41aac8);return getUser(_0x41aac8,'')[_0xd0de('0x1a')](function(_0xfdc630){_0x8f3c74=_0xfdc630;logger[_0xd0de('0x1b')](_0xd0de('0x46'),_0x8f3c74['id']);return getEndUser(_0x41aac8,_0x424a83[_0xd0de('0xe')],_0x424a83[_0xd0de('0x57')]);})[_0xd0de('0x1a')](function(_0x1159ab){_0x29c8ec=_0x1159ab;logger[_0xd0de('0x1b')](_0xd0de('0x47'),_0x29c8ec['id']);return getTicket(_0x41aac8,_0x8f3c74,_0x29c8ec,_0x2be491,_0x424a83);})[_0xd0de('0x1a')](function(_0x3d6ac2){if(_0x3d6ac2){logger[_0xd0de('0x1b')](_0xd0de('0x1c'));logger['info'](_0xd0de('0x48'),_0x3d6ac2['id']);}})[_0xd0de('0x4c')](function(_0x8d8211){logger[_0xd0de('0x4d')]('['+_0x424a83[_0xd0de('0x56')][_0xd0de('0x58')]()+']',JSON[_0xd0de('0x4e')](_0x8d8211));});};
\ No newline at end of file
index a20c3af..ed59480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd294=['Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userId','User\x20found:','userEmail','adminEmail','/api/lookup?q=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','Creating\x20new\x20task','POST','/api/tasks','getString','Descriptions','add','task','Task\x20created:','ticketId','/contacts/','user:%s','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','headers','Getting\x20admin\x20information','then','users','length','email','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','/api/selector/owners'];(function(_0x40bff0,_0xe7b49b){var _0x42aa5b=function(_0x3f928a){while(--_0x3f928a){_0x40bff0['push'](_0x40bff0['shift']());}};_0x42aa5b(++_0xe7b49b);}(_0xd294,0x1e7));var _0x4d29=function(_0x16708a,_0x1795c8){_0x16708a=_0x16708a-0x0;var _0x41082e=_0xd294[_0x16708a];return _0x41082e;};'use strict';var _=require('lodash');var rp=require(_0x4d29('0x0'));var md5=require(_0x4d29('0x1'));var util=require(_0x4d29('0x2'));var moment=require(_0x4d29('0x3'));var Promise=require(_0x4d29('0x4'));var Redis=require(_0x4d29('0x5'));var intUtil=require(_0x4d29('0x6'));var config=require(_0x4d29('0x7'));var logger=require(_0x4d29('0x8'))('freshsales');config[_0x4d29('0x9')]=_[_0x4d29('0xa')](config[_0x4d29('0x9')],{'host':_0x4d29('0xb'),'port':0x18eb});var io=require(_0x4d29('0xc'))(new Redis(config[_0x4d29('0x9')]));function getAdminId(_0x258264,_0x4ba4ab,_0xd4a01a,_0x172720){return new Promise(function(_0x235126,_0x2e5618){var _0x264f3e=![];var _0x39c1de={'method':_0x4d29('0xd'),'uri':_0x172720+'/api/selector/owners','json':!![]};_0x39c1de[_0x4d29('0xe')]=_0xd4a01a;logger['info'](_0x4d29('0xf'));return rp(_0x39c1de)[_0x4d29('0x10')](function(_0x53ce0d){if(_0x53ce0d){var _0x2b4812=_0x53ce0d[_0x4d29('0x11')];var _0x2210b1=null;for(_0x2210b1=0x0;_0x2210b1<_0x2b4812[_0x4d29('0x12')];_0x2210b1++){if(_0x2b4812[_0x2210b1][_0x4d29('0x13')]===_0x258264['adminEmail']){_0x258264[_0x4d29('0x14')]=_0x2b4812[_0x2210b1]['id'];_0x264f3e=!![];}}if(_0x264f3e){logger[_0x4d29('0x15')](_0x4d29('0x16'),_0x258264[_0x4d29('0x14')]);_0x235126(_0x258264);}else{_0x2e5618({'statusCode':0x194,'message':_0x4d29('0x17')});}}else{_0x2e5618({'statusCode':0x194,'message':_0x4d29('0x17')});}})[_0x4d29('0x18')](function(_0x1345ce){logger[_0x4d29('0x19')]('['+[_0x4ba4ab[_0x4d29('0x1a')]()]+']',_0x1345ce[_0x4d29('0x1b')]);_0x2e5618(_0x1345ce);});});}function getUser(_0xbd594c,_0x205c83,_0x4a0c75){return function(_0x3fc14a){return new Promise(function(_0x4e0316,_0x5d5b13){var _0x169742={'method':_0x4d29('0xd'),'uri':_0x4a0c75+_0x4d29('0x1c'),'json':!![]};_0x169742[_0x4d29('0xe')]=_0x205c83;logger[_0x4d29('0x15')](_0x4d29('0x1d'));return rp(_0x169742)['then'](function(_0x1339b1){if(_0x1339b1){var _0x5eb078=_0x1339b1['users'];var _0x179bb2=![];var _0x4737eb=null;if(_0x3fc14a['agentEmail']!==null){logger['info'](_0x4d29('0x1e'),_0x3fc14a[_0x4d29('0x1f')]);_0x3fc14a['userEmail']=_0x3fc14a[_0x4d29('0x1f')];for(_0x4737eb=0x0;_0x4737eb<_0x5eb078['length'];_0x4737eb++){if(_0x5eb078[_0x4737eb][_0x4d29('0x13')]===_0x3fc14a['agentEmail']){_0x179bb2=!![];_0x3fc14a[_0x4d29('0x20')]=_0x5eb078[_0x4737eb]['id'];logger[_0x4d29('0x15')](_0x4d29('0x21'),_0x3fc14a[_0x4d29('0x20')]);}}}if(!_0x179bb2){logger[_0x4d29('0x15')]('Admin\x20selected');_0x3fc14a[_0x4d29('0x22')]=_0x3fc14a[_0x4d29('0x23')];_0x3fc14a[_0x4d29('0x20')]=_0x3fc14a[_0x4d29('0x14')];_0x179bb2=!![];}if(_0x179bb2){_0x4e0316(_0x3fc14a);}else{_0x5d5b13({'statusCode':0x194,'message':_0x4d29('0x17')});}}else{_0x5d5b13({'statusCode':0x194,'message':_0x4d29('0x17')});}})['catch'](function(_0x4d367c){logger[_0x4d29('0x19')]('['+[_0xbd594c[_0x4d29('0x1a')]()]+']',_0x4d367c[_0x4d29('0x1b')]);_0x5d5b13(_0x4d367c);});});};}function searchContact(_0x12ca67,_0x358430,_0xa1180f,_0x52aed3){return new Promise(function(_0x370aae,_0x251e4b){var _0xbb2b31={'method':'GET','headers':_0x358430,'uri':_0x12ca67+_0x4d29('0x24')+_0x52aed3+'&f='+_0xa1180f+_0x4d29('0x25'),'json':!![]};rp(_0xbb2b31)[_0x4d29('0x10')](function(_0xb97ba8){var _0x93d0b0=_[_0x4d29('0x26')](_0xb97ba8[_0x4d29('0x27')]['contacts'],[_0xa1180f,_0x52aed3]);_0x370aae(_0x93d0b0);})[_0x4d29('0x18')](function(_0x1b8f4f){_0x251e4b(_0x1b8f4f);});});}function getEndUser(_0x1f5667,_0x3f62df,_0x323aab){return function(_0x10a5d8){return new Promise(function(_0x217c09,_0x4d1145){logger['info'](util[_0x4d29('0x28')](_0x4d29('0x29'),_0x10a5d8[_0x4d29('0x2a')]));searchContact(_0x323aab,_0x3f62df,_0x4d29('0x2b'),_0x10a5d8[_0x4d29('0x2a')])['then'](function(_0x184540){if(_0x184540){_0x10a5d8[_0x4d29('0x2c')]=_0x184540['id'];logger['info'](_0x4d29('0x2d'),_0x10a5d8['endUserId']);return _0x217c09(_0x10a5d8);}searchContact(_0x323aab,_0x3f62df,_0x4d29('0x2e'),_0x10a5d8[_0x4d29('0x2a')])[_0x4d29('0x10')](function(_0x4bebb6){if(_0x4bebb6){_0x10a5d8['endUserId']=_0x4bebb6['id'];logger[_0x4d29('0x15')](_0x4d29('0x2f'),_0x10a5d8[_0x4d29('0x2c')]);return _0x217c09(_0x10a5d8);}createEndUser(_0x10a5d8,_0x1f5667,_0x3f62df,_0x323aab)[_0x4d29('0x10')](function(_0x3b1729){logger['info']('Contact\x20created:',_0x3b1729[_0x4d29('0x2c')]);return _0x217c09(_0x3b1729);});});})[_0x4d29('0x18')](function(_0x45d2bf){_0x4d1145(_0x45d2bf);});});};}function createEndUser(_0xcfd714,_0x70ca5e,_0x367a6e,_0x35bd68){return new Promise(function(_0xe35696,_0x5037c9){var _0x11c66f=moment();var _0x56d32c={'method':'POST','uri':_0x35bd68+_0x4d29('0x30'),'body':{'contact':{'last_name':_0xcfd714['contactNumber'],'work_number':_0xcfd714[_0x4d29('0x2a')],'mobile_number':_0xcfd714[_0x4d29('0x2a')],'owner_id':_0xcfd714[_0x4d29('0x20')],'created_at':_0x11c66f[_0x4d29('0x28')](_0x4d29('0x31'))}},'json':!![]};_0x56d32c['headers']=_0x367a6e;logger[_0x4d29('0x15')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x56d32c)[_0x4d29('0x10')](function(_0x24cb9f){_0xcfd714['endUserId']=_0x24cb9f[_0x4d29('0x32')]['id'];_0xe35696(_0xcfd714);})['catch'](function(_0x32e300){logger[_0x4d29('0x19')]('['+[_0x70ca5e[_0x4d29('0x1a')]()]+']',_0x32e300[_0x4d29('0x1b')]);_0x5037c9(_0x32e300[_0x4d29('0x1b')]);});});}function getTicket(_0x46f4e4,_0x1a75cb,_0xb87d48,_0x123c15,_0x24e411){return function(_0x4e844a){logger['info'](_0x4d29('0x33'));return new Promise(function(_0x5b8c09,_0x2a955b){var _0x3a1432=moment();var _0x5b6ac1={'method':_0x4d29('0x34'),'uri':_0xb87d48+_0x4d29('0x35'),'body':{'title':intUtil['getString'](_0x123c15['Subjects'],_0x24e411,'\x20'),'description':intUtil[_0x4d29('0x36')](_0x123c15[_0x4d29('0x37')],_0x24e411,'\x0a'),'owner_id':_0x4e844a[_0x4d29('0x20')],'creater_id':_0x4e844a['adminId'],'targetable_id':_0x4e844a[_0x4d29('0x2c')],'targetable_type':'Contact','created_at':_0x3a1432[_0x4d29('0x28')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x3a1432[_0x4d29('0x38')](0x1e,'m')[_0x4d29('0x28')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x5b6ac1[_0x4d29('0xe')]=_0x1a75cb;return rp(_0x5b6ac1)['then'](function(_0xa432ef){_0x4e844a['ticketId']=_0xa432ef[_0x4d29('0x39')]['id'];logger[_0x4d29('0x15')](_0x4d29('0x3a'),_0x4e844a[_0x4d29('0x3b')]);_0x5b8c09(_0x4e844a);})[_0x4d29('0x18')](function(_0x579181){logger[_0x4d29('0x19')]('['+[_0x46f4e4[_0x4d29('0x1a')]()]+']',_0x579181['message']);_0x2a955b(_0x579181[_0x4d29('0x1b')]);});});};}function emit(_0x5f321a,_0x2b3393,_0x3f0887){var _0x328c60={'uri':_0x5f321a+_0x4d29('0x3c')+_0x3f0887};io['to'](util[_0x4d29('0x28')](_0x4d29('0x3d'),_0x2b3393))['emit'](_0x4d29('0x3e'),_0x328c60);}exports['cs']=function(_0x41b005,_0x38ccfd,_0x20e72e,_0x1f9814,_0xbdbe58,_0x1c9e1e,_0x1f4a9b,_0x2d5589){var _0x104103={};var _0xc63df4={'Authorization':_0x4d29('0x3f')+_0x1c9e1e[_0x4d29('0x40')]};_0x1c9e1e[_0x4d29('0x41')]=intUtil[_0x4d29('0x42')](_0x1c9e1e[_0x4d29('0x41')]);_0x1c9e1e['serverUrl']=intUtil[_0x4d29('0x42')](_0x1c9e1e[_0x4d29('0x43')]);var _0x44b7a7=_0x1c9e1e['remoteUri'];_0x104103[_0x4d29('0x23')]=_0x1c9e1e[_0x4d29('0x44')];_0x104103[_0x4d29('0x2a')]=_0x2d5589[_0x4d29('0x45')]()===_0x4d29('0x46')?_0x38ccfd[_0x4d29('0x47')]:_0x38ccfd['calleridnum'];_0x104103[_0x4d29('0x48')]=_0x2d5589===_0x4d29('0x49')||_0x2d5589===_0x4d29('0x4a')?'queue':_0x4d29('0x46');if(_0x1f9814){_0x104103[_0x4d29('0x1f')]=_0x1f9814[_0x4d29('0x13')];}var _0x454641=util['format'](_0x4d29('0x4b'),_0x1c9e1e[_0x4d29('0x43')],_0x38ccfd[_0x4d29('0x4c')],md5(_0x38ccfd[_0x4d29('0x4c')]));if(_0xbdbe58&&_0xbdbe58[_0x4d29('0x4d')]){logger['info'](_0x4d29('0x4e'),'Recording\x20is\x20enabled!');_0x38ccfd[_0x4d29('0x4f')]=_0x454641;}else if(_0x1f4a9b&&_0x1f4a9b[_0x4d29('0x50')]&&_0x1f4a9b['recordingFormat']!=='none'){logger[_0x4d29('0x15')]('[OUTBOUND]',_0x4d29('0x51'));_0x38ccfd[_0x4d29('0x4f')]=_0x454641;}else{_0x38ccfd[_0x4d29('0x4f')]='';}return getAdminId(_0x104103,_0x2d5589,_0xc63df4,_0x44b7a7)[_0x4d29('0x10')](getUser(_0x2d5589,_0xc63df4,_0x44b7a7))[_0x4d29('0x10')](getEndUser(_0x2d5589,_0xc63df4,_0x44b7a7))[_0x4d29('0x10')](getTicket(_0x2d5589,_0xc63df4,_0x44b7a7,_0x20e72e,_0x38ccfd))[_0x4d29('0x10')](function(_0x3c1e34){logger['info'](util[_0x4d29('0x28')](_0x4d29('0x52'),_0x3c1e34['ticketId']));if(_0x2d5589!=='unmanaged'){logger[_0x4d29('0x15')]('['+[_0x2d5589['toUpperCase']()]+']',_0x4d29('0x53'));emit(_0x44b7a7,_0x1f9814['name'],_0x3c1e34['endUserId']);}})[_0x4d29('0x18')](function(_0x351d59){logger[_0x4d29('0x19')]('['+[_0x2d5589[_0x4d29('0x1a')]()]+_0x4d29('0x54'),util[_0x4d29('0x55')](_0x351d59,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xda41=['emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','inspect','lodash','request-promise','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','error','GET','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','userId','Admin\x20selected','adminEmail','toUpperCase','message','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','catch','Creating\x20new\x20task','/api/tasks','Descriptions','Contact','add','ticketId','/contacts/'];(function(_0x595bd1,_0xb1e7a){var _0xd0344f=function(_0x5eb2fd){while(--_0x5eb2fd){_0x595bd1['push'](_0x595bd1['shift']());}};_0xd0344f(++_0xb1e7a);}(_0xda41,0x10f));var _0x1da4=function(_0x37759e,_0x4ab33f){_0x37759e=_0x37759e-0x0;var _0x3b4ebc=_0xda41[_0x37759e];return _0x3b4ebc;};'use strict';var _=require(_0x1da4('0x0'));var rp=require(_0x1da4('0x1'));var md5=require('md5');var util=require('util');var moment=require(_0x1da4('0x2'));var Promise=require(_0x1da4('0x3'));var Redis=require(_0x1da4('0x4'));var intUtil=require(_0x1da4('0x5'));var config=require(_0x1da4('0x6'));var logger=require(_0x1da4('0x7'))('freshsales');config[_0x1da4('0x8')]=_['defaults'](config['redis'],{'host':_0x1da4('0x9'),'port':0x18eb});var io=require(_0x1da4('0xa'))(new Redis(config[_0x1da4('0x8')]));function getAdminId(_0xfabe15,_0x179088,_0x38f944,_0xe02b38){return new Promise(function(_0x4e1722,_0x3519b2){var _0xa3b11f=![];var _0x40324d={'method':'GET','uri':_0xe02b38+_0x1da4('0xb'),'json':!![]};_0x40324d[_0x1da4('0xc')]=_0x38f944;logger[_0x1da4('0xd')](_0x1da4('0xe'));return rp(_0x40324d)[_0x1da4('0xf')](function(_0x38dd55){if(_0x38dd55){var _0x185f32=_0x38dd55[_0x1da4('0x10')];var _0x4ef71b=null;for(_0x4ef71b=0x0;_0x4ef71b<_0x185f32[_0x1da4('0x11')];_0x4ef71b++){if(_0x185f32[_0x4ef71b][_0x1da4('0x12')]===_0xfabe15['adminEmail']){_0xfabe15[_0x1da4('0x13')]=_0x185f32[_0x4ef71b]['id'];_0xa3b11f=!![];}}if(_0xa3b11f){logger[_0x1da4('0xd')](_0x1da4('0x14'),_0xfabe15['adminId']);_0x4e1722(_0xfabe15);}else{_0x3519b2({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x3519b2({'statusCode':0x194,'message':_0x1da4('0x15')});}})['catch'](function(_0x25ca85){logger[_0x1da4('0x16')]('['+[_0x179088['toUpperCase']()]+']',_0x25ca85['message']);_0x3519b2(_0x25ca85);});});}function getUser(_0xdbc70d,_0x584c9a,_0x2f50b2){return function(_0x5d0988){return new Promise(function(_0x13e0a9,_0x24238e){var _0x231593={'method':_0x1da4('0x17'),'uri':_0x2f50b2+_0x1da4('0xb'),'json':!![]};_0x231593['headers']=_0x584c9a;logger[_0x1da4('0xd')](_0x1da4('0x18'));return rp(_0x231593)['then'](function(_0x5b533e){if(_0x5b533e){var _0x1ce612=_0x5b533e[_0x1da4('0x10')];var _0x3b41c7=![];var _0x3ba717=null;if(_0x5d0988[_0x1da4('0x19')]!==null){logger[_0x1da4('0xd')](_0x1da4('0x1a'),_0x5d0988[_0x1da4('0x19')]);_0x5d0988[_0x1da4('0x1b')]=_0x5d0988['agentEmail'];for(_0x3ba717=0x0;_0x3ba717<_0x1ce612['length'];_0x3ba717++){if(_0x1ce612[_0x3ba717]['email']===_0x5d0988[_0x1da4('0x19')]){_0x3b41c7=!![];_0x5d0988[_0x1da4('0x1c')]=_0x1ce612[_0x3ba717]['id'];logger[_0x1da4('0xd')]('User\x20found:',_0x5d0988[_0x1da4('0x1c')]);}}}if(!_0x3b41c7){logger['info'](_0x1da4('0x1d'));_0x5d0988['userEmail']=_0x5d0988[_0x1da4('0x1e')];_0x5d0988[_0x1da4('0x1c')]=_0x5d0988[_0x1da4('0x13')];_0x3b41c7=!![];}if(_0x3b41c7){_0x13e0a9(_0x5d0988);}else{_0x24238e({'statusCode':0x194,'message':_0x1da4('0x15')});}}else{_0x24238e({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x54f480){logger[_0x1da4('0x16')]('['+[_0xdbc70d[_0x1da4('0x1f')]()]+']',_0x54f480[_0x1da4('0x20')]);_0x24238e(_0x54f480);});});};}function searchContact(_0x55a38d,_0x4706a1,_0xf3f9c,_0x12f218){return new Promise(function(_0x10fc64,_0x4cb211){var _0x4b040b={'method':_0x1da4('0x17'),'headers':_0x4706a1,'uri':_0x55a38d+_0x1da4('0x21')+_0x12f218+_0x1da4('0x22')+_0xf3f9c+'&entities=contact','json':!![]};rp(_0x4b040b)['then'](function(_0x28cba2){var _0x30d0e2=_[_0x1da4('0x23')](_0x28cba2[_0x1da4('0x24')][_0x1da4('0x24')],[_0xf3f9c,_0x12f218]);_0x10fc64(_0x30d0e2);})['catch'](function(_0x3cd086){_0x4cb211(_0x3cd086);});});}function getEndUser(_0x101098,_0x4b5b24,_0xb196a0){return function(_0x5acb42){return new Promise(function(_0x1d6bee,_0x1cfe39){logger['info'](util[_0x1da4('0x25')](_0x1da4('0x26'),_0x5acb42['contactNumber']));searchContact(_0xb196a0,_0x4b5b24,_0x1da4('0x27'),_0x5acb42[_0x1da4('0x28')])[_0x1da4('0xf')](function(_0x4e1675){if(_0x4e1675){_0x5acb42['endUserId']=_0x4e1675['id'];logger[_0x1da4('0xd')]('Contact\x20found\x20mobile_number:',_0x5acb42[_0x1da4('0x29')]);return _0x1d6bee(_0x5acb42);}searchContact(_0xb196a0,_0x4b5b24,'work_number',_0x5acb42[_0x1da4('0x28')])['then'](function(_0x5ed92f){if(_0x5ed92f){_0x5acb42['endUserId']=_0x5ed92f['id'];logger[_0x1da4('0xd')](_0x1da4('0x2a'),_0x5acb42[_0x1da4('0x29')]);return _0x1d6bee(_0x5acb42);}createEndUser(_0x5acb42,_0x101098,_0x4b5b24,_0xb196a0)[_0x1da4('0xf')](function(_0x146f34){logger[_0x1da4('0xd')](_0x1da4('0x2b'),_0x146f34[_0x1da4('0x29')]);return _0x1d6bee(_0x146f34);});});})['catch'](function(_0x210dc9){_0x1cfe39(_0x210dc9);});});};}function createEndUser(_0xc16abb,_0x1d44e9,_0x1d41d0,_0xb7172b){return new Promise(function(_0x49d880,_0x5e98fe){var _0x2967d9=moment();var _0x2998e9={'method':_0x1da4('0x2c'),'uri':_0xb7172b+_0x1da4('0x2d'),'body':{'contact':{'last_name':_0xc16abb[_0x1da4('0x28')],'work_number':_0xc16abb[_0x1da4('0x28')],'mobile_number':_0xc16abb[_0x1da4('0x28')],'owner_id':_0xc16abb[_0x1da4('0x1c')],'created_at':_0x2967d9[_0x1da4('0x25')](_0x1da4('0x2e'))}},'json':!![]};_0x2998e9[_0x1da4('0xc')]=_0x1d41d0;logger['info'](_0x1da4('0x2f'));return rp(_0x2998e9)[_0x1da4('0xf')](function(_0xc502f3){_0xc16abb[_0x1da4('0x29')]=_0xc502f3[_0x1da4('0x30')]['id'];_0x49d880(_0xc16abb);})[_0x1da4('0x31')](function(_0x222a61){logger[_0x1da4('0x16')]('['+[_0x1d44e9[_0x1da4('0x1f')]()]+']',_0x222a61[_0x1da4('0x20')]);_0x5e98fe(_0x222a61[_0x1da4('0x20')]);});});}function getTicket(_0x46322b,_0x27f286,_0x29cabb,_0x5a240b,_0x3e13fd){return function(_0x5d4a09){logger['info'](_0x1da4('0x32'));return new Promise(function(_0x534908,_0x13c00d){var _0x3d5af5=moment();var _0x48213a={'method':_0x1da4('0x2c'),'uri':_0x29cabb+_0x1da4('0x33'),'body':{'title':intUtil['getString'](_0x5a240b['Subjects'],_0x3e13fd,'\x20'),'description':intUtil['getString'](_0x5a240b[_0x1da4('0x34')],_0x3e13fd,'\x0a'),'owner_id':_0x5d4a09[_0x1da4('0x1c')],'creater_id':_0x5d4a09['adminId'],'targetable_id':_0x5d4a09[_0x1da4('0x29')],'targetable_type':_0x1da4('0x35'),'created_at':_0x3d5af5['format']('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x3d5af5[_0x1da4('0x36')](0x1e,'m')['format'](_0x1da4('0x2e'))},'json':!![]};_0x48213a[_0x1da4('0xc')]=_0x27f286;return rp(_0x48213a)[_0x1da4('0xf')](function(_0x58020d){_0x5d4a09[_0x1da4('0x37')]=_0x58020d['task']['id'];logger[_0x1da4('0xd')]('Task\x20created:',_0x5d4a09['ticketId']);_0x534908(_0x5d4a09);})[_0x1da4('0x31')](function(_0xaccd8c){logger[_0x1da4('0x16')]('['+[_0x46322b[_0x1da4('0x1f')]()]+']',_0xaccd8c[_0x1da4('0x20')]);_0x13c00d(_0xaccd8c[_0x1da4('0x20')]);});});};}function emit(_0x178a42,_0x2e60f7,_0x3854f4){var _0x30b9f8={'uri':_0x178a42+_0x1da4('0x38')+_0x3854f4};io['to'](util['format']('user:%s',_0x2e60f7))[_0x1da4('0x39')](_0x1da4('0x3a'),_0x30b9f8);}exports['cs']=function(_0x28d353,_0x31ae68,_0x216a9c,_0x55274d,_0x57fed5,_0x37f4f9,_0x2f2a85,_0x4b1e59){var _0x36bf60={};var _0x26fc6d={'Authorization':_0x1da4('0x3b')+_0x37f4f9[_0x1da4('0x3c')]};_0x37f4f9[_0x1da4('0x3d')]=intUtil[_0x1da4('0x3e')](_0x37f4f9[_0x1da4('0x3d')]);_0x37f4f9[_0x1da4('0x3f')]=intUtil[_0x1da4('0x3e')](_0x37f4f9[_0x1da4('0x3f')]);var _0x2ab783=_0x37f4f9['remoteUri'];_0x36bf60[_0x1da4('0x1e')]=_0x37f4f9['username'];_0x36bf60['contactNumber']=_0x4b1e59[_0x1da4('0x40')]()===_0x1da4('0x41')?_0x31ae68[_0x1da4('0x42')]:_0x31ae68[_0x1da4('0x43')];_0x36bf60[_0x1da4('0x44')]=_0x4b1e59===_0x1da4('0x45')||_0x4b1e59===_0x1da4('0x46')?_0x1da4('0x45'):'outbound';if(_0x55274d){_0x36bf60[_0x1da4('0x19')]=_0x55274d[_0x1da4('0x12')];}var _0x505486=util[_0x1da4('0x25')](_0x1da4('0x47'),_0x37f4f9[_0x1da4('0x3f')],_0x31ae68['uniqueid'],md5(_0x31ae68['uniqueid']));if(_0x57fed5&&_0x57fed5['monitor_format']){logger['info'](_0x1da4('0x48'),'Recording\x20is\x20enabled!');_0x31ae68[_0x1da4('0x49')]=_0x505486;}else if(_0x2f2a85&&_0x2f2a85['recordingFormat']&&_0x2f2a85[_0x1da4('0x4a')]!==_0x1da4('0x4b')){logger[_0x1da4('0xd')](_0x1da4('0x4c'),_0x1da4('0x4d'));_0x31ae68[_0x1da4('0x49')]=_0x505486;}else{_0x31ae68[_0x1da4('0x49')]='';}return getAdminId(_0x36bf60,_0x4b1e59,_0x26fc6d,_0x2ab783)[_0x1da4('0xf')](getUser(_0x4b1e59,_0x26fc6d,_0x2ab783))[_0x1da4('0xf')](getEndUser(_0x4b1e59,_0x26fc6d,_0x2ab783))[_0x1da4('0xf')](getTicket(_0x4b1e59,_0x26fc6d,_0x2ab783,_0x216a9c,_0x31ae68))[_0x1da4('0xf')](function(_0x1dd746){logger[_0x1da4('0xd')](util[_0x1da4('0x25')](_0x1da4('0x4e'),_0x1dd746['ticketId']));if(_0x4b1e59!=='unmanaged'){logger[_0x1da4('0xd')]('['+[_0x4b1e59[_0x1da4('0x1f')]()]+']',_0x1da4('0x4f'));emit(_0x2ab783,_0x55274d[_0x1da4('0x50')],_0x1dd746['endUserId']);}})[_0x1da4('0x31')](function(_0x219f18){logger[_0x1da4('0x16')]('['+[_0x4b1e59['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util[_0x1da4('0x51')](_0x219f18,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index e438ecd..66960e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a3b=['zoho','desk','vtiger','dynamics365','freshsales','exec','toLowerCase','data1','data2','find','Configurations','data3','queue','log','EVENT\x20UNKNOWN','unmanaged','sugarcrm','freshdesk','servicenow','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./dynamics365','salesforce'];(function(_0x34da89,_0x4a2ae4){var _0x2adeb9=function(_0x99df7d){while(--_0x99df7d){_0x34da89['push'](_0x34da89['shift']());}};_0x2adeb9(++_0x4a2ae4);}(_0x9a3b,0x14b));var _0xb9a3=function(_0x3ed6f1,_0x264b14){_0x3ed6f1=_0x3ed6f1-0x0;var _0x14fc1b=_0x9a3b[_0x3ed6f1];return _0x14fc1b;};'use strict';var _=require(_0xb9a3('0x0'));var util=require(_0xb9a3('0x1'));var zendesk=require(_0xb9a3('0x2'));var salesforce=require(_0xb9a3('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xb9a3('0x4'));var zoho=require(_0xb9a3('0x5'));var desk=require(_0xb9a3('0x6'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0xb9a3('0x7'));var freshsales=require('./freshsales');var integrations=['zendesk',_0xb9a3('0x8'),'sugarcrm','freshdesk',_0xb9a3('0x9'),_0xb9a3('0xa'),_0xb9a3('0xb'),_0xb9a3('0xc'),_0xb9a3('0xd'),'servicenow'];exports[_0xb9a3('0xe')]=function(_0x360789,_0x122c79,_0x4d644c,_0x37d6a4,_0x719b67,_0x266815){if(_0x4d644c){if(_['includes'](integrations,_0x360789['data1'][_0xb9a3('0xf')]())){try{var _0x5701f2=null;var _0x48bc2f='';var _0x20fa57=_0x4d644c[_0x360789[_0xb9a3('0x10')][_0xb9a3('0xf')]()];if(_0x20fa57){var _0x22fc62=_0x20fa57[_0x360789[_0xb9a3('0x11')]];if(_0x22fc62){var _0x19ce4e=_[_0xb9a3('0x12')](_0x22fc62[_0xb9a3('0x13')],{'id':parseInt(_0x360789[_0xb9a3('0x14')],0xa)});if(_0x19ce4e){if(_0x37d6a4){if(_0x719b67&&_0x122c79[_0xb9a3('0x15')]){_0x48bc2f=_0xb9a3('0x15');}else if(_0x122c79['routeId']){_0x48bc2f='outbound';}else{console[_0xb9a3('0x16')](_0xb9a3('0x17'),_0x122c79);}}else{_0x48bc2f=_0xb9a3('0x18');}switch(_0x360789[_0xb9a3('0x10')][_0xb9a3('0xf')]()){case'zendesk':zendesk[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case _0xb9a3('0x8'):salesforce[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case _0xb9a3('0x19'):sugarcrm[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case _0xb9a3('0x1a'):freshdesk[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case'zoho':zoho[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case _0xb9a3('0xa'):desk[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case _0xb9a3('0xb'):vtiger[_0x48bc2f](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815);break;case _0xb9a3('0xd'):freshsales['cs'](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815,_0x48bc2f);break;case _0xb9a3('0x1b'):servicenow['cs'](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815,_0x48bc2f);break;case'dynamics365':dynamics365['cs'](_0x360789,_0x122c79,_0x19ce4e,_0x37d6a4,_0x719b67,_0x22fc62,_0x266815,_0x48bc2f);break;default:console[_0xb9a3('0x16')](_0xb9a3('0x1c'));}}else{_0x5701f2=require('../../../../config/logger')(_0x360789[_0xb9a3('0x10')][_0xb9a3('0xf')]());_0x5701f2[_0xb9a3('0x1d')](_0xb9a3('0x1e'),util[_0xb9a3('0x1f')](_0xb9a3('0x20'),_0x360789[_0xb9a3('0x10')][_0xb9a3('0xf')](),_0x360789[_0xb9a3('0x14')]));}}else{_0x5701f2=require('../../../../config/logger')(_0x360789['data1'][_0xb9a3('0xf')]());_0x5701f2[_0xb9a3('0x1d')]('[EXEC]',util['format'](_0xb9a3('0x21'),_0x360789[_0xb9a3('0x10')]['toLowerCase'](),_0x360789['data2']));}}else{}}catch(_0x5f2021){console[_0xb9a3('0x1d')](_0x5f2021);}}}};
\ No newline at end of file
+var _0xdad6=['queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','salesforce','sugarcrm','dynamics365','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','zendesk','freshdesk','zoho','desk','vtiger','includes','data1','toLowerCase','data2','find','Configurations','data3'];(function(_0x10c16d,_0x2b3e14){var _0x5896f4=function(_0x4306b9){while(--_0x4306b9){_0x10c16d['push'](_0x10c16d['shift']());}};_0x5896f4(++_0x2b3e14);}(_0xdad6,0x16e));var _0x6dad=function(_0x4ad6ef,_0x412680){_0x4ad6ef=_0x4ad6ef-0x0;var _0x33a539=_0xdad6[_0x4ad6ef];return _0x33a539;};'use strict';var _=require(_0x6dad('0x0'));var util=require(_0x6dad('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0x6dad('0x2'));var sugarcrm=require(_0x6dad('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x6dad('0x4'));var desk=require(_0x6dad('0x5'));var vtiger=require(_0x6dad('0x6'));var servicenow=require('./servicenow');var dynamics365=require('./dynamics365');var freshsales=require('./freshsales');var integrations=[_0x6dad('0x7'),'salesforce','sugarcrm',_0x6dad('0x8'),_0x6dad('0x9'),_0x6dad('0xa'),_0x6dad('0xb'),'dynamics365','freshsales','servicenow'];exports['exec']=function(_0x170180,_0x59ff7f,_0x5d2ae6,_0x37af1a,_0x227e91,_0x3891cd){if(_0x5d2ae6){if(_[_0x6dad('0xc')](integrations,_0x170180[_0x6dad('0xd')]['toLowerCase']())){try{var _0x4f716b=null;var _0x1a26dd='';var _0x7e2e0c=_0x5d2ae6[_0x170180[_0x6dad('0xd')][_0x6dad('0xe')]()];if(_0x7e2e0c){var _0x45c48d=_0x7e2e0c[_0x170180[_0x6dad('0xf')]];if(_0x45c48d){var _0x4a8016=_[_0x6dad('0x10')](_0x45c48d[_0x6dad('0x11')],{'id':parseInt(_0x170180[_0x6dad('0x12')],0xa)});if(_0x4a8016){if(_0x37af1a){if(_0x227e91&&_0x59ff7f[_0x6dad('0x13')]){_0x1a26dd='queue';}else if(_0x59ff7f[_0x6dad('0x14')]){_0x1a26dd=_0x6dad('0x15');}else{console[_0x6dad('0x16')](_0x6dad('0x17'),_0x59ff7f);}}else{_0x1a26dd=_0x6dad('0x18');}switch(_0x170180[_0x6dad('0xd')]['toLowerCase']()){case'zendesk':zendesk[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case _0x6dad('0x19'):salesforce[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case _0x6dad('0x1a'):sugarcrm[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case _0x6dad('0x8'):freshdesk[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case _0x6dad('0x9'):zoho[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case _0x6dad('0xa'):desk[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case _0x6dad('0xb'):vtiger[_0x1a26dd](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd);break;case'freshsales':freshsales['cs'](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd,_0x1a26dd);break;case'servicenow':servicenow['cs'](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd,_0x1a26dd);break;case _0x6dad('0x1b'):dynamics365['cs'](_0x170180,_0x59ff7f,_0x4a8016,_0x37af1a,_0x227e91,_0x45c48d,_0x3891cd,_0x1a26dd);break;default:console['log'](_0x6dad('0x1c'));}}else{_0x4f716b=require('../../../../config/logger')(_0x170180[_0x6dad('0xd')][_0x6dad('0xe')]());_0x4f716b[_0x6dad('0x1d')](_0x6dad('0x1e'),util[_0x6dad('0x1f')](_0x6dad('0x20'),_0x170180['data1']['toLowerCase'](),_0x170180['data3']));}}else{_0x4f716b=require(_0x6dad('0x21'))(_0x170180['data1'][_0x6dad('0xe')]());_0x4f716b[_0x6dad('0x1d')](_0x6dad('0x1e'),util[_0x6dad('0x1f')](_0x6dad('0x22'),_0x170180[_0x6dad('0xd')][_0x6dad('0xe')](),_0x170180[_0x6dad('0xf')]));}}else{}}catch(_0x48ca99){console[_0x6dad('0x1d')](_0x48ca99);}}}};
\ No newline at end of file
index 5f90480..7c56465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73c8=['$or','execute','additionalSearchLead','account_contact_lead','additionalSearchAccount','additionalSearchContact','Contact','Lead','Account','first','attributes','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','LastName','<unknown>','format','Caller\x20-\x20%s','upperFirst','includes','idField','variable','variableName','customVariable','Variable','name','toLowerCase','toString','password','concat','Connection','https://login.salesforce.com','clientSecret','login','username','Connection\x20established.','queue','serverUrl','remoteUri','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','[QUEUE]','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','newTab','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.','request-promise','moment','bluebird','util','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','emit','assign','getString','Subjects','ticketType','Task','utc','IsReminderSet','IsRecurrence','endUserType','contact','account','WhatId','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','then','length','find','Agent\x20%s\x20found.','resolve','Name','identity','user_id','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','moduleSearch','contact_lead','cloneDeep','merge'];(function(_0x4d5a00,_0x4bdc5f){var _0x527b89=function(_0x367811){while(--_0x367811){_0x4d5a00['push'](_0x4d5a00['shift']());}};_0x527b89(++_0x4bdc5f);}(_0x73c8,0xbd));var _0x873c=function(_0x36c063,_0x233be3){_0x36c063=_0x36c063-0x0;var _0x1b6102=_0x73c8[_0x36c063];return _0x1b6102;};'use strict';var _=require('lodash');var rp=require(_0x873c('0x0'));var moment=require(_0x873c('0x1'));var BPromise=require(_0x873c('0x2'));var md5=require('md5');var jsforce=require('jsforce');var util=require(_0x873c('0x3'));var Redis=require(_0x873c('0x4'));var intUtil=require(_0x873c('0x5'));var config=require(_0x873c('0x6'));var logger=require('../../../../config/logger')(_0x873c('0x7'));config[_0x873c('0x8')]=_[_0x873c('0x9')](config['redis'],{'host':_0x873c('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x873c('0x8')]));function emit(_0xe334af,_0x437404,_0x133bcb){io['to'](_0xe334af)[_0x873c('0xb')](_0x437404,_0x133bcb);}function getTicket(_0x1b735c,_0x35f4bd,_0x4198f0,_0x549478,_0x4da50f,_0x2bde65,_0x3187d4,_0x11cdfc){var _0x4f12f7=Object[_0x873c('0xc')]({},{'OwnerId':_0x35f4bd['id'],'Subject':intUtil[_0x873c('0xd')](_0x549478[_0x873c('0xe')],_0x4da50f,'\x20'),'Description':intUtil[_0x873c('0xd')](_0x549478['Descriptions'],_0x4da50f,'\x0a')},getCustomFields(_0x2bde65,_0x4da50f));if(_0x4198f0){if(_0x549478[_0x873c('0xf')]===_0x873c('0x10')){_0x4f12f7['ActivityDate']=moment[_0x873c('0x11')]();_0x4f12f7[_0x873c('0x12')]=![];_0x4f12f7[_0x873c('0x13')]=![];if(_0x4198f0[_0x873c('0x14')]===_0x873c('0x15')||_0x4198f0[_0x873c('0x14')]==='lead'){_0x4f12f7['WhoId']=_0x4198f0['id'];}else if(_0x4198f0[_0x873c('0x14')]===_0x873c('0x16')){_0x4f12f7[_0x873c('0x17')]=_0x4198f0['id'];}}else if(_0x549478['ticketType']==='Case'){if(_0x4198f0['endUserType']==='contact'){_0x4f12f7[_0x873c('0x18')]=_0x4198f0['id'];}else if(_0x4198f0[_0x873c('0x14')]===_0x873c('0x16')){_0x4f12f7[_0x873c('0x19')]=_0x4198f0['id'];}else if(_0x4198f0[_0x873c('0x14')]===_0x873c('0x1a')&&_0x549478[_0x873c('0x1b')]){_0x4f12f7[_0x549478[_0x873c('0x1b')]]=_0x4198f0['id'];}else{logger[_0x873c('0x1c')](_0x873c('0x1d'));}}}return _0x3187d4[_0x873c('0x1e')](_0x549478[_0x873c('0xf')])[_0x873c('0x1f')](_0x4f12f7);}function getUser(_0x444c6e,_0x1e2c9e,_0x420ba1){if(!_[_0x873c('0x20')](_0x1e2c9e)&&intUtil[_0x873c('0x21')](_0x1e2c9e)){var _0x3aaf1f={'Email':_0x1e2c9e};var _0x2a09c6={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x420ba1[_0x873c('0x1e')](_0x873c('0x22'))['find'](_0x3aaf1f,_0x2a09c6)['execute']()[_0x873c('0x23')](function(_0x2cb3e2){if(_0x2cb3e2[_0x873c('0x24')]){var _0x3db3f7=_[_0x873c('0x25')](_0x2cb3e2,function(_0x2cae5e){return _0x2cae5e['Email']===_0x1e2c9e;});if(_0x3db3f7){logger['info'](_0x873c('0x26'),_0x1e2c9e);return BPromise[_0x873c('0x27')]({'id':_0x3db3f7['Id'],'name':_0x3db3f7[_0x873c('0x28')]});}}else{logger[_0x873c('0x1c')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x1e2c9e);return _0x420ba1[_0x873c('0x29')]()[_0x873c('0x23')](function(_0xcc9067){return BPromise[_0x873c('0x27')]({'id':_0xcc9067[_0x873c('0x2a')],'name':_0xcc9067[_0x873c('0x2b')]});});}});}else{logger['info'](_0x873c('0x2c'),_0x1e2c9e);return _0x420ba1['identity']()[_0x873c('0x23')](function(_0x2019ff){return BPromise[_0x873c('0x27')]({'id':_0x2019ff[_0x873c('0x2a')],'name':_0x2019ff[_0x873c('0x2b')]});});}}function getEndUser(_0xb0e6e7,_0x335323,_0x3d8e62,_0x30a07d,_0x2b5b30){var _0x239c25={'$or':{'Phone':_0x30a07d}};var _0x434325={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x873c('0x27')]()[_0x873c('0x23')](function(){logger[_0x873c('0x1c')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x30a07d,_0x335323[_0x873c('0x2d')]);switch(_0x335323['moduleSearch']){case _0x873c('0x2e'):var _0x284042=_[_0x873c('0x2f')](_0x239c25);if(_0x335323['additionalSearchContact']){var _0x52c000={};_0x52c000[_0x335323['additionalSearchContact']]=_0x30a07d;_[_0x873c('0x30')](_0x284042[_0x873c('0x31')],_0x52c000);}return _0x2b5b30[_0x873c('0x1e')]('Contact')[_0x873c('0x25')](_0x284042,_0x434325)[_0x873c('0x32')]()['then'](function(_0x3123ea){if(_0x3123ea&&_0x3123ea[_0x873c('0x24')]){return _0x3123ea;}else{var _0xe96756=_[_0x873c('0x2f')](_0x239c25);if(_0x335323[_0x873c('0x33')]){var _0x533c3f={};_0x533c3f[_0x335323[_0x873c('0x33')]]=_0x30a07d;_[_0x873c('0x30')](_0xe96756[_0x873c('0x31')],_0x533c3f);}return _0x2b5b30[_0x873c('0x1e')]('Lead')[_0x873c('0x25')](_0xe96756,_0x434325);}});case _0x873c('0x34'):var _0x3e5cf1=_[_0x873c('0x2f')](_0x239c25);if(_0x335323[_0x873c('0x35')]){var _0x52c000={};_0x52c000[_0x335323['additionalSearchAccount']]=_0x30a07d;_[_0x873c('0x30')](_0x3e5cf1[_0x873c('0x31')],_0x52c000);}return _0x2b5b30[_0x873c('0x1e')]('Account')[_0x873c('0x25')](_0x3e5cf1,_0x434325)[_0x873c('0x32')]()[_0x873c('0x23')](function(_0x6a009b){if(_0x6a009b&&_0x6a009b[_0x873c('0x24')]){return _0x6a009b;}else{var _0xf6f0dd=_['cloneDeep'](_0x239c25);if(_0x335323['additionalSearchContact']){var _0x4fd36f={};_0x4fd36f[_0x335323[_0x873c('0x36')]]=_0x30a07d;_['merge'](_0xf6f0dd[_0x873c('0x31')],_0x4fd36f);}return _0x2b5b30[_0x873c('0x1e')](_0x873c('0x37'))[_0x873c('0x25')](_0xf6f0dd,_0x434325)[_0x873c('0x23')](function(_0xcd1c61){if(_0xcd1c61&&_0xcd1c61[_0x873c('0x24')]){return _0xcd1c61;}else{var _0x2f56e7=_[_0x873c('0x2f')](_0x239c25);if(_0x335323[_0x873c('0x33')]){var _0x1fd36f={};_0x1fd36f[_0x335323[_0x873c('0x33')]]=_0x30a07d;_['merge'](_0x2f56e7['$or'],_0x1fd36f);}return _0x2b5b30[_0x873c('0x1e')](_0x873c('0x38'))[_0x873c('0x25')](_0x2f56e7,_0x434325);}});}});case _0x873c('0x15'):var _0x284042=_['cloneDeep'](_0x239c25);if(_0x335323['additionalSearchContact']){var _0x52c000={};_0x52c000[_0x335323[_0x873c('0x36')]]=_0x30a07d;_['merge'](_0x284042['$or'],_0x52c000);}return _0x2b5b30[_0x873c('0x1e')](_0x873c('0x37'))[_0x873c('0x25')](_0x284042,_0x434325)['execute']();case'lead':var _0x1f0240=_[_0x873c('0x2f')](_0x239c25);if(_0x335323['additionalSearchLead']){var _0x52c000={};_0x52c000[_0x335323[_0x873c('0x33')]]=_0x30a07d;_[_0x873c('0x30')](_0x1f0240[_0x873c('0x31')],_0x52c000);}return _0x2b5b30[_0x873c('0x1e')]('Lead')[_0x873c('0x25')](_0x1f0240,_0x434325);case _0x873c('0x16'):var _0x3e5cf1=_['cloneDeep'](_0x239c25);if(_0x335323[_0x873c('0x35')]){var _0x52c000={};_0x52c000[_0x335323[_0x873c('0x35')]]=_0x30a07d;_[_0x873c('0x30')](_0x3e5cf1[_0x873c('0x31')],_0x52c000);}return _0x2b5b30[_0x873c('0x1e')](_0x873c('0x39'))[_0x873c('0x25')](_0x3e5cf1,_0x434325);default:return null;}})[_0x873c('0x23')](function(_0x2f585b){if(_0x2f585b&&_0x2f585b[_0x873c('0x24')]){var _0x53adae=_[_0x873c('0x3a')](_0x2f585b);if(_0x53adae){return BPromise[_0x873c('0x27')]({'id':_0x53adae['Id'],'name':_0x53adae[_0x873c('0x28')],'phone':_0x53adae['Phone'],'endUserType':_0x53adae[_0x873c('0x3b')][_0x873c('0x3c')]['toLowerCase']()});}}})[_0x873c('0x23')](function(_0x43319f){if(_0x43319f){logger[_0x873c('0x1c')](_0x873c('0x3d'),_0x43319f[_0x873c('0x14')],_0x30a07d);return BPromise[_0x873c('0x27')](_0x43319f);}else{logger[_0x873c('0x1c')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x30a07d);var _0x439a6d={'Phone':_0x30a07d};if(_0x335323['moduleCreate']){if(_0x335323[_0x873c('0x3e')]==='contact'){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x30a07d,_0x335323['moduleCreate']);_0x439a6d[_0x873c('0x3f')]=_0x3d8e62!==_0x873c('0x40')?_0x3d8e62:util[_0x873c('0x41')](_0x873c('0x42'),_0x30a07d);}else if(_0x335323['moduleCreate']==='lead'){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x30a07d,_0x335323[_0x873c('0x3e')]);_0x439a6d['LastName']=_0x3d8e62!==_0x873c('0x40')?_0x3d8e62:util['format'](_0x873c('0x42'),_0x30a07d);_0x439a6d['Company']='No\x20Company';}else if(_0x335323[_0x873c('0x3e')]===_0x873c('0x16')){logger[_0x873c('0x1c')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x30a07d,_0x335323['moduleCreate']);_0x439a6d[_0x873c('0x28')]=_0x3d8e62!=='<unknown>'?_0x3d8e62:util[_0x873c('0x41')]('Caller\x20-\x20%s',_0x30a07d);}else{return null;}}return _0x2b5b30[_0x873c('0x1e')](_[_0x873c('0x43')](_0x335323['moduleCreate']))['create'](_0x439a6d)[_0x873c('0x23')](function(_0x4488d9){return BPromise[_0x873c('0x27')]({'id':_0x4488d9['id'],'endUserType':_0x335323['moduleCreate']});});}});}function getCustomFields(_0x4fef9a,_0x46dedf){var _0x38e2c9={};if(_0x4fef9a[_0x873c('0x24')]>0x0){_['forEach'](_0x4fef9a,function(_0x45ef25){if(_[_0x873c('0x44')](['string','picklist'],_0x45ef25['type'])&&_0x45ef25['idField']){_0x38e2c9[_0x45ef25[_0x873c('0x45')]]=_0x45ef25['content']['toString']();}else if(_0x45ef25['type']===_0x873c('0x46')&&_0x45ef25['variableName']&&_0x45ef25['idField']){_0x46dedf[_0x45ef25[_0x873c('0x47')]]&&(_0x38e2c9[_0x45ef25[_0x873c('0x45')]]=_0x46dedf[_0x45ef25[_0x873c('0x47')]]['toString']());}else if(_0x45ef25[_0x873c('0x3c')]===_0x873c('0x48')&&_0x45ef25[_0x873c('0x49')]&&_0x45ef25['Variable']['name']&&_0x45ef25[_0x873c('0x45')]){_0x46dedf[_0x45ef25[_0x873c('0x49')]['name']['toLowerCase']()]&&(_0x38e2c9[_0x45ef25['idField']]=_0x46dedf[_0x45ef25[_0x873c('0x49')][_0x873c('0x4a')][_0x873c('0x4b')]()][_0x873c('0x4c')]());}});}return _0x38e2c9;}function getConnection(_0x1f09fd){var _0x4198a2=_0x1f09fd[_0x873c('0x4d')][_0x873c('0x4e')](_0x1f09fd['securityToken']);var _0x2d982a=new jsforce[(_0x873c('0x4f'))]({'oauth2':{'loginUrl':_0x1f09fd['remoteUri']||_0x873c('0x50'),'clientId':_0x1f09fd['clientId'],'clientSecret':_0x1f09fd[_0x873c('0x51')]}});return _0x2d982a[_0x873c('0x52')](_0x1f09fd[_0x873c('0x53')],_0x4198a2)[_0x873c('0x23')](function(){logger[_0x873c('0x1c')](_0x873c('0x54'));return _0x2d982a;});}exports[_0x873c('0x55')]=function(_0x285674,_0x3e4264,_0x3384b9,_0xdc3321,_0x26c065,_0x535753){var _0x330b60,_0x2e9480,_0x4992c2,_0xa5d403;_0x535753[_0x873c('0x56')]=intUtil['stripTrailingSlash'](_0x535753[_0x873c('0x56')]);_0x535753['remoteUri']=intUtil['stripTrailingSlash'](_0x535753[_0x873c('0x57')]);if(_0x26c065&&_0x26c065['monitor_format']){logger[_0x873c('0x1c')]('[QUEUE]',_0x873c('0x58'));_0x3e4264[_0x873c('0x59')]=util[_0x873c('0x41')](_0x873c('0x5a'),_0x535753['serverUrl'],_0x3e4264[_0x873c('0x5b')],md5(_0x3e4264[_0x873c('0x5b')]));}else{_0x3e4264['recordingURL']='';}return getConnection(_0x535753)[_0x873c('0x23')](function(_0x16b0fe){_0xa5d403=_0x16b0fe;return getUser(_0x535753,_0xdc3321[_0x873c('0x5c')],_0xa5d403);})[_0x873c('0x23')](function(_0x2cde6e){_0x330b60=_0x2cde6e;return getEndUser(_0x535753,_0x3384b9,_0x3e4264[_0x873c('0x5d')],_0x3e4264['calleridnum'],_0xa5d403);})[_0x873c('0x23')](function(_0x3c813a){_0x2e9480=_0x3c813a;return getTicket(_0x535753,_0x330b60,_0x2e9480,_0x3384b9,_0x3e4264,_0x3384b9[_0x873c('0x5e')],_0xa5d403,_0x873c('0x55'));})[_0x873c('0x23')](function(_0x5ec738){_0x4992c2=_0x5ec738;logger[_0x873c('0x1c')](_0x873c('0x5f'),_0x4992c2['id']);logger[_0x873c('0x1c')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x4992c2['id'],_0xdc3321[_0x873c('0x4a')],_0x535753[_0x873c('0x3c')]);switch(_0x535753[_0x873c('0x3c')]){case'integrationTab':emit(util[_0x873c('0x41')](_0x873c('0x60'),_0xdc3321['name']),'trigger:salesforce:display',{'recordId':_0x4992c2['id']});break;case'newTab':emit(util['format']('user:%s',_0xdc3321[_0x873c('0x4a')]),_0x873c('0x61'),{'uri':util[_0x873c('0x41')](_0x873c('0x62'),_0xa5d403[_0x873c('0x63')],_0x4992c2['id'])});break;default:logger['error'](_0x873c('0x64'));}})[_0x873c('0x65')](function(_0x3ac3b5){logger[_0x873c('0x66')](_0x873c('0x67'),_0x3ac3b5);});};exports[_0x873c('0x68')]=function(_0x17be52,_0x140b89,_0xde9de5,_0xf2f8e,_0x5a374d,_0x2e0869,_0x5e37a5){var _0x229338,_0x21845a,_0x2b8bfa,_0x50d701;_0x2e0869[_0x873c('0x56')]=intUtil[_0x873c('0x69')](_0x2e0869['serverUrl']);_0x2e0869[_0x873c('0x57')]=intUtil[_0x873c('0x69')](_0x2e0869['remoteUri']);if(_0x5e37a5&&_0x5e37a5[_0x873c('0x6a')]&&_0x5e37a5[_0x873c('0x6a')]!==_0x873c('0x6b')){logger[_0x873c('0x1c')](_0x873c('0x6c'),_0x873c('0x58'));_0x140b89[_0x873c('0x59')]=util[_0x873c('0x41')](_0x873c('0x5a'),_0x2e0869['serverUrl'],_0x140b89['uniqueid'],md5(_0x140b89[_0x873c('0x5b')]));}return getConnection(_0x2e0869)['then'](function(_0x4e8fb0){_0x50d701=_0x4e8fb0;return getUser(_0x2e0869,_0xf2f8e[_0x873c('0x5c')],_0x50d701);})[_0x873c('0x23')](function(_0x39f8b2){_0x229338=_0x39f8b2;return getEndUser(_0x2e0869,_0xde9de5,_0x140b89[_0x873c('0x6d')],_0x140b89[_0x873c('0x6e')],_0x50d701);})[_0x873c('0x23')](function(_0x450161){_0x21845a=_0x450161;return getTicket(_0x2e0869,_0x229338,_0x21845a,_0xde9de5,_0x140b89,_0xde9de5[_0x873c('0x5e')],_0x50d701,_0x873c('0x68'));})[_0x873c('0x23')](function(_0x9839cb){_0x2b8bfa=_0x9839cb;logger['info'](_0x873c('0x6f'),_0x2b8bfa['id']);logger['info'](_0x873c('0x70'),_0x2b8bfa['id'],_0xf2f8e[_0x873c('0x4a')],_0x2e0869['type']);switch(_0x2e0869[_0x873c('0x3c')]){case _0x873c('0x71'):emit(util[_0x873c('0x41')](_0x873c('0x60'),_0xf2f8e['name']),_0x873c('0x72'),{'recordId':_0x2b8bfa['id']});break;case _0x873c('0x73'):emit(util[_0x873c('0x41')]('user:%s',_0xf2f8e[_0x873c('0x4a')]),_0x873c('0x61'),{'uri':util[_0x873c('0x41')](_0x873c('0x62'),_0x50d701['instanceUrl'],_0x2b8bfa['id'])});break;default:logger[_0x873c('0x66')]('[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized');}})['catch'](function(_0x15a1d0){logger['error'](_0x873c('0x6c'),_0x15a1d0);});};exports['unmanaged']=function(_0x5cbe3d,_0x5cee7c,_0x35e058,_0x1221f7,_0x55cb18,_0x3de4b4){var _0x9d85bc,_0xa4b896,_0x51ae5c,_0x4c17c5;_0x3de4b4[_0x873c('0x56')]=intUtil['stripTrailingSlash'](_0x3de4b4[_0x873c('0x56')]);_0x3de4b4[_0x873c('0x57')]=intUtil['stripTrailingSlash'](_0x3de4b4[_0x873c('0x57')]);if(_0x55cb18&&_0x55cb18['monitor_format']){logger[_0x873c('0x1c')]('['+_0x5cee7c[_0x873c('0x74')][_0x873c('0x75')]()+']','Recording\x20is\x20enabled!');_0x5cee7c[_0x873c('0x59')]=util[_0x873c('0x41')](_0x873c('0x5a'),_0x3de4b4[_0x873c('0x56')],_0x5cee7c[_0x873c('0x5b')],md5(_0x5cee7c[_0x873c('0x5b')]));}else{_0x5cee7c[_0x873c('0x59')]='';}return getConnection(_0x3de4b4)[_0x873c('0x23')](function(_0x3dc9d2){_0x4c17c5=_0x3dc9d2;if(!_[_0x873c('0x20')](_0x1221f7)){return getUser(_0x3de4b4,_0x1221f7['name'],_0x4c17c5);}else{return getUser(_0x3de4b4,null,_0x4c17c5);}})[_0x873c('0x23')](function(_0x1b8b71){_0x9d85bc=_0x1b8b71;return getEndUser(_0x3de4b4,_0x35e058,_0x5cee7c[_0x873c('0x5d')],_0x5cee7c['calleridnum'],_0x4c17c5);})[_0x873c('0x23')](function(_0x511ff4){_0xa4b896=_0x511ff4;return getTicket(_0x3de4b4,_0x9d85bc,_0xa4b896,_0x35e058,_0x5cee7c,_0x35e058[_0x873c('0x5e')],_0x4c17c5);})[_0x873c('0x23')](function(_0x198c38){_0x51ae5c=_0x198c38;logger['info']('['+_0x5cee7c[_0x873c('0x74')][_0x873c('0x75')]()+_0x873c('0x76'),_0x51ae5c['id']);logger[_0x873c('0x1c')]('['+_0x5cee7c[_0x873c('0x74')][_0x873c('0x75')]()+']\x20Integration\x20account\x20type\x20%s.',_0x3de4b4[_0x873c('0x3c')]);})[_0x873c('0x65')](function(_0x2cccb4){logger['error']('['+_0x5cee7c[_0x873c('0x74')][_0x873c('0x75')]()+']',_0x2cccb4);});};
\ No newline at end of file
+var _0x7369=['Company','forEach','string','picklist','idField','content','toString','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','login','username','Connection\x20established.','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','calleridname','calleridnum','Fields','queue','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','trigger:browser:url','instanceUrl','error','catch','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','destcalleridname','destcalleridnum','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','newTab','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','endUserType','contact','lead','WhatId','Case','ContactId','account','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','execute','then','length','find','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','account_contact_lead','additionalSearchAccount','Lead','Account','first','Phone','attributes','type','toLowerCase','info','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0x7369,0xb7));var _0x9736=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x7369[_0x37bd26];return _0xe83dc4;};'use strict';var _=require('lodash');var rp=require(_0x9736('0x0'));var moment=require('moment');var BPromise=require(_0x9736('0x1'));var md5=require(_0x9736('0x2'));var jsforce=require(_0x9736('0x3'));var util=require(_0x9736('0x4'));var Redis=require(_0x9736('0x5'));var intUtil=require(_0x9736('0x6'));var config=require(_0x9736('0x7'));var logger=require('../../../../config/logger')(_0x9736('0x8'));config[_0x9736('0x9')]=_[_0x9736('0xa')](config['redis'],{'host':_0x9736('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x4e2d02,_0x2013c8,_0x2164de){io['to'](_0x4e2d02)[_0x9736('0xc')](_0x2013c8,_0x2164de);}function getTicket(_0xeb545a,_0xef5e8,_0x5c803e,_0x4a3ffd,_0x1c4edb,_0x375957,_0x5c2100,_0x14beee){var _0x5cb50d=Object[_0x9736('0xd')]({},{'OwnerId':_0xef5e8['id'],'Subject':intUtil[_0x9736('0xe')](_0x4a3ffd['Subjects'],_0x1c4edb,'\x20'),'Description':intUtil['getString'](_0x4a3ffd[_0x9736('0xf')],_0x1c4edb,'\x0a')},getCustomFields(_0x375957,_0x1c4edb));if(_0x5c803e){if(_0x4a3ffd[_0x9736('0x10')]===_0x9736('0x11')){_0x5cb50d[_0x9736('0x12')]=moment[_0x9736('0x13')]();_0x5cb50d[_0x9736('0x14')]=![];_0x5cb50d['IsRecurrence']=![];if(_0x5c803e[_0x9736('0x15')]===_0x9736('0x16')||_0x5c803e[_0x9736('0x15')]===_0x9736('0x17')){_0x5cb50d['WhoId']=_0x5c803e['id'];}else if(_0x5c803e[_0x9736('0x15')]==='account'){_0x5cb50d[_0x9736('0x18')]=_0x5c803e['id'];}}else if(_0x4a3ffd[_0x9736('0x10')]===_0x9736('0x19')){if(_0x5c803e['endUserType']===_0x9736('0x16')){_0x5cb50d[_0x9736('0x1a')]=_0x5c803e['id'];}else if(_0x5c803e['endUserType']===_0x9736('0x1b')){_0x5cb50d[_0x9736('0x1c')]=_0x5c803e['id'];}else if(_0x5c803e['endUserType']==='lead'&&_0x4a3ffd['leadId']){_0x5cb50d[_0x4a3ffd[_0x9736('0x1d')]]=_0x5c803e['id'];}else{logger['info'](_0x9736('0x1e'));}}}return _0x5c2100[_0x9736('0x1f')](_0x4a3ffd[_0x9736('0x10')])[_0x9736('0x20')](_0x5cb50d);}function getUser(_0x284b8c,_0x294a43,_0x17f331){if(!_[_0x9736('0x21')](_0x294a43)&&intUtil[_0x9736('0x22')](_0x294a43)){var _0x30aa6d={'Email':_0x294a43};var _0x5b0ab5={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x17f331[_0x9736('0x1f')](_0x9736('0x23'))['find'](_0x30aa6d,_0x5b0ab5)[_0x9736('0x24')]()[_0x9736('0x25')](function(_0x5601e0){if(_0x5601e0[_0x9736('0x26')]){var _0xd7e663=_[_0x9736('0x27')](_0x5601e0,function(_0x25f4e0){return _0x25f4e0[_0x9736('0x28')]===_0x294a43;});if(_0xd7e663){logger['info'](_0x9736('0x29'),_0x294a43);return BPromise[_0x9736('0x2a')]({'id':_0xd7e663['Id'],'name':_0xd7e663[_0x9736('0x2b')]});}}else{logger['info'](_0x9736('0x2c'),_0x294a43);return _0x17f331[_0x9736('0x2d')]()[_0x9736('0x25')](function(_0xde6d60){return BPromise['resolve']({'id':_0xde6d60['user_id'],'name':_0xde6d60[_0x9736('0x2e')]});});}});}else{logger['info'](_0x9736('0x2c'),_0x294a43);return _0x17f331[_0x9736('0x2d')]()[_0x9736('0x25')](function(_0x1e247e){return BPromise[_0x9736('0x2a')]({'id':_0x1e247e['user_id'],'name':_0x1e247e['display_name']});});}}function getEndUser(_0x15be64,_0x5bfc73,_0x222680,_0x697bf8,_0x1a4b5d){var _0x2ac2b7={'$or':{'Phone':_0x697bf8}};var _0x2bc89e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0x9736('0x25')](function(){logger['info'](_0x9736('0x2f'),_0x697bf8,_0x5bfc73[_0x9736('0x30')]);switch(_0x5bfc73[_0x9736('0x30')]){case'contact_lead':var _0x2b1a82=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x32')]){var _0x4bde7e={};_0x4bde7e[_0x5bfc73['additionalSearchContact']]=_0x697bf8;_[_0x9736('0x33')](_0x2b1a82['$or'],_0x4bde7e);}return _0x1a4b5d[_0x9736('0x1f')](_0x9736('0x34'))[_0x9736('0x27')](_0x2b1a82,_0x2bc89e)[_0x9736('0x24')]()[_0x9736('0x25')](function(_0x1d635a){if(_0x1d635a&&_0x1d635a[_0x9736('0x26')]){return _0x1d635a;}else{var _0x5657e6=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x35')]){var _0x31ae9a={};_0x31ae9a[_0x5bfc73[_0x9736('0x35')]]=_0x697bf8;_[_0x9736('0x33')](_0x5657e6[_0x9736('0x36')],_0x31ae9a);}return _0x1a4b5d[_0x9736('0x1f')]('Lead')[_0x9736('0x27')](_0x5657e6,_0x2bc89e);}});case _0x9736('0x37'):var _0x34a9e5=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x38')]){var _0x4bde7e={};_0x4bde7e[_0x5bfc73['additionalSearchAccount']]=_0x697bf8;_[_0x9736('0x33')](_0x34a9e5[_0x9736('0x36')],_0x4bde7e);}return _0x1a4b5d['sobject']('Account')['find'](_0x34a9e5,_0x2bc89e)[_0x9736('0x24')]()[_0x9736('0x25')](function(_0x370313){if(_0x370313&&_0x370313[_0x9736('0x26')]){return _0x370313;}else{var _0x163d51=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x32')]){var _0x54be55={};_0x54be55[_0x5bfc73[_0x9736('0x32')]]=_0x697bf8;_[_0x9736('0x33')](_0x163d51[_0x9736('0x36')],_0x54be55);}return _0x1a4b5d[_0x9736('0x1f')]('Contact')[_0x9736('0x27')](_0x163d51,_0x2bc89e)[_0x9736('0x25')](function(_0x1316c7){if(_0x1316c7&&_0x1316c7[_0x9736('0x26')]){return _0x1316c7;}else{var _0x22e4be=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73['additionalSearchLead']){var _0x1d0150={};_0x1d0150[_0x5bfc73[_0x9736('0x35')]]=_0x697bf8;_[_0x9736('0x33')](_0x22e4be['$or'],_0x1d0150);}return _0x1a4b5d[_0x9736('0x1f')]('Lead')['find'](_0x22e4be,_0x2bc89e);}});}});case _0x9736('0x16'):var _0x2b1a82=_['cloneDeep'](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x32')]){var _0x4bde7e={};_0x4bde7e[_0x5bfc73[_0x9736('0x32')]]=_0x697bf8;_[_0x9736('0x33')](_0x2b1a82[_0x9736('0x36')],_0x4bde7e);}return _0x1a4b5d['sobject'](_0x9736('0x34'))[_0x9736('0x27')](_0x2b1a82,_0x2bc89e)[_0x9736('0x24')]();case _0x9736('0x17'):var _0x554ebe=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x35')]){var _0x4bde7e={};_0x4bde7e[_0x5bfc73['additionalSearchLead']]=_0x697bf8;_[_0x9736('0x33')](_0x554ebe[_0x9736('0x36')],_0x4bde7e);}return _0x1a4b5d[_0x9736('0x1f')](_0x9736('0x39'))[_0x9736('0x27')](_0x554ebe,_0x2bc89e);case _0x9736('0x1b'):var _0x34a9e5=_[_0x9736('0x31')](_0x2ac2b7);if(_0x5bfc73[_0x9736('0x38')]){var _0x4bde7e={};_0x4bde7e[_0x5bfc73[_0x9736('0x38')]]=_0x697bf8;_[_0x9736('0x33')](_0x34a9e5[_0x9736('0x36')],_0x4bde7e);}return _0x1a4b5d[_0x9736('0x1f')](_0x9736('0x3a'))[_0x9736('0x27')](_0x34a9e5,_0x2bc89e);default:return null;}})['then'](function(_0x23138f){if(_0x23138f&&_0x23138f['length']){var _0x12d953=_[_0x9736('0x3b')](_0x23138f);if(_0x12d953){return BPromise[_0x9736('0x2a')]({'id':_0x12d953['Id'],'name':_0x12d953[_0x9736('0x2b')],'phone':_0x12d953[_0x9736('0x3c')],'endUserType':_0x12d953[_0x9736('0x3d')][_0x9736('0x3e')][_0x9736('0x3f')]()});}}})['then'](function(_0x4f5917){if(_0x4f5917){logger[_0x9736('0x40')](_0x9736('0x41'),_0x4f5917[_0x9736('0x15')],_0x697bf8);return BPromise['resolve'](_0x4f5917);}else{logger[_0x9736('0x40')](_0x9736('0x42'),_0x697bf8);var _0x590be5={'Phone':_0x697bf8};if(_0x5bfc73[_0x9736('0x43')]){if(_0x5bfc73[_0x9736('0x43')]===_0x9736('0x16')){logger['info'](_0x9736('0x44'),_0x697bf8,_0x5bfc73['moduleCreate']);_0x590be5[_0x9736('0x45')]=_0x222680!==_0x9736('0x46')?_0x222680:util[_0x9736('0x47')](_0x9736('0x48'),_0x697bf8);}else if(_0x5bfc73[_0x9736('0x43')]===_0x9736('0x17')){logger[_0x9736('0x40')](_0x9736('0x44'),_0x697bf8,_0x5bfc73[_0x9736('0x43')]);_0x590be5[_0x9736('0x45')]=_0x222680!==_0x9736('0x46')?_0x222680:util[_0x9736('0x47')](_0x9736('0x48'),_0x697bf8);_0x590be5[_0x9736('0x49')]='No\x20Company';}else if(_0x5bfc73['moduleCreate']===_0x9736('0x1b')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x697bf8,_0x5bfc73[_0x9736('0x43')]);_0x590be5['Name']=_0x222680!==_0x9736('0x46')?_0x222680:util[_0x9736('0x47')](_0x9736('0x48'),_0x697bf8);}else{return null;}}return _0x1a4b5d[_0x9736('0x1f')](_['upperFirst'](_0x5bfc73[_0x9736('0x43')]))[_0x9736('0x20')](_0x590be5)['then'](function(_0x38a633){return BPromise[_0x9736('0x2a')]({'id':_0x38a633['id'],'endUserType':_0x5bfc73['moduleCreate']});});}});}function getCustomFields(_0x2d0bf3,_0x4dac5a){var _0x1029ec={};if(_0x2d0bf3[_0x9736('0x26')]>0x0){_[_0x9736('0x4a')](_0x2d0bf3,function(_0x5eac3c){if(_['includes']([_0x9736('0x4b'),_0x9736('0x4c')],_0x5eac3c[_0x9736('0x3e')])&&_0x5eac3c[_0x9736('0x4d')]){_0x1029ec[_0x5eac3c[_0x9736('0x4d')]]=_0x5eac3c[_0x9736('0x4e')][_0x9736('0x4f')]();}else if(_0x5eac3c['type']==='variable'&&_0x5eac3c[_0x9736('0x50')]&&_0x5eac3c[_0x9736('0x4d')]){_0x4dac5a[_0x5eac3c[_0x9736('0x50')]]&&(_0x1029ec[_0x5eac3c['idField']]=_0x4dac5a[_0x5eac3c[_0x9736('0x50')]][_0x9736('0x4f')]());}else if(_0x5eac3c[_0x9736('0x3e')]===_0x9736('0x51')&&_0x5eac3c[_0x9736('0x52')]&&_0x5eac3c[_0x9736('0x52')][_0x9736('0x53')]&&_0x5eac3c[_0x9736('0x4d')]){_0x4dac5a[_0x5eac3c[_0x9736('0x52')][_0x9736('0x53')][_0x9736('0x3f')]()]&&(_0x1029ec[_0x5eac3c[_0x9736('0x4d')]]=_0x4dac5a[_0x5eac3c[_0x9736('0x52')][_0x9736('0x53')][_0x9736('0x3f')]()][_0x9736('0x4f')]());}});}return _0x1029ec;}function getConnection(_0x497f1b){var _0x1d698e=_0x497f1b[_0x9736('0x54')][_0x9736('0x55')](_0x497f1b[_0x9736('0x56')]);var _0x52c9c5=new jsforce[(_0x9736('0x57'))]({'oauth2':{'loginUrl':_0x497f1b[_0x9736('0x58')]||_0x9736('0x59'),'clientId':_0x497f1b['clientId'],'clientSecret':_0x497f1b['clientSecret']}});return _0x52c9c5[_0x9736('0x5a')](_0x497f1b[_0x9736('0x5b')],_0x1d698e)[_0x9736('0x25')](function(){logger[_0x9736('0x40')](_0x9736('0x5c'));return _0x52c9c5;});}exports['queue']=function(_0x1fc576,_0x5aee42,_0x490b11,_0x275060,_0x37ad4f,_0x42f15e){var _0x4a7947,_0x3545e9,_0x27e267,_0xf82b0b;_0x42f15e[_0x9736('0x5d')]=intUtil[_0x9736('0x5e')](_0x42f15e[_0x9736('0x5d')]);_0x42f15e[_0x9736('0x58')]=intUtil[_0x9736('0x5e')](_0x42f15e[_0x9736('0x58')]);if(_0x37ad4f&&_0x37ad4f[_0x9736('0x5f')]){logger[_0x9736('0x40')](_0x9736('0x60'),_0x9736('0x61'));_0x5aee42['recordingURL']=util[_0x9736('0x47')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x42f15e[_0x9736('0x5d')],_0x5aee42[_0x9736('0x62')],md5(_0x5aee42['uniqueid']));}else{_0x5aee42['recordingURL']='';}return getConnection(_0x42f15e)[_0x9736('0x25')](function(_0x3e7072){_0xf82b0b=_0x3e7072;return getUser(_0x42f15e,_0x275060['email'],_0xf82b0b);})['then'](function(_0xb3e864){_0x4a7947=_0xb3e864;return getEndUser(_0x42f15e,_0x490b11,_0x5aee42[_0x9736('0x63')],_0x5aee42[_0x9736('0x64')],_0xf82b0b);})[_0x9736('0x25')](function(_0x2716b6){_0x3545e9=_0x2716b6;return getTicket(_0x42f15e,_0x4a7947,_0x3545e9,_0x490b11,_0x5aee42,_0x490b11[_0x9736('0x65')],_0xf82b0b,_0x9736('0x66'));})[_0x9736('0x25')](function(_0x5268e6){_0x27e267=_0x5268e6;logger[_0x9736('0x40')](_0x9736('0x67'),_0x27e267['id']);logger[_0x9736('0x40')](_0x9736('0x68'),_0x27e267['id'],_0x275060['name'],_0x42f15e[_0x9736('0x3e')]);switch(_0x42f15e[_0x9736('0x3e')]){case _0x9736('0x69'):emit(util[_0x9736('0x47')]('user:%s',_0x275060[_0x9736('0x53')]),_0x9736('0x6a'),{'recordId':_0x27e267['id']});break;case'newTab':emit(util['format']('user:%s',_0x275060[_0x9736('0x53')]),_0x9736('0x6b'),{'uri':util['format']('%s/%s/e',_0xf82b0b[_0x9736('0x6c')],_0x27e267['id'])});break;default:logger[_0x9736('0x6d')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x9736('0x6e')](function(_0x2bddea){logger[_0x9736('0x6d')]('[QUEUE]',_0x2bddea);});};exports[_0x9736('0x6f')]=function(_0x581a8e,_0x37a64a,_0x42ad5a,_0x35d139,_0x196bcb,_0x5c1cbe,_0x56f34b){var _0x1d806c,_0x22986d,_0x3cf27e,_0x4df531;_0x5c1cbe[_0x9736('0x5d')]=intUtil[_0x9736('0x5e')](_0x5c1cbe[_0x9736('0x5d')]);_0x5c1cbe['remoteUri']=intUtil[_0x9736('0x5e')](_0x5c1cbe[_0x9736('0x58')]);if(_0x56f34b&&_0x56f34b[_0x9736('0x70')]&&_0x56f34b[_0x9736('0x70')]!==_0x9736('0x71')){logger['info'](_0x9736('0x72'),_0x9736('0x61'));_0x37a64a[_0x9736('0x73')]=util[_0x9736('0x47')](_0x9736('0x74'),_0x5c1cbe[_0x9736('0x5d')],_0x37a64a[_0x9736('0x62')],md5(_0x37a64a[_0x9736('0x62')]));}return getConnection(_0x5c1cbe)['then'](function(_0x444c9d){_0x4df531=_0x444c9d;return getUser(_0x5c1cbe,_0x35d139[_0x9736('0x75')],_0x4df531);})['then'](function(_0x304088){_0x1d806c=_0x304088;return getEndUser(_0x5c1cbe,_0x42ad5a,_0x37a64a[_0x9736('0x76')],_0x37a64a[_0x9736('0x77')],_0x4df531);})[_0x9736('0x25')](function(_0x22ad6e){_0x22986d=_0x22ad6e;return getTicket(_0x5c1cbe,_0x1d806c,_0x22986d,_0x42ad5a,_0x37a64a,_0x42ad5a[_0x9736('0x65')],_0x4df531,_0x9736('0x6f'));})['then'](function(_0x3083cc){_0x3cf27e=_0x3083cc;logger[_0x9736('0x40')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x3cf27e['id']);logger['info'](_0x9736('0x78'),_0x3cf27e['id'],_0x35d139[_0x9736('0x53')],_0x5c1cbe['type']);switch(_0x5c1cbe[_0x9736('0x3e')]){case _0x9736('0x69'):emit(util[_0x9736('0x47')](_0x9736('0x79'),_0x35d139[_0x9736('0x53')]),'trigger:salesforce:display',{'recordId':_0x3cf27e['id']});break;case _0x9736('0x7a'):emit(util[_0x9736('0x47')](_0x9736('0x79'),_0x35d139['name']),_0x9736('0x6b'),{'uri':util[_0x9736('0x47')]('%s/%s/e',_0x4df531[_0x9736('0x6c')],_0x3cf27e['id'])});break;default:logger[_0x9736('0x6d')](_0x9736('0x72'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x9736('0x6e')](function(_0x2e6cc8){logger[_0x9736('0x6d')]('[OUTBOUND]',_0x2e6cc8);});};exports[_0x9736('0x7b')]=function(_0x2d446c,_0x12c70e,_0x5afeb4,_0x4a3efd,_0x3a7441,_0x3223fb){var _0x3efe37,_0x139ff5,_0xb29f87,_0xc84ae2;_0x3223fb['serverUrl']=intUtil[_0x9736('0x5e')](_0x3223fb[_0x9736('0x5d')]);_0x3223fb[_0x9736('0x58')]=intUtil[_0x9736('0x5e')](_0x3223fb[_0x9736('0x58')]);if(_0x3a7441&&_0x3a7441[_0x9736('0x5f')]){logger[_0x9736('0x40')]('['+_0x12c70e[_0x9736('0x7c')][_0x9736('0x7d')]()+']','Recording\x20is\x20enabled!');_0x12c70e[_0x9736('0x73')]=util[_0x9736('0x47')](_0x9736('0x74'),_0x3223fb[_0x9736('0x5d')],_0x12c70e[_0x9736('0x62')],md5(_0x12c70e[_0x9736('0x62')]));}else{_0x12c70e[_0x9736('0x73')]='';}return getConnection(_0x3223fb)['then'](function(_0x136b20){_0xc84ae2=_0x136b20;if(!_['isNil'](_0x4a3efd)){return getUser(_0x3223fb,_0x4a3efd['name'],_0xc84ae2);}else{return getUser(_0x3223fb,null,_0xc84ae2);}})['then'](function(_0x57577c){_0x3efe37=_0x57577c;return getEndUser(_0x3223fb,_0x5afeb4,_0x12c70e[_0x9736('0x63')],_0x12c70e[_0x9736('0x64')],_0xc84ae2);})[_0x9736('0x25')](function(_0x23ab2b){_0x139ff5=_0x23ab2b;return getTicket(_0x3223fb,_0x3efe37,_0x139ff5,_0x5afeb4,_0x12c70e,_0x5afeb4[_0x9736('0x65')],_0xc84ae2);})[_0x9736('0x25')](function(_0x2d7c46){_0xb29f87=_0x2d7c46;logger[_0x9736('0x40')]('['+_0x12c70e[_0x9736('0x7c')]['toUpperCase']()+_0x9736('0x7e'),_0xb29f87['id']);logger[_0x9736('0x40')]('['+_0x12c70e[_0x9736('0x7c')][_0x9736('0x7d')]()+_0x9736('0x7f'),_0x3223fb['type']);})['catch'](function(_0x46aaab){logger[_0x9736('0x6d')]('['+_0x12c70e[_0x9736('0x7c')][_0x9736('0x7d')]()+']',_0x46aaab);});};
\ No newline at end of file
index 7339f40..f231805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd197=['call\x20direction:\x20%s','lodash','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','message','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','error',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','true','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','toLowerCase','content','toString','idField','customField','variable','variableName','Variable','name',']\x20getTicket\x20input\x20crm','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number','label','label_entry','incident','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','user:%s','emit','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','isNil','outbound','destcalleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!','recordingFormat','recordingURL'];(function(_0x4ebd7d,_0x3a2bc6){var _0x34f55d=function(_0x26c681){while(--_0x26c681){_0x4ebd7d['push'](_0x4ebd7d['shift']());}};_0x34f55d(++_0x3a2bc6);}(_0xd197,0xcb));var _0x7d19=function(_0x14524a,_0xfc1477){_0x14524a=_0x14524a-0x0;var _0x375c17=_0xd197[_0x14524a];return _0x375c17;};'use strict';var _=require(_0x7d19('0x0'));var Promise=require(_0x7d19('0x1'));var rp=require('request-promise');var util=require('util');var md5=require(_0x7d19('0x2'));var Redis=require(_0x7d19('0x3'));var intUtil=require(_0x7d19('0x4'));var config=require(_0x7d19('0x5'));var logger=require(_0x7d19('0x6'))(_0x7d19('0x7'));config[_0x7d19('0x8')]=_['defaults'](config['redis'],{'host':_0x7d19('0x9'),'port':0x18eb});var io=require(_0x7d19('0xa'))(new Redis(config[_0x7d19('0x8')]));function getAdminUser(_0x5659e7,_0x43f46a,_0x1e1be7,_0x2edf43,_0x1f923b,_0x43afb4){return new Promise(function(_0x414bf4,_0x12f293){var _0x3c2896={'method':_0x7d19('0xb'),'uri':_0x2edf43+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1f923b+'&'+_0x43afb4,'auth':_0x43f46a,'json':!![]};return rp(_0x3c2896)[_0x7d19('0xc')](function(_0x2a988e){if(_0x2a988e[_0x7d19('0xd')][_0x7d19('0xe')]>0x0){_0x1e1be7[_0x7d19('0xf')]=_0x2a988e[_0x7d19('0xd')][0x0][_0x7d19('0x10')];}logger[_0x7d19('0x11')]('['+[_0x5659e7[_0x7d19('0x12')]()]+_0x7d19('0x13'),_0x1e1be7);_0x414bf4(_0x1e1be7);})[_0x7d19('0x14')](function(_0x57f5a7){logger['error']('['+[_0x5659e7[_0x7d19('0x12')]()]+']',_0x57f5a7[_0x7d19('0x15')]);_0x12f293(_0x57f5a7['message']);});});}function getUser(_0x35c0da,_0x2860c4,_0x3276a6,_0x2e3661,_0x143afb){return function(_0x57aa90){logger[_0x7d19('0x11')]('['+[_0x35c0da[_0x7d19('0x12')]()]+'],\x20getUser\x20input\x20crm',_0x57aa90);return new Promise(function(_0x47ff74,_0x4ff068){if(intUtil['validateEmail'](_0x57aa90[_0x7d19('0x16')])){var _0x386ccf={'method':_0x7d19('0xb'),'uri':_0x3276a6+_0x7d19('0x17')+_0x57aa90[_0x7d19('0x16')]+'&'+_0x2e3661+'&'+_0x143afb,'auth':_0x2860c4,'json':!![]};logger['info']('['+[_0x35c0da[_0x7d19('0x12')]()]+_0x7d19('0x18'),_0x386ccf);return rp(_0x386ccf)[_0x7d19('0xc')](function(_0x215670){logger[_0x7d19('0x11')]('['+[_0x35c0da[_0x7d19('0x12')]()]+_0x7d19('0x19'),_0x215670);if(_0x215670[_0x7d19('0xd')][_0x7d19('0xe')]>0x0&&String(_0x215670[_0x7d19('0xd')][0x0][_0x7d19('0x1a')])==='true'){_0x57aa90['userId']=_0x215670[_0x7d19('0xd')][0x0][_0x7d19('0x10')];}else{_0x57aa90[_0x7d19('0x1b')]=_0x57aa90[_0x7d19('0xf')];_0x57aa90[_0x7d19('0x16')]=_0x57aa90['adminEmail'];}logger[_0x7d19('0x11')]('['+[_0x35c0da[_0x7d19('0x12')]()]+'],\x20getUser\x20crm',_0x57aa90);_0x47ff74(_0x57aa90);})['catch'](function(_0x2e7697){logger[_0x7d19('0x1c')]('['+[_0x35c0da[_0x7d19('0x12')]()]+']',_0x2e7697[_0x7d19('0x15')]);_0x4ff068(_0x2e7697[_0x7d19('0x15')]);});}else{logger[_0x7d19('0x11')]('['+[_0x35c0da['toUpperCase']()]+_0x7d19('0x1d'));_0x57aa90[_0x7d19('0x1b')]=_0x57aa90['adminId'];_0x57aa90[_0x7d19('0x16')]=_0x57aa90[_0x7d19('0x1e')];_0x47ff74(_0x57aa90);}});};}function createEndUser(_0x4a15c6,_0x2b309b,_0x4848a9,_0x130ced,_0x4b0fb7){logger['info']('['+[_0x4a15c6['toUpperCase']()]+_0x7d19('0x1f'),_0x4848a9);return new Promise(function(_0x5a65c8,_0x125282){var _0x43821c={'method':_0x7d19('0x20'),'uri':_0x130ced+_0x7d19('0x21')+_0x4b0fb7,'body':{'user_name':_0x4848a9[_0x7d19('0x22')],'roles':_0x7d19('0x23'),'first_name':_0x4848a9[_0x7d19('0x22')],'active':_0x7d19('0x24'),'date_format':_0x7d19('0x25'),'phone':_0x4848a9[_0x7d19('0x22')]},'auth':_0x2b309b,'json':!![]};return rp(_0x43821c)['then'](function(_0x2b1033){logger[_0x7d19('0x11')]('['+[_0x4a15c6[_0x7d19('0x12')]()]+_0x7d19('0x26'),_0x2b1033['result']);_0x4848a9[_0x7d19('0x27')]=_0x2b1033[_0x7d19('0xd')][_0x7d19('0x10')];_0x5a65c8(_0x4848a9);})[_0x7d19('0x14')](function(_0x38c4b1){logger['error']('['+[_0x4a15c6[_0x7d19('0x12')]()]+']',_0x38c4b1[_0x7d19('0x15')]);_0x125282(_0x38c4b1[_0x7d19('0x15')]);});});}function getEndUser(_0x12839c,_0x45172b,_0x436f4d,_0x4a2ba2,_0xf0c15d){return function(_0x4e353f){logger['info']('['+[_0x12839c[_0x7d19('0x12')]()]+_0x7d19('0x28'),_0x4e353f);return new Promise(function(_0x37ea0b,_0x33914f){var _0x317538={'method':_0x7d19('0xb'),'uri':_0x436f4d+_0x7d19('0x29')+_0x4e353f['endUserNumber']+'&'+_0x4a2ba2+'&'+_0xf0c15d,'auth':_0x45172b,'json':!![]};return rp(_0x317538)[_0x7d19('0xc')](function(_0x1ed718){if(_0x1ed718['result'][_0x7d19('0xe')]>0x0){_0x4e353f[_0x7d19('0x27')]=_0x1ed718[_0x7d19('0xd')][0x0][_0x7d19('0x10')];logger['info']('['+[_0x12839c['toUpperCase']()]+_0x7d19('0x2a'),_0x4e353f);_0x37ea0b(_0x4e353f);}else{return createEndUser(_0x12839c,_0x45172b,_0x4e353f,_0x436f4d,_0x4a2ba2)['then'](function(_0x11aa57){logger['info']('['+[_0x12839c['toUpperCase']()]+_0x7d19('0x2b'),_0x11aa57);_0x37ea0b(_0x11aa57);});}})[_0x7d19('0x14')](function(_0x46f69c){logger[_0x7d19('0x1c')]('['+[_0x12839c[_0x7d19('0x12')]()]+']',_0x46f69c[_0x7d19('0x15')]);_0x33914f(_0x46f69c['message']);});});};}function getCustomFields(_0x3d4406,_0x5c637e){var _0x488e7a={};if(_0x3d4406[_0x7d19('0xe')]>0x0){_[_0x7d19('0x2c')](_0x3d4406,function(_0x55ed52){if(_[_0x7d19('0x2d')]([_0x7d19('0x2e'),_0x7d19('0x2f')],_0x55ed52[_0x7d19('0x30')])&&_0x55ed52[_0x7d19('0x31')]&&!_0x55ed52['customField']){_0x488e7a[_0x55ed52[_0x7d19('0x31')][_0x7d19('0x32')]()]=_0x55ed52[_0x7d19('0x33')][_0x7d19('0x34')]();}else if(_[_0x7d19('0x2d')]([_0x7d19('0x2e'),_0x7d19('0x2f')],_0x55ed52[_0x7d19('0x30')])&&_0x55ed52[_0x7d19('0x35')]&&_0x55ed52[_0x7d19('0x36')]){_0x488e7a[_0x55ed52[_0x7d19('0x35')]['toLowerCase']()]=_0x55ed52[_0x7d19('0x33')][_0x7d19('0x34')]();}else if(_0x55ed52[_0x7d19('0x30')]===_0x7d19('0x37')&&_0x55ed52[_0x7d19('0x38')]&&_0x55ed52[_0x7d19('0x35')]&&_0x55ed52[_0x7d19('0x36')]){_0x488e7a[_0x55ed52[_0x7d19('0x35')][_0x7d19('0x32')]()]=_0x5c637e[_0x55ed52[_0x7d19('0x38')]]['toString']();}else if(_0x55ed52[_0x7d19('0x30')]==='customVariable'&&_0x55ed52['Variable']&&_0x55ed52[_0x7d19('0x39')][_0x7d19('0x3a')]&&_0x55ed52[_0x7d19('0x35')]&&_0x55ed52['customField']){_0x488e7a[_0x55ed52[_0x7d19('0x35')]['toLowerCase']()]=_0x5c637e[_0x55ed52[_0x7d19('0x39')][_0x7d19('0x3a')][_0x7d19('0x32')]()][_0x7d19('0x34')]();}});}return _0x488e7a;}function getTicket(_0x10e0cc,_0x31d3d4,_0x3363fe,_0x4b9037,_0x948800,_0x3604aa){return function(_0x118ed){logger[_0x7d19('0x11')]('['+[_0x10e0cc['toUpperCase']()]+_0x7d19('0x3b'),_0x118ed);return new Promise(function(_0x52db6b,_0x389509){var _0x28a23a=_0x10e0cc['toLowerCase']()==='outbound'?_0x118ed[_0x7d19('0x1b')]:_0x118ed[_0x7d19('0x27')];var _0x6083d1={'method':_0x7d19('0x20'),'uri':_0x3363fe+'incident'+'?'+_0x3604aa,'body':Object[_0x7d19('0x3c')]({},{'active':'true','caller_id':_0x28a23a,'assigned_to':_0x118ed[_0x7d19('0x1b')],'short_description':intUtil[_0x7d19('0x3d')](_0x4b9037[_0x7d19('0x3e')],_0x948800,'\x20'),'description':intUtil[_0x7d19('0x3d')](_0x4b9037['Descriptions'],_0x948800,'\x0a')},getCustomFields(_0x4b9037[_0x7d19('0x3f')],_0x948800)),'auth':_0x31d3d4,'json':!![]};return rp(_0x6083d1)[_0x7d19('0xc')](function(_0x6684e4){logger[_0x7d19('0x11')]('['+[_0x10e0cc['toUpperCase']()]+_0x7d19('0x40'),_0x6684e4[_0x7d19('0xd')]);_0x118ed[_0x7d19('0x41')]=_0x6684e4[_0x7d19('0xd')]['sys_id'];_0x118ed[_0x7d19('0x42')]=_0x6684e4['result'][_0x7d19('0x43')];logger['info']('['+[_0x10e0cc[_0x7d19('0x12')]()]+']\x20getTicket\x20crm',_0x118ed);_0x52db6b(_0x118ed);})[_0x7d19('0x14')](function(_0x5a0980){logger['error']('['+[_0x10e0cc['toUpperCase']()]+']',_0x5a0980['message']);_0x389509(_0x5a0980['message']);});});};}function createRemoteTag(_0x58d36d,_0x10243b,_0x2a724f,_0x4904b0){return new Promise(function(_0x4d10bb,_0x4d326c){var _0x2b6d3a={'method':_0x7d19('0x20'),'uri':_0x2a724f+_0x7d19('0x44')+'?'+_0x4904b0,'body':{'short_description':_0x58d36d,'global':!![],'active':!![],'name':_0x58d36d},'auth':_0x10243b,'json':!![]};return rp(_0x2b6d3a)['then'](function(_0x4b9bf2){var _0x5efd2e=_0x4b9bf2[_0x7d19('0xd')][_0x7d19('0x10')];_0x4d10bb(_0x5efd2e);});});}function getRemoteTag(_0x4bb2c8,_0x13b708,_0x35689f,_0x54f99c,_0x387d8f){return new Promise(function(_0x2471e2,_0x4f3cab){var _0x627d23={'method':_0x7d19('0xb'),'uri':_0x35689f+_0x7d19('0x44')+'?sysparm_query=name%3D'+_0x4bb2c8+'&'+_0x54f99c,'auth':_0x13b708,'json':!![]};return rp(_0x627d23)[_0x7d19('0xc')](function(_0x35fa85){if(_0x35fa85['result']['length']>0x0){var _0x1afea7=_0x35fa85[_0x7d19('0xd')][0x0]['sys_id'];_0x2471e2(_0x1afea7);}else{return createRemoteTag(_0x4bb2c8,_0x13b708,_0x35689f,_0x54f99c)[_0x7d19('0xc')](function(_0xa73d0d){_0x2471e2(_0xa73d0d);});}});});}function assignTagToIncident(_0x5753da,_0x7042b6,_0x36fce7,_0x1c57a9,_0x2c2cbf){return new Promise(function(_0x11aa25,_0x5f2565){var _0x48fc73={'method':_0x7d19('0x20'),'uri':_0x36fce7+_0x7d19('0x45')+'?'+_0x2c2cbf,'body':{'label':_0x5753da,'table':_0x7d19('0x46'),'id_type':_0x7d19('0x47'),'table_key':_0x1c57a9[_0x7d19('0x41')],'title':_0x7d19('0x48')+_0x1c57a9['ticketNumber'],'id_display':_0x1c57a9[_0x7d19('0x42')]},'auth':_0x7042b6,'json':!![]};return rp(_0x48fc73)[_0x7d19('0xc')](function(_0x826544){_0x11aa25();})[_0x7d19('0x14')](function(){_0x11aa25();});});}function manageTags(_0x5db213,_0x50aa6a,_0x36d71e,_0x487a97,_0x319a4a,_0x40aa0a,_0x4e7e54){return new Promise(function(_0x2df01b,_0x31e36a){var _0x424fe2=[];_0x50aa6a[_0x7d19('0x2c')](function(_0x591f66){_0x424fe2[_0x7d19('0x49')](getRemoteTag(_0x591f66,_0x36d71e,_0x487a97,_0x40aa0a,_0x4e7e54));});return Promise[_0x7d19('0x4a')](_0x424fe2)[_0x7d19('0xc')](function(_0x1a6b99){if(_0x1a6b99[_0x7d19('0xe')]){logger[_0x7d19('0x11')]('['+[_0x5db213[_0x7d19('0x12')]()]+_0x7d19('0x4b'),_0x1a6b99);var _0x5ec0e4=[];_0x1a6b99[_0x7d19('0x2c')](function(_0x4eca63){_0x5ec0e4[_0x7d19('0x49')](assignTagToIncident(_0x4eca63,_0x36d71e,_0x487a97,_0x319a4a,_0x40aa0a));});return Promise['all'](_0x5ec0e4)[_0x7d19('0xc')](function(){_0x2df01b();})[_0x7d19('0x14')](function(){_0x2df01b();});}else{_0x2df01b();}});});}function getTags(_0x4b2f41,_0x21cef1,_0x27e8b4,_0x4ccec8,_0x2b4d69,_0x467219){return function(_0x4ef4f4){return new Promise(function(_0x4dc2c9,_0x511356){var _0x483457=[];var _0x1d8b26=_0x4ccec8[_0x7d19('0x4c')];if(_0x1d8b26&&_0x1d8b26[_0x7d19('0xe')]>0x0){_0x483457=_[_0x7d19('0x4d')](_0x1d8b26,_0x7d19('0x3a'));}if(_0x483457['length']>0x0){return manageTags(_0x4b2f41,_0x483457,_0x21cef1,_0x27e8b4,_0x4ef4f4,_0x2b4d69,_0x467219)[_0x7d19('0xc')](function(){_0x4dc2c9(_0x4ef4f4);});}else{_0x4dc2c9(_0x4ef4f4);}});};}function emit(_0x48b4da,_0x1f7d50,_0x13436a){var _0x5b430a=_0x7d19('0x4e')+_0x7d19('0x4f')+_0x7d19('0x50')+_0x7d19('0x51');var _0x52405d={'uri':_0x48b4da+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x13436a+_0x5b430a};io['to'](util[_0x7d19('0x52')](_0x7d19('0x53'),_0x1f7d50))[_0x7d19('0x54')]('trigger:browser:url',_0x52405d);}exports['cs']=function(_0x2dfed2,_0xc354b8,_0x39cb17,_0x491cdf,_0x4c5353,_0x55511e,_0x1c2953,_0x108e1f){var _0x594674={};var _0x1ad2ab={'user':_0x55511e['username'],'pass':_0x55511e[_0x7d19('0x55')]};var _0x1b983d=_0x7d19('0x56');var _0x12f542='sysparm_display_value=true';_0x55511e[_0x7d19('0x57')]=intUtil[_0x7d19('0x58')](_0x55511e[_0x7d19('0x57')]);_0x55511e[_0x7d19('0x59')]=intUtil['stripTrailingSlash'](_0x55511e[_0x7d19('0x59')]);var _0x59bb1a=util[_0x7d19('0x52')]('%s/api/now/table/',_0x55511e['remoteUri']);_0x594674[_0x7d19('0x16')]=!_[_0x7d19('0x5a')](_0x491cdf)?_0x491cdf['email']:null;_0x594674['adminEmail']=_0x55511e['email'];_0x594674[_0x7d19('0x22')]=_0x108e1f[_0x7d19('0x32')]()===_0x7d19('0x5b')?_0xc354b8[_0x7d19('0x5c')]:_0xc354b8['calleridnum'];_0x594674[_0x7d19('0x5d')]=_0x108e1f===_0x7d19('0x5e')||_0x108e1f==='unmanaged'?_0x7d19('0x5e'):_0x7d19('0x5b');var _0x1cdeae=util['format'](_0x7d19('0x5f'),_0x55511e['serverUrl'],_0xc354b8[_0x7d19('0x60')],md5(_0xc354b8[_0x7d19('0x60')]));if(_0x4c5353&&_0x4c5353['monitor_format']){logger[_0x7d19('0x11')]('[QUEUE]',_0x7d19('0x61'));_0xc354b8['recordingURL']=_0x1cdeae;}else if(_0x1c2953&&_0x1c2953[_0x7d19('0x62')]&&_0x1c2953[_0x7d19('0x62')]!=='none'){logger[_0x7d19('0x11')]('[OUTBOUND]',_0x7d19('0x61'));_0xc354b8[_0x7d19('0x63')]=_0x1cdeae;}else{_0xc354b8['recordingURL']='';}return getAdminUser(_0x108e1f,_0x1ad2ab,_0x594674,_0x59bb1a,_0x12f542,_0x1b983d)[_0x7d19('0xc')](getUser(_0x108e1f,_0x1ad2ab,_0x59bb1a,_0x12f542,_0x1b983d))[_0x7d19('0xc')](getEndUser(_0x108e1f,_0x1ad2ab,_0x59bb1a,_0x12f542,_0x1b983d))[_0x7d19('0xc')](getTicket(_0x108e1f,_0x1ad2ab,_0x59bb1a,_0x39cb17,_0xc354b8,_0x12f542))['then'](function(_0x1352d8){logger['info'](util[_0x7d19('0x52')]('The\x20ticket\x20ID\x20is:\x20%s',_0x1352d8['ticketId']));logger[_0x7d19('0x11')](util['format'](_0x7d19('0x64'),_0x108e1f));if(_0x108e1f!=='unmanaged'){logger[_0x7d19('0x11')]('['+[_0x108e1f[_0x7d19('0x12')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x55511e[_0x7d19('0x57')],_0x491cdf['name'],_0x1352d8[_0x7d19('0x41')]);}})[_0x7d19('0x14')](function(_0x43b04f){logger[_0x7d19('0x1c')]('['+[_0x108e1f['toUpperCase']()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x43b04f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x725c=['servicenow','redis','defaults','localhost','socket.io-emitter','GET','length','adminId','result','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','validateEmail','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','active','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','endUserNumber','true','System','then','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20createEndUser\x20crm','forEach','includes','customField','nameField','content','toString','string','picklist','type','idField','variableName','toLowerCase','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','endUserId','incident','assign','getString','Subjects','Descriptions','Fields','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','emit','trigger:browser:url','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x58afd5,_0x534a48){var _0x3e503b=function(_0x27ba44){while(--_0x27ba44){_0x58afd5['push'](_0x58afd5['shift']());}};_0x3e503b(++_0x534a48);}(_0x725c,0x65));var _0xc725=function(_0x1139d0,_0x41e5f8){_0x1139d0=_0x1139d0-0x0;var _0xcc01a6=_0x725c[_0x1139d0];return _0xcc01a6;};'use strict';var _=require(_0xc725('0x0'));var Promise=require('bluebird');var rp=require(_0xc725('0x1'));var util=require(_0xc725('0x2'));var md5=require(_0xc725('0x3'));var Redis=require(_0xc725('0x4'));var intUtil=require(_0xc725('0x5'));var config=require(_0xc725('0x6'));var logger=require(_0xc725('0x7'))(_0xc725('0x8'));config[_0xc725('0x9')]=_[_0xc725('0xa')](config['redis'],{'host':_0xc725('0xb'),'port':0x18eb});var io=require(_0xc725('0xc'))(new Redis(config['redis']));function getAdminUser(_0x2844ea,_0x73318d,_0x49f3ed,_0x1551a0,_0x818cb3,_0x1b019f){return new Promise(function(_0x49d65f,_0x83b76e){var _0x16b3cf={'method':_0xc725('0xd'),'uri':_0x1551a0+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x818cb3+'&'+_0x1b019f,'auth':_0x73318d,'json':!![]};return rp(_0x16b3cf)['then'](function(_0x2c3973){if(_0x2c3973['result'][_0xc725('0xe')]>0x0){_0x49f3ed[_0xc725('0xf')]=_0x2c3973[_0xc725('0x10')][0x0][_0xc725('0x11')];}logger[_0xc725('0x12')]('['+[_0x2844ea[_0xc725('0x13')]()]+_0xc725('0x14'),_0x49f3ed);_0x49d65f(_0x49f3ed);})[_0xc725('0x15')](function(_0x316a14){logger[_0xc725('0x16')]('['+[_0x2844ea[_0xc725('0x13')]()]+']',_0x316a14['message']);_0x83b76e(_0x316a14[_0xc725('0x17')]);});});}function getUser(_0x34edb4,_0x4bf2d3,_0x1c64e4,_0x28b361,_0x2ac234){return function(_0x3e54ba){logger[_0xc725('0x12')]('['+[_0x34edb4[_0xc725('0x13')]()]+'],\x20getUser\x20input\x20crm',_0x3e54ba);return new Promise(function(_0x406cbd,_0x5ac501){if(intUtil[_0xc725('0x18')](_0x3e54ba['userEmail'])){var _0x5cc21c={'method':_0xc725('0xd'),'uri':_0x1c64e4+_0xc725('0x19')+_0x3e54ba[_0xc725('0x1a')]+'&'+_0x28b361+'&'+_0x2ac234,'auth':_0x4bf2d3,'json':!![]};logger[_0xc725('0x12')]('['+[_0x34edb4[_0xc725('0x13')]()]+_0xc725('0x1b'),_0x5cc21c);return rp(_0x5cc21c)['then'](function(_0x30bf71){logger['info']('['+[_0x34edb4[_0xc725('0x13')]()]+'],\x20getUser\x20entity',_0x30bf71);if(_0x30bf71[_0xc725('0x10')][_0xc725('0xe')]>0x0&&String(_0x30bf71['result'][0x0][_0xc725('0x1c')])==='true'){_0x3e54ba[_0xc725('0x1d')]=_0x30bf71[_0xc725('0x10')][0x0]['sys_id'];}else{_0x3e54ba[_0xc725('0x1d')]=_0x3e54ba[_0xc725('0xf')];_0x3e54ba[_0xc725('0x1a')]=_0x3e54ba[_0xc725('0x1e')];}logger[_0xc725('0x12')]('['+[_0x34edb4[_0xc725('0x13')]()]+_0xc725('0x1f'),_0x3e54ba);_0x406cbd(_0x3e54ba);})['catch'](function(_0x191e01){logger[_0xc725('0x16')]('['+[_0x34edb4[_0xc725('0x13')]()]+']',_0x191e01['message']);_0x5ac501(_0x191e01[_0xc725('0x17')]);});}else{logger[_0xc725('0x12')]('['+[_0x34edb4[_0xc725('0x13')]()]+_0xc725('0x20'));_0x3e54ba['userId']=_0x3e54ba['adminId'];_0x3e54ba[_0xc725('0x1a')]=_0x3e54ba[_0xc725('0x1e')];_0x406cbd(_0x3e54ba);}});};}function createEndUser(_0x29771c,_0x3ec796,_0x23319b,_0x5aecea,_0x54a22f){logger['info']('['+[_0x29771c['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0x23319b);return new Promise(function(_0x1ee8c6,_0x38f3a5){var _0x5562e6={'method':_0xc725('0x21'),'uri':_0x5aecea+'sys_user?'+_0x54a22f,'body':{'user_name':_0x23319b[_0xc725('0x22')],'roles':'user','first_name':_0x23319b[_0xc725('0x22')],'active':_0xc725('0x23'),'date_format':_0xc725('0x24'),'phone':_0x23319b['endUserNumber']},'auth':_0x3ec796,'json':!![]};return rp(_0x5562e6)[_0xc725('0x25')](function(_0x1d2b84){logger[_0xc725('0x12')]('['+[_0x29771c['toUpperCase']()]+_0xc725('0x26'),_0x1d2b84[_0xc725('0x10')]);_0x23319b['endUserId']=_0x1d2b84[_0xc725('0x10')]['sys_id'];_0x1ee8c6(_0x23319b);})[_0xc725('0x15')](function(_0x3e1e94){logger[_0xc725('0x16')]('['+[_0x29771c[_0xc725('0x13')]()]+']',_0x3e1e94['message']);_0x38f3a5(_0x3e1e94[_0xc725('0x17')]);});});}function getEndUser(_0x220cbd,_0x2649ac,_0x194d36,_0x3c86f3,_0x425b76){return function(_0x1b7544){logger[_0xc725('0x12')]('['+[_0x220cbd[_0xc725('0x13')]()]+_0xc725('0x27'),_0x1b7544);return new Promise(function(_0x39812c,_0xaa66ba){var _0xbae4c7={'method':_0xc725('0xd'),'uri':_0x194d36+_0xc725('0x28')+_0x1b7544[_0xc725('0x22')]+'&'+_0x3c86f3+'&'+_0x425b76,'auth':_0x2649ac,'json':!![]};return rp(_0xbae4c7)[_0xc725('0x25')](function(_0x37113d){if(_0x37113d['result'][_0xc725('0xe')]>0x0){_0x1b7544['endUserId']=_0x37113d[_0xc725('0x10')][0x0]['sys_id'];logger['info']('['+[_0x220cbd[_0xc725('0x13')]()]+'],\x20getEndUser\x20crm',_0x1b7544);_0x39812c(_0x1b7544);}else{return createEndUser(_0x220cbd,_0x2649ac,_0x1b7544,_0x194d36,_0x3c86f3)[_0xc725('0x25')](function(_0x35f10b){logger[_0xc725('0x12')]('['+[_0x220cbd[_0xc725('0x13')]()]+_0xc725('0x29'),_0x35f10b);_0x39812c(_0x35f10b);});}})['catch'](function(_0x59a89b){logger[_0xc725('0x16')]('['+[_0x220cbd[_0xc725('0x13')]()]+']',_0x59a89b[_0xc725('0x17')]);_0xaa66ba(_0x59a89b[_0xc725('0x17')]);});});};}function getCustomFields(_0x369cbd,_0x26fc46){var _0x1ad97f={};if(_0x369cbd[_0xc725('0xe')]>0x0){_[_0xc725('0x2a')](_0x369cbd,function(_0x1bf77e){if(_[_0xc725('0x2b')](['string','picklist'],_0x1bf77e['type'])&&_0x1bf77e['nameField']&&!_0x1bf77e[_0xc725('0x2c')]){_0x1ad97f[_0x1bf77e[_0xc725('0x2d')]['toLowerCase']()]=_0x1bf77e[_0xc725('0x2e')][_0xc725('0x2f')]();}else if(_['includes']([_0xc725('0x30'),_0xc725('0x31')],_0x1bf77e[_0xc725('0x32')])&&_0x1bf77e['idField']&&_0x1bf77e['customField']){_0x1ad97f[_0x1bf77e[_0xc725('0x33')]['toLowerCase']()]=_0x1bf77e['content'][_0xc725('0x2f')]();}else if(_0x1bf77e[_0xc725('0x32')]==='variable'&&_0x1bf77e[_0xc725('0x34')]&&_0x1bf77e['idField']&&_0x1bf77e[_0xc725('0x2c')]){_0x1ad97f[_0x1bf77e[_0xc725('0x33')][_0xc725('0x35')]()]=_0x26fc46[_0x1bf77e[_0xc725('0x34')]][_0xc725('0x2f')]();}else if(_0x1bf77e[_0xc725('0x32')]===_0xc725('0x36')&&_0x1bf77e['Variable']&&_0x1bf77e[_0xc725('0x37')][_0xc725('0x38')]&&_0x1bf77e[_0xc725('0x33')]&&_0x1bf77e['customField']){_0x1ad97f[_0x1bf77e[_0xc725('0x33')][_0xc725('0x35')]()]=_0x26fc46[_0x1bf77e[_0xc725('0x37')]['name'][_0xc725('0x35')]()][_0xc725('0x2f')]();}});}return _0x1ad97f;}function getTicket(_0x392b28,_0x200370,_0x45df2f,_0x472cd5,_0x39aeb7,_0x541fcb){return function(_0x40319d){logger[_0xc725('0x12')]('['+[_0x392b28[_0xc725('0x13')]()]+_0xc725('0x39'),_0x40319d);return new Promise(function(_0x13fce3,_0x33cd2e){var _0x3ab709=_0x392b28['toLowerCase']()===_0xc725('0x3a')?_0x40319d[_0xc725('0x1d')]:_0x40319d[_0xc725('0x3b')];var _0x89890e={'method':_0xc725('0x21'),'uri':_0x45df2f+_0xc725('0x3c')+'?'+_0x541fcb,'body':Object[_0xc725('0x3d')]({},{'active':_0xc725('0x23'),'caller_id':_0x3ab709,'assigned_to':_0x40319d['userId'],'short_description':intUtil[_0xc725('0x3e')](_0x472cd5[_0xc725('0x3f')],_0x39aeb7,'\x20'),'description':intUtil['getString'](_0x472cd5[_0xc725('0x40')],_0x39aeb7,'\x0a')},getCustomFields(_0x472cd5[_0xc725('0x41')],_0x39aeb7)),'auth':_0x200370,'json':!![]};return rp(_0x89890e)[_0xc725('0x25')](function(_0x325f8c){logger['info']('['+[_0x392b28['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x325f8c['result']);_0x40319d[_0xc725('0x42')]=_0x325f8c[_0xc725('0x10')][_0xc725('0x11')];_0x40319d[_0xc725('0x43')]=_0x325f8c['result'][_0xc725('0x44')];logger['info']('['+[_0x392b28[_0xc725('0x13')]()]+_0xc725('0x45'),_0x40319d);_0x13fce3(_0x40319d);})[_0xc725('0x15')](function(_0x162d69){logger[_0xc725('0x16')]('['+[_0x392b28['toUpperCase']()]+']',_0x162d69[_0xc725('0x17')]);_0x33cd2e(_0x162d69[_0xc725('0x17')]);});});};}function createRemoteTag(_0x2db81b,_0x1aa6e5,_0x56cde2,_0x289294){return new Promise(function(_0x1f49d6,_0x4beb02){var _0x14a41e={'method':'POST','uri':_0x56cde2+'label'+'?'+_0x289294,'body':{'short_description':_0x2db81b,'global':!![],'active':!![],'name':_0x2db81b},'auth':_0x1aa6e5,'json':!![]};return rp(_0x14a41e)[_0xc725('0x25')](function(_0x51019f){var _0x19b126=_0x51019f[_0xc725('0x10')][_0xc725('0x11')];_0x1f49d6(_0x19b126);});});}function getRemoteTag(_0x499fab,_0x56e4bb,_0x5dd205,_0x175309,_0x2c3d52){return new Promise(function(_0x189dce,_0x3315a5){var _0xd83032={'method':_0xc725('0xd'),'uri':_0x5dd205+_0xc725('0x46')+_0xc725('0x47')+_0x499fab+'&'+_0x175309,'auth':_0x56e4bb,'json':!![]};return rp(_0xd83032)[_0xc725('0x25')](function(_0x475d96){if(_0x475d96[_0xc725('0x10')][_0xc725('0xe')]>0x0){var _0x3ce444=_0x475d96[_0xc725('0x10')][0x0][_0xc725('0x11')];_0x189dce(_0x3ce444);}else{return createRemoteTag(_0x499fab,_0x56e4bb,_0x5dd205,_0x175309)['then'](function(_0x15df9c){_0x189dce(_0x15df9c);});}});});}function assignTagToIncident(_0x263e09,_0xb6e740,_0xfc7962,_0x31d368,_0x4358f4){return new Promise(function(_0x2722a5,_0x2960d6){var _0x751050={'method':_0xc725('0x21'),'uri':_0xfc7962+_0xc725('0x48')+'?'+_0x4358f4,'body':{'label':_0x263e09,'table':'incident','id_type':_0xc725('0x49'),'table_key':_0x31d368[_0xc725('0x42')],'title':_0xc725('0x4a')+_0x31d368[_0xc725('0x43')],'id_display':_0x31d368[_0xc725('0x43')]},'auth':_0xb6e740,'json':!![]};return rp(_0x751050)[_0xc725('0x25')](function(_0x17ee24){_0x2722a5();})['catch'](function(){_0x2722a5();});});}function manageTags(_0x5d27d9,_0xab36a3,_0x1f8892,_0x38c045,_0x5cc50c,_0x2ad96b,_0x4fa348){return new Promise(function(_0x2ee655,_0x534e36){var _0x4d13b3=[];_0xab36a3[_0xc725('0x2a')](function(_0x4f7db7){_0x4d13b3[_0xc725('0x4b')](getRemoteTag(_0x4f7db7,_0x1f8892,_0x38c045,_0x2ad96b,_0x4fa348));});return Promise[_0xc725('0x4c')](_0x4d13b3)['then'](function(_0x5c06a9){if(_0x5c06a9['length']){logger[_0xc725('0x12')]('['+[_0x5d27d9[_0xc725('0x13')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x5c06a9);var _0x48e79f=[];_0x5c06a9[_0xc725('0x2a')](function(_0x324b63){_0x48e79f[_0xc725('0x4b')](assignTagToIncident(_0x324b63,_0x1f8892,_0x38c045,_0x5cc50c,_0x2ad96b));});return Promise[_0xc725('0x4c')](_0x48e79f)['then'](function(){_0x2ee655();})[_0xc725('0x15')](function(){_0x2ee655();});}else{_0x2ee655();}});});}function getTags(_0x33f2e3,_0x3ac851,_0x356cab,_0x55666b,_0x3db696,_0x423a14){return function(_0x505412){return new Promise(function(_0x7f6f96,_0x15fc55){var _0x2a3098=[];var _0x6e2c02=_0x55666b[_0xc725('0x4d')];if(_0x6e2c02&&_0x6e2c02[_0xc725('0xe')]>0x0){_0x2a3098=_[_0xc725('0x4e')](_0x6e2c02,'name');}if(_0x2a3098[_0xc725('0xe')]>0x0){return manageTags(_0x33f2e3,_0x2a3098,_0x3ac851,_0x356cab,_0x505412,_0x3db696,_0x423a14)['then'](function(){_0x7f6f96(_0x505412);});}else{_0x7f6f96(_0x505412);}});};}function emit(_0x20d88f,_0x2bc10c,_0x29bba1){var _0x543d60=_0xc725('0x4f')+_0xc725('0x50')+_0xc725('0x51')+_0xc725('0x52');var _0x5c1888={'uri':_0x20d88f+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x29bba1+_0x543d60};io['to'](util[_0xc725('0x53')]('user:%s',_0x2bc10c))[_0xc725('0x54')](_0xc725('0x55'),_0x5c1888);}exports['cs']=function(_0x340087,_0xd206bf,_0x453fbf,_0x12676b,_0x315fc3,_0x1658b8,_0x1a0d17,_0x12d7bc){var _0x150697={};var _0x34a28e={'user':_0x1658b8['username'],'pass':_0x1658b8[_0xc725('0x56')]};var _0x51ec5a=_0xc725('0x57');var _0x3d9c00='sysparm_display_value=true';_0x1658b8[_0xc725('0x58')]=intUtil[_0xc725('0x59')](_0x1658b8['remoteUri']);_0x1658b8[_0xc725('0x5a')]=intUtil[_0xc725('0x59')](_0x1658b8[_0xc725('0x5a')]);var _0x577bb5=util[_0xc725('0x53')](_0xc725('0x5b'),_0x1658b8[_0xc725('0x58')]);_0x150697[_0xc725('0x1a')]=!_[_0xc725('0x5c')](_0x12676b)?_0x12676b[_0xc725('0x5d')]:null;_0x150697[_0xc725('0x1e')]=_0x1658b8['email'];_0x150697['endUserNumber']=_0x12d7bc[_0xc725('0x35')]()===_0xc725('0x3a')?_0xd206bf['destcalleridnum']:_0xd206bf['calleridnum'];_0x150697[_0xc725('0x5e')]=_0x12d7bc===_0xc725('0x5f')||_0x12d7bc===_0xc725('0x60')?'queue':_0xc725('0x3a');var _0x55e41c=util[_0xc725('0x53')](_0xc725('0x61'),_0x1658b8['serverUrl'],_0xd206bf['uniqueid'],md5(_0xd206bf[_0xc725('0x62')]));if(_0x315fc3&&_0x315fc3['monitor_format']){logger[_0xc725('0x12')](_0xc725('0x63'),_0xc725('0x64'));_0xd206bf['recordingURL']=_0x55e41c;}else if(_0x1a0d17&&_0x1a0d17[_0xc725('0x65')]&&_0x1a0d17[_0xc725('0x65')]!==_0xc725('0x66')){logger[_0xc725('0x12')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0xd206bf[_0xc725('0x67')]=_0x55e41c;}else{_0xd206bf[_0xc725('0x67')]='';}return getAdminUser(_0x12d7bc,_0x34a28e,_0x150697,_0x577bb5,_0x3d9c00,_0x51ec5a)[_0xc725('0x25')](getUser(_0x12d7bc,_0x34a28e,_0x577bb5,_0x3d9c00,_0x51ec5a))[_0xc725('0x25')](getEndUser(_0x12d7bc,_0x34a28e,_0x577bb5,_0x3d9c00,_0x51ec5a))['then'](getTicket(_0x12d7bc,_0x34a28e,_0x577bb5,_0x453fbf,_0xd206bf,_0x3d9c00))[_0xc725('0x25')](function(_0x454be9){logger[_0xc725('0x12')](util[_0xc725('0x53')](_0xc725('0x68'),_0x454be9[_0xc725('0x42')]));logger[_0xc725('0x12')](util[_0xc725('0x53')](_0xc725('0x69'),_0x12d7bc));if(_0x12d7bc!==_0xc725('0x60')){logger['info']('['+[_0x12d7bc[_0xc725('0x13')]()]+']',_0xc725('0x6a'));emit(_0x1658b8[_0xc725('0x58')],_0x12676b[_0xc725('0x38')],_0x454be9[_0xc725('0x42')]);}})[_0xc725('0x15')](function(_0x7be337){logger[_0xc725('0x16')]('['+[_0x12d7bc['toUpperCase']()]+_0xc725('0x6b'),util[_0xc725('0x6c')](_0x7be337,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 94c61bf..05c2820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6007=['push','idField','set_entry','JSON','stringify','format','toString','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','user_name','then','entry_list','find','name_value_list','value','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Contacts','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','merge','string','content','type','customField','custom_fields','variable','customVariable','Variable','toLowerCase','login','username','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','outbound','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','charAt','unmanaged','toUpperCase','lastevent','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','defaults','redis','localhost','socket.io-emitter','POST','emit','info','Subjects','assigned_user_id','created_by','description','getString','Descriptions','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_name','name','direction','length','forEach','variableName'];(function(_0xa0d7ba,_0x303316){var _0x58fa94=function(_0x35d056){while(--_0x35d056){_0xa0d7ba['push'](_0xa0d7ba['shift']());}};_0x58fa94(++_0x303316);}(_0x6007,0x1b5));var _0x7600=function(_0x48c4ef,_0x319d44){_0x48c4ef=_0x48c4ef-0x0;var _0x435715=_0x6007[_0x48c4ef];return _0x435715;};'use strict';var _=require(_0x7600('0x0'));var rp=require(_0x7600('0x1'));var BPromise=require(_0x7600('0x2'));var md5=require(_0x7600('0x3'));var util=require(_0x7600('0x4'));var Redis=require(_0x7600('0x5'));var intUtil=require(_0x7600('0x6'));var config=require(_0x7600('0x7'));var logger=require(_0x7600('0x8'))(_0x7600('0x9'));config['redis']=_[_0x7600('0xa')](config[_0x7600('0xb')],{'host':_0x7600('0xc'),'port':0x18eb});var io=require(_0x7600('0xd'))(new Redis(config[_0x7600('0xb')]));var def={'method':_0x7600('0xe'),'json':!![]};function emit(_0xedb345,_0x1488d7,_0x109a9d){io['to'](_0xedb345)[_0x7600('0xf')](_0x1488d7,_0x109a9d);}function getTicket(_0x2496fb,_0x1f4659,_0x2c5dab,_0x5f3172,_0x19d430,_0x973645,_0x195586,_0x17e563){logger[_0x7600('0x10')]('Creating\x20new\x20ticket...');var _0xc22d6a=new Date();var _0x55258a=[{'name':'name','value':intUtil['getString'](_0x5f3172[_0x7600('0x11')],_0x19d430,'\x20')},{'name':_0x7600('0x12'),'value':_0x1f4659['id']},{'name':_0x7600('0x13'),'value':_0x1f4659['id']},{'name':_0x7600('0x14'),'value':intUtil[_0x7600('0x15')](_0x5f3172[_0x7600('0x16')],_0x19d430,'\x0a')},{'name':'date_start','value':_0xc22d6a[_0x7600('0x17')]()[_0x7600('0x18')](0x0,0x13)[_0x7600('0x19')]('T','\x20')},{'name':_0x7600('0x1a'),'value':'0'},{'name':_0x7600('0x1b'),'value':'15'},{'name':_0x7600('0x1c'),'value':_0x2c5dab['id']},{'name':'parent_type','value':'Contacts'},{'name':_0x7600('0x1d'),'value':_0x2c5dab[_0x7600('0x1e')]},{'name':_0x7600('0x1f'),'value':_0x17e563}];if(_0x973645[_0x7600('0x20')]){_[_0x7600('0x21')](_0x973645,function(_0xf80f40){if(_0x19d430[_0xf80f40[_0x7600('0x22')]]){_0x55258a[_0x7600('0x23')]({'name':_0xf80f40[_0x7600('0x24')],'value':_0x19d430[_0xf80f40[_0x7600('0x22')]]});}});}return request({'form':{'method':_0x7600('0x25'),'input_type':'JSON','response_type':_0x7600('0x26'),'rest_data':JSON[_0x7600('0x27')]({'session':_0x195586['id'],'module_name':'Calls','name_value_list':_0x55258a})}});}function getAuth(_0x4b181b){return util[_0x7600('0x28')]('Basic\x20%s',new Buffer(_0x4b181b['apiKey']+':X')[_0x7600('0x29')]('base64'));}function getServerInfo(_0x262960){return request({'form':{'method':_0x7600('0x2a'),'input_type':_0x7600('0x26'),'response_type':_0x7600('0x26'),'rest_data':JSON['stringify']({'session':_0x262960['id']})}});}function getUser(_0x39655c,_0x1a48d2,_0x4c78a9){if(!_['isNil'](_0x1a48d2)){logger[_0x7600('0x10')](_0x7600('0x2b'),_0x1a48d2);return request({'form':{'method':_0x7600('0x2c'),'input_type':'JSON','response_type':_0x7600('0x26'),'rest_data':JSON[_0x7600('0x27')]({'session':_0x4c78a9['id'],'module_name':'Employees','query':util[_0x7600('0x28')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x1a48d2),'order_by':'','offset':'0','select_fields':['id',_0x7600('0x1e'),_0x7600('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x7600('0x2e')](function(_0x516279){if(_0x516279[_0x7600('0x2f')]['length']){var _0x132df7=_[_0x7600('0x30')](_0x516279[_0x7600('0x2f')],function(_0x472271){return _0x472271[_0x7600('0x31')][_0x7600('0x2d')][_0x7600('0x32')]===_0x1a48d2;});if(_0x132df7){logger[_0x7600('0x10')]('Agent\x20found!');return BPromise[_0x7600('0x33')]({'id':_0x132df7[_0x7600('0x31')]['id'][_0x7600('0x32')],'name':_0x132df7['name_value_list'][_0x7600('0x1e')][_0x7600('0x32')]});}}logger['info'](_0x7600('0x34'));return BPromise[_0x7600('0x33')]({'id':_0x4c78a9[_0x7600('0x31')][_0x7600('0x35')]['value'],'name':_0x4c78a9['name_value_list']['user_name']['value']});});}else{logger[_0x7600('0x10')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x7600('0x33')]({'id':_0x4c78a9['name_value_list'][_0x7600('0x35')][_0x7600('0x32')],'name':_0x4c78a9[_0x7600('0x31')][_0x7600('0x2d')][_0x7600('0x32')]});}}function getEndUser(_0x4528dd,_0x38184a,_0x26638d,_0x4457f8){logger['info']('Searching\x20enduser\x20with\x20phone',_0x26638d);return request({'form':{'method':_0x7600('0x2c'),'input_type':_0x7600('0x26'),'response_type':_0x7600('0x26'),'rest_data':JSON['stringify']({'session':_0x4457f8['id'],'module_name':'Contacts','query':util['format'](_0x7600('0x36'),_0x26638d),'order_by':'','offset':'0','select_fields':['id',_0x7600('0x1e'),_0x7600('0x37')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x508ad2){if(_0x508ad2[_0x7600('0x2f')][_0x7600('0x20')]){var _0x19b8f1=_[_0x7600('0x30')](_0x508ad2[_0x7600('0x2f')],function(_0x284fe8){return _0x284fe8[_0x7600('0x31')][_0x7600('0x37')][_0x7600('0x32')]===_0x26638d;});if(_0x19b8f1){logger[_0x7600('0x10')](_0x7600('0x38'));return BPromise[_0x7600('0x33')]({'id':_0x19b8f1[_0x7600('0x31')]['id'][_0x7600('0x32')],'name':_0x19b8f1[_0x7600('0x31')][_0x7600('0x1e')][_0x7600('0x32')],'phone':_0x19b8f1[_0x7600('0x31')][_0x7600('0x37')][_0x7600('0x32')]});}}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x7600('0x26'),'response_type':_0x7600('0x26'),'rest_data':JSON[_0x7600('0x27')]({'session':_0x4457f8['id'],'module_name':_0x7600('0x39'),'name_value_list':[{'name':_0x7600('0x3a'),'value':_0x38184a!==_0x7600('0x3b')?_0x38184a:util[_0x7600('0x28')]('Caller\x20-\x20%s',_0x26638d)},{'name':_0x7600('0x37'),'value':_0x26638d}]})}})[_0x7600('0x2e')](function(_0x5e555a){logger[_0x7600('0x10')](_0x7600('0x3c'));return BPromise['resolve']({'id':_0x5e555a['id'],'name':_0x5e555a[_0x7600('0x2f')]['first_name'][_0x7600('0x32')],'phone':_0x5e555a[_0x7600('0x2f')]['phone_home'][_0x7600('0x32')]});});}});}function request(_0x3c6772){logger[_0x7600('0x3d')](_0x7600('0x3e'),JSON[_0x7600('0x27')](_0x3c6772));return rp(_[_0x7600('0x3f')](def,_0x3c6772));}function getTags(_0x2b8904,_0x4f1748){var _0x5d3804=[];if(_0x2b8904&&_0x2b8904['length']>0x0){_0x5d3804=_['map'](_0x2b8904,_0x4f1748);}return _0x5d3804;}function getCustomFields(_0x1f487e,_0x265f09){var _0x923922=[];var _0x1f5a3c={'custom_fields':[]};if(_0x1f487e['length']>0x0){_[_0x7600('0x21')](_0x1f487e,function(_0x495251){if(_0x495251['type']===_0x7600('0x40')&&_0x495251['nameField']&&!_0x495251['customField']){_0x1f5a3c[_0x495251['nameField']['toLowerCase']()]=_0x495251[_0x7600('0x41')][_0x7600('0x29')]();}else if(_0x495251[_0x7600('0x42')]===_0x7600('0x40')&&_0x495251[_0x7600('0x24')]&&_0x495251[_0x7600('0x43')]){_0x1f5a3c[_0x7600('0x44')][_0x7600('0x23')]({'id':_0x495251['idField'],'value':_0x495251['content'][_0x7600('0x29')]()});}else if(_0x495251[_0x7600('0x42')]===_0x7600('0x45')&&_0x495251[_0x7600('0x22')]&&_0x495251[_0x7600('0x24')]&&_0x495251[_0x7600('0x43')]){_0x265f09[_0x495251['variableName']]&&_0x1f5a3c[_0x7600('0x44')][_0x7600('0x23')]({'id':_0x495251[_0x7600('0x24')],'value':_0x265f09[_0x495251['variableName']][_0x7600('0x29')]()});}else if(_0x495251['type']===_0x7600('0x46')&&_0x495251[_0x7600('0x47')]&&_0x495251[_0x7600('0x47')][_0x7600('0x1e')]&&_0x495251[_0x7600('0x24')]&&_0x495251['customField']){_0x265f09[_0x495251[_0x7600('0x47')][_0x7600('0x1e')][_0x7600('0x48')]()]&&_0x1f5a3c[_0x7600('0x44')][_0x7600('0x23')]({'id':_0x495251[_0x7600('0x24')],'value':_0x265f09[_0x495251[_0x7600('0x47')]['name']['toLowerCase']()][_0x7600('0x29')]()});}});}return _0x1f5a3c;}function getConnection(_0x57cdd2){return request({'method':_0x7600('0xe'),'form':{'method':_0x7600('0x49'),'input_type':_0x7600('0x26'),'response_type':'JSON','rest_data':JSON[_0x7600('0x27')]({'user_auth':{'user_name':_0x57cdd2[_0x7600('0x4a')],'password':_0x57cdd2['password'],'encryption':_0x7600('0x4b')},'application':'xCALLY\x20Motion\x20integration'})}})[_0x7600('0x2e')](function(_0x342a8d){var _0x2b20c5=_0x342a8d;if(_0x2b20c5['id']){def[_0x7600('0x4c')]=_0x2b20c5['id'];return BPromise[_0x7600('0x33')](_0x2b20c5);}else{throw new Error(util[_0x7600('0x28')](_0x7600('0x4d'),_0x57cdd2['id']));}});}function setRelationship(_0x3727f0,_0x42a54d,_0x1c429f,_0x5fee67){return request({'form':{'method':_0x7600('0x4e'),'input_type':_0x7600('0x26'),'response_type':_0x7600('0x26'),'rest_data':JSON['stringify']({'session':_0x3727f0['id'],'module_name':'Calls','module_id':_0x1c429f['id'],'link_field_name':_0x5fee67,'related_ids':[_0x42a54d['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x7600('0x4f')]=function(_0x557318,_0x361108,_0x2ccb7c,_0x3ed37c,_0x7b7f08,_0x42713f){var _0x55ad41,_0x7ad6c4,_0x4869c5,_0x3c482b;_0x42713f[_0x7600('0x50')]=intUtil[_0x7600('0x51')](_0x42713f['remoteUri']);_0x42713f[_0x7600('0x52')]=intUtil[_0x7600('0x51')](_0x42713f[_0x7600('0x52')]);def[_0x7600('0x53')]=util[_0x7600('0x28')](_0x7600('0x54'),_0x42713f[_0x7600('0x50')]);if(_0x7b7f08&&_0x7b7f08[_0x7600('0x55')]){logger[_0x7600('0x10')](_0x7600('0x56'),_0x7600('0x57'));_0x361108[_0x7600('0x58')]=util[_0x7600('0x28')](_0x7600('0x59'),_0x42713f['serverUrl'],_0x361108[_0x7600('0x5a')],md5(_0x361108['uniqueid']));}else{_0x361108[_0x7600('0x58')]='';}return getConnection(_0x42713f)[_0x7600('0x2e')](function(_0x56e096){_0x3c482b=_0x56e096;return getUser(_0x42713f,_0x3ed37c[_0x7600('0x1e')],_0x3c482b);})[_0x7600('0x2e')](function(_0x1ad8cd){_0x55ad41=_0x1ad8cd;logger[_0x7600('0x10')]('The\x20User\x20ID\x20is:',_0x55ad41['id']);return getEndUser(_0x42713f,_0x361108[_0x7600('0x5b')],_0x361108[_0x7600('0x5c')],_0x3c482b);})[_0x7600('0x2e')](function(_0x3b20da){_0x7ad6c4=_0x3b20da;logger[_0x7600('0x10')](_0x7600('0x5d'),_0x7ad6c4['id']);return getTicket(_0x42713f,_0x55ad41,_0x7ad6c4,_0x2ccb7c,_0x361108,_0x2ccb7c[_0x7600('0x5e')],_0x3c482b,_0x7600('0x5f'));})[_0x7600('0x2e')](function(_0x1d8725){_0x4869c5=_0x1d8725;logger['info'](_0x7600('0x60'));logger[_0x7600('0x10')](_0x7600('0x61'),_0x4869c5['id']);return setRelationship(_0x3c482b,_0x55ad41,_0x4869c5,_0x7600('0x62'));})['then'](function(){return setRelationship(_0x3c482b,_0x7ad6c4,_0x4869c5,_0x7600('0x63'));})['then'](function(){return getServerInfo(_0x3c482b);})['then'](function(_0x1c317f){var _0x22a042=parseInt(_0x1c317f[_0x7600('0x64')]['charAt'](0x0));var _0x5868e4=util['format'](_0x7600('0x65'),_0x42713f[_0x7600('0x50')],_0x4869c5['id']);if(_0x22a042>0x6){_0x5868e4=util[_0x7600('0x28')](_0x7600('0x66'),_0x42713f[_0x7600('0x50')],_0x4869c5['id']);}logger[_0x7600('0x10')](_0x7600('0x56'),_0x7600('0x67'));emit(util[_0x7600('0x28')]('user:%s',_0x3ed37c[_0x7600('0x1e')]),_0x7600('0x68'),{'uri':_0x5868e4});})[_0x7600('0x69')](function(_0x53b3de){logger[_0x7600('0x6a')](_0x7600('0x56'),JSON['stringify'](_0x53b3de));});};exports[_0x7600('0x6b')]=function(_0x1d40bf,_0x36c8eb,_0x597cb2,_0x2c16cb,_0x2da5f7,_0x205ede,_0x386af0){var _0x2ebb42,_0x332afb,_0x574475,_0x12cce6;_0x205ede[_0x7600('0x50')]=intUtil[_0x7600('0x51')](_0x205ede['remoteUri']);_0x205ede[_0x7600('0x52')]=intUtil['stripTrailingSlash'](_0x205ede['serverUrl']);def[_0x7600('0x53')]=util[_0x7600('0x28')](_0x7600('0x54'),_0x205ede[_0x7600('0x50')]);if(_0x386af0&&_0x386af0[_0x7600('0x6c')]&&_0x386af0[_0x7600('0x6c')]!=='none'){logger[_0x7600('0x10')](_0x7600('0x6d'),_0x7600('0x57'));_0x36c8eb[_0x7600('0x58')]=util[_0x7600('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x205ede[_0x7600('0x52')],_0x36c8eb[_0x7600('0x5a')],md5(_0x36c8eb[_0x7600('0x5a')]));}return getConnection(_0x205ede)[_0x7600('0x2e')](function(_0x208ddc){_0x12cce6=_0x208ddc;return getUser(_0x205ede,_0x2c16cb[_0x7600('0x1e')],_0x12cce6);})[_0x7600('0x2e')](function(_0x512b5a){_0x2ebb42=_0x512b5a;logger[_0x7600('0x10')](_0x7600('0x6e'),_0x2ebb42['id']);return getEndUser(_0x205ede,_0x36c8eb[_0x7600('0x6f')],_0x36c8eb[_0x7600('0x70')],_0x12cce6);})[_0x7600('0x2e')](function(_0x2dd93c){_0x332afb=_0x2dd93c;logger[_0x7600('0x10')]('The\x20Enduser\x20ID\x20is:',_0x332afb['id']);return getTicket(_0x205ede,_0x2ebb42,_0x332afb,_0x597cb2,_0x36c8eb,_0x597cb2[_0x7600('0x5e')],_0x12cce6,_0x7600('0x71'));})[_0x7600('0x2e')](function(_0x22fb43){_0x574475=_0x22fb43;logger[_0x7600('0x10')](_0x7600('0x60'));logger[_0x7600('0x10')](_0x7600('0x61'),_0x574475['id']);return setRelationship(_0x12cce6,_0x2ebb42,_0x574475,_0x7600('0x62'));})[_0x7600('0x2e')](function(){return setRelationship(_0x12cce6,_0x332afb,_0x574475,_0x7600('0x63'));})[_0x7600('0x2e')](function(){return getServerInfo(_0x12cce6);})[_0x7600('0x2e')](function(_0x69e173){var _0x276fda=parseInt(_0x69e173[_0x7600('0x64')][_0x7600('0x72')](0x0));var _0x483569=util[_0x7600('0x28')](_0x7600('0x65'),_0x205ede[_0x7600('0x50')],_0x574475['id']);if(_0x276fda>0x6){_0x483569=util[_0x7600('0x28')](_0x7600('0x66'),_0x205ede['remoteUri'],_0x574475['id']);}logger[_0x7600('0x10')](_0x7600('0x6d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7600('0x28')]('user:%s',_0x2c16cb['name']),_0x7600('0x68'),{'uri':_0x483569});})[_0x7600('0x69')](function(_0x4c4ffa){logger[_0x7600('0x6a')]('[OUTBOUND]',JSON[_0x7600('0x27')](_0x4c4ffa));});};exports[_0x7600('0x73')]=function(_0x11f628,_0x2df92e,_0xe68451,_0x3680bb,_0x4e0c14,_0x477d79){var _0x6c90f6,_0x5a89a6,_0xd38755,_0x30129d;_0x477d79[_0x7600('0x50')]=intUtil[_0x7600('0x51')](_0x477d79[_0x7600('0x50')]);_0x477d79[_0x7600('0x52')]=intUtil[_0x7600('0x51')](_0x477d79[_0x7600('0x52')]);def[_0x7600('0x53')]=util['format'](_0x7600('0x54'),_0x477d79[_0x7600('0x50')]);if(_0x4e0c14&&_0x4e0c14[_0x7600('0x55')]){logger[_0x7600('0x10')]('['+_0x2df92e['lastevent'][_0x7600('0x74')]()+']',_0x7600('0x57'));_0x2df92e[_0x7600('0x58')]=util[_0x7600('0x28')](_0x7600('0x59'),_0x477d79[_0x7600('0x52')],_0x2df92e[_0x7600('0x5a')],md5(_0x2df92e[_0x7600('0x5a')]));}else{_0x2df92e[_0x7600('0x58')]='';}return getConnection(_0x477d79)[_0x7600('0x2e')](function(_0x36cf5c){_0x30129d=_0x36cf5c;if(!_['isNil'](_0x3680bb)){return getUser(_0x477d79,_0x3680bb['name'],_0x30129d);}else{return getUser(_0x477d79,null,_0x30129d);}})['then'](function(_0x2479b3){_0x6c90f6=_0x2479b3;logger[_0x7600('0x10')](_0x7600('0x6e'),_0x6c90f6['id']);return getEndUser(_0x477d79,_0x2df92e[_0x7600('0x5b')],_0x2df92e[_0x7600('0x5c')],_0x30129d);})['then'](function(_0x19d148){_0x5a89a6=_0x19d148;logger[_0x7600('0x10')](_0x7600('0x5d'),_0x5a89a6['id']);return getTicket(_0x477d79,_0x6c90f6,_0x5a89a6,_0xe68451,_0x2df92e,_0xe68451[_0x7600('0x5e')],_0x30129d,_0x7600('0x5f'));})[_0x7600('0x2e')](function(_0x3be215){_0xd38755=_0x3be215;logger[_0x7600('0x10')]('Ticket\x20created!');logger['info'](_0x7600('0x61'),_0xd38755['id']);return setRelationship(_0x30129d,_0x6c90f6,_0xd38755,_0x7600('0x62'));})[_0x7600('0x2e')](function(){return setRelationship(_0x30129d,_0x5a89a6,_0xd38755,_0x7600('0x63'));})[_0x7600('0x2e')](function(){return getServerInfo(_0x30129d);})[_0x7600('0x69')](function(_0x3ec11c){logger['error']('['+_0x2df92e[_0x7600('0x75')][_0x7600('0x74')]()+']',JSON[_0x7600('0x27')](_0x3ec11c));});};
\ No newline at end of file
+var _0xe7d1=['calleridname','Inbound','Ticket\x20created!','users','contacts','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Fields','Outbound','version','charAt','unmanaged','lastevent','lodash','request-promise','bluebird','md5','util','./util','sugarcrm','redis','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','Subjects','description','Descriptions','toISOString','replace','duration_hours','parent_id','parent_type','direction','length','forEach','variableName','idField','stringify','Calls','toString','base64','get_server_info','JSON','isNil','Getting\x20agent\x20with\x20name','Employees','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','Agent\x20found!','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','resolve','user_id','Searching\x20enduser\x20with\x20phone','get_entry_list','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','string','customField','nameField','toLowerCase','content','custom_fields','push','variable','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','recordingURL','uniqueid'];(function(_0x276c70,_0x593869){var _0x1a20c4=function(_0x9b5c3){while(--_0x9b5c3){_0x276c70['push'](_0x276c70['shift']());}};_0x1a20c4(++_0x593869);}(_0xe7d1,0x103));var _0x1e7d=function(_0xd5290d,_0x1085f3){_0xd5290d=_0xd5290d-0x0;var _0x29dd2b=_0xe7d1[_0xd5290d];return _0x29dd2b;};'use strict';var _=require(_0x1e7d('0x0'));var rp=require(_0x1e7d('0x1'));var BPromise=require(_0x1e7d('0x2'));var md5=require(_0x1e7d('0x3'));var util=require(_0x1e7d('0x4'));var Redis=require('ioredis');var intUtil=require(_0x1e7d('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x1e7d('0x6'));config[_0x1e7d('0x7')]=_['defaults'](config[_0x1e7d('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x1e7d('0x8'))(new Redis(config[_0x1e7d('0x7')]));var def={'method':_0x1e7d('0x9'),'json':!![]};function emit(_0x50b4b4,_0x263656,_0x5a24b9){io['to'](_0x50b4b4)[_0x1e7d('0xa')](_0x263656,_0x5a24b9);}function getTicket(_0x2c8c07,_0x16dd27,_0x254bc1,_0x2deb08,_0x12a840,_0x430d79,_0x457caa,_0x4e0e27){logger[_0x1e7d('0xb')](_0x1e7d('0xc'));var _0x1be012=new Date();var _0x27d73c=[{'name':_0x1e7d('0xd'),'value':intUtil['getString'](_0x2deb08[_0x1e7d('0xe')],_0x12a840,'\x20')},{'name':'assigned_user_id','value':_0x16dd27['id']},{'name':'created_by','value':_0x16dd27['id']},{'name':_0x1e7d('0xf'),'value':intUtil['getString'](_0x2deb08[_0x1e7d('0x10')],_0x12a840,'\x0a')},{'name':'date_start','value':_0x1be012[_0x1e7d('0x11')]()['slice'](0x0,0x13)[_0x1e7d('0x12')]('T','\x20')},{'name':_0x1e7d('0x13'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x1e7d('0x14'),'value':_0x254bc1['id']},{'name':_0x1e7d('0x15'),'value':'Contacts'},{'name':'parent_name','value':_0x254bc1[_0x1e7d('0xd')]},{'name':_0x1e7d('0x16'),'value':_0x4e0e27}];if(_0x430d79[_0x1e7d('0x17')]){_[_0x1e7d('0x18')](_0x430d79,function(_0x5a0f6c){if(_0x12a840[_0x5a0f6c[_0x1e7d('0x19')]]){_0x27d73c['push']({'name':_0x5a0f6c[_0x1e7d('0x1a')],'value':_0x12a840[_0x5a0f6c[_0x1e7d('0x19')]]});}});}return request({'form':{'method':'set_entry','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x1e7d('0x1b')]({'session':_0x457caa['id'],'module_name':_0x1e7d('0x1c'),'name_value_list':_0x27d73c})}});}function getAuth(_0x25ccd5){return util['format']('Basic\x20%s',new Buffer(_0x25ccd5['apiKey']+':X')[_0x1e7d('0x1d')](_0x1e7d('0x1e')));}function getServerInfo(_0x9ce9b3){return request({'form':{'method':_0x1e7d('0x1f'),'input_type':_0x1e7d('0x20'),'response_type':_0x1e7d('0x20'),'rest_data':JSON[_0x1e7d('0x1b')]({'session':_0x9ce9b3['id']})}});}function getUser(_0x4962ca,_0x17e798,_0x761064){if(!_[_0x1e7d('0x21')](_0x17e798)){logger[_0x1e7d('0xb')](_0x1e7d('0x22'),_0x17e798);return request({'form':{'method':'get_entry_list','input_type':_0x1e7d('0x20'),'response_type':'JSON','rest_data':JSON[_0x1e7d('0x1b')]({'session':_0x761064['id'],'module_name':_0x1e7d('0x23'),'query':util[_0x1e7d('0x24')](_0x1e7d('0x25'),_0x17e798),'order_by':'','offset':'0','select_fields':['id',_0x1e7d('0xd'),_0x1e7d('0x26')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x1e7d('0x27')](function(_0x1b5bce){if(_0x1b5bce[_0x1e7d('0x28')][_0x1e7d('0x17')]){var _0x45434c=_[_0x1e7d('0x29')](_0x1b5bce['entry_list'],function(_0x2e7760){return _0x2e7760[_0x1e7d('0x2a')][_0x1e7d('0x26')][_0x1e7d('0x2b')]===_0x17e798;});if(_0x45434c){logger[_0x1e7d('0xb')](_0x1e7d('0x2c'));return BPromise['resolve']({'id':_0x45434c[_0x1e7d('0x2a')]['id'][_0x1e7d('0x2b')],'name':_0x45434c[_0x1e7d('0x2a')][_0x1e7d('0xd')][_0x1e7d('0x2b')]});}}logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x761064['name_value_list']['user_id'][_0x1e7d('0x2b')],'name':_0x761064[_0x1e7d('0x2a')][_0x1e7d('0x26')][_0x1e7d('0x2b')]});});}else{logger['info'](_0x1e7d('0x2d'));return BPromise[_0x1e7d('0x2e')]({'id':_0x761064['name_value_list'][_0x1e7d('0x2f')][_0x1e7d('0x2b')],'name':_0x761064['name_value_list'][_0x1e7d('0x26')][_0x1e7d('0x2b')]});}}function getEndUser(_0x13fee1,_0x2f3096,_0x43b79f,_0x10a910){logger[_0x1e7d('0xb')](_0x1e7d('0x30'),_0x43b79f);return request({'form':{'method':_0x1e7d('0x31'),'input_type':_0x1e7d('0x20'),'response_type':_0x1e7d('0x20'),'rest_data':JSON['stringify']({'session':_0x10a910['id'],'module_name':_0x1e7d('0x32'),'query':util[_0x1e7d('0x24')](_0x1e7d('0x33'),_0x43b79f),'order_by':'','offset':'0','select_fields':['id',_0x1e7d('0xd'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x53467c){if(_0x53467c[_0x1e7d('0x28')][_0x1e7d('0x17')]){var _0x4835f3=_['find'](_0x53467c[_0x1e7d('0x28')],function(_0x5a3cfe){return _0x5a3cfe[_0x1e7d('0x2a')][_0x1e7d('0x34')][_0x1e7d('0x2b')]===_0x43b79f;});if(_0x4835f3){logger['info'](_0x1e7d('0x35'));return BPromise[_0x1e7d('0x2e')]({'id':_0x4835f3[_0x1e7d('0x2a')]['id'][_0x1e7d('0x2b')],'name':_0x4835f3[_0x1e7d('0x2a')][_0x1e7d('0xd')]['value'],'phone':_0x4835f3[_0x1e7d('0x2a')][_0x1e7d('0x34')]['value']});}}else{logger[_0x1e7d('0xb')](_0x1e7d('0x36'));return request({'form':{'method':_0x1e7d('0x37'),'input_type':_0x1e7d('0x20'),'response_type':_0x1e7d('0x20'),'rest_data':JSON[_0x1e7d('0x1b')]({'session':_0x10a910['id'],'module_name':_0x1e7d('0x32'),'name_value_list':[{'name':'first_name','value':_0x2f3096!==_0x1e7d('0x38')?_0x2f3096:util['format'](_0x1e7d('0x39'),_0x43b79f)},{'name':'phone_home','value':_0x43b79f}]})}})[_0x1e7d('0x27')](function(_0x25b9bd){logger[_0x1e7d('0xb')](_0x1e7d('0x3a'));return BPromise[_0x1e7d('0x2e')]({'id':_0x25b9bd['id'],'name':_0x25b9bd[_0x1e7d('0x28')]['first_name']['value'],'phone':_0x25b9bd['entry_list']['phone_home']['value']});});}});}function request(_0xbc1d70){logger[_0x1e7d('0x3b')](_0x1e7d('0x3c'),JSON[_0x1e7d('0x1b')](_0xbc1d70));return rp(_[_0x1e7d('0x3d')](def,_0xbc1d70));}function getTags(_0xfc75bb,_0x51410f){var _0x3b092e=[];if(_0xfc75bb&&_0xfc75bb[_0x1e7d('0x17')]>0x0){_0x3b092e=_[_0x1e7d('0x3e')](_0xfc75bb,_0x51410f);}return _0x3b092e;}function getCustomFields(_0x27016a,_0x3a3832){var _0x1eb5d5=[];var _0x45852c={'custom_fields':[]};if(_0x27016a[_0x1e7d('0x17')]>0x0){_[_0x1e7d('0x18')](_0x27016a,function(_0x1180aa){if(_0x1180aa[_0x1e7d('0x3f')]===_0x1e7d('0x40')&&_0x1180aa['nameField']&&!_0x1180aa[_0x1e7d('0x41')]){_0x45852c[_0x1180aa[_0x1e7d('0x42')][_0x1e7d('0x43')]()]=_0x1180aa[_0x1e7d('0x44')][_0x1e7d('0x1d')]();}else if(_0x1180aa[_0x1e7d('0x3f')]===_0x1e7d('0x40')&&_0x1180aa[_0x1e7d('0x1a')]&&_0x1180aa['customField']){_0x45852c[_0x1e7d('0x45')][_0x1e7d('0x46')]({'id':_0x1180aa[_0x1e7d('0x1a')],'value':_0x1180aa['content']['toString']()});}else if(_0x1180aa['type']===_0x1e7d('0x47')&&_0x1180aa['variableName']&&_0x1180aa[_0x1e7d('0x1a')]&&_0x1180aa[_0x1e7d('0x41')]){_0x3a3832[_0x1180aa['variableName']]&&_0x45852c['custom_fields'][_0x1e7d('0x46')]({'id':_0x1180aa[_0x1e7d('0x1a')],'value':_0x3a3832[_0x1180aa[_0x1e7d('0x19')]][_0x1e7d('0x1d')]()});}else if(_0x1180aa[_0x1e7d('0x3f')]===_0x1e7d('0x48')&&_0x1180aa[_0x1e7d('0x49')]&&_0x1180aa[_0x1e7d('0x49')][_0x1e7d('0xd')]&&_0x1180aa['idField']&&_0x1180aa[_0x1e7d('0x41')]){_0x3a3832[_0x1180aa['Variable'][_0x1e7d('0xd')]['toLowerCase']()]&&_0x45852c['custom_fields']['push']({'id':_0x1180aa['idField'],'value':_0x3a3832[_0x1180aa['Variable'][_0x1e7d('0xd')][_0x1e7d('0x43')]()][_0x1e7d('0x1d')]()});}});}return _0x45852c;}function getConnection(_0xde568d){return request({'method':'POST','form':{'method':_0x1e7d('0x4a'),'input_type':'JSON','response_type':_0x1e7d('0x20'),'rest_data':JSON[_0x1e7d('0x1b')]({'user_auth':{'user_name':_0xde568d['username'],'password':_0xde568d[_0x1e7d('0x4b')],'encryption':_0x1e7d('0x4c')},'application':_0x1e7d('0x4d')})}})[_0x1e7d('0x27')](function(_0x350ad1){var _0x569c96=_0x350ad1;if(_0x569c96['id']){def[_0x1e7d('0x4e')]=_0x569c96['id'];return BPromise[_0x1e7d('0x2e')](_0x569c96);}else{throw new Error(util[_0x1e7d('0x24')]('Account\x20%d\x20is\x20not\x20valid',_0xde568d['id']));}});}function setRelationship(_0x15f803,_0x407d95,_0x5984a2,_0x39dd8b){return request({'form':{'method':_0x1e7d('0x4f'),'input_type':'JSON','response_type':_0x1e7d('0x20'),'rest_data':JSON[_0x1e7d('0x1b')]({'session':_0x15f803['id'],'module_name':'Calls','module_id':_0x5984a2['id'],'link_field_name':_0x39dd8b,'related_ids':[_0x407d95['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x1e7d('0x50')]=function(_0x3a4b56,_0x5b2d91,_0x4b487e,_0x2982f2,_0xfa2340,_0x415f1d){var _0x882f20,_0x195d58,_0x2b24a6,_0x35c5b5;_0x415f1d[_0x1e7d('0x51')]=intUtil[_0x1e7d('0x52')](_0x415f1d[_0x1e7d('0x51')]);_0x415f1d[_0x1e7d('0x53')]=intUtil[_0x1e7d('0x52')](_0x415f1d['serverUrl']);def[_0x1e7d('0x54')]=util[_0x1e7d('0x24')](_0x1e7d('0x55'),_0x415f1d['remoteUri']);if(_0xfa2340&&_0xfa2340['monitor_format']){logger[_0x1e7d('0xb')](_0x1e7d('0x56'),'Recording\x20is\x20enabled!');_0x5b2d91[_0x1e7d('0x57')]=util[_0x1e7d('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x415f1d[_0x1e7d('0x53')],_0x5b2d91['uniqueid'],md5(_0x5b2d91[_0x1e7d('0x58')]));}else{_0x5b2d91[_0x1e7d('0x57')]='';}return getConnection(_0x415f1d)[_0x1e7d('0x27')](function(_0x4ab6cd){_0x35c5b5=_0x4ab6cd;return getUser(_0x415f1d,_0x2982f2['name'],_0x35c5b5);})[_0x1e7d('0x27')](function(_0xef4d7d){_0x882f20=_0xef4d7d;logger[_0x1e7d('0xb')]('The\x20User\x20ID\x20is:',_0x882f20['id']);return getEndUser(_0x415f1d,_0x5b2d91[_0x1e7d('0x59')],_0x5b2d91['calleridnum'],_0x35c5b5);})[_0x1e7d('0x27')](function(_0x3525a1){_0x195d58=_0x3525a1;logger[_0x1e7d('0xb')]('The\x20Enduser\x20ID\x20is:',_0x195d58['id']);return getTicket(_0x415f1d,_0x882f20,_0x195d58,_0x4b487e,_0x5b2d91,_0x4b487e['Fields'],_0x35c5b5,_0x1e7d('0x5a'));})[_0x1e7d('0x27')](function(_0x20c909){_0x2b24a6=_0x20c909;logger[_0x1e7d('0xb')](_0x1e7d('0x5b'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x2b24a6['id']);return setRelationship(_0x35c5b5,_0x882f20,_0x2b24a6,_0x1e7d('0x5c'));})[_0x1e7d('0x27')](function(){return setRelationship(_0x35c5b5,_0x195d58,_0x2b24a6,_0x1e7d('0x5d'));})['then'](function(){return getServerInfo(_0x35c5b5);})[_0x1e7d('0x27')](function(_0x1487aa){var _0x516315=parseInt(_0x1487aa['version']['charAt'](0x0));var _0x5be67c=util['format'](_0x1e7d('0x5e'),_0x415f1d['remoteUri'],_0x2b24a6['id']);if(_0x516315>0x6){_0x5be67c=util[_0x1e7d('0x24')](_0x1e7d('0x5f'),_0x415f1d[_0x1e7d('0x51')],_0x2b24a6['id']);}logger[_0x1e7d('0xb')](_0x1e7d('0x56'),_0x1e7d('0x60'));emit(util[_0x1e7d('0x24')](_0x1e7d('0x61'),_0x2982f2[_0x1e7d('0xd')]),_0x1e7d('0x62'),{'uri':_0x5be67c});})[_0x1e7d('0x63')](function(_0x58868a){logger[_0x1e7d('0x64')](_0x1e7d('0x56'),JSON[_0x1e7d('0x1b')](_0x58868a));});};exports[_0x1e7d('0x65')]=function(_0x460ca4,_0x1e6f6a,_0x317265,_0x25a2ce,_0x2a461b,_0x565395,_0x4a60d7){var _0x4c5247,_0x2335e5,_0x142006,_0xdc7ac9;_0x565395[_0x1e7d('0x51')]=intUtil[_0x1e7d('0x52')](_0x565395[_0x1e7d('0x51')]);_0x565395[_0x1e7d('0x53')]=intUtil['stripTrailingSlash'](_0x565395[_0x1e7d('0x53')]);def[_0x1e7d('0x54')]=util['format'](_0x1e7d('0x55'),_0x565395[_0x1e7d('0x51')]);if(_0x4a60d7&&_0x4a60d7[_0x1e7d('0x66')]&&_0x4a60d7[_0x1e7d('0x66')]!=='none'){logger[_0x1e7d('0xb')](_0x1e7d('0x67'),_0x1e7d('0x68'));_0x1e6f6a['recordingURL']=util[_0x1e7d('0x24')](_0x1e7d('0x69'),_0x565395[_0x1e7d('0x53')],_0x1e6f6a[_0x1e7d('0x58')],md5(_0x1e6f6a['uniqueid']));}return getConnection(_0x565395)[_0x1e7d('0x27')](function(_0x26dde4){_0xdc7ac9=_0x26dde4;return getUser(_0x565395,_0x25a2ce['name'],_0xdc7ac9);})[_0x1e7d('0x27')](function(_0x57cfed){_0x4c5247=_0x57cfed;logger[_0x1e7d('0xb')](_0x1e7d('0x6a'),_0x4c5247['id']);return getEndUser(_0x565395,_0x1e6f6a[_0x1e7d('0x6b')],_0x1e6f6a[_0x1e7d('0x6c')],_0xdc7ac9);})['then'](function(_0x268bc8){_0x2335e5=_0x268bc8;logger[_0x1e7d('0xb')](_0x1e7d('0x6d'),_0x2335e5['id']);return getTicket(_0x565395,_0x4c5247,_0x2335e5,_0x317265,_0x1e6f6a,_0x317265[_0x1e7d('0x6e')],_0xdc7ac9,_0x1e7d('0x6f'));})[_0x1e7d('0x27')](function(_0x2e61b0){_0x142006=_0x2e61b0;logger['info']('Ticket\x20created!');logger[_0x1e7d('0xb')]('The\x20Ticket\x20ID\x20is:',_0x142006['id']);return setRelationship(_0xdc7ac9,_0x4c5247,_0x142006,_0x1e7d('0x5c'));})[_0x1e7d('0x27')](function(){return setRelationship(_0xdc7ac9,_0x2335e5,_0x142006,_0x1e7d('0x5d'));})[_0x1e7d('0x27')](function(){return getServerInfo(_0xdc7ac9);})[_0x1e7d('0x27')](function(_0x44ee4d){var _0x41d00c=parseInt(_0x44ee4d[_0x1e7d('0x70')][_0x1e7d('0x71')](0x0));var _0x1873fd=util[_0x1e7d('0x24')](_0x1e7d('0x5e'),_0x565395[_0x1e7d('0x51')],_0x142006['id']);if(_0x41d00c>0x6){_0x1873fd=util[_0x1e7d('0x24')](_0x1e7d('0x5f'),_0x565395[_0x1e7d('0x51')],_0x142006['id']);}logger[_0x1e7d('0xb')](_0x1e7d('0x67'),_0x1e7d('0x60'));emit(util[_0x1e7d('0x24')](_0x1e7d('0x61'),_0x25a2ce[_0x1e7d('0xd')]),_0x1e7d('0x62'),{'uri':_0x1873fd});})[_0x1e7d('0x63')](function(_0x2693a5){logger[_0x1e7d('0x64')](_0x1e7d('0x67'),JSON[_0x1e7d('0x1b')](_0x2693a5));});};exports[_0x1e7d('0x72')]=function(_0x3633e4,_0x1237c7,_0x5aa4b9,_0x452905,_0x27d6a8,_0x44a97e){var _0x3a183a,_0x2f543d,_0x1ad978,_0x5f022e;_0x44a97e['remoteUri']=intUtil[_0x1e7d('0x52')](_0x44a97e[_0x1e7d('0x51')]);_0x44a97e[_0x1e7d('0x53')]=intUtil[_0x1e7d('0x52')](_0x44a97e['serverUrl']);def['uri']=util[_0x1e7d('0x24')](_0x1e7d('0x55'),_0x44a97e[_0x1e7d('0x51')]);if(_0x27d6a8&&_0x27d6a8['monitor_format']){logger[_0x1e7d('0xb')]('['+_0x1237c7['lastevent']['toUpperCase']()+']',_0x1e7d('0x68'));_0x1237c7[_0x1e7d('0x57')]=util[_0x1e7d('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x44a97e[_0x1e7d('0x53')],_0x1237c7[_0x1e7d('0x58')],md5(_0x1237c7[_0x1e7d('0x58')]));}else{_0x1237c7[_0x1e7d('0x57')]='';}return getConnection(_0x44a97e)[_0x1e7d('0x27')](function(_0x209559){_0x5f022e=_0x209559;if(!_[_0x1e7d('0x21')](_0x452905)){return getUser(_0x44a97e,_0x452905[_0x1e7d('0xd')],_0x5f022e);}else{return getUser(_0x44a97e,null,_0x5f022e);}})['then'](function(_0x25f62a){_0x3a183a=_0x25f62a;logger[_0x1e7d('0xb')](_0x1e7d('0x6a'),_0x3a183a['id']);return getEndUser(_0x44a97e,_0x1237c7[_0x1e7d('0x59')],_0x1237c7['calleridnum'],_0x5f022e);})[_0x1e7d('0x27')](function(_0x4946e6){_0x2f543d=_0x4946e6;logger[_0x1e7d('0xb')](_0x1e7d('0x6d'),_0x2f543d['id']);return getTicket(_0x44a97e,_0x3a183a,_0x2f543d,_0x5aa4b9,_0x1237c7,_0x5aa4b9[_0x1e7d('0x6e')],_0x5f022e,'Inbound');})['then'](function(_0x2e818a){_0x1ad978=_0x2e818a;logger[_0x1e7d('0xb')](_0x1e7d('0x5b'));logger[_0x1e7d('0xb')]('The\x20Ticket\x20ID\x20is:',_0x1ad978['id']);return setRelationship(_0x5f022e,_0x3a183a,_0x1ad978,_0x1e7d('0x5c'));})[_0x1e7d('0x27')](function(){return setRelationship(_0x5f022e,_0x2f543d,_0x1ad978,_0x1e7d('0x5d'));})['then'](function(){return getServerInfo(_0x5f022e);})[_0x1e7d('0x63')](function(_0x427093){logger['error']('['+_0x1237c7[_0x1e7d('0x73')]['toUpperCase']()+']',JSON[_0x1e7d('0x1b')](_0x427093));});};
\ No newline at end of file
index d4a8dc4..a47009a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac63=['sortBy','push','content','type','variable','variableName','toString','Variable','name','toLowerCase','keyValue','keyType','string','key','format','%s:\x20%s','customVariable','join','slice','substring','lastIndexOf','isNil','test','lodash','util','length'];(function(_0xee95aa,_0x56bc39){var _0x301db2=function(_0x1162b1){while(--_0x1162b1){_0xee95aa['push'](_0xee95aa['shift']());}};_0x301db2(++_0x56bc39);}(_0xac63,0x7f));var _0x3ac6=function(_0x59bcb1,_0x5a4b6c){_0x59bcb1=_0x59bcb1-0x0;var _0x4a737f=_0xac63[_0x59bcb1];return _0x4a737f;};'use strict';var _=require(_0x3ac6('0x0'));var util=require(_0x3ac6('0x1'));exports['getString']=function(_0x55ff99,_0x45b115,_0x9b31ef){var _0x102e68=[];if(_0x55ff99[_0x3ac6('0x2')]>0x0){var _0x1059e9=_[_0x3ac6('0x3')](_0x55ff99,['id']);for(var _0xcd1c0d=0x0;_0xcd1c0d<_0x1059e9[_0x3ac6('0x2')];_0xcd1c0d++){var _0x873dfc=_0x1059e9[_0xcd1c0d];if(_0x873dfc['type']==='string'){_0x102e68[_0x3ac6('0x4')](_0x873dfc[_0x3ac6('0x5')]);}else if(_0x873dfc[_0x3ac6('0x6')]===_0x3ac6('0x7')&&_0x873dfc[_0x3ac6('0x8')]){_0x45b115[_0x873dfc[_0x3ac6('0x8')]]&&_0x102e68[_0x3ac6('0x4')](_0x45b115[_0x873dfc['variableName']][_0x3ac6('0x9')]());}else if(_0x873dfc[_0x3ac6('0x6')]==='customVariable'&&_0x873dfc[_0x3ac6('0xa')]&&_0x873dfc[_0x3ac6('0xa')][_0x3ac6('0xb')]){_0x45b115[_0x873dfc[_0x3ac6('0xa')][_0x3ac6('0xb')][_0x3ac6('0xc')]()]&&_0x102e68['push'](_0x45b115[_0x873dfc[_0x3ac6('0xa')]['name'][_0x3ac6('0xc')]()]['toString']());}else if(_0x873dfc[_0x3ac6('0x6')]===_0x3ac6('0xd')){if(_0x873dfc[_0x3ac6('0xe')]===_0x3ac6('0xf')&&_0x873dfc[_0x3ac6('0x10')]){_0x102e68[_0x3ac6('0x4')](util[_0x3ac6('0x11')](_0x3ac6('0x12'),_0x873dfc[_0x3ac6('0x10')],_0x873dfc['keyContent']));}else if(_0x873dfc[_0x3ac6('0xe')]===_0x3ac6('0x7')&&_0x873dfc[_0x3ac6('0x8')]&&_0x873dfc[_0x3ac6('0x10')]){_0x45b115[_0x873dfc[_0x3ac6('0x8')]]&&_0x102e68[_0x3ac6('0x4')](util[_0x3ac6('0x11')](_0x3ac6('0x12'),_0x873dfc[_0x3ac6('0x10')],_0x45b115[_0x873dfc[_0x3ac6('0x8')]]));}else if(_0x873dfc[_0x3ac6('0xe')]===_0x3ac6('0x13')&&_0x873dfc[_0x3ac6('0xa')]&&_0x873dfc[_0x3ac6('0xa')]['name']&&_0x873dfc[_0x3ac6('0x10')]){_0x45b115[_0x873dfc[_0x3ac6('0xa')][_0x3ac6('0xb')][_0x3ac6('0xc')]()]&&_0x102e68[_0x3ac6('0x4')](util['format'](_0x3ac6('0x12'),_0x873dfc[_0x3ac6('0x10')],_0x45b115[_0x873dfc[_0x3ac6('0xa')][_0x3ac6('0xb')]['toLowerCase']()]));}}}}return _0x102e68[_0x3ac6('0x14')](_0x9b31ef);};exports['stripTrailingSlash']=function(_0x37178e){var _0x5c8488=_0x37178e[_0x3ac6('0x15')](-0x1);if(_0x5c8488==='/'){_0x37178e=_0x37178e[_0x3ac6('0x16')](0x0,_0x37178e[_0x3ac6('0x17')](_0x5c8488));}return _0x37178e;};exports['validateEmail']=function(_0x154f28){if(!_[_0x3ac6('0x18')](_0x154f28)&&_0x154f28!==''){var _0x1b31f3=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x1b31f3[_0x3ac6('0x19')](String(_0x154f28)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0xff98=['name','toLowerCase','keyValue','keyType','format','%s:\x20%s','key','keyContent','join','stripTrailingSlash','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length','sortBy','type','string','content','variable','variableName','push','toString','customVariable','Variable'];(function(_0x5e865d,_0x142a3d){var _0x238a49=function(_0x4c1592){while(--_0x4c1592){_0x5e865d['push'](_0x5e865d['shift']());}};_0x238a49(++_0x142a3d);}(_0xff98,0x66));var _0x8ff9=function(_0x1eee96,_0x5a9581){_0x1eee96=_0x1eee96-0x0;var _0x42fe2a=_0xff98[_0x1eee96];return _0x42fe2a;};'use strict';var _=require(_0x8ff9('0x0'));var util=require(_0x8ff9('0x1'));exports[_0x8ff9('0x2')]=function(_0x3f915d,_0x1dae13,_0x375e76){var _0x4b61b4=[];if(_0x3f915d[_0x8ff9('0x3')]>0x0){var _0x7d53f9=_[_0x8ff9('0x4')](_0x3f915d,['id']);for(var _0x2dd750=0x0;_0x2dd750<_0x7d53f9[_0x8ff9('0x3')];_0x2dd750++){var _0x16427d=_0x7d53f9[_0x2dd750];if(_0x16427d[_0x8ff9('0x5')]===_0x8ff9('0x6')){_0x4b61b4['push'](_0x16427d[_0x8ff9('0x7')]);}else if(_0x16427d[_0x8ff9('0x5')]===_0x8ff9('0x8')&&_0x16427d[_0x8ff9('0x9')]){_0x1dae13[_0x16427d[_0x8ff9('0x9')]]&&_0x4b61b4[_0x8ff9('0xa')](_0x1dae13[_0x16427d[_0x8ff9('0x9')]][_0x8ff9('0xb')]());}else if(_0x16427d['type']===_0x8ff9('0xc')&&_0x16427d['Variable']&&_0x16427d[_0x8ff9('0xd')][_0x8ff9('0xe')]){_0x1dae13[_0x16427d[_0x8ff9('0xd')]['name'][_0x8ff9('0xf')]()]&&_0x4b61b4['push'](_0x1dae13[_0x16427d[_0x8ff9('0xd')][_0x8ff9('0xe')][_0x8ff9('0xf')]()][_0x8ff9('0xb')]());}else if(_0x16427d[_0x8ff9('0x5')]===_0x8ff9('0x10')){if(_0x16427d[_0x8ff9('0x11')]===_0x8ff9('0x6')&&_0x16427d['key']){_0x4b61b4[_0x8ff9('0xa')](util[_0x8ff9('0x12')](_0x8ff9('0x13'),_0x16427d[_0x8ff9('0x14')],_0x16427d[_0x8ff9('0x15')]));}else if(_0x16427d[_0x8ff9('0x11')]==='variable'&&_0x16427d['variableName']&&_0x16427d[_0x8ff9('0x14')]){_0x1dae13[_0x16427d[_0x8ff9('0x9')]]&&_0x4b61b4[_0x8ff9('0xa')](util[_0x8ff9('0x12')](_0x8ff9('0x13'),_0x16427d[_0x8ff9('0x14')],_0x1dae13[_0x16427d[_0x8ff9('0x9')]]));}else if(_0x16427d[_0x8ff9('0x11')]===_0x8ff9('0xc')&&_0x16427d[_0x8ff9('0xd')]&&_0x16427d[_0x8ff9('0xd')][_0x8ff9('0xe')]&&_0x16427d[_0x8ff9('0x14')]){_0x1dae13[_0x16427d[_0x8ff9('0xd')][_0x8ff9('0xe')][_0x8ff9('0xf')]()]&&_0x4b61b4[_0x8ff9('0xa')](util[_0x8ff9('0x12')](_0x8ff9('0x13'),_0x16427d[_0x8ff9('0x14')],_0x1dae13[_0x16427d['Variable'][_0x8ff9('0xe')]['toLowerCase']()]));}}}}return _0x4b61b4[_0x8ff9('0x16')](_0x375e76);};exports[_0x8ff9('0x17')]=function(_0x2fef3d){var _0xa77df1=_0x2fef3d['slice'](-0x1);if(_0xa77df1==='/'){_0x2fef3d=_0x2fef3d[_0x8ff9('0x18')](0x0,_0x2fef3d[_0x8ff9('0x19')](_0xa77df1));}return _0x2fef3d;};exports[_0x8ff9('0x1a')]=function(_0x2b5764){if(!_[_0x8ff9('0x1b')](_0x2b5764)&&_0x2b5764!==''){var _0xa4466e=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0xa4466e[_0x8ff9('0x1c')](String(_0x2b5764)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 41cc5fe..94c1546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x35926e,_0x4111e2){var _0x1c1361=function(_0x1a9f9f){while(--_0x1a9f9f){_0x35926e['push'](_0x35926e['shift']());}};_0x1c1361(++_0x4111e2);}(_0x34e8,0x12c));var _0x834e=function(_0xff900d,_0x598464){_0xff900d=_0xff900d-0x0;var _0x51528c=_0x34e8[_0xff900d];return _0x51528c;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 7df1c27..bdb2a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7df4=['user:%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','./util','../../../../config/logger','redis','defaults','localhost','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','getString','Subjects','Descriptions','Fields','then','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','Enduser\x20found!','%s/users.json','end-user','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','custom_fields','push','idField','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','none','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','newTab'];(function(_0x30e7d3,_0xcb5fcf){var _0x3bb3d1=function(_0x5424a3){while(--_0x5424a3){_0x30e7d3['push'](_0x30e7d3['shift']());}};_0x3bb3d1(++_0xcb5fcf);}(_0x7df4,0x1c2));var _0x47df=function(_0x41492e,_0x371c30){_0x41492e=_0x41492e-0x0;var _0x57ad15=_0x7df4[_0x41492e];return _0x57ad15;};'use strict';var _=require('lodash');var rp=require(_0x47df('0x0'));var md5=require(_0x47df('0x1'));var util=require(_0x47df('0x2'));var Redis=require(_0x47df('0x3'));var intUtil=require(_0x47df('0x4'));var config=require('../../../../config/environment');var logger=require(_0x47df('0x5'))('zendesk');config[_0x47df('0x6')]=_[_0x47df('0x7')](config[_0x47df('0x6')],{'host':_0x47df('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x16e372,_0x3240ed,_0x51b020){io['to'](_0x16e372)[_0x47df('0x9')](_0x3240ed,_0x51b020);}var headers={'Content-Type':_0x47df('0xa'),'Accept':_0x47df('0xa')};function getTicket(_0x1ecac1,_0x2c86b8,_0x341c6b,_0x3fd26d,_0x5c8ee1){logger[_0x47df('0xb')](_0x47df('0xc'));return request({'uri':util[_0x47df('0xd')](_0x47df('0xe'),_0x1ecac1[_0x47df('0xf')]),'method':_0x47df('0x10'),'body':{'ticket':_['merge']({'requester_id':_0x341c6b['id'],'submitter_id':_0x2c86b8?_0x2c86b8['id']:undefined,'assignee_id':_0x2c86b8?_0x2c86b8['id']:undefined,'tags':getTags(_0x3fd26d['Tags'],'name'),'subject':intUtil[_0x47df('0x11')](_0x3fd26d[_0x47df('0x12')],_0x5c8ee1,'\x20'),'description':intUtil[_0x47df('0x11')](_0x3fd26d[_0x47df('0x13')],_0x5c8ee1,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x3fd26d[_0x47df('0x13')],_0x5c8ee1,'\x0a')}},getCustomFields(_0x3fd26d[_0x47df('0x14')],_0x5c8ee1))}})[_0x47df('0x15')](function(_0x552f32){logger['info']('Ticket\x20created!');return _0x552f32['ticket'];});}function getUser(_0x28a747,_0x3a7ea7){if(intUtil[_0x47df('0x16')](_0x3a7ea7)){logger[_0x47df('0xb')](_0x47df('0x17'),_0x3a7ea7);return request({'uri':util['format'](_0x47df('0x18'),_0x28a747[_0x47df('0xf')]),'qs':{'query':util[_0x47df('0xd')](_0x47df('0x19'),_0x3a7ea7)}})['then'](function(_0x3aab74){if(_0x3aab74[_0x47df('0x1a')]){logger[_0x47df('0xb')]('Agent\x20found!');return _[_0x47df('0x1b')](_0x3aab74[_0x47df('0x1c')],{'email':_0x3a7ea7,'role':_0x47df('0x1d')});}else{logger[_0x47df('0xb')](_0x47df('0x1e'));return request({'uri':util[_0x47df('0xd')]('%s/users/me.json',_0x28a747[_0x47df('0xf')])})[_0x47df('0x15')](function(_0x46ba35){logger[_0x47df('0xb')](_0x47df('0x1f'));return _0x46ba35[_0x47df('0x20')];});}});}else{logger['info'](_0x47df('0x1e'));return request({'uri':util[_0x47df('0xd')]('%s/users/me.json',_0x28a747[_0x47df('0xf')])})[_0x47df('0x15')](function(_0x51415d){logger['info']('Admin\x20account\x20selected.');return _0x51415d['user'];});}}function getEndUser(_0x1d6bde,_0x3dd14f,_0x32b913){logger[_0x47df('0xb')](_0x47df('0x21'),_0x32b913);return request({'uri':util[_0x47df('0xd')](_0x47df('0x18'),_0x1d6bde['remoteUri']),'qs':{'query':util[_0x47df('0xd')](_0x47df('0x22'),_0x32b913)}})['then'](function(_0x1200d8){var _0xfe62;if(_0x1200d8[_0x47df('0x1c')][_0x47df('0x23')]){_0x1200d8[_0x47df('0x1c')]=_['filter'](_0x1200d8[_0x47df('0x1c')],{'suspended':![],'role':'end-user'});if(_0x1200d8[_0x47df('0x1c')]['length']){_0xfe62=_['first'](_0x1200d8[_0x47df('0x1c')]);}}if(_0xfe62){logger['info'](_0x47df('0x24'));return _0xfe62;}else{logger[_0x47df('0xb')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x47df('0xd')](_0x47df('0x25'),_0x1d6bde['remoteUri']),'method':'POST','body':{'user':{'role':_0x47df('0x26'),'name':util[_0x47df('0xd')]('Caller\x20-\x20%s',_0x3dd14f||_0x32b913),'phone':_0x32b913}}})[_0x47df('0x15')](function(_0x54858a){logger[_0x47df('0xb')](_0x47df('0x27'));return _0x54858a[_0x47df('0x20')];});}});}function getAuth(_0x318797){var _0x452be5;if(_0x318797[_0x47df('0x28')]===_0x47df('0x29')){_0x452be5=util[_0x47df('0xd')](_0x47df('0x2a'),_0x318797[_0x47df('0x2b')],_0x318797[_0x47df('0x29')]);}else if(_0x318797['authType']===_0x47df('0x2c')){_0x452be5=util[_0x47df('0xd')](_0x47df('0x2d'),_0x318797[_0x47df('0x2b')],_0x318797['token']);}return util[_0x47df('0xd')](_0x47df('0x2e'),new Buffer(_0x452be5)[_0x47df('0x2f')](_0x47df('0x30')));}function request(_0x43b3cd){logger[_0x47df('0x31')](_0x47df('0x32'),JSON[_0x47df('0x33')](_0x43b3cd));return rp(_['defaults'](_0x43b3cd,{'method':_0x47df('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x23e364,_0x133ecb){var _0x1db0eb=[];if(_0x23e364&&_0x23e364[_0x47df('0x23')]>0x0){_0x1db0eb=_[_0x47df('0x35')](_0x23e364,_0x133ecb);}return _0x1db0eb;}function getCustomFields(_0x3ec795,_0x3131e6){var _0x37c40f=[];var _0x44de6a={'custom_fields':[]};if(_0x3ec795[_0x47df('0x23')]>0x0){_[_0x47df('0x36')](_0x3ec795,function(_0x374d3e){if(_[_0x47df('0x37')]([_0x47df('0x38'),_0x47df('0x39')],_0x374d3e[_0x47df('0x3a')])&&_0x374d3e[_0x47df('0x3b')]&&!_0x374d3e[_0x47df('0x3c')]){_0x44de6a[_0x374d3e[_0x47df('0x3b')][_0x47df('0x3d')]()]=_0x374d3e[_0x47df('0x3e')][_0x47df('0x2f')]();}else if(_[_0x47df('0x37')]([_0x47df('0x38'),_0x47df('0x39')],_0x374d3e[_0x47df('0x3a')])&&_0x374d3e['idField']&&_0x374d3e[_0x47df('0x3c')]){_0x44de6a[_0x47df('0x3f')][_0x47df('0x40')]({'id':_0x374d3e[_0x47df('0x41')],'value':_0x374d3e[_0x47df('0x3e')][_0x47df('0x2f')]()});}else if(_0x374d3e['type']===_0x47df('0x42')&&_0x374d3e['variableName']&&_0x374d3e['idField']&&_0x374d3e[_0x47df('0x3c')]){_0x3131e6[_0x374d3e[_0x47df('0x43')]]&&_0x44de6a[_0x47df('0x3f')][_0x47df('0x40')]({'id':_0x374d3e['idField'],'value':_0x3131e6[_0x374d3e[_0x47df('0x43')]][_0x47df('0x2f')]()});}else if(_0x374d3e[_0x47df('0x3a')]===_0x47df('0x44')&&_0x374d3e[_0x47df('0x45')]&&_0x374d3e['Variable'][_0x47df('0x46')]&&_0x374d3e[_0x47df('0x41')]&&_0x374d3e['customField']){_0x3131e6[_0x374d3e['Variable'][_0x47df('0x46')][_0x47df('0x3d')]()]&&_0x44de6a['custom_fields'][_0x47df('0x40')]({'id':_0x374d3e[_0x47df('0x41')],'value':_0x3131e6[_0x374d3e[_0x47df('0x45')][_0x47df('0x46')][_0x47df('0x3d')]()][_0x47df('0x2f')]()});}});}return _0x44de6a;}exports[_0x47df('0x47')]=function(_0xdc8e24,_0x1be973,_0x39a508,_0x5601b5,_0x9b9b4,_0x38001b){var _0xc1d027,_0x2dfd6f;_0x38001b[_0x47df('0xf')]=intUtil[_0x47df('0x48')](_0x38001b[_0x47df('0xf')]);_0x38001b['serverUrl']=intUtil['stripTrailingSlash'](_0x38001b[_0x47df('0x49')]);if(_0x9b9b4&&_0x9b9b4[_0x47df('0x4a')]){logger[_0x47df('0xb')](_0x47df('0x4b'),'Recording\x20is\x20enabled!');_0x1be973['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x38001b[_0x47df('0x49')],_0x1be973[_0x47df('0x4c')],md5(_0x1be973['uniqueid']));}else{_0x1be973[_0x47df('0x4d')]='';}headers[_0x47df('0x4e')]=getAuth(_0x38001b);return getUser(_0x38001b,_0x5601b5[_0x47df('0x4f')])[_0x47df('0x15')](function(_0x17688f){_0xc1d027=_0x17688f;logger[_0x47df('0xb')](_0x47df('0x50'),_0xc1d027['id']);return getEndUser(_0x38001b,_0x1be973[_0x47df('0x51')],_0x1be973['calleridnum']);})['then'](function(_0x15b0d3){_0x2dfd6f=_0x15b0d3;logger[_0x47df('0xb')](_0x47df('0x52'),_0x2dfd6f['id']);return getTicket(_0x38001b,_0xc1d027,_0x2dfd6f,_0x39a508,_0x1be973);})[_0x47df('0x15')](function(_0x6783bc){if(_0x6783bc){logger[_0x47df('0xb')]('The\x20Ticket\x20ID\x20is:',_0x6783bc['id']);switch(_0x38001b[_0x47df('0x3a')]){case _0x47df('0x53'):logger[_0x47df('0xb')](_0x47df('0x4b'),_0x47df('0x54'));return request({'uri':util[_0x47df('0xd')](_0x47df('0x55'),_0x38001b['remoteUri'],_0xc1d027['id'],_0x6783bc['id']),'method':_0x47df('0x10')});case'newTab':logger[_0x47df('0xb')](_0x47df('0x4b'),_0x47df('0x56'));emit(util['format']('user:%s',_0x5601b5[_0x47df('0x46')]),_0x47df('0x57'),{'uri':util['format'](_0x47df('0x58'),_0x38001b[_0x47df('0xf')][_0x47df('0x59')](_0x47df('0x5a'),''),_0x6783bc['id'])});break;default:logger['error'](_0x47df('0x4b'),_0x47df('0x5b'));}}})[_0x47df('0x5c')](function(_0x3cb953){logger[_0x47df('0x5d')](_0x47df('0x5e'),util[_0x47df('0x5f')](_0x3cb953,{'showHidden':!![],'depth':null}));});};exports[_0x47df('0x60')]=function(_0x126250,_0x21b2e4,_0x351c6f,_0x18e5f1,_0x299f63,_0x28ee41,_0x57ee0b){var _0x2cab11,_0x56bae0;_0x28ee41[_0x47df('0xf')]=intUtil[_0x47df('0x48')](_0x28ee41[_0x47df('0xf')]);_0x28ee41['serverUrl']=intUtil['stripTrailingSlash'](_0x28ee41[_0x47df('0x49')]);if(_0x57ee0b&&_0x57ee0b['recordingFormat']&&_0x57ee0b['recordingFormat']!==_0x47df('0x61')){logger['info'](_0x47df('0x62'),_0x47df('0x63'));_0x21b2e4['recordingURL']=util[_0x47df('0xd')](_0x47df('0x64'),_0x28ee41['serverUrl'],_0x21b2e4['uniqueid'],md5(_0x21b2e4[_0x47df('0x4c')]));}headers[_0x47df('0x4e')]=getAuth(_0x28ee41);return getUser(_0x28ee41,_0x18e5f1[_0x47df('0x4f')])['then'](function(_0x3bcd5b){_0x2cab11=_0x3bcd5b;logger[_0x47df('0xb')]('The\x20User\x20ID\x20is:',_0x2cab11['id']);return getEndUser(_0x28ee41,_0x21b2e4[_0x47df('0x65')],_0x21b2e4[_0x47df('0x66')]);})[_0x47df('0x15')](function(_0x1cec09){_0x56bae0=_0x1cec09;logger['info']('The\x20Enduser\x20ID\x20is:',_0x56bae0['id']);return getTicket(_0x28ee41,_0x2cab11,_0x56bae0,_0x351c6f,_0x21b2e4);})[_0x47df('0x15')](function(_0x4cb05c){if(_0x4cb05c){logger[_0x47df('0xb')](_0x47df('0x67'),_0x4cb05c['id']);switch(_0x28ee41['type']){case _0x47df('0x53'):logger[_0x47df('0xb')](_0x47df('0x62'),_0x47df('0x54'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x28ee41[_0x47df('0xf')],_0x2cab11['id'],_0x4cb05c['id']),'method':_0x47df('0x10')});case _0x47df('0x68'):logger[_0x47df('0xb')](_0x47df('0x62'),_0x47df('0x56'));emit(util['format'](_0x47df('0x69'),_0x18e5f1[_0x47df('0x46')]),'trigger:browser:url',{'uri':util[_0x47df('0xd')](_0x47df('0x58'),_0x28ee41['remoteUri']['replace'](_0x47df('0x5a'),''),_0x4cb05c['id'])});break;default:logger['error'](_0x47df('0x62'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x4b95eb){logger[_0x47df('0x5d')](_0x47df('0x6a'),util[_0x47df('0x5f')](_0x4b95eb,{'showHidden':!![],'depth':null}));});};exports[_0x47df('0x6b')]=function(_0x4a8a73,_0x51346f,_0x17c2fc,_0x5298bd,_0x1f2566,_0x5e2271){var _0x2409bd,_0x3f6625;_0x5e2271[_0x47df('0xf')]=intUtil[_0x47df('0x48')](_0x5e2271[_0x47df('0xf')]);_0x5e2271[_0x47df('0x49')]=intUtil[_0x47df('0x48')](_0x5e2271[_0x47df('0x49')]);if(_0x1f2566&&_0x1f2566[_0x47df('0x4a')]){logger[_0x47df('0xb')]('['+_0x51346f[_0x47df('0x6c')]['toUpperCase']()+']',_0x47df('0x63'));_0x51346f[_0x47df('0x4d')]=util[_0x47df('0xd')](_0x47df('0x64'),_0x5e2271[_0x47df('0x49')],_0x51346f['uniqueid'],md5(_0x51346f[_0x47df('0x4c')]));}else{_0x51346f[_0x47df('0x4d')]='';}headers[_0x47df('0x4e')]=getAuth(_0x5e2271);return getUser(_0x5e2271)[_0x47df('0x15')](function(_0x38b30d){_0x2409bd=_0x38b30d;logger[_0x47df('0xb')](_0x47df('0x50'),_0x2409bd['id']);return getEndUser(_0x5e2271,_0x51346f[_0x47df('0x51')],_0x51346f['calleridnum']);})[_0x47df('0x15')](function(_0xfd79be){_0x3f6625=_0xfd79be;logger[_0x47df('0xb')](_0x47df('0x52'),_0x3f6625['id']);return getTicket(_0x5e2271,_0x2409bd,_0x3f6625,_0x17c2fc,_0x51346f);})[_0x47df('0x15')](function(_0x5665e1){if(_0x5665e1){logger[_0x47df('0xb')]('The\x20Ticket\x20ID\x20is:',_0x5665e1['id']);}})[_0x47df('0x5c')](function(_0x573691){logger[_0x47df('0x5d')]('['+_0x51346f[_0x47df('0x6c')][_0x47df('0x6d')]()+']'+_0x47df('0x6e'),util['inspect'](_0x573691,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x41d9=['newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','replace','catch','error','inspect','outbound','recordingFormat','none','[OUTBOUND]','email','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','%s/channels/voice/agents/%d/tickets/%d/display.json','trigger:browser:url','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','emit','application/json','info','format','%s/tickets.json','remoteUri','POST','name','getString','Descriptions','Fields','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','then','count','Agent\x20found!','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','%s/users/me.json','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','length','filter','end-user','first','Enduser\x20found!','%s/users.json','Enduser\x20created.','authType','password','username','token','%s/token:%s','Basic\x20%s','toString','base64','debug','[HTTP]','GET','map','forEach','includes','string','picklist','type','nameField','toLowerCase','content','idField','push','variable','variableName','customVariable','Variable','customField','custom_fields','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...'];(function(_0x1819ce,_0x2e1ba){var _0xd0b243=function(_0x330956){while(--_0x330956){_0x1819ce['push'](_0x1819ce['shift']());}};_0xd0b243(++_0x2e1ba);}(_0x41d9,0x89));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x941d('0x0'));var rp=require(_0x941d('0x1'));var md5=require(_0x941d('0x2'));var util=require(_0x941d('0x3'));var Redis=require(_0x941d('0x4'));var intUtil=require(_0x941d('0x5'));var config=require(_0x941d('0x6'));var logger=require(_0x941d('0x7'))(_0x941d('0x8'));config[_0x941d('0x9')]=_[_0x941d('0xa')](config['redis'],{'host':_0x941d('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x941d('0x9')]));function emit(_0xbe34e0,_0x23ee44,_0x1e5410){io['to'](_0xbe34e0)[_0x941d('0xc')](_0x23ee44,_0x1e5410);}var headers={'Content-Type':_0x941d('0xd'),'Accept':_0x941d('0xd')};function getTicket(_0x2b50ca,_0x11dc02,_0x20d31f,_0x20cff9,_0x17df48){logger[_0x941d('0xe')]('Creating\x20new\x20ticket...');return request({'uri':util[_0x941d('0xf')](_0x941d('0x10'),_0x2b50ca[_0x941d('0x11')]),'method':_0x941d('0x12'),'body':{'ticket':_['merge']({'requester_id':_0x20d31f['id'],'submitter_id':_0x11dc02?_0x11dc02['id']:undefined,'assignee_id':_0x11dc02?_0x11dc02['id']:undefined,'tags':getTags(_0x20cff9['Tags'],_0x941d('0x13')),'subject':intUtil[_0x941d('0x14')](_0x20cff9['Subjects'],_0x17df48,'\x20'),'description':intUtil[_0x941d('0x14')](_0x20cff9[_0x941d('0x15')],_0x17df48,'\x0a'),'comment':{'public':![],'body':intUtil[_0x941d('0x14')](_0x20cff9[_0x941d('0x15')],_0x17df48,'\x0a')}},getCustomFields(_0x20cff9[_0x941d('0x16')],_0x17df48))}})['then'](function(_0x45e88d){logger[_0x941d('0xe')](_0x941d('0x17'));return _0x45e88d['ticket'];});}function getUser(_0x225477,_0x24440f){if(intUtil[_0x941d('0x18')](_0x24440f)){logger[_0x941d('0xe')](_0x941d('0x19'),_0x24440f);return request({'uri':util[_0x941d('0xf')](_0x941d('0x1a'),_0x225477['remoteUri']),'qs':{'query':util[_0x941d('0xf')](_0x941d('0x1b'),_0x24440f)}})[_0x941d('0x1c')](function(_0x2dbf96){if(_0x2dbf96[_0x941d('0x1d')]){logger['info'](_0x941d('0x1e'));return _[_0x941d('0x1f')](_0x2dbf96[_0x941d('0x20')],{'email':_0x24440f,'role':'agent'});}else{logger['info'](_0x941d('0x21'));return request({'uri':util['format']('%s/users/me.json',_0x225477[_0x941d('0x11')])})[_0x941d('0x1c')](function(_0x6f80d5){logger['info']('Admin\x20account\x20selected.');return _0x6f80d5[_0x941d('0x22')];});}});}else{logger[_0x941d('0xe')](_0x941d('0x21'));return request({'uri':util['format'](_0x941d('0x23'),_0x225477[_0x941d('0x11')])})[_0x941d('0x1c')](function(_0x20d3e7){logger['info'](_0x941d('0x24'));return _0x20d3e7[_0x941d('0x22')];});}}function getEndUser(_0x89c411,_0x5cb42b,_0x4726b0){logger[_0x941d('0xe')](_0x941d('0x25'),_0x4726b0);return request({'uri':util[_0x941d('0xf')](_0x941d('0x1a'),_0x89c411['remoteUri']),'qs':{'query':util[_0x941d('0xf')]('type:user\x20role:end-user\x20phone:%s',_0x4726b0)}})[_0x941d('0x1c')](function(_0x451917){var _0x6c49a5;if(_0x451917[_0x941d('0x20')][_0x941d('0x26')]){_0x451917[_0x941d('0x20')]=_[_0x941d('0x27')](_0x451917[_0x941d('0x20')],{'suspended':![],'role':_0x941d('0x28')});if(_0x451917[_0x941d('0x20')]['length']){_0x6c49a5=_[_0x941d('0x29')](_0x451917[_0x941d('0x20')]);}}if(_0x6c49a5){logger[_0x941d('0xe')](_0x941d('0x2a'));return _0x6c49a5;}else{logger[_0x941d('0xe')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x941d('0xf')](_0x941d('0x2b'),_0x89c411['remoteUri']),'method':_0x941d('0x12'),'body':{'user':{'role':_0x941d('0x28'),'name':util[_0x941d('0xf')]('Caller\x20-\x20%s',_0x5cb42b||_0x4726b0),'phone':_0x4726b0}}})['then'](function(_0x39ddab){logger[_0x941d('0xe')](_0x941d('0x2c'));return _0x39ddab['user'];});}});}function getAuth(_0x4fd026){var _0x79484f;if(_0x4fd026[_0x941d('0x2d')]===_0x941d('0x2e')){_0x79484f=util[_0x941d('0xf')]('%s:%s',_0x4fd026[_0x941d('0x2f')],_0x4fd026['password']);}else if(_0x4fd026[_0x941d('0x2d')]===_0x941d('0x30')){_0x79484f=util[_0x941d('0xf')](_0x941d('0x31'),_0x4fd026[_0x941d('0x2f')],_0x4fd026['token']);}return util[_0x941d('0xf')](_0x941d('0x32'),new Buffer(_0x79484f)[_0x941d('0x33')](_0x941d('0x34')));}function request(_0x3c418b){logger[_0x941d('0x35')](_0x941d('0x36'),JSON['stringify'](_0x3c418b));return rp(_[_0x941d('0xa')](_0x3c418b,{'method':_0x941d('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x8f08d2,_0x259230){var _0x3acdc1=[];if(_0x8f08d2&&_0x8f08d2[_0x941d('0x26')]>0x0){_0x3acdc1=_[_0x941d('0x38')](_0x8f08d2,_0x259230);}return _0x3acdc1;}function getCustomFields(_0x423ccf,_0x3a1415){var _0x3ea36b=[];var _0x231dd1={'custom_fields':[]};if(_0x423ccf[_0x941d('0x26')]>0x0){_[_0x941d('0x39')](_0x423ccf,function(_0x4406bd){if(_[_0x941d('0x3a')]([_0x941d('0x3b'),_0x941d('0x3c')],_0x4406bd[_0x941d('0x3d')])&&_0x4406bd[_0x941d('0x3e')]&&!_0x4406bd['customField']){_0x231dd1[_0x4406bd['nameField'][_0x941d('0x3f')]()]=_0x4406bd[_0x941d('0x40')][_0x941d('0x33')]();}else if(_[_0x941d('0x3a')](['string',_0x941d('0x3c')],_0x4406bd[_0x941d('0x3d')])&&_0x4406bd[_0x941d('0x41')]&&_0x4406bd['customField']){_0x231dd1['custom_fields'][_0x941d('0x42')]({'id':_0x4406bd[_0x941d('0x41')],'value':_0x4406bd[_0x941d('0x40')][_0x941d('0x33')]()});}else if(_0x4406bd[_0x941d('0x3d')]===_0x941d('0x43')&&_0x4406bd[_0x941d('0x44')]&&_0x4406bd[_0x941d('0x41')]&&_0x4406bd['customField']){_0x3a1415[_0x4406bd[_0x941d('0x44')]]&&_0x231dd1['custom_fields'][_0x941d('0x42')]({'id':_0x4406bd['idField'],'value':_0x3a1415[_0x4406bd[_0x941d('0x44')]][_0x941d('0x33')]()});}else if(_0x4406bd[_0x941d('0x3d')]===_0x941d('0x45')&&_0x4406bd[_0x941d('0x46')]&&_0x4406bd[_0x941d('0x46')][_0x941d('0x13')]&&_0x4406bd[_0x941d('0x41')]&&_0x4406bd[_0x941d('0x47')]){_0x3a1415[_0x4406bd[_0x941d('0x46')][_0x941d('0x13')][_0x941d('0x3f')]()]&&_0x231dd1[_0x941d('0x48')]['push']({'id':_0x4406bd[_0x941d('0x41')],'value':_0x3a1415[_0x4406bd[_0x941d('0x46')][_0x941d('0x13')][_0x941d('0x3f')]()][_0x941d('0x33')]()});}});}return _0x231dd1;}exports[_0x941d('0x49')]=function(_0x503fff,_0xbdbb50,_0x55f373,_0x31c18d,_0x2993eb,_0x5c3b0f){var _0x18bbb7,_0x450a0d;_0x5c3b0f['remoteUri']=intUtil[_0x941d('0x4a')](_0x5c3b0f['remoteUri']);_0x5c3b0f[_0x941d('0x4b')]=intUtil[_0x941d('0x4a')](_0x5c3b0f[_0x941d('0x4b')]);if(_0x2993eb&&_0x2993eb[_0x941d('0x4c')]){logger[_0x941d('0xe')](_0x941d('0x4d'),_0x941d('0x4e'));_0xbdbb50[_0x941d('0x4f')]=util[_0x941d('0xf')](_0x941d('0x50'),_0x5c3b0f[_0x941d('0x4b')],_0xbdbb50['uniqueid'],md5(_0xbdbb50[_0x941d('0x51')]));}else{_0xbdbb50[_0x941d('0x4f')]='';}headers[_0x941d('0x52')]=getAuth(_0x5c3b0f);return getUser(_0x5c3b0f,_0x31c18d['email'])[_0x941d('0x1c')](function(_0x18a4fe){_0x18bbb7=_0x18a4fe;logger[_0x941d('0xe')](_0x941d('0x53'),_0x18bbb7['id']);return getEndUser(_0x5c3b0f,_0xbdbb50[_0x941d('0x54')],_0xbdbb50[_0x941d('0x55')]);})[_0x941d('0x1c')](function(_0x179c2b){_0x450a0d=_0x179c2b;logger[_0x941d('0xe')]('The\x20Enduser\x20ID\x20is:',_0x450a0d['id']);return getTicket(_0x5c3b0f,_0x18bbb7,_0x450a0d,_0x55f373,_0xbdbb50);})['then'](function(_0x2c219e){if(_0x2c219e){logger[_0x941d('0xe')](_0x941d('0x56'),_0x2c219e['id']);switch(_0x5c3b0f[_0x941d('0x3d')]){case _0x941d('0x57'):logger[_0x941d('0xe')](_0x941d('0x4d'),_0x941d('0x58'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x5c3b0f[_0x941d('0x11')],_0x18bbb7['id'],_0x2c219e['id']),'method':_0x941d('0x12')});case _0x941d('0x59'):logger[_0x941d('0xe')]('[QUEUE]',_0x941d('0x5a'));emit(util[_0x941d('0xf')](_0x941d('0x5b'),_0x31c18d[_0x941d('0x13')]),'trigger:browser:url',{'uri':util[_0x941d('0xf')]('%s/agent/tickets/%s',_0x5c3b0f[_0x941d('0x11')][_0x941d('0x5c')]('/api/v2',''),_0x2c219e['id'])});break;default:logger['error']('[QUEUE]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x941d('0x5d')](function(_0x58195e){logger[_0x941d('0x5e')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x941d('0x5f')](_0x58195e,{'showHidden':!![],'depth':null}));});};exports[_0x941d('0x60')]=function(_0x3ff472,_0x51e2b0,_0x1a3d35,_0x551759,_0x236980,_0x1b1b4b,_0x61c235){var _0x3b92e2,_0x22f8b5;_0x1b1b4b[_0x941d('0x11')]=intUtil[_0x941d('0x4a')](_0x1b1b4b[_0x941d('0x11')]);_0x1b1b4b[_0x941d('0x4b')]=intUtil['stripTrailingSlash'](_0x1b1b4b[_0x941d('0x4b')]);if(_0x61c235&&_0x61c235[_0x941d('0x61')]&&_0x61c235['recordingFormat']!==_0x941d('0x62')){logger[_0x941d('0xe')](_0x941d('0x63'),_0x941d('0x4e'));_0x51e2b0[_0x941d('0x4f')]=util['format'](_0x941d('0x50'),_0x1b1b4b['serverUrl'],_0x51e2b0['uniqueid'],md5(_0x51e2b0[_0x941d('0x51')]));}headers['Authorization']=getAuth(_0x1b1b4b);return getUser(_0x1b1b4b,_0x551759[_0x941d('0x64')])['then'](function(_0x1c413b){_0x3b92e2=_0x1c413b;logger['info'](_0x941d('0x53'),_0x3b92e2['id']);return getEndUser(_0x1b1b4b,_0x51e2b0[_0x941d('0x65')],_0x51e2b0[_0x941d('0x66')]);})[_0x941d('0x1c')](function(_0x5374de){_0x22f8b5=_0x5374de;logger['info'](_0x941d('0x67'),_0x22f8b5['id']);return getTicket(_0x1b1b4b,_0x3b92e2,_0x22f8b5,_0x1a3d35,_0x51e2b0);})[_0x941d('0x1c')](function(_0xf9b90){if(_0xf9b90){logger['info'](_0x941d('0x56'),_0xf9b90['id']);switch(_0x1b1b4b[_0x941d('0x3d')]){case _0x941d('0x57'):logger['info'](_0x941d('0x63'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x941d('0xf')](_0x941d('0x68'),_0x1b1b4b[_0x941d('0x11')],_0x3b92e2['id'],_0xf9b90['id']),'method':'POST'});case'newTab':logger[_0x941d('0xe')](_0x941d('0x63'),_0x941d('0x5a'));emit(util['format'](_0x941d('0x5b'),_0x551759['name']),_0x941d('0x69'),{'uri':util[_0x941d('0xf')]('%s/agent/tickets/%s',_0x1b1b4b[_0x941d('0x11')]['replace'](_0x941d('0x6a'),''),_0xf9b90['id'])});break;default:logger['error'](_0x941d('0x63'),_0x941d('0x6b'));}}})['catch'](function(_0x5e86c4){logger[_0x941d('0x5e')](_0x941d('0x6c'),util[_0x941d('0x5f')](_0x5e86c4,{'showHidden':!![],'depth':null}));});};exports[_0x941d('0x6d')]=function(_0x5cc80a,_0x1def1c,_0x39be86,_0x394b5e,_0x130f45,_0x407748){var _0x259415,_0x9f00ef;_0x407748[_0x941d('0x11')]=intUtil[_0x941d('0x4a')](_0x407748[_0x941d('0x11')]);_0x407748[_0x941d('0x4b')]=intUtil[_0x941d('0x4a')](_0x407748[_0x941d('0x4b')]);if(_0x130f45&&_0x130f45[_0x941d('0x4c')]){logger[_0x941d('0xe')]('['+_0x1def1c[_0x941d('0x6e')][_0x941d('0x6f')]()+']',_0x941d('0x4e'));_0x1def1c[_0x941d('0x4f')]=util[_0x941d('0xf')](_0x941d('0x50'),_0x407748[_0x941d('0x4b')],_0x1def1c[_0x941d('0x51')],md5(_0x1def1c[_0x941d('0x51')]));}else{_0x1def1c[_0x941d('0x4f')]='';}headers[_0x941d('0x52')]=getAuth(_0x407748);return getUser(_0x407748)['then'](function(_0xfa824b){_0x259415=_0xfa824b;logger[_0x941d('0xe')](_0x941d('0x53'),_0x259415['id']);return getEndUser(_0x407748,_0x1def1c['calleridname'],_0x1def1c['calleridnum']);})[_0x941d('0x1c')](function(_0x31523a){_0x9f00ef=_0x31523a;logger['info'](_0x941d('0x67'),_0x9f00ef['id']);return getTicket(_0x407748,_0x259415,_0x9f00ef,_0x39be86,_0x1def1c);})[_0x941d('0x1c')](function(_0x87cab9){if(_0x87cab9){logger[_0x941d('0xe')](_0x941d('0x56'),_0x87cab9['id']);}})['catch'](function(_0x5561d4){logger[_0x941d('0x5e')]('['+_0x1def1c[_0x941d('0x6e')][_0x941d('0x6f')]()+']'+_0x941d('0x70'),util[_0x941d('0x5f')](_0x5561d4,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 2d305ed..3c3f325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c1=['length','forEach','includes','string','picklist','type','idField','variableName','customVariable','Variable','name','indexOf','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','refreshToken','clientId','clientSecret','refresh_token','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','then','users','isArrayLikeObject','findIndex','info','Agent\x20found!','profile','Administrator','Using\x20the\x20admin\x20account!','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','SUCCESS','details','Error:\x20','log','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Contacts','lead','Creating\x20new\x20call...','administrator','Subject','Subjects','Description','getString','Who_Id','Full_Name','Last_Name','First_Name','$se_module','talktime','utc','mm:ss','answertime','Call_Duration','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Called','complete','connect','Call_Result','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','Fields','/crm/v2/Calls','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','recordingURL','zoho.eu','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','[OUTBOUND]','/downloads?type=uniqueid&token=','com','destcalleridname','destcalleridnum','Outbound','calleridname','toUpperCase','lodash','request-promise','util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','defaults','localhost','socket.io-emitter','redis','debug','[HTTP]','stringify'];(function(_0x217419,_0x2ab9be){var _0x5bb4ed=function(_0x2cb45d){while(--_0x2cb45d){_0x217419['push'](_0x217419['shift']());}};_0x5bb4ed(++_0x2ab9be);}(_0xb1c1,0x1c7));var _0x1b1c=function(_0x2e6a62,_0x33da4b){_0x2e6a62=_0x2e6a62-0x0;var _0x5b14b5=_0xb1c1[_0x2e6a62];return _0x5b14b5;};'use strict';var _=require(_0x1b1c('0x0'));var rp=require(_0x1b1c('0x1'));var md5=require('md5');var util=require(_0x1b1c('0x2'));var intUtil=require('./util');var moment=require(_0x1b1c('0x3'));var Redis=require(_0x1b1c('0x4'));var BPromise=require(_0x1b1c('0x5'));var config=require(_0x1b1c('0x6'));var logger=require(_0x1b1c('0x7'))(_0x1b1c('0x8'));config['redis']=_[_0x1b1c('0x9')](config['redis'],{'host':_0x1b1c('0xa'),'port':0x18eb});var io=require(_0x1b1c('0xb'))(new Redis(config[_0x1b1c('0xc')]));function emit(_0x3ff7e8,_0x2a394c,_0x25b33c){io['to'](_0x3ff7e8)['emit'](_0x2a394c,_0x25b33c);}function request(_0x1714e7){logger[_0x1b1c('0xd')](_0x1b1c('0xe'),JSON[_0x1b1c('0xf')](_0x1714e7));return rp(_0x1714e7);}function getCustomFields(_0x4dce31,_0x3ad1b1){var _0x1bfaa6={};if(_0x4dce31[_0x1b1c('0x10')]>0x0){_[_0x1b1c('0x11')](_0x4dce31,function(_0x568b2c){if(_[_0x1b1c('0x12')]([_0x1b1c('0x13'),_0x1b1c('0x14')],_0x568b2c[_0x1b1c('0x15')])&&_0x568b2c[_0x1b1c('0x16')]){_0x1bfaa6[_0x568b2c['idField']]=_0x568b2c['content']['toString']();}else if(_0x568b2c[_0x1b1c('0x15')]==='variable'&&_0x568b2c[_0x1b1c('0x17')]&&_0x568b2c[_0x1b1c('0x16')]&&_0x3ad1b1[_0x568b2c['variableName']]){_0x1bfaa6[_0x568b2c['idField']]=_0x3ad1b1[_0x568b2c[_0x1b1c('0x17')]]['toString']();}else if(_0x568b2c['type']===_0x1b1c('0x18')&&_0x568b2c[_0x1b1c('0x19')]&&_0x568b2c[_0x1b1c('0x19')][_0x1b1c('0x1a')]&&_0x568b2c[_0x1b1c('0x16')]&&_0x3ad1b1[_0x568b2c[_0x1b1c('0x19')]['name']['toLowerCase']()]){_0x1bfaa6[_0x568b2c[_0x1b1c('0x16')]]=_0x3ad1b1[_0x568b2c[_0x1b1c('0x19')][_0x1b1c('0x1a')]['toLowerCase']()]['toString']();}});}return _0x1bfaa6;}function getName(_0x7d154){if(_0x7d154[_0x1b1c('0x1b')]('\x20')>0x0){var _0x12894f=_0x7d154['split'](/ (.+)/);if(_0x12894f[0x1]){return _0x12894f;}}return[_0x7d154,_0x7d154];}var accountsTokens={};function getAccessToken(_0x17eb8b){return new Promise(function(_0xce9c41,_0xebda9b){if(!_[_0x1b1c('0x1c')](accountsTokens[_0x17eb8b['id']])&&!_[_0x1b1c('0x1c')](accountsTokens[_0x17eb8b['id']][_0x1b1c('0x1d')])){if(moment()[_0x1b1c('0x1e')](accountsTokens[_0x17eb8b['id']][_0x1b1c('0x1f')])){_0xce9c41(accountsTokens[_0x17eb8b['id']][_0x1b1c('0x1d')]);}}var _0x5c4d90;switch(_0x17eb8b[_0x1b1c('0x20')]){case'US':_0x5c4d90='https://accounts.zoho.com';break;case'AU':_0x5c4d90=_0x1b1c('0x21');break;case'EU':_0x5c4d90='https://accounts.zoho.eu';break;case'IN':_0x5c4d90='https://accounts.zoho.in';break;case'CN':_0x5c4d90=_0x1b1c('0x22');break;default:_0x5c4d90=_0x1b1c('0x23');break;}var _0x4b11ca={'method':_0x1b1c('0x24'),'uri':_0x5c4d90+'/oauth/v2/token','qs':{'refresh_token':_0x17eb8b[_0x1b1c('0x25')],'client_id':_0x17eb8b[_0x1b1c('0x26')],'client_secret':_0x17eb8b[_0x1b1c('0x27')],'grant_type':_0x1b1c('0x28')},'json':!![]};return rp(_0x4b11ca)['then'](function(_0x3aa719){accountsTokens[_0x17eb8b['id']]={'access_token':_0x3aa719['access_token'],'expires_in':moment()[_0x1b1c('0x29')](_0x3aa719['expires_in'],_0x1b1c('0x2a'))};_0xce9c41(_0x3aa719[_0x1b1c('0x1d')]);})[_0x1b1c('0x2b')](function(_0x2c10d4){logger[_0x1b1c('0x2c')](_0x1b1c('0x2d'),_0x2c10d4[_0x1b1c('0x2e')]);_0xebda9b(_0x2c10d4);});});}function getUser(_0x4fb719,_0x1408d3,_0x42aa29,_0x460ca3){logger['info'](_0x1b1c('0x2f'));return request({'method':_0x1b1c('0x30'),'uri':util[_0x1b1c('0x31')](_0x1b1c('0x32'),_0x1408d3),'qs':{'type':_0x1b1c('0x33')},'headers':{'Authorization':_0x1b1c('0x34')+_0x4fb719},'json':!![]})[_0x1b1c('0x35')](function(_0x20e613){if(_0x20e613[_0x1b1c('0x36')]){var _0x4bfd59=-0x1;if(_[_0x1b1c('0x37')](_0x20e613[_0x1b1c('0x36')])){if(!_[_0x1b1c('0x1c')](_0x460ca3)){_0x4bfd59=_[_0x1b1c('0x38')](_0x20e613[_0x1b1c('0x36')],function(_0x31d314){return _0x31d314['email']===_0x460ca3;});}if(_0x4bfd59>=0x0){logger[_0x1b1c('0x39')](_0x1b1c('0x3a'));}else{logger['info']('Using\x20the\x20admin\x20account!');_0x4bfd59=_[_0x1b1c('0x38')](_0x20e613[_0x1b1c('0x36')],function(_0x119937){return _0x119937[_0x1b1c('0x3b')]['name']===_0x1b1c('0x3c');});}return _0x20e613[_0x1b1c('0x36')][_0x4bfd59];}else{if(_0x20e613['user'][_0x1b1c('0x3b')]['name']===_0x1b1c('0x3c')){logger[_0x1b1c('0x39')](_0x1b1c('0x3d'));user=_0x20e613[_0x1b1c('0x3e')];return user;}else{logger[_0x1b1c('0x2c')](_0x1b1c('0x3f'),JSON[_0x1b1c('0xf')](_0x20e613));throw new Error(_0x1b1c('0x40')+JSON[_0x1b1c('0xf')](_0x20e613));}}}else{logger[_0x1b1c('0x2c')](_0x1b1c('0x3f'),JSON['stringify'](_0x20e613));throw new Error(_0x1b1c('0x40')+JSON[_0x1b1c('0xf')](_0x20e613));}})[_0x1b1c('0x2b')](function(_0x1190ff){console[_0x1b1c('0x2c')](_0x1190ff);});}function getZohoUser(_0x3b4982,_0x5baef9){return new BPromise(function(_0x12bb96,_0x33c756){request(_0x3b4982)[_0x1b1c('0x35')](function(_0x58d576){var _0x2b667e=null;if(_0x58d576){_0x2b667e=_0x58d576[_0x1b1c('0x41')][0x0];_0x2b667e[_0x1b1c('0x42')]=_0x5baef9;}_0x12bb96(_0x2b667e);})[_0x1b1c('0x2b')](function(_0x52f6fe){_0x33c756(_0x52f6fe);});});}function createEndUser(_0x285b86,_0x4592be,_0x7a0c90,_0x4ecb77,_0x4c30bb,_0x34f472){var _0x7a0c90=getName(_0x7a0c90);return request({'method':_0x1b1c('0x24'),'uri':_0x1b1c('0x43')+_0x4592be+_0x1b1c('0x44')+_[_0x1b1c('0x45')](_0x34f472[_0x1b1c('0x46')])+'s','body':{'data':[{'Last_Name':_0x7a0c90[0x1],'First_Name':_0x7a0c90[0x0],'Phone':_0x4ecb77,'Owner':{'name':!_[_0x1b1c('0x1c')](_0x4c30bb[_0x1b1c('0x47')][_0x1b1c('0x1a')])?_0x4c30bb['role']['name']:!_[_0x1b1c('0x1c')](_0x4c30bb[_0x1b1c('0x48')])?_0x4c30bb[_0x1b1c('0x48')]+'\x20'+_0x4c30bb['last_name']:_0x4c30bb[_0x1b1c('0x49')],'id':_0x4c30bb['id']}}]},'headers':{'Authorization':_0x1b1c('0x34')+_0x285b86},'json':!![]})['then'](function(_0x3066c6){if(_0x3066c6&&_0x3066c6['data'][0x0][_0x1b1c('0x4a')]===_0x1b1c('0x4b')){var _0x5d402f=_0x3066c6[_0x1b1c('0x41')][0x0][_0x1b1c('0x4c')];_0x5d402f[_0x1b1c('0x42')]=_[_0x1b1c('0x45')](_0x34f472['moduleCreate'])+'s';return _0x5d402f;}logger[_0x1b1c('0x2c')](_0x1b1c('0x3f'),JSON[_0x1b1c('0xf')](data));throw new Error(_0x1b1c('0x4d')+JSON['stringify'](data));})['catch'](function(_0x34d068){console[_0x1b1c('0x4e')]('CREATE\x20ERROR',_0x34d068);});}function getEndUser(_0x4cc7ea,_0x19c00e,_0x2dcea5,_0x197911,_0x5cb30a,_0xcea5c7,_0x54ec69){var _0x12d984={'method':_0x1b1c('0x30'),'uri':'','headers':{'Authorization':_0x1b1c('0x34')+_0x4cc7ea},'json':!![]};switch(_0x54ec69[_0x1b1c('0x4f')]){case _0x1b1c('0x50'):_0x12d984[_0x1b1c('0x51')]=_0x1b1c('0x43')+_0x19c00e+_0x1b1c('0x52')+_0x5cb30a+'))';return getZohoUser(_0x12d984,'Contacts')[_0x1b1c('0x35')](function(_0x36f4f4){if(_0x36f4f4)return _0x36f4f4;_0x12d984[_0x1b1c('0x51')]=_0x1b1c('0x43')+_0x19c00e+_0x1b1c('0x53')+_0x5cb30a+'))';return getZohoUser(_0x12d984,_0x1b1c('0x54'))[_0x1b1c('0x35')](function(_0x1318a1){if(_0x1318a1)return _0x1318a1;if(_0x54ec69[_0x1b1c('0x46')]!=_0x1b1c('0x55')){return createEndUser(_0x4cc7ea,_0x19c00e,_0x197911,_0x5cb30a,_0xcea5c7,_0x54ec69);}else{return{};}});});break;case _0x1b1c('0x56'):_0x12d984['uri']=_0x1b1c('0x43')+_0x19c00e+_0x1b1c('0x52')+_0x5cb30a+'))';return getZohoUser(_0x12d984,_0x1b1c('0x57'))[_0x1b1c('0x35')](function(_0x53d9a3){if(_0x53d9a3)return _0x53d9a3;if(_0x54ec69['moduleCreate']!=_0x1b1c('0x55')){return createEndUser(_0x4cc7ea,_0x19c00e,_0x197911,_0x5cb30a,_0xcea5c7,_0x54ec69);}else{return{};}});break;case _0x1b1c('0x58'):_0x12d984[_0x1b1c('0x51')]=_0x1b1c('0x43')+_0x19c00e+_0x1b1c('0x53')+_0x5cb30a+'))';return getZohoUser(_0x12d984,_0x1b1c('0x54'))['then'](function(_0x234d69){if(_0x234d69)return _0x234d69;if(_0x54ec69[_0x1b1c('0x46')]!=_0x1b1c('0x55')){return createEndUser(_0x4cc7ea,_0x19c00e,_0x197911,_0x5cb30a,_0xcea5c7,_0x54ec69);}else{return{};}});break;}}function getCall(_0x4fd1f4,_0x43a59c,_0x5629c1,_0x3c9f51,_0x241797,_0x11cc78,_0x3eed38,_0x34a416){logger['info'](_0x1b1c('0x59'));var _0x5c9c9d={};_0x5c9c9d['Owner']={'name':!_[_0x1b1c('0x1c')](_0x3c9f51[_0x1b1c('0x47')][_0x1b1c('0x1a')])&&!_['isNil'](_0x3c9f51[_0x1b1c('0x3b')][_0x1b1c('0x1a')])&&_0x3c9f51['profile'][_0x1b1c('0x1a')]===_0x1b1c('0x5a')?_0x3c9f51[_0x1b1c('0x47')][_0x1b1c('0x1a')]:!_[_0x1b1c('0x1c')](_0x3c9f51[_0x1b1c('0x48')])?_0x3c9f51[_0x1b1c('0x48')]+'\x20'+_0x3c9f51[_0x1b1c('0x49')]:_0x3c9f51[_0x1b1c('0x49')],'id':_0x3c9f51['id']};_0x5c9c9d[_0x1b1c('0x5b')]=intUtil['getString'](_0x11cc78[_0x1b1c('0x5c')],_0x3eed38,'\x20');_0x5c9c9d[_0x1b1c('0x5d')]=intUtil[_0x1b1c('0x5e')](_0x11cc78['Descriptions'],_0x3eed38,'\x0a');if(_0x241797[_0x1b1c('0x42')]===_0x1b1c('0x57')){_0x5c9c9d[_0x1b1c('0x5f')]={'name':!_[_0x1b1c('0x1c')](_0x241797[_0x1b1c('0x60')])?_0x241797['Full_Name']:!_[_0x1b1c('0x1c')](_0x241797['First_Name'])?_0x241797['First_Name']+'\x20'+_0x241797['Last_Name']:_0x241797[_0x1b1c('0x61')],'id':_0x241797['id']};}if(_0x241797[_0x1b1c('0x42')]===_0x1b1c('0x54')){_0x5c9c9d['What_Id']={'name':!_[_0x1b1c('0x1c')](_0x241797['Full_Name'])?_0x241797['Full_Name']:!_[_0x1b1c('0x1c')](_0x241797[_0x1b1c('0x62')])?_0x241797[_0x1b1c('0x62')]+'\x20'+_0x241797[_0x1b1c('0x61')]:_0x241797[_0x1b1c('0x61')],'id':_0x241797['id']};_0x5c9c9d[_0x1b1c('0x63')]=_[_0x1b1c('0x45')](_0x241797[_0x1b1c('0x42')]);}if(_0x3eed38[_0x1b1c('0x64')]){_0x5c9c9d['Call_Duration']=moment[_0x1b1c('0x65')](parseInt(_0x3eed38[_0x1b1c('0x64')])*0x3e8)[_0x1b1c('0x31')](_0x1b1c('0x66'));}else if(_0x3eed38[_0x1b1c('0x67')]&&_0x3eed38['endtime']){_0x5c9c9d[_0x1b1c('0x68')]=moment[_0x1b1c('0x65')](moment(_0x3eed38[_0x1b1c('0x69')],_0x1b1c('0x6a'))[_0x1b1c('0x6b')](moment(_0x3eed38[_0x1b1c('0x6c')],'YYYY-MM-DDTHH:mm:ss')))[_0x1b1c('0x31')](_0x1b1c('0x66'));}switch(_0x3eed38[_0x1b1c('0x6d')]){case _0x1b1c('0x6e'):_0x5c9c9d['Call_Result']=_0x1b1c('0x6f');break;case _0x1b1c('0x70'):case _0x1b1c('0x71'):_0x5c9c9d[_0x1b1c('0x72')]=_0x1b1c('0x73');break;case _0x1b1c('0x74'):_0x5c9c9d[_0x1b1c('0x72')]=_0x1b1c('0x75');break;case _0x1b1c('0x76'):_0x5c9c9d['Call_Result']=_0x1b1c('0x77');break;case _0x1b1c('0x78'):_0x5c9c9d['Call_Result']='Timeout';default:}_0x5c9c9d[_0x1b1c('0x79')]=(_0x34a416===_0x1b1c('0x7a')?moment(_0x3eed38[_0x1b1c('0x6c')])[_0x1b1c('0x31')](_0x1b1c('0x6a')):moment(_0x3eed38[_0x1b1c('0x7b')])[_0x1b1c('0x31')](_0x1b1c('0x6a')))||moment()[_0x1b1c('0x31')](_0x1b1c('0x6a'));_0x5c9c9d[_0x1b1c('0x7c')]=_0x34a416||'Inbound';_0x5c9c9d=_['merge'](_0x5c9c9d,getCustomFields(_0x11cc78[_0x1b1c('0x7d')],_0x3eed38));return request({'method':'POST','uri':_0x1b1c('0x43')+_0x43a59c+_0x1b1c('0x7e'),'headers':{'Authorization':_0x1b1c('0x34')+_0x4fd1f4},'body':{'data':[_0x5c9c9d]},'json':!![]})[_0x1b1c('0x35')](function(_0x3db5d5){if(_0x3db5d5&&_0x3db5d5[_0x1b1c('0x41')][0x0][_0x1b1c('0x4a')]===_0x1b1c('0x4b')){logger[_0x1b1c('0x39')]('Call\x20created!');return{'id':_0x3db5d5[_0x1b1c('0x41')][0x0][_0x1b1c('0x4c')]['id']};}})['catch'](function(_0x2e0445){logger[_0x1b1c('0x39')](_0x1b1c('0x7f'),_0x2e0445['stack']);console[_0x1b1c('0x4e')](_0x1b1c('0x7f'),_0x2e0445);});}exports[_0x1b1c('0x80')]=function(_0x4788d4,_0x245b88,_0x18598c,_0x22484d,_0x356314,_0x509422){var _0x3f5fe9,_0x5df96d,_0x150a84;_0x509422[_0x1b1c('0x81')]=intUtil[_0x1b1c('0x82')](_0x509422[_0x1b1c('0x81')]);_0x509422[_0x1b1c('0x83')]=intUtil['stripTrailingSlash'](_0x509422[_0x1b1c('0x83')]);if(_0x356314&&_0x356314[_0x1b1c('0x84')]){logger['info'](_0x1b1c('0x85'),_0x1b1c('0x86'));_0x245b88['recordingURL']=_0x509422['serverUrl']+_0x1b1c('0x87')+_0x245b88[_0x1b1c('0x88')]+'/downloads?type=uniqueid&token='+md5(_0x245b88[_0x1b1c('0x88')]);}else{_0x245b88[_0x1b1c('0x89')]='';}var _0x18c0b7=_0x509422[_0x1b1c('0x81')]===_0x1b1c('0x8a')?'eu':'com';return getAccessToken(_0x509422)[_0x1b1c('0x35')](function(_0x4b2484){_0x150a84=_0x4b2484;return getUser(_0x150a84,_0x18c0b7,_0x509422,_0x22484d[_0x1b1c('0x8b')]);})['then'](function(_0x35f81e){_0x3f5fe9=_0x35f81e;logger['info'](_0x1b1c('0x8c'),_0x3f5fe9['id']);return getEndUser(_0x150a84,_0x18c0b7,_0x509422,_0x245b88['calleridname'],_0x245b88[_0x1b1c('0x8d')],_0x3f5fe9,_0x18598c);})['then'](function(_0x5eb82a){_0x5df96d=_0x5eb82a;return getCall(_0x150a84,_0x18c0b7,_0x509422,_0x3f5fe9,_0x5df96d,_0x18598c,_0x245b88,'Inbound');})[_0x1b1c('0x35')](function(_0x4afecc){if(_0x4afecc){logger['info'](_0x1b1c('0x8e'),_0x4afecc['id']);logger['info']('[QUEUE]',_0x1b1c('0x8f'));emit(util[_0x1b1c('0x31')](_0x1b1c('0x90'),_0x22484d[_0x1b1c('0x1a')]),_0x1b1c('0x91'),{'uri':_0x1b1c('0x92')+_0x509422[_0x1b1c('0x81')]+_0x1b1c('0x93')+_0x4afecc['id']});}})[_0x1b1c('0x2b')](function(_0x3798c4){logger[_0x1b1c('0x2c')](_0x1b1c('0x85'),JSON[_0x1b1c('0xf')](_0x3798c4));});};exports[_0x1b1c('0x7a')]=function(_0x285c54,_0x1acf6d,_0x3068f4,_0x20029c,_0x4e9aa3,_0x1573a2,_0x79fb4f){var _0x2ab0b2,_0x44b34e,_0x423596;_0x1573a2[_0x1b1c('0x81')]=intUtil[_0x1b1c('0x82')](_0x1573a2[_0x1b1c('0x81')]);_0x1573a2[_0x1b1c('0x83')]=intUtil[_0x1b1c('0x82')](_0x1573a2['serverUrl']);if(_0x79fb4f&&_0x79fb4f[_0x1b1c('0x94')]&&_0x79fb4f[_0x1b1c('0x94')]!=='none'){logger[_0x1b1c('0x39')](_0x1b1c('0x95'),_0x1b1c('0x86'));_0x1acf6d[_0x1b1c('0x89')]=_0x1573a2[_0x1b1c('0x83')]+'/api/voice/recordings/'+_0x1acf6d[_0x1b1c('0x88')]+_0x1b1c('0x96')+md5(_0x1acf6d[_0x1b1c('0x88')]);}var _0x5583e0=_0x1573a2['host']===_0x1b1c('0x8a')?'eu':_0x1b1c('0x97');return getAccessToken(_0x1573a2)[_0x1b1c('0x35')](function(_0x51d85a){_0x423596=_0x51d85a;return getUser(_0x423596,_0x5583e0,_0x1573a2,_0x20029c['email']);})[_0x1b1c('0x35')](function(_0x240f3e){_0x2ab0b2=_0x240f3e;logger[_0x1b1c('0x39')](_0x1b1c('0x8c'),_0x2ab0b2['id']);return getEndUser(_0x423596,_0x5583e0,_0x1573a2,_0x1acf6d[_0x1b1c('0x98')],_0x1acf6d[_0x1b1c('0x99')],_0x2ab0b2,_0x3068f4);})[_0x1b1c('0x35')](function(_0xc63ec8){_0x44b34e=_0xc63ec8;return getCall(_0x423596,_0x5583e0,_0x1573a2,_0x2ab0b2,_0x44b34e,_0x3068f4,_0x1acf6d,_0x1b1c('0x9a'));})[_0x1b1c('0x35')](function(_0x141a5){if(_0x141a5){logger['info']('The\x20Call\x20ID\x20is:',_0x141a5['id']);logger[_0x1b1c('0x39')]('[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x1b1c('0x31')](_0x1b1c('0x90'),_0x20029c[_0x1b1c('0x1a')]),_0x1b1c('0x91'),{'uri':_0x1b1c('0x92')+_0x1573a2[_0x1b1c('0x81')]+_0x1b1c('0x93')+_0x141a5['id']});}})[_0x1b1c('0x2b')](function(_0x21124c){logger['error'](_0x1b1c('0x95'),JSON[_0x1b1c('0xf')](_0x21124c));});};exports['unmanaged']=function(_0x50063d,_0x43c9c5,_0x27c890,_0x434d10,_0x599271,_0x48072c){var _0x432345,_0x34ec12,_0x500322;_0x48072c[_0x1b1c('0x81')]=intUtil[_0x1b1c('0x82')](_0x48072c[_0x1b1c('0x81')]);_0x48072c[_0x1b1c('0x83')]=intUtil[_0x1b1c('0x82')](_0x48072c[_0x1b1c('0x83')]);if(_0x599271&&_0x599271[_0x1b1c('0x84')]){logger[_0x1b1c('0x39')]('['+_0x43c9c5[_0x1b1c('0x6d')]['toUpperCase']()+']',_0x1b1c('0x86'));_0x43c9c5[_0x1b1c('0x89')]=_0x48072c[_0x1b1c('0x83')]+_0x1b1c('0x87')+_0x43c9c5['uniqueid']+_0x1b1c('0x96')+md5(_0x43c9c5[_0x1b1c('0x88')]);}else{_0x43c9c5[_0x1b1c('0x89')]='';}var _0xfb45b0=_0x48072c[_0x1b1c('0x81')]===_0x1b1c('0x8a')?'eu':_0x1b1c('0x97');return getAccessToken(_0x48072c)['then'](function(_0x2c819d){_0x500322=_0x2c819d;return getUser(_0x500322,_0xfb45b0,_0x48072c);})['then'](function(_0x351c60){_0x432345=_0x351c60;logger[_0x1b1c('0x39')](_0x1b1c('0x8c'),_0x432345['id']);return getEndUser(_0x500322,_0xfb45b0,_0x48072c,_0x43c9c5[_0x1b1c('0x9b')],_0x43c9c5['calleridnum'],_0x432345,_0x27c890);})[_0x1b1c('0x35')](function(_0x236e3e){_0x34ec12=_0x236e3e;return getCall(_0x500322,_0xfb45b0,_0x48072c,_0x432345,_0x34ec12,_0x27c890,_0x43c9c5,'Inbound');})[_0x1b1c('0x35')](function(_0x442aaf){if(_0x442aaf){logger[_0x1b1c('0x39')](_0x1b1c('0x8e'),_0x442aaf['id']);}})[_0x1b1c('0x2b')](function(_0x4fc663){logger[_0x1b1c('0x2c')]('['+_0x43c9c5[_0x1b1c('0x6d')][_0x1b1c('0x9c')]()+']',JSON[_0x1b1c('0xf')](_0x4fc663));});};
\ No newline at end of file
+var _0x4dcb=['err','log','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','unmanaged','toUpperCase','lodash','request-promise','./util','moment','ioredis','bluebird','../../../../config/environment','redis','socket.io-emitter','emit','stringify','length','forEach','includes','string','picklist','content','toString','type','variable','variableName','idField','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','GET','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','then','users','isArrayLikeObject','findIndex','info','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','enduserType','https://www.zohoapis.','startCase','moduleCreate','role','first_name','last_name','data','SUCCESS','details','Error:\x20','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','Leads','nothing','contact','lead','/crm/v2/Leads/search?criteria=((Phone:equals:','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Subjects','Description','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','utc','format','mm:ss','answertime','endtime','Call_Duration','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','Answered','rejected','Rejected','abandoned','Abandoned','timeout','outbound','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','code','Call\x20created!'];(function(_0x46748c,_0x52a3bb){var _0x294f56=function(_0x1c68de){while(--_0x1c68de){_0x46748c['push'](_0x46748c['shift']());}};_0x294f56(++_0x52a3bb);}(_0x4dcb,0x153));var _0xb4dc=function(_0x423eec,_0x539aea){_0x423eec=_0x423eec-0x0;var _0x5bf076=_0x4dcb[_0x423eec];return _0x5bf076;};'use strict';var _=require(_0xb4dc('0x0'));var rp=require(_0xb4dc('0x1'));var md5=require('md5');var util=require('util');var intUtil=require(_0xb4dc('0x2'));var moment=require(_0xb4dc('0x3'));var Redis=require(_0xb4dc('0x4'));var BPromise=require(_0xb4dc('0x5'));var config=require(_0xb4dc('0x6'));var logger=require('../../../../config/logger')('zoho');config[_0xb4dc('0x7')]=_['defaults'](config[_0xb4dc('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xb4dc('0x8'))(new Redis(config[_0xb4dc('0x7')]));function emit(_0xc9d0a4,_0x42e19a,_0x4a9c2a){io['to'](_0xc9d0a4)[_0xb4dc('0x9')](_0x42e19a,_0x4a9c2a);}function request(_0x12635e){logger['debug']('[HTTP]',JSON[_0xb4dc('0xa')](_0x12635e));return rp(_0x12635e);}function getCustomFields(_0x583db7,_0x3182c8){var _0xfd3393={};if(_0x583db7[_0xb4dc('0xb')]>0x0){_[_0xb4dc('0xc')](_0x583db7,function(_0x1bc116){if(_[_0xb4dc('0xd')]([_0xb4dc('0xe'),_0xb4dc('0xf')],_0x1bc116['type'])&&_0x1bc116['idField']){_0xfd3393[_0x1bc116['idField']]=_0x1bc116[_0xb4dc('0x10')][_0xb4dc('0x11')]();}else if(_0x1bc116[_0xb4dc('0x12')]===_0xb4dc('0x13')&&_0x1bc116[_0xb4dc('0x14')]&&_0x1bc116[_0xb4dc('0x15')]&&_0x3182c8[_0x1bc116[_0xb4dc('0x14')]]){_0xfd3393[_0x1bc116['idField']]=_0x3182c8[_0x1bc116[_0xb4dc('0x14')]][_0xb4dc('0x11')]();}else if(_0x1bc116['type']===_0xb4dc('0x16')&&_0x1bc116[_0xb4dc('0x17')]&&_0x1bc116[_0xb4dc('0x17')][_0xb4dc('0x18')]&&_0x1bc116[_0xb4dc('0x15')]&&_0x3182c8[_0x1bc116[_0xb4dc('0x17')]['name'][_0xb4dc('0x19')]()]){_0xfd3393[_0x1bc116[_0xb4dc('0x15')]]=_0x3182c8[_0x1bc116['Variable']['name'][_0xb4dc('0x19')]()][_0xb4dc('0x11')]();}});}return _0xfd3393;}function getName(_0xb66872){if(_0xb66872[_0xb4dc('0x1a')]('\x20')>0x0){var _0x3bf7fe=_0xb66872[_0xb4dc('0x1b')](/ (.+)/);if(_0x3bf7fe[0x1]){return _0x3bf7fe;}}return[_0xb66872,_0xb66872];}var accountsTokens={};function getAccessToken(_0x2657ed){return new Promise(function(_0x147ace,_0x114ed4){if(!_['isNil'](accountsTokens[_0x2657ed['id']])&&!_[_0xb4dc('0x1c')](accountsTokens[_0x2657ed['id']][_0xb4dc('0x1d')])){if(moment()[_0xb4dc('0x1e')](accountsTokens[_0x2657ed['id']][_0xb4dc('0x1f')])){_0x147ace(accountsTokens[_0x2657ed['id']]['access_token']);}}var _0x4c92af;switch(_0x2657ed[_0xb4dc('0x20')]){case'US':_0x4c92af=_0xb4dc('0x21');break;case'AU':_0x4c92af='https://accounts.zoho.com.au';break;case'EU':_0x4c92af='https://accounts.zoho.eu';break;case'IN':_0x4c92af=_0xb4dc('0x22');break;case'CN':_0x4c92af='https://accounts.zoho.com.cn';break;default:_0x4c92af=_0xb4dc('0x23');break;}var _0x215888={'method':_0xb4dc('0x24'),'uri':_0x4c92af+_0xb4dc('0x25'),'qs':{'refresh_token':_0x2657ed[_0xb4dc('0x26')],'client_id':_0x2657ed['clientId'],'client_secret':_0x2657ed[_0xb4dc('0x27')],'grant_type':_0xb4dc('0x28')},'json':!![]};return rp(_0x215888)['then'](function(_0x4f8f3b){accountsTokens[_0x2657ed['id']]={'access_token':_0x4f8f3b[_0xb4dc('0x1d')],'expires_in':moment()[_0xb4dc('0x29')](_0x4f8f3b[_0xb4dc('0x1f')],_0xb4dc('0x2a'))};_0x147ace(_0x4f8f3b[_0xb4dc('0x1d')]);})[_0xb4dc('0x2b')](function(_0x142d66){logger[_0xb4dc('0x2c')](_0xb4dc('0x2d'),_0x142d66[_0xb4dc('0x2e')]);_0x114ed4(_0x142d66);});});}function getUser(_0x14ec72,_0x5d4ac5,_0x475052,_0x29915a){logger['info']('Search\x20user');return request({'method':_0xb4dc('0x2f'),'uri':util['format'](_0xb4dc('0x30'),_0x5d4ac5),'qs':{'type':_0xb4dc('0x31')},'headers':{'Authorization':_0xb4dc('0x32')+_0x14ec72},'json':!![]})[_0xb4dc('0x33')](function(_0x36d77a){if(_0x36d77a[_0xb4dc('0x34')]){var _0x4d5328=-0x1;if(_[_0xb4dc('0x35')](_0x36d77a['users'])){if(!_[_0xb4dc('0x1c')](_0x29915a)){_0x4d5328=_[_0xb4dc('0x36')](_0x36d77a['users'],function(_0x5c59ff){return _0x5c59ff['email']===_0x29915a;});}if(_0x4d5328>=0x0){logger[_0xb4dc('0x37')](_0xb4dc('0x38'));}else{logger[_0xb4dc('0x37')](_0xb4dc('0x39'));_0x4d5328=_[_0xb4dc('0x36')](_0x36d77a['users'],function(_0x381508){return _0x381508[_0xb4dc('0x3a')]['name']===_0xb4dc('0x3b');});}return _0x36d77a[_0xb4dc('0x34')][_0x4d5328];}else{if(_0x36d77a['user'][_0xb4dc('0x3a')][_0xb4dc('0x18')]===_0xb4dc('0x3b')){logger[_0xb4dc('0x37')](_0xb4dc('0x39'));user=_0x36d77a['user'];return user;}else{logger[_0xb4dc('0x2c')](_0xb4dc('0x3c'),JSON['stringify'](_0x36d77a));throw new Error(_0xb4dc('0x3d')+JSON[_0xb4dc('0xa')](_0x36d77a));}}}else{logger['error'](_0xb4dc('0x3c'),JSON[_0xb4dc('0xa')](_0x36d77a));throw new Error(_0xb4dc('0x3d')+JSON[_0xb4dc('0xa')](_0x36d77a));}})[_0xb4dc('0x2b')](function(_0x183a80){console[_0xb4dc('0x2c')](_0x183a80);});}function getZohoUser(_0x4fb460,_0x44a136){return new BPromise(function(_0x251d87,_0x5adf2d){request(_0x4fb460)[_0xb4dc('0x33')](function(_0x3cb5c3){var _0x524f5d=null;if(_0x3cb5c3){_0x524f5d=_0x3cb5c3['data'][0x0];_0x524f5d[_0xb4dc('0x3e')]=_0x44a136;}_0x251d87(_0x524f5d);})[_0xb4dc('0x2b')](function(_0x2bfc90){_0x5adf2d(_0x2bfc90);});});}function createEndUser(_0x57def7,_0x23d156,_0x2772be,_0xbaab78,_0x2f697c,_0x1bb284){var _0x2772be=getName(_0x2772be);return request({'method':_0xb4dc('0x24'),'uri':_0xb4dc('0x3f')+_0x23d156+'/crm/v2/'+_[_0xb4dc('0x40')](_0x1bb284[_0xb4dc('0x41')])+'s','body':{'data':[{'Last_Name':_0x2772be[0x1],'First_Name':_0x2772be[0x0],'Phone':_0xbaab78,'Owner':{'name':!_[_0xb4dc('0x1c')](_0x2f697c[_0xb4dc('0x42')]['name'])?_0x2f697c[_0xb4dc('0x42')][_0xb4dc('0x18')]:!_['isNil'](_0x2f697c[_0xb4dc('0x43')])?_0x2f697c[_0xb4dc('0x43')]+'\x20'+_0x2f697c[_0xb4dc('0x44')]:_0x2f697c[_0xb4dc('0x44')],'id':_0x2f697c['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x57def7},'json':!![]})[_0xb4dc('0x33')](function(_0x1041cc){if(_0x1041cc&&_0x1041cc[_0xb4dc('0x45')][0x0]['code']===_0xb4dc('0x46')){var _0x56014a=_0x1041cc[_0xb4dc('0x45')][0x0][_0xb4dc('0x47')];_0x56014a[_0xb4dc('0x3e')]=_[_0xb4dc('0x40')](_0x1bb284[_0xb4dc('0x41')])+'s';return _0x56014a;}logger['error']('The\x20failing\x20result\x20is',JSON[_0xb4dc('0xa')](data));throw new Error(_0xb4dc('0x48')+JSON[_0xb4dc('0xa')](data));})['catch'](function(_0x2b9359){console['log'](_0xb4dc('0x49'),_0x2b9359);});}function getEndUser(_0x4f84a0,_0x4fe0bc,_0x512792,_0x4ede62,_0x3028ba,_0xdb67ab,_0x1cbbcf){var _0x409348={'method':_0xb4dc('0x2f'),'uri':'','headers':{'Authorization':_0xb4dc('0x32')+_0x4f84a0},'json':!![]};switch(_0x1cbbcf[_0xb4dc('0x4a')]){case _0xb4dc('0x4b'):_0x409348[_0xb4dc('0x4c')]=_0xb4dc('0x3f')+_0x4fe0bc+_0xb4dc('0x4d')+_0x3028ba+'))';return getZohoUser(_0x409348,_0xb4dc('0x4e'))[_0xb4dc('0x33')](function(_0x3fb59d){if(_0x3fb59d)return _0x3fb59d;_0x409348[_0xb4dc('0x4c')]=_0xb4dc('0x3f')+_0x4fe0bc+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x3028ba+'))';return getZohoUser(_0x409348,_0xb4dc('0x4f'))[_0xb4dc('0x33')](function(_0xa7d308){if(_0xa7d308)return _0xa7d308;if(_0x1cbbcf[_0xb4dc('0x41')]!=_0xb4dc('0x50')){return createEndUser(_0x4f84a0,_0x4fe0bc,_0x4ede62,_0x3028ba,_0xdb67ab,_0x1cbbcf);}else{return{};}});});break;case _0xb4dc('0x51'):_0x409348[_0xb4dc('0x4c')]=_0xb4dc('0x3f')+_0x4fe0bc+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x3028ba+'))';return getZohoUser(_0x409348,_0xb4dc('0x4e'))['then'](function(_0x3979f1){if(_0x3979f1)return _0x3979f1;if(_0x1cbbcf[_0xb4dc('0x41')]!='nothing'){return createEndUser(_0x4f84a0,_0x4fe0bc,_0x4ede62,_0x3028ba,_0xdb67ab,_0x1cbbcf);}else{return{};}});break;case _0xb4dc('0x52'):_0x409348[_0xb4dc('0x4c')]=_0xb4dc('0x3f')+_0x4fe0bc+_0xb4dc('0x53')+_0x3028ba+'))';return getZohoUser(_0x409348,_0xb4dc('0x4f'))[_0xb4dc('0x33')](function(_0x3fa0d2){if(_0x3fa0d2)return _0x3fa0d2;if(_0x1cbbcf[_0xb4dc('0x41')]!=_0xb4dc('0x50')){return createEndUser(_0x4f84a0,_0x4fe0bc,_0x4ede62,_0x3028ba,_0xdb67ab,_0x1cbbcf);}else{return{};}});break;}}function getCall(_0x33f93e,_0x35c992,_0x36c4f0,_0xf04c4c,_0xd50f19,_0x2bc76c,_0x4f893f,_0x2d3120){logger[_0xb4dc('0x37')](_0xb4dc('0x54'));var _0x4b6b35={};_0x4b6b35[_0xb4dc('0x55')]={'name':!_[_0xb4dc('0x1c')](_0xf04c4c[_0xb4dc('0x42')][_0xb4dc('0x18')])&&!_[_0xb4dc('0x1c')](_0xf04c4c['profile'][_0xb4dc('0x18')])&&_0xf04c4c[_0xb4dc('0x3a')][_0xb4dc('0x18')]===_0xb4dc('0x56')?_0xf04c4c['role'][_0xb4dc('0x18')]:!_[_0xb4dc('0x1c')](_0xf04c4c['first_name'])?_0xf04c4c[_0xb4dc('0x43')]+'\x20'+_0xf04c4c[_0xb4dc('0x44')]:_0xf04c4c[_0xb4dc('0x44')],'id':_0xf04c4c['id']};_0x4b6b35[_0xb4dc('0x57')]=intUtil[_0xb4dc('0x58')](_0x2bc76c[_0xb4dc('0x59')],_0x4f893f,'\x20');_0x4b6b35[_0xb4dc('0x5a')]=intUtil['getString'](_0x2bc76c['Descriptions'],_0x4f893f,'\x0a');if(_0xd50f19[_0xb4dc('0x3e')]===_0xb4dc('0x4e')){_0x4b6b35['Who_Id']={'name':!_[_0xb4dc('0x1c')](_0xd50f19[_0xb4dc('0x5b')])?_0xd50f19['Full_Name']:!_[_0xb4dc('0x1c')](_0xd50f19[_0xb4dc('0x5c')])?_0xd50f19[_0xb4dc('0x5c')]+'\x20'+_0xd50f19[_0xb4dc('0x5d')]:_0xd50f19[_0xb4dc('0x5d')],'id':_0xd50f19['id']};}if(_0xd50f19['enduserType']===_0xb4dc('0x4f')){_0x4b6b35[_0xb4dc('0x5e')]={'name':!_['isNil'](_0xd50f19['Full_Name'])?_0xd50f19[_0xb4dc('0x5b')]:!_['isNil'](_0xd50f19[_0xb4dc('0x5c')])?_0xd50f19[_0xb4dc('0x5c')]+'\x20'+_0xd50f19[_0xb4dc('0x5d')]:_0xd50f19['Last_Name'],'id':_0xd50f19['id']};_0x4b6b35[_0xb4dc('0x5f')]=_[_0xb4dc('0x40')](_0xd50f19[_0xb4dc('0x3e')]);}if(_0x4f893f[_0xb4dc('0x60')]){_0x4b6b35['Call_Duration']=moment[_0xb4dc('0x61')](parseInt(_0x4f893f[_0xb4dc('0x60')])*0x3e8)[_0xb4dc('0x62')](_0xb4dc('0x63'));}else if(_0x4f893f[_0xb4dc('0x64')]&&_0x4f893f[_0xb4dc('0x65')]){_0x4b6b35[_0xb4dc('0x66')]=moment['utc'](moment(_0x4f893f[_0xb4dc('0x65')],_0xb4dc('0x67'))[_0xb4dc('0x68')](moment(_0x4f893f[_0xb4dc('0x69')],_0xb4dc('0x67'))))[_0xb4dc('0x62')](_0xb4dc('0x63'));}switch(_0x4f893f[_0xb4dc('0x6a')]){case _0xb4dc('0x6b'):_0x4b6b35[_0xb4dc('0x6c')]='Called';break;case'complete':case'connect':_0x4b6b35['Call_Result']=_0xb4dc('0x6d');break;case _0xb4dc('0x6e'):_0x4b6b35[_0xb4dc('0x6c')]=_0xb4dc('0x6f');break;case _0xb4dc('0x70'):_0x4b6b35[_0xb4dc('0x6c')]=_0xb4dc('0x71');break;case _0xb4dc('0x72'):_0x4b6b35[_0xb4dc('0x6c')]='Timeout';default:}_0x4b6b35['Call_Start_Time']=(_0x2d3120===_0xb4dc('0x73')?moment(_0x4f893f[_0xb4dc('0x69')])[_0xb4dc('0x62')](_0xb4dc('0x67')):moment(_0x4f893f['agentcalledAt'])['format']('YYYY-MM-DDTHH:mm:ss'))||moment()['format'](_0xb4dc('0x67'));_0x4b6b35[_0xb4dc('0x74')]=_0x2d3120||_0xb4dc('0x75');_0x4b6b35=_[_0xb4dc('0x76')](_0x4b6b35,getCustomFields(_0x2bc76c[_0xb4dc('0x77')],_0x4f893f));return request({'method':_0xb4dc('0x24'),'uri':_0xb4dc('0x3f')+_0x35c992+_0xb4dc('0x78'),'headers':{'Authorization':_0xb4dc('0x32')+_0x33f93e},'body':{'data':[_0x4b6b35]},'json':!![]})[_0xb4dc('0x33')](function(_0x14ad71){if(_0x14ad71&&_0x14ad71['data'][0x0][_0xb4dc('0x79')]===_0xb4dc('0x46')){logger[_0xb4dc('0x37')](_0xb4dc('0x7a'));return{'id':_0x14ad71[_0xb4dc('0x45')][0x0][_0xb4dc('0x47')]['id']};}})[_0xb4dc('0x2b')](function(_0x494bd0){logger[_0xb4dc('0x37')](_0xb4dc('0x7b'),_0x494bd0[_0xb4dc('0x2e')]);console[_0xb4dc('0x7c')](_0xb4dc('0x7b'),_0x494bd0);});}exports['queue']=function(_0x2fa395,_0x4ba75a,_0x45d40e,_0x149363,_0x59dd4d,_0x366f8c){var _0x3622df,_0x85451c,_0x38049f;_0x366f8c[_0xb4dc('0x7d')]=intUtil[_0xb4dc('0x7e')](_0x366f8c[_0xb4dc('0x7d')]);_0x366f8c['serverUrl']=intUtil['stripTrailingSlash'](_0x366f8c[_0xb4dc('0x7f')]);if(_0x59dd4d&&_0x59dd4d[_0xb4dc('0x80')]){logger[_0xb4dc('0x37')](_0xb4dc('0x81'),_0xb4dc('0x82'));_0x4ba75a[_0xb4dc('0x83')]=_0x366f8c[_0xb4dc('0x7f')]+_0xb4dc('0x84')+_0x4ba75a[_0xb4dc('0x85')]+_0xb4dc('0x86')+md5(_0x4ba75a[_0xb4dc('0x85')]);}else{_0x4ba75a[_0xb4dc('0x83')]='';}var _0x4f6d84=_0x366f8c[_0xb4dc('0x7d')]===_0xb4dc('0x87')?'eu':_0xb4dc('0x88');return getAccessToken(_0x366f8c)[_0xb4dc('0x33')](function(_0x1ff8c5){_0x38049f=_0x1ff8c5;return getUser(_0x38049f,_0x4f6d84,_0x366f8c,_0x149363[_0xb4dc('0x89')]);})[_0xb4dc('0x33')](function(_0x5e0a5f){_0x3622df=_0x5e0a5f;logger['info'](_0xb4dc('0x8a'),_0x3622df['id']);return getEndUser(_0x38049f,_0x4f6d84,_0x366f8c,_0x4ba75a[_0xb4dc('0x8b')],_0x4ba75a[_0xb4dc('0x8c')],_0x3622df,_0x45d40e);})[_0xb4dc('0x33')](function(_0x479683){_0x85451c=_0x479683;return getCall(_0x38049f,_0x4f6d84,_0x366f8c,_0x3622df,_0x85451c,_0x45d40e,_0x4ba75a,_0xb4dc('0x75'));})[_0xb4dc('0x33')](function(_0x4ffc39){if(_0x4ffc39){logger[_0xb4dc('0x37')]('The\x20Call\x20ID\x20is:',_0x4ffc39['id']);logger['info'](_0xb4dc('0x81'),_0xb4dc('0x8d'));emit(util[_0xb4dc('0x62')]('user:%s',_0x149363[_0xb4dc('0x18')]),'trigger:browser:url',{'uri':_0xb4dc('0x8e')+_0x366f8c[_0xb4dc('0x7d')]+_0xb4dc('0x8f')+_0x4ffc39['id']});}})[_0xb4dc('0x2b')](function(_0x35a5b7){logger[_0xb4dc('0x2c')](_0xb4dc('0x81'),JSON['stringify'](_0x35a5b7));});};exports[_0xb4dc('0x73')]=function(_0xc9bc9e,_0x2a31ec,_0x2cb6b2,_0x4509cf,_0x3baff8,_0x51f0b3,_0x237a0e){var _0x23c40c,_0x3e8a10,_0xb36a09;_0x51f0b3[_0xb4dc('0x7d')]=intUtil[_0xb4dc('0x7e')](_0x51f0b3[_0xb4dc('0x7d')]);_0x51f0b3['serverUrl']=intUtil[_0xb4dc('0x7e')](_0x51f0b3['serverUrl']);if(_0x237a0e&&_0x237a0e['recordingFormat']&&_0x237a0e[_0xb4dc('0x90')]!=='none'){logger['info'](_0xb4dc('0x91'),'Recording\x20is\x20enabled!');_0x2a31ec['recordingURL']=_0x51f0b3['serverUrl']+_0xb4dc('0x84')+_0x2a31ec['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x2a31ec[_0xb4dc('0x85')]);}var _0x252cbb=_0x51f0b3[_0xb4dc('0x7d')]==='zoho.eu'?'eu':_0xb4dc('0x88');return getAccessToken(_0x51f0b3)[_0xb4dc('0x33')](function(_0x3416a5){_0xb36a09=_0x3416a5;return getUser(_0xb36a09,_0x252cbb,_0x51f0b3,_0x4509cf[_0xb4dc('0x89')]);})[_0xb4dc('0x33')](function(_0xa284ae){_0x23c40c=_0xa284ae;logger[_0xb4dc('0x37')]('The\x20User\x20ID\x20is:',_0x23c40c['id']);return getEndUser(_0xb36a09,_0x252cbb,_0x51f0b3,_0x2a31ec[_0xb4dc('0x92')],_0x2a31ec[_0xb4dc('0x93')],_0x23c40c,_0x2cb6b2);})['then'](function(_0x5e62af){_0x3e8a10=_0x5e62af;return getCall(_0xb36a09,_0x252cbb,_0x51f0b3,_0x23c40c,_0x3e8a10,_0x2cb6b2,_0x2a31ec,_0xb4dc('0x94'));})[_0xb4dc('0x33')](function(_0x591902){if(_0x591902){logger[_0xb4dc('0x37')](_0xb4dc('0x95'),_0x591902['id']);logger[_0xb4dc('0x37')]('[OUTBOUND]',_0xb4dc('0x8d'));emit(util[_0xb4dc('0x62')](_0xb4dc('0x96'),_0x4509cf[_0xb4dc('0x18')]),_0xb4dc('0x97'),{'uri':_0xb4dc('0x8e')+_0x51f0b3[_0xb4dc('0x7d')]+_0xb4dc('0x8f')+_0x591902['id']});}})[_0xb4dc('0x2b')](function(_0x24b877){logger['error']('[OUTBOUND]',JSON[_0xb4dc('0xa')](_0x24b877));});};exports[_0xb4dc('0x98')]=function(_0x27233c,_0x2de53f,_0x3eb62c,_0x5baecd,_0x34440d,_0x25797c){var _0x5ee94a,_0x2004bf,_0x5d975d;_0x25797c[_0xb4dc('0x7d')]=intUtil[_0xb4dc('0x7e')](_0x25797c[_0xb4dc('0x7d')]);_0x25797c[_0xb4dc('0x7f')]=intUtil[_0xb4dc('0x7e')](_0x25797c[_0xb4dc('0x7f')]);if(_0x34440d&&_0x34440d['monitor_format']){logger[_0xb4dc('0x37')]('['+_0x2de53f[_0xb4dc('0x6a')][_0xb4dc('0x99')]()+']',_0xb4dc('0x82'));_0x2de53f[_0xb4dc('0x83')]=_0x25797c['serverUrl']+_0xb4dc('0x84')+_0x2de53f[_0xb4dc('0x85')]+'/downloads?type=uniqueid&token='+md5(_0x2de53f[_0xb4dc('0x85')]);}else{_0x2de53f[_0xb4dc('0x83')]='';}var _0x333e88=_0x25797c['host']===_0xb4dc('0x87')?'eu':'com';return getAccessToken(_0x25797c)[_0xb4dc('0x33')](function(_0x4e3746){_0x5d975d=_0x4e3746;return getUser(_0x5d975d,_0x333e88,_0x25797c);})[_0xb4dc('0x33')](function(_0x36308a){_0x5ee94a=_0x36308a;logger['info'](_0xb4dc('0x8a'),_0x5ee94a['id']);return getEndUser(_0x5d975d,_0x333e88,_0x25797c,_0x2de53f[_0xb4dc('0x8b')],_0x2de53f['calleridnum'],_0x5ee94a,_0x3eb62c);})['then'](function(_0x2600b2){_0x2004bf=_0x2600b2;return getCall(_0x5d975d,_0x333e88,_0x25797c,_0x5ee94a,_0x2004bf,_0x3eb62c,_0x2de53f,_0xb4dc('0x75'));})['then'](function(_0x1dc989){if(_0x1dc989){logger[_0xb4dc('0x37')](_0xb4dc('0x95'),_0x1dc989['id']);}})['catch'](function(_0x410c04){logger[_0xb4dc('0x2c')]('['+_0x2de53f[_0xb4dc('0x6a')][_0xb4dc('0x99')]()+']',JSON[_0xb4dc('0xa')](_0x410c04));});};
\ No newline at end of file
index faa3981..facbe6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc3=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3','render'];(function(_0x597eb2,_0x165f5c){var _0x56875f=function(_0x5de36e){while(--_0x5de36e){_0x597eb2['push'](_0x597eb2['shift']());}};_0x56875f(++_0x165f5c);}(_0x6dc3,0x16d));var _0x36dc=function(_0x20f395,_0x25e36e){_0x20f395=_0x20f395-0x0;var _0x407297=_0x6dc3[_0x20f395];return _0x407297;};'use strict';var util=require(_0x36dc('0x0'));var sh=require(_0x36dc('0x1'));var Mustache=require(_0x36dc('0x2'));var logger=require(_0x36dc('0x3'))(_0x36dc('0x4'));exports[_0x36dc('0x5')]=function(_0x5d5f0c,_0x3f0b88){var _0x13c9f6=_0x5d5f0c[_0x36dc('0x6')]?_0x5d5f0c[_0x36dc('0x6')]:_0x36dc('0x7');var _0x44761d=_0x5d5f0c[_0x36dc('0x8')]?Mustache[_0x36dc('0x9')](_0x5d5f0c[_0x36dc('0x8')],_0x3f0b88):_0x3f0b88;sh['exec'](_0x44761d,function(_0x340744,_0x34f56f,_0x483af2){if(_0x340744!==0x0){logger[_0x36dc('0xa')](util[_0x36dc('0xb')](_0x36dc('0xc'),_0x13c9f6,_0x44761d,_0x340744,_0x483af2));}else{logger[_0x36dc('0xd')](util[_0x36dc('0xb')](_0x36dc('0xe'),_0x13c9f6,_0x44761d,_0x34f56f));}});};
\ No newline at end of file
+var _0x8925=['exec','format','info','util','shelljs','mustache','../../../../config/logger','data2','Script','data3'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x8925,0x175));var _0x5892=function(_0x4b3d12,_0x1d4133){_0x4b3d12=_0x4b3d12-0x0;var _0x104e8c=_0x8925[_0x4b3d12];return _0x104e8c;};'use strict';var util=require(_0x5892('0x0'));var sh=require(_0x5892('0x1'));var Mustache=require(_0x5892('0x2'));var logger=require(_0x5892('0x3'))('trigger');exports['exec']=function(_0x12c6fa,_0x498465){var _0x333a53=_0x12c6fa[_0x5892('0x4')]?_0x12c6fa['data2']:_0x5892('0x5');var _0x375671=_0x12c6fa[_0x5892('0x6')]?Mustache['render'](_0x12c6fa['data3'],_0x498465):_0x498465;sh[_0x5892('0x7')](_0x375671,function(_0x361b98,_0x41f1ff,_0x3e65ce){if(_0x361b98!==0x0){logger['error'](util[_0x5892('0x8')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x333a53,_0x375671,_0x361b98,_0x3e65ce));}else{logger[_0x5892('0x9')](util[_0x5892('0x8')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x333a53,_0x375671,_0x41f1ff));}});};
\ No newline at end of file
index 24d0304..59a5a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb398=['catch','statusCode','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','render','data2','data5','number','headers','data6','parse','stack','data1','GET','DELETE','POST','PUT','body','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s'];(function(_0x54bf55,_0x11ed8c){var _0x151675=function(_0x8dcaf6){while(--_0x8dcaf6){_0x54bf55['push'](_0x54bf55['shift']());}};_0x151675(++_0x11ed8c);}(_0xb398,0x1df));var _0x8b39=function(_0x2da1d1,_0x168212){_0x2da1d1=_0x2da1d1-0x0;var _0x2454bf=_0xb398[_0x2da1d1];return _0x2454bf;};'use strict';var rp=require(_0x8b39('0x0'));var util=require(_0x8b39('0x1'));var _=require(_0x8b39('0x2'));var Mustache=require(_0x8b39('0x3'));var logger=require(_0x8b39('0x4'))(_0x8b39('0x5'));exports['exec']=function(_0x313a6a,_0x26c56a){var _0x2b28c6,_0x23156f;var _0x475f33={'method':_0x313a6a['data1']['toUpperCase'](),'uri':Mustache[_0x8b39('0x6')](_0x313a6a[_0x8b39('0x7')],_0x26c56a),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x313a6a[_0x8b39('0x8')])===_0x8b39('0x9')&&parseInt(_0x313a6a['data5'])>=0x1&&parseInt(_0x313a6a['data5'])<=0xa?parseInt(_0x313a6a[_0x8b39('0x8')])*0x3e8:0x5*0x3e8};try{_0x475f33[_0x8b39('0xa')]=_0x313a6a[_0x8b39('0xb')]?JSON[_0x8b39('0xc')](Mustache['render'](_0x313a6a[_0x8b39('0xb')],_0x26c56a)):{};}catch(_0x27c5cb){logger['error'](_0x27c5cb[_0x8b39('0xd')]);}switch(_0x313a6a[_0x8b39('0xe')]['toUpperCase']()){case _0x8b39('0xf'):case _0x8b39('0x10'):_0x2b28c6=null;_0x475f33['qs']=_0x26c56a;break;case _0x8b39('0x11'):case _0x8b39('0x12'):if(_0x313a6a['data7']){try{_0x2b28c6=JSON[_0x8b39('0xc')](Mustache[_0x8b39('0x6')](_0x313a6a['data7'],_0x26c56a));_0x475f33[_0x8b39('0x13')]=_0x2b28c6;}catch(_0x1b0608){logger[_0x8b39('0x14')](_0x1b0608[_0x8b39('0xd')]);logger['error'](_0x8b39('0x15'));}}else{_0x2b28c6=_0x26c56a;_0x475f33[_0x8b39('0x13')]=_0x2b28c6;}break;}logger[_0x8b39('0x16')](util[_0x8b39('0x17')](_0x8b39('0x18'),_0x313a6a[_0x8b39('0xe')],_0x313a6a[_0x8b39('0x7')],JSON[_0x8b39('0x19')](_0x475f33)));rp(_0x475f33)[_0x8b39('0x1a')](function(_0x505c83){_0x2b28c6=!_[_0x8b39('0x1b')](_0x2b28c6)?_0x8b39('0x1c')+_0x2b28c6:'';_0x23156f=typeof _0x505c83[_0x8b39('0x13')]===_0x8b39('0x1d')?JSON['stringify'](_0x505c83[_0x8b39('0x13')]):_0x505c83[_0x8b39('0x13')];logger[_0x8b39('0x16')](util[_0x8b39('0x17')](_0x8b39('0x1e'),_0x313a6a[_0x8b39('0xe')],_0x313a6a['data2'],_0x505c83['statusCode'],_0x23156f));})[_0x8b39('0x1f')](function(_0x482b61){logger[_0x8b39('0x14')](util[_0x8b39('0x17')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x313a6a[_0x8b39('0xe')],_0x313a6a['data2'],_0x482b61[_0x8b39('0x20')],_0x482b61['name'],_0x482b61[_0x8b39('0x21')]));});};
\ No newline at end of file
+var _0x0c31=['then',',\x20request\x20body:\x20','object','info','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','statusCode','name','message','request-promise','util','mustache','../../../../config/logger','trigger','data1','toUpperCase','render','data2','data5','number','data6','parse','error','stack','GET','DELETE','POST','PUT','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify'];(function(_0x31ff59,_0x2af596){var _0x4aac5a=function(_0x4bb2e9){while(--_0x4bb2e9){_0x31ff59['push'](_0x31ff59['shift']());}};_0x4aac5a(++_0x2af596);}(_0x0c31,0x173));var _0x10c3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0c31[_0x4a9fb1];return _0x348672;};'use strict';var rp=require(_0x10c3('0x0'));var util=require(_0x10c3('0x1'));var _=require('lodash');var Mustache=require(_0x10c3('0x2'));var logger=require(_0x10c3('0x3'))(_0x10c3('0x4'));exports['exec']=function(_0x57d1f2,_0x4d0e97){var _0x4f70fe,_0x431d18;var _0x5b570e={'method':_0x57d1f2[_0x10c3('0x5')][_0x10c3('0x6')](),'uri':Mustache[_0x10c3('0x7')](_0x57d1f2[_0x10c3('0x8')],_0x4d0e97),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x57d1f2[_0x10c3('0x9')])===_0x10c3('0xa')&&parseInt(_0x57d1f2[_0x10c3('0x9')])>=0x1&&parseInt(_0x57d1f2[_0x10c3('0x9')])<=0xa?parseInt(_0x57d1f2[_0x10c3('0x9')])*0x3e8:0x5*0x3e8};try{_0x5b570e['headers']=_0x57d1f2[_0x10c3('0xb')]?JSON[_0x10c3('0xc')](Mustache[_0x10c3('0x7')](_0x57d1f2['data6'],_0x4d0e97)):{};}catch(_0x19abcd){logger[_0x10c3('0xd')](_0x19abcd[_0x10c3('0xe')]);}switch(_0x57d1f2[_0x10c3('0x5')][_0x10c3('0x6')]()){case _0x10c3('0xf'):case _0x10c3('0x10'):_0x4f70fe=null;_0x5b570e['qs']=_0x4d0e97;break;case _0x10c3('0x11'):case _0x10c3('0x12'):if(_0x57d1f2[_0x10c3('0x13')]){try{_0x4f70fe=JSON['parse'](Mustache['render'](_0x57d1f2[_0x10c3('0x13')],_0x4d0e97));_0x5b570e[_0x10c3('0x14')]=_0x4f70fe;}catch(_0x372c0){logger['error'](_0x372c0[_0x10c3('0xe')]);logger[_0x10c3('0xd')](_0x10c3('0x15'));}}else{_0x4f70fe=_0x4d0e97;_0x5b570e[_0x10c3('0x14')]=_0x4f70fe;}break;}logger['info'](util[_0x10c3('0x16')](_0x10c3('0x17'),_0x57d1f2[_0x10c3('0x5')],_0x57d1f2[_0x10c3('0x8')],JSON[_0x10c3('0x18')](_0x5b570e)));rp(_0x5b570e)[_0x10c3('0x19')](function(_0x37c05e){_0x4f70fe=!_['isNil'](_0x4f70fe)?_0x10c3('0x1a')+_0x4f70fe:'';_0x431d18=typeof _0x37c05e[_0x10c3('0x14')]===_0x10c3('0x1b')?JSON[_0x10c3('0x18')](_0x37c05e[_0x10c3('0x14')]):_0x37c05e['body'];logger[_0x10c3('0x1c')](util['format']('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x57d1f2[_0x10c3('0x5')],_0x57d1f2[_0x10c3('0x8')],_0x37c05e['statusCode'],_0x431d18));})['catch'](function(_0x569072){logger[_0x10c3('0xd')](util[_0x10c3('0x16')](_0x10c3('0x1d'),_0x57d1f2[_0x10c3('0x5')],_0x57d1f2[_0x10c3('0x8')],_0x569072[_0x10c3('0x1e')],_0x569072[_0x10c3('0x1f')],_0x569072[_0x10c3('0x20')]));});};
\ No newline at end of file
index f28d591..2be4b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5e=['../../config/logger','routing','client','http','then','debug','rpc','error','message','result','catch','exports','jayson/promise'];(function(_0x507306,_0x1cc862){var _0x1f62b6=function(_0x3430a4){while(--_0x3430a4){_0x507306['push'](_0x507306['shift']());}};_0x1f62b6(++_0x1cc862);}(_0xaa5e,0x1ed));var _0xeaa5=function(_0x4e32c5,_0x45bb0a){_0x4e32c5=_0x4e32c5-0x0;var _0xa0232=_0xaa5e[_0x4e32c5];return _0xa0232;};'use strict';var jayson=require(_0xeaa5('0x0'));var BPromise=require('bluebird');var logger=require(_0xeaa5('0x1'))(_0xeaa5('0x2'));var client=jayson[_0xeaa5('0x3')][_0xeaa5('0x4')]({'port':0x2329});client['Request']=function(_0x597c58,_0x5aebc9){return new BPromise(function(_0x5e1c98,_0x593676){return client['request'](_0x597c58,_0x5aebc9)[_0xeaa5('0x5')](function(_0x112583){logger[_0xeaa5('0x6')](_0xeaa5('0x7'),_0xeaa5('0x2'),_0x597c58,_0x5aebc9,_0x112583);if(_0x112583[_0xeaa5('0x8')]){logger[_0xeaa5('0x8')]('rpc','routing',_0x597c58,_0x112583[_0xeaa5('0x8')][_0xeaa5('0x9')],_0x5aebc9);return _0x593676(_0x112583['error']['message']);}else{return _0x5e1c98(_0x112583[_0xeaa5('0xa')]);}})[_0xeaa5('0xb')](function(_0x1d5ad5){logger[_0xeaa5('0x8')](_0xeaa5('0x7'),'routing',_0x597c58,_0x1d5ad5,_0x5aebc9);return _0x593676(_0x1d5ad5);});});};module[_0xeaa5('0xc')]=client;
\ No newline at end of file
+var _0x2e19=['http','Request','then','rpc','error','message','catch','exports','jayson/promise','bluebird','../../config/logger','routing','client'];(function(_0xdb6640,_0x3a3aa6){var _0x2cb48c=function(_0x58a66e){while(--_0x58a66e){_0xdb6640['push'](_0xdb6640['shift']());}};_0x2cb48c(++_0x3a3aa6);}(_0x2e19,0xb1));var _0x92e1=function(_0x3663a0,_0x2a7ef4){_0x3663a0=_0x3663a0-0x0;var _0x216ff4=_0x2e19[_0x3663a0];return _0x216ff4;};'use strict';var jayson=require(_0x92e1('0x0'));var BPromise=require(_0x92e1('0x1'));var logger=require(_0x92e1('0x2'))(_0x92e1('0x3'));var client=jayson[_0x92e1('0x4')][_0x92e1('0x5')]({'port':0x2329});client[_0x92e1('0x6')]=function(_0x55d8b8,_0x17377d){return new BPromise(function(_0x516f50,_0x2ab27d){return client['request'](_0x55d8b8,_0x17377d)[_0x92e1('0x7')](function(_0x168b8e){logger['debug'](_0x92e1('0x8'),_0x92e1('0x3'),_0x55d8b8,_0x17377d,_0x168b8e);if(_0x168b8e[_0x92e1('0x9')]){logger[_0x92e1('0x9')](_0x92e1('0x8'),_0x92e1('0x3'),_0x55d8b8,_0x168b8e[_0x92e1('0x9')][_0x92e1('0xa')],_0x17377d);return _0x2ab27d(_0x168b8e[_0x92e1('0x9')][_0x92e1('0xa')]);}else{return _0x516f50(_0x168b8e['result']);}})[_0x92e1('0xb')](function(_0x451f35){logger[_0x92e1('0x9')](_0x92e1('0x8'),'routing',_0x55d8b8,_0x451f35,_0x17377d);return _0x2ab27d(_0x451f35);});});};module[_0x92e1('0xc')]=client;
\ No newline at end of file
index eb2926e..100f38b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fe=['Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency'];(function(_0x2e88a9,_0x217e71){var _0x26ffff=function(_0x554d60){while(--_0x554d60){_0x2e88a9['push'](_0x2e88a9['shift']());}};_0x26ffff(++_0x217e71);}(_0xe5fe,0x151));var _0xee5f=function(_0x3f9409,_0x5a0cf5){_0x3f9409=_0x3f9409-0x0;var _0x261d7a=_0xe5fe[_0x3f9409];return _0x261d7a;};'use strict';var server=require(_0xee5f('0x0'));var Realtime=require(_0xee5f('0x1'));var EmailChannel=require(_0xee5f('0x2'));var mailAccount=require(_0xee5f('0x3'));var setting=require(_0xee5f('0x4'));var logger=require(_0xee5f('0x5'))(_0xee5f('0x6'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xee5f('0x7')]()[_0xee5f('0x8')](mailAccount[_0xee5f('0x9')]())[_0xee5f('0x8')](realtime[_0xee5f('0xa')]())[_0xee5f('0x8')](function(){email[_0xee5f('0xb')](realtime[_0xee5f('0xc')]);return realtime;});}function main(){return server[_0xee5f('0xd')](realtime,email)[_0xee5f('0x8')](function(){return initRealtime();})['then'](function(){return setting['getSettings']();})['then'](function(_0x5642bc){return setInterval(initRealtime,_0x5642bc[_0xee5f('0xe')]*0x3e8);})['catch'](function(_0x20c66d){logger['error'](_0xee5f('0xf'),_0x20c66d);});}main();
\ No newline at end of file
+var _0x8ba4=['./rpc/mailAccount','../../config/logger','email','resolve','then','initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./server','./realtime','./lib/email'];(function(_0x39ed4d,_0x1a7d7b){var _0x25de92=function(_0x135ef1){while(--_0x135ef1){_0x39ed4d['push'](_0x39ed4d['shift']());}};_0x25de92(++_0x1a7d7b);}(_0x8ba4,0x162));var _0x48ba=function(_0x5534fe,_0x43c22e){_0x5534fe=_0x5534fe-0x0;var _0x3d1dc2=_0x8ba4[_0x5534fe];return _0x3d1dc2;};'use strict';var server=require(_0x48ba('0x0'));var Realtime=require(_0x48ba('0x1'));var EmailChannel=require(_0x48ba('0x2'));var mailAccount=require(_0x48ba('0x3'));var setting=require('./rpc/setting');var logger=require(_0x48ba('0x4'))(_0x48ba('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x48ba('0x6')]()[_0x48ba('0x7')](mailAccount['getMailAccounts']())[_0x48ba('0x7')](realtime[_0x48ba('0x8')]())[_0x48ba('0x7')](function(){email[_0x48ba('0x9')](realtime[_0x48ba('0xa')]);return realtime;});}function main(){return server[_0x48ba('0xb')](realtime,email)[_0x48ba('0x7')](function(){return initRealtime();})[_0x48ba('0x7')](function(){return setting[_0x48ba('0xc')]();})[_0x48ba('0x7')](function(_0x2e100d){return setInterval(initRealtime,_0x2e100d[_0x48ba('0xd')]*0x3e8);})[_0x48ba('0xe')](function(_0x49f1ef){logger[_0x48ba('0xf')](_0x48ba('0x10'),_0x49f1ef);});}main();
\ No newline at end of file
index 7e2b03a..5886b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d5=['./smtp','../rpc/mailAccount','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','status','messageStatus','total','stringify','mailAccount:update','hasOwnProperty','service','provider','handleImapBox','bind','handleImapEmail','error','handleImapError','connected','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','lastSync','sendMail','send','verifySmtp','Smtp','verify','moment','bluebird','md5','ioredis','email','redis','defaults','localhost'];(function(_0x2e4573,_0x34db2c){var _0x3d6d10=function(_0x52fdab){while(--_0x52fdab){_0x2e4573['push'](_0x2e4573['shift']());}};_0x3d6d10(++_0x34db2c);}(_0x30d5,0x188));var _0x530d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x30d5[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var moment=require(_0x530d('0x0'));var BPromise=require(_0x530d('0x1'));var md5=require(_0x530d('0x2'));var Redis=require(_0x530d('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x530d('0x4'));config[_0x530d('0x5')]=_[_0x530d('0x6')](config[_0x530d('0x5')],{'host':_0x530d('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var EmailImap=require('./imap');var EmailSmtp=require(_0x530d('0x8'));var mailAccount=require(_0x530d('0x9'));var md5Accounts={};function EmailChannel(_0x133fed){logger['info']('start\x20email\x20channel');this['mailAccounts']=_0x133fed[_0x530d('0xa')];this[_0x530d('0xb')]={};this[_0x530d('0xc')]=new EmailSmtp();}EmailChannel[_0x530d('0xd')][_0x530d('0xe')]=function(_0xa27235){var _0x12e291=this[_0x530d('0xa')][_0xa27235];var _0x498b0f={'id':_0x12e291['id'],'name':_0x12e291[_0x530d('0xf')],'key':_0x12e291[_0x530d('0x10')],'active':_0x12e291[_0x530d('0x11')],'Imap':{'status':_0x12e291[_0x530d('0x12')][_0x530d('0x13')],'messageStatus':_0x12e291[_0x530d('0x12')][_0x530d('0x14')],'total':_0x12e291[_0x530d('0x12')][_0x530d('0x15')]}};if(_['isNil'](md5Accounts[_0xa27235])){md5Accounts[_0xa27235]={};}var _0x26c9ff=md5(JSON[_0x530d('0x16')](_0x498b0f));if(md5Accounts[_0xa27235][_0x530d('0x2')]!==_0x26c9ff){md5Accounts[_0xa27235][_0x530d('0x2')]=_0x26c9ff;io['emit'](_0x530d('0x17'),_0x498b0f);}};EmailChannel[_0x530d('0xd')]['refresh']=function(_0x7049f6){for(var _0x1fec5a in _0x7049f6){if(_0x7049f6[_0x530d('0x18')](_0x1fec5a)){if(_0x7049f6[_0x1fec5a][_0x530d('0x12')]&&_0x7049f6[_0x1fec5a]['active']){var _0xe6480d=_0x7049f6[_0x1fec5a]['Imap'];if(!_0xe6480d[_0x530d('0x19')]&&_0x7049f6[_0x1fec5a][_0x530d('0x1a')]!=='custom')_0xe6480d[_0x530d('0x19')]=_0x7049f6[_0x1fec5a]['provider'];if(!this['imapAccounts'][_0x530d('0x18')](_0xe6480d['id'])){this['imapAccounts'][_0xe6480d['id']]=new EmailImap(_0xe6480d,_0x7049f6[_0x1fec5a][_0x530d('0x4')]);this[_0x530d('0xb')][_0xe6480d['id']]['on']('box',this[_0x530d('0x1b')][_0x530d('0x1c')](this,_0x1fec5a));this['imapAccounts'][_0xe6480d['id']]['on'](_0x530d('0x4'),this[_0x530d('0x1d')][_0x530d('0x1c')](this,_0x1fec5a));this[_0x530d('0xb')][_0xe6480d['id']]['on']('end',this['handleImapEnd'][_0x530d('0x1c')](this,_0x1fec5a));this[_0x530d('0xb')][_0xe6480d['id']]['on'](_0x530d('0x1e'),this[_0x530d('0x1f')][_0x530d('0x1c')](this,_0x1fec5a));}}else{if(_['isNil'](this['mailAccounts'][_0x1fec5a][_0x530d('0x12')])){this[_0x530d('0xa')][_0x1fec5a][_0x530d('0x12')]={};}this[_0x530d('0xa')][_0x1fec5a][_0x530d('0x12')]['status']='disabled';this[_0x530d('0xa')][_0x1fec5a]['Imap'][_0x530d('0x14')]='';this[_0x530d('0xe')](_0x1fec5a);}}}};EmailChannel[_0x530d('0xd')][_0x530d('0x1b')]=function(_0x47165a,_0x368eb3){if(this['mailAccounts'][_0x47165a]){this[_0x530d('0xa')][_0x47165a][_0x530d('0x12')][_0x530d('0x13')]=_0x530d('0x20');this[_0x530d('0xa')][_0x47165a]['Imap']['messageStatus']=_0x368eb3[_0x530d('0xf')];if(_0x368eb3[_0x530d('0x21')]){this[_0x530d('0xa')][_0x47165a]['Imap'][_0x530d('0x15')]=_0x368eb3[_0x530d('0x21')][_0x530d('0x15')];}return this[_0x530d('0xe')](_0x47165a);}};EmailChannel[_0x530d('0xd')]['handleImapEmail']=function(_0x5ee1ce,_0x1df417){logger[_0x530d('0x22')](_0x530d('0x23'),_0x1df417[_0x530d('0x24')],_0x1df417[_0x530d('0x25')],_0x1df417[_0x530d('0x26')],_0x5ee1ce);if(this['mailAccounts'][_0x5ee1ce]){return mailAccount[_0x530d('0x27')](_0x5ee1ce,_0x1df417)[_0x530d('0x28')](function(_0x3b44f0){if(_0x3b44f0){logger[_0x530d('0x22')]('Mail\x20accepted\x20from\x20routing');}})[_0x530d('0x29')](function(_0x5329a6){logger[_0x530d('0x1e')](_0x530d('0x2a'),JSON[_0x530d('0x16')](_0x5329a6));});}};EmailChannel[_0x530d('0xd')][_0x530d('0x2b')]=function(_0x1d627a){if(this[_0x530d('0xa')][_0x1d627a]&&this[_0x530d('0xa')][_0x1d627a][_0x530d('0x12')]){if(this[_0x530d('0xb')][this[_0x530d('0xa')][_0x1d627a][_0x530d('0x12')]['id']]){delete this[_0x530d('0xb')][this[_0x530d('0xa')][_0x1d627a]['Imap']['id']];}this['mailAccounts'][_0x1d627a][_0x530d('0x12')][_0x530d('0x2c')]=moment();this[_0x530d('0xe')](_0x1d627a);}};EmailChannel[_0x530d('0xd')][_0x530d('0x1f')]=function(_0x21f252,_0xbfed39){if(this[_0x530d('0xa')][_0x21f252]){this[_0x530d('0xa')][_0x21f252][_0x530d('0x12')]['status']='error';this[_0x530d('0xa')][_0x21f252]['Imap'][_0x530d('0x14')]=_0xbfed39;return this[_0x530d('0xe')](_0x21f252);}};EmailChannel[_0x530d('0xd')][_0x530d('0x2d')]=function(_0x4368d3,_0x331edd){return this['smtp'][_0x530d('0x2e')](_0x4368d3,_0x331edd);};EmailChannel['prototype'][_0x530d('0x2f')]=function(_0x5e354e){var _0x34b010=this;if(this['mailAccounts'][_0x5e354e['id']]){if(_['isNil'](this[_0x530d('0xa')][_0x5e354e['id']][_0x530d('0x30')])){this[_0x530d('0xa')][_0x5e354e['id']][_0x530d('0x30')]={};}this[_0x530d('0xa')][_0x5e354e['id']][_0x530d('0x30')][_0x530d('0x2c')]=moment();return new BPromise(function(_0x5962e9,_0x4286c1){return _0x34b010[_0x530d('0xc')][_0x530d('0x31')](_0x5e354e)[_0x530d('0x28')](function(_0x23b3d9){_0x34b010[_0x530d('0xa')][_0x5e354e['id']][_0x530d('0x30')][_0x530d('0x13')]='verified';_0x34b010[_0x530d('0xa')][_0x5e354e['id']]['Smtp'][_0x530d('0x14')]='';_0x34b010[_0x530d('0xe')](_0x5e354e['id']);_0x5962e9(_0x23b3d9);})['catch'](function(_0x49f3ac){_0x34b010[_0x530d('0xa')][_0x5e354e['id']][_0x530d('0x30')][_0x530d('0x13')]=_0x530d('0x1e');_0x34b010['mailAccounts'][_0x5e354e['id']][_0x530d('0x30')][_0x530d('0x14')]=_0x49f3ac;_0x34b010[_0x530d('0xe')](_0x5e354e['id']);_0x4286c1(_0x49f3ac);});});}return this[_0x530d('0xc')]['verify'](_0x5e354e);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0xc1a8=['moment','bluebird','md5','ioredis','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','./smtp','info','mailAccounts','smtp','emit','name','key','Imap','status','messageStatus','total','isNil','stringify','mailAccount:update','prototype','refresh','hasOwnProperty','active','provider','custom','service','imapAccounts','handleImapBox','bind','handleImapEmail','end','error','handleImapError','disabled','connected','messages','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','verifySmtp','Smtp','verified','lodash'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xc1a8,0x180));var _0x8c1a=function(_0x2b8347,_0x14e3f2){_0x2b8347=_0x2b8347-0x0;var _0x15e93e=_0xc1a8[_0x2b8347];return _0x15e93e;};'use strict';var _=require(_0x8c1a('0x0'));var moment=require(_0x8c1a('0x1'));var BPromise=require(_0x8c1a('0x2'));var md5=require(_0x8c1a('0x3'));var Redis=require(_0x8c1a('0x4'));var config=require('../../../config/environment');var logger=require(_0x8c1a('0x5'))(_0x8c1a('0x6'));config[_0x8c1a('0x7')]=_['defaults'](config[_0x8c1a('0x7')],{'host':_0x8c1a('0x8'),'port':0x18eb});var io=require(_0x8c1a('0x9'))(new Redis(config[_0x8c1a('0x7')]));var EmailImap=require(_0x8c1a('0xa'));var EmailSmtp=require(_0x8c1a('0xb'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x1fd19f){logger[_0x8c1a('0xc')]('start\x20email\x20channel');this[_0x8c1a('0xd')]=_0x1fd19f[_0x8c1a('0xd')];this['imapAccounts']={};this[_0x8c1a('0xe')]=new EmailSmtp();}EmailChannel['prototype'][_0x8c1a('0xf')]=function(_0x56effe){var _0x3e029e=this[_0x8c1a('0xd')][_0x56effe];var _0x478232={'id':_0x3e029e['id'],'name':_0x3e029e[_0x8c1a('0x10')],'key':_0x3e029e[_0x8c1a('0x11')],'active':_0x3e029e['active'],'Imap':{'status':_0x3e029e[_0x8c1a('0x12')][_0x8c1a('0x13')],'messageStatus':_0x3e029e[_0x8c1a('0x12')][_0x8c1a('0x14')],'total':_0x3e029e['Imap'][_0x8c1a('0x15')]}};if(_[_0x8c1a('0x16')](md5Accounts[_0x56effe])){md5Accounts[_0x56effe]={};}var _0x2d2a8f=md5(JSON[_0x8c1a('0x17')](_0x478232));if(md5Accounts[_0x56effe][_0x8c1a('0x3')]!==_0x2d2a8f){md5Accounts[_0x56effe][_0x8c1a('0x3')]=_0x2d2a8f;io[_0x8c1a('0xf')](_0x8c1a('0x18'),_0x478232);}};EmailChannel[_0x8c1a('0x19')][_0x8c1a('0x1a')]=function(_0x4b275a){for(var _0x55f0ff in _0x4b275a){if(_0x4b275a[_0x8c1a('0x1b')](_0x55f0ff)){if(_0x4b275a[_0x55f0ff]['Imap']&&_0x4b275a[_0x55f0ff][_0x8c1a('0x1c')]){var _0x4fd2a5=_0x4b275a[_0x55f0ff][_0x8c1a('0x12')];if(!_0x4fd2a5['service']&&_0x4b275a[_0x55f0ff][_0x8c1a('0x1d')]!==_0x8c1a('0x1e'))_0x4fd2a5[_0x8c1a('0x1f')]=_0x4b275a[_0x55f0ff][_0x8c1a('0x1d')];if(!this[_0x8c1a('0x20')][_0x8c1a('0x1b')](_0x4fd2a5['id'])){this['imapAccounts'][_0x4fd2a5['id']]=new EmailImap(_0x4fd2a5,_0x4b275a[_0x55f0ff][_0x8c1a('0x6')]);this['imapAccounts'][_0x4fd2a5['id']]['on']('box',this[_0x8c1a('0x21')][_0x8c1a('0x22')](this,_0x55f0ff));this[_0x8c1a('0x20')][_0x4fd2a5['id']]['on'](_0x8c1a('0x6'),this[_0x8c1a('0x23')]['bind'](this,_0x55f0ff));this[_0x8c1a('0x20')][_0x4fd2a5['id']]['on'](_0x8c1a('0x24'),this['handleImapEnd'][_0x8c1a('0x22')](this,_0x55f0ff));this[_0x8c1a('0x20')][_0x4fd2a5['id']]['on'](_0x8c1a('0x25'),this[_0x8c1a('0x26')][_0x8c1a('0x22')](this,_0x55f0ff));}}else{if(_[_0x8c1a('0x16')](this[_0x8c1a('0xd')][_0x55f0ff][_0x8c1a('0x12')])){this[_0x8c1a('0xd')][_0x55f0ff][_0x8c1a('0x12')]={};}this['mailAccounts'][_0x55f0ff]['Imap'][_0x8c1a('0x13')]=_0x8c1a('0x27');this[_0x8c1a('0xd')][_0x55f0ff][_0x8c1a('0x12')]['messageStatus']='';this['emit'](_0x55f0ff);}}}};EmailChannel[_0x8c1a('0x19')][_0x8c1a('0x21')]=function(_0x5181e5,_0x1c0c15){if(this[_0x8c1a('0xd')][_0x5181e5]){this[_0x8c1a('0xd')][_0x5181e5][_0x8c1a('0x12')][_0x8c1a('0x13')]=_0x8c1a('0x28');this[_0x8c1a('0xd')][_0x5181e5][_0x8c1a('0x12')][_0x8c1a('0x14')]=_0x1c0c15[_0x8c1a('0x10')];if(_0x1c0c15[_0x8c1a('0x29')]){this['mailAccounts'][_0x5181e5][_0x8c1a('0x12')][_0x8c1a('0x15')]=_0x1c0c15[_0x8c1a('0x29')]['total'];}return this[_0x8c1a('0xf')](_0x5181e5);}};EmailChannel[_0x8c1a('0x19')][_0x8c1a('0x23')]=function(_0xfaedc3,_0x254951){logger[_0x8c1a('0xc')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x254951[_0x8c1a('0x2a')],_0x254951[_0x8c1a('0x2b')],_0x254951[_0x8c1a('0x2c')],_0xfaedc3);if(this[_0x8c1a('0xd')][_0xfaedc3]){return mailAccount[_0x8c1a('0x2d')](_0xfaedc3,_0x254951)[_0x8c1a('0x2e')](function(_0x34f00e){if(_0x34f00e){logger[_0x8c1a('0xc')](_0x8c1a('0x2f'));}})[_0x8c1a('0x30')](function(_0x392bf8){logger[_0x8c1a('0x25')](_0x8c1a('0x31'),JSON[_0x8c1a('0x17')](_0x392bf8));});}};EmailChannel[_0x8c1a('0x19')]['handleImapEnd']=function(_0x3dceea){if(this[_0x8c1a('0xd')][_0x3dceea]&&this[_0x8c1a('0xd')][_0x3dceea][_0x8c1a('0x12')]){if(this['imapAccounts'][this[_0x8c1a('0xd')][_0x3dceea][_0x8c1a('0x12')]['id']]){delete this[_0x8c1a('0x20')][this['mailAccounts'][_0x3dceea][_0x8c1a('0x12')]['id']];}this['mailAccounts'][_0x3dceea]['Imap'][_0x8c1a('0x32')]=moment();this[_0x8c1a('0xf')](_0x3dceea);}};EmailChannel[_0x8c1a('0x19')][_0x8c1a('0x26')]=function(_0x18a0d2,_0x38091f){if(this[_0x8c1a('0xd')][_0x18a0d2]){this[_0x8c1a('0xd')][_0x18a0d2][_0x8c1a('0x12')][_0x8c1a('0x13')]='error';this[_0x8c1a('0xd')][_0x18a0d2][_0x8c1a('0x12')][_0x8c1a('0x14')]=_0x38091f;return this[_0x8c1a('0xf')](_0x18a0d2);}};EmailChannel[_0x8c1a('0x19')][_0x8c1a('0x33')]=function(_0x17dc3b,_0x3be339){return this[_0x8c1a('0xe')]['send'](_0x17dc3b,_0x3be339);};EmailChannel['prototype'][_0x8c1a('0x34')]=function(_0x2d7986){var _0x51d840=this;if(this[_0x8c1a('0xd')][_0x2d7986['id']]){if(_[_0x8c1a('0x16')](this[_0x8c1a('0xd')][_0x2d7986['id']][_0x8c1a('0x35')])){this['mailAccounts'][_0x2d7986['id']][_0x8c1a('0x35')]={};}this[_0x8c1a('0xd')][_0x2d7986['id']][_0x8c1a('0x35')][_0x8c1a('0x32')]=moment();return new BPromise(function(_0x21db94,_0x4ebbb1){return _0x51d840[_0x8c1a('0xe')]['verify'](_0x2d7986)['then'](function(_0x345974){_0x51d840[_0x8c1a('0xd')][_0x2d7986['id']][_0x8c1a('0x35')]['status']=_0x8c1a('0x36');_0x51d840[_0x8c1a('0xd')][_0x2d7986['id']][_0x8c1a('0x35')][_0x8c1a('0x14')]='';_0x51d840[_0x8c1a('0xf')](_0x2d7986['id']);_0x21db94(_0x345974);})[_0x8c1a('0x30')](function(_0x18cb0d){_0x51d840[_0x8c1a('0xd')][_0x2d7986['id']][_0x8c1a('0x35')][_0x8c1a('0x13')]=_0x8c1a('0x25');_0x51d840[_0x8c1a('0xd')][_0x2d7986['id']][_0x8c1a('0x35')][_0x8c1a('0x14')]=_0x18cb0d;_0x51d840[_0x8c1a('0xf')](_0x2d7986['id']);_0x4ebbb1(_0x18cb0d);});});}return this[_0x8c1a('0xe')]['verify'](_0x2d7986);};module['exports']=EmailChannel;
\ No newline at end of file
index b14a839..42e878d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['port','tls','autotls','required','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','getHost','anonymous@xcally.com','openBox','handleOpenBox','handleError','emit','box','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','once','closeBox','body','handleMessageBody','handleMessageAttributes','handleMessageEnd','handleSimpleParser','email','handleFetchEnd','handleCloseBox','handleFetchError','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','util','mailparser','simpleParser','iconv','events','EventEmitter','./utils','../../../config/logger','mailbox','INBOX','getAccount','imap','account','handleReady','bind','end','handleEnd','error','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host'];(function(_0x1195ed,_0xc5857e){var _0x26e1a6=function(_0x36232c){while(--_0x36232c){_0x1195ed['push'](_0x1195ed['shift']());}};_0x26e1a6(++_0xc5857e);}(_0xeff8,0x186));var _0x8eff=function(_0x2a56ad,_0x2b94bf){_0x2a56ad=_0x2a56ad-0x0;var _0x425175=_0xeff8[_0x2a56ad];return _0x425175;};'use strict';var _=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var Imap=require('imap');var simpleParser=require(_0x8eff('0x2'))[_0x8eff('0x3')];var Iconv=require(_0x8eff('0x4'))['Iconv'];var EventEmitter=require(_0x8eff('0x5'))[_0x8eff('0x6')];var utils=require(_0x8eff('0x7'));var logger=require(_0x8eff('0x8'))('email');function EmailImap(_0x469641,_0xb54063){this[_0x8eff('0x9')]=_0x8eff('0xa');this['account']=this[_0x8eff('0xb')](_0x469641,_0xb54063);this[_0x8eff('0xc')]=new Imap(this[_0x8eff('0xd')]);this[_0x8eff('0xc')]['once']('ready',this[_0x8eff('0xe')][_0x8eff('0xf')](this));this[_0x8eff('0xc')]['once'](_0x8eff('0x10'),this[_0x8eff('0x11')]['bind'](this));this[_0x8eff('0xc')]['on'](_0x8eff('0x12'),this['handleError']['bind'](this));this[_0x8eff('0xc')][_0x8eff('0x13')]();}util[_0x8eff('0x14')](EmailImap,EventEmitter);EmailImap[_0x8eff('0x15')][_0x8eff('0xb')]=function(_0x56efdf,_0x3e7c01){var _0x212a2e={'connTimeout':_0x56efdf[_0x8eff('0x16')]?_0x56efdf[_0x8eff('0x16')]*0x3e8:0x2710,'authTimeout':_0x56efdf[_0x8eff('0x17')]?_0x56efdf[_0x8eff('0x17')]*0x3e8:0x1388};if(_[_0x8eff('0x18')](_0x56efdf[_0x8eff('0x19')])){if(_0x56efdf[_0x8eff('0x1a')]){_0x212a2e[_0x8eff('0x1b')]=_0x56efdf[_0x8eff('0x1b')];_0x212a2e['password']=_0x56efdf[_0x8eff('0x1c')];}_0x212a2e[_0x8eff('0x1d')]=_0x56efdf[_0x8eff('0x1d')];_0x212a2e[_0x8eff('0x1e')]=_0x56efdf[_0x8eff('0x1e')]||0x3e1;if(_0x56efdf[_0x8eff('0x1f')]){_0x212a2e[_0x8eff('0x1f')]=!![];}else{_0x212a2e[_0x8eff('0x1f')]=![];_0x212a2e[_0x8eff('0x20')]=_0x8eff('0x21');}}else{if(_0x56efdf[_0x8eff('0x22')]){_0x212a2e[_0x8eff('0x23')]=utils[_0x8eff('0x24')](_0x56efdf[_0x8eff('0x25')][_0x8eff('0x26')],_0x56efdf[_0x8eff('0x1b')]);_0x212a2e['user']=_0x56efdf[_0x8eff('0x1b')];}else{_0x212a2e[_0x8eff('0x1b')]=_0x56efdf['user'];_0x212a2e[_0x8eff('0x1c')]=_0x56efdf['password'];}_0x212a2e[_0x8eff('0x1d')]=utils[_0x8eff('0x27')](_0x56efdf[_0x8eff('0x19')]);_0x212a2e[_0x8eff('0x1e')]=0x3e1;_0x212a2e[_0x8eff('0x1f')]=!![];}_0x212a2e['email']=_0x3e7c01||_0x56efdf[_0x8eff('0x1b')]||_0x8eff('0x28');return _0x212a2e;};EmailImap['prototype'][_0x8eff('0xe')]=function(){this[_0x8eff('0xc')][_0x8eff('0x29')](this[_0x8eff('0x9')],![],this[_0x8eff('0x2a')][_0x8eff('0xf')](this));};EmailImap[_0x8eff('0x15')][_0x8eff('0x2a')]=function(_0x516173,_0x3e1607){if(_0x516173){this[_0x8eff('0x2b')](_0x516173,!![]);}else{this[_0x8eff('0x2c')](_0x8eff('0x2d'),_0x3e1607);this[_0x8eff('0x2e')]();}};EmailImap[_0x8eff('0x15')]['handleCloseBox']=function(_0x4ed3b8){if(_0x4ed3b8){this[_0x8eff('0x2b')](_0x4ed3b8,!![]);}else{this[_0x8eff('0xc')][_0x8eff('0x10')]();}};EmailImap['prototype'][_0x8eff('0x2e')]=function(){this[_0x8eff('0xc')][_0x8eff('0x2f')]([_0x8eff('0x30')],this[_0x8eff('0x31')][_0x8eff('0xf')](this));};EmailImap[_0x8eff('0x15')][_0x8eff('0x31')]=function(_0x36a613,_0x1e9a8a){if(_0x36a613){this[_0x8eff('0x2b')](_0x36a613,!![]);}else{if(_0x1e9a8a[_0x8eff('0x32')]){try{var _0x5e0ecb=this[_0x8eff('0xc')][_0x8eff('0x33')](_0x1e9a8a,{'bodies':'','markSeen':!![]});_0x5e0ecb['on'](_0x8eff('0x34'),this[_0x8eff('0x35')]['bind'](this));_0x5e0ecb[_0x8eff('0x36')](_0x8eff('0x12'),this['handleFetchError']['bind'](this));_0x5e0ecb[_0x8eff('0x36')](_0x8eff('0x10'),this['handleFetchEnd']['bind'](this));}catch(_0x51ec38){logger[_0x8eff('0x12')](_0x51ec38);}}else{this['imap'][_0x8eff('0x37')](!![],this['handleCloseBox'][_0x8eff('0xf')](this));}}};EmailImap[_0x8eff('0x15')][_0x8eff('0x35')]=function(_0x1dcab3){_0x1dcab3['on'](_0x8eff('0x38'),this[_0x8eff('0x39')]['bind'](this));_0x1dcab3[_0x8eff('0x36')]('attributes',this[_0x8eff('0x3a')]['bind'](this));_0x1dcab3[_0x8eff('0x36')](_0x8eff('0x10'),this[_0x8eff('0x3b')][_0x8eff('0xf')](this));};EmailImap['prototype'][_0x8eff('0x39')]=function(_0x170a33){simpleParser(_0x170a33,{'Iconv':Iconv},this[_0x8eff('0x3c')]['bind'](this));};EmailImap[_0x8eff('0x15')][_0x8eff('0x3a')]=function(){};EmailImap[_0x8eff('0x15')][_0x8eff('0x3b')]=function(){};EmailImap[_0x8eff('0x15')][_0x8eff('0x3c')]=function(_0x29f68e,_0x26da7a){if(_0x29f68e){logger[_0x8eff('0x12')](_0x29f68e);}else{var _0x5c1277=this;utils['parser'](this[_0x8eff('0xd')],_0x26da7a,function(_0x114f8e){_0x5c1277[_0x8eff('0x2c')](_0x8eff('0x3d'),_0x114f8e);});}};EmailImap[_0x8eff('0x15')][_0x8eff('0x3e')]=function(){this[_0x8eff('0xc')]['closeBox'](!![],this[_0x8eff('0x3f')][_0x8eff('0xf')](this));};EmailImap['prototype'][_0x8eff('0x40')]=function(_0x1ad6b3){this[_0x8eff('0x2b')](_0x1ad6b3);this[_0x8eff('0xc')][_0x8eff('0x37')](!![],this[_0x8eff('0x3f')][_0x8eff('0xf')](this));};EmailImap[_0x8eff('0x15')][_0x8eff('0x11')]=function(){this['emit'](_0x8eff('0x10'));};EmailImap[_0x8eff('0x15')][_0x8eff('0x2b')]=function(_0x2fa131,_0x1a5460){logger['error'](_0x8eff('0x2b'),this['account'][_0x8eff('0x3d')],JSON[_0x8eff('0x41')](_0x2fa131));var _0x1e9d99='';if(_0x2fa131){if(_0x2fa131[_0x8eff('0x42')]){_0x1e9d99=_0x2fa131['textCode'];}else{for(var _0xa0eabb in _0x2fa131){if(_0x2fa131[_0x8eff('0x43')](_0xa0eabb)){_0x1e9d99+=_[_0x8eff('0x44')](_0xa0eabb)+':\x20'+_0x2fa131[_0xa0eabb]+'\x0a';}}}}if(_0x1a5460){this['imap']['end']();}else{this[_0x8eff('0x2c')](_0x8eff('0x12'),_0x1e9d99);this[_0x8eff('0x2c')](_0x8eff('0x10'));}};module[_0x8eff('0x45')]=EmailImap;
\ No newline at end of file
+var _0x33af=['service','user','password','host','port','tls','autotls','required','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','getHost','anonymous@xcally.com','prototype','openBox','emit','readUnseen','handleCloseBox','end','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','handleFetchEnd','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','closeBox','stringify','textCode','hasOwnProperty','exports','util','mailparser','simpleParser','iconv','Iconv','events','EventEmitter','../../../config/logger','email','mailbox','INBOX','account','getAccount','imap','once','ready','handleReady','bind','handleEnd','error','handleError','connect','connTimeout','authTimeout'];(function(_0x44bb1d,_0x130b30){var _0x380ed5=function(_0x4c217e){while(--_0x4c217e){_0x44bb1d['push'](_0x44bb1d['shift']());}};_0x380ed5(++_0x130b30);}(_0x33af,0xec));var _0xf33a=function(_0x4b4865,_0xb43449){_0x4b4865=_0x4b4865-0x0;var _0x190dc2=_0x33af[_0x4b4865];return _0x190dc2;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var Imap=require('imap');var simpleParser=require(_0xf33a('0x1'))[_0xf33a('0x2')];var Iconv=require(_0xf33a('0x3'))[_0xf33a('0x4')];var EventEmitter=require(_0xf33a('0x5'))[_0xf33a('0x6')];var utils=require('./utils');var logger=require(_0xf33a('0x7'))(_0xf33a('0x8'));function EmailImap(_0x583e54,_0xc0dd13){this[_0xf33a('0x9')]=_0xf33a('0xa');this[_0xf33a('0xb')]=this[_0xf33a('0xc')](_0x583e54,_0xc0dd13);this[_0xf33a('0xd')]=new Imap(this['account']);this[_0xf33a('0xd')][_0xf33a('0xe')](_0xf33a('0xf'),this[_0xf33a('0x10')][_0xf33a('0x11')](this));this[_0xf33a('0xd')]['once']('end',this[_0xf33a('0x12')][_0xf33a('0x11')](this));this[_0xf33a('0xd')]['on'](_0xf33a('0x13'),this[_0xf33a('0x14')]['bind'](this));this[_0xf33a('0xd')][_0xf33a('0x15')]();}util['inherits'](EmailImap,EventEmitter);EmailImap['prototype'][_0xf33a('0xc')]=function(_0x1b3bf0,_0x17043){var _0x153bda={'connTimeout':_0x1b3bf0[_0xf33a('0x16')]?_0x1b3bf0[_0xf33a('0x16')]*0x3e8:0x2710,'authTimeout':_0x1b3bf0[_0xf33a('0x17')]?_0x1b3bf0[_0xf33a('0x17')]*0x3e8:0x1388};if(_['isNil'](_0x1b3bf0[_0xf33a('0x18')])){if(_0x1b3bf0['authentication']){_0x153bda[_0xf33a('0x19')]=_0x1b3bf0[_0xf33a('0x19')];_0x153bda['password']=_0x1b3bf0[_0xf33a('0x1a')];}_0x153bda[_0xf33a('0x1b')]=_0x1b3bf0['host'];_0x153bda[_0xf33a('0x1c')]=_0x1b3bf0[_0xf33a('0x1c')]||0x3e1;if(_0x1b3bf0[_0xf33a('0x1d')]){_0x153bda[_0xf33a('0x1d')]=!![];}else{_0x153bda['tls']=![];_0x153bda[_0xf33a('0x1e')]=_0xf33a('0x1f');}}else{if(_0x1b3bf0[_0xf33a('0x20')]){_0x153bda[_0xf33a('0x21')]=utils[_0xf33a('0x22')](_0x1b3bf0[_0xf33a('0x23')][_0xf33a('0x24')],_0x1b3bf0[_0xf33a('0x19')]);_0x153bda[_0xf33a('0x19')]=_0x1b3bf0[_0xf33a('0x19')];}else{_0x153bda['user']=_0x1b3bf0[_0xf33a('0x19')];_0x153bda[_0xf33a('0x1a')]=_0x1b3bf0[_0xf33a('0x1a')];}_0x153bda[_0xf33a('0x1b')]=utils[_0xf33a('0x25')](_0x1b3bf0['service']);_0x153bda[_0xf33a('0x1c')]=0x3e1;_0x153bda['tls']=!![];}_0x153bda[_0xf33a('0x8')]=_0x17043||_0x1b3bf0[_0xf33a('0x19')]||_0xf33a('0x26');return _0x153bda;};EmailImap[_0xf33a('0x27')][_0xf33a('0x10')]=function(){this['imap'][_0xf33a('0x28')](this[_0xf33a('0x9')],![],this['handleOpenBox']['bind'](this));};EmailImap[_0xf33a('0x27')]['handleOpenBox']=function(_0x5cf981,_0x38eba2){if(_0x5cf981){this['handleError'](_0x5cf981,!![]);}else{this[_0xf33a('0x29')]('box',_0x38eba2);this[_0xf33a('0x2a')]();}};EmailImap[_0xf33a('0x27')][_0xf33a('0x2b')]=function(_0x729fca){if(_0x729fca){this[_0xf33a('0x14')](_0x729fca,!![]);}else{this[_0xf33a('0xd')][_0xf33a('0x2c')]();}};EmailImap[_0xf33a('0x27')][_0xf33a('0x2a')]=function(){this[_0xf33a('0xd')][_0xf33a('0x2d')]([_0xf33a('0x2e')],this[_0xf33a('0x2f')][_0xf33a('0x11')](this));};EmailImap[_0xf33a('0x27')]['handleReadUnseen']=function(_0x627fd2,_0x293cb5){if(_0x627fd2){this[_0xf33a('0x14')](_0x627fd2,!![]);}else{if(_0x293cb5[_0xf33a('0x30')]){try{var _0x4ee492=this[_0xf33a('0xd')][_0xf33a('0x31')](_0x293cb5,{'bodies':'','markSeen':!![]});_0x4ee492['on'](_0xf33a('0x32'),this[_0xf33a('0x33')][_0xf33a('0x11')](this));_0x4ee492[_0xf33a('0xe')]('error',this[_0xf33a('0x34')][_0xf33a('0x11')](this));_0x4ee492[_0xf33a('0xe')](_0xf33a('0x2c'),this[_0xf33a('0x35')]['bind'](this));}catch(_0x578998){logger[_0xf33a('0x13')](_0x578998);}}else{this['imap']['closeBox'](!![],this['handleCloseBox'][_0xf33a('0x11')](this));}}};EmailImap[_0xf33a('0x27')]['handleFetchMessage']=function(_0x21f250){_0x21f250['on']('body',this[_0xf33a('0x36')][_0xf33a('0x11')](this));_0x21f250[_0xf33a('0xe')](_0xf33a('0x37'),this[_0xf33a('0x38')][_0xf33a('0x11')](this));_0x21f250['once'](_0xf33a('0x2c'),this[_0xf33a('0x39')]['bind'](this));};EmailImap[_0xf33a('0x27')][_0xf33a('0x36')]=function(_0x3e0a98){simpleParser(_0x3e0a98,{'Iconv':Iconv},this['handleSimpleParser'][_0xf33a('0x11')](this));};EmailImap[_0xf33a('0x27')][_0xf33a('0x38')]=function(){};EmailImap[_0xf33a('0x27')][_0xf33a('0x39')]=function(){};EmailImap[_0xf33a('0x27')][_0xf33a('0x3a')]=function(_0x128baf,_0xd488ef){if(_0x128baf){logger['error'](_0x128baf);}else{var _0x31028b=this;utils[_0xf33a('0x3b')](this['account'],_0xd488ef,function(_0x1e8800){_0x31028b['emit']('email',_0x1e8800);});}};EmailImap[_0xf33a('0x27')][_0xf33a('0x35')]=function(){this['imap'][_0xf33a('0x3c')](!![],this[_0xf33a('0x2b')][_0xf33a('0x11')](this));};EmailImap['prototype'][_0xf33a('0x34')]=function(_0x21b8da){this['handleError'](_0x21b8da);this[_0xf33a('0xd')][_0xf33a('0x3c')](!![],this[_0xf33a('0x2b')][_0xf33a('0x11')](this));};EmailImap[_0xf33a('0x27')]['handleEnd']=function(){this[_0xf33a('0x29')](_0xf33a('0x2c'));};EmailImap[_0xf33a('0x27')][_0xf33a('0x14')]=function(_0x253f21,_0x5ef2b8){logger[_0xf33a('0x13')](_0xf33a('0x14'),this[_0xf33a('0xb')]['email'],JSON[_0xf33a('0x3d')](_0x253f21));var _0x43889e='';if(_0x253f21){if(_0x253f21[_0xf33a('0x3e')]){_0x43889e=_0x253f21[_0xf33a('0x3e')];}else{for(var _0x2e36f2 in _0x253f21){if(_0x253f21[_0xf33a('0x3f')](_0x2e36f2)){_0x43889e+=_['upperFirst'](_0x2e36f2)+':\x20'+_0x253f21[_0x2e36f2]+'\x0a';}}}}if(_0x5ef2b8){this[_0xf33a('0xd')][_0xf33a('0x2c')]();}else{this[_0xf33a('0x29')](_0xf33a('0x13'),_0x43889e);this[_0xf33a('0x29')]('end');}};module[_0xf33a('0x40')]=EmailImap;
\ No newline at end of file
index 1e65228..b690c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd732=['use','compile','verify','toString','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0xd732,0x69));var _0x2d73=function(_0x182df1,_0x55f557){_0x182df1=_0x182df1-0x0;var _0xd0e2c0=_0xd732[_0x182df1];return _0xd0e2c0;};'use strict';var nodemailer=require(_0x2d73('0x0'));var inlineBase64=require(_0x2d73('0x1'));function EmailSmtp(){}EmailSmtp[_0x2d73('0x2')][_0x2d73('0x3')]=function(_0x228f1e,_0xeb4fb){return new Promise(function(_0x116b62,_0x4cae1f){var _0x3db715=nodemailer[_0x2d73('0x4')](_0x228f1e);_0x3db715[_0x2d73('0x5')](_0x2d73('0x6'),inlineBase64());_0x3db715['sendMail'](_0xeb4fb,function(_0xb19956,_0x5991d4){if(_0xb19956){_0x4cae1f(_0xb19956['toString']());}else{_0x116b62(_0x5991d4);}});});};EmailSmtp['prototype'][_0x2d73('0x7')]=function(_0x3039a3){return new Promise(function(_0xad468,_0xcf6b52){var _0x25e6e4=nodemailer[_0x2d73('0x4')](_0x3039a3);_0x25e6e4['verify'](function(_0x4c5b0b,_0x48a952){if(_0x4c5b0b){_0xcf6b52(_0x4c5b0b[_0x2d73('0x8')]());}else{if(_0x48a952){_0xad468(_0x48a952);}else{_0xcf6b52('Not\x20verifired');}}});});};module[_0x2d73('0x9')]=EmailSmtp;
\ No newline at end of file
+var _0xd518=['toString','prototype','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','createTransport','use','compile','sendMail'];(function(_0x2cc0b3,_0x120bf1){var _0x1667ef=function(_0x3abcb4){while(--_0x3abcb4){_0x2cc0b3['push'](_0x2cc0b3['shift']());}};_0x1667ef(++_0x120bf1);}(_0xd518,0xaa));var _0x8d51=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd518[_0x3dd15e];return _0x231fd0;};'use strict';var nodemailer=require(_0x8d51('0x0'));var inlineBase64=require(_0x8d51('0x1'));function EmailSmtp(){}EmailSmtp['prototype']['send']=function(_0x1b9475,_0xde6f6c){return new Promise(function(_0x2f3601,_0x420993){var _0x1d18ce=nodemailer[_0x8d51('0x2')](_0x1b9475);_0x1d18ce[_0x8d51('0x3')](_0x8d51('0x4'),inlineBase64());_0x1d18ce[_0x8d51('0x5')](_0xde6f6c,function(_0x4d245c,_0x13975a){if(_0x4d245c){_0x420993(_0x4d245c[_0x8d51('0x6')]());}else{_0x2f3601(_0x13975a);}});});};EmailSmtp[_0x8d51('0x7')][_0x8d51('0x8')]=function(_0xd1de9c){return new Promise(function(_0x276545,_0x38aad9){var _0x585886=nodemailer['createTransport'](_0xd1de9c);_0x585886[_0x8d51('0x8')](function(_0x2a94d5,_0x11fb6c){if(_0x2a94d5){_0x38aad9(_0x2a94d5[_0x8d51('0x6')]());}else{if(_0x11fb6c){_0x276545(_0x11fb6c);}else{_0x38aad9(_0x8d51('0x9'));}}});});};module[_0x8d51('0xa')]=EmailSmtp;
\ No newline at end of file
index 965bc1a..5c88e29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bf5=['Precedence:\x20auto_reply','isAutoreply','parser','from','subject','messageId','inReplyTo','date','format','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','first','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate','name','substring','indexOf','split','length','join','Anonymous','pop','isEmpty','@xcally.com','html','test','includes','<img','attachments','forEach','filename','_SRC','replace','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originCc','originTo','attach','type','attachment-','%s-%s','server/files/attachments/','content','push','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All'];(function(_0x276c6a,_0x2596d6){var _0x2a52f8=function(_0x1946e5){while(--_0x1946e5){_0x276c6a['push'](_0x276c6a['shift']());}};_0x2a52f8(++_0x2596d6);}(_0x5bf5,0xca));var _0x55bf=function(_0x54d453,_0x35881c){_0x54d453=_0x54d453-0x0;var _0x2a5520=_0x5bf5[_0x54d453];return _0x2a5520;};'use strict';var _=require(_0x55bf('0x0'));var moment=require(_0x55bf('0x1'));var random=require(_0x55bf('0x2'));var fs=require('fs');var path=require(_0x55bf('0x3'));var util=require('util');var tnef=require(_0x55bf('0x4'));var logger=require(_0x55bf('0x5'))(_0x55bf('0x6'));var config=require(_0x55bf('0x7'));function getAddress(_0xff46d){var _0x4ef629=_[_0x55bf('0x8')](_0xff46d[_0x55bf('0x9')]);return _0x4ef629&&_0x4ef629[_0x55bf('0xa')]?_0x4ef629[_0x55bf('0xa')]:_0x55bf('0xb')+random[_0x55bf('0xc')](0x6)+'@xcally.com';}function getFirstName(_0x517c25){var _0x425ee0=_[_0x55bf('0x8')](_0x517c25[_0x55bf('0x9')]);if(_0x425ee0&&_0x425ee0[_0x55bf('0xd')]){if(_0x425ee0[_0x55bf('0xd')]==_0x425ee0[_0x55bf('0xa')]){return _0x425ee0['name'][_0x55bf('0xe')](0x0,_0x425ee0[_0x55bf('0xd')][_0x55bf('0xf')]('@'));}var _0x16c5f6=_0x425ee0[_0x55bf('0xd')][_0x55bf('0x10')](/\s+/);return _0x16c5f6[_0x55bf('0x11')]>0x1?_0x16c5f6['slice'](0x0,-0x1)[_0x55bf('0x12')]('\x20'):_0x425ee0[_0x55bf('0xd')];}return _0x55bf('0x13');}function getLastName(_0x302a58){var _0x263bbc=_[_0x55bf('0x8')](_0x302a58[_0x55bf('0x9')]);if(_0x263bbc&&_0x263bbc[_0x55bf('0xd')]){var _0x4b5f3b=_0x263bbc[_0x55bf('0xd')][_0x55bf('0x10')](/\s+/);return _0x4b5f3b[_0x55bf('0x11')]>0x1?_0x4b5f3b[_0x55bf('0x14')]():'';}return'';}function getMails(_0xe50ff8,_0x673798){var _0x3a6462='';for(var _0x40bb71=0x0;_0x40bb71<_0x673798['value'][_0x55bf('0x11')];_0x40bb71+=0x1){if(_0x673798[_0x55bf('0x9')][_0x40bb71][_0x55bf('0xa')]!==_0xe50ff8){if(!_[_0x55bf('0x15')](_0x3a6462)){_0x3a6462+=',';}_0x3a6462+=_0x673798[_0x55bf('0x9')][_0x40bb71][_0x55bf('0xd')]||_0x673798['value'][_0x40bb71][_0x55bf('0xa')]||'';_0x3a6462+='\x20<';_0x3a6462+=_0x673798[_0x55bf('0x9')][_0x40bb71][_0x55bf('0xa')]?_0x673798['value'][_0x40bb71][_0x55bf('0xa')]:_0x55bf('0xb')+random['generate'](0x6)+_0x55bf('0x16');_0x3a6462+='>';}}return _0x3a6462;}function parseEmail(_0x3bf4f,_0x43a918,_0x36158f){if(_0x43a918[_0x55bf('0x17')]){var _0x16cfe9=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x16cfe9[_0x55bf('0x18')](_0x43a918[_0x55bf('0x17')])){_0x43a918[_0x55bf('0x17')]=_0x43a918[_0x55bf('0x17')]['replace'](_0x16cfe9,'');}if(_0x43a918['html'][_0x55bf('0x19')](_0x55bf('0x1a'))){var _0x5f061d=[];_0x43a918[_0x55bf('0x1b')][_0x55bf('0x1c')](_0x4c2c85=>{_0x5f061d['push'](_0x4c2c85[_0x55bf('0x1d')]);});var _0x578ef0=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1ad7f5=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x165bd6=_0x43a918['html']['replace'](_0x1ad7f5,_0x55bf('0x1e'));var _0x5c7ac9=_0x165bd6[_0x55bf('0x1f')](_0x578ef0,'_IMG');for(let _0x2e78d9=0x0;_0x2e78d9<_0x5f061d[_0x55bf('0x11')];_0x2e78d9++){var _0x3bbff5=_0x5c7ac9[_0x55bf('0x1f')]('_IMG',_0x55bf('0x20')+_0x5f061d[_0x2e78d9]+_0x55bf('0x21'));_0x5c7ac9=_0x3bbff5;}_0x43a918[_0x55bf('0x17')]=_0x5c7ac9;}_0x36158f['body']=_0x43a918[_0x55bf('0x17')];}else{_0x36158f[_0x55bf('0x22')]=_0x43a918['textAsHtml'];}if(_0x36158f[_0x55bf('0x22')]){_0x36158f['body']=_0x36158f[_0x55bf('0x22')][_0x55bf('0x1f')](/<a\s+/gi,_0x55bf('0x23'));}if(_0x43a918['to']){_0x36158f[_0x55bf('0x24')]['originTo']=getMails(null,_0x43a918['to']);var _0x56ab8d=getMails(_0x3bf4f[_0x55bf('0x6')],_0x43a918['to']);if(!_[_0x55bf('0x15')](_0x56ab8d)){_0x36158f[_0x55bf('0x24')]['cc']+=_0x56ab8d;}}if(_0x43a918['cc']){_0x36158f[_0x55bf('0x24')][_0x55bf('0x25')]=getMails(null,_0x43a918['cc']);var _0x7becb=getMails(_0x3bf4f[_0x55bf('0x6')],_0x43a918['cc']);if(!_[_0x55bf('0x15')](_0x7becb)){if(!_['isEmpty'](_0x36158f[_0x55bf('0x24')]['cc'])){_0x36158f[_0x55bf('0x24')]['cc']+=',';}_0x36158f[_0x55bf('0x24')]['cc']+=_0x7becb;}}if(!_[_0x55bf('0x19')](_0x36158f['message'][_0x55bf('0x26')],_0x3bf4f[_0x55bf('0x6')])&&!_['includes'](_0x36158f['message'][_0x55bf('0x25')],_0x3bf4f[_0x55bf('0x6')])){_0x36158f['message']['bcc']=_0x3bf4f[_0x55bf('0x6')];}if(_0x43a918[_0x55bf('0x1b')]&&_0x43a918[_0x55bf('0x1b')]['length']){_0x36158f['message'][_0x55bf('0x27')]=_0x43a918[_0x55bf('0x1b')][_0x55bf('0x11')];for(var _0x5d41d1=0x0,_0xd2ac2b,_0x5158f2,_0x2388de;_0x5d41d1<_0x43a918['attachments'][_0x55bf('0x11')];_0x5d41d1+=0x1){if(_0x43a918[_0x55bf('0x1b')][_0x5d41d1][_0x55bf('0x28')]==='attachment'){_0x2388de=_0x43a918[_0x55bf('0x1b')][_0x5d41d1]['filename']||_0x55bf('0x29')+_0x5d41d1;_0xd2ac2b=util['format'](_0x55bf('0x2a'),Date['now'](),_0x2388de);_0x5158f2=path['join'](config['root'],_0x55bf('0x2b'),_0xd2ac2b);fs['writeFileSync'](_0x5158f2,_0x43a918[_0x55bf('0x1b')][_0x5d41d1][_0x55bf('0x2c')]);_0x36158f[_0x55bf('0x24')][_0x55bf('0x1b')][_0x55bf('0x2d')]({'name':_0x2388de,'basename':_0xd2ac2b,'type':_0x43a918[_0x55bf('0x1b')][_0x5d41d1][_0x55bf('0x2e')],'filepath':_0x5158f2});}}}if(_0x43a918[_0x55bf('0x2f')]&&_0x43a918[_0x55bf('0x2f')][_0x55bf('0x11')]>0x0){var _0x5613a0=[_0x55bf('0x30'),_0x55bf('0x31'),_0x55bf('0x32')];for(var _0x560b5b=0x0;_0x560b5b<_0x43a918[_0x55bf('0x2f')][_0x55bf('0x11')];_0x560b5b++){var _0x335e55=_[_0x55bf('0xf')](_0x5613a0,_0x43a918[_0x55bf('0x2f')][_0x560b5b]['line']);if(_0x335e55>=0x0){_0x36158f[_0x55bf('0x33')]=!![];}}}return _0x36158f;}exports[_0x55bf('0x34')]=function(_0x107b69,_0x273aa0,_0x273634){var _0xd0ed4c={'from':getAddress(_0x273aa0[_0x55bf('0x35')]),'firstName':getFirstName(_0x273aa0[_0x55bf('0x35')]),'lastName':getLastName(_0x273aa0[_0x55bf('0x35')]),'mapKey':'email','message':{'from':getMails(_0x107b69['email'],_0x273aa0[_0x55bf('0x35')]),'to':_0x107b69[_0x55bf('0x6')],'cc':'','subject':_0x273aa0[_0x55bf('0x36')]||'','messageId':_0x273aa0[_0x55bf('0x37')],'inReplyTo':_0x273aa0[_0x55bf('0x38')],'sentAt':moment(_0x273aa0[_0x55bf('0x39')])[_0x55bf('0x3a')](_0x55bf('0x3b')),'attach':![],'attachments':[]}};if(!_0x273aa0[_0x55bf('0x17')]&&!_0x273aa0[_0x55bf('0x3c')]){var _0x460e0c=_[_0x55bf('0x3d')](_0x273aa0['attachments'],{'contentType':_0x55bf('0x3e')});if(_0x460e0c[_0x55bf('0x11')]){logger[_0x55bf('0x3f')](util[_0x55bf('0x3a')](_0x55bf('0x40'),_0x273aa0[_0x55bf('0x37')]));tnef['parseBuffer'](_[_0x55bf('0x41')](_0x460e0c)['content'],function(_0x28f557,_0x1c1b1c){if(_0x1c1b1c){_0x273aa0[_0x55bf('0x17')]=_0x1c1b1c['BodyHTML']||_0x55bf('0x42');if(_0x1c1b1c[_0x55bf('0x43')]){for(var _0x53c75d=0x0;_0x53c75d<_0x1c1b1c[_0x55bf('0x43')][_0x55bf('0x11')];_0x53c75d++){var _0x27843b=_0x1c1b1c[_0x55bf('0x43')][_0x53c75d];_0xd0ed4c[_0x55bf('0x24')][_0x55bf('0x1b')]['push']({'filename':_0x27843b[_0x55bf('0x44')],'content':Buffer[_0x55bf('0x35')](_0x27843b[_0x55bf('0x45')])});}}}_0x273634(parseEmail(_0x107b69,_0x273aa0,_0xd0ed4c));});}else{_0x273aa0[_0x55bf('0x17')]=_0x55bf('0x42');_0x273634(parseEmail(_0x107b69,_0x273aa0,_0xd0ed4c));}}else{_0x273634(parseEmail(_0x107b69,_0x273aa0,_0xd0ed4c));}};exports[_0x55bf('0x46')]=function(_0x38da71){switch(_0x38da71){case _0x55bf('0x47'):return _0x55bf('0x48');case'yahoo':return _0x55bf('0x49');case'hotmail':return _0x55bf('0x4a');case _0x55bf('0x4b'):return _0x55bf('0x4c');}return _0x55bf('0x4d');};exports[_0x55bf('0x4e')]=function(_0x725b3f,_0x21ff6e){var _0x3f8593=[_0x55bf('0x4f')+(_0x21ff6e||''),_0x55bf('0x50')+_0x725b3f,'',''];return Buffer['from'](_0x3f8593['join']('\ 1'),_0x55bf('0x51'))[_0x55bf('0x52')](_0x55bf('0x53'));};
\ No newline at end of file
+var _0xda65=['../../../config/logger','head','address','anonymous','generate','@xcally.com','value','name','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','html','test','replace','includes','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','originTo','email','message','originCc','bcc','type','attachment','%s-%s','now','root','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','line','isAutoreply','parser','from','subject','inReplyTo','date','format','YYYY-MM-DD\x20HH:mm:ss','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','generateXOAuth2Token','user=','auth=Bearer\x20','toString','base64','lodash','moment','randomstring','util','node-tnef'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0xda65,0x1ed));var _0x5da6=function(_0x1178fb,_0x30214e){_0x1178fb=_0x1178fb-0x0;var _0x38b9c2=_0xda65[_0x1178fb];return _0x38b9c2;};'use strict';var _=require(_0x5da6('0x0'));var moment=require(_0x5da6('0x1'));var random=require(_0x5da6('0x2'));var fs=require('fs');var path=require('path');var util=require(_0x5da6('0x3'));var tnef=require(_0x5da6('0x4'));var logger=require(_0x5da6('0x5'))('email');var config=require('../../../config/environment');function getAddress(_0x290590){var _0x17183f=_[_0x5da6('0x6')](_0x290590['value']);return _0x17183f&&_0x17183f[_0x5da6('0x7')]?_0x17183f[_0x5da6('0x7')]:_0x5da6('0x8')+random[_0x5da6('0x9')](0x6)+_0x5da6('0xa');}function getFirstName(_0x1efcb8){var _0xc5972b=_[_0x5da6('0x6')](_0x1efcb8[_0x5da6('0xb')]);if(_0xc5972b&&_0xc5972b[_0x5da6('0xc')]){if(_0xc5972b[_0x5da6('0xc')]==_0xc5972b[_0x5da6('0x7')]){return _0xc5972b['name']['substring'](0x0,_0xc5972b[_0x5da6('0xc')][_0x5da6('0xd')]('@'));}var _0x503a9f=_0xc5972b[_0x5da6('0xc')][_0x5da6('0xe')](/\s+/);return _0x503a9f[_0x5da6('0xf')]>0x1?_0x503a9f[_0x5da6('0x10')](0x0,-0x1)[_0x5da6('0x11')]('\x20'):_0xc5972b[_0x5da6('0xc')];}return _0x5da6('0x12');}function getLastName(_0x2df357){var _0x1a144a=_[_0x5da6('0x6')](_0x2df357[_0x5da6('0xb')]);if(_0x1a144a&&_0x1a144a[_0x5da6('0xc')]){var _0x5ebc34=_0x1a144a[_0x5da6('0xc')]['split'](/\s+/);return _0x5ebc34[_0x5da6('0xf')]>0x1?_0x5ebc34[_0x5da6('0x13')]():'';}return'';}function getMails(_0xfd2673,_0x414d8b){var _0x4ac4ad='';for(var _0x499d28=0x0;_0x499d28<_0x414d8b[_0x5da6('0xb')][_0x5da6('0xf')];_0x499d28+=0x1){if(_0x414d8b[_0x5da6('0xb')][_0x499d28]['address']!==_0xfd2673){if(!_[_0x5da6('0x14')](_0x4ac4ad)){_0x4ac4ad+=',';}_0x4ac4ad+=_0x414d8b['value'][_0x499d28][_0x5da6('0xc')]||_0x414d8b[_0x5da6('0xb')][_0x499d28][_0x5da6('0x7')]||'';_0x4ac4ad+='\x20<';_0x4ac4ad+=_0x414d8b[_0x5da6('0xb')][_0x499d28]['address']?_0x414d8b['value'][_0x499d28][_0x5da6('0x7')]:'anonymous'+random[_0x5da6('0x9')](0x6)+_0x5da6('0xa');_0x4ac4ad+='>';}}return _0x4ac4ad;}function parseEmail(_0x187b5c,_0x5d64b5,_0x2b5e73){if(_0x5d64b5[_0x5da6('0x15')]){var _0xdd6f74=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xdd6f74[_0x5da6('0x16')](_0x5d64b5[_0x5da6('0x15')])){_0x5d64b5['html']=_0x5d64b5[_0x5da6('0x15')][_0x5da6('0x17')](_0xdd6f74,'');}if(_0x5d64b5[_0x5da6('0x15')][_0x5da6('0x18')]('<img')){var _0x2d3321=[];_0x5d64b5[_0x5da6('0x19')][_0x5da6('0x1a')](_0x3c2cf1=>{_0x2d3321[_0x5da6('0x1b')](_0x3c2cf1[_0x5da6('0x1c')]);});var _0x4f7ddf=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1c638d=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x169558=_0x5d64b5[_0x5da6('0x15')][_0x5da6('0x17')](_0x1c638d,_0x5da6('0x1d'));var _0x375c30=_0x169558[_0x5da6('0x17')](_0x4f7ddf,_0x5da6('0x1e'));for(let _0x7882a=0x0;_0x7882a<_0x2d3321['length'];_0x7882a++){var _0x3e0aa9=_0x375c30[_0x5da6('0x17')](_0x5da6('0x1e'),_0x5da6('0x1f')+_0x2d3321[_0x7882a]+_0x5da6('0x20'));_0x375c30=_0x3e0aa9;}_0x5d64b5['html']=_0x375c30;}_0x2b5e73[_0x5da6('0x21')]=_0x5d64b5['html'];}else{_0x2b5e73['body']=_0x5d64b5[_0x5da6('0x22')];}if(_0x2b5e73[_0x5da6('0x21')]){_0x2b5e73[_0x5da6('0x21')]=_0x2b5e73[_0x5da6('0x21')][_0x5da6('0x17')](/<a\s+/gi,_0x5da6('0x23'));}if(_0x5d64b5['to']){_0x2b5e73['message'][_0x5da6('0x24')]=getMails(null,_0x5d64b5['to']);var _0x46f928=getMails(_0x187b5c[_0x5da6('0x25')],_0x5d64b5['to']);if(!_[_0x5da6('0x14')](_0x46f928)){_0x2b5e73[_0x5da6('0x26')]['cc']+=_0x46f928;}}if(_0x5d64b5['cc']){_0x2b5e73[_0x5da6('0x26')]['originCc']=getMails(null,_0x5d64b5['cc']);var _0x419e8b=getMails(_0x187b5c['email'],_0x5d64b5['cc']);if(!_[_0x5da6('0x14')](_0x419e8b)){if(!_['isEmpty'](_0x2b5e73[_0x5da6('0x26')]['cc'])){_0x2b5e73[_0x5da6('0x26')]['cc']+=',';}_0x2b5e73[_0x5da6('0x26')]['cc']+=_0x419e8b;}}if(!_[_0x5da6('0x18')](_0x2b5e73[_0x5da6('0x26')]['originTo'],_0x187b5c['email'])&&!_['includes'](_0x2b5e73[_0x5da6('0x26')][_0x5da6('0x27')],_0x187b5c[_0x5da6('0x25')])){_0x2b5e73[_0x5da6('0x26')][_0x5da6('0x28')]=_0x187b5c[_0x5da6('0x25')];}if(_0x5d64b5[_0x5da6('0x19')]&&_0x5d64b5[_0x5da6('0x19')][_0x5da6('0xf')]){_0x2b5e73[_0x5da6('0x26')]['attach']=_0x5d64b5[_0x5da6('0x19')][_0x5da6('0xf')];for(var _0x559c27=0x0,_0xf624a5,_0x1a4dc,_0x168baa;_0x559c27<_0x5d64b5['attachments'][_0x5da6('0xf')];_0x559c27+=0x1){if(_0x5d64b5[_0x5da6('0x19')][_0x559c27][_0x5da6('0x29')]===_0x5da6('0x2a')){_0x168baa=_0x5d64b5[_0x5da6('0x19')][_0x559c27][_0x5da6('0x1c')]||'attachment-'+_0x559c27;_0xf624a5=util['format'](_0x5da6('0x2b'),Date[_0x5da6('0x2c')](),_0x168baa);_0x1a4dc=path[_0x5da6('0x11')](config[_0x5da6('0x2d')],'server/files/attachments/',_0xf624a5);fs[_0x5da6('0x2e')](_0x1a4dc,_0x5d64b5[_0x5da6('0x19')][_0x559c27][_0x5da6('0x2f')]);_0x2b5e73[_0x5da6('0x26')]['attachments']['push']({'name':_0x168baa,'basename':_0xf624a5,'type':_0x5d64b5[_0x5da6('0x19')][_0x559c27][_0x5da6('0x30')],'filepath':_0x1a4dc});}}}if(_0x5d64b5[_0x5da6('0x31')]&&_0x5d64b5['headerLines'][_0x5da6('0xf')]>0x0){var _0x33af45=[_0x5da6('0x32'),'X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply'];for(var _0x1e91c4=0x0;_0x1e91c4<_0x5d64b5[_0x5da6('0x31')][_0x5da6('0xf')];_0x1e91c4++){var _0x184377=_[_0x5da6('0xd')](_0x33af45,_0x5d64b5[_0x5da6('0x31')][_0x1e91c4][_0x5da6('0x33')]);if(_0x184377>=0x0){_0x2b5e73[_0x5da6('0x34')]=!![];}}}return _0x2b5e73;}exports[_0x5da6('0x35')]=function(_0x6c75f3,_0x398baa,_0x5e6cc5){var _0x53b43d={'from':getAddress(_0x398baa[_0x5da6('0x36')]),'firstName':getFirstName(_0x398baa[_0x5da6('0x36')]),'lastName':getLastName(_0x398baa[_0x5da6('0x36')]),'mapKey':_0x5da6('0x25'),'message':{'from':getMails(_0x6c75f3['email'],_0x398baa[_0x5da6('0x36')]),'to':_0x6c75f3[_0x5da6('0x25')],'cc':'','subject':_0x398baa[_0x5da6('0x37')]||'','messageId':_0x398baa['messageId'],'inReplyTo':_0x398baa[_0x5da6('0x38')],'sentAt':moment(_0x398baa[_0x5da6('0x39')])[_0x5da6('0x3a')](_0x5da6('0x3b')),'attach':![],'attachments':[]}};if(!_0x398baa[_0x5da6('0x15')]&&!_0x398baa[_0x5da6('0x22')]){var _0x195d85=_['filter'](_0x398baa[_0x5da6('0x19')],{'contentType':_0x5da6('0x3c')});if(_0x195d85[_0x5da6('0xf')]){logger['info'](util[_0x5da6('0x3a')](_0x5da6('0x3d'),_0x398baa['messageId']));tnef[_0x5da6('0x3e')](_[_0x5da6('0x3f')](_0x195d85)['content'],function(_0x115688,_0x2d3389){if(_0x2d3389){_0x398baa[_0x5da6('0x15')]=_0x2d3389['BodyHTML']||_0x5da6('0x40');if(_0x2d3389[_0x5da6('0x41')]){for(var _0x79955c=0x0;_0x79955c<_0x2d3389[_0x5da6('0x41')][_0x5da6('0xf')];_0x79955c++){var _0x4b350b=_0x2d3389[_0x5da6('0x41')][_0x79955c];_0x53b43d['message'][_0x5da6('0x19')][_0x5da6('0x1b')]({'filename':_0x4b350b[_0x5da6('0x42')],'content':Buffer[_0x5da6('0x36')](_0x4b350b[_0x5da6('0x43')])});}}}_0x5e6cc5(parseEmail(_0x6c75f3,_0x398baa,_0x53b43d));});}else{_0x398baa[_0x5da6('0x15')]='<p>Empty\x20message</p>';_0x5e6cc5(parseEmail(_0x6c75f3,_0x398baa,_0x53b43d));}}else{_0x5e6cc5(parseEmail(_0x6c75f3,_0x398baa,_0x53b43d));}};exports[_0x5da6('0x44')]=function(_0x2e68ad){switch(_0x2e68ad){case _0x5da6('0x45'):return _0x5da6('0x46');case _0x5da6('0x47'):return _0x5da6('0x48');case _0x5da6('0x49'):return _0x5da6('0x4a');case _0x5da6('0x4b'):return _0x5da6('0x4c');}return _0x5da6('0x4d');};exports[_0x5da6('0x4e')]=function(_0x445c45,_0x337aca){var _0x1792a5=[_0x5da6('0x4f')+(_0x337aca||''),_0x5da6('0x50')+_0x445c45,'',''];return Buffer[_0x5da6('0x36')](_0x1792a5[_0x5da6('0x11')]('\ 1'),'utf-8')[_0x5da6('0x51')](_0x5da6('0x52'));};
\ No newline at end of file
index 0d4d15f..a5910b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb45=['name','Service','key','SERV','active','Imap','Smtp','lodash'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0xbb45,0x1df));var _0x5bb4=function(_0x47634a,_0x100761){_0x47634a=_0x47634a-0x0;var _0x1c9cd8=_0xbb45[_0x47634a];return _0x1c9cd8;};'use strict';var _=require(_0x5bb4('0x0'));function MailAccount(_0xea477){this['id']=_0xea477['id']||0x0;this[_0x5bb4('0x1')]=_0xea477[_0x5bb4('0x1')]||_0x5bb4('0x2');this[_0x5bb4('0x3')]=_0xea477[_0x5bb4('0x3')]||_0x5bb4('0x4');this[_0x5bb4('0x5')]=_0xea477[_0x5bb4('0x5')]||![];this[_0x5bb4('0x6')]=_0xea477[_0x5bb4('0x6')]||[];this[_0x5bb4('0x7')]=_0xea477['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x2507=['Service','key','SERV','active','Imap','exports','lodash'];(function(_0x3c1351,_0xc938db){var _0xda476a=function(_0x1b80cc){while(--_0x1b80cc){_0x3c1351['push'](_0x3c1351['shift']());}};_0xda476a(++_0xc938db);}(_0x2507,0xd1));var _0x7250=function(_0x849652,_0x110e8a){_0x849652=_0x849652-0x0;var _0x3e81f1=_0x2507[_0x849652];return _0x3e81f1;};'use strict';var _=require(_0x7250('0x0'));function MailAccount(_0x3deb83){this['id']=_0x3deb83['id']||0x0;this['name']=_0x3deb83['name']||_0x7250('0x1');this['key']=_0x3deb83[_0x7250('0x2')]||_0x7250('0x3');this[_0x7250('0x4')]=_0x3deb83[_0x7250('0x4')]||![];this[_0x7250('0x5')]=_0x3deb83['Imap']||[];this['Smtp']=_0x3deb83['Smtp']||[];}module[_0x7250('0x6')]=MailAccount;
\ No newline at end of file
index a2d6799..3e5003f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c7=['merge','exports','mailAccounts','mapKeys','hasOwnProperty','prototype','initMailAccounts','length','isUndefined'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xe2c7,0xa4));var _0x7e2c=function(_0x5a8795,_0x462f13){_0x5a8795=_0x5a8795-0x0;var _0x140a4e=_0xe2c7[_0x5a8795];return _0x140a4e;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x7e2c('0x0')]={};};function freeIsNotKey(_0x3bfdd0,_0x203ee1,_0x1f0f19){var _0x1edf4d=_[_0x7e2c('0x1')](_0x3bfdd0,function(_0x3ab0c3,_0x531dc7){return _0x3ab0c3[_0x1f0f19];});for(var _0x19e1da in _0x203ee1){if(_0x203ee1[_0x7e2c('0x2')](_0x19e1da)){if(!_0x1edf4d[_0x19e1da]){delete _0x203ee1[_0x19e1da];}}}}Realtime[_0x7e2c('0x3')]['mergeFromDatabase']=function(_0x31480b,_0x4cb83c){for(var _0x2d9ede in _0x4cb83c){if(_0x31480b['hasOwnProperty'](_0x2d9ede)){_0x31480b[_0x2d9ede]=_0x4cb83c[_0x2d9ede];}}};Realtime[_0x7e2c('0x3')][_0x7e2c('0x4')]=function(){var _0x2e76c1=this;return function(_0x19aecc){if(_0x19aecc){freeIsNotKey(_0x19aecc,_0x2e76c1[_0x7e2c('0x0')],'id');for(var _0xc979ff=0x0,_0xe1e393={},_0x298263={};_0xc979ff<_0x19aecc[_0x7e2c('0x5')];_0xc979ff+=0x1){_0xe1e393=_0x19aecc[_0xc979ff];if(_[_0x7e2c('0x6')](_0x2e76c1['mailAccounts'][_0xe1e393['id']])){_0x2e76c1[_0x7e2c('0x0')][_0xe1e393['id']]=new MailAccount(_0xe1e393);}else{_[_0x7e2c('0x7')](_0x2e76c1[_0x7e2c('0x0')][_0xe1e393['id']],_0xe1e393);}}}return _0x2e76c1[_0x7e2c('0x0')];};};module[_0x7e2c('0x8')]=Realtime;
\ No newline at end of file
+var _0xfc41=['exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined'];(function(_0x359b00,_0x1d9fee){var _0x17c13c=function(_0x563c4f){while(--_0x563c4f){_0x359b00['push'](_0x359b00['shift']());}};_0x17c13c(++_0x1d9fee);}(_0xfc41,0x6f));var _0x1fc4=function(_0x323c6b,_0xe6e486){_0x323c6b=_0x323c6b-0x0;var _0x5a0052=_0xfc41[_0x323c6b];return _0x5a0052;};'use strict';var _=require(_0x1fc4('0x0'));var MailAccount=require(_0x1fc4('0x1'));var Realtime=function(){this[_0x1fc4('0x2')]={};};function freeIsNotKey(_0x465b76,_0x4ac9f0,_0x4311bf){var _0x37358e=_[_0x1fc4('0x3')](_0x465b76,function(_0xcbe766,_0x4d87dc){return _0xcbe766[_0x4311bf];});for(var _0x1cabd7 in _0x4ac9f0){if(_0x4ac9f0[_0x1fc4('0x4')](_0x1cabd7)){if(!_0x37358e[_0x1cabd7]){delete _0x4ac9f0[_0x1cabd7];}}}}Realtime[_0x1fc4('0x5')][_0x1fc4('0x6')]=function(_0x4d748c,_0x25aa35){for(var _0x3779c4 in _0x25aa35){if(_0x4d748c[_0x1fc4('0x4')](_0x3779c4)){_0x4d748c[_0x3779c4]=_0x25aa35[_0x3779c4];}}};Realtime[_0x1fc4('0x5')][_0x1fc4('0x7')]=function(){var _0x361665=this;return function(_0x56801f){if(_0x56801f){freeIsNotKey(_0x56801f,_0x361665[_0x1fc4('0x2')],'id');for(var _0x31fea6=0x0,_0x1a41be={},_0x3db885={};_0x31fea6<_0x56801f[_0x1fc4('0x8')];_0x31fea6+=0x1){_0x1a41be=_0x56801f[_0x31fea6];if(_[_0x1fc4('0x9')](_0x361665[_0x1fc4('0x2')][_0x1a41be['id']])){_0x361665['mailAccounts'][_0x1a41be['id']]=new MailAccount(_0x1a41be);}else{_['merge'](_0x361665['mailAccounts'][_0x1a41be['id']],_0x1a41be);}}}return _0x361665[_0x1fc4('0x2')];};};module[_0x1fc4('0xa')]=Realtime;
\ No newline at end of file
index 6e65747..afdd5a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c1=['NotifyMailAccount','../client','Request','GetMailAccount','name','service','email','key','ListId','MailServerIn','CloudProvider','type','data5','MailServerOut','Smtp','getMailAccount','notify'];(function(_0x198eec,_0x66e6c){var _0x5e6754=function(_0x3e4f99){while(--_0x3e4f99){_0x198eec['push'](_0x198eec['shift']());}};_0x5e6754(++_0x66e6c);}(_0x49c1,0xef));var _0x149c=function(_0xe82b9c,_0x2cd78b){_0xe82b9c=_0xe82b9c-0x0;var _0x1957f6=_0x49c1[_0xe82b9c];return _0x1957f6;};'use strict';var client=require(_0x149c('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0x149c('0x1')](_0x149c('0x2'),{'options':{'attributes':['id',_0x149c('0x3'),'provider',_0x149c('0x4'),_0x149c('0x5'),'active',_0x149c('0x6'),_0x149c('0x7'),'TemplateId'],'raw':![],'include':[{'model':_0x149c('0x8'),'as':'Imap','include':[{'model':_0x149c('0x9'),'attributes':['id',_0x149c('0x3'),'service',_0x149c('0xa'),_0x149c('0xb')],'as':'CloudProvider'}]},{'model':_0x149c('0xc'),'as':_0x149c('0xd'),'include':[{'model':'CloudProvider','attributes':['id',_0x149c('0x3'),_0x149c('0x4'),_0x149c('0xa'),_0x149c('0xb')],'as':'CloudProvider'}]}]},'log':_0x149c('0xe')});};};exports[_0x149c('0xf')]=function(_0x363a90,_0x38f78c){return client[_0x149c('0x1')](_0x149c('0x10'),{'account':{'id':_0x363a90},'body':_0x38f78c,'log':_0x149c('0x10')});};
\ No newline at end of file
+var _0x421f=['TemplateId','MailServerIn','CloudProvider','service','type','data5','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','provider','key','ListId'];(function(_0x577325,_0x4b48a1){var _0x54c738=function(_0x1c912b){while(--_0x1c912b){_0x577325['push'](_0x577325['shift']());}};_0x54c738(++_0x4b48a1);}(_0x421f,0x160));var _0xf421=function(_0x3b84a8,_0xd456ed){_0x3b84a8=_0x3b84a8-0x0;var _0x2c020d=_0x421f[_0x3b84a8];return _0x2c020d;};'use strict';var client=require(_0xf421('0x0'));exports[_0xf421('0x1')]=function(){return function(){return client[_0xf421('0x2')](_0xf421('0x3'),{'options':{'attributes':['id',_0xf421('0x4'),_0xf421('0x5'),'service','email','active',_0xf421('0x6'),_0xf421('0x7'),_0xf421('0x8')],'raw':![],'include':[{'model':_0xf421('0x9'),'as':'Imap','include':[{'model':_0xf421('0xa'),'attributes':['id',_0xf421('0x4'),_0xf421('0xb'),_0xf421('0xc'),_0xf421('0xd')],'as':_0xf421('0xa')}]},{'model':_0xf421('0xe'),'as':_0xf421('0xf'),'include':[{'model':_0xf421('0xa'),'attributes':['id','name',_0xf421('0xb'),_0xf421('0xc'),_0xf421('0xd')],'as':_0xf421('0xa')}]}]},'log':_0xf421('0x10')});};};exports['notify']=function(_0x52ebcd,_0xe93d8e){return client[_0xf421('0x2')]('NotifyMailAccount',{'account':{'id':_0x52ebcd},'body':_0xe93d8e,'log':_0xf421('0x11')});};
\ No newline at end of file
index e0797a3..700de0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bf3=['../client','ShowSetting','GetSettings'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x9bf3,0x102));var _0x39bf=function(_0x5d88c0,_0x5d7d83){_0x5d88c0=_0x5d88c0-0x0;var _0x1b40f0=_0x9bf3[_0x5d88c0];return _0x1b40f0;};'use strict';var client=require(_0x39bf('0x0'));exports['getSettings']=function(){return client['Request'](_0x39bf('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x39bf('0x2')});};
\ No newline at end of file
+var _0x785f=['loginMailFrequency','GetSettings','Request','ShowSetting'];(function(_0x2658f2,_0xc50a70){var _0x2084ea=function(_0x925b65){while(--_0x925b65){_0x2658f2['push'](_0x2658f2['shift']());}};_0x2084ea(++_0xc50a70);}(_0x785f,0x1d6));var _0xf785=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x785f[_0x288f5e];return _0x476cc9;};'use strict';var client=require('../client');exports['getSettings']=function(){return client[_0xf785('0x0')](_0xf785('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xf785('0x2')]},'log':_0xf785('0x3')});};
\ No newline at end of file
index 4d8aee5..3eb482e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index 5a73865..43ac35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ebd=['listening','port','exports','lodash','http','express','ioredis','../../config/environment','createServer','timeout','listen','socket.io','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once'];(function(_0x34fe5f,_0x1db6ab){var _0x1c0922=function(_0x1b0a48){while(--_0x1b0a48){_0x34fe5f['push'](_0x34fe5f['shift']());}};_0x1c0922(++_0x1db6ab);}(_0x5ebd,0x1b8));var _0xd5eb=function(_0x3e71ca,_0x2c9f49){_0x3e71ca=_0x3e71ca-0x0;var _0x3f81b1=_0x5ebd[_0x3e71ca];return _0x3f81b1;};'use strict';var _=require(_0xd5eb('0x0'));var http=require(_0xd5eb('0x1'));var express=require(_0xd5eb('0x2'));var sticky=require('sticky-session');var Redis=require(_0xd5eb('0x3'));var config=require(_0xd5eb('0x4'));var app=express();var server=http[_0xd5eb('0x5')](app);server[_0xd5eb('0x6')]=0xdbba0;if(sticky[_0xd5eb('0x7')](server,config['port'])){var socketio=require(_0xd5eb('0x8'))(server,{'transports':['websocket','polling']});config[_0xd5eb('0x9')]=_[_0xd5eb('0xa')](config[_0xd5eb('0x9')],{'host':_0xd5eb('0xb'),'port':0x18eb});socketio[_0xd5eb('0xc')](require(_0xd5eb('0xd'))({'pubClient':new Redis(config[_0xd5eb('0x9')]),'subClient':new Redis(config[_0xd5eb('0x9')])}));require(_0xd5eb('0xe'))[_0xd5eb('0xf')]();require(_0xd5eb('0x10'))[_0xd5eb('0xf')](socketio);require(_0xd5eb('0x11'))['default'](app);require(_0xd5eb('0x12'))[_0xd5eb('0xf')](app);}else{server[_0xd5eb('0x13')](_0xd5eb('0x14'),function(){console['log']('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0xd5eb('0x15')]);});}exports=module[_0xd5eb('0x16')]=app;
\ No newline at end of file
+var _0xa185=['redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../routes','once','listening','log','lodash','http','express','ioredis','../../config/environment','timeout','listen','port','socket.io','polling'];(function(_0x376971,_0x3d9579){var _0x2286ff=function(_0x10c7db){while(--_0x10c7db){_0x376971['push'](_0x376971['shift']());}};_0x2286ff(++_0x3d9579);}(_0xa185,0xfe));var _0x5a18=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xa185[_0xfae23b];return _0x200640;};'use strict';var _=require(_0x5a18('0x0'));var http=require(_0x5a18('0x1'));var express=require(_0x5a18('0x2'));var sticky=require('sticky-session');var Redis=require(_0x5a18('0x3'));var config=require(_0x5a18('0x4'));var app=express();var server=http['createServer'](app);server[_0x5a18('0x5')]=0xdbba0;if(sticky[_0x5a18('0x6')](server,config[_0x5a18('0x7')])){var socketio=require(_0x5a18('0x8'))(server,{'transports':['websocket',_0x5a18('0x9')]});config[_0x5a18('0xa')]=_[_0x5a18('0xb')](config[_0x5a18('0xa')],{'host':_0x5a18('0xc'),'port':0x18eb});socketio[_0x5a18('0xd')](require(_0x5a18('0xe'))({'pubClient':new Redis(config[_0x5a18('0xa')]),'subClient':new Redis(config['redis'])}));require(_0x5a18('0xf'))[_0x5a18('0x10')]();require(_0x5a18('0x11'))[_0x5a18('0x10')](socketio);require('../../config/express')[_0x5a18('0x10')](app);require(_0x5a18('0x12'))[_0x5a18('0x10')](app);}else{server[_0x5a18('0x13')](_0x5a18('0x14'),function(){console[_0x5a18('0x15')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x5a18('0x7')]);});}exports=module['exports']=app;
\ No newline at end of file
index dce3484..cad7493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eb4=['http','Request','request','then','debug','rpc','routing','error','message','result','catch','bluebird','../../config/logger'];(function(_0x32358b,_0x5c7c35){var _0x58c21d=function(_0x238a63){while(--_0x238a63){_0x32358b['push'](_0x32358b['shift']());}};_0x58c21d(++_0x5c7c35);}(_0x0eb4,0x10f));var _0x40eb=function(_0x296893,_0x184e8a){_0x296893=_0x296893-0x0;var _0x39ab5d=_0x0eb4[_0x296893];return _0x39ab5d;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x40eb('0x0'));var logger=require(_0x40eb('0x1'))('routing');var client=jayson['client'][_0x40eb('0x2')]({'port':0x2329});client[_0x40eb('0x3')]=function(_0x13624b,_0x59f635){return new BPromise(function(_0x25d457,_0x2031b5){return client[_0x40eb('0x4')](_0x13624b,_0x59f635)[_0x40eb('0x5')](function(_0x3ee8b2){logger[_0x40eb('0x6')](_0x40eb('0x7'),_0x40eb('0x8'),_0x13624b,_0x59f635,_0x3ee8b2);if(_0x3ee8b2[_0x40eb('0x9')]){logger[_0x40eb('0x9')](_0x40eb('0x7'),_0x40eb('0x8'),_0x13624b,_0x3ee8b2[_0x40eb('0x9')]['message'],_0x59f635);return _0x2031b5(_0x3ee8b2[_0x40eb('0x9')][_0x40eb('0xa')]);}else{return _0x25d457(_0x3ee8b2[_0x40eb('0xb')]);}})[_0x40eb('0xc')](function(_0x10a854){logger[_0x40eb('0x9')]('rpc','routing',_0x13624b,_0x10a854,_0x59f635);return _0x2031b5(_0x10a854);});});};module['exports']=client;
\ No newline at end of file
+var _0x4646=['routing','error','rpc','message','exports','jayson/promise','../../config/logger','client','http','Request','request','then','debug'];(function(_0xd4ac62,_0x396930){var _0x5f38d3=function(_0x136f81){while(--_0x136f81){_0xd4ac62['push'](_0xd4ac62['shift']());}};_0x5f38d3(++_0x396930);}(_0x4646,0xd5));var _0x6464=function(_0x4f9f4a,_0x148ffd){_0x4f9f4a=_0x4f9f4a-0x0;var _0x2fa7c9=_0x4646[_0x4f9f4a];return _0x2fa7c9;};'use strict';var jayson=require(_0x6464('0x0'));var BPromise=require('bluebird');var logger=require(_0x6464('0x1'))('routing');var client=jayson[_0x6464('0x2')][_0x6464('0x3')]({'port':0x2329});client[_0x6464('0x4')]=function(_0x301117,_0x5a69a7){return new BPromise(function(_0x3c0f9f,_0x5c2c80){return client[_0x6464('0x5')](_0x301117,_0x5a69a7)[_0x6464('0x6')](function(_0x21d236){logger[_0x6464('0x7')]('rpc',_0x6464('0x8'),_0x301117,_0x5a69a7,_0x21d236);if(_0x21d236['error']){logger[_0x6464('0x9')](_0x6464('0xa'),_0x6464('0x8'),_0x301117,_0x21d236[_0x6464('0x9')][_0x6464('0xb')],_0x5a69a7);return _0x5c2c80(_0x21d236[_0x6464('0x9')][_0x6464('0xb')]);}else{return _0x3c0f9f(_0x21d236['result']);}})['catch'](function(_0x46e02d){logger['error'](_0x6464('0xa'),_0x6464('0x8'),_0x301117,_0x46e02d,_0x5a69a7);return _0x5c2c80(_0x46e02d);});});};module[_0x6464('0xc')]=client;
\ No newline at end of file
index c6a26da..a189df0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x934e=['getOpenchannelQueues','initOpenchannelQueues','getChatQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','log','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','then','getAgents','initAgents','getIntervals','initIntervals'];(function(_0x5ae5af,_0x1bb2dc){var _0x377f1f=function(_0xfb5abd){while(--_0xfb5abd){_0x5ae5af['push'](_0x5ae5af['shift']());}};_0x377f1f(++_0x1bb2dc);}(_0x934e,0x83));var _0xe934=function(_0x23402c,_0x5af063){_0x23402c=_0x23402c-0x0;var _0x66d27d=_0x934e[_0x23402c];return _0x66d27d;};'use strict';var BPromise=require('bluebird');var server=require(_0xe934('0x0'));var Realtime=require('./realtime');var user=require(_0xe934('0x1'));var interval=require(_0xe934('0x2'));var openchannelQueue=require(_0xe934('0x3'));var chatQueue=require(_0xe934('0x4'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0xe934('0x5'));var faxQueue=require(_0xe934('0x6'));var whatsappQueue=require(_0xe934('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0xe934('0x8')](user[_0xe934('0x9')]())['then'](realtime[_0xe934('0xa')]())[_0xe934('0x8')](interval[_0xe934('0xb')]())[_0xe934('0x8')](realtime[_0xe934('0xc')]())['then'](openchannelQueue[_0xe934('0xd')]())[_0xe934('0x8')](realtime[_0xe934('0xe')]())['then'](chatQueue[_0xe934('0xf')]())[_0xe934('0x8')](realtime['initChatQueues']())[_0xe934('0x8')](smsQueue['getSmsQueues']())[_0xe934('0x8')](realtime['initSmsQueues']())[_0xe934('0x8')](mailQueue[_0xe934('0x10')]())['then'](realtime[_0xe934('0x11')]())['then'](faxQueue[_0xe934('0x12')]())[_0xe934('0x8')](realtime[_0xe934('0x13')]())['then'](whatsappQueue[_0xe934('0x14')]())['then'](realtime[_0xe934('0x15')]())[_0xe934('0x8')](function(){return realtime;});}function main(){return server[_0xe934('0x16')](realtime)['then'](function(_0x12b21c){return initRealtime();})['then'](function(_0x1ab9b0){return setInterval(initRealtime,0x1388);})['catch'](function(_0x99da81){console[_0xe934('0x17')](_0x99da81);});}main();
\ No newline at end of file
+var _0x7919=['./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','listen','catch','log','./server','./realtime'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x7919,0x1d2));var _0x9791=function(_0x3415b0,_0x4df0d5){_0x3415b0=_0x3415b0-0x0;var _0x4fad6a=_0x7919[_0x3415b0];return _0x4fad6a;};'use strict';var BPromise=require('bluebird');var server=require(_0x9791('0x0'));var Realtime=require(_0x9791('0x1'));var user=require('./rpc/user');var interval=require(_0x9791('0x2'));var openchannelQueue=require(_0x9791('0x3'));var chatQueue=require(_0x9791('0x4'));var smsQueue=require(_0x9791('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x9791('0x6')]()[_0x9791('0x7')](user[_0x9791('0x8')]())[_0x9791('0x7')](realtime[_0x9791('0x9')]())[_0x9791('0x7')](interval[_0x9791('0xa')]())['then'](realtime[_0x9791('0xb')]())['then'](openchannelQueue[_0x9791('0xc')]())[_0x9791('0x7')](realtime[_0x9791('0xd')]())[_0x9791('0x7')](chatQueue[_0x9791('0xe')]())[_0x9791('0x7')](realtime[_0x9791('0xf')]())[_0x9791('0x7')](smsQueue[_0x9791('0x10')]())[_0x9791('0x7')](realtime[_0x9791('0x11')]())['then'](mailQueue[_0x9791('0x12')]())[_0x9791('0x7')](realtime[_0x9791('0x13')]())[_0x9791('0x7')](faxQueue[_0x9791('0x14')]())[_0x9791('0x7')](realtime[_0x9791('0x15')]())[_0x9791('0x7')](whatsappQueue[_0x9791('0x16')]())[_0x9791('0x7')](realtime['initWhatsappQueues']())[_0x9791('0x7')](function(){return realtime;});}function main(){return server[_0x9791('0x17')](realtime)[_0x9791('0x7')](function(_0x387cf3){return initRealtime();})[_0x9791('0x7')](function(_0x751db3){return setInterval(initRealtime,0x1388);})[_0x9791('0x18')](function(_0x16f9b0){console[_0x9791('0x19')](_0x16f9b0);});}main();
\ No newline at end of file
index e2c17f2..b6ac049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x32bf8b,_0x2ac32b){var _0x1e5ef5=function(_0x36acec){while(--_0x36acec){_0x32bf8b['push'](_0x32bf8b['shift']());}};_0x1e5ef5(++_0x2ac32b);}(_0x326f,0xd1));var _0xf326=function(_0x50ec95,_0x4352e9){_0x50ec95=_0x50ec95-0x0;var _0x35517b=_0x326f[_0x50ec95];return _0x35517b;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x5fc3=['lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','activeRules','prototype','register','isArray','rules','isObject','sync','orderBy','asc','execute','clone','ruleRef','name','index_','push','call','nextTick','next','isEqual','restart','length','condition','matchPath','noop','findRules','filter','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse'];(function(_0x2b252c,_0x2ad9e6){var _0x15b554=function(_0x5cf488){while(--_0x5cf488){_0x2b252c['push'](_0x2b252c['shift']());}};_0x15b554(++_0x2ad9e6);}(_0x5fc3,0xa8));var _0x35fc=function(_0x122d9f,_0x2c9e5b){_0x122d9f=_0x122d9f-0x0;var _0x41a09e=_0x5fc3[_0x122d9f];return _0x41a09e;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var EventEmitter=require('events')[_0x35fc('0x2')];function RuleEngine(_0x2ac6da,_0x196bc2){this[_0x35fc('0x3')]();if(!_[_0x35fc('0x4')](_0x2ac6da)){this['register'](_0x2ac6da);}if(_0x196bc2){this[_0x35fc('0x5')]=_0x196bc2[_0x35fc('0x5')];}return this;}util[_0x35fc('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x19a0d1){this['rules']=[];this[_0x35fc('0x7')]=[];};RuleEngine[_0x35fc('0x8')][_0x35fc('0x9')]=function(_0x1e5f90){if(Array[_0x35fc('0xa')](_0x1e5f90)){this[_0x35fc('0xb')]=this[_0x35fc('0xb')]['concat'](_0x1e5f90);}else if(_0x1e5f90!==null&&_[_0x35fc('0xc')](_0x1e5f90)){this[_0x35fc('0xb')]['push'](_0x1e5f90);}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')]['sync']=function(){this[_0x35fc('0x7')]=this[_0x35fc('0xb')]['filter'](function(_0x4cbe74){if(_[_0x35fc('0x4')](_0x4cbe74['on'])){_0x4cbe74['on']=!![];}if(_0x4cbe74['on']===!![]){return _0x4cbe74;}});this['activeRules']=_[_0x35fc('0xe')](this[_0x35fc('0x7')],['p'],[_0x35fc('0xf')]);};RuleEngine[_0x35fc('0x8')][_0x35fc('0x10')]=function(_0x5cfe94,_0x59507a){var _0x5eac0f=![];_0x5cfe94['result']=!![];var _0x398b67=_[_0x35fc('0x11')](_0x5cfe94);var _0x53b898=_[_0x35fc('0x11')](_0x5cfe94);var _0x227a49=this[_0x35fc('0x7')];var _0x480851=[];var _0x26ba54=this[_0x35fc('0x5')];(function FnRuleLoop(_0x553677){var _0x41e165={'rules':function(){return _0x227a49;},'rule':function(){return _0x227a49[_0x553677];},'when':function(_0x363e47){if(_0x363e47){var _0x2e513b=_0x227a49[_0x553677]['consequence'];_0x2e513b[_0x35fc('0x12')]=_0x227a49[_0x553677]['id']||_0x227a49[_0x553677][_0x35fc('0x13')]||_0x35fc('0x14')+_0x553677;process['nextTick'](function(){_0x480851[_0x35fc('0x15')](_0x2e513b[_0x35fc('0x12')]);_0x2e513b[_0x35fc('0x16')](_0x398b67,_0x41e165);});}else{process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x5eac0f=!![];return FnRuleLoop(0x0);},'next':function(_0x21f1a9){if(!_0x26ba54&&!_[_0x35fc('0x19')](_0x53b898,_0x398b67)){_0x53b898=_[_0x35fc('0x11')](_0x398b67);process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x1a')]();});}else{process['nextTick'](function(){if(_[_0x35fc('0x4')](_0x21f1a9)){return FnRuleLoop(_0x553677+0x1);}else{return FnRuleLoop(_0x21f1a9);}});}}};if(_0x553677<_0x227a49[_0x35fc('0x1b')]&&_0x5eac0f===![]){var _0x257719=_0x227a49[_0x553677][_0x35fc('0x1c')];_0x257719[_0x35fc('0x16')](_0x398b67,_0x41e165);}else{process['nextTick'](function(){_0x398b67[_0x35fc('0x1d')]=_0x480851;return _0x59507a?_0x59507a(_0x398b67):_[_0x35fc('0x1e')]();});}}(0x0));};RuleEngine['prototype'][_0x35fc('0x1f')]=function(_0x5a93df){if(_[_0x35fc('0x4')](_0x5a93df)){return this['rules'];}else{var _0x4086e9=_['matches'](_0x5a93df);return _[_0x35fc('0x20')](this[_0x35fc('0xb')],_0x4086e9);}};RuleEngine['prototype']['turn']=function(_0x47774c,_0x58edb6){var _0x274208=_0x47774c==='on'||_0x47774c==='ON'?!![]:![];var _0x1a5d92=this['findRules'](_0x58edb6);for(var _0x26b7cb=0x0,_0x645eac=_0x1a5d92[_0x35fc('0x1b')];_0x26b7cb<_0x645eac;_0x26b7cb+=0x1){_0x1a5d92[_0x26b7cb]['on']=_0x274208;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x21')]=function(_0x11ccdb,_0x451f0c){_0x11ccdb=parseInt(_0x11ccdb,0xa);var _0x54aedc=this[_0x35fc('0x1f')](_0x451f0c);for(var _0x220931=0x0,_0x22af18=_0x54aedc['length'];_0x220931<_0x22af18;_0x220931+=0x1){_0x54aedc[_0x220931][_0x35fc('0x22')]=_0x11ccdb;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x23')]=function(){var _0xd8a4ca=this[_0x35fc('0xb')];if(_0xd8a4ca instanceof Array){_0xd8a4ca=_0xd8a4ca[_0x35fc('0x24')](function(_0x37b435){_0x37b435[_0x35fc('0x1c')]=_0x37b435[_0x35fc('0x1c')]['toString']();_0x37b435['consequence']=_0x37b435[_0x35fc('0x25')]['toString']();return _0x37b435;});}else if(!_[_0x35fc('0x4')](_0xd8a4ca)){_0xd8a4ca[_0x35fc('0x1c')]=_0xd8a4ca[_0x35fc('0x1c')][_0x35fc('0x26')]();_0xd8a4ca[_0x35fc('0x25')]=_0xd8a4ca[_0x35fc('0x25')]['toString']();}return _0xd8a4ca;};RuleEngine[_0x35fc('0x8')][_0x35fc('0x27')]=function(_0x46b9ef){this[_0x35fc('0x3')]();if(_[_0x35fc('0x28')](_0x46b9ef)){_0x46b9ef=JSON[_0x35fc('0x29')](_0x46b9ef);}if(_0x46b9ef instanceof Array){_0x46b9ef=_0x46b9ef['map'](function(_0x2483be){_0x2483be[_0x35fc('0x1c')]=eval('('+_0x2483be[_0x35fc('0x1c')]+')');_0x2483be['consequence']=eval('('+_0x2483be[_0x35fc('0x25')]+')');return _0x2483be;});}else if(_0x46b9ef!==null&&typeof _0x46b9ef=='object'){_0x46b9ef[_0x35fc('0x1c')]=eval('('+_0x46b9ef[_0x35fc('0x1c')]+')');_0x46b9ef[_0x35fc('0x25')]=eval('('+_0x46b9ef[_0x35fc('0x25')]+')');}this['register'](_0x46b9ef);};module['exports']=RuleEngine;
\ No newline at end of file
index 200f58b..529eeb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdd0=['result','catch','sendMailMessage','client','http','request','then','error','message'];(function(_0x4bc684,_0x31b79a){var _0x5c6c7b=function(_0x407cea){while(--_0x407cea){_0x4bc684['push'](_0x4bc684['shift']());}};_0x5c6c7b(++_0x31b79a);}(_0xfdd0,0xe4));var _0x0fdd=function(_0x35c561,_0x1ade37){_0x35c561=_0x35c561-0x0;var _0x3c3f89=_0xfdd0[_0x35c561];return _0x3c3f89;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson[_0x0fdd('0x0')][_0x0fdd('0x1')]({'port':0x232b});function request(_0x24a13b,_0x2869e0){return new BPromise(function(_0x3bbb53,_0x15820b){return client[_0x0fdd('0x2')](_0x24a13b,_0x2869e0)[_0x0fdd('0x3')](function(_0x22befe){if(_0x22befe[_0x0fdd('0x4')]){return _0x15820b(_0x22befe[_0x0fdd('0x4')][_0x0fdd('0x5')]);}else{return _0x3bbb53(_0x22befe[_0x0fdd('0x6')]);}})[_0x0fdd('0x7')](function(_0x376a76){return _0x15820b(_0x376a76);});});}exports[_0x0fdd('0x8')]=function(_0x32628d,_0x399901){return request('SendMail',{'account':_0x32628d,'message':_0x399901});};
\ No newline at end of file
+var _0x1542=['message','result','catch','SendMail','jayson/promise','client','http','request','then','error'];(function(_0x2f0695,_0x1321d7){var _0x91c4c0=function(_0x8d6650){while(--_0x8d6650){_0x2f0695['push'](_0x2f0695['shift']());}};_0x91c4c0(++_0x1321d7);}(_0x1542,0xea));var _0x2154=function(_0x5a07a0,_0x1c4321){_0x5a07a0=_0x5a07a0-0x0;var _0x4ba99b=_0x1542[_0x5a07a0];return _0x4ba99b;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x2154('0x0'));var client=jayson[_0x2154('0x1')][_0x2154('0x2')]({'port':0x232b});function request(_0x14dc74,_0x542323){return new BPromise(function(_0x21a504,_0x15688f){return client[_0x2154('0x3')](_0x14dc74,_0x542323)[_0x2154('0x4')](function(_0x31710e){if(_0x31710e[_0x2154('0x5')]){return _0x15688f(_0x31710e[_0x2154('0x5')][_0x2154('0x6')]);}else{return _0x21a504(_0x31710e[_0x2154('0x7')]);}})[_0x2154('0x8')](function(_0x380e8d){return _0x15688f(_0x380e8d);});});}exports['sendMailMessage']=function(_0x3b2e78,_0x2978ba){return request(_0x2154('0x9'),{'account':_0x3b2e78,'message':_0x2978ba});};
\ No newline at end of file
index 36b9c91..6d52a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7218=['faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','updateRealtime','CurrentCapacity','Capacity','idle','prototype','mail','openchannel','fax','sms','whatsapp','Status','StatusTime','toNumber','format','faxCurrentCapacity','smsStatusTime','stringify','emit','user:save','lodash','moment','md5','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause'];(function(_0x430459,_0x58519c){var _0x3a2439=function(_0x27a0b3){while(--_0x27a0b3){_0x430459['push'](_0x430459['shift']());}};_0x3a2439(++_0x58519c);}(_0x7218,0x149));var _0x8721=function(_0x3e166b,_0x1f6dbd){_0x3e166b=_0x3e166b-0x0;var _0x35fc7a=_0x7218[_0x3e166b];return _0x35fc7a;};'use strict';var _=require(_0x8721('0x0'));var moment=require(_0x8721('0x1'));var md5=require(_0x8721('0x2'));var Redis=require('ioredis');var config=require(_0x8721('0x3'));config['redis']=_[_0x8721('0x4')](config[_0x8721('0x5')],{'host':_0x8721('0x6'),'port':0x18eb});var io=require(_0x8721('0x7'))(new Redis(config[_0x8721('0x5')]));function Agent(_0x237d50){this['id']=_0x237d50['id']||0x0;this[_0x8721('0x8')]=_0x237d50[_0x8721('0x8')]||'';this[_0x8721('0x9')]=_0x237d50[_0x8721('0x9')]||!![];this[_0x8721('0xa')]=_0x237d50['voicePause']||![];this[_0x8721('0xb')]=_0x237d50[_0x8721('0xb')]||![];this[_0x8721('0xc')]=_0x237d50[_0x8721('0xc')]||![];this[_0x8721('0xd')]=_0x237d50['faxPause']||![];this[_0x8721('0xe')]=_0x237d50[_0x8721('0xe')]||![];this[_0x8721('0xf')]=_0x237d50[_0x8721('0xf')]||![];this[_0x8721('0x10')]=_0x8721('0x11');this[_0x8721('0x12')]=0x0;this['chatCapacity']=_0x237d50[_0x8721('0x13')]||0x0;this[_0x8721('0x14')]=0x0;this[_0x8721('0x15')]=_0x8721('0x11');this[_0x8721('0x16')]=0x0;this['mailCapacity']=_0x237d50['mailCapacity']||0x0;this[_0x8721('0x17')]=0x0;this[_0x8721('0x18')]=_0x8721('0x11');this[_0x8721('0x19')]=0x0;this[_0x8721('0x1a')]=_0x237d50[_0x8721('0x1a')]||0x0;this['faxCurrentCapacity']=0x0;this[_0x8721('0x1b')]=_0x8721('0x11');this['smsStatusTime']=0x0;this[_0x8721('0x1c')]=_0x237d50[_0x8721('0x1c')]||0x0;this[_0x8721('0x1d')]=0x0;this[_0x8721('0x1e')]=_0x8721('0x11');this[_0x8721('0x1f')]=0x0;this[_0x8721('0x20')]=_0x237d50[_0x8721('0x20')]||0x0;this[_0x8721('0x21')]=0x0;this['openchannelStatus']=_0x8721('0x11');this[_0x8721('0x22')]=0x0;this[_0x8721('0x23')]=_0x237d50[_0x8721('0x23')]||0x0;this[_0x8721('0x24')]=0x0;this[_0x8721('0x25')]=![];this['busyQueue']=undefined;this['md5']='';this[_0x8721('0x26')]();}Agent['prototype']['getChannelStatus']=function(_0x20c691){if(this[_0x20c691+_0x8721('0x27')]>0x0){if(this[_0x20c691+_0x8721('0x28')]>0x0&&this[_0x20c691+_0x8721('0x27')]>=this[_0x20c691+'Capacity']){return'maxcapacity';}else{return'working';}}else{return _0x8721('0x29');}};Agent[_0x8721('0x2a')]['updateRealtime']=function(){var _0x4d0c56=[_0x8721('0x2b'),'chat',_0x8721('0x2c'),_0x8721('0x2d'),_0x8721('0x2e'),_0x8721('0x2f')];for(var _0xf565=0x0;_0xf565<_0x4d0c56['length'];_0xf565+=0x1){var _0x5410f7=this['getChannelStatus'](_0x4d0c56[_0xf565]);if(this[_0x4d0c56[_0xf565]+_0x8721('0x30')]!==_0x5410f7){this[_0x4d0c56[_0xf565]+_0x8721('0x31')]=_[_0x8721('0x32')](moment()[_0x8721('0x33')]('x'));}this[_0x4d0c56[_0xf565]+_0x8721('0x30')]=_0x5410f7;}var _0x492d32={'id':this['id'],'name':this[_0x8721('0x8')],'online':this[_0x8721('0x9')],'voicePause':this[_0x8721('0xa')],'chatPause':this['chatPause'],'mailPause':this[_0x8721('0xc')],'smsPause':this[_0x8721('0xe')],'faxPause':this[_0x8721('0xd')],'openchannelPause':this[_0x8721('0xf')],'chatStatus':this[_0x8721('0x10')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x8721('0x14')],'mailStatus':this[_0x8721('0x15')],'mailStatusTime':this[_0x8721('0x16')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0x8721('0x17')],'faxStatus':this[_0x8721('0x18')],'faxStatusTime':this[_0x8721('0x19')],'faxCapacity':this[_0x8721('0x1a')],'faxCurrentCapacity':this[_0x8721('0x34')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x8721('0x35')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x8721('0x1e')],'whatsappStatusTime':this[_0x8721('0x1f')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x8721('0x21')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x8721('0x22')],'openchannelCapacity':this[_0x8721('0x23')],'openchannelCurrentCapacity':this[_0x8721('0x24')],'busy':this[_0x8721('0x25')],'busyQueue':this['busyQueue']};var _0x588d15=md5(JSON[_0x8721('0x36')](_0x492d32));if(this['md5']!==_0x588d15){this[_0x8721('0x2')]=_0x588d15;io[_0x8721('0x37')](_0x8721('0x38'),_0x492d32);}};module['exports']=Agent;
\ No newline at end of file
+var _0xad3a=['whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','chat','sms','whatsapp','Status','toNumber','format','chatCurrentCapacity','faxStatusTime','openchannelStatusTime','emit','user:save','exports','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime'];(function(_0x1781e3,_0x187097){var _0x33acb8=function(_0x5552e1){while(--_0x5552e1){_0x1781e3['push'](_0x1781e3['shift']());}};_0x33acb8(++_0x187097);}(_0xad3a,0x13d));var _0xaad3=function(_0x6a0266,_0x1552d6){_0x6a0266=_0x6a0266-0x0;var _0x309e00=_0xad3a[_0x6a0266];return _0x309e00;};'use strict';var _=require('lodash');var moment=require('moment');var md5=require(_0xaad3('0x0'));var Redis=require(_0xaad3('0x1'));var config=require(_0xaad3('0x2'));config[_0xaad3('0x3')]=_[_0xaad3('0x4')](config[_0xaad3('0x3')],{'host':_0xaad3('0x5'),'port':0x18eb});var io=require(_0xaad3('0x6'))(new Redis(config[_0xaad3('0x3')]));function Agent(_0x2942b7){this['id']=_0x2942b7['id']||0x0;this[_0xaad3('0x7')]=_0x2942b7['name']||'';this['online']=_0x2942b7[_0xaad3('0x8')]||!![];this[_0xaad3('0x9')]=_0x2942b7[_0xaad3('0x9')]||![];this[_0xaad3('0xa')]=_0x2942b7['chatPause']||![];this['mailPause']=_0x2942b7[_0xaad3('0xb')]||![];this[_0xaad3('0xc')]=_0x2942b7[_0xaad3('0xc')]||![];this[_0xaad3('0xd')]=_0x2942b7['smsPause']||![];this['openchannelPause']=_0x2942b7[_0xaad3('0xe')]||![];this[_0xaad3('0xf')]='unknown';this[_0xaad3('0x10')]=0x0;this[_0xaad3('0x11')]=_0x2942b7[_0xaad3('0x11')]||0x0;this['chatCurrentCapacity']=0x0;this[_0xaad3('0x12')]=_0xaad3('0x13');this[_0xaad3('0x14')]=0x0;this['mailCapacity']=_0x2942b7[_0xaad3('0x15')]||0x0;this[_0xaad3('0x16')]=0x0;this[_0xaad3('0x17')]='unknown';this['faxStatusTime']=0x0;this[_0xaad3('0x18')]=_0x2942b7[_0xaad3('0x18')]||0x0;this['faxCurrentCapacity']=0x0;this[_0xaad3('0x19')]=_0xaad3('0x13');this[_0xaad3('0x1a')]=0x0;this[_0xaad3('0x1b')]=_0x2942b7[_0xaad3('0x1b')]||0x0;this[_0xaad3('0x1c')]=0x0;this[_0xaad3('0x1d')]=_0xaad3('0x13');this[_0xaad3('0x1e')]=0x0;this[_0xaad3('0x1f')]=_0x2942b7[_0xaad3('0x1f')]||0x0;this[_0xaad3('0x20')]=0x0;this[_0xaad3('0x21')]='unknown';this['openchannelStatusTime']=0x0;this[_0xaad3('0x22')]=_0x2942b7[_0xaad3('0x22')]||0x0;this[_0xaad3('0x23')]=0x0;this[_0xaad3('0x24')]=![];this[_0xaad3('0x25')]=undefined;this['md5']='';this[_0xaad3('0x26')]();}Agent[_0xaad3('0x27')][_0xaad3('0x28')]=function(_0x3936cb){if(this[_0x3936cb+_0xaad3('0x29')]>0x0){if(this[_0x3936cb+_0xaad3('0x2a')]>0x0&&this[_0x3936cb+_0xaad3('0x29')]>=this[_0x3936cb+'Capacity']){return _0xaad3('0x2b');}else{return _0xaad3('0x2c');}}else{return _0xaad3('0x2d');}};Agent[_0xaad3('0x27')][_0xaad3('0x26')]=function(){var _0x2755be=['mail',_0xaad3('0x2e'),'openchannel','fax',_0xaad3('0x2f'),_0xaad3('0x30')];for(var _0x4018bd=0x0;_0x4018bd<_0x2755be['length'];_0x4018bd+=0x1){var _0x2dfeaa=this[_0xaad3('0x28')](_0x2755be[_0x4018bd]);if(this[_0x2755be[_0x4018bd]+_0xaad3('0x31')]!==_0x2dfeaa){this[_0x2755be[_0x4018bd]+'StatusTime']=_[_0xaad3('0x32')](moment()[_0xaad3('0x33')]('x'));}this[_0x2755be[_0x4018bd]+_0xaad3('0x31')]=_0x2dfeaa;}var _0x44582d={'id':this['id'],'name':this[_0xaad3('0x7')],'online':this['online'],'voicePause':this[_0xaad3('0x9')],'chatPause':this[_0xaad3('0xa')],'mailPause':this[_0xaad3('0xb')],'smsPause':this[_0xaad3('0xd')],'faxPause':this[_0xaad3('0xc')],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0xaad3('0xf')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0xaad3('0x11')],'chatCurrentCapacity':this[_0xaad3('0x34')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0xaad3('0x14')],'mailCapacity':this[_0xaad3('0x15')],'mailCurrentCapacity':this[_0xaad3('0x16')],'faxStatus':this[_0xaad3('0x17')],'faxStatusTime':this[_0xaad3('0x35')],'faxCapacity':this[_0xaad3('0x18')],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0xaad3('0x1b')],'smsCurrentCapacity':this[_0xaad3('0x1c')],'whatsappStatus':this[_0xaad3('0x1d')],'whatsappStatusTime':this[_0xaad3('0x1e')],'whatsappCapacity':this[_0xaad3('0x1f')],'whatsappCurrentCapacity':this[_0xaad3('0x20')],'openchannelStatus':this[_0xaad3('0x21')],'openchannelStatusTime':this[_0xaad3('0x36')],'openchannelCapacity':this[_0xaad3('0x22')],'openchannelCurrentCapacity':this[_0xaad3('0x23')],'busy':this[_0xaad3('0x24')],'busyQueue':this['busyQueue']};var _0x3564f1=md5(JSON['stringify'](_0x44582d));if(this[_0xaad3('0x0')]!==_0x3564f1){this[_0xaad3('0x0')]=_0x3564f1;io[_0xaad3('0x37')](_0xaad3('0x38'),_0x44582d);}};module[_0xaad3('0x39')]=Agent;
\ No newline at end of file
index 4290472..3d3da4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39e6=['Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','length','online','chatPause','available','md5','format','name','emit','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','strategy'];(function(_0x4caa4b,_0xb1ce8d){var _0xe11bd4=function(_0x2f5d82){while(--_0x2f5d82){_0x4caa4b['push'](_0x4caa4b['shift']());}};_0xe11bd4(++_0xb1ce8d);}(_0x39e6,0x1a9));var _0x639e=function(_0x360caf,_0x592238){_0x360caf=_0x360caf-0x0;var _0x4f662d=_0x39e6[_0x360caf];return _0x4f662d;};'use strict';var _=require(_0x639e('0x0'));var md5=require('md5');var util=require(_0x639e('0x1'));var Redis=require(_0x639e('0x2'));var config=require(_0x639e('0x3'));config[_0x639e('0x4')]=_[_0x639e('0x5')](config[_0x639e('0x4')],{'host':_0x639e('0x6'),'port':0x18eb});var io=require(_0x639e('0x7'))(new Redis(config['redis']));function ChatQueue(_0x49904f){this['id']=_0x49904f['id']||0x0;this['name']=_0x49904f['name']||'';this['timeout']=_0x49904f[_0x639e('0x8')]||0xa;this[_0x639e('0x9')]=_0x49904f[_0x639e('0x9')]||'beepall';this[_0x639e('0xa')]=_0x49904f[_0x639e('0xa')];this['mapAgentsId']={};this[_0x639e('0xb')]=0x0;this['md5']='';this[_0x639e('0xc')]();this[_0x639e('0xd')]();}ChatQueue[_0x639e('0xe')]['updateRouting']=function(){var _0x4102ee=this[_0x639e('0xf')]['_rr'];this[_0x639e('0xf')]=_[_0x639e('0x10')](this['Agents'],'id');this[_0x639e('0xf')][_0x639e('0x11')]=_0x4102ee;};ChatQueue['prototype'][_0x639e('0xd')]=function(){this[_0x639e('0x12')]=0x0;this[_0x639e('0x13')]=0x0;for(var _0xd67ad2=0x0;_0xd67ad2<this[_0x639e('0xa')][_0x639e('0x14')];_0xd67ad2+=0x1){if(this['Agents'][_0xd67ad2][_0x639e('0x15')]){this[_0x639e('0x12')]+=0x1;}if(this['Agents'][_0xd67ad2][_0x639e('0x16')]){this[_0x639e('0x13')]+=0x1;}}this[_0x639e('0x17')]=this['loggedIn']-this[_0x639e('0x13')];this['available']=this[_0x639e('0x17')]>=0x0?this['available']:0x0;var _0x556283={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x639e('0x13')],'waiting':this[_0x639e('0xb')]};var _0x3c832f=md5(JSON['stringify'](_0x556283));if(this[_0x639e('0x18')]!==_0x3c832f){this[_0x639e('0x18')]=_0x3c832f;io['to'](util[_0x639e('0x19')]('chat:queue:%s',_0x556283[_0x639e('0x1a')]))[_0x639e('0x1b')]('chat_queue:save',_0x556283);}};module[_0x639e('0x1c')]=ChatQueue;
\ No newline at end of file
+var _0xac18=['emit','chat_queue:save','lodash','md5','util','redis','localhost','socket.io-emitter','name','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','prototype','paused','length','available','loggedIn','stringify','format','chat:queue:%s'];(function(_0x3d07ad,_0x7935d9){var _0x53b4b7=function(_0x46e65c){while(--_0x46e65c){_0x3d07ad['push'](_0x3d07ad['shift']());}};_0x53b4b7(++_0x7935d9);}(_0xac18,0x1a2));var _0x8ac1=function(_0x388d19,_0x1b59de){_0x388d19=_0x388d19-0x0;var _0x40747f=_0xac18[_0x388d19];return _0x40747f;};'use strict';var _=require(_0x8ac1('0x0'));var md5=require(_0x8ac1('0x1'));var util=require(_0x8ac1('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x8ac1('0x3')]=_['defaults'](config['redis'],{'host':_0x8ac1('0x4'),'port':0x18eb});var io=require(_0x8ac1('0x5'))(new Redis(config[_0x8ac1('0x3')]));function ChatQueue(_0x3574ee){this['id']=_0x3574ee['id']||0x0;this['name']=_0x3574ee[_0x8ac1('0x6')]||'';this['timeout']=_0x3574ee['timeout']||0xa;this[_0x8ac1('0x7')]=_0x3574ee[_0x8ac1('0x7')]||_0x8ac1('0x8');this[_0x8ac1('0x9')]=_0x3574ee[_0x8ac1('0x9')];this[_0x8ac1('0xa')]={};this[_0x8ac1('0xb')]=0x0;this[_0x8ac1('0x1')]='';this[_0x8ac1('0xc')]();this[_0x8ac1('0xd')]();}ChatQueue['prototype'][_0x8ac1('0xc')]=function(){var _0x2c9318=this[_0x8ac1('0xa')][_0x8ac1('0xe')];this[_0x8ac1('0xa')]=_[_0x8ac1('0xf')](this['Agents'],'id');this['mapAgentsId'][_0x8ac1('0xe')]=_0x2c9318;};ChatQueue[_0x8ac1('0x10')][_0x8ac1('0xd')]=function(){this['loggedIn']=0x0;this[_0x8ac1('0x11')]=0x0;for(var _0x2e8459=0x0;_0x2e8459<this[_0x8ac1('0x9')][_0x8ac1('0x12')];_0x2e8459+=0x1){if(this[_0x8ac1('0x9')][_0x2e8459]['online']){this['loggedIn']+=0x1;}if(this[_0x8ac1('0x9')][_0x2e8459]['chatPause']){this[_0x8ac1('0x11')]+=0x1;}}this[_0x8ac1('0x13')]=this[_0x8ac1('0x14')]-this[_0x8ac1('0x11')];this['available']=this[_0x8ac1('0x13')]>=0x0?this[_0x8ac1('0x13')]:0x0;var _0x30c43e={'id':this['id'],'available':this[_0x8ac1('0x13')],'loggedIn':this[_0x8ac1('0x14')],'name':this[_0x8ac1('0x6')],'paused':this[_0x8ac1('0x11')],'waiting':this['waiting']};var _0x17f0d4=md5(JSON[_0x8ac1('0x15')](_0x30c43e));if(this[_0x8ac1('0x1')]!==_0x17f0d4){this['md5']=_0x17f0d4;io['to'](util[_0x8ac1('0x16')](_0x8ac1('0x17'),_0x30c43e['name']))[_0x8ac1('0x18')](_0x8ac1('0x19'),_0x30c43e);}};module['exports']=ChatQueue;
\ No newline at end of file
index 109deec..37f13d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6273=['updateRouting','prototype','_rr','updateRealtime','loggedIn','paused','length','online','faxPause','available','stringify','format','emit','fax_queue:save','lodash','md5','util','ioredis','redis','defaults','socket.io-emitter','name','timeout','Agents','mapAgentsId','waiting'];(function(_0x556d13,_0xc7e4d6){var _0x410b54=function(_0x761b0e){while(--_0x761b0e){_0x556d13['push'](_0x556d13['shift']());}};_0x410b54(++_0xc7e4d6);}(_0x6273,0x160));var _0x3627=function(_0x34dd1a,_0x5c4ab1){_0x34dd1a=_0x34dd1a-0x0;var _0x2ddbfd=_0x6273[_0x34dd1a];return _0x2ddbfd;};'use strict';var _=require(_0x3627('0x0'));var md5=require(_0x3627('0x1'));var util=require(_0x3627('0x2'));var Redis=require(_0x3627('0x3'));var config=require('../../../config/environment');config[_0x3627('0x4')]=_[_0x3627('0x5')](config[_0x3627('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x3627('0x6'))(new Redis(config[_0x3627('0x4')]));function FaxQueue(_0x53e0e5){this['id']=_0x53e0e5['id']||0x0;this[_0x3627('0x7')]=_0x53e0e5['name']||'';this[_0x3627('0x8')]=_0x53e0e5[_0x3627('0x8')]||0xa;this['strategy']=_0x53e0e5['strategy']||'beepall';this[_0x3627('0x9')]=_0x53e0e5['Agents'];this[_0x3627('0xa')]={};this[_0x3627('0xb')]=0x0;this[_0x3627('0x1')]='';this[_0x3627('0xc')]();this['updateRealtime']();}FaxQueue[_0x3627('0xd')][_0x3627('0xc')]=function(){var _0x776509=this[_0x3627('0xa')][_0x3627('0xe')];this['mapAgentsId']=_['map'](this[_0x3627('0x9')],'id');this['mapAgentsId'][_0x3627('0xe')]=_0x776509;};FaxQueue[_0x3627('0xd')][_0x3627('0xf')]=function(){this[_0x3627('0x10')]=0x0;this[_0x3627('0x11')]=0x0;for(var _0x342a82=0x0;_0x342a82<this[_0x3627('0x9')][_0x3627('0x12')];_0x342a82+=0x1){if(this[_0x3627('0x9')][_0x342a82][_0x3627('0x13')]){this[_0x3627('0x10')]+=0x1;}if(this[_0x3627('0x9')][_0x342a82][_0x3627('0x14')]){this[_0x3627('0x11')]+=0x1;}}this[_0x3627('0x15')]=this['loggedIn']-this[_0x3627('0x11')];this[_0x3627('0x15')]=this[_0x3627('0x15')]>=0x0?this[_0x3627('0x15')]:0x0;var _0x3ce71a={'id':this['id'],'available':this[_0x3627('0x15')],'loggedIn':this[_0x3627('0x10')],'name':this[_0x3627('0x7')],'paused':this[_0x3627('0x11')],'waiting':this[_0x3627('0xb')]};var _0x1eee3a=md5(JSON[_0x3627('0x16')](_0x3ce71a));if(this[_0x3627('0x1')]!==_0x1eee3a){this[_0x3627('0x1')]=_0x1eee3a;io['to'](util[_0x3627('0x17')]('fax:queue:%s',_0x3ce71a[_0x3627('0x7')]))[_0x3627('0x18')](_0x3627('0x19'),_0x3ce71a);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0x5434=['format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','../../../config/environment','defaults','redis','localhost','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','_rr','map','mapAgentsId','loggedIn','paused','length','online','faxPause','available','stringify'];(function(_0x217be5,_0x2b9cba){var _0x5db2db=function(_0x55ed88){while(--_0x55ed88){_0x217be5['push'](_0x217be5['shift']());}};_0x5db2db(++_0x2b9cba);}(_0x5434,0x113));var _0x4543=function(_0x59ada3,_0x20b8aa){_0x59ada3=_0x59ada3-0x0;var _0x25b563=_0x5434[_0x59ada3];return _0x25b563;};'use strict';var _=require(_0x4543('0x0'));var md5=require(_0x4543('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x4543('0x2'));config['redis']=_[_0x4543('0x3')](config[_0x4543('0x4')],{'host':_0x4543('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4543('0x4')]));function FaxQueue(_0x55d551){this['id']=_0x55d551['id']||0x0;this[_0x4543('0x6')]=_0x55d551[_0x4543('0x6')]||'';this[_0x4543('0x7')]=_0x55d551[_0x4543('0x7')]||0xa;this[_0x4543('0x8')]=_0x55d551['strategy']||_0x4543('0x9');this[_0x4543('0xa')]=_0x55d551[_0x4543('0xa')];this['mapAgentsId']={};this[_0x4543('0xb')]=0x0;this['md5']='';this[_0x4543('0xc')]();this[_0x4543('0xd')]();}FaxQueue[_0x4543('0xe')]['updateRouting']=function(){var _0x599313=this['mapAgentsId'][_0x4543('0xf')];this['mapAgentsId']=_[_0x4543('0x10')](this[_0x4543('0xa')],'id');this[_0x4543('0x11')][_0x4543('0xf')]=_0x599313;};FaxQueue[_0x4543('0xe')][_0x4543('0xd')]=function(){this[_0x4543('0x12')]=0x0;this[_0x4543('0x13')]=0x0;for(var _0x28d4cb=0x0;_0x28d4cb<this[_0x4543('0xa')][_0x4543('0x14')];_0x28d4cb+=0x1){if(this[_0x4543('0xa')][_0x28d4cb][_0x4543('0x15')]){this[_0x4543('0x12')]+=0x1;}if(this[_0x4543('0xa')][_0x28d4cb][_0x4543('0x16')]){this[_0x4543('0x13')]+=0x1;}}this[_0x4543('0x17')]=this[_0x4543('0x12')]-this[_0x4543('0x13')];this['available']=this[_0x4543('0x17')]>=0x0?this[_0x4543('0x17')]:0x0;var _0x4a62d1={'id':this['id'],'available':this[_0x4543('0x17')],'loggedIn':this[_0x4543('0x12')],'name':this[_0x4543('0x6')],'paused':this[_0x4543('0x13')],'waiting':this['waiting']};var _0x449597=md5(JSON[_0x4543('0x18')](_0x4a62d1));if(this[_0x4543('0x1')]!==_0x449597){this['md5']=_0x449597;io['to'](util[_0x4543('0x19')](_0x4543('0x1a'),_0x4a62d1[_0x4543('0x6')]))[_0x4543('0x1b')](_0x4543('0x1c'),_0x4a62d1);}};module[_0x4543('0x1d')]=FaxQueue;
\ No newline at end of file
index 222dabf..42f2bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ce3=['Intervals','name'];(function(_0x3522c8,_0x1e7c82){var _0x22f498=function(_0x5bf143){while(--_0x5bf143){_0x3522c8['push'](_0x3522c8['shift']());}};_0x22f498(++_0x1e7c82);}(_0x1ce3,0xd5));var _0x31ce=function(_0x3f3bc5,_0x3e536f){_0x3f3bc5=_0x3f3bc5-0x0;var _0x205547=_0x1ce3[_0x3f3bc5];return _0x205547;};'use strict';function Interval(_0x414483){this['id']=_0x414483['id']||0x0;this[_0x31ce('0x0')]=_0x414483['name']||'';this[_0x31ce('0x1')]=_0x414483[_0x31ce('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x1516=['name','Intervals'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x1516,0x7a));var _0x6151=function(_0xd0e816,_0x561d7a){_0xd0e816=_0xd0e816-0x0;var _0x513c18=_0x1516[_0xd0e816];return _0x513c18;};'use strict';function Interval(_0x3d5ab5){this['id']=_0x3d5ab5['id']||0x0;this['name']=_0x3d5ab5[_0x6151('0x0')]||'';this[_0x6151('0x1')]=_0x3d5ab5[_0x6151('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
index d6b3db8..733cf5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e32=['name','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','loggedIn','paused','length','online','available','stringify','mail:queue:%s','emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter'];(function(_0x609988,_0x507944){var _0x159984=function(_0x39d9ce){while(--_0x39d9ce){_0x609988['push'](_0x609988['shift']());}};_0x159984(++_0x507944);}(_0x3e32,0x1a8));var _0x23e3=function(_0x474be4,_0x2bc4fe){_0x474be4=_0x474be4-0x0;var _0x212aad=_0x3e32[_0x474be4];return _0x212aad;};'use strict';var _=require(_0x23e3('0x0'));var md5=require(_0x23e3('0x1'));var util=require(_0x23e3('0x2'));var Redis=require(_0x23e3('0x3'));var config=require(_0x23e3('0x4'));config['redis']=_['defaults'](config[_0x23e3('0x5')],{'host':_0x23e3('0x6'),'port':0x18eb});var io=require(_0x23e3('0x7'))(new Redis(config[_0x23e3('0x5')]));function MailQueue(_0x2f662f){this['id']=_0x2f662f['id']||0x0;this[_0x23e3('0x8')]=_0x2f662f['name']||'';this['timeout']=_0x2f662f['timeout']||0xa;this['strategy']=_0x2f662f[_0x23e3('0x9')]||_0x23e3('0xa');this[_0x23e3('0xb')]=_0x2f662f[_0x23e3('0xb')];this[_0x23e3('0xc')]={};this[_0x23e3('0xd')]=0x0;this[_0x23e3('0x1')]='';this['updateRouting']();this[_0x23e3('0xe')]();}MailQueue[_0x23e3('0xf')][_0x23e3('0x10')]=function(){var _0x565460=this['mapAgentsId']['_rr'];this[_0x23e3('0xc')]=_['map'](this[_0x23e3('0xb')],'id');this['mapAgentsId'][_0x23e3('0x11')]=_0x565460;};MailQueue['prototype'][_0x23e3('0xe')]=function(){this[_0x23e3('0x12')]=0x0;this[_0x23e3('0x13')]=0x0;for(var _0x41e311=0x0;_0x41e311<this[_0x23e3('0xb')][_0x23e3('0x14')];_0x41e311+=0x1){if(this['Agents'][_0x41e311][_0x23e3('0x15')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x41e311]['mailPause']){this[_0x23e3('0x13')]+=0x1;}}this['available']=this[_0x23e3('0x12')]-this['paused'];this[_0x23e3('0x16')]=this[_0x23e3('0x16')]>=0x0?this[_0x23e3('0x16')]:0x0;var _0x1310e7={'id':this['id'],'available':this['available'],'loggedIn':this[_0x23e3('0x12')],'name':this[_0x23e3('0x8')],'paused':this['paused'],'waiting':this[_0x23e3('0xd')]};var _0x588e01=md5(JSON[_0x23e3('0x17')](_0x1310e7));if(this['md5']!==_0x588e01){this['md5']=_0x588e01;io['to'](util['format'](_0x23e3('0x18'),_0x1310e7[_0x23e3('0x8')]))[_0x23e3('0x19')]('mail_queue:save',_0x1310e7);}};module[_0x23e3('0x1a')]=MailQueue;
\ No newline at end of file
+var _0xf253=['length','online','mailPause','available','stringify','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused'];(function(_0x409e88,_0x2adfd9){var _0x39f270=function(_0x5ea4fb){while(--_0x5ea4fb){_0x409e88['push'](_0x409e88['shift']());}};_0x39f270(++_0x2adfd9);}(_0xf253,0x19c));var _0x3f25=function(_0x4f1713,_0x4abfb7){_0x4f1713=_0x4f1713-0x0;var _0x4726f6=_0xf253[_0x4f1713];return _0x4726f6;};'use strict';var _=require(_0x3f25('0x0'));var md5=require(_0x3f25('0x1'));var util=require(_0x3f25('0x2'));var Redis=require(_0x3f25('0x3'));var config=require('../../../config/environment');config[_0x3f25('0x4')]=_[_0x3f25('0x5')](config[_0x3f25('0x4')],{'host':_0x3f25('0x6'),'port':0x18eb});var io=require(_0x3f25('0x7'))(new Redis(config['redis']));function MailQueue(_0x4b0ab4){this['id']=_0x4b0ab4['id']||0x0;this[_0x3f25('0x8')]=_0x4b0ab4[_0x3f25('0x8')]||'';this[_0x3f25('0x9')]=_0x4b0ab4[_0x3f25('0x9')]||0xa;this[_0x3f25('0xa')]=_0x4b0ab4['strategy']||_0x3f25('0xb');this[_0x3f25('0xc')]=_0x4b0ab4['Agents'];this[_0x3f25('0xd')]={};this[_0x3f25('0xe')]=0x0;this[_0x3f25('0x1')]='';this[_0x3f25('0xf')]();this[_0x3f25('0x10')]();}MailQueue[_0x3f25('0x11')][_0x3f25('0xf')]=function(){var _0x2a83a9=this['mapAgentsId'][_0x3f25('0x12')];this[_0x3f25('0xd')]=_[_0x3f25('0x13')](this[_0x3f25('0xc')],'id');this['mapAgentsId'][_0x3f25('0x12')]=_0x2a83a9;};MailQueue[_0x3f25('0x11')][_0x3f25('0x10')]=function(){this[_0x3f25('0x14')]=0x0;this[_0x3f25('0x15')]=0x0;for(var _0x2e0ef4=0x0;_0x2e0ef4<this[_0x3f25('0xc')][_0x3f25('0x16')];_0x2e0ef4+=0x1){if(this[_0x3f25('0xc')][_0x2e0ef4][_0x3f25('0x17')]){this[_0x3f25('0x14')]+=0x1;}if(this['Agents'][_0x2e0ef4][_0x3f25('0x18')]){this[_0x3f25('0x15')]+=0x1;}}this[_0x3f25('0x19')]=this[_0x3f25('0x14')]-this[_0x3f25('0x15')];this['available']=this[_0x3f25('0x19')]>=0x0?this[_0x3f25('0x19')]:0x0;var _0xe9c7b8={'id':this['id'],'available':this[_0x3f25('0x19')],'loggedIn':this[_0x3f25('0x14')],'name':this[_0x3f25('0x8')],'paused':this['paused'],'waiting':this[_0x3f25('0xe')]};var _0x178bd5=md5(JSON[_0x3f25('0x1a')](_0xe9c7b8));if(this[_0x3f25('0x1')]!==_0x178bd5){this[_0x3f25('0x1')]=_0x178bd5;io['to'](util['format'](_0x3f25('0x1b'),_0xe9c7b8[_0x3f25('0x8')]))[_0x3f25('0x1c')](_0x3f25('0x1d'),_0xe9c7b8);}};module[_0x3f25('0x1e')]=MailQueue;
\ No newline at end of file
index 529731a..8bfd270 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','lodash','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','mapAgentsId','waiting','md5','updateRouting','updateRealtime','Agents','prototype','loggedIn','paused','online','openchannelPause','available','stringify','openchannel:queue:%s','openchannel_queue:save'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x326f,0xd1));var _0xf326=function(_0x255cf5,_0x47f139){_0x255cf5=_0x255cf5-0x0;var _0x1175a0=_0x326f[_0x255cf5];return _0x1175a0;};'use strict';var _=require(_0xf326('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xf326('0x1'));var config=require(_0xf326('0x2'));config[_0xf326('0x3')]=_[_0xf326('0x4')](config[_0xf326('0x3')],{'host':_0xf326('0x5'),'port':0x18eb});var io=require(_0xf326('0x6'))(new Redis(config[_0xf326('0x3')]));function OpenchannelQueue(_0x1b5a56){this['id']=_0x1b5a56['id']||0x0;this[_0xf326('0x7')]=_0x1b5a56['name']||'';this[_0xf326('0x8')]=_0x1b5a56[_0xf326('0x8')]||0xa;this[_0xf326('0x9')]=_0x1b5a56[_0xf326('0x9')]||'beepall';this['Agents']=_0x1b5a56['Agents'];this[_0xf326('0xa')]={};this[_0xf326('0xb')]=0x0;this[_0xf326('0xc')]='';this[_0xf326('0xd')]();this[_0xf326('0xe')]();}OpenchannelQueue['prototype'][_0xf326('0xd')]=function(){var _0x53cbcd=this[_0xf326('0xa')]['_rr'];this[_0xf326('0xa')]=_['map'](this[_0xf326('0xf')],'id');this[_0xf326('0xa')]['_rr']=_0x53cbcd;};OpenchannelQueue[_0xf326('0x10')][_0xf326('0xe')]=function(){this[_0xf326('0x11')]=0x0;this[_0xf326('0x12')]=0x0;for(var _0x5c8483=0x0;_0x5c8483<this[_0xf326('0xf')]['length'];_0x5c8483+=0x1){if(this['Agents'][_0x5c8483][_0xf326('0x13')]){this[_0xf326('0x11')]+=0x1;}if(this[_0xf326('0xf')][_0x5c8483][_0xf326('0x14')]){this[_0xf326('0x12')]+=0x1;}}this[_0xf326('0x15')]=this[_0xf326('0x11')]-this[_0xf326('0x12')];this['available']=this[_0xf326('0x15')]>=0x0?this[_0xf326('0x15')]:0x0;var _0x18bee3={'id':this['id'],'available':this[_0xf326('0x15')],'loggedIn':this[_0xf326('0x11')],'name':this[_0xf326('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x56ad41=md5(JSON[_0xf326('0x16')](_0x18bee3));if(this[_0xf326('0xc')]!==_0x56ad41){this['md5']=_0x56ad41;io['to'](util['format'](_0xf326('0x17'),_0x18bee3['name']))['emit'](_0xf326('0x18'),_0x18bee3);}};module[_0xf326('0x19')]=OpenchannelQueue;
\ No newline at end of file
+var _0x2ef3=['stringify','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','timeout','strategy','beepall','Agents','mapAgentsId','waiting','prototype','updateRouting','_rr','paused','length','online','available','loggedIn','name'];(function(_0x540133,_0x41783f){var _0x26b6e9=function(_0x10ebe3){while(--_0x10ebe3){_0x540133['push'](_0x540133['shift']());}};_0x26b6e9(++_0x41783f);}(_0x2ef3,0xba));var _0x32ef=function(_0x3bd56d,_0xb69968){_0x3bd56d=_0x3bd56d-0x0;var _0x46a9a9=_0x2ef3[_0x3bd56d];return _0x46a9a9;};'use strict';var _=require(_0x32ef('0x0'));var md5=require(_0x32ef('0x1'));var util=require(_0x32ef('0x2'));var Redis=require(_0x32ef('0x3'));var config=require(_0x32ef('0x4'));config[_0x32ef('0x5')]=_['defaults'](config[_0x32ef('0x5')],{'host':_0x32ef('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x32ef('0x5')]));function OpenchannelQueue(_0x37dd1d){this['id']=_0x37dd1d['id']||0x0;this['name']=_0x37dd1d['name']||'';this[_0x32ef('0x7')]=_0x37dd1d[_0x32ef('0x7')]||0xa;this[_0x32ef('0x8')]=_0x37dd1d[_0x32ef('0x8')]||_0x32ef('0x9');this[_0x32ef('0xa')]=_0x37dd1d[_0x32ef('0xa')];this[_0x32ef('0xb')]={};this[_0x32ef('0xc')]=0x0;this[_0x32ef('0x1')]='';this['updateRouting']();this['updateRealtime']();}OpenchannelQueue[_0x32ef('0xd')][_0x32ef('0xe')]=function(){var _0x45bfd5=this[_0x32ef('0xb')]['_rr'];this[_0x32ef('0xb')]=_['map'](this[_0x32ef('0xa')],'id');this['mapAgentsId'][_0x32ef('0xf')]=_0x45bfd5;};OpenchannelQueue[_0x32ef('0xd')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x32ef('0x10')]=0x0;for(var _0x4d8009=0x0;_0x4d8009<this[_0x32ef('0xa')][_0x32ef('0x11')];_0x4d8009+=0x1){if(this[_0x32ef('0xa')][_0x4d8009][_0x32ef('0x12')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x4d8009]['openchannelPause']){this[_0x32ef('0x10')]+=0x1;}}this[_0x32ef('0x13')]=this[_0x32ef('0x14')]-this['paused'];this['available']=this[_0x32ef('0x13')]>=0x0?this[_0x32ef('0x13')]:0x0;var _0x286bfb={'id':this['id'],'available':this['available'],'loggedIn':this[_0x32ef('0x14')],'name':this[_0x32ef('0x15')],'paused':this['paused'],'waiting':this[_0x32ef('0xc')]};var _0x314ef1=md5(JSON[_0x32ef('0x16')](_0x286bfb));if(this[_0x32ef('0x1')]!==_0x314ef1){this[_0x32ef('0x1')]=_0x314ef1;io['to'](util[_0x32ef('0x17')]('openchannel:queue:%s',_0x286bfb[_0x32ef('0x15')]))['emit'](_0x32ef('0x18'),_0x286bfb);}};module[_0x32ef('0x19')]=OpenchannelQueue;
\ No newline at end of file
index 197a757..20213e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4016=['smsPause','available','waiting','stringify','format','sms:queue:%s','emit','exports','md5','util','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','map','_rr','loggedIn','paused','length','online'];(function(_0x1f6f84,_0x2bab55){var _0x177f40=function(_0x384ab4){while(--_0x384ab4){_0x1f6f84['push'](_0x1f6f84['shift']());}};_0x177f40(++_0x2bab55);}(_0x4016,0x131));var _0x6401=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x4016[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var md5=require(_0x6401('0x0'));var util=require(_0x6401('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config['redis']=_[_0x6401('0x2')](config['redis'],{'host':_0x6401('0x3'),'port':0x18eb});var io=require(_0x6401('0x4'))(new Redis(config['redis']));function SmsQueue(_0x5c5201){this['id']=_0x5c5201['id']||0x0;this[_0x6401('0x5')]=_0x5c5201[_0x6401('0x5')]||'';this['timeout']=_0x5c5201[_0x6401('0x6')]||0xa;this['strategy']=_0x5c5201[_0x6401('0x7')]||'beepall';this[_0x6401('0x8')]=_0x5c5201[_0x6401('0x8')];this[_0x6401('0x9')]={};this['waiting']=0x0;this['md5']='';this[_0x6401('0xa')]();this[_0x6401('0xb')]();}SmsQueue[_0x6401('0xc')]['updateRouting']=function(){var _0x154a67=this['mapAgentsId']['_rr'];this[_0x6401('0x9')]=_[_0x6401('0xd')](this[_0x6401('0x8')],'id');this[_0x6401('0x9')][_0x6401('0xe')]=_0x154a67;};SmsQueue[_0x6401('0xc')][_0x6401('0xb')]=function(){this[_0x6401('0xf')]=0x0;this[_0x6401('0x10')]=0x0;for(var _0x1f6edf=0x0;_0x1f6edf<this[_0x6401('0x8')][_0x6401('0x11')];_0x1f6edf+=0x1){if(this[_0x6401('0x8')][_0x1f6edf][_0x6401('0x12')]){this['loggedIn']+=0x1;}if(this[_0x6401('0x8')][_0x1f6edf][_0x6401('0x13')]){this[_0x6401('0x10')]+=0x1;}}this[_0x6401('0x14')]=this[_0x6401('0xf')]-this[_0x6401('0x10')];this[_0x6401('0x14')]=this['available']>=0x0?this['available']:0x0;var _0x2d8f2d={'id':this['id'],'available':this['available'],'loggedIn':this[_0x6401('0xf')],'name':this[_0x6401('0x5')],'paused':this[_0x6401('0x10')],'waiting':this[_0x6401('0x15')]};var _0x3e2af8=md5(JSON[_0x6401('0x16')](_0x2d8f2d));if(this[_0x6401('0x0')]!==_0x3e2af8){this['md5']=_0x3e2af8;io['to'](util[_0x6401('0x17')](_0x6401('0x18'),_0x2d8f2d[_0x6401('0x5')]))[_0x6401('0x19')]('sms_queue:save',_0x2d8f2d);}};module[_0x6401('0x1a')]=SmsQueue;
\ No newline at end of file
+var _0x97a2=['md5','updateRouting','_rr','map','prototype','updateRealtime','loggedIn','online','smsPause','available','paused','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x2b42aa,_0x961507){var _0x4da497=function(_0x3dc138){while(--_0x3dc138){_0x2b42aa['push'](_0x2b42aa['shift']());}};_0x4da497(++_0x961507);}(_0x97a2,0x1b1));var _0x297a=function(_0x9c7b96,_0x52e837){_0x9c7b96=_0x9c7b96-0x0;var _0x4112d0=_0x97a2[_0x9c7b96];return _0x4112d0;};'use strict';var _=require(_0x297a('0x0'));var md5=require('md5');var util=require(_0x297a('0x1'));var Redis=require(_0x297a('0x2'));var config=require(_0x297a('0x3'));config[_0x297a('0x4')]=_[_0x297a('0x5')](config[_0x297a('0x4')],{'host':_0x297a('0x6'),'port':0x18eb});var io=require(_0x297a('0x7'))(new Redis(config['redis']));function SmsQueue(_0x19816c){this['id']=_0x19816c['id']||0x0;this[_0x297a('0x8')]=_0x19816c[_0x297a('0x8')]||'';this[_0x297a('0x9')]=_0x19816c[_0x297a('0x9')]||0xa;this[_0x297a('0xa')]=_0x19816c['strategy']||_0x297a('0xb');this[_0x297a('0xc')]=_0x19816c[_0x297a('0xc')];this[_0x297a('0xd')]={};this[_0x297a('0xe')]=0x0;this[_0x297a('0xf')]='';this['updateRouting']();this['updateRealtime']();}SmsQueue['prototype'][_0x297a('0x10')]=function(){var _0x3b0b3c=this[_0x297a('0xd')][_0x297a('0x11')];this['mapAgentsId']=_[_0x297a('0x12')](this[_0x297a('0xc')],'id');this[_0x297a('0xd')][_0x297a('0x11')]=_0x3b0b3c;};SmsQueue[_0x297a('0x13')][_0x297a('0x14')]=function(){this[_0x297a('0x15')]=0x0;this['paused']=0x0;for(var _0x4d826d=0x0;_0x4d826d<this[_0x297a('0xc')]['length'];_0x4d826d+=0x1){if(this[_0x297a('0xc')][_0x4d826d][_0x297a('0x16')]){this['loggedIn']+=0x1;}if(this[_0x297a('0xc')][_0x4d826d][_0x297a('0x17')]){this['paused']+=0x1;}}this[_0x297a('0x18')]=this[_0x297a('0x15')]-this[_0x297a('0x19')];this['available']=this[_0x297a('0x18')]>=0x0?this[_0x297a('0x18')]:0x0;var _0x29c6d6={'id':this['id'],'available':this['available'],'loggedIn':this[_0x297a('0x15')],'name':this[_0x297a('0x8')],'paused':this['paused'],'waiting':this[_0x297a('0xe')]};var _0x43be0b=md5(JSON[_0x297a('0x1a')](_0x29c6d6));if(this[_0x297a('0xf')]!==_0x43be0b){this[_0x297a('0xf')]=_0x43be0b;io['to'](util[_0x297a('0x1b')](_0x297a('0x1c'),_0x29c6d6[_0x297a('0x8')]))[_0x297a('0x1d')](_0x297a('0x1e'),_0x29c6d6);}};module[_0x297a('0x1f')]=SmsQueue;
\ No newline at end of file
index cefa10b..b0cdcbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b2=['length','online','available','name','format','emit','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','timeout','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','map','prototype','loggedIn','paused'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x18b2,0x119));var _0x218b=function(_0x2646f7,_0x4d229d){_0x2646f7=_0x2646f7-0x0;var _0x388167=_0x18b2[_0x2646f7];return _0x388167;};'use strict';var _=require(_0x218b('0x0'));var md5=require(_0x218b('0x1'));var util=require(_0x218b('0x2'));var Redis=require('ioredis');var config=require(_0x218b('0x3'));config[_0x218b('0x4')]=_[_0x218b('0x5')](config[_0x218b('0x4')],{'host':_0x218b('0x6'),'port':0x18eb});var io=require(_0x218b('0x7'))(new Redis(config[_0x218b('0x4')]));function WhatsappQueue(_0x1fec8b){this['id']=_0x1fec8b['id']||0x0;this['name']=_0x1fec8b['name']||'';this[_0x218b('0x8')]=_0x1fec8b[_0x218b('0x8')]||0xa;this['strategy']=_0x1fec8b['strategy']||'beepall';this[_0x218b('0x9')]=_0x1fec8b[_0x218b('0x9')];this['mapAgentsId']={};this[_0x218b('0xa')]=0x0;this[_0x218b('0x1')]='';this[_0x218b('0xb')]();this[_0x218b('0xc')]();}WhatsappQueue['prototype'][_0x218b('0xb')]=function(){var _0x3c4436=this[_0x218b('0xd')][_0x218b('0xe')];this[_0x218b('0xd')]=_[_0x218b('0xf')](this['Agents'],'id');this[_0x218b('0xd')][_0x218b('0xe')]=_0x3c4436;};WhatsappQueue[_0x218b('0x10')][_0x218b('0xc')]=function(){this[_0x218b('0x11')]=0x0;this[_0x218b('0x12')]=0x0;for(var _0x4bdd72=0x0;_0x4bdd72<this[_0x218b('0x9')][_0x218b('0x13')];_0x4bdd72+=0x1){if(this['Agents'][_0x4bdd72][_0x218b('0x14')]){this[_0x218b('0x11')]+=0x1;}if(this[_0x218b('0x9')][_0x4bdd72]['whatsappPause']){this['paused']+=0x1;}}this[_0x218b('0x15')]=this[_0x218b('0x11')]-this[_0x218b('0x12')];this['available']=this[_0x218b('0x15')]>=0x0?this['available']:0x0;var _0x1b27cc={'id':this['id'],'available':this[_0x218b('0x15')],'loggedIn':this['loggedIn'],'name':this[_0x218b('0x16')],'paused':this[_0x218b('0x12')],'waiting':this['waiting']};var _0xc430d=md5(JSON['stringify'](_0x1b27cc));if(this[_0x218b('0x1')]!==_0xc430d){this[_0x218b('0x1')]=_0xc430d;io['to'](util[_0x218b('0x17')]('whatsapp:queue:%s',_0x1b27cc['name']))[_0x218b('0x18')]('whatsapp_queue:save',_0x1b27cc);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x4f58=['online','available','stringify','format','whatsapp:queue:%s','emit','exports','lodash','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','prototype','updateRouting','_rr','map','updateRealtime','loggedIn','paused','length'];(function(_0x4b0e68,_0x13a491){var _0x495c76=function(_0x386b3c){while(--_0x386b3c){_0x4b0e68['push'](_0x4b0e68['shift']());}};_0x495c76(++_0x13a491);}(_0x4f58,0x7f));var _0x84f5=function(_0x41c894,_0x2d0d70){_0x41c894=_0x41c894-0x0;var _0x246a75=_0x4f58[_0x41c894];return _0x246a75;};'use strict';var _=require(_0x84f5('0x0'));var md5=require(_0x84f5('0x1'));var util=require(_0x84f5('0x2'));var Redis=require('ioredis');var config=require(_0x84f5('0x3'));config[_0x84f5('0x4')]=_[_0x84f5('0x5')](config['redis'],{'host':_0x84f5('0x6'),'port':0x18eb});var io=require(_0x84f5('0x7'))(new Redis(config[_0x84f5('0x4')]));function WhatsappQueue(_0x3f4986){this['id']=_0x3f4986['id']||0x0;this[_0x84f5('0x8')]=_0x3f4986[_0x84f5('0x8')]||'';this['timeout']=_0x3f4986[_0x84f5('0x9')]||0xa;this[_0x84f5('0xa')]=_0x3f4986[_0x84f5('0xa')]||_0x84f5('0xb');this[_0x84f5('0xc')]=_0x3f4986[_0x84f5('0xc')];this[_0x84f5('0xd')]={};this[_0x84f5('0xe')]=0x0;this[_0x84f5('0x1')]='';this['updateRouting']();this['updateRealtime']();}WhatsappQueue[_0x84f5('0xf')][_0x84f5('0x10')]=function(){var _0x40ae9a=this['mapAgentsId'][_0x84f5('0x11')];this[_0x84f5('0xd')]=_[_0x84f5('0x12')](this[_0x84f5('0xc')],'id');this[_0x84f5('0xd')][_0x84f5('0x11')]=_0x40ae9a;};WhatsappQueue[_0x84f5('0xf')][_0x84f5('0x13')]=function(){this[_0x84f5('0x14')]=0x0;this[_0x84f5('0x15')]=0x0;for(var _0x3e710d=0x0;_0x3e710d<this[_0x84f5('0xc')][_0x84f5('0x16')];_0x3e710d+=0x1){if(this['Agents'][_0x3e710d][_0x84f5('0x17')]){this[_0x84f5('0x14')]+=0x1;}if(this['Agents'][_0x3e710d]['whatsappPause']){this[_0x84f5('0x15')]+=0x1;}}this[_0x84f5('0x18')]=this[_0x84f5('0x14')]-this['paused'];this[_0x84f5('0x18')]=this['available']>=0x0?this['available']:0x0;var _0x534157={'id':this['id'],'available':this[_0x84f5('0x18')],'loggedIn':this[_0x84f5('0x14')],'name':this[_0x84f5('0x8')],'paused':this[_0x84f5('0x15')],'waiting':this[_0x84f5('0xe')]};var _0x1efaff=md5(JSON[_0x84f5('0x19')](_0x534157));if(this['md5']!==_0x1efaff){this[_0x84f5('0x1')]=_0x1efaff;io['to'](util[_0x84f5('0x1a')](_0x84f5('0x1b'),_0x534157[_0x84f5('0x8')]))[_0x84f5('0x1c')]('whatsapp_queue:save',_0x534157);}};module[_0x84f5('0x1d')]=WhatsappQueue;
\ No newline at end of file
index 858dec3..a217247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x5bf1dc,_0x16b841){var _0x3b1e94=function(_0x2609d7){while(--_0x2609d7){_0x5bf1dc['push'](_0x5bf1dc['shift']());}};_0x3b1e94(++_0x16b841);}(_0xb10b,0x12a));var _0xbb10=function(_0x2bf1fb,_0x10022d){_0x2bf1fb=_0x2bf1fb-0x0;var _0x5e7e68=_0xb10b[_0x2bf1fb];return _0x5e7e68;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xa9e0[_0x110c3d];return _0x226d67;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index 261b88a..382ee37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff93=['update','updateChatInteraction','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x2fee96,_0x2f735d){var _0x2e6ad1=function(_0x2c55ad){while(--_0x2c55ad){_0x2fee96['push'](_0x2fee96['shift']());}};_0x2e6ad1(++_0x2f735d);}(_0xff93,0x1b2));var _0x3ff9=function(_0x4ec072,_0x43eb7a){_0x4ec072=_0x4ec072-0x0;var _0x25a1a5=_0xff93[_0x4ec072];return _0x25a1a5;};'use strict';var client=require(_0x3ff9('0x0'));exports[_0x3ff9('0x1')]=function(_0x4062c6,_0x2a9175){return client['Request']('UpdateChatInteraction',{'body':_0x2a9175,'options':{'where':{'id':_0x4062c6}},'log':_0x3ff9('0x2')});};exports['addTags']=function(_0x5b5bf2,_0x4a112c){return client['Request'](_0x3ff9('0x3'),{'body':_0x4a112c,'options':{'where':{'id':_0x5b5bf2}},'log':_0x3ff9('0x4')});};
\ No newline at end of file
+var _0xe972=['updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe972,0x124));var _0x2e97=function(_0x2c1c90,_0x20dd54){_0x2c1c90=_0x2c1c90-0x0;var _0x213158=_0xe972[_0x2c1c90];return _0x213158;};'use strict';var client=require(_0x2e97('0x0'));exports[_0x2e97('0x1')]=function(_0x5dd1b3,_0xf9549f){return client[_0x2e97('0x2')](_0x2e97('0x3'),{'body':_0xf9549f,'options':{'where':{'id':_0x5dd1b3}},'log':_0x2e97('0x4')});};exports[_0x2e97('0x5')]=function(_0x5949b9,_0x21eaae){return client[_0x2e97('0x2')](_0x2e97('0x6'),{'body':_0x21eaae,'options':{'where':{'id':_0x5949b9}},'log':_0x2e97('0x7')});};
\ No newline at end of file
index 9d5e6ac..6f6b45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf4a=['CreateChatMessage','createChatMessage','../client','create'];(function(_0x32bef7,_0x17810d){var _0x26e926=function(_0x3a79ce){while(--_0x3a79ce){_0x32bef7['push'](_0x32bef7['shift']());}};_0x26e926(++_0x17810d);}(_0xaf4a,0x132));var _0xaaf4=function(_0xc4c142,_0x392430){_0xc4c142=_0xc4c142-0x0;var _0x2c825e=_0xaf4a[_0xc4c142];return _0x2c825e;};'use strict';var client=require(_0xaaf4('0x0'));exports[_0xaaf4('0x1')]=function(_0x2cd889){return client['Request'](_0xaaf4('0x2'),{'body':_0x2cd889,'log':_0xaaf4('0x3')});};
\ No newline at end of file
+var _0xb12e=['Request','CreateChatMessage','create'];(function(_0x58d98a,_0x3040c3){var _0x4274ba=function(_0x3573db){while(--_0x3573db){_0x58d98a['push'](_0x58d98a['shift']());}};_0x4274ba(++_0x3040c3);}(_0xb12e,0x83));var _0xeb12=function(_0x220c62,_0x2fdc21){_0x220c62=_0x220c62-0x0;var _0x19a75f=_0xb12e[_0x220c62];return _0x19a75f;};'use strict';var client=require('../client');exports[_0xeb12('0x0')]=function(_0x43a5c4){return client[_0xeb12('0x1')](_0xeb12('0x2'),{'body':_0x43a5c4,'log':'createChatMessage'});};
\ No newline at end of file
index becb412..f582be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x251b=['User','Agents','online','chatPause','../client','getChatQueues','Request','GetChatQueue','name','timeout','strategy'];(function(_0x21daa6,_0x3dfbf1){var _0x5bb860=function(_0x185d3c){while(--_0x185d3c){_0x21daa6['push'](_0x21daa6['shift']());}};_0x5bb860(++_0x3dfbf1);}(_0x251b,0x185));var _0xb251=function(_0x496333,_0x1c47d6){_0x496333=_0x496333-0x0;var _0x44256e=_0x251b[_0x496333];return _0x44256e;};'use strict';var client=require(_0xb251('0x0'));exports[_0xb251('0x1')]=function(){return function(){return client[_0xb251('0x2')](_0xb251('0x3'),{'options':{'raw':![],'attributes':['id',_0xb251('0x4'),_0xb251('0x5'),_0xb251('0x6')],'include':[{'model':_0xb251('0x7'),'as':_0xb251('0x8'),'attributes':['id',_0xb251('0x4'),_0xb251('0x9'),_0xb251('0xa')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0xe5d5=['name','strategy','Agents','online','chatPause','getChatQueues','Request'];(function(_0x1d75f7,_0x139d5e){var _0x307f9a=function(_0x400ae1){while(--_0x400ae1){_0x1d75f7['push'](_0x1d75f7['shift']());}};_0x307f9a(++_0x139d5e);}(_0xe5d5,0x156));var _0x5e5d=function(_0xb39c0b,_0x1d09ea){_0xb39c0b=_0xb39c0b-0x0;var _0x4dca98=_0xe5d5[_0xb39c0b];return _0x4dca98;};'use strict';var client=require('../client');exports['getChatQueues']=function(){return function(){return client[_0x5e5d('0x0')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x5e5d('0x1'),'timeout',_0x5e5d('0x2')],'include':[{'model':'User','as':_0x5e5d('0x3'),'attributes':['id',_0x5e5d('0x1'),_0x5e5d('0x4'),_0x5e5d('0x5')]}]},'log':_0x5e5d('0x6')});};};
\ No newline at end of file
index 2443e5b..e41ada3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4b6=['CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client','create','Request'];(function(_0x72ed3,_0x5a8de0){var _0x2dd03c=function(_0x5cff86){while(--_0x5cff86){_0x72ed3['push'](_0x72ed3['shift']());}};_0x2dd03c(++_0x5a8de0);}(_0xd4b6,0x13f));var _0x6d4b=function(_0x262f3a,_0x5bca2a){_0x262f3a=_0x262f3a-0x0;var _0x2d1f4f=_0xd4b6[_0x262f3a];return _0x2d1f4f;};'use strict';var client=require(_0x6d4b('0x0'));exports[_0x6d4b('0x1')]=function(_0x479744){return client[_0x6d4b('0x2')](_0x6d4b('0x3'),{'body':_0x479744,'log':'CreateChatQueueReport'});};exports[_0x6d4b('0x4')]=function(_0x5bba96,_0x56302c){return client['Request'](_0x6d4b('0x5'),{'body':_0x56302c,'options':{'where':{'uniqueid':_0x5bba96},'order':[['id',_0x6d4b('0x6')]],'limit':0x1},'log':_0x6d4b('0x5')});};
\ No newline at end of file
+var _0x76bc=['create','Request','CreateChatQueueReport','UpdateChatQueueReport','DESC','../client'];(function(_0x40c599,_0x3f76c5){var _0x469a9d=function(_0x1424dc){while(--_0x1424dc){_0x40c599['push'](_0x40c599['shift']());}};_0x469a9d(++_0x3f76c5);}(_0x76bc,0x17f));var _0xc76b=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x76bc[_0xb0f7c3];return _0x28ea68;};'use strict';var client=require(_0xc76b('0x0'));exports[_0xc76b('0x1')]=function(_0x2f2672){return client[_0xc76b('0x2')](_0xc76b('0x3'),{'body':_0x2f2672,'log':'CreateChatQueueReport'});};exports['update']=function(_0x28fb54,_0x161ef3){return client[_0xc76b('0x2')](_0xc76b('0x4'),{'body':_0x161ef3,'options':{'where':{'uniqueid':_0x28fb54},'order':[['id',_0xc76b('0x5')]],'limit':0x1},'log':_0xc76b('0x4')});};
\ No newline at end of file
index 62ad0c4..e79e19a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x466b8c,_0x492ed0){var _0x3f461d=function(_0x1bb52c){while(--_0x1bb52c){_0x466b8c['push'](_0x466b8c['shift']());}};_0x3f461d(++_0x492ed0);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x452a9d,_0x318a09){var _0x30246f=function(_0x2c29dc){while(--_0x2c29dc){_0x452a9d['push'](_0x452a9d['shift']());}};_0x30246f(++_0x318a09);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index 0dd804b..3fef517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f9=['../client','Request','CreateFaxMessage'];(function(_0x5a9117,_0x3b576c){var _0x376871=function(_0x268b06){while(--_0x268b06){_0x5a9117['push'](_0x5a9117['shift']());}};_0x376871(++_0x3b576c);}(_0x35f9,0x90));var _0x935f=function(_0x59fcf7,_0x2751bb){_0x59fcf7=_0x59fcf7-0x0;var _0x579804=_0x35f9[_0x59fcf7];return _0x579804;};'use strict';var client=require(_0x935f('0x0'));exports['create']=function(_0x1f6021){return client[_0x935f('0x1')](_0x935f('0x2'),{'body':_0x1f6021,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x1f59=['Request','CreateFaxMessage','createFaxMessage','../client'];(function(_0x52fc68,_0x179325){var _0x391c16=function(_0x1e8ee){while(--_0x1e8ee){_0x52fc68['push'](_0x52fc68['shift']());}};_0x391c16(++_0x179325);}(_0x1f59,0x173));var _0x91f5=function(_0x1c8556,_0x1bbe11){_0x1c8556=_0x1c8556-0x0;var _0x3c1b14=_0x1f59[_0x1c8556];return _0x3c1b14;};'use strict';var client=require(_0x91f5('0x0'));exports['create']=function(_0x9f8504){return client[_0x91f5('0x1')](_0x91f5('0x2'),{'body':_0x9f8504,'log':_0x91f5('0x3')});};
\ No newline at end of file
index 91cf91a..89cd61e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a03=['getFaxQueues','GetFaxQueue','name','timeout','strategy','Agents','online','faxPause'];(function(_0x445304,_0x5669d5){var _0x4db540=function(_0x4e1126){while(--_0x4e1126){_0x445304['push'](_0x445304['shift']());}};_0x4db540(++_0x5669d5);}(_0x7a03,0x78));var _0x37a0=function(_0x5a88c2,_0x4460c9){_0x5a88c2=_0x5a88c2-0x0;var _0x5a94be=_0x7a03[_0x5a88c2];return _0x5a94be;};'use strict';var client=require('../client');exports[_0x37a0('0x0')]=function(){return function(){return client['Request'](_0x37a0('0x1'),{'options':{'raw':![],'attributes':['id',_0x37a0('0x2'),_0x37a0('0x3'),_0x37a0('0x4')],'include':[{'model':'User','as':_0x37a0('0x5'),'attributes':['id',_0x37a0('0x2'),_0x37a0('0x6'),_0x37a0('0x7')]}]},'log':_0x37a0('0x0')});};};
\ No newline at end of file
+var _0x7e27=['getFaxQueues','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','faxPause'];(function(_0xbc9097,_0x33fec5){var _0x5eb593=function(_0x3d5e03){while(--_0x3d5e03){_0xbc9097['push'](_0xbc9097['shift']());}};_0x5eb593(++_0x33fec5);}(_0x7e27,0x122));var _0x77e2=function(_0x6a189c,_0x4eab2b){_0x6a189c=_0x6a189c-0x0;var _0x13a95d=_0x7e27[_0x6a189c];return _0x13a95d;};'use strict';var client=require('../client');exports[_0x77e2('0x0')]=function(){return function(){return client[_0x77e2('0x1')](_0x77e2('0x2'),{'options':{'raw':![],'attributes':['id',_0x77e2('0x3'),_0x77e2('0x4'),_0x77e2('0x5')],'include':[{'model':_0x77e2('0x6'),'as':_0x77e2('0x7'),'attributes':['id','name',_0x77e2('0x8'),_0x77e2('0x9')]}]},'log':_0x77e2('0x0')});};};
\ No newline at end of file
index bf077d5..30c77b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c24=['Request','CreateFaxQueueReport','update','DESC','UpdateFaxQueueReport','../client','create'];(function(_0x107e09,_0x48f51a){var _0x4d2a8c=function(_0x11025a){while(--_0x11025a){_0x107e09['push'](_0x107e09['shift']());}};_0x4d2a8c(++_0x48f51a);}(_0x7c24,0x186));var _0x47c2=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x7c24[_0x40220a];return _0x3903cc;};'use strict';var client=require(_0x47c2('0x0'));exports[_0x47c2('0x1')]=function(_0x31bce1){return client[_0x47c2('0x2')]('CreateFaxQueueReport',{'body':_0x31bce1,'log':_0x47c2('0x3')});};exports[_0x47c2('0x4')]=function(_0x20f60c,_0x14d01d){return client['Request']('UpdateFaxQueueReport',{'body':_0x14d01d,'options':{'where':{'uniqueid':_0x20f60c},'order':[['id',_0x47c2('0x5')]],'limit':0x1},'log':_0x47c2('0x6')});};
\ No newline at end of file
+var _0x9a78=['create','CreateFaxQueueReport','update','Request','UpdateFaxQueueReport','../client'];(function(_0x301d20,_0x133db5){var _0x5254a6=function(_0x5f426b){while(--_0x5f426b){_0x301d20['push'](_0x301d20['shift']());}};_0x5254a6(++_0x133db5);}(_0x9a78,0xfb));var _0x89a7=function(_0x3c2b57,_0x3c818b){_0x3c2b57=_0x3c2b57-0x0;var _0x314adf=_0x9a78[_0x3c2b57];return _0x314adf;};'use strict';var client=require(_0x89a7('0x0'));exports[_0x89a7('0x1')]=function(_0x44e57f){return client['Request']('CreateFaxQueueReport',{'body':_0x44e57f,'log':_0x89a7('0x2')});};exports[_0x89a7('0x3')]=function(_0xe5ff41,_0x5682e2){return client[_0x89a7('0x4')]('UpdateFaxQueueReport',{'body':_0x5682e2,'options':{'where':{'uniqueid':_0xe5ff41},'order':[['id','DESC']],'limit':0x1},'log':_0x89a7('0x5')});};
\ No newline at end of file
index 1b0ed3d..e8631d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef9a=['Request','GetInterval','name','Intervals','interval','../client','getIntervals'];(function(_0x1ef6d3,_0x528328){var _0x43513b=function(_0x348eed){while(--_0x348eed){_0x1ef6d3['push'](_0x1ef6d3['shift']());}};_0x43513b(++_0x528328);}(_0xef9a,0xa6));var _0xaef9=function(_0x2f75f9,_0x1a6c45){_0x2f75f9=_0x2f75f9-0x0;var _0x2f2d53=_0xef9a[_0x2f75f9];return _0x2f2d53;};'use strict';var client=require(_0xaef9('0x0'));exports[_0xaef9('0x1')]=function(){return function(){return client[_0xaef9('0x2')](_0xaef9('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xaef9('0x4')],'include':[{'model':'Interval','as':_0xaef9('0x5'),'attributes':['id',_0xaef9('0x4'),_0xaef9('0x6')]}]},'log':_0xaef9('0x1')});};};
\ No newline at end of file
+var _0x99a7=['getIntervals','Request','GetInterval','name','Intervals','interval'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x99a7,0x10e));var _0x799a=function(_0x3dda00,_0x392dca){_0x3dda00=_0x3dda00-0x0;var _0x2a6b26=_0x99a7[_0x3dda00];return _0x2a6b26;};'use strict';var client=require('../client');exports[_0x799a('0x0')]=function(){return function(){return client[_0x799a('0x1')](_0x799a('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x799a('0x3')],'include':[{'model':'Interval','as':_0x799a('0x4'),'attributes':['id',_0x799a('0x3'),_0x799a('0x5')]}]},'log':_0x799a('0x0')});};};
\ No newline at end of file
index c687e9e..2f42d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['Request','addTags','AddTagsToMailInteraction','../client','update'];(function(_0x1ad1ec,_0x4a2b3c){var _0x4ebac3=function(_0x53e830){while(--_0x53e830){_0x1ad1ec['push'](_0x1ad1ec['shift']());}};_0x4ebac3(++_0x4a2b3c);}(_0x9f0e,0x116));var _0xe9f0=function(_0x4be14b,_0x549509){_0x4be14b=_0x4be14b-0x0;var _0x138847=_0x9f0e[_0x4be14b];return _0x138847;};'use strict';var client=require(_0xe9f0('0x0'));exports[_0xe9f0('0x1')]=function(_0x28c33d,_0x1a7796){return client[_0xe9f0('0x2')]('UpdateMailInteraction',{'body':_0x1a7796,'options':{'where':{'id':_0x28c33d}},'log':'updateMailInteraction'});};exports[_0xe9f0('0x3')]=function(_0x150a03,_0x3c589d){return client[_0xe9f0('0x2')](_0xe9f0('0x4'),{'body':_0x3c589d,'options':{'where':{'id':_0x150a03}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xe2cf=['addTags','Request','AddTagsToMailInteraction','update','UpdateMailInteraction','updateMailInteraction'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x4f32de,_0x5bd4a){_0x4f32de=_0x4f32de-0x0;var _0x149821=_0xe2cf[_0x4f32de];return _0x149821;};'use strict';var client=require('../client');exports[_0xfe2c('0x0')]=function(_0x546786,_0x11c3a4){return client['Request'](_0xfe2c('0x1'),{'body':_0x11c3a4,'options':{'where':{'id':_0x546786}},'log':_0xfe2c('0x2')});};exports[_0xfe2c('0x3')]=function(_0x11b6b8,_0x494978){return client[_0xfe2c('0x4')](_0xfe2c('0x5'),{'body':_0x494978,'options':{'where':{'id':_0x11b6b8}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 4cdd463..f0a1c2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdac6=['create','CreateMailMessage','createMailMessage'];(function(_0x5c701b,_0x58adc6){var _0x9cf7e4=function(_0x360c46){while(--_0x360c46){_0x5c701b['push'](_0x5c701b['shift']());}};_0x9cf7e4(++_0x58adc6);}(_0xdac6,0x120));var _0x6dac=function(_0x2bd793,_0x3a4a3d){_0x2bd793=_0x2bd793-0x0;var _0x49c77e=_0xdac6[_0x2bd793];return _0x49c77e;};'use strict';var client=require('../client');exports[_0x6dac('0x0')]=function(_0x17ecee){return client['Request'](_0x6dac('0x1'),{'body':_0x17ecee,'log':_0x6dac('0x2')});};
\ No newline at end of file
+var _0x38a6=['../client','create','Request','CreateMailMessage','createMailMessage'];(function(_0x260b8a,_0x32d2ee){var _0x4bec83=function(_0xc15728){while(--_0xc15728){_0x260b8a['push'](_0x260b8a['shift']());}};_0x4bec83(++_0x32d2ee);}(_0x38a6,0x11d));var _0x638a=function(_0x63be5c,_0x2caad9){_0x63be5c=_0x63be5c-0x0;var _0x3c9e48=_0x38a6[_0x63be5c];return _0x3c9e48;};'use strict';var client=require(_0x638a('0x0'));exports[_0x638a('0x1')]=function(_0x2fbcc1){return client[_0x638a('0x2')](_0x638a('0x3'),{'body':_0x2fbcc1,'log':_0x638a('0x4')});};
\ No newline at end of file
index 7d71602..0f1a4de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fc8=['User','Agents','online','mailPause','getMailQueues','Request','GetMailQueue','name','timeout','strategy'];(function(_0x467379,_0x2c8374){var _0x2a8d22=function(_0x2bf585){while(--_0x2bf585){_0x467379['push'](_0x467379['shift']());}};_0x2a8d22(++_0x2c8374);}(_0x7fc8,0xd6));var _0x87fc=function(_0x554fe4,_0x42e3ad){_0x554fe4=_0x554fe4-0x0;var _0x572d30=_0x7fc8[_0x554fe4];return _0x572d30;};'use strict';var client=require('../client');exports[_0x87fc('0x0')]=function(){return function(){return client[_0x87fc('0x1')](_0x87fc('0x2'),{'options':{'raw':![],'attributes':['id',_0x87fc('0x3'),_0x87fc('0x4'),_0x87fc('0x5')],'include':[{'model':_0x87fc('0x6'),'as':_0x87fc('0x7'),'attributes':['id','name',_0x87fc('0x8'),_0x87fc('0x9')]}]},'log':_0x87fc('0x0')});};};
\ No newline at end of file
+var _0xe60b=['GetMailQueue','name','timeout','strategy','Agents','online','mailPause','../client','getMailQueues','Request'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xe60b,0x151));var _0xbe60=function(_0x5ca17b,_0x1c116e){_0x5ca17b=_0x5ca17b-0x0;var _0x4746f0=_0xe60b[_0x5ca17b];return _0x4746f0;};'use strict';var client=require(_0xbe60('0x0'));exports[_0xbe60('0x1')]=function(){return function(){return client[_0xbe60('0x2')](_0xbe60('0x3'),{'options':{'raw':![],'attributes':['id',_0xbe60('0x4'),_0xbe60('0x5'),_0xbe60('0x6')],'include':[{'model':'User','as':_0xbe60('0x7'),'attributes':['id',_0xbe60('0x4'),_0xbe60('0x8'),_0xbe60('0x9')]}]},'log':_0xbe60('0x1')});};};
\ No newline at end of file
index 9349aa7..b83d8f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x350f=['Request','CreateMailQueueReport','UpdateMailQueueReport','DESC','../client'];(function(_0x708c,_0x31221c){var _0x11ad68=function(_0x24900b){while(--_0x24900b){_0x708c['push'](_0x708c['shift']());}};_0x11ad68(++_0x31221c);}(_0x350f,0x1cb));var _0xf350=function(_0x4a45b4,_0x59804f){_0x4a45b4=_0x4a45b4-0x0;var _0x1a99c9=_0x350f[_0x4a45b4];return _0x1a99c9;};'use strict';var client=require(_0xf350('0x0'));exports['create']=function(_0x3d729b){return client[_0xf350('0x1')](_0xf350('0x2'),{'body':_0x3d729b,'log':_0xf350('0x2')});};exports['update']=function(_0x101dba,_0xfe0bc0){return client[_0xf350('0x1')](_0xf350('0x3'),{'body':_0xfe0bc0,'options':{'where':{'uniqueid':_0x101dba},'order':[['id',_0xf350('0x4')]],'limit':0x1},'log':_0xf350('0x3')});};
\ No newline at end of file
+var _0x3d38=['UpdateMailQueueReport','../client','create','Request','CreateMailQueueReport','update'];(function(_0x4ec072,_0x43eb7a){var _0x25a1a5=function(_0x1f416e){while(--_0x1f416e){_0x4ec072['push'](_0x4ec072['shift']());}};_0x25a1a5(++_0x43eb7a);}(_0x3d38,0x133));var _0x83d3=function(_0x9bca53,_0x59b4f8){_0x9bca53=_0x9bca53-0x0;var _0x3894bc=_0x3d38[_0x9bca53];return _0x3894bc;};'use strict';var client=require(_0x83d3('0x0'));exports[_0x83d3('0x1')]=function(_0x3dd573){return client[_0x83d3('0x2')](_0x83d3('0x3'),{'body':_0x3dd573,'log':_0x83d3('0x3')});};exports[_0x83d3('0x4')]=function(_0x2d1993,_0x2d7893){return client[_0x83d3('0x2')](_0x83d3('0x5'),{'body':_0x2d7893,'options':{'where':{'uniqueid':_0x2d1993},'order':[['id','DESC']],'limit':0x1},'log':_0x83d3('0x5')});};
\ No newline at end of file
index 4b00900..444f799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x416e=['../client','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTagsToChatInteraction'];(function(_0x2e0054,_0x2e66b4){var _0x4b40cc=function(_0x5e94f9){while(--_0x5e94f9){_0x2e0054['push'](_0x2e0054['shift']());}};_0x4b40cc(++_0x2e66b4);}(_0x416e,0x13e));var _0xe416=function(_0x2eb3f1,_0x68efb8){_0x2eb3f1=_0x2eb3f1-0x0;var _0x1db72d=_0x416e[_0x2eb3f1];return _0x1db72d;};'use strict';var client=require(_0xe416('0x0'));exports[_0xe416('0x1')]=function(_0x30338f,_0x5c89f7){return client[_0xe416('0x2')](_0xe416('0x3'),{'body':_0x5c89f7,'options':{'where':{'id':_0x30338f}},'log':_0xe416('0x4')});};exports['addTags']=function(_0xbc523f,_0x19f9a0){return client['Request']('AddTagsToOpenchannelInteraction',{'body':_0x19f9a0,'options':{'where':{'id':_0xbc523f}},'log':_0xe416('0x5')});};
\ No newline at end of file
+var _0xf239=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update'];(function(_0x348710,_0x1ab0d5){var _0x3402d0=function(_0x3bed41){while(--_0x3bed41){_0x348710['push'](_0x348710['shift']());}};_0x3402d0(++_0x1ab0d5);}(_0xf239,0x139));var _0x9f23=function(_0x5d9b0d,_0x32ec14){_0x5d9b0d=_0x5d9b0d-0x0;var _0x5cf5aa=_0xf239[_0x5d9b0d];return _0x5cf5aa;};'use strict';var client=require(_0x9f23('0x0'));exports[_0x9f23('0x1')]=function(_0x5b5222,_0x1cd284){return client['Request'](_0x9f23('0x2'),{'body':_0x1cd284,'options':{'where':{'id':_0x5b5222}},'log':_0x9f23('0x3')});};exports['addTags']=function(_0x159caa,_0x404332){return client[_0x9f23('0x4')](_0x9f23('0x5'),{'body':_0x404332,'options':{'where':{'id':_0x159caa}},'log':_0x9f23('0x6')});};
\ No newline at end of file
index eb07124..c2d7e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a1f=['../client','create','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x21d0a5,_0x242625){var _0x3619ee=function(_0x40a37c){while(--_0x40a37c){_0x21d0a5['push'](_0x21d0a5['shift']());}};_0x3619ee(++_0x242625);}(_0x3a1f,0x78));var _0xf3a1=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x3a1f[_0x5783f4];return _0x28e380;};'use strict';var client=require(_0xf3a1('0x0'));exports[_0xf3a1('0x1')]=function(_0x5b9333){return client['Request'](_0xf3a1('0x2'),{'body':_0x5b9333,'log':_0xf3a1('0x3')});};
\ No newline at end of file
+var _0xc246=['../client','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x32f933,_0x2747c3){var _0x3d8a8f=function(_0x294b80){while(--_0x294b80){_0x32f933['push'](_0x32f933['shift']());}};_0x3d8a8f(++_0x2747c3);}(_0xc246,0x18c));var _0x6c24=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc246[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x6c24('0x0'));exports['create']=function(_0x12e460){return client[_0x6c24('0x1')](_0x6c24('0x2'),{'body':_0x12e460,'log':_0x6c24('0x3')});};
\ No newline at end of file
index 2b4dd35..e15ef8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6779=['GetOpenchannelQueue','name','timeout','strategy','User','Agents','online','openchannelPause','getOpenchannelQueues'];(function(_0x2b5c8d,_0x2bbdf8){var _0x14e704=function(_0x5d4061){while(--_0x5d4061){_0x2b5c8d['push'](_0x2b5c8d['shift']());}};_0x14e704(++_0x2bbdf8);}(_0x6779,0x156));var _0x9677=function(_0x19c8f3,_0x5520f8){_0x19c8f3=_0x19c8f3-0x0;var _0x456e6a=_0x6779[_0x19c8f3];return _0x456e6a;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x9677('0x0'),{'options':{'raw':![],'attributes':['id',_0x9677('0x1'),_0x9677('0x2'),_0x9677('0x3')],'include':[{'model':_0x9677('0x4'),'as':_0x9677('0x5'),'attributes':['id',_0x9677('0x1'),_0x9677('0x6'),_0x9677('0x7')]}]},'log':_0x9677('0x8')});};};
\ No newline at end of file
+var _0xaba1=['openchannelPause','getOpenchannelQueues','GetOpenchannelQueue','name','timeout','User','Agents','online'];(function(_0x51e8c9,_0x2824db){var _0x465dd1=function(_0x2d883e){while(--_0x2d883e){_0x51e8c9['push'](_0x51e8c9['shift']());}};_0x465dd1(++_0x2824db);}(_0xaba1,0x1c9));var _0x1aba=function(_0x332a6e,_0x4fdd82){_0x332a6e=_0x332a6e-0x0;var _0x3ad73e=_0xaba1[_0x332a6e];return _0x3ad73e;};'use strict';var client=require('../client');exports[_0x1aba('0x0')]=function(){return function(){return client['Request'](_0x1aba('0x1'),{'options':{'raw':![],'attributes':['id',_0x1aba('0x2'),_0x1aba('0x3'),'strategy'],'include':[{'model':_0x1aba('0x4'),'as':_0x1aba('0x5'),'attributes':['id',_0x1aba('0x2'),_0x1aba('0x6'),_0x1aba('0x7')]}]},'log':_0x1aba('0x0')});};};
\ No newline at end of file
index 5c3fb71..23129b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ed=['UpdateOpenchannelQueueReport','DESC','../client','Request','CreateOpenchannelQueueReport','update'];(function(_0x5773f7,_0xc3a086){var _0x1f77f2=function(_0x4ecafc){while(--_0x4ecafc){_0x5773f7['push'](_0x5773f7['shift']());}};_0x1f77f2(++_0xc3a086);}(_0xf8ed,0x18e));var _0xdf8e=function(_0x1fe200,_0x8696f4){_0x1fe200=_0x1fe200-0x0;var _0x36ff83=_0xf8ed[_0x1fe200];return _0x36ff83;};'use strict';var client=require(_0xdf8e('0x0'));exports['create']=function(_0x2b5b61){return client[_0xdf8e('0x1')]('CreateOpenchannelQueueReport',{'body':_0x2b5b61,'log':_0xdf8e('0x2')});};exports[_0xdf8e('0x3')]=function(_0x5f0980,_0x175d80){return client['Request'](_0xdf8e('0x4'),{'body':_0x175d80,'options':{'where':{'uniqueid':_0x5f0980},'order':[['id',_0xdf8e('0x5')]],'limit':0x1},'log':_0xdf8e('0x4')});};
\ No newline at end of file
+var _0x99d4=['../client','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC'];(function(_0x511b76,_0x4727fa){var _0x5424ff=function(_0x24b7c0){while(--_0x24b7c0){_0x511b76['push'](_0x511b76['shift']());}};_0x5424ff(++_0x4727fa);}(_0x99d4,0x122));var _0x499d=function(_0x32efb3,_0x29aff9){_0x32efb3=_0x32efb3-0x0;var _0x1dfa74=_0x99d4[_0x32efb3];return _0x1dfa74;};'use strict';var client=require(_0x499d('0x0'));exports['create']=function(_0x422d75){return client['Request']('CreateOpenchannelQueueReport',{'body':_0x422d75,'log':_0x499d('0x1')});};exports[_0x499d('0x2')]=function(_0x50fd5b,_0x48e2fb){return client['Request'](_0x499d('0x3'),{'body':_0x48e2fb,'options':{'where':{'uniqueid':_0x50fd5b},'order':[['id',_0x499d('0x4')]],'limit':0x1},'log':_0x499d('0x3')});};
\ No newline at end of file
index 084509e..0eaae56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5309=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','addTagsToSmsInteraction','../client'];(function(_0x31e47b,_0x41b021){var _0x5e24d8=function(_0x57e10b){while(--_0x57e10b){_0x31e47b['push'](_0x31e47b['shift']());}};_0x5e24d8(++_0x41b021);}(_0x5309,0x1aa));var _0x9530=function(_0x4ab99,_0x219ed2){_0x4ab99=_0x4ab99-0x0;var _0x29e39c=_0x5309[_0x4ab99];return _0x29e39c;};'use strict';var client=require(_0x9530('0x0'));exports[_0x9530('0x1')]=function(_0x2658ab,_0x12b620){return client[_0x9530('0x2')](_0x9530('0x3'),{'body':_0x12b620,'options':{'where':{'id':_0x2658ab}},'log':_0x9530('0x4')});};exports[_0x9530('0x5')]=function(_0x169a84,_0x41a9c1){return client['Request']('AddTagsToSmsInteraction',{'body':_0x41a9c1,'options':{'where':{'id':_0x169a84}},'log':_0x9530('0x6')});};
\ No newline at end of file
+var _0x2fed=['Request','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0xf0c02d,_0x409c69){var _0x124e61=function(_0x3e8f69){while(--_0x3e8f69){_0xf0c02d['push'](_0xf0c02d['shift']());}};_0x124e61(++_0x409c69);}(_0x2fed,0x7c));var _0xd2fe=function(_0x4febfe,_0x15c2db){_0x4febfe=_0x4febfe-0x0;var _0x359098=_0x2fed[_0x4febfe];return _0x359098;};'use strict';var client=require(_0xd2fe('0x0'));exports[_0xd2fe('0x1')]=function(_0x35bf53,_0x1f0e53){return client[_0xd2fe('0x2')]('UpdateSmsInteraction',{'body':_0x1f0e53,'options':{'where':{'id':_0x35bf53}},'log':_0xd2fe('0x3')});};exports[_0xd2fe('0x4')]=function(_0x48707a,_0x58f3f8){return client[_0xd2fe('0x2')](_0xd2fe('0x5'),{'body':_0x58f3f8,'options':{'where':{'id':_0x48707a}},'log':_0xd2fe('0x6')});};
\ No newline at end of file
index 533da93..af6042d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04d5=['CreateSmsMessage','createSmsMessage','create','Request'];(function(_0x2c0dc0,_0x19900d){var _0x4c0990=function(_0x530791){while(--_0x530791){_0x2c0dc0['push'](_0x2c0dc0['shift']());}};_0x4c0990(++_0x19900d);}(_0x04d5,0x6e));var _0x504d=function(_0x528557,_0x522e3e){_0x528557=_0x528557-0x0;var _0x5620be=_0x04d5[_0x528557];return _0x5620be;};'use strict';var client=require('../client');exports[_0x504d('0x0')]=function(_0xb81f57){return client[_0x504d('0x1')](_0x504d('0x2'),{'body':_0xb81f57,'log':_0x504d('0x3')});};
\ No newline at end of file
+var _0xb81f=['Request','createSmsMessage','../client'];(function(_0x44ae0b,_0x3e9865){var _0x69232a=function(_0x5ae588){while(--_0x5ae588){_0x44ae0b['push'](_0x44ae0b['shift']());}};_0x69232a(++_0x3e9865);}(_0xb81f,0x80));var _0xfb81=function(_0x56febe,_0x537d33){_0x56febe=_0x56febe-0x0;var _0x2fe465=_0xb81f[_0x56febe];return _0x2fe465;};'use strict';var client=require(_0xfb81('0x0'));exports['create']=function(_0x59bfaa){return client[_0xfb81('0x1')]('CreateSmsMessage',{'body':_0x59bfaa,'log':_0xfb81('0x2')});};
\ No newline at end of file
index d2e0611..6d165c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x1a84be,_0x12bb63){var _0x111088=function(_0x3b548d){while(--_0x3b548d){_0x1a84be['push'](_0x1a84be['shift']());}};_0x111088(++_0x12bb63);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0x2d0e54,_0x23e0b5){var _0x142432=function(_0x40ce8d){while(--_0x40ce8d){_0x2d0e54['push'](_0x2d0e54['shift']());}};_0x142432(++_0x23e0b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),'strategy'],'include':[{'model':_0x0a9e('0x4'),'as':_0x0a9e('0x5'),'attributes':['id',_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 1178002..b43fae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0x44379f,_0x1c282d){var _0x4f5230=function(_0x30a7fc){while(--_0x30a7fc){_0x44379f['push'](_0x44379f['shift']());}};_0x4f5230(++_0x1c282d);}(_0x34e8,0x12c));var _0x834e=function(_0x347ad9,_0x6d492b){_0x347ad9=_0x347ad9-0x0;var _0x51b69e=_0x34e8[_0x347ad9];return _0x51b69e;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(_0x8b339){return client[_0x834e('0x2')]('CreateSmsQueueReport',{'body':_0x8b339,'log':_0x834e('0x3')});};exports[_0x834e('0x4')]=function(_0x472111,_0x31bf20){return client[_0x834e('0x2')](_0x834e('0x5'),{'body':_0x31bf20,'options':{'where':{'uniqueid':_0x472111},'order':[['id',_0x834e('0x6')]],'limit':0x1},'log':'UpdateSmsQueueReport'});};
\ No newline at end of file
+var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x1944bb,_0x19a249){var _0x53fb80=function(_0x107c4d){while(--_0x107c4d){_0x1944bb['push'](_0x1944bb['shift']());}};_0x53fb80(++_0x19a249);}(_0x55ca,0x126));var _0xa55c=function(_0xc7348b,_0x145880){_0xc7348b=_0xc7348b-0x0;var _0x307cec=_0x55ca[_0xc7348b];return _0x307cec;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
index 5ecb210..7b5bc4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x3c1ea9,_0x436f52){var _0x54312e=function(_0x70728e){while(--_0x70728e){_0x3c1ea9['push'](_0x3c1ea9['shift']());}};_0x54312e(++_0x436f52);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0xa00b00,_0x2ef846){var _0x4585b2=function(_0x295ac0){while(--_0x295ac0){_0xa00b00['push'](_0xa00b00['shift']());}};_0x4585b2(++_0x2ef846);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index ec67d2b..4b48219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction','../client','Request','UpdateWhatsappInteraction'];(function(_0x2282ef,_0x24a74e){var _0x53ce36=function(_0x5369c6){while(--_0x5369c6){_0x2282ef['push'](_0x2282ef['shift']());}};_0x53ce36(++_0x24a74e);}(_0x8f9d,0x93));var _0xd8f9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x8f9d[_0xfae23b];return _0x200640;};'use strict';var client=require(_0xd8f9('0x0'));exports['update']=function(_0xb507ea,_0x54a94a){return client[_0xd8f9('0x1')](_0xd8f9('0x2'),{'body':_0x54a94a,'options':{'where':{'id':_0xb507ea}},'log':_0xd8f9('0x3')});};exports[_0xd8f9('0x4')]=function(_0x1f9331,_0x1b82b8){return client[_0xd8f9('0x1')]('AddTagsToWhatsappInteraction',{'body':_0x1b82b8,'options':{'where':{'id':_0x1f9331}},'log':_0xd8f9('0x5')});};
\ No newline at end of file
+var _0x9a14=['Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0x9a14,0xa8));var _0x49a1=function(_0x14385c,_0x3dfc7d){_0x14385c=_0x14385c-0x0;var _0x48cfe2=_0x9a14[_0x14385c];return _0x48cfe2;};'use strict';var client=require('../client');exports['update']=function(_0xece3f3,_0x3bfde6){return client[_0x49a1('0x0')](_0x49a1('0x1'),{'body':_0x3bfde6,'options':{'where':{'id':_0xece3f3}},'log':_0x49a1('0x2')});};exports[_0x49a1('0x3')]=function(_0x10de2e,_0x453ecf){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x453ecf,'options':{'where':{'id':_0x10de2e}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 92a7103..2eda895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c8e=['../client','create','Request','CreateWhatsappMessage'];(function(_0x4fbaaf,_0x1e1fe0){var _0x161841=function(_0x3f77a7){while(--_0x3f77a7){_0x4fbaaf['push'](_0x4fbaaf['shift']());}};_0x161841(++_0x1e1fe0);}(_0x6c8e,0x18c));var _0xe6c8=function(_0x49434b,_0x398417){_0x49434b=_0x49434b-0x0;var _0x4c6b99=_0x6c8e[_0x49434b];return _0x4c6b99;};'use strict';var client=require(_0xe6c8('0x0'));exports[_0xe6c8('0x1')]=function(_0xa38106){return client[_0xe6c8('0x2')](_0xe6c8('0x3'),{'body':_0xa38106,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x1dec=['Request','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0x35c64a,_0x159e2c){var _0x17540f=function(_0x65b1b1){while(--_0x65b1b1){_0x35c64a['push'](_0x35c64a['shift']());}};_0x17540f(++_0x159e2c);}(_0x1dec,0x12b));var _0xc1de=function(_0x1e51db,_0x45ede7){_0x1e51db=_0x1e51db-0x0;var _0x290a7c=_0x1dec[_0x1e51db];return _0x290a7c;};'use strict';var client=require(_0xc1de('0x0'));exports['create']=function(_0x3efc44){return client[_0xc1de('0x1')](_0xc1de('0x2'),{'body':_0x3efc44,'log':_0xc1de('0x3')});};
\ No newline at end of file
index 9fc6855..1da6c7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe948=['../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','strategy','User','Agents','name','whatsappPause'];(function(_0x4c1c6a,_0x4c1ef5){var _0x59a9df=function(_0x6825f8){while(--_0x6825f8){_0x4c1c6a['push'](_0x4c1c6a['shift']());}};_0x59a9df(++_0x4c1ef5);}(_0xe948,0x10e));var _0x8e94=function(_0x2de630,_0x5cdab1){_0x2de630=_0x2de630-0x0;var _0x486f91=_0xe948[_0x2de630];return _0x486f91;};'use strict';var client=require(_0x8e94('0x0'));exports[_0x8e94('0x1')]=function(){return function(){return client[_0x8e94('0x2')](_0x8e94('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8e94('0x4'),_0x8e94('0x5')],'include':[{'model':_0x8e94('0x6'),'as':_0x8e94('0x7'),'attributes':['id',_0x8e94('0x8'),'online',_0x8e94('0x9')]}]},'log':_0x8e94('0x1')});};};
\ No newline at end of file
+var _0xf9ea=['getWhatsappQueues','GetWhatsappQueue','name','timeout','User','Agents','online','whatsappPause','../client'];(function(_0x2ad5f2,_0x34176d){var _0x429555=function(_0x518cd6){while(--_0x518cd6){_0x2ad5f2['push'](_0x2ad5f2['shift']());}};_0x429555(++_0x34176d);}(_0xf9ea,0x10d));var _0xaf9e=function(_0x2d1665,_0x4f5001){_0x2d1665=_0x2d1665-0x0;var _0xd44742=_0xf9ea[_0x2d1665];return _0xd44742;};'use strict';var client=require(_0xaf9e('0x0'));exports[_0xaf9e('0x1')]=function(){return function(){return client['Request'](_0xaf9e('0x2'),{'options':{'raw':![],'attributes':['id',_0xaf9e('0x3'),_0xaf9e('0x4'),'strategy'],'include':[{'model':_0xaf9e('0x5'),'as':_0xaf9e('0x6'),'attributes':['id','name',_0xaf9e('0x7'),_0xaf9e('0x8')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index 4f7a3ed..63d3852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0bf=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client','create','Request'];(function(_0x44f7ae,_0x2998cd){var _0xbc6a13=function(_0x30ccc7){while(--_0x30ccc7){_0x44f7ae['push'](_0x44f7ae['shift']());}};_0xbc6a13(++_0x2998cd);}(_0xf0bf,0xd5));var _0xff0b=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0xf0bf[_0x5a3cf0];return _0x5a64ee;};'use strict';var client=require(_0xff0b('0x0'));exports[_0xff0b('0x1')]=function(_0x458c00){return client[_0xff0b('0x2')](_0xff0b('0x3'),{'body':_0x458c00,'log':_0xff0b('0x3')});};exports[_0xff0b('0x4')]=function(_0x55190e,_0x2a0d03){return client['Request'](_0xff0b('0x5'),{'body':_0x2a0d03,'options':{'where':{'uniqueid':_0x55190e},'order':[['id','DESC']],'limit':0x1},'log':_0xff0b('0x5')});};
\ No newline at end of file
+var _0x438f=['create','Request','CreateWhatsappQueueReport','DESC','UpdateWhatsappQueueReport','../client'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x438f,0x1a9));var _0xf438=function(_0x37f35a,_0x2979dd){_0x37f35a=_0x37f35a-0x0;var _0x1591ea=_0x438f[_0x37f35a];return _0x1591ea;};'use strict';var client=require(_0xf438('0x0'));exports[_0xf438('0x1')]=function(_0x5caefb){return client[_0xf438('0x2')](_0xf438('0x3'),{'body':_0x5caefb,'log':_0xf438('0x3')});};exports['update']=function(_0x4b36e9,_0x45b712){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x45b712,'options':{'where':{'uniqueid':_0x4b36e9},'order':[['id',_0xf438('0x4')]],'limit':0x1},'log':_0xf438('0x5')});};
\ No newline at end of file
index adc8712..17d3de5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1199=['name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','name','toLowerCase','consequence','length','[%s][AGENT]\x20%s','join','stop','agents','timeout','createQueue','atimeout','channel','format','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','close','[%s][AGENT]\x20ROUTING\x20END','next','agent','error','[%s][QUEUE]\x20%s','stack','validate','lodash','util','../../../../config/logger','routing','./strategy'];(function(_0xa8d109,_0x71d57a){var _0x4a3300=function(_0x206dcc){while(--_0x206dcc){_0xa8d109['push'](_0xa8d109['shift']());}};_0x4a3300(++_0x71d57a);}(_0x1199,0x19e));var _0x9119=function(_0x20a52e,_0x3e54b0){_0x20a52e=_0x20a52e-0x0;var _0x556153=_0x1199[_0x20a52e];return _0x556153;};'use strict';var schema=require(_0x9119('0x0'));var _=require(_0x9119('0x1'));var util=require(_0x9119('0x2'));var seqqueue=require('seq-queue');var logger=require(_0x9119('0x3'))(_0x9119('0x4'));var strategy=require(_0x9119('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':_0x9119('0x6')},'timeout':{'type':'number','message':_0x9119('0x7')}});function writeLog(_0x20468f,_0x29b679,_0x16ab2c){return logger['info'](util['format']('[%s][AGENT][NAME:%s][STATUS:%s]',_0x20468f,_0x29b679[_0x9119('0x8')],_0x16ab2c));}function handleFindAgent(_0x28feb4){return function(_0x198aec){return _0x198aec['name'][_0x9119('0x9')]()===_0x28feb4[_0x9119('0x9')]();};}exports[_0x9119('0xa')]=function(_0x10a178,_0x1316a7,_0x240ec8,_0x42a380){return function(_0x144150){try{var _0x2e296d={'name':_0x1316a7[0x0],'timeout':_0x1316a7[0x1]};var _0x426ee4=queue[_0x9119('0x0')](_0x2e296d,{'typecast':!![]});if(_0x426ee4[_0x9119('0xb')]){logger['error'](_0x9119('0xc'),_0x10a178,_['map'](_0x426ee4,'message')[_0x9119('0xd')](',\x20'));_0x144150[_0x9119('0xe')]();}else{var _0x69652b=_['find'](_0x240ec8[_0x9119('0xf')],handleFindAgent(_0x2e296d[_0x9119('0x8')]));if(_0x69652b){var _0x20763d=(_0x2e296d[_0x9119('0x10')]||0xa)*0x3e8;var _0x46b028,_0x1e5e9a;var _0x259d00=seqqueue[_0x9119('0x11')](_0x20763d);_0x259d00['id']=_0x10a178;_0x259d00[_0x9119('0x12')]=_0x20763d;_0x259d00[_0x9119('0x13')]=_0x42a380[_0x9119('0x13')];writeLog(_0x10a178,_0x69652b,util[_0x9119('0x14')]('START:%s',_0x20763d));_0x240ec8[_0x9119('0x15')][_0x10a178]['on']('end',function(){logger['info'](_0x9119('0x16'),_0x10a178);clearTimeout(_0x1e5e9a);_0x1e5e9a=undefined;_0x259d00[_0x9119('0x17')]();if(_0x240ec8['rules'][_0x10a178]){delete _0x240ec8['rules'][_0x10a178];}_0x144150[_0x9119('0xe')]();});_0x240ec8[_0x9119('0x15')][_0x10a178]['on']('complete',function(){if(_0x240ec8[_0x9119('0x15')][_0x10a178]){delete _0x240ec8['rules'][_0x10a178];}});_0x1e5e9a=setTimeout(function(){logger['info'](_0x9119('0x18'),_0x10a178);clearTimeout(_0x1e5e9a);_0x259d00['close']();_0x144150[_0x9119('0x19')]();},_0x20763d);strategy[_0x9119('0x1a')](_0x259d00,_0x69652b,_0x240ec8,_0x42a380);}else{logger[_0x9119('0x1b')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x10a178,_0x2e296d[_0x9119('0x8')]);_0x144150[_0x9119('0xe')]();}}}catch(_0x383af2){console['log'](_0x383af2);logger[_0x9119('0x1b')](_0x9119('0x1c'),_0x10a178,_0x383af2[_0x9119('0x1d')]);_0x144150[_0x9119('0xe')]();}};};
\ No newline at end of file
+var _0x576c=['./strategy','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message','join','stop','agents','atimeout','channel','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','[%s][AGENT]\x20ROUTING\x20END','next','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','validate','lodash','util','seq-queue','../../../../config/logger'];(function(_0x483d0d,_0x13a905){var _0x2b17aa=function(_0x480fa8){while(--_0x480fa8){_0x483d0d['push'](_0x483d0d['shift']());}};_0x2b17aa(++_0x13a905);}(_0x576c,0x1c9));var _0xc576=function(_0x3065df,_0x165df8){_0x3065df=_0x3065df-0x0;var _0x2c301f=_0x576c[_0x3065df];return _0x2c301f;};'use strict';var schema=require(_0xc576('0x0'));var _=require(_0xc576('0x1'));var util=require(_0xc576('0x2'));var seqqueue=require(_0xc576('0x3'));var logger=require(_0xc576('0x4'))('routing');var strategy=require(_0xc576('0x5'));var queue=schema({'name':{'type':'string','required':!![],'message':_0xc576('0x6')},'timeout':{'type':_0xc576('0x7'),'message':_0xc576('0x8')}});function writeLog(_0x52a585,_0x1894eb,_0x1a88ce){return logger[_0xc576('0x9')](util[_0xc576('0xa')](_0xc576('0xb'),_0x52a585,_0x1894eb['name'],_0x1a88ce));}function handleFindAgent(_0x74dcec){return function(_0x4b7d17){return _0x4b7d17[_0xc576('0xc')]['toLowerCase']()===_0x74dcec[_0xc576('0xd')]();};}exports[_0xc576('0xe')]=function(_0x332751,_0x3266cf,_0x34a88e,_0x1a7655){return function(_0x424db2){try{var _0x4251aa={'name':_0x3266cf[0x0],'timeout':_0x3266cf[0x1]};var _0x5531e9=queue[_0xc576('0x0')](_0x4251aa,{'typecast':!![]});if(_0x5531e9[_0xc576('0xf')]){logger[_0xc576('0x10')](_0xc576('0x11'),_0x332751,_['map'](_0x5531e9,_0xc576('0x12'))[_0xc576('0x13')](',\x20'));_0x424db2[_0xc576('0x14')]();}else{var _0x31be1f=_['find'](_0x34a88e[_0xc576('0x15')],handleFindAgent(_0x4251aa[_0xc576('0xc')]));if(_0x31be1f){var _0x490813=(_0x4251aa['timeout']||0xa)*0x3e8;var _0x5cf5e6,_0x44a87a;var _0x460fc6=seqqueue['createQueue'](_0x490813);_0x460fc6['id']=_0x332751;_0x460fc6[_0xc576('0x16')]=_0x490813;_0x460fc6[_0xc576('0x17')]=_0x1a7655[_0xc576('0x17')];writeLog(_0x332751,_0x31be1f,util[_0xc576('0xa')]('START:%s',_0x490813));_0x34a88e[_0xc576('0x18')][_0x332751]['on'](_0xc576('0x19'),function(){logger[_0xc576('0x9')](_0xc576('0x1a'),_0x332751);clearTimeout(_0x44a87a);_0x44a87a=undefined;_0x460fc6['close']();if(_0x34a88e[_0xc576('0x18')][_0x332751]){delete _0x34a88e[_0xc576('0x18')][_0x332751];}_0x424db2[_0xc576('0x14')]();});_0x34a88e[_0xc576('0x18')][_0x332751]['on'](_0xc576('0x1b'),function(){if(_0x34a88e['rules'][_0x332751]){delete _0x34a88e[_0xc576('0x18')][_0x332751];}});_0x44a87a=setTimeout(function(){logger[_0xc576('0x9')](_0xc576('0x1c'),_0x332751);clearTimeout(_0x44a87a);_0x460fc6['close']();_0x424db2[_0xc576('0x1d')]();},_0x490813);strategy['agent'](_0x460fc6,_0x31be1f,_0x34a88e,_0x1a7655);}else{logger['error'](_0xc576('0x1e'),_0x332751,_0x4251aa[_0xc576('0xc')]);_0x424db2[_0xc576('0x14')]();}}}catch(_0x1c02f9){console[_0xc576('0x1f')](_0x1c02f9);logger[_0xc576('0x10')](_0xc576('0x20'),_0x332751,_0x1c02f9['stack']);_0x424db2[_0xc576('0x14')]();}};};
\ No newline at end of file
index cb0f35c..8791d43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d34=['catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','toString','postText','then','dialogState','Failed','lodash','moment','aws-sdk','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','sms','channel','chat','upperFirst','AccountId','account','isEmpty','body','getMustacheRender','Message','create'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0x2d34,0xc6));var _0x42d3=function(_0x41da7f,_0x4d5300){_0x41da7f=_0x41da7f-0x0;var _0x20f363=_0x2d34[_0x41da7f];return _0x20f363;};'use strict';var _=require(_0x42d3('0x0'));var moment=require(_0x42d3('0x1'));var AWS=require(_0x42d3('0x2'));var utils=require('./utils');var logger=require(_0x42d3('0x3'))('routing');var rpc={'chatMessage':require(_0x42d3('0x4')),'openchannelMessage':require(_0x42d3('0x5')),'mailMessage':require(_0x42d3('0x6')),'smsMessage':require(_0x42d3('0x7')),'faxMessage':require(_0x42d3('0x8')),'whatsappMessage':require(_0x42d3('0x9'))};exports[_0x42d3('0xa')]=function(_0x588122,_0x448eac){return function(_0x4de68d){try{if(!_[_0x42d3('0xb')](this[_0x42d3('0xc')][_0x42d3('0xd')])){logger[_0x42d3('0xe')](_0x42d3('0xf'),_0x588122,_0x42d3('0x10'));return _0x4de68d[_0x42d3('0x11')]();}var _0x10756c={'ContactId':this[_0x42d3('0x12')]['id'],'sentAt':moment()[_0x42d3('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x42d3('0x14')};if(this['channel']===_0x42d3('0x15')||this[_0x42d3('0x16')]==='whatsapp'){_0x10756c['phone']=this[_0x42d3('0xc')]['phone'];}var _0x565519=this['channel'];if(_0x565519===_0x42d3('0x17')){_0x10756c['ChatWebsiteId']=this['account']['id'];}else{_0x10756c[_[_0x42d3('0x18')](_0x565519)+_0x42d3('0x19')]=this[_0x42d3('0x1a')]['id'];}_0x10756c[_['upperFirst'](_0x565519)+'InteractionId']=this[_0x42d3('0xc')]['id'];if(this[_0x42d3('0xc')]['created']){var _0x75ab11=_0x448eac[0x4];if(!_[_0x42d3('0x1b')](_0x75ab11)){_0x10756c[_0x42d3('0x1c')]=utils[_0x42d3('0x1d')](_0x75ab11,this);return rpc[_0x565519+_0x42d3('0x1e')][_0x42d3('0x1f')](_0x10756c)['then'](function(_0x30575b){logger['info'](_0x42d3('0xf'),_0x588122,_0x10756c[_0x42d3('0x1c')]);})[_0x42d3('0x20')](function(_0x5dff9f){logger[_0x42d3('0x21')](_0x42d3('0xf'),_0x588122,JSON[_0x42d3('0x22')](_0x5dff9f));})[_0x42d3('0x23')](function(){logger[_0x42d3('0xe')](_0x42d3('0x24'),_0x588122);_0x4de68d[_0x42d3('0x25')]();});}else{logger['info'](_0x42d3('0x26'),_0x588122);_0x4de68d[_0x42d3('0x25')]();}}else{var _0x113abe=this;var _0x4b5ab6=new AWS[(_0x42d3('0x27'))]({'accessKeyId':_0x448eac[0x0],'secretAccessKey':_0x448eac[0x1],'region':_0x448eac[0x2]});var _0xe89a8a={'botAlias':'$LATEST','botName':_0x448eac[0x3],'inputText':this[_0x42d3('0x28')][_0x42d3('0x1c')],'userId':this[_0x42d3('0x16')]+':'+this[_0x42d3('0xc')]['id'][_0x42d3('0x29')]()};_0x4b5ab6[_0x42d3('0x2a')](_0xe89a8a,function(_0x175642,_0x3bd48d){if(_0x175642){logger['error'](_0x42d3('0xf'),_0x588122,_0x175642[_0x42d3('0x28')]);_0x4de68d['next']();}else if(_0x3bd48d&&_0x3bd48d[_0x42d3('0x28')]){_0x113abe[_0x42d3('0x1c')]['amazonlex']=_0x3bd48d;_0x10756c[_0x42d3('0x1c')]=_0x3bd48d[_0x42d3('0x28')];_0x10756c['providerName']='amazonlex';_0x10756c['providerResponse']=JSON['stringify'](_0x3bd48d);return rpc[_0x565519+_0x42d3('0x1e')][_0x42d3('0x1f')](_0x10756c)[_0x42d3('0x2b')](function(_0x10fe0e){logger['info'](_0x42d3('0xf'),_0x588122,_0x10756c['body']);if(_0x3bd48d[_0x42d3('0x2c')]==_0x42d3('0x2d')){_0x4de68d[_0x42d3('0x11')]();}else{_0x4de68d[_0x42d3('0x25')]();}})['catch'](function(_0x15f1b3){logger['error'](_0x42d3('0xf'),_0x588122,JSON[_0x42d3('0x22')](_0x15f1b3));_0x4de68d[_0x42d3('0x11')]();});}else{_0x4de68d[_0x42d3('0x11')]();}});}}catch(_0x98906a){logger[_0x42d3('0x21')]('[%s][AMAZONLEX]\x20%s',_0x588122,JSON['stringify'](_0x98906a));_0x4de68d[_0x42d3('0x25')]();}};};
\ No newline at end of file
+var _0x8880=['then','[%s][AMAZONLEX]\x20%s','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','postText','next','amazonlex','providerName','providerResponse','dialogState','Failed','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','contact','format','YYYY-MM-DD\x20HH:mm:ss','sms','channel','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','isEmpty','body','Message','create'];(function(_0x4b6e72,_0x5cabd7){var _0x451bce=function(_0x11aa4a){while(--_0x11aa4a){_0x4b6e72['push'](_0x4b6e72['shift']());}};_0x451bce(++_0x5cabd7);}(_0x8880,0x72));var _0x0888=function(_0x154983,_0xc29edf){_0x154983=_0x154983-0x0;var _0x3d1243=_0x8880[_0x154983];return _0x3d1243;};'use strict';var _=require(_0x0888('0x0'));var moment=require(_0x0888('0x1'));var AWS=require('aws-sdk');var utils=require(_0x0888('0x2'));var logger=require(_0x0888('0x3'))(_0x0888('0x4'));var rpc={'chatMessage':require(_0x0888('0x5')),'openchannelMessage':require(_0x0888('0x6')),'mailMessage':require(_0x0888('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x0888('0x8')),'whatsappMessage':require(_0x0888('0x9'))};exports[_0x0888('0xa')]=function(_0x54ac03,_0xa35cbc){return function(_0x144706){try{if(!_[_0x0888('0xb')](this[_0x0888('0xc')][_0x0888('0xd')])){logger[_0x0888('0xe')]('[%s][AMAZONLEX]\x20%s',_0x54ac03,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x144706['next']();}var _0x48527b={'ContactId':this[_0x0888('0xf')]['id'],'sentAt':moment()[_0x0888('0x10')](_0x0888('0x11')),'direction':'out'};if(this['channel']===_0x0888('0x12')||this[_0x0888('0x13')]===_0x0888('0x14')){_0x48527b[_0x0888('0x15')]=this['interaction']['phone'];}var _0x111f24=this[_0x0888('0x13')];if(_0x111f24==='chat'){_0x48527b[_0x0888('0x16')]=this[_0x0888('0x17')]['id'];}else{_0x48527b[_[_0x0888('0x18')](_0x111f24)+_0x0888('0x19')]=this['account']['id'];}_0x48527b[_[_0x0888('0x18')](_0x111f24)+'InteractionId']=this['interaction']['id'];if(this[_0x0888('0xc')]['created']){var _0x123c52=_0xa35cbc[0x4];if(!_[_0x0888('0x1a')](_0x123c52)){_0x48527b[_0x0888('0x1b')]=utils['getMustacheRender'](_0x123c52,this);return rpc[_0x111f24+_0x0888('0x1c')][_0x0888('0x1d')](_0x48527b)[_0x0888('0x1e')](function(_0x46fa9d){logger[_0x0888('0xe')](_0x0888('0x1f'),_0x54ac03,_0x48527b[_0x0888('0x1b')]);})[_0x0888('0x20')](function(_0x1a7b95){logger[_0x0888('0x21')]('[%s][AMAZONLEX]\x20%s',_0x54ac03,JSON[_0x0888('0x22')](_0x1a7b95));})[_0x0888('0x23')](function(){logger[_0x0888('0xe')](_0x0888('0x24'),_0x54ac03);_0x144706[_0x0888('0x25')]();});}else{logger[_0x0888('0xe')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x54ac03);_0x144706[_0x0888('0x25')]();}}else{var _0x4e31d3=this;var _0x253eef=new AWS[(_0x0888('0x26'))]({'accessKeyId':_0xa35cbc[0x0],'secretAccessKey':_0xa35cbc[0x1],'region':_0xa35cbc[0x2]});var _0x31808a={'botAlias':_0x0888('0x27'),'botName':_0xa35cbc[0x3],'inputText':this[_0x0888('0x28')][_0x0888('0x1b')],'userId':this[_0x0888('0x13')]+':'+this[_0x0888('0xc')]['id']['toString']()};_0x253eef[_0x0888('0x29')](_0x31808a,function(_0x14f1e1,_0x423c4e){if(_0x14f1e1){logger[_0x0888('0x21')](_0x0888('0x1f'),_0x54ac03,_0x14f1e1['message']);_0x144706[_0x0888('0x2a')]();}else if(_0x423c4e&&_0x423c4e[_0x0888('0x28')]){_0x4e31d3[_0x0888('0x1b')][_0x0888('0x2b')]=_0x423c4e;_0x48527b[_0x0888('0x1b')]=_0x423c4e[_0x0888('0x28')];_0x48527b[_0x0888('0x2c')]=_0x0888('0x2b');_0x48527b[_0x0888('0x2d')]=JSON[_0x0888('0x22')](_0x423c4e);return rpc[_0x111f24+_0x0888('0x1c')][_0x0888('0x1d')](_0x48527b)[_0x0888('0x1e')](function(_0x10eaaf){logger[_0x0888('0xe')]('[%s][AMAZONLEX]\x20%s',_0x54ac03,_0x48527b[_0x0888('0x1b')]);if(_0x423c4e[_0x0888('0x2e')]==_0x0888('0x2f')){_0x144706[_0x0888('0x2a')]();}else{_0x144706[_0x0888('0x25')]();}})[_0x0888('0x20')](function(_0x16992a){logger[_0x0888('0x21')](_0x0888('0x1f'),_0x54ac03,JSON['stringify'](_0x16992a));_0x144706['next']();});}else{_0x144706[_0x0888('0x2a')]();}});}}catch(_0x4a7ea7){logger[_0x0888('0x21')](_0x0888('0x1f'),_0x54ac03,JSON[_0x0888('0x22')](_0x4a7ea7));_0x144706[_0x0888('0x25')]();}};};
\ No newline at end of file
index e9ee91e..58c388f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce5=['finally','resolve','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','stop','lodash','./utils','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../mailRpc','consequence','channel','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','Autoreply\x20already\x20sent','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','chat','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','user','inReplyTo','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','</div>','headers','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s'];(function(_0x41b5e5,_0x3a2526){var _0x11bac0=function(_0x3ea59c){while(--_0x3ea59c){_0x41b5e5['push'](_0x41b5e5['shift']());}};_0x11bac0(++_0x3a2526);}(_0x4ce5,0x126));var _0x54ce=function(_0x23b2b2,_0x42a712){_0x23b2b2=_0x23b2b2-0x0;var _0x15d215=_0x4ce5[_0x23b2b2];return _0x15d215;};'use strict';var _=require(_0x54ce('0x0'));var moment=require('moment');var utils=require(_0x54ce('0x1'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x54ce('0x2')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x54ce('0x3')),'whatsappMessage':require(_0x54ce('0x4')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x54ce('0x5')),'mailInteraction':require(_0x54ce('0x6')),'smsInteraction':require(_0x54ce('0x7')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x54ce('0x8'));exports[_0x54ce('0x9')]=function(_0x1022d3,_0x2604ec,_0x1104c3,_0x109331){return function(_0x1bacc4){try{var _0x500cfb=this[_0x54ce('0xa')];if(_0x500cfb==='mail'&&_0x109331[_0x54ce('0xb')][_0x54ce('0xc')]){logger[_0x54ce('0xd')](_0x54ce('0xe'),_0x1022d3,_0x54ce('0xf'));return _0x1bacc4['next']();}if(_0x2604ec[0x0]==='1'&&(_[_0x54ce('0x10')](this[_0x54ce('0x11')]['created'])||!this[_0x54ce('0x11')][_0x54ce('0x12')])){logger[_0x54ce('0xd')](_0x54ce('0xe'),_0x1022d3,_0x54ce('0x13'));return _0x1bacc4[_0x54ce('0x14')]();}if(_0x2604ec[0x0]==='2'&&this[_0x54ce('0x11')][_0x54ce('0x15')]){logger['info'](_0x54ce('0x16'),_0x1022d3,_0x54ce('0x17'));return _0x1bacc4[_0x54ce('0x14')]();}var _0x24a857={'ContactId':this['contact']['id'],'sentAt':moment()[_0x54ce('0x18')](_0x54ce('0x19')),'direction':_0x54ce('0x1a')};if(this[_0x54ce('0xa')]===_0x54ce('0x1b')){_0x24a857[_0x54ce('0xb')]=utils[_0x54ce('0x1c')](_0x2604ec[0x2],this);}else{_0x24a857[_0x54ce('0xb')]=utils[_0x54ce('0x1c')](_0x2604ec[0x1],this);}if(this[_0x54ce('0x1d')]){_0x24a857['to']=this[_0x54ce('0x1d')][_0x54ce('0x1e')]||'';if(this[_0x54ce('0xa')]===_0x54ce('0x1b')&&_0x2604ec[0x1]==='1'){_0x24a857['cc']=this[_0x54ce('0x1d')]['cc']||'';}_0x24a857['from']=this['message']['to']||'';_0x24a857[_0x54ce('0x1f')]=this[_0x54ce('0x1d')][_0x54ce('0x1f')]||'';_0x24a857[_0x54ce('0x20')]=!![];if(this[_0x54ce('0x1d')][_0x54ce('0x21')]){_0x24a857['subject']='';_0x24a857['subject']+=_[_0x54ce('0x22')](this[_0x54ce('0x1d')][_0x54ce('0x21')],_0x54ce('0x23'))?'':'Re:\x20';_0x24a857['subject']+=this['message'][_0x54ce('0x21')];}}if(this[_0x54ce('0xa')]===_0x54ce('0x24')){_0x24a857[_0x54ce('0x25')]=this['account']['id'];}else{_0x24a857[_['upperFirst'](this[_0x54ce('0xa')])+_0x54ce('0x26')]=this[_0x54ce('0x27')]['id'];}_0x24a857[_[_0x54ce('0x28')](this['channel'])+_0x54ce('0x29')]=this['interaction']['id'];var _0xfbab1b=this[_0x54ce('0x11')];if(rpc[this[_0x54ce('0xa')]+_0x54ce('0x2a')]){if(this[_0x54ce('0xa')]===_0x54ce('0x1b')){var _0x3bc538={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0x54ce('0x2b')][_0x54ce('0x2c')]){_0x3bc538[_0x54ce('0x2c')]=this[_0x54ce('0x27')][_0x54ce('0x2b')]['service'];}else{_0x3bc538['host']=this[_0x54ce('0x27')][_0x54ce('0x2b')][_0x54ce('0x2d')];_0x3bc538[_0x54ce('0x2e')]=this['account'][_0x54ce('0x2b')][_0x54ce('0x2e')];_0x3bc538[_0x54ce('0x2f')]=this['account'][_0x54ce('0x2b')][_0x54ce('0x2f')];}if(this['account'][_0x54ce('0x2b')][_0x54ce('0x30')]){_0x3bc538[_0x54ce('0x31')]={'user':this[_0x54ce('0x27')][_0x54ce('0x2b')][_0x54ce('0x32')],'pass':this[_0x54ce('0x27')][_0x54ce('0x2b')]['pass']};}_0x24a857[_0x54ce('0x33')]=this[_0x54ce('0x1d')][_0x54ce('0x34')];_0x24a857[_0x54ce('0x35')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0x54ce('0x36')](_0x24a857[_0x54ce('0xb')],_0x54ce('0x37'),'<div')+_0x54ce('0x38');_0x24a857[_0x54ce('0x39')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':'All','Precedence':_0x54ce('0x3a')};return mailRpc[_0x54ce('0x3b')](_0x3bc538,_0x24a857)[_0x54ce('0x3c')](function(_0x2b36a7){logger[_0x54ce('0xd')](_0x54ce('0x3d'),_0x1022d3);_0x24a857[_0x54ce('0x34')]=_0x2b36a7[_0x54ce('0x1d')][_0x54ce('0x34')];return rpc[_0x500cfb+_0x54ce('0x2a')][_0x54ce('0x3e')](_0x24a857);})[_0x54ce('0x3c')](function(_0x2fc705){logger['info'](_0x54ce('0xe'),_0x1022d3,JSON[_0x54ce('0x3f')](_0x2fc705));})[_0x54ce('0x40')](function(_0x347458){logger['error'](_0x54ce('0x41'),_0x1022d3,JSON[_0x54ce('0x3f')](_0x347458));})[_0x54ce('0x42')](function(){Promise[_0x54ce('0x43')]()[_0x54ce('0x3c')](function(){if(_0x2604ec[0x0]!=='2'||_0xfbab1b['autoreplyExecuted'])return;return rpc[_0x500cfb+'Interaction'][_0x54ce('0x44')](_0xfbab1b['id'],{'autoreplyExecuted':!![]})[_0x54ce('0x3c')](function(_0x2bb8b6){logger[_0x54ce('0xd')](_0x54ce('0x16'),_0x1022d3,JSON[_0x54ce('0x3f')](_0x2bb8b6));})[_0x54ce('0x40')](function(_0x6deb9b){logger['error'](_0x54ce('0x45'),_0x1022d3,JSON[_0x54ce('0x3f')](_0x6deb9b));});})[_0x54ce('0x3c')](function(){_0x1bacc4[_0x54ce('0x14')]();});});}else{return rpc[this[_0x54ce('0xa')]+_0x54ce('0x2a')][_0x54ce('0x3e')](_0x24a857)['then'](function(_0x1c1c62){logger['info'](_0x54ce('0xe'),_0x1022d3,_0x24a857['body']);})[_0x54ce('0x40')](function(_0x2ddf26){logger[_0x54ce('0x46')](_0x54ce('0xe'),_0x1022d3,JSON['stringify'](_0x2ddf26));})[_0x54ce('0x42')](function(){Promise['resolve']()['then'](function(){if(_0x2604ec[0x0]!=='2'||_0xfbab1b[_0x54ce('0x15')])return;return rpc[_0x500cfb+'Interaction'][_0x54ce('0x44')](_0xfbab1b['id'],{'autoreplyExecuted':!![]})[_0x54ce('0x3c')](function(_0x57a93c){logger[_0x54ce('0xd')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1022d3,JSON[_0x54ce('0x3f')](_0x57a93c));})['catch'](function(_0x2e81c9){logger[_0x54ce('0x46')](_0x54ce('0x45'),_0x1022d3,JSON['stringify'](_0x2e81c9));});})[_0x54ce('0x3c')](function(){_0x1bacc4['next']();});});}}}catch(_0x5a6e8b){logger[_0x54ce('0x46')](_0x54ce('0xe'),_0x1022d3,JSON['stringify'](_0x5a6e8b));_0x1bacc4[_0x54ce('0x47')]();}};};
\ No newline at end of file
+var _0xabb5=['auto_reply','sendMailMessage','then','create','catch','error','stringify','resolve','Interaction','update','finally','stop','lodash','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','info','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','Message','Smtp','service','host','port','secure','auth','user','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','</div>','headers','auto-replied'];(function(_0x4c8c52,_0x4da81b){var _0x199946=function(_0x29542){while(--_0x29542){_0x4c8c52['push'](_0x4c8c52['shift']());}};_0x199946(++_0x4da81b);}(_0xabb5,0x1aa));var _0x5abb=function(_0x482746,_0x1eddd){_0x482746=_0x482746-0x0;var _0x379681=_0xabb5[_0x482746];return _0x379681;};'use strict';var _=require(_0x5abb('0x0'));var moment=require('moment');var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x5abb('0x1')),'openchannelMessage':require(_0x5abb('0x2')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x5abb('0x3')),'whatsappMessage':require(_0x5abb('0x4')),'chatInteraction':require(_0x5abb('0x5')),'openchannelInteraction':require(_0x5abb('0x6')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x5abb('0x7'))};var mailRpc=require(_0x5abb('0x8'));exports[_0x5abb('0x9')]=function(_0x1025ca,_0x491d15,_0x189cb8,_0x26f5df){return function(_0x4aea4f){try{var _0x3fa013=this[_0x5abb('0xa')];if(_0x3fa013===_0x5abb('0xb')&&_0x26f5df[_0x5abb('0xc')][_0x5abb('0xd')]){logger['info'](_0x5abb('0xe'),_0x1025ca,_0x5abb('0xf'));return _0x4aea4f[_0x5abb('0x10')]();}if(_0x491d15[0x0]==='1'&&(_[_0x5abb('0x11')](this['interaction']['created'])||!this[_0x5abb('0x12')]['created'])){logger[_0x5abb('0x13')](_0x5abb('0xe'),_0x1025ca,_0x5abb('0x14'));return _0x4aea4f['next']();}if(_0x491d15[0x0]==='2'&&this['interaction'][_0x5abb('0x15')]){logger['info'](_0x5abb('0x16'),_0x1025ca,'One\x20Time\x20already\x20sent');return _0x4aea4f[_0x5abb('0x10')]();}var _0x2da280={'ContactId':this['contact']['id'],'sentAt':moment()[_0x5abb('0x17')](_0x5abb('0x18')),'direction':_0x5abb('0x19')};if(this[_0x5abb('0xa')]===_0x5abb('0xb')){_0x2da280['body']=utils[_0x5abb('0x1a')](_0x491d15[0x2],this);}else{_0x2da280['body']=utils[_0x5abb('0x1a')](_0x491d15[0x1],this);}if(this[_0x5abb('0x1b')]){_0x2da280['to']=this[_0x5abb('0x1b')][_0x5abb('0x1c')]||'';if(this[_0x5abb('0xa')]===_0x5abb('0xb')&&_0x491d15[0x1]==='1'){_0x2da280['cc']=this['message']['cc']||'';}_0x2da280[_0x5abb('0x1c')]=this['message']['to']||'';_0x2da280[_0x5abb('0x1d')]=this[_0x5abb('0x1b')][_0x5abb('0x1d')]||'';_0x2da280[_0x5abb('0x1e')]=!![];if(this[_0x5abb('0x1b')][_0x5abb('0x1f')]){_0x2da280['subject']='';_0x2da280[_0x5abb('0x1f')]+=_[_0x5abb('0x20')](this[_0x5abb('0x1b')][_0x5abb('0x1f')],_0x5abb('0x21'))?'':_0x5abb('0x22');_0x2da280['subject']+=this['message'][_0x5abb('0x1f')];}}if(this[_0x5abb('0xa')]==='chat'){_0x2da280[_0x5abb('0x23')]=this['account']['id'];}else{_0x2da280[_[_0x5abb('0x24')](this['channel'])+_0x5abb('0x25')]=this[_0x5abb('0x26')]['id'];}_0x2da280[_[_0x5abb('0x24')](this[_0x5abb('0xa')])+_0x5abb('0x27')]=this[_0x5abb('0x12')]['id'];var _0x3a8de2=this[_0x5abb('0x12')];if(rpc[this[_0x5abb('0xa')]+_0x5abb('0x28')]){if(this['channel']==='mail'){var _0x2adb8d={'tls':{'rejectUnauthorized':![]}};if(this[_0x5abb('0x26')][_0x5abb('0x29')]['service']){_0x2adb8d[_0x5abb('0x2a')]=this[_0x5abb('0x26')][_0x5abb('0x29')][_0x5abb('0x2a')];}else{_0x2adb8d[_0x5abb('0x2b')]=this['account']['Smtp'][_0x5abb('0x2b')];_0x2adb8d[_0x5abb('0x2c')]=this[_0x5abb('0x26')][_0x5abb('0x29')][_0x5abb('0x2c')];_0x2adb8d['secure']=this['account'][_0x5abb('0x29')][_0x5abb('0x2d')];}if(this['account']['Smtp']['authentication']){_0x2adb8d[_0x5abb('0x2e')]={'user':this[_0x5abb('0x26')]['Smtp'][_0x5abb('0x2f')],'pass':this[_0x5abb('0x26')][_0x5abb('0x29')][_0x5abb('0x30')]};}_0x2da280[_0x5abb('0x31')]=this['message'][_0x5abb('0x32')];_0x2da280[_0x5abb('0x33')]=_0x5abb('0x34')+_[_0x5abb('0x35')](_0x2da280['body'],'<div\x20id=\x22xm-mail-content\x22','<div')+_0x5abb('0x36');_0x2da280[_0x5abb('0x37')]={'Auto-Submitted':_0x5abb('0x38'),'X-Auto-Response-Suppress':'All','Precedence':_0x5abb('0x39')};return mailRpc[_0x5abb('0x3a')](_0x2adb8d,_0x2da280)[_0x5abb('0x3b')](function(_0x3b9d7d){logger[_0x5abb('0x13')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x1025ca);_0x2da280[_0x5abb('0x32')]=_0x3b9d7d[_0x5abb('0x1b')][_0x5abb('0x32')];return rpc[_0x3fa013+_0x5abb('0x28')][_0x5abb('0x3c')](_0x2da280);})['then'](function(_0x3fa8c4){logger[_0x5abb('0x13')](_0x5abb('0xe'),_0x1025ca,JSON['stringify'](_0x3fa8c4));})[_0x5abb('0x3d')](function(_0x3ebaa5){logger[_0x5abb('0x3e')]('[RPC][%s][AUTOREPLY]\x20%s',_0x1025ca,JSON[_0x5abb('0x3f')](_0x3ebaa5));})['finally'](function(){Promise[_0x5abb('0x40')]()[_0x5abb('0x3b')](function(){if(_0x491d15[0x0]!=='2'||_0x3a8de2['autoreplyExecuted'])return;return rpc[_0x3fa013+_0x5abb('0x41')][_0x5abb('0x42')](_0x3a8de2['id'],{'autoreplyExecuted':!![]})[_0x5abb('0x3b')](function(_0x18fa16){logger['info'](_0x5abb('0x16'),_0x1025ca,JSON[_0x5abb('0x3f')](_0x18fa16));})['catch'](function(_0x178081){logger[_0x5abb('0x3e')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1025ca,JSON[_0x5abb('0x3f')](_0x178081));});})[_0x5abb('0x3b')](function(){_0x4aea4f[_0x5abb('0x10')]();});});}else{return rpc[this['channel']+_0x5abb('0x28')]['create'](_0x2da280)[_0x5abb('0x3b')](function(_0x50d7e9){logger[_0x5abb('0x13')]('[%s][AUTOREPLY]\x20%s',_0x1025ca,_0x2da280[_0x5abb('0xc')]);})['catch'](function(_0x1bcafe){logger[_0x5abb('0x3e')](_0x5abb('0xe'),_0x1025ca,JSON['stringify'](_0x1bcafe));})[_0x5abb('0x43')](function(){Promise[_0x5abb('0x40')]()[_0x5abb('0x3b')](function(){if(_0x491d15[0x0]!=='2'||_0x3a8de2[_0x5abb('0x15')])return;return rpc[_0x3fa013+'Interaction']['update'](_0x3a8de2['id'],{'autoreplyExecuted':!![]})['then'](function(_0xa7061a){logger['info'](_0x5abb('0x16'),_0x1025ca,JSON[_0x5abb('0x3f')](_0xa7061a));})[_0x5abb('0x3d')](function(_0x27c279){logger['error']('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1025ca,JSON[_0x5abb('0x3f')](_0x27c279));});})['then'](function(){_0x4aea4f[_0x5abb('0x10')]();});});}}}catch(_0x1752eb){logger[_0x5abb('0x3e')](_0x5abb('0xe'),_0x1025ca,JSON[_0x5abb('0x3f')](_0x1752eb));_0x4aea4f[_0x5abb('0x44')]();}};};
\ No newline at end of file
index 2a5da6e..41c2bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7903=['channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','finally','stop','[%s][CLOSE]\x20%s','stringify','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','info','format','YYYY-MM-DD\x20HH:mm:ss','system'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x7903,0x13a));var _0x3790=function(_0x2e6994,_0x4d38c7){_0x2e6994=_0x2e6994-0x0;var _0x1376ca=_0x7903[_0x2e6994];return _0x1376ca;};'use strict';var moment=require(_0x3790('0x0'));var logger=require('../../../../config/logger')(_0x3790('0x1'));var rpc={'chatInteraction':require(_0x3790('0x2')),'openchannelInteraction':require(_0x3790('0x3')),'smsInteraction':require(_0x3790('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports['consequence']=function(_0x35415f,_0x30abde,_0x5b9fe0,_0x4b6783){return function(_0x2a5781){try{logger[_0x3790('0x5')]('[%s][CLOSE]\x20reason\x20%s',_0x35415f,_0x30abde[0x0]);var _0x24e627={'closed':0x1,'closedAt':moment()[_0x3790('0x6')](_0x3790('0x7')),'closeReason':_0x3790('0x8'),'disposition':_0x30abde[0x0]};if(rpc[_0x4b6783[_0x3790('0x9')]+'Interaction']){rpc[_0x4b6783[_0x3790('0x9')]+_0x3790('0xa')][_0x3790('0xb')](_0x4b6783[_0x3790('0xc')]['id'],_0x24e627)[_0x3790('0xd')](function(_0x284935){logger[_0x3790('0x5')](_0x3790('0xe'),_0x35415f,_0x4b6783[_0x3790('0xc')]['id']);})['catch'](function(_0x1f9c41){logger['error']('[%s][CLOSE]\x20%s',_0x35415f,JSON['stringify'](_0x1f9c41));})[_0x3790('0xf')](function(){_0x2a5781[_0x3790('0x10')]();});}}catch(_0x36d656){logger['error'](_0x3790('0x11'),_0x35415f,JSON[_0x3790('0x12')](_0x36d656));_0x2a5781[_0x3790('0x10')]();}};};
\ No newline at end of file
+var _0x3584=['stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','YYYY-MM-DD\x20HH:mm:ss','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error'];(function(_0x4fe30f,_0x388269){var _0x4ce568=function(_0x1cbf24){while(--_0x1cbf24){_0x4fe30f['push'](_0x4fe30f['shift']());}};_0x4ce568(++_0x388269);}(_0x3584,0x129));var _0x4358=function(_0x104db7,_0x3dd939){_0x104db7=_0x104db7-0x0;var _0x1cce7d=_0x3584[_0x104db7];return _0x1cce7d;};'use strict';var moment=require(_0x4358('0x0'));var logger=require(_0x4358('0x1'))(_0x4358('0x2'));var rpc={'chatInteraction':require(_0x4358('0x3')),'openchannelInteraction':require(_0x4358('0x4')),'smsInteraction':require(_0x4358('0x5')),'mailInteraction':require(_0x4358('0x6')),'faxInteraction':require(_0x4358('0x7')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x4358('0x8')]=function(_0x46bfc8,_0x11f3fd,_0x200b54,_0x5c901a){return function(_0x1d9ee3){try{logger[_0x4358('0x9')]('[%s][CLOSE]\x20reason\x20%s',_0x46bfc8,_0x11f3fd[0x0]);var _0x4fe180={'closed':0x1,'closedAt':moment()['format'](_0x4358('0xa')),'closeReason':'system','disposition':_0x11f3fd[0x0]};if(rpc[_0x5c901a['channel']+_0x4358('0xb')]){rpc[_0x5c901a['channel']+_0x4358('0xb')][_0x4358('0xc')](_0x5c901a[_0x4358('0xd')]['id'],_0x4fe180)[_0x4358('0xe')](function(_0x2c3c7d){logger[_0x4358('0x9')](_0x4358('0xf'),_0x46bfc8,_0x5c901a[_0x4358('0xd')]['id']);})[_0x4358('0x10')](function(_0x4ff51d){logger[_0x4358('0x11')]('[%s][CLOSE]\x20%s',_0x46bfc8,JSON[_0x4358('0x12')](_0x4ff51d));})[_0x4358('0x13')](function(){_0x1d9ee3[_0x4358('0x14')]();});}}catch(_0x119fd3){logger['error']('[%s][CLOSE]\x20%s',_0x46bfc8,JSON[_0x4358('0x12')](_0x119fd3));_0x1d9ee3['stop']();}};};
\ No newline at end of file
index df6bc3e..c1c7ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6657=['Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','dialogflow','providerResponse','stringify','result','metadata','endConversation','message','lodash','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s'];(function(_0x213518,_0x51e022){var _0x1baf75=function(_0x5c8444){while(--_0x5c8444){_0x213518['push'](_0x213518['shift']());}};_0x1baf75(++_0x51e022);}(_0x6657,0x17f));var _0x7665=function(_0x276d1c,_0x1f10bf){_0x276d1c=_0x276d1c-0x0;var _0x370eae=_0x6657[_0x276d1c];return _0x370eae;};'use strict';var _=require(_0x7665('0x0'));var moment=require('moment');var apiai=require(_0x7665('0x1'));var md5=require(_0x7665('0x2'));var utils=require(_0x7665('0x3'));var logger=require(_0x7665('0x4'))('routing');var rpc={'chatMessage':require(_0x7665('0x5')),'openchannelMessage':require(_0x7665('0x6')),'mailMessage':require(_0x7665('0x7')),'smsMessage':require(_0x7665('0x8')),'faxMessage':require(_0x7665('0x9')),'whatsappMessage':require(_0x7665('0xa'))};exports[_0x7665('0xb')]=function(_0x3387d8,_0x4c0b5c){return function(_0x31da89){try{if(!_[_0x7665('0xc')](this[_0x7665('0xd')][_0x7665('0xe')])){logger[_0x7665('0xf')](_0x7665('0x10'),_0x3387d8,_0x7665('0x11'));return _0x31da89[_0x7665('0x12')]();}var _0x5ca72e={'ContactId':this[_0x7665('0x13')]['id'],'sentAt':moment()[_0x7665('0x14')](_0x7665('0x15')),'direction':'out'};if(this[_0x7665('0x16')]==='sms'||this[_0x7665('0x16')]===_0x7665('0x17')){_0x5ca72e['phone']=this[_0x7665('0xd')][_0x7665('0x18')];}var _0x4dd9aa=this[_0x7665('0x16')];if(_0x4dd9aa===_0x7665('0x19')){_0x5ca72e['ChatWebsiteId']=this[_0x7665('0x1a')]['id'];}else{_0x5ca72e[_[_0x7665('0x1b')](_0x4dd9aa)+_0x7665('0x1c')]=this[_0x7665('0x1a')]['id'];}_0x5ca72e[_[_0x7665('0x1b')](_0x4dd9aa)+_0x7665('0x1d')]=this[_0x7665('0xd')]['id'];if(this[_0x7665('0xd')][_0x7665('0x1e')]){var _0x334ee6=_0x4c0b5c[0x2];if(!_[_0x7665('0x1f')](_0x334ee6)){_0x5ca72e[_0x7665('0x20')]=utils[_0x7665('0x21')](_0x334ee6,this);return rpc[_0x4dd9aa+_0x7665('0x22')][_0x7665('0x23')](_0x5ca72e)[_0x7665('0x24')](function(_0x522944){logger[_0x7665('0xf')](_0x7665('0x10'),_0x3387d8,_0x5ca72e['body']);})[_0x7665('0x25')](function(_0x2033a5){logger[_0x7665('0x26')](_0x7665('0x10'),_0x3387d8,JSON['stringify'](_0x2033a5));})[_0x7665('0x27')](function(){logger[_0x7665('0xf')](_0x7665('0x28'),_0x3387d8);_0x31da89[_0x7665('0x29')]();});}else{logger[_0x7665('0xf')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x3387d8);_0x31da89[_0x7665('0x29')]();}}else{var _0x51d577=this;var _0x37be5d=apiai(_0x4c0b5c[0x0],{'language':_0x4c0b5c[0x1]||'en'});return _0x37be5d[_0x7665('0x2a')](this['message']['body'],{'sessionId':md5(this[_0x7665('0xd')]['id'])})[_0x7665('0x24')](function(_0x4a9a25){_0x51d577[_0x7665('0x20')][_0x7665('0x2b')]=_0x4a9a25;_0x5ca72e[_0x7665('0x20')]=_0x4a9a25['result']['fulfillment']['speech'];_0x5ca72e['providerName']=_0x7665('0x2b');_0x5ca72e[_0x7665('0x2c')]=JSON[_0x7665('0x2d')](_0x4a9a25);return rpc[_0x4dd9aa+'Message'][_0x7665('0x23')](_0x5ca72e)[_0x7665('0x24')](function(_0x50bfa5){logger['info'](_0x7665('0x10'),_0x3387d8,_0x5ca72e[_0x7665('0x20')]);if(_0x4a9a25[_0x7665('0x2e')][_0x7665('0x2f')][_0x7665('0x30')]){_0x31da89[_0x7665('0x12')]();}else{_0x31da89['stop']();}})[_0x7665('0x25')](function(_0x55d046){logger['error'](_0x7665('0x10'),_0x3387d8,JSON[_0x7665('0x2d')](_0x55d046));_0x31da89[_0x7665('0x12')]();});})[_0x7665('0x25')](function(_0x264b6e){logger[_0x7665('0x26')](_0x7665('0x10'),_0x3387d8,_0x264b6e[_0x7665('0x31')]);_0x31da89[_0x7665('0x12')]();});}}catch(_0x415cb8){logger[_0x7665('0x26')](_0x7665('0x10'),_0x3387d8,JSON[_0x7665('0x2d')](_0x415cb8));_0x31da89[_0x7665('0x29')]();}};};
\ No newline at end of file
+var _0xe6e9=['created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','result','fulfillment','speech','providerResponse','metadata','endConversation','lodash','moment','apiai-promise','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','next','contact','format','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0xe6e9,0x182));var _0x9e6e=function(_0x5f4030,_0x5bcdbd){_0x5f4030=_0x5f4030-0x0;var _0x4ca6e0=_0xe6e9[_0x5f4030];return _0x4ca6e0;};'use strict';var _=require(_0x9e6e('0x0'));var moment=require(_0x9e6e('0x1'));var apiai=require(_0x9e6e('0x2'));var md5=require('md5');var utils=require(_0x9e6e('0x3'));var logger=require(_0x9e6e('0x4'))(_0x9e6e('0x5'));var rpc={'chatMessage':require(_0x9e6e('0x6')),'openchannelMessage':require(_0x9e6e('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x9e6e('0x8')),'faxMessage':require(_0x9e6e('0x9')),'whatsappMessage':require(_0x9e6e('0xa'))};exports[_0x9e6e('0xb')]=function(_0x174aaa,_0x5eda3e){return function(_0x165666){try{if(!_[_0x9e6e('0xc')](this[_0x9e6e('0xd')][_0x9e6e('0xe')])){logger[_0x9e6e('0xf')](_0x9e6e('0x10'),_0x174aaa,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x165666[_0x9e6e('0x11')]();}var _0x40360d={'ContactId':this[_0x9e6e('0x12')]['id'],'sentAt':moment()[_0x9e6e('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x9e6e('0x14')};if(this[_0x9e6e('0x15')]==='sms'||this[_0x9e6e('0x15')]===_0x9e6e('0x16')){_0x40360d[_0x9e6e('0x17')]=this[_0x9e6e('0xd')]['phone'];}var _0x28259b=this[_0x9e6e('0x15')];if(_0x28259b===_0x9e6e('0x18')){_0x40360d[_0x9e6e('0x19')]=this[_0x9e6e('0x1a')]['id'];}else{_0x40360d[_[_0x9e6e('0x1b')](_0x28259b)+_0x9e6e('0x1c')]=this[_0x9e6e('0x1a')]['id'];}_0x40360d[_[_0x9e6e('0x1b')](_0x28259b)+_0x9e6e('0x1d')]=this[_0x9e6e('0xd')]['id'];if(this[_0x9e6e('0xd')][_0x9e6e('0x1e')]){var _0xc9fd3c=_0x5eda3e[0x2];if(!_[_0x9e6e('0x1f')](_0xc9fd3c)){_0x40360d[_0x9e6e('0x20')]=utils[_0x9e6e('0x21')](_0xc9fd3c,this);return rpc[_0x28259b+_0x9e6e('0x22')][_0x9e6e('0x23')](_0x40360d)[_0x9e6e('0x24')](function(_0x2c5876){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x174aaa,_0x40360d['body']);})[_0x9e6e('0x25')](function(_0x4027ba){logger[_0x9e6e('0x26')](_0x9e6e('0x10'),_0x174aaa,JSON[_0x9e6e('0x27')](_0x4027ba));})[_0x9e6e('0x28')](function(){logger[_0x9e6e('0xf')](_0x9e6e('0x29'),_0x174aaa);_0x165666[_0x9e6e('0x2a')]();});}else{logger[_0x9e6e('0xf')](_0x9e6e('0x2b'),_0x174aaa);_0x165666[_0x9e6e('0x2a')]();}}else{var _0x28ae35=this;var _0x1e97c3=apiai(_0x5eda3e[0x0],{'language':_0x5eda3e[0x1]||'en'});return _0x1e97c3[_0x9e6e('0x2c')](this[_0x9e6e('0x2d')]['body'],{'sessionId':md5(this[_0x9e6e('0xd')]['id'])})[_0x9e6e('0x24')](function(_0x3aee5c){_0x28ae35[_0x9e6e('0x20')]['dialogflow']=_0x3aee5c;_0x40360d['body']=_0x3aee5c[_0x9e6e('0x2e')][_0x9e6e('0x2f')][_0x9e6e('0x30')];_0x40360d['providerName']='dialogflow';_0x40360d[_0x9e6e('0x31')]=JSON[_0x9e6e('0x27')](_0x3aee5c);return rpc[_0x28259b+_0x9e6e('0x22')][_0x9e6e('0x23')](_0x40360d)['then'](function(_0x4d1616){logger[_0x9e6e('0xf')]('[%s][DIALOGFLOW]\x20%s',_0x174aaa,_0x40360d[_0x9e6e('0x20')]);if(_0x3aee5c['result'][_0x9e6e('0x32')][_0x9e6e('0x33')]){_0x165666['next']();}else{_0x165666[_0x9e6e('0x2a')]();}})[_0x9e6e('0x25')](function(_0x34f5ff){logger[_0x9e6e('0x26')]('[%s][DIALOGFLOW]\x20%s',_0x174aaa,JSON[_0x9e6e('0x27')](_0x34f5ff));_0x165666['next']();});})['catch'](function(_0xcb9992){logger['error'](_0x9e6e('0x10'),_0x174aaa,_0xcb9992[_0x9e6e('0x2d')]);_0x165666[_0x9e6e('0x11')]();});}}catch(_0x23812c){logger['error'](_0x9e6e('0x10'),_0x174aaa,JSON['stringify'](_0x23812c));_0x165666[_0x9e6e('0x2a')]();}};};
\ No newline at end of file
index 419b8b0..302b69b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f17=['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','providerResponse','fulfillmentText','push','all','lodash','md5','moment','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','body','create','then','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','interaction','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','isEmpty','getMustacheRender','Message','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','action'];(function(_0x959591,_0x5aa72b){var _0xc85623=function(_0x21649b){while(--_0x21649b){_0x959591['push'](_0x959591['shift']());}};_0xc85623(++_0x5aa72b);}(_0x4f17,0x9e));var _0x74f1=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x4f17[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0x74f1('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x74f1('0x1'));var moment=require(_0x74f1('0x2'));var Promise=require('bluebird');var logger=require(_0x74f1('0x3'))(_0x74f1('0x4'));var utils=require(_0x74f1('0x5'));var rpc={'chatMessage':require(_0x74f1('0x6')),'openchannelMessage':require(_0x74f1('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x74f1('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0xe54c30,_0x51effb,_0x34ec03,_0x339d55){return new Promise(function(_0x3b4914,_0x5377d3){var _0x31b7ec=_['clone'](_0x34ec03);_0x31b7ec[_0x74f1('0x9')]=_0x339d55;return rpc[_0x51effb+'Message'][_0x74f1('0xa')](_0x31b7ec)[_0x74f1('0xb')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0xe54c30,_0x31b7ec[_0x74f1('0x9')]);_0x3b4914();})[_0x74f1('0xc')](function(_0xd8e301){logger[_0x74f1('0xd')](_0x74f1('0xe'),_0xe54c30,JSON[_0x74f1('0xf')](_0xd8e301));_0x5377d3(_0xd8e301);});});}exports[_0x74f1('0x10')]=function(_0x3a2ce6,_0x400b0d){return function(_0x16ba86){try{if(!_['isNil'](this[_0x74f1('0x11')]['UserId'])){logger[_0x74f1('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x3a2ce6,_0x74f1('0x13'));return _0x16ba86[_0x74f1('0x14')]();}var _0x373b73={'ContactId':this[_0x74f1('0x15')]['id'],'sentAt':moment()[_0x74f1('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x74f1('0x17')};if(this[_0x74f1('0x18')]==='sms'||this[_0x74f1('0x18')]===_0x74f1('0x19')){_0x373b73['phone']=this[_0x74f1('0x11')][_0x74f1('0x1a')];}var _0x37dbc7=this[_0x74f1('0x18')];if(_0x37dbc7===_0x74f1('0x1b')){_0x373b73['ChatWebsiteId']=this[_0x74f1('0x1c')]['id'];}else{_0x373b73[_[_0x74f1('0x1d')](_0x37dbc7)+_0x74f1('0x1e')]=this[_0x74f1('0x1c')]['id'];}_0x373b73[_[_0x74f1('0x1d')](_0x37dbc7)+_0x74f1('0x1f')]=this['interaction']['id'];if(this['interaction']['created']){var _0x300d84=_0x400b0d[0x4];if(!_[_0x74f1('0x20')](_0x300d84)){_0x373b73[_0x74f1('0x9')]=utils[_0x74f1('0x21')](_0x300d84,this);return rpc[_0x37dbc7+_0x74f1('0x22')][_0x74f1('0xa')](_0x373b73)[_0x74f1('0xb')](function(_0x26cba4){logger[_0x74f1('0x12')](_0x74f1('0xe'),_0x3a2ce6,_0x373b73[_0x74f1('0x9')]);})['catch'](function(_0x4cff5f){logger[_0x74f1('0xd')](_0x74f1('0xe'),_0x3a2ce6,JSON[_0x74f1('0xf')](_0x4cff5f));})[_0x74f1('0x23')](function(){logger[_0x74f1('0x12')](_0x74f1('0x24'),_0x3a2ce6);_0x16ba86[_0x74f1('0x25')]();});}else{logger['info'](_0x74f1('0x26'),_0x3a2ce6);_0x16ba86[_0x74f1('0x25')]();}}else{var _0x59a7ac=this;var _0x1736e3=_0x400b0d[0x2]['replace'](/\\n/g,'\x0a');var _0x5acc05={'credentials':{'private_key':_0x1736e3,'client_email':_0x400b0d[0x1]}};var _0x2f0aee=new dialogflow[(_0x74f1('0x27'))](_0x5acc05);var _0x365a2f=_0x2f0aee[_0x74f1('0x28')](_0x400b0d[0x0],md5(_0x59a7ac[_0x74f1('0x11')]['id']));var _0x176340={'session':_0x365a2f,'queryInput':{'text':{'text':_0x59a7ac[_0x74f1('0x29')][_0x74f1('0x9')],'languageCode':_0x400b0d[0x3]||'en'}}};return _0x2f0aee[_0x74f1('0x2a')](_0x176340)[_0x74f1('0xb')](function(_0xd226be){if(_0xd226be&&_0xd226be[_0x74f1('0x2b')]){_0x59a7ac[_0x74f1('0x9')]['dialogflowV2']=_0xd226be;var _0x11cfe4=_0xd226be[0x0];var _0x333226=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x2d')]&&_0x11cfe4['queryResult'][_0x74f1('0x2d')]['fields']?_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x2d')][_0x74f1('0x2e')][_0x74f1('0x2f')]['boolValue']:![];_0x59a7ac[_0x74f1('0x9')]['DIALOGFLOWV2_ACTION']=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x30')];_0x59a7ac[_0x74f1('0x9')][_0x74f1('0x31')]=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x32')];_0x59a7ac[_0x74f1('0x9')][_0x74f1('0x33')]=_0x11cfe4[_0x74f1('0x2c')]['diagnosticInfo']&&_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x2d')]['fields']?_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x2d')][_0x74f1('0x2e')][_0x74f1('0x2f')][_0x74f1('0x34')]:![];_0x59a7ac[_0x74f1('0x9')]['DIALOGFLOWV2_INTENTNAME']=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x35')][_0x74f1('0x36')];_0x59a7ac[_0x74f1('0x9')][_0x74f1('0x37')]=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x35')][_0x74f1('0x38')];_0x59a7ac[_0x74f1('0x9')][_0x74f1('0x39')]=_0x11cfe4['queryResult'][_0x74f1('0x35')]['isFallback'];_0x59a7ac[_0x74f1('0x9')][_0x74f1('0x3a')]=_0x11cfe4['queryResult'][_0x74f1('0x3b')];_0x59a7ac[_0x74f1('0x9')]['DIALOGFLOWV2_QUERYTEXT']=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x3c')];_0x59a7ac['body'][_0x74f1('0x3d')]=_0x11cfe4[_0x74f1('0x2c')][_0x74f1('0x3e')];_0x373b73[_0x74f1('0x3f')]=_0x74f1('0x40');_0x373b73[_0x74f1('0x41')]=JSON['stringify'](_0xd226be);var _0x563cb7=[];for(var _0x7cf94b=0x0;_0x7cf94b<_0xd226be[_0x74f1('0x2b')];_0x7cf94b++){var _0x201de8=_0xd226be[_0x7cf94b];if(_0x201de8&&_0x201de8[_0x74f1('0x2c')]&&_0x201de8[_0x74f1('0x2c')][_0x74f1('0x42')]){_0x563cb7[_0x74f1('0x43')](createMessage(_0x3a2ce6,_0x37dbc7,_0x373b73,_0x201de8[_0x74f1('0x2c')][_0x74f1('0x42')]));}}return Promise[_0x74f1('0x44')](_0x563cb7)['then'](function(){if(_0x333226){_0x16ba86['next']();}else{_0x16ba86[_0x74f1('0x25')]();}})['catch'](function(_0x31403c){logger[_0x74f1('0xd')](_0x74f1('0xe'),_0x3a2ce6,JSON['stringify'](_0x31403c));_0x16ba86[_0x74f1('0x14')]();});}})[_0x74f1('0xc')](function(_0x44c80a){logger[_0x74f1('0xd')](_0x74f1('0xe'),_0x3a2ce6,_0x44c80a[_0x74f1('0x29')]);_0x16ba86[_0x74f1('0x14')]();});}}catch(_0x1bd6b6){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x3a2ce6,JSON[_0x74f1('0xf')](_0x1bd6b6));_0x16ba86['stop']();}};};
\ No newline at end of file
+var _0x43e8=['catch','error','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','out','whatsapp','phone','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','stringify','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','dialogflowV2','providerResponse','fulfillmentText','push','all','next','lodash','dialogflow','md5','bluebird','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','info','[%s][DIALOGFLOWV2]\x20%s'];(function(_0x14477b,_0x29ce33){var _0x2e8eae=function(_0x415ece){while(--_0x415ece){_0x14477b['push'](_0x14477b['shift']());}};_0x2e8eae(++_0x29ce33);}(_0x43e8,0x81));var _0x843e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x43e8[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x843e('0x0'));var dialogflow=require(_0x843e('0x1'));var md5=require(_0x843e('0x2'));var moment=require('moment');var Promise=require(_0x843e('0x3'));var logger=require(_0x843e('0x4'))(_0x843e('0x5'));var utils=require('./utils');var rpc={'chatMessage':require(_0x843e('0x6')),'openchannelMessage':require(_0x843e('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x843e('0x8')),'faxMessage':require(_0x843e('0x9')),'whatsappMessage':require(_0x843e('0xa'))};function createMessage(_0x45b392,_0x1eb80d,_0x34ef30,_0x3421a9){return new Promise(function(_0x5edb80,_0x4a979a){var _0x76ada8=_[_0x843e('0xb')](_0x34ef30);_0x76ada8[_0x843e('0xc')]=_0x3421a9;return rpc[_0x1eb80d+'Message'][_0x843e('0xd')](_0x76ada8)[_0x843e('0xe')](function(){logger[_0x843e('0xf')](_0x843e('0x10'),_0x45b392,_0x76ada8[_0x843e('0xc')]);_0x5edb80();})[_0x843e('0x11')](function(_0x453824){logger[_0x843e('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x45b392,JSON['stringify'](_0x453824));_0x4a979a(_0x453824);});});}exports[_0x843e('0x13')]=function(_0x9af859,_0x3c1046){return function(_0x5ea9e3){try{if(!_[_0x843e('0x14')](this[_0x843e('0x15')][_0x843e('0x16')])){logger['info'](_0x843e('0x10'),_0x9af859,_0x843e('0x17'));return _0x5ea9e3['next']();}var _0x3b4aba={'ContactId':this['contact']['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x843e('0x18')};if(this['channel']==='sms'||this['channel']===_0x843e('0x19')){_0x3b4aba['phone']=this[_0x843e('0x15')][_0x843e('0x1a')];}var _0x5b3b3d=this[_0x843e('0x1b')];if(_0x5b3b3d===_0x843e('0x1c')){_0x3b4aba[_0x843e('0x1d')]=this[_0x843e('0x1e')]['id'];}else{_0x3b4aba[_[_0x843e('0x1f')](_0x5b3b3d)+'AccountId']=this['account']['id'];}_0x3b4aba[_[_0x843e('0x1f')](_0x5b3b3d)+_0x843e('0x20')]=this[_0x843e('0x15')]['id'];if(this[_0x843e('0x15')][_0x843e('0x21')]){var _0x581039=_0x3c1046[0x4];if(!_[_0x843e('0x22')](_0x581039)){_0x3b4aba[_0x843e('0xc')]=utils[_0x843e('0x23')](_0x581039,this);return rpc[_0x5b3b3d+_0x843e('0x24')]['create'](_0x3b4aba)[_0x843e('0xe')](function(_0x103e7d){logger[_0x843e('0xf')](_0x843e('0x10'),_0x9af859,_0x3b4aba[_0x843e('0xc')]);})[_0x843e('0x11')](function(_0xd88f50){logger[_0x843e('0x12')](_0x843e('0x10'),_0x9af859,JSON[_0x843e('0x25')](_0xd88f50));})['finally'](function(){logger[_0x843e('0xf')](_0x843e('0x26'),_0x9af859);_0x5ea9e3[_0x843e('0x27')]();});}else{logger[_0x843e('0xf')](_0x843e('0x28'),_0x9af859);_0x5ea9e3[_0x843e('0x27')]();}}else{var _0x5efeac=this;var _0x39696f=_0x3c1046[0x2][_0x843e('0x29')](/\\n/g,'\x0a');var _0x2beaa2={'credentials':{'private_key':_0x39696f,'client_email':_0x3c1046[0x1]}};var _0x55ce87=new dialogflow[(_0x843e('0x2a'))](_0x2beaa2);var _0x2cd66e=_0x55ce87[_0x843e('0x2b')](_0x3c1046[0x0],md5(_0x5efeac[_0x843e('0x15')]['id']));var _0xf813d4={'session':_0x2cd66e,'queryInput':{'text':{'text':_0x5efeac[_0x843e('0x2c')][_0x843e('0xc')],'languageCode':_0x3c1046[0x3]||'en'}}};return _0x55ce87[_0x843e('0x2d')](_0xf813d4)[_0x843e('0xe')](function(_0x334fb8){if(_0x334fb8&&_0x334fb8[_0x843e('0x2e')]){_0x5efeac[_0x843e('0xc')]['dialogflowV2']=_0x334fb8;var _0x636bdd=_0x334fb8[0x0];var _0x212fe3=_0x636bdd[_0x843e('0x2f')][_0x843e('0x30')]&&_0x636bdd[_0x843e('0x2f')][_0x843e('0x30')][_0x843e('0x31')]?_0x636bdd[_0x843e('0x2f')][_0x843e('0x30')][_0x843e('0x31')][_0x843e('0x32')]['boolValue']:![];_0x5efeac[_0x843e('0xc')][_0x843e('0x33')]=_0x636bdd[_0x843e('0x2f')]['action'];_0x5efeac[_0x843e('0xc')][_0x843e('0x34')]=_0x636bdd[_0x843e('0x2f')][_0x843e('0x35')];_0x5efeac[_0x843e('0xc')][_0x843e('0x36')]=_0x636bdd[_0x843e('0x2f')]['diagnosticInfo']&&_0x636bdd[_0x843e('0x2f')][_0x843e('0x30')][_0x843e('0x31')]?_0x636bdd['queryResult'][_0x843e('0x30')]['fields'][_0x843e('0x32')][_0x843e('0x37')]:![];_0x5efeac[_0x843e('0xc')][_0x843e('0x38')]=_0x636bdd['queryResult'][_0x843e('0x39')][_0x843e('0x3a')];_0x5efeac['body'][_0x843e('0x3b')]=_0x636bdd[_0x843e('0x2f')][_0x843e('0x39')][_0x843e('0x3c')];_0x5efeac['body'][_0x843e('0x3d')]=_0x636bdd[_0x843e('0x2f')][_0x843e('0x39')]['isFallback'];_0x5efeac['body'][_0x843e('0x3e')]=_0x636bdd[_0x843e('0x2f')][_0x843e('0x3f')];_0x5efeac[_0x843e('0xc')][_0x843e('0x40')]=_0x636bdd[_0x843e('0x2f')]['queryText'];_0x5efeac['body'][_0x843e('0x41')]=_0x636bdd[_0x843e('0x2f')][_0x843e('0x42')];_0x3b4aba['providerName']=_0x843e('0x43');_0x3b4aba[_0x843e('0x44')]=JSON['stringify'](_0x334fb8);var _0x201fa8=[];for(var _0x273b84=0x0;_0x273b84<_0x334fb8[_0x843e('0x2e')];_0x273b84++){var _0x1e2f55=_0x334fb8[_0x273b84];if(_0x1e2f55&&_0x1e2f55['queryResult']&&_0x1e2f55[_0x843e('0x2f')][_0x843e('0x45')]){_0x201fa8[_0x843e('0x46')](createMessage(_0x9af859,_0x5b3b3d,_0x3b4aba,_0x1e2f55[_0x843e('0x2f')]['fulfillmentText']));}}return Promise[_0x843e('0x47')](_0x201fa8)[_0x843e('0xe')](function(){if(_0x212fe3){_0x5ea9e3['next']();}else{_0x5ea9e3['stop']();}})[_0x843e('0x11')](function(_0x4192fd){logger[_0x843e('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x9af859,JSON[_0x843e('0x25')](_0x4192fd));_0x5ea9e3[_0x843e('0x48')]();});}})[_0x843e('0x11')](function(_0xb97f1c){logger[_0x843e('0x12')]('[%s][DIALOGFLOWV2]\x20%s',_0x9af859,_0xb97f1c[_0x843e('0x2c')]);_0x5ea9e3[_0x843e('0x48')]();});}}catch(_0x5acb3e){logger[_0x843e('0x12')](_0x843e('0x10'),_0x9af859,JSON[_0x843e('0x25')](_0x5acb3e));_0x5ea9e3[_0x843e('0x27')]();}};};
\ No newline at end of file
index e373d7f..b2362f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4750=['../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','message','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','html-to-text','./utils'];(function(_0x3747ae,_0x408e61){var _0x339035=function(_0x83be87){while(--_0x83be87){_0x3747ae['push'](_0x3747ae['shift']());}};_0x339035(++_0x408e61);}(_0x4750,0x1e9));var _0x0475=function(_0x21cf7b,_0x481ed7){_0x21cf7b=_0x21cf7b-0x0;var _0x3e07e8=_0x4750[_0x21cf7b];return _0x3e07e8;};'use strict';var schema=require(_0x0475('0x0'));var _=require(_0x0475('0x1'));var htmlToText=require(_0x0475('0x2'));var utils=require(_0x0475('0x3'));var logger=require(_0x0475('0x4'))(_0x0475('0x5'));var gotoif=schema({'condition':{'type':_0x0475('0x6'),'required':!![],'message':_0x0475('0x7')},'priorityTrue':{'type':_0x0475('0x8'),'message':_0x0475('0x9')},'priorityFalse':{'type':_0x0475('0x8'),'message':_0x0475('0xa')}});exports['consequence']=function(_0x161a53,_0xef70ef){return function(_0x528c1e){try{var _0x12122f={'condition':htmlToText['fromString'](utils[_0x0475('0xb')](_0xef70ef[0x0],this),{'wordwrap':![]})[_0x0475('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0xef70ef[0x1],'priorityFalse':_0xef70ef[0x2]};var _0x4d5496=gotoif['validate'](_0x12122f,{'typecast':!![]});if(_0x4d5496[_0x0475('0xd')]){logger[_0x0475('0xe')](_0x0475('0xf'),_0x161a53,_['map'](_0x4d5496,_0x0475('0x10'))['join'](',\x20'));_0x528c1e[_0x0475('0x11')]();}else{try{var _0x314f93=eval('('+_0x12122f[_0x0475('0x12')]+')');var _0x325b1e=_0x314f93?_0x12122f[_0x0475('0x13')]:_0x12122f[_0x0475('0x14')];logger[_0x0475('0x15')](_0x0475('0x16'),_0x161a53,_0x12122f[_0x0475('0x12')],_0x314f93,_0x325b1e||'next');if(_0x325b1e){var _0x5eb5e0=_[_0x0475('0x17')](_0x528c1e[_0x0475('0x18')](),{'p':_0x325b1e});if(_0x5eb5e0>=0x0){logger[_0x0475('0x15')](_0x0475('0x19'),_0x161a53,_0x325b1e||'next',_0x5eb5e0);_0x528c1e[_0x0475('0x1a')](_0x5eb5e0);}else{logger[_0x0475('0x15')](_0x0475('0x1b'),_0x161a53,_0x325b1e||_0x0475('0x1a'));_0x528c1e[_0x0475('0x11')]();}}else{_0x528c1e[_0x0475('0x1a')]();}}catch(_0x30f14e){logger[_0x0475('0xe')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x161a53,_0x30f14e[_0x0475('0x10')]);_0x528c1e['stop']();}}}catch(_0x379338){logger[_0x0475('0xe')](_0x0475('0xf'),_0x161a53,JSON[_0x0475('0x1c')](_0x379338));_0x528c1e[_0x0475('0x11')]();}};};
\ No newline at end of file
+var _0x48bc=['info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','findIndex','rules','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','validate','lodash','html-to-text','../../../../config/logger','routing','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','length','error','message','join','stop','condition','priorityFalse'];(function(_0x3eb5ba,_0x4f7810){var _0x2fa5e4=function(_0x35835b){while(--_0x35835b){_0x3eb5ba['push'](_0x3eb5ba['shift']());}};_0x2fa5e4(++_0x4f7810);}(_0x48bc,0x1e4));var _0xc48b=function(_0x5bfa81,_0x56fc67){_0x5bfa81=_0x5bfa81-0x0;var _0xc7b4ca=_0x48bc[_0x5bfa81];return _0xc7b4ca;};'use strict';var schema=require(_0xc48b('0x0'));var _=require(_0xc48b('0x1'));var htmlToText=require(_0xc48b('0x2'));var utils=require('./utils');var logger=require(_0xc48b('0x3'))(_0xc48b('0x4'));var gotoif=schema({'condition':{'type':_0xc48b('0x5'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0xc48b('0x6'),'message':_0xc48b('0x7')},'priorityFalse':{'type':'number','message':_0xc48b('0x8')}});exports[_0xc48b('0x9')]=function(_0x49d123,_0x1f33a2){return function(_0x28cd90){try{var _0x43a219={'condition':htmlToText[_0xc48b('0xa')](utils[_0xc48b('0xb')](_0x1f33a2[0x0],this),{'wordwrap':![]})[_0xc48b('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1f33a2[0x1],'priorityFalse':_0x1f33a2[0x2]};var _0x4cb88c=gotoif[_0xc48b('0x0')](_0x43a219,{'typecast':!![]});if(_0x4cb88c[_0xc48b('0xd')]){logger[_0xc48b('0xe')]('[%s][GOTOIF]\x20%s',_0x49d123,_['map'](_0x4cb88c,_0xc48b('0xf'))[_0xc48b('0x10')](',\x20'));_0x28cd90[_0xc48b('0x11')]();}else{try{var _0x5ab35a=eval('('+_0x43a219[_0xc48b('0x12')]+')');var _0x5902d8=_0x5ab35a?_0x43a219['priorityTrue']:_0x43a219[_0xc48b('0x13')];logger[_0xc48b('0x14')](_0xc48b('0x15'),_0x49d123,_0x43a219['condition'],_0x5ab35a,_0x5902d8||'next');if(_0x5902d8){var _0x4c1821=_[_0xc48b('0x16')](_0x28cd90[_0xc48b('0x17')](),{'p':_0x5902d8});if(_0x4c1821>=0x0){logger[_0xc48b('0x14')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x49d123,_0x5902d8||'next',_0x4c1821);_0x28cd90[_0xc48b('0x18')](_0x4c1821);}else{logger['info'](_0xc48b('0x19'),_0x49d123,_0x5902d8||_0xc48b('0x18'));_0x28cd90[_0xc48b('0x11')]();}}else{_0x28cd90['next']();}}catch(_0x97e80a){logger['error'](_0xc48b('0x1a'),_0x49d123,_0x97e80a[_0xc48b('0xf')]);_0x28cd90[_0xc48b('0x11')]();}}}catch(_0x46473f){logger[_0xc48b('0xe')](_0xc48b('0x1b'),_0x49d123,JSON['stringify'](_0x46473f));_0x28cd90['stop']();}};};
\ No newline at end of file
index 37ddf4c..f368c9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c56=['map','message','join','stop','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','[%s][GOTOP]\x20%s','stringify','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error'];(function(_0x512c4b,_0x1ae2b7){var _0x1211c2=function(_0x2a117d){while(--_0x2a117d){_0x512c4b['push'](_0x512c4b['shift']());}};_0x1211c2(++_0x1ae2b7);}(_0x0c56,0x16e));var _0x60c5=function(_0x39f18b,_0x1ff97f){_0x39f18b=_0x39f18b-0x0;var _0x322872=_0x0c56[_0x39f18b];return _0x322872;};'use strict';var schema=require('validate');var _=require(_0x60c5('0x0'));var logger=require(_0x60c5('0x1'))(_0x60c5('0x2'));var gotop=schema({'priority':{'type':_0x60c5('0x3'),'required':!![],'message':_0x60c5('0x4')}});exports['consequence']=function(_0x10c74f,_0x5a3a91){return function(_0x524ca4){try{var _0xd8c4a2={'priority':_0x5a3a91[0x0]};var _0x246e3b=gotop[_0x60c5('0x5')](_0xd8c4a2,{'typecast':!![]});if(_0x246e3b[_0x60c5('0x6')]){logger[_0x60c5('0x7')]('[%s][GOTOP]\x20%s',_0x10c74f,_[_0x60c5('0x8')](_0x246e3b,_0x60c5('0x9'))[_0x60c5('0xa')](',\x20'));_0x524ca4[_0x60c5('0xb')]();}else{logger['info'](_0x60c5('0xc'),_0x10c74f,_0xd8c4a2[_0x60c5('0xd')]);if(_0xd8c4a2[_0x60c5('0xd')]){var _0x4c5e8a=_[_0x60c5('0xe')](_0x524ca4[_0x60c5('0xf')](),{'p':_0xd8c4a2[_0x60c5('0xd')]});if(_0x4c5e8a>=0x0){logger[_0x60c5('0x10')](_0x60c5('0x11'),_0x10c74f,_0xd8c4a2[_0x60c5('0xd')]||_0x60c5('0x12'),_0x4c5e8a);_0x524ca4[_0x60c5('0x12')](_0x4c5e8a);}else{logger[_0x60c5('0x10')](_0x60c5('0x13'),_0x10c74f,_0xd8c4a2[_0x60c5('0xd')]||_0x60c5('0x12'));_0x524ca4['stop']();}}else{_0x524ca4[_0x60c5('0x12')]();}}}catch(_0x18a78d){logger[_0x60c5('0x7')](_0x60c5('0x14'),_0x10c74f,JSON[_0x60c5('0x15')](_0x18a78d));_0x524ca4['stop']();}};};
\ No newline at end of file
+var _0x6ddd=['validate','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','map','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found'];(function(_0x3ed203,_0x4e3a3c){var _0x558502=function(_0x454c3b){while(--_0x454c3b){_0x3ed203['push'](_0x3ed203['shift']());}};_0x558502(++_0x4e3a3c);}(_0x6ddd,0x1cc));var _0xd6dd=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x6ddd[_0x432682];return _0x463d05;};'use strict';var schema=require(_0xd6dd('0x0'));var _=require(_0xd6dd('0x1'));var logger=require(_0xd6dd('0x2'))(_0xd6dd('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xd6dd('0x4')}});exports[_0xd6dd('0x5')]=function(_0x15b02b,_0x4e3d94){return function(_0x1ee4dd){try{var _0x7bfd81={'priority':_0x4e3d94[0x0]};var _0x3a3875=gotop[_0xd6dd('0x0')](_0x7bfd81,{'typecast':!![]});if(_0x3a3875[_0xd6dd('0x6')]){logger[_0xd6dd('0x7')](_0xd6dd('0x8'),_0x15b02b,_[_0xd6dd('0x9')](_0x3a3875,'message')[_0xd6dd('0xa')](',\x20'));_0x1ee4dd[_0xd6dd('0xb')]();}else{logger[_0xd6dd('0xc')](_0xd6dd('0xd'),_0x15b02b,_0x7bfd81['priority']);if(_0x7bfd81[_0xd6dd('0xe')]){var _0x5193fd=_[_0xd6dd('0xf')](_0x1ee4dd[_0xd6dd('0x10')](),{'p':_0x7bfd81[_0xd6dd('0xe')]});if(_0x5193fd>=0x0){logger[_0xd6dd('0xc')](_0xd6dd('0x11'),_0x15b02b,_0x7bfd81[_0xd6dd('0xe')]||_0xd6dd('0x12'),_0x5193fd);_0x1ee4dd['next'](_0x5193fd);}else{logger[_0xd6dd('0xc')](_0xd6dd('0x13'),_0x15b02b,_0x7bfd81[_0xd6dd('0xe')]||'next');_0x1ee4dd['stop']();}}else{_0x1ee4dd['next']();}}}catch(_0xc492d4){logger[_0xd6dd('0x7')](_0xd6dd('0x8'),_0x15b02b,JSON['stringify'](_0xc492d4));_0x1ee4dd[_0xd6dd('0xb')]();}};};
\ No newline at end of file
index 00bb6c4..cc675c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x094c=['[%s][MESSAGE]\x20%s','next','error','stringify','stop','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','channel','chat','account','upperFirst','AccountId','InteractionId','interaction','Message','create','then','info'];(function(_0x58fffa,_0x35f1b2){var _0x454595=function(_0x523884){while(--_0x523884){_0x58fffa['push'](_0x58fffa['shift']());}};_0x454595(++_0x35f1b2);}(_0x094c,0x131));var _0xc094=function(_0x1c43aa,_0xff2696){_0x1c43aa=_0x1c43aa-0x0;var _0x514c3c=_0x094c[_0x1c43aa];return _0x514c3c;};'use strict';var _=require('lodash');var utils=require(_0xc094('0x0'));var logger=require(_0xc094('0x1'))('routing');var rpc={'chatMessage':require(_0xc094('0x2')),'openchannelMessage':require(_0xc094('0x3')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xc094('0x4')),'faxMessage':require(_0xc094('0x5')),'whatsappMessage':require(_0xc094('0x6'))};exports[_0xc094('0x7')]=function(_0x3231ef,_0x3226a1){return function(_0x1366bf){try{var _0x479a30={'body':utils[_0xc094('0x8')](_0x3226a1[0x0],this),'ContactId':this['contact']['id']};if(this[_0xc094('0x9')]===_0xc094('0xa')){_0x479a30['ChatWebsiteId']=this[_0xc094('0xb')]['id'];}else{_0x479a30[_[_0xc094('0xc')](this[_0xc094('0x9')])+_0xc094('0xd')]=this[_0xc094('0xb')]['id'];}_0x479a30[_[_0xc094('0xc')](this['channel'])+_0xc094('0xe')]=this[_0xc094('0xf')]['id'];if(rpc[this[_0xc094('0x9')]+'Message']){return rpc[this['channel']+_0xc094('0x10')][_0xc094('0x11')](_0x479a30)[_0xc094('0x12')](function(_0x458315){logger[_0xc094('0x13')](_0xc094('0x14'),_0x3231ef,_0x479a30['body']);_0x1366bf[_0xc094('0x15')]();})['catch'](function(_0x3c47f6){logger[_0xc094('0x16')](_0xc094('0x14'),_0x3231ef,JSON[_0xc094('0x17')](_0x3c47f6));_0x1366bf[_0xc094('0x18')]();});}}catch(_0x147dc9){logger[_0xc094('0x16')](_0xc094('0x14'),_0x3231ef,JSON[_0xc094('0x17')](_0x147dc9));_0x1366bf[_0xc094('0x18')]();}};};
\ No newline at end of file
+var _0x7701=['../../rpc/smsMessage','getMustacheRender','channel','chat','upperFirst','AccountId','account','InteractionId','interaction','Message','create','info','[%s][MESSAGE]\x20%s','body','next','catch','stringify','stop','error','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage'];(function(_0x5eef05,_0x1be989){var _0x56d4b8=function(_0x57993d){while(--_0x57993d){_0x5eef05['push'](_0x5eef05['shift']());}};_0x56d4b8(++_0x1be989);}(_0x7701,0xc2));var _0x1770=function(_0x2d96f1,_0xa647e4){_0x2d96f1=_0x2d96f1-0x0;var _0x41a5b0=_0x7701[_0x2d96f1];return _0x41a5b0;};'use strict';var _=require(_0x1770('0x0'));var utils=require(_0x1770('0x1'));var logger=require(_0x1770('0x2'))(_0x1770('0x3'));var rpc={'chatMessage':require(_0x1770('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x1770('0x5')),'smsMessage':require(_0x1770('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x401050,_0x27759e){return function(_0x4e82ed){try{var _0x1311c2={'body':utils[_0x1770('0x7')](_0x27759e[0x0],this),'ContactId':this['contact']['id']};if(this[_0x1770('0x8')]===_0x1770('0x9')){_0x1311c2['ChatWebsiteId']=this['account']['id'];}else{_0x1311c2[_[_0x1770('0xa')](this[_0x1770('0x8')])+_0x1770('0xb')]=this[_0x1770('0xc')]['id'];}_0x1311c2[_[_0x1770('0xa')](this[_0x1770('0x8')])+_0x1770('0xd')]=this[_0x1770('0xe')]['id'];if(rpc[this[_0x1770('0x8')]+_0x1770('0xf')]){return rpc[this['channel']+_0x1770('0xf')][_0x1770('0x10')](_0x1311c2)['then'](function(_0x5269bf){logger[_0x1770('0x11')](_0x1770('0x12'),_0x401050,_0x1311c2[_0x1770('0x13')]);_0x4e82ed[_0x1770('0x14')]();})[_0x1770('0x15')](function(_0x4d9a75){logger['error'](_0x1770('0x12'),_0x401050,JSON[_0x1770('0x16')](_0x4d9a75));_0x4e82ed[_0x1770('0x17')]();});}}catch(_0x16b3d5){logger[_0x1770('0x18')]('[%s][MESSAGE]\x20%s',_0x401050,JSON[_0x1770('0x16')](_0x16b3d5));_0x4e82ed[_0x1770('0x17')]();}};};
\ No newline at end of file
index 2ef97ab..d86a136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb00d=['./utils','../../../../config/logger','info','[%s][NOOP]\x20%s','next','error','stringify','stop'];(function(_0x1cf400,_0x5436c6){var _0x4531ed=function(_0x240d1a){while(--_0x240d1a){_0x1cf400['push'](_0x1cf400['shift']());}};_0x4531ed(++_0x5436c6);}(_0xb00d,0x1d0));var _0xdb00=function(_0xbc2974,_0xec3342){_0xbc2974=_0xbc2974-0x0;var _0x3a5b4f=_0xb00d[_0xbc2974];return _0x3a5b4f;};'use strict';var utils=require(_0xdb00('0x0'));var logger=require(_0xdb00('0x1'))('routing');exports['consequence']=function(_0x2c1072,_0x161d18){return function(_0x446ea3){try{logger[_0xdb00('0x2')](_0xdb00('0x3'),_0x2c1072,utils['getMustacheRender'](_0x161d18[0x0],this));_0x446ea3[_0xdb00('0x4')]();}catch(_0x3ec5e0){logger[_0xdb00('0x5')](_0xdb00('0x3'),_0x2c1072,JSON[_0xdb00('0x6')](_0x3ec5e0));_0x446ea3[_0xdb00('0x7')]();}};};
\ No newline at end of file
+var _0xcef4=['[%s][NOOP]\x20%s','next','error','stringify','stop','./utils','routing','info'];(function(_0x1200e9,_0x1a23a4){var _0x2c1ac4=function(_0x1e87e4){while(--_0x1e87e4){_0x1200e9['push'](_0x1200e9['shift']());}};_0x2c1ac4(++_0x1a23a4);}(_0xcef4,0x7d));var _0x4cef=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0xcef4[_0x1dbaf7];return _0x593f05;};'use strict';var utils=require(_0x4cef('0x0'));var logger=require('../../../../config/logger')(_0x4cef('0x1'));exports['consequence']=function(_0x7beae1,_0x4c275a){return function(_0x4c1d64){try{logger[_0x4cef('0x2')](_0x4cef('0x3'),_0x7beae1,utils['getMustacheRender'](_0x4c275a[0x0],this));_0x4c1d64[_0x4cef('0x4')]();}catch(_0x3f4c47){logger[_0x4cef('0x5')](_0x4cef('0x3'),_0x7beae1,JSON[_0x4cef('0x6')](_0x3f4c47));_0x4c1d64[_0x4cef('0x7')]();}};};
\ No newline at end of file
index 481cb4c..8a109d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ba5=['[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','queue_id','queue','from','joinAt','clone','format','pick','%sQueuesWaitingInteractions','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','InteractionId','interaction','MessageId','message','upperFirst','chat','AccountId','account','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','catch','error','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','join','stop','find','Queues','createQueue','atimeout','qtimeout','[%s][QUEUE]\x20ROUTING\x20STOPPED','rules','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory'];(function(_0x32899c,_0x4e5f7){var _0xac162a=function(_0x4a9cab){while(--_0x4a9cab){_0x32899c['push'](_0x32899c['shift']());}};_0xac162a(++_0x4e5f7);}(_0x9ba5,0x1f3));var _0x59ba=function(_0x2642cb,_0x4b917f){_0x2642cb=_0x2642cb-0x0;var _0xe6e41=_0x9ba5[_0x2642cb];return _0xe6e41;};'use strict';var schema=require(_0x59ba('0x0'));var _=require(_0x59ba('0x1'));var util=require('util');var seqqueue=require(_0x59ba('0x2'));var moment=require(_0x59ba('0x3'));var Redis=require('ioredis');var config=require(_0x59ba('0x4'));var logger=require(_0x59ba('0x5'))(_0x59ba('0x6'));var strategy=require(_0x59ba('0x7'));config[_0x59ba('0x8')]=_[_0x59ba('0x9')](config[_0x59ba('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x59ba('0x8')]));var attributes=['id',_0x59ba('0xa'),'account',_0x59ba('0xb'),_0x59ba('0xc'),_0x59ba('0xd')];function emit(_0x592f1d,_0x31ec6d,_0x5e03e4){io['to'](_0x592f1d)['emit'](_0x31ec6d,_0x5e03e4);}function emitChannelQueueInteraction(_0x2ac599,_0x47975e,_0x3d07dc,_0x3188e0,_0x221218,_0x48027d,_0x2cc68c,_0x1a1472){var _0x246eae=_[_0x59ba('0xe')](_0x3d07dc);_0x246eae['queue_id']=_0x1a1472;_0x246eae['queue']=_0x47975e;_0x246eae['account']=_0x3188e0;_0x246eae['id']=_0x221218;if(_0x48027d){_0x2cc68c[util[_0x59ba('0xf')]('%sQueuesWaitingInteractions',_0x2ac599)][_0x221218]=_[_0x59ba('0x10')](_0x246eae,attributes);}else{delete _0x2cc68c[util['format'](_0x59ba('0x11'),_0x2ac599)][_0x221218];}emit(util[_0x59ba('0xf')]('%s:queue:%s',_0x2ac599,_0x47975e),util['format'](_0x59ba('0x12'),_0x2ac599,_0x48027d?_0x59ba('0x13'):_0x59ba('0x14')),_['pick'](_0x246eae,attributes));}var rpc={'openchannelQueueReport':require(_0x59ba('0x15')),'mailQueueReport':require(_0x59ba('0x16')),'chatQueueReport':require(_0x59ba('0x17')),'smsQueueReport':require(_0x59ba('0x18')),'faxQueueReport':require(_0x59ba('0x19')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x17c7b3,_0x296ab5,_0x31fd82,_0xf3f5f0){if(_0x17c7b3&&_0x296ab5&&_0x31fd82){_0x296ab5['waiting']+=0x1;var _0x12af01={'uniqueid':_0x17c7b3,'from':_0x31fd82[_0x59ba('0x1a')]?_0x31fd82['body']['from']:'','joinAt':moment()['format'](_0x59ba('0x1b')),'ContactId':_0x31fd82[_0x59ba('0x1c')]?_0x31fd82[_0x59ba('0x1c')]['id']:null,'ListId':_0x31fd82['list']?_0x31fd82[_0x59ba('0x1d')]['id']:null};_0x12af01[_['upperFirst'](_0x31fd82[_0x59ba('0x1e')])+_0x59ba('0x1f')]=_0x296ab5['id']||null;_0x12af01[_['upperFirst'](_0x31fd82[_0x59ba('0x1e')])+_0x59ba('0x20')]=_0x31fd82['interaction']?_0x31fd82[_0x59ba('0x21')]['id']:null;_0x12af01[_['upperFirst'](_0x31fd82[_0x59ba('0x1e')])+_0x59ba('0x22')]=_0x31fd82[_0x59ba('0x23')]?_0x31fd82[_0x59ba('0x23')]['id']:null;_0x12af01[_[_0x59ba('0x24')](_0x31fd82[_0x59ba('0x1e')])+(_0x31fd82[_0x59ba('0x1e')]!==_0x59ba('0x25')?_0x59ba('0x26'):'WebsiteId')]=_0x31fd82[_0x59ba('0x27')]?_0x31fd82['account']['id']:null;logger[_0x59ba('0x28')](util['format'](_0x59ba('0x29'),_0x17c7b3,_0x296ab5[_0x59ba('0x2a')]));emitChannelQueueInteraction(_0x31fd82[_0x59ba('0x1e')],_0x296ab5[_0x59ba('0x2a')],_0x12af01,_0x31fd82[_0x59ba('0x27')]['name'],_0x31fd82['message']['id'],!![],_0xf3f5f0,_0x296ab5['id']);if(rpc[_0x31fd82['channel']+_0x59ba('0x2b')]){return rpc[_0x31fd82['channel']+_0x59ba('0x2b')]['create'](_0x12af01)[_0x59ba('0x2c')](function(_0x469484){logger[_0x59ba('0x2d')]('create\x20queue\x20report');});}}}function stopRouting(_0x4263d0,_0x4e5db2,_0x2284b3,_0x2c107c){if(_0x4263d0&&_0x4e5db2){_0x4e5db2[_0x59ba('0x2e')]-=0x1;var _0x14fc98={'leaveAt':moment()[_0x59ba('0xf')](_0x59ba('0x1b')),'acceptAt':moment()[_0x59ba('0xf')](_0x59ba('0x1b')),'reason':_0x59ba('0x2f')};logger[_0x59ba('0x28')](util[_0x59ba('0xf')](_0x59ba('0x30'),_0x4263d0,_0x4e5db2['name']));emitChannelQueueInteraction(_0x2284b3[_0x59ba('0x1e')],_0x4e5db2[_0x59ba('0x2a')],_0x2284b3[_0x59ba('0x1a')],_0x2284b3[_0x59ba('0x27')]['name'],_0x2284b3[_0x59ba('0x23')]['id'],![],_0x2c107c,_0x4e5db2['id']);if(rpc[_0x2284b3['channel']+_0x59ba('0x2b')]){return rpc[_0x2284b3[_0x59ba('0x1e')]+_0x59ba('0x2b')][_0x59ba('0x31')](_0x4263d0,_0x14fc98)[_0x59ba('0x2c')](function(_0x1a4ef5){logger[_0x59ba('0x2d')](_0x59ba('0x32'));});}}}function endRouting(_0x4131f3,_0x122eb1,_0x47ae27,_0x3adf5e){if(_0x4131f3&&_0x122eb1){_0x122eb1[_0x59ba('0x2e')]-=0x1;var _0x49d253={'leaveAt':moment()['format'](_0x59ba('0x1b')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x59ba('0x33')};logger[_0x59ba('0x28')](util['format'](_0x59ba('0x34'),_0x4131f3,_0x122eb1[_0x59ba('0x2a')]));emitChannelQueueInteraction(_0x47ae27[_0x59ba('0x1e')],_0x122eb1[_0x59ba('0x2a')],_0x47ae27['body'],_0x47ae27[_0x59ba('0x27')][_0x59ba('0x2a')],_0x47ae27[_0x59ba('0x23')]['id'],![],_0x3adf5e);if(rpc[_0x47ae27[_0x59ba('0x1e')]+_0x59ba('0x2b')]){return rpc[_0x47ae27['channel']+_0x59ba('0x2b')][_0x59ba('0x31')](_0x4131f3,_0x49d253)[_0x59ba('0x2c')](function(_0x21dc45){logger[_0x59ba('0x2d')](_0x59ba('0x32'));});}}}function handleFindQueue(_0x194c8d){return function(_0x45f55e){return _0x45f55e[_0x59ba('0x2a')]['toLowerCase']()===_0x194c8d[_0x59ba('0x35')]();};}exports[_0x59ba('0x36')]=function(_0x1c6939,_0x3f4da5,_0x390b68,_0x1048e6){return function(_0x43dc98){try{var _0x34cbec={'name':_0x3f4da5[0x0],'timeout':_0x3f4da5[0x1]};var _0x3089b9=queue[_0x59ba('0x0')](_0x34cbec,{'typecast':!![]});if(_0x3089b9[_0x59ba('0x37')]){logger[_0x59ba('0x2d')]('[%s][QUEUE]\x20%s',_0x1c6939,_['map'](_0x3089b9,_0x59ba('0x23'))[_0x59ba('0x38')](',\x20'));_0x43dc98[_0x59ba('0x39')]();}else{var _0xe26cc5=_[_0x59ba('0x3a')](_0x390b68[_0x1048e6[_0x59ba('0x1e')]+_0x59ba('0x3b')],handleFindQueue(_0x34cbec[_0x59ba('0x2a')]));if(_0xe26cc5){startRouting(_0x1c6939,_0xe26cc5,_0x1048e6,_0x390b68);var _0x2b2103=(_0xe26cc5[_0x59ba('0x33')]||0xa)*0x3e8;var _0x1a2de0=(_0x34cbec[_0x59ba('0x33')]||0x14)*0x3e8;var _0x5475b7,_0x51d652;if(_0x2b2103>_0x1a2de0){_0x1a2de0=_0x2b2103;}var _0xa9eb96=seqqueue[_0x59ba('0x3c')](_0x2b2103);_0xa9eb96['id']=_0x1c6939;_0xa9eb96[_0x59ba('0x3d')]=_0x2b2103;_0xa9eb96[_0x59ba('0x3e')]=_0x1a2de0;_0xa9eb96['channel']=_0x1048e6['channel'];_0x390b68['rules'][_0x1c6939]['on']('end',function(){logger[_0x59ba('0x28')](_0x59ba('0x3f'),_0x1c6939);stopRouting(_0x1c6939,_0xe26cc5,_0x1048e6,_0x390b68);clearTimeout(_0x5475b7);_0x5475b7=undefined;_0xa9eb96['close'](!![]);if(_0x390b68[_0x59ba('0x40')][_0x1c6939]){delete _0x390b68['rules'][_0x1c6939];}_0x43dc98[_0x59ba('0x39')]();});_0x390b68[_0x59ba('0x40')][_0x1c6939]['on']('complete',function(){if(_0x390b68['rules'][_0x1c6939]){delete _0x390b68[_0x59ba('0x40')][_0x1c6939];}});_0x5475b7=setTimeout(function(){logger[_0x59ba('0x28')](_0x59ba('0x41'),_0x1c6939);endRouting(_0x1c6939,_0xe26cc5,_0x1048e6,_0x390b68);clearTimeout(_0x5475b7);_0xa9eb96['close'](!![]);_0x43dc98[_0x59ba('0x42')]();},_0x1a2de0);switch(_0xe26cc5[_0x59ba('0x43')]){case'rrmemory':strategy[_0x59ba('0x44')](_0xa9eb96,_0xe26cc5,_0x390b68,_0x1048e6);break;default:strategy['beepall'](_0xa9eb96,_0xe26cc5,_0x390b68,_0x1048e6);}}else{logger[_0x59ba('0x2d')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x1c6939,_0x34cbec['name']);_0x43dc98[_0x59ba('0x39')]();}}}catch(_0x5c917){console['log'](_0x5c917);logger[_0x59ba('0x2d')](_0x59ba('0x45'),_0x1c6939,_0x5c917[_0x59ba('0x46')]);_0x43dc98['stop']();}};};
\ No newline at end of file
+var _0x0b63=['close','next','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack','validate','seq-queue','moment','ioredis','../../../../config/environment','routing','./strategy','redis','defaults','localhost','account','from','joinAt','clone','queue_id','pick','format','%sQueuesWaitingInteractions','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','QueueId','channel','InteractionId','interaction','MessageId','message','chat','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','create','catch','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','QueueReport','timeout','[%s][END:QUEUE][NAME:%s]','update','update\x20queue\x20report','toLowerCase','consequence','[%s][QUEUE]\x20%s','map','stop','find','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x0b63,0xe7));var _0x30b6=function(_0x14b0db,_0x1dc6f3){_0x14b0db=_0x14b0db-0x0;var _0x333330=_0x0b63[_0x14b0db];return _0x333330;};'use strict';var schema=require(_0x30b6('0x0'));var _=require('lodash');var util=require('util');var seqqueue=require(_0x30b6('0x1'));var moment=require(_0x30b6('0x2'));var Redis=require(_0x30b6('0x3'));var config=require(_0x30b6('0x4'));var logger=require('../../../../config/logger')(_0x30b6('0x5'));var strategy=require(_0x30b6('0x6'));config[_0x30b6('0x7')]=_[_0x30b6('0x8')](config[_0x30b6('0x7')],{'host':_0x30b6('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x30b6('0x7')]));var attributes=['id','queue_id',_0x30b6('0xa'),'queue',_0x30b6('0xb'),_0x30b6('0xc')];function emit(_0x522a03,_0x3f8faa,_0x1ab626){io['to'](_0x522a03)['emit'](_0x3f8faa,_0x1ab626);}function emitChannelQueueInteraction(_0x299f08,_0x32295b,_0x3a2d43,_0x43aba4,_0x1acd7f,_0x36e650,_0x514eec,_0xdd5b1f){var _0x208a24=_[_0x30b6('0xd')](_0x3a2d43);_0x208a24[_0x30b6('0xe')]=_0xdd5b1f;_0x208a24['queue']=_0x32295b;_0x208a24[_0x30b6('0xa')]=_0x43aba4;_0x208a24['id']=_0x1acd7f;if(_0x36e650){_0x514eec[util['format']('%sQueuesWaitingInteractions',_0x299f08)][_0x1acd7f]=_[_0x30b6('0xf')](_0x208a24,attributes);}else{delete _0x514eec[util[_0x30b6('0x10')](_0x30b6('0x11'),_0x299f08)][_0x1acd7f];}emit(util['format']('%s:queue:%s',_0x299f08,_0x32295b),util[_0x30b6('0x10')](_0x30b6('0x12'),_0x299f08,_0x36e650?'save':_0x30b6('0x13')),_['pick'](_0x208a24,attributes));}var rpc={'openchannelQueueReport':require(_0x30b6('0x14')),'mailQueueReport':require(_0x30b6('0x15')),'chatQueueReport':require(_0x30b6('0x16')),'smsQueueReport':require(_0x30b6('0x17')),'faxQueueReport':require(_0x30b6('0x18')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0x30b6('0x19'),'required':!![],'message':_0x30b6('0x1a')},'timeout':{'type':_0x30b6('0x1b'),'message':_0x30b6('0x1c')}});function startRouting(_0xae7d94,_0x498f49,_0x2a0f9e,_0x53417f){if(_0xae7d94&&_0x498f49&&_0x2a0f9e){_0x498f49[_0x30b6('0x1d')]+=0x1;var _0x388e18={'uniqueid':_0xae7d94,'from':_0x2a0f9e[_0x30b6('0x1e')]?_0x2a0f9e[_0x30b6('0x1e')]['from']:'','joinAt':moment()[_0x30b6('0x10')](_0x30b6('0x1f')),'ContactId':_0x2a0f9e['contact']?_0x2a0f9e[_0x30b6('0x20')]['id']:null,'ListId':_0x2a0f9e[_0x30b6('0x21')]?_0x2a0f9e[_0x30b6('0x21')]['id']:null};_0x388e18[_[_0x30b6('0x22')](_0x2a0f9e['channel'])+_0x30b6('0x23')]=_0x498f49['id']||null;_0x388e18[_['upperFirst'](_0x2a0f9e[_0x30b6('0x24')])+_0x30b6('0x25')]=_0x2a0f9e[_0x30b6('0x26')]?_0x2a0f9e[_0x30b6('0x26')]['id']:null;_0x388e18[_['upperFirst'](_0x2a0f9e[_0x30b6('0x24')])+_0x30b6('0x27')]=_0x2a0f9e['message']?_0x2a0f9e[_0x30b6('0x28')]['id']:null;_0x388e18[_['upperFirst'](_0x2a0f9e[_0x30b6('0x24')])+(_0x2a0f9e[_0x30b6('0x24')]!==_0x30b6('0x29')?'AccountId':_0x30b6('0x2a'))]=_0x2a0f9e[_0x30b6('0xa')]?_0x2a0f9e[_0x30b6('0xa')]['id']:null;logger[_0x30b6('0x2b')](util[_0x30b6('0x10')](_0x30b6('0x2c'),_0xae7d94,_0x498f49[_0x30b6('0x2d')]));emitChannelQueueInteraction(_0x2a0f9e[_0x30b6('0x24')],_0x498f49[_0x30b6('0x2d')],_0x388e18,_0x2a0f9e['account'][_0x30b6('0x2d')],_0x2a0f9e['message']['id'],!![],_0x53417f,_0x498f49['id']);if(rpc[_0x2a0f9e['channel']+'QueueReport']){return rpc[_0x2a0f9e[_0x30b6('0x24')]+'QueueReport'][_0x30b6('0x2e')](_0x388e18)[_0x30b6('0x2f')](function(_0x82665f){logger[_0x30b6('0x30')](_0x30b6('0x31'));});}}}function stopRouting(_0xff9164,_0x86decb,_0x68115a,_0x166a95){if(_0xff9164&&_0x86decb){_0x86decb[_0x30b6('0x1d')]-=0x1;var _0xe85ade={'leaveAt':moment()['format'](_0x30b6('0x1f')),'acceptAt':moment()[_0x30b6('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger['info'](util['format'](_0x30b6('0x32'),_0xff9164,_0x86decb[_0x30b6('0x2d')]));emitChannelQueueInteraction(_0x68115a[_0x30b6('0x24')],_0x86decb['name'],_0x68115a[_0x30b6('0x1e')],_0x68115a['account']['name'],_0x68115a[_0x30b6('0x28')]['id'],![],_0x166a95,_0x86decb['id']);if(rpc[_0x68115a[_0x30b6('0x24')]+'QueueReport']){return rpc[_0x68115a['channel']+_0x30b6('0x33')]['update'](_0xff9164,_0xe85ade)['catch'](function(_0x49c9f5){logger[_0x30b6('0x30')]('update\x20queue\x20report');});}}}function endRouting(_0x599f27,_0x1da4ba,_0x1d617e,_0x3477a3){if(_0x599f27&&_0x1da4ba){_0x1da4ba[_0x30b6('0x1d')]-=0x1;var _0x171019={'leaveAt':moment()['format'](_0x30b6('0x1f')),'exitAt':moment()[_0x30b6('0x10')](_0x30b6('0x1f')),'reason':_0x30b6('0x34')};logger[_0x30b6('0x2b')](util['format'](_0x30b6('0x35'),_0x599f27,_0x1da4ba['name']));emitChannelQueueInteraction(_0x1d617e[_0x30b6('0x24')],_0x1da4ba['name'],_0x1d617e[_0x30b6('0x1e')],_0x1d617e[_0x30b6('0xa')][_0x30b6('0x2d')],_0x1d617e['message']['id'],![],_0x3477a3);if(rpc[_0x1d617e[_0x30b6('0x24')]+_0x30b6('0x33')]){return rpc[_0x1d617e[_0x30b6('0x24')]+_0x30b6('0x33')][_0x30b6('0x36')](_0x599f27,_0x171019)[_0x30b6('0x2f')](function(_0x2cf614){logger[_0x30b6('0x30')](_0x30b6('0x37'));});}}}function handleFindQueue(_0x38c89b){return function(_0xcd1635){return _0xcd1635[_0x30b6('0x2d')][_0x30b6('0x38')]()===_0x38c89b['toLowerCase']();};}exports[_0x30b6('0x39')]=function(_0x22fa8d,_0x210cab,_0x523fc4,_0x1f3c6f){return function(_0x4bae03){try{var _0x279c85={'name':_0x210cab[0x0],'timeout':_0x210cab[0x1]};var _0x88757f=queue[_0x30b6('0x0')](_0x279c85,{'typecast':!![]});if(_0x88757f['length']){logger[_0x30b6('0x30')](_0x30b6('0x3a'),_0x22fa8d,_[_0x30b6('0x3b')](_0x88757f,'message')['join'](',\x20'));_0x4bae03[_0x30b6('0x3c')]();}else{var _0xb98b83=_[_0x30b6('0x3d')](_0x523fc4[_0x1f3c6f[_0x30b6('0x24')]+'Queues'],handleFindQueue(_0x279c85[_0x30b6('0x2d')]));if(_0xb98b83){startRouting(_0x22fa8d,_0xb98b83,_0x1f3c6f,_0x523fc4);var _0x4a3ab3=(_0xb98b83['timeout']||0xa)*0x3e8;var _0x583545=(_0x279c85[_0x30b6('0x34')]||0x14)*0x3e8;var _0x21cee1,_0x69bb62;if(_0x4a3ab3>_0x583545){_0x583545=_0x4a3ab3;}var _0x5cb4ba=seqqueue[_0x30b6('0x3e')](_0x4a3ab3);_0x5cb4ba['id']=_0x22fa8d;_0x5cb4ba[_0x30b6('0x3f')]=_0x4a3ab3;_0x5cb4ba[_0x30b6('0x40')]=_0x583545;_0x5cb4ba[_0x30b6('0x24')]=_0x1f3c6f['channel'];_0x523fc4[_0x30b6('0x41')][_0x22fa8d]['on'](_0x30b6('0x42'),function(){logger[_0x30b6('0x2b')](_0x30b6('0x43'),_0x22fa8d);stopRouting(_0x22fa8d,_0xb98b83,_0x1f3c6f,_0x523fc4);clearTimeout(_0x21cee1);_0x21cee1=undefined;_0x5cb4ba['close'](!![]);if(_0x523fc4[_0x30b6('0x41')][_0x22fa8d]){delete _0x523fc4[_0x30b6('0x41')][_0x22fa8d];}_0x4bae03[_0x30b6('0x3c')]();});_0x523fc4[_0x30b6('0x41')][_0x22fa8d]['on'](_0x30b6('0x44'),function(){if(_0x523fc4['rules'][_0x22fa8d]){delete _0x523fc4[_0x30b6('0x41')][_0x22fa8d];}});_0x21cee1=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x22fa8d);endRouting(_0x22fa8d,_0xb98b83,_0x1f3c6f,_0x523fc4);clearTimeout(_0x21cee1);_0x5cb4ba[_0x30b6('0x45')](!![]);_0x4bae03[_0x30b6('0x46')]();},_0x583545);switch(_0xb98b83['strategy']){case _0x30b6('0x47'):strategy[_0x30b6('0x47')](_0x5cb4ba,_0xb98b83,_0x523fc4,_0x1f3c6f);break;default:strategy[_0x30b6('0x48')](_0x5cb4ba,_0xb98b83,_0x523fc4,_0x1f3c6f);}}else{logger[_0x30b6('0x30')](_0x30b6('0x49'),_0x22fa8d,_0x279c85[_0x30b6('0x2d')]);_0x4bae03[_0x30b6('0x3c')]();}}}catch(_0x33509b){console['log'](_0x33509b);logger[_0x30b6('0x30')]('[%s][QUEUE]\x20%s',_0x22fa8d,_0x33509b[_0x30b6('0x4a')]);_0x4bae03[_0x30b6('0x3c')]();}};};
\ No newline at end of file
index 28ac558..a0ccd9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd0d=['RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busyQueue','writeLog','TIMEOUT','exports','lodash','../../../../../config/logger','routing','notificationId','squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','info','isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','agents','busy'];(function(_0x5951e8,_0x42b9a7){var _0x20a1f5=function(_0x2bc968){while(--_0x2bc968){_0x5951e8['push'](_0x5951e8['shift']());}};_0x20a1f5(++_0x42b9a7);}(_0xcd0d,0xc3));var _0xdcd0=function(_0x44745f,_0x432d7e){_0x44745f=_0x44745f-0x0;var _0xac7f24=_0xcd0d[_0x44745f];return _0xac7f24;};'use strict';var _=require(_0xdcd0('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0xdcd0('0x1'))(_0xdcd0('0x2'));var Agent=function(_0x1c1c12,_0x1dc85f,_0x2faeab,_0x4e07d3){this[_0xdcd0('0x3')]=uuid['v4']();this[_0xdcd0('0x4')]=_0x1c1c12;this[_0xdcd0('0x5')]=_0x1dc85f;this[_0xdcd0('0x6')]=_0x2faeab;this['routing']=_0x4e07d3;this[_0xdcd0('0x4')][_0xdcd0('0x7')](this[_0xdcd0('0x8')][_0xdcd0('0x9')](this),this[_0xdcd0('0xa')][_0xdcd0('0x9')](this));this[_0xdcd0('0x4')]['on'](_0xdcd0('0xb'),this[_0xdcd0('0xa')][_0xdcd0('0x9')](this));this[_0xdcd0('0x4')]['on'](_0xdcd0('0xc'),this[_0xdcd0('0xd')][_0xdcd0('0x9')](this));};Agent[_0xdcd0('0xe')][_0xdcd0('0x7')]=function(){this['squeue'][_0xdcd0('0x7')](this[_0xdcd0('0x8')][_0xdcd0('0x9')](this),this[_0xdcd0('0xa')][_0xdcd0('0x9')](this));};Agent[_0xdcd0('0xe')]['handleDrained']=function(){this[_0xdcd0('0xa')](!![]);};Agent[_0xdcd0('0xe')][_0xdcd0('0x8')]=function(_0x5e68af){logger[_0xdcd0('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xdcd0('0x4')]['id'],this[_0xdcd0('0x5')]['id']);if(_[_0xdcd0('0x10')](this[_0xdcd0('0x6')]['agents'][this['agent']['id']])){logger[_0xdcd0('0xf')](_0xdcd0('0x11'),this['squeue']['id'],this[_0xdcd0('0x5')]['id']);setTimeout(this[_0xdcd0('0x7')]['bind'](this),0x3e8);}else{if(this['routing'][_0xdcd0('0x12')]||util[_0xdcd0('0x13')](this[_0xdcd0('0x4')]['id'],this['realtime'][_0xdcd0('0x14')][this[_0xdcd0('0x5')]['id']],this[_0xdcd0('0x4')]['channel'],![])){this['realtime'][_0xdcd0('0x14')][this[_0xdcd0('0x5')]['id']][_0xdcd0('0x15')]=!![];this[_0xdcd0('0x6')][_0xdcd0('0x14')][this['agent']['id']]['busyQueue']=undefined;util['showNotification'](this[_0xdcd0('0x3')],this[_0xdcd0('0x4')]['id'],this[_0xdcd0('0x6')][_0xdcd0('0x14')][this[_0xdcd0('0x5')]['id']],null,this[_0xdcd0('0x2')]);util['writeLog'](this['squeue']['id'],this[_0xdcd0('0x6')][_0xdcd0('0x14')][this['agent']['id']],_0xdcd0('0x16')+(this[_0xdcd0('0x2')]['forcedOwnership']?_0xdcd0('0x17'):''));}else{logger[_0xdcd0('0xf')](_0xdcd0('0x18'),this['squeue']['id'],this[_0xdcd0('0x5')]['id']);setTimeout(this['push'][_0xdcd0('0x9')](this),0x3e8);}}};Agent[_0xdcd0('0xe')][_0xdcd0('0xa')]=function(_0x513636){if(_[_0xdcd0('0x10')](this[_0xdcd0('0x6')][_0xdcd0('0x14')][this[_0xdcd0('0x5')]['id']])){return logger[_0xdcd0('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xdcd0('0x4')]['id'],this['agent']['id']);}else{logger[_0xdcd0('0xf')](_0xdcd0('0x19'),this[_0xdcd0('0x4')]['id'],this[_0xdcd0('0x5')]['id']);util[_0xdcd0('0x1a')](this[_0xdcd0('0x3')],this[_0xdcd0('0x4')]['id'],this[_0xdcd0('0x6')][_0xdcd0('0x14')][this['agent']['id']],null,this[_0xdcd0('0x2')]);this[_0xdcd0('0x6')]['agents'][this[_0xdcd0('0x5')]['id']][_0xdcd0('0x15')]=![];this[_0xdcd0('0x6')][_0xdcd0('0x14')][this[_0xdcd0('0x5')]['id']][_0xdcd0('0x1b')]=undefined;util[_0xdcd0('0x1c')](this[_0xdcd0('0x4')]['id'],this[_0xdcd0('0x6')]['agents'][this['agent']['id']],_0x513636?'STOP':_0xdcd0('0x1d'));}if(!_0x513636){setTimeout(this[_0xdcd0('0x7')][_0xdcd0('0x9')](this),0x3e8);}};function agent(_0x3e9774,_0x3f65e1,_0x2f15bd,_0x4ceb7b){return new Agent(_0x3e9774,_0x3f65e1,_0x2f15bd,_0x4ceb7b);}module[_0xdcd0('0x1e')]=agent;
\ No newline at end of file
+var _0xad0c=['handleRun','bind','handleTimeout','timeout','drained','prototype','push','handleDrained','info','[%s][AGENT]\x20try\x20with\x20%s','agent','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','writeLog','RINGING','forcedOwnership','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime'];(function(_0x33af7f,_0x9a12b4){var _0x366664=function(_0x3fe431){while(--_0x3fe431){_0x33af7f['push'](_0x33af7f['shift']());}};_0x366664(++_0x9a12b4);}(_0xad0c,0xa2));var _0xcad0=function(_0x581c0f,_0x4290a8){_0x581c0f=_0x581c0f-0x0;var _0x3384eb=_0xad0c[_0x581c0f];return _0x3384eb;};'use strict';var _=require(_0xcad0('0x0'));var uuid=require(_0xcad0('0x1'));var util=require(_0xcad0('0x2'));var logger=require(_0xcad0('0x3'))(_0xcad0('0x4'));var Agent=function(_0x9c9e18,_0x1862bc,_0x3c4295,_0x52946e){this[_0xcad0('0x5')]=uuid['v4']();this[_0xcad0('0x6')]=_0x9c9e18;this['agent']=_0x1862bc;this[_0xcad0('0x7')]=_0x3c4295;this['routing']=_0x52946e;this['squeue']['push'](this[_0xcad0('0x8')][_0xcad0('0x9')](this),this[_0xcad0('0xa')][_0xcad0('0x9')](this));this[_0xcad0('0x6')]['on'](_0xcad0('0xb'),this[_0xcad0('0xa')][_0xcad0('0x9')](this));this[_0xcad0('0x6')]['on'](_0xcad0('0xc'),this['handleDrained']['bind'](this));};Agent[_0xcad0('0xd')][_0xcad0('0xe')]=function(){this['squeue'][_0xcad0('0xe')](this[_0xcad0('0x8')][_0xcad0('0x9')](this),this['handleTimeout'][_0xcad0('0x9')](this));};Agent[_0xcad0('0xd')][_0xcad0('0xf')]=function(){this[_0xcad0('0xa')](!![]);};Agent[_0xcad0('0xd')]['handleRun']=function(_0x476914){logger[_0xcad0('0x10')](_0xcad0('0x11'),this[_0xcad0('0x6')]['id'],this[_0xcad0('0x12')]['id']);if(_[_0xcad0('0x13')](this['realtime'][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']])){logger[_0xcad0('0x10')](_0xcad0('0x15'),this[_0xcad0('0x6')]['id'],this['agent']['id']);setTimeout(this[_0xcad0('0xe')][_0xcad0('0x9')](this),0x3e8);}else{if(this[_0xcad0('0x4')]['forcedOwnership']||util[_0xcad0('0x16')](this[_0xcad0('0x6')]['id'],this[_0xcad0('0x7')][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']],this['squeue'][_0xcad0('0x17')],![])){this[_0xcad0('0x7')][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']][_0xcad0('0x18')]=!![];this[_0xcad0('0x7')][_0xcad0('0x14')][this['agent']['id']][_0xcad0('0x19')]=undefined;util['showNotification'](this[_0xcad0('0x5')],this['squeue']['id'],this['realtime'][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']],null,this[_0xcad0('0x4')]);util[_0xcad0('0x1a')](this[_0xcad0('0x6')]['id'],this[_0xcad0('0x7')]['agents'][this['agent']['id']],_0xcad0('0x1b')+(this[_0xcad0('0x4')][_0xcad0('0x1c')]?':FORCED':''));}else{logger['info'](_0xcad0('0x1d'),this['squeue']['id'],this[_0xcad0('0x12')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent[_0xcad0('0xd')][_0xcad0('0xa')]=function(_0x5a4f8c){if(_[_0xcad0('0x13')](this[_0xcad0('0x7')][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']])){return logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xcad0('0x6')]['id'],this[_0xcad0('0x12')]['id']);}else{logger[_0xcad0('0x10')](_0xcad0('0x1e'),this[_0xcad0('0x6')]['id'],this[_0xcad0('0x12')]['id']);util[_0xcad0('0x1f')](this[_0xcad0('0x5')],this[_0xcad0('0x6')]['id'],this['realtime'][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']],null,this[_0xcad0('0x4')]);this[_0xcad0('0x7')][_0xcad0('0x14')][this['agent']['id']][_0xcad0('0x18')]=![];this[_0xcad0('0x7')][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']][_0xcad0('0x19')]=undefined;util[_0xcad0('0x1a')](this[_0xcad0('0x6')]['id'],this[_0xcad0('0x7')][_0xcad0('0x14')][this[_0xcad0('0x12')]['id']],_0x5a4f8c?_0xcad0('0x20'):_0xcad0('0x21'));}if(!_0x5a4f8c){setTimeout(this['push'][_0xcad0('0x9')](this),0x3e8);}};function agent(_0x39034a,_0x382082,_0x4fb3cc,_0x25bd8d){return new Agent(_0x39034a,_0x382082,_0x4fb3cc,_0x25bd8d);}module['exports']=agent;
\ No newline at end of file
index dd0417e..d579929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','isNil','queue','Agents','length','realtime','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','RINGING','busy','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','writeLog','STOP','TIMEOUT','busyQueue','exports','lodash','uuid','./util','squeue','routing'];(function(_0x277107,_0x3420dc){var _0x1da046=function(_0x47122d){while(--_0x47122d){_0x277107['push'](_0x277107['shift']());}};_0x1da046(++_0x3420dc);}(_0xb458,0x103));var _0x8b45=function(_0x4d67b8,_0x565134){_0x4d67b8=_0x4d67b8-0x0;var _0x55af3b=_0xb458[_0x4d67b8];return _0x55af3b;};'use strict';var _=require(_0x8b45('0x0'));var uuid=require(_0x8b45('0x1'));var util=require(_0x8b45('0x2'));var logger=require('../../../../../config/logger')('routing');var Beepall=function(_0xdf89d4,_0x93d9cd,_0x141a44,_0x13a8c6){this['notificationId']=uuid['v4']();this[_0x8b45('0x3')]=_0xdf89d4;this['queue']=_0x93d9cd;this['realtime']=_0x141a44;this[_0x8b45('0x4')]=_0x13a8c6;this[_0x8b45('0x3')][_0x8b45('0x5')](this[_0x8b45('0x6')][_0x8b45('0x7')](this),this['handleTimeout'][_0x8b45('0x7')](this));this[_0x8b45('0x3')]['on'](_0x8b45('0x8'),this[_0x8b45('0x9')][_0x8b45('0x7')](this));this['squeue']['on'](_0x8b45('0xa'),this[_0x8b45('0xb')]['bind'](this));};Beepall['prototype']['push']=function(){this['squeue'][_0x8b45('0x5')](this[_0x8b45('0x6')][_0x8b45('0x7')](this),this['handleTimeout'][_0x8b45('0x7')](this));};Beepall[_0x8b45('0xc')][_0x8b45('0xb')]=function(_0x2e5ec3){this[_0x8b45('0x9')](!![]);};Beepall[_0x8b45('0xc')]['handleRun']=function(_0x5a14c1){var _0x45881c=!![];if(!_[_0x8b45('0xd')](this[_0x8b45('0xe')])&&!_[_0x8b45('0xd')](this[_0x8b45('0xe')][_0x8b45('0xf')])&&this[_0x8b45('0xe')][_0x8b45('0xf')][_0x8b45('0x10')]>0x0){for(var _0x391d1e=0x0,_0x287a3b;_0x391d1e<this[_0x8b45('0xe')][_0x8b45('0xf')][_0x8b45('0x10')];_0x391d1e+=0x1){_0x287a3b=this[_0x8b45('0xe')][_0x8b45('0xf')][_0x391d1e]['id'];if(_[_0x8b45('0xd')](this[_0x8b45('0x11')]['agents'][_0x287a3b])){logger[_0x8b45('0x12')](_0x8b45('0x13'),this[_0x8b45('0x3')]['id'],_0x287a3b);}else{if(util[_0x8b45('0x14')](this[_0x8b45('0x3')]['id'],this[_0x8b45('0x11')][_0x8b45('0x15')][_0x287a3b],this[_0x8b45('0x3')]['channel'],!![])){_0x45881c=![];util['writeLog'](this[_0x8b45('0x3')]['id'],this['realtime'][_0x8b45('0x15')][_0x287a3b],_0x8b45('0x16'));this[_0x8b45('0x11')][_0x8b45('0x15')][_0x287a3b][_0x8b45('0x17')]=!![];this[_0x8b45('0x11')][_0x8b45('0x15')][_0x287a3b]['busyQueue']=this['queue'][_0x8b45('0x18')];util[_0x8b45('0x19')](this['notificationId'],this['squeue']['id'],this[_0x8b45('0x11')][_0x8b45('0x15')][_0x287a3b],this[_0x8b45('0xe')],this[_0x8b45('0x4')]);}}}if(_0x45881c){logger['info'](_0x8b45('0x1a'),this[_0x8b45('0x3')]['id']);setTimeout(this[_0x8b45('0x5')][_0x8b45('0x7')](this),0x3e8);}}else{logger[_0x8b45('0x12')](_0x8b45('0x1b'),this[_0x8b45('0x3')]['id']);setTimeout(this[_0x8b45('0x5')][_0x8b45('0x7')](this),0x3e8);}};Beepall[_0x8b45('0xc')][_0x8b45('0x9')]=function(_0x1ba2d4){if(!_[_0x8b45('0xd')](this['queue'])&&!_[_0x8b45('0xd')](this[_0x8b45('0xe')][_0x8b45('0xf')])){for(var _0x15107a=0x0,_0x2eb4c2;_0x15107a<this[_0x8b45('0xe')][_0x8b45('0xf')][_0x8b45('0x10')];_0x15107a+=0x1){_0x2eb4c2=this['queue'][_0x8b45('0xf')][_0x15107a]['id'];if(_[_0x8b45('0xd')](this[_0x8b45('0x11')][_0x8b45('0x15')][_0x2eb4c2])){logger[_0x8b45('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x8b45('0x3')]['id'],_0x2eb4c2);}else{util['hideNotification'](this['notificationId'],this[_0x8b45('0x3')]['id'],this[_0x8b45('0x11')][_0x8b45('0x15')][_0x2eb4c2],this[_0x8b45('0xe')],this[_0x8b45('0x4')]);util[_0x8b45('0x1c')](this['squeue']['id'],this[_0x8b45('0x11')][_0x8b45('0x15')][_0x2eb4c2],_0x1ba2d4?_0x8b45('0x1d'):_0x8b45('0x1e'));this['realtime'][_0x8b45('0x15')][_0x2eb4c2][_0x8b45('0x17')]=![];this[_0x8b45('0x11')]['agents'][_0x2eb4c2][_0x8b45('0x1f')]=undefined;}}}if(!_0x1ba2d4){setTimeout(this[_0x8b45('0x5')][_0x8b45('0x7')](this),0x3e8);}};function beepall(_0x58f32e,_0x1adc4e,_0x348a13,_0x3452fb){return new Beepall(_0x58f32e,_0x1adc4e,_0x348a13,_0x3452fb);}module[_0x8b45('0x20')]=beepall;
\ No newline at end of file
+var _0x9829=['[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','RINGING','busy','busyQueue','name','showNotification','notificationId','info','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','queue','push','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','isNil','Agents','length','realtime','agents'];(function(_0x2298f0,_0x3bbf4f){var _0x39b136=function(_0xc2cd6e){while(--_0xc2cd6e){_0x2298f0['push'](_0x2298f0['shift']());}};_0x39b136(++_0x3bbf4f);}(_0x9829,0xc4));var _0x9982=function(_0x31a938,_0x4daec6){_0x31a938=_0x31a938-0x0;var _0x1bf341=_0x9829[_0x31a938];return _0x1bf341;};'use strict';var _=require(_0x9982('0x0'));var uuid=require(_0x9982('0x1'));var util=require(_0x9982('0x2'));var logger=require(_0x9982('0x3'))(_0x9982('0x4'));var Beepall=function(_0x4c01a9,_0x399b6c,_0x465552,_0x2f782a){this['notificationId']=uuid['v4']();this[_0x9982('0x5')]=_0x4c01a9;this[_0x9982('0x6')]=_0x399b6c;this['realtime']=_0x465552;this['routing']=_0x2f782a;this[_0x9982('0x5')][_0x9982('0x7')](this['handleRun'][_0x9982('0x8')](this),this[_0x9982('0x9')][_0x9982('0x8')](this));this[_0x9982('0x5')]['on'](_0x9982('0xa'),this[_0x9982('0x9')][_0x9982('0x8')](this));this[_0x9982('0x5')]['on'](_0x9982('0xb'),this[_0x9982('0xc')][_0x9982('0x8')](this));};Beepall[_0x9982('0xd')][_0x9982('0x7')]=function(){this[_0x9982('0x5')][_0x9982('0x7')](this[_0x9982('0xe')][_0x9982('0x8')](this),this[_0x9982('0x9')]['bind'](this));};Beepall[_0x9982('0xd')][_0x9982('0xc')]=function(_0x5ba2d3){this[_0x9982('0x9')](!![]);};Beepall['prototype'][_0x9982('0xe')]=function(_0xbf0d32){var _0xca7c34=!![];if(!_[_0x9982('0xf')](this[_0x9982('0x6')])&&!_[_0x9982('0xf')](this[_0x9982('0x6')][_0x9982('0x10')])&&this[_0x9982('0x6')]['Agents'][_0x9982('0x11')]>0x0){for(var _0x5385cc=0x0,_0x3fd557;_0x5385cc<this[_0x9982('0x6')]['Agents'][_0x9982('0x11')];_0x5385cc+=0x1){_0x3fd557=this[_0x9982('0x6')][_0x9982('0x10')][_0x5385cc]['id'];if(_[_0x9982('0xf')](this[_0x9982('0x12')][_0x9982('0x13')][_0x3fd557])){logger['info'](_0x9982('0x14'),this[_0x9982('0x5')]['id'],_0x3fd557);}else{if(util['isAgentAvailable'](this[_0x9982('0x5')]['id'],this[_0x9982('0x12')][_0x9982('0x13')][_0x3fd557],this[_0x9982('0x5')][_0x9982('0x15')],!![])){_0xca7c34=![];util[_0x9982('0x16')](this[_0x9982('0x5')]['id'],this[_0x9982('0x12')][_0x9982('0x13')][_0x3fd557],_0x9982('0x17'));this[_0x9982('0x12')][_0x9982('0x13')][_0x3fd557][_0x9982('0x18')]=!![];this['realtime'][_0x9982('0x13')][_0x3fd557][_0x9982('0x19')]=this[_0x9982('0x6')][_0x9982('0x1a')];util[_0x9982('0x1b')](this[_0x9982('0x1c')],this[_0x9982('0x5')]['id'],this[_0x9982('0x12')][_0x9982('0x13')][_0x3fd557],this[_0x9982('0x6')],this[_0x9982('0x4')]);}}}if(_0xca7c34){logger[_0x9982('0x1d')](_0x9982('0x1e'),this[_0x9982('0x5')]['id']);setTimeout(this[_0x9982('0x7')][_0x9982('0x8')](this),0x3e8);}}else{logger[_0x9982('0x1d')](_0x9982('0x1f'),this['squeue']['id']);setTimeout(this['push'][_0x9982('0x8')](this),0x3e8);}};Beepall[_0x9982('0xd')][_0x9982('0x9')]=function(_0x3c0596){if(!_[_0x9982('0xf')](this[_0x9982('0x6')])&&!_[_0x9982('0xf')](this[_0x9982('0x6')][_0x9982('0x10')])){for(var _0x26a999=0x0,_0x33a4de;_0x26a999<this[_0x9982('0x6')]['Agents'][_0x9982('0x11')];_0x26a999+=0x1){_0x33a4de=this[_0x9982('0x6')][_0x9982('0x10')][_0x26a999]['id'];if(_[_0x9982('0xf')](this[_0x9982('0x12')][_0x9982('0x13')][_0x33a4de])){logger['info'](_0x9982('0x14'),this['squeue']['id'],_0x33a4de);}else{util[_0x9982('0x20')](this[_0x9982('0x1c')],this[_0x9982('0x5')]['id'],this[_0x9982('0x12')][_0x9982('0x13')][_0x33a4de],this[_0x9982('0x6')],this[_0x9982('0x4')]);util['writeLog'](this[_0x9982('0x5')]['id'],this[_0x9982('0x12')][_0x9982('0x13')][_0x33a4de],_0x3c0596?_0x9982('0x21'):_0x9982('0x22'));this['realtime'][_0x9982('0x13')][_0x33a4de]['busy']=![];this['realtime'][_0x9982('0x13')][_0x33a4de][_0x9982('0x19')]=undefined;}}}if(!_0x3c0596){setTimeout(this['push'][_0x9982('0x8')](this),0x3e8);}};function beepall(_0x253be2,_0x1db893,_0x342f9f,_0x23fa71){return new Beepall(_0x253be2,_0x1db893,_0x342f9f,_0x23fa71);}module[_0x9982('0x23')]=beepall;
\ No newline at end of file
index e5d5952..6f3bc6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['./beepall','./agent','exports','./rrmemory'];(function(_0x52f3c7,_0x4cfceb){var _0x46ce85=function(_0x40b5ce){while(--_0x40b5ce){_0x52f3c7['push'](_0x52f3c7['shift']());}};_0x46ce85(++_0x4cfceb);}(_0x7be1,0xfe));var _0x17be=function(_0x28db86,_0x45d20f){_0x28db86=_0x28db86-0x0;var _0x3b0ae7=_0x7be1[_0x28db86];return _0x3b0ae7;};'use strict';module[_0x17be('0x0')]={'rrmemory':require(_0x17be('0x1')),'beepall':require(_0x17be('0x2')),'agent':require(_0x17be('0x3'))};
\ No newline at end of file
+var _0x2687=['./rrmemory','exports'];(function(_0x1ab7e7,_0x5a823d){var _0x46ce25=function(_0x542bbd){while(--_0x542bbd){_0x1ab7e7['push'](_0x1ab7e7['shift']());}};_0x46ce25(++_0x5a823d);}(_0x2687,0xe5));var _0x7268=function(_0x3c642a,_0x35223b){_0x3c642a=_0x3c642a-0x0;var _0x9db7d6=_0x2687[_0x3c642a];return _0x9db7d6;};'use strict';module[_0x7268('0x0')]={'rrmemory':require(_0x7268('0x1')),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
index 24a5075..700d290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac01=['handleRun','isNil','busy','busyQueue','name','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','TIMEOUT','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','intervals','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','agents','agentId','info','[%s][QUEUE]\x20available\x20again\x20%s','done'];(function(_0x218994,_0x2cf487){var _0x3f350b=function(_0x2e2065){while(--_0x2e2065){_0x218994['push'](_0x218994['shift']());}};_0x3f350b(++_0x2cf487);}(_0xac01,0xb4));var _0x1ac0=function(_0x2e2245,_0xd2bf07){_0x2e2245=_0x2e2245-0x0;var _0x3ee23a=_0xac01[_0x2e2245];return _0x3ee23a;};'use strict';var rr=require('rr');var _=require(_0x1ac0('0x0'));var uuid=require(_0x1ac0('0x1'));var util=require(_0x1ac0('0x2'));var logger=require('../../../../../config/logger')(_0x1ac0('0x3'));var RRMemory=function(_0x55aa0a,_0x55416a,_0x5e2bcc,_0x141e5d){this[_0x1ac0('0x4')]=uuid['v4']();this[_0x1ac0('0x5')]=_0x55aa0a;this[_0x1ac0('0x6')]=_0x55416a;this[_0x1ac0('0x7')]=_0x5e2bcc;this[_0x1ac0('0x3')]=_0x141e5d;this[_0x1ac0('0x8')]={};this[_0x1ac0('0x5')]['push'](this['handleRun'][_0x1ac0('0x9')](this),this[_0x1ac0('0xa')][_0x1ac0('0x9')](this),this[_0x1ac0('0xb')]);this[_0x1ac0('0x5')]['on'](_0x1ac0('0xc'),this['handleTimeout'][_0x1ac0('0x9')](this));this[_0x1ac0('0x5')]['on'](_0x1ac0('0xd'),this[_0x1ac0('0xe')][_0x1ac0('0x9')](this));};RRMemory[_0x1ac0('0xf')][_0x1ac0('0x10')]=function(){this[_0x1ac0('0x5')][_0x1ac0('0x10')](this['handleRun']['bind'](this),this[_0x1ac0('0xa')][_0x1ac0('0x9')](this));};RRMemory[_0x1ac0('0xf')]['handleDrained']=function(_0x14f4ca){this[_0x1ac0('0xa')](!![]);};RRMemory[_0x1ac0('0xf')][_0x1ac0('0x11')]=function(_0x20f379){if(util[_0x1ac0('0x12')](this[_0x1ac0('0x5')]['id'],this['realtime'][_0x1ac0('0x13')][this[_0x1ac0('0x14')]],this[_0x1ac0('0x5')]['channel'],!![])){logger[_0x1ac0('0x15')](_0x1ac0('0x16'),this[_0x1ac0('0x5')]['id'],this['agentId']);clearInterval(this[_0x1ac0('0x8')][this['agentId']]);_0x20f379[_0x1ac0('0x17')]();setTimeout(this[_0x1ac0('0x10')][_0x1ac0('0x9')](this),0x3e8);}};RRMemory[_0x1ac0('0xf')][_0x1ac0('0x18')]=function(_0xb61bd1){this['agentId']=rr(this[_0x1ac0('0x6')]['mapAgentsId']);logger['info']('[%s][QUEUE]\x20try\x20with\x20%s',this['squeue']['id'],this[_0x1ac0('0x14')]);if(_[_0x1ac0('0x19')](this[_0x1ac0('0x7')][_0x1ac0('0x13')][this[_0x1ac0('0x14')]])){logger[_0x1ac0('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x1ac0('0x5')]['id'],this['agentId']);_0xb61bd1['done']();setTimeout(this[_0x1ac0('0x10')][_0x1ac0('0x9')](this),0x3e8);}else{if(util['isAgentAvailable'](this['squeue']['id'],this['realtime'][_0x1ac0('0x13')][this[_0x1ac0('0x14')]],this['squeue']['channel'],!![])){this['realtime']['agents'][this['agentId']][_0x1ac0('0x1a')]=!![];this[_0x1ac0('0x7')]['agents'][this['agentId']][_0x1ac0('0x1b')]=this[_0x1ac0('0x6')][_0x1ac0('0x1c')];util['showNotification'](this[_0x1ac0('0x4')],this[_0x1ac0('0x5')]['id'],this['realtime']['agents'][this[_0x1ac0('0x14')]],this[_0x1ac0('0x6')],this[_0x1ac0('0x3')]);util[_0x1ac0('0x1d')](this[_0x1ac0('0x5')]['id'],this[_0x1ac0('0x7')][_0x1ac0('0x13')][this[_0x1ac0('0x14')]],'RINGING');this[_0x1ac0('0x8')][this[_0x1ac0('0x14')]]=setInterval(this[_0x1ac0('0x11')][_0x1ac0('0x9')](this,_0xb61bd1),0x3e8);}else{logger['info'](_0x1ac0('0x1e'),this[_0x1ac0('0x5')]['id'],this['agentId']);_0xb61bd1[_0x1ac0('0x17')]();setTimeout(this[_0x1ac0('0x10')][_0x1ac0('0x9')](this),0x3e8);}}};RRMemory[_0x1ac0('0xf')][_0x1ac0('0xa')]=function(_0xbb1b35){logger[_0x1ac0('0x15')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this[_0x1ac0('0x14')]);if(_[_0x1ac0('0x19')](this[_0x1ac0('0x7')][_0x1ac0('0x13')][this[_0x1ac0('0x14')]])){logger[_0x1ac0('0x15')](_0x1ac0('0x1f'),this['squeue']['id'],this[_0x1ac0('0x14')]);}else{clearInterval(this[_0x1ac0('0x8')][this[_0x1ac0('0x14')]]);util['hideNotification'](this[_0x1ac0('0x4')],this['squeue']['id'],this[_0x1ac0('0x7')]['agents'][this[_0x1ac0('0x14')]],this[_0x1ac0('0x6')],this['routing']);util[_0x1ac0('0x1d')](this[_0x1ac0('0x5')]['id'],this['realtime']['agents'][this[_0x1ac0('0x14')]],_0x1ac0('0x20'));this['realtime'][_0x1ac0('0x13')][this['agentId']][_0x1ac0('0x1a')]=![];this[_0x1ac0('0x7')][_0x1ac0('0x13')][this[_0x1ac0('0x14')]][_0x1ac0('0x1b')]=undefined;}if(!_0xbb1b35){setTimeout(this[_0x1ac0('0x10')][_0x1ac0('0x9')](this),0x3e8);}};function rrmemory(_0xa7b9c9,_0x18a5bc,_0x5d3db6,_0x139234){return new RRMemory(_0xa7b9c9,_0x18a5bc,_0x5d3db6,_0x139234);}module[_0x1ac0('0x21')]=rrmemory;
\ No newline at end of file
+var _0x7105=['handleDrained','prototype','handleCheckReject','isAgentAvailable','agentId','channel','info','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done','mapAgentsId','isNil','agents','name','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','busy','busyQueue','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','queue','realtime','routing','push','handleRun','bind','handleTimeout','module','timeout','drained'];(function(_0x16d7c5,_0xf877ec){var _0x370ba2=function(_0x314910){while(--_0x314910){_0x16d7c5['push'](_0x16d7c5['shift']());}};_0x370ba2(++_0xf877ec);}(_0x7105,0x90));var _0x5710=function(_0x5d5e1b,_0x522e3d){_0x5d5e1b=_0x5d5e1b-0x0;var _0x411ed0=_0x7105[_0x5d5e1b];return _0x411ed0;};'use strict';var rr=require('rr');var _=require(_0x5710('0x0'));var uuid=require(_0x5710('0x1'));var util=require(_0x5710('0x2'));var logger=require(_0x5710('0x3'))('routing');var RRMemory=function(_0x5a80dd,_0x363417,_0x45e7d4,_0x45968b){this[_0x5710('0x4')]=uuid['v4']();this[_0x5710('0x5')]=_0x5a80dd;this[_0x5710('0x6')]=_0x363417;this[_0x5710('0x7')]=_0x45e7d4;this[_0x5710('0x8')]=_0x45968b;this['intervals']={};this[_0x5710('0x5')][_0x5710('0x9')](this[_0x5710('0xa')][_0x5710('0xb')](this),this[_0x5710('0xc')][_0x5710('0xb')](this),this[_0x5710('0xd')]);this[_0x5710('0x5')]['on'](_0x5710('0xe'),this[_0x5710('0xc')][_0x5710('0xb')](this));this[_0x5710('0x5')]['on'](_0x5710('0xf'),this[_0x5710('0x10')][_0x5710('0xb')](this));};RRMemory[_0x5710('0x11')][_0x5710('0x9')]=function(){this[_0x5710('0x5')][_0x5710('0x9')](this['handleRun'][_0x5710('0xb')](this),this['handleTimeout'][_0x5710('0xb')](this));};RRMemory[_0x5710('0x11')]['handleDrained']=function(_0x532af0){this[_0x5710('0xc')](!![]);};RRMemory[_0x5710('0x11')][_0x5710('0x12')]=function(_0x1f824c){if(util[_0x5710('0x13')](this[_0x5710('0x5')]['id'],this['realtime']['agents'][this[_0x5710('0x14')]],this['squeue'][_0x5710('0x15')],!![])){logger[_0x5710('0x16')](_0x5710('0x17'),this[_0x5710('0x5')]['id'],this[_0x5710('0x14')]);clearInterval(this[_0x5710('0x18')][this[_0x5710('0x14')]]);_0x1f824c[_0x5710('0x19')]();setTimeout(this[_0x5710('0x9')][_0x5710('0xb')](this),0x3e8);}};RRMemory['prototype'][_0x5710('0xa')]=function(_0x3ca76c){this[_0x5710('0x14')]=rr(this['queue'][_0x5710('0x1a')]);logger[_0x5710('0x16')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x5710('0x5')]['id'],this['agentId']);if(_[_0x5710('0x1b')](this['realtime'][_0x5710('0x1c')][this[_0x5710('0x14')]])){logger[_0x5710('0x16')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x5710('0x5')]['id'],this[_0x5710('0x14')]);_0x3ca76c[_0x5710('0x19')]();setTimeout(this[_0x5710('0x9')][_0x5710('0xb')](this),0x3e8);}else{if(util[_0x5710('0x13')](this['squeue']['id'],this['realtime'][_0x5710('0x1c')][this[_0x5710('0x14')]],this[_0x5710('0x5')]['channel'],!![])){this['realtime'][_0x5710('0x1c')][this[_0x5710('0x14')]]['busy']=!![];this[_0x5710('0x7')][_0x5710('0x1c')][this['agentId']]['busyQueue']=this['queue'][_0x5710('0x1d')];util['showNotification'](this[_0x5710('0x4')],this['squeue']['id'],this['realtime'][_0x5710('0x1c')][this['agentId']],this[_0x5710('0x6')],this[_0x5710('0x8')]);util[_0x5710('0x1e')](this['squeue']['id'],this['realtime'][_0x5710('0x1c')][this[_0x5710('0x14')]],_0x5710('0x1f'));this[_0x5710('0x18')][this[_0x5710('0x14')]]=setInterval(this['handleCheckReject']['bind'](this,_0x3ca76c),0x3e8);}else{logger[_0x5710('0x16')](_0x5710('0x20'),this[_0x5710('0x5')]['id'],this[_0x5710('0x14')]);_0x3ca76c[_0x5710('0x19')]();setTimeout(this[_0x5710('0x9')][_0x5710('0xb')](this),0x3e8);}}};RRMemory[_0x5710('0x11')][_0x5710('0xc')]=function(_0xd33722){logger[_0x5710('0x16')](_0x5710('0x21'),this['squeue']['id'],this[_0x5710('0x14')]);if(_[_0x5710('0x1b')](this[_0x5710('0x7')][_0x5710('0x1c')][this[_0x5710('0x14')]])){logger[_0x5710('0x16')](_0x5710('0x22'),this[_0x5710('0x5')]['id'],this[_0x5710('0x14')]);}else{clearInterval(this['intervals'][this[_0x5710('0x14')]]);util[_0x5710('0x23')](this[_0x5710('0x4')],this[_0x5710('0x5')]['id'],this[_0x5710('0x7')][_0x5710('0x1c')][this[_0x5710('0x14')]],this[_0x5710('0x6')],this[_0x5710('0x8')]);util[_0x5710('0x1e')](this[_0x5710('0x5')]['id'],this[_0x5710('0x7')][_0x5710('0x1c')][this[_0x5710('0x14')]],_0x5710('0x24'));this['realtime'][_0x5710('0x1c')][this['agentId']][_0x5710('0x25')]=![];this[_0x5710('0x7')][_0x5710('0x1c')][this[_0x5710('0x14')]][_0x5710('0x26')]=undefined;}if(!_0xd33722){setTimeout(this[_0x5710('0x9')][_0x5710('0xb')](this),0x3e8);}};function rrmemory(_0x5607e1,_0x426995,_0x4dc4a8,_0x19a11a){return new RRMemory(_0x5607e1,_0x426995,_0x4dc4a8,_0x19a11a);}module[_0x5710('0x27')]=rrmemory;
\ No newline at end of file
index 71e0f16..75cb7da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['defaults','socket.io-emitter','name','emit','split','\x20interaction','account','notificationShake','queue','body','notificationTemplate','msg','error','message','format','user:%s','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','lodash','util','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis'];(function(_0x335271,_0x5025f2){var _0xa9fff8=function(_0x28d0bd){while(--_0x28d0bd){_0x335271['push'](_0x335271['shift']());}};_0xa9fff8(++_0x5025f2);}(_0x66fa,0x117));var _0xa66f=function(_0x1b8cb5,_0x2819f3){_0x1b8cb5=_0x1b8cb5-0x0;var _0x59d1f7=_0x66fa[_0x1b8cb5];return _0x59d1f7;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var utils=require('../utils');var Mustache=require(_0xa66f('0x2'));var Redis=require(_0xa66f('0x3'));var config=require(_0xa66f('0x4'));var logger=require(_0xa66f('0x5'))(_0xa66f('0x6'));config[_0xa66f('0x7')]=_[_0xa66f('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xa66f('0x9'))(new Redis(config[_0xa66f('0x7')]));function emit(_0x2f0b78,_0x1d02fc,_0x38b58b){io['to'](_0x2f0b78)['emit'](_0x1d02fc,_0x38b58b);}function sendNotification(_0x39c1ef,_0x4f6717,_0x46c788,_0x597c7c,_0x101e10,_0x53ca76){io['to'](util['format']('user:%s',_0x597c7c[_0xa66f('0xa')]))[_0xa66f('0xb')]('user:save',_0x597c7c);var _0x14d31e=_0x53ca76||{};var _0x4cd893=_0x46c788[_0xa66f('0xc')]('.');var _0x5c008d={'uniqueid':_0x4f6717,'channel':_0x4cd893[0x0],'id':_0x4cd893[0x1],'title':_0x4cd893[0x0]+_0xa66f('0xd'),'interactionId':_0x4cd893[0x2],'queue':_0x101e10?_0x101e10[_0xa66f('0xa')]:null,'sound':_0x14d31e[_0xa66f('0xe')]['notificationSound'],'shake':_0x14d31e['account'][_0xa66f('0xf')]};try{if(!_0x14d31e['body']){_0x14d31e['body']={};}if(_0x101e10){_0x14d31e['body'][_0xa66f('0x10')]=_0x101e10;}else if(_0x14d31e[_0xa66f('0x11')][_0xa66f('0x10')]){delete _0x14d31e[_0xa66f('0x11')][_0xa66f('0x10')];}_0x5c008d['msg']=utils['getMustacheRender'](_0x14d31e[_0xa66f('0xe')][_0xa66f('0x12')],_0x14d31e);}catch(_0x295acf){_0x5c008d[_0xa66f('0x13')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0xa66f('0x14')](util['format']('[%s][QUEUE]\x20%s',_0x4f6717,_0x295acf[_0xa66f('0x15')]));}io['to'](util[_0xa66f('0x16')](_0xa66f('0x17'),_0x597c7c[_0xa66f('0xa')]))[_0xa66f('0xb')](util[_0xa66f('0x16')](_0xa66f('0x18'),_0x39c1ef?_0xa66f('0x19'):_0xa66f('0x1a')),_0x5c008d);}function writeLog(_0x2d9602,_0x235b61,_0xbba376){return logger[_0xa66f('0x1b')](util[_0xa66f('0x16')](_0xa66f('0x1c'),_0x2d9602,_0x235b61['name'],_0xbba376));}exports[_0xa66f('0x1d')]=function(_0xc5c82e,_0x40ee00,_0x37ee13,_0x5cbd82){if(_0x40ee00[_0xa66f('0x1e')]){writeLog(_0xc5c82e,_0x40ee00,_0xa66f('0x1f'));return![];}if(!_0x40ee00[_0xa66f('0x20')]){writeLog(_0xc5c82e,_0x40ee00,_0xa66f('0x21'));return![];}if(_0x40ee00[_0x37ee13+'Pause']){writeLog(_0xc5c82e,_0x40ee00,'PAUSE');return![];}if(_0x5cbd82&&_0x40ee00[_0xa66f('0x22')](_0x37ee13+'Capacity')&&_0x40ee00[_0xa66f('0x22')](_0x37ee13+_0xa66f('0x23'))){if(_0x40ee00[_0x37ee13+_0xa66f('0x24')]>0x0&&_0x40ee00[_0x37ee13+'CurrentCapacity']>=_0x40ee00[_0x37ee13+_0xa66f('0x24')]){writeLog(_0xc5c82e,_0x40ee00,_0x37ee13[_0xa66f('0x25')]()+_0xa66f('0x26'));return![];}}return!![];};exports[_0xa66f('0x27')]=function(_0x17c103,_0x236046,_0x1eb86a,_0xea2c89,_0x20ee67){return sendNotification(!![],_0x17c103,_0x236046,_0x1eb86a,_0xea2c89,_0x20ee67);};exports[_0xa66f('0x28')]=function(_0x45f71c,_0x63650b,_0x42b966,_0xeeb22e,_0x49f615){return sendNotification(![],_0x45f71c,_0x63650b,_0x42b966,_0xeeb22e,_0x49f615);};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0x4fb4=['isAgentAvailable','busy','BUSY','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','format','user:%s','name','user:save','split','\x20interaction','account','notificationShake','body','queue','msg','getMustacheRender','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','save','remove','info'];(function(_0x3b0358,_0x33128f){var _0x4361fa=function(_0x36cadf){while(--_0x36cadf){_0x3b0358['push'](_0x3b0358['shift']());}};_0x4361fa(++_0x33128f);}(_0x4fb4,0x190));var _0x44fb=function(_0x449330,_0x36cbd0){_0x449330=_0x449330-0x0;var _0x29c1df=_0x4fb4[_0x449330];return _0x29c1df;};'use strict';var _=require('lodash');var util=require(_0x44fb('0x0'));var utils=require(_0x44fb('0x1'));var Mustache=require(_0x44fb('0x2'));var Redis=require(_0x44fb('0x3'));var config=require(_0x44fb('0x4'));var logger=require(_0x44fb('0x5'))('routing');config[_0x44fb('0x6')]=_[_0x44fb('0x7')](config[_0x44fb('0x6')],{'host':_0x44fb('0x8'),'port':0x18eb});var io=require(_0x44fb('0x9'))(new Redis(config[_0x44fb('0x6')]));function emit(_0x464af5,_0x2a4d75,_0x59aa6d){io['to'](_0x464af5)[_0x44fb('0xa')](_0x2a4d75,_0x59aa6d);}function sendNotification(_0xd4ead0,_0x5405a8,_0x42fcc2,_0x3d9002,_0x2a1cb7,_0x34444f){io['to'](util[_0x44fb('0xb')](_0x44fb('0xc'),_0x3d9002[_0x44fb('0xd')]))[_0x44fb('0xa')](_0x44fb('0xe'),_0x3d9002);var _0x2ae684=_0x34444f||{};var _0x4b202d=_0x42fcc2[_0x44fb('0xf')]('.');var _0x1e8a60={'uniqueid':_0x5405a8,'channel':_0x4b202d[0x0],'id':_0x4b202d[0x1],'title':_0x4b202d[0x0]+_0x44fb('0x10'),'interactionId':_0x4b202d[0x2],'queue':_0x2a1cb7?_0x2a1cb7[_0x44fb('0xd')]:null,'sound':_0x2ae684[_0x44fb('0x11')]['notificationSound'],'shake':_0x2ae684[_0x44fb('0x11')][_0x44fb('0x12')]};try{if(!_0x2ae684[_0x44fb('0x13')]){_0x2ae684[_0x44fb('0x13')]={};}if(_0x2a1cb7){_0x2ae684[_0x44fb('0x13')]['queue']=_0x2a1cb7;}else if(_0x2ae684[_0x44fb('0x13')][_0x44fb('0x14')]){delete _0x2ae684[_0x44fb('0x13')][_0x44fb('0x14')];}_0x1e8a60[_0x44fb('0x15')]=utils[_0x44fb('0x16')](_0x2ae684[_0x44fb('0x11')]['notificationTemplate'],_0x2ae684);}catch(_0x2c622f){_0x1e8a60[_0x44fb('0x15')]=_0x44fb('0x17');logger[_0x44fb('0x18')](util[_0x44fb('0xb')](_0x44fb('0x19'),_0x5405a8,_0x2c622f[_0x44fb('0x1a')]));}io['to'](util[_0x44fb('0xb')](_0x44fb('0xc'),_0x3d9002[_0x44fb('0xd')]))['emit'](util['format']('notification:%s',_0xd4ead0?_0x44fb('0x1b'):_0x44fb('0x1c')),_0x1e8a60);}function writeLog(_0x2dd412,_0x544647,_0x52507a){return logger[_0x44fb('0x1d')](util[_0x44fb('0xb')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x2dd412,_0x544647['name'],_0x52507a));}exports[_0x44fb('0x1e')]=function(_0x5cf7ec,_0x441d79,_0x4fc66d,_0x954b1d){if(_0x441d79[_0x44fb('0x1f')]){writeLog(_0x5cf7ec,_0x441d79,_0x44fb('0x20'));return![];}if(!_0x441d79['online']){writeLog(_0x5cf7ec,_0x441d79,'OFFLINE');return![];}if(_0x441d79[_0x4fc66d+_0x44fb('0x21')]){writeLog(_0x5cf7ec,_0x441d79,_0x44fb('0x22'));return![];}if(_0x954b1d&&_0x441d79[_0x44fb('0x23')](_0x4fc66d+_0x44fb('0x24'))&&_0x441d79['hasOwnProperty'](_0x4fc66d+_0x44fb('0x25'))){if(_0x441d79[_0x4fc66d+_0x44fb('0x24')]>0x0&&_0x441d79[_0x4fc66d+'CurrentCapacity']>=_0x441d79[_0x4fc66d+'Capacity']){writeLog(_0x5cf7ec,_0x441d79,_0x4fc66d[_0x44fb('0x26')]()+_0x44fb('0x27'));return![];}}return!![];};exports[_0x44fb('0x28')]=function(_0x1f5d4c,_0xb7e5e8,_0x15e748,_0x2ce72d,_0x35652e){return sendNotification(!![],_0x1f5d4c,_0xb7e5e8,_0x15e748,_0x2ce72d,_0x35652e);};exports[_0x44fb('0x29')]=function(_0x4f079d,_0x48eb7d,_0x587984,_0x51b40e,_0x4a957f){return sendNotification(![],_0x4f079d,_0x48eb7d,_0x587984,_0x51b40e,_0x4a957f);};exports[_0x44fb('0x2a')]=writeLog;
\ No newline at end of file
index 451ced2..b9db954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf296=['[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','isObject','next','validate','shelljs','./utils','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','error'];(function(_0x1600f5,_0x5885bc){var _0x249571=function(_0xc765a7){while(--_0xc765a7){_0x1600f5['push'](_0x1600f5['shift']());}};_0x249571(++_0x5885bc);}(_0xf296,0x94));var _0x6f29=function(_0x26224c,_0x1a354c){_0x26224c=_0x26224c-0x0;var _0x4c2bc5=_0xf296[_0x26224c];return _0x4c2bc5;};'use strict';var schema=require(_0x6f29('0x0'));var sh=require(_0x6f29('0x1'));var _=require('lodash');var utils=require(_0x6f29('0x2'));var logger=require('../../../../config/logger')('routing');var system=schema({'command':{'type':_0x6f29('0x3'),'required':!![],'message':_0x6f29('0x4')}});exports['consequence']=function(_0x15e80c,_0x209362){return function(_0xd7ee7b){try{var _0x4f0712={'command':_0x209362[0x0]};var _0x1d9c3f=system[_0x6f29('0x0')](_0x4f0712,{'typecast':!![]});if(_0x1d9c3f['length']){logger[_0x6f29('0x5')](_0x6f29('0x6'),_0x15e80c,_[_0x6f29('0x7')](_0x1d9c3f,_0x6f29('0x8'))[_0x6f29('0x9')](',\x20'));logger[_0x6f29('0xa')](_0x6f29('0xb'),_0x15e80c);_0xd7ee7b['next']();}else{var _0x53db5d=this;var _0xbf45fd=utils['getMustacheRender'](_0x209362[0x0],this);logger['info'](_0x6f29('0xc'),_0x15e80c,_0xbf45fd);sh['exec'](_[_0x6f29('0xd')](_0xbf45fd),function(_0xbc9ee6,_0xa8cf8){logger['info'](_0x6f29('0xe'),_0x15e80c,_0xbc9ee6);if(_0xbc9ee6==0x0){var _0x3cec2a=_0xa8cf8[_0x6f29('0xf')](/(\r\n|\n|\r)/gm,'');if(_[_0x6f29('0x10')](_0x209362[0x1])||_[_0x6f29('0x11')](_0x209362[0x1])){logger['info'](_0x6f29('0x12'),_0x15e80c);_0x53db5d[_0x6f29('0x13')][_0x209362[0x1]]=_0x3cec2a;}else{logger[_0x6f29('0xa')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x15e80c,_0x209362[0x1],_0x3cec2a);_0x53db5d[_0x6f29('0x13')][_0x209362[0x1]]=_0x3cec2a;}}_0xd7ee7b['next']();});}}catch(_0x3959e4){logger[_0x6f29('0x5')](_0x6f29('0x6'),_0x15e80c,_[_0x6f29('0x14')](_0x3959e4)?JSON['stringify'](_0x3959e4):_0x3959e4);logger['info'](_0x6f29('0xb'),_0x15e80c);_0xd7ee7b[_0x6f29('0x15')]();}};};
\ No newline at end of file
+var _0x0d62=['command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','message','info','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','next','[%s][SYSTEM]\x20%s','isObject','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','shelljs','lodash','../../../../config/logger','routing','string'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0d62,0x10f));var _0x20d6=function(_0x424501,_0x42096d){_0x424501=_0x424501-0x0;var _0xb719af=_0x0d62[_0x424501];return _0xb719af;};'use strict';var schema=require('validate');var sh=require(_0x20d6('0x0'));var _=require(_0x20d6('0x1'));var utils=require('./utils');var logger=require(_0x20d6('0x2'))(_0x20d6('0x3'));var system=schema({'command':{'type':_0x20d6('0x4'),'required':!![],'message':_0x20d6('0x5')}});exports[_0x20d6('0x6')]=function(_0x4aa1ec,_0x3185b2){return function(_0x31e34f){try{var _0x43e94b={'command':_0x3185b2[0x0]};var _0x37fc73=system['validate'](_0x43e94b,{'typecast':!![]});if(_0x37fc73[_0x20d6('0x7')]){logger['error']('[%s][SYSTEM]\x20%s',_0x4aa1ec,_['map'](_0x37fc73,_0x20d6('0x8'))['join'](',\x20'));logger[_0x20d6('0x9')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4aa1ec);_0x31e34f['next']();}else{var _0x59ac9c=this;var _0xc4dbf9=utils[_0x20d6('0xa')](_0x3185b2[0x0],this);logger[_0x20d6('0x9')](_0x20d6('0xb'),_0x4aa1ec,_0xc4dbf9);sh[_0x20d6('0xc')](_['trim'](_0xc4dbf9),function(_0xbc4d73,_0x416345){logger[_0x20d6('0x9')](_0x20d6('0xd'),_0x4aa1ec,_0xbc4d73);if(_0xbc4d73==0x0){var _0x47986a=_0x416345['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x20d6('0xe')](_0x3185b2[0x1])||_[_0x20d6('0xf')](_0x3185b2[0x1])){logger[_0x20d6('0x9')]('[%s][SYSTEM]\x20no\x20variable',_0x4aa1ec);_0x59ac9c[_0x20d6('0x10')][_0x3185b2[0x1]]=_0x47986a;}else{logger[_0x20d6('0x9')](_0x20d6('0x11'),_0x4aa1ec,_0x3185b2[0x1],_0x47986a);_0x59ac9c[_0x20d6('0x10')][_0x3185b2[0x1]]=_0x47986a;}}_0x31e34f[_0x20d6('0x12')]();});}}catch(_0x4f089d){logger['error'](_0x20d6('0x13'),_0x4aa1ec,_[_0x20d6('0x14')](_0x4f089d)?JSON[_0x20d6('0x15')](_0x4f089d):_0x4f089d);logger[_0x20d6('0x9')](_0x20d6('0x16'),_0x4aa1ec);_0x31e34f[_0x20d6('0x12')]();}};};
\ No newline at end of file
index cb40871..eb4c70e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ef=['[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','isObject','stringify','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','Interaction','channel','addTags','interaction','then'];(function(_0x1a7d09,_0x4c25a6){var _0x3d498e=function(_0x5ccc9e){while(--_0x5ccc9e){_0x1a7d09['push'](_0x1a7d09['shift']());}};_0x3d498e(++_0x4c25a6);}(_0x04ef,0x100));var _0xf04e=function(_0x17d02a,_0x1d02d9){_0x17d02a=_0x17d02a-0x0;var _0x3b5d09=_0x04ef[_0x17d02a];return _0x3b5d09;};'use strict';var schema=require(_0xf04e('0x0'));var _=require(_0xf04e('0x1'));var rpc={'chatInteraction':require(_0xf04e('0x2')),'openchannelInteraction':require(_0xf04e('0x3')),'smsInteraction':require(_0xf04e('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xf04e('0x5')),'whatsappInteraction':require(_0xf04e('0x6'))};var logger=require('../../../../config/logger')(_0xf04e('0x7'));var tag=schema({'tag':{'type':_0xf04e('0x8'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xf04e('0x9')]=function(_0x1ea6b7,_0x42f297,_0x301b0f,_0x5494a8){return function(_0x44d642){try{var _0x2f6d0b={'tag':_0x42f297[0x0]};var _0x1223a9=tag[_0xf04e('0x0')](_0x2f6d0b,{'typecast':!![]});if(_0x1223a9[_0xf04e('0xa')]){logger[_0xf04e('0xb')](_0xf04e('0xc'),_0x1ea6b7,_[_0xf04e('0xd')](_0x1223a9,_0xf04e('0xe'))[_0xf04e('0xf')](',\x20'));logger[_0xf04e('0x10')](_0xf04e('0x11'),_0x1ea6b7);_0x44d642[_0xf04e('0x12')]();}else{var _0x2b8aef={'ids':[_0x42f297[0x0]]};if(rpc[_0x5494a8['channel']+_0xf04e('0x13')]){rpc[_0x5494a8[_0xf04e('0x14')]+_0xf04e('0x13')][_0xf04e('0x15')](_0x5494a8[_0xf04e('0x16')]['id'],_0x2b8aef)[_0xf04e('0x17')](function(_0x425b7b){logger[_0xf04e('0x10')](_0xf04e('0x18'),_0x1ea6b7,_0x42f297[0x1],_0x5494a8[_0xf04e('0x14')],_0x5494a8[_0xf04e('0x16')]['id']);})[_0xf04e('0x19')](function(_0x3a339c){logger[_0xf04e('0xb')]('[%s][TAG]\x20%s',_0x1ea6b7,JSON['stringify'](_0x3a339c));logger[_0xf04e('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x1ea6b7);})['finally'](function(){_0x44d642['next']();});}}}catch(_0x19cca7){logger[_0xf04e('0xb')](_0xf04e('0xc'),_0x1ea6b7,_[_0xf04e('0x1a')](_0x19cca7)?JSON[_0xf04e('0x1b')](_0x19cca7):_0x19cca7);logger['info'](_0xf04e('0x11'),_0x1ea6b7);_0x44d642[_0xf04e('0x12')]();}};};
\ No newline at end of file
+var _0xb5b4=['TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','Interaction','addTags','interaction','then','stringify','finally','next','isObject','validate','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../../../config/logger','routing'];(function(_0x27912d,_0x21623a){var _0x2a7b87=function(_0x2d9c6a){while(--_0x2d9c6a){_0x27912d['push'](_0x27912d['shift']());}};_0x2a7b87(++_0x21623a);}(_0xb5b4,0x198));var _0x4b5b=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0xb5b4[_0x37a9d7];return _0x1343d3;};'use strict';var schema=require(_0x4b5b('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x4b5b('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x4b5b('0x2')),'mailInteraction':require(_0x4b5b('0x3')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require(_0x4b5b('0x4'))(_0x4b5b('0x5'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x4b5b('0x6')}});exports[_0x4b5b('0x7')]=function(_0x516555,_0x17bcea,_0x284b4f,_0x18dd36){return function(_0x26b4dd){try{var _0x40728b={'tag':_0x17bcea[0x0]};var _0x1aabf8=tag[_0x4b5b('0x0')](_0x40728b,{'typecast':!![]});if(_0x1aabf8[_0x4b5b('0x8')]){logger[_0x4b5b('0x9')](_0x4b5b('0xa'),_0x516555,_['map'](_0x1aabf8,_0x4b5b('0xb'))[_0x4b5b('0xc')](',\x20'));logger[_0x4b5b('0xd')](_0x4b5b('0xe'),_0x516555);_0x26b4dd['next']();}else{var _0x3bb472={'ids':[_0x17bcea[0x0]]};if(rpc[_0x18dd36['channel']+_0x4b5b('0xf')]){rpc[_0x18dd36['channel']+_0x4b5b('0xf')][_0x4b5b('0x10')](_0x18dd36[_0x4b5b('0x11')]['id'],_0x3bb472)[_0x4b5b('0x12')](function(_0x1eba32){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x516555,_0x17bcea[0x1],_0x18dd36['channel'],_0x18dd36[_0x4b5b('0x11')]['id']);})['catch'](function(_0x8911d2){logger[_0x4b5b('0x9')]('[%s][TAG]\x20%s',_0x516555,JSON[_0x4b5b('0x13')](_0x8911d2));logger[_0x4b5b('0xd')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x516555);})[_0x4b5b('0x14')](function(){_0x26b4dd[_0x4b5b('0x15')]();});}}}catch(_0x98dead){logger['error']('[%s][TAG]\x20%s',_0x516555,_[_0x4b5b('0x16')](_0x98dead)?JSON[_0x4b5b('0x13')](_0x98dead):_0x98dead);logger[_0x4b5b('0xd')](_0x4b5b('0xe'),_0x516555);_0x26b4dd[_0x4b5b('0x15')]();}};};
\ No newline at end of file
index be3982a..baef514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x494a=['&data=','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','error','[%s][TVOX]\x20%s','stop','request-promise','lodash','consequence','replace','\x20-\x20','includes','?params=','urlOnRing','title','jsonrpc','2.0','method','login','push','stringify','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId='];(function(_0x3e182f,_0x380ec7){var _0x23edc9=function(_0x3ca65e){while(--_0x3ca65e){_0x3e182f['push'](_0x3e182f['shift']());}};_0x23edc9(++_0x380ec7);}(_0x494a,0x13c));var _0xa494=function(_0x2e0a04,_0x6ec53){_0x2e0a04=_0x2e0a04-0x0;var _0x378cb4=_0x494a[_0x2e0a04];return _0x378cb4;};'use strict';var rp=require(_0xa494('0x0'));var logger=require('../../../../config/logger')('routing');var _=require(_0xa494('0x1'));var arr=[];exports[_0xa494('0x2')]=function(_0x917f7c,_0xad29ca){return function(_0x2af400){var _0x5aed12=_0xad29ca[0xa];var _0x39522d=_0xad29ca[0xb];var _0x28cd7e=_0xad29ca[0xc];var _0x32147f=_0xad29ca[0xd];var _0x391c4e=_0xad29ca[0xe];var _0x1704fc=_0xad29ca[0xf][_0xa494('0x3')](/\n/g,_0xa494('0x4'));var _0x32aa66=_0xad29ca[0x10][_0xa494('0x3')](/\n/g,'\x20');if(!arr[_0xa494('0x5')](_0x39522d)){arr['push'](_0x39522d);var _0x3c9b1b=_0xad29ca[0x3];var _0xca382c=_0xad29ca[0x4];var _0x8823e8=_0xad29ca[0x1];var _0x582674=_0xad29ca[0x0];var _0x35c315={};_0x35c315['urlOnAnswer']=_0xad29ca[0x8]+_0xa494('0x6')+_0x28cd7e+'|'+_0x5aed12+'|'+_0x32147f+'|'+_0x39522d+'|'+_0x391c4e;_0x35c315[_0xa494('0x7')]=_0xad29ca[0x7]+'?params='+_0x28cd7e+'|'+_0x5aed12+'|'+_0x32147f+'|'+_0x39522d+'|'+_0x391c4e+'|'+_0x1704fc+'|'+_0x32aa66;_0x35c315[_0xa494('0x8')]=_0xad29ca[0x9];var _0x4c65c0={};_0x4c65c0[_0xa494('0x9')]=_0xa494('0xa');_0x4c65c0[_0xa494('0xb')]=_0xa494('0xc');var _0x39e6b6=[];_0x39e6b6[_0xa494('0xd')](_0xad29ca[0x2]);_0x39e6b6['push'](_0xad29ca[0x5]);_0x39e6b6['push'](_0xad29ca[0x6]);_0x4c65c0['params']=_0x39e6b6;_0x4c65c0['id']=0x1;var _0x2c594a=JSON[_0xa494('0xe')](_0x4c65c0);var _0x2e72f2={'encoding':'utf8','method':_0xa494('0xf'),'timeout':0x2710,'url':_0x3c9b1b,'headers':{'Content-Type':_0xa494('0x10')},'body':_0x2c594a};return rp(_0x2e72f2)[_0xa494('0x11')](function(_0x467573){const _0xb8a562=JSON[_0xa494('0x12')](_0x467573);if(!_0xb8a562[_0xa494('0x13')][_0xa494('0x14')]){throw new Error(_0xa494('0x15'));}var _0x27229b=_0x39522d;var _0x4fd2c3=_0xa494('0x16')+_0x8823e8+_0xa494('0x17')+_0x582674+_0xa494('0x18')+_0x27229b+_0xa494('0x19')+JSON[_0xa494('0xe')](_0x35c315);var _0x1aacf9=_0xca382c+'?'+_0x4fd2c3;return rp(_0x1aacf9);})['then'](function(_0x1c680a){logger['info'](_0xa494('0x1a'),_0x917f7c,_0x1c680a);_0x2af400['stop']();})[_0xa494('0x1b')](function(_0x353a36){logger[_0xa494('0x1c')](_0xa494('0x1d'),_0x917f7c,_['isObject'](_0x353a36)?JSON['stringify'](_0x353a36):_0x353a36);_0x2af400[_0xa494('0x1e')]();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x917f7c);_0x2af400['next']();}};};
\ No newline at end of file
+var _0x0ed9=['\x20-\x20','includes','urlOnAnswer','?params=','title','jsonrpc','2.0','method','push','stringify','utf8','POST','application/json-rpc','then','result','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%s][TVOX]\x20%s','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','request-promise','routing','lodash','replace'];(function(_0x3cbac5,_0x2b681d){var _0x30b9eb=function(_0x3d04cc){while(--_0x3d04cc){_0x3cbac5['push'](_0x3cbac5['shift']());}};_0x30b9eb(++_0x2b681d);}(_0x0ed9,0x130));var _0x90ed=function(_0x5bc18d,_0x4a1372){_0x5bc18d=_0x5bc18d-0x0;var _0x32a08e=_0x0ed9[_0x5bc18d];return _0x32a08e;};'use strict';var rp=require(_0x90ed('0x0'));var logger=require('../../../../config/logger')(_0x90ed('0x1'));var _=require(_0x90ed('0x2'));var arr=[];exports['consequence']=function(_0x3645cd,_0x20eb66){return function(_0x2d01fd){var _0xaec6dd=_0x20eb66[0xa];var _0x111172=_0x20eb66[0xb];var _0x2c9903=_0x20eb66[0xc];var _0x5a8c32=_0x20eb66[0xd];var _0xf413fb=_0x20eb66[0xe];var _0x1fd1bb=_0x20eb66[0xf][_0x90ed('0x3')](/\n/g,_0x90ed('0x4'));var _0x1005fc=_0x20eb66[0x10]['replace'](/\n/g,'\x20');if(!arr[_0x90ed('0x5')](_0x111172)){arr['push'](_0x111172);var _0x1dd7f8=_0x20eb66[0x3];var _0x55d065=_0x20eb66[0x4];var _0x37e6de=_0x20eb66[0x1];var _0x185c41=_0x20eb66[0x0];var _0x4e1b73={};_0x4e1b73[_0x90ed('0x6')]=_0x20eb66[0x8]+_0x90ed('0x7')+_0x2c9903+'|'+_0xaec6dd+'|'+_0x5a8c32+'|'+_0x111172+'|'+_0xf413fb;_0x4e1b73['urlOnRing']=_0x20eb66[0x7]+_0x90ed('0x7')+_0x2c9903+'|'+_0xaec6dd+'|'+_0x5a8c32+'|'+_0x111172+'|'+_0xf413fb+'|'+_0x1fd1bb+'|'+_0x1005fc;_0x4e1b73[_0x90ed('0x8')]=_0x20eb66[0x9];var _0x228960={};_0x228960[_0x90ed('0x9')]=_0x90ed('0xa');_0x228960[_0x90ed('0xb')]='login';var _0x1c3c09=[];_0x1c3c09['push'](_0x20eb66[0x2]);_0x1c3c09[_0x90ed('0xc')](_0x20eb66[0x5]);_0x1c3c09[_0x90ed('0xc')](_0x20eb66[0x6]);_0x228960['params']=_0x1c3c09;_0x228960['id']=0x1;var _0x1f3ae5=JSON[_0x90ed('0xd')](_0x228960);var _0x3e0d76={'encoding':_0x90ed('0xe'),'method':_0x90ed('0xf'),'timeout':0x2710,'url':_0x1dd7f8,'headers':{'Content-Type':_0x90ed('0x10')},'body':_0x1f3ae5};return rp(_0x3e0d76)[_0x90ed('0x11')](function(_0x1475ab){const _0x43ecfb=JSON['parse'](_0x1475ab);if(!_0x43ecfb[_0x90ed('0x12')]['logged']){throw new Error(_0x90ed('0x13'));}var _0x208dcd=_0x111172;var _0x58e1c8=_0x90ed('0x14')+_0x37e6de+'&serviceId='+_0x185c41+'&sessionId='+_0x208dcd+'&data='+JSON[_0x90ed('0xd')](_0x4e1b73);var _0x2e9d53=_0x55d065+'?'+_0x58e1c8;return rp(_0x2e9d53);})['then'](function(_0x2c8d6b){logger[_0x90ed('0x15')](_0x90ed('0x16'),_0x3645cd,_0x2c8d6b);_0x2d01fd[_0x90ed('0x17')]();})[_0x90ed('0x18')](function(_0x20a33d){logger[_0x90ed('0x19')](_0x90ed('0x1a'),_0x3645cd,_['isObject'](_0x20a33d)?JSON[_0x90ed('0xd')](_0x20a33d):_0x20a33d);_0x2d01fd['stop']();});}else{logger[_0x90ed('0x15')](_0x90ed('0x1b'),_0x3645cd);_0x2d01fd['next']();}};};
\ No newline at end of file
index e9fa918..f6867e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['message','account','interaction','mustache','lodash','exports','render','body','contact'];(function(_0x1813fd,_0x11abc1){var _0xd644f=function(_0x19a45f){while(--_0x19a45f){_0x1813fd['push'](_0x1813fd['shift']());}};_0xd644f(++_0x11abc1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'use strict';var Mustache=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'getMustacheRender':function(_0x5dd881,_0x550fbc){return Mustache[_0x0a9e('0x3')](_0x5dd881,_['merge'](_0x550fbc[_0x0a9e('0x4')],{'contact':_0x550fbc[_0x0a9e('0x5')],'message':_0x550fbc[_0x0a9e('0x6')],'account':_0x550fbc[_0x0a9e('0x7')],'interaction':_0x550fbc[_0x0a9e('0x8')],'list':_0x550fbc['list']}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x5163f2,_0x44ea33){var _0x4cad89=function(_0x30033c){while(--_0x30033c){_0x5163f2['push'](_0x5163f2['shift']());}};_0x4cad89(++_0x44ea33);}(_0xe706,0xa3));var _0x6e70=function(_0x362ad7,_0x948800){_0x362ad7=_0x362ad7-0x0;var _0x54703b=_0xe706[_0x362ad7];return _0x54703b;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 0ca5912..a5c192d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180f=['info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','Applications\x20executed','stringify','matchPath','emit','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','CurrentCapacity','agent\x20not\x20found','chatQueues','loggedIn','name','paused','mailQueues','available','waiting','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','values','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','bluebird','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','join','.js','app','autoreply','mail','push','slice','appdata','split','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','./interval','condition','intervals','priority'];(function(_0x5e882f,_0x3327b8){var _0x129ca0=function(_0x55a390){while(--_0x55a390){_0x5e882f['push'](_0x5e882f['shift']());}};_0x129ca0(++_0x3327b8);}(_0x180f,0xf3));var _0xf180=function(_0x1505e5,_0x5cc291){_0x1505e5=_0x1505e5-0x0;var _0x5b1dcd=_0x180f[_0x1505e5];return _0x5b1dcd;};'use strict';var _=require(_0xf180('0x0'));var util=require(_0xf180('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0xf180('0x2'));var BPromise=require(_0xf180('0x3'));var uuid=require('uuid');var utils=require(_0xf180('0x4'));var config=require(_0xf180('0x5'));var logger=require(_0xf180('0x6'))(_0xf180('0x7'));var rpc={'openchannelQueueReport':require(_0xf180('0x8')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0xf180('0x9')),'smsQueueReport':require(_0xf180('0xa')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0xf180('0xb'));function getId(_0x303412,_0x342a02,_0x3865c5){return util[_0xf180('0xc')](_0xf180('0xd'),_0x303412,_0x342a02||0x0,_0x3865c5||0x0);}function getIntervals(_0x2e85d1,_0x376190){var _0x3e3f62=[];if(!_['isNil'](_0x376190[_0xf180('0xe')])&&!_[_0xf180('0xf')](_0x2e85d1[_0x376190[_0xf180('0xe')]])&&!_[_0xf180('0xf')](_0x2e85d1[_0x376190[_0xf180('0xe')]][_0xf180('0x10')])){_0x3e3f62=_[_0xf180('0x11')](_0x2e85d1[_0x376190[_0xf180('0xe')]][_0xf180('0x10')],_0xf180('0x12'));}else if(!_[_0xf180('0xf')](_0x376190['interval'])){_0x3e3f62=[_0x376190[_0xf180('0x12')]];}return _0x3e3f62;}exports[_0xf180('0x13')]=function(_0x1eb0a2){_0x1eb0a2[_0xf180('0x14')]={};return new BPromise(function(_0x48b00e,_0x43add2){var _0x3d3f48={'Start':function(_0x1dbdcf){var _0x4ee79b=this;return new Promise(function(_0x105c6a,_0x726be6){if(_0x1dbdcf){try{var _0x496e65=[];var _0x115b86=getId(_0x1dbdcf[_0xf180('0x15')],_0x1dbdcf['message']?_0x1dbdcf[_0xf180('0x16')]['id']:0x0,_0x1dbdcf[_0xf180('0x17')]?_0x1dbdcf[_0xf180('0x17')]['id']:0x0);if(_0x1dbdcf[_0xf180('0x18')]&&_[_0xf180('0x19')](_0x1dbdcf[_0xf180('0x18')])&&_0x1dbdcf[_0xf180('0x18')][_0xf180('0x1a')]){for(var _0x26c9c0=0x0;_0x26c9c0<_0x1dbdcf[_0xf180('0x18')][_0xf180('0x1a')];_0x26c9c0+=0x1){var _0x373926=_0x1dbdcf[_0xf180('0x18')][_0x26c9c0];if(fs['existsSync'](path[_0xf180('0x1b')](__dirname,_0xf180('0x18'),_0x373926['app']+_0xf180('0x1c')))){var _0x538bac=[];switch(_0x373926[_0xf180('0x1d')]['toLowerCase']()){case _0xf180('0x1e'):var _0xfddadb=_0x373926['appdata']['split'](',');if(_0x1dbdcf[_0xf180('0x15')]===_0xf180('0x1f')){_0x538bac['push'](_0xfddadb[0x0]);_0x538bac[_0xf180('0x20')](_0xfddadb[0x1]);_0x538bac[_0xf180('0x20')](_0xfddadb[_0xf180('0x21')](0x2,_0xfddadb[_0xf180('0x1a')])[_0xf180('0x1b')](','));}else{_0x538bac[_0xf180('0x20')](_0xfddadb[0x0]);_0x538bac[_0xf180('0x20')](_0xfddadb[_0xf180('0x21')](0x1,_0xfddadb[_0xf180('0x1a')])[_0xf180('0x1b')](','));}break;case'dialogflow':var _0x3cda7b=_0x373926[_0xf180('0x22')][_0xf180('0x23')](',');_0x538bac[_0xf180('0x20')](_0x3cda7b[0x0]);_0x538bac[_0xf180('0x20')](_0x3cda7b[0x1]);_0x538bac[_0xf180('0x20')](_0x3cda7b[_0xf180('0x21')](0x2,_0x3cda7b[_0xf180('0x1a')])[_0xf180('0x1b')](','));break;case _0xf180('0x24'):var _0x564ce1=_0x373926[_0xf180('0x22')][_0xf180('0x23')](',');_0x538bac[_0xf180('0x20')](_0x564ce1[0x0]);_0x538bac[_0xf180('0x20')](_0x564ce1[0x1]);_0x538bac[_0xf180('0x20')](_0x564ce1[0x2]);_0x538bac[_0xf180('0x20')](_0x564ce1[0x3]);_0x538bac[_0xf180('0x20')](_0x564ce1[_0xf180('0x21')](0x4,_0x564ce1[_0xf180('0x1a')])[_0xf180('0x1b')](','));break;case _0xf180('0x25'):var _0x2702b1=_0x373926[_0xf180('0x22')][_0xf180('0x23')](',');_0x538bac['push'](_0x2702b1[0x0]);_0x538bac[_0xf180('0x20')](_0x2702b1[0x1]);_0x538bac[_0xf180('0x20')](_0x2702b1[0x2]);_0x538bac['push'](_0x2702b1[0x3]);_0x538bac[_0xf180('0x20')](_0x2702b1['slice'](0x4,_0x2702b1[_0xf180('0x1a')])[_0xf180('0x1b')](','));break;case _0xf180('0x16'):_0x538bac['push'](_0x373926[_0xf180('0x22')]);break;case _0xf180('0x26'):_0x538bac[_0xf180('0x20')](_0x373926[_0xf180('0x27')]);_0x538bac['push'](_0x373926[_0xf180('0x22')]);break;case _0xf180('0x28'):var _0x438d2c=utils[_0xf180('0x29')](_0x1dbdcf[_0xf180('0x2a')][_0xf180('0x2b')],_0x1dbdcf);var _0x3ec832=_0x373926[_0xf180('0x22')][_0xf180('0x23')](',');_0x538bac[_0xf180('0x20')](_0x3ec832[0x0]);_0x538bac['push'](_0x3ec832[0x1]);_0x538bac[_0xf180('0x20')](_0x3ec832[0x2]);_0x538bac['push'](_0x3ec832[0x3]);_0x538bac['push'](_0x3ec832[0x4]);_0x538bac[_0xf180('0x20')](_0x3ec832[0x5]);_0x538bac['push'](_0x3ec832[0x6]);_0x538bac['push'](_0x3ec832[0x7]);_0x538bac[_0xf180('0x20')](_0x3ec832[0x8]);_0x538bac[_0xf180('0x20')](_0x3ec832[0x9]);_0x538bac[_0xf180('0x20')](_0x3ec832[0xa]);_0x538bac[_0xf180('0x20')](_0x1dbdcf['interaction']['id']);_0x538bac['push'](_0x1dbdcf[_0xf180('0x16')]['id']);_0x538bac['push'](_0x373926[_0xf180('0x2c')]);_0x538bac['push'](_0x1dbdcf[_0xf180('0x17')][_0xf180('0x2d')]);_0x538bac[_0xf180('0x20')](_0x1dbdcf[_0xf180('0x2e')][_0xf180('0x2e')]);_0x538bac[_0xf180('0x20')](_0x438d2c);break;default:_0x538bac=_[_0xf180('0xf')](_0x373926[_0xf180('0x22')])?[]:_0x373926[_0xf180('0x22')]['split'](',');}var _0x389de4={'id':util[_0xf180('0xc')]('%s:%s:%s',_0x115b86,_0x373926['id'],_0x373926[_0xf180('0x1d')]),'condition':require(_0xf180('0x2f'))[_0xf180('0x30')](_0x115b86,getIntervals(_0x1eb0a2[_0xf180('0x31')],_0x373926),_0x1eb0a2),'consequence':require('./applications/'+_0x373926[_0xf180('0x1d')])['consequence'](_0x115b86,_0x538bac,_0x1eb0a2,_0x1dbdcf),'p':_0x373926[_0xf180('0x32')]||0x0};logger[_0xf180('0x33')](_0xf180('0x34'),_0x389de4['id'],_0xf180('0x35'),getIntervals(_0x1eb0a2['intervals'],_0x373926)['join'](_0xf180('0x36')));_0x496e65[_0xf180('0x20')](_0x389de4);}else{logger[_0xf180('0x37')](_0xf180('0x38'),path[_0xf180('0x1b')](__dirname,_0xf180('0x18'),_0x373926[_0xf180('0x1d')]+_0xf180('0x1c')));}}_0x1eb0a2[_0xf180('0x14')][_0x115b86]=new RuleEngine(_0x496e65);_0x1eb0a2[_0xf180('0x14')][_0x115b86]['execute'](_0x1dbdcf,function(_0x1c4821){logger['info'](_0xf180('0x39'),JSON[_0xf180('0x3a')](_0x1c4821[_0xf180('0x3b')]));if(_0x1eb0a2['rules'][_0x115b86]){_0x1eb0a2[_0xf180('0x14')][_0x115b86][_0xf180('0x3c')]('complete');}});return _0x105c6a({'code':0xc8,'message':_0x1dbdcf});}else{logger[_0xf180('0x33')](_0xf180('0x3d'));return _0x105c6a({'code':0xc8,'message':_0x1dbdcf});}}catch(_0x260ed0){logger[_0xf180('0x37')](_0x260ed0[_0xf180('0x3e')]);return _0x726be6(_0x4ee79b[_0xf180('0x37')](0x1f4,_0x260ed0));}}return _0x726be6(_0xf180('0x3f'));});},'AcceptMessage':function(_0x466e08){var _0x17e0a0=this;return new Promise(function(_0x2c505c,_0x8761b1){if(_0x466e08[_0xf180('0x40')]&&_0x466e08[_0xf180('0x40')]['id']){if(_0x1eb0a2[_0xf180('0x41')][_0x466e08[_0xf180('0x40')]['id']]){_0x1eb0a2[_0xf180('0x41')][_0x466e08[_0xf180('0x40')]['id']][_0xf180('0x42')]=![];_0x1eb0a2[_0xf180('0x41')][_0x466e08[_0xf180('0x40')]['id']]['busyQueue']=undefined;}}if(_0x466e08['message']&&_0x466e08[_0xf180('0x16')]['id']){try{var _0x95d070=getId(_0x466e08[_0xf180('0x15')],_0x466e08[_0xf180('0x16')]?_0x466e08[_0xf180('0x16')]['id']:0x0,_0x466e08[_0xf180('0x17')]?_0x466e08[_0xf180('0x17')]['id']:0x0);if(_0x1eb0a2[_0xf180('0x14')][_0x95d070]){_0x1eb0a2[_0xf180('0x14')][_0x95d070][_0xf180('0x3c')](_0xf180('0x43'));if(rpc[_0x466e08[_0xf180('0x15')]+_0xf180('0x44')]){rpc[_0x466e08[_0xf180('0x15')]+_0xf180('0x44')]['update'](_0x95d070,{'UserId':_0x466e08[_0xf180('0x16')][_0xf180('0x45')]})['catch'](function(_0xbf1ed3){logger[_0xf180('0x37')](_0xf180('0x46'));});}}return _0x2c505c({'code':0xc8,'message':_0x466e08});}catch(_0x3603ca){logger[_0xf180('0x37')](_0x3603ca[_0xf180('0x3e')]);return _0x8761b1(_0x17e0a0[_0xf180('0x37')](0x1f4,_0x3603ca));}}logger[_0xf180('0x37')](_0xf180('0x47'));return _0x8761b1(_0x17e0a0[_0xf180('0x37')](0x1f4,_0xf180('0x47')));});},'RejectMessage':function(_0x2f7b08){var _0x581626=this;return new Promise(function(_0xae5730,_0x5c485b){if(_0x2f7b08[_0xf180('0x40')]&&_0x2f7b08['agent']['id']){try{if(_0x1eb0a2['agents'][_0x2f7b08['agent']['id']]){_0x1eb0a2['agents'][_0x2f7b08[_0xf180('0x40')]['id']][_0xf180('0x42')]=![];_0x1eb0a2['agents'][_0x2f7b08[_0xf180('0x40')]['id']][_0xf180('0x48')]=undefined;}return _0xae5730({'code':0xc8,'message':_0x2f7b08});}catch(_0x599b93){logger[_0xf180('0x37')](_0x599b93['stack']);return _0x5c485b(_0x581626['error'](0x1f4,_0x599b93));}}logger['error'](_0xf180('0x47'));return _0x5c485b(_0x581626[_0xf180('0x37')](0x1f4,_0xf180('0x47')));});},'AbandonInteraction':function(_0x5cd77f){var _0x2dcc9e=this;return new Promise(function(_0x448584,_0x17e8ce){if(_0x5cd77f[_0xf180('0x15')]&&_0x5cd77f[_0xf180('0x17')]&&_0x5cd77f['interaction']['id']){try{var _0x1a6cf2=getId(_0x5cd77f[_0xf180('0x15')],_0x5cd77f['message']?_0x5cd77f[_0xf180('0x16')]['id']:0x0,_0x5cd77f[_0xf180('0x17')]?_0x5cd77f[_0xf180('0x17')]['id']:0x0);if(_0x1eb0a2[_0xf180('0x14')][_0x1a6cf2]){_0x1eb0a2[_0xf180('0x14')][_0x1a6cf2]['emit'](_0xf180('0x43'));}return _0x448584({'code':0xc8,'message':_0x5cd77f});}catch(_0x3edc18){logger[_0xf180('0x37')](_0x3edc18[_0xf180('0x3e')]);return _0x17e8ce(_0x2dcc9e['error'](0x1f4,_0x3edc18));}}logger[_0xf180('0x37')](_0xf180('0x47'));return _0x17e8ce(_0x2dcc9e[_0xf180('0x37')](0x1f4,_0xf180('0x47')));});},'AgentCapacity':function(_0x30f060){var _0x5e50f4=this;return new Promise(function(_0x3272a3,_0x5dbc6c){if(_0x1eb0a2[_0xf180('0x41')][_0xf180('0x49')](_0x30f060['id'])){for(var _0x496b94 in _0x30f060['capacity']){if(_0x30f060['capacity'][_0xf180('0x49')](_0x496b94)){if(_0x1eb0a2[_0xf180('0x41')][_0x30f060['id']][_0xf180('0x49')](_0x496b94+_0xf180('0x4a'))){_0x1eb0a2[_0xf180('0x41')][_0x30f060['id']][_0x496b94+'CurrentCapacity']=parseInt(_0x30f060['capacity'][_0x496b94],0xa);}}}_0x1eb0a2[_0xf180('0x41')][_0x30f060['id']]['updateRealtime']();return _0x3272a3({'code':0xc8,'message':_0x1eb0a2[_0xf180('0x41')][_0x30f060['id']]});}else{return _0x5dbc6c(_0x5e50f4[_0xf180('0x37')](0x1f4,_0xf180('0x4b')));}});},'Agents':function(_0x25da2a){return new Promise(function(_0x3abd92,_0x252bdb){var _0x13bf22=_['values'](_0x1eb0a2[_0xf180('0x41')]);_0x3abd92({'count':_0x13bf22[_0xf180('0x1a')],'rows':_0x13bf22});});},'ChatQueues':function(_0x1869a8){return new Promise(function(_0x575def,_0x1eedfc){var _0x365821=[];for(var _0x216854 in _0x1eb0a2['chatQueues']){if(_0x1eb0a2[_0xf180('0x4c')][_0xf180('0x49')](_0x216854)){var _0x41fde4=_0x1eb0a2[_0xf180('0x4c')][_0x216854];var _0x19bce3={'id':_0x41fde4['id'],'available':_0x41fde4['available'],'loggedIn':_0x41fde4[_0xf180('0x4d')],'name':_0x41fde4[_0xf180('0x4e')],'paused':_0x41fde4[_0xf180('0x4f')],'waiting':_0x41fde4['waiting']};_0x365821[_0xf180('0x20')](_0x19bce3);}}_0x575def({'count':_0x365821[_0xf180('0x1a')],'rows':_0x365821});});},'MailQueues':function(_0x51ddf5){return new Promise(function(_0x3a5695,_0x4bd8b6){var _0x4157be=[];for(var _0x378a16 in _0x1eb0a2['mailQueues']){if(_0x1eb0a2[_0xf180('0x50')][_0xf180('0x49')](_0x378a16)){var _0x2ac72b=_0x1eb0a2[_0xf180('0x50')][_0x378a16];var _0xd93f14={'id':_0x2ac72b['id'],'available':_0x2ac72b[_0xf180('0x51')],'loggedIn':_0x2ac72b['loggedIn'],'name':_0x2ac72b['name'],'paused':_0x2ac72b[_0xf180('0x4f')],'waiting':_0x2ac72b[_0xf180('0x52')]};_0x4157be[_0xf180('0x20')](_0xd93f14);}}_0x3a5695({'count':_0x4157be[_0xf180('0x1a')],'rows':_0x4157be});});},'OpenchannelQueues':function(_0x2034f5){return new Promise(function(_0x2e8c1e,_0x5d3684){var _0x355ce6=[];for(var _0x24d039 in _0x1eb0a2['openchannelQueues']){if(_0x1eb0a2['openchannelQueues'][_0xf180('0x49')](_0x24d039)){var _0x509eeb=_0x1eb0a2['openchannelQueues'][_0x24d039];var _0x5ddb8b={'id':_0x509eeb['id'],'available':_0x509eeb[_0xf180('0x51')],'loggedIn':_0x509eeb['loggedIn'],'name':_0x509eeb['name'],'paused':_0x509eeb[_0xf180('0x4f')],'waiting':_0x509eeb[_0xf180('0x52')]};_0x355ce6['push'](_0x5ddb8b);}}_0x2e8c1e({'count':_0x355ce6[_0xf180('0x1a')],'rows':_0x355ce6});});},'SmsQueues':function(_0x1239cc){return new Promise(function(_0x317e29,_0x56ac4b){var _0x30f4b1=[];for(var _0x253060 in _0x1eb0a2['smsQueues']){if(_0x1eb0a2[_0xf180('0x53')]['hasOwnProperty'](_0x253060)){var _0x2eb080=_0x1eb0a2[_0xf180('0x53')][_0x253060];var _0x593a2c={'id':_0x2eb080['id'],'available':_0x2eb080['available'],'loggedIn':_0x2eb080[_0xf180('0x4d')],'name':_0x2eb080[_0xf180('0x4e')],'paused':_0x2eb080[_0xf180('0x4f')],'waiting':_0x2eb080[_0xf180('0x52')]};_0x30f4b1[_0xf180('0x20')](_0x593a2c);}}_0x317e29({'count':_0x30f4b1['length'],'rows':_0x30f4b1});});},'FaxQueues':function(_0x597856){return new Promise(function(_0x2b87ec,_0x43747a){var _0x15c544=[];for(var _0x5f50ff in _0x1eb0a2['faxQueues']){if(_0x1eb0a2[_0xf180('0x54')]['hasOwnProperty'](_0x5f50ff)){var _0x169a53=_0x1eb0a2[_0xf180('0x54')][_0x5f50ff];var _0x35a45c={'id':_0x169a53['id'],'available':_0x169a53[_0xf180('0x51')],'loggedIn':_0x169a53['loggedIn'],'name':_0x169a53[_0xf180('0x4e')],'paused':_0x169a53[_0xf180('0x4f')],'waiting':_0x169a53[_0xf180('0x52')]};_0x15c544[_0xf180('0x20')](_0x35a45c);}}_0x2b87ec({'count':_0x15c544[_0xf180('0x1a')],'rows':_0x15c544});});},'WhatsappQueues':function(_0x40d18c){return new Promise(function(_0x5369c2,_0x414882){var _0x1b469b=[];for(var _0xba8355 in _0x1eb0a2[_0xf180('0x55')]){if(_0x1eb0a2[_0xf180('0x55')][_0xf180('0x49')](_0xba8355)){var _0x1837ef=_0x1eb0a2[_0xf180('0x55')][_0xba8355];var _0x341584={'id':_0x1837ef['id'],'available':_0x1837ef[_0xf180('0x51')],'loggedIn':_0x1837ef['loggedIn'],'name':_0x1837ef[_0xf180('0x4e')],'paused':_0x1837ef[_0xf180('0x4f')],'waiting':_0x1837ef[_0xf180('0x52')]};_0x1b469b[_0xf180('0x20')](_0x341584);}}_0x5369c2({'count':_0x1b469b['length'],'rows':_0x1b469b});});},'ChatQueuesWaitingInteractions':function(_0x4ee9fd){return new Promise(function(_0xce997e,_0x13a246){var _0x3676d4=_['values'](_0x1eb0a2[_0xf180('0x56')]);_0xce997e({'count':_0x3676d4[_0xf180('0x1a')],'rows':_0x3676d4});});},'MailQueuesWaitingInteractions':function(_0x3eab9d){return new Promise(function(_0x429096,_0x465408){var _0x30b8cb=_[_0xf180('0x57')](_0x1eb0a2[_0xf180('0x58')]);_0x429096({'count':_0x30b8cb[_0xf180('0x1a')],'rows':_0x30b8cb});});},'OpenchannelQueuesWaitingInteractions':function(_0x436aed){return new Promise(function(_0x21103e,_0x1839b6){var _0x2836be=_[_0xf180('0x57')](_0x1eb0a2[_0xf180('0x59')]);_0x21103e({'count':_0x2836be['length'],'rows':_0x2836be});});},'SmsQueuesWaitingInteractions':function(_0x23f2ed){return new Promise(function(_0x3aecf7,_0x5f811){var _0x504850=_[_0xf180('0x57')](_0x1eb0a2['smsQueuesWaitingInteractions']);_0x3aecf7({'count':_0x504850[_0xf180('0x1a')],'rows':_0x504850});});},'FaxQueuesWaitingInteractions':function(_0x572ad2){return new Promise(function(_0x3116c0,_0x500271){var _0x1aba3d=_[_0xf180('0x57')](_0x1eb0a2[_0xf180('0x5a')]);_0x3116c0({'count':_0x1aba3d[_0xf180('0x1a')],'rows':_0x1aba3d});});},'WhatsappQueuesWaitingInteractions':function(_0x220bd0){return new Promise(function(_0x19db8a,_0x43c975){var _0x1ee9c5=_[_0xf180('0x57')](_0x1eb0a2[_0xf180('0x5b')]);_0x19db8a({'count':_0x1ee9c5[_0xf180('0x1a')],'rows':_0x1ee9c5});});}};var _0x3cf31a=jayson[_0xf180('0x5c')](_0x3d3f48)[_0xf180('0x5d')]();_0x3cf31a['on'](_0xf180('0x37'),function(_0x4c18fe){logger[_0xf180('0x37')](JSON['stringify'](_0x4c18fe));return _0x43add2(_0x4c18fe);});_0x3cf31a[_0xf180('0x13')](0x232c,_0xf180('0x5e'),function(){console[_0xf180('0x5f')](_0xf180('0x60'),0x232c);return _0x48b00e(_0xf180('0x61')+0x232c);});});};
\ No newline at end of file
+var _0x688a=['path','bluebird','./applications/utils','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','isNil','IntervalId','Intervals','interval','listen','channel','message','interaction','applications','length','existsSync','join','app','.js','toLowerCase','autoreply','appdata','split','push','slice','dialogflow','amazonlex','tag','tvox','notificationTemplate','ContactId','body','format','%s:%s:%s','condition','./applications/','consequence','priority','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','rules','execute','info','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','mailQueues','waiting','openchannelQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x688a,0x124));var _0xa688=function(_0x411eac,_0x54eba3){_0x411eac=_0x411eac-0x0;var _0x5e9d32=_0x688a[_0x411eac];return _0x5e9d32;};'use strict';var _=require(_0xa688('0x0'));var util=require(_0xa688('0x1'));var path=require(_0xa688('0x2'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xa688('0x3'));var uuid=require('uuid');var utils=require(_0xa688('0x4'));var config=require(_0xa688('0x5'));var logger=require('../../../config/logger')(_0xa688('0x6'));var rpc={'openchannelQueueReport':require(_0xa688('0x7')),'mailQueueReport':require(_0xa688('0x8')),'chatQueueReport':require(_0xa688('0x9')),'smsQueueReport':require(_0xa688('0xa')),'faxQueueReport':require(_0xa688('0xb')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x45c969,_0x3f3d81,_0x1ab9f2){return util['format']('%s.%s.%s',_0x45c969,_0x3f3d81||0x0,_0x1ab9f2||0x0);}function getIntervals(_0x42b94e,_0x5ce966){var _0x4bf4ee=[];if(!_[_0xa688('0xc')](_0x5ce966[_0xa688('0xd')])&&!_[_0xa688('0xc')](_0x42b94e[_0x5ce966[_0xa688('0xd')]])&&!_[_0xa688('0xc')](_0x42b94e[_0x5ce966[_0xa688('0xd')]]['Intervals'])){_0x4bf4ee=_['map'](_0x42b94e[_0x5ce966['IntervalId']][_0xa688('0xe')],_0xa688('0xf'));}else if(!_['isNil'](_0x5ce966[_0xa688('0xf')])){_0x4bf4ee=[_0x5ce966['interval']];}return _0x4bf4ee;}exports[_0xa688('0x10')]=function(_0x43159e){_0x43159e['rules']={};return new BPromise(function(_0x5b3caf,_0x2d4871){var _0x4c7442={'Start':function(_0x1a55c2){var _0x5b8b1f=this;return new Promise(function(_0xe776d6,_0x1e7ad3){if(_0x1a55c2){try{var _0x41082d=[];var _0x25b453=getId(_0x1a55c2[_0xa688('0x11')],_0x1a55c2[_0xa688('0x12')]?_0x1a55c2['message']['id']:0x0,_0x1a55c2['interaction']?_0x1a55c2[_0xa688('0x13')]['id']:0x0);if(_0x1a55c2[_0xa688('0x14')]&&_['isArray'](_0x1a55c2['applications'])&&_0x1a55c2[_0xa688('0x14')][_0xa688('0x15')]){for(var _0x545c52=0x0;_0x545c52<_0x1a55c2[_0xa688('0x14')]['length'];_0x545c52+=0x1){var _0x5c6925=_0x1a55c2[_0xa688('0x14')][_0x545c52];if(fs[_0xa688('0x16')](path[_0xa688('0x17')](__dirname,_0xa688('0x14'),_0x5c6925[_0xa688('0x18')]+_0xa688('0x19')))){var _0x7d9036=[];switch(_0x5c6925[_0xa688('0x18')][_0xa688('0x1a')]()){case _0xa688('0x1b'):var _0x3134ca=_0x5c6925[_0xa688('0x1c')][_0xa688('0x1d')](',');if(_0x1a55c2[_0xa688('0x11')]==='mail'){_0x7d9036[_0xa688('0x1e')](_0x3134ca[0x0]);_0x7d9036[_0xa688('0x1e')](_0x3134ca[0x1]);_0x7d9036['push'](_0x3134ca[_0xa688('0x1f')](0x2,_0x3134ca[_0xa688('0x15')])['join'](','));}else{_0x7d9036[_0xa688('0x1e')](_0x3134ca[0x0]);_0x7d9036[_0xa688('0x1e')](_0x3134ca[_0xa688('0x1f')](0x1,_0x3134ca[_0xa688('0x15')])[_0xa688('0x17')](','));}break;case _0xa688('0x20'):var _0x337779=_0x5c6925[_0xa688('0x1c')][_0xa688('0x1d')](',');_0x7d9036[_0xa688('0x1e')](_0x337779[0x0]);_0x7d9036[_0xa688('0x1e')](_0x337779[0x1]);_0x7d9036[_0xa688('0x1e')](_0x337779[_0xa688('0x1f')](0x2,_0x337779[_0xa688('0x15')])[_0xa688('0x17')](','));break;case'dialogflowv2':var _0x217a35=_0x5c6925[_0xa688('0x1c')][_0xa688('0x1d')](',');_0x7d9036[_0xa688('0x1e')](_0x217a35[0x0]);_0x7d9036[_0xa688('0x1e')](_0x217a35[0x1]);_0x7d9036[_0xa688('0x1e')](_0x217a35[0x2]);_0x7d9036['push'](_0x217a35[0x3]);_0x7d9036['push'](_0x217a35['slice'](0x4,_0x217a35[_0xa688('0x15')])['join'](','));break;case _0xa688('0x21'):var _0xf4841c=_0x5c6925[_0xa688('0x1c')][_0xa688('0x1d')](',');_0x7d9036[_0xa688('0x1e')](_0xf4841c[0x0]);_0x7d9036[_0xa688('0x1e')](_0xf4841c[0x1]);_0x7d9036[_0xa688('0x1e')](_0xf4841c[0x2]);_0x7d9036['push'](_0xf4841c[0x3]);_0x7d9036['push'](_0xf4841c['slice'](0x4,_0xf4841c['length'])[_0xa688('0x17')](','));break;case _0xa688('0x12'):_0x7d9036[_0xa688('0x1e')](_0x5c6925['appdata']);break;case _0xa688('0x22'):_0x7d9036['push'](_0x5c6925['TagId']);_0x7d9036['push'](_0x5c6925[_0xa688('0x1c')]);break;case _0xa688('0x23'):var _0x42677b=utils['getMustacheRender'](_0x1a55c2['account'][_0xa688('0x24')],_0x1a55c2);var _0x42c27a=_0x5c6925[_0xa688('0x1c')][_0xa688('0x1d')](',');_0x7d9036[_0xa688('0x1e')](_0x42c27a[0x0]);_0x7d9036['push'](_0x42c27a[0x1]);_0x7d9036['push'](_0x42c27a[0x2]);_0x7d9036[_0xa688('0x1e')](_0x42c27a[0x3]);_0x7d9036['push'](_0x42c27a[0x4]);_0x7d9036[_0xa688('0x1e')](_0x42c27a[0x5]);_0x7d9036[_0xa688('0x1e')](_0x42c27a[0x6]);_0x7d9036[_0xa688('0x1e')](_0x42c27a[0x7]);_0x7d9036[_0xa688('0x1e')](_0x42c27a[0x8]);_0x7d9036['push'](_0x42c27a[0x9]);_0x7d9036[_0xa688('0x1e')](_0x42c27a[0xa]);_0x7d9036['push'](_0x1a55c2['interaction']['id']);_0x7d9036[_0xa688('0x1e')](_0x1a55c2['message']['id']);_0x7d9036[_0xa688('0x1e')](_0x5c6925['ChatWebsiteId']);_0x7d9036[_0xa688('0x1e')](_0x1a55c2[_0xa688('0x13')][_0xa688('0x25')]);_0x7d9036['push'](_0x1a55c2[_0xa688('0x26')][_0xa688('0x26')]);_0x7d9036[_0xa688('0x1e')](_0x42677b);break;default:_0x7d9036=_[_0xa688('0xc')](_0x5c6925[_0xa688('0x1c')])?[]:_0x5c6925[_0xa688('0x1c')][_0xa688('0x1d')](',');}var _0x9d54a6={'id':util[_0xa688('0x27')](_0xa688('0x28'),_0x25b453,_0x5c6925['id'],_0x5c6925[_0xa688('0x18')]),'condition':require('./interval')[_0xa688('0x29')](_0x25b453,getIntervals(_0x43159e['intervals'],_0x5c6925),_0x43159e),'consequence':require(_0xa688('0x2a')+_0x5c6925[_0xa688('0x18')])[_0xa688('0x2b')](_0x25b453,_0x7d9036,_0x43159e,_0x1a55c2),'p':_0x5c6925[_0xa688('0x2c')]||0x0};logger['info'](_0xa688('0x2d'),_0x9d54a6['id'],_0xa688('0x2e'),getIntervals(_0x43159e['intervals'],_0x5c6925)[_0xa688('0x17')](_0xa688('0x2f')));_0x41082d[_0xa688('0x1e')](_0x9d54a6);}else{logger[_0xa688('0x30')](_0xa688('0x31'),path[_0xa688('0x17')](__dirname,_0xa688('0x14'),_0x5c6925[_0xa688('0x18')]+_0xa688('0x19')));}}_0x43159e['rules'][_0x25b453]=new RuleEngine(_0x41082d);_0x43159e[_0xa688('0x32')][_0x25b453][_0xa688('0x33')](_0x1a55c2,function(_0x4475b5){logger[_0xa688('0x34')](_0xa688('0x35'),JSON[_0xa688('0x36')](_0x4475b5[_0xa688('0x37')]));if(_0x43159e[_0xa688('0x32')][_0x25b453]){_0x43159e['rules'][_0x25b453][_0xa688('0x38')](_0xa688('0x39'));}});return _0xe776d6({'code':0xc8,'message':_0x1a55c2});}else{logger[_0xa688('0x34')](_0xa688('0x3a'));return _0xe776d6({'code':0xc8,'message':_0x1a55c2});}}catch(_0x4f5cbd){logger[_0xa688('0x30')](_0x4f5cbd[_0xa688('0x3b')]);return _0x1e7ad3(_0x5b8b1f['error'](0x1f4,_0x4f5cbd));}}return _0x1e7ad3(_0xa688('0x3c'));});},'AcceptMessage':function(_0x360f62){var _0x439094=this;return new Promise(function(_0x9f6193,_0x2d2bd9){if(_0x360f62[_0xa688('0x3d')]&&_0x360f62['agent']['id']){if(_0x43159e[_0xa688('0x3e')][_0x360f62[_0xa688('0x3d')]['id']]){_0x43159e[_0xa688('0x3e')][_0x360f62[_0xa688('0x3d')]['id']][_0xa688('0x3f')]=![];_0x43159e['agents'][_0x360f62[_0xa688('0x3d')]['id']][_0xa688('0x40')]=undefined;}}if(_0x360f62[_0xa688('0x12')]&&_0x360f62[_0xa688('0x12')]['id']){try{var _0x25ccf5=getId(_0x360f62[_0xa688('0x11')],_0x360f62['message']?_0x360f62[_0xa688('0x12')]['id']:0x0,_0x360f62[_0xa688('0x13')]?_0x360f62[_0xa688('0x13')]['id']:0x0);if(_0x43159e[_0xa688('0x32')][_0x25ccf5]){_0x43159e[_0xa688('0x32')][_0x25ccf5][_0xa688('0x38')](_0xa688('0x41'));if(rpc[_0x360f62['channel']+_0xa688('0x42')]){rpc[_0x360f62[_0xa688('0x11')]+_0xa688('0x42')][_0xa688('0x43')](_0x25ccf5,{'UserId':_0x360f62['message'][_0xa688('0x44')]})[_0xa688('0x45')](function(_0x416bfd){logger[_0xa688('0x30')](_0xa688('0x46'));});}}return _0x9f6193({'code':0xc8,'message':_0x360f62});}catch(_0x3f34f2){logger['error'](_0x3f34f2[_0xa688('0x3b')]);return _0x2d2bd9(_0x439094['error'](0x1f4,_0x3f34f2));}}logger[_0xa688('0x30')]('message\x20is\x20empty');return _0x2d2bd9(_0x439094['error'](0x1f4,_0xa688('0x47')));});},'RejectMessage':function(_0x12d9c4){var _0x8fa54e=this;return new Promise(function(_0x5df54b,_0x4381a4){if(_0x12d9c4['agent']&&_0x12d9c4['agent']['id']){try{if(_0x43159e['agents'][_0x12d9c4['agent']['id']]){_0x43159e['agents'][_0x12d9c4[_0xa688('0x3d')]['id']][_0xa688('0x3f')]=![];_0x43159e[_0xa688('0x3e')][_0x12d9c4['agent']['id']][_0xa688('0x40')]=undefined;}return _0x5df54b({'code':0xc8,'message':_0x12d9c4});}catch(_0x50ab09){logger[_0xa688('0x30')](_0x50ab09[_0xa688('0x3b')]);return _0x4381a4(_0x8fa54e[_0xa688('0x30')](0x1f4,_0x50ab09));}}logger[_0xa688('0x30')](_0xa688('0x47'));return _0x4381a4(_0x8fa54e[_0xa688('0x30')](0x1f4,_0xa688('0x47')));});},'AbandonInteraction':function(_0x449094){var _0x2571be=this;return new Promise(function(_0x1530ff,_0x4e3025){if(_0x449094['channel']&&_0x449094['interaction']&&_0x449094[_0xa688('0x13')]['id']){try{var _0x26efbb=getId(_0x449094[_0xa688('0x11')],_0x449094[_0xa688('0x12')]?_0x449094[_0xa688('0x12')]['id']:0x0,_0x449094[_0xa688('0x13')]?_0x449094[_0xa688('0x13')]['id']:0x0);if(_0x43159e[_0xa688('0x32')][_0x26efbb]){_0x43159e[_0xa688('0x32')][_0x26efbb][_0xa688('0x38')](_0xa688('0x41'));}return _0x1530ff({'code':0xc8,'message':_0x449094});}catch(_0x3a8b47){logger[_0xa688('0x30')](_0x3a8b47[_0xa688('0x3b')]);return _0x4e3025(_0x2571be[_0xa688('0x30')](0x1f4,_0x3a8b47));}}logger['error']('message\x20is\x20empty');return _0x4e3025(_0x2571be[_0xa688('0x30')](0x1f4,'message\x20is\x20empty'));});},'AgentCapacity':function(_0x5290fd){var _0x10bd5f=this;return new Promise(function(_0xe3bb0c,_0x4f190f){if(_0x43159e[_0xa688('0x3e')]['hasOwnProperty'](_0x5290fd['id'])){for(var _0x378357 in _0x5290fd['capacity']){if(_0x5290fd[_0xa688('0x48')]['hasOwnProperty'](_0x378357)){if(_0x43159e[_0xa688('0x3e')][_0x5290fd['id']][_0xa688('0x49')](_0x378357+_0xa688('0x4a'))){_0x43159e[_0xa688('0x3e')][_0x5290fd['id']][_0x378357+'CurrentCapacity']=parseInt(_0x5290fd[_0xa688('0x48')][_0x378357],0xa);}}}_0x43159e[_0xa688('0x3e')][_0x5290fd['id']][_0xa688('0x4b')]();return _0xe3bb0c({'code':0xc8,'message':_0x43159e[_0xa688('0x3e')][_0x5290fd['id']]});}else{return _0x4f190f(_0x10bd5f['error'](0x1f4,_0xa688('0x4c')));}});},'Agents':function(_0x4030ac){return new Promise(function(_0x547f0f,_0x50510b){var _0x132a7e=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x3e')]);_0x547f0f({'count':_0x132a7e[_0xa688('0x15')],'rows':_0x132a7e});});},'ChatQueues':function(_0x2e82e0){return new Promise(function(_0x9d35e5,_0x120c64){var _0x20a8dc=[];for(var _0x56b3e3 in _0x43159e[_0xa688('0x4e')]){if(_0x43159e[_0xa688('0x4e')][_0xa688('0x49')](_0x56b3e3)){var _0x56f0b7=_0x43159e[_0xa688('0x4e')][_0x56b3e3];var _0x38c125={'id':_0x56f0b7['id'],'available':_0x56f0b7[_0xa688('0x4f')],'loggedIn':_0x56f0b7[_0xa688('0x50')],'name':_0x56f0b7[_0xa688('0x51')],'paused':_0x56f0b7[_0xa688('0x52')],'waiting':_0x56f0b7['waiting']};_0x20a8dc[_0xa688('0x1e')](_0x38c125);}}_0x9d35e5({'count':_0x20a8dc['length'],'rows':_0x20a8dc});});},'MailQueues':function(_0x29a585){return new Promise(function(_0x3b42e9,_0x4028dc){var _0x25a74f=[];for(var _0x514f47 in _0x43159e[_0xa688('0x53')]){if(_0x43159e[_0xa688('0x53')][_0xa688('0x49')](_0x514f47)){var _0x530727=_0x43159e[_0xa688('0x53')][_0x514f47];var _0x49ce51={'id':_0x530727['id'],'available':_0x530727[_0xa688('0x4f')],'loggedIn':_0x530727[_0xa688('0x50')],'name':_0x530727[_0xa688('0x51')],'paused':_0x530727['paused'],'waiting':_0x530727[_0xa688('0x54')]};_0x25a74f[_0xa688('0x1e')](_0x49ce51);}}_0x3b42e9({'count':_0x25a74f[_0xa688('0x15')],'rows':_0x25a74f});});},'OpenchannelQueues':function(_0x413a2a){return new Promise(function(_0x3e484b,_0x365bf7){var _0x1cdde3=[];for(var _0x4be09a in _0x43159e['openchannelQueues']){if(_0x43159e['openchannelQueues'][_0xa688('0x49')](_0x4be09a)){var _0x4f07ef=_0x43159e[_0xa688('0x55')][_0x4be09a];var _0x54563b={'id':_0x4f07ef['id'],'available':_0x4f07ef[_0xa688('0x4f')],'loggedIn':_0x4f07ef[_0xa688('0x50')],'name':_0x4f07ef[_0xa688('0x51')],'paused':_0x4f07ef[_0xa688('0x52')],'waiting':_0x4f07ef[_0xa688('0x54')]};_0x1cdde3[_0xa688('0x1e')](_0x54563b);}}_0x3e484b({'count':_0x1cdde3[_0xa688('0x15')],'rows':_0x1cdde3});});},'SmsQueues':function(_0x46c049){return new Promise(function(_0x3f465d,_0x59ffd8){var _0x2e76f0=[];for(var _0x162434 in _0x43159e['smsQueues']){if(_0x43159e['smsQueues'][_0xa688('0x49')](_0x162434)){var _0x120d4c=_0x43159e['smsQueues'][_0x162434];var _0x3e6679={'id':_0x120d4c['id'],'available':_0x120d4c[_0xa688('0x4f')],'loggedIn':_0x120d4c[_0xa688('0x50')],'name':_0x120d4c['name'],'paused':_0x120d4c['paused'],'waiting':_0x120d4c[_0xa688('0x54')]};_0x2e76f0[_0xa688('0x1e')](_0x3e6679);}}_0x3f465d({'count':_0x2e76f0[_0xa688('0x15')],'rows':_0x2e76f0});});},'FaxQueues':function(_0x34551c){return new Promise(function(_0x1d35ec,_0x3056d9){var _0x276fbd=[];for(var _0x4dfac9 in _0x43159e['faxQueues']){if(_0x43159e[_0xa688('0x56')]['hasOwnProperty'](_0x4dfac9)){var _0x18bf56=_0x43159e['faxQueues'][_0x4dfac9];var _0x2d777d={'id':_0x18bf56['id'],'available':_0x18bf56[_0xa688('0x4f')],'loggedIn':_0x18bf56[_0xa688('0x50')],'name':_0x18bf56['name'],'paused':_0x18bf56[_0xa688('0x52')],'waiting':_0x18bf56[_0xa688('0x54')]};_0x276fbd[_0xa688('0x1e')](_0x2d777d);}}_0x1d35ec({'count':_0x276fbd[_0xa688('0x15')],'rows':_0x276fbd});});},'WhatsappQueues':function(_0x40382d){return new Promise(function(_0x5bab5b,_0x20ab29){var _0x1ce8a7=[];for(var _0x4750a7 in _0x43159e[_0xa688('0x57')]){if(_0x43159e['whatsappQueues'][_0xa688('0x49')](_0x4750a7)){var _0x737685=_0x43159e[_0xa688('0x57')][_0x4750a7];var _0x1697a6={'id':_0x737685['id'],'available':_0x737685[_0xa688('0x4f')],'loggedIn':_0x737685[_0xa688('0x50')],'name':_0x737685[_0xa688('0x51')],'paused':_0x737685[_0xa688('0x52')],'waiting':_0x737685[_0xa688('0x54')]};_0x1ce8a7[_0xa688('0x1e')](_0x1697a6);}}_0x5bab5b({'count':_0x1ce8a7[_0xa688('0x15')],'rows':_0x1ce8a7});});},'ChatQueuesWaitingInteractions':function(_0xf2f5cb){return new Promise(function(_0x5ed201,_0x15211f){var _0x219200=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x58')]);_0x5ed201({'count':_0x219200[_0xa688('0x15')],'rows':_0x219200});});},'MailQueuesWaitingInteractions':function(_0x57e2ad){return new Promise(function(_0x30329c,_0x270c7e){var _0x102c8a=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x59')]);_0x30329c({'count':_0x102c8a['length'],'rows':_0x102c8a});});},'OpenchannelQueuesWaitingInteractions':function(_0x7e98f0){return new Promise(function(_0x54e1a0,_0x5441e0){var _0x10c09f=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x5a')]);_0x54e1a0({'count':_0x10c09f[_0xa688('0x15')],'rows':_0x10c09f});});},'SmsQueuesWaitingInteractions':function(_0x5a1f54){return new Promise(function(_0xf38db7,_0x507779){var _0xd0d9c8=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x5b')]);_0xf38db7({'count':_0xd0d9c8[_0xa688('0x15')],'rows':_0xd0d9c8});});},'FaxQueuesWaitingInteractions':function(_0x5dfdac){return new Promise(function(_0x41ba38,_0x527e02){var _0x151e5a=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x5c')]);_0x41ba38({'count':_0x151e5a[_0xa688('0x15')],'rows':_0x151e5a});});},'WhatsappQueuesWaitingInteractions':function(_0x14bebb){return new Promise(function(_0x21ac80,_0x25501e){var _0x49f557=_[_0xa688('0x4d')](_0x43159e[_0xa688('0x5d')]);_0x21ac80({'count':_0x49f557['length'],'rows':_0x49f557});});}};var _0x4d3261=jayson[_0xa688('0x5e')](_0x4c7442)[_0xa688('0x5f')]();_0x4d3261['on']('error',function(_0x29f23){logger[_0xa688('0x30')](JSON['stringify'](_0x29f23));return _0x2d4871(_0x29f23);});_0x4d3261[_0xa688('0x10')](0x232c,_0xa688('0x60'),function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x5b3caf(_0xa688('0x61')+0x232c);});});};
\ No newline at end of file
index 4e39617..132cc91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a87=['\x20|\x20','when','log','stop','util','jayson/promise','routing','client','request','then','error','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','push','Command','iftime\x20%s','message','indexOf','true','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join'];(function(_0xcadd66,_0x47bfa2){var _0x1d1d3f=function(_0x243cce){while(--_0x243cce){_0xcadd66['push'](_0xcadd66['shift']());}};_0x1d1d3f(++_0x47bfa2);}(_0x6a87,0xac));var _0x76a8=function(_0x3ef57f,_0x4b765a){_0x3ef57f=_0x3ef57f-0x0;var _0x408254=_0x6a87[_0x3ef57f];return _0x408254;};'use strict';var util=require(_0x76a8('0x0'));var BPromise=require('bluebird');var jayson=require(_0x76a8('0x1'));var _=require('lodash');var logger=require('../../../config/logger')(_0x76a8('0x2'));var client=jayson[_0x76a8('0x3')]['http']({'port':0x232a});function request(_0x5c0d68,_0x3b227f){return new BPromise(function(_0x35f973,_0x941c26){return client[_0x76a8('0x4')](_0x5c0d68,_0x3b227f)[_0x76a8('0x5')](function(_0x16b1d9){if(_0x16b1d9[_0x76a8('0x6')]){return _0x941c26(_0x16b1d9[_0x76a8('0x6')]['message']);}else{return _0x35f973(_0x16b1d9[_0x76a8('0x7')]);}})[_0x76a8('0x8')](function(_0x40858b){return _0x941c26(_0x40858b);});});}exports['condition']=function(_0x4ec838,_0x200daf,_0x4062fc){return function(_0x5ac98d){if(_0x4062fc[_0x76a8('0x9')]&&!_0x4062fc[_0x76a8('0x9')][_0x4ec838]){logger[_0x76a8('0xa')](_0x76a8('0xb'),_0x4ec838);return _0x5ac98d['stop']();}var _0x1e9305=[];for(var _0x76d721=0x0;_0x76d721<_0x200daf[_0x76a8('0xc')];_0x76d721+=0x1){_0x1e9305[_0x76a8('0xd')](request(_0x76a8('0xe'),{'command':util['format'](_0x76a8('0xf'),_0x200daf[_0x76d721])})[_0x76a8('0x5')](function(_0x5ef34f){return _0x5ef34f&&_0x5ef34f[_0x76a8('0x10')]&&_0x5ef34f[_0x76a8('0x10')][_0x76a8('0x11')](_0x76a8('0x12'))>=0x0?!![]:![];})[_0x76a8('0x8')](function(_0x338ef6){logger['error'](_0x76a8('0x13'),_0x4ec838,_0x200daf[_0x76d721]);}));}BPromise[_0x76a8('0x14')](_0x1e9305)[_0x76a8('0x5')](function(_0x27c082){var _0x59db86=_[_0x76a8('0x15')](_0x27c082);logger[_0x76a8('0xa')](_0x76a8('0x16'),_0x4ec838,_0x200daf[_0x76a8('0x17')](_0x76a8('0x18')),_0x59db86);_0x5ac98d[_0x76a8('0x19')](_0x59db86);})[_0x76a8('0x8')](function(_0x54bf55){console[_0x76a8('0x1a')](_0x54bf55);logger[_0x76a8('0x6')](_0x76a8('0x16'),_0x4ec838,_0x200daf['join'](_0x76a8('0x18')),_0x54bf55['stack']);_0x5ac98d[_0x76a8('0x1b')]();});};};
\ No newline at end of file
+var _0xd860=['indexOf','all','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','push','Command','format','iftime\x20%s'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0xd860,0xef));var _0x0d86=function(_0x6b23ab,_0x54b86e){_0x6b23ab=_0x6b23ab-0x0;var _0x3d3394=_0xd860[_0x6b23ab];return _0x3d3394;};'use strict';var util=require(_0x0d86('0x0'));var BPromise=require(_0x0d86('0x1'));var jayson=require(_0x0d86('0x2'));var _=require(_0x0d86('0x3'));var logger=require(_0x0d86('0x4'))(_0x0d86('0x5'));var client=jayson[_0x0d86('0x6')][_0x0d86('0x7')]({'port':0x232a});function request(_0x310f48,_0x3baefe){return new BPromise(function(_0x57f5ee,_0x2ab480){return client[_0x0d86('0x8')](_0x310f48,_0x3baefe)[_0x0d86('0x9')](function(_0x3caa4a){if(_0x3caa4a[_0x0d86('0xa')]){return _0x2ab480(_0x3caa4a[_0x0d86('0xa')][_0x0d86('0xb')]);}else{return _0x57f5ee(_0x3caa4a['result']);}})[_0x0d86('0xc')](function(_0x3fec28){return _0x2ab480(_0x3fec28);});});}exports[_0x0d86('0xd')]=function(_0x5729f1,_0x2b8bc4,_0x40269b){return function(_0x16f173){if(_0x40269b['rules']&&!_0x40269b[_0x0d86('0xe')][_0x5729f1]){logger[_0x0d86('0xf')](_0x0d86('0x10'),_0x5729f1);return _0x16f173[_0x0d86('0x11')]();}var _0x72aa52=[];for(var _0x5d76b3=0x0;_0x5d76b3<_0x2b8bc4['length'];_0x5d76b3+=0x1){_0x72aa52[_0x0d86('0x12')](request(_0x0d86('0x13'),{'command':util[_0x0d86('0x14')](_0x0d86('0x15'),_0x2b8bc4[_0x5d76b3])})[_0x0d86('0x9')](function(_0x1b44bc){return _0x1b44bc&&_0x1b44bc['message']&&_0x1b44bc[_0x0d86('0xb')][_0x0d86('0x16')]('true')>=0x0?!![]:![];})['catch'](function(_0x824880){logger[_0x0d86('0xa')]('[%s][INTERVAL]\x20%s',_0x5729f1,_0x2b8bc4[_0x5d76b3]);}));}BPromise[_0x0d86('0x17')](_0x72aa52)[_0x0d86('0x9')](function(_0x477ce5){var _0x2e7649=_['some'](_0x477ce5);logger['info'](_0x0d86('0x18'),_0x5729f1,_0x2b8bc4[_0x0d86('0x19')](_0x0d86('0x1a')),_0x2e7649);_0x16f173['when'](_0x2e7649);})[_0x0d86('0xc')](function(_0x33875d){console[_0x0d86('0x1b')](_0x33875d);logger['error'](_0x0d86('0x18'),_0x5729f1,_0x2b8bc4[_0x0d86('0x19')]('\x20|\x20'),_0x33875d[_0x0d86('0x1c')]);_0x16f173[_0x0d86('0x11')]();});};};
\ No newline at end of file
index 03b2e45..ee983fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['ringtime','talktime','push','[%s][agents][agentringnoanswer]','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','holdtime','connect','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','isNil','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','secondtransfererlinkedid','transfertargetuniqueid','agentcalledAt','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','util','./utils','format','uniqueid','channel','membername','interface','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','debug','called','connectedlinenum','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','now','timeout','reason'];(function(_0x111264,_0x1762d4){var _0x168b1e=function(_0x48221e){while(--_0x48221e){_0x111264['push'](_0x111264['shift']());}};_0x168b1e(++_0x1762d4);}(_0xda3f,0xec));var _0xfda3=function(_0x3a72b9,_0x4fa3b8){_0x3a72b9=_0x3a72b9-0x0;var _0x359d5a=_0xda3f[_0x3a72b9];return _0x359d5a;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var utils=require(_0xfda3('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x534697,_0x5299b0){utils['info'](util[_0xfda3('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x534697[_0xfda3('0x3')],_0x534697[_0xfda3('0x4')],_0x534697['queue'],_0x534697[_0xfda3('0x5')],_0x534697[_0xfda3('0x6')],_0x534697['calleridnum'],_0x534697['connectedlinenum'],_0x534697[_0xfda3('0x7')]));if(_0x534697[_0xfda3('0x8')]){utils[_0xfda3('0x9')](_0x534697[_0xfda3('0x8')])[_0xfda3('0xa')](function(_0x20e790){if(_0x20e790){_0x534697[_0xfda3('0xb')]=_0x20e790[_0xfda3('0xb')];_0x534697[_0xfda3('0xc')]=_0x534697[_0xfda3('0xd')]?_0x20e790[_0xfda3('0xe')]:![];_0x534697[_0xfda3('0xf')]=_0x534697['agentacw']?_0x20e790[_0xfda3('0x10')]:0x0;}utils[_0xfda3('0x11')](_0xfda3('0x12'),_0x534697);});}else{utils[_0xfda3('0x11')](_0xfda3('0x12'),_0x534697);}if(_0x5299b0){delete transfers[_0x534697['uniqueid']];}else{delete agents[_0x534697[_0xfda3('0x13')]];}}exports['agentcalled']=function(_0x3fd031){try{utils[_0xfda3('0x14')](util['format']('[%s][agents][agentcalled]',_0x3fd031['uniqueid']),_0x3fd031);agents[_0x3fd031[_0xfda3('0x13')]]=_0x3fd031;agents[_0x3fd031[_0xfda3('0x13')]]['agentcalledAt']=utils['now']();agents[_0x3fd031['destuniqueid']][_0xfda3('0x7')]=_0xfda3('0x15');agents[_0x3fd031[_0xfda3('0x13')]][_0xfda3('0x16')]=null;agents[_0x3fd031[_0xfda3('0x13')]][_0xfda3('0x17')]=null;utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x19'),_0x3fd031[_0xfda3('0x3')],agents[_0x3fd031['destuniqueid']][_0xfda3('0x5')],_0x3fd031[_0xfda3('0x13')]));}catch(_0x12d568){utils[_0xfda3('0x1a')](util['format'](_0xfda3('0x1b'),_0x3fd031[_0xfda3('0x3')]),_0x12d568);}};exports[_0xfda3('0x1c')]=function(_0x51e731){try{if(!_['isNil'](agents[_0x51e731[_0xfda3('0x13')]])){utils[_0xfda3('0x14')](util[_0xfda3('0x2')]('[%s][agents][agentringnoanswer]',_0x51e731[_0xfda3('0x3')]),_0x51e731);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x1d'),_0x51e731[_0xfda3('0x3')],agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x5')],_0x51e731[_0xfda3('0x13')]));agents[_0x51e731[_0xfda3('0x13')]]['agentringnoanswer']=!![];agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x1e')]=utils[_0xfda3('0x1f')]();agents[_0x51e731['destuniqueid']][_0xfda3('0x7')]=_0xfda3('0x20');agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x21')]=_0xfda3('0x20');agents[_0x51e731[_0xfda3('0x13')]]['holdtime']=_0x51e731[_0xfda3('0x22')]?parseInt(_0x51e731[_0xfda3('0x22')])/0x3e8:0x0;agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x23')]=0x0;unanswered[_0xfda3('0x24')](_0x51e731['destuniqueid']);}}catch(_0x3c1549){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x25'),_0x51e731[_0xfda3('0x3')]),_0x3c1549);}};exports[_0xfda3('0x26')]=function(_0x26e544){try{_['forIn'](agents,function(_0x56ca3a,_0x3aef3c){if(_0x56ca3a['uniqueid']==_0x26e544['uniqueid']&&!_[_0xfda3('0x27')](unanswered,_0x56ca3a[_0xfda3('0x13')])){utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x28'),_0x26e544[_0xfda3('0x3')]),_0x26e544);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x29'),_0x26e544['uniqueid'],_0x56ca3a[_0xfda3('0x5')],_0x56ca3a[_0xfda3('0x13')]));_0x56ca3a[_0xfda3('0x1c')]=!![];_0x56ca3a[_0xfda3('0x1e')]=utils[_0xfda3('0x1f')]();_0x56ca3a[_0xfda3('0x7')]=_0xfda3('0x2a');_0x56ca3a[_0xfda3('0x21')]=_0xfda3('0x2a');_0x56ca3a['holdtime']=_0x26e544['holdtime'];_0x56ca3a[_0xfda3('0x23')]=0x0;writeDB(_0x56ca3a);}});}catch(_0x17cccb){utils['error'](util[_0xfda3('0x2')](_0xfda3('0x28'),_0x26e544[_0xfda3('0x3')]),_0x17cccb);}};exports['agentconnect']=function(_0x1d92a9){try{if(agents[_0x1d92a9[_0xfda3('0x13')]]){utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x2b'),_0x1d92a9['uniqueid']),_0x1d92a9);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x2c'),_0x1d92a9['uniqueid'],agents[_0x1d92a9[_0xfda3('0x13')]]['membername'],_0x1d92a9[_0xfda3('0x13')]));agents[_0x1d92a9[_0xfda3('0x13')]][_0xfda3('0x2d')]=utils[_0xfda3('0x1f')]();agents[_0x1d92a9[_0xfda3('0x13')]][_0xfda3('0x16')]=_0x1d92a9[_0xfda3('0x16')];agents[_0x1d92a9[_0xfda3('0x13')]]['connectedlinename']=_0x1d92a9[_0xfda3('0x17')];agents[_0x1d92a9[_0xfda3('0x13')]][_0xfda3('0x2e')]=_0x1d92a9[_0xfda3('0x22')];agents[_0x1d92a9['destuniqueid']][_0xfda3('0x7')]=_0xfda3('0x2f');_[_0xfda3('0x30')](agents,function(_0x5bad90,_0x5ac61e){if(_0x5bad90[_0xfda3('0x13')]!=_0x1d92a9[_0xfda3('0x13')]&&_0x5bad90[_0xfda3('0x3')]==_0x1d92a9[_0xfda3('0x3')]){_0x5bad90[_0xfda3('0x23')]=0x0;_0x5bad90[_0xfda3('0x2e')]=_0x1d92a9[_0xfda3('0x22')];_0x5bad90[_0xfda3('0x1c')]=!![];_0x5bad90[_0xfda3('0x1e')]=utils[_0xfda3('0x1f')]();_0x5bad90['lastevent']=_0xfda3('0x31');_0x5bad90[_0xfda3('0x21')]='answered_elsewhere';_0x5bad90[_0xfda3('0x32')]=_0x1d92a9['destuniqueid'];_0x5bad90['answeredelsewheremembername']=_0x1d92a9['membername'];writeDB(_0x5bad90);}});}}catch(_0x2208bc){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x2b'),_0x1d92a9['uniqueid']),_0x2208bc);}};exports[_0xfda3('0xd')]=function(_0x25b9a6){try{if(!_[_0xfda3('0x33')](agents[_0x25b9a6[_0xfda3('0x13')]])){utils['debug'](util[_0xfda3('0x2')](_0xfda3('0x34'),_0x25b9a6[_0xfda3('0x3')]),_0x25b9a6);utils['info'](util['format'](_0xfda3('0x35'),_0x25b9a6[_0xfda3('0x3')],agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x5')],_0x25b9a6[_0xfda3('0x13')]));agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0xd')]=!![];agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x36')]=utils[_0xfda3('0x1f')]();agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x23')]=utils[_0xfda3('0x37')](agents[_0x25b9a6[_0xfda3('0x13')]]['agentcompleteAt'],agents[_0x25b9a6['destuniqueid']][_0xfda3('0x2d')]);agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x21')]=_0x25b9a6[_0xfda3('0x21')];agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x7')]=_0xfda3('0x38');writeDB(agents[_0x25b9a6[_0xfda3('0x13')]]);}}catch(_0x1372ee){utils[_0xfda3('0x1a')](util['format'](_0xfda3('0x34'),_0x25b9a6[_0xfda3('0x3')]),_0x1372ee);}};exports[_0xfda3('0x39')]=function(_0x36aa3a){try{if(!_[_0xfda3('0x33')](agents[_0x36aa3a['transfereruniqueid']])){utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x3a'),_0x36aa3a['uniqueid']),_0x36aa3a);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x3b'),_0x36aa3a['uniqueid'],agents[_0x36aa3a[_0xfda3('0x3c')]][_0xfda3('0x5')],agents[_0x36aa3a[_0xfda3('0x3c')]][_0xfda3('0x3')]));agents[_0x36aa3a[_0xfda3('0x3c')]]['transfer']=!![];agents[_0x36aa3a[_0xfda3('0x3c')]]['transfertype']=_0xfda3('0x3d');agents[_0x36aa3a['transfereruniqueid']][_0xfda3('0x3e')]=_0x36aa3a[_0xfda3('0x3f')];agents[_0x36aa3a[_0xfda3('0x3c')]][_0xfda3('0x40')]=agents[_0x36aa3a['transfereruniqueid']][_0xfda3('0x3')];}}catch(_0x3b430d){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x3a'),_0x36aa3a[_0xfda3('0x3')]),_0x3b430d);}};exports[_0xfda3('0x41')]=function(_0x54fba2){try{utils['debug'](util[_0xfda3('0x2')](_0xfda3('0x42'),_0x54fba2[_0xfda3('0x43')]),_0x54fba2);if(_0x54fba2['origtransfereruniqueid']==_0x54fba2['origtransfererlinkedid']){if(!_[_0xfda3('0x33')](agents[_0x54fba2[_0xfda3('0x44')]])){utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x45'),_0x54fba2['origtransfereruniqueid'],agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x5')]));agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x46')]=!![];agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x47')]=_0xfda3('0x48');agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x3e')]=_0x54fba2[_0xfda3('0x49')];agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x40')]=_0x54fba2['origtransfereruniqueid'];}if(_0x54fba2[_0xfda3('0x4a')]&&agents[_0x54fba2[_0xfda3('0x4a')]]){agents[_0x54fba2[_0xfda3('0x4a')]][_0xfda3('0x4b')]=0x1;transfers[_0x54fba2[_0xfda3('0x4a')]]=_[_0xfda3('0x4c')](agents[_0x54fba2[_0xfda3('0x4a')]]);transfers[_0x54fba2['transfereeuniqueid']]['calleridnum']=agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x4d')];transfers[_0x54fba2['transfereeuniqueid']][_0xfda3('0x4e')]=agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x4e')];transfers[_0x54fba2[_0xfda3('0x4a')]]['agentcalledAt']=utils['now']();transfers[_0x54fba2[_0xfda3('0x4a')]][_0xfda3('0x2d')]=utils[_0xfda3('0x1f')]();transfers[_0x54fba2['transfereeuniqueid']][_0xfda3('0x2e')]=0x0;transfers[_0x54fba2['transfereeuniqueid']][_0xfda3('0x4b')]=0x2;}}else if(_0x54fba2[_0xfda3('0x44')]==_0x54fba2[_0xfda3('0x4f')]){if(!_[_0xfda3('0x33')](agents[_0x54fba2[_0xfda3('0x43')]])){utils[_0xfda3('0x18')](util['format'](_0xfda3('0x45'),_0x54fba2[_0xfda3('0x43')],agents[_0x54fba2[_0xfda3('0x43')]][_0xfda3('0x5')]));agents[_0x54fba2[_0xfda3('0x43')]]['transfer']=!![];agents[_0x54fba2['origtransfereruniqueid']][_0xfda3('0x47')]=_0xfda3('0x48');agents[_0x54fba2['origtransfereruniqueid']]['transferexten']=_0x54fba2['secondtransfererexten'];agents[_0x54fba2[_0xfda3('0x43')]][_0xfda3('0x40')]=_0x54fba2['secondtransfereruniqueid'];}if(_0x54fba2[_0xfda3('0x50')]&&agents[_0x54fba2[_0xfda3('0x50')]]){agents[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x4b')]=0x1;transfers[_0x54fba2['transfertargetuniqueid']]=_[_0xfda3('0x4c')](agents[_0x54fba2[_0xfda3('0x50')]]);transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x4d')]=agents[_0x54fba2[_0xfda3('0x43')]][_0xfda3('0x4d')];transfers[_0x54fba2['transfertargetuniqueid']]['calleridname']=agents[_0x54fba2[_0xfda3('0x43')]]['calleridname'];transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x51')]=utils[_0xfda3('0x1f')]();transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x2d')]=utils[_0xfda3('0x1f')]();transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x2e')]=0x0;transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x4b')]=0x2;}}}catch(_0x4aa383){utils[_0xfda3('0x1a')](util['format']('[%s][agents][attendedtransfer]',_0x54fba2[_0xfda3('0x43')]),_0x4aa383);}};exports[_0xfda3('0x52')]=function(_0x531874){try{utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x53'),_0x531874['uniqueid']),_0x531874);if(agents[_0x531874[_0xfda3('0x3')]]&&agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')]===_0xfda3('0x20')){if(_0x531874[_0xfda3('0x54')]==='21'){agents[_0x531874['uniqueid']]['reason']='rejected';agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x7')]=_0xfda3('0x55');}utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x56'),_0x531874['uniqueid'],agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x5')],agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')],agents[_0x531874['uniqueid']][_0xfda3('0x7')]));writeDB(agents[_0x531874['uniqueid']]);var _0x311645=unanswered[_0xfda3('0x57')](_0x531874[_0xfda3('0x3')]);if(_0x311645>-0x1){unanswered[_0xfda3('0x58')](_0x311645,0x1);}}if(transfers[_0x531874[_0xfda3('0x3')]]){transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0xd')]=!![];transfers[_0x531874['uniqueid']][_0xfda3('0x36')]=utils[_0xfda3('0x1f')]();transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x23')]=utils[_0xfda3('0x37')](transfers[_0x531874[_0xfda3('0x3')]]['agentcompleteAt'],transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x2d')]);transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')]=_0xfda3('0x59');transfers[_0x531874['uniqueid']][_0xfda3('0x7')]=_0xfda3('0x38');utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x56'),_0x531874[_0xfda3('0x3')],transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x5')],transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')],transfers[_0x531874['uniqueid']][_0xfda3('0x7')]));writeDB(transfers[_0x531874[_0xfda3('0x3')]],!![]);}if(agents[_0x531874[_0xfda3('0x3')]]&&agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x2d')]){agents[_0x531874['uniqueid']]['agentcomplete']=!![];agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x36')]=utils[_0xfda3('0x1f')]();agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x23')]=utils[_0xfda3('0x37')](agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x36')],agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x2d')]);agents[_0x531874[_0xfda3('0x3')]]['reason']=agents[_0x531874[_0xfda3('0x3')]]['transfer']?'transfer':'agent';agents[_0x531874[_0xfda3('0x3')]]['lastevent']=_0xfda3('0x38');utils[_0xfda3('0x18')](util['format'](_0xfda3('0x56'),_0x531874[_0xfda3('0x3')],agents[_0x531874['uniqueid']][_0xfda3('0x5')],agents[_0x531874['uniqueid']][_0xfda3('0x21')],agents[_0x531874[_0xfda3('0x3')]]['lastevent']));writeDB(agents[_0x531874[_0xfda3('0x3')]]);}}catch(_0x2122e3){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x53'),_0x531874['uniqueid']),_0x2122e3);}};
\ No newline at end of file
+var _0x4024=['push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','agentringnoanswerAt','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','answered_elsewhere','[%s][agents][agentcomplete]','agentcompleteAt','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','[%s][agents][hangup]','cause','rejected','indexOf','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','lodash','util','format','uniqueid','channel','interface','calleridnum','connectedlinenum','queue','then','type','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','lastevent','called','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','error','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','timeout','reason','ringtime','talktime'];(function(_0x5006a3,_0x3e635f){var _0x9ac45f=function(_0x489eec){while(--_0x489eec){_0x5006a3['push'](_0x5006a3['shift']());}};_0x9ac45f(++_0x3e635f);}(_0x4024,0x89));var _0x4402=function(_0x1b5cbb,_0x57dbb7){_0x1b5cbb=_0x1b5cbb-0x0;var _0x4e5be7=_0x4024[_0x1b5cbb];return _0x4e5be7;};'use strict';var _=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x3074ac,_0x2b36c7){utils['info'](util[_0x4402('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x3074ac[_0x4402('0x3')],_0x3074ac[_0x4402('0x4')],_0x3074ac['queue'],_0x3074ac['membername'],_0x3074ac[_0x4402('0x5')],_0x3074ac[_0x4402('0x6')],_0x3074ac[_0x4402('0x7')],_0x3074ac['lastevent']));if(_0x3074ac[_0x4402('0x8')]){utils['getVoiceQueueByName'](_0x3074ac['queue'])[_0x4402('0x9')](function(_0x4c6ca4){if(_0x4c6ca4){_0x3074ac['type']=_0x4c6ca4[_0x4402('0xa')];_0x3074ac['agentacw']=_0x3074ac[_0x4402('0xb')]?_0x4c6ca4['acw']:![];_0x3074ac[_0x4402('0xc')]=_0x3074ac['agentacw']?_0x4c6ca4[_0x4402('0xd')]:0x0;}utils[_0x4402('0xe')]('CreateVoiceAgentReport',_0x3074ac);});}else{utils[_0x4402('0xe')](_0x4402('0xf'),_0x3074ac);}if(_0x2b36c7){delete transfers[_0x3074ac[_0x4402('0x3')]];}else{delete agents[_0x3074ac['destuniqueid']];}}exports[_0x4402('0x10')]=function(_0x34d952){try{utils[_0x4402('0x11')](util[_0x4402('0x2')](_0x4402('0x12'),_0x34d952[_0x4402('0x3')]),_0x34d952);agents[_0x34d952[_0x4402('0x13')]]=_0x34d952;agents[_0x34d952[_0x4402('0x13')]][_0x4402('0x14')]=utils[_0x4402('0x15')]();agents[_0x34d952[_0x4402('0x13')]][_0x4402('0x16')]=_0x4402('0x17');agents[_0x34d952[_0x4402('0x13')]][_0x4402('0x7')]=null;agents[_0x34d952[_0x4402('0x13')]][_0x4402('0x18')]=null;utils[_0x4402('0x19')](util[_0x4402('0x2')](_0x4402('0x1a'),_0x34d952['uniqueid'],agents[_0x34d952['destuniqueid']][_0x4402('0x1b')],_0x34d952[_0x4402('0x13')]));}catch(_0x5681c5){utils[_0x4402('0x1c')](util[_0x4402('0x2')]('[%s][agents][agentcalled]',_0x34d952[_0x4402('0x3')]),_0x5681c5);}};exports['agentringnoanswer']=function(_0x55cc8c){try{if(!_[_0x4402('0x1d')](agents[_0x55cc8c[_0x4402('0x13')]])){utils[_0x4402('0x11')](util['format'](_0x4402('0x1e'),_0x55cc8c['uniqueid']),_0x55cc8c);utils['info'](util[_0x4402('0x2')](_0x4402('0x1f'),_0x55cc8c[_0x4402('0x3')],agents[_0x55cc8c[_0x4402('0x13')]][_0x4402('0x1b')],_0x55cc8c[_0x4402('0x13')]));agents[_0x55cc8c[_0x4402('0x13')]][_0x4402('0x20')]=!![];agents[_0x55cc8c[_0x4402('0x13')]]['agentringnoanswerAt']=utils[_0x4402('0x15')]();agents[_0x55cc8c['destuniqueid']][_0x4402('0x16')]=_0x4402('0x21');agents[_0x55cc8c[_0x4402('0x13')]][_0x4402('0x22')]='timeout';agents[_0x55cc8c[_0x4402('0x13')]]['holdtime']=_0x55cc8c['ringtime']?parseInt(_0x55cc8c[_0x4402('0x23')])/0x3e8:0x0;agents[_0x55cc8c[_0x4402('0x13')]][_0x4402('0x24')]=0x0;unanswered[_0x4402('0x25')](_0x55cc8c[_0x4402('0x13')]);}}catch(_0x514e41){utils[_0x4402('0x1c')](util['format'](_0x4402('0x1e'),_0x55cc8c[_0x4402('0x3')]),_0x514e41);}};exports[_0x4402('0x26')]=function(_0x48d20d){try{_[_0x4402('0x27')](agents,function(_0x6c87f6,_0x316239){if(_0x6c87f6[_0x4402('0x3')]==_0x48d20d[_0x4402('0x3')]&&!_[_0x4402('0x28')](unanswered,_0x6c87f6[_0x4402('0x13')])){utils[_0x4402('0x11')](util[_0x4402('0x2')](_0x4402('0x29'),_0x48d20d[_0x4402('0x3')]),_0x48d20d);utils['info'](util[_0x4402('0x2')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x48d20d[_0x4402('0x3')],_0x6c87f6['membername'],_0x6c87f6[_0x4402('0x13')]));_0x6c87f6[_0x4402('0x20')]=!![];_0x6c87f6[_0x4402('0x2a')]=utils[_0x4402('0x15')]();_0x6c87f6[_0x4402('0x16')]='abandoned';_0x6c87f6[_0x4402('0x22')]=_0x4402('0x2b');_0x6c87f6[_0x4402('0x2c')]=_0x48d20d['holdtime'];_0x6c87f6[_0x4402('0x24')]=0x0;writeDB(_0x6c87f6);}});}catch(_0x3383e3){utils['error'](util[_0x4402('0x2')](_0x4402('0x29'),_0x48d20d[_0x4402('0x3')]),_0x3383e3);}};exports[_0x4402('0x2d')]=function(_0x170058){try{if(agents[_0x170058[_0x4402('0x13')]]){utils[_0x4402('0x11')](util[_0x4402('0x2')](_0x4402('0x2e'),_0x170058['uniqueid']),_0x170058);utils[_0x4402('0x19')](util[_0x4402('0x2')](_0x4402('0x2f'),_0x170058['uniqueid'],agents[_0x170058[_0x4402('0x13')]][_0x4402('0x1b')],_0x170058['destuniqueid']));agents[_0x170058['destuniqueid']][_0x4402('0x30')]=utils[_0x4402('0x15')]();agents[_0x170058[_0x4402('0x13')]][_0x4402('0x7')]=_0x170058['connectedlinenum'];agents[_0x170058['destuniqueid']]['connectedlinename']=_0x170058[_0x4402('0x18')];agents[_0x170058[_0x4402('0x13')]][_0x4402('0x2c')]=_0x170058[_0x4402('0x23')];agents[_0x170058['destuniqueid']][_0x4402('0x16')]=_0x4402('0x31');_[_0x4402('0x27')](agents,function(_0x57843d,_0x2b92b7){if(_0x57843d['destuniqueid']!=_0x170058[_0x4402('0x13')]&&_0x57843d[_0x4402('0x3')]==_0x170058['uniqueid']){_0x57843d[_0x4402('0x24')]=0x0;_0x57843d['holdtime']=_0x170058[_0x4402('0x23')];_0x57843d[_0x4402('0x20')]=!![];_0x57843d['agentringnoanswerAt']=utils[_0x4402('0x15')]();_0x57843d[_0x4402('0x16')]=_0x4402('0x32');_0x57843d[_0x4402('0x22')]='answered_elsewhere';_0x57843d['answeredelsewheredestinationuniqueid']=_0x170058[_0x4402('0x13')];_0x57843d['answeredelsewheremembername']=_0x170058[_0x4402('0x1b')];writeDB(_0x57843d);}});}}catch(_0x2a6d78){utils[_0x4402('0x1c')](util[_0x4402('0x2')](_0x4402('0x2e'),_0x170058[_0x4402('0x3')]),_0x2a6d78);}};exports[_0x4402('0xb')]=function(_0x390169){try{if(!_[_0x4402('0x1d')](agents[_0x390169[_0x4402('0x13')]])){utils['debug'](util[_0x4402('0x2')](_0x4402('0x33'),_0x390169['uniqueid']),_0x390169);utils[_0x4402('0x19')](util[_0x4402('0x2')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x390169[_0x4402('0x3')],agents[_0x390169[_0x4402('0x13')]][_0x4402('0x1b')],_0x390169[_0x4402('0x13')]));agents[_0x390169[_0x4402('0x13')]]['agentcomplete']=!![];agents[_0x390169[_0x4402('0x13')]][_0x4402('0x34')]=utils[_0x4402('0x15')]();agents[_0x390169[_0x4402('0x13')]][_0x4402('0x24')]=utils[_0x4402('0x35')](agents[_0x390169[_0x4402('0x13')]][_0x4402('0x34')],agents[_0x390169[_0x4402('0x13')]][_0x4402('0x30')]);agents[_0x390169[_0x4402('0x13')]]['reason']=_0x390169[_0x4402('0x22')];agents[_0x390169['destuniqueid']][_0x4402('0x16')]=_0x4402('0x36');writeDB(agents[_0x390169['destuniqueid']]);}}catch(_0x82f63a){utils[_0x4402('0x1c')](util[_0x4402('0x2')](_0x4402('0x33'),_0x390169[_0x4402('0x3')]),_0x82f63a);}};exports[_0x4402('0x37')]=function(_0x5b094b){try{if(!_[_0x4402('0x1d')](agents[_0x5b094b[_0x4402('0x38')]])){utils[_0x4402('0x11')](util[_0x4402('0x2')](_0x4402('0x39'),_0x5b094b[_0x4402('0x3')]),_0x5b094b);utils[_0x4402('0x19')](util[_0x4402('0x2')](_0x4402('0x3a'),_0x5b094b['uniqueid'],agents[_0x5b094b['transfereruniqueid']]['membername'],agents[_0x5b094b['transfereruniqueid']][_0x4402('0x3')]));agents[_0x5b094b[_0x4402('0x38')]][_0x4402('0x3b')]=!![];agents[_0x5b094b[_0x4402('0x38')]]['transfertype']=_0x4402('0x3c');agents[_0x5b094b[_0x4402('0x38')]][_0x4402('0x3d')]=_0x5b094b[_0x4402('0x3e')];agents[_0x5b094b[_0x4402('0x38')]][_0x4402('0x3f')]=agents[_0x5b094b[_0x4402('0x38')]]['uniqueid'];}}catch(_0x325b20){utils[_0x4402('0x1c')](util[_0x4402('0x2')](_0x4402('0x39'),_0x5b094b[_0x4402('0x3')]),_0x325b20);}};exports[_0x4402('0x40')]=function(_0x5477fd){try{utils[_0x4402('0x11')](util[_0x4402('0x2')](_0x4402('0x41'),_0x5477fd[_0x4402('0x42')]),_0x5477fd);if(_0x5477fd[_0x4402('0x42')]==_0x5477fd[_0x4402('0x43')]){if(!_[_0x4402('0x1d')](agents[_0x5477fd['secondtransfereruniqueid']])){utils['info'](util[_0x4402('0x2')](_0x4402('0x44'),_0x5477fd[_0x4402('0x42')],agents[_0x5477fd['secondtransfereruniqueid']]['membername']));agents[_0x5477fd[_0x4402('0x45')]][_0x4402('0x3b')]=!![];agents[_0x5477fd[_0x4402('0x45')]][_0x4402('0x46')]=_0x4402('0x47');agents[_0x5477fd[_0x4402('0x45')]][_0x4402('0x3d')]=_0x5477fd[_0x4402('0x48')];agents[_0x5477fd[_0x4402('0x45')]][_0x4402('0x3f')]=_0x5477fd[_0x4402('0x42')];}if(_0x5477fd[_0x4402('0x49')]&&agents[_0x5477fd[_0x4402('0x49')]]){agents[_0x5477fd['transfereeuniqueid']][_0x4402('0x4a')]=0x1;transfers[_0x5477fd['transfereeuniqueid']]=_[_0x4402('0x4b')](agents[_0x5477fd['transfereeuniqueid']]);transfers[_0x5477fd[_0x4402('0x49')]][_0x4402('0x6')]=agents[_0x5477fd[_0x4402('0x45')]][_0x4402('0x6')];transfers[_0x5477fd[_0x4402('0x49')]][_0x4402('0x4c')]=agents[_0x5477fd['secondtransfereruniqueid']][_0x4402('0x4c')];transfers[_0x5477fd[_0x4402('0x49')]][_0x4402('0x14')]=utils[_0x4402('0x15')]();transfers[_0x5477fd[_0x4402('0x49')]]['agentconnectAt']=utils[_0x4402('0x15')]();transfers[_0x5477fd[_0x4402('0x49')]][_0x4402('0x2c')]=0x0;transfers[_0x5477fd[_0x4402('0x49')]][_0x4402('0x4a')]=0x2;}}else if(_0x5477fd[_0x4402('0x45')]==_0x5477fd[_0x4402('0x4d')]){if(!_[_0x4402('0x1d')](agents[_0x5477fd['origtransfereruniqueid']])){utils[_0x4402('0x19')](util[_0x4402('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x5477fd[_0x4402('0x42')],agents[_0x5477fd[_0x4402('0x42')]]['membername']));agents[_0x5477fd['origtransfereruniqueid']][_0x4402('0x3b')]=!![];agents[_0x5477fd[_0x4402('0x42')]][_0x4402('0x46')]='ATTENDED';agents[_0x5477fd[_0x4402('0x42')]][_0x4402('0x3d')]=_0x5477fd[_0x4402('0x4e')];agents[_0x5477fd['origtransfereruniqueid']][_0x4402('0x3f')]=_0x5477fd[_0x4402('0x45')];}if(_0x5477fd[_0x4402('0x4f')]&&agents[_0x5477fd['transfertargetuniqueid']]){agents[_0x5477fd[_0x4402('0x4f')]][_0x4402('0x4a')]=0x1;transfers[_0x5477fd['transfertargetuniqueid']]=_['clone'](agents[_0x5477fd[_0x4402('0x4f')]]);transfers[_0x5477fd['transfertargetuniqueid']][_0x4402('0x6')]=agents[_0x5477fd[_0x4402('0x42')]]['calleridnum'];transfers[_0x5477fd['transfertargetuniqueid']][_0x4402('0x4c')]=agents[_0x5477fd[_0x4402('0x42')]][_0x4402('0x4c')];transfers[_0x5477fd[_0x4402('0x4f')]]['agentcalledAt']=utils[_0x4402('0x15')]();transfers[_0x5477fd[_0x4402('0x4f')]][_0x4402('0x30')]=utils[_0x4402('0x15')]();transfers[_0x5477fd[_0x4402('0x4f')]][_0x4402('0x2c')]=0x0;transfers[_0x5477fd[_0x4402('0x4f')]]['agententerreason']=0x2;}}}catch(_0x333a72){utils[_0x4402('0x1c')](util['format']('[%s][agents][attendedtransfer]',_0x5477fd[_0x4402('0x42')]),_0x333a72);}};exports['hangup']=function(_0x30569e){try{utils['debug'](util[_0x4402('0x2')](_0x4402('0x50'),_0x30569e[_0x4402('0x3')]),_0x30569e);if(agents[_0x30569e[_0x4402('0x3')]]&&agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x22')]===_0x4402('0x21')){if(_0x30569e[_0x4402('0x51')]==='21'){agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x22')]=_0x4402('0x52');agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x16')]=_0x4402('0x52');}utils[_0x4402('0x19')](util[_0x4402('0x2')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x30569e[_0x4402('0x3')],agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x1b')],agents[_0x30569e['uniqueid']][_0x4402('0x22')],agents[_0x30569e['uniqueid']][_0x4402('0x16')]));writeDB(agents[_0x30569e[_0x4402('0x3')]]);var _0x466755=unanswered[_0x4402('0x53')](_0x30569e['uniqueid']);if(_0x466755>-0x1){unanswered[_0x4402('0x54')](_0x466755,0x1);}}if(transfers[_0x30569e['uniqueid']]){transfers[_0x30569e[_0x4402('0x3')]][_0x4402('0xb')]=!![];transfers[_0x30569e[_0x4402('0x3')]]['agentcompleteAt']=utils[_0x4402('0x15')]();transfers[_0x30569e['uniqueid']][_0x4402('0x24')]=utils[_0x4402('0x35')](transfers[_0x30569e[_0x4402('0x3')]][_0x4402('0x34')],transfers[_0x30569e[_0x4402('0x3')]][_0x4402('0x30')]);transfers[_0x30569e[_0x4402('0x3')]][_0x4402('0x22')]=_0x4402('0x55');transfers[_0x30569e['uniqueid']][_0x4402('0x16')]=_0x4402('0x36');utils[_0x4402('0x19')](util[_0x4402('0x2')](_0x4402('0x56'),_0x30569e[_0x4402('0x3')],transfers[_0x30569e[_0x4402('0x3')]][_0x4402('0x1b')],transfers[_0x30569e[_0x4402('0x3')]]['reason'],transfers[_0x30569e[_0x4402('0x3')]][_0x4402('0x16')]));writeDB(transfers[_0x30569e[_0x4402('0x3')]],!![]);}if(agents[_0x30569e['uniqueid']]&&agents[_0x30569e[_0x4402('0x3')]]['agentconnectAt']){agents[_0x30569e[_0x4402('0x3')]]['agentcomplete']=!![];agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x34')]=utils['now']();agents[_0x30569e[_0x4402('0x3')]]['talktime']=utils[_0x4402('0x35')](agents[_0x30569e[_0x4402('0x3')]]['agentcompleteAt'],agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x30')]);agents[_0x30569e['uniqueid']][_0x4402('0x22')]=agents[_0x30569e[_0x4402('0x3')]]['transfer']?_0x4402('0x3b'):_0x4402('0x55');agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x16')]=_0x4402('0x36');utils[_0x4402('0x19')](util[_0x4402('0x2')](_0x4402('0x56'),_0x30569e[_0x4402('0x3')],agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x1b')],agents[_0x30569e[_0x4402('0x3')]][_0x4402('0x22')],agents[_0x30569e[_0x4402('0x3')]]['lastevent']));writeDB(agents[_0x30569e[_0x4402('0x3')]]);}}catch(_0xc3914e){utils['error'](util[_0x4402('0x2')]('[%s][agents][hangup]',_0x30569e[_0x4402('0x3')]),_0xc3914e);}};
\ No newline at end of file
index 8b52a19..9058509 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a87=['lastIndexOf','noop','execif','lodash','./transfers.controller','FAILED','NO\x20ANSWER','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','blinds','recording','newchannel','[%s][calls][newchannel]','linkedid','channel','context','exten','now','DOCUMENTATION','newstate','debug','[%s][calls][newstate]','isNil','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','channelstate','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','error','hangup','[%s][calls][hangup]','callerid','calleridnum','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','starttime','diffTime','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','userfield','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','source','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','cdr','substring'];(function(_0x215165,_0x58ef38){var _0x131933=function(_0x4e49e3){while(--_0x4e49e3){_0x215165['push'](_0x215165['shift']());}};_0x131933(++_0x58ef38);}(_0x8a87,0x6b));var _0x78a8=function(_0x45d953,_0xc720fa){_0x45d953=_0x45d953-0x0;var _0x178996=_0x8a87[_0x45d953];return _0x178996;};'use strict';var _=require(_0x78a8('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0x78a8('0x1'));var dispositions=['NO\x20ANSWER',_0x78a8('0x2'),_0x78a8('0x2'),_0x78a8('0x3'),'NO\x20ANSWER',_0x78a8('0x3'),'ANSWERED','BUSY',_0x78a8('0x2'),_0x78a8('0x2'),_0x78a8('0x2')];var channels={};function writeDB(_0x1d8888){var _0x2ba377;if(transfers['blinds'][_0x1d8888[_0x78a8('0x4')]]){_0x2ba377=_0x1d8888['uniqueid'];_0x1d8888[_0x78a8('0x4')]=transfers['blinds'][_0x1d8888[_0x78a8('0x4')]][_0x78a8('0x5')];}utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x8'),_0x1d8888['uniqueid'],_0x1d8888['channel'],_0x1d8888[_0x78a8('0x9')],_0x1d8888[_0x78a8('0xa')],_0x1d8888[_0x78a8('0xb')],_0x1d8888['calleridnum'],_0x1d8888[_0x78a8('0xc')],_0x1d8888[_0x78a8('0xd')]));if(_0x1d8888[_0x78a8('0xe')]){utils[_0x78a8('0xf')](_0x1d8888['accountcode'])[_0x78a8('0x10')](function(_0x35b5ca){if(_0x35b5ca){_0x1d8888[_0x78a8('0x11')]=_0x35b5ca['id'];}utils[_0x78a8('0x12')](_0x78a8('0x13'),_0x1d8888);});}else{utils[_0x78a8('0x12')]('CreateVoiceCallReport',_0x1d8888);}if(channels[_0x1d8888['uniqueid']]){delete channels[_0x1d8888['uniqueid']];}else if(_0x2ba377&&channels[_0x2ba377]){if(!transfers[_0x78a8('0x14')][_0x2ba377][_0x78a8('0x15')])delete transfers[_0x78a8('0x14')][_0x2ba377];delete channels[_0x2ba377];}}exports[_0x78a8('0x16')]=function(_0x2adfb0){try{utils['debug'](util['format'](_0x78a8('0x17'),_0x2adfb0[_0x78a8('0x4')]),_0x2adfb0);if(_0x2adfb0['uniqueid']==_0x2adfb0[_0x78a8('0x18')]&&_0x2adfb0[_0x78a8('0x19')]!='OutgoingSpoolFailed'){utils[_0x78a8('0x6')](util['format']('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x2adfb0[_0x78a8('0x4')],_0x2adfb0[_0x78a8('0x1a')],_0x2adfb0[_0x78a8('0x1b')]));channels[_0x2adfb0['uniqueid']]={'uniqueid':_0x2adfb0[_0x78a8('0x4')],'accountcode':_0x2adfb0['accountcode'],'source':_0x2adfb0['calleridnum'],'destination':_0x2adfb0[_0x78a8('0x1b')],'destinationcontext':_0x2adfb0[_0x78a8('0x1a')],'channel':_0x2adfb0[_0x78a8('0x19')],'starttime':utils[_0x78a8('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x78a8('0x3'),'amaflags':_0x78a8('0x1d')};}}catch(_0x149adc){utils['error'](util[_0x78a8('0x7')]('[%s][calls][newchannel]',_0x2adfb0[_0x78a8('0x4')]),_0x149adc);}};exports[_0x78a8('0x1e')]=function(_0x215f10){try{utils[_0x78a8('0x1f')](util[_0x78a8('0x7')](_0x78a8('0x20'),_0x215f10[_0x78a8('0x4')]),_0x215f10);if(!_[_0x78a8('0x21')](channels[_0x215f10[_0x78a8('0x4')]])&&_0x215f10['channelstate']==0x6){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x22'),_0x215f10[_0x78a8('0x4')],_0x215f10['context'],_0x215f10[_0x78a8('0x19')]));if(_[_0x78a8('0x21')](channels[_0x215f10[_0x78a8('0x4')]][_0x78a8('0x23')])){channels[_0x215f10[_0x78a8('0x4')]]['systemanswertime']=utils['now']();}}else if(!_[_0x78a8('0x21')](channels[_0x215f10['linkedid']])&&_0x215f10[_0x78a8('0x24')]==0x6&&_0x215f10['context']!='transfer'){utils['info'](util['format'](_0x78a8('0x25'),_0x215f10[_0x78a8('0x4')],_0x215f10[_0x78a8('0x18')],_0x215f10[_0x78a8('0x1a')],_0x215f10[_0x78a8('0x19')]));channels[_0x215f10['linkedid']][_0x78a8('0xe')]=_0x215f10[_0x78a8('0xe')];channels[_0x215f10[_0x78a8('0x18')]][_0x78a8('0x26')]=_0x215f10[_0x78a8('0x19')];if(_[_0x78a8('0x21')](channels[_0x215f10[_0x78a8('0x18')]][_0x78a8('0x27')])){channels[_0x215f10['linkedid']][_0x78a8('0x27')]=utils['now']();}channels[_0x215f10['linkedid']][_0x78a8('0x28')]=dispositions[_['toNumber'](_0x215f10[_0x78a8('0x24')])]||'ANSWERED';}}catch(_0x3209a8){utils[_0x78a8('0x29')](util[_0x78a8('0x7')](_0x78a8('0x20'),_0x215f10[_0x78a8('0x4')]),_0x3209a8);}};exports[_0x78a8('0x2a')]=function(_0xb6879c){try{if(!_[_0x78a8('0x21')](channels[_0xb6879c[_0x78a8('0x4')]])){utils['debug'](util[_0x78a8('0x7')](_0x78a8('0x2b'),_0xb6879c[_0x78a8('0x4')]),_0xb6879c);if(_[_0x78a8('0x21')](channels[_0xb6879c[_0x78a8('0x4')]]['callerid'])){channels[_0xb6879c['uniqueid']][_0x78a8('0x2c')]=_0xb6879c['calleridname']+'\x20<'+_0xb6879c[_0x78a8('0x2d')]+'>';}utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x2e'),_0xb6879c[_0x78a8('0x4')],channels[_0xb6879c[_0x78a8('0x4')]]['callerid'],_0xb6879c[_0x78a8('0x2f')]));channels[_0xb6879c[_0x78a8('0x4')]]['endtime']=utils[_0x78a8('0x1c')]();channels[_0xb6879c[_0x78a8('0x4')]]['duration']=utils['diffTime'](channels[_0xb6879c[_0x78a8('0x4')]][_0x78a8('0x30')],channels[_0xb6879c['uniqueid']][_0x78a8('0x31')]);channels[_0xb6879c[_0x78a8('0x4')]]['billableseconds']=channels[_0xb6879c['uniqueid']][_0x78a8('0x27')]?utils[_0x78a8('0x32')](channels[_0xb6879c[_0x78a8('0x4')]]['endtime'],channels[_0xb6879c[_0x78a8('0x4')]][_0x78a8('0x27')]):0x0;writeDB(channels[_0xb6879c['uniqueid']]);}}catch(_0x416bae){utils[_0x78a8('0x29')](util[_0x78a8('0x7')]('[%s][calls][hangup]',_0xb6879c[_0x78a8('0x4')]),_0x416bae);}};exports['attendedtransfer']=function(_0x1d6aba){try{if(!_[_0x78a8('0x21')](channels[_0x1d6aba[_0x78a8('0x33')]])){utils[_0x78a8('0x1f')](util[_0x78a8('0x7')](_0x78a8('0x34'),_0x1d6aba[_0x78a8('0x35')]),_0x1d6aba);if(channels[_0x1d6aba[_0x78a8('0x33')]][_0x78a8('0x19')]==_0x1d6aba[_0x78a8('0x36')]){utils['info'](util[_0x78a8('0x7')](_0x78a8('0x37'),_0x1d6aba[_0x78a8('0x35')],_0x1d6aba['localtwolinkedid'],_0x1d6aba['secondtransfererchannel']));channels[_0x1d6aba[_0x78a8('0x33')]][_0x78a8('0x26')]=_0x1d6aba['secondtransfererchannel'];channels[_0x1d6aba[_0x78a8('0x33')]][_0x78a8('0x38')]='_attended';}else if(channels[_0x1d6aba[_0x78a8('0x33')]][_0x78a8('0x19')]=_0x1d6aba['transfertargetchannel']){utils['info'](util[_0x78a8('0x7')](_0x78a8('0x37'),_0x1d6aba['origtransfereruniqueid'],_0x1d6aba[_0x78a8('0x33')],_0x1d6aba['origtransfererchannel']));channels[_0x1d6aba[_0x78a8('0x33')]][_0x78a8('0x26')]=_0x1d6aba[_0x78a8('0x39')];channels[_0x1d6aba[_0x78a8('0x33')]][_0x78a8('0x38')]='_attended';}}}catch(_0x18d5e2){utils[_0x78a8('0x29')](util[_0x78a8('0x7')]('[%s][calls][attendedtransfer]',_0x1d6aba[_0x78a8('0x35')]),_0x18d5e2);}};exports[_0x78a8('0x3a')]=function(_0x20a9b9){try{if(!_[_0x78a8('0x21')](channels[_0x20a9b9[_0x78a8('0x4')]])){utils[_0x78a8('0x1f')](util[_0x78a8('0x7')](_0x78a8('0x3b'),_0x20a9b9['uniqueid']),_0x20a9b9);channels[_0x20a9b9[_0x78a8('0x4')]][_0x78a8('0x3c')]=utils['now']();utils['info'](util['format']('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x20a9b9[_0x78a8('0x4')],channels[_0x20a9b9[_0x78a8('0x4')]][_0x78a8('0x3c')]));}}catch(_0x49166e){utils[_0x78a8('0x29')](util[_0x78a8('0x7')](_0x78a8('0x3b'),_0x20a9b9['uniqueid']),_0x49166e);}};exports[_0x78a8('0x3d')]=function(_0x55c3c5){try{if(!_[_0x78a8('0x21')](channels[_0x55c3c5['uniqueid']])){utils[_0x78a8('0x1f')](util['format'](_0x78a8('0x3e'),_0x55c3c5[_0x78a8('0x4')]),_0x55c3c5);if(!_[_0x78a8('0x21')](channels[_0x55c3c5[_0x78a8('0x4')]][_0x78a8('0x3c')])){channels[_0x55c3c5[_0x78a8('0x4')]]['mohtime']+=utils['diffTime'](utils[_0x78a8('0x1c')](),channels[_0x55c3c5[_0x78a8('0x4')]][_0x78a8('0x3c')]);utils['info'](util['format'](_0x78a8('0x3f'),_0x55c3c5[_0x78a8('0x4')],channels[_0x55c3c5[_0x78a8('0x4')]]['mohtime']));delete channels[_0x55c3c5[_0x78a8('0x4')]][_0x78a8('0x3c')];}}}catch(_0x1d6721){utils['error'](util[_0x78a8('0x7')]('[%s][calls][musiconholdstop]',_0x55c3c5[_0x78a8('0x4')]),_0x1d6721);}};exports[_0x78a8('0x40')]=function(_0x17ee83){try{if(!_[_0x78a8('0x21')](channels[_0x17ee83['uniqueid']])){utils[_0x78a8('0x1f')](util['format'](_0x78a8('0x41'),_0x17ee83[_0x78a8('0x4')]),_0x17ee83);if(!_[_0x78a8('0x21')](_0x17ee83[_0x78a8('0x42')][_0x78a8('0x43')])){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x44'),_0x17ee83[_0x78a8('0x4')],_0x17ee83['value']));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x45')]=_0x17ee83[_0x78a8('0x46')];}if(!_['isNil'](_0x17ee83['variable'][_0x78a8('0x47')])){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x48'),_0x17ee83[_0x78a8('0x4')],_0x17ee83[_0x78a8('0x46')]));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x49')]=_0x17ee83[_0x78a8('0x46')];channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x2c')]='\x22'+_0x17ee83[_0x78a8('0x46')]+_0x78a8('0x4a')+_0x17ee83[_0x78a8('0x46')]+'>';}if(!_[_0x78a8('0x21')](_0x17ee83[_0x78a8('0x42')][_0x78a8('0x4b')])||!_[_0x78a8('0x21')](_0x17ee83[_0x78a8('0x42')][_0x78a8('0x4c')])){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x4d'),_0x17ee83[_0x78a8('0x4')],!_[_0x78a8('0x21')](_0x17ee83['variable'][_0x78a8('0x4b')])?_0x78a8('0x4b'):_0x78a8('0x4c'),_0x17ee83['value']));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x2c')]=_0x17ee83[_0x78a8('0x46')];}if(!_['isNil'](_0x17ee83[_0x78a8('0x42')][_0x78a8('0x4e')])||!_[_0x78a8('0x21')](_0x17ee83[_0x78a8('0x42')][_0x78a8('0x4f')])){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x4d'),_0x17ee83[_0x78a8('0x4')],!_['isNil'](_0x17ee83['variable']['xmd-queue'])?_0x78a8('0x4e'):'xmcs-queue',_0x17ee83['value']));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x50')]=_0x78a8('0x51');channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x52')]=_0x17ee83['value'];channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x9')]=!![];}if(!_[_0x78a8('0x21')](_0x17ee83['variable']['xmd-contactid'])){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x53'),_0x17ee83['uniqueid'],_0x17ee83['value']));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x54')]=_0x17ee83[_0x78a8('0x46')];}if(!_[_0x78a8('0x21')](_0x17ee83['variable'][_0x78a8('0x55')])){utils[_0x78a8('0x6')](util[_0x78a8('0x7')](_0x78a8('0x56'),_0x17ee83['uniqueid'],_0x17ee83[_0x78a8('0x46')]));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x57')]=_0x17ee83['value'];}if(!_['isNil'](_0x17ee83[_0x78a8('0x42')]['outboundrouteid'])){utils['info'](util[_0x78a8('0x7')](_0x78a8('0x58'),_0x17ee83[_0x78a8('0x4')],_0x17ee83[_0x78a8('0x46')]));channels[_0x17ee83['uniqueid']][_0x78a8('0x59')]=_0x17ee83[_0x78a8('0x46')];}if(!_['isNil'](_0x17ee83['variable'][_0x78a8('0x5a')])){utils[_0x78a8('0x6')](util['format']('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x17ee83[_0x78a8('0x4')],_0x17ee83[_0x78a8('0x46')]));channels[_0x17ee83[_0x78a8('0x4')]][_0x78a8('0x5a')]=_0x17ee83[_0x78a8('0x46')];}}}catch(_0x123c74){utils[_0x78a8('0x29')](util[_0x78a8('0x7')]('[%s][calls][varset]',_0x17ee83[_0x78a8('0x4')]),_0x123c74);}};exports[_0x78a8('0x5b')]=function(_0x5f3b3e){try{if(!_[_0x78a8('0x21')](channels[_0x5f3b3e[_0x78a8('0x4')]])){utils[_0x78a8('0x1f')](util['format'](_0x78a8('0x5c'),_0x5f3b3e['uniqueid']),_0x5f3b3e);utils[_0x78a8('0x6')](util['format'](_0x78a8('0x5d'),_0x5f3b3e['uniqueid'],_0x5f3b3e[_0x78a8('0x5e')],_0x5f3b3e[_0x78a8('0x5f')]));if(_0x5f3b3e[_0x78a8('0x5e')]['toLowerCase']()==_0x78a8('0x60')&&_[_0x78a8('0x61')](_0x5f3b3e[_0x78a8('0x5f')][_0x78a8('0x62')](),_0x78a8('0x63'))){var _0x5ca580=_0x5f3b3e[_0x78a8('0x5f')]['split']('=');var _0x407405=_0x5ca580[0x0][_0x78a8('0x64')](_0x5ca580[0x0][_0x78a8('0x65')]('(')+0x1,_0x5ca580[0x0][_0x78a8('0x65')](')'));var _0x2cd7a8=_0x5ca580[0x1];channels[_0x5f3b3e[_0x78a8('0x4')]][_0x407405]=_0x2cd7a8;}if(!_['includes']([_0x78a8('0x2a'),_0x78a8('0x66'),_0x78a8('0x67'),_0x78a8('0x60'),'gotoif'],_0x5f3b3e[_0x78a8('0x5e')][_0x78a8('0x62')]())){channels[_0x5f3b3e[_0x78a8('0x4')]][_0x78a8('0x50')]=_0x5f3b3e[_0x78a8('0x5e')];channels[_0x5f3b3e['uniqueid']][_0x78a8('0x52')]=_0x5f3b3e['appdata'];}}}catch(_0x5d6fb0){utils['error'](util[_0x78a8('0x7')](_0x78a8('0x5c'),_0x5f3b3e[_0x78a8('0x4')]),_0x5d6fb0);}};
\ No newline at end of file
+var _0x652a=['debug','[%s][calls][newchannel]','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','isNil','systemanswertime','channelstate','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','info','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime','starttime','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','musiconholdstartAt','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','xmd-queue','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','lastapplication','Queue','lastdata','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','cdr','substring','lastIndexOf','includes','noop','execif','gotoif','lodash','util','./utils','./transfers.controller','FAILED','NO\x20ANSWER','ANSWERED','uniqueid','blinds','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','newchannel'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x652a,0x1ae));var _0xa652=function(_0x25aadd,_0x36afd6){_0x25aadd=_0x25aadd-0x0;var _0x2c2ad5=_0x652a[_0x25aadd];return _0x2c2ad5;};'use strict';var _=require(_0xa652('0x0'));var util=require(_0xa652('0x1'));var utils=require(_0xa652('0x2'));var transfers=require(_0xa652('0x3'));var dispositions=['NO\x20ANSWER','FAILED',_0xa652('0x4'),_0xa652('0x5'),_0xa652('0x5'),_0xa652('0x5'),_0xa652('0x6'),'BUSY',_0xa652('0x4'),_0xa652('0x4'),_0xa652('0x4')];var channels={};function writeDB(_0x1fc5f5){var _0x36037c;if(transfers['blinds'][_0x1fc5f5['uniqueid']]){_0x36037c=_0x1fc5f5[_0xa652('0x7')];_0x1fc5f5[_0xa652('0x7')]=transfers[_0xa652('0x8')][_0x1fc5f5[_0xa652('0x7')]]['transfereeuniqueid'];}utils['info'](util[_0xa652('0x9')](_0xa652('0xa'),_0x1fc5f5[_0xa652('0x7')],_0x1fc5f5[_0xa652('0xb')],_0x1fc5f5[_0xa652('0xc')],_0x1fc5f5[_0xa652('0xd')],_0x1fc5f5[_0xa652('0xe')],_0x1fc5f5[_0xa652('0xf')],_0x1fc5f5[_0xa652('0x10')],_0x1fc5f5[_0xa652('0x11')]));if(_0x1fc5f5[_0xa652('0x12')]){utils[_0xa652('0x13')](_0x1fc5f5['accountcode'])[_0xa652('0x14')](function(_0x537c68){if(_0x537c68){_0x1fc5f5[_0xa652('0x15')]=_0x537c68['id'];}utils[_0xa652('0x16')](_0xa652('0x17'),_0x1fc5f5);});}else{utils[_0xa652('0x16')](_0xa652('0x17'),_0x1fc5f5);}if(channels[_0x1fc5f5['uniqueid']]){delete channels[_0x1fc5f5[_0xa652('0x7')]];}else if(_0x36037c&&channels[_0x36037c]){if(!transfers[_0xa652('0x8')][_0x36037c][_0xa652('0x18')])delete transfers[_0xa652('0x8')][_0x36037c];delete channels[_0x36037c];}}exports[_0xa652('0x19')]=function(_0x3a3e16){try{utils[_0xa652('0x1a')](util['format'](_0xa652('0x1b'),_0x3a3e16[_0xa652('0x7')]),_0x3a3e16);if(_0x3a3e16[_0xa652('0x7')]==_0x3a3e16[_0xa652('0x1c')]&&_0x3a3e16[_0xa652('0xb')]!='OutgoingSpoolFailed'){utils['info'](util[_0xa652('0x9')](_0xa652('0x1d'),_0x3a3e16['uniqueid'],_0x3a3e16[_0xa652('0x1e')],_0x3a3e16[_0xa652('0x1f')]));channels[_0x3a3e16[_0xa652('0x7')]]={'uniqueid':_0x3a3e16[_0xa652('0x7')],'accountcode':_0x3a3e16[_0xa652('0x12')],'source':_0x3a3e16[_0xa652('0xf')],'destination':_0x3a3e16['exten'],'destinationcontext':_0x3a3e16[_0xa652('0x1e')],'channel':_0x3a3e16[_0xa652('0xb')],'starttime':utils[_0xa652('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xa652('0x21')};}}catch(_0x242ab7){utils[_0xa652('0x22')](util[_0xa652('0x9')](_0xa652('0x1b'),_0x3a3e16[_0xa652('0x7')]),_0x242ab7);}};exports['newstate']=function(_0x2576d0){try{utils[_0xa652('0x1a')](util[_0xa652('0x9')]('[%s][calls][newstate]',_0x2576d0['uniqueid']),_0x2576d0);if(!_['isNil'](channels[_0x2576d0['uniqueid']])&&_0x2576d0['channelstate']==0x6){utils['info'](util[_0xa652('0x9')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x2576d0[_0xa652('0x7')],_0x2576d0[_0xa652('0x1e')],_0x2576d0['channel']));if(_[_0xa652('0x23')](channels[_0x2576d0[_0xa652('0x7')]][_0xa652('0x24')])){channels[_0x2576d0[_0xa652('0x7')]][_0xa652('0x24')]=utils[_0xa652('0x20')]();}}else if(!_[_0xa652('0x23')](channels[_0x2576d0[_0xa652('0x1c')]])&&_0x2576d0[_0xa652('0x25')]==0x6&&_0x2576d0[_0xa652('0x1e')]!=_0xa652('0x26')){utils['info'](util[_0xa652('0x9')](_0xa652('0x27'),_0x2576d0[_0xa652('0x7')],_0x2576d0[_0xa652('0x1c')],_0x2576d0['context'],_0x2576d0[_0xa652('0xb')]));channels[_0x2576d0['linkedid']][_0xa652('0x12')]=_0x2576d0[_0xa652('0x12')];channels[_0x2576d0[_0xa652('0x1c')]][_0xa652('0x28')]=_0x2576d0[_0xa652('0xb')];if(_['isNil'](channels[_0x2576d0[_0xa652('0x1c')]][_0xa652('0x29')])){channels[_0x2576d0[_0xa652('0x1c')]]['answertime']=utils[_0xa652('0x20')]();}channels[_0x2576d0[_0xa652('0x1c')]]['disposition']=dispositions[_[_0xa652('0x2a')](_0x2576d0[_0xa652('0x25')])]||_0xa652('0x6');}}catch(_0x392ce5){utils[_0xa652('0x22')](util[_0xa652('0x9')](_0xa652('0x2b'),_0x2576d0[_0xa652('0x7')]),_0x392ce5);}};exports[_0xa652('0x2c')]=function(_0x4ffecd){try{if(!_[_0xa652('0x23')](channels[_0x4ffecd['uniqueid']])){utils[_0xa652('0x1a')](util[_0xa652('0x9')](_0xa652('0x2d'),_0x4ffecd[_0xa652('0x7')]),_0x4ffecd);if(_[_0xa652('0x23')](channels[_0x4ffecd['uniqueid']][_0xa652('0x2e')])){channels[_0x4ffecd[_0xa652('0x7')]][_0xa652('0x2e')]=_0x4ffecd[_0xa652('0x2f')]+'\x20<'+_0x4ffecd[_0xa652('0xf')]+'>';}utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x31'),_0x4ffecd[_0xa652('0x7')],channels[_0x4ffecd[_0xa652('0x7')]][_0xa652('0x2e')],_0x4ffecd['cause-txt']));channels[_0x4ffecd[_0xa652('0x7')]][_0xa652('0x32')]=utils['now']();channels[_0x4ffecd[_0xa652('0x7')]][_0xa652('0x33')]=utils[_0xa652('0x34')](channels[_0x4ffecd[_0xa652('0x7')]]['endtime'],channels[_0x4ffecd[_0xa652('0x7')]][_0xa652('0x35')]);channels[_0x4ffecd[_0xa652('0x7')]]['billableseconds']=channels[_0x4ffecd[_0xa652('0x7')]]['answertime']?utils[_0xa652('0x34')](channels[_0x4ffecd[_0xa652('0x7')]][_0xa652('0x32')],channels[_0x4ffecd[_0xa652('0x7')]]['answertime']):0x0;writeDB(channels[_0x4ffecd[_0xa652('0x7')]]);}}catch(_0x58d093){utils[_0xa652('0x22')](util[_0xa652('0x9')]('[%s][calls][hangup]',_0x4ffecd[_0xa652('0x7')]),_0x58d093);}};exports[_0xa652('0x36')]=function(_0xd63743){try{if(!_[_0xa652('0x23')](channels[_0xd63743[_0xa652('0x37')]])){utils[_0xa652('0x1a')](util[_0xa652('0x9')](_0xa652('0x38'),_0xd63743['origtransfereruniqueid']),_0xd63743);if(channels[_0xd63743[_0xa652('0x37')]][_0xa652('0xb')]==_0xd63743[_0xa652('0x39')]){utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x3a'),_0xd63743[_0xa652('0x3b')],_0xd63743['localtwolinkedid'],_0xd63743[_0xa652('0x3c')]));channels[_0xd63743[_0xa652('0x37')]][_0xa652('0x28')]=_0xd63743[_0xa652('0x3c')];channels[_0xd63743[_0xa652('0x37')]][_0xa652('0x3d')]=_0xa652('0x3e');}else if(channels[_0xd63743[_0xa652('0x37')]][_0xa652('0xb')]=_0xd63743[_0xa652('0x3f')]){utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x3a'),_0xd63743['origtransfereruniqueid'],_0xd63743[_0xa652('0x37')],_0xd63743[_0xa652('0x40')]));channels[_0xd63743['localtwolinkedid']]['destinationchannel']=_0xd63743[_0xa652('0x40')];channels[_0xd63743[_0xa652('0x37')]][_0xa652('0x3d')]='_attended';}}}catch(_0x1680e9){utils[_0xa652('0x22')](util[_0xa652('0x9')](_0xa652('0x38'),_0xd63743[_0xa652('0x3b')]),_0x1680e9);}};exports[_0xa652('0x41')]=function(_0x51e9f8){try{if(!_[_0xa652('0x23')](channels[_0x51e9f8[_0xa652('0x7')]])){utils[_0xa652('0x1a')](util[_0xa652('0x9')]('[%s][calls][musiconholdstart]',_0x51e9f8[_0xa652('0x7')]),_0x51e9f8);channels[_0x51e9f8[_0xa652('0x7')]]['musiconholdstartAt']=utils[_0xa652('0x20')]();utils[_0xa652('0x30')](util[_0xa652('0x9')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x51e9f8['uniqueid'],channels[_0x51e9f8[_0xa652('0x7')]][_0xa652('0x42')]));}}catch(_0x51925e){utils[_0xa652('0x22')](util[_0xa652('0x9')](_0xa652('0x43'),_0x51e9f8[_0xa652('0x7')]),_0x51925e);}};exports[_0xa652('0x44')]=function(_0x3c9023){try{if(!_[_0xa652('0x23')](channels[_0x3c9023['uniqueid']])){utils['debug'](util[_0xa652('0x9')](_0xa652('0x45'),_0x3c9023['uniqueid']),_0x3c9023);if(!_[_0xa652('0x23')](channels[_0x3c9023[_0xa652('0x7')]][_0xa652('0x42')])){channels[_0x3c9023[_0xa652('0x7')]]['mohtime']+=utils[_0xa652('0x34')](utils[_0xa652('0x20')](),channels[_0x3c9023[_0xa652('0x7')]]['musiconholdstartAt']);utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x46'),_0x3c9023['uniqueid'],channels[_0x3c9023[_0xa652('0x7')]][_0xa652('0x47')]));delete channels[_0x3c9023[_0xa652('0x7')]][_0xa652('0x42')];}}}catch(_0x27d47d){utils[_0xa652('0x22')](util['format'](_0xa652('0x45'),_0x3c9023[_0xa652('0x7')]),_0x27d47d);}};exports[_0xa652('0x48')]=function(_0x3666e4){try{if(!_[_0xa652('0x23')](channels[_0x3666e4[_0xa652('0x7')]])){utils[_0xa652('0x1a')](util[_0xa652('0x9')](_0xa652('0x49'),_0x3666e4[_0xa652('0x7')]),_0x3666e4);if(!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')][_0xa652('0x4b')])){utils['info'](util[_0xa652('0x9')](_0xa652('0x4c'),_0x3666e4[_0xa652('0x7')],_0x3666e4[_0xa652('0x4d')]));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x4e')]=_0x3666e4[_0xa652('0x4d')];}if(!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')][_0xa652('0x4f')])){utils[_0xa652('0x30')](util[_0xa652('0x9')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x3666e4[_0xa652('0x7')],_0x3666e4['value']));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x50')]=_0x3666e4[_0xa652('0x4d')];channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x2e')]='\x22'+_0x3666e4['value']+_0xa652('0x51')+_0x3666e4[_0xa652('0x4d')]+'>';}if(!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')][_0xa652('0x52')])||!_['isNil'](_0x3666e4[_0xa652('0x4a')]['xmd-callerid'])){utils[_0xa652('0x30')](util[_0xa652('0x9')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x3666e4['uniqueid'],!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')][_0xa652('0x52')])?_0xa652('0x52'):_0xa652('0x53'),_0x3666e4['value']));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x2e')]=_0x3666e4[_0xa652('0x4d')];}if(!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')][_0xa652('0x54')])||!_['isNil'](_0x3666e4['variable'][_0xa652('0x55')])){utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x56'),_0x3666e4['uniqueid'],!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')]['xmd-queue'])?_0xa652('0x54'):'xmcs-queue',_0x3666e4[_0xa652('0x4d')]));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x57')]=_0xa652('0x58');channels[_0x3666e4['uniqueid']][_0xa652('0x59')]=_0x3666e4['value'];channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0xc')]=!![];}if(!_[_0xa652('0x23')](_0x3666e4[_0xa652('0x4a')][_0xa652('0x5a')])){utils[_0xa652('0x30')](util[_0xa652('0x9')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x3666e4[_0xa652('0x7')],_0x3666e4[_0xa652('0x4d')]));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x5b')]=_0x3666e4['value'];}if(!_[_0xa652('0x23')](_0x3666e4['variable'][_0xa652('0x5c')])){utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x5d'),_0x3666e4[_0xa652('0x7')],_0x3666e4[_0xa652('0x4d')]));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x5e')]=_0x3666e4[_0xa652('0x4d')];}if(!_['isNil'](_0x3666e4[_0xa652('0x4a')][_0xa652('0x5f')])){utils[_0xa652('0x30')](util[_0xa652('0x9')](_0xa652('0x60'),_0x3666e4[_0xa652('0x7')],_0x3666e4[_0xa652('0x4d')]));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x61')]=_0x3666e4[_0xa652('0x4d')];}if(!_[_0xa652('0x23')](_0x3666e4['variable'][_0xa652('0x62')])){utils['info'](util[_0xa652('0x9')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x3666e4[_0xa652('0x7')],_0x3666e4[_0xa652('0x4d')]));channels[_0x3666e4[_0xa652('0x7')]][_0xa652('0x62')]=_0x3666e4['value'];}}}catch(_0x38d0be){utils['error'](util[_0xa652('0x9')]('[%s][calls][varset]',_0x3666e4[_0xa652('0x7')]),_0x38d0be);}};exports[_0xa652('0x63')]=function(_0x258075){try{if(!_['isNil'](channels[_0x258075[_0xa652('0x7')]])){utils[_0xa652('0x1a')](util[_0xa652('0x9')](_0xa652('0x64'),_0x258075[_0xa652('0x7')]),_0x258075);utils['info'](util['format'](_0xa652('0x65'),_0x258075[_0xa652('0x7')],_0x258075[_0xa652('0x66')],_0x258075[_0xa652('0x67')]));if(_0x258075[_0xa652('0x66')]['toLowerCase']()==_0xa652('0x68')&&_[_0xa652('0x69')](_0x258075[_0xa652('0x67')][_0xa652('0x6a')](),_0xa652('0x6b'))){var _0x28c512=_0x258075['appdata']['split']('=');var _0x11aae8=_0x28c512[0x0][_0xa652('0x6c')](_0x28c512[0x0][_0xa652('0x6d')]('(')+0x1,_0x28c512[0x0][_0xa652('0x6d')](')'));var _0x5200e9=_0x28c512[0x1];channels[_0x258075[_0xa652('0x7')]][_0x11aae8]=_0x5200e9;}if(!_[_0xa652('0x6e')]([_0xa652('0x2c'),_0xa652('0x6f'),_0xa652('0x70'),_0xa652('0x68'),_0xa652('0x71')],_0x258075[_0xa652('0x66')]['toLowerCase']())){channels[_0x258075[_0xa652('0x7')]][_0xa652('0x57')]=_0x258075[_0xa652('0x66')];channels[_0x258075['uniqueid']]['lastdata']=_0x258075[_0xa652('0x67')];}}}catch(_0x2f03d5){utils[_0xa652('0x22')](util[_0xa652('0x9')](_0xa652('0x64'),_0x258075['uniqueid']),_0x2f03d5);}};
\ No newline at end of file
index 0fcf09f..e25b63d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa3=['connect','info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','managerevent','./utils'];(function(_0xc4137,_0x46f9a9){var _0x5d2dfd=function(_0x29ba7e){while(--_0x29ba7e){_0xc4137['push'](_0xc4137['shift']());}};_0x5d2dfd(++_0x46f9a9);}(_0x9fa3,0x112));var _0x39fa=function(_0x522d0a,_0x3f31f7){_0x522d0a=_0x522d0a-0x0;var _0x4819d5=_0x9fa3[_0x522d0a];return _0x4819d5;};'use strict';var utils=require(_0x39fa('0x0'));exports[_0x39fa('0x1')]=function(){utils[_0x39fa('0x2')](_0x39fa('0x3'));};exports[_0x39fa('0x4')]=function(){utils[_0x39fa('0x2')]('[core]\x20shutdown');};exports[_0x39fa('0x5')]=function(){utils[_0x39fa('0x2')](_0x39fa('0x6'));};exports[_0x39fa('0x7')]=function(_0x5db4c9){utils[_0x39fa('0x7')](_0x39fa('0x8'),_0x5db4c9);};exports[_0x39fa('0x9')]=function(){utils[_0x39fa('0x2')]('[core]\x20close');};exports[_0x39fa('0xa')]=function(_0x5814c8){};
\ No newline at end of file
+var _0x37f6=['managerevent','./utils','info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error','close','[core]\x20close'];(function(_0x31d343,_0x3ce220){var _0x5dddb2=function(_0x49567c){while(--_0x49567c){_0x31d343['push'](_0x31d343['shift']());}};_0x5dddb2(++_0x3ce220);}(_0x37f6,0x19b));var _0x637f=function(_0x500785,_0x15e5ff){_0x500785=_0x500785-0x0;var _0x1f8bcc=_0x37f6[_0x500785];return _0x1f8bcc;};'use strict';var utils=require(_0x637f('0x0'));exports['connect']=function(){utils[_0x637f('0x1')](_0x637f('0x2'));};exports[_0x637f('0x3')]=function(){utils[_0x637f('0x1')]('[core]\x20shutdown');};exports[_0x637f('0x4')]=function(){utils['info'](_0x637f('0x5'));};exports[_0x637f('0x6')]=function(_0x52ecf2){utils[_0x637f('0x6')]('[core]\x20error',_0x52ecf2);};exports[_0x637f('0x7')]=function(){utils[_0x637f('0x1')](_0x637f('0x8'));};exports[_0x637f('0x9')]=function(_0x4ced03){};
\ No newline at end of file
index ee5c165..c6fe289 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d81=['value','dialbegin','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','[%s][dials][dialbegin]','dialend','[%s][dials][dialend]','dialstatus','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime','billableseconds','error','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','request','CreateVoiceDialReport','[%s][dials][newexten]','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','cdr(routeid)','split','varset','debug','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s'];(function(_0x4dafb5,_0x55d778){var _0x188126=function(_0x54acb9){while(--_0x54acb9){_0x4dafb5['push'](_0x4dafb5['shift']());}};_0x188126(++_0x55d778);}(_0x9d81,0x85));var _0x19d8=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x9d81[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0x19d8('0x0'));var utils=require(_0x19d8('0x1'));var dials={};function writeDB(_0x12be02){utils['info'](util[_0x19d8('0x2')](_0x19d8('0x3'),_0x12be02[_0x19d8('0x4')],_0x12be02['channel'],_0x12be02[_0x19d8('0x5')],_0x12be02['calleridnum'],_0x12be02['connectedlinenum'],_0x12be02['dialstatus']));utils[_0x19d8('0x6')](_0x19d8('0x7'),_0x12be02);delete dials[_0x12be02[_0x19d8('0x4')]];}exports['newexten']=function(_0x54bf7e){try{utils['debug'](util[_0x19d8('0x2')](_0x19d8('0x8'),_0x54bf7e['uniqueid']),_0x54bf7e);utils[_0x19d8('0x9')](util[_0x19d8('0x2')](_0x19d8('0xa'),_0x54bf7e[_0x19d8('0x4')],_0x54bf7e[_0x19d8('0xb')],_0x54bf7e[_0x19d8('0xc')]));if(_0x54bf7e[_0x19d8('0xb')]['toLowerCase']()==_0x19d8('0xd')&&_['startsWith'](_0x54bf7e['appdata']['toLowerCase'](),_0x19d8('0xe'))){var _0x1a6413=_0x54bf7e['appdata'][_0x19d8('0xf')]('=');dials[_0x54bf7e[_0x19d8('0x4')]]={'routeId':_0x1a6413[0x1]};}}catch(_0x399a3a){utils['error'](util[_0x19d8('0x2')](_0x19d8('0x8'),_0x54bf7e['uniqueid']),_0x399a3a);}};exports[_0x19d8('0x10')]=function(_0x11c639){try{utils[_0x19d8('0x11')](util['format'](_0x19d8('0x12'),_0x11c639[_0x19d8('0x4')]),_0x11c639);if(!_[_0x19d8('0x13')](_0x11c639[_0x19d8('0x14')][_0x19d8('0x15')])){utils['info'](util[_0x19d8('0x2')](_0x19d8('0x16'),_0x11c639['uniqueid'],_0x11c639[_0x19d8('0x17')]));dials[_0x11c639[_0x19d8('0x4')]]={'routeId':_0x11c639[_0x19d8('0x17')]};}}catch(_0x4970a2){utils['error'](util['format'](_0x19d8('0x12'),_0x11c639[_0x19d8('0x4')]),_0x4970a2);}};exports[_0x19d8('0x18')]=function(_0x36df37){try{if(!_[_0x19d8('0x13')](dials[_0x36df37['uniqueid']])){utils[_0x19d8('0x11')](util[_0x19d8('0x2')]('[%s][dials][dialbegin]',_0x36df37[_0x19d8('0x4')]),_0x36df37);dials[_0x36df37[_0x19d8('0x4')]]=_[_0x19d8('0x19')](dials[_0x36df37[_0x19d8('0x4')]],_0x36df37);dials[_0x36df37[_0x19d8('0x4')]][_0x19d8('0x1a')]=utils[_0x19d8('0x1b')]();dials[_0x36df37[_0x19d8('0x4')]][_0x19d8('0x1c')]=_0x19d8('0x1d');utils[_0x19d8('0x9')](util['format'](_0x19d8('0x1e'),_0x36df37['uniqueid'],dials[_0x36df37[_0x19d8('0x4')]][_0x19d8('0x1a')]));}}catch(_0x4d32a0){utils['error'](util[_0x19d8('0x2')](_0x19d8('0x1f'),_0x36df37[_0x19d8('0x4')]),_0x4d32a0);}};exports[_0x19d8('0x20')]=function(_0x18aa5a){try{if(!_[_0x19d8('0x13')](dials[_0x18aa5a[_0x19d8('0x4')]])){utils[_0x19d8('0x11')](util[_0x19d8('0x2')](_0x19d8('0x21'),_0x18aa5a[_0x19d8('0x4')]),_0x18aa5a);dials[_0x18aa5a[_0x19d8('0x4')]][_0x19d8('0x22')]=_0x18aa5a[_0x19d8('0x22')];if(_0x18aa5a[_0x19d8('0x22')]=='ANSWER'){dials[_0x18aa5a[_0x19d8('0x4')]]=_[_0x19d8('0x19')](dials[_0x18aa5a['uniqueid']],_0x18aa5a);dials[_0x18aa5a['uniqueid']][_0x19d8('0x23')]=utils['now']();dials[_0x18aa5a[_0x19d8('0x4')]][_0x19d8('0x1c')]=_0x19d8('0x24');utils[_0x19d8('0x9')](util[_0x19d8('0x2')](_0x19d8('0x25'),_0x18aa5a[_0x19d8('0x4')],_0x18aa5a[_0x19d8('0x22')],dials[_0x18aa5a['uniqueid']][_0x19d8('0x23')]));}else{utils[_0x19d8('0x9')](util[_0x19d8('0x2')](_0x19d8('0x26'),_0x18aa5a[_0x19d8('0x4')],_0x18aa5a[_0x19d8('0x22')]));}}}catch(_0x7d56cb){utils['error'](util['format']('[%s][dials][dialend]',_0x18aa5a['uniqueid']),_0x7d56cb);}};exports[_0x19d8('0x27')]=function(_0x1ebf7c){try{if(!_['isNil'](dials[_0x1ebf7c[_0x19d8('0x4')]])){utils[_0x19d8('0x11')](util['format'](_0x19d8('0x28'),_0x1ebf7c[_0x19d8('0x4')]),_0x1ebf7c);utils[_0x19d8('0x9')](util[_0x19d8('0x2')](_0x19d8('0x29'),_0x1ebf7c['uniqueid'],_0x1ebf7c[_0x19d8('0x2a')],_0x1ebf7c[_0x19d8('0x2b')],_0x1ebf7c[_0x19d8('0x2c')]));dials[_0x1ebf7c[_0x19d8('0x4')]]=_[_0x19d8('0x19')](dials[_0x1ebf7c[_0x19d8('0x4')]],{'endtime':utils[_0x19d8('0x1b')](),'lastevent':_0x19d8('0x2d')});dials[_0x1ebf7c[_0x19d8('0x4')]][_0x19d8('0x2e')]=utils[_0x19d8('0x2f')](dials[_0x1ebf7c['uniqueid']][_0x19d8('0x30')],dials[_0x1ebf7c[_0x19d8('0x4')]][_0x19d8('0x1a')]);dials[_0x1ebf7c[_0x19d8('0x4')]][_0x19d8('0x31')]=utils[_0x19d8('0x2f')](dials[_0x1ebf7c[_0x19d8('0x4')]]['answertime']||dials[_0x1ebf7c[_0x19d8('0x4')]][_0x19d8('0x30')],dials[_0x1ebf7c['uniqueid']][_0x19d8('0x1a')]);dials[_0x1ebf7c['uniqueid']][_0x19d8('0x32')]=dials[_0x1ebf7c[_0x19d8('0x4')]]['answertime']?utils[_0x19d8('0x2f')](dials[_0x1ebf7c[_0x19d8('0x4')]][_0x19d8('0x30')],dials[_0x1ebf7c['uniqueid']][_0x19d8('0x23')]):0x0;writeDB(dials[_0x1ebf7c[_0x19d8('0x4')]]);}}catch(_0x37a89b){utils[_0x19d8('0x33')](util[_0x19d8('0x2')](_0x19d8('0x28'),_0x1ebf7c[_0x19d8('0x4')]),_0x37a89b);}};
\ No newline at end of file
+var _0x5850=['diffTime','endtime','billableseconds','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','calleridnum','connectedlinenum','dialstatus','CreateVoiceDialReport','uniqueid','newexten','debug','[%s][dials][newexten]','info','application','appdata','set','startsWith','toLowerCase','split','error','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][varset]','dialbegin','[%s][dials][dialbegin]','assign','starttime','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','now','lastevent','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','hangup','isNil','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration'];(function(_0x5bf19e,_0x18e9ad){var _0x8304bb=function(_0x23071b){while(--_0x23071b){_0x5bf19e['push'](_0x5bf19e['shift']());}};_0x8304bb(++_0x18e9ad);}(_0x5850,0x161));var _0x0585=function(_0x58b10d,_0x517c92){_0x58b10d=_0x58b10d-0x0;var _0x1ee6aa=_0x5850[_0x58b10d];return _0x1ee6aa;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x0585('0x0'));var dials={};function writeDB(_0x31dd20){utils['info'](util[_0x0585('0x1')](_0x0585('0x2'),_0x31dd20['uniqueid'],_0x31dd20[_0x0585('0x3')],_0x31dd20['dialstring'],_0x31dd20[_0x0585('0x4')],_0x31dd20[_0x0585('0x5')],_0x31dd20[_0x0585('0x6')]));utils['request'](_0x0585('0x7'),_0x31dd20);delete dials[_0x31dd20[_0x0585('0x8')]];}exports[_0x0585('0x9')]=function(_0x1970ef){try{utils[_0x0585('0xa')](util[_0x0585('0x1')](_0x0585('0xb'),_0x1970ef['uniqueid']),_0x1970ef);utils[_0x0585('0xc')](util[_0x0585('0x1')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x1970ef[_0x0585('0x8')],_0x1970ef[_0x0585('0xd')],_0x1970ef[_0x0585('0xe')]));if(_0x1970ef[_0x0585('0xd')]['toLowerCase']()==_0x0585('0xf')&&_[_0x0585('0x10')](_0x1970ef['appdata'][_0x0585('0x11')](),'cdr(routeid)')){var _0x87d1e5=_0x1970ef['appdata'][_0x0585('0x12')]('=');dials[_0x1970ef[_0x0585('0x8')]]={'routeId':_0x87d1e5[0x1]};}}catch(_0x16532f){utils[_0x0585('0x13')](util[_0x0585('0x1')](_0x0585('0xb'),_0x1970ef['uniqueid']),_0x16532f);}};exports['varset']=function(_0x32618b){try{utils[_0x0585('0xa')](util[_0x0585('0x1')]('[%s][dials][varset]',_0x32618b['uniqueid']),_0x32618b);if(!_['isNil'](_0x32618b[_0x0585('0x14')][_0x0585('0x15')])){utils[_0x0585('0xc')](util[_0x0585('0x1')](_0x0585('0x16'),_0x32618b[_0x0585('0x8')],_0x32618b[_0x0585('0x17')]));dials[_0x32618b[_0x0585('0x8')]]={'routeId':_0x32618b[_0x0585('0x17')]};}}catch(_0x52d22f){utils[_0x0585('0x13')](util[_0x0585('0x1')](_0x0585('0x18'),_0x32618b[_0x0585('0x8')]),_0x52d22f);}};exports[_0x0585('0x19')]=function(_0x1454bc){try{if(!_['isNil'](dials[_0x1454bc[_0x0585('0x8')]])){utils[_0x0585('0xa')](util[_0x0585('0x1')](_0x0585('0x1a'),_0x1454bc['uniqueid']),_0x1454bc);dials[_0x1454bc[_0x0585('0x8')]]=_[_0x0585('0x1b')](dials[_0x1454bc[_0x0585('0x8')]],_0x1454bc);dials[_0x1454bc[_0x0585('0x8')]][_0x0585('0x1c')]=utils['now']();dials[_0x1454bc[_0x0585('0x8')]]['lastevent']=_0x0585('0x1d');utils[_0x0585('0xc')](util['format'](_0x0585('0x1e'),_0x1454bc['uniqueid'],dials[_0x1454bc[_0x0585('0x8')]][_0x0585('0x1c')]));}}catch(_0x2a0d65){utils[_0x0585('0x13')](util['format'](_0x0585('0x1a'),_0x1454bc[_0x0585('0x8')]),_0x2a0d65);}};exports[_0x0585('0x1f')]=function(_0x5e6e7c){try{if(!_['isNil'](dials[_0x5e6e7c[_0x0585('0x8')]])){utils['debug'](util[_0x0585('0x1')](_0x0585('0x20'),_0x5e6e7c[_0x0585('0x8')]),_0x5e6e7c);dials[_0x5e6e7c[_0x0585('0x8')]][_0x0585('0x6')]=_0x5e6e7c['dialstatus'];if(_0x5e6e7c['dialstatus']==_0x0585('0x21')){dials[_0x5e6e7c[_0x0585('0x8')]]=_[_0x0585('0x1b')](dials[_0x5e6e7c['uniqueid']],_0x5e6e7c);dials[_0x5e6e7c['uniqueid']][_0x0585('0x22')]=utils[_0x0585('0x23')]();dials[_0x5e6e7c[_0x0585('0x8')]][_0x0585('0x24')]=_0x0585('0x25');utils[_0x0585('0xc')](util[_0x0585('0x1')](_0x0585('0x26'),_0x5e6e7c[_0x0585('0x8')],_0x5e6e7c[_0x0585('0x6')],dials[_0x5e6e7c[_0x0585('0x8')]][_0x0585('0x22')]));}else{utils['info'](util['format']('[%s][dials][dialend]\x20dialstatus:%s',_0x5e6e7c[_0x0585('0x8')],_0x5e6e7c[_0x0585('0x6')]));}}}catch(_0x5bc2fd){utils[_0x0585('0x13')](util[_0x0585('0x1')](_0x0585('0x20'),_0x5e6e7c[_0x0585('0x8')]),_0x5bc2fd);}};exports[_0x0585('0x27')]=function(_0x4b136c){try{if(!_[_0x0585('0x28')](dials[_0x4b136c[_0x0585('0x8')]])){utils[_0x0585('0xa')](util['format'](_0x0585('0x29'),_0x4b136c['uniqueid']),_0x4b136c);utils[_0x0585('0xc')](util['format'](_0x0585('0x2a'),_0x4b136c[_0x0585('0x8')],_0x4b136c[_0x0585('0x4')],_0x4b136c[_0x0585('0x2b')],_0x4b136c[_0x0585('0x2c')]));dials[_0x4b136c['uniqueid']]=_['assign'](dials[_0x4b136c['uniqueid']],{'endtime':utils[_0x0585('0x23')](),'lastevent':_0x0585('0x2d')});dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x2e')]=utils[_0x0585('0x2f')](dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x30')],dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x1c')]);dials[_0x4b136c[_0x0585('0x8')]]['holdtime']=utils['diffTime'](dials[_0x4b136c['uniqueid']][_0x0585('0x22')]||dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x30')],dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x1c')]);dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x31')]=dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x22')]?utils[_0x0585('0x2f')](dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x30')],dials[_0x4b136c[_0x0585('0x8')]][_0x0585('0x22')]):0x0;writeDB(dials[_0x4b136c[_0x0585('0x8')]]);}}catch(_0x520d9b){utils[_0x0585('0x13')](util[_0x0585('0x1')]('[%s][dials][hangup]',_0x4b136c['uniqueid']),_0x520d9b);}};
\ No newline at end of file
index 34474a2..3502977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83af=['newchannel','[%s][index][newchannel]','[%s][index][dialbegin]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','port','username','xdr','info','XDR\x20DISABLED','./agents.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','format','agentringnoanswer','agentconnect','[%s][index][agentconnect]','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','varset','newexten'];(function(_0x349c5f,_0x5d92d3){var _0x410ed8=function(_0x309d94){while(--_0x309d94){_0x349c5f['push'](_0x349c5f['shift']());}};_0x410ed8(++_0x5d92d3);}(_0x83af,0x14c));var _0xf83a=function(_0x3a7257,_0x30b139){_0x3a7257=_0x3a7257-0x0;var _0x467d25=_0x83af[_0x3a7257];return _0x467d25;};var AsteriskManager=require(_0xf83a('0x0'));var config=require(_0xf83a('0x1'));var utils=require(_0xf83a('0x2'));var util=require(_0xf83a('0x3'));var ami=new AsteriskManager(config[_0xf83a('0x4')][_0xf83a('0x5')],config[_0xf83a('0x4')]['ip'],config[_0xf83a('0x4')][_0xf83a('0x6')],config[_0xf83a('0x4')]['password'],!![]);ami['keepConnected']();if(config[_0xf83a('0x7')]&&config[_0xf83a('0x7')]['disabled']){utils[_0xf83a('0x8')](_0xf83a('0x9'));}else{var agents=require(_0xf83a('0xa'));var calls=require('./calls.controller');var queues=require(_0xf83a('0xb'));var recordings=require(_0xf83a('0xc'));var members=require(_0xf83a('0xd'));var dials=require(_0xf83a('0xe'));var transfers=require(_0xf83a('0xf'));var core=require(_0xf83a('0x10'));ami['on'](_0xf83a('0x11'),core['connect']);ami['on'](_0xf83a('0x12'),core['shutdown']);ami['on'](_0xf83a('0x13'),core['fullybooted']);ami['on'](_0xf83a('0x14'),core[_0xf83a('0x14')]);ami['on'](_0xf83a('0x15'),core[_0xf83a('0x15')]);ami['on'](_0xf83a('0x16'),core['managerevent']);ami['on'](_0xf83a('0x17'),function(_0x26b86b){try{utils[_0xf83a('0x18')](util['format']('[%s][index][devicestatechange]',_0x26b86b['device']),_0x26b86b);members['devicestatechange'](_0x26b86b);}catch(_0x3516be){utils[_0xf83a('0x14')](util['format'](_0xf83a('0x19'),_0x26b86b[_0xf83a('0x1a')]),_0x3516be);}});ami['on'](_0xf83a('0x1b'),function(_0xb005eb){try{utils[_0xf83a('0x18')](util['format'](_0xf83a('0x1c'),_0xb005eb[_0xf83a('0x1d')]),_0xb005eb);agents[_0xf83a('0x1b')](_0xb005eb);}catch(_0x3b5125){utils['error'](util[_0xf83a('0x1e')]('[%s][index][agentcalled]',_0xb005eb[_0xf83a('0x1d')]),_0x3b5125);}});ami['on'](_0xf83a('0x1f'),function(_0x1be29f){try{utils[_0xf83a('0x18')](util['format']('[%s][index][agentringnoanswer]',_0x1be29f[_0xf83a('0x1d')]),_0x1be29f);agents[_0xf83a('0x1f')](_0x1be29f);}catch(_0x49d1ed){utils[_0xf83a('0x14')](util['format']('[%s][index][agentringnoanswer]',_0x1be29f[_0xf83a('0x1d')]),_0x49d1ed);}});ami['on'](_0xf83a('0x20'),function(_0x32c7ff){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x21'),_0x32c7ff[_0xf83a('0x1d')]),_0x32c7ff);agents[_0xf83a('0x20')](_0x32c7ff);queues['agentconnect'](_0x32c7ff);}catch(_0x46e02b){utils['error'](util['format'](_0xf83a('0x21'),_0x32c7ff['uniqueid']),_0x46e02b);}});ami['on']('agentcomplete',function(_0x55154d){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x22'),_0x55154d[_0xf83a('0x1d')]),_0x55154d);agents[_0xf83a('0x23')](_0x55154d);queues[_0xf83a('0x23')](_0x55154d);members[_0xf83a('0x23')](_0x55154d);}catch(_0x22b549){utils['error'](util[_0xf83a('0x1e')](_0xf83a('0x22'),_0x55154d['uniqueid']),_0x22b549);}});ami['on'](_0xf83a('0x24'),function(_0xf42dc6){try{utils[_0xf83a('0x18')](util['format'](_0xf83a('0x25'),_0xf42dc6[_0xf83a('0x1d')]),_0xf42dc6);agents[_0xf83a('0x24')](_0xf42dc6);queues['queuecallerabandon'](_0xf42dc6);}catch(_0x34c38a){utils[_0xf83a('0x14')](util['format']('[%s][index][queuecallerabandon]',_0xf42dc6[_0xf83a('0x1d')]),_0x34c38a);}});ami['on'](_0xf83a('0x26'),function(_0xabc46d){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x27'),_0xabc46d[_0xf83a('0x1d')]),_0xabc46d);queues[_0xf83a('0x26')](_0xabc46d);recordings[_0xf83a('0x26')](_0xabc46d);}catch(_0x143ae3){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')](_0xf83a('0x27'),_0xabc46d[_0xf83a('0x1d')]),_0x143ae3);}});ami['on'](_0xf83a('0x28'),function(_0x15b63d){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x29'),_0x15b63d['uniqueid']),_0x15b63d);queues[_0xf83a('0x28')](_0x15b63d);}catch(_0x2ccd98){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')](_0xf83a('0x29'),_0x15b63d[_0xf83a('0x1d')]),_0x2ccd98);}});ami['on'](_0xf83a('0x2a'),function(_0x4531fe){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')]('[%s][index][musiconholdstart]',_0x4531fe[_0xf83a('0x1d')]),_0x4531fe);queues[_0xf83a('0x2a')](_0x4531fe);calls[_0xf83a('0x2a')](_0x4531fe);}catch(_0x1884f7){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')]('[%s][index][musiconholdstart]',_0x4531fe[_0xf83a('0x1d')]),_0x1884f7);}});ami['on'](_0xf83a('0x2b'),function(_0x2d16f0){try{utils[_0xf83a('0x18')](util['format'](_0xf83a('0x2c'),_0x2d16f0[_0xf83a('0x1d')]),_0x2d16f0);queues['musiconholdstop'](_0x2d16f0);calls[_0xf83a('0x2b')](_0x2d16f0);}catch(_0x29c82e){utils['error'](util['format'](_0xf83a('0x2c'),_0x2d16f0['uniqueid']),_0x29c82e);}});ami['on'](_0xf83a('0x2d'),function(_0x7b2226){try{utils[_0xf83a('0x18')](util['format'](_0xf83a('0x2e'),_0x7b2226[_0xf83a('0x1d')]),_0x7b2226);calls['newstate'](_0x7b2226);recordings[_0xf83a('0x2d')](_0x7b2226);}catch(_0x5643a4){utils[_0xf83a('0x14')](util['format'](_0xf83a('0x2e'),_0x7b2226[_0xf83a('0x1d')]),_0x5643a4);}});ami['on'](_0xf83a('0x2f'),function(_0x392f9a){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x30'),_0x392f9a[_0xf83a('0x1d')]),_0x392f9a);calls[_0xf83a('0x2f')](_0x392f9a);recordings['hangup'](_0x392f9a);dials[_0xf83a('0x2f')](_0x392f9a);agents[_0xf83a('0x2f')](_0x392f9a);queues['hangup'](_0x392f9a);}catch(_0x513eeb){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')](_0xf83a('0x30'),_0x392f9a[_0xf83a('0x1d')]),_0x513eeb);}});ami['on'](_0xf83a('0x31'),function(_0x54d71){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')]('[%s][index][cdr]',_0x54d71[_0xf83a('0x1d')]),_0x54d71);members[_0xf83a('0x31')](_0x54d71);}catch(_0x8e74e){utils[_0xf83a('0x14')](util['format'](_0xf83a('0x32'),_0x54d71[_0xf83a('0x1d')]),_0x8e74e);}});ami['on'](_0xf83a('0x33'),function(_0x238d41){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x34'),_0x238d41['uniqueid']),_0x238d41);queues[_0xf83a('0x33')](_0x238d41);agents[_0xf83a('0x33')](_0x238d41);transfers[_0xf83a('0x33')](_0x238d41);recordings[_0xf83a('0x33')](_0x238d41);}catch(_0x9ea05a){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')](_0xf83a('0x34'),_0x238d41[_0xf83a('0x1d')]),_0x9ea05a);}});ami['on']('attendedtransfer',function(_0x412cd4){try{utils['debug'](util[_0xf83a('0x1e')](_0xf83a('0x35'),_0x412cd4[_0xf83a('0x36')]),_0x412cd4);queues[_0xf83a('0x37')](_0x412cd4);transfers['attendedtransfer'](_0x412cd4);agents[_0xf83a('0x37')](_0x412cd4);calls[_0xf83a('0x37')](_0x412cd4);}catch(_0x56957b){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')]('[%s][index][attendedtransfer]',_0x412cd4[_0xf83a('0x36')]),_0x56957b);}});ami['on']('varset',function(_0x14d5b5){try{utils[_0xf83a('0x18')](util['format']('[%s][index][varset]',_0x14d5b5['uniqueid']),_0x14d5b5);queues[_0xf83a('0x38')](_0x14d5b5);recordings[_0xf83a('0x38')](_0x14d5b5);calls[_0xf83a('0x38')](_0x14d5b5);dials[_0xf83a('0x38')](_0x14d5b5);}catch(_0x5ac87f){utils[_0xf83a('0x14')](util['format']('[%s][index][varset]',_0x14d5b5[_0xf83a('0x1d')]),_0x5ac87f);}});ami['on'](_0xf83a('0x39'),function(_0x2c0a21){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')]('[%s][index][newexten]',_0x2c0a21[_0xf83a('0x1d')]),_0x2c0a21);calls[_0xf83a('0x39')](_0x2c0a21);recordings[_0xf83a('0x39')](_0x2c0a21);dials['newexten'](_0x2c0a21);}catch(_0x411c50){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')]('[%s][index][newexten]',_0x2c0a21['uniqueid']),_0x411c50);}});ami['on'](_0xf83a('0x3a'),function(_0x2b27a7){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')]('[%s][index][newchannel]',_0x2b27a7[_0xf83a('0x1d')]),_0x2b27a7);calls['newchannel'](_0x2b27a7);recordings[_0xf83a('0x3a')](_0x2b27a7);}catch(_0x253133){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')](_0xf83a('0x3b'),_0x2b27a7[_0xf83a('0x1d')]),_0x253133);}});ami['on']('dialbegin',function(_0x1bfd6b){try{utils['debug'](util[_0xf83a('0x1e')](_0xf83a('0x3c'),_0x1bfd6b['uniqueid']),_0x1bfd6b);dials[_0xf83a('0x3d')](_0x1bfd6b);}catch(_0x230498){utils[_0xf83a('0x14')](util[_0xf83a('0x1e')](_0xf83a('0x3e'),_0x1bfd6b[_0xf83a('0x1d')]),_0x230498);}});ami['on'](_0xf83a('0x3f'),function(_0x125a2f){try{utils[_0xf83a('0x18')](util[_0xf83a('0x1e')](_0xf83a('0x40'),_0x125a2f[_0xf83a('0x1d')]),_0x125a2f);dials['dialend'](_0x125a2f);}catch(_0x54c77f){utils['error'](util['format'](_0xf83a('0x40'),_0x125a2f[_0xf83a('0x1d')]),_0x54c77f);}});}
\ No newline at end of file
+var _0x478b=['format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','debug','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentcomplete]','agentcomplete','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','origtransfereruniqueid','attendedtransfer','[%s][index][attendedtransfer]','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','port','asterisk','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange'];(function(_0x345f3b,_0x23b362){var _0x4bf4d9=function(_0x507fd0){while(--_0x507fd0){_0x345f3b['push'](_0x345f3b['shift']());}};_0x4bf4d9(++_0x23b362);}(_0x478b,0xbc));var _0xb478=function(_0x21a28c,_0x49e913){_0x21a28c=_0x21a28c-0x0;var _0x3a8791=_0x478b[_0x21a28c];return _0x3a8791;};var AsteriskManager=require(_0xb478('0x0'));var config=require(_0xb478('0x1'));var utils=require(_0xb478('0x2'));var util=require(_0xb478('0x3'));var ami=new AsteriskManager(config['asterisk'][_0xb478('0x4')],config[_0xb478('0x5')]['ip'],config[_0xb478('0x5')][_0xb478('0x6')],config[_0xb478('0x5')][_0xb478('0x7')],!![]);ami[_0xb478('0x8')]();if(config[_0xb478('0x9')]&&config[_0xb478('0x9')][_0xb478('0xa')]){utils[_0xb478('0xb')](_0xb478('0xc'));}else{var agents=require(_0xb478('0xd'));var calls=require(_0xb478('0xe'));var queues=require(_0xb478('0xf'));var recordings=require(_0xb478('0x10'));var members=require(_0xb478('0x11'));var dials=require(_0xb478('0x12'));var transfers=require(_0xb478('0x13'));var core=require(_0xb478('0x14'));ami['on'](_0xb478('0x15'),core[_0xb478('0x15')]);ami['on'](_0xb478('0x16'),core['shutdown']);ami['on'](_0xb478('0x17'),core['fullybooted']);ami['on'](_0xb478('0x18'),core[_0xb478('0x18')]);ami['on'](_0xb478('0x19'),core[_0xb478('0x19')]);ami['on'](_0xb478('0x1a'),core[_0xb478('0x1a')]);ami['on'](_0xb478('0x1b'),function(_0x18b6e1){try{utils['debug'](util[_0xb478('0x1c')](_0xb478('0x1d'),_0x18b6e1[_0xb478('0x1e')]),_0x18b6e1);members[_0xb478('0x1b')](_0x18b6e1);}catch(_0x427049){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x1d'),_0x18b6e1['device']),_0x427049);}});ami['on']('agentcalled',function(_0x1a17e7){try{utils['debug'](util['format'](_0xb478('0x1f'),_0x1a17e7[_0xb478('0x20')]),_0x1a17e7);agents[_0xb478('0x21')](_0x1a17e7);}catch(_0x4e6c69){utils['error'](util['format'](_0xb478('0x1f'),_0x1a17e7[_0xb478('0x20')]),_0x4e6c69);}});ami['on'](_0xb478('0x22'),function(_0x39f6ad){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')]('[%s][index][agentringnoanswer]',_0x39f6ad[_0xb478('0x20')]),_0x39f6ad);agents[_0xb478('0x22')](_0x39f6ad);}catch(_0x7b71ed){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x24'),_0x39f6ad[_0xb478('0x20')]),_0x7b71ed);}});ami['on']('agentconnect',function(_0x1fe9dd){try{utils['debug'](util[_0xb478('0x1c')]('[%s][index][agentconnect]',_0x1fe9dd['uniqueid']),_0x1fe9dd);agents[_0xb478('0x25')](_0x1fe9dd);queues['agentconnect'](_0x1fe9dd);}catch(_0x4a2e85){utils[_0xb478('0x18')](util[_0xb478('0x1c')]('[%s][index][agentconnect]',_0x1fe9dd[_0xb478('0x20')]),_0x4a2e85);}});ami['on']('agentcomplete',function(_0x3a25dc){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x26'),_0x3a25dc[_0xb478('0x20')]),_0x3a25dc);agents[_0xb478('0x27')](_0x3a25dc);queues[_0xb478('0x27')](_0x3a25dc);members['agentcomplete'](_0x3a25dc);}catch(_0x42a24f){utils['error'](util['format'](_0xb478('0x26'),_0x3a25dc[_0xb478('0x20')]),_0x42a24f);}});ami['on'](_0xb478('0x28'),function(_0x153e89){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x29'),_0x153e89[_0xb478('0x20')]),_0x153e89);agents[_0xb478('0x28')](_0x153e89);queues['queuecallerabandon'](_0x153e89);}catch(_0x2d0724){utils[_0xb478('0x18')](util['format'](_0xb478('0x29'),_0x153e89[_0xb478('0x20')]),_0x2d0724);}});ami['on'](_0xb478('0x2a'),function(_0x43ba22){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x2b'),_0x43ba22[_0xb478('0x20')]),_0x43ba22);queues['queuecallerjoin'](_0x43ba22);recordings[_0xb478('0x2a')](_0x43ba22);}catch(_0x18ca21){utils['error'](util[_0xb478('0x1c')](_0xb478('0x2b'),_0x43ba22['uniqueid']),_0x18ca21);}});ami['on'](_0xb478('0x2c'),function(_0x3e0178){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x2d'),_0x3e0178[_0xb478('0x20')]),_0x3e0178);queues['queuecallerleave'](_0x3e0178);}catch(_0x44768b){utils[_0xb478('0x18')](util['format'](_0xb478('0x2d'),_0x3e0178[_0xb478('0x20')]),_0x44768b);}});ami['on'](_0xb478('0x2e'),function(_0x45669a){try{utils['debug'](util[_0xb478('0x1c')](_0xb478('0x2f'),_0x45669a[_0xb478('0x20')]),_0x45669a);queues['musiconholdstart'](_0x45669a);calls['musiconholdstart'](_0x45669a);}catch(_0x44670b){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x2f'),_0x45669a[_0xb478('0x20')]),_0x44670b);}});ami['on'](_0xb478('0x30'),function(_0xbf3ec5){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x31'),_0xbf3ec5[_0xb478('0x20')]),_0xbf3ec5);queues[_0xb478('0x30')](_0xbf3ec5);calls['musiconholdstop'](_0xbf3ec5);}catch(_0x2918a6){utils[_0xb478('0x18')](util['format']('[%s][index][musiconholdstop]',_0xbf3ec5[_0xb478('0x20')]),_0x2918a6);}});ami['on'](_0xb478('0x32'),function(_0x323679){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x33'),_0x323679[_0xb478('0x20')]),_0x323679);calls[_0xb478('0x32')](_0x323679);recordings[_0xb478('0x32')](_0x323679);}catch(_0x52db0d){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x33'),_0x323679[_0xb478('0x20')]),_0x52db0d);}});ami['on']('hangup',function(_0x27c4cf){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x34'),_0x27c4cf['uniqueid']),_0x27c4cf);calls[_0xb478('0x35')](_0x27c4cf);recordings[_0xb478('0x35')](_0x27c4cf);dials[_0xb478('0x35')](_0x27c4cf);agents[_0xb478('0x35')](_0x27c4cf);queues[_0xb478('0x35')](_0x27c4cf);}catch(_0x1dbfb3){utils[_0xb478('0x18')](util['format'](_0xb478('0x34'),_0x27c4cf[_0xb478('0x20')]),_0x1dbfb3);}});ami['on'](_0xb478('0x36'),function(_0x17f3da){try{utils['debug'](util[_0xb478('0x1c')](_0xb478('0x37'),_0x17f3da[_0xb478('0x20')]),_0x17f3da);members['cdr'](_0x17f3da);}catch(_0x3f3caf){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x37'),_0x17f3da[_0xb478('0x20')]),_0x3f3caf);}});ami['on'](_0xb478('0x38'),function(_0x5f2cc3){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x39'),_0x5f2cc3[_0xb478('0x20')]),_0x5f2cc3);queues[_0xb478('0x38')](_0x5f2cc3);agents['blindtransfer'](_0x5f2cc3);transfers['blindtransfer'](_0x5f2cc3);recordings[_0xb478('0x38')](_0x5f2cc3);}catch(_0x31585a){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x39'),_0x5f2cc3[_0xb478('0x20')]),_0x31585a);}});ami['on']('attendedtransfer',function(_0x490ea3){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')]('[%s][index][attendedtransfer]',_0x490ea3[_0xb478('0x3a')]),_0x490ea3);queues[_0xb478('0x3b')](_0x490ea3);transfers[_0xb478('0x3b')](_0x490ea3);agents[_0xb478('0x3b')](_0x490ea3);calls[_0xb478('0x3b')](_0x490ea3);}catch(_0x3ca9e7){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x3c'),_0x490ea3[_0xb478('0x3a')]),_0x3ca9e7);}});ami['on'](_0xb478('0x3d'),function(_0x3707ff){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x3e'),_0x3707ff[_0xb478('0x20')]),_0x3707ff);queues[_0xb478('0x3d')](_0x3707ff);recordings[_0xb478('0x3d')](_0x3707ff);calls[_0xb478('0x3d')](_0x3707ff);dials['varset'](_0x3707ff);}catch(_0x2c7f66){utils['error'](util['format'](_0xb478('0x3e'),_0x3707ff[_0xb478('0x20')]),_0x2c7f66);}});ami['on'](_0xb478('0x3f'),function(_0x4cb566){try{utils['debug'](util[_0xb478('0x1c')](_0xb478('0x40'),_0x4cb566[_0xb478('0x20')]),_0x4cb566);calls[_0xb478('0x3f')](_0x4cb566);recordings['newexten'](_0x4cb566);dials[_0xb478('0x3f')](_0x4cb566);}catch(_0xe0d49d){utils['error'](util[_0xb478('0x1c')](_0xb478('0x40'),_0x4cb566[_0xb478('0x20')]),_0xe0d49d);}});ami['on'](_0xb478('0x41'),function(_0x3ea1b3){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x42'),_0x3ea1b3[_0xb478('0x20')]),_0x3ea1b3);calls[_0xb478('0x41')](_0x3ea1b3);recordings['newchannel'](_0x3ea1b3);}catch(_0xf63a12){utils[_0xb478('0x18')](util['format'](_0xb478('0x42'),_0x3ea1b3['uniqueid']),_0xf63a12);}});ami['on'](_0xb478('0x43'),function(_0x3b7ece){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')](_0xb478('0x44'),_0x3b7ece[_0xb478('0x20')]),_0x3b7ece);dials['dialbegin'](_0x3b7ece);}catch(_0x4c106b){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x45'),_0x3b7ece[_0xb478('0x20')]),_0x4c106b);}});ami['on'](_0xb478('0x46'),function(_0x2e526e){try{utils[_0xb478('0x23')](util[_0xb478('0x1c')]('[%s][index][dialend]',_0x2e526e[_0xb478('0x20')]),_0x2e526e);dials[_0xb478('0x46')](_0x2e526e);}catch(_0x5abcea){utils[_0xb478('0x18')](util[_0xb478('0x1c')](_0xb478('0x47'),_0x2e526e[_0xb478('0x20')]),_0x5abcea);}});}
\ No newline at end of file
index aa47657..0ddb3b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fa1=['info','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','cdr','[%s][members][cdr]','data1','source','data3','destinationchannel','assign','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','Queue:','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','then','name','internal','request','CreateMemberReport','getUserByName','split','catch','error','[%s][members][writeDB]','startsWith','devicestatechange','[%s][members][devicestatechange]','device','state','INUSE','BUSY','voice','NOT_INUSE','exitAt','now','diffTime','enterAt','isNil','debug','[%s][members][agentcomplete]'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x5fa1,0xcb));var _0x15fa=function(_0x1b8171,_0x1137b3){_0x1b8171=_0x1b8171-0x0;var _0x11bd86=_0x5fa1[_0x1b8171];return _0x11bd86;};'use strict';var _=require(_0x15fa('0x0'));var util=require(_0x15fa('0x1'));var utils=require('./utils');var members={};var exclude=['Local/_attended@transfer',_0x15fa('0x2')];function writeDB(_0x1c70a0){utils['info'](util[_0x15fa('0x3')](_0x15fa('0x4'),_0x1c70a0[_0x15fa('0x5')],_0x1c70a0[_0x15fa('0x6')],_0x1c70a0[_0x15fa('0x7')],_0x1c70a0[_0x15fa('0x8')],_0x1c70a0[_0x15fa('0x9')],_0x1c70a0[_0x15fa('0xa')]));if(_0x1c70a0[_0x15fa('0x6')]){utils['getUserByInterface'](_0x1c70a0[_0x15fa('0x6')])[_0x15fa('0xb')](function(_0x4bffe8){if(_0x4bffe8){_0x1c70a0[_0x15fa('0x9')]=_0x4bffe8[_0x15fa('0xc')];_0x1c70a0[_0x15fa('0xd')]=_0x4bffe8[_0x15fa('0xd')];utils[_0x15fa('0xe')](_0x15fa('0xf'),_0x1c70a0);}else{utils[_0x15fa('0x10')](_0x1c70a0[_0x15fa('0x6')][_0x15fa('0x11')]('/')[0x1])['then'](function(_0x403087){if(_0x403087){_0x1c70a0[_0x15fa('0x9')]=_0x403087[_0x15fa('0xc')];_0x1c70a0[_0x15fa('0xd')]=_0x403087[_0x15fa('0xd')];utils['request']('CreateMemberReport',_0x1c70a0);}});}})[_0x15fa('0x12')](function(_0xdcd6b9){utils[_0x15fa('0x13')](util[_0x15fa('0x3')](_0x15fa('0x14'),_0x1c70a0[_0x15fa('0x5')]),_0xdcd6b9);});}delete members[_0x1c70a0[_0x15fa('0x6')]];}function startsWith(_0x20da87,_0x4027b2){return _['some'](_0x20da87,function(_0x22067b){return _[_0x15fa('0x15')](_0x4027b2,_0x22067b);});}exports[_0x15fa('0x16')]=function(_0x43f036){try{utils['debug'](util[_0x15fa('0x3')](_0x15fa('0x17'),members[_0x43f036['device']]?members[_0x43f036[_0x15fa('0x18')]][_0x15fa('0x5')]:_0x43f036[_0x15fa('0x18')]),_0x43f036);utils['info'](util[_0x15fa('0x3')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x43f036['device']]?members[_0x43f036['device']]['uniqueid']:_0x43f036['device'],_0x43f036[_0x15fa('0x19')],_0x43f036[_0x15fa('0x18')]));switch(_0x43f036['state']){case _0x15fa('0x1a'):case _0x15fa('0x1b'):if(!startsWith(exclude,_0x43f036[_0x15fa('0x18')])){members[_0x43f036[_0x15fa('0x18')]]={'channel':_0x15fa('0x1c'),'interface':_0x43f036[_0x15fa('0x18')],'type':'TALKING','enterAt':utils['now'](),'role':'agent'};}break;case _0x15fa('0x1d'):if(!_['isNil'](members[_0x43f036[_0x15fa('0x18')]])){members[_0x43f036[_0x15fa('0x18')]][_0x15fa('0x1e')]=utils[_0x15fa('0x1f')]();members[_0x43f036[_0x15fa('0x18')]]['duration']=utils[_0x15fa('0x20')](members[_0x43f036[_0x15fa('0x18')]][_0x15fa('0x1e')],members[_0x43f036[_0x15fa('0x18')]][_0x15fa('0x21')]);if(members[_0x43f036['device']][_0x15fa('0x5')]){writeDB(members[_0x43f036[_0x15fa('0x18')]]);}}break;default:break;}}catch(_0x4d263e){utils['error'](util[_0x15fa('0x3')](_0x15fa('0x17'),members[_0x43f036['device']]?members[_0x43f036[_0x15fa('0x18')]]['uniqueid']:_0x43f036[_0x15fa('0x18')]),_0x4d263e);}};exports['agentcomplete']=function(_0x185d7e){try{if(!_[_0x15fa('0x22')](members[_0x185d7e[_0x15fa('0x6')]])){utils[_0x15fa('0x23')](util[_0x15fa('0x3')](_0x15fa('0x24'),_0x185d7e[_0x15fa('0x5')]),_0x185d7e);utils[_0x15fa('0x25')](util[_0x15fa('0x3')](_0x15fa('0x26'),_0x185d7e[_0x15fa('0x5')],_0x185d7e[_0x15fa('0x6')],_0x185d7e['queue']));members[_0x185d7e[_0x15fa('0x6')]]=_['assign'](members[_0x185d7e[_0x15fa('0x6')]],{'data4':_0x185d7e['queue'],'uniqueid':_0x185d7e['uniqueid']});}}catch(_0x595285){utils[_0x15fa('0x13')](util[_0x15fa('0x3')](_0x15fa('0x24'),_0x185d7e[_0x15fa('0x5')]),_0x595285);}};exports[_0x15fa('0x27')]=function(_0x306a44){try{utils['debug'](util[_0x15fa('0x3')](_0x15fa('0x28'),_0x306a44[_0x15fa('0x5')]),_0x306a44);if(_0x306a44[_0x15fa('0x7')]){var _0x20da17=_0x306a44[_0x15fa('0x7')]['split']('-')[0x0];if(!_[_0x15fa('0x22')](members[_0x20da17])){members[_0x20da17]=_['assign'](members[_0x20da17],{'data1':members[_0x20da17][_0x15fa('0x29')]||_0x306a44[_0x15fa('0xa')],'data2':members[_0x20da17][_0x15fa('0x8')]||_0x306a44[_0x15fa('0x2a')],'data3':members[_0x20da17][_0x15fa('0x2b')]||_0x306a44['destination'],'uniqueid':members[_0x20da17][_0x15fa('0x5')]||_0x306a44[_0x15fa('0x5')]});utils[_0x15fa('0x25')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x306a44[_0x15fa('0x5')],members[_0x20da17][_0x15fa('0x29')],members[_0x20da17][_0x15fa('0x8')],members[_0x20da17][_0x15fa('0x2b')]));if(members[_0x20da17][_0x15fa('0x1e')]){writeDB(members[_0x20da17]);}}}if(_0x306a44['destinationchannel']){var _0x2e3896=_0x306a44[_0x15fa('0x2c')]['split']('-')[0x0];if(!_[_0x15fa('0x22')](members[_0x2e3896])){members[_0x2e3896]=_[_0x15fa('0x2d')](members[_0x2e3896],{'data1':members[_0x2e3896][_0x15fa('0x29')]||_0x306a44['type'],'data2':members[_0x2e3896]['data2']||_0x306a44[_0x15fa('0x2a')],'data3':members[_0x2e3896][_0x15fa('0x2b')]||_0x306a44[_0x15fa('0x2e')],'uniqueid':members[_0x2e3896][_0x15fa('0x5')]||_0x306a44['uniqueid']});utils[_0x15fa('0x25')](util['format'](_0x15fa('0x2f'),_0x306a44[_0x15fa('0x5')],members[_0x2e3896][_0x15fa('0x29')],members[_0x2e3896][_0x15fa('0x8')],members[_0x2e3896][_0x15fa('0x2b')]));if(members[_0x2e3896][_0x15fa('0x1e')]){writeDB(members[_0x2e3896]);}}}}catch(_0x5c6382){utils[_0x15fa('0x13')](util[_0x15fa('0x3')](_0x15fa('0x28'),_0x306a44[_0x15fa('0x5')]),_0x5c6382);}};
\ No newline at end of file
+var _0x0fea=['debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','now','agent','isNil','exitAt','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','channel','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','data2','membername','type','then','name','internal','request','getUserByName','split','CreateMemberReport','error','[%s][members][writeDB]'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x0fea,0x80));var _0xa0fe=function(_0x3f6af9,_0x553094){_0x3f6af9=_0x3f6af9-0x0;var _0x6cc311=_0x0fea[_0x3f6af9];return _0x6cc311;};'use strict';var _=require(_0xa0fe('0x0'));var util=require(_0xa0fe('0x1'));var utils=require(_0xa0fe('0x2'));var members={};var exclude=[_0xa0fe('0x3'),_0xa0fe('0x4')];function writeDB(_0x41c8ac){utils[_0xa0fe('0x5')](util[_0xa0fe('0x6')](_0xa0fe('0x7'),_0x41c8ac[_0xa0fe('0x8')],_0x41c8ac[_0xa0fe('0x9')],_0x41c8ac['channel'],_0x41c8ac[_0xa0fe('0xa')],_0x41c8ac[_0xa0fe('0xb')],_0x41c8ac[_0xa0fe('0xc')]));if(_0x41c8ac[_0xa0fe('0x9')]){utils['getUserByInterface'](_0x41c8ac[_0xa0fe('0x9')])[_0xa0fe('0xd')](function(_0x31f315){if(_0x31f315){_0x41c8ac['membername']=_0x31f315[_0xa0fe('0xe')];_0x41c8ac[_0xa0fe('0xf')]=_0x31f315[_0xa0fe('0xf')];utils[_0xa0fe('0x10')]('CreateMemberReport',_0x41c8ac);}else{utils[_0xa0fe('0x11')](_0x41c8ac['interface'][_0xa0fe('0x12')]('/')[0x1])[_0xa0fe('0xd')](function(_0x3e30cc){if(_0x3e30cc){_0x41c8ac[_0xa0fe('0xb')]=_0x3e30cc['name'];_0x41c8ac['internal']=_0x3e30cc[_0xa0fe('0xf')];utils[_0xa0fe('0x10')](_0xa0fe('0x13'),_0x41c8ac);}});}})['catch'](function(_0x280b92){utils[_0xa0fe('0x14')](util['format'](_0xa0fe('0x15'),_0x41c8ac[_0xa0fe('0x8')]),_0x280b92);});}delete members[_0x41c8ac[_0xa0fe('0x9')]];}function startsWith(_0x383109,_0x220b5a){return _['some'](_0x383109,function(_0x3eb700){return _['startsWith'](_0x220b5a,_0x3eb700);});}exports['devicestatechange']=function(_0x592aa8){try{utils[_0xa0fe('0x16')](util[_0xa0fe('0x6')](_0xa0fe('0x17'),members[_0x592aa8['device']]?members[_0x592aa8[_0xa0fe('0x18')]]['uniqueid']:_0x592aa8[_0xa0fe('0x18')]),_0x592aa8);utils['info'](util[_0xa0fe('0x6')](_0xa0fe('0x19'),members[_0x592aa8[_0xa0fe('0x18')]]?members[_0x592aa8['device']]['uniqueid']:_0x592aa8[_0xa0fe('0x18')],_0x592aa8[_0xa0fe('0x1a')],_0x592aa8[_0xa0fe('0x18')]));switch(_0x592aa8[_0xa0fe('0x1a')]){case'INUSE':case _0xa0fe('0x1b'):if(!startsWith(exclude,_0x592aa8[_0xa0fe('0x18')])){members[_0x592aa8[_0xa0fe('0x18')]]={'channel':_0xa0fe('0x1c'),'interface':_0x592aa8[_0xa0fe('0x18')],'type':_0xa0fe('0x1d'),'enterAt':utils[_0xa0fe('0x1e')](),'role':_0xa0fe('0x1f')};}break;case'NOT_INUSE':if(!_[_0xa0fe('0x20')](members[_0x592aa8[_0xa0fe('0x18')]])){members[_0x592aa8[_0xa0fe('0x18')]][_0xa0fe('0x21')]=utils[_0xa0fe('0x1e')]();members[_0x592aa8[_0xa0fe('0x18')]][_0xa0fe('0x22')]=utils[_0xa0fe('0x23')](members[_0x592aa8[_0xa0fe('0x18')]]['exitAt'],members[_0x592aa8[_0xa0fe('0x18')]][_0xa0fe('0x24')]);if(members[_0x592aa8[_0xa0fe('0x18')]][_0xa0fe('0x8')]){writeDB(members[_0x592aa8[_0xa0fe('0x18')]]);}}break;default:break;}}catch(_0x52fa65){utils[_0xa0fe('0x14')](util[_0xa0fe('0x6')]('[%s][members][devicestatechange]',members[_0x592aa8[_0xa0fe('0x18')]]?members[_0x592aa8[_0xa0fe('0x18')]][_0xa0fe('0x8')]:_0x592aa8['device']),_0x52fa65);}};exports[_0xa0fe('0x25')]=function(_0x34ad53){try{if(!_[_0xa0fe('0x20')](members[_0x34ad53[_0xa0fe('0x9')]])){utils[_0xa0fe('0x16')](util[_0xa0fe('0x6')]('[%s][members][agentcomplete]',_0x34ad53[_0xa0fe('0x8')]),_0x34ad53);utils[_0xa0fe('0x5')](util['format'](_0xa0fe('0x26'),_0x34ad53[_0xa0fe('0x8')],_0x34ad53['interface'],_0x34ad53[_0xa0fe('0x27')]));members[_0x34ad53[_0xa0fe('0x9')]]=_[_0xa0fe('0x28')](members[_0x34ad53['interface']],{'data4':_0x34ad53[_0xa0fe('0x27')],'uniqueid':_0x34ad53[_0xa0fe('0x8')]});}}catch(_0x3c8798){utils['error'](util[_0xa0fe('0x6')](_0xa0fe('0x29'),_0x34ad53[_0xa0fe('0x8')]),_0x3c8798);}};exports[_0xa0fe('0x2a')]=function(_0x1c7037){try{utils[_0xa0fe('0x16')](util[_0xa0fe('0x6')](_0xa0fe('0x2b'),_0x1c7037[_0xa0fe('0x8')]),_0x1c7037);if(_0x1c7037['channel']){var _0x4403f6=_0x1c7037[_0xa0fe('0x2c')][_0xa0fe('0x12')]('-')[0x0];if(!_[_0xa0fe('0x20')](members[_0x4403f6])){members[_0x4403f6]=_[_0xa0fe('0x28')](members[_0x4403f6],{'data1':members[_0x4403f6][_0xa0fe('0x2d')]||_0x1c7037[_0xa0fe('0xc')],'data2':members[_0x4403f6][_0xa0fe('0xa')]||_0x1c7037[_0xa0fe('0x2e')],'data3':members[_0x4403f6][_0xa0fe('0x2f')]||_0x1c7037[_0xa0fe('0x30')],'uniqueid':members[_0x4403f6][_0xa0fe('0x8')]||_0x1c7037[_0xa0fe('0x8')]});utils[_0xa0fe('0x5')](util['format'](_0xa0fe('0x31'),_0x1c7037[_0xa0fe('0x8')],members[_0x4403f6]['data1'],members[_0x4403f6][_0xa0fe('0xa')],members[_0x4403f6]['data3']));if(members[_0x4403f6]['exitAt']){writeDB(members[_0x4403f6]);}}}if(_0x1c7037['destinationchannel']){var _0x11228c=_0x1c7037['destinationchannel']['split']('-')[0x0];if(!_[_0xa0fe('0x20')](members[_0x11228c])){members[_0x11228c]=_['assign'](members[_0x11228c],{'data1':members[_0x11228c][_0xa0fe('0x2d')]||_0x1c7037[_0xa0fe('0xc')],'data2':members[_0x11228c][_0xa0fe('0xa')]||_0x1c7037[_0xa0fe('0x2e')],'data3':members[_0x11228c][_0xa0fe('0x2f')]||_0x1c7037['destination'],'uniqueid':members[_0x11228c][_0xa0fe('0x8')]||_0x1c7037[_0xa0fe('0x8')]});utils[_0xa0fe('0x5')](util[_0xa0fe('0x6')](_0xa0fe('0x31'),_0x1c7037[_0xa0fe('0x8')],members[_0x11228c][_0xa0fe('0x2d')],members[_0x11228c][_0xa0fe('0xa')],members[_0x11228c][_0xa0fe('0x2f')]));if(members[_0x11228c][_0xa0fe('0x21')]){writeDB(members[_0x11228c]);}}}}catch(_0x2d80ba){utils[_0xa0fe('0x14')](util['format'](_0xa0fe('0x2b'),_0x1c7037[_0xa0fe('0x8')]),_0x2d80ba);}};
\ No newline at end of file
index 2076a41..5979b94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3975=['getVoiceQueueByName','then','type','CreateVoiceQueueReport','request','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','variable','queuestatus','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexit','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','value','queueposition','queuecallerexitAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','[%s][queues][queuecallerabandon]','ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','holdtime','diffTime','queuecallerjoinAt','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','[%s][queues][agentcomplete]','assigned','transfer','TRANSFER','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','transferexten','transferuniqueid','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','origtransfererexten','ATTENDED','transfereelinkedid','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','queuecallerexitreason'];(function(_0x7b7f5f,_0x2d472b){var _0x35e97f=function(_0x1b7300){while(--_0x1b7300){_0x7b7f5f['push'](_0x7b7f5f['shift']());}};_0x35e97f(++_0x2d472b);}(_0x3975,0xc7));var _0x5397=function(_0x7687a,_0x1f1f04){_0x7687a=_0x7687a-0x0;var _0x1cd84d=_0x3975[_0x7687a];return _0x1cd84d;};'use strict';var _=require(_0x5397('0x0'));var util=require('util');var utils=require(_0x5397('0x1'));var queues={};function writeDB(_0x17ffda){utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x4'),_0x17ffda[_0x5397('0x5')],_0x17ffda[_0x5397('0x6')],_0x17ffda[_0x5397('0x7')],_0x17ffda['lastAssignedTo'],_0x17ffda[_0x5397('0x8')],_0x17ffda[_0x5397('0x9')],_0x17ffda[_0x5397('0xa')]));if(_0x17ffda[_0x5397('0x7')]){utils[_0x5397('0xb')](_0x17ffda[_0x5397('0x7')])[_0x5397('0xc')](function(_0x53e2cb){if(_0x53e2cb){_0x17ffda[_0x5397('0xd')]=_0x53e2cb[_0x5397('0xd')];}utils['request'](_0x5397('0xe'),_0x17ffda);});}else{utils[_0x5397('0xf')](_0x5397('0xe'),_0x17ffda);}if(_0x17ffda[_0x5397('0x10')]){delete queues[_0x17ffda[_0x5397('0x10')]];}else{delete queues[_0x17ffda[_0x5397('0x5')]];}}exports[_0x5397('0x11')]=function(_0x184a9e){try{utils['debug'](util[_0x5397('0x3')](_0x5397('0x12'),_0x184a9e[_0x5397('0x5')]),_0x184a9e);utils['info'](util[_0x5397('0x3')](_0x5397('0x13'),_0x184a9e[_0x5397('0x5')],_0x184a9e[_0x5397('0x7')],_0x184a9e[_0x5397('0x14')]));queues[_0x184a9e[_0x5397('0x5')]]=_['assign'](_0x184a9e,{'originalposition':_0x184a9e[_0x5397('0x14')],'queuecallerjoinAt':utils[_0x5397('0x15')](),'mohtime':0x0});}catch(_0x4d5272){utils[_0x5397('0x16')](util['format']('[%s][queues][queuecallerjoin]',_0x184a9e[_0x5397('0x5')]),_0x4d5272);}};exports[_0x5397('0x17')]=function(_0x44a39a){try{if(!_[_0x5397('0x18')](queues[_0x44a39a[_0x5397('0x5')]])){utils[_0x5397('0x19')](util[_0x5397('0x3')](_0x5397('0x1a'),_0x44a39a['uniqueid']),_0x44a39a);if(queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x1b')]){if(!queues[_0x44a39a[_0x5397('0x5')]]['queuecallerabandon']&&!queues[_0x44a39a[_0x5397('0x5')]]['queuecallerexit']){queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x1c')]=!![];queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x1d')]=utils[_0x5397('0x15')]();queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0xa')]=_0x5397('0x1e');}utils['info'](util[_0x5397('0x3')](_0x5397('0x1f'),_0x44a39a[_0x5397('0x5')],queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x20')],queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0xa')]));writeDB(queues[_0x44a39a[_0x5397('0x5')]]);}else if(queues[_0x44a39a['uniqueid']][_0x5397('0x10')]){utils['info'](util[_0x5397('0x3')](_0x5397('0x21'),_0x44a39a[_0x5397('0x5')],queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x20')],queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x10')]));queues[queues[_0x44a39a[_0x5397('0x5')]]['transfereduniqueid']]=queues[_0x44a39a[_0x5397('0x5')]];queues[queues[_0x44a39a[_0x5397('0x5')]][_0x5397('0x10')]][_0x5397('0x22')]=0x2;delete queues[_0x44a39a[_0x5397('0x5')]];}}}catch(_0x308c51){utils[_0x5397('0x16')](util[_0x5397('0x3')](_0x5397('0x1a'),_0x44a39a[_0x5397('0x5')]),_0x308c51);}};exports[_0x5397('0x23')]=function(_0x3694bc){try{utils['debug'](util[_0x5397('0x3')]('[%s][queues][varset]',_0x3694bc[_0x5397('0x5')]),_0x3694bc);if(!_['isNil'](_0x3694bc[_0x5397('0x24')][_0x5397('0x25')])&&_0x3694bc['value'][_0x5397('0x26')]()!==_0x5397('0x27')){if(!_[_0x5397('0x18')](queues[_0x3694bc[_0x5397('0x5')]])){queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0x28')]=![];queues[_0x3694bc['uniqueid']][_0x5397('0x29')]=null;queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0x2a')]=!![];queues[_0x3694bc[_0x5397('0x5')]]['queuecallerexitAt']=utils[_0x5397('0x15')]();queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0xa')]=_0x3694bc['value']['toUpperCase']();utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x2b'),_0x3694bc[_0x5397('0x5')],queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0x20')],_0x3694bc[_0x5397('0x2c')],queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0xa')]));writeDB(queues[_0x3694bc['uniqueid']]);}}else if(!_[_0x5397('0x18')](_0x3694bc[_0x5397('0x24')][_0x5397('0x2d')])){if(!_[_0x5397('0x18')](queues[_0x3694bc[_0x5397('0x5')]])&&!queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0x28')]){queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0x28')]=![];queues[_0x3694bc['uniqueid']][_0x5397('0x29')]=null;queues[_0x3694bc[_0x5397('0x5')]]['queuecallerexit']=!![];queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0x2e')]=utils['now']();queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0xa')]=_0x5397('0x2f');utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x30'),_0x3694bc[_0x5397('0x5')],queues[_0x3694bc['uniqueid']][_0x5397('0x20')],_0x3694bc[_0x5397('0x2c')],queues[_0x3694bc[_0x5397('0x5')]][_0x5397('0xa')]));}}}catch(_0x88d533){utils[_0x5397('0x16')](util[_0x5397('0x3')](_0x5397('0x31'),_0x3694bc[_0x5397('0x5')]),_0x88d533);}};exports[_0x5397('0x28')]=function(_0x3a5b8f){try{if(!_[_0x5397('0x18')](queues[_0x3a5b8f['uniqueid']])){utils['debug'](util[_0x5397('0x3')](_0x5397('0x32'),_0x3a5b8f['uniqueid']),_0x3a5b8f);queues[_0x3a5b8f[_0x5397('0x5')]][_0x5397('0x2a')]=![];queues[_0x3a5b8f['uniqueid']]['queuecallerexitAt']=null;queues[_0x3a5b8f[_0x5397('0x5')]][_0x5397('0x28')]=!![];queues[_0x3a5b8f['uniqueid']]['queuecallerabandonAt']=utils[_0x5397('0x15')]();queues[_0x3a5b8f[_0x5397('0x5')]][_0x5397('0xa')]=_0x5397('0x33');utils[_0x5397('0x2')](util[_0x5397('0x3')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x3a5b8f[_0x5397('0x5')],queues[_0x3a5b8f[_0x5397('0x5')]]['name'],queues[_0x3a5b8f[_0x5397('0x5')]][_0x5397('0xa')]));}}catch(_0x305b3a){utils[_0x5397('0x16')](util[_0x5397('0x3')](_0x5397('0x32'),_0x3a5b8f[_0x5397('0x5')]),_0x305b3a);}};exports[_0x5397('0x34')]=function(_0x5e8a2d){try{if(!_[_0x5397('0x18')](queues[_0x5e8a2d[_0x5397('0x5')]])){utils[_0x5397('0x19')](util[_0x5397('0x3')](_0x5397('0x35'),_0x5e8a2d[_0x5397('0x5')]),_0x5e8a2d);utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x36'),_0x5e8a2d[_0x5397('0x5')],queues[_0x5e8a2d[_0x5397('0x5')]]['name'],_0x5e8a2d['connectedlinenum'],_0x5e8a2d[_0x5397('0x37')]));queues[_0x5e8a2d['uniqueid']][_0x5397('0x34')]=!![];queues[_0x5e8a2d['uniqueid']][_0x5397('0x1b')]=utils[_0x5397('0x15')]();queues[_0x5e8a2d['uniqueid']][_0x5397('0x38')]=utils[_0x5397('0x39')](queues[_0x5e8a2d[_0x5397('0x5')]][_0x5397('0x1b')],queues[_0x5e8a2d[_0x5397('0x5')]][_0x5397('0x3a')]);queues[_0x5e8a2d[_0x5397('0x5')]][_0x5397('0x14')]=_0x5e8a2d['position'];queues[_0x5e8a2d['uniqueid']]['count']=_0x5e8a2d['count'];queues[_0x5e8a2d[_0x5397('0x5')]][_0x5397('0x3b')]=_0x5e8a2d[_0x5397('0x3b')];queues[_0x5e8a2d[_0x5397('0x5')]][_0x5397('0x37')]=_0x5e8a2d[_0x5397('0x37')];}}catch(_0x481a98){utils['error'](util[_0x5397('0x3')](_0x5397('0x35'),_0x5e8a2d[_0x5397('0x5')]),_0x481a98);}};exports[_0x5397('0x3c')]=function(_0x341ba){try{if(!_[_0x5397('0x18')](queues[_0x341ba['uniqueid']])){utils[_0x5397('0x19')](util[_0x5397('0x3')](_0x5397('0x3d'),_0x341ba[_0x5397('0x5')]),_0x341ba);utils[_0x5397('0x2')](util['format'](_0x5397('0x3e'),_0x341ba[_0x5397('0x5')],queues[_0x341ba[_0x5397('0x5')]][_0x5397('0x20')],_0x341ba[_0x5397('0x3f')],_0x341ba['destaccountcode']));queues[_0x341ba['uniqueid']]['queuecallerabandon']=![];queues[_0x341ba[_0x5397('0x5')]]['queuecallerabandon']=![];queues[_0x341ba[_0x5397('0x5')]][_0x5397('0x29')]=null;queues[_0x341ba[_0x5397('0x5')]][_0x5397('0x2a')]=![];queues[_0x341ba['uniqueid']][_0x5397('0xa')]=null;queues[_0x341ba['uniqueid']][_0x5397('0x2e')]=null;queues[_0x341ba[_0x5397('0x5')]]['assigned']=!![];queues[_0x341ba['uniqueid']][_0x5397('0x9')]=_0x341ba[_0x5397('0x40')];queues[_0x341ba[_0x5397('0x5')]]['lastAssignedTo']=_0x341ba[_0x5397('0x3f')];}}catch(_0x494d5e){utils[_0x5397('0x16')](util['format'](_0x5397('0x3d'),_0x341ba[_0x5397('0x5')]),_0x494d5e);}};exports['agentcomplete']=function(_0x5a01e7){try{if(!_[_0x5397('0x18')](queues[_0x5a01e7[_0x5397('0x5')]])){if(queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x1b')]){utils['debug'](util[_0x5397('0x3')](_0x5397('0x41'),_0x5a01e7[_0x5397('0x5')]),_0x5a01e7);queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x28')]=![];queues[_0x5a01e7['uniqueid']][_0x5397('0x28')]=![];queues[_0x5a01e7[_0x5397('0x5')]]['queuecallerabandonAt']=null;queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x2a')]=![];queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x2e')]=null;queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x42')]=!![];queues[_0x5a01e7[_0x5397('0x5')]]['lastAssignedTo']=_0x5a01e7[_0x5397('0x3f')];queues[_0x5a01e7[_0x5397('0x5')]]['queuecallercomplete']=!![];queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x1d')]=utils[_0x5397('0x15')]();if(_0x5a01e7['reason']==_0x5397('0x43')){if(!queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0x43')]){queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0xa')]=_0x5397('0x44');}}else{queues[_0x5a01e7['uniqueid']][_0x5397('0xa')]=_0x5397('0x45')+_0x5a01e7[_0x5397('0x46')][_0x5397('0x26')]();}utils[_0x5397('0x2')](util['format'](_0x5397('0x47'),_0x5a01e7[_0x5397('0x5')],queues[_0x5a01e7[_0x5397('0x5')]]['name'],_0x5a01e7[_0x5397('0x3f')],queues[_0x5a01e7[_0x5397('0x5')]][_0x5397('0xa')]));writeDB(queues[_0x5a01e7['uniqueid']]);}}}catch(_0x53e189){utils[_0x5397('0x16')](util[_0x5397('0x3')](_0x5397('0x41'),_0x5a01e7[_0x5397('0x5')]),_0x53e189);}};exports[_0x5397('0x48')]=function(_0x20959a){try{if(!_['isNil'](queues[_0x20959a[_0x5397('0x49')]])){utils['debug'](util[_0x5397('0x3')](_0x5397('0x4a'),_0x20959a[_0x5397('0x5')]),_0x20959a);queues[_0x20959a[_0x5397('0x49')]][_0x5397('0x43')]=!![];queues[_0x20959a[_0x5397('0x49')]][_0x5397('0x4b')]='BLIND';queues[_0x20959a[_0x5397('0x49')]][_0x5397('0x4c')]=_0x20959a['extension'];queues[_0x20959a[_0x5397('0x49')]][_0x5397('0x4d')]=_0x20959a['transfereeuniqueid'];queues[_0x20959a[_0x5397('0x49')]][_0x5397('0xa')]='BLINDTRANSFER';utils[_0x5397('0x2')](util[_0x5397('0x3')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x20959a[_0x5397('0x5')],queues[_0x20959a['transfereeuniqueid']]['name'],_0x20959a[_0x5397('0x49')],_0x20959a['extension']));}}catch(_0x5b996c){utils[_0x5397('0x16')](util['format'](_0x5397('0x4a'),_0x20959a[_0x5397('0x5')]),_0x5b996c);}};exports['attendedtransfer']=function(_0x2f0297){try{utils['debug'](util[_0x5397('0x3')]('[%s][queues][attendedtransfer]',_0x2f0297[_0x5397('0x4e')]),_0x2f0297);if(_0x2f0297[_0x5397('0x4e')]==_0x2f0297[_0x5397('0x4f')]){if(!_['isNil'](queues[_0x2f0297['secondtransfererlinkedid']])){utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x50'),_0x2f0297[_0x5397('0x4e')],queues[_0x2f0297[_0x5397('0x51')]][_0x5397('0x20')],_0x2f0297[_0x5397('0x52')]));queues[_0x2f0297['secondtransfererlinkedid']][_0x5397('0x43')]=!![];queues[_0x2f0297[_0x5397('0x51')]][_0x5397('0x4b')]=_0x5397('0x53');queues[_0x2f0297[_0x5397('0x51')]][_0x5397('0x4c')]=_0x2f0297[_0x5397('0x52')];queues[_0x2f0297[_0x5397('0x51')]]['transferuniqueid']=_0x2f0297[_0x5397('0x4e')];queues[_0x2f0297[_0x5397('0x51')]][_0x5397('0xa')]='ATTENDEDTRANSFER';}if(!_[_0x5397('0x18')](queues[_0x2f0297[_0x5397('0x4f')]])){if(_0x2f0297[_0x5397('0x54')]&&queues[_0x2f0297[_0x5397('0x54')]]){queues[_0x2f0297[_0x5397('0x54')]][_0x5397('0x22')]=0x1;queues[_0x2f0297[_0x5397('0x49')]]=_['clone'](queues[_0x2f0297['transfereelinkedid']]);queues[_0x2f0297['transfereeuniqueid']][_0x5397('0x10')]=_0x2f0297[_0x5397('0x55')];queues[_0x2f0297[_0x5397('0x49')]]['queuecallerenterreason']=0x2;queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x8')]=queues[_0x2f0297[_0x5397('0x51')]][_0x5397('0x8')];queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x56')]=queues[_0x2f0297['secondtransfererlinkedid']][_0x5397('0x56')];queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x3a')]=utils[_0x5397('0x15')]();queues[_0x2f0297['transfereeuniqueid']][_0x5397('0x1b')]=utils[_0x5397('0x15')]();queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x38')]=0x0;queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x57')]=0x0;utils['info'](util[_0x5397('0x3')](_0x5397('0x58'),_0x2f0297[_0x5397('0x4e')],queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x20')],queues[_0x2f0297[_0x5397('0x49')]][_0x5397('0x8')],queues[_0x2f0297['transfereeuniqueid']]['calleridname']));}else{utils[_0x5397('0x2')](util[_0x5397('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x2f0297[_0x5397('0x4e')],queues[_0x2f0297['origtransfererlinkedid']][_0x5397('0x20')],_0x2f0297[_0x5397('0x51')]));queues[_0x2f0297[_0x5397('0x4f')]]['transfereduniqueid']=_0x2f0297[_0x5397('0x51')];}}}else if(_0x2f0297[_0x5397('0x59')]==_0x2f0297[_0x5397('0x51')]){if(!_[_0x5397('0x18')](queues[_0x2f0297[_0x5397('0x4f')]])){utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x5a'),_0x2f0297[_0x5397('0x4e')],queues[_0x2f0297[_0x5397('0x4f')]][_0x5397('0x20')],_0x2f0297[_0x5397('0x59')],_0x2f0297[_0x5397('0x5b')]));queues[_0x2f0297[_0x5397('0x4f')]][_0x5397('0x43')]=!![];queues[_0x2f0297[_0x5397('0x4f')]][_0x5397('0x4b')]=_0x5397('0x53');queues[_0x2f0297[_0x5397('0x4f')]][_0x5397('0x4c')]=_0x2f0297[_0x5397('0x5b')];queues[_0x2f0297['origtransfererlinkedid']][_0x5397('0x4d')]=_0x2f0297[_0x5397('0x59')];queues[_0x2f0297[_0x5397('0x4f')]][_0x5397('0xa')]=_0x5397('0x5c');}if(!_['isNil'](queues[_0x2f0297[_0x5397('0x51')]])){if(_0x2f0297[_0x5397('0x5d')]&&queues[_0x2f0297[_0x5397('0x5d')]]){queues[_0x2f0297['transfertargetlinkedid']][_0x5397('0x22')]=0x1;queues[_0x2f0297[_0x5397('0x55')]]=_[_0x5397('0x5e')](queues[_0x2f0297[_0x5397('0x5d')]]);queues[_0x2f0297['transfertargetuniqueid']]['transfereduniqueid']=_0x2f0297[_0x5397('0x55')];queues[_0x2f0297[_0x5397('0x55')]][_0x5397('0x22')]=0x2;queues[_0x2f0297[_0x5397('0x55')]]['calleridnum']=queues[_0x2f0297[_0x5397('0x4f')]][_0x5397('0x8')];queues[_0x2f0297[_0x5397('0x55')]][_0x5397('0x56')]=queues[_0x2f0297['origtransfererlinkedid']][_0x5397('0x56')];queues[_0x2f0297[_0x5397('0x55')]]['queuecallerjoinAt']=utils['now']();queues[_0x2f0297[_0x5397('0x55')]][_0x5397('0x1b')]=utils['now']();queues[_0x2f0297['transfertargetuniqueid']][_0x5397('0x38')]=0x0;queues[_0x2f0297['transfertargetuniqueid']][_0x5397('0x57')]=0x0;utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x5f'),_0x2f0297[_0x5397('0x4e')],queues[_0x2f0297[_0x5397('0x55')]]['name'],queues[_0x2f0297['transfertargetuniqueid']]['transfereduniqueid'],queues[_0x2f0297['transfertargetuniqueid']][_0x5397('0x8')],queues[_0x2f0297[_0x5397('0x55')]][_0x5397('0x56')]));}else{utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x60'),_0x2f0297[_0x5397('0x4e')],queues[_0x2f0297['secondtransfererlinkedid']][_0x5397('0x20')],_0x2f0297[_0x5397('0x4f')]));queues[_0x2f0297[_0x5397('0x51')]][_0x5397('0x10')]=_0x2f0297[_0x5397('0x4f')];}}}}catch(_0x4f751d){utils['error'](util[_0x5397('0x3')](_0x5397('0x61'),_0x2f0297[_0x5397('0x4e')]),_0x4f751d);}};exports[_0x5397('0x62')]=function(_0x393a17){try{if(!_[_0x5397('0x18')](queues[_0x393a17[_0x5397('0x5')]])){utils[_0x5397('0x19')](util[_0x5397('0x3')](_0x5397('0x63'),_0x393a17[_0x5397('0x5')]),_0x393a17);queues[_0x393a17[_0x5397('0x5')]][_0x5397('0x64')]=utils[_0x5397('0x15')]();utils[_0x5397('0x2')](util[_0x5397('0x3')](_0x5397('0x65'),_0x393a17['uniqueid'],queues[_0x393a17[_0x5397('0x5')]][_0x5397('0x20')],queues[_0x393a17[_0x5397('0x5')]]['musiconholdstartAt']));}}catch(_0x5ada2e){utils['error'](util[_0x5397('0x3')]('[%s][queues][musiconholdstart]',_0x393a17[_0x5397('0x5')]),_0x5ada2e);}};exports[_0x5397('0x66')]=function(_0x26d160){try{if(!_[_0x5397('0x18')](queues[_0x26d160[_0x5397('0x5')]])){if(!_[_0x5397('0x18')](queues[_0x26d160[_0x5397('0x5')]]['musiconholdstartAt'])){utils[_0x5397('0x19')](util['format'](_0x5397('0x67'),_0x26d160[_0x5397('0x5')]),_0x26d160);queues[_0x26d160['uniqueid']][_0x5397('0x57')]+=utils['diffTime'](utils[_0x5397('0x15')](),queues[_0x26d160[_0x5397('0x5')]][_0x5397('0x64')]);utils['info'](util['format'](_0x5397('0x68'),_0x26d160[_0x5397('0x5')],queues[_0x26d160[_0x5397('0x5')]][_0x5397('0x20')],queues[_0x26d160['uniqueid']][_0x5397('0x57')]));delete queues[_0x26d160[_0x5397('0x5')]][_0x5397('0x64')];}}}catch(_0x30b485){utils['error'](util['format'](_0x5397('0x67'),_0x26d160[_0x5397('0x5')]),_0x30b485);}};
\ No newline at end of file
+var _0xc65b=['queuecallerjoinAt','count','connectedlinename','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','lastAssignedTo','agentcomplete','[%s][queues][agentcomplete]','reason','COMPLETEDBY','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','transfer','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','queuecallerenterreason','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','musiconholdstartAt','[%s][queues][musiconholdstart]','musiconholdstop','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','[%s][queues][queuecallerjoin]','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','name','varset','[%s][queues][varset]','isNil','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleave','holdtime'];(function(_0x2be372,_0x4d2e53){var _0x26349b=function(_0x18d0a8){while(--_0x18d0a8){_0x2be372['push'](_0x2be372['shift']());}};_0x26349b(++_0x4d2e53);}(_0xc65b,0x167));var _0xbc65=function(_0x416a3c,_0x481c83){_0x416a3c=_0x416a3c-0x0;var _0x2a055d=_0xc65b[_0x416a3c];return _0x2a055d;};'use strict';var _=require(_0xbc65('0x0'));var util=require('util');var utils=require(_0xbc65('0x1'));var queues={};function writeDB(_0x51494a){utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x4'),_0x51494a[_0xbc65('0x5')],_0x51494a[_0xbc65('0x6')],_0x51494a[_0xbc65('0x7')],_0x51494a['lastAssignedTo'],_0x51494a[_0xbc65('0x8')],_0x51494a[_0xbc65('0x9')],_0x51494a[_0xbc65('0xa')]));if(_0x51494a[_0xbc65('0x7')]){utils[_0xbc65('0xb')](_0x51494a[_0xbc65('0x7')])[_0xbc65('0xc')](function(_0x44cc6b){if(_0x44cc6b){_0x51494a[_0xbc65('0xd')]=_0x44cc6b[_0xbc65('0xd')];}utils[_0xbc65('0xe')]('CreateVoiceQueueReport',_0x51494a);});}else{utils[_0xbc65('0xe')](_0xbc65('0xf'),_0x51494a);}if(_0x51494a[_0xbc65('0x10')]){delete queues[_0x51494a['transfereduniqueid']];}else{delete queues[_0x51494a[_0xbc65('0x5')]];}}exports[_0xbc65('0x11')]=function(_0x2e9f3b){try{utils[_0xbc65('0x12')](util[_0xbc65('0x3')]('[%s][queues][queuecallerjoin]',_0x2e9f3b[_0xbc65('0x5')]),_0x2e9f3b);utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x13'),_0x2e9f3b[_0xbc65('0x5')],_0x2e9f3b[_0xbc65('0x7')],_0x2e9f3b[_0xbc65('0x14')]));queues[_0x2e9f3b[_0xbc65('0x5')]]=_[_0xbc65('0x15')](_0x2e9f3b,{'originalposition':_0x2e9f3b['position'],'queuecallerjoinAt':utils[_0xbc65('0x16')](),'mohtime':0x0});}catch(_0x2ea5be){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x18'),_0x2e9f3b[_0xbc65('0x5')]),_0x2ea5be);}};exports[_0xbc65('0x19')]=function(_0x4cab92){try{if(!_['isNil'](queues[_0x4cab92['uniqueid']])){utils[_0xbc65('0x12')](util['format'](_0xbc65('0x1a'),_0x4cab92[_0xbc65('0x5')]),_0x4cab92);if(queues[_0x4cab92[_0xbc65('0x5')]][_0xbc65('0x1b')]){if(!queues[_0x4cab92[_0xbc65('0x5')]][_0xbc65('0x1c')]&&!queues[_0x4cab92[_0xbc65('0x5')]][_0xbc65('0x1d')]){queues[_0x4cab92['uniqueid']][_0xbc65('0x1e')]=!![];queues[_0x4cab92['uniqueid']][_0xbc65('0x1f')]=utils['now']();queues[_0x4cab92['uniqueid']][_0xbc65('0xa')]=_0xbc65('0x20');}utils[_0xbc65('0x2')](util[_0xbc65('0x3')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x4cab92['uniqueid'],queues[_0x4cab92['uniqueid']][_0xbc65('0x21')],queues[_0x4cab92['uniqueid']][_0xbc65('0xa')]));writeDB(queues[_0x4cab92['uniqueid']]);}else if(queues[_0x4cab92['uniqueid']][_0xbc65('0x10')]){utils['info'](util['format']('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0x4cab92['uniqueid'],queues[_0x4cab92['uniqueid']][_0xbc65('0x21')],queues[_0x4cab92[_0xbc65('0x5')]]['transfereduniqueid']));queues[queues[_0x4cab92[_0xbc65('0x5')]][_0xbc65('0x10')]]=queues[_0x4cab92[_0xbc65('0x5')]];queues[queues[_0x4cab92[_0xbc65('0x5')]][_0xbc65('0x10')]]['queuecallerenterreason']=0x2;delete queues[_0x4cab92[_0xbc65('0x5')]];}}}catch(_0x369cad){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x1a'),_0x4cab92[_0xbc65('0x5')]),_0x369cad);}};exports[_0xbc65('0x22')]=function(_0x318ee4){try{utils['debug'](util[_0xbc65('0x3')](_0xbc65('0x23'),_0x318ee4['uniqueid']),_0x318ee4);if(!_[_0xbc65('0x24')](_0x318ee4['variable'][_0xbc65('0x25')])&&_0x318ee4[_0xbc65('0x26')][_0xbc65('0x27')]()!==_0xbc65('0x28')){if(!_[_0xbc65('0x24')](queues[_0x318ee4[_0xbc65('0x5')]])){queues[_0x318ee4['uniqueid']][_0xbc65('0x1c')]=![];queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0x29')]=null;queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0x1d')]=!![];queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0x2a')]=utils['now']();queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0xa')]=_0x318ee4[_0xbc65('0x26')]['toUpperCase']();utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x2b'),_0x318ee4[_0xbc65('0x5')],queues[_0x318ee4['uniqueid']][_0xbc65('0x21')],_0x318ee4['value'],queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0xa')]));writeDB(queues[_0x318ee4['uniqueid']]);}}else if(!_[_0xbc65('0x24')](_0x318ee4['variable']['queueposition'])){if(!_['isNil'](queues[_0x318ee4['uniqueid']])&&!queues[_0x318ee4[_0xbc65('0x5')]]['queuecallerabandon']){queues[_0x318ee4['uniqueid']][_0xbc65('0x1c')]=![];queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0x29')]=null;queues[_0x318ee4[_0xbc65('0x5')]]['queuecallerexit']=!![];queues[_0x318ee4['uniqueid']][_0xbc65('0x2a')]=utils['now']();queues[_0x318ee4[_0xbc65('0x5')]]['queuecallerexitreason']=_0xbc65('0x2c');utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x2d'),_0x318ee4[_0xbc65('0x5')],queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0x21')],_0x318ee4['value'],queues[_0x318ee4[_0xbc65('0x5')]][_0xbc65('0xa')]));}}}catch(_0x178e47){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x23'),_0x318ee4[_0xbc65('0x5')]),_0x178e47);}};exports[_0xbc65('0x1c')]=function(_0x169582){try{if(!_[_0xbc65('0x24')](queues[_0x169582[_0xbc65('0x5')]])){utils[_0xbc65('0x12')](util[_0xbc65('0x3')](_0xbc65('0x2e'),_0x169582[_0xbc65('0x5')]),_0x169582);queues[_0x169582[_0xbc65('0x5')]][_0xbc65('0x1d')]=![];queues[_0x169582[_0xbc65('0x5')]]['queuecallerexitAt']=null;queues[_0x169582['uniqueid']][_0xbc65('0x1c')]=!![];queues[_0x169582[_0xbc65('0x5')]]['queuecallerabandonAt']=utils[_0xbc65('0x16')]();queues[_0x169582[_0xbc65('0x5')]][_0xbc65('0xa')]='ABANDONED';utils['info'](util[_0xbc65('0x3')](_0xbc65('0x2f'),_0x169582[_0xbc65('0x5')],queues[_0x169582[_0xbc65('0x5')]]['name'],queues[_0x169582[_0xbc65('0x5')]][_0xbc65('0xa')]));}}catch(_0x47d4d2){utils[_0xbc65('0x17')](util[_0xbc65('0x3')]('[%s][queues][queuecallerabandon]',_0x169582[_0xbc65('0x5')]),_0x47d4d2);}};exports['queuecallerleave']=function(_0x5345d1){try{if(!_[_0xbc65('0x24')](queues[_0x5345d1[_0xbc65('0x5')]])){utils[_0xbc65('0x12')](util[_0xbc65('0x3')](_0xbc65('0x30'),_0x5345d1['uniqueid']),_0x5345d1);utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x31'),_0x5345d1[_0xbc65('0x5')],queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x21')],_0x5345d1[_0xbc65('0x32')],_0x5345d1['connectedlinename']));queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x33')]=!![];queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x1b')]=utils[_0xbc65('0x16')]();queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x34')]=utils['diffTime'](queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x1b')],queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x35')]);queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x14')]=_0x5345d1[_0xbc65('0x14')];queues[_0x5345d1['uniqueid']][_0xbc65('0x36')]=_0x5345d1[_0xbc65('0x36')];queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x32')]=_0x5345d1[_0xbc65('0x32')];queues[_0x5345d1[_0xbc65('0x5')]][_0xbc65('0x37')]=_0x5345d1[_0xbc65('0x37')];}}catch(_0x435b0b){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x30'),_0x5345d1['uniqueid']),_0x435b0b);}};exports['agentconnect']=function(_0x518146){try{if(!_['isNil'](queues[_0x518146[_0xbc65('0x5')]])){utils[_0xbc65('0x12')](util[_0xbc65('0x3')](_0xbc65('0x38'),_0x518146[_0xbc65('0x5')]),_0x518146);utils['info'](util[_0xbc65('0x3')](_0xbc65('0x39'),_0x518146[_0xbc65('0x5')],queues[_0x518146['uniqueid']][_0xbc65('0x21')],_0x518146[_0xbc65('0x3a')],_0x518146[_0xbc65('0x3b')]));queues[_0x518146[_0xbc65('0x5')]][_0xbc65('0x1c')]=![];queues[_0x518146[_0xbc65('0x5')]][_0xbc65('0x1c')]=![];queues[_0x518146[_0xbc65('0x5')]][_0xbc65('0x29')]=null;queues[_0x518146['uniqueid']][_0xbc65('0x1d')]=![];queues[_0x518146[_0xbc65('0x5')]][_0xbc65('0xa')]=null;queues[_0x518146[_0xbc65('0x5')]]['queuecallerexitAt']=null;queues[_0x518146['uniqueid']][_0xbc65('0x3c')]=!![];queues[_0x518146[_0xbc65('0x5')]][_0xbc65('0x9')]=_0x518146[_0xbc65('0x3b')];queues[_0x518146[_0xbc65('0x5')]][_0xbc65('0x3d')]=_0x518146['membername'];}}catch(_0x51da64){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x38'),_0x518146[_0xbc65('0x5')]),_0x51da64);}};exports[_0xbc65('0x3e')]=function(_0x579c11){try{if(!_[_0xbc65('0x24')](queues[_0x579c11['uniqueid']])){if(queues[_0x579c11[_0xbc65('0x5')]]['queuecallerleaveAt']){utils[_0xbc65('0x12')](util['format'](_0xbc65('0x3f'),_0x579c11[_0xbc65('0x5')]),_0x579c11);queues[_0x579c11[_0xbc65('0x5')]]['queuecallerabandon']=![];queues[_0x579c11[_0xbc65('0x5')]][_0xbc65('0x1c')]=![];queues[_0x579c11['uniqueid']][_0xbc65('0x29')]=null;queues[_0x579c11[_0xbc65('0x5')]][_0xbc65('0x1d')]=![];queues[_0x579c11[_0xbc65('0x5')]][_0xbc65('0x2a')]=null;queues[_0x579c11[_0xbc65('0x5')]]['assigned']=!![];queues[_0x579c11[_0xbc65('0x5')]][_0xbc65('0x3d')]=_0x579c11[_0xbc65('0x3a')];queues[_0x579c11['uniqueid']]['queuecallercomplete']=!![];queues[_0x579c11[_0xbc65('0x5')]]['queuecallercompleteAt']=utils['now']();if(_0x579c11[_0xbc65('0x40')]=='transfer'){if(!queues[_0x579c11[_0xbc65('0x5')]]['transfer']){queues[_0x579c11[_0xbc65('0x5')]][_0xbc65('0xa')]='TRANSFER';}}else{queues[_0x579c11[_0xbc65('0x5')]][_0xbc65('0xa')]=_0xbc65('0x41')+_0x579c11['reason'][_0xbc65('0x27')]();}utils['info'](util[_0xbc65('0x3')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x579c11['uniqueid'],queues[_0x579c11['uniqueid']][_0xbc65('0x21')],_0x579c11['membername'],queues[_0x579c11['uniqueid']][_0xbc65('0xa')]));writeDB(queues[_0x579c11[_0xbc65('0x5')]]);}}}catch(_0x15e3a9){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x3f'),_0x579c11['uniqueid']),_0x15e3a9);}};exports[_0xbc65('0x42')]=function(_0x2c2282){try{if(!_['isNil'](queues[_0x2c2282['transfereeuniqueid']])){utils[_0xbc65('0x12')](util[_0xbc65('0x3')](_0xbc65('0x43'),_0x2c2282['uniqueid']),_0x2c2282);queues[_0x2c2282[_0xbc65('0x44')]]['transfer']=!![];queues[_0x2c2282[_0xbc65('0x44')]][_0xbc65('0x45')]=_0xbc65('0x46');queues[_0x2c2282[_0xbc65('0x44')]][_0xbc65('0x47')]=_0x2c2282[_0xbc65('0x48')];queues[_0x2c2282[_0xbc65('0x44')]][_0xbc65('0x49')]=_0x2c2282[_0xbc65('0x44')];queues[_0x2c2282[_0xbc65('0x44')]][_0xbc65('0xa')]=_0xbc65('0x4a');utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x4b'),_0x2c2282[_0xbc65('0x5')],queues[_0x2c2282[_0xbc65('0x44')]]['name'],_0x2c2282[_0xbc65('0x44')],_0x2c2282[_0xbc65('0x48')]));}}catch(_0x541a40){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x43'),_0x2c2282[_0xbc65('0x5')]),_0x541a40);}};exports[_0xbc65('0x4c')]=function(_0x128e6f){try{utils[_0xbc65('0x12')](util[_0xbc65('0x3')]('[%s][queues][attendedtransfer]',_0x128e6f[_0xbc65('0x4d')]),_0x128e6f);if(_0x128e6f[_0xbc65('0x4d')]==_0x128e6f[_0xbc65('0x4e')]){if(!_['isNil'](queues[_0x128e6f[_0xbc65('0x4f')]])){utils[_0xbc65('0x2')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x128e6f[_0xbc65('0x4d')],queues[_0x128e6f['secondtransfererlinkedid']][_0xbc65('0x21')],_0x128e6f[_0xbc65('0x50')]));queues[_0x128e6f[_0xbc65('0x4f')]][_0xbc65('0x51')]=!![];queues[_0x128e6f[_0xbc65('0x4f')]]['transfertype']=_0xbc65('0x52');queues[_0x128e6f[_0xbc65('0x4f')]]['transferexten']=_0x128e6f[_0xbc65('0x50')];queues[_0x128e6f[_0xbc65('0x4f')]][_0xbc65('0x49')]=_0x128e6f['origtransfereruniqueid'];queues[_0x128e6f['secondtransfererlinkedid']]['queuecallerexitreason']=_0xbc65('0x53');}if(!_['isNil'](queues[_0x128e6f[_0xbc65('0x4e')]])){if(_0x128e6f[_0xbc65('0x54')]&&queues[_0x128e6f[_0xbc65('0x54')]]){queues[_0x128e6f['transfereelinkedid']][_0xbc65('0x55')]=0x1;queues[_0x128e6f[_0xbc65('0x44')]]=_[_0xbc65('0x56')](queues[_0x128e6f[_0xbc65('0x54')]]);queues[_0x128e6f[_0xbc65('0x44')]]['transfereduniqueid']=_0x128e6f[_0xbc65('0x57')];queues[_0x128e6f[_0xbc65('0x44')]]['queuecallerenterreason']=0x2;queues[_0x128e6f[_0xbc65('0x44')]]['calleridnum']=queues[_0x128e6f[_0xbc65('0x4f')]][_0xbc65('0x8')];queues[_0x128e6f[_0xbc65('0x44')]][_0xbc65('0x58')]=queues[_0x128e6f['secondtransfererlinkedid']]['calleridname'];queues[_0x128e6f[_0xbc65('0x44')]][_0xbc65('0x35')]=utils[_0xbc65('0x16')]();queues[_0x128e6f[_0xbc65('0x44')]][_0xbc65('0x1b')]=utils[_0xbc65('0x16')]();queues[_0x128e6f[_0xbc65('0x44')]]['holdtime']=0x0;queues[_0x128e6f[_0xbc65('0x44')]][_0xbc65('0x59')]=0x0;utils['info'](util[_0xbc65('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x128e6f['origtransfereruniqueid'],queues[_0x128e6f['transfereeuniqueid']]['name'],queues[_0x128e6f['transfereeuniqueid']][_0xbc65('0x8')],queues[_0x128e6f[_0xbc65('0x44')]][_0xbc65('0x58')]));}else{utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x5a'),_0x128e6f['origtransfereruniqueid'],queues[_0x128e6f[_0xbc65('0x4e')]][_0xbc65('0x21')],_0x128e6f[_0xbc65('0x4f')]));queues[_0x128e6f[_0xbc65('0x4e')]][_0xbc65('0x10')]=_0x128e6f[_0xbc65('0x4f')];}}}else if(_0x128e6f[_0xbc65('0x5b')]==_0x128e6f[_0xbc65('0x4f')]){if(!_[_0xbc65('0x24')](queues[_0x128e6f['origtransfererlinkedid']])){utils['info'](util[_0xbc65('0x3')](_0xbc65('0x5c'),_0x128e6f[_0xbc65('0x4d')],queues[_0x128e6f['origtransfererlinkedid']][_0xbc65('0x21')],_0x128e6f[_0xbc65('0x5b')],_0x128e6f[_0xbc65('0x5d')]));queues[_0x128e6f[_0xbc65('0x4e')]]['transfer']=!![];queues[_0x128e6f[_0xbc65('0x4e')]]['transfertype']=_0xbc65('0x52');queues[_0x128e6f[_0xbc65('0x4e')]]['transferexten']=_0x128e6f[_0xbc65('0x5d')];queues[_0x128e6f[_0xbc65('0x4e')]]['transferuniqueid']=_0x128e6f[_0xbc65('0x5b')];queues[_0x128e6f[_0xbc65('0x4e')]][_0xbc65('0xa')]=_0xbc65('0x53');}if(!_['isNil'](queues[_0x128e6f[_0xbc65('0x4f')]])){if(_0x128e6f[_0xbc65('0x5e')]&&queues[_0x128e6f['transfertargetlinkedid']]){queues[_0x128e6f[_0xbc65('0x5e')]][_0xbc65('0x55')]=0x1;queues[_0x128e6f[_0xbc65('0x57')]]=_[_0xbc65('0x56')](queues[_0x128e6f[_0xbc65('0x5e')]]);queues[_0x128e6f[_0xbc65('0x57')]]['transfereduniqueid']=_0x128e6f[_0xbc65('0x57')];queues[_0x128e6f['transfertargetuniqueid']]['queuecallerenterreason']=0x2;queues[_0x128e6f[_0xbc65('0x57')]]['calleridnum']=queues[_0x128e6f[_0xbc65('0x4e')]][_0xbc65('0x8')];queues[_0x128e6f[_0xbc65('0x57')]]['calleridname']=queues[_0x128e6f[_0xbc65('0x4e')]][_0xbc65('0x58')];queues[_0x128e6f[_0xbc65('0x57')]]['queuecallerjoinAt']=utils[_0xbc65('0x16')]();queues[_0x128e6f[_0xbc65('0x57')]][_0xbc65('0x1b')]=utils[_0xbc65('0x16')]();queues[_0x128e6f[_0xbc65('0x57')]][_0xbc65('0x34')]=0x0;queues[_0x128e6f[_0xbc65('0x57')]]['mohtime']=0x0;utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x5f'),_0x128e6f['origtransfereruniqueid'],queues[_0x128e6f[_0xbc65('0x57')]][_0xbc65('0x21')],queues[_0x128e6f[_0xbc65('0x57')]]['transfereduniqueid'],queues[_0x128e6f['transfertargetuniqueid']][_0xbc65('0x8')],queues[_0x128e6f[_0xbc65('0x57')]][_0xbc65('0x58')]));}else{utils[_0xbc65('0x2')](util[_0xbc65('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x128e6f[_0xbc65('0x4d')],queues[_0x128e6f['secondtransfererlinkedid']][_0xbc65('0x21')],_0x128e6f[_0xbc65('0x4e')]));queues[_0x128e6f['secondtransfererlinkedid']][_0xbc65('0x10')]=_0x128e6f['origtransfererlinkedid'];}}}}catch(_0x44bc98){utils[_0xbc65('0x17')](util['format']('[%s][queues][attendedtransfer]',_0x128e6f[_0xbc65('0x4d')]),_0x44bc98);}};exports[_0xbc65('0x60')]=function(_0x155b26){try{if(!_[_0xbc65('0x24')](queues[_0x155b26[_0xbc65('0x5')]])){utils[_0xbc65('0x12')](util[_0xbc65('0x3')]('[%s][queues][musiconholdstart]',_0x155b26[_0xbc65('0x5')]),_0x155b26);queues[_0x155b26['uniqueid']][_0xbc65('0x61')]=utils['now']();utils['info'](util[_0xbc65('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x155b26['uniqueid'],queues[_0x155b26[_0xbc65('0x5')]][_0xbc65('0x21')],queues[_0x155b26[_0xbc65('0x5')]]['musiconholdstartAt']));}}catch(_0x1e2f7a){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x62'),_0x155b26[_0xbc65('0x5')]),_0x1e2f7a);}};exports[_0xbc65('0x63')]=function(_0x2d35ce){try{if(!_[_0xbc65('0x24')](queues[_0x2d35ce[_0xbc65('0x5')]])){if(!_[_0xbc65('0x24')](queues[_0x2d35ce['uniqueid']]['musiconholdstartAt'])){utils[_0xbc65('0x12')](util[_0xbc65('0x3')]('[%s][queues][musiconholdstop]',_0x2d35ce[_0xbc65('0x5')]),_0x2d35ce);queues[_0x2d35ce[_0xbc65('0x5')]]['mohtime']+=utils[_0xbc65('0x64')](utils['now'](),queues[_0x2d35ce['uniqueid']][_0xbc65('0x61')]);utils[_0xbc65('0x2')](util[_0xbc65('0x3')](_0xbc65('0x65'),_0x2d35ce['uniqueid'],queues[_0x2d35ce[_0xbc65('0x5')]]['name'],queues[_0x2d35ce[_0xbc65('0x5')]][_0xbc65('0x59')]));delete queues[_0x2d35ce[_0xbc65('0x5')]][_0xbc65('0x61')];}}}catch(_0x22a4d8){utils[_0xbc65('0x17')](util[_0xbc65('0x3')](_0xbc65('0x66'),_0x2d35ce[_0xbc65('0x5')]),_0x22a4d8);}};
\ No newline at end of file
index 992c90f..75ebefe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb8=['transfereecalleridname','transfereruniqueid','recording','lodash','util','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','membername','name','UserId','request','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','[%s][recordings][newchannel]','debug','[%s][recordings][newstate]','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','endsWith','.wav49','value','replace','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','type','outbound','connectedlinename','forEach','clone','[%s][recordings][hangup]','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','cdr','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x9cb8,0x175));var _0x89cb=function(_0x5a5ebb,_0x4b4124){_0x5a5ebb=_0x5a5ebb-0x0;var _0x1a5645=_0x9cb8[_0x5a5ebb];return _0x1a5645;};'use strict';var _=require(_0x89cb('0x0'));var util=require(_0x89cb('0x1'));var utils=require(_0x89cb('0x2'));var transfers=require(_0x89cb('0x3'));var recordings={};function writeDB(_0x5ba368){var _0x1d7ac6;utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x6'),_0x5ba368[_0x89cb('0x7')]));if(transfers['blinds'][_0x5ba368[_0x89cb('0x7')]]){_0x1d7ac6=_0x5ba368[_0x89cb('0x7')];_0x5ba368[_0x89cb('0x7')]=transfers[_0x89cb('0x8')][_0x5ba368['uniqueid']][_0x89cb('0x9')];}if(_0x5ba368[_0x89cb('0xa')]){utils[_0x89cb('0xb')](_0x5ba368['accountcode'])['then'](function(_0x1ddfc0){if(_0x1ddfc0){_0x5ba368[_0x89cb('0xc')]=_0x1ddfc0[_0x89cb('0xd')];_0x5ba368[_0x89cb('0xe')]=_0x1ddfc0['id'];}utils[_0x89cb('0xf')]('CreateVoiceRecording',_0x5ba368);});}else{utils['request']('CreateVoiceRecording',_0x5ba368);}if(_0x1d7ac6)delete transfers['blinds'][_0x1d7ac6];}exports['newchannel']=function(_0x44a76a){try{utils['debug'](util[_0x89cb('0x5')]('[%s][recordings][newchannel]',_0x44a76a[_0x89cb('0x7')]),_0x44a76a);if(_0x44a76a[_0x89cb('0x7')]==_0x44a76a[_0x89cb('0x10')]){utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x11'),_0x44a76a[_0x89cb('0x7')],_0x44a76a[_0x89cb('0x12')],_0x44a76a['exten']));recordings[_0x44a76a['uniqueid']]={'uniqueid':_0x44a76a['uniqueid'],'accountcode':_0x44a76a[_0x89cb('0xa')],'exten':_0x44a76a[_0x89cb('0x13')],'context':_0x44a76a[_0x89cb('0x12')],'channel':_0x44a76a[_0x89cb('0x14')],'monitors':[]};}}catch(_0x3b35fa){utils[_0x89cb('0x15')](util[_0x89cb('0x5')](_0x89cb('0x16'),_0x44a76a[_0x89cb('0x7')]),_0x3b35fa);}};exports['newstate']=function(_0x137e9f){try{utils[_0x89cb('0x17')](util[_0x89cb('0x5')](_0x89cb('0x18'),_0x137e9f[_0x89cb('0x7')]),_0x137e9f);if(!_['isNil'](recordings[_0x137e9f[_0x89cb('0x7')]])&&_0x137e9f[_0x89cb('0x19')]==0x6){utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x1a'),_0x137e9f[_0x89cb('0x7')],_0x137e9f[_0x89cb('0x12')],_0x137e9f[_0x89cb('0x14')]));}else if(!_[_0x89cb('0x1b')](recordings[_0x137e9f['linkedid']])&&_0x137e9f[_0x89cb('0x19')]==0x6&&_0x137e9f['context']!='transfer'){utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x1c'),_0x137e9f['uniqueid'],_0x137e9f[_0x89cb('0x10')],_0x137e9f['context'],_0x137e9f[_0x89cb('0x14')]));recordings[_0x137e9f[_0x89cb('0x10')]][_0x89cb('0xa')]=_0x137e9f[_0x89cb('0xa')];}}catch(_0x55d17e){utils[_0x89cb('0x15')](util[_0x89cb('0x5')](_0x89cb('0x18'),_0x137e9f[_0x89cb('0x7')]),_0x55d17e);}};exports['varset']=function(_0x5e0dd4){try{if(!_[_0x89cb('0x1b')](_0x5e0dd4[_0x89cb('0x1d')])&&!_[_0x89cb('0x1b')](_0x5e0dd4['variable'][_0x89cb('0x1e')])){utils[_0x89cb('0x17')](util[_0x89cb('0x5')](_0x89cb('0x1f'),_0x5e0dd4[_0x89cb('0x7')]),_0x5e0dd4);utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x20'),_0x5e0dd4[_0x89cb('0x7')],_0x5e0dd4[_0x89cb('0x1d')],_0x5e0dd4['value']));if(_[_0x89cb('0x21')](_0x5e0dd4['value'],_0x89cb('0x22'))){_0x5e0dd4['value']=_0x5e0dd4[_0x89cb('0x23')][_0x89cb('0x24')](_0x89cb('0x22'),_0x89cb('0x25'));}if(recordings[_0x5e0dd4[_0x89cb('0x10')]]){var _0xe7f1f3=_[_0x89cb('0x26')](recordings[_0x5e0dd4[_0x89cb('0x10')]][_0x89cb('0x27')],{'value':_0x5e0dd4[_0x89cb('0x23')]});if(_[_0x89cb('0x1b')](_0xe7f1f3)){recordings[_0x5e0dd4[_0x89cb('0x10')]][_0x89cb('0x27')][_0x89cb('0x28')]({'value':_0x5e0dd4[_0x89cb('0x23')]});}}}}catch(_0x3d570a){utils['error'](util[_0x89cb('0x5')](_0x89cb('0x1f'),_0x5e0dd4[_0x89cb('0x7')]),_0x3d570a);}};exports[_0x89cb('0x29')]=function(_0x1a415d){try{if(!_[_0x89cb('0x1b')](recordings[_0x1a415d[_0x89cb('0x7')]])){utils['debug'](util['format']('[%s][recordings][hangup]',_0x1a415d['uniqueid']),_0x1a415d);utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x2a'),_0x1a415d[_0x89cb('0x7')],_0x1a415d[_0x89cb('0x2b')],_0x1a415d[_0x89cb('0x2c')],_0x1a415d['cause-txt']));recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0x2b')]=_0x1a415d[_0x89cb('0x2b')];recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0x2c')]=_0x1a415d[_0x89cb('0x2c')];recordings[_0x1a415d[_0x89cb('0x7')]]['connectedlinenum']=_0x1a415d[_0x89cb('0x2d')];recordings[_0x1a415d['uniqueid']]['connectedlinename']=_0x1a415d['connectedlinename'];if(recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0x2e')]==_0x89cb('0x2f')&&recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0xa')]){recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0x2d')]=recordings[_0x1a415d[_0x89cb('0x7')]]['accountcode'];recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0x30')]='';}recordings[_0x1a415d[_0x89cb('0x7')]][_0x89cb('0x27')][_0x89cb('0x31')](function(_0x215c94){var _0x41e1b4=_[_0x89cb('0x32')](recordings[_0x1a415d['uniqueid']]);_0x41e1b4[_0x89cb('0x23')]=_0x215c94[_0x89cb('0x23')];writeDB(_0x41e1b4);});delete recordings[_0x1a415d[_0x89cb('0x7')]];}}catch(_0x48dddf){utils[_0x89cb('0x15')](util[_0x89cb('0x5')](_0x89cb('0x33'),_0x1a415d['uniqueid']),_0x48dddf);}};exports['newexten']=function(_0x5e9f52){try{if(!_['isNil'](recordings[_0x5e9f52[_0x89cb('0x7')]])){utils[_0x89cb('0x17')](util[_0x89cb('0x5')](_0x89cb('0x34'),_0x5e9f52[_0x89cb('0x7')]),_0x5e9f52);utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x35'),_0x5e9f52[_0x89cb('0x7')],_0x5e9f52[_0x89cb('0x36')],_0x5e9f52[_0x89cb('0x37')]));if(_0x5e9f52[_0x89cb('0x36')]['toLowerCase']()==_0x89cb('0x38')&&_[_0x89cb('0x39')](_0x5e9f52[_0x89cb('0x37')][_0x89cb('0x3a')](),_0x89cb('0x3b'))){var _0x3e6aeb=_0x5e9f52['appdata']['split']('=');var _0x808b51=_0x3e6aeb[0x0][_0x89cb('0x3c')](_0x3e6aeb[0x0]['lastIndexOf']('(')+0x1,_0x3e6aeb[0x0][_0x89cb('0x3d')](')'));var _0x156e70=_0x3e6aeb[0x1];recordings[_0x5e9f52[_0x89cb('0x7')]][_0x808b51]=_0x156e70;}}}catch(_0x25f785){utils[_0x89cb('0x15')](util[_0x89cb('0x5')]('[%s][recordings][newexten]',_0x5e9f52[_0x89cb('0x7')]),_0x25f785);}};exports[_0x89cb('0x3e')]=function(_0x128df4){try{if(!_[_0x89cb('0x1b')](recordings[_0x128df4['uniqueid']])){utils[_0x89cb('0x17')](util[_0x89cb('0x5')](_0x89cb('0x3f'),_0x128df4[_0x89cb('0x7')]),_0x128df4);utils[_0x89cb('0x4')](util[_0x89cb('0x5')](_0x89cb('0x40'),_0x128df4[_0x89cb('0x7')],_0x128df4[_0x89cb('0x41')]));recordings[_0x128df4['uniqueid']]['queue']=_0x128df4[_0x89cb('0x41')];}}catch(_0x337b68){utils['error'](util['format'](_0x89cb('0x3f'),_0x128df4[_0x89cb('0x7')]),_0x337b68);}};exports[_0x89cb('0x42')]=function(_0x3f9208){try{utils[_0x89cb('0x17')](util[_0x89cb('0x5')](_0x89cb('0x43'),_0x3f9208[_0x89cb('0x7')]),_0x3f9208);utils['info'](util['format'](_0x89cb('0x44'),_0x3f9208[_0x89cb('0x7')],_0x3f9208['transferercalleridnum'],_0x3f9208[_0x89cb('0x45')],_0x3f9208[_0x89cb('0x46')],_0x3f9208[_0x89cb('0x47')]));if(recordings[_0x3f9208[_0x89cb('0x48')]]&&transfers[_0x89cb('0x8')][_0x3f9208['transfereruniqueid']]){transfers[_0x89cb('0x8')][_0x3f9208[_0x89cb('0x48')]][_0x89cb('0x49')]=!![];}}catch(_0x3b9250){utils[_0x89cb('0x15')](util[_0x89cb('0x5')](_0x89cb('0x43'),_0x3f9208[_0x89cb('0x7')]),_0x3b9250);}};
\ No newline at end of file
+var _0xe29b=['[%s][recordings][varset]','info','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','.WAV','monitors','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','outbound','forEach','clone','newexten','[%s][recordings][newexten]','application','appdata','toLowerCase','set','startsWith','split','substring','lastIndexOf','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','lodash','util','./transfers.controller','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','UserId','request','CreateVoiceRecording','debug','[%s][recordings][newchannel]','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','newstate','[%s][recordings][newstate]','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','linkedid','error','variable','mixmonitor_filename'];(function(_0x43e105,_0x4c1c96){var _0x2ffd98=function(_0x23ce63){while(--_0x23ce63){_0x43e105['push'](_0x43e105['shift']());}};_0x2ffd98(++_0x4c1c96);}(_0xe29b,0x16f));var _0xbe29=function(_0x1def66,_0xc70b47){_0x1def66=_0x1def66-0x0;var _0x29b113=_0xe29b[_0x1def66];return _0x29b113;};'use strict';var _=require(_0xbe29('0x0'));var util=require(_0xbe29('0x1'));var utils=require('./utils');var transfers=require(_0xbe29('0x2'));var recordings={};function writeDB(_0xbf63cb){var _0x1a7868;utils['info'](util[_0xbe29('0x3')](_0xbe29('0x4'),_0xbf63cb[_0xbe29('0x5')]));if(transfers[_0xbe29('0x6')][_0xbf63cb['uniqueid']]){_0x1a7868=_0xbf63cb[_0xbe29('0x5')];_0xbf63cb[_0xbe29('0x5')]=transfers[_0xbe29('0x6')][_0xbf63cb[_0xbe29('0x5')]][_0xbe29('0x7')];}if(_0xbf63cb[_0xbe29('0x8')]){utils[_0xbe29('0x9')](_0xbf63cb['accountcode'])['then'](function(_0x1997bf){if(_0x1997bf){_0xbf63cb['membername']=_0x1997bf['name'];_0xbf63cb[_0xbe29('0xa')]=_0x1997bf['id'];}utils[_0xbe29('0xb')](_0xbe29('0xc'),_0xbf63cb);});}else{utils[_0xbe29('0xb')](_0xbe29('0xc'),_0xbf63cb);}if(_0x1a7868)delete transfers[_0xbe29('0x6')][_0x1a7868];}exports['newchannel']=function(_0x28f756){try{utils[_0xbe29('0xd')](util[_0xbe29('0x3')](_0xbe29('0xe'),_0x28f756[_0xbe29('0x5')]),_0x28f756);if(_0x28f756[_0xbe29('0x5')]==_0x28f756['linkedid']){utils['info'](util[_0xbe29('0x3')](_0xbe29('0xf'),_0x28f756[_0xbe29('0x5')],_0x28f756['context'],_0x28f756[_0xbe29('0x10')]));recordings[_0x28f756[_0xbe29('0x5')]]={'uniqueid':_0x28f756[_0xbe29('0x5')],'accountcode':_0x28f756[_0xbe29('0x8')],'exten':_0x28f756[_0xbe29('0x10')],'context':_0x28f756[_0xbe29('0x11')],'channel':_0x28f756[_0xbe29('0x12')],'monitors':[]};}}catch(_0x22c4e8){utils['error'](util[_0xbe29('0x3')](_0xbe29('0xe'),_0x28f756[_0xbe29('0x5')]),_0x22c4e8);}};exports[_0xbe29('0x13')]=function(_0x5fc63f){try{utils[_0xbe29('0xd')](util[_0xbe29('0x3')](_0xbe29('0x14'),_0x5fc63f['uniqueid']),_0x5fc63f);if(!_[_0xbe29('0x15')](recordings[_0x5fc63f[_0xbe29('0x5')]])&&_0x5fc63f[_0xbe29('0x16')]==0x6){utils['info'](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x5fc63f[_0xbe29('0x5')],_0x5fc63f[_0xbe29('0x11')],_0x5fc63f['channel']));}else if(!_[_0xbe29('0x15')](recordings[_0x5fc63f['linkedid']])&&_0x5fc63f[_0xbe29('0x16')]==0x6&&_0x5fc63f[_0xbe29('0x11')]!=_0xbe29('0x17')){utils['info'](util[_0xbe29('0x3')](_0xbe29('0x18'),_0x5fc63f[_0xbe29('0x5')],_0x5fc63f[_0xbe29('0x19')],_0x5fc63f['context'],_0x5fc63f[_0xbe29('0x12')]));recordings[_0x5fc63f['linkedid']]['accountcode']=_0x5fc63f[_0xbe29('0x8')];}}catch(_0x417f2e){utils[_0xbe29('0x1a')](util[_0xbe29('0x3')]('[%s][recordings][newstate]',_0x5fc63f[_0xbe29('0x5')]),_0x417f2e);}};exports['varset']=function(_0x41051b){try{if(!_[_0xbe29('0x15')](_0x41051b[_0xbe29('0x1b')])&&!_[_0xbe29('0x15')](_0x41051b[_0xbe29('0x1b')][_0xbe29('0x1c')])){utils[_0xbe29('0xd')](util['format'](_0xbe29('0x1d'),_0x41051b[_0xbe29('0x5')]),_0x41051b);utils[_0xbe29('0x1e')](util[_0xbe29('0x3')](_0xbe29('0x1f'),_0x41051b[_0xbe29('0x5')],_0x41051b[_0xbe29('0x1b')],_0x41051b[_0xbe29('0x20')]));if(_[_0xbe29('0x21')](_0x41051b[_0xbe29('0x20')],_0xbe29('0x22'))){_0x41051b[_0xbe29('0x20')]=_0x41051b[_0xbe29('0x20')]['replace'](_0xbe29('0x22'),_0xbe29('0x23'));}if(recordings[_0x41051b[_0xbe29('0x19')]]){var _0x4d7184=_['find'](recordings[_0x41051b[_0xbe29('0x19')]][_0xbe29('0x24')],{'value':_0x41051b[_0xbe29('0x20')]});if(_[_0xbe29('0x15')](_0x4d7184)){recordings[_0x41051b['linkedid']][_0xbe29('0x24')]['push']({'value':_0x41051b[_0xbe29('0x20')]});}}}}catch(_0x4e31aa){utils[_0xbe29('0x1a')](util[_0xbe29('0x3')]('[%s][recordings][varset]',_0x41051b[_0xbe29('0x5')]),_0x4e31aa);}};exports['hangup']=function(_0x376e66){try{if(!_['isNil'](recordings[_0x376e66[_0xbe29('0x5')]])){utils[_0xbe29('0xd')](util[_0xbe29('0x3')](_0xbe29('0x25'),_0x376e66['uniqueid']),_0x376e66);utils[_0xbe29('0x1e')](util[_0xbe29('0x3')](_0xbe29('0x26'),_0x376e66[_0xbe29('0x5')],_0x376e66[_0xbe29('0x27')],_0x376e66[_0xbe29('0x28')],_0x376e66[_0xbe29('0x29')]));recordings[_0x376e66['uniqueid']][_0xbe29('0x27')]=_0x376e66[_0xbe29('0x27')];recordings[_0x376e66[_0xbe29('0x5')]][_0xbe29('0x28')]=_0x376e66['calleridname'];recordings[_0x376e66['uniqueid']][_0xbe29('0x2a')]=_0x376e66[_0xbe29('0x2a')];recordings[_0x376e66[_0xbe29('0x5')]]['connectedlinename']=_0x376e66[_0xbe29('0x2b')];if(recordings[_0x376e66[_0xbe29('0x5')]]['type']==_0xbe29('0x2c')&&recordings[_0x376e66[_0xbe29('0x5')]][_0xbe29('0x8')]){recordings[_0x376e66[_0xbe29('0x5')]][_0xbe29('0x2a')]=recordings[_0x376e66['uniqueid']][_0xbe29('0x8')];recordings[_0x376e66[_0xbe29('0x5')]]['connectedlinename']='';}recordings[_0x376e66[_0xbe29('0x5')]][_0xbe29('0x24')][_0xbe29('0x2d')](function(_0x38dd0b){var _0x3eb803=_[_0xbe29('0x2e')](recordings[_0x376e66['uniqueid']]);_0x3eb803[_0xbe29('0x20')]=_0x38dd0b['value'];writeDB(_0x3eb803);});delete recordings[_0x376e66[_0xbe29('0x5')]];}}catch(_0x15f438){utils[_0xbe29('0x1a')](util[_0xbe29('0x3')](_0xbe29('0x25'),_0x376e66[_0xbe29('0x5')]),_0x15f438);}};exports[_0xbe29('0x2f')]=function(_0x36d8d2){try{if(!_[_0xbe29('0x15')](recordings[_0x36d8d2[_0xbe29('0x5')]])){utils[_0xbe29('0xd')](util[_0xbe29('0x3')](_0xbe29('0x30'),_0x36d8d2[_0xbe29('0x5')]),_0x36d8d2);utils[_0xbe29('0x1e')](util[_0xbe29('0x3')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x36d8d2[_0xbe29('0x5')],_0x36d8d2[_0xbe29('0x31')],_0x36d8d2[_0xbe29('0x32')]));if(_0x36d8d2[_0xbe29('0x31')][_0xbe29('0x33')]()==_0xbe29('0x34')&&_[_0xbe29('0x35')](_0x36d8d2[_0xbe29('0x32')]['toLowerCase'](),'cdr')){var _0x207083=_0x36d8d2['appdata'][_0xbe29('0x36')]('=');var _0x409df3=_0x207083[0x0][_0xbe29('0x37')](_0x207083[0x0][_0xbe29('0x38')]('(')+0x1,_0x207083[0x0][_0xbe29('0x38')](')'));var _0x516401=_0x207083[0x1];recordings[_0x36d8d2[_0xbe29('0x5')]][_0x409df3]=_0x516401;}}}catch(_0x492891){utils['error'](util[_0xbe29('0x3')]('[%s][recordings][newexten]',_0x36d8d2[_0xbe29('0x5')]),_0x492891);}};exports['queuecallerjoin']=function(_0x519517){try{if(!_[_0xbe29('0x15')](recordings[_0x519517[_0xbe29('0x5')]])){utils[_0xbe29('0xd')](util[_0xbe29('0x3')](_0xbe29('0x39'),_0x519517['uniqueid']),_0x519517);utils[_0xbe29('0x1e')](util['format'](_0xbe29('0x3a'),_0x519517[_0xbe29('0x5')],_0x519517[_0xbe29('0x3b')]));recordings[_0x519517['uniqueid']][_0xbe29('0x3b')]=_0x519517[_0xbe29('0x3b')];}}catch(_0x33727b){utils[_0xbe29('0x1a')](util[_0xbe29('0x3')](_0xbe29('0x39'),_0x519517[_0xbe29('0x5')]),_0x33727b);}};exports[_0xbe29('0x3c')]=function(_0x41ac6e){try{utils[_0xbe29('0xd')](util[_0xbe29('0x3')]('[%s][recordings][blindtransfer]',_0x41ac6e[_0xbe29('0x5')]),_0x41ac6e);utils[_0xbe29('0x1e')](util[_0xbe29('0x3')](_0xbe29('0x3d'),_0x41ac6e['uniqueid'],_0x41ac6e['transferercalleridnum'],_0x41ac6e[_0xbe29('0x3e')],_0x41ac6e['transfereecalleridnum'],_0x41ac6e['transfereecalleridname']));if(recordings[_0x41ac6e[_0xbe29('0x3f')]]&&transfers['blinds'][_0x41ac6e['transfereruniqueid']]){transfers[_0xbe29('0x6')][_0x41ac6e[_0xbe29('0x3f')]][_0xbe29('0x40')]=!![];}}catch(_0x4195fe){utils[_0xbe29('0x1a')](util[_0xbe29('0x3')](_0xbe29('0x41'),_0x41ac6e['uniqueid']),_0x4195fe);}};
\ No newline at end of file
index 9dc5073..d3338bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46a9=['transfertargetaccountcode','error','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','blind','transfereruniqueid','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','origtransferercontext','origtransfererexten','attended','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename'];(function(_0x4b46c9,_0xcefd1c){var _0xbfa505=function(_0x948dd0){while(--_0x948dd0){_0x4b46c9['push'](_0x4b46c9['shift']());}};_0xbfa505(++_0xcefd1c);}(_0x46a9,0x14a));var _0x946a=function(_0x50f4ab,_0x3a0b0a){_0x50f4ab=_0x50f4ab-0x0;var _0x590273=_0x46a9[_0x50f4ab];return _0x590273;};'use strict';var _=require(_0x946a('0x0'));var util=require(_0x946a('0x1'));var utils=require(_0x946a('0x2'));function writeDB(_0x465efc){utils[_0x946a('0x3')](util[_0x946a('0x4')](_0x946a('0x5'),_0x465efc[_0x946a('0x6')]==='attended'?_0x465efc[_0x946a('0x7')]:_0x465efc['uniqueid'],_0x465efc[_0x946a('0x6')]));utils[_0x946a('0x8')](_0x946a('0x9'),_0x465efc);}exports[_0x946a('0xa')]={};exports[_0x946a('0xb')]=function(_0x150914){try{utils[_0x946a('0xc')](util[_0x946a('0x4')](_0x946a('0xd'),_0x150914[_0x946a('0xe')]),_0x150914);utils[_0x946a('0x3')](util[_0x946a('0x4')](_0x946a('0xf'),_0x150914[_0x946a('0xe')],_0x150914[_0x946a('0x10')],_0x150914[_0x946a('0x11')],_0x150914['transfereecalleridnum'],_0x150914['transfereecalleridname']));_0x150914[_0x946a('0x6')]=_0x946a('0x12');exports[_0x946a('0xa')][_0x150914[_0x946a('0x13')]]=_0x150914;writeDB(_0x150914);}catch(_0x271267){utils['error'](util[_0x946a('0x4')]('[%s][transfers][blindtransfer]',_0x150914[_0x946a('0xe')]),_0x271267);}};exports['attendedtransfer']=function(_0x13d13a){try{utils[_0x946a('0xc')](util['format'](_0x946a('0x14'),_0x13d13a[_0x946a('0x7')]),_0x13d13a);utils[_0x946a('0x3')](util['format'](_0x946a('0x15'),_0x13d13a[_0x946a('0x7')],_0x13d13a[_0x946a('0x16')],_0x13d13a[_0x946a('0x17')],_0x13d13a[_0x946a('0x18')],_0x13d13a[_0x946a('0x19')]));_0x13d13a=_[_0x946a('0x1a')](_0x13d13a,{'transfererchannel':_0x13d13a[_0x946a('0x1b')],'transferercalleridnum':_0x13d13a[_0x946a('0x16')],'transferercalleridname':_0x13d13a[_0x946a('0x17')],'transfererconnectedlinenum':_0x13d13a[_0x946a('0x1c')],'transfererconnectedlinename':_0x13d13a[_0x946a('0x1d')],'transfereraccountcode':_0x13d13a['origtransfereraccountcode'],'transferercontext':_0x13d13a[_0x946a('0x1e')],'transfererexten':_0x13d13a['secondtransfererexten'],'transfererlinkedid':_0x13d13a['origtransfererlinkedid'],'context':_0x13d13a[_0x946a('0x1f')],'extension':_0x13d13a[_0x946a('0x20')],'type':_0x946a('0x21')});if(_[_0x946a('0x22')](_0x13d13a[_0x946a('0x23')])){_0x13d13a=_[_0x946a('0x1a')](_0x13d13a,{'transfereechannel':_0x13d13a[_0x946a('0x24')],'transfereecalleridnum':_0x13d13a['transfertargetcalleridnum'],'transfereecalleridname':_0x13d13a[_0x946a('0x19')],'transfereeconnectedlinenum':_0x13d13a[_0x946a('0x25')],'transfereeconnectedlinename':_0x13d13a[_0x946a('0x26')],'transfereeaccountcode':_0x13d13a[_0x946a('0x27')],'transfereecontext':_0x13d13a['transfertargetcontext'],'transfereeexten':_0x13d13a['transfertargetexten'],'transfereelinkedid':_0x13d13a['transfertargetlinkedid']});}writeDB(_0x13d13a);}catch(_0x353278){utils[_0x946a('0x28')](util['format'](_0x946a('0x14'),_0x13d13a[_0x946a('0x7')]),_0x353278);}};
\ No newline at end of file
+var _0x323b=['uniqueid','type','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','[%s][transfers][blindtransfer]','attendedtransfer','origtransferercalleridnum','origtransferercalleridname','assign','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','[%s][transfers][attendedtransfer]','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid'];(function(_0x1e43bf,_0x2ed581){var _0x1c4e4d=function(_0x11c742){while(--_0x11c742){_0x1e43bf['push'](_0x1e43bf['shift']());}};_0x1c4e4d(++_0x2ed581);}(_0x323b,0xfd));var _0xb323=function(_0x3ce06b,_0x33b3d4){_0x3ce06b=_0x3ce06b-0x0;var _0xfc7d2e=_0x323b[_0x3ce06b];return _0xfc7d2e;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0xb323('0x0'));function writeDB(_0x578279){utils[_0xb323('0x1')](util[_0xb323('0x2')](_0xb323('0x3'),_0x578279['type']===_0xb323('0x4')?_0x578279[_0xb323('0x5')]:_0x578279[_0xb323('0x6')],_0x578279[_0xb323('0x7')]));utils[_0xb323('0x8')](_0xb323('0x9'),_0x578279);}exports[_0xb323('0xa')]={};exports[_0xb323('0xb')]=function(_0x5636fe){try{utils[_0xb323('0xc')](util[_0xb323('0x2')]('[%s][transfers][blindtransfer]',_0x5636fe[_0xb323('0x6')]),_0x5636fe);utils[_0xb323('0x1')](util[_0xb323('0x2')](_0xb323('0xd'),_0x5636fe[_0xb323('0x6')],_0x5636fe[_0xb323('0xe')],_0x5636fe[_0xb323('0xf')],_0x5636fe[_0xb323('0x10')],_0x5636fe[_0xb323('0x11')]));_0x5636fe[_0xb323('0x7')]=_0xb323('0x12');exports['blinds'][_0x5636fe[_0xb323('0x13')]]=_0x5636fe;writeDB(_0x5636fe);}catch(_0x1edaac){utils[_0xb323('0x14')](util['format'](_0xb323('0x15'),_0x5636fe['uniqueid']),_0x1edaac);}};exports[_0xb323('0x16')]=function(_0x86a4da){try{utils['debug'](util[_0xb323('0x2')]('[%s][transfers][attendedtransfer]',_0x86a4da[_0xb323('0x5')]),_0x86a4da);utils['info'](util[_0xb323('0x2')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x86a4da[_0xb323('0x5')],_0x86a4da[_0xb323('0x17')],_0x86a4da[_0xb323('0x18')],_0x86a4da['transfertargetcalleridnum'],_0x86a4da['transfertargetcalleridname']));_0x86a4da=_[_0xb323('0x19')](_0x86a4da,{'transfererchannel':_0x86a4da[_0xb323('0x1a')],'transferercalleridnum':_0x86a4da['origtransferercalleridnum'],'transferercalleridname':_0x86a4da[_0xb323('0x18')],'transfererconnectedlinenum':_0x86a4da[_0xb323('0x1b')],'transfererconnectedlinename':_0x86a4da['secondtransfererconnectedlinename'],'transfereraccountcode':_0x86a4da[_0xb323('0x1c')],'transferercontext':_0x86a4da['secondtransferercontext'],'transfererexten':_0x86a4da['secondtransfererexten'],'transfererlinkedid':_0x86a4da['origtransfererlinkedid'],'context':_0x86a4da['origtransferercontext'],'extension':_0x86a4da['origtransfererexten'],'type':_0xb323('0x4')});if(_[_0xb323('0x1d')](_0x86a4da[_0xb323('0x1e')])){_0x86a4da=_[_0xb323('0x19')](_0x86a4da,{'transfereechannel':_0x86a4da[_0xb323('0x1f')],'transfereecalleridnum':_0x86a4da['transfertargetcalleridnum'],'transfereecalleridname':_0x86a4da['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x86a4da[_0xb323('0x20')],'transfereeconnectedlinename':_0x86a4da[_0xb323('0x21')],'transfereeaccountcode':_0x86a4da[_0xb323('0x22')],'transfereecontext':_0x86a4da[_0xb323('0x23')],'transfereeexten':_0x86a4da['transfertargetexten'],'transfereelinkedid':_0x86a4da['transfertargetlinkedid']});}writeDB(_0x86a4da);}catch(_0x5ea0d3){utils['error'](util[_0xb323('0x2')](_0xb323('0x24'),_0x86a4da['origtransfereruniqueid']),_0x5ea0d3);}};
\ No newline at end of file
index 078e782..449ce38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd478=['length','result','getUserByInternal','found','notfound','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','catch','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','format','diffTime','diff','sumTime','now','isAfter','isBefore','jayson/promise','http','../../config/logger','xdr','info','inspect','debug','error','request','then','GetUser','internal','name','[utils][getUser]\x20where:%s'];(function(_0x12d013,_0x286e4c){var _0x54220c=function(_0x31d518){while(--_0x31d518){_0x12d013['push'](_0x12d013['shift']());}};_0x54220c(++_0x286e4c);}(_0xd478,0x196));var _0x8d47=function(_0x35f83e,_0x30ec55){_0x35f83e=_0x35f83e-0x0;var _0x249b05=_0xd478[_0x35f83e];return _0x249b05;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x8d47('0x0'));var moment=require('moment');var util=require('util');var client=jayson['client'][_0x8d47('0x1')]({'port':0x2329});var logger=require(_0x8d47('0x2'))(_0x8d47('0x3'));exports[_0x8d47('0x4')]=function(_0x225873,_0x31f99a){logger[_0x8d47('0x4')](_0x225873,_0x31f99a?util[_0x8d47('0x5')](_0x31f99a,{'showHidden':![],'depth':null}):'');};exports[_0x8d47('0x6')]=function(_0x3c4551,_0x1a952c){logger[_0x8d47('0x6')](_0x3c4551,_0x1a952c?util['inspect'](_0x1a952c,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x5b764a,_0x210201){logger[_0x8d47('0x7')](_0x5b764a,_0x210201?util['inspect'](_0x210201,{'showHidden':![],'depth':null}):'');};exports[_0x8d47('0x8')]=function(_0xc5e484,_0x5d65e3){return client[_0x8d47('0x8')](_0xc5e484,{'body':_0x5d65e3})[_0x8d47('0x9')](function(_0x45fbf8){logger[_0x8d47('0x6')]('[utils][request]\x20name:%s',_0xc5e484,_0x45fbf8?util[_0x8d47('0x5')](_0x45fbf8,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x4e9bb9){logger['error']('[utils][request]\x20name:%s',_0xc5e484,_0x4e9bb9?util['inspect'](_0x4e9bb9,{'showHidden':![],'depth':null}):'');});};function getUser(_0x783694){return client[_0x8d47('0x8')](_0x8d47('0xa'),{'options':{'raw':!![],'attributes':['id',_0x8d47('0xb'),_0x8d47('0xc'),'interface'],'where':_0x783694,'limit':0x1}})['then'](function(_0x2ba0a8){logger['debug'](_0x8d47('0xd'),JSON['stringify'](_0x783694),_0x2ba0a8?util[_0x8d47('0x5')](_0x2ba0a8,{'showHidden':![],'depth':null}):'');return _0x2ba0a8['result'][_0x8d47('0xe')]?_0x2ba0a8[_0x8d47('0xf')][0x0]:null;});}exports[_0x8d47('0x10')]=function(_0x40f154){return new BPromise(function(_0x423285,_0x3fde6c){if(_0x40f154){return getUser({'internal':_0x40f154})[_0x8d47('0x9')](function(_0x523323){logger['info']('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x40f154,_0x523323?_0x8d47('0x11'):_0x8d47('0x12'));return _0x423285(_0x523323);})['catch'](function(_0x35f71c){logger[_0x8d47('0x7')]('[utils][getUserByInternal]',_0x35f71c?util[_0x8d47('0x5')](_0x35f71c,{'showHidden':![],'depth':null}):'');return _0x423285(null);});}return _0x423285(null);});};exports[_0x8d47('0x13')]=function(_0x52ef81){return new BPromise(function(_0x27ea9d,_0x5bf86d){if(_0x52ef81){return getUser({'interface':_0x52ef81})['then'](function(_0x1e2b44){logger['info'](_0x8d47('0x14'),_0x52ef81,_0x1e2b44?_0x8d47('0x11'):_0x8d47('0x12'));return _0x27ea9d(_0x1e2b44);})[_0x8d47('0x15')](function(_0x467e7a){logger[_0x8d47('0x7')]('[utils][getUserByInterface]',_0x467e7a?util[_0x8d47('0x5')](_0x467e7a,{'showHidden':![],'depth':null}):'');return _0x27ea9d(null);});}return _0x27ea9d(null);});};exports[_0x8d47('0x16')]=function(_0x3de29d){return new BPromise(function(_0x4e91b3,_0x24929e){if(_0x3de29d){return getUser({'name':_0x3de29d})['then'](function(_0x33b5bb){logger[_0x8d47('0x4')]('[utils][getUserByName]\x20name:%s\x20%s',_0x3de29d,_0x33b5bb?'found':_0x8d47('0x12'));return _0x4e91b3(_0x33b5bb);})['catch'](function(_0x33a77a){logger[_0x8d47('0x7')](_0x8d47('0x17'),_0x33a77a?util[_0x8d47('0x5')](_0x33a77a,{'showHidden':![],'depth':null}):'');return _0x4e91b3(null);});}return _0x4e91b3(null);});};exports[_0x8d47('0x18')]=function(_0x5914f3){return new BPromise(function(_0x336016,_0x256556){if(_0x5914f3){return client['request'](_0x8d47('0x19'),{'options':{'raw':!![],'attributes':['id',_0x8d47('0xc'),_0x8d47('0x1a'),_0x8d47('0x1b'),_0x8d47('0x1c')],'where':{'name':_0x5914f3},'limit':0x1}})[_0x8d47('0x9')](function(_0x4e4c60){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x5914f3,_0x4e4c60?util[_0x8d47('0x5')](_0x4e4c60,{'showHidden':![],'depth':null}):'');logger[_0x8d47('0x4')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x5914f3,_0x4e4c60?'found':_0x8d47('0x12'));return _0x336016(_0x4e4c60[_0x8d47('0xf')][_0x8d47('0xe')]?_0x4e4c60[_0x8d47('0xf')][0x0]:null);})[_0x8d47('0x15')](function(_0x1d955b){logger[_0x8d47('0x7')](_0x8d47('0x1d'),_0x1d955b?util[_0x8d47('0x5')](_0x1d955b,{'showHidden':![],'depth':null}):'');return _0x336016(null);});}return _0x336016(null);});};exports[_0x8d47('0x1e')]=function(_0x577b46,_0x5f0348){return moment(_0x577b46)[_0x8d47('0x1f')](_0x5f0348,_0x8d47('0x20'))['format'](_0x8d47('0x21'));};exports[_0x8d47('0x22')]=function(_0xe7337d,_0x43500d){return moment(_0xe7337d)['subtract'](_0x43500d,'seconds')[_0x8d47('0x23')](_0x8d47('0x21'));};exports[_0x8d47('0x24')]=function(_0x397c9e,_0x13046c){return moment(_0x397c9e)[_0x8d47('0x25')](moment(_0x13046c),_0x8d47('0x20'));};exports[_0x8d47('0x26')]=function(_0x35b026,_0x139c57){return parseInt(_0x35b026,0xa)+parseInt(_0x139c57,0xa);};exports[_0x8d47('0x27')]=function(){return moment()[_0x8d47('0x23')](_0x8d47('0x21'));};exports['isAfter']=function(_0x9a728d,_0x122678){if(_0x122678){return moment(_0x9a728d)[_0x8d47('0x28')](_0x122678);}return!![];};exports[_0x8d47('0x29')]=function(_0x3b1778,_0x522e0a){if(_0x522e0a){return moment(_0x3b1778)[_0x8d47('0x29')](_0x522e0a);}else if(_0x3b1778){return!![];}return![];};
\ No newline at end of file
+var _0x6bfc=['isBefore','jayson/promise','moment','util','http','xdr','info','debug','inspect','error','request','catch','[utils][request]\x20name:%s','GetUser','interface','then','[utils][getUser]\x20where:%s','stringify','length','[utils][getUserByInternal]\x20internal:%s\x20%s','getUserByInterface','found','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','GetVoiceQueue','name','type','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','result','[utils][getVoiceQueueByName]','add','seconds','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diff','sumTime','now','format','isAfter'];(function(_0x11145c,_0x4587ec){var _0x527ebc=function(_0x5f3aed){while(--_0x5f3aed){_0x11145c['push'](_0x11145c['shift']());}};_0x527ebc(++_0x4587ec);}(_0x6bfc,0x159));var _0xc6bf=function(_0x294e07,_0xa6dc36){_0x294e07=_0x294e07-0x0;var _0x636072=_0x6bfc[_0x294e07];return _0x636072;};'use strict';var BPromise=require('bluebird');var jayson=require(_0xc6bf('0x0'));var moment=require(_0xc6bf('0x1'));var util=require(_0xc6bf('0x2'));var client=jayson['client'][_0xc6bf('0x3')]({'port':0x2329});var logger=require('../../config/logger')(_0xc6bf('0x4'));exports['info']=function(_0x15b991,_0xe23c7e){logger[_0xc6bf('0x5')](_0x15b991,_0xe23c7e?util['inspect'](_0xe23c7e,{'showHidden':![],'depth':null}):'');};exports[_0xc6bf('0x6')]=function(_0x2c9049,_0x47039a){logger[_0xc6bf('0x6')](_0x2c9049,_0x47039a?util[_0xc6bf('0x7')](_0x47039a,{'showHidden':![],'depth':null}):'');};exports[_0xc6bf('0x8')]=function(_0x840019,_0x431fea){logger['error'](_0x840019,_0x431fea?util[_0xc6bf('0x7')](_0x431fea,{'showHidden':![],'depth':null}):'');};exports[_0xc6bf('0x9')]=function(_0x1cb846,_0x343148){return client['request'](_0x1cb846,{'body':_0x343148})['then'](function(_0x1ec471){logger[_0xc6bf('0x6')]('[utils][request]\x20name:%s',_0x1cb846,_0x1ec471?util['inspect'](_0x1ec471,{'showHidden':![],'depth':null}):'');})[_0xc6bf('0xa')](function(_0x303ae7){logger['error'](_0xc6bf('0xb'),_0x1cb846,_0x303ae7?util[_0xc6bf('0x7')](_0x303ae7,{'showHidden':![],'depth':null}):'');});};function getUser(_0x338bdc){return client[_0xc6bf('0x9')](_0xc6bf('0xc'),{'options':{'raw':!![],'attributes':['id','internal','name',_0xc6bf('0xd')],'where':_0x338bdc,'limit':0x1}})[_0xc6bf('0xe')](function(_0x5b5567){logger[_0xc6bf('0x6')](_0xc6bf('0xf'),JSON[_0xc6bf('0x10')](_0x338bdc),_0x5b5567?util[_0xc6bf('0x7')](_0x5b5567,{'showHidden':![],'depth':null}):'');return _0x5b5567['result'][_0xc6bf('0x11')]?_0x5b5567['result'][0x0]:null;});}exports['getUserByInternal']=function(_0x195c3f){return new BPromise(function(_0x23a9e9,_0x5bdc69){if(_0x195c3f){return getUser({'internal':_0x195c3f})[_0xc6bf('0xe')](function(_0x1079db){logger['info'](_0xc6bf('0x12'),_0x195c3f,_0x1079db?'found':'notfound');return _0x23a9e9(_0x1079db);})['catch'](function(_0x1b173d){logger[_0xc6bf('0x8')]('[utils][getUserByInternal]',_0x1b173d?util['inspect'](_0x1b173d,{'showHidden':![],'depth':null}):'');return _0x23a9e9(null);});}return _0x23a9e9(null);});};exports[_0xc6bf('0x13')]=function(_0x2e47ce){return new BPromise(function(_0x5ca782,_0x4633cf){if(_0x2e47ce){return getUser({'interface':_0x2e47ce})[_0xc6bf('0xe')](function(_0x1e2110){logger[_0xc6bf('0x5')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x2e47ce,_0x1e2110?_0xc6bf('0x14'):_0xc6bf('0x15'));return _0x5ca782(_0x1e2110);})[_0xc6bf('0xa')](function(_0x1a0a50){logger[_0xc6bf('0x8')](_0xc6bf('0x16'),_0x1a0a50?util[_0xc6bf('0x7')](_0x1a0a50,{'showHidden':![],'depth':null}):'');return _0x5ca782(null);});}return _0x5ca782(null);});};exports[_0xc6bf('0x17')]=function(_0x5a5d51){return new BPromise(function(_0x312138,_0x24ed4b){if(_0x5a5d51){return getUser({'name':_0x5a5d51})[_0xc6bf('0xe')](function(_0x532bc1){logger[_0xc6bf('0x5')](_0xc6bf('0x18'),_0x5a5d51,_0x532bc1?_0xc6bf('0x14'):_0xc6bf('0x15'));return _0x312138(_0x532bc1);})[_0xc6bf('0xa')](function(_0x15396c){logger['error']('[utils][getUserByName]',_0x15396c?util[_0xc6bf('0x7')](_0x15396c,{'showHidden':![],'depth':null}):'');return _0x312138(null);});}return _0x312138(null);});};exports['getVoiceQueueByName']=function(_0x36b1c7){return new BPromise(function(_0x48adb6,_0x54fb9a){if(_0x36b1c7){return client[_0xc6bf('0x9')](_0xc6bf('0x19'),{'options':{'raw':!![],'attributes':['id',_0xc6bf('0x1a'),_0xc6bf('0x1b'),'acw','acwTimeout'],'where':{'name':_0x36b1c7},'limit':0x1}})['then'](function(_0x4f0234){logger[_0xc6bf('0x6')](_0xc6bf('0x1c'),_0x36b1c7,_0x4f0234?util[_0xc6bf('0x7')](_0x4f0234,{'showHidden':![],'depth':null}):'');logger[_0xc6bf('0x5')](_0xc6bf('0x1d'),_0x36b1c7,_0x4f0234?_0xc6bf('0x14'):_0xc6bf('0x15'));return _0x48adb6(_0x4f0234[_0xc6bf('0x1e')][_0xc6bf('0x11')]?_0x4f0234[_0xc6bf('0x1e')][0x0]:null);})[_0xc6bf('0xa')](function(_0x4630af){logger[_0xc6bf('0x8')](_0xc6bf('0x1f'),_0x4630af?util[_0xc6bf('0x7')](_0x4630af,{'showHidden':![],'depth':null}):'');return _0x48adb6(null);});}return _0x48adb6(null);});};exports['addTime']=function(_0x310f9a,_0x1245d7){return moment(_0x310f9a)[_0xc6bf('0x20')](_0x1245d7,_0xc6bf('0x21'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xc6bf('0x22')]=function(_0x188df5,_0x11de46){return moment(_0x188df5)[_0xc6bf('0x23')](_0x11de46,_0xc6bf('0x21'))['format'](_0xc6bf('0x24'));};exports['diffTime']=function(_0x525e59,_0x31786a){return moment(_0x525e59)[_0xc6bf('0x25')](moment(_0x31786a),_0xc6bf('0x21'));};exports[_0xc6bf('0x26')]=function(_0x2965bc,_0x571bdb){return parseInt(_0x2965bc,0xa)+parseInt(_0x571bdb,0xa);};exports[_0xc6bf('0x27')]=function(){return moment()[_0xc6bf('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xc6bf('0x29')]=function(_0x12f4cb,_0x466d4f){if(_0x466d4f){return moment(_0x12f4cb)['isAfter'](_0x466d4f);}return!![];};exports['isBefore']=function(_0x4fb13b,_0x2a904b){if(_0x2a904b){return moment(_0x4fb13b)[_0xc6bf('0x2a')](_0x2a904b);}else if(_0x4fb13b){return!![];}return![];};
\ No newline at end of file
index dc3c819..058b279 100644 (file)
@@ -26,4 +26,4 @@
                 status != 'online' &&
                 status != 'offline' &&
                 status != 'unmanaged'
-              " ng-click="vm.close(); $event.stopPropagation();"><i class="mdi mdi-close mdi-light" ng-click="vm.close(); $event.stopPropagation();"></i></md-button><div ng-if="settings.alignment == 'bottom_right'" aria-label="Reduce"><i class="mdi mdi-light mdi-light" ng-class="layout.up === true ? 'mdi-chevron-down' : 'mdi-chevron-up'"></i></div></div></md-toolbar><md-content class="chat-content"><ui-view></ui-view></md-content></div></div><script>window['buildInfo'] = {"name":"motion-chat","version":"3.0.0","shortHash":"5e29b6c","branch":"develop","tag":"","committedOn":"2021-12-15T16:40:46.000Z","buildDate":"2021-12-17T10:52:58.978Z"};</script><script src="scripts/app.js"></script><script src="scripts/runtime.js"></script><script src="scripts/vendor-index.js"></script><script src="scripts/vendor-angular-76f2ed34.js"></script><script src="scripts/vendor-angular-58d021f3.js"></script><script src="scripts/vendor-ng-embed.js"></script><script src="scripts/vendor-moment.js"></script><script src="scripts/vendor-jquery.js"></script><script src="scripts/vendor-jquery.textcomplete.js"></script><script src="scripts/vendor-emojionearea.js"></script><script src="scripts/vendor-emojione.js"></script><script src="scripts/vendor-angular-sanitize.js"></script><script src="scripts/vendor-angular-resource.js"></script><script src="scripts/vendor-angular-messages.js"></script><script src="scripts/vendor-angular-material.js"></script><script src="scripts/vendor-angular-local-storage.js"></script><script src="scripts/vendor-angular-animate.js"></script><script src="scripts/vendor-urlMatcher.js"></script><script src="scripts/vendor-transition.js"></script><script src="scripts/vendor-stateService.js"></script><script src="scripts/vendor-stateDirectives.js"></script><script src="scripts/vendor-flow.js"></script><script src="scripts/chat.js"></script></body></html>
\ No newline at end of file
+              " ng-click="vm.close(); $event.stopPropagation();"><i class="mdi mdi-close mdi-light" ng-click="vm.close(); $event.stopPropagation();"></i></md-button><div ng-if="settings.alignment == 'bottom_right'" aria-label="Reduce"><i class="mdi mdi-light mdi-light" ng-class="layout.up === true ? 'mdi-chevron-down' : 'mdi-chevron-up'"></i></div></div></md-toolbar><md-content class="chat-content"><ui-view></ui-view></md-content></div></div><script>window['buildInfo'] = {"name":"motion-chat","version":"3.0.0","shortHash":"8737b2f","branch":"develop","tag":"","committedOn":"2021-12-13T15:55:51.000Z","buildDate":"2021-12-13T20:52:20.817Z"};</script><script src="scripts/app.js"></script><script src="scripts/runtime.js"></script><script src="scripts/vendor-index.js"></script><script src="scripts/vendor-angular-76f2ed34.js"></script><script src="scripts/vendor-angular-58d021f3.js"></script><script src="scripts/vendor-ng-embed.js"></script><script src="scripts/vendor-moment.js"></script><script src="scripts/vendor-jquery.js"></script><script src="scripts/vendor-jquery.textcomplete.js"></script><script src="scripts/vendor-emojionearea.js"></script><script src="scripts/vendor-emojione.js"></script><script src="scripts/vendor-angular-sanitize.js"></script><script src="scripts/vendor-angular-resource.js"></script><script src="scripts/vendor-angular-messages.js"></script><script src="scripts/vendor-angular-material.js"></script><script src="scripts/vendor-angular-local-storage.js"></script><script src="scripts/vendor-angular-animate.js"></script><script src="scripts/vendor-urlMatcher.js"></script><script src="scripts/vendor-transition.js"></script><script src="scripts/vendor-stateService.js"></script><script src="scripts/vendor-stateDirectives.js"></script><script src="scripts/vendor-flow.js"></script><script src="scripts/chat.js"></script></body></html>
\ No newline at end of file
index 4a8fc33..a8ac4d6 100644 (file)
@@ -1,3 +1,3 @@
 /*! For license information please see chat.js.LICENSE.txt */
-(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat"],{"./node_modules/@flowjs/ng-flow/dist/ng-flow.js":(e,t,n)=>{var o=n("./node_modules/@flowjs/flow.js/src/flow.js");angular.module("flow.provider",[]).provider("flowFactory",(function(){"use strict";this.defaults={},this.factory=function(e){return new o(e)},this.events=[],this.on=function(e,t){this.events.push([e,t])},this.$get=function(){var e=this.factory,t=this.defaults,n=this.events;return{create:function(o){var r=e(angular.extend({},t,o));return angular.forEach(n,(function(e){r.on(e[0],e[1])})),r}}}})),angular.module("flow.init",["flow.provider"]).controller("flowCtrl",["$scope","$attrs","$parse","flowFactory",function(e,t,n,o){var r=angular.extend({},e.$eval(t.flowInit)),s=e.$eval(t.flowObject)||o.create(r),a=function(t){var n=Array.prototype.slice.call(arguments);n.shift();var o=e.$broadcast.apply(e,["flow::"+t,s].concat(n));if({progress:1,filesSubmitted:1,fileSuccess:1,fileError:1,complete:1}[t]&&e.$applyAsync(),o.defaultPrevented)return!1};s.on("catchAll",a),e.$on("$destroy",(function(){s.off("catchAll",a)})),e.$flow=s,t.hasOwnProperty("flowName")&&(n(t.flowName).assign(e,s),e.$on("$destroy",(function(){n(t.flowName).assign(e)})))}]).directive("flowInit",[function(){return{scope:!0,controller:"flowCtrl"}}]),angular.module("flow.btn",["flow.init"]).directive("flowBtn",[function(){return{restrict:"EA",scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.hasOwnProperty("flowDirectory"),r=n.hasOwnProperty("flowSingleFile"),s=n.hasOwnProperty("flowAttrs")&&e.$eval(n.flowAttrs);e.$flow.assignBrowse(t,o,r,s)}}}]),angular.module("flow.dragEvents",["flow.init"]).directive("flowPreventDrop",(function(){return{scope:!1,link:function(e,t,n){t.bind("drop dragover",(function(e){e.preventDefault()}))}}})).directive("flowDragEnter",["$timeout",function(e){return{scope:!1,link:function(t,n,o){var r,s=!1;n.bind("dragover",(function(n){var a,i,d;i=!1,d=(a=n).dataTransfer||a.originalEvent.dataTransfer,angular.forEach(d&&d.types,(function(e){"Files"===e&&(i=!0)})),i&&(s||(t.$apply(o.flowDragEnter),s=!0),e.cancel(r),n.preventDefault())})),n.bind("dragleave drop",(function(n){e.cancel(r),r=e((function(){t.$eval(o.flowDragLeave),r=null,s=!1}),100)}))}}}]),angular.module("flow.drop",["flow.init"]).directive("flowDrop",(function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){function o(){e.$flow.assignDrop(t)}n.flowDropEnabled?e.$watch(n.flowDropEnabled,(function(n){n?o():e.$flow.unAssignDrop(t)})):o()}}})),function(e){"use strict";var t=e.module("flow.events",["flow.init"]);e.forEach({fileSuccess:["$file","$message"],fileProgress:["$file"],fileAdded:["$file","$event"],filesAdded:["$files","$event"],filesSubmitted:["$files","$event"],fileRetry:["$file"],fileRemoved:["$file"],fileError:["$file","$message"],uploadStart:[],complete:[],progress:[],error:["$message","$file"]},(function(n,o){var r,s="flow"+((r=o).charAt(0).toUpperCase()+r.slice(1));"flowUploadStart"==s&&(s="flowUploadStarted"),t.directive(s,[function(){return{require:"^flowInit",controller:["$scope","$attrs",function(t,r){t.$on("flow::"+o,(function(){var o=Array.prototype.slice.call(arguments),a=o.shift();if(t.$flow===o.shift()){var i={};e.forEach(n,(function(e,t){i[e]=o[t]})),!1===t.$eval(r[s],i)&&a.preventDefault()}}))}]}}])}))}(angular),angular.module("flow.img",["flow.init"]).directive("flowImg",[function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.flowImg;e.$watch(o,(function(t){if(t){var o=new FileReader;o.readAsDataURL(t.file),o.onload=function(t){e.$apply((function(){n.$set("src",t.target.result)}))}}}))}}}]),angular.module("flow.transfers",["flow.init"]).directive("flowTransfers",[function(){return{scope:!0,require:"^flowInit",link:function(e){e.transfers=e.$flow.files}}}]),angular.module("flow",["flow.provider","flow.init","flow.events","flow.btn","flow.drop","flow.transfers","flow.img","flow.dragEvents"])},"./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js":(e,t,n)=>{"use strict";var o,r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),a=n("./node_modules/@uirouter/angularjs/lib-esm/services.js"),i=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js");function d(e,t,n,o,i){var d=(0,r.parse)("viewDecl.controllerAs"),u=(0,r.parse)("viewDecl.resolveAs");return{restrict:"ECA",priority:-400,compile:function(o){var m=o.html();return o.empty(),function(o,_){var c=_.data("$uiView");if(!c)return _.html(m),void e(_.contents())(o);var h=c.$cfg||{viewDecl:{},getTemplate:r.noop},f=h.path&&new r.ResolveContext(h.path);_.html(h.getTemplate(_,f)||m),r.trace.traceUIViewFill(c.$uiView,_.html());var p=e(_.contents()),M=h.controller,y=d(h),L=u(h),Y=f&&(0,a.D)(f);if(o[L]=Y,M){var g=t(M,(0,r.extend)({},Y,{$scope:o,$element:_}));y&&(o[y]=g,o[y][L]=Y),_.data("$ngControllerController",g),_.children().data("$ngControllerController",g),l(i,n,g,o,h)}if((0,r.isString)(h.component))var v=(0,r.kebobString)(h.component),k=new RegExp("^(x-|data-)?"+v+"$","i"),j=o.$watch((function(){var e=[].slice.call(_[0].children).filter((function(e){return e&&e.tagName&&k.exec(e.tagName)}));return e&&s.ng.element(e).data("$"+h.component+"Controller")}),(function(e){e&&(l(i,n,e,o,h),j())}));p(o)}}}}o=["$view","$animate","$uiViewScroll","$interpolate","$q",function(e,t,n,o,a){var d={$cfg:{viewDecl:{$context:e._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(m,l,_){return function(m,l,c){var h,f,p,M,y=c.onload||"",L=c.autoscroll,Y=function(e,n,o){s.ng.version.minor>2?t.enter(e,null,n).then(o):t.enter(e,null,n,o)},g=function(e,n){s.ng.version.minor>2?t.leave(e).then(n):t.leave(e,n)},v=l.inheritedData("$uiView")||d,k=o(c.uiView||c.name||"")(m)||"$default",j={$type:"ng1",id:u.count++,name:k,fqn:v.$uiView.fqn?v.$uiView.fqn+"."+k:k,config:null,configUpdated:function(e){(!e||e instanceof i.qO)&&(M!==e&&(r.trace.traceUIViewConfigUpdated(j,e&&e.viewDecl&&e.viewDecl.$context),M=e,b(e)))},get creationContext(){var e=(0,r.parse)("$cfg.viewDecl.$context")(v),t=(0,r.parse)("$uiView.creationContext")(v);return e||t}};r.trace.traceUIViewEvent("Linking",j),l.data("$uiView",{$uiView:j}),b();var w=e.registerUIView(j);function b(e){var t=m.$new(),o=a.defer(),s=a.defer(),i={$cfg:e,$uiView:j},d={$animEnter:o.promise,$animLeave:s.promise,$$animLeave:s};t.$emit("$viewContentLoading",k);var u=_(t,(function(e){e.data("$uiViewAnim",d),e.data("$uiView",i),Y(e,l,(function(){o.resolve(),p&&p.$emit("$viewContentAnimationEnded"),((0,r.isDefined)(L)&&!L||m.$eval(L))&&n(e)})),function(){if(h&&(r.trace.traceUIViewEvent("Removing (previous) el",h.data("$uiView")),h.remove(),h=null),p&&(r.trace.traceUIViewEvent("Destroying scope",j),p.$destroy(),p=null),f){var e=f.data("$uiViewAnim");r.trace.traceUIViewEvent("Animate out",e),g(f,(function(){e.$$animLeave.resolve(),h=null})),h=f,f=null}}()}));f=u,(p=t).$emit("$viewContentLoaded",e||M),p.$eval(y)}m.$on("$destroy",(function(){r.trace.traceUIViewEvent("Destroying/Unregistering",j),w()}))}}};return u}],d.$inject=["$compile","$controller","$transitions","$view","$q"];var u="function"==typeof s.ng.module("ui.router").component,m=0;function l(e,t,n,o,s){!(0,r.isFunction)(n.$onInit)||(s.viewDecl.component||s.viewDecl.componentProvider)&&u||n.$onInit();var a=(0,r.tail)(s.path).state.self,i={bind:n};if((0,r.isFunction)(n.uiOnParamsChanged)){var d=new r.ResolveContext(s.path).getResolvable("$transition$").data;o.$on("$destroy",t.onSuccess({},(function(e){if(e!==d&&-1===e.exiting().indexOf(a)){var t=e.params("to"),o=e.params("from"),s=function(e){return e.paramSchema},i=e.treeChanges("to").map(s).reduce(r.unnestR,[]),u=e.treeChanges("from").map(s).reduce(r.unnestR,[]),m=i.filter((function(e){var n=u.indexOf(e);return-1===n||!u[n].type.equals(t[e.id],o[e.id])}));if(m.length){var l=m.map((function(e){return e.id})),_=(0,r.filter)(t,(function(e,t){return-1!==l.indexOf(t)}));n.uiOnParamsChanged(_,e)}}}),i))}if((0,r.isFunction)(n.uiCanExit)){var l=m++,_="_uiCanExitIds",c=function(e){return!!e&&(e[_]&&!0===e[_][l]||c(e.redirectedFrom()))},h={exiting:a.name};o.$on("$destroy",t.onBefore(h,(function(t){var o,r=t[_]=t[_]||{};return c(t)||(o=e.when(n.uiCanExit(t))).then((function(e){return r[l]=!1!==e})),o}),i))}}s.ng.module("ui.router.state").directive("uiView",o),s.ng.module("ui.router.state").directive("uiView",d)},"./node_modules/@uirouter/angularjs/lib-esm/services.js":(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js"),a=function(){function e(){var e=this;this._useHttp=o.ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function(t,n,o){return e.$templateRequest=o.has&&o.has("$templateRequest")&&o.get("$templateRequest"),e.$http=t,e.$templateCache=n,e}]}return e.prototype.useHttpService=function(e){this._useHttp=e},e.prototype.fromConfig=function(e,t,n){var o=function(e){return r.services.$q.when(e).then((function(e){return{template:e}}))},s=function(e){return r.services.$q.when(e).then((function(e){return{component:e}}))};return(0,r.isDefined)(e.template)?o(this.fromString(e.template,t)):(0,r.isDefined)(e.templateUrl)?o(this.fromUrl(e.templateUrl,t)):(0,r.isDefined)(e.templateProvider)?o(this.fromProvider(e.templateProvider,t,n)):(0,r.isDefined)(e.component)?s(e.component):(0,r.isDefined)(e.componentProvider)?s(this.fromComponentProvider(e.componentProvider,t,n)):o("<ui-view></ui-view>")},e.prototype.fromString=function(e,t){return(0,r.isFunction)(e)?e(t):e},e.prototype.fromUrl=function(e,t){return(0,r.isFunction)(e)&&(e=e(t)),null==e?null:this._useHttp?this.$http.get(e,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then((function(e){return e.data})):this.$templateRequest(e)},e.prototype.fromProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.fromComponentProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.makeComponentTemplate=function(e,t,n,s){s=s||{};var a=o.ng.version.minor>=3?"::":"",d=function(e){var t=(0,r.kebobString)(e);return/^(x|data)-/.exec(t)?"x-"+t:t},u=function(e){var t=r.services.$injector.get(e+"Directive");if(!t||!t.length)throw new Error("Unable to find component named '"+e+"'");return t.map(i).reduce(r.unnestR,[])}(n).map((function(n){var o=n.name,i=n.type,u=d(o);if(e.attr(u)&&!s[o])return u+"='"+e.attr(u)+"'";var m=s[o]||o;if("@"===i)return u+"='{{"+a+"$resolve."+m+"}}'";if("&"===i){var l=t.getResolvable(m),_=l&&l.data,c=_&&r.services.$injector.annotate(_)||[];return u+"='$resolve."+m+((0,r.isArray)(_)?"["+(_.length-1)+"]":"")+"("+c.join(",")+")'"}return u+"='"+a+"$resolve."+m+"'"})).join(" "),m=d(n);return"<"+m+" "+u+"></"+m+">"},e}(),i=function(e){return(0,r.isObject)(e.bindToController)?d(e.bindToController):d(e.scope)},d=function(e){return Object.keys(e||{}).map((function(t){return[t,/^([=<@&])[?]?(.*)/.exec(e[t])]})).filter((function(e){return(0,r.isDefined)(e)&&(0,r.isArray)(e[1])})).map((function(e){return{name:e[1][2]||e[0],type:e[1][1]}}))},u=n("./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js"),m=function(e){return function(t){var n=t[e],o="onExit"===e?"from":"to";return n?function(e,t){var s=new r.ResolveContext(e.treeChanges(o)).subContext(t.$$state()),a=(0,r.extend)(k(s),{$state$:t,$transition$:e});return r.services.$injector.invoke(n,this,a)}:void 0}},l=function(){function e(e){this._urlListeners=[],this.$locationProvider=e;var t=(0,r.val)(e);(0,r.createProxyFunctions)(t,this,t,["hashPrefix"])}return e.monkeyPatchPathParameterType=function(e){var t=e.urlMatcherFactory.type("path");t.encode=function(e){return null!=e?e.toString().replace(/(~|\/)/g,(function(e){return{"~":"~~","/":"~2F"}[e]})):e},t.decode=function(e){return null!=e?e.toString().replace(/(~~|~2F)/g,(function(e){return{"~~":"~","~2F":"/"}[e]})):e}},e.prototype.dispose=function(){},e.prototype.onChange=function(e){var t=this;return this._urlListeners.push(e),function(){return(0,r.removeFrom)(t._urlListeners)(e)}},e.prototype.html5Mode=function(){var e=this.$locationProvider.html5Mode();return(e=(0,r.isObject)(e)?e.enabled:e)&&this.$sniffer.history},e.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},e.prototype.url=function(e,t,n){return void 0===t&&(t=!1),(0,r.isDefined)(e)&&this.$location.url(e),t&&this.$location.replace(),n&&this.$location.state(n),this.$location.url()},e.prototype._runtimeServices=function(e,t,n,o,s){var a=this;this.$location=t,this.$sniffer=n,this.$browser=o,this.$window=s,e.$on("$locationChangeSuccess",(function(e){return a._urlListeners.forEach((function(t){return t(e)}))}));var i=(0,r.val)(t);(0,r.createProxyFunctions)(i,this,i,["replace","path","search","hash"]),(0,r.createProxyFunctions)(i,this,i,["port","protocol","host"])},e}(),_=n("./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js");o.ng.module("ui.router.angular1",[]);var c=o.ng.module("ui.router.init",["ng"]),h=o.ng.module("ui.router.util",["ui.router.init"]),f=o.ng.module("ui.router.router",["ui.router.util"]),p=o.ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),M=o.ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),y=(o.ng.module("ui.router.compat",["ui.router"]),null);function L(e){(y=this.router=new r.UIRouter).stateProvider=new u.X(y.stateRegistry,y.stateService),y.stateRegistry.decorator("views",s.LB),y.stateRegistry.decorator("onExit",m("onExit")),y.stateRegistry.decorator("onRetain",m("onRetain")),y.stateRegistry.decorator("onEnter",m("onEnter")),y.viewService._pluginapi._viewConfigFactory("ng1",(0,s.OB)()),y.urlService.config._decodeParams=!1;var t=y.locationService=y.locationConfig=new l(e);function n(e,n,o,r,s,a,i){return t._runtimeServices(s,e,r,n,o),delete y.router,delete y.$get,y}return l.monkeyPatchPathParameterType(y),y.router=y,y.$get=n,n.$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],y}L.$inject=["$locationProvider"];var Y=function(e){return["$uiRouterProvider",function(t){var n=t.router[e];return n.$get=function(){return n},n}]};function g(e,t,n){if(r.services.$injector=e,r.services.$q=t,!Object.prototype.hasOwnProperty.call(e,"strictDi"))try{e.invoke((function(e){}))}catch(t){e.strictDi=!!/strict mode/.exec(t&&t.toString())}n.stateRegistry.get().map((function(e){return e.$$state().resolvables})).reduce(r.unnestR,[]).filter((function(e){return"deferred"===e.deps})).forEach((function(t){return t.deps=e.annotate(t.resolveFn,e.strictDi)}))}function v(e){e.$watch((function(){r.trace.approximateDigests++}))}g.$inject=["$injector","$q","$uiRouter"],v.$inject=["$rootScope"],c.provider("$uiRouter",L),f.provider("$urlRouter",["$uiRouterProvider",function(e){return e.urlRouterProvider=new _.L(e)}]),h.provider("$urlService",Y("urlService")),h.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return y.urlMatcherFactory}]),h.provider("$templateFactory",(function(){return new a})),p.provider("$stateRegistry",Y("stateRegistry")),p.provider("$uiRouterGlobals",Y("globals")),p.provider("$transitions",Y("transitionService")),p.provider("$state",["$uiRouterProvider",function(){return(0,r.extend)(y.stateProvider,{$get:function(){return y.stateService}})}]),p.factory("$stateParams",["$uiRouter",function(e){return e.globals.params}]),M.factory("$view",(function(){return y.viewService})),M.service("$trace",(function(){return r.trace})),M.run(v),h.run(["$urlMatcherFactory",function(e){}]),p.run(["$state",function(e){}]),f.run(["$urlRouter",function(e){}]),c.run(g);var k=function(e){return e.getTokens().filter(r.isString).map((function(t){var n=e.getResolvable(t);return[t,"NOWAIT"===e.getPolicy(n).async?n.promise:n.data]})).reduce(r.applyPairs,{})}},"./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js");function r(e){var t=function(t,n,o){return e.is(t,n,o)};return t.$stateful=!0,t}function s(e){var t=function(t,n,o){return e.includes(t,n,o)};return t.$stateful=!0,t}r.$inject=["$state"],s.$inject=["$state"],o.ng.module("ui.router.state").filter("isState",r).filter("includedByState",s)},"./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(t,n){this.stateRegistry=t,this.stateService=n,(0,o.createProxyFunctions)((0,o.val)(e.prototype),this,(0,o.val)(this))}return e.prototype.decorator=function(e,t){return this.stateRegistry.decorator(e,t)||this},e.prototype.state=function(e,t){return(0,o.isObject)(e)?t=e:t.name=e,this.stateRegistry.register(t),this},e.prototype.onInvalid=function(e){return this.stateService.onInvalid(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js":(e,t,n)=>{"use strict";n.d(t,{OB:()=>r,LB:()=>a,qO:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/index.js");function r(){var e=null;return function(t,n){return e=e||o.services.$injector.get("$templateFactory"),[new d(t,n,e)]}}var s=function(e,t){return e.reduce((function(e,n){return e||(0,o.isDefined)(t[n])}),!1)};function a(e){if(!e.parent)return{};var t=["component","bindings","componentProvider"],n=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),r=t.concat(n);if((0,o.isDefined)(e.views)&&s(r,e))throw new Error("State '"+e.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  "+r.filter((function(t){return(0,o.isDefined)(e[t])})).join(", "));var a={},i=e.views||{$default:(0,o.pick)(e,r)};return(0,o.forEach)(i,(function(r,i){if(i=i||"$default",(0,o.isString)(r)&&(r={component:r}),r=(0,o.extend)({},r),s(t,r)&&s(n,r))throw new Error("Cannot combine: "+t.join("|")+" with: "+n.join("|")+" in stateview: '"+i+"@"+e.name+"'");r.resolveAs=r.resolveAs||"$resolve",r.$type="ng1",r.$context=e,r.$name=i;var d=o.ViewService.normalizeUIViewTarget(r.$context,r.$name);r.$uiViewName=d.uiViewName,r.$uiViewContextAnchor=d.uiViewContextAnchor,a[i]=r})),a}var i=0,d=function(){function e(e,t,n){var o=this;this.path=e,this.viewDecl=t,this.factory=n,this.$id=i++,this.loaded=!1,this.getTemplate=function(e,t){return o.component?o.factory.makeComponentTemplate(e,t,o.component,o.viewDecl.bindings):o.template}}return e.prototype.load=function(){var e=this,t=o.services.$q,n=new o.ResolveContext(this.path),r=this.path.reduce((function(e,t){return(0,o.extend)(e,t.paramValues)}),{}),s={template:t.when(this.factory.fromConfig(this.viewDecl,r,n)),controller:t.when(this.getController(n))};return t.all(s).then((function(t){return o.trace.traceViewServiceEvent("Loaded",e),e.controller=t.controller,(0,o.extend)(e,t.template),e}))},e.prototype.getController=function(e){var t=this.viewDecl.controllerProvider;if(!(0,o.isInjectable)(t))return this.viewDecl.controller;var n=o.services.$injector.annotate(t),r=(0,o.isArray)(t)?(0,o.tail)(t):t;return new o.Resolvable("",r,n).get(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(e){this.router=e}return e.injectableHandler=function(e,t){return function(n){return o.services.$injector.invoke(t,null,{$match:n,$stateParams:e.globals.params})}},e.prototype.$get=function(){var e=this.router.urlService;return this.router.urlRouter.update(!0),e.interceptDeferred||e.listen(),this.router.urlRouter},e.prototype.rule=function(e){var t=this;if(!(0,o.isFunction)(e))throw new Error("'rule' must be a function");var n=new o.BaseUrlRule((function(){return e(o.services.$injector,t.router.locationService)}),o.identity);return this.router.urlService.rules.rule(n),this},e.prototype.otherwise=function(e){var t=this,n=this.router.urlService.rules;if((0,o.isString)(e))n.otherwise(e);else{if(!(0,o.isFunction)(e))throw new Error("'rule' must be a string or function");n.otherwise((function(){return e(o.services.$injector,t.router.locationService)}))}return this},e.prototype.when=function(t,n){return((0,o.isArray)(n)||(0,o.isFunction)(n))&&(n=e.injectableHandler(this.router,n)),this.router.urlService.rules.when(t,n),this},e.prototype.deferIntercept=function(e){this.router.urlService.deferIntercept(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/angularjs/lib-esm/angular.js").ng.module("ui.router.state").provider("$uiViewScroll",(function(){var e=!1;this.useAnchorScroll=function(){e=!0},this.$get=["$anchorScroll","$timeout",function(t,n){return e?t:function(e){return n((function(){e[0].scrollIntoView()}),0,!1)}}]}))},"./node_modules/@uirouter/core/lib-esm/common/common.js":(e,t,n)=>{"use strict";n.d(t,{Jz:()=>i,xZ:()=>u,Qs:()=>m,Ed:()=>l,l7:()=>_,fS:()=>c,yR:()=>h,ZT:()=>f,WR:()=>p,ED:()=>M,d3:()=>y,nA:()=>L,LH:()=>Y,Wk:()=>g,ce:()=>v,LQ:()=>k,mX:()=>j,ei:()=>w,CE:()=>b,hX:()=>D,sE:()=>T,js:()=>S,UI:()=>H,VO:()=>x,XC:()=>E,o8:()=>P,M7:()=>O,FN:()=>$,Ez:()=>A,v_:()=>F,UW:()=>R,sp:()=>W,ym:()=>C,bb:()=>z,Gb:()=>I,JG:()=>J,HX:()=>V,jv:()=>N});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),a=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o},i="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g||void 0,d=i.angular||{},u=d.fromJson||JSON.parse.bind(JSON),m=d.toJson||JSON.stringify.bind(JSON),l=d.forEach||function(e,t,n){if((0,o.kJ)(e))return e.forEach(t,n);Object.keys(e).forEach((function(n){return t(e[n],n)}))},_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n)for(var o=Object.keys(n),r=0;r<o.length;r++)e[o[r]]=n[o[r]]}return e},c=d.equals||function e(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;var s=typeof t;if(s!==typeof n||"object"!==s)return!1;var a,i,d=[t,n];if((0,r.$6)(o.kJ)(d))return i=n,(a=t).length===i.length&&C(a,i).reduce((function(t,n){return t&&e(n[0],n[1])}),!0);if((0,r.$6)(o.J_)(d))return t.getTime()===n.getTime();if((0,r.$6)(o.Kj)(d))return t.toString()===n.toString();if((0,r.$6)(o.mf)(d))return!0;if([o.mf,o.kJ,o.J_,o.Kj].map(r.Yj).reduce((function(e,t){return e||!!t(d)}),!1))return!1;var u={};for(var m in t){if(!e(t[m],n[m]))return!1;u[m]=!0}for(var m in n)if(!u[m])return!1;return!0};function h(e){return e}function f(){}function p(e,t,n,o,r){void 0===r&&(r=!1);var s=function(t){return e()[t].bind(n())};return(o=o||Object.keys(e())).reduce((function(e,n){var o;return e[n]=r?(o=n,function(){return t[o]=s(o),t[o].apply(null,arguments)}):s(n),e}),t)}var M=function(e,t){return _(Object.create(e),t)},y=(0,r.WA)((function(e,t){return-1!==e.indexOf(t)})),L=(0,r.WA)((function(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),e})),Y=(0,r.WA)((function(e,t){return e.push(t),t})),g=function(e){return e.slice().forEach((function(t){"function"==typeof t&&t(),L(e,t)}))};function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=_.apply(void 0,a([{}],t.reverse()));return _(o,w(e||{},Object.keys(o)))}var k=function(e,t){return _(e,t)};function j(e,t){var n=[];for(var o in e.path){if(e.path[o]!==t.path[o])break;n.push(e.path[o])}return n}function w(e,t){var n={};for(var o in e)-1!==t.indexOf(o)&&(n[o]=e[o]);return n}function b(e,t){return Object.keys(e).filter((0,r.ff)(y(t))).reduce((function(t,n){return t[n]=e[n],t}),{})}function D(e,t){var n=(0,o.kJ)(e),r=n?[]:{},s=n?function(e){return r.push(e)}:function(e,t){return r[t]=e};return l(e,(function(e,n){t(e,n)&&s(e,n)})),r}function T(e,t){var n;return l(e,(function(e,o){n||t(e,o)&&(n=e)})),n}var S=H;function H(e,t,n){return n=n||((0,o.kJ)(e)?[]:{}),l(e,(function(e,o){return n[o]=t(e,o)})),n}var x=function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e,t){return e&&t},P=function(e,t){return e||t},O=function(e,t){return e.concat(t)},$=function(e,t){return(0,o.kJ)(t)?e.concat(t.reduce($,[])):A(e,t)};function A(e,t){return e.push(t),e}var F=function(e,t){return y(e,t)?e:A(e,t)},R=function(e){return e.reduce(O,[])},W=function(e,t){return void 0===t&&(t="assert failure"),function(n){var r=e(n);if(!r)throw new Error((0,o.mf)(t)?t(n):t);return r}};function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)return[];for(var n=e.reduce((function(e,t){return Math.min(t.length,e)}),9007199254740991),o=[],r=function(t){switch(e.length){case 1:o.push([e[0][t]]);break;case 2:o.push([e[0][t],e[1][t]]);break;case 3:o.push([e[0][t],e[1][t],e[2][t]]);break;case 4:o.push([e[0][t],e[1][t],e[2][t],e[3][t]]);break;default:o.push(e.map((function(e){return e[t]})))}},s=0;s<n;s++)r(s);return o}function z(e,t){var n,r;if((0,o.kJ)(t)&&(n=t[0],r=t[1]),!(0,o.HD)(n))throw new Error("invalid parameters to applyPairs");return e[n]=r,e}function I(e){return e.length&&e[e.length-1]||void 0}function J(e,t){return t&&Object.keys(t).forEach((function(e){return delete t[e]})),t||(t={}),_(t,e)}var V=function(e){return e.catch((function(e){return 0}))&&e},N=function(e){return V(s.u.$q.reject(e))}},"./node_modules/@uirouter/core/lib-esm/common/coreservices.js":(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var o=function(e,t){return t.reduce((function(t,n){return t[n]=(o=e+"."+n+"()",function(){throw new Error("No implementation for "+o+". The framework specific code did not implement this method.")}),t;var o}),{})},r={$q:void 0,$injector:void 0}},"./node_modules/@uirouter/core/lib-esm/common/glob.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var o=function(){function e(e){this.text=e,this.glob=e.split(".");var t=this.text.split(".").map((function(e){return"**"===e?"(?:|(?:\\.[^.]*)*)":"*"===e?"\\.[^.]*":"\\."+e})).join("");this.regexp=new RegExp("^"+t+"$")}return e.is=function(e){return!!/[!,*]+/.exec(e)},e.fromString=function(t){return e.is(t)?new e(t):null},e.prototype.matches=function(e){return this.regexp.test("."+e)},e}()},"./node_modules/@uirouter/core/lib-esm/common/hof.js":(e,t,n)=>{"use strict";n.d(t,{WA:()=>r,zG:()=>a,vg:()=>i,OH:()=>d,Qc:()=>u,ff:()=>m,xD:()=>l,or:()=>_,$6:()=>c,Yj:()=>h,is:()=>f,P0:()=>p,uj:()=>M});var o=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o};function r(e){return function t(){if(arguments.length>=e.length)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);return t.bind.apply(t,o([this],n))}}function s(){var e=arguments,t=e.length-1;return function(){for(var n=t,o=e[t].apply(this,arguments);n--;)o=e[n].call(this,o);return o}}function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.apply(null,[].slice.call(arguments).reverse())}var i=function(e){return function(t){return t&&t[e]}},d=r((function(e,t,n){return n&&n[e]===t})),u=function(e){return a.apply(null,e.split(".").map(i))},m=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!e.apply(null,t)}};function l(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)&&t.apply(null,n)}}function _(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)||t.apply(null,n)}}var c=function(e){return function(t){return t.reduce((function(t,n){return t&&!!e(n)}),!0)}},h=function(e){return function(t){return t.reduce((function(t,n){return t||!!e(n)}),!1)}},f=function(e){return function(t){return null!=t&&t.constructor===e||t instanceof e}},p=function(e){return function(){return e}};function M(e){return function(t){for(var n=0;n<e.length;n++)if(e[n][0](t))return e[n][1](t)}}},"./node_modules/@uirouter/core/lib-esm/common/predicates.js":(e,t,n)=>{"use strict";n.d(t,{o8:()=>a,$K:()=>i,Ft:()=>d,le:()=>u,mf:()=>m,hj:()=>l,HD:()=>_,Kn:()=>c,kJ:()=>h,J_:()=>f,Kj:()=>p,Qh:()=>M,tI:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),r=Object.prototype.toString,s=function(e){return function(t){return typeof t===e}},a=s("undefined"),i=(0,o.ff)(a),d=function(e){return null===e},u=(0,o.or)(d,a),m=s("function"),l=s("number"),_=s("string"),c=function(e){return null!==e&&"object"==typeof e},h=Array.isArray,f=function(e){return"[object Date]"===r.call(e)},p=function(e){return"[object RegExp]"===r.call(e)};function M(e){if(h(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);return!(t.filter((0,o.ff)(_)).length||n.filter((0,o.ff)(m)).length)}return m(e)}var y=(0,o.xD)(c,(0,o.zG)((0,o.vg)("then"),m))},"./node_modules/@uirouter/core/lib-esm/common/queue.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,this._limit=t,this._evictListeners=[],this.onEvict=(0,o.LH)(this._evictListeners)}return e.prototype.enqueue=function(e){var t=this._items;return t.push(e),this._limit&&t.length>this._limit&&this.evict(),e},e.prototype.evict=function(){var e=this._items.shift();return this._evictListeners.forEach((function(t){return t(e)})),e},e.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},e.prototype.clear=function(){var e=this._items;return this._items=[],e},e.prototype.size=function(){return this._items.length},e.prototype.remove=function(e){var t=this._items.indexOf(e);return t>-1&&this._items.splice(t,1)[0]},e.prototype.peekTail=function(){return this._items[this._items.length-1]},e.prototype.peekHead=function(){if(this.size())return this._items[0]},e}()},"./node_modules/@uirouter/core/lib-esm/common/safeConsole.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r={log:o.ZT,error:o.ZT,table:o.ZT},s="undefined"!=typeof document&&document.documentMode&&9===document.documentMode?window&&window.console?function(e){var t=function(t){return Function.prototype.bind.call(t,e)};return{log:t(e.log),error:t(e.log),table:t(e.log)}}(window.console):r:console.table&&console.error?console:function(e){var t=e.log.bind(e);return{log:t,error:e.error?e.error.bind(e):t,table:e.table?e.table.bind(e):t}}(console)},"./node_modules/@uirouter/core/lib-esm/common/strings.js":(e,t,n)=>{"use strict";n.d(t,{BS:()=>i,NE:()=>d,L$:()=>u,XF:()=>m,iC:()=>l,Pz:()=>h,Lb:()=>p,cW:()=>M,C7:()=>y,Fb:()=>L,HV:()=>Y,PX:()=>g,iV:()=>v});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");function i(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}function d(e,t){for(;t.length<e;)t+=" ";return t}function u(e){return e.replace(/^([A-Z])/,(function(e){return e.toLowerCase()})).replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}))}function m(e){var t=l(e),n=t.match(/^(function [^ ]+\([^)]*\))/),o=n?n[1]:t,r=e.name||"";return r&&o.match(/function \(/)?"function "+r+o.substr(9):o}function l(e){var t=(0,o.kJ)(e)?e.slice(-1)[0]:e;return t&&t.toString()||"undefined"}var _=r.i.isRejectionPromise,c=(0,a.uj)([[o.o8,(0,a.P0)("undefined")],[o.Ft,(0,a.P0)("null")],[o.tI,(0,a.P0)("[Promise]")],[_,function(e){return e._transitionRejection.toString()}],[function(e){return(0,o.Kn)(e)&&!(0,o.kJ)(e)&&e.constructor!==Object&&(0,o.mf)(e.toString)},function(e){return e.toString()}],[o.Qh,m],[(0,a.P0)(!0),s.yR]]);function h(e){var t=[];function n(e){if((0,o.Kn)(e)){if(-1!==t.indexOf(e))return"[circular ref]";t.push(e)}return c(e)}return(0,o.o8)(e)?n(e):JSON.stringify(e,(function(e,t){return n(t)})).replace(/\\"/g,'"')}var f=function(e){return function(t){if(!t)return["",""];var n=t.indexOf(e);return-1===n?[t,""]:[t.substr(0,n),t.substr(n+1)]}},p=function(e){return e.replace(/\/[^/]*$/,"")},M=f("#"),y=f("?"),L=f("="),Y=function(e){return e?e.replace(/^#/,""):""};function g(e){var t=new RegExp("("+e+")","g");return function(e){return e.split(t).filter(s.yR)}}function v(e,t){return(0,o.HD)((0,s.Gb)(e))&&(0,o.HD)(t)?e.slice(0,-1).concat((0,s.Gb)(e)+t):(0,s.Ez)(e,t)}},"./node_modules/@uirouter/core/lib-esm/common/trace.js":(e,t,n)=>{"use strict";n.d(t,{g4:()=>c});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js");function d(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e.creationContext.name||"(root)":"(none)";return"[ui-view#"+e.id+" "+e.$type+":"+e.fqn+" ("+e.name+"@"+t+")]"}function u(e){return(0,s.hj)(e)?o[e]:o[o[e]]}!function(e){e[e.RESOLVE=0]="RESOLVE",e[e.TRANSITION=1]="TRANSITION",e[e.HOOK=2]="HOOK",e[e.UIVIEW=3]="UIVIEW",e[e.VIEWCONFIG=4]="VIEWCONFIG"}(o||(o={}));var m=(0,r.Qc)("$id"),l=(0,r.Qc)("router.$id"),_=function(e){return"Transition #"+m(e)+"-"+l(e)},c=new(function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,t){var n=this;t.length||(t=Object.keys(o).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})).map((function(e){return o[e]}))),t.map(u).forEach((function(t){return n._enabled[t]=e}))},e.prototype.enable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!0,e)},e.prototype.disable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!1,e)},e.prototype.enabled=function(e){return!!this._enabled[u(e)]},e.prototype.traceTransitionStart=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Started  -> "+(0,a.Pz)(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Ignored  <> "+(0,a.Pz)(e))},e.prototype.traceHookInvocation=function(e,t,n){if(this.enabled(o.HOOK)){var s=(0,r.Qc)("traceData.hookType")(n)||"internal",d=(0,r.Qc)("traceData.context.state.name")(n)||(0,r.Qc)("traceData.context")(n)||"unknown",u=(0,a.XF)(e.registeredHook.callback);i.L.log(_(t)+":   Hook -> "+s+" context: "+d+", "+(0,a.BS)(200,u))}},e.prototype.traceHookResult=function(e,t,n){this.enabled(o.HOOK)&&i.L.log(_(t)+":   <- Hook returned: "+(0,a.BS)(200,(0,a.Pz)(e)))},e.prototype.traceResolvePath=function(e,t,n){this.enabled(o.RESOLVE)&&i.L.log(_(n)+":         Resolving "+e+" ("+t+")")},e.prototype.traceResolvableResolved=function(e,t){this.enabled(o.RESOLVE)&&i.L.log(_(t)+":               <- Resolved  "+e+" to: "+(0,a.BS)(200,(0,a.Pz)(e.data)))},e.prototype.traceError=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Rejected "+(0,a.Pz)(t)+", reason: "+e)},e.prototype.traceSuccess=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Success  "+(0,a.Pz)(t)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,t,n){void 0===n&&(n=""),this.enabled(o.UIVIEW)&&i.L.log("ui-view: "+(0,a.NE)(30,e)+" "+d(t)+n)},e.prototype.traceUIViewConfigUpdated=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+t+"'")},e.prototype.traceUIViewFill=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+(0,a.BS)(200,t))},e.prototype.traceViewSync=function(e){if(this.enabled(o.VIEWCONFIG)){var t="uiview component fqn",n=e.map((function(e){var n,o=e.uiView,r=e.viewConfig,s=o&&o.fqn,a=r&&r.viewDecl.$context.name+": ("+r.viewDecl.$name+")";return(n={})[t]=s,n["view config state (view name)"]=a,n})).sort((function(e,n){return(e[t]||"").localeCompare(n[t]||"")}));i.L.table(n)}},e.prototype.traceViewServiceEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+function(e){var t=e.viewDecl,n=t.$context.name||"(root)";return"[View#"+e.$id+" from '"+n+"' state]: target ui-view: '"+t.$uiViewName+"@"+t.$uiViewContextAnchor+"'"}(t))},e.prototype.traceViewServiceUIViewEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+d(t))},e}())},"./node_modules/@uirouter/core/lib-esm/globals.js":(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/stateParams.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/queue.js"),s=function(){function e(){this.params=new o.i,this.lastStartedTransitionId=-1,this.transitionHistory=new r.c([],1),this.successfulTransitions=new r.c([],1)}return e.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},e}()},"./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js":(e,t,n)=>{"use strict";n.d(t,{v:()=>s,A:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),r=function(e){var t=e.router,n=e.entering().filter((function(e){return!!e.$$state().lazyLoad})).map((function(t){return a(e,t)}));return o.u.$q.all(n).then((function(){if("url"!==e.originalTransition().options().source){var n=e.targetState();return t.stateService.target(n.identifier(),n.params(),n.options())}var o=t.urlService,r=o.match(o.parts()),s=r&&r.rule;if(s&&"STATE"===s.type){var a=s.state,i=r.match;return t.stateService.target(a,i,e.options())}t.urlService.sync()}))},s=function(e){return e.onBefore({entering:function(e){return!!e.lazyLoad}},r)};function a(e,t){var n=t.$$state().lazyLoad,r=n._promise;return r||(r=n._promise=o.u.$q.when(n(e,t)).then((function(t){return t&&Array.isArray(t.states)&&t.states.forEach((function(t){return e.router.stateRegistry.register(t)})),t})).then((function(e){return delete t.lazyLoad,delete t.$$state().lazyLoad,delete n._promise,e}),(function(e){return delete n._promise,o.u.$q.reject(e)}))),r}},"./node_modules/@uirouter/core/lib-esm/interface.js":(e,t,n)=>{},"./node_modules/@uirouter/core/lib-esm/params/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/params/param.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>o,d:()=>m});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=Object.prototype.hasOwnProperty;!function(e){e[e.PATH=0]="PATH",e[e.SEARCH=1]="SEARCH",e[e.CONFIG=2]="CONFIG"}(o||(o={}));var m=function(){function e(e,t,n,i,m){var l=function(e,t,n){var s=!1===n.reloadOnSearch&&t===o.SEARCH||void 0,i=(0,r.sE)([n.dynamic,s],a.$K),d=(0,a.$K)(i)?{dynamic:i}:{},m=function(e){function t(){return e.value}e=function(e){return 0===["value","type","squash","array","dynamic"].filter(u.bind(e||{})).length}(e)?{value:e}:e,t.__cacheable=!0;var n=(0,a.Qh)(e.value)?e.value:t;return(0,r.l7)(e,{$$fn:n})}(n&&n.params&&n.params[e]);return(0,r.l7)(d,m)}(e,n,m);t=function(e,t,n,r,s){if(e.type&&t&&"string"!==t.name)throw new Error("Param '"+r+"' has two type configurations.");if(e.type&&t&&"string"===t.name&&s.type(e.type))return s.type(e.type);if(t)return t;if(!e.type){var a=n===o.CONFIG?"any":n===o.PATH?"path":n===o.SEARCH?"query":"string";return s.type(a)}return e.type instanceof d._?e.type:s.type(e.type)}(l,t,n,e,i.paramTypes);var _,c,h=(_={array:n===o.SEARCH&&"auto"},c=e.match(/\[\]$/)?{array:!0}:{},(0,r.l7)(_,c,l).array);t=h?t.$asArray(h,n===o.SEARCH):t;var f=void 0!==l.value||n===o.SEARCH,p=(0,a.$K)(l.dynamic)?!!l.dynamic:!!t.dynamic,M=(0,a.$K)(l.raw)?!!l.raw:!!t.raw,y=function(e,t,n){var o=e.squash;if(!t||!1===o)return!1;if(!(0,a.$K)(o)||null==o)return n;if(!0===o||(0,a.HD)(o))return o;throw new Error("Invalid squash policy: '"+o+"'. Valid policies: false, true, or arbitrary string")}(l,f,i.defaultSquashPolicy()),L=function(e,t,n,o){var i=[{from:"",to:n||t?void 0:""},{from:null,to:n||t?void 0:""}],d=(0,a.kJ)(e.replace)?e.replace:[];(0,a.HD)(o)&&d.push({from:o,to:void 0});var u=(0,r.UI)(d,(0,s.vg)("from"));return(0,r.hX)(i,(function(e){return-1===u.indexOf(e.from)})).concat(d)}(l,h,f,y),Y=(0,a.$K)(l.inherit)?!!l.inherit:!!t.inherit;(0,r.l7)(this,{id:e,type:t,location:n,isOptional:f,dynamic:p,raw:M,squash:y,replace:L,inherit:Y,array:h,config:l})}return e.values=function(e,t){void 0===t&&(t={});for(var n={},o=0,r=e;o<r.length;o++){var s=r[o];n[s.id]=s.value(t[s.id])}return n},e.changed=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e.filter((function(e){return!e.type.equals(t[e.id],n[e.id])}))},e.equals=function(t,n,o){return void 0===n&&(n={}),void 0===o&&(o={}),0===e.changed(t,n,o).length},e.validates=function(e,t){return void 0===t&&(t={}),e.map((function(e){return e.validates(t[e.id])})).reduce(r.XC,!0)},e.prototype.isDefaultValue=function(e){return this.isOptional&&this.type.equals(this.value(),e)},e.prototype.value=function(e){var t=this;return e=function(e){for(var n=0,o=t.replace;n<o.length;n++){var r=o[n];if(r.from===e)return r.to}return e}(e),(0,a.o8)(e)?function(){if(t._defaultValueCache)return t._defaultValueCache.defaultValue;if(!i.u.$injector)throw new Error("Injectable functions cannot be called at configuration time");var e=i.u.$injector.invoke(t.config.$$fn);if(null!=e&&!t.type.is(e))throw new Error("Default value ("+e+") for parameter '"+t.id+"' is not an instance of ParamType ("+t.type.name+")");return t.config.$$fn.__cacheable&&(t._defaultValueCache={defaultValue:e}),e}():this.type.$normalize(e)},e.prototype.isSearch=function(){return this.location===o.SEARCH},e.prototype.validates=function(e){if(((0,a.o8)(e)||null===e)&&this.isOptional)return!0;var t=this.type.$normalize(e);if(!this.type.is(t))return!1;var n=this.type.encode(t);return!((0,a.HD)(n)&&!this.type.pattern.exec(n))},e.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},e}()},"./node_modules/@uirouter/core/lib-esm/params/paramType.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=function(){function e(e){this.pattern=/.*/,this.inherit=!0,(0,o.l7)(this,e)}return e.prototype.is=function(e,t){return!0},e.prototype.encode=function(e,t){return e},e.prototype.decode=function(e,t){return e},e.prototype.equals=function(e,t){return e==t},e.prototype.$subPattern=function(){var e=this.pattern.toString();return e.substr(1,e.length-2)},e.prototype.toString=function(){return"{ParamType:"+this.name+"}"},e.prototype.$normalize=function(e){return this.is(e)?e:this.decode(e)},e.prototype.$asArray=function(e,t){if(!e)return this;if("auto"===e&&!t)throw new Error("'auto' array mode is for query parameters only");return new a(this,e)},e}();function a(e,t){var n=this;function s(e){return(0,r.kJ)(e)?e:(0,r.$K)(e)?[e]:[]}function a(e,n){return function(a){if((0,r.kJ)(a)&&0===a.length)return a;var i=s(a),d=(0,o.UI)(i,e);return!0===n?0===(0,o.hX)(d,(function(e){return!e})).length:function(e){switch(e.length){case 0:return;case 1:return"auto"===t?e[0]:e;default:return e}}(d)}}function i(e){return function(t,n){var o=s(t),r=s(n);if(o.length!==r.length)return!1;for(var a=0;a<o.length;a++)if(!e(o[a],r[a]))return!1;return!0}}["encode","decode","equals","$normalize"].forEach((function(t){var o=e[t].bind(e),r="equals"===t?i:a;n[t]=r(o)})),(0,o.l7)(this,{dynamic:e.dynamic,name:e.name,pattern:e.pattern,inherit:e.inherit,raw:e.raw,is:a(e.is.bind(e),!0),$arrayMode:t})}},"./node_modules/@uirouter/core/lib-esm/params/paramTypes.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=function(){function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=(0,r.ei)(e.prototype,["hash","string","query","path","int","bool","date","json","any"]),this.types=(0,r.ED)((0,r.UI)(this.defaultTypes,(function(e,t){return new d._((0,r.l7)({name:t},e))})),{})}return e.prototype.dispose=function(){this.types={}},e.prototype.type=function(e,t,n){if(!(0,s.$K)(t))return this.types[e];if(this.types.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return this.types[e]=new d._((0,r.l7)({name:e},t)),n&&(this.typeQueue.push({name:e,def:n}),this.enqueue||this._flushTypeQueue()),this},e.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var e=this.typeQueue.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");(0,r.l7)(this.types[e.name],i.u.$injector.invoke(e.def))}},e}();o=function(e){var t=function(e){return null!=e?e.toString():e},n={encode:t,decode:t,is:(0,a.is)(String),pattern:/.*/,equals:function(e,t){return e==t}};return(0,r.l7)({},n,e)},(0,r.l7)(u.prototype,{string:o({}),path:o({pattern:/[^/]*/}),query:o({}),hash:o({inherit:!1}),int:o({decode:function(e){return parseInt(e,10)},is:function(e){return!(0,s.le)(e)&&this.decode(e.toString())===e},pattern:/-?\d+/}),bool:o({encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:(0,a.is)(Boolean),pattern:/0|1/}),date:o({encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):void 0},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):void 0},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return["getFullYear","getMonth","getDate"].reduce((function(n,o){return n&&e[o]()===t[o]()}),!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:o({encode:r.Qs,decode:r.xZ,is:(0,a.is)(Object),equals:r.fS,pattern:/[^/]*/}),any:o({encode:r.yR,decode:r.yR,is:function(){return!0},equals:r.fS})})},"./node_modules/@uirouter/core/lib-esm/params/stateParams.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e){void 0===e&&(e={}),(0,o.l7)(this,e)}return e.prototype.$inherit=function(e,t,n){var r,s=(0,o.mX)(t,n),a={},i=[];for(var d in s)if(s[d]&&s[d].params&&(r=Object.keys(s[d].params)).length)for(var u in r)i.indexOf(r[u])>=0||(i.push(r[u]),a[r[u]]=this[r[u]]);return(0,o.l7)({},a,e)},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathNode.js":(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/param.js"),a=function(){function e(t){if(t instanceof e){var n=t;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=(0,o.l7)({},n.paramValues),this.resolvables=n.resolvables.slice(),this.views=n.views&&n.views.slice()}else{var r=t;this.state=r,this.paramSchema=r.parameters({inherit:!1}),this.paramValues={},this.resolvables=r.resolvables.map((function(e){return e.clone()}))}}return e.prototype.clone=function(){return new e(this)},e.prototype.applyRawParams=function(e){return this.paramValues=this.paramSchema.reduce((function(t,n){return(0,o.bb)(t,[(r=n).id,r.value(e[r.id])]);var r}),{}),this},e.prototype.parameter=function(e){return(0,o.sE)(this.paramSchema,(0,r.OH)("id",e))},e.prototype.equals=function(e,t){var n=this.diff(e,t);return n&&0===n.length},e.prototype.diff=function(e,t){if(this.state!==e.state)return!1;var n=t?t(this):this.paramSchema;return s.d.changed(n,this.paramValues,e.paramValues)},e.clone=function(e){return e.clone()},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathUtils.js":(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),a=n("./node_modules/@uirouter/core/lib-esm/path/pathNode.js"),i=function(){function e(){}return e.makeTargetState=function(e,t){var n=(0,o.Gb)(t).state;return new s.F(e,n,t.map((0,r.vg)("paramValues")).reduce(o.LQ,{}),{})},e.buildPath=function(e){var t=e.params();return e.$state().path.map((function(e){return new a.V(e).applyRawParams(t)}))},e.buildToPath=function(t,n){var o=e.buildPath(n);return n.options().inherit?e.inheritParams(t,o,Object.keys(n.params())):o},e.applyViewConfigs=function(t,n,r){n.filter((function(e){return(0,o.d3)(r,e.state)})).forEach((function(r){var s=(0,o.VO)(r.state.views||{}),a=e.subPath(n,(function(e){return e===r})),i=s.map((function(e){return t.createViewConfig(a,e)}));r.views=i.reduce(o.M7,[])}))},e.inheritParams=function(e,t,n){void 0===n&&(n=[]);var s=e.map((function(e){return e.paramSchema})).reduce(o.M7,[]).filter((function(e){return!e.inherit})).map((0,r.vg)("id"));return t.map((function(t){var i=(0,o.l7)({},t&&t.paramValues),d=(0,o.ei)(i,n);i=(0,o.CE)(i,n);var u,m,l,_=(0,o.CE)((u=e,m=t.state,l=(0,o.sE)(u,(0,r.OH)("state",m)),(0,o.l7)({},l&&l.paramValues)||{}),s),c=(0,o.l7)(i,_,d);return new a.V(t.state).applyRawParams(c)}))},e.treeChanges=function(t,n,o){for(var r,s,a,i,d,u,m=Math.min(t.length,n.length),l=0;l<m&&t[l].state!==o&&(r=t[l],s=n[l],r.equals(s,e.nonDynamicParams));)l++;i=(a=t).slice(0,l),d=a.slice(l);var _=i.map((function(e,t){var o=e.clone();return o.paramValues=n[t].paramValues,o}));return u=n.slice(l),{from:a,to:_.concat(u),retained:i,retainedWithToParams:_,exiting:d,entering:u}},e.matching=function(e,t,n){var r=!1;return(0,o.ym)(e,t).reduce((function(e,t){var o=t[0],s=t[1];return(r=r||!o.equals(s,n))?e:e.concat(o)}),[])},e.equals=function(t,n,o){return t.length===n.length&&e.matching(t,n,o).length===t.length},e.subPath=function(e,t){var n=(0,o.sE)(e,t),r=e.indexOf(n);return-1===r?void 0:e.slice(0,r+1)},e.nonDynamicParams=function(e){return e.state.parameters({inherit:!1}).filter((function(e){return!e.dynamic}))},e.paramValues=function(e){return e.reduce((function(e,t){return(0,o.l7)(e,t.paramValues)}),{})},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/interface.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var o={when:{LAZY:"LAZY",EAGER:"EAGER"},async:{WAIT:"WAIT",NOWAIT:"NOWAIT"}}},"./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),d=function(){function e(t,n,s,a,d){if(this.resolved=!1,this.promise=void 0,t instanceof e)(0,o.l7)(this,t);else if((0,i.mf)(n)){if((0,i.le)(t))throw new Error("new Resolvable(): token argument is required");if(!(0,i.mf)(n))throw new Error("new Resolvable(): resolveFn argument must be a function");this.token=t,this.policy=a,this.resolveFn=n,this.deps=s||[],this.data=d,this.resolved=void 0!==d,this.promise=this.resolved?r.u.$q.when(this.data):void 0}else if((0,i.Kn)(t)&&t.token&&(t.hasOwnProperty("resolveFn")||t.hasOwnProperty("data"))){var u=t;return new e(u.token,u.resolveFn,u.deps,u.policy,u.data)}}return e.prototype.getPolicy=function(e){var t=this.policy||{},n=e&&e.resolvePolicy||{};return{when:t.when||n.when||"LAZY",async:t.async||n.async||"WAIT"}},e.prototype.resolve=function(e,t){var n=this,a=r.u.$q,d=e.findNode(this),u=d&&d.state,m=this.getPolicy(u).async,l=(0,i.mf)(m)?m:o.yR;return this.promise=a.when().then((function(){return a.all(e.getDependencies(n).map((function(n){return n.get(e,t)})))})).then((function(e){return n.resolveFn.apply(null,e)})).then(l).then((function(e){return n.data=e,n.resolved=!0,n.resolveFn=null,s.g4.traceResolvableResolved(n,t),n.data}))},e.prototype.get=function(e,t){return this.promise||this.resolve(e,t)},e.prototype.toString=function(){return"Resolvable(token: "+(0,a.Pz)(this.token)+", requires: ["+this.deps.map(a.Pz)+"])"},e.prototype.clone=function(){return new e(this)},e.fromData=function(t,n){return new e(t,(function(){return n}),null,null,n)},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/interface.js"),d=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),u=n("./node_modules/@uirouter/core/lib-esm/path/pathUtils.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),_=i.u.when,c=[_.EAGER,_.LAZY],h=[_.EAGER],f=function(){function e(e){this._path=e}return e.prototype.getTokens=function(){return this._path.reduce((function(e,t){return e.concat(t.resolvables.map((function(e){return e.token})))}),[]).reduce(o.v_,[])},e.prototype.getResolvable=function(e){var t=this._path.map((function(e){return e.resolvables})).reduce(o.M7,[]).filter((function(t){return t.token===e}));return(0,o.Gb)(t)},e.prototype.getPolicy=function(e){var t=this.findNode(e);return e.getPolicy(t.state)},e.prototype.subContext=function(t){return new e(u.C.subPath(this._path,(function(e){return e.state===t})))},e.prototype.addResolvables=function(e,t){var n=(0,o.sE)(this._path,(0,r.OH)("state",t)),s=e.map((function(e){return e.token}));n.resolvables=n.resolvables.filter((function(e){return-1===s.indexOf(e.token)})).concat(e)},e.prototype.resolvePath=function(e,t){var n=this;void 0===e&&(e="LAZY");var d=((0,o.d3)(c,e)?e:"LAZY")===i.u.when.EAGER?h:c;s.g4.traceResolvePath(this._path,e,t);var u=function(e,t){return function(r){return(0,o.d3)(e,n.getPolicy(r)[t])}},m=this._path.reduce((function(e,o){var s=o.resolvables.filter(u(d,"when")),a=s.filter(u(["NOWAIT"],"async")),i=s.filter((0,r.ff)(u(["NOWAIT"],"async"))),m=n.subContext(o.state),l=function(e){return e.get(m,t).then((function(t){return{token:e.token,value:t}}))};return a.forEach(l),e.concat(i.map(l))}),[]);return a.u.$q.all(m)},e.prototype.injector=function(){return this._injector||(this._injector=new p(this))},e.prototype.findNode=function(e){return(0,o.sE)(this._path,(function(t){return(0,o.d3)(t.resolvables,e)}))},e.prototype.getDependencies=function(e){var t=this,n=this.findNode(e),r=(u.C.subPath(this._path,(function(e){return e===n}))||this._path).reduce((function(e,t){return e.concat(t.resolvables)}),[]).filter((function(t){return t!==e}));return e.deps.map((function(e){var n=r.filter((function(t){return t.token===e}));if(n.length)return(0,o.Gb)(n);var s=t.injector().getNative(e);if((0,l.wV)(s))throw new Error("Could not find Dependency Injection token: "+(0,m.Pz)(e));return new d.X(e,(function(){return s}),[],s)}))},e}(),p=function(){function e(e){this.context=e,this.native=this.get("Native Injector")||a.u.$injector}return e.prototype.get=function(e){var t=this.context.getResolvable(e);if(t){if("NOWAIT"===this.context.getPolicy(t).async)return t.get(this.context);if(!t.resolved)throw new Error("Resolvable async .get() not complete:"+(0,m.Pz)(t.token));return t.data}return this.getNative(e)},e.prototype.getAsync=function(e){var t=this.context.getResolvable(e);return t?t.get(this.context):a.u.$q.when(this.native.get(e))},e.prototype.getNative=function(e){return this.native&&this.native.get(e)},e}()},"./node_modules/@uirouter/core/lib-esm/router.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRouter.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/transitionService.js"),a=n("./node_modules/@uirouter/core/lib-esm/view/view.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js"),d=n("./node_modules/@uirouter/core/lib-esm/state/stateService.js"),u=n("./node_modules/@uirouter/core/lib-esm/globals.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),_=n("./node_modules/@uirouter/core/lib-esm/url/urlService.js"),c=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),f=0,p=(0,h.HV)("LocationServices",["url","path","search","hash","onChange"]),M=(0,h.HV)("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),y=function(){function e(e,t){void 0===e&&(e=p),void 0===t&&(t=M),this.locationService=e,this.locationConfig=t,this.$id=f++,this._disposed=!1,this._disposables=[],this.trace=c.g4,this.viewService=new a.s(this),this.globals=new u.k,this.transitionService=new s.Z(this),this.urlMatcherFactory=new o.y(this),this.urlRouter=new r.g(this),this.urlService=new _.i(this),this.stateRegistry=new i.q(this),this.stateService=new d.b(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(e),this.disposable(t)}return e.prototype.disposable=function(e){this._disposables.push(e)},e.prototype.dispose=function(e){var t=this;e&&(0,l.mf)(e.dispose)?e.dispose(this):(this._disposed=!0,this._disposables.slice().forEach((function(e){try{"function"==typeof e.dispose&&e.dispose(t),(0,m.nA)(t._disposables,e)}catch(e){}})))},e.prototype.plugin=function(e,t){void 0===t&&(t={});var n=new e(this,t);if(!n.name)throw new Error("Required property `name` missing on plugin: "+n);return this._disposables.push(n),this._plugins[n.name]=n},e.prototype.getPlugin=function(e){return e?this._plugins[e]:(0,m.VO)(this._plugins)},e}()},"./node_modules/@uirouter/core/lib-esm/state/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>M});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js");function u(e){return e.name}function m(e){return e.self.$$state=function(){return e},e.self}function l(e){return e.parent&&e.parent.data&&(e.data=e.self.data=(0,o.ED)(e.parent.data,e.data)),e.data}var _=function(e,t){return function(n){var s=n.self;if(s&&s.url&&s.name&&s.name.match(/\.\*\*$/)){var a={};(0,o.JG)(s,a),a.url+="{remainder:any}",s=a}var i=n.parent,d=function(e){if(!(0,r.HD)(e))return!1;var t="^"===e.charAt(0);return{val:t?e.substring(1):e,root:t}}(s.url),u=d?e.compile(d.val,{state:s}):s.url;if(!u)return null;if(!e.isMatcher(u))throw new Error("Invalid url '"+u+"' in state '"+n+"'");return d&&d.root?u:(i&&i.navigable||t()).url.append(u)}},c=function(e){return function(t){return!e(t)&&t.url?t:t.parent?t.parent.navigable:null}};function h(e){return e.parent?e.parent.path.concat(e):[e]}function f(e){var t=e.parent?(0,o.l7)({},e.parent.includes):{};return t[e.name]=!0,t}function p(e){var t,n,u=function(e){return e.provide||e.token},m=(0,a.uj)([[(0,a.vg)("resolveFn"),function(e){return new i.X(u(e),e.resolveFn,e.deps,e.policy)}],[(0,a.vg)("useFactory"),function(e){return new i.X(u(e),e.useFactory,e.deps||e.dependencies,e.policy)}],[(0,a.vg)("useClass"),function(e){return new i.X(u(e),(function(){return new e.useClass}),[],e.policy)}],[(0,a.vg)("useValue"),function(e){return new i.X(u(e),(function(){return e.useValue}),[],e.policy,e.useValue)}],[(0,a.vg)("useExisting"),function(e){return new i.X(u(e),o.yR,[e.useExisting],e.policy)}]]),l=(0,a.uj)([[(0,a.zG)((0,a.vg)("val"),r.HD),function(e){return new i.X(e.token,o.yR,[e.val],e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.kJ),function(e){return new i.X(e.token,(0,o.Gb)(e.val),e.val.slice(0,-1),e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.mf),function(e){return new i.X(e.token,e.val,(t=e.val,n=d.u.$injector,t.$inject||n&&n.annotate(t,n.strictDi)||"deferred"),e.policy);var t,n}]]),_=(0,a.uj)([[(0,a.is)(i.X),function(e){return e}],[function(e){return!(!e.token||!e.resolveFn)},m],[function(e){return!(!e.provide&&!e.token||!(e.useValue||e.useFactory||e.useExisting||e.useClass))},m],[function(e){return!!(e&&e.val&&((0,r.HD)(e.val)||(0,r.kJ)(e.val)||(0,r.mf)(e.val)))},l],[(0,a.P0)(!0),function(e){throw new Error("Invalid resolve value: "+(0,s.Pz)(e))}]]),c=e.resolve;return((0,r.kJ)(c)?c:(t=c,n=e.resolvePolicy||{},Object.keys(t||{}).map((function(e){return{token:e,val:t[e],deps:void 0,policy:n[e]}})))).map(_)}var M=function(){function e(e,t){this.matcher=e;var n,r=this,s=function(){return e.find("")},i=function(e){return""===e.name};this.builders={name:[u],self:[m],parent:[function(t){return i(t)?null:e.find(r.parentName(t))||s()}],data:[l],url:[_(t,s)],navigable:[c(i)],params:[(n=t.paramFactory,function(e){var t=e.url&&e.url.parameters({inherit:!1})||[],r=(0,o.VO)((0,o.js)((0,o.CE)(e.params||{},t.map((0,a.vg)("id"))),(function(t,o){return n.fromConfig(o,null,e.self)})));return t.concat(r).map((function(e){return[e.id,e]})).reduce(o.bb,{})})],views:[],path:[h],includes:[f],resolvables:[p]}}return e.prototype.builder=function(e,t){var n=this.builders,o=n[e]||[];return(0,r.HD)(e)&&!(0,r.$K)(t)?o.length>1?o:o[0]:(0,r.HD)(e)&&(0,r.mf)(t)?(n[e]=o,n[e].push(t),function(){return n[e].splice(n[e].indexOf(t,1))&&null}):void 0},e.prototype.build=function(e){var t=this.matcher,n=this.builders,r=this.parentName(e);if(r&&!t.find(r,void 0,!1))return null;for(var s in n)if(n.hasOwnProperty(s)){var a=n[s].reduce((function(e,t){return function(n){return t(n,e)}}),o.ZT);e[s]=a(e)}return e},e.prototype.parentName=function(e){var t=e.name||"",n=t.split(".");if("**"===n.pop()&&n.pop(),n.length){if(e.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+t+")");return n.join(".")}return e.parent?(0,r.HD)(e.parent)?e.parent:e.parent.name:""},e.prototype.name=function(e){var t=e.name;if(-1!==t.indexOf(".")||!e.parent)return t;var n=(0,r.HD)(e.parent)?e.parent:e.parent.name;return n?n+"."+t:t},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js"),a=function(){function e(e){this._states=e}return e.prototype.isRelative=function(e){return 0===(e=e||"").indexOf(".")||0===e.indexOf("^")},e.prototype.find=function(e,t,n){if(void 0===n&&(n=!0),e||""===e){var a=(0,o.HD)(e),i=a?e:e.name;this.isRelative(i)&&(i=this.resolvePath(i,t));var d=this._states[i];if(d&&(a||!(a||d!==e&&d.self!==e)))return d;if(a&&n){var u=(0,r.VO)(this._states).filter((function(e){return e.__stateObjectCache.nameGlob&&e.__stateObjectCache.nameGlob.matches(i)}));return u.length>1&&s.L.error("stateMatcher.find: Found multiple matches for "+i+" using glob: ",u.map((function(e){return e.name}))),u[0]}}},e.prototype.resolvePath=function(e,t){if(!t)throw new Error("No reference point given for path '"+e+"'");for(var n=this.find(t),o=e.split("."),r=o.length,s=0,a=n;s<r;s++)if(""!==o[s]||0!==s){if("^"!==o[s])break;if(!a.parent)throw new Error("Path '"+e+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var i=o.slice(s).join(".");return a.name+(a.name&&i?".":"")+i},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateObject.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/glob.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=function(){function e(t){return e.create(t||{})}return e.create=function(t){t=e.isStateClass(t)?new t:t;var n=(0,o.ED)((0,o.ED)(t,e.prototype));return t.$$state=function(){return n},n.self=t,n.__stateObjectCache={nameGlob:s.r.fromString(n.name)},n},e.prototype.is=function(e){return this===e||this.self===e||this.fqn()===e},e.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var e=this.parent.fqn();return e?e+"."+this.name:this.name},e.prototype.root=function(){return this.parent&&this.parent.root()||this},e.prototype.parameters=function(e){return((e=(0,o.ce)(e,{inherit:!0,matchingKeys:null})).inherit&&this.parent&&this.parent.parameters()||[]).concat((0,o.VO)(this.params)).filter((function(t){return!e.matchingKeys||e.matchingKeys.hasOwnProperty(t.id)}))},e.prototype.parameter=function(e,t){return void 0===t&&(t={}),this.url&&this.url.parameter(e,t)||(0,o.sE)((0,o.VO)(this.params),(0,r.OH)("id",e))||t.inherit&&this.parent&&this.parent.parameter(e)},e.prototype.toString=function(){return this.fqn()},e.isStateClass=function(e){return(0,a.mf)(e)&&!0===e.__uiRouterState},e.isStateDeclaration=function(e){return(0,a.mf)(e.$$state)},e.isState=function(e){return(0,a.Kn)(e.__stateObjectCache)},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),s=function(){function e(e,t,n,o){this.router=e,this.states=t,this.builder=n,this.listeners=o,this.queue=[]}return e.prototype.dispose=function(){this.queue=[]},e.prototype.register=function(e){var t=this.queue,n=r.l.create(e),s=n.name;if(!(0,o.HD)(s))throw new Error("State must have a valid name");if(this.states.hasOwnProperty(s)||(0,o.d3)(t.map((0,o.vg)("name")),s))throw new Error("State '"+s+"' is already defined");return t.push(n),this.flush(),n},e.prototype.flush=function(){for(var e=this,t=this,n=t.queue,o=t.states,r=t.builder,s=[],a=[],i={},d=function(t){return e.states.hasOwnProperty(t)&&e.states[t]},u=function(){s.length&&e.listeners.forEach((function(e){return e("registered",s.map((function(e){return e.self})))}))};n.length>0;){var m=n.shift(),l=m.name,_=r.build(m),c=a.indexOf(m);if(_){var h=d(l);if(h&&h.name===l)throw new Error("State '"+l+"' is already defined");var f=d(l+".**");f&&this.router.stateRegistry.deregister(f),o[l]=m,this.attachRoute(m),c>=0&&a.splice(c,1),s.push(m)}else{var p=i[l];if(i[l]=n.length,c>=0&&p===n.length)return n.push(m),u(),o;c<0&&a.push(m),n.push(m)}}return u(),o},e.prototype.attachRoute=function(e){if(!e.abstract&&e.url){var t=this.router.urlService.rules;t.rule(t.urlRuleFactory.create(e))}},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js":(e,t,n)=>{"use strict";n.d(t,{q:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=function(){function e(e){this.router=e,this.states={},this.listeners=[],this.matcher=new o.Q(this.states),this.builder=new r.t(this.matcher,e.urlMatcherFactory),this.stateQueue=new s.L(e,this.states,this.builder,this.listeners),this._registerRoot()}return e.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},e.prototype.dispose=function(){var e=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach((function(t){return e.get(t)&&e.deregister(t)}))},e.prototype.onStatesChanged=function(e){return this.listeners.push(e),function(){(0,a.nA)(this.listeners)(e)}.bind(this)},e.prototype.root=function(){return this._root},e.prototype.register=function(e){return this.stateQueue.register(e)},e.prototype._deregisterTree=function(e){var t=this,n=this.get().map((function(e){return e.$$state()})),o=function(e){var t=n.filter((function(t){return-1!==e.indexOf(t.parent)}));return 0===t.length?t:t.concat(o(t))},r=o([e]),s=[e].concat(r).reverse();return s.forEach((function(e){var n=t.router.urlService.rules;n.rules().filter((0,i.OH)("state",e)).forEach((function(e){return n.removeRule(e)})),delete t.states[e.name]})),s},e.prototype.deregister=function(e){var t=this.get(e);if(!t)throw new Error("Can't deregister state; not found: "+e);var n=this._deregisterTree(t.$$state());return this.listeners.forEach((function(e){return e("deregistered",n.map((function(e){return e.self})))})),n},e.prototype.get=function(e,t){var n=this;if(0===arguments.length)return Object.keys(this.states).map((function(e){return n.states[e].self}));var o=this.matcher.find(e,t);return o&&o.self||null},e.prototype.decorator=function(e,t){return this.builder.builder(e,t)},e}()},"./node_modules/@uirouter/core/lib-esm/state/targetState.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=function(){function e(e,t,n,o){this._stateRegistry=e,this._identifier=t,this._identifier=t,this._params=(0,s.l7)({},n||{}),this._options=(0,s.l7)({},o||{}),this._definition=e.matcher.find(t,this._options.relative)}return e.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},e.prototype.identifier=function(){return this._identifier},e.prototype.params=function(){return this._params},e.prototype.$state=function(){return this._definition},e.prototype.state=function(){return this._definition&&this._definition.self},e.prototype.options=function(){return this._options},e.prototype.exists=function(){return!(!this._definition||!this._definition.self)},e.prototype.valid=function(){return!this.error()},e.prototype.error=function(){var e=this.options().relative;if(!this._definition&&e){var t=e.name?e.name:e;return"Could not resolve '"+this.name()+"' from state '"+t+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},e.prototype.toString=function(){return"'"+this.name()+"'"+(0,r.Pz)(this.params())},e.prototype.withState=function(t){return new e(this._stateRegistry,t,this._params,this._options)},e.prototype.withParams=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._params,t);return new e(this._stateRegistry,this._identifier,o,this._options)},e.prototype.withOptions=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._options,t);return new e(this._stateRegistry,this._identifier,this._params,o)},e.isDef=function(e){return e&&e.state&&((0,o.HD)(e.state)||(0,o.Kn)(e.state)&&(0,o.HD)(e.state.name))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),a=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),i=function(){function e(e){this.transition=e}return e.prototype.buildHooksForPhase=function(e){var t=this;return this.transition.router.transitionService._pluginapi._getEvents(e).map((function(e){return t.buildHooks(e)})).reduce(o.M7,[]).filter(o.yR)},e.prototype.buildHooks=function(e){var t=this.transition,n=t.treeChanges(),r=this.getMatchingHooks(e,n,t);if(!r)return[];var i,d={transition:t,current:t.options().current};return r.map((function(r){return r.matches(n,t)[e.criteriaMatchPath.name].map((function(n){var i=(0,o.l7)({bind:r.bind,traceData:{hookType:e.name,context:n}},d),u=e.criteriaMatchPath.scope===s.c.STATE?n.state.self:null,m=new a.I(t,u,r,i);return{hook:r,node:n,transitionHook:m}}))})).reduce(o.M7,[]).sort((i=e.reverseSort,void 0===i&&(i=!1),function(e,t){var n=i?-1:1,o=(e.node.state.path.length-t.node.state.path.length)*n;return 0!==o?o:t.hook.priority-e.hook.priority})).map((function(e){return e.transitionHook}))},e.prototype.getMatchingHooks=function(e,t,n){var a=e.hookPhase===s.k.CREATE,i=this.transition.router.transitionService;return(a?[i]:[this.transition,i]).map((function(t){return t.getHooks(e.name)})).filter((0,o.sp)(r.kJ,"broken event named: "+e.name)).reduce(o.M7,[]).filter((function(e){return e.matches(t,n)}))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js":(e,t,n)=>{"use strict";n.d(t,{cN:()=>s,BU:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js");function s(e,t,n){var r=(0,o.HD)(t)?[t]:t;return!!((0,o.mf)(r)?r:function(e){for(var t=r,n=0;n<t.length;n++){var s=new o.rR(t[n]);if(s&&s.matches(e.name)||!s&&t[n]===e.name)return!0}return!1})(e,n)}var a=function(){function e(e,t,n,o,r,s){void 0===s&&(s={}),this.tranSvc=e,this.eventType=t,this.callback=n,this.matchCriteria=o,this.removeHookFromRegistry=r,this.invokeCount=0,this._deregistered=!1,this.priority=s.priority||0,this.bind=s.bind||null,this.invokeLimit=s.invokeLimit}return e.prototype._matchingNodes=function(e,t,n){if(!0===t)return e;var o=e.filter((function(e){return s(e.state,t,n)}));return o.length?o:null},e.prototype._getDefaultMatchCriteria=function(){return(0,o.js)(this.tranSvc._pluginapi._getPathTypes(),(function(){return!0}))},e.prototype._getMatchingNodes=function(e,t){var n=this,s=(0,o.l7)(this._getDefaultMatchCriteria(),this.matchCriteria);return(0,o.VO)(this.tranSvc._pluginapi._getPathTypes()).reduce((function(a,i){var d=i.scope===r.c.STATE,u=e[i.name]||[],m=d?u:[(0,o.Gb)(u)];return a[i.name]=n._matchingNodes(m,s[i.name],t),a}),{})},e.prototype.matches=function(e,t){var n=this._getMatchingNodes(e,t);return(0,o.VO)(n).every(o.yR)?n:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}();function i(e,t,n){var r=(e._registeredHooks=e._registeredHooks||{})[n.name]=[],s=(0,o.nA)(r);function i(e,o,i){void 0===i&&(i={});var d=new a(t,n,o,e,s,i);return r.push(d),d.deregister.bind(d)}return e[n.name]=i,i}},"./node_modules/@uirouter/core/lib-esm/transition/interface.js":(e,t,n)=>{"use strict";var o,r;n.d(t,{k:()=>o,c:()=>r}),function(e){e[e.CREATE=0]="CREATE",e[e.BEFORE=1]="BEFORE",e[e.RUN=2]="RUN",e[e.SUCCESS=3]="SUCCESS",e[e.ERROR=4]="ERROR"}(o||(o={})),function(e){e[e.TRANSITION=0]="TRANSITION",e[e.STATE=1]="STATE"}(r||(r={}))},"./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js":(e,t,n)=>{"use strict";n.d(t,{K:()=>o,i:()=>d});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");!function(e){e[e.SUPERSEDED=2]="SUPERSEDED",e[e.ABORTED=3]="ABORTED",e[e.INVALID=4]="INVALID",e[e.IGNORED=5]="IGNORED",e[e.ERROR=6]="ERROR"}(o||(o={}));var i=0,d=function(){function e(e,t,n){this.$id=i++,this.type=e,this.message=t,this.detail=n}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&(0,a.is)(e)(t._transitionRejection)},e.superseded=function(t,n){var r=new e(o.SUPERSEDED,"The transition has been superseded by a different transition",t);return n&&n.redirected&&(r.redirected=!0),r},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(t){return new e(o.INVALID,"This transition is invalid",t)},e.ignored=function(t){return new e(o.IGNORED,"The transition was ignored",t)},e.aborted=function(t){return new e(o.ABORTED,"The transition has been aborted",t)},e.errored=function(t){return new e(o.ERROR,"The transition errored",t)},e.normalize=function(t){return(0,a.is)(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var e,t=(e=this.detail)&&e.toString!==Object.prototype.toString?e.toString():(0,s.Pz)(e),n=this;return"Transition Rejection($id: "+n.$id+" type: "+n.type+", message: "+n.message+", detail: "+t+")"},e.prototype.toPromise=function(){return(0,r.l7)((0,r.jv)(this),{_transitionRejection:this})},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),r=function(e,t,n,r,s,a,i,d){void 0===s&&(s=!1),void 0===a&&(a=o.I.HANDLE_RESULT),void 0===i&&(i=o.I.REJECT_ERROR),void 0===d&&(d=!1),this.name=e,this.hookPhase=t,this.hookOrder=n,this.criteriaMatchPath=r,this.reverseSort=s,this.getResultHandler=a,this.getErrorHandler=i,this.synchronous=d}},"./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>c});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),u=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),m=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),l=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),_={current:r.ZT,transition:null,traceData:{},bind:null},c=function(){function e(e,t,n,s){var a=this;this.transition=e,this.stateContext=t,this.registeredHook=n,this.options=s,this.isSuperseded=function(){return a.type.hookPhase===o.k.RUN&&!a.options.transition.isActive()},this.options=(0,r.ce)(s,_),this.type=n.eventType}return e.chain=function(e,t){return e.reduce((function(e,t){return e.then((function(){return t.invokeHook()}))}),t||u.u.$q.when())},e.invokeHooks=function(t,n){for(var o=0;o<t.length;o++){var r=t[o].invokeHook();if((0,a.tI)(r)){var s=t.slice(o+1);return e.chain(s,r).then(n)}}return n()},e.runAllHooks=function(e){e.forEach((function(e){return e.invokeHook()}))},e.prototype.logError=function(e){this.transition.router.stateService.defaultErrorHandler()(e)},e.prototype.invokeHook=function(){var e=this,t=this.registeredHook;if(!t._deregistered){var n=this.getNotCurrentRejection();if(n)return n;var o=this.options;d.g4.traceHookInvocation(this,this.transition,o);var r=function(n){return t.eventType.getErrorHandler(e)(n)},s=function(n){return t.eventType.getResultHandler(e)(n)};try{var i=t.callback.call(o.bind,e.transition,e.stateContext);return!this.type.synchronous&&(0,a.tI)(i)?i.catch((function(e){return m.i.normalize(e).toPromise()})).then(s,r):s(i)}catch(e){return r(m.i.normalize(e))}finally{t.invokeLimit&&++t.invokeCount>=t.invokeLimit&&t.deregister()}}},e.prototype.handleHookResult=function(e){var t=this;return this.getNotCurrentRejection()||((0,a.tI)(e)?e.then((function(e){return t.handleHookResult(e)})):(d.g4.traceHookResult(e,this.transition,this.options),!1===e?m.i.aborted("Hook aborted transition").toPromise():(0,i.is)(l.F)(e)?m.i.redirected(e).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var e=this.transition.router;return e._disposed?m.i.aborted("UIRouter instance #"+e.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?m.i.aborted().toPromise():this.isSuperseded()?m.i.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var e=this.options,t=this.registeredHook,n=(0,i.Qc)("traceData.hookType")(e)||"internal",o=(0,i.Qc)("traceData.context.state.name")(e)||(0,i.Qc)("traceData.context")(e)||"unknown",r=(0,s.iC)(t.callback);return n+" context: "+o+", "+(0,s.BS)(200,r)},e.HANDLE_RESULT=function(e){return function(t){return e.handleHookResult(t)}},e.LOG_REJECTED_RESULT=function(e){return function(t){(0,a.tI)(t)&&t.catch((function(t){return e.logError(m.i.normalize(t))}))}},e.LOG_ERROR=function(e){return function(t){return e.logError(t)}},e.REJECT_ERROR=function(e){return function(e){return(0,r.jv)(e)}},e.THROW_ERROR=function(e){return function(e){throw e}},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionService.js":(e,t,n)=>{"use strict";n.d(t,{Z:()=>C,q:()=>W});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/transition.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js"),a=n("./node_modules/@uirouter/core/lib-esm/router.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/index.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/index.js");function u(e){e.addResolvable(i.XU.fromData(a.a,e.router),""),e.addResolvable(i.XU.fromData(r.u,e),""),e.addResolvable(i.XU.fromData("$transition$",e),""),e.addResolvable(i.XU.fromData("$stateParams",e.params()),""),e.entering().forEach((function(t){e.addResolvable(i.XU.fromData("$state$",t),t)}))}var m=["$transition$",r.u],l=(0,d.d3)(m),_=function(e){var t=(0,d.VO)(e.treeChanges()).reduce(d.M7,[]).reduce(d.v_,[]),n=function(e){return l(e.token)?i.XU.fromData(e.token,null):e};t.forEach((function(e){e.resolvables=e.resolvables.map(n)}))},c=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),f=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),p=function(e){var t=e.to().redirectTo;if(t){var n=e.router.stateService;return(0,c.mf)(t)?h.u.$q.when(t(e)).then(o):o(t)}function o(t){if(t)return t instanceof f.F?t:(0,c.HD)(t)?n.target(t,e.params(),e.options()):t.state||t.params?n.target(t.state||e.to(),t.params||e.params(),e.options()):void 0}};function M(e){return function(t,n){return(0,n.$$state()[e])(t,n)}}var y=M("onExit"),L=M("onRetain"),Y=M("onEnter"),g=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),v=n("./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js"),k=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),j=1e3,w=function(e){return new v.l(e.treeChanges().to).resolvePath("EAGER",e).then(g.ZT)},b=function(e,t){return new v.l(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY",e).then(g.ZT)},D=function(e){return new v.l(e.treeChanges().to).resolvePath("LAZY",e).then(g.ZT)},T=function(e){var t=h.u.$q,n=e.views("entering");if(n.length)return t.all(n.map((function(e){return t.when(e.load())}))).then(g.ZT)},S=function(e){var t=e.views("entering"),n=e.views("exiting");if(t.length||n.length){var o=e.router.viewService;n.forEach((function(e){return o.deactivateViewConfig(e)})),t.forEach((function(e){return o.activateViewConfig(e)})),o.sync()}},H=function(e){var t=e.router.globals,n=function(){t.transition===e&&(t.transition=null)};e.onSuccess({},(function(){t.successfulTransitions.enqueue(e),t.$current=e.$to(),t.current=t.$current.self,(0,g.JG)(e.params(),t.params)}),{priority:1e4}),e.promise.then(n,n)},x=function(e){var t=e.options(),n=e.router.stateService,o=e.router.urlRouter;if("url"!==t.source&&t.location&&n.$current.navigable){var r={replace:"replace"===t.location};o.push(n.$current.navigable.url,n.params,r)}o.update(!0)},E=n("./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js"),P=n("./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js"),O=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),$=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),A=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js");function F(e){var t=e._ignoredReason();if(t){$.g4.traceTransitionIgnored(e);var n=e.router.globals.transition;return"SameAsCurrent"===t&&n&&n.abort(),A.i.ignored().toPromise()}}function R(e){if(!e.valid())throw new Error(e.error().toString())}var W={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},C=function(){function e(e){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=e,this.$view=e.viewService,this._deregisterHookFns={},this._pluginapi=(0,g.WR)((0,k.P0)(this),{},(0,k.P0)(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),e.globals.successfulTransitions.onEvict(_)}return e.prototype.onCreate=function(e,t,n){},e.prototype.onBefore=function(e,t,n){},e.prototype.onStart=function(e,t,n){},e.prototype.onExit=function(e,t,n){},e.prototype.onRetain=function(e,t,n){},e.prototype.onEnter=function(e,t,n){},e.prototype.onFinish=function(e,t,n){},e.prototype.onSuccess=function(e,t,n){},e.prototype.onError=function(e,t,n){},e.prototype.dispose=function(e){(0,g.VO)(this._registeredHooks).forEach((function(e){return e.forEach((function(t){t._deregistered=!0,(0,g.nA)(e,t)}))}))},e.prototype.create=function(e,t){return new r.u(e,t,this._router)},e.prototype._defineCoreEvents=function(){var e=o.k,t=O.I,n=this._criteriaPaths,r=!1,s=!0;this._defineEvent("onCreate",e.CREATE,0,n.to,r,t.LOG_REJECTED_RESULT,t.THROW_ERROR,s),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s),this._defineEvent("onError",e.ERROR,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s)},e.prototype._defineCorePaths=function(){var e=o.c.STATE,t=o.c.TRANSITION;this._definePathType("to",t),this._definePathType("from",t),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(e,t,n,o,r,a,i,d){void 0===r&&(r=!1),void 0===a&&(a=O.I.HANDLE_RESULT),void 0===i&&(i=O.I.REJECT_ERROR),void 0===d&&(d=!1);var u=new P.t(e,t,n,o,r,a,i,d);this._eventTypes.push(u),(0,s.BU)(this,this,u)},e.prototype._getEvents=function(e){return((0,c.$K)(e)?this._eventTypes.filter((function(t){return t.hookPhase===e})):this._eventTypes.slice()).sort((function(e,t){var n=e.hookPhase-t.hookPhase;return 0===n?e.hookOrder-t.hookOrder:n}))},e.prototype._definePathType=function(e,t){this._criteriaPaths[e]={name:e,scope:t}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(e){return this._registeredHooks[e]},e.prototype._registerCoreTransitionHooks=function(){var e=this._deregisterHookFns;e.addCoreResolves=this.onCreate({},u),e.ignored=this.onBefore({},F,{priority:-9999}),e.invalid=function(e){return e.onBefore({},R,{priority:-1e4})}(this),e.redirectTo=function(e){return e.onStart({to:function(e){return!!e.redirectTo}},p)}(this),e.onExit=function(e){return e.onExit({exiting:function(e){return!!e.onExit}},y)}(this),e.onRetain=function(e){return e.onRetain({retained:function(e){return!!e.onRetain}},L)}(this),e.onEnter=function(e){return e.onEnter({entering:function(e){return!!e.onEnter}},Y)}(this),e.eagerResolve=function(e){return e.onStart({},w,{priority:j})}(this),e.lazyResolve=function(e){return e.onEnter({entering:(0,k.P0)(!0)},b,{priority:j})}(this),e.resolveAll=function(e){return e.onFinish({},D,{priority:j})}(this),e.loadViews=function(e){return e.onFinish({},T)}(this),e.activateViews=function(e){return e.onSuccess({},S)}(this),e.updateGlobals=function(e){return e.onCreate({},H)}(this),e.updateUrl=function(e){return e.onSuccess({},x,{priority:9999})}(this),e.lazyLoad=(0,E.v)(this)},e}()},"./node_modules/@uirouter/core/lib-esm/url/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/url/urlConfig.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=function(){function e(e){var t=this;this.router=e,this.paramTypes=new o.ParamTypes,this._decodeParams=!0,this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1,this.dispose=function(){return t.paramTypes.dispose()},this.baseHref=function(){return t.router.locationConfig.baseHref()},this.hashPrefix=function(e){return t.router.locationConfig.hashPrefix(e)},this.host=function(){return t.router.locationConfig.host()},this.html5Mode=function(){return t.router.locationConfig.html5Mode()},this.port=function(){return t.router.locationConfig.port()},this.protocol=function(){return t.router.locationConfig.protocol()}}return e.prototype.caseInsensitive=function(e){return this._isCaseInsensitive=(0,r.$K)(e)?e:this._isCaseInsensitive},e.prototype.defaultSquashPolicy=function(e){if((0,r.$K)(e)&&!0!==e&&!1!==e&&!(0,r.HD)(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=(0,r.$K)(e)?e:this._defaultSquashPolicy},e.prototype.strictMode=function(e){return this._isStrictMode=(0,r.$K)(e)?e:this._isStrictMode},e.prototype.type=function(e,t,n){var o=this.paramTypes.type(e,t,n);return(0,r.$K)(t)?this:o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js":(e,t,n)=>{"use strict";n.d(t,{y:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),a=function(){return(a=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(){function e(e){this.router=e}return e.prototype.fromConfig=function(e,t,n){return new s.Param(e,t,s.DefType.CONFIG,this.router.urlService.config,n)},e.prototype.fromPath=function(e,t,n){return new s.Param(e,t,s.DefType.PATH,this.router.urlService.config,n)},e.prototype.fromSearch=function(e,t,n){return new s.Param(e,t,s.DefType.SEARCH,this.router.urlService.config,n)},e}(),d=function(){function e(e){var t=this;this.router=e,this.paramFactory=new i(this.router),this.UrlMatcher=r.x,this.Param=s.Param,this.caseInsensitive=function(e){return t.router.urlService.config.caseInsensitive(e)},this.defaultSquashPolicy=function(e){return t.router.urlService.config.defaultSquashPolicy(e)},this.strictMode=function(e){return t.router.urlService.config.strictMode(e)},this.type=function(e,n,o){return t.router.urlService.config.type(e,n,o)||t}}return e.prototype.compile=function(e,t){var n=this.router.urlService.config,s=t&&!t.state&&t.params;t=s?a({state:{params:s}},t):t;var i={strict:n._isStrictMode,caseInsensitive:n._isCaseInsensitive,decodeParams:n._decodeParams};return new r.x(e,n.paramTypes,this.paramFactory,(0,o.l7)(i,t))},e.prototype.isMatcher=function(e){if(!(0,o.Kn)(e))return!1;var t=!0;return(0,o.Ed)(r.x.prototype,(function(n,r){(0,o.mf)(n)&&(t=t&&(0,o.$K)(e[r])&&(0,o.mf)(e[r]))})),t},e.prototype.$get=function(){var e=this.router.urlService.config;return e.paramTypes.enqueue=!1,e.paramTypes._flushTypeQueue(),this},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRouter.js":(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js"),s=function(){function e(e){var t=this;this.router=e,this.sync=function(e){return t.router.urlService.sync(e)},this.listen=function(e){return t.router.urlService.listen(e)},this.deferIntercept=function(e){return t.router.urlService.deferIntercept(e)},this.match=function(e){return t.router.urlService.match(e)},this.initial=function(e){return t.router.urlService.rules.initial(e)},this.otherwise=function(e){return t.router.urlService.rules.otherwise(e)},this.removeRule=function(e){return t.router.urlService.rules.removeRule(e)},this.rule=function(e){return t.router.urlService.rules.rule(e)},this.rules=function(){return t.router.urlService.rules.rules()},this.sort=function(e){return t.router.urlService.rules.sort(e)},this.when=function(e,n,o){return t.router.urlService.rules.when(e,n,o)},this.urlRuleFactory=new r.I(e)}return e.prototype.update=function(e){var t=this.router.locationService;e?this.location=t.url():t.url()!==this.location&&t.url(this.location,!0)},e.prototype.push=function(e,t,n){var o=n&&!!n.replace;this.router.urlService.url(e.format(t||{}),o)},e.prototype.href=function(e,t,n){var r=e.format(t);if(null==r)return null;n=n||{absolute:!1};var s=this.router.urlService.config,a=s.html5Mode();if(a||null===r||(r="#"+s.hashPrefix()+r),r=function(e,t,n,r){return"/"===r?e:t?(0,o.Lb)(r)+e:n?r.slice(1)+e:e}(r,a,n.absolute,s.baseHref()),!n.absolute||!r)return r;var i=!a&&r?"/":"",d=s.port(),u=80===d||443===d?"":":"+d;return[s.protocol(),"://",s.host(),u,i,r].join("")},Object.defineProperty(e.prototype,"interceptDeferred",{get:function(){return this.router.urlService.interceptDeferred},enumerable:!1,configurable:!0}),e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRule.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>d,n:()=>u});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),d=function(){function e(e){this.router=e}return e.prototype.compile=function(e){return this.router.urlMatcherFactory.compile(e)},e.prototype.create=function(e,t){var n=this,s=i.l.isState,d=i.l.isStateDeclaration,m=(0,a.uj)([[r.HD,function(e){return m(n.compile(e))}],[(0,a.is)(o.x),function(e){return n.fromUrlMatcher(e,t)}],[(0,a.or)(s,d),function(e){return n.fromState(e,n.router)}],[(0,a.is)(RegExp),function(e){return n.fromRegExp(e,t)}],[r.mf,function(e){return new u(e,t)}]]),l=m(e);if(!l)throw new Error("invalid 'what' in when()");return l},e.prototype.fromUrlMatcher=function(e,t){var n=t;(0,r.HD)(t)&&(t=this.router.urlMatcherFactory.compile(t)),(0,a.is)(o.x)(t)&&(n=function(e){return t.format(e)});var i={urlMatcher:e,matchPriority:function(t){var n=e.parameters().filter((function(e){return e.isOptional}));return n.length?n.filter((function(e){return t[e.id]})).length/n.length:1e-6},type:"URLMATCHER"};return(0,s.l7)(new u((function(t){var n=e.exec(t.path,t.search,t.hash);return e.validates(n)&&n}),n),i)},e.prototype.fromState=function(e,t){var n=i.l.isStateDeclaration(e)?e.$$state():e,o={state:n,type:"STATE"};return(0,s.l7)(this.fromUrlMatcher(n.url,(function(e){var o=t.stateService,r=t.globals;o.href(n,e)!==o.href(r.current,r.params)&&o.transitionTo(n,e,{inherit:!0,source:"url"})})),o)},e.prototype.fromRegExp=function(e,t){if(e.global||e.sticky)throw new Error("Rule RegExp must not be global or sticky");var n=(0,r.HD)(t)?function(e){return t.replace(/\$(\$|\d{1,2})/,(function(t,n){return e["$"===n?0:Number(n)]}))}:t,o={regexp:e,type:"REGEXP"};return(0,s.l7)(new u((function(t){return e.exec(t.path)}),n),o)},e.isUrlRule=function(e){return e&&["type","match","handler"].every((function(t){return(0,r.$K)(e[t])}))},e}(),u=function(e,t){var n=this;this.match=e,this.type="RAW",this.matchPriority=function(e){return 0-n.$id},this.handler=t||s.yR}},"./node_modules/@uirouter/core/lib-esm/url/urlRules.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),i=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js");function d(e){if(!((0,a.mf)(e)||(0,a.HD)(e)||(0,a.is)(r.TargetState)(e)||r.TargetState.isDef(e)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return(0,a.mf)(e)?e:(0,a.P0)(e)}o=function(e,t){var n=function(e,t){return(t.priority||0)-(e.priority||0)}(e,t);return 0!==n||0!==(n=function(e,t){var n={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(n[e.type]||0)-(n[t.type]||0)}(e,t))||0!==(n=function(e,t){return e.urlMatcher&&t.urlMatcher?s.x.compare(e.urlMatcher,t.urlMatcher):0}(e,t))?n:function(e,t){var n={STATE:!0,URLMATCHER:!0};return n[e.type]&&n[t.type]?0:(e.$id||0)-(t.$id||0)}(e,t)};var u=function(){function e(e){this.router=e,this._sortFn=o,this._rules=[],this._id=0,this.urlRuleFactory=new i.I(e)}return e.prototype.dispose=function(e){this._rules=[],delete this._otherwiseFn},e.prototype.initial=function(e){var t=d(e);this.rule(this.urlRuleFactory.create((function(e,t){return 0===t.globals.transitionHistory.size()&&!!/^\/?$/.exec(e.path)}),t))},e.prototype.otherwise=function(e){var t=d(e);this._otherwiseFn=this.urlRuleFactory.create((0,a.P0)(!0),t),this._sorted=!1},e.prototype.removeRule=function(e){(0,a.nA)(this._rules,e)},e.prototype.rule=function(e){var t=this;if(!i.I.isUrlRule(e))throw new Error("invalid rule");return e.$id=this._id++,e.priority=e.priority||0,this._rules.push(e),this._sorted=!1,function(){return t.removeRule(e)}},e.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},e.prototype.sort=function(e){for(var t=this.stableSort(this._rules,this._sortFn=e||this._sortFn),n=0,o=0;o<t.length;o++)t[o]._group=n,o<t.length-1&&0!==this._sortFn(t[o],t[o+1])&&n++;this._rules=t,this._sorted=!0},e.prototype.ensureSorted=function(){this._sorted||this.sort()},e.prototype.stableSort=function(e,t){var n=e.map((function(e,t){return{elem:e,idx:t}}));return n.sort((function(e,n){var o=t(e.elem,n.elem);return 0===o?e.idx-n.idx:o})),n.map((function(e){return e.elem}))},e.prototype.when=function(e,t,n){var o=this.urlRuleFactory.create(e,t);return(0,a.$K)(n&&n.priority)&&(o.priority=n.priority),this.rule(o),o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlService.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRules.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlConfig.js"),a=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),i=function(){function e(e){var t=this;this.router=e,this.interceptDeferred=!1,this.rules=new r.h(this.router),this.config=new s.F(this.router),this.url=function(e,n,o){return t.router.locationService.url(e,n,o)},this.path=function(){return t.router.locationService.path()},this.search=function(){return t.router.locationService.search()},this.hash=function(){return t.router.locationService.hash()},this.onChange=function(e){return t.router.locationService.onChange(e)}}return e.prototype.dispose=function(){this.listen(!1),this.rules.dispose()},e.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},e.prototype.sync=function(e){if(!e||!e.defaultPrevented){var t=this.router,n=t.urlService,r=t.stateService,s={path:n.path(),search:n.search(),hash:n.hash()},i=this.match(s);(0,o.uj)([[o.HD,function(e){return n.url(e,!0)}],[a.TargetState.isDef,function(e){return r.go(e.state,e.params,e.options)}],[(0,o.is)(a.TargetState),function(e){return r.go(e.state(),e.params(),e.options())}]])(i&&i.rule.handler(i.match,s,this.router))}},e.prototype.listen=function(e){var t=this;if(!1!==e)return this._stopListeningFn=this._stopListeningFn||this.router.urlService.onChange((function(e){return t.sync(e)}));this._stopListeningFn&&this._stopListeningFn(),delete this._stopListeningFn},e.prototype.deferIntercept=function(e){void 0===e&&(e=!0),this.interceptDeferred=e},e.prototype.match=function(e){e=(0,o.l7)({path:"",search:{},hash:""},e);for(var t,n,r,s=this.rules.rules(),a=0;a<s.length&&(!t||t.rule._group===s[a]._group);a++){var i=(void 0,(r=(n=s[a]).match(e,this.router))&&{match:r,rule:n,weight:n.matchPriority(r)});t=!t||i&&i.weight>t.weight?i:t}return t},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/vanilla/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js":(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),s=function(){function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],this._listener=function(e){return n._listeners.forEach((function(t){return t(e)}))},this.hash=function(){return(0,r.en)(n._get()).hash},this.path=function(){return(0,r.en)(n._get()).path},this.search=function(){return(0,r.Qf)((0,r.en)(n._get()).search)},this._location=o.Jz.location,this._history=o.Jz.history}return e.prototype.url=function(e,t){return void 0===t&&(t=!0),(0,o.$K)(e)&&e!==this._get()&&(this._set(null,null,e,t),this.fireAfterUpdate&&this._listeners.forEach((function(t){return t({url:e})}))),(0,r.Q2)(this)},e.prototype.onChange=function(e){var t=this;return this._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}},e.prototype.dispose=function(e){(0,o.Wk)(this._listeners)},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=function(){function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0,this._hashPrefix=""}return e.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},e.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},e.prototype.host=function(){return location.hostname},e.prototype.html5Mode=function(){return this._isHtml5},e.prototype.hashPrefix=function(e){return(0,o.$K)(e)?this._hashPrefix=e:this._hashPrefix},e.prototype.baseHref=function(e){return(0,o.$K)(e)&&(this._baseHref=e),(0,o.o8)(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},e.prototype.getBaseHref=function(){var e=document.getElementsByTagName("base")[0];return e&&e.href?e.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):this._isHtml5?"/":location.pathname||"/"},e.prototype.dispose=function(){},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js":(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!1)||this;return r.Jz.addEventListener("hashchange",n._listener,!1),n}return a(t,e),t.prototype._get=function(){return(0,r.Ld)(this._location.hash)},t.prototype._set=function(e,t,n,o){this._location.hash=n},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),r.Jz.removeEventListener("hashchange",this._listener)},t}(s.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/injector.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=function(){var e=this;this.dispose=r.ZT,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return e._port},this.protocol=function(){return e._protocol},this.host=function(){return e._host},this.baseHref=function(){return e._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(t){return(0,o.$K)(t)?e._hashPrefix=t:e._hashPrefix}}},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),a=function(e){function t(t){return e.call(this,t,!0)||this}return s(t,e),t.prototype._get=function(){return this._url},t.prototype._set=function(e,t,n,o){this._url=n},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),a=n("./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js"),i=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js"),d=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js");n("./node_modules/@uirouter/core/lib-esm/vanilla/injector.js"),n("./node_modules/@uirouter/core/lib-esm/vanilla/q.js"),n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),(0,s._D)("vanilla.hashBangLocation",!1,r.R,o.u),(0,s._D)("vanilla.pushStateLocation",!0,a.h,o.u),(0,s._D)("vanilla.memoryLocation",!1,i.I,d.W)},"./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!0)||this;return n._config=t.urlService.config,s.Jz.addEventListener("popstate",n._listener,!1),n}return a(t,e),t.prototype._getBasePrefix=function(){return(0,s.Lb)(this._config.baseHref())},t.prototype._get=function(){var e=this._location,t=e.pathname,n=e.hash,o=e.search;o=(0,s.C7)(o)[1],n=(0,s.cW)(n)[1];var r=this._getBasePrefix(),a=t===this._config.baseHref(),i=t.substr(0,r.length)===r;return(t=a?"/":i?t.substring(r.length):t)+(o?"?"+o:"")+(n?"#"+n:"")},t.prototype._set=function(e,t,n,o){var r=this._getBasePrefix(),s=n&&"/"!==n[0]?"/":"",a=""===n||"/"===n?this._config.baseHref():r+s+n;o?this._history.replaceState(e,t,a):this._history.pushState(e,t,a)},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),s.Jz.removeEventListener("popstate",this._listener)},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/q.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/utils.js":(e,t,n)=>{"use strict";n.d(t,{Qf:()=>s,en:()=>a,Q2:()=>i,_D:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=function(e,t){var n=t[0],r=t[1];return e.hasOwnProperty(n)?(0,o.kJ)(e[n])?e[n].push(r):e[n]=[e[n],r]:e[n]=r,e},s=function(e){return e.split("&").filter(o.yR).map(o.Fb).reduce(r,{})};function a(e){var t=function(e){return e||""},n=(0,o.cW)(e).map(t),r=n[0],s=n[1],a=(0,o.C7)(r).map(t);return{path:a[0],search:a[1],hash:s,url:e}}var i=function(e){var t=e.path(),n=e.search(),r=e.hash(),s=Object.keys(n).map((function(e){var t=n[e];return((0,o.kJ)(t)?t:[t]).map((function(t){return e+"="+t}))})).reduce(o.M7,[]).join("&");return t+(s?"?"+s:"")+(r?"#"+r:"")};function d(e,t,n,o){return function(r){var s=r.locationService=new n(r),a=r.locationConfig=new o(r,t);return{name:e,service:s,configuration:a,dispose:function(e){e.dispose(s),e.dispose(a)}}}}},"./node_modules/@uirouter/core/lib-esm/view/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/view/view.js":(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),i=function(){function e(e){var t=this;this.router=e,this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIView:function(e){return(0,o.sE)(t._uiViews,(function(n){return t.router.$id+"."+n.id===e}))},_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}}}}return e.normalizeUIViewTarget=function(e,t){void 0===t&&(t="");var n=t.split("@"),o=n[0]||"$default",r=(0,s.HD)(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(o);if(a&&(r=a[1],o=a[2]),"!"===o.charAt(0)&&(o=o.substr(1),r=""),/^(\^(?:\.\^)*)$/.exec(r)){var i=r.split(".").reduce((function(e,t){return e.parent}),e);r=i.name}else"."===r&&(r=e.name);return{uiViewName:o,uiViewContextAnchor:r}},e.prototype._rootViewContext=function(e){return this._rootContext=e||this._rootContext},e.prototype._viewConfigFactory=function(e,t){this._viewConfigFactories[e]=t},e.prototype.createViewConfig=function(e,t){var n=this._viewConfigFactories[t.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+t.$type);var o=n(e,t);return(0,s.kJ)(o)?o:[o]},e.prototype.deactivateViewConfig=function(e){a.g4.traceViewServiceEvent("<- Removing",e),(0,o.nA)(this._viewConfigs,e)},e.prototype.activateViewConfig=function(e){a.g4.traceViewServiceEvent("-> Registering",e),this._viewConfigs.push(e)},e.prototype.sync=function(){var t=this,n=this._uiViews.map((function(e){return[e.fqn,e]})).reduce(o.bb,{});function s(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.parent;return n}var i=(0,r.WA)((function(e,t,n,o){return t*(e(n)-e(o))})),d=this._uiViews.sort(i((function(e){var t=function(e){return e&&e.parent?t(e.parent)+1:1};return 1e4*e.fqn.split(".").length+t(e.creationContext)}),1)).map((function(o){var r=t._viewConfigs.filter(e.matches(n,o));return r.length>1&&r.sort(i(s,-1)),{uiView:o,viewConfig:r[0]}})),u=d.map((function(e){return e.viewConfig})),m=this._viewConfigs.filter((function(e){return!(0,o.d3)(u,e)})).map((function(e){return{uiView:void 0,viewConfig:e}}));d.forEach((function(e){-1!==t._uiViews.indexOf(e.uiView)&&e.uiView.configUpdated(e.viewConfig)}));var l=d.concat(m);this._listeners.forEach((function(e){return e(l)})),a.g4.traceViewSync(l)},e.prototype.registerUIView=function(e){a.g4.traceViewServiceUIViewEvent("-> Registering",e);var t=this._uiViews;return t.filter((function(t){return t.fqn===e.fqn&&t.$type===e.$type})).length&&a.g4.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",e),t.push(e),this.sync(),function(){-1!==t.indexOf(e)?(a.g4.traceViewServiceUIViewEvent("<- Deregistering",e),(0,o.nA)(t)(e)):a.g4.traceViewServiceUIViewEvent("Tried removing non-registered uiView",e)}},e.prototype.available=function(){return this._uiViews.map((0,r.vg)("fqn"))},e.prototype.active=function(){return this._uiViews.filter((0,r.vg)("$config")).map((0,r.vg)("name"))},e.matches=function(e,t){return function(n){if(t.$type!==n.viewDecl.$type)return!1;var r=n.viewDecl,s=r.$uiViewName.split("."),a=t.fqn.split(".");if(!(0,o.fS)(s,a.slice(0-s.length)))return!1;var i=1-s.length||void 0,d=a.slice(0,i).join("."),u=e[d].creationContext;return r.$uiViewContextAnchor===(u&&u.name)}},e}()},"./node_modules/angular-aria/angular-aria.js":()=>{!function(e,t){"use strict";var n="ngAriaDisable",o=t.module("ngAria",["ng"]).info({angularVersion:"1.8.2"}).provider("$aria",(function(){var e={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeydown:!0,bindRoleForClick:!0};function o(t,o,r,a){return function(i,d,u){if(!u.hasOwnProperty(n)){var m=u.$normalize(o);!e[m]||s(d,r)||u[m]||i.$watch(u[t],(function(e){e=a?!e:!!e,d.attr(o,e)}))}}}this.config=function(n){e=t.extend(e,n)},this.$get=function(){return{config:function(t){return e[t]},$$watchExpr:o}}})),r=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],s=function(e,t){if(-1!==t.indexOf(e[0].nodeName))return!0};o.directive("ngShow",["$aria",function(e){return e.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(e){return e.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(e){return e.$$watchExpr("ngValue","aria-checked",r,!1)}]).directive("ngChecked",["$aria",function(e){return e.$$watchExpr("ngChecked","aria-checked",r,!1)}]).directive("ngReadonly",["$aria",function(e){return e.$$watchExpr("ngReadonly","aria-readonly",r,!1)}]).directive("ngRequired",["$aria",function(e){return e.$$watchExpr("ngRequired","aria-required",r,!1)}]).directive("ngModel",["$aria",function(e){function t(t,n,o,a){return e.config(n)&&!o.attr(t)&&(a||!s(o,r))&&("hidden"!==o.attr("type")||"INPUT"!==o[0].nodeName)}function o(e,t){return!t.attr("role")&&t.attr("type")===e&&!s(t,r)}return{restrict:"A",require:"ngModel",priority:200,compile:function(r,s){if(!s.hasOwnProperty(n)){var a=function(e,t){var n=e.type,o=e.role;return"checkbox"===(n||o)||"menuitemcheckbox"===o?"checkbox":"radio"===(n||o)||"menuitemradio"===o?"radio":"range"===n||"progressbar"===o||"slider"===o?"range":""}(s);return{post:function(n,r,s,i){var d=t("tabindex","tabindex",r,!1);function u(){return i.$modelValue}switch(a){case"radio":case"checkbox":o(a,r)&&r.attr("role",a),t("aria-checked","ariaChecked",r,!1)&&n.$watch(u,"radio"===a?function(e){var t=s.value==i.$viewValue;r.attr("aria-checked",t)}:function(){r.attr("aria-checked",!i.$isEmpty(i.$viewValue))}),d&&r.attr("tabindex",0);break;case"range":if(o(a,r)&&r.attr("role","slider"),e.config("ariaValue")){var m=!r.attr("aria-valuemin")&&(s.hasOwnProperty("min")||s.hasOwnProperty("ngMin")),l=!r.attr("aria-valuemax")&&(s.hasOwnProperty("max")||s.hasOwnProperty("ngMax")),_=!r.attr("aria-valuenow");m&&s.$observe("min",(function(e){r.attr("aria-valuemin",e)})),l&&s.$observe("max",(function(e){r.attr("aria-valuemax",e)})),_&&n.$watch(u,(function(e){r.attr("aria-valuenow",e)}))}d&&r.attr("tabindex",0)}!s.hasOwnProperty("ngRequired")&&i.$validators.required&&t("aria-required","ariaRequired",r,!1)&&s.$observe("required",(function(){r.attr("aria-required",!!s.required)})),t("aria-invalid","ariaInvalid",r,!0)&&n.$watch((function(){return i.$invalid}),(function(e){r.attr("aria-invalid",!!e)}))}}}}}}]).directive("ngDisabled",["$aria",function(e){return e.$$watchExpr("ngDisabled","aria-disabled",r,!1)}]).directive("ngMessages",(function(){return{restrict:"A",require:"?ngMessages",link:function(e,t,o,r){o.hasOwnProperty(n)||t.attr("aria-live")||t.attr("aria-live","assertive")}}})).directive("ngClick",["$aria","$parse",function(e,t){return{restrict:"A",compile:function(o,a){if(!a.hasOwnProperty(n)){var i=t(a.ngClick);return function(t,n,o){s(n,r)||(e.config("bindRoleForClick")&&!n.attr("role")&&n.attr("role","button"),e.config("tabindex")&&!n.attr("tabindex")&&n.attr("tabindex",0),!e.config("bindKeydown")||o.ngKeydown||o.ngKeypress||o.ngKeyup||n.on("keydown",(function(e){var n=e.which||e.keyCode;13!==n&&32!==n||(-1!==r.indexOf(e.target.nodeName)||e.target.isContentEditable||e.preventDefault(),t.$apply((function(){i(t,{$event:e})})))})))}}}}}]).directive("ngDblclick",["$aria",function(e){return function(t,o,a){a.hasOwnProperty(n)||!e.config("tabindex")||o.attr("tabindex")||s(o,r)||o.attr("tabindex",0)}}])}(window,window.angular)},"./node_modules/angular-rateit/dist/ng-rateit.js":()=>{angular.module("ngRateIt",["ng"]).directive("ngRateIt",["$q",function(e){"use strict";return{scope:{ngModel:"=",min:"=?min",max:"=?max",step:"=?step",readOnly:"&?readOnly",pristine:"=?pristine",resetable:"&?resetable",starWidth:"=?starWidth",starHeight:"=?starHeight",canelWidth:"=?canelWidth",cancelHeight:"=?cancelHeight",rated:"&?rated",reset:"&?reset",beforeRated:"&?beforeRated",beforeReset:"&?beforeReset"},templateUrl:"ngRateIt/ng-rate-it.html",require:"ngModel",replace:!0,link:function(t,n,o){o.readOnly||(t.readOnly=function(){return!1}),o.resetable||(t.resetable=function(){return!0}),o.beforeRated||(t.beforeRated=function(){var t=e.defer();return t.resolve(),t.promise}),o.rated||(t.rated=function(){}),o.beforeReset||(t.beforeReset=function(){var t=e.defer();return t.resolve(),t.promise}),o.reset||(t.reset=function(){})},controller:"ngRateItController"}}]).controller("ngRateItController",["$scope","$timeout",function(e,t){"use strict";e.isTouch=!!window.hasOwnProperty("ontouchstart")||window.navigator.msMaxTouchPoints>0,e.orgValue=angular.copy(e.ngModel),e.min=e.min||0,e.max=e.max||5,e.step=e.step||.5,e.pristine=e.orgValue===e.ngModel,e.starWidth=e.starWidth||16,e.starPartWidth=e.starWidth*e.step,e.starHeight=e.starHeight||16,e.canelWidth=e.canelWidth||e.starWidth,e.cancelHeight=e.cancelHeight||e.starHeight;var n=e.max-e.min,o=n/e.step,r=e.$watch("ngModel",(function(){e.pristine=e.orgValue===e.ngModel})),s=function(e){return(e+1)/o*n};e.getStartParts=function(){return new Array(o)},e.getStarOffset=function(t){var n=1/e.step;return-e.starWidth/n*(t%n)},e.isSelected=function(t){return s(t)<=e.ngModel-e.min},e.removeRating=function(){e.resetable()&&!e.readOnly()&&e.beforeReset({rating:e.ngModel}).then((function(){e.ngModel=e.min,e.reset({rating:e.ngModel})}))},e.setValue=function(n){if(!e.readOnly()){var o=angular.copy(e.min+s(n));e.beforeRated({rating:o}).then((function(){e.ngModel=o,t((function(){e.rated({rating:e.ngModel})}))}))}},e.$on("$destroy",(function(){r()}))}]).run(["$templateCache",function(e){"use strict";e.put("ngRateIt/ng-rate-it.html",'<div class="ngrateiti needsclick" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star needsclick"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating needsclick" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star needsclick"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"ng-style="{\'width\': starPartWidth+\'px\', \'height\':starHeight+\'px\', \'background-position\': getStarOffset($index)+\'px 0\'}"></span></div></div>')}])},"./src/js/index.module.js":(e,t,n)=>{"use strict";n("./node_modules/angular-animate/index.js"),n("./node_modules/angular-aria/index.js"),n("./node_modules/angular-messages/index.js"),n("./node_modules/angular-material/index.js"),n("./node_modules/angular-resource/index.js"),n("./node_modules/angular-sanitize/index.js"),n("./node_modules/ng-csv/build/ng-csv.min.js"),n("./node_modules/ng-embed/src/ng-embed.js"),n("./node_modules/@uirouter/angularjs/lib-esm/index.js"),n("./node_modules/angular-local-storage/index.js"),n("./node_modules/angular-rateit/dist/ng-rateit.js"),n("./node_modules/@flowjs/ng-flow/dist/ng-flow.js"),n("./node_modules/emojionearea/dist/emojionearea.js"),n("./node_modules/jquery-textcomplete/dist/jquery.textcomplete.js");var o=n("./node_modules/moment/moment.js"),r=n.n(o),s=n("./node_modules/lodash.map/index.js"),a=n.n(s);function i(e,t,n,o,s,i,d,u,m){const l=this;function _(t,n,o){const r=i.get(t)||{};o?delete r[e.location]:r[e.location]=n,i.set(t,r)}function c(n){var o;e.layout.up=n,_(u,e.layout),o=n?"show":"hide",t.parent.postMessage({cmd:o},"*"),e.$$phase||e.$apply()}e.location=e.settings.location,l.$onInit=function(){e.status="init";const o=e.settings.color,r=e.settings.textColor,s=e.settings.color_button,a=e.settings.backgroundColor,d=Math.max(document.documentElement.clientHeight,window.innerHeight||0),l=document.documentElement.clientWidth;document.documentElement.style.setProperty("--xc-ws-div-color",o),document.documentElement.style.setProperty("--xc-ws-text-color",r),document.documentElement.style.setProperty("--xc-ws-button-color",s),document.documentElement.style.setProperty("--xc-ws-background-color",a),document.documentElement.style.setProperty("--xc-ws-client-height",d),document.documentElement.style.setProperty("--xc-ws-client-width",l);let _=!1;const h=i.get(m)||{},f=i.get(u)||{};e.visitor=h[e.location]?h[e.location]:{},e.layout=f[e.location]?f[e.location]:{},e.visitor.interaction&&e.layout.up?_=!0:e.layout.up=!0,"bottom_right"===e.settings.alignment&&c(_),n.go(function(){const t=e.settings.online,n=!!(e.visitor&&e.visitor.interaction&&e.visitor.interaction.id),o=Number(e.settings.maxInteractions)&&Number(e.settings.openedInteractions)>=Number(e.settings.maxInteractions);return!!(n||!o&&t)}()?"app.online":"app.offline",null,{location:"replace"});let p="";p=e.settings.online||!e.settings.hideWhenOffline?"init":"offline",t.parent.postMessage({cmd:p,div_color:o,text_color:r,client_height:d,client_width:l},"*");const M=document.createElement("style");document.head.appendChild(M),M.sheet.insertRule(".mdi-send:before {color:"+e.settings.color+"!important}")},l.close=function(){const t=e.visitor.interaction;if(t&&t.id){const s=o.confirm().parent(angular.element(document.querySelector("#chat-app"))).clickOutsideToClose(!0).title(e.settings.closingQuestion||"Do you want to close the interaction?").ok("Ok").cancel("Cancel");o.show(s).then((function(){return d.chatInteraction.customUpdate({id:t.id,closed:!0,closeReason:"contact",closedAt:r()().format("YYYY-MM-DD HH:mm:ss")}).$promise})).then((function(){n.go("app.closing",null,{location:"replace"})})).catch((function(e){console.error("keep open",e)}))}},l.toggle=c,l.download=function(){const t=s.defer(),n=e.visitor.interaction;return n&&n.id&&d.chatInteraction.getMessages({intid:n.id,includeAll:!0}).$promise.then((function(n){t.resolve(a()(n.rows.slice(1),(function(t){let n;if("in"===t.direction&&(n=e.settings.customerAlias||e.visitor.from||"Visitor"+t.ContactId),"out"===t.direction)switch(e.settings.agentIdentifier){case"website_alias":n=t.UserId?e.settings.agentAlias+t.UserId:"System";break;case"agent_alias":n=t.UserId?t.User.alias||t.User.fullname:"System";break;case"agent_fullname":n=t.UserId?t.User.fullname:"System";break;default:n=t.UserId?e.settings.agentAlias+t.UserId:"System"}return{sender:n,message:t.body,createdAt:r()(t.createdAt).format("MM/DD/YYYY HH:mm:ss")}})))})).catch((function(e){console.error(e)})),t.promise},l.getHeaderShape=function(){return"rounded"===e.settings.header_shape?"15px":"0px"};const h={online:["online","chat","waiting","closing","unmanaged"],offline:["offline"]};Object.defineProperty(e,"actualTitle",{get(){let t=e.settings.defaultTitle;return h.online.includes(e.status)?t=e.settings.header_online:h.offline.includes(e.status)&&(t=e.settings.header_offline),t}}),e.updateStorage=_,window.addEventListener("message",(function(e){"show"===e.data.evt?c(!0):"hide"===e.data.evt&&c(!1)}),!1)}i.$inject=["$rootScope","$window","$state","$mdDialog","$q","localStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR"];var d=n("./node_modules/lodash.forin/index.js"),u=n.n(d),m=n("./node_modules/lodash.isnil/index.js"),l=n.n(m),_=n("./src/js/chat/index.tpl.html"),c=n("./src/js/closing/index.tpl.html"),h=n("./src/js/offline/index.tpl.html"),f=n("./src/js/online/index.tpl.html"),p=n("./src/js/unmanaged/index.tpl.html"),M=n("./src/js/waiting/index.tpl.html");function y(e,t){const n=t.search();e.settings={cursor:"pointer",hide:!0},u()(n,(function(t,n){""===t||l()(t)||("true"===t&&(t=!0),"false"===t&&(t=!1),e.settings[n]=t)}))}function L(e,t,n,o,r,s){n.html5Mode(!0),o.defaults.headers.get||(o.defaults.headers.get={}),o.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",o.defaults.headers.get["Cache-Control"]="no-cache",o.defaults.headers.get.Pragma="no-cache",r.setPrefix(s),e.state("app",{abstract:!0}).state("app.waiting",{url:"/waiting",templateUrl:M,controller:"WaitingController as vm"}).state("app.online",{url:"/online",templateUrl:f,controller:"OnlineController as vm"}).state("app.offline",{url:"/offline",templateUrl:h,controller:"OfflineController as vm"}).state("app.chat",{url:"/chat",templateUrl:_,controller:"ChatController as vm"}).state("app.unmanaged",{url:"/unmanaged",templateUrl:p,controller:"UnmanagedController as vm"}).state("app.closing",{url:"/closing",templateUrl:c,controller:"ClosingController as vm"})}L.$inject=["$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX"],y.$inject=["$rootScope","$location"];var Y=n("./node_modules/lodash.merge/index.js"),g=n.n(Y);function v(e,t,n,o,r,s){const a=this;function i(t){return function(o){a.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").position("top");n.show(r)}}function d(){e.loading=!1}function u(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function m(){a.form={},a.upColor=null,a.downColor=null,a.userForm.$setPristine(),a.userForm.$setUntouched(),delete e.visitor.interaction,e.enableDownload=!1}a.$onInit=function(){e.status="closing",e.updateStorage(r,null,!0),e.updateStorage(s,null,!0),e.loading=!1},a.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.close(g()({id:e.visitor.interaction.id,ratingType:e.settings.ratingType,customer:e.settings.customerAlias||e.visitor.from},a.form)).$promise.then((function(){delete a.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(m).then(u).catch(i("submit")).finally(d):(d(),i("submit"))},a.skip=function(){m(),u()},a.form={},a.errors={}}function k(e,t){const n={id:"@id",token:e.settings.token},o={};return o.baseUrl=e.settings.remote+"/api/",o.chatWebsite=t(o.baseUrl+"chat/websites/:id",n,{notify:{method:"POST",url:o.baseUrl+"chat/websites/:id/notify"},offline:{method:"POST",url:o.baseUrl+"chat/websites/:id/offline"},getFields:{method:"GET",url:o.baseUrl+"chat/websites/:id/fields"}}),o.chatInteraction=t(o.baseUrl+"chat/interactions/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/interactions/:id"},customUpdate:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/custom_update"},close:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/close"},getMessages:{method:"GET",url:o.baseUrl+"chat/interactions/:intid/my_messages"},uploadAttachment:{method:"POST",url:o.baseUrl+"chat/interactions/:id/attachment_upload",headers:{"Content-Type":void 0},transformRequest:angular.identity},downloadAttachment:{method:"GET",url:o.baseUrl+"chat/interactions/:id/attachment_download"}}),o.chatMessage=t(o.baseUrl+"chat/messages/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/messages/:id"}}),o}v.$inject=["$rootScope","$state","$mdToast","api","STORAGE_VISITOR","STORAGE_LAYOUT"],k.$inject=["$rootScope","$resource"];var j=n("./node_modules/lodash.find/index.js"),w=n.n(j),b=n("./node_modules/lodash.values/index.js"),D=n.n(b),T=n("./node_modules/jquery/dist/jquery.js");function S(e,t,n,o,r,s,a,i,d,u){const m=this;let _,c,h,f;function p(){n((function(){const e=r[0].getElementsByClassName("chat-messages")[0];e&&(e.scrollTop=e.scrollHeight)}))}function M(e){return function(t){m.errors[e]=t.data,p()}}function y(e){i.chatWebsite.notify(e).$promise.then((function(e){delete m.errors.chatMessageError,l()(t.visitor.interaction)&&(t.visitor.interaction={id:e.interaction.id},t.updateStorage(d,t.visitor)),_[0].emojioneArea.setText(""),p()})).catch(M("chatMessageError"))}function L(){t.settings.online?s.go("app.online",null,{location:"replace"}):s.go("app.offline",null,{location:"replace"})}function Y(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&i.chatInteraction.get({id:t.visitor.interaction.id}).$promise.then((function(e){delete m.errors.getInteraction,e.closed&&(t.visitor.interaction.closed=!0,t.updateStorage(d,t.visitor),"unmanaged"===e.disposition?s.go("app.unmanaged",null,{location:"replace"}):s.go("app.closing",null,{location:"replace"}))})).catch((function(e){switch(e.status){case 403:s.go("app.closing",null,{location:"replace"});break;case 404:t.updateStorage(d,null,!0),t.updateStorage(u,null,!0),L();break;case 405:s.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function v(e){const n=_[0].emojioneArea.getText();e&&13===e.keyCode&&e.shiftKey||e&&13!==e.keyCode||""!==n&&y(g()({body:n},t.visitor))}function k(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&i.chatInteraction.getMessages({intid:t.visitor.interaction.id,includeAgent:!0,id:f||void 0}).$promise.then((function(e){if(delete m.errors.interaction,e.count){let o=!1,r=0;for(r=0,o=!1;r<e.rows.length;r++){const s=w()(t.messages,{id:e.rows[r].id});s?e.rows[r].read&&(s.read=!0):(o=!0,t.messages.push(e.rows[r])),"out"!==e.rows[r].direction||e.rows[r].read||(n=e.rows[r].id,i.chatMessage.update({id:n,read:!0}).$promise.catch((function(e){console.error(e)})))}o&&p(),e.rows[r-1].read&&(f=e.rows[r-1].id)}var n})).catch((function(e){switch(e.status){case 403:s.go("app.closing",null,{location:"replace"});break;case 405:s.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}m.errors={},t.messages=[],m.emojiOptions={watchEmbedData:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank"},m.$onInit=function(){t.status="chat",t.loading=!1,t.settings.showMenu=!0,m.replyMessage="",t.visitor.interaction&&t.visitor.interaction.closed?(t.updateStorage(d,null,!0),t.updateStorage(u,null,!0),L()):(Y(),c=o(k,2e3),h=o(Y,3e3)),_=T("#emojionearea").emojioneArea({placeholder:t.settings.placeholderMessage||"Type a message",events:{keyup:function(e,t){v(t)},ready:function(){this.setFocus()}}})},m.reply=v,m.reply_button=function(){const e=_[0].emojioneArea.getText();""!==e&&(y(g()({body:e},t.visitor)),_[0].emojioneArea.setFocus())},m.fileAdded=function(e){const n=new FormData;n.append("file",e.file),a.post(t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_upload?token="+t.settings.token,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}}).then((function(e){(e=e.data).id?(delete m.errors.sendAttachment,y(g()({body:'<a href="'+t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_download?attachId="+e.id+"&token="+t.settings.token+'" target="_blank">'+e.name+"</a>",AttachmentId:e.id},t.visitor))):M("sendAttachment")}),M("sendAttachment"))},e.$on("$destroy",(function(){o.cancel(c),o.cancel(h),c=null,h=null})),t.$on("$download",(function(e,n){n&&n(D()(t.messages))}))}S.$inject=["$scope","$rootScope","$timeout","$interval","$document","$state","$http","api","STORAGE_VISITOR","STORAGE_LAYOUT"];var H=n("./node_modules/lodash.random/index.js"),x=n.n(H),E=n("./node_modules/lodash.clonedeep/index.js"),P=n.n(E),O=n("./node_modules/json-form-data/src/jsonToFormData.js"),$=n.n(O);function A(e,t,n,o,r,s,a){const i=this;let d=null,u=null;t.typeField="";const m={showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}};function _(){delete i.errors.submit,t.$emit("hide"),i.fields=P()(u),i.form={},i.userForm.$setPristine(),i.userForm.$setUntouched();const e=r.simple().textContent(t.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(e)}i.trustAsHtml=function(e){return n.trustAsHtml(e)},i.initUploadButton=function(t){const n=i.fields[t],o=s.find(".upload-item");if(o.length){const t=angular.element(o[0].querySelector(".upload-button")),r=angular.element(o[0].querySelector("input[type=file]")),s=t.find("label");s.length&&s.css("display","none"),t.on("click",(()=>{s.css("display","none"),"function"==typeof r.trigger?r.trigger("click"):r[0].click()})),r.on("change",(t=>{e.$apply((function(){"string"==typeof n.props.error&&(n.props.error=null);const e=Array.from(t.target.files),o=1048576*n.config.size;e.some((e=>e.size>=o))?(n.options=[],n.props.error=n.config.sizeErrMessage):n.options=e.map((e=>{const{name:t,size:n,type:o}=e;return{name:t,size:n,type:o,file:e}})),i.form[n.props.title]=n.options}))}))}},i.removeFileItem=function(e,t){e.options.splice(t,1),i.form[e.props.title]=e.options},i.setupFileInput=function(e){console.log("form item setup",e);const t=s.find(".upload-item"),n=angular.element(t[0].querySelector("input[type=file]")),{multipleUpload:o,accept:r}=e.config;o&&n.attr("multiple","multiple"),r&&n[0].setAttribute("accept",r)},i.makeFileOptionsVisible=function(){const e=Array.from(s.find(".filename-label")),t=e[e.length-1];t&&t.scrollIntoView&&t.scrollIntoView()},i.$onInit=function(){t.status="offline",i.visitor={id:t.settings.id,mapKeyOffline:"firstName",from:"Anonymous"+x()(1,1e6)},t.settings.showMenu=!1,t.loading=!1,o.chatWebsite.getFields({id:t.settings.id,online:!1}).$promise.then((function(e){e.count&&(d=e.fromKey,u=P()(e.rows),i.fields=P()(u))})).then((function(){for(let e=0;e<i.fields.length;e++){const n=i.fields[e];if(t.typeField+=n.type,void 0!==n.props&&n.props.helpText){const t=RegExp.prototype.test.bind(/(<([^>]+)>)/i);i.checkHTML[e]=t(n.props.helpText)}}})).catch((function(e){console.error(e)}))},i.submit=function(){t.loading=!0;const e={...i.form};for(let n=0;n<i.fields.length;n++){const o=i.fields[n];o.props&&void 0!==e[o.props.title]&&(l()(o.cmField)||(i.visitor[o.cmField]=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title]),n===d&&(l()(t.settings.mapKeyOffline)||(i.visitor.mapKeyOffline=t.settings.mapKeyOffline,i.visitor.from=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title])),"upload"===o.type&&(e[o.props.title]=e[o.props.title].map((e=>e.file))))}const n=Array.isArray(i.fields)?i.fields.filter((e=>"upload"===e.type)):[],s=g()({body:e},i.visitor),u=null!=e&&n.length>0,c=null!==e&&"{}"!==JSON.stringify(e);var h,f;(u?(h=s,a({url:`${o.baseUrl}chat/websites/${h.id}/offline`,headers:{"Content-Type":void 0},data:$()(h,{...m,initialFormData:new FormData}),method:"POST"})):c?o.chatWebsite.offline(s).$promise:Promise.reject("INVALID_FORM")).then(_).catch((f="submit",function(e){const n=r.simple().textContent(t.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));r.show(n),i.errors[f]=e.data})).finally((()=>{i.form.invalid||(i.form={}),t.loading=!1}))},i.toggle=function(e,t){i.form[e]||(i.form[e]=[]);const n=i.form[e].indexOf(t);n>-1?i.form[e].splice(n,1):i.form[e].push(t)},i.exists=function(e,t){return i.form[e]||(i.form[e]=[]),i.form[e].indexOf(t)>-1},i.checkHTML=[],i.form={},i.errors={},i.userForm={}}function F(e,t,n,o,s,a){const i=this;let d=null;function u(){return"Anonymous"+x()(1,1e6)}i.checkHTML=[],i.form={},i.errors={},i.userForm={},i.disableItem=!1,i.trustAsHtml=function(e){return n.trustAsHtml(e)},i.$onInit=function(){if(e.status="online",e.visitor&&e.visitor.interaction)if(e.visitor.interaction.id)if(e.visitor.interaction.UserId)t.go("app.chat",null,{location:"replace"});else{const t=e.visitor.interaction.id,n=JSON.stringify({channel:"chat",interaction:{id:t},message:{id:e.visitor.message.id},disposition:"abandoned",closed:!0,closeReason:"contact",closedAt:r()().format("YYYY-MM-DD HH:mm:ss")});o({url:`${e.settings.remote}/api/chat/interactions/${t}/abandon?token=${e.settings.token}`,headers:{"Content-Type":"application/json; charset=utf-8"},data:n,method:"PUT"}),e.visitor={id:e.settings.id,mapKey:"firstName",from:u()},e.settings.showMenu=!1,e.updateStorage(a,e.visitor),s.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(d=e.fromKey,i.fields=e.rows)})).then((function(){for(let e=0;e<i.fields.length;e++){const t=i.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);i.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))}else t.go("app.waiting",null,{location:"replace"});else e.visitor={id:e.settings.id,mapKey:"firstName",from:u()},e.settings.showMenu=!1,e.updateStorage(a,e.visitor),s.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(d=e.fromKey,i.fields=e.rows)})).then((function(){for(let e=0;e<i.fields.length;e++){const t=i.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);i.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))},i.submit=function(){let n="New chat request \n";for(let t=0;t<i.fields.length;t++){const o=i.fields[t];o.props&&void 0!==i.form[o.props.title]&&(l()(o.variable)||(e.visitor[o.variable]=Array.isArray(i.form[o.props.title])?i.form[o.props.title].join():i.form[o.props.title]),l()(o.cmField)||(e.visitor[o.cmField]=Array.isArray(i.form[o.props.title])?i.form[o.props.title].join():i.form[o.props.title]),t===d&&(l()(e.settings.mapKey)||(e.visitor.mapKey=e.settings.mapKey,e.visitor.from=Array.isArray(i.form[o.props.title])?i.form[o.props.title].join():i.form[o.props.title])),i.form[o.props.title]&&(n+=o.props.title+": "+i.form[o.props.title]+"\n"))}var o;o=g()({body:n,referer:e.settings.referer,customerIp:e.settings.customerIp},e.visitor),i.disableItem=!0,s.chatWebsite.notify(o).$promise.then((function(n){delete i.errors.chatMessageError,e.visitor.message={id:n.message.id},e.visitor.interaction={id:n.interaction.id},e.updateStorage(a,e.visitor),i.disableItem=!1,e.settings.enableCustomerWriting?t.go("app.chat",null,{location:"replace"}):t.go("app.waiting",null,{location:"replace"})})).catch((function(e){i.disableItem=!1,console.error(e)}))},i.toggle=function(e,t){i.form[e]||(i.form[e]=[]);const n=i.form[e].indexOf(t);n>-1?i.form[e].splice(n,1):i.form[e].push(t)},i.exists=function(e,t){return i.form[e]||(i.form[e]=[]),i.form[e].indexOf(t)>-1}}function R(e,t,n,o,r,s){const a=this;function i(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function d(){a.form={},a.upColor=null,a.downColor=null,a.userForm.$setPristine(),a.userForm.$setUntouched(),e.visitor={},e.enableDownload=!1,e.$emit("hide")}function u(t){return function(o){a.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(r)}}function m(){e.loading=!1}a.form={},a.errors={},a.$onInit=function(){e.status="unmanaged",e.updateStorage(r,null,!0),e.updateStorage(s,null,!0),e.loading=!1},a.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.customUpdate({id:e.visitor.interaction.id,note:a.form.note}).$promise.then((function(){delete a.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(d).then(i).catch(u("submit")).finally(m):(m(),u("submit"))},a.skip=function(){d(),i()}}function W(e,t,n,o,s,a,i,d){let u,m=!1;function l(){let t={},n=!1;a.chatInteraction.get({id:e.visitor.interaction.id}).$promise.then((function(n){return t=n,a.chatInteraction.getMessages({intid:e.visitor.interaction.id}).$promise})).then((function(r){n=r.rows.length>1,t.closed?(e.visitor.interaction.closed=!0,e.updateStorage(i,e.visitor),"unmanaged"===t.disposition&&o.go("app.unmanaged",null,{location:"replace"})):t.UserId?(e.visitor.interaction.UserId=t.UserId,e.updateStorage(i,e.visitor),o.go("app.chat",null,{location:"replace"})):n&&o.go("app.chat",null,{location:"replace"})})).catch((function(e){switch(e.status){case 403:o.go("app.closing",null,{location:"replace"});break;case 405:o.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function _(){if(e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&!m){m=!0;const t=new XMLHttpRequest;t.open("PUT",e.settings.remote+"/api/chat/interactions/"+e.visitor.interaction.id+"/abandon?token="+e.settings.token,!1),t.setRequestHeader("Content-type","application/json; charset=utf-8"),t.send(JSON.stringify({channel:"chat",interaction:{id:e.visitor.interaction.id},message:{id:e.visitor.message.id},disposition:"abandoned",closed:!0,closeReason:"contact",closedAt:r()().format("YYYY-MM-DD HH:mm:ss")})),4===t.readyState&&200===t.status&&(e.updateStorage(i,null,!0),e.updateStorage(d,null,!0))}}this.$onInit=function(){e.status="waiting",e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&(u=n(l,3e3))},t.$on("$destroy",(function(){s.removeEventListener("beforeunload",_),s.removeEventListener("unload",_),n.cancel(u)})),s.addEventListener("beforeunload",_),s.addEventListener("unload",_)}function C(e){return function(t){return e.trustAsHtml(t)}}A.$inject=["$scope","$rootScope","$sce","api","$mdToast","$element","$http"],F.$inject=["$rootScope","$state","$sce","$http","api","STORAGE_VISITOR"],R.$inject=["$rootScope","$state","$mdToast","api","STORAGE_VISITOR","STORAGE_LAYOUT"],W.$inject=["$rootScope","$scope","$interval","$state","$window","api","STORAGE_VISITOR","STORAGE_LAYOUT"],C.$inject=["$sce"],angular.module("motion-chat",["ngAnimate","ngAria","ngMessages","ngMaterial","ngResource","ngSanitize","ngCsv","ngEmbed","ui.router","LocalStorageModule","ngRateIt","flow"]).filter("toTrusted",C).constant("STORAGE_PREFIX","motion_chat").constant("STORAGE_VISITOR","visitor").constant("STORAGE_LAYOUT","layout").directive("ngEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.ngEnter)})),t.preventDefault())}))}})).directive("ngPrint",(function(){return{link:function(e,t){t.on("click",(function(){document.getElementById("chatContent1")&&function(e,t){const n=document.createElement("div"),o=t.visitor,s=t.settings;let a;for(let e=0;e<t.messages.length;e++){const i=t.messages[e];let d="Sender: ";const u="Message: "+i.body,m="Sent At: "+r()(i.createdAt).format("YYYY-MM-DD HH:mm:ss");if(0!==e){switch(t.settings.agentIdentifier){case"website_alias":d+="out"===i.direction?i.UserId?s.agentAlias+i.UserId:"System":s.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_alias":d+="out"===i.direction?i.UserId?i.User.alias||i.User.fullname:"System":s.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_fullname":d+="out"===i.direction?i.UserId?i.User.fullname:"System":s.customerAlias||o.from||"Visitor"+i.ContactId;break;default:d+="out"===i.direction?i.UserId?(s.agentAlias||"Agent")+i.UserId:"System":s.customerAlias||o.from||"Visitor"+i.ContactId}n.appendChild(document.createTextNode(d)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(u)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(m)),n.appendChild(document.createElement("br")),n.appendChild(document.createElement("br"))}else a=i.createdAt}const i=window.open();i.document.write("<html><head><title>"+document.title+"</title>"),i.document.write("</head><body >"),i.document.write("<h3> Website: "+s.referer+"</h3>"),i.document.write("<h3> Start Time: "+r()(a).format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write("<h3> Print Time: "+r()().format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write(n.innerHTML),i.document.write("</body></html>"),i.document.close(),i.focus(),i.print(),i.close()}(0,e)}))},restrict:"A"}})).controller("ChatController",S).controller("ClosingController",v).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("IndexController",i).factory("api",k).config(L).run(y).controller("OfflineController",A).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("OnlineController",F).controller("UnmanagedController",R).controller("WaitingController",W)},"./node_modules/expose-loader/dist/runtime/getGlobalThis.js":(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},"./node_modules/json-form-data/src/jsonToFormData.js":function(e,t){var n,o;(o=this)||(o={}),void 0===(n=function(){return o.jsonToFormData=function(){function e(e){return"[object Array]"==={}.toString.call(e)}function t(t){return!(e(t)||"object"!=typeof t||!t||t instanceof Blob||t instanceof Date)}function n(){return"function"==typeof FormData}function o(){if(n())return new FormData}function r(n,o,s,a){var i=0;for(var d in n){if(n.hasOwnProperty(d)){var u=a||d,m=o.mapping(n[d]);if(a&&t(n)&&(u=a+"["+d+"]"),a&&e(n)&&(u=e(m)||o.showLeafArrayIndexes?a+"["+i+"]":a+"[]"),e(m)||t(m))r(m,o,s,u);else if(m instanceof FileList)for(var l=0;l<m.length;l++)s.append(u+"["+l+"]",m.item(l));else m instanceof Blob?s.append(u,m,m.name):m instanceof Date?s.append(u,m.toISOString()):(null===m&&o.includeNullValues||null!==m)&&void 0!==m&&s.append(u,m)}i++}return s}return function(e,t){if(t&&t.initialFormData){if("function"!=typeof t.initialFormData.append)throw"initialFormData must have an append function."}else if(!n())throw"This environment does not have global form data. options.initialFormData must be specified.";var s=[{initialFormData:o(),showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}},t||{}].reduce((function(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}),{});return r(e,s,s.initialFormData)}}()}.apply(t,[]))||(e.exports=n)},"./node_modules/moment/locale/af.js":function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-dz.js":function(e,t,n){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(o,r,s,a){var i=t(o),d=n[e][t(o)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,o)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-kw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ly.js":function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,a){var i=n(t),d=o[e][n(t)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ma.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-sa.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-tn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,n,s,a){var i=o(t),d=r[e][o(t)];return 2===i&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/az.js":function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/be.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn-bd.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bo.js":function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/br.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bs.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cs.js":function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"pár sekund":"pár sekundami";case"ss":return t||o?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":o?"minutu":"minutou";case"mm":return t||o?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||o?"den":"dnem";case"dd":return t||o?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||o?"měsíc":"měsícem";case"MM":return t||o?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||o?"rok":"rokem";case"yy":return t||o?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cy.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/da.js":function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-at.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-ch.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/dv.js":function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/el.js":function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,o=this._calendarEl[e],r=t&&t.hours();return n=o,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(o=o.apply(t)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-au.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-gb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ie.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-il.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-in.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-nz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-sg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-do.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-mx.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-us.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/et.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:o?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eu.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fa.js":function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fi.js":function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function o(e,o,r,s){var a="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":a=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":a=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":a=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":a=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":a=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":a=s?"vuoden":"vuotta"}return function(e,o){return e<10?o?n[e]:t[e]:e}(e,s)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fil.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr.js":function(e,t,n){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fy.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ga.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gd.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gl.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-deva.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-latn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gu.js":function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/he.js":function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hi.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},o=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:o,longMonthsParse:o,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hr.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hu.js":function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,o){var r=e;switch(n){case"s":return o||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(o||t)?" másodperc":" másodperce";case"m":return"egy"+(o||t?" perc":" perce");case"mm":return r+(o||t?" perc":" perce");case"h":return"egy"+(o||t?" óra":" órája");case"hh":return r+(o||t?" óra":" órája");case"d":return"egy"+(o||t?" nap":" napja");case"dd":return r+(o||t?" nap":" napja");case"M":return"egy"+(o||t?" hónap":" hónapja");case"MM":return r+(o||t?" hónap":" hónapja");case"y":return"egy"+(o||t?" év":" éve");case"yy":return r+(o||t?" év":" éve")}return""}function o(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return o.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return o.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hy-am.js":function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/id.js":function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/is.js":function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,o,r){var s=e+" ";switch(o){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(n||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?s+(n||r?"mínútur":"mínútum"):n?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(n||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(r?"daga":"dögum"):n?s+"dagur":s+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?s+"mánuðir":s+(r?"mánuði":"mánuðum"):n?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?s+(n||r?"ár":"árum"):s+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ja.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/jv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ka.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kk.js":function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/km.js":function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kn.js":function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ko.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ku.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:o,monthsShort:o,weekdays:"یه\200cكشه\200cممه\200c_دووشه\200cممه\200c_سێشه\200cممه\200c_چوارشه\200cممه\200c_پێنجشه\200cممه\200c_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysShort:"یه\200cكشه\200cم_دووشه\200cم_سێشه\200cم_چوارشه\200cم_پێنجشه\200cم_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره\200c|به\200cیانی/,isPM:function(e){return/ئێواره\200c/.test(e)},meridiem:function(e,t,n){return e<12?"به\200cیانی":"ئێواره\200c"},calendar:{sameDay:"[ئه\200cمرۆ كاتژمێر] LT",nextDay:"[به\200cیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له\200c %s",past:"%s",s:"چه\200cند چركه\200cیه\200cك",ss:"چركه\200c %d",m:"یه\200cك خوله\200cك",mm:"%d خوله\200cك",h:"یه\200cك كاتژمێر",hh:"%d كاتژمێر",d:"یه\200cك ڕۆژ",dd:"%d ڕۆژ",M:"یه\200cك مانگ",MM:"%d مانگ",y:"یه\200cك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ky.js":function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lb.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lt.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,o){return t?r(n)[0]:o?r(n)[1]:r(n)[2]}function o(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,a){var i=e+" ";return 1===e?i+n(0,t,s[0],a):t?i+(o(e)?r(s)[1]:r(s)[0]):a?i+r(s)[1]:i+(o(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,o){return t?"kelios sekundės":o?"kelių sekundžių":"kelias sekundes"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lv.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function o(e,o,r){return e+" "+n(t[r],e,o)}function r(e,o,r){return n(t[r],e,o)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/me.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ml.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mr.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function o(e,t,n,o){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms-my.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/my.js":function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ne.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl-be.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/oc-lnc.js":function(e,t,n){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pa-in.js":function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pl.js":function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),o=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"ww":return o+(r(e)?"tygodnie":"tygodni");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,o){return e?/D MMMM/.test(o)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt-br.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ro.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ru.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sd.js":function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/se.js":function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/si.js":function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්\200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්\200dරහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්\200dර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sk.js":function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function o(e){return e>1&&e<5}function r(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(o(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(o(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(o(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(o(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(o(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(o(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||o?"sekundi":"sekundah":e<5?t||o?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||o?"minuti":"minutama":e<5?t||o?"minute":"minutami":t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||o?"uri":"urama":e<5?t||o?"ure":"urami":t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return r+(1===e?t||o?"dan":"dnem":2===e?t||o?"dni":"dnevoma":t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||o?"mesec":"mesecem":2===e?t||o?"meseca":"mesecema":e<5?t||o?"mesece":"meseci":t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return r+(1===e?t||o?"leto":"letom":2===e?t||o?"leti":"letoma":e<5?t||o?"leta":"leti":t||o?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sq.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr-cyrl.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ss.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ta.js":function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/te.js":function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tet.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tg.js":function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/th.js":function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tk.js":function(e,t,n){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tl-ph.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tlh.js":function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,o,r){var s=function(e){var n=Math.floor(e%1e3/100),o=Math.floor(e%100/10),r=e%10,s="";return n>0&&(s+=t[n]+"vatlh"),o>0&&(s+=(""!==s?" ":"")+t[o]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(o){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tr.js":function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return o||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ug-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"يېرىم كېچە":o<900?"سەھەر":o<1130?"چۈشتىن بۇرۇن":o<1230?"چۈش":o<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uk.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(o=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ur.js":function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/vi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/x-pseudo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/yo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-hk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1200?"上午":1200===o?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-mo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-tw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":(e,t,n)=>{var o={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=s,e.exports=r,r.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./node_modules/ng-csv/build/ng-csv.min.js":(e,t)=>{var n;n=window,document,angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(e){angular.isDefined(e.urlSanitizationWhitelist)?e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),e.exports===t&&(e.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(e){var t="\r\n",n={"\\t":"\t","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(e,t){return"locale"===t.decimalSep&&this.isFloat(e)?e.toLocaleString():"."!==t.decimalSep&&this.isFloat(e)?e.toString().replace(".",t.decimalSep):"string"==typeof e?(e=e.replace(/"/g,'""'),(t.quoteStrings||e.indexOf(",")>-1||e.indexOf("\n")>-1||e.indexOf("\r")>-1)&&(e=t.txtDelim+e+t.txtDelim),e):"boolean"==typeof e?e?"TRUE":"FALSE":e},this.isFloat=function(e){return+e===e&&(!isFinite(e)||Boolean(e%1))},this.stringify=function(n,o){var r=e.defer(),s=this,a="",i="",d=e.when(n).then((function(e){var n,d;angular.isDefined(o.header)&&o.header&&(n=[],angular.forEach(o.header,(function(e){this.push(s.stringifyField(e,o))}),n),d=n.join(o.fieldSep?o.fieldSep:","),i+=d+t);var u,m,l=[];angular.isArray(e)?l=e:angular.isFunction(e)&&(l=e()),angular.isDefined(o.label)&&o.label&&"boolean"==typeof o.label&&(u=[],angular.forEach(l[0],(function(e,t){this.push(s.stringifyField(t,o))}),u),m=u.join(o.fieldSep?o.fieldSep:","),i+=m+t),angular.forEach(l,(function(e,n){var r,a,d=angular.copy(l[n]);a=[];var u=o.columnOrder?o.columnOrder:d;angular.forEach(u,(function(e){var t=o.columnOrder?d[e]:e;this.push(s.stringifyField(t,o))}),a),r=a.join(o.fieldSep?o.fieldSep:","),i+=n<l.length?r+t:r})),o.addByteOrderMarker&&(a+="\ufeff"),a+=i,r.resolve(a)}));return"function"==typeof d.catch&&d.catch((function(e){r.reject(e)})),r.promise},this.isSpecialChar=function(e){return void 0!==n[e]},this.getSpecialChar=function(e){return n[e]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(e,t,o,r,s){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(e,n,r){e.csv="",angular.isDefined(e.lazyLoad)&&"true"==e.lazyLoad||angular.isArray(e.data)&&e.$watch("data",(function(){e.buildCSV()}),!0),e.getFilename=function(){return e.filename||"download.csv"},e.buildCSV=function(){var s=t.defer();return n.addClass(r.ngCsvLoadingClass||"ng-csv-loading"),o.stringify(e.data(),function(){var t={txtDelim:e.txtDelim?e.txtDelim:'"',decimalSep:e.decimalSep?e.decimalSep:".",quoteStrings:e.quoteStrings,addByteOrderMarker:e.addByteOrderMarker};return angular.isDefined(r.csvHeader)&&(t.header=e.$eval(e.header)),angular.isDefined(r.csvColumnOrder)&&(t.columnOrder=e.$eval(e.columnOrder)),angular.isDefined(r.csvLabel)&&(t.label=e.$eval(e.label)),t.fieldSep=e.fieldSep?e.fieldSep:",",t.fieldSep=o.isSpecialChar(t.fieldSep)?o.getSpecialChar(t.fieldSep):t.fieldSep,t}()).then((function(t){e.csv=t,n.removeClass(r.ngCsvLoadingClass||"ng-csv-loading"),s.resolve(t)})),e.$apply(),s.promise}}],link:function(e,t){t.bind("click",(function(){e.buildCSV().then((function(){!function(){var t=e.charset||"utf-8",o=new Blob([e.csv],{type:"text/csv;charset="+t+";"});if(n.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(o,e.getFilename());else{var a=angular.element('<div data-tap-disabled="true"><a></a></div>'),i=angular.element(a.children()[0]);i.attr("href",n.URL.createObjectURL(o)),i.attr("download",e.getFilename()),i.attr("target","_blank"),r.find("body").append(a),s((function(){i[0].click(),i.remove()}),null)}}()})),e.$apply()}))}}}])},"./src/js/chat/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/5e32f2e1a6d11e8f150e.html"},"./src/js/closing/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/b5ecdf1981d6cd190497.html"},"./src/js/offline/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/f2a9fbb003feacb050d3.html"},"./src/js/online/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/c5bbe3317dbb682a6c31.html"},"./src/js/unmanaged/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/4b1f437e6978b48d5480.html"},"./src/js/waiting/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/6043a16afdb829ba5934.html"}},e=>{var t=t=>e(e.s=t);e.O(0,["vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow"],(()=>(t("./node_modules/jquery/dist/jquery.js"),t("./node_modules/angular/index-exposed.js"),t("./node_modules/moment/moment.js"),t("./node_modules/@flowjs/flow.js/src/flow.js"),t("./node_modules/emojione/lib/js/emojione.js"),t("./src/js/index.module.js")))),e.O()}]);
+(self.webpackChunkmotion_chat=self.webpackChunkmotion_chat||[]).push([["chat"],{"./node_modules/@flowjs/ng-flow/dist/ng-flow.js":(e,t,n)=>{var o=n("./node_modules/@flowjs/flow.js/src/flow.js");angular.module("flow.provider",[]).provider("flowFactory",(function(){"use strict";this.defaults={},this.factory=function(e){return new o(e)},this.events=[],this.on=function(e,t){this.events.push([e,t])},this.$get=function(){var e=this.factory,t=this.defaults,n=this.events;return{create:function(o){var r=e(angular.extend({},t,o));return angular.forEach(n,(function(e){r.on(e[0],e[1])})),r}}}})),angular.module("flow.init",["flow.provider"]).controller("flowCtrl",["$scope","$attrs","$parse","flowFactory",function(e,t,n,o){var r=angular.extend({},e.$eval(t.flowInit)),s=e.$eval(t.flowObject)||o.create(r),a=function(t){var n=Array.prototype.slice.call(arguments);n.shift();var o=e.$broadcast.apply(e,["flow::"+t,s].concat(n));if({progress:1,filesSubmitted:1,fileSuccess:1,fileError:1,complete:1}[t]&&e.$applyAsync(),o.defaultPrevented)return!1};s.on("catchAll",a),e.$on("$destroy",(function(){s.off("catchAll",a)})),e.$flow=s,t.hasOwnProperty("flowName")&&(n(t.flowName).assign(e,s),e.$on("$destroy",(function(){n(t.flowName).assign(e)})))}]).directive("flowInit",[function(){return{scope:!0,controller:"flowCtrl"}}]),angular.module("flow.btn",["flow.init"]).directive("flowBtn",[function(){return{restrict:"EA",scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.hasOwnProperty("flowDirectory"),r=n.hasOwnProperty("flowSingleFile"),s=n.hasOwnProperty("flowAttrs")&&e.$eval(n.flowAttrs);e.$flow.assignBrowse(t,o,r,s)}}}]),angular.module("flow.dragEvents",["flow.init"]).directive("flowPreventDrop",(function(){return{scope:!1,link:function(e,t,n){t.bind("drop dragover",(function(e){e.preventDefault()}))}}})).directive("flowDragEnter",["$timeout",function(e){return{scope:!1,link:function(t,n,o){var r,s=!1;n.bind("dragover",(function(n){var a,i,d;i=!1,d=(a=n).dataTransfer||a.originalEvent.dataTransfer,angular.forEach(d&&d.types,(function(e){"Files"===e&&(i=!0)})),i&&(s||(t.$apply(o.flowDragEnter),s=!0),e.cancel(r),n.preventDefault())})),n.bind("dragleave drop",(function(n){e.cancel(r),r=e((function(){t.$eval(o.flowDragLeave),r=null,s=!1}),100)}))}}}]),angular.module("flow.drop",["flow.init"]).directive("flowDrop",(function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){function o(){e.$flow.assignDrop(t)}n.flowDropEnabled?e.$watch(n.flowDropEnabled,(function(n){n?o():e.$flow.unAssignDrop(t)})):o()}}})),function(e){"use strict";var t=e.module("flow.events",["flow.init"]);e.forEach({fileSuccess:["$file","$message"],fileProgress:["$file"],fileAdded:["$file","$event"],filesAdded:["$files","$event"],filesSubmitted:["$files","$event"],fileRetry:["$file"],fileRemoved:["$file"],fileError:["$file","$message"],uploadStart:[],complete:[],progress:[],error:["$message","$file"]},(function(n,o){var r,s="flow"+((r=o).charAt(0).toUpperCase()+r.slice(1));"flowUploadStart"==s&&(s="flowUploadStarted"),t.directive(s,[function(){return{require:"^flowInit",controller:["$scope","$attrs",function(t,r){t.$on("flow::"+o,(function(){var o=Array.prototype.slice.call(arguments),a=o.shift();if(t.$flow===o.shift()){var i={};e.forEach(n,(function(e,t){i[e]=o[t]})),!1===t.$eval(r[s],i)&&a.preventDefault()}}))}]}}])}))}(angular),angular.module("flow.img",["flow.init"]).directive("flowImg",[function(){return{scope:!1,require:"^flowInit",link:function(e,t,n){var o=n.flowImg;e.$watch(o,(function(t){if(t){var o=new FileReader;o.readAsDataURL(t.file),o.onload=function(t){e.$apply((function(){n.$set("src",t.target.result)}))}}}))}}}]),angular.module("flow.transfers",["flow.init"]).directive("flowTransfers",[function(){return{scope:!0,require:"^flowInit",link:function(e){e.transfers=e.$flow.files}}}]),angular.module("flow",["flow.provider","flow.init","flow.events","flow.btn","flow.drop","flow.transfers","flow.img","flow.dragEvents"])},"./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js":(e,t,n)=>{"use strict";var o,r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),a=n("./node_modules/@uirouter/angularjs/lib-esm/services.js"),i=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js");function d(e,t,n,o,i){var d=(0,r.parse)("viewDecl.controllerAs"),u=(0,r.parse)("viewDecl.resolveAs");return{restrict:"ECA",priority:-400,compile:function(o){var m=o.html();return o.empty(),function(o,_){var c=_.data("$uiView");if(!c)return _.html(m),void e(_.contents())(o);var h=c.$cfg||{viewDecl:{},getTemplate:r.noop},f=h.path&&new r.ResolveContext(h.path);_.html(h.getTemplate(_,f)||m),r.trace.traceUIViewFill(c.$uiView,_.html());var p=e(_.contents()),M=h.controller,y=d(h),L=u(h),Y=f&&(0,a.D)(f);if(o[L]=Y,M){var g=t(M,(0,r.extend)({},Y,{$scope:o,$element:_}));y&&(o[y]=g,o[y][L]=Y),_.data("$ngControllerController",g),_.children().data("$ngControllerController",g),l(i,n,g,o,h)}if((0,r.isString)(h.component))var v=(0,r.kebobString)(h.component),k=new RegExp("^(x-|data-)?"+v+"$","i"),j=o.$watch((function(){var e=[].slice.call(_[0].children).filter((function(e){return e&&e.tagName&&k.exec(e.tagName)}));return e&&s.ng.element(e).data("$"+h.component+"Controller")}),(function(e){e&&(l(i,n,e,o,h),j())}));p(o)}}}}o=["$view","$animate","$uiViewScroll","$interpolate","$q",function(e,t,n,o,a){var d={$cfg:{viewDecl:{$context:e._pluginapi._rootViewContext()}},$uiView:{}},u={count:0,restrict:"ECA",terminal:!0,priority:400,transclude:"element",compile:function(m,l,_){return function(m,l,c){var h,f,p,M,y=c.onload||"",L=c.autoscroll,Y=function(e,n,o){s.ng.version.minor>2?t.enter(e,null,n).then(o):t.enter(e,null,n,o)},g=function(e,n){s.ng.version.minor>2?t.leave(e).then(n):t.leave(e,n)},v=l.inheritedData("$uiView")||d,k=o(c.uiView||c.name||"")(m)||"$default",j={$type:"ng1",id:u.count++,name:k,fqn:v.$uiView.fqn?v.$uiView.fqn+"."+k:k,config:null,configUpdated:function(e){(!e||e instanceof i.qO)&&(M!==e&&(r.trace.traceUIViewConfigUpdated(j,e&&e.viewDecl&&e.viewDecl.$context),M=e,b(e)))},get creationContext(){var e=(0,r.parse)("$cfg.viewDecl.$context")(v),t=(0,r.parse)("$uiView.creationContext")(v);return e||t}};r.trace.traceUIViewEvent("Linking",j),l.data("$uiView",{$uiView:j}),b();var w=e.registerUIView(j);function b(e){var t=m.$new(),o=a.defer(),s=a.defer(),i={$cfg:e,$uiView:j},d={$animEnter:o.promise,$animLeave:s.promise,$$animLeave:s};t.$emit("$viewContentLoading",k);var u=_(t,(function(e){e.data("$uiViewAnim",d),e.data("$uiView",i),Y(e,l,(function(){o.resolve(),p&&p.$emit("$viewContentAnimationEnded"),((0,r.isDefined)(L)&&!L||m.$eval(L))&&n(e)})),function(){if(h&&(r.trace.traceUIViewEvent("Removing (previous) el",h.data("$uiView")),h.remove(),h=null),p&&(r.trace.traceUIViewEvent("Destroying scope",j),p.$destroy(),p=null),f){var e=f.data("$uiViewAnim");r.trace.traceUIViewEvent("Animate out",e),g(f,(function(){e.$$animLeave.resolve(),h=null})),h=f,f=null}}()}));f=u,(p=t).$emit("$viewContentLoaded",e||M),p.$eval(y)}m.$on("$destroy",(function(){r.trace.traceUIViewEvent("Destroying/Unregistering",j),w()}))}}};return u}],d.$inject=["$compile","$controller","$transitions","$view","$q"];var u="function"==typeof s.ng.module("ui.router").component,m=0;function l(e,t,n,o,s){!(0,r.isFunction)(n.$onInit)||(s.viewDecl.component||s.viewDecl.componentProvider)&&u||n.$onInit();var a=(0,r.tail)(s.path).state.self,i={bind:n};if((0,r.isFunction)(n.uiOnParamsChanged)){var d=new r.ResolveContext(s.path).getResolvable("$transition$").data;o.$on("$destroy",t.onSuccess({},(function(e){if(e!==d&&-1===e.exiting().indexOf(a)){var t=e.params("to"),o=e.params("from"),s=function(e){return e.paramSchema},i=e.treeChanges("to").map(s).reduce(r.unnestR,[]),u=e.treeChanges("from").map(s).reduce(r.unnestR,[]),m=i.filter((function(e){var n=u.indexOf(e);return-1===n||!u[n].type.equals(t[e.id],o[e.id])}));if(m.length){var l=m.map((function(e){return e.id})),_=(0,r.filter)(t,(function(e,t){return-1!==l.indexOf(t)}));n.uiOnParamsChanged(_,e)}}}),i))}if((0,r.isFunction)(n.uiCanExit)){var l=m++,_="_uiCanExitIds",c=function(e){return!!e&&(e[_]&&!0===e[_][l]||c(e.redirectedFrom()))},h={exiting:a.name};o.$on("$destroy",t.onBefore(h,(function(t){var o,r=t[_]=t[_]||{};return c(t)||(o=e.when(n.uiCanExit(t))).then((function(e){return r[l]=!1!==e})),o}),i))}}s.ng.module("ui.router.state").directive("uiView",o),s.ng.module("ui.router.state").directive("uiView",d)},"./node_modules/@uirouter/angularjs/lib-esm/services.js":(e,t,n)=>{"use strict";n.d(t,{D:()=>k});var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js"),r=n("./node_modules/@uirouter/core/lib-esm/index.js"),s=n("./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js"),a=function(){function e(){var e=this;this._useHttp=o.ng.version.minor<3,this.$get=["$http","$templateCache","$injector",function(t,n,o){return e.$templateRequest=o.has&&o.has("$templateRequest")&&o.get("$templateRequest"),e.$http=t,e.$templateCache=n,e}]}return e.prototype.useHttpService=function(e){this._useHttp=e},e.prototype.fromConfig=function(e,t,n){var o=function(e){return r.services.$q.when(e).then((function(e){return{template:e}}))},s=function(e){return r.services.$q.when(e).then((function(e){return{component:e}}))};return(0,r.isDefined)(e.template)?o(this.fromString(e.template,t)):(0,r.isDefined)(e.templateUrl)?o(this.fromUrl(e.templateUrl,t)):(0,r.isDefined)(e.templateProvider)?o(this.fromProvider(e.templateProvider,t,n)):(0,r.isDefined)(e.component)?s(e.component):(0,r.isDefined)(e.componentProvider)?s(this.fromComponentProvider(e.componentProvider,t,n)):o("<ui-view></ui-view>")},e.prototype.fromString=function(e,t){return(0,r.isFunction)(e)?e(t):e},e.prototype.fromUrl=function(e,t){return(0,r.isFunction)(e)&&(e=e(t)),null==e?null:this._useHttp?this.$http.get(e,{cache:this.$templateCache,headers:{Accept:"text/html"}}).then((function(e){return e.data})):this.$templateRequest(e)},e.prototype.fromProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.fromComponentProvider=function(e,t,n){var o=r.services.$injector.annotate(e),s=(0,r.isArray)(e)?(0,r.tail)(e):e;return new r.Resolvable("",s,o).get(n)},e.prototype.makeComponentTemplate=function(e,t,n,s){s=s||{};var a=o.ng.version.minor>=3?"::":"",d=function(e){var t=(0,r.kebobString)(e);return/^(x|data)-/.exec(t)?"x-"+t:t},u=function(e){var t=r.services.$injector.get(e+"Directive");if(!t||!t.length)throw new Error("Unable to find component named '"+e+"'");return t.map(i).reduce(r.unnestR,[])}(n).map((function(n){var o=n.name,i=n.type,u=d(o);if(e.attr(u)&&!s[o])return u+"='"+e.attr(u)+"'";var m=s[o]||o;if("@"===i)return u+"='{{"+a+"$resolve."+m+"}}'";if("&"===i){var l=t.getResolvable(m),_=l&&l.data,c=_&&r.services.$injector.annotate(_)||[];return u+"='$resolve."+m+((0,r.isArray)(_)?"["+(_.length-1)+"]":"")+"("+c.join(",")+")'"}return u+"='"+a+"$resolve."+m+"'"})).join(" "),m=d(n);return"<"+m+" "+u+"></"+m+">"},e}(),i=function(e){return(0,r.isObject)(e.bindToController)?d(e.bindToController):d(e.scope)},d=function(e){return Object.keys(e||{}).map((function(t){return[t,/^([=<@&])[?]?(.*)/.exec(e[t])]})).filter((function(e){return(0,r.isDefined)(e)&&(0,r.isArray)(e[1])})).map((function(e){return{name:e[1][2]||e[0],type:e[1][1]}}))},u=n("./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js"),m=function(e){return function(t){var n=t[e],o="onExit"===e?"from":"to";return n?function(e,t){var s=new r.ResolveContext(e.treeChanges(o)).subContext(t.$$state()),a=(0,r.extend)(k(s),{$state$:t,$transition$:e});return r.services.$injector.invoke(n,this,a)}:void 0}},l=function(){function e(e){this._urlListeners=[],this.$locationProvider=e;var t=(0,r.val)(e);(0,r.createProxyFunctions)(t,this,t,["hashPrefix"])}return e.monkeyPatchPathParameterType=function(e){var t=e.urlMatcherFactory.type("path");t.encode=function(e){return null!=e?e.toString().replace(/(~|\/)/g,(function(e){return{"~":"~~","/":"~2F"}[e]})):e},t.decode=function(e){return null!=e?e.toString().replace(/(~~|~2F)/g,(function(e){return{"~~":"~","~2F":"/"}[e]})):e}},e.prototype.dispose=function(){},e.prototype.onChange=function(e){var t=this;return this._urlListeners.push(e),function(){return(0,r.removeFrom)(t._urlListeners)(e)}},e.prototype.html5Mode=function(){var e=this.$locationProvider.html5Mode();return(e=(0,r.isObject)(e)?e.enabled:e)&&this.$sniffer.history},e.prototype.baseHref=function(){return this._baseHref||(this._baseHref=this.$browser.baseHref()||this.$window.location.pathname)},e.prototype.url=function(e,t,n){return void 0===t&&(t=!1),(0,r.isDefined)(e)&&this.$location.url(e),t&&this.$location.replace(),n&&this.$location.state(n),this.$location.url()},e.prototype._runtimeServices=function(e,t,n,o,s){var a=this;this.$location=t,this.$sniffer=n,this.$browser=o,this.$window=s,e.$on("$locationChangeSuccess",(function(e){return a._urlListeners.forEach((function(t){return t(e)}))}));var i=(0,r.val)(t);(0,r.createProxyFunctions)(i,this,i,["replace","path","search","hash"]),(0,r.createProxyFunctions)(i,this,i,["port","protocol","host"])},e}(),_=n("./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js");o.ng.module("ui.router.angular1",[]);var c=o.ng.module("ui.router.init",["ng"]),h=o.ng.module("ui.router.util",["ui.router.init"]),f=o.ng.module("ui.router.router",["ui.router.util"]),p=o.ng.module("ui.router.state",["ui.router.router","ui.router.util","ui.router.angular1"]),M=o.ng.module("ui.router",["ui.router.init","ui.router.state","ui.router.angular1"]),y=(o.ng.module("ui.router.compat",["ui.router"]),null);function L(e){(y=this.router=new r.UIRouter).stateProvider=new u.X(y.stateRegistry,y.stateService),y.stateRegistry.decorator("views",s.LB),y.stateRegistry.decorator("onExit",m("onExit")),y.stateRegistry.decorator("onRetain",m("onRetain")),y.stateRegistry.decorator("onEnter",m("onEnter")),y.viewService._pluginapi._viewConfigFactory("ng1",(0,s.OB)()),y.urlService.config._decodeParams=!1;var t=y.locationService=y.locationConfig=new l(e);function n(e,n,o,r,s,a,i){return t._runtimeServices(s,e,r,n,o),delete y.router,delete y.$get,y}return l.monkeyPatchPathParameterType(y),y.router=y,y.$get=n,n.$inject=["$location","$browser","$window","$sniffer","$rootScope","$http","$templateCache"],y}L.$inject=["$locationProvider"];var Y=function(e){return["$uiRouterProvider",function(t){var n=t.router[e];return n.$get=function(){return n},n}]};function g(e,t,n){if(r.services.$injector=e,r.services.$q=t,!Object.prototype.hasOwnProperty.call(e,"strictDi"))try{e.invoke((function(e){}))}catch(t){e.strictDi=!!/strict mode/.exec(t&&t.toString())}n.stateRegistry.get().map((function(e){return e.$$state().resolvables})).reduce(r.unnestR,[]).filter((function(e){return"deferred"===e.deps})).forEach((function(t){return t.deps=e.annotate(t.resolveFn,e.strictDi)}))}function v(e){e.$watch((function(){r.trace.approximateDigests++}))}g.$inject=["$injector","$q","$uiRouter"],v.$inject=["$rootScope"],c.provider("$uiRouter",L),f.provider("$urlRouter",["$uiRouterProvider",function(e){return e.urlRouterProvider=new _.L(e)}]),h.provider("$urlService",Y("urlService")),h.provider("$urlMatcherFactory",["$uiRouterProvider",function(){return y.urlMatcherFactory}]),h.provider("$templateFactory",(function(){return new a})),p.provider("$stateRegistry",Y("stateRegistry")),p.provider("$uiRouterGlobals",Y("globals")),p.provider("$transitions",Y("transitionService")),p.provider("$state",["$uiRouterProvider",function(){return(0,r.extend)(y.stateProvider,{$get:function(){return y.stateService}})}]),p.factory("$stateParams",["$uiRouter",function(e){return e.globals.params}]),M.factory("$view",(function(){return y.viewService})),M.service("$trace",(function(){return r.trace})),M.run(v),h.run(["$urlMatcherFactory",function(e){}]),p.run(["$state",function(e){}]),f.run(["$urlRouter",function(e){}]),c.run(g);var k=function(e){return e.getTokens().filter(r.isString).map((function(t){var n=e.getResolvable(t);return[t,"NOWAIT"===e.getPolicy(n).async?n.promise:n.data]})).reduce(r.applyPairs,{})}},"./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/angularjs/lib-esm/angular.js");function r(e){var t=function(t,n,o){return e.is(t,n,o)};return t.$stateful=!0,t}function s(e){var t=function(t,n,o){return e.includes(t,n,o)};return t.$stateful=!0,t}r.$inject=["$state"],s.$inject=["$state"],o.ng.module("ui.router.state").filter("isState",r).filter("includedByState",s)},"./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(t,n){this.stateRegistry=t,this.stateService=n,(0,o.createProxyFunctions)((0,o.val)(e.prototype),this,(0,o.val)(this))}return e.prototype.decorator=function(e,t){return this.stateRegistry.decorator(e,t)||this},e.prototype.state=function(e,t){return(0,o.isObject)(e)?t=e:t.name=e,this.stateRegistry.register(t),this},e.prototype.onInvalid=function(e){return this.stateService.onInvalid(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js":(e,t,n)=>{"use strict";n.d(t,{OB:()=>r,LB:()=>a,qO:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/index.js");function r(){var e=null;return function(t,n){return e=e||o.services.$injector.get("$templateFactory"),[new d(t,n,e)]}}var s=function(e,t){return e.reduce((function(e,n){return e||(0,o.isDefined)(t[n])}),!1)};function a(e){if(!e.parent)return{};var t=["component","bindings","componentProvider"],n=["templateProvider","templateUrl","template","notify","async"].concat(["controller","controllerProvider","controllerAs","resolveAs"]),r=t.concat(n);if((0,o.isDefined)(e.views)&&s(r,e))throw new Error("State '"+e.name+"' has a 'views' object. It cannot also have \"view properties\" at the state level.  Move the following properties into a view (in the 'views' object):  "+r.filter((function(t){return(0,o.isDefined)(e[t])})).join(", "));var a={},i=e.views||{$default:(0,o.pick)(e,r)};return(0,o.forEach)(i,(function(r,i){if(i=i||"$default",(0,o.isString)(r)&&(r={component:r}),r=(0,o.extend)({},r),s(t,r)&&s(n,r))throw new Error("Cannot combine: "+t.join("|")+" with: "+n.join("|")+" in stateview: '"+i+"@"+e.name+"'");r.resolveAs=r.resolveAs||"$resolve",r.$type="ng1",r.$context=e,r.$name=i;var d=o.ViewService.normalizeUIViewTarget(r.$context,r.$name);r.$uiViewName=d.uiViewName,r.$uiViewContextAnchor=d.uiViewContextAnchor,a[i]=r})),a}var i=0,d=function(){function e(e,t,n){var o=this;this.path=e,this.viewDecl=t,this.factory=n,this.$id=i++,this.loaded=!1,this.getTemplate=function(e,t){return o.component?o.factory.makeComponentTemplate(e,t,o.component,o.viewDecl.bindings):o.template}}return e.prototype.load=function(){var e=this,t=o.services.$q,n=new o.ResolveContext(this.path),r=this.path.reduce((function(e,t){return(0,o.extend)(e,t.paramValues)}),{}),s={template:t.when(this.factory.fromConfig(this.viewDecl,r,n)),controller:t.when(this.getController(n))};return t.all(s).then((function(t){return o.trace.traceViewServiceEvent("Loaded",e),e.controller=t.controller,(0,o.extend)(e,t.template),e}))},e.prototype.getController=function(e){var t=this.viewDecl.controllerProvider;if(!(0,o.isInjectable)(t))return this.viewDecl.controller;var n=o.services.$injector.annotate(t),r=(0,o.isArray)(t)?(0,o.tail)(t):t;return new o.Resolvable("",r,n).get(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/index.js"),r=function(){function e(e){this.router=e}return e.injectableHandler=function(e,t){return function(n){return o.services.$injector.invoke(t,null,{$match:n,$stateParams:e.globals.params})}},e.prototype.$get=function(){var e=this.router.urlService;return this.router.urlRouter.update(!0),e.interceptDeferred||e.listen(),this.router.urlRouter},e.prototype.rule=function(e){var t=this;if(!(0,o.isFunction)(e))throw new Error("'rule' must be a function");var n=new o.BaseUrlRule((function(){return e(o.services.$injector,t.router.locationService)}),o.identity);return this.router.urlService.rules.rule(n),this},e.prototype.otherwise=function(e){var t=this,n=this.router.urlService.rules;if((0,o.isString)(e))n.otherwise(e);else{if(!(0,o.isFunction)(e))throw new Error("'rule' must be a string or function");n.otherwise((function(){return e(o.services.$injector,t.router.locationService)}))}return this},e.prototype.when=function(t,n){return((0,o.isArray)(n)||(0,o.isFunction)(n))&&(n=e.injectableHandler(this.router,n)),this.router.urlService.rules.when(t,n),this},e.prototype.deferIntercept=function(e){this.router.urlService.deferIntercept(e)},e}()},"./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/angularjs/lib-esm/angular.js").ng.module("ui.router.state").provider("$uiViewScroll",(function(){var e=!1;this.useAnchorScroll=function(){e=!0},this.$get=["$anchorScroll","$timeout",function(t,n){return e?t:function(e){return n((function(){e[0].scrollIntoView()}),0,!1)}}]}))},"./node_modules/@uirouter/core/lib-esm/common/common.js":(e,t,n)=>{"use strict";n.d(t,{Jz:()=>i,xZ:()=>u,Qs:()=>m,Ed:()=>l,l7:()=>_,fS:()=>c,yR:()=>h,ZT:()=>f,WR:()=>p,ED:()=>M,d3:()=>y,nA:()=>L,LH:()=>Y,Wk:()=>g,ce:()=>v,LQ:()=>k,mX:()=>j,ei:()=>w,CE:()=>b,hX:()=>D,sE:()=>T,js:()=>S,UI:()=>H,VO:()=>x,XC:()=>E,o8:()=>P,M7:()=>O,FN:()=>$,Ez:()=>A,v_:()=>F,UW:()=>R,sp:()=>W,ym:()=>C,bb:()=>z,Gb:()=>I,JG:()=>J,HX:()=>V,jv:()=>N});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),a=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o},i="object"==typeof self&&self.self===self&&self||"object"==typeof n.g&&n.g.global===n.g&&n.g||void 0,d=i.angular||{},u=d.fromJson||JSON.parse.bind(JSON),m=d.toJson||JSON.stringify.bind(JSON),l=d.forEach||function(e,t,n){if((0,o.kJ)(e))return e.forEach(t,n);Object.keys(e).forEach((function(n){return t(e[n],n)}))},_=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];if(n)for(var o=Object.keys(n),r=0;r<o.length;r++)e[o[r]]=n[o[r]]}return e},c=d.equals||function e(t,n){if(t===n)return!0;if(null===t||null===n)return!1;if(t!=t&&n!=n)return!0;var s=typeof t;if(s!==typeof n||"object"!==s)return!1;var a,i,d=[t,n];if((0,r.$6)(o.kJ)(d))return i=n,(a=t).length===i.length&&C(a,i).reduce((function(t,n){return t&&e(n[0],n[1])}),!0);if((0,r.$6)(o.J_)(d))return t.getTime()===n.getTime();if((0,r.$6)(o.Kj)(d))return t.toString()===n.toString();if((0,r.$6)(o.mf)(d))return!0;if([o.mf,o.kJ,o.J_,o.Kj].map(r.Yj).reduce((function(e,t){return e||!!t(d)}),!1))return!1;var u={};for(var m in t){if(!e(t[m],n[m]))return!1;u[m]=!0}for(var m in n)if(!u[m])return!1;return!0};function h(e){return e}function f(){}function p(e,t,n,o,r){void 0===r&&(r=!1);var s=function(t){return e()[t].bind(n())};return(o=o||Object.keys(e())).reduce((function(e,n){var o;return e[n]=r?(o=n,function(){return t[o]=s(o),t[o].apply(null,arguments)}):s(n),e}),t)}var M=function(e,t){return _(Object.create(e),t)},y=(0,r.WA)((function(e,t){return-1!==e.indexOf(t)})),L=(0,r.WA)((function(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),e})),Y=(0,r.WA)((function(e,t){return e.push(t),t})),g=function(e){return e.slice().forEach((function(t){"function"==typeof t&&t(),L(e,t)}))};function v(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var o=_.apply(void 0,a([{}],t.reverse()));return _(o,w(e||{},Object.keys(o)))}var k=function(e,t){return _(e,t)};function j(e,t){var n=[];for(var o in e.path){if(e.path[o]!==t.path[o])break;n.push(e.path[o])}return n}function w(e,t){var n={};for(var o in e)-1!==t.indexOf(o)&&(n[o]=e[o]);return n}function b(e,t){return Object.keys(e).filter((0,r.ff)(y(t))).reduce((function(t,n){return t[n]=e[n],t}),{})}function D(e,t){var n=(0,o.kJ)(e),r=n?[]:{},s=n?function(e){return r.push(e)}:function(e,t){return r[t]=e};return l(e,(function(e,n){t(e,n)&&s(e,n)})),r}function T(e,t){var n;return l(e,(function(e,o){n||t(e,o)&&(n=e)})),n}var S=H;function H(e,t,n){return n=n||((0,o.kJ)(e)?[]:{}),l(e,(function(e,o){return n[o]=t(e,o)})),n}var x=function(e){return Object.keys(e).map((function(t){return e[t]}))},E=function(e,t){return e&&t},P=function(e,t){return e||t},O=function(e,t){return e.concat(t)},$=function(e,t){return(0,o.kJ)(t)?e.concat(t.reduce($,[])):A(e,t)};function A(e,t){return e.push(t),e}var F=function(e,t){return y(e,t)?e:A(e,t)},R=function(e){return e.reduce(O,[])},W=function(e,t){return void 0===t&&(t="assert failure"),function(n){var r=e(n);if(!r)throw new Error((0,o.mf)(t)?t(n):t);return r}};function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(0===e.length)return[];for(var n=e.reduce((function(e,t){return Math.min(t.length,e)}),9007199254740991),o=[],r=function(t){switch(e.length){case 1:o.push([e[0][t]]);break;case 2:o.push([e[0][t],e[1][t]]);break;case 3:o.push([e[0][t],e[1][t],e[2][t]]);break;case 4:o.push([e[0][t],e[1][t],e[2][t],e[3][t]]);break;default:o.push(e.map((function(e){return e[t]})))}},s=0;s<n;s++)r(s);return o}function z(e,t){var n,r;if((0,o.kJ)(t)&&(n=t[0],r=t[1]),!(0,o.HD)(n))throw new Error("invalid parameters to applyPairs");return e[n]=r,e}function I(e){return e.length&&e[e.length-1]||void 0}function J(e,t){return t&&Object.keys(t).forEach((function(e){return delete t[e]})),t||(t={}),_(t,e)}var V=function(e){return e.catch((function(e){return 0}))&&e},N=function(e){return V(s.u.$q.reject(e))}},"./node_modules/@uirouter/core/lib-esm/common/coreservices.js":(e,t,n)=>{"use strict";n.d(t,{H:()=>o,u:()=>r});var o=function(e,t){return t.reduce((function(t,n){return t[n]=(o=e+"."+n+"()",function(){throw new Error("No implementation for "+o+". The framework specific code did not implement this method.")}),t;var o}),{})},r={$q:void 0,$injector:void 0}},"./node_modules/@uirouter/core/lib-esm/common/glob.js":(e,t,n)=>{"use strict";n.d(t,{r:()=>o});var o=function(){function e(e){this.text=e,this.glob=e.split(".");var t=this.text.split(".").map((function(e){return"**"===e?"(?:|(?:\\.[^.]*)*)":"*"===e?"\\.[^.]*":"\\."+e})).join("");this.regexp=new RegExp("^"+t+"$")}return e.is=function(e){return!!/[!,*]+/.exec(e)},e.fromString=function(t){return e.is(t)?new e(t):null},e.prototype.matches=function(e){return this.regexp.test("."+e)},e}()},"./node_modules/@uirouter/core/lib-esm/common/hof.js":(e,t,n)=>{"use strict";n.d(t,{WA:()=>r,zG:()=>a,vg:()=>i,OH:()=>d,Qc:()=>u,ff:()=>m,xD:()=>l,or:()=>_,$6:()=>c,Yj:()=>h,is:()=>f,P0:()=>p,uj:()=>M});var o=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),r=0;for(t=0;t<n;t++)for(var s=arguments[t],a=0,i=s.length;a<i;a++,r++)o[r]=s[a];return o};function r(e){return function t(){if(arguments.length>=e.length)return e.apply(this,arguments);var n=Array.prototype.slice.call(arguments);return t.bind.apply(t,o([this],n))}}function s(){var e=arguments,t=e.length-1;return function(){for(var n=t,o=e[t].apply(this,arguments);n--;)o=e[n].call(this,o);return o}}function a(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return s.apply(null,[].slice.call(arguments).reverse())}var i=function(e){return function(t){return t&&t[e]}},d=r((function(e,t,n){return n&&n[e]===t})),u=function(e){return a.apply(null,e.split(".").map(i))},m=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return!e.apply(null,t)}};function l(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)&&t.apply(null,n)}}function _(e,t){return function(){for(var n=[],o=0;o<arguments.length;o++)n[o]=arguments[o];return e.apply(null,n)||t.apply(null,n)}}var c=function(e){return function(t){return t.reduce((function(t,n){return t&&!!e(n)}),!0)}},h=function(e){return function(t){return t.reduce((function(t,n){return t||!!e(n)}),!1)}},f=function(e){return function(t){return null!=t&&t.constructor===e||t instanceof e}},p=function(e){return function(){return e}};function M(e){return function(t){for(var n=0;n<e.length;n++)if(e[n][0](t))return e[n][1](t)}}},"./node_modules/@uirouter/core/lib-esm/common/predicates.js":(e,t,n)=>{"use strict";n.d(t,{o8:()=>a,$K:()=>i,Ft:()=>d,le:()=>u,mf:()=>m,hj:()=>l,HD:()=>_,Kn:()=>c,kJ:()=>h,J_:()=>f,Kj:()=>p,Qh:()=>M,tI:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),r=Object.prototype.toString,s=function(e){return function(t){return typeof t===e}},a=s("undefined"),i=(0,o.ff)(a),d=function(e){return null===e},u=(0,o.or)(d,a),m=s("function"),l=s("number"),_=s("string"),c=function(e){return null!==e&&"object"==typeof e},h=Array.isArray,f=function(e){return"[object Date]"===r.call(e)},p=function(e){return"[object RegExp]"===r.call(e)};function M(e){if(h(e)&&e.length){var t=e.slice(0,-1),n=e.slice(-1);return!(t.filter((0,o.ff)(_)).length||n.filter((0,o.ff)(m)).length)}return m(e)}var y=(0,o.xD)(c,(0,o.zG)((0,o.vg)("then"),m))},"./node_modules/@uirouter/core/lib-esm/common/queue.js":(e,t,n)=>{"use strict";n.d(t,{c:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e,t){void 0===e&&(e=[]),void 0===t&&(t=null),this._items=e,this._limit=t,this._evictListeners=[],this.onEvict=(0,o.LH)(this._evictListeners)}return e.prototype.enqueue=function(e){var t=this._items;return t.push(e),this._limit&&t.length>this._limit&&this.evict(),e},e.prototype.evict=function(){var e=this._items.shift();return this._evictListeners.forEach((function(t){return t(e)})),e},e.prototype.dequeue=function(){if(this.size())return this._items.splice(0,1)[0]},e.prototype.clear=function(){var e=this._items;return this._items=[],e},e.prototype.size=function(){return this._items.length},e.prototype.remove=function(e){var t=this._items.indexOf(e);return t>-1&&this._items.splice(t,1)[0]},e.prototype.peekTail=function(){return this._items[this._items.length-1]},e.prototype.peekHead=function(){if(this.size())return this._items[0]},e}()},"./node_modules/@uirouter/core/lib-esm/common/safeConsole.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r={log:o.ZT,error:o.ZT,table:o.ZT},s="undefined"!=typeof document&&document.documentMode&&9===document.documentMode?window&&window.console?function(e){var t=function(t){return Function.prototype.bind.call(t,e)};return{log:t(e.log),error:t(e.log),table:t(e.log)}}(window.console):r:console.table&&console.error?console:function(e){var t=e.log.bind(e);return{log:t,error:e.error?e.error.bind(e):t,table:e.table?e.table.bind(e):t}}(console)},"./node_modules/@uirouter/core/lib-esm/common/strings.js":(e,t,n)=>{"use strict";n.d(t,{BS:()=>i,NE:()=>d,L$:()=>u,XF:()=>m,iC:()=>l,Pz:()=>h,Lb:()=>p,cW:()=>M,C7:()=>y,Fb:()=>L,HV:()=>Y,PX:()=>g,iV:()=>v});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");function i(e,t){return t.length<=e?t:t.substr(0,e-3)+"..."}function d(e,t){for(;t.length<e;)t+=" ";return t}function u(e){return e.replace(/^([A-Z])/,(function(e){return e.toLowerCase()})).replace(/([A-Z])/g,(function(e){return"-"+e.toLowerCase()}))}function m(e){var t=l(e),n=t.match(/^(function [^ ]+\([^)]*\))/),o=n?n[1]:t,r=e.name||"";return r&&o.match(/function \(/)?"function "+r+o.substr(9):o}function l(e){var t=(0,o.kJ)(e)?e.slice(-1)[0]:e;return t&&t.toString()||"undefined"}var _=r.i.isRejectionPromise,c=(0,a.uj)([[o.o8,(0,a.P0)("undefined")],[o.Ft,(0,a.P0)("null")],[o.tI,(0,a.P0)("[Promise]")],[_,function(e){return e._transitionRejection.toString()}],[function(e){return(0,o.Kn)(e)&&!(0,o.kJ)(e)&&e.constructor!==Object&&(0,o.mf)(e.toString)},function(e){return e.toString()}],[o.Qh,m],[(0,a.P0)(!0),s.yR]]);function h(e){var t=[];function n(e){if((0,o.Kn)(e)){if(-1!==t.indexOf(e))return"[circular ref]";t.push(e)}return c(e)}return(0,o.o8)(e)?n(e):JSON.stringify(e,(function(e,t){return n(t)})).replace(/\\"/g,'"')}var f=function(e){return function(t){if(!t)return["",""];var n=t.indexOf(e);return-1===n?[t,""]:[t.substr(0,n),t.substr(n+1)]}},p=function(e){return e.replace(/\/[^/]*$/,"")},M=f("#"),y=f("?"),L=f("="),Y=function(e){return e?e.replace(/^#/,""):""};function g(e){var t=new RegExp("("+e+")","g");return function(e){return e.split(t).filter(s.yR)}}function v(e,t){return(0,o.HD)((0,s.Gb)(e))&&(0,o.HD)(t)?e.slice(0,-1).concat((0,s.Gb)(e)+t):(0,s.Ez)(e,t)}},"./node_modules/@uirouter/core/lib-esm/common/trace.js":(e,t,n)=>{"use strict";n.d(t,{g4:()=>c});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js");function d(e){if(!e)return"ui-view (defunct)";var t=e.creationContext?e.creationContext.name||"(root)":"(none)";return"[ui-view#"+e.id+" "+e.$type+":"+e.fqn+" ("+e.name+"@"+t+")]"}function u(e){return(0,s.hj)(e)?o[e]:o[o[e]]}!function(e){e[e.RESOLVE=0]="RESOLVE",e[e.TRANSITION=1]="TRANSITION",e[e.HOOK=2]="HOOK",e[e.UIVIEW=3]="UIVIEW",e[e.VIEWCONFIG=4]="VIEWCONFIG"}(o||(o={}));var m=(0,r.Qc)("$id"),l=(0,r.Qc)("router.$id"),_=function(e){return"Transition #"+m(e)+"-"+l(e)},c=new(function(){function e(){this._enabled={},this.approximateDigests=0}return e.prototype._set=function(e,t){var n=this;t.length||(t=Object.keys(o).map((function(e){return parseInt(e,10)})).filter((function(e){return!isNaN(e)})).map((function(e){return o[e]}))),t.map(u).forEach((function(t){return n._enabled[t]=e}))},e.prototype.enable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!0,e)},e.prototype.disable=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._set(!1,e)},e.prototype.enabled=function(e){return!!this._enabled[u(e)]},e.prototype.traceTransitionStart=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Started  -> "+(0,a.Pz)(e))},e.prototype.traceTransitionIgnored=function(e){this.enabled(o.TRANSITION)&&i.L.log(_(e)+": Ignored  <> "+(0,a.Pz)(e))},e.prototype.traceHookInvocation=function(e,t,n){if(this.enabled(o.HOOK)){var s=(0,r.Qc)("traceData.hookType")(n)||"internal",d=(0,r.Qc)("traceData.context.state.name")(n)||(0,r.Qc)("traceData.context")(n)||"unknown",u=(0,a.XF)(e.registeredHook.callback);i.L.log(_(t)+":   Hook -> "+s+" context: "+d+", "+(0,a.BS)(200,u))}},e.prototype.traceHookResult=function(e,t,n){this.enabled(o.HOOK)&&i.L.log(_(t)+":   <- Hook returned: "+(0,a.BS)(200,(0,a.Pz)(e)))},e.prototype.traceResolvePath=function(e,t,n){this.enabled(o.RESOLVE)&&i.L.log(_(n)+":         Resolving "+e+" ("+t+")")},e.prototype.traceResolvableResolved=function(e,t){this.enabled(o.RESOLVE)&&i.L.log(_(t)+":               <- Resolved  "+e+" to: "+(0,a.BS)(200,(0,a.Pz)(e.data)))},e.prototype.traceError=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Rejected "+(0,a.Pz)(t)+", reason: "+e)},e.prototype.traceSuccess=function(e,t){this.enabled(o.TRANSITION)&&i.L.log(_(t)+": <- Success  "+(0,a.Pz)(t)+", final state: "+e.name)},e.prototype.traceUIViewEvent=function(e,t,n){void 0===n&&(n=""),this.enabled(o.UIVIEW)&&i.L.log("ui-view: "+(0,a.NE)(30,e)+" "+d(t)+n)},e.prototype.traceUIViewConfigUpdated=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Updating",e," with ViewConfig from context='"+t+"'")},e.prototype.traceUIViewFill=function(e,t){this.enabled(o.UIVIEW)&&this.traceUIViewEvent("Fill",e," with: "+(0,a.BS)(200,t))},e.prototype.traceViewSync=function(e){if(this.enabled(o.VIEWCONFIG)){var t="uiview component fqn",n=e.map((function(e){var n,o=e.uiView,r=e.viewConfig,s=o&&o.fqn,a=r&&r.viewDecl.$context.name+": ("+r.viewDecl.$name+")";return(n={})[t]=s,n["view config state (view name)"]=a,n})).sort((function(e,n){return(e[t]||"").localeCompare(n[t]||"")}));i.L.table(n)}},e.prototype.traceViewServiceEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+function(e){var t=e.viewDecl,n=t.$context.name||"(root)";return"[View#"+e.$id+" from '"+n+"' state]: target ui-view: '"+t.$uiViewName+"@"+t.$uiViewContextAnchor+"'"}(t))},e.prototype.traceViewServiceUIViewEvent=function(e,t){this.enabled(o.VIEWCONFIG)&&i.L.log("VIEWCONFIG: "+e+" "+d(t))},e}())},"./node_modules/@uirouter/core/lib-esm/globals.js":(e,t,n)=>{"use strict";n.d(t,{k:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/stateParams.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/queue.js"),s=function(){function e(){this.params=new o.i,this.lastStartedTransitionId=-1,this.transitionHistory=new r.c([],1),this.successfulTransitions=new r.c([],1)}return e.prototype.dispose=function(){this.transitionHistory.clear(),this.successfulTransitions.clear(),this.transition=null},e}()},"./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js":(e,t,n)=>{"use strict";n.d(t,{v:()=>s,A:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),r=function(e){var t=e.router,n=e.entering().filter((function(e){return!!e.$$state().lazyLoad})).map((function(t){return a(e,t)}));return o.u.$q.all(n).then((function(){if("url"!==e.originalTransition().options().source){var n=e.targetState();return t.stateService.target(n.identifier(),n.params(),n.options())}var o=t.urlService,r=o.match(o.parts()),s=r&&r.rule;if(s&&"STATE"===s.type){var a=s.state,i=r.match;return t.stateService.target(a,i,e.options())}t.urlService.sync()}))},s=function(e){return e.onBefore({entering:function(e){return!!e.lazyLoad}},r)};function a(e,t){var n=t.$$state().lazyLoad,r=n._promise;return r||(r=n._promise=o.u.$q.when(n(e,t)).then((function(t){return t&&Array.isArray(t.states)&&t.states.forEach((function(t){return e.router.stateRegistry.register(t)})),t})).then((function(e){return delete t.lazyLoad,delete t.$$state().lazyLoad,delete n._promise,e}),(function(e){return delete n._promise,o.u.$q.reject(e)}))),r}},"./node_modules/@uirouter/core/lib-esm/interface.js":(e,t,n)=>{},"./node_modules/@uirouter/core/lib-esm/params/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/params/param.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>o,d:()=>m});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=Object.prototype.hasOwnProperty;!function(e){e[e.PATH=0]="PATH",e[e.SEARCH=1]="SEARCH",e[e.CONFIG=2]="CONFIG"}(o||(o={}));var m=function(){function e(e,t,n,i,m){var l=function(e,t,n){var s=!1===n.reloadOnSearch&&t===o.SEARCH||void 0,i=(0,r.sE)([n.dynamic,s],a.$K),d=(0,a.$K)(i)?{dynamic:i}:{},m=function(e){function t(){return e.value}e=function(e){return 0===["value","type","squash","array","dynamic"].filter(u.bind(e||{})).length}(e)?{value:e}:e,t.__cacheable=!0;var n=(0,a.Qh)(e.value)?e.value:t;return(0,r.l7)(e,{$$fn:n})}(n&&n.params&&n.params[e]);return(0,r.l7)(d,m)}(e,n,m);t=function(e,t,n,r,s){if(e.type&&t&&"string"!==t.name)throw new Error("Param '"+r+"' has two type configurations.");if(e.type&&t&&"string"===t.name&&s.type(e.type))return s.type(e.type);if(t)return t;if(!e.type){var a=n===o.CONFIG?"any":n===o.PATH?"path":n===o.SEARCH?"query":"string";return s.type(a)}return e.type instanceof d._?e.type:s.type(e.type)}(l,t,n,e,i.paramTypes);var _,c,h=(_={array:n===o.SEARCH&&"auto"},c=e.match(/\[\]$/)?{array:!0}:{},(0,r.l7)(_,c,l).array);t=h?t.$asArray(h,n===o.SEARCH):t;var f=void 0!==l.value||n===o.SEARCH,p=(0,a.$K)(l.dynamic)?!!l.dynamic:!!t.dynamic,M=(0,a.$K)(l.raw)?!!l.raw:!!t.raw,y=function(e,t,n){var o=e.squash;if(!t||!1===o)return!1;if(!(0,a.$K)(o)||null==o)return n;if(!0===o||(0,a.HD)(o))return o;throw new Error("Invalid squash policy: '"+o+"'. Valid policies: false, true, or arbitrary string")}(l,f,i.defaultSquashPolicy()),L=function(e,t,n,o){var i=[{from:"",to:n||t?void 0:""},{from:null,to:n||t?void 0:""}],d=(0,a.kJ)(e.replace)?e.replace:[];(0,a.HD)(o)&&d.push({from:o,to:void 0});var u=(0,r.UI)(d,(0,s.vg)("from"));return(0,r.hX)(i,(function(e){return-1===u.indexOf(e.from)})).concat(d)}(l,h,f,y),Y=(0,a.$K)(l.inherit)?!!l.inherit:!!t.inherit;(0,r.l7)(this,{id:e,type:t,location:n,isOptional:f,dynamic:p,raw:M,squash:y,replace:L,inherit:Y,array:h,config:l})}return e.values=function(e,t){void 0===t&&(t={});for(var n={},o=0,r=e;o<r.length;o++){var s=r[o];n[s.id]=s.value(t[s.id])}return n},e.changed=function(e,t,n){return void 0===t&&(t={}),void 0===n&&(n={}),e.filter((function(e){return!e.type.equals(t[e.id],n[e.id])}))},e.equals=function(t,n,o){return void 0===n&&(n={}),void 0===o&&(o={}),0===e.changed(t,n,o).length},e.validates=function(e,t){return void 0===t&&(t={}),e.map((function(e){return e.validates(t[e.id])})).reduce(r.XC,!0)},e.prototype.isDefaultValue=function(e){return this.isOptional&&this.type.equals(this.value(),e)},e.prototype.value=function(e){var t=this;return e=function(e){for(var n=0,o=t.replace;n<o.length;n++){var r=o[n];if(r.from===e)return r.to}return e}(e),(0,a.o8)(e)?function(){if(t._defaultValueCache)return t._defaultValueCache.defaultValue;if(!i.u.$injector)throw new Error("Injectable functions cannot be called at configuration time");var e=i.u.$injector.invoke(t.config.$$fn);if(null!=e&&!t.type.is(e))throw new Error("Default value ("+e+") for parameter '"+t.id+"' is not an instance of ParamType ("+t.type.name+")");return t.config.$$fn.__cacheable&&(t._defaultValueCache={defaultValue:e}),e}():this.type.$normalize(e)},e.prototype.isSearch=function(){return this.location===o.SEARCH},e.prototype.validates=function(e){if(((0,a.o8)(e)||null===e)&&this.isOptional)return!0;var t=this.type.$normalize(e);if(!this.type.is(t))return!1;var n=this.type.encode(t);return!((0,a.HD)(n)&&!this.type.pattern.exec(n))},e.prototype.toString=function(){return"{Param:"+this.id+" "+this.type+" squash: '"+this.squash+"' optional: "+this.isOptional+"}"},e}()},"./node_modules/@uirouter/core/lib-esm/params/paramType.js":(e,t,n)=>{"use strict";n.d(t,{_:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=function(){function e(e){this.pattern=/.*/,this.inherit=!0,(0,o.l7)(this,e)}return e.prototype.is=function(e,t){return!0},e.prototype.encode=function(e,t){return e},e.prototype.decode=function(e,t){return e},e.prototype.equals=function(e,t){return e==t},e.prototype.$subPattern=function(){var e=this.pattern.toString();return e.substr(1,e.length-2)},e.prototype.toString=function(){return"{ParamType:"+this.name+"}"},e.prototype.$normalize=function(e){return this.is(e)?e:this.decode(e)},e.prototype.$asArray=function(e,t){if(!e)return this;if("auto"===e&&!t)throw new Error("'auto' array mode is for query parameters only");return new a(this,e)},e}();function a(e,t){var n=this;function s(e){return(0,r.kJ)(e)?e:(0,r.$K)(e)?[e]:[]}function a(e,n){return function(a){if((0,r.kJ)(a)&&0===a.length)return a;var i=s(a),d=(0,o.UI)(i,e);return!0===n?0===(0,o.hX)(d,(function(e){return!e})).length:function(e){switch(e.length){case 0:return;case 1:return"auto"===t?e[0]:e;default:return e}}(d)}}function i(e){return function(t,n){var o=s(t),r=s(n);if(o.length!==r.length)return!1;for(var a=0;a<o.length;a++)if(!e(o[a],r[a]))return!1;return!0}}["encode","decode","equals","$normalize"].forEach((function(t){var o=e[t].bind(e),r="equals"===t?i:a;n[t]=r(o)})),(0,o.l7)(this,{dynamic:e.dynamic,name:e.name,pattern:e.pattern,inherit:e.inherit,raw:e.raw,is:a(e.is.bind(e),!0),$arrayMode:t})}},"./node_modules/@uirouter/core/lib-esm/params/paramTypes.js":(e,t,n)=>{"use strict";n.d(t,{p:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),d=n("./node_modules/@uirouter/core/lib-esm/params/paramType.js"),u=function(){function e(){this.enqueue=!0,this.typeQueue=[],this.defaultTypes=(0,r.ei)(e.prototype,["hash","string","query","path","int","bool","date","json","any"]),this.types=(0,r.ED)((0,r.UI)(this.defaultTypes,(function(e,t){return new d._((0,r.l7)({name:t},e))})),{})}return e.prototype.dispose=function(){this.types={}},e.prototype.type=function(e,t,n){if(!(0,s.$K)(t))return this.types[e];if(this.types.hasOwnProperty(e))throw new Error("A type named '"+e+"' has already been defined.");return this.types[e]=new d._((0,r.l7)({name:e},t)),n&&(this.typeQueue.push({name:e,def:n}),this.enqueue||this._flushTypeQueue()),this},e.prototype._flushTypeQueue=function(){for(;this.typeQueue.length;){var e=this.typeQueue.shift();if(e.pattern)throw new Error("You cannot override a type's .pattern at runtime.");(0,r.l7)(this.types[e.name],i.u.$injector.invoke(e.def))}},e}();o=function(e){var t=function(e){return null!=e?e.toString():e},n={encode:t,decode:t,is:(0,a.is)(String),pattern:/.*/,equals:function(e,t){return e==t}};return(0,r.l7)({},n,e)},(0,r.l7)(u.prototype,{string:o({}),path:o({pattern:/[^/]*/}),query:o({}),hash:o({inherit:!1}),int:o({decode:function(e){return parseInt(e,10)},is:function(e){return!(0,s.le)(e)&&this.decode(e.toString())===e},pattern:/-?\d+/}),bool:o({encode:function(e){return e?1:0},decode:function(e){return 0!==parseInt(e,10)},is:(0,a.is)(Boolean),pattern:/0|1/}),date:o({encode:function(e){return this.is(e)?[e.getFullYear(),("0"+(e.getMonth()+1)).slice(-2),("0"+e.getDate()).slice(-2)].join("-"):void 0},decode:function(e){if(this.is(e))return e;var t=this.capture.exec(e);return t?new Date(t[1],t[2]-1,t[3]):void 0},is:function(e){return e instanceof Date&&!isNaN(e.valueOf())},equals:function(e,t){return["getFullYear","getMonth","getDate"].reduce((function(n,o){return n&&e[o]()===t[o]()}),!0)},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/}),json:o({encode:r.Qs,decode:r.xZ,is:(0,a.is)(Object),equals:r.fS,pattern:/[^/]*/}),any:o({encode:r.yR,decode:r.yR,is:function(){return!0},equals:r.fS})})},"./node_modules/@uirouter/core/lib-esm/params/stateParams.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=function(){function e(e){void 0===e&&(e={}),(0,o.l7)(this,e)}return e.prototype.$inherit=function(e,t,n){var r,s=(0,o.mX)(t,n),a={},i=[];for(var d in s)if(s[d]&&s[d].params&&(r=Object.keys(s[d].params)).length)for(var u in r)i.indexOf(r[u])>=0||(i.push(r[u]),a[r[u]]=this[r[u]]);return(0,o.l7)({},a,e)},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathNode.js":(e,t,n)=>{"use strict";n.d(t,{V:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/param.js"),a=function(){function e(t){if(t instanceof e){var n=t;this.state=n.state,this.paramSchema=n.paramSchema.slice(),this.paramValues=(0,o.l7)({},n.paramValues),this.resolvables=n.resolvables.slice(),this.views=n.views&&n.views.slice()}else{var r=t;this.state=r,this.paramSchema=r.parameters({inherit:!1}),this.paramValues={},this.resolvables=r.resolvables.map((function(e){return e.clone()}))}}return e.prototype.clone=function(){return new e(this)},e.prototype.applyRawParams=function(e){return this.paramValues=this.paramSchema.reduce((function(t,n){return(0,o.bb)(t,[(r=n).id,r.value(e[r.id])]);var r}),{}),this},e.prototype.parameter=function(e){return(0,o.sE)(this.paramSchema,(0,r.OH)("id",e))},e.prototype.equals=function(e,t){var n=this.diff(e,t);return n&&0===n.length},e.prototype.diff=function(e,t){if(this.state!==e.state)return!1;var n=t?t(this):this.paramSchema;return s.d.changed(n,this.paramValues,e.paramValues)},e.clone=function(e){return e.clone()},e}()},"./node_modules/@uirouter/core/lib-esm/path/pathUtils.js":(e,t,n)=>{"use strict";n.d(t,{C:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),a=n("./node_modules/@uirouter/core/lib-esm/path/pathNode.js"),i=function(){function e(){}return e.makeTargetState=function(e,t){var n=(0,o.Gb)(t).state;return new s.F(e,n,t.map((0,r.vg)("paramValues")).reduce(o.LQ,{}),{})},e.buildPath=function(e){var t=e.params();return e.$state().path.map((function(e){return new a.V(e).applyRawParams(t)}))},e.buildToPath=function(t,n){var o=e.buildPath(n);return n.options().inherit?e.inheritParams(t,o,Object.keys(n.params())):o},e.applyViewConfigs=function(t,n,r){n.filter((function(e){return(0,o.d3)(r,e.state)})).forEach((function(r){var s=(0,o.VO)(r.state.views||{}),a=e.subPath(n,(function(e){return e===r})),i=s.map((function(e){return t.createViewConfig(a,e)}));r.views=i.reduce(o.M7,[])}))},e.inheritParams=function(e,t,n){void 0===n&&(n=[]);var s=e.map((function(e){return e.paramSchema})).reduce(o.M7,[]).filter((function(e){return!e.inherit})).map((0,r.vg)("id"));return t.map((function(t){var i=(0,o.l7)({},t&&t.paramValues),d=(0,o.ei)(i,n);i=(0,o.CE)(i,n);var u,m,l,_=(0,o.CE)((u=e,m=t.state,l=(0,o.sE)(u,(0,r.OH)("state",m)),(0,o.l7)({},l&&l.paramValues)||{}),s),c=(0,o.l7)(i,_,d);return new a.V(t.state).applyRawParams(c)}))},e.treeChanges=function(t,n,o){for(var r,s,a,i,d,u,m=Math.min(t.length,n.length),l=0;l<m&&t[l].state!==o&&(r=t[l],s=n[l],r.equals(s,e.nonDynamicParams));)l++;i=(a=t).slice(0,l),d=a.slice(l);var _=i.map((function(e,t){var o=e.clone();return o.paramValues=n[t].paramValues,o}));return u=n.slice(l),{from:a,to:_.concat(u),retained:i,retainedWithToParams:_,exiting:d,entering:u}},e.matching=function(e,t,n){var r=!1;return(0,o.ym)(e,t).reduce((function(e,t){var o=t[0],s=t[1];return(r=r||!o.equals(s,n))?e:e.concat(o)}),[])},e.equals=function(t,n,o){return t.length===n.length&&e.matching(t,n,o).length===t.length},e.subPath=function(e,t){var n=(0,o.sE)(e,t),r=e.indexOf(n);return-1===r?void 0:e.slice(0,r+1)},e.nonDynamicParams=function(e){return e.state.parameters({inherit:!1}).filter((function(e){return!e.dynamic}))},e.paramValues=function(e){return e.reduce((function(e,t){return(0,o.l7)(e,t.paramValues)}),{})},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/interface.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>o});var o={when:{LAZY:"LAZY",EAGER:"EAGER"},async:{WAIT:"WAIT",NOWAIT:"NOWAIT"}}},"./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js":(e,t,n)=>{"use strict";n.d(t,{X:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),d=function(){function e(t,n,s,a,d){if(this.resolved=!1,this.promise=void 0,t instanceof e)(0,o.l7)(this,t);else if((0,i.mf)(n)){if((0,i.le)(t))throw new Error("new Resolvable(): token argument is required");if(!(0,i.mf)(n))throw new Error("new Resolvable(): resolveFn argument must be a function");this.token=t,this.policy=a,this.resolveFn=n,this.deps=s||[],this.data=d,this.resolved=void 0!==d,this.promise=this.resolved?r.u.$q.when(this.data):void 0}else if((0,i.Kn)(t)&&t.token&&(t.hasOwnProperty("resolveFn")||t.hasOwnProperty("data"))){var u=t;return new e(u.token,u.resolveFn,u.deps,u.policy,u.data)}}return e.prototype.getPolicy=function(e){var t=this.policy||{},n=e&&e.resolvePolicy||{};return{when:t.when||n.when||"LAZY",async:t.async||n.async||"WAIT"}},e.prototype.resolve=function(e,t){var n=this,a=r.u.$q,d=e.findNode(this),u=d&&d.state,m=this.getPolicy(u).async,l=(0,i.mf)(m)?m:o.yR;return this.promise=a.when().then((function(){return a.all(e.getDependencies(n).map((function(n){return n.get(e,t)})))})).then((function(e){return n.resolveFn.apply(null,e)})).then(l).then((function(e){return n.data=e,n.resolved=!0,n.resolveFn=null,s.g4.traceResolvableResolved(n,t),n.data}))},e.prototype.get=function(e,t){return this.promise||this.resolve(e,t)},e.prototype.toString=function(){return"Resolvable(token: "+(0,a.Pz)(this.token)+", requires: ["+this.deps.map(a.Pz)+"])"},e.prototype.clone=function(){return new e(this)},e.fromData=function(t,n){return new e(t,(function(){return n}),null,null,n)},e}()},"./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>f});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/interface.js"),d=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),u=n("./node_modules/@uirouter/core/lib-esm/path/pathUtils.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),_=i.u.when,c=[_.EAGER,_.LAZY],h=[_.EAGER],f=function(){function e(e){this._path=e}return e.prototype.getTokens=function(){return this._path.reduce((function(e,t){return e.concat(t.resolvables.map((function(e){return e.token})))}),[]).reduce(o.v_,[])},e.prototype.getResolvable=function(e){var t=this._path.map((function(e){return e.resolvables})).reduce(o.M7,[]).filter((function(t){return t.token===e}));return(0,o.Gb)(t)},e.prototype.getPolicy=function(e){var t=this.findNode(e);return e.getPolicy(t.state)},e.prototype.subContext=function(t){return new e(u.C.subPath(this._path,(function(e){return e.state===t})))},e.prototype.addResolvables=function(e,t){var n=(0,o.sE)(this._path,(0,r.OH)("state",t)),s=e.map((function(e){return e.token}));n.resolvables=n.resolvables.filter((function(e){return-1===s.indexOf(e.token)})).concat(e)},e.prototype.resolvePath=function(e,t){var n=this;void 0===e&&(e="LAZY");var d=((0,o.d3)(c,e)?e:"LAZY")===i.u.when.EAGER?h:c;s.g4.traceResolvePath(this._path,e,t);var u=function(e,t){return function(r){return(0,o.d3)(e,n.getPolicy(r)[t])}},m=this._path.reduce((function(e,o){var s=o.resolvables.filter(u(d,"when")),a=s.filter(u(["NOWAIT"],"async")),i=s.filter((0,r.ff)(u(["NOWAIT"],"async"))),m=n.subContext(o.state),l=function(e){return e.get(m,t).then((function(t){return{token:e.token,value:t}}))};return a.forEach(l),e.concat(i.map(l))}),[]);return a.u.$q.all(m)},e.prototype.injector=function(){return this._injector||(this._injector=new p(this))},e.prototype.findNode=function(e){return(0,o.sE)(this._path,(function(t){return(0,o.d3)(t.resolvables,e)}))},e.prototype.getDependencies=function(e){var t=this,n=this.findNode(e),r=(u.C.subPath(this._path,(function(e){return e===n}))||this._path).reduce((function(e,t){return e.concat(t.resolvables)}),[]).filter((function(t){return t!==e}));return e.deps.map((function(e){var n=r.filter((function(t){return t.token===e}));if(n.length)return(0,o.Gb)(n);var s=t.injector().getNative(e);if((0,l.wV)(s))throw new Error("Could not find Dependency Injection token: "+(0,m.Pz)(e));return new d.X(e,(function(){return s}),[],s)}))},e}(),p=function(){function e(e){this.context=e,this.native=this.get("Native Injector")||a.u.$injector}return e.prototype.get=function(e){var t=this.context.getResolvable(e);if(t){if("NOWAIT"===this.context.getPolicy(t).async)return t.get(this.context);if(!t.resolved)throw new Error("Resolvable async .get() not complete:"+(0,m.Pz)(t.token));return t.data}return this.getNative(e)},e.prototype.getAsync=function(e){var t=this.context.getResolvable(e);return t?t.get(this.context):a.u.$q.when(this.native.get(e))},e.prototype.getNative=function(e){return this.native&&this.native.get(e)},e}()},"./node_modules/@uirouter/core/lib-esm/router.js":(e,t,n)=>{"use strict";n.d(t,{a:()=>y});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRouter.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/transitionService.js"),a=n("./node_modules/@uirouter/core/lib-esm/view/view.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js"),d=n("./node_modules/@uirouter/core/lib-esm/state/stateService.js"),u=n("./node_modules/@uirouter/core/lib-esm/globals.js"),m=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),l=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),_=n("./node_modules/@uirouter/core/lib-esm/url/urlService.js"),c=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),f=0,p=(0,h.HV)("LocationServices",["url","path","search","hash","onChange"]),M=(0,h.HV)("LocationConfig",["port","protocol","host","baseHref","html5Mode","hashPrefix"]),y=function(){function e(e,t){void 0===e&&(e=p),void 0===t&&(t=M),this.locationService=e,this.locationConfig=t,this.$id=f++,this._disposed=!1,this._disposables=[],this.trace=c.g4,this.viewService=new a.s(this),this.globals=new u.k,this.transitionService=new s.Z(this),this.urlMatcherFactory=new o.y(this),this.urlRouter=new r.g(this),this.urlService=new _.i(this),this.stateRegistry=new i.q(this),this.stateService=new d.b(this),this._plugins={},this.viewService._pluginapi._rootViewContext(this.stateRegistry.root()),this.globals.$current=this.stateRegistry.root(),this.globals.current=this.globals.$current.self,this.disposable(this.globals),this.disposable(this.stateService),this.disposable(this.stateRegistry),this.disposable(this.transitionService),this.disposable(this.urlService),this.disposable(e),this.disposable(t)}return e.prototype.disposable=function(e){this._disposables.push(e)},e.prototype.dispose=function(e){var t=this;e&&(0,l.mf)(e.dispose)?e.dispose(this):(this._disposed=!0,this._disposables.slice().forEach((function(e){try{"function"==typeof e.dispose&&e.dispose(t),(0,m.nA)(t._disposables,e)}catch(e){}})))},e.prototype.plugin=function(e,t){void 0===t&&(t={});var n=new e(this,t);if(!n.name)throw new Error("Required property `name` missing on plugin: "+n);return this._disposables.push(n),this._plugins[n.name]=n},e.prototype.getPlugin=function(e){return e?this._plugins[e]:(0,m.VO)(this._plugins)},e}()},"./node_modules/@uirouter/core/lib-esm/state/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>M});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js");function u(e){return e.name}function m(e){return e.self.$$state=function(){return e},e.self}function l(e){return e.parent&&e.parent.data&&(e.data=e.self.data=(0,o.ED)(e.parent.data,e.data)),e.data}var _=function(e,t){return function(n){var s=n.self;if(s&&s.url&&s.name&&s.name.match(/\.\*\*$/)){var a={};(0,o.JG)(s,a),a.url+="{remainder:any}",s=a}var i=n.parent,d=function(e){if(!(0,r.HD)(e))return!1;var t="^"===e.charAt(0);return{val:t?e.substring(1):e,root:t}}(s.url),u=d?e.compile(d.val,{state:s}):s.url;if(!u)return null;if(!e.isMatcher(u))throw new Error("Invalid url '"+u+"' in state '"+n+"'");return d&&d.root?u:(i&&i.navigable||t()).url.append(u)}},c=function(e){return function(t){return!e(t)&&t.url?t:t.parent?t.parent.navigable:null}};function h(e){return e.parent?e.parent.path.concat(e):[e]}function f(e){var t=e.parent?(0,o.l7)({},e.parent.includes):{};return t[e.name]=!0,t}function p(e){var t,n,u=function(e){return e.provide||e.token},m=(0,a.uj)([[(0,a.vg)("resolveFn"),function(e){return new i.X(u(e),e.resolveFn,e.deps,e.policy)}],[(0,a.vg)("useFactory"),function(e){return new i.X(u(e),e.useFactory,e.deps||e.dependencies,e.policy)}],[(0,a.vg)("useClass"),function(e){return new i.X(u(e),(function(){return new e.useClass}),[],e.policy)}],[(0,a.vg)("useValue"),function(e){return new i.X(u(e),(function(){return e.useValue}),[],e.policy,e.useValue)}],[(0,a.vg)("useExisting"),function(e){return new i.X(u(e),o.yR,[e.useExisting],e.policy)}]]),l=(0,a.uj)([[(0,a.zG)((0,a.vg)("val"),r.HD),function(e){return new i.X(e.token,o.yR,[e.val],e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.kJ),function(e){return new i.X(e.token,(0,o.Gb)(e.val),e.val.slice(0,-1),e.policy)}],[(0,a.zG)((0,a.vg)("val"),r.mf),function(e){return new i.X(e.token,e.val,(t=e.val,n=d.u.$injector,t.$inject||n&&n.annotate(t,n.strictDi)||"deferred"),e.policy);var t,n}]]),_=(0,a.uj)([[(0,a.is)(i.X),function(e){return e}],[function(e){return!(!e.token||!e.resolveFn)},m],[function(e){return!(!e.provide&&!e.token||!(e.useValue||e.useFactory||e.useExisting||e.useClass))},m],[function(e){return!!(e&&e.val&&((0,r.HD)(e.val)||(0,r.kJ)(e.val)||(0,r.mf)(e.val)))},l],[(0,a.P0)(!0),function(e){throw new Error("Invalid resolve value: "+(0,s.Pz)(e))}]]),c=e.resolve;return((0,r.kJ)(c)?c:(t=c,n=e.resolvePolicy||{},Object.keys(t||{}).map((function(e){return{token:e,val:t[e],deps:void 0,policy:n[e]}})))).map(_)}var M=function(){function e(e,t){this.matcher=e;var n,r=this,s=function(){return e.find("")},i=function(e){return""===e.name};this.builders={name:[u],self:[m],parent:[function(t){return i(t)?null:e.find(r.parentName(t))||s()}],data:[l],url:[_(t,s)],navigable:[c(i)],params:[(n=t.paramFactory,function(e){var t=e.url&&e.url.parameters({inherit:!1})||[],r=(0,o.VO)((0,o.js)((0,o.CE)(e.params||{},t.map((0,a.vg)("id"))),(function(t,o){return n.fromConfig(o,null,e.self)})));return t.concat(r).map((function(e){return[e.id,e]})).reduce(o.bb,{})})],views:[],path:[h],includes:[f],resolvables:[p]}}return e.prototype.builder=function(e,t){var n=this.builders,o=n[e]||[];return(0,r.HD)(e)&&!(0,r.$K)(t)?o.length>1?o:o[0]:(0,r.HD)(e)&&(0,r.mf)(t)?(n[e]=o,n[e].push(t),function(){return n[e].splice(n[e].indexOf(t,1))&&null}):void 0},e.prototype.build=function(e){var t=this.matcher,n=this.builders,r=this.parentName(e);if(r&&!t.find(r,void 0,!1))return null;for(var s in n)if(n.hasOwnProperty(s)){var a=n[s].reduce((function(e,t){return function(n){return t(n,e)}}),o.ZT);e[s]=a(e)}return e},e.prototype.parentName=function(e){var t=e.name||"",n=t.split(".");if("**"===n.pop()&&n.pop(),n.length){if(e.parent)throw new Error("States that specify the 'parent:' property should not have a '.' in their name ("+t+")");return n.join(".")}return e.parent?(0,r.HD)(e.parent)?e.parent:e.parent.name:""},e.prototype.name=function(e){var t=e.name;if(-1!==t.indexOf(".")||!e.parent)return t;var n=(0,r.HD)(e.parent)?e.parent:e.parent.name;return n?n+"."+t:t},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js":(e,t,n)=>{"use strict";n.d(t,{Q:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/safeConsole.js"),a=function(){function e(e){this._states=e}return e.prototype.isRelative=function(e){return 0===(e=e||"").indexOf(".")||0===e.indexOf("^")},e.prototype.find=function(e,t,n){if(void 0===n&&(n=!0),e||""===e){var a=(0,o.HD)(e),i=a?e:e.name;this.isRelative(i)&&(i=this.resolvePath(i,t));var d=this._states[i];if(d&&(a||!(a||d!==e&&d.self!==e)))return d;if(a&&n){var u=(0,r.VO)(this._states).filter((function(e){return e.__stateObjectCache.nameGlob&&e.__stateObjectCache.nameGlob.matches(i)}));return u.length>1&&s.L.error("stateMatcher.find: Found multiple matches for "+i+" using glob: ",u.map((function(e){return e.name}))),u[0]}}},e.prototype.resolvePath=function(e,t){if(!t)throw new Error("No reference point given for path '"+e+"'");for(var n=this.find(t),o=e.split("."),r=o.length,s=0,a=n;s<r;s++)if(""!==o[s]||0!==s){if("^"!==o[s])break;if(!a.parent)throw new Error("Path '"+e+"' not valid for state '"+n.name+"'");a=a.parent}else a=n;var i=o.slice(s).join(".");return a.name+(a.name&&i?".":"")+i},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateObject.js":(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/glob.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=function(){function e(t){return e.create(t||{})}return e.create=function(t){t=e.isStateClass(t)?new t:t;var n=(0,o.ED)((0,o.ED)(t,e.prototype));return t.$$state=function(){return n},n.self=t,n.__stateObjectCache={nameGlob:s.r.fromString(n.name)},n},e.prototype.is=function(e){return this===e||this.self===e||this.fqn()===e},e.prototype.fqn=function(){if(!(this.parent&&this.parent instanceof this.constructor))return this.name;var e=this.parent.fqn();return e?e+"."+this.name:this.name},e.prototype.root=function(){return this.parent&&this.parent.root()||this},e.prototype.parameters=function(e){return((e=(0,o.ce)(e,{inherit:!0,matchingKeys:null})).inherit&&this.parent&&this.parent.parameters()||[]).concat((0,o.VO)(this.params)).filter((function(t){return!e.matchingKeys||e.matchingKeys.hasOwnProperty(t.id)}))},e.prototype.parameter=function(e,t){return void 0===t&&(t={}),this.url&&this.url.parameter(e,t)||(0,o.sE)((0,o.VO)(this.params),(0,r.OH)("id",e))||t.inherit&&this.parent&&this.parent.parameter(e)},e.prototype.toString=function(){return this.fqn()},e.isStateClass=function(e){return(0,a.mf)(e)&&!0===e.__uiRouterState},e.isStateDeclaration=function(e){return(0,a.mf)(e.$$state)},e.isState=function(e){return(0,a.Kn)(e.__stateObjectCache)},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js":(e,t,n)=>{"use strict";n.d(t,{L:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),s=function(){function e(e,t,n,o){this.router=e,this.states=t,this.builder=n,this.listeners=o,this.queue=[]}return e.prototype.dispose=function(){this.queue=[]},e.prototype.register=function(e){var t=this.queue,n=r.l.create(e),s=n.name;if(!(0,o.HD)(s))throw new Error("State must have a valid name");if(this.states.hasOwnProperty(s)||(0,o.d3)(t.map((0,o.vg)("name")),s))throw new Error("State '"+s+"' is already defined");return t.push(n),this.flush(),n},e.prototype.flush=function(){for(var e=this,t=this,n=t.queue,o=t.states,r=t.builder,s=[],a=[],i={},d=function(t){return e.states.hasOwnProperty(t)&&e.states[t]},u=function(){s.length&&e.listeners.forEach((function(e){return e("registered",s.map((function(e){return e.self})))}))};n.length>0;){var m=n.shift(),l=m.name,_=r.build(m),c=a.indexOf(m);if(_){var h=d(l);if(h&&h.name===l)throw new Error("State '"+l+"' is already defined");var f=d(l+".**");f&&this.router.stateRegistry.deregister(f),o[l]=m,this.attachRoute(m),c>=0&&a.splice(c,1),s.push(m)}else{var p=i[l];if(i[l]=n.length,c>=0&&p===n.length)return n.push(m),u(),o;c<0&&a.push(m),n.push(m)}}return u(),o},e.prototype.attachRoute=function(e){if(!e.abstract&&e.url){var t=this.router.urlService.rules;t.rule(t.urlRuleFactory.create(e))}},e}()},"./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js":(e,t,n)=>{"use strict";n.d(t,{q:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js"),s=n("./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=function(){function e(e){this.router=e,this.states={},this.listeners=[],this.matcher=new o.Q(this.states),this.builder=new r.t(this.matcher,e.urlMatcherFactory),this.stateQueue=new s.L(e,this.states,this.builder,this.listeners),this._registerRoot()}return e.prototype._registerRoot=function(){(this._root=this.stateQueue.register({name:"",url:"^",views:null,params:{"#":{value:null,type:"hash",dynamic:!0}},abstract:!0})).navigable=null},e.prototype.dispose=function(){var e=this;this.stateQueue.dispose(),this.listeners=[],this.get().forEach((function(t){return e.get(t)&&e.deregister(t)}))},e.prototype.onStatesChanged=function(e){return this.listeners.push(e),function(){(0,a.nA)(this.listeners)(e)}.bind(this)},e.prototype.root=function(){return this._root},e.prototype.register=function(e){return this.stateQueue.register(e)},e.prototype._deregisterTree=function(e){var t=this,n=this.get().map((function(e){return e.$$state()})),o=function(e){var t=n.filter((function(t){return-1!==e.indexOf(t.parent)}));return 0===t.length?t:t.concat(o(t))},r=o([e]),s=[e].concat(r).reverse();return s.forEach((function(e){var n=t.router.urlService.rules;n.rules().filter((0,i.OH)("state",e)).forEach((function(e){return n.removeRule(e)})),delete t.states[e.name]})),s},e.prototype.deregister=function(e){var t=this.get(e);if(!t)throw new Error("Can't deregister state; not found: "+e);var n=this._deregisterTree(t.$$state());return this.listeners.forEach((function(e){return e("deregistered",n.map((function(e){return e.self})))})),n},e.prototype.get=function(e,t){var n=this;if(0===arguments.length)return Object.keys(this.states).map((function(e){return n.states[e].self}));var o=this.matcher.find(e,t);return o&&o.self||null},e.prototype.decorator=function(e,t){return this.builder.builder(e,t)},e}()},"./node_modules/@uirouter/core/lib-esm/state/targetState.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>a});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=function(){function e(e,t,n,o){this._stateRegistry=e,this._identifier=t,this._identifier=t,this._params=(0,s.l7)({},n||{}),this._options=(0,s.l7)({},o||{}),this._definition=e.matcher.find(t,this._options.relative)}return e.prototype.name=function(){return this._definition&&this._definition.name||this._identifier},e.prototype.identifier=function(){return this._identifier},e.prototype.params=function(){return this._params},e.prototype.$state=function(){return this._definition},e.prototype.state=function(){return this._definition&&this._definition.self},e.prototype.options=function(){return this._options},e.prototype.exists=function(){return!(!this._definition||!this._definition.self)},e.prototype.valid=function(){return!this.error()},e.prototype.error=function(){var e=this.options().relative;if(!this._definition&&e){var t=e.name?e.name:e;return"Could not resolve '"+this.name()+"' from state '"+t+"'"}return this._definition?this._definition.self?void 0:"State '"+this.name()+"' has an invalid definition":"No such state '"+this.name()+"'"},e.prototype.toString=function(){return"'"+this.name()+"'"+(0,r.Pz)(this.params())},e.prototype.withState=function(t){return new e(this._stateRegistry,t,this._params,this._options)},e.prototype.withParams=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._params,t);return new e(this._stateRegistry,this._identifier,o,this._options)},e.prototype.withOptions=function(t,n){void 0===n&&(n=!1);var o=n?t:(0,s.l7)({},this._options,t);return new e(this._stateRegistry,this._identifier,this._params,o)},e.isDef=function(e){return e&&e.state&&((0,o.HD)(e.state)||(0,o.Kn)(e.state)&&(0,o.HD)(e.state.name))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),a=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),i=function(){function e(e){this.transition=e}return e.prototype.buildHooksForPhase=function(e){var t=this;return this.transition.router.transitionService._pluginapi._getEvents(e).map((function(e){return t.buildHooks(e)})).reduce(o.M7,[]).filter(o.yR)},e.prototype.buildHooks=function(e){var t=this.transition,n=t.treeChanges(),r=this.getMatchingHooks(e,n,t);if(!r)return[];var i,d={transition:t,current:t.options().current};return r.map((function(r){return r.matches(n,t)[e.criteriaMatchPath.name].map((function(n){var i=(0,o.l7)({bind:r.bind,traceData:{hookType:e.name,context:n}},d),u=e.criteriaMatchPath.scope===s.c.STATE?n.state.self:null,m=new a.I(t,u,r,i);return{hook:r,node:n,transitionHook:m}}))})).reduce(o.M7,[]).sort((i=e.reverseSort,void 0===i&&(i=!1),function(e,t){var n=i?-1:1,o=(e.node.state.path.length-t.node.state.path.length)*n;return 0!==o?o:t.hook.priority-e.hook.priority})).map((function(e){return e.transitionHook}))},e.prototype.getMatchingHooks=function(e,t,n){var a=e.hookPhase===s.k.CREATE,i=this.transition.router.transitionService;return(a?[i]:[this.transition,i]).map((function(t){return t.getHooks(e.name)})).filter((0,o.sp)(r.kJ,"broken event named: "+e.name)).reduce(o.M7,[]).filter((function(e){return e.matches(t,n)}))},e}()},"./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js":(e,t,n)=>{"use strict";n.d(t,{cN:()=>s,BU:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js");function s(e,t,n){var r=(0,o.HD)(t)?[t]:t;return!!((0,o.mf)(r)?r:function(e){for(var t=r,n=0;n<t.length;n++){var s=new o.rR(t[n]);if(s&&s.matches(e.name)||!s&&t[n]===e.name)return!0}return!1})(e,n)}var a=function(){function e(e,t,n,o,r,s){void 0===s&&(s={}),this.tranSvc=e,this.eventType=t,this.callback=n,this.matchCriteria=o,this.removeHookFromRegistry=r,this.invokeCount=0,this._deregistered=!1,this.priority=s.priority||0,this.bind=s.bind||null,this.invokeLimit=s.invokeLimit}return e.prototype._matchingNodes=function(e,t,n){if(!0===t)return e;var o=e.filter((function(e){return s(e.state,t,n)}));return o.length?o:null},e.prototype._getDefaultMatchCriteria=function(){return(0,o.js)(this.tranSvc._pluginapi._getPathTypes(),(function(){return!0}))},e.prototype._getMatchingNodes=function(e,t){var n=this,s=(0,o.l7)(this._getDefaultMatchCriteria(),this.matchCriteria);return(0,o.VO)(this.tranSvc._pluginapi._getPathTypes()).reduce((function(a,i){var d=i.scope===r.c.STATE,u=e[i.name]||[],m=d?u:[(0,o.Gb)(u)];return a[i.name]=n._matchingNodes(m,s[i.name],t),a}),{})},e.prototype.matches=function(e,t){var n=this._getMatchingNodes(e,t);return(0,o.VO)(n).every(o.yR)?n:null},e.prototype.deregister=function(){this.removeHookFromRegistry(this),this._deregistered=!0},e}();function i(e,t,n){var r=(e._registeredHooks=e._registeredHooks||{})[n.name]=[],s=(0,o.nA)(r);function i(e,o,i){void 0===i&&(i={});var d=new a(t,n,o,e,s,i);return r.push(d),d.deregister.bind(d)}return e[n.name]=i,i}},"./node_modules/@uirouter/core/lib-esm/transition/interface.js":(e,t,n)=>{"use strict";var o,r;n.d(t,{k:()=>o,c:()=>r}),function(e){e[e.CREATE=0]="CREATE",e[e.BEFORE=1]="BEFORE",e[e.RUN=2]="RUN",e[e.SUCCESS=3]="SUCCESS",e[e.ERROR=4]="ERROR"}(o||(o={})),function(e){e[e.TRANSITION=0]="TRANSITION",e[e.STATE=1]="STATE"}(r||(r={}))},"./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js":(e,t,n)=>{"use strict";n.d(t,{K:()=>o,i:()=>d});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js");!function(e){e[e.SUPERSEDED=2]="SUPERSEDED",e[e.ABORTED=3]="ABORTED",e[e.INVALID=4]="INVALID",e[e.IGNORED=5]="IGNORED",e[e.ERROR=6]="ERROR"}(o||(o={}));var i=0,d=function(){function e(e,t,n){this.$id=i++,this.type=e,this.message=t,this.detail=n}return e.isRejectionPromise=function(t){return t&&"function"==typeof t.then&&(0,a.is)(e)(t._transitionRejection)},e.superseded=function(t,n){var r=new e(o.SUPERSEDED,"The transition has been superseded by a different transition",t);return n&&n.redirected&&(r.redirected=!0),r},e.redirected=function(t){return e.superseded(t,{redirected:!0})},e.invalid=function(t){return new e(o.INVALID,"This transition is invalid",t)},e.ignored=function(t){return new e(o.IGNORED,"The transition was ignored",t)},e.aborted=function(t){return new e(o.ABORTED,"The transition has been aborted",t)},e.errored=function(t){return new e(o.ERROR,"The transition errored",t)},e.normalize=function(t){return(0,a.is)(e)(t)?t:e.errored(t)},e.prototype.toString=function(){var e,t=(e=this.detail)&&e.toString!==Object.prototype.toString?e.toString():(0,s.Pz)(e),n=this;return"Transition Rejection($id: "+n.$id+" type: "+n.type+", message: "+n.message+", detail: "+t+")"},e.prototype.toPromise=function(){return(0,r.l7)((0,r.jv)(this),{_transitionRejection:this})},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js":(e,t,n)=>{"use strict";n.d(t,{t:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),r=function(e,t,n,r,s,a,i,d){void 0===s&&(s=!1),void 0===a&&(a=o.I.HANDLE_RESULT),void 0===i&&(i=o.I.REJECT_ERROR),void 0===d&&(d=!1),this.name=e,this.hookPhase=t,this.hookOrder=n,this.criteriaMatchPath=r,this.reverseSort=s,this.getResultHandler=a,this.getErrorHandler=i,this.synchronous=d}},"./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>c});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/strings.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),i=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),u=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),m=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js"),l=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),_={current:r.ZT,transition:null,traceData:{},bind:null},c=function(){function e(e,t,n,s){var a=this;this.transition=e,this.stateContext=t,this.registeredHook=n,this.options=s,this.isSuperseded=function(){return a.type.hookPhase===o.k.RUN&&!a.options.transition.isActive()},this.options=(0,r.ce)(s,_),this.type=n.eventType}return e.chain=function(e,t){return e.reduce((function(e,t){return e.then((function(){return t.invokeHook()}))}),t||u.u.$q.when())},e.invokeHooks=function(t,n){for(var o=0;o<t.length;o++){var r=t[o].invokeHook();if((0,a.tI)(r)){var s=t.slice(o+1);return e.chain(s,r).then(n)}}return n()},e.runAllHooks=function(e){e.forEach((function(e){return e.invokeHook()}))},e.prototype.logError=function(e){this.transition.router.stateService.defaultErrorHandler()(e)},e.prototype.invokeHook=function(){var e=this,t=this.registeredHook;if(!t._deregistered){var n=this.getNotCurrentRejection();if(n)return n;var o=this.options;d.g4.traceHookInvocation(this,this.transition,o);var r=function(n){return t.eventType.getErrorHandler(e)(n)},s=function(n){return t.eventType.getResultHandler(e)(n)};try{var i=t.callback.call(o.bind,e.transition,e.stateContext);return!this.type.synchronous&&(0,a.tI)(i)?i.catch((function(e){return m.i.normalize(e).toPromise()})).then(s,r):s(i)}catch(e){return r(m.i.normalize(e))}finally{t.invokeLimit&&++t.invokeCount>=t.invokeLimit&&t.deregister()}}},e.prototype.handleHookResult=function(e){var t=this;return this.getNotCurrentRejection()||((0,a.tI)(e)?e.then((function(e){return t.handleHookResult(e)})):(d.g4.traceHookResult(e,this.transition,this.options),!1===e?m.i.aborted("Hook aborted transition").toPromise():(0,i.is)(l.F)(e)?m.i.redirected(e).toPromise():void 0))},e.prototype.getNotCurrentRejection=function(){var e=this.transition.router;return e._disposed?m.i.aborted("UIRouter instance #"+e.$id+" has been stopped (disposed)").toPromise():this.transition._aborted?m.i.aborted().toPromise():this.isSuperseded()?m.i.superseded(this.options.current()).toPromise():void 0},e.prototype.toString=function(){var e=this.options,t=this.registeredHook,n=(0,i.Qc)("traceData.hookType")(e)||"internal",o=(0,i.Qc)("traceData.context.state.name")(e)||(0,i.Qc)("traceData.context")(e)||"unknown",r=(0,s.iC)(t.callback);return n+" context: "+o+", "+(0,s.BS)(200,r)},e.HANDLE_RESULT=function(e){return function(t){return e.handleHookResult(t)}},e.LOG_REJECTED_RESULT=function(e){return function(t){(0,a.tI)(t)&&t.catch((function(t){return e.logError(m.i.normalize(t))}))}},e.LOG_ERROR=function(e){return function(t){return e.logError(t)}},e.REJECT_ERROR=function(e){return function(e){return(0,r.jv)(e)}},e.THROW_ERROR=function(e){return function(e){throw e}},e}()},"./node_modules/@uirouter/core/lib-esm/transition/transitionService.js":(e,t,n)=>{"use strict";n.d(t,{Z:()=>C,q:()=>W});var o=n("./node_modules/@uirouter/core/lib-esm/transition/interface.js"),r=n("./node_modules/@uirouter/core/lib-esm/transition/transition.js"),s=n("./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js"),a=n("./node_modules/@uirouter/core/lib-esm/router.js"),i=n("./node_modules/@uirouter/core/lib-esm/resolve/index.js"),d=n("./node_modules/@uirouter/core/lib-esm/common/index.js");function u(e){e.addResolvable(i.XU.fromData(a.a,e.router),""),e.addResolvable(i.XU.fromData(r.u,e),""),e.addResolvable(i.XU.fromData("$transition$",e),""),e.addResolvable(i.XU.fromData("$stateParams",e.params()),""),e.entering().forEach((function(t){e.addResolvable(i.XU.fromData("$state$",t),t)}))}var m=["$transition$",r.u],l=(0,d.d3)(m),_=function(e){var t=(0,d.VO)(e.treeChanges()).reduce(d.M7,[]).reduce(d.v_,[]),n=function(e){return l(e.token)?i.XU.fromData(e.token,null):e};t.forEach((function(e){e.resolvables=e.resolvables.map(n)}))},c=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),h=n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),f=n("./node_modules/@uirouter/core/lib-esm/state/targetState.js"),p=function(e){var t=e.to().redirectTo;if(t){var n=e.router.stateService;return(0,c.mf)(t)?h.u.$q.when(t(e)).then(o):o(t)}function o(t){if(t)return t instanceof f.F?t:(0,c.HD)(t)?n.target(t,e.params(),e.options()):t.state||t.params?n.target(t.state||e.to(),t.params||e.params(),e.options()):void 0}};function M(e){return function(t,n){return(0,n.$$state()[e])(t,n)}}var y=M("onExit"),L=M("onRetain"),Y=M("onEnter"),g=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),v=n("./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js"),k=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),j=1e3,w=function(e){return new v.l(e.treeChanges().to).resolvePath("EAGER",e).then(g.ZT)},b=function(e,t){return new v.l(e.treeChanges().to).subContext(t.$$state()).resolvePath("LAZY",e).then(g.ZT)},D=function(e){return new v.l(e.treeChanges().to).resolvePath("LAZY",e).then(g.ZT)},T=function(e){var t=h.u.$q,n=e.views("entering");if(n.length)return t.all(n.map((function(e){return t.when(e.load())}))).then(g.ZT)},S=function(e){var t=e.views("entering"),n=e.views("exiting");if(t.length||n.length){var o=e.router.viewService;n.forEach((function(e){return o.deactivateViewConfig(e)})),t.forEach((function(e){return o.activateViewConfig(e)})),o.sync()}},H=function(e){var t=e.router.globals,n=function(){t.transition===e&&(t.transition=null)};e.onSuccess({},(function(){t.successfulTransitions.enqueue(e),t.$current=e.$to(),t.current=t.$current.self,(0,g.JG)(e.params(),t.params)}),{priority:1e4}),e.promise.then(n,n)},x=function(e){var t=e.options(),n=e.router.stateService,o=e.router.urlRouter;if("url"!==t.source&&t.location&&n.$current.navigable){var r={replace:"replace"===t.location};o.push(n.$current.navigable.url,n.params,r)}o.update(!0)},E=n("./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js"),P=n("./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js"),O=n("./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js"),$=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),A=n("./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js");function F(e){var t=e._ignoredReason();if(t){$.g4.traceTransitionIgnored(e);var n=e.router.globals.transition;return"SameAsCurrent"===t&&n&&n.abort(),A.i.ignored().toPromise()}}function R(e){if(!e.valid())throw new Error(e.error().toString())}var W={location:!0,relative:null,inherit:!1,notify:!0,reload:!1,supercede:!0,custom:{},current:function(){return null},source:"unknown"},C=function(){function e(e){this._transitionCount=0,this._eventTypes=[],this._registeredHooks={},this._criteriaPaths={},this._router=e,this.$view=e.viewService,this._deregisterHookFns={},this._pluginapi=(0,g.WR)((0,k.P0)(this),{},(0,k.P0)(this),["_definePathType","_defineEvent","_getPathTypes","_getEvents","getHooks"]),this._defineCorePaths(),this._defineCoreEvents(),this._registerCoreTransitionHooks(),e.globals.successfulTransitions.onEvict(_)}return e.prototype.onCreate=function(e,t,n){},e.prototype.onBefore=function(e,t,n){},e.prototype.onStart=function(e,t,n){},e.prototype.onExit=function(e,t,n){},e.prototype.onRetain=function(e,t,n){},e.prototype.onEnter=function(e,t,n){},e.prototype.onFinish=function(e,t,n){},e.prototype.onSuccess=function(e,t,n){},e.prototype.onError=function(e,t,n){},e.prototype.dispose=function(e){(0,g.VO)(this._registeredHooks).forEach((function(e){return e.forEach((function(t){t._deregistered=!0,(0,g.nA)(e,t)}))}))},e.prototype.create=function(e,t){return new r.u(e,t,this._router)},e.prototype._defineCoreEvents=function(){var e=o.k,t=O.I,n=this._criteriaPaths,r=!1,s=!0;this._defineEvent("onCreate",e.CREATE,0,n.to,r,t.LOG_REJECTED_RESULT,t.THROW_ERROR,s),this._defineEvent("onBefore",e.BEFORE,0,n.to),this._defineEvent("onStart",e.RUN,0,n.to),this._defineEvent("onExit",e.RUN,100,n.exiting,!0),this._defineEvent("onRetain",e.RUN,200,n.retained),this._defineEvent("onEnter",e.RUN,300,n.entering),this._defineEvent("onFinish",e.RUN,400,n.to),this._defineEvent("onSuccess",e.SUCCESS,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s),this._defineEvent("onError",e.ERROR,0,n.to,r,t.LOG_REJECTED_RESULT,t.LOG_ERROR,s)},e.prototype._defineCorePaths=function(){var e=o.c.STATE,t=o.c.TRANSITION;this._definePathType("to",t),this._definePathType("from",t),this._definePathType("exiting",e),this._definePathType("retained",e),this._definePathType("entering",e)},e.prototype._defineEvent=function(e,t,n,o,r,a,i,d){void 0===r&&(r=!1),void 0===a&&(a=O.I.HANDLE_RESULT),void 0===i&&(i=O.I.REJECT_ERROR),void 0===d&&(d=!1);var u=new P.t(e,t,n,o,r,a,i,d);this._eventTypes.push(u),(0,s.BU)(this,this,u)},e.prototype._getEvents=function(e){return((0,c.$K)(e)?this._eventTypes.filter((function(t){return t.hookPhase===e})):this._eventTypes.slice()).sort((function(e,t){var n=e.hookPhase-t.hookPhase;return 0===n?e.hookOrder-t.hookOrder:n}))},e.prototype._definePathType=function(e,t){this._criteriaPaths[e]={name:e,scope:t}},e.prototype._getPathTypes=function(){return this._criteriaPaths},e.prototype.getHooks=function(e){return this._registeredHooks[e]},e.prototype._registerCoreTransitionHooks=function(){var e=this._deregisterHookFns;e.addCoreResolves=this.onCreate({},u),e.ignored=this.onBefore({},F,{priority:-9999}),e.invalid=function(e){return e.onBefore({},R,{priority:-1e4})}(this),e.redirectTo=function(e){return e.onStart({to:function(e){return!!e.redirectTo}},p)}(this),e.onExit=function(e){return e.onExit({exiting:function(e){return!!e.onExit}},y)}(this),e.onRetain=function(e){return e.onRetain({retained:function(e){return!!e.onRetain}},L)}(this),e.onEnter=function(e){return e.onEnter({entering:function(e){return!!e.onEnter}},Y)}(this),e.eagerResolve=function(e){return e.onStart({},w,{priority:j})}(this),e.lazyResolve=function(e){return e.onEnter({entering:(0,k.P0)(!0)},b,{priority:j})}(this),e.resolveAll=function(e){return e.onFinish({},D,{priority:j})}(this),e.loadViews=function(e){return e.onFinish({},T)}(this),e.activateViews=function(e){return e.onSuccess({},S)}(this),e.updateGlobals=function(e){return e.onCreate({},H)}(this),e.updateUrl=function(e){return e.onSuccess({},x,{priority:9999})}(this),e.lazyLoad=(0,E.v)(this)},e}()},"./node_modules/@uirouter/core/lib-esm/url/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/url/urlConfig.js":(e,t,n)=>{"use strict";n.d(t,{F:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=function(){function e(e){var t=this;this.router=e,this.paramTypes=new o.ParamTypes,this._decodeParams=!0,this._isCaseInsensitive=!1,this._isStrictMode=!0,this._defaultSquashPolicy=!1,this.dispose=function(){return t.paramTypes.dispose()},this.baseHref=function(){return t.router.locationConfig.baseHref()},this.hashPrefix=function(e){return t.router.locationConfig.hashPrefix(e)},this.host=function(){return t.router.locationConfig.host()},this.html5Mode=function(){return t.router.locationConfig.html5Mode()},this.port=function(){return t.router.locationConfig.port()},this.protocol=function(){return t.router.locationConfig.protocol()}}return e.prototype.caseInsensitive=function(e){return this._isCaseInsensitive=(0,r.$K)(e)?e:this._isCaseInsensitive},e.prototype.defaultSquashPolicy=function(e){if((0,r.$K)(e)&&!0!==e&&!1!==e&&!(0,r.HD)(e))throw new Error("Invalid squash policy: "+e+". Valid policies: false, true, arbitrary-string");return this._defaultSquashPolicy=(0,r.$K)(e)?e:this._defaultSquashPolicy},e.prototype.strictMode=function(e){return this._isStrictMode=(0,r.$K)(e)?e:this._isStrictMode},e.prototype.type=function(e,t,n){var o=this.paramTypes.type(e,t,n);return(0,r.$K)(t)?this:o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js":(e,t,n)=>{"use strict";n.d(t,{y:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),s=n("./node_modules/@uirouter/core/lib-esm/params/index.js"),a=function(){return(a=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e}).apply(this,arguments)},i=function(){function e(e){this.router=e}return e.prototype.fromConfig=function(e,t,n){return new s.Param(e,t,s.DefType.CONFIG,this.router.urlService.config,n)},e.prototype.fromPath=function(e,t,n){return new s.Param(e,t,s.DefType.PATH,this.router.urlService.config,n)},e.prototype.fromSearch=function(e,t,n){return new s.Param(e,t,s.DefType.SEARCH,this.router.urlService.config,n)},e}(),d=function(){function e(e){var t=this;this.router=e,this.paramFactory=new i(this.router),this.UrlMatcher=r.x,this.Param=s.Param,this.caseInsensitive=function(e){return t.router.urlService.config.caseInsensitive(e)},this.defaultSquashPolicy=function(e){return t.router.urlService.config.defaultSquashPolicy(e)},this.strictMode=function(e){return t.router.urlService.config.strictMode(e)},this.type=function(e,n,o){return t.router.urlService.config.type(e,n,o)||t}}return e.prototype.compile=function(e,t){var n=this.router.urlService.config,s=t&&!t.state&&t.params;t=s?a({state:{params:s}},t):t;var i={strict:n._isStrictMode,caseInsensitive:n._isCaseInsensitive,decodeParams:n._decodeParams};return new r.x(e,n.paramTypes,this.paramFactory,(0,o.l7)(i,t))},e.prototype.isMatcher=function(e){if(!(0,o.Kn)(e))return!1;var t=!0;return(0,o.Ed)(r.x.prototype,(function(n,r){(0,o.mf)(n)&&(t=t&&(0,o.$K)(e[r])&&(0,o.mf)(e[r]))})),t},e.prototype.$get=function(){var e=this.router.urlService.config;return e.paramTypes.enqueue=!1,e.paramTypes._flushTypeQueue(),this},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRouter.js":(e,t,n)=>{"use strict";n.d(t,{g:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js"),s=function(){function e(e){var t=this;this.router=e,this.sync=function(e){return t.router.urlService.sync(e)},this.listen=function(e){return t.router.urlService.listen(e)},this.deferIntercept=function(e){return t.router.urlService.deferIntercept(e)},this.match=function(e){return t.router.urlService.match(e)},this.initial=function(e){return t.router.urlService.rules.initial(e)},this.otherwise=function(e){return t.router.urlService.rules.otherwise(e)},this.removeRule=function(e){return t.router.urlService.rules.removeRule(e)},this.rule=function(e){return t.router.urlService.rules.rule(e)},this.rules=function(){return t.router.urlService.rules.rules()},this.sort=function(e){return t.router.urlService.rules.sort(e)},this.when=function(e,n,o){return t.router.urlService.rules.when(e,n,o)},this.urlRuleFactory=new r.I(e)}return e.prototype.update=function(e){var t=this.router.locationService;e?this.location=t.url():t.url()!==this.location&&t.url(this.location,!0)},e.prototype.push=function(e,t,n){var o=n&&!!n.replace;this.router.urlService.url(e.format(t||{}),o)},e.prototype.href=function(e,t,n){var r=e.format(t);if(null==r)return null;n=n||{absolute:!1};var s=this.router.urlService.config,a=s.html5Mode();if(a||null===r||(r="#"+s.hashPrefix()+r),r=function(e,t,n,r){return"/"===r?e:t?(0,o.Lb)(r)+e:n?r.slice(1)+e:e}(r,a,n.absolute,s.baseHref()),!n.absolute||!r)return r;var i=!a&&r?"/":"",d=s.port(),u=80===d||443===d?"":":"+d;return[s.protocol(),"://",s.host(),u,i,r].join("")},Object.defineProperty(e.prototype,"interceptDeferred",{get:function(){return this.router.urlService.interceptDeferred},enumerable:!1,configurable:!0}),e}()},"./node_modules/@uirouter/core/lib-esm/url/urlRule.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>d,n:()=>u});var o=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),i=n("./node_modules/@uirouter/core/lib-esm/state/stateObject.js"),d=function(){function e(e){this.router=e}return e.prototype.compile=function(e){return this.router.urlMatcherFactory.compile(e)},e.prototype.create=function(e,t){var n=this,s=i.l.isState,d=i.l.isStateDeclaration,m=(0,a.uj)([[r.HD,function(e){return m(n.compile(e))}],[(0,a.is)(o.x),function(e){return n.fromUrlMatcher(e,t)}],[(0,a.or)(s,d),function(e){return n.fromState(e,n.router)}],[(0,a.is)(RegExp),function(e){return n.fromRegExp(e,t)}],[r.mf,function(e){return new u(e,t)}]]),l=m(e);if(!l)throw new Error("invalid 'what' in when()");return l},e.prototype.fromUrlMatcher=function(e,t){var n=t;(0,r.HD)(t)&&(t=this.router.urlMatcherFactory.compile(t)),(0,a.is)(o.x)(t)&&(n=function(e){return t.format(e)});var i={urlMatcher:e,matchPriority:function(t){var n=e.parameters().filter((function(e){return e.isOptional}));return n.length?n.filter((function(e){return t[e.id]})).length/n.length:1e-6},type:"URLMATCHER"};return(0,s.l7)(new u((function(t){var n=e.exec(t.path,t.search,t.hash);return e.validates(n)&&n}),n),i)},e.prototype.fromState=function(e,t){var n=i.l.isStateDeclaration(e)?e.$$state():e,o={state:n,type:"STATE"};return(0,s.l7)(this.fromUrlMatcher(n.url,(function(e){var o=t.stateService,r=t.globals;o.href(n,e)!==o.href(r.current,r.params)&&o.transitionTo(n,e,{inherit:!0,source:"url"})})),o)},e.prototype.fromRegExp=function(e,t){if(e.global||e.sticky)throw new Error("Rule RegExp must not be global or sticky");var n=(0,r.HD)(t)?function(e){return t.replace(/\$(\$|\d{1,2})/,(function(t,n){return e["$"===n?0:Number(n)]}))}:t,o={regexp:e,type:"REGEXP"};return(0,s.l7)(new u((function(t){return e.exec(t.path)}),n),o)},e.isUrlRule=function(e){return e&&["type","match","handler"].every((function(t){return(0,r.$K)(e[t])}))},e}(),u=function(e,t){var n=this;this.match=e,this.type="RAW",this.matchPriority=function(e){return 0-n.$id},this.handler=t||s.yR}},"./node_modules/@uirouter/core/lib-esm/url/urlRules.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var o,r=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlMatcher.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),i=n("./node_modules/@uirouter/core/lib-esm/url/urlRule.js");function d(e){if(!((0,a.mf)(e)||(0,a.HD)(e)||(0,a.is)(r.TargetState)(e)||r.TargetState.isDef(e)))throw new Error("'handler' must be a string, function, TargetState, or have a state: 'newtarget' property");return(0,a.mf)(e)?e:(0,a.P0)(e)}o=function(e,t){var n=function(e,t){return(t.priority||0)-(e.priority||0)}(e,t);return 0!==n||0!==(n=function(e,t){var n={STATE:4,URLMATCHER:4,REGEXP:3,RAW:2,OTHER:1};return(n[e.type]||0)-(n[t.type]||0)}(e,t))||0!==(n=function(e,t){return e.urlMatcher&&t.urlMatcher?s.x.compare(e.urlMatcher,t.urlMatcher):0}(e,t))?n:function(e,t){var n={STATE:!0,URLMATCHER:!0};return n[e.type]&&n[t.type]?0:(e.$id||0)-(t.$id||0)}(e,t)};var u=function(){function e(e){this.router=e,this._sortFn=o,this._rules=[],this._id=0,this.urlRuleFactory=new i.I(e)}return e.prototype.dispose=function(e){this._rules=[],delete this._otherwiseFn},e.prototype.initial=function(e){var t=d(e);this.rule(this.urlRuleFactory.create((function(e,t){return 0===t.globals.transitionHistory.size()&&!!/^\/?$/.exec(e.path)}),t))},e.prototype.otherwise=function(e){var t=d(e);this._otherwiseFn=this.urlRuleFactory.create((0,a.P0)(!0),t),this._sorted=!1},e.prototype.removeRule=function(e){(0,a.nA)(this._rules,e)},e.prototype.rule=function(e){var t=this;if(!i.I.isUrlRule(e))throw new Error("invalid rule");return e.$id=this._id++,e.priority=e.priority||0,this._rules.push(e),this._sorted=!1,function(){return t.removeRule(e)}},e.prototype.rules=function(){return this.ensureSorted(),this._rules.concat(this._otherwiseFn?[this._otherwiseFn]:[])},e.prototype.sort=function(e){for(var t=this.stableSort(this._rules,this._sortFn=e||this._sortFn),n=0,o=0;o<t.length;o++)t[o]._group=n,o<t.length-1&&0!==this._sortFn(t[o],t[o+1])&&n++;this._rules=t,this._sorted=!0},e.prototype.ensureSorted=function(){this._sorted||this.sort()},e.prototype.stableSort=function(e,t){var n=e.map((function(e,t){return{elem:e,idx:t}}));return n.sort((function(e,n){var o=t(e.elem,n.elem);return 0===o?e.idx-n.idx:o})),n.map((function(e){return e.elem}))},e.prototype.when=function(e,t,n){var o=this.urlRuleFactory.create(e,t);return(0,a.$K)(n&&n.priority)&&(o.priority=n.priority),this.rule(o),o},e}()},"./node_modules/@uirouter/core/lib-esm/url/urlService.js":(e,t,n)=>{"use strict";n.d(t,{i:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/url/urlRules.js"),s=n("./node_modules/@uirouter/core/lib-esm/url/urlConfig.js"),a=n("./node_modules/@uirouter/core/lib-esm/state/index.js"),i=function(){function e(e){var t=this;this.router=e,this.interceptDeferred=!1,this.rules=new r.h(this.router),this.config=new s.F(this.router),this.url=function(e,n,o){return t.router.locationService.url(e,n,o)},this.path=function(){return t.router.locationService.path()},this.search=function(){return t.router.locationService.search()},this.hash=function(){return t.router.locationService.hash()},this.onChange=function(e){return t.router.locationService.onChange(e)}}return e.prototype.dispose=function(){this.listen(!1),this.rules.dispose()},e.prototype.parts=function(){return{path:this.path(),search:this.search(),hash:this.hash()}},e.prototype.sync=function(e){if(!e||!e.defaultPrevented){var t=this.router,n=t.urlService,r=t.stateService,s={path:n.path(),search:n.search(),hash:n.hash()},i=this.match(s);(0,o.uj)([[o.HD,function(e){return n.url(e,!0)}],[a.TargetState.isDef,function(e){return r.go(e.state,e.params,e.options)}],[(0,o.is)(a.TargetState),function(e){return r.go(e.state(),e.params(),e.options())}]])(i&&i.rule.handler(i.match,s,this.router))}},e.prototype.listen=function(e){var t=this;if(!1!==e)return this._stopListeningFn=this._stopListeningFn||this.router.urlService.onChange((function(e){return t.sync(e)}));this._stopListeningFn&&this._stopListeningFn(),delete this._stopListeningFn},e.prototype.deferIntercept=function(e){void 0===e&&(e=!0),this.interceptDeferred=e},e.prototype.match=function(e){e=(0,o.l7)({path:"",search:{},hash:""},e);for(var t,n,r,s=this.rules.rules(),a=0;a<s.length&&(!t||t.rule._group===s[a]._group);a++){var i=(void 0,(r=(n=s[a]).match(e,this.router))&&{match:r,rule:n,weight:n.matchPriority(r)});t=!t||i&&i.weight>t.weight?i:t}return t},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/vanilla/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js":(e,t,n)=>{"use strict";n.d(t,{U:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),s=function(){function e(e,t){var n=this;this.fireAfterUpdate=t,this._listeners=[],this._listener=function(e){return n._listeners.forEach((function(t){return t(e)}))},this.hash=function(){return(0,r.en)(n._get()).hash},this.path=function(){return(0,r.en)(n._get()).path},this.search=function(){return(0,r.Qf)((0,r.en)(n._get()).search)},this._location=o.Jz.location,this._history=o.Jz.history}return e.prototype.url=function(e,t){return void 0===t&&(t=!0),(0,o.$K)(e)&&e!==this._get()&&(this._set(null,null,e,t),this.fireAfterUpdate&&this._listeners.forEach((function(t){return t({url:e})}))),(0,r.Q2)(this)},e.prototype.onChange=function(e){var t=this;return this._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}},e.prototype.dispose=function(e){(0,o.Wk)(this._listeners)},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{u:()=>r});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=function(){function e(e,t){void 0===t&&(t=!1),this._isHtml5=t,this._baseHref=void 0,this._hashPrefix=""}return e.prototype.port=function(){return location.port?Number(location.port):"https"===this.protocol()?443:80},e.prototype.protocol=function(){return location.protocol.replace(/:/g,"")},e.prototype.host=function(){return location.hostname},e.prototype.html5Mode=function(){return this._isHtml5},e.prototype.hashPrefix=function(e){return(0,o.$K)(e)?this._hashPrefix=e:this._hashPrefix},e.prototype.baseHref=function(e){return(0,o.$K)(e)&&(this._baseHref=e),(0,o.o8)(this._baseHref)&&(this._baseHref=this.getBaseHref()),this._baseHref},e.prototype.getBaseHref=function(){var e=document.getElementsByTagName("base")[0];return e&&e.href?e.href.replace(/^([^/:]*:)?\/\/[^/]*/,""):this._isHtml5?"/":location.pathname||"/"},e.prototype.dispose=function(){},e}()},"./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js":(e,t,n)=>{"use strict";n.d(t,{R:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!1)||this;return r.Jz.addEventListener("hashchange",n._listener,!1),n}return a(t,e),t.prototype._get=function(){return(0,r.Ld)(this._location.hash)},t.prototype._set=function(e,t,n,o){this._location.hash=n},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),r.Jz.removeEventListener("hashchange",this._listener)},t}(s.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/injector.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js":(e,t,n)=>{"use strict";n.d(t,{W:()=>s});var o=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),s=function(){var e=this;this.dispose=r.ZT,this._baseHref="",this._port=80,this._protocol="http",this._host="localhost",this._hashPrefix="",this.port=function(){return e._port},this.protocol=function(){return e._protocol},this.host=function(){return e._host},this.baseHref=function(){return e._baseHref},this.html5Mode=function(){return!1},this.hashPrefix=function(t){return(0,o.$K)(t)?e._hashPrefix=t:e._hashPrefix}}},"./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),a=function(e){function t(t){return e.call(this,t,!0)||this}return s(t,e),t.prototype._get=function(){return this._url},t.prototype._set=function(e,t,n,o){this._url=n},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js":(e,t,n)=>{"use strict";var o=n("./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js"),r=n("./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/vanilla/utils.js"),a=n("./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js"),i=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js"),d=n("./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js");n("./node_modules/@uirouter/core/lib-esm/vanilla/injector.js"),n("./node_modules/@uirouter/core/lib-esm/vanilla/q.js"),n("./node_modules/@uirouter/core/lib-esm/common/coreservices.js"),(0,s._D)("vanilla.hashBangLocation",!1,r.R,o.u),(0,s._D)("vanilla.pushStateLocation",!0,a.h,o.u),(0,s._D)("vanilla.memoryLocation",!1,i.I,d.W)},"./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js":(e,t,n)=>{"use strict";n.d(t,{h:()=>i});var o,r=n("./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),a=(o=function(e,t){return(o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)},function(e,t){function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),i=function(e){function t(t){var n=e.call(this,t,!0)||this;return n._config=t.urlService.config,s.Jz.addEventListener("popstate",n._listener,!1),n}return a(t,e),t.prototype._getBasePrefix=function(){return(0,s.Lb)(this._config.baseHref())},t.prototype._get=function(){var e=this._location,t=e.pathname,n=e.hash,o=e.search;o=(0,s.C7)(o)[1],n=(0,s.cW)(n)[1];var r=this._getBasePrefix(),a=t===this._config.baseHref(),i=t.substr(0,r.length)===r;return(t=a?"/":i?t.substring(r.length):t)+(o?"?"+o:"")+(n?"#"+n:"")},t.prototype._set=function(e,t,n,o){var r=this._getBasePrefix(),s=n&&"/"!==n[0]?"/":"",a=""===n||"/"===n?this._config.baseHref():r+s+n;o?this._history.replaceState(e,t,a):this._history.pushState(e,t,a)},t.prototype.dispose=function(t){e.prototype.dispose.call(this,t),s.Jz.removeEventListener("popstate",this._listener)},t}(r.U)},"./node_modules/@uirouter/core/lib-esm/vanilla/q.js":(e,t,n)=>{"use strict";n("./node_modules/@uirouter/core/lib-esm/common/index.js")},"./node_modules/@uirouter/core/lib-esm/vanilla/utils.js":(e,t,n)=>{"use strict";n.d(t,{Qf:()=>s,en:()=>a,Q2:()=>i,_D:()=>d});var o=n("./node_modules/@uirouter/core/lib-esm/common/index.js"),r=function(e,t){var n=t[0],r=t[1];return e.hasOwnProperty(n)?(0,o.kJ)(e[n])?e[n].push(r):e[n]=[e[n],r]:e[n]=r,e},s=function(e){return e.split("&").filter(o.yR).map(o.Fb).reduce(r,{})};function a(e){var t=function(e){return e||""},n=(0,o.cW)(e).map(t),r=n[0],s=n[1],a=(0,o.C7)(r).map(t);return{path:a[0],search:a[1],hash:s,url:e}}var i=function(e){var t=e.path(),n=e.search(),r=e.hash(),s=Object.keys(n).map((function(e){var t=n[e];return((0,o.kJ)(t)?t:[t]).map((function(t){return e+"="+t}))})).reduce(o.M7,[]).join("&");return t+(s?"?"+s:"")+(r?"#"+r:"")};function d(e,t,n,o){return function(r){var s=r.locationService=new n(r),a=r.locationConfig=new o(r,t);return{name:e,service:s,configuration:a,dispose:function(e){e.dispose(s),e.dispose(a)}}}}},"./node_modules/@uirouter/core/lib-esm/view/interface.js":()=>{},"./node_modules/@uirouter/core/lib-esm/view/view.js":(e,t,n)=>{"use strict";n.d(t,{s:()=>i});var o=n("./node_modules/@uirouter/core/lib-esm/common/common.js"),r=n("./node_modules/@uirouter/core/lib-esm/common/hof.js"),s=n("./node_modules/@uirouter/core/lib-esm/common/predicates.js"),a=n("./node_modules/@uirouter/core/lib-esm/common/trace.js"),i=function(){function e(e){var t=this;this.router=e,this._uiViews=[],this._viewConfigs=[],this._viewConfigFactories={},this._listeners=[],this._pluginapi={_rootViewContext:this._rootViewContext.bind(this),_viewConfigFactory:this._viewConfigFactory.bind(this),_registeredUIView:function(e){return(0,o.sE)(t._uiViews,(function(n){return t.router.$id+"."+n.id===e}))},_registeredUIViews:function(){return t._uiViews},_activeViewConfigs:function(){return t._viewConfigs},_onSync:function(e){return t._listeners.push(e),function(){return(0,o.nA)(t._listeners,e)}}}}return e.normalizeUIViewTarget=function(e,t){void 0===t&&(t="");var n=t.split("@"),o=n[0]||"$default",r=(0,s.HD)(n[1])?n[1]:"^",a=/^(\^(?:\.\^)*)\.(.*$)/.exec(o);if(a&&(r=a[1],o=a[2]),"!"===o.charAt(0)&&(o=o.substr(1),r=""),/^(\^(?:\.\^)*)$/.exec(r)){var i=r.split(".").reduce((function(e,t){return e.parent}),e);r=i.name}else"."===r&&(r=e.name);return{uiViewName:o,uiViewContextAnchor:r}},e.prototype._rootViewContext=function(e){return this._rootContext=e||this._rootContext},e.prototype._viewConfigFactory=function(e,t){this._viewConfigFactories[e]=t},e.prototype.createViewConfig=function(e,t){var n=this._viewConfigFactories[t.$type];if(!n)throw new Error("ViewService: No view config factory registered for type "+t.$type);var o=n(e,t);return(0,s.kJ)(o)?o:[o]},e.prototype.deactivateViewConfig=function(e){a.g4.traceViewServiceEvent("<- Removing",e),(0,o.nA)(this._viewConfigs,e)},e.prototype.activateViewConfig=function(e){a.g4.traceViewServiceEvent("-> Registering",e),this._viewConfigs.push(e)},e.prototype.sync=function(){var t=this,n=this._uiViews.map((function(e){return[e.fqn,e]})).reduce(o.bb,{});function s(e){for(var t=e.viewDecl.$context,n=0;++n&&t.parent;)t=t.parent;return n}var i=(0,r.WA)((function(e,t,n,o){return t*(e(n)-e(o))})),d=this._uiViews.sort(i((function(e){var t=function(e){return e&&e.parent?t(e.parent)+1:1};return 1e4*e.fqn.split(".").length+t(e.creationContext)}),1)).map((function(o){var r=t._viewConfigs.filter(e.matches(n,o));return r.length>1&&r.sort(i(s,-1)),{uiView:o,viewConfig:r[0]}})),u=d.map((function(e){return e.viewConfig})),m=this._viewConfigs.filter((function(e){return!(0,o.d3)(u,e)})).map((function(e){return{uiView:void 0,viewConfig:e}}));d.forEach((function(e){-1!==t._uiViews.indexOf(e.uiView)&&e.uiView.configUpdated(e.viewConfig)}));var l=d.concat(m);this._listeners.forEach((function(e){return e(l)})),a.g4.traceViewSync(l)},e.prototype.registerUIView=function(e){a.g4.traceViewServiceUIViewEvent("-> Registering",e);var t=this._uiViews;return t.filter((function(t){return t.fqn===e.fqn&&t.$type===e.$type})).length&&a.g4.traceViewServiceUIViewEvent("!!!! duplicate uiView named:",e),t.push(e),this.sync(),function(){-1!==t.indexOf(e)?(a.g4.traceViewServiceUIViewEvent("<- Deregistering",e),(0,o.nA)(t)(e)):a.g4.traceViewServiceUIViewEvent("Tried removing non-registered uiView",e)}},e.prototype.available=function(){return this._uiViews.map((0,r.vg)("fqn"))},e.prototype.active=function(){return this._uiViews.filter((0,r.vg)("$config")).map((0,r.vg)("name"))},e.matches=function(e,t){return function(n){if(t.$type!==n.viewDecl.$type)return!1;var r=n.viewDecl,s=r.$uiViewName.split("."),a=t.fqn.split(".");if(!(0,o.fS)(s,a.slice(0-s.length)))return!1;var i=1-s.length||void 0,d=a.slice(0,i).join("."),u=e[d].creationContext;return r.$uiViewContextAnchor===(u&&u.name)}},e}()},"./node_modules/angular-aria/angular-aria.js":()=>{!function(e,t){"use strict";var n="ngAriaDisable",o=t.module("ngAria",["ng"]).info({angularVersion:"1.8.2"}).provider("$aria",(function(){var e={ariaHidden:!0,ariaChecked:!0,ariaReadonly:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaValue:!0,tabindex:!0,bindKeydown:!0,bindRoleForClick:!0};function o(t,o,r,a){return function(i,d,u){if(!u.hasOwnProperty(n)){var m=u.$normalize(o);!e[m]||s(d,r)||u[m]||i.$watch(u[t],(function(e){e=a?!e:!!e,d.attr(o,e)}))}}}this.config=function(n){e=t.extend(e,n)},this.$get=function(){return{config:function(t){return e[t]},$$watchExpr:o}}})),r=["BUTTON","A","INPUT","TEXTAREA","SELECT","DETAILS","SUMMARY"],s=function(e,t){if(-1!==t.indexOf(e[0].nodeName))return!0};o.directive("ngShow",["$aria",function(e){return e.$$watchExpr("ngShow","aria-hidden",[],!0)}]).directive("ngHide",["$aria",function(e){return e.$$watchExpr("ngHide","aria-hidden",[],!1)}]).directive("ngValue",["$aria",function(e){return e.$$watchExpr("ngValue","aria-checked",r,!1)}]).directive("ngChecked",["$aria",function(e){return e.$$watchExpr("ngChecked","aria-checked",r,!1)}]).directive("ngReadonly",["$aria",function(e){return e.$$watchExpr("ngReadonly","aria-readonly",r,!1)}]).directive("ngRequired",["$aria",function(e){return e.$$watchExpr("ngRequired","aria-required",r,!1)}]).directive("ngModel",["$aria",function(e){function t(t,n,o,a){return e.config(n)&&!o.attr(t)&&(a||!s(o,r))&&("hidden"!==o.attr("type")||"INPUT"!==o[0].nodeName)}function o(e,t){return!t.attr("role")&&t.attr("type")===e&&!s(t,r)}return{restrict:"A",require:"ngModel",priority:200,compile:function(r,s){if(!s.hasOwnProperty(n)){var a=function(e,t){var n=e.type,o=e.role;return"checkbox"===(n||o)||"menuitemcheckbox"===o?"checkbox":"radio"===(n||o)||"menuitemradio"===o?"radio":"range"===n||"progressbar"===o||"slider"===o?"range":""}(s);return{post:function(n,r,s,i){var d=t("tabindex","tabindex",r,!1);function u(){return i.$modelValue}switch(a){case"radio":case"checkbox":o(a,r)&&r.attr("role",a),t("aria-checked","ariaChecked",r,!1)&&n.$watch(u,"radio"===a?function(e){var t=s.value==i.$viewValue;r.attr("aria-checked",t)}:function(){r.attr("aria-checked",!i.$isEmpty(i.$viewValue))}),d&&r.attr("tabindex",0);break;case"range":if(o(a,r)&&r.attr("role","slider"),e.config("ariaValue")){var m=!r.attr("aria-valuemin")&&(s.hasOwnProperty("min")||s.hasOwnProperty("ngMin")),l=!r.attr("aria-valuemax")&&(s.hasOwnProperty("max")||s.hasOwnProperty("ngMax")),_=!r.attr("aria-valuenow");m&&s.$observe("min",(function(e){r.attr("aria-valuemin",e)})),l&&s.$observe("max",(function(e){r.attr("aria-valuemax",e)})),_&&n.$watch(u,(function(e){r.attr("aria-valuenow",e)}))}d&&r.attr("tabindex",0)}!s.hasOwnProperty("ngRequired")&&i.$validators.required&&t("aria-required","ariaRequired",r,!1)&&s.$observe("required",(function(){r.attr("aria-required",!!s.required)})),t("aria-invalid","ariaInvalid",r,!0)&&n.$watch((function(){return i.$invalid}),(function(e){r.attr("aria-invalid",!!e)}))}}}}}}]).directive("ngDisabled",["$aria",function(e){return e.$$watchExpr("ngDisabled","aria-disabled",r,!1)}]).directive("ngMessages",(function(){return{restrict:"A",require:"?ngMessages",link:function(e,t,o,r){o.hasOwnProperty(n)||t.attr("aria-live")||t.attr("aria-live","assertive")}}})).directive("ngClick",["$aria","$parse",function(e,t){return{restrict:"A",compile:function(o,a){if(!a.hasOwnProperty(n)){var i=t(a.ngClick);return function(t,n,o){s(n,r)||(e.config("bindRoleForClick")&&!n.attr("role")&&n.attr("role","button"),e.config("tabindex")&&!n.attr("tabindex")&&n.attr("tabindex",0),!e.config("bindKeydown")||o.ngKeydown||o.ngKeypress||o.ngKeyup||n.on("keydown",(function(e){var n=e.which||e.keyCode;13!==n&&32!==n||(-1!==r.indexOf(e.target.nodeName)||e.target.isContentEditable||e.preventDefault(),t.$apply((function(){i(t,{$event:e})})))})))}}}}}]).directive("ngDblclick",["$aria",function(e){return function(t,o,a){a.hasOwnProperty(n)||!e.config("tabindex")||o.attr("tabindex")||s(o,r)||o.attr("tabindex",0)}}])}(window,window.angular)},"./node_modules/angular-rateit/dist/ng-rateit.js":()=>{angular.module("ngRateIt",["ng"]).directive("ngRateIt",["$q",function(e){"use strict";return{scope:{ngModel:"=",min:"=?min",max:"=?max",step:"=?step",readOnly:"&?readOnly",pristine:"=?pristine",resetable:"&?resetable",starWidth:"=?starWidth",starHeight:"=?starHeight",canelWidth:"=?canelWidth",cancelHeight:"=?cancelHeight",rated:"&?rated",reset:"&?reset",beforeRated:"&?beforeRated",beforeReset:"&?beforeReset"},templateUrl:"ngRateIt/ng-rate-it.html",require:"ngModel",replace:!0,link:function(t,n,o){o.readOnly||(t.readOnly=function(){return!1}),o.resetable||(t.resetable=function(){return!0}),o.beforeRated||(t.beforeRated=function(){var t=e.defer();return t.resolve(),t.promise}),o.rated||(t.rated=function(){}),o.beforeReset||(t.beforeReset=function(){var t=e.defer();return t.resolve(),t.promise}),o.reset||(t.reset=function(){})},controller:"ngRateItController"}}]).controller("ngRateItController",["$scope","$timeout",function(e,t){"use strict";e.isTouch=!!window.hasOwnProperty("ontouchstart")||window.navigator.msMaxTouchPoints>0,e.orgValue=angular.copy(e.ngModel),e.min=e.min||0,e.max=e.max||5,e.step=e.step||.5,e.pristine=e.orgValue===e.ngModel,e.starWidth=e.starWidth||16,e.starPartWidth=e.starWidth*e.step,e.starHeight=e.starHeight||16,e.canelWidth=e.canelWidth||e.starWidth,e.cancelHeight=e.cancelHeight||e.starHeight;var n=e.max-e.min,o=n/e.step,r=e.$watch("ngModel",(function(){e.pristine=e.orgValue===e.ngModel})),s=function(e){return(e+1)/o*n};e.getStartParts=function(){return new Array(o)},e.getStarOffset=function(t){var n=1/e.step;return-e.starWidth/n*(t%n)},e.isSelected=function(t){return s(t)<=e.ngModel-e.min},e.removeRating=function(){e.resetable()&&!e.readOnly()&&e.beforeReset({rating:e.ngModel}).then((function(){e.ngModel=e.min,e.reset({rating:e.ngModel})}))},e.setValue=function(n){if(!e.readOnly()){var o=angular.copy(e.min+s(n));e.beforeRated({rating:o}).then((function(){e.ngModel=o,t((function(){e.rated({rating:e.ngModel})}))}))}},e.$on("$destroy",(function(){r()}))}]).run(["$templateCache",function(e){"use strict";e.put("ngRateIt/ng-rate-it.html",'<div class="ngrateiti needsclick" ng-class="{\'ngrateit-readonly\': readOnly()}"><a ng-if="!readOnly() && resetable()"ng-click="removeRating()"class="ngrateit-reset ngrateit-star needsclick"ng-style="{\'width\': canelWidth+\'px\', \'height\':cancelHeight+\'px\'}"></a><div ng-if="!hide" id="origin" class="ngrateit-rating needsclick" ng-class="{\'ngrateit-hashover\':!isTouch}"><span class="ngrateit-star ngrateit-bg-star needsclick"ng-repeat="i in getStartParts() track by $index" ng-class="{\'ngrateit-selected\': isSelected($index) }"ng-click="setValue($index)"ng-style="{\'width\': starPartWidth+\'px\', \'height\':starHeight+\'px\', \'background-position\': getStarOffset($index)+\'px 0\'}"></span></div></div>')}])},"./src/js/index.module.js":(e,t,n)=>{"use strict";n("./node_modules/angular-animate/index.js"),n("./node_modules/angular-aria/index.js"),n("./node_modules/angular-messages/index.js"),n("./node_modules/angular-material/index.js"),n("./node_modules/angular-resource/index.js"),n("./node_modules/angular-sanitize/index.js"),n("./node_modules/ng-csv/build/ng-csv.min.js"),n("./node_modules/ng-embed/src/ng-embed.js"),n("./node_modules/@uirouter/angularjs/lib-esm/index.js"),n("./node_modules/angular-local-storage/index.js"),n("./node_modules/angular-rateit/dist/ng-rateit.js"),n("./node_modules/@flowjs/ng-flow/dist/ng-flow.js"),n("./node_modules/emojionearea/dist/emojionearea.js"),n("./node_modules/jquery-textcomplete/dist/jquery.textcomplete.js");var o=n("./node_modules/moment/moment.js"),r=n.n(o),s=n("./node_modules/lodash.map/index.js"),a=n.n(s);function i(e,t,n,o,s,i,d,u,m){const l=this;function _(t,n,o){const r=i.get(t)||{};o?delete r[e.location]:r[e.location]=n,i.set(t,r)}function c(n){var o;e.layout.up=n,_(u,e.layout),o=n?"show":"hide",t.parent.postMessage({cmd:o},"*"),e.$$phase||e.$apply()}e.location=e.settings.location,l.$onInit=function(){e.status="init";const o=e.settings.color,r=e.settings.textColor,s=Math.max(document.documentElement.clientHeight,window.innerHeight||0),a=document.documentElement.clientWidth;document.documentElement.style.setProperty("--xc-ws-div-color",o),document.documentElement.style.setProperty("--xc-ws-text-color",r),document.documentElement.style.setProperty("--xc-ws-client-height",s),document.documentElement.style.setProperty("--xc-ws-client-width",a);let d=!1;const l=i.get(m)||{},_=i.get(u)||{};e.visitor=l[e.location]?l[e.location]:{},e.layout=_[e.location]?_[e.location]:{},e.visitor.interaction&&e.layout.up?d=!0:e.layout.up=!0,"bottom_right"===e.settings.alignment&&c(d),n.go(function(){const t=e.settings.online,n=!!(e.visitor&&e.visitor.interaction&&e.visitor.interaction.id),o=Number(e.settings.maxInteractions)&&Number(e.settings.openedInteractions)>=Number(e.settings.maxInteractions);return!!(n||!o&&t)}()?"app.online":"app.offline",null,{location:"replace"});let h="";h=e.settings.online||!e.settings.hideWhenOffline?"init":"offline",t.parent.postMessage({cmd:h,div_color:o,text_color:r,client_height:s,client_width:a},"*");const f=document.createElement("style");document.head.appendChild(f),f.sheet.insertRule(".mdi-send:before {color:"+e.settings.color+"!important}")},l.close=function(){const t=e.visitor.interaction;if(t&&t.id){const s=o.confirm().parent(angular.element(document.querySelector("#chat-app"))).clickOutsideToClose(!0).title(e.settings.closingQuestion||"Do you want to close the interaction?").ok("Ok").cancel("Cancel");o.show(s).then((function(){return d.chatInteraction.customUpdate({id:t.id,closed:!0,closeReason:"contact",closedAt:r()().format("YYYY-MM-DD HH:mm:ss")}).$promise})).then((function(){n.go("app.closing",null,{location:"replace"})})).catch((function(e){console.error("keep open",e)}))}},l.toggle=c,l.download=function(){const t=s.defer(),n=e.visitor.interaction;return n&&n.id&&d.chatInteraction.getMessages({intid:n.id,includeAll:!0}).$promise.then((function(n){t.resolve(a()(n.rows.slice(1),(function(t){let n;if("in"===t.direction&&(n=e.settings.customerAlias||e.visitor.from||"Visitor"+t.ContactId),"out"===t.direction)switch(e.settings.agentIdentifier){case"website_alias":n=t.UserId?e.settings.agentAlias+t.UserId:"System";break;case"agent_alias":n=t.UserId?t.User.alias||t.User.fullname:"System";break;case"agent_fullname":n=t.UserId?t.User.fullname:"System";break;default:n=t.UserId?e.settings.agentAlias+t.UserId:"System"}return{sender:n,message:t.body,createdAt:r()(t.createdAt).format("MM/DD/YYYY HH:mm:ss")}})))})).catch((function(e){console.error(e)})),t.promise},l.getHeaderShape=function(){return"rounded"===e.settings.header_shape?"15px":"0px"};const h={online:["online","chat","waiting","closing","unmanaged"],offline:["offline"]};Object.defineProperty(e,"actualTitle",{get(){let t=e.settings.defaultTitle;return h.online.includes(e.status)?t=e.settings.header_online:h.offline.includes(e.status)&&(t=e.settings.header_offline),t}}),e.updateStorage=_,window.addEventListener("message",(function(e){"show"===e.data.evt?c(!0):"hide"===e.data.evt&&c(!1)}),!1)}i.$inject=["$rootScope","$window","$state","$mdDialog","$q","localStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR"];var d=n("./node_modules/lodash.forin/index.js"),u=n.n(d),m=n("./node_modules/lodash.isnil/index.js"),l=n.n(m),_=n("./src/js/chat/index.tpl.html"),c=n("./src/js/closing/index.tpl.html"),h=n("./src/js/offline/index.tpl.html"),f=n("./src/js/online/index.tpl.html"),p=n("./src/js/unmanaged/index.tpl.html"),M=n("./src/js/waiting/index.tpl.html");function y(e,t){const n=t.search();e.settings={cursor:"pointer",hide:!0},u()(n,(function(t,n){""===t||l()(t)||("true"===t&&(t=!0),"false"===t&&(t=!1),e.settings[n]=t)}))}function L(e,t,n,o,r,s){n.html5Mode(!0),o.defaults.headers.get||(o.defaults.headers.get={}),o.defaults.headers.get["If-Modified-Since"]="Mon, 26 Jul 1997 05:00:00 GMT",o.defaults.headers.get["Cache-Control"]="no-cache",o.defaults.headers.get.Pragma="no-cache",r.setPrefix(s),e.state("app",{abstract:!0}).state("app.waiting",{url:"/waiting",templateUrl:M,controller:"WaitingController as vm"}).state("app.online",{url:"/online",templateUrl:f,controller:"OnlineController as vm"}).state("app.offline",{url:"/offline",templateUrl:h,controller:"OfflineController as vm"}).state("app.chat",{url:"/chat",templateUrl:_,controller:"ChatController as vm"}).state("app.unmanaged",{url:"/unmanaged",templateUrl:p,controller:"UnmanagedController as vm"}).state("app.closing",{url:"/closing",templateUrl:c,controller:"ClosingController as vm"})}L.$inject=["$stateProvider","$urlRouterProvider","$locationProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX"],y.$inject=["$rootScope","$location"];var Y=n("./node_modules/lodash.merge/index.js"),g=n.n(Y);function v(e,t,n,o,r,s){const a=this;function i(t){return function(o){a.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").position("top");n.show(r)}}function d(){e.loading=!1}function u(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function m(){a.form={},a.upColor=null,a.downColor=null,a.userForm.$setPristine(),a.userForm.$setUntouched(),delete e.visitor.interaction,e.enableDownload=!1}a.$onInit=function(){e.status="closing",e.updateStorage(r,null,!0),e.updateStorage(s,null,!0),e.loading=!1},a.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.close(g()({id:e.visitor.interaction.id,ratingType:e.settings.ratingType,customer:e.settings.customerAlias||e.visitor.from},a.form)).$promise.then((function(){delete a.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(m).then(u).catch(i("submit")).finally(d):(d(),i("submit"))},a.skip=function(){m(),u()},a.form={},a.errors={}}function k(e,t){const n={id:"@id",token:e.settings.token},o={};return o.baseUrl=e.settings.remote+"/api/",o.chatWebsite=t(o.baseUrl+"chat/websites/:id",n,{notify:{method:"POST",url:o.baseUrl+"chat/websites/:id/notify"},offline:{method:"POST",url:o.baseUrl+"chat/websites/:id/offline"},getFields:{method:"GET",url:o.baseUrl+"chat/websites/:id/fields"}}),o.chatInteraction=t(o.baseUrl+"chat/interactions/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/interactions/:id"},customUpdate:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/custom_update"},close:{method:"PUT",url:o.baseUrl+"chat/interactions/:id/close"},getMessages:{method:"GET",url:o.baseUrl+"chat/interactions/:intid/my_messages"},uploadAttachment:{method:"POST",url:o.baseUrl+"chat/interactions/:id/attachment_upload",headers:{"Content-Type":void 0},transformRequest:angular.identity},downloadAttachment:{method:"GET",url:o.baseUrl+"chat/interactions/:id/attachment_download"}}),o.chatMessage=t(o.baseUrl+"chat/messages/:id",n,{update:{method:"PUT",url:o.baseUrl+"chat/messages/:id"}}),o}v.$inject=["$rootScope","$state","$mdToast","api","STORAGE_VISITOR","STORAGE_LAYOUT"],k.$inject=["$rootScope","$resource"];var j=n("./node_modules/lodash.find/index.js"),w=n.n(j),b=n("./node_modules/lodash.values/index.js"),D=n.n(b),T=n("./node_modules/jquery/dist/jquery.js");function S(e,t,n,o,r,s,a,i,d,u){const m=this;let _,c,h,f;function p(){n((function(){const e=r[0].getElementsByClassName("chat-messages")[0];e&&(e.scrollTop=e.scrollHeight)}))}function M(e){return function(t){m.errors[e]=t.data,p()}}function y(e){i.chatWebsite.notify(e).$promise.then((function(e){delete m.errors.chatMessageError,l()(t.visitor.interaction)&&(t.visitor.interaction={id:e.interaction.id},t.updateStorage(d,t.visitor)),_[0].emojioneArea.setText(""),p()})).catch(M("chatMessageError"))}function L(){t.settings.online?s.go("app.online",null,{location:"replace"}):s.go("app.offline",null,{location:"replace"})}function Y(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&i.chatInteraction.get({id:t.visitor.interaction.id}).$promise.then((function(e){delete m.errors.getInteraction,e.closed&&(t.visitor.interaction.closed=!0,t.updateStorage(d,t.visitor),"unmanaged"===e.disposition?s.go("app.unmanaged",null,{location:"replace"}):s.go("app.closing",null,{location:"replace"}))})).catch((function(e){switch(e.status){case 403:s.go("app.closing",null,{location:"replace"});break;case 404:t.updateStorage(d,null,!0),t.updateStorage(u,null,!0),L();break;case 405:s.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function v(e){const n=_[0].emojioneArea.getText();e&&13===e.keyCode&&e.shiftKey||e&&13!==e.keyCode||""!==n&&y(g()({body:n},t.visitor))}function k(){t.visitor&&t.visitor.interaction&&t.visitor.interaction.id&&i.chatInteraction.getMessages({intid:t.visitor.interaction.id,includeAgent:!0,id:f||void 0}).$promise.then((function(e){if(delete m.errors.interaction,e.count){let o=!1,r=0;for(r=0,o=!1;r<e.rows.length;r++){const s=w()(t.messages,{id:e.rows[r].id});s?e.rows[r].read&&(s.read=!0):(o=!0,t.messages.push(e.rows[r])),"out"!==e.rows[r].direction||e.rows[r].read||(n=e.rows[r].id,i.chatMessage.update({id:n,read:!0}).$promise.catch((function(e){console.error(e)})))}o&&p(),e.rows[r-1].read&&(f=e.rows[r-1].id)}var n})).catch((function(e){switch(e.status){case 403:s.go("app.closing",null,{location:"replace"});break;case 405:s.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}m.errors={},t.messages=[],m.emojiOptions={watchEmbedData:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank"},m.$onInit=function(){t.status="chat",t.loading=!1,t.settings.showMenu=!0,m.replyMessage="",t.visitor.interaction&&t.visitor.interaction.closed?(t.updateStorage(d,null,!0),t.updateStorage(u,null,!0),L()):(Y(),c=o(k,2e3),h=o(Y,3e3)),_=T("#emojionearea").emojioneArea({placeholder:t.settings.placeholderMessage||"Type a message",events:{keyup:function(e,t){v(t)},ready:function(){this.setFocus()}}})},m.reply=v,m.reply_button=function(){const e=_[0].emojioneArea.getText();""!==e&&(y(g()({body:e},t.visitor)),_[0].emojioneArea.setFocus())},m.fileAdded=function(e){const n=new FormData;n.append("file",e.file),a.post(t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_upload?token="+t.settings.token,n,{transformRequest:angular.identity,headers:{"Content-Type":void 0}}).then((function(e){(e=e.data).id?(delete m.errors.sendAttachment,y(g()({body:'<a href="'+t.settings.remote+"/api/chat/interactions/"+t.visitor.interaction.id+"/attachment_download?attachId="+e.id+"&token="+t.settings.token+'" target="_blank">'+e.name+"</a>",AttachmentId:e.id},t.visitor))):M("sendAttachment")}),M("sendAttachment"))},e.$on("$destroy",(function(){o.cancel(c),o.cancel(h),c=null,h=null})),t.$on("$download",(function(e,n){n&&n(D()(t.messages))}))}S.$inject=["$scope","$rootScope","$timeout","$interval","$document","$state","$http","api","STORAGE_VISITOR","STORAGE_LAYOUT"];var H=n("./node_modules/lodash.random/index.js"),x=n.n(H),E=n("./node_modules/lodash.clonedeep/index.js"),P=n.n(E),O=n("./node_modules/json-form-data/src/jsonToFormData.js"),$=n.n(O);function A(e,t,n,o,r,s){const a=this;let i=null,d=null;t.typeField="";const u={showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}};function m(){delete a.errors.submit,t.$emit("hide"),a.fields=P()(d),a.form={},a.userForm.$setPristine(),a.userForm.$setUntouched();const e=o.simple().textContent(t.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));o.show(e)}a.initUploadButton=function(t){const n=a.fields[t],o=r.find(".upload-item");if(o.length){const t=angular.element(o[0].querySelector(".upload-button")),r=angular.element(o[0].querySelector("input[type=file]")),s=t.find("label");s.length&&s.css("display","none"),t.on("click",(()=>{s.css("display","none"),"function"==typeof r.trigger?r.trigger("click"):r[0].click()})),r.on("change",(t=>{e.$apply((function(){"string"==typeof n.props.error&&(n.props.error=null);const e=Array.from(t.target.files),o=1048576*n.config.size;e.some((e=>e.size>=o))?(n.options=[],n.props.error=n.config.sizeErrMessage):n.options=e.map((e=>{const{name:t,size:n,type:o}=e;return{name:t,size:n,type:o,file:e}})),a.form[n.props.title]=n.options}))}))}},a.removeFileItem=function(e,t){e.options.splice(t,1),a.form[e.props.title]=e.options},a.setupFileInput=function(e){console.log("form item setup",e);const t=r.find(".upload-item"),n=angular.element(t[0].querySelector("input[type=file]")),{multipleUpload:o,accept:s}=e.config;o&&n.attr("multiple","multiple"),s&&n[0].setAttribute("accept",s)},a.makeFileOptionsVisible=function(){const e=Array.from(r.find(".filename-label")),t=e[e.length-1];t&&t.scrollIntoView&&t.scrollIntoView()},a.$onInit=function(){t.status="offline",a.visitor={id:t.settings.id,mapKeyOffline:"firstName",from:"Anonymous"+x()(1,1e6)},t.settings.showMenu=!1,t.loading=!1,n.chatWebsite.getFields({id:t.settings.id,online:!1}).$promise.then((function(e){e.count&&(i=e.fromKey,d=P()(e.rows),a.fields=P()(d))})).then((function(){for(let e=0;e<a.fields.length;e++){const n=a.fields[e];if(t.typeField+=n.type,void 0!==n.props&&n.props.helpText){const t=RegExp.prototype.test.bind(/(<([^>]+)>)/i);a.checkHTML[e]=t(n.props.helpText)}}})).catch((function(e){console.error(e)}))},a.submit=function(){t.loading=!0;const e={...a.form};for(let n=0;n<a.fields.length;n++){const o=a.fields[n];o.props&&void 0!==e[o.props.title]&&(l()(o.cmField)||(a.visitor[o.cmField]=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title]),n===i&&(l()(t.settings.mapKeyOffline)||(a.visitor.mapKeyOffline=t.settings.mapKeyOffline,a.visitor.from=Array.isArray(e[o.props.title])?e[o.props.title].join():e[o.props.title])),"upload"===o.type&&(e[o.props.title]=e[o.props.title].map((e=>e.file))))}const r=Array.isArray(a.fields)?a.fields.filter((e=>"upload"===e.type)):[],d=g()({body:e},a.visitor),_=null!=e&&r.length>0,c=null!==e&&"{}"!==JSON.stringify(e);var h,f;(_?(h=d,s({url:`${n.baseUrl}chat/websites/${h.id}/offline`,headers:{"Content-Type":void 0},data:$()(h,{...u,initialFormData:new FormData}),method:"POST"})):c?n.chatWebsite.offline(d).$promise:Promise.reject("INVALID_FORM")).then(m).catch((f="submit",function(e){const n=o.simple().textContent(t.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));o.show(n),a.errors[f]=e.data})).finally((()=>{a.form.invalid||(a.form={}),t.loading=!1}))},a.toggle=function(e,t){a.form[e]||(a.form[e]=[]);const n=a.form[e].indexOf(t);n>-1?a.form[e].splice(n,1):a.form[e].push(t)},a.exists=function(e,t){return a.form[e]||(a.form[e]=[]),a.form[e].indexOf(t)>-1},a.checkHTML=[],a.form={},a.errors={},a.userForm={}}function F(e,t,n,o,s){const a=this;let i=null;function d(){return"Anonymous"+x()(1,1e6)}a.checkHTML=[],a.form={},a.errors={},a.userForm={},a.disableItem=!1,a.$onInit=function(){if(e.status="online",e.visitor&&e.visitor.interaction)if(e.visitor.interaction.id)if(e.visitor.interaction.UserId)t.go("app.chat",null,{location:"replace"});else{const t=e.visitor.interaction.id,u=JSON.stringify({channel:"chat",interaction:{id:t},message:{id:e.visitor.message.id},disposition:"abandoned",closed:!0,closeReason:"contact",closedAt:r()().format("YYYY-MM-DD HH:mm:ss")});n({url:`${e.settings.remote}/api/chat/interactions/${t}/abandon?token=${e.settings.token}`,headers:{"Content-Type":"application/json; charset=utf-8"},data:u,method:"PUT"}),e.visitor={id:e.settings.id,mapKey:"firstName",from:d()},e.settings.showMenu=!1,e.updateStorage(s,e.visitor),o.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(i=e.fromKey,a.fields=e.rows)})).then((function(){for(let e=0;e<a.fields.length;e++){const t=a.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);a.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))}else t.go("app.waiting",null,{location:"replace"});else e.visitor={id:e.settings.id,mapKey:"firstName",from:d()},e.settings.showMenu=!1,e.updateStorage(s,e.visitor),o.chatWebsite.getFields({id:e.settings.id,online:!0}).$promise.then((function(e){e.count&&(i=e.fromKey,a.fields=e.rows)})).then((function(){for(let e=0;e<a.fields.length;e++){const t=a.fields[e];if(t.props.helpText){const n=RegExp.prototype.test.bind(/(<([^>]+)>)/i);a.checkHTML[e]=n(t.props.helpText)}}})).catch((function(e){console.error(e)}))},a.submit=function(){let n="New chat request \n";for(let t=0;t<a.fields.length;t++){const o=a.fields[t];o.props&&void 0!==a.form[o.props.title]&&(l()(o.variable)||(e.visitor[o.variable]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),l()(o.cmField)||(e.visitor[o.cmField]=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title]),t===i&&(l()(e.settings.mapKey)||(e.visitor.mapKey=e.settings.mapKey,e.visitor.from=Array.isArray(a.form[o.props.title])?a.form[o.props.title].join():a.form[o.props.title])),a.form[o.props.title]&&(n+=o.props.title+": "+a.form[o.props.title]+"\n"))}var r;r=g()({body:n,referer:e.settings.referer,customerIp:e.settings.customerIp},e.visitor),a.disableItem=!0,o.chatWebsite.notify(r).$promise.then((function(n){delete a.errors.chatMessageError,e.visitor.message={id:n.message.id},e.visitor.interaction={id:n.interaction.id},e.updateStorage(s,e.visitor),a.disableItem=!1,e.settings.enableCustomerWriting?t.go("app.chat",null,{location:"replace"}):t.go("app.waiting",null,{location:"replace"})})).catch((function(e){a.disableItem=!1,console.error(e)}))},a.toggle=function(e,t){a.form[e]||(a.form[e]=[]);const n=a.form[e].indexOf(t);n>-1?a.form[e].splice(n,1):a.form[e].push(t)},a.exists=function(e,t){return a.form[e]||(a.form[e]=[]),a.form[e].indexOf(t)>-1}}function R(e,t,n,o,r,s){const a=this;function i(){e.settings.online?t.go("app.online",null,{location:"replace"}):t.go("app.offline",null,{location:"replace"})}function d(){a.form={},a.upColor=null,a.downColor=null,a.userForm.$setPristine(),a.userForm.$setUntouched(),e.visitor={},e.enableDownload=!1,e.$emit("hide")}function u(t){return function(o){a.errors[t]=o.data;const r=n.simple().textContent(e.settings.formSubmitFailureMessage||"Form submission error").toastClass("md-failure-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(r)}}function m(){e.loading=!1}a.form={},a.errors={},a.$onInit=function(){e.status="unmanaged",e.updateStorage(r,null,!0),e.updateStorage(s,null,!0),e.loading=!1},a.submit=function(){e.loading=!0,e.visitor.interaction&&e.visitor.interaction.id?o.chatInteraction.customUpdate({id:e.visitor.interaction.id,note:a.form.note}).$promise.then((function(){delete a.errors.submit;const t=n.simple().textContent(e.settings.formSubmitSuccessMessage||"Form properly submitted").toastClass("md-success-toast").parent(angular.element(document.querySelector("#chat-toolbar")));n.show(t)})).then(d).then(i).catch(u("submit")).finally(m):(m(),u("submit"))},a.skip=function(){d(),i()}}function W(e,t,n,o,s,a,i,d){let u,m=!1;function l(){let t={},n=!1;a.chatInteraction.get({id:e.visitor.interaction.id}).$promise.then((function(n){return t=n,a.chatInteraction.getMessages({intid:e.visitor.interaction.id}).$promise})).then((function(r){n=r.rows.length>1,t.closed?(e.visitor.interaction.closed=!0,e.updateStorage(i,e.visitor),"unmanaged"===t.disposition&&o.go("app.unmanaged",null,{location:"replace"})):t.UserId?(e.visitor.interaction.UserId=t.UserId,e.updateStorage(i,e.visitor),o.go("app.chat",null,{location:"replace"})):n&&o.go("app.chat",null,{location:"replace"})})).catch((function(e){switch(e.status){case 403:o.go("app.closing",null,{location:"replace"});break;case 405:o.go("app.unmanaged",null,{location:"replace"});break;default:console.error(e)}}))}function _(){if(e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&!m){m=!0;const t=new XMLHttpRequest;t.open("PUT",e.settings.remote+"/api/chat/interactions/"+e.visitor.interaction.id+"/abandon?token="+e.settings.token,!1),t.setRequestHeader("Content-type","application/json; charset=utf-8"),t.send(JSON.stringify({channel:"chat",interaction:{id:e.visitor.interaction.id},message:{id:e.visitor.message.id},disposition:"abandoned",closed:!0,closeReason:"contact",closedAt:r()().format("YYYY-MM-DD HH:mm:ss")})),4===t.readyState&&200===t.status&&(e.updateStorage(i,null,!0),e.updateStorage(d,null,!0))}}this.$onInit=function(){e.status="waiting",e.visitor&&e.visitor.interaction&&e.visitor.interaction.id&&(u=n(l,3e3))},t.$on("$destroy",(function(){s.removeEventListener("beforeunload",_),s.removeEventListener("unload",_),n.cancel(u)})),s.addEventListener("beforeunload",_),s.addEventListener("unload",_)}function C(e){return function(t){return e.trustAsHtml(t)}}A.$inject=["$scope","$rootScope","api","$mdToast","$element","$http"],F.$inject=["$rootScope","$state","$http","api","STORAGE_VISITOR"],R.$inject=["$rootScope","$state","$mdToast","api","STORAGE_VISITOR","STORAGE_LAYOUT"],W.$inject=["$rootScope","$scope","$interval","$state","$window","api","STORAGE_VISITOR","STORAGE_LAYOUT"],C.$inject=["$sce"],angular.module("motion-chat",["ngAnimate","ngAria","ngMessages","ngMaterial","ngResource","ngSanitize","ngCsv","ngEmbed","ui.router","LocalStorageModule","ngRateIt","flow"]).filter("toTrusted",C).constant("STORAGE_PREFIX","motion_chat").constant("STORAGE_VISITOR","visitor").constant("STORAGE_LAYOUT","layout").directive("ngEnter",(function(){return function(e,t,n){t.bind("keydown keypress",(function(t){13===t.which&&(e.$apply((function(){e.$eval(n.ngEnter)})),t.preventDefault())}))}})).directive("ngPrint",(function(){return{link:function(e,t){t.on("click",(function(){document.getElementById("chatContent1")&&function(e,t){const n=document.createElement("div"),o=t.visitor,s=t.settings;let a;for(let e=0;e<t.messages.length;e++){const i=t.messages[e];let d="Sender: ";const u="Message: "+i.body,m="Sent At: "+r()(i.createdAt).format("YYYY-MM-DD HH:mm:ss");if(0!==e){switch(t.settings.agentIdentifier){case"website_alias":d+="out"===i.direction?i.UserId?s.agentAlias+i.UserId:"System":s.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_alias":d+="out"===i.direction?i.UserId?i.User.alias||i.User.fullname:"System":s.customerAlias||o.from||"Visitor"+i.ContactId;break;case"agent_fullname":d+="out"===i.direction?i.UserId?i.User.fullname:"System":s.customerAlias||o.from||"Visitor"+i.ContactId;break;default:d+="out"===i.direction?i.UserId?(s.agentAlias||"Agent")+i.UserId:"System":s.customerAlias||o.from||"Visitor"+i.ContactId}n.appendChild(document.createTextNode(d)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(u)),n.appendChild(document.createElement("br")),n.appendChild(document.createTextNode(m)),n.appendChild(document.createElement("br")),n.appendChild(document.createElement("br"))}else a=i.createdAt}const i=window.open();i.document.write("<html><head><title>"+document.title+"</title>"),i.document.write("</head><body >"),i.document.write("<h3> Website: "+s.referer+"</h3>"),i.document.write("<h3> Start Time: "+r()(a).format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write("<h3> Print Time: "+r()().format("YYYY-MM-DD HH:mm:ss")+"</h3>"),i.document.write(n.innerHTML),i.document.write("</body></html>"),i.document.close(),i.focus(),i.print(),i.close()}(0,e)}))},restrict:"A"}})).controller("ChatController",S).controller("ClosingController",v).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("IndexController",i).factory("api",k).config(L).run(y).controller("OfflineController",A).config(["$mdGestureProvider",function(e){e.skipClickHijack()}]).controller("OnlineController",F).controller("UnmanagedController",R).controller("WaitingController",W)},"./node_modules/expose-loader/dist/runtime/getGlobalThis.js":(e,t,n)=>{"use strict";e.exports=function(){if("object"==typeof globalThis)return globalThis;var e;try{e=this||new Function("return this")()}catch(e){if("object"==typeof window)return window;if("object"==typeof self)return self;if(void 0!==n.g)return n.g}return e}()},"./node_modules/json-form-data/src/jsonToFormData.js":function(e,t){var n,o;(o=this)||(o={}),void 0===(n=function(){return o.jsonToFormData=function(){function e(e){return"[object Array]"==={}.toString.call(e)}function t(t){return!(e(t)||"object"!=typeof t||!t||t instanceof Blob||t instanceof Date)}function n(){return"function"==typeof FormData}function o(){if(n())return new FormData}function r(n,o,s,a){var i=0;for(var d in n){if(n.hasOwnProperty(d)){var u=a||d,m=o.mapping(n[d]);if(a&&t(n)&&(u=a+"["+d+"]"),a&&e(n)&&(u=e(m)||o.showLeafArrayIndexes?a+"["+i+"]":a+"[]"),e(m)||t(m))r(m,o,s,u);else if(m instanceof FileList)for(var l=0;l<m.length;l++)s.append(u+"["+l+"]",m.item(l));else m instanceof Blob?s.append(u,m,m.name):m instanceof Date?s.append(u,m.toISOString()):(null===m&&o.includeNullValues||null!==m)&&void 0!==m&&s.append(u,m)}i++}return s}return function(e,t){if(t&&t.initialFormData){if("function"!=typeof t.initialFormData.append)throw"initialFormData must have an append function."}else if(!n())throw"This environment does not have global form data. options.initialFormData must be specified.";var s=[{initialFormData:o(),showLeafArrayIndexes:!0,includeNullValues:!1,mapping:function(e){return"boolean"==typeof e?+e?"1":"0":e}},t||{}].reduce((function(e,t){return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}),{});return r(e,s,s.initialFormData)}}()}.apply(t,[]))||(e.exports=n)},"./node_modules/moment/locale/af.js":function(e,t,n){!function(e){"use strict";e.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[Môre om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-dz.js":function(e,t,n){!function(e){"use strict";var t=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},n={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},o=function(e){return function(o,r,s,a){var i=t(o),d=n[e][t(o)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,o)}},r=["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-dz",{months:r,monthsShort:r,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:o("s"),ss:o("s"),m:o("m"),mm:o("m"),h:o("h"),hh:o("h"),d:o("d"),dd:o("d"),M:o("M"),MM:o("M"),y:o("y"),yy:o("y")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-kw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ly.js":function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},o={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},r=function(e){return function(t,r,s,a){var i=n(t),d=o[e][n(t)];return 2===i&&(d=d[r?0:1]),d.replace(/%d/i,t)}},s=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:s,monthsShort:s,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-ma.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-sa.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar-tn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ar.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},s=function(e){return function(t,n,s,a){var i=o(t),d=r[e][o(t)];return 2===i&&(d=d[n?0:1]),d.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\200fM/\200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:s("s"),ss:s("s"),m:s("m"),mm:s("m"),h:s("h"),hh:s("h"),d:s("d"),dd:s("d"),M:s("M"),MM:s("M"),y:s("y"),yy:s("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/az.js":function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"bir neçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/be.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Миналата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[Миналия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",w:"седмица",ww:"%d седмици",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn-bd.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn-bd",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t?e<4?e:e+12:"ভোর"===t||"সকাল"===t?e:"দুপুর"===t?e>=3?e:e+12:"বিকাল"===t||"সন্ধ্যা"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"রাত":e<6?"ভোর":e<12?"সকাল":e<15?"দুপুর":e<18?"বিকাল":e<20?"সন্ধ্যা":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bn.js":function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bo.js":function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12".split("_"),monthsShortRegex:/^(ཟླ་\d{1,2})/,monthsParseExact:!0,weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/br.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}function n(e){return e>9?n(e%10):e}var o=[/^gen/i,/^c[ʼ\']hwe/i,/^meu/i,/^ebr/i,/^mae/i,/^(mez|eve)/i,/^gou/i,/^eos/i,/^gwe/i,/^her/i,/^du/i,/^ker/i],r=/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,s=[/^Su/i,/^Lu/i,/^Me([^r]|$)/i,/^Mer/i,/^Ya/i,/^Gw/i,/^Sa/i];e.defineLocale("br",{months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParse:s,fullWeekdaysParse:[/^sul/i,/^lun/i,/^meurzh/i,/^merc[ʼ\']her/i,/^yaou/i,/^gwener/i,/^sadorn/i],shortWeekdaysParse:[/^Sul/i,/^Lun/i,/^Meu/i,/^Mer/i,/^Yao/i,/^Gwe/i,/^Sad/i],minWeekdaysParse:s,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,monthsShortStrictRegex:/^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY HH:mm",LLLL:"dddd, D [a viz] MMMM YYYY HH:mm"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warcʼhoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Decʼh da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s ʼzo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(n(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4},meridiemParse:/a.m.|g.m./,isPM:function(e){return"g.m."===e},meridiem:function(e,t,n){return e<12?"a.m.":"g.m."}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/bs.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cs.js":function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),o=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],r=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function s(e){return e>1&&e<5&&1!=~~(e/10)}function a(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"pár sekund":"pár sekundami";case"ss":return t||o?r+(s(e)?"sekundy":"sekund"):r+"sekundami";case"m":return t?"minuta":o?"minutu":"minutou";case"mm":return t||o?r+(s(e)?"minuty":"minut"):r+"minutami";case"h":return t?"hodina":o?"hodinu":"hodinou";case"hh":return t||o?r+(s(e)?"hodiny":"hodin"):r+"hodinami";case"d":return t||o?"den":"dnem";case"dd":return t||o?r+(s(e)?"dny":"dní"):r+"dny";case"M":return t||o?"měsíc":"měsícem";case"MM":return t||o?r+(s(e)?"měsíce":"měsíců"):r+"měsíci";case"y":return t||o?"rok":"rokem";case"yy":return t||o?r+(s(e)?"roky":"let"):r+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:a,ss:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/cy.js":function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/da.js":function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-at.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de-ch.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/de.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],w:["eine Woche","einer Woche"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?r[n][0]:r[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,w:t,ww:"%d Wochen",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/dv.js":function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/el.js":function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,o=this._calendarEl[e],r=t&&t.hours();return n=o,("undefined"!=typeof Function&&n instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(o=o.apply(t)),o.replace("{}",r%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-au.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-gb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-ie.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-il.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-in.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-in",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-nz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/en-sg.js":function(e,t,n){!function(e){"use strict";e.defineLocale("en-sg",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"[la] D[-an de] MMMM, YYYY",LLL:"[la] D[-an de] MMMM, YYYY HH:mm",LLLL:"dddd[n], [la] D[-an de] MMMM, YYYY HH:mm",llll:"ddd, [la] D[-an de] MMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd[n je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasintan] dddd[n je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"kelkaj sekundoj",ss:"%d sekundoj",m:"unu minuto",mm:"%d minutoj",h:"unu horo",hh:"%d horoj",d:"unu tago",dd:"%d tagoj",M:"unu monato",MM:"%d monatoj",y:"unu jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-do.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-mx.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-mx",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es-us.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/es.js":function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),o=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",w:"una semana",ww:"%d semanas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4},invalidDate:"Fecha inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/et.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?r[n][2]?r[n][2]:r[n][1]:o?r[n][0]:r[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/eu.js":function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fa.js":function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک\200cشنبه_دوشنبه_سه\200cشنبه_چهارشنبه_پنج\200cشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"%d ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fi.js":function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function o(e,o,r,s){var a="";switch(r){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":a=s?"sekunnin":"sekuntia";break;case"m":return s?"minuutin":"minuutti";case"mm":a=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":a=s?"tunnin":"tuntia";break;case"d":return s?"päivän":"päivä";case"dd":a=s?"päivän":"päivää";break;case"M":return s?"kuukauden":"kuukausi";case"MM":a=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":a=s?"vuoden":"vuotta"}return function(e,o){return e<10?o?n[e]:t[e]:e}(e,s)+" "+a}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fil.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fil",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ca.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fr.js":function(e,t,n){!function(e){"use strict";var t=/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,n=[/^janv/i,/^févr/i,/^mars/i,/^avr/i,/^mai/i,/^juin/i,/^juil/i,/^août/i,/^sept/i,/^oct/i,/^nov/i,/^déc/i];e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsRegex:t,monthsShortRegex:t,monthsStrictRegex:/^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,monthsShortStrictRegex:/(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,monthsParse:n,longMonthsParse:n,shortMonthsParse:n,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",w:"une semaine",ww:"%d semaines",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/fy.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ga.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Meitheamh","Iúil","Lúnasa","Meán Fómhair","Deireadh Fómhair","Samhain","Nollaig"],monthsShort:["Ean","Feabh","Márt","Aib","Beal","Meith","Iúil","Lún","M.F.","D.F.","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Sathairn"],weekdaysShort:["Domh","Luan","Máirt","Céad","Déar","Aoine","Sath"],weekdaysMin:["Do","Lu","Má","Cé","Dé","A","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné ag] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d míonna",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gd.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gl.js":function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-deva.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["थोडया सॅकंडांनी","थोडे सॅकंड"],ss:[e+" सॅकंडांनी",e+" सॅकंड"],m:["एका मिणटान","एक मिनूट"],mm:[e+" मिणटांनी",e+" मिणटां"],h:["एका वरान","एक वर"],hh:[e+" वरांनी",e+" वरां"],d:["एका दिसान","एक दीस"],dd:[e+" दिसांनी",e+" दीस"],M:["एका म्हयन्यान","एक म्हयनो"],MM:[e+" म्हयन्यानी",e+" म्हयने"],y:["एका वर्सान","एक वर्स"],yy:[e+" वर्सांनी",e+" वर्सां"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-deva",{months:{standalone:"जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),format:"जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार".split("_"),weekdaysShort:"आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.".split("_"),weekdaysMin:"आ_सो_मं_बु_ब्रे_सु_शे".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [वाजतां]",LTS:"A h:mm:ss [वाजतां]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [वाजतां]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [वाजतां]",llll:"ddd, D MMM YYYY, A h:mm [वाजतां]"},calendar:{sameDay:"[आयज] LT",nextDay:"[फाल्यां] LT",nextWeek:"[फुडलो] dddd[,] LT",lastDay:"[काल] LT",lastWeek:"[फाटलो] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s आदीं",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(वेर)/,ordinal:function(e,t){switch(t){case"D":return e+"वेर";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/राती|सकाळीं|दनपारां|सांजे/,meridiemHour:function(e,t){return 12===e&&(e=0),"राती"===t?e<4?e:e+12:"सकाळीं"===t?e:"दनपारां"===t?e>12?e:e+12:"सांजे"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"राती":e<12?"सकाळीं":e<16?"दनपारां":e<20?"सांजे":"राती"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gom-latn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["thoddea sekondamni","thodde sekond"],ss:[e+" sekondamni",e+" sekond"],m:["eka mintan","ek minut"],mm:[e+" mintamni",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voramni",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disamni",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineamni",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsamni",e+" vorsam"]};return o?r[n][0]:r[n][1]}e.defineLocale("gom-latn",{months:{standalone:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),format:"Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea".split("_"),isFormat:/MMMM(\s)+D[oD]?/},monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Fuddlo] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fattlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:0,doy:3},meridiemParse:/rati|sokallim|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokallim"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokallim":e<16?"donparam":e<20?"sanje":"rati"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/gu.js":function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પહેલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/he.js":function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hi.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},o=[/^जन/i,/^फ़र|फर/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सितं|सित/i,/^अक्टू/i,/^नव|नवं/i,/^दिसं|दिस/i];e.defineLocale("hi",{months:{format:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),standalone:"जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर".split("_")},monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},monthsParse:o,longMonthsParse:o,shortMonthsParse:[/^जन/i,/^फ़र/i,/^मार्च/i,/^अप्रै/i,/^मई/i,/^जून/i,/^जुल/i,/^अग/i,/^सित/i,/^अक्टू/i,/^नव/i,/^दिस/i],monthsRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsShortRegex:/^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,monthsStrictRegex:/^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,monthsShortStrictRegex:/^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hr.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=e+" ";switch(n){case"ss":return o+(1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi");case"m":return t?"jedna minuta":"jedne minute";case"mm":return o+(1===e?"minuta":2===e||3===e||4===e?"minute":"minuta");case"h":return t?"jedan sat":"jednog sata";case"hh":return o+(1===e?"sat":2===e||3===e||4===e?"sata":"sati");case"dd":return o+(1===e?"dan":"dana");case"MM":return o+(1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci");case"yy":return o+(1===e?"godina":2===e||3===e||4===e?"godine":"godina")}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"Do MMMM YYYY",LLL:"Do MMMM YYYY H:mm",LLLL:"dddd, Do MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:return"[prošlu] [nedjelju] [u] LT";case 3:return"[prošlu] [srijedu] [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hu.js":function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,o){var r=e;switch(n){case"s":return o||t?"néhány másodperc":"néhány másodperce";case"ss":return r+(o||t)?" másodperc":" másodperce";case"m":return"egy"+(o||t?" perc":" perce");case"mm":return r+(o||t?" perc":" perce");case"h":return"egy"+(o||t?" óra":" órája");case"hh":return r+(o||t?" óra":" órája");case"d":return"egy"+(o||t?" nap":" napja");case"dd":return r+(o||t?" nap":" napja");case"M":return"egy"+(o||t?" hónap":" hónapja");case"MM":return r+(o||t?" hónap":" hónapja");case"y":return"egy"+(o||t?" év":" éve");case"yy":return r+(o||t?" év":" éve")}return""}function o(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return o.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return o.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/hy-am.js":function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/id.js":function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/is.js":function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,o,r){var s=e+" ";switch(o){case"s":return n||r?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?s+(n||r?"sekúndur":"sekúndum"):s+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?s+(n||r?"mínútur":"mínútum"):n?s+"mínúta":s+"mínútu";case"hh":return t(e)?s+(n||r?"klukkustundir":"klukkustundum"):s+"klukkustund";case"d":return n?"dagur":r?"dag":"degi";case"dd":return t(e)?n?s+"dagar":s+(r?"daga":"dögum"):n?s+"dagur":s+(r?"dag":"degi");case"M":return n?"mánuður":r?"mánuð":"mánuði";case"MM":return t(e)?n?s+"mánuðir":s+(r?"mánuði":"mánuðum"):n?s+"mánuður":s+(r?"mánuð":"mánuði");case"y":return n||r?"ár":"ári";case"yy":return t(e)?s+(n||r?"ár":"árum"):s+(n||r?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it-ch.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/it.js":function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:function(){return"[Oggi a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextDay:function(){return"[Domani a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},nextWeek:function(){return"dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastDay:function(){return"[Ieri a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"},lastWeek:function(){switch(this.day()){case 0:return"[La scorsa] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT";default:return"[Lo scorso] dddd [a"+(this.hours()>1?"lle ":0===this.hours()?" ":"ll'")+"]LT"}},sameElse:"L"},relativeTime:{future:"tra %s",past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",w:"una settimana",ww:"%d settimane",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ja.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{eras:[{since:"2019-05-01",offset:1,name:"令和",narrow:"㋿",abbr:"R"},{since:"1989-01-08",until:"2019-04-30",offset:1,name:"平成",narrow:"㍻",abbr:"H"},{since:"1926-12-25",until:"1989-01-07",offset:1,name:"昭和",narrow:"㍼",abbr:"S"},{since:"1912-07-30",until:"1926-12-24",offset:1,name:"大正",narrow:"㍽",abbr:"T"},{since:"1873-01-01",until:"1912-07-29",offset:6,name:"明治",narrow:"㍾",abbr:"M"},{since:"0001-01-01",until:"1873-12-31",offset:1,name:"西暦",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"紀元前",narrow:"BC",abbr:"BC"}],eraYearOrdinalRegex:/(元|\d+)年/,eraYearOrdinalParse:function(e,t){return"元"===t[1]?1:parseInt(t[1]||e,10)},months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()!==this.week()?"[来週]dddd LT":"dddd LT"},lastDay:"[昨日] LT",lastWeek:function(e){return this.week()!==e.week()?"[先週]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}日/,ordinal:function(e,t){switch(t){case"y":return 1===e?"元年":e+"年";case"d":case"D":case"DDD":return e+"日";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",ss:"%d秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/jv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,t){return 12===e&&(e=0),"enjing"===t?e:"siyang"===t?e>=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ka.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return e.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,(function(e,t,n){return"ი"===n?t+"ში":t+n+"ში"}))},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):e},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kk.js":function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/km.js":function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/kn.js":function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ko.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ku.js":function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},o=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:o,monthsShort:o,weekdays:"یه\200cكشه\200cممه\200c_دووشه\200cممه\200c_سێشه\200cممه\200c_چوارشه\200cممه\200c_پێنجشه\200cممه\200c_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysShort:"یه\200cكشه\200cم_دووشه\200cم_سێشه\200cم_چوارشه\200cم_پێنجشه\200cم_هه\200cینی_شه\200cممه\200c".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره\200c|به\200cیانی/,isPM:function(e){return/ئێواره\200c/.test(e)},meridiem:function(e,t,n){return e<12?"به\200cیانی":"ئێواره\200c"},calendar:{sameDay:"[ئه\200cمرۆ كاتژمێر] LT",nextDay:"[به\200cیانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له\200c %s",past:"%s",s:"چه\200cند چركه\200cیه\200cك",ss:"چركه\200c %d",m:"یه\200cك خوله\200cك",mm:"%d خوله\200cك",h:"یه\200cك كاتژمێر",hh:"%d كاتژمێر",d:"یه\200cك ڕۆژ",dd:"%d ڕۆژ",M:"یه\200cك مانگ",MM:"%d مانگ",y:"یه\200cك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,(function(e){return n[e]})).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]})).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ky.js":function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lb.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?r[n][0]:r[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lt.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,o){return t?r(n)[0]:o?r(n)[1]:r(n)[2]}function o(e){return e%10==0||e>10&&e<20}function r(e){return t[e].split("_")}function s(e,t,s,a){var i=e+" ";return 1===e?i+n(0,t,s[0],a):t?i+(o(e)?r(s)[1]:r(s)[0]):a?i+r(s)[1]:i+(o(e)?r(s)[1]:r(s)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,o){return t?"kelios sekundės":o?"kelių sekundžių":"kelias sekundes"},ss:s,m:n,mm:s,h:n,hh:s,d:n,dd:s,M:n,MM:s,y:n,yy:s},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/lv.js":function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function o(e,o,r){return e+" "+n(t[r],e,o)}function r(e,o,r){return n(t[r],e,o)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:o,m:r,mm:o,h:r,hh:o,d:r,dd:o,M:r,MM:o,y:r,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/me.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"за %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"една минута",mm:"%d минути",h:"еден час",hh:"%d часа",d:"еден ден",dd:"%d дена",M:"еден месец",MM:"%d месеци",y:"една година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ml.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mn.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mr.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function o(e,t,n,o){var r="";if(t)switch(n){case"s":r="काही सेकंद";break;case"ss":r="%d सेकंद";break;case"m":r="एक मिनिट";break;case"mm":r="%d मिनिटे";break;case"h":r="एक तास";break;case"hh":r="%d तास";break;case"d":r="एक दिवस";break;case"dd":r="%d दिवस";break;case"M":r="एक महिना";break;case"MM":r="%d महिने";break;case"y":r="एक वर्ष";break;case"yy":r="%d वर्षे"}else switch(n){case"s":r="काही सेकंदां";break;case"ss":r="%d सेकंदां";break;case"m":r="एका मिनिटा";break;case"mm":r="%d मिनिटां";break;case"h":r="एका तासा";break;case"hh":r="%d तासां";break;case"d":r="एका दिवसा";break;case"dd":r="%d दिवसां";break;case"M":r="एका महिन्या";break;case"MM":r="%d महिन्यां";break;case"y":r="एका वर्षा";break;case"yy":r="%d वर्षां"}return r.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,meridiemHour:function(e,t){return 12===e&&(e=0),"पहाटे"===t||"सकाळी"===t?e:"दुपारी"===t||"सायंकाळी"===t||"रात्री"===t?e>=12?e:e+12:void 0},meridiem:function(e,t,n){return e>=0&&e<6?"पहाटे":e<12?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms-my.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ms.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/mt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/my.js":function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nb.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",w:"en uke",ww:"%d uker",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ne.js":function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl-be.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nl.js":function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),o=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,o){return e?/-MMM-/.test(o)?n[e.month()]:t[e.month()]:t},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",w:"één week",ww:"%d weken",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/nn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"su._må._ty._on._to._fr._lau.".split("_"),weekdaysMin:"su_må_ty_on_to_fr_la".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",w:"ei veke",ww:"%d veker",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/oc-lnc.js":function(e,t,n){!function(e){"use strict";e.defineLocale("oc-lnc",{months:{standalone:"genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),format:"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dm._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:"[uèi a] LT",nextDay:"[deman a] LT",nextWeek:"dddd [a] LT",lastDay:"[ièr a] LT",lastWeek:"dddd [passat a] LT",sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"unas segondas",ss:"%d segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pa-in.js":function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pl.js":function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),o=[/^sty/i,/^lut/i,/^mar/i,/^kwi/i,/^maj/i,/^cze/i,/^lip/i,/^sie/i,/^wrz/i,/^paź/i,/^lis/i,/^gru/i];function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function s(e,t,n){var o=e+" ";switch(n){case"ss":return o+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return o+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return o+(r(e)?"godziny":"godzin");case"ww":return o+(r(e)?"tygodnie":"tygodni");case"MM":return o+(r(e)?"miesiące":"miesięcy");case"yy":return o+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,o){return e?/D MMMM/.test(o)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),monthsParse:o,longMonthsParse:o,shortMonthsParse:o,weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:s,m:s,mm:s,h:s,hh:s,d:"1 dzień",dd:"%d dni",w:"tydzień",ww:s,M:"miesiąc",MM:s,y:"rok",yy:s},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt-br.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado".split("_"),weekdaysShort:"dom_seg_ter_qua_qui_sex_sáb".split("_"),weekdaysMin:"do_2ª_3ª_4ª_5ª_6ª_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",invalidDate:"Data inválida"})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/pt.js":function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",w:"uma semana",ww:"%d semanas",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ro.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){var o=" ";return(e%100>=20||e>=100&&e%100==0)&&(o=" de "),e+o+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",ww:"săptămâni",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,w:"o săptămână",ww:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ru.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"минута":"минуту":e+" "+(o=+e,r={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",ww:"неделя_недели_недель",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,w:"неделя",ww:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sd.js":function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/se.js":function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/si.js":function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්\200dරේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්\200dරහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්\200dරහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්\200dර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sk.js":function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function o(e){return e>1&&e<5}function r(e,t,n,r){var s=e+" ";switch(n){case"s":return t||r?"pár sekúnd":"pár sekundami";case"ss":return t||r?s+(o(e)?"sekundy":"sekúnd"):s+"sekundami";case"m":return t?"minúta":r?"minútu":"minútou";case"mm":return t||r?s+(o(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?s+(o(e)?"hodiny":"hodín"):s+"hodinami";case"d":return t||r?"deň":"dňom";case"dd":return t||r?s+(o(e)?"dni":"dní"):s+"dňami";case"M":return t||r?"mesiac":"mesiacom";case"MM":return t||r?s+(o(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||r?"rok":"rokom";case"yy":return t||r?s+(o(e)?"roky":"rokov"):s+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r=e+" ";switch(n){case"s":return t||o?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===e?t?"sekundo":"sekundi":2===e?t||o?"sekundi":"sekundah":e<5?t||o?"sekunde":"sekundah":"sekund");case"m":return t?"ena minuta":"eno minuto";case"mm":return r+(1===e?t?"minuta":"minuto":2===e?t||o?"minuti":"minutama":e<5?t||o?"minute":"minutami":t||o?"minut":"minutami");case"h":return t?"ena ura":"eno uro";case"hh":return r+(1===e?t?"ura":"uro":2===e?t||o?"uri":"urama":e<5?t||o?"ure":"urami":t||o?"ur":"urami");case"d":return t||o?"en dan":"enim dnem";case"dd":return r+(1===e?t||o?"dan":"dnem":2===e?t||o?"dni":"dnevoma":t||o?"dni":"dnevi");case"M":return t||o?"en mesec":"enim mesecem";case"MM":return r+(1===e?t||o?"mesec":"mesecem":2===e?t||o?"meseca":"mesecema":e<5?t||o?"mesece":"meseci":t||o?"mesecev":"meseci");case"y":return t||o?"eno leto":"enim letom";case"yy":return r+(1===e?t||o?"leto":"letom":2===e?t||o?"leti":"letoma":e<5?t||o?"leta":"leti":t||o?"let":"leti")}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sq.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr-cyrl.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sr.js":function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,o){var r=t.words[o];return 1===o.length?n?r[0]:r[1]:e+" "+t.correctGrammaticalCase(e,r)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D. M. YYYY.",LL:"D. MMMM YYYY.",LLL:"D. MMMM YYYY. H:mm",LLLL:"dddd, D. MMMM YYYY. H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ss.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sv.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(\:e|\:a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?":e":1===t||2===t?":a":":e")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/sw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"hh:mm A",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"siku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ta.js":function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,(function(e){return n[e]}))},postformat:function(e){return e.replace(/\d/g,(function(e){return t[e]}))},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t||"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/te.js":function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tet.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"segundu balun",ss:"segundu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tg.js":function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:{format:"январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри".split("_"),standalone:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_")},monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Фардо соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/th.js":function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",w:"1 สัปดาห์",ww:"%d สัปดาห์",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tk.js":function(e,t,n){!function(e){"use strict";var t={1:"'inji",5:"'inji",8:"'inji",70:"'inji",80:"'inji",2:"'nji",7:"'nji",20:"'nji",50:"'nji",3:"'ünji",4:"'ünji",100:"'ünji",6:"'njy",9:"'unjy",10:"'unjy",30:"'unjy",60:"'ynjy",90:"'ynjy"};e.defineLocale("tk",{months:"Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekdays:"Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe".split("_"),weekdaysShort:"Ýek_Duş_Siş_Çar_Pen_Ann_Şen".split("_"),weekdaysMin:"Ýk_Dş_Sş_Çr_Pn_An_Şn".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün sagat] LT",nextDay:"[ertir sagat] LT",nextWeek:"[indiki] dddd [sagat] LT",lastDay:"[düýn] LT",lastWeek:"[geçen] dddd [sagat] LT",sameElse:"L"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'unjy";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tl-ph.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tlh.js":function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,o,r){var s=function(e){var n=Math.floor(e%1e3/100),o=Math.floor(e%100/10),r=e%10,s="";return n>0&&(s+=t[n]+"vatlh"),o>0&&(s+=(""!==s?" ":"")+t[o]+"maH"),r>0&&(s+=(""!==s?" ":"")+t[r]),""===s?"pagh":s}(e);switch(o){case"ss":return s+" lup";case"mm":return s+" tup";case"hh":return s+" rep";case"dd":return s+" jaj";case"MM":return s+" jar";case"yy":return s+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tr.js":function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),meridiem:function(e,t,n){return e<12?n?"öö":"ÖÖ":n?"ös":"ÖS"},meridiemParse:/öö|ÖÖ|ös|ÖS/,isPM:function(e){return"ös"===e||"ÖS"===e},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",w:"bir hafta",ww:"%d hafta",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var o=e%10;return e+(t[o]||t[e%100-o]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzl.js":function(e,t,n){!function(e){"use strict";function t(e,t,n,o){var r={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return o||t?r[n][0]:r[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/tzm.js":function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ug-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"يېرىم كېچە":o<900?"سەھەر":o<1130?"چۈشتىن بۇرۇن":o<1230?"چۈش":o<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uk.js":function(e,t,n){!function(e){"use strict";function t(e,t,n){return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(o=+e,r={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),o%10==1&&o%100!=11?r[0]:o%10>=2&&o%10<=4&&(o%100<10||o%100>=20)?r[1]:r[2]);var o,r}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/ur.js":function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz-latn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/uz.js":function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/vi.js":function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần trước lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",w:"một tuần",ww:"%d tuần",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/x-pseudo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/yo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-cn.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:function(e){return e.week()!==this.week()?"[下]dddLT":"[本]dddLT"},lastDay:"[昨天]LT",lastWeek:function(e){return this.week()!==e.week()?"[上]dddLT":"[本]dddLT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s后",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",w:"1 周",ww:"%d 周",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-hk.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1200?"上午":1200===o?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-mo.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-mo",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"D/M/YYYY",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale/zh-tw.js":function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var o=100*e+t;return o<600?"凌晨":o<900?"早上":o<1130?"上午":o<1230?"中午":o<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s後",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n("./node_modules/moment/moment.js"))},"./node_modules/moment/locale sync recursive ^\\.\\/.*$":(e,t,n)=>{var o={"./af":"./node_modules/moment/locale/af.js","./af.js":"./node_modules/moment/locale/af.js","./ar":"./node_modules/moment/locale/ar.js","./ar-dz":"./node_modules/moment/locale/ar-dz.js","./ar-dz.js":"./node_modules/moment/locale/ar-dz.js","./ar-kw":"./node_modules/moment/locale/ar-kw.js","./ar-kw.js":"./node_modules/moment/locale/ar-kw.js","./ar-ly":"./node_modules/moment/locale/ar-ly.js","./ar-ly.js":"./node_modules/moment/locale/ar-ly.js","./ar-ma":"./node_modules/moment/locale/ar-ma.js","./ar-ma.js":"./node_modules/moment/locale/ar-ma.js","./ar-sa":"./node_modules/moment/locale/ar-sa.js","./ar-sa.js":"./node_modules/moment/locale/ar-sa.js","./ar-tn":"./node_modules/moment/locale/ar-tn.js","./ar-tn.js":"./node_modules/moment/locale/ar-tn.js","./ar.js":"./node_modules/moment/locale/ar.js","./az":"./node_modules/moment/locale/az.js","./az.js":"./node_modules/moment/locale/az.js","./be":"./node_modules/moment/locale/be.js","./be.js":"./node_modules/moment/locale/be.js","./bg":"./node_modules/moment/locale/bg.js","./bg.js":"./node_modules/moment/locale/bg.js","./bm":"./node_modules/moment/locale/bm.js","./bm.js":"./node_modules/moment/locale/bm.js","./bn":"./node_modules/moment/locale/bn.js","./bn-bd":"./node_modules/moment/locale/bn-bd.js","./bn-bd.js":"./node_modules/moment/locale/bn-bd.js","./bn.js":"./node_modules/moment/locale/bn.js","./bo":"./node_modules/moment/locale/bo.js","./bo.js":"./node_modules/moment/locale/bo.js","./br":"./node_modules/moment/locale/br.js","./br.js":"./node_modules/moment/locale/br.js","./bs":"./node_modules/moment/locale/bs.js","./bs.js":"./node_modules/moment/locale/bs.js","./ca":"./node_modules/moment/locale/ca.js","./ca.js":"./node_modules/moment/locale/ca.js","./cs":"./node_modules/moment/locale/cs.js","./cs.js":"./node_modules/moment/locale/cs.js","./cv":"./node_modules/moment/locale/cv.js","./cv.js":"./node_modules/moment/locale/cv.js","./cy":"./node_modules/moment/locale/cy.js","./cy.js":"./node_modules/moment/locale/cy.js","./da":"./node_modules/moment/locale/da.js","./da.js":"./node_modules/moment/locale/da.js","./de":"./node_modules/moment/locale/de.js","./de-at":"./node_modules/moment/locale/de-at.js","./de-at.js":"./node_modules/moment/locale/de-at.js","./de-ch":"./node_modules/moment/locale/de-ch.js","./de-ch.js":"./node_modules/moment/locale/de-ch.js","./de.js":"./node_modules/moment/locale/de.js","./dv":"./node_modules/moment/locale/dv.js","./dv.js":"./node_modules/moment/locale/dv.js","./el":"./node_modules/moment/locale/el.js","./el.js":"./node_modules/moment/locale/el.js","./en-au":"./node_modules/moment/locale/en-au.js","./en-au.js":"./node_modules/moment/locale/en-au.js","./en-ca":"./node_modules/moment/locale/en-ca.js","./en-ca.js":"./node_modules/moment/locale/en-ca.js","./en-gb":"./node_modules/moment/locale/en-gb.js","./en-gb.js":"./node_modules/moment/locale/en-gb.js","./en-ie":"./node_modules/moment/locale/en-ie.js","./en-ie.js":"./node_modules/moment/locale/en-ie.js","./en-il":"./node_modules/moment/locale/en-il.js","./en-il.js":"./node_modules/moment/locale/en-il.js","./en-in":"./node_modules/moment/locale/en-in.js","./en-in.js":"./node_modules/moment/locale/en-in.js","./en-nz":"./node_modules/moment/locale/en-nz.js","./en-nz.js":"./node_modules/moment/locale/en-nz.js","./en-sg":"./node_modules/moment/locale/en-sg.js","./en-sg.js":"./node_modules/moment/locale/en-sg.js","./eo":"./node_modules/moment/locale/eo.js","./eo.js":"./node_modules/moment/locale/eo.js","./es":"./node_modules/moment/locale/es.js","./es-do":"./node_modules/moment/locale/es-do.js","./es-do.js":"./node_modules/moment/locale/es-do.js","./es-mx":"./node_modules/moment/locale/es-mx.js","./es-mx.js":"./node_modules/moment/locale/es-mx.js","./es-us":"./node_modules/moment/locale/es-us.js","./es-us.js":"./node_modules/moment/locale/es-us.js","./es.js":"./node_modules/moment/locale/es.js","./et":"./node_modules/moment/locale/et.js","./et.js":"./node_modules/moment/locale/et.js","./eu":"./node_modules/moment/locale/eu.js","./eu.js":"./node_modules/moment/locale/eu.js","./fa":"./node_modules/moment/locale/fa.js","./fa.js":"./node_modules/moment/locale/fa.js","./fi":"./node_modules/moment/locale/fi.js","./fi.js":"./node_modules/moment/locale/fi.js","./fil":"./node_modules/moment/locale/fil.js","./fil.js":"./node_modules/moment/locale/fil.js","./fo":"./node_modules/moment/locale/fo.js","./fo.js":"./node_modules/moment/locale/fo.js","./fr":"./node_modules/moment/locale/fr.js","./fr-ca":"./node_modules/moment/locale/fr-ca.js","./fr-ca.js":"./node_modules/moment/locale/fr-ca.js","./fr-ch":"./node_modules/moment/locale/fr-ch.js","./fr-ch.js":"./node_modules/moment/locale/fr-ch.js","./fr.js":"./node_modules/moment/locale/fr.js","./fy":"./node_modules/moment/locale/fy.js","./fy.js":"./node_modules/moment/locale/fy.js","./ga":"./node_modules/moment/locale/ga.js","./ga.js":"./node_modules/moment/locale/ga.js","./gd":"./node_modules/moment/locale/gd.js","./gd.js":"./node_modules/moment/locale/gd.js","./gl":"./node_modules/moment/locale/gl.js","./gl.js":"./node_modules/moment/locale/gl.js","./gom-deva":"./node_modules/moment/locale/gom-deva.js","./gom-deva.js":"./node_modules/moment/locale/gom-deva.js","./gom-latn":"./node_modules/moment/locale/gom-latn.js","./gom-latn.js":"./node_modules/moment/locale/gom-latn.js","./gu":"./node_modules/moment/locale/gu.js","./gu.js":"./node_modules/moment/locale/gu.js","./he":"./node_modules/moment/locale/he.js","./he.js":"./node_modules/moment/locale/he.js","./hi":"./node_modules/moment/locale/hi.js","./hi.js":"./node_modules/moment/locale/hi.js","./hr":"./node_modules/moment/locale/hr.js","./hr.js":"./node_modules/moment/locale/hr.js","./hu":"./node_modules/moment/locale/hu.js","./hu.js":"./node_modules/moment/locale/hu.js","./hy-am":"./node_modules/moment/locale/hy-am.js","./hy-am.js":"./node_modules/moment/locale/hy-am.js","./id":"./node_modules/moment/locale/id.js","./id.js":"./node_modules/moment/locale/id.js","./is":"./node_modules/moment/locale/is.js","./is.js":"./node_modules/moment/locale/is.js","./it":"./node_modules/moment/locale/it.js","./it-ch":"./node_modules/moment/locale/it-ch.js","./it-ch.js":"./node_modules/moment/locale/it-ch.js","./it.js":"./node_modules/moment/locale/it.js","./ja":"./node_modules/moment/locale/ja.js","./ja.js":"./node_modules/moment/locale/ja.js","./jv":"./node_modules/moment/locale/jv.js","./jv.js":"./node_modules/moment/locale/jv.js","./ka":"./node_modules/moment/locale/ka.js","./ka.js":"./node_modules/moment/locale/ka.js","./kk":"./node_modules/moment/locale/kk.js","./kk.js":"./node_modules/moment/locale/kk.js","./km":"./node_modules/moment/locale/km.js","./km.js":"./node_modules/moment/locale/km.js","./kn":"./node_modules/moment/locale/kn.js","./kn.js":"./node_modules/moment/locale/kn.js","./ko":"./node_modules/moment/locale/ko.js","./ko.js":"./node_modules/moment/locale/ko.js","./ku":"./node_modules/moment/locale/ku.js","./ku.js":"./node_modules/moment/locale/ku.js","./ky":"./node_modules/moment/locale/ky.js","./ky.js":"./node_modules/moment/locale/ky.js","./lb":"./node_modules/moment/locale/lb.js","./lb.js":"./node_modules/moment/locale/lb.js","./lo":"./node_modules/moment/locale/lo.js","./lo.js":"./node_modules/moment/locale/lo.js","./lt":"./node_modules/moment/locale/lt.js","./lt.js":"./node_modules/moment/locale/lt.js","./lv":"./node_modules/moment/locale/lv.js","./lv.js":"./node_modules/moment/locale/lv.js","./me":"./node_modules/moment/locale/me.js","./me.js":"./node_modules/moment/locale/me.js","./mi":"./node_modules/moment/locale/mi.js","./mi.js":"./node_modules/moment/locale/mi.js","./mk":"./node_modules/moment/locale/mk.js","./mk.js":"./node_modules/moment/locale/mk.js","./ml":"./node_modules/moment/locale/ml.js","./ml.js":"./node_modules/moment/locale/ml.js","./mn":"./node_modules/moment/locale/mn.js","./mn.js":"./node_modules/moment/locale/mn.js","./mr":"./node_modules/moment/locale/mr.js","./mr.js":"./node_modules/moment/locale/mr.js","./ms":"./node_modules/moment/locale/ms.js","./ms-my":"./node_modules/moment/locale/ms-my.js","./ms-my.js":"./node_modules/moment/locale/ms-my.js","./ms.js":"./node_modules/moment/locale/ms.js","./mt":"./node_modules/moment/locale/mt.js","./mt.js":"./node_modules/moment/locale/mt.js","./my":"./node_modules/moment/locale/my.js","./my.js":"./node_modules/moment/locale/my.js","./nb":"./node_modules/moment/locale/nb.js","./nb.js":"./node_modules/moment/locale/nb.js","./ne":"./node_modules/moment/locale/ne.js","./ne.js":"./node_modules/moment/locale/ne.js","./nl":"./node_modules/moment/locale/nl.js","./nl-be":"./node_modules/moment/locale/nl-be.js","./nl-be.js":"./node_modules/moment/locale/nl-be.js","./nl.js":"./node_modules/moment/locale/nl.js","./nn":"./node_modules/moment/locale/nn.js","./nn.js":"./node_modules/moment/locale/nn.js","./oc-lnc":"./node_modules/moment/locale/oc-lnc.js","./oc-lnc.js":"./node_modules/moment/locale/oc-lnc.js","./pa-in":"./node_modules/moment/locale/pa-in.js","./pa-in.js":"./node_modules/moment/locale/pa-in.js","./pl":"./node_modules/moment/locale/pl.js","./pl.js":"./node_modules/moment/locale/pl.js","./pt":"./node_modules/moment/locale/pt.js","./pt-br":"./node_modules/moment/locale/pt-br.js","./pt-br.js":"./node_modules/moment/locale/pt-br.js","./pt.js":"./node_modules/moment/locale/pt.js","./ro":"./node_modules/moment/locale/ro.js","./ro.js":"./node_modules/moment/locale/ro.js","./ru":"./node_modules/moment/locale/ru.js","./ru.js":"./node_modules/moment/locale/ru.js","./sd":"./node_modules/moment/locale/sd.js","./sd.js":"./node_modules/moment/locale/sd.js","./se":"./node_modules/moment/locale/se.js","./se.js":"./node_modules/moment/locale/se.js","./si":"./node_modules/moment/locale/si.js","./si.js":"./node_modules/moment/locale/si.js","./sk":"./node_modules/moment/locale/sk.js","./sk.js":"./node_modules/moment/locale/sk.js","./sl":"./node_modules/moment/locale/sl.js","./sl.js":"./node_modules/moment/locale/sl.js","./sq":"./node_modules/moment/locale/sq.js","./sq.js":"./node_modules/moment/locale/sq.js","./sr":"./node_modules/moment/locale/sr.js","./sr-cyrl":"./node_modules/moment/locale/sr-cyrl.js","./sr-cyrl.js":"./node_modules/moment/locale/sr-cyrl.js","./sr.js":"./node_modules/moment/locale/sr.js","./ss":"./node_modules/moment/locale/ss.js","./ss.js":"./node_modules/moment/locale/ss.js","./sv":"./node_modules/moment/locale/sv.js","./sv.js":"./node_modules/moment/locale/sv.js","./sw":"./node_modules/moment/locale/sw.js","./sw.js":"./node_modules/moment/locale/sw.js","./ta":"./node_modules/moment/locale/ta.js","./ta.js":"./node_modules/moment/locale/ta.js","./te":"./node_modules/moment/locale/te.js","./te.js":"./node_modules/moment/locale/te.js","./tet":"./node_modules/moment/locale/tet.js","./tet.js":"./node_modules/moment/locale/tet.js","./tg":"./node_modules/moment/locale/tg.js","./tg.js":"./node_modules/moment/locale/tg.js","./th":"./node_modules/moment/locale/th.js","./th.js":"./node_modules/moment/locale/th.js","./tk":"./node_modules/moment/locale/tk.js","./tk.js":"./node_modules/moment/locale/tk.js","./tl-ph":"./node_modules/moment/locale/tl-ph.js","./tl-ph.js":"./node_modules/moment/locale/tl-ph.js","./tlh":"./node_modules/moment/locale/tlh.js","./tlh.js":"./node_modules/moment/locale/tlh.js","./tr":"./node_modules/moment/locale/tr.js","./tr.js":"./node_modules/moment/locale/tr.js","./tzl":"./node_modules/moment/locale/tzl.js","./tzl.js":"./node_modules/moment/locale/tzl.js","./tzm":"./node_modules/moment/locale/tzm.js","./tzm-latn":"./node_modules/moment/locale/tzm-latn.js","./tzm-latn.js":"./node_modules/moment/locale/tzm-latn.js","./tzm.js":"./node_modules/moment/locale/tzm.js","./ug-cn":"./node_modules/moment/locale/ug-cn.js","./ug-cn.js":"./node_modules/moment/locale/ug-cn.js","./uk":"./node_modules/moment/locale/uk.js","./uk.js":"./node_modules/moment/locale/uk.js","./ur":"./node_modules/moment/locale/ur.js","./ur.js":"./node_modules/moment/locale/ur.js","./uz":"./node_modules/moment/locale/uz.js","./uz-latn":"./node_modules/moment/locale/uz-latn.js","./uz-latn.js":"./node_modules/moment/locale/uz-latn.js","./uz.js":"./node_modules/moment/locale/uz.js","./vi":"./node_modules/moment/locale/vi.js","./vi.js":"./node_modules/moment/locale/vi.js","./x-pseudo":"./node_modules/moment/locale/x-pseudo.js","./x-pseudo.js":"./node_modules/moment/locale/x-pseudo.js","./yo":"./node_modules/moment/locale/yo.js","./yo.js":"./node_modules/moment/locale/yo.js","./zh-cn":"./node_modules/moment/locale/zh-cn.js","./zh-cn.js":"./node_modules/moment/locale/zh-cn.js","./zh-hk":"./node_modules/moment/locale/zh-hk.js","./zh-hk.js":"./node_modules/moment/locale/zh-hk.js","./zh-mo":"./node_modules/moment/locale/zh-mo.js","./zh-mo.js":"./node_modules/moment/locale/zh-mo.js","./zh-tw":"./node_modules/moment/locale/zh-tw.js","./zh-tw.js":"./node_modules/moment/locale/zh-tw.js"};function r(e){var t=s(e);return n(t)}function s(e){if(!n.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}r.keys=function(){return Object.keys(o)},r.resolve=s,e.exports=r,r.id="./node_modules/moment/locale sync recursive ^\\.\\/.*$"},"./node_modules/ng-csv/build/ng-csv.min.js":(e,t)=>{var n;n=window,document,angular.module("ngCsv.config",[]).value("ngCsv.config",{debug:!0}).config(["$compileProvider",function(e){angular.isDefined(e.urlSanitizationWhitelist)?e.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/):e.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|data):/)}]),angular.module("ngCsv.directives",["ngCsv.services"]),angular.module("ngCsv.services",[]),angular.module("ngCsv",["ngCsv.config","ngCsv.services","ngCsv.directives","ngSanitize"]),e.exports===t&&(e.exports="ngCsv"),angular.module("ngCsv.services").service("CSV",["$q",function(e){var t="\r\n",n={"\\t":"\t","\\b":"\b","\\v":"\v","\\f":"\f","\\r":"\r"};this.stringifyField=function(e,t){return"locale"===t.decimalSep&&this.isFloat(e)?e.toLocaleString():"."!==t.decimalSep&&this.isFloat(e)?e.toString().replace(".",t.decimalSep):"string"==typeof e?(e=e.replace(/"/g,'""'),(t.quoteStrings||e.indexOf(",")>-1||e.indexOf("\n")>-1||e.indexOf("\r")>-1)&&(e=t.txtDelim+e+t.txtDelim),e):"boolean"==typeof e?e?"TRUE":"FALSE":e},this.isFloat=function(e){return+e===e&&(!isFinite(e)||Boolean(e%1))},this.stringify=function(n,o){var r=e.defer(),s=this,a="",i="",d=e.when(n).then((function(e){var n,d;angular.isDefined(o.header)&&o.header&&(n=[],angular.forEach(o.header,(function(e){this.push(s.stringifyField(e,o))}),n),d=n.join(o.fieldSep?o.fieldSep:","),i+=d+t);var u,m,l=[];angular.isArray(e)?l=e:angular.isFunction(e)&&(l=e()),angular.isDefined(o.label)&&o.label&&"boolean"==typeof o.label&&(u=[],angular.forEach(l[0],(function(e,t){this.push(s.stringifyField(t,o))}),u),m=u.join(o.fieldSep?o.fieldSep:","),i+=m+t),angular.forEach(l,(function(e,n){var r,a,d=angular.copy(l[n]);a=[];var u=o.columnOrder?o.columnOrder:d;angular.forEach(u,(function(e){var t=o.columnOrder?d[e]:e;this.push(s.stringifyField(t,o))}),a),r=a.join(o.fieldSep?o.fieldSep:","),i+=n<l.length?r+t:r})),o.addByteOrderMarker&&(a+="\ufeff"),a+=i,r.resolve(a)}));return"function"==typeof d.catch&&d.catch((function(e){r.reject(e)})),r.promise},this.isSpecialChar=function(e){return void 0!==n[e]},this.getSpecialChar=function(e){return n[e]}}]),angular.module("ngCsv.directives").directive("ngCsv",["$parse","$q","CSV","$document","$timeout",function(e,t,o,r,s){return{restrict:"AC",scope:{data:"&ngCsv",filename:"@filename",header:"&csvHeader",columnOrder:"&csvColumnOrder",txtDelim:"@textDelimiter",decimalSep:"@decimalSeparator",quoteStrings:"@quoteStrings",fieldSep:"@fieldSeparator",lazyLoad:"@lazyLoad",addByteOrderMarker:"@addBom",ngClick:"&",charset:"@charset",label:"&csvLabel"},controller:["$scope","$element","$attrs","$transclude",function(e,n,r){e.csv="",angular.isDefined(e.lazyLoad)&&"true"==e.lazyLoad||angular.isArray(e.data)&&e.$watch("data",(function(){e.buildCSV()}),!0),e.getFilename=function(){return e.filename||"download.csv"},e.buildCSV=function(){var s=t.defer();return n.addClass(r.ngCsvLoadingClass||"ng-csv-loading"),o.stringify(e.data(),function(){var t={txtDelim:e.txtDelim?e.txtDelim:'"',decimalSep:e.decimalSep?e.decimalSep:".",quoteStrings:e.quoteStrings,addByteOrderMarker:e.addByteOrderMarker};return angular.isDefined(r.csvHeader)&&(t.header=e.$eval(e.header)),angular.isDefined(r.csvColumnOrder)&&(t.columnOrder=e.$eval(e.columnOrder)),angular.isDefined(r.csvLabel)&&(t.label=e.$eval(e.label)),t.fieldSep=e.fieldSep?e.fieldSep:",",t.fieldSep=o.isSpecialChar(t.fieldSep)?o.getSpecialChar(t.fieldSep):t.fieldSep,t}()).then((function(t){e.csv=t,n.removeClass(r.ngCsvLoadingClass||"ng-csv-loading"),s.resolve(t)})),e.$apply(),s.promise}}],link:function(e,t){t.bind("click",(function(){e.buildCSV().then((function(){!function(){var t=e.charset||"utf-8",o=new Blob([e.csv],{type:"text/csv;charset="+t+";"});if(n.navigator.msSaveOrOpenBlob)navigator.msSaveBlob(o,e.getFilename());else{var a=angular.element('<div data-tap-disabled="true"><a></a></div>'),i=angular.element(a.children()[0]);i.attr("href",n.URL.createObjectURL(o)),i.attr("download",e.getFilename()),i.attr("target","_blank"),r.find("body").append(a),s((function(){i[0].click(),i.remove()}),null)}}()})),e.$apply()}))}}}])},"./src/js/chat/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/5e32f2e1a6d11e8f150e.html"},"./src/js/closing/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/b5ecdf1981d6cd190497.html"},"./src/js/offline/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/30dfa91ae2de8cc8368b.html"},"./src/js/online/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/be5191f7b4d693a86fa3.html"},"./src/js/unmanaged/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/4b1f437e6978b48d5480.html"},"./src/js/waiting/index.tpl.html":(e,t,n)=>{"use strict";e.exports=n.p+"templates/6043a16afdb829ba5934.html"}},e=>{var t=t=>e(e.s=t);e.O(0,["vendor-index","vendor-angular-76f2ed34","vendor-angular-58d021f3","vendor-ng-embed","vendor-moment","vendor-jquery","vendor-jquery.textcomplete","vendor-emojionearea","vendor-emojione","vendor-angular-sanitize","vendor-angular-resource","vendor-angular-messages","vendor-angular-material","vendor-angular-local-storage","vendor-angular-animate","vendor-urlMatcher","vendor-transition","vendor-stateService","vendor-stateDirectives","vendor-flow"],(()=>(t("./node_modules/jquery/dist/jquery.js"),t("./node_modules/angular/index-exposed.js"),t("./node_modules/moment/moment.js"),t("./node_modules/@flowjs/flow.js/src/flow.js"),t("./node_modules/emojione/lib/js/emojione.js"),t("./src/js/index.module.js")))),e.O()}]);
 //# sourceMappingURL=chat.js.map
\ No newline at end of file
index 27d9438..b185879 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"scripts/chat.js","mappings":";iMAOAA,QAAQC,OAAO,gBAAiB,IAC/BC,SAAS,eAAe,WACvB,aAMAC,KAAKC,SAAW,GAQhBD,KAAKE,QAAU,SAAUC,GACvB,OAAO,IAAIC,EAAKD,IASlBH,KAAKK,OAAS,GASdL,KAAKM,GAAK,SAAUC,EAAOC,GACzBR,KAAKK,OAAOI,KAAK,CAACF,EAAOC,KAG3BR,KAAKU,KAAO,WACV,IAAIC,EAAKX,KAAKE,QACVD,EAAWD,KAAKC,SAChBI,EAASL,KAAKK,OAClB,MAAO,CACL,OAAU,SAASO,GAEjB,IAAIC,EAAOF,EAAGd,QAAQiB,OAAO,GAAIb,EAAUW,IAI3C,OAHAf,QAAQkB,QAAQV,GAAQ,SAAUE,GAChCM,EAAKP,GAAGC,EAAM,GAAIA,EAAM,OAEnBM,QAKfhB,QAAQC,OAAO,YAAa,CAAC,kBAC1BkB,WAAW,WAAY,CAAC,SAAU,SAAU,SAAU,cACvD,SAAUC,EAAQC,EAAQC,EAAQC,GAEhC,IAAIjB,EAAUN,QAAQiB,OAAO,GAAIG,EAAOI,MAAMH,EAAOI,WAGjDT,EAAQI,EAAOI,MAAMH,EAAOK,aAAeH,EAAYI,OAAOrB,GAE9DsB,EAAkB,SAASC,GAC7B,IAAIC,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtCL,EAAKM,QACL,IAAI1B,EAAQU,EAAOiB,WAAWC,MAAMlB,EAAQ,CAAC,SAAWS,EAAWb,GAAMuB,OAAOT,IAMhF,GALI,CACF,SAAW,EAAG,eAAiB,EAAG,YAAe,EAAG,UAAa,EAAG,SAAY,GAChFD,IACAT,EAAOoB,cAEL9B,EAAM+B,iBACR,OAAO,GAIXzB,EAAKP,GAAG,WAAYmB,GACpBR,EAAOsB,IAAI,YAAY,WACnB1B,EAAK2B,IAAI,WAAYf,MAGzBR,EAAOwB,MAAQ5B,EAEXK,EAAOwB,eAAe,cACxBvB,EAAOD,EAAOyB,UAAUC,OAAO3B,EAAQJ,GACvCI,EAAOsB,IAAI,YAAY,WACrBpB,EAAOD,EAAOyB,UAAUC,OAAO3B,UAIpC4B,UAAU,WAAY,CAAC,WACtB,MAAO,CACLC,OAAO,EACP9B,WAAY,eAGlBnB,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,SAAY,KACZ,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAIC,EAAcD,EAAMN,eAAe,iBACnCQ,EAAeF,EAAMN,eAAe,kBACpCS,EAAaH,EAAMN,eAAe,cAAgBI,EAAMzB,MAAM2B,EAAMI,WACxEN,EAAML,MAAMY,aAAaN,EAASE,EAAaC,EAAcC,QAInEtD,QAAQC,OAAO,kBAAmB,CAAC,cAKhC+C,UAAU,mBAAmB,WAC5B,MAAO,CACL,OAAS,EACT,KAAQ,SAASC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,iBAAiB,SAAU/C,GACtCA,EAAMgD,yBASbV,UAAU,gBAAiB,CAAC,WAAY,SAASW,GAChD,MAAO,CACL,OAAS,EACT,KAAQ,SAASV,EAAOC,EAASC,GAC/B,IAAIS,EACAC,GAAQ,EACZX,EAAQO,KAAK,YAAY,SAAU/C,GAmBnC,IAAoBoD,EACdC,EACAC,EADAD,GAAW,EACXC,GAFcF,EAlBFpD,GAoBasD,cAAgBF,EAAUG,cAAcD,aACrEhE,QAAQkB,QAAQ8C,GAAgBA,EAAaE,OAAO,SAASC,GAC/C,UAARA,IACFJ,GAAW,MAGRA,IAvBFF,IACHZ,EAAMmB,OAAOjB,EAAMkB,eACnBR,GAAQ,GAEVF,EAASW,OAAOV,GAChBlD,EAAMgD,qBAERR,EAAQO,KAAK,kBAAkB,SAAU/C,GACvCiD,EAASW,OAAOV,GAChBA,EAAUD,GAAS,WACjBV,EAAMzB,MAAM2B,EAAMoB,eAClBX,EAAU,KACVC,GAAQ,IACP,aAgBb7D,QAAQC,OAAO,YAAa,CAAC,cAC5B+C,UAAU,YAAY,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAY/B,SAASqB,IACPvB,EAAML,MAAM4B,WAAWtB,GAZrBC,EAAMsB,gBACRxB,EAAMyB,OAAOvB,EAAMsB,iBAAiB,SAAUE,GACxCA,EACFH,IAYJvB,EAAML,MAAMgC,aAAa1B,MANzBsB,SAYP,SAAUxE,GAAU,aACnB,IAAIC,EAASD,EAAQC,OAAO,cAAe,CAAC,cAgB5CD,EAAQkB,QAfK,CACX2D,YAAa,CAAC,QAAS,YACvBC,aAAc,CAAC,SACfC,UAAW,CAAC,QAAS,UACrBC,WAAY,CAAC,SAAU,UACvBC,eAAgB,CAAC,SAAU,UAC3BC,UAAW,CAAC,SACZC,YAAa,CAAC,SACdC,UAAW,CAAC,QAAS,YACrBC,YAAa,GACbC,SAAU,GACVC,SAAU,GACVC,MAAO,CAAC,WAAY,WAGE,SAAUC,EAAW5D,GAC3C,IA4B6B6D,EA5BzBC,EAAO,SA4BkBD,EA5Ba7D,GA6B5B+D,OAAO,GAAGC,cAAgBH,EAAOzD,MAAM,IA5BzC,mBAAR0D,IACFA,EAAO,qBAET1F,EAAO+C,UAAU2C,EAAM,CAAC,WACtB,MAAO,CACLG,QAAS,YACT3E,WAAY,CAAC,SAAU,SAAU,SAAUC,EAAQC,GACjDD,EAAOsB,IAAI,SAAWb,GAAW,WAC/B,IAAIkE,EAAWhE,MAAMC,UAAUC,MAAMC,KAAKC,WACtCzB,EAAQqF,EAAS3D,QAErB,GAAIhB,EAAOwB,QAAUmD,EAAS3D,QAA9B,CAGA,IAAIN,EAAO,GACX9B,EAAQkB,QAAQuE,GAAW,SAASd,EAAOqB,GACzClE,EAAK6C,GAASoB,EAASC,OAEgB,IAArC5E,EAAOI,MAAMH,EAAOsE,GAAO7D,IAC7BpB,EAAMgD,8BAtCnB,CAiDC1D,SAEFA,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAI8C,EAAO9C,EAAM+C,QACjBjD,EAAMyB,OAAOuB,GAAM,SAAUA,GAC3B,GAAKA,EAAL,CAGA,IAAIE,EAAa,IAAIC,WACrBD,EAAWE,cAAcJ,EAAKA,MAC9BE,EAAWG,OAAS,SAAU5F,GAC5BuC,EAAMmB,QAAO,WACXjB,EAAMoD,KAAK,MAAO7F,EAAM8F,OAAOC,qBAO3CzG,QAAQC,OAAO,iBAAkB,CAAC,cACjC+C,UAAU,gBAAiB,CAAC,WAC3B,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,GACfA,EAAMyD,UAAYzD,EAAML,MAAM+D,WAIpC3G,QAAQC,OAAO,OAAQ,CAAC,gBAAiB,YAAa,cAAe,WACnE,YAAa,iBAAkB,WAAY,yHC9JlC2G,4PAkKX,SAASC,EAAmBC,EAAUC,EAAaC,EAAcC,EAAOC,GACpE,IAAIC,GAAkB,IAAAC,OAAM,yBACxBC,GAAe,IAAAD,OAAM,sBACzB,MAAO,CACHE,SAAU,MACVC,UAAW,IACXC,QAAS,SAAUC,GACf,IAAIC,EAAUD,EAASE,OAEvB,OADAF,EAASG,QACF,SAAU3E,EAAO4E,GACpB,IAAIC,EAAOD,EAASC,KAAK,WACzB,IAAKA,EAGD,OAFAD,EAASF,KAAKD,QACdZ,EAASe,EAASE,WAAlBjB,CAA8B7D,GAGlC,IAAI+E,EAAMF,EAAKG,MAAQ,CAAEC,SAAU,GAAIC,YAAa,EAAAC,MAChDC,EAAaL,EAAIM,MAAQ,IAAI,EAAAC,eAAeP,EAAIM,MACpDT,EAASF,KAAKK,EAAIG,YAAYN,EAAUQ,IAAeX,GACvD,EAAAc,MAAA,gBAAsBV,EAAKW,QAASZ,EAASF,QAC7C,IAAIe,EAAO5B,EAASe,EAASE,YACzB5G,EAAa6G,EAAI7G,WACjBwH,EAAexB,EAAgBa,GAC/BY,EAAYvB,EAAaW,GACzBa,EAASR,IAAc,OAAUA,GAErC,GADApF,EAAM2F,GAAaC,EACf1H,EAAY,CACZ,IAAI2H,EAAsB/B,EAAY5F,GAAY,IAAAF,QAAO,GAAI4H,EAAQ,CAAEzH,OAAQ6B,EAAO4E,SAAUA,KAC5Fc,IACA1F,EAAM0F,GAAgBG,EACtB7F,EAAM0F,GAAcC,GAAaC,GAMrChB,EAASC,KAAK,0BAA2BgB,GACzCjB,EAASkB,WAAWjB,KAAK,0BAA2BgB,GACpDE,EAA4B9B,EAAIF,EAAc8B,EAAoB7F,EAAO+E,GAG7E,IAAI,IAAAiB,UAASjB,EAAIkB,WACb,IAAIC,GAAY,IAAAC,aAAYpB,EAAIkB,WAC5BG,EAAc,IAAIC,OAAO,eAAiBH,EAAY,IAAK,KAO3DI,EAAoBtG,EAAMyB,QAND,WACzB,IAAI8E,EAAc,GAAGvH,MAChBC,KAAK2F,EAAS,GAAGkB,UACjBU,QAAO,SAAUC,GAAM,OAAOA,GAAMA,EAAGC,SAAWN,EAAYO,KAAKF,EAAGC,YAC3E,OAAOH,GAAe,aAAgBA,GAAa1B,KAAK,IAAME,EAAIkB,UAAY,iBAErB,SAAUW,GAC9DA,IAELb,EAA4B9B,EAAIF,EAAc6C,EAAc5G,EAAO+E,GACnEuB,QAGRb,EAAKzF,MAzNrB2D,EAAS,CACL,QACA,WACA,gBACA,eACA,KACA,SAAwBK,EAAO6C,EAAUC,EAAeC,EAAc9C,GAwBlE,IAAI+C,EAAW,CACXhC,KAAM,CAAEC,SAAU,CAAEgC,SAAUjD,EAAMkD,WAAWC,qBAC/C3B,QAAS,IAETzF,EAAY,CACZqH,MAAO,EACP/C,SAAU,MACVgD,UAAU,EACV/C,SAAU,IACVgD,WAAY,UACZ/C,QAAS,SAAUC,EAAU+C,EAAQC,GACjC,OAAO,SAAUxH,EAAO4E,EAAU1E,GAC9B,IACIuH,EAAYC,EAAWC,EAAcC,EADrCC,EAAY3H,EAAc,QAAK,GAAI4H,EAAgB5H,EAAkB,WAAG6H,EAjCzE,SAAU9H,EAASsD,EAAQyE,GAC1B,mBAAwB,EACxBnB,EAASjG,MAAMX,EAAS,KAAMsD,GAAQ0E,KAAKD,GAG3CnB,EAASjG,MAAMX,EAAS,KAAMsD,EAAQyE,IA4BkCD,EAzBzE,SAAU9H,EAAS+H,GAClB,mBAAwB,EACxBnB,EAASqB,MAAMjI,GAASgI,KAAKD,GAG7BnB,EAASqB,MAAMjI,EAAS+H,IAoB0EG,EAAYvD,EAASwD,cAAc,YAAcpB,EAAUtE,EAAOqE,EAAa7G,EAAc,QAAKA,EAAY,MAAK,GAAjD6G,CAAqD/G,IAAU,WAEnOqI,EAAe,CACfC,MAAO,MACPC,GAAIxI,EAAUqH,QACd1E,KAAMA,EACN8F,IAAKL,EAAU3C,QAAQgD,IAAML,EAAU3C,QAAQgD,IAAM,IAAM9F,EAAOA,EAClE+F,OAAQ,KACRC,cAWJ,SAA+BD,KACvBA,GAAYA,aAAkB,QAEjBb,IAAYa,IAE7B,EAAAlD,MAAA,yBAA+B8C,EAAcI,GAAUA,EAAOxD,UAAYwD,EAAOxD,SAASgC,UAC1FW,EAAaa,EACbE,EAAWF,MAjBX,sBAEI,IAAIG,GAAsB,IAAAzE,OAAM,yBAAN,CAAgCgE,GAGtDU,GAAgB,IAAA1E,OAAM,0BAAN,CAAiCgE,GACrD,OAAOS,GAAuBC,IAGtC,EAAAtD,MAAA,iBAAuB,UAAW8C,GAUlCzD,EAASC,KAAK,UAAW,CAAEW,QAAS6C,IACpCM,IACA,IAAIG,EAAa9E,EAAM+E,eAAeV,GA2BtC,SAASM,EAAWF,GAChB,IAAIO,EAAWhJ,EAAMiJ,OACjBC,EAAYjF,EAAGkF,QAASC,EAAYnF,EAAGkF,QACvCE,EAAc,CACdrE,KAAMyD,EACNjD,QAAS6C,GAETiB,EAAc,CACdC,WAAYL,EAAUvI,QACtB6I,WAAYJ,EAAUzI,QACtB8I,YAAaL,GAcjBJ,EAASU,MAAM,sBAAuBhH,GACtC,IAAIiH,EAASnC,EAAYwB,GAAU,SAAUY,GACzCA,EAAM/E,KAAK,cAAeyE,GAC1BM,EAAM/E,KAAK,UAAWwE,GACtBtB,EAAe6B,EAAOhF,GAAU,WAC5BsE,EAAUW,UACNlC,GACAA,EAAa+B,MAAM,gCAClB,IAAAI,WAAUhC,KAAmBA,GAAkB9H,EAAMzB,MAAMuJ,KAC5DhB,EAAc8C,MAvD9B,WAWI,GAVInC,IACA,EAAAlC,MAAA,iBAAuB,yBAA0BkC,EAAW5C,KAAK,YACjE4C,EAAWsC,SACXtC,EAAa,MAEbE,IACA,EAAApC,MAAA,iBAAuB,mBAAoB8C,GAC3CV,EAAaqC,WACbrC,EAAe,MAEfD,EAAW,CACX,IAAIuC,EAAcvC,EAAU7C,KAAK,eACjC,EAAAU,MAAA,iBAAuB,cAAe0E,GACtClC,EAAeL,GAAW,WACtBuC,EAAYR,YAAYI,UACxBpC,EAAa,QAEjBA,EAAaC,EACbA,EAAY,MAuCZwC,MAEJxC,EAAYiC,GACZhC,EAAeqB,GAWFU,MAAM,qBAAsBjB,GAAUb,GACnDD,EAAapJ,MAAMsJ,GA7EvB7H,EAAMP,IAAI,YAAY,WAClB,EAAA8F,MAAA,iBAAuB,2BAA4B8C,GACnDS,UAgFhB,OAAO/I,IAGf6D,EAAmBuG,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,MAiElF,IAAIC,EAAuE,mBAA7C,YAAe,aAAwB,UAEjEC,EAAe,EAEnB,SAAStE,EAA4B9B,EAAIF,EAAc8B,EAAoB1H,EAAQ4G,KAE3E,IAAAuF,YAAWzE,EAAmB0E,WAC3BxF,EAAIE,SAASgB,WAAalB,EAAIE,SAASuF,oBAAsBJ,GAChEvE,EAAmB0E,UAEvB,IAAIE,GAAY,IAAAC,MAAK3F,EAAIM,MAAMsF,MAAMC,KACjCC,EAAc,CAAErK,KAAMqF,GAE1B,IAAI,IAAAyE,YAAWzE,EAAmBiF,mBAAoB,CAClD,IACIC,EADiB,IAAI,EAAAzF,eAAeP,EAAIM,MACH2F,cAAc,gBAAgBnG,KAyBvE1G,EAAOsB,IAAI,WAAYsE,EAAakH,UAAU,IAvB1B,SAAUC,GAG1B,GAAIA,IAAiBH,IAAsE,IAA/CG,EAAaC,UAAUC,QAAQX,GAA3E,CAEA,IAAIY,EAAWH,EAAaI,OAAO,MAC/BC,EAAaL,EAAaI,OAAO,QACjCE,EAAgB,SAAUC,GAAQ,OAAOA,EAAKC,aAC9CC,EAAWT,EAAaU,YAAY,MAAMC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAC7EC,EAAad,EAAaU,YAAY,QAAQC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAEjFE,EAAkBN,EAASnF,QAAO,SAAU0F,GAC5C,IAAIC,EAAMH,EAAWZ,QAAQc,GAC7B,OAAgB,IAATC,IAAeH,EAAWG,GAAKC,KAAKC,OAAOhB,EAASa,EAAM3D,IAAKgD,EAAWW,EAAM3D,QAG3F,GAAI0D,EAAgBK,OAAQ,CACxB,IAAIC,EAAgBN,EAAgBJ,KAAI,SAAUW,GAAK,OAAOA,EAAEjE,MAE5DkE,GAAY,IAAAjG,QAAO6E,GAAU,SAAUnK,EAAK6B,GAAO,OAAuC,IAAhCwJ,EAAcnB,QAAQrI,MACpF8C,EAAmBiF,kBAAkB2B,EAAWvB,OAGSL,IAGrE,IAAI,IAAAP,YAAWzE,EAAmB6G,WAAY,CAC1C,IAAIC,EAAOtC,IACPuC,EAAc,gBAEdC,EAAqB,SAAUC,GAC/B,QAASA,IAAWA,EAAMF,KAA6C,IAA7BE,EAAMF,GAAaD,IAAmBE,EAAmBC,EAAMC,oBAYzGC,EAAW,CAAE7B,QAASV,EAAU/H,MACpCvE,EAAOsB,IAAI,WAAYsE,EAAakJ,SAASD,GAV3B,SAAUF,GACxB,IAAInM,EACAuM,EAAOJ,EAAMF,GAAeE,EAAMF,IAAgB,GAKtD,OAJKC,EAAmBC,KACpBnM,EAAUsD,EAAGkJ,KAAKtH,EAAmB6G,UAAUI,KACvC7E,MAAK,SAAU/G,GAAO,OAAQgM,EAAIP,IAAgB,IAARzL,KAE/CP,IAGyDkK,KAG5E,YAAe,mBAAmB9K,UAAU,SAAU4D,GACtD,YAAe,mBAAmB5D,UAAU,SAAU6D,qSC9ZlDwJ,EAAiC,WACjC,SAASA,IACL,IAAIC,EAAQnQ,KACGA,KAAKoQ,SAAWvQ,EAAQ,GAAR,cAAwB,EACxCG,KAAKU,KAAO,CACvB,QACA,iBACA,YACA,SAAU2P,EAAOC,EAAgBC,GAI7B,OAHAJ,EAAMK,iBAAmBD,EAAUE,KAAOF,EAAUE,IAAI,qBAAuBF,EAAUG,IAAI,oBAC7FP,EAAME,MAAQA,EACdF,EAAMG,eAAiBA,EAChBH,IAyJnB,OApJAD,EAAgBrO,UAAU8O,eAAiB,SAAUnM,GACjDxE,KAAKoQ,SAAW5L,GAepB0L,EAAgBrO,UAAU+O,WAAa,SAAUrF,EAAQ6C,EAAQyC,GAC7D,IACIC,EAAa,SAAUxK,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGC,SAAUD,OAC3GE,EAAc,SAAU5K,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGjI,UAAWiI,OACjH,OAAO,IAAApE,WAAUrB,EAAO0F,UAClBH,EAAW9Q,KAAKmR,WAAW5F,EAAO0F,SAAU7C,KAC5C,IAAAxB,WAAUrB,EAAO6F,aACbN,EAAW9Q,KAAKqR,QAAQ9F,EAAO6F,YAAahD,KAC5C,IAAAxB,WAAUrB,EAAO+F,kBACbR,EAAW9Q,KAAKuR,aAAahG,EAAO+F,iBAAkBlD,EAAQyC,KAC9D,IAAAjE,WAAUrB,EAAOxC,WACbmI,EAAY3F,EAAOxC,YACnB,IAAA6D,WAAUrB,EAAO+B,mBACb4D,EAAYlR,KAAKwR,sBAAsBjG,EAAO+B,kBAAmBc,EAAQyC,IACzEC,EAbA,wBAwB1BZ,EAAgBrO,UAAUsP,WAAa,SAAUF,EAAU7C,GACvD,OAAO,IAAAhB,YAAW6D,GAAYA,EAAS7C,GAAU6C,GAWrDf,EAAgBrO,UAAUwP,QAAU,SAAUI,EAAKrD,GAG/C,OAFI,IAAAhB,YAAWqE,KACXA,EAAMA,EAAIrD,IACH,MAAPqD,EACO,KACPzR,KAAKoQ,SACEpQ,KAAKqQ,MACPK,IAAIe,EAAK,CAAEC,MAAO1R,KAAKsQ,eAAgBqB,QAAS,CAAEC,OAAQ,eAC1D7G,MAAK,SAAU8G,GAChB,OAAOA,EAASlK,QAGjB3H,KAAKwQ,iBAAiBiB,IAUjCvB,EAAgBrO,UAAU0P,aAAe,SAAUxR,EAAUqO,EAAQyC,GACjE,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAS1BX,EAAgBrO,UAAU2P,sBAAwB,SAAUzR,EAAUqO,EAAQyC,GAC1E,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAgB1BX,EAAgBrO,UAAUqQ,sBAAwB,SAAUzL,EAAQoK,EAAS9H,EAAWoJ,GACpFA,EAAWA,GAAY,GAEvB,IAAIC,EAASvS,EAAQ,GAAR,eAAyB,EAAI,KAAO,GAE7CwS,EAAQ,SAAUC,GAClB,IAAIC,GAAU,IAAAtJ,aAAYqJ,GAC1B,MAAO,aAAa7I,KAAK8I,GAAW,KAAOA,EAAUA,GA6BrDvP,EAQZ,SAA8BwC,GAC1B,IAAIgN,EAAU,EAAAzB,SAAA,cAAuBvL,EAAO,aAC5C,IAAKgN,IAAYA,EAAQpD,OACrB,MAAM,IAAIqD,MAAM,mCAAqCjN,EAAO,KAChE,OAAOgN,EAAQ7D,IAAI+D,GAAa9D,OAAO,EAAAC,QAAS,IAZhC8D,CAAqB5J,GAAW4F,KA3BzB,SAAUiE,GACzB,IAAIpN,EAAOoN,EAAMpN,KAAM0J,EAAO0D,EAAM1D,KAChC2D,EAAWR,EAAM7M,GAIrB,GAAIiB,EAAOqM,KAAKD,KAAcV,EAAS3M,GACnC,OAAOqN,EAAW,KAAOpM,EAAOqM,KAAKD,GAAY,IACrD,IAAIE,EAAcZ,EAAS3M,IAASA,EAGpC,GAAa,MAAT0J,EACA,OAAO2D,EAAW,OAAST,EAAS,YAAcW,EAAc,MAIpE,GAAa,MAAT7D,EAAc,CACd,IAAI8D,EAAMnC,EAAQ/C,cAAciF,GAC5BpS,EAAKqS,GAAOA,EAAIrL,KAChBhG,EAAQhB,GAAM,EAAAoQ,SAAA,mBAA4BpQ,IAAQ,GAGtD,OAAOkS,EAAW,cAAgBE,IADhB,IAAAf,SAAQrR,GAAM,KAAOA,EAAGyO,OAAS,GAAK,IAAM,IACA,IAAMzN,EAAKsR,KAAK,KAAO,KAGzF,OAAOJ,EAAW,KAAOT,EAAS,YAAcW,EAAc,OAEJE,KAAK,KAC/DjK,EAAYqJ,EAAMtJ,GACtB,MAAO,IAAMC,EAAY,IAAMhG,EAAQ,MAAQgG,EAAY,KAExDkH,EArKyB,GAiLhCwC,EAAc,SAAUQ,GACxB,OAAI,IAAAC,UAASD,EAAIE,kBACNC,EAAcH,EAAIE,kBACtBC,EAAcH,EAAIpQ,QAIzBuQ,EAAgB,SAAUC,GAC1B,OAAOC,OAAOC,KAAKF,GAAe,IAE7B3E,KAAI,SAAU9I,GAAO,MAAO,CAACA,EAAK,oBAAoB4D,KAAK6J,EAAYzN,QAEvEyD,QAAO,SAAUmK,GAAS,OAAO,IAAA7G,WAAU6G,KAAU,IAAAzB,SAAQyB,EAAM,OAEnE9E,KAAI,SAAU8E,GAAS,MAAO,CAAGjO,KAAMiO,EAAM,GAAG,IAAMA,EAAM,GAAIvE,KAAMuE,EAAM,GAAG,2ECzL7EC,EAAsB,SAAUC,GACvC,OAAO,SAA0BC,GAC7B,IAAIC,EAAOD,EAAYD,GACnBG,EAAwB,WAAbH,EAAwB,OAAS,KAOhD,OAAOE,EANP,SAA0BjE,EAAOnC,GAC7B,IACIsG,EADiB,IAAI,EAAA3L,eAAewH,EAAMlB,YAAYoF,IAC1BC,WAAWtG,EAAMuG,WAC7CtL,GAAS,IAAA5H,QAAOmT,EAAUF,GAAa,CAAEG,QAASzG,EAAOO,aAAc4B,IAC3E,OAAO,EAAAmB,SAAA,iBAA0B8C,EAAM7T,KAAM0I,SAEhByL,ICfrCC,EAAqC,WACrC,SAASA,EAAoBC,GAEzBrU,KAAKsU,cAAgB,GACrBtU,KAAKqU,kBAAoBA,EACzB,IAAIE,GAAM,IAAAvQ,KAAIqQ,IACd,IAAAG,sBAAqBD,EAAKvU,KAAMuU,EAAK,CAAC,eA8D1C,OAhDAH,EAAoBK,6BAA+B,SAAUC,GACzD,IAAIC,EAAWD,EAAOE,kBAAkB1F,KAAK,QAC7CyF,EAASE,OAAS,SAAUvF,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,WAAW,SAAUC,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,MAAU1F,GAElHqF,EAASM,OAAS,SAAU3F,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,aAAa,SAAUC,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,MAAU1F,IAIxH8E,EAAoBvS,UAAUqT,QAAU,aACxCd,EAAoBvS,UAAUsT,SAAW,SAAU3U,GAC/C,IAAI2P,EAAQnQ,KAEZ,OADAA,KAAKsU,cAAc7T,KAAKD,GACjB,WAAc,OAAO,IAAA4U,YAAWjF,EAAMmE,cAAjB,CAAgC9T,KAEhE4T,EAAoBvS,UAAUwT,UAAY,WACtC,IAAIA,EAAYrV,KAAKqU,kBAAkBgB,YAEvC,OADAA,GAAY,IAAAlC,UAASkC,GAAaA,EAAUC,QAAUD,IAClCrV,KAAKuV,SAASC,SAEtCpB,EAAoBvS,UAAU4T,SAAW,WACrC,OAAOzV,KAAK0V,YAAc1V,KAAK0V,UAAY1V,KAAK2V,SAASF,YAAczV,KAAK4V,QAAQC,SAAS/B,WAEjGM,EAAoBvS,UAAU4P,IAAM,SAAUqE,EAAQf,EAAStH,GAQ3D,YAPgB,IAAZsH,IAAsBA,GAAU,IAChC,IAAAnI,WAAUkJ,IACV9V,KAAK+V,UAAUtE,IAAIqE,GACnBf,GACA/U,KAAK+V,UAAUhB,UACftH,GACAzN,KAAK+V,UAAUtI,MAAMA,GAClBzN,KAAK+V,UAAUtE,OAE1B2C,EAAoBvS,UAAUmU,iBAAmB,SAAUC,EAAYF,EAAWR,EAAUI,EAAUC,GAClG,IAAIzF,EAAQnQ,KACZA,KAAK+V,UAAYA,EACjB/V,KAAKuV,SAAWA,EAChBvV,KAAK2V,SAAWA,EAChB3V,KAAK4V,QAAUA,EAEfK,EAAW1T,IAAI,0BAA0B,SAAU2T,GAAO,OAAO/F,EAAMmE,cAAcvT,SAAQ,SAAUJ,GAAM,OAAOA,EAAGuV,SACvH,IAAIC,GAAO,IAAAnS,KAAI+R,IAEf,IAAAvB,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,UAAW,OAAQ,SAAU,UAErE,IAAA3B,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,OAAQ,WAAY,UAEzD/B,EApE6B,0ECaxCvU,EAAQ,GAAR,OAAe,qBAAsB,IACrC,IAAIuW,EAAWvW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,OAC7CwW,EAAWxW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,mBAC7CyW,EAAUzW,EAAQ,GAAR,OAAe,mBAAoB,CAAC,mBAC9C0W,EAAY1W,EAAQ,GAAR,OAAe,kBAAmB,CAAC,mBAAoB,iBAAkB,uBACrF2W,EAAW3W,EAAQ,GAAR,OAAe,YAAa,CAAC,iBAAkB,kBAAmB,uBAE7E6U,GADW7U,EAAQ,GAAR,OAAe,mBAAoB,CAAC,cACtC,MAGb,SAAS4W,EAAkBpC,IAEvBK,EAAS1U,KAAK0U,OAAS,IAAI,EAAAgC,UACpBC,cAAgB,IAAI,IAAcjC,EAAOkC,cAAelC,EAAOmC,cAEtEnC,EAAOkC,cAAcE,UAAU,QAAS,MACxCpC,EAAOkC,cAAcE,UAAU,SAAUpD,EAAoB,WAC7DgB,EAAOkC,cAAcE,UAAU,WAAYpD,EAAoB,aAC/DgB,EAAOkC,cAAcE,UAAU,UAAWpD,EAAoB,YAC9DgB,EAAOqC,YAAY/M,WAAWgN,mBAAmB,OAAO,WAExDtC,EAAOuC,WAAW1L,OAAO2L,eAAgB,EACzC,IAAIC,EAAsBzC,EAAO0C,gBAAkB1C,EAAO2C,eAAiB,IAAIjD,EAAoBC,GAMnG,SAAS3T,EAAKqV,EAAWJ,EAAUC,EAASL,EAAUU,EAAY5F,EAAOC,GAIrE,OAHA6G,EAAmBnB,iBAAiBC,EAAYF,EAAWR,EAAUI,EAAUC,UACxElB,EAAe,cACfA,EAAa,KACbA,EAEX,OAXAN,EAAoBK,6BAA6BC,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhU,EACjBA,EAAKuM,QAAU,CAAC,YAAa,WAAY,UAAW,WAAY,aAAc,QAAS,kBAOhFyH,EA1BX+B,EAAkBxJ,QAAU,CAAC,qBA4B7B,IAAIqK,EAAiB,SAAUC,GAAe,MAAO,CACjD,oBACA,SAAUC,GACN,IAAIC,EAAUD,EAAK9C,OAAO6C,GAE1B,OADAE,EAAc,KAAI,WAAc,OAAOA,GAChCA,KAKf,SAASC,EAASnH,EAAWxJ,EAAI4Q,GAI7B,GAHA,EAAA5G,SAAA,UAAqBR,EACrB,EAAAQ,SAAA,GAAchK,GAETwM,OAAO1R,UAAUa,eAAeX,KAAKwO,EAAW,YACjD,IACIA,EAAUqH,QAAO,SAAUC,OAE/B,MAAOxS,GACHkL,EAAUuH,WAAa,cAAcrO,KAAKpE,GAASA,EAAMyP,YAKjE6C,EAAUf,cACLlG,MACA/B,KAAI,SAAUW,GAAK,OAAOA,EAAE0E,UAAU+D,eACtCnJ,OAAO,EAAAC,QAAS,IAChBvF,QAAO,SAAUgG,GAAK,MAAkB,aAAXA,EAAEwC,QAC/B/Q,SAAQ,SAAUiX,GAAc,OAAQA,EAAWlG,KAAOvB,EAAU0H,SAASD,EAAWE,UAAW3H,EAAUuH,aAQ/G,SAASK,EAAalC,GACzBA,EAAW1R,QAAO,WACd,EAAA8D,MAAA,wBA9BRqP,EAASzK,QAAU,CAAC,YAAa,KAAM,aA2BvCkL,EAAalL,QAAU,CAAC,cAMxBmJ,EAASrW,SAAS,YAAa0W,GAC/BH,EAAQvW,SAAS,aAAc,CAAC,oBAXL,SAAUqY,GAAY,OAAQA,EAASC,kBAAoB,IAAI,IAAkBD,MAY5G/B,EAAStW,SAAS,cAAeuX,EAAe,eAChDjB,EAAStW,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAO2U,EAAOE,qBAC1FyB,EAAStW,SAAS,oBAAoB,WAAc,OAAO,IAAImQ,KAC/DqG,EAAUxW,SAAS,iBAAkBuX,EAAe,kBACpDf,EAAUxW,SAAS,mBAAoBuX,EAAe,YACtDf,EAAUxW,SAAS,eAAgBuX,EAAe,sBAClDf,EAAUxW,SAAS,SAAU,CAAC,oBAfP,WAAc,OAAO,IAAAe,QAAO4T,EAAOiC,cAAe,CAAEjW,KAAM,WAAc,OAAOgU,EAAOmC,mBAgB7GN,EAAUrW,QAAQ,eAAgB,CAAC,YAAa,SAAUyX,GAAa,OAAOA,EAAUW,QAAQlK,UAChGoI,EAAStW,QAAQ,SAAS,WAAc,OAAOwU,EAAOqC,eACtDP,EAASiB,QAAQ,UAAU,WAAc,OAAO,EAAApP,SAChDmO,EAAS+B,IAAIJ,GACb9B,EAASkC,IAAI,CAAC,qBAAsB,SAAUC,OAC9CjC,EAAUgC,IAAI,CAAC,SAAU,SAAUE,OACnCnC,EAAQiC,IAAI,CAAC,aAAc,SAAUG,OACrCtC,EAASmC,IAAIb,GAEN,IAAIzD,EAAY,SAAU0E,GAO7B,OANaA,EAAIC,YAAYtP,OAAO,EAAAR,UAChB6F,KAAI,SAAU9I,GAC9B,IAAImS,EAAaW,EAAI7K,cAAcjI,GAEnC,MAAO,CAACA,EAAoB,WADX8S,EAAIE,UAAUb,GAAYc,MACJd,EAAWvU,QAAUuU,EAAWrQ,SAE7DiH,OAAO,EAAAmK,WAAY,2JC9GrC,SAASC,EAAeP,GACpB,IAAIQ,EAAW,SAAUxL,EAAOW,EAAQjO,GACpC,OAAOsY,EAAOS,GAAGzL,EAAOW,EAAQjO,IAGpC,OADA8Y,EAASE,WAAY,EACdF,EAaX,SAASG,EAAuBX,GAC5B,IAAIY,EAAiB,SAAU5L,EAAOW,EAAQjO,GAC1C,OAAOsY,EAAOa,SAAS7L,EAAOW,EAAQjO,IAG1C,OADAkZ,EAAeF,WAAY,EACpBE,EAxBXL,EAAe/L,QAAU,CAAC,UAkB1BmM,EAAuBnM,QAAU,CAAC,UAQlC,YAAe,mBAAmB3D,OAAO,UAAW0P,GAAgB1P,OAAO,kBAAmB8P,oKCpB1FG,EAA+B,WAC/B,SAASA,EAAc3C,EAAeC,GAClC7W,KAAK4W,cAAgBA,EACrB5W,KAAK6W,aAAeA,GACpB,IAAArC,uBAAqB,IAAAxQ,KAAIuV,EAAc1X,WAAY7B,MAAM,IAAAgE,KAAIhE,OAgHjE,OArBAuZ,EAAc1X,UAAUiV,UAAY,SAAUtR,EAAMgU,GAChD,OAAOxZ,KAAK4W,cAAcE,UAAUtR,EAAMgU,IAASxZ,MAEvDuZ,EAAc1X,UAAU4L,MAAQ,SAAUjI,EAAMiU,GAQ5C,OAPI,IAAAtG,UAAS3N,GACTiU,EAAajU,EAGbiU,EAAWjU,KAAOA,EAEtBxF,KAAK4W,cAAc8C,SAASD,GACrBzZ,MAOXuZ,EAAc1X,UAAU8X,UAAY,SAAUnZ,GAC1C,OAAOR,KAAK6W,aAAa8C,UAAUnZ,IAEhC+Y,EApHuB,6LCf3B,SAASK,IACZ,IAAIC,EAAkB,KACtB,OAAO,SAAU1R,EAAM2R,GAEnB,OADAD,EAAkBA,GAAmB,EAAA9I,SAAA,cAAuB,oBACrD,CAAC,IAAIgJ,EAAc5R,EAAM2R,EAAMD,KAI9C,IAAIG,EAAY,SAAUxG,EAAMyG,GAAO,OAAOzG,EAAK5E,QAAO,SAAUsL,EAAKrU,GAAO,OAAOqU,IAAO,IAAAtN,WAAUqN,EAAIpU,OAAU,IAY/G,SAASsU,EAAgB1M,GAE5B,IAAKA,EAAM2M,OACP,MAAO,GACX,IAAgKC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyKlY,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiHmY,EAAcF,EAASjY,OAAOkY,GAIjS,IAAI,IAAA1N,WAAUa,EAAM+M,QAAUR,EAAUO,EAAa9M,GACjD,MAAM,IAAIgF,MAAM,UAAYhF,EAAMjI,KAAlB,4JAGL+U,EAAYjR,QAAO,SAAUzD,GAAO,OAAO,IAAA+G,WAAUa,EAAM5H,OAAUoN,KAAK,OAEzF,IAAIuH,EAAQ,GAAIC,EAAchN,EAAM+M,OAAS,CAAEE,UAAU,IAAAC,MAAKlN,EAAO8M,IAsBrE,OArBA,IAAAxZ,SAAQ0Z,GAAa,SAAUlP,EAAQ/F,GASnC,GAPAA,EAAOA,GAAQ,YAEX,IAAAsD,UAASyC,KACTA,EAAS,CAAExC,UAAWwC,IAE1BA,GAAS,IAAAzK,QAAO,GAAIyK,GAEhByO,EAAUK,EAAU9O,IAAWyO,EAAUM,EAAa/O,GACtD,MAAM,IAAIkH,MAAM,mBAAqB4H,EAASpH,KAAK,KAAO,UAAYqH,EAAYrH,KAAK,KAAO,mBAAqBzN,EAAO,IAAMiI,EAAMjI,KAAO,KAEjJ+F,EAAO9C,UAAY8C,EAAO9C,WAAa,WACvC8C,EAAOH,MAAQ,MACfG,EAAOxB,SAAW0D,EAClBlC,EAAOqP,MAAQpV,EACf,IAAIqV,EAAa,EAAAC,YAAA,sBAAkCvP,EAAOxB,SAAUwB,EAAOqP,OAC3ErP,EAAOwP,YAAcF,EAAWG,WAChCzP,EAAO0P,qBAAuBJ,EAAWK,oBACzCV,EAAMhV,GAAQ+F,KAEXiP,EAGX,IAAInP,EAAK,EAEL0O,EAA+B,WAC/B,SAASA,EAAc5R,EAAMJ,EAAU7H,GACnC,IAAIiQ,EAAQnQ,KACZA,KAAKmI,KAAOA,EACZnI,KAAK+H,SAAWA,EAChB/H,KAAKE,QAAUA,EACfF,KAAKmb,IAAM9P,IACXrL,KAAKob,QAAS,EACdpb,KAAKgI,YAAc,SAAUvB,EAAQoK,GACjC,OAAOV,EAAMpH,UACPoH,EAAMjQ,QAAQgS,sBAAsBzL,EAAQoK,EAASV,EAAMpH,UAAWoH,EAAMpI,SAASoK,UACrFhC,EAAMc,UAiCpB,OA9BA8I,EAAclY,UAAUwZ,KAAO,WAC3B,IAAIlL,EAAQnQ,KACR+G,EAAK,EAAAgK,SAAA,GACLF,EAAU,IAAI,EAAAzI,eAAepI,KAAKmI,MAClCiG,EAASpO,KAAKmI,KAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,IAAAzN,QAAOoZ,EAAK3L,EAAK+M,eAAiB,IAC1FC,EAAW,CACXtK,SAAUlK,EAAGkJ,KAAKjQ,KAAKE,QAAQ0Q,WAAW5Q,KAAK+H,SAAUqG,EAAQyC,IACjE7P,WAAY+F,EAAGkJ,KAAKjQ,KAAKwb,cAAc3K,KAE3C,OAAO9J,EAAG0U,IAAIF,GAAUxQ,MAAK,SAAU2Q,GAInC,OAHA,EAAArT,MAAA,sBAA4B,SAAU8H,GACtCA,EAAMnP,WAAa0a,EAAQ1a,YAC3B,IAAAF,QAAOqP,EAAOuL,EAAQzK,UACfd,MAQf4J,EAAclY,UAAU2Z,cAAgB,SAAU3K,GAC9C,IAAI9Q,EAAWC,KAAK+H,SAAS4T,mBAC7B,KAAK,IAAAC,cAAa7b,GACd,OAAOC,KAAK+H,SAAS/G,WACzB,IAAI8Q,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAEnBkJ,EA5CuB,wKC9C9B8B,EAAmC,WAEnC,SAASA,EAAiCnH,GACtC1U,KAAK0U,OAASA,EA2KlB,OAzKAmH,EAAkBC,kBAAoB,SAAUpH,EAAQqH,GACpD,OAAO,SAAUC,GAAS,OAAO,EAAAjL,SAAA,iBAA0BgL,EAAS,KAAM,CAAEE,OAAQD,EAAOE,aAAcxH,EAAO4D,QAAQlK,WAG5HyN,EAAkBha,UAAUnB,KAAO,WAC/B,IAAIuW,EAAajX,KAAK0U,OAAOuC,WAI7B,OAHAjX,KAAK0U,OAAOyH,UAAUC,QAAO,GACxBnF,EAAWoF,mBACZpF,EAAWqF,SACRtc,KAAK0U,OAAOyH,WAiCvBN,EAAkBha,UAAU0a,KAAO,SAAUC,GACzC,IAAIrM,EAAQnQ,KACZ,KAAK,IAAAoN,YAAWoP,GACZ,MAAM,IAAI/J,MAAM,6BACpB,IACI8J,EAAO,IAAI,EAAAE,aADH,WAAc,OAAOD,EAAO,EAAAzL,SAAA,UAAoBZ,EAAMuE,OAAO0C,mBACvC,EAAAsF,UAElC,OADA1c,KAAK0U,OAAOuC,WAAW0F,MAAMJ,KAAKA,GAC3Bvc,MA4BX6b,EAAkBha,UAAU+a,UAAY,SAAUL,GAC9C,IAAIpM,EAAQnQ,KACR6c,EAAW7c,KAAK0U,OAAOuC,WAAW0F,MACtC,IAAI,IAAA7T,UAASyT,GACTM,EAASD,UAAUL,OAElB,MAAI,IAAAnP,YAAWmP,GAIhB,MAAM,IAAI9J,MAAM,uCAHhBoK,EAASD,WAAU,WAAc,OAAOL,EAAK,EAAAxL,SAAA,UAAoBZ,EAAMuE,OAAO0C,oBAKlF,OAAOpX,MAwCX6b,EAAkBha,UAAUoO,KAAO,SAAU6M,EAAMf,GAK/C,QAJI,IAAA/J,SAAQ+J,KAAY,IAAA3O,YAAW2O,MAC/BA,EAAUF,EAAkBC,kBAAkB9b,KAAK0U,OAAQqH,IAE/D/b,KAAK0U,OAAOuC,WAAW0F,MAAM1M,KAAK6M,EAAMf,GACjC/b,MAgCX6b,EAAkBha,UAAUkb,eAAiB,SAAU9Q,GACnDjM,KAAK0U,OAAOuC,WAAW8F,eAAe9Q,IAEnC4P,EA9K2B,iJCKtC,UAAe,mBAAmB9b,SAAS,iBApB3C,WACI,IAAIid,GAAkB,EACtBhd,KAAKgd,gBAAkB,WACnBA,GAAkB,GAEtBhd,KAAKU,KAAO,CACR,gBACA,WACA,SAAUuc,EAAezZ,GACrB,OAAIwZ,EACOC,EAEJ,SAAUvV,GACb,OAAOlE,GAAS,WACZkE,EAAS,GAAGwV,mBACb,GAAG,8nBClBlBC,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GAaAK,EAAwB,iBAATlQ,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAX,EAAAmQ,GAAuB,EAAAA,EAAOC,SAAW,EAAAD,GAAU,EAAAA,QAC3D,EACAhe,EAAU+d,EAAK/d,SAAW,GACnBke,EAAWle,EAAQke,UAAYC,KAAK/W,MAAM3D,KAAK0a,MAC/CC,EAASpe,EAAQoe,QAAUD,KAAKE,UAAU5a,KAAK0a,MAC/Cjd,EAAUlB,EAAQkB,SAqc7B,SAAkBkZ,EAAKnP,EAAIqF,GACvB,IAAI,QAAQ8J,GACR,OAAOA,EAAIlZ,QAAQ+J,EAAIqF,GAC3BoD,OAAOC,KAAKyG,GAAKlZ,SAAQ,SAAU8E,GAAO,OAAOiF,EAAGmP,EAAIpU,GAAMA,OAvcvD/E,EAASyS,OAAO3Q,QAycpB,SAAiBub,GACpB,IAAK,IAAId,EAAI,EAAGA,EAAIrb,UAAUoN,OAAQiO,IAAK,CACvC,IAAIpD,EAAMjY,UAAUqb,GACpB,GAAKpD,EAGL,IADA,IAAIzG,EAAOD,OAAOC,KAAKyG,GACdyD,EAAI,EAAGA,EAAIlK,EAAKpE,OAAQsO,IAC7BS,EAAM3K,EAAKkK,IAAMzD,EAAIzG,EAAKkK,IAGlC,OAAOS,GAldAhP,EAAStP,EAAQsP,QAod5B,SAASiP,EAAQC,EAAIC,GACjB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EACX,IAAIC,SAAYF,EAChB,GAAIE,WAD4BD,GACR,WAAPC,EACb,OAAO,EACX,IAyBeC,EAAIC,EAzBfC,EAAM,CAACL,EAAIC,GACf,IAAI,QAAI,KAAJ,CAAaI,GACb,OAuBeD,EAvBMH,GAuBVE,EAvBMH,GAwBdjP,SAAWqP,EAAGrP,QAEduP,EAAYH,EAAIC,GAAI7P,QAAO,SAAUgQ,EAAGC,GAAK,OAAOD,GAAKR,EAAQS,EAAE,GAAIA,EAAE,OAAQ,GAzBxF,IAAI,QAAI,KAAJ,CAAYH,GACZ,OAAOL,EAAGS,YAAcR,EAAGQ,UAC/B,IAAI,QAAI,KAAJ,CAAcJ,GACd,OAAOL,EAAGvJ,aAAewJ,EAAGxJ,WAChC,IAAI,QAAI,KAAJ,CAAgB4J,GAChB,OAAO,EAEX,GADiB,CAAC,KAAY,KAAS,KAAQ,MAChC/P,IAAI,MAAKC,QAAO,SAAUgQ,EAAGje,GAAM,OAAOie,KAAOje,EAAG+d,MAAS,GACxE,OAAO,EACX,IAAIlL,EAAO,GAEX,IAAK,IAAI3N,KAAOwY,EAAI,CAChB,IAAKD,EAAQC,EAAGxY,GAAMyY,EAAGzY,IACrB,OAAO,EACX2N,EAAK3N,IAAO,EAEhB,IAAK,IAAIA,KAAOyY,EACZ,IAAK9K,EAAK3N,GACN,OAAO,EAEf,OAAO,GApfJ,SAAS6W,EAASpN,GACrB,OAAOA,EAEJ,SAASrH,KAyDT,SAASuM,EAAqBuK,EAAQ1Y,EAAQ/C,EAAM0b,EAASC,QAC/C,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUC,GAAU,OAAOJ,IAASI,GAAQ7b,KAAKA,MAQpE,OADA0b,EAAUA,GAAWzL,OAAOC,KAAKuL,MAClBnQ,QAAO,SAAUsL,EAAK1U,GAPd,IAAU2Z,EAS7B,OADAjF,EAAI1U,GAAQyZ,GARiBE,EAQW3Z,EAPjC,WAEH,OADAa,EAAO8Y,GAAUD,EAAaC,GACvB9Y,EAAO8Y,GAAQhd,MAAM,KAAMH,aAKUkd,EAAa1Z,GACtD0U,IACR7T,GAMA,IAAI+Y,EAAU,SAAUhF,EAAQiF,GAAS,OAAOve,EAAOyS,OAAO/R,OAAO4Y,GAASiF,IAE1EC,GAAU,SACd,SAAkBC,EAAOtF,GAC5B,OAA+B,IAAxBsF,EAAMrR,QAAQ+L,MAMd7E,GAAa,SACjB,SAAqBmK,EAAOtF,GAC/B,IAAIhL,EAAMsQ,EAAMrR,QAAQ+L,GAGxB,OAFIhL,GAAO,GACPsQ,EAAMC,OAAOvQ,EAAK,GACfsQ,KAGAE,GAAS,SACb,SAAiBC,EAAK1b,GACzB,OAAO0b,EAAIjf,KAAKuD,GAAMA,KAGf2b,EAAW,SAAUC,GAC5B,OAAOA,EAAU9d,QAAQf,SAAQ,SAAUJ,GACzB,mBAAPA,GAAqBA,IAC5ByU,EAAWwK,EAAWjf,OAQvB,SAASV,EAASW,GAErB,IADA,IAAIif,EAAe,GACVC,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCD,EAAaC,EAAK,GAAK9d,UAAU8d,GAErC,IAAIC,EAAcjf,EAAOqB,WAAM,EAAQgb,EAAe,CAAC,IAAK0C,EAAaG,YACzE,OAAOlf,EAAOif,EAAapF,EAAK/Z,GAAQ,GAAI2S,OAAOC,KAAKuM,KAGrD,IAAIE,EAAS,SAAUC,EAAMC,GAAQ,OAAOrf,EAAOof,EAAMC,IAQzD,SAASC,EAAUC,EAAOC,GAC7B,IAAInY,EAAO,GAEX,IAAK,IAAIoY,KAAKF,EAAMlY,KAAM,CACtB,GAAIkY,EAAMlY,KAAKoY,KAAOD,EAAOnY,KAAKoY,GAC9B,MACJpY,EAAK1H,KAAK4f,EAAMlY,KAAKoY,IAEzB,OAAOpY,EAaJ,SAASwS,EAAKV,EAAKuG,GACtB,IAAIC,EAAU,GACd,IAAK,IAAIC,KAASzG,GACoB,IAA9BuG,EAAUtS,QAAQwS,KAClBD,EAAQC,GAASzG,EAAIyG,IAG7B,OAAOD,EAcJ,SAASE,EAAK1G,EAAKuG,GACtB,OAAOjN,OAAOC,KAAKyG,GACd3Q,QAAO,QAAIgW,EAAQkB,KACnB5R,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,GAAOoU,EAAIpU,GAAOqU,IAAS,IASvE,SAAS5Q,EAAOsX,EAAYpgB,GAC/B,IAAIkf,GAAM,QAAQkB,GAAata,EAASoZ,EAAM,GAAK,GAC/CmB,EAASnB,EAAM,SAAUpQ,GAAK,OAAOhJ,EAAO7F,KAAK6O,IAAQ,SAAUA,EAAGzJ,GAAO,OAAQS,EAAOT,GAAOyJ,GAKvG,OAJAvO,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B7c,EAAS2f,EAAM9C,IACfwD,EAAOV,EAAM9C,MAEd/W,EAGJ,SAASwa,EAAKF,EAAYpgB,GAC7B,IAAI8F,EAOJ,OANAvF,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B/W,GAEA9F,EAAS2f,EAAM9C,KACf/W,EAAS6Z,MAEV7Z,EAGJ,IAAIya,EAASpS,EAEb,SAASA,EAAIiS,EAAYpgB,EAAU6F,GAGtC,OAFAA,EAASA,KAAW,QAAQua,GAAc,GAAK,IAC/C7f,EAAQ6f,GAAY,SAAUT,EAAM9C,GAAK,OAAQhX,EAAOgX,GAAK7c,EAAS2f,EAAM9C,MACrEhX,EAYJ,IAAI2a,EAAS,SAAU/G,GAAO,OAAO1G,OAAOC,KAAKyG,GAAKtL,KAAI,SAAU9I,GAAO,OAAOoU,EAAIpU,OAclFob,EAAW,SAAUf,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAclDC,EAAW,SAAUjB,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAUlDrS,EAAU,SAAUqR,EAAMgB,GAAQ,OAAOhB,EAAK9d,OAAO8e,IAWrDE,EAAW,SAAUlB,EAAMgB,GAClC,OAAO,QAAQA,GAAQhB,EAAK9d,OAAO8e,EAAKtS,OAAOwS,EAAU,KAAOC,EAAMnB,EAAMgB,IAMzE,SAASG,EAAM3B,EAAKzF,GAEvB,OADAyF,EAAIjf,KAAKwZ,GACFyF,EAGJ,IAAI4B,EAAQ,SAAUpH,EAAKqH,GAAS,OAAQjC,EAAQpF,EAAKqH,GAASrH,EAAMmH,EAAMnH,EAAKqH,IAW/EC,EAAS,SAAU9B,GAAO,OAAOA,EAAI9Q,OAAOC,EAAS,KAyBrD4S,EAkBJ,SAAkBC,EAAgBC,GAErC,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU1H,GACb,IAAI3T,EAASob,EAAezH,GAC5B,IAAK3T,EACD,MAAM,IAAImM,OAAM,QAAWkP,GAAUA,EAAO1H,GAAO0H,GAEvD,OAAOrb,IA2BR,SAASqY,IAEZ,IADA,IAAIhd,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,GAAoB,IAAhBne,EAAKyN,OACL,MAAO,GAwBX,IAvBA,IAAIwS,EAAcjgB,EAAKiN,QAAO,SAAUiT,EAAKnC,GAAO,OAAOoC,KAAKD,IAAInC,EAAItQ,OAAQyS,KAAS,kBACrFvb,EAAS,GACTyb,EAAU,SAAU1E,GAGpB,OAAQ1b,EAAKyN,QACT,KAAK,EACD9I,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,KACrB,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACjC,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KAC7C,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACzD,MACJ,QACI/W,EAAO7F,KAAKkB,EAAKgN,KAAI,SAAU4Q,GAAS,OAAOA,EAAMlC,SAIxDA,EAAI,EAAGA,EAAIuE,EAAavE,IAC7B0E,EAAQ1E,GAEZ,OAAO/W,EAsBJ,SAASyS,EAAWmH,EAAM8B,GAC7B,IAAInc,EAAKrB,EAGT,IAFI,QAAQwd,KACRnc,EAAMmc,EAAY,GAAIxd,EAAQwd,EAAY,MACzC,QAASnc,GACV,MAAM,IAAI4M,MAAM,oCAEpB,OADAyN,EAAKra,GAAOrB,EACL0b,EAGJ,SAAS1S,EAAKkS,GACjB,OAAQA,EAAItQ,QAAUsQ,EAAIA,EAAItQ,OAAS,SAAO+E,EAK3C,SAAS8N,EAAKC,EAAKC,GAKtB,OAJIA,GACA5O,OAAOC,KAAK2O,GAAMphB,SAAQ,SAAU8E,GAAO,cAAcsc,EAAKtc,MAC7Dsc,IACDA,EAAO,IACJrhB,EAAOqhB,EAAMD,GA6DjB,IAAIE,EAA2B,SAAU3e,GAAW,OAAOA,EAAQ4e,OAAM,SAAUC,GAAK,OAAO,MAAS7e,GACpG8e,EAAkB,SAAUld,GAAS,OAAO+c,EAAyB,cAAmB/c,qHCxhBnG,IAGWmd,EAAW,SAAU/K,EAASgL,GACrC,OAAOA,EAAQ7T,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,IAJtC6c,EAIoDjL,EAAU,IAAM5R,EAAM,KAJzD,WACpC,MAAM,IAAI4M,MAAM,yBAA2BiQ,EAAS,kEAGiDxI,EAJ5F,IAAUwI,IAI2F,KAE9G3R,EAAW,CACXhK,QAAIoN,EACJ5D,eAAW4D,mGCyCf,IAAIwO,EAAsB,WACtB,SAASA,EAAKC,GACV5iB,KAAK4iB,KAAOA,EACZ5iB,KAAK6iB,KAAOD,EAAKE,MAAM,KACvB,IAAIC,EAAe/iB,KAAK4iB,KACnBE,MAAM,KACNnU,KAAI,SAAUqU,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,KAEd/P,KAAK,IACVjT,KAAKijB,OAAS,IAAI9Z,OAAO,IAAM4Z,EAAe,KAalD,OAVAJ,EAAKzJ,GAAK,SAAU0J,GAChB,QAAS,SAASnZ,KAAKmZ,IAG3BD,EAAKxR,WAAa,SAAUyR,GACxB,OAAOD,EAAKzJ,GAAG0J,GAAQ,IAAID,EAAKC,GAAQ,MAE5CD,EAAK9gB,UAAUqhB,QAAU,SAAU1d,GAC/B,OAAOxF,KAAKijB,OAAOE,KAAK,IAAM3d,IAE3Bmd,EA3Bc,+MC1CzB,IAAIxF,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GA2CJ,SAAS6F,EAAMziB,GAClB,OAAO,SAAS0iB,IACZ,GAAIrhB,UAAUoN,QAAUzO,EAAGyO,OACvB,OAAOzO,EAAGwB,MAAMnC,KAAMgC,WAE1B,IAAIL,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtC,OAAOqhB,EAAQ/f,KAAKnB,MAAMkhB,EAASlG,EAAe,CAACnd,MAAO2B,KAS3D,SAAS2hB,IACZ,IAAI3hB,EAAOK,UACPuhB,EAAQ5hB,EAAKyN,OAAS,EAC1B,OAAO,WAEH,IADA,IAAIiO,EAAIkG,EAAOjd,EAAS3E,EAAK4hB,GAAOphB,MAAMnC,KAAMgC,WACzCqb,KACH/W,EAAS3E,EAAK0b,GAAGtb,KAAK/B,KAAMsG,GAChC,OAAOA,GASR,SAASkd,IAEZ,IADA,IAAIC,EAAQ,GACH3D,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpC2D,EAAM3D,GAAM9d,UAAU8d,GAE1B,OAAOwD,EAAQnhB,MAAM,KAAM,GAAGL,MAAMC,KAAKC,WAAWge,WAQjD,IAAI0D,EAAO,SAAUle,GAAQ,OAAO,SAAUyU,GAAO,OAAOA,GAAOA,EAAIzU,KAQnEme,EAASP,GAAM,SAAU5d,EAAMoe,EAAM3J,GAAO,OAAOA,GAAOA,EAAIzU,KAAUoe,KASxE3c,EAAQ,SAAUzB,GAAQ,OAAOge,EAAKrhB,MAAM,KAAMqD,EAAKsd,MAAM,KAAKnU,IAAI+U,KAKtEG,EAAM,SAAUljB,GAAM,OAAO,WAEpC,IADA,IAAIgB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAQnf,EAAGwB,MAAM,KAAMR,KAMpB,SAASmiB,EAAIC,EAAKC,GACrB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IAOjD,SAASsiB,EAAGF,EAAKC,GACpB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IASjD,IAAI8Z,EAAM,SAAUsI,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4U,EAAM,SAAUH,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4J,EAAK,SAAUiL,GAAQ,OAAO,SAAUlK,GAC/C,OAAe,MAAPA,GAAeA,EAAImK,cAAgBD,GAASlK,aAAekK,IAK5DngB,EAAM,SAAUqgB,GAAK,OAAO,WAAc,OAAOA,IA4CrD,SAASC,EAAQC,GACpB,OAAO,SAAUjV,GACb,IAAK,IAAI+N,EAAI,EAAGA,EAAIkH,EAAOnV,OAAQiO,IAC/B,GAAIkH,EAAOlH,GAAG,GAAG/N,GACb,OAAOiV,EAAOlH,GAAG,GAAG/N,uRCjNhCkV,EAAQjR,OAAO1R,UAAUiT,SACzB2P,EAAM,SAAU5F,GAAK,OAAO,SAAUvP,GAAK,cAAcA,IAAMuP,IACxD6F,EAAcD,EAAI,aAClB7X,GAAY,QAAI8X,GAChBC,EAAS,SAAUC,GAAK,OAAa,OAANA,GAC/BC,GAAoB,IAAAZ,IAAGU,EAAQD,GAC/BtX,EAAaqX,EAAI,YACjBK,EAAWL,EAAI,UACf3b,EAAW2b,EAAI,UACftR,EAAW,SAAU7D,GAAK,OAAa,OAANA,GAA2B,iBAANA,GACtD0C,EAAUpQ,MAAMoQ,QAChB+S,EAAS,SAAWzV,GAAK,MAAyB,kBAAlBkV,EAAMziB,KAAKuN,IAC3C0V,EAAW,SAAW1V,GAAK,MAAyB,oBAAlBkV,EAAMziB,KAAKuN,IAOjD,SAASsM,EAAa5X,GACzB,GAAIgO,EAAQhO,IAAQA,EAAIoL,OAAQ,CAC5B,IAAI6V,EAAOjhB,EAAIlC,MAAM,GAAI,GAAI0L,EAAOxJ,EAAIlC,OAAO,GAC/C,QAASmjB,EAAK3b,QAAO,QAAIR,IAAWsG,QAAU5B,EAAKlE,QAAO,QAAI8D,IAAagC,QAE/E,OAAOhC,EAAWpJ,GAOf,IAAIkhB,GAAY,QAAI/R,GAAU,SAAK,QAAK,QAAS/F,uKCvCpD+X,EAAuB,WACvB,SAASA,EAAMC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCrlB,KAAKolB,OAASA,EACdplB,KAAKqlB,OAASA,EACdrlB,KAAKslB,gBAAkB,GACvBtlB,KAAKulB,SAAU,QAAOvlB,KAAKslB,iBAqC/B,OAnCAH,EAAMtjB,UAAU2jB,QAAU,SAAUrF,GAChC,IAAIsF,EAAQzlB,KAAKolB,OAIjB,OAHAK,EAAMhlB,KAAK0f,GACPngB,KAAKqlB,QAAUI,EAAMrW,OAASpP,KAAKqlB,QACnCrlB,KAAK0lB,QACFvF,GAEXgF,EAAMtjB,UAAU6jB,MAAQ,WACpB,IAAIvF,EAAOngB,KAAKolB,OAAOnjB,QAEvB,OADAjC,KAAKslB,gBAAgBvkB,SAAQ,SAAUJ,GAAM,OAAOA,EAAGwf,MAChDA,GAEXgF,EAAMtjB,UAAU8jB,QAAU,WACtB,GAAI3lB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO5F,OAAO,EAAG,GAAG,IAExC2F,EAAMtjB,UAAUgkB,MAAQ,WACpB,IAAIC,EAAU9lB,KAAKolB,OAEnB,OADAplB,KAAKolB,OAAS,GACPU,GAEXX,EAAMtjB,UAAU+jB,KAAO,WACnB,OAAO5lB,KAAKolB,OAAOhW,QAEvB+V,EAAMtjB,UAAUgL,OAAS,SAAUsT,GAC/B,IAAIlR,EAAMjP,KAAKolB,OAAOlX,QAAQiS,GAC9B,OAAOlR,GAAO,GAAKjP,KAAKolB,OAAO5F,OAAOvQ,EAAK,GAAG,IAElDkW,EAAMtjB,UAAUkkB,SAAW,WACvB,OAAO/lB,KAAKolB,OAAOplB,KAAKolB,OAAOhW,OAAS,IAE5C+V,EAAMtjB,UAAUmkB,SAAW,WACvB,GAAIhmB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO,IAEpBD,EA5Ce,4KCKtBc,EAAkB,CAAEC,IAAK,KAAM7gB,MAAO,KAAM8gB,MAAO,MA4B5CC,EAXyB,oBAAbC,UAA4BA,SAASC,cAA0C,IAA1BD,SAASC,aAEtEC,QAAUA,OAAOC,QAlBhC,SAAoBA,GAChB,IAAIC,EAAQ,SAAU9lB,GAAM,OAAO+lB,SAAS7kB,UAAUyB,KAAKvB,KAAKpB,EAAI6lB,IACpE,MAAO,CACHN,IAAKO,EAAMD,EAAQN,KACnB7gB,MAAOohB,EAAMD,EAAQN,KACrBC,MAAOM,EAAMD,EAAQN,MAaaS,CAAWJ,OAAOC,SAAWP,EAEzDO,QAAQL,OAAUK,QAAQnhB,MAIzBmhB,QAhBf,SAAyBA,GACrB,IAAIN,EAAMM,EAAQN,IAAI5iB,KAAKkjB,GAG3B,MAAO,CAAEN,IAAKA,EAAK7gB,MAFPmhB,EAAQnhB,MAAQmhB,EAAQnhB,MAAM/B,KAAKkjB,GAAWN,EAEzBC,MADrBK,EAAQL,MAAQK,EAAQL,MAAM7iB,KAAKkjB,GAAWN,GAU/CU,CAAgBJ,ieCRxB,SAASK,EAAUC,EAAK9V,GAC3B,OAAIA,EAAI5B,QAAU0X,EACP9V,EACJA,EAAI+V,OAAO,EAAGD,EAAM,GAAK,MAW7B,SAASE,EAAU5X,EAAQ4B,GAC9B,KAAOA,EAAI5B,OAASA,GAChB4B,GAAO,IACX,OAAOA,EAEJ,SAAS/H,EAAYqJ,GACxB,OAAOA,EACFyC,QAAQ,YAAY,SAAUkS,GAAM,OAAOA,EAAGC,iBAC9CnS,QAAQ,YAAY,SAAUkS,GAAM,MAAO,IAAMA,EAAGC,iBAEtD,SAASC,EAAiBxmB,GAC7B,IAAIymB,EAAQC,EAAW1mB,GACnB2mB,EAAqBF,EAAMpL,MAAM,8BACjCwI,EAAQ8C,EAAqBA,EAAmB,GAAKF,EACrDjI,EAASxe,EAAS,MAAK,GAC3B,OAAIwe,GAAUqF,EAAMxI,MAAM,eACf,YAAcmD,EAASqF,EAAMuC,OAAO,GAExCvC,EAEJ,SAAS6C,EAAW1mB,GACvB,IAAI4mB,GAAM,QAAQ5mB,GAAMA,EAAGmB,OAAO,GAAG,GAAKnB,EAC1C,OAAQ4mB,GAAOA,EAAIzS,YAAe,YAEtC,IAAI0S,EAAc,uBAIdC,GAAmB,QAAQ,CAC3B,CAAC,MAAa,QAAI,cAClB,CAAC,MAAQ,QAAI,SACb,CAAC,MAAW,QAAI,cAChB,CAACD,EAAa,SAAUlY,GAAK,OAAOA,EAAEoY,qBAAqB5S,aAC3D,CARc,SAAUmF,GACxB,OAAO,QAASA,MAAS,QAAQA,IAAQA,EAAImK,cAAgB7Q,SAAU,QAAW0G,EAAInF,WAOxE,SAAUxF,GAAK,OAAOA,EAAEwF,aACtC,CAAC,KAAcqS,GACf,EAAC,SAAI,GAAO,QAET,SAASjJ,EAAU0G,GACtB,IAAI+C,EAAO,GACX,SAASC,EAAOpjB,GACZ,IAAI,QAASA,GAAQ,CACjB,IAA6B,IAAzBmjB,EAAKzZ,QAAQ1J,GACb,MAAO,iBACXmjB,EAAKlnB,KAAK+D,GAEd,OAAOijB,EAAiBjjB,GAE5B,OAAI,QAAYogB,GAILgD,EAAOhD,GAEX5G,KAAKE,UAAU0G,GAAG,SAAU/e,EAAKrB,GAAS,OAAOojB,EAAOpjB,MAAWuQ,QAAQ,OAAQ,KAGvF,IAAI8S,EAAoB,SAAUC,GAAQ,OAAO,SAAU9W,GAC9D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI/B,EAAM+B,EAAI9C,QAAQ4Z,GACtB,OAAa,IAAT7Y,EACO,CAAC+B,EAAK,IACV,CAACA,EAAI+V,OAAO,EAAG9X,GAAM+B,EAAI+V,OAAO9X,EAAM,MAGtC8Y,EAAuB,SAAU/W,GAAO,OAAOA,EAAI+D,QAAQ,WAAY,KACvEiT,EAAYH,EAAkB,KAC9BI,EAAaJ,EAAkB,KAC/BK,EAAaL,EAAkB,KAC/BM,EAAc,SAAUnX,GAAO,OAAQA,EAAMA,EAAI+D,QAAQ,KAAM,IAAM,IAWzE,SAASqT,EAAaC,GACzB,IAAIC,EAAK,IAAInf,OAAO,IAAMkf,EAAQ,IAAK,KACvC,OAAO,SAAUrX,GAAO,OAAOA,EAAI8R,MAAMwF,GAAIhf,OAAO,OAcjD,SAASif,EAAerO,EAAK5K,GAChC,OAAI,SAAS,QAAK4K,MAAS,QAAS5K,GACzB4K,EAAIpY,MAAM,GAAI,GAAGM,QAAO,QAAK8X,GAAO5K,IACxC,QAAM4K,EAAK5K,0GCpElBkZ,iQA3BJ,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIjb,EAAQib,EAAOC,gBAAkBD,EAAOC,gBAAgBnjB,MAAQ,SAAW,SAC/E,MAAO,YAAckjB,EAAOrd,GAAK,IAAMqd,EAAOtd,MAAQ,IAAMsd,EAAOpd,IAAM,KAAOod,EAAOljB,KAAO,IAAMiI,EAAQ,KAOhH,SAASmb,EAAchW,GACnB,OAAO,QAASA,GAAS4V,EAAS5V,GAAS4V,EAASA,EAAS5V,KAgBjE,SAAW4V,GACPA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAqB,WAAI,GAAK,aAL3C,CAMGA,IAAaA,EAAW,KAE3B,IAAIK,GAAO,QAAM,OACbC,GAAO,QAAM,cACbC,EAAW,SAAUnZ,GAAS,MAAO,eAAiBiZ,EAAKjZ,GAAS,IAAMkZ,EAAKlZ,IA6J/EvH,EAAQ,IAzJe,WAEvB,SAAS2gB,IAELhpB,KAAKipB,SAAW,GAChBjpB,KAAKkpB,mBAAqB,EAwI9B,OArIAF,EAAMnnB,UAAUsnB,KAAO,SAAU7T,EAAS8T,GACtC,IAAIjZ,EAAQnQ,KACPopB,EAAWha,SACZga,EAAa7V,OAAOC,KAAKgV,GACpB7Z,KAAI,SAAU6O,GAAK,OAAO6L,SAAS7L,EAAG,OACtClU,QAAO,SAAUkU,GAAK,OAAQ8L,MAAM9L,MACpC7O,KAAI,SAAU9I,GAAO,OAAO2iB,EAAS3iB,OAE9CujB,EAAWza,IAAIia,GAAe7nB,SAAQ,SAAUwoB,GAAY,OAAQpZ,EAAM8Y,SAASM,GAAYjU,MAEnG0T,EAAMnnB,UAAU2nB,OAAS,WAErB,IADA,IAAIJ,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAMC,IAEpBJ,EAAMnnB,UAAU4nB,QAAU,WAEtB,IADA,IAAIL,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAOC,IAWrBJ,EAAMnnB,UAAUyT,QAAU,SAAUiU,GAChC,QAASvpB,KAAKipB,SAASL,EAAcW,KAGzCP,EAAMnnB,UAAU6nB,qBAAuB,SAAU9Z,GACxC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAU+nB,uBAAyB,SAAUha,GAC1C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAUgoB,oBAAsB,SAAUC,EAAMla,EAAOzP,GACzD,GAAKH,KAAKsV,QAAQkT,EAASuB,MAA3B,CAEA,IAAIxpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAiBskB,EAAKE,eAAexpB,UAC1N,QAAgBuoB,EAASnZ,GAAS,eAAiBrP,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,MAG9GwjB,EAAMnnB,UAAUooB,gBAAkB,SAAUC,EAAYta,EAAOua,GACtDnqB,KAAKsV,QAAQkT,EAASuB,OAE3B,QAAgBhB,EAASnZ,GAAS,0BAA2B,QAAU,KAAK,QAAUsa,MAG1FlB,EAAMnnB,UAAUuoB,iBAAmB,SAAUjiB,EAAM8H,EAAML,GAChD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,uBAAyBzH,EAAO,KAAO8H,EAAO,MAGpF+Y,EAAMnnB,UAAUyoB,wBAA0B,SAAUtS,EAAYpI,GACvD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,gCAAkCoI,EAAa,SAAU,QAAU,KAAK,QAAUA,EAAWrQ,SAGnIqhB,EAAMnnB,UAAU0oB,WAAa,SAAUC,EAAQ5a,GACtC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,aAAe4a,IAG3FxB,EAAMnnB,UAAU4oB,aAAe,SAAUC,EAAY9a,GAC5C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,kBAAoB8a,EAAWllB,OAG3GwjB,EAAMnnB,UAAU8oB,iBAAmB,SAAUpqB,EAAOqqB,EAAUvL,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3Brf,KAAKsV,QAAQkT,EAASqC,SAE3B,QAAgB,aAAc,QAAU,GAAItqB,GAAS,IAAMkoB,EAAamC,GAAYvL,IAGxF2J,EAAMnnB,UAAUipB,yBAA2B,SAAUF,EAAU/Z,GACtD7Q,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,WAAYC,EAAU,kCAAoC/Z,EAAU,MAG9FmY,EAAMnnB,UAAUkpB,gBAAkB,SAAUH,EAAUpjB,GAC7CxH,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,OAAQC,EAAU,WAAY,QAAU,IAAKpjB,KAGvEwhB,EAAMnnB,UAAUmpB,cAAgB,SAAUC,GACtC,GAAKjrB,KAAKsV,QAAQkT,EAAS0C,YAA3B,CAEA,IAAIC,EAAY,uBAEZC,EAAUH,EACTtc,KAAI,SAAU0c,GACf,IAAIC,EACA7kB,EAAS4kB,EAAG5kB,OAAQiE,EAAa2gB,EAAG3gB,WACpC6gB,EAAM9kB,GAAUA,EAAO6E,IACvBzD,EAAM6C,GAAcA,EAAW3C,SAASgC,SAASvE,KAAO,MAAQkF,EAAW3C,SAAS6S,MAAQ,IAChG,OAAO0Q,EAAK,IAAOH,GAAaI,EAAKD,EAPzB,iCAOyCzjB,EAAKyjB,KAEzDE,MAAK,SAAU/N,EAAGmB,GAAK,OAAQnB,EAAE0N,IAAc,IAAIM,cAAc7M,EAAEuM,IAAc,OACtF,UAAkBC,KAGtBpC,EAAMnnB,UAAU6pB,sBAAwB,SAAUnrB,EAAOmK,GAChD1K,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAzK1B,SAAUmK,GAC7B,IAAIoP,EAAOpP,EAAW3C,SAClB0F,EAAQqM,EAAK/P,SAASvE,MAAQ,SAClC,MAAO,SAAWkF,EAAWyQ,IAAM,UAAY1N,EAAQ,8BAAgCqM,EAAKiB,YAAc,IAAMjB,EAAKmB,qBAAuB,IAsKzF0Q,CAAiBjhB,KAGpEse,EAAMnnB,UAAU+pB,4BAA8B,SAAUrrB,EAAOqqB,GACtD5qB,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAAMkoB,EAAamC,KAEzD5B,EA7Ie,oOCxEtB6C,EAAiC,WACjC,SAASA,IAML7rB,KAAKoO,OAAS,IAAI,IAElBpO,KAAK8rB,yBAA2B,EAEhC9rB,KAAK+rB,kBAAoB,IAAI,IAAM,GAAI,GAEvC/rB,KAAKgsB,sBAAwB,IAAI,IAAM,GAAI,GAO/C,OALAH,EAAgBhqB,UAAUqT,QAAU,WAChClV,KAAK+rB,kBAAkBlG,QACvB7lB,KAAKgsB,sBAAsBnG,QAC3B7lB,KAAKisB,WAAa,MAEfJ,EApByB,sLCiBhCK,EAAe,SAAUD,GACzB,IAAIvX,EAASuX,EAAWvX,OAuBpB6G,EAAW0Q,EACVE,WACA7iB,QAAO,SAAUmE,GAAS,QAASA,EAAMuG,UAAUoY,YACnDzd,KAAI,SAAUlB,GAAS,OAAO4e,EAAcJ,EAAYxe,MAC7D,OAAO,WAAgB8N,GAAUxQ,MA1BjC,WACI,GAAyD,QAArDkhB,EAAWK,qBAAqBnsB,UAAU4e,OAAkB,CAG5D,IAAIwN,EAAON,EAAWO,cACtB,OAAO9X,EAAOmC,aAAaxQ,OAAOkmB,EAAKE,aAAcF,EAAKne,SAAUme,EAAKpsB,WAI7E,IAAIusB,EAAOhY,EAAOuC,WACd3Q,EAASomB,EAAK1Q,MAAM0Q,EAAKC,SACzBpQ,EAAOjW,GAAUA,EAAOiW,KAG5B,GAAIA,GAAsB,UAAdA,EAAKrN,KAAkB,CAC/B,IAAIzB,EAAQ8O,EAAK9O,MACbW,EAAS9H,EAAO0V,MACpB,OAAOtH,EAAOmC,aAAaxQ,OAAOoH,EAAOW,EAAQ6d,EAAW9rB,WAGhEuU,EAAOuC,WAAW2V,WAQfC,EAAuB,SAAUC,GACxC,OAAOA,EAAkB/c,SAAS,CAAEoc,SAAU,SAAU1e,GAAS,QAASA,EAAM2e,WAAeF,IAS5F,SAASG,EAAcJ,EAAYxe,GACtC,IAAIsf,EAAatf,EAAMuG,UAAUoY,SAE7B3oB,EAAUspB,EAAqB,SAwBnC,OAvBKtpB,IAWDA,EAAUspB,EAAqB,SAAI,YACzBA,EAAWd,EAAYxe,IAC5B1C,MAIT,SAA6BzE,GAIzB,OAHIA,GAAU1E,MAAMoQ,QAAQ1L,EAAO0mB,SAC/B1mB,EAAO0mB,OAAOjsB,SAAQ,SAAUksB,GAAU,OAAOhB,EAAWvX,OAAOkC,cAAc8C,SAASuT,MAEvF3mB,KAPFyE,MAbS,SAAUzE,GAIpB,cAHOmH,EAAM2e,gBACN3e,EAAMuG,UAAUoY,gBAChBW,EAAqB,SACrBzmB,KAEC,SAAU4mB,GAElB,cADOH,EAAqB,SACrB,cAAmBG,OAc3BzpB,oPCnFP0pB,kUAJAC,EAAS7Z,OAAO1R,UAAUa,gBAK9B,SAAWyqB,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SAHrC,CAIGA,IAAYA,EAAU,KA2DzB,IAAIE,EAAuB,WACvB,SAASA,EAAMhiB,EAAI6D,EAAM2G,EAAUyX,EAAW7f,GAC1C,IAAIlC,EA3DZ,SAA6BgiB,EAAW1X,EAAUpI,GAC9C,IAAI+f,GAA6C,IAAzB/f,EAAMggB,gBAA4B5X,IAAasX,EAAQO,aAAWvZ,EACtFwZ,GAAU,QAAK,CAAClgB,EAAMkgB,QAASH,GAAmB,MAClDI,GAAgB,QAAUD,GAAW,CAAEA,QAASA,GAAY,GAC5DE,EAGR,SAAyBhmB,GAGrB,SAASimB,IACL,OAAOjmB,EAAIrD,MAHfqD,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWyB,OAAO8jB,EAAO9pB,KAAKuE,GAAO,KAAKuH,OAiBhF2e,CAAYlmB,GAAO,CAAErD,MAAOqD,GAAQA,EAC1CimB,EAAmC,aAAI,EAIvC,IAAIE,GAAO,QAAanmB,EAAIrD,OAASqD,EAAIrD,MAAQspB,EACjD,OAAO,QAAOjmB,EAAK,CAAEmmB,KAAMA,IAVTC,CAAgBxgB,GAASA,EAAMW,QAAUX,EAAMW,OAAOmf,IACxE,OAAO,QAAOK,EAAeC,GAsDZK,CAAoB7iB,EAAIwK,EAAUpI,GAC/CyB,EA5CR,SAAiBrH,EAAKsmB,EAAStY,EAAUxK,EAAI+iB,GACzC,GAAIvmB,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,KAC/B,MAAM,IAAIiN,MAAM,UAAYpH,EAAK,kCACrC,GAAIxD,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,MAAqB4oB,EAAWlf,KAAKrH,EAAIqH,MACxE,OAAOkf,EAAWlf,KAAKrH,EAAIqH,MAC/B,GAAIif,EACA,OAAOA,EACX,IAAKtmB,EAAIqH,KAAM,CACX,IAAIA,EAAO2G,IAAasX,EAAQkB,OAC1B,MACAxY,IAAasX,EAAQmB,KACjB,OACAzY,IAAasX,EAAQO,OACjB,QACA,SACd,OAAOU,EAAWlf,KAAKA,GAE3B,OAAOrH,EAAIqH,gBAAgB,IAAYrH,EAAIqH,KAAOkf,EAAWlf,KAAKrH,EAAIqH,MA2B3Dqf,CAAQhjB,EAAQ2D,EAAM2G,EAAUxK,EAAIiiB,EAAUc,YACrD,IAUQI,EACAC,EAXJC,GAUIF,EAAgB,CAAEjP,MAAO1J,IAAasX,EAAQO,QAAS,QACvDe,EAAyBpjB,EAAG2Q,MAAM,SAAW,CAAEuD,OAAO,GAAS,IAC5D,QAAOiP,EAAeC,EAAwBljB,GAAQgU,OAXjErQ,EAAOwf,EAAYxf,EAAKyf,SAASD,EAAW7Y,IAAasX,EAAQO,QAAUxe,EAC3E,IAAI0f,OAA8Bza,IAAjB5I,EAAO/G,OAAuBqR,IAAasX,EAAQO,OAChEC,GAAU,QAAUpiB,EAAOoiB,WAAapiB,EAAOoiB,UAAYze,EAAKye,QAChEkB,GAAM,QAAUtjB,EAAOsjB,OAAStjB,EAAOsjB,MAAQ3f,EAAK2f,IACpDC,EA9BZ,SAAyBvjB,EAAQqjB,EAAYG,GACzC,IAAID,EAASvjB,EAAOujB,OACpB,IAAKF,IAAyB,IAAXE,EACf,OAAO,EACX,KAAK,QAAUA,IAAqB,MAAVA,EACtB,OAAOC,EACX,IAAe,IAAXD,IAAmB,QAASA,GAC5B,OAAOA,EACX,MAAM,IAAIrc,MAAM,2BAA6Bqc,EAAS,uDAsBrCE,CAAgBzjB,EAAQqjB,EAAYtB,EAAU2B,uBACvDla,EArBZ,SAAoBxJ,EAAQmjB,EAAWE,EAAYE,GAC/C,IAAIC,EAAgB,CAChB,CAAEG,KAAM,GAAIC,GAAIP,GAAcF,OAAYva,EAAY,IACtD,CAAE+a,KAAM,KAAMC,GAAIP,GAAcF,OAAYva,EAAY,KAExDY,GAAU,QAAQxJ,EAAOwJ,SAAWxJ,EAAOwJ,QAAU,IACrD,QAAS+Z,IACT/Z,EAAQtU,KAAK,CAAEyuB,KAAMJ,EAAQK,QAAIhb,IACrC,IAAIib,GAAiB,QAAIra,GAAS,QAAK,SACvC,OAAO,QAAOga,GAAe,SAAU5O,GAAQ,OAA8C,IAAvCiP,EAAelhB,QAAQiS,EAAK+O,SAAiB9sB,OAAO2S,GAYxFsa,CAAW9jB,EAAQmjB,EAAWE,EAAYE,GACpD1P,GAAU,QAAU7T,EAAO6T,WAAa7T,EAAO6T,UAAYlQ,EAAKkQ,SAOpE,QAAOpf,KAAM,CAAEqL,GAAIA,EAAI6D,KAAMA,EAAM2G,SAAUA,EAAU+Y,WAAYA,EAAYjB,QAASA,EAASkB,IAAKA,EAAKC,OAAQA,EAAQ/Z,QAASA,EAASqK,QAASA,EAASG,MAAOmP,EAAWnjB,OAAQA,IAoG7L,OAlGA8hB,EAAMrM,OAAS,SAAU5S,EAAQ4S,QACd,IAAXA,IAAqBA,EAAS,IAElC,IADA,IAAI1F,EAAc,GACTwE,EAAK,EAAGwP,EAAWlhB,EAAQ0R,EAAKwP,EAASlgB,OAAQ0Q,IAAM,CAC5D,IAAI9Q,EAAQsgB,EAASxP,GACrBxE,EAAYtM,EAAM3D,IAAM2D,EAAMxK,MAAMwc,EAAOhS,EAAM3D,KAErD,OAAOiQ,GAaX+R,EAAMkC,QAAU,SAAUnhB,EAAQohB,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BrhB,EAAO9E,QAAO,SAAU0F,GAAS,OAAQA,EAAME,KAAKC,OAAOqgB,EAAQxgB,EAAM3D,IAAKokB,EAAQzgB,EAAM3D,SAWvGgiB,EAAMle,OAAS,SAAUf,EAAQohB,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnDpC,EAAMkC,QAAQnhB,EAAQohB,EAASC,GAASrgB,QAGnDie,EAAMqC,UAAY,SAAUthB,EAAQ4S,GAEhC,YADe,IAAXA,IAAqBA,EAAS,IAC3B5S,EAAOO,KAAI,SAAUK,GAAS,OAAOA,EAAM0gB,UAAU1O,EAAOhS,EAAM3D,QAASuD,OAAO,MAAU,IAEvGye,EAAMxrB,UAAU8tB,eAAiB,SAAUnrB,GACvC,OAAOxE,KAAK4uB,YAAc5uB,KAAKkP,KAAKC,OAAOnP,KAAKwE,QAASA,IAM7D6oB,EAAMxrB,UAAU2C,MAAQ,SAAUA,GAC9B,IAAI2L,EAAQnQ,KA0BZ,OADAwE,EAR2B,SAAUR,GACjC,IAAK,IAAI8b,EAAK,EAAGuL,EAAKlb,EAAM4E,QAAS+K,EAAKuL,EAAGjc,OAAQ0Q,IAAM,CACvD,IAAIrM,EAAQ4X,EAAGvL,GACf,GAAIrM,EAAMyb,OAASlrB,EACf,OAAOyP,EAAM0b,GAErB,OAAOnrB,EAEH4rB,CAAqBprB,IACtB,QAAYA,GAtBG,WAClB,GAAI2L,EAAM0f,mBACN,OAAO1f,EAAM0f,mBAAmBC,aACpC,IAAK,cACD,MAAM,IAAIrd,MAAM,+DACpB,IAAIqd,EAAe,qBAA0B3f,EAAM5E,OAAOyiB,MAC1D,GAAI8B,MAAAA,IAAwD3f,EAAMjB,KAAKgK,GAAG4W,GACtE,MAAM,IAAIrd,MAAM,kBAAoBqd,EAAe,oBAAsB3f,EAAM9E,GAAK,sCAAwC8E,EAAMjB,KAAK1J,KAAO,KAIlJ,OAHI2K,EAAM5E,OAAOyiB,KAAkB,cAC/B7d,EAAM0f,mBAAqB,CAAEC,aAAcA,IAExCA,EAWiBC,GAAoB/vB,KAAKkP,KAAK8gB,WAAWxrB,IAEzE6oB,EAAMxrB,UAAUouB,SAAW,WACvB,OAAOjwB,KAAK6V,WAAasX,EAAQO,QAErCL,EAAMxrB,UAAU6tB,UAAY,SAAUlrB,GAElC,KAAK,QAAYA,IAAoB,OAAVA,IAAmBxE,KAAK4uB,WAC/C,OAAO,EAEX,IAAI/T,EAAa7a,KAAKkP,KAAK8gB,WAAWxrB,GACtC,IAAKxE,KAAKkP,KAAKgK,GAAG2B,GACd,OAAO,EAEX,IAAIqV,EAAUlwB,KAAKkP,KAAK2F,OAAOgG,GAC/B,SAAS,QAASqV,KAAalwB,KAAKkP,KAAKoV,QAAQ7a,KAAKymB,KAE1D7C,EAAMxrB,UAAUiT,SAAW,WACvB,MAAO,UAAY9U,KAAKqL,GAAK,IAAMrL,KAAKkP,KAAO,aAAelP,KAAK8uB,OAAS,eAAiB9uB,KAAK4uB,WAAa,KAE5GvB,EAtHe,4OChDtB8C,EAA2B,WAM3B,SAASA,EAAUjd,GAEflT,KAAKskB,QAAU,KAEftkB,KAAKof,SAAU,GACf,QAAOpf,KAAMkT,GAgDjB,OA5CAid,EAAUtuB,UAAUqX,GAAK,SAAUlV,EAAK6B,GACpC,OAAO,GAGXsqB,EAAUtuB,UAAUgT,OAAS,SAAU7Q,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUoT,OAAS,SAAUjR,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUsN,OAAS,SAAUsO,EAAGmB,GAEtC,OAAOnB,GAAKmB,GAEhBuR,EAAUtuB,UAAUuuB,YAAc,WAC9B,IAAIC,EAAMrwB,KAAKskB,QAAQxP,WACvB,OAAOub,EAAItJ,OAAO,EAAGsJ,EAAIjhB,OAAS,IAEtC+gB,EAAUtuB,UAAUiT,SAAW,WAC3B,MAAO,cAAgB9U,KAAKwF,KAAO,KAGvC2qB,EAAUtuB,UAAUmuB,WAAa,SAAUhsB,GACvC,OAAOhE,KAAKkZ,GAAGlV,GAAOA,EAAMhE,KAAKiV,OAAOjR,IAY5CmsB,EAAUtuB,UAAU8sB,SAAW,SAAU2B,EAAML,GAC3C,IAAKK,EACD,OAAOtwB,KACX,GAAa,SAATswB,IAAoBL,EACpB,MAAM,IAAIxd,MAAM,kDACpB,OAAO,IAAI8d,EAAUvwB,KAAMswB,IAExBH,EA3DmB,GA+D9B,SAASI,EAAUrhB,EAAMohB,GACrB,IAAIngB,EAAQnQ,KAEZ,SAASwwB,EAAUxsB,GACf,OAAO,QAAQA,GAAOA,GAAM,QAAUA,GAAO,CAACA,GAAO,GAczD,SAASysB,EAAajwB,EAAUkwB,GAC5B,OAAO,SAAqB1sB,GACxB,IAAI,QAAQA,IAAuB,IAAfA,EAAIoL,OACpB,OAAOpL,EACX,IAAI0b,EAAM8Q,EAAUxsB,GAChBsC,GAAS,QAAIoZ,EAAKlf,GACtB,OAAyB,IAAlBkwB,EAAgF,KAAvD,QAAOpqB,GAAQ,SAAUgJ,GAAK,OAAQA,KAAMF,OAjBpF,SAAqBpL,GACjB,OAAQA,EAAIoL,QACR,KAAK,EACD,OACJ,KAAK,EACD,MAAgB,SAATkhB,EAAkBtsB,EAAI,GAAKA,EACtC,QACI,OAAOA,GAUgF2sB,CAAYrqB,IAI/G,SAASsqB,EAAmBpwB,GACxB,OAAO,SAAqBqwB,EAAMC,GAC9B,IAAIC,EAAOP,EAAUK,GAAOG,EAAQR,EAAUM,GAC9C,GAAIC,EAAK3hB,SAAW4hB,EAAM5hB,OACtB,OAAO,EACX,IAAK,IAAIiO,EAAI,EAAGA,EAAI0T,EAAK3hB,OAAQiO,IAC7B,IAAK7c,EAASuwB,EAAK1T,GAAI2T,EAAM3T,IACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAActc,SAAQ,SAAUyE,GAC3D,IAAIyrB,EAAc/hB,EAAK1J,GAAMlC,KAAK4L,GAC9BgiB,EAAqB,WAAT1rB,EAAoBorB,EAAqBH,EACzDtgB,EAAM3K,GAAQ0rB,EAAUD,OAE5B,QAAOjxB,KAAM,CACT2tB,QAASze,EAAKye,QACdnoB,KAAM0J,EAAK1J,KACX8e,QAASpV,EAAKoV,QACdlF,QAASlQ,EAAKkQ,QACdyP,IAAK3f,EAAK2f,IACV3V,GAAIuX,EAAavhB,EAAKgK,GAAG5V,KAAK4L,IAAO,GACrCiiB,WAAYb,+GC5DZc,kUApDJC,EAA4B,WAC5B,SAASA,IACLrxB,KAAKwlB,SAAU,EACfxlB,KAAKsxB,UAAY,GACjBtxB,KAAKuxB,cAAe,QAAKF,EAAWxvB,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJ7B,KAAK+D,OAAQ,SAAQ,QAAI/D,KAAKuxB,cADf,SAAU9X,EAAYjU,GAAQ,OAAO,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,OAClC,IA+B3D,OA7BA4X,EAAWxvB,UAAUqT,QAAU,WAC3BlV,KAAK+D,MAAQ,IAOjBstB,EAAWxvB,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpD,KAAK,QAAU/X,GACX,OAAOzZ,KAAK+D,MAAMyB,GACtB,GAAIxF,KAAK+D,MAAMrB,eAAe8C,GAC1B,MAAM,IAAIiN,MAAM,iBAAmBjN,EAAO,+BAO9C,OANAxF,KAAK+D,MAAMyB,GAAQ,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,IACpD+X,IACAxxB,KAAKsxB,UAAU7wB,KAAK,CAAE+E,KAAMA,EAAM0N,IAAKse,IAClCxxB,KAAKwlB,SACNxlB,KAAKyxB,mBAENzxB,MAEXqxB,EAAWxvB,UAAU4vB,gBAAkB,WACnC,KAAOzxB,KAAKsxB,UAAUliB,QAAQ,CAC1B,IAAIF,EAAOlP,KAAKsxB,UAAUrvB,QAC1B,GAAIiN,EAAKoV,QACL,MAAM,IAAI7R,MAAM,sDACpB,QAAOzS,KAAK+D,MAAMmL,EAAK1J,MAAO,qBAA0B0J,EAAKgE,QAG9Dme,EAhDoB,GAoDvBD,EAAkB,SAAUle,GAC5B,IAAIwe,EAAc,SAAU1tB,GAAO,OAAe,MAAPA,EAAcA,EAAI8Q,WAAa9Q,GACtE2tB,EAAkB,CAClB9c,OAAQ6c,EACRzc,OAAQyc,EACRxY,IAAI,IAAAA,IAAG0Y,QACPtN,QAAS,KAETnV,OAAQ,SAAUsO,EAAGmB,GAAK,OAAOnB,GAAKmB,IAE1C,OAAO,QAAO,GAAI+S,EAAiBze,KAGvC,QAAOme,EAAWxvB,UAAW,CACzB0D,OAAQ6rB,EAAgB,IACxBjpB,KAAMipB,EAAgB,CAClB9M,QAAS,UAEbuN,MAAOT,EAAgB,IACvBU,KAAMV,EAAgB,CAClBhS,SAAS,IAEb2S,IAAKX,EAAgB,CACjBnc,OAAQ,SAAUjR,GAAO,OAAOqlB,SAASrlB,EAAK,KAC9CkV,GAAI,SAAUlV,GACV,QAAQ,QAAkBA,IAAQhE,KAAKiV,OAAOjR,EAAI8Q,cAAgB9Q,GAEtEsgB,QAAS,UAEb0N,KAAMZ,EAAgB,CAClBvc,OAAQ,SAAU7Q,GAAO,OAAQA,EAAO,EAAM,GAC9CiR,OAAQ,SAAUjR,GAAO,OAA6B,IAAtBqlB,SAASrlB,EAAK,KAC9CkV,IAAI,IAAAA,IAAG+Y,SACP3N,QAAS,QAEb4N,KAAMd,EAAgB,CAClBvc,OAAQ,SAAU7Q,GACd,OAAQhE,KAAKkZ,GAAGlV,GAEV,CAACA,EAAImuB,eAAgB,KAAOnuB,EAAIouB,WAAa,IAAItwB,OAAO,IAAK,IAAMkC,EAAIquB,WAAWvwB,OAAO,IAAImR,KAAK,UADlGkB,GAGVc,OAAQ,SAAUjR,GACd,GAAIhE,KAAKkZ,GAAGlV,GACR,OAAOA,EACX,IAAIgY,EAAQhc,KAAKsyB,QAAQ7oB,KAAKzF,GAC9B,OAAOgY,EAAQ,IAAIuW,KAAKvW,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM7H,GAEhE+E,GAAI,SAAUlV,GAAO,OAAOA,aAAeuuB,OAASjJ,MAAMtlB,EAAIwuB,YAC9DrjB,OAAQ,SAAUsjB,EAAGlV,GACjB,MAAO,CAAC,cAAe,WAAY,WAAW3O,QAAO,SAAUsL,EAAKvZ,GAAM,OAAOuZ,GAAOuY,EAAE9xB,OAAU4c,EAAE5c,QAAU,IAEpH2jB,QAAS,0DACTgO,QAAS,0DAEbI,KAAMtB,EAAgB,CAClBvc,OAAQ,KACRI,OAAQ,KACRiE,IAAI,IAAAA,IAAG3F,QACPpE,OAAQ,KACRmV,QAAS,UAGbJ,IAAKkN,EAAgB,CACjBvc,OAAQ,KACRI,OAAQ,KACRiE,GAAI,WAAc,OAAO,GACzB/J,OAAQ,kLCjJhBwjB,EAA6B,WAC7B,SAASA,EAAYvkB,QACF,IAAXA,IAAqBA,EAAS,KAClC,QAAOpO,KAAMoO,GA4BjB,OAlBAukB,EAAY9wB,UAAU+wB,SAAW,SAAUC,EAAWC,EAAUC,GAC5D,IAAIC,EACAC,GAAU,QAAUH,EAAUC,GAAM9nB,EAAY,GAAIioB,EAAc,GACtE,IAAK,IAAI7V,KAAK4V,EACV,GAAKA,EAAQ5V,IAAO4V,EAAQ5V,GAAGjP,SAE/B4kB,EAAezf,OAAOC,KAAKyf,EAAQ5V,GAAGjP,SACpBgB,OAElB,IAAK,IAAIsO,KAAKsV,EACNE,EAAYhlB,QAAQ8kB,EAAatV,KAAO,IAE5CwV,EAAYzyB,KAAKuyB,EAAatV,IAC9BzS,EAAU+nB,EAAatV,IAAM1d,KAAKgzB,EAAatV,KAGvD,OAAO,QAAO,GAAIzS,EAAW4nB,IAE1BF,EA/BqB,+RCS5BQ,EAA0B,WAC1B,SAASA,EAASC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAI5kB,EAAO6kB,EACXpzB,KAAKyN,MAAQc,EAAKd,MAClBzN,KAAKwO,YAAcD,EAAKC,YAAY1M,QACpC9B,KAAKsb,aAAc,QAAO,GAAI/M,EAAK+M,aACnCtb,KAAK+X,YAAcxJ,EAAKwJ,YAAYjW,QACpC9B,KAAKwa,MAAQjM,EAAKiM,OAASjM,EAAKiM,MAAM1Y,YAErC,CACD,IAAI2L,EAAQ2lB,EACZpzB,KAAKyN,MAAQA,EACbzN,KAAKwO,YAAcf,EAAM4lB,WAAW,CAAEjU,SAAS,IAC/Cpf,KAAKsb,YAAc,GACnBtb,KAAK+X,YAActK,EAAMsK,YAAYpJ,KAAI,SAAUqE,GAAO,OAAOA,EAAItG,YA+C7E,OA5CAymB,EAAStxB,UAAU6K,MAAQ,WACvB,OAAO,IAAIymB,EAASnzB,OAGxBmzB,EAAStxB,UAAUyxB,eAAiB,SAAUllB,GAG1C,OADApO,KAAKsb,YAActb,KAAKwO,YAAYI,QAAO,SAAUsR,EAAMqT,GAAQ,OAAO,QAAWrT,EADtC,EAAnBsT,EAC2ED,GAD9CloB,GAAImoB,EAAShvB,MAAM4J,EAAOolB,EAASnoB,OAA1E,IAAUmoB,IACsF,IAC3GxzB,MAGXmzB,EAAStxB,UAAU4xB,UAAY,SAAUjuB,GACrC,OAAO,QAAKxF,KAAKwO,aAAa,QAAO,KAAMhJ,KAM/C2tB,EAAStxB,UAAUsN,OAAS,SAAUZ,EAAMmlB,GACxC,IAAIC,EAAO3zB,KAAK2zB,KAAKplB,EAAMmlB,GAC3B,OAAOC,GAAwB,IAAhBA,EAAKvkB,QAcxB+jB,EAAStxB,UAAU8xB,KAAO,SAAUplB,EAAMmlB,GACtC,GAAI1zB,KAAKyN,QAAUc,EAAKd,MACpB,OAAO,EACX,IAAIW,EAASslB,EAAWA,EAAS1zB,MAAQA,KAAKwO,YAC9C,OAAO,YAAcJ,EAAQpO,KAAKsb,YAAa/M,EAAK+M,cAMxD6X,EAASzmB,MAAQ,SAAU6B,GAAQ,OAAOA,EAAK7B,SACxCymB,EA9DkB,mWCHzBS,EAA2B,WAC3B,SAASA,KA4JT,OAzJAA,EAAUC,gBAAkB,SAAUC,EAAU3rB,GAC5C,IAAIsF,GAAQ,QAAKtF,GAAMsF,MACvB,OAAO,IAAI,IAAYqmB,EAAUrmB,EAAOtF,EAAKwG,KAAI,QAAK,gBAAgBC,OAAO,KAAQ,IAAK,KAE9FglB,EAAUG,UAAY,SAAUvH,GAC5B,IAAIre,EAAWqe,EAAYpe,SAC3B,OAAOoe,EAAY/T,SAAStQ,KAAKwG,KAAI,SAAUlB,GAAS,OAAO,IAAI,IAASA,GAAO6lB,eAAenlB,OAGtGylB,EAAUI,YAAc,SAAUC,EAAUzH,GACxC,IAAI0H,EAASN,EAAUG,UAAUvH,GACjC,OAAIA,EAAYrsB,UAAUif,QACfwU,EAAUO,cAAcF,EAAUC,EAAQ3gB,OAAOC,KAAKgZ,EAAYpe,WAEtE8lB,GAOXN,EAAUQ,iBAAmB,SAAUttB,EAAOqB,EAAM6kB,GAEhD7kB,EACKmB,QAAO,SAAUiF,GAAQ,OAAO,QAAQye,EAAQze,EAAKd,UACrD1M,SAAQ,SAAUwN,GACnB,IAAI8lB,GAAY,QAAO9lB,EAAKd,MAAM+M,OAAS,IACvC8Z,EAAUV,EAAUU,QAAQnsB,GAAM,SAAUoY,GAAK,OAAOA,IAAMhS,KAC9DgmB,EAAcF,EAAU1lB,KAAI,SAAUmL,GAAQ,OAAOhT,EAAM0tB,iBAAiBF,EAASxa,MACzFvL,EAAKiM,MAAQ+Z,EAAY3lB,OAAO,KAAS,QAcjDglB,EAAUO,cAAgB,SAAUF,EAAUC,EAAQO,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,EAAYT,EACXtlB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKC,eAClCI,OAAO,KAAS,IAChBtF,QAAO,SAAU0F,GAAS,OAAQA,EAAMoQ,WACxCzQ,KAAI,QAAK,OAiBd,OAAOulB,EAAOvlB,KAZd,SAAiCgmB,GAE7B,IAAIC,GAAc,QAAO,GAAID,GAAUA,EAAOrZ,aAE1CuZ,GAAoB,QAAKD,EAAaH,GAC1CG,GAAc,QAAKA,EAAaH,GAChC,IAnBmBtsB,EAAMsF,EACrBc,EAkBAumB,GAAgB,SAnBD3sB,EAmBoB8rB,EAnBdxmB,EAmBwBknB,EAAOlnB,MAlBpDc,GAAO,QAAKpG,GAAM,QAAO,QAASsF,KAC/B,QAAO,GAAIc,GAAQA,EAAK+M,cAiBmC,IAAIoZ,GAElEK,GAAe,QAAOH,EAAaE,EAAeD,GACtD,OAAO,IAAI,IAASF,EAAOlnB,OAAO6lB,eAAeyB,OAQzDnB,EAAUllB,YAAc,SAAUulB,EAAUC,EAAQc,GAIhD,IAHA,IAE2BC,EAAOC,EAU9BhG,EAAMiG,EAAUlnB,EAASke,EAZzBrF,EAAMhF,KAAKD,IAAIoS,EAAS7kB,OAAQ8kB,EAAO9kB,QACvCgmB,EAAO,EAEJA,EAAOtO,GAAOmN,EAASmB,GAAM3nB,QAAUunB,IADnBC,EAC6ChB,EAASmB,GAD/CF,EACsDhB,EAAOkB,GAD7CH,EAAM9lB,OAAO+lB,EAAOtB,EAAUyB,oBAE5ED,IAUJD,GADAjG,EAAO+E,GACSnyB,MAAM,EAAGszB,GACzBnnB,EAAUihB,EAAKptB,MAAMszB,GAErB,IAAIE,EAAuBH,EAASxmB,KAVpC,SAAuB4mB,EAActmB,GACjC,IAAIxC,EAAS8oB,EAAa7oB,QAE1B,OADAD,EAAO6O,YAAc4Y,EAAOjlB,GAAKqM,YAC1B7O,KAUX,OAFA0f,EAAW+H,EAAOpyB,MAAMszB,GAEjB,CAAElG,KAAMA,EAAMC,GADhBmG,EAAqBlzB,OAAO+pB,GACJgJ,SAAUA,EAAUG,qBAAsBA,EAAsBrnB,QAASA,EAASke,SAAUA,IAiB7HyH,EAAU4B,SAAW,SAAUC,EAAOC,EAAOhC,GACzC,IAAIiC,GAAO,EAEX,OADa,QAAYF,EAAOC,GAClB9mB,QAAO,SAAU4mB,EAAUnK,GACrC,IAAIuK,EAAQvK,EAAG,GAAIwK,EAAQxK,EAAG,GAE9B,OADAsK,EAAOA,IAASC,EAAMzmB,OAAO0mB,EAAOnC,IACtB8B,EAAWA,EAASpzB,OAAOwzB,KAC1C,KAUPhC,EAAUzkB,OAAS,SAAUsmB,EAAOC,EAAOhC,GACvC,OAAO+B,EAAMrmB,SAAWsmB,EAAMtmB,QAAUwkB,EAAU4B,SAASC,EAAOC,EAAOhC,GAAUtkB,SAAWqmB,EAAMrmB,QAYxGwkB,EAAUU,QAAU,SAAUnsB,EAAM2tB,GAChC,IAAIvnB,GAAO,QAAKpG,EAAM2tB,GAClBC,EAAa5tB,EAAK+F,QAAQK,GAC9B,OAAuB,IAAhBwnB,OAAoB5hB,EAAYhM,EAAKrG,MAAM,EAAGi0B,EAAa,IAEtEnC,EAAUyB,iBAAmB,SAAU9mB,GACnC,OAAOA,EAAKd,MAAM4lB,WAAW,CAAEjU,SAAS,IAAS9V,QAAO,SAAU0F,GAAS,OAAQA,EAAM2e,YAG7FiG,EAAUtY,YAAc,SAAUnT,GAAQ,OAAOA,EAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,QAAO2L,EAAK3L,EAAK+M,eAAiB,KACtHsY,EA7JmB,yGCPvB,IAAIoC,EAAkB,CACzB/lB,KAAM,CACFgmB,KAAM,OACNC,MAAO,SAEXpd,MAAO,CACHqd,KAAM,OACNC,OAAQ,sbCgBZnkB,EAA4B,WAC5B,SAASA,EAAWokB,EAAMne,EAAWpG,EAAMwkB,EAAQ3uB,GAG/C,GAFA3H,KAAKu2B,UAAW,EAChBv2B,KAAKyD,aAAU0Q,EACXkiB,aAAgBpkB,GAChB,QAAOjS,KAAMq2B,QAEZ,IAAI,QAAWne,GAAY,CAC5B,IAAI,QAAkBme,GAClB,MAAM,IAAI5jB,MAAM,gDACpB,KAAK,QAAWyF,GACZ,MAAM,IAAIzF,MAAM,2DACpBzS,KAAKuhB,MAAQ8U,EACbr2B,KAAKs2B,OAASA,EACdt2B,KAAKkY,UAAYA,EACjBlY,KAAK8R,KAAOA,GAAQ,GACpB9R,KAAK2H,KAAOA,EACZ3H,KAAKu2B,cAAoBpiB,IAATxM,EAChB3H,KAAKyD,QAAUzD,KAAKu2B,SAAW,YAAiBv2B,KAAK2H,WAAQwM,OAE5D,IAAI,QAASkiB,IAASA,EAAK9U,QAAU8U,EAAK3zB,eAAe,cAAgB2zB,EAAK3zB,eAAe,SAAU,CACxG,IAAI8zB,EAAUH,EACd,OAAO,IAAIpkB,EAAWukB,EAAQjV,MAAOiV,EAAQte,UAAWse,EAAQ1kB,KAAM0kB,EAAQF,OAAQE,EAAQ7uB,OA+DtG,OA5DAsK,EAAWpQ,UAAUgX,UAAY,SAAUpL,GACvC,IAAIgpB,EAAaz2B,KAAKs2B,QAAU,GAC5BI,EAAejpB,GAASA,EAAMkpB,eAAkB,GACpD,MAAO,CACH1mB,KAAMwmB,EAAWxmB,MAAQymB,EAAYzmB,MA5CvC,OA6CE6I,MAAO2d,EAAW3d,OAAS4d,EAAY5d,OA5CxC,SAsDP7G,EAAWpQ,UAAU8K,QAAU,SAAUiqB,EAAgBhnB,GACrD,IAAIO,EAAQnQ,KACR+G,EAAK,OAOLwH,EAAOqoB,EAAeC,SAAS72B,MAC/ByN,EAAQc,GAAQA,EAAKd,MACrBqpB,EAAc92B,KAAK6Y,UAAUpL,GAAOqL,MACpCie,GAAoB,QAAWD,GAAeA,EAAc,KAUhE,OAAQ92B,KAAKyD,QAAUsD,EAClBkJ,OACAlF,MApB2B,WAC5B,OAAOhE,EAAG0U,IAAImb,EAAeI,gBAAgB7mB,GAAOxB,KAAI,SAAUqJ,GAAc,OAAOA,EAAWtH,IAAIkmB,EAAgBhnB,UAoBrH7E,MAjBiB,SAAUksB,GAAgB,OAAO9mB,EAAM+H,UAAU/V,MAAM,KAAM80B,MAkB9ElsB,KAAKgsB,GACLhsB,MAboB,SAAUmsB,GAK/B,OAJA/mB,EAAMxI,KAAOuvB,EACb/mB,EAAMomB,UAAW,EACjBpmB,EAAM+H,UAAY,KAClB,6BAA8B/H,EAAOP,GAC9BO,EAAMxI,SAgBrBsK,EAAWpQ,UAAU6O,IAAM,SAAUkmB,EAAgBhnB,GACjD,OAAO5P,KAAKyD,SAAWzD,KAAK2M,QAAQiqB,EAAgBhnB,IAExDqC,EAAWpQ,UAAUiT,SAAW,WAC5B,MAAO,sBAAuB,QAAU9U,KAAKuhB,OAAS,gBAAkBvhB,KAAK8R,KAAKnD,IAAI,MAAa,MAEvGsD,EAAWpQ,UAAU6K,MAAQ,WACzB,OAAO,IAAIuF,EAAWjS,OAE1BiS,EAAWklB,SAAW,SAAU5V,EAAO5Z,GAAQ,OAAO,IAAIsK,EAAWsP,GAAO,WAAc,OAAO5Z,IAAS,KAAM,KAAMA,IAC/GsK,EArFoB,4qBCd3BmlB,EAAQ,SACRC,EAAY,CAACD,EAAMlB,MAAOkB,EAAMnB,MAChCqB,EAAc,CAACF,EAAMlB,OAarB9tB,EAAgC,WAChC,SAASA,EAAemvB,GACpBv3B,KAAKu3B,MAAQA,EA8IjB,OA3IAnvB,EAAevG,UAAU+W,UAAY,WACjC,OAAO5Y,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO2L,EAAI9X,OAAOmM,EAAKwJ,YAAYpJ,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,YAAe,IAAI3S,OAAO,KAAO,KAQpJxG,EAAevG,UAAUiM,cAAgB,SAAUyT,GAC/C,IAAIiU,EAAWx1B,KAAKu3B,MACf5oB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKwJ,eAClCnJ,OAAO,KAAS,IAChBtF,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC9C,OAAO,QAAKiU,IAGhBptB,EAAevG,UAAUgX,UAAY,SAAUb,GAC3C,IAAIzJ,EAAOvO,KAAK62B,SAAS7e,GACzB,OAAOA,EAAWa,UAAUtK,EAAKd,QAyBrCrF,EAAevG,UAAUkS,WAAa,SAAUtG,GAC5C,OAAO,IAAIrF,EAAe,YAAkBpI,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAOA,EAAKd,QAAUA,OAiBpGrF,EAAevG,UAAU21B,eAAiB,SAAUC,EAAgBhqB,GAChE,IAAIc,GAAO,QAAKvO,KAAKu3B,OAAO,QAAO,QAAS9pB,IACxC+F,EAAOikB,EAAe9oB,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,SACtDhT,EAAKwJ,YAAcxJ,EAAKwJ,YAAYzO,QAAO,SAAUiU,GAAK,OAAkC,IAA3B/J,EAAKtF,QAAQqP,EAAEgE,UAAkBnf,OAAOq1B,IAS7GrvB,EAAevG,UAAU61B,YAAc,SAAUznB,EAAML,GACnD,IAAIO,EAAQnQ,UACC,IAATiQ,IAAmBA,EAAO,QAE9B,IAGI0nB,IAHa,QAAQN,EAAWpnB,GAAQA,EAAO,UAGjB,eAA6BqnB,EAAcD,EAE7E,sBAAuBr3B,KAAKu3B,MAAOtnB,EAAML,GACzC,IAAIgoB,EAAgB,SAAUC,EAAcC,GAAe,OAAO,SAAU9f,GACxE,OAAO,QAAQ6f,EAAc1nB,EAAM0I,UAAUb,GAAY8f,MAIzDvc,EAAWvb,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAC5C,IAAIwpB,EAAkBxpB,EAAKwJ,YAAYzO,OAAOsuB,EAAcD,EAAc,SACtEK,EAASD,EAAgBzuB,OAAOsuB,EAAc,CAAC,UAAW,UAC1DK,EAAOF,EAAgBzuB,QAAO,QAAIsuB,EAAc,CAAC,UAAW,WAE5D7jB,EAAa5D,EAAM4D,WAAWxF,EAAKd,OACnCyqB,EAAY,SAAU3a,GACtB,OAAOA,EACF7M,IAAIqD,EAAYnE,GAEhB7E,MAAK,SAAUvG,GAAS,MAAO,CAAG+c,MAAOhE,EAAEgE,MAAO/c,MAAOA,OAGlE,OADAwzB,EAAOj3B,QAAQm3B,GACRhe,EAAI9X,OAAO61B,EAAKtpB,IAAIupB,MAC5B,IAEH,OAAO,WAAgB3c,IAE3BnT,EAAevG,UAAUs2B,SAAW,WAChC,OAAOn4B,KAAKo4B,YAAcp4B,KAAKo4B,UAAY,IAAIC,EAAer4B,QAElEoI,EAAevG,UAAUg1B,SAAW,SAAU7e,GAC1C,OAAO,QAAKhY,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAO,QAAQA,EAAKwJ,YAAaC,OAO/E5P,EAAevG,UAAUm1B,gBAAkB,SAAUhf,GACjD,IAAI7H,EAAQnQ,KACRuO,EAAOvO,KAAK62B,SAAS7e,GAIrBsgB,GADU,YAAkBt4B,KAAKu3B,OAAO,SAAUjoB,GAAK,OAAOA,IAAMf,MAAYvO,KAAKu3B,OAEpF3oB,QAAO,SAAUsL,EAAKqe,GAAS,OAAOre,EAAI9X,OAAOm2B,EAAMxgB,eAAiB,IACxEzO,QAAO,SAAU0J,GAAO,OAAOA,IAAQgF,KAW5C,OAAOA,EAAWlG,KAAKnD,KAVH,SAAU4S,GAC1B,IAAIiU,EAAW8C,EAAqBhvB,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC7E,GAAIiU,EAASpmB,OACT,OAAO,QAAKomB,GAChB,IAAIgD,EAAeroB,EAAMgoB,WAAWM,UAAUlX,GAC9C,IAAI,QAAYiX,GACZ,MAAM,IAAI/lB,MAAM,+CAAgD,QAAU8O,IAE9E,OAAO,IAAI,IAAWA,GAAO,WAAc,OAAOiX,IAAiB,GAAIA,OAIxEpwB,EAhJwB,GAoJ/BiwB,EAAgC,WAChC,SAASA,EAAexnB,GACpB7Q,KAAK6Q,QAAUA,EACf7Q,KAAK04B,OAAS14B,KAAK0Q,IAlKQ,oBAkKsB,cAwBrD,OAtBA2nB,EAAex2B,UAAU6O,IAAM,SAAU6Q,GACrC,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,GAAIvJ,EAAY,CACZ,GAAiD,WAA7ChY,KAAK6Q,QAAQgI,UAAUb,GAAYc,MACnC,OAAOd,EAAWtH,IAAI1Q,KAAK6Q,SAE/B,IAAKmH,EAAWue,SACZ,MAAM,IAAI9jB,MAAM,yCAA0C,QAAUuF,EAAWuJ,QAEnF,OAAOvJ,EAAWrQ,KAEtB,OAAO3H,KAAKy4B,UAAUlX,IAE1B8W,EAAex2B,UAAU82B,SAAW,SAAUpX,GAC1C,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,OAAIvJ,EACOA,EAAWtH,IAAI1Q,KAAK6Q,SACxB,YAAiB7Q,KAAK04B,OAAOhoB,IAAI6Q,KAE5C8W,EAAex2B,UAAU42B,UAAY,SAAUlX,GAC3C,OAAOvhB,KAAK04B,QAAU14B,KAAK04B,OAAOhoB,IAAI6Q,IAEnC8W,EA3BwB,q2BC/J/BO,EAAkB,EAMlBC,GAAsB,QAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9CC,GAAqB,QAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlEpiB,EAA0B,WAQ1B,SAASA,EAASU,EAAiBC,QACP,IAApBD,IAA8BA,EAAkByhB,QAC7B,IAAnBxhB,IAA6BA,EAAiByhB,GAClD94B,KAAKoX,gBAAkBA,EACvBpX,KAAKqX,eAAiBA,EACLrX,KAAKmb,IAAMyd,IACX54B,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAe,GAErCh5B,KAAKqI,MAAQ,KAEbrI,KAAK+W,YAAc,IAAI,IAAY/W,MAEnCA,KAAKsY,QAAU,IAAI,IAEnBtY,KAAK8sB,kBAAoB,IAAI,IAAkB9sB,MAK/CA,KAAK4U,kBAAoB,IAAI,IAAkB5U,MAK/CA,KAAKmc,UAAY,IAAI,IAAUnc,MAE/BA,KAAKiX,WAAa,IAAI,IAAWjX,MAEjCA,KAAK4W,cAAgB,IAAI,IAAc5W,MAEvCA,KAAK6W,aAAe,IAAI,IAAa7W,MAErCA,KAAKi5B,SAAW,GAChBj5B,KAAK+W,YAAY/M,WAAWC,iBAAiBjK,KAAK4W,cAAcgH,QAChE5d,KAAKsY,QAAQwa,SAAW9yB,KAAK4W,cAAcgH,OAC3C5d,KAAKsY,QAAQwN,QAAU9lB,KAAKsY,QAAQwa,SAASplB,KAC7C1N,KAAKk5B,WAAWl5B,KAAKsY,SACrBtY,KAAKk5B,WAAWl5B,KAAK6W,cACrB7W,KAAKk5B,WAAWl5B,KAAK4W,eACrB5W,KAAKk5B,WAAWl5B,KAAK8sB,mBACrB9sB,KAAKk5B,WAAWl5B,KAAKiX,YACrBjX,KAAKk5B,WAAW9hB,GAChBpX,KAAKk5B,WAAW7hB,GAgGpB,OA7FAX,EAAS7U,UAAUq3B,WAAa,SAAUA,GACtCl5B,KAAKg5B,aAAav4B,KAAKy4B,IAa3BxiB,EAAS7U,UAAUqT,QAAU,SAAUgkB,GACnC,IAAI/oB,EAAQnQ,KACRk5B,IAAc,QAAWA,EAAWhkB,SACpCgkB,EAAWhkB,QAAQlV,OAGvBA,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAal3B,QAAQf,SAAQ,SAAUo4B,GACxC,IACyB,mBAAdA,EAAEjkB,SAA0BikB,EAAEjkB,QAAQ/E,IAC7C,QAAWA,EAAM6oB,aAAcG,GAEnC,MAAOC,UAwDf1iB,EAAS7U,UAAUw3B,OAAS,SAAUA,EAAQl5B,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIm5B,EAAiB,IAAID,EAAOr5B,KAAMG,GACtC,IAAKm5B,EAAe9zB,KAChB,MAAM,IAAIiN,MAAM,+CAAiD6mB,GAErE,OADAt5B,KAAKg5B,aAAav4B,KAAK64B,GACft5B,KAAKi5B,SAASK,EAAe9zB,MAAQ8zB,GAEjD5iB,EAAS7U,UAAU03B,UAAY,SAAUC,GACrC,OAAOA,EAAax5B,KAAKi5B,SAASO,IAAc,QAAOx5B,KAAKi5B,WAEzDviB,EAnJkB,ijBCf7B,SAAS+iB,EAAYhsB,GACjB,OAAOA,EAAMjI,KAEjB,SAASk0B,EAAYjsB,GAEjB,OADAA,EAAMC,KAAKsG,QAAU,WAAc,OAAOvG,GACnCA,EAAMC,KAEjB,SAASisB,EAAYlsB,GAIjB,OAHIA,EAAM2M,QAAU3M,EAAM2M,OAAOzS,OAC7B8F,EAAM9F,KAAO8F,EAAMC,KAAK/F,MAAO,QAAQ8F,EAAM2M,OAAOzS,KAAM8F,EAAM9F,OAE7D8F,EAAM9F,KAEjB,IAAIiyB,EAAgB,SAAUC,EAA4Bjc,GACtD,OAAO,SAAoBhK,GACvB,IAAIkmB,EAAWlmB,EAAYlG,KAG3B,GAAIosB,GAAYA,EAASroB,KAAOqoB,EAASt0B,MAAQs0B,EAASt0B,KAAKwW,MAAM,WAAY,CAC7E,IAAI+d,EAAc,IAClB,QAAKD,EAAUC,GACfA,EAAYtoB,KAAO,kBACnBqoB,EAAWC,EAEf,IAAI3f,EAASxG,EAAYwG,OACrB4f,EA/BG,SAAUvoB,GACrB,KAAK,QAASA,GACV,OAAO,EACX,IAAImM,EAAyB,MAAlBnM,EAAIhM,OAAO,GACtB,MAAO,CAAEzB,IAAK4Z,EAAOnM,EAAIwoB,UAAU,GAAKxoB,EAAKmM,KAAMA,GA2BlCsc,CAASJ,EAASroB,KAC3BA,EAAOuoB,EAAwBH,EAA2BxyB,QAAQ2yB,EAAOh2B,IAAK,CAAEyJ,MAAOqsB,IAAvEA,EAASroB,IAC7B,IAAKA,EACD,OAAO,KACX,IAAKooB,EAA2BM,UAAU1oB,GACtC,MAAM,IAAIgB,MAAM,gBAAkBhB,EAAM,eAAiBmC,EAAc,KAC3E,OAAOomB,GAAUA,EAAOpc,KAAOnM,GAAQ2I,GAAUA,EAAOggB,WAAcxc,KAAQnM,IAAI4oB,OAAO5oB,KAG7F6oB,EAAsB,SAAUC,GAChC,OAAO,SAA0B9sB,GAC7B,OAAQ8sB,EAAO9sB,IAAUA,EAAMgE,IAAMhE,EAAQA,EAAM2M,OAAS3M,EAAM2M,OAAOggB,UAAY,OAc7F,SAASI,EAAY/sB,GACjB,OAAOA,EAAM2M,OAAS3M,EAAM2M,OAAOjS,KAAK/F,OAAOqL,GAAkB,CAACA,GAEtE,SAASgtB,EAAgBhtB,GACrB,IAAI6L,EAAW7L,EAAM2M,QAAS,QAAO,GAAI3M,EAAM2M,OAAOd,UAAY,GAElE,OADAA,EAAS7L,EAAMjI,OAAQ,EAChB8T,EA2CJ,SAASohB,EAAmBjtB,GAE/B,IAA+BktB,EAAY3E,EA2BvC4E,EAAW,SAAUC,GAAK,OAAOA,EAAEC,SAAWD,EAAEtZ,OAEhDwZ,GAAqB,QAAQ,CAC7B,EAAC,QAAK,aAAc,SAAUF,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAE3iB,UAAW2iB,EAAE/oB,KAAM+oB,EAAEvE,UAC7F,EAAC,QAAK,cAAe,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAEG,WAAYH,EAAE/oB,MAAQ+oB,EAAEI,aAAcJ,EAAEvE,UACjH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAO,IAAIA,EAAEK,WAAe,GAAIL,EAAEvE,UACrH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAOA,EAAEM,WAAa,GAAIN,EAAEvE,OAAQuE,EAAEM,YACzH,EAAC,QAAK,eAAgB,SAAUN,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAI,KAAU,CAACA,EAAEO,aAAcP,EAAEvE,YAGrG+E,GAAmB,QAAQ,CAC3B,EAAC,SAAK,QAAK,OAAQ,MAAW,SAAU5nB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO,KAAU,CAAC9N,EAAMzP,KAAMyP,EAAM6iB,UACjH,EAAC,SAAK,QAAK,OAAQ,MAAU,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,OAAO,QAAK9N,EAAMzP,KAAMyP,EAAMzP,IAAIlC,MAAM,GAAI,GAAI2R,EAAM6iB,UAClI,EAAC,SAAK,QAAK,OAAQ,MAAa,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO9N,EAAMzP,KA/BvErD,EA+BqF8S,EAAMzP,IA9B5GuM,EAAY,cAIT5P,EAAY,SAAM4P,GAAaA,EAAU0H,SAAStX,EAAI4P,EAAUuH,WAAc,YA0BiCrE,EAAM6iB,QA/BjH,IAAU31B,EACjB4P,MAiCJ+qB,GAAkB,QAAQ,CAC1B,EAAC,IAAApiB,IAAG,KAAa,SAAUqE,GAAK,OAAOA,IACvC,CA5BmB,SAAUtD,GAAO,SAAUA,EAAIsH,QAAStH,EAAI/B,YA4B5C6iB,GACnB,CA3BoB,SAAU9gB,GAC9B,SAAWA,EAAI6gB,UAAW7gB,EAAIsH,SAAWtH,EAAIkhB,UAAYlhB,EAAI+gB,YAAc/gB,EAAImhB,aAAenhB,EAAIihB,YA0B9EH,GACpB,CAxBiB,SAAU9gB,GAC3B,SAAUA,GAAOA,EAAIjW,OAAQ,QAASiW,EAAIjW,OAAQ,QAAQiW,EAAIjW,OAAQ,QAAWiW,EAAIjW,QAuBpEq3B,GACjB,EAAC,SAAI,GAAO,SAAUphB,GAAO,MAAM,IAAIxH,MAAM,2BAA4B,QAAUwH,QAInFshB,EAAO9tB,EAAMd,QAEjB,QADY,QAAQ4uB,GAAQA,GArDGZ,EAqDmBY,EArDPvF,EAqDavoB,EAAMkpB,eAAiB,GApDpEpjB,OAAOC,KAAKmnB,GAAc,IAAIhsB,KAAI,SAAU4S,GAAS,MAAO,CAC/DA,MAAOA,EACPvd,IAAK22B,EAAWpZ,GAChBzP,UAAMqC,EACNmiB,OAAQN,EAAgBzU,SAiDnB5S,IAAI2sB,GAcrB,IAAIE,EAA8B,WAC9B,SAASA,EAAaC,EAAS7mB,GAC3B5U,KAAKy7B,QAAUA,EACf,IArIyBC,EAqIrBhuB,EAAO1N,KACP4d,EAAO,WAAc,OAAO6d,EAAQ3a,KAAK,KACzCyZ,EAAS,SAAU9sB,GAAS,MAAsB,KAAfA,EAAMjI,MAM7CxF,KAAK27B,SAAW,CACZn2B,KAAM,CAACi0B,GACP/rB,KAAM,CAACgsB,GACPtf,OAAQ,CARZ,SAAuB3M,GACnB,OAAI8sB,EAAO9sB,GACA,KACJguB,EAAQ3a,KAAKpT,EAAKkuB,WAAWnuB,KAAWmQ,MAM/CjW,KAAM,CAACgyB,GAEPloB,IAAK,CAACmoB,EAAchlB,EAAmBgJ,IAEvCwc,UAAW,CAACE,EAAoBC,IAChCnsB,OAAQ,EAtJastB,EAsJK9mB,EAAkB8mB,aArJ7C,SAAuBjuB,GAC1B,IACIouB,EAAapuB,EAAMgE,KAAOhE,EAAMgE,IAAI4hB,WAAW,CAAEjU,SAAS,KAAa,GACvE0c,GAAe,SAAO,SAAO,QAAKruB,EAAMW,QAAU,GAAIytB,EAAUltB,KAAI,QAAK,SAFvD,SAAUpD,EAAQF,GAAM,OAAOqwB,EAAa9qB,WAAWvF,EAAI,KAAMoC,EAAMC,UAG7F,OAAOmuB,EACFz5B,OAAO05B,GACPntB,KAAI,SAAUksB,GAAK,MAAO,CAACA,EAAExvB,GAAIwvB,MACjCjsB,OAAO,KAAY,OAiJpB4L,MAAO,GAEPrS,KAAM,CAACqyB,GAEPlhB,SAAU,CAACmhB,GACX1iB,YAAa,CAAC2iB,IAgEtB,OA7DAc,EAAa35B,UAAUk6B,QAAU,SAAUv2B,EAAM7E,GAC7C,IAAIg7B,EAAW37B,KAAK27B,SAChBpc,EAAQoc,EAASn2B,IAAS,GAE9B,OAAI,QAASA,MAAU,QAAU7E,GACtB4e,EAAMnQ,OAAS,EAAImQ,EAAQA,EAAM,IACvC,QAAS/Z,KAAU,QAAW7E,IAEnCg7B,EAASn2B,GAAQ+Z,EACjBoc,EAASn2B,GAAM/E,KAAKE,GACb,WAAc,OAAOg7B,EAASn2B,GAAMga,OAAOmc,EAASn2B,GAAM0I,QAAQvN,EAAI,KAAO,YAJpF,GAaJ66B,EAAa35B,UAAUm6B,MAAQ,SAAUvuB,GACrC,IAAeguB,EAANz7B,KAAmBy7B,QAASE,EAA5B37B,KAA0C27B,SAC/CvhB,EAASpa,KAAK47B,WAAWnuB,GAC7B,GAAI2M,IAAWqhB,EAAQ3a,KAAK1G,OAAQjG,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItO,KAAO81B,EACZ,GAAKA,EAASj5B,eAAemD,GAA7B,CAEA,IAAIo2B,EAAQN,EAAS91B,GAAK+I,QAAO,SAAUstB,EAAUpS,GAAQ,OAAO,SAAUmD,GAAU,OAAOnD,EAAKmD,EAAQiP,MAAiB,MAC7HzuB,EAAM5H,GAAOo2B,EAAMxuB,GAEvB,OAAOA,GAEX+tB,EAAa35B,UAAU+5B,WAAa,SAAUnuB,GAE1C,IAAIjI,EAAOiI,EAAMjI,MAAQ,GAErB22B,EAAW32B,EAAKsd,MAAM,KAM1B,GAFoB,OAFFqZ,EAASC,OAGvBD,EAASC,MACTD,EAAS/sB,OAAQ,CACjB,GAAI3B,EAAM2M,OACN,MAAM,IAAI3H,MAAM,mFAAqFjN,EAAO,KAGhH,OAAO22B,EAASlpB,KAAK,KAEzB,OAAKxF,EAAM2M,QAEJ,QAAS3M,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KADjD,IAGfg2B,EAAa35B,UAAU2D,KAAO,SAAUiI,GACpC,IAAIjI,EAAOiI,EAAMjI,KACjB,IAA2B,IAAvBA,EAAK0I,QAAQ,OAAgBT,EAAM2M,OACnC,OAAO5U,EACX,IAAIo2B,GAAa,QAASnuB,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KACtE,OAAOo2B,EAAaA,EAAa,IAAMp2B,EAAOA,GAE3Cg2B,EA5FsB,iTClL7Ba,EAA8B,WAC9B,SAASA,EAAaC,GAClBt8B,KAAKs8B,QAAUA,EAmDnB,OAjDAD,EAAax6B,UAAU06B,WAAa,SAAUC,GAE1C,OAAkC,KADlCA,EAAYA,GAAa,IACRtuB,QAAQ,MAAyC,IAA3BsuB,EAAUtuB,QAAQ,MAE7DmuB,EAAax6B,UAAUif,KAAO,SAAU2b,EAAaC,EAAMC,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCF,GAA+B,KAAhBA,EAApB,CAEA,IAAIG,GAAQ,QAASH,GACjBj3B,EAAOo3B,EAAQH,EAAcA,EAAYj3B,KACzCxF,KAAKu8B,WAAW/2B,KAChBA,EAAOxF,KAAK03B,YAAYlyB,EAAMk3B,IAClC,IAAIjvB,EAAQzN,KAAKs8B,QAAQ92B,GACzB,GAAIiI,IAAUmvB,KAAWA,GAAUnvB,IAAUgvB,GAAehvB,EAAMC,OAAS+uB,IACvE,OAAOhvB,EAEN,GAAImvB,GAASD,EAAW,CACzB,IACIzZ,GADU,QAAOljB,KAAKs8B,SACJhzB,QAAO,SAAU2jB,GAAU,OAAOA,EAAO4P,mBAAmBC,UAAY7P,EAAO4P,mBAAmBC,SAAS5Z,QAAQ1d,MAIzI,OAHI0d,EAAQ9T,OAAS,GACjB,UAAkB,iDAAmD5J,EAAO,gBAAiB0d,EAAQvU,KAAI,SAAUqN,GAAS,OAAOA,EAAMxW,SAEtI0d,EAAQ,MAIvBmZ,EAAax6B,UAAU61B,YAAc,SAAUlyB,EAAMk3B,GACjD,IAAKA,EACD,MAAM,IAAIjqB,MAAM,sCAAwCjN,EAAO,KAKnE,IAJA,IAAIu3B,EAAY/8B,KAAK8gB,KAAK4b,GACtBM,EAAYx3B,EAAKsd,MAAM,KACvBma,EAAaD,EAAU5tB,OACvBiO,EAAI,EAAGyI,EAAUiX,EACd1f,EAAI4f,EAAY5f,IACnB,GAAqB,KAAjB2f,EAAU3f,IAAmB,IAANA,EAA3B,CAIA,GAAqB,MAAjB2f,EAAU3f,GAMd,MALI,IAAKyI,EAAQ1L,OACT,MAAM,IAAI3H,MAAM,SAAWjN,EAAO,0BAA4Bu3B,EAAUv3B,KAAO,KACnFsgB,EAAUA,EAAQ1L,YANlB0L,EAAUiX,EAWlB,IAAIG,EAAUF,EAAUl7B,MAAMub,GAAGpK,KAAK,KACtC,OAAO6S,EAAQtgB,MAAQsgB,EAAQtgB,MAAQ03B,EAAU,IAAM,IAAMA,GAE1Db,EArDsB,oWCW7Bc,EAA6B,WAE7B,SAASA,EAAY5xB,GACjB,OAAO4xB,EAAY37B,OAAO+J,GAAU,IA4FxC,OAlFA4xB,EAAY37B,OAAS,SAAU47B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAI3vB,GAAQ,SAAQ,QAAQ2vB,EAAWD,EAAYt7B,YAMnD,OALAu7B,EAAUppB,QAAU,WAAc,OAAOvG,GACzCA,EAAMC,KAAO0vB,EACb3vB,EAAMovB,mBAAqB,CACvBC,SAAU,eAAgBrvB,EAAMjI,OAE7BiI,GAaX0vB,EAAYt7B,UAAUqX,GAAK,SAAUokB,GACjC,OAAOt9B,OAASs9B,GAAOt9B,KAAK0N,OAAS4vB,GAAOt9B,KAAKsL,QAAUgyB,GAM/DH,EAAYt7B,UAAUyJ,IAAM,WACxB,KAAKtL,KAAKoa,QAAYpa,KAAKoa,kBAAkBpa,KAAKokB,aAC9C,OAAOpkB,KAAKwF,KAChB,IAAIA,EAAOxF,KAAKoa,OAAO9O,MACvB,OAAO9F,EAAOA,EAAO,IAAMxF,KAAKwF,KAAOxF,KAAKwF,MAOhD23B,EAAYt7B,UAAU+b,KAAO,WACzB,OAAQ5d,KAAKoa,QAAUpa,KAAKoa,OAAOwD,QAAW5d,MAWlDm9B,EAAYt7B,UAAUwxB,WAAa,SAAUzyB,GAGzC,QAFAA,GAAO,QAASA,EAAM,CAAEwe,SAAS,EAAMme,aAAc,QAC/Bne,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOiZ,cAAiB,IAExEjxB,QAAO,QAAOpC,KAAKoO,SACnB9E,QAAO,SAAU0F,GAAS,OAAQpO,EAAK28B,cAAgB38B,EAAK28B,aAAa76B,eAAesM,EAAM3D,QASvG8xB,EAAYt7B,UAAU4xB,UAAY,SAAUpoB,EAAIzK,GAE5C,YADa,IAATA,IAAmBA,EAAO,IACrBZ,KAAKyR,KAAOzR,KAAKyR,IAAIgiB,UAAUpoB,EAAIzK,KACxC,SAAK,QAAOZ,KAAKoO,SAAS,QAAO,KAAM/C,KACtCzK,EAAKwe,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOqZ,UAAUpoB,IAE9D8xB,EAAYt7B,UAAUiT,SAAW,WAC7B,OAAO9U,KAAKsL,OAGhB6xB,EAAYE,aAAe,SAAUD,GACjC,OAAO,QAAWA,KAA+C,IAAjCA,EAA2B,iBAG/DD,EAAYK,mBAAqB,SAAUvjB,GAAO,OAAO,QAAWA,EAAa,UAEjFkjB,EAAYM,QAAU,SAAUxjB,GAAO,OAAO,QAASA,EAAwB,qBACxEkjB,EA/FqB,kPCZ5BO,EAAmC,WACnC,SAASA,EAAkBhpB,EAAQsY,EAAQ+O,EAAS4B,GAChD39B,KAAK0U,OAASA,EACd1U,KAAKgtB,OAASA,EACdhtB,KAAK+7B,QAAUA,EACf/7B,KAAK29B,UAAYA,EACjB39B,KAAK49B,MAAQ,GA4EjB,OA1EAF,EAAkB77B,UAAUqT,QAAU,WAClClV,KAAK49B,MAAQ,IAEjBF,EAAkB77B,UAAU6X,SAAW,SAAU0jB,GAC7C,IAAIQ,EAAQ59B,KAAK49B,MACbnwB,EAAQ,WAAmB2vB,GAC3B53B,EAAOiI,EAAMjI,KACjB,KAAK,QAASA,GACV,MAAM,IAAIiN,MAAM,gCACpB,GAAIzS,KAAKgtB,OAAOtqB,eAAe8C,KAAS,QAAQo4B,EAAMjvB,KAAI,QAAK,SAAUnJ,GACrE,MAAM,IAAIiN,MAAM,UAAYjN,EAAO,wBAGvC,OAFAo4B,EAAMn9B,KAAKgN,GACXzN,KAAK69B,QACEpwB,GAEXiwB,EAAkB77B,UAAUg8B,MAAQ,WAchC,IAbA,IAAI1tB,EAAQnQ,KACRqrB,EAAKrrB,KAAM49B,EAAQvS,EAAGuS,MAAO5Q,EAAS3B,EAAG2B,OAAQ+O,EAAU1Q,EAAG0Q,QAC9D+B,EAAa,GACjBC,EAAU,GACVC,EAAsB,GAClBC,EAAW,SAAUz4B,GAAQ,OAAO2K,EAAM6c,OAAOtqB,eAAe8C,IAAS2K,EAAM6c,OAAOxnB,IACtF04B,EAAkB,WACdJ,EAAW1uB,QACXe,EAAMwtB,UAAU58B,SAAQ,SAAUo9B,GAC9B,OAAOA,EAAS,aAAcL,EAAWnvB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,aAI1EkwB,EAAMxuB,OAAS,GAAG,CACrB,IAAI3B,EAAQmwB,EAAM37B,QACdm8B,EAAS3wB,EAAMjI,KACfc,EAASy1B,EAAQC,MAAMvuB,GACvB4wB,EAAYN,EAAQ7vB,QAAQT,GAChC,GAAInH,EAAJ,CACI,IAAIg4B,EAAgBL,EAASG,GAC7B,GAAIE,GAAiBA,EAAc94B,OAAS44B,EACxC,MAAM,IAAI3rB,MAAM,UAAY2rB,EAAS,wBAEzC,IAAIG,EAAsBN,EAASG,EAAS,OACxCG,GAEAv+B,KAAK0U,OAAOkC,cAAc4nB,WAAWD,GAEzCvR,EAAOoR,GAAU3wB,EACjBzN,KAAKy+B,YAAYhxB,GACb4wB,GAAa,GACbN,EAAQve,OAAO6e,EAAW,GAC9BP,EAAWr9B,KAAKgN,OAdpB,CAiBA,IAAIixB,EAAOV,EAAoBI,GAE/B,GADAJ,EAAoBI,GAAUR,EAAMxuB,OAChCivB,GAAa,GAAKK,IAASd,EAAMxuB,OAKjC,OAFAwuB,EAAMn9B,KAAKgN,GACXywB,IACOlR,EAEFqR,EAAY,GACjBN,EAAQt9B,KAAKgN,GAEjBmwB,EAAMn9B,KAAKgN,IAGf,OADAywB,IACOlR,GAEX0Q,EAAkB77B,UAAU48B,YAAc,SAAUhxB,GAChD,IAAIA,EAAMkxB,UAAalxB,EAAMgE,IAA7B,CAEA,IAAImtB,EAAW5+B,KAAK0U,OAAOuC,WAAW0F,MACtCiiB,EAASriB,KAAKqiB,EAASC,eAAer9B,OAAOiM,MAE1CiwB,EAlF2B,sbCQlCoB,EAA+B,WAE/B,SAASA,EAAcpqB,GACnB1U,KAAK0U,OAASA,EACd1U,KAAKgtB,OAAS,GAEdhtB,KAAK29B,UAAY,GACjB39B,KAAKy7B,QAAU,IAAI,IAAaz7B,KAAKgtB,QACrChtB,KAAK+7B,QAAU,IAAI,IAAa/7B,KAAKy7B,QAAS/mB,EAAOE,mBACrD5U,KAAK++B,WAAa,IAAI,IAAkBrqB,EAAQ1U,KAAKgtB,OAAQhtB,KAAK+7B,QAAS/7B,KAAK29B,WAChF39B,KAAKg/B,gBAmJT,OAhJAF,EAAcj9B,UAAUm9B,cAAgB,YAUvBh/B,KAAKi/B,MAAQj/B,KAAK++B,WAAWrlB,SATvB,CACflU,KAAM,GACNiM,IAAK,IACL+I,MAAO,KACPpM,OAAQ,CACJ,IAAK,CAAE5J,MAAO,KAAM0K,KAAM,OAAQye,SAAS,IAE/CgR,UAAU,KAGRvE,UAAY,MAGtB0E,EAAcj9B,UAAUqT,QAAU,WAC9B,IAAI/E,EAAQnQ,KACZA,KAAK++B,WAAW7pB,UAChBlV,KAAK29B,UAAY,GACjB39B,KAAK0Q,MAAM3P,SAAQ,SAAU0M,GAAS,OAAO0C,EAAMO,IAAIjD,IAAU0C,EAAMquB,WAAW/wB,OAgCtFqxB,EAAcj9B,UAAUq9B,gBAAkB,SAAUf,GAEhD,OADAn+B,KAAK29B,UAAUl9B,KAAK09B,GACb,YACH,QAAWn+B,KAAK29B,UAAhB,CAA2BQ,IAC7B76B,KAAKtD,OAWX8+B,EAAcj9B,UAAU+b,KAAO,WAC3B,OAAO5d,KAAKi/B,OAchBH,EAAcj9B,UAAU6X,SAAW,SAAUylB,GACzC,OAAOn/B,KAAK++B,WAAWrlB,SAASylB,IAGpCL,EAAcj9B,UAAUu9B,gBAAkB,SAAU3xB,GAChD,IAAI0C,EAAQnQ,KACRyb,EAAMzb,KAAK0Q,MAAM/B,KAAI,SAAUyO,GAAK,OAAOA,EAAEpJ,aAC7CqrB,EAAc,SAAUrS,GACxB,IAAIsS,EAAY7jB,EAAInS,QAAO,SAAU8T,GAAK,OAAqC,IAA9B4P,EAAO9e,QAAQkP,EAAEhD,WAClE,OAA4B,IAArBklB,EAAUlwB,OAAekwB,EAAYA,EAAUl9B,OAAOi9B,EAAYC,KAEzE12B,EAAWy2B,EAAY,CAAC5xB,IACxB8xB,EAAe,CAAC9xB,GAAOrL,OAAOwG,GAAUoX,UAW5C,OAVAuf,EAAax+B,SAAQ,SAAUksB,GAC3B,IAAI2R,EAAWzuB,EAAMuE,OAAOuC,WAAW0F,MAEvCiiB,EACKjiB,QACArT,QAAO,QAAO,QAAS2jB,IACvBlsB,SAAQ,SAAUwb,GAAQ,OAAOqiB,EAASY,WAAWjjB,aAEnDpM,EAAM6c,OAAOC,EAAOznB,SAExB+5B,GAWXT,EAAcj9B,UAAU28B,WAAa,SAAU/B,GAC3C,IAAIxP,EAASjtB,KAAK0Q,IAAI+rB,GACtB,IAAKxP,EACD,MAAM,IAAIxa,MAAM,sCAAwCgqB,GAC5D,IAAIgD,EAAqBz/B,KAAKo/B,gBAAgBnS,EAAOjZ,WAIrD,OAHAhU,KAAK29B,UAAU58B,SAAQ,SAAUo9B,GAC7B,OAAOA,EAAS,eAAgBsB,EAAmB9wB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,YAE5E+xB,GAEXX,EAAcj9B,UAAU6O,IAAM,SAAU+rB,EAAaC,GACjD,IAAIvsB,EAAQnQ,KACZ,GAAyB,IAArBgC,UAAUoN,OACV,OAAOmE,OAAOC,KAAKxT,KAAKgtB,QAAQre,KAAI,SAAUnJ,GAAQ,OAAO2K,EAAM6c,OAAOxnB,GAAMkI,QACpF,IAAIgyB,EAAQ1/B,KAAKy7B,QAAQ3a,KAAK2b,EAAaC,GAC3C,OAAQgD,GAASA,EAAMhyB,MAAS,MAYpCoxB,EAAcj9B,UAAUiV,UAAY,SAAU6oB,EAAUC,GACpD,OAAO5/B,KAAK+7B,QAAQA,QAAQ4D,EAAUC,IAEnCd,EA7JuB,2SCsB9Be,EAA6B,WAe7B,SAASA,EAAYC,EAAgBC,EAAaC,EAASC,GACvDjgC,KAAK8/B,eAAiBA,EACtB9/B,KAAK+/B,YAAcA,EACnB//B,KAAK+/B,YAAcA,EACnB//B,KAAKggC,SAAU,QAAO,GAAIA,GAAW,IACrChgC,KAAKigC,UAAW,QAAO,GAAIA,GAAY,IACvCjgC,KAAKkgC,YAAcJ,EAAerE,QAAQ3a,KAAKif,EAAa//B,KAAKigC,SAASE,UAsF9E,OAnFAN,EAAYh+B,UAAU2D,KAAO,WACzB,OAAQxF,KAAKkgC,aAAelgC,KAAKkgC,YAAY16B,MAASxF,KAAK+/B,aAG/DF,EAAYh+B,UAAU4qB,WAAa,WAC/B,OAAOzsB,KAAK+/B,aAGhBF,EAAYh+B,UAAUuM,OAAS,WAC3B,OAAOpO,KAAKggC,SAGhBH,EAAYh+B,UAAU4W,OAAS,WAC3B,OAAOzY,KAAKkgC,aAGhBL,EAAYh+B,UAAU4L,MAAQ,WAC1B,OAAOzN,KAAKkgC,aAAelgC,KAAKkgC,YAAYxyB,MAGhDmyB,EAAYh+B,UAAU1B,QAAU,WAC5B,OAAOH,KAAKigC,UAGhBJ,EAAYh+B,UAAUu+B,OAAS,WAC3B,SAAUpgC,KAAKkgC,cAAelgC,KAAKkgC,YAAYxyB,OAGnDmyB,EAAYh+B,UAAUw+B,MAAQ,WAC1B,OAAQrgC,KAAKqF,SAGjBw6B,EAAYh+B,UAAUwD,MAAQ,WAC1B,IAAIq3B,EAAO18B,KAAKG,UAAUggC,SAC1B,IAAKngC,KAAKkgC,aAAiBxD,EAAM,CAC7B,IAAIF,EAAYE,EAAKl3B,KAAOk3B,EAAKl3B,KAAOk3B,EACxC,MAAO,sBAAwB18B,KAAKwF,OAAS,iBAAmBg3B,EAAY,IAEhF,OAAKx8B,KAAKkgC,YAELlgC,KAAKkgC,YAAYxyB,UAAtB,EACW,UAAY1N,KAAKwF,OAAS,8BAF1B,kBAAoBxF,KAAKwF,OAAS,KAIjDq6B,EAAYh+B,UAAUiT,SAAW,WAC7B,MAAO,IAAM9U,KAAKwF,OAAS,KAAM,QAAUxF,KAAKoO,WAQpDyxB,EAAYh+B,UAAUy+B,UAAY,SAAU7yB,GACxC,OAAO,IAAIoyB,EAAY7/B,KAAK8/B,eAAgBryB,EAAOzN,KAAKggC,QAAShgC,KAAKigC,WAS1EJ,EAAYh+B,UAAU0+B,WAAa,SAAUnyB,EAAQ2G,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8d,EAAY9d,EAAU3G,GAAS,QAAO,GAAIpO,KAAKggC,QAAS5xB,GAC5D,OAAO,IAAIyxB,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAalN,EAAW7yB,KAAKigC,WASlFJ,EAAYh+B,UAAU2+B,YAAc,SAAUrgC,EAAS4U,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI0rB,EAAU1rB,EAAU5U,GAAU,QAAO,GAAIH,KAAKigC,SAAU9/B,GAC5D,OAAO,IAAI0/B,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAa//B,KAAKggC,QAASS,IAGhFZ,EAAYa,MAAQ,SAAUzmB,GAC1B,OAAOA,GAAOA,EAAIxM,SAAU,QAASwM,EAAIxM,SAAW,QAASwM,EAAIxM,SAAU,QAASwM,EAAIxM,MAAMjI,QAE3Fq6B,EA3GqB,iYCf5Bc,EAA6B,WAC7B,SAASA,EAAY1U,GACjBjsB,KAAKisB,WAAaA,EA2EtB,OAzEA0U,EAAY9+B,UAAU++B,mBAAqB,SAAUC,GACjD,IAAI1wB,EAAQnQ,KAEZ,OADmBA,KAAKisB,WAAWvX,OAAOoY,kBACtB9iB,WACf82B,WAAWD,GACXlyB,KAAI,SAAUO,GAAQ,OAAOiB,EAAM4wB,WAAW7xB,MAC9CN,OAAO,KAAS,IAChBtF,OAAO,OAWhBq3B,EAAY9+B,UAAUk/B,WAAa,SAAUC,GACzC,IAAI/U,EAAajsB,KAAKisB,WAClBvd,EAAcud,EAAWvd,cAEzBuyB,EAAgBjhC,KAAKkhC,iBAAiBF,EAAUtyB,EAAaud,GACjE,IAAKgV,EACD,MAAO,GACX,IA4DWE,EA5DPC,EAAkB,CAClBnV,WAAYA,EACZnG,QAASmG,EAAW9rB,UAAU2lB,SAkBlC,OAAOmb,EACFtyB,KAjBqB,SAAUkF,GAMhC,OAJcA,EAAKqP,QAAQxU,EAAaud,GAEZ+U,EAASK,kBAAkB77B,MAElCmJ,KAAI,SAAUJ,GAC/B,IAAI0xB,GAAW,QAAO,CAClB38B,KAAMuQ,EAAKvQ,KACXg+B,UAAW,CAAEN,SAAUA,EAASx7B,KAAMqL,QAAStC,IAChD6yB,GACC3zB,EAAQuzB,EAASK,kBAAkBv+B,QAAU,UAA4ByL,EAAKd,MAAMC,KAAO,KAC3F6zB,EAAiB,IAAI,IAAetV,EAAYxe,EAAOoG,EAAMosB,GACjE,MAAO,CAAEpsB,KAAMA,EAAMtF,KAAMA,EAAMgzB,eAAgBA,SAKpD3yB,OAAO,KAAS,IAChB4c,MAqCM2V,EArCSH,EAASQ,iBAsCR,IAArBL,IAA+BA,GAAmB,GAC/C,SAA+B1O,EAAGlV,GACrC,IAAIkkB,EAASN,GAAoB,EAAI,EACjCO,GAAcjP,EAAElkB,KAAKd,MAAMtF,KAAKiH,OAASmO,EAAEhP,KAAKd,MAAMtF,KAAKiH,QAAUqyB,EACzE,OAAsB,IAAfC,EAAmBA,EAAankB,EAAE1J,KAAKzM,SAAWqrB,EAAE5e,KAAKzM,YAzC3DuH,KAAI,SAAU8E,GAAS,OAAOA,EAAM8tB,mBAa7CZ,EAAY9+B,UAAUq/B,iBAAmB,SAAUF,EAAUtyB,EAAaud,GACtE,IAAI0V,EAAWX,EAASY,YAAc,WAElC/6B,EAAe7G,KAAKisB,WAAWvX,OAAOoY,kBAE1C,OADiB6U,EAAW,CAAC96B,GAAgB,CAAC7G,KAAKisB,WAAYplB,IAE1D8H,KAAI,SAAUkzB,GAAO,OAAOA,EAAIC,SAASd,EAASx7B,SAClD8D,QAAO,QAAgB,KAAS,uBAAyB03B,EAASx7B,OAClEoJ,OAAO,KAAS,IAChBtF,QAAO,SAAUuK,GAAQ,OAAOA,EAAKqP,QAAQxU,EAAaud,OAE5D0U,EA7EqB,+PCDzB,SAASoB,EAAWt0B,EAAOu0B,EAAW/V,GACzC,IAAIgW,GAAU,QAASD,GAAa,CAACA,GAAaA,EAYlD,UADe,QAAWC,GAAWA,EAVrC,SAAoBhV,GAEhB,IADA,IAAIiV,EAAcD,EACT5kB,EAAI,EAAGA,EAAI6kB,EAAY9yB,OAAQiO,IAAK,CACzC,IAAIwF,EAAO,IAAI,KAAKqf,EAAY7kB,IAChC,GAAKwF,GAAQA,EAAKK,QAAQ+J,EAAOznB,QAAYqd,GAAQqf,EAAY7kB,KAAO4P,EAAOznB,KAC3E,OAAO,EAGf,OAAO,IAGMiI,EAAOwe,GAK5B,IAAIkW,EAAgC,WAChC,SAASA,EAAeC,EAASC,EAAW7hC,EAAU8hC,EAAeC,EAAwBpiC,QACzE,IAAZA,IAAsBA,EAAU,IACpCH,KAAKoiC,QAAUA,EACfpiC,KAAKqiC,UAAYA,EACjBriC,KAAKQ,SAAWA,EAChBR,KAAKsiC,cAAgBA,EACrBtiC,KAAKuiC,uBAAyBA,EAC9BviC,KAAKwiC,YAAc,EACnBxiC,KAAKyiC,eAAgB,EACrBziC,KAAKoH,SAAWjH,EAAQiH,UAAY,EACpCpH,KAAKsD,KAAOnD,EAAQmD,MAAQ,KAC5BtD,KAAK0iC,YAAcviC,EAAQuiC,YAqF/B,OApEAP,EAAetgC,UAAU8gC,eAAiB,SAAUC,EAAOZ,EAAW/V,GAClE,IAAkB,IAAd+V,EACA,OAAOY,EACX,IAAIpN,EAAWoN,EAAMt5B,QAAO,SAAUiF,GAAQ,OAAOwzB,EAAWxzB,EAAKd,MAAOu0B,EAAW/V,MACvF,OAAOuJ,EAASpmB,OAASomB,EAAW,MAgBxC2M,EAAetgC,UAAUghC,yBAA2B,WAChD,OAAO,QAAO7iC,KAAKoiC,QAAQp4B,WAAW84B,iBAAiB,WAAc,OAAO,MAiBhFX,EAAetgC,UAAUkhC,kBAAoB,SAAUr0B,EAAaud,GAChE,IAAI9b,EAAQnQ,KACR8P,GAAW,QAAO9P,KAAK6iC,2BAA4B7iC,KAAKsiC,eAE5D,OADY,QAAOtiC,KAAKoiC,QAAQp4B,WAAW84B,iBAC9Bl0B,QAAO,SAAUo0B,EAAIC,GAG9B,IAAIC,EAAcD,EAASngC,QAAU,UACjCqF,EAAOuG,EAAYu0B,EAASz9B,OAAS,GACrCo9B,EAAQM,EAAc/6B,EAAO,EAAC,QAAKA,IAEvC,OADA66B,EAAGC,EAASz9B,MAAQ2K,EAAMwyB,eAAeC,EAAO9yB,EAASmzB,EAASz9B,MAAOymB,GAClE+W,IACR,KAQPb,EAAetgC,UAAUqhB,QAAU,SAAUxU,EAAaud,GACtD,IAAI/I,EAAUljB,KAAK+iC,kBAAkBr0B,EAAaud,GAGlD,OADiB,QAAO/I,GAASigB,MAAM,MACnBjgB,EAAU,MAElCif,EAAetgC,UAAU28B,WAAa,WAClCx+B,KAAKuiC,uBAAuBviC,MAC5BA,KAAKyiC,eAAgB,GAElBN,EAjGwB,GAqG5B,SAASiB,EAAUtP,EAAUhH,EAAmBuV,GAEnD,IACIgB,GADoBvP,EAASwP,iBAAmBxP,EAASwP,kBAAoB,IACnDjB,EAAU78B,MAAQ,GAC5C+9B,GAAe,QAAWF,GAG9B,SAASG,EAAmBC,EAAajjC,EAAUL,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI6pB,EAAiB,IAAImY,EAAerV,EAAmBuV,EAAW7hC,EAAUijC,EAAaF,EAAcpjC,GAE3G,OADAkjC,EAAM5iC,KAAKupB,GACJA,EAAewU,WAAWl7B,KAAK0mB,GAE1C,OAPA8J,EAASuO,EAAU78B,MAAQg+B,EAOpBA,2FCpJX,IAAIE,EAQAC,2BAPJ,SAAWD,GACPA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,QAL5D,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,QAF5D,CAGGA,IAAwBA,EAAsB,8HCP7CC,2LACJ,SAAWA,GAOPA,EAAWA,EAAuB,WAAI,GAAK,aAM3CA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAoB,QAAI,GAAK,UAWxCA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAkB,MAAI,GAAK,QApC1C,CAqCGA,IAAeA,EAAa,KAG/B,IAAIv4B,EAAK,EACLw4B,EAA2B,WAC3B,SAASA,EAAU30B,EAAM40B,EAASC,GAE9B/jC,KAAKmb,IAAM9P,IACXrL,KAAKkP,KAAOA,EACZlP,KAAK8jC,QAAUA,EACf9jC,KAAK+jC,OAASA,EA4DlB,OAzDAF,EAAUG,mBAAqB,SAAU/pB,GACrC,OAAOA,GAA2B,mBAAbA,EAAIlP,OAAuB,IAAAmO,IAAG2qB,EAAH,CAAc5pB,EAAIyN,uBAGtEmc,EAAUI,WAAa,SAAUF,EAAQ5jC,GACrC,IACI+jC,EAAY,IAAIL,EAAUD,EAAWO,WAD3B,+DACgDJ,GAI9D,OAHI5jC,GAAWA,EAAQikC,aACnBF,EAAUE,YAAa,GAEpBF,GAGXL,EAAUO,WAAa,SAAUL,GAC7B,OAAOF,EAAUI,WAAWF,EAAQ,CAAEK,YAAY,KAGtDP,EAAUQ,QAAU,SAAUN,GAE1B,OAAO,IAAIF,EAAUD,EAAWU,QADlB,6BACoCP,IAGtDF,EAAUzK,QAAU,SAAU2K,GAE1B,OAAO,IAAIF,EAAUD,EAAWW,QADlB,6BACoCR,IAGtDF,EAAUW,QAAU,SAAUT,GAE1B,OAAO,IAAIF,EAAUD,EAAWa,QADlB,kCACoCV,IAGtDF,EAAUa,QAAU,SAAUX,GAE1B,OAAO,IAAIF,EAAUD,EAAWe,MADlB,yBACkCZ,IAWpDF,EAAUe,UAAY,SAAUb,GAC5B,OAAO,IAAA7qB,IAAG2qB,EAAH,CAAcE,GAAUA,EAASF,EAAUa,QAAQX,IAE9DF,EAAUhiC,UAAUiT,SAAW,WAC3B,IAA6BqkB,EACzB4K,GADyB5K,EACHn5B,KAAK+jC,SADgB5K,EAAErkB,WAAavB,OAAO1R,UAAUiT,SAAWqkB,EAAErkB,YAAa,QAAUqkB,GAE/G9N,EAAKrrB,KACT,MAAO,6BADcqrB,EAAGlQ,IACoB,UADRkQ,EAAGnc,KACwB,cADRmc,EAAGyY,QAC+B,aAAeC,EAAS,KAErHF,EAAUhiC,UAAUgjC,UAAY,WAC5B,OAAO,SAAO,QAAgB7kC,MAAO,CAAE0nB,qBAAsB1nB,QAE1D6jC,EAlEmB,oMC1C1BiB,EAEA,SAA6Bt/B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QACpG,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5CllC,KAAKwF,KAAOA,EACZxF,KAAK4hC,UAAYA,EACjB5hC,KAAK+kC,UAAYA,EACjB/kC,KAAKqhC,kBAAoBA,EACzBrhC,KAAKwhC,YAAcA,EACnBxhC,KAAKglC,iBAAmBA,EACxBhlC,KAAKilC,gBAAkBA,EACvBjlC,KAAKklC,YAAcA,gsBCVvBC,EAAiB,CACjBrf,QAAS,KACTmG,WAAY,KACZqV,UAAW,GACXh+B,KAAM,MAEN8hC,EAAgC,WAChC,SAASA,EAAenZ,EAAYoZ,EAAcrb,EAAgB7pB,GAC9D,IAAIgQ,EAAQnQ,KACZA,KAAKisB,WAAaA,EAClBjsB,KAAKqlC,aAAeA,EACpBrlC,KAAKgqB,eAAiBA,EACtBhqB,KAAKG,QAAUA,EACfH,KAAKslC,aAAe,WAAc,OAAOn1B,EAAMjB,KAAK0yB,YAAc,UAA4BzxB,EAAMhQ,QAAQ8rB,WAAWsZ,YACvHvlC,KAAKG,SAAU,QAASA,EAASglC,GACjCnlC,KAAKkP,KAAO8a,EAAeqY,UAyK/B,OArJA+C,EAAenJ,MAAQ,SAAUoH,EAAOmC,GAGpC,OAAOnC,EAAMz0B,QADU,SAAU8vB,EAAM+G,GAAY,OAAO/G,EAAK3zB,MAAK,WAAc,OAAO06B,EAASC,kBAC5DF,GAAW,gBAarDJ,EAAeO,YAAc,SAAUtC,EAAOuC,GAC1C,IAAK,IAAI32B,EAAM,EAAGA,EAAMo0B,EAAMj0B,OAAQH,IAAO,CACzC,IAAIib,EAAamZ,EAAMp0B,GAAKy2B,aAC5B,IAAI,QAAUxb,GAAa,CACvB,IAAI2b,EAAiBxC,EAAMvhC,MAAMmN,EAAM,GACvC,OAAOm2B,EAAenJ,MAAM4J,EAAgB3b,GAAYnf,KAAK66B,IAGrE,OAAOA,KAKXR,EAAeU,YAAc,SAAUzC,GACnCA,EAAMtiC,SAAQ,SAAU8S,GAAQ,OAAOA,EAAK6xB,iBAEhDN,EAAevjC,UAAUkkC,SAAW,SAAU7Y,GAC1CltB,KAAKisB,WAAWvX,OAAOmC,aAAamvB,qBAApChmC,CAA0DktB,IAE9DkY,EAAevjC,UAAU6jC,WAAa,WAClC,IAAIv1B,EAAQnQ,KACR6T,EAAO7T,KAAKgqB,eAChB,IAAInW,EAAK4uB,cAAT,CAEA,IAAIwD,EAAajmC,KAAKkmC,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI9lC,EAAUH,KAAKG,QACnB,yBAA0BH,KAAMA,KAAKisB,WAAY9rB,GACjD,IAEIgmC,EAAc,SAAUjZ,GAAO,OAAOrZ,EAAKwuB,UAAU4C,gBAAgB90B,EAA/B0D,CAAsCqZ,IAC5EkZ,EAAe,SAAU9/B,GAAU,OAAOuN,EAAKwuB,UAAU2C,iBAAiB70B,EAAhC0D,CAAuCvN,IACrF,IACI,IAAIA,EALkCuN,EAAKrT,SAASuB,KAAK5B,EAAQmD,KAAM6M,EAAM8b,WAAY9b,EAAMk1B,cAM/F,OAAKrlC,KAAKkP,KAAKg2B,cAAe,QAAU5+B,GAC7BA,EAAO+b,OANH,SAAU6K,GAAO,OAAO,cAAoBA,GAAK2X,eAM1B95B,KAAKq7B,EAAcD,GAG9CC,EAAa9/B,GAG5B,MAAO4mB,GAEH,OAAOiZ,EAAY,cAAoBjZ,IAE3C,QACQrZ,EAAK6uB,eAAiB7uB,EAAK2uB,aAAe3uB,EAAK6uB,aAC/C7uB,EAAK2qB,gBAajB4G,EAAevjC,UAAUwkC,iBAAmB,SAAU//B,GAClD,IAAI6J,EAAQnQ,KAEZ,OADiBA,KAAKkmC,4BAIlB,QAAU5/B,GAEHA,EAAOyE,MAAK,SAAU/G,GAAO,OAAOmM,EAAMk2B,iBAAiBriC,OAEtE,qBAAsBsC,EAAQtG,KAAKisB,WAAYjsB,KAAKG,UAErC,IAAXmG,EAEO,YAAkB,2BAA2Bu+B,aAEpC,IAAA3rB,IAAG,IAEnBotB,CAAchgC,GAEP,eAAqBA,GAAQu+B,iBAFxC,KASJO,EAAevjC,UAAUqkC,uBAAyB,WAC9C,IAAIxxB,EAAS1U,KAAKisB,WAAWvX,OAE7B,OAAIA,EAAOqkB,UACA,YAAkB,sBAAwBrkB,EAAOyG,IAAM,gCAAgC0pB,YAE9F7kC,KAAKisB,WAAWsa,SACT,cAAoB1B,YAI3B7kC,KAAKslC,eAEE,eAAqBtlC,KAAKG,QAAQ2lB,WAAW+e,iBAFxD,GAKJO,EAAevjC,UAAUiT,SAAW,WAChC,IAAe3U,EAANH,KAAmBG,QAAS6pB,EAA5BhqB,KAAgDgqB,eACrDzpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAWwkB,EAAexpB,UAC/M,OAAOD,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,IAMlE4/B,EAAeoB,cAAgB,SAAU3yB,GAAQ,OAAO,SAAUvN,GAC9D,OAAOuN,EAAKwyB,iBAAiB//B,KAMjC8+B,EAAeqB,oBAAsB,SAAU5yB,GAAQ,OAAO,SAAUvN,IACpE,QAAUA,IAAWA,EAAO+b,OAAM,SAAU6K,GAAO,OAAOrZ,EAAKkyB,SAAS,cAAoB7Y,SAOhGkY,EAAesB,UAAY,SAAU7yB,GAAQ,OAAO,SAAUxO,GAAS,OAAOwO,EAAKkyB,SAAS1gC,KAC5F+/B,EAAeuB,aAAe,SAAU9yB,GAAQ,OAAO,SAAUxO,GAAS,OAAO,QAAgBA,KACjG+/B,EAAewB,YAAc,SAAU/yB,GAAQ,OAAO,SAAUxO,GAC5D,MAAMA,IAEH+/B,EAlLwB,qgBCXnC,SAASyB,EAAmBj3B,GACxBA,EAAMk3B,cAAc,cAAoB,IAAUl3B,EAAM8E,QAAS,IACjE9E,EAAMk3B,cAAc,cAAoB,IAAYl3B,GAAQ,IAC5DA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,GAAQ,IAChEA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,EAAMxB,UAAW,IACzEwB,EAAMuc,WAAWprB,SAAQ,SAAU0M,GAC/BmC,EAAMk3B,cAAc,cAAoB,UAAWr5B,GAAQA,MAG5D,IAGHs5B,EAAoB,CAAC,eAAgB,KACrCC,GAAe,QAAQD,GAKhBE,EAAqB,SAAUr3B,GACtC,IAAIgzB,GAAQ,QAAOhzB,EAAMlB,eAAeE,OAAO,KAAS,IAAIA,OAAO,KAAO,IAEtEs4B,EAA4B,SAAU3pB,GACtC,OAAOypB,EAAazpB,EAAEgE,OAAS,cAAoBhE,EAAEgE,MAAO,MAAQhE,GAExEqlB,EAAM7hC,SAAQ,SAAUwN,GACpBA,EAAKwJ,YAAcxJ,EAAKwJ,YAAYpJ,IAAIu4B,+MCnB5CC,EAAiB,SAAUv3B,GAC3B,IAAIw3B,EAAWx3B,EAAMuf,KAAKkY,WAC1B,GAAKD,EAAL,CAEA,IAAI3uB,EAAS7I,EAAM8E,OAAOmC,aAW1B,OAAI,QAAWuwB,GACJ,YAAiBA,EAASx3B,IAAQ7E,KAAKq7B,GAE3CA,EAAagB,GAbpB,SAAShB,EAAa9/B,GAClB,GAAKA,EAEL,OAAIA,aAAkB,IACXA,GACP,QAASA,GACFmS,EAAOpS,OAAOC,EAAQsJ,EAAMxB,SAAUwB,EAAMzP,WACnDmG,EAAc,OAAKA,EAAe,OAC3BmS,EAAOpS,OAAOC,EAAc,OAAKsJ,EAAMuf,KAAM7oB,EAAe,QAAKsJ,EAAMxB,SAAUwB,EAAMzP,gBADlG,IChBR,SAASmnC,EAAwB3zB,GAC7B,OAAO,SAAUsY,EAAYxe,GAGzB,OAAO85B,EAFM95B,EAAMuG,UACCL,IACNsY,EAAYxe,IAYlC,IAAI+5B,EAAaF,EAAwB,UAarCG,EAAeH,EAAwB,YAavCI,EAAcJ,EAAwB,2MC7C/BK,EAAwB,IAU/BC,EAAmB,SAAUh4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,QAAS9nB,GAAO7E,KAAK,OAcnF88B,EAAmB,SAAUj4B,EAAOnC,GACpC,OAAO,IAAI,IAAemC,EAAMlB,cAAcygB,IAAIpb,WAAWtG,EAAMuG,WAAW0jB,YAAY,OAAQ9nB,GAAO7E,KAAK,OAe9G+8B,EAAmB,SAAUl4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,OAAQ9nB,GAAO7E,KAAK,OCnClFg9B,EAAoB,SAAU9b,GAC9B,IAAIllB,EAAK,OACLihC,EAAgB/b,EAAWzR,MAAM,YACrC,GAAKwtB,EAAc54B,OAEnB,OAAOrI,EAAG0U,IAAIusB,EAAcr5B,KAAI,SAAUmL,GAAQ,OAAO/S,EAAGkJ,KAAK6J,EAAKuB,YAAatQ,KAAK,OAexFk9B,EAAgB,SAAUhc,GAC1B,IAAI+b,EAAgB/b,EAAWzR,MAAM,YACjC0tB,EAAejc,EAAWzR,MAAM,WACpC,GAAKwtB,EAAc54B,QAAW84B,EAAa94B,OAA3C,CAEA,IAAItI,EAAQmlB,EAAWvX,OAAOqC,YAC9BmxB,EAAannC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMshC,qBAAqBD,MACvEH,EAAcjnC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMuhC,mBAAmBF,MACtErhC,EAAM8lB,SCzBN0b,EAAoB,SAAU14B,GAC9B,IAAI0I,EAAU1I,EAAM8E,OAAO4D,QAOvBiwB,EAAyB,WAErBjwB,EAAQ2T,aAAerc,IACvB0I,EAAQ2T,WAAa,OAE7Brc,EAAM7B,UAAU,IAXW,WACvBuK,EAAQ0T,sBAAsBxG,QAAQ5V,GACtC0I,EAAQwa,SAAWljB,EAAMmjB,MACzBza,EAAQwN,QAAUxN,EAAQwa,SAASplB,MACnC,QAAKkC,EAAMxB,SAAUkK,EAAQlK,UAOS,CAAEhH,SAAU,MACtDwI,EAAMnM,QAAQsH,KAAKw9B,EAAwBA,ICtB3CC,EAAY,SAAUvc,GACtB,IAAI9rB,EAAU8rB,EAAW9rB,UACrBsY,EAASwT,EAAWvX,OAAOmC,aAC3B6B,EAAauT,EAAWvX,OAAOyH,UAKnC,GAAuB,QAAnBhc,EAAQ4e,QAAoB5e,EAAQ0V,UAAY4C,EAAOqa,SAASsH,UAAW,CAC3E,IAAIqO,EAAa,CAAE1zB,QAA8B,YAArB5U,EAAQ0V,UACpC6C,EAAWjY,KAAKgY,EAAOqa,SAASsH,UAAU3oB,IAAKgH,EAAOrK,OAAQq6B,GAElE/vB,EAAW0D,QAAO,kWCPtB,SAASssB,EAAY94B,GACjB,IAAI+4B,EAAgB/4B,EAAMg5B,iBAC1B,GAAKD,EAAL,CAEAtgC,EAAA,0BAA6BuH,GAC7B,IAAIi5B,EAAUj5B,EAAM8E,OAAO4D,QAAQ2T,WAOnC,MAHsB,kBAAlB0c,GAAqCE,GACrCA,EAAQC,QAEL,cAAoBjE,aCf/B,SAASkE,EAAsBn5B,GAC3B,IAAKA,EAAMywB,QACP,MAAM,IAAI5tB,MAAM7C,EAAMvK,QAAQyP,YAG/B,ICaIk0B,EAAmB,CAC1BnzB,UAAU,EACVsqB,SAAU,KACV/gB,SAAS,EACT6pB,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,OAAQ,GACRtjB,QAAS,WAAc,OAAO,MAC9B/G,OAAQ,WAaRsqB,EAAmC,WAEnC,SAASA,EAAkBC,GAEvBtpC,KAAKupC,iBAAmB,EAExBvpC,KAAKwpC,YAAc,GAEnBxpC,KAAKsjC,iBAAmB,GAExBtjC,KAAKypC,eAAiB,GACtBzpC,KAAKspC,QAAUA,EACftpC,KAAK8G,MAAQwiC,EAAQvyB,YACrB/W,KAAK0pC,mBAAqB,GAC1B1pC,KAAKgK,YAAc,SAAqB,QAAIhK,MAAO,IAAI,QAAIA,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAK2pC,mBACL3pC,KAAK4pC,oBACL5pC,KAAK6pC,+BACLP,EAAQhxB,QAAQ0T,sBAAsBzG,QAAQ0hB,GAuLlD,OA9JAoC,EAAkBxnC,UAAUioC,SAAW,SAAUh6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkO,SAAW,SAAUD,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkoC,QAAU,SAAUj6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUmoC,OAAS,SAAUl6B,EAAUtP,EAAUL,KAInEkpC,EAAkBxnC,UAAUooC,SAAW,SAAUn6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUqoC,QAAU,SAAUp6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUsoC,SAAW,SAAUr6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkM,UAAY,SAAU+B,EAAUtP,EAAUL,KAItEkpC,EAAkBxnC,UAAUuoC,QAAU,SAAUt6B,EAAUtP,EAAUL,KAOpEkpC,EAAkBxnC,UAAUqT,QAAU,SAAUR,IAC5C,QAAO1U,KAAKsjC,kBAAkBviC,SAAQ,SAAUspC,GAC5C,OAAOA,EAAWtpC,SAAQ,SAAU8S,GAChCA,EAAK4uB,eAAgB,GACrB,QAAW4H,EAAYx2B,UAenCw1B,EAAkBxnC,UAAUL,OAAS,SAAUyyB,EAAUzH,GACrD,OAAO,IAAI,IAAWyH,EAAUzH,EAAaxsB,KAAKspC,UAGtDD,EAAkBxnC,UAAU+nC,kBAAoB,WAC5C,IAAIU,EAAQ,IACRC,EAAK,IACLC,EAAQxqC,KAAKypC,eACbgB,GAAc,EACdC,GAAc,EAClB1qC,KAAK2qC,aAAa,WAAYL,EAAMM,OAAQ,EAAGJ,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG3D,YAAa8D,GAC9G1qC,KAAK2qC,aAAa,WAAYL,EAAMO,OAAQ,EAAGL,EAAMrb,IACrDnvB,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,EAAGN,EAAMrb,IACjDnvB,KAAK2qC,aAAa,SAAUL,EAAMQ,IAAK,IAAKN,EAAMv8B,SALV,GAMxCjO,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrV,UACpDn1B,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,IAAKN,EAAMre,UACnDnsB,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrb,IACpDnvB,KAAK2qC,aAAa,YAAaL,EAAMS,QAAS,EAAGP,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,GAC9G1qC,KAAK2qC,aAAa,UAAWL,EAAM3F,MAAO,EAAG6F,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,IAG9GrB,EAAkBxnC,UAAU8nC,iBAAmB,WAC3C,IAAIqB,EAAQ,UAA2BrhB,EAAa,eACpD3pB,KAAKirC,gBAAgB,KAAMthB,GAC3B3pB,KAAKirC,gBAAgB,OAAQthB,GAC7B3pB,KAAKirC,gBAAgB,UAAWD,GAChChrC,KAAKirC,gBAAgB,WAAYD,GACjChrC,KAAKirC,gBAAgB,WAAYD,IAGrC3B,EAAkBxnC,UAAU8oC,aAAe,SAAUnlC,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QAC5H,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5C,IAAI7C,EAAY,IAAI,IAAoB78B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,GACvIllC,KAAKwpC,YAAY/oC,KAAK4hC,IACtB,QAAUriC,KAAMA,KAAMqiC,IAG1BgH,EAAkBxnC,UAAUi/B,WAAa,SAAUD,GAI/C,QAH0B,QAAUA,GAC9B7gC,KAAKwpC,YAAYlgC,QAAO,SAAU4F,GAAQ,OAAOA,EAAK0yB,YAAcf,KACpE7gC,KAAKwpC,YAAY1nC,SACI0pB,MAAK,SAAUiH,EAAGlV,GACzC,IAAI2tB,EAAazY,EAAEmP,UAAYrkB,EAAEqkB,UACjC,OAAsB,IAAfsJ,EAAmBzY,EAAEsS,UAAYxnB,EAAEwnB,UAAYmG,MAgB9D7B,EAAkBxnC,UAAUopC,gBAAkB,SAAUzlC,EAAM2lC,GAC1DnrC,KAAKypC,eAAejkC,GAAQ,CAAEA,KAAMA,EAAM1C,MAAOqoC,IAIrD9B,EAAkBxnC,UAAUihC,cAAgB,WACxC,OAAO9iC,KAAKypC,gBAGhBJ,EAAkBxnC,UAAUigC,SAAW,SAAUnuB,GAC7C,OAAO3T,KAAKsjC,iBAAiB3vB,IAGjC01B,EAAkBxnC,UAAUgoC,6BAA+B,WACvD,IAAIuB,EAAMprC,KAAK0pC,mBACf0B,EAAIC,gBAA6CrrC,KTzN5B8pC,SAAS,GAAIjD,GS0NlCuE,EAAIhS,QAAwCp5B,KF/MvB+P,SAAS,GAAI24B,EAAa,CAAEthC,UAAW,OEgN5DgkC,EAAI/G,QD7N+B,SAAUvX,GACjD,OAAOA,EAAkB/c,SAAS,GAAIg5B,EAAuB,CAAE3hC,UAAW,MC4NxDkkC,CAA8BtrC,MAE5CorC,EAAI/D,WR7MwB,SAAUva,GAC1C,OAAOA,EAAkBid,QAAQ,CAAE5a,GAAI,SAAU1hB,GAAS,QAASA,EAAM45B,aAAiBF,GQ4MrEoE,CAAuBvrC,MAExCorC,EAAIpB,OPtNoB,SAAUld,GACtC,OAAOA,EAAkBkd,OAAO,CAAE/7B,QAAS,SAAUR,GAAS,QAASA,EAAMu8B,SAAaxC,GOqNzEgE,CAAmBxrC,MAChCorC,EAAInB,SP1MsB,SAAUnd,GACxC,OAAOA,EAAkBmd,SAAS,CAAE9U,SAAU,SAAU1nB,GAAS,QAASA,EAAMw8B,WAAexC,GOyM5EgE,CAAqBzrC,MACpCorC,EAAIlB,QP9LqB,SAAUpd,GACvC,OAAOA,EAAkBod,QAAQ,CAAE/d,SAAU,SAAU1e,GAAS,QAASA,EAAMy8B,UAAcxC,GO6L3EgE,CAAoB1rC,MAElCorC,EAAIO,aNjO0B,SAAU7e,GAC5C,OAAOA,EAAkBid,QAAQ,GAAInC,EAAkB,CAAExgC,SAAUugC,IMgO5CiE,CAAyB5rC,MAC5CorC,EAAIS,YNnN0B,SAAU/e,GAC5C,OAAOA,EAAkBod,QAAQ,CAAE/d,UAAU,SAAI,IAAS0b,EAAkB,CAAEzgC,SAAUugC,IMkNlEmE,CAAyB9rC,MAC3CorC,EAAIW,WNpM0B,SAAUjf,GAC5C,OAAOA,EAAkBqd,SAAS,GAAIrC,EAAkB,CAAE1gC,SAAUugC,IMmM/CqE,CAAyBhsC,MAE1CorC,EAAIa,ULpO2B,SAAUnf,GAC7C,OAAOA,EAAkBqd,SAAS,GAAIpC,GKmOlBmE,CAA0BlsC,MAC1CorC,EAAInD,cL9MuB,SAAUnb,GACzC,OAAOA,EAAkB/e,UAAU,GAAIk6B,GK6MfkE,CAAsBnsC,MAE1CorC,EAAIgB,cJ3N2B,SAAUtf,GAC7C,OAAOA,EAAkBgd,SAAS,GAAIxB,GI0Nd+D,CAA0BrsC,MAE9CorC,EAAI5C,UHvOmB,SAAU1b,GACrC,OAAOA,EAAkB/e,UAAU,GAAIy6B,EAAW,CAAEphC,SAAU,OGsO1CklC,CAAkBtsC,MAElCorC,EAAIhf,UAAW,OAAqBpsB,OAEjCqpC,EA/M2B,mSChClCkD,EAA2B,WACV,SAASA,EAA2B73B,GACjD,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKouB,WAAa,IAAI,EAAAiD,WACtBrxB,KAAKkX,eAAgB,EACrBlX,KAAKwsC,oBAAqB,EAC1BxsC,KAAKysC,eAAgB,EACrBzsC,KAAK0sC,sBAAuB,EAC5B1sC,KAAKkV,QAAU,WAAc,OAAO/E,EAAMie,WAAWlZ,WAOtElV,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuE,OAAO2C,eAAe5B,YAUjEzV,KAAK2sC,WAAa,SAAUC,GAAa,OAAOz8B,EAAMuE,OAAO2C,eAAes1B,WAAWC,IAMvF5sC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMuE,OAAO2C,eAAew1B,QAM7D7sC,KAAKqV,UAAY,WAAc,OAAOlF,EAAMuE,OAAO2C,eAAehC,aAMlErV,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMuE,OAAO2C,eAAey1B,QAM7D9sC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMuE,OAAO2C,eAAe01B,YAwFrE,OA1EAR,EAAU1qC,UAAUmrC,gBAAkB,SAAUxoC,GAC5C,OAAQxE,KAAKwsC,oBAAqB,QAAUhoC,GAASA,EAAQxE,KAAKwsC,oBAmBtED,EAAU1qC,UAAUotB,oBAAsB,SAAUzqB,GAChD,IAAI,QAAUA,KAAoB,IAAVA,IAA4B,IAAVA,KAAoB,QAASA,GACnE,MAAM,IAAIiO,MAAM,0BAA4BjO,EAAQ,mDACxD,OAAQxE,KAAK0sC,sBAAuB,QAAUloC,GAASA,EAAQxE,KAAK0sC,sBAcxEH,EAAU1qC,UAAUorC,WAAa,SAAUzoC,GACvC,OAAQxE,KAAKysC,eAAgB,QAAUjoC,GAASA,EAAQxE,KAAKysC,eAgCjEF,EAAU1qC,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACnD,IAAItiB,EAAOlP,KAAKouB,WAAWlf,KAAK1J,EAAMiU,EAAY+X,GAClD,OAAQ,QAAU/X,GAAqBzZ,KAAPkP,GAE7Bq9B,EA1ImB,0SCf1BW,EAAsC,WAStC,OARAA,EAAW35B,OAAO3Q,QAAU,SAASic,GACjC,IAAK,IAAIzB,EAAGC,EAAI,EAAGkD,EAAIve,UAAUoN,OAAQiO,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIwd,KADTzd,EAAIpb,UAAUqb,GACO9J,OAAO1R,UAAUa,eAAeX,KAAKqb,EAAGyd,KACzDhc,EAAEgc,GAAKzd,EAAEyd,IAEjB,OAAOhc,IAEK1c,MAAMnC,KAAMgC,YAK5BmrC,EAA8B,WAC9B,SAASA,EAAaz4B,GAClB1U,KAAK0U,OAASA,EAWlB,OATAy4B,EAAatrC,UAAU+O,WAAa,SAAUvF,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE9E0/B,EAAatrC,UAAUoyB,SAAW,SAAU5oB,EAAI6D,EAAMzB,GAClD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,KAAcntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE5E0/B,EAAatrC,UAAUurC,WAAa,SAAU/hC,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAEvE0/B,EAbsB,GAsB7BE,EAAmC,WAEnC,SAASA,EAAmC34B,GACxC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAEd1U,KAAK07B,aAAe,IAAIyR,EAAantC,KAAK0U,QAE1C1U,KAAKstC,WAAa,IAClBttC,KAAKqtB,MAAQ,EAAAA,MAEbrtB,KAAKgtC,gBAAkB,SAAUxoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAOyhC,gBAAgBxoC,IAEhGxE,KAAKivB,oBAAsB,SAAUzqB,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0jB,oBAAoBzqB,IAExGxE,KAAKitC,WAAa,SAAUzoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0hC,WAAWzoC,IAEtFxE,KAAKkP,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpC,OAAOrhB,EAAMuE,OAAOuC,WAAW1L,OAAO2D,KAAK1J,EAAMiU,EAAY+X,IAAiBrhB,GA+CtF,OArCAk9B,EAAkBxrC,UAAUwF,QAAU,SAAUid,EAAS/Y,GACrD,IAAI+hB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAEnC6C,EAAS7C,IAAWA,EAAOkC,OAASlC,EAAO6C,OAC/C7C,EAAS6C,EAAS8+B,EAAS,CAAEz/B,MAAO,CAAEW,OAAQA,IAAY7C,GAAUA,EACpE,IAAIgiC,EAAe,CACfC,OAAQlgB,EAAUmf,cAClBO,gBAAiB1f,EAAUkf,mBAC3BiB,aAAcngB,EAAUpW,eAE5B,OAAO,IAAI,IAAWoN,EAASgJ,EAAUc,WAAYpuB,KAAK07B,cAAc,QAAO6R,EAAchiC,KASjG8hC,EAAkBxrC,UAAUs4B,UAAY,SAAUuT,GAE9C,KAAK,QAASA,GACV,OAAO,EACX,IAAIpnC,GAAS,EAKb,OAJA,QAAQ,eAAsB,SAAUtC,EAAKwB,IACrC,QAAWxB,KACXsC,EAASA,IAAU,QAAUonC,EAAOloC,MAAU,QAAWkoC,EAAOloC,QAEjEc,GAGX+mC,EAAkBxrC,UAAUnB,KAAO,WAC/B,IAAI4sB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAGvC,OAFA+hB,EAAUc,WAAW5I,SAAU,EAC/B8H,EAAUc,WAAWqD,kBACdzxB,MAEJqtC,EAjE2B,kOCjBlCM,EAA2B,WAE3B,SAASA,EAA2Bj5B,GAChC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAGd1U,KAAK4sB,KAAO,SAAU1W,GAAO,OAAO/F,EAAMuE,OAAOuC,WAAW2V,KAAK1W,IAEjElW,KAAKsc,OAAS,SAAUhH,GAAW,OAAOnF,EAAMuE,OAAOuC,WAAWqF,OAAOhH,IAEzEtV,KAAK+c,eAAiB,SAAU9Q,GAAS,OAAOkE,EAAMuE,OAAOuC,WAAW8F,eAAe9Q,IAEvFjM,KAAKgc,MAAQ,SAAU4xB,GAAY,OAAOz9B,EAAMuE,OAAOuC,WAAW+E,MAAM4xB,IAGxE5tC,KAAKuH,QAAU,SAAUwU,GACrB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMpV,QAAQwU,IAGjD/b,KAAK4c,UAAY,SAAUb,GACvB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMC,UAAUb,IAGnD/b,KAAKw/B,WAAa,SAAUjjB,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAM6iB,WAAWjjB,IAEpFvc,KAAKuc,KAAO,SAAUA,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAMJ,KAAKA,IAExEvc,KAAK2c,MAAQ,WAAc,OAAOxM,EAAMuE,OAAOuC,WAAW0F,MAAMA,SAEhE3c,KAAKwrB,KAAO,SAAUqiB,GAAa,OAAO19B,EAAMuE,OAAOuC,WAAW0F,MAAM6O,KAAKqiB,IAE7E7tC,KAAKiQ,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAAW,OAAOgQ,EAAMuE,OAAOuC,WAAW0F,MAAM1M,KAAKwrB,EAAS1f,EAAS5b,IAC/GH,KAAK6+B,eAAiB,IAAI,IAAenqB,GAyE7C,OAtEAi5B,EAAU9rC,UAAUua,OAAS,SAAU0xB,GACnC,IAAIphB,EAAO1sB,KAAK0U,OAAO0C,gBACnB02B,EACA9tC,KAAK6V,SAAW6W,EAAKjb,MAGrBib,EAAKjb,QAAUzR,KAAK6V,UAExB6W,EAAKjb,IAAIzR,KAAK6V,UAAU,IAY5B83B,EAAU9rC,UAAUpB,KAAO,SAAUstC,EAAY3/B,EAAQjO,GACrD,IAAI4U,EAAU5U,KAAaA,EAAQ4U,QACnC/U,KAAK0U,OAAOuC,WAAWxF,IAAIs8B,EAAWnmB,OAAOxZ,GAAU,IAAK2G,IAqBhE44B,EAAU9rC,UAAUmsC,KAAO,SAAUD,EAAY3/B,EAAQjO,GACrD,IAAIsR,EAAMs8B,EAAWnmB,OAAOxZ,GAC5B,GAAW,MAAPqD,EACA,OAAO,KACXtR,EAAUA,GAAW,CAAE8tC,UAAU,GACjC,IAAIpmC,EAAM7H,KAAK0U,OAAOuC,WAAW1L,OAC7B2iC,EAAUrmC,EAAIwN,YAKlB,GAJK64B,GAAmB,OAARz8B,IACZA,EAAM,IAAM5J,EAAI8kC,aAAel7B,GAEnCA,EA1GR,SAAwBA,EAAKy8B,EAASD,EAAUx4B,GAC5C,MAAiB,MAAbA,EACOhE,EACPy8B,GACO,QAAqBz4B,GAAYhE,EACxCw8B,EACOx4B,EAAS3T,MAAM,GAAK2P,EACxBA,EAmGG08B,CAAe18B,EAAKy8B,EAAS/tC,EAAQ8tC,SAAUpmC,EAAI4N,aACpDtV,EAAQ8tC,WAAax8B,EACtB,OAAOA,EAEX,IAAI28B,GAASF,GAAWz8B,EAAM,IAAM,GAChC48B,EAAUxmC,EAAIilC,OACdA,EAAoB,KAAZuB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAACxmC,EAAIklC,WAAY,MAAOllC,EAAIglC,OAAQC,EAAMsB,EAAO38B,GAAKwB,KAAK,KAEtEM,OAAO+6B,eAAeX,EAAU9rC,UAAW,oBAAqB,CAE5D6O,IAAK,WACD,OAAO1Q,KAAK0U,OAAOuC,WAAWoF,mBAElCkyB,YAAY,EACZC,cAAc,IAEXb,EA1GmB,2aCJ1Bc,EAAgC,WAChC,SAASA,EAAe/5B,GACpB1U,KAAK0U,OAASA,EAiKlB,OA/JA+5B,EAAe5sC,UAAUwF,QAAU,SAAU2J,GACzC,OAAOhR,KAAK0U,OAAOE,kBAAkBvN,QAAQ2J,IAEjDy9B,EAAe5sC,UAAUL,OAAS,SAAUsb,EAAMf,GAC9C,IAAI5L,EAAQnQ,KACRy9B,EAAU,YAAqBD,EAAqB,uBACpDkR,GAAW,QAAQ,CACnB,CAAC,KAAU,SAAUC,GAAS,OAAOD,EAASv+B,EAAM9I,QAAQsnC,MAC5D,EAAC,IAAAz1B,IAAG,KAAa,SAAUy1B,GAAS,OAAOx+B,EAAMy+B,eAAeD,EAAO5yB,KACvE,EAAC,IAAAkI,IAAGwZ,EAASD,GAAqB,SAAUmR,GAAS,OAAOx+B,EAAM0+B,UAAUF,EAAOx+B,EAAMuE,UACzF,EAAC,IAAAwE,IAAG/P,QAAS,SAAUwlC,GAAS,OAAOx+B,EAAM2+B,WAAWH,EAAO5yB,KAC/D,CAAC,KAAY,SAAU4yB,GAAS,OAAO,IAAIlyB,EAAYkyB,EAAO5yB,OAE9DQ,EAAOmyB,EAAS5xB,GACpB,IAAKP,EACD,MAAM,IAAI9J,MAAM,4BACpB,OAAO8J,GAsCXkyB,EAAe5sC,UAAU+sC,eAAiB,SAAUb,EAAYhyB,GAC5D,IAAIgzB,EAAWhzB,GACX,QAASA,KACTA,EAAU/b,KAAK0U,OAAOE,kBAAkBvN,QAAQ0U,KAChD,IAAA7C,IAAG,IAAH,CAAe6C,KACfgzB,EAAW,SAAU/yB,GAAS,OAAOD,EAAQ6L,OAAO5L,KAiBxD,IAAIgzB,EAAU,CAAEjB,WAAYA,EAAYkB,cAPxC,SAAuB7gC,GACnB,IAAI8gC,EAAWnB,EAAW1a,aAAa/pB,QAAO,SAAU0F,GAAS,OAAOA,EAAM4f,cAC9E,OAAKsgB,EAAS9/B,OAEA8/B,EAAS5lC,QAAO,SAAU0F,GAAS,OAAOZ,EAAOY,EAAM3D,OACtD+D,OAAS8/B,EAAS9/B,OAFtB,MAIuDF,KAAM,cAC5E,OAAO,QAAO,IAAIuN,GAjBlB,SAA2BhL,GACvB,IAAIrD,EAAS2/B,EAAWtkC,KAAKgI,EAAItJ,KAAMsJ,EAAI09B,OAAQ19B,EAAIqgB,MACvD,OAAOic,EAAWre,UAAUthB,IAAWA,IAeM2gC,GAAWC,IAahEP,EAAe5sC,UAAUgtC,UAAY,SAAUO,EAAa16B,GACxD,IAAIjH,EAAQ,uBAA+B2hC,GAAeA,EAAYp7B,UAAYo7B,EAe9EJ,EAAU,CAAEvhC,MAAOA,EAAOyB,KAAM,SACpC,OAAO,QAAOlP,KAAK4uC,eAAenhC,EAAMgE,KAR1B,SAAUuK,GACpB,IAAIvD,EAAS/D,EAAOmC,aAChByB,EAAU5D,EAAO4D,QACjBG,EAAOu1B,KAAKvgC,EAAOuO,KAAWvD,EAAOu1B,KAAK11B,EAAQwN,QAASxN,EAAQlK,SACnEqK,EAAO42B,aAAa5hC,EAAOuO,EAAO,CAAEoD,SAAS,EAAML,OAAQ,WAIZiwB,IAkC3DP,EAAe5sC,UAAUitC,WAAa,SAAU7rB,EAAQlH,GACpD,GAAIkH,EAAOnF,QAAUmF,EAAOqsB,OACxB,MAAM,IAAI78B,MAAM,4CAMpB,IAIIs8B,GAAW,QAAShzB,GAJJ,SAAUC,GAE1B,OAAOD,EAAQhH,QAAQ,kBAAkB,SAAUC,EAAG8H,GAAQ,OAAOd,EAAe,MAATc,EAAe,EAAIyyB,OAAOzyB,QAEtDf,EAE/CizB,EAAU,CAAE/rB,OAAQA,EAAQ/T,KAAM,UACtC,OAAO,QAAO,IAAIuN,GAFU,SAAUhL,GAAO,OAAOwR,EAAOxZ,KAAKgI,EAAItJ,QAEf4mC,GAAWC,IAEpEP,EAAee,UAAY,SAAUv1B,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWkpB,OAAM,SAAUt9B,GAAO,OAAO,QAAUoU,EAAIpU,QAC5H4oC,EAnKwB,GA4K/BhyB,EACA,SAAqBT,EAAOD,GACxB,IAAI5L,EAAQnQ,KACZA,KAAKgc,MAAQA,EACbhc,KAAKkP,KAAO,MACZlP,KAAKivC,cAAgB,SAAUjzB,GAAS,OAAO,EAAI7L,EAAMgL,KACzDnb,KAAK+b,QAAUA,GAAW,2GCnK9B0zB,sPAaJ,SAASC,EAAa3zB,GAClB,MAAK,QAAWA,KAAa,QAASA,KAAa,IAAA7C,IAAG,EAAA2mB,YAAH,CAAgB9jB,IAAa,EAAA8jB,YAAA,MAAkB9jB,IAC9F,MAAM,IAAItJ,MAAM,4FAEpB,OAAO,QAAWsJ,GAAWA,GAAU,QAAIA,GAhB/C0zB,EAAoB,SAAUhyB,EAAGmB,GAC7B,IAAI+wB,EA5BW,SAAUlyB,EAAGmB,GAAK,OAAQA,EAAExX,UAAY,IAAMqW,EAAErW,UAAY,GA4BjEwoC,CAAanyB,EAAGmB,GAC1B,OAAY,IAAR+wB,GAGQ,KADZA,EA9BW,SAAUlyB,EAAGmB,GACxB,IAAIixB,EAAU,CAAE7E,MAAO,EAAG8E,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQJ,EAAQpyB,EAAEvO,OAAS,IAAM2gC,EAAQjxB,EAAE1P,OAAS,GA4B9CghC,CAASzyB,EAAGmB,KAIN,KADZ+wB,EA7BiB,SAAUlyB,EAAGmB,GAC9B,OAAQnB,EAAEswB,YAAenvB,EAAEmvB,WAAiB,YAAmBtwB,EAAEswB,WAAYnvB,EAAEmvB,YAAvC,EA4BlCoC,CAAe1yB,EAAGmB,IAJb+wB,EAtBF,SAAUlyB,EAAGmB,GAEtB,IAAIwxB,EAAmB,CAAEpF,OAAO,EAAM8E,YAAY,GAElD,OADYM,EAAiB3yB,EAAEvO,OAASkhC,EAAiBxxB,EAAE1P,MAC5C,GAAKuO,EAAEtC,KAAO,IAAMyD,EAAEzD,KAAO,GAyBrCk1B,CAAO5yB,EAAGmB,IAkBrB,IAAI0xB,EAA0B,WAE1B,SAASA,EAA0B57B,GAC/B1U,KAAK0U,OAASA,EACG1U,KAAKuwC,QAAUd,EACfzvC,KAAKwwC,OAAS,GACdxwC,KAAKywC,IAAM,EAC5BzwC,KAAK6+B,eAAiB,IAAI,IAAenqB,GA8Q7C,OA3QA47B,EAASzuC,UAAUqT,QAAU,SAAUR,GACnC1U,KAAKwwC,OAAS,UACPxwC,KAAK0wC,cAqChBJ,EAASzuC,UAAU0F,QAAU,SAAUwU,GACnC,IAAI40B,EAAYjB,EAAa3zB,GAI7B/b,KAAKuc,KAAKvc,KAAK6+B,eAAer9B,QAHhB,SAAUosC,EAAUl5B,GAC9B,OAAmD,IAA5CA,EAAO4D,QAAQyT,kBAAkBnG,UAAkB,QAAQnc,KAAKmkC,EAASzlC,QAEtCwoC,KA6ClDL,EAASzuC,UAAU+a,UAAY,SAAUb,GACrC,IAAI40B,EAAYjB,EAAa3zB,GAC7B/b,KAAK0wC,aAAe1wC,KAAK6+B,eAAer9B,QAAO,SAAI,GAAOmvC,GAC1D3wC,KAAK4wC,SAAU,GAOnBN,EAASzuC,UAAU29B,WAAa,SAAUjjB,IACtC,QAAWvc,KAAKwwC,OAAQj0B,IAc5B+zB,EAASzuC,UAAU0a,KAAO,SAAUA,GAChC,IAAIpM,EAAQnQ,KACZ,IAAK,cAAyBuc,GAC1B,MAAM,IAAI9J,MAAM,gBAKpB,OAJA8J,EAAKpB,IAAMnb,KAAKywC,MAChBl0B,EAAKnV,SAAWmV,EAAKnV,UAAY,EACjCpH,KAAKwwC,OAAO/vC,KAAK8b,GACjBvc,KAAK4wC,SAAU,EACR,WAAc,OAAOzgC,EAAMqvB,WAAWjjB,KAOjD+zB,EAASzuC,UAAU8a,MAAQ,WAEvB,OADA3c,KAAK6wC,eACE7wC,KAAKwwC,OAAOpuC,OAAOpC,KAAK0wC,aAAe,CAAC1wC,KAAK0wC,cAAgB,KA4CxEJ,EAASzuC,UAAU2pB,KAAO,SAAUqiB,GAIhC,IAHA,IAAIiD,EAAS9wC,KAAK+wC,WAAW/wC,KAAKwwC,OAASxwC,KAAKuwC,QAAU1C,GAAa7tC,KAAKuwC,SAExES,EAAQ,EACH3zB,EAAI,EAAGA,EAAIyzB,EAAO1hC,OAAQiO,IAC/ByzB,EAAOzzB,GAAG4zB,OAASD,EACf3zB,EAAIyzB,EAAO1hC,OAAS,GAAgD,IAA3CpP,KAAKuwC,QAAQO,EAAOzzB,GAAIyzB,EAAOzzB,EAAI,KAC5D2zB,IAGRhxC,KAAKwwC,OAASM,EACd9wC,KAAK4wC,SAAU,GAGnBN,EAASzuC,UAAUgvC,aAAe,WAC9B7wC,KAAK4wC,SAAW5wC,KAAKwrB,QAGzB8kB,EAASzuC,UAAUkvC,WAAa,SAAUrxB,EAAKmuB,GAC3C,IAAIqD,EAAexxB,EAAI/Q,KAAI,SAAUuS,EAAMjS,GAAO,MAAO,CAAGiS,KAAMA,EAAMjS,IAAKA,MAK7E,OAJAiiC,EAAa1lB,MAAK,SAAU2lB,EAAUC,GAClC,IAAIC,EAAUxD,EAAUsD,EAASjwB,KAAMkwB,EAASlwB,MAChD,OAAmB,IAAZmwB,EAAgBF,EAASliC,IAAMmiC,EAASniC,IAAMoiC,KAElDH,EAAaviC,KAAI,SAAU2iC,GAAW,OAAOA,EAAQpwB,SA6DhEovB,EAASzuC,UAAUoO,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAClD,IAAIoc,EAAOvc,KAAK6+B,eAAer9B,OAAOi6B,EAAS1f,GAI/C,OAHI,QAAU5b,GAAWA,EAAQiH,YAC7BmV,EAAKnV,SAAWjH,EAAQiH,UAC5BpH,KAAKuc,KAAKA,GACHA,GAEJ+zB,EArRkB,8VCpDzBiB,EAA4B,WAE5B,SAASA,EAA4B78B,GACjC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKqc,mBAAoB,EAM1Crc,KAAK2c,MAAQ,IAAI,IAAS3c,KAAK0U,QAM/B1U,KAAKuL,OAAS,IAAI,IAAUvL,KAAK0U,QAsDjC1U,KAAKyR,IAAM,SAAU+/B,EAAQz8B,EAAStH,GAClC,OAAO0C,EAAMuE,OAAO0C,gBAAgB3F,IAAI+/B,EAAQz8B,EAAStH,IAS7DzN,KAAKmI,KAAO,WAAc,OAAOgI,EAAMuE,OAAO0C,gBAAgBjP,QAQ9DnI,KAAKmvC,OAAS,WAAc,OAAOh/B,EAAMuE,OAAO0C,gBAAgB+3B,UAQhEnvC,KAAK8xB,KAAO,WAAc,OAAO3hB,EAAMuE,OAAO0C,gBAAgB0a,QAgB9D9xB,KAAKmV,SAAW,SAAU3U,GAAY,OAAO2P,EAAMuE,OAAO0C,gBAAgBjC,SAAS3U,IA4IvF,OAzIA+wC,EAAW1vC,UAAUqT,QAAU,WAC3BlV,KAAKsc,QAAO,GACZtc,KAAK2c,MAAMzH,WAOfq8B,EAAW1vC,UAAU8qB,MAAQ,WACzB,MAAO,CAAExkB,KAAMnI,KAAKmI,OAAQgnC,OAAQnvC,KAAKmvC,SAAUrd,KAAM9xB,KAAK8xB,SAsBlEyf,EAAW1vC,UAAU+qB,KAAO,SAAU1W,GAClC,IAAIA,IAAOA,EAAI5T,iBAAf,CAEA,IAAI+oB,EAAKrrB,KAAK0U,OAAQuC,EAAaoU,EAAGpU,WAAYJ,EAAewU,EAAGxU,aAChEpF,EAAM,CAAEtJ,KAAM8O,EAAW9O,OAAQgnC,OAAQl4B,EAAWk4B,SAAUrd,KAAM7a,EAAW6a,QAC/E2f,EAAOzxC,KAAKgc,MAAMvK,IACJ,QAAQ,CACtB,CAAC,KAAU,SAAU+/B,GAAU,OAAOv6B,EAAWxF,IAAI+/B,GAAQ,KAC7D,CAAC,EAAA3R,YAAA,MAAmB,SAAU3sB,GAAO,OAAO2D,EAAa66B,GAAGx+B,EAAIzF,MAAOyF,EAAI9E,OAAQ8E,EAAI/S,WACvF,EAAC,IAAA+Y,IAAG,EAAA2mB,aAAc,SAAUx5B,GAAU,OAAOwQ,EAAa66B,GAAGrrC,EAAOoH,QAASpH,EAAO+H,SAAU/H,EAAOlG,cAEzGwxC,CAAYF,GAAQA,EAAKl1B,KAAKR,QAAQ01B,EAAKz1B,MAAOvK,EAAKzR,KAAK0U,WAwBhE68B,EAAW1vC,UAAUya,OAAS,SAAUhH,GACpC,IAAInF,EAAQnQ,KACZ,IAAgB,IAAZsV,EAKA,OAAQtV,KAAK4xC,iBACT5xC,KAAK4xC,kBAAoB5xC,KAAK0U,OAAOuC,WAAW9B,UAAS,SAAUe,GAAO,OAAO/F,EAAMyc,KAAK1W,MALhGlW,KAAK4xC,kBAAoB5xC,KAAK4xC,0BACvB5xC,KAAK4xC,kBA+BpBL,EAAW1vC,UAAUkb,eAAiB,SAAU9Q,QAC9BkI,IAAVlI,IACAA,GAAQ,GACZjM,KAAKqc,kBAAoBpQ,GAQ7BslC,EAAW1vC,UAAUma,MAAQ,SAAUvK,GAEnCA,GAAM,QAAO,CAAEtJ,KAAM,GAAIgnC,OAAQ,GAAIrd,KAAM,IAAMrgB,GAYjD,IAXA,IAUIggC,EARsBl1B,EAClBP,EAHJW,EAAQ3c,KAAK2c,MAAMA,QAWdU,EAAI,EAAGA,EAAIV,EAAMvN,UAElBqiC,GAAQA,EAAKl1B,KAAK00B,SAAWt0B,EAAMU,GAAG4zB,QAFZ5zB,IAAK,CAInC,IAAIyI,QAZA9J,GAAAA,GADkBO,EAaEI,EAAMU,IAZbrB,MAAMvK,EALfzR,KAK0B0U,UAClB,CAAEsH,MAAOA,EAAOO,KAAMA,EAAMs1B,OAAQt1B,EAAK0yB,cAAcjzB,KAavEy1B,GAAQA,GAAS3rB,GAAWA,EAAQ+rB,OAASJ,EAAKI,OAAU/rB,EAAU2rB,EAE1E,OAAOA,GAEJF,EA7PoB,yXCJ3BO,EAAsC,WACtC,SAASA,EAAqBp9B,EAAQq9B,GAClC,IAAI5hC,EAAQnQ,KACZA,KAAK+xC,gBAAkBA,EACvB/xC,KAAKgyC,WAAa,GAClBhyC,KAAKiyC,UAAY,SAAU/7B,GAAO,OAAO/F,EAAM6hC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGoL,OAC5FlW,KAAK8xB,KAAO,WAAc,OAAO,QAAS3hB,EAAM+hC,QAAQpgB,MACxD9xB,KAAKmI,KAAO,WAAc,OAAO,QAASgI,EAAM+hC,QAAQ/pC,MACxDnI,KAAKmvC,OAAS,WAAc,OAAO,SAAU,QAASh/B,EAAM+hC,QAAQ/C,SACpEnvC,KAAKmyC,UAAY,cACjBnyC,KAAKoyC,SAAW,aAoBpB,OAlBAN,EAAqBjwC,UAAU4P,IAAM,SAAUA,EAAKsD,GAQhD,YAPgB,IAAZA,IAAsBA,GAAU,IAChC,QAAUtD,IAAQA,IAAQzR,KAAKkyC,SAC/BlyC,KAAKmpB,KAAK,KAAM,KAAM1X,EAAKsD,GACvB/U,KAAK+xC,iBACL/xC,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG,CAAE2G,IAAKA,SAG1D,QAASzR,OAEpB8xC,EAAqBjwC,UAAUsT,SAAW,SAAUrK,GAChD,IAAIqF,EAAQnQ,KAEZ,OADAA,KAAKgyC,WAAWvxC,KAAKqK,GACd,WAAc,OAAO,QAAWqF,EAAM6hC,WAAYlnC,KAE7DgnC,EAAqBjwC,UAAUqT,QAAU,SAAUR,IAC/C,QAAS1U,KAAKgyC,aAEXF,EA9B8B,2LCDrCO,EAAuC,WACvC,SAASA,EAAsB39B,EAAQ49B,QAClB,IAAbA,IAAuBA,GAAW,GACtCtyC,KAAKsyC,SAAWA,EAChBtyC,KAAK0V,eAAYvB,EACjBnU,KAAKuyC,YAAc,GAmCvB,OAjCAF,EAAsBxwC,UAAUirC,KAAO,WACnC,OAAIj3B,SAASi3B,KACFyC,OAAO15B,SAASi3B,MAEA,UAApB9sC,KAAK+sC,WAAyB,IAAM,IAE/CsF,EAAsBxwC,UAAUkrC,SAAW,WACvC,OAAOl3B,SAASk3B,SAASh4B,QAAQ,KAAM,KAE3Cs9B,EAAsBxwC,UAAUgrC,KAAO,WACnC,OAAOh3B,SAAS28B,UAEpBH,EAAsBxwC,UAAUwT,UAAY,WACxC,OAAOrV,KAAKsyC,UAEhBD,EAAsBxwC,UAAU8qC,WAAa,SAAUC,GACnD,OAAO,QAAUA,GAAc5sC,KAAKuyC,YAAc3F,EAAa5sC,KAAKuyC,aAExEF,EAAsBxwC,UAAU4T,SAAW,SAAUu4B,GAKjD,OAJI,QAAUA,KACVhuC,KAAK0V,UAAYs4B,IACjB,QAAYhuC,KAAK0V,aACjB1V,KAAK0V,UAAY1V,KAAKyyC,eACnBzyC,KAAK0V,WAEhB28B,EAAsBxwC,UAAU4wC,YAAc,WAC1C,IAAIC,EAAUrsB,SAASssB,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQ1E,KACZ0E,EAAQ1E,KAAKj5B,QAAQ,uBAAwB,IAEjD/U,KAAKsyC,SAAW,IAAMz8B,SAAS/B,UAAY,KAEtDu+B,EAAsBxwC,UAAUqT,QAAU,aACnCm9B,EAxC+B,uHCDlCO,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAMnFC,EAAqC,SAAUC,GAE/C,SAASD,EAAoBv+B,GACzB,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAU1U,KAEhD,OADA,sBAAsB,aAAcmQ,EAAM8hC,WAAW,GAC9C9hC,EAYX,OAhBA0iC,EAAUI,EAAqBC,GAM/BD,EAAoBpxC,UAAUqwC,KAAO,WACjC,OAAO,QAAYlyC,KAAKmyC,UAAUrgB,OAEtCmhB,EAAoBpxC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAC9D/U,KAAKmyC,UAAUrgB,KAAOrgB,GAE1BwhC,EAAoBpxC,UAAUqT,QAAU,SAAUR,GAC9Cw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,aAAc1U,KAAKiyC,YAEzCgB,EAjB6B,CAkBtC,yYC/BEG,EACA,WACI,IAAIjjC,EAAQnQ,KACZA,KAAKkV,QAAU,KACflV,KAAK0V,UAAY,GACjB1V,KAAKqzC,MAAQ,GACbrzC,KAAKszC,UAAY,OACjBtzC,KAAKuzC,MAAQ,YACbvzC,KAAKuyC,YAAc,GACnBvyC,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMkjC,OACvCrzC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMmjC,WAC3CtzC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMojC,OACvCvzC,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuF,WAC3C1V,KAAKqV,UAAY,WAAc,OAAO,GACtCrV,KAAK2sC,WAAa,SAAU6G,GAAU,OAAQ,QAAUA,GAAWrjC,EAAMoiC,YAAciB,EAAUrjC,EAAMoiC,oIChBvGK,8EADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAKnFS,EAAuC,SAAUP,GAEjD,SAASO,EAAsB/+B,GAC3B,OAAOw+B,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAQ9C,OAVA6yC,EAAUY,EAAuBP,GAIjCO,EAAsB5xC,UAAUqwC,KAAO,WACnC,OAAOlyC,KAAK0zC,MAEhBD,EAAsB5xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAChE/U,KAAK0zC,KAAOjiC,GAETgiC,EAX+B,CAYxC,0tBCZ8B,QAAsB,4BAA4B,EAAO,IAAqB,MAEzE,QAAsB,6BAA6B,EAAM,IAA0B,MAEtF,QAAsB,0BAA0B,EAAO,IAAuB,8HClBxGb,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAUnFW,EAA0C,SAAUT,GAEpD,SAASS,EAAyBj/B,GAC9B,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAG/C,OAFAmQ,EAAMyjC,QAAUl/B,EAAOuC,WAAW1L,OAClC,sBAAsB,WAAY4E,EAAM8hC,WAAW,GAC5C9hC,EA8CX,OAnDA0iC,EAAUc,EAA0BT,GAuBpCS,EAAyB9xC,UAAUgyC,eAAiB,WAChD,OAAO,QAAqB7zC,KAAK4zC,QAAQn+B,aAE7Ck+B,EAAyB9xC,UAAUqwC,KAAO,WACtC,IAAI7mB,EAAKrrB,KAAKmyC,UAAWr+B,EAAWuX,EAAGvX,SAAUge,EAAOzG,EAAGyG,KAAMqd,EAAS9jB,EAAG8jB,OAC7EA,GAAS,QAAWA,GAAQ,GAC5Brd,GAAO,QAAUA,GAAM,GACvB,IAAIgiB,EAAa9zC,KAAK6zC,iBAClBE,EAAqBjgC,IAAa9T,KAAK4zC,QAAQn+B,WAC/Cu+B,EAAiBlgC,EAASiT,OAAO,EAAG+sB,EAAW1kC,UAAY0kC,EAE/D,OADAhgC,EAAWigC,EAAqB,IAAMC,EAAiBlgC,EAASmmB,UAAU6Z,EAAW1kC,QAAU0E,IAC5Eq7B,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE1E6hB,EAAyB9xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GACnE,IAAI++B,EAAa9zC,KAAK6zC,iBAClBzF,EAAQ38B,GAAkB,MAAXA,EAAI,GAAa,IAAM,GACtCwiC,EAAkB,KAARxiC,GAAsB,MAARA,EAAczR,KAAK4zC,QAAQn+B,WAAaq+B,EAAa1F,EAAQ38B,EACrFsD,EACA/U,KAAKoyC,SAAS8B,aAAazmC,EAAO0lC,EAAOc,GAGzCj0C,KAAKoyC,SAAS+B,UAAU1mC,EAAO0lC,EAAOc,IAG9CN,EAAyB9xC,UAAUqT,QAAU,SAAUR,GACnDw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,WAAY1U,KAAKiyC,YAEvC0B,EApDkC,CAqD3C,4UCxESS,EAAmB,SAAUC,EAAOhpB,GAC3C,IAAIxlB,EAAMwlB,EAAG,GAAIrnB,EAAMqnB,EAAG,GAU1B,OATKgpB,EAAM3xC,eAAemD,IAGjB,QAAQwuC,EAAMxuC,IACnBwuC,EAAMxuC,GAAKpF,KAAKuD,GAGhBqwC,EAAMxuC,GAAO,CAACwuC,EAAMxuC,GAAM7B,GAN1BqwC,EAAMxuC,GAAO7B,EAQVqwC,GAEAC,EAAY,SAAUC,GAC7B,OAAOA,EAAYzxB,MAAM,KAAKxZ,OAAO,MAAUqF,IAAI,MAAYC,OAAOwlC,EAAkB,KAErF,SAASla,EAASzoB,GACrB,IAAI+iC,EAAgB,SAAUllC,GAAK,OAAOA,GAAK,IAC3C+b,GAAK,QAAU5Z,GAAK9C,IAAI6lC,GAAgBC,EAAappB,EAAG,GAAIyG,EAAOzG,EAAG,GACtEC,GAAK,QAAWmpB,GAAY9lC,IAAI6lC,GACpC,MAAO,CAAErsC,KADkDmjB,EAAG,GACzC6jB,OADsD7jB,EAAG,GACzCwG,KAAMA,EAAMrgB,IAAKA,GAEnD,IAAIijC,EAAW,SAAUC,GAC5B,IAAIxsC,EAAOwsC,EAAIxsC,OACXysC,EAAeD,EAAIxF,SACnBrd,EAAO6iB,EAAI7iB,OACXqd,EAAS57B,OAAOC,KAAKohC,GACpBjmC,KAAI,SAAU9I,GACf,IAAImJ,EAAQ4lC,EAAa/uC,GAEzB,QADW,QAAQmJ,GAASA,EAAQ,CAACA,IACzBL,KAAI,SAAU3K,GAAO,OAAO6B,EAAM,IAAM7B,QAEnD4K,OAAO,KAAS,IAChBqE,KAAK,KACV,OAAO9K,GAAQgnC,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE/D,SAAS+iB,EAAsBrvC,EAAM0oC,EAAS4G,EAAcC,GAC/D,OAAO,SAAU38B,GACb,IAAIX,EAAWW,EAAShB,gBAAkB,IAAI09B,EAAa18B,GACvD48B,EAAiB58B,EAASf,eAAiB,IAAI09B,EAAmB38B,EAAU81B,GAKhF,MAAO,CAAE1oC,KAAMA,EAAMiS,QAASA,EAASu9B,cAAeA,EAAe9/B,QAJrE,SAAiBR,GACbA,EAAOQ,QAAQuC,GACf/C,EAAOQ,QAAQ8/B,kaCvBvBl6B,EAA6B,WAE7B,SAASA,EAA6BpG,GAClC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKi1C,SAAW,GAChBj1C,KAAKk1C,aAAe,GACpBl1C,KAAKm1C,qBAAuB,GAC5Bn1C,KAAKgyC,WAAa,GAEnChyC,KAAKgK,WAAa,CACdC,iBAAkBjK,KAAKiK,iBAAiB3G,KAAKtD,MAC7CgX,mBAAoBhX,KAAKgX,mBAAmB1T,KAAKtD,MACjDo1C,kBAAmB,SAAU/pC,GAAM,OAAO,QAAK8E,EAAM8kC,UAAU,SAAUn7B,GAAQ,OAAO3J,EAAMuE,OAAOyG,IAAM,IAAMrB,EAAKzO,KAAOA,MAC7HgqC,mBAAoB,WAAc,OAAOllC,EAAM8kC,UAC/CK,mBAAoB,WAAc,OAAOnlC,EAAM+kC,cAC/CK,QAAS,SAAUpX,GAEf,OADAhuB,EAAM6hC,WAAWvxC,KAAK09B,GACf,WAAc,OAAO,QAAWhuB,EAAM6hC,WAAY7T,MAwPrE,OAzOArjB,EAAY06B,sBAAwB,SAAU3kC,EAAS4kC,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY3yB,MAAM,KAClC9H,EAAa06B,EAAc,IAAM,WACjCx6B,GAAsB,QAASw6B,EAAc,IAAMA,EAAc,GAAK,IAGtEC,EAAwB,wBAAwBlsC,KAAKuR,GAYzD,GAXI26B,IAEAz6B,EAAsBy6B,EAAsB,GAC5C36B,EAAa26B,EAAsB,IAEV,MAAzB36B,EAAWvV,OAAO,KAClBuV,EAAaA,EAAW+L,OAAO,GAC/B7L,EAAsB,IAGN,kBACFzR,KAAKyR,GAAsB,CACzC,IAAI06B,EAAc16B,EAAoB4H,MAAM,KAAKlU,QAAO,SAAUinC,EAAQvmC,GAAK,OAAOumC,EAAOz7B,SAAWvJ,GACxGqK,EAAsB06B,EAAYpwC,SAEL,MAAxB0V,IACLA,EAAsBrK,EAAQrL,MAElC,MAAO,CAAEwV,WAAYA,EAAYE,oBAAqBA,IAG1DJ,EAAYjZ,UAAUoI,iBAAmB,SAAU4G,GAC/C,OAAQ7Q,KAAK81C,aAAejlC,GAAW7Q,KAAK81C,cAGhDh7B,EAAYjZ,UAAUmV,mBAAqB,SAAU++B,EAAU71C,GAC3DF,KAAKm1C,qBAAqBY,GAAY71C,GAE1C4a,EAAYjZ,UAAU2yB,iBAAmB,SAAUrsB,EAAMozB,GACrD,IAAIya,EAAah2C,KAAKm1C,qBAAqB5Z,EAAKnwB,OAChD,IAAK4qC,EACD,MAAM,IAAIvjC,MAAM,2DAA6D8oB,EAAKnwB,OACtF,IAAI6qC,EAAOD,EAAW7tC,EAAMozB,GAC5B,OAAO,QAAQ0a,GAAQA,EAAO,CAACA,IAUnCn7B,EAAYjZ,UAAUumC,qBAAuB,SAAU19B,GACnD,2BAA4B,cAAeA,IAC3C,QAAW1K,KAAKk1C,aAAcxqC,IAElCoQ,EAAYjZ,UAAUwmC,mBAAqB,SAAU39B,GACjD,2BAA4B,iBAAkBA,GAC9C1K,KAAKk1C,aAAaz0C,KAAKiK,IAE3BoQ,EAAYjZ,UAAU+qB,KAAO,WACzB,IAAIzc,EAAQnQ,KACRk2C,EAAel2C,KAAKi1C,SAAStmC,KAAI,SAAU4c,GAAO,MAAO,CAACA,EAAIjgB,IAAKigB,MAAS3c,OAAO,KAAY,IASnG,SAASunC,EAAgB5qC,GAErB,IADA,IAAIsF,EAAUtF,EAAOxD,SAASgC,SAAUG,EAAQ,IACvCA,GAAS2G,EAAQuJ,QACtBvJ,EAAUA,EAAQuJ,OACtB,OAAOlQ,EAGX,IAAIksC,GAAe,SAAM,SAAUC,EAASC,EAAQvlB,EAAMC,GAAS,OAAOslB,GAAUD,EAAQtlB,GAAQslB,EAAQrlB,OAkBxGulB,EAAev2C,KAAKi1C,SAASzpB,KAAK4qB,GA9BtC,SAAqB3vC,GACjB,IAAI+vC,EAAa,SAAU3lC,GAAW,OAAQA,GAAWA,EAAQuJ,OAASo8B,EAAW3lC,EAAQuJ,QAAU,EAAI,GAC3G,OAAsC,IAA/B3T,EAAO6E,IAAIwX,MAAM,KAAK1T,OAAiBonC,EAAW/vC,EAAOkiB,mBA4BJ,IAAIha,KAjB3C,SAAUlI,GAC/B,IAAIgwC,EAAkBtmC,EAAM+kC,aAAa5rC,OAAOwR,EAAYoI,QAAQgzB,EAAczvC,IAOlF,OANIgwC,EAAgBrnC,OAAS,GAIzBqnC,EAAgBjrB,KAAK4qB,EAAaD,GAAkB,IAEjD,CAAE1vC,OAAQA,EAAQiE,WAAY+rC,EAAgB,OAUrDC,EAAqBH,EAAa5nC,KAAI,SAAU8E,GAAS,OAAOA,EAAM/I,cACtEisC,EAAwB32C,KAAKk1C,aAC5B5rC,QAAO,SAAUiC,GAAU,QAAQ,QAAQmrC,EAAoBnrC,MAC/DoD,KAAI,SAAUjE,GAAc,MAAO,CAAGjE,YAAQ0N,EAAWzJ,WAAYA,MAC1E6rC,EAAax1C,SAZS,SAAU0S,IAGkB,IAA1CtD,EAAM8kC,SAAS/mC,QAAQuF,EAAMhN,SAC7BgN,EAAMhN,OAAO+E,cAAciI,EAAM/I,eASzC,IAAIksC,EAAYL,EAAan0C,OAAOu0C,GACpC32C,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG8rC,MAClD,mBAAoBA,IAiBxB97B,EAAYjZ,UAAUgK,eAAiB,SAAUpF,GAC7C,iCAAkC,iBAAkBA,GACpD,IAAIowC,EAAU72C,KAAKi1C,SAMnB,OAJI4B,EAAQvtC,QADY,SAAUiiB,GAAO,OAAOA,EAAIjgB,MAAQ7E,EAAO6E,KAAOigB,EAAIngB,QAAU3E,EAAO2E,SACzDgE,QAClC,iCAAkC,+BAAgC3I,GACtEowC,EAAQp2C,KAAKgG,GACbzG,KAAK4sB,OACE,YAEU,IADHiqB,EAAQ3oC,QAAQzH,IAK1B,iCAAkC,mBAAoBA,IACtD,QAAWowC,EAAX,CAAoBpwC,IAJhB,iCAAkC,uCAAwCA,KAYtFqU,EAAYjZ,UAAUi1C,UAAY,WAC9B,OAAO92C,KAAKi1C,SAAStmC,KAAI,QAAK,SAOlCmM,EAAYjZ,UAAUk1C,OAAS,WAC3B,OAAO/2C,KAAKi1C,SAAS3rC,QAAO,QAAK,YAAYqF,KAAI,QAAK,UA2D1DmM,EAAYoI,QAAU,SAAUgzB,EAAczvC,GAAU,OAAO,SAAUiE,GAErE,GAAIjE,EAAO2E,QAAUV,EAAW3C,SAASqD,MACrC,OAAO,EAEX,IAAI+8B,EAAKz9B,EAAW3C,SAChBivC,EAAa7O,EAAGptB,YAAY+H,MAAM,KAClCm0B,EAAcxwC,EAAO6E,IAAIwX,MAAM,KAGnC,KAAK,QAAOk0B,EAAYC,EAAYn1C,MAAM,EAAIk1C,EAAW5nC,SACrD,OAAO,EAGX,IAAI8nC,EAAY,EAAIF,EAAW5nC,aAAU+E,EACrCgjC,EAAoBF,EAAYn1C,MAAM,EAAGo1C,GAAWjkC,KAAK,KACzDmkC,EAAgBlB,EAAaiB,GAAmBxuB,gBACpD,OAAOwf,EAAGltB,wBAA0Bm8B,GAAiBA,EAAc5xC,QAEhEsV,EA1QqB,wDCfhC,SAAUyL,EAAQ1mB,GAAU,aAyD5B,IAAIw3C,EAAoB,gBAEpBC,EAAez3C,EAAQC,OAAO,SAAU,CAAC,OACrBy3C,KAAK,CAAEC,eAAgB,UACvBz3C,SAAS,SAkCjC,WACE,IAAIwL,EAAS,CACXksC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,kBAAkB,GAgCpB,SAASC,EAAUtlC,EAAUulC,EAAUC,EAAqBC,GAC1D,OAAO,SAASx1C,EAAOoe,EAAMpO,GAC3B,IAAIA,EAAKpQ,eAAe20C,GAAxB,CAEA,IAAIkB,EAAgBzlC,EAAKkd,WAAWooB,IAChC7sC,EAAOgtC,IAAmBC,EAAYt3B,EAAMm3B,IAAyBvlC,EAAKylC,IAC5Ez1C,EAAMyB,OAAOuO,EAAKD,IAAW,SAAS4lC,GAEpCA,EAAUH,GAAUG,IAAYA,EAChCv3B,EAAKpO,KAAKslC,EAAUK,QAb5Bz4C,KAAKuL,OAAS,SAASmtC,GACrBntC,EAAS1L,EAAQiB,OAAOyK,EAAQmtC,IAkElC14C,KAAKU,KAAO,WACV,MAAO,CACL6K,OAAQ,SAAS1F,GACf,OAAO0F,EAAO1F,IAEhB8yC,YAAaR,OA5IfE,EAAsB,CAAC,SAAU,IAAK,QAAS,WAAY,SAAU,UAAW,WAEhFG,EAAc,SAASt3B,EAAM03B,GAC/B,IAAiD,IAA7CA,EAAc1qC,QAAQgT,EAAK,GAAG23B,UAChC,OAAO,GA8IXvB,EAAaz0C,UAAU,SAAU,CAAC,QAAS,SAASi2C,GAClD,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvD91C,UAAU,SAAU,CAAC,QAAS,SAASi2C,GACtC,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvD91C,UAAU,UAAW,CAAC,QAAS,SAASi2C,GACvC,OAAOA,EAAMH,YAAY,UAAW,eAAgBN,GAAqB,MAE1Ex1C,UAAU,YAAa,CAAC,QAAS,SAASi2C,GACzC,OAAOA,EAAMH,YAAY,YAAa,eAAgBN,GAAqB,MAE5Ex1C,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9Ex1C,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9Ex1C,UAAU,UAAW,CAAC,QAAS,SAASi2C,GAEvC,SAASC,EAAiBjmC,EAAMkmC,EAAgB93B,EAAM+3B,GACpD,OAAOH,EAAMvtC,OAAOytC,KACjB93B,EAAKpO,KAAKA,KACVmmC,IAAsBT,EAAYt3B,EAAMm3B,MAClB,WAAtBn3B,EAAKpO,KAAK,SAA6C,UAArBoO,EAAK,GAAG23B,UAG/C,SAASK,EAAiBC,EAAMj4B,GAI9B,OAAQA,EAAKpO,KAAK,SAAYoO,EAAKpO,KAAK,UAAYqmC,IAAUX,EAAYt3B,EAAMm3B,GAYlF,MAAO,CACLlxC,SAAU,IACVxB,QAAS,UACTyB,SAAU,IACVC,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe20C,GAAxB,CAEA,IAAI+B,EAhBR,SAAkBtmC,EAAMoO,GACtB,IAAIhS,EAAO4D,EAAK5D,KACZiqC,EAAOrmC,EAAKqmC,KAEhB,MAA2B,cAAlBjqC,GAAQiqC,IAAiC,qBAATA,EAA+B,WAC7C,WAAlBjqC,GAAQiqC,IAAiC,kBAATA,EAA4B,QACpD,UAATjqC,GAA0C,gBAATiqC,GAAmC,WAATA,EAAqB,QAAU,GAUpFE,CAASvmC,GAErB,MAAO,CACLwmC,KAAM,SAASx2C,EAAOoe,EAAMpO,EAAMymC,GAChC,IAAIC,EAAgBT,EAAiB,WAAY,WAAY73B,GAAM,GAEnE,SAASu4B,IACP,OAAOF,EAAQG,YAcjB,OAAQN,GACN,IAAK,QACL,IAAK,WACCF,EAAiBE,EAAOl4B,IAC1BA,EAAKpO,KAAK,OAAQsmC,GAEhBL,EAAiB,eAAgB,cAAe73B,GAAM,IACxDpe,EAAMyB,OAAOk1C,EAAiC,UAAVL,EAlB1C,SAA0BO,GAGxB,IAAIlB,EAAW3lC,EAAKtO,OAAS+0C,EAAQK,WACrC14B,EAAKpO,KAAK,eAAgB2lC,IAG5B,WACEv3B,EAAKpO,KAAK,gBAAiBymC,EAAQM,SAASN,EAAQK,eAa9CJ,GACFt4B,EAAKpO,KAAK,WAAY,GAExB,MACF,IAAK,QAIH,GAHIomC,EAAiBE,EAAOl4B,IAC1BA,EAAKpO,KAAK,OAAQ,UAEhBgmC,EAAMvtC,OAAO,aAAc,CAC7B,IAAIuuC,GAAqB54B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDq3C,GAAqB74B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDs3C,GAAqB94B,EAAKpO,KAAK,iBAE/BgnC,GACFhnC,EAAKmnC,SAAS,OAAO,SAAgCN,GACnDz4B,EAAKpO,KAAK,gBAAiB6mC,MAG3BI,GACFjnC,EAAKmnC,SAAS,OAAO,SAAgCN,GACnDz4B,EAAKpO,KAAK,gBAAiB6mC,MAG3BK,GACFl3C,EAAMyB,OAAOk1C,GAAuB,SAAgCE,GAClEz4B,EAAKpO,KAAK,gBAAiB6mC,MAI7BH,GACFt4B,EAAKpO,KAAK,WAAY,IAKvBA,EAAKpQ,eAAe,eAAiB62C,EAAQW,YAAYC,UACzDpB,EAAiB,gBAAiB,eAAgB73B,GAAM,IAE3DpO,EAAKmnC,SAAS,YAAY,WACxB/4B,EAAKpO,KAAK,kBAAmBA,EAAe,aAI5CimC,EAAiB,eAAgB,cAAe73B,GAAM,IACxDpe,EAAMyB,QAAO,WACX,OAAOg1C,EAAQa,YACd,SAA+BT,GAChCz4B,EAAKpO,KAAK,iBAAkB6mC,cAQzC92C,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9Ex1C,UAAU,cAAc,WACvB,MAAO,CACLsE,SAAU,IACVxB,QAAS,cACT4C,KAAM,SAASzF,EAAOoe,EAAMpO,EAAMunC,GAC5BvnC,EAAKpQ,eAAe20C,IAEnBn2B,EAAKpO,KAAK,cACboO,EAAKpO,KAAK,YAAa,kBAK9BjQ,UAAU,UAAU,CAAC,QAAS,SAAU,SAASi2C,EAAO33C,GACvD,MAAO,CACLgG,SAAU,IACVE,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe20C,GAAxB,CAEA,IAAI12C,EAAKQ,EAAO2R,EAAKwnC,SACrB,OAAO,SAASx3C,EAAOoe,EAAMpO,GAEtB0lC,EAAYt3B,EAAMm3B,KAEjBS,EAAMvtC,OAAO,sBAAwB2V,EAAKpO,KAAK,SACjDoO,EAAKpO,KAAK,OAAQ,UAGhBgmC,EAAMvtC,OAAO,cAAgB2V,EAAKpO,KAAK,aACzCoO,EAAKpO,KAAK,WAAY,IAGpBgmC,EAAMvtC,OAAO,gBAAmBuH,EAAKynC,WAAcznC,EAAK0nC,YAAe1nC,EAAK2nC,SAC9Ev5B,EAAK5gB,GAAG,WAAW,SAASC,GAC1B,IAAIm6C,EAAUn6C,EAAMo6C,OAASp6C,EAAMm6C,QAEnB,KAAZA,GAA8B,KAAZA,KAEwC,IAAxDrC,EAAoBnqC,QAAQ3N,EAAM8F,OAAOwyC,WAAqBt4C,EAAM8F,OAAOu0C,mBAG7Er6C,EAAMgD,iBAERT,EAAMmB,QAGR,WACEtD,EAAGmC,EAAO,CAAE+3C,OAAQt6C,mBASnCsC,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAO,SAASh2C,EAAOoe,EAAMpO,GACvBA,EAAKpQ,eAAe20C,KAEpByB,EAAMvtC,OAAO,aAAgB2V,EAAKpO,KAAK,aAAgB0lC,EAAYt3B,EAAMm3B,IAC3En3B,EAAKpO,KAAK,WAAY,OA9Z5B,CAoaGyT,OAAQA,OAAO1mB,iECzalBA,QAAQC,OAAO,WAAY,CAAC,OAC3B+C,UAAU,WAAY,CAAC,KAAM,SAAUkE,GACvC,aAgCA,MAAO,CACNjE,MAAM,CACLy2C,QAAe,IACf13B,IAAe,QACfiF,IAAe,QACfgD,KAAe,SACfgxB,SAAe,aACfC,SAAe,aACfC,UAAe,cACfC,UAAe,cACfC,WAAe,eACfC,WAAe,eACfC,aAAe,iBACfC,MAAe,UACfC,MAAe,UACfC,YAAe,gBACfC,YAAe,iBAEhBpqC,YAAa,2BACPzL,QAAS,UACToP,SAAS,EACTxM,KAlDI,SAAUtH,EAAQyG,EAAUxG,GAElCA,EAAO45C,WACV75C,EAAO65C,SAAW,WAAW,OAAO,IAGjC55C,EAAO85C,YACV/5C,EAAO+5C,UAAY,WAAW,OAAO,IAGlC95C,EAAOq6C,cACVt6C,EAAOs6C,YAAc,WAAW,IAAIpiB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOm6C,QACVp6C,EAAOo6C,MAAQ,cAGZn6C,EAAOs6C,cACVv6C,EAAOu6C,YAAc,WAAW,IAAIriB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOo6C,QACVr6C,EAAOq6C,MAAQ,eA4BVt6C,WAAY,yBAInBA,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAWC,EAAQuC,GAC3E,aAEAvC,EAAOw6C,UAAal1B,OAAO7jB,eAAe,iBAAmB6jB,OAAOm1B,UAAUC,iBAAmB,EACjG16C,EAAO26C,SAAW/7C,QAAQoiB,KAAKhhB,EAAOs4C,SAEtCt4C,EAAO4gB,IAAM5gB,EAAO4gB,KAAO,EAC3B5gB,EAAO6lB,IAAM7lB,EAAO6lB,KAAO,EAC3B7lB,EAAO6oB,KAAO7oB,EAAO6oB,MAAQ,GAE7B7oB,EAAO85C,SAAW95C,EAAO26C,WAAa36C,EAAOs4C,QAE7Ct4C,EAAOg6C,UAAYh6C,EAAOg6C,WAAa,GACvCh6C,EAAO46C,cAAgB56C,EAAOg6C,UAAYh6C,EAAO6oB,KACjD7oB,EAAOi6C,WAAaj6C,EAAOi6C,YAAc,GACzCj6C,EAAOk6C,WAAal6C,EAAOk6C,YAAcl6C,EAAOg6C,UAChDh6C,EAAOm6C,aAAen6C,EAAOm6C,cAAgBn6C,EAAOi6C,WAEpD,IAAIvnB,EAAO1yB,EAAO6lB,IAAM7lB,EAAO4gB,IAC/Bi6B,EAAQnoB,EAAO1yB,EAAO6oB,KACtBiyB,EAAU96C,EAAOsD,OAAO,WAAW,WAClCtD,EAAO85C,SAAW95C,EAAO26C,WAAa36C,EAAOs4C,WAG9CyC,EAAW,SAAUC,GACpB,OAAQA,EAAM,GAAKH,EAAQnoB,GAG5B1yB,EAAOi7C,cAAgB,WACtB,OAAO,IAAIt6C,MAAMk6C,IAGlB76C,EAAOk7C,cAAgB,SAAUF,GAChC,IAAIG,EAAQ,EAAEn7C,EAAO6oB,KAErB,OADW7oB,EAAOg6C,UAAUmB,GAAQH,EAAMG,IAI3Cn7C,EAAOo7C,WAAa,SAAUJ,GAC7B,OAAOD,EAASC,IAAUh7C,EAAOs4C,QAAQt4C,EAAO4gB,KAGjD5gB,EAAOq7C,aAAe,WACjBr7C,EAAO+5C,cAAgB/5C,EAAO65C,YACjC75C,EAAOu6C,YAAY,CAACe,OAAOt7C,EAAOs4C,UAAUxuC,MAAK,WAChD9J,EAAOs4C,QAAUt4C,EAAO4gB,IACxB5gB,EAAOq6C,MAAM,CAACiB,OAAOt7C,EAAOs4C,cAK/Bt4C,EAAOu7C,SAAW,SAAUP,GAC3B,IAAKh7C,EAAO65C,WAAY,CACvB,IAAI2B,EAAW58C,QAAQoiB,KAAKhhB,EAAO4gB,IAAMm6B,EAASC,IAElDh7C,EAAOs6C,YAAY,CAACgB,OAAOE,IAAW1xC,MAAK,WAC1C9J,EAAOs4C,QAAUkD,EACjBj5C,GAAS,WACRvC,EAAOo6C,MAAM,CAACkB,OAAOt7C,EAAOs4C,kBAMhCt4C,EAAOsB,IAAI,YAAY,WACtBw5C,UAIDxjC,IAAI,CAAC,iBAAkB,SAAUjI,GACjC,aAEAA,EAAeosC,IAAI,2BAElB,siDCvHF,SAASC,EACP1mC,EACAL,EACA6C,EACAmkC,EACA71C,EACA81C,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAKj9C,KA+FX,SAASk9C,EAAcr3C,EAAK8B,EAAMkF,GAChC,MAAMswC,EAAUN,EAAoBnsC,IAAI7K,IAAQ,GAE5CgH,SACKswC,EAAQlnC,EAAWJ,UAE1BsnC,EAAQlnC,EAAWJ,UAAYlO,EAGjCk1C,EAAoBO,IAAIv3C,EAAKs3C,GAG/B,SAASE,EAAOC,GA3BhB,IAAqBC,EA4BnBtnC,EAAWunC,OAAOF,GAAKA,EACvBJ,EAAcH,EAAgB9mC,EAAWunC,QA7BtBD,EA8BPD,EAAK,OAAS,OA7B1B1nC,EAAQwE,OAAOqjC,YACb,CACEF,IAAKA,GAEP,KA0BGtnC,EAAWynC,SACdznC,EAAWhS,SA7GfgS,EAAWJ,SAAWI,EAAW0nC,SAAS9nC,SAkT1ConC,EAAG5vC,QA5FH,WACE4I,EAAW2nC,OAAS,OAEpB,MAAMC,EAAY5nC,EAAW0nC,SAASG,MAChCC,EAAa9nC,EAAW0nC,SAASK,UACjCC,EAAehoC,EAAW0nC,SAASO,aACnCC,EAAmBloC,EAAW0nC,SAASS,gBACvCC,EAAgBv8B,KAAKgF,IACzBT,SAASi4B,gBAAgBC,aACzBh4B,OAAOi4B,aAAe,GAElBC,EAAep4B,SAASi4B,gBAAgBI,YAG9Cr4B,SAASi4B,gBAAgBK,MAAMC,YAAY,oBAAqBf,GAChEx3B,SAASi4B,gBAAgBK,MAAMC,YAAY,qBAAsBb,GACjE13B,SAASi4B,gBAAgBK,MAAMC,YAC7B,uBACAX,GAEF53B,SAASi4B,gBAAgBK,MAAMC,YAC7B,2BACAT,GAEF93B,SAASi4B,gBAAgBK,MAAMC,YAC7B,wBACAP,GAEFh4B,SAASi4B,gBAAgBK,MAAMC,YAC7B,uBACAH,GAGF,IAAII,GAAK,EACT,MAAMC,EAAiBjC,EAAoBnsC,IAAIssC,IAAoB,GAC7D+B,EAAgBlC,EAAoBnsC,IAAIqsC,IAAmB,GAEjE9mC,EAAW+oC,QAAUF,EAAe7oC,EAAWJ,UAC3CipC,EAAe7oC,EAAWJ,UAC1B,GACJI,EAAWunC,OAASuB,EAAc9oC,EAAWJ,UACzCkpC,EAAc9oC,EAAWJ,UACzB,GAEAI,EAAW+oC,QAAQC,aAAehpC,EAAWunC,OAAOF,GACtDuB,GAAK,EAEL5oC,EAAWunC,OAAOF,IAAK,EAGa,iBAAlCrnC,EAAW0nC,SAASuB,WACtB7B,EAAOwB,GArMTpmC,EAAOi5B,GA/DT,WACE,MAAMyN,EAASlpC,EAAW0nC,SAASwB,OAC7BH,KACJ/oC,EAAW+oC,SACX/oC,EAAW+oC,QAAQC,aACnBhpC,EAAW+oC,QAAQC,YAAY5zC,IAG3B+zC,EACJ7P,OAAOt5B,EAAW0nC,SAAS0B,kBAC3B9P,OAAOt5B,EAAW0nC,SAAS2B,qBACzB/P,OAAOt5B,EAAW0nC,SAAS0B,iBAE/B,SAAML,IAAaI,GAAYD,GAkDrBI,GAAa,aAAe,cAAe,KAAM,CACzD1pC,SAAU,YA0MZ,IAAI0nC,EAAM,GAERA,EADEtnC,EAAW0nC,SAASwB,SAAWlpC,EAAW0nC,SAAS6B,gBAC/C,OAEA,UAGR5pC,EAAQwE,OAAOqjC,YACb,CACEF,IAAAA,EACAM,UAAAA,EACAE,WAAAA,EACAM,cAAAA,EACAI,aAAAA,GAEF,KAGF,MAAME,EAAQt4B,SAASo5B,cAAc,SACrCp5B,SAASpB,KAAKy6B,YAAYf,GAC1BA,EAAMgB,MAAMC,WACV,2BAA6B3pC,EAAW0nC,SAASG,MAAQ,gBAe7Db,EAAG4C,MAlMH,WACE,MAAMZ,EAAchpC,EAAW+oC,QAAQC,YAEvC,GAAIA,GAAeA,EAAY5zC,GAAI,CAEjC,MAAMy0C,EAAUlD,EACbkD,UACA1lC,OAAOva,QAAQkD,QAAQsjB,SAAS05B,cAAc,eAC9CC,qBAAoB,GACpB7M,MACCl9B,EAAW0nC,SAASsC,iBAClB,yCAEHC,GAAG,MACH/7C,OAAO,UAEVy4C,EACGuD,KAAKL,GACL/0C,MAAK,WACJ,OAAO+xC,EAAIsD,gBAAgBC,aAAa,CACtCh1C,GAAI4zC,EAAY5zC,GAChBi1C,QAAQ,EACRC,YAAa,UACbC,SAAUC,GAAAA,GAAS74B,OAAO,yBACzB84B,YAEJ31C,MAAK,WACJ0N,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAGbwM,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM,YAAa6nB,QAmKnC+vB,EAAGI,OAASA,EACZJ,EAAG0D,SA/JH,WACE,MAAMC,EAAW75C,EAAGkF,QACdgzC,EAAchpC,EAAW+oC,QAAQC,YA2DvC,OAzDIA,GAAeA,EAAY5zC,IAC7ByxC,EAAIsD,gBACDS,YAAY,CACXC,MAAO7B,EAAY5zC,GACnB01C,YAAY,IAEbL,SAAS31C,MAAK,SAAUpD,GACvBi5C,EAASj0C,QACPq0C,GAAAA,CAAKr5C,EAAKs5C,KAAKn/C,MAAM,IAAI,SAAUo/C,GACjC,IAAIC,EASJ,GAPsB,OAAlBD,EAAIE,YACND,EACElrC,EAAW0nC,SAAS0D,eACpBprC,EAAW+oC,QAAQ9vB,MACnB,UAAYgyB,EAAII,WAGE,QAAlBJ,EAAIE,UACN,OAAQnrC,EAAW0nC,SAAS4D,iBAC1B,IAAK,gBACHJ,EAASD,EAAIM,OACTvrC,EAAW0nC,SAAS8D,WAAaP,EAAIM,OACrC,SACJ,MAEF,IAAK,cACHL,EAASD,EAAIM,OACTN,EAAIQ,KAAKC,OAAST,EAAIQ,KAAKE,SAC3B,SACJ,MAEF,IAAK,iBACHT,EAASD,EAAIM,OAASN,EAAIQ,KAAKE,SAAW,SAC1C,MAEF,QACET,EAASD,EAAIM,OACTvrC,EAAW0nC,SAAS8D,WAAaP,EAAIM,OACrC,SAKV,MAAO,CACLL,OAAQA,EACRrd,QAASod,EAAIW,KACbC,UAAWrB,GAAAA,CAAOS,EAAIY,WAAWl6B,OAAO,+BAK/CvF,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAIb0zB,EAASn9C,SAmGlBw5C,EAAG8E,eA7OH,WACE,MAA4C,YAArC9rC,EAAW0nC,SAASqE,aAA6B,OAAS,OA6OnE,MAAMC,EAAgB,CACpB9C,OAAQ,CAAC,SAAU,OAAQ,UAAW,UAAW,aACjD+C,QAAS,CAAC,YAKZ3uC,OAAO+6B,eAAer4B,EAAY,cAAe,CAC/CvF,MACE,IAAIpK,EAAS2P,EAAW0nC,SAASwE,aAKjC,OAJIF,EAAc9C,OAAO7lC,SAASrD,EAAW2nC,QAC3Ct3C,EAAS2P,EAAW0nC,SAASyE,cACtBH,EAAcC,QAAQ5oC,SAASrD,EAAW2nC,UACjDt3C,EAAS2P,EAAW0nC,SAAS0E,gBACxB/7C,KAKX2P,EAAWinC,cAAgBA,EAE3B32B,OAAO+7B,iBACL,WACA,SAAUpsC,GACa,SAAjBA,EAAIvO,KAAKuO,IACXmnC,GAAO,GACmB,SAAjBnnC,EAAIvO,KAAKuO,KAClBmnC,GAAO,MAGX,qdCxWJ,SAASkF,EAAStsC,EAAYF,GAE5B,MAAM3H,EAAS2H,EAAUo5B,SAEzBl5B,EAAW0nC,SAAW,CACpB6E,OAAQ,UACRC,MAAM,GAGRC,GAAAA,CAAOt0C,GAAQ,SAAU5J,EAAOqB,GAChB,KAAVrB,GAAiBm+C,GAAAA,CAAOn+C,KACZ,SAAVA,IACFA,GAAQ,GAGI,UAAVA,IACFA,GAAQ,GAGVyR,EAAW0nC,SAAS93C,GAAOrB,MAcjC,SAASo+C,EACPC,EACAC,EACAzuC,EACA0uC,EACAC,EACAC,GAEA5uC,EAAkBgB,WAAU,GAIvB0tC,EAAc9iD,SAAS0R,QAAQjB,MAClCqyC,EAAc9iD,SAAS0R,QAAQjB,IAAM,IAIvCqyC,EAAc9iD,SAAS0R,QAAQjB,IAAI,qBACjC,gCAEFqyC,EAAc9iD,SAAS0R,QAAQjB,IAAI,iBAAmB,WACtDqyC,EAAc9iD,SAAS0R,QAAQjB,IAAIwyC,OAAS,WAG5CF,EAA4BG,UAAUF,GAGtCJ,EACGp1C,MAAM,MAAO,CACZkxB,UAAU,IAEXlxB,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAagyC,EACbpiD,WAAY,4BAEbyM,MAAM,aAAc,CACnBgE,IAAK,UACLL,YAAaiyC,EACbriD,WAAY,2BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAakyC,EACbtiD,WAAY,4BAEbyM,MAAM,WAAY,CACjBgE,IAAK,QACLL,YAAamyC,EACbviD,WAAY,yBAEbyM,MAAM,gBAAiB,CACtBgE,IAAK,aACLL,YAAaoyC,EACbxiD,WAAY,8BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAaqyC,EACbziD,WAAY,+PCnGlB,SAAS0iD,EACPztC,EACAwC,EACAkrC,EACA7G,EACAE,EACAD,GAEA,MAAME,EAAKj9C,KAIX,SAASmmC,EAAY3gC,GACnB,OAAO,SAAU0nB,GACf+vB,EAAG2G,OAAOp+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMk8C,EAAQF,EACXG,SACAC,YACC9tC,EAAW0nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACXC,SAAS,OAEZP,EAASxD,KAAK0D,IAIlB,SAASM,IACPluC,EAAWmuC,SAAU,EAYvB,SAASC,IACHpuC,EAAW0nC,SAASwB,OACtB1mC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAASylC,IACP2B,EAAGqH,KAAO,GACVrH,EAAGsH,QAAU,KACbtH,EAAGuH,UAAY,KACfvH,EAAGwH,SAASC,eACZzH,EAAGwH,SAASE,uBAEL1uC,EAAW+oC,QAAQC,YAE1BhpC,EAAW2uC,gBAAiB,EAiD9B3H,EAAG5vC,QA3EH,WACE4I,EAAW2nC,OAAS,UAGpB3nC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAC/C9mC,EAAWmuC,SAAU,GAsEvBnH,EAAG4H,OA1CH,WACE5uC,EAAWmuC,SAAU,EAEjBnuC,EAAW+oC,QAAQC,aAAehpC,EAAW+oC,QAAQC,YAAY5zC,GACnEyxC,EAAIsD,gBACDP,MACCiF,GAAAA,CACE,CACEz5C,GAAI4K,EAAW+oC,QAAQC,YAAY5zC,GACnC05C,WAAY9uC,EAAW0nC,SAASoH,WAChCC,SACE/uC,EAAW0nC,SAAS0D,eAAiBprC,EAAW+oC,QAAQ9vB,MAE5D+tB,EAAGqH,OAGN5D,SAAS31C,MAAK,kBACNkyC,EAAG2G,OAAOiB,OAEjB,MAAMhB,EAAQF,EACXG,SACAC,YACC9tC,EAAW0nC,SAASsH,0BAClB,2BAEHhB,WAAW,oBACX7pC,OAAOva,QAAQkD,QAAQsjB,SAAS05B,cAAc,mBAEjD4D,EAASxD,KAAK0D,MAEf94C,KAAKuwC,GACLvwC,KAAKs5C,GACLhiC,MAAM8jB,EAAY,WAClB+e,QAAQf,IAEXA,IACAhe,EAAY,YAOhB8W,EAAGkI,KAhDH,WACE7J,IACA+I,KAgDFpH,EAAGqH,KAAO,GACVrH,EAAG2G,OAAS,GC/Gd,SAASwB,EAAWnvC,EAAYovC,GAC9B,MAAMC,EAAgB,CACpBj6C,GAAI,MACJkW,MAAOtL,EAAW0nC,SAASp8B,OAGvBu7B,EAAM,GAqEZ,OAnEAA,EAAIyI,QAAUtvC,EAAW0nC,SAAS6H,OAAS,QAE3C1I,EAAI2I,YAAcJ,EAChBvI,EAAIyI,QAAU,oBACdD,EACA,CACErc,OAAQ,CACNyc,OAAQ,OACRj0C,IAAKqrC,EAAIyI,QAAU,4BAErBrD,QAAS,CACPwD,OAAQ,OACRj0C,IAAKqrC,EAAIyI,QAAU,6BAErBI,UAAW,CACTD,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,8BAKzBzI,EAAIsD,gBAAkBiF,EACpBvI,EAAIyI,QAAU,wBACdD,EACA,CACElpC,OAAQ,CACNspC,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,yBAErBlF,aAAc,CACZqF,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,uCAErB1F,MAAO,CACL6F,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,+BAErB1E,YAAa,CACX6E,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,wCAErBK,iBAAkB,CAChBF,OAAQ,OACRj0C,IAAKqrC,EAAIyI,QAAU,0CACnB5zC,QAAS,CACP,oBAAgBwC,GAElB0xC,iBAAkBhmD,QAAQ6c,UAE5BopC,mBAAoB,CAClBJ,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,+CAKzBzI,EAAIiJ,YAAcV,EAChBvI,EAAIyI,QAAU,oBACdD,EACA,CACElpC,OAAQ,CACNspC,OAAQ,MACRj0C,IAAKqrC,EAAIyI,QAAU,uBAKlBzI,uRC9DT,SAASkJ,EACP/kD,EACAgV,EACAzS,EACAyiD,EACAC,EACAztC,EACApI,EACAysC,EACAE,EACAD,GAEA,MAAME,EAAKj9C,KACX,IAAImmD,EACAC,EACAC,EACAC,EAmBJ,SAASC,IACP/iD,GAAS,WACP,MAAMT,EAAUmjD,EAAU,GAAGM,uBAAuB,iBAAiB,GAEjEzjD,IACFA,EAAQ0jD,UAAY1jD,EAAQ2jD,iBAMlC,SAASvgB,EAAY3gC,GACnB,OAAO,SAAU0nB,GACf+vB,EAAG2G,OAAOp+C,GAAQ0nB,EAAIvlB,KAEtB4+C,KAIJ,SAASI,EAAY7iB,GACnBgZ,EAAI2I,YACDxc,OAAOnF,GACP4c,SAAS31C,MAAK,SAAUpD,UAChBs1C,EAAG2G,OAAOgD,iBAEbjE,GAAAA,CAAO1sC,EAAW+oC,QAAQC,eAC5BhpC,EAAW+oC,QAAQC,YAAc,CAC/B5zC,GAAI1D,EAAKs3C,YAAY5zC,IAGvB4K,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,UAGvDmH,EAAU,GAAGU,aAAaC,QAAQ,IAElCP,OAEDlkC,MAAM8jB,EAAY,qBAwDvB,SAASke,IACHpuC,EAAW0nC,SAASwB,OACtB1mC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAkB/C,SAASkxC,IAEL9wC,EAAW+oC,SACX/oC,EAAW+oC,QAAQC,aACnBhpC,EAAW+oC,QAAQC,YAAY5zC,IAE/ByxC,EAAIsD,gBACD1vC,IAAI,CACHrF,GAAI4K,EAAW+oC,QAAQC,YAAY5zC,KAEpCq1C,SAAS31C,MAAK,SAAUpD,UAChBs1C,EAAG2G,OAAOmD,eAGbp/C,EAAK24C,SACPrqC,EAAW+oC,QAAQC,YAAYqB,QAAS,EACxCrqC,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,SAE5B,cAArBr3C,EAAKq/C,YACPvuC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAE7C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,gBAIhDwM,OAAM,SAAU6K,GACf,OAAQA,EAAI0wB,QACV,KAAK,IACHnlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IAEHI,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAC/CsH,IACA,MACF,KAAK,IACH5rC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAQ1B,SAAS+5B,EAAMpM,GACb,MAAMgH,EAAOsE,EAAU,GAAGU,aAAaK,UAEnCrM,GAA6B,KAAnBA,EAAOH,SAAkBG,EAAOsM,UAK1CtM,GAA6B,KAAnBA,EAAOH,SAKR,KAATmH,GAKJ8E,EACE7B,GAAAA,CACE,CACEjD,KAAMA,GAER5rC,EAAW+oC,UAqCjB,SAAS6B,IAEL5qC,EAAW+oC,SACX/oC,EAAW+oC,QAAQC,aACnBhpC,EAAW+oC,QAAQC,YAAY5zC,IAE/ByxC,EAAIsD,gBACDS,YAAY,CACXC,MAAO7qC,EAAW+oC,QAAQC,YAAY5zC,GACtC+7C,cAAc,EACd/7C,GAAIi7C,QAAiBnyC,IAEtBusC,SAAS31C,MAAK,SAAUpD,GAIvB,UAHOs1C,EAAG2G,OAAO3E,YAGbt3C,EAAKuC,MAAO,CACd,IAAIm9C,GAAQ,EACRhqC,EAAI,EACR,IAAKA,EAAI,EAAGgqC,GAAQ,EAAOhqC,EAAI1V,EAAKs5C,KAAK7xC,OAAQiO,IAAK,CACpD,MAAMrI,EAAIsyC,GAAAA,CAAMrxC,EAAWsxC,SAAU,CACnCl8C,GAAI1D,EAAKs5C,KAAK5jC,GAAGhS,KAEd2J,EAGMrN,EAAKs5C,KAAK5jC,GAAGywB,OACtB94B,EAAE84B,MAAO,IAHTuZ,GAAQ,EACRpxC,EAAWsxC,SAAS9mD,KAAKkH,EAAKs5C,KAAK5jC,KAMN,QAA3B1V,EAAKs5C,KAAK5jC,GAAG+jC,WAAwBz5C,EAAKs5C,KAAK5jC,GAAGywB,OA1C3CziC,EA2CK1D,EAAKs5C,KAAK5jC,GAAGhS,GA1ChCyxC,EAAIiJ,YACR3pC,OAAO,CACN/Q,GAAIA,EACJyiC,MAAM,IAEP4S,SAASr+B,OAAM,SAAU6K,GACxB1G,QAAQnhB,MAAM6nB,OAwCNm6B,GAEFd,IAGE5+C,EAAKs5C,KAAK5jC,EAAI,GAAGywB,OACnBwY,EAAgB3+C,EAAKs5C,KAAK5jC,EAAI,GAAGhS,IArD7C,IAAuBA,KAyDhBgX,OAAM,SAAU6K,GACf,OAAQA,EAAI0wB,QACV,KAAK,IACHnlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAtS1B+vB,EAAG2G,OAAS,GACZ3tC,EAAWsxC,SAAW,GACtBtK,EAAGuK,aAAe,CAChBC,gBAAgB,EAChBC,YAAY,EACZC,OAAO,EACPp/C,MAAM,EACNq/C,WAAY,UA4Ud3K,EAAG5vC,QAvCH,WACE4I,EAAW2nC,OAAS,OACpB3nC,EAAWmuC,SAAU,EACrBnuC,EAAW0nC,SAASkK,UAAW,EAE/B5K,EAAG6K,aAAe,GAGhB7xC,EAAW+oC,QAAQC,aACnBhpC,EAAW+oC,QAAQC,YAAYqB,QAG/BrqC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAE/CsH,MAGA0C,IAGAX,EAAsBH,EAAUpF,EAAa,KAC7CwF,EAAyBJ,EAAUc,EAAgB,MAGrDZ,EAAY4B,EAAE,iBAAiBlB,aAAa,CAC1CmB,YAAa/xC,EAAW0nC,SAASsK,oBAAsB,iBACvD5nD,OAAQ,CACN6nD,MAAO,SAAUC,EAAQtN,GACvBoM,EAAMpM,IAERuN,MAAO,WACLpoD,KAAKqoD,gBAQbpL,EAAGgK,MAAQA,EACXhK,EAAGqL,aAtIH,WACE,MAAMzG,EAAOsE,EAAU,GAAGU,aAAaK,UAG1B,KAATrF,IAKJ8E,EACE7B,GAAAA,CACE,CACEjD,KAAMA,GAER5rC,EAAW+oC,UAIfmH,EAAU,GAAGU,aAAawB,aAqH5BpL,EAAGr4C,UA9RH,SAAmB+C,GACjB,MAAM4gD,EAAK,IAAIC,SAEfD,EAAGluB,OAAO,OAAQ1yB,EAAK7B,MAEvBuK,EACGipC,KACCrjC,EAAW0nC,SAAS6H,OAClB,0BACAvvC,EAAW+oC,QAAQC,YAAY5zC,GAC/B,4BACA4K,EAAW0nC,SAASp8B,MACtBgnC,EACA,CACE1C,iBAAkBhmD,QAAQ6c,SAC1B/K,QAAS,CACP,oBAAgBwC,KAIrBpJ,MAAK,SAAUpD,IACdA,EAAOA,EAAKA,MAEH0D,WACA4xC,EAAG2G,OAAO6E,eAGjB9B,EACE7B,GAAAA,CACE,CACEjD,KACE,YACA5rC,EAAW0nC,SAAS6H,OACpB,0BACAvvC,EAAW+oC,QAAQC,YAAY5zC,GAC/B,iCACA1D,EAAK0D,GACL,UACA4K,EAAW0nC,SAASp8B,MACpB,qBACA5Z,EAAKnC,KACL,OACFkjD,aAAc/gD,EAAK0D,IAErB4K,EAAW+oC,WAIf7Y,EAAY,oBAEbA,EAAY,oBA+OnBllC,EAAOsB,IAAI,YApOX,WACE0jD,EAAU9hD,OAAOiiD,GACjBH,EAAU9hD,OAAOkiD,GAEjBD,EAAsB,KACtBC,EAAyB,QAgO3BpwC,EAAW1T,IAAI,aA7Nf,SAAoBoF,EAAMnH,GACpBA,GACFA,EAASmoD,GAAAA,CAAQ1yC,EAAWsxC,oUClJlC,SAASqB,EACP3nD,EACAgV,EACA4yC,EACA/L,EACA6G,EACAj8C,EACA2I,GAEA,MAAM4sC,EAAKj9C,KACX,IAAI8oD,EAAU,KACVC,EAAgB,KACpB9yC,EAAW+yC,UAAY,GAEvB,MAAMC,EAAkB,CACtBC,sBAAsB,EACtBC,mBAAmB,EACnB/9B,QAAS,SAAU5mB,GACjB,MAAqB,kBAAVA,GACDA,EAAQ,IAAM,IAEjBA,IA4GX,SAAS4kD,WACAnM,EAAG2G,OAAOiB,OACjB5uC,EAAWzJ,MAAM,QAGjBywC,EAAGoM,OAASC,GAAAA,CAAWP,GAEvB9L,EAAGqH,KAAO,GACVrH,EAAGwH,SAASC,eACZzH,EAAGwH,SAASE,gBAEZ,MAAMd,EAAQF,EACXG,SACAC,YACC9tC,EAAW0nC,SAASsH,0BAClB,2BAEHhB,WAAW,oBACX7pC,OAAOva,QAAQkD,QAAQsjB,SAAS05B,cAAc,mBAEjD4D,EAASxD,KAAK0D,GA5HhB5G,EAAGsM,YAAc,SAAUhkD,GACzB,OAAOsjD,EAAKU,YAAYhkD,IA8Q1B03C,EAAGuM,iBArDH,SAA0BvN,GAExB,MAAMwN,EAAWxM,EAAGoM,OAAOpN,GACrByN,EAAahiD,EAASoZ,KAAK,gBACjC,GAAI4oC,EAAWt6C,OAAQ,CACrB,MAAMu6C,EAAS9pD,QAAQkD,QACrB2mD,EAAW,GAAG3J,cAAc,mBAExBntC,EAAQ/S,QAAQkD,QACpB2mD,EAAW,GAAG3J,cAAc,qBAExB6J,EAAQD,EAAO7oC,KAAK,SAEtB8oC,EAAMx6C,QACRw6C,EAAMC,IAAI,UAAW,QAGvBF,EAAOrpD,GAAG,SAAS,KACjBspD,EAAMC,IAAI,UAAW,QACI,mBAAlBj3C,EAAMk3C,QACTl3C,EAAMk3C,QAAQ,SACdl3C,EAAM,GAAGm3C,WAGfn3C,EAAMtS,GAAG,UAAWgiB,IAClBrhB,EAAOgD,QAAO,WACwB,iBAAzBwlD,EAASO,MAAM3kD,QACxBokD,EAASO,MAAM3kD,MAAQ,MAKzB,MAAMmB,EAAQ5E,MAAMstB,KAAK5M,EAAEjc,OAAOG,OAE5ByjD,EAhSL,QAgSiBR,EAASl+C,OAAOqa,KACdpf,EAAM0jD,MAAMpkD,GAASA,EAAK8f,MAAQqkC,KAKpDR,EAAStpD,QAAU,GACnBspD,EAASO,MAAM3kD,MAAQokD,EAASl+C,OAAO4+C,gBAEvCV,EAAStpD,QAAUqG,EAAMmI,KAAK7I,IAC5B,MAAM,KAAEN,EAAF,KAAQogB,EAAR,KAAc1W,GAASpJ,EAC7B,MAAO,CAAEN,KAAAA,EAAMogB,KAAAA,EAAM1W,KAAAA,EAAMpJ,KAAAA,MAG/Bm3C,EAAGqH,KAAKmF,EAASO,MAAM7W,OAASsW,EAAStpD,gBAkBjD88C,EAAGmN,eANH,SAAwBX,EAAUxN,GAGhCwN,EAAStpD,QAAQqf,OAAOy8B,EAAO,GAC/BgB,EAAGqH,KAAKmF,EAASO,MAAM7W,OAASsW,EAAStpD,SAuB3C88C,EAAGoN,eAfH,SAAwBZ,GACtBjjC,QAAQN,IAAI,kBAAmBujC,GAC/B,MAAMC,EAAahiD,EAASoZ,KAAK,gBAC3BlO,EAAQ/S,QAAQkD,QACpB2mD,EAAW,GAAG3J,cAAc,sBAExB,eAAEuK,EAAF,OAAkBzpC,GAAW4oC,EAASl+C,OACxC++C,GACF13C,EAAME,KAAK,WAAY,YAErB+N,GACFjO,EAAM,GAAG23C,aAAa,SAAU1pC,IAapCo8B,EAAGuN,uBAPH,WACE,MAAMC,EAAW7oD,MAAMstB,KAAKxnB,EAASoZ,KAAK,oBACpC4pC,EAAUD,EAASA,EAASr7C,OAAS,GACvCs7C,GAAWA,EAAQxtC,gBACrBwtC,EAAQxtC,kBAMZ+/B,EAAG5vC,QAhTH,WACE4I,EAAW2nC,OAAS,UAGpBX,EAAG+B,QAAU,CACX3zC,GAAI4K,EAAW0nC,SAAStyC,GACxBs/C,cAAe,YACfz7B,KAfK,YAAc07B,GAAAA,CAAQ,EAAG,MAkBhC30C,EAAW0nC,SAASkK,UAAW,EAC/B5xC,EAAWmuC,SAAU,EAErBtH,EAAI2I,YACDE,UAAU,CACTt6C,GAAI4K,EAAW0nC,SAAStyC,GACxB8zC,QAAQ,IAETuB,SAAS31C,MAAK,SAAUpD,GACnBA,EAAKuC,QACP4+C,EAAUnhD,EAAKmhD,QACfC,EAAgBO,GAAAA,CAAW3hD,EAAKs5C,MAChChE,EAAGoM,OAASC,GAAAA,CAAWP,OAG1Bh+C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI4/B,EAAGoM,OAAOj6C,OAAQiO,IAAK,CACzC,MAAMwtC,EAAQ5N,EAAGoM,OAAOhsC,GAExB,GADApH,EAAW+yC,WAAa6B,EAAM37C,UACH,IAAhB27C,EAAMb,OACXa,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAAS5hD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C25C,EAAG+N,UAAU3tC,GAAK0tC,EAAOF,EAAMb,MAAMc,eAK5CzoC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,OA2QpB+vB,EAAG4H,OA5LH,WAEE5uC,EAAWmuC,SAAU,EAErB,MAAMz8C,EAAO,IAAKs1C,EAAGqH,MAErB,IAAK,IAAIjnC,EAAI,EAAGA,EAAI4/B,EAAGoM,OAAOj6C,OAAQiO,IAAK,CACzC,MAAMwtC,EAAQ5N,EAAGoM,OAAOhsC,GACpBwtC,EAAMb,YAA4C,IAA5BriD,EAAKkjD,EAAMb,MAAM7W,SAEpCwP,GAAAA,CAAOkI,EAAMI,WAChBhO,EAAG+B,QAAQ6L,EAAMI,SAAWrpD,MAAMoQ,QAAQrK,EAAKkjD,EAAMb,MAAM7W,QACvDxrC,EAAKkjD,EAAMb,MAAM7W,OAAOlgC,OACxBtL,EAAKkjD,EAAMb,MAAM7W,QAGnB91B,IAAMyrC,IACHnG,GAAAA,CAAO1sC,EAAW0nC,SAASgN,iBAC9B1N,EAAG+B,QAAQ2L,cAAgB10C,EAAW0nC,SAASgN,cAC/C1N,EAAG+B,QAAQ9vB,KAAOttB,MAAMoQ,QAAQrK,EAAKkjD,EAAMb,MAAM7W,QAC7CxrC,EAAKkjD,EAAMb,MAAM7W,OAAOlgC,OACxBtL,EAAKkjD,EAAMb,MAAM7W,SAIN,WAAf0X,EAAM37C,OACRvH,EAAKkjD,EAAMb,MAAM7W,OAASxrC,EAAKkjD,EAAMb,MAAM7W,OAAOxkC,KAC/C+U,GAASA,EAAK5d,SAMvB,MAAMolD,EAAetpD,MAAMoQ,QAAQirC,EAAGoM,QAClCpM,EAAGoM,OAAO//C,QAAQuhD,GAAyB,WAAfA,EAAM37C,OAClC,GAEEi8C,EAAUrG,GAAAA,CACd,CACEjD,KAAMl6C,GAERs1C,EAAG+B,SAGCoM,EAA4B,MAARzjD,GAAgBujD,EAAa97C,OAAS,EAC1Di8C,EAAyB,OAAT1jD,GAA0C,OAAzBqW,KAAKE,UAAUvW,GAnFxD,IAAgB2jD,EApCK9lD,GAwHG4lD,GApFRE,EAqFHH,EApFJ96C,EAAM,CACXoB,IAAM,GAAEqrC,EAAIyI,wBAAwB+F,EAAQjgD,aAC5CsG,QAAS,CAAE,oBAAgBwC,GAC3BxM,KAAM4jD,GAAAA,CAAeD,EAAS,IACzBrC,EACHuC,gBAAiB,IAAIhD,WAEvB9C,OAAQ,UA8EN2F,EACAvO,EAAI2I,YAAYvD,QAAQiJ,GAASzK,SACjC+K,QAAQC,OAAO,iBAGhB3gD,KAAKq+C,GACL/mC,OAhIgB7c,EAgIE,SAjHZ,SAAU0nB,GACf,MAAM22B,EAAQF,EACXG,SACAC,YACC9tC,EAAW0nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACX7pC,OAAOva,QAAQkD,QAAQsjB,SAAS05B,cAAc,mBAEjD4D,EAASxD,KAAK0D,GAEd5G,EAAG2G,OAAOp+C,GAAQ0nB,EAAIvlB,QAsGvBu9C,SAAQ,KACFjI,EAAGqH,KAAKjgB,UACX4Y,EAAGqH,KAAO,IAjLhBruC,EAAWmuC,SAAU,MAqTvBnH,EAAGI,OA9HH,SAAgB73C,EAAM2a,GACf88B,EAAGqH,KAAK9+C,KACXy3C,EAAGqH,KAAK9+C,GAAQ,IAGlB,MAAMyJ,EAAMguC,EAAGqH,KAAK9+C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTguC,EAAGqH,KAAK9+C,GAAMga,OAAOvQ,EAAK,GAE1BguC,EAAGqH,KAAK9+C,GAAM/E,KAAK0f,IAsHvB88B,EAAG7c,OAlHH,SAAgB56B,EAAM2a,GAKpB,OAJK88B,EAAGqH,KAAK9+C,KACXy3C,EAAGqH,KAAK9+C,GAAQ,IAGXy3C,EAAGqH,KAAK9+C,GAAM0I,QAAQiS,IAAS,GA8GxC88B,EAAG+N,UAAY,GAEf/N,EAAGqH,KAAO,GACVrH,EAAG2G,OAAS,GACZ3G,EAAGwH,SAAW,GC1WhB,SAASkH,EACP11C,EACAwC,EACAowC,EACAx4C,EACAysC,EACAE,GAEA,MAAMC,EAAKj9C,KACX,IAAI8oD,EAAU,KAkHd,SAAS8C,IACP,MAAO,YAAchB,GAAAA,CAAQ,EAAG,KAlHlC3N,EAAG+N,UAAY,GAGf/N,EAAGqH,KAAO,GACVrH,EAAG2G,OAAS,GACZ3G,EAAGwH,SAAW,GACdxH,EAAG4O,aAAc,EAEjB5O,EAAGsM,YAAc,SAAUhkD,GACzB,OAAOsjD,EAAKU,YAAYhkD,IAmP1B03C,EAAG5vC,QAlHH,WAGE,GAFA4I,EAAW2nC,OAAS,SAEhB3nC,EAAW+oC,SAAW/oC,EAAW+oC,QAAQC,YAC3C,GAAIhpC,EAAW+oC,QAAQC,YAAY5zC,GACjC,GAAI4K,EAAW+oC,QAAQC,YAAYuC,OAEjC/oC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,gBAEP,CACL,MAAMi2C,EAAoB71C,EAAW+oC,QAAQC,YAAY5zC,GAEnD1D,EAAOqW,KAAKE,UAAU,CAC1B6tC,QAAS,OACT9M,YAAa,CACX5zC,GAAIygD,GAENhoB,QAAS,CACPz4B,GAAI4K,EAAW+oC,QAAQlb,QAAQz4B,IAEjC27C,YAAa,YACb1G,QAAQ,EACRC,YAAa,UACbC,SAAUC,GAAAA,GAAS74B,OAAO,yBAG5BvX,EAAM,CACJoB,IAAM,GAAEwE,EAAW0nC,SAAS6H,gCAAgCsG,mBAAmC71C,EAAW0nC,SAASp8B,QACnH5P,QAAS,CAAE,eAAgB,mCAC3BhK,KAAMA,EACN+9C,OAAQ,QAIVzvC,EAAW+oC,QAAU,CACnB3zC,GAAI4K,EAAW0nC,SAAStyC,GACxB2gD,OAAQ,YACR98B,KAAM08B,KAGR31C,EAAW0nC,SAASkK,UAAW,EAE/B5xC,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,SAErDlC,EAAI2I,YACDE,UAAU,CACTt6C,GAAI4K,EAAW0nC,SAAStyC,GACxB8zC,QAAQ,IAETuB,SAAS31C,MAAK,SAAUpD,GACnBA,EAAKuC,QACP4+C,EAAUnhD,EAAKmhD,QACf7L,EAAGoM,OAAS1hD,EAAKs5C,SAGpBl2C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI4/B,EAAGoM,OAAOj6C,OAAQiO,IAAK,CACzC,MAAMwtC,EAAQ5N,EAAGoM,OAAOhsC,GACxB,GAAIwtC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAAS5hD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C25C,EAAG+N,UAAU3tC,GAAK0tC,EAAOF,EAAMb,MAAMc,eAI1CzoC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,WAKpBzU,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,iBAKdI,EAAW+oC,QAAU,CACnB3zC,GAAI4K,EAAW0nC,SAAStyC,GACxB2gD,OAAQ,YACR98B,KAAM08B,KAGR31C,EAAW0nC,SAASkK,UAAW,EAE/B5xC,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,SAErDlC,EAAI2I,YACDE,UAAU,CACTt6C,GAAI4K,EAAW0nC,SAAStyC,GACxB8zC,QAAQ,IAETuB,SAAS31C,MAAK,SAAUpD,GACnBA,EAAKuC,QACP4+C,EAAUnhD,EAAKmhD,QACf7L,EAAGoM,OAAS1hD,EAAKs5C,SAGpBl2C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI4/B,EAAGoM,OAAOj6C,OAAQiO,IAAK,CACzC,MAAMwtC,EAAQ5N,EAAGoM,OAAOhsC,GACxB,GAAIwtC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAAS5hD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C25C,EAAG+N,UAAU3tC,GAAK0tC,EAAOF,EAAMb,MAAMc,eAI1CzoC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,OAOtB+vB,EAAG4H,OAhMH,WACE,IAAIhD,EAAO,sBAEX,IAAK,IAAIxkC,EAAI,EAAGA,EAAI4/B,EAAGoM,OAAOj6C,OAAQiO,IAAK,CACzC,MAAMwtC,EAAQ5N,EAAGoM,OAAOhsC,GAEpBwtC,EAAMb,YAA+C,IAA/B/M,EAAGqH,KAAKuG,EAAMb,MAAM7W,SAEvCwP,GAAAA,CAAOkI,EAAMoB,YAChBh2C,EAAW+oC,QAAQ6L,EAAMoB,UAAYrqD,MAAMoQ,QACzCirC,EAAGqH,KAAKuG,EAAMb,MAAM7W,QAElB8J,EAAGqH,KAAKuG,EAAMb,MAAM7W,OAAOlgC,OAC3BgqC,EAAGqH,KAAKuG,EAAMb,MAAM7W,QAGrBwP,GAAAA,CAAOkI,EAAMI,WAChBh1C,EAAW+oC,QAAQ6L,EAAMI,SAAWrpD,MAAMoQ,QACxCirC,EAAGqH,KAAKuG,EAAMb,MAAM7W,QAElB8J,EAAGqH,KAAKuG,EAAMb,MAAM7W,OAAOlgC,OAC3BgqC,EAAGqH,KAAKuG,EAAMb,MAAM7W,QAGtB91B,IAAMyrC,IACHnG,GAAAA,CAAO1sC,EAAW0nC,SAASqO,UAC9B/1C,EAAW+oC,QAAQgN,OAAS/1C,EAAW0nC,SAASqO,OAChD/1C,EAAW+oC,QAAQ9vB,KAAOttB,MAAMoQ,QAAQirC,EAAGqH,KAAKuG,EAAMb,MAAM7W,QACxD8J,EAAGqH,KAAKuG,EAAMb,MAAM7W,OAAOlgC,OAC3BgqC,EAAGqH,KAAKuG,EAAMb,MAAM7W,SAIxB8J,EAAGqH,KAAKuG,EAAMb,MAAM7W,SACtB0O,GAAQgJ,EAAMb,MAAM7W,MAAQ,KAAO8J,EAAGqH,KAAKuG,EAAMb,MAAM7W,OAAS,OAnExE,IAAqBrP,EAAAA,EA0EjBghB,GAAAA,CACE,CACEjD,KAAMA,EACNqK,QAASj2C,EAAW0nC,SAASuO,QAC7BC,WAAYl2C,EAAW0nC,SAASwO,YAElCl2C,EAAW+oC,SA/Ef/B,EAAG4O,aAAc,EAEjB/O,EAAI2I,YACDxc,OAAOnF,GACP4c,SAAS31C,MAAK,SAAUpD,UAChBs1C,EAAG2G,OAAOgD,iBAEjB3wC,EAAW+oC,QAAQlb,QAAU,CAC3Bz4B,GAAI1D,EAAKm8B,QAAQz4B,IAGnB4K,EAAW+oC,QAAQC,YAAc,CAC/B5zC,GAAI1D,EAAKs3C,YAAY5zC,IAIvB4K,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,SAGrD/B,EAAG4O,aAAc,EAjChB51C,EAAW0nC,SAASyO,sBAOvB3zC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,YANZ4C,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAmCXwM,OAAM,SAAU6K,GAEf+vB,EAAG4O,aAAc,EAEjBrlC,QAAQnhB,MAAM6nB,OAqMpB+vB,EAAGI,OAzIH,SAAgB73C,EAAM2a,GACf88B,EAAGqH,KAAK9+C,KACXy3C,EAAGqH,KAAK9+C,GAAQ,IAGlB,MAAMyJ,EAAMguC,EAAGqH,KAAK9+C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTguC,EAAGqH,KAAK9+C,GAAMga,OAAOvQ,EAAK,GAE1BguC,EAAGqH,KAAK9+C,GAAM/E,KAAK0f,IAiIvB88B,EAAG7c,OA7HH,SAAgB56B,EAAM2a,GAKpB,OAJK88B,EAAGqH,KAAK9+C,KACXy3C,EAAGqH,KAAK9+C,GAAQ,IAGXy3C,EAAGqH,KAAK9+C,GAAM0I,QAAQiS,IAAS,GCtJ1C,SAASksC,EACPp2C,EACAwC,EACAkrC,EACA7G,EACAE,EACAD,GAEA,MAAME,EAAKj9C,KAQX,SAASqkD,IACHpuC,EAAW0nC,SAASwB,OACtB1mC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAASylC,IACP2B,EAAGqH,KAAO,GACVrH,EAAGsH,QAAU,KACbtH,EAAGuH,UAAY,KACfvH,EAAGwH,SAASC,eACZzH,EAAGwH,SAASE,gBAEZ1uC,EAAW+oC,QAAU,GAErB/oC,EAAW2uC,gBAAiB,EAC5B3uC,EAAWzJ,MAAM,QAQnB,SAAS25B,EAAY3gC,GACnB,OAAO,SAAU0nB,GACf+vB,EAAG2G,OAAOp+C,GAAQ0nB,EAAIvlB,KAEtB,MAAMk8C,EAAQF,EACXG,SACAC,YACC9tC,EAAW0nC,SAASqG,0BAClB,yBAEHC,WAAW,oBACX7pC,OAAOva,QAAQkD,QAAQsjB,SAAS05B,cAAc,mBAEjD4D,EAASxD,KAAK0D,IAIlB,SAASM,IACPluC,EAAWmuC,SAAU,EAjDvBnH,EAAGqH,KAAO,GACVrH,EAAG2G,OAAS,GA+FZ3G,EAAG5vC,QAXH,WACE4I,EAAW2nC,OAAS,YAGpB3nC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAE/C9mC,EAAWmuC,SAAU,GAKvBnH,EAAG4H,OA7CH,WACE5uC,EAAWmuC,SAAU,EAEjBnuC,EAAW+oC,QAAQC,aAAehpC,EAAW+oC,QAAQC,YAAY5zC,GACnEyxC,EAAIsD,gBACDC,aAAa,CACZh1C,GAAI4K,EAAW+oC,QAAQC,YAAY5zC,GACnCihD,KAAMrP,EAAGqH,KAAKgI,OAEf5L,SAAS31C,MAAK,kBACNkyC,EAAG2G,OAAOiB,OAEjB,MAAMhB,EAAQF,EACXG,SACAC,YACC9tC,EAAW0nC,SAASsH,0BAClB,2BAEHhB,WAAW,oBACX7pC,OAAOva,QAAQkD,QAAQsjB,SAAS05B,cAAc,mBAEjD4D,EAASxD,KAAK0D,MAEf94C,KAAKuwC,GACLvwC,KAAKs5C,GACLhiC,MAAM8jB,EAAY,WAClB+e,QAAQf,IAEXA,IACAhe,EAAY,YAiBhB8W,EAAGkI,KAxEH,WACE7J,IACA+I,KCrCJ,SAASkI,EACPt2C,EACAhV,EACAglD,EACAxtC,EACA7C,EACAknC,EACAE,EACAD,GAGA,IACIsJ,EADAmG,GAAS,EAIb,SAASzF,IACP,IAAI9H,EAAc,GACdwN,GAAO,EAEX3P,EAAIsD,gBACD1vC,IAAI,CACHrF,GAAI4K,EAAW+oC,QAAQC,YAAY5zC,KAEpCq1C,SAAS31C,MAAK,SAAUpD,GAGvB,OAFAs3C,EAAct3C,EAEPm1C,EAAIsD,gBAAgBS,YAAY,CACrCC,MAAO7qC,EAAW+oC,QAAQC,YAAY5zC,KACrCq1C,YAEJ31C,MAAK,SAAUpD,GACd8kD,EAAO9kD,EAAKs5C,KAAK7xC,OAAS,EAEtB6vC,EAAYqB,QACdrqC,EAAW+oC,QAAQC,YAAYqB,QAAS,EACxCrqC,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,SAErB,cAA5BC,EAAY+H,aACdvuC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,aAEtCopC,EAAYuC,QAErBvrC,EAAW+oC,QAAQC,YAAYuC,OAASvC,EAAYuC,OACpDvrC,EAAWinC,cAAcF,EAAiB/mC,EAAW+oC,SAErDvmC,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,aAC/B42C,GACTh0C,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,eAG3CwM,OAAM,SAAU6K,GACf,OAAQA,EAAI0wB,QACV,KAAK,IACHnlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAKxB,SAASw/B,IACP,GACEz2C,EAAW+oC,SACX/oC,EAAW+oC,QAAQC,aACnBhpC,EAAW+oC,QAAQC,YAAY5zC,KAC9BmhD,EACD,CAEAA,GAAS,EAGT,MAAMG,EAAM,IAAIC,eAEhBD,EAAIF,KACF,MACAx2C,EAAW0nC,SAAS6H,OAClB,0BACAvvC,EAAW+oC,QAAQC,YAAY5zC,GAC/B,kBACA4K,EAAW0nC,SAASp8B,OACtB,GAEForC,EAAIE,iBAAiB,eAAgB,mCAErCF,EAAIG,KACF9uC,KAAKE,UAAU,CACb6tC,QAAS,OACT9M,YAAa,CACX5zC,GAAI4K,EAAW+oC,QAAQC,YAAY5zC,IAErCy4B,QAAS,CACPz4B,GAAI4K,EAAW+oC,QAAQlb,QAAQz4B,IAEjC27C,YAAa,YACb1G,QAAQ,EACRC,YAAa,UACbC,SAAUC,GAAAA,GAAS74B,OAAO,0BAIP,IAAnB+kC,EAAII,YAAmC,MAAfJ,EAAI/O,SAE9B3nC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,KAjG1C/8C,KA0HRqN,QAbH,WACE4I,EAAW2nC,OAAS,UAGlB3nC,EAAW+oC,SACX/oC,EAAW+oC,QAAQC,aACnBhpC,EAAW+oC,QAAQC,YAAY5zC,KAG/Bg7C,EAAyBJ,EAAUc,EAAgB,OAQvD9lD,EAAOsB,IAAI,YAxBX,WACEqT,EAAQo3C,oBAAoB,eAAgBN,GAC5C92C,EAAQo3C,oBAAoB,SAAUN,GAEtCzG,EAAU9hD,OAAOkiD,MAqBnBzwC,EAAQ0sC,iBAAiB,eAAgBoK,GACzC92C,EAAQ0sC,iBAAiB,SAAUoK,GC/GrC,SAASO,EAAgBpE,GACvB,OAAO,SAAUrkD,GACf,OAAOqkD,EAAKU,YAAY/kD,6WAqI5B3E,QACGC,OAFiB,cAEG,CACnB,YACA,SACA,aACA,aACA,aACA,aACA,QACA,UACA,YACA,qBACA,WACA,SAEDwJ,OAAO,YAAa2jD,GACpBC,SAAS,iBAAkB,eAC3BA,SAAS,kBAAmB,WAC5BA,SAAS,iBAAkB,UAC3BrqD,UAAU,WAlCb,WACE,OAAO,SAAUC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,oBAAoB,SAAU/C,GACrB,KAAhBA,EAAMo6C,QACR73C,EAAMmB,QAAO,WACXnB,EAAMzB,MAAM2B,EAAMmqD,YAEpB5sD,EAAMgD,yBA4BXV,UAAU,WApJb,WA0GE,MAAO,CACL0F,KAVF,SAAczF,EAAOC,GACnBA,EAAQzC,GAAG,SAAS,WACE+lB,SAAS+mC,eAAe,iBAlGhD,SAAsBlsC,EAAMpe,GAE1B,MAAMuqD,EAAMhnC,SAASo5B,cAAc,OAC7BT,EAAUl8C,EAAMk8C,QAChBrB,EAAW76C,EAAM66C,SACvB,IAAI2P,EAEJ,IAAK,IAAIjwC,EAAI,EAAGA,EAAIva,EAAMykD,SAASn4C,OAAQiO,IAAK,CAC9C,MAAMymB,EAAUhhC,EAAMykD,SAASlqC,GAC/B,IAAI8jC,EAAS,WACb,MAAMU,EAAO,YAAc/d,EAAQ+d,KAC7B0L,EACJ,YAAc9M,GAAAA,CAAO3c,EAAQge,WAAWl6B,OAAO,uBAEjD,GAAU,IAANvK,EAAJ,CAKA,OAAQva,EAAM66C,SAAS4D,iBACrB,IAAK,gBACHJ,GACwB,QAAtBrd,EAAQsd,UACJtd,EAAQ0d,OACN7D,EAAS8D,WAAa3d,EAAQ0d,OAC9B,SACF7D,EAAS0D,eACTrC,EAAQ9vB,MACR,UAAY4U,EAAQwd,UAC1B,MAEF,IAAK,cACHH,GACwB,QAAtBrd,EAAQsd,UACJtd,EAAQ0d,OACN1d,EAAQ4d,KAAKC,OAAS7d,EAAQ4d,KAAKE,SACnC,SACFjE,EAAS0D,eACTrC,EAAQ9vB,MACR,UAAY4U,EAAQwd,UAC1B,MAEF,IAAK,iBACHH,GACwB,QAAtBrd,EAAQsd,UACJtd,EAAQ0d,OACN1d,EAAQ4d,KAAKE,SACb,SACFjE,EAAS0D,eACTrC,EAAQ9vB,MACR,UAAY4U,EAAQwd,UAC1B,MAEF,QACEH,GACwB,QAAtBrd,EAAQsd,UACJtd,EAAQ0d,QACL7D,EAAS8D,YAAc,SAAW3d,EAAQ0d,OAC3C,SACF7D,EAAS0D,eACTrC,EAAQ9vB,MACR,UAAY4U,EAAQwd,UAG9B+L,EAAI3N,YAAYr5B,SAASmnC,eAAerM,IACxCkM,EAAI3N,YAAYr5B,SAASo5B,cAAc,OACvC4N,EAAI3N,YAAYr5B,SAASmnC,eAAe3L,IACxCwL,EAAI3N,YAAYr5B,SAASo5B,cAAc,OACvC4N,EAAI3N,YAAYr5B,SAASmnC,eAAeD,IACxCF,EAAI3N,YAAYr5B,SAASo5B,cAAc,OACvC4N,EAAI3N,YAAYr5B,SAASo5B,cAAc,YAvDrC6N,EAAYxpB,EAAQge,UA0DxB,MAAM2L,EAAWlnC,OAAOkmC,OAExBgB,EAASpnC,SAASqnC,MAAM,sBAAwBrnC,SAAS8sB,MAAQ,YACjEsa,EAASpnC,SAASqnC,MAAM,kBACxBD,EAASpnC,SAASqnC,MAAM,iBAAmB/P,EAASuO,QAAU,SAC9DuB,EAASpnC,SAASqnC,MAChB,oBACEjN,GAAAA,CAAO6M,GAAW1lC,OAAO,uBACzB,SAEJ6lC,EAASpnC,SAASqnC,MAChB,oBAAsBjN,GAAAA,GAAS74B,OAAO,uBAAyB,SAEjE6lC,EAASpnC,SAASqnC,MAAML,EAAIM,WAC5BF,EAASpnC,SAASqnC,MAAM,kBAExBD,EAASpnC,SAASw5B,QAClB4N,EAASG,QAETH,EAASI,QACTJ,EAAS5N,QAOLiO,CAAaC,EAAajrD,OAO9BqE,SAAU,QA0CXnG,WAAW,iBAAkBglD,GAE7BhlD,WAAW,oBAAqB0iD,GAEhCn4C,OA1BH,sBA0BU,SAAUyiD,GAChBA,EAAmBC,qBAEpBjtD,WAAW,kBAAmB27C,GAE9Bz8C,QAAQ,MAAOklD,GAEf75C,OAAOq3C,GACPrqC,IAAIgqC,GAEJvhD,WAAW,oBAAqB4nD,GAEhCr9C,OAtCH,sBAsCU,SAAUyiD,GAChBA,EAAmBC,qBAEpBjtD,WAAW,mBAAoB2qD,GAE/B3qD,WAAW,sBAAuBqrD,GAElCrrD,WAAW,oBAAqBurD,wFC/MnCzsD,EAAOouD,QAAU,WACf,GAA0B,iBAAfC,WACT,OAAOA,WAGT,IAAItwC,EAEJ,IAGEA,EAAI7d,MAAQ,IAAI0mB,SAAS,cAAb,GACZ,MAAOpE,GAEP,GAAsB,iBAAXiE,OACT,OAAOA,OAIT,GAAoB,iBAAT7Y,KACT,OAAOA,KAIT,QAAsB,IAAX,EAAAmQ,EACT,OAAO,EAAAA,EAIX,OAAOA,EA5BQ,wECHjB,WAoBE7d,QAjBM4d,EAAO,SAON,KAFU,EAAF,WACL,OAAQA,EAAK2tC,eAWjB,WAWJ,SAASv5C,EAAQhO,GAEb,MAAmC,mBAA5B,GAAK8Q,SAAS/S,KAAKiC,GAG9B,SAASoqD,EAAapqD,GAElB,QAAQgO,EAAQhO,IAAuB,iBAARA,IAAsBA,GAASA,aAAeqqD,MAAWrqD,aAAeuuB,MAQ3G,SAAS+7B,IAEL,MAA2B,mBAAb9F,SAGlB,SAAS+F,IAEL,GAAID,IACA,OAAO,IAAI9F,SAkCnB,SAASgG,EAAmBC,EAAYtuD,EAASuuD,EAAUC,GAEvD,IAAI1S,EAAQ,EAEZ,IAAK,IAAIp2C,KAAO4oD,EAAY,CAExB,GAAIA,EAAW/rD,eAAemD,GAAM,CAEhC,IAAI+oD,EAAWD,GAAa9oD,EACxBrB,EAAQrE,EAAQirB,QAAQqjC,EAAW5oD,IAevC,GAbI8oD,GAAaP,EAAaK,KAC1BG,EAAWD,EAAY,IAAM9oD,EAAM,KAGnC8oD,GAAa38C,EAAQy8C,KAGjBG,EADA58C,EAAQxN,IAAUrE,EAAQ+oD,qBACfyF,EAAY,IAAM1S,EAAQ,IAE1B0S,EAAY,MAI3B38C,EAAQxN,IAAU4pD,EAAa5pD,GAE/BgqD,EAAmBhqD,EAAOrE,EAASuuD,EAAUE,QAE1C,GAAIpqD,aAAiBqqD,SAExB,IAAK,IAAInxC,EAAI,EAAGA,EAAIlZ,EAAM4K,OAAQsO,IAC9BgxC,EAASr0B,OAAOu0B,EAAW,IAAMlxC,EAAI,IAAKlZ,EAAM2b,KAAKzC,SAElDlZ,aAAiB6pD,KAExBK,EAASr0B,OAAOu0B,EAAUpqD,EAAOA,EAAMgB,MAEhChB,aAAiB+tB,KAExBm8B,EAASr0B,OAAOu0B,EAAUpqD,EAAMsqD,gBAEb,OAAVtqD,GAAkBrE,EAAQgpD,mBAAgC,OAAV3kD,SAA6B2P,IAAV3P,GAE5EkqD,EAASr0B,OAAOu0B,EAAUpqD,GAGlCy3C,IAEJ,OAAOyS,EAEX,OAhFA,SAAiBD,EAAYtuD,GAEzB,GAAIA,GAAWA,EAAQqrD,iBAEnB,GAnB8B,mBAmBDrrD,EAAQqrD,gBAnBlBnxB,OAqBf,KAAM,qDAEP,IAAKi0B,IAER,KAAM,8FA3Bd,IA0CQS,EA5DG,CAgDc,CACjBvD,gBAAiB+C,IACjBrF,sBAAsB,EACtBC,mBAAmB,EACnB/9B,QAAS,SAAS5mB,GACd,MAAqB,kBAAVA,GACCA,EAAQ,IAAK,IAElBA,IAIkCrE,GAAW,IA5DlCyO,QAAO,SAAUogD,EAAOC,GAI9C,OAHA17C,OAAOC,KAAKy7C,GAAeluD,SAAQ,SAAUmuD,GACzCF,EAAME,GAAaD,EAAcC,MAE9BF,IACR,IAyDH,OAAOR,EAAmBC,EAAYM,EAAeA,EAAcvD,kBA5EjCtrD,IACjC,QAFM,OAEN,oECDD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,8FAA8FtsC,MAClG,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1C2sC,cAAe,SACfC,KAAM,SAAU98C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB+8C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN3zC,EAAG,mBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB5xD,CAAQ,EAAQ,8FCOlD,SAAWugD,GAAU,aAIzB,IAAIsR,EAAa,SAAUxxC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyxC,EAAU,CACN50C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk8C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/3B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5sD,EAAQ6sD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3gD,EAAMghD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACArhD,EAAMA,EAAImhD,EAAgB,EAAI,IAE3BnhD,EAAI+D,QAAQ,MAAO48C,KAGlCvC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGG3O,EAAO0O,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU98C,GACZ,MAAO,MAAQA,GAEnB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG60C,EAAU,KACbjB,GAAIiB,EAAU,KACdj9C,EAAGi9C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd94B,EAAG84B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBQ,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC68C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyB5xD,CAAQ,EAAQ,8FCDlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wEAAwEtsC,MAC5E,KAEJusC,YAAa,wEAAwEvsC,MACjF,KAEJwsC,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,OACH4zC,GAAI,WACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh4B,EAAG,MACHi4B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPX,EAAa,SAAUxxC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyxC,EAAU,CACN50C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk8C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/3B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5sD,EAAQ6sD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3gD,EAAMghD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACArhD,EAAMA,EAAImhD,EAAgB,EAAI,IAE3BnhD,EAAI+D,QAAQ,MAAO48C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGG3O,EAAO0O,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU98C,GACZ,MAAO,MAAQA,GAEnB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG60C,EAAU,KACbjB,GAAIiB,EAAU,KACdj9C,EAAGi9C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd94B,EAAG84B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC09C,WAAY,SAAUltD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO02C,EAAU12C,MAEpBjH,QAAQ,KAAM,MAEvB68C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyB5xD,CAAQ,EAAQ,8FCIlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wEAAwEtsC,MAC5E,KAEJusC,YAAa,wEAAwEvsC,MACjF,KAEJwsC,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,OACH4zC,GAAI,WACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh4B,EAAG,MACHi4B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5xD,CAAQ,EAAQ,8FCElD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFnS,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,6EAA6EtsC,MACjF,KAEJusC,YAAa,6EAA6EvsC,MACtF,KAEJwsC,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU98C,GACZ,MAAO,MAAQA,GAEnB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,OACH4zC,GAAI,WACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh4B,EAAG,MACHi4B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERmB,SAAU,SAAUptD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO42C,EAAU52C,MAEpBjH,QAAQ,KAAM,MAEvB09C,WAAY,SAAUltD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO02C,EAAU12C,MAEpBjH,QAAQ,KAAM,MAEvB68C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,yEAAyEtsC,MAC7E,KAEJusC,YAAa,yEAAyEvsC,MAClF,KAEJwsC,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,OACH4zC,GAAI,WACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJh4B,EAAG,MACHi4B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETb,EAAa,SAAUxxC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVyxC,EAAU,CACN50C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJk8C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ/3B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJk4B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAe5sD,EAAQ6sD,GAC5C,IAAIC,EAAIN,EAAWJ,GACf3gD,EAAMghD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACArhD,EAAMA,EAAImhD,EAAgB,EAAI,IAE3BnhD,EAAI+D,QAAQ,MAAO48C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGC3O,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,wCAAwCzsC,MAAM,KAC7D0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU98C,GACZ,MAAO,MAAQA,GAEnB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG60C,EAAU,KACbjB,GAAIiB,EAAU,KACdj9C,EAAGi9C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd94B,EAAG84B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUptD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO42C,EAAU52C,MAEpBjH,QAAQ,KAAM,MAEvB09C,WAAY,SAAUltD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO02C,EAAU12C,MAEpBjH,QAAQ,KAAM,MAEvB68C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCpS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EtsC,MACnF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,qEAAqExsC,MAC3E,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN3zC,EAAG,kBACH4zC,GAAI,YACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAER/B,cAAe,0BACfC,KAAM,SAAU98C,GACZ,MAAO,mBAAmBuQ,KAAKvQ,IAEnC+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGfd,uBAAwB,wCACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl0C,EAAIk0C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp1C,IAAMo1C,EAFvBlB,EAAS,IAAOl0C,IAEsBo1C,EADvClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAYzB,SAASqS,EAAuBnB,EAAQQ,EAAetsD,GASnD,MAAY,MAARA,EACOssD,EAAgB,UAAY,UACpB,MAARtsD,EACAssD,EAAgB,UAAY,UAE5BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,yBAA2B,yBAC/Cf,GAAI,iBACJE,GAAI,uBACJE,GAAI,kBAOgC3rD,GArBvBid,MAAM,KAChBiwC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAyBCvS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,uGAAuG9E,MAC3G,KAEJmwC,WAAY,qGAAqGnwC,MAC7G,MAGRusC,YAAa,0DAA0DvsC,MACnE,KAEJwsC,SAAU,CACN1nC,OAAQ,0DAA0D9E,MAC9D,KAEJmwC,WAAY,0DAA0DnwC,MAClE,KAEJowC,SAAU,+CAEd3D,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN3zC,EAAG,kBACHpI,EAAG89C,EACH7B,GAAI6B,EACJ5B,EAAG4B,EACH3B,GAAI2B,EACJ35B,EAAG,QACHi4B,GAAI0B,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,yBACfC,KAAM,SAAU98C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQzB,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFtsC,MACxF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN3zC,EAAG,kBACH4zC,GAAI,aACJh8C,EAAG,SACHi8C,GAAI,YACJC,EAAG,MACHC,GAAI,UACJh4B,EAAG,MACHi4B,GAAI,UACJiC,EAAG,UACHC,GAAI,aACJjC,EAAG,QACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,8IAA8ItsC,MAClJ,KAEJusC,YAAa,iDAAiDvsC,MAAM,KACpEwsC,SAAU,+CAA+CxsC,MAAM,KAC/DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN3zC,EAAG,kBACH4zC,GAAI,aACJh8C,EAAG,eACHi8C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh4B,EAAG,aACHi4B,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFnS,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,mEAAmEvsC,MAC5E,KAEJwsC,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,uCAAuCzsC,MAAM,KAC5D0sC,YAAa,kCAAkC1sC,MAAM,KACrDitC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG,eACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAIzByzC,cAAe,uCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAb5C,GAEa,SAAbA,EADA4C,EAGa,UAAb5C,EACA4C,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAb5C,GAEa,YAAbA,EADA4C,EAAO,QACX,GAKX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KA9HyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,mEAAmEvsC,MAC5E,KAEJwsC,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,uCAAuCzsC,MAAM,KAC5D0sC,YAAa,kCAAkC1sC,MAAM,KACrDitC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG,eACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzByzC,cAAe,2BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,QAAb5C,GAAsB4C,GAAQ,GACjB,UAAb5C,GAAwB4C,EAAO,GACnB,UAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qJAAqJtsC,MACzJ,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJ4wC,iBAAkB,gBAClBC,kBAAkB,EAClBrE,SAAU,gFAAgFxsC,MACtF,KAEJysC,cAAe,oDAAoDzsC,MAC/D,KAEJ0sC,YAAa,6BAA6B1sC,MAAM,KAChDitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,QACH4zC,GAAI,YACJh8C,EAAG,aACHi8C,GAAI,WACJC,EAAG,cACHC,GAAI,YACJh4B,EAAG,WACHi4B,GAAI,UACJC,EAAG,YACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzByzC,cAAe,wCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACpB,YAAb5C,GAA0B4C,EAAO,GACrB,YAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,SAASmT,EAAyBjC,EAAQQ,EAAetsD,GAMrD,OAAO8rD,EAAS,IAoBpB,SAAkB/uC,EAAM+uC,GACpB,OAAe,IAAXA,EAKR,SAAsB/uC,GAClB,IAAIixC,EAAgB,CAChB7+C,EAAG,IACH4J,EAAG,IACHua,EAAG,KAEP,YAAsChlB,IAAlC0/C,EAAcjxC,EAAKnd,OAAO,IACnBmd,EAEJixC,EAAcjxC,EAAKnd,OAAO,IAAMmd,EAAKqX,UAAU,GAb3C65B,CAAalxC,GAEjBA,EAxBemxC,CALT,CACT9C,GAAI,WACJK,GAAI,MACJF,GAAI,UAE8BvrD,GAAM8rD,GAchD,SAASqC,EAAWrC,GAChB,OAAIA,EAAS,EACFqC,EAAWrC,EAAS,IAExBA,EAoBX,IAAIsC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EAAc,6IAqBdC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGC1T,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFtsC,MACpF,KAEJusC,YAAa,mDAAmDvsC,MAAM,KACtEwsC,SAAU,6CAA6CxsC,MAAM,KAC7DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,wBAAwB1sC,MAAM,KAC3CsxC,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBlE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,SACN3zC,EAAG,wBACH4zC,GAAI,YACJh8C,EAAG,cACHi8C,GAAI2C,EACJ1C,EAAG,SACHC,GAAI,SACJh4B,EAAG,YACHi4B,GAAIwC,EACJvC,EAAG,SACHC,GAAIsC,EACJrC,EAAG,WACHC,GApIR,SAAiCG,GAC7B,OAAQqC,EAAWrC,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBF,uBAAwB,kBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,YACfC,KAAM,SAAUnuC,GACZ,MAAiB,SAAVA,GAEXouC,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAOyC,EAAO,GAAK,OAAS,UAnKEryD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,SAASkU,EAAUhD,EAAQQ,EAAetsD,GACtC,IAAIS,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXqrD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI7rD,GADW,IAAXqrD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI7rD,GADW,IAAXqrD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIrrD,GADW,IAAXqrD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIrrD,GADW,IAAXqrD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIrrD,GADW,IAAXqrD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,8DAA8DvsC,MACvE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,cACH4zC,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAG,MACHi4B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlJyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJ6D,WAAY,oFAAoFnwC,MAC5F,KAEJ8E,OAAQ,qHAAqH9E,MACzH,KAEJowC,SAAU,mBAEd7D,YAAa,8DAA8DvsC,MACvE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,8DAA8DxsC,MACpE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,gCACLyE,IAAK,mBACLxE,KAAM,qCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBvwD,KAAK4vD,QAAgB,MAAQ,MAAQ,QAE9DY,QAAS,WACL,MAAO,YAA+B,IAAjBxwD,KAAK4vD,QAAgB,MAAQ,MAAQ,QAE9Da,SAAU,WACN,MAAO,YAA+B,IAAjBzwD,KAAK4vD,QAAgB,MAAQ,MAAQ,QAE9Dc,QAAS,WACL,MAAO,YAA+B,IAAjB1wD,KAAK4vD,QAAgB,MAAQ,MAAQ,QAE9De,SAAU,WACN,MACI,wBACkB,IAAjB3wD,KAAK4vD,QAAgB,MAAQ,MAC9B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN3zC,EAAG,aACH4zC,GAAI,YACJh8C,EAAG,WACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAI2O,EAAS,oFAAoFtsC,MACzF,KAEJusC,EAAc,kDAAkDvsC,MAAM,KACtEmxC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EAAc,wJAElB,SAASc,EAAOz0C,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAASo0C,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,IAAI9rD,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,IACD,OAAOssD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,UAAY,UAEvCrrD,EAAS,YAExB,IAAK,IACD,OAAO6rD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,SAAW,SAEtCrrD,EAAS,WAExB,IAAK,IACD,OAAO6rD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,SAAW,SAEtCrrD,EAAS,WAExB,IAAK,IACD,OAAO6rD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,MAAQ,OAEnCrrD,EAAS,MAExB,IAAK,IACD,OAAO6rD,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,SAAW,UAEtCrrD,EAAS,SAExB,IAAK,IACD,OAAO6rD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,OAAS,OAEpCrrD,EAAS,QAKvBm6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACb6E,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBAAmB,uKACnBC,uBAAwB,sDACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,mDAAmDxsC,MAAM,KACnEysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACN59B,EAAG,cAEP69B,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAGu3C,EACH3D,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAGw7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gEAAgEtsC,MACpE,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,oEAAoExsC,MAC1E,KAEJysC,cAAe,6BAA6BzsC,MAAM,KAClD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUiE,GAMd,OAAOA,GALK,UAAUtrD,KAAKsrD,GACrB,MACA,QAAQtrD,KAAKsrD,GACb,MACA,QAGVhE,KAAM,YACN3zC,EAAG,iBACH4zC,GAAI,aACJh8C,EAAG,YACHi8C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFtsC,MAC7F,KAEJusC,YAAa,qDAAqDvsC,MAC9D,KAEJwsC,SAAU,+EAA+ExsC,MACrF,KAEJysC,cAAe,+BAA+BzsC,MAAM,KACpD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EAEpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN3zC,EAAG,mBACH4zC,GAAI,YACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,MACHC,GAAI,SACJh4B,EAAG,UACHi4B,GAAI,aACJC,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACIoD,EAAS,GAiCb,OAlCQpD,EAyBA,GAEAoD,EADM,KA1BNpD,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXoD,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBApD,IAkCDA,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA9FyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFtsC,MAC1F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,qDAAqDxsC,MAAM,KACrEysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,cACH4zC,GAAI,cACJh8C,EAAG,WACHi8C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,WACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5xD,CAAQ,EAAQ,8FCMlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk8C,EAAG,CAAC,cAAe,gBACnB/3B,EAAG,CAAC,UAAW,aACfi4B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7C46C,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,8DAA8DxsC,MACpE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAGigD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh4B,EAAG87B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5xD,CAAQ,EAAQ,8FCAlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk8C,EAAG,CAAC,cAAe,gBACnB/3B,EAAG,CAAC,UAAW,aACfi4B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7C46C,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,8DAA8DxsC,MACpE,KAEJysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAGigD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh4B,EAAG87B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnBk8C,EAAG,CAAC,cAAe,gBACnB/3B,EAAG,CAAC,UAAW,aACfi4B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBvqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG/C46C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,8DAA8DxsC,MACpE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAGigD,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJh4B,EAAG87B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIzB,IAAI2O,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJE,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGC7O,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqC1sC,MAAM,KACxDitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,QACfC,KAAM,SAAU98C,GACZ,MAAO,OAASA,GAEpB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACN3zC,EAAG,iBACH4zC,GAAI,cACJh8C,EAAG,WACHi8C,GAAI,YACJC,EAAG,aACHC,GAAI,cACJh4B,EAAG,WACHi4B,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC09C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC68C,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAWhBA,EAAO0O,aAAa,KAAM,CAC/B+F,mBAAoB,qHAAqHpyC,MACrI,KAEJqyC,iBAAkB,qHAAqHryC,MACnI,KAEJssC,OAAQ,SAAUgG,EAAgBxtC,GAC9B,OAAKwtC,EAGiB,iBAAXxtC,GACP,IAAIzE,KAAKyE,EAAOqS,UAAU,EAAGrS,EAAO1Z,QAAQ,UAGrClO,KAAKq1D,kBAAkBD,EAAeE,SAEtCt1D,KAAKu1D,oBAAoBH,EAAeE,SARxCt1D,KAAKu1D,qBAWpBlG,YAAa,oDAAoDvsC,MAAM,KACvEwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1C6sC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCJ,KAAM,SAAU98C,GACZ,MAAyC,OAAjCA,EAAQ,IAAIsU,cAAc,IAEtCuoC,cAAe,gBACfM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVmF,WAAY,CACRjF,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBvC,SAAU,KAEdN,SAAU,SAAUzqD,EAAK4vD,GACrB,IApEY7iD,EAoERmiD,EAAS/0D,KAAK01D,YAAY7vD,GAC1B+pD,EAAQ6F,GAAOA,EAAI7F,QAIvB,OAzEYh9C,EAsEGmiD,GApEM,oBAAbruC,UAA4B9T,aAAiB8T,UACX,sBAA1CnT,OAAO1R,UAAUiT,SAAS/S,KAAK6Q,MAoE3BmiD,EAASA,EAAO5yD,MAAMszD,IAEnBV,EAAOhgD,QAAQ,KAAM66C,EAAQ,IAAO,EAAI,MAAQ,SAE3DiB,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,oBACH4zC,GAAI,kBACJh8C,EAAG,YACHi8C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,WACHi4B,GAAI,WACJC,EAAG,aACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,2FCMlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FtsC,MACjG,KAEJusC,YAAa,oDAAoDvsC,MAAM,KACvEwsC,SAAU,qDAAqDxsC,MAAM,KACrEysC,cAAe,gCAAgCzsC,MAAM,KACrD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNyE,KAAM,uCAEVrF,cAAe,cACfC,KAAM,SAAU98C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3ByoC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCQ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN3zC,EAAG,kBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,WACHi4B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyB5xD,CAAQ,EAAQ,8FCDlD,SAAWugD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8D7yC,MAC3E,KAEJusC,EAAc,kDAAkDvsC,MAAM,KACtEmxC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbynC,EAAYr6C,EAAEsgD,SAEdK,EAAe3gD,EAAEsgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1wD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3wD,KAAK4vD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5xD,CAAQ,EAAQ,8FCIlD,SAAWugD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8D7yC,MAC3E,KAEJusC,EAAc,kDAAkDvsC,MAAM,KACtEmxC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbynC,EAAYr6C,EAAEsgD,SAEdK,EAAe3gD,EAAEsgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1wD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3wD,KAAK4vD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB11D,CAAQ,EAAQ,8FCIlD,SAAWugD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8D7yC,MAC3E,KAEJusC,EAAc,kDAAkDvsC,MAAM,KACtEmxC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbynC,EAAYr6C,EAAEsgD,SAEdK,EAAe3gD,EAAEsgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1wD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3wD,KAAK4vD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8D7yC,MAC3E,KAEJusC,EAAc,kDAAkDvsC,MAAM,KACtEmxC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAETzT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbynC,EAAYr6C,EAAEsgD,SAEdK,EAAe3gD,EAAEsgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBvwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBxwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBzwD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjB1wD,KAAK4vD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjB3wD,KAAK4vD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqB11D,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACTxK,EAAG,CAAC,eAAgB,cAAe,iBACnC4zC,GAAI,CAACW,EAAS,UAAWA,EAAS,YAClC38C,EAAG,CAAC,aAAc,aAClBi8C,GAAI,CAACU,EAAS,UAAWA,EAAS,YAClCT,EAAG,CAAC,YAAa,YAAa,YAC9BC,GAAI,CAACQ,EAAS,SAAUA,EAAS,UACjCx4B,EAAG,CAAC,YAAa,YACjBk4B,EAAG,CAAC,UAAW,WAAY,WAC3BC,GAAI,CAACK,EAAS,OAAQA,EAAS,SAC/BJ,EAAG,CAAC,YAAa,QAAS,aAC1BC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIQ,EACOvqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAElDusD,EAAWxqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG1C46C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FtsC,MACjG,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJwsC,SAAU,iEAAiExsC,MACvE,KAEJysC,cAAe,gBAAgBzsC,MAAM,KACrC0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN3zC,EAAG63C,EACHjE,GAAIiE,EACJjgD,EAAGigD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ97B,EAAG87B,EACH7D,GAAI,WACJC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+FAA+FtsC,MACnG,KAEJusC,YAAa,8DAA8DvsC,MACvE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,sEAAsExsC,MAC5E,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACN59B,EAAG,WACHmiC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVxE,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN3zC,EAAG,iBACH4zC,GAAI,aACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,WACHi4B,GAAI,UACJC,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wEAAwEtsC,MAC5E,KAEJusC,YAAa,wEAAwEvsC,MACjF,KAEJwsC,SAAU,qDAAoExsC,MAC1E,KAEJysC,cAAe,qDAAoEzsC,MAC/E,KAEJ0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,wBACfC,KAAM,SAAU98C,GACZ,MAAO,aAAauQ,KAAKvQ,IAE7B+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,YACH4zC,GAAI,WACJh8C,EAAG,WACHi8C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EACFwP,QAAQ,UAAU,SAAUiH,GACzB,OAAO42C,EAAU52C,MAEpBjH,QAAQ,KAAM,MAEvB09C,WAAY,SAAUltD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO02C,EAAU12C,MAEpBjH,QAAQ,KAAM,MAEvB08C,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA5GyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIoV,EAAc,wEAAwE/yC,MAClF,KAEJgzC,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASlB,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,IAAI9rD,EAAS,GACb,OAAQT,GACJ,IAAK,IACD,OAAOusD,EAAW,oBAAsB,kBAC5C,IAAK,KACD9rD,EAAS8rD,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACD9rD,EAAS8rD,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9rD,EAAS8rD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9rD,EAAS8rD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACD9rD,EAAS8rD,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD9rD,EAAS8rD,EAAW,SAAW,SAIvC,OAEJ,SAAsBT,EAAQS,GAC1B,OAAOT,EAAS,GACVS,EACI0D,EAAcnE,GACdkE,EAAYlE,GAChBA,EARGoE,CAAapE,EAAQS,GAAY,IAAM9rD,EAW3Cm6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2GAA2GtsC,MAC/G,KAEJusC,YAAa,uEAAuEvsC,MAChF,KAEJwsC,SAAU,qEAAqExsC,MAC3E,KAEJysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACN59B,EAAG,WACHmiC,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVxE,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACN3zC,EAAGu3C,EACH3D,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAGw7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5xD,CAAQ,EAAQ,4FCIlD,SAAWugD,GAAU,aAIfA,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,wBAAwB1sC,MAAM,KAC3CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,eACHi8C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh4B,EAAG,aACHi4B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,4EAA4ExsC,MAClF,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN3zC,EAAG,YACH4zC,GAAI,cACJh8C,EAAG,eACHi8C,GAAI,cACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,YACHi4B,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB5xD,CAAQ,EAAQ,8FCElD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,uFAAuFtsC,MAC3F,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJ6wC,kBAAkB,EAClBrE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh4B,EAAG,UACHi4B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjBzxD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,uFAAuFtsC,MAC3F,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJ6wC,kBAAkB,EAClBrE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh4B,EAAG,UACHi4B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAEIyT,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGCxT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFtsC,MAC3F,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJoxC,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJh4B,EAAG,UACHi4B,GAAI,WACJiC,EAAG,cACHC,GAAI,cACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIuV,EAAsB,6DAA6DlzC,MAC/E,KAEJmzC,EAAyB,kDAAkDnzC,MACvE,KAGC29B,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGtsC,MACrG,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbquC,EAAuBjhD,EAAEsgD,SAEzBU,EAAoBhhD,EAAEsgD,SAJtBU,GAOfrC,kBAAkB,EAClBrE,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG,mBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aA4ChBA,EAAO0O,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,UACHi8C,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJh4B,EAAG,KACHi4B,GAAI,QACJC,EAAG,KACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aA4ChBA,EAAO0O,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJC,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACN3zC,EAAG,gBACH4zC,GAAI,YACJh8C,EAAG,UACHi8C,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJh4B,EAAG,QACHi4B,GAAI,WACJC,EAAG,OACHC,GAAI,YACJC,EAAG,WACHC,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFtsC,MAC7F,KAEJusC,YAAa,8DAA8DvsC,MACvE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,mDAAmDxsC,MAAM,KACnEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBvwD,KAAK4vD,QAAgB,KAAO,KAAO,QAE1DY,QAAS,WACL,MAAO,UAA6B,IAAjBxwD,KAAK4vD,QAAgB,KAAO,KAAO,QAE1Da,SAAU,WACN,MAAO,UAA6B,IAAjBzwD,KAAK4vD,QAAgB,KAAO,KAAO,QAE1Dc,QAAS,WACL,MAAO,UAA6B,IAAjB1wD,KAAK4vD,QAAgB,IAAM,KAAO,QAEzDe,SAAU,WACN,MACI,qBAAwC,IAAjB3wD,KAAK4vD,QAAgB,KAAO,KAAO,QAGlEgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU9/C,GACd,OAA0B,IAAtBA,EAAI9C,QAAQ,MACL,IAAM8C,EAEV,MAAQA,GAEnB+/C,KAAM,SACN3zC,EAAG,eACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,YACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyB5xD,CAAQ,EAAQ,iGCGlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,cACvB4zC,GAAI,CAACW,EAAS,aAAcA,EAAS,UACrC38C,EAAG,CAAC,aAAc,YAClBi8C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,WAAY,SAChBC,GAAI,CAACQ,EAAS,UAAWA,EAAS,SAClCx4B,EAAG,CAAC,YAAa,UACjBi4B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,WAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWxqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrC46C,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,wFAAwFnwC,MAChG,KAEJ8E,OAAQ,mJAAmJ9E,MACvJ,KAEJowC,SAAU,mBAEd7D,YAAa,4EAA4EvsC,MACrF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,qDAAqDxsC,MAAM,KACrEysC,cAAe,4CAA4CzsC,MAAM,KACjE0sC,YAAa,wBAAwB1sC,MAAM,KAC3CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNyE,KAAM,oCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN3zC,EAAG63C,EACHjE,GAAIiE,EACJjgD,EAAGigD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ97B,EAAG87B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,4BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAb5C,EACA4C,EACa,YAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmBryD,CAAQ,EAAQ,iGCGlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACTxK,EAAG,CAAC,qBAAsB,iBAC1B4zC,GAAI,CAACW,EAAS,cAAeA,EAAS,WACtC38C,EAAG,CAAC,aAAc,YAClBi8C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACQ,EAAS,WAAYA,EAAS,UACnCx4B,EAAG,CAAC,YAAa,UACjBi4B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWxqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrC46C,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,4EAA4EnwC,MACpF,KAEJ8E,OAAQ,wIAAwI9E,MAC5I,KAEJowC,SAAU,mBAEd7D,YAAa,4DAA4DvsC,MACrE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNyE,KAAM,mCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACN3zC,EAAG63C,EACHjE,GAAIiE,EACJjgD,EAAGigD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ97B,EAAG87B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,cACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,+BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmBryD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFtsC,MAC7F,KAEJusC,YAAa,yEAAyEvsC,MAClF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,mCAAmCzsC,MAAM,KACxD0sC,YAAa,qBAAqB1sC,MAAM,KACxCitC,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,WACH4zC,GAAI,WACJh8C,EAAG,WACHi8C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAKzByzC,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,SAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0EAA0EtsC,MAC9E,KAEJusC,YAAa,4DAA4DvsC,MACrE,KAEJwsC,SAAU,uCAAuCxsC,MAAM,KACvDysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACN59B,EAAG,WACHmiC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN3zC,EAAG,aACH4zC,GAAI,WACJh8C,EAAG,MACHi8C,GAAI,UACJC,EAAG,MACHC,GAAI,SAAUQ,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBx4B,EAAG,MACHi4B,GAAI,SAAUO,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBN,EAAG,OACHC,GAAI,SAAUK,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBJ,EAAG,MACHC,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBlC,cAAe,gEACfC,KAAM,SAAU98C,GACZ,MAAO,8BAA8BuQ,KAAKvQ,IAE9C+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPzC,EAAU,SAAW,eACrByC,EAAO,GACPzC,EAAU,QAAU,eAEpB,UAzFmB5vD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETqB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBCxT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,8EAA8E9E,MAClF,KAEJmwC,WAAY,0EAA0EnwC,MAClF,MAGRusC,YAAa,6DAA6DvsC,MACtE,KAEJwsC,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,kCAAkCzsC,MAAM,KACvD0sC,YAAa,qBAAqB1sC,MAAM,KACxCitC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV4D,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YAAa,+KAEbR,iBAAkB,+KAElBa,kBAAmB,uIAEnBC,uBAAwB,sFAExBlE,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN3zC,EAAG,cACH4zC,GAAI,WACJh8C,EAAG,UACHi8C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAKzByzC,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAlKyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,SAASkU,EAAUhD,EAAQQ,EAAetsD,GACtC,IAAIS,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXqrD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANI7rD,GADW,IAAXqrD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANI7rD,GADW,IAAXqrD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIrrD,GADW,IAAXqrD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIrrD,GADW,IAAXqrD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIrrD,GADW,IAAXqrD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,oGAAoG9E,MACxG,KAEJmwC,WAAY,gGAAgGnwC,MACxG,MAGRusC,YAAa,+DAA+DvsC,MACxE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,cACH4zC,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAG,MACHi4B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxJyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,IAAIyV,EAAc,gEAAgEpzC,MAC9E,KAEJ,SAAS6xC,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,IAAIW,EAAMpB,EACV,OAAQ9rD,GACJ,IAAK,IACD,OAAOusD,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAOY,GAAOX,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASP,EAAKQ,GACV,OACKA,EAAW,GAAK,WACjB,IACA8D,EAAYl2D,KAAKmzD,OACjB,aAIC1S,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGtsC,MACxG,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJ6wC,kBAAkB,EAClBrE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,gCAAgCzsC,MAAM,KACrD0sC,YAAa,qBAAqB1sC,MAAM,KACxCitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,cAAe,SACfC,KAAM,SAAU98C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3ByoC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCQ,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOmB,EAAK7vD,KAAK/B,MAAM,IAE3B0wD,QAAS,oBACTC,SAAU,WACN,OAAOiB,EAAK7vD,KAAK/B,MAAM,IAE3B4wD,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,KACN3zC,EAAGu3C,EACH3D,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAGw7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB5xD,CAAQ,EAAQ,8FCElD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,CACJxnC,OAAQ,4GAA4G9E,MAChH,KAEJmwC,WAAY,gGAAgGnwC,MACxG,MAGRusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,gEAAgExsC,MACtE,KAEJysC,cAAe,+BAA+BzsC,MAAM,KACpD0sC,YAAa,+BAA+B1sC,MAAM,KAClDitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACN3zC,EAAG,mBACH4zC,GAAI,cACJh8C,EAAG,OACHi8C,GAAI,UACJC,EAAG,MACHC,GAAI,SACJh4B,EAAG,KACHi4B,GAAI,QACJC,EAAG,OACHC,GAAI,UACJC,EAAG,OACHC,GAAI,WAER/B,cAAe,oCACfC,KAAM,SAAU98C,GACZ,MAAO,uBAAuBuQ,KAAKvQ,IAEvC+8C,SAAU,SAAU4C,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGfd,uBAAwB,0BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXzB,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFtsC,MAC7F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,6CAA6CxsC,MAAM,KAC7DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,wBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,GAAoC,UAAbA,EACvB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACN3zC,EAAG,iBACH4zC,GAAI,WACJh8C,EAAG,UACHi8C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIzB,SAASuU,EAAOz0C,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAASo0C,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,IAAI9rD,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,IACD,OAAOssD,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAI4C,EAAOrD,GAEHrrD,GACC6rD,GAAiBC,EAAW,WAAa,YAG3C9rD,EAAS,UACpB,IAAK,IACD,OAAO6rD,EAAgB,SAAW,SACtC,IAAK,KACD,OAAI6C,EAAOrD,GAEHrrD,GAAU6rD,GAAiBC,EAAW,UAAY,WAE/CD,EACA7rD,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAI0uD,EAAOrD,GAEHrrD,GACC6rD,GAAiBC,EACZ,gBACA,iBAGP9rD,EAAS,cACpB,IAAK,IACD,OAAI6rD,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACO7rD,EAAS,QAEbA,GAAU8rD,EAAW,OAAS,SAC9BD,EACA7rD,EAAS,QAEbA,GAAU8rD,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACO7rD,EAAS,UAEbA,GAAU8rD,EAAW,SAAW,WAChCD,EACA7rD,EAAS,UAEbA,GAAU8rD,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI4C,EAAOrD,GACArrD,GAAU6rD,GAAiBC,EAAW,KAAO,QAEjD9rD,GAAU6rD,GAAiBC,EAAW,KAAO,QAIvD3R,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFtsC,MACxF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,mFAAmFxsC,MACzF,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACN3zC,EAAGu3C,EACH3D,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAG,cACHC,GAAIwD,EACJx7B,EAAGw7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,gGAAgGtsC,MACpG,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU1zC,GACd,OAAQ,YAAY+F,KAAK/F,GAAK,MAAQ,MAAQ,IAAMA,GAExD2zC,KAAM,QACN3zC,EAAG,iBACH4zC,GAAI,aACJh8C,EAAG,YACHi8C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh4B,EAAG,YACHi4B,GAAI,YACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gGAAgGtsC,MACpG,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACCvwD,KAAK4vD,QAAU,EAAI,OAA0B,IAAjB5vD,KAAK4vD,QAAgB,IAAM,OACxD,OAGRY,QAAS,WACL,MACI,aACCxwD,KAAK4vD,QAAU,EAAI,OAA0B,IAAjB5vD,KAAK4vD,QAAgB,IAAM,OACxD,OAGRa,SAAU,WACN,MACI,WACCzwD,KAAK4vD,QAAU,EAAI,OAA0B,IAAjB5vD,KAAK4vD,QAAgB,IAAM,OACxD,OAGRc,QAAS,WACL,MACI,WACC1wD,KAAK4vD,QAAU,EAAI,OAA0B,IAAjB5vD,KAAK4vD,QAAgB,IAAM,OACxD,OAGRe,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MACI,uBACCnzD,KAAK4vD,QAAU,EACV,OACiB,IAAjB5vD,KAAK4vD,QACL,IACA,OACN,MAER,QACI,MACI,uBACC5vD,KAAK4vD,QAAU,EACV,OACiB,IAAjB5vD,KAAK4vD,QACL,IACA,OACN,QAIhBgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN3zC,EAAG,iBACH4zC,GAAI,aACJh8C,EAAG,YACHi8C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJh4B,EAAG,YACHi4B,GAAI,YACJiC,EAAG,gBACHC,GAAI,eACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BgH,KAAM,CACF,CACIC,MAAO,aACPC,OAAQ,EACR7wD,KAAM,KACN8wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7wD,KAAM,KACN8wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7wD,KAAM,KACN8wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7wD,KAAM,KACN8wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7wD,KAAM,KACN8wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACR7wD,KAAM,KACN8wD,OAAQ,KACRC,KAAM,MAEV,CACIH,MAAO,aACPI,OAAO,IACPH,OAAQ,EACR7wD,KAAM,MACN8wD,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,WACrBC,oBAAqB,SAAU9jD,EAAOoJ,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIqN,SAASrN,EAAM,IAAMpJ,EAAO,KAE9Dw8C,OAAQ,yCAAyCtsC,MAAM,KACvDusC,YAAa,yCAAyCvsC,MAClD,KAEJwsC,SAAU,8BAA8BxsC,MAAM,KAC9CysC,cAAe,gBAAgBzsC,MAAM,KACrC0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACN59B,EAAG,aACHmiC,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVrF,cAAe,SACfC,KAAM,SAAU98C,GACZ,MAAiB,OAAVA,GAEX+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW5xD,KAAK4xD,OACb,cAEA,WAGflB,QAAS,UACTC,SAAU,SAAUgG,GAChB,OAAI32D,KAAK4xD,SAAW+E,EAAI/E,OACb,cAEA,WAGfhB,SAAU,KAEda,uBAAwB,WACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXzB,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN3zC,EAAG,KACH4zC,GAAI,MACJh8C,EAAG,KACHi8C,GAAI,MACJC,EAAG,MACHC,GAAI,OACJh4B,EAAG,KACHi4B,GAAI,MACJC,EAAG,MACHC,GAAI,OACJC,EAAG,KACHC,GAAI,SAlJ0BtxD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFtsC,MAC7F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,+CAA+CxsC,MAAM,KAC/DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,6BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACN3zC,EAAG,kBACH4zC,GAAI,WACJh8C,EAAG,kBACHi8C,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJh4B,EAAG,WACHi4B,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGtsC,MACzG,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,CACN2D,WAAY,gEAAgEnwC,MACxE,KAEJ8E,OAAQ,iEAAiE9E,MACrE,KAEJowC,SAAU,iBAEd3D,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU1zC,GACd,OAAOA,EAAErI,QAAQ,iCAAiC,SAC9C6hD,EACA3vC,EACA4vC,GAEA,MAAc,MAAPA,EAAa5vC,EAAK,KAAOA,EAAK4vC,EAAK,SAGlD9F,KAAM,SAAU3zC,GACZ,MAAI,4BAA4B+F,KAAK/F,GAC1BA,EAAErI,QAAQ,SAAU,UAE3B,OAAOoO,KAAK/F,GACLA,EAAErI,QAAQ,QAAS,YAEvBqI,GAEXA,EAAG,iBACH4zC,GAAI,UACJh8C,EAAG,OACHi8C,GAAI,UACJC,EAAG,QACHC,GAAI,WACJh4B,EAAG,MACHi4B,GAAI,SACJC,EAAG,MACHC,GAAI,SACJC,EAAG,OACHC,GAAI,WAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGApS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,0DAA0DxsC,MAChE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN3zC,EAAG,iBACH4zC,GAAI,YACJh8C,EAAG,YACHi8C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEtsC,MAC7E,KAEJusC,YAAa,yEAAyEvsC,MAClF,KAEJwsC,SAAU,iDAAiDxsC,MAAM,KACjEysC,cAAe,oBAAoBzsC,MAAM,KACzC0sC,YAAa,oBAAoB1sC,MAAM,KACvCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,cACfC,KAAM,SAAU98C,GACZ,MAAiB,UAAVA,GAEX+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,QAEA,SAGfjC,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN3zC,EAAG,iBACH4zC,GAAI,YACJh8C,EAAG,UACHi8C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,UACJC,EAAG,QACHC,GAAI,QACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,OACTiB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzB41C,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FtsC,MACjG,KAEJusC,YAAa,2EAA2EvsC,MACpF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,0DAA0DxsC,MAChE,KAEJysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,wBAAwB1sC,MAAM,KAC3CitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN3zC,EAAG,gBACH4zC,GAAI,gBACJh8C,EAAG,aACHi8C,GAAI,WACJC,EAAG,YACHC,GAAI,UACJh4B,EAAG,WACHi4B,GAAI,SACJC,EAAG,cACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzByzC,cAAe,gCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGfd,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yCAAyCtsC,MAAM,KACvDusC,YAAa,yCAAyCvsC,MAClD,KAEJwsC,SAAU,8BAA8BxsC,MAAM,KAC9CysC,cAAe,gBAAgBzsC,MAAM,KACrC0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACN59B,EAAG,cACHmiC,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVxE,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACN3zC,EAAG,MACH4zC,GAAI,MACJh8C,EAAG,KACHi8C,GAAI,MACJC,EAAG,OACHC,GAAI,OACJh4B,EAAG,KACHi4B,GAAI,MACJC,EAAG,MACHC,GAAI,MACJC,EAAG,MACHC,GAAI,OAERC,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBlC,cAAe,QACfC,KAAM,SAAUnuC,GACZ,MAAiB,OAAVA,GAEXouC,SAAU,SAAU4C,EAAMC,EAAQsE,GAC9B,OAAOvE,EAAO,GAAK,KAAO,QAxEIryD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETxD,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGC3O,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,0EAA0ExsC,MAChF,KAEJysC,cAAe,2DAA2DzsC,MACtE,KAEJ0sC,YAAa,gBAAgB1sC,MAAM,KACnCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,kBACfC,KAAM,SAAU98C,GACZ,MAAO,UAAUuQ,KAAKvQ,IAE1B+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,UAEA,WAGfjC,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACN3zC,EAAG,kBACH4zC,GAAI,WACJh8C,EAAG,cACHi8C,GAAI,YACJC,EAAG,eACHC,GAAI,aACJh4B,EAAG,WACHi4B,GAAI,SACJC,EAAG,YACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAO42C,EAAU52C,MAEpBjH,QAAQ,KAAM,MAEvB09C,WAAY,SAAUltD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAO02C,EAAU12C,MAEpBjH,QAAQ,KAAM,MAEvB68C,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGApS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,kFAAkFtsC,MACtF,KAEJusC,YAAa,qDAAqDvsC,MAC9D,KAEJwsC,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN3zC,EAAG,iBACH4zC,GAAI,YACJh8C,EAAG,YACHi8C,GAAI,WACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACT5S,EAAG,CAAC,aAAc,gBAClBk8C,EAAG,CAAC,YAAa,eACjB/3B,EAAG,CAAC,UAAW,aACfk4B,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAOY,EAAgBvqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAuBxD,SAASkxD,EAA4BpF,GAEjC,GADAA,EAAStoC,SAASsoC,EAAQ,IACtBroC,MAAMqoC,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI4B,EAAY5B,EAAS,GAEzB,OACWoF,EADO,IAAdxD,EADa5B,EAAS,GAIS4B,GAChC,GAAI5B,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOoF,EAA4BpF,GAInC,OAAOoF,EADPpF,GAAkB,KAKjBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFtsC,MAC3F,KAEJusC,YAAa,+DAA+DvsC,MACxE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,mEAAmExsC,MACzE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBtC,aAAc,CACVC,OAhGR,SAA2BvrD,GAEvB,OAAIwxD,EADSxxD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,KAAO3I,EAEX,MAAQA,GA4FXwrD,KA1FR,SAAyBxrD,GAErB,OAAIwxD,EADSxxD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,QAAU3I,EAEd,SAAWA,GAsFd6X,EAAG,kBACH4zC,GAAI,cACJh8C,EAAGigD,EACHhE,GAAI,cACJC,EAAG+D,EACH9D,GAAI,aACJh4B,EAAG87B,EACH7D,GAAI,UACJC,EAAG4D,EACH3D,GAAI,WACJC,EAAG0D,EACHzD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApIyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EtsC,MACjF,KAEJusC,YAAa,6EAA6EvsC,MACtF,KAEJwsC,SAAU,sCAAsCxsC,MAAM,KACtDysC,cAAe,oCAAoCzsC,MAAM,KACzD0sC,YAAa,mBAAmB1sC,MAAM,KACtCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVZ,cAAe,kBACfC,KAAM,SAAU98C,GACZ,MAAiB,WAAVA,GAEX+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,WAEA,UAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN3zC,EAAG,mBACH4zC,GAAI,YACJh8C,EAAG,SACHi8C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJh4B,EAAG,QACHi4B,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,SAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,MAAO,MAAQA,KA/DezxD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIuW,EAAQ,CACRhG,GAAI,6BACJh8C,EAAG,wBACHi8C,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJh4B,EAAG,qBACHi4B,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJC,EAAG,mBACHC,GAAI,oBASR,SAASyF,EAAkBtF,EAAQQ,EAAetsD,EAAKusD,GACnD,OAAOD,EACDa,EAAMntD,GAAK,GACXusD,EACAY,EAAMntD,GAAK,GACXmtD,EAAMntD,GAAK,GAErB,SAASqxD,EAAQvF,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASqB,EAAMntD,GACX,OAAOmxD,EAAMnxD,GAAKid,MAAM,KAE5B,SAAS6xC,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,IAAI9rD,EAASqrD,EAAS,IACtB,OAAe,IAAXA,EAEIrrD,EAAS2wD,EAAkBtF,EAAQQ,EAAetsD,EAAI,GAAIusD,GAEvDD,EACA7rD,GAAU4wD,EAAQvF,GAAUqB,EAAMntD,GAAK,GAAKmtD,EAAMntD,GAAK,IAE1DusD,EACO9rD,EAAS0sD,EAAMntD,GAAK,GAEpBS,GAAU4wD,EAAQvF,GAAUqB,EAAMntD,GAAK,GAAKmtD,EAAMntD,GAAK,IAIjE46C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,oGAAoG9E,MACxG,KAEJmwC,WAAY,kGAAkGnwC,MAC1G,KAEJowC,SAAU,+DAEd7D,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,CACN1nC,OAAQ,oFAAoF9E,MACxF,KAEJmwC,WAAY,2FAA2FnwC,MACnG,KAEJowC,SAAU,cAEd3D,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,iBAAiB1sC,MAAM,KACpCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACN59B,EAAG,aACHmiC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVxE,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAlFR,SAA0Bu0C,EAAQQ,EAAetsD,EAAKusD,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,mBA+EtCpB,GAAI2D,EACJ3/C,EAAGiiD,EACHhG,GAAI0D,EACJzD,EAAG+F,EACH9F,GAAIwD,EACJx7B,EAAG89B,EACH7F,GAAIuD,EACJtD,EAAG4F,EACH3F,GAAIqD,EACJpD,EAAG0F,EACHzF,GAAImD,GAERlD,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,IAAIuW,EAAQ,CACRhG,GAAI,qCAAqCluC,MAAM,KAC/C9N,EAAG,iCAAiC8N,MAAM,KAC1CmuC,GAAI,iCAAiCnuC,MAAM,KAC3CouC,EAAG,iCAAiCpuC,MAAM,KAC1CquC,GAAI,iCAAiCruC,MAAM,KAC3CqW,EAAG,6BAA6BrW,MAAM,KACtCsuC,GAAI,6BAA6BtuC,MAAM,KACvCuuC,EAAG,iCAAiCvuC,MAAM,KAC1CwuC,GAAI,iCAAiCxuC,MAAM,KAC3CyuC,EAAG,wBAAwBzuC,MAAM,KACjC0uC,GAAI,wBAAwB1uC,MAAM,MAKtC,SAAS8E,EAAOorC,EAAOrB,EAAQQ,GAC3B,OAAIA,EAEOR,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAI5DrB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAG3E,SAASF,EAAuBnB,EAAQQ,EAAetsD,GACnD,OAAO8rD,EAAS,IAAM/pC,EAAOovC,EAAMnxD,GAAM8rD,EAAQQ,GAErD,SAASgF,EAAyBxF,EAAQQ,EAAetsD,GACrD,OAAO+hB,EAAOovC,EAAMnxD,GAAM8rD,EAAQQ,GAM7B1R,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGtsC,MAC3G,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,0EAA0ExsC,MAChF,KAEJysC,cAAe,kBAAkBzsC,MAAM,KACvC0sC,YAAa,kBAAkB1sC,MAAM,KACrCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN3zC,EAlCR,SAAyBu0C,EAAQQ,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCnB,GAAI8B,EACJ99C,EAAGmiD,EACHlG,GAAI6B,EACJ5B,EAAGiG,EACHhG,GAAI2B,EACJ35B,EAAGg+B,EACH/F,GAAI0B,EACJzB,EAAG8F,EACH7F,GAAIwB,EACJvB,EAAG4F,EACH3F,GAAIsB,GAERrB,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIzB,IAAI2W,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,SAAU,UAAW,WAC1Bh8C,EAAG,CAAC,cAAe,iBACnBi8C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAetsD,GACxC,IAAI0xD,EAAUH,EAAWC,MAAMxxD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+iD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjD9W,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFtsC,MACvF,KAEJusC,YAAa,2DAA2DvsC,MACpE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgB3wD,KAAKmzD,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,mBACH4zC,GAAIoG,EAAWzC,UACf3/C,EAAGoiD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx7B,EAAG,MACHi4B,GAAIgG,EAAWzC,UACftD,EAAG,SACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,8IAA8ItsC,MAClJ,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJoxC,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxBlF,SAAU,kDAAkDxsC,MAAM,KAClEysC,cAAe,wBAAwBzsC,MAAM,KAC7C0sC,YAAa,wBAAwB1sC,MAAM,KAC3CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACN3zC,EAAG,mBACH4zC,GAAI,YACJh8C,EAAG,YACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,QACHi4B,GAAI,QACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFtsC,MAC3F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,kBACH4zC,GAAI,aACJh8C,EAAG,cACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,WACHi4B,GAAI,UACJC,EAAG,aACHC,GAAI,YACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFtsC,MAC7F,KAEJusC,YAAa,yEAAyEvsC,MAClF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,wEAAwExsC,MAC9E,KAEJysC,cAAe,2CAA2CzsC,MAAM,KAChE0sC,YAAa,wBAAwB1sC,MAAM,KAC3CitC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,eACHi8C,GAAI,cACJC,EAAG,eACHC,GAAI,cACJh4B,EAAG,YACHi4B,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WAER/B,cAAe,gDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACrB,iBAAb5C,GACa,eAAbA,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmBryD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,SAASkU,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,OAAQvsD,GACJ,IAAK,IACD,OAAOssD,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOR,GAAUQ,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,QACI,OAAOR,GAIVlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+LAA+LtsC,MACnM,KAEJusC,YAAa,6EAA6EvsC,MACtF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,6CAA6CxsC,MAAM,KAC7DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVZ,cAAe,SACfC,KAAM,SAAU98C,GACZ,MAAiB,OAAVA,GAEX+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN3zC,EAAGu3C,EACH3D,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAGw7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,QACI,OAAOA,MAhGezxD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS4E,EAAe7F,EAAQQ,EAAe5sD,EAAQ6sD,GACnD,IAAI2C,EAAS,GACb,GAAI5C,EACA,OAAQ5sD,GACJ,IAAK,IACDwvD,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQxvD,GACJ,IAAK,IACDwvD,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAOhgD,QAAQ,MAAO48C,GAGxBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,gFAAgFvsC,MACzF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,kCAAkCzsC,MAAM,KACvD0sC,YAAa,qBAAqB1sC,MAAM,KACxCitC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN3zC,EAAGo6C,EACHxG,GAAIwG,EACJxiD,EAAGwiD,EACHvG,GAAIuG,EACJtG,EAAGsG,EACHrG,GAAIqG,EACJr+B,EAAGq+B,EACHpG,GAAIoG,EACJnG,EAAGmG,EACHlG,GAAIkG,EACJjG,EAAGiG,EACHhG,GAAIgG,GAER7E,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzByzC,cAAe,qCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,GAAqC,UAAbA,EACjB4C,EAEM,WAAb5C,GACa,aAAbA,GACa,WAAbA,EAEO4C,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvMyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,oFAAoFtsC,MACxF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,6CAA6CxsC,MAAM,KAC7DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN3zC,EAAG,gBACH4zC,GAAI,UACJh8C,EAAG,UACHi8C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFtsC,MACxF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,6CAA6CxsC,MAAM,KAC7DysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACN3zC,EAAG,gBACH4zC,GAAI,UACJh8C,EAAG,UACHi8C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,iEAAiExsC,MACvE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,eACH4zC,GAAI,aACJh8C,EAAG,SACHi8C,GAAI,YACJC,EAAG,SACHC,GAAI,aACJh4B,EAAG,UACHi4B,GAAI,YACJC,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,mDAAmDvsC,MAAM,KACtEwsC,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,2BAA2BzsC,MAAM,KAChD0sC,YAAa,2BAA2B1sC,MAAM,KAE9CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACN3zC,EAAG,kBACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,OACHC,GAAI,OACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzB41C,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,qDAAqDxsC,MAAM,KACrEysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,WACJiC,EAAG,SACHC,GAAI,UACJjC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFtsC,MAC3F,KAEJusC,YAAa,uEAAuEvsC,MAChF,KAEJ6wC,kBAAkB,EAClBrE,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,0CAA0CzsC,MAAM,KAC/D0sC,YAAa,4BAA4B1sC,MAAM,KAC/CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVsC,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAGzByzC,cAAe,yBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,WACN3zC,EAAG,YACH4zC,GAAI,aACJh8C,EAAG,WACHi8C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAtHyB5xD,CAAQ,EAAQ,8FCIlD,SAAWugD,GAAU,aAIzB,IAAIuV,EAAsB,6DAA6DlzC,MAC/E,KAEJmzC,EAAyB,kDAAkDnzC,MACvE,KAEJmxC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbquC,EAAuBjhD,EAAEsgD,SAEzBU,EAAoBhhD,EAAEsgD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DxsC,MACnE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJh4B,EAAG,UACHi4B,GAAI,WACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIuV,EAAsB,6DAA6DlzC,MAC/E,KAEJmzC,EAAyB,kDAAkDnzC,MACvE,KAEJmxC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAETzT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,SAAUr6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbquC,EAAuBjhD,EAAEsgD,SAEzBU,EAAoBhhD,EAAEsgD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DxsC,MACnE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACN3zC,EAAG,oBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJh4B,EAAG,UACHi4B,GAAI,WACJiC,EAAG,WACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFtsC,MACzF,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,qDAAqDxsC,MAAM,KACrEysC,cAAe,+BAA+BzsC,MAAM,KACpD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACN3zC,EAAG,eACH4zC,GAAI,YACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,WACJiC,EAAG,UACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyB5xD,CAAQ,EAAQ,+FCElD,SAAWugD,GAAU,aAIbA,EAAO0O,aAAa,SAAU,CACtCC,OAAQ,CACJ6D,WAAY,qFAAqFnwC,MAC7F,KAEJ8E,OAAQ,sHAAsH9E,MAC1H,KAEJowC,SAAU,mBAEd7D,YAAa,+DAA+DvsC,MACxE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,4BACLyE,IAAK,mBACLxE,KAAM,iCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACN3zC,EAAG,gBACH4zC,GAAI,cACJh8C,EAAG,aACHi8C,GAAI,aACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,WACJC,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFnS,EAAO0O,aAAa,QAAS,CAEpCC,OAAQ,sEAAsEtsC,MAC1E,KAEJusC,YAAa,sEAAsEvsC,MAC/E,KAEJwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,iCAAiCzsC,MAAM,KACtD0sC,YAAa,iCAAiC1sC,MAAM,KACpDitC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACN3zC,EAAG,YACH4zC,GAAI,WACJh8C,EAAG,UACHi8C,GAAI,UACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAKzByzC,cAAe,uBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIgX,EAAmB,mGAAmG30C,MAClH,KAEJ40C,EAAmB,qGAAqG50C,MACpH,KAEJmxC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASe,EAAOz0C,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAASo0C,EAAUhD,EAAQQ,EAAetsD,GACtC,IAAIS,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,KACD,OAAOS,GAAU0uD,EAAOrD,GAAU,UAAY,UAClD,IAAK,IACD,OAAOQ,EAAgB,SAAW,SACtC,IAAK,KACD,OAAO7rD,GAAU0uD,EAAOrD,GAAU,SAAW,SACjD,IAAK,IACD,OAAOQ,EAAgB,UAAY,UACvC,IAAK,KACD,OAAO7rD,GAAU0uD,EAAOrD,GAAU,UAAY,UAClD,IAAK,KACD,OAAOrrD,GAAU0uD,EAAOrD,GAAU,WAAa,WACnD,IAAK,KACD,OAAOrrD,GAAU0uD,EAAOrD,GAAU,WAAa,YACnD,IAAK,KACD,OAAOrrD,GAAU0uD,EAAOrD,GAAU,OAAS,QAI9ClR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,SAAUgG,EAAgBxtC,GAC9B,OAAKwtC,EAEM,SAASjyC,KAAKyE,GACd8vC,EAAiBtC,EAAeE,SAEhCmC,EAAiBrC,EAAeE,SAJhCmC,GAOfpI,YAAa,kDAAkDvsC,MAAM,KACrEmxC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,6DAA6DxsC,MACnE,KAEJysC,cAAe,2BAA2BzsC,MAAM,KAChD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,eACH4zC,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAG,UACHi4B,GAAI,SACJiC,EAAG,UACHC,GAAIqB,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,MACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,iFAAiFxsC,MACvF,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf3wD,KAAKmzD,OAA8B,IAAfnzD,KAAKmzD,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN3zC,EAAG,kBACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTkE,YAAa,kBAxDqB11D,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FtsC,MAC/F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,iFAAiFxsC,MACvF,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAf3wD,KAAKmzD,OAA8B,IAAfnzD,KAAKmzD,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACN3zC,EAAG,WACH4zC,GAAI,cACJh8C,EAAG,YACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIzB,SAASqS,EAAuBnB,EAAQQ,EAAetsD,GACnD,IASI8xD,EAAY,IAIhB,OAHIhG,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDgG,EAAY,QAEThG,EAASgG,EAbH,CACL3G,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJkC,GAAI,YACJhC,GAAI,OACJE,GAAI,OAMuB3rD,GAG9B46C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGtsC,MACxG,KAEJusC,YAAa,+DAA+DvsC,MACxE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,kDAAkDxsC,MAAM,KAClEysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACN3zC,EAAG,iBACH4zC,GAAI8B,EACJ99C,EAAG,WACHi8C,GAAI6B,EACJ5B,EAAG,QACHC,GAAI2B,EACJ35B,EAAG,OACHi4B,GAAI0B,EACJO,EAAG,cACHC,GAAIR,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,QACHC,GAAIsB,GAERlB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAYzB,SAASqS,EAAuBnB,EAAQQ,EAAetsD,GAUnD,MAAY,MAARA,EACOssD,EAAgB,SAAW,SAE3BR,EAAS,KArBFoB,GAqB6BpB,EApB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,sBAAwB,sBAC5ChB,GAAI,iBACJC,GAAI,gBACJkC,GAAI,uBACJhC,GAAI,uBACJE,GAAI,gBAKgC3rD,GApBvBid,MAAM,KAChBiwC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAuBR,IAAIiB,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMKxT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,oFAAoF9E,MACxF,KAEJmwC,WAAY,kFAAkFnwC,MAC1F,MAGRusC,YAAa,CAETznC,OAAQ,gEAAgE9E,MACpE,KAEJmwC,WAAY,gEAAgEnwC,MACxE,MAGRwsC,SAAU,CACN2D,WAAY,gEAAgEnwC,MACxE,KAEJ8E,OAAQ,gEAAgE9E,MACpE,KAEJowC,SAAU,iDAEd3D,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CmxC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YAAa,2MAGbR,iBAAkB,2MAGlBa,kBAAmB,wHAGnBC,uBAAwB,6FACxBzE,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUkG,GAChB,GAAIA,EAAI/E,SAAW5xD,KAAK4xD,OAcpB,OAAmB,IAAf5xD,KAAKmzD,MACE,oBAEA,mBAhBX,OAAQnzD,KAAKmzD,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBxC,SAAU,SAAUgG,GAChB,GAAIA,EAAI/E,SAAW5xD,KAAK4xD,OAcpB,OAAmB,IAAf5xD,KAAKmzD,MACE,oBAEA,mBAhBX,OAAQnzD,KAAKmzD,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN3zC,EAAG,mBACH4zC,GAAI8B,EACJ99C,EAAG89C,EACH7B,GAAI6B,EACJ5B,EAAG,MACHC,GAAI2B,EACJ35B,EAAG,OACHi4B,GAAI0B,EACJO,EAAG,SACHC,GAAIR,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,wBACfC,KAAM,SAAU98C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1MyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIzB,IAAI2O,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJwI,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElDnX,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU98C,GACZ,MAAO,QAAUA,GAErB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN3zC,EAAG,YACH4zC,GAAI,WACJh8C,EAAG,SACHi8C,GAAI,SACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,WACHi4B,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC09C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC68C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mJAAmJtsC,MACvJ,KAEJusC,YAAa,6DAA6DvsC,MACtE,KAEJwsC,SAAU,6EAA6ExsC,MACnF,KAEJysC,cAAe,mCAAmCzsC,MAAM,KACxD0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACN3zC,EAAG,mBACH4zC,GAAI,eACJh8C,EAAG,eACHi8C,GAAI,cACJC,EAAG,cACHC,GAAI,aACJh4B,EAAG,cACHi4B,GAAI,cACJC,EAAG,aACHC,GAAI,WACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAKhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,kGAAkGtsC,MACtG,KAEJusC,YAAa,wDAAwDvsC,MACjE,KAEJwsC,SAAU,gEAAgExsC,MACtE,KAEJysC,cAAe,gCAAgCzsC,MAAM,KACrD0sC,YAAa,qBAAqB1sC,MAAM,KACxCwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN3zC,EAAG,eACH4zC,GAAI,WACJh8C,EAAG,YACHi8C,GAAI,cACJC,EAAG,MACHC,GAAI,SACJh4B,EAAG,OACHi4B,GAAI,SACJC,EAAG,OACHC,GAAI,SACJC,EAAG,MACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,SAEpBlC,cAAe,4BACfC,KAAM,SAAU98C,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/B+8C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjED5vD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,IAAI2O,EAAS,oFAAoFtsC,MACzF,KAEJusC,EAAc,kDAAkDvsC,MAAM,KAC1E,SAASkyC,EAAOz0C,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAASo0C,EAAUhD,EAAQQ,EAAetsD,EAAKusD,GAC3C,IAAI9rD,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,IACD,OAAOssD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,UAAY,UAEvCrrD,EAAS,YAExB,IAAK,IACD,OAAO6rD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,SAAW,SAEtCrrD,EAAS,WAExB,IAAK,IACD,OAAO6rD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,SAAW,SAEtCrrD,EAAS,WAExB,IAAK,IACD,OAAO6rD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,MAAQ,OAEnCrrD,EAAS,QAExB,IAAK,IACD,OAAO6rD,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,UAAY,YAEvCrrD,EAAS,WAExB,IAAK,IACD,OAAO6rD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV9rD,GAAU0uD,EAAOrD,GAAU,OAAS,SAEpCrrD,EAAS,SAKvBm6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbC,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAGu3C,EACH3D,GAAI2D,EACJ3/C,EAAG2/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJx7B,EAAGw7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7IyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAI9rD,EAASqrD,EAAS,IACtB,OAAQ9rD,GACJ,IAAK,IACD,OAAOssD,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARI9rD,GADW,IAAXqrD,EACUQ,EAAgB,UAAY,UACpB,IAAXR,EACGQ,GAAiBC,EAAW,UAAY,WAC3CT,EAAS,EACNQ,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARI7rD,GADW,IAAXqrD,EACUQ,EAAgB,SAAW,SACnB,IAAXR,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARI7rD,GADW,IAAXqrD,EACUQ,EAAgB,MAAQ,MAChB,IAAXR,EACGQ,GAAiBC,EAAW,MAAQ,QACvCT,EAAS,EACNQ,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANI9rD,GADW,IAAXqrD,EACUQ,GAAiBC,EAAW,MAAQ,OAC5B,IAAXT,EACGQ,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARI9rD,GADW,IAAXqrD,EACUQ,GAAiBC,EAAW,QAAU,UAC9B,IAAXT,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARI9rD,GADW,IAAXqrD,EACUQ,GAAiBC,EAAW,OAAS,QAC7B,IAAXT,EACGQ,GAAiBC,EAAW,OAAS,SACxCT,EAAS,EACNQ,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,SAMrD3R,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,8DAA8DvsC,MACvE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN3zC,EAAG63C,EACHjE,GAAIiE,EACJjgD,EAAGigD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ97B,EAAG87B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxKyB5xD,CAAQ,EAAQ,2FCKlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFtsC,MACpF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,4DAA4DxsC,MAClE,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,mBAAmB1sC,MAAM,KACtCwvC,oBAAoB,EACpB7C,cAAe,QACfC,KAAM,SAAU98C,GACZ,MAA2B,MAApBA,EAAMnN,OAAO,IAExBkqD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,MAE/BG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,aACN3zC,EAAG,eACH4zC,GAAI,aACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,UACHC,GAAI,SACJh4B,EAAG,WACHi4B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyB5xD,CAAQ,EAAQ,gGCElD,SAAWugD,GAAU,aAIzB,IAAI2W,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bh8C,EAAG,CAAC,cAAe,gBACnBi8C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAetsD,GACxC,IAAI0xD,EAAUH,EAAWC,MAAMxxD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+iD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAM7C9W,EAAO0O,aAAa,UAAW,CACxCC,OAAQ,mFAAmFtsC,MACvF,KAEJusC,YAAa,2DAA2DvsC,MACpE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgB3wD,KAAKmzD,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,mBACH4zC,GAAIoG,EAAWzC,UACf3/C,EAAGoiD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx7B,EAAG,MACHi4B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAI2W,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3Bh8C,EAAG,CAAC,cAAe,gBACnBi8C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAetsD,GACxC,IAAI0xD,EAAUH,EAAWC,MAAMxxD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG+iD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjD9W,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFtsC,MACvF,KAEJusC,YAAa,2DAA2DvsC,MACpE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQzwD,KAAKmzD,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgB3wD,KAAKmzD,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACN3zC,EAAG,mBACH4zC,GAAIoG,EAAWzC,UACf3/C,EAAGoiD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfx7B,EAAG,MACHi4B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyB5xD,CAAQ,EAAQ,2FCElD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHtsC,MACvH,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,sEAAsExsC,MAC5E,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACN3zC,EAAG,qBACH4zC,GAAI,cACJh8C,EAAG,SACHi8C,GAAI,aACJC,EAAG,SACHC,GAAI,aACJh4B,EAAG,UACHi4B,GAAI,cACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAER/B,cAAe,mCACfE,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGf6D,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,YAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAb5C,GAA0C,YAAbA,EACvB,IAAT4C,EACO,EAEJA,EAAO,QAJX,GAOXd,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,oDAAoDxsC,MAAM,KACpEysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNwE,IAAK,mBACLC,KAAM,wBAEVxE,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACN3zC,EAAG,iBACH4zC,GAAI,cACJh8C,EAAG,WACHi8C,GAAI,aACJC,EAAG,WACHC,GAAI,YACJh4B,EAAG,SACHi4B,GAAI,WACJC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,GAEM,IAANA,EADA,KAIA,OAIlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFtsC,MAC1F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,8DAA8DxsC,MACpE,KAEJysC,cAAe,kCAAkCzsC,MAAM,KACvD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACN3zC,EAAG,aACH4zC,GAAI,aACJh8C,EAAG,cACHi8C,GAAI,YACJC,EAAG,aACHC,GAAI,WACJh4B,EAAG,YACHi4B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,0FAA0FvsC,MACnG,KAEJwsC,SAAU,8FAA8FxsC,MACpG,KAEJysC,cAAe,mDAAmDzsC,MAC9D,KAEJ0sC,YAAa,sBAAsB1sC,MAAM,KACzCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN3zC,EAAG,oBACH4zC,GAAI,eACJh8C,EAAG,cACHi8C,GAAI,gBACJC,EAAG,gBACHC,GAAI,eACJh4B,EAAG,WACHi4B,GAAI,aACJC,EAAG,YACHC,GAAI,cACJC,EAAG,aACHC,GAAI,eAERC,uBAAwB,aACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBgB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAO42C,EAAU52C,OAGzBy2C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAO02C,EAAU12C,OAIzByzC,cAAe,wCACfE,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfkB,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,GAAqC,SAAbA,GAEX,YAAbA,GACA4C,GAAQ,GAFRA,EAIAA,EAAO,IAGtBX,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,mEAAmEvsC,MAC5E,KAEJ6wC,kBAAkB,EAClBrE,SAAU,8DAA8DxsC,MACpE,KAEJysC,cAAe,kCAAkCzsC,MAAM,KACvD0sC,YAAa,qBAAqB1sC,MAAM,KACxCitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACN3zC,EAAG,iBACH4zC,GAAI,aACJh8C,EAAG,YACHi8C,GAAI,cACJC,EAAG,SACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,cACHC,GAAI,iBAERC,uBAAwB,WACxBC,QAAS,MACTjC,cAAe,iCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApFyB5xD,CAAQ,EAAQ,4FCKlD,SAAWugD,GAAU,aAIfA,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,kDAAkDxsC,MAAM,KAClEysC,cAAe,iCAAiCzsC,MAAM,KACtD0sC,YAAa,yBAAyB1sC,MAAM,KAC5CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,YACHi4B,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB5xD,CAAQ,EAAQ,2FCClD,SAAWugD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGApS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,qFAAqF9E,MACzF,KAEJmwC,WAAY,yEAAyEnwC,MACjF,MAGRusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,SACN3zC,EAAG,eACHpI,EAAG,YACHi8C,GAAI,YACJC,EAAG,UACHC,GAAI,UACJh4B,EAAG,SACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAER/B,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,QAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGfd,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlHyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGtsC,MACxG,KAEJusC,YAAa,iEAAiEvsC,MAC1E,KAEJ6wC,kBAAkB,EAClBrE,SAAU,iDAAiDxsC,MAAM,KACjEysC,cAAe,8CAA8CzsC,MAAM,KACnE0sC,YAAa,yBAAyB1sC,MAAM,KAC5CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVZ,cAAe,wBACfC,KAAM,SAAU98C,GACZ,MAAiB,eAAVA,GAEX+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACN3zC,EAAG,eACH4zC,GAAI,YACJh8C,EAAG,SACHi8C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJh4B,EAAG,QACHi4B,GAAI,SACJiC,EAAG,YACHC,GAAI,aACJjC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WA9D0BtxD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCpS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+EAA+EtsC,MACnF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACN3zC,EAAG,iBACHpI,EAAG,YACHi8C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl0C,EAAIk0C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp1C,IAAMo1C,EAFvBlB,EAAS,IAAOl0C,IAEsBo1C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,wBAAwB1sC,MAAM,KAC3CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACN3zC,EAAG,gBACH4zC,GAAI,aACJh8C,EAAG,eACHi8C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJh4B,EAAG,aACHi4B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyB5xD,CAAQ,EAAQ,4FCGlD,SAAWugD,GAAU,aAIzB,IAAIoX,EAAe,iDAAiD/0C,MAAM,KA4B1E,SAAS6xC,EAAUhD,EAAQQ,EAAe5sD,EAAQ6sD,GAC9C,IAAI0F,EAiBR,SAAsBnG,GAClB,IAAIoG,EAAUj2C,KAAKk2C,MAAOrG,EAAS,IAAQ,KACvCsG,EAAMn2C,KAAKk2C,MAAOrG,EAAS,IAAO,IAClCuG,EAAMvG,EAAS,GACfwG,EAAO,GAUX,OATIJ,EAAU,IACVI,GAAQN,EAAaE,GAAW,SAEhCE,EAAM,IACNE,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaI,GAAO,OAEvDC,EAAM,IACNC,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaK,IAEpC,KAATC,EAAc,OAASA,EA/BbC,CAAazG,GAC9B,OAAQpsD,GACJ,IAAK,KACD,OAAOuyD,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtBrX,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,kMAAkMtsC,MACtM,KAEJusC,YAAa,0HAA0HvsC,MACnI,KAEJ6wC,kBAAkB,EAClBrE,SAAU,2DAA2DxsC,MACjE,KAEJysC,cAAe,2DAA2DzsC,MACtE,KAEJ0sC,YAAa,2DAA2D1sC,MACpE,KAEJitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA/FR,SAAyBiE,GACrB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAO7mD,QAAQ,OACTmqD,EAAKv2D,MAAM,GAAI,GAAK,OACO,IAA3BizD,EAAO7mD,QAAQ,OACfmqD,EAAKv2D,MAAM,GAAI,GAAK,OACO,IAA3BizD,EAAO7mD,QAAQ,OACfmqD,EAAKv2D,MAAM,GAAI,GAAK,MACpBu2D,EAAO,QAuFbtH,KAnFR,SAAuBgE,GACnB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAO7mD,QAAQ,OACTmqD,EAAKv2D,MAAM,GAAI,GAAK,OACO,IAA3BizD,EAAO7mD,QAAQ,OACfmqD,EAAKv2D,MAAM,GAAI,GAAK,OACO,IAA3BizD,EAAO7mD,QAAQ,OACfmqD,EAAKv2D,MAAM,GAAI,GAAK,MACpBu2D,EAAO,QA2Ebj7C,EAAG,UACH4zC,GAAI2D,EACJ3/C,EAAG,UACHi8C,GAAI0D,EACJzD,EAAG,UACHC,GAAIwD,EACJx7B,EAAG,UACHi4B,GAAIuD,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,UACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCpS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6EAA6EtsC,MACjF,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,wDAAwDxsC,MAC9D,KAEJysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1C6sC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACfC,KAAM,SAAU98C,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7Bm9C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACN3zC,EAAG,gBACH4zC,GAAI,YACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,SACJiC,EAAG,YACHC,GAAI,WACJjC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAIl0C,EAAIk0C,EAAS,GAGjB,OAAOA,GAAUkB,EAASp1C,IAAMo1C,EAFvBlB,EAAS,IAAOl0C,IAEsBo1C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyB5xD,CAAQ,EAAQ,4FCGlD,SAAWugD,GAAU,aAiEzB,SAASwU,EAAoBtD,EAAQQ,EAAetsD,EAAKusD,GACrD,IAAIxqC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,mBACvB4zC,GAAI,CAACW,EAAS,WAAiBA,EAAS,YACxC38C,EAAG,CAAC,UAAW,cACfi8C,GAAI,CAACU,EAAS,SAAeA,EAAS,UACtCT,EAAG,CAAC,UAAW,eACfC,GAAI,CAACQ,EAAS,SAAeA,EAAS,UACtCx4B,EAAG,CAAC,UAAW,eACfi4B,GAAI,CAACO,EAAS,SAAeA,EAAS,UACtCN,EAAG,CAAC,SAAU,aACdC,GAAI,CAACK,EAAS,SAAeA,EAAS,UACtCJ,EAAG,CAAC,QAAS,YACbC,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOS,GAEDD,EADAvqC,EAAO/hB,GAAK,GAGZ+hB,EAAO/hB,GAAK,GA9EZ46C,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,sFAAsFtsC,MAC1F,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,sDAAsDxsC,MAAM,KACtEysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVZ,cAAe,aACfC,KAAM,SAAU98C,GACZ,MAAO,QAAUA,EAAMsU,eAE3ByoC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCQ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACN3zC,EAAG63C,EACHjE,GAAIiE,EACJjgD,EAAGigD,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ97B,EAAG87B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyB5xD,CAAQ,EAAQ,iGCElD,SAAWugD,GAAU,aAIXA,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFtsC,MAC5F,KAEJusC,YAAa,wFAAwFvsC,MACjG,KAEJwsC,SAAU,kDAAkDxsC,MAAM,KAClEysC,cAAe,kDAAkDzsC,MAAM,KACvE0sC,YAAa,kDAAkD1sC,MAAM,KACrEitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACN3zC,EAAG,OACH4zC,GAAI,UACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJh4B,EAAG,MACHi4B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB5xD,CAAQ,EAAQ,4FCGlD,SAAWugD,GAAU,aAIfA,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,kFAAkFtsC,MACtF,KAEJusC,YAAa,kFAAkFvsC,MAC3F,KAEJwsC,SAAU,kDAAkDxsC,MAAM,KAClEysC,cAAe,kDAAkDzsC,MAAM,KACvE0sC,YAAa,kDAAkD1sC,MAAM,KACrEitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACN3zC,EAAG,OACH4zC,GAAI,UACJh8C,EAAG,QACHi8C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJh4B,EAAG,MACHi4B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyB5xD,CAAQ,EAAQ,8FCGlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,sFAAsFtsC,MAC1F,KAEJusC,YAAa,sFAAsFvsC,MAC/F,KAEJwsC,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVZ,cAAe,qDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGM,eAAb5C,GACa,UAAbA,GACa,iBAAbA,EAEO4C,EACa,iBAAb5C,GAA4C,QAAbA,EAC/B4C,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGfhI,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACN3zC,EAAG,eACH4zC,GAAI,YACJh8C,EAAG,YACHi8C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAGRC,uBAAwB,6BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBgB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC09C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC68C,KAAM,CAEFC,IAAK,EACLC,IAAK,KA5GyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAYzB,SAASqS,EAAuBnB,EAAQQ,EAAetsD,GASnD,MAAY,MAARA,EACOssD,EAAgB,UAAY,UACpB,MAARtsD,EACAssD,EAAgB,SAAW,SAE3BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,sBAAwB,sBAC5Cf,GAAI,gBACJE,GAAI,wBACJE,GAAI,kBAOgC3rD,GArBvBid,MAAM,KAChBiwC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAsDR,SAASuF,EAAqBvnD,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBhR,KAAK4vD,QAAiB,IAAM,IAAM,QAIrDnP,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJxnC,OAAQ,yFAAyF9E,MAC7F,KAEJmwC,WAAY,iGAAiGnwC,MACzG,MAGRusC,YAAa,yDAAyDvsC,MAClE,KAEJwsC,SAhDJ,SAA6Bt6C,EAAG4S,GAC5B,IAAI0nC,EAAW,CACPkJ,WAAY,0DAA0D11C,MAClE,KAEJ21C,WAAY,0DAA0D31C,MAClE,KAEJ41C,SAAU,4DAA4D51C,MAClE,MAKZ,OAAU,IAAN9N,EACOs6C,EAAqB,WACvBxtD,MAAM,EAAG,GACTM,OAAOktD,EAAqB,WAAExtD,MAAM,EAAG,IAE3CkT,EASEs6C,EALI,qBAAqBnsC,KAAKyE,GAC/B,aACA,sCAAsCzE,KAAKyE,GAC3C,WACA,cACoB5S,EAAEm+C,OARjB7D,EAAqB,YA6BhCC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAASgI,EAAqB,cAC9B/H,QAAS+H,EAAqB,YAC9B7H,QAAS6H,EAAqB,WAC9B9H,SAAU8H,EAAqB,cAC/B5H,SAAU,WACN,OAAQ3wD,KAAKmzD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOoF,EAAqB,oBAAoBx2D,KAAK/B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOu4D,EAAqB,qBAAqBx2D,KAAK/B,QAGlE4wD,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACN3zC,EAAG,kBACH4zC,GAAI8B,EACJ99C,EAAG89C,EACH7B,GAAI6B,EACJ5B,EAAG,SACHC,GAAI2B,EACJ35B,EAAG,OACHi4B,GAAI0B,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAGRrD,cAAe,wBACfC,KAAM,SAAU98C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhKyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIzB,IAAI2O,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJwI,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpDnX,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU98C,GACZ,MAAO,QAAUA,GAErB+8C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACN3zC,EAAG,YACH4zC,GAAI,WACJh8C,EAAG,UACHi8C,GAAI,SACJC,EAAG,YACHC,GAAI,WACJh4B,EAAG,SACHi4B,GAAI,QACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUptD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC09C,WAAY,SAAUltD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhC68C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyB5xD,CAAQ,EAAQ,gGCElD,SAAWugD,GAAU,aAIZA,EAAO0O,aAAa,UAAW,CACxCC,OAAQ,6EAA6EtsC,MACjF,KAEJusC,YAAa,oDAAoDvsC,MAAM,KACvEwsC,SAAU,+DAA+DxsC,MACrE,KAEJysC,cAAe,kCAAkCzsC,MAAM,KACvD0sC,YAAa,yBAAyB1sC,MAAM,KAC5CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACN3zC,EAAG,SACH4zC,GAAI,YACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yEAAyEtsC,MAC7E,KAEJusC,YAAa,kDAAkDvsC,MAAM,KACrEwsC,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,8BAA8BzsC,MAAM,KACnD0sC,YAAa,uBAAuB1sC,MAAM,KAC1CitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACN3zC,EAAG,SACH4zC,GAAI,YACJh8C,EAAG,aACHi8C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJh4B,EAAG,UACHi4B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyB5xD,CAAQ,EAAQ,2FCIlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGtsC,MACzG,KAEJusC,YAAa,sFAAsFvsC,MAC/F,KAEJ6wC,kBAAkB,EAClBrE,SAAU,yDAAyDxsC,MAC/D,KAEJysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,uBAAuB1sC,MAAM,KAC1CwvC,oBAAoB,EACpB7C,cAAe,SACfC,KAAM,SAAU98C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB+8C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACN59B,EAAG,YACHmiC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN3zC,EAAG,WACH4zC,GAAI,UACJh8C,EAAG,WACHi8C,GAAI,UACJC,EAAG,UACHC,GAAI,SACJh4B,EAAG,WACHi4B,GAAI,UACJiC,EAAG,WACHC,GAAI,UACJjC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5EyB5xD,CAAQ,EAAQ,iGCElD,SAAWugD,GAAU,aAIXA,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,6GAA6GtsC,MACjH,KAEJusC,YAAa,8DAA8DvsC,MACvE,KAEJ6wC,kBAAkB,EAClBrE,SAAU,yEAAyExsC,MAC/E,KAEJysC,cAAe,qCAAqCzsC,MAAM,KAC1D0sC,YAAa,4BAA4B1sC,MAAM,KAC/CwvC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACN3zC,EAAG,mBACH4zC,GAAI,eACJh8C,EAAG,aACHi8C,GAAI,eACJC,EAAG,YACHC,GAAI,YACJh4B,EAAG,SACHi4B,GAAI,WACJC,EAAG,YACHC,GAAI,cACJC,EAAG,UACHC,GAAI,aAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI/yC,EAAI+yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN/yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlBgzC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyB5xD,CAAQ,EAAQ,2FCGlD,SAAWugD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FtsC,MAC9F,KAEJusC,YAAa,gEAAgEvsC,MAAM,KACnFwsC,SAAU,uDAAuDxsC,MAAM,KACvEysC,cAAe,sCAAsCzsC,MAAM,KAC3D0sC,YAAa,2BAA2B1sC,MAAM,KAC9CitC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACN3zC,EAAG,oBACH4zC,GAAI,WACJh8C,EAAG,cACHi8C,GAAI,aACJC,EAAG,cACHC,GAAI,aACJh4B,EAAG,WACHi4B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,gBACxBC,QAAS,UACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyB5xD,CAAQ,EAAQ,8FCKlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwCtsC,MAC5C,KAEJusC,YAAa,yCAAyCvsC,MAClD,KAEJwsC,SAAU,8BAA8BxsC,MAAM,KAC9CysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN59B,EAAG,WACHmiC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAW5xD,KAAK4xD,OACb,WAEA,YAGflB,QAAS,SACTC,SAAU,SAAUgG,GAChB,OAAI32D,KAAK4xD,SAAW+E,EAAI/E,OACb,WAEA,YAGfhB,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN3zC,EAAG,KACH4zC,GAAI,OACJh8C,EAAG,OACHi8C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh4B,EAAG,MACHi4B,GAAI,OACJiC,EAAG,MACHC,GAAI,OACJjC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,QAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyB5xD,CAAQ,EAAQ,8FCIlD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwCtsC,MAC5C,KAEJusC,YAAa,yCAAyCvsC,MAClD,KAEJwsC,SAAU,8BAA8BxsC,MAAM,KAC9CysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN59B,EAAG,WACHmiC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN3zC,EAAG,KACH4zC,GAAI,OACJh8C,EAAG,OACHi8C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh4B,EAAG,MACHi4B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtxD,CAAQ,EAAQ,8FCElD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwCtsC,MAC5C,KAEJusC,YAAa,yCAAyCvsC,MAClD,KAEJwsC,SAAU,8BAA8BxsC,MAAM,KAC9CysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN59B,EAAG,WACHmiC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN3zC,EAAG,KACH4zC,GAAI,OACJh8C,EAAG,OACHi8C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh4B,EAAG,MACHi4B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtxD,CAAQ,EAAQ,8FCElD,SAAWugD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwCtsC,MAC5C,KAEJusC,YAAa,yCAAyCvsC,MAClD,KAEJwsC,SAAU,8BAA8BxsC,MAAM,KAC9CysC,cAAe,uBAAuBzsC,MAAM,KAC5C0sC,YAAa,gBAAgB1sC,MAAM,KACnCitC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACN59B,EAAG,WACHmiC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACN3zC,EAAG,KACH4zC,GAAI,OACJh8C,EAAG,OACHi8C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJh4B,EAAG,MACHi4B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BtxD,CAAQ,EAAQ,wGCP1D,IAAIyO,EAAM,CACT,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,WAAY,yCACZ,cAAe,yCACf,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,QAAS,sCACT,aAAc,2CACd,gBAAiB,2CACjB,WAAY,sCACZ,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,yCAIf,SAASgqD,EAAeC,GACvB,IAAIvtD,EAAKwtD,EAAsBD,GAC/B,OAAOE,EAAoBztD,GAE5B,SAASwtD,EAAsBD,GAC9B,IAAIE,EAAoBl0C,EAAEjW,EAAKiqD,GAAM,CACpC,IAAIt2C,EAAI,IAAI7P,MAAM,uBAAyBmmD,EAAM,KAEjD,MADAt2C,EAAEy2C,KAAO,mBACHz2C,EAEP,OAAO3T,EAAIiqD,GAEZD,EAAenlD,KAAO,WACrB,OAAOD,OAAOC,KAAK7E,IAEpBgqD,EAAehsD,QAAUksD,EACzB/4D,EAAOouD,QAAUyK,EACjBA,EAAettD,GAAK,8GClSnB,IAASoS,EAAAA,EAAqiI8I,OAAOF,SAAziIxmB,QAAQC,OAAO,eAAe,IAAI0E,MAAM,eAAe,CAACw0D,OAAM,IAAKztD,OAAO,CAAC,mBAAmB,SAASkS,GAAG5d,QAAQ+M,UAAU6Q,EAAEw7C,0BAA0Bx7C,EAAEw7C,yBAAyB,sCAAsCx7C,EAAEy7C,2BAA2B,yCAAyCr5D,QAAQC,OAAO,mBAAmB,CAAC,mBAAmBD,QAAQC,OAAO,iBAAiB,IAAID,QAAQC,OAAO,QAAQ,CAAC,eAAe,iBAAiB,mBAAmB,eAAwEA,EAAOouD,UAAUA,IAAUpuD,EAAOouD,QAAQ,SAASruD,QAAQC,OAAO,kBAAkB2X,QAAQ,MAAM,CAAC,KAAK,SAASgG,GAAG,IAAImB,EAAE,OAAaua,EAAE,CAAC,MAAM,KAAI,MAAM,KAAK,MAAM,KAAI,MAAM,KAAK,MAAM,MAAMn5B,KAAKm5D,eAAe,SAAS17C,EAAEmB,GAAG,MAAM,WAAWA,EAAEw6C,YAAYp5D,KAAKq5D,QAAQ57C,GAAGA,EAAE67C,iBAAiB,MAAM16C,EAAEw6C,YAAYp5D,KAAKq5D,QAAQ57C,GAAGA,EAAE3I,WAAWC,QAAQ,IAAI6J,EAAEw6C,YAAY,iBAAiB37C,GAAGA,EAAEA,EAAE1I,QAAQ,KAAK,OAAO6J,EAAE26C,cAAc97C,EAAEvP,QAAQ,MAAM,GAAGuP,EAAEvP,QAAQ,OAAO,GAAGuP,EAAEvP,QAAQ,OAAO,KAAKuP,EAAEmB,EAAE46C,SAAS/7C,EAAEmB,EAAE46C,UAAU/7C,GAAG,kBAAkBA,EAAEA,EAAE,OAAO,QAAQA,GAAGzd,KAAKq5D,QAAQ,SAAS57C,GAAG,OAAOA,IAAIA,KAAKg8C,SAASh8C,IAAIwU,QAAQxU,EAAE,KAAKzd,KAAKke,UAAU,SAASib,EAAE7W,GAAG,IAAI+vC,EAAE50C,EAAExR,QAAQ4R,EAAE7d,KAAKkxD,EAAE,GAAG7zC,EAAE,GAAGK,EAAED,EAAExN,KAAKkpB,GAAGpuB,MAAK,SAAS0S,GAA6C,IAAI0b,EAAEzb,EAA7C7d,QAAQ+M,UAAU0V,EAAEo3C,SAASp3C,EAAEo3C,SAAgBvgC,EAAE,GAAGt5B,QAAQkB,QAAQuhB,EAAEo3C,QAAO,SAASj8C,GAAGzd,KAAKS,KAAKod,EAAEs7C,eAAe17C,EAAE6E,MAAK6W,GAAGzb,EAAEyb,EAAElmB,KAAKqP,EAAEq3C,SAASr3C,EAAEq3C,SAAS,KAAKt8C,GAAGK,EAAEkB,GAAE,IAAsI6T,EAAEzd,EAApIwI,EAAE,GAAM3d,QAAQmS,QAAQyL,GAAGD,EAAEC,EAAE5d,QAAQuN,WAAWqQ,KAAKD,EAAEC,KAAK5d,QAAQ+M,UAAU0V,EAAEsnC,QAAQtnC,EAAEsnC,OAAO,kBAAkBtnC,EAAEsnC,QAAen3B,EAAE,GAAG5yB,QAAQkB,QAAQyc,EAAE,IAAG,SAASC,EAAEmB,GAAG5e,KAAKS,KAAKod,EAAEs7C,eAAev6C,EAAE0D,MAAKmQ,GAAGzd,EAAEyd,EAAExf,KAAKqP,EAAEq3C,SAASr3C,EAAEq3C,SAAS,KAAKt8C,GAAGrI,EAAE4J,GAAE/e,QAAQkB,QAAQyc,GAAE,SAASC,EAAEm8C,GAAG,IAAIzgC,EAAEk5B,EAAEnB,EAAErxD,QAAQoiB,KAAKzE,EAAEo8C,IAAIvH,EAAE,GAAG,IAAI30C,EAAE4E,EAAEu3C,YAAYv3C,EAAEu3C,YAAY3I,EAAErxD,QAAQkB,QAAQ2c,GAAE,SAASD,GAAG,IAAImB,EAAE0D,EAAEu3C,YAAY3I,EAAEzzC,GAAGA,EAAEzd,KAAKS,KAAKod,EAAEs7C,eAAev6C,EAAE0D,MAAK+vC,GAAGl5B,EAAEk5B,EAAEp/C,KAAKqP,EAAEq3C,SAASr3C,EAAEq3C,SAAS,KAAKt8C,GAAGu8C,EAAEp8C,EAAEpO,OAAO+pB,EAAEva,EAAEua,KAAI7W,EAAEw3C,qBAAqB5I,GAA9wC,UAAoxCA,GAAG7zC,EAAEg1C,EAAE1lD,QAAQukD,MAAK,MAAM,mBAAmBxzC,EAAS,OAAGA,EAAS,OAAE,SAASD,GAAG40C,EAAE3G,OAAOjuC,MAAK40C,EAAE5uD,SAASzD,KAAK+5D,cAAc,SAASt8C,GAAG,YAAO,IAAS0b,EAAE1b,IAAIzd,KAAKg6D,eAAe,SAASv8C,GAAG,OAAO0b,EAAE1b,OAAO5d,QAAQC,OAAO,oBAAoB+C,UAAU,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,WAAW,SAAS+b,EAAEg7C,EAAEzgC,EAAE7W,EAAE+vC,GAAG,MAAM,CAAClrD,SAAS,KAAKrE,MAAM,CAAC6E,KAAK,SAASsyD,SAAS,YAAYP,OAAO,aAAaG,YAAY,kBAAkBL,SAAS,iBAAiBJ,WAAW,oBAAoBG,aAAa,gBAAgBI,SAAS,kBAAkBvtC,SAAS,YAAY0tC,mBAAmB,UAAUxf,QAAQ,IAAI4f,QAAQ,WAAWtQ,MAAM,aAAa5oD,WAAW,CAAC,SAAS,WAAW,SAAS,cAAc,SAASyc,EAAEmB,EAAE0D,GAAwe7E,EAAE08C,IAAI,GAAGt6D,QAAQ+M,UAAU6Q,EAAE2O,WAAW,QAAQ3O,EAAE2O,UAAUvsB,QAAQmS,QAAQyL,EAAE9V,OAAO8V,EAAElZ,OAAO,QAAO,WAAWkZ,EAAE28C,cAAY,GAAI38C,EAAE48C,YAAY,WAAW,OAAO58C,EAAEw8C,UAAU,gBAAgBx8C,EAAE28C,SAAS,WAAW,IAAIv8C,EAAE+7C,EAAE3tD,QAAQ,OAAO2S,EAAE07C,SAASh4C,EAAEi4C,mBAAmB,kBAAkBphC,EAAEjb,UAAUT,EAAE9V,OAAhxB,WAAa,IAAIiX,EAAE,CAAC46C,SAAS/7C,EAAE+7C,SAAS/7C,EAAE+7C,SAAS,IAAIJ,WAAW37C,EAAE27C,WAAW37C,EAAE27C,WAAW,IAAIG,aAAa97C,EAAE87C,aAAaO,mBAAmBr8C,EAAEq8C,oBAAoB,OAAOj6D,QAAQ+M,UAAU0V,EAAEk4C,aAAa57C,EAAE86C,OAAOj8C,EAAEpc,MAAMoc,EAAEi8C,SAAS75D,QAAQ+M,UAAU0V,EAAEm4C,kBAAkB77C,EAAEi7C,YAAYp8C,EAAEpc,MAAMoc,EAAEo8C,cAAch6D,QAAQ+M,UAAU0V,EAAEo4C,YAAY97C,EAAEgrC,MAAMnsC,EAAEpc,MAAMoc,EAAEmsC,QAAQhrC,EAAE+6C,SAASl8C,EAAEk8C,SAASl8C,EAAEk8C,SAAS,IAAI/6C,EAAE+6C,SAASxgC,EAAE4gC,cAAcn7C,EAAE+6C,UAAUxgC,EAAE6gC,eAAep7C,EAAE+6C,UAAU/6C,EAAE+6C,SAAS/6C,EAAoTyzC,IAAKtnD,MAAK,SAAS6uD,GAAGn8C,EAAE08C,IAAIP,EAAEh7C,EAAE+7C,YAAYr4C,EAAEi4C,mBAAmB,kBAAkB18C,EAAElR,QAAQitD,MAAKn8C,EAAExZ,SAAS4Z,EAAEpa,WAAW8E,KAAK,SAASqW,EAAEg7C,GAA8bA,EAAEt2D,KAAK,SAAQ,WAAWsb,EAAEw7C,WAAWrvD,MAAK,YAAve,WAAa,IAAI6uD,EAAEh7C,EAAEs7C,SAAS,QAAQ/gC,EAAE,IAAIk1B,KAAK,CAACzvC,EAAEu7C,KAAK,CAACjrD,KAAK,oBAAoB0qD,EAAE,MAAM,GAAGn8C,EAAEi+B,UAAUkf,iBAAiBlf,UAAUmf,WAAW1hC,EAAEva,EAAEy7C,mBAAmB,CAAC,IAAIx8C,EAAEhe,QAAQkD,QAAQ,+CAA+CmuD,EAAErxD,QAAQkD,QAAQ8a,EAAEjV,WAAW,IAAIsoD,EAAEp+C,KAAK,OAAO2K,EAAEq9C,IAAIC,gBAAgB5hC,IAAI+3B,EAAEp+C,KAAK,WAAW8L,EAAEy7C,eAAenJ,EAAEp+C,KAAK,SAAS,UAAUwP,EAAExB,KAAK,QAAQuZ,OAAOxc,GAAGw0C,GAAE,WAAWnB,EAAE,GAAGnH,QAAQmH,EAAErkD,WAAU,OAA8DssB,MAAMva,EAAE3a","sources":["webpack://motion-chat/./node_modules/@flowjs/ng-flow/dist/ng-flow.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/templateFactory.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/locationServices.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/services.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/common.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/coreservices.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/glob.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/hof.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/predicates.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/queue.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/strings.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/trace.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/globals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/param.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/stateParams.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathNode.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/router.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateObject.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/targetState.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/views.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/url.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRule.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRules.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/view/view.js","webpack://motion-chat/./node_modules/angular-aria/angular-aria.js","webpack://motion-chat/./node_modules/angular-rateit/dist/ng-rateit.js","webpack://motion-chat/./src/js/index.controller.js","webpack://motion-chat/./src/js/index.route.js","webpack://motion-chat/./src/js/closing/index.controller.js","webpack://motion-chat/./src/js/index.factory.js","webpack://motion-chat/./src/js/chat/index.controller.js","webpack://motion-chat/./src/js/offline/index.controller.js","webpack://motion-chat/./src/js/online/index.controller.js","webpack://motion-chat/./src/js/unmanaged/index.controller.js","webpack://motion-chat/./src/js/waiting/index.controller.js","webpack://motion-chat/./src/js/index.module.js","webpack://motion-chat/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://motion-chat/./node_modules/json-form-data/src/jsonToFormData.js","webpack://motion-chat/./node_modules/moment/locale/af.js","webpack://motion-chat/./node_modules/moment/locale/ar-dz.js","webpack://motion-chat/./node_modules/moment/locale/ar-kw.js","webpack://motion-chat/./node_modules/moment/locale/ar-ly.js","webpack://motion-chat/./node_modules/moment/locale/ar-ma.js","webpack://motion-chat/./node_modules/moment/locale/ar-sa.js","webpack://motion-chat/./node_modules/moment/locale/ar-tn.js","webpack://motion-chat/./node_modules/moment/locale/ar.js","webpack://motion-chat/./node_modules/moment/locale/az.js","webpack://motion-chat/./node_modules/moment/locale/be.js","webpack://motion-chat/./node_modules/moment/locale/bg.js","webpack://motion-chat/./node_modules/moment/locale/bm.js","webpack://motion-chat/./node_modules/moment/locale/bn-bd.js","webpack://motion-chat/./node_modules/moment/locale/bn.js","webpack://motion-chat/./node_modules/moment/locale/bo.js","webpack://motion-chat/./node_modules/moment/locale/br.js","webpack://motion-chat/./node_modules/moment/locale/bs.js","webpack://motion-chat/./node_modules/moment/locale/ca.js","webpack://motion-chat/./node_modules/moment/locale/cs.js","webpack://motion-chat/./node_modules/moment/locale/cv.js","webpack://motion-chat/./node_modules/moment/locale/cy.js","webpack://motion-chat/./node_modules/moment/locale/da.js","webpack://motion-chat/./node_modules/moment/locale/de-at.js","webpack://motion-chat/./node_modules/moment/locale/de-ch.js","webpack://motion-chat/./node_modules/moment/locale/de.js","webpack://motion-chat/./node_modules/moment/locale/dv.js","webpack://motion-chat/./node_modules/moment/locale/el.js","webpack://motion-chat/./node_modules/moment/locale/en-au.js","webpack://motion-chat/./node_modules/moment/locale/en-ca.js","webpack://motion-chat/./node_modules/moment/locale/en-gb.js","webpack://motion-chat/./node_modules/moment/locale/en-ie.js","webpack://motion-chat/./node_modules/moment/locale/en-il.js","webpack://motion-chat/./node_modules/moment/locale/en-in.js","webpack://motion-chat/./node_modules/moment/locale/en-nz.js","webpack://motion-chat/./node_modules/moment/locale/en-sg.js","webpack://motion-chat/./node_modules/moment/locale/eo.js","webpack://motion-chat/./node_modules/moment/locale/es-do.js","webpack://motion-chat/./node_modules/moment/locale/es-mx.js","webpack://motion-chat/./node_modules/moment/locale/es-us.js","webpack://motion-chat/./node_modules/moment/locale/es.js","webpack://motion-chat/./node_modules/moment/locale/et.js","webpack://motion-chat/./node_modules/moment/locale/eu.js","webpack://motion-chat/./node_modules/moment/locale/fa.js","webpack://motion-chat/./node_modules/moment/locale/fi.js","webpack://motion-chat/./node_modules/moment/locale/fil.js","webpack://motion-chat/./node_modules/moment/locale/fo.js","webpack://motion-chat/./node_modules/moment/locale/fr-ca.js","webpack://motion-chat/./node_modules/moment/locale/fr-ch.js","webpack://motion-chat/./node_modules/moment/locale/fr.js","webpack://motion-chat/./node_modules/moment/locale/fy.js","webpack://motion-chat/./node_modules/moment/locale/ga.js","webpack://motion-chat/./node_modules/moment/locale/gd.js","webpack://motion-chat/./node_modules/moment/locale/gl.js","webpack://motion-chat/./node_modules/moment/locale/gom-deva.js","webpack://motion-chat/./node_modules/moment/locale/gom-latn.js","webpack://motion-chat/./node_modules/moment/locale/gu.js","webpack://motion-chat/./node_modules/moment/locale/he.js","webpack://motion-chat/./node_modules/moment/locale/hi.js","webpack://motion-chat/./node_modules/moment/locale/hr.js","webpack://motion-chat/./node_modules/moment/locale/hu.js","webpack://motion-chat/./node_modules/moment/locale/hy-am.js","webpack://motion-chat/./node_modules/moment/locale/id.js","webpack://motion-chat/./node_modules/moment/locale/is.js","webpack://motion-chat/./node_modules/moment/locale/it-ch.js","webpack://motion-chat/./node_modules/moment/locale/it.js","webpack://motion-chat/./node_modules/moment/locale/ja.js","webpack://motion-chat/./node_modules/moment/locale/jv.js","webpack://motion-chat/./node_modules/moment/locale/ka.js","webpack://motion-chat/./node_modules/moment/locale/kk.js","webpack://motion-chat/./node_modules/moment/locale/km.js","webpack://motion-chat/./node_modules/moment/locale/kn.js","webpack://motion-chat/./node_modules/moment/locale/ko.js","webpack://motion-chat/./node_modules/moment/locale/ku.js","webpack://motion-chat/./node_modules/moment/locale/ky.js","webpack://motion-chat/./node_modules/moment/locale/lb.js","webpack://motion-chat/./node_modules/moment/locale/lo.js","webpack://motion-chat/./node_modules/moment/locale/lt.js","webpack://motion-chat/./node_modules/moment/locale/lv.js","webpack://motion-chat/./node_modules/moment/locale/me.js","webpack://motion-chat/./node_modules/moment/locale/mi.js","webpack://motion-chat/./node_modules/moment/locale/mk.js","webpack://motion-chat/./node_modules/moment/locale/ml.js","webpack://motion-chat/./node_modules/moment/locale/mn.js","webpack://motion-chat/./node_modules/moment/locale/mr.js","webpack://motion-chat/./node_modules/moment/locale/ms-my.js","webpack://motion-chat/./node_modules/moment/locale/ms.js","webpack://motion-chat/./node_modules/moment/locale/mt.js","webpack://motion-chat/./node_modules/moment/locale/my.js","webpack://motion-chat/./node_modules/moment/locale/nb.js","webpack://motion-chat/./node_modules/moment/locale/ne.js","webpack://motion-chat/./node_modules/moment/locale/nl-be.js","webpack://motion-chat/./node_modules/moment/locale/nl.js","webpack://motion-chat/./node_modules/moment/locale/nn.js","webpack://motion-chat/./node_modules/moment/locale/oc-lnc.js","webpack://motion-chat/./node_modules/moment/locale/pa-in.js","webpack://motion-chat/./node_modules/moment/locale/pl.js","webpack://motion-chat/./node_modules/moment/locale/pt-br.js","webpack://motion-chat/./node_modules/moment/locale/pt.js","webpack://motion-chat/./node_modules/moment/locale/ro.js","webpack://motion-chat/./node_modules/moment/locale/ru.js","webpack://motion-chat/./node_modules/moment/locale/sd.js","webpack://motion-chat/./node_modules/moment/locale/se.js","webpack://motion-chat/./node_modules/moment/locale/si.js","webpack://motion-chat/./node_modules/moment/locale/sk.js","webpack://motion-chat/./node_modules/moment/locale/sl.js","webpack://motion-chat/./node_modules/moment/locale/sq.js","webpack://motion-chat/./node_modules/moment/locale/sr-cyrl.js","webpack://motion-chat/./node_modules/moment/locale/sr.js","webpack://motion-chat/./node_modules/moment/locale/ss.js","webpack://motion-chat/./node_modules/moment/locale/sv.js","webpack://motion-chat/./node_modules/moment/locale/sw.js","webpack://motion-chat/./node_modules/moment/locale/ta.js","webpack://motion-chat/./node_modules/moment/locale/te.js","webpack://motion-chat/./node_modules/moment/locale/tet.js","webpack://motion-chat/./node_modules/moment/locale/tg.js","webpack://motion-chat/./node_modules/moment/locale/th.js","webpack://motion-chat/./node_modules/moment/locale/tk.js","webpack://motion-chat/./node_modules/moment/locale/tl-ph.js","webpack://motion-chat/./node_modules/moment/locale/tlh.js","webpack://motion-chat/./node_modules/moment/locale/tr.js","webpack://motion-chat/./node_modules/moment/locale/tzl.js","webpack://motion-chat/./node_modules/moment/locale/tzm-latn.js","webpack://motion-chat/./node_modules/moment/locale/tzm.js","webpack://motion-chat/./node_modules/moment/locale/ug-cn.js","webpack://motion-chat/./node_modules/moment/locale/uk.js","webpack://motion-chat/./node_modules/moment/locale/ur.js","webpack://motion-chat/./node_modules/moment/locale/uz-latn.js","webpack://motion-chat/./node_modules/moment/locale/uz.js","webpack://motion-chat/./node_modules/moment/locale/vi.js","webpack://motion-chat/./node_modules/moment/locale/x-pseudo.js","webpack://motion-chat/./node_modules/moment/locale/yo.js","webpack://motion-chat/./node_modules/moment/locale/zh-cn.js","webpack://motion-chat/./node_modules/moment/locale/zh-hk.js","webpack://motion-chat/./node_modules/moment/locale/zh-mo.js","webpack://motion-chat/./node_modules/moment/locale/zh-tw.js","webpack://motion-chat//Users/andreabianco/Documents/Developments/xcally_motion_next/motion-server/motion-chat/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://motion-chat/./node_modules/ng-csv/build/ng-csv.min.js"],"names":["angular","module","provider","this","defaults","factory","options","Flow","events","on","event","callback","push","$get","fn","opts","flow","extend","forEach","controller","$scope","$attrs","$parse","flowFactory","$eval","flowInit","flowObject","create","catchAllHandler","eventName","args","Array","prototype","slice","call","arguments","shift","$broadcast","apply","concat","$applyAsync","defaultPrevented","$on","off","$flow","hasOwnProperty","flowName","assign","directive","scope","element","attrs","isDirectory","isSingleFile","inputAttrs","flowAttrs","assignBrowse","bind","preventDefault","$timeout","promise","enter","dragEvent","fileDrag","dataTransfer","originalEvent","types","val","$apply","flowDragEnter","cancel","flowDragLeave","assignDrop","flowDropEnabled","$watch","value","unAssignDrop","fileSuccess","fileProgress","fileAdded","filesAdded","filesSubmitted","fileRetry","fileRemoved","fileError","uploadStart","complete","progress","error","eventArgs","string","name","charAt","toUpperCase","require","funcArgs","key","file","flowImg","fileReader","FileReader","readAsDataURL","onload","$set","target","result","transfers","files","uiView","$ViewDirectiveFill","$compile","$controller","$transitions","$view","$q","getControllerAs","parse","getResolveAs","restrict","priority","compile","tElement","initial","html","empty","$element","data","contents","cfg","$cfg","viewDecl","getTemplate","noop","resolveCtx","path","ResolveContext","trace","$uiView","link","controllerAs","resolveAs","locals","controllerInstance","children","registerControllerCallbacks","isString","component","kebobName","kebobString","tagRegexp_1","RegExp","deregisterWatch_1","directiveEl","filter","el","tagName","exec","ctrlInstance","$animate","$uiViewScroll","$interpolate","rootData","$context","_pluginapi","_rootViewContext","count","terminal","transclude","tAttrs","$transclude","previousEl","currentEl","currentScope","viewConfig","onloadExp","autoScrollExp","renderer","cb","then","leave","inherited","inheritedData","activeUIView","$type","id","fqn","config","configUpdated","updateView","fromParentTagConfig","fromParentTag","unregister","registerUIView","newScope","$new","animEnter","defer","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","$emit","cloned","clone","resolve","isDefined","remove","$destroy","_viewData_1","cleanupLastView","$inject","hasComponentImpl","_uiCanExitId","isFunction","$onInit","componentProvider","viewState","tail","state","self","hookOptions","uiOnParamsChanged","viewCreationTrans_1","getResolvable","onSuccess","$transition$","exiting","indexOf","toParams","params","fromParams","getNodeSchema","node","paramSchema","toSchema","treeChanges","map","reduce","unnestR","fromSchema","changedToParams","param","idx","type","equals","length","changedKeys_1","x","newValues","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","trans","redirectedFrom","criteria","onBefore","ids","when","TemplateFactory","_this","_useHttp","$http","$templateCache","$injector","$templateRequest","has","get","useHttpService","fromConfig","context","asTemplate","services","str","template","asComponent","fromString","templateUrl","fromUrl","templateProvider","fromProvider","fromComponentProvider","url","cache","headers","Accept","response","deps","providerFn","isArray","Resolvable","makeComponentTemplate","bindings","prefix","kebob","camelCase","kebobed","cmpDefs","Error","getBindings","getComponentBindings","input","attrName","attr","resolveName","res","join","def","isObject","bindToController","scopeBindings","bindingsObj","Object","keys","tuple","getStateHookBuilder","hookName","stateObject","hook","pathname","subContext","$$state","getLocals","$state$","undefined","Ng1LocationServices","$locationProvider","_urlListeners","_lp","createProxyFunctions","monkeyPatchPathParameterType","router","pathType","urlMatcherFactory","encode","toString","replace","m","decode","dispose","onChange","removeFrom","html5Mode","enabled","$sniffer","history","baseHref","_baseHref","$browser","$window","location","newUrl","$location","_runtimeServices","$rootScope","evt","_loc","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","UIRouter","stateProvider","stateRegistry","stateService","decorator","viewService","_viewConfigFactory","urlService","_decodeParams","ng1LocationService","locationService","locationConfig","getProviderFor","serviceName","$urp","service","runBlock","$uiRouter","invoke","checkStrictDi","strictDi","resolvables","resolvable","annotate","resolveFn","watchDigests","uiRouter","urlRouterProvider","globals","run","$urlMatcherFactory","$state","$urlRouter","ctx","getTokens","getPolicy","async","applyPairs","$IsStateFilter","isFilter","is","$stateful","$IncludedByStateFilter","includesFilter","includes","StateProvider","func","definition","register","onInvalid","getNg1ViewConfigFactory","templateFactory","view","Ng1ViewConfig","hasAnyKey","obj","acc","ng1ViewsBuilder","parent","compKeys","nonCompKeys","allViewKeys","views","viewsObject","$default","pick","$name","normalized","ViewService","$uiViewName","uiViewName","$uiViewContextAnchor","uiViewContextAnchor","$id","loaded","load","paramValues","promises","getController","all","results","controllerProvider","isInjectable","UrlRouterProvider","injectableHandler","handler","match","$match","$stateParams","urlRouter","update","interceptDeferred","listen","rule","ruleFn","BaseUrlRule","identity","rules","otherwise","urlRules","what","deferIntercept","useAnchorScroll","$anchorScroll","scrollIntoView","__spreadArrays","s","i","il","r","k","a","j","jl","root","g","global","fromJson","JSON","toJson","stringify","toObj","_equals","o1","o2","t1","a1","a2","tup","arrayTuples","b","t","getTime","source","fnNames","latebind","bindFunction","fnName","inherit","extra","inArray","array","splice","pushTo","arr","deregAll","functions","defaultsList","_i","defaultVals","reverse","mergeR","memo","item","ancestors","first","second","n","propNames","objCopy","_prop","omit","collection","accept","find","mapObj","values","allTrueR","elem","anyTrueR","flattenR","pushR","uniqR","token","unnest","assertPredicate","predicateOrMap","errMsg","maxArrayLen","min","Math","_loop_1","keyValTuple","copy","src","dest","silenceUncaughtInPromise","catch","e","silentRejection","makeStub","methods","fnname","Glob","text","glob","split","regexpString","seg","regexp","matches","test","curry","curried","compose","start","pipe","funcs","prop","propEq","_val","not","and","fn1","fn2","or","any","ctor","constructor","v","pattern","struct","toStr","tis","isUndefined","isNull","o","isNullOrUndefined","isNumber","isDate","isRegExp","head","isPromise","Queue","_items","_limit","_evictListeners","onEvict","enqueue","items","evict","dequeue","size","clear","current","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","document","documentMode","window","console","bound","Function","ie9Console","fallbackConsole","maxLength","max","substr","padString","$1","toLowerCase","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","isRejection","stringifyPattern","_transitionRejection","seen","format","beforeAfterSubstr","char","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","Category","uiViewString","uiview","creationContext","normalizedCat","_tid","_rid","transLbl","Trace","_enabled","approximateDigests","_set","categories","parseInt","isNaN","category","enable","disable","traceTransitionStart","TRANSITION","traceTransitionIgnored","traceHookInvocation","step","HOOK","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","RESOLVE","traceResolvableResolved","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","UIVIEW","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","pairs","VIEWCONFIG","uivheader","mapping","_a","_b","uiv","sort","localeCompare","traceViewServiceEvent","viewConfigString","traceViewServiceUIViewEvent","UIRouterGlobals","lastStartedTransitionId","transitionHistory","successfulTransitions","transition","lazyLoadHook","entering","lazyLoad","lazyLoadState","originalTransition","orig","targetState","identifier","$url","parts","sync","registerLazyLoadHook","transitionService","lazyLoadFn","states","_state","err","DefType","hasOwn","Param","urlConfig","paramName","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","getParamDeclaration","urlType","paramTypes","CONFIG","PATH","getType","arrayDefaults","arrayParamNomenclature","arrayMode","$asArray","isOptional","raw","squash","defaultPolicy","getSquashPolicy","defaultSquashPolicy","from","to","configuredKeys","getReplace","params_1","changed","values1","values2","validates","isDefaultValue","replaceSpecialValues","_defaultValueCache","defaultValue","getDefaultValue","$normalize","isSearch","encoded","ParamType","$subPattern","sub","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","left","right","paramTypeFn","wrapperFn","$arrayMode","makeDefaultType","ParamTypes","typeQueue","defaultTypes","definitionFn","_flushTypeQueue","valToString","defaultTypeBase","String","query","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","capture","Date","valueOf","l","json","StateParams","$inherit","newParams","$current","$to","parentParams","parents","inheritList","PathNode","stateOrNode","parameters","applyRawParams","pDef","paramDef","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","buildPath","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","toNode","toParamVals","incomingParamVals","fromParamVals","ownParamVals","reloadState","node1","node2","retained","keep","nonDynamicParams","retainedWithToParams","retainedNode","matching","pathA","pathB","done","nodeA","nodeB","predicate","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","arg1","policy","resolved","literal","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","_path","addResolvables","newResolvables","resolvePath","matchedWhens","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","injector","_injector","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","_disposed","_disposables","_plugins","disposable","d","ignored","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","newStateDec","parsed","substring","parseUrl","isMatcher","navigable","append","getNavigableBuilder","isRoot","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","p","provide","literal2Resolvable","useFactory","dependencies","useClass","useValue","useExisting","tuple2Resolvable","item2Resolvable","decl","StateBuilder","matcher","paramFactory","builders","parentName","urlParams","nonUrlParams","builder","build","chain","parentFn","segments","pop","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","ref","matchingKeys","isStateDeclaration","isState","StateQueueManager","listeners","queue","flush","registered","orphans","previousQueueLength","getState","notifyListeners","listener","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","prev","abstract","rulesApi","urlRuleFactory","StateRegistry","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","property","builderFunction","TargetState","_stateRegistry","_identifier","_params","_options","_definition","relative","exists","valid","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","reverseSort","factor","depthDelta","isCreate","hookPhase","reg","getHooks","matchState","criterion","toMatch","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","every","makeEvent","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","TransitionHookPhase","TransitionHookScope","RejectType","Rejection","message","detail","isRejectionPromise","superseded","rejection","SUPERSEDED","redirected","invalid","INVALID","IGNORED","aborted","ABORTED","errored","ERROR","normalize","toPromise","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","defaultOptions","TransitionHook","stateContext","isSuperseded","isActive","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","runAllHooks","logError","defaultErrorHandler","notCurrent","getNotCurrentRejection","handleError","handleResult","handleHookResult","isTargetState","_aborted","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","addResolvable","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirect","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","RESOLVE_HOOK_PRIORITY","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","urlOptions","ignoredHook","ignoredReason","_ignoredReason","pending","abort","invalidTransitionHook","defaultTransOpts","notify","reload","supercede","custom","TransitionService","_router","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","onCreate","onStart","onExit","onRetain","onEnter","onFinish","onError","hooksArray","Phase","TH","paths","NORMAL_SORT","SYNCHRONOUS","_defineEvent","CREATE","BEFORE","RUN","SUCCESS","STATE","_definePathType","cmpByPhase","hookScope","fns","addCoreResolves","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","hashPrefix","newprefix","host","port","protocol","caseInsensitive","strictMode","__assign","ParamFactory","fromSearch","UrlMatcherFactory","UrlMatcher","globalConfig","strict","decodeParams","object","UrlRouter","urlParts","compareFn","read","urlMatcher","href","absolute","isHtml5","appendBasePath","slash","cfgPort","defineProperty","enumerable","configurable","UrlRuleFactory","makeRule","_what","fromUrlMatcher","fromState","fromRegExp","_handler","details","matchPriority","optional","search","stateOrDecl","transitionTo","sticky","Number","isUrlRule","defaultRuleSortFn","getHandlerFn","cmp","prioritySort","weights","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","group","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","wrapper","UrlService","newurl","best","go","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","_location","_history","BrowserLocationConfig","_isHtml5","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","setPrototypeOf","__proto__","__","HashLocationService","_super","title","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","PushStateLocationService","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","keyValsToObjectR","accum","getParams","queryString","orEmptyString","beforehash","buildUrl","loc","searchObject","locationPluginFactory","serviceClass","configurationClass","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","allTuples","uiViews","available","active","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","ARIA_DISABLE_ATTR","ngAriaModule","info","angularVersion","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeydown","bindRoleForClick","watchExpr","ariaAttr","nativeAriaNodeNames","negate","ariaCamelName","isNodeOneOf","boolVal","newConfig","$$watchExpr","nodeTypeArray","nodeName","$aria","shouldAttachAttr","normalizedAttr","allowNonAriaNodes","shouldAttachRole","role","shape","getShape","post","ngModel","needsTabIndex","ngAriaWatchModelValue","$modelValue","newVal","$viewValue","$isEmpty","needsAriaValuemin","needsAriaValuemax","needsAriaValuenow","$observe","$validators","required","$invalid","ngMessages","ngClick","ngKeydown","ngKeypress","ngKeyup","keyCode","which","isContentEditable","$event","readOnly","pristine","resetable","starWidth","starHeight","canelWidth","cancelHeight","rated","reset","beforeRated","beforeReset","isTouch","navigator","msMaxTouchPoints","orgValue","starPartWidth","steps","garbage","getValue","index","getStartParts","getStarOffset","ratio","isSelected","removeRating","rating","setValue","tmpValue","put","IndexController","$mdDialog","localStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","vm","updateStorage","storage","set","toggle","up","cmd","layout","postMessage","$$phase","settings","status","div_color","color","text_color","textColor","button_color","color_button","background_color","backgroundColor","client_height","documentElement","clientHeight","innerHeight","client_width","clientWidth","style","setProperty","tg","visitorStorage","layoutStorage","visitor","interaction","alignment","online","exceeded","maxInteractions","openedInteractions","isOnline","hideWhenOffline","createElement","appendChild","sheet","insertRule","close","confirm","querySelector","clickOutsideToClose","closingQuestion","ok","show","chatInteraction","customUpdate","closed","closeReason","closedAt","moment","$promise","download","deferred","getMessages","intid","includeAll","_map","rows","row","sender","direction","customerAlias","ContactId","agentIdentifier","UserId","agentAlias","User","alias","fullname","body","createdAt","getHeaderShape","header_shape","CHAT_STATUSES","offline","defaultTitle","header_online","header_offline","addEventListener","routeRun","cursor","hide","_forIn","_isNil","routeConfig","$stateProvider","$urlRouterProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX","Pragma","setPrefix","waitingTemplate","onlineTemplate","offlineTemplate","chatTemplate","unmanagedTemplate","closingTemplate","ClosingController","$mdToast","errors","toast","simple","textContent","formSubmitFailureMessage","toastClass","position","stopLoading","loading","goToIfTime","form","upColor","downColor","userForm","$setPristine","$setUntouched","enableDownload","submit","_merge","ratingType","customer","formSubmitSuccessMessage","finally","skip","apiService","$resource","paramDefaults","baseUrl","remote","chatWebsite","method","getFields","uploadAttachment","transformRequest","downloadAttachment","chatMessage","ChatController","$interval","$document","emojiArea","getMessagesInterval","getInteractionInterval","lastMessageId","scrollToBottomOfChat","getElementsByClassName","scrollTop","scrollHeight","sendMessage","chatMessageError","emojioneArea","setText","getInteraction","disposition","reply","getText","shiftKey","includeAgent","added","_find","messages","emojiOptions","watchEmbedData","fontSmiley","emoji","linkTarget","showMenu","replyMessage","$","placeholder","placeholderMessage","keyup","editor","ready","setFocus","reply_button","fd","FormData","sendAttachment","AttachmentId","_values","OfflineController","$sce","fromKey","initialFields","typeField","optJsonFormData","showLeafArrayIndexes","includeNullValues","onSubmitSuccess","fields","_cloneDeep","trustAsHtml","initUploadButton","formItem","uploadItem","button","label","css","trigger","click","props","maxSizeMB","some","sizeErrMessage","removeFileItem","setupFileInput","multipleUpload","setAttribute","makeFileOptionsVisible","fileOpts","lastOpt","mapKeyOffline","_random","field","helpText","isHTML","checkHTML","cmField","uploadFields","payLoad","isFormDataPayload","isJsonPayload","payload","jsonToFormData","initialFormData","Promise","reject","OnlineController","getAnonymous","disableItem","chatInteractionId","channel","mapKey","variable","referer","customerIp","enableCustomerWriting","UnmanagedController","note","WaitingController","called","open","unload","xhr","XMLHttpRequest","setRequestHeader","send","readyState","removeEventListener","toTrustedFilter","constant","ngEnter","getElementById","div","startTime","sentAt","createTextNode","myWindow","write","innerHTML","focus","print","printElement","elemToPrint","$mdGestureProvider","skipClickHijack","exports","globalThis","isJsonObject","Blob","isGlobalFormDataPresent","getDefaultFormData","convertRecursively","jsonObject","formData","parentKey","propName","FileList","toISOString","mergedOptions","carry","objectToMerge","objectKey","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","f","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","num","forms","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","output","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","offset","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","now","$0","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","days","numbersNouns","numberNoun","hundred","floor","ten","one","word","numberAsNoun","time","hm","processHoursFunction","nominative","accusative","genitive","webpackContext","req","webpackContextResolve","__webpack_require__","code","debug","urlSanitizationWhitelist","aHrefSanitizationWhitelist","stringifyField","decimalSep","isFloat","toLocaleString","quoteStrings","txtDelim","isFinite","header","fieldSep","c","columnOrder","addByteOrderMarker","isSpecialChar","getSpecialChar","filename","charset","csv","buildCSV","getFilename","addClass","ngCsvLoadingClass","csvHeader","csvColumnOrder","csvLabel","removeClass","msSaveOrOpenBlob","msSaveBlob","URL","createObjectURL"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"scripts/chat.js","mappings":";iMAOAA,QAAQC,OAAO,gBAAiB,IAC/BC,SAAS,eAAe,WACvB,aAMAC,KAAKC,SAAW,GAQhBD,KAAKE,QAAU,SAAUC,GACvB,OAAO,IAAIC,EAAKD,IASlBH,KAAKK,OAAS,GASdL,KAAKM,GAAK,SAAUC,EAAOC,GACzBR,KAAKK,OAAOI,KAAK,CAACF,EAAOC,KAG3BR,KAAKU,KAAO,WACV,IAAIC,EAAKX,KAAKE,QACVD,EAAWD,KAAKC,SAChBI,EAASL,KAAKK,OAClB,MAAO,CACL,OAAU,SAASO,GAEjB,IAAIC,EAAOF,EAAGd,QAAQiB,OAAO,GAAIb,EAAUW,IAI3C,OAHAf,QAAQkB,QAAQV,GAAQ,SAAUE,GAChCM,EAAKP,GAAGC,EAAM,GAAIA,EAAM,OAEnBM,QAKfhB,QAAQC,OAAO,YAAa,CAAC,kBAC1BkB,WAAW,WAAY,CAAC,SAAU,SAAU,SAAU,cACvD,SAAUC,EAAQC,EAAQC,EAAQC,GAEhC,IAAIjB,EAAUN,QAAQiB,OAAO,GAAIG,EAAOI,MAAMH,EAAOI,WAGjDT,EAAQI,EAAOI,MAAMH,EAAOK,aAAeH,EAAYI,OAAOrB,GAE9DsB,EAAkB,SAASC,GAC7B,IAAIC,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtCL,EAAKM,QACL,IAAI1B,EAAQU,EAAOiB,WAAWC,MAAMlB,EAAQ,CAAC,SAAWS,EAAWb,GAAMuB,OAAOT,IAMhF,GALI,CACF,SAAW,EAAG,eAAiB,EAAG,YAAe,EAAG,UAAa,EAAG,SAAY,GAChFD,IACAT,EAAOoB,cAEL9B,EAAM+B,iBACR,OAAO,GAIXzB,EAAKP,GAAG,WAAYmB,GACpBR,EAAOsB,IAAI,YAAY,WACnB1B,EAAK2B,IAAI,WAAYf,MAGzBR,EAAOwB,MAAQ5B,EAEXK,EAAOwB,eAAe,cACxBvB,EAAOD,EAAOyB,UAAUC,OAAO3B,EAAQJ,GACvCI,EAAOsB,IAAI,YAAY,WACrBpB,EAAOD,EAAOyB,UAAUC,OAAO3B,UAIpC4B,UAAU,WAAY,CAAC,WACtB,MAAO,CACLC,OAAO,EACP9B,WAAY,eAGlBnB,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,SAAY,KACZ,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAIC,EAAcD,EAAMN,eAAe,iBACnCQ,EAAeF,EAAMN,eAAe,kBACpCS,EAAaH,EAAMN,eAAe,cAAgBI,EAAMzB,MAAM2B,EAAMI,WACxEN,EAAML,MAAMY,aAAaN,EAASE,EAAaC,EAAcC,QAInEtD,QAAQC,OAAO,kBAAmB,CAAC,cAKhC+C,UAAU,mBAAmB,WAC5B,MAAO,CACL,OAAS,EACT,KAAQ,SAASC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,iBAAiB,SAAU/C,GACtCA,EAAMgD,yBASbV,UAAU,gBAAiB,CAAC,WAAY,SAASW,GAChD,MAAO,CACL,OAAS,EACT,KAAQ,SAASV,EAAOC,EAASC,GAC/B,IAAIS,EACAC,GAAQ,EACZX,EAAQO,KAAK,YAAY,SAAU/C,GAmBnC,IAAoBoD,EACdC,EACAC,EADAD,GAAW,EACXC,GAFcF,EAlBFpD,GAoBasD,cAAgBF,EAAUG,cAAcD,aACrEhE,QAAQkB,QAAQ8C,GAAgBA,EAAaE,OAAO,SAASC,GAC/C,UAARA,IACFJ,GAAW,MAGRA,IAvBFF,IACHZ,EAAMmB,OAAOjB,EAAMkB,eACnBR,GAAQ,GAEVF,EAASW,OAAOV,GAChBlD,EAAMgD,qBAERR,EAAQO,KAAK,kBAAkB,SAAU/C,GACvCiD,EAASW,OAAOV,GAChBA,EAAUD,GAAS,WACjBV,EAAMzB,MAAM2B,EAAMoB,eAClBX,EAAU,KACVC,GAAQ,IACP,aAgBb7D,QAAQC,OAAO,YAAa,CAAC,cAC5B+C,UAAU,YAAY,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAY/B,SAASqB,IACPvB,EAAML,MAAM4B,WAAWtB,GAZrBC,EAAMsB,gBACRxB,EAAMyB,OAAOvB,EAAMsB,iBAAiB,SAAUE,GACxCA,EACFH,IAYJvB,EAAML,MAAMgC,aAAa1B,MANzBsB,SAYP,SAAUxE,GAAU,aACnB,IAAIC,EAASD,EAAQC,OAAO,cAAe,CAAC,cAgB5CD,EAAQkB,QAfK,CACX2D,YAAa,CAAC,QAAS,YACvBC,aAAc,CAAC,SACfC,UAAW,CAAC,QAAS,UACrBC,WAAY,CAAC,SAAU,UACvBC,eAAgB,CAAC,SAAU,UAC3BC,UAAW,CAAC,SACZC,YAAa,CAAC,SACdC,UAAW,CAAC,QAAS,YACrBC,YAAa,GACbC,SAAU,GACVC,SAAU,GACVC,MAAO,CAAC,WAAY,WAGE,SAAUC,EAAW5D,GAC3C,IA4B6B6D,EA5BzBC,EAAO,SA4BkBD,EA5Ba7D,GA6B5B+D,OAAO,GAAGC,cAAgBH,EAAOzD,MAAM,IA5BzC,mBAAR0D,IACFA,EAAO,qBAET1F,EAAO+C,UAAU2C,EAAM,CAAC,WACtB,MAAO,CACLG,QAAS,YACT3E,WAAY,CAAC,SAAU,SAAU,SAAUC,EAAQC,GACjDD,EAAOsB,IAAI,SAAWb,GAAW,WAC/B,IAAIkE,EAAWhE,MAAMC,UAAUC,MAAMC,KAAKC,WACtCzB,EAAQqF,EAAS3D,QAErB,GAAIhB,EAAOwB,QAAUmD,EAAS3D,QAA9B,CAGA,IAAIN,EAAO,GACX9B,EAAQkB,QAAQuE,GAAW,SAASd,EAAOqB,GACzClE,EAAK6C,GAASoB,EAASC,OAEgB,IAArC5E,EAAOI,MAAMH,EAAOsE,GAAO7D,IAC7BpB,EAAMgD,8BAtCnB,CAiDC1D,SAEFA,QAAQC,OAAO,WAAY,CAAC,cAC3B+C,UAAU,UAAW,CAAC,WACrB,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,EAAOC,EAASC,GAC/B,IAAI8C,EAAO9C,EAAM+C,QACjBjD,EAAMyB,OAAOuB,GAAM,SAAUA,GAC3B,GAAKA,EAAL,CAGA,IAAIE,EAAa,IAAIC,WACrBD,EAAWE,cAAcJ,EAAKA,MAC9BE,EAAWG,OAAS,SAAU5F,GAC5BuC,EAAMmB,QAAO,WACXjB,EAAMoD,KAAK,MAAO7F,EAAM8F,OAAOC,qBAO3CzG,QAAQC,OAAO,iBAAkB,CAAC,cACjC+C,UAAU,gBAAiB,CAAC,WAC3B,MAAO,CACL,OAAS,EACT,QAAW,YACX,KAAQ,SAASC,GACfA,EAAMyD,UAAYzD,EAAML,MAAM+D,WAIpC3G,QAAQC,OAAO,OAAQ,CAAC,gBAAiB,YAAa,cAAe,WACnE,YAAa,iBAAkB,WAAY,yHC9JlC2G,4PAkKX,SAASC,EAAmBC,EAAUC,EAAaC,EAAcC,EAAOC,GACpE,IAAIC,GAAkB,IAAAC,OAAM,yBACxBC,GAAe,IAAAD,OAAM,sBACzB,MAAO,CACHE,SAAU,MACVC,UAAW,IACXC,QAAS,SAAUC,GACf,IAAIC,EAAUD,EAASE,OAEvB,OADAF,EAASG,QACF,SAAU3E,EAAO4E,GACpB,IAAIC,EAAOD,EAASC,KAAK,WACzB,IAAKA,EAGD,OAFAD,EAASF,KAAKD,QACdZ,EAASe,EAASE,WAAlBjB,CAA8B7D,GAGlC,IAAI+E,EAAMF,EAAKG,MAAQ,CAAEC,SAAU,GAAIC,YAAa,EAAAC,MAChDC,EAAaL,EAAIM,MAAQ,IAAI,EAAAC,eAAeP,EAAIM,MACpDT,EAASF,KAAKK,EAAIG,YAAYN,EAAUQ,IAAeX,GACvD,EAAAc,MAAA,gBAAsBV,EAAKW,QAASZ,EAASF,QAC7C,IAAIe,EAAO5B,EAASe,EAASE,YACzB5G,EAAa6G,EAAI7G,WACjBwH,EAAexB,EAAgBa,GAC/BY,EAAYvB,EAAaW,GACzBa,EAASR,IAAc,OAAUA,GAErC,GADApF,EAAM2F,GAAaC,EACf1H,EAAY,CACZ,IAAI2H,EAAsB/B,EAAY5F,GAAY,IAAAF,QAAO,GAAI4H,EAAQ,CAAEzH,OAAQ6B,EAAO4E,SAAUA,KAC5Fc,IACA1F,EAAM0F,GAAgBG,EACtB7F,EAAM0F,GAAcC,GAAaC,GAMrChB,EAASC,KAAK,0BAA2BgB,GACzCjB,EAASkB,WAAWjB,KAAK,0BAA2BgB,GACpDE,EAA4B9B,EAAIF,EAAc8B,EAAoB7F,EAAO+E,GAG7E,IAAI,IAAAiB,UAASjB,EAAIkB,WACb,IAAIC,GAAY,IAAAC,aAAYpB,EAAIkB,WAC5BG,EAAc,IAAIC,OAAO,eAAiBH,EAAY,IAAK,KAO3DI,EAAoBtG,EAAMyB,QAND,WACzB,IAAI8E,EAAc,GAAGvH,MAChBC,KAAK2F,EAAS,GAAGkB,UACjBU,QAAO,SAAUC,GAAM,OAAOA,GAAMA,EAAGC,SAAWN,EAAYO,KAAKF,EAAGC,YAC3E,OAAOH,GAAe,aAAgBA,GAAa1B,KAAK,IAAME,EAAIkB,UAAY,iBAErB,SAAUW,GAC9DA,IAELb,EAA4B9B,EAAIF,EAAc6C,EAAc5G,EAAO+E,GACnEuB,QAGRb,EAAKzF,MAzNrB2D,EAAS,CACL,QACA,WACA,gBACA,eACA,KACA,SAAwBK,EAAO6C,EAAUC,EAAeC,EAAc9C,GAwBlE,IAAI+C,EAAW,CACXhC,KAAM,CAAEC,SAAU,CAAEgC,SAAUjD,EAAMkD,WAAWC,qBAC/C3B,QAAS,IAETzF,EAAY,CACZqH,MAAO,EACP/C,SAAU,MACVgD,UAAU,EACV/C,SAAU,IACVgD,WAAY,UACZ/C,QAAS,SAAUC,EAAU+C,EAAQC,GACjC,OAAO,SAAUxH,EAAO4E,EAAU1E,GAC9B,IACIuH,EAAYC,EAAWC,EAAcC,EADrCC,EAAY3H,EAAc,QAAK,GAAI4H,EAAgB5H,EAAkB,WAAG6H,EAjCzE,SAAU9H,EAASsD,EAAQyE,GAC1B,mBAAwB,EACxBnB,EAASjG,MAAMX,EAAS,KAAMsD,GAAQ0E,KAAKD,GAG3CnB,EAASjG,MAAMX,EAAS,KAAMsD,EAAQyE,IA4BkCD,EAzBzE,SAAU9H,EAAS+H,GAClB,mBAAwB,EACxBnB,EAASqB,MAAMjI,GAASgI,KAAKD,GAG7BnB,EAASqB,MAAMjI,EAAS+H,IAoB0EG,EAAYvD,EAASwD,cAAc,YAAcpB,EAAUtE,EAAOqE,EAAa7G,EAAc,QAAKA,EAAY,MAAK,GAAjD6G,CAAqD/G,IAAU,WAEnOqI,EAAe,CACfC,MAAO,MACPC,GAAIxI,EAAUqH,QACd1E,KAAMA,EACN8F,IAAKL,EAAU3C,QAAQgD,IAAML,EAAU3C,QAAQgD,IAAM,IAAM9F,EAAOA,EAClE+F,OAAQ,KACRC,cAWJ,SAA+BD,KACvBA,GAAYA,aAAkB,QAEjBb,IAAYa,IAE7B,EAAAlD,MAAA,yBAA+B8C,EAAcI,GAAUA,EAAOxD,UAAYwD,EAAOxD,SAASgC,UAC1FW,EAAaa,EACbE,EAAWF,MAjBX,sBAEI,IAAIG,GAAsB,IAAAzE,OAAM,yBAAN,CAAgCgE,GAGtDU,GAAgB,IAAA1E,OAAM,0BAAN,CAAiCgE,GACrD,OAAOS,GAAuBC,IAGtC,EAAAtD,MAAA,iBAAuB,UAAW8C,GAUlCzD,EAASC,KAAK,UAAW,CAAEW,QAAS6C,IACpCM,IACA,IAAIG,EAAa9E,EAAM+E,eAAeV,GA2BtC,SAASM,EAAWF,GAChB,IAAIO,EAAWhJ,EAAMiJ,OACjBC,EAAYjF,EAAGkF,QAASC,EAAYnF,EAAGkF,QACvCE,EAAc,CACdrE,KAAMyD,EACNjD,QAAS6C,GAETiB,EAAc,CACdC,WAAYL,EAAUvI,QACtB6I,WAAYJ,EAAUzI,QACtB8I,YAAaL,GAcjBJ,EAASU,MAAM,sBAAuBhH,GACtC,IAAIiH,EAASnC,EAAYwB,GAAU,SAAUY,GACzCA,EAAM/E,KAAK,cAAeyE,GAC1BM,EAAM/E,KAAK,UAAWwE,GACtBtB,EAAe6B,EAAOhF,GAAU,WAC5BsE,EAAUW,UACNlC,GACAA,EAAa+B,MAAM,gCAClB,IAAAI,WAAUhC,KAAmBA,GAAkB9H,EAAMzB,MAAMuJ,KAC5DhB,EAAc8C,MAvD9B,WAWI,GAVInC,IACA,EAAAlC,MAAA,iBAAuB,yBAA0BkC,EAAW5C,KAAK,YACjE4C,EAAWsC,SACXtC,EAAa,MAEbE,IACA,EAAApC,MAAA,iBAAuB,mBAAoB8C,GAC3CV,EAAaqC,WACbrC,EAAe,MAEfD,EAAW,CACX,IAAIuC,EAAcvC,EAAU7C,KAAK,eACjC,EAAAU,MAAA,iBAAuB,cAAe0E,GACtClC,EAAeL,GAAW,WACtBuC,EAAYR,YAAYI,UACxBpC,EAAa,QAEjBA,EAAaC,EACbA,EAAY,MAuCZwC,MAEJxC,EAAYiC,GACZhC,EAAeqB,GAWFU,MAAM,qBAAsBjB,GAAUb,GACnDD,EAAapJ,MAAMsJ,GA7EvB7H,EAAMP,IAAI,YAAY,WAClB,EAAA8F,MAAA,iBAAuB,2BAA4B8C,GACnDS,UAgFhB,OAAO/I,IAGf6D,EAAmBuG,QAAU,CAAC,WAAY,cAAe,eAAgB,QAAS,MAiElF,IAAIC,EAAuE,mBAA7C,YAAe,aAAwB,UAEjEC,EAAe,EAEnB,SAAStE,EAA4B9B,EAAIF,EAAc8B,EAAoB1H,EAAQ4G,KAE3E,IAAAuF,YAAWzE,EAAmB0E,WAC3BxF,EAAIE,SAASgB,WAAalB,EAAIE,SAASuF,oBAAsBJ,GAChEvE,EAAmB0E,UAEvB,IAAIE,GAAY,IAAAC,MAAK3F,EAAIM,MAAMsF,MAAMC,KACjCC,EAAc,CAAErK,KAAMqF,GAE1B,IAAI,IAAAyE,YAAWzE,EAAmBiF,mBAAoB,CAClD,IACIC,EADiB,IAAI,EAAAzF,eAAeP,EAAIM,MACH2F,cAAc,gBAAgBnG,KAyBvE1G,EAAOsB,IAAI,WAAYsE,EAAakH,UAAU,IAvB1B,SAAUC,GAG1B,GAAIA,IAAiBH,IAAsE,IAA/CG,EAAaC,UAAUC,QAAQX,GAA3E,CAEA,IAAIY,EAAWH,EAAaI,OAAO,MAC/BC,EAAaL,EAAaI,OAAO,QACjCE,EAAgB,SAAUC,GAAQ,OAAOA,EAAKC,aAC9CC,EAAWT,EAAaU,YAAY,MAAMC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAC7EC,EAAad,EAAaU,YAAY,QAAQC,IAAIL,GAAeM,OAAO,EAAAC,QAAS,IAEjFE,EAAkBN,EAASnF,QAAO,SAAU0F,GAC5C,IAAIC,EAAMH,EAAWZ,QAAQc,GAC7B,OAAgB,IAATC,IAAeH,EAAWG,GAAKC,KAAKC,OAAOhB,EAASa,EAAM3D,IAAKgD,EAAWW,EAAM3D,QAG3F,GAAI0D,EAAgBK,OAAQ,CACxB,IAAIC,EAAgBN,EAAgBJ,KAAI,SAAUW,GAAK,OAAOA,EAAEjE,MAE5DkE,GAAY,IAAAjG,QAAO6E,GAAU,SAAUnK,EAAK6B,GAAO,OAAuC,IAAhCwJ,EAAcnB,QAAQrI,MACpF8C,EAAmBiF,kBAAkB2B,EAAWvB,OAGSL,IAGrE,IAAI,IAAAP,YAAWzE,EAAmB6G,WAAY,CAC1C,IAAIC,EAAOtC,IACPuC,EAAc,gBAEdC,EAAqB,SAAUC,GAC/B,QAASA,IAAWA,EAAMF,KAA6C,IAA7BE,EAAMF,GAAaD,IAAmBE,EAAmBC,EAAMC,oBAYzGC,EAAW,CAAE7B,QAASV,EAAU/H,MACpCvE,EAAOsB,IAAI,WAAYsE,EAAakJ,SAASD,GAV3B,SAAUF,GACxB,IAAInM,EACAuM,EAAOJ,EAAMF,GAAeE,EAAMF,IAAgB,GAKtD,OAJKC,EAAmBC,KACpBnM,EAAUsD,EAAGkJ,KAAKtH,EAAmB6G,UAAUI,KACvC7E,MAAK,SAAU/G,GAAO,OAAQgM,EAAIP,IAAgB,IAARzL,KAE/CP,IAGyDkK,KAG5E,YAAe,mBAAmB9K,UAAU,SAAU4D,GACtD,YAAe,mBAAmB5D,UAAU,SAAU6D,qSC9ZlDwJ,EAAiC,WACjC,SAASA,IACL,IAAIC,EAAQnQ,KACGA,KAAKoQ,SAAWvQ,EAAQ,GAAR,cAAwB,EACxCG,KAAKU,KAAO,CACvB,QACA,iBACA,YACA,SAAU2P,EAAOC,EAAgBC,GAI7B,OAHAJ,EAAMK,iBAAmBD,EAAUE,KAAOF,EAAUE,IAAI,qBAAuBF,EAAUG,IAAI,oBAC7FP,EAAME,MAAQA,EACdF,EAAMG,eAAiBA,EAChBH,IAyJnB,OApJAD,EAAgBrO,UAAU8O,eAAiB,SAAUnM,GACjDxE,KAAKoQ,SAAW5L,GAepB0L,EAAgBrO,UAAU+O,WAAa,SAAUrF,EAAQ6C,EAAQyC,GAC7D,IACIC,EAAa,SAAUxK,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGC,SAAUD,OAC3GE,EAAc,SAAU5K,GAAU,OAAO,EAAAyK,SAAA,QAAiBzK,GAAQyE,MAAK,SAAUiG,GAAO,MAAO,CAAGjI,UAAWiI,OACjH,OAAO,IAAApE,WAAUrB,EAAO0F,UAClBH,EAAW9Q,KAAKmR,WAAW5F,EAAO0F,SAAU7C,KAC5C,IAAAxB,WAAUrB,EAAO6F,aACbN,EAAW9Q,KAAKqR,QAAQ9F,EAAO6F,YAAahD,KAC5C,IAAAxB,WAAUrB,EAAO+F,kBACbR,EAAW9Q,KAAKuR,aAAahG,EAAO+F,iBAAkBlD,EAAQyC,KAC9D,IAAAjE,WAAUrB,EAAOxC,WACbmI,EAAY3F,EAAOxC,YACnB,IAAA6D,WAAUrB,EAAO+B,mBACb4D,EAAYlR,KAAKwR,sBAAsBjG,EAAO+B,kBAAmBc,EAAQyC,IACzEC,EAbA,wBAwB1BZ,EAAgBrO,UAAUsP,WAAa,SAAUF,EAAU7C,GACvD,OAAO,IAAAhB,YAAW6D,GAAYA,EAAS7C,GAAU6C,GAWrDf,EAAgBrO,UAAUwP,QAAU,SAAUI,EAAKrD,GAG/C,OAFI,IAAAhB,YAAWqE,KACXA,EAAMA,EAAIrD,IACH,MAAPqD,EACO,KACPzR,KAAKoQ,SACEpQ,KAAKqQ,MACPK,IAAIe,EAAK,CAAEC,MAAO1R,KAAKsQ,eAAgBqB,QAAS,CAAEC,OAAQ,eAC1D7G,MAAK,SAAU8G,GAChB,OAAOA,EAASlK,QAGjB3H,KAAKwQ,iBAAiBiB,IAUjCvB,EAAgBrO,UAAU0P,aAAe,SAAUxR,EAAUqO,EAAQyC,GACjE,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAS1BX,EAAgBrO,UAAU2P,sBAAwB,SAAUzR,EAAUqO,EAAQyC,GAC1E,IAAIiB,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAgB1BX,EAAgBrO,UAAUqQ,sBAAwB,SAAUzL,EAAQoK,EAAS9H,EAAWoJ,GACpFA,EAAWA,GAAY,GAEvB,IAAIC,EAASvS,EAAQ,GAAR,eAAyB,EAAI,KAAO,GAE7CwS,EAAQ,SAAUC,GAClB,IAAIC,GAAU,IAAAtJ,aAAYqJ,GAC1B,MAAO,aAAa7I,KAAK8I,GAAW,KAAOA,EAAUA,GA6BrDvP,EAQZ,SAA8BwC,GAC1B,IAAIgN,EAAU,EAAAzB,SAAA,cAAuBvL,EAAO,aAC5C,IAAKgN,IAAYA,EAAQpD,OACrB,MAAM,IAAIqD,MAAM,mCAAqCjN,EAAO,KAChE,OAAOgN,EAAQ7D,IAAI+D,GAAa9D,OAAO,EAAAC,QAAS,IAZhC8D,CAAqB5J,GAAW4F,KA3BzB,SAAUiE,GACzB,IAAIpN,EAAOoN,EAAMpN,KAAM0J,EAAO0D,EAAM1D,KAChC2D,EAAWR,EAAM7M,GAIrB,GAAIiB,EAAOqM,KAAKD,KAAcV,EAAS3M,GACnC,OAAOqN,EAAW,KAAOpM,EAAOqM,KAAKD,GAAY,IACrD,IAAIE,EAAcZ,EAAS3M,IAASA,EAGpC,GAAa,MAAT0J,EACA,OAAO2D,EAAW,OAAST,EAAS,YAAcW,EAAc,MAIpE,GAAa,MAAT7D,EAAc,CACd,IAAI8D,EAAMnC,EAAQ/C,cAAciF,GAC5BpS,EAAKqS,GAAOA,EAAIrL,KAChBhG,EAAQhB,GAAM,EAAAoQ,SAAA,mBAA4BpQ,IAAQ,GAGtD,OAAOkS,EAAW,cAAgBE,IADhB,IAAAf,SAAQrR,GAAM,KAAOA,EAAGyO,OAAS,GAAK,IAAM,IACA,IAAMzN,EAAKsR,KAAK,KAAO,KAGzF,OAAOJ,EAAW,KAAOT,EAAS,YAAcW,EAAc,OAEJE,KAAK,KAC/DjK,EAAYqJ,EAAMtJ,GACtB,MAAO,IAAMC,EAAY,IAAMhG,EAAQ,MAAQgG,EAAY,KAExDkH,EArKyB,GAiLhCwC,EAAc,SAAUQ,GACxB,OAAI,IAAAC,UAASD,EAAIE,kBACNC,EAAcH,EAAIE,kBACtBC,EAAcH,EAAIpQ,QAIzBuQ,EAAgB,SAAUC,GAC1B,OAAOC,OAAOC,KAAKF,GAAe,IAE7B3E,KAAI,SAAU9I,GAAO,MAAO,CAACA,EAAK,oBAAoB4D,KAAK6J,EAAYzN,QAEvEyD,QAAO,SAAUmK,GAAS,OAAO,IAAA7G,WAAU6G,KAAU,IAAAzB,SAAQyB,EAAM,OAEnE9E,KAAI,SAAU8E,GAAS,MAAO,CAAGjO,KAAMiO,EAAM,GAAG,IAAMA,EAAM,GAAIvE,KAAMuE,EAAM,GAAG,2ECzL7EC,EAAsB,SAAUC,GACvC,OAAO,SAA0BC,GAC7B,IAAIC,EAAOD,EAAYD,GACnBG,EAAwB,WAAbH,EAAwB,OAAS,KAOhD,OAAOE,EANP,SAA0BjE,EAAOnC,GAC7B,IACIsG,EADiB,IAAI,EAAA3L,eAAewH,EAAMlB,YAAYoF,IAC1BC,WAAWtG,EAAMuG,WAC7CtL,GAAS,IAAA5H,QAAOmT,EAAUF,GAAa,CAAEG,QAASzG,EAAOO,aAAc4B,IAC3E,OAAO,EAAAmB,SAAA,iBAA0B8C,EAAM7T,KAAM0I,SAEhByL,ICfrCC,EAAqC,WACrC,SAASA,EAAoBC,GAEzBrU,KAAKsU,cAAgB,GACrBtU,KAAKqU,kBAAoBA,EACzB,IAAIE,GAAM,IAAAvQ,KAAIqQ,IACd,IAAAG,sBAAqBD,EAAKvU,KAAMuU,EAAK,CAAC,eA8D1C,OAhDAH,EAAoBK,6BAA+B,SAAUC,GACzD,IAAIC,EAAWD,EAAOE,kBAAkB1F,KAAK,QAC7CyF,EAASE,OAAS,SAAUvF,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,WAAW,SAAUC,GAAK,MAAQ,CAAE,IAAK,KAAM,IAAK,OAAQA,MAAU1F,GAElHqF,EAASM,OAAS,SAAU3F,GACxB,OAAY,MAALA,EAAYA,EAAEwF,WAAWC,QAAQ,aAAa,SAAUC,GAAK,MAAQ,CAAE,KAAM,IAAK,MAAO,KAAMA,MAAU1F,IAIxH8E,EAAoBvS,UAAUqT,QAAU,aACxCd,EAAoBvS,UAAUsT,SAAW,SAAU3U,GAC/C,IAAI2P,EAAQnQ,KAEZ,OADAA,KAAKsU,cAAc7T,KAAKD,GACjB,WAAc,OAAO,IAAA4U,YAAWjF,EAAMmE,cAAjB,CAAgC9T,KAEhE4T,EAAoBvS,UAAUwT,UAAY,WACtC,IAAIA,EAAYrV,KAAKqU,kBAAkBgB,YAEvC,OADAA,GAAY,IAAAlC,UAASkC,GAAaA,EAAUC,QAAUD,IAClCrV,KAAKuV,SAASC,SAEtCpB,EAAoBvS,UAAU4T,SAAW,WACrC,OAAOzV,KAAK0V,YAAc1V,KAAK0V,UAAY1V,KAAK2V,SAASF,YAAczV,KAAK4V,QAAQC,SAAS/B,WAEjGM,EAAoBvS,UAAU4P,IAAM,SAAUqE,EAAQf,EAAStH,GAQ3D,YAPgB,IAAZsH,IAAsBA,GAAU,IAChC,IAAAnI,WAAUkJ,IACV9V,KAAK+V,UAAUtE,IAAIqE,GACnBf,GACA/U,KAAK+V,UAAUhB,UACftH,GACAzN,KAAK+V,UAAUtI,MAAMA,GAClBzN,KAAK+V,UAAUtE,OAE1B2C,EAAoBvS,UAAUmU,iBAAmB,SAAUC,EAAYF,EAAWR,EAAUI,EAAUC,GAClG,IAAIzF,EAAQnQ,KACZA,KAAK+V,UAAYA,EACjB/V,KAAKuV,SAAWA,EAChBvV,KAAK2V,SAAWA,EAChB3V,KAAK4V,QAAUA,EAEfK,EAAW1T,IAAI,0BAA0B,SAAU2T,GAAO,OAAO/F,EAAMmE,cAAcvT,SAAQ,SAAUJ,GAAM,OAAOA,EAAGuV,SACvH,IAAIC,GAAO,IAAAnS,KAAI+R,IAEf,IAAAvB,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,UAAW,OAAQ,SAAU,UAErE,IAAA3B,sBAAqB2B,EAAMnW,KAAMmW,EAAM,CAAC,OAAQ,WAAY,UAEzD/B,EApE6B,0ECaxCvU,EAAQ,GAAR,OAAe,qBAAsB,IACrC,IAAIuW,EAAWvW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,OAC7CwW,EAAWxW,EAAQ,GAAR,OAAe,iBAAkB,CAAC,mBAC7CyW,EAAUzW,EAAQ,GAAR,OAAe,mBAAoB,CAAC,mBAC9C0W,EAAY1W,EAAQ,GAAR,OAAe,kBAAmB,CAAC,mBAAoB,iBAAkB,uBACrF2W,EAAW3W,EAAQ,GAAR,OAAe,YAAa,CAAC,iBAAkB,kBAAmB,uBAE7E6U,GADW7U,EAAQ,GAAR,OAAe,mBAAoB,CAAC,cACtC,MAGb,SAAS4W,EAAkBpC,IAEvBK,EAAS1U,KAAK0U,OAAS,IAAI,EAAAgC,UACpBC,cAAgB,IAAI,IAAcjC,EAAOkC,cAAelC,EAAOmC,cAEtEnC,EAAOkC,cAAcE,UAAU,QAAS,MACxCpC,EAAOkC,cAAcE,UAAU,SAAUpD,EAAoB,WAC7DgB,EAAOkC,cAAcE,UAAU,WAAYpD,EAAoB,aAC/DgB,EAAOkC,cAAcE,UAAU,UAAWpD,EAAoB,YAC9DgB,EAAOqC,YAAY/M,WAAWgN,mBAAmB,OAAO,WAExDtC,EAAOuC,WAAW1L,OAAO2L,eAAgB,EACzC,IAAIC,EAAsBzC,EAAO0C,gBAAkB1C,EAAO2C,eAAiB,IAAIjD,EAAoBC,GAMnG,SAAS3T,EAAKqV,EAAWJ,EAAUC,EAASL,EAAUU,EAAY5F,EAAOC,GAIrE,OAHA6G,EAAmBnB,iBAAiBC,EAAYF,EAAWR,EAAUI,EAAUC,UACxElB,EAAe,cACfA,EAAa,KACbA,EAEX,OAXAN,EAAoBK,6BAA6BC,GAEjDA,EAAe,OAAIA,EACnBA,EAAa,KAAIhU,EACjBA,EAAKuM,QAAU,CAAC,YAAa,WAAY,UAAW,WAAY,aAAc,QAAS,kBAOhFyH,EA1BX+B,EAAkBxJ,QAAU,CAAC,qBA4B7B,IAAIqK,EAAiB,SAAUC,GAAe,MAAO,CACjD,oBACA,SAAUC,GACN,IAAIC,EAAUD,EAAK9C,OAAO6C,GAE1B,OADAE,EAAc,KAAI,WAAc,OAAOA,GAChCA,KAKf,SAASC,EAASnH,EAAWxJ,EAAI4Q,GAI7B,GAHA,EAAA5G,SAAA,UAAqBR,EACrB,EAAAQ,SAAA,GAAchK,GAETwM,OAAO1R,UAAUa,eAAeX,KAAKwO,EAAW,YACjD,IACIA,EAAUqH,QAAO,SAAUC,OAE/B,MAAOxS,GACHkL,EAAUuH,WAAa,cAAcrO,KAAKpE,GAASA,EAAMyP,YAKjE6C,EAAUf,cACLlG,MACA/B,KAAI,SAAUW,GAAK,OAAOA,EAAE0E,UAAU+D,eACtCnJ,OAAO,EAAAC,QAAS,IAChBvF,QAAO,SAAUgG,GAAK,MAAkB,aAAXA,EAAEwC,QAC/B/Q,SAAQ,SAAUiX,GAAc,OAAQA,EAAWlG,KAAOvB,EAAU0H,SAASD,EAAWE,UAAW3H,EAAUuH,aAQ/G,SAASK,EAAalC,GACzBA,EAAW1R,QAAO,WACd,EAAA8D,MAAA,wBA9BRqP,EAASzK,QAAU,CAAC,YAAa,KAAM,aA2BvCkL,EAAalL,QAAU,CAAC,cAMxBmJ,EAASrW,SAAS,YAAa0W,GAC/BH,EAAQvW,SAAS,aAAc,CAAC,oBAXL,SAAUqY,GAAY,OAAQA,EAASC,kBAAoB,IAAI,IAAkBD,MAY5G/B,EAAStW,SAAS,cAAeuX,EAAe,eAChDjB,EAAStW,SAAS,qBAAsB,CAAC,oBAAqB,WAAc,OAAO2U,EAAOE,qBAC1FyB,EAAStW,SAAS,oBAAoB,WAAc,OAAO,IAAImQ,KAC/DqG,EAAUxW,SAAS,iBAAkBuX,EAAe,kBACpDf,EAAUxW,SAAS,mBAAoBuX,EAAe,YACtDf,EAAUxW,SAAS,eAAgBuX,EAAe,sBAClDf,EAAUxW,SAAS,SAAU,CAAC,oBAfP,WAAc,OAAO,IAAAe,QAAO4T,EAAOiC,cAAe,CAAEjW,KAAM,WAAc,OAAOgU,EAAOmC,mBAgB7GN,EAAUrW,QAAQ,eAAgB,CAAC,YAAa,SAAUyX,GAAa,OAAOA,EAAUW,QAAQlK,UAChGoI,EAAStW,QAAQ,SAAS,WAAc,OAAOwU,EAAOqC,eACtDP,EAASiB,QAAQ,UAAU,WAAc,OAAO,EAAApP,SAChDmO,EAAS+B,IAAIJ,GACb9B,EAASkC,IAAI,CAAC,qBAAsB,SAAUC,OAC9CjC,EAAUgC,IAAI,CAAC,SAAU,SAAUE,OACnCnC,EAAQiC,IAAI,CAAC,aAAc,SAAUG,OACrCtC,EAASmC,IAAIb,GAEN,IAAIzD,EAAY,SAAU0E,GAO7B,OANaA,EAAIC,YAAYtP,OAAO,EAAAR,UAChB6F,KAAI,SAAU9I,GAC9B,IAAImS,EAAaW,EAAI7K,cAAcjI,GAEnC,MAAO,CAACA,EAAoB,WADX8S,EAAIE,UAAUb,GAAYc,MACJd,EAAWvU,QAAUuU,EAAWrQ,SAE7DiH,OAAO,EAAAmK,WAAY,2JC9GrC,SAASC,EAAeP,GACpB,IAAIQ,EAAW,SAAUxL,EAAOW,EAAQjO,GACpC,OAAOsY,EAAOS,GAAGzL,EAAOW,EAAQjO,IAGpC,OADA8Y,EAASE,WAAY,EACdF,EAaX,SAASG,EAAuBX,GAC5B,IAAIY,EAAiB,SAAU5L,EAAOW,EAAQjO,GAC1C,OAAOsY,EAAOa,SAAS7L,EAAOW,EAAQjO,IAG1C,OADAkZ,EAAeF,WAAY,EACpBE,EAxBXL,EAAe/L,QAAU,CAAC,UAkB1BmM,EAAuBnM,QAAU,CAAC,UAQlC,YAAe,mBAAmB3D,OAAO,UAAW0P,GAAgB1P,OAAO,kBAAmB8P,oKCpB1FG,EAA+B,WAC/B,SAASA,EAAc3C,EAAeC,GAClC7W,KAAK4W,cAAgBA,EACrB5W,KAAK6W,aAAeA,GACpB,IAAArC,uBAAqB,IAAAxQ,KAAIuV,EAAc1X,WAAY7B,MAAM,IAAAgE,KAAIhE,OAgHjE,OArBAuZ,EAAc1X,UAAUiV,UAAY,SAAUtR,EAAMgU,GAChD,OAAOxZ,KAAK4W,cAAcE,UAAUtR,EAAMgU,IAASxZ,MAEvDuZ,EAAc1X,UAAU4L,MAAQ,SAAUjI,EAAMiU,GAQ5C,OAPI,IAAAtG,UAAS3N,GACTiU,EAAajU,EAGbiU,EAAWjU,KAAOA,EAEtBxF,KAAK4W,cAAc8C,SAASD,GACrBzZ,MAOXuZ,EAAc1X,UAAU8X,UAAY,SAAUnZ,GAC1C,OAAOR,KAAK6W,aAAa8C,UAAUnZ,IAEhC+Y,EApHuB,6LCf3B,SAASK,IACZ,IAAIC,EAAkB,KACtB,OAAO,SAAU1R,EAAM2R,GAEnB,OADAD,EAAkBA,GAAmB,EAAA9I,SAAA,cAAuB,oBACrD,CAAC,IAAIgJ,EAAc5R,EAAM2R,EAAMD,KAI9C,IAAIG,EAAY,SAAUxG,EAAMyG,GAAO,OAAOzG,EAAK5E,QAAO,SAAUsL,EAAKrU,GAAO,OAAOqU,IAAO,IAAAtN,WAAUqN,EAAIpU,OAAU,IAY/G,SAASsU,EAAgB1M,GAE5B,IAAKA,EAAM2M,OACP,MAAO,GACX,IAAgKC,EAAW,CAAC,YAAa,WAAY,qBAAsBC,EAA7M,CAAC,mBAAoB,cAAe,WAAY,SAAU,SAAyKlY,OAApJ,CAAC,aAAc,qBAAsB,eAAgB,cAAiHmY,EAAcF,EAASjY,OAAOkY,GAIjS,IAAI,IAAA1N,WAAUa,EAAM+M,QAAUR,EAAUO,EAAa9M,GACjD,MAAM,IAAIgF,MAAM,UAAYhF,EAAMjI,KAAlB,4JAGL+U,EAAYjR,QAAO,SAAUzD,GAAO,OAAO,IAAA+G,WAAUa,EAAM5H,OAAUoN,KAAK,OAEzF,IAAIuH,EAAQ,GAAIC,EAAchN,EAAM+M,OAAS,CAAEE,UAAU,IAAAC,MAAKlN,EAAO8M,IAsBrE,OArBA,IAAAxZ,SAAQ0Z,GAAa,SAAUlP,EAAQ/F,GASnC,GAPAA,EAAOA,GAAQ,YAEX,IAAAsD,UAASyC,KACTA,EAAS,CAAExC,UAAWwC,IAE1BA,GAAS,IAAAzK,QAAO,GAAIyK,GAEhByO,EAAUK,EAAU9O,IAAWyO,EAAUM,EAAa/O,GACtD,MAAM,IAAIkH,MAAM,mBAAqB4H,EAASpH,KAAK,KAAO,UAAYqH,EAAYrH,KAAK,KAAO,mBAAqBzN,EAAO,IAAMiI,EAAMjI,KAAO,KAEjJ+F,EAAO9C,UAAY8C,EAAO9C,WAAa,WACvC8C,EAAOH,MAAQ,MACfG,EAAOxB,SAAW0D,EAClBlC,EAAOqP,MAAQpV,EACf,IAAIqV,EAAa,EAAAC,YAAA,sBAAkCvP,EAAOxB,SAAUwB,EAAOqP,OAC3ErP,EAAOwP,YAAcF,EAAWG,WAChCzP,EAAO0P,qBAAuBJ,EAAWK,oBACzCV,EAAMhV,GAAQ+F,KAEXiP,EAGX,IAAInP,EAAK,EAEL0O,EAA+B,WAC/B,SAASA,EAAc5R,EAAMJ,EAAU7H,GACnC,IAAIiQ,EAAQnQ,KACZA,KAAKmI,KAAOA,EACZnI,KAAK+H,SAAWA,EAChB/H,KAAKE,QAAUA,EACfF,KAAKmb,IAAM9P,IACXrL,KAAKob,QAAS,EACdpb,KAAKgI,YAAc,SAAUvB,EAAQoK,GACjC,OAAOV,EAAMpH,UACPoH,EAAMjQ,QAAQgS,sBAAsBzL,EAAQoK,EAASV,EAAMpH,UAAWoH,EAAMpI,SAASoK,UACrFhC,EAAMc,UAiCpB,OA9BA8I,EAAclY,UAAUwZ,KAAO,WAC3B,IAAIlL,EAAQnQ,KACR+G,EAAK,EAAAgK,SAAA,GACLF,EAAU,IAAI,EAAAzI,eAAepI,KAAKmI,MAClCiG,EAASpO,KAAKmI,KAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,IAAAzN,QAAOoZ,EAAK3L,EAAK+M,eAAiB,IAC1FC,EAAW,CACXtK,SAAUlK,EAAGkJ,KAAKjQ,KAAKE,QAAQ0Q,WAAW5Q,KAAK+H,SAAUqG,EAAQyC,IACjE7P,WAAY+F,EAAGkJ,KAAKjQ,KAAKwb,cAAc3K,KAE3C,OAAO9J,EAAG0U,IAAIF,GAAUxQ,MAAK,SAAU2Q,GAInC,OAHA,EAAArT,MAAA,sBAA4B,SAAU8H,GACtCA,EAAMnP,WAAa0a,EAAQ1a,YAC3B,IAAAF,QAAOqP,EAAOuL,EAAQzK,UACfd,MAQf4J,EAAclY,UAAU2Z,cAAgB,SAAU3K,GAC9C,IAAI9Q,EAAWC,KAAK+H,SAAS4T,mBAC7B,KAAK,IAAAC,cAAa7b,GACd,OAAOC,KAAK+H,SAAS/G,WACzB,IAAI8Q,EAAO,EAAAf,SAAA,mBAA4BhR,GACnCgS,GAAa,IAAAC,SAAQjS,IAAY,IAAAyN,MAAKzN,GAAYA,EAEtD,OADiB,IAAI,EAAAkS,WAAW,GAAIF,EAAYD,GAC9BpB,IAAIG,IAEnBkJ,EA5CuB,wKC9C9B8B,EAAmC,WAEnC,SAASA,EAAiCnH,GACtC1U,KAAK0U,OAASA,EA2KlB,OAzKAmH,EAAkBC,kBAAoB,SAAUpH,EAAQqH,GACpD,OAAO,SAAUC,GAAS,OAAO,EAAAjL,SAAA,iBAA0BgL,EAAS,KAAM,CAAEE,OAAQD,EAAOE,aAAcxH,EAAO4D,QAAQlK,WAG5HyN,EAAkBha,UAAUnB,KAAO,WAC/B,IAAIuW,EAAajX,KAAK0U,OAAOuC,WAI7B,OAHAjX,KAAK0U,OAAOyH,UAAUC,QAAO,GACxBnF,EAAWoF,mBACZpF,EAAWqF,SACRtc,KAAK0U,OAAOyH,WAiCvBN,EAAkBha,UAAU0a,KAAO,SAAUC,GACzC,IAAIrM,EAAQnQ,KACZ,KAAK,IAAAoN,YAAWoP,GACZ,MAAM,IAAI/J,MAAM,6BACpB,IACI8J,EAAO,IAAI,EAAAE,aADH,WAAc,OAAOD,EAAO,EAAAzL,SAAA,UAAoBZ,EAAMuE,OAAO0C,mBACvC,EAAAsF,UAElC,OADA1c,KAAK0U,OAAOuC,WAAW0F,MAAMJ,KAAKA,GAC3Bvc,MA4BX6b,EAAkBha,UAAU+a,UAAY,SAAUL,GAC9C,IAAIpM,EAAQnQ,KACR6c,EAAW7c,KAAK0U,OAAOuC,WAAW0F,MACtC,IAAI,IAAA7T,UAASyT,GACTM,EAASD,UAAUL,OAElB,MAAI,IAAAnP,YAAWmP,GAIhB,MAAM,IAAI9J,MAAM,uCAHhBoK,EAASD,WAAU,WAAc,OAAOL,EAAK,EAAAxL,SAAA,UAAoBZ,EAAMuE,OAAO0C,oBAKlF,OAAOpX,MAwCX6b,EAAkBha,UAAUoO,KAAO,SAAU6M,EAAMf,GAK/C,QAJI,IAAA/J,SAAQ+J,KAAY,IAAA3O,YAAW2O,MAC/BA,EAAUF,EAAkBC,kBAAkB9b,KAAK0U,OAAQqH,IAE/D/b,KAAK0U,OAAOuC,WAAW0F,MAAM1M,KAAK6M,EAAMf,GACjC/b,MAgCX6b,EAAkBha,UAAUkb,eAAiB,SAAU9Q,GACnDjM,KAAK0U,OAAOuC,WAAW8F,eAAe9Q,IAEnC4P,EA9K2B,iJCKtC,UAAe,mBAAmB9b,SAAS,iBApB3C,WACI,IAAIid,GAAkB,EACtBhd,KAAKgd,gBAAkB,WACnBA,GAAkB,GAEtBhd,KAAKU,KAAO,CACR,gBACA,WACA,SAAUuc,EAAezZ,GACrB,OAAIwZ,EACOC,EAEJ,SAAUvV,GACb,OAAOlE,GAAS,WACZkE,EAAS,GAAGwV,mBACb,GAAG,8nBClBlBC,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GAaAK,EAAwB,iBAATlQ,MAAqBA,KAAKA,OAASA,MAAQA,MAC9C,iBAAX,EAAAmQ,GAAuB,EAAAA,EAAOC,SAAW,EAAAD,GAAU,EAAAA,QAC3D,EACAhe,EAAU+d,EAAK/d,SAAW,GACnBke,EAAWle,EAAQke,UAAYC,KAAK/W,MAAM3D,KAAK0a,MAC/CC,EAASpe,EAAQoe,QAAUD,KAAKE,UAAU5a,KAAK0a,MAC/Cjd,EAAUlB,EAAQkB,SAqc7B,SAAkBkZ,EAAKnP,EAAIqF,GACvB,IAAI,QAAQ8J,GACR,OAAOA,EAAIlZ,QAAQ+J,EAAIqF,GAC3BoD,OAAOC,KAAKyG,GAAKlZ,SAAQ,SAAU8E,GAAO,OAAOiF,EAAGmP,EAAIpU,GAAMA,OAvcvD/E,EAASyS,OAAO3Q,QAycpB,SAAiBub,GACpB,IAAK,IAAId,EAAI,EAAGA,EAAIrb,UAAUoN,OAAQiO,IAAK,CACvC,IAAIpD,EAAMjY,UAAUqb,GACpB,GAAKpD,EAGL,IADA,IAAIzG,EAAOD,OAAOC,KAAKyG,GACdyD,EAAI,EAAGA,EAAIlK,EAAKpE,OAAQsO,IAC7BS,EAAM3K,EAAKkK,IAAMzD,EAAIzG,EAAKkK,IAGlC,OAAOS,GAldAhP,EAAStP,EAAQsP,QAod5B,SAASiP,EAAQC,EAAIC,GACjB,GAAID,IAAOC,EACP,OAAO,EACX,GAAW,OAAPD,GAAsB,OAAPC,EACf,OAAO,EACX,GAAID,GAAOA,GAAMC,GAAOA,EACpB,OAAO,EACX,IAAIC,SAAYF,EAChB,GAAIE,WAD4BD,GACR,WAAPC,EACb,OAAO,EACX,IAyBeC,EAAIC,EAzBfC,EAAM,CAACL,EAAIC,GACf,IAAI,QAAI,KAAJ,CAAaI,GACb,OAuBeD,EAvBMH,GAuBVE,EAvBMH,GAwBdjP,SAAWqP,EAAGrP,QAEduP,EAAYH,EAAIC,GAAI7P,QAAO,SAAUgQ,EAAGC,GAAK,OAAOD,GAAKR,EAAQS,EAAE,GAAIA,EAAE,OAAQ,GAzBxF,IAAI,QAAI,KAAJ,CAAYH,GACZ,OAAOL,EAAGS,YAAcR,EAAGQ,UAC/B,IAAI,QAAI,KAAJ,CAAcJ,GACd,OAAOL,EAAGvJ,aAAewJ,EAAGxJ,WAChC,IAAI,QAAI,KAAJ,CAAgB4J,GAChB,OAAO,EAEX,GADiB,CAAC,KAAY,KAAS,KAAQ,MAChC/P,IAAI,MAAKC,QAAO,SAAUgQ,EAAGje,GAAM,OAAOie,KAAOje,EAAG+d,MAAS,GACxE,OAAO,EACX,IAAIlL,EAAO,GAEX,IAAK,IAAI3N,KAAOwY,EAAI,CAChB,IAAKD,EAAQC,EAAGxY,GAAMyY,EAAGzY,IACrB,OAAO,EACX2N,EAAK3N,IAAO,EAEhB,IAAK,IAAIA,KAAOyY,EACZ,IAAK9K,EAAK3N,GACN,OAAO,EAEf,OAAO,GApfJ,SAAS6W,EAASpN,GACrB,OAAOA,EAEJ,SAASrH,KAyDT,SAASuM,EAAqBuK,EAAQ1Y,EAAQ/C,EAAM0b,EAASC,QAC/C,IAAbA,IAAuBA,GAAW,GACtC,IAAIC,EAAe,SAAUC,GAAU,OAAOJ,IAASI,GAAQ7b,KAAKA,MAQpE,OADA0b,EAAUA,GAAWzL,OAAOC,KAAKuL,MAClBnQ,QAAO,SAAUsL,EAAK1U,GAPd,IAAU2Z,EAS7B,OADAjF,EAAI1U,GAAQyZ,GARiBE,EAQW3Z,EAPjC,WAEH,OADAa,EAAO8Y,GAAUD,EAAaC,GACvB9Y,EAAO8Y,GAAQhd,MAAM,KAAMH,aAKUkd,EAAa1Z,GACtD0U,IACR7T,GAMA,IAAI+Y,EAAU,SAAUhF,EAAQiF,GAAS,OAAOve,EAAOyS,OAAO/R,OAAO4Y,GAASiF,IAE1EC,GAAU,SACd,SAAkBC,EAAOtF,GAC5B,OAA+B,IAAxBsF,EAAMrR,QAAQ+L,MAMd7E,GAAa,SACjB,SAAqBmK,EAAOtF,GAC/B,IAAIhL,EAAMsQ,EAAMrR,QAAQ+L,GAGxB,OAFIhL,GAAO,GACPsQ,EAAMC,OAAOvQ,EAAK,GACfsQ,KAGAE,GAAS,SACb,SAAiBC,EAAK1b,GACzB,OAAO0b,EAAIjf,KAAKuD,GAAMA,KAGf2b,EAAW,SAAUC,GAC5B,OAAOA,EAAU9d,QAAQf,SAAQ,SAAUJ,GACzB,mBAAPA,GAAqBA,IAC5ByU,EAAWwK,EAAWjf,OAQvB,SAASV,EAASW,GAErB,IADA,IAAIif,EAAe,GACVC,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCD,EAAaC,EAAK,GAAK9d,UAAU8d,GAErC,IAAIC,EAAcjf,EAAOqB,WAAM,EAAQgb,EAAe,CAAC,IAAK0C,EAAaG,YACzE,OAAOlf,EAAOif,EAAapF,EAAK/Z,GAAQ,GAAI2S,OAAOC,KAAKuM,KAGrD,IAAIE,EAAS,SAAUC,EAAMC,GAAQ,OAAOrf,EAAOof,EAAMC,IAQzD,SAASC,EAAUC,EAAOC,GAC7B,IAAInY,EAAO,GAEX,IAAK,IAAIoY,KAAKF,EAAMlY,KAAM,CACtB,GAAIkY,EAAMlY,KAAKoY,KAAOD,EAAOnY,KAAKoY,GAC9B,MACJpY,EAAK1H,KAAK4f,EAAMlY,KAAKoY,IAEzB,OAAOpY,EAaJ,SAASwS,EAAKV,EAAKuG,GACtB,IAAIC,EAAU,GACd,IAAK,IAAIC,KAASzG,GACoB,IAA9BuG,EAAUtS,QAAQwS,KAClBD,EAAQC,GAASzG,EAAIyG,IAG7B,OAAOD,EAcJ,SAASE,EAAK1G,EAAKuG,GACtB,OAAOjN,OAAOC,KAAKyG,GACd3Q,QAAO,QAAIgW,EAAQkB,KACnB5R,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,GAAOoU,EAAIpU,GAAOqU,IAAS,IASvE,SAAS5Q,EAAOsX,EAAYpgB,GAC/B,IAAIkf,GAAM,QAAQkB,GAAata,EAASoZ,EAAM,GAAK,GAC/CmB,EAASnB,EAAM,SAAUpQ,GAAK,OAAOhJ,EAAO7F,KAAK6O,IAAQ,SAAUA,EAAGzJ,GAAO,OAAQS,EAAOT,GAAOyJ,GAKvG,OAJAvO,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B7c,EAAS2f,EAAM9C,IACfwD,EAAOV,EAAM9C,MAEd/W,EAGJ,SAASwa,EAAKF,EAAYpgB,GAC7B,IAAI8F,EAOJ,OANAvF,EAAQ6f,GAAY,SAAUT,EAAM9C,GAC5B/W,GAEA9F,EAAS2f,EAAM9C,KACf/W,EAAS6Z,MAEV7Z,EAGJ,IAAIya,EAASpS,EAEb,SAASA,EAAIiS,EAAYpgB,EAAU6F,GAGtC,OAFAA,EAASA,KAAW,QAAQua,GAAc,GAAK,IAC/C7f,EAAQ6f,GAAY,SAAUT,EAAM9C,GAAK,OAAQhX,EAAOgX,GAAK7c,EAAS2f,EAAM9C,MACrEhX,EAYJ,IAAI2a,EAAS,SAAU/G,GAAO,OAAO1G,OAAOC,KAAKyG,GAAKtL,KAAI,SAAU9I,GAAO,OAAOoU,EAAIpU,OAclFob,EAAW,SAAUf,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAclDC,EAAW,SAAUjB,EAAMgB,GAAQ,OAAOhB,GAAQgB,GAUlDrS,EAAU,SAAUqR,EAAMgB,GAAQ,OAAOhB,EAAK9d,OAAO8e,IAWrDE,EAAW,SAAUlB,EAAMgB,GAClC,OAAO,QAAQA,GAAQhB,EAAK9d,OAAO8e,EAAKtS,OAAOwS,EAAU,KAAOC,EAAMnB,EAAMgB,IAMzE,SAASG,EAAM3B,EAAKzF,GAEvB,OADAyF,EAAIjf,KAAKwZ,GACFyF,EAGJ,IAAI4B,EAAQ,SAAUpH,EAAKqH,GAAS,OAAQjC,EAAQpF,EAAKqH,GAASrH,EAAMmH,EAAMnH,EAAKqH,IAW/EC,EAAS,SAAU9B,GAAO,OAAOA,EAAI9Q,OAAOC,EAAS,KAyBrD4S,EAkBJ,SAAkBC,EAAgBC,GAErC,YADe,IAAXA,IAAqBA,EAAS,kBAC3B,SAAU1H,GACb,IAAI3T,EAASob,EAAezH,GAC5B,IAAK3T,EACD,MAAM,IAAImM,OAAM,QAAWkP,GAAUA,EAAO1H,GAAO0H,GAEvD,OAAOrb,IA2BR,SAASqY,IAEZ,IADA,IAAIhd,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,GAAoB,IAAhBne,EAAKyN,OACL,MAAO,GAwBX,IAvBA,IAAIwS,EAAcjgB,EAAKiN,QAAO,SAAUiT,EAAKnC,GAAO,OAAOoC,KAAKD,IAAInC,EAAItQ,OAAQyS,KAAS,kBACrFvb,EAAS,GACTyb,EAAU,SAAU1E,GAGpB,OAAQ1b,EAAKyN,QACT,KAAK,EACD9I,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,KACrB,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACjC,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KAC7C,MACJ,KAAK,EACD/W,EAAO7F,KAAK,CAACkB,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,GAAI1b,EAAK,GAAG0b,KACzD,MACJ,QACI/W,EAAO7F,KAAKkB,EAAKgN,KAAI,SAAU4Q,GAAS,OAAOA,EAAMlC,SAIxDA,EAAI,EAAGA,EAAIuE,EAAavE,IAC7B0E,EAAQ1E,GAEZ,OAAO/W,EAsBJ,SAASyS,EAAWmH,EAAM8B,GAC7B,IAAInc,EAAKrB,EAGT,IAFI,QAAQwd,KACRnc,EAAMmc,EAAY,GAAIxd,EAAQwd,EAAY,MACzC,QAASnc,GACV,MAAM,IAAI4M,MAAM,oCAEpB,OADAyN,EAAKra,GAAOrB,EACL0b,EAGJ,SAAS1S,EAAKkS,GACjB,OAAQA,EAAItQ,QAAUsQ,EAAIA,EAAItQ,OAAS,SAAO+E,EAK3C,SAAS8N,EAAKC,EAAKC,GAKtB,OAJIA,GACA5O,OAAOC,KAAK2O,GAAMphB,SAAQ,SAAU8E,GAAO,cAAcsc,EAAKtc,MAC7Dsc,IACDA,EAAO,IACJrhB,EAAOqhB,EAAMD,GA6DjB,IAAIE,EAA2B,SAAU3e,GAAW,OAAOA,EAAQ4e,OAAM,SAAUC,GAAK,OAAO,MAAS7e,GACpG8e,EAAkB,SAAUld,GAAS,OAAO+c,EAAyB,cAAmB/c,qHCxhBnG,IAGWmd,EAAW,SAAU/K,EAASgL,GACrC,OAAOA,EAAQ7T,QAAO,SAAUsL,EAAKrU,GAAO,OAASqU,EAAIrU,IAJtC6c,EAIoDjL,EAAU,IAAM5R,EAAM,KAJzD,WACpC,MAAM,IAAI4M,MAAM,yBAA2BiQ,EAAS,kEAGiDxI,EAJ5F,IAAUwI,IAI2F,KAE9G3R,EAAW,CACXhK,QAAIoN,EACJ5D,eAAW4D,mGCyCf,IAAIwO,EAAsB,WACtB,SAASA,EAAKC,GACV5iB,KAAK4iB,KAAOA,EACZ5iB,KAAK6iB,KAAOD,EAAKE,MAAM,KACvB,IAAIC,EAAe/iB,KAAK4iB,KACnBE,MAAM,KACNnU,KAAI,SAAUqU,GACf,MAAY,OAARA,EACO,qBACC,MAARA,EACO,WACJ,MAAQA,KAEd/P,KAAK,IACVjT,KAAKijB,OAAS,IAAI9Z,OAAO,IAAM4Z,EAAe,KAalD,OAVAJ,EAAKzJ,GAAK,SAAU0J,GAChB,QAAS,SAASnZ,KAAKmZ,IAG3BD,EAAKxR,WAAa,SAAUyR,GACxB,OAAOD,EAAKzJ,GAAG0J,GAAQ,IAAID,EAAKC,GAAQ,MAE5CD,EAAK9gB,UAAUqhB,QAAU,SAAU1d,GAC/B,OAAOxF,KAAKijB,OAAOE,KAAK,IAAM3d,IAE3Bmd,EA3Bc,+MC1CzB,IAAIxF,EAAkD,WAClD,IAAK,IAAIC,EAAI,EAAGC,EAAI,EAAGC,EAAKtb,UAAUoN,OAAQiO,EAAIC,EAAID,IAAKD,GAAKpb,UAAUqb,GAAGjO,OACxE,IAAImO,EAAI3b,MAAMwb,GAAII,EAAI,EAA3B,IAA8BH,EAAI,EAAGA,EAAIC,EAAID,IACzC,IAAK,IAAII,EAAIzb,UAAUqb,GAAIK,EAAI,EAAGC,EAAKF,EAAErO,OAAQsO,EAAIC,EAAID,IAAKF,IAC1DD,EAAEC,GAAKC,EAAEC,GACjB,OAAOH,GA2CJ,SAAS6F,EAAMziB,GAClB,OAAO,SAAS0iB,IACZ,GAAIrhB,UAAUoN,QAAUzO,EAAGyO,OACvB,OAAOzO,EAAGwB,MAAMnC,KAAMgC,WAE1B,IAAIL,EAAOC,MAAMC,UAAUC,MAAMC,KAAKC,WACtC,OAAOqhB,EAAQ/f,KAAKnB,MAAMkhB,EAASlG,EAAe,CAACnd,MAAO2B,KAS3D,SAAS2hB,IACZ,IAAI3hB,EAAOK,UACPuhB,EAAQ5hB,EAAKyN,OAAS,EAC1B,OAAO,WAEH,IADA,IAAIiO,EAAIkG,EAAOjd,EAAS3E,EAAK4hB,GAAOphB,MAAMnC,KAAMgC,WACzCqb,KACH/W,EAAS3E,EAAK0b,GAAGtb,KAAK/B,KAAMsG,GAChC,OAAOA,GASR,SAASkd,IAEZ,IADA,IAAIC,EAAQ,GACH3D,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpC2D,EAAM3D,GAAM9d,UAAU8d,GAE1B,OAAOwD,EAAQnhB,MAAM,KAAM,GAAGL,MAAMC,KAAKC,WAAWge,WAQjD,IAAI0D,EAAO,SAAUle,GAAQ,OAAO,SAAUyU,GAAO,OAAOA,GAAOA,EAAIzU,KAQnEme,EAASP,GAAM,SAAU5d,EAAMoe,EAAM3J,GAAO,OAAOA,GAAOA,EAAIzU,KAAUoe,KASxE3c,EAAQ,SAAUzB,GAAQ,OAAOge,EAAKrhB,MAAM,KAAMqD,EAAKsd,MAAM,KAAKnU,IAAI+U,KAKtEG,EAAM,SAAUljB,GAAM,OAAO,WAEpC,IADA,IAAIgB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAQnf,EAAGwB,MAAM,KAAMR,KAMpB,SAASmiB,EAAIC,EAAKC,GACrB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IAOjD,SAASsiB,EAAGF,EAAKC,GACpB,OAAO,WAEH,IADA,IAAIriB,EAAO,GACFme,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCne,EAAKme,GAAM9d,UAAU8d,GAEzB,OAAOiE,EAAI5hB,MAAM,KAAMR,IAASqiB,EAAI7hB,MAAM,KAAMR,IASjD,IAAI8Z,EAAM,SAAUsI,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4U,EAAM,SAAUH,GAAO,OAAO,SAAUrE,GAAO,OAAOA,EAAI9Q,QAAO,SAAUgQ,EAAGtP,GAAK,OAAOsP,KAAOmF,EAAIzU,MAAO,KAE5G4J,EAAK,SAAUiL,GAAQ,OAAO,SAAUlK,GAC/C,OAAe,MAAPA,GAAeA,EAAImK,cAAgBD,GAASlK,aAAekK,IAK5DngB,EAAM,SAAUqgB,GAAK,OAAO,WAAc,OAAOA,IA4CrD,SAASC,EAAQC,GACpB,OAAO,SAAUjV,GACb,IAAK,IAAI+N,EAAI,EAAGA,EAAIkH,EAAOnV,OAAQiO,IAC/B,GAAIkH,EAAOlH,GAAG,GAAG/N,GACb,OAAOiV,EAAOlH,GAAG,GAAG/N,uRCjNhCkV,EAAQjR,OAAO1R,UAAUiT,SACzB2P,EAAM,SAAU5F,GAAK,OAAO,SAAUvP,GAAK,cAAcA,IAAMuP,IACxD6F,EAAcD,EAAI,aAClB7X,GAAY,QAAI8X,GAChBC,EAAS,SAAUC,GAAK,OAAa,OAANA,GAC/BC,GAAoB,IAAAZ,IAAGU,EAAQD,GAC/BtX,EAAaqX,EAAI,YACjBK,EAAWL,EAAI,UACf3b,EAAW2b,EAAI,UACftR,EAAW,SAAU7D,GAAK,OAAa,OAANA,GAA2B,iBAANA,GACtD0C,EAAUpQ,MAAMoQ,QAChB+S,EAAS,SAAWzV,GAAK,MAAyB,kBAAlBkV,EAAMziB,KAAKuN,IAC3C0V,EAAW,SAAW1V,GAAK,MAAyB,oBAAlBkV,EAAMziB,KAAKuN,IAOjD,SAASsM,EAAa5X,GACzB,GAAIgO,EAAQhO,IAAQA,EAAIoL,OAAQ,CAC5B,IAAI6V,EAAOjhB,EAAIlC,MAAM,GAAI,GAAI0L,EAAOxJ,EAAIlC,OAAO,GAC/C,QAASmjB,EAAK3b,QAAO,QAAIR,IAAWsG,QAAU5B,EAAKlE,QAAO,QAAI8D,IAAagC,QAE/E,OAAOhC,EAAWpJ,GAOf,IAAIkhB,GAAY,QAAI/R,GAAU,SAAK,QAAK,QAAS/F,uKCvCpD+X,EAAuB,WACvB,SAASA,EAAMC,EAAQC,QACJ,IAAXD,IAAqBA,EAAS,SACnB,IAAXC,IAAqBA,EAAS,MAClCrlB,KAAKolB,OAASA,EACdplB,KAAKqlB,OAASA,EACdrlB,KAAKslB,gBAAkB,GACvBtlB,KAAKulB,SAAU,QAAOvlB,KAAKslB,iBAqC/B,OAnCAH,EAAMtjB,UAAU2jB,QAAU,SAAUrF,GAChC,IAAIsF,EAAQzlB,KAAKolB,OAIjB,OAHAK,EAAMhlB,KAAK0f,GACPngB,KAAKqlB,QAAUI,EAAMrW,OAASpP,KAAKqlB,QACnCrlB,KAAK0lB,QACFvF,GAEXgF,EAAMtjB,UAAU6jB,MAAQ,WACpB,IAAIvF,EAAOngB,KAAKolB,OAAOnjB,QAEvB,OADAjC,KAAKslB,gBAAgBvkB,SAAQ,SAAUJ,GAAM,OAAOA,EAAGwf,MAChDA,GAEXgF,EAAMtjB,UAAU8jB,QAAU,WACtB,GAAI3lB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO5F,OAAO,EAAG,GAAG,IAExC2F,EAAMtjB,UAAUgkB,MAAQ,WACpB,IAAIC,EAAU9lB,KAAKolB,OAEnB,OADAplB,KAAKolB,OAAS,GACPU,GAEXX,EAAMtjB,UAAU+jB,KAAO,WACnB,OAAO5lB,KAAKolB,OAAOhW,QAEvB+V,EAAMtjB,UAAUgL,OAAS,SAAUsT,GAC/B,IAAIlR,EAAMjP,KAAKolB,OAAOlX,QAAQiS,GAC9B,OAAOlR,GAAO,GAAKjP,KAAKolB,OAAO5F,OAAOvQ,EAAK,GAAG,IAElDkW,EAAMtjB,UAAUkkB,SAAW,WACvB,OAAO/lB,KAAKolB,OAAOplB,KAAKolB,OAAOhW,OAAS,IAE5C+V,EAAMtjB,UAAUmkB,SAAW,WACvB,GAAIhmB,KAAK4lB,OACL,OAAO5lB,KAAKolB,OAAO,IAEpBD,EA5Ce,4KCKtBc,EAAkB,CAAEC,IAAK,KAAM7gB,MAAO,KAAM8gB,MAAO,MA4B5CC,EAXyB,oBAAbC,UAA4BA,SAASC,cAA0C,IAA1BD,SAASC,aAEtEC,QAAUA,OAAOC,QAlBhC,SAAoBA,GAChB,IAAIC,EAAQ,SAAU9lB,GAAM,OAAO+lB,SAAS7kB,UAAUyB,KAAKvB,KAAKpB,EAAI6lB,IACpE,MAAO,CACHN,IAAKO,EAAMD,EAAQN,KACnB7gB,MAAOohB,EAAMD,EAAQN,KACrBC,MAAOM,EAAMD,EAAQN,MAaaS,CAAWJ,OAAOC,SAAWP,EAEzDO,QAAQL,OAAUK,QAAQnhB,MAIzBmhB,QAhBf,SAAyBA,GACrB,IAAIN,EAAMM,EAAQN,IAAI5iB,KAAKkjB,GAG3B,MAAO,CAAEN,IAAKA,EAAK7gB,MAFPmhB,EAAQnhB,MAAQmhB,EAAQnhB,MAAM/B,KAAKkjB,GAAWN,EAEzBC,MADrBK,EAAQL,MAAQK,EAAQL,MAAM7iB,KAAKkjB,GAAWN,GAU/CU,CAAgBJ,ieCRxB,SAASK,EAAUC,EAAK9V,GAC3B,OAAIA,EAAI5B,QAAU0X,EACP9V,EACJA,EAAI+V,OAAO,EAAGD,EAAM,GAAK,MAW7B,SAASE,EAAU5X,EAAQ4B,GAC9B,KAAOA,EAAI5B,OAASA,GAChB4B,GAAO,IACX,OAAOA,EAEJ,SAAS/H,EAAYqJ,GACxB,OAAOA,EACFyC,QAAQ,YAAY,SAAUkS,GAAM,OAAOA,EAAGC,iBAC9CnS,QAAQ,YAAY,SAAUkS,GAAM,MAAO,IAAMA,EAAGC,iBAEtD,SAASC,EAAiBxmB,GAC7B,IAAIymB,EAAQC,EAAW1mB,GACnB2mB,EAAqBF,EAAMpL,MAAM,8BACjCwI,EAAQ8C,EAAqBA,EAAmB,GAAKF,EACrDjI,EAASxe,EAAS,MAAK,GAC3B,OAAIwe,GAAUqF,EAAMxI,MAAM,eACf,YAAcmD,EAASqF,EAAMuC,OAAO,GAExCvC,EAEJ,SAAS6C,EAAW1mB,GACvB,IAAI4mB,GAAM,QAAQ5mB,GAAMA,EAAGmB,OAAO,GAAG,GAAKnB,EAC1C,OAAQ4mB,GAAOA,EAAIzS,YAAe,YAEtC,IAAI0S,EAAc,uBAIdC,GAAmB,QAAQ,CAC3B,CAAC,MAAa,QAAI,cAClB,CAAC,MAAQ,QAAI,SACb,CAAC,MAAW,QAAI,cAChB,CAACD,EAAa,SAAUlY,GAAK,OAAOA,EAAEoY,qBAAqB5S,aAC3D,CARc,SAAUmF,GACxB,OAAO,QAASA,MAAS,QAAQA,IAAQA,EAAImK,cAAgB7Q,SAAU,QAAW0G,EAAInF,WAOxE,SAAUxF,GAAK,OAAOA,EAAEwF,aACtC,CAAC,KAAcqS,GACf,EAAC,SAAI,GAAO,QAET,SAASjJ,EAAU0G,GACtB,IAAI+C,EAAO,GACX,SAASC,EAAOpjB,GACZ,IAAI,QAASA,GAAQ,CACjB,IAA6B,IAAzBmjB,EAAKzZ,QAAQ1J,GACb,MAAO,iBACXmjB,EAAKlnB,KAAK+D,GAEd,OAAOijB,EAAiBjjB,GAE5B,OAAI,QAAYogB,GAILgD,EAAOhD,GAEX5G,KAAKE,UAAU0G,GAAG,SAAU/e,EAAKrB,GAAS,OAAOojB,EAAOpjB,MAAWuQ,QAAQ,OAAQ,KAGvF,IAAI8S,EAAoB,SAAUC,GAAQ,OAAO,SAAU9W,GAC9D,IAAKA,EACD,MAAO,CAAC,GAAI,IAChB,IAAI/B,EAAM+B,EAAI9C,QAAQ4Z,GACtB,OAAa,IAAT7Y,EACO,CAAC+B,EAAK,IACV,CAACA,EAAI+V,OAAO,EAAG9X,GAAM+B,EAAI+V,OAAO9X,EAAM,MAGtC8Y,EAAuB,SAAU/W,GAAO,OAAOA,EAAI+D,QAAQ,WAAY,KACvEiT,EAAYH,EAAkB,KAC9BI,EAAaJ,EAAkB,KAC/BK,EAAaL,EAAkB,KAC/BM,EAAc,SAAUnX,GAAO,OAAQA,EAAMA,EAAI+D,QAAQ,KAAM,IAAM,IAWzE,SAASqT,EAAaC,GACzB,IAAIC,EAAK,IAAInf,OAAO,IAAMkf,EAAQ,IAAK,KACvC,OAAO,SAAUrX,GAAO,OAAOA,EAAI8R,MAAMwF,GAAIhf,OAAO,OAcjD,SAASif,EAAerO,EAAK5K,GAChC,OAAI,SAAS,QAAK4K,MAAS,QAAS5K,GACzB4K,EAAIpY,MAAM,GAAI,GAAGM,QAAO,QAAK8X,GAAO5K,IACxC,QAAM4K,EAAK5K,0GCpElBkZ,iQA3BJ,SAASC,EAAaC,GAClB,IAAKA,EACD,MAAO,oBACX,IAAIjb,EAAQib,EAAOC,gBAAkBD,EAAOC,gBAAgBnjB,MAAQ,SAAW,SAC/E,MAAO,YAAckjB,EAAOrd,GAAK,IAAMqd,EAAOtd,MAAQ,IAAMsd,EAAOpd,IAAM,KAAOod,EAAOljB,KAAO,IAAMiI,EAAQ,KAOhH,SAASmb,EAAchW,GACnB,OAAO,QAASA,GAAS4V,EAAS5V,GAAS4V,EAASA,EAAS5V,KAgBjE,SAAW4V,GACPA,EAASA,EAAkB,QAAI,GAAK,UACpCA,EAASA,EAAqB,WAAI,GAAK,aACvCA,EAASA,EAAe,KAAI,GAAK,OACjCA,EAASA,EAAiB,OAAI,GAAK,SACnCA,EAASA,EAAqB,WAAI,GAAK,aAL3C,CAMGA,IAAaA,EAAW,KAE3B,IAAIK,GAAO,QAAM,OACbC,GAAO,QAAM,cACbC,EAAW,SAAUnZ,GAAS,MAAO,eAAiBiZ,EAAKjZ,GAAS,IAAMkZ,EAAKlZ,IA6J/EvH,EAAQ,IAzJe,WAEvB,SAAS2gB,IAELhpB,KAAKipB,SAAW,GAChBjpB,KAAKkpB,mBAAqB,EAwI9B,OArIAF,EAAMnnB,UAAUsnB,KAAO,SAAU7T,EAAS8T,GACtC,IAAIjZ,EAAQnQ,KACPopB,EAAWha,SACZga,EAAa7V,OAAOC,KAAKgV,GACpB7Z,KAAI,SAAU6O,GAAK,OAAO6L,SAAS7L,EAAG,OACtClU,QAAO,SAAUkU,GAAK,OAAQ8L,MAAM9L,MACpC7O,KAAI,SAAU9I,GAAO,OAAO2iB,EAAS3iB,OAE9CujB,EAAWza,IAAIia,GAAe7nB,SAAQ,SAAUwoB,GAAY,OAAQpZ,EAAM8Y,SAASM,GAAYjU,MAEnG0T,EAAMnnB,UAAU2nB,OAAS,WAErB,IADA,IAAIJ,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAMC,IAEpBJ,EAAMnnB,UAAU4nB,QAAU,WAEtB,IADA,IAAIL,EAAa,GACRtJ,EAAK,EAAGA,EAAK9d,UAAUoN,OAAQ0Q,IACpCsJ,EAAWtJ,GAAM9d,UAAU8d,GAE/B9f,KAAKmpB,MAAK,EAAOC,IAWrBJ,EAAMnnB,UAAUyT,QAAU,SAAUiU,GAChC,QAASvpB,KAAKipB,SAASL,EAAcW,KAGzCP,EAAMnnB,UAAU6nB,qBAAuB,SAAU9Z,GACxC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAU+nB,uBAAyB,SAAUha,GAC1C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,KAGnEoZ,EAAMnnB,UAAUgoB,oBAAsB,SAAUC,EAAMla,EAAOzP,GACzD,GAAKH,KAAKsV,QAAQkT,EAASuB,MAA3B,CAEA,IAAIxpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAiBskB,EAAKE,eAAexpB,UAC1N,QAAgBuoB,EAASnZ,GAAS,eAAiBrP,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,MAG9GwjB,EAAMnnB,UAAUooB,gBAAkB,SAAUC,EAAYta,EAAOua,GACtDnqB,KAAKsV,QAAQkT,EAASuB,OAE3B,QAAgBhB,EAASnZ,GAAS,0BAA2B,QAAU,KAAK,QAAUsa,MAG1FlB,EAAMnnB,UAAUuoB,iBAAmB,SAAUjiB,EAAM8H,EAAML,GAChD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,uBAAyBzH,EAAO,KAAO8H,EAAO,MAGpF+Y,EAAMnnB,UAAUyoB,wBAA0B,SAAUtS,EAAYpI,GACvD5P,KAAKsV,QAAQkT,EAAS6B,UAE3B,QAAgBtB,EAASnZ,GAAS,gCAAkCoI,EAAa,SAAU,QAAU,KAAK,QAAUA,EAAWrQ,SAGnIqhB,EAAMnnB,UAAU0oB,WAAa,SAAUC,EAAQ5a,GACtC5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,aAAe4a,IAG3FxB,EAAMnnB,UAAU4oB,aAAe,SAAUC,EAAY9a,GAC5C5P,KAAKsV,QAAQkT,EAASmB,aAE3B,QAAgBZ,EAASnZ,GAAS,kBAAmB,QAAUA,GAAS,kBAAoB8a,EAAWllB,OAG3GwjB,EAAMnnB,UAAU8oB,iBAAmB,SAAUpqB,EAAOqqB,EAAUvL,QAC5C,IAAVA,IAAoBA,EAAQ,IAC3Brf,KAAKsV,QAAQkT,EAASqC,SAE3B,QAAgB,aAAc,QAAU,GAAItqB,GAAS,IAAMkoB,EAAamC,GAAYvL,IAGxF2J,EAAMnnB,UAAUipB,yBAA2B,SAAUF,EAAU/Z,GACtD7Q,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,WAAYC,EAAU,kCAAoC/Z,EAAU,MAG9FmY,EAAMnnB,UAAUkpB,gBAAkB,SAAUH,EAAUpjB,GAC7CxH,KAAKsV,QAAQkT,EAASqC,SAE3B7qB,KAAK2qB,iBAAiB,OAAQC,EAAU,WAAY,QAAU,IAAKpjB,KAGvEwhB,EAAMnnB,UAAUmpB,cAAgB,SAAUC,GACtC,GAAKjrB,KAAKsV,QAAQkT,EAAS0C,YAA3B,CAEA,IAAIC,EAAY,uBAEZC,EAAUH,EACTtc,KAAI,SAAU0c,GACf,IAAIC,EACA7kB,EAAS4kB,EAAG5kB,OAAQiE,EAAa2gB,EAAG3gB,WACpC6gB,EAAM9kB,GAAUA,EAAO6E,IACvBzD,EAAM6C,GAAcA,EAAW3C,SAASgC,SAASvE,KAAO,MAAQkF,EAAW3C,SAAS6S,MAAQ,IAChG,OAAO0Q,EAAK,IAAOH,GAAaI,EAAKD,EAPzB,iCAOyCzjB,EAAKyjB,KAEzDE,MAAK,SAAU/N,EAAGmB,GAAK,OAAQnB,EAAE0N,IAAc,IAAIM,cAAc7M,EAAEuM,IAAc,OACtF,UAAkBC,KAGtBpC,EAAMnnB,UAAU6pB,sBAAwB,SAAUnrB,EAAOmK,GAChD1K,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAzK1B,SAAUmK,GAC7B,IAAIoP,EAAOpP,EAAW3C,SAClB0F,EAAQqM,EAAK/P,SAASvE,MAAQ,SAClC,MAAO,SAAWkF,EAAWyQ,IAAM,UAAY1N,EAAQ,8BAAgCqM,EAAKiB,YAAc,IAAMjB,EAAKmB,qBAAuB,IAsKzF0Q,CAAiBjhB,KAGpEse,EAAMnnB,UAAU+pB,4BAA8B,SAAUrrB,EAAOqqB,GACtD5qB,KAAKsV,QAAQkT,EAAS0C,aAE3B,QAAgB,eAAiB3qB,EAAQ,IAAMkoB,EAAamC,KAEzD5B,EA7Ie,oOCxEtB6C,EAAiC,WACjC,SAASA,IAML7rB,KAAKoO,OAAS,IAAI,IAElBpO,KAAK8rB,yBAA2B,EAEhC9rB,KAAK+rB,kBAAoB,IAAI,IAAM,GAAI,GAEvC/rB,KAAKgsB,sBAAwB,IAAI,IAAM,GAAI,GAO/C,OALAH,EAAgBhqB,UAAUqT,QAAU,WAChClV,KAAK+rB,kBAAkBlG,QACvB7lB,KAAKgsB,sBAAsBnG,QAC3B7lB,KAAKisB,WAAa,MAEfJ,EApByB,sLCiBhCK,EAAe,SAAUD,GACzB,IAAIvX,EAASuX,EAAWvX,OAuBpB6G,EAAW0Q,EACVE,WACA7iB,QAAO,SAAUmE,GAAS,QAASA,EAAMuG,UAAUoY,YACnDzd,KAAI,SAAUlB,GAAS,OAAO4e,EAAcJ,EAAYxe,MAC7D,OAAO,WAAgB8N,GAAUxQ,MA1BjC,WACI,GAAyD,QAArDkhB,EAAWK,qBAAqBnsB,UAAU4e,OAAkB,CAG5D,IAAIwN,EAAON,EAAWO,cACtB,OAAO9X,EAAOmC,aAAaxQ,OAAOkmB,EAAKE,aAAcF,EAAKne,SAAUme,EAAKpsB,WAI7E,IAAIusB,EAAOhY,EAAOuC,WACd3Q,EAASomB,EAAK1Q,MAAM0Q,EAAKC,SACzBpQ,EAAOjW,GAAUA,EAAOiW,KAG5B,GAAIA,GAAsB,UAAdA,EAAKrN,KAAkB,CAC/B,IAAIzB,EAAQ8O,EAAK9O,MACbW,EAAS9H,EAAO0V,MACpB,OAAOtH,EAAOmC,aAAaxQ,OAAOoH,EAAOW,EAAQ6d,EAAW9rB,WAGhEuU,EAAOuC,WAAW2V,WAQfC,EAAuB,SAAUC,GACxC,OAAOA,EAAkB/c,SAAS,CAAEoc,SAAU,SAAU1e,GAAS,QAASA,EAAM2e,WAAeF,IAS5F,SAASG,EAAcJ,EAAYxe,GACtC,IAAIsf,EAAatf,EAAMuG,UAAUoY,SAE7B3oB,EAAUspB,EAAqB,SAwBnC,OAvBKtpB,IAWDA,EAAUspB,EAAqB,SAAI,YACzBA,EAAWd,EAAYxe,IAC5B1C,MAIT,SAA6BzE,GAIzB,OAHIA,GAAU1E,MAAMoQ,QAAQ1L,EAAO0mB,SAC/B1mB,EAAO0mB,OAAOjsB,SAAQ,SAAUksB,GAAU,OAAOhB,EAAWvX,OAAOkC,cAAc8C,SAASuT,MAEvF3mB,KAPFyE,MAbS,SAAUzE,GAIpB,cAHOmH,EAAM2e,gBACN3e,EAAMuG,UAAUoY,gBAChBW,EAAqB,SACrBzmB,KAEC,SAAU4mB,GAElB,cADOH,EAAqB,SACrB,cAAmBG,OAc3BzpB,oPCnFP0pB,kUAJAC,EAAS7Z,OAAO1R,UAAUa,gBAK9B,SAAWyqB,GACPA,EAAQA,EAAc,KAAI,GAAK,OAC/BA,EAAQA,EAAgB,OAAI,GAAK,SACjCA,EAAQA,EAAgB,OAAI,GAAK,SAHrC,CAIGA,IAAYA,EAAU,KA2DzB,IAAIE,EAAuB,WACvB,SAASA,EAAMhiB,EAAI6D,EAAM2G,EAAUyX,EAAW7f,GAC1C,IAAIlC,EA3DZ,SAA6BgiB,EAAW1X,EAAUpI,GAC9C,IAAI+f,GAA6C,IAAzB/f,EAAMggB,gBAA4B5X,IAAasX,EAAQO,aAAWvZ,EACtFwZ,GAAU,QAAK,CAAClgB,EAAMkgB,QAASH,GAAmB,MAClDI,GAAgB,QAAUD,GAAW,CAAEA,QAASA,GAAY,GAC5DE,EAGR,SAAyBhmB,GAGrB,SAASimB,IACL,OAAOjmB,EAAIrD,MAHfqD,EAlBc,SAAUA,GACxB,OAAiG,IAA1F,CAAC,QAAS,OAAQ,SAAU,QAAS,WAAWyB,OAAO8jB,EAAO9pB,KAAKuE,GAAO,KAAKuH,OAiBhF2e,CAAYlmB,GAAO,CAAErD,MAAOqD,GAAQA,EAC1CimB,EAAmC,aAAI,EAIvC,IAAIE,GAAO,QAAanmB,EAAIrD,OAASqD,EAAIrD,MAAQspB,EACjD,OAAO,QAAOjmB,EAAK,CAAEmmB,KAAMA,IAVTC,CAAgBxgB,GAASA,EAAMW,QAAUX,EAAMW,OAAOmf,IACxE,OAAO,QAAOK,EAAeC,GAsDZK,CAAoB7iB,EAAIwK,EAAUpI,GAC/CyB,EA5CR,SAAiBrH,EAAKsmB,EAAStY,EAAUxK,EAAI+iB,GACzC,GAAIvmB,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,KAC/B,MAAM,IAAIiN,MAAM,UAAYpH,EAAK,kCACrC,GAAIxD,EAAIqH,MAAQif,GAA4B,WAAjBA,EAAQ3oB,MAAqB4oB,EAAWlf,KAAKrH,EAAIqH,MACxE,OAAOkf,EAAWlf,KAAKrH,EAAIqH,MAC/B,GAAIif,EACA,OAAOA,EACX,IAAKtmB,EAAIqH,KAAM,CACX,IAAIA,EAAO2G,IAAasX,EAAQkB,OAC1B,MACAxY,IAAasX,EAAQmB,KACjB,OACAzY,IAAasX,EAAQO,OACjB,QACA,SACd,OAAOU,EAAWlf,KAAKA,GAE3B,OAAOrH,EAAIqH,gBAAgB,IAAYrH,EAAIqH,KAAOkf,EAAWlf,KAAKrH,EAAIqH,MA2B3Dqf,CAAQhjB,EAAQ2D,EAAM2G,EAAUxK,EAAIiiB,EAAUc,YACrD,IAUQI,EACAC,EAXJC,GAUIF,EAAgB,CAAEjP,MAAO1J,IAAasX,EAAQO,QAAS,QACvDe,EAAyBpjB,EAAG2Q,MAAM,SAAW,CAAEuD,OAAO,GAAS,IAC5D,QAAOiP,EAAeC,EAAwBljB,GAAQgU,OAXjErQ,EAAOwf,EAAYxf,EAAKyf,SAASD,EAAW7Y,IAAasX,EAAQO,QAAUxe,EAC3E,IAAI0f,OAA8Bza,IAAjB5I,EAAO/G,OAAuBqR,IAAasX,EAAQO,OAChEC,GAAU,QAAUpiB,EAAOoiB,WAAapiB,EAAOoiB,UAAYze,EAAKye,QAChEkB,GAAM,QAAUtjB,EAAOsjB,OAAStjB,EAAOsjB,MAAQ3f,EAAK2f,IACpDC,EA9BZ,SAAyBvjB,EAAQqjB,EAAYG,GACzC,IAAID,EAASvjB,EAAOujB,OACpB,IAAKF,IAAyB,IAAXE,EACf,OAAO,EACX,KAAK,QAAUA,IAAqB,MAAVA,EACtB,OAAOC,EACX,IAAe,IAAXD,IAAmB,QAASA,GAC5B,OAAOA,EACX,MAAM,IAAIrc,MAAM,2BAA6Bqc,EAAS,uDAsBrCE,CAAgBzjB,EAAQqjB,EAAYtB,EAAU2B,uBACvDla,EArBZ,SAAoBxJ,EAAQmjB,EAAWE,EAAYE,GAC/C,IAAIC,EAAgB,CAChB,CAAEG,KAAM,GAAIC,GAAIP,GAAcF,OAAYva,EAAY,IACtD,CAAE+a,KAAM,KAAMC,GAAIP,GAAcF,OAAYva,EAAY,KAExDY,GAAU,QAAQxJ,EAAOwJ,SAAWxJ,EAAOwJ,QAAU,IACrD,QAAS+Z,IACT/Z,EAAQtU,KAAK,CAAEyuB,KAAMJ,EAAQK,QAAIhb,IACrC,IAAIib,GAAiB,QAAIra,GAAS,QAAK,SACvC,OAAO,QAAOga,GAAe,SAAU5O,GAAQ,OAA8C,IAAvCiP,EAAelhB,QAAQiS,EAAK+O,SAAiB9sB,OAAO2S,GAYxFsa,CAAW9jB,EAAQmjB,EAAWE,EAAYE,GACpD1P,GAAU,QAAU7T,EAAO6T,WAAa7T,EAAO6T,UAAYlQ,EAAKkQ,SAOpE,QAAOpf,KAAM,CAAEqL,GAAIA,EAAI6D,KAAMA,EAAM2G,SAAUA,EAAU+Y,WAAYA,EAAYjB,QAASA,EAASkB,IAAKA,EAAKC,OAAQA,EAAQ/Z,QAASA,EAASqK,QAASA,EAASG,MAAOmP,EAAWnjB,OAAQA,IAoG7L,OAlGA8hB,EAAMrM,OAAS,SAAU5S,EAAQ4S,QACd,IAAXA,IAAqBA,EAAS,IAElC,IADA,IAAI1F,EAAc,GACTwE,EAAK,EAAGwP,EAAWlhB,EAAQ0R,EAAKwP,EAASlgB,OAAQ0Q,IAAM,CAC5D,IAAI9Q,EAAQsgB,EAASxP,GACrBxE,EAAYtM,EAAM3D,IAAM2D,EAAMxK,MAAMwc,EAAOhS,EAAM3D,KAErD,OAAOiQ,GAaX+R,EAAMkC,QAAU,SAAUnhB,EAAQohB,EAASC,GAGvC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IAC7BrhB,EAAO9E,QAAO,SAAU0F,GAAS,OAAQA,EAAME,KAAKC,OAAOqgB,EAAQxgB,EAAM3D,IAAKokB,EAAQzgB,EAAM3D,SAWvGgiB,EAAMle,OAAS,SAAUf,EAAQohB,EAASC,GAGtC,YAFgB,IAAZD,IAAsBA,EAAU,SACpB,IAAZC,IAAsBA,EAAU,IACsB,IAAnDpC,EAAMkC,QAAQnhB,EAAQohB,EAASC,GAASrgB,QAGnDie,EAAMqC,UAAY,SAAUthB,EAAQ4S,GAEhC,YADe,IAAXA,IAAqBA,EAAS,IAC3B5S,EAAOO,KAAI,SAAUK,GAAS,OAAOA,EAAM0gB,UAAU1O,EAAOhS,EAAM3D,QAASuD,OAAO,MAAU,IAEvGye,EAAMxrB,UAAU8tB,eAAiB,SAAUnrB,GACvC,OAAOxE,KAAK4uB,YAAc5uB,KAAKkP,KAAKC,OAAOnP,KAAKwE,QAASA,IAM7D6oB,EAAMxrB,UAAU2C,MAAQ,SAAUA,GAC9B,IAAI2L,EAAQnQ,KA0BZ,OADAwE,EAR2B,SAAUR,GACjC,IAAK,IAAI8b,EAAK,EAAGuL,EAAKlb,EAAM4E,QAAS+K,EAAKuL,EAAGjc,OAAQ0Q,IAAM,CACvD,IAAIrM,EAAQ4X,EAAGvL,GACf,GAAIrM,EAAMyb,OAASlrB,EACf,OAAOyP,EAAM0b,GAErB,OAAOnrB,EAEH4rB,CAAqBprB,IACtB,QAAYA,GAtBG,WAClB,GAAI2L,EAAM0f,mBACN,OAAO1f,EAAM0f,mBAAmBC,aACpC,IAAK,cACD,MAAM,IAAIrd,MAAM,+DACpB,IAAIqd,EAAe,qBAA0B3f,EAAM5E,OAAOyiB,MAC1D,GAAI8B,MAAAA,IAAwD3f,EAAMjB,KAAKgK,GAAG4W,GACtE,MAAM,IAAIrd,MAAM,kBAAoBqd,EAAe,oBAAsB3f,EAAM9E,GAAK,sCAAwC8E,EAAMjB,KAAK1J,KAAO,KAIlJ,OAHI2K,EAAM5E,OAAOyiB,KAAkB,cAC/B7d,EAAM0f,mBAAqB,CAAEC,aAAcA,IAExCA,EAWiBC,GAAoB/vB,KAAKkP,KAAK8gB,WAAWxrB,IAEzE6oB,EAAMxrB,UAAUouB,SAAW,WACvB,OAAOjwB,KAAK6V,WAAasX,EAAQO,QAErCL,EAAMxrB,UAAU6tB,UAAY,SAAUlrB,GAElC,KAAK,QAAYA,IAAoB,OAAVA,IAAmBxE,KAAK4uB,WAC/C,OAAO,EAEX,IAAI/T,EAAa7a,KAAKkP,KAAK8gB,WAAWxrB,GACtC,IAAKxE,KAAKkP,KAAKgK,GAAG2B,GACd,OAAO,EAEX,IAAIqV,EAAUlwB,KAAKkP,KAAK2F,OAAOgG,GAC/B,SAAS,QAASqV,KAAalwB,KAAKkP,KAAKoV,QAAQ7a,KAAKymB,KAE1D7C,EAAMxrB,UAAUiT,SAAW,WACvB,MAAO,UAAY9U,KAAKqL,GAAK,IAAMrL,KAAKkP,KAAO,aAAelP,KAAK8uB,OAAS,eAAiB9uB,KAAK4uB,WAAa,KAE5GvB,EAtHe,4OChDtB8C,EAA2B,WAM3B,SAASA,EAAUjd,GAEflT,KAAKskB,QAAU,KAEftkB,KAAKof,SAAU,GACf,QAAOpf,KAAMkT,GAgDjB,OA5CAid,EAAUtuB,UAAUqX,GAAK,SAAUlV,EAAK6B,GACpC,OAAO,GAGXsqB,EAAUtuB,UAAUgT,OAAS,SAAU7Q,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUoT,OAAS,SAAUjR,EAAK6B,GACxC,OAAO7B,GAGXmsB,EAAUtuB,UAAUsN,OAAS,SAAUsO,EAAGmB,GAEtC,OAAOnB,GAAKmB,GAEhBuR,EAAUtuB,UAAUuuB,YAAc,WAC9B,IAAIC,EAAMrwB,KAAKskB,QAAQxP,WACvB,OAAOub,EAAItJ,OAAO,EAAGsJ,EAAIjhB,OAAS,IAEtC+gB,EAAUtuB,UAAUiT,SAAW,WAC3B,MAAO,cAAgB9U,KAAKwF,KAAO,KAGvC2qB,EAAUtuB,UAAUmuB,WAAa,SAAUhsB,GACvC,OAAOhE,KAAKkZ,GAAGlV,GAAOA,EAAMhE,KAAKiV,OAAOjR,IAY5CmsB,EAAUtuB,UAAU8sB,SAAW,SAAU2B,EAAML,GAC3C,IAAKK,EACD,OAAOtwB,KACX,GAAa,SAATswB,IAAoBL,EACpB,MAAM,IAAIxd,MAAM,kDACpB,OAAO,IAAI8d,EAAUvwB,KAAMswB,IAExBH,EA3DmB,GA+D9B,SAASI,EAAUrhB,EAAMohB,GACrB,IAAIngB,EAAQnQ,KAEZ,SAASwwB,EAAUxsB,GACf,OAAO,QAAQA,GAAOA,GAAM,QAAUA,GAAO,CAACA,GAAO,GAczD,SAASysB,EAAajwB,EAAUkwB,GAC5B,OAAO,SAAqB1sB,GACxB,IAAI,QAAQA,IAAuB,IAAfA,EAAIoL,OACpB,OAAOpL,EACX,IAAI0b,EAAM8Q,EAAUxsB,GAChBsC,GAAS,QAAIoZ,EAAKlf,GACtB,OAAyB,IAAlBkwB,EAAgF,KAAvD,QAAOpqB,GAAQ,SAAUgJ,GAAK,OAAQA,KAAMF,OAjBpF,SAAqBpL,GACjB,OAAQA,EAAIoL,QACR,KAAK,EACD,OACJ,KAAK,EACD,MAAgB,SAATkhB,EAAkBtsB,EAAI,GAAKA,EACtC,QACI,OAAOA,GAUgF2sB,CAAYrqB,IAI/G,SAASsqB,EAAmBpwB,GACxB,OAAO,SAAqBqwB,EAAMC,GAC9B,IAAIC,EAAOP,EAAUK,GAAOG,EAAQR,EAAUM,GAC9C,GAAIC,EAAK3hB,SAAW4hB,EAAM5hB,OACtB,OAAO,EACX,IAAK,IAAIiO,EAAI,EAAGA,EAAI0T,EAAK3hB,OAAQiO,IAC7B,IAAK7c,EAASuwB,EAAK1T,GAAI2T,EAAM3T,IACzB,OAAO,EAEf,OAAO,GAGf,CAAC,SAAU,SAAU,SAAU,cAActc,SAAQ,SAAUyE,GAC3D,IAAIyrB,EAAc/hB,EAAK1J,GAAMlC,KAAK4L,GAC9BgiB,EAAqB,WAAT1rB,EAAoBorB,EAAqBH,EACzDtgB,EAAM3K,GAAQ0rB,EAAUD,OAE5B,QAAOjxB,KAAM,CACT2tB,QAASze,EAAKye,QACdnoB,KAAM0J,EAAK1J,KACX8e,QAASpV,EAAKoV,QACdlF,QAASlQ,EAAKkQ,QACdyP,IAAK3f,EAAK2f,IACV3V,GAAIuX,EAAavhB,EAAKgK,GAAG5V,KAAK4L,IAAO,GACrCiiB,WAAYb,+GC5DZc,kUApDJC,EAA4B,WAC5B,SAASA,IACLrxB,KAAKwlB,SAAU,EACfxlB,KAAKsxB,UAAY,GACjBtxB,KAAKuxB,cAAe,QAAKF,EAAWxvB,UAAW,CAC3C,OACA,SACA,QACA,OACA,MACA,OACA,OACA,OACA,QAIJ7B,KAAK+D,OAAQ,SAAQ,QAAI/D,KAAKuxB,cADf,SAAU9X,EAAYjU,GAAQ,OAAO,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,OAClC,IA+B3D,OA7BA4X,EAAWxvB,UAAUqT,QAAU,WAC3BlV,KAAK+D,MAAQ,IAOjBstB,EAAWxvB,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpD,KAAK,QAAU/X,GACX,OAAOzZ,KAAK+D,MAAMyB,GACtB,GAAIxF,KAAK+D,MAAMrB,eAAe8C,GAC1B,MAAM,IAAIiN,MAAM,iBAAmBjN,EAAO,+BAO9C,OANAxF,KAAK+D,MAAMyB,GAAQ,IAAI,KAAU,QAAO,CAAEA,KAAMA,GAAQiU,IACpD+X,IACAxxB,KAAKsxB,UAAU7wB,KAAK,CAAE+E,KAAMA,EAAM0N,IAAKse,IAClCxxB,KAAKwlB,SACNxlB,KAAKyxB,mBAENzxB,MAEXqxB,EAAWxvB,UAAU4vB,gBAAkB,WACnC,KAAOzxB,KAAKsxB,UAAUliB,QAAQ,CAC1B,IAAIF,EAAOlP,KAAKsxB,UAAUrvB,QAC1B,GAAIiN,EAAKoV,QACL,MAAM,IAAI7R,MAAM,sDACpB,QAAOzS,KAAK+D,MAAMmL,EAAK1J,MAAO,qBAA0B0J,EAAKgE,QAG9Dme,EAhDoB,GAoDvBD,EAAkB,SAAUle,GAC5B,IAAIwe,EAAc,SAAU1tB,GAAO,OAAe,MAAPA,EAAcA,EAAI8Q,WAAa9Q,GACtE2tB,EAAkB,CAClB9c,OAAQ6c,EACRzc,OAAQyc,EACRxY,IAAI,IAAAA,IAAG0Y,QACPtN,QAAS,KAETnV,OAAQ,SAAUsO,EAAGmB,GAAK,OAAOnB,GAAKmB,IAE1C,OAAO,QAAO,GAAI+S,EAAiBze,KAGvC,QAAOme,EAAWxvB,UAAW,CACzB0D,OAAQ6rB,EAAgB,IACxBjpB,KAAMipB,EAAgB,CAClB9M,QAAS,UAEbuN,MAAOT,EAAgB,IACvBU,KAAMV,EAAgB,CAClBhS,SAAS,IAEb2S,IAAKX,EAAgB,CACjBnc,OAAQ,SAAUjR,GAAO,OAAOqlB,SAASrlB,EAAK,KAC9CkV,GAAI,SAAUlV,GACV,QAAQ,QAAkBA,IAAQhE,KAAKiV,OAAOjR,EAAI8Q,cAAgB9Q,GAEtEsgB,QAAS,UAEb0N,KAAMZ,EAAgB,CAClBvc,OAAQ,SAAU7Q,GAAO,OAAQA,EAAO,EAAM,GAC9CiR,OAAQ,SAAUjR,GAAO,OAA6B,IAAtBqlB,SAASrlB,EAAK,KAC9CkV,IAAI,IAAAA,IAAG+Y,SACP3N,QAAS,QAEb4N,KAAMd,EAAgB,CAClBvc,OAAQ,SAAU7Q,GACd,OAAQhE,KAAKkZ,GAAGlV,GAEV,CAACA,EAAImuB,eAAgB,KAAOnuB,EAAIouB,WAAa,IAAItwB,OAAO,IAAK,IAAMkC,EAAIquB,WAAWvwB,OAAO,IAAImR,KAAK,UADlGkB,GAGVc,OAAQ,SAAUjR,GACd,GAAIhE,KAAKkZ,GAAGlV,GACR,OAAOA,EACX,IAAIgY,EAAQhc,KAAKsyB,QAAQ7oB,KAAKzF,GAC9B,OAAOgY,EAAQ,IAAIuW,KAAKvW,EAAM,GAAIA,EAAM,GAAK,EAAGA,EAAM,SAAM7H,GAEhE+E,GAAI,SAAUlV,GAAO,OAAOA,aAAeuuB,OAASjJ,MAAMtlB,EAAIwuB,YAC9DrjB,OAAQ,SAAUsjB,EAAGlV,GACjB,MAAO,CAAC,cAAe,WAAY,WAAW3O,QAAO,SAAUsL,EAAKvZ,GAAM,OAAOuZ,GAAOuY,EAAE9xB,OAAU4c,EAAE5c,QAAU,IAEpH2jB,QAAS,0DACTgO,QAAS,0DAEbI,KAAMtB,EAAgB,CAClBvc,OAAQ,KACRI,OAAQ,KACRiE,IAAI,IAAAA,IAAG3F,QACPpE,OAAQ,KACRmV,QAAS,UAGbJ,IAAKkN,EAAgB,CACjBvc,OAAQ,KACRI,OAAQ,KACRiE,GAAI,WAAc,OAAO,GACzB/J,OAAQ,kLCjJhBwjB,EAA6B,WAC7B,SAASA,EAAYvkB,QACF,IAAXA,IAAqBA,EAAS,KAClC,QAAOpO,KAAMoO,GA4BjB,OAlBAukB,EAAY9wB,UAAU+wB,SAAW,SAAUC,EAAWC,EAAUC,GAC5D,IAAIC,EACAC,GAAU,QAAUH,EAAUC,GAAM9nB,EAAY,GAAIioB,EAAc,GACtE,IAAK,IAAI7V,KAAK4V,EACV,GAAKA,EAAQ5V,IAAO4V,EAAQ5V,GAAGjP,SAE/B4kB,EAAezf,OAAOC,KAAKyf,EAAQ5V,GAAGjP,SACpBgB,OAElB,IAAK,IAAIsO,KAAKsV,EACNE,EAAYhlB,QAAQ8kB,EAAatV,KAAO,IAE5CwV,EAAYzyB,KAAKuyB,EAAatV,IAC9BzS,EAAU+nB,EAAatV,IAAM1d,KAAKgzB,EAAatV,KAGvD,OAAO,QAAO,GAAIzS,EAAW4nB,IAE1BF,EA/BqB,+RCS5BQ,EAA0B,WAC1B,SAASA,EAASC,GACd,GAAIA,aAAuBD,EAAU,CACjC,IAAI5kB,EAAO6kB,EACXpzB,KAAKyN,MAAQc,EAAKd,MAClBzN,KAAKwO,YAAcD,EAAKC,YAAY1M,QACpC9B,KAAKsb,aAAc,QAAO,GAAI/M,EAAK+M,aACnCtb,KAAK+X,YAAcxJ,EAAKwJ,YAAYjW,QACpC9B,KAAKwa,MAAQjM,EAAKiM,OAASjM,EAAKiM,MAAM1Y,YAErC,CACD,IAAI2L,EAAQ2lB,EACZpzB,KAAKyN,MAAQA,EACbzN,KAAKwO,YAAcf,EAAM4lB,WAAW,CAAEjU,SAAS,IAC/Cpf,KAAKsb,YAAc,GACnBtb,KAAK+X,YAActK,EAAMsK,YAAYpJ,KAAI,SAAUqE,GAAO,OAAOA,EAAItG,YA+C7E,OA5CAymB,EAAStxB,UAAU6K,MAAQ,WACvB,OAAO,IAAIymB,EAASnzB,OAGxBmzB,EAAStxB,UAAUyxB,eAAiB,SAAUllB,GAG1C,OADApO,KAAKsb,YAActb,KAAKwO,YAAYI,QAAO,SAAUsR,EAAMqT,GAAQ,OAAO,QAAWrT,EADtC,EAAnBsT,EAC2ED,GAD9CloB,GAAImoB,EAAShvB,MAAM4J,EAAOolB,EAASnoB,OAA1E,IAAUmoB,IACsF,IAC3GxzB,MAGXmzB,EAAStxB,UAAU4xB,UAAY,SAAUjuB,GACrC,OAAO,QAAKxF,KAAKwO,aAAa,QAAO,KAAMhJ,KAM/C2tB,EAAStxB,UAAUsN,OAAS,SAAUZ,EAAMmlB,GACxC,IAAIC,EAAO3zB,KAAK2zB,KAAKplB,EAAMmlB,GAC3B,OAAOC,GAAwB,IAAhBA,EAAKvkB,QAcxB+jB,EAAStxB,UAAU8xB,KAAO,SAAUplB,EAAMmlB,GACtC,GAAI1zB,KAAKyN,QAAUc,EAAKd,MACpB,OAAO,EACX,IAAIW,EAASslB,EAAWA,EAAS1zB,MAAQA,KAAKwO,YAC9C,OAAO,YAAcJ,EAAQpO,KAAKsb,YAAa/M,EAAK+M,cAMxD6X,EAASzmB,MAAQ,SAAU6B,GAAQ,OAAOA,EAAK7B,SACxCymB,EA9DkB,mWCHzBS,EAA2B,WAC3B,SAASA,KA4JT,OAzJAA,EAAUC,gBAAkB,SAAUC,EAAU3rB,GAC5C,IAAIsF,GAAQ,QAAKtF,GAAMsF,MACvB,OAAO,IAAI,IAAYqmB,EAAUrmB,EAAOtF,EAAKwG,KAAI,QAAK,gBAAgBC,OAAO,KAAQ,IAAK,KAE9FglB,EAAUG,UAAY,SAAUvH,GAC5B,IAAIre,EAAWqe,EAAYpe,SAC3B,OAAOoe,EAAY/T,SAAStQ,KAAKwG,KAAI,SAAUlB,GAAS,OAAO,IAAI,IAASA,GAAO6lB,eAAenlB,OAGtGylB,EAAUI,YAAc,SAAUC,EAAUzH,GACxC,IAAI0H,EAASN,EAAUG,UAAUvH,GACjC,OAAIA,EAAYrsB,UAAUif,QACfwU,EAAUO,cAAcF,EAAUC,EAAQ3gB,OAAOC,KAAKgZ,EAAYpe,WAEtE8lB,GAOXN,EAAUQ,iBAAmB,SAAUttB,EAAOqB,EAAM6kB,GAEhD7kB,EACKmB,QAAO,SAAUiF,GAAQ,OAAO,QAAQye,EAAQze,EAAKd,UACrD1M,SAAQ,SAAUwN,GACnB,IAAI8lB,GAAY,QAAO9lB,EAAKd,MAAM+M,OAAS,IACvC8Z,EAAUV,EAAUU,QAAQnsB,GAAM,SAAUoY,GAAK,OAAOA,IAAMhS,KAC9DgmB,EAAcF,EAAU1lB,KAAI,SAAUmL,GAAQ,OAAOhT,EAAM0tB,iBAAiBF,EAASxa,MACzFvL,EAAKiM,MAAQ+Z,EAAY3lB,OAAO,KAAS,QAcjDglB,EAAUO,cAAgB,SAAUF,EAAUC,EAAQO,QACnC,IAAXA,IAAqBA,EAAS,IAKlC,IAAIC,EAAYT,EACXtlB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKC,eAClCI,OAAO,KAAS,IAChBtF,QAAO,SAAU0F,GAAS,OAAQA,EAAMoQ,WACxCzQ,KAAI,QAAK,OAiBd,OAAOulB,EAAOvlB,KAZd,SAAiCgmB,GAE7B,IAAIC,GAAc,QAAO,GAAID,GAAUA,EAAOrZ,aAE1CuZ,GAAoB,QAAKD,EAAaH,GAC1CG,GAAc,QAAKA,EAAaH,GAChC,IAnBmBtsB,EAAMsF,EACrBc,EAkBAumB,GAAgB,SAnBD3sB,EAmBoB8rB,EAnBdxmB,EAmBwBknB,EAAOlnB,MAlBpDc,GAAO,QAAKpG,GAAM,QAAO,QAASsF,KAC/B,QAAO,GAAIc,GAAQA,EAAK+M,cAiBmC,IAAIoZ,GAElEK,GAAe,QAAOH,EAAaE,EAAeD,GACtD,OAAO,IAAI,IAASF,EAAOlnB,OAAO6lB,eAAeyB,OAQzDnB,EAAUllB,YAAc,SAAUulB,EAAUC,EAAQc,GAIhD,IAHA,IAE2BC,EAAOC,EAU9BhG,EAAMiG,EAAUlnB,EAASke,EAZzBrF,EAAMhF,KAAKD,IAAIoS,EAAS7kB,OAAQ8kB,EAAO9kB,QACvCgmB,EAAO,EAEJA,EAAOtO,GAAOmN,EAASmB,GAAM3nB,QAAUunB,IADnBC,EAC6ChB,EAASmB,GAD/CF,EACsDhB,EAAOkB,GAD7CH,EAAM9lB,OAAO+lB,EAAOtB,EAAUyB,oBAE5ED,IAUJD,GADAjG,EAAO+E,GACSnyB,MAAM,EAAGszB,GACzBnnB,EAAUihB,EAAKptB,MAAMszB,GAErB,IAAIE,EAAuBH,EAASxmB,KAVpC,SAAuB4mB,EAActmB,GACjC,IAAIxC,EAAS8oB,EAAa7oB,QAE1B,OADAD,EAAO6O,YAAc4Y,EAAOjlB,GAAKqM,YAC1B7O,KAUX,OAFA0f,EAAW+H,EAAOpyB,MAAMszB,GAEjB,CAAElG,KAAMA,EAAMC,GADhBmG,EAAqBlzB,OAAO+pB,GACJgJ,SAAUA,EAAUG,qBAAsBA,EAAsBrnB,QAASA,EAASke,SAAUA,IAiB7HyH,EAAU4B,SAAW,SAAUC,EAAOC,EAAOhC,GACzC,IAAIiC,GAAO,EAEX,OADa,QAAYF,EAAOC,GAClB9mB,QAAO,SAAU4mB,EAAUnK,GACrC,IAAIuK,EAAQvK,EAAG,GAAIwK,EAAQxK,EAAG,GAE9B,OADAsK,EAAOA,IAASC,EAAMzmB,OAAO0mB,EAAOnC,IACtB8B,EAAWA,EAASpzB,OAAOwzB,KAC1C,KAUPhC,EAAUzkB,OAAS,SAAUsmB,EAAOC,EAAOhC,GACvC,OAAO+B,EAAMrmB,SAAWsmB,EAAMtmB,QAAUwkB,EAAU4B,SAASC,EAAOC,EAAOhC,GAAUtkB,SAAWqmB,EAAMrmB,QAYxGwkB,EAAUU,QAAU,SAAUnsB,EAAM2tB,GAChC,IAAIvnB,GAAO,QAAKpG,EAAM2tB,GAClBC,EAAa5tB,EAAK+F,QAAQK,GAC9B,OAAuB,IAAhBwnB,OAAoB5hB,EAAYhM,EAAKrG,MAAM,EAAGi0B,EAAa,IAEtEnC,EAAUyB,iBAAmB,SAAU9mB,GACnC,OAAOA,EAAKd,MAAM4lB,WAAW,CAAEjU,SAAS,IAAS9V,QAAO,SAAU0F,GAAS,OAAQA,EAAM2e,YAG7FiG,EAAUtY,YAAc,SAAUnT,GAAQ,OAAOA,EAAKyG,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO,QAAO2L,EAAK3L,EAAK+M,eAAiB,KACtHsY,EA7JmB,yGCPvB,IAAIoC,EAAkB,CACzB/lB,KAAM,CACFgmB,KAAM,OACNC,MAAO,SAEXpd,MAAO,CACHqd,KAAM,OACNC,OAAQ,sbCgBZnkB,EAA4B,WAC5B,SAASA,EAAWokB,EAAMne,EAAWpG,EAAMwkB,EAAQ3uB,GAG/C,GAFA3H,KAAKu2B,UAAW,EAChBv2B,KAAKyD,aAAU0Q,EACXkiB,aAAgBpkB,GAChB,QAAOjS,KAAMq2B,QAEZ,IAAI,QAAWne,GAAY,CAC5B,IAAI,QAAkBme,GAClB,MAAM,IAAI5jB,MAAM,gDACpB,KAAK,QAAWyF,GACZ,MAAM,IAAIzF,MAAM,2DACpBzS,KAAKuhB,MAAQ8U,EACbr2B,KAAKs2B,OAASA,EACdt2B,KAAKkY,UAAYA,EACjBlY,KAAK8R,KAAOA,GAAQ,GACpB9R,KAAK2H,KAAOA,EACZ3H,KAAKu2B,cAAoBpiB,IAATxM,EAChB3H,KAAKyD,QAAUzD,KAAKu2B,SAAW,YAAiBv2B,KAAK2H,WAAQwM,OAE5D,IAAI,QAASkiB,IAASA,EAAK9U,QAAU8U,EAAK3zB,eAAe,cAAgB2zB,EAAK3zB,eAAe,SAAU,CACxG,IAAI8zB,EAAUH,EACd,OAAO,IAAIpkB,EAAWukB,EAAQjV,MAAOiV,EAAQte,UAAWse,EAAQ1kB,KAAM0kB,EAAQF,OAAQE,EAAQ7uB,OA+DtG,OA5DAsK,EAAWpQ,UAAUgX,UAAY,SAAUpL,GACvC,IAAIgpB,EAAaz2B,KAAKs2B,QAAU,GAC5BI,EAAejpB,GAASA,EAAMkpB,eAAkB,GACpD,MAAO,CACH1mB,KAAMwmB,EAAWxmB,MAAQymB,EAAYzmB,MA5CvC,OA6CE6I,MAAO2d,EAAW3d,OAAS4d,EAAY5d,OA5CxC,SAsDP7G,EAAWpQ,UAAU8K,QAAU,SAAUiqB,EAAgBhnB,GACrD,IAAIO,EAAQnQ,KACR+G,EAAK,OAOLwH,EAAOqoB,EAAeC,SAAS72B,MAC/ByN,EAAQc,GAAQA,EAAKd,MACrBqpB,EAAc92B,KAAK6Y,UAAUpL,GAAOqL,MACpCie,GAAoB,QAAWD,GAAeA,EAAc,KAUhE,OAAQ92B,KAAKyD,QAAUsD,EAClBkJ,OACAlF,MApB2B,WAC5B,OAAOhE,EAAG0U,IAAImb,EAAeI,gBAAgB7mB,GAAOxB,KAAI,SAAUqJ,GAAc,OAAOA,EAAWtH,IAAIkmB,EAAgBhnB,UAoBrH7E,MAjBiB,SAAUksB,GAAgB,OAAO9mB,EAAM+H,UAAU/V,MAAM,KAAM80B,MAkB9ElsB,KAAKgsB,GACLhsB,MAboB,SAAUmsB,GAK/B,OAJA/mB,EAAMxI,KAAOuvB,EACb/mB,EAAMomB,UAAW,EACjBpmB,EAAM+H,UAAY,KAClB,6BAA8B/H,EAAOP,GAC9BO,EAAMxI,SAgBrBsK,EAAWpQ,UAAU6O,IAAM,SAAUkmB,EAAgBhnB,GACjD,OAAO5P,KAAKyD,SAAWzD,KAAK2M,QAAQiqB,EAAgBhnB,IAExDqC,EAAWpQ,UAAUiT,SAAW,WAC5B,MAAO,sBAAuB,QAAU9U,KAAKuhB,OAAS,gBAAkBvhB,KAAK8R,KAAKnD,IAAI,MAAa,MAEvGsD,EAAWpQ,UAAU6K,MAAQ,WACzB,OAAO,IAAIuF,EAAWjS,OAE1BiS,EAAWklB,SAAW,SAAU5V,EAAO5Z,GAAQ,OAAO,IAAIsK,EAAWsP,GAAO,WAAc,OAAO5Z,IAAS,KAAM,KAAMA,IAC/GsK,EArFoB,4qBCd3BmlB,EAAQ,SACRC,EAAY,CAACD,EAAMlB,MAAOkB,EAAMnB,MAChCqB,EAAc,CAACF,EAAMlB,OAarB9tB,EAAgC,WAChC,SAASA,EAAemvB,GACpBv3B,KAAKu3B,MAAQA,EA8IjB,OA3IAnvB,EAAevG,UAAU+W,UAAY,WACjC,OAAO5Y,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAAQ,OAAO2L,EAAI9X,OAAOmM,EAAKwJ,YAAYpJ,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,YAAe,IAAI3S,OAAO,KAAO,KAQpJxG,EAAevG,UAAUiM,cAAgB,SAAUyT,GAC/C,IAAIiU,EAAWx1B,KAAKu3B,MACf5oB,KAAI,SAAUJ,GAAQ,OAAOA,EAAKwJ,eAClCnJ,OAAO,KAAS,IAChBtF,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC9C,OAAO,QAAKiU,IAGhBptB,EAAevG,UAAUgX,UAAY,SAAUb,GAC3C,IAAIzJ,EAAOvO,KAAK62B,SAAS7e,GACzB,OAAOA,EAAWa,UAAUtK,EAAKd,QAyBrCrF,EAAevG,UAAUkS,WAAa,SAAUtG,GAC5C,OAAO,IAAIrF,EAAe,YAAkBpI,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAOA,EAAKd,QAAUA,OAiBpGrF,EAAevG,UAAU21B,eAAiB,SAAUC,EAAgBhqB,GAChE,IAAIc,GAAO,QAAKvO,KAAKu3B,OAAO,QAAO,QAAS9pB,IACxC+F,EAAOikB,EAAe9oB,KAAI,SAAU4O,GAAK,OAAOA,EAAEgE,SACtDhT,EAAKwJ,YAAcxJ,EAAKwJ,YAAYzO,QAAO,SAAUiU,GAAK,OAAkC,IAA3B/J,EAAKtF,QAAQqP,EAAEgE,UAAkBnf,OAAOq1B,IAS7GrvB,EAAevG,UAAU61B,YAAc,SAAUznB,EAAML,GACnD,IAAIO,EAAQnQ,UACC,IAATiQ,IAAmBA,EAAO,QAE9B,IAGI0nB,IAHa,QAAQN,EAAWpnB,GAAQA,EAAO,UAGjB,eAA6BqnB,EAAcD,EAE7E,sBAAuBr3B,KAAKu3B,MAAOtnB,EAAML,GACzC,IAAIgoB,EAAgB,SAAUC,EAAcC,GAAe,OAAO,SAAU9f,GACxE,OAAO,QAAQ6f,EAAc1nB,EAAM0I,UAAUb,GAAY8f,MAIzDvc,EAAWvb,KAAKu3B,MAAM3oB,QAAO,SAAUsL,EAAK3L,GAC5C,IAAIwpB,EAAkBxpB,EAAKwJ,YAAYzO,OAAOsuB,EAAcD,EAAc,SACtEK,EAASD,EAAgBzuB,OAAOsuB,EAAc,CAAC,UAAW,UAC1DK,EAAOF,EAAgBzuB,QAAO,QAAIsuB,EAAc,CAAC,UAAW,WAE5D7jB,EAAa5D,EAAM4D,WAAWxF,EAAKd,OACnCyqB,EAAY,SAAU3a,GACtB,OAAOA,EACF7M,IAAIqD,EAAYnE,GAEhB7E,MAAK,SAAUvG,GAAS,MAAO,CAAG+c,MAAOhE,EAAEgE,MAAO/c,MAAOA,OAGlE,OADAwzB,EAAOj3B,QAAQm3B,GACRhe,EAAI9X,OAAO61B,EAAKtpB,IAAIupB,MAC5B,IAEH,OAAO,WAAgB3c,IAE3BnT,EAAevG,UAAUs2B,SAAW,WAChC,OAAOn4B,KAAKo4B,YAAcp4B,KAAKo4B,UAAY,IAAIC,EAAer4B,QAElEoI,EAAevG,UAAUg1B,SAAW,SAAU7e,GAC1C,OAAO,QAAKhY,KAAKu3B,OAAO,SAAUhpB,GAAQ,OAAO,QAAQA,EAAKwJ,YAAaC,OAO/E5P,EAAevG,UAAUm1B,gBAAkB,SAAUhf,GACjD,IAAI7H,EAAQnQ,KACRuO,EAAOvO,KAAK62B,SAAS7e,GAIrBsgB,GADU,YAAkBt4B,KAAKu3B,OAAO,SAAUjoB,GAAK,OAAOA,IAAMf,MAAYvO,KAAKu3B,OAEpF3oB,QAAO,SAAUsL,EAAKqe,GAAS,OAAOre,EAAI9X,OAAOm2B,EAAMxgB,eAAiB,IACxEzO,QAAO,SAAU0J,GAAO,OAAOA,IAAQgF,KAW5C,OAAOA,EAAWlG,KAAKnD,KAVH,SAAU4S,GAC1B,IAAIiU,EAAW8C,EAAqBhvB,QAAO,SAAUiU,GAAK,OAAOA,EAAEgE,QAAUA,KAC7E,GAAIiU,EAASpmB,OACT,OAAO,QAAKomB,GAChB,IAAIgD,EAAeroB,EAAMgoB,WAAWM,UAAUlX,GAC9C,IAAI,QAAYiX,GACZ,MAAM,IAAI/lB,MAAM,+CAAgD,QAAU8O,IAE9E,OAAO,IAAI,IAAWA,GAAO,WAAc,OAAOiX,IAAiB,GAAIA,OAIxEpwB,EAhJwB,GAoJ/BiwB,EAAgC,WAChC,SAASA,EAAexnB,GACpB7Q,KAAK6Q,QAAUA,EACf7Q,KAAK04B,OAAS14B,KAAK0Q,IAlKQ,oBAkKsB,cAwBrD,OAtBA2nB,EAAex2B,UAAU6O,IAAM,SAAU6Q,GACrC,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,GAAIvJ,EAAY,CACZ,GAAiD,WAA7ChY,KAAK6Q,QAAQgI,UAAUb,GAAYc,MACnC,OAAOd,EAAWtH,IAAI1Q,KAAK6Q,SAE/B,IAAKmH,EAAWue,SACZ,MAAM,IAAI9jB,MAAM,yCAA0C,QAAUuF,EAAWuJ,QAEnF,OAAOvJ,EAAWrQ,KAEtB,OAAO3H,KAAKy4B,UAAUlX,IAE1B8W,EAAex2B,UAAU82B,SAAW,SAAUpX,GAC1C,IAAIvJ,EAAahY,KAAK6Q,QAAQ/C,cAAcyT,GAC5C,OAAIvJ,EACOA,EAAWtH,IAAI1Q,KAAK6Q,SACxB,YAAiB7Q,KAAK04B,OAAOhoB,IAAI6Q,KAE5C8W,EAAex2B,UAAU42B,UAAY,SAAUlX,GAC3C,OAAOvhB,KAAK04B,QAAU14B,KAAK04B,OAAOhoB,IAAI6Q,IAEnC8W,EA3BwB,q2BC/J/BO,EAAkB,EAMlBC,GAAsB,QAAS,mBAJnB,CAAC,MAAO,OAAQ,SAAU,OAAQ,aAM9CC,GAAqB,QAAS,iBAJlB,CAAC,OAAQ,WAAY,OAAQ,WAAY,YAAa,eAUlEpiB,EAA0B,WAQ1B,SAASA,EAASU,EAAiBC,QACP,IAApBD,IAA8BA,EAAkByhB,QAC7B,IAAnBxhB,IAA6BA,EAAiByhB,GAClD94B,KAAKoX,gBAAkBA,EACvBpX,KAAKqX,eAAiBA,EACLrX,KAAKmb,IAAMyd,IACX54B,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAe,GAErCh5B,KAAKqI,MAAQ,KAEbrI,KAAK+W,YAAc,IAAI,IAAY/W,MAEnCA,KAAKsY,QAAU,IAAI,IAEnBtY,KAAK8sB,kBAAoB,IAAI,IAAkB9sB,MAK/CA,KAAK4U,kBAAoB,IAAI,IAAkB5U,MAK/CA,KAAKmc,UAAY,IAAI,IAAUnc,MAE/BA,KAAKiX,WAAa,IAAI,IAAWjX,MAEjCA,KAAK4W,cAAgB,IAAI,IAAc5W,MAEvCA,KAAK6W,aAAe,IAAI,IAAa7W,MAErCA,KAAKi5B,SAAW,GAChBj5B,KAAK+W,YAAY/M,WAAWC,iBAAiBjK,KAAK4W,cAAcgH,QAChE5d,KAAKsY,QAAQwa,SAAW9yB,KAAK4W,cAAcgH,OAC3C5d,KAAKsY,QAAQwN,QAAU9lB,KAAKsY,QAAQwa,SAASplB,KAC7C1N,KAAKk5B,WAAWl5B,KAAKsY,SACrBtY,KAAKk5B,WAAWl5B,KAAK6W,cACrB7W,KAAKk5B,WAAWl5B,KAAK4W,eACrB5W,KAAKk5B,WAAWl5B,KAAK8sB,mBACrB9sB,KAAKk5B,WAAWl5B,KAAKiX,YACrBjX,KAAKk5B,WAAW9hB,GAChBpX,KAAKk5B,WAAW7hB,GAgGpB,OA7FAX,EAAS7U,UAAUq3B,WAAa,SAAUA,GACtCl5B,KAAKg5B,aAAav4B,KAAKy4B,IAa3BxiB,EAAS7U,UAAUqT,QAAU,SAAUgkB,GACnC,IAAI/oB,EAAQnQ,KACRk5B,IAAc,QAAWA,EAAWhkB,SACpCgkB,EAAWhkB,QAAQlV,OAGvBA,KAAK+4B,WAAY,EACjB/4B,KAAKg5B,aAAal3B,QAAQf,SAAQ,SAAUo4B,GACxC,IACyB,mBAAdA,EAAEjkB,SAA0BikB,EAAEjkB,QAAQ/E,IAC7C,QAAWA,EAAM6oB,aAAcG,GAEnC,MAAOC,UAwDf1iB,EAAS7U,UAAUw3B,OAAS,SAAUA,EAAQl5B,QAC1B,IAAZA,IAAsBA,EAAU,IACpC,IAAIm5B,EAAiB,IAAID,EAAOr5B,KAAMG,GACtC,IAAKm5B,EAAe9zB,KAChB,MAAM,IAAIiN,MAAM,+CAAiD6mB,GAErE,OADAt5B,KAAKg5B,aAAav4B,KAAK64B,GACft5B,KAAKi5B,SAASK,EAAe9zB,MAAQ8zB,GAEjD5iB,EAAS7U,UAAU03B,UAAY,SAAUC,GACrC,OAAOA,EAAax5B,KAAKi5B,SAASO,IAAc,QAAOx5B,KAAKi5B,WAEzDviB,EAnJkB,ijBCf7B,SAAS+iB,EAAYhsB,GACjB,OAAOA,EAAMjI,KAEjB,SAASk0B,EAAYjsB,GAEjB,OADAA,EAAMC,KAAKsG,QAAU,WAAc,OAAOvG,GACnCA,EAAMC,KAEjB,SAASisB,EAAYlsB,GAIjB,OAHIA,EAAM2M,QAAU3M,EAAM2M,OAAOzS,OAC7B8F,EAAM9F,KAAO8F,EAAMC,KAAK/F,MAAO,QAAQ8F,EAAM2M,OAAOzS,KAAM8F,EAAM9F,OAE7D8F,EAAM9F,KAEjB,IAAIiyB,EAAgB,SAAUC,EAA4Bjc,GACtD,OAAO,SAAoBhK,GACvB,IAAIkmB,EAAWlmB,EAAYlG,KAG3B,GAAIosB,GAAYA,EAASroB,KAAOqoB,EAASt0B,MAAQs0B,EAASt0B,KAAKwW,MAAM,WAAY,CAC7E,IAAI+d,EAAc,IAClB,QAAKD,EAAUC,GACfA,EAAYtoB,KAAO,kBACnBqoB,EAAWC,EAEf,IAAI3f,EAASxG,EAAYwG,OACrB4f,EA/BG,SAAUvoB,GACrB,KAAK,QAASA,GACV,OAAO,EACX,IAAImM,EAAyB,MAAlBnM,EAAIhM,OAAO,GACtB,MAAO,CAAEzB,IAAK4Z,EAAOnM,EAAIwoB,UAAU,GAAKxoB,EAAKmM,KAAMA,GA2BlCsc,CAASJ,EAASroB,KAC3BA,EAAOuoB,EAAwBH,EAA2BxyB,QAAQ2yB,EAAOh2B,IAAK,CAAEyJ,MAAOqsB,IAAvEA,EAASroB,IAC7B,IAAKA,EACD,OAAO,KACX,IAAKooB,EAA2BM,UAAU1oB,GACtC,MAAM,IAAIgB,MAAM,gBAAkBhB,EAAM,eAAiBmC,EAAc,KAC3E,OAAOomB,GAAUA,EAAOpc,KAAOnM,GAAQ2I,GAAUA,EAAOggB,WAAcxc,KAAQnM,IAAI4oB,OAAO5oB,KAG7F6oB,EAAsB,SAAUC,GAChC,OAAO,SAA0B9sB,GAC7B,OAAQ8sB,EAAO9sB,IAAUA,EAAMgE,IAAMhE,EAAQA,EAAM2M,OAAS3M,EAAM2M,OAAOggB,UAAY,OAc7F,SAASI,EAAY/sB,GACjB,OAAOA,EAAM2M,OAAS3M,EAAM2M,OAAOjS,KAAK/F,OAAOqL,GAAkB,CAACA,GAEtE,SAASgtB,EAAgBhtB,GACrB,IAAI6L,EAAW7L,EAAM2M,QAAS,QAAO,GAAI3M,EAAM2M,OAAOd,UAAY,GAElE,OADAA,EAAS7L,EAAMjI,OAAQ,EAChB8T,EA2CJ,SAASohB,EAAmBjtB,GAE/B,IAA+BktB,EAAY3E,EA2BvC4E,EAAW,SAAUC,GAAK,OAAOA,EAAEC,SAAWD,EAAEtZ,OAEhDwZ,GAAqB,QAAQ,CAC7B,EAAC,QAAK,aAAc,SAAUF,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAE3iB,UAAW2iB,EAAE/oB,KAAM+oB,EAAEvE,UAC7F,EAAC,QAAK,cAAe,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAIA,EAAEG,WAAYH,EAAE/oB,MAAQ+oB,EAAEI,aAAcJ,EAAEvE,UACjH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAO,IAAIA,EAAEK,WAAe,GAAIL,EAAEvE,UACrH,EAAC,QAAK,YAAa,SAAUuE,GAAK,OAAO,IAAI,IAAWD,EAASC,IAAI,WAAc,OAAOA,EAAEM,WAAa,GAAIN,EAAEvE,OAAQuE,EAAEM,YACzH,EAAC,QAAK,eAAgB,SAAUN,GAAK,OAAO,IAAI,IAAWD,EAASC,GAAI,KAAU,CAACA,EAAEO,aAAcP,EAAEvE,YAGrG+E,GAAmB,QAAQ,CAC3B,EAAC,SAAK,QAAK,OAAQ,MAAW,SAAU5nB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO,KAAU,CAAC9N,EAAMzP,KAAMyP,EAAM6iB,UACjH,EAAC,SAAK,QAAK,OAAQ,MAAU,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,OAAO,QAAK9N,EAAMzP,KAAMyP,EAAMzP,IAAIlC,MAAM,GAAI,GAAI2R,EAAM6iB,UAClI,EAAC,SAAK,QAAK,OAAQ,MAAa,SAAU7iB,GAAS,OAAO,IAAI,IAAWA,EAAM8N,MAAO9N,EAAMzP,KA/BvErD,EA+BqF8S,EAAMzP,IA9B5GuM,EAAY,cAIT5P,EAAY,SAAM4P,GAAaA,EAAU0H,SAAStX,EAAI4P,EAAUuH,WAAc,YA0BiCrE,EAAM6iB,QA/BjH,IAAU31B,EACjB4P,MAiCJ+qB,GAAkB,QAAQ,CAC1B,EAAC,IAAApiB,IAAG,KAAa,SAAUqE,GAAK,OAAOA,IACvC,CA5BmB,SAAUtD,GAAO,SAAUA,EAAIsH,QAAStH,EAAI/B,YA4B5C6iB,GACnB,CA3BoB,SAAU9gB,GAC9B,SAAWA,EAAI6gB,UAAW7gB,EAAIsH,SAAWtH,EAAIkhB,UAAYlhB,EAAI+gB,YAAc/gB,EAAImhB,aAAenhB,EAAIihB,YA0B9EH,GACpB,CAxBiB,SAAU9gB,GAC3B,SAAUA,GAAOA,EAAIjW,OAAQ,QAASiW,EAAIjW,OAAQ,QAAQiW,EAAIjW,OAAQ,QAAWiW,EAAIjW,QAuBpEq3B,GACjB,EAAC,SAAI,GAAO,SAAUphB,GAAO,MAAM,IAAIxH,MAAM,2BAA4B,QAAUwH,QAInFshB,EAAO9tB,EAAMd,QAEjB,QADY,QAAQ4uB,GAAQA,GArDGZ,EAqDmBY,EArDPvF,EAqDavoB,EAAMkpB,eAAiB,GApDpEpjB,OAAOC,KAAKmnB,GAAc,IAAIhsB,KAAI,SAAU4S,GAAS,MAAO,CAC/DA,MAAOA,EACPvd,IAAK22B,EAAWpZ,GAChBzP,UAAMqC,EACNmiB,OAAQN,EAAgBzU,SAiDnB5S,IAAI2sB,GAcrB,IAAIE,EAA8B,WAC9B,SAASA,EAAaC,EAAS7mB,GAC3B5U,KAAKy7B,QAAUA,EACf,IArIyBC,EAqIrBhuB,EAAO1N,KACP4d,EAAO,WAAc,OAAO6d,EAAQ3a,KAAK,KACzCyZ,EAAS,SAAU9sB,GAAS,MAAsB,KAAfA,EAAMjI,MAM7CxF,KAAK27B,SAAW,CACZn2B,KAAM,CAACi0B,GACP/rB,KAAM,CAACgsB,GACPtf,OAAQ,CARZ,SAAuB3M,GACnB,OAAI8sB,EAAO9sB,GACA,KACJguB,EAAQ3a,KAAKpT,EAAKkuB,WAAWnuB,KAAWmQ,MAM/CjW,KAAM,CAACgyB,GAEPloB,IAAK,CAACmoB,EAAchlB,EAAmBgJ,IAEvCwc,UAAW,CAACE,EAAoBC,IAChCnsB,OAAQ,EAtJastB,EAsJK9mB,EAAkB8mB,aArJ7C,SAAuBjuB,GAC1B,IACIouB,EAAapuB,EAAMgE,KAAOhE,EAAMgE,IAAI4hB,WAAW,CAAEjU,SAAS,KAAa,GACvE0c,GAAe,SAAO,SAAO,QAAKruB,EAAMW,QAAU,GAAIytB,EAAUltB,KAAI,QAAK,SAFvD,SAAUpD,EAAQF,GAAM,OAAOqwB,EAAa9qB,WAAWvF,EAAI,KAAMoC,EAAMC,UAG7F,OAAOmuB,EACFz5B,OAAO05B,GACPntB,KAAI,SAAUksB,GAAK,MAAO,CAACA,EAAExvB,GAAIwvB,MACjCjsB,OAAO,KAAY,OAiJpB4L,MAAO,GAEPrS,KAAM,CAACqyB,GAEPlhB,SAAU,CAACmhB,GACX1iB,YAAa,CAAC2iB,IAgEtB,OA7DAc,EAAa35B,UAAUk6B,QAAU,SAAUv2B,EAAM7E,GAC7C,IAAIg7B,EAAW37B,KAAK27B,SAChBpc,EAAQoc,EAASn2B,IAAS,GAE9B,OAAI,QAASA,MAAU,QAAU7E,GACtB4e,EAAMnQ,OAAS,EAAImQ,EAAQA,EAAM,IACvC,QAAS/Z,KAAU,QAAW7E,IAEnCg7B,EAASn2B,GAAQ+Z,EACjBoc,EAASn2B,GAAM/E,KAAKE,GACb,WAAc,OAAOg7B,EAASn2B,GAAMga,OAAOmc,EAASn2B,GAAM0I,QAAQvN,EAAI,KAAO,YAJpF,GAaJ66B,EAAa35B,UAAUm6B,MAAQ,SAAUvuB,GACrC,IAAeguB,EAANz7B,KAAmBy7B,QAASE,EAA5B37B,KAA0C27B,SAC/CvhB,EAASpa,KAAK47B,WAAWnuB,GAC7B,GAAI2M,IAAWqhB,EAAQ3a,KAAK1G,OAAQjG,GAAW,GAC3C,OAAO,KAEX,IAAK,IAAItO,KAAO81B,EACZ,GAAKA,EAASj5B,eAAemD,GAA7B,CAEA,IAAIo2B,EAAQN,EAAS91B,GAAK+I,QAAO,SAAUstB,EAAUpS,GAAQ,OAAO,SAAUmD,GAAU,OAAOnD,EAAKmD,EAAQiP,MAAiB,MAC7HzuB,EAAM5H,GAAOo2B,EAAMxuB,GAEvB,OAAOA,GAEX+tB,EAAa35B,UAAU+5B,WAAa,SAAUnuB,GAE1C,IAAIjI,EAAOiI,EAAMjI,MAAQ,GAErB22B,EAAW32B,EAAKsd,MAAM,KAM1B,GAFoB,OAFFqZ,EAASC,OAGvBD,EAASC,MACTD,EAAS/sB,OAAQ,CACjB,GAAI3B,EAAM2M,OACN,MAAM,IAAI3H,MAAM,mFAAqFjN,EAAO,KAGhH,OAAO22B,EAASlpB,KAAK,KAEzB,OAAKxF,EAAM2M,QAEJ,QAAS3M,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KADjD,IAGfg2B,EAAa35B,UAAU2D,KAAO,SAAUiI,GACpC,IAAIjI,EAAOiI,EAAMjI,KACjB,IAA2B,IAAvBA,EAAK0I,QAAQ,OAAgBT,EAAM2M,OACnC,OAAO5U,EACX,IAAIo2B,GAAa,QAASnuB,EAAM2M,QAAU3M,EAAM2M,OAAS3M,EAAM2M,OAAO5U,KACtE,OAAOo2B,EAAaA,EAAa,IAAMp2B,EAAOA,GAE3Cg2B,EA5FsB,iTClL7Ba,EAA8B,WAC9B,SAASA,EAAaC,GAClBt8B,KAAKs8B,QAAUA,EAmDnB,OAjDAD,EAAax6B,UAAU06B,WAAa,SAAUC,GAE1C,OAAkC,KADlCA,EAAYA,GAAa,IACRtuB,QAAQ,MAAyC,IAA3BsuB,EAAUtuB,QAAQ,MAE7DmuB,EAAax6B,UAAUif,KAAO,SAAU2b,EAAaC,EAAMC,GAEvD,QADkB,IAAdA,IAAwBA,GAAY,GACnCF,GAA+B,KAAhBA,EAApB,CAEA,IAAIG,GAAQ,QAASH,GACjBj3B,EAAOo3B,EAAQH,EAAcA,EAAYj3B,KACzCxF,KAAKu8B,WAAW/2B,KAChBA,EAAOxF,KAAK03B,YAAYlyB,EAAMk3B,IAClC,IAAIjvB,EAAQzN,KAAKs8B,QAAQ92B,GACzB,GAAIiI,IAAUmvB,KAAWA,GAAUnvB,IAAUgvB,GAAehvB,EAAMC,OAAS+uB,IACvE,OAAOhvB,EAEN,GAAImvB,GAASD,EAAW,CACzB,IACIzZ,GADU,QAAOljB,KAAKs8B,SACJhzB,QAAO,SAAU2jB,GAAU,OAAOA,EAAO4P,mBAAmBC,UAAY7P,EAAO4P,mBAAmBC,SAAS5Z,QAAQ1d,MAIzI,OAHI0d,EAAQ9T,OAAS,GACjB,UAAkB,iDAAmD5J,EAAO,gBAAiB0d,EAAQvU,KAAI,SAAUqN,GAAS,OAAOA,EAAMxW,SAEtI0d,EAAQ,MAIvBmZ,EAAax6B,UAAU61B,YAAc,SAAUlyB,EAAMk3B,GACjD,IAAKA,EACD,MAAM,IAAIjqB,MAAM,sCAAwCjN,EAAO,KAKnE,IAJA,IAAIu3B,EAAY/8B,KAAK8gB,KAAK4b,GACtBM,EAAYx3B,EAAKsd,MAAM,KACvBma,EAAaD,EAAU5tB,OACvBiO,EAAI,EAAGyI,EAAUiX,EACd1f,EAAI4f,EAAY5f,IACnB,GAAqB,KAAjB2f,EAAU3f,IAAmB,IAANA,EAA3B,CAIA,GAAqB,MAAjB2f,EAAU3f,GAMd,MALI,IAAKyI,EAAQ1L,OACT,MAAM,IAAI3H,MAAM,SAAWjN,EAAO,0BAA4Bu3B,EAAUv3B,KAAO,KACnFsgB,EAAUA,EAAQ1L,YANlB0L,EAAUiX,EAWlB,IAAIG,EAAUF,EAAUl7B,MAAMub,GAAGpK,KAAK,KACtC,OAAO6S,EAAQtgB,MAAQsgB,EAAQtgB,MAAQ03B,EAAU,IAAM,IAAMA,GAE1Db,EArDsB,oWCW7Bc,EAA6B,WAE7B,SAASA,EAAY5xB,GACjB,OAAO4xB,EAAY37B,OAAO+J,GAAU,IA4FxC,OAlFA4xB,EAAY37B,OAAS,SAAU47B,GAC3BA,EAAYD,EAAYE,aAAaD,GAAa,IAAIA,EAAcA,EACpE,IAAI3vB,GAAQ,SAAQ,QAAQ2vB,EAAWD,EAAYt7B,YAMnD,OALAu7B,EAAUppB,QAAU,WAAc,OAAOvG,GACzCA,EAAMC,KAAO0vB,EACb3vB,EAAMovB,mBAAqB,CACvBC,SAAU,eAAgBrvB,EAAMjI,OAE7BiI,GAaX0vB,EAAYt7B,UAAUqX,GAAK,SAAUokB,GACjC,OAAOt9B,OAASs9B,GAAOt9B,KAAK0N,OAAS4vB,GAAOt9B,KAAKsL,QAAUgyB,GAM/DH,EAAYt7B,UAAUyJ,IAAM,WACxB,KAAKtL,KAAKoa,QAAYpa,KAAKoa,kBAAkBpa,KAAKokB,aAC9C,OAAOpkB,KAAKwF,KAChB,IAAIA,EAAOxF,KAAKoa,OAAO9O,MACvB,OAAO9F,EAAOA,EAAO,IAAMxF,KAAKwF,KAAOxF,KAAKwF,MAOhD23B,EAAYt7B,UAAU+b,KAAO,WACzB,OAAQ5d,KAAKoa,QAAUpa,KAAKoa,OAAOwD,QAAW5d,MAWlDm9B,EAAYt7B,UAAUwxB,WAAa,SAAUzyB,GAGzC,QAFAA,GAAO,QAASA,EAAM,CAAEwe,SAAS,EAAMme,aAAc,QAC/Bne,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOiZ,cAAiB,IAExEjxB,QAAO,QAAOpC,KAAKoO,SACnB9E,QAAO,SAAU0F,GAAS,OAAQpO,EAAK28B,cAAgB38B,EAAK28B,aAAa76B,eAAesM,EAAM3D,QASvG8xB,EAAYt7B,UAAU4xB,UAAY,SAAUpoB,EAAIzK,GAE5C,YADa,IAATA,IAAmBA,EAAO,IACrBZ,KAAKyR,KAAOzR,KAAKyR,IAAIgiB,UAAUpoB,EAAIzK,KACxC,SAAK,QAAOZ,KAAKoO,SAAS,QAAO,KAAM/C,KACtCzK,EAAKwe,SAAWpf,KAAKoa,QAAUpa,KAAKoa,OAAOqZ,UAAUpoB,IAE9D8xB,EAAYt7B,UAAUiT,SAAW,WAC7B,OAAO9U,KAAKsL,OAGhB6xB,EAAYE,aAAe,SAAUD,GACjC,OAAO,QAAWA,KAA+C,IAAjCA,EAA2B,iBAG/DD,EAAYK,mBAAqB,SAAUvjB,GAAO,OAAO,QAAWA,EAAa,UAEjFkjB,EAAYM,QAAU,SAAUxjB,GAAO,OAAO,QAASA,EAAwB,qBACxEkjB,EA/FqB,kPCZ5BO,EAAmC,WACnC,SAASA,EAAkBhpB,EAAQsY,EAAQ+O,EAAS4B,GAChD39B,KAAK0U,OAASA,EACd1U,KAAKgtB,OAASA,EACdhtB,KAAK+7B,QAAUA,EACf/7B,KAAK29B,UAAYA,EACjB39B,KAAK49B,MAAQ,GA4EjB,OA1EAF,EAAkB77B,UAAUqT,QAAU,WAClClV,KAAK49B,MAAQ,IAEjBF,EAAkB77B,UAAU6X,SAAW,SAAU0jB,GAC7C,IAAIQ,EAAQ59B,KAAK49B,MACbnwB,EAAQ,WAAmB2vB,GAC3B53B,EAAOiI,EAAMjI,KACjB,KAAK,QAASA,GACV,MAAM,IAAIiN,MAAM,gCACpB,GAAIzS,KAAKgtB,OAAOtqB,eAAe8C,KAAS,QAAQo4B,EAAMjvB,KAAI,QAAK,SAAUnJ,GACrE,MAAM,IAAIiN,MAAM,UAAYjN,EAAO,wBAGvC,OAFAo4B,EAAMn9B,KAAKgN,GACXzN,KAAK69B,QACEpwB,GAEXiwB,EAAkB77B,UAAUg8B,MAAQ,WAchC,IAbA,IAAI1tB,EAAQnQ,KACRqrB,EAAKrrB,KAAM49B,EAAQvS,EAAGuS,MAAO5Q,EAAS3B,EAAG2B,OAAQ+O,EAAU1Q,EAAG0Q,QAC9D+B,EAAa,GACjBC,EAAU,GACVC,EAAsB,GAClBC,EAAW,SAAUz4B,GAAQ,OAAO2K,EAAM6c,OAAOtqB,eAAe8C,IAAS2K,EAAM6c,OAAOxnB,IACtF04B,EAAkB,WACdJ,EAAW1uB,QACXe,EAAMwtB,UAAU58B,SAAQ,SAAUo9B,GAC9B,OAAOA,EAAS,aAAcL,EAAWnvB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,aAI1EkwB,EAAMxuB,OAAS,GAAG,CACrB,IAAI3B,EAAQmwB,EAAM37B,QACdm8B,EAAS3wB,EAAMjI,KACfc,EAASy1B,EAAQC,MAAMvuB,GACvB4wB,EAAYN,EAAQ7vB,QAAQT,GAChC,GAAInH,EAAJ,CACI,IAAIg4B,EAAgBL,EAASG,GAC7B,GAAIE,GAAiBA,EAAc94B,OAAS44B,EACxC,MAAM,IAAI3rB,MAAM,UAAY2rB,EAAS,wBAEzC,IAAIG,EAAsBN,EAASG,EAAS,OACxCG,GAEAv+B,KAAK0U,OAAOkC,cAAc4nB,WAAWD,GAEzCvR,EAAOoR,GAAU3wB,EACjBzN,KAAKy+B,YAAYhxB,GACb4wB,GAAa,GACbN,EAAQve,OAAO6e,EAAW,GAC9BP,EAAWr9B,KAAKgN,OAdpB,CAiBA,IAAIixB,EAAOV,EAAoBI,GAE/B,GADAJ,EAAoBI,GAAUR,EAAMxuB,OAChCivB,GAAa,GAAKK,IAASd,EAAMxuB,OAKjC,OAFAwuB,EAAMn9B,KAAKgN,GACXywB,IACOlR,EAEFqR,EAAY,GACjBN,EAAQt9B,KAAKgN,GAEjBmwB,EAAMn9B,KAAKgN,IAGf,OADAywB,IACOlR,GAEX0Q,EAAkB77B,UAAU48B,YAAc,SAAUhxB,GAChD,IAAIA,EAAMkxB,UAAalxB,EAAMgE,IAA7B,CAEA,IAAImtB,EAAW5+B,KAAK0U,OAAOuC,WAAW0F,MACtCiiB,EAASriB,KAAKqiB,EAASC,eAAer9B,OAAOiM,MAE1CiwB,EAlF2B,sbCQlCoB,EAA+B,WAE/B,SAASA,EAAcpqB,GACnB1U,KAAK0U,OAASA,EACd1U,KAAKgtB,OAAS,GAEdhtB,KAAK29B,UAAY,GACjB39B,KAAKy7B,QAAU,IAAI,IAAaz7B,KAAKgtB,QACrChtB,KAAK+7B,QAAU,IAAI,IAAa/7B,KAAKy7B,QAAS/mB,EAAOE,mBACrD5U,KAAK++B,WAAa,IAAI,IAAkBrqB,EAAQ1U,KAAKgtB,OAAQhtB,KAAK+7B,QAAS/7B,KAAK29B,WAChF39B,KAAKg/B,gBAmJT,OAhJAF,EAAcj9B,UAAUm9B,cAAgB,YAUvBh/B,KAAKi/B,MAAQj/B,KAAK++B,WAAWrlB,SATvB,CACflU,KAAM,GACNiM,IAAK,IACL+I,MAAO,KACPpM,OAAQ,CACJ,IAAK,CAAE5J,MAAO,KAAM0K,KAAM,OAAQye,SAAS,IAE/CgR,UAAU,KAGRvE,UAAY,MAGtB0E,EAAcj9B,UAAUqT,QAAU,WAC9B,IAAI/E,EAAQnQ,KACZA,KAAK++B,WAAW7pB,UAChBlV,KAAK29B,UAAY,GACjB39B,KAAK0Q,MAAM3P,SAAQ,SAAU0M,GAAS,OAAO0C,EAAMO,IAAIjD,IAAU0C,EAAMquB,WAAW/wB,OAgCtFqxB,EAAcj9B,UAAUq9B,gBAAkB,SAAUf,GAEhD,OADAn+B,KAAK29B,UAAUl9B,KAAK09B,GACb,YACH,QAAWn+B,KAAK29B,UAAhB,CAA2BQ,IAC7B76B,KAAKtD,OAWX8+B,EAAcj9B,UAAU+b,KAAO,WAC3B,OAAO5d,KAAKi/B,OAchBH,EAAcj9B,UAAU6X,SAAW,SAAUylB,GACzC,OAAOn/B,KAAK++B,WAAWrlB,SAASylB,IAGpCL,EAAcj9B,UAAUu9B,gBAAkB,SAAU3xB,GAChD,IAAI0C,EAAQnQ,KACRyb,EAAMzb,KAAK0Q,MAAM/B,KAAI,SAAUyO,GAAK,OAAOA,EAAEpJ,aAC7CqrB,EAAc,SAAUrS,GACxB,IAAIsS,EAAY7jB,EAAInS,QAAO,SAAU8T,GAAK,OAAqC,IAA9B4P,EAAO9e,QAAQkP,EAAEhD,WAClE,OAA4B,IAArBklB,EAAUlwB,OAAekwB,EAAYA,EAAUl9B,OAAOi9B,EAAYC,KAEzE12B,EAAWy2B,EAAY,CAAC5xB,IACxB8xB,EAAe,CAAC9xB,GAAOrL,OAAOwG,GAAUoX,UAW5C,OAVAuf,EAAax+B,SAAQ,SAAUksB,GAC3B,IAAI2R,EAAWzuB,EAAMuE,OAAOuC,WAAW0F,MAEvCiiB,EACKjiB,QACArT,QAAO,QAAO,QAAS2jB,IACvBlsB,SAAQ,SAAUwb,GAAQ,OAAOqiB,EAASY,WAAWjjB,aAEnDpM,EAAM6c,OAAOC,EAAOznB,SAExB+5B,GAWXT,EAAcj9B,UAAU28B,WAAa,SAAU/B,GAC3C,IAAIxP,EAASjtB,KAAK0Q,IAAI+rB,GACtB,IAAKxP,EACD,MAAM,IAAIxa,MAAM,sCAAwCgqB,GAC5D,IAAIgD,EAAqBz/B,KAAKo/B,gBAAgBnS,EAAOjZ,WAIrD,OAHAhU,KAAK29B,UAAU58B,SAAQ,SAAUo9B,GAC7B,OAAOA,EAAS,eAAgBsB,EAAmB9wB,KAAI,SAAUyO,GAAK,OAAOA,EAAE1P,YAE5E+xB,GAEXX,EAAcj9B,UAAU6O,IAAM,SAAU+rB,EAAaC,GACjD,IAAIvsB,EAAQnQ,KACZ,GAAyB,IAArBgC,UAAUoN,OACV,OAAOmE,OAAOC,KAAKxT,KAAKgtB,QAAQre,KAAI,SAAUnJ,GAAQ,OAAO2K,EAAM6c,OAAOxnB,GAAMkI,QACpF,IAAIgyB,EAAQ1/B,KAAKy7B,QAAQ3a,KAAK2b,EAAaC,GAC3C,OAAQgD,GAASA,EAAMhyB,MAAS,MAYpCoxB,EAAcj9B,UAAUiV,UAAY,SAAU6oB,EAAUC,GACpD,OAAO5/B,KAAK+7B,QAAQA,QAAQ4D,EAAUC,IAEnCd,EA7JuB,2SCsB9Be,EAA6B,WAe7B,SAASA,EAAYC,EAAgBC,EAAaC,EAASC,GACvDjgC,KAAK8/B,eAAiBA,EACtB9/B,KAAK+/B,YAAcA,EACnB//B,KAAK+/B,YAAcA,EACnB//B,KAAKggC,SAAU,QAAO,GAAIA,GAAW,IACrChgC,KAAKigC,UAAW,QAAO,GAAIA,GAAY,IACvCjgC,KAAKkgC,YAAcJ,EAAerE,QAAQ3a,KAAKif,EAAa//B,KAAKigC,SAASE,UAsF9E,OAnFAN,EAAYh+B,UAAU2D,KAAO,WACzB,OAAQxF,KAAKkgC,aAAelgC,KAAKkgC,YAAY16B,MAASxF,KAAK+/B,aAG/DF,EAAYh+B,UAAU4qB,WAAa,WAC/B,OAAOzsB,KAAK+/B,aAGhBF,EAAYh+B,UAAUuM,OAAS,WAC3B,OAAOpO,KAAKggC,SAGhBH,EAAYh+B,UAAU4W,OAAS,WAC3B,OAAOzY,KAAKkgC,aAGhBL,EAAYh+B,UAAU4L,MAAQ,WAC1B,OAAOzN,KAAKkgC,aAAelgC,KAAKkgC,YAAYxyB,MAGhDmyB,EAAYh+B,UAAU1B,QAAU,WAC5B,OAAOH,KAAKigC,UAGhBJ,EAAYh+B,UAAUu+B,OAAS,WAC3B,SAAUpgC,KAAKkgC,cAAelgC,KAAKkgC,YAAYxyB,OAGnDmyB,EAAYh+B,UAAUw+B,MAAQ,WAC1B,OAAQrgC,KAAKqF,SAGjBw6B,EAAYh+B,UAAUwD,MAAQ,WAC1B,IAAIq3B,EAAO18B,KAAKG,UAAUggC,SAC1B,IAAKngC,KAAKkgC,aAAiBxD,EAAM,CAC7B,IAAIF,EAAYE,EAAKl3B,KAAOk3B,EAAKl3B,KAAOk3B,EACxC,MAAO,sBAAwB18B,KAAKwF,OAAS,iBAAmBg3B,EAAY,IAEhF,OAAKx8B,KAAKkgC,YAELlgC,KAAKkgC,YAAYxyB,UAAtB,EACW,UAAY1N,KAAKwF,OAAS,8BAF1B,kBAAoBxF,KAAKwF,OAAS,KAIjDq6B,EAAYh+B,UAAUiT,SAAW,WAC7B,MAAO,IAAM9U,KAAKwF,OAAS,KAAM,QAAUxF,KAAKoO,WAQpDyxB,EAAYh+B,UAAUy+B,UAAY,SAAU7yB,GACxC,OAAO,IAAIoyB,EAAY7/B,KAAK8/B,eAAgBryB,EAAOzN,KAAKggC,QAAShgC,KAAKigC,WAS1EJ,EAAYh+B,UAAU0+B,WAAa,SAAUnyB,EAAQ2G,QACjC,IAAZA,IAAsBA,GAAU,GACpC,IAAI8d,EAAY9d,EAAU3G,GAAS,QAAO,GAAIpO,KAAKggC,QAAS5xB,GAC5D,OAAO,IAAIyxB,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAalN,EAAW7yB,KAAKigC,WASlFJ,EAAYh+B,UAAU2+B,YAAc,SAAUrgC,EAAS4U,QACnC,IAAZA,IAAsBA,GAAU,GACpC,IAAI0rB,EAAU1rB,EAAU5U,GAAU,QAAO,GAAIH,KAAKigC,SAAU9/B,GAC5D,OAAO,IAAI0/B,EAAY7/B,KAAK8/B,eAAgB9/B,KAAK+/B,YAAa//B,KAAKggC,QAASS,IAGhFZ,EAAYa,MAAQ,SAAUzmB,GAC1B,OAAOA,GAAOA,EAAIxM,SAAU,QAASwM,EAAIxM,SAAW,QAASwM,EAAIxM,SAAU,QAASwM,EAAIxM,MAAMjI,QAE3Fq6B,EA3GqB,iYCf5Bc,EAA6B,WAC7B,SAASA,EAAY1U,GACjBjsB,KAAKisB,WAAaA,EA2EtB,OAzEA0U,EAAY9+B,UAAU++B,mBAAqB,SAAUC,GACjD,IAAI1wB,EAAQnQ,KAEZ,OADmBA,KAAKisB,WAAWvX,OAAOoY,kBACtB9iB,WACf82B,WAAWD,GACXlyB,KAAI,SAAUO,GAAQ,OAAOiB,EAAM4wB,WAAW7xB,MAC9CN,OAAO,KAAS,IAChBtF,OAAO,OAWhBq3B,EAAY9+B,UAAUk/B,WAAa,SAAUC,GACzC,IAAI/U,EAAajsB,KAAKisB,WAClBvd,EAAcud,EAAWvd,cAEzBuyB,EAAgBjhC,KAAKkhC,iBAAiBF,EAAUtyB,EAAaud,GACjE,IAAKgV,EACD,MAAO,GACX,IA4DWE,EA5DPC,EAAkB,CAClBnV,WAAYA,EACZnG,QAASmG,EAAW9rB,UAAU2lB,SAkBlC,OAAOmb,EACFtyB,KAjBqB,SAAUkF,GAMhC,OAJcA,EAAKqP,QAAQxU,EAAaud,GAEZ+U,EAASK,kBAAkB77B,MAElCmJ,KAAI,SAAUJ,GAC/B,IAAI0xB,GAAW,QAAO,CAClB38B,KAAMuQ,EAAKvQ,KACXg+B,UAAW,CAAEN,SAAUA,EAASx7B,KAAMqL,QAAStC,IAChD6yB,GACC3zB,EAAQuzB,EAASK,kBAAkBv+B,QAAU,UAA4ByL,EAAKd,MAAMC,KAAO,KAC3F6zB,EAAiB,IAAI,IAAetV,EAAYxe,EAAOoG,EAAMosB,GACjE,MAAO,CAAEpsB,KAAMA,EAAMtF,KAAMA,EAAMgzB,eAAgBA,SAKpD3yB,OAAO,KAAS,IAChB4c,MAqCM2V,EArCSH,EAASQ,iBAsCR,IAArBL,IAA+BA,GAAmB,GAC/C,SAA+B1O,EAAGlV,GACrC,IAAIkkB,EAASN,GAAoB,EAAI,EACjCO,GAAcjP,EAAElkB,KAAKd,MAAMtF,KAAKiH,OAASmO,EAAEhP,KAAKd,MAAMtF,KAAKiH,QAAUqyB,EACzE,OAAsB,IAAfC,EAAmBA,EAAankB,EAAE1J,KAAKzM,SAAWqrB,EAAE5e,KAAKzM,YAzC3DuH,KAAI,SAAU8E,GAAS,OAAOA,EAAM8tB,mBAa7CZ,EAAY9+B,UAAUq/B,iBAAmB,SAAUF,EAAUtyB,EAAaud,GACtE,IAAI0V,EAAWX,EAASY,YAAc,WAElC/6B,EAAe7G,KAAKisB,WAAWvX,OAAOoY,kBAE1C,OADiB6U,EAAW,CAAC96B,GAAgB,CAAC7G,KAAKisB,WAAYplB,IAE1D8H,KAAI,SAAUkzB,GAAO,OAAOA,EAAIC,SAASd,EAASx7B,SAClD8D,QAAO,QAAgB,KAAS,uBAAyB03B,EAASx7B,OAClEoJ,OAAO,KAAS,IAChBtF,QAAO,SAAUuK,GAAQ,OAAOA,EAAKqP,QAAQxU,EAAaud,OAE5D0U,EA7EqB,+PCDzB,SAASoB,EAAWt0B,EAAOu0B,EAAW/V,GACzC,IAAIgW,GAAU,QAASD,GAAa,CAACA,GAAaA,EAYlD,UADe,QAAWC,GAAWA,EAVrC,SAAoBhV,GAEhB,IADA,IAAIiV,EAAcD,EACT5kB,EAAI,EAAGA,EAAI6kB,EAAY9yB,OAAQiO,IAAK,CACzC,IAAIwF,EAAO,IAAI,KAAKqf,EAAY7kB,IAChC,GAAKwF,GAAQA,EAAKK,QAAQ+J,EAAOznB,QAAYqd,GAAQqf,EAAY7kB,KAAO4P,EAAOznB,KAC3E,OAAO,EAGf,OAAO,IAGMiI,EAAOwe,GAK5B,IAAIkW,EAAgC,WAChC,SAASA,EAAeC,EAASC,EAAW7hC,EAAU8hC,EAAeC,EAAwBpiC,QACzE,IAAZA,IAAsBA,EAAU,IACpCH,KAAKoiC,QAAUA,EACfpiC,KAAKqiC,UAAYA,EACjBriC,KAAKQ,SAAWA,EAChBR,KAAKsiC,cAAgBA,EACrBtiC,KAAKuiC,uBAAyBA,EAC9BviC,KAAKwiC,YAAc,EACnBxiC,KAAKyiC,eAAgB,EACrBziC,KAAKoH,SAAWjH,EAAQiH,UAAY,EACpCpH,KAAKsD,KAAOnD,EAAQmD,MAAQ,KAC5BtD,KAAK0iC,YAAcviC,EAAQuiC,YAqF/B,OApEAP,EAAetgC,UAAU8gC,eAAiB,SAAUC,EAAOZ,EAAW/V,GAClE,IAAkB,IAAd+V,EACA,OAAOY,EACX,IAAIpN,EAAWoN,EAAMt5B,QAAO,SAAUiF,GAAQ,OAAOwzB,EAAWxzB,EAAKd,MAAOu0B,EAAW/V,MACvF,OAAOuJ,EAASpmB,OAASomB,EAAW,MAgBxC2M,EAAetgC,UAAUghC,yBAA2B,WAChD,OAAO,QAAO7iC,KAAKoiC,QAAQp4B,WAAW84B,iBAAiB,WAAc,OAAO,MAiBhFX,EAAetgC,UAAUkhC,kBAAoB,SAAUr0B,EAAaud,GAChE,IAAI9b,EAAQnQ,KACR8P,GAAW,QAAO9P,KAAK6iC,2BAA4B7iC,KAAKsiC,eAE5D,OADY,QAAOtiC,KAAKoiC,QAAQp4B,WAAW84B,iBAC9Bl0B,QAAO,SAAUo0B,EAAIC,GAG9B,IAAIC,EAAcD,EAASngC,QAAU,UACjCqF,EAAOuG,EAAYu0B,EAASz9B,OAAS,GACrCo9B,EAAQM,EAAc/6B,EAAO,EAAC,QAAKA,IAEvC,OADA66B,EAAGC,EAASz9B,MAAQ2K,EAAMwyB,eAAeC,EAAO9yB,EAASmzB,EAASz9B,MAAOymB,GAClE+W,IACR,KAQPb,EAAetgC,UAAUqhB,QAAU,SAAUxU,EAAaud,GACtD,IAAI/I,EAAUljB,KAAK+iC,kBAAkBr0B,EAAaud,GAGlD,OADiB,QAAO/I,GAASigB,MAAM,MACnBjgB,EAAU,MAElCif,EAAetgC,UAAU28B,WAAa,WAClCx+B,KAAKuiC,uBAAuBviC,MAC5BA,KAAKyiC,eAAgB,GAElBN,EAjGwB,GAqG5B,SAASiB,EAAUtP,EAAUhH,EAAmBuV,GAEnD,IACIgB,GADoBvP,EAASwP,iBAAmBxP,EAASwP,kBAAoB,IACnDjB,EAAU78B,MAAQ,GAC5C+9B,GAAe,QAAWF,GAG9B,SAASG,EAAmBC,EAAajjC,EAAUL,QAC/B,IAAZA,IAAsBA,EAAU,IACpC,IAAI6pB,EAAiB,IAAImY,EAAerV,EAAmBuV,EAAW7hC,EAAUijC,EAAaF,EAAcpjC,GAE3G,OADAkjC,EAAM5iC,KAAKupB,GACJA,EAAewU,WAAWl7B,KAAK0mB,GAE1C,OAPA8J,EAASuO,EAAU78B,MAAQg+B,EAOpBA,2FCpJX,IAAIE,EAQAC,2BAPJ,SAAWD,GACPA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAA4B,OAAI,GAAK,SACzDA,EAAoBA,EAAyB,IAAI,GAAK,MACtDA,EAAoBA,EAA6B,QAAI,GAAK,UAC1DA,EAAoBA,EAA2B,MAAI,GAAK,QAL5D,CAMGA,IAAwBA,EAAsB,KAEjD,SAAWC,GACPA,EAAoBA,EAAgC,WAAI,GAAK,aAC7DA,EAAoBA,EAA2B,MAAI,GAAK,QAF5D,CAGGA,IAAwBA,EAAsB,8HCP7CC,2LACJ,SAAWA,GAOPA,EAAWA,EAAuB,WAAI,GAAK,aAM3CA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAoB,QAAI,GAAK,UAWxCA,EAAWA,EAAoB,QAAI,GAAK,UAMxCA,EAAWA,EAAkB,MAAI,GAAK,QApC1C,CAqCGA,IAAeA,EAAa,KAG/B,IAAIv4B,EAAK,EACLw4B,EAA2B,WAC3B,SAASA,EAAU30B,EAAM40B,EAASC,GAE9B/jC,KAAKmb,IAAM9P,IACXrL,KAAKkP,KAAOA,EACZlP,KAAK8jC,QAAUA,EACf9jC,KAAK+jC,OAASA,EA4DlB,OAzDAF,EAAUG,mBAAqB,SAAU/pB,GACrC,OAAOA,GAA2B,mBAAbA,EAAIlP,OAAuB,IAAAmO,IAAG2qB,EAAH,CAAc5pB,EAAIyN,uBAGtEmc,EAAUI,WAAa,SAAUF,EAAQ5jC,GACrC,IACI+jC,EAAY,IAAIL,EAAUD,EAAWO,WAD3B,+DACgDJ,GAI9D,OAHI5jC,GAAWA,EAAQikC,aACnBF,EAAUE,YAAa,GAEpBF,GAGXL,EAAUO,WAAa,SAAUL,GAC7B,OAAOF,EAAUI,WAAWF,EAAQ,CAAEK,YAAY,KAGtDP,EAAUQ,QAAU,SAAUN,GAE1B,OAAO,IAAIF,EAAUD,EAAWU,QADlB,6BACoCP,IAGtDF,EAAUzK,QAAU,SAAU2K,GAE1B,OAAO,IAAIF,EAAUD,EAAWW,QADlB,6BACoCR,IAGtDF,EAAUW,QAAU,SAAUT,GAE1B,OAAO,IAAIF,EAAUD,EAAWa,QADlB,kCACoCV,IAGtDF,EAAUa,QAAU,SAAUX,GAE1B,OAAO,IAAIF,EAAUD,EAAWe,MADlB,yBACkCZ,IAWpDF,EAAUe,UAAY,SAAUb,GAC5B,OAAO,IAAA7qB,IAAG2qB,EAAH,CAAcE,GAAUA,EAASF,EAAUa,QAAQX,IAE9DF,EAAUhiC,UAAUiT,SAAW,WAC3B,IAA6BqkB,EACzB4K,GADyB5K,EACHn5B,KAAK+jC,SADgB5K,EAAErkB,WAAavB,OAAO1R,UAAUiT,SAAWqkB,EAAErkB,YAAa,QAAUqkB,GAE/G9N,EAAKrrB,KACT,MAAO,6BADcqrB,EAAGlQ,IACoB,UADRkQ,EAAGnc,KACwB,cADRmc,EAAGyY,QAC+B,aAAeC,EAAS,KAErHF,EAAUhiC,UAAUgjC,UAAY,WAC5B,OAAO,SAAO,QAAgB7kC,MAAO,CAAE0nB,qBAAsB1nB,QAE1D6jC,EAlEmB,oMC1C1BiB,EAEA,SAA6Bt/B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QACpG,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5CllC,KAAKwF,KAAOA,EACZxF,KAAK4hC,UAAYA,EACjB5hC,KAAK+kC,UAAYA,EACjB/kC,KAAKqhC,kBAAoBA,EACzBrhC,KAAKwhC,YAAcA,EACnBxhC,KAAKglC,iBAAmBA,EACxBhlC,KAAKilC,gBAAkBA,EACvBjlC,KAAKklC,YAAcA,gsBCVvBC,EAAiB,CACjBrf,QAAS,KACTmG,WAAY,KACZqV,UAAW,GACXh+B,KAAM,MAEN8hC,EAAgC,WAChC,SAASA,EAAenZ,EAAYoZ,EAAcrb,EAAgB7pB,GAC9D,IAAIgQ,EAAQnQ,KACZA,KAAKisB,WAAaA,EAClBjsB,KAAKqlC,aAAeA,EACpBrlC,KAAKgqB,eAAiBA,EACtBhqB,KAAKG,QAAUA,EACfH,KAAKslC,aAAe,WAAc,OAAOn1B,EAAMjB,KAAK0yB,YAAc,UAA4BzxB,EAAMhQ,QAAQ8rB,WAAWsZ,YACvHvlC,KAAKG,SAAU,QAASA,EAASglC,GACjCnlC,KAAKkP,KAAO8a,EAAeqY,UAyK/B,OArJA+C,EAAenJ,MAAQ,SAAUoH,EAAOmC,GAGpC,OAAOnC,EAAMz0B,QADU,SAAU8vB,EAAM+G,GAAY,OAAO/G,EAAK3zB,MAAK,WAAc,OAAO06B,EAASC,kBAC5DF,GAAW,gBAarDJ,EAAeO,YAAc,SAAUtC,EAAOuC,GAC1C,IAAK,IAAI32B,EAAM,EAAGA,EAAMo0B,EAAMj0B,OAAQH,IAAO,CACzC,IAAIib,EAAamZ,EAAMp0B,GAAKy2B,aAC5B,IAAI,QAAUxb,GAAa,CACvB,IAAI2b,EAAiBxC,EAAMvhC,MAAMmN,EAAM,GACvC,OAAOm2B,EAAenJ,MAAM4J,EAAgB3b,GAAYnf,KAAK66B,IAGrE,OAAOA,KAKXR,EAAeU,YAAc,SAAUzC,GACnCA,EAAMtiC,SAAQ,SAAU8S,GAAQ,OAAOA,EAAK6xB,iBAEhDN,EAAevjC,UAAUkkC,SAAW,SAAU7Y,GAC1CltB,KAAKisB,WAAWvX,OAAOmC,aAAamvB,qBAApChmC,CAA0DktB,IAE9DkY,EAAevjC,UAAU6jC,WAAa,WAClC,IAAIv1B,EAAQnQ,KACR6T,EAAO7T,KAAKgqB,eAChB,IAAInW,EAAK4uB,cAAT,CAEA,IAAIwD,EAAajmC,KAAKkmC,yBACtB,GAAID,EACA,OAAOA,EACX,IAAI9lC,EAAUH,KAAKG,QACnB,yBAA0BH,KAAMA,KAAKisB,WAAY9rB,GACjD,IAEIgmC,EAAc,SAAUjZ,GAAO,OAAOrZ,EAAKwuB,UAAU4C,gBAAgB90B,EAA/B0D,CAAsCqZ,IAC5EkZ,EAAe,SAAU9/B,GAAU,OAAOuN,EAAKwuB,UAAU2C,iBAAiB70B,EAAhC0D,CAAuCvN,IACrF,IACI,IAAIA,EALkCuN,EAAKrT,SAASuB,KAAK5B,EAAQmD,KAAM6M,EAAM8b,WAAY9b,EAAMk1B,cAM/F,OAAKrlC,KAAKkP,KAAKg2B,cAAe,QAAU5+B,GAC7BA,EAAO+b,OANH,SAAU6K,GAAO,OAAO,cAAoBA,GAAK2X,eAM1B95B,KAAKq7B,EAAcD,GAG9CC,EAAa9/B,GAG5B,MAAO4mB,GAEH,OAAOiZ,EAAY,cAAoBjZ,IAE3C,QACQrZ,EAAK6uB,eAAiB7uB,EAAK2uB,aAAe3uB,EAAK6uB,aAC/C7uB,EAAK2qB,gBAajB4G,EAAevjC,UAAUwkC,iBAAmB,SAAU//B,GAClD,IAAI6J,EAAQnQ,KAEZ,OADiBA,KAAKkmC,4BAIlB,QAAU5/B,GAEHA,EAAOyE,MAAK,SAAU/G,GAAO,OAAOmM,EAAMk2B,iBAAiBriC,OAEtE,qBAAsBsC,EAAQtG,KAAKisB,WAAYjsB,KAAKG,UAErC,IAAXmG,EAEO,YAAkB,2BAA2Bu+B,aAEpC,IAAA3rB,IAAG,IAEnBotB,CAAchgC,GAEP,eAAqBA,GAAQu+B,iBAFxC,KASJO,EAAevjC,UAAUqkC,uBAAyB,WAC9C,IAAIxxB,EAAS1U,KAAKisB,WAAWvX,OAE7B,OAAIA,EAAOqkB,UACA,YAAkB,sBAAwBrkB,EAAOyG,IAAM,gCAAgC0pB,YAE9F7kC,KAAKisB,WAAWsa,SACT,cAAoB1B,YAI3B7kC,KAAKslC,eAEE,eAAqBtlC,KAAKG,QAAQ2lB,WAAW+e,iBAFxD,GAKJO,EAAevjC,UAAUiT,SAAW,WAChC,IAAe3U,EAANH,KAAmBG,QAAS6pB,EAA5BhqB,KAAgDgqB,eACrDzpB,GAAQ,QAAM,qBAAN,CAA4BJ,IAAY,WAAY0Q,GAAU,QAAM,+BAAN,CAAsC1Q,KAAY,QAAM,oBAAN,CAA2BA,IAAY,UAAWqF,GAAO,QAAWwkB,EAAexpB,UAC/M,OAAOD,EAAQ,aAAesQ,EAAU,MAAO,QAAU,IAAKrL,IAMlE4/B,EAAeoB,cAAgB,SAAU3yB,GAAQ,OAAO,SAAUvN,GAC9D,OAAOuN,EAAKwyB,iBAAiB//B,KAMjC8+B,EAAeqB,oBAAsB,SAAU5yB,GAAQ,OAAO,SAAUvN,IACpE,QAAUA,IAAWA,EAAO+b,OAAM,SAAU6K,GAAO,OAAOrZ,EAAKkyB,SAAS,cAAoB7Y,SAOhGkY,EAAesB,UAAY,SAAU7yB,GAAQ,OAAO,SAAUxO,GAAS,OAAOwO,EAAKkyB,SAAS1gC,KAC5F+/B,EAAeuB,aAAe,SAAU9yB,GAAQ,OAAO,SAAUxO,GAAS,OAAO,QAAgBA,KACjG+/B,EAAewB,YAAc,SAAU/yB,GAAQ,OAAO,SAAUxO,GAC5D,MAAMA,IAEH+/B,EAlLwB,qgBCXnC,SAASyB,EAAmBj3B,GACxBA,EAAMk3B,cAAc,cAAoB,IAAUl3B,EAAM8E,QAAS,IACjE9E,EAAMk3B,cAAc,cAAoB,IAAYl3B,GAAQ,IAC5DA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,GAAQ,IAChEA,EAAMk3B,cAAc,cAAoB,eAAgBl3B,EAAMxB,UAAW,IACzEwB,EAAMuc,WAAWprB,SAAQ,SAAU0M,GAC/BmC,EAAMk3B,cAAc,cAAoB,UAAWr5B,GAAQA,MAG5D,IAGHs5B,EAAoB,CAAC,eAAgB,KACrCC,GAAe,QAAQD,GAKhBE,EAAqB,SAAUr3B,GACtC,IAAIgzB,GAAQ,QAAOhzB,EAAMlB,eAAeE,OAAO,KAAS,IAAIA,OAAO,KAAO,IAEtEs4B,EAA4B,SAAU3pB,GACtC,OAAOypB,EAAazpB,EAAEgE,OAAS,cAAoBhE,EAAEgE,MAAO,MAAQhE,GAExEqlB,EAAM7hC,SAAQ,SAAUwN,GACpBA,EAAKwJ,YAAcxJ,EAAKwJ,YAAYpJ,IAAIu4B,+MCnB5CC,EAAiB,SAAUv3B,GAC3B,IAAIw3B,EAAWx3B,EAAMuf,KAAKkY,WAC1B,GAAKD,EAAL,CAEA,IAAI3uB,EAAS7I,EAAM8E,OAAOmC,aAW1B,OAAI,QAAWuwB,GACJ,YAAiBA,EAASx3B,IAAQ7E,KAAKq7B,GAE3CA,EAAagB,GAbpB,SAAShB,EAAa9/B,GAClB,GAAKA,EAEL,OAAIA,aAAkB,IACXA,GACP,QAASA,GACFmS,EAAOpS,OAAOC,EAAQsJ,EAAMxB,SAAUwB,EAAMzP,WACnDmG,EAAc,OAAKA,EAAe,OAC3BmS,EAAOpS,OAAOC,EAAc,OAAKsJ,EAAMuf,KAAM7oB,EAAe,QAAKsJ,EAAMxB,SAAUwB,EAAMzP,gBADlG,IChBR,SAASmnC,EAAwB3zB,GAC7B,OAAO,SAAUsY,EAAYxe,GAGzB,OAAO85B,EAFM95B,EAAMuG,UACCL,IACNsY,EAAYxe,IAYlC,IAAI+5B,EAAaF,EAAwB,UAarCG,EAAeH,EAAwB,YAavCI,EAAcJ,EAAwB,2MC7C/BK,EAAwB,IAU/BC,EAAmB,SAAUh4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,QAAS9nB,GAAO7E,KAAK,OAcnF88B,EAAmB,SAAUj4B,EAAOnC,GACpC,OAAO,IAAI,IAAemC,EAAMlB,cAAcygB,IAAIpb,WAAWtG,EAAMuG,WAAW0jB,YAAY,OAAQ9nB,GAAO7E,KAAK,OAe9G+8B,EAAmB,SAAUl4B,GAC7B,OAAO,IAAI,IAAeA,EAAMlB,cAAcygB,IAAIuI,YAAY,OAAQ9nB,GAAO7E,KAAK,OCnClFg9B,EAAoB,SAAU9b,GAC9B,IAAIllB,EAAK,OACLihC,EAAgB/b,EAAWzR,MAAM,YACrC,GAAKwtB,EAAc54B,OAEnB,OAAOrI,EAAG0U,IAAIusB,EAAcr5B,KAAI,SAAUmL,GAAQ,OAAO/S,EAAGkJ,KAAK6J,EAAKuB,YAAatQ,KAAK,OAexFk9B,EAAgB,SAAUhc,GAC1B,IAAI+b,EAAgB/b,EAAWzR,MAAM,YACjC0tB,EAAejc,EAAWzR,MAAM,WACpC,GAAKwtB,EAAc54B,QAAW84B,EAAa94B,OAA3C,CAEA,IAAItI,EAAQmlB,EAAWvX,OAAOqC,YAC9BmxB,EAAannC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMshC,qBAAqBD,MACvEH,EAAcjnC,SAAQ,SAAUonC,GAAM,OAAOrhC,EAAMuhC,mBAAmBF,MACtErhC,EAAM8lB,SCzBN0b,EAAoB,SAAU14B,GAC9B,IAAI0I,EAAU1I,EAAM8E,OAAO4D,QAOvBiwB,EAAyB,WAErBjwB,EAAQ2T,aAAerc,IACvB0I,EAAQ2T,WAAa,OAE7Brc,EAAM7B,UAAU,IAXW,WACvBuK,EAAQ0T,sBAAsBxG,QAAQ5V,GACtC0I,EAAQwa,SAAWljB,EAAMmjB,MACzBza,EAAQwN,QAAUxN,EAAQwa,SAASplB,MACnC,QAAKkC,EAAMxB,SAAUkK,EAAQlK,UAOS,CAAEhH,SAAU,MACtDwI,EAAMnM,QAAQsH,KAAKw9B,EAAwBA,ICtB3CC,EAAY,SAAUvc,GACtB,IAAI9rB,EAAU8rB,EAAW9rB,UACrBsY,EAASwT,EAAWvX,OAAOmC,aAC3B6B,EAAauT,EAAWvX,OAAOyH,UAKnC,GAAuB,QAAnBhc,EAAQ4e,QAAoB5e,EAAQ0V,UAAY4C,EAAOqa,SAASsH,UAAW,CAC3E,IAAIqO,EAAa,CAAE1zB,QAA8B,YAArB5U,EAAQ0V,UACpC6C,EAAWjY,KAAKgY,EAAOqa,SAASsH,UAAU3oB,IAAKgH,EAAOrK,OAAQq6B,GAElE/vB,EAAW0D,QAAO,kWCPtB,SAASssB,EAAY94B,GACjB,IAAI+4B,EAAgB/4B,EAAMg5B,iBAC1B,GAAKD,EAAL,CAEAtgC,EAAA,0BAA6BuH,GAC7B,IAAIi5B,EAAUj5B,EAAM8E,OAAO4D,QAAQ2T,WAOnC,MAHsB,kBAAlB0c,GAAqCE,GACrCA,EAAQC,QAEL,cAAoBjE,aCf/B,SAASkE,EAAsBn5B,GAC3B,IAAKA,EAAMywB,QACP,MAAM,IAAI5tB,MAAM7C,EAAMvK,QAAQyP,YAG/B,ICaIk0B,EAAmB,CAC1BnzB,UAAU,EACVsqB,SAAU,KACV/gB,SAAS,EACT6pB,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,OAAQ,GACRtjB,QAAS,WAAc,OAAO,MAC9B/G,OAAQ,WAaRsqB,EAAmC,WAEnC,SAASA,EAAkBC,GAEvBtpC,KAAKupC,iBAAmB,EAExBvpC,KAAKwpC,YAAc,GAEnBxpC,KAAKsjC,iBAAmB,GAExBtjC,KAAKypC,eAAiB,GACtBzpC,KAAKspC,QAAUA,EACftpC,KAAK8G,MAAQwiC,EAAQvyB,YACrB/W,KAAK0pC,mBAAqB,GAC1B1pC,KAAKgK,YAAc,SAAqB,QAAIhK,MAAO,IAAI,QAAIA,MAAO,CAC9D,kBACA,eACA,gBACA,aACA,aAEJA,KAAK2pC,mBACL3pC,KAAK4pC,oBACL5pC,KAAK6pC,+BACLP,EAAQhxB,QAAQ0T,sBAAsBzG,QAAQ0hB,GAuLlD,OA9JAoC,EAAkBxnC,UAAUioC,SAAW,SAAUh6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkO,SAAW,SAAUD,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkoC,QAAU,SAAUj6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUmoC,OAAS,SAAUl6B,EAAUtP,EAAUL,KAInEkpC,EAAkBxnC,UAAUooC,SAAW,SAAUn6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUqoC,QAAU,SAAUp6B,EAAUtP,EAAUL,KAIpEkpC,EAAkBxnC,UAAUsoC,SAAW,SAAUr6B,EAAUtP,EAAUL,KAIrEkpC,EAAkBxnC,UAAUkM,UAAY,SAAU+B,EAAUtP,EAAUL,KAItEkpC,EAAkBxnC,UAAUuoC,QAAU,SAAUt6B,EAAUtP,EAAUL,KAOpEkpC,EAAkBxnC,UAAUqT,QAAU,SAAUR,IAC5C,QAAO1U,KAAKsjC,kBAAkBviC,SAAQ,SAAUspC,GAC5C,OAAOA,EAAWtpC,SAAQ,SAAU8S,GAChCA,EAAK4uB,eAAgB,GACrB,QAAW4H,EAAYx2B,UAenCw1B,EAAkBxnC,UAAUL,OAAS,SAAUyyB,EAAUzH,GACrD,OAAO,IAAI,IAAWyH,EAAUzH,EAAaxsB,KAAKspC,UAGtDD,EAAkBxnC,UAAU+nC,kBAAoB,WAC5C,IAAIU,EAAQ,IACRC,EAAK,IACLC,EAAQxqC,KAAKypC,eACbgB,GAAc,EACdC,GAAc,EAClB1qC,KAAK2qC,aAAa,WAAYL,EAAMM,OAAQ,EAAGJ,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG3D,YAAa8D,GAC9G1qC,KAAK2qC,aAAa,WAAYL,EAAMO,OAAQ,EAAGL,EAAMrb,IACrDnvB,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,EAAGN,EAAMrb,IACjDnvB,KAAK2qC,aAAa,SAAUL,EAAMQ,IAAK,IAAKN,EAAMv8B,SALV,GAMxCjO,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrV,UACpDn1B,KAAK2qC,aAAa,UAAWL,EAAMQ,IAAK,IAAKN,EAAMre,UACnDnsB,KAAK2qC,aAAa,WAAYL,EAAMQ,IAAK,IAAKN,EAAMrb,IACpDnvB,KAAK2qC,aAAa,YAAaL,EAAMS,QAAS,EAAGP,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,GAC9G1qC,KAAK2qC,aAAa,UAAWL,EAAM3F,MAAO,EAAG6F,EAAMrb,GAAIsb,EAAaF,EAAG9D,oBAAqB8D,EAAG7D,UAAWgE,IAG9GrB,EAAkBxnC,UAAU8nC,iBAAmB,WAC3C,IAAIqB,EAAQ,UAA2BrhB,EAAa,eACpD3pB,KAAKirC,gBAAgB,KAAMthB,GAC3B3pB,KAAKirC,gBAAgB,OAAQthB,GAC7B3pB,KAAKirC,gBAAgB,UAAWD,GAChChrC,KAAKirC,gBAAgB,WAAYD,GACjChrC,KAAKirC,gBAAgB,WAAYD,IAGrC3B,EAAkBxnC,UAAU8oC,aAAe,SAAUnlC,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,QAC5H,IAAhB1D,IAA0BA,GAAc,QACnB,IAArBwD,IAA+BA,EAAmB,wBAC9B,IAApBC,IAA8BA,EAAkB,uBAChC,IAAhBC,IAA0BA,GAAc,GAC5C,IAAI7C,EAAY,IAAI,IAAoB78B,EAAMo8B,EAAWmD,EAAW1D,EAAmBG,EAAawD,EAAkBC,EAAiBC,GACvIllC,KAAKwpC,YAAY/oC,KAAK4hC,IACtB,QAAUriC,KAAMA,KAAMqiC,IAG1BgH,EAAkBxnC,UAAUi/B,WAAa,SAAUD,GAI/C,QAH0B,QAAUA,GAC9B7gC,KAAKwpC,YAAYlgC,QAAO,SAAU4F,GAAQ,OAAOA,EAAK0yB,YAAcf,KACpE7gC,KAAKwpC,YAAY1nC,SACI0pB,MAAK,SAAUiH,EAAGlV,GACzC,IAAI2tB,EAAazY,EAAEmP,UAAYrkB,EAAEqkB,UACjC,OAAsB,IAAfsJ,EAAmBzY,EAAEsS,UAAYxnB,EAAEwnB,UAAYmG,MAgB9D7B,EAAkBxnC,UAAUopC,gBAAkB,SAAUzlC,EAAM2lC,GAC1DnrC,KAAKypC,eAAejkC,GAAQ,CAAEA,KAAMA,EAAM1C,MAAOqoC,IAIrD9B,EAAkBxnC,UAAUihC,cAAgB,WACxC,OAAO9iC,KAAKypC,gBAGhBJ,EAAkBxnC,UAAUigC,SAAW,SAAUnuB,GAC7C,OAAO3T,KAAKsjC,iBAAiB3vB,IAGjC01B,EAAkBxnC,UAAUgoC,6BAA+B,WACvD,IAAIuB,EAAMprC,KAAK0pC,mBACf0B,EAAIC,gBAA6CrrC,KTzN5B8pC,SAAS,GAAIjD,GS0NlCuE,EAAIhS,QAAwCp5B,KF/MvB+P,SAAS,GAAI24B,EAAa,CAAEthC,UAAW,OEgN5DgkC,EAAI/G,QD7N+B,SAAUvX,GACjD,OAAOA,EAAkB/c,SAAS,GAAIg5B,EAAuB,CAAE3hC,UAAW,MC4NxDkkC,CAA8BtrC,MAE5CorC,EAAI/D,WR7MwB,SAAUva,GAC1C,OAAOA,EAAkBid,QAAQ,CAAE5a,GAAI,SAAU1hB,GAAS,QAASA,EAAM45B,aAAiBF,GQ4MrEoE,CAAuBvrC,MAExCorC,EAAIpB,OPtNoB,SAAUld,GACtC,OAAOA,EAAkBkd,OAAO,CAAE/7B,QAAS,SAAUR,GAAS,QAASA,EAAMu8B,SAAaxC,GOqNzEgE,CAAmBxrC,MAChCorC,EAAInB,SP1MsB,SAAUnd,GACxC,OAAOA,EAAkBmd,SAAS,CAAE9U,SAAU,SAAU1nB,GAAS,QAASA,EAAMw8B,WAAexC,GOyM5EgE,CAAqBzrC,MACpCorC,EAAIlB,QP9LqB,SAAUpd,GACvC,OAAOA,EAAkBod,QAAQ,CAAE/d,SAAU,SAAU1e,GAAS,QAASA,EAAMy8B,UAAcxC,GO6L3EgE,CAAoB1rC,MAElCorC,EAAIO,aNjO0B,SAAU7e,GAC5C,OAAOA,EAAkBid,QAAQ,GAAInC,EAAkB,CAAExgC,SAAUugC,IMgO5CiE,CAAyB5rC,MAC5CorC,EAAIS,YNnN0B,SAAU/e,GAC5C,OAAOA,EAAkBod,QAAQ,CAAE/d,UAAU,SAAI,IAAS0b,EAAkB,CAAEzgC,SAAUugC,IMkNlEmE,CAAyB9rC,MAC3CorC,EAAIW,WNpM0B,SAAUjf,GAC5C,OAAOA,EAAkBqd,SAAS,GAAIrC,EAAkB,CAAE1gC,SAAUugC,IMmM/CqE,CAAyBhsC,MAE1CorC,EAAIa,ULpO2B,SAAUnf,GAC7C,OAAOA,EAAkBqd,SAAS,GAAIpC,GKmOlBmE,CAA0BlsC,MAC1CorC,EAAInD,cL9MuB,SAAUnb,GACzC,OAAOA,EAAkB/e,UAAU,GAAIk6B,GK6MfkE,CAAsBnsC,MAE1CorC,EAAIgB,cJ3N2B,SAAUtf,GAC7C,OAAOA,EAAkBgd,SAAS,GAAIxB,GI0Nd+D,CAA0BrsC,MAE9CorC,EAAI5C,UHvOmB,SAAU1b,GACrC,OAAOA,EAAkB/e,UAAU,GAAIy6B,EAAW,CAAEphC,SAAU,OGsO1CklC,CAAkBtsC,MAElCorC,EAAIhf,UAAW,OAAqBpsB,OAEjCqpC,EA/M2B,mSChClCkD,EAA2B,WACV,SAASA,EAA2B73B,GACjD,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKouB,WAAa,IAAI,EAAAiD,WACtBrxB,KAAKkX,eAAgB,EACrBlX,KAAKwsC,oBAAqB,EAC1BxsC,KAAKysC,eAAgB,EACrBzsC,KAAK0sC,sBAAuB,EAC5B1sC,KAAKkV,QAAU,WAAc,OAAO/E,EAAMie,WAAWlZ,WAOtElV,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuE,OAAO2C,eAAe5B,YAUjEzV,KAAK2sC,WAAa,SAAUC,GAAa,OAAOz8B,EAAMuE,OAAO2C,eAAes1B,WAAWC,IAMvF5sC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMuE,OAAO2C,eAAew1B,QAM7D7sC,KAAKqV,UAAY,WAAc,OAAOlF,EAAMuE,OAAO2C,eAAehC,aAMlErV,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMuE,OAAO2C,eAAey1B,QAM7D9sC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMuE,OAAO2C,eAAe01B,YAwFrE,OA1EAR,EAAU1qC,UAAUmrC,gBAAkB,SAAUxoC,GAC5C,OAAQxE,KAAKwsC,oBAAqB,QAAUhoC,GAASA,EAAQxE,KAAKwsC,oBAmBtED,EAAU1qC,UAAUotB,oBAAsB,SAAUzqB,GAChD,IAAI,QAAUA,KAAoB,IAAVA,IAA4B,IAAVA,KAAoB,QAASA,GACnE,MAAM,IAAIiO,MAAM,0BAA4BjO,EAAQ,mDACxD,OAAQxE,KAAK0sC,sBAAuB,QAAUloC,GAASA,EAAQxE,KAAK0sC,sBAcxEH,EAAU1qC,UAAUorC,WAAa,SAAUzoC,GACvC,OAAQxE,KAAKysC,eAAgB,QAAUjoC,GAASA,EAAQxE,KAAKysC,eAgCjEF,EAAU1qC,UAAUqN,KAAO,SAAU1J,EAAMiU,EAAY+X,GACnD,IAAItiB,EAAOlP,KAAKouB,WAAWlf,KAAK1J,EAAMiU,EAAY+X,GAClD,OAAQ,QAAU/X,GAAqBzZ,KAAPkP,GAE7Bq9B,EA1ImB,0SCf1BW,EAAsC,WAStC,OARAA,EAAW35B,OAAO3Q,QAAU,SAASic,GACjC,IAAK,IAAIzB,EAAGC,EAAI,EAAGkD,EAAIve,UAAUoN,OAAQiO,EAAIkD,EAAGlD,IAE5C,IAAK,IAAIwd,KADTzd,EAAIpb,UAAUqb,GACO9J,OAAO1R,UAAUa,eAAeX,KAAKqb,EAAGyd,KACzDhc,EAAEgc,GAAKzd,EAAEyd,IAEjB,OAAOhc,IAEK1c,MAAMnC,KAAMgC,YAK5BmrC,EAA8B,WAC9B,SAASA,EAAaz4B,GAClB1U,KAAK0U,OAASA,EAWlB,OATAy4B,EAAatrC,UAAU+O,WAAa,SAAUvF,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE9E0/B,EAAatrC,UAAUoyB,SAAW,SAAU5oB,EAAI6D,EAAMzB,GAClD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,KAAcntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAE5E0/B,EAAatrC,UAAUurC,WAAa,SAAU/hC,EAAI6D,EAAMzB,GACpD,OAAO,IAAI,EAAA4f,MAAMhiB,EAAI6D,EAAM,EAAAie,QAAA,OAAgBntB,KAAK0U,OAAOuC,WAAW1L,OAAQkC,IAEvE0/B,EAbsB,GAsB7BE,EAAmC,WAEnC,SAASA,EAAmC34B,GACxC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAEd1U,KAAK07B,aAAe,IAAIyR,EAAantC,KAAK0U,QAE1C1U,KAAKstC,WAAa,IAClBttC,KAAKqtB,MAAQ,EAAAA,MAEbrtB,KAAKgtC,gBAAkB,SAAUxoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAOyhC,gBAAgBxoC,IAEhGxE,KAAKivB,oBAAsB,SAAUzqB,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0jB,oBAAoBzqB,IAExGxE,KAAKitC,WAAa,SAAUzoC,GAAS,OAAO2L,EAAMuE,OAAOuC,WAAW1L,OAAO0hC,WAAWzoC,IAEtFxE,KAAKkP,KAAO,SAAU1J,EAAMiU,EAAY+X,GACpC,OAAOrhB,EAAMuE,OAAOuC,WAAW1L,OAAO2D,KAAK1J,EAAMiU,EAAY+X,IAAiBrhB,GA+CtF,OArCAk9B,EAAkBxrC,UAAUwF,QAAU,SAAUid,EAAS/Y,GACrD,IAAI+hB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAEnC6C,EAAS7C,IAAWA,EAAOkC,OAASlC,EAAO6C,OAC/C7C,EAAS6C,EAAS8+B,EAAS,CAAEz/B,MAAO,CAAEW,OAAQA,IAAY7C,GAAUA,EACpE,IAAIgiC,EAAe,CACfC,OAAQlgB,EAAUmf,cAClBO,gBAAiB1f,EAAUkf,mBAC3BiB,aAAcngB,EAAUpW,eAE5B,OAAO,IAAI,IAAWoN,EAASgJ,EAAUc,WAAYpuB,KAAK07B,cAAc,QAAO6R,EAAchiC,KASjG8hC,EAAkBxrC,UAAUs4B,UAAY,SAAUuT,GAE9C,KAAK,QAASA,GACV,OAAO,EACX,IAAIpnC,GAAS,EAKb,OAJA,QAAQ,eAAsB,SAAUtC,EAAKwB,IACrC,QAAWxB,KACXsC,EAASA,IAAU,QAAUonC,EAAOloC,MAAU,QAAWkoC,EAAOloC,QAEjEc,GAGX+mC,EAAkBxrC,UAAUnB,KAAO,WAC/B,IAAI4sB,EAAYttB,KAAK0U,OAAOuC,WAAW1L,OAGvC,OAFA+hB,EAAUc,WAAW5I,SAAU,EAC/B8H,EAAUc,WAAWqD,kBACdzxB,MAEJqtC,EAjE2B,kOCjBlCM,EAA2B,WAE3B,SAASA,EAA2Bj5B,GAChC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EAGd1U,KAAK4sB,KAAO,SAAU1W,GAAO,OAAO/F,EAAMuE,OAAOuC,WAAW2V,KAAK1W,IAEjElW,KAAKsc,OAAS,SAAUhH,GAAW,OAAOnF,EAAMuE,OAAOuC,WAAWqF,OAAOhH,IAEzEtV,KAAK+c,eAAiB,SAAU9Q,GAAS,OAAOkE,EAAMuE,OAAOuC,WAAW8F,eAAe9Q,IAEvFjM,KAAKgc,MAAQ,SAAU4xB,GAAY,OAAOz9B,EAAMuE,OAAOuC,WAAW+E,MAAM4xB,IAGxE5tC,KAAKuH,QAAU,SAAUwU,GACrB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMpV,QAAQwU,IAGjD/b,KAAK4c,UAAY,SAAUb,GACvB,OAAO5L,EAAMuE,OAAOuC,WAAW0F,MAAMC,UAAUb,IAGnD/b,KAAKw/B,WAAa,SAAUjjB,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAM6iB,WAAWjjB,IAEpFvc,KAAKuc,KAAO,SAAUA,GAAQ,OAAOpM,EAAMuE,OAAOuC,WAAW0F,MAAMJ,KAAKA,IAExEvc,KAAK2c,MAAQ,WAAc,OAAOxM,EAAMuE,OAAOuC,WAAW0F,MAAMA,SAEhE3c,KAAKwrB,KAAO,SAAUqiB,GAAa,OAAO19B,EAAMuE,OAAOuC,WAAW0F,MAAM6O,KAAKqiB,IAE7E7tC,KAAKiQ,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAAW,OAAOgQ,EAAMuE,OAAOuC,WAAW0F,MAAM1M,KAAKwrB,EAAS1f,EAAS5b,IAC/GH,KAAK6+B,eAAiB,IAAI,IAAenqB,GAyE7C,OAtEAi5B,EAAU9rC,UAAUua,OAAS,SAAU0xB,GACnC,IAAIphB,EAAO1sB,KAAK0U,OAAO0C,gBACnB02B,EACA9tC,KAAK6V,SAAW6W,EAAKjb,MAGrBib,EAAKjb,QAAUzR,KAAK6V,UAExB6W,EAAKjb,IAAIzR,KAAK6V,UAAU,IAY5B83B,EAAU9rC,UAAUpB,KAAO,SAAUstC,EAAY3/B,EAAQjO,GACrD,IAAI4U,EAAU5U,KAAaA,EAAQ4U,QACnC/U,KAAK0U,OAAOuC,WAAWxF,IAAIs8B,EAAWnmB,OAAOxZ,GAAU,IAAK2G,IAqBhE44B,EAAU9rC,UAAUmsC,KAAO,SAAUD,EAAY3/B,EAAQjO,GACrD,IAAIsR,EAAMs8B,EAAWnmB,OAAOxZ,GAC5B,GAAW,MAAPqD,EACA,OAAO,KACXtR,EAAUA,GAAW,CAAE8tC,UAAU,GACjC,IAAIpmC,EAAM7H,KAAK0U,OAAOuC,WAAW1L,OAC7B2iC,EAAUrmC,EAAIwN,YAKlB,GAJK64B,GAAmB,OAARz8B,IACZA,EAAM,IAAM5J,EAAI8kC,aAAel7B,GAEnCA,EA1GR,SAAwBA,EAAKy8B,EAASD,EAAUx4B,GAC5C,MAAiB,MAAbA,EACOhE,EACPy8B,GACO,QAAqBz4B,GAAYhE,EACxCw8B,EACOx4B,EAAS3T,MAAM,GAAK2P,EACxBA,EAmGG08B,CAAe18B,EAAKy8B,EAAS/tC,EAAQ8tC,SAAUpmC,EAAI4N,aACpDtV,EAAQ8tC,WAAax8B,EACtB,OAAOA,EAEX,IAAI28B,GAASF,GAAWz8B,EAAM,IAAM,GAChC48B,EAAUxmC,EAAIilC,OACdA,EAAoB,KAAZuB,GAA8B,MAAZA,EAAkB,GAAK,IAAMA,EAC3D,MAAO,CAACxmC,EAAIklC,WAAY,MAAOllC,EAAIglC,OAAQC,EAAMsB,EAAO38B,GAAKwB,KAAK,KAEtEM,OAAO+6B,eAAeX,EAAU9rC,UAAW,oBAAqB,CAE5D6O,IAAK,WACD,OAAO1Q,KAAK0U,OAAOuC,WAAWoF,mBAElCkyB,YAAY,EACZC,cAAc,IAEXb,EA1GmB,2aCJ1Bc,EAAgC,WAChC,SAASA,EAAe/5B,GACpB1U,KAAK0U,OAASA,EAiKlB,OA/JA+5B,EAAe5sC,UAAUwF,QAAU,SAAU2J,GACzC,OAAOhR,KAAK0U,OAAOE,kBAAkBvN,QAAQ2J,IAEjDy9B,EAAe5sC,UAAUL,OAAS,SAAUsb,EAAMf,GAC9C,IAAI5L,EAAQnQ,KACRy9B,EAAU,YAAqBD,EAAqB,uBACpDkR,GAAW,QAAQ,CACnB,CAAC,KAAU,SAAUC,GAAS,OAAOD,EAASv+B,EAAM9I,QAAQsnC,MAC5D,EAAC,IAAAz1B,IAAG,KAAa,SAAUy1B,GAAS,OAAOx+B,EAAMy+B,eAAeD,EAAO5yB,KACvE,EAAC,IAAAkI,IAAGwZ,EAASD,GAAqB,SAAUmR,GAAS,OAAOx+B,EAAM0+B,UAAUF,EAAOx+B,EAAMuE,UACzF,EAAC,IAAAwE,IAAG/P,QAAS,SAAUwlC,GAAS,OAAOx+B,EAAM2+B,WAAWH,EAAO5yB,KAC/D,CAAC,KAAY,SAAU4yB,GAAS,OAAO,IAAIlyB,EAAYkyB,EAAO5yB,OAE9DQ,EAAOmyB,EAAS5xB,GACpB,IAAKP,EACD,MAAM,IAAI9J,MAAM,4BACpB,OAAO8J,GAsCXkyB,EAAe5sC,UAAU+sC,eAAiB,SAAUb,EAAYhyB,GAC5D,IAAIgzB,EAAWhzB,GACX,QAASA,KACTA,EAAU/b,KAAK0U,OAAOE,kBAAkBvN,QAAQ0U,KAChD,IAAA7C,IAAG,IAAH,CAAe6C,KACfgzB,EAAW,SAAU/yB,GAAS,OAAOD,EAAQ6L,OAAO5L,KAiBxD,IAAIgzB,EAAU,CAAEjB,WAAYA,EAAYkB,cAPxC,SAAuB7gC,GACnB,IAAI8gC,EAAWnB,EAAW1a,aAAa/pB,QAAO,SAAU0F,GAAS,OAAOA,EAAM4f,cAC9E,OAAKsgB,EAAS9/B,OAEA8/B,EAAS5lC,QAAO,SAAU0F,GAAS,OAAOZ,EAAOY,EAAM3D,OACtD+D,OAAS8/B,EAAS9/B,OAFtB,MAIuDF,KAAM,cAC5E,OAAO,QAAO,IAAIuN,GAjBlB,SAA2BhL,GACvB,IAAIrD,EAAS2/B,EAAWtkC,KAAKgI,EAAItJ,KAAMsJ,EAAI09B,OAAQ19B,EAAIqgB,MACvD,OAAOic,EAAWre,UAAUthB,IAAWA,IAeM2gC,GAAWC,IAahEP,EAAe5sC,UAAUgtC,UAAY,SAAUO,EAAa16B,GACxD,IAAIjH,EAAQ,uBAA+B2hC,GAAeA,EAAYp7B,UAAYo7B,EAe9EJ,EAAU,CAAEvhC,MAAOA,EAAOyB,KAAM,SACpC,OAAO,QAAOlP,KAAK4uC,eAAenhC,EAAMgE,KAR1B,SAAUuK,GACpB,IAAIvD,EAAS/D,EAAOmC,aAChByB,EAAU5D,EAAO4D,QACjBG,EAAOu1B,KAAKvgC,EAAOuO,KAAWvD,EAAOu1B,KAAK11B,EAAQwN,QAASxN,EAAQlK,SACnEqK,EAAO42B,aAAa5hC,EAAOuO,EAAO,CAAEoD,SAAS,EAAML,OAAQ,WAIZiwB,IAkC3DP,EAAe5sC,UAAUitC,WAAa,SAAU7rB,EAAQlH,GACpD,GAAIkH,EAAOnF,QAAUmF,EAAOqsB,OACxB,MAAM,IAAI78B,MAAM,4CAMpB,IAIIs8B,GAAW,QAAShzB,GAJJ,SAAUC,GAE1B,OAAOD,EAAQhH,QAAQ,kBAAkB,SAAUC,EAAG8H,GAAQ,OAAOd,EAAe,MAATc,EAAe,EAAIyyB,OAAOzyB,QAEtDf,EAE/CizB,EAAU,CAAE/rB,OAAQA,EAAQ/T,KAAM,UACtC,OAAO,QAAO,IAAIuN,GAFU,SAAUhL,GAAO,OAAOwR,EAAOxZ,KAAKgI,EAAItJ,QAEf4mC,GAAWC,IAEpEP,EAAee,UAAY,SAAUv1B,GAAO,OAAOA,GAAO,CAAC,OAAQ,QAAS,WAAWkpB,OAAM,SAAUt9B,GAAO,OAAO,QAAUoU,EAAIpU,QAC5H4oC,EAnKwB,GA4K/BhyB,EACA,SAAqBT,EAAOD,GACxB,IAAI5L,EAAQnQ,KACZA,KAAKgc,MAAQA,EACbhc,KAAKkP,KAAO,MACZlP,KAAKivC,cAAgB,SAAUjzB,GAAS,OAAO,EAAI7L,EAAMgL,KACzDnb,KAAK+b,QAAUA,GAAW,2GCnK9B0zB,sPAaJ,SAASC,EAAa3zB,GAClB,MAAK,QAAWA,KAAa,QAASA,KAAa,IAAA7C,IAAG,EAAA2mB,YAAH,CAAgB9jB,IAAa,EAAA8jB,YAAA,MAAkB9jB,IAC9F,MAAM,IAAItJ,MAAM,4FAEpB,OAAO,QAAWsJ,GAAWA,GAAU,QAAIA,GAhB/C0zB,EAAoB,SAAUhyB,EAAGmB,GAC7B,IAAI+wB,EA5BW,SAAUlyB,EAAGmB,GAAK,OAAQA,EAAExX,UAAY,IAAMqW,EAAErW,UAAY,GA4BjEwoC,CAAanyB,EAAGmB,GAC1B,OAAY,IAAR+wB,GAGQ,KADZA,EA9BW,SAAUlyB,EAAGmB,GACxB,IAAIixB,EAAU,CAAE7E,MAAO,EAAG8E,WAAY,EAAGC,OAAQ,EAAGC,IAAK,EAAGC,MAAO,GACnE,OAAQJ,EAAQpyB,EAAEvO,OAAS,IAAM2gC,EAAQjxB,EAAE1P,OAAS,GA4B9CghC,CAASzyB,EAAGmB,KAIN,KADZ+wB,EA7BiB,SAAUlyB,EAAGmB,GAC9B,OAAQnB,EAAEswB,YAAenvB,EAAEmvB,WAAiB,YAAmBtwB,EAAEswB,WAAYnvB,EAAEmvB,YAAvC,EA4BlCoC,CAAe1yB,EAAGmB,IAJb+wB,EAtBF,SAAUlyB,EAAGmB,GAEtB,IAAIwxB,EAAmB,CAAEpF,OAAO,EAAM8E,YAAY,GAElD,OADYM,EAAiB3yB,EAAEvO,OAASkhC,EAAiBxxB,EAAE1P,MAC5C,GAAKuO,EAAEtC,KAAO,IAAMyD,EAAEzD,KAAO,GAyBrCk1B,CAAO5yB,EAAGmB,IAkBrB,IAAI0xB,EAA0B,WAE1B,SAASA,EAA0B57B,GAC/B1U,KAAK0U,OAASA,EACG1U,KAAKuwC,QAAUd,EACfzvC,KAAKwwC,OAAS,GACdxwC,KAAKywC,IAAM,EAC5BzwC,KAAK6+B,eAAiB,IAAI,IAAenqB,GA8Q7C,OA3QA47B,EAASzuC,UAAUqT,QAAU,SAAUR,GACnC1U,KAAKwwC,OAAS,UACPxwC,KAAK0wC,cAqChBJ,EAASzuC,UAAU0F,QAAU,SAAUwU,GACnC,IAAI40B,EAAYjB,EAAa3zB,GAI7B/b,KAAKuc,KAAKvc,KAAK6+B,eAAer9B,QAHhB,SAAUosC,EAAUl5B,GAC9B,OAAmD,IAA5CA,EAAO4D,QAAQyT,kBAAkBnG,UAAkB,QAAQnc,KAAKmkC,EAASzlC,QAEtCwoC,KA6ClDL,EAASzuC,UAAU+a,UAAY,SAAUb,GACrC,IAAI40B,EAAYjB,EAAa3zB,GAC7B/b,KAAK0wC,aAAe1wC,KAAK6+B,eAAer9B,QAAO,SAAI,GAAOmvC,GAC1D3wC,KAAK4wC,SAAU,GAOnBN,EAASzuC,UAAU29B,WAAa,SAAUjjB,IACtC,QAAWvc,KAAKwwC,OAAQj0B,IAc5B+zB,EAASzuC,UAAU0a,KAAO,SAAUA,GAChC,IAAIpM,EAAQnQ,KACZ,IAAK,cAAyBuc,GAC1B,MAAM,IAAI9J,MAAM,gBAKpB,OAJA8J,EAAKpB,IAAMnb,KAAKywC,MAChBl0B,EAAKnV,SAAWmV,EAAKnV,UAAY,EACjCpH,KAAKwwC,OAAO/vC,KAAK8b,GACjBvc,KAAK4wC,SAAU,EACR,WAAc,OAAOzgC,EAAMqvB,WAAWjjB,KAOjD+zB,EAASzuC,UAAU8a,MAAQ,WAEvB,OADA3c,KAAK6wC,eACE7wC,KAAKwwC,OAAOpuC,OAAOpC,KAAK0wC,aAAe,CAAC1wC,KAAK0wC,cAAgB,KA4CxEJ,EAASzuC,UAAU2pB,KAAO,SAAUqiB,GAIhC,IAHA,IAAIiD,EAAS9wC,KAAK+wC,WAAW/wC,KAAKwwC,OAASxwC,KAAKuwC,QAAU1C,GAAa7tC,KAAKuwC,SAExES,EAAQ,EACH3zB,EAAI,EAAGA,EAAIyzB,EAAO1hC,OAAQiO,IAC/ByzB,EAAOzzB,GAAG4zB,OAASD,EACf3zB,EAAIyzB,EAAO1hC,OAAS,GAAgD,IAA3CpP,KAAKuwC,QAAQO,EAAOzzB,GAAIyzB,EAAOzzB,EAAI,KAC5D2zB,IAGRhxC,KAAKwwC,OAASM,EACd9wC,KAAK4wC,SAAU,GAGnBN,EAASzuC,UAAUgvC,aAAe,WAC9B7wC,KAAK4wC,SAAW5wC,KAAKwrB,QAGzB8kB,EAASzuC,UAAUkvC,WAAa,SAAUrxB,EAAKmuB,GAC3C,IAAIqD,EAAexxB,EAAI/Q,KAAI,SAAUuS,EAAMjS,GAAO,MAAO,CAAGiS,KAAMA,EAAMjS,IAAKA,MAK7E,OAJAiiC,EAAa1lB,MAAK,SAAU2lB,EAAUC,GAClC,IAAIC,EAAUxD,EAAUsD,EAASjwB,KAAMkwB,EAASlwB,MAChD,OAAmB,IAAZmwB,EAAgBF,EAASliC,IAAMmiC,EAASniC,IAAMoiC,KAElDH,EAAaviC,KAAI,SAAU2iC,GAAW,OAAOA,EAAQpwB,SA6DhEovB,EAASzuC,UAAUoO,KAAO,SAAUwrB,EAAS1f,EAAS5b,GAClD,IAAIoc,EAAOvc,KAAK6+B,eAAer9B,OAAOi6B,EAAS1f,GAI/C,OAHI,QAAU5b,GAAWA,EAAQiH,YAC7BmV,EAAKnV,SAAWjH,EAAQiH,UAC5BpH,KAAKuc,KAAKA,GACHA,GAEJ+zB,EArRkB,8VCpDzBiB,EAA4B,WAE5B,SAASA,EAA4B78B,GACjC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKqc,mBAAoB,EAM1Crc,KAAK2c,MAAQ,IAAI,IAAS3c,KAAK0U,QAM/B1U,KAAKuL,OAAS,IAAI,IAAUvL,KAAK0U,QAsDjC1U,KAAKyR,IAAM,SAAU+/B,EAAQz8B,EAAStH,GAClC,OAAO0C,EAAMuE,OAAO0C,gBAAgB3F,IAAI+/B,EAAQz8B,EAAStH,IAS7DzN,KAAKmI,KAAO,WAAc,OAAOgI,EAAMuE,OAAO0C,gBAAgBjP,QAQ9DnI,KAAKmvC,OAAS,WAAc,OAAOh/B,EAAMuE,OAAO0C,gBAAgB+3B,UAQhEnvC,KAAK8xB,KAAO,WAAc,OAAO3hB,EAAMuE,OAAO0C,gBAAgB0a,QAgB9D9xB,KAAKmV,SAAW,SAAU3U,GAAY,OAAO2P,EAAMuE,OAAO0C,gBAAgBjC,SAAS3U,IA4IvF,OAzIA+wC,EAAW1vC,UAAUqT,QAAU,WAC3BlV,KAAKsc,QAAO,GACZtc,KAAK2c,MAAMzH,WAOfq8B,EAAW1vC,UAAU8qB,MAAQ,WACzB,MAAO,CAAExkB,KAAMnI,KAAKmI,OAAQgnC,OAAQnvC,KAAKmvC,SAAUrd,KAAM9xB,KAAK8xB,SAsBlEyf,EAAW1vC,UAAU+qB,KAAO,SAAU1W,GAClC,IAAIA,IAAOA,EAAI5T,iBAAf,CAEA,IAAI+oB,EAAKrrB,KAAK0U,OAAQuC,EAAaoU,EAAGpU,WAAYJ,EAAewU,EAAGxU,aAChEpF,EAAM,CAAEtJ,KAAM8O,EAAW9O,OAAQgnC,OAAQl4B,EAAWk4B,SAAUrd,KAAM7a,EAAW6a,QAC/E2f,EAAOzxC,KAAKgc,MAAMvK,IACJ,QAAQ,CACtB,CAAC,KAAU,SAAU+/B,GAAU,OAAOv6B,EAAWxF,IAAI+/B,GAAQ,KAC7D,CAAC,EAAA3R,YAAA,MAAmB,SAAU3sB,GAAO,OAAO2D,EAAa66B,GAAGx+B,EAAIzF,MAAOyF,EAAI9E,OAAQ8E,EAAI/S,WACvF,EAAC,IAAA+Y,IAAG,EAAA2mB,aAAc,SAAUx5B,GAAU,OAAOwQ,EAAa66B,GAAGrrC,EAAOoH,QAASpH,EAAO+H,SAAU/H,EAAOlG,cAEzGwxC,CAAYF,GAAQA,EAAKl1B,KAAKR,QAAQ01B,EAAKz1B,MAAOvK,EAAKzR,KAAK0U,WAwBhE68B,EAAW1vC,UAAUya,OAAS,SAAUhH,GACpC,IAAInF,EAAQnQ,KACZ,IAAgB,IAAZsV,EAKA,OAAQtV,KAAK4xC,iBACT5xC,KAAK4xC,kBAAoB5xC,KAAK0U,OAAOuC,WAAW9B,UAAS,SAAUe,GAAO,OAAO/F,EAAMyc,KAAK1W,MALhGlW,KAAK4xC,kBAAoB5xC,KAAK4xC,0BACvB5xC,KAAK4xC,kBA+BpBL,EAAW1vC,UAAUkb,eAAiB,SAAU9Q,QAC9BkI,IAAVlI,IACAA,GAAQ,GACZjM,KAAKqc,kBAAoBpQ,GAQ7BslC,EAAW1vC,UAAUma,MAAQ,SAAUvK,GAEnCA,GAAM,QAAO,CAAEtJ,KAAM,GAAIgnC,OAAQ,GAAIrd,KAAM,IAAMrgB,GAYjD,IAXA,IAUIggC,EARsBl1B,EAClBP,EAHJW,EAAQ3c,KAAK2c,MAAMA,QAWdU,EAAI,EAAGA,EAAIV,EAAMvN,UAElBqiC,GAAQA,EAAKl1B,KAAK00B,SAAWt0B,EAAMU,GAAG4zB,QAFZ5zB,IAAK,CAInC,IAAIyI,QAZA9J,GAAAA,GADkBO,EAaEI,EAAMU,IAZbrB,MAAMvK,EALfzR,KAK0B0U,UAClB,CAAEsH,MAAOA,EAAOO,KAAMA,EAAMs1B,OAAQt1B,EAAK0yB,cAAcjzB,KAavEy1B,GAAQA,GAAS3rB,GAAWA,EAAQ+rB,OAASJ,EAAKI,OAAU/rB,EAAU2rB,EAE1E,OAAOA,GAEJF,EA7PoB,yXCJ3BO,EAAsC,WACtC,SAASA,EAAqBp9B,EAAQq9B,GAClC,IAAI5hC,EAAQnQ,KACZA,KAAK+xC,gBAAkBA,EACvB/xC,KAAKgyC,WAAa,GAClBhyC,KAAKiyC,UAAY,SAAU/7B,GAAO,OAAO/F,EAAM6hC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAGoL,OAC5FlW,KAAK8xB,KAAO,WAAc,OAAO,QAAS3hB,EAAM+hC,QAAQpgB,MACxD9xB,KAAKmI,KAAO,WAAc,OAAO,QAASgI,EAAM+hC,QAAQ/pC,MACxDnI,KAAKmvC,OAAS,WAAc,OAAO,SAAU,QAASh/B,EAAM+hC,QAAQ/C,SACpEnvC,KAAKmyC,UAAY,cACjBnyC,KAAKoyC,SAAW,aAoBpB,OAlBAN,EAAqBjwC,UAAU4P,IAAM,SAAUA,EAAKsD,GAQhD,YAPgB,IAAZA,IAAsBA,GAAU,IAChC,QAAUtD,IAAQA,IAAQzR,KAAKkyC,SAC/BlyC,KAAKmpB,KAAK,KAAM,KAAM1X,EAAKsD,GACvB/U,KAAK+xC,iBACL/xC,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG,CAAE2G,IAAKA,SAG1D,QAASzR,OAEpB8xC,EAAqBjwC,UAAUsT,SAAW,SAAUrK,GAChD,IAAIqF,EAAQnQ,KAEZ,OADAA,KAAKgyC,WAAWvxC,KAAKqK,GACd,WAAc,OAAO,QAAWqF,EAAM6hC,WAAYlnC,KAE7DgnC,EAAqBjwC,UAAUqT,QAAU,SAAUR,IAC/C,QAAS1U,KAAKgyC,aAEXF,EA9B8B,2LCDrCO,EAAuC,WACvC,SAASA,EAAsB39B,EAAQ49B,QAClB,IAAbA,IAAuBA,GAAW,GACtCtyC,KAAKsyC,SAAWA,EAChBtyC,KAAK0V,eAAYvB,EACjBnU,KAAKuyC,YAAc,GAmCvB,OAjCAF,EAAsBxwC,UAAUirC,KAAO,WACnC,OAAIj3B,SAASi3B,KACFyC,OAAO15B,SAASi3B,MAEA,UAApB9sC,KAAK+sC,WAAyB,IAAM,IAE/CsF,EAAsBxwC,UAAUkrC,SAAW,WACvC,OAAOl3B,SAASk3B,SAASh4B,QAAQ,KAAM,KAE3Cs9B,EAAsBxwC,UAAUgrC,KAAO,WACnC,OAAOh3B,SAAS28B,UAEpBH,EAAsBxwC,UAAUwT,UAAY,WACxC,OAAOrV,KAAKsyC,UAEhBD,EAAsBxwC,UAAU8qC,WAAa,SAAUC,GACnD,OAAO,QAAUA,GAAc5sC,KAAKuyC,YAAc3F,EAAa5sC,KAAKuyC,aAExEF,EAAsBxwC,UAAU4T,SAAW,SAAUu4B,GAKjD,OAJI,QAAUA,KACVhuC,KAAK0V,UAAYs4B,IACjB,QAAYhuC,KAAK0V,aACjB1V,KAAK0V,UAAY1V,KAAKyyC,eACnBzyC,KAAK0V,WAEhB28B,EAAsBxwC,UAAU4wC,YAAc,WAC1C,IAAIC,EAAUrsB,SAASssB,qBAAqB,QAAQ,GACpD,OAAID,GAAWA,EAAQ1E,KACZ0E,EAAQ1E,KAAKj5B,QAAQ,uBAAwB,IAEjD/U,KAAKsyC,SAAW,IAAMz8B,SAAS/B,UAAY,KAEtDu+B,EAAsBxwC,UAAUqT,QAAU,aACnCm9B,EAxC+B,uHCDlCO,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAMnFC,EAAqC,SAAUC,GAE/C,SAASD,EAAoBv+B,GACzB,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAU1U,KAEhD,OADA,sBAAsB,aAAcmQ,EAAM8hC,WAAW,GAC9C9hC,EAYX,OAhBA0iC,EAAUI,EAAqBC,GAM/BD,EAAoBpxC,UAAUqwC,KAAO,WACjC,OAAO,QAAYlyC,KAAKmyC,UAAUrgB,OAEtCmhB,EAAoBpxC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAC9D/U,KAAKmyC,UAAUrgB,KAAOrgB,GAE1BwhC,EAAoBpxC,UAAUqT,QAAU,SAAUR,GAC9Cw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,aAAc1U,KAAKiyC,YAEzCgB,EAjB6B,CAkBtC,yYC/BEG,EACA,WACI,IAAIjjC,EAAQnQ,KACZA,KAAKkV,QAAU,KACflV,KAAK0V,UAAY,GACjB1V,KAAKqzC,MAAQ,GACbrzC,KAAKszC,UAAY,OACjBtzC,KAAKuzC,MAAQ,YACbvzC,KAAKuyC,YAAc,GACnBvyC,KAAK8sC,KAAO,WAAc,OAAO38B,EAAMkjC,OACvCrzC,KAAK+sC,SAAW,WAAc,OAAO58B,EAAMmjC,WAC3CtzC,KAAK6sC,KAAO,WAAc,OAAO18B,EAAMojC,OACvCvzC,KAAKyV,SAAW,WAAc,OAAOtF,EAAMuF,WAC3C1V,KAAKqV,UAAY,WAAc,OAAO,GACtCrV,KAAK2sC,WAAa,SAAU6G,GAAU,OAAQ,QAAUA,GAAWrjC,EAAMoiC,YAAciB,EAAUrjC,EAAMoiC,oIChBvGK,8EADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAKnFS,EAAuC,SAAUP,GAEjD,SAASO,EAAsB/+B,GAC3B,OAAOw+B,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAQ9C,OAVA6yC,EAAUY,EAAuBP,GAIjCO,EAAsB5xC,UAAUqwC,KAAO,WACnC,OAAOlyC,KAAK0zC,MAEhBD,EAAsB5xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GAChE/U,KAAK0zC,KAAOjiC,GAETgiC,EAX+B,CAYxC,0tBCZ8B,QAAsB,4BAA4B,EAAO,IAAqB,MAEzE,QAAsB,6BAA6B,EAAM,IAA0B,MAEtF,QAAsB,0BAA0B,EAAO,IAAuB,8HClBxGb,2IADJC,GACID,EAAgB,SAAUzZ,EAAGva,GAI7B,OAHAg0B,EAAgBr/B,OAAOu/B,gBAClB,CAAEC,UAAW,cAAgBnxC,OAAS,SAAUu3B,EAAGva,GAAKua,EAAE4Z,UAAYn0B,IACvE,SAAUua,EAAGva,GAAK,IAAK,IAAIic,KAAKjc,EAAOA,EAAElc,eAAem4B,KAAI1B,EAAE0B,GAAKjc,EAAEic,MACpD1B,EAAGva,IAErB,SAAUua,EAAGva,GAEhB,SAASo0B,IAAOhzC,KAAKokB,YAAc+U,EADnCyZ,EAAczZ,EAAGva,GAEjBua,EAAEt3B,UAAkB,OAAN+c,EAAarL,OAAO/R,OAAOod,IAAMo0B,EAAGnxC,UAAY+c,EAAE/c,UAAW,IAAImxC,KAUnFW,EAA0C,SAAUT,GAEpD,SAASS,EAAyBj/B,GAC9B,IAAIvE,EAAQ+iC,EAAOnxC,KAAK/B,KAAM0U,GAAQ,IAAS1U,KAG/C,OAFAmQ,EAAMyjC,QAAUl/B,EAAOuC,WAAW1L,OAClC,sBAAsB,WAAY4E,EAAM8hC,WAAW,GAC5C9hC,EA8CX,OAnDA0iC,EAAUc,EAA0BT,GAuBpCS,EAAyB9xC,UAAUgyC,eAAiB,WAChD,OAAO,QAAqB7zC,KAAK4zC,QAAQn+B,aAE7Ck+B,EAAyB9xC,UAAUqwC,KAAO,WACtC,IAAI7mB,EAAKrrB,KAAKmyC,UAAWr+B,EAAWuX,EAAGvX,SAAUge,EAAOzG,EAAGyG,KAAMqd,EAAS9jB,EAAG8jB,OAC7EA,GAAS,QAAWA,GAAQ,GAC5Brd,GAAO,QAAUA,GAAM,GACvB,IAAIgiB,EAAa9zC,KAAK6zC,iBAClBE,EAAqBjgC,IAAa9T,KAAK4zC,QAAQn+B,WAC/Cu+B,EAAiBlgC,EAASiT,OAAO,EAAG+sB,EAAW1kC,UAAY0kC,EAE/D,OADAhgC,EAAWigC,EAAqB,IAAMC,EAAiBlgC,EAASmmB,UAAU6Z,EAAW1kC,QAAU0E,IAC5Eq7B,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE1E6hB,EAAyB9xC,UAAUsnB,KAAO,SAAU1b,EAAO0lC,EAAO1hC,EAAKsD,GACnE,IAAI++B,EAAa9zC,KAAK6zC,iBAClBzF,EAAQ38B,GAAkB,MAAXA,EAAI,GAAa,IAAM,GACtCwiC,EAAkB,KAARxiC,GAAsB,MAARA,EAAczR,KAAK4zC,QAAQn+B,WAAaq+B,EAAa1F,EAAQ38B,EACrFsD,EACA/U,KAAKoyC,SAAS8B,aAAazmC,EAAO0lC,EAAOc,GAGzCj0C,KAAKoyC,SAAS+B,UAAU1mC,EAAO0lC,EAAOc,IAG9CN,EAAyB9xC,UAAUqT,QAAU,SAAUR,GACnDw+B,EAAOrxC,UAAUqT,QAAQnT,KAAK/B,KAAM0U,GACpC,yBAAyB,WAAY1U,KAAKiyC,YAEvC0B,EApDkC,CAqD3C,4UCxESS,EAAmB,SAAUC,EAAOhpB,GAC3C,IAAIxlB,EAAMwlB,EAAG,GAAIrnB,EAAMqnB,EAAG,GAU1B,OATKgpB,EAAM3xC,eAAemD,IAGjB,QAAQwuC,EAAMxuC,IACnBwuC,EAAMxuC,GAAKpF,KAAKuD,GAGhBqwC,EAAMxuC,GAAO,CAACwuC,EAAMxuC,GAAM7B,GAN1BqwC,EAAMxuC,GAAO7B,EAQVqwC,GAEAC,EAAY,SAAUC,GAC7B,OAAOA,EAAYzxB,MAAM,KAAKxZ,OAAO,MAAUqF,IAAI,MAAYC,OAAOwlC,EAAkB,KAErF,SAASla,EAASzoB,GACrB,IAAI+iC,EAAgB,SAAUllC,GAAK,OAAOA,GAAK,IAC3C+b,GAAK,QAAU5Z,GAAK9C,IAAI6lC,GAAgBC,EAAappB,EAAG,GAAIyG,EAAOzG,EAAG,GACtEC,GAAK,QAAWmpB,GAAY9lC,IAAI6lC,GACpC,MAAO,CAAErsC,KADkDmjB,EAAG,GACzC6jB,OADsD7jB,EAAG,GACzCwG,KAAMA,EAAMrgB,IAAKA,GAEnD,IAAIijC,EAAW,SAAUC,GAC5B,IAAIxsC,EAAOwsC,EAAIxsC,OACXysC,EAAeD,EAAIxF,SACnBrd,EAAO6iB,EAAI7iB,OACXqd,EAAS57B,OAAOC,KAAKohC,GACpBjmC,KAAI,SAAU9I,GACf,IAAImJ,EAAQ4lC,EAAa/uC,GAEzB,QADW,QAAQmJ,GAASA,EAAQ,CAACA,IACzBL,KAAI,SAAU3K,GAAO,OAAO6B,EAAM,IAAM7B,QAEnD4K,OAAO,KAAS,IAChBqE,KAAK,KACV,OAAO9K,GAAQgnC,EAAS,IAAMA,EAAS,KAAOrd,EAAO,IAAMA,EAAO,KAE/D,SAAS+iB,EAAsBrvC,EAAM0oC,EAAS4G,EAAcC,GAC/D,OAAO,SAAU38B,GACb,IAAIX,EAAWW,EAAShB,gBAAkB,IAAI09B,EAAa18B,GACvD48B,EAAiB58B,EAASf,eAAiB,IAAI09B,EAAmB38B,EAAU81B,GAKhF,MAAO,CAAE1oC,KAAMA,EAAMiS,QAASA,EAASu9B,cAAeA,EAAe9/B,QAJrE,SAAiBR,GACbA,EAAOQ,QAAQuC,GACf/C,EAAOQ,QAAQ8/B,kaCvBvBl6B,EAA6B,WAE7B,SAASA,EAA6BpG,GAClC,IAAIvE,EAAQnQ,KACZA,KAAK0U,OAASA,EACG1U,KAAKi1C,SAAW,GAChBj1C,KAAKk1C,aAAe,GACpBl1C,KAAKm1C,qBAAuB,GAC5Bn1C,KAAKgyC,WAAa,GAEnChyC,KAAKgK,WAAa,CACdC,iBAAkBjK,KAAKiK,iBAAiB3G,KAAKtD,MAC7CgX,mBAAoBhX,KAAKgX,mBAAmB1T,KAAKtD,MACjDo1C,kBAAmB,SAAU/pC,GAAM,OAAO,QAAK8E,EAAM8kC,UAAU,SAAUn7B,GAAQ,OAAO3J,EAAMuE,OAAOyG,IAAM,IAAMrB,EAAKzO,KAAOA,MAC7HgqC,mBAAoB,WAAc,OAAOllC,EAAM8kC,UAC/CK,mBAAoB,WAAc,OAAOnlC,EAAM+kC,cAC/CK,QAAS,SAAUpX,GAEf,OADAhuB,EAAM6hC,WAAWvxC,KAAK09B,GACf,WAAc,OAAO,QAAWhuB,EAAM6hC,WAAY7T,MAwPrE,OAzOArjB,EAAY06B,sBAAwB,SAAU3kC,EAAS4kC,QAC/B,IAAhBA,IAA0BA,EAAc,IAI5C,IAAIC,EAAgBD,EAAY3yB,MAAM,KAClC9H,EAAa06B,EAAc,IAAM,WACjCx6B,GAAsB,QAASw6B,EAAc,IAAMA,EAAc,GAAK,IAGtEC,EAAwB,wBAAwBlsC,KAAKuR,GAYzD,GAXI26B,IAEAz6B,EAAsBy6B,EAAsB,GAC5C36B,EAAa26B,EAAsB,IAEV,MAAzB36B,EAAWvV,OAAO,KAClBuV,EAAaA,EAAW+L,OAAO,GAC/B7L,EAAsB,IAGN,kBACFzR,KAAKyR,GAAsB,CACzC,IAAI06B,EAAc16B,EAAoB4H,MAAM,KAAKlU,QAAO,SAAUinC,EAAQvmC,GAAK,OAAOumC,EAAOz7B,SAAWvJ,GACxGqK,EAAsB06B,EAAYpwC,SAEL,MAAxB0V,IACLA,EAAsBrK,EAAQrL,MAElC,MAAO,CAAEwV,WAAYA,EAAYE,oBAAqBA,IAG1DJ,EAAYjZ,UAAUoI,iBAAmB,SAAU4G,GAC/C,OAAQ7Q,KAAK81C,aAAejlC,GAAW7Q,KAAK81C,cAGhDh7B,EAAYjZ,UAAUmV,mBAAqB,SAAU++B,EAAU71C,GAC3DF,KAAKm1C,qBAAqBY,GAAY71C,GAE1C4a,EAAYjZ,UAAU2yB,iBAAmB,SAAUrsB,EAAMozB,GACrD,IAAIya,EAAah2C,KAAKm1C,qBAAqB5Z,EAAKnwB,OAChD,IAAK4qC,EACD,MAAM,IAAIvjC,MAAM,2DAA6D8oB,EAAKnwB,OACtF,IAAI6qC,EAAOD,EAAW7tC,EAAMozB,GAC5B,OAAO,QAAQ0a,GAAQA,EAAO,CAACA,IAUnCn7B,EAAYjZ,UAAUumC,qBAAuB,SAAU19B,GACnD,2BAA4B,cAAeA,IAC3C,QAAW1K,KAAKk1C,aAAcxqC,IAElCoQ,EAAYjZ,UAAUwmC,mBAAqB,SAAU39B,GACjD,2BAA4B,iBAAkBA,GAC9C1K,KAAKk1C,aAAaz0C,KAAKiK,IAE3BoQ,EAAYjZ,UAAU+qB,KAAO,WACzB,IAAIzc,EAAQnQ,KACRk2C,EAAel2C,KAAKi1C,SAAStmC,KAAI,SAAU4c,GAAO,MAAO,CAACA,EAAIjgB,IAAKigB,MAAS3c,OAAO,KAAY,IASnG,SAASunC,EAAgB5qC,GAErB,IADA,IAAIsF,EAAUtF,EAAOxD,SAASgC,SAAUG,EAAQ,IACvCA,GAAS2G,EAAQuJ,QACtBvJ,EAAUA,EAAQuJ,OACtB,OAAOlQ,EAGX,IAAIksC,GAAe,SAAM,SAAUC,EAASC,EAAQvlB,EAAMC,GAAS,OAAOslB,GAAUD,EAAQtlB,GAAQslB,EAAQrlB,OAkBxGulB,EAAev2C,KAAKi1C,SAASzpB,KAAK4qB,GA9BtC,SAAqB3vC,GACjB,IAAI+vC,EAAa,SAAU3lC,GAAW,OAAQA,GAAWA,EAAQuJ,OAASo8B,EAAW3lC,EAAQuJ,QAAU,EAAI,GAC3G,OAAsC,IAA/B3T,EAAO6E,IAAIwX,MAAM,KAAK1T,OAAiBonC,EAAW/vC,EAAOkiB,mBA4BJ,IAAIha,KAjB3C,SAAUlI,GAC/B,IAAIgwC,EAAkBtmC,EAAM+kC,aAAa5rC,OAAOwR,EAAYoI,QAAQgzB,EAAczvC,IAOlF,OANIgwC,EAAgBrnC,OAAS,GAIzBqnC,EAAgBjrB,KAAK4qB,EAAaD,GAAkB,IAEjD,CAAE1vC,OAAQA,EAAQiE,WAAY+rC,EAAgB,OAUrDC,EAAqBH,EAAa5nC,KAAI,SAAU8E,GAAS,OAAOA,EAAM/I,cACtEisC,EAAwB32C,KAAKk1C,aAC5B5rC,QAAO,SAAUiC,GAAU,QAAQ,QAAQmrC,EAAoBnrC,MAC/DoD,KAAI,SAAUjE,GAAc,MAAO,CAAGjE,YAAQ0N,EAAWzJ,WAAYA,MAC1E6rC,EAAax1C,SAZS,SAAU0S,IAGkB,IAA1CtD,EAAM8kC,SAAS/mC,QAAQuF,EAAMhN,SAC7BgN,EAAMhN,OAAO+E,cAAciI,EAAM/I,eASzC,IAAIksC,EAAYL,EAAan0C,OAAOu0C,GACpC32C,KAAKgyC,WAAWjxC,SAAQ,SAAU+J,GAAM,OAAOA,EAAG8rC,MAClD,mBAAoBA,IAiBxB97B,EAAYjZ,UAAUgK,eAAiB,SAAUpF,GAC7C,iCAAkC,iBAAkBA,GACpD,IAAIowC,EAAU72C,KAAKi1C,SAMnB,OAJI4B,EAAQvtC,QADY,SAAUiiB,GAAO,OAAOA,EAAIjgB,MAAQ7E,EAAO6E,KAAOigB,EAAIngB,QAAU3E,EAAO2E,SACzDgE,QAClC,iCAAkC,+BAAgC3I,GACtEowC,EAAQp2C,KAAKgG,GACbzG,KAAK4sB,OACE,YAEU,IADHiqB,EAAQ3oC,QAAQzH,IAK1B,iCAAkC,mBAAoBA,IACtD,QAAWowC,EAAX,CAAoBpwC,IAJhB,iCAAkC,uCAAwCA,KAYtFqU,EAAYjZ,UAAUi1C,UAAY,WAC9B,OAAO92C,KAAKi1C,SAAStmC,KAAI,QAAK,SAOlCmM,EAAYjZ,UAAUk1C,OAAS,WAC3B,OAAO/2C,KAAKi1C,SAAS3rC,QAAO,QAAK,YAAYqF,KAAI,QAAK,UA2D1DmM,EAAYoI,QAAU,SAAUgzB,EAAczvC,GAAU,OAAO,SAAUiE,GAErE,GAAIjE,EAAO2E,QAAUV,EAAW3C,SAASqD,MACrC,OAAO,EAEX,IAAI+8B,EAAKz9B,EAAW3C,SAChBivC,EAAa7O,EAAGptB,YAAY+H,MAAM,KAClCm0B,EAAcxwC,EAAO6E,IAAIwX,MAAM,KAGnC,KAAK,QAAOk0B,EAAYC,EAAYn1C,MAAM,EAAIk1C,EAAW5nC,SACrD,OAAO,EAGX,IAAI8nC,EAAY,EAAIF,EAAW5nC,aAAU+E,EACrCgjC,EAAoBF,EAAYn1C,MAAM,EAAGo1C,GAAWjkC,KAAK,KACzDmkC,EAAgBlB,EAAaiB,GAAmBxuB,gBACpD,OAAOwf,EAAGltB,wBAA0Bm8B,GAAiBA,EAAc5xC,QAEhEsV,EA1QqB,wDCfhC,SAAUyL,EAAQ1mB,GAAU,aAyD5B,IAAIw3C,EAAoB,gBAEpBC,EAAez3C,EAAQC,OAAO,SAAU,CAAC,OACrBy3C,KAAK,CAAEC,eAAgB,UACvBz3C,SAAS,SAkCjC,WACE,IAAIwL,EAAS,CACXksC,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,aAAa,EACbC,kBAAkB,GAgCpB,SAASC,EAAUtlC,EAAUulC,EAAUC,EAAqBC,GAC1D,OAAO,SAASx1C,EAAOoe,EAAMpO,GAC3B,IAAIA,EAAKpQ,eAAe20C,GAAxB,CAEA,IAAIkB,EAAgBzlC,EAAKkd,WAAWooB,IAChC7sC,EAAOgtC,IAAmBC,EAAYt3B,EAAMm3B,IAAyBvlC,EAAKylC,IAC5Ez1C,EAAMyB,OAAOuO,EAAKD,IAAW,SAAS4lC,GAEpCA,EAAUH,GAAUG,IAAYA,EAChCv3B,EAAKpO,KAAKslC,EAAUK,QAb5Bz4C,KAAKuL,OAAS,SAASmtC,GACrBntC,EAAS1L,EAAQiB,OAAOyK,EAAQmtC,IAkElC14C,KAAKU,KAAO,WACV,MAAO,CACL6K,OAAQ,SAAS1F,GACf,OAAO0F,EAAO1F,IAEhB8yC,YAAaR,OA5IfE,EAAsB,CAAC,SAAU,IAAK,QAAS,WAAY,SAAU,UAAW,WAEhFG,EAAc,SAASt3B,EAAM03B,GAC/B,IAAiD,IAA7CA,EAAc1qC,QAAQgT,EAAK,GAAG23B,UAChC,OAAO,GA8IXvB,EAAaz0C,UAAU,SAAU,CAAC,QAAS,SAASi2C,GAClD,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvD91C,UAAU,SAAU,CAAC,QAAS,SAASi2C,GACtC,OAAOA,EAAMH,YAAY,SAAU,cAAe,IAAI,MAEvD91C,UAAU,UAAW,CAAC,QAAS,SAASi2C,GACvC,OAAOA,EAAMH,YAAY,UAAW,eAAgBN,GAAqB,MAE1Ex1C,UAAU,YAAa,CAAC,QAAS,SAASi2C,GACzC,OAAOA,EAAMH,YAAY,YAAa,eAAgBN,GAAqB,MAE5Ex1C,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9Ex1C,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9Ex1C,UAAU,UAAW,CAAC,QAAS,SAASi2C,GAEvC,SAASC,EAAiBjmC,EAAMkmC,EAAgB93B,EAAM+3B,GACpD,OAAOH,EAAMvtC,OAAOytC,KACjB93B,EAAKpO,KAAKA,KACVmmC,IAAsBT,EAAYt3B,EAAMm3B,MAClB,WAAtBn3B,EAAKpO,KAAK,SAA6C,UAArBoO,EAAK,GAAG23B,UAG/C,SAASK,EAAiBC,EAAMj4B,GAI9B,OAAQA,EAAKpO,KAAK,SAAYoO,EAAKpO,KAAK,UAAYqmC,IAAUX,EAAYt3B,EAAMm3B,GAYlF,MAAO,CACLlxC,SAAU,IACVxB,QAAS,UACTyB,SAAU,IACVC,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe20C,GAAxB,CAEA,IAAI+B,EAhBR,SAAkBtmC,EAAMoO,GACtB,IAAIhS,EAAO4D,EAAK5D,KACZiqC,EAAOrmC,EAAKqmC,KAEhB,MAA2B,cAAlBjqC,GAAQiqC,IAAiC,qBAATA,EAA+B,WAC7C,WAAlBjqC,GAAQiqC,IAAiC,kBAATA,EAA4B,QACpD,UAATjqC,GAA0C,gBAATiqC,GAAmC,WAATA,EAAqB,QAAU,GAUpFE,CAASvmC,GAErB,MAAO,CACLwmC,KAAM,SAASx2C,EAAOoe,EAAMpO,EAAMymC,GAChC,IAAIC,EAAgBT,EAAiB,WAAY,WAAY73B,GAAM,GAEnE,SAASu4B,IACP,OAAOF,EAAQG,YAcjB,OAAQN,GACN,IAAK,QACL,IAAK,WACCF,EAAiBE,EAAOl4B,IAC1BA,EAAKpO,KAAK,OAAQsmC,GAEhBL,EAAiB,eAAgB,cAAe73B,GAAM,IACxDpe,EAAMyB,OAAOk1C,EAAiC,UAAVL,EAlB1C,SAA0BO,GAGxB,IAAIlB,EAAW3lC,EAAKtO,OAAS+0C,EAAQK,WACrC14B,EAAKpO,KAAK,eAAgB2lC,IAG5B,WACEv3B,EAAKpO,KAAK,gBAAiBymC,EAAQM,SAASN,EAAQK,eAa9CJ,GACFt4B,EAAKpO,KAAK,WAAY,GAExB,MACF,IAAK,QAIH,GAHIomC,EAAiBE,EAAOl4B,IAC1BA,EAAKpO,KAAK,OAAQ,UAEhBgmC,EAAMvtC,OAAO,aAAc,CAC7B,IAAIuuC,GAAqB54B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDq3C,GAAqB74B,EAAKpO,KAAK,mBAC9BA,EAAKpQ,eAAe,QAAUoQ,EAAKpQ,eAAe,UACnDs3C,GAAqB94B,EAAKpO,KAAK,iBAE/BgnC,GACFhnC,EAAKmnC,SAAS,OAAO,SAAgCN,GACnDz4B,EAAKpO,KAAK,gBAAiB6mC,MAG3BI,GACFjnC,EAAKmnC,SAAS,OAAO,SAAgCN,GACnDz4B,EAAKpO,KAAK,gBAAiB6mC,MAG3BK,GACFl3C,EAAMyB,OAAOk1C,GAAuB,SAAgCE,GAClEz4B,EAAKpO,KAAK,gBAAiB6mC,MAI7BH,GACFt4B,EAAKpO,KAAK,WAAY,IAKvBA,EAAKpQ,eAAe,eAAiB62C,EAAQW,YAAYC,UACzDpB,EAAiB,gBAAiB,eAAgB73B,GAAM,IAE3DpO,EAAKmnC,SAAS,YAAY,WACxB/4B,EAAKpO,KAAK,kBAAmBA,EAAe,aAI5CimC,EAAiB,eAAgB,cAAe73B,GAAM,IACxDpe,EAAMyB,QAAO,WACX,OAAOg1C,EAAQa,YACd,SAA+BT,GAChCz4B,EAAKpO,KAAK,iBAAkB6mC,cAQzC92C,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAOA,EAAMH,YAAY,aAAc,gBAAiBN,GAAqB,MAE9Ex1C,UAAU,cAAc,WACvB,MAAO,CACLsE,SAAU,IACVxB,QAAS,cACT4C,KAAM,SAASzF,EAAOoe,EAAMpO,EAAMunC,GAC5BvnC,EAAKpQ,eAAe20C,IAEnBn2B,EAAKpO,KAAK,cACboO,EAAKpO,KAAK,YAAa,kBAK9BjQ,UAAU,UAAU,CAAC,QAAS,SAAU,SAASi2C,EAAO33C,GACvD,MAAO,CACLgG,SAAU,IACVE,QAAS,SAAS6Z,EAAMpO,GACtB,IAAIA,EAAKpQ,eAAe20C,GAAxB,CAEA,IAAI12C,EAAKQ,EAAO2R,EAAKwnC,SACrB,OAAO,SAASx3C,EAAOoe,EAAMpO,GAEtB0lC,EAAYt3B,EAAMm3B,KAEjBS,EAAMvtC,OAAO,sBAAwB2V,EAAKpO,KAAK,SACjDoO,EAAKpO,KAAK,OAAQ,UAGhBgmC,EAAMvtC,OAAO,cAAgB2V,EAAKpO,KAAK,aACzCoO,EAAKpO,KAAK,WAAY,IAGpBgmC,EAAMvtC,OAAO,gBAAmBuH,EAAKynC,WAAcznC,EAAK0nC,YAAe1nC,EAAK2nC,SAC9Ev5B,EAAK5gB,GAAG,WAAW,SAASC,GAC1B,IAAIm6C,EAAUn6C,EAAMo6C,OAASp6C,EAAMm6C,QAEnB,KAAZA,GAA8B,KAAZA,KAEwC,IAAxDrC,EAAoBnqC,QAAQ3N,EAAM8F,OAAOwyC,WAAqBt4C,EAAM8F,OAAOu0C,mBAG7Er6C,EAAMgD,iBAERT,EAAMmB,QAGR,WACEtD,EAAGmC,EAAO,CAAE+3C,OAAQt6C,mBASnCsC,UAAU,aAAc,CAAC,QAAS,SAASi2C,GAC1C,OAAO,SAASh2C,EAAOoe,EAAMpO,GACvBA,EAAKpQ,eAAe20C,KAEpByB,EAAMvtC,OAAO,aAAgB2V,EAAKpO,KAAK,aAAgB0lC,EAAYt3B,EAAMm3B,IAC3En3B,EAAKpO,KAAK,WAAY,OA9Z5B,CAoaGyT,OAAQA,OAAO1mB,iECzalBA,QAAQC,OAAO,WAAY,CAAC,OAC3B+C,UAAU,WAAY,CAAC,KAAM,SAAUkE,GACvC,aAgCA,MAAO,CACNjE,MAAM,CACLy2C,QAAe,IACf13B,IAAe,QACfiF,IAAe,QACfgD,KAAe,SACfgxB,SAAe,aACfC,SAAe,aACfC,UAAe,cACfC,UAAe,cACfC,WAAe,eACfC,WAAe,eACfC,aAAe,iBACfC,MAAe,UACfC,MAAe,UACfC,YAAe,gBACfC,YAAe,iBAEhBpqC,YAAa,2BACPzL,QAAS,UACToP,SAAS,EACTxM,KAlDI,SAAUtH,EAAQyG,EAAUxG,GAElCA,EAAO45C,WACV75C,EAAO65C,SAAW,WAAW,OAAO,IAGjC55C,EAAO85C,YACV/5C,EAAO+5C,UAAY,WAAW,OAAO,IAGlC95C,EAAOq6C,cACVt6C,EAAOs6C,YAAc,WAAW,IAAIpiB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOm6C,QACVp6C,EAAOo6C,MAAQ,cAGZn6C,EAAOs6C,cACVv6C,EAAOu6C,YAAc,WAAW,IAAIriB,EAAIpyB,EAAGkF,QAAsB,OAAbktB,EAAExsB,UAAkBwsB,EAAE11B,UAGvEvC,EAAOo6C,QACVr6C,EAAOq6C,MAAQ,eA4BVt6C,WAAY,yBAInBA,WAAW,qBAAsB,CAAC,SAAU,WAAY,SAAWC,EAAQuC,GAC3E,aAEAvC,EAAOw6C,UAAal1B,OAAO7jB,eAAe,iBAAmB6jB,OAAOm1B,UAAUC,iBAAmB,EACjG16C,EAAO26C,SAAW/7C,QAAQoiB,KAAKhhB,EAAOs4C,SAEtCt4C,EAAO4gB,IAAM5gB,EAAO4gB,KAAO,EAC3B5gB,EAAO6lB,IAAM7lB,EAAO6lB,KAAO,EAC3B7lB,EAAO6oB,KAAO7oB,EAAO6oB,MAAQ,GAE7B7oB,EAAO85C,SAAW95C,EAAO26C,WAAa36C,EAAOs4C,QAE7Ct4C,EAAOg6C,UAAYh6C,EAAOg6C,WAAa,GACvCh6C,EAAO46C,cAAgB56C,EAAOg6C,UAAYh6C,EAAO6oB,KACjD7oB,EAAOi6C,WAAaj6C,EAAOi6C,YAAc,GACzCj6C,EAAOk6C,WAAal6C,EAAOk6C,YAAcl6C,EAAOg6C,UAChDh6C,EAAOm6C,aAAen6C,EAAOm6C,cAAgBn6C,EAAOi6C,WAEpD,IAAIvnB,EAAO1yB,EAAO6lB,IAAM7lB,EAAO4gB,IAC/Bi6B,EAAQnoB,EAAO1yB,EAAO6oB,KACtBiyB,EAAU96C,EAAOsD,OAAO,WAAW,WAClCtD,EAAO85C,SAAW95C,EAAO26C,WAAa36C,EAAOs4C,WAG9CyC,EAAW,SAAUC,GACpB,OAAQA,EAAM,GAAKH,EAAQnoB,GAG5B1yB,EAAOi7C,cAAgB,WACtB,OAAO,IAAIt6C,MAAMk6C,IAGlB76C,EAAOk7C,cAAgB,SAAUF,GAChC,IAAIG,EAAQ,EAAEn7C,EAAO6oB,KAErB,OADW7oB,EAAOg6C,UAAUmB,GAAQH,EAAMG,IAI3Cn7C,EAAOo7C,WAAa,SAAUJ,GAC7B,OAAOD,EAASC,IAAUh7C,EAAOs4C,QAAQt4C,EAAO4gB,KAGjD5gB,EAAOq7C,aAAe,WACjBr7C,EAAO+5C,cAAgB/5C,EAAO65C,YACjC75C,EAAOu6C,YAAY,CAACe,OAAOt7C,EAAOs4C,UAAUxuC,MAAK,WAChD9J,EAAOs4C,QAAUt4C,EAAO4gB,IACxB5gB,EAAOq6C,MAAM,CAACiB,OAAOt7C,EAAOs4C,cAK/Bt4C,EAAOu7C,SAAW,SAAUP,GAC3B,IAAKh7C,EAAO65C,WAAY,CACvB,IAAI2B,EAAW58C,QAAQoiB,KAAKhhB,EAAO4gB,IAAMm6B,EAASC,IAElDh7C,EAAOs6C,YAAY,CAACgB,OAAOE,IAAW1xC,MAAK,WAC1C9J,EAAOs4C,QAAUkD,EACjBj5C,GAAS,WACRvC,EAAOo6C,MAAM,CAACkB,OAAOt7C,EAAOs4C,kBAMhCt4C,EAAOsB,IAAI,YAAY,WACtBw5C,UAIDxjC,IAAI,CAAC,iBAAkB,SAAUjI,GACjC,aAEAA,EAAeosC,IAAI,2BAElB,siDCvHF,SAASC,EACP1mC,EACAL,EACA6C,EACAmkC,EACA71C,EACA81C,EACAC,EACAC,EACAC,GAEA,MAAMC,EAAKj9C,KA+FX,SAASk9C,EAAcr3C,EAAK8B,EAAMkF,GAChC,MAAMswC,EAAUN,EAAoBnsC,IAAI7K,IAAQ,GAE5CgH,SACKswC,EAAQlnC,EAAWJ,UAE1BsnC,EAAQlnC,EAAWJ,UAAYlO,EAGjCk1C,EAAoBO,IAAIv3C,EAAKs3C,GAG/B,SAASE,EAAOC,GA3BhB,IAAqBC,EA4BnBtnC,EAAWunC,OAAOF,GAAKA,EACvBJ,EAAcH,EAAgB9mC,EAAWunC,QA7BtBD,EA8BPD,EAAK,OAAS,OA7B1B1nC,EAAQwE,OAAOqjC,YACb,CACEF,IAAKA,GAEP,KA0BGtnC,EAAWynC,SACdznC,EAAWhS,SA7GfgS,EAAWJ,SAAWI,EAAW0nC,SAAS9nC,SAwS1ConC,EAAG5vC,QAlFH,WACE4I,EAAW2nC,OAAS,OAEpB,MAAMC,EAAY5nC,EAAW0nC,SAASG,MAChCC,EAAa9nC,EAAW0nC,SAASK,UACjCC,EAAgBn8B,KAAKgF,IACzBT,SAAS63B,gBAAgBC,aACzB53B,OAAO63B,aAAe,GAElBC,EAAeh4B,SAAS63B,gBAAgBI,YAG9Cj4B,SAAS63B,gBAAgBK,MAAMC,YAAY,oBAAqBX,GAChEx3B,SAAS63B,gBAAgBK,MAAMC,YAAY,qBAAsBT,GACjE13B,SAAS63B,gBAAgBK,MAAMC,YAC7B,wBACAP,GAEF53B,SAAS63B,gBAAgBK,MAAMC,YAC7B,uBACAH,GAGF,IAAII,GAAK,EACT,MAAMC,EAAiB7B,EAAoBnsC,IAAIssC,IAAoB,GAC7D2B,EAAgB9B,EAAoBnsC,IAAIqsC,IAAmB,GAEjE9mC,EAAW2oC,QAAUF,EAAezoC,EAAWJ,UAC3C6oC,EAAezoC,EAAWJ,UAC1B,GACJI,EAAWunC,OAASmB,EAAc1oC,EAAWJ,UACzC8oC,EAAc1oC,EAAWJ,UACzB,GAEAI,EAAW2oC,QAAQC,aAAe5oC,EAAWunC,OAAOF,GACtDmB,GAAK,EAELxoC,EAAWunC,OAAOF,IAAK,EAGa,iBAAlCrnC,EAAW0nC,SAASmB,WACtBzB,EAAOoB,GA3LThmC,EAAOi5B,GA/DT,WACE,MAAMqN,EAAS9oC,EAAW0nC,SAASoB,OAC7BH,KACJ3oC,EAAW2oC,SACX3oC,EAAW2oC,QAAQC,aACnB5oC,EAAW2oC,QAAQC,YAAYxzC,IAG3B2zC,EACJzP,OAAOt5B,EAAW0nC,SAASsB,kBAC3B1P,OAAOt5B,EAAW0nC,SAASuB,qBACzB3P,OAAOt5B,EAAW0nC,SAASsB,iBAE/B,SAAML,IAAaI,GAAYD,GAkDrBI,GAAa,aAAe,cAAe,KAAM,CACzDtpC,SAAU,YAgMZ,IAAI0nC,EAAM,GAERA,EADEtnC,EAAW0nC,SAASoB,SAAW9oC,EAAW0nC,SAASyB,gBAC/C,OAEA,UAGRxpC,EAAQwE,OAAOqjC,YACb,CACEF,IAAAA,EACAM,UAAAA,EACAE,WAAAA,EACAE,cAAAA,EACAI,aAAAA,GAEF,KAGF,MAAME,EAAQl4B,SAASg5B,cAAc,SACrCh5B,SAASpB,KAAKq6B,YAAYf,GAC1BA,EAAMgB,MAAMC,WACV,2BAA6BvpC,EAAW0nC,SAASG,MAAQ,gBAe7Db,EAAGwC,MAxLH,WACE,MAAMZ,EAAc5oC,EAAW2oC,QAAQC,YAEvC,GAAIA,GAAeA,EAAYxzC,GAAI,CAEjC,MAAMq0C,EAAU9C,EACb8C,UACAtlC,OAAOva,QAAQkD,QAAQsjB,SAASs5B,cAAc,eAC9CC,qBAAoB,GACpBzM,MACCl9B,EAAW0nC,SAASkC,iBAClB,yCAEHC,GAAG,MACH37C,OAAO,UAEVy4C,EACGmD,KAAKL,GACL30C,MAAK,WACJ,OAAO+xC,EAAIkD,gBAAgBC,aAAa,CACtC50C,GAAIwzC,EAAYxzC,GAChB60C,QAAQ,EACRC,YAAa,UACbC,SAAUC,GAAAA,GAASz4B,OAAO,yBACzB04B,YAEJv1C,MAAK,WACJ0N,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAGbwM,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM,YAAa6nB,QAyJnC+vB,EAAGI,OAASA,EACZJ,EAAGsD,SArJH,WACE,MAAMC,EAAWz5C,EAAGkF,QACd4yC,EAAc5oC,EAAW2oC,QAAQC,YA2DvC,OAzDIA,GAAeA,EAAYxzC,IAC7ByxC,EAAIkD,gBACDS,YAAY,CACXC,MAAO7B,EAAYxzC,GACnBs1C,YAAY,IAEbL,SAASv1C,MAAK,SAAUpD,GACvB64C,EAAS7zC,QACPi0C,GAAAA,CAAKj5C,EAAKk5C,KAAK/+C,MAAM,IAAI,SAAUg/C,GACjC,IAAIC,EASJ,GAPsB,OAAlBD,EAAIE,YACND,EACE9qC,EAAW0nC,SAASsD,eACpBhrC,EAAW2oC,QAAQ1vB,MACnB,UAAY4xB,EAAII,WAGE,QAAlBJ,EAAIE,UACN,OAAQ/qC,EAAW0nC,SAASwD,iBAC1B,IAAK,gBACHJ,EAASD,EAAIM,OACTnrC,EAAW0nC,SAAS0D,WAAaP,EAAIM,OACrC,SACJ,MAEF,IAAK,cACHL,EAASD,EAAIM,OACTN,EAAIQ,KAAKC,OAAST,EAAIQ,KAAKE,SAC3B,SACJ,MAEF,IAAK,iBACHT,EAASD,EAAIM,OAASN,EAAIQ,KAAKE,SAAW,SAC1C,MAEF,QACET,EAASD,EAAIM,OACTnrC,EAAW0nC,SAAS0D,WAAaP,EAAIM,OACrC,SAKV,MAAO,CACLL,OAAQA,EACRjd,QAASgd,EAAIW,KACbC,UAAWrB,GAAAA,CAAOS,EAAIY,WAAW95B,OAAO,+BAK/CvF,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,MAIbszB,EAAS/8C,SAyFlBw5C,EAAG0E,eAnOH,WACE,MAA4C,YAArC1rC,EAAW0nC,SAASiE,aAA6B,OAAS,OAmOnE,MAAMC,EAAgB,CACpB9C,OAAQ,CAAC,SAAU,OAAQ,UAAW,UAAW,aACjD+C,QAAS,CAAC,YAKZvuC,OAAO+6B,eAAer4B,EAAY,cAAe,CAC/CvF,MACE,IAAIpK,EAAS2P,EAAW0nC,SAASoE,aAKjC,OAJIF,EAAc9C,OAAOzlC,SAASrD,EAAW2nC,QAC3Ct3C,EAAS2P,EAAW0nC,SAASqE,cACtBH,EAAcC,QAAQxoC,SAASrD,EAAW2nC,UACjDt3C,EAAS2P,EAAW0nC,SAASsE,gBACxB37C,KAKX2P,EAAWinC,cAAgBA,EAE3B32B,OAAO27B,iBACL,WACA,SAAUhsC,GACa,SAAjBA,EAAIvO,KAAKuO,IACXmnC,GAAO,GACmB,SAAjBnnC,EAAIvO,KAAKuO,KAClBmnC,GAAO,MAGX,qdC9VJ,SAAS8E,EAASlsC,EAAYF,GAE5B,MAAM3H,EAAS2H,EAAUo5B,SAEzBl5B,EAAW0nC,SAAW,CACpByE,OAAQ,UACRC,MAAM,GAGRC,GAAAA,CAAOl0C,GAAQ,SAAU5J,EAAOqB,GAChB,KAAVrB,GAAiB+9C,GAAAA,CAAO/9C,KACZ,SAAVA,IACFA,GAAQ,GAGI,UAAVA,IACFA,GAAQ,GAGVyR,EAAW0nC,SAAS93C,GAAOrB,MAcjC,SAASg+C,EACPC,EACAC,EACAruC,EACAsuC,EACAC,EACAC,GAEAxuC,EAAkBgB,WAAU,GAIvBstC,EAAc1iD,SAAS0R,QAAQjB,MAClCiyC,EAAc1iD,SAAS0R,QAAQjB,IAAM,IAIvCiyC,EAAc1iD,SAAS0R,QAAQjB,IAAI,qBACjC,gCAEFiyC,EAAc1iD,SAAS0R,QAAQjB,IAAI,iBAAmB,WACtDiyC,EAAc1iD,SAAS0R,QAAQjB,IAAIoyC,OAAS,WAG5CF,EAA4BG,UAAUF,GAGtCJ,EACGh1C,MAAM,MAAO,CACZkxB,UAAU,IAEXlxB,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAa4xC,EACbhiD,WAAY,4BAEbyM,MAAM,aAAc,CACnBgE,IAAK,UACLL,YAAa6xC,EACbjiD,WAAY,2BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAa8xC,EACbliD,WAAY,4BAEbyM,MAAM,WAAY,CACjBgE,IAAK,QACLL,YAAa+xC,EACbniD,WAAY,yBAEbyM,MAAM,gBAAiB,CACtBgE,IAAK,aACLL,YAAagyC,EACbpiD,WAAY,8BAEbyM,MAAM,cAAe,CACpBgE,IAAK,WACLL,YAAaiyC,EACbriD,WAAY,+PCnGlB,SAASsiD,EACPrtC,EACAwC,EACA8qC,EACAzG,EACAE,EACAD,GAEA,MAAME,EAAKj9C,KAIX,SAASmmC,EAAY3gC,GACnB,OAAO,SAAU0nB,GACf+vB,EAAGuG,OAAOh+C,GAAQ0nB,EAAIvlB,KAEtB,MAAM87C,EAAQF,EACXG,SACAC,YACC1tC,EAAW0nC,SAASiG,0BAClB,yBAEHC,WAAW,oBACXC,SAAS,OAEZP,EAASxD,KAAK0D,IAIlB,SAASM,IACP9tC,EAAW+tC,SAAU,EAYvB,SAASC,IACHhuC,EAAW0nC,SAASoB,OACtBtmC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAASylC,IACP2B,EAAGiH,KAAO,GACVjH,EAAGkH,QAAU,KACblH,EAAGmH,UAAY,KACfnH,EAAGoH,SAASC,eACZrH,EAAGoH,SAASE,uBAELtuC,EAAW2oC,QAAQC,YAE1B5oC,EAAWuuC,gBAAiB,EAiD9BvH,EAAG5vC,QA3EH,WACE4I,EAAW2nC,OAAS,UAGpB3nC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAC/C9mC,EAAW+tC,SAAU,GAsEvB/G,EAAGwH,OA1CH,WACExuC,EAAW+tC,SAAU,EAEjB/tC,EAAW2oC,QAAQC,aAAe5oC,EAAW2oC,QAAQC,YAAYxzC,GACnEyxC,EAAIkD,gBACDP,MACCiF,GAAAA,CACE,CACEr5C,GAAI4K,EAAW2oC,QAAQC,YAAYxzC,GACnCs5C,WAAY1uC,EAAW0nC,SAASgH,WAChCC,SACE3uC,EAAW0nC,SAASsD,eAAiBhrC,EAAW2oC,QAAQ1vB,MAE5D+tB,EAAGiH,OAGN5D,SAASv1C,MAAK,kBACNkyC,EAAGuG,OAAOiB,OAEjB,MAAMhB,EAAQF,EACXG,SACAC,YACC1tC,EAAW0nC,SAASkH,0BAClB,2BAEHhB,WAAW,oBACXzpC,OAAOva,QAAQkD,QAAQsjB,SAASs5B,cAAc,mBAEjD4D,EAASxD,KAAK0D,MAEf14C,KAAKuwC,GACLvwC,KAAKk5C,GACL5hC,MAAM8jB,EAAY,WAClB2e,QAAQf,IAEXA,IACA5d,EAAY,YAOhB8W,EAAG8H,KAhDH,WACEzJ,IACA2I,KAgDFhH,EAAGiH,KAAO,GACVjH,EAAGuG,OAAS,GC/Gd,SAASwB,EAAW/uC,EAAYgvC,GAC9B,MAAMC,EAAgB,CACpB75C,GAAI,MACJkW,MAAOtL,EAAW0nC,SAASp8B,OAGvBu7B,EAAM,GAqEZ,OAnEAA,EAAIqI,QAAUlvC,EAAW0nC,SAASyH,OAAS,QAE3CtI,EAAIuI,YAAcJ,EAChBnI,EAAIqI,QAAU,oBACdD,EACA,CACEjc,OAAQ,CACNqc,OAAQ,OACR7zC,IAAKqrC,EAAIqI,QAAU,4BAErBrD,QAAS,CACPwD,OAAQ,OACR7zC,IAAKqrC,EAAIqI,QAAU,6BAErBI,UAAW,CACTD,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,8BAKzBrI,EAAIkD,gBAAkBiF,EACpBnI,EAAIqI,QAAU,wBACdD,EACA,CACE9oC,OAAQ,CACNkpC,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,yBAErBlF,aAAc,CACZqF,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,uCAErB1F,MAAO,CACL6F,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,+BAErB1E,YAAa,CACX6E,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,wCAErBK,iBAAkB,CAChBF,OAAQ,OACR7zC,IAAKqrC,EAAIqI,QAAU,0CACnBxzC,QAAS,CACP,oBAAgBwC,GAElBsxC,iBAAkB5lD,QAAQ6c,UAE5BgpC,mBAAoB,CAClBJ,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,+CAKzBrI,EAAI6I,YAAcV,EAChBnI,EAAIqI,QAAU,oBACdD,EACA,CACE9oC,OAAQ,CACNkpC,OAAQ,MACR7zC,IAAKqrC,EAAIqI,QAAU,uBAKlBrI,uRC9DT,SAAS8I,EACP3kD,EACAgV,EACAzS,EACAqiD,EACAC,EACArtC,EACApI,EACAysC,EACAE,EACAD,GAEA,MAAME,EAAKj9C,KACX,IAAI+lD,EACAC,EACAC,EACAC,EAmBJ,SAASC,IACP3iD,GAAS,WACP,MAAMT,EAAU+iD,EAAU,GAAGM,uBAAuB,iBAAiB,GAEjErjD,IACFA,EAAQsjD,UAAYtjD,EAAQujD,iBAMlC,SAASngB,EAAY3gC,GACnB,OAAO,SAAU0nB,GACf+vB,EAAGuG,OAAOh+C,GAAQ0nB,EAAIvlB,KAEtBw+C,KAIJ,SAASI,EAAYziB,GACnBgZ,EAAIuI,YACDpc,OAAOnF,GACPwc,SAASv1C,MAAK,SAAUpD,UAChBs1C,EAAGuG,OAAOgD,iBAEbjE,GAAAA,CAAOtsC,EAAW2oC,QAAQC,eAC5B5oC,EAAW2oC,QAAQC,YAAc,CAC/BxzC,GAAI1D,EAAKk3C,YAAYxzC,IAGvB4K,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,UAGvDmH,EAAU,GAAGU,aAAaC,QAAQ,IAElCP,OAED9jC,MAAM8jB,EAAY,qBAwDvB,SAAS8d,IACHhuC,EAAW0nC,SAASoB,OACtBtmC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAkB/C,SAAS8wC,IAEL1wC,EAAW2oC,SACX3oC,EAAW2oC,QAAQC,aACnB5oC,EAAW2oC,QAAQC,YAAYxzC,IAE/ByxC,EAAIkD,gBACDtvC,IAAI,CACHrF,GAAI4K,EAAW2oC,QAAQC,YAAYxzC,KAEpCi1C,SAASv1C,MAAK,SAAUpD,UAChBs1C,EAAGuG,OAAOmD,eAGbh/C,EAAKu4C,SACPjqC,EAAW2oC,QAAQC,YAAYqB,QAAS,EACxCjqC,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,SAE5B,cAArBj3C,EAAKi/C,YACPnuC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAE7C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,gBAIhDwM,OAAM,SAAU6K,GACf,OAAQA,EAAI0wB,QACV,KAAK,IACHnlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IAEHI,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAC/CkH,IACA,MACF,KAAK,IACHxrC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAQ1B,SAAS25B,EAAMhM,GACb,MAAM4G,EAAOsE,EAAU,GAAGU,aAAaK,UAEnCjM,GAA6B,KAAnBA,EAAOH,SAAkBG,EAAOkM,UAK1ClM,GAA6B,KAAnBA,EAAOH,SAKR,KAAT+G,GAKJ8E,EACE7B,GAAAA,CACE,CACEjD,KAAMA,GAERxrC,EAAW2oC,UAqCjB,SAAS6B,IAELxqC,EAAW2oC,SACX3oC,EAAW2oC,QAAQC,aACnB5oC,EAAW2oC,QAAQC,YAAYxzC,IAE/ByxC,EAAIkD,gBACDS,YAAY,CACXC,MAAOzqC,EAAW2oC,QAAQC,YAAYxzC,GACtC27C,cAAc,EACd37C,GAAI66C,QAAiB/xC,IAEtBmsC,SAASv1C,MAAK,SAAUpD,GAIvB,UAHOs1C,EAAGuG,OAAO3E,YAGbl3C,EAAKuC,MAAO,CACd,IAAI+8C,GAAQ,EACR5pC,EAAI,EACR,IAAKA,EAAI,EAAG4pC,GAAQ,EAAO5pC,EAAI1V,EAAKk5C,KAAKzxC,OAAQiO,IAAK,CACpD,MAAMrI,EAAIkyC,GAAAA,CAAMjxC,EAAWkxC,SAAU,CACnC97C,GAAI1D,EAAKk5C,KAAKxjC,GAAGhS,KAEd2J,EAGMrN,EAAKk5C,KAAKxjC,GAAGywB,OACtB94B,EAAE84B,MAAO,IAHTmZ,GAAQ,EACRhxC,EAAWkxC,SAAS1mD,KAAKkH,EAAKk5C,KAAKxjC,KAMN,QAA3B1V,EAAKk5C,KAAKxjC,GAAG2jC,WAAwBr5C,EAAKk5C,KAAKxjC,GAAGywB,OA1C3CziC,EA2CK1D,EAAKk5C,KAAKxjC,GAAGhS,GA1ChCyxC,EAAI6I,YACRvpC,OAAO,CACN/Q,GAAIA,EACJyiC,MAAM,IAEPwS,SAASj+B,OAAM,SAAU6K,GACxB1G,QAAQnhB,MAAM6nB,OAwCN+5B,GAEFd,IAGEx+C,EAAKk5C,KAAKxjC,EAAI,GAAGywB,OACnBoY,EAAgBv+C,EAAKk5C,KAAKxjC,EAAI,GAAGhS,IArD7C,IAAuBA,KAyDhBgX,OAAM,SAAU6K,GACf,OAAQA,EAAI0wB,QACV,KAAK,IACHnlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAtS1B+vB,EAAGuG,OAAS,GACZvtC,EAAWkxC,SAAW,GACtBlK,EAAGmK,aAAe,CAChBC,gBAAgB,EAChBC,YAAY,EACZC,OAAO,EACPh/C,MAAM,EACNi/C,WAAY,UA4UdvK,EAAG5vC,QAvCH,WACE4I,EAAW2nC,OAAS,OACpB3nC,EAAW+tC,SAAU,EACrB/tC,EAAW0nC,SAAS8J,UAAW,EAE/BxK,EAAGyK,aAAe,GAGhBzxC,EAAW2oC,QAAQC,aACnB5oC,EAAW2oC,QAAQC,YAAYqB,QAG/BjqC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAE/CkH,MAGA0C,IAGAX,EAAsBH,EAAUpF,EAAa,KAC7CwF,EAAyBJ,EAAUc,EAAgB,MAGrDZ,EAAY4B,EAAE,iBAAiBlB,aAAa,CAC1CmB,YAAa3xC,EAAW0nC,SAASkK,oBAAsB,iBACvDxnD,OAAQ,CACNynD,MAAO,SAAUC,EAAQlN,GACvBgM,EAAMhM,IAERmN,MAAO,WACLhoD,KAAKioD,gBAQbhL,EAAG4J,MAAQA,EACX5J,EAAGiL,aAtIH,WACE,MAAMzG,EAAOsE,EAAU,GAAGU,aAAaK,UAG1B,KAATrF,IAKJ8E,EACE7B,GAAAA,CACE,CACEjD,KAAMA,GAERxrC,EAAW2oC,UAIfmH,EAAU,GAAGU,aAAawB,aAqH5BhL,EAAGr4C,UA9RH,SAAmB+C,GACjB,MAAMwgD,EAAK,IAAIC,SAEfD,EAAG9tB,OAAO,OAAQ1yB,EAAK7B,MAEvBuK,EACGipC,KACCrjC,EAAW0nC,SAASyH,OAClB,0BACAnvC,EAAW2oC,QAAQC,YAAYxzC,GAC/B,4BACA4K,EAAW0nC,SAASp8B,MACtB4mC,EACA,CACE1C,iBAAkB5lD,QAAQ6c,SAC1B/K,QAAS,CACP,oBAAgBwC,KAIrBpJ,MAAK,SAAUpD,IACdA,EAAOA,EAAKA,MAEH0D,WACA4xC,EAAGuG,OAAO6E,eAGjB9B,EACE7B,GAAAA,CACE,CACEjD,KACE,YACAxrC,EAAW0nC,SAASyH,OACpB,0BACAnvC,EAAW2oC,QAAQC,YAAYxzC,GAC/B,iCACA1D,EAAK0D,GACL,UACA4K,EAAW0nC,SAASp8B,MACpB,qBACA5Z,EAAKnC,KACL,OACF8iD,aAAc3gD,EAAK0D,IAErB4K,EAAW2oC,WAIfzY,EAAY,oBAEbA,EAAY,oBA+OnBllC,EAAOsB,IAAI,YApOX,WACEsjD,EAAU1hD,OAAO6hD,GACjBH,EAAU1hD,OAAO8hD,GAEjBD,EAAsB,KACtBC,EAAyB,QAgO3BhwC,EAAW1T,IAAI,aA7Nf,SAAoBoF,EAAMnH,GACpBA,GACFA,EAAS+nD,GAAAA,CAAQtyC,EAAWkxC,oUClJlC,SAASqB,EAAkBvnD,EAAQgV,EAAY6mC,EAAKyG,EAAU77C,EAAU2I,GACtE,MAAM4sC,EAAKj9C,KACX,IAAIyoD,EAAU,KACVC,EAAgB,KACpBzyC,EAAW0yC,UAAY,GAEvB,MAAMC,EAAkB,CACtBC,sBAAsB,EACtBC,mBAAmB,EACnB19B,QAAS,SAAU5mB,GACjB,MAAqB,kBAAVA,GACDA,EAAQ,IAAM,IAEjBA,IAwGX,SAASukD,WACA9L,EAAGuG,OAAOiB,OACjBxuC,EAAWzJ,MAAM,QAGjBywC,EAAG+L,OAASC,GAAAA,CAAWP,GAEvBzL,EAAGiH,KAAO,GACVjH,EAAGoH,SAASC,eACZrH,EAAGoH,SAASE,gBAEZ,MAAMd,EAAQF,EACXG,SACAC,YACC1tC,EAAW0nC,SAASkH,0BAClB,2BAEHhB,WAAW,oBACXzpC,OAAOva,QAAQkD,QAAQsjB,SAASs5B,cAAc,mBAEjD4D,EAASxD,KAAK0D,GAmJhBxG,EAAGiM,iBArDH,SAA0BjN,GAExB,MAAMkN,EAAWlM,EAAG+L,OAAO/M,GACrBmN,EAAa1hD,EAASoZ,KAAK,gBACjC,GAAIsoC,EAAWh6C,OAAQ,CACrB,MAAMi6C,EAASxpD,QAAQkD,QACrBqmD,EAAW,GAAGzJ,cAAc,mBAExB/sC,EAAQ/S,QAAQkD,QACpBqmD,EAAW,GAAGzJ,cAAc,qBAExB2J,EAAQD,EAAOvoC,KAAK,SAEtBwoC,EAAMl6C,QACRk6C,EAAMC,IAAI,UAAW,QAGvBF,EAAO/oD,GAAG,SAAS,KACjBgpD,EAAMC,IAAI,UAAW,QACI,mBAAlB32C,EAAM42C,QACT52C,EAAM42C,QAAQ,SACd52C,EAAM,GAAG62C,WAGf72C,EAAMtS,GAAG,UAAWgiB,IAClBrhB,EAAOgD,QAAO,WACwB,iBAAzBklD,EAASO,MAAMrkD,QACxB8jD,EAASO,MAAMrkD,MAAQ,MAKzB,MAAMmB,EAAQ5E,MAAMstB,KAAK5M,EAAEjc,OAAOG,OAE5BmjD,EApRL,QAoRiBR,EAAS59C,OAAOqa,KACdpf,EAAMojD,MAAM9jD,GAASA,EAAK8f,MAAQ+jC,KAKpDR,EAAShpD,QAAU,GACnBgpD,EAASO,MAAMrkD,MAAQ8jD,EAAS59C,OAAOs+C,gBAEvCV,EAAShpD,QAAUqG,EAAMmI,KAAK7I,IAC5B,MAAM,KAAEN,EAAF,KAAQogB,EAAR,KAAc1W,GAASpJ,EAC7B,MAAO,CAAEN,KAAAA,EAAMogB,KAAAA,EAAM1W,KAAAA,EAAMpJ,KAAAA,MAG/Bm3C,EAAGiH,KAAKiF,EAASO,MAAMvW,OAASgW,EAAShpD,gBAkBjD88C,EAAG6M,eANH,SAAwBX,EAAUlN,GAGhCkN,EAAShpD,QAAQqf,OAAOy8B,EAAO,GAC/BgB,EAAGiH,KAAKiF,EAASO,MAAMvW,OAASgW,EAAShpD,SAuB3C88C,EAAG8M,eAfH,SAAwBZ,GACtB3iC,QAAQN,IAAI,kBAAmBijC,GAC/B,MAAMC,EAAa1hD,EAASoZ,KAAK,gBAC3BlO,EAAQ/S,QAAQkD,QACpBqmD,EAAW,GAAGzJ,cAAc,sBAExB,eAAEqK,EAAF,OAAkBnpC,GAAWsoC,EAAS59C,OACxCy+C,GACFp3C,EAAME,KAAK,WAAY,YAErB+N,GACFjO,EAAM,GAAGq3C,aAAa,SAAUppC,IAapCo8B,EAAGiN,uBAPH,WACE,MAAMC,EAAWvoD,MAAMstB,KAAKxnB,EAASoZ,KAAK,oBACpCspC,EAAUD,EAASA,EAAS/6C,OAAS,GACvCg7C,GAAWA,EAAQltC,gBACrBktC,EAAQltC,kBAMZ+/B,EAAG5vC,QAhTH,WACE4I,EAAW2nC,OAAS,UAGpBX,EAAG2B,QAAU,CACXvzC,GAAI4K,EAAW0nC,SAAStyC,GACxBg/C,cAAe,YACfn7B,KAfK,YAAco7B,GAAAA,CAAQ,EAAG,MAkBhCr0C,EAAW0nC,SAAS8J,UAAW,EAC/BxxC,EAAW+tC,SAAU,EAErBlH,EAAIuI,YACDE,UAAU,CACTl6C,GAAI4K,EAAW0nC,SAAStyC,GACxB0zC,QAAQ,IAETuB,SAASv1C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPu+C,EAAU9gD,EAAK8gD,QACfC,EAAgBO,GAAAA,CAAWthD,EAAKk5C,MAChC5D,EAAG+L,OAASC,GAAAA,CAAWP,OAG1B39C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI4/B,EAAG+L,OAAO55C,OAAQiO,IAAK,CACzC,MAAMktC,EAAQtN,EAAG+L,OAAO3rC,GAExB,GADApH,EAAW0yC,WAAa4B,EAAMr7C,UACH,IAAhBq7C,EAAMb,OACXa,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASthD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C25C,EAAGyN,UAAUrtC,GAAKotC,EAAOF,EAAMb,MAAMc,eAK5CnoC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,OA2QpB+vB,EAAGwH,OA5LH,WAEExuC,EAAW+tC,SAAU,EAErB,MAAMr8C,EAAO,IAAKs1C,EAAGiH,MAErB,IAAK,IAAI7mC,EAAI,EAAGA,EAAI4/B,EAAG+L,OAAO55C,OAAQiO,IAAK,CACzC,MAAMktC,EAAQtN,EAAG+L,OAAO3rC,GACpBktC,EAAMb,YAA4C,IAA5B/hD,EAAK4iD,EAAMb,MAAMvW,SAEpCoP,GAAAA,CAAOgI,EAAMI,WAChB1N,EAAG2B,QAAQ2L,EAAMI,SAAW/oD,MAAMoQ,QAAQrK,EAAK4iD,EAAMb,MAAMvW,QACvDxrC,EAAK4iD,EAAMb,MAAMvW,OAAOlgC,OACxBtL,EAAK4iD,EAAMb,MAAMvW,QAGnB91B,IAAMorC,IACHlG,GAAAA,CAAOtsC,EAAW0nC,SAAS0M,iBAC9BpN,EAAG2B,QAAQyL,cAAgBp0C,EAAW0nC,SAAS0M,cAC/CpN,EAAG2B,QAAQ1vB,KAAOttB,MAAMoQ,QAAQrK,EAAK4iD,EAAMb,MAAMvW,QAC7CxrC,EAAK4iD,EAAMb,MAAMvW,OAAOlgC,OACxBtL,EAAK4iD,EAAMb,MAAMvW,SAIN,WAAfoX,EAAMr7C,OACRvH,EAAK4iD,EAAMb,MAAMvW,OAASxrC,EAAK4iD,EAAMb,MAAMvW,OAAOxkC,KAC/C+U,GAASA,EAAK5d,SAMvB,MAAM8kD,EAAehpD,MAAMoQ,QAAQirC,EAAG+L,QAClC/L,EAAG+L,OAAO1/C,QAAQihD,GAAyB,WAAfA,EAAMr7C,OAClC,GAEE27C,EAAUnG,GAAAA,CACd,CACEjD,KAAM95C,GAERs1C,EAAG2B,SAGCkM,EAA4B,MAARnjD,GAAgBijD,EAAax7C,OAAS,EAC1D27C,EAAyB,OAATpjD,GAA0C,OAAzBqW,KAAKE,UAAUvW,GAnFxD,IAAgBqjD,EApCKxlD,GAwHGslD,GApFRE,EAqFHH,EApFJx6C,EAAM,CACXoB,IAAM,GAAEqrC,EAAIqI,wBAAwB6F,EAAQ3/C,aAC5CsG,QAAS,CAAE,oBAAgBwC,GAC3BxM,KAAMsjD,GAAAA,CAAeD,EAAS,IACzBpC,EACHsC,gBAAiB,IAAI9C,WAEvB9C,OAAQ,UA8ENyF,EACAjO,EAAIuI,YAAYvD,QAAQ+I,GAASvK,SACjC6K,QAAQC,OAAO,iBAGhBrgD,KAAKg+C,GACL1mC,OAhIgB7c,EAgIE,SAjHZ,SAAU0nB,GACf,MAAMu2B,EAAQF,EACXG,SACAC,YACC1tC,EAAW0nC,SAASiG,0BAClB,yBAEHC,WAAW,oBACXzpC,OAAOva,QAAQkD,QAAQsjB,SAASs5B,cAAc,mBAEjD4D,EAASxD,KAAK0D,GAEdxG,EAAGuG,OAAOh+C,GAAQ0nB,EAAIvlB,QAsGvBm9C,SAAQ,KACF7H,EAAGiH,KAAK7f,UACX4Y,EAAGiH,KAAO,IAjLhBjuC,EAAW+tC,SAAU,MAqTvB/G,EAAGI,OA9HH,SAAgB73C,EAAM2a,GACf88B,EAAGiH,KAAK1+C,KACXy3C,EAAGiH,KAAK1+C,GAAQ,IAGlB,MAAMyJ,EAAMguC,EAAGiH,KAAK1+C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTguC,EAAGiH,KAAK1+C,GAAMga,OAAOvQ,EAAK,GAE1BguC,EAAGiH,KAAK1+C,GAAM/E,KAAK0f,IAsHvB88B,EAAG7c,OAlHH,SAAgB56B,EAAM2a,GAKpB,OAJK88B,EAAGiH,KAAK1+C,KACXy3C,EAAGiH,KAAK1+C,GAAQ,IAGXy3C,EAAGiH,KAAK1+C,GAAM0I,QAAQiS,IAAS,GA8GxC88B,EAAGyN,UAAY,GAEfzN,EAAGiH,KAAO,GACVjH,EAAGuG,OAAS,GACZvG,EAAGoH,SAAW,GC9VhB,SAASgH,EAAiBp1C,EAAYwC,EAAQpI,EAAOysC,EAAKE,GACxD,MAAMC,EAAKj9C,KACX,IAAIyoD,EAAU,KA8Gd,SAAS6C,IACP,MAAO,YAAchB,GAAAA,CAAQ,EAAG,KA9GlCrN,EAAGyN,UAAY,GAGfzN,EAAGiH,KAAO,GACVjH,EAAGuG,OAAS,GACZvG,EAAGoH,SAAW,GACdpH,EAAGsO,aAAc,EAkPjBtO,EAAG5vC,QAlHH,WAGE,GAFA4I,EAAW2nC,OAAS,SAEhB3nC,EAAW2oC,SAAW3oC,EAAW2oC,QAAQC,YAC3C,GAAI5oC,EAAW2oC,QAAQC,YAAYxzC,GACjC,GAAI4K,EAAW2oC,QAAQC,YAAYuC,OAEjC3oC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,gBAEP,CACL,MAAM21C,EAAoBv1C,EAAW2oC,QAAQC,YAAYxzC,GAEnD1D,EAAOqW,KAAKE,UAAU,CAC1ButC,QAAS,OACT5M,YAAa,CACXxzC,GAAImgD,GAEN1nB,QAAS,CACPz4B,GAAI4K,EAAW2oC,QAAQ9a,QAAQz4B,IAEjCu7C,YAAa,YACb1G,QAAQ,EACRC,YAAa,UACbC,SAAUC,GAAAA,GAASz4B,OAAO,yBAG5BvX,EAAM,CACJoB,IAAM,GAAEwE,EAAW0nC,SAASyH,gCAAgCoG,mBAAmCv1C,EAAW0nC,SAASp8B,QACnH5P,QAAS,CAAE,eAAgB,mCAC3BhK,KAAMA,EACN29C,OAAQ,QAIVrvC,EAAW2oC,QAAU,CACnBvzC,GAAI4K,EAAW0nC,SAAStyC,GACxBqgD,OAAQ,YACRx8B,KAAMo8B,KAGRr1C,EAAW0nC,SAAS8J,UAAW,EAE/BxxC,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,SAErD9B,EAAIuI,YACDE,UAAU,CACTl6C,GAAI4K,EAAW0nC,SAAStyC,GACxB0zC,QAAQ,IAETuB,SAASv1C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPu+C,EAAU9gD,EAAK8gD,QACfxL,EAAG+L,OAASrhD,EAAKk5C,SAGpB91C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI4/B,EAAG+L,OAAO55C,OAAQiO,IAAK,CACzC,MAAMktC,EAAQtN,EAAG+L,OAAO3rC,GACxB,GAAIktC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASthD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C25C,EAAGyN,UAAUrtC,GAAKotC,EAAOF,EAAMb,MAAMc,eAI1CnoC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,WAKpBzU,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,iBAKdI,EAAW2oC,QAAU,CACnBvzC,GAAI4K,EAAW0nC,SAAStyC,GACxBqgD,OAAQ,YACRx8B,KAAMo8B,KAGRr1C,EAAW0nC,SAAS8J,UAAW,EAE/BxxC,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,SAErD9B,EAAIuI,YACDE,UAAU,CACTl6C,GAAI4K,EAAW0nC,SAAStyC,GACxB0zC,QAAQ,IAETuB,SAASv1C,MAAK,SAAUpD,GACnBA,EAAKuC,QACPu+C,EAAU9gD,EAAK8gD,QACfxL,EAAG+L,OAASrhD,EAAKk5C,SAGpB91C,MAAK,WACJ,IAAK,IAAIsS,EAAI,EAAGA,EAAI4/B,EAAG+L,OAAO55C,OAAQiO,IAAK,CACzC,MAAMktC,EAAQtN,EAAG+L,OAAO3rC,GACxB,GAAIktC,EAAMb,MAAMc,SAAU,CACxB,MAAMC,EAASthD,OAAOtH,UAAUshB,KAAK7f,KAAK,gBAC1C25C,EAAGyN,UAAUrtC,GAAKotC,EAAOF,EAAMb,MAAMc,eAI1CnoC,OAAM,SAAU6K,GACf1G,QAAQnhB,MAAM6nB,OAOtB+vB,EAAGwH,OAhMH,WACE,IAAIhD,EAAO,sBAEX,IAAK,IAAIpkC,EAAI,EAAGA,EAAI4/B,EAAG+L,OAAO55C,OAAQiO,IAAK,CACzC,MAAMktC,EAAQtN,EAAG+L,OAAO3rC,GAEpBktC,EAAMb,YAA+C,IAA/BzM,EAAGiH,KAAKqG,EAAMb,MAAMvW,SAEvCoP,GAAAA,CAAOgI,EAAMoB,YAChB11C,EAAW2oC,QAAQ2L,EAAMoB,UAAY/pD,MAAMoQ,QACzCirC,EAAGiH,KAAKqG,EAAMb,MAAMvW,QAElB8J,EAAGiH,KAAKqG,EAAMb,MAAMvW,OAAOlgC,OAC3BgqC,EAAGiH,KAAKqG,EAAMb,MAAMvW,QAGrBoP,GAAAA,CAAOgI,EAAMI,WAChB10C,EAAW2oC,QAAQ2L,EAAMI,SAAW/oD,MAAMoQ,QACxCirC,EAAGiH,KAAKqG,EAAMb,MAAMvW,QAElB8J,EAAGiH,KAAKqG,EAAMb,MAAMvW,OAAOlgC,OAC3BgqC,EAAGiH,KAAKqG,EAAMb,MAAMvW,QAGtB91B,IAAMorC,IACHlG,GAAAA,CAAOtsC,EAAW0nC,SAAS+N,UAC9Bz1C,EAAW2oC,QAAQ8M,OAASz1C,EAAW0nC,SAAS+N,OAChDz1C,EAAW2oC,QAAQ1vB,KAAOttB,MAAMoQ,QAAQirC,EAAGiH,KAAKqG,EAAMb,MAAMvW,QACxD8J,EAAGiH,KAAKqG,EAAMb,MAAMvW,OAAOlgC,OAC3BgqC,EAAGiH,KAAKqG,EAAMb,MAAMvW,SAIxB8J,EAAGiH,KAAKqG,EAAMb,MAAMvW,SACtBsO,GAAQ8I,EAAMb,MAAMvW,MAAQ,KAAO8J,EAAGiH,KAAKqG,EAAMb,MAAMvW,OAAS,OAnExE,IAAqBrP,EAAAA,EA0EjB4gB,GAAAA,CACE,CACEjD,KAAMA,EACNmK,QAAS31C,EAAW0nC,SAASiO,QAC7BC,WAAY51C,EAAW0nC,SAASkO,YAElC51C,EAAW2oC,SA/Ef3B,EAAGsO,aAAc,EAEjBzO,EAAIuI,YACDpc,OAAOnF,GACPwc,SAASv1C,MAAK,SAAUpD,UAChBs1C,EAAGuG,OAAOgD,iBAEjBvwC,EAAW2oC,QAAQ9a,QAAU,CAC3Bz4B,GAAI1D,EAAKm8B,QAAQz4B,IAGnB4K,EAAW2oC,QAAQC,YAAc,CAC/BxzC,GAAI1D,EAAKk3C,YAAYxzC,IAIvB4K,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,SAGrD3B,EAAGsO,aAAc,EAjChBt1C,EAAW0nC,SAASmO,sBAOvBrzC,EAAOi5B,GAAG,WAAY,KAAM,CAC1B77B,SAAU,YANZ4C,EAAOi5B,GAAG,cAAe,KAAM,CAC7B77B,SAAU,eAmCXwM,OAAM,SAAU6K,GAEf+vB,EAAGsO,aAAc,EAEjB/kC,QAAQnhB,MAAM6nB,OAqMpB+vB,EAAGI,OAzIH,SAAgB73C,EAAM2a,GACf88B,EAAGiH,KAAK1+C,KACXy3C,EAAGiH,KAAK1+C,GAAQ,IAGlB,MAAMyJ,EAAMguC,EAAGiH,KAAK1+C,GAAM0I,QAAQiS,GAC9BlR,GAAO,EACTguC,EAAGiH,KAAK1+C,GAAMga,OAAOvQ,EAAK,GAE1BguC,EAAGiH,KAAK1+C,GAAM/E,KAAK0f,IAiIvB88B,EAAG7c,OA7HH,SAAgB56B,EAAM2a,GAKpB,OAJK88B,EAAGiH,KAAK1+C,KACXy3C,EAAGiH,KAAK1+C,GAAQ,IAGXy3C,EAAGiH,KAAK1+C,GAAM0I,QAAQiS,IAAS,GC3I1C,SAAS4rC,EACP91C,EACAwC,EACA8qC,EACAzG,EACAE,EACAD,GAEA,MAAME,EAAKj9C,KAQX,SAASikD,IACHhuC,EAAW0nC,SAASoB,OACtBtmC,EAAOi5B,GAAG,aAAc,KAAM,CAAE77B,SAAU,YAE1C4C,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAI/C,SAASylC,IACP2B,EAAGiH,KAAO,GACVjH,EAAGkH,QAAU,KACblH,EAAGmH,UAAY,KACfnH,EAAGoH,SAASC,eACZrH,EAAGoH,SAASE,gBAEZtuC,EAAW2oC,QAAU,GAErB3oC,EAAWuuC,gBAAiB,EAC5BvuC,EAAWzJ,MAAM,QAQnB,SAAS25B,EAAY3gC,GACnB,OAAO,SAAU0nB,GACf+vB,EAAGuG,OAAOh+C,GAAQ0nB,EAAIvlB,KAEtB,MAAM87C,EAAQF,EACXG,SACAC,YACC1tC,EAAW0nC,SAASiG,0BAClB,yBAEHC,WAAW,oBACXzpC,OAAOva,QAAQkD,QAAQsjB,SAASs5B,cAAc,mBAEjD4D,EAASxD,KAAK0D,IAIlB,SAASM,IACP9tC,EAAW+tC,SAAU,EAjDvB/G,EAAGiH,KAAO,GACVjH,EAAGuG,OAAS,GA+FZvG,EAAG5vC,QAXH,WACE4I,EAAW2nC,OAAS,YAGpB3nC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,GAE/C9mC,EAAW+tC,SAAU,GAKvB/G,EAAGwH,OA7CH,WACExuC,EAAW+tC,SAAU,EAEjB/tC,EAAW2oC,QAAQC,aAAe5oC,EAAW2oC,QAAQC,YAAYxzC,GACnEyxC,EAAIkD,gBACDC,aAAa,CACZ50C,GAAI4K,EAAW2oC,QAAQC,YAAYxzC,GACnC2gD,KAAM/O,EAAGiH,KAAK8H,OAEf1L,SAASv1C,MAAK,kBACNkyC,EAAGuG,OAAOiB,OAEjB,MAAMhB,EAAQF,EACXG,SACAC,YACC1tC,EAAW0nC,SAASkH,0BAClB,2BAEHhB,WAAW,oBACXzpC,OAAOva,QAAQkD,QAAQsjB,SAASs5B,cAAc,mBAEjD4D,EAASxD,KAAK0D,MAEf14C,KAAKuwC,GACLvwC,KAAKk5C,GACL5hC,MAAM8jB,EAAY,WAClB2e,QAAQf,IAEXA,IACA5d,EAAY,YAiBhB8W,EAAG8H,KAxEH,WACEzJ,IACA2I,KCrCJ,SAASgI,EACPh2C,EACAhV,EACA4kD,EACAptC,EACA7C,EACAknC,EACAE,EACAD,GAGA,IACIkJ,EADAiG,GAAS,EAIb,SAASvF,IACP,IAAI9H,EAAc,GACdsN,GAAO,EAEXrP,EAAIkD,gBACDtvC,IAAI,CACHrF,GAAI4K,EAAW2oC,QAAQC,YAAYxzC,KAEpCi1C,SAASv1C,MAAK,SAAUpD,GAGvB,OAFAk3C,EAAcl3C,EAEPm1C,EAAIkD,gBAAgBS,YAAY,CACrCC,MAAOzqC,EAAW2oC,QAAQC,YAAYxzC,KACrCi1C,YAEJv1C,MAAK,SAAUpD,GACdwkD,EAAOxkD,EAAKk5C,KAAKzxC,OAAS,EAEtByvC,EAAYqB,QACdjqC,EAAW2oC,QAAQC,YAAYqB,QAAS,EACxCjqC,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,SAErB,cAA5BC,EAAY+H,aACdnuC,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,aAEtCgpC,EAAYuC,QAErBnrC,EAAW2oC,QAAQC,YAAYuC,OAASvC,EAAYuC,OACpDnrC,EAAWinC,cAAcF,EAAiB/mC,EAAW2oC,SAErDnmC,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,aAC/Bs2C,GACT1zC,EAAOi5B,GAAG,WAAY,KAAM,CAAE77B,SAAU,eAG3CwM,OAAM,SAAU6K,GACf,OAAQA,EAAI0wB,QACV,KAAK,IACHnlC,EAAOi5B,GAAG,cAAe,KAAM,CAAE77B,SAAU,YAC3C,MACF,KAAK,IACH4C,EAAOi5B,GAAG,gBAAiB,KAAM,CAAE77B,SAAU,YAC7C,MACF,QACE2Q,QAAQnhB,MAAM6nB,OAKxB,SAASk/B,IACP,GACEn2C,EAAW2oC,SACX3oC,EAAW2oC,QAAQC,aACnB5oC,EAAW2oC,QAAQC,YAAYxzC,KAC9B6gD,EACD,CAEAA,GAAS,EAGT,MAAMG,EAAM,IAAIC,eAEhBD,EAAIF,KACF,MACAl2C,EAAW0nC,SAASyH,OAClB,0BACAnvC,EAAW2oC,QAAQC,YAAYxzC,GAC/B,kBACA4K,EAAW0nC,SAASp8B,OACtB,GAEF8qC,EAAIE,iBAAiB,eAAgB,mCAErCF,EAAIG,KACFxuC,KAAKE,UAAU,CACbutC,QAAS,OACT5M,YAAa,CACXxzC,GAAI4K,EAAW2oC,QAAQC,YAAYxzC,IAErCy4B,QAAS,CACPz4B,GAAI4K,EAAW2oC,QAAQ9a,QAAQz4B,IAEjCu7C,YAAa,YACb1G,QAAQ,EACRC,YAAa,UACbC,SAAUC,GAAAA,GAASz4B,OAAO,0BAIP,IAAnBykC,EAAII,YAAmC,MAAfJ,EAAIzO,SAE9B3nC,EAAWinC,cAAcF,EAAiB,MAAM,GAChD/mC,EAAWinC,cAAcH,EAAgB,MAAM,KAjG1C/8C,KA0HRqN,QAbH,WACE4I,EAAW2nC,OAAS,UAGlB3nC,EAAW2oC,SACX3oC,EAAW2oC,QAAQC,aACnB5oC,EAAW2oC,QAAQC,YAAYxzC,KAG/B46C,EAAyBJ,EAAUc,EAAgB,OAQvD1lD,EAAOsB,IAAI,YAxBX,WACEqT,EAAQ82C,oBAAoB,eAAgBN,GAC5Cx2C,EAAQ82C,oBAAoB,SAAUN,GAEtCvG,EAAU1hD,OAAO8hD,MAqBnBrwC,EAAQssC,iBAAiB,eAAgBkK,GACzCx2C,EAAQssC,iBAAiB,SAAUkK,GC/GrC,SAASO,EAAgBC,GACvB,OAAO,SAAUpoD,GACf,OAAOooD,EAAKC,YAAYroD,+VAqI5B3E,QACGC,OAFiB,cAEG,CACnB,YACA,SACA,aACA,aACA,aACA,aACA,QACA,UACA,YACA,qBACA,WACA,SAEDwJ,OAAO,YAAaqjD,GACpBG,SAAS,iBAAkB,eAC3BA,SAAS,kBAAmB,WAC5BA,SAAS,iBAAkB,UAC3BjqD,UAAU,WAlCb,WACE,OAAO,SAAUC,EAAOC,EAASC,GAC/BD,EAAQO,KAAK,oBAAoB,SAAU/C,GACrB,KAAhBA,EAAMo6C,QACR73C,EAAMmB,QAAO,WACXnB,EAAMzB,MAAM2B,EAAM+pD,YAEpBxsD,EAAMgD,yBA4BXV,UAAU,WApJb,WA0GE,MAAO,CACL0F,KAVF,SAAczF,EAAOC,GACnBA,EAAQzC,GAAG,SAAS,WACE+lB,SAAS2mC,eAAe,iBAlGhD,SAAsB9rC,EAAMpe,GAE1B,MAAMmqD,EAAM5mC,SAASg5B,cAAc,OAC7BT,EAAU97C,EAAM87C,QAChBjB,EAAW76C,EAAM66C,SACvB,IAAIuP,EAEJ,IAAK,IAAI7vC,EAAI,EAAGA,EAAIva,EAAMqkD,SAAS/3C,OAAQiO,IAAK,CAC9C,MAAMymB,EAAUhhC,EAAMqkD,SAAS9pC,GAC/B,IAAI0jC,EAAS,WACb,MAAMU,EAAO,YAAc3d,EAAQ2d,KAC7B0L,EACJ,YAAc9M,GAAAA,CAAOvc,EAAQ4d,WAAW95B,OAAO,uBAEjD,GAAU,IAANvK,EAAJ,CAKA,OAAQva,EAAM66C,SAASwD,iBACrB,IAAK,gBACHJ,GACwB,QAAtBjd,EAAQkd,UACJld,EAAQsd,OACNzD,EAAS0D,WAAavd,EAAQsd,OAC9B,SACFzD,EAASsD,eACTrC,EAAQ1vB,MACR,UAAY4U,EAAQod,UAC1B,MAEF,IAAK,cACHH,GACwB,QAAtBjd,EAAQkd,UACJld,EAAQsd,OACNtd,EAAQwd,KAAKC,OAASzd,EAAQwd,KAAKE,SACnC,SACF7D,EAASsD,eACTrC,EAAQ1vB,MACR,UAAY4U,EAAQod,UAC1B,MAEF,IAAK,iBACHH,GACwB,QAAtBjd,EAAQkd,UACJld,EAAQsd,OACNtd,EAAQwd,KAAKE,SACb,SACF7D,EAASsD,eACTrC,EAAQ1vB,MACR,UAAY4U,EAAQod,UAC1B,MAEF,QACEH,GACwB,QAAtBjd,EAAQkd,UACJld,EAAQsd,QACLzD,EAAS0D,YAAc,SAAWvd,EAAQsd,OAC3C,SACFzD,EAASsD,eACTrC,EAAQ1vB,MACR,UAAY4U,EAAQod,UAG9B+L,EAAI3N,YAAYj5B,SAAS+mC,eAAerM,IACxCkM,EAAI3N,YAAYj5B,SAASg5B,cAAc,OACvC4N,EAAI3N,YAAYj5B,SAAS+mC,eAAe3L,IACxCwL,EAAI3N,YAAYj5B,SAASg5B,cAAc,OACvC4N,EAAI3N,YAAYj5B,SAAS+mC,eAAeD,IACxCF,EAAI3N,YAAYj5B,SAASg5B,cAAc,OACvC4N,EAAI3N,YAAYj5B,SAASg5B,cAAc,YAvDrC6N,EAAYppB,EAAQ4d,UA0DxB,MAAM2L,EAAW9mC,OAAO4lC,OAExBkB,EAAShnC,SAASinC,MAAM,sBAAwBjnC,SAAS8sB,MAAQ,YACjEka,EAAShnC,SAASinC,MAAM,kBACxBD,EAAShnC,SAASinC,MAAM,iBAAmB3P,EAASiO,QAAU,SAC9DyB,EAAShnC,SAASinC,MAChB,oBACEjN,GAAAA,CAAO6M,GAAWtlC,OAAO,uBACzB,SAEJylC,EAAShnC,SAASinC,MAChB,oBAAsBjN,GAAAA,GAASz4B,OAAO,uBAAyB,SAEjEylC,EAAShnC,SAASinC,MAAML,EAAIM,WAC5BF,EAAShnC,SAASinC,MAAM,kBAExBD,EAAShnC,SAASo5B,QAClB4N,EAASG,QAETH,EAASI,QACTJ,EAAS5N,QAOLiO,CAAaC,EAAa7qD,OAO9BqE,SAAU,QA0CXnG,WAAW,iBAAkB4kD,GAE7B5kD,WAAW,oBAAqBsiD,GAEhC/3C,OA1BH,sBA0BU,SAAUqiD,GAChBA,EAAmBC,qBAEpB7sD,WAAW,kBAAmB27C,GAE9Bz8C,QAAQ,MAAO8kD,GAEfz5C,OAAOi3C,GACPjqC,IAAI4pC,GAEJnhD,WAAW,oBAAqBwnD,GAEhCj9C,OAtCH,sBAsCU,SAAUqiD,GAChBA,EAAmBC,qBAEpB7sD,WAAW,mBAAoBqqD,GAE/BrqD,WAAW,sBAAuB+qD,GAElC/qD,WAAW,oBAAqBirD,wFC/MnCnsD,EAAOguD,QAAU,WACf,GAA0B,iBAAfC,WACT,OAAOA,WAGT,IAAIlwC,EAEJ,IAGEA,EAAI7d,MAAQ,IAAI0mB,SAAS,cAAb,GACZ,MAAOpE,GAEP,GAAsB,iBAAXiE,OACT,OAAOA,OAIT,GAAoB,iBAAT7Y,KACT,OAAOA,KAIT,QAAsB,IAAX,EAAAmQ,EACT,OAAO,EAAAA,EAIX,OAAOA,EA5BQ,wECHjB,WAoBE7d,QAjBM4d,EAAO,SAON,KAFU,EAAF,WACL,OAAQA,EAAKqtC,eAWjB,WAWJ,SAASj5C,EAAQhO,GAEb,MAAmC,mBAA5B,GAAK8Q,SAAS/S,KAAKiC,GAG9B,SAASgqD,EAAahqD,GAElB,QAAQgO,EAAQhO,IAAuB,iBAARA,IAAsBA,GAASA,aAAeiqD,MAAWjqD,aAAeuuB,MAQ3G,SAAS27B,IAEL,MAA2B,mBAAb9F,SAGlB,SAAS+F,IAEL,GAAID,IACA,OAAO,IAAI9F,SAkCnB,SAASgG,EAAmBC,EAAYluD,EAASmuD,EAAUC,GAEvD,IAAItS,EAAQ,EAEZ,IAAK,IAAIp2C,KAAOwoD,EAAY,CAExB,GAAIA,EAAW3rD,eAAemD,GAAM,CAEhC,IAAI2oD,EAAWD,GAAa1oD,EACxBrB,EAAQrE,EAAQirB,QAAQijC,EAAWxoD,IAevC,GAbI0oD,GAAaP,EAAaK,KAC1BG,EAAWD,EAAY,IAAM1oD,EAAM,KAGnC0oD,GAAav8C,EAAQq8C,KAGjBG,EADAx8C,EAAQxN,IAAUrE,EAAQ0oD,qBACf0F,EAAY,IAAMtS,EAAQ,IAE1BsS,EAAY,MAI3Bv8C,EAAQxN,IAAUwpD,EAAaxpD,GAE/B4pD,EAAmB5pD,EAAOrE,EAASmuD,EAAUE,QAE1C,GAAIhqD,aAAiBiqD,SAExB,IAAK,IAAI/wC,EAAI,EAAGA,EAAIlZ,EAAM4K,OAAQsO,IAC9B4wC,EAASj0B,OAAOm0B,EAAW,IAAM9wC,EAAI,IAAKlZ,EAAM2b,KAAKzC,SAElDlZ,aAAiBypD,KAExBK,EAASj0B,OAAOm0B,EAAUhqD,EAAOA,EAAMgB,MAEhChB,aAAiB+tB,KAExB+7B,EAASj0B,OAAOm0B,EAAUhqD,EAAMkqD,gBAEb,OAAVlqD,GAAkBrE,EAAQ2oD,mBAAgC,OAAVtkD,SAA6B2P,IAAV3P,GAE5E8pD,EAASj0B,OAAOm0B,EAAUhqD,GAGlCy3C,IAEJ,OAAOqS,EAEX,OAhFA,SAAiBD,EAAYluD,GAEzB,GAAIA,GAAWA,EAAQ+qD,iBAEnB,GAnB8B,mBAmBD/qD,EAAQ+qD,gBAnBlB7wB,OAqBf,KAAM,qDAEP,IAAK6zB,IAER,KAAM,8FA3Bd,IA0CQS,EA5DG,CAgDc,CACjBzD,gBAAiBiD,IACjBtF,sBAAsB,EACtBC,mBAAmB,EACnB19B,QAAS,SAAS5mB,GACd,MAAqB,kBAAVA,GACCA,EAAQ,IAAK,IAElBA,IAIkCrE,GAAW,IA5DlCyO,QAAO,SAAUggD,EAAOC,GAI9C,OAHAt7C,OAAOC,KAAKq7C,GAAe9tD,SAAQ,SAAU+tD,GACzCF,EAAME,GAAaD,EAAcC,MAE9BF,IACR,IAyDH,OAAOR,EAAmBC,EAAYM,EAAeA,EAAczD,kBA5EjChrD,IACjC,QAFM,OAEN,oECDD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,8FAA8FlsC,MAClG,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CusC,cAAe,SACfC,KAAM,SAAU18C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB28C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,eACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNvzC,EAAG,mBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,WACHC,GAAI,YACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyBxxD,CAAQ,EAAQ,8FCOlD,SAAWmgD,GAAU,aAIzB,IAAIsR,EAAa,SAAUpxC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVqxC,EAAU,CACNx0C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ87C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ33B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJ83B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAexsD,EAAQysD,GAC5C,IAAIC,EAAIN,EAAWJ,GACfvgD,EAAM4gD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAjhD,EAAMA,EAAI+gD,EAAgB,EAAI,IAE3B/gD,EAAI+D,QAAQ,MAAOw8C,KAGlCvC,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,OACA,SACA,MACA,SACA,SACA,SACA,UAGG3O,EAAO0O,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU18C,GACZ,MAAO,MAAQA,GAEnB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAGy0C,EAAU,KACbjB,GAAIiB,EAAU,KACd78C,EAAG68C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd14B,EAAG04B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBQ,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCy8C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtJyBxxD,CAAQ,EAAQ,8FCDlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wEAAwElsC,MAC5E,KAEJmsC,YAAa,wEAAwEnsC,MACjF,KAEJosC,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,OACHwzC,GAAI,WACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJ53B,EAAG,MACH63B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MApDyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPX,EAAa,SAAUpxC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVqxC,EAAU,CACNx0C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ87C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ33B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJ83B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAexsD,EAAQysD,GAC5C,IAAIC,EAAIN,EAAWJ,GACfvgD,EAAM4gD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAjhD,EAAMA,EAAI+gD,EAAgB,EAAI,IAE3B/gD,EAAI+D,QAAQ,MAAOw8C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGG3O,EAAO0O,aAAa,QAAS,CACpCC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU18C,GACZ,MAAO,MAAQA,GAEnB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAGy0C,EAAU,KACbjB,GAAIiB,EAAU,KACd78C,EAAG68C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd14B,EAAG04B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCs9C,WAAY,SAAU9sD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOs2C,EAAUt2C,MAEpBjH,QAAQ,KAAM,MAEvBy8C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzKyBxxD,CAAQ,EAAQ,8FCIlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wEAAwElsC,MAC5E,KAEJmsC,YAAa,wEAAwEnsC,MACjF,KAEJosC,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,OACHwzC,GAAI,WACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJ53B,EAAG,MACH63B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyBxxD,CAAQ,EAAQ,8FCElD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFnS,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,6EAA6ElsC,MACjF,KAEJmsC,YAAa,6EAA6EnsC,MACtF,KAEJosC,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU18C,GACZ,MAAO,MAAQA,GAEnB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,OACHwzC,GAAI,WACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJ53B,EAAG,MACH63B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAOw2C,EAAUx2C,MAEpBjH,QAAQ,KAAM,MAEvBs9C,WAAY,SAAU9sD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOs2C,EAAUt2C,MAEpBjH,QAAQ,KAAM,MAEvBy8C,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,yEAAyElsC,MAC7E,KAEJmsC,YAAa,yEAAyEnsC,MAClF,KAEJosC,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,sBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,OACHwzC,GAAI,WACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,OACHC,GAAI,WACJ53B,EAAG,MACH63B,GAAI,UACJC,EAAG,MACHC,GAAI,UACJC,EAAG,MACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETb,EAAa,SAAUpxC,GACnB,OAAa,IAANA,EACD,EACM,IAANA,EACA,EACM,IAANA,EACA,EACAA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAC3B,EACAA,EAAI,KAAO,GACX,EACA,GAEVqxC,EAAU,CACNx0C,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,UACA,WACA,YAEJpI,EAAG,CACC,eACA,cACA,CAAC,UAAW,WACZ,WACA,WACA,YAEJ87C,EAAG,CACC,cACA,aACA,CAAC,SAAU,UACX,WACA,UACA,WAEJ33B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,WACA,UAEJ83B,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,UACA,UACA,UAEJE,EAAG,CACC,aACA,WACA,CAAC,QAAS,SACV,WACA,WACA,WAGRU,EAAY,SAAUC,GAClB,OAAO,SAAUP,EAAQQ,EAAexsD,EAAQysD,GAC5C,IAAIC,EAAIN,EAAWJ,GACfvgD,EAAM4gD,EAAQE,GAAGH,EAAWJ,IAIhC,OAHU,IAANU,IACAjhD,EAAMA,EAAI+gD,EAAgB,EAAI,IAE3B/gD,EAAI+D,QAAQ,MAAOw8C,KAGlCvC,EAAS,CACL,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,UAGC3O,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,wCAAwCrsC,MAAM,KAC7DssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,MACfC,KAAM,SAAU18C,GACZ,MAAO,MAAQA,GAEnB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,IAEA,KAGfjC,SAAU,CACNC,QAAS,wBACTC,QAAS,uBACTC,SAAU,uBACVC,QAAS,sBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAGy0C,EAAU,KACbjB,GAAIiB,EAAU,KACd78C,EAAG68C,EAAU,KACbhB,GAAIgB,EAAU,KACdf,EAAGe,EAAU,KACbd,GAAIc,EAAU,KACd14B,EAAG04B,EAAU,KACbb,GAAIa,EAAU,KACdZ,EAAGY,EAAU,KACbX,GAAIW,EAAU,KACdV,EAAGU,EAAU,KACbT,GAAIS,EAAU,MAElBU,SAAU,SAAUhtD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAOw2C,EAAUx2C,MAEpBjH,QAAQ,KAAM,MAEvBs9C,WAAY,SAAU9sD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOs2C,EAAUt2C,MAEpBjH,QAAQ,KAAM,MAEvBy8C,KAAM,CACFC,IAAK,EACLC,IAAK,MAzLyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCpS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+EAA+ElsC,MACnF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,qEAAqEpsC,MAC3E,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,+BACVC,QAAS,aACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNvzC,EAAG,kBACHwzC,GAAI,YACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,SACHC,GAAI,SAER/B,cAAe,0BACfC,KAAM,SAAU18C,GACZ,MAAO,mBAAmBuQ,KAAKvQ,IAEnC28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SAEA,SAGfd,uBAAwB,wCACxBC,QAAS,SAAUC,GACf,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI9zC,EAAI8zC,EAAS,GAGjB,OAAOA,GAAUkB,EAASh1C,IAAMg1C,EAFvBlB,EAAS,IAAO9zC,IAEsBg1C,EADvClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAYzB,SAASqS,EAAuBnB,EAAQQ,EAAelsD,GASnD,MAAY,MAARA,EACOksD,EAAgB,UAAY,UACpB,MAARlsD,EACAksD,EAAgB,UAAY,UAE5BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,yBAA2B,yBAC/Cf,GAAI,iBACJE,GAAI,uBACJE,GAAI,kBAOgCvrD,GArBvBid,MAAM,KAChB6vC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAyBCvS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,uGAAuG9E,MAC3G,KAEJ+vC,WAAY,qGAAqG/vC,MAC7G,MAGRmsC,YAAa,0DAA0DnsC,MACnE,KAEJosC,SAAU,CACNtnC,OAAQ,0DAA0D9E,MAC9D,KAEJ+vC,WAAY,0DAA0D/vC,MAClE,KAEJgwC,SAAU,+CAEd3D,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBACTE,QAAS,eACTD,SAAU,WACN,MAAO,mBAEXE,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNvzC,EAAG,kBACHpI,EAAG09C,EACH7B,GAAI6B,EACJ5B,EAAG4B,EACH3B,GAAI2B,EACJv5B,EAAG,QACH63B,GAAI0B,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,yBACfC,KAAM,SAAU18C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAQzB,EAAS,IAAO,GAAKA,EAAS,IAAO,GACzCA,EAAS,KAAQ,IACjBA,EAAS,KAAQ,GAEfA,EAAS,KADTA,EAAS,KAEnB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFlsC,MACxF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNvzC,EAAG,kBACHwzC,GAAI,aACJ57C,EAAG,SACH67C,GAAI,YACJC,EAAG,MACHC,GAAI,UACJ53B,EAAG,MACH63B,GAAI,UACJiC,EAAG,UACHC,GAAI,aACJjC,EAAG,QACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KArFyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IlsC,MAClJ,KAEJmsC,YAAa,iDAAiDnsC,MAAM,KACpEosC,SAAU,+CAA+CpsC,MAAM,KAC/DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,2BACJC,IAAK,wCACLC,KAAM,8CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,qBACVC,QAAS,iBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNvzC,EAAG,kBACHwzC,GAAI,aACJ57C,EAAG,eACH67C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJ53B,EAAG,aACH63B,GAAI,UACJC,EAAG,aACHC,GAAI,UACJC,EAAG,YACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFnS,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,mEAAmEnsC,MAC5E,KAEJosC,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,uCAAuCrsC,MAAM,KAC5DssC,YAAa,kCAAkCtsC,MAAM,KACrD6sC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAG,eACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAIzBqzC,cAAe,uCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,QAAb5C,GAEa,SAAbA,EADA4C,EAGa,UAAb5C,EACA4C,GAAQ,EAAIA,EAAOA,EAAO,GACb,UAAb5C,GAEa,YAAbA,EADA4C,EAAO,QACX,GAKX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,EACP,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QACAA,EAAO,GACP,UAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KA9HyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,mEAAmEnsC,MAC5E,KAEJosC,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,uCAAuCrsC,MAAM,KAC5DssC,YAAa,kCAAkCtsC,MAAM,KACrD6sC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,gBACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAG,eACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBqzC,cAAe,2BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,QAAb5C,GAAsB4C,GAAQ,GACjB,UAAb5C,GAAwB4C,EAAO,GACnB,UAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,QAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qJAAqJlsC,MACzJ,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJwwC,iBAAkB,gBAClBC,kBAAkB,EAClBrE,SAAU,gFAAgFpsC,MACtF,KAEJqsC,cAAe,oDAAoDrsC,MAC/D,KAEJssC,YAAa,6BAA6BtsC,MAAM,KAChD6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,wBACVC,QAAS,YACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,QACHwzC,GAAI,YACJ57C,EAAG,aACH67C,GAAI,WACJC,EAAG,cACHC,GAAI,YACJ53B,EAAG,WACH63B,GAAI,UACJC,EAAG,YACHC,GAAI,UACJC,EAAG,UACHC,GAAI,SAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBqzC,cAAe,wCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACpB,YAAb5C,GAA0B4C,EAAO,GACrB,YAAb5C,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,UACAA,EAAO,GACP,UACAA,EAAO,GACP,UAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAxHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,SAASmT,EAAyBjC,EAAQQ,EAAelsD,GAMrD,OAAO0rD,EAAS,IAoBpB,SAAkB3uC,EAAM2uC,GACpB,OAAe,IAAXA,EAKR,SAAsB3uC,GAClB,IAAI6wC,EAAgB,CAChBz+C,EAAG,IACH4J,EAAG,IACHua,EAAG,KAEP,YAAsChlB,IAAlCs/C,EAAc7wC,EAAKnd,OAAO,IACnBmd,EAEJ6wC,EAAc7wC,EAAKnd,OAAO,IAAMmd,EAAKqX,UAAU,GAb3Cy5B,CAAa9wC,GAEjBA,EAxBe+wC,CALT,CACT9C,GAAI,WACJK,GAAI,MACJF,GAAI,UAE8BnrD,GAAM0rD,GAchD,SAASqC,EAAWrC,GAChB,OAAIA,EAAS,EACFqC,EAAWrC,EAAS,IAExBA,EAoBX,IAAIsC,EAAc,CACV,QACA,cACA,QACA,QACA,QACA,cACA,QACA,QACA,QACA,QACA,OACA,SAEJC,EAAc,6IAqBdC,EAAmB,CACf,OACA,OACA,eACA,QACA,OACA,OACA,QAGC1T,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFlsC,MACpF,KAEJmsC,YAAa,mDAAmDnsC,MAAM,KACtEosC,SAAU,6CAA6CpsC,MAAM,KAC7DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,wBAAwBtsC,MAAM,KAC3CkxC,cAAeD,EACfE,kBArCoB,CAChB,QACA,QACA,WACA,iBACA,SACA,WACA,YA+BJC,mBA7BqB,CACjB,QACA,QACA,QACA,QACA,QACA,QACA,SAuBJH,iBAAkBA,EAElBD,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA7CoB,wFA8CpBC,uBA7CyB,2DA8CzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElBlE,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sBACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,qBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,SACNvzC,EAAG,wBACHwzC,GAAI,YACJ57C,EAAG,cACH67C,GAAI2C,EACJ1C,EAAG,SACHC,GAAI,SACJ53B,EAAG,YACH63B,GAAIwC,EACJvC,EAAG,SACHC,GAAIsC,EACJrC,EAAG,WACHC,GApIR,SAAiCG,GAC7B,OAAQqC,EAAWrC,IACf,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOA,EAAS,SACpB,QACI,OAAOA,EAAS,YA6HxBF,uBAAwB,kBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,KAAO,QAGvCC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,YACfC,KAAM,SAAU/tC,GACZ,MAAiB,SAAVA,GAEXguC,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAOyC,EAAO,GAAK,OAAS,UAnKEjyD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,SAASkU,EAAUhD,EAAQQ,EAAelsD,GACtC,IAAIS,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXirD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIzrD,GADW,IAAXirD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIzrD,GADW,IAAXirD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIjrD,GADW,IAAXirD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIjrD,GADW,IAAXirD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIjrD,GADW,IAAXirD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,8DAA8DnsC,MACvE,KAEJywC,kBAAkB,EAClBrE,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,cACHwzC,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAG,MACH63B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAlJyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJ6D,WAAY,oFAAoF/vC,MAC5F,KAEJ8E,OAAQ,qHAAqH9E,MACzH,KAEJgwC,SAAU,mBAEd7D,YAAa,8DAA8DnsC,MACvE,KAEJywC,kBAAkB,EAClBrE,SAAU,8DAA8DpsC,MACpE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,gCACLyE,IAAK,mBACLxE,KAAM,qCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,WACL,MAAO,YAA+B,IAAjBnwD,KAAKwvD,QAAgB,MAAQ,MAAQ,QAE9DY,QAAS,WACL,MAAO,YAA+B,IAAjBpwD,KAAKwvD,QAAgB,MAAQ,MAAQ,QAE9Da,SAAU,WACN,MAAO,YAA+B,IAAjBrwD,KAAKwvD,QAAgB,MAAQ,MAAQ,QAE9Dc,QAAS,WACL,MAAO,YAA+B,IAAjBtwD,KAAKwvD,QAAgB,MAAQ,MAAQ,QAE9De,SAAU,WACN,MACI,wBACkB,IAAjBvwD,KAAKwvD,QAAgB,MAAQ,MAC9B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNvzC,EAAG,aACHwzC,GAAI,YACJ57C,EAAG,WACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA/FyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAI2O,EAAS,oFAAoFlsC,MACzF,KAEJmsC,EAAc,kDAAkDnsC,MAAM,KACtE+wC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,yBACA,4BACA,QACA,QACA,QACA,QACA,SAIJC,EAAc,wJAElB,SAASc,EAAOr0C,GACZ,OAAOA,EAAI,GAAKA,EAAI,GAAoB,MAAZA,EAAI,IAEpC,SAASg0C,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,IAAI1rD,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,IACD,OAAOksD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,UAAY,UAEvCjrD,EAAS,YAExB,IAAK,IACD,OAAOyrD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,SAAW,SAEtCjrD,EAAS,WAExB,IAAK,IACD,OAAOyrD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,SAAW,SAEtCjrD,EAAS,WAExB,IAAK,IACD,OAAOyrD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,MAAQ,OAEnCjrD,EAAS,MAExB,IAAK,IACD,OAAOyrD,GAAiBC,EAAW,QAAU,UACjD,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,SAAW,UAEtCjrD,EAAS,SAExB,IAAK,IACD,OAAOyrD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,OAAS,OAEpCjrD,EAAS,QAKvB+5C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACb6E,YAAaA,EACbR,iBAAkBQ,EAGlBK,kBAAmB,uKACnBC,uBAAwB,sDACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,mDAAmDpsC,MAAM,KACnEqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,yBACNx9B,EAAG,cAEPy9B,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,mBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,iBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,wBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,0BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAGm3C,EACH3D,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAGo7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzKyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gEAAgElsC,MACpE,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,oEAAoEpsC,MAC1E,KAEJqsC,cAAe,6BAA6BrsC,MAAM,KAClDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,sCACJC,IAAK,6CACLC,KAAM,oDAEVC,SAAU,CACNC,QAAS,sBACTC,QAAS,sBACTE,QAAS,sBACTD,SAAU,4BACVE,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUiE,GAMd,OAAOA,GALK,UAAUlrD,KAAKkrD,GACrB,MACA,QAAQlrD,KAAKkrD,GACb,MACA,QAGVhE,KAAM,YACNvzC,EAAG,iBACHwzC,GAAI,aACJ57C,EAAG,YACH67C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,cACxBC,QAAS,SACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFlsC,MAC7F,KAEJmsC,YAAa,qDAAqDnsC,MAC9D,KAEJosC,SAAU,+EAA+EpsC,MACrF,KAEJqsC,cAAe,+BAA+BrsC,MAAM,KACpDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EAEpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNvzC,EAAG,mBACHwzC,GAAI,YACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,MACHC,GAAI,SACJ53B,EAAG,UACH63B,GAAI,aACJC,EAAG,MACHC,GAAI,SACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,mCAExBC,QAAS,SAAUC,GACf,IACIoD,EAAS,GAiCb,OAlCQpD,EAyBA,GAEAoD,EADM,KA1BNpD,GA0BkB,KA1BlBA,GA0B8B,KA1B9BA,GA0B0C,KA1B1CA,GA0BsD,MA1BtDA,EA2BS,MAEA,MA7BTA,EA+BO,IACXoD,EA9BS,CACL,GACA,KACA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,KACA,MACA,KACA,KACA,MACA,KACA,OAvBApD,IAkCDA,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KA9FyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFlsC,MAC1F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,qDAAqDpsC,MAAM,KACrEqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,mBACVC,QAAS,iBACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,cACHwzC,GAAI,cACJ57C,EAAG,WACH67C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,WACHC,GAAI,aACJC,EAAG,QACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyBxxD,CAAQ,EAAQ,8FCMlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnB87C,EAAG,CAAC,cAAe,gBACnB33B,EAAG,CAAC,UAAW,aACf63B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBnqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cw6C,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJywC,kBAAkB,EAClBrE,SAAU,8DAA8DpsC,MACpE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG6/C,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJ53B,EAAG07B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyBxxD,CAAQ,EAAQ,8FCAlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnB87C,EAAG,CAAC,cAAe,gBACnB33B,EAAG,CAAC,UAAW,aACf63B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBnqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG7Cw6C,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJywC,kBAAkB,EAClBrE,SAAU,8DAA8DpsC,MACpE,KAEJqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG6/C,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJ53B,EAAG07B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACT5S,EAAG,CAAC,cAAe,gBACnB87C,EAAG,CAAC,cAAe,gBACnB33B,EAAG,CAAC,UAAW,aACf63B,GAAI,CAACO,EAAS,QAASA,EAAS,UAChC0B,EAAG,CAAC,aAAc,eAClBhC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAACK,EAAS,UAAWA,EAAS,YAClCJ,EAAG,CAAC,WAAY,cAChBC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAOQ,EAAgBnqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG/Cw6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJywC,kBAAkB,EAClBrE,SAAU,8DAA8DpsC,MACpE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,sBACTK,SAAU,IACVJ,QAAS,uBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,gCAEdE,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG6/C,EACHhE,GAAI,aACJC,EAAG+D,EACH9D,GAAI,aACJ53B,EAAG07B,EACH7D,GAAI6D,EACJ5B,EAAG4B,EACH3B,GAAI,YACJjC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1EyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIzB,IAAI2O,EAAS,CACL,WACA,aACA,SACA,WACA,KACA,OACA,SACA,WACA,eACA,aACA,aACA,cAEJE,EAAW,CACP,WACA,OACA,WACA,OACA,aACA,SACA,YAGC7O,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUA,EACVC,cAAeD,EACfE,YAAa,qCAAqCtsC,MAAM,KACxD6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,WACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVZ,cAAe,QACfC,KAAM,SAAU18C,GACZ,MAAO,OAASA,GAEpB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,UACVC,QAAS,cACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,YACNvzC,EAAG,iBACHwzC,GAAI,cACJ57C,EAAG,WACH67C,GAAI,YACJC,EAAG,aACHC,GAAI,cACJ53B,EAAG,WACH63B,GAAI,YACJC,EAAG,SACHC,GAAI,UACJC,EAAG,WACHC,GAAI,aAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCs9C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCy8C,KAAM,CACFC,IAAK,EACLC,IAAK,MAxFyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAWhBA,EAAO0O,aAAa,KAAM,CAC/B+F,mBAAoB,qHAAqHhyC,MACrI,KAEJiyC,iBAAkB,qHAAqHjyC,MACnI,KAEJksC,OAAQ,SAAUgG,EAAgBptC,GAC9B,OAAKotC,EAGiB,iBAAXptC,GACP,IAAIzE,KAAKyE,EAAOqS,UAAU,EAAGrS,EAAO1Z,QAAQ,UAGrClO,KAAKi1D,kBAAkBD,EAAeE,SAEtCl1D,KAAKm1D,oBAAoBH,EAAeE,SARxCl1D,KAAKm1D,qBAWpBlG,YAAa,oDAAoDnsC,MAAM,KACvEosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CysC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCJ,KAAM,SAAU18C,GACZ,MAAyC,OAAjCA,EAAQ,IAAIsU,cAAc,IAEtCmoC,cAAe,gBACfM,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVmF,WAAY,CACRjF,QAAS,iBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,gCACX,QACI,MAAO,mCAGnBvC,SAAU,KAEdN,SAAU,SAAUrqD,EAAKwvD,GACrB,IApEYziD,EAoER+hD,EAAS30D,KAAKs1D,YAAYzvD,GAC1B2pD,EAAQ6F,GAAOA,EAAI7F,QAIvB,OAzEY58C,EAsEG+hD,GApEM,oBAAbjuC,UAA4B9T,aAAiB8T,UACX,sBAA1CnT,OAAO1R,UAAUiT,SAAS/S,KAAK6Q,MAoE3B+hD,EAASA,EAAOxyD,MAAMkzD,IAEnBV,EAAO5/C,QAAQ,KAAMy6C,EAAQ,IAAO,EAAI,MAAQ,SAE3DiB,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,oBACHwzC,GAAI,kBACJ57C,EAAG,YACH67C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,WACH63B,GAAI,WACJC,EAAG,aACHC,GAAI,WACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,SA7DgB1e,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,mBACTC,SAAU,eACVC,QAAS,oBACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,YACJC,EAAG,SACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,2FCMlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FlsC,MACjG,KAEJmsC,YAAa,oDAAoDnsC,MAAM,KACvEosC,SAAU,qDAAqDpsC,MAAM,KACrEqsC,cAAe,gCAAgCrsC,MAAM,KACrDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,4BACJC,IAAK,kCACLC,KAAM,2CACNyE,KAAM,uCAEVrF,cAAe,cACfC,KAAM,SAAU18C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3BqoC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,SAAW,SAErBA,EAAU,SAAW,UAGpCQ,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNvzC,EAAG,kBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,WACH63B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA/DyBxxD,CAAQ,EAAQ,8FCDlD,SAAWmgD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8DzyC,MAC3E,KAEJmsC,EAAc,kDAAkDnsC,MAAM,KACtE+wC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqnC,EAAYj6C,EAAEkgD,SAEdK,EAAevgD,EAAEkgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBpwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBrwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBtwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBvwD,KAAKwvD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyBxxD,CAAQ,EAAQ,8FCIlD,SAAWmgD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8DzyC,MAC3E,KAEJmsC,EAAc,kDAAkDnsC,MAAM,KACtE+wC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqnC,EAAYj6C,EAAEkgD,SAEdK,EAAevgD,EAAEkgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBpwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBrwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBtwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBvwD,KAAKwvD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqBt1D,CAAQ,EAAQ,8FCIlD,SAAWmgD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8DzyC,MAC3E,KAEJmsC,EAAc,kDAAkDnsC,MAAM,KACtE+wC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqnC,EAAYj6C,EAAEkgD,SAEdK,EAAevgD,EAAEkgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,+BACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBpwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBrwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBtwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBvwD,KAAKwvD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIzB,IAAIkV,EAAiB,8DAA8DzyC,MAC3E,KAEJmsC,EAAc,kDAAkDnsC,MAAM,KACtE+wC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,mLAETzT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbqnC,EAAYj6C,EAAEkgD,SAEdK,EAAevgD,EAAEkgD,SAJjBK,GAOfzB,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,+FACnBC,uBAAwB,0FACxBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,aAAgC,IAAjBnwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE3DY,QAAS,WACL,MAAO,gBAAmC,IAAjBpwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE9Da,SAAU,WACN,MAAO,cAAiC,IAAjBrwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5Dc,QAAS,WACL,MAAO,cAAiC,IAAjBtwD,KAAKwvD,QAAgB,IAAM,IAAM,QAE5De,SAAU,WACN,MACI,0BACkB,IAAjBvwD,KAAKwvD,QAAgB,IAAM,IAC5B,QAGRgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,GAET8D,YAAa,mBAzGqBt1D,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACTxK,EAAG,CAAC,eAAgB,cAAe,iBACnCwzC,GAAI,CAACW,EAAS,UAAWA,EAAS,YAClCv8C,EAAG,CAAC,aAAc,aAClB67C,GAAI,CAACU,EAAS,UAAWA,EAAS,YAClCT,EAAG,CAAC,YAAa,YAAa,YAC9BC,GAAI,CAACQ,EAAS,SAAUA,EAAS,UACjCp4B,EAAG,CAAC,YAAa,YACjB83B,EAAG,CAAC,UAAW,WAAY,WAC3BC,GAAI,CAACK,EAAS,OAAQA,EAAS,SAC/BJ,EAAG,CAAC,YAAa,QAAS,aAC1BC,GAAI,CAACG,EAAS,SAAUA,EAAS,YAErC,OAAIQ,EACOnqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAElDmsD,EAAWpqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAG1Cw6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FlsC,MACjG,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJosC,SAAU,iEAAiEpsC,MACvE,KAEJqsC,cAAe,gBAAgBrsC,MAAM,KACrCssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,qBACVC,QAAS,aACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNvzC,EAAGy3C,EACHjE,GAAIiE,EACJ7/C,EAAG6/C,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ17B,EAAG07B,EACH7D,GAAI,WACJC,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+FAA+FlsC,MACnG,KAEJmsC,YAAa,8DAA8DnsC,MACvE,KAEJywC,kBAAkB,EAClBrE,SAAU,sEAAsEpsC,MAC5E,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,gCACLC,KAAM,sCACNx9B,EAAG,WACH+hC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCAEVxE,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNvzC,EAAG,iBACHwzC,GAAI,aACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,WACH63B,GAAI,UACJC,EAAG,eACHC,GAAI,cACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wEAAwElsC,MAC5E,KAEJmsC,YAAa,wEAAwEnsC,MACjF,KAEJosC,SAAU,qDAAoEpsC,MAC1E,KAEJqsC,cAAe,qDAAoErsC,MAC/E,KAEJssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,wBACfC,KAAM,SAAU18C,GACZ,MAAO,aAAauQ,KAAKvQ,IAE7B28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,YACHwzC,GAAI,WACJ57C,EAAG,WACH67C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EACFwP,QAAQ,UAAU,SAAUiH,GACzB,OAAOw2C,EAAUx2C,MAEpBjH,QAAQ,KAAM,MAEvBs9C,WAAY,SAAU9sD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOs2C,EAAUt2C,MAEpBjH,QAAQ,KAAM,MAEvBs8C,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,MA5GyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIoV,EAAc,wEAAwE3yC,MAClF,KAEJ4yC,EAAgB,CACZ,QACA,QACA,SACA,SACA,SACA,SACA,SACAD,EAAY,GACZA,EAAY,GACZA,EAAY,IAEpB,SAASlB,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,IAAI1rD,EAAS,GACb,OAAQT,GACJ,IAAK,IACD,OAAOmsD,EAAW,oBAAsB,kBAC5C,IAAK,KACD1rD,EAAS0rD,EAAW,WAAa,WACjC,MACJ,IAAK,IACD,OAAOA,EAAW,WAAa,WACnC,IAAK,KACD1rD,EAAS0rD,EAAW,WAAa,YACjC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD1rD,EAAS0rD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD1rD,EAAS0rD,EAAW,SAAW,SAC/B,MACJ,IAAK,IACD,OAAOA,EAAW,YAAc,WACpC,IAAK,KACD1rD,EAAS0rD,EAAW,YAAc,YAClC,MACJ,IAAK,IACD,OAAOA,EAAW,SAAW,QACjC,IAAK,KACD1rD,EAAS0rD,EAAW,SAAW,SAIvC,OAEJ,SAAsBT,EAAQS,GAC1B,OAAOT,EAAS,GACVS,EACI0D,EAAcnE,GACdkE,EAAYlE,GAChBA,EARGoE,CAAapE,EAAQS,GAAY,IAAM1rD,EAW3C+5C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2GAA2GlsC,MAC/G,KAEJmsC,YAAa,uEAAuEnsC,MAChF,KAEJosC,SAAU,qEAAqEpsC,MAC3E,KAEJqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,mBACJC,IAAK,gCACLC,KAAM,sCACNx9B,EAAG,WACH+hC,GAAI,cACJC,IAAK,2BACLC,KAAM,iCAEVxE,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,YACNvzC,EAAGm3C,EACH3D,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAGo7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyBxxD,CAAQ,EAAQ,4FCIlD,SAAWmgD,GAAU,aAIfA,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,wBAAwBtsC,MAAM,KAC3C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,eACH67C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJ53B,EAAG,aACH63B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,4EAA4EpsC,MAClF,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,kBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNvzC,EAAG,YACHwzC,GAAI,cACJ57C,EAAG,eACH67C,GAAI,cACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,YACH63B,GAAI,WACJC,EAAG,cACHC,GAAI,aACJC,EAAG,UACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyBxxD,CAAQ,EAAQ,8FCElD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,uFAAuFlsC,MAC3F,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJywC,kBAAkB,EAClBrE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJ53B,EAAG,UACH63B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,SAlEjBrxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,uFAAuFlsC,MAC3F,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJywC,kBAAkB,EAClBrE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJ53B,EAAG,UACH63B,GAAI,WACJC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,gBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,QACA,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAEIyT,EAAc,yKACdD,EAAc,CACV,SACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,QACA,SAGCxT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFlsC,MAC3F,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJgxC,YAAaA,EACbR,iBAAkBQ,EAClBK,kBA3BoB,2FA4BpBC,uBA3ByB,oFA4BzBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,qBACTC,QAAS,gBACTC,SAAU,cACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,YACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,YACHC,GAAI,YACJ53B,EAAG,UACH63B,GAAI,WACJiC,EAAG,cACHC,GAAI,cACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAIJ,IAAK,IACD,OAAOzB,GAAqB,IAAXA,EAAe,KAAO,IAG3C,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,KAG3C,IAAK,IACL,IAAK,IACD,OAAOA,GAAqB,IAAXA,EAAe,KAAO,OAGnDC,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIuV,EAAsB,6DAA6D9yC,MAC/E,KAEJ+yC,EAAyB,kDAAkD/yC,MACvE,KAGCu9B,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,iGAAiGlsC,MACrG,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbiuC,EAAuB7gD,EAAEkgD,SAEzBU,EAAoB5gD,EAAEkgD,SAJtBU,GAOfrC,kBAAkB,EAClBrE,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,iBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAG,mBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,WACJC,EAAG,aACHC,GAAI,aACJC,EAAG,WACHC,GAAI,cAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA3EyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aA4ChBA,EAAO0O,aAAa,KAAM,CAC/BC,OAzCS,CACL,SACA,UACA,QACA,UACA,YACA,YACA,OACA,SACA,eACA,mBACA,UACA,WA8BJC,YA5Bc,CACV,MACA,QACA,OACA,MACA,OACA,QACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,eACA,WACA,WACA,cACA,YACA,YACA,eAUJC,cARgB,CAAC,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QAAS,QASnEC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,IAAK,MASlDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,kBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,YACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,UACH67C,GAAI,aACJC,EAAG,iBACHC,GAAI,oBACJ53B,EAAG,KACH63B,GAAI,QACJC,EAAG,KACHC,GAAI,YACJC,EAAG,SACHC,GAAI,aAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aA4ChBA,EAAO0O,aAAa,KAAM,CAC/BC,OAzCS,CACL,gBACA,aACA,UACA,aACA,aACA,eACA,cACA,cACA,eACA,aACA,eACA,gBA8BJC,YA5Bc,CACV,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,QAiBJsE,kBAAkB,EAClBrE,SAhBW,CACP,cACA,UACA,UACA,YACA,YACA,WACA,eAUJC,cARgB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAS3DC,YARc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MASnDO,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,gBACNvzC,EAAG,gBACHwzC,GAAI,YACJ57C,EAAG,UACH67C,GAAI,gBACJC,EAAG,OACHC,GAAI,aACJ53B,EAAG,QACH63B,GAAI,WACJC,EAAG,OACHC,GAAI,YACJC,EAAG,WACHC,GAAI,eAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GAEf,OAAOA,GADiB,IAAXA,EAAe,IAAMA,EAAS,IAAO,EAAI,KAAO,OAGjEC,KAAM,CACFC,IAAK,EACLC,IAAK,KA7FyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFlsC,MAC7F,KAEJmsC,YAAa,8DAA8DnsC,MACvE,KAEJywC,kBAAkB,EAClBrE,SAAU,mDAAmDpsC,MAAM,KACnEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,WACL,MAAO,UAA6B,IAAjBnwD,KAAKwvD,QAAgB,KAAO,KAAO,QAE1DY,QAAS,WACL,MAAO,UAA6B,IAAjBpwD,KAAKwvD,QAAgB,KAAO,KAAO,QAE1Da,SAAU,WACN,MAAO,UAA6B,IAAjBrwD,KAAKwvD,QAAgB,KAAO,KAAO,QAE1Dc,QAAS,WACL,MAAO,UAA6B,IAAjBtwD,KAAKwvD,QAAgB,IAAM,KAAO,QAEzDe,SAAU,WACN,MACI,qBAAwC,IAAjBvwD,KAAKwvD,QAAgB,KAAO,KAAO,QAGlEgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAU1/C,GACd,OAA0B,IAAtBA,EAAI9C,QAAQ,MACL,IAAM8C,EAEV,MAAQA,GAEnB2/C,KAAM,SACNvzC,EAAG,eACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,YACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxEyBxxD,CAAQ,EAAQ,iGCGlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,cACvBwzC,GAAI,CAACW,EAAS,aAAcA,EAAS,UACrCv8C,EAAG,CAAC,aAAc,YAClB67C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,WAAY,SAChBC,GAAI,CAACQ,EAAS,UAAWA,EAAS,SAClCp4B,EAAG,CAAC,YAAa,UACjB63B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,gBAAiB,aACrBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,WAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWpqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCw6C,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,wFAAwF/vC,MAChG,KAEJ8E,OAAQ,mJAAmJ9E,MACvJ,KAEJgwC,SAAU,mBAEd7D,YAAa,4EAA4EnsC,MACrF,KAEJywC,kBAAkB,EAClBrE,SAAU,qDAAqDpsC,MAAM,KACrEqsC,cAAe,4CAA4CrsC,MAAM,KACjEssC,YAAa,wBAAwBtsC,MAAM,KAC3CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,kBACJC,IAAK,qBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,8BACLC,KAAM,uCACNyE,KAAM,oCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,eACTC,SAAU,qBACVC,QAAS,WACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNvzC,EAAGy3C,EACHjE,GAAIiE,EACJ7/C,EAAG6/C,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ17B,EAAG07B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,MACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,4BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,WAAb5C,EACA4C,EACa,YAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,SACAA,EAAO,GACP,UACAA,EAAO,GACP,QAEA,UAzHmBjyD,CAAQ,EAAQ,iGCGlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACTxK,EAAG,CAAC,qBAAsB,iBAC1BwzC,GAAI,CAACW,EAAS,cAAeA,EAAS,WACtCv8C,EAAG,CAAC,aAAc,YAClB67C,GAAI,CAACU,EAAS,YAAaA,EAAS,WACpCT,EAAG,CAAC,YAAa,UACjBC,GAAI,CAACQ,EAAS,WAAYA,EAAS,UACnCp4B,EAAG,CAAC,YAAa,UACjB63B,GAAI,CAACO,EAAS,WAAYA,EAAS,QACnCN,EAAG,CAAC,eAAgB,aACpBC,GAAI,CAACK,EAAS,cAAeA,EAAS,WACtCJ,EAAG,CAAC,aAAc,YAClBC,GAAI,CAACG,EAAS,YAAaA,EAAS,YAExC,OAAOS,EAAWpqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAGrCw6C,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,CACJ6D,WAAY,4EAA4E/vC,MACpF,KAEJ8E,OAAQ,wIAAwI9E,MAC5I,KAEJgwC,SAAU,mBAEd7D,YAAa,4DAA4DnsC,MACrE,KAEJywC,kBAAkB,EAClBrE,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,iBACJC,IAAK,oBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,sCACNyE,KAAM,mCAEVxE,SAAU,CACNC,QAAS,WACTC,QAAS,cACTC,SAAU,sBACVC,QAAS,WACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,KACRC,KAAM,UACNvzC,EAAGy3C,EACHjE,GAAIiE,EACJ7/C,EAAG6/C,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ17B,EAAG07B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,cACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GAEJ,IAAK,IACD,OAAOzB,EAAS,KACpB,QACA,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,IACD,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,GAETrC,cAAe,+BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,EAAO,GAAKA,EAAOA,EAAO,GACb,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAzHmBjyD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFlsC,MAC7F,KAEJmsC,YAAa,yEAAyEnsC,MAClF,KAEJywC,kBAAkB,EAClBrE,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,mCAAmCrsC,MAAM,KACxDssC,YAAa,qBAAqBtsC,MAAM,KACxC6sC,eAAgB,CACZC,GAAI,gBACJC,IAAK,mBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,6BACLC,KAAM,oCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,WACHwzC,GAAI,WACJ57C,EAAG,WACH67C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,UACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAKzBqzC,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,SAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,OACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0EAA0ElsC,MAC9E,KAEJmsC,YAAa,4DAA4DnsC,MACrE,KAEJosC,SAAU,uCAAuCpsC,MAAM,KACvDqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,6BACNx9B,EAAG,WACH+hC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,cACTC,QAAS,aACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNvzC,EAAG,aACHwzC,GAAI,WACJ57C,EAAG,MACH67C,GAAI,UACJC,EAAG,MACHC,GAAI,SAAUQ,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBp4B,EAAG,MACH63B,GAAI,SAAUO,GACV,OAAe,IAAXA,EACO,SAEJA,EAAS,SAEpBN,EAAG,OACHC,GAAI,SAAUK,GACV,OAAe,IAAXA,EACO,UAEJA,EAAS,WAEpBJ,EAAG,MACHC,GAAI,SAAUG,GACV,OAAe,IAAXA,EACO,SACAA,EAAS,IAAO,GAAgB,KAAXA,EACrBA,EAAS,OAEbA,EAAS,UAGxBlC,cAAe,gEACfC,KAAM,SAAU18C,GACZ,MAAO,8BAA8BuQ,KAAKvQ,IAE9C28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,aACAA,EAAO,GACP,QACAA,EAAO,GACPzC,EAAU,SAAW,eACrByC,EAAO,GACPzC,EAAU,QAAU,eAEpB,UAzFmBxvD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETqB,EAAc,CACV,OACA,WACA,UACA,UACA,OACA,QACA,QACA,OACA,aACA,UACA,WACA,cAiBCxT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,8EAA8E9E,MAClF,KAEJ+vC,WAAY,0EAA0E/vC,MAClF,MAGRmsC,YAAa,6DAA6DnsC,MACtE,KAEJosC,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,kCAAkCrsC,MAAM,KACvDssC,YAAa,qBAAqBtsC,MAAM,KACxC6sC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAGV4D,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAzCmB,CACf,OACA,QACA,UACA,UACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,SA+BJR,YAAa,+KAEbR,iBAAkB,+KAElBa,kBAAmB,uIAEnBC,uBAAwB,sFAExBlE,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,WACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNvzC,EAAG,cACHwzC,GAAI,WACJ57C,EAAG,UACH67C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAKzBqzC,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,QAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAlKyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,SAASkU,EAAUhD,EAAQQ,EAAelsD,GACtC,IAAIS,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,KAQD,OANIS,GADW,IAAXirD,EACU,UACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,IACD,OAAOQ,EAAgB,eAAiB,eAC5C,IAAK,KAQD,OANIzrD,GADW,IAAXirD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,UAGlB,IAAK,IACD,OAAOQ,EAAgB,YAAc,cACzC,IAAK,KAQD,OANIzrD,GADW,IAAXirD,EACU,MACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,OAEA,QAGlB,IAAK,KAMD,OAJIjrD,GADW,IAAXirD,EACU,MAEA,QAGlB,IAAK,KAQD,OANIjrD,GADW,IAAXirD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,UAEA,WAGlB,IAAK,KAQD,OANIjrD,GADW,IAAXirD,EACU,SACQ,IAAXA,GAA2B,IAAXA,GAA2B,IAAXA,EAC7B,SAEA,WAMjBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,oGAAoG9E,MACxG,KAEJ+vC,WAAY,gGAAgG/vC,MACxG,MAGRmsC,YAAa,+DAA+DnsC,MACxE,KAEJywC,kBAAkB,EAClBrE,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,cACHwzC,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAG,MACH63B,GAAIuD,EACJtD,EAAG,SACHC,GAAIqD,EACJpD,EAAG,SACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxJyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,IAAIyV,EAAc,gEAAgEhzC,MAC9E,KAEJ,SAASyxC,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,IAAIW,EAAMpB,EACV,OAAQ1rD,GACJ,IAAK,IACD,OAAOmsD,GAAYD,EACb,mBACA,oBACV,IAAK,KACD,OAAOY,GAAOX,GAAYD,GACpB,aACA,cACV,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,QAAU,UAC1D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,QAAU,UACxD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,OAAS,UACzD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,OAAS,UACvD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,SAAW,YAC3D,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,SAAW,YACzD,IAAK,IACD,MAAO,OAASC,GAAYD,EAAgB,MAAQ,QACxD,IAAK,KACD,OAAOY,GAAOX,GAAYD,EAAgB,MAAQ,QAE1D,MAAO,GAEX,SAASP,EAAKQ,GACV,OACKA,EAAW,GAAK,WACjB,IACA8D,EAAY91D,KAAK+yD,OACjB,aAIC1S,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGlsC,MACxG,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJywC,kBAAkB,EAClBrE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,gCAAgCrsC,MAAM,KACrDssC,YAAa,qBAAqBtsC,MAAM,KACxC6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVZ,cAAe,SACfC,KAAM,SAAU18C,GACZ,MAAyC,MAAlCA,EAAMnN,OAAO,GAAGyhB,eAE3BqoC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,IACW,IAAZE,EAAmB,KAAO,MAEd,IAAZA,EAAmB,KAAO,MAGzCQ,SAAU,CACNC,QAAS,gBACTC,QAAS,oBACTC,SAAU,WACN,OAAOmB,EAAKzvD,KAAK/B,MAAM,IAE3BswD,QAAS,oBACTC,SAAU,WACN,OAAOiB,EAAKzvD,KAAK/B,MAAM,IAE3BwwD,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,KACNvzC,EAAGm3C,EACH3D,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAGo7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyBxxD,CAAQ,EAAQ,8FCElD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,CACJpnC,OAAQ,4GAA4G9E,MAChH,KAEJ+vC,WAAY,gGAAgG/vC,MACxG,MAGRmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,gEAAgEpsC,MACtE,KAEJqsC,cAAe,+BAA+BrsC,MAAM,KACpDssC,YAAa,+BAA+BtsC,MAAM,KAClD6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTE,QAAS,YACTD,SAAU,WACN,MAAO,sBAEXE,SAAU,WACN,MAAO,8BAEXC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,UACNvzC,EAAG,mBACHwzC,GAAI,cACJ57C,EAAG,OACH67C,GAAI,UACJC,EAAG,MACHC,GAAI,SACJ53B,EAAG,KACH63B,GAAI,QACJC,EAAG,OACHC,GAAI,UACJC,EAAG,OACHC,GAAI,WAER/B,cAAe,oCACfC,KAAM,SAAU18C,GACZ,MAAO,uBAAuBuQ,KAAKvQ,IAEvC28C,SAAU,SAAU4C,GAChB,OAAIA,EAAO,EACA,UACAA,EAAO,GACP,WACAA,EAAO,GACP,UAEA,YAGfd,uBAAwB,0BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,MACL,IAAK,IACL,IAAK,IACL,IAAK,OACD,OAAe,IAAXzB,EACOA,EAAS,MAEbA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFlsC,MAC7F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,6CAA6CpsC,MAAM,KAC7DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,wBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,GAAoC,UAAbA,EACvB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,QACAA,EAAQ,GACR,OAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,qBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,eACNvzC,EAAG,iBACHwzC,GAAI,WACJ57C,EAAG,UACH67C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIzB,SAASuU,EAAOr0C,GACZ,OAAIA,EAAI,KAAQ,IAELA,EAAI,IAAO,EAK1B,SAASg0C,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,IAAI1rD,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,IACD,OAAOksD,GAAiBC,EAClB,mBACA,mBACV,IAAK,KACD,OAAI4C,EAAOrD,GAEHjrD,GACCyrD,GAAiBC,EAAW,WAAa,YAG3C1rD,EAAS,UACpB,IAAK,IACD,OAAOyrD,EAAgB,SAAW,SACtC,IAAK,KACD,OAAI6C,EAAOrD,GAEHjrD,GAAUyrD,GAAiBC,EAAW,UAAY,WAE/CD,EACAzrD,EAAS,SAEbA,EAAS,SACpB,IAAK,KACD,OAAIsuD,EAAOrD,GAEHjrD,GACCyrD,GAAiBC,EACZ,gBACA,iBAGP1rD,EAAS,cACpB,IAAK,IACD,OAAIyrD,EACO,QAEJC,EAAW,MAAQ,OAC9B,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACOzrD,EAAS,QAEbA,GAAU0rD,EAAW,OAAS,SAC9BD,EACAzrD,EAAS,QAEbA,GAAU0rD,EAAW,MAAQ,QACxC,IAAK,IACD,OAAID,EACO,UAEJC,EAAW,QAAU,SAChC,IAAK,KACD,OAAI4C,EAAOrD,GACHQ,EACOzrD,EAAS,UAEbA,GAAU0rD,EAAW,SAAW,WAChCD,EACAzrD,EAAS,UAEbA,GAAU0rD,EAAW,QAAU,UAC1C,IAAK,IACD,OAAOD,GAAiBC,EAAW,KAAO,MAC9C,IAAK,KACD,OAAI4C,EAAOrD,GACAjrD,GAAUyrD,GAAiBC,EAAW,KAAO,QAEjD1rD,GAAUyrD,GAAiBC,EAAW,KAAO,QAIvD3R,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFlsC,MACxF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,mFAAmFpsC,MACzF,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,iBACNvzC,EAAGm3C,EACH3D,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAG,cACHC,GAAIwD,EACJp7B,EAAGo7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,gGAAgGlsC,MACpG,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,mBACTC,SAAU,iBACVC,QAAS,iBACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,6BACX,QACI,MAAO,+BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUtzC,GACd,OAAQ,YAAY+F,KAAK/F,GAAK,MAAQ,MAAQ,IAAMA,GAExDuzC,KAAM,QACNvzC,EAAG,iBACHwzC,GAAI,aACJ57C,EAAG,YACH67C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJ53B,EAAG,YACH63B,GAAI,YACJC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA9DyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gGAAgGlsC,MACpG,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,WACL,MACI,WACCnwD,KAAKwvD,QAAU,EAAI,OAA0B,IAAjBxvD,KAAKwvD,QAAgB,IAAM,OACxD,OAGRY,QAAS,WACL,MACI,aACCpwD,KAAKwvD,QAAU,EAAI,OAA0B,IAAjBxvD,KAAKwvD,QAAgB,IAAM,OACxD,OAGRa,SAAU,WACN,MACI,WACCrwD,KAAKwvD,QAAU,EAAI,OAA0B,IAAjBxvD,KAAKwvD,QAAgB,IAAM,OACxD,OAGRc,QAAS,WACL,MACI,WACCtwD,KAAKwvD,QAAU,EAAI,OAA0B,IAAjBxvD,KAAKwvD,QAAgB,IAAM,OACxD,OAGRe,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MACI,uBACC/yD,KAAKwvD,QAAU,EACV,OACiB,IAAjBxvD,KAAKwvD,QACL,IACA,OACN,MAER,QACI,MACI,uBACCxvD,KAAKwvD,QAAU,EACV,OACiB,IAAjBxvD,KAAKwvD,QACL,IACA,OACN,QAIhBgB,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNvzC,EAAG,iBACHwzC,GAAI,aACJ57C,EAAG,YACH67C,GAAI,YACJC,EAAG,SACHC,GAAI,SACJ53B,EAAG,YACH63B,GAAI,YACJiC,EAAG,gBACHC,GAAI,eACJjC,EAAG,UACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAtGyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BgH,KAAM,CACF,CACIC,MAAO,aACPC,OAAQ,EACRzwD,KAAM,KACN0wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRzwD,KAAM,KACN0wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRzwD,KAAM,KACN0wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRzwD,KAAM,KACN0wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRzwD,KAAM,KACN0wD,OAAQ,IACRC,KAAM,KAEV,CACIH,MAAO,aACPI,MAAO,aACPH,OAAQ,EACRzwD,KAAM,KACN0wD,OAAQ,KACRC,KAAM,MAEV,CACIH,MAAO,aACPI,OAAO,IACPH,OAAQ,EACRzwD,KAAM,MACN0wD,OAAQ,KACRC,KAAM,OAGdE,oBAAqB,WACrBC,oBAAqB,SAAU1jD,EAAOoJ,GAClC,MAAoB,MAAbA,EAAM,GAAa,EAAIqN,SAASrN,EAAM,IAAMpJ,EAAO,KAE9Do8C,OAAQ,yCAAyClsC,MAAM,KACvDmsC,YAAa,yCAAyCnsC,MAClD,KAEJosC,SAAU,8BAA8BpsC,MAAM,KAC9CqsC,cAAe,gBAAgBrsC,MAAM,KACrCssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBACNx9B,EAAG,aACH+hC,GAAI,YACJC,IAAK,kBACLC,KAAM,wBAEVrF,cAAe,SACfC,KAAM,SAAU18C,GACZ,MAAiB,OAAVA,GAEX28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAWxxD,KAAKwxD,OACb,cAEA,WAGflB,QAAS,UACTC,SAAU,SAAUgG,GAChB,OAAIv2D,KAAKwxD,SAAW+E,EAAI/E,OACb,cAEA,WAGfhB,SAAU,KAEda,uBAAwB,WACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACD,OAAkB,IAAXzB,EAAe,KAAOA,EAAS,IAC1C,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNvzC,EAAG,KACHwzC,GAAI,MACJ57C,EAAG,KACH67C,GAAI,MACJC,EAAG,MACHC,GAAI,OACJ53B,EAAG,KACH63B,GAAI,MACJC,EAAG,MACHC,GAAI,OACJC,EAAG,KACHC,GAAI,SAlJ0BlxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFlsC,MAC7F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,+CAA+CpsC,MAAM,KAC/DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,6BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,SACAA,EAAQ,GACR,SACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,2BACTC,QAAS,sBACTC,SAAU,kBACVC,QAAS,wBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,uBACNvzC,EAAG,kBACHwzC,GAAI,WACJ57C,EAAG,kBACH67C,GAAI,WACJC,EAAG,gBACHC,GAAI,SACJ53B,EAAG,WACH63B,GAAI,YACJC,EAAG,UACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGlsC,MACzG,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,CACN2D,WAAY,gEAAgE/vC,MACxE,KAEJ8E,OAAQ,iEAAiE9E,MACrE,KAEJgwC,SAAU,iBAEd3D,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTE,QAAS,kBACTD,SAAU,wBACVE,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SAAUtzC,GACd,OAAOA,EAAErI,QAAQ,iCAAiC,SAC9CyhD,EACAvvC,EACAwvC,GAEA,MAAc,MAAPA,EAAaxvC,EAAK,KAAOA,EAAKwvC,EAAK,SAGlD9F,KAAM,SAAUvzC,GACZ,MAAI,4BAA4B+F,KAAK/F,GAC1BA,EAAErI,QAAQ,SAAU,UAE3B,OAAOoO,KAAK/F,GACLA,EAAErI,QAAQ,QAAS,YAEvBqI,GAEXA,EAAG,iBACHwzC,GAAI,UACJ57C,EAAG,OACH67C,GAAI,UACJC,EAAG,QACHC,GAAI,WACJ53B,EAAG,MACH63B,GAAI,SACJC,EAAG,MACHC,GAAI,SACJC,EAAG,OACHC,GAAI,WAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,OAAe,IAAXA,EACOA,EAEI,IAAXA,EACOA,EAAS,MAGhBA,EAAS,IACRA,GAAU,KAAOA,EAAS,IAAO,GAClCA,EAAS,KAAQ,EAEV,MAAQA,EAEZA,EAAS,MAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGApS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,0DAA0DpsC,MAChE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,kBACVC,QAAS,kBACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNvzC,EAAG,iBACHwzC,GAAI,YACJ57C,EAAG,YACH67C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhFyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yEAAyElsC,MAC7E,KAEJmsC,YAAa,yEAAyEnsC,MAClF,KAEJosC,SAAU,iDAAiDpsC,MAAM,KACjEqsC,cAAe,oBAAoBrsC,MAAM,KACzCssC,YAAa,oBAAoBtsC,MAAM,KACvCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,cACfC,KAAM,SAAU18C,GACZ,MAAiB,UAAVA,GAEX28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,QAEA,SAGfjC,SAAU,CACNC,QAAS,oBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,qBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNvzC,EAAG,iBACHwzC,GAAI,YACJ57C,EAAG,UACH67C,GAAI,UACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,UACJC,EAAG,QACHC,GAAI,QACJC,EAAG,WACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,OACTiB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBw1C,KAAM,CACFC,IAAK,EACLC,IAAK,KApGyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6FAA6FlsC,MACjG,KAEJmsC,YAAa,2EAA2EnsC,MACpF,KAEJywC,kBAAkB,EAClBrE,SAAU,0DAA0DpsC,MAChE,KAEJqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,wBAAwBtsC,MAAM,KAC3C6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNvzC,EAAG,gBACHwzC,GAAI,gBACJ57C,EAAG,aACH67C,GAAI,WACJC,EAAG,YACHC,GAAI,UACJ53B,EAAG,WACH63B,GAAI,SACJC,EAAG,cACHC,GAAI,YACJC,EAAG,YACHC,GAAI,WAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBqzC,cAAe,gCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,aAAb5C,EACA4C,EACa,aAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,OAEA,UAGfd,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yCAAyClsC,MAAM,KACvDmsC,YAAa,yCAAyCnsC,MAClD,KAEJosC,SAAU,8BAA8BpsC,MAAM,KAC9CqsC,cAAe,gBAAgBrsC,MAAM,KACrCssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,uBACLC,KAAM,4BACNx9B,EAAG,cACH+hC,GAAI,gBACJC,IAAK,uBACLC,KAAM,6BAEVxE,SAAU,CACNC,QAAS,QACTC,QAAS,QACTC,SAAU,UACVC,QAAS,QACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,OACNvzC,EAAG,MACHwzC,GAAI,MACJ57C,EAAG,KACH67C,GAAI,MACJC,EAAG,OACHC,GAAI,OACJ53B,EAAG,KACH63B,GAAI,MACJC,EAAG,MACHC,GAAI,MACJC,EAAG,MACHC,GAAI,OAERC,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBlC,cAAe,QACfC,KAAM,SAAU/tC,GACZ,MAAiB,OAAVA,GAEXguC,SAAU,SAAU4C,EAAMC,EAAQsE,GAC9B,OAAOvE,EAAO,GAAK,KAAO,QAxEIjyD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAETxD,EAAS,CACL,eACA,QACA,QACA,QACA,QACA,WACA,SACA,MACA,UACA,eACA,eACA,gBAGC3O,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAU,0EAA0EpsC,MAChF,KAEJqsC,cAAe,2DAA2DrsC,MACtE,KAEJssC,YAAa,gBAAgBtsC,MAAM,KACnCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,kBACfC,KAAM,SAAU18C,GACZ,MAAO,UAAUuQ,KAAKvQ,IAE1B28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,UAEA,WAGfjC,SAAU,CACNC,QAAS,sBACTC,QAAS,uBACTC,SAAU,oBACVC,QAAS,qBACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,KACNvzC,EAAG,kBACHwzC,GAAI,WACJ57C,EAAG,cACH67C,GAAI,YACJC,EAAG,eACHC,GAAI,aACJ53B,EAAG,WACH63B,GAAI,SACJC,EAAG,YACHC,GAAI,UACJC,EAAG,WACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EACFwP,QAAQ,iBAAiB,SAAUiH,GAChC,OAAOw2C,EAAUx2C,MAEpBjH,QAAQ,KAAM,MAEvBs9C,WAAY,SAAU9sD,GAClB,OAAOA,EACFwP,QAAQ,OAAO,SAAUiH,GACtB,OAAOs2C,EAAUt2C,MAEpBjH,QAAQ,KAAM,MAEvBy8C,KAAM,CACFC,IAAK,EACLC,IAAK,MApHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGApS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,kFAAkFlsC,MACtF,KAEJmsC,YAAa,qDAAqDnsC,MAC9D,KAEJosC,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,iBACVC,QAAS,kBACTC,SAAU,wCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNvzC,EAAG,iBACHwzC,GAAI,YACJ57C,EAAG,YACH67C,GAAI,WACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,wBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlFyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACT5S,EAAG,CAAC,aAAc,gBAClB87C,EAAG,CAAC,YAAa,eACjB33B,EAAG,CAAC,UAAW,aACf83B,EAAG,CAAC,WAAY,eAChBE,EAAG,CAAC,UAAW,eAEnB,OAAOY,EAAgBnqC,EAAO/hB,GAAK,GAAK+hB,EAAO/hB,GAAK,GAuBxD,SAAS8wD,EAA4BpF,GAEjC,GADAA,EAASloC,SAASkoC,EAAQ,IACtBjoC,MAAMioC,GACN,OAAO,EAEX,GAAIA,EAAS,EAET,OAAO,EACJ,GAAIA,EAAS,GAEhB,OAAI,GAAKA,GAAUA,GAAU,EAI1B,GAAIA,EAAS,IAAK,CAErB,IAAI4B,EAAY5B,EAAS,GAEzB,OACWoF,EADO,IAAdxD,EADa5B,EAAS,GAIS4B,GAChC,GAAI5B,EAAS,IAAO,CAEvB,KAAOA,GAAU,IACbA,GAAkB,GAEtB,OAAOoF,EAA4BpF,GAInC,OAAOoF,EADPpF,GAAkB,KAKjBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFlsC,MAC3F,KAEJmsC,YAAa,+DAA+DnsC,MACxE,KAEJywC,kBAAkB,EAClBrE,SAAU,mEAAmEpsC,MACzE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,cACJC,IAAK,iBACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,kCAEVC,SAAU,CACNC,QAAS,eACTK,SAAU,IACVJ,QAAS,eACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,WAEN,OAAQvwD,KAAK+yD,OACT,KAAK,EACL,KAAK,EACD,MAAO,0BACX,QACI,MAAO,4BAIvBtC,aAAc,CACVC,OAhGR,SAA2BnrD,GAEvB,OAAIoxD,EADSpxD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,KAAO3I,EAEX,MAAQA,GA4FXorD,KA1FR,SAAyBprD,GAErB,OAAIoxD,EADSpxD,EAAOwhB,OAAO,EAAGxhB,EAAO2I,QAAQ,OAElC,QAAU3I,EAEd,SAAWA,GAsFd6X,EAAG,kBACHwzC,GAAI,cACJ57C,EAAG6/C,EACHhE,GAAI,cACJC,EAAG+D,EACH9D,GAAI,aACJ53B,EAAG07B,EACH7D,GAAI,UACJC,EAAG4D,EACH3D,GAAI,WACJC,EAAG0D,EACHzD,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApIyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6EAA6ElsC,MACjF,KAEJmsC,YAAa,6EAA6EnsC,MACtF,KAEJosC,SAAU,sCAAsCpsC,MAAM,KACtDqsC,cAAe,oCAAoCrsC,MAAM,KACzDssC,YAAa,mBAAmBtsC,MAAM,KACtCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,6BAEVZ,cAAe,kBACfC,KAAM,SAAU18C,GACZ,MAAiB,WAAVA,GAEX28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,WAEA,UAGfjC,SAAU,CACNC,QAAS,kBACTC,QAAS,mBACTC,SAAU,wBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNvzC,EAAG,mBACHwzC,GAAI,YACJ57C,EAAG,SACH67C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJ53B,EAAG,QACH63B,GAAI,SACJC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,SAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,MAAO,MAAQA,KA/DerxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIuW,EAAQ,CACRhG,GAAI,6BACJ57C,EAAG,wBACH67C,GAAI,0BACJC,EAAG,2BACHC,GAAI,4BACJ53B,EAAG,qBACH63B,GAAI,sBACJC,EAAG,uBACHC,GAAI,4BACJC,EAAG,mBACHC,GAAI,oBASR,SAASyF,EAAkBtF,EAAQQ,EAAelsD,EAAKmsD,GACnD,OAAOD,EACDa,EAAM/sD,GAAK,GACXmsD,EACAY,EAAM/sD,GAAK,GACX+sD,EAAM/sD,GAAK,GAErB,SAASixD,EAAQvF,GACb,OAAOA,EAAS,IAAO,GAAMA,EAAS,IAAMA,EAAS,GAEzD,SAASqB,EAAM/sD,GACX,OAAO+wD,EAAM/wD,GAAKid,MAAM,KAE5B,SAASyxC,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,IAAI1rD,EAASirD,EAAS,IACtB,OAAe,IAAXA,EAEIjrD,EAASuwD,EAAkBtF,EAAQQ,EAAelsD,EAAI,GAAImsD,GAEvDD,EACAzrD,GAAUwwD,EAAQvF,GAAUqB,EAAM/sD,GAAK,GAAK+sD,EAAM/sD,GAAK,IAE1DmsD,EACO1rD,EAASssD,EAAM/sD,GAAK,GAEpBS,GAAUwwD,EAAQvF,GAAUqB,EAAM/sD,GAAK,GAAK+sD,EAAM/sD,GAAK,IAIjEw6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,oGAAoG9E,MACxG,KAEJ+vC,WAAY,kGAAkG/vC,MAC1G,KAEJgwC,SAAU,+DAEd7D,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,CACNtnC,OAAQ,oFAAoF9E,MACxF,KAEJ+vC,WAAY,2FAA2F/vC,MACnG,KAEJgwC,SAAU,cAEd3D,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,iBAAiBtsC,MAAM,KACpCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CACNx9B,EAAG,aACH+hC,GAAI,wBACJC,IAAK,sCACLC,KAAM,4CAEVxE,SAAU,CACNC,QAAS,gBACTC,QAAS,aACTC,SAAU,UACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAlFR,SAA0Bm0C,EAAQQ,EAAelsD,EAAKmsD,GAClD,OAAID,EACO,kBAEAC,EAAW,kBAAoB,mBA+EtCpB,GAAI2D,EACJv/C,EAAG6hD,EACHhG,GAAI0D,EACJzD,EAAG+F,EACH9F,GAAIwD,EACJp7B,EAAG09B,EACH7F,GAAIuD,EACJtD,EAAG4F,EACH3F,GAAIqD,EACJpD,EAAG0F,EACHzF,GAAImD,GAERlD,uBAAwB,cACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,QAEpBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzHyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,IAAIuW,EAAQ,CACRhG,GAAI,qCAAqC9tC,MAAM,KAC/C9N,EAAG,iCAAiC8N,MAAM,KAC1C+tC,GAAI,iCAAiC/tC,MAAM,KAC3CguC,EAAG,iCAAiChuC,MAAM,KAC1CiuC,GAAI,iCAAiCjuC,MAAM,KAC3CqW,EAAG,6BAA6BrW,MAAM,KACtCkuC,GAAI,6BAA6BluC,MAAM,KACvCmuC,EAAG,iCAAiCnuC,MAAM,KAC1CouC,GAAI,iCAAiCpuC,MAAM,KAC3CquC,EAAG,wBAAwBruC,MAAM,KACjCsuC,GAAI,wBAAwBtuC,MAAM,MAKtC,SAAS8E,EAAOgrC,EAAOrB,EAAQQ,GAC3B,OAAIA,EAEOR,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAI5DrB,EAAS,IAAO,GAAKA,EAAS,KAAQ,GAAKqB,EAAM,GAAKA,EAAM,GAG3E,SAASF,EAAuBnB,EAAQQ,EAAelsD,GACnD,OAAO0rD,EAAS,IAAM3pC,EAAOgvC,EAAM/wD,GAAM0rD,EAAQQ,GAErD,SAASgF,EAAyBxF,EAAQQ,EAAelsD,GACrD,OAAO+hB,EAAOgvC,EAAM/wD,GAAM0rD,EAAQQ,GAM7B1R,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uGAAuGlsC,MAC3G,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,0EAA0EpsC,MAChF,KAEJqsC,cAAe,kBAAkBrsC,MAAM,KACvCssC,YAAa,kBAAkBtsC,MAAM,KACrCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,cACHC,GAAI,uBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,oBACTC,SAAU,qBACVC,QAAS,sBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNvzC,EAlCR,SAAyBm0C,EAAQQ,GAC7B,OAAOA,EAAgB,iBAAmB,kBAkCtCnB,GAAI8B,EACJ19C,EAAG+hD,EACHlG,GAAI6B,EACJ5B,EAAGiG,EACHhG,GAAI2B,EACJv5B,EAAG49B,EACH/F,GAAI0B,EACJzB,EAAG8F,EACH7F,GAAIwB,EACJvB,EAAG4F,EACH3F,GAAIsB,GAERrB,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA1FyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIzB,IAAI2W,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,SAAU,UAAW,WAC1B57C,EAAG,CAAC,cAAe,iBACnB67C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,SAAU,UAAW,WAC1BE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAelsD,GACxC,IAAIsxD,EAAUH,EAAWC,MAAMpxD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG2iD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjD9W,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFlsC,MACvF,KAEJmsC,YAAa,2DAA2DnsC,MACpE,KAEJywC,kBAAkB,EAClBrE,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,gBAETC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,6BACA,iCACA,4BACA,4BACA,8BACA,2BACA,4BAEgBvwD,KAAK+yD,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,mBACHwzC,GAAIoG,EAAWzC,UACfv/C,EAAGgiD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfp7B,EAAG,MACH63B,GAAIgG,EAAWzC,UACftD,EAAG,SACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KApHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,8IAA8IlsC,MAClJ,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJgxC,YAAa,yCACbK,kBAAmB,yCACnBb,iBAAkB,yCAClBc,uBAAwB,yCACxBlF,SAAU,kDAAkDpsC,MAAM,KAClEqsC,cAAe,wBAAwBrsC,MAAM,KAC7CssC,YAAa,wBAAwBtsC,MAAM,KAC3C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAAS,wBACTC,QAAS,eACTC,SAAU,cACVC,QAAS,iBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,cACRC,KAAM,WACNvzC,EAAG,mBACHwzC,GAAI,YACJ57C,EAAG,YACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,QACH63B,GAAI,QACJC,EAAG,YACHC,GAAI,YACJC,EAAG,SACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFlsC,MAC3F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,YACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,oBACVC,QAAS,gBACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,8BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,kBACHwzC,GAAI,aACJ57C,EAAG,cACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,WACH63B,GAAI,UACJC,EAAG,aACHC,GAAI,YACJC,EAAG,cACHC,GAAI,aAERC,uBAAwB,8BACxBC,QAAS,SAAUC,GACf,IAAI4B,EAAY5B,EAAS,GACrB6B,EAAc7B,EAAS,IAC3B,OAAe,IAAXA,EACOA,EAAS,MACO,IAAhB6B,EACA7B,EAAS,MACT6B,EAAc,IAAMA,EAAc,GAClC7B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,EACA5B,EAAS,MACK,IAAd4B,GAAiC,IAAdA,EACnB5B,EAAS,MAETA,EAAS,OAGxBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnFyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yFAAyFlsC,MAC7F,KAEJmsC,YAAa,yEAAyEnsC,MAClF,KAEJywC,kBAAkB,EAClBrE,SAAU,wEAAwEpsC,MAC9E,KAEJqsC,cAAe,2CAA2CrsC,MAAM,KAChEssC,YAAa,wBAAwBtsC,MAAM,KAC3C6sC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,eACH67C,GAAI,cACJC,EAAG,eACHC,GAAI,cACJ53B,EAAG,YACH63B,GAAI,WACJC,EAAG,WACHC,GAAI,UACJC,EAAG,WACHC,GAAI,WAER/B,cAAe,gDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGO,WAAb5C,GAAyB4C,GAAQ,GACrB,iBAAb5C,GACa,eAAbA,EAEO4C,EAAO,GAEPA,GAGf5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,SACAA,EAAO,GACP,eACAA,EAAO,GACP,aAEA,YA7EmBjyD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,SAASkU,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,OAAQnsD,GACJ,IAAK,IACD,OAAOksD,EAAgB,gBAAkB,kBAC7C,IAAK,KACD,OAAOR,GAAUQ,EAAgB,UAAY,aACjD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,SAAW,YAChD,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,QAAU,WAC/C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,UAC9C,IAAK,IACL,IAAK,KACD,OAAOR,GAAUQ,EAAgB,OAAS,WAC9C,QACI,OAAOR,GAIVlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+LAA+LlsC,MACnM,KAEJmsC,YAAa,6EAA6EnsC,MACtF,KAEJywC,kBAAkB,EAClBrE,SAAU,6CAA6CpsC,MAAM,KAC7DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,iCAEVZ,cAAe,SACfC,KAAM,SAAU18C,GACZ,MAAiB,OAAVA,GAEX28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,KAEA,MAGfjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,eACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNvzC,EAAGm3C,EACH3D,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAGo7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,eACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,QACI,OAAOA,MAhGerxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGb,SAAS4E,EAAe7F,EAAQQ,EAAexsD,EAAQysD,GACnD,IAAI2C,EAAS,GACb,GAAI5C,EACA,OAAQxsD,GACJ,IAAK,IACDovD,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,SACT,MACJ,IAAK,KACDA,EAAS,SACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,UACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,UACT,MACJ,IAAK,KACDA,EAAS,gBAIjB,OAAQpvD,GACJ,IAAK,IACDovD,EAAS,eACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,aACT,MACJ,IAAK,KACDA,EAAS,aACT,MACJ,IAAK,IACDA,EAAS,WACT,MACJ,IAAK,KACDA,EAAS,WACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YACT,MACJ,IAAK,IACDA,EAAS,cACT,MACJ,IAAK,KACDA,EAAS,cACT,MACJ,IAAK,IACDA,EAAS,YACT,MACJ,IAAK,KACDA,EAAS,YAIrB,OAAOA,EAAO5/C,QAAQ,MAAOw8C,GAGxBlR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,gFAAgFnsC,MACzF,KAEJywC,kBAAkB,EAClBrE,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,kCAAkCrsC,MAAM,KACvDssC,YAAa,qBAAqBtsC,MAAM,KACxC6sC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,WACVC,QAAS,WACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNvzC,EAAGg6C,EACHxG,GAAIwG,EACJpiD,EAAGoiD,EACHvG,GAAIuG,EACJtG,EAAGsG,EACHrG,GAAIqG,EACJj+B,EAAGi+B,EACHpG,GAAIoG,EACJnG,EAAGmG,EACHlG,GAAIkG,EACJjG,EAAGiG,EACHhG,GAAIgG,GAER7E,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBqzC,cAAe,qCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,GAAqC,UAAbA,EACjB4C,EAEM,WAAb5C,GACa,aAAbA,GACa,WAAbA,EAEO4C,GAAQ,GAAKA,EAAOA,EAAO,QAL/B,GAQX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,GAAQ,GAAKA,EAAO,EACb,QACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvMyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,oFAAoFlsC,MACxF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,6CAA6CpsC,MAAM,KAC7DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNvzC,EAAG,gBACHwzC,GAAI,UACJ57C,EAAG,UACH67C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oFAAoFlsC,MACxF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,6CAA6CpsC,MAAM,KAC7DqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVZ,cAAe,8BACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,WAAb5C,GAAsC,UAAbA,EACzB4C,EAAO,QADX,GAIX5C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,OACAA,EAAQ,GACR,YACAA,EAAQ,GACR,SAEA,SAGfU,SAAU,CACNC,QAAS,sBACTC,QAAS,kBACTC,SAAU,kBACVC,QAAS,sBACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,gBACNvzC,EAAG,gBACHwzC,GAAI,UACJ57C,EAAG,UACH67C,GAAI,WACJC,EAAG,QACHC,GAAI,SACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,UACHC,GAAI,WACJC,EAAG,UACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAzEyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,iEAAiEpsC,MACvE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,iBACTC,SAAU,gBACVC,QAAS,qBACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,eACHwzC,GAAI,aACJ57C,EAAG,SACH67C,GAAI,YACJC,EAAG,SACHC,GAAI,aACJ53B,EAAG,UACH63B,GAAI,YACJC,EAAG,QACHC,GAAI,UACJC,EAAG,OACHC,GAAI,UAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KArDyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,mDAAmDnsC,MAAM,KACtEosC,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,2BAA2BrsC,MAAM,KAChDssC,YAAa,2BAA2BtsC,MAAM,KAE9C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,gBACVC,QAAS,mBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,kBACNvzC,EAAG,kBACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,WACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,OACHC,GAAI,OACJC,EAAG,UACHC,GAAI,WAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBw1C,KAAM,CACFC,IAAK,EACLC,IAAK,KAvFyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJywC,kBAAkB,EAClBrE,SAAU,qDAAqDpsC,MAAM,KACrEqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,2BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,iBACTC,QAAS,oBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,cACJC,EAAG,UACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,WACJiC,EAAG,SACHC,GAAI,UACJjC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,uFAAuFlsC,MAC3F,KAEJmsC,YAAa,uEAAuEnsC,MAChF,KAEJywC,kBAAkB,EAClBrE,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,0CAA0CrsC,MAAM,KAC/DssC,YAAa,4BAA4BtsC,MAAM,KAC/CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,eACJC,IAAK,kBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,4BACLC,KAAM,mCAEVsC,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAGzBqzC,cAAe,yBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,SAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,QAGfjC,SAAU,CACNC,QAAS,UACTC,QAAS,YACTC,SAAU,qBACVC,QAAS,YACTC,SAAU,oBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,OACRC,KAAM,WACNvzC,EAAG,YACHwzC,GAAI,aACJ57C,EAAG,WACH67C,GAAI,WACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,WACHC,GAAI,WACJC,EAAG,UACHC,GAAI,WAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAtHyBxxD,CAAQ,EAAQ,8FCIlD,SAAWmgD,GAAU,aAIzB,IAAIuV,EAAsB,6DAA6D9yC,MAC/E,KAEJ+yC,EAAyB,kDAAkD/yC,MACvE,KAEJ+wC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAEPzT,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbiuC,EAAuB7gD,EAAEkgD,SAEzBU,EAAoB5gD,EAAEkgD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DpsC,MACnE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJ53B,EAAG,UACH63B,GAAI,WACJC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KAnGyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIuV,EAAsB,6DAA6D9yC,MAC/E,KAEJ+yC,EAAyB,kDAAkD/yC,MACvE,KAEJ+wC,EAAc,CACV,QACA,QACA,iBACA,QACA,SACA,cACA,cACA,QACA,QACA,QACA,QACA,SAEJC,EAAc,qKAETzT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,SAAUj6C,EAAG4S,GACtB,OAAK5S,EAEM,QAAQmO,KAAKyE,GACbiuC,EAAuB7gD,EAAEkgD,SAEzBU,EAAoB5gD,EAAEkgD,SAJtBU,GAQf9B,YAAaA,EACbR,iBAAkBQ,EAClBK,kBAAmB,4FACnBC,uBAAwB,mFAExBP,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAElB3E,SAAU,6DAA6DpsC,MACnE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,aACNvzC,EAAG,oBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,SACJ53B,EAAG,UACH63B,GAAI,WACJiC,EAAG,WACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,WACHC,GAAI,WAERC,uBAAwB,kBACxBC,QAAS,SAAUC,GACf,OACIA,GACY,IAAXA,GAA2B,IAAXA,GAAgBA,GAAU,GAAK,MAAQ,OAGhEC,KAAM,CACFC,IAAK,EACLC,IAAK,KArGyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qFAAqFlsC,MACzF,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJywC,kBAAkB,EAClBrE,SAAU,qDAAqDpsC,MAAM,KACrEqsC,cAAe,+BAA+BrsC,MAAM,KACpDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,eACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,uBACTC,SAAU,mBACVC,QAAS,oBACTC,SAAU,gCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,WACNvzC,EAAG,eACHwzC,GAAI,YACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,WACJiC,EAAG,UACHC,GAAI,WACJjC,EAAG,YACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzDyBxxD,CAAQ,EAAQ,+FCElD,SAAWmgD,GAAU,aAIbA,EAAO0O,aAAa,SAAU,CACtCC,OAAQ,CACJ6D,WAAY,qFAAqF/vC,MAC7F,KAEJ8E,OAAQ,sHAAsH9E,MAC1H,KAEJgwC,SAAU,mBAEd7D,YAAa,+DAA+DnsC,MACxE,KAEJywC,kBAAkB,EAClBrE,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,mBACJyE,GAAI,aACJxE,IAAK,4BACLyE,IAAK,mBACLxE,KAAM,iCACNyE,KAAM,wBAEVxE,SAAU,CACNC,QAAS,aACTC,QAAS,eACTC,SAAU,cACVC,QAAS,aACTC,SAAU,qBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,QACNvzC,EAAG,gBACHwzC,GAAI,cACJ57C,EAAG,aACH67C,GAAI,aACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,WACJC,EAAG,SACHC,GAAI,WACJC,EAAG,QACHC,GAAI,UAERC,uBAAwB,qBACxBC,QAAS,SAAUC,EAAQyB,GACvB,IAAI2B,EACW,IAAXpD,EACM,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACW,IAAXA,EACA,IACA,IAIV,MAHe,MAAXyB,GAA6B,MAAXA,IAClB2B,EAAS,KAENpD,EAASoD,GAEpBnD,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGFnS,EAAO0O,aAAa,QAAS,CAEpCC,OAAQ,sEAAsElsC,MAC1E,KAEJmsC,YAAa,sEAAsEnsC,MAC/E,KAEJosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,iCAAiCrsC,MAAM,KACtDssC,YAAa,iCAAiCtsC,MAAM,KACpD6sC,eAAgB,CACZC,GAAI,aACJC,IAAK,gBACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,iCAEVC,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,kBACVC,QAAS,UACTC,SAAU,mBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,UACRC,KAAM,WACNvzC,EAAG,YACHwzC,GAAI,WACJ57C,EAAG,UACH67C,GAAI,UACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAKzBqzC,cAAe,uBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,WAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,SAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,SACAA,EAAO,GACP,OAEA,OAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KAvHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIgX,EAAmB,mGAAmGv0C,MAClH,KAEJw0C,EAAmB,qGAAqGx0C,MACpH,KAEJ+wC,EAAc,CACV,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAER,SAASe,EAAOr0C,GACZ,OAAOA,EAAI,GAAK,GAAKA,EAAI,GAAK,MAAQA,EAAI,IAAM,IAAO,EAE3D,SAASg0C,EAAUhD,EAAQQ,EAAelsD,GACtC,IAAIS,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,KACD,OAAOS,GAAUsuD,EAAOrD,GAAU,UAAY,UAClD,IAAK,IACD,OAAOQ,EAAgB,SAAW,SACtC,IAAK,KACD,OAAOzrD,GAAUsuD,EAAOrD,GAAU,SAAW,SACjD,IAAK,IACD,OAAOQ,EAAgB,UAAY,UACvC,IAAK,KACD,OAAOzrD,GAAUsuD,EAAOrD,GAAU,UAAY,UAClD,IAAK,KACD,OAAOjrD,GAAUsuD,EAAOrD,GAAU,WAAa,WACnD,IAAK,KACD,OAAOjrD,GAAUsuD,EAAOrD,GAAU,WAAa,YACnD,IAAK,KACD,OAAOjrD,GAAUsuD,EAAOrD,GAAU,OAAS,QAI9ClR,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,SAAUgG,EAAgBptC,GAC9B,OAAKotC,EAEM,SAAS7xC,KAAKyE,GACd0vC,EAAiBtC,EAAeE,SAEhCmC,EAAiBrC,EAAeE,SAJhCmC,GAOfpI,YAAa,kDAAkDnsC,MAAM,KACrE+wC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAClB3E,SAAU,6DAA6DpsC,MACnE,KAEJqsC,cAAe,2BAA2BrsC,MAAM,KAChDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,eACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,qBAEX,KAAK,EACD,MAAO,mBAEX,KAAK,EACD,MAAO,iBAEX,KAAK,EACD,MAAO,kBAEX,QACI,MAAO,oBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,4BACX,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,yBACX,QACI,MAAO,2BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,eACHwzC,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAG,UACH63B,GAAI,SACJiC,EAAG,UACHC,GAAIqB,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,MACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAzIyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,iFAAiFpsC,MACvF,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,mCACLC,KAAM,0CAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfvwD,KAAK+yD,OAA8B,IAAf/yD,KAAK+yD,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNvzC,EAAG,kBACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTkE,YAAa,kBAxDqBt1D,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,2FAA2FlsC,MAC/F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,iFAAiFpsC,MACvF,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,qCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,gBACTC,SAAU,WACN,OAAsB,IAAfvwD,KAAK+yD,OAA8B,IAAf/yD,KAAK+yD,MAC1B,wBACA,yBAEVvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,QACNvzC,EAAG,WACHwzC,GAAI,cACJ57C,EAAG,YACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,UACJiC,EAAG,aACHC,GAAI,aACJjC,EAAG,SACHC,GAAI,WACJC,EAAG,SACHC,GAAI,WAERC,uBAAwB,WACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA5DyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIzB,SAASqS,EAAuBnB,EAAQQ,EAAelsD,GACnD,IASI0xD,EAAY,IAIhB,OAHIhG,EAAS,KAAO,IAAOA,GAAU,KAAOA,EAAS,KAAQ,KACzDgG,EAAY,QAEThG,EAASgG,EAbH,CACL3G,GAAI,UACJC,GAAI,SACJE,GAAI,MACJC,GAAI,OACJkC,GAAI,YACJhC,GAAI,OACJE,GAAI,OAMuBvrD,GAG9Bw6C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGlsC,MACxG,KAEJmsC,YAAa,+DAA+DnsC,MACxE,KAEJywC,kBAAkB,EAClBrE,SAAU,kDAAkDpsC,MAAM,KAClEqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,mBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,aACNvzC,EAAG,iBACHwzC,GAAI8B,EACJ19C,EAAG,WACH67C,GAAI6B,EACJ5B,EAAG,QACHC,GAAI2B,EACJv5B,EAAG,OACH63B,GAAI0B,EACJO,EAAG,cACHC,GAAIR,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,QACHC,GAAIsB,GAERlB,KAAM,CACFC,IAAK,EACLC,IAAK,KAvEyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAYzB,SAASqS,EAAuBnB,EAAQQ,EAAelsD,GAUnD,MAAY,MAARA,EACOksD,EAAgB,SAAW,SAE3BR,EAAS,KArBFoB,GAqB6BpB,EApB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,sBAAwB,sBAC5ChB,GAAI,iBACJC,GAAI,gBACJkC,GAAI,uBACJhC,GAAI,uBACJE,GAAI,gBAKgCvrD,GApBvBid,MAAM,KAChB6vC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAuBR,IAAIiB,EAAc,CACd,QACA,QACA,QACA,QACA,WACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMKxT,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,oFAAoF9E,MACxF,KAEJ+vC,WAAY,kFAAkF/vC,MAC1F,MAGRmsC,YAAa,CAETrnC,OAAQ,gEAAgE9E,MACpE,KAEJ+vC,WAAY,gEAAgE/vC,MACxE,MAGRosC,SAAU,CACN2D,WAAY,gEAAgE/vC,MACxE,KAEJ8E,OAAQ,gEAAgE9E,MACpE,KAEJgwC,SAAU,iDAEd3D,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C+wC,YAAaA,EACbQ,gBAAiBR,EACjBS,iBAAkBT,EAGlBC,YAAa,2MAGbR,iBAAkB,2MAGlBa,kBAAmB,wHAGnBC,uBAAwB,6FACxBzE,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,uBACLC,KAAM,8BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,iBACTE,QAAS,gBACTD,SAAU,SAAUkG,GAChB,GAAIA,EAAI/E,SAAWxxD,KAAKwxD,OAcpB,OAAmB,IAAfxxD,KAAK+yD,MACE,oBAEA,mBAhBX,OAAQ/yD,KAAK+yD,OACT,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,+BAUvBxC,SAAU,SAAUgG,GAChB,GAAIA,EAAI/E,SAAWxxD,KAAKwxD,OAcpB,OAAmB,IAAfxxD,KAAK+yD,MACE,oBAEA,mBAhBX,OAAQ/yD,KAAK+yD,OACT,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,2BACX,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,6BAUvBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNvzC,EAAG,mBACHwzC,GAAI8B,EACJ19C,EAAG09C,EACH7B,GAAI6B,EACJ5B,EAAG,MACHC,GAAI2B,EACJv5B,EAAG,OACH63B,GAAI0B,EACJO,EAAG,SACHC,GAAIR,EACJzB,EAAG,QACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAERrD,cAAe,wBACfC,KAAM,SAAU18C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,OACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,mBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,KACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KA1MyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIzB,IAAI2O,EAAS,CACL,QACA,UACA,OACA,QACA,MACA,MACA,SACA,OACA,UACA,SACA,QACA,SAEJwI,EAAO,CAAC,MAAO,OAAQ,QAAS,OAAQ,OAAQ,MAAO,QAElDnX,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU18C,GACZ,MAAO,QAAUA,GAErB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,UACTC,QAAS,aACTC,SAAU,yBACVC,QAAS,aACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNvzC,EAAG,YACHwzC,GAAI,WACJ57C,EAAG,SACH67C,GAAI,SACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,WACH63B,GAAI,WACJC,EAAG,WACHC,GAAI,WACJC,EAAG,SACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCs9C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCy8C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mJAAmJlsC,MACvJ,KAEJmsC,YAAa,6DAA6DnsC,MACtE,KAEJosC,SAAU,6EAA6EpsC,MACnF,KAEJqsC,cAAe,mCAAmCrsC,MAAM,KACxDssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,gCACLC,KAAM,uCAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,eACVC,QAAS,eACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,WACNvzC,EAAG,mBACHwzC,GAAI,eACJ57C,EAAG,eACH67C,GAAI,cACJC,EAAG,cACHC,GAAI,aACJ53B,EAAG,cACH63B,GAAI,cACJC,EAAG,aACHC,GAAI,WACJC,EAAG,aACHC,GAAI,YAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAKhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,kGAAkGlsC,MACtG,KAEJmsC,YAAa,wDAAwDnsC,MACjE,KAEJosC,SAAU,gEAAgEpsC,MACtE,KAEJqsC,cAAe,gCAAgCrsC,MAAM,KACrDssC,YAAa,qBAAqBtsC,MAAM,KACxCovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,sCAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,cACTC,SAAU,aACVC,QAAS,cACTC,SAAU,sBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNvzC,EAAG,eACHwzC,GAAI,WACJ57C,EAAG,YACH67C,GAAI,cACJC,EAAG,MACHC,GAAI,SACJ53B,EAAG,OACH63B,GAAI,SACJC,EAAG,OACHC,GAAI,SACJC,EAAG,MACHC,GAAI,UAERC,uBAAwB,eACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,SAEpBlC,cAAe,4BACfC,KAAM,SAAU18C,GACZ,MAAiB,SAAVA,GAA8B,YAAVA,GAE/B28C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,OAAS,UAEnBA,EAAU,QAAU,aAjEDxvD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,IAAI2O,EAAS,oFAAoFlsC,MACzF,KAEJmsC,EAAc,kDAAkDnsC,MAAM,KAC1E,SAAS8xC,EAAOr0C,GACZ,OAAOA,EAAI,GAAKA,EAAI,EAExB,SAASg0C,EAAUhD,EAAQQ,EAAelsD,EAAKmsD,GAC3C,IAAI1rD,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,IACD,OAAOksD,GAAiBC,EAAW,aAAe,gBACtD,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,UAAY,UAEvCjrD,EAAS,YAExB,IAAK,IACD,OAAOyrD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,SAAW,SAEtCjrD,EAAS,WAExB,IAAK,IACD,OAAOyrD,EAAgB,SAAWC,EAAW,SAAW,UAC5D,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,SAAW,SAEtCjrD,EAAS,WAExB,IAAK,IACD,OAAOyrD,GAAiBC,EAAW,MAAQ,OAC/C,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,MAAQ,OAEnCjrD,EAAS,QAExB,IAAK,IACD,OAAOyrD,GAAiBC,EAAW,SAAW,WAClD,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,UAAY,YAEvCjrD,EAAS,WAExB,IAAK,IACD,OAAOyrD,GAAiBC,EAAW,MAAQ,QAC/C,IAAK,KACD,OAAID,GAAiBC,EACV1rD,GAAUsuD,EAAOrD,GAAU,OAAS,SAEpCjrD,EAAS,SAKvB+5C,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaA,EACbC,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,kBACX,KAAK,EACL,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBACX,KAAK,EACD,MAAO,kBACX,KAAK,EACD,MAAO,oBAGnBzC,QAAS,eACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,yBAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAGm3C,EACH3D,GAAI2D,EACJv/C,EAAGu/C,EACH1D,GAAI0D,EACJzD,EAAGyD,EACHxD,GAAIwD,EACJp7B,EAAGo7B,EACHvD,GAAIuD,EACJtD,EAAGsD,EACHrD,GAAIqD,EACJpD,EAAGoD,EACHnD,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7IyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAI1rD,EAASirD,EAAS,IACtB,OAAQ1rD,GACJ,IAAK,IACD,OAAOksD,GAAiBC,EAClB,eACA,kBACV,IAAK,KAUD,OARI1rD,GADW,IAAXirD,EACUQ,EAAgB,UAAY,UACpB,IAAXR,EACGQ,GAAiBC,EAAW,UAAY,WAC3CT,EAAS,EACNQ,GAAiBC,EAAW,UAAY,WAExC,UAGlB,IAAK,IACD,OAAOD,EAAgB,aAAe,aAC1C,IAAK,KAUD,OARIzrD,GADW,IAAXirD,EACUQ,EAAgB,SAAW,SACnB,IAAXR,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,WAEvCD,GAAiBC,EAAW,QAAU,YAGxD,IAAK,IACD,OAAOD,EAAgB,UAAY,UACvC,IAAK,KAUD,OARIzrD,GADW,IAAXirD,EACUQ,EAAgB,MAAQ,MAChB,IAAXR,EACGQ,GAAiBC,EAAW,MAAQ,QACvCT,EAAS,EACNQ,GAAiBC,EAAW,MAAQ,QAEpCD,GAAiBC,EAAW,KAAO,SAGrD,IAAK,IACD,OAAOD,GAAiBC,EAAW,SAAW,YAClD,IAAK,KAQD,OANI1rD,GADW,IAAXirD,EACUQ,GAAiBC,EAAW,MAAQ,OAC5B,IAAXT,EACGQ,GAAiBC,EAAW,MAAQ,UAEpCD,GAAiBC,EAAW,MAAQ,SAGtD,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,eACpD,IAAK,KAUD,OARI1rD,GADW,IAAXirD,EACUQ,GAAiBC,EAAW,QAAU,UAC9B,IAAXT,EACGQ,GAAiBC,EAAW,SAAW,WAC1CT,EAAS,EACNQ,GAAiBC,EAAW,SAAW,SAEvCD,GAAiBC,EAAW,UAAY,UAG1D,IAAK,IACD,OAAOD,GAAiBC,EAAW,WAAa,aACpD,IAAK,KAUD,OARI1rD,GADW,IAAXirD,EACUQ,GAAiBC,EAAW,OAAS,QAC7B,IAAXT,EACGQ,GAAiBC,EAAW,OAAS,SACxCT,EAAS,EACNQ,GAAiBC,EAAW,OAAS,OAErCD,GAAiBC,EAAW,MAAQ,SAMrD3R,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,8DAA8DnsC,MACvE,KAEJywC,kBAAkB,EAClBrE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,eACHC,GAAI,eACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBAETC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,wBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,uBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,qBAGnBzC,QAAS,iBACTC,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACD,MAAO,+BACX,KAAK,EACD,MAAO,6BACX,KAAK,EACD,MAAO,8BACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,4BAGnBvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNvzC,EAAGy3C,EACHjE,GAAIiE,EACJ7/C,EAAG6/C,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ17B,EAAG07B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAxKyBxxD,CAAQ,EAAQ,2FCKlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,gFAAgFlsC,MACpF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,4DAA4DpsC,MAClE,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,mBAAmBtsC,MAAM,KACtCovC,oBAAoB,EACpB7C,cAAe,QACfC,KAAM,SAAU18C,GACZ,MAA2B,MAApBA,EAAMnN,OAAO,IAExB8pD,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAOF,EAAQ,GAAK,KAAO,MAE/BG,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,gBACTC,SAAU,eACVC,QAAS,cACTC,SAAU,wBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,aACNvzC,EAAG,eACHwzC,GAAI,aACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,UACHC,GAAI,SACJ53B,EAAG,WACH63B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,UACHC,GAAI,WAERC,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA7DyBxxD,CAAQ,EAAQ,gGCElD,SAAWmgD,GAAU,aAIzB,IAAI2W,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3B57C,EAAG,CAAC,cAAe,gBACnB67C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAelsD,GACxC,IAAIsxD,EAAUH,EAAWC,MAAMpxD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG2iD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAM7C9W,EAAO0O,aAAa,UAAW,CACxCC,OAAQ,mFAAmFlsC,MACvF,KAEJmsC,YAAa,2DAA2DnsC,MACpE,KAEJywC,kBAAkB,EAClBrE,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,sBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,2BACA,+BACA,4BACA,0BACA,8BACA,2BACA,4BAEgBvwD,KAAK+yD,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,mBACHwzC,GAAIoG,EAAWzC,UACfv/C,EAAGgiD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfp7B,EAAG,MACH63B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAI2W,EAAa,CACbC,MAAO,CAEHrG,GAAI,CAAC,UAAW,UAAW,WAC3B57C,EAAG,CAAC,cAAe,gBACnB67C,GAAI,CAAC,QAAS,SAAU,UACxBC,EAAG,CAAC,YAAa,eACjBC,GAAI,CAAC,MAAO,OAAQ,QACpBC,GAAI,CAAC,MAAO,OAAQ,QACpBE,GAAI,CAAC,QAAS,SAAU,UACxBE,GAAI,CAAC,SAAU,SAAU,WAE7B8F,uBAAwB,SAAU3F,EAAQ4F,GACtC,OAAkB,IAAX5F,EACD4F,EAAQ,GACR5F,GAAU,GAAKA,GAAU,EACzB4F,EAAQ,GACRA,EAAQ,IAElB5C,UAAW,SAAUhD,EAAQQ,EAAelsD,GACxC,IAAIsxD,EAAUH,EAAWC,MAAMpxD,GAC/B,OAAmB,IAAfA,EAAIuJ,OACG2iD,EAAgBoF,EAAQ,GAAKA,EAAQ,GAGxC5F,EACA,IACAyF,EAAWE,uBAAuB3F,EAAQ4F,KAMjD9W,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mFAAmFlsC,MACvF,KAEJmsC,YAAa,2DAA2DnsC,MACpE,KAEJywC,kBAAkB,EAClBrE,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,cACHC,GAAI,gBACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,WACN,OAAQrwD,KAAK+yD,OACT,KAAK,EACD,MAAO,uBACX,KAAK,EACD,MAAO,qBACX,KAAK,EACD,MAAO,sBACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,MAAO,oBAGnBzC,QAAS,cACTC,SAAU,WAUN,MATmB,CACf,4BACA,gCACA,4BACA,0BACA,8BACA,2BACA,4BAEgBvwD,KAAK+yD,QAE7BvC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,SACNvzC,EAAG,mBACHwzC,GAAIoG,EAAWzC,UACfv/C,EAAGgiD,EAAWzC,UACd1D,GAAImG,EAAWzC,UACfzD,EAAGkG,EAAWzC,UACdxD,GAAIiG,EAAWzC,UACfp7B,EAAG,MACH63B,GAAIgG,EAAWzC,UACftD,EAAG,QACHC,GAAI8F,EAAWzC,UACfpD,EAAG,SACHC,GAAI4F,EAAWzC,WAEnBlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnHyBxxD,CAAQ,EAAQ,2FCElD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,mHAAmHlsC,MACvH,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,sEAAsEpsC,MAC5E,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,gBACVC,QAAS,iBACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,iBACNvzC,EAAG,qBACHwzC,GAAI,cACJ57C,EAAG,SACH67C,GAAI,aACJC,EAAG,SACHC,GAAI,aACJ53B,EAAG,UACH63B,GAAI,cACJC,EAAG,UACHC,GAAI,cACJC,EAAG,UACHC,GAAI,eAER/B,cAAe,mCACfE,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACD,UACAA,EAAQ,GACR,QACAA,EAAQ,GACR,aAEA,WAGf6D,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,YAAb5C,EACO4C,EACa,UAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,eAAb5C,GAA0C,YAAbA,EACvB,IAAT4C,EACO,EAEJA,EAAO,QAJX,GAOXd,uBAAwB,UACxBC,QAAS,KACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAjFyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,oDAAoDpsC,MAAM,KACpEqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,0BACLC,KAAM,+BACNwE,IAAK,mBACLC,KAAM,wBAEVxE,SAAU,CACNC,QAAS,YACTC,QAAS,eACTE,QAAS,YACTD,SAAU,eACVE,SAAU,iBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,eACNvzC,EAAG,iBACHwzC,GAAI,cACJ57C,EAAG,WACH67C,GAAI,aACJC,EAAG,WACHC,GAAI,YACJ53B,EAAG,SACH63B,GAAI,WACJC,EAAG,WACHC,GAAI,aACJC,EAAG,SACHC,GAAI,SAERC,uBAAwB,mBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,GAEM,IAANA,EADA,KAIA,OAIlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlEyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,sFAAsFlsC,MAC1F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,8DAA8DpsC,MACpE,KAEJqsC,cAAe,kCAAkCrsC,MAAM,KACvDssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,UACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,iBACTC,SAAU,8BACVC,QAAS,YACTC,SAAU,kCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,aACRC,KAAM,WACNvzC,EAAG,aACHwzC,GAAI,aACJ57C,EAAG,cACH67C,GAAI,YACJC,EAAG,aACHC,GAAI,WACJ53B,EAAG,YACH63B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,cACHC,GAAI,YAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KApDyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIiS,EAAY,CACR,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEPE,EAAY,CACR,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAGJnS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,0FAA0FnsC,MACnG,KAEJosC,SAAU,8FAA8FpsC,MACpG,KAEJqsC,cAAe,mDAAmDrsC,MAC9D,KAEJssC,YAAa,sBAAsBtsC,MAAM,KACzC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,aACTC,QAAS,YACTC,SAAU,WACVC,QAAS,cACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNvzC,EAAG,oBACHwzC,GAAI,eACJ57C,EAAG,cACH67C,GAAI,gBACJC,EAAG,gBACHC,GAAI,eACJ53B,EAAG,WACH63B,GAAI,aACJC,EAAG,YACHC,GAAI,cACJC,EAAG,aACHC,GAAI,eAERC,uBAAwB,aACxBC,QAAS,SAAUC,GACf,OAAOA,EAAS,OAEpBgB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,iBAAiB,SAAUiH,GAC7C,OAAOw2C,EAAUx2C,OAGzBq2C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,OAAO,SAAUiH,GACnC,OAAOs2C,EAAUt2C,OAIzBqzC,cAAe,wCACfE,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,EACP,SACAA,EAAO,GACP,QACAA,EAAO,GACP,WACAA,EAAO,GACP,WACAA,EAAO,GACP,QAEA,UAGfkB,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,UAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,UAAb5C,GAAqC,SAAbA,GAEX,YAAbA,GACA4C,GAAQ,GAFRA,EAIAA,EAAO,IAGtBX,KAAM,CACFC,IAAK,EACLC,IAAK,KA/HyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,mEAAmEnsC,MAC5E,KAEJywC,kBAAkB,EAClBrE,SAAU,8DAA8DpsC,MACpE,KAEJqsC,cAAe,kCAAkCrsC,MAAM,KACvDssC,YAAa,qBAAqBtsC,MAAM,KACxC6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,sBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,YACTC,QAAS,YACTC,SAAU,WACVC,QAAS,aACTC,SAAU,gBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,YACNvzC,EAAG,iBACHwzC,GAAI,aACJ57C,EAAG,YACH67C,GAAI,cACJC,EAAG,SACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,YACJC,EAAG,SACHC,GAAI,WACJC,EAAG,cACHC,GAAI,iBAERC,uBAAwB,WACxBC,QAAS,MACTjC,cAAe,iCACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,WAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,cAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,aAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,SACAA,EAAO,GACP,OACAA,EAAO,GACP,YACAA,EAAO,GACP,WAEA,UAGfX,KAAM,CACFC,IAAK,EACLC,IAAK,KApFyBxxD,CAAQ,EAAQ,4FCKlD,SAAWmgD,GAAU,aAIfA,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,kDAAkDpsC,MAAM,KAClEqsC,cAAe,iCAAiCrsC,MAAM,KACtDssC,YAAa,yBAAyBtsC,MAAM,KAC5C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,gBACTC,SAAU,gBACVC,QAAS,oBACTC,SAAU,+BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,YACH63B,GAAI,WACJC,EAAG,YACHC,GAAI,WACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyBxxD,CAAQ,EAAQ,2FCClD,SAAWmgD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,EAAG,MACH,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,GAAI,MACJ,IAAK,OAGApS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,qFAAqF9E,MACzF,KAEJ+vC,WAAY,yEAAyE/vC,MACjF,MAGRmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTE,QAAS,mBACTD,SAAU,kCACVE,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,SACNvzC,EAAG,eACHpI,EAAG,YACH67C,GAAI,YACJC,EAAG,UACHC,GAAI,UACJ53B,EAAG,SACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,SACJC,EAAG,SACHC,GAAI,UAER/B,cAAe,qBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,QAAb5C,EACO4C,EAAO,EAAIA,EAAOA,EAAO,GACZ,SAAb5C,EACA4C,EACa,QAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,UAAb5C,EACA4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,MACAA,EAAO,GACP,OACAA,EAAO,GACP,MACAA,EAAO,GACP,QAEA,OAGfd,uBAAwB,kBACxBC,QAAS,SAAUC,GAGf,OAAOA,GAAUkB,EAASlB,IAAWkB,EAF7BlB,EAAS,KAEmCkB,EAD5ClB,GAAU,IAAM,IAAM,QAGlCC,KAAM,CACFC,IAAK,EACLC,IAAK,KAlHyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,oGAAoGlsC,MACxG,KAEJmsC,YAAa,iEAAiEnsC,MAC1E,KAEJywC,kBAAkB,EAClBrE,SAAU,iDAAiDpsC,MAAM,KACjEqsC,cAAe,8CAA8CrsC,MAAM,KACnEssC,YAAa,yBAAyBtsC,MAAM,KAC5CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,OACJC,IAAK,UACLC,EAAG,aACHC,GAAI,cACJC,IAAK,wBACLC,KAAM,oCAEVZ,cAAe,wBACfC,KAAM,SAAU18C,GACZ,MAAiB,eAAVA,GAEX28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,aAEA,cAGfjC,SAAU,CACNC,QAAS,mBACTC,QAAS,qBACTC,SAAU,qBACVC,QAAS,wBACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,YACNvzC,EAAG,eACHwzC,GAAI,YACJ57C,EAAG,SACH67C,GAAI,UACJC,EAAG,YACHC,GAAI,aACJ53B,EAAG,QACH63B,GAAI,SACJiC,EAAG,YACHC,GAAI,aACJjC,EAAG,UACHC,GAAI,WACJC,EAAG,OACHC,GAAI,WA9D0BlxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCpS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,+EAA+ElsC,MACnF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,mBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,YACTC,SAAU,0BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,QACNvzC,EAAG,iBACHpI,EAAG,YACH67C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI9zC,EAAI8zC,EAAS,GAGjB,OAAOA,GAAUkB,EAASh1C,IAAMg1C,EAFvBlB,EAAS,IAAO9zC,IAEsBg1C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAzFyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,wBAAwBtsC,MAAM,KAC3C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,YACHC,GAAI,eACJC,IAAK,qBACLC,KAAM,6BAEVC,SAAU,CACNC,QAAS,oBACTC,QAAS,gBACTC,SAAU,0BACVC,QAAS,eACTC,SAAU,4BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,mBACNvzC,EAAG,gBACHwzC,GAAI,aACJ57C,EAAG,eACH67C,GAAI,YACJC,EAAG,aACHC,GAAI,UACJ53B,EAAG,aACH63B,GAAI,UACJC,EAAG,cACHC,GAAI,WACJC,EAAG,aACHC,GAAI,WAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvDyBxxD,CAAQ,EAAQ,4FCGlD,SAAWmgD,GAAU,aAIzB,IAAIoX,EAAe,iDAAiD30C,MAAM,KA4B1E,SAASyxC,EAAUhD,EAAQQ,EAAexsD,EAAQysD,GAC9C,IAAI0F,EAiBR,SAAsBnG,GAClB,IAAIoG,EAAU71C,KAAK81C,MAAOrG,EAAS,IAAQ,KACvCsG,EAAM/1C,KAAK81C,MAAOrG,EAAS,IAAO,IAClCuG,EAAMvG,EAAS,GACfwG,EAAO,GAUX,OATIJ,EAAU,IACVI,GAAQN,EAAaE,GAAW,SAEhCE,EAAM,IACNE,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaI,GAAO,OAEvDC,EAAM,IACNC,IAAkB,KAATA,EAAc,IAAM,IAAMN,EAAaK,IAEpC,KAATC,EAAc,OAASA,EA/BbC,CAAazG,GAC9B,OAAQhsD,GACJ,IAAK,KACD,OAAOmyD,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,OACxB,IAAK,KACD,OAAOA,EAAa,QAqBtBrX,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,kMAAkMlsC,MACtM,KAEJmsC,YAAa,0HAA0HnsC,MACnI,KAEJywC,kBAAkB,EAClBrE,SAAU,2DAA2DpsC,MACjE,KAEJqsC,cAAe,2DAA2DrsC,MACtE,KAEJssC,YAAa,2DAA2DtsC,MACpE,KAEJ6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,MACVC,QAAS,cACTC,SAAU,MACVC,SAAU,KAEdC,aAAc,CACVC,OA/FR,SAAyBiE,GACrB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAOzmD,QAAQ,OACT+pD,EAAKn2D,MAAM,GAAI,GAAK,OACO,IAA3B6yD,EAAOzmD,QAAQ,OACf+pD,EAAKn2D,MAAM,GAAI,GAAK,OACO,IAA3B6yD,EAAOzmD,QAAQ,OACf+pD,EAAKn2D,MAAM,GAAI,GAAK,MACpBm2D,EAAO,QAuFbtH,KAnFR,SAAuBgE,GACnB,IAAIsD,EAAOtD,EASX,OAP+B,IAA3BA,EAAOzmD,QAAQ,OACT+pD,EAAKn2D,MAAM,GAAI,GAAK,OACO,IAA3B6yD,EAAOzmD,QAAQ,OACf+pD,EAAKn2D,MAAM,GAAI,GAAK,OACO,IAA3B6yD,EAAOzmD,QAAQ,OACf+pD,EAAKn2D,MAAM,GAAI,GAAK,MACpBm2D,EAAO,QA2Eb76C,EAAG,UACHwzC,GAAI2D,EACJv/C,EAAG,UACH67C,GAAI0D,EACJzD,EAAG,UACHC,GAAIwD,EACJp7B,EAAG,UACH63B,GAAIuD,EACJtD,EAAG,UACHC,GAAIqD,EACJpD,EAAG,UACHC,GAAImD,GAERlD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KA3HyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIzB,IAAIoS,EAAW,CACX,EAAG,QACH,EAAG,QACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,EAAG,OACH,EAAG,OACH,GAAI,OACJ,GAAI,OACJ,EAAG,QACH,EAAG,QACH,IAAK,QACL,EAAG,OACH,EAAG,QACH,GAAI,QACJ,GAAI,QACJ,GAAI,QACJ,GAAI,SAGCpS,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,6EAA6ElsC,MACjF,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,wDAAwDpsC,MAC9D,KAEJqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1CysC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCL,cAAe,cACfC,KAAM,SAAU18C,GACZ,MAAiB,OAAVA,GAA4B,OAAVA,GAE7B+8C,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,kBACTC,SAAU,2BACVC,QAAS,WACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,UACNvzC,EAAG,gBACHwzC,GAAI,YACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,SACJiC,EAAG,YACHC,GAAI,WACJjC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERE,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACD,OAAOzB,EACX,QACI,GAAe,IAAXA,EAEA,OAAOA,EAAS,QAEpB,IAAI9zC,EAAI8zC,EAAS,GAGjB,OAAOA,GAAUkB,EAASh1C,IAAMg1C,EAFvBlB,EAAS,IAAO9zC,IAEsBg1C,EADvClB,GAAU,IAAM,IAAM,SAI1CC,KAAM,CACFC,IAAK,EACLC,IAAK,KAvGyBxxD,CAAQ,EAAQ,4FCGlD,SAAWmgD,GAAU,aAiEzB,SAASwU,EAAoBtD,EAAQQ,EAAelsD,EAAKmsD,GACrD,IAAIpqC,EAAS,CACTxK,EAAG,CAAC,kBAAmB,mBACvBwzC,GAAI,CAACW,EAAS,WAAiBA,EAAS,YACxCv8C,EAAG,CAAC,UAAW,cACf67C,GAAI,CAACU,EAAS,SAAeA,EAAS,UACtCT,EAAG,CAAC,UAAW,eACfC,GAAI,CAACQ,EAAS,SAAeA,EAAS,UACtCp4B,EAAG,CAAC,UAAW,eACf63B,GAAI,CAACO,EAAS,SAAeA,EAAS,UACtCN,EAAG,CAAC,SAAU,aACdC,GAAI,CAACK,EAAS,SAAeA,EAAS,UACtCJ,EAAG,CAAC,QAAS,YACbC,GAAI,CAACG,EAAS,OAAaA,EAAS,SAExC,OAAOS,GAEDD,EADAnqC,EAAO/hB,GAAK,GAGZ+hB,EAAO/hB,GAAK,GA9EZw6C,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,sFAAsFlsC,MAC1F,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,sDAAsDpsC,MAAM,KACtEqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,wBACJC,IAAK,8BACLC,KAAM,0CAEVZ,cAAe,aACfC,KAAM,SAAU18C,GACZ,MAAO,QAAUA,EAAMsU,eAE3BqoC,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,MAAQ,MAElBA,EAAU,MAAQ,OAGjCQ,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,8BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,YACRC,KAAM,OACNvzC,EAAGy3C,EACHjE,GAAIiE,EACJ7/C,EAAG6/C,EACHhE,GAAIgE,EACJ/D,EAAG+D,EACH9D,GAAI8D,EACJ17B,EAAG07B,EACH7D,GAAI6D,EACJ5D,EAAG4D,EACH3D,GAAI2D,EACJ1D,EAAG0D,EACHzD,GAAIyD,GAERxD,uBAAwB,YACxBC,QAAS,MACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAhEyBxxD,CAAQ,EAAQ,iGCElD,SAAWmgD,GAAU,aAIXA,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,wFAAwFlsC,MAC5F,KAEJmsC,YAAa,wFAAwFnsC,MACjG,KAEJosC,SAAU,kDAAkDpsC,MAAM,KAClEqsC,cAAe,kDAAkDrsC,MAAM,KACvEssC,YAAa,kDAAkDtsC,MAAM,KACrE6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,eACTC,QAAS,cACTC,SAAU,cACVC,QAAS,gBACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,iBACRC,KAAM,SACNvzC,EAAG,OACHwzC,GAAI,UACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJ53B,EAAG,MACH63B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyBxxD,CAAQ,EAAQ,4FCGlD,SAAWmgD,GAAU,aAIfA,EAAO0O,aAAa,MAAO,CACjCC,OAAQ,kFAAkFlsC,MACtF,KAEJmsC,YAAa,kFAAkFnsC,MAC3F,KAEJosC,SAAU,kDAAkDpsC,MAAM,KAClEqsC,cAAe,kDAAkDrsC,MAAM,KACvEssC,YAAa,kDAAkDtsC,MAAM,KACrE6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,0BAEVC,SAAU,CACNC,QAAS,cACTC,QAAS,cACTC,SAAU,cACVC,QAAS,eACTC,SAAU,cACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,SACNvzC,EAAG,OACHwzC,GAAI,UACJ57C,EAAG,QACH67C,GAAI,WACJC,EAAG,OACHC,GAAI,cACJ53B,EAAG,MACH63B,GAAI,WACJC,EAAG,QACHC,GAAI,YACJC,EAAG,QACHC,GAAI,aAERI,KAAM,CACFC,IAAK,EACLC,IAAK,MAnDyBxxD,CAAQ,EAAQ,8FCGlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,sFAAsFlsC,MAC1F,KAEJmsC,YAAa,sFAAsFnsC,MAC/F,KAEJosC,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,0BACJC,IAAK,iCACLC,KAAM,wCAEVZ,cAAe,qDACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAGM,eAAb5C,GACa,UAAbA,GACa,iBAAbA,EAEO4C,EACa,iBAAb5C,GAA4C,QAAbA,EAC/B4C,EAAO,GAEPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,aACAA,EAAK,IACL,QACAA,EAAK,KACL,eACAA,EAAK,KACL,MACAA,EAAK,KACL,eAEA,OAGfhI,SAAU,CACNC,QAAS,mBACTC,QAAS,kBACTC,SAAU,4BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,WACRC,KAAM,WACNvzC,EAAG,eACHwzC,GAAI,YACJ57C,EAAG,YACH67C,GAAI,WACJC,EAAG,YACHC,GAAI,WACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAGRC,uBAAwB,6BACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,QACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,SACpB,QACI,OAAOA,IAGnBgB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCs9C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCy8C,KAAM,CAEFC,IAAK,EACLC,IAAK,KA5GyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAYzB,SAASqS,EAAuBnB,EAAQQ,EAAelsD,GASnD,MAAY,MAARA,EACOksD,EAAgB,UAAY,UACpB,MAARlsD,EACAksD,EAAgB,SAAW,SAE3BR,EAAS,KAtBFoB,GAsB6BpB,EArB3CqB,EAQS,CACThC,GAAImB,EAAgB,yBAA2B,yBAC/ClB,GAAIkB,EAAgB,yBAA2B,yBAC/ChB,GAAIgB,EAAgB,sBAAwB,sBAC5Cf,GAAI,gBACJE,GAAI,wBACJE,GAAI,kBAOgCvrD,GArBvBid,MAAM,KAChB6vC,EAAM,IAAO,GAAKA,EAAM,KAAQ,GACjCC,EAAM,GACND,EAAM,IAAM,GAAKA,EAAM,IAAM,IAAMA,EAAM,IAAM,IAAMA,EAAM,KAAO,IAClEC,EAAM,GACNA,EAAM,IANhB,IAAsBD,EACdC,EAsDR,SAASuF,EAAqBnnD,GAC1B,OAAO,WACH,OAAOA,EAAM,KAAwB,KAAjBhR,KAAKwvD,QAAiB,IAAM,IAAM,QAIrDnP,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,CACJpnC,OAAQ,yFAAyF9E,MAC7F,KAEJ+vC,WAAY,iGAAiG/vC,MACzG,MAGRmsC,YAAa,yDAAyDnsC,MAClE,KAEJosC,SAhDJ,SAA6Bl6C,EAAG4S,GAC5B,IAAIsnC,EAAW,CACPkJ,WAAY,0DAA0Dt1C,MAClE,KAEJu1C,WAAY,0DAA0Dv1C,MAClE,KAEJw1C,SAAU,4DAA4Dx1C,MAClE,MAKZ,OAAU,IAAN9N,EACOk6C,EAAqB,WACvBptD,MAAM,EAAG,GACTM,OAAO8sD,EAAqB,WAAEptD,MAAM,EAAG,IAE3CkT,EASEk6C,EALI,qBAAqB/rC,KAAKyE,GAC/B,aACA,sCAAsCzE,KAAKyE,GAC3C,WACA,cACoB5S,EAAE+9C,OARjB7D,EAAqB,YA6BhCC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,iBACJC,IAAK,wBACLC,KAAM,+BAEVC,SAAU,CACNC,QAASgI,EAAqB,cAC9B/H,QAAS+H,EAAqB,YAC9B7H,QAAS6H,EAAqB,WAC9B9H,SAAU8H,EAAqB,cAC/B5H,SAAU,WACN,OAAQvwD,KAAK+yD,OACT,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOoF,EAAqB,oBAAoBp2D,KAAK/B,MACzD,KAAK,EACL,KAAK,EACL,KAAK,EACD,OAAOm4D,EAAqB,qBAAqBp2D,KAAK/B,QAGlEwwD,SAAU,KAEdC,aAAc,CACVC,OAAQ,QACRC,KAAM,UACNvzC,EAAG,kBACHwzC,GAAI8B,EACJ19C,EAAG09C,EACH7B,GAAI6B,EACJ5B,EAAG,SACHC,GAAI2B,EACJv5B,EAAG,OACH63B,GAAI0B,EACJzB,EAAG,SACHC,GAAIwB,EACJvB,EAAG,MACHC,GAAIsB,GAGRrD,cAAe,wBACfC,KAAM,SAAU18C,GACZ,MAAO,iBAAiBuQ,KAAKvQ,IAEjC28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,EACA,OACAA,EAAO,GACP,QACAA,EAAO,GACP,MAEA,UAGfd,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACL,IAAK,IACL,IAAK,IACD,OAAOzB,EAAS,KACpB,IAAK,IACD,OAAOA,EAAS,MACpB,QACI,OAAOA,IAGnBC,KAAM,CACFC,IAAK,EACLC,IAAK,KAhKyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIzB,IAAI2O,EAAS,CACL,QACA,QACA,OACA,QACA,MACA,MACA,SACA,OACA,QACA,SACA,QACA,SAEJwI,EAAO,CAAC,QAAS,MAAO,OAAQ,MAAO,SAAU,OAAQ,QAEpDnX,EAAO0O,aAAa,KAAM,CAC/BC,OAAQA,EACRC,YAAaD,EACbE,SAAUsI,EACVrI,cAAeqI,EACfpI,YAAaoI,EACb7H,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVZ,cAAe,UACfC,KAAM,SAAU18C,GACZ,MAAO,QAAUA,GAErB28C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,OAAIyC,EAAO,GACA,MAEJ,OAEXjC,SAAU,CACNC,QAAS,eACTC,QAAS,eACTC,SAAU,iBACVC,QAAS,sBACTC,SAAU,yBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,SACNvzC,EAAG,YACHwzC,GAAI,WACJ57C,EAAG,UACH67C,GAAI,SACJC,EAAG,YACHC,GAAI,WACJ53B,EAAG,SACH63B,GAAI,QACJC,EAAG,UACHC,GAAI,SACJC,EAAG,UACHC,GAAI,UAERmB,SAAU,SAAUhtD,GAChB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCs9C,WAAY,SAAU9sD,GAClB,OAAOA,EAAOwP,QAAQ,KAAM,MAEhCy8C,KAAM,CACFC,IAAK,EACLC,IAAK,KA/EyBxxD,CAAQ,EAAQ,gGCElD,SAAWmgD,GAAU,aAIZA,EAAO0O,aAAa,UAAW,CACxCC,OAAQ,6EAA6ElsC,MACjF,KAEJmsC,YAAa,oDAAoDnsC,MAAM,KACvEosC,SAAU,+DAA+DpsC,MACrE,KAEJqsC,cAAe,kCAAkCrsC,MAAM,KACvDssC,YAAa,yBAAyBtsC,MAAM,KAC5C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,uBACTC,SAAU,oCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,kBACRC,KAAM,qBACNvzC,EAAG,SACHwzC,GAAI,YACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,yEAAyElsC,MAC7E,KAEJmsC,YAAa,kDAAkDnsC,MAAM,KACrEosC,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,8BAA8BrsC,MAAM,KACnDssC,YAAa,uBAAuBtsC,MAAM,KAC1C6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,uBACTC,QAAS,mBACTC,SAAU,2BACVC,QAAS,sBACTC,SAAU,mCACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,gBACRC,KAAM,oBACNvzC,EAAG,SACHwzC,GAAI,YACJ57C,EAAG,aACH67C,GAAI,YACJC,EAAG,WACHC,GAAI,UACJ53B,EAAG,UACH63B,GAAI,SACJC,EAAG,SACHC,GAAI,QACJC,EAAG,UACHC,GAAI,UAERI,KAAM,CACFC,IAAK,EACLC,IAAK,KAjDyBxxD,CAAQ,EAAQ,2FCIlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,qGAAqGlsC,MACzG,KAEJmsC,YAAa,sFAAsFnsC,MAC/F,KAEJywC,kBAAkB,EAClBrE,SAAU,yDAAyDpsC,MAC/D,KAEJqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,uBAAuBtsC,MAAM,KAC1CovC,oBAAoB,EACpB7C,cAAe,SACfC,KAAM,SAAU18C,GACZ,MAAO,QAAQuQ,KAAKvQ,IAExB28C,SAAU,SAAUC,EAAOC,EAASC,GAChC,OAAIF,EAAQ,GACDE,EAAU,KAAO,KAEjBA,EAAU,KAAO,MAGhCC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,oBACJC,IAAK,0BACLC,KAAM,gCACNx9B,EAAG,YACH+hC,GAAI,aACJC,IAAK,mBACLC,KAAM,yBAEVxE,SAAU,CACNC,QAAS,mBACTC,QAAS,oBACTC,SAAU,yBACVC,QAAS,mBACTC,SAAU,2BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNvzC,EAAG,WACHwzC,GAAI,UACJ57C,EAAG,WACH67C,GAAI,UACJC,EAAG,UACHC,GAAI,SACJ53B,EAAG,WACH63B,GAAI,UACJiC,EAAG,WACHC,GAAI,UACJjC,EAAG,YACHC,GAAI,WACJC,EAAG,UACHC,GAAI,UAERC,uBAAwB,UACxBC,QAAS,SAAUC,GACf,OAAOA,GAEXC,KAAM,CACFC,IAAK,EACLC,IAAK,KA5EyBxxD,CAAQ,EAAQ,iGCElD,SAAWmgD,GAAU,aAIXA,EAAO0O,aAAa,WAAY,CAC1CC,OAAQ,6GAA6GlsC,MACjH,KAEJmsC,YAAa,8DAA8DnsC,MACvE,KAEJywC,kBAAkB,EAClBrE,SAAU,yEAAyEpsC,MAC/E,KAEJqsC,cAAe,qCAAqCrsC,MAAM,KAC1DssC,YAAa,4BAA4BtsC,MAAM,KAC/CovC,oBAAoB,EACpBvC,eAAgB,CACZC,GAAI,QACJE,EAAG,aACHC,GAAI,cACJC,IAAK,oBACLC,KAAM,2BAEVC,SAAU,CACNC,QAAS,kBACTC,QAAS,sBACTC,SAAU,eACVC,QAAS,uBACTC,SAAU,uBACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,UACNvzC,EAAG,mBACHwzC,GAAI,eACJ57C,EAAG,aACH67C,GAAI,eACJC,EAAG,YACHC,GAAI,YACJ53B,EAAG,SACH63B,GAAI,WACJC,EAAG,YACHC,GAAI,cACJC,EAAG,UACHC,GAAI,aAERC,uBAAwB,uBACxBC,QAAS,SAAUC,GACf,IAAI3yC,EAAI2yC,EAAS,GAWjB,OAAOA,GAT6B,MAAxBA,EAAS,IAAO,IACd,KACM,IAAN3yC,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,OAGlB4yC,KAAM,CACFC,IAAK,EACLC,IAAK,KArEyBxxD,CAAQ,EAAQ,2FCGlD,SAAWmgD,GAAU,aAIhBA,EAAO0O,aAAa,KAAM,CAC/BC,OAAQ,0FAA0FlsC,MAC9F,KAEJmsC,YAAa,gEAAgEnsC,MAAM,KACnFosC,SAAU,uDAAuDpsC,MAAM,KACvEqsC,cAAe,sCAAsCrsC,MAAM,KAC3DssC,YAAa,2BAA2BtsC,MAAM,KAC9C6sC,eAAgB,CACZC,GAAI,SACJC,IAAK,YACLC,EAAG,aACHC,GAAI,cACJC,IAAK,qBACLC,KAAM,4BAEVC,SAAU,CACNC,QAAS,gBACTC,QAAS,eACTC,SAAU,8BACVC,QAAS,eACTC,SAAU,6BACVC,SAAU,KAEdC,aAAc,CACVC,OAAQ,SACRC,KAAM,WACNvzC,EAAG,oBACHwzC,GAAI,WACJ57C,EAAG,cACH67C,GAAI,aACJC,EAAG,cACHC,GAAI,aACJ53B,EAAG,WACH63B,GAAI,UACJC,EAAG,WACHC,GAAI,UACJC,EAAG,YACHC,GAAI,YAERC,uBAAwB,gBACxBC,QAAS,UACTE,KAAM,CACFC,IAAK,EACLC,IAAK,KAnDyBxxD,CAAQ,EAAQ,8FCKlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwClsC,MAC5C,KAEJmsC,YAAa,yCAAyCnsC,MAClD,KAEJosC,SAAU,8BAA8BpsC,MAAM,KAC9CqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNx9B,EAAG,WACH+hC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,GAGPA,GAAQ,GAAKA,EAAOA,EAAO,IAG1C5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,SAAUkG,GAChB,OAAIA,EAAI/E,SAAWxxD,KAAKwxD,OACb,WAEA,YAGflB,QAAS,SACTC,SAAU,SAAUgG,GAChB,OAAIv2D,KAAKwxD,SAAW+E,EAAI/E,OACb,WAEA,YAGfhB,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNvzC,EAAG,KACHwzC,GAAI,OACJ57C,EAAG,OACH67C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJ53B,EAAG,MACH63B,GAAI,OACJiC,EAAG,MACHC,GAAI,OACJjC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,QAERI,KAAM,CAEFC,IAAK,EACLC,IAAK,KApHyBxxD,CAAQ,EAAQ,8FCIlD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwClsC,MAC5C,KAEJmsC,YAAa,yCAAyCnsC,MAClD,KAEJosC,SAAU,8BAA8BpsC,MAAM,KAC9CqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNx9B,EAAG,WACH+hC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACO,OAAPA,EACA,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,SACTC,QAAS,SACTC,SAAU,YACVC,QAAS,SACTC,SAAU,YACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNvzC,EAAG,KACHwzC,GAAI,OACJ57C,EAAG,OACH67C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJ53B,EAAG,MACH63B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BlxD,CAAQ,EAAQ,8FCElD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwClsC,MAC5C,KAEJmsC,YAAa,yCAAyCnsC,MAClD,KAEJosC,SAAU,8BAA8BpsC,MAAM,KAC9CqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNx9B,EAAG,WACH+hC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNvzC,EAAG,KACHwzC,GAAI,OACJ57C,EAAG,OACH67C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJ53B,EAAG,MACH63B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BlxD,CAAQ,EAAQ,8FCElD,SAAWmgD,GAAU,aAIdA,EAAO0O,aAAa,QAAS,CACpCC,OAAQ,wCAAwClsC,MAC5C,KAEJmsC,YAAa,yCAAyCnsC,MAClD,KAEJosC,SAAU,8BAA8BpsC,MAAM,KAC9CqsC,cAAe,uBAAuBrsC,MAAM,KAC5CssC,YAAa,gBAAgBtsC,MAAM,KACnC6sC,eAAgB,CACZC,GAAI,QACJC,IAAK,WACLC,EAAG,aACHC,GAAI,YACJC,IAAK,kBACLC,KAAM,sBACNx9B,EAAG,WACH+hC,GAAI,YACJC,IAAK,kBACLC,KAAM,uBAEVrF,cAAe,oBACfgE,aAAc,SAAUlB,EAAM5C,GAI1B,OAHa,KAAT4C,IACAA,EAAO,GAEM,OAAb5C,GAAkC,OAAbA,GAAkC,OAAbA,EACnC4C,EACa,OAAb5C,EACA4C,GAAQ,GAAKA,EAAOA,EAAO,GACd,OAAb5C,GAAkC,OAAbA,EACrB4C,EAAO,QADX,GAIX5C,SAAU,SAAU4C,EAAMC,EAAQ1C,GAC9B,IAAIwI,EAAY,IAAP/F,EAAaC,EACtB,OAAI8F,EAAK,IACE,KACAA,EAAK,IACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KACAA,EAAK,KACL,KAEA,MAGfhI,SAAU,CACNC,QAAS,UACTC,QAAS,UACTC,SAAU,aACVC,QAAS,UACTC,SAAU,aACVC,SAAU,KAEda,uBAAwB,iBACxBC,QAAS,SAAUC,EAAQyB,GACvB,OAAQA,GACJ,IAAK,IACL,IAAK,IACL,IAAK,MACD,OAAOzB,EAAS,IACpB,IAAK,IACD,OAAOA,EAAS,IACpB,IAAK,IACL,IAAK,IACD,OAAOA,EAAS,IACpB,QACI,OAAOA,IAGnBd,aAAc,CACVC,OAAQ,MACRC,KAAM,MACNvzC,EAAG,KACHwzC,GAAI,OACJ57C,EAAG,OACH67C,GAAI,QACJC,EAAG,OACHC,GAAI,QACJ53B,EAAG,MACH63B,GAAI,OACJC,EAAG,OACHC,GAAI,QACJC,EAAG,MACHC,GAAI,UAhG0BlxD,CAAQ,EAAQ,wGCP1D,IAAIyO,EAAM,CACT,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,WAAY,yCACZ,cAAe,yCACf,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,wCACX,aAAc,wCACd,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,QAAS,sCACT,WAAY,sCACZ,OAAQ,qCACR,UAAW,qCACX,QAAS,sCACT,WAAY,sCACZ,QAAS,sCACT,aAAc,2CACd,gBAAiB,2CACjB,WAAY,sCACZ,UAAW,wCACX,aAAc,wCACd,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,OAAQ,qCACR,YAAa,0CACb,eAAgB,0CAChB,UAAW,qCACX,OAAQ,qCACR,UAAW,qCACX,aAAc,2CACd,gBAAiB,2CACjB,OAAQ,qCACR,UAAW,qCACX,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,wCACd,UAAW,wCACX,aAAc,yCAIf,SAAS4pD,EAAeC,GACvB,IAAIntD,EAAKotD,EAAsBD,GAC/B,OAAOE,EAAoBrtD,GAE5B,SAASotD,EAAsBD,GAC9B,IAAIE,EAAoB9zC,EAAEjW,EAAK6pD,GAAM,CACpC,IAAIl2C,EAAI,IAAI7P,MAAM,uBAAyB+lD,EAAM,KAEjD,MADAl2C,EAAEq2C,KAAO,mBACHr2C,EAEP,OAAO3T,EAAI6pD,GAEZD,EAAe/kD,KAAO,WACrB,OAAOD,OAAOC,KAAK7E,IAEpB4pD,EAAe5rD,QAAU8rD,EACzB34D,EAAOguD,QAAUyK,EACjBA,EAAeltD,GAAK,8GClSnB,IAASoS,EAAAA,EAAqiI8I,OAAOF,SAAziIxmB,QAAQC,OAAO,eAAe,IAAI0E,MAAM,eAAe,CAACo0D,OAAM,IAAKrtD,OAAO,CAAC,mBAAmB,SAASkS,GAAG5d,QAAQ+M,UAAU6Q,EAAEo7C,0BAA0Bp7C,EAAEo7C,yBAAyB,sCAAsCp7C,EAAEq7C,2BAA2B,yCAAyCj5D,QAAQC,OAAO,mBAAmB,CAAC,mBAAmBD,QAAQC,OAAO,iBAAiB,IAAID,QAAQC,OAAO,QAAQ,CAAC,eAAe,iBAAiB,mBAAmB,eAAwEA,EAAOguD,UAAUA,IAAUhuD,EAAOguD,QAAQ,SAASjuD,QAAQC,OAAO,kBAAkB2X,QAAQ,MAAM,CAAC,KAAK,SAASgG,GAAG,IAAImB,EAAE,OAAaua,EAAE,CAAC,MAAM,KAAI,MAAM,KAAK,MAAM,KAAI,MAAM,KAAK,MAAM,MAAMn5B,KAAK+4D,eAAe,SAASt7C,EAAEmB,GAAG,MAAM,WAAWA,EAAEo6C,YAAYh5D,KAAKi5D,QAAQx7C,GAAGA,EAAEy7C,iBAAiB,MAAMt6C,EAAEo6C,YAAYh5D,KAAKi5D,QAAQx7C,GAAGA,EAAE3I,WAAWC,QAAQ,IAAI6J,EAAEo6C,YAAY,iBAAiBv7C,GAAGA,EAAEA,EAAE1I,QAAQ,KAAK,OAAO6J,EAAEu6C,cAAc17C,EAAEvP,QAAQ,MAAM,GAAGuP,EAAEvP,QAAQ,OAAO,GAAGuP,EAAEvP,QAAQ,OAAO,KAAKuP,EAAEmB,EAAEw6C,SAAS37C,EAAEmB,EAAEw6C,UAAU37C,GAAG,kBAAkBA,EAAEA,EAAE,OAAO,QAAQA,GAAGzd,KAAKi5D,QAAQ,SAASx7C,GAAG,OAAOA,IAAIA,KAAK47C,SAAS57C,IAAIwU,QAAQxU,EAAE,KAAKzd,KAAKke,UAAU,SAASib,EAAE7W,GAAG,IAAI2vC,EAAEx0C,EAAExR,QAAQ4R,EAAE7d,KAAK8wD,EAAE,GAAGzzC,EAAE,GAAGK,EAAED,EAAExN,KAAKkpB,GAAGpuB,MAAK,SAAS0S,GAA6C,IAAI0b,EAAEzb,EAA7C7d,QAAQ+M,UAAU0V,EAAEg3C,SAASh3C,EAAEg3C,SAAgBngC,EAAE,GAAGt5B,QAAQkB,QAAQuhB,EAAEg3C,QAAO,SAAS77C,GAAGzd,KAAKS,KAAKod,EAAEk7C,eAAet7C,EAAE6E,MAAK6W,GAAGzb,EAAEyb,EAAElmB,KAAKqP,EAAEi3C,SAASj3C,EAAEi3C,SAAS,KAAKl8C,GAAGK,EAAEkB,GAAE,IAAsI6T,EAAEzd,EAApIwI,EAAE,GAAM3d,QAAQmS,QAAQyL,GAAGD,EAAEC,EAAE5d,QAAQuN,WAAWqQ,KAAKD,EAAEC,KAAK5d,QAAQ+M,UAAU0V,EAAEgnC,QAAQhnC,EAAEgnC,OAAO,kBAAkBhnC,EAAEgnC,QAAe72B,EAAE,GAAG5yB,QAAQkB,QAAQyc,EAAE,IAAG,SAASC,EAAEmB,GAAG5e,KAAKS,KAAKod,EAAEk7C,eAAen6C,EAAE0D,MAAKmQ,GAAGzd,EAAEyd,EAAExf,KAAKqP,EAAEi3C,SAASj3C,EAAEi3C,SAAS,KAAKl8C,GAAGrI,EAAE4J,GAAE/e,QAAQkB,QAAQyc,GAAE,SAASC,EAAE+7C,GAAG,IAAIrgC,EAAE84B,EAAEnB,EAAEjxD,QAAQoiB,KAAKzE,EAAEg8C,IAAIvH,EAAE,GAAG,IAAIv0C,EAAE4E,EAAEm3C,YAAYn3C,EAAEm3C,YAAY3I,EAAEjxD,QAAQkB,QAAQ2c,GAAE,SAASD,GAAG,IAAImB,EAAE0D,EAAEm3C,YAAY3I,EAAErzC,GAAGA,EAAEzd,KAAKS,KAAKod,EAAEk7C,eAAen6C,EAAE0D,MAAK2vC,GAAG94B,EAAE84B,EAAEh/C,KAAKqP,EAAEi3C,SAASj3C,EAAEi3C,SAAS,KAAKl8C,GAAGm8C,EAAEh8C,EAAEpO,OAAO+pB,EAAEva,EAAEua,KAAI7W,EAAEo3C,qBAAqB5I,GAA9wC,UAAoxCA,GAAGzzC,EAAE40C,EAAEtlD,QAAQmkD,MAAK,MAAM,mBAAmBpzC,EAAS,OAAGA,EAAS,OAAE,SAASD,GAAGw0C,EAAE7G,OAAO3tC,MAAKw0C,EAAExuD,SAASzD,KAAK25D,cAAc,SAASl8C,GAAG,YAAO,IAAS0b,EAAE1b,IAAIzd,KAAK45D,eAAe,SAASn8C,GAAG,OAAO0b,EAAE1b,OAAO5d,QAAQC,OAAO,oBAAoB+C,UAAU,QAAQ,CAAC,SAAS,KAAK,MAAM,YAAY,WAAW,SAAS+b,EAAE46C,EAAErgC,EAAE7W,EAAE2vC,GAAG,MAAM,CAAC9qD,SAAS,KAAKrE,MAAM,CAAC6E,KAAK,SAASkyD,SAAS,YAAYP,OAAO,aAAaG,YAAY,kBAAkBL,SAAS,iBAAiBJ,WAAW,oBAAoBG,aAAa,gBAAgBI,SAAS,kBAAkBntC,SAAS,YAAYstC,mBAAmB,UAAUpf,QAAQ,IAAIwf,QAAQ,WAAWxQ,MAAM,aAAatoD,WAAW,CAAC,SAAS,WAAW,SAAS,cAAc,SAASyc,EAAEmB,EAAE0D,GAAwe7E,EAAEs8C,IAAI,GAAGl6D,QAAQ+M,UAAU6Q,EAAE2O,WAAW,QAAQ3O,EAAE2O,UAAUvsB,QAAQmS,QAAQyL,EAAE9V,OAAO8V,EAAElZ,OAAO,QAAO,WAAWkZ,EAAEu8C,cAAY,GAAIv8C,EAAEw8C,YAAY,WAAW,OAAOx8C,EAAEo8C,UAAU,gBAAgBp8C,EAAEu8C,SAAS,WAAW,IAAIn8C,EAAE27C,EAAEvtD,QAAQ,OAAO2S,EAAEs7C,SAAS53C,EAAE63C,mBAAmB,kBAAkBhhC,EAAEjb,UAAUT,EAAE9V,OAAhxB,WAAa,IAAIiX,EAAE,CAACw6C,SAAS37C,EAAE27C,SAAS37C,EAAE27C,SAAS,IAAIJ,WAAWv7C,EAAEu7C,WAAWv7C,EAAEu7C,WAAW,IAAIG,aAAa17C,EAAE07C,aAAaO,mBAAmBj8C,EAAEi8C,oBAAoB,OAAO75D,QAAQ+M,UAAU0V,EAAE83C,aAAax7C,EAAE06C,OAAO77C,EAAEpc,MAAMoc,EAAE67C,SAASz5D,QAAQ+M,UAAU0V,EAAE+3C,kBAAkBz7C,EAAE66C,YAAYh8C,EAAEpc,MAAMoc,EAAEg8C,cAAc55D,QAAQ+M,UAAU0V,EAAEg4C,YAAY17C,EAAE0qC,MAAM7rC,EAAEpc,MAAMoc,EAAE6rC,QAAQ1qC,EAAE26C,SAAS97C,EAAE87C,SAAS97C,EAAE87C,SAAS,IAAI36C,EAAE26C,SAASpgC,EAAEwgC,cAAc/6C,EAAE26C,UAAUpgC,EAAEygC,eAAeh7C,EAAE26C,UAAU36C,EAAE26C,SAAS36C,EAAoTqzC,IAAKlnD,MAAK,SAASyuD,GAAG/7C,EAAEs8C,IAAIP,EAAE56C,EAAE27C,YAAYj4C,EAAE63C,mBAAmB,kBAAkBt8C,EAAElR,QAAQ6sD,MAAK/7C,EAAExZ,SAAS4Z,EAAEpa,WAAW8E,KAAK,SAASqW,EAAE46C,GAA8bA,EAAEl2D,KAAK,SAAQ,WAAWsb,EAAEo7C,WAAWjvD,MAAK,YAAve,WAAa,IAAIyuD,EAAE56C,EAAEk7C,SAAS,QAAQ3gC,EAAE,IAAI80B,KAAK,CAACrvC,EAAEm7C,KAAK,CAAC7qD,KAAK,oBAAoBsqD,EAAE,MAAM,GAAG/7C,EAAEi+B,UAAU8e,iBAAiB9e,UAAU+e,WAAWthC,EAAEva,EAAEq7C,mBAAmB,CAAC,IAAIp8C,EAAEhe,QAAQkD,QAAQ,+CAA+C+tD,EAAEjxD,QAAQkD,QAAQ8a,EAAEjV,WAAW,IAAIkoD,EAAEh+C,KAAK,OAAO2K,EAAEi9C,IAAIC,gBAAgBxhC,IAAI23B,EAAEh+C,KAAK,WAAW8L,EAAEq7C,eAAenJ,EAAEh+C,KAAK,SAAS,UAAUwP,EAAExB,KAAK,QAAQuZ,OAAOxc,GAAGo0C,GAAE,WAAWnB,EAAE,GAAGrH,QAAQqH,EAAEjkD,WAAU,OAA8DssB,MAAMva,EAAE3a","sources":["webpack://motion-chat/./node_modules/@flowjs/ng-flow/dist/ng-flow.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/directives/viewDirective.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/templateFactory.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/locationServices.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/services.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateFilters.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/stateProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/statebuilders/views.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/urlRouterProvider.js","webpack://motion-chat/./node_modules/@uirouter/angularjs/lib-esm/viewScroll.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/common.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/coreservices.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/glob.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/hof.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/predicates.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/queue.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/safeConsole.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/strings.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/common/trace.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/globals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/lazyLoad.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/param.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/paramTypes.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/params/stateParams.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathNode.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/path/pathUtils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolvable.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/resolve/resolveContext.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/router.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateMatcher.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateObject.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateQueueManager.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/stateRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/state/targetState.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookBuilder.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/hookRegistry.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/interface.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/rejectFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionEventType.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionHook.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/coreResolvables.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/redirectTo.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/onEnterExitRetain.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/resolve.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/views.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/updateGlobals.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/url.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/ignoredTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/hooks/invalidTransition.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/transition/transitionService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlMatcherFactory.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRouter.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRule.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlRules.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/url/urlService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/baseLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/browserLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/hashLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationConfig.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/memoryLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/plugins.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/pushStateLocationService.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/vanilla/utils.js","webpack://motion-chat/./node_modules/@uirouter/core/lib-esm/view/view.js","webpack://motion-chat/./node_modules/angular-aria/angular-aria.js","webpack://motion-chat/./node_modules/angular-rateit/dist/ng-rateit.js","webpack://motion-chat/./src/js/index.controller.js","webpack://motion-chat/./src/js/index.route.js","webpack://motion-chat/./src/js/closing/index.controller.js","webpack://motion-chat/./src/js/index.factory.js","webpack://motion-chat/./src/js/chat/index.controller.js","webpack://motion-chat/./src/js/offline/index.controller.js","webpack://motion-chat/./src/js/online/index.controller.js","webpack://motion-chat/./src/js/unmanaged/index.controller.js","webpack://motion-chat/./src/js/waiting/index.controller.js","webpack://motion-chat/./src/js/index.module.js","webpack://motion-chat/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://motion-chat/./node_modules/json-form-data/src/jsonToFormData.js","webpack://motion-chat/./node_modules/moment/locale/af.js","webpack://motion-chat/./node_modules/moment/locale/ar-dz.js","webpack://motion-chat/./node_modules/moment/locale/ar-kw.js","webpack://motion-chat/./node_modules/moment/locale/ar-ly.js","webpack://motion-chat/./node_modules/moment/locale/ar-ma.js","webpack://motion-chat/./node_modules/moment/locale/ar-sa.js","webpack://motion-chat/./node_modules/moment/locale/ar-tn.js","webpack://motion-chat/./node_modules/moment/locale/ar.js","webpack://motion-chat/./node_modules/moment/locale/az.js","webpack://motion-chat/./node_modules/moment/locale/be.js","webpack://motion-chat/./node_modules/moment/locale/bg.js","webpack://motion-chat/./node_modules/moment/locale/bm.js","webpack://motion-chat/./node_modules/moment/locale/bn-bd.js","webpack://motion-chat/./node_modules/moment/locale/bn.js","webpack://motion-chat/./node_modules/moment/locale/bo.js","webpack://motion-chat/./node_modules/moment/locale/br.js","webpack://motion-chat/./node_modules/moment/locale/bs.js","webpack://motion-chat/./node_modules/moment/locale/ca.js","webpack://motion-chat/./node_modules/moment/locale/cs.js","webpack://motion-chat/./node_modules/moment/locale/cv.js","webpack://motion-chat/./node_modules/moment/locale/cy.js","webpack://motion-chat/./node_modules/moment/locale/da.js","webpack://motion-chat/./node_modules/moment/locale/de-at.js","webpack://motion-chat/./node_modules/moment/locale/de-ch.js","webpack://motion-chat/./node_modules/moment/locale/de.js","webpack://motion-chat/./node_modules/moment/locale/dv.js","webpack://motion-chat/./node_modules/moment/locale/el.js","webpack://motion-chat/./node_modules/moment/locale/en-au.js","webpack://motion-chat/./node_modules/moment/locale/en-ca.js","webpack://motion-chat/./node_modules/moment/locale/en-gb.js","webpack://motion-chat/./node_modules/moment/locale/en-ie.js","webpack://motion-chat/./node_modules/moment/locale/en-il.js","webpack://motion-chat/./node_modules/moment/locale/en-in.js","webpack://motion-chat/./node_modules/moment/locale/en-nz.js","webpack://motion-chat/./node_modules/moment/locale/en-sg.js","webpack://motion-chat/./node_modules/moment/locale/eo.js","webpack://motion-chat/./node_modules/moment/locale/es-do.js","webpack://motion-chat/./node_modules/moment/locale/es-mx.js","webpack://motion-chat/./node_modules/moment/locale/es-us.js","webpack://motion-chat/./node_modules/moment/locale/es.js","webpack://motion-chat/./node_modules/moment/locale/et.js","webpack://motion-chat/./node_modules/moment/locale/eu.js","webpack://motion-chat/./node_modules/moment/locale/fa.js","webpack://motion-chat/./node_modules/moment/locale/fi.js","webpack://motion-chat/./node_modules/moment/locale/fil.js","webpack://motion-chat/./node_modules/moment/locale/fo.js","webpack://motion-chat/./node_modules/moment/locale/fr-ca.js","webpack://motion-chat/./node_modules/moment/locale/fr-ch.js","webpack://motion-chat/./node_modules/moment/locale/fr.js","webpack://motion-chat/./node_modules/moment/locale/fy.js","webpack://motion-chat/./node_modules/moment/locale/ga.js","webpack://motion-chat/./node_modules/moment/locale/gd.js","webpack://motion-chat/./node_modules/moment/locale/gl.js","webpack://motion-chat/./node_modules/moment/locale/gom-deva.js","webpack://motion-chat/./node_modules/moment/locale/gom-latn.js","webpack://motion-chat/./node_modules/moment/locale/gu.js","webpack://motion-chat/./node_modules/moment/locale/he.js","webpack://motion-chat/./node_modules/moment/locale/hi.js","webpack://motion-chat/./node_modules/moment/locale/hr.js","webpack://motion-chat/./node_modules/moment/locale/hu.js","webpack://motion-chat/./node_modules/moment/locale/hy-am.js","webpack://motion-chat/./node_modules/moment/locale/id.js","webpack://motion-chat/./node_modules/moment/locale/is.js","webpack://motion-chat/./node_modules/moment/locale/it-ch.js","webpack://motion-chat/./node_modules/moment/locale/it.js","webpack://motion-chat/./node_modules/moment/locale/ja.js","webpack://motion-chat/./node_modules/moment/locale/jv.js","webpack://motion-chat/./node_modules/moment/locale/ka.js","webpack://motion-chat/./node_modules/moment/locale/kk.js","webpack://motion-chat/./node_modules/moment/locale/km.js","webpack://motion-chat/./node_modules/moment/locale/kn.js","webpack://motion-chat/./node_modules/moment/locale/ko.js","webpack://motion-chat/./node_modules/moment/locale/ku.js","webpack://motion-chat/./node_modules/moment/locale/ky.js","webpack://motion-chat/./node_modules/moment/locale/lb.js","webpack://motion-chat/./node_modules/moment/locale/lo.js","webpack://motion-chat/./node_modules/moment/locale/lt.js","webpack://motion-chat/./node_modules/moment/locale/lv.js","webpack://motion-chat/./node_modules/moment/locale/me.js","webpack://motion-chat/./node_modules/moment/locale/mi.js","webpack://motion-chat/./node_modules/moment/locale/mk.js","webpack://motion-chat/./node_modules/moment/locale/ml.js","webpack://motion-chat/./node_modules/moment/locale/mn.js","webpack://motion-chat/./node_modules/moment/locale/mr.js","webpack://motion-chat/./node_modules/moment/locale/ms-my.js","webpack://motion-chat/./node_modules/moment/locale/ms.js","webpack://motion-chat/./node_modules/moment/locale/mt.js","webpack://motion-chat/./node_modules/moment/locale/my.js","webpack://motion-chat/./node_modules/moment/locale/nb.js","webpack://motion-chat/./node_modules/moment/locale/ne.js","webpack://motion-chat/./node_modules/moment/locale/nl-be.js","webpack://motion-chat/./node_modules/moment/locale/nl.js","webpack://motion-chat/./node_modules/moment/locale/nn.js","webpack://motion-chat/./node_modules/moment/locale/oc-lnc.js","webpack://motion-chat/./node_modules/moment/locale/pa-in.js","webpack://motion-chat/./node_modules/moment/locale/pl.js","webpack://motion-chat/./node_modules/moment/locale/pt-br.js","webpack://motion-chat/./node_modules/moment/locale/pt.js","webpack://motion-chat/./node_modules/moment/locale/ro.js","webpack://motion-chat/./node_modules/moment/locale/ru.js","webpack://motion-chat/./node_modules/moment/locale/sd.js","webpack://motion-chat/./node_modules/moment/locale/se.js","webpack://motion-chat/./node_modules/moment/locale/si.js","webpack://motion-chat/./node_modules/moment/locale/sk.js","webpack://motion-chat/./node_modules/moment/locale/sl.js","webpack://motion-chat/./node_modules/moment/locale/sq.js","webpack://motion-chat/./node_modules/moment/locale/sr-cyrl.js","webpack://motion-chat/./node_modules/moment/locale/sr.js","webpack://motion-chat/./node_modules/moment/locale/ss.js","webpack://motion-chat/./node_modules/moment/locale/sv.js","webpack://motion-chat/./node_modules/moment/locale/sw.js","webpack://motion-chat/./node_modules/moment/locale/ta.js","webpack://motion-chat/./node_modules/moment/locale/te.js","webpack://motion-chat/./node_modules/moment/locale/tet.js","webpack://motion-chat/./node_modules/moment/locale/tg.js","webpack://motion-chat/./node_modules/moment/locale/th.js","webpack://motion-chat/./node_modules/moment/locale/tk.js","webpack://motion-chat/./node_modules/moment/locale/tl-ph.js","webpack://motion-chat/./node_modules/moment/locale/tlh.js","webpack://motion-chat/./node_modules/moment/locale/tr.js","webpack://motion-chat/./node_modules/moment/locale/tzl.js","webpack://motion-chat/./node_modules/moment/locale/tzm-latn.js","webpack://motion-chat/./node_modules/moment/locale/tzm.js","webpack://motion-chat/./node_modules/moment/locale/ug-cn.js","webpack://motion-chat/./node_modules/moment/locale/uk.js","webpack://motion-chat/./node_modules/moment/locale/ur.js","webpack://motion-chat/./node_modules/moment/locale/uz-latn.js","webpack://motion-chat/./node_modules/moment/locale/uz.js","webpack://motion-chat/./node_modules/moment/locale/vi.js","webpack://motion-chat/./node_modules/moment/locale/x-pseudo.js","webpack://motion-chat/./node_modules/moment/locale/yo.js","webpack://motion-chat/./node_modules/moment/locale/zh-cn.js","webpack://motion-chat/./node_modules/moment/locale/zh-hk.js","webpack://motion-chat/./node_modules/moment/locale/zh-mo.js","webpack://motion-chat/./node_modules/moment/locale/zh-tw.js","webpack://motion-chat//Users/andreabianco/Documents/Developments/xcally_motion_next/motion-server/motion-chat/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://motion-chat/./node_modules/ng-csv/build/ng-csv.min.js"],"names":["angular","module","provider","this","defaults","factory","options","Flow","events","on","event","callback","push","$get","fn","opts","flow","extend","forEach","controller","$scope","$attrs","$parse","flowFactory","$eval","flowInit","flowObject","create","catchAllHandler","eventName","args","Array","prototype","slice","call","arguments","shift","$broadcast","apply","concat","$applyAsync","defaultPrevented","$on","off","$flow","hasOwnProperty","flowName","assign","directive","scope","element","attrs","isDirectory","isSingleFile","inputAttrs","flowAttrs","assignBrowse","bind","preventDefault","$timeout","promise","enter","dragEvent","fileDrag","dataTransfer","originalEvent","types","val","$apply","flowDragEnter","cancel","flowDragLeave","assignDrop","flowDropEnabled","$watch","value","unAssignDrop","fileSuccess","fileProgress","fileAdded","filesAdded","filesSubmitted","fileRetry","fileRemoved","fileError","uploadStart","complete","progress","error","eventArgs","string","name","charAt","toUpperCase","require","funcArgs","key","file","flowImg","fileReader","FileReader","readAsDataURL","onload","$set","target","result","transfers","files","uiView","$ViewDirectiveFill","$compile","$controller","$transitions","$view","$q","getControllerAs","parse","getResolveAs","restrict","priority","compile","tElement","initial","html","empty","$element","data","contents","cfg","$cfg","viewDecl","getTemplate","noop","resolveCtx","path","ResolveContext","trace","$uiView","link","controllerAs","resolveAs","locals","controllerInstance","children","registerControllerCallbacks","isString","component","kebobName","kebobString","tagRegexp_1","RegExp","deregisterWatch_1","directiveEl","filter","el","tagName","exec","ctrlInstance","$animate","$uiViewScroll","$interpolate","rootData","$context","_pluginapi","_rootViewContext","count","terminal","transclude","tAttrs","$transclude","previousEl","currentEl","currentScope","viewConfig","onloadExp","autoScrollExp","renderer","cb","then","leave","inherited","inheritedData","activeUIView","$type","id","fqn","config","configUpdated","updateView","fromParentTagConfig","fromParentTag","unregister","registerUIView","newScope","$new","animEnter","defer","animLeave","$uiViewData","$uiViewAnim","$animEnter","$animLeave","$$animLeave","$emit","cloned","clone","resolve","isDefined","remove","$destroy","_viewData_1","cleanupLastView","$inject","hasComponentImpl","_uiCanExitId","isFunction","$onInit","componentProvider","viewState","tail","state","self","hookOptions","uiOnParamsChanged","viewCreationTrans_1","getResolvable","onSuccess","$transition$","exiting","indexOf","toParams","params","fromParams","getNodeSchema","node","paramSchema","toSchema","treeChanges","map","reduce","unnestR","fromSchema","changedToParams","param","idx","type","equals","length","changedKeys_1","x","newValues","uiCanExit","id_1","cacheProp_1","prevTruthyAnswer_1","trans","redirectedFrom","criteria","onBefore","ids","when","TemplateFactory","_this","_useHttp","$http","$templateCache","$injector","$templateRequest","has","get","useHttpService","fromConfig","context","asTemplate","services","str","template","asComponent","fromString","templateUrl","fromUrl","templateProvider","fromProvider","fromComponentProvider","url","cache","headers","Accept","response","deps","providerFn","isArray","Resolvable","makeComponentTemplate","bindings","prefix","kebob","camelCase","kebobed","cmpDefs","Error","getBindings","getComponentBindings","input","attrName","attr","resolveName","res","join","def","isObject","bindToController","scopeBindings","bindingsObj","Object","keys","tuple","getStateHookBuilder","hookName","stateObject","hook","pathname","subContext","$$state","getLocals","$state$","undefined","Ng1LocationServices","$locationProvider","_urlListeners","_lp","createProxyFunctions","monkeyPatchPathParameterType","router","pathType","urlMatcherFactory","encode","toString","replace","m","decode","dispose","onChange","removeFrom","html5Mode","enabled","$sniffer","history","baseHref","_baseHref","$browser","$window","location","newUrl","$location","_runtimeServices","$rootScope","evt","_loc","mod_init","mod_util","mod_rtr","mod_state","mod_main","$uiRouterProvider","UIRouter","stateProvider","stateRegistry","stateService","decorator","viewService","_viewConfigFactory","urlService","_decodeParams","ng1LocationService","locationService","locationConfig","getProviderFor","serviceName","$urp","service","runBlock","$uiRouter","invoke","checkStrictDi","strictDi","resolvables","resolvable","annotate","resolveFn","watchDigests","uiRouter","urlRouterProvider","globals","run","$urlMatcherFactory","$state","$urlRouter","ctx","getTokens","getPolicy","async","applyPairs","$IsStateFilter","isFilter","is","$stateful","$IncludedByStateFilter","includesFilter","includes","StateProvider","func","definition","register","onInvalid","getNg1ViewConfigFactory","templateFactory","view","Ng1ViewConfig","hasAnyKey","obj","acc","ng1ViewsBuilder","parent","compKeys","nonCompKeys","allViewKeys","views","viewsObject","$default","pick","$name","normalized","ViewService","$uiViewName","uiViewName","$uiViewContextAnchor","uiViewContextAnchor","$id","loaded","load","paramValues","promises","getController","all","results","controllerProvider","isInjectable","UrlRouterProvider","injectableHandler","handler","match","$match","$stateParams","urlRouter","update","interceptDeferred","listen","rule","ruleFn","BaseUrlRule","identity","rules","otherwise","urlRules","what","deferIntercept","useAnchorScroll","$anchorScroll","scrollIntoView","__spreadArrays","s","i","il","r","k","a","j","jl","root","g","global","fromJson","JSON","toJson","stringify","toObj","_equals","o1","o2","t1","a1","a2","tup","arrayTuples","b","t","getTime","source","fnNames","latebind","bindFunction","fnName","inherit","extra","inArray","array","splice","pushTo","arr","deregAll","functions","defaultsList","_i","defaultVals","reverse","mergeR","memo","item","ancestors","first","second","n","propNames","objCopy","_prop","omit","collection","accept","find","mapObj","values","allTrueR","elem","anyTrueR","flattenR","pushR","uniqR","token","unnest","assertPredicate","predicateOrMap","errMsg","maxArrayLen","min","Math","_loop_1","keyValTuple","copy","src","dest","silenceUncaughtInPromise","catch","e","silentRejection","makeStub","methods","fnname","Glob","text","glob","split","regexpString","seg","regexp","matches","test","curry","curried","compose","start","pipe","funcs","prop","propEq","_val","not","and","fn1","fn2","or","any","ctor","constructor","v","pattern","struct","toStr","tis","isUndefined","isNull","o","isNullOrUndefined","isNumber","isDate","isRegExp","head","isPromise","Queue","_items","_limit","_evictListeners","onEvict","enqueue","items","evict","dequeue","size","clear","current","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","document","documentMode","window","console","bound","Function","ie9Console","fallbackConsole","maxLength","max","substr","padString","$1","toLowerCase","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","isRejection","stringifyPattern","_transitionRejection","seen","format","beforeAfterSubstr","char","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","Category","uiViewString","uiview","creationContext","normalizedCat","_tid","_rid","transLbl","Trace","_enabled","approximateDigests","_set","categories","parseInt","isNaN","category","enable","disable","traceTransitionStart","TRANSITION","traceTransitionIgnored","traceHookInvocation","step","HOOK","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","RESOLVE","traceResolvableResolved","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","UIVIEW","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","pairs","VIEWCONFIG","uivheader","mapping","_a","_b","uiv","sort","localeCompare","traceViewServiceEvent","viewConfigString","traceViewServiceUIViewEvent","UIRouterGlobals","lastStartedTransitionId","transitionHistory","successfulTransitions","transition","lazyLoadHook","entering","lazyLoad","lazyLoadState","originalTransition","orig","targetState","identifier","$url","parts","sync","registerLazyLoadHook","transitionService","lazyLoadFn","states","_state","err","DefType","hasOwn","Param","urlConfig","paramName","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","getStaticDefaultValue","isShorthand","$$fn","unwrapShorthand","getParamDeclaration","urlType","paramTypes","CONFIG","PATH","getType","arrayDefaults","arrayParamNomenclature","arrayMode","$asArray","isOptional","raw","squash","defaultPolicy","getSquashPolicy","defaultSquashPolicy","from","to","configuredKeys","getReplace","params_1","changed","values1","values2","validates","isDefaultValue","replaceSpecialValues","_defaultValueCache","defaultValue","getDefaultValue","$normalize","isSearch","encoded","ParamType","$subPattern","sub","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","left","right","paramTypeFn","wrapperFn","$arrayMode","makeDefaultType","ParamTypes","typeQueue","defaultTypes","definitionFn","_flushTypeQueue","valToString","defaultTypeBase","String","query","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","capture","Date","valueOf","l","json","StateParams","$inherit","newParams","$current","$to","parentParams","parents","inheritList","PathNode","stateOrNode","parameters","applyRawParams","pDef","paramDef","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","buildPath","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","toNode","toParamVals","incomingParamVals","fromParamVals","ownParamVals","reloadState","node1","node2","retained","keep","nonDynamicParams","retainedWithToParams","retainedNode","matching","pathA","pathB","done","nodeA","nodeB","predicate","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","arg1","policy","resolved","literal","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","_path","addResolvables","newResolvables","resolvePath","matchedWhens","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","injector","_injector","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","_disposed","_disposables","_plugins","disposable","d","ignored","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateDec","newStateDec","parsed","substring","parseUrl","isMatcher","navigable","append","getNavigableBuilder","isRoot","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","p","provide","literal2Resolvable","useFactory","dependencies","useClass","useValue","useExisting","tuple2Resolvable","item2Resolvable","decl","StateBuilder","matcher","paramFactory","builders","parentName","urlParams","nonUrlParams","builder","build","chain","parentFn","segments","pop","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","ref","matchingKeys","isStateDeclaration","isState","StateQueueManager","listeners","queue","flush","registered","orphans","previousQueueLength","getState","notifyListeners","listener","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","prev","abstract","rulesApi","urlRuleFactory","StateRegistry","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","property","builderFunction","TargetState","_stateRegistry","_identifier","_params","_options","_definition","relative","exists","valid","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","reverseDepthSort","baseHookOptions","criteriaMatchPath","traceData","transitionHook","reverseSort","factor","depthDelta","isCreate","hookPhase","reg","getHooks","matchState","criterion","toMatch","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","mn","pathtype","isStateHook","every","makeEvent","hooks","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","TransitionHookPhase","TransitionHookScope","RejectType","Rejection","message","detail","isRejectionPromise","superseded","rejection","SUPERSEDED","redirected","invalid","INVALID","IGNORED","aborted","ABORTED","errored","ERROR","normalize","toPromise","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","defaultOptions","TransitionHook","stateContext","isSuperseded","isActive","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","runAllHooks","logError","defaultErrorHandler","notCurrent","getNotCurrentRejection","handleError","handleResult","handleHookResult","isTargetState","_aborted","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","addResolvable","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirect","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","RESOLVE_HOOK_PRIORITY","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","urlOptions","ignoredHook","ignoredReason","_ignoredReason","pending","abort","invalidTransitionHook","defaultTransOpts","notify","reload","supercede","custom","TransitionService","_router","_transitionCount","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","onCreate","onStart","onExit","onRetain","onEnter","onFinish","onError","hooksArray","Phase","TH","paths","NORMAL_SORT","SYNCHRONOUS","_defineEvent","CREATE","BEFORE","RUN","SUCCESS","STATE","_definePathType","cmpByPhase","hookScope","fns","addCoreResolves","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","hashPrefix","newprefix","host","port","protocol","caseInsensitive","strictMode","__assign","ParamFactory","fromSearch","UrlMatcherFactory","UrlMatcher","globalConfig","strict","decodeParams","object","UrlRouter","urlParts","compareFn","read","urlMatcher","href","absolute","isHtml5","appendBasePath","slash","cfgPort","defineProperty","enumerable","configurable","UrlRuleFactory","makeRule","_what","fromUrlMatcher","fromState","fromRegExp","_handler","details","matchPriority","optional","search","stateOrDecl","transitionTo","sticky","Number","isUrlRule","defaultRuleSortFn","getHandlerFn","cmp","prioritySort","weights","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","group","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","wrapper","UrlService","newurl","best","go","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","_location","_history","BrowserLocationConfig","_isHtml5","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","setPrototypeOf","__proto__","__","HashLocationService","_super","title","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","PushStateLocationService","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","keyValsToObjectR","accum","getParams","queryString","orEmptyString","beforehash","buildUrl","loc","searchObject","locationPluginFactory","serviceClass","configurationClass","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","allTuples","uiViews","available","active","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","ARIA_DISABLE_ATTR","ngAriaModule","info","angularVersion","ariaHidden","ariaChecked","ariaReadonly","ariaDisabled","ariaRequired","ariaInvalid","ariaValue","tabindex","bindKeydown","bindRoleForClick","watchExpr","ariaAttr","nativeAriaNodeNames","negate","ariaCamelName","isNodeOneOf","boolVal","newConfig","$$watchExpr","nodeTypeArray","nodeName","$aria","shouldAttachAttr","normalizedAttr","allowNonAriaNodes","shouldAttachRole","role","shape","getShape","post","ngModel","needsTabIndex","ngAriaWatchModelValue","$modelValue","newVal","$viewValue","$isEmpty","needsAriaValuemin","needsAriaValuemax","needsAriaValuenow","$observe","$validators","required","$invalid","ngMessages","ngClick","ngKeydown","ngKeypress","ngKeyup","keyCode","which","isContentEditable","$event","readOnly","pristine","resetable","starWidth","starHeight","canelWidth","cancelHeight","rated","reset","beforeRated","beforeReset","isTouch","navigator","msMaxTouchPoints","orgValue","starPartWidth","steps","garbage","getValue","index","getStartParts","getStarOffset","ratio","isSelected","removeRating","rating","setValue","tmpValue","put","IndexController","$mdDialog","localStorageService","api","STORAGE_LAYOUT","STORAGE_VISITOR","vm","updateStorage","storage","set","toggle","up","cmd","layout","postMessage","$$phase","settings","status","div_color","color","text_color","textColor","client_height","documentElement","clientHeight","innerHeight","client_width","clientWidth","style","setProperty","tg","visitorStorage","layoutStorage","visitor","interaction","alignment","online","exceeded","maxInteractions","openedInteractions","isOnline","hideWhenOffline","createElement","appendChild","sheet","insertRule","close","confirm","querySelector","clickOutsideToClose","closingQuestion","ok","show","chatInteraction","customUpdate","closed","closeReason","closedAt","moment","$promise","download","deferred","getMessages","intid","includeAll","_map","rows","row","sender","direction","customerAlias","ContactId","agentIdentifier","UserId","agentAlias","User","alias","fullname","body","createdAt","getHeaderShape","header_shape","CHAT_STATUSES","offline","defaultTitle","header_online","header_offline","addEventListener","routeRun","cursor","hide","_forIn","_isNil","routeConfig","$stateProvider","$urlRouterProvider","$httpProvider","localStorageServiceProvider","STORAGE_PREFIX","Pragma","setPrefix","waitingTemplate","onlineTemplate","offlineTemplate","chatTemplate","unmanagedTemplate","closingTemplate","ClosingController","$mdToast","errors","toast","simple","textContent","formSubmitFailureMessage","toastClass","position","stopLoading","loading","goToIfTime","form","upColor","downColor","userForm","$setPristine","$setUntouched","enableDownload","submit","_merge","ratingType","customer","formSubmitSuccessMessage","finally","skip","apiService","$resource","paramDefaults","baseUrl","remote","chatWebsite","method","getFields","uploadAttachment","transformRequest","downloadAttachment","chatMessage","ChatController","$interval","$document","emojiArea","getMessagesInterval","getInteractionInterval","lastMessageId","scrollToBottomOfChat","getElementsByClassName","scrollTop","scrollHeight","sendMessage","chatMessageError","emojioneArea","setText","getInteraction","disposition","reply","getText","shiftKey","includeAgent","added","_find","messages","emojiOptions","watchEmbedData","fontSmiley","emoji","linkTarget","showMenu","replyMessage","$","placeholder","placeholderMessage","keyup","editor","ready","setFocus","reply_button","fd","FormData","sendAttachment","AttachmentId","_values","OfflineController","fromKey","initialFields","typeField","optJsonFormData","showLeafArrayIndexes","includeNullValues","onSubmitSuccess","fields","_cloneDeep","initUploadButton","formItem","uploadItem","button","label","css","trigger","click","props","maxSizeMB","some","sizeErrMessage","removeFileItem","setupFileInput","multipleUpload","setAttribute","makeFileOptionsVisible","fileOpts","lastOpt","mapKeyOffline","_random","field","helpText","isHTML","checkHTML","cmField","uploadFields","payLoad","isFormDataPayload","isJsonPayload","payload","jsonToFormData","initialFormData","Promise","reject","OnlineController","getAnonymous","disableItem","chatInteractionId","channel","mapKey","variable","referer","customerIp","enableCustomerWriting","UnmanagedController","note","WaitingController","called","open","unload","xhr","XMLHttpRequest","setRequestHeader","send","readyState","removeEventListener","toTrustedFilter","$sce","trustAsHtml","constant","ngEnter","getElementById","div","startTime","sentAt","createTextNode","myWindow","write","innerHTML","focus","print","printElement","elemToPrint","$mdGestureProvider","skipClickHijack","exports","globalThis","isJsonObject","Blob","isGlobalFormDataPresent","getDefaultFormData","convertRecursively","jsonObject","formData","parentKey","propName","FileList","toISOString","mergedOptions","carry","objectToMerge","objectKey","defineLocale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","h","hh","dd","M","MM","y","yy","dayOfMonthOrdinalParse","ordinal","number","week","dow","doy","pluralForm","plurals","pluralize","u","withoutSuffix","isFuture","f","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","relativeTimeWithPlural","num","forms","standalone","isFormat","day","period","w","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutationTable","softMutation","mutation","lastNumber","monthsParse","monthsRegex","minWeekdaysParse","weekdaysParse","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","translate","ll","lll","llll","output","plural","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","month","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","offset","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","now","$0","$2","isUpper","eifelerRegelAppliesToNumber","units","translateSingular","special","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","days","numbersNouns","numberNoun","hundred","floor","ten","one","word","numberAsNoun","time","hm","processHoursFunction","nominative","accusative","genitive","webpackContext","req","webpackContextResolve","__webpack_require__","code","debug","urlSanitizationWhitelist","aHrefSanitizationWhitelist","stringifyField","decimalSep","isFloat","toLocaleString","quoteStrings","txtDelim","isFinite","header","fieldSep","c","columnOrder","addByteOrderMarker","isSpecialChar","getSpecialChar","filename","charset","csv","buildCSV","getFilename","addClass","ngCsvLoadingClass","csvHeader","csvColumnOrder","csvLabel","removeClass","msSaveOrOpenBlob","msSaveBlob","URL","createObjectURL"],"sourceRoot":""}
\ No newline at end of file
index b279c83..063f261 100644 (file)
@@ -23,6 +23,6 @@
  * https://github.com/angular/material
  * @license MIT
  * v1.2.3
- */html,body{height:100%;position:relative}body{margin:0;padding:0}[tabindex="-1"]:focus{outline:none}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:normal;background-color:inherit;text-align:left;border:none;padding:0;margin:0}select,button,textarea,input{vertical-align:baseline}input[type=reset],input[type=submit],html input[type=button],button{cursor:pointer;-webkit-appearance:button}input[type=reset][disabled],input[type=submit][disabled],html input[type=button][disabled],button[disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(0.4, 0, 0.2, 1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-ripple{position:absolute;transform:translate(-50%, -50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(0.25, 0.8, 0.25, 1),border .9s cubic-bezier(0.25, 0.8, 0.25, 1),width .9s cubic-bezier(0.25, 0.8, 0.25, 1),height .9s cubic-bezier(0.25, 0.8, 0.25, 1),opacity .9s cubic-bezier(0.25, 0.8, 0.25, 1),transform .9s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-ripple.md-ripple-scaled{transform:translate(-50%, -50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(0.25, 0.8, 0.25, 1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0px)}@media(min-width: 960px){.md-padding{padding:16px}}html[dir=rtl],html[dir=ltr],body[dir=rtl],body[dir=ltr]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}html,body{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:default;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-0.01em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-0.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.01em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.01em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.02em}.md-button{letter-spacing:.01em}button,select,html,textarea,input{font-family:Roboto,"Helvetica Neue",sans-serif}select,button,textarea,input{font-size:100%}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}.md-panel-inner-wrapper{position:fixed}._md-panel-offscreen{left:-9999px}._md-panel-hidden{display:none}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:relative}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(0.4, 0, 1, 1)}.md-panel._md-panel-animate-scale-out,.md-panel._md-panel-animate-fade-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:fixed;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(0.4, 0, 1, 1)}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:transparent;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] .md-show-clear-button button{display:block;position:absolute;right:0;top:20px;width:30px;height:30px}md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:30px}[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:0;padding-left:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap md-input-container,md-autocomplete md-autocomplete-wrap input{flex:1 1 0;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:none;background:transparent;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete .md-show-clear-button button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:transparent;margin:auto 5px}md-autocomplete .md-show-clear-button button:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-autocomplete .md-show-clear-button button:focus{outline:none}md-autocomplete .md-show-clear-button button:focus:after{transform:scale(1);opacity:1}md-autocomplete .md-show-clear-button button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0) scale(0.9)}md-autocomplete .md-show-clear-button button md-icon path{stroke-width:0}md-autocomplete .md-show-clear-button button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete .md-show-clear-button button.ng-leave{transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast: active){md-autocomplete input{border:1px solid #fff}md-autocomplete .md-autocomplete-suggestion:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container,.md-standard-list-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);z-index:100;height:100%}.md-virtual-repeat-container.md-autocomplete-suggestions-container .highlight,.md-standard-list-container.md-autocomplete-suggestions-container .highlight{font-weight:bold}.md-standard-list-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;overflow-y:auto;padding:0}.md-virtual-repeat-container.md-not-found,.md-standard-list-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions .md-autocomplete-suggestion{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions .md-autocomplete-suggestion:focus{outline:none}.md-autocomplete-suggestions .md-autocomplete-suggestion:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast: active){md-autocomplete,.md-autocomplete-suggestions{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed !important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity 400ms}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0, 80px, 0);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0, 100%, 0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0, 80px, 0) !important}md-bottom-sheet.ng-leave-active{transform:translate3d(0, 100%, 0) !important;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:none}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media(max-width: 960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n + 1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media(min-width: 960px)and (max-width: 1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media(min-width: 1280px)and (max-width: 1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media(min-width: 1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast: active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:2px;box-sizing:border-box;user-select:none;outline:none;border:0;padding:0 8px;margin:6px 8px;background:transparent;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(0.25, 0.8, 0.25, 1),background-color .4s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){min-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){line-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){font-size:13px}.md-button:focus{outline:none}.md-button:hover,.md-button:focus{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:none}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button.md-fab[disabled]{box-shadow:none}.md-button:not([disabled]).md-raised.md-focused,.md-button:not([disabled]).md-fab.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-raised:active,.md-button:not([disabled]).md-fab:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:inherit;background-clip:padding-box;overflow:hidden;-webkit-transform:translateZ(0)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate3d(0, 42px, 0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0, 41px, 0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate3d(0, -42px, 0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0, -43px, 0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0px 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0px 0px 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0px 2px 2px 0px}@media screen and (-ms-high-contrast: active){.md-button.md-raised,.md-button.md-fab{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar md-icon>svg{height:inherit;width:inherit}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card>img,md-card>md-card-header img,md-card md-card-title-media img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card md-card-actions{margin:8px}md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast: active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-inline-form md-checkbox{margin-top:14px;margin-bottom:auto}md-checkbox{box-sizing:border-box;display:inline-block;white-space:nowrap;cursor:pointer;outline:none;user-select:none;position:relative;min-width:18px;min-height:48px}.md-dense>md-checkbox:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) md-checkbox:not(.md-dense-disabled){min-height:36px}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:18px;height:18px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4px;top:0px;display:table;width:6px;height:12px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:table;width:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-container{top:auto;left:auto;right:auto;margin:3px;margin-top:21px}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-top:10px;margin-bottom:auto;margin-left:36px}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:36px}md-checkbox .md-label:empty{margin-left:24px;margin-right:0}[dir=rtl] md-checkbox .md-label:empty{margin-left:0}[dir=rtl] md-checkbox .md-label:empty{margin-right:24px}md-input-container .md-checkbox-link-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;cursor:pointer;top:-21px;margin-left:18px;margin-right:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-left:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-right:18px}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-name,.md-contact-suggestion .md-contact-email{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}md-chips{display:flex}.md-chips{display:flex;flex-wrap:wrap;flex-grow:1;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:13px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:"";display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:28px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:28px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:none}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;min-height:18px;min-width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;flex-grow:1;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input{width:100%}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=url],.md-chips .md-chip-input-container input[type=text]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=url]:focus,.md-chips .md-chip-input-container input[type=text]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:transparent;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast: active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible !important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(0.25, 0.8, 0.25, 1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}.md-calendar-month-label.md-calendar-label-clickable{cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:normal}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;vertical-align:middle}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:none;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:"";speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:none;background:transparent;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-16px;top:13.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label .md-input{float:none}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}._md-datepicker-has-triangle-icon{padding-right:18px;margin-right:-18px}[dir=rtl] ._md-datepicker-has-triangle-icon{padding-right:0;padding-left:18px}[dir=rtl] ._md-datepicker-has-triangle-icon{margin-right:auto;margin-left:-18px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:transparent;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:transparent;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(0.5, 0, 0.25, 1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:none}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;bottom:-2.5px;transform:translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-value>label,.md-datepicker-open.md-input-has-placeholder>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(0.25, 0.8, 0.25, 1);transition-delay:.125s}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 100%) scale(0.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>*:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:none}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast: active){md-dialog{border:1px solid #fff}}@media(max-width: 959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-divider,.layout-gt-xs-row:not(.layout-sm-column)>md-divider,.layout-sm-row:not(.layout-sm-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-sm-row:not(.layout-md-column)>md-divider,.layout-md-row:not(.layout-md-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-md-row:not(.layout-lg-column)>md-divider,.layout-lg-row:not(.layout-lg-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) md-fab-trigger,md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible !important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all 200ms ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-0.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-0.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent !important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile>figure,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile-footer{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-header,md-grid-list md-grid-tile md-grid-tile-footer{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-footer h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast: active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0px;vertical-align:middle}md-input-container:after{content:"";display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container textarea,md-input-container input[type=text],md-input-container input[type=password],md-input-container input[type=datetime],md-input-container input[type=datetime-local],md-input-container input[type=date],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week],md-input-container input[type=number],md-input-container input[type=email],md-input-container input[type=url],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=color]{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:30px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:30px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:" *";font-size:13px;vertical-align:top}md-input-container label:not(.md-no-float):not(.md-container-ignore),md-input-container .md-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;padding-right:0;z-index:1;transform:translate3d(0, 28px, 0) scale(1);transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-left:0}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-right:2px}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{transform-origin:right top}md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-input-has-value .md-placeholder{padding-left:3px;padding-right:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-left:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-right:3px}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0, 30px, 0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0, 24px, 0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value):not(.md-input-has-placeholder) input:not(:focus){color:transparent}md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:none;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;transition:border-color .4s cubic-bezier(0.25, 0.8, 0.25, 1);width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{padding-left:2px}[dir=rtl] md-input-container .md-input{padding-right:0}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:none}md-input-container .md-input:invalid{outline:none;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none !important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-message-animation,md-input-container .md-char-counter{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);opacity:1;margin-top:0;padding-top:8px}md-input-container .md-input-message-animation:not(.md-char-counter),md-input-container .md-char-counter:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter-prepare{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter:not(.ng-enter-active){opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0, 6px, 0) scale(0.75);transition:transform cubic-bezier(0.25, 0.8, 0.25, 1) .4s,width cubic-bezier(0.25, 0.8, 0.25, 1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container.md-input-focused .md-input,md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}md-input-container .md-input[disabled],[disabled] md-input-container .md-input{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder{width:calc(100% - 36px);padding:0}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left.md-icon-right>label .md-placeholder{width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:"";display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:transparent;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast: active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0px 8px 0px}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1.2em}md-list.md-dense:not(.md-dense-disabled) md-list-item,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner{min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item::before,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner::before{content:"";min-height:40px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner md-icon:first-child{width:20px;height:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:36px;margin-top:4px;margin-bottom:4px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px;margin-top:6px;margin-bottom:6px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container .md-secondary.md-button,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container .md-secondary.md-button{margin-top:4px;margin-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container md-checkbox:not(.md-dense-disabled),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container md-checkbox:not(.md-dense-disabled){min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px;padding-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style::before{content:"";min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style::before{content:"";min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}md-list.md-dense:not(.md-dense-disabled) .md-subheader-inner{padding-top:12px;padding-bottom:12px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0px 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner::before{content:"";min-height:inherit;visibility:hidden;display:inline-block}md-list-item.md-no-proxy,md-list-item .md-no-style{position:relative;padding:0px 16px;flex:1 1 auto}md-list-item.md-no-proxy.md-button,md-list-item .md-no-style.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item.md-no-proxy.md-button,[dir=rtl] md-list-item .md-no-style.md-button{text-align:right}md-list-item.md-no-proxy.md-button>.md-ripple-container,md-list-item .md-no-style.md-button>.md-ripple-container{border-radius:0}md-list-item.md-no-proxy:focus,md-list-item .md-no-style:focus{outline:none}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0 !important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item::before,md-list-item .md-list-item-inner::before{content:"";min-height:48px;visibility:hidden;display:inline-block}md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item .md-list-item-inner md-checkbox.md-secondary{align-self:center}md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label{display:none}md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item>md-checkbox,md-list-item .md-list-item-inner>md-checkbox{width:24px;min-height:40px;margin-left:0px;margin-right:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-left:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-right:0px}md-list-item .md-secondary-container,md-list-item .md-list-item-inner .md-secondary-container{display:flex;align-items:center;position:relative;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-left:0}md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-checkbox,md-list-item .md-list-item-inner .md-secondary-container md-checkbox{margin:0 6px;padding:0 8px;min-height:40px}md-list-item .md-secondary-container md-checkbox:last-child,md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{width:40px;margin-right:0}[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-switch,md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-secondary-container md-switch,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item>p,md-list-item>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item .md-list-item-inner>.md-list-item-inner>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.01em;margin:0 0 0 0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.01em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.01em;margin:0 0 0 0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:"";min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list-item.md-2-line>md-icon:first-child,md-list-item.md-2-line>.md-no-style>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:"";min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>md-icon:first-child,md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px;max-height:calc(100vh - 10px);overflow:auto}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:200ms}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:200ms;transition-delay:100ms}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:32px}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media(max-width: 959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media(min-width: 960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px}md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:right}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:right;margin:0 8px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:left}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:normal;border-radius:0px;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:"▼";position:absolute;top:0px;speak:none;transform:rotate(270deg) scaleY(0.45) scaleX(0.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(0.45) scaleX(0.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:none;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(0.35, 0, 0.25, 1)}.md-button._md-nav-button:focus{outline:none}md-nav-ink-bar{background-color:#000;position:absolute;bottom:0;left:0;width:100%;height:2px;transform-origin:left top;will-change:transform;transition:transform .125s cubic-bezier(0.35, 0, 0.25, 1)}md-nav-ink-bar.ng-animate{transition:none}md-nav-extra-content{min-height:48px;padding-right:12px}@keyframes indeterminate-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block;transform:scale(1, 1)}[dir=rtl] md-progress-circular{transform:scale(-1, 1)}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 1568.63ms linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0 !important;margin-bottom:0 !important;transform:scale(1, 1)}[dir=rtl] md-progress-linear{transform:scale(-1, 1)}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0, 0) scale(1, 1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px !important;background-position:0px -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(0.39, 0.575, 0.565, 1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent !important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(0.3, 1)}100%{opacity:0;transform:translateX(-50%) scale(0, 1)}}@keyframes buffer{0%{opacity:1;background-position:0px -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(0.1);animation-timing-function:linear}36.6%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1)}69.15%{transform:scaleX(0.83);animation-timing-function:cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.1666666667%;animation-timing-function:linear}20%{left:-105.1666666667%;animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841)}19.15%{transform:scaleX(0.57);animation-timing-function:cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535)}44.15%{transform:scaleX(0.91);animation-timing-function:cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(0.15, 0, 0.5150584, 0.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796)}100%{left:117.3888888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(0.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group:focus{outline:none}md-radio-group.md-focused.ng-not-empty .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group.md-focused.ng-empty>md-radio-button:first-child .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-radio-button,.layout-xs-row>md-radio-button{margin-bottom:0}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-radio-button,.layout-gt-xs-row:not(.layout-sm-column)>md-radio-button,.layout-sm-row:not(.layout-sm-column)>md-radio-button{margin-bottom:0}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-sm-row:not(.layout-md-column)>md-radio-button,.layout-md-row:not(.layout-md-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-md-row:not(.layout-lg-column)>md-radio-button,.layout-lg-row:not(.layout-lg-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button{margin-bottom:0}}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px 10px 2px 6px;box-sizing:border-box;margin-top:0;margin-bottom:0}.md-inline-form md-radio-group md-radio-button .md-label{top:4px}.md-inline-form md-radio-group md-radio-button .md-container{margin-top:2px}@media screen and (-ms-high-contrast: active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) md-select:not([placeholder]) .md-select-placeholder span:first-child{transform:translate(-2px, -22px) scale(0.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto !important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transition-delay:100ms}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}.md-inline-form md-select{margin-top:20px}md-input-container>md-select,.md-inline-form md-input-container>md-select{margin-top:0px}md-input-container>md-select{order:2}md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after{content:" *";font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex}md-select[required].ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select.ng-required.ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:" *";font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x;padding-bottom:2px;padding-top:1px;transform:translateY(1px)}md-select:focus{outline:none}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]):focus .md-select-value{border-bottom-style:solid;border-bottom-width:2px;padding-bottom:0px}md-input-container md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px}md-input-container md-select[disabled] .md-select-value{background-position:bottom -1px left 0}md-input-container md-select .md-select-value{min-height:26px;border-bottom-width:1px;padding-bottom:1px}md-input-container md-select .md-select-value.md-select-placeholder{padding-left:0;padding-right:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-left:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-right:0}.md-select-value{display:flex;align-items:center;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-bottom-width:1px;border-bottom-style:solid;background-color:rgba(0,0,0,0);position:relative;box-sizing:content-box;min-width:88px;min-height:26px;margin-bottom:auto;-ms-flex-item-align:start;flex-grow:1}[dir=rtl] .md-select-value{padding-left:2px}[dir=rtl] .md-select-value{padding-right:0}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:right;width:24px;transform:translateY(-2px);font-size:1.2rem}[dir=rtl] .md-select-value .md-select-icon{align-items:flex-start}[dir=rtl] .md-select-value .md-select-icon{text-align:left}.md-select-value .md-select-icon:after{display:block;content:"▼";position:relative;top:2px;right:-4px;left:auto;speak:none;font-size:13px;transform:scaleY(0.5)}[dir=rtl] .md-select-value .md-select-icon:after{right:auto}[dir=rtl] .md-select-value .md-select-icon:after{left:-4px}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:none}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast: active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:18px;height:18px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4px;top:0px;display:table;width:6px;height:12px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:table;width:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-locked-open-remove.md-closed{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-closed.md-locked-open-add{position:static;display:flex;transform:translate3d(0%, 0, 0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0%, 0, 0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%, 0, 0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%, 0)}.md-sidenav-right.md-closed{transform:translate(0%, 0)}@media(min-width: 600px){md-sidenav{max-width:400px}}@media(max-width: 456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast: active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(0.7)}30%{transform:scale(1)}100%{transform:scale(0.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(0.7)}50%{transform:scale(0.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(0.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider *:after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:none;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%, -50%, 0);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(0.7);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:"";position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(0.4) translate3d(0, 67.5px, 0);transition:all .3s cubic-bezier(0.35, 0, 0.25, 1)}md-slider .md-sign:after{position:absolute;content:"";left:0px;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0, -8px, 0);transition:all .2s cubic-bezier(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0px}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(0.7);opacity:0;transition:all .35s cubic-bezier(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(0.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:none}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-track-ticks,md-slider:not([md-discrete]) .md-sign{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(0.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(0.35, 0, 0.25, 1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0, 0, 0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0, 0, 0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(0.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(0.4) translate3d(67.5px, 0, 0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0, -8px, 0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0, 0, 0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>*:first-child:not(md-slider),md-slider-container>*:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:color,max-width}md-slider-container>*:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>*:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>*:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>*:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>*:first-child:not(md-slider),md-slider-container[md-vertical]>*:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast: active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute !important;transform:translate3d(-9999px, -9999px, 0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0, 0, 0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0px 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0px 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0 0 0 0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}[md-swipe-left],[md-swipe-right]{touch-action:pan-y}[md-swipe-up],[md-swipe-down]{touch-action:pan-x}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:none;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:0px;margin-left:8px}md-switch.md-inverted .md-container{margin-right:initial;margin-left:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-right:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-left:initial}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0, 0, 0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%, 0, 0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:none;height:20px;width:20px;border-radius:50%;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb-container,md-switch:not(.md-dragging) .md-thumb{transition:all .08s linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:.05s}@media screen and (-ms-high-contrast: active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom]>md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom]>md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate(0, 0)}md-tabs-wrapper md-prev-button,md-tabs-wrapper md-next-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(0.35, 0, 0.25, 1)}md-tabs-wrapper md-prev-button:focus,md-tabs-wrapper md-next-button:focus{outline:none}md-tabs-wrapper md-prev-button.md-disabled,md-tabs-wrapper md-next-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-prev-button.ng-leave,md-tabs-wrapper md-next-button.ng-leave{transition:none}md-tabs-wrapper md-prev-button md-icon,md-tabs-wrapper md-next-button md-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}[dir=rtl] md-tabs-wrapper md-prev-button,[dir=rtl] md-tabs-wrapper md-next-button{transform:rotateY(180deg) translateY(-50%)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate(-50%, -50%) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:"";display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:flex;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);position:absolute;left:0;transform:translate(0, 0)}md-pagination-wrapper:after{content:"";display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;justify-content:center}md-pagination-wrapper md-tab-item{min-width:72px}@media(min-width: 600px){md-pagination-wrapper md-tab-item{min-width:160px}}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:flex;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);overflow:auto;transform:translate(0, 0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.ng-leave,md-tab-content.md-no-transition{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;visibility:hidden}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;visibility:hidden}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div{flex:1 0 100%;min-width:0}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left .125s cubic-bezier(0.35, 0, 0.25, 1),right .25s cubic-bezier(0.35, 0, 0.25, 1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(0.35, 0, 0.25, 1),right .125s cubic-bezier(0.35, 0, 0.25, 1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px;transition:background-color .35s cubic-bezier(0.35, 0, 0.25, 1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused,.md-tab:focus{box-shadow:none;outline:none}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs,md-toolbar+md-dialog-content md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 8px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast .md-toast-content{display:flex;flex-direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 16px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0, 0, 0) rotateZ(0deg);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);justify-content:flex-start}md-toast .md-toast-content::before{content:"";min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content,md-toast.md-swipedown .md-toast-content{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0, 100%, 0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0, -100%, 0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0, 0, 0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0, 100%, 0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0, -50%, 0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0, 50%, 0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0, -100%, 0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:8px}[dir=rtl] md-toast .md-button{margin-right:8px}[dir=rtl] md-toast .md-button{margin-left:0}@media(max-width: 959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0, -50%, 0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0, 50%, 0)}}@media(min-width: 960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%, 0, 0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%, 0, 0)}}@media(min-width: 1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast: active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden !important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar *:before,md-toolbar *:after{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools md-checkbox{margin:inherit}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.ng-animate,.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast: active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media(min-width: 0)and (max-width: 959px)and (orientation: portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media(min-width: 0)and (max-width: 959px)and (orientation: landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}.md-tooltip{display:inline-block;pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{transform-origin:right center;margin-left:-24px}@media(min-width: 960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{transform:scale(0)}.md-tooltip.md-show{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms;transform:scale(1);opacity:.9}.md-tooltip.md-hide{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transform:scale(0);opacity:0}.md-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-truncate.md-clip{text-overflow:clip}.md-truncate.flex{width:0}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0px 1px 5px 0px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0px 1px 8px 0px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 5px 8px 0px rgba(0,0,0,.14),0px 1px 14px 0px rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0px 4px 5px -2px rgba(0,0,0,.2),0px 7px 10px 1px rgba(0,0,0,.14),0px 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0px 5px 6px -3px rgba(0,0,0,.2),0px 9px 12px 1px rgba(0,0,0,.14),0px 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0px 6px 6px -3px rgba(0,0,0,.2),0px 10px 14px 1px rgba(0,0,0,.14),0px 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0px 6px 7px -4px rgba(0,0,0,.2),0px 11px 15px 1px rgba(0,0,0,.14),0px 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0px 7px 9px -4px rgba(0,0,0,.2),0px 14px 21px 2px rgba(0,0,0,.14),0px 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0px 8px 9px -5px rgba(0,0,0,.2),0px 15px 22px 2px rgba(0,0,0,.14),0px 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0px 8px 10px -5px rgba(0,0,0,.2),0px 16px 24px 2px rgba(0,0,0,.14),0px 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0px 8px 11px -5px rgba(0,0,0,.2),0px 17px 26px 2px rgba(0,0,0,.14),0px 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0px 9px 11px -5px rgba(0,0,0,.2),0px 18px 28px 2px rgba(0,0,0,.14),0px 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0px 9px 12px -6px rgba(0,0,0,.2),0px 19px 29px 2px rgba(0,0,0,.14),0px 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 20px 31px 3px rgba(0,0,0,.14),0px 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 21px 33px 3px rgba(0,0,0,.14),0px 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0px 10px 14px -6px rgba(0,0,0,.2),0px 22px 35px 3px rgba(0,0,0,.14),0px 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0px 11px 14px -7px rgba(0,0,0,.2),0px 23px 36px 3px rgba(0,0,0,.14),0px 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast: active){md-whiteframe{border:1px solid #fff}}@media print{md-whiteframe,[md-whiteframe]{background-color:#fff}}[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none !important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.offset-0,.flex-offset-0,.layout-margin .flex-offset-0,.layout-margin .offset-0{margin-left:0}[dir=rtl] .offset-0,[dir=rtl] .flex-offset-0,[dir=rtl] .layout-margin .flex-offset-0,[dir=rtl] .layout-margin .offset-0{margin-left:auto;margin-right:0}.offset-5,.flex-offset-5,.layout-margin .flex-offset-5,.layout-margin .offset-5{margin-left:5%}[dir=rtl] .offset-5,[dir=rtl] .flex-offset-5,[dir=rtl] .layout-margin .flex-offset-5,[dir=rtl] .layout-margin .offset-5{margin-left:auto;margin-right:5%}.offset-10,.flex-offset-10,.layout-margin .flex-offset-10,.layout-margin .offset-10{margin-left:10%}[dir=rtl] .offset-10,[dir=rtl] .flex-offset-10,[dir=rtl] .layout-margin .flex-offset-10,[dir=rtl] .layout-margin .offset-10{margin-left:auto;margin-right:10%}.offset-15,.flex-offset-15,.layout-margin .flex-offset-15,.layout-margin .offset-15{margin-left:15%}[dir=rtl] .offset-15,[dir=rtl] .flex-offset-15,[dir=rtl] .layout-margin .flex-offset-15,[dir=rtl] .layout-margin .offset-15{margin-left:auto;margin-right:15%}.offset-20,.flex-offset-20,.layout-margin .flex-offset-20,.layout-margin .offset-20{margin-left:20%}[dir=rtl] .offset-20,[dir=rtl] .flex-offset-20,[dir=rtl] .layout-margin .flex-offset-20,[dir=rtl] .layout-margin .offset-20{margin-left:auto;margin-right:20%}.offset-25,.flex-offset-25,.layout-margin .flex-offset-25,.layout-margin .offset-25{margin-left:25%}[dir=rtl] .offset-25,[dir=rtl] .flex-offset-25,[dir=rtl] .layout-margin .flex-offset-25,[dir=rtl] .layout-margin .offset-25{margin-left:auto;margin-right:25%}.offset-30,.flex-offset-30,.layout-margin .flex-offset-30,.layout-margin .offset-30{margin-left:30%}[dir=rtl] .offset-30,[dir=rtl] .flex-offset-30,[dir=rtl] .layout-margin .flex-offset-30,[dir=rtl] .layout-margin .offset-30{margin-left:auto;margin-right:30%}.offset-35,.flex-offset-35,.layout-margin .flex-offset-35,.layout-margin .offset-35{margin-left:35%}[dir=rtl] .offset-35,[dir=rtl] .flex-offset-35,[dir=rtl] .layout-margin .flex-offset-35,[dir=rtl] .layout-margin .offset-35{margin-left:auto;margin-right:35%}.offset-40,.flex-offset-40,.layout-margin .flex-offset-40,.layout-margin .offset-40{margin-left:40%}[dir=rtl] .offset-40,[dir=rtl] .flex-offset-40,[dir=rtl] .layout-margin .flex-offset-40,[dir=rtl] .layout-margin .offset-40{margin-left:auto;margin-right:40%}.offset-45,.flex-offset-45,.layout-margin .flex-offset-45,.layout-margin .offset-45{margin-left:45%}[dir=rtl] .offset-45,[dir=rtl] .flex-offset-45,[dir=rtl] .layout-margin .flex-offset-45,[dir=rtl] .layout-margin .offset-45{margin-left:auto;margin-right:45%}.offset-50,.flex-offset-50,.layout-margin .flex-offset-50,.layout-margin .offset-50{margin-left:50%}[dir=rtl] .offset-50,[dir=rtl] .flex-offset-50,[dir=rtl] .layout-margin .flex-offset-50,[dir=rtl] .layout-margin .offset-50{margin-left:auto;margin-right:50%}.offset-55,.flex-offset-55,.layout-margin .flex-offset-55,.layout-margin .offset-55{margin-left:55%}[dir=rtl] .offset-55,[dir=rtl] .flex-offset-55,[dir=rtl] .layout-margin .flex-offset-55,[dir=rtl] .layout-margin .offset-55{margin-left:auto;margin-right:55%}.offset-60,.flex-offset-60,.layout-margin .flex-offset-60,.layout-margin .offset-60{margin-left:60%}[dir=rtl] .offset-60,[dir=rtl] .flex-offset-60,[dir=rtl] .layout-margin .flex-offset-60,[dir=rtl] .layout-margin .offset-60{margin-left:auto;margin-right:60%}.offset-65,.flex-offset-65,.layout-margin .flex-offset-65,.layout-margin .offset-65{margin-left:65%}[dir=rtl] .offset-65,[dir=rtl] .flex-offset-65,[dir=rtl] .layout-margin .flex-offset-65,[dir=rtl] .layout-margin .offset-65{margin-left:auto;margin-right:65%}.offset-70,.flex-offset-70,.layout-margin .flex-offset-70,.layout-margin .offset-70{margin-left:70%}[dir=rtl] .offset-70,[dir=rtl] .flex-offset-70,[dir=rtl] .layout-margin .flex-offset-70,[dir=rtl] .layout-margin .offset-70{margin-left:auto;margin-right:70%}.offset-75,.flex-offset-75,.layout-margin .flex-offset-75,.layout-margin .offset-75{margin-left:75%}[dir=rtl] .offset-75,[dir=rtl] .flex-offset-75,[dir=rtl] .layout-margin .flex-offset-75,[dir=rtl] .layout-margin .offset-75{margin-left:auto;margin-right:75%}.offset-80,.flex-offset-80,.layout-margin .flex-offset-80,.layout-margin .offset-80{margin-left:80%}[dir=rtl] .offset-80,[dir=rtl] .flex-offset-80,[dir=rtl] .layout-margin .flex-offset-80,[dir=rtl] .layout-margin .offset-80{margin-left:auto;margin-right:80%}.offset-85,.flex-offset-85,.layout-margin .flex-offset-85,.layout-margin .offset-85{margin-left:85%}[dir=rtl] .offset-85,[dir=rtl] .flex-offset-85,[dir=rtl] .layout-margin .flex-offset-85,[dir=rtl] .layout-margin .offset-85{margin-left:auto;margin-right:85%}.offset-90,.flex-offset-90,.layout-margin .flex-offset-90,.layout-margin .offset-90{margin-left:90%}[dir=rtl] .offset-90,[dir=rtl] .flex-offset-90,[dir=rtl] .layout-margin .flex-offset-90,[dir=rtl] .layout-margin .offset-90{margin-left:auto;margin-right:90%}.offset-95,.flex-offset-95,.layout-margin .flex-offset-95,.layout-margin .offset-95{margin-left:95%}[dir=rtl] .offset-95,[dir=rtl] .flex-offset-95,[dir=rtl] .layout-margin .flex-offset-95,[dir=rtl] .layout-margin .offset-95{margin-left:auto;margin-right:95%}.offset-33,.flex-offset-33,.layout-margin .flex-offset-33,.layout-margin .offset-33{margin-left:33.3333333333%}.offset-66,.flex-offset-66,.layout-margin .flex-offset-66,.layout-margin .offset-66{margin-left:66.6666666667%}[dir=rtl] .offset-66,[dir=rtl] .flex-offset-66,[dir=rtl] .layout-margin .flex-offset-66,[dir=rtl] .layout-margin .offset-66{margin-left:auto;margin-right:66.6666666667%}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-start,.layout-align-center-center,.layout-align-center-end,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-start,.layout-align-end-center,.layout-align-end-end,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-start,.layout-align-space-around-end,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-start,.layout-align-space-between-end,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-start-start,.layout-align-center-start,.layout-align-end-start,.layout-align-space-between-start,.layout-align-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-start-center,.layout-align-center-center,.layout-align-end-center,.layout-align-space-between-center,.layout-align-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-start-center>*,.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-between-center>*,.layout-align-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-start-end,.layout-align-center-end,.layout-align-end-end,.layout-align-space-between-end,.layout-align-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-start-stretch,.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-between-stretch,.layout-align-space-around-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-md,.layout-padding>*,.layout-padding-gt-sm>*,.layout-padding-md>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding-gt-lg>*,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg,.layout-padding>.flex-lg,.layout-padding>.flex-gt-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-md,.layout-margin>*,.layout-margin-gt-sm>*,.layout-margin-md>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin-gt-lg>*,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg,.layout-margin>.flex-gt-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media(max-width: 599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.offset-xs-0,.flex-offset-xs-0,.layout-margin .flex-offset-xs-0,.layout-margin .offset-xs-0{margin-left:0}[dir=rtl] .offset-xs-0,[dir=rtl] .flex-offset-xs-0,[dir=rtl] .layout-margin .flex-offset-xs-0,[dir=rtl] .layout-margin .offset-xs-0{margin-left:auto;margin-right:0}.offset-xs-5,.flex-offset-xs-5,.layout-margin .flex-offset-xs-5,.layout-margin .offset-xs-5{margin-left:5%}[dir=rtl] .offset-xs-5,[dir=rtl] .flex-offset-xs-5,[dir=rtl] .layout-margin .flex-offset-xs-5,[dir=rtl] .layout-margin .offset-xs-5{margin-left:auto;margin-right:5%}.offset-xs-10,.flex-offset-xs-10,.layout-margin .flex-offset-xs-10,.layout-margin .offset-xs-10{margin-left:10%}[dir=rtl] .offset-xs-10,[dir=rtl] .flex-offset-xs-10,[dir=rtl] .layout-margin .flex-offset-xs-10,[dir=rtl] .layout-margin .offset-xs-10{margin-left:auto;margin-right:10%}.offset-xs-15,.flex-offset-xs-15,.layout-margin .flex-offset-xs-15,.layout-margin .offset-xs-15{margin-left:15%}[dir=rtl] .offset-xs-15,[dir=rtl] .flex-offset-xs-15,[dir=rtl] .layout-margin .flex-offset-xs-15,[dir=rtl] .layout-margin .offset-xs-15{margin-left:auto;margin-right:15%}.offset-xs-20,.flex-offset-xs-20,.layout-margin .flex-offset-xs-20,.layout-margin .offset-xs-20{margin-left:20%}[dir=rtl] .offset-xs-20,[dir=rtl] .flex-offset-xs-20,[dir=rtl] .layout-margin .flex-offset-xs-20,[dir=rtl] .layout-margin .offset-xs-20{margin-left:auto;margin-right:20%}.offset-xs-25,.flex-offset-xs-25,.layout-margin .flex-offset-xs-25,.layout-margin .offset-xs-25{margin-left:25%}[dir=rtl] .offset-xs-25,[dir=rtl] .flex-offset-xs-25,[dir=rtl] .layout-margin .flex-offset-xs-25,[dir=rtl] .layout-margin .offset-xs-25{margin-left:auto;margin-right:25%}.offset-xs-30,.flex-offset-xs-30,.layout-margin .flex-offset-xs-30,.layout-margin .offset-xs-30{margin-left:30%}[dir=rtl] .offset-xs-30,[dir=rtl] .flex-offset-xs-30,[dir=rtl] .layout-margin .flex-offset-xs-30,[dir=rtl] .layout-margin .offset-xs-30{margin-left:auto;margin-right:30%}.offset-xs-35,.flex-offset-xs-35,.layout-margin .flex-offset-xs-35,.layout-margin .offset-xs-35{margin-left:35%}[dir=rtl] .offset-xs-35,[dir=rtl] .flex-offset-xs-35,[dir=rtl] .layout-margin .flex-offset-xs-35,[dir=rtl] .layout-margin .offset-xs-35{margin-left:auto;margin-right:35%}.offset-xs-40,.flex-offset-xs-40,.layout-margin .flex-offset-xs-40,.layout-margin .offset-xs-40{margin-left:40%}[dir=rtl] .offset-xs-40,[dir=rtl] .flex-offset-xs-40,[dir=rtl] .layout-margin .flex-offset-xs-40,[dir=rtl] .layout-margin .offset-xs-40{margin-left:auto;margin-right:40%}.offset-xs-45,.flex-offset-xs-45,.layout-margin .flex-offset-xs-45,.layout-margin .offset-xs-45{margin-left:45%}[dir=rtl] .offset-xs-45,[dir=rtl] .flex-offset-xs-45,[dir=rtl] .layout-margin .flex-offset-xs-45,[dir=rtl] .layout-margin .offset-xs-45{margin-left:auto;margin-right:45%}.offset-xs-50,.flex-offset-xs-50,.layout-margin .flex-offset-xs-50,.layout-margin .offset-xs-50{margin-left:50%}[dir=rtl] .offset-xs-50,[dir=rtl] .flex-offset-xs-50,[dir=rtl] .layout-margin .flex-offset-xs-50,[dir=rtl] .layout-margin .offset-xs-50{margin-left:auto;margin-right:50%}.offset-xs-55,.flex-offset-xs-55,.layout-margin .flex-offset-xs-55,.layout-margin .offset-xs-55{margin-left:55%}[dir=rtl] .offset-xs-55,[dir=rtl] .flex-offset-xs-55,[dir=rtl] .layout-margin .flex-offset-xs-55,[dir=rtl] .layout-margin .offset-xs-55{margin-left:auto;margin-right:55%}.offset-xs-60,.flex-offset-xs-60,.layout-margin .flex-offset-xs-60,.layout-margin .offset-xs-60{margin-left:60%}[dir=rtl] .offset-xs-60,[dir=rtl] .flex-offset-xs-60,[dir=rtl] .layout-margin .flex-offset-xs-60,[dir=rtl] .layout-margin .offset-xs-60{margin-left:auto;margin-right:60%}.offset-xs-65,.flex-offset-xs-65,.layout-margin .flex-offset-xs-65,.layout-margin .offset-xs-65{margin-left:65%}[dir=rtl] .offset-xs-65,[dir=rtl] .flex-offset-xs-65,[dir=rtl] .layout-margin .flex-offset-xs-65,[dir=rtl] .layout-margin .offset-xs-65{margin-left:auto;margin-right:65%}.offset-xs-70,.flex-offset-xs-70,.layout-margin .flex-offset-xs-70,.layout-margin .offset-xs-70{margin-left:70%}[dir=rtl] .offset-xs-70,[dir=rtl] .flex-offset-xs-70,[dir=rtl] .layout-margin .flex-offset-xs-70,[dir=rtl] .layout-margin .offset-xs-70{margin-left:auto;margin-right:70%}.offset-xs-75,.flex-offset-xs-75,.layout-margin .flex-offset-xs-75,.layout-margin .offset-xs-75{margin-left:75%}[dir=rtl] .offset-xs-75,[dir=rtl] .flex-offset-xs-75,[dir=rtl] .layout-margin .flex-offset-xs-75,[dir=rtl] .layout-margin .offset-xs-75{margin-left:auto;margin-right:75%}.offset-xs-80,.flex-offset-xs-80,.layout-margin .flex-offset-xs-80,.layout-margin .offset-xs-80{margin-left:80%}[dir=rtl] .offset-xs-80,[dir=rtl] .flex-offset-xs-80,[dir=rtl] .layout-margin .flex-offset-xs-80,[dir=rtl] .layout-margin .offset-xs-80{margin-left:auto;margin-right:80%}.offset-xs-85,.flex-offset-xs-85,.layout-margin .flex-offset-xs-85,.layout-margin .offset-xs-85{margin-left:85%}[dir=rtl] .offset-xs-85,[dir=rtl] .flex-offset-xs-85,[dir=rtl] .layout-margin .flex-offset-xs-85,[dir=rtl] .layout-margin .offset-xs-85{margin-left:auto;margin-right:85%}.offset-xs-90,.flex-offset-xs-90,.layout-margin .flex-offset-xs-90,.layout-margin .offset-xs-90{margin-left:90%}[dir=rtl] .offset-xs-90,[dir=rtl] .flex-offset-xs-90,[dir=rtl] .layout-margin .flex-offset-xs-90,[dir=rtl] .layout-margin .offset-xs-90{margin-left:auto;margin-right:90%}.offset-xs-95,.flex-offset-xs-95,.layout-margin .flex-offset-xs-95,.layout-margin .offset-xs-95{margin-left:95%}[dir=rtl] .offset-xs-95,[dir=rtl] .flex-offset-xs-95,[dir=rtl] .layout-margin .flex-offset-xs-95,[dir=rtl] .layout-margin .offset-xs-95{margin-left:auto;margin-right:95%}.offset-xs-33,.flex-offset-xs-33,.layout-margin .flex-offset-xs-33,.layout-margin .offset-xs-33{margin-left:33.3333333333%}.offset-xs-66,.flex-offset-xs-66,.layout-margin .flex-offset-xs-66,.layout-margin .offset-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-xs-66,[dir=rtl] .flex-offset-xs-66,[dir=rtl] .layout-margin .flex-offset-xs-66,[dir=rtl] .layout-margin .offset-xs-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-start,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-start,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-start,.layout-align-xs-space-around-end,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-start,.layout-align-xs-space-between-end,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-start-start,.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-between-start,.layout-align-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-start-center,.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-between-center,.layout-align-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-start-center>*,.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-start-end,.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-between-end,.layout-align-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-start-stretch,.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-space-around-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media(min-width: 600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.offset-gt-xs-0,.flex-offset-gt-xs-0,.layout-margin .flex-offset-gt-xs-0,.layout-margin .offset-gt-xs-0{margin-left:0}[dir=rtl] .offset-gt-xs-0,[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .offset-gt-xs-0{margin-left:auto;margin-right:0}.offset-gt-xs-5,.flex-offset-gt-xs-5,.layout-margin .flex-offset-gt-xs-5,.layout-margin .offset-gt-xs-5{margin-left:5%}[dir=rtl] .offset-gt-xs-5,[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .offset-gt-xs-5{margin-left:auto;margin-right:5%}.offset-gt-xs-10,.flex-offset-gt-xs-10,.layout-margin .flex-offset-gt-xs-10,.layout-margin .offset-gt-xs-10{margin-left:10%}[dir=rtl] .offset-gt-xs-10,[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .offset-gt-xs-10{margin-left:auto;margin-right:10%}.offset-gt-xs-15,.flex-offset-gt-xs-15,.layout-margin .flex-offset-gt-xs-15,.layout-margin .offset-gt-xs-15{margin-left:15%}[dir=rtl] .offset-gt-xs-15,[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .offset-gt-xs-15{margin-left:auto;margin-right:15%}.offset-gt-xs-20,.flex-offset-gt-xs-20,.layout-margin .flex-offset-gt-xs-20,.layout-margin .offset-gt-xs-20{margin-left:20%}[dir=rtl] .offset-gt-xs-20,[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .offset-gt-xs-20{margin-left:auto;margin-right:20%}.offset-gt-xs-25,.flex-offset-gt-xs-25,.layout-margin .flex-offset-gt-xs-25,.layout-margin .offset-gt-xs-25{margin-left:25%}[dir=rtl] .offset-gt-xs-25,[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .offset-gt-xs-25{margin-left:auto;margin-right:25%}.offset-gt-xs-30,.flex-offset-gt-xs-30,.layout-margin .flex-offset-gt-xs-30,.layout-margin .offset-gt-xs-30{margin-left:30%}[dir=rtl] .offset-gt-xs-30,[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .offset-gt-xs-30{margin-left:auto;margin-right:30%}.offset-gt-xs-35,.flex-offset-gt-xs-35,.layout-margin .flex-offset-gt-xs-35,.layout-margin .offset-gt-xs-35{margin-left:35%}[dir=rtl] .offset-gt-xs-35,[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .offset-gt-xs-35{margin-left:auto;margin-right:35%}.offset-gt-xs-40,.flex-offset-gt-xs-40,.layout-margin .flex-offset-gt-xs-40,.layout-margin .offset-gt-xs-40{margin-left:40%}[dir=rtl] .offset-gt-xs-40,[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .offset-gt-xs-40{margin-left:auto;margin-right:40%}.offset-gt-xs-45,.flex-offset-gt-xs-45,.layout-margin .flex-offset-gt-xs-45,.layout-margin .offset-gt-xs-45{margin-left:45%}[dir=rtl] .offset-gt-xs-45,[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .offset-gt-xs-45{margin-left:auto;margin-right:45%}.offset-gt-xs-50,.flex-offset-gt-xs-50,.layout-margin .flex-offset-gt-xs-50,.layout-margin .offset-gt-xs-50{margin-left:50%}[dir=rtl] .offset-gt-xs-50,[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .offset-gt-xs-50{margin-left:auto;margin-right:50%}.offset-gt-xs-55,.flex-offset-gt-xs-55,.layout-margin .flex-offset-gt-xs-55,.layout-margin .offset-gt-xs-55{margin-left:55%}[dir=rtl] .offset-gt-xs-55,[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .offset-gt-xs-55{margin-left:auto;margin-right:55%}.offset-gt-xs-60,.flex-offset-gt-xs-60,.layout-margin .flex-offset-gt-xs-60,.layout-margin .offset-gt-xs-60{margin-left:60%}[dir=rtl] .offset-gt-xs-60,[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .offset-gt-xs-60{margin-left:auto;margin-right:60%}.offset-gt-xs-65,.flex-offset-gt-xs-65,.layout-margin .flex-offset-gt-xs-65,.layout-margin .offset-gt-xs-65{margin-left:65%}[dir=rtl] .offset-gt-xs-65,[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .offset-gt-xs-65{margin-left:auto;margin-right:65%}.offset-gt-xs-70,.flex-offset-gt-xs-70,.layout-margin .flex-offset-gt-xs-70,.layout-margin .offset-gt-xs-70{margin-left:70%}[dir=rtl] .offset-gt-xs-70,[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .offset-gt-xs-70{margin-left:auto;margin-right:70%}.offset-gt-xs-75,.flex-offset-gt-xs-75,.layout-margin .flex-offset-gt-xs-75,.layout-margin .offset-gt-xs-75{margin-left:75%}[dir=rtl] .offset-gt-xs-75,[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .offset-gt-xs-75{margin-left:auto;margin-right:75%}.offset-gt-xs-80,.flex-offset-gt-xs-80,.layout-margin .flex-offset-gt-xs-80,.layout-margin .offset-gt-xs-80{margin-left:80%}[dir=rtl] .offset-gt-xs-80,[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .offset-gt-xs-80{margin-left:auto;margin-right:80%}.offset-gt-xs-85,.flex-offset-gt-xs-85,.layout-margin .flex-offset-gt-xs-85,.layout-margin .offset-gt-xs-85{margin-left:85%}[dir=rtl] .offset-gt-xs-85,[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .offset-gt-xs-85{margin-left:auto;margin-right:85%}.offset-gt-xs-90,.flex-offset-gt-xs-90,.layout-margin .flex-offset-gt-xs-90,.layout-margin .offset-gt-xs-90{margin-left:90%}[dir=rtl] .offset-gt-xs-90,[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .offset-gt-xs-90{margin-left:auto;margin-right:90%}.offset-gt-xs-95,.flex-offset-gt-xs-95,.layout-margin .flex-offset-gt-xs-95,.layout-margin .offset-gt-xs-95{margin-left:95%}[dir=rtl] .offset-gt-xs-95,[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .offset-gt-xs-95{margin-left:auto;margin-right:95%}.offset-gt-xs-33,.flex-offset-gt-xs-33,.layout-margin .flex-offset-gt-xs-33,.layout-margin .offset-gt-xs-33{margin-left:33.3333333333%}.offset-gt-xs-66,.flex-offset-gt-xs-66,.layout-margin .flex-offset-gt-xs-66,.layout-margin .offset-gt-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-xs-66,[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .offset-gt-xs-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-start-start,.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-start-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-start-center>*,.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-start-end,.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-start-stretch,.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media(min-width: 600px)and (max-width: 959px){.hide:not(.show-gt-xs):not(.show-sm):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.offset-sm-0,.flex-offset-sm-0,.layout-margin .flex-offset-sm-0,.layout-margin .offset-sm-0{margin-left:0}[dir=rtl] .offset-sm-0,[dir=rtl] .flex-offset-sm-0,[dir=rtl] .layout-margin .flex-offset-sm-0,[dir=rtl] .layout-margin .offset-sm-0{margin-left:auto;margin-right:0}.offset-sm-5,.flex-offset-sm-5,.layout-margin .flex-offset-sm-5,.layout-margin .offset-sm-5{margin-left:5%}[dir=rtl] .offset-sm-5,[dir=rtl] .flex-offset-sm-5,[dir=rtl] .layout-margin .flex-offset-sm-5,[dir=rtl] .layout-margin .offset-sm-5{margin-left:auto;margin-right:5%}.offset-sm-10,.flex-offset-sm-10,.layout-margin .flex-offset-sm-10,.layout-margin .offset-sm-10{margin-left:10%}[dir=rtl] .offset-sm-10,[dir=rtl] .flex-offset-sm-10,[dir=rtl] .layout-margin .flex-offset-sm-10,[dir=rtl] .layout-margin .offset-sm-10{margin-left:auto;margin-right:10%}.offset-sm-15,.flex-offset-sm-15,.layout-margin .flex-offset-sm-15,.layout-margin .offset-sm-15{margin-left:15%}[dir=rtl] .offset-sm-15,[dir=rtl] .flex-offset-sm-15,[dir=rtl] .layout-margin .flex-offset-sm-15,[dir=rtl] .layout-margin .offset-sm-15{margin-left:auto;margin-right:15%}.offset-sm-20,.flex-offset-sm-20,.layout-margin .flex-offset-sm-20,.layout-margin .offset-sm-20{margin-left:20%}[dir=rtl] .offset-sm-20,[dir=rtl] .flex-offset-sm-20,[dir=rtl] .layout-margin .flex-offset-sm-20,[dir=rtl] .layout-margin .offset-sm-20{margin-left:auto;margin-right:20%}.offset-sm-25,.flex-offset-sm-25,.layout-margin .flex-offset-sm-25,.layout-margin .offset-sm-25{margin-left:25%}[dir=rtl] .offset-sm-25,[dir=rtl] .flex-offset-sm-25,[dir=rtl] .layout-margin .flex-offset-sm-25,[dir=rtl] .layout-margin .offset-sm-25{margin-left:auto;margin-right:25%}.offset-sm-30,.flex-offset-sm-30,.layout-margin .flex-offset-sm-30,.layout-margin .offset-sm-30{margin-left:30%}[dir=rtl] .offset-sm-30,[dir=rtl] .flex-offset-sm-30,[dir=rtl] .layout-margin .flex-offset-sm-30,[dir=rtl] .layout-margin .offset-sm-30{margin-left:auto;margin-right:30%}.offset-sm-35,.flex-offset-sm-35,.layout-margin .flex-offset-sm-35,.layout-margin .offset-sm-35{margin-left:35%}[dir=rtl] .offset-sm-35,[dir=rtl] .flex-offset-sm-35,[dir=rtl] .layout-margin .flex-offset-sm-35,[dir=rtl] .layout-margin .offset-sm-35{margin-left:auto;margin-right:35%}.offset-sm-40,.flex-offset-sm-40,.layout-margin .flex-offset-sm-40,.layout-margin .offset-sm-40{margin-left:40%}[dir=rtl] .offset-sm-40,[dir=rtl] .flex-offset-sm-40,[dir=rtl] .layout-margin .flex-offset-sm-40,[dir=rtl] .layout-margin .offset-sm-40{margin-left:auto;margin-right:40%}.offset-sm-45,.flex-offset-sm-45,.layout-margin .flex-offset-sm-45,.layout-margin .offset-sm-45{margin-left:45%}[dir=rtl] .offset-sm-45,[dir=rtl] .flex-offset-sm-45,[dir=rtl] .layout-margin .flex-offset-sm-45,[dir=rtl] .layout-margin .offset-sm-45{margin-left:auto;margin-right:45%}.offset-sm-50,.flex-offset-sm-50,.layout-margin .flex-offset-sm-50,.layout-margin .offset-sm-50{margin-left:50%}[dir=rtl] .offset-sm-50,[dir=rtl] .flex-offset-sm-50,[dir=rtl] .layout-margin .flex-offset-sm-50,[dir=rtl] .layout-margin .offset-sm-50{margin-left:auto;margin-right:50%}.offset-sm-55,.flex-offset-sm-55,.layout-margin .flex-offset-sm-55,.layout-margin .offset-sm-55{margin-left:55%}[dir=rtl] .offset-sm-55,[dir=rtl] .flex-offset-sm-55,[dir=rtl] .layout-margin .flex-offset-sm-55,[dir=rtl] .layout-margin .offset-sm-55{margin-left:auto;margin-right:55%}.offset-sm-60,.flex-offset-sm-60,.layout-margin .flex-offset-sm-60,.layout-margin .offset-sm-60{margin-left:60%}[dir=rtl] .offset-sm-60,[dir=rtl] .flex-offset-sm-60,[dir=rtl] .layout-margin .flex-offset-sm-60,[dir=rtl] .layout-margin .offset-sm-60{margin-left:auto;margin-right:60%}.offset-sm-65,.flex-offset-sm-65,.layout-margin .flex-offset-sm-65,.layout-margin .offset-sm-65{margin-left:65%}[dir=rtl] .offset-sm-65,[dir=rtl] .flex-offset-sm-65,[dir=rtl] .layout-margin .flex-offset-sm-65,[dir=rtl] .layout-margin .offset-sm-65{margin-left:auto;margin-right:65%}.offset-sm-70,.flex-offset-sm-70,.layout-margin .flex-offset-sm-70,.layout-margin .offset-sm-70{margin-left:70%}[dir=rtl] .offset-sm-70,[dir=rtl] .flex-offset-sm-70,[dir=rtl] .layout-margin .flex-offset-sm-70,[dir=rtl] .layout-margin .offset-sm-70{margin-left:auto;margin-right:70%}.offset-sm-75,.flex-offset-sm-75,.layout-margin .flex-offset-sm-75,.layout-margin .offset-sm-75{margin-left:75%}[dir=rtl] .offset-sm-75,[dir=rtl] .flex-offset-sm-75,[dir=rtl] .layout-margin .flex-offset-sm-75,[dir=rtl] .layout-margin .offset-sm-75{margin-left:auto;margin-right:75%}.offset-sm-80,.flex-offset-sm-80,.layout-margin .flex-offset-sm-80,.layout-margin .offset-sm-80{margin-left:80%}[dir=rtl] .offset-sm-80,[dir=rtl] .flex-offset-sm-80,[dir=rtl] .layout-margin .flex-offset-sm-80,[dir=rtl] .layout-margin .offset-sm-80{margin-left:auto;margin-right:80%}.offset-sm-85,.flex-offset-sm-85,.layout-margin .flex-offset-sm-85,.layout-margin .offset-sm-85{margin-left:85%}[dir=rtl] .offset-sm-85,[dir=rtl] .flex-offset-sm-85,[dir=rtl] .layout-margin .flex-offset-sm-85,[dir=rtl] .layout-margin .offset-sm-85{margin-left:auto;margin-right:85%}.offset-sm-90,.flex-offset-sm-90,.layout-margin .flex-offset-sm-90,.layout-margin .offset-sm-90{margin-left:90%}[dir=rtl] .offset-sm-90,[dir=rtl] .flex-offset-sm-90,[dir=rtl] .layout-margin .flex-offset-sm-90,[dir=rtl] .layout-margin .offset-sm-90{margin-left:auto;margin-right:90%}.offset-sm-95,.flex-offset-sm-95,.layout-margin .flex-offset-sm-95,.layout-margin .offset-sm-95{margin-left:95%}[dir=rtl] .offset-sm-95,[dir=rtl] .flex-offset-sm-95,[dir=rtl] .layout-margin .flex-offset-sm-95,[dir=rtl] .layout-margin .offset-sm-95{margin-left:auto;margin-right:95%}.offset-sm-33,.flex-offset-sm-33,.layout-margin .flex-offset-sm-33,.layout-margin .offset-sm-33{margin-left:33.3333333333%}.offset-sm-66,.flex-offset-sm-66,.layout-margin .flex-offset-sm-66,.layout-margin .offset-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-sm-66,[dir=rtl] .flex-offset-sm-66,[dir=rtl] .layout-margin .flex-offset-sm-66,[dir=rtl] .layout-margin .offset-sm-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-start,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-start,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-start,.layout-align-sm-space-around-end,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-start,.layout-align-sm-space-between-end,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-start-start,.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-between-start,.layout-align-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-start-center,.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-between-center,.layout-align-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-start-center>*,.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-start-end,.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-between-end,.layout-align-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-start-stretch,.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-space-around-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media(min-width: 960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.offset-gt-sm-0,.flex-offset-gt-sm-0,.layout-margin .flex-offset-gt-sm-0,.layout-margin .offset-gt-sm-0{margin-left:0}[dir=rtl] .offset-gt-sm-0,[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .offset-gt-sm-0{margin-left:auto;margin-right:0}.offset-gt-sm-5,.flex-offset-gt-sm-5,.layout-margin .flex-offset-gt-sm-5,.layout-margin .offset-gt-sm-5{margin-left:5%}[dir=rtl] .offset-gt-sm-5,[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .offset-gt-sm-5{margin-left:auto;margin-right:5%}.offset-gt-sm-10,.flex-offset-gt-sm-10,.layout-margin .flex-offset-gt-sm-10,.layout-margin .offset-gt-sm-10{margin-left:10%}[dir=rtl] .offset-gt-sm-10,[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .offset-gt-sm-10{margin-left:auto;margin-right:10%}.offset-gt-sm-15,.flex-offset-gt-sm-15,.layout-margin .flex-offset-gt-sm-15,.layout-margin .offset-gt-sm-15{margin-left:15%}[dir=rtl] .offset-gt-sm-15,[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .offset-gt-sm-15{margin-left:auto;margin-right:15%}.offset-gt-sm-20,.flex-offset-gt-sm-20,.layout-margin .flex-offset-gt-sm-20,.layout-margin .offset-gt-sm-20{margin-left:20%}[dir=rtl] .offset-gt-sm-20,[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .offset-gt-sm-20{margin-left:auto;margin-right:20%}.offset-gt-sm-25,.flex-offset-gt-sm-25,.layout-margin .flex-offset-gt-sm-25,.layout-margin .offset-gt-sm-25{margin-left:25%}[dir=rtl] .offset-gt-sm-25,[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .offset-gt-sm-25{margin-left:auto;margin-right:25%}.offset-gt-sm-30,.flex-offset-gt-sm-30,.layout-margin .flex-offset-gt-sm-30,.layout-margin .offset-gt-sm-30{margin-left:30%}[dir=rtl] .offset-gt-sm-30,[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .offset-gt-sm-30{margin-left:auto;margin-right:30%}.offset-gt-sm-35,.flex-offset-gt-sm-35,.layout-margin .flex-offset-gt-sm-35,.layout-margin .offset-gt-sm-35{margin-left:35%}[dir=rtl] .offset-gt-sm-35,[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .offset-gt-sm-35{margin-left:auto;margin-right:35%}.offset-gt-sm-40,.flex-offset-gt-sm-40,.layout-margin .flex-offset-gt-sm-40,.layout-margin .offset-gt-sm-40{margin-left:40%}[dir=rtl] .offset-gt-sm-40,[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .offset-gt-sm-40{margin-left:auto;margin-right:40%}.offset-gt-sm-45,.flex-offset-gt-sm-45,.layout-margin .flex-offset-gt-sm-45,.layout-margin .offset-gt-sm-45{margin-left:45%}[dir=rtl] .offset-gt-sm-45,[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .offset-gt-sm-45{margin-left:auto;margin-right:45%}.offset-gt-sm-50,.flex-offset-gt-sm-50,.layout-margin .flex-offset-gt-sm-50,.layout-margin .offset-gt-sm-50{margin-left:50%}[dir=rtl] .offset-gt-sm-50,[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .offset-gt-sm-50{margin-left:auto;margin-right:50%}.offset-gt-sm-55,.flex-offset-gt-sm-55,.layout-margin .flex-offset-gt-sm-55,.layout-margin .offset-gt-sm-55{margin-left:55%}[dir=rtl] .offset-gt-sm-55,[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .offset-gt-sm-55{margin-left:auto;margin-right:55%}.offset-gt-sm-60,.flex-offset-gt-sm-60,.layout-margin .flex-offset-gt-sm-60,.layout-margin .offset-gt-sm-60{margin-left:60%}[dir=rtl] .offset-gt-sm-60,[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .offset-gt-sm-60{margin-left:auto;margin-right:60%}.offset-gt-sm-65,.flex-offset-gt-sm-65,.layout-margin .flex-offset-gt-sm-65,.layout-margin .offset-gt-sm-65{margin-left:65%}[dir=rtl] .offset-gt-sm-65,[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .offset-gt-sm-65{margin-left:auto;margin-right:65%}.offset-gt-sm-70,.flex-offset-gt-sm-70,.layout-margin .flex-offset-gt-sm-70,.layout-margin .offset-gt-sm-70{margin-left:70%}[dir=rtl] .offset-gt-sm-70,[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .offset-gt-sm-70{margin-left:auto;margin-right:70%}.offset-gt-sm-75,.flex-offset-gt-sm-75,.layout-margin .flex-offset-gt-sm-75,.layout-margin .offset-gt-sm-75{margin-left:75%}[dir=rtl] .offset-gt-sm-75,[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .offset-gt-sm-75{margin-left:auto;margin-right:75%}.offset-gt-sm-80,.flex-offset-gt-sm-80,.layout-margin .flex-offset-gt-sm-80,.layout-margin .offset-gt-sm-80{margin-left:80%}[dir=rtl] .offset-gt-sm-80,[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .offset-gt-sm-80{margin-left:auto;margin-right:80%}.offset-gt-sm-85,.flex-offset-gt-sm-85,.layout-margin .flex-offset-gt-sm-85,.layout-margin .offset-gt-sm-85{margin-left:85%}[dir=rtl] .offset-gt-sm-85,[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .offset-gt-sm-85{margin-left:auto;margin-right:85%}.offset-gt-sm-90,.flex-offset-gt-sm-90,.layout-margin .flex-offset-gt-sm-90,.layout-margin .offset-gt-sm-90{margin-left:90%}[dir=rtl] .offset-gt-sm-90,[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .offset-gt-sm-90{margin-left:auto;margin-right:90%}.offset-gt-sm-95,.flex-offset-gt-sm-95,.layout-margin .flex-offset-gt-sm-95,.layout-margin .offset-gt-sm-95{margin-left:95%}[dir=rtl] .offset-gt-sm-95,[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .offset-gt-sm-95{margin-left:auto;margin-right:95%}.offset-gt-sm-33,.flex-offset-gt-sm-33,.layout-margin .flex-offset-gt-sm-33,.layout-margin .offset-gt-sm-33{margin-left:33.3333333333%}.offset-gt-sm-66,.flex-offset-gt-sm-66,.layout-margin .flex-offset-gt-sm-66,.layout-margin .offset-gt-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-sm-66,[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .offset-gt-sm-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-start-start,.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-start-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-start-center>*,.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-start-end,.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-start-stretch,.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media(min-width: 960px)and (max-width: 1279px){.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.offset-md-0,.flex-offset-md-0,.layout-margin .flex-offset-md-0,.layout-margin .offset-md-0{margin-left:0}[dir=rtl] .offset-md-0,[dir=rtl] .flex-offset-md-0,[dir=rtl] .layout-margin .flex-offset-md-0,[dir=rtl] .layout-margin .offset-md-0{margin-left:auto;margin-right:0}.offset-md-5,.flex-offset-md-5,.layout-margin .flex-offset-md-5,.layout-margin .offset-md-5{margin-left:5%}[dir=rtl] .offset-md-5,[dir=rtl] .flex-offset-md-5,[dir=rtl] .layout-margin .flex-offset-md-5,[dir=rtl] .layout-margin .offset-md-5{margin-left:auto;margin-right:5%}.offset-md-10,.flex-offset-md-10,.layout-margin .flex-offset-md-10,.layout-margin .offset-md-10{margin-left:10%}[dir=rtl] .offset-md-10,[dir=rtl] .flex-offset-md-10,[dir=rtl] .layout-margin .flex-offset-md-10,[dir=rtl] .layout-margin .offset-md-10{margin-left:auto;margin-right:10%}.offset-md-15,.flex-offset-md-15,.layout-margin .flex-offset-md-15,.layout-margin .offset-md-15{margin-left:15%}[dir=rtl] .offset-md-15,[dir=rtl] .flex-offset-md-15,[dir=rtl] .layout-margin .flex-offset-md-15,[dir=rtl] .layout-margin .offset-md-15{margin-left:auto;margin-right:15%}.offset-md-20,.flex-offset-md-20,.layout-margin .flex-offset-md-20,.layout-margin .offset-md-20{margin-left:20%}[dir=rtl] .offset-md-20,[dir=rtl] .flex-offset-md-20,[dir=rtl] .layout-margin .flex-offset-md-20,[dir=rtl] .layout-margin .offset-md-20{margin-left:auto;margin-right:20%}.offset-md-25,.flex-offset-md-25,.layout-margin .flex-offset-md-25,.layout-margin .offset-md-25{margin-left:25%}[dir=rtl] .offset-md-25,[dir=rtl] .flex-offset-md-25,[dir=rtl] .layout-margin .flex-offset-md-25,[dir=rtl] .layout-margin .offset-md-25{margin-left:auto;margin-right:25%}.offset-md-30,.flex-offset-md-30,.layout-margin .flex-offset-md-30,.layout-margin .offset-md-30{margin-left:30%}[dir=rtl] .offset-md-30,[dir=rtl] .flex-offset-md-30,[dir=rtl] .layout-margin .flex-offset-md-30,[dir=rtl] .layout-margin .offset-md-30{margin-left:auto;margin-right:30%}.offset-md-35,.flex-offset-md-35,.layout-margin .flex-offset-md-35,.layout-margin .offset-md-35{margin-left:35%}[dir=rtl] .offset-md-35,[dir=rtl] .flex-offset-md-35,[dir=rtl] .layout-margin .flex-offset-md-35,[dir=rtl] .layout-margin .offset-md-35{margin-left:auto;margin-right:35%}.offset-md-40,.flex-offset-md-40,.layout-margin .flex-offset-md-40,.layout-margin .offset-md-40{margin-left:40%}[dir=rtl] .offset-md-40,[dir=rtl] .flex-offset-md-40,[dir=rtl] .layout-margin .flex-offset-md-40,[dir=rtl] .layout-margin .offset-md-40{margin-left:auto;margin-right:40%}.offset-md-45,.flex-offset-md-45,.layout-margin .flex-offset-md-45,.layout-margin .offset-md-45{margin-left:45%}[dir=rtl] .offset-md-45,[dir=rtl] .flex-offset-md-45,[dir=rtl] .layout-margin .flex-offset-md-45,[dir=rtl] .layout-margin .offset-md-45{margin-left:auto;margin-right:45%}.offset-md-50,.flex-offset-md-50,.layout-margin .flex-offset-md-50,.layout-margin .offset-md-50{margin-left:50%}[dir=rtl] .offset-md-50,[dir=rtl] .flex-offset-md-50,[dir=rtl] .layout-margin .flex-offset-md-50,[dir=rtl] .layout-margin .offset-md-50{margin-left:auto;margin-right:50%}.offset-md-55,.flex-offset-md-55,.layout-margin .flex-offset-md-55,.layout-margin .offset-md-55{margin-left:55%}[dir=rtl] .offset-md-55,[dir=rtl] .flex-offset-md-55,[dir=rtl] .layout-margin .flex-offset-md-55,[dir=rtl] .layout-margin .offset-md-55{margin-left:auto;margin-right:55%}.offset-md-60,.flex-offset-md-60,.layout-margin .flex-offset-md-60,.layout-margin .offset-md-60{margin-left:60%}[dir=rtl] .offset-md-60,[dir=rtl] .flex-offset-md-60,[dir=rtl] .layout-margin .flex-offset-md-60,[dir=rtl] .layout-margin .offset-md-60{margin-left:auto;margin-right:60%}.offset-md-65,.flex-offset-md-65,.layout-margin .flex-offset-md-65,.layout-margin .offset-md-65{margin-left:65%}[dir=rtl] .offset-md-65,[dir=rtl] .flex-offset-md-65,[dir=rtl] .layout-margin .flex-offset-md-65,[dir=rtl] .layout-margin .offset-md-65{margin-left:auto;margin-right:65%}.offset-md-70,.flex-offset-md-70,.layout-margin .flex-offset-md-70,.layout-margin .offset-md-70{margin-left:70%}[dir=rtl] .offset-md-70,[dir=rtl] .flex-offset-md-70,[dir=rtl] .layout-margin .flex-offset-md-70,[dir=rtl] .layout-margin .offset-md-70{margin-left:auto;margin-right:70%}.offset-md-75,.flex-offset-md-75,.layout-margin .flex-offset-md-75,.layout-margin .offset-md-75{margin-left:75%}[dir=rtl] .offset-md-75,[dir=rtl] .flex-offset-md-75,[dir=rtl] .layout-margin .flex-offset-md-75,[dir=rtl] .layout-margin .offset-md-75{margin-left:auto;margin-right:75%}.offset-md-80,.flex-offset-md-80,.layout-margin .flex-offset-md-80,.layout-margin .offset-md-80{margin-left:80%}[dir=rtl] .offset-md-80,[dir=rtl] .flex-offset-md-80,[dir=rtl] .layout-margin .flex-offset-md-80,[dir=rtl] .layout-margin .offset-md-80{margin-left:auto;margin-right:80%}.offset-md-85,.flex-offset-md-85,.layout-margin .flex-offset-md-85,.layout-margin .offset-md-85{margin-left:85%}[dir=rtl] .offset-md-85,[dir=rtl] .flex-offset-md-85,[dir=rtl] .layout-margin .flex-offset-md-85,[dir=rtl] .layout-margin .offset-md-85{margin-left:auto;margin-right:85%}.offset-md-90,.flex-offset-md-90,.layout-margin .flex-offset-md-90,.layout-margin .offset-md-90{margin-left:90%}[dir=rtl] .offset-md-90,[dir=rtl] .flex-offset-md-90,[dir=rtl] .layout-margin .flex-offset-md-90,[dir=rtl] .layout-margin .offset-md-90{margin-left:auto;margin-right:90%}.offset-md-95,.flex-offset-md-95,.layout-margin .flex-offset-md-95,.layout-margin .offset-md-95{margin-left:95%}[dir=rtl] .offset-md-95,[dir=rtl] .flex-offset-md-95,[dir=rtl] .layout-margin .flex-offset-md-95,[dir=rtl] .layout-margin .offset-md-95{margin-left:auto;margin-right:95%}.offset-md-33,.flex-offset-md-33,.layout-margin .flex-offset-md-33,.layout-margin .offset-md-33{margin-left:33.3333333333%}.offset-md-66,.flex-offset-md-66,.layout-margin .flex-offset-md-66,.layout-margin .offset-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-md-66,[dir=rtl] .flex-offset-md-66,[dir=rtl] .layout-margin .flex-offset-md-66,[dir=rtl] .layout-margin .offset-md-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-start,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-start,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-start,.layout-align-md-space-around-end,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-start,.layout-align-md-space-between-end,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-start-start,.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-between-start,.layout-align-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-md-start-center,.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-between-center,.layout-align-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-start-center>*,.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-between-center>*,.layout-align-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-start-end,.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-between-end,.layout-align-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-md-start-stretch,.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-between-stretch,.layout-align-md-space-around-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media(min-width: 1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.offset-gt-md-0,.flex-offset-gt-md-0,.layout-margin .flex-offset-gt-md-0,.layout-margin .offset-gt-md-0{margin-left:0}[dir=rtl] .offset-gt-md-0,[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .layout-margin .flex-offset-gt-md-0,[dir=rtl] .layout-margin .offset-gt-md-0{margin-left:auto;margin-right:0}.offset-gt-md-5,.flex-offset-gt-md-5,.layout-margin .flex-offset-gt-md-5,.layout-margin .offset-gt-md-5{margin-left:5%}[dir=rtl] .offset-gt-md-5,[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .layout-margin .flex-offset-gt-md-5,[dir=rtl] .layout-margin .offset-gt-md-5{margin-left:auto;margin-right:5%}.offset-gt-md-10,.flex-offset-gt-md-10,.layout-margin .flex-offset-gt-md-10,.layout-margin .offset-gt-md-10{margin-left:10%}[dir=rtl] .offset-gt-md-10,[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .layout-margin .flex-offset-gt-md-10,[dir=rtl] .layout-margin .offset-gt-md-10{margin-left:auto;margin-right:10%}.offset-gt-md-15,.flex-offset-gt-md-15,.layout-margin .flex-offset-gt-md-15,.layout-margin .offset-gt-md-15{margin-left:15%}[dir=rtl] .offset-gt-md-15,[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .layout-margin .flex-offset-gt-md-15,[dir=rtl] .layout-margin .offset-gt-md-15{margin-left:auto;margin-right:15%}.offset-gt-md-20,.flex-offset-gt-md-20,.layout-margin .flex-offset-gt-md-20,.layout-margin .offset-gt-md-20{margin-left:20%}[dir=rtl] .offset-gt-md-20,[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .layout-margin .flex-offset-gt-md-20,[dir=rtl] .layout-margin .offset-gt-md-20{margin-left:auto;margin-right:20%}.offset-gt-md-25,.flex-offset-gt-md-25,.layout-margin .flex-offset-gt-md-25,.layout-margin .offset-gt-md-25{margin-left:25%}[dir=rtl] .offset-gt-md-25,[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .layout-margin .flex-offset-gt-md-25,[dir=rtl] .layout-margin .offset-gt-md-25{margin-left:auto;margin-right:25%}.offset-gt-md-30,.flex-offset-gt-md-30,.layout-margin .flex-offset-gt-md-30,.layout-margin .offset-gt-md-30{margin-left:30%}[dir=rtl] .offset-gt-md-30,[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .layout-margin .flex-offset-gt-md-30,[dir=rtl] .layout-margin .offset-gt-md-30{margin-left:auto;margin-right:30%}.offset-gt-md-35,.flex-offset-gt-md-35,.layout-margin .flex-offset-gt-md-35,.layout-margin .offset-gt-md-35{margin-left:35%}[dir=rtl] .offset-gt-md-35,[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .layout-margin .flex-offset-gt-md-35,[dir=rtl] .layout-margin .offset-gt-md-35{margin-left:auto;margin-right:35%}.offset-gt-md-40,.flex-offset-gt-md-40,.layout-margin .flex-offset-gt-md-40,.layout-margin .offset-gt-md-40{margin-left:40%}[dir=rtl] .offset-gt-md-40,[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .layout-margin .flex-offset-gt-md-40,[dir=rtl] .layout-margin .offset-gt-md-40{margin-left:auto;margin-right:40%}.offset-gt-md-45,.flex-offset-gt-md-45,.layout-margin .flex-offset-gt-md-45,.layout-margin .offset-gt-md-45{margin-left:45%}[dir=rtl] .offset-gt-md-45,[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .layout-margin .flex-offset-gt-md-45,[dir=rtl] .layout-margin .offset-gt-md-45{margin-left:auto;margin-right:45%}.offset-gt-md-50,.flex-offset-gt-md-50,.layout-margin .flex-offset-gt-md-50,.layout-margin .offset-gt-md-50{margin-left:50%}[dir=rtl] .offset-gt-md-50,[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .layout-margin .flex-offset-gt-md-50,[dir=rtl] .layout-margin .offset-gt-md-50{margin-left:auto;margin-right:50%}.offset-gt-md-55,.flex-offset-gt-md-55,.layout-margin .flex-offset-gt-md-55,.layout-margin .offset-gt-md-55{margin-left:55%}[dir=rtl] .offset-gt-md-55,[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .layout-margin .flex-offset-gt-md-55,[dir=rtl] .layout-margin .offset-gt-md-55{margin-left:auto;margin-right:55%}.offset-gt-md-60,.flex-offset-gt-md-60,.layout-margin .flex-offset-gt-md-60,.layout-margin .offset-gt-md-60{margin-left:60%}[dir=rtl] .offset-gt-md-60,[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .layout-margin .flex-offset-gt-md-60,[dir=rtl] .layout-margin .offset-gt-md-60{margin-left:auto;margin-right:60%}.offset-gt-md-65,.flex-offset-gt-md-65,.layout-margin .flex-offset-gt-md-65,.layout-margin .offset-gt-md-65{margin-left:65%}[dir=rtl] .offset-gt-md-65,[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .layout-margin .flex-offset-gt-md-65,[dir=rtl] .layout-margin .offset-gt-md-65{margin-left:auto;margin-right:65%}.offset-gt-md-70,.flex-offset-gt-md-70,.layout-margin .flex-offset-gt-md-70,.layout-margin .offset-gt-md-70{margin-left:70%}[dir=rtl] .offset-gt-md-70,[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .layout-margin .flex-offset-gt-md-70,[dir=rtl] .layout-margin .offset-gt-md-70{margin-left:auto;margin-right:70%}.offset-gt-md-75,.flex-offset-gt-md-75,.layout-margin .flex-offset-gt-md-75,.layout-margin .offset-gt-md-75{margin-left:75%}[dir=rtl] .offset-gt-md-75,[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .layout-margin .flex-offset-gt-md-75,[dir=rtl] .layout-margin .offset-gt-md-75{margin-left:auto;margin-right:75%}.offset-gt-md-80,.flex-offset-gt-md-80,.layout-margin .flex-offset-gt-md-80,.layout-margin .offset-gt-md-80{margin-left:80%}[dir=rtl] .offset-gt-md-80,[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .layout-margin .flex-offset-gt-md-80,[dir=rtl] .layout-margin .offset-gt-md-80{margin-left:auto;margin-right:80%}.offset-gt-md-85,.flex-offset-gt-md-85,.layout-margin .flex-offset-gt-md-85,.layout-margin .offset-gt-md-85{margin-left:85%}[dir=rtl] .offset-gt-md-85,[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .layout-margin .flex-offset-gt-md-85,[dir=rtl] .layout-margin .offset-gt-md-85{margin-left:auto;margin-right:85%}.offset-gt-md-90,.flex-offset-gt-md-90,.layout-margin .flex-offset-gt-md-90,.layout-margin .offset-gt-md-90{margin-left:90%}[dir=rtl] .offset-gt-md-90,[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .layout-margin .flex-offset-gt-md-90,[dir=rtl] .layout-margin .offset-gt-md-90{margin-left:auto;margin-right:90%}.offset-gt-md-95,.flex-offset-gt-md-95,.layout-margin .flex-offset-gt-md-95,.layout-margin .offset-gt-md-95{margin-left:95%}[dir=rtl] .offset-gt-md-95,[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .layout-margin .flex-offset-gt-md-95,[dir=rtl] .layout-margin .offset-gt-md-95{margin-left:auto;margin-right:95%}.offset-gt-md-33,.flex-offset-gt-md-33,.layout-margin .flex-offset-gt-md-33,.layout-margin .offset-gt-md-33{margin-left:33.3333333333%}.offset-gt-md-66,.flex-offset-gt-md-66,.layout-margin .flex-offset-gt-md-66,.layout-margin .offset-gt-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-md-66,[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .layout-margin .flex-offset-gt-md-66,[dir=rtl] .layout-margin .offset-gt-md-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-start,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-start-start,.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-start-center,.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-start-center>*,.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-start-end,.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-start-stretch,.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media(min-width: 1280px)and (max-width: 1919px){.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.offset-lg-0,.flex-offset-lg-0,.layout-margin .flex-offset-lg-0,.layout-margin .offset-lg-0{margin-left:0}[dir=rtl] .offset-lg-0,[dir=rtl] .flex-offset-lg-0,[dir=rtl] .layout-margin .flex-offset-lg-0,[dir=rtl] .layout-margin .offset-lg-0{margin-left:auto;margin-right:0}.offset-lg-5,.flex-offset-lg-5,.layout-margin .flex-offset-lg-5,.layout-margin .offset-lg-5{margin-left:5%}[dir=rtl] .offset-lg-5,[dir=rtl] .flex-offset-lg-5,[dir=rtl] .layout-margin .flex-offset-lg-5,[dir=rtl] .layout-margin .offset-lg-5{margin-left:auto;margin-right:5%}.offset-lg-10,.flex-offset-lg-10,.layout-margin .flex-offset-lg-10,.layout-margin .offset-lg-10{margin-left:10%}[dir=rtl] .offset-lg-10,[dir=rtl] .flex-offset-lg-10,[dir=rtl] .layout-margin .flex-offset-lg-10,[dir=rtl] .layout-margin .offset-lg-10{margin-left:auto;margin-right:10%}.offset-lg-15,.flex-offset-lg-15,.layout-margin .flex-offset-lg-15,.layout-margin .offset-lg-15{margin-left:15%}[dir=rtl] .offset-lg-15,[dir=rtl] .flex-offset-lg-15,[dir=rtl] .layout-margin .flex-offset-lg-15,[dir=rtl] .layout-margin .offset-lg-15{margin-left:auto;margin-right:15%}.offset-lg-20,.flex-offset-lg-20,.layout-margin .flex-offset-lg-20,.layout-margin .offset-lg-20{margin-left:20%}[dir=rtl] .offset-lg-20,[dir=rtl] .flex-offset-lg-20,[dir=rtl] .layout-margin .flex-offset-lg-20,[dir=rtl] .layout-margin .offset-lg-20{margin-left:auto;margin-right:20%}.offset-lg-25,.flex-offset-lg-25,.layout-margin .flex-offset-lg-25,.layout-margin .offset-lg-25{margin-left:25%}[dir=rtl] .offset-lg-25,[dir=rtl] .flex-offset-lg-25,[dir=rtl] .layout-margin .flex-offset-lg-25,[dir=rtl] .layout-margin .offset-lg-25{margin-left:auto;margin-right:25%}.offset-lg-30,.flex-offset-lg-30,.layout-margin .flex-offset-lg-30,.layout-margin .offset-lg-30{margin-left:30%}[dir=rtl] .offset-lg-30,[dir=rtl] .flex-offset-lg-30,[dir=rtl] .layout-margin .flex-offset-lg-30,[dir=rtl] .layout-margin .offset-lg-30{margin-left:auto;margin-right:30%}.offset-lg-35,.flex-offset-lg-35,.layout-margin .flex-offset-lg-35,.layout-margin .offset-lg-35{margin-left:35%}[dir=rtl] .offset-lg-35,[dir=rtl] .flex-offset-lg-35,[dir=rtl] .layout-margin .flex-offset-lg-35,[dir=rtl] .layout-margin .offset-lg-35{margin-left:auto;margin-right:35%}.offset-lg-40,.flex-offset-lg-40,.layout-margin .flex-offset-lg-40,.layout-margin .offset-lg-40{margin-left:40%}[dir=rtl] .offset-lg-40,[dir=rtl] .flex-offset-lg-40,[dir=rtl] .layout-margin .flex-offset-lg-40,[dir=rtl] .layout-margin .offset-lg-40{margin-left:auto;margin-right:40%}.offset-lg-45,.flex-offset-lg-45,.layout-margin .flex-offset-lg-45,.layout-margin .offset-lg-45{margin-left:45%}[dir=rtl] .offset-lg-45,[dir=rtl] .flex-offset-lg-45,[dir=rtl] .layout-margin .flex-offset-lg-45,[dir=rtl] .layout-margin .offset-lg-45{margin-left:auto;margin-right:45%}.offset-lg-50,.flex-offset-lg-50,.layout-margin .flex-offset-lg-50,.layout-margin .offset-lg-50{margin-left:50%}[dir=rtl] .offset-lg-50,[dir=rtl] .flex-offset-lg-50,[dir=rtl] .layout-margin .flex-offset-lg-50,[dir=rtl] .layout-margin .offset-lg-50{margin-left:auto;margin-right:50%}.offset-lg-55,.flex-offset-lg-55,.layout-margin .flex-offset-lg-55,.layout-margin .offset-lg-55{margin-left:55%}[dir=rtl] .offset-lg-55,[dir=rtl] .flex-offset-lg-55,[dir=rtl] .layout-margin .flex-offset-lg-55,[dir=rtl] .layout-margin .offset-lg-55{margin-left:auto;margin-right:55%}.offset-lg-60,.flex-offset-lg-60,.layout-margin .flex-offset-lg-60,.layout-margin .offset-lg-60{margin-left:60%}[dir=rtl] .offset-lg-60,[dir=rtl] .flex-offset-lg-60,[dir=rtl] .layout-margin .flex-offset-lg-60,[dir=rtl] .layout-margin .offset-lg-60{margin-left:auto;margin-right:60%}.offset-lg-65,.flex-offset-lg-65,.layout-margin .flex-offset-lg-65,.layout-margin .offset-lg-65{margin-left:65%}[dir=rtl] .offset-lg-65,[dir=rtl] .flex-offset-lg-65,[dir=rtl] .layout-margin .flex-offset-lg-65,[dir=rtl] .layout-margin .offset-lg-65{margin-left:auto;margin-right:65%}.offset-lg-70,.flex-offset-lg-70,.layout-margin .flex-offset-lg-70,.layout-margin .offset-lg-70{margin-left:70%}[dir=rtl] .offset-lg-70,[dir=rtl] .flex-offset-lg-70,[dir=rtl] .layout-margin .flex-offset-lg-70,[dir=rtl] .layout-margin .offset-lg-70{margin-left:auto;margin-right:70%}.offset-lg-75,.flex-offset-lg-75,.layout-margin .flex-offset-lg-75,.layout-margin .offset-lg-75{margin-left:75%}[dir=rtl] .offset-lg-75,[dir=rtl] .flex-offset-lg-75,[dir=rtl] .layout-margin .flex-offset-lg-75,[dir=rtl] .layout-margin .offset-lg-75{margin-left:auto;margin-right:75%}.offset-lg-80,.flex-offset-lg-80,.layout-margin .flex-offset-lg-80,.layout-margin .offset-lg-80{margin-left:80%}[dir=rtl] .offset-lg-80,[dir=rtl] .flex-offset-lg-80,[dir=rtl] .layout-margin .flex-offset-lg-80,[dir=rtl] .layout-margin .offset-lg-80{margin-left:auto;margin-right:80%}.offset-lg-85,.flex-offset-lg-85,.layout-margin .flex-offset-lg-85,.layout-margin .offset-lg-85{margin-left:85%}[dir=rtl] .offset-lg-85,[dir=rtl] .flex-offset-lg-85,[dir=rtl] .layout-margin .flex-offset-lg-85,[dir=rtl] .layout-margin .offset-lg-85{margin-left:auto;margin-right:85%}.offset-lg-90,.flex-offset-lg-90,.layout-margin .flex-offset-lg-90,.layout-margin .offset-lg-90{margin-left:90%}[dir=rtl] .offset-lg-90,[dir=rtl] .flex-offset-lg-90,[dir=rtl] .layout-margin .flex-offset-lg-90,[dir=rtl] .layout-margin .offset-lg-90{margin-left:auto;margin-right:90%}.offset-lg-95,.flex-offset-lg-95,.layout-margin .flex-offset-lg-95,.layout-margin .offset-lg-95{margin-left:95%}[dir=rtl] .offset-lg-95,[dir=rtl] .flex-offset-lg-95,[dir=rtl] .layout-margin .flex-offset-lg-95,[dir=rtl] .layout-margin .offset-lg-95{margin-left:auto;margin-right:95%}.offset-lg-33,.flex-offset-lg-33,.layout-margin .flex-offset-lg-33,.layout-margin .offset-lg-33{margin-left:33.3333333333%}.offset-lg-66,.flex-offset-lg-66,.layout-margin .flex-offset-lg-66,.layout-margin .offset-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-lg-66,[dir=rtl] .flex-offset-lg-66,[dir=rtl] .layout-margin .flex-offset-lg-66,[dir=rtl] .layout-margin .offset-lg-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-start,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-start,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-start,.layout-align-lg-space-around-end,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-start,.layout-align-lg-space-between-end,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-start-start,.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-between-start,.layout-align-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-start-center,.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-between-center,.layout-align-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-start-center>*,.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-start-end,.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-between-end,.layout-align-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-start-stretch,.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-space-around-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media(min-width: 1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.offset-gt-lg-0,.flex-offset-gt-lg-0,.layout-margin .flex-offset-gt-lg-0,.layout-margin .offset-gt-lg-0{margin-left:0}[dir=rtl] .offset-gt-lg-0,[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .offset-gt-lg-0{margin-left:auto;margin-right:0}.offset-gt-lg-5,.flex-offset-gt-lg-5,.layout-margin .flex-offset-gt-lg-5,.layout-margin .offset-gt-lg-5{margin-left:5%}[dir=rtl] .offset-gt-lg-5,[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .offset-gt-lg-5{margin-left:auto;margin-right:5%}.offset-gt-lg-10,.flex-offset-gt-lg-10,.layout-margin .flex-offset-gt-lg-10,.layout-margin .offset-gt-lg-10{margin-left:10%}[dir=rtl] .offset-gt-lg-10,[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .offset-gt-lg-10{margin-left:auto;margin-right:10%}.offset-gt-lg-15,.flex-offset-gt-lg-15,.layout-margin .flex-offset-gt-lg-15,.layout-margin .offset-gt-lg-15{margin-left:15%}[dir=rtl] .offset-gt-lg-15,[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .offset-gt-lg-15{margin-left:auto;margin-right:15%}.offset-gt-lg-20,.flex-offset-gt-lg-20,.layout-margin .flex-offset-gt-lg-20,.layout-margin .offset-gt-lg-20{margin-left:20%}[dir=rtl] .offset-gt-lg-20,[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .offset-gt-lg-20{margin-left:auto;margin-right:20%}.offset-gt-lg-25,.flex-offset-gt-lg-25,.layout-margin .flex-offset-gt-lg-25,.layout-margin .offset-gt-lg-25{margin-left:25%}[dir=rtl] .offset-gt-lg-25,[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .offset-gt-lg-25{margin-left:auto;margin-right:25%}.offset-gt-lg-30,.flex-offset-gt-lg-30,.layout-margin .flex-offset-gt-lg-30,.layout-margin .offset-gt-lg-30{margin-left:30%}[dir=rtl] .offset-gt-lg-30,[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .offset-gt-lg-30{margin-left:auto;margin-right:30%}.offset-gt-lg-35,.flex-offset-gt-lg-35,.layout-margin .flex-offset-gt-lg-35,.layout-margin .offset-gt-lg-35{margin-left:35%}[dir=rtl] .offset-gt-lg-35,[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .offset-gt-lg-35{margin-left:auto;margin-right:35%}.offset-gt-lg-40,.flex-offset-gt-lg-40,.layout-margin .flex-offset-gt-lg-40,.layout-margin .offset-gt-lg-40{margin-left:40%}[dir=rtl] .offset-gt-lg-40,[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .offset-gt-lg-40{margin-left:auto;margin-right:40%}.offset-gt-lg-45,.flex-offset-gt-lg-45,.layout-margin .flex-offset-gt-lg-45,.layout-margin .offset-gt-lg-45{margin-left:45%}[dir=rtl] .offset-gt-lg-45,[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .offset-gt-lg-45{margin-left:auto;margin-right:45%}.offset-gt-lg-50,.flex-offset-gt-lg-50,.layout-margin .flex-offset-gt-lg-50,.layout-margin .offset-gt-lg-50{margin-left:50%}[dir=rtl] .offset-gt-lg-50,[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .offset-gt-lg-50{margin-left:auto;margin-right:50%}.offset-gt-lg-55,.flex-offset-gt-lg-55,.layout-margin .flex-offset-gt-lg-55,.layout-margin .offset-gt-lg-55{margin-left:55%}[dir=rtl] .offset-gt-lg-55,[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .offset-gt-lg-55{margin-left:auto;margin-right:55%}.offset-gt-lg-60,.flex-offset-gt-lg-60,.layout-margin .flex-offset-gt-lg-60,.layout-margin .offset-gt-lg-60{margin-left:60%}[dir=rtl] .offset-gt-lg-60,[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .offset-gt-lg-60{margin-left:auto;margin-right:60%}.offset-gt-lg-65,.flex-offset-gt-lg-65,.layout-margin .flex-offset-gt-lg-65,.layout-margin .offset-gt-lg-65{margin-left:65%}[dir=rtl] .offset-gt-lg-65,[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .offset-gt-lg-65{margin-left:auto;margin-right:65%}.offset-gt-lg-70,.flex-offset-gt-lg-70,.layout-margin .flex-offset-gt-lg-70,.layout-margin .offset-gt-lg-70{margin-left:70%}[dir=rtl] .offset-gt-lg-70,[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .offset-gt-lg-70{margin-left:auto;margin-right:70%}.offset-gt-lg-75,.flex-offset-gt-lg-75,.layout-margin .flex-offset-gt-lg-75,.layout-margin .offset-gt-lg-75{margin-left:75%}[dir=rtl] .offset-gt-lg-75,[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .offset-gt-lg-75{margin-left:auto;margin-right:75%}.offset-gt-lg-80,.flex-offset-gt-lg-80,.layout-margin .flex-offset-gt-lg-80,.layout-margin .offset-gt-lg-80{margin-left:80%}[dir=rtl] .offset-gt-lg-80,[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .offset-gt-lg-80{margin-left:auto;margin-right:80%}.offset-gt-lg-85,.flex-offset-gt-lg-85,.layout-margin .flex-offset-gt-lg-85,.layout-margin .offset-gt-lg-85{margin-left:85%}[dir=rtl] .offset-gt-lg-85,[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .offset-gt-lg-85{margin-left:auto;margin-right:85%}.offset-gt-lg-90,.flex-offset-gt-lg-90,.layout-margin .flex-offset-gt-lg-90,.layout-margin .offset-gt-lg-90{margin-left:90%}[dir=rtl] .offset-gt-lg-90,[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .offset-gt-lg-90{margin-left:auto;margin-right:90%}.offset-gt-lg-95,.flex-offset-gt-lg-95,.layout-margin .flex-offset-gt-lg-95,.layout-margin .offset-gt-lg-95{margin-left:95%}[dir=rtl] .offset-gt-lg-95,[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .offset-gt-lg-95{margin-left:auto;margin-right:95%}.offset-gt-lg-33,.flex-offset-gt-lg-33,.layout-margin .flex-offset-gt-lg-33,.layout-margin .offset-gt-lg-33{margin-left:33.3333333333%}.offset-gt-lg-66,.flex-offset-gt-lg-66,.layout-margin .flex-offset-gt-lg-66,.layout-margin .offset-gt-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-lg-66,[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .offset-gt-lg-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-start-start,.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-start-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-start-center>*,.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-start-end,.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-start-stretch,.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.offset-xl-0,.flex-offset-xl-0,.layout-margin .flex-offset-xl-0,.layout-margin .offset-xl-0{margin-left:0}[dir=rtl] .offset-xl-0,[dir=rtl] .flex-offset-xl-0,[dir=rtl] .layout-margin .flex-offset-xl-0,[dir=rtl] .layout-margin .offset-xl-0{margin-left:auto;margin-right:0}.offset-xl-5,.flex-offset-xl-5,.layout-margin .flex-offset-xl-5,.layout-margin .offset-xl-5{margin-left:5%}[dir=rtl] .offset-xl-5,[dir=rtl] .flex-offset-xl-5,[dir=rtl] .layout-margin .flex-offset-xl-5,[dir=rtl] .layout-margin .offset-xl-5{margin-left:auto;margin-right:5%}.offset-xl-10,.flex-offset-xl-10,.layout-margin .flex-offset-xl-10,.layout-margin .offset-xl-10{margin-left:10%}[dir=rtl] .offset-xl-10,[dir=rtl] .flex-offset-xl-10,[dir=rtl] .layout-margin .flex-offset-xl-10,[dir=rtl] .layout-margin .offset-xl-10{margin-left:auto;margin-right:10%}.offset-xl-15,.flex-offset-xl-15,.layout-margin .flex-offset-xl-15,.layout-margin .offset-xl-15{margin-left:15%}[dir=rtl] .offset-xl-15,[dir=rtl] .flex-offset-xl-15,[dir=rtl] .layout-margin .flex-offset-xl-15,[dir=rtl] .layout-margin .offset-xl-15{margin-left:auto;margin-right:15%}.offset-xl-20,.flex-offset-xl-20,.layout-margin .flex-offset-xl-20,.layout-margin .offset-xl-20{margin-left:20%}[dir=rtl] .offset-xl-20,[dir=rtl] .flex-offset-xl-20,[dir=rtl] .layout-margin .flex-offset-xl-20,[dir=rtl] .layout-margin .offset-xl-20{margin-left:auto;margin-right:20%}.offset-xl-25,.flex-offset-xl-25,.layout-margin .flex-offset-xl-25,.layout-margin .offset-xl-25{margin-left:25%}[dir=rtl] .offset-xl-25,[dir=rtl] .flex-offset-xl-25,[dir=rtl] .layout-margin .flex-offset-xl-25,[dir=rtl] .layout-margin .offset-xl-25{margin-left:auto;margin-right:25%}.offset-xl-30,.flex-offset-xl-30,.layout-margin .flex-offset-xl-30,.layout-margin .offset-xl-30{margin-left:30%}[dir=rtl] .offset-xl-30,[dir=rtl] .flex-offset-xl-30,[dir=rtl] .layout-margin .flex-offset-xl-30,[dir=rtl] .layout-margin .offset-xl-30{margin-left:auto;margin-right:30%}.offset-xl-35,.flex-offset-xl-35,.layout-margin .flex-offset-xl-35,.layout-margin .offset-xl-35{margin-left:35%}[dir=rtl] .offset-xl-35,[dir=rtl] .flex-offset-xl-35,[dir=rtl] .layout-margin .flex-offset-xl-35,[dir=rtl] .layout-margin .offset-xl-35{margin-left:auto;margin-right:35%}.offset-xl-40,.flex-offset-xl-40,.layout-margin .flex-offset-xl-40,.layout-margin .offset-xl-40{margin-left:40%}[dir=rtl] .offset-xl-40,[dir=rtl] .flex-offset-xl-40,[dir=rtl] .layout-margin .flex-offset-xl-40,[dir=rtl] .layout-margin .offset-xl-40{margin-left:auto;margin-right:40%}.offset-xl-45,.flex-offset-xl-45,.layout-margin .flex-offset-xl-45,.layout-margin .offset-xl-45{margin-left:45%}[dir=rtl] .offset-xl-45,[dir=rtl] .flex-offset-xl-45,[dir=rtl] .layout-margin .flex-offset-xl-45,[dir=rtl] .layout-margin .offset-xl-45{margin-left:auto;margin-right:45%}.offset-xl-50,.flex-offset-xl-50,.layout-margin .flex-offset-xl-50,.layout-margin .offset-xl-50{margin-left:50%}[dir=rtl] .offset-xl-50,[dir=rtl] .flex-offset-xl-50,[dir=rtl] .layout-margin .flex-offset-xl-50,[dir=rtl] .layout-margin .offset-xl-50{margin-left:auto;margin-right:50%}.offset-xl-55,.flex-offset-xl-55,.layout-margin .flex-offset-xl-55,.layout-margin .offset-xl-55{margin-left:55%}[dir=rtl] .offset-xl-55,[dir=rtl] .flex-offset-xl-55,[dir=rtl] .layout-margin .flex-offset-xl-55,[dir=rtl] .layout-margin .offset-xl-55{margin-left:auto;margin-right:55%}.offset-xl-60,.flex-offset-xl-60,.layout-margin .flex-offset-xl-60,.layout-margin .offset-xl-60{margin-left:60%}[dir=rtl] .offset-xl-60,[dir=rtl] .flex-offset-xl-60,[dir=rtl] .layout-margin .flex-offset-xl-60,[dir=rtl] .layout-margin .offset-xl-60{margin-left:auto;margin-right:60%}.offset-xl-65,.flex-offset-xl-65,.layout-margin .flex-offset-xl-65,.layout-margin .offset-xl-65{margin-left:65%}[dir=rtl] .offset-xl-65,[dir=rtl] .flex-offset-xl-65,[dir=rtl] .layout-margin .flex-offset-xl-65,[dir=rtl] .layout-margin .offset-xl-65{margin-left:auto;margin-right:65%}.offset-xl-70,.flex-offset-xl-70,.layout-margin .flex-offset-xl-70,.layout-margin .offset-xl-70{margin-left:70%}[dir=rtl] .offset-xl-70,[dir=rtl] .flex-offset-xl-70,[dir=rtl] .layout-margin .flex-offset-xl-70,[dir=rtl] .layout-margin .offset-xl-70{margin-left:auto;margin-right:70%}.offset-xl-75,.flex-offset-xl-75,.layout-margin .flex-offset-xl-75,.layout-margin .offset-xl-75{margin-left:75%}[dir=rtl] .offset-xl-75,[dir=rtl] .flex-offset-xl-75,[dir=rtl] .layout-margin .flex-offset-xl-75,[dir=rtl] .layout-margin .offset-xl-75{margin-left:auto;margin-right:75%}.offset-xl-80,.flex-offset-xl-80,.layout-margin .flex-offset-xl-80,.layout-margin .offset-xl-80{margin-left:80%}[dir=rtl] .offset-xl-80,[dir=rtl] .flex-offset-xl-80,[dir=rtl] .layout-margin .flex-offset-xl-80,[dir=rtl] .layout-margin .offset-xl-80{margin-left:auto;margin-right:80%}.offset-xl-85,.flex-offset-xl-85,.layout-margin .flex-offset-xl-85,.layout-margin .offset-xl-85{margin-left:85%}[dir=rtl] .offset-xl-85,[dir=rtl] .flex-offset-xl-85,[dir=rtl] .layout-margin .flex-offset-xl-85,[dir=rtl] .layout-margin .offset-xl-85{margin-left:auto;margin-right:85%}.offset-xl-90,.flex-offset-xl-90,.layout-margin .flex-offset-xl-90,.layout-margin .offset-xl-90{margin-left:90%}[dir=rtl] .offset-xl-90,[dir=rtl] .flex-offset-xl-90,[dir=rtl] .layout-margin .flex-offset-xl-90,[dir=rtl] .layout-margin .offset-xl-90{margin-left:auto;margin-right:90%}.offset-xl-95,.flex-offset-xl-95,.layout-margin .flex-offset-xl-95,.layout-margin .offset-xl-95{margin-left:95%}[dir=rtl] .offset-xl-95,[dir=rtl] .flex-offset-xl-95,[dir=rtl] .layout-margin .flex-offset-xl-95,[dir=rtl] .layout-margin .offset-xl-95{margin-left:auto;margin-right:95%}.offset-xl-33,.flex-offset-xl-33,.layout-margin .flex-offset-xl-33,.layout-margin .offset-xl-33{margin-left:33.3333333333%}.offset-xl-66,.flex-offset-xl-66,.layout-margin .flex-offset-xl-66,.layout-margin .offset-xl-66{margin-left:66.6666666667%}[dir=rtl] .offset-xl-66,[dir=rtl] .flex-offset-xl-66,[dir=rtl] .layout-margin .flex-offset-xl-66,[dir=rtl] .layout-margin .offset-xl-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-start,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-start,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-start,.layout-align-xl-space-around-end,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-start,.layout-align-xl-space-between-end,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-start-start,.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-between-start,.layout-align-xl-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-start-center,.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-between-center,.layout-align-xl-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-start-center>*,.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-start-end,.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-between-end,.layout-align-xl-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-start-stretch,.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-space-around-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none !important}}:root{--xc-ws-div-color: #011f6a;--xc-ws-text-color: #ffffff;--xc-ws-button-color: #011f6a;--xc-ws-background-color: #fafafa;--xc-ws-client-height: 450px;--xc-ws-client-width: 295px}span.ng-binding,span.field-description{user-select:none}.centered-text{text-align:center}::-webkit-scrollbar{width:0;background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:0px}.field-description{font-size:13px;line-height:14px;color:gray;padding:5px 0px 5px 0px}.field-description.error{color:#dd2c00}.md-button.upload-button{padding:0 16px;height:36px}md-icon.material-icons{color:inherit !important}.white-label,.md-toolbar-tools .title{user-select:none}.white-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.white-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-fab.upload-button,.md-fab.upload-button.md-button.md-default-theme.md-raised:not([disabled]) md-icon,.md-fab.upload-button.md-button.md-raised:not([disabled]) md-icon{color:var(--xc-ws-text-color) !important;background:var(--xc-ws-div-color) !important}.form-input-container span{word-break:break-all}.chat-online ::-webkit-scrollbar{width:5px;background:var(--xc-ws-div-color)}.chat-online ::-webkit-scrollbar-thumb{background:linear-gradient(13deg, var(--xc-ws-text-color), var(--xc-ws-div-color));border-radius:10px}.chat-online ::-webkit-scrollbar-thumb:hover{background:linear-gradient(13deg, var(--xc-ws-div-color), var(--xc-ws-text-color))}.chat-online form{display:flex;width:100%;height:calc(100% - 20px);overflow:auto;padding:1em 0px 40px 0px;position:relative;max-width:100%;overflow-x:hidden}.chat-online form .form-field{margin-right:10px;margin-left:10px}.chat-online form .form-input-container{width:100%;height:100%;overflow:auto;scrollbar-width:none}.chat-online form div[ng-switch-when=label] md-content{overflow:hidden}.chat-online form div[ng-switch-when=label] md-content span{overflow:hidden}.chat-online form div.online-button-wrapper{position:fixed;bottom:40px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:linear-gradient(transparent, #fff 33%);align-items:center;justify-content:center}.chat-online form div.online-button-wrapper button#onlineButton{width:100%}.chat-online form div.offline-button-wrapper{position:fixed;bottom:40px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:linear-gradient(transparent, #fff 33%);align-items:center;justify-content:center}.chat-online form div.offline-button-wrapper button#offlineButton{width:100%}.chat-online form .layout-row,.chat-online form .layout-column{flex-wrap:wrap;justify-content:space-evenly}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button,.chat-online form .layout-column md-checkbox,.chat-online form .layout-column md-radio-button{padding:4px 0;margin-left:unset !important;word-break:break-all}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button{min-width:50%;max-width:50%}.chat-unmanaged{display:flex;flex-direction:column}.chat-unmanaged form{flex-grow:1;max-width:100%;overflow-x:hidden}.chat-closing{height:100%;padding:20px;overflow:hidden;align-items:stretch;justify-content:space-between}.chat-closing>md-content,.chat-closing>form{max-width:100%;overflow-x:hidden}.chat-closing>md-content,.chat-closing>md-content span,.chat-closing>form,.chat-closing>form span{width:100%}.logo{width:32px}#attachmentButton:hover .mdi-attachment:before{color:#555 !important;opacity:.85 !important}#input_text{position:relative !important;width:100% !important;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}#input_text:focus-within{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#attachmentButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}i.icon_color{color:red}#sendButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.emojionearea,.emojionearea.form-control{display:block;position:relative !important;width:100%;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:0px solid #ccc !important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-webkit-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mdi mdi-attachment mdi-24px mdi-light ng-scope::before{color:#a9a9a9}.mdi-attachment:hover{color:#555 !important}.mdi-24px.mdi-set,.mdi-24px.mdi:before{color:#a9a9a9}.md-button.md-fab.md-mini{line-height:20px !important;min-height:24px !important}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:19px !important;height:19px !important;margin:0 1px !important}.emojionearea .emojionearea-picker{width:100% !important;right:0 !important;height:220px !important;top:0px !important}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:220px !important;width:100% !important}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-100% !important}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-236px !important;width:260px !important;min-width:260px !important}.emojionearea .emojionearea-picker .emojionearea-search>input{width:100px !important;min-width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search{width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:70% !important}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 !important}.emojionearea .emojionearea-picker .emojionearea-filters{background:#f5f7f9;padding:0 !important;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{width:25px !important;padding:7px 3px 0}#id-row,#chat-app{max-width:100%;width:100%;max-height:100%;height:100%}#chat-app{background-color:transparent}#chat-app .header-button{padding:0;margin:0;font-size:18px;cursor:pointer}ui-view{display:block;width:100%;height:100%}#chat-app .chat-toolbar{height:56px;min-height:56px;cursor:pointer;outline:0}#chat-app .chat-content{flex-grow:1;height:calc(100% - 56px);background:#fff;border:1px solid #d3d3d3;-ms-overflow-style:none;overflow:hidden;box-sizing:border-box}#chat-app .chat-content .chat-messages{height:calc(100% - 60px);overflow:auto;border-bottom:1px solid #d3d3d3}#chat-app .chat-content .chat-online{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .chat-content .chat-unmanaged{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .avatar-wrapper{position:relative;bottom:-3px;right:5px}#chat-app .chat-content .message-row .bubble{word-wrap:break-word;position:relative;max-width:190px;padding:6px 7px 8px 9px;background-color:#fff;border-radius:6px}#chat-app .chat-content .message-row .bubble .message{white-space:pre-wrap}#chat-app .chat-content .message-row .bubble .message-done{color:#dcdcdc}#chat-app .chat-content .message-row .bubble .message-done-all{color:#00bfff}#chat-app .chat-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:"";position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#chat-app .chat-content .message-row .bubble .time{font-size:10px;text-align:right;margin-bottom:5px}#chat-app .chat-content .message-row.out .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.auto{align-items:flex-end;font-style:italic}#chat-app .chat-content .message-row.auto .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-size:17px;font-style:italic;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in{align-items:flex-end}#chat-app .chat-content .message-row.in2{align-items:flex-end}#chat-app .chat-content .message-row.out{align-items:flex-end}#chat-app .chat-content .message-row.in2 .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in2 .bubble{margin-right:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in2 .bubble:before{left:-11px;right:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=);-webkit-transform:rotate(180deg);transform:rotate(180deg)}#chat-app .chat-content .message-row.in .avatar{order:2;margin:0 0 0 16px;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in .bubble:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#chat-app .chat-footer{width:100%}#waiting{overflow:visible;height:calc(100% - 64px);background:#fff;text-align:center;flex:1 0 auto;padding:32px}#waiting .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54)}.sk-fading-circle{width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:"";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}md-toast.md-success-toast .md-toast-content{background-color:green}md-toast.md-failure-toast .md-toast-content{background-color:red}@media(min-device-width: 769px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:block}}@media(max-device-width: 768px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:none}}md-option .md-text{white-space:break-spaces}md-input-container{margin:0px 0px 8px 0px}
+ */html,body{height:100%;position:relative}body{margin:0;padding:0}[tabindex="-1"]:focus{outline:none}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:normal;background-color:inherit;text-align:left;border:none;padding:0;margin:0}select,button,textarea,input{vertical-align:baseline}input[type=reset],input[type=submit],html input[type=button],button{cursor:pointer;-webkit-appearance:button}input[type=reset][disabled],input[type=submit][disabled],html input[type=button][disabled],button[disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(0.4, 0, 0.2, 1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-ripple{position:absolute;transform:translate(-50%, -50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(0.25, 0.8, 0.25, 1),border .9s cubic-bezier(0.25, 0.8, 0.25, 1),width .9s cubic-bezier(0.25, 0.8, 0.25, 1),height .9s cubic-bezier(0.25, 0.8, 0.25, 1),opacity .9s cubic-bezier(0.25, 0.8, 0.25, 1),transform .9s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-ripple.md-ripple-scaled{transform:translate(-50%, -50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(0.25, 0.8, 0.25, 1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0px)}@media(min-width: 960px){.md-padding{padding:16px}}html[dir=rtl],html[dir=ltr],body[dir=rtl],body[dir=ltr]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-xs-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xs-row>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),.layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-sm-row:not(.layout-sm-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),.layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-md-row:not(.layout-md-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),.layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-lg-row:not(.layout-lg-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:16px}[dir=rtl] .layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child),[dir=rtl] .layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>.md-auto-horizontal-margin:not(:first-child){margin-left:0;margin-right:16px}}html,body{-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-touch-callout:default;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-0.01em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-0.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.01em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.01em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.02em}.md-button{letter-spacing:.01em}button,select,html,textarea,input{font-family:Roboto,"Helvetica Neue",sans-serif}select,button,textarea,input{font-size:100%}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}.md-panel-inner-wrapper{position:fixed}._md-panel-offscreen{left:-9999px}._md-panel-hidden{display:none}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:relative}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(0.4, 0, 1, 1)}.md-panel._md-panel-animate-scale-out,.md-panel._md-panel-animate-fade-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:fixed;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0, 0, 0.2, 1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(0.4, 0, 1, 1)}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:transparent;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] .md-show-clear-button button{display:block;position:absolute;right:0;top:20px;width:30px;height:30px}md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:30px}[dir=rtl] md-autocomplete[md-floating-label] .md-show-clear-button input{padding-right:0;padding-left:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap md-input-container,md-autocomplete md-autocomplete-wrap input{flex:1 1 0;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:none;background:transparent;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete .md-show-clear-button button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:transparent;margin:auto 5px}md-autocomplete .md-show-clear-button button:after{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-autocomplete .md-show-clear-button button:focus{outline:none}md-autocomplete .md-show-clear-button button:focus:after{transform:scale(1);opacity:1}md-autocomplete .md-show-clear-button button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0) scale(0.9)}md-autocomplete .md-show-clear-button button md-icon path{stroke-width:0}md-autocomplete .md-show-clear-button button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete .md-show-clear-button button.ng-leave{transition:transform .15s ease-out}md-autocomplete .md-show-clear-button button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast: active){md-autocomplete input{border:1px solid #fff}md-autocomplete .md-autocomplete-suggestion:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container,.md-standard-list-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);z-index:100;height:100%}.md-virtual-repeat-container.md-autocomplete-suggestions-container .highlight,.md-standard-list-container.md-autocomplete-suggestions-container .highlight{font-weight:bold}.md-standard-list-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;overflow-y:auto;padding:0}.md-virtual-repeat-container.md-not-found,.md-standard-list-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions .md-autocomplete-suggestion{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions .md-autocomplete-suggestion:focus{outline:none}.md-autocomplete-suggestions .md-autocomplete-suggestion:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast: active){md-autocomplete,.md-autocomplete-suggestions{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed !important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity 400ms}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0, 80px, 0);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0, 100%, 0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0, 80px, 0) !important}md-bottom-sheet.ng-leave-active{transform:translate3d(0, 100%, 0) !important;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:none}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media(max-width: 960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n + 1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media(min-width: 960px)and (max-width: 1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media(min-width: 1280px)and (max-width: 1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media(min-width: 1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast: active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:2px;box-sizing:border-box;user-select:none;outline:none;border:0;padding:0 8px;margin:6px 8px;background:transparent;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(0.25, 0.8, 0.25, 1),background-color .4s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){min-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){line-height:32px}.md-dense>.md-button:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) .md-button:not(.md-dense-disabled){font-size:13px}.md-button:focus{outline:none}.md-button:hover,.md-button:focus{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:none}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button.md-fab[disabled]{box-shadow:none}.md-button:not([disabled]).md-raised.md-focused,.md-button:not([disabled]).md-fab.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-raised:active,.md-button:not([disabled]).md-fab:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:inherit;background-clip:padding-box;overflow:hidden;-webkit-transform:translateZ(0)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate3d(0, 42px, 0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0, 41px, 0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate3d(0, -42px, 0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0, -43px, 0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0px 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0px 0px 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0px 2px 2px 0px}@media screen and (-ms-high-contrast: active){.md-button.md-raised,.md-button.md-fab{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar md-icon>svg{height:inherit;width:inherit}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card>img,md-card>md-card-header img,md-card md-card-title-media img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card md-card-actions{margin:8px}md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast: active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-inline-form md-checkbox{margin-top:14px;margin-bottom:auto}md-checkbox{box-sizing:border-box;display:inline-block;white-space:nowrap;cursor:pointer;outline:none;user-select:none;position:relative;min-width:18px;min-height:48px}.md-dense>md-checkbox:not(.md-dense-disabled),.md-dense :not(.md-dense-disabled) md-checkbox:not(.md-dense-disabled){min-height:36px}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:18px;height:18px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4px;top:0px;display:table;width:6px;height:12px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:table;width:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-checkbox .md-container{top:auto;left:auto;right:auto;margin:3px;margin-top:21px}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-top:10px;margin-bottom:auto;margin-left:36px}[dir=rtl] md-checkbox .md-label{margin-left:0;margin-right:36px}md-checkbox .md-label:empty{margin-left:24px;margin-right:0}[dir=rtl] md-checkbox .md-label:empty{margin-left:0}[dir=rtl] md-checkbox .md-label:empty{margin-right:24px}md-input-container .md-checkbox-link-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;cursor:pointer;top:-21px;margin-left:18px;margin-right:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-left:0}[dir=rtl] md-input-container .md-checkbox-link-label{margin-right:18px}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-name,.md-contact-suggestion .md-contact-email{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}md-chips{display:flex}.md-chips{display:flex;flex-wrap:wrap;flex-grow:1;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:13px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:"";display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:28px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:28px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:none}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:transparent;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;min-height:18px;min-width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%, -50%, 0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;flex-grow:1;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input{width:100%}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=url],.md-chips .md-chip-input-container input[type=text]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=url]:focus,.md-chips .md-chip-input-container input[type=text]:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:transparent;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:none}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:transparent;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast: active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible !important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(0.25, 0.8, 0.25, 1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}.md-calendar-month-label.md-calendar-label-clickable{cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:normal}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;vertical-align:middle}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:none;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:"";speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:none;background:transparent;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-16px;top:13.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label .md-input{float:none}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}._md-datepicker-has-triangle-icon{padding-right:18px;margin-right:-18px}[dir=rtl] ._md-datepicker-has-triangle-icon{padding-right:0;padding-left:18px}[dir=rtl] ._md-datepicker-has-triangle-icon{margin-right:auto;margin-left:-18px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:transparent;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(0.25, 0.8, 0.25, 1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:transparent;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(0.5, 0, 0.25, 1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:none}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;bottom:-2.5px;transform:translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-value>label,.md-datepicker-open.md-input-has-placeholder>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(0.25, 0.8, 0.25, 1);transition-delay:.125s}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform:translate(0, 100%) scale(0.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>*:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:none}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast: active){md-dialog{border:1px solid #fff}}@media(max-width: 959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-divider,.layout-gt-xs-row:not(.layout-sm-column)>md-divider,.layout-sm-row:not(.layout-sm-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-divider,.layout-gt-sm-row:not(.layout-md-column)>md-divider,.layout-md-row:not(.layout-md-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-divider,.layout-gt-md-row:not(.layout-lg-column)>md-divider,.layout-lg-row:not(.layout-lg-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) md-fab-trigger,md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible !important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all 200ms ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-0.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-0.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent !important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile>figure,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile-footer{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-header,md-grid-list md-grid-tile md-grid-tile-footer{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-footer h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-header h4,md-grid-list md-grid-tile md-grid-tile-footer h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast: active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0px;vertical-align:middle}md-input-container:after{content:"";display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container textarea,md-input-container input[type=text],md-input-container input[type=password],md-input-container input[type=datetime],md-input-container input[type=datetime-local],md-input-container input[type=date],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week],md-input-container input[type=number],md-input-container input[type=email],md-input-container input[type=url],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=color]{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:30px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:30px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:" *";font-size:13px;vertical-align:top}md-input-container label:not(.md-no-float):not(.md-container-ignore),md-input-container .md-placeholder{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;padding-right:0;z-index:1;transform:translate3d(0, 28px, 0) scale(1);transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-left:0}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{padding-right:2px}[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container .md-placeholder{transform-origin:right top}md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-input-has-value .md-placeholder{padding-left:3px;padding-right:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-left:0}[dir=rtl] md-input-container.md-input-has-value label:not(.md-no-float):not(.md-container-ignore),[dir=rtl] md-input-container.md-input-has-value .md-placeholder{padding-right:3px}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0, 30px, 0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0, 24px, 0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value):not(.md-input-has-placeholder) input:not(:focus){color:transparent}md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:none;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;transition:border-color .4s cubic-bezier(0.25, 0.8, 0.25, 1);width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{padding-left:2px}[dir=rtl] md-input-container .md-input{padding-right:0}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:none}md-input-container .md-input:invalid{outline:none;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none !important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-message-animation,md-input-container .md-char-counter{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);opacity:1;margin-top:0;padding-top:8px}md-input-container .md-input-message-animation:not(.md-char-counter),md-input-container .md-char-counter:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter),[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter-prepare{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter:not(.ng-enter-active){opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0, 6px, 0) scale(0.75);transition:transform cubic-bezier(0.25, 0.8, 0.25, 1) .4s,width cubic-bezier(0.25, 0.8, 0.25, 1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container.md-input-focused .md-input,md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}md-input-container .md-input[disabled],[disabled] md-input-container .md-input{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder{width:calc(100% - 36px);padding:0}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-left.md-icon-right>label .md-placeholder{width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:"";display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:transparent;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast: active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0px 8px 0px}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.01em;line-height:1.2em}md-list.md-dense:not(.md-dense-disabled) md-list-item,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner{min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item::before,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner::before{content:"";min-height:40px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner md-icon:first-child{width:20px;height:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:36px;margin-top:4px;margin-bottom:4px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px;margin-top:6px;margin-bottom:6px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container .md-secondary.md-button,md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container .md-secondary.md-button{margin-top:4px;margin-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item .md-secondary-container md-checkbox:not(.md-dense-disabled),md-list.md-dense:not(.md-dense-disabled) md-list-item .md-list-item-inner .md-secondary-container md-checkbox:not(.md-dense-disabled){min-height:40px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text p,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px;padding-bottom:4px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style::before{content:"";min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line .md-avatar-icon,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line::before,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style::before{content:"";min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-avatar,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense:not(.md-dense-disabled) md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}md-list.md-dense:not(.md-dense-disabled) .md-subheader-inner{padding-top:12px;padding-bottom:12px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0px 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner::before{content:"";min-height:inherit;visibility:hidden;display:inline-block}md-list-item.md-no-proxy,md-list-item .md-no-style{position:relative;padding:0px 16px;flex:1 1 auto}md-list-item.md-no-proxy.md-button,md-list-item .md-no-style.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item.md-no-proxy.md-button,[dir=rtl] md-list-item .md-no-style.md-button{text-align:right}md-list-item.md-no-proxy.md-button>.md-ripple-container,md-list-item .md-no-style.md-button>.md-ripple-container{border-radius:0}md-list-item.md-no-proxy:focus,md-list-item .md-no-style:focus{outline:none}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0 !important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item::before,md-list-item .md-list-item-inner::before{content:"";min-height:48px;visibility:hidden;display:inline-block}md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item .md-list-item-inner md-checkbox.md-secondary{align-self:center}md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label{display:none}md-list-item>md-icon:first-child:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item>md-checkbox,md-list-item .md-list-item-inner>md-checkbox{width:24px;min-height:40px;margin-left:0px;margin-right:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-left:29px}[dir=rtl] md-list-item>md-checkbox,[dir=rtl] md-list-item .md-list-item-inner>md-checkbox{margin-right:0px}md-list-item .md-secondary-container,md-list-item .md-list-item-inner .md-secondary-container{display:flex;align-items:center;position:relative;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-secondary-container,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container{margin-left:0}md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-checkbox,md-list-item .md-list-item-inner .md-secondary-container md-checkbox{margin:0 6px;padding:0 8px;min-height:40px}md-list-item .md-secondary-container md-checkbox:last-child,md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{width:40px;margin-right:0}[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-secondary-container md-switch,md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-secondary-container md-switch,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item>p,md-list-item>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item .md-list-item-inner>.md-list-item-inner>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.01em;margin:0 0 0 0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.01em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.01em;margin:0 0 0 0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:"";min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon{margin-top:12px}md-list-item.md-2-line>md-icon:first-child,md-list-item.md-2-line>.md-no-style>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:"";min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>md-icon:first-child,md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>.md-no-style>.md-avatar{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px;max-height:calc(100vh - 10px);overflow:auto}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:200ms}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:200ms;transition-delay:100ms}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:32px}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media(max-width: 959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media(min-width: 960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px}md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span{float:right}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:right;margin:0 8px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{float:left}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:normal;border-radius:0px;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:"▼";position:absolute;top:0px;speak:none;transform:rotate(270deg) scaleY(0.45) scaleX(0.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(0.45) scaleX(0.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:none;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(0.35, 0, 0.25, 1)}.md-button._md-nav-button:focus{outline:none}md-nav-ink-bar{background-color:#000;position:absolute;bottom:0;left:0;width:100%;height:2px;transform-origin:left top;will-change:transform;transition:transform .125s cubic-bezier(0.35, 0, 0.25, 1)}md-nav-ink-bar.ng-animate{transition:none}md-nav-extra-content{min-height:48px;padding-right:12px}@keyframes indeterminate-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block;transform:scale(1, 1)}[dir=rtl] md-progress-circular{transform:scale(-1, 1)}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 1568.63ms linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0 !important;margin-bottom:0 !important;transform:scale(1, 1)}[dir=rtl] md-progress-linear{transform:scale(-1, 1)}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0, 0) scale(1, 1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px !important;background-position:0px -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(0.39, 0.575, 0.565, 1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent !important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(0.3, 1)}100%{opacity:0;transform:translateX(-50%) scale(0, 1)}}@keyframes buffer{0%{opacity:1;background-position:0px -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(0.1);animation-timing-function:linear}36.6%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.334731432, 0.124819821, 0.785843996, 1)}69.15%{transform:scaleX(0.83);animation-timing-function:cubic-bezier(0.225732004, 0, 0.233648906, 1.3709798)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.1666666667%;animation-timing-function:linear}20%{left:-105.1666666667%;animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(0.302435, 0.38135197, 0.55, 0.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(0.1);animation-timing-function:cubic-bezier(0.205028172, 0.057050836, 0.57660995, 0.453970841)}19.15%{transform:scaleX(0.57);animation-timing-function:cubic-bezier(0.152312994, 0.196431957, 0.648373778, 1.00431535)}44.15%{transform:scaleX(0.91);animation-timing-function:cubic-bezier(0.25775882, -0.003163357, 0.211761916, 1.38178961)}100%{transform:scaleX(0.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(0.15, 0, 0.5150584, 0.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(0.3103299, 0.284057684, 0.8, 0.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(0.4, 0.627034903, 0.6, 0.902025796)}100%{left:117.3888888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(0.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group:focus{outline:none}md-radio-group.md-focused.ng-not-empty .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group.md-focused.ng-empty>md-radio-button:first-child .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}@media(max-width: 599px){.layout-row:not(.layout-xs-column)>md-radio-button,.layout-xs-row>md-radio-button{margin-bottom:0}}@media(min-width: 600px)and (max-width: 959px){.layout-row:not(.layout-gt-xs-column):not(.layout-sm-column)>md-radio-button,.layout-gt-xs-row:not(.layout-sm-column)>md-radio-button,.layout-sm-row:not(.layout-sm-column)>md-radio-button{margin-bottom:0}}@media(min-width: 960px)and (max-width: 1279px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-md-column)>md-radio-button,.layout-gt-sm-row:not(.layout-md-column)>md-radio-button,.layout-md-row:not(.layout-md-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1280px)and (max-width: 1919px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-lg-column)>md-radio-button,.layout-gt-md-row:not(.layout-lg-column)>md-radio-button,.layout-lg-row:not(.layout-lg-column)>md-radio-button{margin-bottom:0}}@media(min-width: 1920px){.layout-row:not(.layout-gt-xs-column):not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-xs-row:not(.layout-gt-sm-column):not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-sm-row:not(.layout-gt-md-column):not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-md-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-gt-lg-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button,.layout-xl-row:not(.layout-gt-lg-column):not(.layout-xl-column)>md-radio-button{margin-bottom:0}}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px 10px 2px 6px;box-sizing:border-box;margin-top:0;margin-bottom:0}.md-inline-form md-radio-group md-radio-button .md-label{top:4px}.md-inline-form md-radio-group md-radio-button .md-container{margin-top:2px}@media screen and (-ms-high-contrast: active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(0.25, 0.8, 0.25, 1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) md-select:not([placeholder]) .md-select-placeholder span:first-child{transform:translate(-2px, -22px) scale(0.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto !important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transition-delay:100ms}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:250ms}.md-inline-form md-select{margin-top:20px}md-input-container>md-select,.md-inline-form md-input-container>md-select{margin-top:0px}md-input-container>md-select{order:2}md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after{content:" *";font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex}md-select[required].ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select.ng-required.ng-empty.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:" *";font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x;padding-bottom:2px;padding-top:1px;transform:translateY(1px)}md-select:focus{outline:none}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]):focus .md-select-value{border-bottom-style:solid;border-bottom-width:2px;padding-bottom:0px}md-input-container md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px}md-input-container md-select[disabled] .md-select-value{background-position:bottom -1px left 0}md-input-container md-select .md-select-value{min-height:26px;border-bottom-width:1px;padding-bottom:1px}md-input-container md-select .md-select-value.md-select-placeholder{padding-left:0;padding-right:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-left:2px}[dir=rtl] md-input-container md-select .md-select-value.md-select-placeholder{padding-right:0}.md-select-value{display:flex;align-items:center;padding-top:2px;padding-bottom:1px;padding-left:0;padding-right:2px;border-bottom-width:1px;border-bottom-style:solid;background-color:rgba(0,0,0,0);position:relative;box-sizing:content-box;min-width:88px;min-height:26px;margin-bottom:auto;-ms-flex-item-align:start;flex-grow:1}[dir=rtl] .md-select-value{padding-left:2px}[dir=rtl] .md-select-value{padding-right:0}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:right;width:24px;transform:translateY(-2px);font-size:1.2rem}[dir=rtl] .md-select-value .md-select-icon{align-items:flex-start}[dir=rtl] .md-select-value .md-select-icon{text-align:left}.md-select-value .md-select-icon:after{display:block;content:"▼";position:relative;top:2px;right:-4px;left:auto;speak:none;font-size:13px;transform:scaleY(0.5)}[dir=rtl] .md-select-value .md-select-icon:after{right:auto}[dir=rtl] .md-select-value .md-select-icon:after{left:-4px}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:none}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast: active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:18px;height:18px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:18px;height:18px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4px;top:0px;display:table;width:6px;height:12px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:table;width:10.8px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:""}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-locked-open-remove.md-closed{position:static;display:flex;transform:translate3d(0, 0, 0)}md-sidenav.md-closed.md-locked-open-add{position:static;display:flex;transform:translate3d(0%, 0, 0)}md-sidenav.md-closed.md-locked-open-add:not(.md-locked-open-add-active){transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(0.55, 0, 0.55, 0.2),min-width .3s cubic-bezier(0.55, 0, 0.55, 0.2);width:0 !important;min-width:0 !important}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0%, 0, 0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%, 0, 0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%, 0)}.md-sidenav-right.md-closed{transform:translate(0%, 0)}@media(min-width: 600px){md-sidenav{max-width:400px}}@media(max-width: 456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast: active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(0.7)}30%{transform:scale(1)}100%{transform:scale(0.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(0.7)}50%{transform:scale(0.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(0.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider *:after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:none;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%, -50%, 0);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(0.7);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:"";position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(0.4) translate3d(0, 67.5px, 0);transition:all .3s cubic-bezier(0.35, 0, 0.25, 1)}md-slider .md-sign:after{position:absolute;content:"";left:0px;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0, -8px, 0);transition:all .2s cubic-bezier(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0px}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(0.7);opacity:0;transition:all .35s cubic-bezier(0.35, 0, 0.25, 1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(0.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:none}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-track-ticks,md-slider:not([md-discrete]) .md-sign{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(0.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(0.35, 0, 0.25, 1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(0.35, 0, 0.25, 1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0, 0, 0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0, 0, 0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(0.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(0.4) translate3d(67.5px, 0, 0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0, -8px, 0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:bold}md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0, 0, 0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>*:first-child:not(md-slider),md-slider-container>*:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-property:color,max-width}md-slider-container>*:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>*:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>*:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>*:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>*:first-child:not(md-slider),md-slider-container[md-vertical]>*:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast: active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute !important;transform:translate3d(-9999px, -9999px, 0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0, 0, 0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0px 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0px 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0 0 0 0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}[md-swipe-left],[md-swipe-right]{touch-action:pan-y}[md-swipe-up],[md-swipe-down]{touch-action:pan-x}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:none;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:0px;margin-left:8px}md-switch.md-inverted .md-container{margin-right:initial;margin-left:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-right:8px}[dir=rtl] md-switch.md-inverted .md-container{margin-left:initial}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0, 0, 0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%, 0, 0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:none;height:20px;width:20px;border-radius:50%;box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:"";position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb-container,md-switch:not(.md-dragging) .md-thumb{transition:all .08s linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:.05s}@media screen and (-ms-high-contrast: active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom]>md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom]>md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate(0, 0)}md-tabs-wrapper md-prev-button,md-tabs-wrapper md-next-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(0.35, 0, 0.25, 1)}md-tabs-wrapper md-prev-button:focus,md-tabs-wrapper md-next-button:focus{outline:none}md-tabs-wrapper md-prev-button.md-disabled,md-tabs-wrapper md-next-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-prev-button.ng-leave,md-tabs-wrapper md-next-button.ng-leave{transition:none}md-tabs-wrapper md-prev-button md-icon,md-tabs-wrapper md-next-button md-icon{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}[dir=rtl] md-tabs-wrapper md-prev-button,[dir=rtl] md-tabs-wrapper md-next-button{transform:rotateY(180deg) translateY(-50%)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate(-50%, -50%) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:"";display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:flex;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);position:absolute;left:0;transform:translate(0, 0)}md-pagination-wrapper:after{content:"";display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;justify-content:center}md-pagination-wrapper md-tab-item{min-width:72px}@media(min-width: 600px){md-pagination-wrapper md-tab-item{min-width:160px}}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:flex;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(0.35, 0, 0.25, 1);overflow:auto;transform:translate(0, 0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.ng-leave,md-tab-content.md-no-transition{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;visibility:hidden}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;visibility:hidden}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div{flex:1 0 100%;min-width:0}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left .125s cubic-bezier(0.35, 0, 0.25, 1),right .25s cubic-bezier(0.35, 0, 0.25, 1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(0.35, 0, 0.25, 1),right .125s cubic-bezier(0.35, 0, 0.25, 1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px;transition:background-color .35s cubic-bezier(0.35, 0, 0.25, 1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused,.md-tab:focus{box-shadow:none;outline:none}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs,md-toolbar+md-dialog-content md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 8px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast .md-toast-content{display:flex;flex-direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 16px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0, 0, 0) rotateZ(0deg);transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);justify-content:flex-start}md-toast .md-toast-content::before{content:"";min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2)}md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content,md-toast.md-swipedown .md-toast-content{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0, 100%, 0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0, -100%, 0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0, 0, 0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0, 100%, 0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0, -50%, 0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0, 50%, 0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0, -100%, 0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:8px}[dir=rtl] md-toast .md-button{margin-right:8px}[dir=rtl] md-toast .md-button{margin-left:0}@media(max-width: 959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0, -50%, 0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0, 50%, 0)}}@media(min-width: 960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%, 0, 0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%, 0, 0)}}@media(min-width: 1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast: active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden !important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar *:before,md-toolbar *:after{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools md-checkbox{margin:inherit}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(0.35, 0, 0.25, 1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.ng-animate,.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast: active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media(min-width: 0)and (max-width: 959px)and (orientation: portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media(min-width: 0)and (max-width: 959px)and (orientation: landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}.md-tooltip{display:inline-block;pointer-events:none;border-radius:4px;overflow:hidden;opacity:0;font-weight:500;font-size:14px;white-space:nowrap;text-overflow:ellipsis;height:32px;line-height:32px;padding-right:16px;padding-left:16px}.md-tooltip.md-origin-top{transform-origin:center bottom;margin-top:-24px}.md-tooltip.md-origin-right{transform-origin:left center;margin-left:24px}.md-tooltip.md-origin-bottom{transform-origin:center top;margin-top:24px}.md-tooltip.md-origin-left{transform-origin:right center;margin-left:-24px}@media(min-width: 960px){.md-tooltip{font-size:10px;height:22px;line-height:22px;padding-right:8px;padding-left:8px}.md-tooltip.md-origin-top{margin-top:-14px}.md-tooltip.md-origin-right{margin-left:14px}.md-tooltip.md-origin-bottom{margin-top:14px}.md-tooltip.md-origin-left{margin-left:-14px}}.md-tooltip.md-show-add{transform:scale(0)}.md-tooltip.md-show{transition:all .4s cubic-bezier(0.25, 0.8, 0.25, 1);transition-duration:150ms;transform:scale(1);opacity:.9}.md-tooltip.md-hide{transition:all .3s cubic-bezier(0.55, 0, 0.55, 0.2);transition-duration:150ms;transform:scale(0);opacity:0}.md-truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.md-truncate.md-clip{text-overflow:clip}.md-truncate.flex{width:0}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0px 1px 3px 0px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0px 1px 5px 0px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0px 1px 8px 0px rgba(0,0,0,.2),0px 3px 4px 0px rgba(0,0,0,.14),0px 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 5px 8px 0px rgba(0,0,0,.14),0px 1px 14px 0px rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0px 4px 5px -2px rgba(0,0,0,.2),0px 7px 10px 1px rgba(0,0,0,.14),0px 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0px 5px 6px -3px rgba(0,0,0,.2),0px 9px 12px 1px rgba(0,0,0,.14),0px 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0px 6px 6px -3px rgba(0,0,0,.2),0px 10px 14px 1px rgba(0,0,0,.14),0px 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0px 6px 7px -4px rgba(0,0,0,.2),0px 11px 15px 1px rgba(0,0,0,.14),0px 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 13px 19px 2px rgba(0,0,0,.14),0px 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0px 7px 9px -4px rgba(0,0,0,.2),0px 14px 21px 2px rgba(0,0,0,.14),0px 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0px 8px 9px -5px rgba(0,0,0,.2),0px 15px 22px 2px rgba(0,0,0,.14),0px 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0px 8px 10px -5px rgba(0,0,0,.2),0px 16px 24px 2px rgba(0,0,0,.14),0px 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0px 8px 11px -5px rgba(0,0,0,.2),0px 17px 26px 2px rgba(0,0,0,.14),0px 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0px 9px 11px -5px rgba(0,0,0,.2),0px 18px 28px 2px rgba(0,0,0,.14),0px 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0px 9px 12px -6px rgba(0,0,0,.2),0px 19px 29px 2px rgba(0,0,0,.14),0px 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 20px 31px 3px rgba(0,0,0,.14),0px 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0px 10px 13px -6px rgba(0,0,0,.2),0px 21px 33px 3px rgba(0,0,0,.14),0px 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0px 10px 14px -6px rgba(0,0,0,.2),0px 22px 35px 3px rgba(0,0,0,.14),0px 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0px 11px 14px -7px rgba(0,0,0,.2),0px 23px 36px 3px rgba(0,0,0,.14),0px 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast: active){md-whiteframe{border:1px solid #fff}}@media print{md-whiteframe,[md-whiteframe]{background-color:#fff}}[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak{display:none !important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.offset-0,.flex-offset-0,.layout-margin .flex-offset-0,.layout-margin .offset-0{margin-left:0}[dir=rtl] .offset-0,[dir=rtl] .flex-offset-0,[dir=rtl] .layout-margin .flex-offset-0,[dir=rtl] .layout-margin .offset-0{margin-left:auto;margin-right:0}.offset-5,.flex-offset-5,.layout-margin .flex-offset-5,.layout-margin .offset-5{margin-left:5%}[dir=rtl] .offset-5,[dir=rtl] .flex-offset-5,[dir=rtl] .layout-margin .flex-offset-5,[dir=rtl] .layout-margin .offset-5{margin-left:auto;margin-right:5%}.offset-10,.flex-offset-10,.layout-margin .flex-offset-10,.layout-margin .offset-10{margin-left:10%}[dir=rtl] .offset-10,[dir=rtl] .flex-offset-10,[dir=rtl] .layout-margin .flex-offset-10,[dir=rtl] .layout-margin .offset-10{margin-left:auto;margin-right:10%}.offset-15,.flex-offset-15,.layout-margin .flex-offset-15,.layout-margin .offset-15{margin-left:15%}[dir=rtl] .offset-15,[dir=rtl] .flex-offset-15,[dir=rtl] .layout-margin .flex-offset-15,[dir=rtl] .layout-margin .offset-15{margin-left:auto;margin-right:15%}.offset-20,.flex-offset-20,.layout-margin .flex-offset-20,.layout-margin .offset-20{margin-left:20%}[dir=rtl] .offset-20,[dir=rtl] .flex-offset-20,[dir=rtl] .layout-margin .flex-offset-20,[dir=rtl] .layout-margin .offset-20{margin-left:auto;margin-right:20%}.offset-25,.flex-offset-25,.layout-margin .flex-offset-25,.layout-margin .offset-25{margin-left:25%}[dir=rtl] .offset-25,[dir=rtl] .flex-offset-25,[dir=rtl] .layout-margin .flex-offset-25,[dir=rtl] .layout-margin .offset-25{margin-left:auto;margin-right:25%}.offset-30,.flex-offset-30,.layout-margin .flex-offset-30,.layout-margin .offset-30{margin-left:30%}[dir=rtl] .offset-30,[dir=rtl] .flex-offset-30,[dir=rtl] .layout-margin .flex-offset-30,[dir=rtl] .layout-margin .offset-30{margin-left:auto;margin-right:30%}.offset-35,.flex-offset-35,.layout-margin .flex-offset-35,.layout-margin .offset-35{margin-left:35%}[dir=rtl] .offset-35,[dir=rtl] .flex-offset-35,[dir=rtl] .layout-margin .flex-offset-35,[dir=rtl] .layout-margin .offset-35{margin-left:auto;margin-right:35%}.offset-40,.flex-offset-40,.layout-margin .flex-offset-40,.layout-margin .offset-40{margin-left:40%}[dir=rtl] .offset-40,[dir=rtl] .flex-offset-40,[dir=rtl] .layout-margin .flex-offset-40,[dir=rtl] .layout-margin .offset-40{margin-left:auto;margin-right:40%}.offset-45,.flex-offset-45,.layout-margin .flex-offset-45,.layout-margin .offset-45{margin-left:45%}[dir=rtl] .offset-45,[dir=rtl] .flex-offset-45,[dir=rtl] .layout-margin .flex-offset-45,[dir=rtl] .layout-margin .offset-45{margin-left:auto;margin-right:45%}.offset-50,.flex-offset-50,.layout-margin .flex-offset-50,.layout-margin .offset-50{margin-left:50%}[dir=rtl] .offset-50,[dir=rtl] .flex-offset-50,[dir=rtl] .layout-margin .flex-offset-50,[dir=rtl] .layout-margin .offset-50{margin-left:auto;margin-right:50%}.offset-55,.flex-offset-55,.layout-margin .flex-offset-55,.layout-margin .offset-55{margin-left:55%}[dir=rtl] .offset-55,[dir=rtl] .flex-offset-55,[dir=rtl] .layout-margin .flex-offset-55,[dir=rtl] .layout-margin .offset-55{margin-left:auto;margin-right:55%}.offset-60,.flex-offset-60,.layout-margin .flex-offset-60,.layout-margin .offset-60{margin-left:60%}[dir=rtl] .offset-60,[dir=rtl] .flex-offset-60,[dir=rtl] .layout-margin .flex-offset-60,[dir=rtl] .layout-margin .offset-60{margin-left:auto;margin-right:60%}.offset-65,.flex-offset-65,.layout-margin .flex-offset-65,.layout-margin .offset-65{margin-left:65%}[dir=rtl] .offset-65,[dir=rtl] .flex-offset-65,[dir=rtl] .layout-margin .flex-offset-65,[dir=rtl] .layout-margin .offset-65{margin-left:auto;margin-right:65%}.offset-70,.flex-offset-70,.layout-margin .flex-offset-70,.layout-margin .offset-70{margin-left:70%}[dir=rtl] .offset-70,[dir=rtl] .flex-offset-70,[dir=rtl] .layout-margin .flex-offset-70,[dir=rtl] .layout-margin .offset-70{margin-left:auto;margin-right:70%}.offset-75,.flex-offset-75,.layout-margin .flex-offset-75,.layout-margin .offset-75{margin-left:75%}[dir=rtl] .offset-75,[dir=rtl] .flex-offset-75,[dir=rtl] .layout-margin .flex-offset-75,[dir=rtl] .layout-margin .offset-75{margin-left:auto;margin-right:75%}.offset-80,.flex-offset-80,.layout-margin .flex-offset-80,.layout-margin .offset-80{margin-left:80%}[dir=rtl] .offset-80,[dir=rtl] .flex-offset-80,[dir=rtl] .layout-margin .flex-offset-80,[dir=rtl] .layout-margin .offset-80{margin-left:auto;margin-right:80%}.offset-85,.flex-offset-85,.layout-margin .flex-offset-85,.layout-margin .offset-85{margin-left:85%}[dir=rtl] .offset-85,[dir=rtl] .flex-offset-85,[dir=rtl] .layout-margin .flex-offset-85,[dir=rtl] .layout-margin .offset-85{margin-left:auto;margin-right:85%}.offset-90,.flex-offset-90,.layout-margin .flex-offset-90,.layout-margin .offset-90{margin-left:90%}[dir=rtl] .offset-90,[dir=rtl] .flex-offset-90,[dir=rtl] .layout-margin .flex-offset-90,[dir=rtl] .layout-margin .offset-90{margin-left:auto;margin-right:90%}.offset-95,.flex-offset-95,.layout-margin .flex-offset-95,.layout-margin .offset-95{margin-left:95%}[dir=rtl] .offset-95,[dir=rtl] .flex-offset-95,[dir=rtl] .layout-margin .flex-offset-95,[dir=rtl] .layout-margin .offset-95{margin-left:auto;margin-right:95%}.offset-33,.flex-offset-33,.layout-margin .flex-offset-33,.layout-margin .offset-33{margin-left:33.3333333333%}.offset-66,.flex-offset-66,.layout-margin .flex-offset-66,.layout-margin .offset-66{margin-left:66.6666666667%}[dir=rtl] .offset-66,[dir=rtl] .flex-offset-66,[dir=rtl] .layout-margin .flex-offset-66,[dir=rtl] .layout-margin .offset-66{margin-left:auto;margin-right:66.6666666667%}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-start,.layout-align-center-center,.layout-align-center-end,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-start,.layout-align-end-center,.layout-align-end-end,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-start,.layout-align-space-around-end,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-start,.layout-align-space-between-end,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-start-start,.layout-align-center-start,.layout-align-end-start,.layout-align-space-between-start,.layout-align-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-start-center,.layout-align-center-center,.layout-align-end-center,.layout-align-space-between-center,.layout-align-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-start-center>*,.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-between-center>*,.layout-align-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-start-end,.layout-align-center-end,.layout-align-end-end,.layout-align-space-between-end,.layout-align-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-start-stretch,.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-between-stretch,.layout-align-space-around-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-md,.layout-padding>*,.layout-padding-gt-sm>*,.layout-padding-md>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding-gt-lg>*,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg,.layout-padding>.flex-lg,.layout-padding>.flex-gt-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-md,.layout-margin>*,.layout-margin-gt-sm>*,.layout-margin-md>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin-gt-lg>*,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg,.layout-margin>.flex-gt-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media(max-width: 599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.offset-xs-0,.flex-offset-xs-0,.layout-margin .flex-offset-xs-0,.layout-margin .offset-xs-0{margin-left:0}[dir=rtl] .offset-xs-0,[dir=rtl] .flex-offset-xs-0,[dir=rtl] .layout-margin .flex-offset-xs-0,[dir=rtl] .layout-margin .offset-xs-0{margin-left:auto;margin-right:0}.offset-xs-5,.flex-offset-xs-5,.layout-margin .flex-offset-xs-5,.layout-margin .offset-xs-5{margin-left:5%}[dir=rtl] .offset-xs-5,[dir=rtl] .flex-offset-xs-5,[dir=rtl] .layout-margin .flex-offset-xs-5,[dir=rtl] .layout-margin .offset-xs-5{margin-left:auto;margin-right:5%}.offset-xs-10,.flex-offset-xs-10,.layout-margin .flex-offset-xs-10,.layout-margin .offset-xs-10{margin-left:10%}[dir=rtl] .offset-xs-10,[dir=rtl] .flex-offset-xs-10,[dir=rtl] .layout-margin .flex-offset-xs-10,[dir=rtl] .layout-margin .offset-xs-10{margin-left:auto;margin-right:10%}.offset-xs-15,.flex-offset-xs-15,.layout-margin .flex-offset-xs-15,.layout-margin .offset-xs-15{margin-left:15%}[dir=rtl] .offset-xs-15,[dir=rtl] .flex-offset-xs-15,[dir=rtl] .layout-margin .flex-offset-xs-15,[dir=rtl] .layout-margin .offset-xs-15{margin-left:auto;margin-right:15%}.offset-xs-20,.flex-offset-xs-20,.layout-margin .flex-offset-xs-20,.layout-margin .offset-xs-20{margin-left:20%}[dir=rtl] .offset-xs-20,[dir=rtl] .flex-offset-xs-20,[dir=rtl] .layout-margin .flex-offset-xs-20,[dir=rtl] .layout-margin .offset-xs-20{margin-left:auto;margin-right:20%}.offset-xs-25,.flex-offset-xs-25,.layout-margin .flex-offset-xs-25,.layout-margin .offset-xs-25{margin-left:25%}[dir=rtl] .offset-xs-25,[dir=rtl] .flex-offset-xs-25,[dir=rtl] .layout-margin .flex-offset-xs-25,[dir=rtl] .layout-margin .offset-xs-25{margin-left:auto;margin-right:25%}.offset-xs-30,.flex-offset-xs-30,.layout-margin .flex-offset-xs-30,.layout-margin .offset-xs-30{margin-left:30%}[dir=rtl] .offset-xs-30,[dir=rtl] .flex-offset-xs-30,[dir=rtl] .layout-margin .flex-offset-xs-30,[dir=rtl] .layout-margin .offset-xs-30{margin-left:auto;margin-right:30%}.offset-xs-35,.flex-offset-xs-35,.layout-margin .flex-offset-xs-35,.layout-margin .offset-xs-35{margin-left:35%}[dir=rtl] .offset-xs-35,[dir=rtl] .flex-offset-xs-35,[dir=rtl] .layout-margin .flex-offset-xs-35,[dir=rtl] .layout-margin .offset-xs-35{margin-left:auto;margin-right:35%}.offset-xs-40,.flex-offset-xs-40,.layout-margin .flex-offset-xs-40,.layout-margin .offset-xs-40{margin-left:40%}[dir=rtl] .offset-xs-40,[dir=rtl] .flex-offset-xs-40,[dir=rtl] .layout-margin .flex-offset-xs-40,[dir=rtl] .layout-margin .offset-xs-40{margin-left:auto;margin-right:40%}.offset-xs-45,.flex-offset-xs-45,.layout-margin .flex-offset-xs-45,.layout-margin .offset-xs-45{margin-left:45%}[dir=rtl] .offset-xs-45,[dir=rtl] .flex-offset-xs-45,[dir=rtl] .layout-margin .flex-offset-xs-45,[dir=rtl] .layout-margin .offset-xs-45{margin-left:auto;margin-right:45%}.offset-xs-50,.flex-offset-xs-50,.layout-margin .flex-offset-xs-50,.layout-margin .offset-xs-50{margin-left:50%}[dir=rtl] .offset-xs-50,[dir=rtl] .flex-offset-xs-50,[dir=rtl] .layout-margin .flex-offset-xs-50,[dir=rtl] .layout-margin .offset-xs-50{margin-left:auto;margin-right:50%}.offset-xs-55,.flex-offset-xs-55,.layout-margin .flex-offset-xs-55,.layout-margin .offset-xs-55{margin-left:55%}[dir=rtl] .offset-xs-55,[dir=rtl] .flex-offset-xs-55,[dir=rtl] .layout-margin .flex-offset-xs-55,[dir=rtl] .layout-margin .offset-xs-55{margin-left:auto;margin-right:55%}.offset-xs-60,.flex-offset-xs-60,.layout-margin .flex-offset-xs-60,.layout-margin .offset-xs-60{margin-left:60%}[dir=rtl] .offset-xs-60,[dir=rtl] .flex-offset-xs-60,[dir=rtl] .layout-margin .flex-offset-xs-60,[dir=rtl] .layout-margin .offset-xs-60{margin-left:auto;margin-right:60%}.offset-xs-65,.flex-offset-xs-65,.layout-margin .flex-offset-xs-65,.layout-margin .offset-xs-65{margin-left:65%}[dir=rtl] .offset-xs-65,[dir=rtl] .flex-offset-xs-65,[dir=rtl] .layout-margin .flex-offset-xs-65,[dir=rtl] .layout-margin .offset-xs-65{margin-left:auto;margin-right:65%}.offset-xs-70,.flex-offset-xs-70,.layout-margin .flex-offset-xs-70,.layout-margin .offset-xs-70{margin-left:70%}[dir=rtl] .offset-xs-70,[dir=rtl] .flex-offset-xs-70,[dir=rtl] .layout-margin .flex-offset-xs-70,[dir=rtl] .layout-margin .offset-xs-70{margin-left:auto;margin-right:70%}.offset-xs-75,.flex-offset-xs-75,.layout-margin .flex-offset-xs-75,.layout-margin .offset-xs-75{margin-left:75%}[dir=rtl] .offset-xs-75,[dir=rtl] .flex-offset-xs-75,[dir=rtl] .layout-margin .flex-offset-xs-75,[dir=rtl] .layout-margin .offset-xs-75{margin-left:auto;margin-right:75%}.offset-xs-80,.flex-offset-xs-80,.layout-margin .flex-offset-xs-80,.layout-margin .offset-xs-80{margin-left:80%}[dir=rtl] .offset-xs-80,[dir=rtl] .flex-offset-xs-80,[dir=rtl] .layout-margin .flex-offset-xs-80,[dir=rtl] .layout-margin .offset-xs-80{margin-left:auto;margin-right:80%}.offset-xs-85,.flex-offset-xs-85,.layout-margin .flex-offset-xs-85,.layout-margin .offset-xs-85{margin-left:85%}[dir=rtl] .offset-xs-85,[dir=rtl] .flex-offset-xs-85,[dir=rtl] .layout-margin .flex-offset-xs-85,[dir=rtl] .layout-margin .offset-xs-85{margin-left:auto;margin-right:85%}.offset-xs-90,.flex-offset-xs-90,.layout-margin .flex-offset-xs-90,.layout-margin .offset-xs-90{margin-left:90%}[dir=rtl] .offset-xs-90,[dir=rtl] .flex-offset-xs-90,[dir=rtl] .layout-margin .flex-offset-xs-90,[dir=rtl] .layout-margin .offset-xs-90{margin-left:auto;margin-right:90%}.offset-xs-95,.flex-offset-xs-95,.layout-margin .flex-offset-xs-95,.layout-margin .offset-xs-95{margin-left:95%}[dir=rtl] .offset-xs-95,[dir=rtl] .flex-offset-xs-95,[dir=rtl] .layout-margin .flex-offset-xs-95,[dir=rtl] .layout-margin .offset-xs-95{margin-left:auto;margin-right:95%}.offset-xs-33,.flex-offset-xs-33,.layout-margin .flex-offset-xs-33,.layout-margin .offset-xs-33{margin-left:33.3333333333%}.offset-xs-66,.flex-offset-xs-66,.layout-margin .flex-offset-xs-66,.layout-margin .offset-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-xs-66,[dir=rtl] .flex-offset-xs-66,[dir=rtl] .layout-margin .flex-offset-xs-66,[dir=rtl] .layout-margin .offset-xs-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-start,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-start,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-start,.layout-align-xs-space-around-end,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-start,.layout-align-xs-space-between-end,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-start-start,.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-between-start,.layout-align-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-start-center,.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-between-center,.layout-align-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-start-center>*,.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-start-end,.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-between-end,.layout-align-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-start-stretch,.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-space-around-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media(min-width: 600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.offset-gt-xs-0,.flex-offset-gt-xs-0,.layout-margin .flex-offset-gt-xs-0,.layout-margin .offset-gt-xs-0{margin-left:0}[dir=rtl] .offset-gt-xs-0,[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .flex-offset-gt-xs-0,[dir=rtl] .layout-margin .offset-gt-xs-0{margin-left:auto;margin-right:0}.offset-gt-xs-5,.flex-offset-gt-xs-5,.layout-margin .flex-offset-gt-xs-5,.layout-margin .offset-gt-xs-5{margin-left:5%}[dir=rtl] .offset-gt-xs-5,[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .flex-offset-gt-xs-5,[dir=rtl] .layout-margin .offset-gt-xs-5{margin-left:auto;margin-right:5%}.offset-gt-xs-10,.flex-offset-gt-xs-10,.layout-margin .flex-offset-gt-xs-10,.layout-margin .offset-gt-xs-10{margin-left:10%}[dir=rtl] .offset-gt-xs-10,[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .flex-offset-gt-xs-10,[dir=rtl] .layout-margin .offset-gt-xs-10{margin-left:auto;margin-right:10%}.offset-gt-xs-15,.flex-offset-gt-xs-15,.layout-margin .flex-offset-gt-xs-15,.layout-margin .offset-gt-xs-15{margin-left:15%}[dir=rtl] .offset-gt-xs-15,[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .flex-offset-gt-xs-15,[dir=rtl] .layout-margin .offset-gt-xs-15{margin-left:auto;margin-right:15%}.offset-gt-xs-20,.flex-offset-gt-xs-20,.layout-margin .flex-offset-gt-xs-20,.layout-margin .offset-gt-xs-20{margin-left:20%}[dir=rtl] .offset-gt-xs-20,[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .flex-offset-gt-xs-20,[dir=rtl] .layout-margin .offset-gt-xs-20{margin-left:auto;margin-right:20%}.offset-gt-xs-25,.flex-offset-gt-xs-25,.layout-margin .flex-offset-gt-xs-25,.layout-margin .offset-gt-xs-25{margin-left:25%}[dir=rtl] .offset-gt-xs-25,[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .flex-offset-gt-xs-25,[dir=rtl] .layout-margin .offset-gt-xs-25{margin-left:auto;margin-right:25%}.offset-gt-xs-30,.flex-offset-gt-xs-30,.layout-margin .flex-offset-gt-xs-30,.layout-margin .offset-gt-xs-30{margin-left:30%}[dir=rtl] .offset-gt-xs-30,[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .flex-offset-gt-xs-30,[dir=rtl] .layout-margin .offset-gt-xs-30{margin-left:auto;margin-right:30%}.offset-gt-xs-35,.flex-offset-gt-xs-35,.layout-margin .flex-offset-gt-xs-35,.layout-margin .offset-gt-xs-35{margin-left:35%}[dir=rtl] .offset-gt-xs-35,[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .flex-offset-gt-xs-35,[dir=rtl] .layout-margin .offset-gt-xs-35{margin-left:auto;margin-right:35%}.offset-gt-xs-40,.flex-offset-gt-xs-40,.layout-margin .flex-offset-gt-xs-40,.layout-margin .offset-gt-xs-40{margin-left:40%}[dir=rtl] .offset-gt-xs-40,[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .flex-offset-gt-xs-40,[dir=rtl] .layout-margin .offset-gt-xs-40{margin-left:auto;margin-right:40%}.offset-gt-xs-45,.flex-offset-gt-xs-45,.layout-margin .flex-offset-gt-xs-45,.layout-margin .offset-gt-xs-45{margin-left:45%}[dir=rtl] .offset-gt-xs-45,[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .flex-offset-gt-xs-45,[dir=rtl] .layout-margin .offset-gt-xs-45{margin-left:auto;margin-right:45%}.offset-gt-xs-50,.flex-offset-gt-xs-50,.layout-margin .flex-offset-gt-xs-50,.layout-margin .offset-gt-xs-50{margin-left:50%}[dir=rtl] .offset-gt-xs-50,[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .flex-offset-gt-xs-50,[dir=rtl] .layout-margin .offset-gt-xs-50{margin-left:auto;margin-right:50%}.offset-gt-xs-55,.flex-offset-gt-xs-55,.layout-margin .flex-offset-gt-xs-55,.layout-margin .offset-gt-xs-55{margin-left:55%}[dir=rtl] .offset-gt-xs-55,[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .flex-offset-gt-xs-55,[dir=rtl] .layout-margin .offset-gt-xs-55{margin-left:auto;margin-right:55%}.offset-gt-xs-60,.flex-offset-gt-xs-60,.layout-margin .flex-offset-gt-xs-60,.layout-margin .offset-gt-xs-60{margin-left:60%}[dir=rtl] .offset-gt-xs-60,[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .flex-offset-gt-xs-60,[dir=rtl] .layout-margin .offset-gt-xs-60{margin-left:auto;margin-right:60%}.offset-gt-xs-65,.flex-offset-gt-xs-65,.layout-margin .flex-offset-gt-xs-65,.layout-margin .offset-gt-xs-65{margin-left:65%}[dir=rtl] .offset-gt-xs-65,[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .flex-offset-gt-xs-65,[dir=rtl] .layout-margin .offset-gt-xs-65{margin-left:auto;margin-right:65%}.offset-gt-xs-70,.flex-offset-gt-xs-70,.layout-margin .flex-offset-gt-xs-70,.layout-margin .offset-gt-xs-70{margin-left:70%}[dir=rtl] .offset-gt-xs-70,[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .flex-offset-gt-xs-70,[dir=rtl] .layout-margin .offset-gt-xs-70{margin-left:auto;margin-right:70%}.offset-gt-xs-75,.flex-offset-gt-xs-75,.layout-margin .flex-offset-gt-xs-75,.layout-margin .offset-gt-xs-75{margin-left:75%}[dir=rtl] .offset-gt-xs-75,[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .flex-offset-gt-xs-75,[dir=rtl] .layout-margin .offset-gt-xs-75{margin-left:auto;margin-right:75%}.offset-gt-xs-80,.flex-offset-gt-xs-80,.layout-margin .flex-offset-gt-xs-80,.layout-margin .offset-gt-xs-80{margin-left:80%}[dir=rtl] .offset-gt-xs-80,[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .flex-offset-gt-xs-80,[dir=rtl] .layout-margin .offset-gt-xs-80{margin-left:auto;margin-right:80%}.offset-gt-xs-85,.flex-offset-gt-xs-85,.layout-margin .flex-offset-gt-xs-85,.layout-margin .offset-gt-xs-85{margin-left:85%}[dir=rtl] .offset-gt-xs-85,[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .flex-offset-gt-xs-85,[dir=rtl] .layout-margin .offset-gt-xs-85{margin-left:auto;margin-right:85%}.offset-gt-xs-90,.flex-offset-gt-xs-90,.layout-margin .flex-offset-gt-xs-90,.layout-margin .offset-gt-xs-90{margin-left:90%}[dir=rtl] .offset-gt-xs-90,[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .flex-offset-gt-xs-90,[dir=rtl] .layout-margin .offset-gt-xs-90{margin-left:auto;margin-right:90%}.offset-gt-xs-95,.flex-offset-gt-xs-95,.layout-margin .flex-offset-gt-xs-95,.layout-margin .offset-gt-xs-95{margin-left:95%}[dir=rtl] .offset-gt-xs-95,[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .flex-offset-gt-xs-95,[dir=rtl] .layout-margin .offset-gt-xs-95{margin-left:auto;margin-right:95%}.offset-gt-xs-33,.flex-offset-gt-xs-33,.layout-margin .flex-offset-gt-xs-33,.layout-margin .offset-gt-xs-33{margin-left:33.3333333333%}.offset-gt-xs-66,.flex-offset-gt-xs-66,.layout-margin .flex-offset-gt-xs-66,.layout-margin .offset-gt-xs-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-xs-66,[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .flex-offset-gt-xs-66,[dir=rtl] .layout-margin .offset-gt-xs-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-start-start,.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-start-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-start-center>*,.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-start-end,.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-start-stretch,.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media(min-width: 600px)and (max-width: 959px){.hide:not(.show-gt-xs):not(.show-sm):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.offset-sm-0,.flex-offset-sm-0,.layout-margin .flex-offset-sm-0,.layout-margin .offset-sm-0{margin-left:0}[dir=rtl] .offset-sm-0,[dir=rtl] .flex-offset-sm-0,[dir=rtl] .layout-margin .flex-offset-sm-0,[dir=rtl] .layout-margin .offset-sm-0{margin-left:auto;margin-right:0}.offset-sm-5,.flex-offset-sm-5,.layout-margin .flex-offset-sm-5,.layout-margin .offset-sm-5{margin-left:5%}[dir=rtl] .offset-sm-5,[dir=rtl] .flex-offset-sm-5,[dir=rtl] .layout-margin .flex-offset-sm-5,[dir=rtl] .layout-margin .offset-sm-5{margin-left:auto;margin-right:5%}.offset-sm-10,.flex-offset-sm-10,.layout-margin .flex-offset-sm-10,.layout-margin .offset-sm-10{margin-left:10%}[dir=rtl] .offset-sm-10,[dir=rtl] .flex-offset-sm-10,[dir=rtl] .layout-margin .flex-offset-sm-10,[dir=rtl] .layout-margin .offset-sm-10{margin-left:auto;margin-right:10%}.offset-sm-15,.flex-offset-sm-15,.layout-margin .flex-offset-sm-15,.layout-margin .offset-sm-15{margin-left:15%}[dir=rtl] .offset-sm-15,[dir=rtl] .flex-offset-sm-15,[dir=rtl] .layout-margin .flex-offset-sm-15,[dir=rtl] .layout-margin .offset-sm-15{margin-left:auto;margin-right:15%}.offset-sm-20,.flex-offset-sm-20,.layout-margin .flex-offset-sm-20,.layout-margin .offset-sm-20{margin-left:20%}[dir=rtl] .offset-sm-20,[dir=rtl] .flex-offset-sm-20,[dir=rtl] .layout-margin .flex-offset-sm-20,[dir=rtl] .layout-margin .offset-sm-20{margin-left:auto;margin-right:20%}.offset-sm-25,.flex-offset-sm-25,.layout-margin .flex-offset-sm-25,.layout-margin .offset-sm-25{margin-left:25%}[dir=rtl] .offset-sm-25,[dir=rtl] .flex-offset-sm-25,[dir=rtl] .layout-margin .flex-offset-sm-25,[dir=rtl] .layout-margin .offset-sm-25{margin-left:auto;margin-right:25%}.offset-sm-30,.flex-offset-sm-30,.layout-margin .flex-offset-sm-30,.layout-margin .offset-sm-30{margin-left:30%}[dir=rtl] .offset-sm-30,[dir=rtl] .flex-offset-sm-30,[dir=rtl] .layout-margin .flex-offset-sm-30,[dir=rtl] .layout-margin .offset-sm-30{margin-left:auto;margin-right:30%}.offset-sm-35,.flex-offset-sm-35,.layout-margin .flex-offset-sm-35,.layout-margin .offset-sm-35{margin-left:35%}[dir=rtl] .offset-sm-35,[dir=rtl] .flex-offset-sm-35,[dir=rtl] .layout-margin .flex-offset-sm-35,[dir=rtl] .layout-margin .offset-sm-35{margin-left:auto;margin-right:35%}.offset-sm-40,.flex-offset-sm-40,.layout-margin .flex-offset-sm-40,.layout-margin .offset-sm-40{margin-left:40%}[dir=rtl] .offset-sm-40,[dir=rtl] .flex-offset-sm-40,[dir=rtl] .layout-margin .flex-offset-sm-40,[dir=rtl] .layout-margin .offset-sm-40{margin-left:auto;margin-right:40%}.offset-sm-45,.flex-offset-sm-45,.layout-margin .flex-offset-sm-45,.layout-margin .offset-sm-45{margin-left:45%}[dir=rtl] .offset-sm-45,[dir=rtl] .flex-offset-sm-45,[dir=rtl] .layout-margin .flex-offset-sm-45,[dir=rtl] .layout-margin .offset-sm-45{margin-left:auto;margin-right:45%}.offset-sm-50,.flex-offset-sm-50,.layout-margin .flex-offset-sm-50,.layout-margin .offset-sm-50{margin-left:50%}[dir=rtl] .offset-sm-50,[dir=rtl] .flex-offset-sm-50,[dir=rtl] .layout-margin .flex-offset-sm-50,[dir=rtl] .layout-margin .offset-sm-50{margin-left:auto;margin-right:50%}.offset-sm-55,.flex-offset-sm-55,.layout-margin .flex-offset-sm-55,.layout-margin .offset-sm-55{margin-left:55%}[dir=rtl] .offset-sm-55,[dir=rtl] .flex-offset-sm-55,[dir=rtl] .layout-margin .flex-offset-sm-55,[dir=rtl] .layout-margin .offset-sm-55{margin-left:auto;margin-right:55%}.offset-sm-60,.flex-offset-sm-60,.layout-margin .flex-offset-sm-60,.layout-margin .offset-sm-60{margin-left:60%}[dir=rtl] .offset-sm-60,[dir=rtl] .flex-offset-sm-60,[dir=rtl] .layout-margin .flex-offset-sm-60,[dir=rtl] .layout-margin .offset-sm-60{margin-left:auto;margin-right:60%}.offset-sm-65,.flex-offset-sm-65,.layout-margin .flex-offset-sm-65,.layout-margin .offset-sm-65{margin-left:65%}[dir=rtl] .offset-sm-65,[dir=rtl] .flex-offset-sm-65,[dir=rtl] .layout-margin .flex-offset-sm-65,[dir=rtl] .layout-margin .offset-sm-65{margin-left:auto;margin-right:65%}.offset-sm-70,.flex-offset-sm-70,.layout-margin .flex-offset-sm-70,.layout-margin .offset-sm-70{margin-left:70%}[dir=rtl] .offset-sm-70,[dir=rtl] .flex-offset-sm-70,[dir=rtl] .layout-margin .flex-offset-sm-70,[dir=rtl] .layout-margin .offset-sm-70{margin-left:auto;margin-right:70%}.offset-sm-75,.flex-offset-sm-75,.layout-margin .flex-offset-sm-75,.layout-margin .offset-sm-75{margin-left:75%}[dir=rtl] .offset-sm-75,[dir=rtl] .flex-offset-sm-75,[dir=rtl] .layout-margin .flex-offset-sm-75,[dir=rtl] .layout-margin .offset-sm-75{margin-left:auto;margin-right:75%}.offset-sm-80,.flex-offset-sm-80,.layout-margin .flex-offset-sm-80,.layout-margin .offset-sm-80{margin-left:80%}[dir=rtl] .offset-sm-80,[dir=rtl] .flex-offset-sm-80,[dir=rtl] .layout-margin .flex-offset-sm-80,[dir=rtl] .layout-margin .offset-sm-80{margin-left:auto;margin-right:80%}.offset-sm-85,.flex-offset-sm-85,.layout-margin .flex-offset-sm-85,.layout-margin .offset-sm-85{margin-left:85%}[dir=rtl] .offset-sm-85,[dir=rtl] .flex-offset-sm-85,[dir=rtl] .layout-margin .flex-offset-sm-85,[dir=rtl] .layout-margin .offset-sm-85{margin-left:auto;margin-right:85%}.offset-sm-90,.flex-offset-sm-90,.layout-margin .flex-offset-sm-90,.layout-margin .offset-sm-90{margin-left:90%}[dir=rtl] .offset-sm-90,[dir=rtl] .flex-offset-sm-90,[dir=rtl] .layout-margin .flex-offset-sm-90,[dir=rtl] .layout-margin .offset-sm-90{margin-left:auto;margin-right:90%}.offset-sm-95,.flex-offset-sm-95,.layout-margin .flex-offset-sm-95,.layout-margin .offset-sm-95{margin-left:95%}[dir=rtl] .offset-sm-95,[dir=rtl] .flex-offset-sm-95,[dir=rtl] .layout-margin .flex-offset-sm-95,[dir=rtl] .layout-margin .offset-sm-95{margin-left:auto;margin-right:95%}.offset-sm-33,.flex-offset-sm-33,.layout-margin .flex-offset-sm-33,.layout-margin .offset-sm-33{margin-left:33.3333333333%}.offset-sm-66,.flex-offset-sm-66,.layout-margin .flex-offset-sm-66,.layout-margin .offset-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-sm-66,[dir=rtl] .flex-offset-sm-66,[dir=rtl] .layout-margin .flex-offset-sm-66,[dir=rtl] .layout-margin .offset-sm-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-start,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-start,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-start,.layout-align-sm-space-around-end,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-start,.layout-align-sm-space-between-end,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-start-start,.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-between-start,.layout-align-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-start-center,.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-between-center,.layout-align-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-start-center>*,.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-start-end,.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-between-end,.layout-align-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-start-stretch,.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-space-around-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media(min-width: 960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.offset-gt-sm-0,.flex-offset-gt-sm-0,.layout-margin .flex-offset-gt-sm-0,.layout-margin .offset-gt-sm-0{margin-left:0}[dir=rtl] .offset-gt-sm-0,[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .flex-offset-gt-sm-0,[dir=rtl] .layout-margin .offset-gt-sm-0{margin-left:auto;margin-right:0}.offset-gt-sm-5,.flex-offset-gt-sm-5,.layout-margin .flex-offset-gt-sm-5,.layout-margin .offset-gt-sm-5{margin-left:5%}[dir=rtl] .offset-gt-sm-5,[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .flex-offset-gt-sm-5,[dir=rtl] .layout-margin .offset-gt-sm-5{margin-left:auto;margin-right:5%}.offset-gt-sm-10,.flex-offset-gt-sm-10,.layout-margin .flex-offset-gt-sm-10,.layout-margin .offset-gt-sm-10{margin-left:10%}[dir=rtl] .offset-gt-sm-10,[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .flex-offset-gt-sm-10,[dir=rtl] .layout-margin .offset-gt-sm-10{margin-left:auto;margin-right:10%}.offset-gt-sm-15,.flex-offset-gt-sm-15,.layout-margin .flex-offset-gt-sm-15,.layout-margin .offset-gt-sm-15{margin-left:15%}[dir=rtl] .offset-gt-sm-15,[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .flex-offset-gt-sm-15,[dir=rtl] .layout-margin .offset-gt-sm-15{margin-left:auto;margin-right:15%}.offset-gt-sm-20,.flex-offset-gt-sm-20,.layout-margin .flex-offset-gt-sm-20,.layout-margin .offset-gt-sm-20{margin-left:20%}[dir=rtl] .offset-gt-sm-20,[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .flex-offset-gt-sm-20,[dir=rtl] .layout-margin .offset-gt-sm-20{margin-left:auto;margin-right:20%}.offset-gt-sm-25,.flex-offset-gt-sm-25,.layout-margin .flex-offset-gt-sm-25,.layout-margin .offset-gt-sm-25{margin-left:25%}[dir=rtl] .offset-gt-sm-25,[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .flex-offset-gt-sm-25,[dir=rtl] .layout-margin .offset-gt-sm-25{margin-left:auto;margin-right:25%}.offset-gt-sm-30,.flex-offset-gt-sm-30,.layout-margin .flex-offset-gt-sm-30,.layout-margin .offset-gt-sm-30{margin-left:30%}[dir=rtl] .offset-gt-sm-30,[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .flex-offset-gt-sm-30,[dir=rtl] .layout-margin .offset-gt-sm-30{margin-left:auto;margin-right:30%}.offset-gt-sm-35,.flex-offset-gt-sm-35,.layout-margin .flex-offset-gt-sm-35,.layout-margin .offset-gt-sm-35{margin-left:35%}[dir=rtl] .offset-gt-sm-35,[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .flex-offset-gt-sm-35,[dir=rtl] .layout-margin .offset-gt-sm-35{margin-left:auto;margin-right:35%}.offset-gt-sm-40,.flex-offset-gt-sm-40,.layout-margin .flex-offset-gt-sm-40,.layout-margin .offset-gt-sm-40{margin-left:40%}[dir=rtl] .offset-gt-sm-40,[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .flex-offset-gt-sm-40,[dir=rtl] .layout-margin .offset-gt-sm-40{margin-left:auto;margin-right:40%}.offset-gt-sm-45,.flex-offset-gt-sm-45,.layout-margin .flex-offset-gt-sm-45,.layout-margin .offset-gt-sm-45{margin-left:45%}[dir=rtl] .offset-gt-sm-45,[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .flex-offset-gt-sm-45,[dir=rtl] .layout-margin .offset-gt-sm-45{margin-left:auto;margin-right:45%}.offset-gt-sm-50,.flex-offset-gt-sm-50,.layout-margin .flex-offset-gt-sm-50,.layout-margin .offset-gt-sm-50{margin-left:50%}[dir=rtl] .offset-gt-sm-50,[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .flex-offset-gt-sm-50,[dir=rtl] .layout-margin .offset-gt-sm-50{margin-left:auto;margin-right:50%}.offset-gt-sm-55,.flex-offset-gt-sm-55,.layout-margin .flex-offset-gt-sm-55,.layout-margin .offset-gt-sm-55{margin-left:55%}[dir=rtl] .offset-gt-sm-55,[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .flex-offset-gt-sm-55,[dir=rtl] .layout-margin .offset-gt-sm-55{margin-left:auto;margin-right:55%}.offset-gt-sm-60,.flex-offset-gt-sm-60,.layout-margin .flex-offset-gt-sm-60,.layout-margin .offset-gt-sm-60{margin-left:60%}[dir=rtl] .offset-gt-sm-60,[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .flex-offset-gt-sm-60,[dir=rtl] .layout-margin .offset-gt-sm-60{margin-left:auto;margin-right:60%}.offset-gt-sm-65,.flex-offset-gt-sm-65,.layout-margin .flex-offset-gt-sm-65,.layout-margin .offset-gt-sm-65{margin-left:65%}[dir=rtl] .offset-gt-sm-65,[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .flex-offset-gt-sm-65,[dir=rtl] .layout-margin .offset-gt-sm-65{margin-left:auto;margin-right:65%}.offset-gt-sm-70,.flex-offset-gt-sm-70,.layout-margin .flex-offset-gt-sm-70,.layout-margin .offset-gt-sm-70{margin-left:70%}[dir=rtl] .offset-gt-sm-70,[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .flex-offset-gt-sm-70,[dir=rtl] .layout-margin .offset-gt-sm-70{margin-left:auto;margin-right:70%}.offset-gt-sm-75,.flex-offset-gt-sm-75,.layout-margin .flex-offset-gt-sm-75,.layout-margin .offset-gt-sm-75{margin-left:75%}[dir=rtl] .offset-gt-sm-75,[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .flex-offset-gt-sm-75,[dir=rtl] .layout-margin .offset-gt-sm-75{margin-left:auto;margin-right:75%}.offset-gt-sm-80,.flex-offset-gt-sm-80,.layout-margin .flex-offset-gt-sm-80,.layout-margin .offset-gt-sm-80{margin-left:80%}[dir=rtl] .offset-gt-sm-80,[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .flex-offset-gt-sm-80,[dir=rtl] .layout-margin .offset-gt-sm-80{margin-left:auto;margin-right:80%}.offset-gt-sm-85,.flex-offset-gt-sm-85,.layout-margin .flex-offset-gt-sm-85,.layout-margin .offset-gt-sm-85{margin-left:85%}[dir=rtl] .offset-gt-sm-85,[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .flex-offset-gt-sm-85,[dir=rtl] .layout-margin .offset-gt-sm-85{margin-left:auto;margin-right:85%}.offset-gt-sm-90,.flex-offset-gt-sm-90,.layout-margin .flex-offset-gt-sm-90,.layout-margin .offset-gt-sm-90{margin-left:90%}[dir=rtl] .offset-gt-sm-90,[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .flex-offset-gt-sm-90,[dir=rtl] .layout-margin .offset-gt-sm-90{margin-left:auto;margin-right:90%}.offset-gt-sm-95,.flex-offset-gt-sm-95,.layout-margin .flex-offset-gt-sm-95,.layout-margin .offset-gt-sm-95{margin-left:95%}[dir=rtl] .offset-gt-sm-95,[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .flex-offset-gt-sm-95,[dir=rtl] .layout-margin .offset-gt-sm-95{margin-left:auto;margin-right:95%}.offset-gt-sm-33,.flex-offset-gt-sm-33,.layout-margin .flex-offset-gt-sm-33,.layout-margin .offset-gt-sm-33{margin-left:33.3333333333%}.offset-gt-sm-66,.flex-offset-gt-sm-66,.layout-margin .flex-offset-gt-sm-66,.layout-margin .offset-gt-sm-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-sm-66,[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .flex-offset-gt-sm-66,[dir=rtl] .layout-margin .offset-gt-sm-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-start-start,.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-start-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-start-center>*,.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-start-end,.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-start-stretch,.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media(min-width: 960px)and (max-width: 1279px){.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.offset-md-0,.flex-offset-md-0,.layout-margin .flex-offset-md-0,.layout-margin .offset-md-0{margin-left:0}[dir=rtl] .offset-md-0,[dir=rtl] .flex-offset-md-0,[dir=rtl] .layout-margin .flex-offset-md-0,[dir=rtl] .layout-margin .offset-md-0{margin-left:auto;margin-right:0}.offset-md-5,.flex-offset-md-5,.layout-margin .flex-offset-md-5,.layout-margin .offset-md-5{margin-left:5%}[dir=rtl] .offset-md-5,[dir=rtl] .flex-offset-md-5,[dir=rtl] .layout-margin .flex-offset-md-5,[dir=rtl] .layout-margin .offset-md-5{margin-left:auto;margin-right:5%}.offset-md-10,.flex-offset-md-10,.layout-margin .flex-offset-md-10,.layout-margin .offset-md-10{margin-left:10%}[dir=rtl] .offset-md-10,[dir=rtl] .flex-offset-md-10,[dir=rtl] .layout-margin .flex-offset-md-10,[dir=rtl] .layout-margin .offset-md-10{margin-left:auto;margin-right:10%}.offset-md-15,.flex-offset-md-15,.layout-margin .flex-offset-md-15,.layout-margin .offset-md-15{margin-left:15%}[dir=rtl] .offset-md-15,[dir=rtl] .flex-offset-md-15,[dir=rtl] .layout-margin .flex-offset-md-15,[dir=rtl] .layout-margin .offset-md-15{margin-left:auto;margin-right:15%}.offset-md-20,.flex-offset-md-20,.layout-margin .flex-offset-md-20,.layout-margin .offset-md-20{margin-left:20%}[dir=rtl] .offset-md-20,[dir=rtl] .flex-offset-md-20,[dir=rtl] .layout-margin .flex-offset-md-20,[dir=rtl] .layout-margin .offset-md-20{margin-left:auto;margin-right:20%}.offset-md-25,.flex-offset-md-25,.layout-margin .flex-offset-md-25,.layout-margin .offset-md-25{margin-left:25%}[dir=rtl] .offset-md-25,[dir=rtl] .flex-offset-md-25,[dir=rtl] .layout-margin .flex-offset-md-25,[dir=rtl] .layout-margin .offset-md-25{margin-left:auto;margin-right:25%}.offset-md-30,.flex-offset-md-30,.layout-margin .flex-offset-md-30,.layout-margin .offset-md-30{margin-left:30%}[dir=rtl] .offset-md-30,[dir=rtl] .flex-offset-md-30,[dir=rtl] .layout-margin .flex-offset-md-30,[dir=rtl] .layout-margin .offset-md-30{margin-left:auto;margin-right:30%}.offset-md-35,.flex-offset-md-35,.layout-margin .flex-offset-md-35,.layout-margin .offset-md-35{margin-left:35%}[dir=rtl] .offset-md-35,[dir=rtl] .flex-offset-md-35,[dir=rtl] .layout-margin .flex-offset-md-35,[dir=rtl] .layout-margin .offset-md-35{margin-left:auto;margin-right:35%}.offset-md-40,.flex-offset-md-40,.layout-margin .flex-offset-md-40,.layout-margin .offset-md-40{margin-left:40%}[dir=rtl] .offset-md-40,[dir=rtl] .flex-offset-md-40,[dir=rtl] .layout-margin .flex-offset-md-40,[dir=rtl] .layout-margin .offset-md-40{margin-left:auto;margin-right:40%}.offset-md-45,.flex-offset-md-45,.layout-margin .flex-offset-md-45,.layout-margin .offset-md-45{margin-left:45%}[dir=rtl] .offset-md-45,[dir=rtl] .flex-offset-md-45,[dir=rtl] .layout-margin .flex-offset-md-45,[dir=rtl] .layout-margin .offset-md-45{margin-left:auto;margin-right:45%}.offset-md-50,.flex-offset-md-50,.layout-margin .flex-offset-md-50,.layout-margin .offset-md-50{margin-left:50%}[dir=rtl] .offset-md-50,[dir=rtl] .flex-offset-md-50,[dir=rtl] .layout-margin .flex-offset-md-50,[dir=rtl] .layout-margin .offset-md-50{margin-left:auto;margin-right:50%}.offset-md-55,.flex-offset-md-55,.layout-margin .flex-offset-md-55,.layout-margin .offset-md-55{margin-left:55%}[dir=rtl] .offset-md-55,[dir=rtl] .flex-offset-md-55,[dir=rtl] .layout-margin .flex-offset-md-55,[dir=rtl] .layout-margin .offset-md-55{margin-left:auto;margin-right:55%}.offset-md-60,.flex-offset-md-60,.layout-margin .flex-offset-md-60,.layout-margin .offset-md-60{margin-left:60%}[dir=rtl] .offset-md-60,[dir=rtl] .flex-offset-md-60,[dir=rtl] .layout-margin .flex-offset-md-60,[dir=rtl] .layout-margin .offset-md-60{margin-left:auto;margin-right:60%}.offset-md-65,.flex-offset-md-65,.layout-margin .flex-offset-md-65,.layout-margin .offset-md-65{margin-left:65%}[dir=rtl] .offset-md-65,[dir=rtl] .flex-offset-md-65,[dir=rtl] .layout-margin .flex-offset-md-65,[dir=rtl] .layout-margin .offset-md-65{margin-left:auto;margin-right:65%}.offset-md-70,.flex-offset-md-70,.layout-margin .flex-offset-md-70,.layout-margin .offset-md-70{margin-left:70%}[dir=rtl] .offset-md-70,[dir=rtl] .flex-offset-md-70,[dir=rtl] .layout-margin .flex-offset-md-70,[dir=rtl] .layout-margin .offset-md-70{margin-left:auto;margin-right:70%}.offset-md-75,.flex-offset-md-75,.layout-margin .flex-offset-md-75,.layout-margin .offset-md-75{margin-left:75%}[dir=rtl] .offset-md-75,[dir=rtl] .flex-offset-md-75,[dir=rtl] .layout-margin .flex-offset-md-75,[dir=rtl] .layout-margin .offset-md-75{margin-left:auto;margin-right:75%}.offset-md-80,.flex-offset-md-80,.layout-margin .flex-offset-md-80,.layout-margin .offset-md-80{margin-left:80%}[dir=rtl] .offset-md-80,[dir=rtl] .flex-offset-md-80,[dir=rtl] .layout-margin .flex-offset-md-80,[dir=rtl] .layout-margin .offset-md-80{margin-left:auto;margin-right:80%}.offset-md-85,.flex-offset-md-85,.layout-margin .flex-offset-md-85,.layout-margin .offset-md-85{margin-left:85%}[dir=rtl] .offset-md-85,[dir=rtl] .flex-offset-md-85,[dir=rtl] .layout-margin .flex-offset-md-85,[dir=rtl] .layout-margin .offset-md-85{margin-left:auto;margin-right:85%}.offset-md-90,.flex-offset-md-90,.layout-margin .flex-offset-md-90,.layout-margin .offset-md-90{margin-left:90%}[dir=rtl] .offset-md-90,[dir=rtl] .flex-offset-md-90,[dir=rtl] .layout-margin .flex-offset-md-90,[dir=rtl] .layout-margin .offset-md-90{margin-left:auto;margin-right:90%}.offset-md-95,.flex-offset-md-95,.layout-margin .flex-offset-md-95,.layout-margin .offset-md-95{margin-left:95%}[dir=rtl] .offset-md-95,[dir=rtl] .flex-offset-md-95,[dir=rtl] .layout-margin .flex-offset-md-95,[dir=rtl] .layout-margin .offset-md-95{margin-left:auto;margin-right:95%}.offset-md-33,.flex-offset-md-33,.layout-margin .flex-offset-md-33,.layout-margin .offset-md-33{margin-left:33.3333333333%}.offset-md-66,.flex-offset-md-66,.layout-margin .flex-offset-md-66,.layout-margin .offset-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-md-66,[dir=rtl] .flex-offset-md-66,[dir=rtl] .layout-margin .flex-offset-md-66,[dir=rtl] .layout-margin .offset-md-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-start,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-start,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-start,.layout-align-md-space-around-end,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-start,.layout-align-md-space-between-end,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-start-start,.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-between-start,.layout-align-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-md-start-center,.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-between-center,.layout-align-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-start-center>*,.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-between-center>*,.layout-align-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-start-end,.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-between-end,.layout-align-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-md-start-stretch,.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-between-stretch,.layout-align-md-space-around-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media(min-width: 1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.offset-gt-md-0,.flex-offset-gt-md-0,.layout-margin .flex-offset-gt-md-0,.layout-margin .offset-gt-md-0{margin-left:0}[dir=rtl] .offset-gt-md-0,[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .layout-margin .flex-offset-gt-md-0,[dir=rtl] .layout-margin .offset-gt-md-0{margin-left:auto;margin-right:0}.offset-gt-md-5,.flex-offset-gt-md-5,.layout-margin .flex-offset-gt-md-5,.layout-margin .offset-gt-md-5{margin-left:5%}[dir=rtl] .offset-gt-md-5,[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .layout-margin .flex-offset-gt-md-5,[dir=rtl] .layout-margin .offset-gt-md-5{margin-left:auto;margin-right:5%}.offset-gt-md-10,.flex-offset-gt-md-10,.layout-margin .flex-offset-gt-md-10,.layout-margin .offset-gt-md-10{margin-left:10%}[dir=rtl] .offset-gt-md-10,[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .layout-margin .flex-offset-gt-md-10,[dir=rtl] .layout-margin .offset-gt-md-10{margin-left:auto;margin-right:10%}.offset-gt-md-15,.flex-offset-gt-md-15,.layout-margin .flex-offset-gt-md-15,.layout-margin .offset-gt-md-15{margin-left:15%}[dir=rtl] .offset-gt-md-15,[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .layout-margin .flex-offset-gt-md-15,[dir=rtl] .layout-margin .offset-gt-md-15{margin-left:auto;margin-right:15%}.offset-gt-md-20,.flex-offset-gt-md-20,.layout-margin .flex-offset-gt-md-20,.layout-margin .offset-gt-md-20{margin-left:20%}[dir=rtl] .offset-gt-md-20,[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .layout-margin .flex-offset-gt-md-20,[dir=rtl] .layout-margin .offset-gt-md-20{margin-left:auto;margin-right:20%}.offset-gt-md-25,.flex-offset-gt-md-25,.layout-margin .flex-offset-gt-md-25,.layout-margin .offset-gt-md-25{margin-left:25%}[dir=rtl] .offset-gt-md-25,[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .layout-margin .flex-offset-gt-md-25,[dir=rtl] .layout-margin .offset-gt-md-25{margin-left:auto;margin-right:25%}.offset-gt-md-30,.flex-offset-gt-md-30,.layout-margin .flex-offset-gt-md-30,.layout-margin .offset-gt-md-30{margin-left:30%}[dir=rtl] .offset-gt-md-30,[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .layout-margin .flex-offset-gt-md-30,[dir=rtl] .layout-margin .offset-gt-md-30{margin-left:auto;margin-right:30%}.offset-gt-md-35,.flex-offset-gt-md-35,.layout-margin .flex-offset-gt-md-35,.layout-margin .offset-gt-md-35{margin-left:35%}[dir=rtl] .offset-gt-md-35,[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .layout-margin .flex-offset-gt-md-35,[dir=rtl] .layout-margin .offset-gt-md-35{margin-left:auto;margin-right:35%}.offset-gt-md-40,.flex-offset-gt-md-40,.layout-margin .flex-offset-gt-md-40,.layout-margin .offset-gt-md-40{margin-left:40%}[dir=rtl] .offset-gt-md-40,[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .layout-margin .flex-offset-gt-md-40,[dir=rtl] .layout-margin .offset-gt-md-40{margin-left:auto;margin-right:40%}.offset-gt-md-45,.flex-offset-gt-md-45,.layout-margin .flex-offset-gt-md-45,.layout-margin .offset-gt-md-45{margin-left:45%}[dir=rtl] .offset-gt-md-45,[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .layout-margin .flex-offset-gt-md-45,[dir=rtl] .layout-margin .offset-gt-md-45{margin-left:auto;margin-right:45%}.offset-gt-md-50,.flex-offset-gt-md-50,.layout-margin .flex-offset-gt-md-50,.layout-margin .offset-gt-md-50{margin-left:50%}[dir=rtl] .offset-gt-md-50,[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .layout-margin .flex-offset-gt-md-50,[dir=rtl] .layout-margin .offset-gt-md-50{margin-left:auto;margin-right:50%}.offset-gt-md-55,.flex-offset-gt-md-55,.layout-margin .flex-offset-gt-md-55,.layout-margin .offset-gt-md-55{margin-left:55%}[dir=rtl] .offset-gt-md-55,[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .layout-margin .flex-offset-gt-md-55,[dir=rtl] .layout-margin .offset-gt-md-55{margin-left:auto;margin-right:55%}.offset-gt-md-60,.flex-offset-gt-md-60,.layout-margin .flex-offset-gt-md-60,.layout-margin .offset-gt-md-60{margin-left:60%}[dir=rtl] .offset-gt-md-60,[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .layout-margin .flex-offset-gt-md-60,[dir=rtl] .layout-margin .offset-gt-md-60{margin-left:auto;margin-right:60%}.offset-gt-md-65,.flex-offset-gt-md-65,.layout-margin .flex-offset-gt-md-65,.layout-margin .offset-gt-md-65{margin-left:65%}[dir=rtl] .offset-gt-md-65,[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .layout-margin .flex-offset-gt-md-65,[dir=rtl] .layout-margin .offset-gt-md-65{margin-left:auto;margin-right:65%}.offset-gt-md-70,.flex-offset-gt-md-70,.layout-margin .flex-offset-gt-md-70,.layout-margin .offset-gt-md-70{margin-left:70%}[dir=rtl] .offset-gt-md-70,[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .layout-margin .flex-offset-gt-md-70,[dir=rtl] .layout-margin .offset-gt-md-70{margin-left:auto;margin-right:70%}.offset-gt-md-75,.flex-offset-gt-md-75,.layout-margin .flex-offset-gt-md-75,.layout-margin .offset-gt-md-75{margin-left:75%}[dir=rtl] .offset-gt-md-75,[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .layout-margin .flex-offset-gt-md-75,[dir=rtl] .layout-margin .offset-gt-md-75{margin-left:auto;margin-right:75%}.offset-gt-md-80,.flex-offset-gt-md-80,.layout-margin .flex-offset-gt-md-80,.layout-margin .offset-gt-md-80{margin-left:80%}[dir=rtl] .offset-gt-md-80,[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .layout-margin .flex-offset-gt-md-80,[dir=rtl] .layout-margin .offset-gt-md-80{margin-left:auto;margin-right:80%}.offset-gt-md-85,.flex-offset-gt-md-85,.layout-margin .flex-offset-gt-md-85,.layout-margin .offset-gt-md-85{margin-left:85%}[dir=rtl] .offset-gt-md-85,[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .layout-margin .flex-offset-gt-md-85,[dir=rtl] .layout-margin .offset-gt-md-85{margin-left:auto;margin-right:85%}.offset-gt-md-90,.flex-offset-gt-md-90,.layout-margin .flex-offset-gt-md-90,.layout-margin .offset-gt-md-90{margin-left:90%}[dir=rtl] .offset-gt-md-90,[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .layout-margin .flex-offset-gt-md-90,[dir=rtl] .layout-margin .offset-gt-md-90{margin-left:auto;margin-right:90%}.offset-gt-md-95,.flex-offset-gt-md-95,.layout-margin .flex-offset-gt-md-95,.layout-margin .offset-gt-md-95{margin-left:95%}[dir=rtl] .offset-gt-md-95,[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .layout-margin .flex-offset-gt-md-95,[dir=rtl] .layout-margin .offset-gt-md-95{margin-left:auto;margin-right:95%}.offset-gt-md-33,.flex-offset-gt-md-33,.layout-margin .flex-offset-gt-md-33,.layout-margin .offset-gt-md-33{margin-left:33.3333333333%}.offset-gt-md-66,.flex-offset-gt-md-66,.layout-margin .flex-offset-gt-md-66,.layout-margin .offset-gt-md-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-md-66,[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .layout-margin .flex-offset-gt-md-66,[dir=rtl] .layout-margin .offset-gt-md-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-start,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-start-start,.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-start-center,.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-start-center>*,.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-start-end,.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-start-stretch,.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media(min-width: 1280px)and (max-width: 1919px){.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.offset-lg-0,.flex-offset-lg-0,.layout-margin .flex-offset-lg-0,.layout-margin .offset-lg-0{margin-left:0}[dir=rtl] .offset-lg-0,[dir=rtl] .flex-offset-lg-0,[dir=rtl] .layout-margin .flex-offset-lg-0,[dir=rtl] .layout-margin .offset-lg-0{margin-left:auto;margin-right:0}.offset-lg-5,.flex-offset-lg-5,.layout-margin .flex-offset-lg-5,.layout-margin .offset-lg-5{margin-left:5%}[dir=rtl] .offset-lg-5,[dir=rtl] .flex-offset-lg-5,[dir=rtl] .layout-margin .flex-offset-lg-5,[dir=rtl] .layout-margin .offset-lg-5{margin-left:auto;margin-right:5%}.offset-lg-10,.flex-offset-lg-10,.layout-margin .flex-offset-lg-10,.layout-margin .offset-lg-10{margin-left:10%}[dir=rtl] .offset-lg-10,[dir=rtl] .flex-offset-lg-10,[dir=rtl] .layout-margin .flex-offset-lg-10,[dir=rtl] .layout-margin .offset-lg-10{margin-left:auto;margin-right:10%}.offset-lg-15,.flex-offset-lg-15,.layout-margin .flex-offset-lg-15,.layout-margin .offset-lg-15{margin-left:15%}[dir=rtl] .offset-lg-15,[dir=rtl] .flex-offset-lg-15,[dir=rtl] .layout-margin .flex-offset-lg-15,[dir=rtl] .layout-margin .offset-lg-15{margin-left:auto;margin-right:15%}.offset-lg-20,.flex-offset-lg-20,.layout-margin .flex-offset-lg-20,.layout-margin .offset-lg-20{margin-left:20%}[dir=rtl] .offset-lg-20,[dir=rtl] .flex-offset-lg-20,[dir=rtl] .layout-margin .flex-offset-lg-20,[dir=rtl] .layout-margin .offset-lg-20{margin-left:auto;margin-right:20%}.offset-lg-25,.flex-offset-lg-25,.layout-margin .flex-offset-lg-25,.layout-margin .offset-lg-25{margin-left:25%}[dir=rtl] .offset-lg-25,[dir=rtl] .flex-offset-lg-25,[dir=rtl] .layout-margin .flex-offset-lg-25,[dir=rtl] .layout-margin .offset-lg-25{margin-left:auto;margin-right:25%}.offset-lg-30,.flex-offset-lg-30,.layout-margin .flex-offset-lg-30,.layout-margin .offset-lg-30{margin-left:30%}[dir=rtl] .offset-lg-30,[dir=rtl] .flex-offset-lg-30,[dir=rtl] .layout-margin .flex-offset-lg-30,[dir=rtl] .layout-margin .offset-lg-30{margin-left:auto;margin-right:30%}.offset-lg-35,.flex-offset-lg-35,.layout-margin .flex-offset-lg-35,.layout-margin .offset-lg-35{margin-left:35%}[dir=rtl] .offset-lg-35,[dir=rtl] .flex-offset-lg-35,[dir=rtl] .layout-margin .flex-offset-lg-35,[dir=rtl] .layout-margin .offset-lg-35{margin-left:auto;margin-right:35%}.offset-lg-40,.flex-offset-lg-40,.layout-margin .flex-offset-lg-40,.layout-margin .offset-lg-40{margin-left:40%}[dir=rtl] .offset-lg-40,[dir=rtl] .flex-offset-lg-40,[dir=rtl] .layout-margin .flex-offset-lg-40,[dir=rtl] .layout-margin .offset-lg-40{margin-left:auto;margin-right:40%}.offset-lg-45,.flex-offset-lg-45,.layout-margin .flex-offset-lg-45,.layout-margin .offset-lg-45{margin-left:45%}[dir=rtl] .offset-lg-45,[dir=rtl] .flex-offset-lg-45,[dir=rtl] .layout-margin .flex-offset-lg-45,[dir=rtl] .layout-margin .offset-lg-45{margin-left:auto;margin-right:45%}.offset-lg-50,.flex-offset-lg-50,.layout-margin .flex-offset-lg-50,.layout-margin .offset-lg-50{margin-left:50%}[dir=rtl] .offset-lg-50,[dir=rtl] .flex-offset-lg-50,[dir=rtl] .layout-margin .flex-offset-lg-50,[dir=rtl] .layout-margin .offset-lg-50{margin-left:auto;margin-right:50%}.offset-lg-55,.flex-offset-lg-55,.layout-margin .flex-offset-lg-55,.layout-margin .offset-lg-55{margin-left:55%}[dir=rtl] .offset-lg-55,[dir=rtl] .flex-offset-lg-55,[dir=rtl] .layout-margin .flex-offset-lg-55,[dir=rtl] .layout-margin .offset-lg-55{margin-left:auto;margin-right:55%}.offset-lg-60,.flex-offset-lg-60,.layout-margin .flex-offset-lg-60,.layout-margin .offset-lg-60{margin-left:60%}[dir=rtl] .offset-lg-60,[dir=rtl] .flex-offset-lg-60,[dir=rtl] .layout-margin .flex-offset-lg-60,[dir=rtl] .layout-margin .offset-lg-60{margin-left:auto;margin-right:60%}.offset-lg-65,.flex-offset-lg-65,.layout-margin .flex-offset-lg-65,.layout-margin .offset-lg-65{margin-left:65%}[dir=rtl] .offset-lg-65,[dir=rtl] .flex-offset-lg-65,[dir=rtl] .layout-margin .flex-offset-lg-65,[dir=rtl] .layout-margin .offset-lg-65{margin-left:auto;margin-right:65%}.offset-lg-70,.flex-offset-lg-70,.layout-margin .flex-offset-lg-70,.layout-margin .offset-lg-70{margin-left:70%}[dir=rtl] .offset-lg-70,[dir=rtl] .flex-offset-lg-70,[dir=rtl] .layout-margin .flex-offset-lg-70,[dir=rtl] .layout-margin .offset-lg-70{margin-left:auto;margin-right:70%}.offset-lg-75,.flex-offset-lg-75,.layout-margin .flex-offset-lg-75,.layout-margin .offset-lg-75{margin-left:75%}[dir=rtl] .offset-lg-75,[dir=rtl] .flex-offset-lg-75,[dir=rtl] .layout-margin .flex-offset-lg-75,[dir=rtl] .layout-margin .offset-lg-75{margin-left:auto;margin-right:75%}.offset-lg-80,.flex-offset-lg-80,.layout-margin .flex-offset-lg-80,.layout-margin .offset-lg-80{margin-left:80%}[dir=rtl] .offset-lg-80,[dir=rtl] .flex-offset-lg-80,[dir=rtl] .layout-margin .flex-offset-lg-80,[dir=rtl] .layout-margin .offset-lg-80{margin-left:auto;margin-right:80%}.offset-lg-85,.flex-offset-lg-85,.layout-margin .flex-offset-lg-85,.layout-margin .offset-lg-85{margin-left:85%}[dir=rtl] .offset-lg-85,[dir=rtl] .flex-offset-lg-85,[dir=rtl] .layout-margin .flex-offset-lg-85,[dir=rtl] .layout-margin .offset-lg-85{margin-left:auto;margin-right:85%}.offset-lg-90,.flex-offset-lg-90,.layout-margin .flex-offset-lg-90,.layout-margin .offset-lg-90{margin-left:90%}[dir=rtl] .offset-lg-90,[dir=rtl] .flex-offset-lg-90,[dir=rtl] .layout-margin .flex-offset-lg-90,[dir=rtl] .layout-margin .offset-lg-90{margin-left:auto;margin-right:90%}.offset-lg-95,.flex-offset-lg-95,.layout-margin .flex-offset-lg-95,.layout-margin .offset-lg-95{margin-left:95%}[dir=rtl] .offset-lg-95,[dir=rtl] .flex-offset-lg-95,[dir=rtl] .layout-margin .flex-offset-lg-95,[dir=rtl] .layout-margin .offset-lg-95{margin-left:auto;margin-right:95%}.offset-lg-33,.flex-offset-lg-33,.layout-margin .flex-offset-lg-33,.layout-margin .offset-lg-33{margin-left:33.3333333333%}.offset-lg-66,.flex-offset-lg-66,.layout-margin .flex-offset-lg-66,.layout-margin .offset-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-lg-66,[dir=rtl] .flex-offset-lg-66,[dir=rtl] .layout-margin .flex-offset-lg-66,[dir=rtl] .layout-margin .offset-lg-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-start,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-start,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-start,.layout-align-lg-space-around-end,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-start,.layout-align-lg-space-between-end,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-start-start,.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-between-start,.layout-align-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-start-center,.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-between-center,.layout-align-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-start-center>*,.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-start-end,.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-between-end,.layout-align-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-start-stretch,.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-space-around-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media(min-width: 1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.offset-gt-lg-0,.flex-offset-gt-lg-0,.layout-margin .flex-offset-gt-lg-0,.layout-margin .offset-gt-lg-0{margin-left:0}[dir=rtl] .offset-gt-lg-0,[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .flex-offset-gt-lg-0,[dir=rtl] .layout-margin .offset-gt-lg-0{margin-left:auto;margin-right:0}.offset-gt-lg-5,.flex-offset-gt-lg-5,.layout-margin .flex-offset-gt-lg-5,.layout-margin .offset-gt-lg-5{margin-left:5%}[dir=rtl] .offset-gt-lg-5,[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .flex-offset-gt-lg-5,[dir=rtl] .layout-margin .offset-gt-lg-5{margin-left:auto;margin-right:5%}.offset-gt-lg-10,.flex-offset-gt-lg-10,.layout-margin .flex-offset-gt-lg-10,.layout-margin .offset-gt-lg-10{margin-left:10%}[dir=rtl] .offset-gt-lg-10,[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .flex-offset-gt-lg-10,[dir=rtl] .layout-margin .offset-gt-lg-10{margin-left:auto;margin-right:10%}.offset-gt-lg-15,.flex-offset-gt-lg-15,.layout-margin .flex-offset-gt-lg-15,.layout-margin .offset-gt-lg-15{margin-left:15%}[dir=rtl] .offset-gt-lg-15,[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .flex-offset-gt-lg-15,[dir=rtl] .layout-margin .offset-gt-lg-15{margin-left:auto;margin-right:15%}.offset-gt-lg-20,.flex-offset-gt-lg-20,.layout-margin .flex-offset-gt-lg-20,.layout-margin .offset-gt-lg-20{margin-left:20%}[dir=rtl] .offset-gt-lg-20,[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .flex-offset-gt-lg-20,[dir=rtl] .layout-margin .offset-gt-lg-20{margin-left:auto;margin-right:20%}.offset-gt-lg-25,.flex-offset-gt-lg-25,.layout-margin .flex-offset-gt-lg-25,.layout-margin .offset-gt-lg-25{margin-left:25%}[dir=rtl] .offset-gt-lg-25,[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .flex-offset-gt-lg-25,[dir=rtl] .layout-margin .offset-gt-lg-25{margin-left:auto;margin-right:25%}.offset-gt-lg-30,.flex-offset-gt-lg-30,.layout-margin .flex-offset-gt-lg-30,.layout-margin .offset-gt-lg-30{margin-left:30%}[dir=rtl] .offset-gt-lg-30,[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .flex-offset-gt-lg-30,[dir=rtl] .layout-margin .offset-gt-lg-30{margin-left:auto;margin-right:30%}.offset-gt-lg-35,.flex-offset-gt-lg-35,.layout-margin .flex-offset-gt-lg-35,.layout-margin .offset-gt-lg-35{margin-left:35%}[dir=rtl] .offset-gt-lg-35,[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .flex-offset-gt-lg-35,[dir=rtl] .layout-margin .offset-gt-lg-35{margin-left:auto;margin-right:35%}.offset-gt-lg-40,.flex-offset-gt-lg-40,.layout-margin .flex-offset-gt-lg-40,.layout-margin .offset-gt-lg-40{margin-left:40%}[dir=rtl] .offset-gt-lg-40,[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .flex-offset-gt-lg-40,[dir=rtl] .layout-margin .offset-gt-lg-40{margin-left:auto;margin-right:40%}.offset-gt-lg-45,.flex-offset-gt-lg-45,.layout-margin .flex-offset-gt-lg-45,.layout-margin .offset-gt-lg-45{margin-left:45%}[dir=rtl] .offset-gt-lg-45,[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .flex-offset-gt-lg-45,[dir=rtl] .layout-margin .offset-gt-lg-45{margin-left:auto;margin-right:45%}.offset-gt-lg-50,.flex-offset-gt-lg-50,.layout-margin .flex-offset-gt-lg-50,.layout-margin .offset-gt-lg-50{margin-left:50%}[dir=rtl] .offset-gt-lg-50,[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .flex-offset-gt-lg-50,[dir=rtl] .layout-margin .offset-gt-lg-50{margin-left:auto;margin-right:50%}.offset-gt-lg-55,.flex-offset-gt-lg-55,.layout-margin .flex-offset-gt-lg-55,.layout-margin .offset-gt-lg-55{margin-left:55%}[dir=rtl] .offset-gt-lg-55,[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .flex-offset-gt-lg-55,[dir=rtl] .layout-margin .offset-gt-lg-55{margin-left:auto;margin-right:55%}.offset-gt-lg-60,.flex-offset-gt-lg-60,.layout-margin .flex-offset-gt-lg-60,.layout-margin .offset-gt-lg-60{margin-left:60%}[dir=rtl] .offset-gt-lg-60,[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .flex-offset-gt-lg-60,[dir=rtl] .layout-margin .offset-gt-lg-60{margin-left:auto;margin-right:60%}.offset-gt-lg-65,.flex-offset-gt-lg-65,.layout-margin .flex-offset-gt-lg-65,.layout-margin .offset-gt-lg-65{margin-left:65%}[dir=rtl] .offset-gt-lg-65,[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .flex-offset-gt-lg-65,[dir=rtl] .layout-margin .offset-gt-lg-65{margin-left:auto;margin-right:65%}.offset-gt-lg-70,.flex-offset-gt-lg-70,.layout-margin .flex-offset-gt-lg-70,.layout-margin .offset-gt-lg-70{margin-left:70%}[dir=rtl] .offset-gt-lg-70,[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .flex-offset-gt-lg-70,[dir=rtl] .layout-margin .offset-gt-lg-70{margin-left:auto;margin-right:70%}.offset-gt-lg-75,.flex-offset-gt-lg-75,.layout-margin .flex-offset-gt-lg-75,.layout-margin .offset-gt-lg-75{margin-left:75%}[dir=rtl] .offset-gt-lg-75,[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .flex-offset-gt-lg-75,[dir=rtl] .layout-margin .offset-gt-lg-75{margin-left:auto;margin-right:75%}.offset-gt-lg-80,.flex-offset-gt-lg-80,.layout-margin .flex-offset-gt-lg-80,.layout-margin .offset-gt-lg-80{margin-left:80%}[dir=rtl] .offset-gt-lg-80,[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .flex-offset-gt-lg-80,[dir=rtl] .layout-margin .offset-gt-lg-80{margin-left:auto;margin-right:80%}.offset-gt-lg-85,.flex-offset-gt-lg-85,.layout-margin .flex-offset-gt-lg-85,.layout-margin .offset-gt-lg-85{margin-left:85%}[dir=rtl] .offset-gt-lg-85,[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .flex-offset-gt-lg-85,[dir=rtl] .layout-margin .offset-gt-lg-85{margin-left:auto;margin-right:85%}.offset-gt-lg-90,.flex-offset-gt-lg-90,.layout-margin .flex-offset-gt-lg-90,.layout-margin .offset-gt-lg-90{margin-left:90%}[dir=rtl] .offset-gt-lg-90,[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .flex-offset-gt-lg-90,[dir=rtl] .layout-margin .offset-gt-lg-90{margin-left:auto;margin-right:90%}.offset-gt-lg-95,.flex-offset-gt-lg-95,.layout-margin .flex-offset-gt-lg-95,.layout-margin .offset-gt-lg-95{margin-left:95%}[dir=rtl] .offset-gt-lg-95,[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .flex-offset-gt-lg-95,[dir=rtl] .layout-margin .offset-gt-lg-95{margin-left:auto;margin-right:95%}.offset-gt-lg-33,.flex-offset-gt-lg-33,.layout-margin .flex-offset-gt-lg-33,.layout-margin .offset-gt-lg-33{margin-left:33.3333333333%}.offset-gt-lg-66,.flex-offset-gt-lg-66,.layout-margin .flex-offset-gt-lg-66,.layout-margin .offset-gt-lg-66{margin-left:66.6666666667%}[dir=rtl] .offset-gt-lg-66,[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .flex-offset-gt-lg-66,[dir=rtl] .layout-margin .offset-gt-lg-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-start-start,.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-start-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-start-center>*,.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-start-end,.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-start-stretch,.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-space-around-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.offset-xl-0,.flex-offset-xl-0,.layout-margin .flex-offset-xl-0,.layout-margin .offset-xl-0{margin-left:0}[dir=rtl] .offset-xl-0,[dir=rtl] .flex-offset-xl-0,[dir=rtl] .layout-margin .flex-offset-xl-0,[dir=rtl] .layout-margin .offset-xl-0{margin-left:auto;margin-right:0}.offset-xl-5,.flex-offset-xl-5,.layout-margin .flex-offset-xl-5,.layout-margin .offset-xl-5{margin-left:5%}[dir=rtl] .offset-xl-5,[dir=rtl] .flex-offset-xl-5,[dir=rtl] .layout-margin .flex-offset-xl-5,[dir=rtl] .layout-margin .offset-xl-5{margin-left:auto;margin-right:5%}.offset-xl-10,.flex-offset-xl-10,.layout-margin .flex-offset-xl-10,.layout-margin .offset-xl-10{margin-left:10%}[dir=rtl] .offset-xl-10,[dir=rtl] .flex-offset-xl-10,[dir=rtl] .layout-margin .flex-offset-xl-10,[dir=rtl] .layout-margin .offset-xl-10{margin-left:auto;margin-right:10%}.offset-xl-15,.flex-offset-xl-15,.layout-margin .flex-offset-xl-15,.layout-margin .offset-xl-15{margin-left:15%}[dir=rtl] .offset-xl-15,[dir=rtl] .flex-offset-xl-15,[dir=rtl] .layout-margin .flex-offset-xl-15,[dir=rtl] .layout-margin .offset-xl-15{margin-left:auto;margin-right:15%}.offset-xl-20,.flex-offset-xl-20,.layout-margin .flex-offset-xl-20,.layout-margin .offset-xl-20{margin-left:20%}[dir=rtl] .offset-xl-20,[dir=rtl] .flex-offset-xl-20,[dir=rtl] .layout-margin .flex-offset-xl-20,[dir=rtl] .layout-margin .offset-xl-20{margin-left:auto;margin-right:20%}.offset-xl-25,.flex-offset-xl-25,.layout-margin .flex-offset-xl-25,.layout-margin .offset-xl-25{margin-left:25%}[dir=rtl] .offset-xl-25,[dir=rtl] .flex-offset-xl-25,[dir=rtl] .layout-margin .flex-offset-xl-25,[dir=rtl] .layout-margin .offset-xl-25{margin-left:auto;margin-right:25%}.offset-xl-30,.flex-offset-xl-30,.layout-margin .flex-offset-xl-30,.layout-margin .offset-xl-30{margin-left:30%}[dir=rtl] .offset-xl-30,[dir=rtl] .flex-offset-xl-30,[dir=rtl] .layout-margin .flex-offset-xl-30,[dir=rtl] .layout-margin .offset-xl-30{margin-left:auto;margin-right:30%}.offset-xl-35,.flex-offset-xl-35,.layout-margin .flex-offset-xl-35,.layout-margin .offset-xl-35{margin-left:35%}[dir=rtl] .offset-xl-35,[dir=rtl] .flex-offset-xl-35,[dir=rtl] .layout-margin .flex-offset-xl-35,[dir=rtl] .layout-margin .offset-xl-35{margin-left:auto;margin-right:35%}.offset-xl-40,.flex-offset-xl-40,.layout-margin .flex-offset-xl-40,.layout-margin .offset-xl-40{margin-left:40%}[dir=rtl] .offset-xl-40,[dir=rtl] .flex-offset-xl-40,[dir=rtl] .layout-margin .flex-offset-xl-40,[dir=rtl] .layout-margin .offset-xl-40{margin-left:auto;margin-right:40%}.offset-xl-45,.flex-offset-xl-45,.layout-margin .flex-offset-xl-45,.layout-margin .offset-xl-45{margin-left:45%}[dir=rtl] .offset-xl-45,[dir=rtl] .flex-offset-xl-45,[dir=rtl] .layout-margin .flex-offset-xl-45,[dir=rtl] .layout-margin .offset-xl-45{margin-left:auto;margin-right:45%}.offset-xl-50,.flex-offset-xl-50,.layout-margin .flex-offset-xl-50,.layout-margin .offset-xl-50{margin-left:50%}[dir=rtl] .offset-xl-50,[dir=rtl] .flex-offset-xl-50,[dir=rtl] .layout-margin .flex-offset-xl-50,[dir=rtl] .layout-margin .offset-xl-50{margin-left:auto;margin-right:50%}.offset-xl-55,.flex-offset-xl-55,.layout-margin .flex-offset-xl-55,.layout-margin .offset-xl-55{margin-left:55%}[dir=rtl] .offset-xl-55,[dir=rtl] .flex-offset-xl-55,[dir=rtl] .layout-margin .flex-offset-xl-55,[dir=rtl] .layout-margin .offset-xl-55{margin-left:auto;margin-right:55%}.offset-xl-60,.flex-offset-xl-60,.layout-margin .flex-offset-xl-60,.layout-margin .offset-xl-60{margin-left:60%}[dir=rtl] .offset-xl-60,[dir=rtl] .flex-offset-xl-60,[dir=rtl] .layout-margin .flex-offset-xl-60,[dir=rtl] .layout-margin .offset-xl-60{margin-left:auto;margin-right:60%}.offset-xl-65,.flex-offset-xl-65,.layout-margin .flex-offset-xl-65,.layout-margin .offset-xl-65{margin-left:65%}[dir=rtl] .offset-xl-65,[dir=rtl] .flex-offset-xl-65,[dir=rtl] .layout-margin .flex-offset-xl-65,[dir=rtl] .layout-margin .offset-xl-65{margin-left:auto;margin-right:65%}.offset-xl-70,.flex-offset-xl-70,.layout-margin .flex-offset-xl-70,.layout-margin .offset-xl-70{margin-left:70%}[dir=rtl] .offset-xl-70,[dir=rtl] .flex-offset-xl-70,[dir=rtl] .layout-margin .flex-offset-xl-70,[dir=rtl] .layout-margin .offset-xl-70{margin-left:auto;margin-right:70%}.offset-xl-75,.flex-offset-xl-75,.layout-margin .flex-offset-xl-75,.layout-margin .offset-xl-75{margin-left:75%}[dir=rtl] .offset-xl-75,[dir=rtl] .flex-offset-xl-75,[dir=rtl] .layout-margin .flex-offset-xl-75,[dir=rtl] .layout-margin .offset-xl-75{margin-left:auto;margin-right:75%}.offset-xl-80,.flex-offset-xl-80,.layout-margin .flex-offset-xl-80,.layout-margin .offset-xl-80{margin-left:80%}[dir=rtl] .offset-xl-80,[dir=rtl] .flex-offset-xl-80,[dir=rtl] .layout-margin .flex-offset-xl-80,[dir=rtl] .layout-margin .offset-xl-80{margin-left:auto;margin-right:80%}.offset-xl-85,.flex-offset-xl-85,.layout-margin .flex-offset-xl-85,.layout-margin .offset-xl-85{margin-left:85%}[dir=rtl] .offset-xl-85,[dir=rtl] .flex-offset-xl-85,[dir=rtl] .layout-margin .flex-offset-xl-85,[dir=rtl] .layout-margin .offset-xl-85{margin-left:auto;margin-right:85%}.offset-xl-90,.flex-offset-xl-90,.layout-margin .flex-offset-xl-90,.layout-margin .offset-xl-90{margin-left:90%}[dir=rtl] .offset-xl-90,[dir=rtl] .flex-offset-xl-90,[dir=rtl] .layout-margin .flex-offset-xl-90,[dir=rtl] .layout-margin .offset-xl-90{margin-left:auto;margin-right:90%}.offset-xl-95,.flex-offset-xl-95,.layout-margin .flex-offset-xl-95,.layout-margin .offset-xl-95{margin-left:95%}[dir=rtl] .offset-xl-95,[dir=rtl] .flex-offset-xl-95,[dir=rtl] .layout-margin .flex-offset-xl-95,[dir=rtl] .layout-margin .offset-xl-95{margin-left:auto;margin-right:95%}.offset-xl-33,.flex-offset-xl-33,.layout-margin .flex-offset-xl-33,.layout-margin .offset-xl-33{margin-left:33.3333333333%}.offset-xl-66,.flex-offset-xl-66,.layout-margin .flex-offset-xl-66,.layout-margin .offset-xl-66{margin-left:66.6666666667%}[dir=rtl] .offset-xl-66,[dir=rtl] .flex-offset-xl-66,[dir=rtl] .layout-margin .flex-offset-xl-66,[dir=rtl] .layout-margin .offset-xl-66{margin-left:auto;margin-right:66.6666666667%}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-start,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-start,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-start,.layout-align-xl-space-around-end,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-start,.layout-align-xl-space-between-end,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-start-start,.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-between-start,.layout-align-xl-space-around-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-start-center,.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-between-center,.layout-align-xl-space-around-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-start-center>*,.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-space-around-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-start-end,.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-between-end,.layout-align-xl-space-around-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-start-stretch,.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-space-around-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 100%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 100%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 100%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 100%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 100%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 100%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 100%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 100%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 100%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 100%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 100%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 100%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 100%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 100%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 100%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 100%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 100%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 100%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 100%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 100%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 100%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 100%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 100%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 100%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 100%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 100%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 100%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 100%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 100%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 100%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 100%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 100%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 100%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 100%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 100%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 100%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 100%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 100%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 100%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 100%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 100%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 100%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 100%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 100%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none !important}}:root{--xc-ws-div-color: #011f6a;--xc-ws-text-color: #ffffff;--xc-ws-button-color: #011f6a;--xc-ws-background-color: #fafafa;--xc-ws-client-height: 450px;--xc-ws-client-width: 295px}span.ng-binding,span.field-description{user-select:none}.centered-text{text-align:center}::-webkit-scrollbar{width:0;background:transparent}::-webkit-scrollbar-thumb{background:transparent;border-radius:0px}.field-description{font-size:13px;line-height:14px;color:gray;padding:5px 0px 5px 0px}.field-description.error{color:#dd2c00}.md-button.upload-button{padding:0 16px;height:36px}md-icon.material-icons{color:inherit !important}.white-label,.md-toolbar-tools .title{user-select:none}.white-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.white-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.md-fab.upload-button,.md-fab.upload-button.md-button.md-default-theme.md-raised:not([disabled]) md-icon,.md-fab.upload-button.md-button.md-raised:not([disabled]) md-icon{color:var(--xc-ws-text-color) !important;background:var(--xc-ws-div-color) !important}.form-input-container span{word-break:break-all}.chat-online ::-webkit-scrollbar{width:5px;background:var(--xc-ws-div-color)}.chat-online ::-webkit-scrollbar-thumb{background:linear-gradient(13deg, var(--xc-ws-text-color), var(--xc-ws-div-color));border-radius:10px}.chat-online ::-webkit-scrollbar-thumb:hover{background:linear-gradient(13deg, var(--xc-ws-div-color), var(--xc-ws-text-color))}.chat-online form{display:flex;width:100%;height:calc(100% - 20px);overflow:auto;padding:1em 0px 40px 0px;position:relative;max-width:100%;overflow-x:hidden}.chat-online form .form-field{margin-right:10px;margin-left:10px}.chat-online form .form-input-container{width:100%;height:100%;overflow:auto;scrollbar-width:none}.chat-online form div[ng-switch-when=label] md-content{overflow:hidden}.chat-online form div[ng-switch-when=label] md-content span{overflow:hidden}.chat-online form div.online-button-wrapper{position:fixed;bottom:40px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:linear-gradient(transparent, var(--xc-ws-background-color) 33%);align-items:center;justify-content:center}.chat-online form div.online-button-wrapper button#onlineButton{width:100%}.chat-online form div.offline-button-wrapper{position:fixed;bottom:40px;left:0px;width:calc(100% - 40px);padding:0px 20px;display:flex;background:linear-gradient(transparent, var(--xc-ws-background-color) 33%);align-items:center;justify-content:center}.chat-online form div.offline-button-wrapper button#offlineButton{width:100%}.chat-online form .layout-row,.chat-online form .layout-column{flex-wrap:wrap;justify-content:space-between}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button,.chat-online form .layout-column md-checkbox,.chat-online form .layout-column md-radio-button{padding:4px 0;margin-left:unset !important;word-break:break-all}.chat-online form .layout-row md-checkbox,.chat-online form .layout-row md-radio-button{min-width:50%;max-width:50%}.chat-unmanaged{display:flex;flex-direction:column}.chat-unmanaged form{flex-grow:1;max-width:100%;overflow-x:hidden}.chat-closing{height:100%;padding:20px;overflow:hidden;align-items:stretch;justify-content:space-between}.chat-closing>md-content,.chat-closing>form{max-width:100%;overflow-x:hidden}.chat-closing>md-content,.chat-closing>md-content span,.chat-closing>form,.chat-closing>form span{width:100%}.logo{width:32px}#attachmentButton:hover .mdi-attachment:before{color:#555 !important;opacity:.85 !important}#input_text{position:relative !important;width:100% !important;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:1px solid #ccc;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}#input_text:focus-within{border-color:#66afe9;outline:0;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#attachmentButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}i.icon_color{color:red}#sendButton{background:transparent !important;box-shadow:0 0px 0px 0 rgba(0,0,0,.26) !important;margin:0px !important;padding-top:1px !important;-webkit-font-smoothing:none !important}.emojionearea,.emojionearea.form-control{display:block;position:relative !important;width:100%;height:auto;padding:0;font-size:14px;border:0;background-color:#fff;border:0px solid #ccc !important;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-webkit-box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;box-shadow:inset 0 0px 0px rgba(0,0,0,.075) !important;-moz-transition:border-color .15s ease-in-out,-moz-box-shadow .15s ease-in-out;-o-transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.mdi mdi-attachment mdi-24px mdi-light ng-scope::before{color:#a9a9a9}.mdi-attachment:hover{color:#555 !important}.mdi-24px.mdi-set,.mdi-24px.mdi:before{color:#a9a9a9}.md-button.md-fab.md-mini{line-height:20px !important;min-height:24px !important}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter>img{width:19px !important;height:19px !important;margin:0 1px !important}.emojionearea .emojionearea-picker{width:100% !important;right:0 !important;height:220px !important;top:0px !important}.emojionearea .emojionearea-picker .emojionearea-wrapper{position:relative;height:220px !important;width:100% !important}.emojionearea .emojionearea-picker.emojionearea-picker-position-top{margin-top:-100% !important}.emojionearea .emojionearea-button.active+.emojionearea-picker-position-top{margin-top:-236px !important;width:260px !important;min-width:260px !important}.emojionearea .emojionearea-picker .emojionearea-search>input{width:100px !important;min-width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search{width:100px !important}.emojionearea .emojionearea-picker .emojionearea-search-panel+.emojionearea-scroll-area{height:70% !important}.emojionearea .emojionearea-picker .emojionearea-scroll-area .emojionearea-category-block{padding:0 !important}.emojionearea .emojionearea-picker .emojionearea-filters{background:#f5f7f9;padding:0 !important;height:40px}.emojionearea .emojionearea-picker .emojionearea-filters .emojionearea-filter{width:25px !important;padding:7px 3px 0}#id-row,#chat-app{max-width:100%;width:100%;max-height:100%;height:100%}#chat-app{background-color:transparent}#chat-app .header-button{padding:0;margin:0;font-size:18px;cursor:pointer}ui-view{display:block;width:100%;height:100%}#chat-app .chat-toolbar{height:56px;min-height:56px;cursor:pointer;outline:0}#chat-app .chat-content{flex-grow:1;height:calc(100% - 56px);background:#fff;border:1px solid #d3d3d3;-ms-overflow-style:none;overflow:hidden;box-sizing:border-box}#chat-app .chat-content .chat-messages{height:calc(100% - 60px);overflow:auto;border-bottom:1px solid #d3d3d3}#chat-app .chat-content .chat-online{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .chat-content .chat-unmanaged{height:calc(100% - 40px);width:calc(100% - 20px);padding:20px 10px;overflow:hidden}#chat-app .avatar-wrapper{position:relative;bottom:-3px;right:5px}#chat-app .chat-content .message-row .bubble{word-wrap:break-word;position:relative;max-width:190px;padding:6px 7px 8px 9px;background-color:#fff;border-radius:6px}#chat-app .chat-content .message-row .bubble .message{white-space:pre-wrap}#chat-app .chat-content .message-row .bubble .message-done{color:#dcdcdc}#chat-app .chat-content .message-row .bubble .message-done-all{color:#00bfff}#chat-app .chat-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:"";position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#chat-app .chat-content .message-row .bubble .time{font-size:10px;text-align:right;margin-bottom:5px}#chat-app .chat-content .message-row.out .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.auto{align-items:flex-end;font-style:italic}#chat-app .chat-content .message-row.auto .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-size:17px;font-style:italic;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in{align-items:flex-end}#chat-app .chat-content .message-row.in2{align-items:flex-end}#chat-app .chat-content .message-row.out{align-items:flex-end}#chat-app .chat-content .message-row.in2 .avatar{margin:0 16px 0 0;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in2 .bubble{margin-right:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in2 .bubble:before{left:-11px;right:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=);-webkit-transform:rotate(180deg);transform:rotate(180deg)}#chat-app .chat-content .message-row.in .avatar{order:2;margin:0 0 0 16px;width:40px;min-width:40px;height:40px;line-height:40px;border-radius:50%;font-weight:500;text-align:center;color:#fff}#chat-app .chat-content .message-row.in .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#chat-app .chat-content .message-row.in .bubble:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#chat-app .chat-footer{width:100%}#waiting{overflow:visible;height:calc(100% - 64px);background:#fff;text-align:center;flex:1 0 auto;padding:32px}#waiting .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54)}.sk-fading-circle{width:40px;height:40px;position:relative}.sk-fading-circle .sk-circle{width:100%;height:100%;position:absolute;left:0;top:0}.sk-fading-circle .sk-circle:before{content:"";display:block;margin:0 auto;width:15%;height:15%;background-color:#333;border-radius:100%;-webkit-animation:sk-circleFadeDelay 1.2s infinite ease-in-out both;animation:sk-circleFadeDelay 1.2s infinite ease-in-out both}.sk-fading-circle .sk-circle2{-webkit-transform:rotate(30deg);-ms-transform:rotate(30deg);transform:rotate(30deg)}.sk-fading-circle .sk-circle3{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg)}.sk-fading-circle .sk-circle4{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.sk-fading-circle .sk-circle5{-webkit-transform:rotate(120deg);-ms-transform:rotate(120deg);transform:rotate(120deg)}.sk-fading-circle .sk-circle6{-webkit-transform:rotate(150deg);-ms-transform:rotate(150deg);transform:rotate(150deg)}.sk-fading-circle .sk-circle7{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.sk-fading-circle .sk-circle8{-webkit-transform:rotate(210deg);-ms-transform:rotate(210deg);transform:rotate(210deg)}.sk-fading-circle .sk-circle9{-webkit-transform:rotate(240deg);-ms-transform:rotate(240deg);transform:rotate(240deg)}.sk-fading-circle .sk-circle10{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.sk-fading-circle .sk-circle11{-webkit-transform:rotate(300deg);-ms-transform:rotate(300deg);transform:rotate(300deg)}.sk-fading-circle .sk-circle12{-webkit-transform:rotate(330deg);-ms-transform:rotate(330deg);transform:rotate(330deg)}.sk-fading-circle .sk-circle2:before{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.sk-fading-circle .sk-circle3:before{-webkit-animation-delay:-1s;animation-delay:-1s}.sk-fading-circle .sk-circle4:before{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}.sk-fading-circle .sk-circle5:before{-webkit-animation-delay:-0.8s;animation-delay:-0.8s}.sk-fading-circle .sk-circle6:before{-webkit-animation-delay:-0.7s;animation-delay:-0.7s}.sk-fading-circle .sk-circle7:before{-webkit-animation-delay:-0.6s;animation-delay:-0.6s}.sk-fading-circle .sk-circle8:before{-webkit-animation-delay:-0.5s;animation-delay:-0.5s}.sk-fading-circle .sk-circle9:before{-webkit-animation-delay:-0.4s;animation-delay:-0.4s}.sk-fading-circle .sk-circle10:before{-webkit-animation-delay:-0.3s;animation-delay:-0.3s}.sk-fading-circle .sk-circle11:before{-webkit-animation-delay:-0.2s;animation-delay:-0.2s}.sk-fading-circle .sk-circle12:before{-webkit-animation-delay:-0.1s;animation-delay:-0.1s}@-webkit-keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}@keyframes sk-circleFadeDelay{0%,100%,39%{opacity:0}40%{opacity:1}}md-toast.md-success-toast .md-toast-content{background-color:green}md-toast.md-failure-toast .md-toast-content{background-color:red}@media(min-device-width: 769px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:block}}@media(max-device-width: 768px){#chat-toolbar .mdi-download,#chat-toolbar .mdi-printer{display:none}}md-option .md-text{white-space:break-spaces}
 
 /*# sourceMappingURL=app.css.map*/
\ No newline at end of file
index 4a2aa43..ed81ab6 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"styles/app.css","mappings":";;;;;;;;;;;;;;;;;;;;AAEQ,WCFR,mCACE,4CACA,wSACA,mBAKA,kBACA,sBCTF,oBAEE,yDACA,kBACA,oBACA,oBACA,mCACA,kCACA,0BCPE,eACI,kCADJ,eACI,qBADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,2BADJ,eACI,2BADJ,eACI,yBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oCADJ,eACI,sCADJ,eACI,mCADJ,eACI,2CADJ,eACI,6BADJ,eACI,yBADJ,eACI,6BADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,6BADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,mBADJ,eACI,wBADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,0BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,2BADJ,eACI,4BADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,oBADJ,eACI,+BADJ,eACI,uBADJ,eACI,uBADJ,eACI,oBADJ,eACI,qBADJ,eACI,kCADJ,eACI,0BADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,iCADJ,eACI,oCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,4BADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,mCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,uBADJ,eACI,+BADJ,eACI,gCADJ,eACI,4BADJ,eACI,gCADJ,eACI,iCADJ,eACI,uCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,qCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,+BADJ,eACI,gCADJ,eACI,6BADJ,eACI,mCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,yBADJ,eACI,8BADJ,eACI,kCADJ,eACI,0CADJ,eACI,qCADJ,eACI,6CADJ,eACI,8CADJ,eACI,6BADJ,eACI,qCADJ,eACI,6CADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,2BADJ,eACI,+BADJ,eACI,uCADJ,eACI,kCADJ,eACI,0CADJ,eACI,2CADJ,eACI,0BADJ,eACI,kCADJ,eACI,0CADJ,eACI,4BADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,gBADJ,eACI,uBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,+BADJ,eACI,sBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,uBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,oBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,iCADJ,eACI,kCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,sCADJ,eACI,uCADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,6CADJ,eACI,+CADJ,eACI,2BADJ,eACI,8BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,wBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,qBADJ,eACI,uBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,gCADJ,eACI,gCADJ,eACI,kBADJ,eACI,yBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,2BADJ,eACI,mCADJ,eACI,uBADJ,eACI,oCADJ,eACI,+BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,mCADJ,eACI,6BADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,iCADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,uBADJ,eACI,6BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,mBADJ,eACI,mBADJ,eACI,oBADJ,eACI,iBADJ,eACI,4BADJ,eACI,sBADJ,eACI,sBADJ,eACI,iBADJ,eACI,iCADJ,eACI,mCADJ,eACI,+BADJ,eACI,wBADJ,eACI,sBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,yBADJ,eACI,oCADJ,eACI,oCADJ,eACI,qCADJ,eACI,kCADJ,eACI,wBADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,iBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,wBADJ,eACI,2BADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,gCADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,iBADJ,eACI,kBADJ,eACI,2BADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,yBADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,6BADJ,eACI,wBADJ,eACI,gCADJ,eACI,gCADJ,eACI,uBADJ,eACI,sCADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mCADJ,eACI,2CADJ,eACI,oCADJ,eACI,mCADJ,eACI,6BADJ,eACI,oCADJ,eACI,4CADJ,eACI,qCADJ,eACI,qCADJ,eACI,4CADJ,eACI,oDADJ,eACI,6CADJ,eACI,sCADJ,eACI,6CADJ,eACI,qDADJ,eACI,8CADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,wBADJ,eACI,yBADJ,eACI,wBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,0BADJ,eACI,wBADJ,eACI,kBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,kCADJ,eACI,kCADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,uBADJ,eACI,wBADJ,eACI,sBADJ,eACI,uBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,wCADJ,eACI,4BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oCADJ,eACI,8BADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,qBADJ,eACI,0BADJ,eACI,qBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,mCADJ,eACI,8BADJ,eACI,sCADJ,eACI,6BADJ,eACI,kCADJ,eACI,gCADJ,eACI,wCADJ,eACI,8BADJ,eACI,sCADJ,eACI,4BADJ,eACI,oCADJ,eACI,0BADJ,eACI,mCADJ,eACI,2CADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,yBADJ,eACI,+BADJ,eACI,2BADJ,eACI,0BADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,sBADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,mBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kCADJ,eACI,6BADJ,eACI,8BADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,4BADJ,eACI,2BADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,qBADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,oCADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,sBADJ,eACI,4BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,oBADJ,eACI,2BADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,6BADJ,eACI,yBADJ,eACI,2BADJ,eACI,qBADJ,eACI,6BADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,sBADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,6BADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,oBADJ,eACI,4BADJ,eACI,sBADJ,eACI,0BADJ,eACI,iBADJ,eACI,iBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,4BADJ,eACI,6BADJ,eACI,oCADJ,eACI,2BADJ,eACI,kCADJ,eACI,oBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,6BADJ,eACI,2BADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,sBADJ,eACI,+BADJ,eACI,4BADJ,eACI,sBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,2BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,oBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,sBADJ,eACI,4BADJ,eACI,gCADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,sBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,wBADJ,eACI,gCADJ,eACI,kBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,gCADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,kCADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,wBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,6BADJ,eACI,iCADJ,eACI,mCADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,uBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,qBADJ,eACI,kBADJ,eACI,kBADJ,eACI,4BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,mBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,2BADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,6BADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,6BADJ,eACI,mCADJ,eACI,qCADJ,eACI,4BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,2BADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,kBADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,iCADJ,eACI,6BADJ,eACI,sBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,8BADJ,eACI,oCADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,iCADJ,eACI,+BADJ,eACI,+BADJ,eACI,gCADJ,eACI,yBADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,oCADJ,eACI,iCADJ,eACI,oCADJ,eACI,iCADJ,eACI,4CADJ,eACI,0CADJ,eACI,2CADJ,eACI,oCADJ,eACI,oCADJ,eACI,2BADJ,eACI,iCADJ,eACI,+BADJ,eACI,gCADJ,eACI,kCADJ,eACI,uCADJ,eACI,gCADJ,eACI,iCADJ,eACI,+BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,4BADJ,eACI,yBADJ,eACI,kCADJ,eACI,0CADJ,eACI,8BADJ,eACI,gCADJ,eACI,yBADJ,eACI,yCADJ,eACI,yCADJ,eACI,0BADJ,eACI,8BADJ,eACI,0CADJ,eACI,0CADJ,eACI,uCADJ,eACI,gCADJ,eACI,gCADJ,eACI,+BADJ,eACI,oCADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,wBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,wBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,yBADJ,eACI,gCADJ,eACI,gCADJ,eACI,qBADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,yBADJ,eACI,oCADJ,eACI,6BADJ,eACI,mBADJ,eACI,kBADJ,eACI,iBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,4BADJ,eACI,wCADJ,eACI,qCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mCADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,yBADJ,eACI,yBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,iCADJ,eACI,yBADJ,eACI,yBADJ,eACI,6BADJ,eACI,8BADJ,eACI,2BADJ,eACI,iBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,iCADJ,eACI,6BADJ,eACI,wBADJ,eACI,uBADJ,eACI,iCADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,gCADJ,eACI,uBADJ,eACI,2BADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,6BADJ,eACI,iCADJ,eACI,qBADJ,eACI,qBADJ,eACI,yBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,+BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,0BADJ,eACI,0BADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,+BADJ,eACI,6BADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,4BADJ,eACI,2BADJ,eACI,uBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,sCADJ,eACI,uCADJ,eACI,4CADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,kCADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,oBADJ,eACI,mBADJ,eACI,8BADJ,eACI,4BADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,iCADJ,eACI,uBADJ,eACI,wBADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,kBADJ,eACI,oBADJ,eACI,sBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,oBADJ,eACI,iBADJ,eACI,wBADJ,eACI,uBADJ,eACI,sBADJ,eACI,wBADJ,eACI,yBADJ,eACI,sBADJ,eACI,gCADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,iBADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,6BADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,iCADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,kCADJ,eACI,wBADJ,eACI,4BADJ,eACI,iCADJ,eACI,oBADJ,eACI,+BADJ,eACI,wBADJ,eACI,wBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,uBADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,6BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,oBADJ,eACI,uBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,+BADJ,eACI,8BADJ,eACI,iCADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,+BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,2BADJ,eACI,8BADJ,eACI,kCADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,gCADJ,eACI,2BADJ,eACI,gCADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,oBADJ,eACI,uBADJ,eACI,4BADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,iCADJ,eACI,gCADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,sBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qBADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,kCADJ,eACI,sCADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,gCADJ,eACI,kCADJ,eACI,8BADJ,eACI,uBADJ,eACI,0BADJ,eACI,oBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,6BADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,yBADJ,eACI,mBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,sBADJ,eACI,oCADJ,eACI,iBADJ,eACI,kBADJ,eACI,kBADJ,eACI,qBADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,gCADJ,eACI,iDADJ,eACI,wCADJ,eACI,iBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,oBADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,yBADJ,eACI,qBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,mBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,gCADJ,eACI,gCADJ,eACI,sCADJ,eACI,uCADJ,eACI,qBADJ,eACI,8BADJ,eACI,4BADJ,eACI,mBADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,uBADJ,eACI,qBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,qBADJ,eACI,oBADJ,eACI,mBADJ,eACI,iBADJ,eACI,oBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,yBADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,4BADJ,eACI,gCADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,uBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,oCADJ,eACI,mCADJ,eACI,4BADJ,eACI,wBADJ,eACI,gBADJ,eACI,oBADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,+BADJ,eACI,uBADJ,eACI,oBADJ,eACI,oBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kBADJ,eACI,8BADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,oCADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,2BADJ,eACI,6BADJ,eACI,yBADJ,eACI,kBADJ,eACI,kBADJ,eACI,sBADJ,eACI,8BADJ,eACI,yBADJ,eACI,0CADJ,eACI,iCADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,oBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,+BADJ,eACI,qBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,uBADJ,eACI,8BADJ,eACI,qBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,uBADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,qBADJ,eACI,mBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,4BADJ,eACI,wBADJ,eACI,gCADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,iCADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,kBADJ,eACI,kBADJ,eACI,0BADJ,eACI,mBADJ,eACI,oBADJ,eACI,0BADJ,eACI,oBADJ,eACI,uBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,6BADJ,eACI,oBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,iBADJ,eACI,sBADJ,eACI,kBADJ,eACI,wBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,qBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,4BADJ,eACI,qBADJ,eACI,oBADJ,eACI,6BADJ,eACI,kCADJ,eACI,yBADJ,eACI,oBADJ,eACI,gBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,mCADJ,eACI,gCADJ,eACI,iCADJ,eACI,kCADJ,eACI,gCADJ,eACI,iCADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,qBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,6BADJ,eACI,4BADJ,eACI,sBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,mBADJ,eACI,+BADJ,eACI,2BADJ,eACI,wBADJ,eACI,gCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,8BADJ,eACI,4BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,uBADJ,eACI,oBADJ,eACI,uBADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,yBADJ,eACI,8BADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,6BADJ,eACI,8BADJ,eACI,gCADJ,eACI,iBADJ,eACI,uBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,sCADJ,eACI,2BADJ,eACI,kCADJ,eACI,0CADJ,eACI,mBADJ,eACI,mBADJ,eACI,4BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,uBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,2BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,iCADJ,eACI,sCADJ,eACI,iCADJ,eACI,4CADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,wBADJ,eACI,qBADJ,eACI,uBADJ,eACI,4BADJ,eACI,mBADJ,eACI,oBADJ,eACI,wBADJ,eACI,6BADJ,eACI,4BADJ,eACI,yBADJ,eACI,iBADJ,eACI,4BADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,iCADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,4BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qCADJ,eACI,sCADJ,eACI,oBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,iBADJ,eACI,sBADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,qCADJ,eACI,sCADJ,eACI,iCADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,+BADJ,eACI,uBADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,oBADJ,eACI,kBADJ,eACI,mBADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oCADJ,eACI,8BADJ,eACI,4BADJ,eACI,iCADJ,eACI,oCADJ,eACI,gCADJ,eACI,oBADJ,eACI,kBADJ,eACI,qBADJ,eACI,uBADJ,eACI,yBADJ,eACI,4BADJ,eACI,gCADJ,eACI,qBADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,8BADJ,eACI,yBADJ,eACI,+BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,wBADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,iCADJ,eACI,4BADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,8BADJ,eACI,6BADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,qBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,kCADJ,eACI,0BADJ,eACI,mBADJ,eACI,2BADJ,eACI,iBADJ,eACI,yBADJ,eACI,wBADJ,eACI,oBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,8BADJ,eACI,uBADJ,eACI,4BADJ,eACI,kBADJ,eACI,oBADJ,eACI,2BADJ,eACI,8BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,mBADJ,eACI,4BADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,sBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kBADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,kBADJ,eACI,oBADJ,eACI,mCADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,0BADJ,eACI,oCADJ,eACI,kCADJ,eACI,oCADJ,eACI,kCADJ,eACI,qBADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iBADJ,eACI,2BADJ,eACI,yBADJ,eACI,oBADJ,eACI,kCADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,0BADJ,eACI,+BADJ,eACI,kCADJ,eACI,kCADJ,eACI,4BADJ,eACI,iCADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,sBADJ,eACI,0BADJ,eACI,iCADJ,eACI,mCADJ,eACI,8BADJ,eACI,gCADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,oCADJ,eACI,sBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,uBADJ,eACI,mBADJ,eACI,oBADJ,eACI,6BADJ,eACI,0BADJ,eACI,gBADJ,eACI,oBADJ,eACI,uBADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,iBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,oBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,kCADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,iCADJ,eACI,2BADJ,eACI,4BADJ,eACI,iCADJ,eACI,+BADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,oBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,sBADJ,eACI,sCADJ,eACI,gCADJ,eACI,wCADJ,eACI,sCADJ,eACI,iCADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,iBADJ,eACI,kBADJ,eACI,uBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,oBADJ,eACI,kBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,kBADJ,eACI,kBADJ,eACI,6BADJ,eACI,2CADJ,eACI,2CADJ,eACI,0CADJ,eACI,yCADJ,eACI,4CADJ,eACI,6CADJ,eACI,iCADJ,eACI,iBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,kBADJ,eACI,sBADJ,eACI,oCADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,qBADJ,eACI,mBAIR,WACI,kBACA,wCCLI,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,kBAMR,qBACI,+BAEJ,qBACI,mBAIJ,UACI,gCAEJ,0BACI,uBAOA,+BACI,4BACA,wBACA,uBAHJ,+BACI,4BACA,wBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,oBAoBZ,4BACI,qBACA,aACA,mBACA,oBAEJ,4BACI,qBACA,aACA,mBACA,kBC9DJ,6CACI,sCACQ,6BAGZ,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ,sBAId,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ;;;;;ECxBd,CAmkBA,UACE,YACA,kBAGF,KACE,SACA,UAGF,sBACE,aAEF,OACE,aAGF,iCAEE,mBACA,yBACA,gBACA,YACA,UACA,SAGF,6BAIE,wBAIF,oEAIE,eACA,0BAEA,4GACE,eAIJ,SACE,mBACA,cAIA,mBACE,6BACA,uBACA,+BAEA,+FAEE,wBAGJ,uBACE,iBAIJ,oBACE,SACA,mBACA,WACA,YACA,gBACA,UACA,kBACA,oBACA,UAGF,WACE,kBACA,MACA,OACA,SACA,QACA,sBACA,oBAGF,sBA7bE,uCAgcF,sBA5bE,sCAgcF,8BACE,wDAOF,qBACE,oBACA,kBACA,gBACA,OACA,MACA,WACA,YACA,qDAGF,WAEE,kBACA,yCACA,yBACA,UACA,kBACA,4BACE,sRAOF,4BACE,yCAEF,mFACE,WAEF,4BACE,gEAKJ,4BACE,eACA,gBAGF,YACE,YAGF,WACE,WAGF,gBACE,kBACA,6BACA,MACA,QACA,SACA,OACA,UA5oBoB,CA8oBpB,oCACE,cACA,kBACA,yBACA,QACA,MACA,SACA,UAppBsB,CAqpBtB,wCAMJ,gBACE,gCAKF,eACE,yBAGF,yBACE,YACE,cAOF,wDACG,mBAIL,aACE,cACA,2BAEF,aACE,cACA,2BApQA,yBA6CE,4IAnQF,gBA5K0B,CA6K1B,gKACE,aAkQ2E,CAjQ3E,iBA/KwB,EAwY1B,+CAuCE,mRAnQF,gBA5K0B,CA6K1B,iTACE,aAkQ2E,CAjQ3E,iBA/KwB,EA+Y1B,gDAgCE,6ZAnQF,gBA5K0B,CA6K1B,qcACE,aAkQ2E,CAjQ3E,iBA/KwB,EAuZ1B,iDAwBE,ikBAnQF,gBA5K0B,CA6K1B,mnBACE,aAkQ2E,CAjQ3E,iBA/KwB,EAga1B,0BAeE,mzBAnQF,gBA5K0B,CA6K1B,+2BACE,aAkQ2E,CAjQ3E,iBA/KwB,EAipB5B,UACE,0CACA,8BAEA,gBAEA,8BACA,0BAEA,mCACA,kCAMF,cACE,eAhyByB,CAiyBzB,gBACA,uBACA,iBAnyByB,CAqyB3B,cACE,cAryByB,CAsyBzB,gBACA,wBACA,gBAxyByB,CA0yB3B,cACE,cA1yByB,CA2yBzB,gBACA,iBAEF,cACE,cA9yByB,CA+yBzB,gBACA,iBAEF,aACE,cAlzByB,CAmzBzB,gBACA,iBAEF,UA/kBE,cAtOyB,CAuOzB,gBACA,sBAglBF,YA9jBE,cAzPyB,CA0PzB,gBACA,qBACA,iBAikBF,WAllBE,cAzOyB,CA0OzB,gBACA,qBACA,iBAklBF,WA9kBE,cAhPyB,CAiPzB,gBACA,qBACA,iBA8kBF,YACE,cAj0ByB,CAk0BzB,qBAEF,WACE,qBAOF,kCAKE,8CAl2BY,CAq2Bd,6BAIE,eA2bF,wBACE,YACA,OACA,kBACA,MACA,WAGF,wBACE,eAGF,qBACE,aAGF,kBACE,aAIF,2BACE,UACA,gBAGF,UACE,UACA,kBAEA,0BAGE,UACA,gBAGF,kCACE,UACA,6CA7tCa,CAguCf,kCACE,UACA,6CA9tCa,CAiuCf,2EAEE,UAGF,6BACE,YACA,eACA,WAGF,2BACE,YACA,kDAGF,2BACE,kDAIJ,sBACE,gBACA,OACA,gBACA,eACA,eACA,MAQF,gBACE,kBACA,cACA,YACA,kBACA,iBACA,gBAEE,gCACE,eAGJ,mCACE,gBACA,uBACA,YAEA,sDACE,iBAEF,wDACE,YAIA,gEACE,cACA,kBACA,QACA,QA/BuB,CAgCvB,UAjCqB,CAkCrB,WAlCqB,CAqCvB,+DAtmCJ,kBAikC2B,CAhkC3B,yEACE,eAsmCgF,CArmChF,iBA8jCyB,CA2C3B,qCAEE,aACA,mBACA,sBAEA,kBACA,iBACA,YACA,qDACE,WAGF,mGAGE,WACA,sBACA,YAGF,wDACE,kBACA,YACA,OAEA,kEACE,YACA,UACA,SACA,WAEF,+EACE,kBACA,MACA,OACA,WACA,WACA,gBAEA,6FACE,gBACA,WAEF,wFACE,+BACA,wGACE,UAGJ,wFACE,+BACA,wGACE,UAMV,qCAvvCA,eAEA,sBACA,YACA,gBACA,aACA,uBAmvCE,WACA,eACA,iBACA,YAnvCF,gDACE,aAovCF,6CACE,kBACA,iBACA,kBACA,UAjHyB,CAkHzB,WAlHyB,CAmHzB,eACA,YACA,kBACA,UACA,eACA,uBACA,gBACA,mDACE,WACA,kBACA,SACA,WACA,YACA,UACA,kBACA,mBACA,UACA,mDAz5CW,CA25Cb,mDACE,aAEA,yDACE,mBACA,UAGJ,qDACE,kBACA,QACA,SACA,gDACA,0DACE,eAGJ,sDACE,mBACA,mCACA,sEACE,mBAGJ,sDACE,mCACA,sEACE,mBAKN,8CAGE,sBACE,sBAEF,kDACE,YAKN,qIAEE,kBACA,qCACA,WA79CgB,CAi+ChB,YAEA,2JACE,iBAIJ,4BACE,sBACA,cACA,SACA,gBACA,gBACA,UAGF,mFAEE,WA7M4B,CAgN9B,6BACE,SACA,gBACA,UAEA,yDACE,eACA,gBACA,eACA,gBAzN0B,CA0N1B,WA1N0B,CA2N1B,kCACA,SACA,mBACA,uBAEA,+DACE,aAGF,oFACE,eAMN,8CACE,6CAEE,uBAOJ,YACE,yBAEA,kBACA,MACA,SACA,OACA,QAEA,UA3hDiB,CA6hDjB,6BACE,0BACA,WAEF,+BACE,WACA,sBAEF,+BACE,WAEF,qCACE,WAEF,gCACE,WAIF,6BACE,kBAGF,sBAEE,YAEA,+BACE,UAEF,yDACE,YAEF,+BACE,YACA,yBAEF,yDACE,UAeN,gBACE,kBACA,OACA,QACA,SACA,2BACA,UA5lDqB,CA8lDrB,qBACA,uBAEA,kCACA,mDArlDe,CAslDf,8BAEA,8BACE,cAGF,yBACE,UACA,kCAGF,gCACE,UACA,cACA,6CAIF,gCACE,6CACA,mDAtmDY,CAymDd,8BACE,6BACA,8CA7sDU,CA8sDV,gBA1CyB,CA2CzB,UACA,mBAGF,+BACE,qBACA,YACA,WACA,UAGF,6BACE,aACA,aAEA,mCACE,eAKF,qCACE,UACA,mBACA,WArE0B,CA4E9B,wBACE,kBACA,mBACA,cAEA,gCACE,aACA,mBACA,eACA,mBACA,mBAGF,qCACE,sBACA,mBACA,mBAEA,YAEA,cA5uDqB,CA6uDrB,iBA7uDqB,CA+vDrB,yBA1BF,qCAaI,wBACA,wBAFQ,CAKN,yDACE,uBAEF,qDACE,sBASN,gDA9BF,qCAaI,aACA,aAFQ,EAsBV,iDAlCF,qCAaI,wBACA,wBAFQ,EA0BV,0BAtCF,qCAaI,wBACA,wBAFQ,EA+BV,6CACE,aAGF,2DACE,aACA,sBACA,mBACA,WACA,oBAGF,2DACE,6BACA,aACA,sBACA,mBACA,WAGF,mDACE,eAtJwB,CAuJxB,iBACA,eACA,SACA,mBACA,WACA,kBACA,oBACA,gBAOR,8CACE,gBACE,uBA+BJ,mCACE,SAGF,WACE,qBACA,kBACA,eA33CA,eAk2CmB,CA6BnB,cA1BiB,CAr2CjB,gBAk2CmB,CAgCnB,sBACA,mBACA,kBAEA,iBA3CqB,CA4CrB,sBAGA,iBACA,aACA,SAGA,aAzCe,CA0Cf,cA5Cc,CA8Cd,uBACA,mBACA,mBAGA,yBACA,gBAx5CA,cAveyB,CAi4DzB,mBACA,qBACA,oBACA,qBAGA,gBAEA,iHAj6CA,mHAEE,eAg2CuB,CAl2CzB,mHAEE,gBAg2CuB,CAl2CzB,mHAEE,cA61CqB,CAqEvB,iBACE,aAGF,kCACE,qBAMF,uCACE,gBAGF,uBACE,gBAGF,mBACE,UACA,gBAIA,qCA7tDF,uCAkuDA,0BACE,aACA,WAt0DiB,CAu0DjB,YACA,gBA/5DQ,CAg6DR,WAz6DuB,CA06DvB,UAz0DgB,CA00DhB,iBA9GuB,CAiHzB,kBAKE,UAn3DU,CAq3DV,gBA1GqB,CA4GrB,YACA,UAp1De,CAq1Df,WAp1DgB,CAq1DhB,sBAxvDF,uCA2vDE,iBAhIuB,CAiIvB,4BACA,gBAEA,mDAr3DY,CAs3DZ,0DAlpDF,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA+oDA,0BACE,gBAvHwB,CAwHxB,UA1HkB,CA2HlB,WA1HmB,CA6HrB,qDACE,gBAGF,4BACE,gBAOA,6FApxDJ,uCAuxDI,qFAnxDJ,sCAyxDA,gCACE,sBACA,4BACA,gBAIA,gCAQF,kEACE,cAKF,6FAEE,mDA96Da,CA+6Db,kCAEE,4RAEE,kCAON,yGAEE,mDA57Da,CA67Db,mCAEE,oTAEE,mCAMR,iBACE,aACA,OACA,WAEA,4BACE,OAEA,cAEA,gBAEA,QAEA,6BACA,gBAEA,kBACA,uBACA,mBAEA,wCACE,8BAEF,uCACE,uBACA,8BAKN,8CACE,uCAEE,uBAOJ,QACE,sBACA,aACA,sBACA,UA5jEyB,CA8jEzB,0GAriEsB,CAuiEtB,uBACE,YAZW,CAaX,aACA,mBAGE,kDA1yDJ,iBA2yDkD,CA1yDlD,4DACE,iBAyyDsD,CAxyDtD,gBAwyDgD,CAK9C,iDAhzDJ,gBAizDmD,CAhzDnD,2DACE,gBA+yDuD,CA9yDvD,iBA8yDiD,CAIjD,sCACE,WACA,YAEA,oGAEE,kBAGF,8CACE,YACA,kDAEE,eACA,cAIJ,0DACE,gBAEA,oEACE,eAKN,2CACE,aACA,OACA,sBAEA,uDACE,eAKN,uEAGE,sBACA,aACA,cACA,WACA,YAGF,sBACE,uBACA,aACA,cACA,mBAEA,sCACE,cAGF,yCACE,OACA,sBACA,aAEA,qDACE,cACA,eAIA,gEACE,iBAKN,0CACE,gBAEA,uDACE,YACA,WAEF,uDACE,aACA,YAEF,uDACE,aACA,YAKN,wBACE,cACA,YA3HW,CA8HT,sCACE,aAGF,qCACE,gBAIJ,qCACE,aACA,YAIJ,wBACE,UAnsEuB,CAusEnB,sEACE,aAEA,oFACE,aAGF,mFACE,gBAIJ,gEACE,eACA,kBAKN,6CACE,OACA,2BACA,aACA,mBAIA,4EACE,aAEA,0FAz8DN,aA08DqD,CAz8DrD,oGACE,gBAw8DsD,CAv8DtD,cAu8DmD,CAG/C,yFA78DN,cA88DqD,CA78DrD,mGACE,iBA48DsD,CA38DtD,aA28DmD,CAIjD,sEACE,gBACA,iBAEA,oFAt9DN,gBAu9DqD,CAt9DrD,8FACE,gBAq9D2E,CAp9D3E,iBAo9DmD,CAG/C,mFA19DN,iBA29DqD,CA19DrD,6FACE,iBAy9D2E,CAx9D3E,gBAw9DmD,CAIjD,4EACE,OACA,yBACA,aACA,mBAKN,uBACE,gBACA,YAjNW,CAqNf,8CACE,QACE,uBAKF,sBACE,WACA,YAwBF,4BACE,eANkB,CAOlB,mBAIJ,YACE,sBACA,qBACA,mBACA,eACA,aACA,iBACA,kBACA,cA/sEe,CAuXf,eAi0DoB,CAh0DpB,qHAEE,eA+zDwB,CA0BxB,4DACE,UACA,SACA,WACA,YAIA,6EACE,iCA7/DN,0BACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,oCACE,SA4DsB,CA7DxB,oCACE,OA6D0B,CAE1B,iCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,gCACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,+CACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,qBACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,gCACE,yBAEA,sCACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,sBACE,eAIA,4CACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA45DJ,0BAEE,SACA,UACA,WACA,UAlDwB,CAmDxB,gBAGF,sBACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eA9DuB,CA+DvB,mBAlkEF,gBAwgEqB,CAvgErB,gCACE,aAkkEoE,CAjkEpE,iBAqgEmB,CA8DnB,4BA7kEF,gBA+kE8B,CA/kE9B,cAglE+B,CA/kE/B,sCACE,aA6kEiF,CA9kEnF,sCACE,iBA8kEgC,CAKpC,2CACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eAGA,UA/lEA,gBAkmE0B,CAlmE1B,cAmmE2B,CAlmE3B,qDACE,aAgmEiE,CAjmEnE,qDACE,iBAimE4B,CAmB5B,oCAtnEF,kBA+mEqB,CA9mErB,8CACE,kBAqnE+C,CAC7C,uDAxnEJ,UAynE0B,CAxnE1B,iEACE,WAunE8B,CAC1B,2DACE,WApBI,CAqBJ,mBAGJ,qDACE,qBACA,WA1BM,CAhmEZ,eA2nEmD,CA1nEnD,+DACE,gBAynE2D,CAxnE3D,gBAwnEiD,CAKrD,uBACE,YACA,2BACE,WA1BmC,CA2BnC,mBACA,cA3B6B,CA6B/B,wCAvoEA,eA0mE+B,CA+B7B,WA9BsB,CA1mExB,kDACE,gBAsoE8E,CAroE9E,gBAumE6B,CAiC/B,iFACE,qBACA,gBACA,uBAGJ,iCACE,YAEF,SACE,aAEF,UAGE,aACA,eACA,YACA,8CA/8EY,CAg9EZ,cA/De,CAtmEf,mBA6mEkB,CA0DlB,sBAlwEA,gBACE,WACA,cACA,WAyFF,oBACE,mBAoqEwC,CAG1C,+CACE,eAnEU,CAsEZ,4BACE,YAKA,+BA5qEF,kBAmmE0B,CAlmE1B,yCACE,eA2qE6E,CA1qE7E,iBAgmEwB,CA4EtB,gDA/qEJ,iBAgrEqD,CA/qErD,0DACE,eA8qE6D,CA7qE7D,gBA6qEmD,CAMrD,kBACE,eACA,mBACA,cACA,WA1FU,CA2FV,gBA3FU,CAvmEZ,kBA4mEY,CAwFV,qBA5FW,CAxmEb,UAqsEsB,CACpB,sBACA,eACA,kBAvsEF,4BACE,kBAisEmC,CAlsErC,4BACE,WAmsE0B,CAK1B,mCACE,cA3sEJ,UA4sEwB,CACpB,mBACA,eACA,gBACA,uBA/sEJ,6CACE,WA0sE4B,CAK1B,yCACE,aAGJ,mDACE,yBACA,sBACA,wBACA,qBAEF,4CACE,kBArtEJ,OAstEmC,CAC/B,gBAnHoB,CAnmExB,sDACE,UAotEoC,CAntEpC,MAmtEiC,CAGjC,kCACE,kBACA,UA3HQ,CA4HR,WA5HQ,CA6HR,YACA,UACA,uBACA,YACA,gBACA,SACA,kBACA,0CACE,WA9HgB,CA+HhB,UA/HgB,CAgIhB,eAhIgB,CAiIhB,cAjIgB,CAkIhB,kBACA,QACA,SACA,qCAIN,mCACE,cACA,gBAlJU,CAvmEZ,kBA4mEY,CA+IV,SAlJiB,CAmJjB,YA5vEF,UA6vEsB,CA5vEtB,6CACE,kBAwvEmC,CAzvErC,6CACE,WA2vE0B,CAC1B,yCACE,WAEA,0TAME,SACA,WAjKM,CAkKN,gBAlKM,CAmKN,UACA,8VACE,aAIN,2GACE,uBACA,WA3KQ,CA8KR,wEACE,gBAEF,yDACE,kBAGJ,yCACE,SACA,WAvLQ,CAwLR,gBAxLQ,CAyLR,UACA,+CACE,aAGJ,2GACE,WA/LQ,CAiMV,mDACE,gBACA,yDACE,kBAGJ,qDA9yEF,kBA4mEY,CA3mEZ,+DACE,kBA6yEqC,CAErC,yCACE,uBACA,eAIF,iCACE,aAKN,8CACE,iCAEE,sBAEF,yCACE,aAKJ,WAEE,cACA,kBACA,cACA,iCAEA,wBACE,gBACA,kBAEF,wBACE,gBACA,kBAKF,aAlBF,WAmBI,6BAyDJ,YACE,eACA,iBAMF,yBACE,qBACA,gBACA,aAGA,qDAGE,kBACA,iCAEA,wEACE,aAMJ,sDACE,WAKJ,8BAIE,6CAEA,qBACA,aAGA,YAIF,kBAhFE,WAjBsB,CAkBtB,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAKA,8BA33EA,iBA81EyB,CA71EzB,wCACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,6BA/3EA,kBA81EyB,CA71EzB,uCACE,eA83E0E,CA73E1E,iBA21EuB,CAiGzB,4CACE,eAKJ,sCACE,uEAEA,kBACA,qBAEA,UA9G+B,CA+G/B,WA/G+B,CAgH/B,gBAhH+B,CAkH/B,0EACE,eAKJ,yBACE,WA3HsB,CA4HtB,cArHkC,CAsHlC,gBA/9EA,kBAg+EsB,CA/9EtB,mCACE,kBA89EwF,CAE1F,qDACE,eAGF,iCAt+EA,wBAu+E0B,CAt+E1B,2CACE,cAq+EwC,CAG1C,8BACE,sBAKJ,wBAjGE,mBACA,iBACA,yBAkGA,2BAhIA,WAhB0B,CAiB1B,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAwHE,mBAnHF,uCA33EA,iBA81EyB,CA71EzB,iDACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,sCA/3EA,kBA81EyB,CA71EzB,gDACE,eA83E0E,CA73E1E,iBA21EuB,CAqJ3B,aA3GE,mBACA,iBACA,yBA6GA,8BACE,wBACA,0BAMF,yBACE,iCAOF,mDACE,sBACA,uBAcJ,cAEE,mBACA,gBACA,sBAIA,8BACE,gBAKJ,sBACE,qBACA,sBACA,gBACA,sBACA,kBAIA,6BACE,MACA,OACA,SACA,QACA,kBACA,WACA,WAKJ,qBA1oFE,eAEA,sBACA,YACA,gBACA,aACA,uBAsoFA,gBACA,gBACA,gBAroFA,gCACE,aAyoFF,6CAEE,iBAEA,4EACE,YAGF,mEAllFF,UAqlFwB,CACpB,iBACA,WAtlFJ,6EACE,WAmlF4B,CAM9B,yCACE,WAIA,kHAhmFF,UAkmFa,CAlmFb,SAomFuB,CACnB,wBApmFJ,4HACE,UAimF+B,CAlmFjC,4HACE,SAgmFW,CAMX,4FAjmFF,gBAkmFa,CAjmFb,sGACE,gBAimFwD,CAhmFxD,iBA+lFW,CAMf,kCAxmFE,kBA2mF+C,CA3mF/C,kBA4mF6C,CA3mF7C,4CACE,eAymFuF,CAxmFvF,iBAwmF6C,CA1mF/C,4CACE,iBA0mFsF,CAzmFtF,iBAymF2C,CAI/C,+BAEE,kBAEA,wBACA,0BAEA,qBACA,WAEA,+CA1nFA,gBA8gFyB,CA7gFzB,yDACE,gBAynFwE,CAxnFxE,iBA2gFuB,CAgHzB,qDACE,wBAIJ,0CACE,WAIF,6BAKE,kBACA,MACA,WACA,WAp3FsB,CAq3FtB,iBACA,mBACA,uBAEA,mBACA,qBACA,0DAEA,0CACE,mBAKJ,0BACE,WA7IgC,CA8IhC,WA3TkB,CA4TlB,kBACA,gBAEA,uBACA,oBACA,YAIF,wBACE,UAIA,qDAEA,sCACE,UAGF,0CACE,aAOJ,+BAGE,kBACA,QACA,SACA,gCAEA,QACA,SACA,kCACA,mCACA,qBAIF,+BACE,kBA/sFA,OAgtF+B,CAC/B,cAxtFA,yBA2tFwB,CAntFxB,yCACE,UA8sFgC,CA7sFhC,MA6sF6B,CAttF/B,yCACE,0BAytFuC,CAK3C,wDACE,WAxMoC,CAyMpC,UAzMoC,CA0MpC,kBACA,WAzM6B,CA8M7B,uDACE,gCAGF,uDACE,aAKJ,oBACE,gBAEA,sFAEE,gCAGF,mJAGE,aAOJ,sDACE,aAMA,0CACE,4BACA,2DACA,uBAGF,uDACE,wBAMJ,sBACE,gBAGF,qBACE,aACA,uBACA,mBACA,kBACA,MACA,OACA,WACA,YACA,UAjgGe,CAkgGf,gBAGF,UAaE,UACA,gBACA,cACA,eACA,kBACA,cAEA,6GA9iGuB,CAgjGvB,aACA,sBArBA,2BACE,UACA,mDA3/Fa,CA4/Fb,mCAEF,4BACE,UACA,mDAhgGa,CAigGb,wCAeF,eACE,aACA,sBACA,cAGF,6BACE,YAnDa,CAsDf,4BACE,QACA,sBACA,cACA,iCAEA,+EACE,aAGF,kCACE,aAGF,0CACE,SAGF,oDACE,WAGF,uDACE,WACA,sBAIJ,4BACE,aACA,QACA,sBACA,mBACA,yBACA,gBA/2FF,iBArRyB,CAqRzB,iBAi3F6B,CAC3B,gBACA,gBAl3FF,sCACE,kBA82F4C,CA/2F9C,sCACE,gBAvRuB,CA0oGvB,uCACE,iBA3oGqB,CAqRzB,eArRyB,CAqRzB,cAw3F+B,CAC3B,cA9oGqB,CAsRzB,iDACE,aAq3F4C,CAt3F9C,iDACE,gBAvRuB,CAkpGvB,gDACE,qBACA,uBAKN,8CACE,UACE,uBAIJ,yBACE,+BACE,gBACA,eACA,iBAIJ,WACE,cACA,qBACA,uBACA,SAEA,qBAj5FA,gBAk5F+C,CAj5F/C,+BACE,gBAg5FkE,CA/4FlE,iBA+4F6C,CA5rF/C,yBAGI,wEA8rFJ,mBACA,uBACA,0BA7rFA,+CAII,6KAurFJ,mBACA,uBACA,0BAtrFA,gDAKI,qRA+qFJ,mBACA,uBACA,0BA9qFA,iDAMI,uZAsqFJ,mBACA,uBACA,0BArqFA,0BAOI,umBA4pFJ,mBACA,uBACA,0BAGF,kBACE,kBACA,aACA,mBAIA,UA/nGY,CAgPZ,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA84FF,sCAEE,oBAEA,+GAGE,oBAGF,iDAEE,oBAIJ,qCACE,UAppGU,CAwpGV,iDACE,mBAIJ,iCACE,aAGA,YAEA,qDACE,mDAxpGU,CA4pGd,0BACE,sBAEA,yCACE,QAGF,yCACE,sBACA,QAIJ,wBACE,sBAEA,uCACE,QAGF,uCACE,8BACA,QAIJ,0BACE,mBAEA,yCACE,QAGF,yCACE,2BACA,QAEA,6DACE,mDAlsGQ,CAusGd,2BACE,mBAEA,0CACE,QAGF,0CACE,mBACA,QAEA,8DACE,mDAntGQ,CA4tGZ,gHACE,kBAQF,+CACE,UAMF,qEACE,UACA,uBAKF,+CACE,mBACA,mDArvGU,CAwvGV,iCAON,eAME,cAjiGA,mCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,kCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,gCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,+BACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBAiiGF,uCACE,cACA,kBACA,gBAGA,YAGF,8BACE,kBACA,UAjyGU,CAmyGV,qCACE,4BAGF,yDACE,cACA,kBACA,WAEA,UACA,mDAjyGU,CAoyGZ,sCACE,kBACA,WAEA,UAGA,6BAKF,sCAhmGF,OAimGmC,CAhmGnC,gDACE,UA+lGoC,CA9lGpC,MA8lGiC,CAGjC,yCACE,2BAEA,gEAvmGJ,kBAwmGmD,CAvmGnD,0EACE,iBAsmGyD,CArmGzD,iBAqmGiD,CAG/C,gEA3mGJ,mBA4mGmD,CA3mGnD,0EACE,gBA0mG0D,CAzmG1D,oBAymGiD,CAI/C,+DAhnGJ,gBAinGmD,CAhnGnD,yEACE,iBA+mGsD,CA9mGtD,eA8mGiD,CAOjD,uCAxnGF,MAynGmC,CAxnGnC,iDACE,SAunGoC,CAtnGpC,OAsnGiC,CAGjC,0CACE,mBAIJ,0BACE,wCACA,oBACA,WAEA,4CAEE,eACA,eAGF,8CACE,UACA,mBACA,mDA/1GU,CAk2GV,yBAQF,gDACE,gBAEA,wDACE,UAIJ,8CACE,UACA,mBAKN,aACE,sBACA,cACA,kBAEA,6HAIE,sBAGF,0BACE,cACA,kBAEA,iCACE,aACA,mBACA,uBACA,YACA,kBACA,MACA,QACA,SACA,OACA,UACA,SAIF,4FAEE,aACA,mBACA,mBACA,YACA,WACA,2BACA,gBAGA,kBACA,OACA,QAEA,oMAEE,gBACA,kBAGF,kGACE,eAGF,kGACE,eAIJ,8CACE,MAGF,8CACE,SAMN,8CACE,aACE,sBAEF,oBACE,2BAKJ,QACE,YACA,sCACA,qBACA,sBACA,kBACA,WAphHU,CAqhHV,UArhHU,CAwhHV,eAxhHU,CAyhHV,cAzhHU,CA2hHV,YACE,oBACA,cAGF,sBACE,gBAjiHQ,CAkiHR,WAIJ,mBAEE,qBACA,kBACA,WAj8GwB,CAk8GxB,gBACA,sBA33GA,yBACE,WACA,cACA,WA03GF,4BACE,cAKF,qCAxyGA,WAyyGsB,CACpB,eA37GiB,CA87GjB,cA5yGF,+CACE,UAuyG2B,CAO7B,2BACE,kBACA,OA57Gc,CA0IhB,QAmzGqB,CAnzGrB,UAozGsB,CAnzGtB,qCACE,SAizGwB,CAlzG1B,qCACE,SAkzG0B,CAG5B,2iBAgBE,qBACA,wBAEF,+LAKE,gBAEF,4BACE,YACA,gBAEA,qCACE,gBACA,6BAIF,4CACE,YACA,cAIJ,mDACE,kBACA,YAn2GF,MAo2GqB,CAp2GrB,UAq2GsB,CAp2GtB,6DACE,SAk2GsB,CAn2GxB,6DACE,OAm2G0B,CAE1B,qEACE,aACA,eACA,mBAIJ,wGAEE,gBACA,uBACA,mBACA,WACA,QACA,oBACA,mCAt3GF,gBAnKwB,CAmKxB,eAw3G8B,CAC5B,UACA,2CACA,0DAIA,eA/3GF,yBAi4GiC,CAh4GjC,4HACE,cAq3GqD,CAt3GvD,4HACE,iBArKsB,CAoKxB,4HACE,0BA+3GyC,CAGzC,8IAp4GF,gBAs4G+B,CAt4G/B,eAu4GgC,CAt4GhC,kKACE,cAo4G6D,CAr4G/D,kKACE,iBAq4GiC,CAGnC,mCACE,kBACA,MACA,UACA,sCACA,kCAEF,oDACE,UACA,kCAGF,sDACE,gBACA,UAGF,6FACE,kBAEF,q8BAUE,kBAMF,6BACE,QACA,cACA,aAEA,gBACA,eAzkHgB,CA0kHhB,kBAzkHmB,CAoJrB,cAs7G6B,CAt7G7B,iBAnKwB,CA2lHtB,uBACA,gBA/kHgB,CAglHhB,YACA,4BAjlHgB,CAklHhB,gBACA,mBACA,6DAGA,WACA,sBAl8GF,UAu8GsB,CAt8GtB,uCACE,gBArKsB,CAoKxB,uCACE,eAq7GsD,CAt7GxD,uCACE,WAq8G0B,CAE1B,mCACE,aAEF,qCACE,aACA,gBAGF,wCACE,qBAIJ,oCAt9GA,gBAu9G2B,CAv9G3B,iBAnKwB,CAmKxB,cAy9G6B,CAx9G7B,8CACE,eAq9GgC,CAt9GlC,8CACE,eAs9GsD,CAv9GxD,8CACE,gBArKsB,CAkoHxB,gDACE,kBACA,QACA,gBAl+GF,UAm+GsB,CAl+GtB,0DACE,WAi+G0B,CAG5B,mFACE,cAznHoB,CA0nHpB,gBAxnHsB,CAynHtB,gBAEA,mDAprHY,CAurHZ,UACA,aACA,eArwHuB,CAuwHvB,+HAl/GF,iBAo/GgC,CAp/GhC,cAq/G+B,CAp/G/B,mJACE,eAk/GwC,CAn/G1C,mJACE,gBAm/GgC,CAM9B,oFACE,UACA,kBAQJ,gEACE,UACA,kBAIF,8EACE,UACA,kBAOF,8LACE,6CACA,qGAQF,4CACE,gBAKJ,6IAGE,iBACA,uBAIA,+EAIE,uCAGA,wBACA,2BAIJ,iCAEE,2DAEA,uCACE,oBACA,kBAGF,yCACE,OA5sHY,CA0IhB,QAmkHuB,CAnkHvB,UAokHwB,CAnkHxB,mDACE,SAikH0B,CAlkH5B,mDACE,SAkkH4B,CAQ1B,kRAEE,wBACA,UAMN,gCArlHA,iBA5IY,CA4IZ,eAulH8B,CAtlH9B,0CACE,cAolHyC,CArlH3C,0CACE,kBA9IU,CAouHV,sCAxlHF,SA5IY,CA4IZ,UA0lHwB,CAzlHxB,gDACE,SAulHmC,CAxlHrC,gDACE,UA9IU,CA0uHZ,iCA9lHA,cA+lH6B,CA/lH7B,kBA5IY,CA6IZ,2CACE,iBA9IU,CA6IZ,2CACE,eA8lH0C,CAE1C,sDACE,SAnmHJ,SAqmHwB,CArmHxB,SAsmHuB,CArmHvB,gEACE,UAmmH2B,CApmH7B,gEACE,QAomH2B,CAI7B,8CACE,iBAvvHU,CAwvHV,kBAxvHU,CA2vHR,oKAEE,8BAMR,mBAEE,kBAptHA,yBACE,WACA,cACA,WAotHJ,kBACE,kBACA,YACA,OACA,WAtwH2B,CAuwH3B,uBACA,WACA,iBAGF,8CACE,4CACE,WA2CJ,QACE,cACA,wBAEA,sBACE,cAn9HuB,CAo9HvB,gBACA,qBACA,iBA1CsB,CA+CpB,gIAEE,eAxBiB,CAtrHvB,gJACE,WACA,eAorHqB,CAnrHrB,kBACA,qBAgtHI,wKACE,UA5B2B,CA6B3B,WA7B2B,CAgC7B,kNAtsHN,iBAusHqD,CAC7C,cAnEY,CAoEZ,iBApEY,CApoHpB,sOACE,iBAqsHmH,CApsHnH,gBAosHmD,CAI/C,sTA3sHN,iBA4sHqD,CAC7C,eACA,kBA7sHR,8VACE,iBA0sHqH,CAzsHrH,gBAysHmD,CAI/C,sJACE,UACA,UA3C6B,CA4C7B,WA5C6B,CA+C7B,gOACE,cAlFU,CAmFV,iBAnFU,CAqFZ,wPACE,eAv5HS,CAg6HT,8YApuHV,gBAypHwB,CAxpHxB,sbACE,gBAmuHiF,CAluHjF,iBAspHsB,CA+Ed,klCAGE,gBAjEgB,CAkEhB,cAnEc,CAoEd,mBAGF,kXACE,cAzEqB,CAgF3B,6IACE,eArFwB,CAvrHhC,6JACE,WACA,eAqrH8B,CAprH9B,kBACA,qBA2wHM,gVACE,gBAMJ,6IAEE,eAhG0B,CAxrHlC,6JACE,WACA,eAsrHgC,CArrHhC,kBACA,qBAuxHM,wVAEE,gBAKR,6DACE,iBACA,oBAKN,aAEE,kBAEA,oDACE,wCAGF,6BACE,kBAEA,uDAEE,aACA,mBACA,2BAEA,iBACA,SAEA,gBAjzHJ,eAkzH6B,CACzB,mBAlzHJ,iEACE,gBAgzHiC,CAI/B,8EACE,kBACA,MACA,OACA,YAEA,SACA,UAGF,2EAEE,WA90HN,mFACE,WACA,kBA60HqC,CA50HrC,kBACA,qBAk1HF,mDAEE,kBACA,iBAGA,cAEA,uEACE,kBACA,eAp1HJ,eAq1H6B,CACzB,oBACA,WACA,mBACA,uBACA,oBACA,gBACA,SA31HJ,2FACE,gBAm1HiC,CAS/B,iHACE,gBAGJ,+DACE,aAGJ,gCACE,eAGF,wBACE,kBACA,SAr2HF,MAs2HiC,CAC/B,WAt2HF,kCACE,SAo2HkC,CAn2HlC,OAm2H+B,CAE/B,kCAx2HF,SA8pH+B,CA4M3B,wBACA,oBA12HJ,4CACE,SAu2HkE,CAt2HlE,UA2pH6B,CAiN/B,8CAIE,aACA,2BACA,mBAEA,eAxNe,CA2Nf,YA74HF,8DACE,WACA,eAgrHe,CA/qHf,kBACA,qBA44HA,khBAIE,UAtOyB,CAuOzB,gBACA,mBACA,uBAEF,kXAIE,kBACA,kcACE,aAIJ,gIAh5HF,iBAi5HiD,CAh5HjD,oJACE,iBA+4HyG,CA94HzG,gBA84H+C,CAG/C,kJACE,cAjrIqB,CAkrIrB,iBAlrIqB,CA4RzB,iBAu5HiD,CAC7C,kBACA,uBAx5HJ,0LACE,iBAq5H2G,CAp5H3G,gBAo5H+C,CAI/C,oEACE,UACA,UAnQ2B,CAoQ3B,WApQ2B,CAsQ7B,8EACE,YAIA,sFACE,UAzrII,CA0rIJ,WA1rII,CA8rIR,sEACE,WACA,eAzmIe,CAqLnB,eAq7H8B,CAr7H9B,iBAs7H+B,CAr7H/B,0FACE,gBAm7HiC,CAp7HnC,0FACE,gBAo7HmC,CAGnC,8FACE,aACA,mBAGA,kBAMA,cAKA,YAz8HJ,cA28H+B,CA38H/B,gBA48H8B,CA38H9B,kHACE,iBAy8HgC,CA18HlC,kHACE,aA08HkC,CAG9B,sSAx8HN,cA08HqD,CAz8HrD,8UACE,iBAw8HsD,CAv8HtD,aAu8HmD,CAIjD,sHACE,aACA,cACA,eA7oIa,CA+oIb,4IACE,UA/oIU,CA2LlB,cAq9HqD,CAp9HrD,gKACE,iBAm9HsD,CAl9HtD,aAk9HmD,CAIjD,kHACE,aACA,gBA39HN,iBA69HmD,CA59HnD,sIACE,iBA29HuD,CA19HvD,gBA09HiD,CAIjD,4IACE,cACA,SAMF,sHACE,uBACA,uBAEA,0KACE,cA1wImB,CA2wInB,iBA3wImB,CA8wIrB,kMACE,cACA,YACA,uBACA,gBAEA,0OAx/HN,gBAypHwB,CAxpHxB,kRACE,gBAu/H6E,CAt/H7E,iBAspHsB,CAmWlB,8MACE,cAjyIiB,CAkyIjB,gBACA,qBACA,cAzXO,CA0XP,iBAvXgB,CAwXhB,gBACA,mBACA,uBAEF,8MACE,cAzyIiB,CA0yIjB,qBACA,kBAjYO,CAkYP,eAjYY,CAkYZ,iBAjYgB,CAkYhB,gBACA,mBACA,uBAEF,0MACE,cAnzIiB,CAozIjB,gBACA,qBACA,cAzYM,CA0YN,iBAzYW,CAgZjB,2DACE,YAEA,eA/XsB,CAnrH1B,2EACE,WACA,eAirHwB,CAhrHxB,kBACA,qBAijIE,4KACE,gBAGF,mGACE,sBAGF,iGACE,cAMJ,2DACE,YAEA,eAnZwB,CAprH5B,2EACE,WACA,eAkrH0B,CAjrH1B,kBACA,qBAskIE,oLAEE,gBAaR,wBACE,eACA,OACA,MACA,WA/yIa,CAgzIb,UACA,iBAbmB,CAcnB,8BACA,cAEA,wCACE,eACA,kBACA,WACA,eACA,eACA,WAGF,0CACE,UAIF,2CACE,oBAIF,kCACE,UACA,mDAzzIa,CA0zIb,0BACA,oDACE,UACA,mDAzzIU,CA0zIV,0BACA,uBAIJ,iCACE,UACA,mDAj0IY,CAk0IZ,0BAIJ,gBACE,aACA,sBACA,cACA,gBAvDgB,CAwDhB,gBACA,yBACE,gBAzDoB,CA0DpB,sCACE,WA7DmB,CA8DnB,eA9DmB,CAmEzB,aACE,aACA,mBACA,eAvEiB,CAwEjB,WAxEiB,CAyEjB,qBACA,2BAEA,eACE,WACA,cACA,kBACA,mBAQF,yBACE,gBAGF,wBApqIA,eA2qI2B,CAEzB,qBACA,gBACA,cACA,eACA,oBACA,gBACA,YACA,kBACA,mBACA,WAhBA,0CACE,UACA,SAvqIJ,kCACE,gBAyqI+B,CAY/B,gCAvrIF,uBAwrIyB,CAvrIzB,0CACE,uBAsrIsD,CAEtD,0BACE,qBACA,YAEF,6BACE,gBACA,mBAEF,6CACE,sBAMJ,oBACE,YACA,YACA,UAIJ,yBACE,gBACE,gBAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAKN,yBACE,gBACE,eAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAQF,+CACE,iBACA,YACA,aACA,oBAMJ,4BACE,kBACA,WAn9IW,CAu9If,YACE,eACA,cACA,kBACA,UACA,qBACE,qBACA,UACA,kBAEF,mBACE,eACA,eACA,SACA,SACA,6BACA,YAGF,yCACE,WAIJ,0CACE,gBACA,eACA,iEACE,kBACA,yEACE,kBACA,UACA,WACA,QAnxIJ,SAoxImC,CAnxInC,mFACE,SAkxIqD,CAjxIrD,UAixIiC,CAEjC,iKA7xIF,qBA8xI0B,CA7xI1B,qLACE,qBA4xImE,CAGrE,qDACE,aACA,YACA,0DApyIF,UAqyIwB,CApyIxB,oEACE,WAmyI4B,CAE5B,sEAvyIF,WAwyIwB,CACpB,aAxyIJ,gFACE,UAsyI6B,CAI/B,0DACE,aAGF,gIAhzIA,eAizI2B,CAhzI3B,oJACE,gBA+yI+B,CAGjC,mDACE,UACA,8DACE,kBACA,SACA,WACA,oBACA,mBACA,kBArzIJ,iBAszImD,CArzInD,wEACE,cAozIqE,CAnzIrE,kBAmzIiD,CAC/C,oEACE,cACA,YACA,kBACA,QACA,WAn0IN,iDAo0I8B,CA7zI9B,UA8zIqC,CAp0IrC,8EACE,gDAk0IqE,CA5zIvE,8EACE,UA4zIyD,CA3zIzD,SA2zImC,CASvC,YACE,mBACA,qBACA,WALkB,CAMlB,kBAGF,kBACE,aACA,gBACA,SACA,UAGA,sBACA,aACA,mBAGF,2BACE,gBAIF,0BACE,iBACA,aACA,kBACA,gEAEA,gCACE,aAIJ,eAGE,sBACA,kBACA,SACA,OACA,WACA,WACA,0BACA,sBACA,0DAKA,0BACE,gBAKJ,qBACE,gBACA,mBAKF,gCACI,0BACA,+BAIJ,qBACI,kBACA,cAt5IF,qBAw5I0B,CAv5I1B,+BACE,sBAs5IqC,CAErC,oDACI,kBAGJ,+CACI,yDAGJ,yBACI,kBACA,iBACA,MACA,OAMR,mBACE,cACA,kBACA,WACA,UAN2B,CAQ3B,yBACA,2BAn7IA,qBAq7IwB,CAp7IxB,6BACE,sBAm7ImC,CAErC,gDACE,kBAGF,iCACE,cACA,kBACA,gBAEA,WACA,UAvByB,CAyBzB,sCAEA,yCACE,kBAEA,OACA,MACA,SAEA,WACA,UAnCuB,CAsCzB,mDACE,WACA,aACA,kBAEA,aACA,UA5CuB,CA6CvB,WAEA,6BACA,qCACA,8BAGF,oFAKE,gCAQE,wDACE,aAEF,wDACE,0BACA,iEAKJ,8DACE,aAKF,gEACE,8GAGF,gEACE,8GAKJ,wGAEE,eAEA,iHACE,oBAEF,iHACE,oBAON,gDACE,wCAEA,0BAEA,kEACE,cACA,oCAKN,iBACE,GACE,UACA,wCAEF,KACE,UACA,wCAGJ,kBACE,GACE,UACA,8BAEF,IACE,UAEF,KACE,UACA,kCAGJ,oDACE,GACE,sBACA,iCAEF,MACE,sBACA,iFAEF,OACE,uBACA,+EAEF,KACE,uBAGJ,8CACE,GACE,sBACA,iCAEF,IACE,sBACA,sEAEF,OACE,WACA,gFAEF,KACE,qBAGJ,oDACE,GACE,sBACA,0FAEF,OACE,uBACA,0FAEF,OACE,uBACA,0FAEF,KACE,uBAGJ,8CACE,GACE,qBACA,wEAEF,IACE,aACA,iFAEF,OACE,WACA,2EAEF,KACE,sBAoBJ,gBACE,sBACA,cACA,kBAba,CAcb,mBACA,eACA,kBAGA,0BAhBA,eAEA,wCACE,eAiBF,8BACE,kBACA,QACA,2BACA,sBACA,qBACA,UAjCU,CAkCV,WAlCU,CAmCV,eAjqJF,MAkqJqB,CAlqJrB,UAmqJsB,CAlqJtB,wCACE,SAgqJsB,CAjqJxB,wCACE,OAiqJ0B,CAE1B,mDACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAGF,qCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAIJ,mDACG,QAjEY,CAoEf,wBACE,sBACA,kBACA,MACA,OACA,UA5EU,CA6EV,WA7EU,CA8EV,mBACA,iBACA,kBACA,kCAGF,uBACE,sBACA,kBACA,MACA,OACA,UAzFU,CA0FV,WA1FU,CA2FV,kBACA,+BACA,mBAGF,kCACE,qBAGF,0BACE,sBACA,kBACA,qBAruJF,gBAuuJ4B,CAvuJ5B,cAwuJ6B,CAE3B,sBACA,mBACA,oBACA,WA5uJF,oCACE,aAquJ6D,CAtuJ/D,oCACE,iBAsuJ8B,CAUhC,qBACE,aAIA,wEACE,UACA,SACA,WACA,YAIF,oFACE,UACA,SACA,WACA,YAIJ,yCAlIA,eAEA,uDACE,eA36IF,yBAGI,kFA6iJJ,iBA1iJA,+CAII,4LAsiJJ,iBAniJA,gDAKI,ySA8hJJ,iBA3hJA,iDAMI,gbAqhJJ,iBAlhJA,0BAOI,qoBA2gJJ,iBAIA,+BACE,mBACA,+CACE,qBACA,YACA,yBACA,sBACA,aACA,gBAEA,yDACE,QAEF,6DACE,eAMR,8CACE,wCACE,uBA0BA,8EACE,0DAl0JJ,yBAm0JmC,CAl0JnC,wFACE,0BAi0J2C,CAKzC,4HACE,6CAMR,0BACE,eACA,OACA,MACA,UA/iKe,CAgjKf,UACA,aAGA,2BAGA,6CACE,oBAGF,+CACE,cACA,4BAIF,oCACE,cACA,UACA,mDACE,mDAtjKW,CAujKX,0BACA,qDACE,UACA,mDAtjKQ,CAujKR,0BACA,uBAMN,mCACE,UACA,mDAhkKY,CAikKZ,0BAIJ,0BACE,eAnEoB,CAuEpB,0EAEE,cA3Ec,CA6EhB,6BACE,QAUA,4PACE,aACA,eACA,mBAOF,+DACE,0BACA,mBAKN,UACE,aAII,4MACE,aACA,eACA,mBAKN,qCAIE,uCAGA,wBACA,2BAIA,mBACA,gBACA,0BAGF,gBACE,aAEF,0BACE,eAGA,gCACE,eAGA,iDACE,0BACA,wBACA,mBASF,oEACE,uBA9mKqB,CAmnKzB,wDAIE,uCAGJ,8CACE,gBACA,uBA7nKyB,CA8nKzB,mBACA,oEAv+JF,cAw+J+B,CAx+J/B,iBAnKwB,CAoKxB,8EACE,gBArKsB,CAoKxB,8EACE,eAu+JwD,CAK5D,iBACE,aACA,mBACA,eA9LyB,CA+LzB,kBA9L4B,CApzJ5B,cAm/J2B,CAn/J3B,iBAnKwB,CAwpKxB,uBAxM4B,CAyM5B,0BACA,+BACA,kBACA,uBACA,eACA,gBACA,mBACA,0BACA,YA7/JA,2BACE,gBArKsB,CAoKxB,2BACE,eAk/JoD,CAYtD,2CACE,eACA,cACA,uBACA,mBACA,gBAEA,oDACE,eAIJ,iCACE,cA7gKF,oBA8gK4B,CA9gK5B,gBA+gK2B,CACzB,WACA,2BACA,iBAjhKF,2CACE,sBA4gKoC,CA7gKtC,2CACE,eA6gKgC,CAMlC,uCACE,cACA,YACA,kBACA,QAzhKF,UA0hKsB,CA1hKtB,SA2hKqB,CACnB,WACA,eACA,sBA7hKF,iDACE,UAwhK0B,CAzhK5B,iDACE,SAyhKyB,CAM3B,uCACE,aACA,QACA,oBACA,mCACA,UAIJ,eACE,aACA,sBAYA,0GApzKsB,CAqzKtB,iBACA,eA3QqB,CA4QrB,kBA3jKA,yBA6jK+B,CAE/B,mBAlBA,0BACE,8BAIA,4CACE,eAx0KqB,CAy0KrB,kBAz0KqB,CAsRzB,yBACE,0BA2jKuC,CAIzC,0BACE,gBACA,eApRmB,CAqRnB,iBACA,gBAEF,iBACE,UAIJ,UACE,eACA,kBACA,aACA,mBACA,WACA,kCAiBA,sBACA,WArTqB,CAqSrB,oBACE,eAGF,gBACE,aAGF,mBAxtKA,0BAD2B,CAE3B,wBAF2B,CAG3B,uBAH2B,CAI3B,qBAJ2B,CAK3B,oBAL2B,CAM3B,gBAN2B,CA2tKzB,WACA,mBACA,gBACA,uBAMJ,YACE,cACA,kBACE,cACA,eACA,yBACA,aACA,gBAEF,sBACE,kBACA,mBAIJ,8CACE,oBACE,6BAEF,eACE,uBAKF,uDAhoKA,iBAioK6B,CAjoK7B,kBAgzJsB,CA/yJtB,iEACE,iBA8yJoB,CA/yJtB,iEACE,kBAgoKoD,CA9kKtD,qEACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,+EACE,SA4DsB,CA7DxB,+EACE,OA6D0B,CAE1B,4EACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,2EACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,0FACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,gEACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,0EACE,yBAEA,gFACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,iEACE,eAIA,uFACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA0+JF,qEAtoKF,2BAuoK8B,CAvoK9B,iBAwoK+B,CAvoK/B,+EACE,gBAqoK8D,CAtoKhE,+EACE,4BAsoKmC,CASvC,WACE,sBACA,kBACA,sBACA,UA52KgB,CA82KhB,WAVqB,CAWrB,eAXqB,CAYrB,SACA,cACA,iCAEA,cACE,gBASF,qBACE,aAIF,qDAEE,aACA,2BAIF,kGAEE,mDAl4Ka,CAs4Kf,+DAEE,gBACA,aACA,+BAIF,uKAIE,gBACA,aACA,+BAIF,2CACE,gBACA,aACA,+BAIF,wCACE,gBACA,aACA,gCAIF,wEACE,qGAEA,mBACA,uBAIF,+CACE,qGAKF,wCACE,qGAEA,mBACA,uBAKJ,oCACE,aAGF,4BACE,OACA,MACA,gCACA,gDACE,mCAIJ,kBACE,UACA,MACA,8BACA,4BACE,2BAIJ,yBACE,WACE,eA1HoB,EA8HxB,yBACE,WACE,wBACA,4BACA,6BAKJ,8CACE,4BACE,4BAEF,kBACE,4BA8BJ,4BACE,GACE,qBAEF,IACE,mBAEF,KACE,sBAIJ,oCACE,GACE,qBAEF,IACE,qBAEF,KACE,oBAIJ,mCACE,GACE,qBACA,UAEF,IACE,mBACA,UAEF,KACE,oBAaJ,UACE,WAzEa,CA0Eb,eAzEiB,CA0EjB,kBACA,gBACA,iBACA,UACA,cACA,mBAEA,8BACE,sBAGF,6BACE,aACA,WACA,YAGF,6BACE,kBAMF,8BACE,WACA,kBACA,SACA,UApGmB,CAsGrB,oBACE,kBACA,OACA,QACA,YAEF,yBACE,oDACA,iCAEF,0BACE,kBACA,OACA,QACA,YAEF,iCAIE,WACA,YAMF,8BACE,kBA75KF,MA85KiC,CAC/B,QACA,qCACA,oDACA,sCAj6KF,wCACE,SA45KkC,CA35KlC,OA25K+B,CAMjC,oBACE,UA7EF,kBAx1KA,UAy1K+B,CAC/B,SACA,UA/DoB,CAgEpB,WAhEoB,CAiEpB,mBA0FE,qBACA,oDAv7KF,8BACE,SAu1K4C,CAt1K5C,WAs1K6B,CAmF7B,0BACE,WACA,kBACA,UAnJgB,CAoJhB,WApJgB,CAqJhB,mBACA,iBACA,mBACA,mBAQJ,mBAGE,aACA,mBACA,uBAEA,kBACA,WACA,SAtJc,CAuJd,UAxJgB,CAyJhB,WA1JiB,CA2JjB,mBAEA,+CACA,kDAGA,yBACE,kBACA,WAh9KJ,QAi9KmC,CAC/B,kBAxKgB,CAyKhB,SACA,mCACA,oCACA,qBA5KgB,CA6KhB,uBAEA,UACA,kCACA,kDA19KJ,mCACE,SA+8KsF,CA98KtF,SA88KiC,CAajC,kCACE,UACA,eACA,iBAOJ,yBAhJA,kBAx1KA,UAy1K+B,CAC/B,QACA,UArD0B,CAsD1B,WAtD0B,CAuD1B,mBA6IE,qBACA,UAEA,mDA5+KF,mCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAsJ/B,6BAvJA,kBAx1KA,UAy1K+B,CAC/B,SACA,UAsJI,CArJJ,WAsJI,CArJJ,mBAuJE,qBACA,gBAlN2B,CAmN3B,mBACA,aAt/KF,uCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAkK7B,0BACE,UAIJ,gBACE,aAKA,+EAEE,gBAMF,mFAEE,aAKE,gFACE,qBAIA,0FACE,mBACA,UAEF,qFACE,8DAOF,oFACE,mBAWF,oFACE,mBACA,qEAEF,+EACE,sEAMJ,0IACE,mBAEF,4RAEE,UACA,wCAMJ,qDACE,mBAEF,8GAEE,UACA,wCAMJ,mCACE,aAEF,oCACE,UAEF,6CACE,UAEF,8BACE,qBAEF,uCACE,cAIJ,uBACE,sBACA,gBA/Ue,CAgVf,YAEA,0CACE,OACA,iBACA,oBACA,UAvVS,CAwVT,kBACA,aACA,uBAGF,2CACE,YACA,SA5ViB,CA6VjB,MACA,2BAGF,2CACE,SACA,mBACA,qBACA,SAEA,2DACE,SAGF,0DACE,WAIJ,sCACE,SAIA,6CAGE,WACA,SAHW,CAKX,+CAGA,mDACE,SATS,CAUT,UACA,kCACA,eACA,qCACA,sBArXY,CAsXZ,wBAEA,UACA,kCACA,+BAGF,4DACE,UACA,eACA,iBAOF,mMACE,MAMJ,qDACE,mBAEF,8GAEE,UACA,wCAKJ,uDA1sLF,SA2sLuB,CA3sLvB,OA4sLwB,CA3sLxB,iEACE,MAysL2B,CA1sL7B,iEACE,UA0sLyB,CAGvB,iDACE,YACA,MAMR,oBACE,aACA,mBACA,mBAQE,iGACE,cAPU,CAQV,eACA,WATU,CAUV,mDAn7LW,CAo7LX,oCAIJ,iDApuLA,iBAutLe,CAttLf,2DACE,iBAmuL4D,CAluL5D,gBAotLa,CAiBf,gDAxuLA,gBAutLe,CAttLf,0DACE,gBAuuL4D,CAtuL5D,iBAotLa,CAqBf,iCACE,sBAEA,2HAEE,eACA,cACA,kBAKF,0DACE,kBAzvLJ,iBA0vLmD,CAC/C,YACA,iBA3vLJ,oEACE,cAwvLuD,CAvvLvD,kBAuvLiD,CAOrD,8CACE,qCACE,8BAKJ,iBACE,UACA,MACA,OACA,QACA,6BAEA,2CAEA,sCACE,+BACA,oFACE,mDAYN,kCACE,GACE,+BAEF,KACE,wCAPsB,EAU1B,mCACE,GACE,wCAZsB,CAcxB,KACE,gCAMF,gDAKE,+BAJA,8DACE,SAKF,gEACE,UAGF,qEACE,gBAGF,0HACE,oDAMN,cACE,cACA,cAjDoB,CAkDpB,eAhDsB,CAiDtB,eApDsB,CAqDtB,cAjDiB,CAkDjB,kBAEA,kCACE,cACA,YAxDgB,CA2DlB,oCACE,cACA,UACA,kBAIJ,iCACI,mBAGJ,8BACI,mBAUF,0BACE,eAthM8B,CAuhM9B,mBAIJ,UACE,cACA,mBACA,eACA,aACA,iBACA,YACA,iBACA,mBACA,aAl4LA,mBAo4L0B,CAp4L1B,iBAg3Lc,CA/2Ld,oBACE,gBA82LY,CA/2Ld,oBACE,oBAm4LyC,CAE3C,uBAv4LA,mBAw4L4B,CAx4L5B,cAy4L6B,CAx4L7B,iCACE,aAs4LmC,CAv4LrC,iCACE,oBAu4L8B,CAGhC,oBACE,eAEA,kCACE,eAIJ,wBACE,YACA,UA1CW,CA2CX,WA1CY,CA2CZ,kBACA,iBAl5LF,gBAm5L+C,CAC7C,WAn5LF,kCACE,gBAi5LkD,CAh5LlD,eAg5L6C,CAI/C,oCA95LA,oBA+5L6B,CA/5L7B,eAg6L4B,CA/5L5B,8CACE,gBA65LoC,CA95LtC,8CACE,mBA85L+B,CAK/B,2FAEE,gBAKF,sCACE,UACA,SACA,WACA,YAIJ,oBACE,yBACA,eACA,WAGF,kBACE,SACA,WACA,QACA,WAhFgB,CAiFhB,kBACA,kBAGF,8BACE,QACA,OACA,WACA,kBACA,+BACA,UAEF,yCACE,kCAGF,oBACE,kBACA,SACA,OACA,MACA,aACA,WAtGgB,CAuGhB,UAvGgB,CAwGhB,kBACA,0GAptMoB,CAstMpB,2BACE,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,yCACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKF,0HAGE,0BA1rMS,CA2rMT,+CAEF,0EAEE,sBAMN,8CACE,mCACE,sBAEF,8CACE,yBAEF,qCACE,uBAQJ,+BACE,aACA,cACA,gBAGF,YACE,kBACA,MACA,OACA,QACA,SACA,WACA,UAGF,QACE,cACA,SACA,kBACA,gBACA,kBACA,cACA,wDACE,iBAEF,8BACE,mBA7BiB,CA+BjB,8CACE,kBACA,SACA,OACA,QACA,WApCe,CAqCf,UAEF,sDACE,MACA,WAzCe,CA6CjB,kDACE,aACA,kBACA,SACA,UACA,WACA,YACA,iBAGA,mDACE,kBAKJ,0CACE,qBACA,mBAGA,0EACE,SAMR,gBACE,cACA,kBAEA,0BACA,8DACE,YACA,UAlFmB,CAmFnB,kBACA,QACA,2BACA,gBACA,UACA,eACA,eACA,+CACA,iDAhzMgB,CAizMhB,0EACE,aAEF,sFACE,YACA,eAEF,gFACE,gBAEF,8EACE,kBACA,QACA,SACA,gCAIF,kFACE,2CAGJ,+BA3nMA,MA4nMiC,CAC/B,yDA5nMF,yCACE,SA0nMkC,CAznMlC,OAynM+B,CAGjC,+BA/nMA,OAgoMiC,CAC/B,yDAhoMF,yCACE,UA8nMkC,CA7nMlC,MA6nM+B,CAI/B,uCACE,+CAIF,sDACE,WACA,mBACA,kEACE,YAMR,eAEE,kBACA,gBACA,cACA,WA7ImB,CA7mMnB,qBACE,WACA,cACA,WAwvMF,iCACE,kBACA,MA3pMF,MA4pMiC,CA3pMjC,2CACE,SA0pMkC,CAzpMlC,OAypM+B,CAEjC,4BACE,cAEF,8BACE,aACA,sBACA,kBACA,sCACE,WACA,qBAKN,sBAEE,WAnKmB,CAoKnB,aACA,wDACA,kBAjrMA,MAkrM+B,CAC/B,0BArxMA,4BACE,WACA,cACA,WAgGF,gCACE,SAgrMgC,CA/qMhC,OA+qM6B,CAE/B,qCACE,kBACA,uBAEF,kCACE,eAEF,yBACE,kCACE,iBAKN,wBACE,cACA,kBACA,QA1LmB,CA2LnB,OACA,QACA,SACA,gBAGF,eACE,aACA,kBACA,MACA,OACA,QACA,SACA,wDACA,cAEA,0BACA,4BACE,YACA,gBAEF,wDACE,gBAEF,uCAruMA,2BAsuM0B,CACxB,iCACA,kBAvuMF,iDACE,0BAouM2C,CAG3C,yCACE,gCACA,oBAl7MuB,CAm7MvB,kBAGJ,wCA/uMA,0BAgvM0B,CACxB,iCACA,kBAjvMF,kDACE,2BA8uM0C,CAG1C,0CACE,gCACA,oBA57MuB,CA67MvB,kBAGJ,mBACE,cACA,YACA,4BACE,iCAKN,WAGE,kBACA,UACA,WACA,SACA,WACA,mBACE,+FAGF,oBACE,+FAKJ,OACE,kBACA,WACA,aAGF,QACE,eACA,kBACA,iBACA,aACA,gEACA,eACA,mBACA,kBACA,yBAnyMA,UAoyMoB,CACpB,gBACA,sBACA,gBACA,uBAvyMA,kBACE,WAkyMwB,CAK1B,iCACE,gBACA,aAEF,kBACE,eAEF,oBACE,oBACA,mBACA,iBACA,uBACA,WACA,eAEF,iBACE,gBAIJ,wDACE,yBACA,0BAUF,eACE,cAGF,SACE,kBACA,WA/iNc,CAijNd,sBACA,eACA,gBAGA,WA5lNa,CA+lNb,UACA,mDAviNe,CAyiNf,2BACE,aACA,mBACA,mBAEA,iBACA,eAEA,gBAKA,eAEA,uCACA,kBACA,eAEA,gBAGA,6CACA,mDAhkNa,CA6Mf,0BAq3MgC,CAj4MhC,mCACE,WACA,eAi3MiC,CAh3MjC,kBACA,qBASF,qCACE,wBAm3M0C,CAE1C,gCAEE,YACA,sBACA,YAIJ,oBACE,mBAEA,sCACE,mBAKF,2CACE,mDAllNU,CA2lNZ,+JACE,mDAhmNW,CAomNf,kBACE,UACA,oCACE,kCAGA,2CACE,mCAGJ,kCACE,UACA,oDACE,+BASJ,oDACE,UACA,kCAIA,+DACE,kCAIF,iEACE,iCAIF,2DACE,mCAKN,oBACE,iBACA,iBACA,eACA,eACA,yBACA,YAGF,oBACE,YA78MF,cA88M6B,CA98M7B,eAq0M4B,CAp0M5B,8BACE,gBAm0M0B,CAp0M5B,8BACE,aA68MwD,CAI5D,yBACE,SACE,OACA,QACA,WACA,eACA,YACA,gBACA,SACA,UAII,+DACE,kCAIF,iEACE,kCAOV,yBACE,SACE,gBACA,mBACE,SAEF,iBACE,OAEF,kBACE,QAEF,gBACE,MAIF,mBAv/MF,MAw/MmC,CAv/MnC,6BACE,SAs/MoC,CAr/MpC,OAq/MiC,CAGjC,iBA3/MF,OA4/MmC,CA3/MnC,2BACE,UA0/MoC,CAz/MpC,MAy/MiC,CAS7B,iEACE,kCAIF,kEACE,kCAOV,0BAEI,2BACE,iBAKN,8CACE,SACE,uBAMJ,oBACE,2BAiBF,WACE,sBACA,aACA,sBAEA,kBACA,UAEA,eACA,eAtBkB,CAuBlB,WAEA,mCACE,uBA/wNyB,CAgxNzB,yDA/wNgC,CAgxNhC,gDAGF,mEACE,iCAGF,6BACE,WAGF,oDAGE,sBAMF,sBACE,gBAGF,mBACE,YAnDqB,CAoDrB,gBApDqB,CAqDrB,gBArDqB,CAwDvB,0BACE,WA1D4B,CA2D5B,eA3D4B,CA4D5B,eA5D4B,CA8D5B,4CACE,YACA,gBACA,gBAIJ,sBA7mNA,gBA+iNyB,CA9iNzB,gCACE,gBA4mNwE,CA3mNxE,iBA4iNuB,CAmEvB,8BACE,UAGE,iEACE,aAOV,kBACE,cAp6NyB,CAq6NzB,sBACA,sBACA,gBACA,aACA,mBACA,mBAEA,WACA,WAjGkB,CAkGlB,eAlGkB,CAmGlB,eACA,SAEA,+DACE,kBACA,oBACA,eAGF,oBACE,cACA,qBAEF,+BACE,aACA,mBAEF,8BACE,eAEF,6BACE,aACA,gBAEA,iFACE,uBAj3NuB,CAk3NvB,yDAj3N8B,CAk3N9B,gDAKA,uGACE,gBAIN,yCA/qNA,gBAkjN0B,CAjjN1B,mDACE,gBA8qNyE,CA7qNzE,iBA+iNwB,CAgI1B,wCAlrNA,iBAkjN0B,CAjjN1B,kDACE,iBAirNyE,CAhrNzE,gBA+iNwB,CAoI1B,qCAtrNA,iBAkjN0B,CAjjN1B,+CACE,iBAqrNyE,CAprNzE,gBA+iNwB,CAsIxB,gDAxrNF,cAyrNiD,CAxrNjD,0DACE,iBAurNkD,CAtrNlD,aAsrN+C,CAIjD,8CA/DF,kBAgEI,8BAKJ,sEACE,WACE,eAzJgC,CA4JlC,kBACE,WA7JgC,CA8JhC,eA9JgC,EAmKpC,uEACE,WACE,eApKiC,CAuKnC,kBACE,WAxKiC,CAyKjC,eAzKiC,EAwLrC,YACE,qBACA,oBACA,kBACA,gBACA,UACA,gBACA,cAhBoB,CAiBpB,mBACA,uBACA,WAjBkB,CAkBlB,gBAlBkB,CAmBlB,kBAfsB,CAgBtB,iBAhBsB,CAiBtB,0BACE,+BACA,iBAEF,4BACE,6BACA,gBAzBoB,CA2BtB,6BACE,4BACA,eA7BoB,CA+BtB,2BACE,8BACA,kBAGF,yBA/BF,YAgCI,cA1CkB,CA2ClB,WAzCgB,CA0ChB,gBA1CgB,CA2ChB,iBAvCoB,CAwCpB,gBAxCoB,CAyCpB,2CACA,4CA5CoB,CA6CpB,4CA7CoB,CA8CpB,8CAGF,wBACE,mBAEF,oBACE,mDAx+Na,CAy+Nb,0BACA,mBACA,WAEF,oBACE,mDA1+NY,CA2+NZ,0BACA,mBACA,UAIJ,aACE,gBACA,mBAGA,uBAGA,qBACE,mBAIF,kBACE,QAKJ,6BACE,sBACA,cACA,SACA,gBACA,UACA,kBAEA,yDACE,SACA,sBACA,OACA,SACA,kBACA,UACA,kBACA,QACA,MACA,iCAGF,sDACE,sBACA,WACA,cACA,SACA,UACA,UAGF,0DACE,sBACA,OACA,SACA,UACA,kBACA,QACA,MAKF,8EACE,gBACA,kBAGF,+EAGE,WApD6B,CAlzN/B,UAu2NiC,CAC/B,mBAv2NF,yFACE,UAq2NqC,CAp2NrC,SAo2N+B,CAKnC,qCACE,0GAhnOsB,CAknOxB,mBACE,0GAlnOsB,CAonOxB,mBACE,0GApnOsB,CAsnOxB,qCACE,2GAtnOsB,CAwnOxB,mBACE,2GAxnOsB,CA0nOxB,mBACE,4GA1nOsB,CA4nOxB,qCACE,4GA5nOsB,CA8nOxB,mBACE,4GA9nOsB,CAgoOxB,mBACE,4GAhoOsB,CAkoOxB,sCACE,6GAloOuB,CAooOzB,oBACE,6GApoOuB,CAsoOzB,oBACE,6GAtoOuB,CAwoOzB,sCACE,6GAxoOuB,CA0oOzB,oBACE,6GA1oOuB,CA4oOzB,oBACE,6GA5oOuB,CA8oOzB,oBACE,8GA9oOuB,CAgpOzB,oBACE,8GAhpOuB,CAkpOzB,oBACE,8GAlpOuB,CAopOzB,oBACE,8GAppOuB,CAspOzB,oBACE,+GAtpOuB,CAwpOzB,oBACE,+GAxpOuB,CA0pOzB,oBACE,+GA1pOuB,CA4pOzB,oBACE,+GA5pOuB,CA8pOzB,oBACE,+GA9pOuB,CAiqOzB,8CACE,cACE,uBAIJ,aACE,8BACE,uBAOJ,0EACE,wBAaF,4BACE,aACE,SACA,WACA,gBACA,aA/4MA,YACC,QAeD,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SAmBF,gFA5mBF,aA8mByD,CA7mBzD,wHACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,gFA5mBF,cA6mB+D,CA5mB/D,wHACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,oFACE,2BAeF,oFA7oBF,0BA8oBiD,CA7oBjD,4HACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,0CAGE,2BACA,sBACA,oBAIF,6HAME,2BAIF,kIAME,uBAIF,mHAME,yBAIF,gKAME,6BAIF,qKAME,8BAUF,gJAME,uBACA,yBAIF,qJAME,mBACA,qBACA,eAIF,+JAME,eACA,sBAIF,sIAME,qBACA,uBAIF,0JAME,oBACA,sBA9NF,mCAEA,+CACA,kDACA,+CACA,+CACA,mDACA,iDAME,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAGe,YAGjB,uBACE,cACA,eACA,cACA,sBArBF,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAMF,uBACE,cACA,eACA,cACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,UACE,cACA,eACA,gBACA,sBAGF,sBACE,cACA,eACA,gBACA,sBAMF,yBACE,cACA,eACA,gBACA,sBA2BF,8EACA,8EAIA,4FACA,4FAIA,+FACA,+FAIA,0FACA,0FAGA,8BAIA,6FACA,6FAGA,kCA9GF,mCACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,qCACA,+BAkPA,8CAGE,YAGF,mMAaE,YAIF,+KASE,aAKF,4CAGE,WAGF,0LAaE,WAIF,gJAQE,YAGF,aACE,eAGF,eACI,iBAGJ,aACE,SACA,WACA,gBACA,YAwgMJ,yBAGI,iEACE,aAz5MF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAu1MF,yBA/5MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCA61MF,+CAEI,sGACE,aAGJ,mDACE,aA56MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA02MF,yBAl7MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAg3MF,gDAGI,+MACE,aAGJ,oEACE,aAh8MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA63MF,0BAr8MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAk4MF,iDAGI,0VACE,aAGJ,qFACE,aAl9MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAg5MF,0BAx9MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,qCAxEE,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,kCAs5ME,ugBACE,aAGJ,sGACE,cAMJ,aAEE,wCACE,yBN13OJ,MACE,2BACA,4BACA,8BACA,kCACA,6BACA,4BAIA,uCAEE,iBAUJ,eACE,kBAIF,oBACE,QACA,uBAGF,0BACE,uBACA,kBAGF,mBACE,eACA,iBACA,WACA,wBAEA,yBACE,cAIJ,yBACE,eACA,YAGF,uBACE,yBAGF,sCAEE,iBAGF,aACE,mBACA,gBACA,uBAIA,kBACE,gBACA,uBACA,mBAKF,2KAGE,yCACA,6CAKF,2BACE,qBAKF,iCACE,UACA,kCAGF,uCACE,mFAKA,mBAEA,6CACE,mFAQJ,kBACE,aACA,WACA,yBACA,cACA,yBACA,kBACA,eACA,kBAEA,8BACE,kBACA,iBAGF,wCACE,WACA,YACA,cAEA,qBAIF,uDACE,gBAEA,4DACE,gBAMJ,4CACE,eACA,YACA,SACA,wBACA,iBACA,aAKA,kDACA,mBACA,uBACA,gEACE,WAIJ,6CACE,eACA,YACA,SACA,wBACA,iBACA,aAKA,kDACA,mBACA,uBACA,kEACE,WAIJ,+DAEE,eACA,6BACA,sLAEE,cACA,6BACA,qBAKF,wFAEE,cACA,cAMR,gBACE,aACA,sBACA,qBACE,YACA,eACA,kBAIJ,cACE,YACA,aACA,gBACA,oBACA,8BAEA,4CAEE,eACA,kBACA,kGAEE,WAKN,MACE,WAGF,+CACE,sBACA,uBAGF,YACE,6BACA,sBACA,YACA,UACA,eACA,SACA,sBACA,sBACA,uBACA,0BACA,kBACA,iDACA,oDACA,4CACA,+EAEA,wEACA,qFAEA,qEAGF,yBACE,qBACA,UACA,8EAEA,iFAEA,yEAIF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,aACE,UAGF,YACE,kCACA,kDACA,sBACA,2BACA,uCAGF,yCAEE,cACA,6BACA,WACA,YACA,UACA,eACA,SACA,sBACA,iCACA,uBACA,0BACA,kBACA,4DACA,+DACA,uDACA,+EAEA,wEACA,qFAEA,qEAGF,wDACE,cAGF,sBACE,sBAGF,uCAEE,cAGF,0BACE,4BAGA,2BAGF,kFAKE,sBACA,uBACA,wBAGF,mCACE,sBACA,mBACA,wBACA,mBAGF,yDACE,kBACA,wBACA,sBAGF,oEACE,4BAGF,4EACE,6BACA,uBACA,2BAGF,8DACE,uBACA,2BAGF,wDACE,uBAGF,wFAIE,sBAGF,0FAIE,qBAGF,yDACE,mBACA,qBACA,YAGF,8EACE,sBACA,kBAGF,kBAEE,eACA,WACA,gBACA,YAOF,UAGE,6BAGF,yBACE,UACA,SACA,eACA,eAIF,QACE,cACA,WACA,YAKF,wBAEE,WAJoB,CAKpB,eALoB,CAQpB,eACA,UAGF,wBAEE,YACA,yBAGA,gBAEA,yBACA,wBACA,gBACA,sBAGF,uCACE,yBACA,cACA,gCAGF,qCACE,yBACA,wBACA,kBACA,gBAGF,wCACE,yBACA,wBACA,kBACA,gBAGF,0BACE,kBACA,YACA,UAGF,6CACE,qBACA,kBACA,gBACA,wBACA,sBACA,kBAGF,sDACE,qBAGF,2DACE,cAGF,+DACE,cAEF,oDACE,yDACA,WACA,kBACA,WACA,WACA,WACA,YACA,4BACA,4BACA,wBAGF,mDACE,eACA,iBACA,kBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,0CACE,qBACA,kBAGF,kDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,eACA,kBACA,gBACA,kBACA,WAGF,wCACE,qBAGF,yCACE,qBAGF,yCACE,qBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,iDACE,kBACA,yBACA,yBACA,QAGF,wDACE,WACA,WACA,yDACA,iCACA,yBAGF,gDACE,QACA,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,gDACE,iBACA,yBACA,yBACA,QAGF,uDACE,YACA,UACA,yDAGF,uBACE,WAIF,SACE,iBACA,yBAEA,gBACA,kBACA,cACA,aAGF,mBACE,cACA,gBACA,sBAGF,kBACE,WACA,YACA,kBAGF,6BACE,WACA,YACA,kBACA,OACA,MAGF,oCACE,WACA,cACA,cACA,UACA,WACA,sBACA,mBACA,oEACA,4DAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,qCACE,8BACA,sBAGF,qCACE,4BACA,oBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,YAGE,UAGF,IACE,WAIJ,8BACE,YAGE,UAGF,IACE,WAIJ,4CACE,uBAGF,4CACE,qBAGF,gCACE,uDAEE,eAIJ,gCACE,uDAEE,cAIJ,mBACE,yBAGF,mBACE","sources":["webpack://motion-chat/./src/styles/app.scss","webpack://motion-chat/./node_modules/mdi/scss/_path.scss","webpack://motion-chat/./node_modules/mdi/scss/_core.scss","webpack://motion-chat/./node_modules/mdi/scss/_icons.scss","webpack://motion-chat/./node_modules/mdi/scss/_extras.scss","webpack://motion-chat/./node_modules/mdi/scss/_animated.scss","webpack://motion-chat/./node_modules/angular-material/angular-material.scss"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"styles/app.css","mappings":";;;;;;;;;;;;;;;;;;;;AAEQ,WCFR,mCACE,4CACA,wSACA,mBAKA,kBACA,sBCTF,oBAEE,yDACA,kBACA,oBACA,oBACA,mCACA,kCACA,0BCPE,eACI,kCADJ,eACI,qBADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,2BADJ,eACI,2BADJ,eACI,yBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oCADJ,eACI,sCADJ,eACI,mCADJ,eACI,2CADJ,eACI,6BADJ,eACI,yBADJ,eACI,6BADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,6BADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,mBADJ,eACI,wBADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,0BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,2BADJ,eACI,4BADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,oBADJ,eACI,+BADJ,eACI,uBADJ,eACI,uBADJ,eACI,oBADJ,eACI,qBADJ,eACI,kCADJ,eACI,0BADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,mBADJ,eACI,0BADJ,eACI,uBADJ,eACI,iCADJ,eACI,oCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,4BADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,mCADJ,eACI,oCADJ,eACI,mCADJ,eACI,kCADJ,eACI,uBADJ,eACI,+BADJ,eACI,gCADJ,eACI,4BADJ,eACI,gCADJ,eACI,iCADJ,eACI,uCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,qCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,0BADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,+BADJ,eACI,gCADJ,eACI,6BADJ,eACI,mCADJ,eACI,wBADJ,eACI,6BADJ,eACI,iCADJ,eACI,yCADJ,eACI,oCADJ,eACI,4CADJ,eACI,6CADJ,eACI,4BADJ,eACI,oCADJ,eACI,4CADJ,eACI,8BADJ,eACI,yBADJ,eACI,8BADJ,eACI,kCADJ,eACI,0CADJ,eACI,qCADJ,eACI,6CADJ,eACI,8CADJ,eACI,6BADJ,eACI,qCADJ,eACI,6CADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,2BADJ,eACI,+BADJ,eACI,uCADJ,eACI,kCADJ,eACI,0CADJ,eACI,2CADJ,eACI,0BADJ,eACI,kCADJ,eACI,0CADJ,eACI,4BADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,gBADJ,eACI,uBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,+BADJ,eACI,sBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,uBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,kBADJ,eACI,qBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,oBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,iCADJ,eACI,kCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,iCADJ,eACI,sCADJ,eACI,uCADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,0CADJ,eACI,6CADJ,eACI,+CADJ,eACI,2BADJ,eACI,8BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,wBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,qBADJ,eACI,wBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,qBADJ,eACI,uBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,gCADJ,eACI,gCADJ,eACI,kBADJ,eACI,yBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,kBADJ,eACI,wBADJ,eACI,2BADJ,eACI,mCADJ,eACI,uBADJ,eACI,oCADJ,eACI,+BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,mCADJ,eACI,6BADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,iCADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,uBADJ,eACI,6BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,mBADJ,eACI,mBADJ,eACI,oBADJ,eACI,iBADJ,eACI,4BADJ,eACI,sBADJ,eACI,sBADJ,eACI,iBADJ,eACI,iCADJ,eACI,mCADJ,eACI,+BADJ,eACI,wBADJ,eACI,sBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,yBADJ,eACI,oCADJ,eACI,oCADJ,eACI,qCADJ,eACI,kCADJ,eACI,wBADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,uBADJ,eACI,sBADJ,eACI,iBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,wBADJ,eACI,2BADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,uBADJ,eACI,gCADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,4BADJ,eACI,sBADJ,eACI,oBADJ,eACI,iBADJ,eACI,kBADJ,eACI,2BADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,yBADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,yBADJ,eACI,iCADJ,eACI,yBADJ,eACI,6BADJ,eACI,wBADJ,eACI,gCADJ,eACI,gCADJ,eACI,uBADJ,eACI,sCADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mCADJ,eACI,2CADJ,eACI,oCADJ,eACI,mCADJ,eACI,6BADJ,eACI,oCADJ,eACI,4CADJ,eACI,qCADJ,eACI,qCADJ,eACI,4CADJ,eACI,oDADJ,eACI,6CADJ,eACI,sCADJ,eACI,6CADJ,eACI,qDADJ,eACI,8CADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,wBADJ,eACI,yBADJ,eACI,wBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,0BADJ,eACI,wBADJ,eACI,kBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,6BADJ,eACI,kCADJ,eACI,kCADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,uBADJ,eACI,wBADJ,eACI,sBADJ,eACI,uBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,+BADJ,eACI,2BADJ,eACI,yBADJ,eACI,iCADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,wCADJ,eACI,4BADJ,eACI,qCADJ,eACI,4BADJ,eACI,oCADJ,eACI,8BADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,qBADJ,eACI,0BADJ,eACI,qBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,2BADJ,eACI,mCADJ,eACI,8BADJ,eACI,sCADJ,eACI,6BADJ,eACI,kCADJ,eACI,gCADJ,eACI,wCADJ,eACI,8BADJ,eACI,sCADJ,eACI,4BADJ,eACI,oCADJ,eACI,0BADJ,eACI,mCADJ,eACI,2CADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,yBADJ,eACI,+BADJ,eACI,2BADJ,eACI,0BADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,sBADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,uBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,mBADJ,eACI,sBADJ,eACI,yBADJ,eACI,kCADJ,eACI,6BADJ,eACI,8BADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,4BADJ,eACI,2BADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,qBADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,oCADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,sBADJ,eACI,4BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,oBADJ,eACI,2BADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,6BADJ,eACI,yBADJ,eACI,2BADJ,eACI,qBADJ,eACI,6BADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,sBADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,6BADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,oBADJ,eACI,4BADJ,eACI,sBADJ,eACI,0BADJ,eACI,iBADJ,eACI,iBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,4BADJ,eACI,6BADJ,eACI,oCADJ,eACI,2BADJ,eACI,kCADJ,eACI,oBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,6BADJ,eACI,2BADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,sBADJ,eACI,+BADJ,eACI,4BADJ,eACI,sBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,kBADJ,eACI,sBADJ,eACI,2BADJ,eACI,2BADJ,eACI,4BADJ,eACI,8BADJ,eACI,4BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,6BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,uBADJ,eACI,oBADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,sBADJ,eACI,4BADJ,eACI,gCADJ,eACI,kBADJ,eACI,wBADJ,eACI,wBADJ,eACI,sBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,wBADJ,eACI,gCADJ,eACI,kBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,gCADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,kCADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,wBADJ,eACI,wBADJ,eACI,0BADJ,eACI,4BADJ,eACI,2BADJ,eACI,+BADJ,eACI,wBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,6BADJ,eACI,iCADJ,eACI,mCADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,uBADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,uBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,qBADJ,eACI,kBADJ,eACI,kBADJ,eACI,4BADJ,eACI,0BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,mBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,2BADJ,eACI,2BADJ,eACI,wBADJ,eACI,4BADJ,eACI,mBADJ,eACI,yBADJ,eACI,iCADJ,eACI,2BADJ,eACI,oBADJ,eACI,0BADJ,eACI,2BADJ,eACI,wBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,4BADJ,eACI,6BADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,gCADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,6BADJ,eACI,mCADJ,eACI,qCADJ,eACI,4BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,2BADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,kBADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,sBADJ,eACI,0BADJ,eACI,sBADJ,eACI,iCADJ,eACI,6BADJ,eACI,sBADJ,eACI,iCADJ,eACI,iCADJ,eACI,kCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,8BADJ,eACI,oCADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,iCADJ,eACI,+BADJ,eACI,+BADJ,eACI,gCADJ,eACI,yBADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,oCADJ,eACI,iCADJ,eACI,oCADJ,eACI,iCADJ,eACI,4CADJ,eACI,0CADJ,eACI,2CADJ,eACI,oCADJ,eACI,oCADJ,eACI,2BADJ,eACI,iCADJ,eACI,+BADJ,eACI,gCADJ,eACI,kCADJ,eACI,uCADJ,eACI,gCADJ,eACI,iCADJ,eACI,+BADJ,eACI,0BADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,+BADJ,eACI,8BADJ,eACI,4BADJ,eACI,yBADJ,eACI,kCADJ,eACI,0CADJ,eACI,8BADJ,eACI,gCADJ,eACI,yBADJ,eACI,yCADJ,eACI,yCADJ,eACI,0BADJ,eACI,8BADJ,eACI,0CADJ,eACI,0CADJ,eACI,uCADJ,eACI,gCADJ,eACI,gCADJ,eACI,+BADJ,eACI,oCADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,wBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,wBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,yBADJ,eACI,gCADJ,eACI,gCADJ,eACI,qBADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,yBADJ,eACI,oCADJ,eACI,6BADJ,eACI,mBADJ,eACI,kBADJ,eACI,iBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,uBADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,8BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,4BADJ,eACI,wCADJ,eACI,qCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mCADJ,eACI,0BADJ,eACI,0BADJ,eACI,0BADJ,eACI,yBADJ,eACI,yBADJ,eACI,yBADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,iCADJ,eACI,yBADJ,eACI,yBADJ,eACI,6BADJ,eACI,8BADJ,eACI,2BADJ,eACI,iBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,iCADJ,eACI,6BADJ,eACI,wBADJ,eACI,uBADJ,eACI,iCADJ,eACI,oBADJ,eACI,sBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,0BADJ,eACI,yBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,gCADJ,eACI,uBADJ,eACI,2BADJ,eACI,yBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,6BADJ,eACI,iCADJ,eACI,qBADJ,eACI,qBADJ,eACI,yBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,0BADJ,eACI,wBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,+BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,0BADJ,eACI,0BADJ,eACI,kBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,+BADJ,eACI,6BADJ,eACI,qBADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,kBADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,+BADJ,eACI,4BADJ,eACI,2BADJ,eACI,uBADJ,eACI,mBADJ,eACI,yBADJ,eACI,wBADJ,eACI,8BADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,sCADJ,eACI,uCADJ,eACI,4CADJ,eACI,gCADJ,eACI,iCADJ,eACI,8BADJ,eACI,+BADJ,eACI,qCADJ,eACI,kCADJ,eACI,4BADJ,eACI,uBADJ,eACI,wBADJ,eACI,oBADJ,eACI,mBADJ,eACI,8BADJ,eACI,4BADJ,eACI,4BADJ,eACI,uBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iCADJ,eACI,iCADJ,eACI,uBADJ,eACI,wBADJ,eACI,+BADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,kBADJ,eACI,oBADJ,eACI,sBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,oBADJ,eACI,iBADJ,eACI,wBADJ,eACI,uBADJ,eACI,sBADJ,eACI,wBADJ,eACI,yBADJ,eACI,sBADJ,eACI,gCADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,0BADJ,eACI,8BADJ,eACI,yBADJ,eACI,kBADJ,eACI,mBADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,iBADJ,eACI,yBADJ,eACI,4BADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,6BADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,iCADJ,eACI,0BADJ,eACI,0BADJ,eACI,6BADJ,eACI,kCADJ,eACI,wBADJ,eACI,4BADJ,eACI,iCADJ,eACI,oBADJ,eACI,+BADJ,eACI,wBADJ,eACI,wBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,uBADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,yBADJ,eACI,uBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iCADJ,eACI,qBADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,sBADJ,eACI,uBADJ,eACI,0BADJ,eACI,kCADJ,eACI,+BADJ,eACI,kBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,0BADJ,eACI,uBADJ,eACI,wBADJ,eACI,wBADJ,eACI,oBADJ,eACI,6BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,4BADJ,eACI,mBADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,oBADJ,eACI,uBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,kCADJ,eACI,qBADJ,eACI,qBADJ,eACI,iBADJ,eACI,wBADJ,eACI,+BADJ,eACI,8BADJ,eACI,iCADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,+BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,0BADJ,eACI,yBADJ,eACI,0BADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,oBADJ,eACI,oBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,qBADJ,eACI,2BADJ,eACI,8BADJ,eACI,kCADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,gCADJ,eACI,2BADJ,eACI,gCADJ,eACI,8BADJ,eACI,sCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,oBADJ,eACI,uBADJ,eACI,4BADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,4BADJ,eACI,gCADJ,eACI,6BADJ,eACI,iCADJ,eACI,gCADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,sBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qBADJ,eACI,8BADJ,eACI,kBADJ,eACI,uBADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,mBADJ,eACI,uBADJ,eACI,+BADJ,eACI,0BADJ,eACI,wBADJ,eACI,kCADJ,eACI,sCADJ,eACI,+BADJ,eACI,6BADJ,eACI,4BADJ,eACI,gCADJ,eACI,kCADJ,eACI,8BADJ,eACI,uBADJ,eACI,0BADJ,eACI,oBADJ,eACI,2BADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,6BADJ,eACI,qBADJ,eACI,qBADJ,eACI,qBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,yBADJ,eACI,mBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,2BADJ,eACI,mCADJ,eACI,0BADJ,eACI,uBADJ,eACI,+BADJ,eACI,uBADJ,eACI,sBADJ,eACI,oCADJ,eACI,iBADJ,eACI,kBADJ,eACI,kBADJ,eACI,qBADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,2BADJ,eACI,4CADJ,eACI,mCADJ,eACI,gCADJ,eACI,iDADJ,eACI,wCADJ,eACI,iBADJ,eACI,uBADJ,eACI,iBADJ,eACI,qBADJ,eACI,6BADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,oBADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,yBADJ,eACI,qBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,mBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iBADJ,eACI,qBADJ,eACI,0BADJ,eACI,wBADJ,eACI,6BADJ,eACI,oCADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,gCADJ,eACI,gCADJ,eACI,sCADJ,eACI,uCADJ,eACI,qBADJ,eACI,8BADJ,eACI,4BADJ,eACI,mBADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,iCADJ,eACI,+BADJ,eACI,iCADJ,eACI,gCADJ,eACI,uBADJ,eACI,qBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,qBADJ,eACI,oBADJ,eACI,mBADJ,eACI,iBADJ,eACI,oBADJ,eACI,wBADJ,eACI,gCADJ,eACI,2BADJ,eACI,mCADJ,eACI,yBADJ,eACI,wBADJ,eACI,sBADJ,eACI,8BADJ,eACI,qBADJ,eACI,4BADJ,eACI,gCADJ,eACI,uBADJ,eACI,sBADJ,eACI,mBADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,0BADJ,eACI,2BADJ,eACI,4BADJ,eACI,0BADJ,eACI,uBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,0BADJ,eACI,oCADJ,eACI,mCADJ,eACI,4BADJ,eACI,wBADJ,eACI,gBADJ,eACI,oBADJ,eACI,mBADJ,eACI,qBADJ,eACI,kBADJ,eACI,wBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,+BADJ,eACI,uBADJ,eACI,oBADJ,eACI,oBADJ,eACI,mBADJ,eACI,0BADJ,eACI,kBADJ,eACI,8BADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,wBADJ,eACI,oCADJ,eACI,4BADJ,eACI,4BADJ,eACI,2BADJ,eACI,2BADJ,eACI,6BADJ,eACI,yBADJ,eACI,kBADJ,eACI,kBADJ,eACI,sBADJ,eACI,8BADJ,eACI,yBADJ,eACI,0CADJ,eACI,iCADJ,eACI,0BADJ,eACI,sBADJ,eACI,0BADJ,eACI,oBADJ,eACI,sBADJ,eACI,wBADJ,eACI,sBADJ,eACI,kBADJ,eACI,sBADJ,eACI,qBADJ,eACI,kBADJ,eACI,qBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,wBADJ,eACI,4BADJ,eACI,4BADJ,eACI,0BADJ,eACI,6BADJ,eACI,6BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,+BADJ,eACI,qBADJ,eACI,wBADJ,eACI,2BADJ,eACI,8BADJ,eACI,2BADJ,eACI,0BADJ,eACI,kCADJ,eACI,uBADJ,eACI,8BADJ,eACI,qBADJ,eACI,mBADJ,eACI,oBADJ,eACI,oBADJ,eACI,oBADJ,eACI,yBADJ,eACI,yBADJ,eACI,wBADJ,eACI,0BADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,uBADJ,eACI,6BADJ,eACI,2BADJ,eACI,wBADJ,eACI,mBADJ,eACI,kBADJ,eACI,qBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,oBADJ,eACI,kBADJ,eACI,0BADJ,eACI,qBADJ,eACI,mBADJ,eACI,4BADJ,eACI,oBADJ,eACI,sBADJ,eACI,oBADJ,eACI,4BADJ,eACI,wBADJ,eACI,gCADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,yBADJ,eACI,oBADJ,eACI,mBADJ,eACI,uBADJ,eACI,0BADJ,eACI,iCADJ,eACI,wBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,4BADJ,eACI,qBADJ,eACI,6BADJ,eACI,oBADJ,eACI,kBADJ,eACI,kBADJ,eACI,kBADJ,eACI,0BADJ,eACI,mBADJ,eACI,oBADJ,eACI,0BADJ,eACI,oBADJ,eACI,uBADJ,eACI,yBADJ,eACI,iCADJ,eACI,0BADJ,eACI,kCADJ,eACI,4BADJ,eACI,6BADJ,eACI,oBADJ,eACI,oBADJ,eACI,iBADJ,eACI,qBADJ,eACI,mBADJ,eACI,iBADJ,eACI,sBADJ,eACI,kBADJ,eACI,wBADJ,eACI,kBADJ,eACI,uBADJ,eACI,+BADJ,eACI,qBADJ,eACI,uBADJ,eACI,mBADJ,eACI,2BADJ,eACI,4BADJ,eACI,qBADJ,eACI,oBADJ,eACI,6BADJ,eACI,kCADJ,eACI,yBADJ,eACI,oBADJ,eACI,gBADJ,eACI,kBADJ,eACI,wBADJ,eACI,uBADJ,eACI,8BADJ,eACI,mCADJ,eACI,gCADJ,eACI,iCADJ,eACI,kCADJ,eACI,gCADJ,eACI,iCADJ,eACI,sBADJ,eACI,8BADJ,eACI,2BADJ,eACI,8BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,uBADJ,eACI,2BADJ,eACI,kBADJ,eACI,yBADJ,eACI,yBADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,2BADJ,eACI,6BADJ,eACI,qBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,6BADJ,eACI,4BADJ,eACI,sBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,8BADJ,eACI,mBADJ,eACI,+BADJ,eACI,2BADJ,eACI,wBADJ,eACI,gCADJ,eACI,kCADJ,eACI,+BADJ,eACI,mBADJ,eACI,2BADJ,eACI,oBADJ,eACI,8BADJ,eACI,4BADJ,eACI,wBADJ,eACI,sBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,sBADJ,eACI,qBADJ,eACI,8BADJ,eACI,6BADJ,eACI,mBADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,uBADJ,eACI,oBADJ,eACI,uBADJ,eACI,uBADJ,eACI,uBADJ,eACI,+BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,yBADJ,eACI,8BADJ,eACI,wBADJ,eACI,4BADJ,eACI,wBADJ,eACI,6BADJ,eACI,8BADJ,eACI,gCADJ,eACI,iBADJ,eACI,uBADJ,eACI,qBADJ,eACI,qBADJ,eACI,2BADJ,eACI,0BADJ,eACI,uBADJ,eACI,8BADJ,eACI,sCADJ,eACI,2BADJ,eACI,kCADJ,eACI,0CADJ,eACI,mBADJ,eACI,mBADJ,eACI,4BADJ,eACI,mBADJ,eACI,mBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,sBADJ,eACI,uBADJ,eACI,qBADJ,eACI,oBADJ,eACI,0BADJ,eACI,kBADJ,eACI,mBADJ,eACI,kBADJ,eACI,+BADJ,eACI,4BADJ,eACI,6BADJ,eACI,0BADJ,eACI,0BADJ,eACI,wBADJ,eACI,2BADJ,eACI,2BADJ,eACI,+BADJ,eACI,qCADJ,eACI,iCADJ,eACI,sCADJ,eACI,iCADJ,eACI,4CADJ,eACI,yBADJ,eACI,0BADJ,eACI,yBADJ,eACI,uBADJ,eACI,qBADJ,eACI,yBADJ,eACI,8BADJ,eACI,yBADJ,eACI,wBADJ,eACI,qBADJ,eACI,uBADJ,eACI,4BADJ,eACI,mBADJ,eACI,oBADJ,eACI,wBADJ,eACI,6BADJ,eACI,4BADJ,eACI,yBADJ,eACI,iBADJ,eACI,4BADJ,eACI,2BADJ,eACI,qBADJ,eACI,oBADJ,eACI,iCADJ,eACI,kBADJ,eACI,yBADJ,eACI,uBADJ,eACI,sBADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,4BADJ,eACI,yBADJ,eACI,qBADJ,eACI,2BADJ,eACI,sBADJ,eACI,kBADJ,eACI,yBADJ,eACI,iCADJ,eACI,mBADJ,eACI,2BADJ,eACI,mBADJ,eACI,qCADJ,eACI,sCADJ,eACI,oBADJ,eACI,4BADJ,eACI,oBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,gCADJ,eACI,iBADJ,eACI,6BADJ,eACI,qCADJ,eACI,2BADJ,eACI,mCADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,yBADJ,eACI,kBADJ,eACI,wBADJ,eACI,sBADJ,eACI,iBADJ,eACI,sBADJ,eACI,4BADJ,eACI,mBADJ,eACI,0BADJ,eACI,qCADJ,eACI,sCADJ,eACI,iCADJ,eACI,gCADJ,eACI,wBADJ,eACI,yBADJ,eACI,+BADJ,eACI,uBADJ,eACI,8BADJ,eACI,kCADJ,eACI,mCADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,yBADJ,eACI,kBADJ,eACI,iBADJ,eACI,uBADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,sBADJ,eACI,wBADJ,eACI,8BADJ,eACI,oBADJ,eACI,kBADJ,eACI,mBADJ,eACI,wBADJ,eACI,sBADJ,eACI,wBADJ,eACI,4BADJ,eACI,gCADJ,eACI,oCADJ,eACI,8BADJ,eACI,4BADJ,eACI,iCADJ,eACI,oCADJ,eACI,gCADJ,eACI,oBADJ,eACI,kBADJ,eACI,qBADJ,eACI,uBADJ,eACI,yBADJ,eACI,4BADJ,eACI,gCADJ,eACI,qBADJ,eACI,8BADJ,eACI,qBADJ,eACI,qBADJ,eACI,8BADJ,eACI,yBADJ,eACI,+BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,wBADJ,eACI,gCADJ,eACI,sBADJ,eACI,8BADJ,eACI,4BADJ,eACI,oBADJ,eACI,4BADJ,eACI,iCADJ,eACI,4BADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,uBADJ,eACI,wBADJ,eACI,8BADJ,eACI,6BADJ,eACI,uBADJ,eACI,2BADJ,eACI,+BADJ,eACI,qBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,kCADJ,eACI,0BADJ,eACI,mBADJ,eACI,2BADJ,eACI,iBADJ,eACI,yBADJ,eACI,wBADJ,eACI,oBADJ,eACI,sBADJ,eACI,qBADJ,eACI,2BADJ,eACI,mBADJ,eACI,2BADJ,eACI,kBADJ,eACI,wBADJ,eACI,8BADJ,eACI,sBADJ,eACI,8BADJ,eACI,uBADJ,eACI,4BADJ,eACI,kBADJ,eACI,oBADJ,eACI,2BADJ,eACI,8BADJ,eACI,yBADJ,eACI,sBADJ,eACI,8BADJ,eACI,oBADJ,eACI,0BADJ,eACI,4BADJ,eACI,4BADJ,eACI,oCADJ,eACI,mBADJ,eACI,4BADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,sBADJ,eACI,oBADJ,eACI,2BADJ,eACI,kBADJ,eACI,2BADJ,eACI,oBADJ,eACI,qBADJ,eACI,yBADJ,eACI,4BADJ,eACI,6BADJ,eACI,kBADJ,eACI,oBADJ,eACI,mCADJ,eACI,qBADJ,eACI,sBADJ,eACI,8BADJ,eACI,kBADJ,eACI,0BADJ,eACI,oCADJ,eACI,kCADJ,eACI,oCADJ,eACI,kCADJ,eACI,qBADJ,eACI,mBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,4BADJ,eACI,iBADJ,eACI,2BADJ,eACI,yBADJ,eACI,oBADJ,eACI,kCADJ,eACI,kCADJ,eACI,2BADJ,eACI,mCADJ,eACI,4BADJ,eACI,0BADJ,eACI,+BADJ,eACI,kCADJ,eACI,kCADJ,eACI,4BADJ,eACI,iCADJ,eACI,yBADJ,eACI,0BADJ,eACI,4BADJ,eACI,6BADJ,eACI,2BADJ,eACI,8BADJ,eACI,8BADJ,eACI,2BADJ,eACI,6BADJ,eACI,0BADJ,eACI,mBADJ,eACI,sBADJ,eACI,qBADJ,eACI,mBADJ,eACI,sBADJ,eACI,0BADJ,eACI,iCADJ,eACI,mCADJ,eACI,8BADJ,eACI,gCADJ,eACI,uBADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,yBADJ,eACI,4BADJ,eACI,oCADJ,eACI,sBADJ,eACI,uBADJ,eACI,2BADJ,eACI,uBADJ,eACI,yBADJ,eACI,2BADJ,eACI,wBADJ,eACI,6BADJ,eACI,yBADJ,eACI,uBADJ,eACI,mBADJ,eACI,oBADJ,eACI,6BADJ,eACI,0BADJ,eACI,gBADJ,eACI,oBADJ,eACI,uBADJ,eACI,iBADJ,eACI,mBADJ,eACI,uBADJ,eACI,yBADJ,eACI,wBADJ,eACI,2BADJ,eACI,0BADJ,eACI,yBADJ,eACI,wBADJ,eACI,yBADJ,eACI,iBADJ,eACI,mBADJ,eACI,kBADJ,eACI,kBADJ,eACI,oBADJ,eACI,6BADJ,eACI,+BADJ,eACI,2BADJ,eACI,iBADJ,eACI,6BADJ,eACI,mBADJ,eACI,0BADJ,eACI,kCADJ,eACI,0BADJ,eACI,kCADJ,eACI,2BADJ,eACI,2BADJ,eACI,mBADJ,eACI,uBADJ,eACI,2BADJ,eACI,wBADJ,eACI,uBADJ,eACI,mBADJ,eACI,4BADJ,eACI,yBADJ,eACI,0BADJ,eACI,+BADJ,eACI,+BADJ,eACI,qCADJ,eACI,2BADJ,eACI,kCADJ,eACI,6BADJ,eACI,2BADJ,eACI,2BADJ,eACI,iCADJ,eACI,2BADJ,eACI,4BADJ,eACI,iCADJ,eACI,+BADJ,eACI,2BADJ,eACI,mCADJ,eACI,iBADJ,eACI,oBADJ,eACI,qBADJ,eACI,qBADJ,eACI,oBADJ,eACI,oBADJ,eACI,6BADJ,eACI,sBADJ,eACI,sCADJ,eACI,gCADJ,eACI,wCADJ,eACI,sCADJ,eACI,iCADJ,eACI,qBADJ,eACI,kBADJ,eACI,sBADJ,eACI,iBADJ,eACI,kBADJ,eACI,uBADJ,eACI,0BADJ,eACI,2BADJ,eACI,6BADJ,eACI,6BADJ,eACI,yBADJ,eACI,4BADJ,eACI,qBADJ,eACI,uBADJ,eACI,oBADJ,eACI,kBADJ,eACI,oBADJ,eACI,wBADJ,eACI,qBADJ,eACI,6BADJ,eACI,kBADJ,eACI,kBADJ,eACI,6BADJ,eACI,2CADJ,eACI,2CADJ,eACI,0CADJ,eACI,yCADJ,eACI,4CADJ,eACI,6CADJ,eACI,iCADJ,eACI,iBADJ,eACI,kBADJ,eACI,sBADJ,eACI,yBADJ,eACI,iBADJ,eACI,kBADJ,eACI,oBADJ,eACI,mBADJ,eACI,kBADJ,eACI,sBADJ,eACI,oCADJ,eACI,4BADJ,eACI,0BADJ,eACI,wBADJ,eACI,qBADJ,eACI,mBAIR,WACI,kBACA,wCCLI,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,wCAFJ,cAEI,kBAMR,qBACI,+BAEJ,qBACI,mBAIJ,UACI,gCAEJ,0BACI,uBAOA,+BACI,4BACA,wBACA,uBAHJ,+BACI,4BACA,wBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,wBAHJ,gCACI,6BACA,yBACA,oBAoBZ,4BACI,qBACA,aACA,mBACA,oBAEJ,4BACI,qBACA,aACA,mBACA,kBC9DJ,6CACI,sCACQ,6BAGZ,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ,sBAId,GACI,8BACE,uBACQ,MAEV,gCACE,yBACQ;;;;;ECxBd,CAmkBA,UACE,YACA,kBAGF,KACE,SACA,UAGF,sBACE,aAEF,OACE,aAGF,iCAEE,mBACA,yBACA,gBACA,YACA,UACA,SAGF,6BAIE,wBAIF,oEAIE,eACA,0BAEA,4GACE,eAIJ,SACE,mBACA,cAIA,mBACE,6BACA,uBACA,+BAEA,+FAEE,wBAGJ,uBACE,iBAIJ,oBACE,SACA,mBACA,WACA,YACA,gBACA,UACA,kBACA,oBACA,UAGF,WACE,kBACA,MACA,OACA,SACA,QACA,sBACA,oBAGF,sBA7bE,uCAgcF,sBA5bE,sCAgcF,8BACE,wDAOF,qBACE,oBACA,kBACA,gBACA,OACA,MACA,WACA,YACA,qDAGF,WAEE,kBACA,yCACA,yBACA,UACA,kBACA,4BACE,sRAOF,4BACE,yCAEF,mFACE,WAEF,4BACE,gEAKJ,4BACE,eACA,gBAGF,YACE,YAGF,WACE,WAGF,gBACE,kBACA,6BACA,MACA,QACA,SACA,OACA,UA5oBoB,CA8oBpB,oCACE,cACA,kBACA,yBACA,QACA,MACA,SACA,UAppBsB,CAqpBtB,wCAMJ,gBACE,gCAKF,eACE,yBAGF,yBACE,YACE,cAOF,wDACG,mBAIL,aACE,cACA,2BAEF,aACE,cACA,2BApQA,yBA6CE,4IAnQF,gBA5K0B,CA6K1B,gKACE,aAkQ2E,CAjQ3E,iBA/KwB,EAwY1B,+CAuCE,mRAnQF,gBA5K0B,CA6K1B,iTACE,aAkQ2E,CAjQ3E,iBA/KwB,EA+Y1B,gDAgCE,6ZAnQF,gBA5K0B,CA6K1B,qcACE,aAkQ2E,CAjQ3E,iBA/KwB,EAuZ1B,iDAwBE,ikBAnQF,gBA5K0B,CA6K1B,mnBACE,aAkQ2E,CAjQ3E,iBA/KwB,EAga1B,0BAeE,mzBAnQF,gBA5K0B,CA6K1B,+2BACE,aAkQ2E,CAjQ3E,iBA/KwB,EAipB5B,UACE,0CACA,8BAEA,gBAEA,8BACA,0BAEA,mCACA,kCAMF,cACE,eAhyByB,CAiyBzB,gBACA,uBACA,iBAnyByB,CAqyB3B,cACE,cAryByB,CAsyBzB,gBACA,wBACA,gBAxyByB,CA0yB3B,cACE,cA1yByB,CA2yBzB,gBACA,iBAEF,cACE,cA9yByB,CA+yBzB,gBACA,iBAEF,aACE,cAlzByB,CAmzBzB,gBACA,iBAEF,UA/kBE,cAtOyB,CAuOzB,gBACA,sBAglBF,YA9jBE,cAzPyB,CA0PzB,gBACA,qBACA,iBAikBF,WAllBE,cAzOyB,CA0OzB,gBACA,qBACA,iBAklBF,WA9kBE,cAhPyB,CAiPzB,gBACA,qBACA,iBA8kBF,YACE,cAj0ByB,CAk0BzB,qBAEF,WACE,qBAOF,kCAKE,8CAl2BY,CAq2Bd,6BAIE,eA2bF,wBACE,YACA,OACA,kBACA,MACA,WAGF,wBACE,eAGF,qBACE,aAGF,kBACE,aAIF,2BACE,UACA,gBAGF,UACE,UACA,kBAEA,0BAGE,UACA,gBAGF,kCACE,UACA,6CA7tCa,CAguCf,kCACE,UACA,6CA9tCa,CAiuCf,2EAEE,UAGF,6BACE,YACA,eACA,WAGF,2BACE,YACA,kDAGF,2BACE,kDAIJ,sBACE,gBACA,OACA,gBACA,eACA,eACA,MAQF,gBACE,kBACA,cACA,YACA,kBACA,iBACA,gBAEE,gCACE,eAGJ,mCACE,gBACA,uBACA,YAEA,sDACE,iBAEF,wDACE,YAIA,gEACE,cACA,kBACA,QACA,QA/BuB,CAgCvB,UAjCqB,CAkCrB,WAlCqB,CAqCvB,+DAtmCJ,kBAikC2B,CAhkC3B,yEACE,eAsmCgF,CArmChF,iBA8jCyB,CA2C3B,qCAEE,aACA,mBACA,sBAEA,kBACA,iBACA,YACA,qDACE,WAGF,mGAGE,WACA,sBACA,YAGF,wDACE,kBACA,YACA,OAEA,kEACE,YACA,UACA,SACA,WAEF,+EACE,kBACA,MACA,OACA,WACA,WACA,gBAEA,6FACE,gBACA,WAEF,wFACE,+BACA,wGACE,UAGJ,wFACE,+BACA,wGACE,UAMV,qCAvvCA,eAEA,sBACA,YACA,gBACA,aACA,uBAmvCE,WACA,eACA,iBACA,YAnvCF,gDACE,aAovCF,6CACE,kBACA,iBACA,kBACA,UAjHyB,CAkHzB,WAlHyB,CAmHzB,eACA,YACA,kBACA,UACA,eACA,uBACA,gBACA,mDACE,WACA,kBACA,SACA,WACA,YACA,UACA,kBACA,mBACA,UACA,mDAz5CW,CA25Cb,mDACE,aAEA,yDACE,mBACA,UAGJ,qDACE,kBACA,QACA,SACA,gDACA,0DACE,eAGJ,sDACE,mBACA,mCACA,sEACE,mBAGJ,sDACE,mCACA,sEACE,mBAKN,8CAGE,sBACE,sBAEF,kDACE,YAKN,qIAEE,kBACA,qCACA,WA79CgB,CAi+ChB,YAEA,2JACE,iBAIJ,4BACE,sBACA,cACA,SACA,gBACA,gBACA,UAGF,mFAEE,WA7M4B,CAgN9B,6BACE,SACA,gBACA,UAEA,yDACE,eACA,gBACA,eACA,gBAzN0B,CA0N1B,WA1N0B,CA2N1B,kCACA,SACA,mBACA,uBAEA,+DACE,aAGF,oFACE,eAMN,8CACE,6CAEE,uBAOJ,YACE,yBAEA,kBACA,MACA,SACA,OACA,QAEA,UA3hDiB,CA6hDjB,6BACE,0BACA,WAEF,+BACE,WACA,sBAEF,+BACE,WAEF,qCACE,WAEF,gCACE,WAIF,6BACE,kBAGF,sBAEE,YAEA,+BACE,UAEF,yDACE,YAEF,+BACE,YACA,yBAEF,yDACE,UAeN,gBACE,kBACA,OACA,QACA,SACA,2BACA,UA5lDqB,CA8lDrB,qBACA,uBAEA,kCACA,mDArlDe,CAslDf,8BAEA,8BACE,cAGF,yBACE,UACA,kCAGF,gCACE,UACA,cACA,6CAIF,gCACE,6CACA,mDAtmDY,CAymDd,8BACE,6BACA,8CA7sDU,CA8sDV,gBA1CyB,CA2CzB,UACA,mBAGF,+BACE,qBACA,YACA,WACA,UAGF,6BACE,aACA,aAEA,mCACE,eAKF,qCACE,UACA,mBACA,WArE0B,CA4E9B,wBACE,kBACA,mBACA,cAEA,gCACE,aACA,mBACA,eACA,mBACA,mBAGF,qCACE,sBACA,mBACA,mBAEA,YAEA,cA5uDqB,CA6uDrB,iBA7uDqB,CA+vDrB,yBA1BF,qCAaI,wBACA,wBAFQ,CAKN,yDACE,uBAEF,qDACE,sBASN,gDA9BF,qCAaI,aACA,aAFQ,EAsBV,iDAlCF,qCAaI,wBACA,wBAFQ,EA0BV,0BAtCF,qCAaI,wBACA,wBAFQ,EA+BV,6CACE,aAGF,2DACE,aACA,sBACA,mBACA,WACA,oBAGF,2DACE,6BACA,aACA,sBACA,mBACA,WAGF,mDACE,eAtJwB,CAuJxB,iBACA,eACA,SACA,mBACA,WACA,kBACA,oBACA,gBAOR,8CACE,gBACE,uBA+BJ,mCACE,SAGF,WACE,qBACA,kBACA,eA33CA,eAk2CmB,CA6BnB,cA1BiB,CAr2CjB,gBAk2CmB,CAgCnB,sBACA,mBACA,kBAEA,iBA3CqB,CA4CrB,sBAGA,iBACA,aACA,SAGA,aAzCe,CA0Cf,cA5Cc,CA8Cd,uBACA,mBACA,mBAGA,yBACA,gBAx5CA,cAveyB,CAi4DzB,mBACA,qBACA,oBACA,qBAGA,gBAEA,iHAj6CA,mHAEE,eAg2CuB,CAl2CzB,mHAEE,gBAg2CuB,CAl2CzB,mHAEE,cA61CqB,CAqEvB,iBACE,aAGF,kCACE,qBAMF,uCACE,gBAGF,uBACE,gBAGF,mBACE,UACA,gBAIA,qCA7tDF,uCAkuDA,0BACE,aACA,WAt0DiB,CAu0DjB,YACA,gBA/5DQ,CAg6DR,WAz6DuB,CA06DvB,UAz0DgB,CA00DhB,iBA9GuB,CAiHzB,kBAKE,UAn3DU,CAq3DV,gBA1GqB,CA4GrB,YACA,UAp1De,CAq1Df,WAp1DgB,CAq1DhB,sBAxvDF,uCA2vDE,iBAhIuB,CAiIvB,4BACA,gBAEA,mDAr3DY,CAs3DZ,0DAlpDF,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA+oDA,0BACE,gBAvHwB,CAwHxB,UA1HkB,CA2HlB,WA1HmB,CA6HrB,qDACE,gBAGF,4BACE,gBAOA,6FApxDJ,uCAuxDI,qFAnxDJ,sCAyxDA,gCACE,sBACA,4BACA,gBAIA,gCAQF,kEACE,cAKF,6FAEE,mDA96Da,CA+6Db,kCAEE,4RAEE,kCAON,yGAEE,mDA57Da,CA67Db,mCAEE,oTAEE,mCAMR,iBACE,aACA,OACA,WAEA,4BACE,OAEA,cAEA,gBAEA,QAEA,6BACA,gBAEA,kBACA,uBACA,mBAEA,wCACE,8BAEF,uCACE,uBACA,8BAKN,8CACE,uCAEE,uBAOJ,QACE,sBACA,aACA,sBACA,UA5jEyB,CA8jEzB,0GAriEsB,CAuiEtB,uBACE,YAZW,CAaX,aACA,mBAGE,kDA1yDJ,iBA2yDkD,CA1yDlD,4DACE,iBAyyDsD,CAxyDtD,gBAwyDgD,CAK9C,iDAhzDJ,gBAizDmD,CAhzDnD,2DACE,gBA+yDuD,CA9yDvD,iBA8yDiD,CAIjD,sCACE,WACA,YAEA,oGAEE,kBAGF,8CACE,YACA,kDAEE,eACA,cAIJ,0DACE,gBAEA,oEACE,eAKN,2CACE,aACA,OACA,sBAEA,uDACE,eAKN,uEAGE,sBACA,aACA,cACA,WACA,YAGF,sBACE,uBACA,aACA,cACA,mBAEA,sCACE,cAGF,yCACE,OACA,sBACA,aAEA,qDACE,cACA,eAIA,gEACE,iBAKN,0CACE,gBAEA,uDACE,YACA,WAEF,uDACE,aACA,YAEF,uDACE,aACA,YAKN,wBACE,cACA,YA3HW,CA8HT,sCACE,aAGF,qCACE,gBAIJ,qCACE,aACA,YAIJ,wBACE,UAnsEuB,CAusEnB,sEACE,aAEA,oFACE,aAGF,mFACE,gBAIJ,gEACE,eACA,kBAKN,6CACE,OACA,2BACA,aACA,mBAIA,4EACE,aAEA,0FAz8DN,aA08DqD,CAz8DrD,oGACE,gBAw8DsD,CAv8DtD,cAu8DmD,CAG/C,yFA78DN,cA88DqD,CA78DrD,mGACE,iBA48DsD,CA38DtD,aA28DmD,CAIjD,sEACE,gBACA,iBAEA,oFAt9DN,gBAu9DqD,CAt9DrD,8FACE,gBAq9D2E,CAp9D3E,iBAo9DmD,CAG/C,mFA19DN,iBA29DqD,CA19DrD,6FACE,iBAy9D2E,CAx9D3E,gBAw9DmD,CAIjD,4EACE,OACA,yBACA,aACA,mBAKN,uBACE,gBACA,YAjNW,CAqNf,8CACE,QACE,uBAKF,sBACE,WACA,YAwBF,4BACE,eANkB,CAOlB,mBAIJ,YACE,sBACA,qBACA,mBACA,eACA,aACA,iBACA,kBACA,cA/sEe,CAuXf,eAi0DoB,CAh0DpB,qHAEE,eA+zDwB,CA0BxB,4DACE,UACA,SACA,WACA,YAIA,6EACE,iCA7/DN,0BACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,oCACE,SA4DsB,CA7DxB,oCACE,OA6D0B,CAE1B,iCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,gCACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,+CACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,qBACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,gCACE,yBAEA,sCACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,sBACE,eAIA,4CACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA45DJ,0BAEE,SACA,UACA,WACA,UAlDwB,CAmDxB,gBAGF,sBACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eA9DuB,CA+DvB,mBAlkEF,gBAwgEqB,CAvgErB,gCACE,aAkkEoE,CAjkEpE,iBAqgEmB,CA8DnB,4BA7kEF,gBA+kE8B,CA/kE9B,cAglE+B,CA/kE/B,sCACE,aA6kEiF,CA9kEnF,sCACE,iBA8kEgC,CAKpC,2CACE,sBACA,kBACA,qBACA,sBACA,mBACA,iBACA,eAGA,UA/lEA,gBAkmE0B,CAlmE1B,cAmmE2B,CAlmE3B,qDACE,aAgmEiE,CAjmEnE,qDACE,iBAimE4B,CAmB5B,oCAtnEF,kBA+mEqB,CA9mErB,8CACE,kBAqnE+C,CAC7C,uDAxnEJ,UAynE0B,CAxnE1B,iEACE,WAunE8B,CAC1B,2DACE,WApBI,CAqBJ,mBAGJ,qDACE,qBACA,WA1BM,CAhmEZ,eA2nEmD,CA1nEnD,+DACE,gBAynE2D,CAxnE3D,gBAwnEiD,CAKrD,uBACE,YACA,2BACE,WA1BmC,CA2BnC,mBACA,cA3B6B,CA6B/B,wCAvoEA,eA0mE+B,CA+B7B,WA9BsB,CA1mExB,kDACE,gBAsoE8E,CAroE9E,gBAumE6B,CAiC/B,iFACE,qBACA,gBACA,uBAGJ,iCACE,YAEF,SACE,aAEF,UAGE,aACA,eACA,YACA,8CA/8EY,CAg9EZ,cA/De,CAtmEf,mBA6mEkB,CA0DlB,sBAlwEA,gBACE,WACA,cACA,WAyFF,oBACE,mBAoqEwC,CAG1C,+CACE,eAnEU,CAsEZ,4BACE,YAKA,+BA5qEF,kBAmmE0B,CAlmE1B,yCACE,eA2qE6E,CA1qE7E,iBAgmEwB,CA4EtB,gDA/qEJ,iBAgrEqD,CA/qErD,0DACE,eA8qE6D,CA7qE7D,gBA6qEmD,CAMrD,kBACE,eACA,mBACA,cACA,WA1FU,CA2FV,gBA3FU,CAvmEZ,kBA4mEY,CAwFV,qBA5FW,CAxmEb,UAqsEsB,CACpB,sBACA,eACA,kBAvsEF,4BACE,kBAisEmC,CAlsErC,4BACE,WAmsE0B,CAK1B,mCACE,cA3sEJ,UA4sEwB,CACpB,mBACA,eACA,gBACA,uBA/sEJ,6CACE,WA0sE4B,CAK1B,yCACE,aAGJ,mDACE,yBACA,sBACA,wBACA,qBAEF,4CACE,kBArtEJ,OAstEmC,CAC/B,gBAnHoB,CAnmExB,sDACE,UAotEoC,CAntEpC,MAmtEiC,CAGjC,kCACE,kBACA,UA3HQ,CA4HR,WA5HQ,CA6HR,YACA,UACA,uBACA,YACA,gBACA,SACA,kBACA,0CACE,WA9HgB,CA+HhB,UA/HgB,CAgIhB,eAhIgB,CAiIhB,cAjIgB,CAkIhB,kBACA,QACA,SACA,qCAIN,mCACE,cACA,gBAlJU,CAvmEZ,kBA4mEY,CA+IV,SAlJiB,CAmJjB,YA5vEF,UA6vEsB,CA5vEtB,6CACE,kBAwvEmC,CAzvErC,6CACE,WA2vE0B,CAC1B,yCACE,WAEA,0TAME,SACA,WAjKM,CAkKN,gBAlKM,CAmKN,UACA,8VACE,aAIN,2GACE,uBACA,WA3KQ,CA8KR,wEACE,gBAEF,yDACE,kBAGJ,yCACE,SACA,WAvLQ,CAwLR,gBAxLQ,CAyLR,UACA,+CACE,aAGJ,2GACE,WA/LQ,CAiMV,mDACE,gBACA,yDACE,kBAGJ,qDA9yEF,kBA4mEY,CA3mEZ,+DACE,kBA6yEqC,CAErC,yCACE,uBACA,eAIF,iCACE,aAKN,8CACE,iCAEE,sBAEF,yCACE,aAKJ,WAEE,cACA,kBACA,cACA,iCAEA,wBACE,gBACA,kBAEF,wBACE,gBACA,kBAKF,aAlBF,WAmBI,6BAyDJ,YACE,eACA,iBAMF,yBACE,qBACA,gBACA,aAGA,qDAGE,kBACA,iCAEA,wEACE,aAMJ,sDACE,WAKJ,8BAIE,6CAEA,qBACA,aAGA,YAIF,kBAhFE,WAjBsB,CAkBtB,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAKA,8BA33EA,iBA81EyB,CA71EzB,wCACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,6BA/3EA,kBA81EyB,CA71EzB,uCACE,eA83E0E,CA73E1E,iBA21EuB,CAiGzB,4CACE,eAKJ,sCACE,uEAEA,kBACA,qBAEA,UA9G+B,CA+G/B,WA/G+B,CAgH/B,gBAhH+B,CAkH/B,0EACE,eAKJ,yBACE,WA3HsB,CA4HtB,cArHkC,CAsHlC,gBA/9EA,kBAg+EsB,CA/9EtB,mCACE,kBA89EwF,CAE1F,qDACE,eAGF,iCAt+EA,wBAu+E0B,CAt+E1B,2CACE,cAq+EwC,CAG1C,8BACE,sBAKJ,wBAjGE,mBACA,iBACA,yBAkGA,2BAhIA,WAhB0B,CAiB1B,UAlBsB,CAmBtB,kBAIA,UACA,YAGA,uBAwHE,mBAnHF,uCA33EA,iBA81EyB,CA71EzB,iDACE,cA03E0E,CAz3E1E,kBA21EuB,CAiCzB,sCA/3EA,kBA81EyB,CA71EzB,gDACE,eA83E0E,CA73E1E,iBA21EuB,CAqJ3B,aA3GE,mBACA,iBACA,yBA6GA,8BACE,wBACA,0BAMF,yBACE,iCAOF,mDACE,sBACA,uBAcJ,cAEE,mBACA,gBACA,sBAIA,8BACE,gBAKJ,sBACE,qBACA,sBACA,gBACA,sBACA,kBAIA,6BACE,MACA,OACA,SACA,QACA,kBACA,WACA,WAKJ,qBA1oFE,eAEA,sBACA,YACA,gBACA,aACA,uBAsoFA,gBACA,gBACA,gBAroFA,gCACE,aAyoFF,6CAEE,iBAEA,4EACE,YAGF,mEAllFF,UAqlFwB,CACpB,iBACA,WAtlFJ,6EACE,WAmlF4B,CAM9B,yCACE,WAIA,kHAhmFF,UAkmFa,CAlmFb,SAomFuB,CACnB,wBApmFJ,4HACE,UAimF+B,CAlmFjC,4HACE,SAgmFW,CAMX,4FAjmFF,gBAkmFa,CAjmFb,sGACE,gBAimFwD,CAhmFxD,iBA+lFW,CAMf,kCAxmFE,kBA2mF+C,CA3mF/C,kBA4mF6C,CA3mF7C,4CACE,eAymFuF,CAxmFvF,iBAwmF6C,CA1mF/C,4CACE,iBA0mFsF,CAzmFtF,iBAymF2C,CAI/C,+BAEE,kBAEA,wBACA,0BAEA,qBACA,WAEA,+CA1nFA,gBA8gFyB,CA7gFzB,yDACE,gBAynFwE,CAxnFxE,iBA2gFuB,CAgHzB,qDACE,wBAIJ,0CACE,WAIF,6BAKE,kBACA,MACA,WACA,WAp3FsB,CAq3FtB,iBACA,mBACA,uBAEA,mBACA,qBACA,0DAEA,0CACE,mBAKJ,0BACE,WA7IgC,CA8IhC,WA3TkB,CA4TlB,kBACA,gBAEA,uBACA,oBACA,YAIF,wBACE,UAIA,qDAEA,sCACE,UAGF,0CACE,aAOJ,+BAGE,kBACA,QACA,SACA,gCAEA,QACA,SACA,kCACA,mCACA,qBAIF,+BACE,kBA/sFA,OAgtF+B,CAC/B,cAxtFA,yBA2tFwB,CAntFxB,yCACE,UA8sFgC,CA7sFhC,MA6sF6B,CAttF/B,yCACE,0BAytFuC,CAK3C,wDACE,WAxMoC,CAyMpC,UAzMoC,CA0MpC,kBACA,WAzM6B,CA8M7B,uDACE,gCAGF,uDACE,aAKJ,oBACE,gBAEA,sFAEE,gCAGF,mJAGE,aAOJ,sDACE,aAMA,0CACE,4BACA,2DACA,uBAGF,uDACE,wBAMJ,sBACE,gBAGF,qBACE,aACA,uBACA,mBACA,kBACA,MACA,OACA,WACA,YACA,UAjgGe,CAkgGf,gBAGF,UAaE,UACA,gBACA,cACA,eACA,kBACA,cAEA,6GA9iGuB,CAgjGvB,aACA,sBArBA,2BACE,UACA,mDA3/Fa,CA4/Fb,mCAEF,4BACE,UACA,mDAhgGa,CAigGb,wCAeF,eACE,aACA,sBACA,cAGF,6BACE,YAnDa,CAsDf,4BACE,QACA,sBACA,cACA,iCAEA,+EACE,aAGF,kCACE,aAGF,0CACE,SAGF,oDACE,WAGF,uDACE,WACA,sBAIJ,4BACE,aACA,QACA,sBACA,mBACA,yBACA,gBA/2FF,iBArRyB,CAqRzB,iBAi3F6B,CAC3B,gBACA,gBAl3FF,sCACE,kBA82F4C,CA/2F9C,sCACE,gBAvRuB,CA0oGvB,uCACE,iBA3oGqB,CAqRzB,eArRyB,CAqRzB,cAw3F+B,CAC3B,cA9oGqB,CAsRzB,iDACE,aAq3F4C,CAt3F9C,iDACE,gBAvRuB,CAkpGvB,gDACE,qBACA,uBAKN,8CACE,UACE,uBAIJ,yBACE,+BACE,gBACA,eACA,iBAIJ,WACE,cACA,qBACA,uBACA,SAEA,qBAj5FA,gBAk5F+C,CAj5F/C,+BACE,gBAg5FkE,CA/4FlE,iBA+4F6C,CA5rF/C,yBAGI,wEA8rFJ,mBACA,uBACA,0BA7rFA,+CAII,6KAurFJ,mBACA,uBACA,0BAtrFA,gDAKI,qRA+qFJ,mBACA,uBACA,0BA9qFA,iDAMI,uZAsqFJ,mBACA,uBACA,0BArqFA,0BAOI,umBA4pFJ,mBACA,uBACA,0BAGF,kBACE,kBACA,aACA,mBAIA,UA/nGY,CAgPZ,sCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,qCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,mCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,kCACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBA84FF,sCAEE,oBAEA,+GAGE,oBAGF,iDAEE,oBAIJ,qCACE,UAppGU,CAwpGV,iDACE,mBAIJ,iCACE,aAGA,YAEA,qDACE,mDAxpGU,CA4pGd,0BACE,sBAEA,yCACE,QAGF,yCACE,sBACA,QAIJ,wBACE,sBAEA,uCACE,QAGF,uCACE,8BACA,QAIJ,0BACE,mBAEA,yCACE,QAGF,yCACE,2BACA,QAEA,6DACE,mDAlsGQ,CAusGd,2BACE,mBAEA,0CACE,QAGF,0CACE,mBACA,QAEA,8DACE,mDAntGQ,CA4tGZ,gHACE,kBAQF,+CACE,UAMF,qEACE,UACA,uBAKF,+CACE,mBACA,mDArvGU,CAwvGV,iCAON,eAME,cAjiGA,mCACE,QASkC,CARlC,UAQwC,CAPxC,WAOqF,CANrF,SAMmI,CALnI,kBALF,kCACE,QAUiC,CATjC,UASuC,CARvC,WAQ6C,CAP7C,SAO2F,CAN3F,kBALF,gCACE,QAW+B,CAV/B,UAU6E,CAT7E,WAS0H,CAR1H,SAQgI,CAPhI,kBALF,+BACE,QAY8B,CAX9B,UAW4E,CAV5E,WAUkF,CATlF,SASwF,CARxF,kBAiiGF,uCACE,cACA,kBACA,gBAGA,YAGF,8BACE,kBACA,UAjyGU,CAmyGV,qCACE,4BAGF,yDACE,cACA,kBACA,WAEA,UACA,mDAjyGU,CAoyGZ,sCACE,kBACA,WAEA,UAGA,6BAKF,sCAhmGF,OAimGmC,CAhmGnC,gDACE,UA+lGoC,CA9lGpC,MA8lGiC,CAGjC,yCACE,2BAEA,gEAvmGJ,kBAwmGmD,CAvmGnD,0EACE,iBAsmGyD,CArmGzD,iBAqmGiD,CAG/C,gEA3mGJ,mBA4mGmD,CA3mGnD,0EACE,gBA0mG0D,CAzmG1D,oBAymGiD,CAI/C,+DAhnGJ,gBAinGmD,CAhnGnD,yEACE,iBA+mGsD,CA9mGtD,eA8mGiD,CAOjD,uCAxnGF,MAynGmC,CAxnGnC,iDACE,SAunGoC,CAtnGpC,OAsnGiC,CAGjC,0CACE,mBAIJ,0BACE,wCACA,oBACA,WAEA,4CAEE,eACA,eAGF,8CACE,UACA,mBACA,mDA/1GU,CAk2GV,yBAQF,gDACE,gBAEA,wDACE,UAIJ,8CACE,UACA,mBAKN,aACE,sBACA,cACA,kBAEA,6HAIE,sBAGF,0BACE,cACA,kBAEA,iCACE,aACA,mBACA,uBACA,YACA,kBACA,MACA,QACA,SACA,OACA,UACA,SAIF,4FAEE,aACA,mBACA,mBACA,YACA,WACA,2BACA,gBAGA,kBACA,OACA,QAEA,oMAEE,gBACA,kBAGF,kGACE,eAGF,kGACE,eAIJ,8CACE,MAGF,8CACE,SAMN,8CACE,aACE,sBAEF,oBACE,2BAKJ,QACE,YACA,sCACA,qBACA,sBACA,kBACA,WAphHU,CAqhHV,UArhHU,CAwhHV,eAxhHU,CAyhHV,cAzhHU,CA2hHV,YACE,oBACA,cAGF,sBACE,gBAjiHQ,CAkiHR,WAIJ,mBAEE,qBACA,kBACA,WAj8GwB,CAk8GxB,gBACA,sBA33GA,yBACE,WACA,cACA,WA03GF,4BACE,cAKF,qCAxyGA,WAyyGsB,CACpB,eA37GiB,CA87GjB,cA5yGF,+CACE,UAuyG2B,CAO7B,2BACE,kBACA,OA57Gc,CA0IhB,QAmzGqB,CAnzGrB,UAozGsB,CAnzGtB,qCACE,SAizGwB,CAlzG1B,qCACE,SAkzG0B,CAG5B,2iBAgBE,qBACA,wBAEF,+LAKE,gBAEF,4BACE,YACA,gBAEA,qCACE,gBACA,6BAIF,4CACE,YACA,cAIJ,mDACE,kBACA,YAn2GF,MAo2GqB,CAp2GrB,UAq2GsB,CAp2GtB,6DACE,SAk2GsB,CAn2GxB,6DACE,OAm2G0B,CAE1B,qEACE,aACA,eACA,mBAIJ,wGAEE,gBACA,uBACA,mBACA,WACA,QACA,oBACA,mCAt3GF,gBAnKwB,CAmKxB,eAw3G8B,CAC5B,UACA,2CACA,0DAIA,eA/3GF,yBAi4GiC,CAh4GjC,4HACE,cAq3GqD,CAt3GvD,4HACE,iBArKsB,CAoKxB,4HACE,0BA+3GyC,CAGzC,8IAp4GF,gBAs4G+B,CAt4G/B,eAu4GgC,CAt4GhC,kKACE,cAo4G6D,CAr4G/D,kKACE,iBAq4GiC,CAGnC,mCACE,kBACA,MACA,UACA,sCACA,kCAEF,oDACE,UACA,kCAGF,sDACE,gBACA,UAGF,6FACE,kBAEF,q8BAUE,kBAMF,6BACE,QACA,cACA,aAEA,gBACA,eAzkHgB,CA0kHhB,kBAzkHmB,CAoJrB,cAs7G6B,CAt7G7B,iBAnKwB,CA2lHtB,uBACA,gBA/kHgB,CAglHhB,YACA,4BAjlHgB,CAklHhB,gBACA,mBACA,6DAGA,WACA,sBAl8GF,UAu8GsB,CAt8GtB,uCACE,gBArKsB,CAoKxB,uCACE,eAq7GsD,CAt7GxD,uCACE,WAq8G0B,CAE1B,mCACE,aAEF,qCACE,aACA,gBAGF,wCACE,qBAIJ,oCAt9GA,gBAu9G2B,CAv9G3B,iBAnKwB,CAmKxB,cAy9G6B,CAx9G7B,8CACE,eAq9GgC,CAt9GlC,8CACE,eAs9GsD,CAv9GxD,8CACE,gBArKsB,CAkoHxB,gDACE,kBACA,QACA,gBAl+GF,UAm+GsB,CAl+GtB,0DACE,WAi+G0B,CAG5B,mFACE,cAznHoB,CA0nHpB,gBAxnHsB,CAynHtB,gBAEA,mDAprHY,CAurHZ,UACA,aACA,eArwHuB,CAuwHvB,+HAl/GF,iBAo/GgC,CAp/GhC,cAq/G+B,CAp/G/B,mJACE,eAk/GwC,CAn/G1C,mJACE,gBAm/GgC,CAM9B,oFACE,UACA,kBAQJ,gEACE,UACA,kBAIF,8EACE,UACA,kBAOF,8LACE,6CACA,qGAQF,4CACE,gBAKJ,6IAGE,iBACA,uBAIA,+EAIE,uCAGA,wBACA,2BAIJ,iCAEE,2DAEA,uCACE,oBACA,kBAGF,yCACE,OA5sHY,CA0IhB,QAmkHuB,CAnkHvB,UAokHwB,CAnkHxB,mDACE,SAikH0B,CAlkH5B,mDACE,SAkkH4B,CAQ1B,kRAEE,wBACA,UAMN,gCArlHA,iBA5IY,CA4IZ,eAulH8B,CAtlH9B,0CACE,cAolHyC,CArlH3C,0CACE,kBA9IU,CAouHV,sCAxlHF,SA5IY,CA4IZ,UA0lHwB,CAzlHxB,gDACE,SAulHmC,CAxlHrC,gDACE,UA9IU,CA0uHZ,iCA9lHA,cA+lH6B,CA/lH7B,kBA5IY,CA6IZ,2CACE,iBA9IU,CA6IZ,2CACE,eA8lH0C,CAE1C,sDACE,SAnmHJ,SAqmHwB,CArmHxB,SAsmHuB,CArmHvB,gEACE,UAmmH2B,CApmH7B,gEACE,QAomH2B,CAI7B,8CACE,iBAvvHU,CAwvHV,kBAxvHU,CA2vHR,oKAEE,8BAMR,mBAEE,kBAptHA,yBACE,WACA,cACA,WAotHJ,kBACE,kBACA,YACA,OACA,WAtwH2B,CAuwH3B,uBACA,WACA,iBAGF,8CACE,4CACE,WA2CJ,QACE,cACA,wBAEA,sBACE,cAn9HuB,CAo9HvB,gBACA,qBACA,iBA1CsB,CA+CpB,gIAEE,eAxBiB,CAtrHvB,gJACE,WACA,eAorHqB,CAnrHrB,kBACA,qBAgtHI,wKACE,UA5B2B,CA6B3B,WA7B2B,CAgC7B,kNAtsHN,iBAusHqD,CAC7C,cAnEY,CAoEZ,iBApEY,CApoHpB,sOACE,iBAqsHmH,CApsHnH,gBAosHmD,CAI/C,sTA3sHN,iBA4sHqD,CAC7C,eACA,kBA7sHR,8VACE,iBA0sHqH,CAzsHrH,gBAysHmD,CAI/C,sJACE,UACA,UA3C6B,CA4C7B,WA5C6B,CA+C7B,gOACE,cAlFU,CAmFV,iBAnFU,CAqFZ,wPACE,eAv5HS,CAg6HT,8YApuHV,gBAypHwB,CAxpHxB,sbACE,gBAmuHiF,CAluHjF,iBAspHsB,CA+Ed,klCAGE,gBAjEgB,CAkEhB,cAnEc,CAoEd,mBAGF,kXACE,cAzEqB,CAgF3B,6IACE,eArFwB,CAvrHhC,6JACE,WACA,eAqrH8B,CAprH9B,kBACA,qBA2wHM,gVACE,gBAMJ,6IAEE,eAhG0B,CAxrHlC,6JACE,WACA,eAsrHgC,CArrHhC,kBACA,qBAuxHM,wVAEE,gBAKR,6DACE,iBACA,oBAKN,aAEE,kBAEA,oDACE,wCAGF,6BACE,kBAEA,uDAEE,aACA,mBACA,2BAEA,iBACA,SAEA,gBAjzHJ,eAkzH6B,CACzB,mBAlzHJ,iEACE,gBAgzHiC,CAI/B,8EACE,kBACA,MACA,OACA,YAEA,SACA,UAGF,2EAEE,WA90HN,mFACE,WACA,kBA60HqC,CA50HrC,kBACA,qBAk1HF,mDAEE,kBACA,iBAGA,cAEA,uEACE,kBACA,eAp1HJ,eAq1H6B,CACzB,oBACA,WACA,mBACA,uBACA,oBACA,gBACA,SA31HJ,2FACE,gBAm1HiC,CAS/B,iHACE,gBAGJ,+DACE,aAGJ,gCACE,eAGF,wBACE,kBACA,SAr2HF,MAs2HiC,CAC/B,WAt2HF,kCACE,SAo2HkC,CAn2HlC,OAm2H+B,CAE/B,kCAx2HF,SA8pH+B,CA4M3B,wBACA,oBA12HJ,4CACE,SAu2HkE,CAt2HlE,UA2pH6B,CAiN/B,8CAIE,aACA,2BACA,mBAEA,eAxNe,CA2Nf,YA74HF,8DACE,WACA,eAgrHe,CA/qHf,kBACA,qBA44HA,khBAIE,UAtOyB,CAuOzB,gBACA,mBACA,uBAEF,kXAIE,kBACA,kcACE,aAIJ,gIAh5HF,iBAi5HiD,CAh5HjD,oJACE,iBA+4HyG,CA94HzG,gBA84H+C,CAG/C,kJACE,cAjrIqB,CAkrIrB,iBAlrIqB,CA4RzB,iBAu5HiD,CAC7C,kBACA,uBAx5HJ,0LACE,iBAq5H2G,CAp5H3G,gBAo5H+C,CAI/C,oEACE,UACA,UAnQ2B,CAoQ3B,WApQ2B,CAsQ7B,8EACE,YAIA,sFACE,UAzrII,CA0rIJ,WA1rII,CA8rIR,sEACE,WACA,eAzmIe,CAqLnB,eAq7H8B,CAr7H9B,iBAs7H+B,CAr7H/B,0FACE,gBAm7HiC,CAp7HnC,0FACE,gBAo7HmC,CAGnC,8FACE,aACA,mBAGA,kBAMA,cAKA,YAz8HJ,cA28H+B,CA38H/B,gBA48H8B,CA38H9B,kHACE,iBAy8HgC,CA18HlC,kHACE,aA08HkC,CAG9B,sSAx8HN,cA08HqD,CAz8HrD,8UACE,iBAw8HsD,CAv8HtD,aAu8HmD,CAIjD,sHACE,aACA,cACA,eA7oIa,CA+oIb,4IACE,UA/oIU,CA2LlB,cAq9HqD,CAp9HrD,gKACE,iBAm9HsD,CAl9HtD,aAk9HmD,CAIjD,kHACE,aACA,gBA39HN,iBA69HmD,CA59HnD,sIACE,iBA29HuD,CA19HvD,gBA09HiD,CAIjD,4IACE,cACA,SAMF,sHACE,uBACA,uBAEA,0KACE,cA1wImB,CA2wInB,iBA3wImB,CA8wIrB,kMACE,cACA,YACA,uBACA,gBAEA,0OAx/HN,gBAypHwB,CAxpHxB,kRACE,gBAu/H6E,CAt/H7E,iBAspHsB,CAmWlB,8MACE,cAjyIiB,CAkyIjB,gBACA,qBACA,cAzXO,CA0XP,iBAvXgB,CAwXhB,gBACA,mBACA,uBAEF,8MACE,cAzyIiB,CA0yIjB,qBACA,kBAjYO,CAkYP,eAjYY,CAkYZ,iBAjYgB,CAkYhB,gBACA,mBACA,uBAEF,0MACE,cAnzIiB,CAozIjB,gBACA,qBACA,cAzYM,CA0YN,iBAzYW,CAgZjB,2DACE,YAEA,eA/XsB,CAnrH1B,2EACE,WACA,eAirHwB,CAhrHxB,kBACA,qBAijIE,4KACE,gBAGF,mGACE,sBAGF,iGACE,cAMJ,2DACE,YAEA,eAnZwB,CAprH5B,2EACE,WACA,eAkrH0B,CAjrH1B,kBACA,qBAskIE,oLAEE,gBAaR,wBACE,eACA,OACA,MACA,WA/yIa,CAgzIb,UACA,iBAbmB,CAcnB,8BACA,cAEA,wCACE,eACA,kBACA,WACA,eACA,eACA,WAGF,0CACE,UAIF,2CACE,oBAIF,kCACE,UACA,mDAzzIa,CA0zIb,0BACA,oDACE,UACA,mDAzzIU,CA0zIV,0BACA,uBAIJ,iCACE,UACA,mDAj0IY,CAk0IZ,0BAIJ,gBACE,aACA,sBACA,cACA,gBAvDgB,CAwDhB,gBACA,yBACE,gBAzDoB,CA0DpB,sCACE,WA7DmB,CA8DnB,eA9DmB,CAmEzB,aACE,aACA,mBACA,eAvEiB,CAwEjB,WAxEiB,CAyEjB,qBACA,2BAEA,eACE,WACA,cACA,kBACA,mBAQF,yBACE,gBAGF,wBApqIA,eA2qI2B,CAEzB,qBACA,gBACA,cACA,eACA,oBACA,gBACA,YACA,kBACA,mBACA,WAhBA,0CACE,UACA,SAvqIJ,kCACE,gBAyqI+B,CAY/B,gCAvrIF,uBAwrIyB,CAvrIzB,0CACE,uBAsrIsD,CAEtD,0BACE,qBACA,YAEF,6BACE,gBACA,mBAEF,6CACE,sBAMJ,oBACE,YACA,YACA,UAIJ,yBACE,gBACE,gBAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAKN,yBACE,gBACE,eAGA,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,gBADF,2BACE,iBAQF,+CACE,iBACA,YACA,aACA,oBAMJ,4BACE,kBACA,WAn9IW,CAu9If,YACE,eACA,cACA,kBACA,UACA,qBACE,qBACA,UACA,kBAEF,mBACE,eACA,eACA,SACA,SACA,6BACA,YAGF,yCACE,WAIJ,0CACE,gBACA,eACA,iEACE,kBACA,yEACE,kBACA,UACA,WACA,QAnxIJ,SAoxImC,CAnxInC,mFACE,SAkxIqD,CAjxIrD,UAixIiC,CAEjC,iKA7xIF,qBA8xI0B,CA7xI1B,qLACE,qBA4xImE,CAGrE,qDACE,aACA,YACA,0DApyIF,UAqyIwB,CApyIxB,oEACE,WAmyI4B,CAE5B,sEAvyIF,WAwyIwB,CACpB,aAxyIJ,gFACE,UAsyI6B,CAI/B,0DACE,aAGF,gIAhzIA,eAizI2B,CAhzI3B,oJACE,gBA+yI+B,CAGjC,mDACE,UACA,8DACE,kBACA,SACA,WACA,oBACA,mBACA,kBArzIJ,iBAszImD,CArzInD,wEACE,cAozIqE,CAnzIrE,kBAmzIiD,CAC/C,oEACE,cACA,YACA,kBACA,QACA,WAn0IN,iDAo0I8B,CA7zI9B,UA8zIqC,CAp0IrC,8EACE,gDAk0IqE,CA5zIvE,8EACE,UA4zIyD,CA3zIzD,SA2zImC,CASvC,YACE,mBACA,qBACA,WALkB,CAMlB,kBAGF,kBACE,aACA,gBACA,SACA,UAGA,sBACA,aACA,mBAGF,2BACE,gBAIF,0BACE,iBACA,aACA,kBACA,gEAEA,gCACE,aAIJ,eAGE,sBACA,kBACA,SACA,OACA,WACA,WACA,0BACA,sBACA,0DAKA,0BACE,gBAKJ,qBACE,gBACA,mBAKF,gCACI,0BACA,+BAIJ,qBACI,kBACA,cAt5IF,qBAw5I0B,CAv5I1B,+BACE,sBAs5IqC,CAErC,oDACI,kBAGJ,+CACI,yDAGJ,yBACI,kBACA,iBACA,MACA,OAMR,mBACE,cACA,kBACA,WACA,UAN2B,CAQ3B,yBACA,2BAn7IA,qBAq7IwB,CAp7IxB,6BACE,sBAm7ImC,CAErC,gDACE,kBAGF,iCACE,cACA,kBACA,gBAEA,WACA,UAvByB,CAyBzB,sCAEA,yCACE,kBAEA,OACA,MACA,SAEA,WACA,UAnCuB,CAsCzB,mDACE,WACA,aACA,kBAEA,aACA,UA5CuB,CA6CvB,WAEA,6BACA,qCACA,8BAGF,oFAKE,gCAQE,wDACE,aAEF,wDACE,0BACA,iEAKJ,8DACE,aAKF,gEACE,8GAGF,gEACE,8GAKJ,wGAEE,eAEA,iHACE,oBAEF,iHACE,oBAON,gDACE,wCAEA,0BAEA,kEACE,cACA,oCAKN,iBACE,GACE,UACA,wCAEF,KACE,UACA,wCAGJ,kBACE,GACE,UACA,8BAEF,IACE,UAEF,KACE,UACA,kCAGJ,oDACE,GACE,sBACA,iCAEF,MACE,sBACA,iFAEF,OACE,uBACA,+EAEF,KACE,uBAGJ,8CACE,GACE,sBACA,iCAEF,IACE,sBACA,sEAEF,OACE,WACA,gFAEF,KACE,qBAGJ,oDACE,GACE,sBACA,0FAEF,OACE,uBACA,0FAEF,OACE,uBACA,0FAEF,KACE,uBAGJ,8CACE,GACE,qBACA,wEAEF,IACE,aACA,iFAEF,OACE,WACA,2EAEF,KACE,sBAoBJ,gBACE,sBACA,cACA,kBAba,CAcb,mBACA,eACA,kBAGA,0BAhBA,eAEA,wCACE,eAiBF,8BACE,kBACA,QACA,2BACA,sBACA,qBACA,UAjCU,CAkCV,WAlCU,CAmCV,eAjqJF,MAkqJqB,CAlqJrB,UAmqJsB,CAlqJtB,wCACE,SAgqJsB,CAjqJxB,wCACE,OAiqJ0B,CAE1B,mDACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAGF,qCACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAIJ,mDACG,QAjEY,CAoEf,wBACE,sBACA,kBACA,MACA,OACA,UA5EU,CA6EV,WA7EU,CA8EV,mBACA,iBACA,kBACA,kCAGF,uBACE,sBACA,kBACA,MACA,OACA,UAzFU,CA0FV,WA1FU,CA2FV,kBACA,+BACA,mBAGF,kCACE,qBAGF,0BACE,sBACA,kBACA,qBAruJF,gBAuuJ4B,CAvuJ5B,cAwuJ6B,CAE3B,sBACA,mBACA,oBACA,WA5uJF,oCACE,aAquJ6D,CAtuJ/D,oCACE,iBAsuJ8B,CAUhC,qBACE,aAIA,wEACE,UACA,SACA,WACA,YAIF,oFACE,UACA,SACA,WACA,YAIJ,yCAlIA,eAEA,uDACE,eA36IF,yBAGI,kFA6iJJ,iBA1iJA,+CAII,4LAsiJJ,iBAniJA,gDAKI,ySA8hJJ,iBA3hJA,iDAMI,gbAqhJJ,iBAlhJA,0BAOI,qoBA2gJJ,iBAIA,+BACE,mBACA,+CACE,qBACA,YACA,yBACA,sBACA,aACA,gBAEA,yDACE,QAEF,6DACE,eAMR,8CACE,wCACE,uBA0BA,8EACE,0DAl0JJ,yBAm0JmC,CAl0JnC,wFACE,0BAi0J2C,CAKzC,4HACE,6CAMR,0BACE,eACA,OACA,MACA,UA/iKe,CAgjKf,UACA,aAGA,2BAGA,6CACE,oBAGF,+CACE,cACA,4BAIF,oCACE,cACA,UACA,mDACE,mDAtjKW,CAujKX,0BACA,qDACE,UACA,mDAtjKQ,CAujKR,0BACA,uBAMN,mCACE,UACA,mDAhkKY,CAikKZ,0BAIJ,0BACE,eAnEoB,CAuEpB,0EAEE,cA3Ec,CA6EhB,6BACE,QAUA,4PACE,aACA,eACA,mBAOF,+DACE,0BACA,mBAKN,UACE,aAII,4MACE,aACA,eACA,mBAKN,qCAIE,uCAGA,wBACA,2BAIA,mBACA,gBACA,0BAGF,gBACE,aAEF,0BACE,eAGA,gCACE,eAGA,iDACE,0BACA,wBACA,mBASF,oEACE,uBA9mKqB,CAmnKzB,wDAIE,uCAGJ,8CACE,gBACA,uBA7nKyB,CA8nKzB,mBACA,oEAv+JF,cAw+J+B,CAx+J/B,iBAnKwB,CAoKxB,8EACE,gBArKsB,CAoKxB,8EACE,eAu+JwD,CAK5D,iBACE,aACA,mBACA,eA9LyB,CA+LzB,kBA9L4B,CApzJ5B,cAm/J2B,CAn/J3B,iBAnKwB,CAwpKxB,uBAxM4B,CAyM5B,0BACA,+BACA,kBACA,uBACA,eACA,gBACA,mBACA,0BACA,YA7/JA,2BACE,gBArKsB,CAoKxB,2BACE,eAk/JoD,CAYtD,2CACE,eACA,cACA,uBACA,mBACA,gBAEA,oDACE,eAIJ,iCACE,cA7gKF,oBA8gK4B,CA9gK5B,gBA+gK2B,CACzB,WACA,2BACA,iBAjhKF,2CACE,sBA4gKoC,CA7gKtC,2CACE,eA6gKgC,CAMlC,uCACE,cACA,YACA,kBACA,QAzhKF,UA0hKsB,CA1hKtB,SA2hKqB,CACnB,WACA,eACA,sBA7hKF,iDACE,UAwhK0B,CAzhK5B,iDACE,SAyhKyB,CAM3B,uCACE,aACA,QACA,oBACA,mCACA,UAIJ,eACE,aACA,sBAYA,0GApzKsB,CAqzKtB,iBACA,eA3QqB,CA4QrB,kBA3jKA,yBA6jK+B,CAE/B,mBAlBA,0BACE,8BAIA,4CACE,eAx0KqB,CAy0KrB,kBAz0KqB,CAsRzB,yBACE,0BA2jKuC,CAIzC,0BACE,gBACA,eApRmB,CAqRnB,iBACA,gBAEF,iBACE,UAIJ,UACE,eACA,kBACA,aACA,mBACA,WACA,kCAiBA,sBACA,WArTqB,CAqSrB,oBACE,eAGF,gBACE,aAGF,mBAxtKA,0BAD2B,CAE3B,wBAF2B,CAG3B,uBAH2B,CAI3B,qBAJ2B,CAK3B,oBAL2B,CAM3B,gBAN2B,CA2tKzB,WACA,mBACA,gBACA,uBAMJ,YACE,cACA,kBACE,cACA,eACA,yBACA,aACA,gBAEF,sBACE,kBACA,mBAIJ,8CACE,oBACE,6BAEF,eACE,uBAKF,uDAhoKA,iBAioK6B,CAjoK7B,kBAgzJsB,CA/yJtB,iEACE,iBA8yJoB,CA/yJtB,iEACE,kBAgoKoD,CA9kKtD,qEACE,kBACA,QACA,2BAEA,sBACA,qBAEA,UAvOa,CAwOb,WAxOa,CA2Kf,MA8DqB,CA9DrB,UA+DsB,CA9DtB,+EACE,SA4DsB,CA7DxB,+EACE,OA6D0B,CAE1B,4EACE,sBACA,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,2EACE,sBACA,WACA,kBACA,UACA,YACA,aACA,WAGF,0FACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKJ,gEACE,sBACA,iBACA,kBACA,MACA,OACA,UAzRa,CA0Rb,WA1Ra,CA2Rb,gBAxRoB,CAyRpB,mBACA,iBA3RqB,CA8RvB,0EACE,yBAEA,gFACE,sBACA,wBACA,kBACA,SACA,QACA,cACA,UACA,YACA,gBAzSkB,CA0SlB,mBACA,aACA,cACA,WAKJ,iEACE,eAIA,uFACE,sBACA,kBACA,QACA,SACA,gCACA,cACA,aACA,UA/TkB,CAgUlB,gBAhUkB,CAiUlB,mBACA,aACA,cACA,WA0+JF,qEAtoKF,2BAuoK8B,CAvoK9B,iBAwoK+B,CAvoK/B,+EACE,gBAqoK8D,CAtoKhE,+EACE,4BAsoKmC,CASvC,WACE,sBACA,kBACA,sBACA,UA52KgB,CA82KhB,WAVqB,CAWrB,eAXqB,CAYrB,SACA,cACA,iCAEA,cACE,gBASF,qBACE,aAIF,qDAEE,aACA,2BAIF,kGAEE,mDAl4Ka,CAs4Kf,+DAEE,gBACA,aACA,+BAIF,uKAIE,gBACA,aACA,+BAIF,2CACE,gBACA,aACA,+BAIF,wCACE,gBACA,aACA,gCAIF,wEACE,qGAEA,mBACA,uBAIF,+CACE,qGAKF,wCACE,qGAEA,mBACA,uBAKJ,oCACE,aAGF,4BACE,OACA,MACA,gCACA,gDACE,mCAIJ,kBACE,UACA,MACA,8BACA,4BACE,2BAIJ,yBACE,WACE,eA1HoB,EA8HxB,yBACE,WACE,wBACA,4BACA,6BAKJ,8CACE,4BACE,4BAEF,kBACE,4BA8BJ,4BACE,GACE,qBAEF,IACE,mBAEF,KACE,sBAIJ,oCACE,GACE,qBAEF,IACE,qBAEF,KACE,oBAIJ,mCACE,GACE,qBACA,UAEF,IACE,mBACA,UAEF,KACE,oBAaJ,UACE,WAzEa,CA0Eb,eAzEiB,CA0EjB,kBACA,gBACA,iBACA,UACA,cACA,mBAEA,8BACE,sBAGF,6BACE,aACA,WACA,YAGF,6BACE,kBAMF,8BACE,WACA,kBACA,SACA,UApGmB,CAsGrB,oBACE,kBACA,OACA,QACA,YAEF,yBACE,oDACA,iCAEF,0BACE,kBACA,OACA,QACA,YAEF,iCAIE,WACA,YAMF,8BACE,kBA75KF,MA85KiC,CAC/B,QACA,qCACA,oDACA,sCAj6KF,wCACE,SA45KkC,CA35KlC,OA25K+B,CAMjC,oBACE,UA7EF,kBAx1KA,UAy1K+B,CAC/B,SACA,UA/DoB,CAgEpB,WAhEoB,CAiEpB,mBA0FE,qBACA,oDAv7KF,8BACE,SAu1K4C,CAt1K5C,WAs1K6B,CAmF7B,0BACE,WACA,kBACA,UAnJgB,CAoJhB,WApJgB,CAqJhB,mBACA,iBACA,mBACA,mBAQJ,mBAGE,aACA,mBACA,uBAEA,kBACA,WACA,SAtJc,CAuJd,UAxJgB,CAyJhB,WA1JiB,CA2JjB,mBAEA,+CACA,kDAGA,yBACE,kBACA,WAh9KJ,QAi9KmC,CAC/B,kBAxKgB,CAyKhB,SACA,mCACA,oCACA,qBA5KgB,CA6KhB,uBAEA,UACA,kCACA,kDA19KJ,mCACE,SA+8KsF,CA98KtF,SA88KiC,CAajC,kCACE,UACA,eACA,iBAOJ,yBAhJA,kBAx1KA,UAy1K+B,CAC/B,QACA,UArD0B,CAsD1B,WAtD0B,CAuD1B,mBA6IE,qBACA,UAEA,mDA5+KF,mCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAsJ/B,6BAvJA,kBAx1KA,UAy1K+B,CAC/B,SACA,UAsJI,CArJJ,WAsJI,CArJJ,mBAuJE,qBACA,gBAlN2B,CAmN3B,mBACA,aAt/KF,uCACE,SAu1K4C,CAt1K5C,WAs1K6B,CAkK7B,0BACE,UAIJ,gBACE,aAKA,+EAEE,gBAMF,mFAEE,aAKE,gFACE,qBAIA,0FACE,mBACA,UAEF,qFACE,8DAOF,oFACE,mBAWF,oFACE,mBACA,qEAEF,+EACE,sEAMJ,0IACE,mBAEF,4RAEE,UACA,wCAMJ,qDACE,mBAEF,8GAEE,UACA,wCAMJ,mCACE,aAEF,oCACE,UAEF,6CACE,UAEF,8BACE,qBAEF,uCACE,cAIJ,uBACE,sBACA,gBA/Ue,CAgVf,YAEA,0CACE,OACA,iBACA,oBACA,UAvVS,CAwVT,kBACA,aACA,uBAGF,2CACE,YACA,SA5ViB,CA6VjB,MACA,2BAGF,2CACE,SACA,mBACA,qBACA,SAEA,2DACE,SAGF,0DACE,WAIJ,sCACE,SAIA,6CAGE,WACA,SAHW,CAKX,+CAGA,mDACE,SATS,CAUT,UACA,kCACA,eACA,qCACA,sBArXY,CAsXZ,wBAEA,UACA,kCACA,+BAGF,4DACE,UACA,eACA,iBAOF,mMACE,MAMJ,qDACE,mBAEF,8GAEE,UACA,wCAKJ,uDA1sLF,SA2sLuB,CA3sLvB,OA4sLwB,CA3sLxB,iEACE,MAysL2B,CA1sL7B,iEACE,UA0sLyB,CAGvB,iDACE,YACA,MAMR,oBACE,aACA,mBACA,mBAQE,iGACE,cAPU,CAQV,eACA,WATU,CAUV,mDAn7LW,CAo7LX,oCAIJ,iDApuLA,iBAutLe,CAttLf,2DACE,iBAmuL4D,CAluL5D,gBAotLa,CAiBf,gDAxuLA,gBAutLe,CAttLf,0DACE,gBAuuL4D,CAtuL5D,iBAotLa,CAqBf,iCACE,sBAEA,2HAEE,eACA,cACA,kBAKF,0DACE,kBAzvLJ,iBA0vLmD,CAC/C,YACA,iBA3vLJ,oEACE,cAwvLuD,CAvvLvD,kBAuvLiD,CAOrD,8CACE,qCACE,8BAKJ,iBACE,UACA,MACA,OACA,QACA,6BAEA,2CAEA,sCACE,+BACA,oFACE,mDAYN,kCACE,GACE,+BAEF,KACE,wCAPsB,EAU1B,mCACE,GACE,wCAZsB,CAcxB,KACE,gCAMF,gDAKE,+BAJA,8DACE,SAKF,gEACE,UAGF,qEACE,gBAGF,0HACE,oDAMN,cACE,cACA,cAjDoB,CAkDpB,eAhDsB,CAiDtB,eApDsB,CAqDtB,cAjDiB,CAkDjB,kBAEA,kCACE,cACA,YAxDgB,CA2DlB,oCACE,cACA,UACA,kBAIJ,iCACI,mBAGJ,8BACI,mBAUF,0BACE,eAthM8B,CAuhM9B,mBAIJ,UACE,cACA,mBACA,eACA,aACA,iBACA,YACA,iBACA,mBACA,aAl4LA,mBAo4L0B,CAp4L1B,iBAg3Lc,CA/2Ld,oBACE,gBA82LY,CA/2Ld,oBACE,oBAm4LyC,CAE3C,uBAv4LA,mBAw4L4B,CAx4L5B,cAy4L6B,CAx4L7B,iCACE,aAs4LmC,CAv4LrC,iCACE,oBAu4L8B,CAGhC,oBACE,eAEA,kCACE,eAIJ,wBACE,YACA,UA1CW,CA2CX,WA1CY,CA2CZ,kBACA,iBAl5LF,gBAm5L+C,CAC7C,WAn5LF,kCACE,gBAi5LkD,CAh5LlD,eAg5L6C,CAI/C,oCA95LA,oBA+5L6B,CA/5L7B,eAg6L4B,CA/5L5B,8CACE,gBA65LoC,CA95LtC,8CACE,mBA85L+B,CAK/B,2FAEE,gBAKF,sCACE,UACA,SACA,WACA,YAIJ,oBACE,yBACA,eACA,WAGF,kBACE,SACA,WACA,QACA,WAhFgB,CAiFhB,kBACA,kBAGF,8BACE,QACA,OACA,WACA,kBACA,+BACA,UAEF,yCACE,kCAGF,oBACE,kBACA,SACA,OACA,MACA,aACA,WAtGgB,CAuGhB,UAvGgB,CAwGhB,kBACA,0GAptMoB,CAstMpB,2BACE,6BACA,kBACA,WACA,kBACA,cACA,YACA,OACA,MACA,QACA,SACA,mBACA,WAGF,yCACE,kBACA,cACA,WACA,YACA,WACA,UACA,YACA,aAKF,0HAGE,0BA1rMS,CA2rMT,+CAEF,0EAEE,sBAMN,8CACE,mCACE,sBAEF,8CACE,yBAEF,qCACE,uBAQJ,+BACE,aACA,cACA,gBAGF,YACE,kBACA,MACA,OACA,QACA,SACA,WACA,UAGF,QACE,cACA,SACA,kBACA,gBACA,kBACA,cACA,wDACE,iBAEF,8BACE,mBA7BiB,CA+BjB,8CACE,kBACA,SACA,OACA,QACA,WApCe,CAqCf,UAEF,sDACE,MACA,WAzCe,CA6CjB,kDACE,aACA,kBACA,SACA,UACA,WACA,YACA,iBAGA,mDACE,kBAKJ,0CACE,qBACA,mBAGA,0EACE,SAMR,gBACE,cACA,kBAEA,0BACA,8DACE,YACA,UAlFmB,CAmFnB,kBACA,QACA,2BACA,gBACA,UACA,eACA,eACA,+CACA,iDAhzMgB,CAizMhB,0EACE,aAEF,sFACE,YACA,eAEF,gFACE,gBAEF,8EACE,kBACA,QACA,SACA,gCAIF,kFACE,2CAGJ,+BA3nMA,MA4nMiC,CAC/B,yDA5nMF,yCACE,SA0nMkC,CAznMlC,OAynM+B,CAGjC,+BA/nMA,OAgoMiC,CAC/B,yDAhoMF,yCACE,UA8nMkC,CA7nMlC,MA6nM+B,CAI/B,uCACE,+CAIF,sDACE,WACA,mBACA,kEACE,YAMR,eAEE,kBACA,gBACA,cACA,WA7ImB,CA7mMnB,qBACE,WACA,cACA,WAwvMF,iCACE,kBACA,MA3pMF,MA4pMiC,CA3pMjC,2CACE,SA0pMkC,CAzpMlC,OAypM+B,CAEjC,4BACE,cAEF,8BACE,aACA,sBACA,kBACA,sCACE,WACA,qBAKN,sBAEE,WAnKmB,CAoKnB,aACA,wDACA,kBAjrMA,MAkrM+B,CAC/B,0BArxMA,4BACE,WACA,cACA,WAgGF,gCACE,SAgrMgC,CA/qMhC,OA+qM6B,CAE/B,qCACE,kBACA,uBAEF,kCACE,eAEF,yBACE,kCACE,iBAKN,wBACE,cACA,kBACA,QA1LmB,CA2LnB,OACA,QACA,SACA,gBAGF,eACE,aACA,kBACA,MACA,OACA,QACA,SACA,wDACA,cAEA,0BACA,4BACE,YACA,gBAEF,wDACE,gBAEF,uCAruMA,2BAsuM0B,CACxB,iCACA,kBAvuMF,iDACE,0BAouM2C,CAG3C,yCACE,gCACA,oBAl7MuB,CAm7MvB,kBAGJ,wCA/uMA,0BAgvM0B,CACxB,iCACA,kBAjvMF,kDACE,2BA8uM0C,CAG1C,0CACE,gCACA,oBA57MuB,CA67MvB,kBAGJ,mBACE,cACA,YACA,4BACE,iCAKN,WAGE,kBACA,UACA,WACA,SACA,WACA,mBACE,+FAGF,oBACE,+FAKJ,OACE,kBACA,WACA,aAGF,QACE,eACA,kBACA,iBACA,aACA,gEACA,eACA,mBACA,kBACA,yBAnyMA,UAoyMoB,CACpB,gBACA,sBACA,gBACA,uBAvyMA,kBACE,WAkyMwB,CAK1B,iCACE,gBACA,aAEF,kBACE,eAEF,oBACE,oBACA,mBACA,iBACA,uBACA,WACA,eAEF,iBACE,gBAIJ,wDACE,yBACA,0BAUF,eACE,cAGF,SACE,kBACA,WA/iNc,CAijNd,sBACA,eACA,gBAGA,WA5lNa,CA+lNb,UACA,mDAviNe,CAyiNf,2BACE,aACA,mBACA,mBAEA,iBACA,eAEA,gBAKA,eAEA,uCACA,kBACA,eAEA,gBAGA,6CACA,mDAhkNa,CA6Mf,0BAq3MgC,CAj4MhC,mCACE,WACA,eAi3MiC,CAh3MjC,kBACA,qBASF,qCACE,wBAm3M0C,CAE1C,gCAEE,YACA,sBACA,YAIJ,oBACE,mBAEA,sCACE,mBAKF,2CACE,mDAllNU,CA2lNZ,+JACE,mDAhmNW,CAomNf,kBACE,UACA,oCACE,kCAGA,2CACE,mCAGJ,kCACE,UACA,oDACE,+BASJ,oDACE,UACA,kCAIA,+DACE,kCAIF,iEACE,iCAIF,2DACE,mCAKN,oBACE,iBACA,iBACA,eACA,eACA,yBACA,YAGF,oBACE,YA78MF,cA88M6B,CA98M7B,eAq0M4B,CAp0M5B,8BACE,gBAm0M0B,CAp0M5B,8BACE,aA68MwD,CAI5D,yBACE,SACE,OACA,QACA,WACA,eACA,YACA,gBACA,SACA,UAII,+DACE,kCAIF,iEACE,kCAOV,yBACE,SACE,gBACA,mBACE,SAEF,iBACE,OAEF,kBACE,QAEF,gBACE,MAIF,mBAv/MF,MAw/MmC,CAv/MnC,6BACE,SAs/MoC,CAr/MpC,OAq/MiC,CAGjC,iBA3/MF,OA4/MmC,CA3/MnC,2BACE,UA0/MoC,CAz/MpC,MAy/MiC,CAS7B,iEACE,kCAIF,kEACE,kCAOV,0BAEI,2BACE,iBAKN,8CACE,SACE,uBAMJ,oBACE,2BAiBF,WACE,sBACA,aACA,sBAEA,kBACA,UAEA,eACA,eAtBkB,CAuBlB,WAEA,mCACE,uBA/wNyB,CAgxNzB,yDA/wNgC,CAgxNhC,gDAGF,mEACE,iCAGF,6BACE,WAGF,oDAGE,sBAMF,sBACE,gBAGF,mBACE,YAnDqB,CAoDrB,gBApDqB,CAqDrB,gBArDqB,CAwDvB,0BACE,WA1D4B,CA2D5B,eA3D4B,CA4D5B,eA5D4B,CA8D5B,4CACE,YACA,gBACA,gBAIJ,sBA7mNA,gBA+iNyB,CA9iNzB,gCACE,gBA4mNwE,CA3mNxE,iBA4iNuB,CAmEvB,8BACE,UAGE,iEACE,aAOV,kBACE,cAp6NyB,CAq6NzB,sBACA,sBACA,gBACA,aACA,mBACA,mBAEA,WACA,WAjGkB,CAkGlB,eAlGkB,CAmGlB,eACA,SAEA,+DACE,kBACA,oBACA,eAGF,oBACE,cACA,qBAEF,+BACE,aACA,mBAEF,8BACE,eAEF,6BACE,aACA,gBAEA,iFACE,uBAj3NuB,CAk3NvB,yDAj3N8B,CAk3N9B,gDAKA,uGACE,gBAIN,yCA/qNA,gBAkjN0B,CAjjN1B,mDACE,gBA8qNyE,CA7qNzE,iBA+iNwB,CAgI1B,wCAlrNA,iBAkjN0B,CAjjN1B,kDACE,iBAirNyE,CAhrNzE,gBA+iNwB,CAoI1B,qCAtrNA,iBAkjN0B,CAjjN1B,+CACE,iBAqrNyE,CAprNzE,gBA+iNwB,CAsIxB,gDAxrNF,cAyrNiD,CAxrNjD,0DACE,iBAurNkD,CAtrNlD,aAsrN+C,CAIjD,8CA/DF,kBAgEI,8BAKJ,sEACE,WACE,eAzJgC,CA4JlC,kBACE,WA7JgC,CA8JhC,eA9JgC,EAmKpC,uEACE,WACE,eApKiC,CAuKnC,kBACE,WAxKiC,CAyKjC,eAzKiC,EAwLrC,YACE,qBACA,oBACA,kBACA,gBACA,UACA,gBACA,cAhBoB,CAiBpB,mBACA,uBACA,WAjBkB,CAkBlB,gBAlBkB,CAmBlB,kBAfsB,CAgBtB,iBAhBsB,CAiBtB,0BACE,+BACA,iBAEF,4BACE,6BACA,gBAzBoB,CA2BtB,6BACE,4BACA,eA7BoB,CA+BtB,2BACE,8BACA,kBAGF,yBA/BF,YAgCI,cA1CkB,CA2ClB,WAzCgB,CA0ChB,gBA1CgB,CA2ChB,iBAvCoB,CAwCpB,gBAxCoB,CAyCpB,2CACA,4CA5CoB,CA6CpB,4CA7CoB,CA8CpB,8CAGF,wBACE,mBAEF,oBACE,mDAx+Na,CAy+Nb,0BACA,mBACA,WAEF,oBACE,mDA1+NY,CA2+NZ,0BACA,mBACA,UAIJ,aACE,gBACA,mBAGA,uBAGA,qBACE,mBAIF,kBACE,QAKJ,6BACE,sBACA,cACA,SACA,gBACA,UACA,kBAEA,yDACE,SACA,sBACA,OACA,SACA,kBACA,UACA,kBACA,QACA,MACA,iCAGF,sDACE,sBACA,WACA,cACA,SACA,UACA,UAGF,0DACE,sBACA,OACA,SACA,UACA,kBACA,QACA,MAKF,8EACE,gBACA,kBAGF,+EAGE,WApD6B,CAlzN/B,UAu2NiC,CAC/B,mBAv2NF,yFACE,UAq2NqC,CAp2NrC,SAo2N+B,CAKnC,qCACE,0GAhnOsB,CAknOxB,mBACE,0GAlnOsB,CAonOxB,mBACE,0GApnOsB,CAsnOxB,qCACE,2GAtnOsB,CAwnOxB,mBACE,2GAxnOsB,CA0nOxB,mBACE,4GA1nOsB,CA4nOxB,qCACE,4GA5nOsB,CA8nOxB,mBACE,4GA9nOsB,CAgoOxB,mBACE,4GAhoOsB,CAkoOxB,sCACE,6GAloOuB,CAooOzB,oBACE,6GApoOuB,CAsoOzB,oBACE,6GAtoOuB,CAwoOzB,sCACE,6GAxoOuB,CA0oOzB,oBACE,6GA1oOuB,CA4oOzB,oBACE,6GA5oOuB,CA8oOzB,oBACE,8GA9oOuB,CAgpOzB,oBACE,8GAhpOuB,CAkpOzB,oBACE,8GAlpOuB,CAopOzB,oBACE,8GAppOuB,CAspOzB,oBACE,+GAtpOuB,CAwpOzB,oBACE,+GAxpOuB,CA0pOzB,oBACE,+GA1pOuB,CA4pOzB,oBACE,+GA5pOuB,CA8pOzB,oBACE,+GA9pOuB,CAiqOzB,8CACE,cACE,uBAIJ,aACE,8BACE,uBAOJ,0EACE,wBAaF,4BACE,aACE,SACA,WACA,gBACA,aA/4MA,YACC,QAeD,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,gBACE,UADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,cACE,QADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SADF,eACE,SAmBF,gFA5mBF,aA8mByD,CA7mBzD,wHACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,gFA5mBF,cA6mB+D,CA5mB/D,wHACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,oFA5mBF,eA6mB+D,CA5mB/D,4HACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,oFACE,2BAeF,oFA7oBF,0BA8oBiD,CA7oBjD,4HACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,0CAGE,2BACA,sBACA,oBAIF,6HAME,2BAIF,kIAME,uBAIF,mHAME,yBAIF,gKAME,6BAIF,qKAME,8BAUF,gJAME,uBACA,yBAIF,qJAME,mBACA,qBACA,eAIF,+JAME,eACA,sBAIF,sIAME,qBACA,uBAIF,0JAME,oBACA,sBA9NF,mCAEA,+CACA,kDACA,+CACA,+CACA,mDACA,iDAME,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAGe,YAGjB,uBACE,cACA,eACA,cACA,sBArBF,QACE,cACA,aACA,gBACA,sBAGF,oBACE,cACA,aACA,gBACA,sBAMF,uBACE,cACA,eACA,cACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,SACE,cACA,cACA,gBACA,sBAGF,qBACE,cACA,cACA,gBACA,sBAMF,wBACE,cACA,eACA,eACA,sBArBF,UACE,cACA,eACA,gBACA,sBAGF,sBACE,cACA,eACA,gBACA,sBAMF,yBACE,cACA,eACA,gBACA,sBA2BF,8EACA,8EAIA,4FACA,4FAIA,+FACA,+FAIA,0FACA,0FAGA,8BAIA,6FACA,6FAGA,kCA9GF,mCACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,qCACA,+BAkPA,8CAGE,YAGF,mMAaE,YAIF,+KASE,aAKF,4CAGE,WAGF,0LAaE,WAIF,gJAQE,YAGF,aACE,eAGF,eACI,iBAGJ,aACE,SACA,WACA,gBACA,YAwgMJ,yBAGI,iEACE,aAz5MF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAu1MF,yBA/5MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCA61MF,+CAEI,sGACE,aAGJ,mDACE,aA56MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA02MF,yBAl7MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAg3MF,gDAGI,+MACE,aAGJ,oEACE,aAh8MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCA63MF,0BAr8MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,sCAk4MF,iDAGI,0VACE,aAGJ,qFACE,aAl9MA,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,mCAg5MF,0BAx9MI,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,sBACE,UADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,oBACE,QADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SADF,qBACE,SAmBF,wGA5mBF,aA8mByD,CA7mBzD,gJACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,wGA5mBF,cA6mB+D,CA5mB/D,gJACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,4GA5mBF,eA6mB+D,CA5mB/D,oJACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,4GACE,2BAeF,4GA7oBF,0BA8oBiD,CA7oBjD,oJACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,sDAGE,2BACA,sBACA,oBAIF,2JAME,2BAIF,gKAME,uBAIF,iJAME,yBAIF,8LAME,6BAIF,mMAME,8BAUF,8KAME,uBACA,yBAIF,mLAME,mBACA,qBACA,eAIF,6LAME,eACA,sBAIF,oKAME,qBACA,uBAIF,wLAME,oBACA,sBA9NF,yCAEA,qDACA,wDACA,qDACA,qDACA,yDACA,uDAME,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAGe,YAGjB,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAGc,YAGhB,mCACE,cACA,eACA,cACA,sBAGc,aA1ClB,cACE,cACA,aACA,gBACA,sBAGF,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAIA,gCACE,cACA,aACA,gBACA,sBAMF,mCACE,cACA,eACA,cACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,eACE,cACA,cACA,gBACA,sBAGF,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAIA,iCACE,cACA,cACA,gBACA,sBAMF,oCACE,cACA,eACA,eACA,sBAvCJ,gBACE,cACA,eACA,gBACA,sBAGF,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAIA,kCACE,cACA,eACA,gBACA,sBAMF,qCACE,cACA,eACA,gBACA,sBAcJ,kGACA,kGAIA,qGACA,qGAIA,sGACA,sGAGA,oCAIA,yGACA,yGAGA,wCA9GF,qDACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,2CACA,qCAxEE,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,mBACE,UADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,iBACE,QADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SADF,kBACE,SAmBF,4FA5mBF,aA8mByD,CA7mBzD,oIACE,gBA4mB0D,CA3mB1D,cA2mBuD,CAFvD,4FA5mBF,cA6mB+D,CA5mB/D,oIACE,gBA2mB8E,CA1mB9E,eA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAD7D,gGA5mBF,eA6mB+D,CA5mB/D,wIACE,gBA2mB8E,CA1mB9E,gBA0mB6D,CAgB7D,gGACE,2BAeF,gGA7oBF,0BA8oBiD,CA7oBjD,wIACE,gBA4oB+D,CA3oB/D,2BA2oB+C,CAwIjD,gDAGE,2BACA,sBACA,oBAIF,4IAME,2BAIF,iJAME,uBAIF,kIAME,yBAIF,+KAME,6BAIF,oLAME,8BAUF,+JAME,uBACA,yBAIF,oKAME,mBACA,qBACA,eAIF,8KAME,eACA,sBAIF,qJAME,qBACA,uBAIF,yKAME,oBACA,sBA9NF,sCAEA,kDACA,qDACA,kDACA,kDACA,sDACA,oDAME,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAGe,YAGjB,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAGc,YAGhB,6BACE,cACA,eACA,cACA,sBAGc,aA1ClB,WACE,cACA,aACA,gBACA,sBAGF,uBACE,cACA,aACA,gBACA,sBAMF,0BACE,cACA,eACA,cACA,sBAIA,0BACE,cACA,aACA,gBACA,sBAMF,6BACE,cACA,eACA,cACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,YACE,cACA,cACA,gBACA,sBAGF,wBACE,cACA,cACA,gBACA,sBAMF,2BACE,cACA,eACA,eACA,sBAIA,2BACE,cACA,cACA,gBACA,sBAMF,8BACE,cACA,eACA,eACA,sBAvCJ,aACE,cACA,eACA,gBACA,sBAGF,yBACE,cACA,eACA,gBACA,sBAMF,4BACE,cACA,eACA,gBACA,sBAIA,4BACE,cACA,eACA,gBACA,sBAMF,+BACE,cACA,eACA,gBACA,sBAcJ,+FACA,+FAIA,kGACA,kGAIA,gGACA,gGAGA,iCAIA,mGACA,mGAGA,qCA9GF,4CACE,sBACA,oBACA,qBACA,iBACA,oBACA,aAEF,wCACA,kCAs5ME,ugBACE,aAGJ,sGACE,cAMJ,aAEE,wCACE,yBN13OJ,MACE,2BACA,4BACA,8BACA,kCACA,6BACA,4BAIA,uCAEE,iBAIJ,eACE,kBAIF,oBACE,QACA,uBAGF,0BACE,uBACA,kBAGF,mBACE,eACA,iBACA,WACA,wBAEA,yBACE,cAIJ,yBACE,eACA,YAGF,uBACE,yBAGF,sCAEE,iBAGF,aACE,mBACA,gBACA,uBAIA,kBACE,gBACA,uBACA,mBAKF,2KAGE,yCACA,6CAKF,2BACE,qBAKF,iCACE,UACA,kCAGF,uCACE,mFAKA,mBAEA,6CACE,mFAQJ,kBACE,aACA,WACA,yBACA,cACA,yBACA,kBACA,eACA,kBAEA,8BACE,kBACA,iBAGF,wCACE,WACA,YACA,cAEA,qBAIF,uDACE,gBAEA,4DACE,gBAMJ,4CACE,eACA,YACA,SACA,wBACA,iBACA,aACA,2EAIA,mBACA,uBACA,gEACE,WAIJ,6CACE,eACA,YACA,SACA,wBACA,iBACA,aACA,2EAIA,mBACA,uBACA,kEACE,WAIJ,+DAEE,eACA,8BACA,sLAEE,cACA,6BACA,qBAKF,wFAEE,cACA,cAUR,gBACE,aACA,sBACA,qBACE,YACA,eACA,kBAIJ,cACE,YACA,aACA,gBACA,oBACA,8BAEA,4CAEE,eACA,kBACA,kGAEE,WAKN,MACE,WAGF,+CACE,sBACA,uBAGF,YACE,6BACA,sBACA,YACA,UACA,eACA,SACA,sBACA,sBACA,uBACA,0BACA,kBACA,iDACA,oDACA,4CACA,+EAEA,wEACA,qFAEA,qEAGF,yBACE,qBACA,UACA,8EAEA,iFAEA,yEAIF,kBACE,kCACA,kDACA,sBACA,2BACA,uCAGF,aACE,UAGF,YACE,kCACA,kDACA,sBACA,2BACA,uCAGF,yCAEE,cACA,6BACA,WACA,YACA,UACA,eACA,SACA,sBACA,iCACA,uBACA,0BACA,kBACA,4DACA,+DACA,uDACA,+EAEA,wEACA,qFAEA,qEAGF,wDACE,cAGF,sBACE,sBAGF,uCAEE,cAGF,0BACE,4BAGA,2BAGF,kFAKE,sBACA,uBACA,wBAGF,mCACE,sBACA,mBACA,wBACA,mBAGF,yDACE,kBACA,wBACA,sBAGF,oEACE,4BAGF,4EACE,6BACA,uBACA,2BAGF,8DACE,uBACA,2BAGF,wDACE,uBAGF,wFAIE,sBAGF,0FAIE,qBAGF,yDACE,mBACA,qBACA,YAGF,8EACE,sBACA,kBAGF,kBAEE,eACA,WACA,gBACA,YAOF,UAGE,6BAGF,yBACE,UACA,SACA,eACA,eAIF,QACE,cACA,WACA,YAKF,wBAEE,WAJoB,CAKpB,eALoB,CAQpB,eACA,UAGF,wBAEE,YACA,yBAGA,gBACA,yBACA,wBACA,gBACA,sBAGF,uCACE,yBACA,cACA,gCAGF,qCACE,yBACA,wBACA,kBACA,gBAGF,wCACE,yBACA,wBACA,kBACA,gBAGF,0BACE,kBACA,YACA,UAGF,6CACE,qBACA,kBACA,gBACA,wBACA,sBACA,kBAGF,sDACE,qBAGF,2DACE,cAGF,+DACE,cAEF,oDACE,yDACA,WACA,kBACA,WACA,WACA,WACA,YACA,4BACA,4BACA,wBAGF,mDACE,eACA,iBACA,kBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,0CACE,qBACA,kBAGF,kDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,eACA,kBACA,gBACA,kBACA,WAGF,wCACE,qBAGF,yCACE,qBAGF,yCACE,qBAGF,iDACE,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,iDACE,kBACA,yBACA,yBACA,QAGF,wDACE,WACA,WACA,yDACA,iCACA,yBAGF,gDACE,QACA,kBACA,WACA,eACA,YACA,iBACA,kBACA,gBACA,kBACA,WAGF,gDACE,iBACA,yBACA,yBACA,QAGF,uDACE,YACA,UACA,yDAGF,uBACE,WAIF,SACE,iBACA,yBAEA,gBACA,kBACA,cACA,aAGF,mBACE,cACA,gBACA,sBAGF,kBACE,WACA,YACA,kBAGF,6BACE,WACA,YACA,kBACA,OACA,MAGF,oCACE,WACA,cACA,cACA,UACA,WACA,sBACA,mBACA,oEACA,4DAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,gCACA,4BACA,wBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,8BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,+BACE,iCACA,6BACA,yBAGF,qCACE,8BACA,sBAGF,qCACE,4BACA,oBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,qCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,8BACA,sBAGF,sCACE,YAGE,UAGF,IACE,WAIJ,8BACE,YAGE,UAGF,IACE,WAIJ,4CACE,uBAGF,4CACE,qBAGF,gCACE,uDAEE,eAIJ,gCACE,uDAEE,cAIJ,mBACE","sources":["webpack://motion-chat/./src/styles/app.scss","webpack://motion-chat/./node_modules/mdi/scss/_path.scss","webpack://motion-chat/./node_modules/mdi/scss/_core.scss","webpack://motion-chat/./node_modules/mdi/scss/_icons.scss","webpack://motion-chat/./node_modules/mdi/scss/_extras.scss","webpack://motion-chat/./node_modules/mdi/scss/_animated.scss","webpack://motion-chat/./node_modules/angular-material/angular-material.scss"],"names":[],"sourceRoot":""}
\ No newline at end of file
@@ -57,8 +57,8 @@
               layout-padding
               layout="row"
               layout-align="center center"
-              data-ng-bind-html="vm.trustAsHtml(field.value)"
             >
+              <span ng-bind-html="field.value"></span>
             </md-content>
           </div>
           <!-- END label -->
@@ -55,8 +55,8 @@
               layout-padding
               layout="row"
               layout-align="center center"
-              data-ng-bind-html="vm.trustAsHtml(field.value)"
             >
+              <span ng-bind-html="field.value"></span>
             </md-content>
           </div>
           <!-- END label -->